summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2000-09-18 16:07:07 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2000-09-18 16:07:07 +0000
commit9ae5a91f7955e44d3b24a3f7741f9bca02ac7f24 (patch)
tree13c111a6380728f470fa177e679b80089a01efc4
initial import
-rw-r--r--sc/addin/datefunc/dfa.cl752
-rw-r--r--sc/addin/datefunc/dfa.src792
-rw-r--r--sc/addin/datefunc/makefile.mk179
-rw-r--r--sc/addin/inc/addin.h190
-rw-r--r--sc/addin/inc/dfa.hrc95
-rw-r--r--sc/addin/inc/rot13.hrc69
-rw-r--r--sc/addin/rot13/makefile.mk171
-rw-r--r--sc/addin/rot13/rot13.cl182
-rw-r--r--sc/addin/rot13/rot13.src148
-rw-r--r--sc/addin/util/cl2c.pl217
-rw-r--r--sc/addin/util/makefile.mk89
-rw-r--r--sc/inc/addincol.hxx187
-rw-r--r--sc/inc/afmtuno.hxx383
-rw-r--r--sc/inc/appluno.hxx265
-rw-r--r--sc/inc/appoptio.hxx162
-rw-r--r--sc/inc/arealink.hxx120
-rw-r--r--sc/inc/attarray.hxx265
-rw-r--r--sc/inc/attrib.hxx406
-rw-r--r--sc/inc/autoform.hxx277
-rw-r--r--sc/inc/bigrange.hxx309
-rw-r--r--sc/inc/brdcst.hxx107
-rw-r--r--sc/inc/callform.hxx161
-rw-r--r--sc/inc/cell.hxx596
-rw-r--r--sc/inc/cellform.hxx100
-rw-r--r--sc/inc/cellsuno.hxx1405
-rw-r--r--sc/inc/cfgids.hxx78
-rw-r--r--sc/inc/chartarr.hxx244
-rw-r--r--sc/inc/chartlis.hxx176
-rw-r--r--sc/inc/chartuno.hxx214
-rw-r--r--sc/inc/chgtrack.hxx1248
-rw-r--r--sc/inc/chgviset.hxx179
-rw-r--r--sc/inc/collect.hxx241
-rw-r--r--sc/inc/column.hxx474
-rw-r--r--sc/inc/compiler.hrc401
-rw-r--r--sc/inc/compiler.hxx1123
-rw-r--r--sc/inc/conditio.hxx318
-rw-r--r--sc/inc/consoli.hxx169
-rw-r--r--sc/inc/convuno.hxx90
-rw-r--r--sc/inc/cursuno.hxx150
-rw-r--r--sc/inc/dapiuno.hxx495
-rw-r--r--sc/inc/datauno.hxx719
-rw-r--r--sc/inc/dbcolect.hxx280
-rw-r--r--sc/inc/dbtoken.hxx90
-rw-r--r--sc/inc/detdata.hxx142
-rw-r--r--sc/inc/detfunc.hxx148
-rw-r--r--sc/inc/dociter.hxx389
-rw-r--r--sc/inc/docoptio.hxx246
-rw-r--r--sc/inc/docpool.hxx109
-rw-r--r--sc/inc/document.hxx1439
-rw-r--r--sc/inc/docuno.hxx775
-rw-r--r--sc/inc/dpobject.hxx251
-rw-r--r--sc/inc/dpoutput.hxx170
-rw-r--r--sc/inc/dpsave.hxx221
-rw-r--r--sc/inc/dpsdbtab.hxx117
-rw-r--r--sc/inc/dpshttab.hxx116
-rw-r--r--sc/inc/dptabdat.hxx176
-rw-r--r--sc/inc/dptabres.hxx343
-rw-r--r--sc/inc/dptabsrc.hxx795
-rw-r--r--sc/inc/drawattr.hxx104
-rw-r--r--sc/inc/drawpage.hxx86
-rw-r--r--sc/inc/drwlayer.hxx212
-rw-r--r--sc/inc/editsrc.hxx157
-rw-r--r--sc/inc/editutil.hxx275
-rw-r--r--sc/inc/eeimport.hxx100
-rw-r--r--sc/inc/eetext.hxx77
-rw-r--r--sc/inc/fielduno.hxx446
-rw-r--r--sc/inc/filter.hxx166
-rw-r--r--sc/inc/fmtuno.hxx364
-rw-r--r--sc/inc/global.hxx1619
-rw-r--r--sc/inc/globstr.hrc543
-rw-r--r--sc/inc/hints.hxx199
-rw-r--r--sc/inc/htmlimp.hxx78
-rw-r--r--sc/inc/indexmap.hxx92
-rw-r--r--sc/inc/inputopt.hxx140
-rw-r--r--sc/inc/linkuno.hxx538
-rw-r--r--sc/inc/markarr.hxx120
-rw-r--r--sc/inc/markdata.hxx154
-rw-r--r--sc/inc/miscuno.hxx345
-rw-r--r--sc/inc/nameuno.hxx397
-rw-r--r--sc/inc/navicfg.hxx100
-rw-r--r--sc/inc/notesuno.hxx172
-rw-r--r--sc/inc/olinetab.hxx220
-rw-r--r--sc/inc/pagepar.hxx121
-rw-r--r--sc/inc/patattr.hxx140
-rw-r--r--sc/inc/pivot.hxx364
-rw-r--r--sc/inc/printopt.hxx69
-rw-r--r--sc/inc/prnsave.hxx112
-rw-r--r--sc/inc/progress.hxx185
-rw-r--r--sc/inc/rangelst.hxx147
-rw-r--r--sc/inc/rangenam.hxx254
-rw-r--r--sc/inc/rangeseq.hxx101
-rw-r--r--sc/inc/rangeutl.hxx198
-rw-r--r--sc/inc/rechead.hxx233
-rw-r--r--sc/inc/reffind.hxx100
-rw-r--r--sc/inc/rtfimp.hxx75
-rw-r--r--sc/inc/sc.hrc1370
-rw-r--r--sc/inc/scdll.hxx161
-rw-r--r--sc/inc/scerrors.hxx105
-rw-r--r--sc/inc/scextopt.hxx286
-rw-r--r--sc/inc/scfuncs.hrc348
-rw-r--r--sc/inc/scitems.hxx248
-rw-r--r--sc/inc/scmod.hxx287
-rw-r--r--sc/inc/scresid.hxx80
-rw-r--r--sc/inc/scwarngs.hxx70
-rw-r--r--sc/inc/segdefs.hxx73
-rw-r--r--sc/inc/segdefs_.hxx5019
-rw-r--r--sc/inc/servuno.hxx120
-rw-r--r--sc/inc/shellids.hxx88
-rw-r--r--sc/inc/srchuno.hxx175
-rw-r--r--sc/inc/stlpool.hxx119
-rw-r--r--sc/inc/stlsheet.hxx109
-rw-r--r--sc/inc/strload.hxx90
-rw-r--r--sc/inc/styleuno.hxx383
-rw-r--r--sc/inc/subtotal.hxx135
-rw-r--r--sc/inc/table.hxx684
-rw-r--r--sc/inc/tablink.hxx140
-rw-r--r--sc/inc/targuno.hxx301
-rw-r--r--sc/inc/textuno.hxx295
-rw-r--r--sc/inc/unitconv.hxx111
-rw-r--r--sc/inc/unoguard.hxx78
-rw-r--r--sc/inc/unonames.hxx376
-rw-r--r--sc/inc/userdat.hxx135
-rw-r--r--sc/inc/userlist.hxx130
-rw-r--r--sc/inc/validat.hxx204
-rw-r--r--sc/inc/viewopti.hxx258
-rw-r--r--sc/inc/viewuno.hxx359
-rw-r--r--sc/inc/waitoff.hxx82
-rw-r--r--sc/inc/xmlwrap.hxx80
-rw-r--r--sc/inc/zforauto.hxx112
-rw-r--r--sc/prj/d.lst33
-rw-r--r--sc/sdi/app.sdi142
-rw-r--r--sc/sdi/auditsh.sdi15
-rw-r--r--sc/sdi/cellsh.sdi401
-rw-r--r--sc/sdi/chartsh.sdi18
-rw-r--r--sc/sdi/docsh.sdi289
-rw-r--r--sc/sdi/drawsh.sdi142
-rw-r--r--sc/sdi/drformsh.sdi19
-rw-r--r--sc/sdi/drtxtob.sdi94
-rw-r--r--sc/sdi/editsh.sdi57
-rw-r--r--sc/sdi/formatsh.sdi172
-rw-r--r--sc/sdi/graphsh.sdi18
-rw-r--r--sc/sdi/makefile.mk136
-rw-r--r--sc/sdi/oleobjsh.sdi18
-rw-r--r--sc/sdi/pgbrksh.sdi18
-rw-r--r--sc/sdi/pivotsh.sdi12
-rw-r--r--sc/sdi/prevwsh.sdi138
-rw-r--r--sc/sdi/scalc.sdi6565
-rw-r--r--sc/sdi/scslots.hrc67
-rw-r--r--sc/sdi/scslots.sdi40
-rw-r--r--sc/sdi/tabpopsh.sdi5
-rw-r--r--sc/sdi/tabvwsh.sdi282
-rw-r--r--sc/source/filter/dif/difexp.cxx255
-rw-r--r--sc/source/filter/dif/difimp.cxx930
-rw-r--r--sc/source/filter/dif/makefile.mk95
-rw-r--r--sc/source/filter/excel/biffdump.cxx6347
-rw-r--r--sc/source/filter/excel/colrowst.cxx859
-rw-r--r--sc/source/filter/excel/excdoc.cxx1198
-rw-r--r--sc/source/filter/excel/excel.cxx319
-rw-r--r--sc/source/filter/excel/excform.cxx2613
-rw-r--r--sc/source/filter/excel/excform8.cxx1506
-rw-r--r--sc/source/filter/excel/excimp8.cxx3384
-rw-r--r--sc/source/filter/excel/excobj.cxx1274
-rw-r--r--sc/source/filter/excel/excrecds.cxx4327
-rw-r--r--sc/source/filter/excel/exctools.cxx2420
-rw-r--r--sc/source/filter/excel/expop2.cxx225
-rw-r--r--sc/source/filter/excel/fontbuff.cxx778
-rw-r--r--sc/source/filter/excel/frmbase.cxx278
-rw-r--r--sc/source/filter/excel/impop.cxx2998
-rw-r--r--sc/source/filter/excel/makefile.mk145
-rw-r--r--sc/source/filter/excel/namebuff.cxx526
-rw-r--r--sc/source/filter/excel/read.cxx1759
-rw-r--r--sc/source/filter/excel/tokstack.cxx623
-rw-r--r--sc/source/filter/html/htmlexp.cxx1671
-rw-r--r--sc/source/filter/html/htmlexp2.cxx287
-rw-r--r--sc/source/filter/html/htmlimp.cxx147
-rw-r--r--sc/source/filter/html/htmlpars.cxx1668
-rw-r--r--sc/source/filter/html/makefile.mk99
-rw-r--r--sc/source/filter/inc/biffdump.hxx550
-rw-r--r--sc/source/filter/inc/colrowst.hxx300
-rw-r--r--sc/source/filter/inc/decl.h80
-rw-r--r--sc/source/filter/inc/dif.hxx303
-rw-r--r--sc/source/filter/inc/eeparser.hxx189
-rw-r--r--sc/source/filter/inc/excdefs.hxx272
-rw-r--r--sc/source/filter/inc/excdoc.hxx210
-rw-r--r--sc/source/filter/inc/excform.hxx166
-rw-r--r--sc/source/filter/inc/excimp8.hxx963
-rw-r--r--sc/source/filter/inc/excrecds.hxx1695
-rw-r--r--sc/source/filter/inc/excscen.hxx183
-rw-r--r--sc/source/filter/inc/exp_op.hxx160
-rw-r--r--sc/source/filter/inc/expbase.hxx120
-rw-r--r--sc/source/filter/inc/filt_pch.hxx377
-rw-r--r--sc/source/filter/inc/fkttab.h80
-rw-r--r--sc/source/filter/inc/flttypes.hxx85
-rw-r--r--sc/source/filter/inc/formel.hxx362
-rw-r--r--sc/source/filter/inc/funktion.h84
-rw-r--r--sc/source/filter/inc/htmlexp.hxx203
-rw-r--r--sc/source/filter/inc/htmlpars.hxx202
-rw-r--r--sc/source/filter/inc/imp_op.hxx466
-rw-r--r--sc/source/filter/inc/lotattr.hxx190
-rw-r--r--sc/source/filter/inc/lotfntbf.hxx152
-rw-r--r--sc/source/filter/inc/lotform.hxx167
-rw-r--r--sc/source/filter/inc/lotimpop.hxx208
-rw-r--r--sc/source/filter/inc/lotrange.hxx202
-rw-r--r--sc/source/filter/inc/makefile.mk61
-rw-r--r--sc/source/filter/inc/namebuff.hxx426
-rw-r--r--sc/source/filter/inc/op.h91
-rw-r--r--sc/source/filter/inc/optab.h70
-rw-r--r--sc/source/filter/inc/otlnbuff.hxx117
-rw-r--r--sc/source/filter/inc/root.hxx267
-rw-r--r--sc/source/filter/inc/rtfexp.hxx86
-rw-r--r--sc/source/filter/inc/rtfparse.hxx123
-rw-r--r--sc/source/filter/inc/scflt.hxx776
-rw-r--r--sc/source/filter/inc/scfobj.hxx76
-rw-r--r--sc/source/filter/inc/scmem.h71
-rw-r--r--sc/source/filter/inc/tokstack.hxx385
-rw-r--r--sc/source/filter/inc/tool.h198
-rw-r--r--sc/source/filter/inc/xcl97dum.hxx193
-rw-r--r--sc/source/filter/inc/xcl97esc.hxx303
-rw-r--r--sc/source/filter/inc/xcl97rec.hxx1332
-rw-r--r--sc/source/filter/lotus/expop.cxx431
-rw-r--r--sc/source/filter/lotus/export.cxx94
-rw-r--r--sc/source/filter/lotus/filter.cxx241
-rw-r--r--sc/source/filter/lotus/lotattr.cxx335
-rw-r--r--sc/source/filter/lotus/lotform.cxx2087
-rw-r--r--sc/source/filter/lotus/lotimpop.cxx519
-rw-r--r--sc/source/filter/lotus/lotread.cxx360
-rw-r--r--sc/source/filter/lotus/lotus.cxx152
-rw-r--r--sc/source/filter/lotus/makefile.mk116
-rw-r--r--sc/source/filter/lotus/memory.cxx174
-rw-r--r--sc/source/filter/lotus/op.cxx388
-rw-r--r--sc/source/filter/lotus/optab.cxx178
-rw-r--r--sc/source/filter/lotus/tool.cxx704
-rw-r--r--sc/source/filter/rtf/eeimpars.cxx624
-rw-r--r--sc/source/filter/rtf/expbase.cxx147
-rw-r--r--sc/source/filter/rtf/makefile.mk102
-rw-r--r--sc/source/filter/rtf/rtfexp.cxx361
-rw-r--r--sc/source/filter/rtf/rtfimp.cxx107
-rw-r--r--sc/source/filter/rtf/rtfparse.cxx450
-rw-r--r--sc/source/filter/starcalc/makefile.mk96
-rw-r--r--sc/source/filter/starcalc/scflt.cxx2568
-rw-r--r--sc/source/filter/starcalc/scfobj.cxx390
-rw-r--r--sc/source/filter/xcl97/makefile.mk109
-rw-r--r--sc/source/filter/xcl97/xcl97dum.cxx527
-rw-r--r--sc/source/filter/xcl97/xcl97esc.cxx641
-rw-r--r--sc/source/filter/xcl97/xcl97rec.cxx2972
-rw-r--r--sc/source/filter/xml/makefile.mk130
-rw-r--r--sc/source/filter/xml/xmlannoi.cxx155
-rw-r--r--sc/source/filter/xml/xmlannoi.hxx107
-rw-r--r--sc/source/filter/xml/xmlbodyi.cxx153
-rw-r--r--sc/source/filter/xml/xmlbodyi.hxx92
-rw-r--r--sc/source/filter/xml/xmlcelli.cxx1034
-rw-r--r--sc/source/filter/xml/xmlcelli.hxx173
-rw-r--r--sc/source/filter/xml/xmlcoli.cxx239
-rw-r--r--sc/source/filter/xml/xmlcoli.hxx100
-rw-r--r--sc/source/filter/xml/xmlconti.cxx139
-rw-r--r--sc/source/filter/xml/xmlconti.hxx108
-rw-r--r--sc/source/filter/xml/xmldpimp.cxx1123
-rw-r--r--sc/source/filter/xml/xmldpimp.hxx476
-rw-r--r--sc/source/filter/xml/xmldrani.cxx964
-rw-r--r--sc/source/filter/xml/xmldrani.hxx371
-rw-r--r--sc/source/filter/xml/xmlexprt.cxx3825
-rw-r--r--sc/source/filter/xml/xmlexprt.hxx468
-rw-r--r--sc/source/filter/xml/xmlfilti.cxx855
-rw-r--r--sc/source/filter/xml/xmlfilti.hxx357
-rw-r--r--sc/source/filter/xml/xmlimprt.cxx1197
-rw-r--r--sc/source/filter/xml/xmlimprt.hxx654
-rw-r--r--sc/source/filter/xml/xmlnexpi.cxx356
-rw-r--r--sc/source/filter/xml/xmlnexpi.hxx141
-rw-r--r--sc/source/filter/xml/xmlrowi.cxx269
-rw-r--r--sc/source/filter/xml/xmlrowi.hxx100
-rw-r--r--sc/source/filter/xml/xmlsorti.cxx320
-rw-r--r--sc/source/filter/xml/xmlsorti.hxx145
-rw-r--r--sc/source/filter/xml/xmlstyle.cxx1566
-rw-r--r--sc/source/filter/xml/xmlstyle.hxx387
-rw-r--r--sc/source/filter/xml/xmlstyli.cxx543
-rw-r--r--sc/source/filter/xml/xmlstyli.hxx209
-rw-r--r--sc/source/filter/xml/xmlsubti.cxx699
-rw-r--r--sc/source/filter/xml/xmlsubti.hxx173
-rw-r--r--sc/source/filter/xml/xmltabi.cxx187
-rw-r--r--sc/source/filter/xml/xmltabi.hxx98
-rw-r--r--sc/source/filter/xml/xmlwrap.cxx283
-rw-r--r--sc/source/ui/app/client.cxx785
-rw-r--r--sc/source/ui/app/inputhdl.cxx3011
-rw-r--r--sc/source/ui/app/inputwin.cxx1348
-rw-r--r--sc/source/ui/app/makefile.mk136
-rw-r--r--sc/source/ui/app/msgpool.cxx158
-rw-r--r--sc/source/ui/app/rfindlst.cxx111
-rw-r--r--sc/source/ui/app/scdll.cxx523
-rw-r--r--sc/source/ui/app/scmod.cxx1920
-rw-r--r--sc/source/ui/app/scmod2.cxx212
-rw-r--r--sc/source/ui/app/template.cxx160
-rw-r--r--sc/source/ui/app/typemap.cxx257
-rw-r--r--sc/source/ui/app/uiitems.cxx927
-rw-r--r--sc/source/ui/app/wtcdummy.cxx96
-rw-r--r--sc/source/ui/attrdlg/attrdlg.cxx297
-rw-r--r--sc/source/ui/attrdlg/condfrmt.cxx867
-rw-r--r--sc/source/ui/attrdlg/makefile.mk95
-rw-r--r--sc/source/ui/attrdlg/tabpages.cxx518
-rw-r--r--sc/source/ui/cctrl/cbuttonw.cxx204
-rw-r--r--sc/source/ui/cctrl/makefile.mk96
-rw-r--r--sc/source/ui/cctrl/popmenu.cxx115
-rw-r--r--sc/source/ui/cctrl/tbinsert.cxx322
-rw-r--r--sc/source/ui/dbgui/asciiopt.cxx1404
-rw-r--r--sc/source/ui/dbgui/asciiopt.hrc111
-rw-r--r--sc/source/ui/dbgui/asciiopt.src652
-rw-r--r--sc/source/ui/dbgui/consdlg.cxx693
-rw-r--r--sc/source/ui/dbgui/consdlg.hrc92
-rw-r--r--sc/source/ui/dbgui/consdlg.src848
-rw-r--r--sc/source/ui/dbgui/dapidata.cxx250
-rw-r--r--sc/source/ui/dbgui/dapitype.cxx180
-rw-r--r--sc/source/ui/dbgui/dapitype.hrc87
-rw-r--r--sc/source/ui/dbgui/dapitype.src803
-rw-r--r--sc/source/ui/dbgui/dbnamdlg.cxx957
-rw-r--r--sc/source/ui/dbgui/expftext.cxx152
-rw-r--r--sc/source/ui/dbgui/fieldwnd.cxx614
-rw-r--r--sc/source/ui/dbgui/filtdlg.cxx1162
-rw-r--r--sc/source/ui/dbgui/foptmgr.cxx471
-rw-r--r--sc/source/ui/dbgui/imoptdlg.cxx418
-rw-r--r--sc/source/ui/dbgui/imoptdlg.hrc77
-rw-r--r--sc/source/ui/dbgui/imoptdlg.src279
-rw-r--r--sc/source/ui/dbgui/makefile.mk127
-rw-r--r--sc/source/ui/dbgui/outline.src78
-rw-r--r--sc/source/ui/dbgui/pfiltdlg.cxx782
-rw-r--r--sc/source/ui/dbgui/pivot.hrc101
-rw-r--r--sc/source/ui/dbgui/pivot.src786
-rw-r--r--sc/source/ui/dbgui/pvfundlg.cxx356
-rw-r--r--sc/source/ui/dbgui/pvfundlg.hrc83
-rw-r--r--sc/source/ui/dbgui/pvfundlg.src651
-rw-r--r--sc/source/ui/dbgui/pvglob.hxx76
-rw-r--r--sc/source/ui/dbgui/pvlaydlg.cxx1368
-rw-r--r--sc/source/ui/dbgui/scendlg.cxx342
-rw-r--r--sc/source/ui/dbgui/scendlg.hrc90
-rw-r--r--sc/source/ui/dbgui/scendlg.src450
-rw-r--r--sc/source/ui/dbgui/sfiltdlg.cxx743
-rw-r--r--sc/source/ui/dbgui/sortdlg.cxx150
-rw-r--r--sc/source/ui/dbgui/subtdlg.cxx152
-rw-r--r--sc/source/ui/dbgui/tpsort.cxx1159
-rw-r--r--sc/source/ui/dbgui/tpsubt.cxx910
-rw-r--r--sc/source/ui/dbgui/validate.cxx590
-rw-r--r--sc/source/ui/dbgui/validate.src1288
-rw-r--r--sc/source/ui/docshell/arealink.cxx442
-rw-r--r--sc/source/ui/docshell/autostyl.cxx284
-rw-r--r--sc/source/ui/docshell/dbdocfun.cxx1342
-rw-r--r--sc/source/ui/docshell/dbdocimp.cxx716
-rw-r--r--sc/source/ui/docshell/docfunc.cxx3499
-rw-r--r--sc/source/ui/docshell/docsh.cxx2748
-rw-r--r--sc/source/ui/docshell/docsh2.cxx516
-rw-r--r--sc/source/ui/docshell/docsh3.cxx902
-rw-r--r--sc/source/ui/docshell/docsh4.cxx2004
-rw-r--r--sc/source/ui/docshell/docsh5.cxx941
-rw-r--r--sc/source/ui/docshell/docsh6.cxx622
-rw-r--r--sc/source/ui/docshell/docsh7.cxx80
-rw-r--r--sc/source/ui/docshell/docsh8.cxx245
-rw-r--r--sc/source/ui/docshell/hiranges.cxx88
-rw-r--r--sc/source/ui/docshell/impex.cxx1460
-rw-r--r--sc/source/ui/docshell/makefile.mk141
-rw-r--r--sc/source/ui/docshell/olinefun.cxx764
-rw-r--r--sc/source/ui/docshell/pagedata.cxx180
-rw-r--r--sc/source/ui/docshell/pntlock.cxx95
-rw-r--r--sc/source/ui/docshell/servobj.cxx285
-rw-r--r--sc/source/ui/docshell/tablink.cxx496
-rw-r--r--sc/source/ui/docshell/tpstat.cxx134
-rw-r--r--sc/source/ui/docshell/tpstat.hrc70
-rw-r--r--sc/source/ui/docshell/tpstat.src203
-rw-r--r--sc/source/ui/drawfunc/chartsh.cxx123
-rw-r--r--sc/source/ui/drawfunc/drawsh.cxx843
-rw-r--r--sc/source/ui/drawfunc/drawsh2.cxx568
-rw-r--r--sc/source/ui/drawfunc/drawsh4.cxx423
-rw-r--r--sc/source/ui/drawfunc/drawsh5.cxx255
-rw-r--r--sc/source/ui/drawfunc/drformsh.cxx367
-rw-r--r--sc/source/ui/drawfunc/drformsh.src563
-rw-r--r--sc/source/ui/drawfunc/drtxtob.cxx876
-rw-r--r--sc/source/ui/drawfunc/drtxtob1.cxx475
-rw-r--r--sc/source/ui/drawfunc/drtxtob2.cxx597
-rw-r--r--sc/source/ui/drawfunc/fuconarc.cxx411
-rw-r--r--sc/source/ui/drawfunc/fuconpol.cxx384
-rw-r--r--sc/source/ui/drawfunc/fuconrec.cxx415
-rw-r--r--sc/source/ui/drawfunc/fuconstr.cxx518
-rw-r--r--sc/source/ui/drawfunc/fuconuno.cxx489
-rw-r--r--sc/source/ui/drawfunc/fudraw.cxx403
-rw-r--r--sc/source/ui/drawfunc/fuins1.cxx355
-rw-r--r--sc/source/ui/drawfunc/fuins2.cxx692
-rw-r--r--sc/source/ui/drawfunc/fumark.cxx325
-rw-r--r--sc/source/ui/drawfunc/fupoor.cxx550
-rw-r--r--sc/source/ui/drawfunc/fusel.cxx538
-rw-r--r--sc/source/ui/drawfunc/fusel2.cxx417
-rw-r--r--sc/source/ui/drawfunc/futext.cxx1001
-rw-r--r--sc/source/ui/drawfunc/futext2.cxx340
-rw-r--r--sc/source/ui/drawfunc/futext3.cxx427
-rw-r--r--sc/source/ui/drawfunc/graphsh.cxx124
-rw-r--r--sc/source/ui/drawfunc/makefile.mk158
-rw-r--r--sc/source/ui/drawfunc/objdraw.src1441
-rw-r--r--sc/source/ui/drawfunc/oleobjsh.cxx124
-rw-r--r--sc/source/ui/formdlg/dwfunctr.cxx1212
-rw-r--r--sc/source/ui/formdlg/dwfunctr.hrc71
-rw-r--r--sc/source/ui/formdlg/dwfunctr.src600
-rw-r--r--sc/source/ui/formdlg/formdata.cxx147
-rw-r--r--sc/source/ui/formdlg/formdlgs.hrc114
-rw-r--r--sc/source/ui/formdlg/formdlgs.src1099
-rw-r--r--sc/source/ui/formdlg/formula.cxx2092
-rw-r--r--sc/source/ui/formdlg/funcpage.cxx291
-rw-r--r--sc/source/ui/formdlg/funcutl.cxx952
-rw-r--r--sc/source/ui/formdlg/makefile.mk112
-rw-r--r--sc/source/ui/formdlg/parawin.cxx622
-rw-r--r--sc/source/ui/formdlg/parawin.hrc86
-rw-r--r--sc/source/ui/formdlg/parawin.src244
-rw-r--r--sc/source/ui/formdlg/privsplt.cxx475
-rw-r--r--sc/source/ui/formdlg/structpg.cxx275
-rw-r--r--sc/source/ui/inc/acredlin.hrc109
-rw-r--r--sc/source/ui/inc/acredlin.hxx334
-rw-r--r--sc/source/ui/inc/anyrefdg.hxx207
-rw-r--r--sc/source/ui/inc/areasdlg.hxx143
-rw-r--r--sc/source/ui/inc/asciiopt.hxx258
-rw-r--r--sc/source/ui/inc/attrdlg.hrc83
-rw-r--r--sc/source/ui/inc/attrdlg.hxx93
-rw-r--r--sc/source/ui/inc/auditsh.hxx97
-rw-r--r--sc/source/ui/inc/autofmt.hxx229
-rw-r--r--sc/source/ui/inc/autostyl.hxx108
-rw-r--r--sc/source/ui/inc/cbutton.hxx128
-rw-r--r--sc/source/ui/inc/cellsh.hxx117
-rw-r--r--sc/source/ui/inc/chartsh.hxx93
-rw-r--r--sc/source/ui/inc/client.hxx100
-rw-r--r--sc/source/ui/inc/colrowba.hxx144
-rw-r--r--sc/source/ui/inc/condfrmt.hrc100
-rw-r--r--sc/source/ui/inc/condfrmt.hxx191
-rw-r--r--sc/source/ui/inc/consdlg.hxx174
-rw-r--r--sc/source/ui/inc/content.hxx177
-rw-r--r--sc/source/ui/inc/corodlg.hxx115
-rw-r--r--sc/source/ui/inc/crdlg.hxx108
-rw-r--r--sc/source/ui/inc/crnrdlg.hrc80
-rw-r--r--sc/source/ui/inc/crnrdlg.hxx158
-rw-r--r--sc/source/ui/inc/dapidata.hxx117
-rw-r--r--sc/source/ui/inc/dapitype.hxx144
-rw-r--r--sc/source/ui/inc/dbdocfun.hxx126
-rw-r--r--sc/source/ui/inc/dbfunc.hxx141
-rw-r--r--sc/source/ui/inc/dbnamdlg.hrc85
-rw-r--r--sc/source/ui/inc/dbnamdlg.hxx172
-rw-r--r--sc/source/ui/inc/delcldlg.hxx106
-rw-r--r--sc/source/ui/inc/delcodlg.hxx119
-rw-r--r--sc/source/ui/inc/docfunc.hxx196
-rw-r--r--sc/source/ui/inc/docsh.hxx395
-rw-r--r--sc/source/ui/inc/drawsh.hxx118
-rw-r--r--sc/source/ui/inc/drawutil.hxx86
-rw-r--r--sc/source/ui/inc/drawview.hxx156
-rw-r--r--sc/source/ui/inc/drformsh.hxx96
-rw-r--r--sc/source/ui/inc/drtxtob.hxx120
-rw-r--r--sc/source/ui/inc/dwfunctr.hxx214
-rw-r--r--sc/source/ui/inc/editsh.hxx109
-rw-r--r--sc/source/ui/inc/expftext.hxx82
-rw-r--r--sc/source/ui/inc/fieldwnd.hxx131
-rw-r--r--sc/source/ui/inc/filldlg.hxx181
-rw-r--r--sc/source/ui/inc/filtdlg.hxx293
-rw-r--r--sc/source/ui/inc/filter.hrc109
-rw-r--r--sc/source/ui/inc/foptmgr.hxx155
-rw-r--r--sc/source/ui/inc/formatsh.hxx116
-rw-r--r--sc/source/ui/inc/formdata.hxx139
-rw-r--r--sc/source/ui/inc/formula.hxx294
-rw-r--r--sc/source/ui/inc/fuconarc.hxx99
-rw-r--r--sc/source/ui/inc/fuconpol.hxx101
-rw-r--r--sc/source/ui/inc/fuconrec.hxx99
-rw-r--r--sc/source/ui/inc/fuconstr.hxx106
-rw-r--r--sc/source/ui/inc/fuconuno.hxx100
-rw-r--r--sc/source/ui/inc/fudraw.hxx111
-rw-r--r--sc/source/ui/inc/fuedipo.hxx99
-rw-r--r--sc/source/ui/inc/fuinsert.hxx106
-rw-r--r--sc/source/ui/inc/fumark.hxx111
-rw-r--r--sc/source/ui/inc/funcpage.hxx197
-rw-r--r--sc/source/ui/inc/funcutl.hxx243
-rw-r--r--sc/source/ui/inc/fupoor.hxx150
-rw-r--r--sc/source/ui/inc/fusel.hxx113
-rw-r--r--sc/source/ui/inc/futext.hxx112
-rw-r--r--sc/source/ui/inc/graphsh.hxx93
-rw-r--r--sc/source/ui/inc/gridmerg.hxx100
-rw-r--r--sc/source/ui/inc/gridwin.hxx358
-rw-r--r--sc/source/ui/inc/groupdlg.hxx104
-rw-r--r--sc/source/ui/inc/hdrcont.hxx172
-rw-r--r--sc/source/ui/inc/hfedtdlg.hxx95
-rw-r--r--sc/source/ui/inc/highred.hrc106
-rw-r--r--sc/source/ui/inc/highred.hxx186
-rw-r--r--sc/source/ui/inc/hintwin.hxx90
-rw-r--r--sc/source/ui/inc/hiranges.hxx102
-rw-r--r--sc/source/ui/inc/imoptdlg.hxx182
-rw-r--r--sc/source/ui/inc/impex.hxx183
-rw-r--r--sc/source/ui/inc/inputhdl.hxx317
-rw-r--r--sc/source/ui/inc/inputwin.hxx251
-rw-r--r--sc/source/ui/inc/inscldlg.hxx106
-rw-r--r--sc/source/ui/inc/inscodlg.hxx163
-rw-r--r--sc/source/ui/inc/instbdlg.hrc92
-rw-r--r--sc/source/ui/inc/instbdlg.hxx170
-rw-r--r--sc/source/ui/inc/invmerge.hxx93
-rw-r--r--sc/source/ui/inc/lbseldlg.hxx111
-rw-r--r--sc/source/ui/inc/makefile.mk61
-rw-r--r--sc/source/ui/inc/miscdlgs.hrc213
-rw-r--r--sc/source/ui/inc/msgpool.hxx120
-rw-r--r--sc/source/ui/inc/mtrindlg.hxx122
-rw-r--r--sc/source/ui/inc/mvtabdlg.hxx119
-rw-r--r--sc/source/ui/inc/namecrea.hxx101
-rw-r--r--sc/source/ui/inc/namedlg.hrc86
-rw-r--r--sc/source/ui/inc/namedlg.hxx165
-rw-r--r--sc/source/ui/inc/namepast.hxx106
-rw-r--r--sc/source/ui/inc/navcitem.hxx91
-rw-r--r--sc/source/ui/inc/navipi.hxx405
-rw-r--r--sc/source/ui/inc/notemark.hxx117
-rw-r--r--sc/source/ui/inc/oleobjsh.hxx93
-rw-r--r--sc/source/ui/inc/olinefun.hxx104
-rw-r--r--sc/source/ui/inc/olinewin.hxx135
-rw-r--r--sc/source/ui/inc/opredlin.hrc72
-rw-r--r--sc/source/ui/inc/opredlin.hxx131
-rw-r--r--sc/source/ui/inc/optdlg.hrc205
-rw-r--r--sc/source/ui/inc/optload.hrc74
-rw-r--r--sc/source/ui/inc/optload.hxx106
-rw-r--r--sc/source/ui/inc/output.hxx262
-rw-r--r--sc/source/ui/inc/pagedata.hxx130
-rw-r--r--sc/source/ui/inc/parawin.hxx222
-rw-r--r--sc/source/ui/inc/pfiltdlg.hxx183
-rw-r--r--sc/source/ui/inc/pgbrksh.hxx91
-rw-r--r--sc/source/ui/inc/pivotsh.hxx96
-rw-r--r--sc/source/ui/inc/pntlock.hxx98
-rw-r--r--sc/source/ui/inc/popmenu.hxx86
-rw-r--r--sc/source/ui/inc/preview.hxx155
-rw-r--r--sc/source/ui/inc/prevwsh.hxx158
-rw-r--r--sc/source/ui/inc/printfun.hxx366
-rw-r--r--sc/source/ui/inc/privsplt.hxx122
-rw-r--r--sc/source/ui/inc/pvfundlg.hxx130
-rw-r--r--sc/source/ui/inc/pvlaydlg.hxx239
-rw-r--r--sc/source/ui/inc/redcom.hxx105
-rw-r--r--sc/source/ui/inc/reffact.hxx139
-rw-r--r--sc/source/ui/inc/refundo.hxx103
-rw-r--r--sc/source/ui/inc/rfindlst.hxx113
-rw-r--r--sc/source/ui/inc/scendlg.hxx133
-rw-r--r--sc/source/ui/inc/select.hxx161
-rw-r--r--sc/source/ui/inc/servobj.hxx102
-rw-r--r--sc/source/ui/inc/shtabdlg.hxx105
-rw-r--r--sc/source/ui/inc/simpref.hrc71
-rw-r--r--sc/source/ui/inc/simpref.hxx156
-rw-r--r--sc/source/ui/inc/solvrdlg.hrc80
-rw-r--r--sc/source/ui/inc/solvrdlg.hxx153
-rw-r--r--sc/source/ui/inc/sortdlg.hrc112
-rw-r--r--sc/source/ui/inc/sortdlg.hxx100
-rw-r--r--sc/source/ui/inc/spelleng.hxx109
-rw-r--r--sc/source/ui/inc/strindlg.hxx107
-rw-r--r--sc/source/ui/inc/structpg.hxx205
-rw-r--r--sc/source/ui/inc/styledlg.hrc71
-rw-r--r--sc/source/ui/inc/styledlg.hxx95
-rw-r--r--sc/source/ui/inc/submenu.hrc101
-rw-r--r--sc/source/ui/inc/subtdlg.hrc97
-rw-r--r--sc/source/ui/inc/subtdlg.hxx91
-rw-r--r--sc/source/ui/inc/tabcont.hxx115
-rw-r--r--sc/source/ui/inc/tabopdlg.hrc84
-rw-r--r--sc/source/ui/inc/tabopdlg.hxx158
-rw-r--r--sc/source/ui/inc/tabpages.hxx120
-rw-r--r--sc/source/ui/inc/tabpopsh.hxx91
-rw-r--r--sc/source/ui/inc/tabsplit.hxx96
-rw-r--r--sc/source/ui/inc/tabview.hxx503
-rw-r--r--sc/source/ui/inc/tabvwsh.hxx419
-rw-r--r--sc/source/ui/inc/target.hxx88
-rw-r--r--sc/source/ui/inc/tbinsert.hrc66
-rw-r--r--sc/source/ui/inc/tbinsert.hxx127
-rw-r--r--sc/source/ui/inc/teamdlg.hxx92
-rw-r--r--sc/source/ui/inc/textdlgs.hxx108
-rw-r--r--sc/source/ui/inc/tpcalc.hxx150
-rw-r--r--sc/source/ui/inc/tphf.hxx135
-rw-r--r--sc/source/ui/inc/tphfedit.hxx267
-rw-r--r--sc/source/ui/inc/tpprint.hxx107
-rw-r--r--sc/source/ui/inc/tpsort.hxx244
-rw-r--r--sc/source/ui/inc/tpstat.hxx112
-rw-r--r--sc/source/ui/inc/tpsubt.hxx235
-rw-r--r--sc/source/ui/inc/tptable.hxx135
-rw-r--r--sc/source/ui/inc/tpusrlst.hxx163
-rw-r--r--sc/source/ui/inc/tpview.hxx215
-rw-r--r--sc/source/ui/inc/ui_pch.hxx406
-rw-r--r--sc/source/ui/inc/uiitems.hxx408
-rw-r--r--sc/source/ui/inc/undobase.hxx159
-rw-r--r--sc/source/ui/inc/undoblk.hxx933
-rw-r--r--sc/source/ui/inc/undocell.hxx381
-rw-r--r--sc/source/ui/inc/undodat.hxx554
-rw-r--r--sc/source/ui/inc/undodraw.hxx99
-rw-r--r--sc/source/ui/inc/undoolk.hxx80
-rw-r--r--sc/source/ui/inc/undostyl.hxx148
-rw-r--r--sc/source/ui/inc/undotab.hxx453
-rw-r--r--sc/source/ui/inc/undoutil.hxx102
-rw-r--r--sc/source/ui/inc/validate.hrc86
-rw-r--r--sc/source/ui/inc/validate.hxx210
-rw-r--r--sc/source/ui/inc/viewdata.hxx501
-rw-r--r--sc/source/ui/inc/viewfunc.hxx365
-rw-r--r--sc/source/ui/inc/viewutil.hxx123
-rw-r--r--sc/source/ui/miscdlgs/acredlin.cxx2294
-rw-r--r--sc/source/ui/miscdlgs/acredlin.src838
-rw-r--r--sc/source/ui/miscdlgs/anyrefdg.cxx932
-rw-r--r--sc/source/ui/miscdlgs/autofmt.cxx1460
-rw-r--r--sc/source/ui/miscdlgs/crdlg.cxx120
-rw-r--r--sc/source/ui/miscdlgs/crnrdlg.cxx1355
-rw-r--r--sc/source/ui/miscdlgs/delcldlg.cxx153
-rw-r--r--sc/source/ui/miscdlgs/delcodlg.cxx213
-rw-r--r--sc/source/ui/miscdlgs/filldlg.cxx402
-rw-r--r--sc/source/ui/miscdlgs/groupdlg.cxx123
-rw-r--r--sc/source/ui/miscdlgs/highred.cxx356
-rw-r--r--sc/source/ui/miscdlgs/highred.src269
-rw-r--r--sc/source/ui/miscdlgs/inscldlg.cxx153
-rw-r--r--sc/source/ui/miscdlgs/inscodlg.cxx388
-rw-r--r--sc/source/ui/miscdlgs/instbdlg.cxx401
-rw-r--r--sc/source/ui/miscdlgs/instbdlg.src398
-rw-r--r--sc/source/ui/miscdlgs/lbseldlg.cxx141
-rw-r--r--sc/source/ui/miscdlgs/makefile.mk126
-rw-r--r--sc/source/ui/miscdlgs/mtrindlg.cxx218
-rw-r--r--sc/source/ui/miscdlgs/mvtabdlg.cxx226
-rw-r--r--sc/source/ui/miscdlgs/namecrea.cxx112
-rw-r--r--sc/source/ui/miscdlgs/namepast.cxx166
-rw-r--r--sc/source/ui/miscdlgs/redcom.cxx216
-rw-r--r--sc/source/ui/miscdlgs/shtabdlg.cxx130
-rw-r--r--sc/source/ui/miscdlgs/simpref.cxx256
-rw-r--r--sc/source/ui/miscdlgs/solvrdlg.cxx338
-rw-r--r--sc/source/ui/miscdlgs/strindlg.cxx127
-rw-r--r--sc/source/ui/miscdlgs/tabopdlg.cxx389
-rw-r--r--sc/source/ui/miscdlgs/teamdlg.cxx145
-rw-r--r--sc/source/ui/miscdlgs/textdlgs.cxx156
-rw-r--r--sc/source/ui/namedlg/makefile.mk93
-rw-r--r--sc/source/ui/namedlg/namedlg.cxx691
-rw-r--r--sc/source/ui/navipi/content.cxx1695
-rw-r--r--sc/source/ui/navipi/makefile.mk94
-rw-r--r--sc/source/ui/navipi/navcitem.cxx162
-rw-r--r--sc/source/ui/navipi/navipi.cxx1668
-rw-r--r--sc/source/ui/navipi/navipi.hrc95
-rw-r--r--sc/source/ui/navipi/navipi.src1150
-rw-r--r--sc/source/ui/navipi/scenwnd.cxx378
-rw-r--r--sc/source/ui/optdlg/makefile.mk103
-rw-r--r--sc/source/ui/optdlg/opredlin.cxx323
-rw-r--r--sc/source/ui/optdlg/tpcalc.cxx333
-rw-r--r--sc/source/ui/optdlg/tpprint.cxx216
-rw-r--r--sc/source/ui/optdlg/tpusrlst.cxx853
-rw-r--r--sc/source/ui/optdlg/tpview.cxx714
-rw-r--r--sc/source/ui/pagedlg/areasdlg.cxx868
-rw-r--r--sc/source/ui/pagedlg/hfedtdlg.cxx219
-rw-r--r--sc/source/ui/pagedlg/hfedtdlg.hrc88
-rw-r--r--sc/source/ui/pagedlg/hfedtdlg.src1401
-rw-r--r--sc/source/ui/pagedlg/makefile.mk109
-rw-r--r--sc/source/ui/pagedlg/pagedlg.hrc123
-rw-r--r--sc/source/ui/pagedlg/pagedlg.src1170
-rw-r--r--sc/source/ui/pagedlg/tphf.cxx357
-rw-r--r--sc/source/ui/pagedlg/tphf.src92
-rw-r--r--sc/source/ui/pagedlg/tphfedit.cxx821
-rw-r--r--sc/source/ui/pagedlg/tptable.cxx502
-rw-r--r--sc/source/ui/src/attrdlg.src524
-rw-r--r--sc/source/ui/src/autofmt.src861
-rw-r--r--sc/source/ui/src/condfrmt.src1606
-rw-r--r--sc/source/ui/src/crnrdlg.src353
-rw-r--r--sc/source/ui/src/dbnamdlg.src555
-rw-r--r--sc/source/ui/src/filter.src3484
-rw-r--r--sc/source/ui/src/globstr.src9405
-rw-r--r--sc/source/ui/src/hdrcont.src679
-rw-r--r--sc/source/ui/src/makefile.mk119
-rw-r--r--sc/source/ui/src/miscdlgs.src3658
-rw-r--r--sc/source/ui/src/namedlg.src530
-rw-r--r--sc/source/ui/src/opredlin.src253
-rw-r--r--sc/source/ui/src/optdlg.src2704
-rw-r--r--sc/source/ui/src/popup.src1722
-rw-r--r--sc/source/ui/src/pseudo.src681
-rw-r--r--sc/source/ui/src/sc.src173
-rw-r--r--sc/source/ui/src/scerrors.src665
-rw-r--r--sc/source/ui/src/scfuncs.src44444
-rw-r--r--sc/source/ui/src/scstring.src2855
-rw-r--r--sc/source/ui/src/scwarngs.src127
-rw-r--r--sc/source/ui/src/simpref.src164
-rw-r--r--sc/source/ui/src/solvrdlg.src418
-rw-r--r--sc/source/ui/src/sortdlg.src829
-rw-r--r--sc/source/ui/src/subtdlg.src952
-rw-r--r--sc/source/ui/src/tabopdlg.src489
-rw-r--r--sc/source/ui/src/textdlgs.src404
-rw-r--r--sc/source/ui/src/toolbox.src1719
-rw-r--r--sc/source/ui/styleui/makefile.mk98
-rw-r--r--sc/source/ui/styleui/scstyles.src144
-rw-r--r--sc/source/ui/styleui/styledlg.cxx213
-rw-r--r--sc/source/ui/styleui/styledlg.src468
-rw-r--r--sc/source/ui/styleui/template.curbin0 -> 326 bytes
-rw-r--r--sc/source/ui/undo/makefile.mk119
-rw-r--r--sc/source/ui/undo/refundo.cxx232
-rw-r--r--sc/source/ui/undo/target.cxx110
-rw-r--r--sc/source/ui/undo/undobase.cxx374
-rw-r--r--sc/source/ui/undo/undoblk.cxx1909
-rw-r--r--sc/source/ui/undo/undoblk2.cxx308
-rw-r--r--sc/source/ui/undo/undoblk3.cxx2053
-rw-r--r--sc/source/ui/undo/undocell.cxx1154
-rw-r--r--sc/source/ui/undo/undodat.cxx2147
-rw-r--r--sc/source/ui/undo/undodraw.cxx304
-rw-r--r--sc/source/ui/undo/undoolk.cxx138
-rw-r--r--sc/source/ui/undo/undostyl.cxx327
-rw-r--r--sc/source/ui/undo/undotab.cxx1383
-rw-r--r--sc/source/ui/undo/undoutil.cxx229
-rw-r--r--sc/source/ui/unoobj/afmtuno.cxx857
-rw-r--r--sc/source/ui/unoobj/appluno.cxx793
-rw-r--r--sc/source/ui/unoobj/cellsuno.cxx7281
-rw-r--r--sc/source/ui/unoobj/chartuno.cxx642
-rw-r--r--sc/source/ui/unoobj/convuno.cxx124
-rw-r--r--sc/source/ui/unoobj/cursuno.cxx568
-rw-r--r--sc/source/ui/unoobj/dapiuno.cxx1740
-rw-r--r--sc/source/ui/unoobj/datauno.cxx1972
-rw-r--r--sc/source/ui/unoobj/docuno.cxx2154
-rw-r--r--sc/source/ui/unoobj/editsrc.cxx400
-rw-r--r--sc/source/ui/unoobj/fielduno.cxx1103
-rw-r--r--sc/source/ui/unoobj/fmtuno.cxx863
-rw-r--r--sc/source/ui/unoobj/linkuno.cxx1314
-rw-r--r--sc/source/ui/unoobj/makefile.mk138
-rw-r--r--sc/source/ui/unoobj/miscuno.cxx387
-rw-r--r--sc/source/ui/unoobj/nameuno.cxx957
-rw-r--r--sc/source/ui/unoobj/notesuno.cxx358
-rw-r--r--sc/source/ui/unoobj/servuno.cxx250
-rw-r--r--sc/source/ui/unoobj/srchuno.cxx309
-rw-r--r--sc/source/ui/unoobj/styleuno.cxx1507
-rw-r--r--sc/source/ui/unoobj/targuno.cxx370
-rw-r--r--sc/source/ui/unoobj/textuno.cxx614
-rw-r--r--sc/source/ui/unoobj/unoguard.cxx82
-rw-r--r--sc/source/ui/unoobj/viewuno.cxx1428
-rw-r--r--sc/source/ui/view/auditsh.cxx242
-rw-r--r--sc/source/ui/view/cellsh.cxx794
-rw-r--r--sc/source/ui/view/cellsh1.cxx1790
-rw-r--r--sc/source/ui/view/cellsh2.cxx1234
-rw-r--r--sc/source/ui/view/cellsh3.cxx870
-rw-r--r--sc/source/ui/view/cellsh4.cxx359
-rw-r--r--sc/source/ui/view/colrowba.cxx716
-rw-r--r--sc/source/ui/view/dbfunc.cxx505
-rw-r--r--sc/source/ui/view/dbfunc2.cxx118
-rw-r--r--sc/source/ui/view/dbfunc3.cxx851
-rw-r--r--sc/source/ui/view/dbfunc4.cxx435
-rw-r--r--sc/source/ui/view/drawattr.cxx118
-rw-r--r--sc/source/ui/view/drawutil.cxx126
-rw-r--r--sc/source/ui/view/drawvie2.cxx97
-rw-r--r--sc/source/ui/view/drawvie3.cxx354
-rw-r--r--sc/source/ui/view/drawvie4.cxx684
-rw-r--r--sc/source/ui/view/drawview.cxx745
-rw-r--r--sc/source/ui/view/editsh.cxx886
-rw-r--r--sc/source/ui/view/formatsh.cxx1805
-rw-r--r--sc/source/ui/view/galwrap.cxx114
-rw-r--r--sc/source/ui/view/gridmerg.cxx198
-rw-r--r--sc/source/ui/view/gridwin.cxx3686
-rw-r--r--sc/source/ui/view/gridwin2.cxx1145
-rw-r--r--sc/source/ui/view/gridwin3.cxx500
-rw-r--r--sc/source/ui/view/gridwin4.cxx1573
-rw-r--r--sc/source/ui/view/gridwin5.cxx369
-rw-r--r--sc/source/ui/view/hdrcont.cxx829
-rw-r--r--sc/source/ui/view/hintwin.cxx188
-rw-r--r--sc/source/ui/view/imapwrap.cxx111
-rw-r--r--sc/source/ui/view/invmerge.cxx156
-rw-r--r--sc/source/ui/view/makefile.mk257
-rw-r--r--sc/source/ui/view/notemark.cxx234
-rw-r--r--sc/source/ui/view/olinewin.cxx916
-rw-r--r--sc/source/ui/view/olkact.cxx318
-rw-r--r--sc/source/ui/view/output.cxx2684
-rw-r--r--sc/source/ui/view/output2.cxx2884
-rw-r--r--sc/source/ui/view/output3.cxx630
-rw-r--r--sc/source/ui/view/pgbrksh.cxx118
-rw-r--r--sc/source/ui/view/pivotsh.cxx242
-rw-r--r--sc/source/ui/view/preview.cxx650
-rw-r--r--sc/source/ui/view/prevwsh.cxx844
-rw-r--r--sc/source/ui/view/prevwsh2.cxx392
-rw-r--r--sc/source/ui/view/printfun.cxx2721
-rw-r--r--sc/source/ui/view/reffact.cxx373
-rw-r--r--sc/source/ui/view/select.cxx848
-rw-r--r--sc/source/ui/view/spelleng.cxx376
-rw-r--r--sc/source/ui/view/tabcont.cxx566
-rw-r--r--sc/source/ui/view/tabpopsh.cxx164
-rw-r--r--sc/source/ui/view/tabsplit.cxx194
-rw-r--r--sc/source/ui/view/tabview.cxx2158
-rw-r--r--sc/source/ui/view/tabview2.cxx761
-rw-r--r--sc/source/ui/view/tabview3.cxx2476
-rw-r--r--sc/source/ui/view/tabview4.cxx597
-rw-r--r--sc/source/ui/view/tabview5.cxx891
-rw-r--r--sc/source/ui/view/tabvwsh.cxx326
-rw-r--r--sc/source/ui/view/tabvwsh2.cxx634
-rw-r--r--sc/source/ui/view/tabvwsh3.cxx1005
-rw-r--r--sc/source/ui/view/tabvwsh4.cxx1700
-rw-r--r--sc/source/ui/view/tabvwsh5.cxx459
-rw-r--r--sc/source/ui/view/tabvwsh8.cxx128
-rw-r--r--sc/source/ui/view/tabvwsh9.cxx563
-rw-r--r--sc/source/ui/view/tabvwsha.cxx650
-rw-r--r--sc/source/ui/view/tabvwshb.cxx468
-rw-r--r--sc/source/ui/view/tabvwshc.cxx492
-rw-r--r--sc/source/ui/view/tabvwshd.cxx121
-rw-r--r--sc/source/ui/view/tabvwshe.cxx338
-rw-r--r--sc/source/ui/view/tabvwshf.cxx762
-rw-r--r--sc/source/ui/view/tabvwshg.cxx420
-rw-r--r--sc/source/ui/view/tabvwshh.cxx557
-rw-r--r--sc/source/ui/view/viewdata.cxx2117
-rw-r--r--sc/source/ui/view/viewfun2.cxx2548
-rw-r--r--sc/source/ui/view/viewfun3.cxx1139
-rw-r--r--sc/source/ui/view/viewfun4.cxx765
-rw-r--r--sc/source/ui/view/viewfun5.cxx952
-rw-r--r--sc/source/ui/view/viewfun6.cxx341
-rw-r--r--sc/source/ui/view/viewfun7.cxx704
-rw-r--r--sc/source/ui/view/viewfunc.cxx2511
-rw-r--r--sc/source/ui/view/viewutil.cxx427
-rw-r--r--sc/source/ui/view/waitoff.cxx105
-rw-r--r--sc/util/hidother.src391
-rw-r--r--sc/util/makefile.mk358
-rw-r--r--sc/util/makefile.pmk64
-rw-r--r--sc/util/sc.map12
-rw-r--r--sc/util/sc.r777
-rw-r--r--sc/workben/addin.cxx627
-rw-r--r--sc/workben/addin.hxx136
-rw-r--r--sc/workben/makefile.mk192
-rw-r--r--sc/workben/map.idl71
-rw-r--r--sc/workben/result.cxx165
-rw-r--r--sc/workben/result.hxx117
-rw-r--r--sc/workben/test.cxx2075
-rw-r--r--sc/workben/testadd.idl101
-rw-r--r--sc/xml/ScAnnotationObj.xml217
-rw-r--r--sc/xml/ScAnnotationsObj.xml309
-rw-r--r--sc/xml/ScAreaLinkObj.xml122
-rw-r--r--sc/xml/ScAreaLinksObj.xml122
-rw-r--r--sc/xml/ScAutoFormatFieldObj.xml149
-rw-r--r--sc/xml/ScAutoFormatObj.xml149
-rw-r--r--sc/xml/ScAutoFormatsObj.xml149
-rw-r--r--sc/xml/ScCellCursorObj.xml214
-rw-r--r--sc/xml/ScCellFieldObj.xml219
-rw-r--r--sc/xml/ScCellFormatsObj.xml331
-rw-r--r--sc/xml/ScCellObj.xml331
-rw-r--r--sc/xml/ScCellRangeObj.xml331
-rw-r--r--sc/xml/ScCellRangesObj.xml331
-rw-r--r--sc/xml/ScCellSearchObj.xml117
-rw-r--r--sc/xml/ScCellTextCursor.xml135
-rw-r--r--sc/xml/ScCellsEnumeration.xml331
-rw-r--r--sc/xml/ScCellsObj.xml331
-rw-r--r--sc/xml/ScChartObj.xml125
-rw-r--r--sc/xml/ScChartsObj.xml125
-rw-r--r--sc/xml/ScConsolidationDescriptor.xml233
-rw-r--r--sc/xml/ScDDELinkObj.xml122
-rw-r--r--sc/xml/ScDDELinksObj.xml122
-rw-r--r--sc/xml/ScDataPilotFieldObj.xml137
-rw-r--r--sc/xml/ScDataPilotFieldsObj.xml137
-rw-r--r--sc/xml/ScDataPilotTableObj.xml137
-rw-r--r--sc/xml/ScDataPilotTablesObj.xml137
-rw-r--r--sc/xml/ScDatabaseRangeObj.xml233
-rw-r--r--sc/xml/ScDatabaseRangesObj.xml233
-rw-r--r--sc/xml/ScDrawPagesObj.xml309
-rw-r--r--sc/xml/ScFilterDescriptorBase.xml233
-rw-r--r--sc/xml/ScFunctionListObj.xml128
-rw-r--r--sc/xml/ScHeaderFieldObj.xml219
-rw-r--r--sc/xml/ScHeaderFooterContentObj.xml135
-rw-r--r--sc/xml/ScHeaderFooterTextCursor.xml135
-rw-r--r--sc/xml/ScHeaderFooterTextObj.xml135
-rw-r--r--sc/xml/ScLabelRangeObj.xml231
-rw-r--r--sc/xml/ScLabelRangesObj.xml231
-rw-r--r--sc/xml/ScModelObj.xml309
-rw-r--r--sc/xml/ScNamedRangeObj.xml231
-rw-r--r--sc/xml/ScNamedRangesObj.xml231
-rw-r--r--sc/xml/ScRecentFunctionsObj.xml128
-rw-r--r--sc/xml/ScScenariosObj.xml309
-rw-r--r--sc/xml/ScSheetLinkObj.xml122
-rw-r--r--sc/xml/ScSheetLinksObj.xml122
-rw-r--r--sc/xml/ScSpreadsheetSettings.xml128
-rw-r--r--sc/xml/ScSpreadsheetSettingsObj.xml309
-rw-r--r--sc/xml/ScStyleFamiliesObj.xml148
-rw-r--r--sc/xml/ScStyleFamilyObj.xml148
-rw-r--r--sc/xml/ScStyleObj.xml148
-rw-r--r--sc/xml/ScSubTotalDescriptorBase.xml233
-rw-r--r--sc/xml/ScSubTotalFieldObj.xml233
-rw-r--r--sc/xml/ScTabViewObj.xml264
-rw-r--r--sc/xml/ScTableColumnObj.xml331
-rw-r--r--sc/xml/ScTableColumnsObj.xml309
-rw-r--r--sc/xml/ScTableConditionalEntry.xml86
-rw-r--r--sc/xml/ScTableConditionalFormat.xml86
-rw-r--r--sc/xml/ScTableRowObj.xml331
-rw-r--r--sc/xml/ScTableRowsObj.xml309
-rw-r--r--sc/xml/ScTableSheetObj.xml331
-rw-r--r--sc/xml/ScTableSheetsObj.xml309
-rw-r--r--sc/xml/ScTableValidationObj.xml86
-rw-r--r--sc/xml/ScViewPaneObj.xml264
-rw-r--r--scaddins/prj/d.lst7
-rw-r--r--scaddins/source/datefunc/dateadd.idl128
-rw-r--r--scaddins/source/datefunc/datefunc.cxx884
-rw-r--r--scaddins/source/datefunc/datefunc.def7
-rw-r--r--scaddins/source/datefunc/datefunc.hxx135
-rw-r--r--scaddins/source/datefunc/makefile.mk143
-rw-r--r--scaddins/source/datefunc/msdev.mk151
873 files changed, 461979 insertions, 0 deletions
diff --git a/sc/addin/datefunc/dfa.cl b/sc/addin/datefunc/dfa.cl
new file mode 100644
index 000000000000..669a7f92559b
--- /dev/null
+++ b/sc/addin/datefunc/dfa.cl
@@ -0,0 +1,752 @@
+/*------------------------------------------------------------------------
+
+$Workfile: DFA.CL $
+
+$Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sc/addin/datefunc/dfa.cl,v 1.1.1.1 2000-09-18 16:44:46 hr Exp $
+
+Description: StarCalc Datefunc AddIn Example
+
+(c) Copyright 1998 - 2000, Sun Microsystems, Inc.
+
+------------------------------------------------------------------------*/
+
+static char datefunc_Id[]="@(#) StarCalc Datefunc AddIn (c) 1998-2000 Sun Microsystems, Inc.";
+
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include <xlang.h>
+#include <addin.h>
+#include <dfa.hrc>
+
+
+/**
+ * the current language the Addin is using
+ */
+static USHORT _nLanguage=LANGUAGE_ENGLISH;
+
+/**
+ * StarCalc calls this function to set a new current Language for the Addin
+ *
+ * @param *nLanguage
+ *
+ */
+void CALLTYPE SetLanguage( USHORT* nLanguage )
+{
+ _nLanguage = GetNeutralLanguage( *nLanguage );
+}
+
+
+/**
+ * Null Date, initialized in GetFunctionCount
+ *
+ * StarCalc uses a BaseDate 12/30/1899
+ * If not specified otherwise in the Settings for the Spreedsheet Document.
+ *
+ * There's no way to get the Spreadsheet settings from whithin a simple addin,
+ * so this Addin can only be used by documents using the default BaseDate setting.
+ *
+ * The functions in this Addin use a BaseDate 01/01/0001
+ * The nNullDate Variable is the StarCalc BaseDate converted to
+ * this internal date representation.
+ *
+ * @see #GetFunctionCount
+ *
+ */
+
+static ULONG nNullDate=0;
+
+#define NULLDATE_Year 1899
+#define NULLDATE_Month 12
+#define NULLDATE_Day 30
+
+
+/**
+ * Array holding values for month length, used in DaysInMonth() function
+ *
+ * @see #DaysInMonth
+ *
+ */
+static USHORT aDaysInMonth[12] = { 31, 28, 31, 30, 31, 30,
+ 31, 31, 30, 31, 30, 31 };
+
+/**
+ * Check if a year is a leap year in the Gregorian calendar
+ *
+ * @param nYear the year which should be checked
+ * @return true if the year is a leap year, false otherwise.
+ *
+ * @see #DaysInMonth, #IsLeapYear,
+ * @see #ScDate_DaysInMonth, #ScDate_IsLeapYear, #ScDate_WeeksInYear
+ *
+ */
+static BOOL IsLeapYear( USHORT nYear )
+{
+ return (((nYear % 4) == 0) && ((nYear % 100) != 0) || ((nYear % 400) == 0));
+}
+
+
+/**
+ * Get the number of days in a specified month
+ *
+ * @param nMonth the number of the Month
+ * @param nYear the year
+ * @return number of days
+ *
+ */
+static USHORT DaysInMonth( USHORT nMonth, USHORT nYear )
+{
+ if ( nMonth != 2 )
+ return aDaysInMonth[nMonth-1];
+ else
+ {
+ if ( IsLeapYear(nYear) )
+ return aDaysInMonth[nMonth-1] + 1;
+ else
+ return aDaysInMonth[nMonth-1];
+ }
+}
+
+
+/**
+ * Convert a date to a count of days starting from 01/01/0001
+ *
+ * The internal representation of a Date used in this Addin
+ * is the number of days between 01/01/0001 and the date
+ * this function converts a Day , Month, Year representation
+ * to this internal Date value.
+ *
+ * @param nDay the day of the Month
+ * @param nMonth the number of the Month
+ * @param nYear the Year
+ * @return count of days from 01/01/0001 to the date specified
+ *
+ */
+static long DateToDays( USHORT nDay, USHORT nMonth, USHORT nYear )
+{
+ long nDays;
+ USHORT i;
+
+ nDays = ((ULONG)nYear-1) * 365;
+ nDays += ((nYear-1) / 4) - ((nYear-1) / 100) + ((nYear-1) / 400);
+
+ for( i = 1; i < nMonth; i++ )
+ nDays += DaysInMonth(i,nYear);
+ nDays += nDay;
+
+ return nDays;
+}
+
+
+/**
+ * Convert a count of days starting from 01/01/0001 to a date
+ *
+ * The internal representation of a Date used in this Addin
+ * is the number of days between 01/01/0001 and the date
+ * this function converts this internal Date value
+ * to a Day , Month, Year representation of a Date.
+ *
+ * @param nDay count of days from 01/01/0001
+ * @param *pDay pointer to a variable for the day of the month
+ * @param *pMonth pointer to a variable for the month
+ * @param *pYear pointer to a variable for the year
+ *
+ */
+static void DaysToDate( long nDays,
+ USHORT *pDay, USHORT *pMonth, USHORT *pYear )
+{
+ long nTempDays;
+ long i = 0;
+ BOOL bCalc;
+
+ do
+ {
+ nTempDays = (long)nDays;
+ *pYear = (USHORT)((nTempDays / 365) - i);
+ nTempDays -= ((ULONG) *pYear -1) * 365;
+ nTempDays -= (( *pYear -1) / 4) - (( *pYear -1) / 100) + ((*pYear -1) / 400);
+ bCalc = FALSE;
+ if ( nTempDays < 1 )
+ {
+ i++;
+ bCalc = TRUE;
+ }
+ else
+ {
+ if ( nTempDays > 365 )
+ {
+ if ( (nTempDays != 366) || !IsLeapYear( *pYear ) )
+ {
+ i--;
+ bCalc = TRUE;
+ }
+ }
+ }
+ }
+ while ( bCalc );
+
+ *pMonth = 1;
+ while ( (ULONG)nTempDays > DaysInMonth( *pMonth, *pYear ) )
+ {
+ nTempDays -= DaysInMonth( *pMonth, *pYear );
+ (*pMonth)++;
+ }
+ *pDay = (USHORT)nTempDays;
+}
+
+/**
+ * Get week difference between 2 dates
+ *
+ * new Weeks(date1,date2,mode) function for StarCalc
+ *
+ * Two modes of operation are provided.
+ * The first is just a simple division by 7 calculation.
+ *
+ * The second calculates the diffence by week of year.
+ *
+ * The International Standard IS-8601 has decreed that Monday
+ * shall be the first day of the week.
+ *
+ * A week that lies partly in one year and partly in annother
+ * is assigned a number in the the year in which most of its days lie.
+ *
+ * That means that week 1 of any year is the week that contains the 4. January
+ *
+ * The internal representation of a Date used in the Addin is the number of days based on 01/01/0001
+ *
+ * A WeekDay can be then calculated by substracting 1 and calculating the rest of
+ * a division by 7, which gives a 0 - 6 value for Monday - Sunday
+ *
+ * Using the 4. January rule explained above the formula
+ *
+ * nWeek1= ( nDays1 - nJan4 + ( (nJan4-1) % 7 ) ) / 7 + 1;
+ *
+ * calculates a number between 0-53 for each day which is in the same year as nJan4
+ * where 0 means that this week belonged to the year before.
+ *
+ * If a day in the same or annother year is used in this formula this calculates
+ * an calendar week offset from a given 4. January
+ *
+ * nWeek2 = ( nDays2 - nJan4 + ( (nJan4-1) % 7 ) ) / 7 + 1;
+ *
+ * The 4.January of first Date Argument can thus be used to calculate
+ * the week difference by calendar weeks which is then nWeek = nWeek2 - nWeek1
+ *
+ * which can be optimized to
+ *
+ * nWeek = ( (nDays2-nJan4+((nJan4-1)%7))/7 ) - ( (nDays1-nJan4+((nJan4-1)%7))/7 )
+ *
+ * Note: All calculations are operating on the long integer data type
+ * % is the modulo operator in C which calculates the rest of an Integer division
+ *
+ *
+ * @param *r - return value for the StarCalc function
+ * @param d1 - date value (in StarCalc representation based 12/30/1899), usually the older date
+ * @param d2 - date value (in StarCalc representation based 12/30/1899), usually the younger date
+ * @param dMode - mode of operation
+ *
+ * mode 0 is the interval between the dates in month, that is days / 7
+ *
+ * mode 1 is the difference by week of year
+ *
+ */
+void CALLTYPE ScDate_GetDiffWeeks(double *r, double *d1, double *d2, double *dMode)
+{
+ long nDays1=0;
+ long nDays2=0;
+ int nMode=0;
+
+ if ( d1 ) nDays1=(long)floor(*d1)+nNullDate;
+ if ( d2 ) nDays2=(long)floor(*d2)+nNullDate;
+
+
+ if ( dMode) nMode=(int)*dMode;
+
+ if ( nMode == 1 ) {
+
+ USHORT nDay,nMonth,nYear;
+ long nJan4;
+
+ DaysToDate(nDays1,&nDay,&nMonth,&nYear);
+ nJan4=DateToDays(4,1,nYear);
+
+ *r=(double) ( ( (nDays2-nJan4+((nJan4-1)%7))/7 ) - ( (nDays1-nJan4+((nJan4-1)%7))/7 ) );
+
+ } else {
+
+ *r= (double) ( (nDays2 - nDays1) / 7 ) ;
+ }
+
+}
+
+/**
+ * Get month difference between 2 dates
+ * =Month(start, end, mode) Function for StarCalc
+ *
+ * two modes are provided
+ *
+ * @param *r - return value for the StarCalc function
+ * @param d1 - date value, start date
+ * @param d2 - date value, end date
+ * @param dMode - mode of operation
+ *
+ * mode 0 is the interval between the dates in month
+ *
+ * mode 1 is the difference in calendar month
+ *
+ */
+void CALLTYPE ScDate_GetDiffMonths(double *r, double *d1, double *d2, double *dMode)
+{
+ USHORT nDay1,nMonth1,nYear1;
+ USHORT nDay2,nMonth2,nYear2;
+ long nDays1=0;
+ long nDays2=0;
+ int nMode=0;
+
+ if ( dMode) nMode=(int)*dMode;
+
+ if ( d1 ) nDays1=(long)floor(*d1)+nNullDate;
+ if ( d2 ) nDays2=(long)floor(*d2)+nNullDate;
+
+ DaysToDate(nDays1,&nDay1,&nMonth1,&nYear1);
+ DaysToDate(nDays2,&nDay2,&nMonth2,&nYear2);
+
+ *r=(double) ( nMonth2 - nMonth1 + (nYear2 - nYear1) * 12 );
+ if ( nMode == 1 || nDays1 == nDays2 ) return;
+
+ if ( nDays1 < nDays2 ) {
+ if ( nDay1 > nDay2 ) {
+ *r -= 1;
+ }
+ } else {
+ if ( nDay1 < nDay2 ) {
+ *r += 1;
+ }
+ }
+
+}
+
+
+/**
+ * Get Year difference between 2 dates
+ *
+ * two modes are provided
+ *
+ * @param *r - return value for the StarCalc function
+ * @param d1 - date value, start date
+ * @param d2 - date value, end date
+ * @param dMode - mode of operation
+ *
+ * mode 0 is the interval between the dates in years
+ *
+ * mode 1 is the difference in calendar years
+ *
+ */
+void CALLTYPE ScDate_GetDiffYears(double *r, double *d1, double *d2, double *dMode)
+{
+ USHORT nDay1,nMonth1,nYear1;
+ USHORT nDay2,nMonth2,nYear2;
+ long nDays1=0;
+ long nDays2=0;
+ int nMode=0;
+
+ if ( dMode) nMode=(int)*dMode;
+
+ if ( d1 ) nDays1=(long)floor(*d1)+nNullDate;
+ if ( d2 ) nDays2=(long)floor(*d2)+nNullDate;
+
+ DaysToDate(nDays1,&nDay1,&nMonth1,&nYear1);
+ DaysToDate(nDays2,&nDay2,&nMonth2,&nYear2);
+ if ( nMode != 1 ) {
+ ScDate_GetDiffMonths(r,d1,d2,dMode);
+ *r= (double) ( ((int) *r) / 12 );
+ } else {
+ *r=(double) ( nYear2 - nYear1 );
+ }
+}
+
+/**
+ * Check if a Date is in a leap year in the Gregorian calendar
+ *
+ * @param *r - return value for the StarCalc function
+ * @param d - date value (in StarCalc representation based 12/30/1899)
+ *
+ */
+void CALLTYPE ScDate_IsLeapYear(double *r, double *d)
+{
+ ULONG nDays;
+ USHORT nDay, nMonth, nYear;
+ double v=0.0;
+
+ if ( d ) v=*d;
+ nDays=(int) v + nNullDate;
+
+ DaysToDate(nDays,&nDay,&nMonth,&nYear);
+
+ *r=(double) ( IsLeapYear(nYear) );
+
+}
+
+/**
+ * Get the Number of Days in the month for a date
+ *
+ * @param *r - return value for the StarCalc function
+ * @param d - date value (in StarCalc representation based 12/30/1899)
+ *
+ */
+void CALLTYPE ScDate_DaysInMonth(double *r, double *d)
+{
+ ULONG nDays;
+ USHORT nDay, nMonth, nYear;
+ double v=0.0;
+
+ if ( d ) v=*d;
+ nDays=(int) v + nNullDate;
+
+ DaysToDate(nDays,&nDay,&nMonth,&nYear);
+ *r=(double) ( DaysInMonth( nMonth, nYear) );
+
+}
+
+
+/**
+ * Get number of weeks in the year for a date
+ *
+ * Most years have 52 weeks, but years that start on a Thursday
+ * and leep years that start on a Wednesday have 53 weeks
+ *
+ * The International Standard IS-8601 has decreed that Monday
+ * shall be the first day of the week.
+ *
+ * A WeekDay can be calculated by substracting 1 and calculating the rest of
+ * a division by 7 from the internal date represention
+ * which gives a 0 - 6 value for Monday - Sunday
+ *
+ * @param *r - return value for the StarCalc function
+ * @param d - date value (in StarCalc represantaion based 30.12.1899)
+ *
+ * @see #IsLeapYear #WeekNumber
+ *
+ */
+void CALLTYPE ScDate_WeeksInYear(double *r, double *d)
+{
+ ULONG nDays;
+ USHORT nDay, nMonth, nYear;
+ double v=0.0;
+ long nJan1WeekDay;
+
+ if ( d ) v=*d;
+ nDays=(int) v + nNullDate;
+
+ DaysToDate(nDays,&nDay,&nMonth,&nYear);
+
+ nJan1WeekDay= ( DateToDays(1,1,nYear) - 1) % 7;
+
+ if ( nJan1WeekDay == 3 ) { /* Thursday */
+ *r=(double) 53;
+ return;
+ } else if ( nJan1WeekDay == 2 ) { /* Wednesday */
+ *r= (double) ( IsLeapYear(nYear) ? 53 : 52 );
+ } else {
+ *r= (double) 52;
+ }
+}
+
+
+/**
+ * Get number of days in the year of a date specified
+ *
+ * @param *r - return value for the StarCalc function
+ * @param d - date value (in StarCalc represantaion based 30.12.1899)
+ *
+ */
+void CALLTYPE ScDate_DaysInYear(double *r, double *d)
+{
+ ULONG nDays;
+ USHORT nDay, nMonth, nYear;
+ double v=0.0;
+
+ if ( d ) v=*d;
+ nDays=(int) v + nNullDate;
+
+ DaysToDate(nDays,&nDay,&nMonth,&nYear);
+ *r=(double) ( IsLeapYear(nYear) ? 366 : 365 );
+
+}
+
+
+/**
+ * Tell StarCalc how many new functions this Addin provides.
+ *
+ * It's called before any of these new functions is actually
+ * executed and is also used to initialize the NullDate here.
+ *
+ * StarCalc uses a Date Base 12/30/1899
+ * If not specified otherwise in the Options for the Spreedsheet Document
+ *
+ *
+ * @param *nCount - returns the number of functions which are exported to StarCalc
+ *
+ */
+void CALLTYPE GetFunctionCount( USHORT *nCount )
+{
+
+ /* initialize nNullDate Value 0 is 12/30/1899 */
+ nNullDate=DateToDays(NULLDATE_Day, NULLDATE_Month, NULLDATE_Year);
+
+ *nCount = 7;
+}
+
+/**
+ * Provides neccessary data for each new function to StarCalc
+ *
+ * @param *nNo Input: Function number between 0 and nCount - 1
+ * @param *pFuncName Output: Functionname which should be called in the AddIn-DLL
+ * @param *nParamCount Output: Number of Parameter. Must be greater than 0, because there's always a return-Value. Maximum is 16.
+ * @param *peType Output: Pointer to arrray with exactly 16 variables of typ Paramtype. nParamCount Entries are set to the type of the corresponding Parameters.
+ * @param *pInternalName Output: Functionname as seen by the Spreadsheet user
+ *
+ * @see #GetFunctionCount, #GetParameterDescription
+ *
+ */
+void CALLTYPE GetFunctionData( USHORT * nNo,
+ char * pFuncName,
+ USHORT * nParamCount,
+ ParamType * peType,
+ char * pInternalName )
+{
+
+
+ switch( *nNo ) {
+ case 0:
+ SO_StringCopy( pInternalName, getText(DFA_WEEK_NAME) );
+ SO_StringCopy( pFuncName, "ScDate_GetDiffWeeks" );
+ peType[0] = PTR_DOUBLE;
+ peType[1] = PTR_DOUBLE;
+ peType[2] = PTR_DOUBLE;
+ peType[3] = PTR_DOUBLE;
+ *nParamCount=4;
+ break;
+
+ case 1:
+ SO_StringCopy( pInternalName, getText(DFA_MONTHS_NAME) );
+ SO_StringCopy( pFuncName, "ScDate_GetDiffMonths" );
+ peType[0] = PTR_DOUBLE;
+ peType[1] = PTR_DOUBLE;
+ peType[2] = PTR_DOUBLE;
+ peType[3] = PTR_DOUBLE;
+ *nParamCount=4;
+ break;
+
+ case 2:
+ SO_StringCopy( pInternalName, getText(DFA_YEARS_NAME) );
+ SO_StringCopy( pFuncName, "ScDate_GetDiffYears" );
+ peType[0] = PTR_DOUBLE;
+ peType[1] = PTR_DOUBLE;
+ peType[2] = PTR_DOUBLE;
+ peType[3] = PTR_DOUBLE;
+ *nParamCount=4;
+ break;
+
+ case 3:
+ SO_StringCopy( pInternalName, getText(DFA_ISLEAPYEAR_NAME) );
+ SO_StringCopy( pFuncName, "ScDate_IsLeapYear" );
+ peType[0] = PTR_DOUBLE;
+ peType[1] = PTR_DOUBLE;
+ *nParamCount=2;
+ break;
+
+ case 4:
+ SO_StringCopy( pInternalName, getText(DFA_DAYSINMONTH_NAME) );
+ SO_StringCopy( pFuncName, "ScDate_DaysInMonth" );
+ peType[0] = PTR_DOUBLE;
+ peType[1] = PTR_DOUBLE;
+ *nParamCount=2;
+ break;
+
+ case 5:
+ SO_StringCopy( pInternalName, getText(DFA_DAYSINYEAR_NAME) );
+ SO_StringCopy( pFuncName, "ScDate_DaysInYear" );
+ peType[0] = PTR_DOUBLE;
+ peType[1] = PTR_DOUBLE;
+ *nParamCount=2;
+ break;
+
+ case 6:
+ SO_StringCopy( pInternalName, getText(DFA_WEEKSINYEAR_NAME) );
+ SO_StringCopy( pFuncName, "ScDate_WeeksInYear" );
+ peType[0] = PTR_DOUBLE;
+ peType[1] = PTR_DOUBLE;
+ *nParamCount=2;
+ break;
+
+ default:
+ *nParamCount = 0;
+ *pFuncName = 0;
+ *pInternalName = 0;
+ break;
+ }
+}
+
+/**
+ * Provides descriptions for each new function to StarCalc
+ * which are shown is the autopilot
+ *
+ * @param *nNo Input Parameter, Function number between 0 and nCount - 1
+ * @param *nParam Parameter Number
+ * @param *pName Output: Name of the parameter
+ * @param *pDesc Output: Description of the parameter
+ *
+ * @see #GetFunctionCount, #GetParameterDescription
+ */
+void CALLTYPE GetParameterDescription( USHORT* nNo, USHORT* nParam,
+char* pName, char* pDesc )
+{
+ *pName = 0;
+ *pDesc = 0;
+
+ switch ( *nNo ) {
+ case 0: /* Weeks */
+ switch ( *nParam ) {
+ case 0:
+ SO_StringCopy(pDesc,getText(DFA_WEEK_DESC));
+ break;
+ case 1:
+ SO_StringCopy(pName,getText(DFA_PAR_DATE1_NAME));
+ SO_StringCopy(pDesc,getText(DFA_WEEK_PAR1_DESC));
+ break;
+ case 2:
+ SO_StringCopy(pName,getText(DFA_PAR_DATE2_NAME));
+ SO_StringCopy(pDesc,getText(DFA_WEEK_PAR2_DESC));
+ break;
+ case 3:
+ SO_StringCopy(pName,getText(DFA_PAR_MODE_NAME));
+ SO_StringCopy(pDesc,getText(DFA_WEEK_PAR3_DESC));
+ break;
+ }
+ break;
+ case 1: /* Months */
+ switch ( *nParam ) {
+ case 0:
+ SO_StringCopy(pDesc,getText(DFA_MONTHS_DESC));
+ break;
+ case 1:
+ SO_StringCopy(pName,getText(DFA_PAR_DATE1_NAME));
+ SO_StringCopy(pDesc,getText(DFA_MONTHS_PAR1_DESC));
+ break;
+ case 2:
+ SO_StringCopy(pName,getText(DFA_PAR_DATE2_NAME));
+ SO_StringCopy(pDesc,getText(DFA_MONTHS_PAR2_DESC));
+ break;
+ case 3:
+ SO_StringCopy(pName,getText(DFA_PAR_MODE_NAME));
+ SO_StringCopy(pDesc,getText(DFA_MONTHS_PAR3_DESC));
+ break;
+ }
+ break;
+ case 2: /* Years */
+ switch ( *nParam ) {
+ case 0:
+ SO_StringCopy(pDesc,getText(DFA_YEARS_DESC));
+ break;
+ case 1:
+ SO_StringCopy(pName,getText(DFA_PAR_DATE1_NAME));
+ SO_StringCopy(pDesc,getText(DFA_YEARS_PAR1_DESC));
+ break;
+ case 2:
+ SO_StringCopy(pName,getText(DFA_PAR_DATE2_NAME));
+ SO_StringCopy(pDesc,getText(DFA_YEARS_PAR2_DESC));
+ break;
+ case 3:
+ SO_StringCopy(pName,getText(DFA_PAR_MODE_NAME));
+ SO_StringCopy(pDesc,getText(DFA_YEARS_PAR3_DESC));
+ break;
+ }
+ break;
+ case 3: /* IsLeapYear */
+ switch ( *nParam ) {
+ case 0:
+ SO_StringCopy(pDesc,getText(DFA_ISLEAPYEAR_DESC));
+ break;
+ case 1:
+ SO_StringCopy(pName,getText(DFA_PAR_DATE_NAME));
+ SO_StringCopy(pDesc,getText(DFA_PAR_DATE_DESC)); /* StarCalc Value */
+ break;
+ }
+ break;
+ case 4: /* DaysInMonth */
+ switch ( *nParam ) {
+ case 0:
+ SO_StringCopy(pDesc,getText(DFA_DAYSINMONTH_DESC));
+ break;
+ case 1:
+ SO_StringCopy(pName,getText(DFA_PAR_DATE_NAME));
+ SO_StringCopy(pDesc,getText(DFA_PAR_DATE_DESC)); /* StarCalc Value */
+ break;
+ }
+ break;
+ case 5: /* DaysInYear */
+ switch ( *nParam ) {
+ case 0:
+ SO_StringCopy(pDesc,getText(DFA_DAYSINYEAR_DESC));
+ break;
+ case 1:
+ SO_StringCopy(pName,getText(DFA_PAR_DATE_NAME));
+ SO_StringCopy(pDesc,getText(DFA_PAR_DATE_DESC)); /* StarCalc Value */
+ break;
+ }
+ break;
+
+ case 6: /* WeeksInYear */
+ switch ( *nParam ) {
+ case 0:
+ SO_StringCopy(pDesc,getText(DFA_WEEKSINYEAR_DESC));
+ break;
+ case 1:
+ SO_StringCopy(pName,getText(DFA_PAR_DATE_NAME));
+ SO_StringCopy(pDesc,getText(DFA_PAR_DATE_DESC)); /* StarCalc Value */
+ break;
+ }
+ break;
+ }
+
+}
+
+/*------------------------------------------------------------------------
+
+$Log: not supported by cvs2svn $
+Revision 1.6 1999/08/10 12:47:12 NN
+#68039# copyright
+
+
+ Rev 1.5 10 Aug 1999 14:47:12 NN
+ #68039# copyright
+
+ Rev 1.4 20 May 1999 12:59:40 ER
+ #66274# GetFunctionData: DFA_WEEKSINYEAR_NAME statt DFA_DAYSINYEAR_NAME
+
+ Rev 1.3 29 Apr 1999 14:55:50 ER
+ #57689# xlang.h statt tools/lang.hxx
+
+ Rev 1.3 29 Apr 1999 14:45:32 ER
+ #57689# xlang.hxx statt tools/lang.hxx
+
+ Rev 1.2 29 Apr 1999 12:54:04 ER
+ #57689# Internationalisierung
+
+ Rev 1.1 15 Mar 1999 16:27:50 HJS
+ aufgeraeumt
+
+ Rev 1.0 10 Mar 1999 12:47:04 BEI
+ Initial revision.
+
+ Rev 1.1 13 Jul 1998 18:15:40 BEI
+ 2 Languages
+
+ Rev 1.0 07 Jul 1998 20:36:22 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sc/addin/datefunc/dfa.src b/sc/addin/datefunc/dfa.src
new file mode 100644
index 000000000000..034cac654496
--- /dev/null
+++ b/sc/addin/datefunc/dfa.src
@@ -0,0 +1,792 @@
+/*************************************************************************
+ *
+ * $RCSfile: dfa.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:46 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc" // Definition RID_XXX in StarCalc
+#include "dfa.hrc"
+
+Resource RID_SC_ADDIN_DFA
+{
+ String DFA_PAR_DATE1_NAME // Name of Date1 Parameter
+ {
+ Text = "Datum 1" ;
+ Text [ english ] = "Date 1" ;
+ Text[ english_us ] = "Date 1";
+ Text[ portuguese ] = "Data 1";
+ Text[ russian ] = "Äàòà 1";
+ Text[ dutch ] = "Datum 1";
+ Text[ french ] = "Date 1";
+ Text[ spanish ] = "Fecha 1";
+ Text[ italian ] = "Data 1";
+ Text[ danish ] = "Dato_1";
+ Text[ swedish ] = "Datum 1";
+ Text[ polish ] = "Data 1";
+ Text[ portuguese_brazilian ] = "Date 1";
+ Text[ japanese ] = "“ú•t 1";
+ Text[ chinese_simplified ] = "ÈÕÆÚ 1";
+ Text[ chinese_traditional ] = "¤é´Á 1";
+ Text[ arabic ] = "ÇáÊÇÑíÎ 1";
+ Text[ dutch ] = "Datum 1";
+ Text[ chinese_simplified ] = "ÈÕÆÚ 1";
+ Text[ greek ] = "Çìåñïìçíßá 1";
+ Text[ korean ] = "ÀÏÀÚ 1";
+ Text[ turkish ] = "Tarih 1";
+ };
+ String DFA_PAR_DATE2_NAME // Name of Date2 Parameter
+ {
+ Text = "Datum 2" ;
+ Text [ english ] = "Date 2" ;
+ Text[ english_us ] = "Date 2";
+ Text[ portuguese ] = "Data 2";
+ Text[ russian ] = "Äàòà 2";
+ Text[ dutch ] = "Datum 2";
+ Text[ french ] = "Date 2";
+ Text[ spanish ] = "Fecha 2";
+ Text[ italian ] = "Data 2";
+ Text[ danish ] = "Dato_2";
+ Text[ swedish ] = "Datum 2";
+ Text[ polish ] = "Data 2";
+ Text[ portuguese_brazilian ] = "Date 2";
+ Text[ japanese ] = "“ú•t 2";
+ Text[ chinese_simplified ] = "ÈÕÆÚ 2";
+ Text[ chinese_traditional ] = "¤é´Á 2";
+ Text[ arabic ] = "ÇáÊÇÑíÎ 2";
+ Text[ dutch ] = "Datum 2";
+ Text[ chinese_simplified ] = "ÈÕÆÚ 2";
+ Text[ greek ] = "Çìåñïìçíßá 2";
+ Text[ korean ] = "ÀÏÀÚ 2";
+ Text[ turkish ] = "Tarih 2";
+ };
+ String DFA_PAR_MODE_NAME // Name of Mode Parameter
+ {
+ Text = "Art" ;
+ Text [ english ] = "Mode" ;
+ Text[ english_us ] = "Mode";
+ Text[ portuguese ] = "Modo";
+ Text[ russian ] = "Ñïîñîá âû÷èñëåíèé";
+ Text[ dutch ] = "Modus";
+ Text[ french ] = "Mode";
+ Text[ spanish ] = "Modo";
+ Text[ italian ] = "Modo";
+ Text[ danish ] = "Type";
+ Text[ swedish ] = "Typ";
+ Text[ polish ] = "Tryb";
+ Text[ portuguese_brazilian ] = "Mode";
+ Text[ japanese ] = "Ó°ÄÞ";
+ Text[ chinese_simplified ] = "ÀàÐÍ";
+ Text[ chinese_traditional ] = "Ãþ«¬";
+ Text[ arabic ] = "ØÑíÞÉ ÇáÍÓÇÈ";
+ Text[ dutch ] = "Modus";
+ Text[ chinese_simplified ] = "ÀàÐÍ";
+ Text[ greek ] = "Ôñüðïò";
+ Text[ korean ] = "°è»ê ¸ðµå";
+ Text[ turkish ] = "Tür";
+ };
+
+ String DFA_PAR_DATE_NAME // Name of Date Parameter
+ {
+ Text = "Datum" ;
+ Text [ english ] = "Date" ;
+ Text[ english_us ] = "Date";
+ Text[ portuguese ] = "Data";
+ Text[ russian ] = "Äàòà";
+ Text[ dutch ] = "Datum";
+ Text[ french ] = "Date";
+ Text[ spanish ] = "Fecha";
+ Text[ italian ] = "Data";
+ Text[ danish ] = "Dato";
+ Text[ swedish ] = "Datum";
+ Text[ polish ] = "Data";
+ Text[ portuguese_brazilian ] = "Date";
+ Text[ japanese ] = "“ú•t";
+ Text[ chinese_simplified ] = "ÈÕÆÚ";
+ Text[ chinese_traditional ] = "¤é´Á";
+ Text[ arabic ] = "ÇáÊÇÑíÎ";
+ Text[ dutch ] = "Datum";
+ Text[ chinese_simplified ] = "ÈÕÆÚ";
+ Text[ greek ] = "Çìåñïìçíßá";
+ Text[ korean ] = "ÀÏÀÚ";
+ Text[ turkish ] = "Tarih";
+ };
+
+ String DFA_PAR_DATE_DESC // Description of Date Parameter
+ {
+ Text = "Interne Zahl des Datums" ;
+ Text [ english ] = "a internal date value" ;
+ Text[ english_us ] = "Internal number of the date";
+ Text[ portuguese ] = "Número interno da data";
+ Text[ russian ] = "Ïðåäñòàâëÿåò âíóòðåííåå çíà÷åíèå äàòû";
+ Text[ dutch ] = "Interne waarde van de datum";
+ Text[ french ] = "Le numéro de série de la date";
+ Text[ spanish ] = "Número interno de la fecha";
+ Text[ italian ] = "Numero interno della data";
+ Text[ danish ] = "Intern datoværdi";
+ Text[ swedish ] = "Datumets interna tal";
+ Text[ polish ] = "Wewnêtrzna liczba daty";
+ Text[ portuguese_brazilian ] = "a internal date value";
+ Text[ japanese ] = "“ú•t‚̼رْl";
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄϵͳÄÚ²¿Êý×Ö";
+ Text[ chinese_traditional ] = "¤é´Áªº¤º³¡¼Æ¦r";
+ Text[ arabic ] = "ÇáÑÞã ÇáÏÇÎáí ááÊÇÑíÎ";
+ Text[ dutch ] = "Interne waarde van de datum";
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄϵͳÄÚ²¿Êý×Ö";
+ Text[ greek ] = "Åóùôåñéêüò áñéèìüò ôçò çìåñïìçíßáò";
+ Text[ korean ] = "ÀÏÀÚÀÇ ³»ºÎÀû ¹øÈ£";
+ Text[ turkish ] = "Dahili tarih sayýsý";
+ };
+
+/*-=======================================================================*/
+ String DFA_WEEK_NAME // Name
+ {
+ Text = "Wochen" ;
+ Text [ english ] = "Weeks" ;
+ Text[ english_us ] = "Weeks";
+ Text[ portuguese ] = "Semanas";
+ Text[ russian ] = "Íåäåëè";
+ Text[ dutch ] = "Weken";
+ Text[ french ] = "Semaines";
+ Text[ spanish ] = "Semanas";
+ Text[ italian ] = "Settimane";
+ Text[ danish ] = "Uger";
+ Text[ swedish ] = "Veckor";
+ Text[ polish ] = "Tygodnie";
+ Text[ portuguese_brazilian ] = "Weeks";
+ Text[ japanese ] = "T";
+ Text[ chinese_simplified ] = "ÖÜ";
+ Text[ chinese_traditional ] = "¶g";
+ Text[ arabic ] = "ÃÓÇÈíÚ";
+ Text[ dutch ] = "Weken";
+ Text[ chinese_simplified ] = "ÖÜ";
+ Text[ greek ] = "ÅâäïìÜäåò";
+ Text[ korean ] = "ÁÖ";
+ Text[ turkish ] = "Hafta";
+ };
+ String DFA_WEEK_DESC // Description
+ {
+ Text = "Bestimmt die Wochendifferenz zweier Daten" ;
+ Text [ english ] = "returns number of weeks between two dates" ;
+ Text[ english_us ] = "Returns the difference in weeks between two dates";
+ Text[ portuguese ] = "devolve o número de semanas entre duas datas";
+ Text[ russian ] = "Îïðåäåëÿåò ÷èñëî íåäåëü ìåæäó äâóìÿ äàòàìè";
+ Text[ dutch ] = "Bepaalt het aantal weken tussen twee datums";
+ Text[ french ] = "Renvoie la différence en semaines de deux dates";
+ Text[ spanish ] = "Determina la diferencia en semanas de dos fechas";
+ Text[ italian ] = "Restituisce la differenza settimanale di due date";
+ Text[ danish ] = "Bestemmer ugedifferensen mellem to datoer";
+ Text[ swedish ] = "Bestämmer veckodifferensen mellan två datum";
+ Text[ polish ] = "Oblicza liczbê tygodni zawartych miêdzy dwiema datami";
+ Text[ portuguese_brazilian ] = "returns number of weeks between two dates";
+ Text[ japanese ] = "2‚‚̓ú•t‚ÌŠÔ‚ÌT‚Ì”‚ð•Ô‚µ‚Ü‚·";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÊý¾ÝµÄÖܲî¶î";
+ Text[ chinese_traditional ] = "­pºâ¨â­Ó¼Æ¾Úªº¶g®tÃB";
+ Text[ arabic ] = "íÍÏÏ ÚÏÏ ÇáÃÓÇÈíÚ ÇáæÇÞÚÉ Èíä ÊÇÑíÎíä";
+ Text[ dutch ] = "Bepaalt het aantal weken tussen twee datums";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÊý¾ÝµÄÖܲî¶î";
+ Text[ greek ] = "Ïñßæåé ôçí äéáöïñÜ åâäïìÜäùí äýï çìåñïìçíéþí";
+ Text[ korean ] = "µÎ ÀÏÀÚ »çÀÌÀÇ ÁÖ´ÜÀ§ Â÷ÀÌ";
+ Text[ turkish ] = "Ýki veri arasýndaki hafta farkýný bulur";
+ };
+ String DFA_WEEK_PAR1_DESC // Description of Parameter 1
+ {
+ Text = "Jüngeres Datum für die Wochendifferenz" ;
+ Text [ english ] = "the older date for the week difference" ;
+ Text[ language_user1 ] = "Jüngeres Datum ist das Gegenteil von older date";
+ Text[ english_us ] = "The end date for calculating the difference in weeks";
+ Text[ portuguese ] = "Data mais recente para a diferença em semanas";
+ Text[ russian ] = "Êîíå÷íàÿ äàòà äëÿ îïðåäåëåíèÿ ðàçíèöû â êîëè÷åñòâå íåäåëü.";
+ Text[ dutch ] = "De vroegere datum";
+ Text[ french ] = "Date la plus récente pour la différence en semaines";
+ Text[ spanish ] = "Fecha más reciente para la diferencia en semanas";
+ Text[ italian ] = "La data più recente per la differenza settimanale";
+ Text[ danish ] = "Yngre dato for ugedifferensen";
+ Text[ swedish ] = "Yngre datum för veckodifferensen";
+ Text[ polish ] = "Wczeœniejsza data w obliczaniu ró¿nicy tygodni";
+ Text[ portuguese_brazilian ] = "the older date for the week difference";
+ Text[ japanese ] = "T”ŒvŽZ‚Ì‚½‚߂̉‚ß‚Ì“ú•t";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÖܲî¶îµÄ½ÏÔçµÄÈÕÆÚ";
+ Text[ chinese_traditional ] = "ÄÝ©ó¤@­Ó¶g®tÃBªº¸û¦­ªº¤é´Á";
+ Text[ arabic ] = "ÊÇÑíÎ ÃÍÏË ááÝÇÑÞ ÈÇáÃÓÇÈíÚ";
+ Text[ dutch ] = "De vroegere datum";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÖܲî¶îµÄ½ÏÔçµÄÈÕÆÚ";
+ Text[ greek ] = "ÔåëéêÞ çìåñïìçíßá ãéá ôïí õðïëïãéóìü ôçò äéáöïñÜò óå åâäïìÜäåò";
+ Text[ korean ] = "ÁÖ »çÀÌ¿¡ Â÷À̸¦ °è»êÇϱâ À§ÇÑ ¸¶Áö¸· ³¯";
+ Text[ turkish ] = "Hafta farký hesabý için daha geç olan tarih";
+ };
+ String DFA_WEEK_PAR2_DESC // Description of Parameter 2
+ {
+ Text = "Älteres Datum für die Wochendifferenz" ;
+ Text [ english ] = "the younger date for the week difference" ;
+ Text[ english_us ] = "The start date for calculating the difference weeks";
+ Text[ portuguese ] = "Data mais antiga para a diferença em semanas";
+ Text[ russian ] = "Íà÷àëüíàÿ äàòà äëÿ îïðåäåëåíèÿ ðàçíèöû â êîëè÷åñòâå íåäåëü.";
+ Text[ dutch ] = "De latere datum";
+ Text[ french ] = "Date la plus ancienne pour la différence en semaines";
+ Text[ spanish ] = "Fecha más antigua para la diferencia en semanas";
+ Text[ italian ] = "La data meno recente per la differenza settimanale";
+ Text[ danish ] = "Ældre dato for ugedifferensen";
+ Text[ swedish ] = "Äldre datum för veckodifferensen";
+ Text[ polish ] = "PóŸniejsza data w obliczaniu ró¿nicy tygodni";
+ Text[ portuguese_brazilian ] = "the younger date for the week difference";
+ Text[ japanese ] = "T”ŒvŽZ‚Ì‚½‚ß‚ÌŒã‚Ì“ú•t";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÖܲî¶îµÄ½ÏÍíµÄÈÕÆÚ";
+ Text[ chinese_traditional ] = "ÄÝ©ó¤@­Ó¶g®tÃBªº¸û±ßªº¤é´Á";
+ Text[ arabic ] = "ÊÇÑíÎ ÃÞÏã ááÝÇÑÞð ÈÇáÃÓÇÈíÚ";
+ Text[ dutch ] = "De latere datum";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÖܲî¶îµÄ½ÏÍíµÄÈÕÆÚ";
+ Text[ greek ] = "Áñ÷éêÞ çìåñïìçíßá ãéá ôïí õðïëïãéóìü ôçò äéáöïñÜò óå åâäïìÜäåò";
+ Text[ korean ] = "ÁÖ Â÷À̸¦ °è»êÇϱâ À§ÇÑ ½ÃÀÛÀÏ";
+ Text[ turkish ] = "Hafta farký hesabý için daha erken olan tarih";
+ };
+ String DFA_WEEK_PAR3_DESC // Description of Parameter 3
+ {
+ Text = "Art der Differenzbildung Art=0 heißt Intervall, Art=1 heißt in Kalenderwochen" ;
+ Text [ english ] = "Mode=0 means week interval, Mode=1 means by week of year" ;
+ Text[ english_us ] = "Type of difference calculation: mode=0 means the interval, mode=1 means calendar weeks";
+ Text[ portuguese ] = "Modo de formação da diferença: modo=0 para intervalos; modo=1 para semanas.";
+ Text[ russian ] = "Ñïîñîá âû÷èñëåíèé: ñïîñîá=0 îçíà÷àåò èíòåðâàë, ñïîñîá=1 îçíà÷àåò èíòåðâàë â êàëåíäàðíûõ íåäåëÿõ";
+ Text[ dutch ] = "Modus=0 betekent aantal , Modus=1 betekent in kalenderweken";
+ Text[ french ] = "Mode de calcul de la différence Mode=0 pour l'intervalle, Mode=1 pour les semaines de l'année";
+ Text[ spanish ] = "Tipo de formación de diferencia: Tipo=0 significa intervalo; tipo=1, semanas del año";
+ Text[ italian ] = "Modo di calcolo della differenza Modo=0 per l'intervallo, Modo=1 per le settimane dell'anno";
+ Text[ danish ] = "Differensdannelsestype Type=O betyder interval, Type=1 betyder i kalenderuger";
+ Text[ swedish ] = "Typ av differensbildning typ=0 heter intervall, typ=1 heter i kalenderveckan";
+ Text[ polish ] = "Obliczanie ró¿nicy. 0 oznacza przedzia³ tygodni, 1 - tygodnie kalendarzowe";
+ Text[ portuguese_brazilian ] = "Mode=0 means week interval, Mode=1 means by week of year";
+ Text[ japanese ] = "ŒvŽZ•û–@:Ó°ÄÞ=0 ‚Í7“ú’PˆÊAÓ°ÄÞ=1 ‚ͶÚÝÀÞ°‚ÌT‚ÅŒvŽZ‚³‚ê‚Ü‚·B";
+ Text[ chinese_simplified ] = "µÃ³ö²î¶îµÄÀàÐÍ Mode=0 ±íʾ¼ä¸ô£¬ Mode=1 ±íʾһÄêµÄÐÇÆÚÊý";
+ Text[ chinese_traditional ] = "±o¥X®tÃBªºÃþ«¬ Mode=0 ªí¥Ü¶¡¹j¡A Mode=1 ªí¥Ü¤@¦~ªº¬P´Á¼Æ";
+ Text[ arabic ] = "ØÑíÞÉ ÍÓÇÈ ÇáÝÑÞ: mode=0 ÊÚäí ÇáÝÇÕá ÇáÒãäí¡ mode=1 ÊÚäí Ýí ÃÓÇÈíÚ ÇáÊÞæíã";
+ Text[ dutch ] = "Modus=0 betekent aantal , Modus=1 betekent in kalenderweken";
+ Text[ chinese_simplified ] = "µÃ³ö²î¶îµÄÀàÐÍ Mode=0 ±íʾ¼ä¸ô£¬ Mode=1 ±íʾһÄêµÄÐÇÆÚÊý";
+ Text[ greek ] = "Ôñüðïò õðïëïãéóìïý äéáöïñÜò: Ôñüðïò=0 óçìáßíåé äéÜóôçìá, Ôñüðïò=1 óçìáßíåé çìåñïëïãéáêÝò åâäïìÜäåò";
+ Text[ korean ] = "Â÷ÀÌ °è»ê ÇüÅÂ: ¸ðµå=0 Àº °£°ÝÀ» ÀǹÌÇÏ°í, ¸ðµå=1 ÀÏÁ¤ÀÌ ÀÖ´Â ÁÖ¸¦ ÀǹÌ";
+ Text[ turkish ] = "Fark hesabý türü, tür=0 aralýk, tür=1 ise takvim haftasý cinsinden anlamýna gelir";
+ };
+
+/*-=======================================================================*/
+
+ String DFA_MONTHS_NAME // Name
+ {
+ Text = "Monate" ;
+ Text [ english ] = "Months" ;
+ Text[ english_us ] = "Months";
+ Text[ portuguese ] = "Meses";
+ Text[ russian ] = "Ìåñÿöû";
+ Text[ dutch ] = "Maanden";
+ Text[ french ] = "Mois";
+ Text[ spanish ] = "Meses";
+ Text[ italian ] = "Mesi";
+ Text[ danish ] = "Måneder";
+ Text[ swedish ] = "Månader";
+ Text[ polish ] = "Miesi¹ce";
+ Text[ portuguese_brazilian ] = "Months";
+ Text[ japanese ] = "ŒŽ";
+ Text[ chinese_simplified ] = "ÔÂ";
+ Text[ chinese_traditional ] = "¤ë";
+ Text[ arabic ] = "ÃÔåÑ";
+ Text[ dutch ] = "Maanden";
+ Text[ chinese_simplified ] = "ÔÂ";
+ Text[ greek ] = "ÌÞíåò";
+ Text[ korean ] = "¿ù";
+ Text[ turkish ] = "Ay";
+ };
+ String DFA_MONTHS_DESC // Description
+ {
+ Text = "Bestimmt die Monatsdifferenz zweier Daten" ;
+ Text [ english ] = "returns number of months between two dates" ;
+ Text[ english_us ] = "Determines the number of months between two dates";
+ Text[ portuguese ] = "devolve o número de meses entre duas datas";
+ Text[ russian ] = "Îïðåäåëÿåò ÷èñëî ìåñÿöåâ ìåæäó äâóìÿ äàòàìè";
+ Text[ dutch ] = "Bepaalt het aantal maanden tussen twee datums";
+ Text[ french ] = "Renvoie la différence en mois de deux dates";
+ Text[ spanish ] = "Determina la diferencia en meses entre dos fechas";
+ Text[ italian ] = "Restituisce la differenza mensile di due date";
+ Text[ danish ] = "Bestemmer månedsdifferensen mellem to datoer";
+ Text[ swedish ] = "Bestämmer månadsdifferensen mellan två datum";
+ Text[ polish ] = "Oblicza liczbê miesiêcy zawartych miêdzy dwoma datami";
+ Text[ portuguese_brazilian ] = "returns number of months between two dates";
+ Text[ japanese ] = "2‚‚̓ú•t‚ÌŠÔ‚ÌŒŽ”‚ð•Ô‚µ‚Ü‚·";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÊý¾ÝµÄÔ²î¶î";
+ Text[ chinese_traditional ] = "­pºâ¨â­Ó¼Æ¾Úªº¤ë®tÃB";
+ Text[ arabic ] = "íÍÏÏ ÚÏÏ ÇáÃÔåÑ ÇáæÇÞÚÉ Èíä ÊÇÑíÎíä";
+ Text[ dutch ] = "Bepaalt het aantal maanden tussen twee datums";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÊý¾ÝµÄÔ²î¶î";
+ Text[ greek ] = "Ïñßæåé ôçí äéáöïñÜ äýï çìåñïìçíéþí óå ìÞíåò";
+ Text[ korean ] = "µÎ ÀÏÀÚ »çÀÌÀÇ °³¿ù¼ö¸¦ °áÁ¤";
+ Text[ turkish ] = "Ýki veri arasýndaki ay farkýný belirler";
+ };
+ String DFA_MONTHS_PAR1_DESC // Description of Parameter 1
+ {
+ Text = "Jüngeres Datum für die Monatsdifferenz" ;
+ Text [ english ] = "the older date for the month difference" ;
+ Text[ english_us ] = "The end date for calculating the difference in months";
+ Text[ portuguese ] = "Data mais recente para a diferença em meses";
+ Text[ russian ] = "Êîíå÷íàÿ äàòà äëÿ îïðåäåëåíèÿ ðàçíèöû â êîëè÷åñòâå ìåñÿöåâ.";
+ Text[ dutch ] = "de vroegere datum";
+ Text[ french ] = "Date la plus récente pour la différence en mois";
+ Text[ spanish ] = "Fecha más reciente para la diferencia mensual";
+ Text[ italian ] = "La data più recente per la differenza mensile";
+ Text[ danish ] = "Yngre dato for månedsdifferensen";
+ Text[ swedish ] = "Yngre datum för månadsdifferensen";
+ Text[ polish ] = "Wczeœniejsza data w obliczaniu ró¿nicy miesiêcy";
+ Text[ portuguese_brazilian ] = "the older date for the month difference";
+ Text[ japanese ] = "ŒŽ”ŒvŽZ‚Ì‚½‚߂̉‚ß‚Ì“ú•t";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÔ²î¶îµÄ½ÏÔçµÄÈÕÆÚ";
+ Text[ chinese_traditional ] = "ÄÝ©ó¤@­Ó¤ë®tÃBªº¸û¦­ªº¤é´Á";
+ Text[ arabic ] = "ÊÇÑíÎ ÃÍÏË ááÝÇÑÞ ÈÇáÃÔåÑ";
+ Text[ dutch ] = "de vroegere datum";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÔ²î¶îµÄ½ÏÔçµÄÈÕÆÚ";
+ Text[ greek ] = "ÔåëéêÞ çìåñïìçíßá ãéá ôïí õðïëïãéóìü ôçò äéáöïñÜò óå ìÞíåò";
+ Text[ korean ] = "¿ù »çÀÌ¿¡ Â÷À̸¦ °è»êÇϱâ À§ÇÑ ¸¶Áö¸· ³¯";
+ Text[ turkish ] = "Ay farký hesabý için daha geç olan tarih";
+ };
+ String DFA_MONTHS_PAR2_DESC // Description of Parameter 2
+ {
+ Text = "Älteres Datum für die Monatsdifferenz" ;
+ Text [ english ] = "the younger date for the month difference" ;
+ Text[ english_us ] = "The start date for calculating the difference in months";
+ Text[ portuguese ] = "Data mais antiga para a diferença em meses";
+ Text[ russian ] = "Íà÷àëüíàÿ äàòà äëÿ îïðåäåëåíèÿ ðàçíèöû â êîëè÷åñòâå ìåñÿöåâ.";
+ Text[ dutch ] = "Latere datum";
+ Text[ french ] = "Date la plus ancienne pour la différence en mois";
+ Text[ spanish ] = "Fecha más antigua para la diferencia mensual";
+ Text[ italian ] = "La data meno recente per la differenza mensile";
+ Text[ danish ] = "Ældre dato for månedsdifferensen";
+ Text[ swedish ] = "Äldre datum för månadsdifferensen";
+ Text[ polish ] = "PóŸniejsza data w obliczaniu ró¿nicy miesiêcy";
+ Text[ portuguese_brazilian ] = "the younger date for the month difference";
+ Text[ japanese ] = "ŒŽ”ŒvŽZ‚Ì‚½‚ß‚ÌŒã‚Ì“ú•t";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÔ²î¶îµÄ½ÏÍíµÄÈÕÆÚ";
+ Text[ chinese_traditional ] = "ÄÝ©ó¤@­Ó¤ë®tÃBªº¸û±ßªº¤é´Á";
+ Text[ arabic ] = "ÊÇÑíÎ ÃÞÏã ááÝÇÑÞ ÈÇáÃÔåÑ";
+ Text[ dutch ] = "Latere datum";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÔ²î¶îµÄ½ÏÍíµÄÈÕÆÚ";
+ Text[ greek ] = "Áñ÷éêÞ çìåñïìçíßá ãéá ôïí õðïëïãéóìü ôçò äéáöïñÜò óå ìÞíåò";
+ Text[ korean ] = "¿ù Â÷À̸¦ °è»êÇϱâ À§ÇÑ ½ÃÀÛÀÏ";
+ Text[ turkish ] = "Ay farký hesabý için daha erken olan tarih";
+ };
+ String DFA_MONTHS_PAR3_DESC // Description of Parameter 2
+ {
+ Text = "Art der Differenzbildung Art=0 heißt Intervall, Art=1 heißt in Kalendermonaten" ;
+ Text [ english ] = "Mode=0 means month interval, Mode=1 means by month of year" ;
+ Text[ english_us ] = "Type of difference calculation: Mode = 0 means interval, mode = 1 means in calendar months";
+ Text[ portuguese ] = "Modo de formação da diferença: modo=0 para intervalos; modo=1 para meses.";
+ Text[ russian ] = "Ñïîñîá âû÷èñëåíèé: ñïîñîá=0 îçíà÷àåò èíòåðâàë, ñïîñîá=1 îçíà÷àåò èíòåðâàë â êàëåíäàðíûõ ìåñÿöàõ.";
+ Text[ dutch ] = "Modus=0 betekent aantal, Modus=1 betekent in kalendermaanden";
+ Text[ french ] = "Mode de calcul de la différence Mode=0 pour l'intervalle, Mode=1 pour les mois de l'année";
+ Text[ spanish ] = "Tipo de formación de diferencia: Tipo=0 significa intervalo; tipo=1, meses del año";
+ Text[ italian ] = "Modo di calcolo della differenza Modo=0 per l'intervallo, Modo=1 per i mesi dell'anno";
+ Text[ danish ] = "Differensdannelsestype Type=O betyder interval, Type=1 betyder i kalendermåneder";
+ Text[ swedish ] = "Typ av differensbildning typ=0 heter intervall, typ=1 heter i kalendermånaden";
+ Text[ polish ] = "Obliczanie ró¿nicy. 0 oznacza przedzia³ miesiêczny, 1 - miesi¹ce kalendarzowe";
+ Text[ portuguese_brazilian ] = "Mode=0 means month interval, Mode=1 means by month of year";
+ Text[ japanese ] = "ŒvŽZ•û–@:Ó°ÄÞ=0 ‚͈ê’è’PˆÊAÓ°ÄÞ=1 ‚ͶÚÝÀÞ°‚ÌŒŽ‚ÅŒvŽZ‚³‚ê‚Ü‚·B";
+ Text[ chinese_simplified ] = "µÃ³ö²î¶î Mode=0 ±íʾ¼ä¸ô£¬ Mode=1 ±íʾһÄêµÄÔÂÊý";
+ Text[ chinese_traditional ] = "±o¥X®tÃB Mode=0 ªí¥Ü¶¡¹j¡A Mode=1 ªí¥Ü¤@¦~ªº¤ë¼Æ";
+ Text[ arabic ] = "ØÑíÞÉ ÍÓÇÈ ÇáÝÑÞ: mode=0 ÊÚäí ÇáÝÇÕá ÇáÒãäí¡ mode=1 ÊÚäí Ýí ÃÔåÑ ÇáÊÞæíã";
+ Text[ dutch ] = "Modus=0 betekent aantal, Modus=1 betekent in kalendermaanden";
+ Text[ chinese_simplified ] = "µÃ³ö²î¶î Mode=0 ±íʾ¼ä¸ô£¬ Mode=1 ±íʾһÄêµÄÔÂÊý";
+ Text[ greek ] = "Ôñüðïò õðïëïãéóìïý äéáöïñÜò: Ôñüðïò=0 óçìáßíåé äéÜóôçìá, Ôñüðïò=1 óçìáßíåé çìåñïëïãéáêïß ìÞíåò";
+ Text[ korean ] = "Â÷ÀÌ °è»ê ÇüÅÂ: ¸ðµå=0 Àº °£°ÝÀ» ÀǹÌÇÏ°í, ¸ðµå=1 ÀÏÁ¤ÀÌ ÀÖ´Â ¿ùÀ» ÀǹÌ";
+ Text[ turkish ] = "Fark hesabý türü, tür=0 aralýk, tür=1 ise takvim ayý cinsinden anlamýna gelir";
+ };
+
+/*-=======================================================================*/
+
+ String DFA_YEARS_NAME // Name
+ {
+ Text = "Jahre" ;
+ Text [ english ] = "Years" ;
+ Text[ english_us ] = "Years";
+ Text[ portuguese ] = "Anos";
+ Text[ russian ] = "Ãîäû";
+ Text[ dutch ] = "Jaren";
+ Text[ french ] = "Années";
+ Text[ spanish ] = "Años";
+ Text[ italian ] = "Anni";
+ Text[ danish ] = "År";
+ Text[ swedish ] = "År";
+ Text[ polish ] = "Lata";
+ Text[ portuguese_brazilian ] = "Years";
+ Text[ japanese ] = "”N";
+ Text[ chinese_simplified ] = "Years";
+ Text[ chinese_traditional ] = "Years";
+ Text[ arabic ] = "ÓäæÇÊ";
+ Text[ dutch ] = "Jaren";
+ Text[ chinese_simplified ] = "Years";
+ Text[ greek ] = "×ñüíéá";
+ Text[ korean ] = "³â";
+ Text[ turkish ] = "Yýl";
+ };
+ String DFA_YEARS_DESC // Description
+ {
+ Text = "Bestimmt die Jahresdifferenz zweier Daten" ;
+ Text [ english ] = "returns number of years between two dates" ;
+ Text[ english_us ] = "Returns the difference in years between two dates";
+ Text[ portuguese ] = "devolve o número de anos entre duas datas";
+ Text[ russian ] = "Îïðåäåëÿåò êîëè÷åñòâî ëåò ìåæäó äâóìÿ äàòàìè";
+ Text[ dutch ] = "Bepaalt het aantal jaren tussen twee datums";
+ Text[ french ] = "Renvoie la différence en années de deux dates";
+ Text[ spanish ] = "Determina la diferencia en años de dos fechas";
+ Text[ italian ] = "Restituisce la differenza annuale di due date";
+ Text[ danish ] = "Bestemmer årsdifferensen mellem to datoer";
+ Text[ swedish ] = "Bestämmer årsdifferensen mellan två datum";
+ Text[ polish ] = "Oblicza liczbê lat zawartych miêdzy dwiema datami";
+ Text[ portuguese_brazilian ] = "returns number of years between two dates";
+ Text[ japanese ] = "2‚‚̓ú•t‚ÌŠÔ‚Ì”N”‚ð•Ô‚µ‚Ü‚·";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÊý¾ÝµÄÄê²î¶î";
+ Text[ chinese_traditional ] = "­pºâ¨â­Ó¼Æ¾Úªº¦~®tÃB";
+ Text[ arabic ] = "íÍÏÏ ÚÏÏ ÇáÓäæÇÊ ÇáæÇÞÚÉ Èíä ÊÇÑíÎíä";
+ Text[ dutch ] = "Bepaalt het aantal jaren tussen twee datums";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÊý¾ÝµÄÄê²î¶î";
+ Text[ greek ] = "Ïñßæåé ôçí äéáöïñÜ äýï çìåñïìçíéþí óå Ýôç";
+ Text[ korean ] = "µÎ ÀÏÀÚ »çÀÌÀÇ ³â Â÷ÀÌ";
+ Text[ turkish ] = "Ýki veri arasýndaki yýl farkýný bulur";
+ };
+ String DFA_YEARS_PAR1_DESC // Description of Parameter 1
+ {
+ Text = "Jüngeres Datum für die Jahresdifferenz" ;
+ Text [ english ] = "the older date for the year difference" ;
+ Text[ english_us ] = "The end date for calculating the difference in years";
+ Text[ portuguese ] = "Data mais recente para a diferença em anos";
+ Text[ russian ] = "Êîíå÷íàÿ äàòà äëÿ îïðåäåëåíèÿ ðàçíèöû â êîëè÷åñòâå ëåò.";
+ Text[ dutch ] = "De vroegere datum";
+ Text[ french ] = "Date la plus récente pour la différence en années";
+ Text[ spanish ] = "Fecha más reciente para la diferencia en años";
+ Text[ italian ] = "La data meno recente per la differenza annuale";
+ Text[ danish ] = "Yngre dato for årsdifferensen";
+ Text[ swedish ] = "Yngre datum för årsdifferensen";
+ Text[ polish ] = "Wczeœniejsza data w obliczaniu ró¿nicy lat";
+ Text[ portuguese_brazilian ] = "the older date for the year difference";
+ Text[ japanese ] = "”N”ŒvŽZ‚Ì‚½‚߂̉‚ß‚Ì“ú•t";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÄê²î¶îµÄ½ÏÔçµÄÈÕÆÚ";
+ Text[ chinese_traditional ] = "ÄÝ©ó¤@­Ó¦~®tÃBªº¸û¦­ªº¤é´Á";
+ Text[ arabic ] = "ÊÇÑíÎ ÃÍÏË ááÝÇÑÞ ÈÇáÓäæÇÊ";
+ Text[ dutch ] = "De vroegere datum";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÄê²î¶îµÄ½ÏÔçµÄÈÕÆÚ";
+ Text[ greek ] = "ÔåëéêÞ çìåñïìçíßá ãéá ôïí õðïëïãéóìü ôçò äéáöïñÜò óå Ýôç";
+ Text[ korean ] = "³â »çÀÌ¿¡ Â÷À̸¦ °è»êÇϱâ À§ÇÑ ¸¶Áö¸· ³¯";
+ Text[ turkish ] = "Yýl farký hesabý için daha geç olan tarih";
+ };
+ String DFA_YEARS_PAR2_DESC // Description of Parameter 2
+ {
+ Text = "Älteres Datum für die Jahresdifferenz" ;
+ Text [ english ] = "the younger date for the year difference" ;
+ Text[ english_us ] = "The start date for calculating the difference in years";
+ Text[ portuguese ] = "Data mais antiga para a diferença em anos";
+ Text[ russian ] = "Íà÷àëüíàÿ äàòà äëÿ îïðåäåëåíèÿ ðàçíèöû â êîëè÷åñòâå ëåò.";
+ Text[ dutch ] = "De latere datum";
+ Text[ french ] = "Date la plus ancienne pour la différence en années";
+ Text[ spanish ] = "Fecha más antigua para la diferencia en años";
+ Text[ italian ] = "La data meno recente per la differenza annuale";
+ Text[ danish ] = "Ældre dato for årsdifferensen";
+ Text[ swedish ] = "Äldre datum för årsdifferensen";
+ Text[ polish ] = "PóŸniejsza data w obliczaniu ró¿nicy lat";
+ Text[ portuguese_brazilian ] = "the younger date for the year difference";
+ Text[ japanese ] = "”N”ŒvŽZ‚Ì‚½‚ß‚ÌŒã‚Ì“ú•t";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÄê²î¶îµÄ½ÏÍíµÄÈÕÆÚ";
+ Text[ chinese_traditional ] = "ÄÝ©ó¤@­Ó¦~®tÃBªº¸û±ßªº¤é´Á";
+ Text[ arabic ] = "ÊÇÑíÎ ÃÞÏã ááÝÇÑÞ ÈÇáÓäæÇÊ";
+ Text[ dutch ] = "De latere datum";
+ Text[ chinese_simplified ] = "ÊôÓÚÒ»¸öÄê²î¶îµÄ½ÏÍíµÄÈÕÆÚ";
+ Text[ greek ] = "Áñ÷éêÞ çìåñïìçíßá ãéá ôïí õðïëïãéóìü ôçò äéáöïñÜò óå Ýôç";
+ Text[ korean ] = "³â Â÷À̸¦ °è»êÇϱâ À§ÇÑ ½ÃÀÛÀÏ";
+ Text[ turkish ] = "Yýl farký hesabý için daha erken olan tarih";
+ };
+ String DFA_YEARS_PAR3_DESC // Description of Parameter 2
+ {
+ Text = "Art der Differenzbildung Art=0 heißt Intervall, Art=1 heißt in Kalenderjahren" ;
+ Text [ english ] = "Mode=0 means year interval, Mode=1 means by calendar years" ;
+ Text[ english_us ] = "Type of difference calculation: Mode=0 means interval, mode=1 means in calendar years.";
+ Text[ portuguese ] = "Modo de formação da diferença: modo=0 para intervalos; modo=1 para anos .";
+ Text[ russian ] = "Ñïîñîá âû÷èñëåíèé: ñïîñîá=0 îçíà÷àåò èíòåðâàë, ñïîñîá=1 îçíà÷àåò èíòåðâàë â êàëåíäàðíûõ ãîäàõ";
+ Text[ dutch ] = "Modus=0 betekent aantal, modus=1 betekent in kalenderjaren";
+ Text[ french ] = "Mode de calcul de la différence Mode=0 pour l'intervalle, Mode=1 pour les années";
+ Text[ spanish ] = "Tipo de formación de diferencia: Tipo=0 significa intervalo; tipo=1, años naturales";
+ Text[ italian ] = "Modo di calcolo della differenza Modo=0 per l'intervallo, Modo=1 per l'anno";
+ Text[ danish ] = "Differensdannelsestype Type=O betyder interval, Type=1 betyder i kalenderår";
+ Text[ swedish ] = "Typ av differensbildning typ=0 heter intervall, typ=1 heter i kalenderåren";
+ Text[ polish ] = "Obliczanie ró¿nicy. 0 oznacza przedzia³ lat, 1 - lata kalendarzowe";
+ Text[ portuguese_brazilian ] = "Mode=0 means year interval, Mode=1 means by calendar years";
+ Text[ japanese ] = "ŒvŽZ•û–@:Ó°ÄÞ=0 ‚͈ê’è’PˆÊAÓ°ÄÞ=1 ‚ͶÚÝÀÞ°‚Ì”N‚ÅŒvŽZ‚³‚ê‚Ü‚·B";
+ Text[ chinese_simplified ] = "µÃ³ö²î¶îµÄÀàÐÍ Mode=0 ±íʾÄê¼ä¸ô£¬ Mode=1 ±íʾÐÇÆÚÄêÊý";
+ Text[ chinese_traditional ] = "±o¥X®tÃBªºÃþ«¬ Mode=0 ªí¥Ü¦~¶¡¹j¡A Mode=1 ªí¥Ü¬P´Á¦~¼Æ";
+ Text[ arabic ] = "ØÑíÞÉ ÍÓÇÈ ÇáÝÑÞ: mode=0 ÊÚäí ÝÇÕá Òãäí¡ mode=1 ÊÚäí Ýí ÓäæÇÊ ÇáÊÞæíã";
+ Text[ dutch ] = "Modus=0 betekent aantal, modus=1 betekent in kalenderjaren";
+ Text[ chinese_simplified ] = "µÃ³ö²î¶îµÄÀàÐÍ Mode=0 ±íʾÄê¼ä¸ô£¬ Mode=1 ±íʾÐÇÆÚÄêÊý";
+ Text[ greek ] = "Ôñüðïò ôïõ õðïëïãéóìïý ôçò äéáöïñÜò: Ôñüðïò=0 óçìáßíåé äéÜóôçìá, Ôñüðïò=1 óçìáßíåé óå çìåñïëïãéáêÜ Ýôç";
+ Text[ korean ] = "Â÷ÀÌ °è»ê ÇüÅÂ: ¸ðµå=0 Àº °£°ÝÀ» ÀǹÌÇÏ°í, ¸ðµå=1 ÀÏÁ¤ÀÌ ÀÖ´Â ³âÀ» ÀǹÌ.";
+ Text[ turkish ] = "Fark hesabý türü, tür=0 aralýk, tür=1 ise takvim yýlý cinsinden anlamýna gelir";
+ };
+
+/*-=======================================================================*/
+
+ String DFA_ISLEAPYEAR_NAME // Name
+ {
+ Text = "IstSchaltJahr" ;
+ Text [ english ] = "IsLeapYear" ;
+ Text[ english_us ] = "IsLeapYear";
+ Text[ portuguese ] = "ÉAnoBissexto";
+ Text[ russian ] = "Âûñîêîñíûé ãîä";
+ Text[ dutch ] = "IsSchrikkelJaar";
+ Text[ french ] = "EstAnnéeBissextile";
+ Text[ spanish ] = "EsAñoBisiesto";
+ Text[ italian ] = "AnnoBisestile";
+ Text[ danish ] = "ErSkudÅr";
+ Text[ swedish ] = "ÄrSkottår";
+ Text[ polish ] = "Rok przestêpny";
+ Text[ portuguese_brazilian ] = "IsLeapYear";
+ Text[ japanese ] = "IsLeapYear";
+ Text[ chinese_simplified ] = "IsLeapYear";
+ Text[ chinese_traditional ] = "IsLeapYear";
+ Text[ arabic ] = "Ãæá ÓäÉ ßÈíÓÉ";
+ Text[ dutch ] = "IsSchrikkelJaar";
+ Text[ chinese_simplified ] = "IsLeapYear";
+ Text[ greek ] = "ÅßíáéÄßóåêôï¸ôïò";
+ Text[ korean ] = "°Ç³Ê ¶Ú ³â";
+ Text[ turkish ] = "Artýkyýldýr";
+ };
+ String DFA_ISLEAPYEAR_DESC // Description
+ {
+ Text = "Liefert 1(WAHR) wenn das Jahr ein Schaltjahr ist sonst 0(FALSCH)" ;
+ Text [ english ] = "returns 1 if the date is in a LeapYear, 0 otherwise" ;
+ Text[ english_us ] = "Returns 1 (TRUE) if a leap year is used, otherwise 0 (FALSE) is returned";
+ Text[ portuguese ] = "devolve 1(VERDADEIRO) se o ano for um ano bissexto, caso contrário 0 (FALSO)";
+ Text[ russian ] = "Âîçâðàùàåò çíà÷åíèå 1 (ÈÑÒÈÍÀ), åñëè ãîä ÿâëÿåòñÿ âûñîêîñíûì, â ïðîòèâíîì ñëó÷àå âîçâðàùàåò çíà÷åíèå 0 (ËÎÆÜ)";
+ Text[ dutch ] = "Geeft als resultaat 1(WAAR) als het jaar een schrikkeljaar is, andrs 0(ONWAAR)";
+ Text[ french ] = "Renvoie 1 (VRAI) si l'année est une année bissextile, sinon 0 (FAUX)";
+ Text[ spanish ] = "Devuelve 1(VERDADERO) si el año es bisiesto; si no, 0(FALSO)";
+ Text[ italian ] = "Restituisce 1(VERO) se l'anno è bisestile, altrimenti 0(FALSO)";
+ Text[ danish ] = "Returnerer 1(SAND) hvis året er et skudår ellers 0(FALSK)";
+ Text[ swedish ] = "Returnerar 1(SANT) om året är ett skottår annars 0(FALSKT)";
+ Text[ polish ] = "Podaje 1 (PRAWDA), jeœli rok jest rokiem przestêpnym, w innym wypadku 0 (FA£SZ).";
+ Text[ portuguese_brazilian ] = "returns 1 if the date is in a LeapYear, 0 otherwise";
+ Text[ japanese ] = "‚»‚Ì”N‚ª‰[”N‚Å‚ ‚ê‚Î 1(TRUE)A‚»‚¤‚Å‚È‚¯‚ê‚Î0(FALSE)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_simplified ] = "Èç¹ûÊÇÈòÄê¾Í·´À¡ 1(TRUE) £¬·ñÔò¾Í·´À¡ 0 (FALSE)";
+ Text[ chinese_traditional ] = "¦pªG¬O¶|¦~´N¶Ç¦^ 1(TRUE)¡A§_«h´N¶Ç¦^ 0 (FALSE)";
+ Text[ arabic ] = "íÞÏã 1 (ÕÍíÍ) ÚäÏãÇ Êßæä ÇáÓäÉ ßÈíÓÉ¡ ÚÏÇ Ðáß 0 (ÎØÃ)";
+ Text[ dutch ] = "Geeft als resultaat 1(WAAR) als het jaar een schrikkeljaar is, andrs 0(ONWAAR)";
+ Text[ chinese_simplified ] = "Èç¹ûÊÇÈòÄê¾Í·´À¡ 1(TRUE) £¬·ñÔò¾Í·´À¡ 0 (FALSE)";
+ Text[ greek ] = "Áðïäßäåé 1 (ÁËÇÈÇÓ) üôáí ðñüêåéôáé ãéá äßóåêôï Ýôïò, áëëéþò 0 (ØÅÕÄÇÓ)";
+ Text[ korean ] = "°Ç³Ê ¶Ú ³âµµ°¡ »ç¿ëµÇ¾úÀ¸¸é 1À» ¹Ýȯ(Âü), ¾Æ´Ï¸é 0À» ¹Ýȯ(°ÅÁþ)";
+ Text[ turkish ] = "Yýl, artýkyýl ise 1(DOÐRU) aksi halde 0(YANLIÞ) verir";
+ };
+
+/*-=======================================================================*/
+
+ String DFA_DAYSINMONTH_NAME // Name
+ {
+ Text = "TageImMonat" ;
+ Text [ english ] = "DaysInMonth" ;
+ Text[ english_us ] = "DaysInMonth";
+ Text[ portuguese ] = "DiasNoMês";
+ Text[ russian ] = "Äíåé â ìåñÿöå";
+ Text[ dutch ] = "DagenInMaand";
+ Text[ french ] = "JoursDansMois";
+ Text[ spanish ] = "DíasEnMes";
+ Text[ italian ] = "GiorniMese";
+ Text[ danish ] = "DageMåned";
+ Text[ swedish ] = "DagarIMånaden";
+ Text[ polish ] = "Dni w miesi¹cu";
+ Text[ portuguese_brazilian ] = "DaysInMonth";
+ Text[ japanese ] = "DaysInMonth";
+ Text[ chinese_simplified ] = "DaysInMonth";
+ Text[ chinese_traditional ] = "DaysInMonth";
+ Text[ arabic ] = "íæãÇð Ýí ÇáÔåÑ";
+ Text[ dutch ] = "DagenInMaand";
+ Text[ chinese_simplified ] = "DaysInMonth";
+ Text[ greek ] = "ÇìÝñåòÁíÜÌÞíá";
+ Text[ korean ] = "¿ùÀÇ Àϼö";
+ Text[ turkish ] = "AydakiGünSayýsý";
+ };
+ String DFA_DAYSINMONTH_DESC // Description
+ {
+ Text = "Bestimmt die Anzahl an Tagen im Monat zu einem Datum" ;
+ Text [ english ] = "returns the number of days in the month for a date" ;
+ Text[ english_us ] = "Returns the number of days in the month in relation to the date entered";
+ Text[ portuguese ] = "devolve o número de dias no mês para uma determinada data";
+ Text[ russian ] = "Îïðåäåëÿåò êîëè÷åñòâî äíåé â ìåñÿöå äëÿ óêàçàííîé äàòû";
+ Text[ dutch ] = "Geeft als resultaat het aantal dagen in een maand bij een bepaalde datum";
+ Text[ french ] = "Renvoie le nombre de jours dans le mois pour une date";
+ Text[ spanish ] = "Determina la cantidad de días en un mes para una fecha";
+ Text[ italian ] = "Restituisce il numero dei giorni del mese per una determinata data";
+ Text[ danish ] = "Bestemmer antallet af dage i en måned til en dato";
+ Text[ swedish ] = "Bestämmer antalet dagar i månaden till ett datum";
+ Text[ polish ] = "Oblicza liczbê dni w miesi¹cu do podanej daty";
+ Text[ portuguese_brazilian ] = "returns the number of days in the month for a date";
+ Text[ japanese ] = "‚»‚Ì“ú•t‚ª‚»‚ÌŒŽ‚̉½“ú–Ú‚É‚ ‚½‚é‚©‚ð•Ô‚µ‚Ü‚·";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊôÓÚ¸ø¶¨ÈÕÆÚµÄÔµÄÌìÊý";
+ Text[ chinese_traditional ] = "­pºâ¤@­ÓÄݩ󵹩w¤é´Áªº¤ëªº¤Ñ¼Æ";
+ Text[ arabic ] = "íÍÏÏ ÚÏÏ ÇáÃíÇã Ýí ÇáÔåÑ ÍÊì ÊÇÑíÎ ãÇ";
+ Text[ dutch ] = "Geeft als resultaat het aantal dagen in een maand bij een bepaalde datum";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊôÓÚ¸ø¶¨ÈÕÆÚµÄÔµÄÌìÊý";
+ Text[ greek ] = "Ïñßæåé ãéá ìéá çìåñïìçíßá ôïí áñéèìü çìåñþí áíÜ ìÞíá";
+ Text[ korean ] = "ÀÔ·ÂµÈ ³¯Â¥¿¡ °ü°èµÇ´Â ´ÞÀÇ Àϼö¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Girilen tarihe göre ayýn gün sayýsýný bulur";
+ };
+
+/*-=======================================================================*/
+
+ String DFA_DAYSINYEAR_NAME // Name
+ {
+ Text = "TageImJahr" ;
+ Text [ english ] = "DaysInYear" ;
+ Text[ english_us ] = "DaysInYear";
+ Text[ portuguese ] = "DiasNoAno";
+ Text[ russian ] = "Äíåé â ãîäó";
+ Text[ dutch ] = "DagenInJaar";
+ Text[ french ] = "JoursDansAnnée";
+ Text[ spanish ] = "DíasEnAño";
+ Text[ italian ] = "GiorniAnno";
+ Text[ danish ] = "DageÅr";
+ Text[ swedish ] = "DagarPåÅret";
+ Text[ polish ] = "Dni w roku";
+ Text[ portuguese_brazilian ] = "DaysInYear";
+ Text[ japanese ] = "DaysInYear";
+ Text[ chinese_simplified ] = "DaysInYear";
+ Text[ chinese_traditional ] = "DaysInYear";
+ Text[ arabic ] = "íæãÇð Ýí ÇáÓäÉ";
+ Text[ dutch ] = "DagenInJaar";
+ Text[ chinese_simplified ] = "DaysInYear";
+ Text[ greek ] = "ÇìÝñåòÓôï¸ôïò";
+ Text[ korean ] = "³âÀÇ Àϼö";
+ Text[ turkish ] = "YýldakiGünSayýsý";
+ };
+ String DFA_DAYSINYEAR_DESC // Description
+ {
+ Text = "Bestimmt die Anzahl an Tagen im Jahr zu einem Datum" ;
+ Text [ english ] = "returns the number of days in the year for a date" ;
+ Text[ english_us ] = "Returns the number of days in a year in relation to the date entered";
+ Text[ portuguese ] = "devolve o número de dias no ano para uma determinada data";
+ Text[ russian ] = "Îïðåäåëÿåò êîëè÷åñòâî äíåé â ãîäó äëÿ óêàçàííîé äàòû.";
+ Text[ dutch ] = "Geeft als resultaat het aantal dagen in een jaar bij een bepaalde datum";
+ Text[ french ] = "renvoie le nombre de jours dans l'année pour une date";
+ Text[ spanish ] = "Determina la cantidad de días en un año para una fecha";
+ Text[ italian ] = "Restituisce il numero dei giorni dell'anno per una deteminata data";
+ Text[ danish ] = "Bestemmer antallet af dage i et år til en dato";
+ Text[ swedish ] = "Bestämmer antalet dagar i året till ett datum";
+ Text[ polish ] = "Oblicza liczbê dni w roku do podanej daty";
+ Text[ portuguese_brazilian ] = "returns the number of days in the year for a date";
+ Text[ japanese ] = "‚»‚Ì“ú•t‚ª‚»‚Ì”N‚̉½“ú–Ú‚É‚ ‚½‚é‚©‚ð•Ô‚µ‚Ü‚·";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊôÓÚ¸ø¶¨ÈÕÆÚµÄÄêµÄÌìÊý";
+ Text[ chinese_traditional ] = "­pºâ¤@­ÓÄݩ󵹩w¤é´Áªº¦~ªº¤Ñ¼Æ";
+ Text[ arabic ] = "íÍÏÏ ÚÏÏ ÇáÃíÇã Ýí ÇáÓäÉ ÍÊì ÊÇÑíÎ ãÇ";
+ Text[ dutch ] = "Geeft als resultaat het aantal dagen in een jaar bij een bepaalde datum";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊôÓÚ¸ø¶¨ÈÕÆÚµÄÄêµÄÌìÊý";
+ Text[ greek ] = "Ïñßæåé ôïí áñéèìü çìåñþí áíÜ Ýôïò ãéá ìßá çìåñïìçíßá";
+ Text[ korean ] = "ÀÔ·ÂµÈ ³¯Â¥¿¡ °ü°èµÇ´Â ³âÀÇ Àϼö¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Girilen tarihe göre yýlýn gün sayýsýný bulur";
+ };
+
+/*-=======================================================================*/
+
+ String DFA_WEEKSINYEAR_NAME // Name
+ {
+ Text = "WochenImJahr" ;
+ Text [ english ] = "WeeksInYear" ;
+ Text[ english_us ] = "WeeksInYear";
+ Text[ portuguese ] = "SemanasNoAno";
+ Text[ russian ] = "Íåäåëü â ãîäó";
+ Text[ dutch ] = "WekenInJaar";
+ Text[ french ] = "SemainesDansAnnée";
+ Text[ spanish ] = "SemanasEnAño";
+ Text[ italian ] = "SettimaneAnno";
+ Text[ danish ] = "UgerÅr";
+ Text[ swedish ] = "VeckorPerÅr";
+ Text[ polish ] = "Tygodnie w roku";
+ Text[ portuguese_brazilian ] = "WeeksInYear";
+ Text[ japanese ] = "WeeksInYear";
+ Text[ chinese_simplified ] = "WeeksInYear";
+ Text[ chinese_traditional ] = "WeeksInYear";
+ Text[ arabic ] = "ÃÓÈæÚÇð Ýí ÇáÓäÉ";
+ Text[ dutch ] = "WekenInJaar";
+ Text[ chinese_simplified ] = "WeeksInYear";
+ Text[ greek ] = "ÅâäïìÜäåòÁíܸôïò";
+ Text[ korean ] = "³âÀÇ ÁÖ¼ö";
+ Text[ turkish ] = "YýldakiHaftaSayýsý";
+ };
+ String DFA_WEEKSINYEAR_DESC // Description
+ {
+ Text = "Bestimmt die Anzahl an Wochen im Jahr zu einem Datum" ;
+ Text [ english ] = "returns the number of weeks in the year for a date" ;
+ Text[ english_us ] = "Returns the number of weeks in the year in relation to a date";
+ Text[ portuguese ] = "Devolve o número de semanas no ano para uma determinada data";
+ Text[ russian ] = "Îïðåäåëÿåò êîëè÷åñòâî íåäåëü â ãîäó äëÿ óêàçàííîé äàòû.";
+ Text[ dutch ] = "Geeft als resultaat het aantal weken in een jaar bij een datum";
+ Text[ french ] = "Renvoie le nombre de semaines dans l'année pour une date";
+ Text[ spanish ] = "Determina la cantidad de semanas en un año para una fecha";
+ Text[ italian ] = "Restituisce il numero delle settimane dell'anno per una determinata data";
+ Text[ danish ] = "Bestemmer antallet af dage i en måned til en dato";
+ Text[ swedish ] = "Bestämmer antalet veckor i året till ett datum";
+ Text[ polish ] = "Oblicza liczbê tygodni w roku do podanej daty";
+ Text[ portuguese_brazilian ] = "returns the number of weeks in the year for a date";
+ Text[ japanese ] = "‚»‚Ì“ú•t‚ª‚»‚Ì”N‚̉½T–Ú‚É‚ ‚½‚é‚©‚ð•Ô‚µ‚Ü‚·";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊôÓÚ¸ø¶¨ÈÕÆÚµÄÄêµÄÐÇÆÚÊý";
+ Text[ chinese_traditional ] = "­pºâ¤@­ÓÄݩ󵹩w¤é´Áªº¦~ªº¬P´Á¼Æ";
+ Text[ arabic ] = "íÍÏÏ ÚÏÏ ÇáÃÓÇÈíÚ Ýí ÇáÓäÉ ÍÊì ÊÇÑíÎ ãÇ";
+ Text[ dutch ] = "Geeft als resultaat het aantal weken in een jaar bij een datum";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊôÓÚ¸ø¶¨ÈÕÆÚµÄÄêµÄÐÇÆÚÊý";
+ Text[ greek ] = "Ïñßæåé ãéá ìßá çìåñïìçíßá ôïí áñéèìü åâäïìÜäùí áíÜ Ýôïò";
+ Text[ korean ] = "ÀÔ·ÂµÈ ³¯Â¥¿¡ °ü°èµÇ´Â ´ÞÀÇ ÁÖ¼ö¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Girilen tarihe göre yýlýn hafta sayýsýný bulur";
+ };
+
+};
+
+
diff --git a/sc/addin/datefunc/makefile.mk b/sc/addin/datefunc/makefile.mk
new file mode 100644
index 000000000000..cf7b2bf723ca
--- /dev/null
+++ b/sc/addin/datefunc/makefile.mk
@@ -0,0 +1,179 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:46 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=sc
+TARGET=dfa
+LIBTARGET=NO
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+CL2C=+$(PERL) $(MISC)$/cl2c.pl
+CL2CRID=RID_SC_ADDIN_DFA
+CL2CSRC=$(TARGET).src
+
+# --- Files --------------------------------------------------------
+
+CFILES= $(MISC)$/x$(TARGET).c
+
+# no version OBJ
+#VERSIONOBJ=
+
+SLOFILES= \
+ $(SLO)$/x$(TARGET).obj
+
+# ==========================================================================
+
+SHL1TARGET= $(TARGET)$(UPD)$(DLLPOSTFIX)
+SHL1IMPLIB= i$(TARGET)
+SHL1OBJS= $(SLO)$/x$(TARGET).obj
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+.IF "$(GUI)" == "WNT"
+SHL1STDLIBS= gdi32.lib advapi32.lib comdlg32.lib \
+ uuid.lib ole32.lib shell32.lib winspool.lib
+.IF "$(GVER)" == "W40"
+SHL1STDLIBS= $(SHL1STDLIBS) comctl32.lib
+.ENDIF
+.ENDIF
+
+# --- Targets -------------------------------------------------------
+
+ALL: \
+ $(MISC)$/$(TARGET).lst \
+ ALLTAR
+
+.INCLUDE: target.mk
+
+$(MISC)$/x$(TARGET).c: $(TARGET).cl $(CL2CSRC) $(MISC)$/cl2c.pl
+ $(CL2C) $(TARGET).cl $(MISC)$/x$(TARGET).c $(CL2CSRC) $(CL2CRID)
+
+$(MISC)$/cl2c.pl: ..$/util/cl2c.pl
+.IF "$(GUI)"=="UNX"
+ +tr -d "\015" < ..$/util$/cl2c.pl > $@
+ +chmod +rw $@
+.ELSE
+ @+$(COPY) ..$/util$/cl2c.pl $@
+.ENDIF
+
+$(INCCOM)$/xlang.h : $(SOLARINCDIR)$/tools$/lang.hxx
+.IF "$(GUI)"=="OS2"
+ @+$(COPY) $(SOLARINCDIR)$/tools$/lang.hxx $(tmp)$/lang.hxx
+ @+$(COPY) $(tmp)$/lang.hxx $@
+.ELSE
+ @+$(COPY) $(SOLARINCDIR)$/tools$/lang.hxx $@
+.ENDIF
+
+$(SLOFILES) : $(INCCOM)$/xlang.h
+
+$(MISC)$/$(TARGET).lst : \
+ $(MISC)$/x$(TARGET).c \
+ $(INCCOM)$/xlang.h \
+ ..$/inc$/$(TARGET).hrc \
+ ..$/inc$/addin.h
+.IF "$(GUI)"=="WNT"
+ +echo $(<:+"\n":s/ //) > $@
+.ELSE
+ +echo $< > $@
+.ENDIF
+
+# --- Def-File ---
+
+# ------------------------------------------------------------------
+# Windows + OS/2 DEF File
+# ------------------------------------------------------------------
+
+.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
+
+$(MISC)$/$(SHL1TARGET).def: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo LIBRARY $(SHL1TARGET)>$@
+ @echo DESCRIPTION 'DateF StarCalc Addin DLL'>>$@
+.IF "$(GUI)" == "WNT"
+ @echo DATA READ WRITE NONSHARED>>$@
+ @echo EXPORTS>>$@
+.ENDIF
+.IF "$(GUI)" == "OS2"
+ @echo PROTMODE >>$@
+ @echo CODE LOADONCALL >>$@
+ @echo DATA PRELOAD MULTIPLE NONSHARED >>$@
+ @echo EXPORTS >>$@
+.ENDIF
+ @echo GetFunctionCount>>$@
+ @echo GetFunctionData>>$@
+ @echo GetParameterDescription>>$@
+ @echo SetLanguage >>$@
+ @echo ScDate_GetDiffWeeks>>$@
+ @echo ScDate_GetDiffMonths>>$@
+ @echo ScDate_GetDiffYears>>$@
+ @echo ScDate_IsLeapYear>>$@
+ @echo ScDate_DaysInMonth>>$@
+ @echo ScDate_DaysInYear>>$@
+ @echo ScDate_WeeksInYear>>$@
+
+.ENDIF
+
+
diff --git a/sc/addin/inc/addin.h b/sc/addin/inc/addin.h
new file mode 100644
index 000000000000..1866b7e5e60d
--- /dev/null
+++ b/sc/addin/inc/addin.h
@@ -0,0 +1,190 @@
+/*************************************************************************
+ *
+ * $RCSfile: addin.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:46 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _ADDIN_H
+#define _ADDIN_H
+
+#ifndef _SOLAR_H
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#undef NULL
+#define NULL 0
+
+typedef unsigned char BOOL;
+typedef unsigned char BYTE;
+typedef unsigned short USHORT;
+typedef unsigned long ULONG;
+
+#endif
+
+#ifndef SUPD
+/* enable all new interface features */
+#define SUPD 9999
+#endif
+
+/* all character string returns are limited to 255+1 chars */
+#define SO_CHARSTRING_MAX 256
+#define SO_StringCopy( dst, src ) \
+ (strncpy( dst, src, SO_CHARSTRING_MAX ), dst[SO_CHARSTRING_MAX-1] = '\0')
+
+typedef enum
+{
+ PTR_DOUBLE,
+ PTR_STRING,
+ PTR_DOUBLE_ARR,
+ PTR_STRING_ARR,
+ PTR_CELL_ARR,
+ NONE
+} ParamType;
+
+#ifndef WIN
+#ifdef WNT
+#define CALLTYPE __cdecl
+#else
+#define CALLTYPE
+#endif
+#else
+#define PASCAL _pascal
+#define FAR _far
+#define CALLTYPE FAR PASCAL
+#endif
+
+
+#ifdef __cplusplus
+
+extern "C" {
+
+typedef void (CALLTYPE* AdvData)( double& nHandle, void* pData );
+
+extern void CALLTYPE GetFunctionCount( USHORT& nCount );
+
+extern void CALLTYPE GetFunctionData( USHORT& nNo,
+ char* pFuncName,
+ USHORT& nParamCount,
+ ParamType* peType,
+ char* pInternalName );
+
+extern void CALLTYPE IsAsync( USHORT& nNo, ParamType* peType );
+
+extern void CALLTYPE Advice( USHORT& nNo, AdvData& pfCallback );
+
+extern void CALLTYPE Unadvice( double& nHandle );
+
+
+#if (SUPD>=398)
+/* new in StarOffice 5.0 */
+
+extern void CALLTYPE GetParameterDescription( USHORT& nNo, USHORT& nParam,
+char* pName, char* pDesc );
+
+#endif
+
+#if (SUPD>=506)
+/* new in StarOffice 5.1 */
+
+extern void CALLTYPE SetLanguage( USHORT& nLanguage );
+
+#endif
+
+};
+
+#else
+
+typedef void (CALLTYPE* AdvData)( double* nHandle, void* pData );
+
+extern void CALLTYPE GetFunctionCount( USHORT * nCount );
+
+extern void CALLTYPE GetFunctionData( USHORT * nNo,
+ char * pFuncName,
+ USHORT * nParamCount,
+ ParamType * peType,
+ char * pInternalName );
+
+extern void CALLTYPE IsAsync( USHORT * nNo, ParamType * peType );
+
+extern void CALLTYPE Advice( USHORT * nNo, AdvData * pfCallback );
+
+extern void CALLTYPE Unadvice( double * nHandle );
+
+#if (SUPD>=398)
+/* new in StarOffice 5.0 */
+
+extern void CALLTYPE GetParameterDescription( USHORT* nNo, USHORT* nParam,
+ char* pName, char* pDesc );
+
+#endif
+
+#if (SUPD>=506)
+/* new in StarOffice 5.1 */
+
+extern void CALLTYPE SetLanguage( USHORT* nLanguage );
+
+#endif
+
+#endif
+
+#endif
diff --git a/sc/addin/inc/dfa.hrc b/sc/addin/inc/dfa.hrc
new file mode 100644
index 000000000000..0201bce9be19
--- /dev/null
+++ b/sc/addin/inc/dfa.hrc
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * $RCSfile: dfa.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:46 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_ADDIN_DFA_HRC
+#define SC_ADDIN_DFA_HRC
+
+#define DFA_PAR_DATE1_NAME 1 /* Name of Date1 Parameter */
+#define DFA_PAR_DATE2_NAME 2 /* Name of Date2 Parameter */
+#define DFA_PAR_MODE_NAME 3 /* Name of Mode Parameter */
+#define DFA_PAR_DATE_NAME 4 /* Name of Date Parameter */
+#define DFA_PAR_DATE_DESC 5 /* Description of Date Parameter 1 */
+
+#define DFA_WEEK_NAME 6 /* Name */
+#define DFA_WEEK_DESC 7 /* Description */
+#define DFA_WEEK_PAR1_DESC 8 /* Description of Parameter 1 */
+#define DFA_WEEK_PAR2_DESC 9 /* Description of Parameter 2 */
+#define DFA_WEEK_PAR3_DESC 10 /* Description of Parameter 3 */
+#define DFA_MONTHS_NAME 11 /* Name */
+#define DFA_MONTHS_DESC 12 /* Description */
+#define DFA_MONTHS_PAR1_DESC 13 /* Description of Parameter 1 */
+#define DFA_MONTHS_PAR2_DESC 14 /* Description of Parameter 2 */
+#define DFA_MONTHS_PAR3_DESC 15 /* Description of Parameter 2 */
+#define DFA_YEARS_NAME 16 /* Name */
+#define DFA_YEARS_DESC 17 /* Description */
+#define DFA_YEARS_PAR1_DESC 18 /* Description of Parameter 1 */
+#define DFA_YEARS_PAR2_DESC 19 /* Description of Parameter 2 */
+#define DFA_YEARS_PAR3_DESC 20 /* Description of Parameter 2 */
+#define DFA_ISLEAPYEAR_NAME 21 /* Name */
+#define DFA_ISLEAPYEAR_DESC 22 /* Description */
+#define DFA_DAYSINMONTH_NAME 23 /* Name */
+#define DFA_DAYSINMONTH_DESC 24 /* Description */
+#define DFA_DAYSINYEAR_NAME 25 /* Name */
+#define DFA_DAYSINYEAR_DESC 26 /* Description */
+#define DFA_WEEKSINYEAR_NAME 27 /* Name */
+#define DFA_WEEKSINYEAR_DESC 28 /* Description */
+
+#endif
+
diff --git a/sc/addin/inc/rot13.hrc b/sc/addin/inc/rot13.hrc
new file mode 100644
index 000000000000..d3f045692520
--- /dev/null
+++ b/sc/addin/inc/rot13.hrc
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * $RCSfile: rot13.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:46 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_ADDIN_ROT13_HRC
+#define SC_ADDIN_ROT13_HRC
+
+#define ROT13_DESC 1
+#define ROT13_PAR1_NAME 2
+#define ROT13_PAR1_DESC 3
+
+#endif
+
diff --git a/sc/addin/rot13/makefile.mk b/sc/addin/rot13/makefile.mk
new file mode 100644
index 000000000000..334e94cbb2d0
--- /dev/null
+++ b/sc/addin/rot13/makefile.mk
@@ -0,0 +1,171 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:46 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=sc
+TARGET=rot
+LIBTARGET=NO
+
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+CL2C=+$(PERL) $(MISC)$/cl2c.pl
+CL2CRID=RID_SC_ADDIN_ROT13
+CL2CSRC=$(TARGET)13.src
+
+# --- Files --------------------------------------------------------
+
+CFILES= $(MISC)$/x$(TARGET).c
+
+SLOFILES= \
+ $(SLO)$/x$(TARGET).obj
+
+# ==========================================================================
+
+SHL1TARGET= rot$(UPD)$(DLLPOSTFIX)
+SHL1IMPLIB= irot
+SHL1OBJS= $(SLO)$/x$(TARGET).obj
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+.IF "$(GUI)" == "WNT"
+SHL1STDLIBS= gdi32.lib advapi32.lib comdlg32.lib \
+ uuid.lib ole32.lib shell32.lib winspool.lib
+.IF "$(GVER)" == "W40"
+SHL1STDLIBS= $(SHL1STDLIBS) comctl32.lib
+.ENDIF
+.ENDIF
+
+# --- Targets -------------------------------------------------------
+
+ALL: \
+ $(MISC)$/rot.lst \
+ ALLTAR
+
+.INCLUDE: target.mk
+
+$(MISC)$/x$(TARGET).c: $(TARGET)13.cl $(CL2CSRC) $(MISC)$/cl2c.pl
+ $(CL2C) $(TARGET)13.cl $(MISC)$/x$(TARGET).c $(CL2CSRC) $(CL2CRID)
+
+$(MISC)$/cl2c.pl: ..$/util$/cl2c.pl
+.IF "$(GUI)"=="UNX"
+ +tr -d "\015" < ..$/util$/cl2c.pl > $@
+ +chmod +rw $@
+.ELSE
+ @+$(COPY) ..$/util$/cl2c.pl $@
+.ENDIF
+
+$(INCCOM)$/xlang.h : $(SOLARINCDIR)$/tools$/lang.hxx
+.IF "$(GUI)"=="OS2"
+ @+$(COPY) $(SOLARINCDIR)$/tools$/lang.hxx $(tmp)$/lang.hxx
+ @+$(COPY) $(tmp)$/lang.hxx $@
+.ELSE
+ @+$(COPY) $(SOLARINCDIR)$/tools$/lang.hxx $@
+.ENDIF
+
+$(SLOFILES) : $(INCCOM)$/xlang.h
+
+$(MISC)$/rot.lst : \
+ $(MISC)$/x$(TARGET).c \
+ $(INCCOM)$/xlang.h \
+ ..$/inc$/rot13.hrc \
+ ..$/inc$/addin.h
+.IF "$(GUI)"=="WNT"
+ @+echo $(<:+"\n":s/ //) > $@
+.ELSE
+ @+echo $< > $@
+.ENDIF
+
+# --- Def-File ---
+
+# ------------------------------------------------------------------
+# Windows + OS/2 DEF File
+# ------------------------------------------------------------------
+
+.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
+
+$(MISC)$/$(SHL1TARGET).def: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo LIBRARY $(SHL1TARGET)>$@
+ @echo DESCRIPTION 'Rot13 StarCalc Addin DLL'>>$@
+.IF "$(GUI)" == "WNT"
+ @echo DATA READ WRITE NONSHARED>>$@
+ @echo EXPORTS>>$@
+.ENDIF
+.IF "$(GUI)" == "OS2"
+ @echo PROTMODE >>$@
+ @echo CODE LOADONCALL >>$@
+ @echo DATA PRELOAD MULTIPLE NONSHARED >>$@
+ @echo EXPORTS >>$@
+.ENDIF
+ @echo GetFunctionCount>>$@
+ @echo GetFunctionData>>$@
+ @echo GetParameterDescription>>$@
+ @echo SetLanguage >>$@
+ @echo Rot13>>$@
+
+.ENDIF
+
+
diff --git a/sc/addin/rot13/rot13.cl b/sc/addin/rot13/rot13.cl
new file mode 100644
index 000000000000..9262de35896c
--- /dev/null
+++ b/sc/addin/rot13/rot13.cl
@@ -0,0 +1,182 @@
+/*------------------------------------------------------------------------
+
+$Workfile: ROT13.CL $
+
+$Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sc/addin/rot13/rot13.cl,v 1.1.1.1 2000-09-18 16:44:46 hr Exp $
+
+Description: StarCalc ROT13 AddIn Example
+
+(c) Copyright 1998 - 2000, Sun Microsystems, Inc.
+
+------------------------------------------------------------------------*/
+
+static char rot13_Id[]="@(#) StarCalc Rot13 AddIn (c) 1998-2000 Sun Microsystems, Inc.";
+
+#include <string.h>
+#include <stdio.h>
+
+#include <xlang.h>
+#include <addin.h>
+#include <rot13.hrc>
+
+/**
+ * the current language the Addin is using
+ */
+static USHORT _nLanguage=LANGUAGE_ENGLISH;
+
+/**
+ * StarCalc calls this function to set a new current Language for the Addin
+ *
+ * @param *nLanguage
+ *
+ */
+void CALLTYPE SetLanguage( USHORT* nLanguage )
+{
+ _nLanguage = GetNeutralLanguage( *nLanguage );
+}
+
+
+/**
+ * Tell StarCalc how many new functions this Addin provides.
+ *
+ * @param *nCount - returns the number of functions which are exported to StarCalc
+ *
+ */
+void CALLTYPE GetFunctionCount( USHORT *nCount )
+{
+ *nCount = 1;
+}
+
+/**
+ * Provides neccessary data for each new function to StarCalc
+ *
+ * @param *nNo Input: Function number between 0 and nCount - 1
+ * @param *pFuncName Output: Functionname which should be called in the AddIn-DLL
+ * @param *nParamCount Output: Number of Parameter. Must be greater than 0, because there's always a return-Value. Maximum is 16.
+ * @param *peType Output: Pointer to arrray with exactly 16 variables of typ Paramtype. nParamCount Entries are set to the type of the corresponding Parameters.
+ * @param *pInternalName Output: Functionname as seen by the Spreadsheet user
+ *
+ * @see #GetFunctionCount, #GetParameterDescription
+ *
+ */
+void CALLTYPE GetFunctionData( USHORT * nNo,
+ char * pFuncName,
+ USHORT * nParamCount,
+ ParamType * peType,
+ char * pInternalName )
+{
+
+ switch( *nNo ) {
+ case 0:
+ /* the function name is the same in all languages */
+ SO_StringCopy( pInternalName, "Rot13" );
+ SO_StringCopy( pFuncName, "Rot13" );
+ peType[0] = PTR_STRING;
+ peType[1] = PTR_STRING;
+ *nParamCount=2;
+ break;
+ default:
+ *nParamCount = 0;
+ *pFuncName = 0;
+ *pInternalName = 0;
+ break;
+ }
+}
+
+/**
+ * Provides descriptions for each new function to StarCalc
+ * which are shown is the autopilot
+ *
+ * @param *nNo Input Parameter, Function number between 0 and nCount - 1
+ * @param *nParam Parameter Number
+ * @param *pName Output: Name of the parameter
+ * @param *pDesc Output: Description of the parameter
+ *
+ * @see #GetFunctionCount, #GetParameterDescription
+ */
+void CALLTYPE GetParameterDescription( USHORT* nNo, USHORT* nParam,
+char* pName, char* pDesc )
+{
+ *pName = 0;
+ *pDesc = 0;
+
+
+ switch ( *nNo ) {
+ case 0:
+ switch ( *nParam ) {
+ case 0:
+ SO_StringCopy(pDesc,getText(ROT13_DESC));
+ break;
+ case 1:
+ SO_StringCopy(pName,getText(ROT13_PAR1_NAME));
+ SO_StringCopy(pDesc,getText(ROT13_PAR1_DESC));
+ }
+ }
+}
+
+/**
+ * ROT13 Algorithm, each alphabetical character of the text is rotated by 13 in the alphabet
+ *
+ * @param *ret
+ * @param *src
+ *
+ * ER: well, my personal favorite algorithm is
+ * main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}
+ * but for clarification we do it somehow different here ;-)
+ */
+void CALLTYPE Rot13(char *ret, char *src)
+{
+ if ( ! ret ) return;
+ if ( ! src ) *ret='\0';
+
+ for(;src && *src; src++ , ret++) {
+ *ret=*src;
+ if (*ret >= 'A' && *ret <= 'Z') {
+ if ( (*ret +=13) > 'Z' ) *ret-=26;
+ } else if (*ret >= 'a' && *ret < 'n') {
+ *ret +=13;
+ } else if (*ret >= 'n' && *ret <= 'z') {
+ *ret -=13;
+ }
+ }
+ *ret=*src;
+}
+
+
+/*------------------------------------------------------------------------
+
+$Log: not supported by cvs2svn $
+Revision 1.5 1999/08/10 12:48:46 NN
+#68039# copyright
+
+
+ Rev 1.4 10 Aug 1999 14:48:46 NN
+ #68039# copyright
+
+ Rev 1.3 29 Apr 1999 14:56:48 ER
+ #57689# xlang.h statt tools/lang.hxx
+
+ Rev 1.3 29 Apr 1999 14:45:08 ER
+ #57689# xlang.hxx statt tools/lang.hxx
+
+ Rev 1.2 29 Apr 1999 12:53:30 ER
+ #57689# Internationalisierung
+
+ Rev 1.1 15 Mar 1999 16:47:12 HJS
+ aufgeraeumt
+
+ Rev 1.0 10 Mar 1999 12:07:18 BEI
+ Initial revision.
+
+ Rev 1.2 13 Jul 1998 17:57:16 BEI
+ 2 Languages
+
+ Rev 1.1 09 Jul 1998 09:00:50 TRI
+ keine C++ Kommentar in C Files
+
+ Rev 1.0 07 Jul 1998 20:36:36 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+
diff --git a/sc/addin/rot13/rot13.src b/sc/addin/rot13/rot13.src
new file mode 100644
index 000000000000..e42d558ffd2c
--- /dev/null
+++ b/sc/addin/rot13/rot13.src
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ * $RCSfile: rot13.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:46 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc" // Definition RID_XXX in StarCalc
+#include "rot13.hrc"
+
+Resource RID_SC_ADDIN_ROT13
+{
+ String ROT13_DESC // Description
+ {
+ Text = "ROT13 Algorithmus, jedes alphabetische Zeichen des Textes wird um 13 im Alphabet rotiert." ;
+ Text [ english ] = "ROT13 Algorithm, each alphabetical character of the text is rotated by 13 in the alphabet" ;
+ Text[ english_us ] = "ROT13 Algorithm, each alphabetical character of the text is rotated by 13 in the alphabet";
+ Text[ portuguese ] = "ROT13 Algoritmo: rotação de 13 caracteres no alfabeto para cada um dos caracteres alfabéticos do texto.";
+ Text[ russian ] = "Àëãîðèòì ROT13: çàìåíà êàæäîãî àëôàâèòíîãî çíàêà òåêñòà íà äðóãîé, ñäâèíóòûé â àëôàâèòå íà 13 ïîçèöèé.";
+ Text[ dutch ] = "ROT13 Algorithme, ieder alfabetisch teken van de tekst roteert met het 13e in het alfabet.";
+ Text[ french ] = "ROT13 Algorythme, remplacement de chaque caractère alphabétique du texte par rotation de 13 caractères dans l'alphabet.";
+ Text[ spanish ] = "Algoritmo ROT13, cada carácter alfabético del texto rodará 13 espacios en el alfabeto.";
+ Text[ italian ] = "ROT13 algoritmo, ogni carattere alfabetico del testo viene ruotato di 13 nell'alfabeto.";
+ Text[ danish ] = "ROT13 algoritme, hvert alfabetiske tegn i teksten bliver roteret med 13 i alfabetet.";
+ Text[ swedish ] = "ROT13 algoritm, varje alfabetiskt tecken i texten roteras med 13 i alfabetet.";
+ Text[ polish ] = "Algorytm ROT13, ka¿dy alfabetyczny znak tekstu zostanie obrócony o 13 w alfabecie.";
+ Text[ portuguese_brazilian ] = "ROT13 Algorithm, each alphabetical character of the text is rotated by 13 in the alphabet";
+ Text[ japanese ] = "ROT13±ÙºÞؽÞÑ:Ã÷½Ä‚̱Ù̧Íޯĕ¶Žš‚Í13Žš‚²‚Æ‚ÉŒJ‚è•Ô‚³‚ê‚Ü‚·";
+ Text[ chinese_simplified ] = "ROT13 ·¨Ôò£¬Îı¾ÄÚÿ¸ö×Öĸ½«ÑØ×Öĸ±íµÄµÚ13¸ö×Öĸѭ»·Ðýת¡£";
+ Text[ chinese_traditional ] = "ROT13 ªk«h¡A¥»¤å¤º¨C­Ó¦r¥À±Nªu¦r¥Àªíªº²Ä13­Ó¦r¥À´`Àô±ÛÂà¡C";
+ Text[ arabic ] = "äÙÇã ÇáÚÏ ROT13¡ íÊã ÊÏæíÑ ßá ÍÑÝ ÃÈÌÏí Ýí ÇáäÕ äÍæ 13 ÍÑÝÇð ãä ÍÑæÝ ÇáÃáÝÈÇÁ.";
+ Text[ dutch ] = "ROT13 Algorithme, ieder alfabetisch teken van de tekst roteert met het 13e in het alfabet.";
+ Text[ chinese_simplified ] = "ROT13 ·¨Ôò£¬Îı¾ÄÚÿ¸ö×Öĸ½«ÑØ×Öĸ±íµÄµÚ13¸ö×Öĸѭ»·Ðýת¡£";
+ Text[ greek ] = "Áëãüñéèìïò ROT13, êÜèå áëöáâçôéêüò ÷áñáêôÞñáò ôïõ êåéìÝíïõ ðåñéóôñÝöåôáé êáôÜ 13 èÝóåéò óôï áëöÜâçôï";
+ Text[ korean ] = "ROT13 ¾Ë°í¸®Áò, ÅؽºÆ®ÀÇ °¢ ¾ËÆĺª ¹®ÀÚ´Â ¾ËÆĺª¿¡¼­ 13 ¹®ÀÚ¾¿ ÀÚ¸® À̵¿ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "ROT13 Algoritmi, metnin her alfabetik karakteri alfabe içinde 13 sýra döndürülür.";
+ Text[ language_user1 ] = " ";
+ };
+
+ String ROT13_PAR1_NAME // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "Text" ;
+ Text[ english_us ] = "Text";
+ Text[ portuguese ] = "Texto";
+ Text[ russian ] = "Òåêñò";
+ Text[ dutch ] = "Tekst";
+ Text[ french ] = "Texte";
+ Text[ spanish ] = "Texto";
+ Text[ italian ] = "Testo";
+ Text[ danish ] = "Tekst";
+ Text[ swedish ] = "Text";
+ Text[ polish ] = "Tekst";
+ Text[ portuguese_brazilian ] = "Text";
+ Text[ japanese ] = "•¶Žš";
+ Text[ chinese_simplified ] = "Text";
+ Text[ chinese_traditional ] = "¥»¤å";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "Text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+
+ String ROT13_PAR1_DESC // Description of Parameter 1
+ {
+ Text = "Der Text der rotiert werden soll" ;
+ Text [ english ] = "the text which should be rotated" ;
+ Text[ english_us ] = "The text that is to be rotated";
+ Text[ portuguese ] = "é o texto de rotação";
+ Text[ russian ] = "Òåêñò, êîòîðûé äîëæåí âðàùàòüñÿ";
+ Text[ dutch ] = "de tekst die roteert";
+ Text[ french ] = "Le texte de rotation";
+ Text[ spanish ] = "El texto que debe rodar";
+ Text[ italian ] = "Il testo da ruotare";
+ Text[ danish ] = "Teksten, som skal roteres";
+ Text[ swedish ] = "Texten som skall roteras";
+ Text[ polish ] = "Tekst, który ma zostaæ obrócony";
+ Text[ portuguese_brazilian ] = "the text which should be rotated";
+ Text[ japanese ] = "ŒJ‚è•Ô‚·Ã·½Ä";
+ Text[ chinese_simplified ] = "ÒªÐýתµÄÎı¾";
+ Text[ chinese_traditional ] = "­n±ÛÂ઺¥»¤å";
+ Text[ arabic ] = "ÇáäÕ ÇáæÇÌÈ ÇÓÊÏÇÑÊå";
+ Text[ dutch ] = "de tekst die roteert";
+ Text[ chinese_simplified ] = "ÒªÐýתµÄÎı¾";
+ Text[ greek ] = "Ôï êåßìåíï ðïõ ðñüêåéôáé íá ðåñéóôñáöåß";
+ Text[ korean ] = "ȸÀü µÇ¾îÁø ÅؽºÆ®";
+ Text[ turkish ] = "Döndürülecek metin";
+ Text[ language_user1 ] = " ";
+ };
+};
+
+
diff --git a/sc/addin/util/cl2c.pl b/sc/addin/util/cl2c.pl
new file mode 100644
index 000000000000..d0731a28d437
--- /dev/null
+++ b/sc/addin/util/cl2c.pl
@@ -0,0 +1,217 @@
+#!/usr/solar/bin/perl
+
+#------------------------------------------------------------------------
+#
+# $Workfile: CL2C.PL $
+#
+# $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/sc/addin/util/cl2c.pl,v 1.1.1.1 2000-09-18 16:44:47 hr Exp $
+#
+# Description: StarCalc AddIn Helper Create .c File from .cl and .src file
+#
+# (c) Copyright 1998 - 2000, Sun Microsystems, Inc.
+#
+#
+#------------------------------------------------------------------------
+
+if ( $#ARGV != 3 ) {
+ print STDERR "usage: cl2c.pl <file.cl> <file.c> <file.src> <resname>\n";
+ exit -1;
+}
+
+$CL=$ARGV[0];
+$C=$ARGV[1];
+$SRC=$ARGV[2];
+$RNAME=$ARGV[3];
+
+sub sconv
+{
+ local($s)=@_[0];
+ local($o,$c);
+ $_="";
+ foreach $o ( unpack("C*",$s) ) {
+ $c=chr($o);
+ if ( $o >= 32 && $o < 127 ) {
+ $_ .= $c;
+ } else {
+ $_ .= sprintf("\\%o", $o);
+ }
+ }
+ return $_;
+}
+
+
+sub makeneutral {
+
+ print COUT "\n\n/**\n";
+ print COUT " * Get neutral language for specific language.\n";
+ print COUT " * This simplifies the getText switch cases and allows to handle\n";
+ print COUT " * previously unknown language derivates due to foreign installations.\n";
+ print COUT " * If you want to distinguish between some dialects change this function\n";
+ print COUT " * to return the desired nLang before doing the bit masking stuff.\n";
+ print COUT " * See xlang.h for defined LANGUAGE_*\n";
+ print COUT " */\n";
+
+ # taken from tools/source/intntl/intn.cxx International::GetNeutralLanguage
+ print COUT "static USHORT GetNeutralLanguage( USHORT nLang )\n";
+ print COUT "{\n";
+ print COUT "\tUSHORT nPrimLang;\n";
+ print COUT "\n";
+ print COUT "\t/* ignore LANGUAGE_USER* */\n";
+ print COUT "\tif ( (nLang & 0x03FF) >= 0x0200 )\n";
+ print COUT "\t return nLang;\n";
+ print COUT "\n";
+ print COUT "\tnLang &= 0x03FF;\n";
+ print COUT "\n";
+ print COUT "\tnPrimLang = nLang | 0x0400;\n";
+ print COUT "\n";
+ print COUT "\tswitch ( nPrimLang )\n";
+ print COUT "\t{\n";
+ print COUT "\t\tcase LANGUAGE_CHINESE_TRADITIONAL:\n";
+ print COUT "\t\t\tnLang = LANGUAGE_CHINESE;\n";
+ print COUT "\t\t\tbreak;\n";
+ print COUT "\t\tcase LANGUAGE_ENGLISH_US:\n";
+ print COUT "\t\t\tnLang = LANGUAGE_ENGLISH;\n";
+ print COUT "\t\t\tbreak;\n";
+ print COUT "\t\tcase LANGUAGE_NORWEGIAN_BOKMAL:\n";
+ print COUT "\t\t\tnLang = LANGUAGE_NORWEGIAN;\n";
+ print COUT "\t\t\tbreak;\n";
+ print COUT "\t\tcase LANGUAGE_PORTUGUESE_BRAZILIAN:\n";
+ print COUT "\t\t\tnLang = LANGUAGE_PORTUGUESE;\n";
+ print COUT "\t\t\tbreak;\n";
+ print COUT "\n";
+ print COUT "\t\tdefault:\n";
+ print COUT "\t\t\tnLang = nPrimLang;\n";
+ print COUT "\t\t\tbreak;\n";
+ print COUT "\t}\n";
+ print COUT "\n";
+ print COUT "\treturn nLang;\n";
+ print COUT "}\n";
+ print COUT "\n";
+
+}
+
+
+sub maketext {
+
+ print COUT "\n\n/**\n";
+ print COUT " * Get text resource for current language.\n";
+ print COUT " * Remember that 8-bit characters are shown in\n";
+ print COUT " * system dependend code pages!\n";
+ print COUT " * To get correct results you will have to distuinguish\n";
+ print COUT " * for example between UNIX and WIN and OS2 target systems.\n";
+ print COUT " */\n";
+
+ print COUT "static char* getText( int nResource )\n{\n";
+ print COUT "\tswitch( nResource ) {\n";
+
+ $resflag=0;
+ $strname="";
+ $cnt=0;
+ $text_english="";
+
+ while (<SRCIN>) {
+ $resflag=1 if ( /Resource\s$RNAME/ );
+
+ if ( /\{/ ) {
+ if ( ++$cnt == 2 ) {
+ # start language
+ $text_english="";
+ print COUT "\t\t\tswitch( _nLanguage ) {\n";
+ next;
+ }
+ }
+
+ if ( /\}/ ) {
+ if ( --$cnt == 1 ) {
+ # end language
+
+ if ( $text_english ne "" ) {
+ print COUT "\t\t\t\tcase LANGUAGE_ENGLISH:\n\t\t\t\tdefault:\n";
+ print COUT "\t\t\t\treturn(" . $text_english . ")\;\n";
+ }
+
+ print COUT "\t\t\t}\n\t\t\tbreak;\n";
+ next;
+ } elsif ( $cnt == 0 ) {
+ # end of resource
+ $resflag=0;
+ print COUT "\t\tdefault:\n\t\t\tbreak;\n";
+ print COUT "\t}\n\treturn(\"\");\n}\n";
+ next;
+ }
+
+ }
+
+ if ( $resflag && $cnt == 1) {
+ if ( /\sString\s(([A-Z]|\_|[0-9]|[a-z])*)/ ) {
+ $strname=$1;
+ print COUT "\t\tcase " . $strname . ":\n";
+ }
+ }
+
+ if ( $cnt == 2 && /^\s*Text/ ) {
+ $langname="german";
+ ($textdef,@textx)=split(/=/);
+ $text=join("=",@textx);
+ if ( $textdef =~ /\[\s+(.*)\s+\]/ ) {
+ $langname=$1;
+ }
+
+ $langname="LANGUAGE_" . uc($langname);
+
+ chop($text) while ( $text=~/(\r|\n|\;)$/ );
+ $text=sconv($text);
+ # english_us, not english because it's developer's pigeon
+ if ( $langname eq "LANGUAGE_ENGLISH_US" ) {
+ $text_english=$text;
+ }
+ # we don't know about USER languages, ENGLISH will be appended later
+ elsif ( ! ( $langname =~ /LANGUAGE_USER/ || $langname =~ /^LANGUAGE_ENGLISH$/ ) ) {
+ # ER 28.04.99: for the moment only German and English are
+ # exported, because we have a problem with non-existing
+ # character code tables for systems other than Windoze.
+ # => Chinese would be definitely mixed up and we don't
+ # want to insult anybody.. others like Spanish would look
+ # very ugly, but we'll have to live with bad German Umlauts.
+ if ( $langname =~ /LANGUAGE_(GERMAN|ENGLISH)/ ) {
+ print COUT "\t\t\t\tcase " . $langname . ":\n";
+ print COUT "\t\t\t\treturn(" . $text . ")\;\n";
+ }
+ }
+
+ }
+ }
+
+ makeneutral();
+
+}
+
+open(CLIN,"<$CL") || die "can not open $CL\n";
+open(SRCIN,"<$SRC") || die "can not open $CL\n";
+open(COUT,">$C") || die "can not open $CL\n";
+
+$ccnt=0;
+$incomment=0;
+while(<CLIN>) {
+ if ( /^\/\*--(-*)/ ) {
+ $incomment=1;
+ $ccnt++;
+ }
+
+ print COUT $_ if ( $incomment==0 || $ccnt==1 );
+
+ &maketext() if ( /^static USHORT _nLanguage=/ );
+
+ if ( /(-*)--\*\/$/ ) {
+ $incomment=0;
+ }
+
+}
+
+close(CLIN);
+close(SRCIN);
+close(COUT);
+
+exit 0;
+
+
diff --git a/sc/addin/util/makefile.mk b/sc/addin/util/makefile.mk
new file mode 100644
index 000000000000..6600bae5bbd2
--- /dev/null
+++ b/sc/addin/util/makefile.mk
@@ -0,0 +1,89 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:47 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+PRJ=..$/..
+
+PRJNAME=sc
+TARGET=autil
+
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+$(BIN)$/addin.zip : \
+ $(MISC)$/rot.lst \
+ $(MISC)$/dfa.lst
+.IF "$(GUI)"=="UNX"
+# +$(TYPE) $(MISC)$/rot.lst | zip -@ -ll -j -u $(BIN)$/addin.zip
+ +$(TYPE) $(MISC)$/rot.lst | tr -s " " "\n" | zip -@ -u -j -ll $(BIN)$/addin.zip
+ +$(TYPE) $(MISC)$/dfa.lst | tr -s " " "\n" | zip -@ -u -j -ll $(BIN)$/addin.zip
+ +chmod +rw $(BIN)$/addin.zip
+.ELSE
+ +$(TYPE) $< | zip -@ -u -j $(BIN)$/addin.zip
+.ENDIF
+
+ALL: \
+ $(BIN)$/addin.zip \
+ ALLTAR
+
+.INCLUDE: target.mk
+
diff --git a/sc/inc/addincol.hxx b/sc/inc/addincol.hxx
new file mode 100644
index 000000000000..33291d05b54f
--- /dev/null
+++ b/sc/inc/addincol.hxx
@@ -0,0 +1,187 @@
+/*************************************************************************
+ *
+ * $RCSfile: addincol.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:47 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_ADDINCOL_HXX
+#define SC_ADDINCOL_HXX
+
+
+#ifndef _COM_SUN_STAR_SHEET_XVOLATILERESULT_HPP_
+#include <com/sun/star/sheet/XVolatileResult.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XADDIN_HPP_
+#include <com/sun/star/sheet/XAddIn.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XRESULTLISTENER_HPP_
+#include <com/sun/star/sheet/XResultListener.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_RESULTEVENT_HPP_
+#include <com/sun/star/sheet/ResultEvent.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+
+
+class String;
+class SfxObjectShell;
+class ScUnoAddInFuncData;
+class ScMatrix;
+class ScFuncDesc;
+
+
+enum ScAddInArgumentType
+{
+ SC_ADDINARG_NONE, // -
+ SC_ADDINARG_INTEGER, // long
+ SC_ADDINARG_DOUBLE, // double
+ SC_ADDINARG_STRING, // string
+ SC_ADDINARG_INTEGER_ARRAY, // sequence<sequence<long>>
+ SC_ADDINARG_DOUBLE_ARRAY, // sequence<sequence<double>>
+ SC_ADDINARG_STRING_ARRAY, // sequence<sequence<string>>
+ SC_ADDINARG_MIXED_ARRAY, // sequence<sequence<any>>
+ SC_ADDINARG_VALUE_OR_ARRAY, // any
+ SC_ADDINARG_CELLRANGE, // XCellRange
+ SC_ADDINARG_CALLER, // XPropertySet
+ SC_ADDINARG_VARARGS // sequence<any>
+};
+
+
+class ScUnoAddInCollection
+{
+private:
+ long nFuncCount;
+ ScUnoAddInFuncData** ppFuncData;
+ BOOL bInitialized;
+
+ void Initialize();
+ void ReadFromAddIn( const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface>& xInterface );
+
+public:
+ ScUnoAddInCollection();
+ ~ScUnoAddInCollection();
+
+ String FindFunction( const String& rName, BOOL bLocalFirst ); // user entered name
+ ScUnoAddInFuncData* GetFuncData( const String& rName ); // exact name
+
+ void LocalizeString( String& rName ); // modify rName - input: exact name
+
+ long GetFuncCount();
+ BOOL FillFunctionDesc( long nFunc, ScFuncDesc& rDesc );
+};
+
+
+class ScUnoAddInCall
+{
+private:
+ const ScUnoAddInFuncData* pFuncData;
+ com::sun::star::uno::Sequence<com::sun::star::uno::Any> aArgs;
+ com::sun::star::uno::Sequence<com::sun::star::uno::Any> aVarArg;
+ com::sun::star::uno::Reference<com::sun::star::uno::XInterface> xCaller;
+ BOOL bValidCount;
+ // result:
+ USHORT nErrCode;
+ BOOL bHasString;
+ double fValue;
+ String aString;
+ ScMatrix* pMatrix;
+ com::sun::star::uno::Reference<com::sun::star::sheet::XVolatileResult> xVarRes;
+
+ void ExecuteCallWithArgs(
+ com::sun::star::uno::Sequence<com::sun::star::uno::Any>& rCallArgs);
+
+public:
+ // exact name
+ ScUnoAddInCall( ScUnoAddInCollection& rColl, const String& rName,
+ long nParamCount );
+ ~ScUnoAddInCall();
+
+ BOOL NeedsCaller() const;
+ void SetCaller( const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface>& rInterface );
+ void SetCallerFromObjectShell( SfxObjectShell* pSh );
+
+ BOOL ValidParamCount();
+ ScAddInArgumentType GetArgType( long nPos );
+ void SetParam( long nPos, const com::sun::star::uno::Any& rValue );
+
+ void ExecuteCall();
+
+ void SetResult( const com::sun::star::uno::Any& rNewRes );
+
+ USHORT GetErrCode() const { return nErrCode; }
+ BOOL HasString() const { return bHasString; }
+ BOOL HasMatrix() const { return ( pMatrix != NULL ); }
+ BOOL HasVarRes() const { return ( xVarRes.is() ); }
+ double GetValue() const { return fValue; }
+ const String& GetString() const { return aString; }
+ const ScMatrix* GetMatrix() const { return pMatrix; }
+ com::sun::star::uno::Reference<com::sun::star::sheet::XVolatileResult>
+ GetVarRes() const { return xVarRes; }
+};
+
+
+#endif
+
diff --git a/sc/inc/afmtuno.hxx b/sc/inc/afmtuno.hxx
new file mode 100644
index 000000000000..aac4ab2a9298
--- /dev/null
+++ b/sc/inc/afmtuno.hxx
@@ -0,0 +1,383 @@
+/*************************************************************************
+ *
+ * $RCSfile: afmtuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:47 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_AFMTUNO_HXX
+#define SC_AFMTUNO_HXX
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCONTAINER_HPP_
+#include <com/sun/star/container/XContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXCONTAINER_HPP_
+#include <com/sun/star/container/XIndexContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEREPLACE_HPP_
+#include <com/sun/star/container/XNameReplace.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCONTAINERLISTENER_HPP_
+#include <com/sun/star/container/XContainerListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XSET_HPP_
+#include <com/sun/star/container/XSet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_CONTAINEREVENT_HPP_
+#include <com/sun/star/container/ContainerEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXREPLACE_HPP_
+#include <com/sun/star/container/XIndexReplace.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
+#include <com/sun/star/container/XNameContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMED_HPP_
+#include <com/sun/star/container/XNamed.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE6_HXX_
+#include <cppuhelper/implbase6.hxx>
+#endif
+
+class ScAutoFormatFieldObj;
+class ScAutoFormatObj;
+
+
+#define SC_AFMTOBJ_INVALID USHRT_MAX
+
+
+::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
+ ScAutoFormatsObj_CreateInstance(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::lang::XMultiServiceFactory >& );
+
+
+class ScAutoFormatsObj : public ::cppu::WeakImplHelper4<
+ ::com::sun::star::container::XNameContainer,
+ ::com::sun::star::container::XEnumerationAccess,
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScAutoFormatObj* GetObjectByIndex_Impl(USHORT nIndex);
+ ScAutoFormatObj* GetObjectByName_Impl(const ::rtl::OUString& aName);
+
+public:
+ ScAutoFormatsObj();
+ virtual ~ScAutoFormatsObj();
+
+ static ::rtl::OUString getImplementationName_Static();
+ static ::com::sun::star::uno::Sequence< ::rtl::OUString> getSupportedServiceNames_Static();
+
+ // XNameContainer
+ virtual void SAL_CALL insertByName( 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 removeByName( const ::rtl::OUString& Name )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameReplace
+ virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName,
+ const ::com::sun::star::uno::Any& aElement )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScAutoFormatObj : public ::cppu::WeakImplHelper6<
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::container::XEnumerationAccess,
+ ::com::sun::star::container::XNamed,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ SfxItemPropertySet aPropSet;
+ USHORT nFormatIndex;
+
+ ScAutoFormatFieldObj* GetObjectByIndex_Impl(USHORT nIndex);
+
+public:
+ ScAutoFormatObj(USHORT nIndex);
+ virtual ~ScAutoFormatObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // per getImplementation gerufen:
+ sal_Bool IsInserted() const { return nFormatIndex != SC_AFMTOBJ_INVALID; }
+ void InitFormat( USHORT nNewIndex );
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScAutoFormatObj* getImplementation( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XInterface> xObj );
+};
+
+
+class ScAutoFormatFieldObj : public ::cppu::WeakImplHelper2<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ SfxItemPropertySet aPropSet;
+ USHORT nFormatIndex;
+ USHORT nFieldIndex;
+
+public:
+ ScAutoFormatFieldObj(USHORT nFormat, USHORT nField);
+ virtual ~ScAutoFormatFieldObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif
+
diff --git a/sc/inc/appluno.hxx b/sc/inc/appluno.hxx
new file mode 100644
index 000000000000..d409db663726
--- /dev/null
+++ b/sc/inc/appluno.hxx
@@ -0,0 +1,265 @@
+/*************************************************************************
+ *
+ * $RCSfile: appluno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:47 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_APPLUNO_HXX
+#define SC_APPLUNO_HXX
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XRECENTFUNCTIONS_HPP_
+#include <com/sun/star/sheet/XRecentFunctions.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XFUNCTIONDESCRIPTIONS_HPP_
+#include <com/sun/star/sheet/XFunctionDescriptions.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+
+class ScFunctionDescriptionObj;
+
+
+
+com::sun::star::uno::Reference<com::sun::star::uno::XInterface> SAL_CALL
+ ScSpreadsheetSettings_CreateInstance(
+ const com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory>& rSMgr );
+com::sun::star::uno::Reference<com::sun::star::uno::XInterface> SAL_CALL
+ ScRecentFunctionsObj_CreateInstance(
+ const com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory>& rSMgr );
+com::sun::star::uno::Reference<com::sun::star::uno::XInterface> SAL_CALL
+ ScFunctionListObj_CreateInstance(
+ const com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory>& rSMgr );
+
+
+class ScSpreadsheetSettings : public cppu::WeakImplHelper2<
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo>
+{
+private:
+ SfxItemPropertySet aPropSet;
+
+public:
+ ScSpreadsheetSettings();
+ virtual ~ScSpreadsheetSettings();
+
+ static ::rtl::OUString getImplementationName_Static();
+ static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static();
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScRecentFunctionsObj : public cppu::WeakImplHelper2<
+ com::sun::star::sheet::XRecentFunctions,
+ com::sun::star::lang::XServiceInfo>
+{
+public:
+ ScRecentFunctionsObj();
+ virtual ~ScRecentFunctionsObj();
+
+ static ::rtl::OUString getImplementationName_Static();
+ static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static();
+
+ // XRecentFunctions
+ virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getRecentFunctionIds()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setRecentFunctionIds( const ::com::sun::star::uno::Sequence<
+ sal_Int32 >& aRecentFunctionIds )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getMaxRecentFunctions()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScFunctionListObj : public cppu::WeakImplHelper4<
+ com::sun::star::sheet::XFunctionDescriptions,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XNameAccess,
+ com::sun::star::lang::XServiceInfo>
+{
+public:
+ ScFunctionListObj();
+ virtual ~ScFunctionListObj();
+
+ static ::rtl::OUString getImplementationName_Static();
+ static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static();
+
+ // XFunctionDescriptions
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
+ getById( sal_Int32 nId )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+
+#endif
+
diff --git a/sc/inc/appoptio.hxx b/sc/inc/appoptio.hxx
new file mode 100644
index 000000000000..b5e279c23b7e
--- /dev/null
+++ b/sc/inc/appoptio.hxx
@@ -0,0 +1,162 @@
+/*************************************************************************
+ *
+ * $RCSfile: appoptio.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:47 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_APPOPTIO_HXX
+#define SC_APPOPTIO_HXX
+
+
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _SVX_ZOOMITEM_HXX //autogen
+#include <svx/zoomitem.hxx>
+#endif
+
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScAppOptions
+{
+public:
+ ScAppOptions();
+ ScAppOptions( const ScAppOptions& rCpy );
+ ~ScAppOptions();
+
+ void SetDefaults();
+
+ void SetAppMetric( FieldUnit eUnit ) { eMetric = eUnit; }
+ FieldUnit GetAppMetric() const { return eMetric; }
+ void SetZoom( USHORT nNew ) { nZoom = nNew; }
+ USHORT GetZoom() const { return nZoom; }
+ void SetZoomType( SvxZoomType eNew ) { eZoomType = eNew; }
+ SvxZoomType GetZoomType() const { return eZoomType; }
+ USHORT GetLRUFuncListCount() const { return nLRUFuncCount; }
+ USHORT* GetLRUFuncList() const { return pLRUList; }
+ void SetLRUFuncList( const USHORT* pList,
+ const USHORT nCount );
+ void SetStatusFunc( USHORT nNew ) { nStatusFunc = nNew; }
+ USHORT GetStatusFunc() const { return nStatusFunc; }
+ void SetAutoComplete( BOOL bNew ) { bAutoComplete = bNew; }
+ BOOL GetAutoComplete() const { return bAutoComplete; }
+ void SetDetectiveAuto( BOOL bNew ) { bDetectiveAuto = bNew; }
+ BOOL GetDetectiveAuto() const { return bDetectiveAuto; }
+
+ void SetTrackContentColor(ULONG nNew) { nTrackContentColor = nNew; }
+ ULONG GetTrackContentColor() const { return nTrackContentColor; }
+ void SetTrackInsertColor(ULONG nNew) { nTrackInsertColor = nNew; }
+ ULONG GetTrackInsertColor() const { return nTrackInsertColor; }
+ void SetTrackDeleteColor(ULONG nNew) { nTrackDeleteColor = nNew; }
+ ULONG GetTrackDeleteColor() const { return nTrackDeleteColor; }
+ void SetTrackMoveColor(ULONG nNew) { nTrackMoveColor = nNew; }
+ ULONG GetTrackMoveColor() const { return nTrackMoveColor; }
+
+ ScLkUpdMode GetLinkMode() const { return eLinkMode ;}
+ void SetLinkMode( ScLkUpdMode nSet ) { eLinkMode = nSet;}
+
+
+ const ScAppOptions& operator= ( const ScAppOptions& rOpt );
+ friend SvStream& operator>> ( SvStream& rStream, ScAppOptions& rOpt );
+ friend SvStream& operator<< ( SvStream& rStream, const ScAppOptions& rOpt );
+
+private:
+ FieldUnit eMetric;
+ USHORT nLRUFuncCount;
+ USHORT* pLRUList;
+ SvxZoomType eZoomType;
+ USHORT nZoom;
+ USHORT nStatusFunc;
+ BOOL bAutoComplete;
+ BOOL bDetectiveAuto;
+ ULONG nTrackContentColor;
+ ULONG nTrackInsertColor;
+ ULONG nTrackDeleteColor;
+ ULONG nTrackMoveColor;
+ ScLkUpdMode eLinkMode;
+};
+
+
+//==================================================================
+// CfgItem fuer App-Optionen
+//==================================================================
+
+class ScAppCfg : public ScAppOptions,
+ public SfxConfigItem
+{
+public:
+ ScAppCfg();
+
+ virtual String GetName() const;
+
+protected:
+ virtual int Load (SvStream& rStream);
+ virtual BOOL Store (SvStream& rStream);
+ virtual void UseDefault ();
+};
+
+
+#endif
+
diff --git a/sc/inc/arealink.hxx b/sc/inc/arealink.hxx
new file mode 100644
index 000000000000..4c02701cf32a
--- /dev/null
+++ b/sc/inc/arealink.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: arealink.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:47 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_AREALINK_HXX
+#define SC_AREALINK_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef _LNKBASE_HXX //autogen
+#include <so3/lnkbase.hxx>
+#endif
+
+class ScDocShell;
+class SfxObjectShell;
+
+class ScAreaLink : public SvBaseLink
+{
+private:
+ ScDocShell* pDocShell; // Container
+ String aFileName;
+ String aFilterName;
+ String aOptions;
+ String aSourceArea;
+ ScRange aDestArea;
+ BOOL bAddUndo;
+ BOOL bInCreate;
+ BOOL bDoInsert; // wird fuer das erste Update auf FALSE gesetzt
+
+public:
+ TYPEINFO();
+ ScAreaLink( SfxObjectShell* pShell, const String& rFile,
+ const String& rFilter, const String& rOpt,
+ const String& rArea, const ScRange& rDest );
+ virtual ~ScAreaLink();
+
+ virtual void Closed();
+ virtual void DataChanged(SvData& rData);
+
+ virtual BOOL Edit(Window* pParent);
+
+ BOOL Refresh( const String& rNewFile, const String& rNewFilter, const String& rNewArea );
+
+ void SetInCreate(BOOL bSet) { bInCreate = bSet; }
+ void SetDoInsert(BOOL bSet) { bDoInsert = bSet; }
+ void SetDestArea(const ScRange& rNew);
+ void SetSource(const String& rDoc, const String& rFlt, const String& rOpt,
+ const String& rArea);
+
+ BOOL IsEqual( const String& rFile, const String& rFilter, const String& rOpt,
+ const String& rSource, const ScRange& rDest ) const;
+
+ const String& GetFile() const { return aFileName; }
+ const String& GetFilter() const { return aFilterName; }
+ const String& GetOptions() const { return aOptions; }
+ const String& GetSource() const { return aSourceArea; }
+ const ScRange& GetDestArea() const { return aDestArea; }
+};
+
+
+#endif
diff --git a/sc/inc/attarray.hxx b/sc/inc/attarray.hxx
new file mode 100644
index 000000000000..2371f23e993c
--- /dev/null
+++ b/sc/inc/attarray.hxx
@@ -0,0 +1,265 @@
+/*************************************************************************
+ *
+ * $RCSfile: attarray.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:47 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_ATRARR_HXX
+#define SC_ATRARR_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef SC_SCATTR_HXX
+#include "attrib.hxx"
+#endif
+
+class ScDocument;
+class ScMarkArray;
+class ScPatternAttr;
+class ScStyleSheet;
+
+class Rectangle;
+class SfxItemPoolCache;
+class SfxStyleSheetBase;
+class SvxBorderLine;
+class SvxBoxItem;
+class SvxBoxInfoItem;
+
+#define SC_LINE_EMPTY 0
+#define SC_LINE_SET 1
+#define SC_LINE_DONTCARE 2
+
+struct ScLineFlags
+{
+ BYTE nLeft;
+ BYTE nRight;
+ BYTE nTop;
+ BYTE nBottom;
+ BYTE nHori;
+ BYTE nVert;
+
+ ScLineFlags() : nLeft(SC_LINE_EMPTY),nRight(SC_LINE_EMPTY),nTop(SC_LINE_EMPTY),
+ nBottom(SC_LINE_EMPTY),nHori(SC_LINE_EMPTY),nVert(SC_LINE_EMPTY) {}
+};
+
+struct ScAttrEntry
+{
+ USHORT nRow;
+ const ScPatternAttr* pPattern;
+};
+
+
+class ScAttrArray
+{
+private:
+ USHORT nCol;
+ USHORT nTab;
+ ScDocument* pDocument;
+
+ USHORT nCount;
+ ScAttrEntry* pData;
+
+friend class ScDocument; // fuer FillInfo
+friend class ScDocumentIterator;
+friend class ScAttrIterator;
+friend class ScHorizontalAttrIterator;
+friend void lcl_IterGetNumberFormat( ULONG& nFormat,
+ const ScAttrArray*& rpArr, USHORT& nAttrEndRow,
+ const ScAttrArray* pNewArr, USHORT nRow, ScDocument* pDoc );
+
+ BOOL ApplyFrame( const SvxBoxItem* pLineOuter, const SvxBoxInfoItem* pLineInner,
+ USHORT nStartRow, USHORT nEndRow,
+ BOOL bLeft, USHORT nDistRight, BOOL bTop, USHORT nDistBottom );
+
+public:
+ ScAttrArray( USHORT nNewCol, USHORT nNewTab, ScDocument* pDoc );
+ ~ScAttrArray();
+
+ void SetTab(USHORT nNewTab) { nTab = nNewTab; }
+ void SetCol(USHORT nNewCol) { nCol = nNewCol; }
+
+ void TestData() const;
+ void Reset( const ScPatternAttr* pPattern, BOOL bAlloc = TRUE );
+ BOOL Concat(USHORT nPos);
+
+ const ScPatternAttr* GetPattern( USHORT nRow ) const;
+ const ScPatternAttr* GetPatternRange( USHORT& rStartRow, USHORT& rEndRow, USHORT nRow ) const;
+ void MergePatternArea( USHORT nStartRow, USHORT nEndRow, SfxItemSet** ppSet, BOOL bDeep ) const;
+
+ void MergeBlockFrame( SvxBoxItem* pLineOuter, SvxBoxInfoItem* pLineInner, ScLineFlags& rFlags,
+ USHORT nStartRow, USHORT nEndRow, BOOL bLeft, USHORT nDistRight ) const;
+ void ApplyBlockFrame( const SvxBoxItem* pLineOuter, const SvxBoxInfoItem* pLineInner,
+ USHORT nStartRow, USHORT nEndRow, BOOL bLeft, USHORT nDistRight );
+
+ void SetPattern( USHORT nRow, const ScPatternAttr* pPattern, BOOL bPutToPool = FALSE );
+ void SetPatternArea( USHORT nStartRow, USHORT nEndRow, const ScPatternAttr* pPattern, BOOL bPutToPool = FALSE);
+ void ApplyStyleArea( USHORT nStartRow, USHORT nEndRow, ScStyleSheet* pStyle );
+ void ApplyCacheArea( USHORT nStartRow, USHORT nEndRow, SfxItemPoolCache* pCache );
+ void ApplyLineStyleArea( USHORT nStartRow, USHORT nEndRow,
+ const SvxBorderLine* pLine, BOOL bColorOnly );
+
+ void ClearItems( USHORT nStartRow, USHORT nEndRow, const USHORT* pWhich );
+ void ChangeIndent( USHORT nStartRow, USHORT nEndRow, BOOL bIncrement );
+
+ short GetNextUnprotected( short nRow, BOOL bUp ) const; // inkl. aktuelle
+
+ short SearchStyle( short nRow, const ScStyleSheet* pSearchStyle,
+ BOOL bUp, ScMarkArray* pMarkArray = NULL );
+ BOOL SearchStyleRange( short& rRow, short& rEndRow, const ScStyleSheet* pSearchStyle,
+ BOOL bUp, ScMarkArray* pMarkArray = NULL );
+
+ BOOL ApplyFlags( USHORT nStartRow, USHORT nEndRow, INT16 nFlags );
+ BOOL RemoveFlags( USHORT nStartRow, USHORT nEndRow, INT16 nFlags );
+
+ BOOL Search( USHORT nRow, short& nIndex ) const;
+
+ BOOL HasLines( USHORT nRow1, USHORT nRow2, Rectangle& rSizes,
+ BOOL bLeft, BOOL bRight ) const;
+ BOOL HasAttrib( USHORT nRow1, USHORT nRow2, USHORT nMask ) const;
+ BOOL ExtendMerge( USHORT nThisCol, USHORT nStartRow, USHORT nEndRow,
+ USHORT& rPaintCol, USHORT& rPaintRow,
+ BOOL bRefresh, BOOL bAttrs );
+ BOOL RemoveAreaMerge( USHORT nStartRow, USHORT nEndRow );
+
+ void FindStyleSheet( const SfxStyleSheetBase* pStyleSheet, BOOL* pUsed, BOOL bReset );
+ BOOL IsStyleSheetUsed( const SfxStyleSheetBase& rStyle ) const;
+
+ void DeleteAreaSafe(USHORT nStartRow, USHORT nEndRow);
+ void SetPatternAreaSafe( USHORT nStartRow, USHORT nEndRow,
+ const ScPatternAttr* pWantedPattern, BOOL bDefault );
+ void CopyAreaSafe( USHORT nStartRow, USHORT nEndRow, short nDy, ScAttrArray& rAttrArray );
+
+ BOOL IsEmpty() const;
+
+ USHORT GetFirstEntryPos() const;
+ USHORT GetLastEntryPos( BOOL bIncludeBottom ) const;
+
+ BOOL HasVisibleAttr( USHORT& rFirstRow, USHORT& rLastRow, BOOL bSkipFirst ) const;
+ BOOL HasVisibleAttrIn( USHORT nStartRow, USHORT nEndRow ) const;
+ BOOL IsVisibleEqual( const ScAttrArray& rOther,
+ USHORT nStartRow, USHORT nEndRow ) const;
+ BOOL IsAllEqual( const ScAttrArray& rOther, USHORT nStartRow, USHORT nEndRow ) const;
+
+ BOOL TestInsertCol( USHORT nStartRow, USHORT nEndRow) const;
+ BOOL TestInsertRow( USHORT nSize ) const;
+ void InsertRow( USHORT nStartRow, USHORT nSize );
+ void DeleteRow( USHORT nStartRow, USHORT nSize );
+ void DeleteRange( USHORT nStartIndex, USHORT nEndIndex );
+ void DeleteArea( USHORT nStartRow, USHORT nEndRow );
+ void MoveTo( USHORT nStartRow, USHORT nEndRow, ScAttrArray& rAttrArray );
+ void CopyArea( USHORT nStartRow, USHORT nEndRow, short nDy, ScAttrArray& rAttrArray,
+ INT16 nStripFlags = 0 );
+
+ void DeleteHardAttr( USHORT nStartRow, USHORT nEndRow );
+
+ void Save( SvStream& rStream ) const;
+ void Load( SvStream& rStream );
+};
+
+
+// ------------------------------------------------------------------------------
+// Iterator fuer Attribute
+// ------------------------------------------------------------------------------
+
+class ScAttrIterator
+{
+ const ScAttrArray* pArray;
+ short nPos;
+ USHORT nRow;
+ USHORT nEndRow;
+public:
+ inline ScAttrIterator( const ScAttrArray* pNewArray, USHORT nStart, USHORT nEnd );
+ inline const ScPatternAttr* Next( USHORT& rTop, USHORT& rBottom );
+ USHORT GetNextRow() const { return nRow; }
+};
+
+
+inline ScAttrIterator::ScAttrIterator( const ScAttrArray* pNewArray, USHORT nStart, USHORT nEnd ) :
+ pArray( pNewArray ),
+ nRow( nStart ),
+ nEndRow( nEnd )
+{
+ if ( nStart )
+ pArray->Search( nStart, nPos );
+ else
+ nPos = 0;
+}
+
+inline const ScPatternAttr* ScAttrIterator::Next( USHORT& rTop, USHORT& rBottom )
+{
+ const ScPatternAttr* pRet;
+ if ( nPos < (short) pArray->nCount && nRow <= nEndRow )
+ {
+ rTop = nRow;
+ rBottom = Min( pArray->pData[nPos].nRow, nEndRow );
+ pRet = pArray->pData[nPos].pPattern;
+ nRow = rBottom + 1;
+ ++nPos;
+ }
+ else
+ pRet = NULL;
+ return pRet;
+}
+
+
+
+#endif
+
+
diff --git a/sc/inc/attrib.hxx b/sc/inc/attrib.hxx
new file mode 100644
index 000000000000..9e906eca0d0b
--- /dev/null
+++ b/sc/inc/attrib.hxx
@@ -0,0 +1,406 @@
+/*************************************************************************
+ *
+ * $RCSfile: attrib.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:47 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SCATTR_HXX
+#define SC_SCATTR_HXX
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//------------------------------------------------------------------------
+
+ // Flags fuer durch Merge verdeckte Zellen
+ // und Control fuer Auto-Filter
+#define SC_MF_HOR 1
+#define SC_MF_VER 2
+#define SC_MF_AUTO 4
+#define SC_MF_BUTTON 8
+#define SC_MF_SCENARIO 16
+
+#define SC_MF_ALL 31
+
+
+class EditTextObject;
+class SvxBorderLine;
+
+BOOL HasPriority( const SvxBorderLine* pThis, const SvxBorderLine* pOther );
+
+//------------------------------------------------------------------------
+
+class ScMergeAttr: public SfxPoolItem
+{
+ INT16 nColMerge;
+ INT16 nRowMerge;
+public:
+ TYPEINFO();
+ ScMergeAttr();
+ ScMergeAttr( INT16 nCol, INT16 nRow = 0);
+ ScMergeAttr( const ScMergeAttr& );
+ ~ScMergeAttr();
+
+ virtual String GetValueText() const;
+
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
+ virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
+
+ INT16 GetColMerge() const {return nColMerge; }
+ INT16 GetRowMerge() const {return nRowMerge; }
+
+ BOOL IsMerged() const { return nColMerge>1 || nRowMerge>1; }
+
+ inline ScMergeAttr& operator=(const ScMergeAttr& rMerge)
+ {
+ nColMerge = rMerge.nColMerge;
+ nRowMerge = rMerge.nRowMerge;
+ return *this;
+ }
+};
+
+//------------------------------------------------------------------------
+
+class ScMergeFlagAttr: public SfxInt16Item
+{
+public:
+ ScMergeFlagAttr();
+ ScMergeFlagAttr(INT16 nFlags);
+ ~ScMergeFlagAttr();
+
+ BOOL IsHorOverlapped() const { return ( GetValue() & SC_MF_HOR ) != 0; }
+ BOOL IsVerOverlapped() const { return ( GetValue() & SC_MF_VER ) != 0; }
+ BOOL IsOverlapped() const { return ( GetValue() & ( SC_MF_HOR | SC_MF_VER ) ) != 0; }
+
+ BOOL HasAutoFilter() const { return ( GetValue() & SC_MF_AUTO ) != 0; }
+ BOOL HasButton() const { return ( GetValue() & SC_MF_BUTTON ) != 0; }
+
+ BOOL IsScenario() const { return ( GetValue() & SC_MF_SCENARIO ) != 0; }
+};
+
+//------------------------------------------------------------------------
+class ScProtectionAttr: public SfxPoolItem
+{
+ BOOL bProtection; // Zelle schuetzen
+ BOOL bHideFormula; // Formel nicht Anzeigen
+ BOOL bHideCell; // Zelle nicht Anzeigen
+ BOOL bHidePrint; // Zelle nicht Ausdrucken
+public:
+ TYPEINFO();
+ ScProtectionAttr();
+ ScProtectionAttr( BOOL bProtect,
+ BOOL bHFormula = FALSE,
+ BOOL bHCell = FALSE,
+ BOOL bHPrint = FALSE);
+ ScProtectionAttr( const ScProtectionAttr& );
+ ~ScProtectionAttr();
+
+ virtual String GetValueText() const;
+ virtual SfxItemPresentation GetPresentation(
+ SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String& rText,
+ const International* pIntl = 0 ) const;
+
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
+ virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ BOOL GetProtection() const { return bProtection; }
+ BOOL SetProtection( BOOL bProtect);
+ BOOL GetHideFormula() const { return bHideFormula; }
+ BOOL SetHideFormula( BOOL bHFormula);
+ BOOL GetHideCell() const { return bHideCell; }
+ BOOL SetHideCell( BOOL bHCell);
+ BOOL GetHidePrint() const { return bHidePrint; }
+ BOOL SetHidePrint( BOOL bHPrint);
+ inline ScProtectionAttr& operator=(const ScProtectionAttr& rProtection)
+ {
+ bProtection = rProtection.bProtection;
+ bHideFormula = rProtection.bHideFormula;
+ bHideCell = rProtection.bHideCell;
+ bHidePrint = rProtection.bHidePrint;
+ return *this;
+ }
+};
+
+
+//----------------------------------------------------------------------------
+// ScRangeItem: verwaltet einen Tabellenbereich
+
+#define SCR_INVALID 0x01
+#define SCR_ALLTABS 0x02
+#define SCR_TONEWTAB 0x04
+
+class ScRangeItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+
+ inline ScRangeItem( const USHORT nWhich );
+ inline ScRangeItem( const USHORT nWhich,
+ const ScRange& rRange,
+ const USHORT nNewFlags = 0 );
+ inline ScRangeItem( const ScRangeItem& rCpy );
+
+ inline ScRangeItem& operator=( const ScRangeItem &rCpy );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual void Record( SfxArguments &rArgs ) const;
+ virtual SfxArgumentError Construct( USHORT nId, const SfxArguments &rArgs );
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual USHORT GetVersion( USHORT nFileVersion ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT) const;
+ virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
+
+ const ScRange& GetRange() const { return aRange; }
+ void SetRange( const ScRange& rNew ) { aRange = rNew; }
+
+ USHORT GetFlags() const { return nFlags; }
+ void SetFlags( USHORT nNew ) { nFlags = nNew; }
+
+private:
+ ScRange aRange;
+ USHORT nFlags;
+};
+
+inline ScRangeItem::ScRangeItem( const USHORT nWhich )
+ : SfxPoolItem( nWhich ), nFlags( SCR_INVALID ) // == ungueltige Area
+{
+}
+
+inline ScRangeItem::ScRangeItem( const USHORT nWhich,
+ const ScRange& rRange,
+ const USHORT nNew )
+ : SfxPoolItem( nWhich ), aRange( rRange ), nFlags( nNew )
+{
+}
+
+inline ScRangeItem::ScRangeItem( const ScRangeItem& rCpy )
+ : SfxPoolItem( rCpy.Which() ), aRange( rCpy.aRange ), nFlags( rCpy.nFlags )
+{}
+
+inline ScRangeItem& ScRangeItem::operator=( const ScRangeItem &rCpy )
+{
+ aRange = rCpy.aRange;
+ return *this;
+}
+
+//----------------------------------------------------------------------------
+// ScTableListItem: verwaltet eine Liste von Tabellen
+//----------------------------------------------------------------------------
+class ScTableListItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+
+ inline ScTableListItem( const USHORT nWhich );
+ ScTableListItem( const ScTableListItem& rCpy );
+ ScTableListItem( const USHORT nWhich, const List& rList );
+ ~ScTableListItem();
+
+ ScTableListItem& operator=( const ScTableListItem &rCpy );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual void Record( SfxArguments &rArgs ) const;
+ virtual SfxArgumentError Construct( USHORT nId, const SfxArguments &rArgs );
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String &rText,
+ const International* pIntl = 0 ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT) const;
+ virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
+
+ BOOL GetTableList( List& aList ) const;
+ void SetTableList( const List& aList );
+
+public:
+ USHORT nCount;
+ USHORT* pTabArr;
+};
+
+inline ScTableListItem::ScTableListItem( const USHORT nWhich )
+ : SfxPoolItem(nWhich), nCount(0), pTabArr(NULL)
+{}
+
+//----------------------------------------------------------------------------
+// Seitenformat-Item: Kopf-/Fusszeileninhalte
+
+#define SC_HF_LEFTAREA 1
+#define SC_HF_CENTERAREA 2
+#define SC_HF_RIGHTAREA 3
+
+class ScPageHFItem : public SfxPoolItem
+{
+ EditTextObject* pLeftArea;
+ EditTextObject* pCenterArea;
+ EditTextObject* pRightArea;
+
+public:
+ TYPEINFO();
+ ScPageHFItem( USHORT nWhich );
+ ScPageHFItem( const ScPageHFItem& rItem );
+ ~ScPageHFItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
+ virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
+
+ virtual USHORT GetVersion( USHORT nFileVersion ) const;
+
+ virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+
+ const EditTextObject* GetLeftArea() const { return pLeftArea; }
+ const EditTextObject* GetCenterArea() const { return pCenterArea; }
+ const EditTextObject* GetRightArea() const { return pRightArea; }
+
+ void SetLeftArea( const EditTextObject& rNew );
+ void SetCenterArea( const EditTextObject& rNew );
+ void SetRightArea( const EditTextObject& rNew );
+
+ //Set mit Uebereignung der Pointer, nArea siehe defines oben
+ void SetArea( EditTextObject *pNew, int nArea );
+};
+
+
+//----------------------------------------------------------------------------
+// Seitenformat-Item: Kopf-/Fusszeileninhalte
+
+class ScViewObjectModeItem: public SfxEnumItem
+{
+public:
+ TYPEINFO();
+
+ ScViewObjectModeItem( USHORT nWhich );
+ ScViewObjectModeItem( USHORT nWhich, ScVObjMode eMode );
+ ~ScViewObjectModeItem();
+
+ virtual USHORT GetValueCount() const;
+ virtual String GetValueText( USHORT nVal ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, USHORT) const;
+ virtual USHORT GetVersion( USHORT nFileVersion ) const;
+ virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
+ SfxMapUnit eCoreMetric,
+ SfxMapUnit ePresMetric,
+ String& rText,
+ const International* pIntl = 0 ) const;
+};
+
+//----------------------------------------------------------------------------
+//
+
+class ScDoubleItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScDoubleItem( USHORT nWhich, double nVal=0 );
+ ScDoubleItem( const ScDoubleItem& rItem );
+ ~ScDoubleItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
+ virtual SvStream& Store( SvStream& rStream, USHORT nVer ) const;
+
+ double GetValue() const { return nValue; }
+
+ void SetValue( const double nVal ) { nValue = nVal;}
+
+private:
+ double nValue;
+};
+
+
+#endif
+
diff --git a/sc/inc/autoform.hxx b/sc/inc/autoform.hxx
new file mode 100644
index 000000000000..cc6a135fd843
--- /dev/null
+++ b/sc/inc/autoform.hxx
@@ -0,0 +1,277 @@
+/*************************************************************************
+ *
+ * $RCSfile: autoform.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:47 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_AUTOFORM_HXX
+#define SC_AUTOFORM_HXX
+
+/*************************************************************************
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+JP 20.07.95:
+
+ Die akt. Struktur der Autoformatierung darf nicht mehr veraendert werden.
+ Diese wird durch unterschiedlichen Code vom StartWriter und vom StarCalc
+ eingelesen/geschrieben.
+ Sollte sich doch mal eine Aenderung nicht vermeiden lassen, dann auf
+ jedenfall in beiden Applikationen aendern.
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+**************************************************************************/
+
+#ifndef SC_ITEMS_HXX
+#include "scitems.hxx"
+#endif
+
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class SfxBoolItem;
+class SvxHorJustifyItem;
+class SvxVerJustifyItem;
+class SvxMarginItem;
+class SvxOrientationItem;
+class SvxFontItem;
+class SvxPostureItem;
+class SvxWeightItem;
+class SvxFontHeightItem;
+class SvxUnderlineItem;
+class SvxCrossedOutItem;
+class SvxShadowedItem;
+class SvxContourItem;
+class SvxColorItem;
+class SvxBoxItem;
+class SvxAdjustItem;
+class SfxInt32Item;
+class SvxRotateModeItem;
+
+
+class ScNumFormatAbbrev;
+struct ScAfVersions;
+
+class ScAutoFormatData : public DataObject
+{
+private:
+ String aName;
+ USHORT nStrResId;
+ // gemeinsame Flags von StarCalc und StarWriter
+ BOOL bIncludeFont : 1;
+ BOOL bIncludeJustify : 1;
+ BOOL bIncludeFrame : 1;
+ BOOL bIncludeBackground : 1;
+
+ // StarCalc spezifisches
+ BOOL bIncludeValueFormat : 1;
+ BOOL bIncludeWidthHeight : 1;
+
+ // gemeinsame Attribute von StarCalc und StarWriter
+ SvxFontItem* pFont[16];
+ SvxFontHeightItem* pFontHeight[16];
+ SvxWeightItem* pFontWeight[16];
+ SvxPostureItem* pFontPosture[16];
+ SvxUnderlineItem* pFontUnderline[16];
+ SvxCrossedOutItem* pFontCrossedOut[16];
+ SvxContourItem* pFontContour[16];
+ SvxShadowedItem* pFontShadowed[16];
+ SvxColorItem* pFontColor[16];
+ SvxBoxItem* pBox[16];
+ SvxBrushItem* pBackground[16];
+
+ // StarWriter spezifisches
+ SvxAdjustItem* pAdjust[16];
+
+ // StarCalc spezifisches
+ SvxHorJustifyItem* pHorJustify[16];
+ SvxVerJustifyItem* pVerJustify[16];
+ SvxOrientationItem* pOrientation[16];
+ SvxMarginItem* pMargin[16];
+ SfxBoolItem* pLinebreak[16];
+ // ab SO5, 504k, gedrehter Text
+ SfxInt32Item* pRotateAngle[16];
+ SvxRotateModeItem* pRotateMode[16];
+
+ // Zahlenformat
+ ScNumFormatAbbrev* pNumFormat[16];
+
+public:
+ ScAutoFormatData();
+ ScAutoFormatData( const ScAutoFormatData& rData );
+ virtual ~ScAutoFormatData();
+
+ virtual DataObject* Clone() const { return new ScAutoFormatData(*this); }
+
+ void SetName(const String& rName) { aName = rName; nStrResId = USHRT_MAX; }
+ void GetName(String& rName) const { rName = aName; }
+
+ BOOL GetIncludeValueFormat() const { return bIncludeValueFormat; }
+ void SetIncludeValueFormat(const BOOL bValueFormat) { bIncludeValueFormat = bValueFormat; }
+
+ BOOL GetIncludeFont() const { return bIncludeFont; }
+ void SetIncludeFont(const BOOL bFont) { bIncludeFont = bFont; }
+
+ BOOL GetIncludeJustify() const { return bIncludeJustify; }
+ void SetIncludeJustify(const BOOL bJustify) { bIncludeJustify = bJustify; }
+
+ BOOL GetIncludeFrame() const { return bIncludeFrame; }
+ void SetIncludeFrame(const BOOL bFrame) { bIncludeFrame = bFrame; }
+
+ BOOL GetIncludeBackground() const { return bIncludeBackground; }
+ void SetIncludeBackground(const BOOL bBackground) { bIncludeBackground = bBackground; }
+
+ BOOL GetIncludeWidthHeight() const { return bIncludeWidthHeight; }
+ void SetIncludeWidthHeight(const BOOL bWidthHeight) { bIncludeWidthHeight = bWidthHeight; }
+
+ void GetNumFormat(USHORT nIndex, ScNumFormatAbbrev& rNumFormat) const;
+ void SetNumFormat(USHORT nIndex, const ScNumFormatAbbrev& rNumFormat);
+
+ void GetFont(USHORT nIndex, SvxFontItem& rFont) const;
+ void SetFont(USHORT nIndex, const SvxFontItem& rFont);
+
+ void GetFontHeight(USHORT nIndex, SvxFontHeightItem& rFontHeight) const;
+ void SetFontHeight(USHORT nIndex, const SvxFontHeightItem& rFontHeight);
+
+ void GetFontWeight(USHORT nIndex, SvxWeightItem& rFontWeight) const;
+ void SetFontWeight(USHORT nIndex, const SvxWeightItem& rFontWeight);
+
+ void GetFontPosture(USHORT nIndex, SvxPostureItem& rFontPosture) const;
+ void SetFontPosture(USHORT nIndex, const SvxPostureItem& rFontPosture);
+
+ void GetFontUnderline(USHORT nIndex, SvxUnderlineItem& rFontUnderline) const;
+ void SetFontUnderline(USHORT nIndex, const SvxUnderlineItem& rFontUnderline);
+
+ void GetFontCrossedOut(USHORT nIndex, SvxCrossedOutItem& rFontCrossedOut) const;
+ void SetFontCrossedOut(USHORT nIndex, const SvxCrossedOutItem& rFontCrossedOut);
+
+ void GetFontContour(USHORT nIndex, SvxContourItem& rFontContour) const;
+ void SetFontContour(USHORT nIndex, const SvxContourItem& rFontContour);
+
+ void GetFontShadowed(USHORT nIndex, SvxShadowedItem& rFontShadowed) const;
+ void SetFontShadowed(USHORT nIndex, const SvxShadowedItem& rFontShadowed);
+
+ void GetFontColor(USHORT nIndex, SvxColorItem& rFontColor) const;
+ void SetFontColor(USHORT nIndex, const SvxColorItem& rFontColor);
+
+ void GetHorJustify(USHORT nIndex, SvxHorJustifyItem& rHorJustify) const;
+ void SetHorJustify(USHORT nIndex, const SvxHorJustifyItem& rHorJustify);
+
+ void GetVerJustify(USHORT nIndex, SvxVerJustifyItem& rVerJustify) const;
+ void SetVerJustify(USHORT nIndex, const SvxVerJustifyItem& rVerJustify);
+
+ void GetOrientation(USHORT nIndex, SvxOrientationItem& rOrientation) const;
+ void SetOrientation(USHORT nIndex, const SvxOrientationItem& rOrientation);
+
+ void GetLinebreak(USHORT nIndex, SfxBoolItem& rLinebreak) const;
+ void SetLinebreak(USHORT nIndex, const SfxBoolItem& rLinebreak);
+
+ void GetMargin(USHORT nIndex, SvxMarginItem& rMargin) const;
+ void SetMargin(USHORT nIndex, const SvxMarginItem& rMargin);
+
+ void GetBox(USHORT nIndex, SvxBoxItem& rBox) const;
+ void SetBox(USHORT nIndex, const SvxBoxItem& rBox);
+
+ void GetBackground(USHORT nIndex, SvxBrushItem& rBackground) const;
+ void SetBackground(USHORT nIndex, const SvxBrushItem& rBackground);
+
+ void GetRotateAngle( USHORT nIndex, SfxInt32Item& rRotateAngle ) const;
+ void SetRotateAngle( USHORT nIndex, const SfxInt32Item& rRotateAngle );
+
+ void GetRotateMode( USHORT nIndex, SvxRotateModeItem& rRotateMode ) const;
+ void SetRotateMode( USHORT nIndex, const SvxRotateModeItem& rRotateMode );
+
+ const SfxPoolItem* GetItem( USHORT nIndex, USHORT nWhich ) const;
+ void PutItem( USHORT nIndex, const SfxPoolItem& rItem );
+
+ BOOL IsEqualData(USHORT nIndex1, USHORT nIndex2);
+
+ BOOL Load(SvStream& rStream, const ScAfVersions& rVersions);
+ BOOL Save(SvStream& rStream);
+
+#ifdef READ_OLDVERS
+ BOOL LoadOld( SvStream& rStream, const ScAfVersions& rVersions );
+#endif
+};
+
+class ScAutoFormat : public SortedCollection
+{
+private:
+ BOOL bSaveLater;
+
+public:
+ ScAutoFormat(USHORT nLim = 4, USHORT nDel = 4, BOOL bDup = FALSE);
+ ScAutoFormat(const ScAutoFormat& AutoFormat);
+ virtual ~ScAutoFormat();
+ virtual DataObject* Clone() const { return new ScAutoFormat(*this); }
+ ScAutoFormatData* operator[]( const USHORT nIndex) const {return (ScAutoFormatData*)At(nIndex);}
+ virtual short Compare(DataObject* pKey1, DataObject* pKey2) const;
+ BOOL Load();
+ BOOL Save();
+ USHORT FindIndexPerName( const String& rName ) const;
+ void SetSaveLater( BOOL bSet );
+ BOOL IsSaveLater() const { return bSaveLater; }
+};
+
+
+#endif
+
diff --git a/sc/inc/bigrange.hxx b/sc/inc/bigrange.hxx
new file mode 100644
index 000000000000..ae8f049f0bc2
--- /dev/null
+++ b/sc/inc/bigrange.hxx
@@ -0,0 +1,309 @@
+/*************************************************************************
+ *
+ * $RCSfile: bigrange.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_BIGRANGE_HXX
+#define SC_BIGRANGE_HXX
+
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+#ifndef SC_DOCUMENT_HXX
+#include "document.hxx"
+#endif
+
+
+static const INT32 nInt32Min = 0x80000000;
+static const INT32 nInt32Max = 0x7fffffff;
+
+
+class ScBigAddress
+{
+ INT32 nRow;
+ INT32 nCol;
+ INT32 nTab;
+
+public:
+ ScBigAddress() : nCol(0), nRow(0), nTab(0) {}
+ ScBigAddress( INT32 nColP, INT32 nRowP, INT32 nTabP )
+ : nCol( nColP ), nRow( nRowP ), nTab( nTabP ) {}
+ ScBigAddress( const ScBigAddress& r )
+ : nCol( r.nCol ), nRow( r.nRow ), nTab( r.nTab ) {}
+ ScBigAddress( const ScAddress& r )
+ : nCol( r.Col() ), nRow( r.Row() ), nTab( r.Tab() ) {}
+
+ INT32 Col() const { return nCol; }
+ INT32 Row() const { return nRow; }
+ INT32 Tab() const { return nTab; }
+
+ void Set( INT32 nColP, INT32 nRowP, INT32 nTabP )
+ { nCol = nColP; nRow = nRowP; nTab = nTabP; }
+ void SetCol( INT32 nColP ) { nCol = nColP; }
+ void SetRow( INT32 nRowP ) { nRow = nRowP; }
+ void SetTab( INT32 nTabP ) { nTab = nTabP; }
+ void IncCol( INT32 n = 1 ) { nCol += n; }
+ void IncRow( INT32 n = 1 ) { nRow += n; }
+ void IncTab( INT32 n = 1 ) { nTab += n; }
+
+ void GetVars( INT32& nColP, INT32& nRowP, INT32& nTabP ) const
+ { nColP = nCol; nRowP = nRow; nTabP = nTab; }
+
+ inline void PutInOrder( ScBigAddress& r );
+ inline BOOL IsValid( const ScDocument* ) const;
+ inline ScAddress MakeAddress() const;
+
+ ScBigAddress& operator=( const ScBigAddress& r )
+ { nCol = r.nCol; nRow = r.nRow; nTab = r.nTab; return *this; }
+ ScBigAddress& operator=( const ScAddress& r )
+ { nCol = r.Col(); nRow = r.Row(); nTab = r.Tab(); return *this; }
+ int operator==( const ScBigAddress& r ) const
+ { return nCol == r.nCol && nRow == r.nRow && nTab == r.nTab; }
+ int operator!=( const ScBigAddress& r ) const
+ { return !operator==( r ); }
+
+ friend inline SvStream& operator<< ( SvStream& rStream, const ScBigAddress& rAdr );
+ friend inline SvStream& operator>> ( SvStream& rStream, ScBigAddress& rAdr );
+};
+
+
+inline void ScBigAddress::PutInOrder( ScBigAddress& r )
+{
+ INT32 nTmp;
+ if ( r.nCol < nCol )
+ {
+ nTmp = r.nCol;
+ r.nCol = nCol;
+ nCol = nTmp;
+ }
+ if ( r.nRow < nRow )
+ {
+ nTmp = r.nRow;
+ r.nRow = nRow;
+ nRow = nTmp;
+ }
+ if ( r.nTab < nTab )
+ {
+ nTmp = r.nTab;
+ r.nTab = nTab;
+ nTab = nTmp;
+ }
+}
+
+
+inline BOOL ScBigAddress::IsValid( const ScDocument* pDoc ) const
+{ //! Min/Max sind ok, kennzeichnen ganze Col/Row/Tab
+ return
+ ((0 <= nCol && nCol <= MAXCOL)
+ || nCol == nInt32Min || nCol == nInt32Max) &&
+ ((0 <= nRow && nRow <= MAXROW)
+ || nRow == nInt32Min || nRow == nInt32Max) &&
+ ((0 <= nTab && nTab < pDoc->GetTableCount())
+ || nTab == nInt32Min || nTab == nInt32Max)
+ ;
+}
+
+
+inline ScAddress ScBigAddress::MakeAddress() const
+{
+ USHORT nColA, nRowA, nTabA;
+
+ if ( nCol < 0 )
+ nColA = 0;
+ else if ( nCol > MAXCOL )
+ nColA = MAXCOL;
+ else
+ nColA = (USHORT) nCol;
+
+ if ( nRow < 0 )
+ nRowA = 0;
+ else if ( nRow > MAXROW )
+ nRowA = MAXROW;
+ else
+ nRowA = (USHORT) nRow;
+
+ if ( nTab < 0 )
+ nTabA = 0;
+ else if ( nTab > MAXTAB )
+ nTabA = MAXTAB;
+ else
+ nTabA = (USHORT) nTab;
+
+ return ScAddress( nColA, nRowA, nTabA );
+}
+
+
+inline SvStream& operator<< ( SvStream& rStream, const ScBigAddress& rAdr )
+{
+ rStream << rAdr.nCol << rAdr.nRow << rAdr.nTab;
+ return rStream;
+}
+
+
+inline SvStream& operator>> ( SvStream& rStream, ScBigAddress& rAdr )
+{
+ rStream >> rAdr.nCol >> rAdr.nRow >> rAdr.nTab;
+ return rStream;
+}
+
+
+class ScBigRange
+{
+public:
+
+ ScBigAddress aStart;
+ ScBigAddress aEnd;
+
+ ScBigRange() : aStart(), aEnd() {}
+ ScBigRange( const ScBigAddress& s, const ScBigAddress& e )
+ : aStart( s ), aEnd( e ) { aStart.PutInOrder( aEnd ); }
+ ScBigRange( const ScBigRange& r )
+ : aStart( r.aStart ), aEnd( r.aEnd ) {}
+ ScBigRange( const ScRange& r )
+ : aStart( r.aStart ), aEnd( r.aEnd ) {}
+ ScBigRange( const ScBigAddress& r )
+ : aStart( r ), aEnd( r ) {}
+ ScBigRange( const ScAddress& r )
+ : aStart( r ), aEnd( r ) {}
+ ScBigRange( INT32 nCol, INT32 nRow, INT32 nTab )
+ : aStart( nCol, nRow, nTab ), aEnd( aStart ) {}
+ ScBigRange( INT32 nCol1, INT32 nRow1, INT32 nTab1,
+ INT32 nCol2, INT32 nRow2, INT32 nTab2 )
+ : aStart( nCol1, nRow1, nTab1 ),
+ aEnd( nCol2, nRow2, nTab2 ) {}
+
+ void Set( INT32 nCol1, INT32 nRow1, INT32 nTab1,
+ INT32 nCol2, INT32 nRow2, INT32 nTab2 )
+ { aStart.Set( nCol1, nRow1, nTab1 );
+ aEnd.Set( nCol2, nRow2, nTab2 ); }
+
+ void GetVars( INT32& nCol1, INT32& nRow1, INT32& nTab1,
+ INT32& nCol2, INT32& nRow2, INT32& nTab2 ) const
+ { aStart.GetVars( nCol1, nRow1, nTab1 );
+ aEnd.GetVars( nCol2, nRow2, nTab2 ); }
+
+ BOOL IsValid( const ScDocument* pDoc ) const
+ { return aStart.IsValid( pDoc ) && aEnd.IsValid( pDoc ); }
+ inline ScRange MakeRange() const
+ { return ScRange( aStart.MakeAddress(),
+ aEnd.MakeAddress() ); }
+
+ inline BOOL In( const ScBigAddress& ) const; // ist Address& in Range?
+ inline BOOL In( const ScBigRange& ) const; // ist Range& in Range?
+ inline BOOL Intersects( const ScBigRange& ) const; // ueberschneiden sich zwei Ranges?
+
+ ScBigRange& operator=( const ScBigRange& r )
+ { aStart = r.aStart; aEnd = r.aEnd; return *this; }
+ int operator==( const ScBigRange& r ) const
+ { return (aStart == r.aStart) && (aEnd == r.aEnd); }
+ int operator!=( const ScBigRange& r ) const
+ { return !operator==( r ); }
+
+ friend inline SvStream& operator<< ( SvStream& rStream, const ScBigRange& rRange );
+ friend inline SvStream& operator>> ( SvStream& rStream, ScBigRange& rRange );
+};
+
+
+inline BOOL ScBigRange::In( const ScBigAddress& rAddr ) const
+{
+ return
+ aStart.Col() <= rAddr.Col() && rAddr.Col() <= aEnd.Col() &&
+ aStart.Row() <= rAddr.Row() && rAddr.Row() <= aEnd.Row() &&
+ aStart.Tab() <= rAddr.Tab() && rAddr.Tab() <= aEnd.Tab();
+}
+
+
+inline BOOL ScBigRange::In( const ScBigRange& r ) const
+{
+ return
+ aStart.Col() <= r.aStart.Col() && r.aEnd.Col() <= aEnd.Col() &&
+ aStart.Row() <= r.aStart.Row() && r.aEnd.Row() <= aEnd.Row() &&
+ aStart.Tab() <= r.aStart.Tab() && r.aEnd.Tab() <= aEnd.Tab();
+}
+
+
+inline BOOL ScBigRange::Intersects( const ScBigRange& r ) const
+{
+ return !(
+ Min( aEnd.Col(), r.aEnd.Col() ) < Max( aStart.Col(), r.aStart.Col() )
+ || Min( aEnd.Row(), r.aEnd.Row() ) < Max( aStart.Row(), r.aStart.Row() )
+ || Min( aEnd.Tab(), r.aEnd.Tab() ) < Max( aStart.Tab(), r.aStart.Tab() )
+ );
+}
+
+
+inline SvStream& operator<< ( SvStream& rStream, const ScBigRange& rRange )
+{
+ rStream << rRange.aStart;
+ rStream << rRange.aEnd;
+ return rStream;
+}
+
+
+inline SvStream& operator>> ( SvStream& rStream, ScBigRange& rRange )
+{
+ rStream >> rRange.aStart;
+ rStream >> rRange.aEnd;
+ return rStream;
+}
+
+
+
+#endif
diff --git a/sc/inc/brdcst.hxx b/sc/inc/brdcst.hxx
new file mode 100644
index 000000000000..48da9616900c
--- /dev/null
+++ b/sc/inc/brdcst.hxx
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * $RCSfile: brdcst.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SC_BRDCST_HXX
+#define _SC_BRDCST_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef _RTTI_HXX //autogen
+#include <tools/rtti.hxx>
+#endif
+#ifndef _SFXHINT_HXX //autogen
+#include <svtools/hint.hxx>
+#endif
+#ifndef _SFXSMPLHINT_HXX //autogen
+#include <svtools/smplhint.hxx>
+#endif
+class ScBaseCell;
+
+#define SC_HINT_DYING SFX_HINT_DYING
+#define SC_HINT_DATACHANGED SFX_HINT_DATACHANGED
+
+class ScHint : public SfxSimpleHint
+{
+private:
+ ScAddress aAddress;
+ ScBaseCell* pCell;
+
+public:
+ TYPEINFO();
+ ScHint( ULONG n, const ScAddress& a, ScBaseCell* p )
+ : SfxSimpleHint( n ), aAddress( a ), pCell( p ) {}
+ ScBaseCell* GetCell() const { return pCell; }
+ const ScAddress& GetAddress() const { return aAddress; }
+};
+
+class ScAreaChangedHint : public SfxHint
+{
+private:
+ ScRange aNewRange;
+public:
+ TYPEINFO();
+ ScAreaChangedHint(const ScRange& rRange) : aNewRange(rRange) {}
+ const ScRange& GetRange() const { return aNewRange; }
+};
+
+
+#endif
diff --git a/sc/inc/callform.hxx b/sc/inc/callform.hxx
new file mode 100644
index 000000000000..35f5d952cc82
--- /dev/null
+++ b/sc/inc/callform.hxx
@@ -0,0 +1,161 @@
+/*************************************************************************
+ *
+ * $RCSfile: callform.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CALLFORM_HXX
+#define SC_CALLFORM_HXX
+
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+
+//------------------------------------------------------------------------
+#define MAXFUNCPARAM 16
+#define MAXARRSIZE 0xfffe
+
+//------------------------------------------------------------------------
+#ifndef WIN
+#ifndef WNT
+#define CALLTYPE
+#else
+#define CALLTYPE __cdecl
+#endif
+#else
+#define PASCAL _pascal
+#define FAR _far
+#define CALLTYPE FAR PASCAL
+#endif
+
+extern "C" {
+typedef void (CALLTYPE* AdvData)( double& nHandle, void* pData );
+}
+
+//------------------------------------------------------------------------
+enum ParamType
+{
+ PTR_DOUBLE,
+ PTR_STRING,
+ PTR_DOUBLE_ARR,
+ PTR_STRING_ARR,
+ PTR_CELL_ARR,
+ NONE
+};
+
+//------------------------------------------------------------------------
+class ModuleData;
+class FuncData : public DataObject
+{
+friend class FuncCollection;
+ const ModuleData* pModuleData;
+ String aInternalName;
+ String aFuncName;
+ USHORT nNumber;
+ USHORT nParamCount;
+ ParamType eAsyncType;
+ ParamType eParamType[MAXFUNCPARAM];
+private:
+ FuncData(const String& rIName);
+public:
+ FuncData(const ModuleData*pModule,
+ const String& rIName,
+ const String& rFName,
+ USHORT nNo,
+ USHORT nCount,
+ const ParamType* peType,
+ ParamType eType);
+ FuncData(const FuncData& rData);
+ virtual DataObject* Clone() const { return new FuncData(*this); }
+
+ const String& GetModuleName() const;
+ const String& GetInternalName() const { return aInternalName; }
+ const String& GetFuncName() const { return aFuncName; }
+ USHORT GetParamCount() const { return nParamCount; }
+ ParamType GetParamType(USHORT nIndex) const { return eParamType[nIndex]; }
+ ParamType GetReturnType() const { return eParamType[0]; }
+ ParamType GetAsyncType() const { return eAsyncType; }
+ BOOL Call(void** ppParam);
+ BOOL Advice(AdvData pfCallback);
+ BOOL Unadvice(double nHandle);
+
+ // Name und Beschreibung des Parameters nParam.
+ // nParam==0 => Desc := Funktions-Beschreibung,
+ // Name := n/a
+ BOOL GetParamDesc( String& aName, String& aDesc, USHORT nParam );
+};
+
+
+//------------------------------------------------------------------------
+class FuncCollection : public SortedCollection
+{
+public:
+ FuncCollection(USHORT nLim = 4, USHORT nDel = 4, BOOL bDup = FALSE) : SortedCollection ( nLim, nDel, bDup ) {}
+ FuncCollection(const FuncCollection& rFuncCollection) : SortedCollection ( rFuncCollection ) {}
+
+ virtual DataObject* Clone() const { return new FuncCollection(*this); }
+ FuncData* operator[]( const USHORT nIndex) const {return (FuncData*)At(nIndex);}
+ virtual short Compare(DataObject* pKey1, DataObject* pKey2) const;
+ BOOL SearchFunc( const String& rName, USHORT& rIndex ) const;
+};
+
+
+BOOL InitExternalFunc(const rtl::OUString& rModuleName);
+void ExitExternalFunc();
+
+#endif
diff --git a/sc/inc/cell.hxx b/sc/inc/cell.hxx
new file mode 100644
index 000000000000..a5e2473671ac
--- /dev/null
+++ b/sc/inc/cell.hxx
@@ -0,0 +1,596 @@
+/*************************************************************************
+ *
+ * $RCSfile: cell.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CELL_HXX
+#define SC_CELL_HXX
+
+#include <stddef.h>
+
+#ifndef _SVMEMPOOL_HXX //autogen
+#include <tools/mempool.hxx>
+#endif
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+#ifndef SC_COMPILER_HXX
+#include "compiler.hxx"
+#endif
+
+#define USE_MEMPOOL
+#define TEXTWIDTH_DIRTY 0xffff
+
+class ScDocument;
+class EditTextObject;
+class ScMatrix;
+class ScCompiler;
+class SfxBroadcaster;
+class ScBroadcasterList;
+class ScCodeArray;
+class ScTokenArray;
+
+class ScMultipleReadHeader;
+class ScMultipleWriteHeader;
+
+class ScBaseCell
+{
+protected:
+ ScPostIt* pNote;
+ ScBroadcasterList* pBroadcaster;
+ USHORT nTextWidth;
+ BYTE eCellType; // enum CellType - BYTE spart Speicher
+
+public: // fuer Idle-Berechnung
+ USHORT GetTextWidth() const { return nTextWidth; }
+ void SetTextWidth( USHORT nNew ) { nTextWidth = nNew; }
+
+protected:
+ ~ScBaseCell(); // nicht virtuell -> darf nicht direkt aufgerufen werden
+
+public:
+ inline ScBaseCell( CellType eNewType );
+ inline ScBaseCell( const ScBaseCell& rBaseCell );
+
+ ScBaseCell* Clone(ScDocument* pDoc) const;
+ void Delete(); // simulierter virtueller Destructor
+ CellType GetCellType() const;
+
+ void SetNote( const ScPostIt& rNote );
+ BOOL GetNote( ScPostIt& rNote ) const;
+ const ScPostIt* GetNotePtr() const;
+ inline void DeleteNote();
+
+ inline ScBroadcasterList* GetBroadcaster() const;
+ void SetBroadcaster(ScBroadcasterList* pNew);
+ inline void ForgetBroadcaster();
+ inline void SwapBroadcaster(ScBaseCell& rOther); // zum Sortieren
+
+ void LoadNote( SvStream& rStream );
+
+ // String- oder EditCell
+ static ScBaseCell* CreateTextCell( const String& rString, ScDocument* );
+
+ void StartListeningTo( ScDocument* pDoc,
+ BOOL bOnlyRelNames = FALSE );
+ void EndListeningTo( ScDocument* pDoc,
+ BOOL bOnlyRelNames = FALSE,
+ ScTokenArray* pArr = NULL,
+ ScAddress aPos = ScAddress() );
+
+ BOOL HasValueData() const;
+ BOOL HasStringData() const;
+ String GetStringData() const; // nur echte Strings
+
+ static BOOL CellEqual( const ScBaseCell* pCell1, const ScBaseCell* pCell2 );
+};
+
+
+
+class ScValueCell : public ScBaseCell
+{
+private:
+ double aValue;
+
+public:
+
+#ifdef USE_MEMPOOL
+ DECL_FIXEDMEMPOOL_NEWDEL( ScValueCell )
+#endif
+ ~ScValueCell();
+
+ ScValueCell();
+ ScValueCell( const double& rValue );
+ ScValueCell( const ScValueCell& rScValueCell );
+ ScValueCell( SvStream& rStream, USHORT nVer );
+ ScBaseCell* Clone() const;
+
+ void SetValue( const double& rValue );
+ double GetValue() const;
+
+ void Save( SvStream& rStream ) const;
+};
+
+
+class ScStringCell : public ScBaseCell
+{
+private:
+ String aString;
+
+public:
+
+#ifdef USE_MEMPOOL
+ DECL_FIXEDMEMPOOL_NEWDEL( ScStringCell )
+#endif
+#ifdef DBG_UTIL
+ ~ScStringCell();
+#endif
+
+ ScStringCell();
+ ScStringCell( const String& rString );
+ ScStringCell( const ScStringCell& rScStringCell );
+ ScStringCell( SvStream& rStream, USHORT nVer );
+ ScBaseCell* Clone() const;
+
+ void SetString( const String& rString );
+ void GetString( String& rString ) const;
+
+ void Save( SvStream& rStream ) const;
+};
+
+
+class ScEditCell : public ScBaseCell
+{
+private:
+ EditTextObject* pData;
+ String* pString; // fuer schnelleren Zugriff von Formeln
+ ScDocument* pDoc; // fuer EditEngine Zugriff mit Pool
+
+ void SetTextObject( const EditTextObject* pObject,
+ const SfxItemPool* pFromPool );
+
+ // not implemented
+ ScEditCell( const ScEditCell& );
+ ScEditCell& operator=( const ScEditCell& );
+
+public:
+
+#ifdef USE_MEMPOOL
+ DECL_FIXEDMEMPOOL_NEWDEL( ScEditCell )
+#endif
+
+ ~ScEditCell(); // wegen pData immer!
+
+ ScEditCell( ScDocument* );
+ ScEditCell( const EditTextObject* pObject, ScDocument*,
+ const SfxItemPool* pFromPool /* = NULL */ );
+ ScEditCell( const ScEditCell& rEditCell, ScDocument* );
+ ScEditCell( SvStream& rStream, USHORT nVer, ScDocument* );
+ // fuer Zeilenumbrueche
+ ScEditCell( const String& rString, ScDocument* );
+ ScBaseCell* Clone( ScDocument* ) const;
+
+ void SetData( const EditTextObject* pObject,
+ const SfxItemPool* pFromPool /* = NULL */ );
+ void GetData( const EditTextObject*& rpObject ) const;
+ void GetString( String& rString ) const;
+
+ const EditTextObject* GetData() const { return pData; }
+
+ void Save( SvStream& rStream ) const;
+};
+
+enum ScMatrixMode {
+ MM_NONE = 0, // keine Matrixformel
+ MM_FORMULA = 1, // Matrixformel
+ MM_REFERENCE = 2, // Referenz auf Matrixformel (MATVALUE)
+ MM_FAKE = 3 // Formel als Matrixformel
+};
+
+
+class ScIndexMap;
+
+class ScFormulaCell : public ScBaseCell, public SfxListener
+{
+private:
+ static INT8 nIterMode; // Markiert cirk. Iteration
+ String aErgString;
+ double nErgValue;
+ ScTokenArray* pCode; // das neue Token-Array
+ ScDocument* pDocument;
+ ScMatrix* pMatrix; // Pointer auf Ergebnis-Matrix
+ ScFormulaCell* pPrevious;
+ ScFormulaCell* pNext;
+ ScFormulaCell* pPreviousTrack;
+ ScFormulaCell* pNextTrack;
+ ULONG nFormatIndex; // durch Berechnung gesetztes Format
+ USHORT nMatCols; // wenn MM_FORMULA Matrixzelle
+ USHORT nMatRows; // belegte Area
+ short nFormatType;
+ BOOL bIsValue : 1; // Ergebnis ist numerisches
+ BOOL bDirty : 1; // muss berechnet werden
+ BOOL bChanged : 1; // hat sich fuer die Darstellung was geaendert
+ BOOL bRunning : 1; // wird gerade interpretiert
+ BOOL bCompile : 1; // muss compiliert werden
+ BOOL bSubTotal : 1; // ist ein SubTotal
+ BOOL bIsIterCell : 1; // kennzeichnet Zellen mit cirk. Refs.
+ BOOL bInChangeTrack: 1; // Zelle ist im ChangeTrack
+ BYTE cMatrixFlag; // 1 = links oben, 2 = Restmatrix, 0 = keine
+
+public:
+
+#ifdef USE_MEMPOOL
+ DECL_FIXEDMEMPOOL_NEWDEL( ScFormulaCell )
+#endif
+
+ ScAddress aPos;
+
+ ~ScFormulaCell();
+ ScFormulaCell();
+
+ // leere Zelle, ggf. mit fertigem TokenArray
+ ScFormulaCell( ScDocument*, const ScAddress&, const ScTokenArray* = NULL, BYTE=0 );
+ // mit Formel
+ ScFormulaCell( ScDocument* pDoc, const ScAddress&,
+ const String& rFormula, BYTE bMatInd = 0 );
+ // copy-ctor
+ ScFormulaCell( ScDocument* pDoc, const ScAddress& rPos,
+ const ScFormulaCell& rScFormulaCell );
+ // lesender ctor
+ ScFormulaCell( ScDocument* pDoc, const ScAddress&,
+ SvStream& rStream, ScMultipleReadHeader& rHdr );
+
+ ScBaseCell* Clone(ScDocument* pDoc, const ScAddress&,
+ BOOL bNoListening = FALSE ) const;
+
+ void GetFormula( String& rFormula ) const;
+ void GetEnglishFormula( String& rFormula, BOOL bCompileXML = FALSE ) const;
+
+ void Save( SvStream& rStream, ScMultipleWriteHeader& rHdr ) const;
+
+ void SetDirty();
+ inline void SetDirtyVar() { bDirty = TRUE; }
+ BOOL GetDirty() const { return bDirty; }
+ void Compile(const String& rFormula, BOOL bNoListening = FALSE );
+ void CompileTokenArray( BOOL bNoListening = FALSE );
+ void CompileXML(); // compile temporary string tokens
+ void CalcAfterLoad();
+ void Interpret();
+
+ BOOL HasOneReference( ScRange& r ) const;
+ BOOL HasRelNameReference() const;
+ BOOL HasDBArea() const;
+ BOOL HasColRowName() const;
+
+ void UpdateReference(UpdateRefMode eUpdateRefMode,
+ const ScRange& r,
+ short nDx, short nDy, short nDz,
+ ScDocument* pUndoDoc = NULL );
+
+ void TransposeReference();
+ void UpdateTranspose( const ScRange& rSource, const ScAddress& rDest,
+ ScDocument* pUndoDoc );
+
+ void UpdateGrow( const ScRange& rArea, USHORT nGrowX, USHORT nGrowY );
+
+ void UpdateInsertTab(USHORT nTable);
+ void UpdateInsertTabAbs(USHORT nTable);
+ BOOL UpdateDeleteTab(USHORT nTable, BOOL bIsMove = FALSE);
+ void UpdateMoveTab(USHORT nOldPos, USHORT nNewPos, USHORT nTabNo);
+ void UpdateRenameTab(USHORT nTable, const String& rName);
+ BOOL TestTabRefAbs(USHORT nTable);
+ void UpdateCompile( BOOL bForceIfNameInUse = FALSE );
+ BOOL IsRangeNameInUse(USHORT nIndex) const;
+ void ReplaceRangeNamesInUse( const ScIndexMap& rMap );
+ BOOL IsSubTotal() const { return bSubTotal; }
+ BOOL IsChanged() const { return bChanged; }
+ void ResetChanged() { bChanged = FALSE; }
+ BOOL IsValue();
+ double GetValue();
+ void GetString( String& rString );
+ void GetMatrix( ScMatrix** pMatrix );
+ BOOL GetMatrixOrigin( ScAddress& rPos ) const;
+ void GetResultDimensions( USHORT& rCols, USHORT& rRows );
+ USHORT GetMatrixEdge( ScAddress& rOrgPos );
+ USHORT GetErrCode();
+ short GetFormatType() const { return nFormatType; }
+ ULONG GetFormatIndex() const { return nFormatIndex; }
+ void GetFormatInfo( short& nType, ULONG& nIndex ) const
+ { nType = nFormatType; nIndex = nFormatIndex; }
+ BYTE GetMatrixFlag() const { return cMatrixFlag; }
+ ScTokenArray* GetCode() const { return pCode; }
+
+ BOOL IsRunning() const { return bRunning; }
+ void SetRunning( BOOL bVal ) { bRunning = bVal; }
+ void CompileDBFormula();
+ void CompileDBFormula( BOOL bCreateFormulaString );
+ void CompileNameFormula( BOOL bCreateFormulaString );
+ void CompileColRowNameFormula();
+ ScFormulaCell* GetPrevious() const { return pPrevious; }
+ ScFormulaCell* GetNext() const { return pNext; }
+ void SetPrevious( ScFormulaCell* pF ) { pPrevious = pF; }
+ void SetNext( ScFormulaCell* pF ) { pNext = pF; }
+ ScFormulaCell* GetPreviousTrack() const { return pPreviousTrack; }
+ ScFormulaCell* GetNextTrack() const { return pNextTrack; }
+ void SetPreviousTrack( ScFormulaCell* pF ) { pPreviousTrack = pF; }
+ void SetNextTrack( ScFormulaCell* pF ) { pNextTrack = pF; }
+
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+ void SetCompile( BOOL bVal ) { bCompile = bVal; }
+ ScDocument* GetDocument() const { return pDocument; }
+ void SetMatColsRows( USHORT nCols, USHORT nRows )
+ { nMatCols = nCols; nMatRows = nRows; }
+ void GetMatColsRows( USHORT& nCols, USHORT& nRows ) const
+ { nCols = nMatCols; nRows = nMatRows; }
+
+ // ob Zelle im ChangeTrack und nicht im echten Dokument ist
+ void SetInChangeTrack( BOOL bVal ) { bInChangeTrack = bVal; }
+ BOOL IsInChangeTrack() const { return bInChangeTrack; }
+
+ // Zu Typ und Format das entsprechende Standardformat.
+ // Bei Format "Standard" evtl. das in die Formelzelle
+ // uebernommene Format.
+ ULONG GetStandardFormat( SvNumberFormatter& rFormatter, ULONG nFormat ) const;
+
+ // fuer die Importfilter!
+ void AddRecalcMode( ScRecalcMode );
+ void SetDouble( double n ) { nErgValue = n; bIsValue = TRUE; }
+ void SetString( const String& r ) { aErgString = r; bIsValue = FALSE; }
+ void SetErrCode( USHORT n );
+};
+
+// Iterator fuer Referenzen in einer Formelzelle
+class ScDetectiveRefIter
+{
+private:
+ ScTokenArray* pCode;
+ ScAddress aPos;
+public:
+ ScDetectiveRefIter( ScFormulaCell* pCell );
+ BOOL GetNextRef( ScTripel& rStart, ScTripel& rEnd );
+};
+
+class ScNoteCell : public ScBaseCell
+{
+public:
+
+#ifdef USE_MEMPOOL
+ DECL_FIXEDMEMPOOL_NEWDEL( ScNoteCell )
+#endif
+#ifdef DBG_UTIL
+ ~ScNoteCell();
+#endif
+
+ ScNoteCell();
+ ScNoteCell( const ScPostIt& rNote );
+ ScNoteCell( const ScNoteCell& rScNoteCell );
+ ScNoteCell( SvStream& rStream, USHORT nVer );
+ ScBaseCell* Clone() const;
+
+ void Save( SvStream& rStream ) const;
+};
+
+
+// ScBaseCell
+
+inline ScBaseCell::ScBaseCell( CellType eNewType ) :
+ eCellType( eNewType ),
+ pNote( NULL ),
+ pBroadcaster( NULL ), nTextWidth( TEXTWIDTH_DIRTY )
+{
+}
+
+inline ScBaseCell::ScBaseCell( const ScBaseCell& rBaseCell ) :
+ eCellType( rBaseCell.eCellType ),
+ pBroadcaster( NULL ), nTextWidth( rBaseCell.nTextWidth )
+{
+ if (rBaseCell.pNote)
+ pNote = new ScPostIt( *rBaseCell.pNote );
+ else
+ pNote = NULL;
+}
+
+
+inline CellType ScBaseCell::GetCellType() const
+{
+ return (CellType)eCellType;
+}
+
+inline const ScPostIt* ScBaseCell::GetNotePtr() const
+{
+ return pNote;
+}
+
+inline void ScBaseCell::DeleteNote()
+{
+ delete pNote;
+ pNote = NULL;
+}
+
+inline ScBroadcasterList* ScBaseCell::GetBroadcaster() const
+{
+ return pBroadcaster;
+}
+
+inline void ScBaseCell::ForgetBroadcaster()
+{
+ pBroadcaster = NULL;
+}
+
+inline void ScBaseCell::SwapBroadcaster(ScBaseCell& rOther)
+{
+ ScBroadcasterList* pTemp = pBroadcaster;
+ pBroadcaster = rOther.pBroadcaster;
+ rOther.pBroadcaster = pTemp;
+}
+
+// ScValueCell
+
+inline ScValueCell::ScValueCell() :
+ ScBaseCell( CELLTYPE_VALUE )
+{
+ aValue = 0.0;
+}
+
+inline ScValueCell::ScValueCell( const double& rValue ) :
+ ScBaseCell( CELLTYPE_VALUE )
+{
+ aValue = rValue;
+}
+
+inline ScValueCell::ScValueCell(const ScValueCell& rScValueCell) :
+ ScBaseCell( rScValueCell ),
+ aValue( rScValueCell.aValue )
+{
+}
+
+inline ScBaseCell* ScValueCell::Clone() const
+{
+ return new ScValueCell(*this);
+}
+
+inline void ScValueCell::SetValue( const double& rValue )
+{
+ aValue = rValue;
+}
+
+inline double ScValueCell::GetValue() const
+{
+ return aValue;
+}
+
+
+
+// ScStringCell
+
+inline ScStringCell::ScStringCell() :
+ ScBaseCell( CELLTYPE_STRING )
+{
+}
+
+inline ScStringCell::ScStringCell( const ScStringCell& rScStringCell ) :
+ ScBaseCell( rScStringCell ),
+ aString( rScStringCell.aString )
+{
+}
+
+inline ScStringCell::ScStringCell( const String& rString ) :
+ ScBaseCell( CELLTYPE_STRING ),
+ aString( rString )
+{
+}
+
+inline ScBaseCell* ScStringCell::Clone() const
+{
+ return new ScStringCell(*this);
+}
+
+inline void ScStringCell::GetString( String& rString ) const
+{
+ rString = aString;
+}
+
+inline void ScStringCell::SetString( const String& rString )
+{
+ aString = rString;
+}
+
+
+/*
+
+// ScFormulaCell
+
+inline ScBaseCell* ScFormulaCell::Clone(ScDocument* pDoc) const
+{
+ return new ScFormulaCell(pDoc, *this);
+}
+*/
+
+
+
+// ScNoteCell
+
+inline ScNoteCell::ScNoteCell() :
+ ScBaseCell( CELLTYPE_NOTE )
+{
+}
+
+inline ScNoteCell::ScNoteCell( const ScNoteCell& rScNoteCell ) :
+ ScBaseCell( rScNoteCell )
+{
+}
+
+inline ScNoteCell::ScNoteCell( const ScPostIt& rNote ) :
+ ScBaseCell( CELLTYPE_NOTE )
+{
+ ScBaseCell::SetNote(rNote);
+}
+
+inline ScBaseCell* ScNoteCell::Clone() const
+{
+ return new ScNoteCell(*this);
+}
+
+
+#endif
+
diff --git a/sc/inc/cellform.hxx b/sc/inc/cellform.hxx
new file mode 100644
index 000000000000..db9615dd3241
--- /dev/null
+++ b/sc/inc/cellform.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellform.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CELLFORM_HXX
+#define SC_CELLFORM_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class String;
+
+class ScBaseCell;
+class SvNumberFormatter;
+class Color;
+
+enum ScForceTextFmt {
+ ftDontForce, // Zahlen als Zahlen
+ ftForce, // Zahlen als Text
+ ftCheck // ist das Zahlenformat ein Textformat?
+};
+
+//------------------------------------------------------------------------
+
+class ScCellFormat
+{
+public:
+ static void GetString( ScBaseCell* pCell, ULONG nFormat, String& rString,
+ Color** ppColor, SvNumberFormatter& rFormatter,
+ BOOL bNullVals = TRUE,
+ BOOL bFormula = FALSE,
+ ScForceTextFmt eForceTextFmt = ftDontForce );
+
+ static void GetInputString( ScBaseCell* pCell, ULONG nFormat, String& rString,
+ SvNumberFormatter& rFormatter );
+};
+
+
+
+
+#endif
+
diff --git a/sc/inc/cellsuno.hxx b/sc/inc/cellsuno.hxx
new file mode 100644
index 000000000000..0c3992a32e33
--- /dev/null
+++ b/sc/inc/cellsuno.hxx
@@ -0,0 +1,1405 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellsuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CELLSUNO_HXX
+#define SC_CELLSUNO_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScRange, ScAddress
+#endif
+
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx" // ScRangeList
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_TABLE_XTABLECHARTSSUPPLIER_HPP_
+#include <com/sun/star/table/XTableChartsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CHART_XCHARTDATAARRAY_HPP_
+#include <com/sun/star/chart/XChartDataArray.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFIELDSSUPPLIER_HPP_
+#include <com/sun/star/text/XTextFieldsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XDRAWPAGESUPPLIER_HPP_
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCELLRANGE_HPP_
+#include <com/sun/star/sheet/XSheetCellRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XFORMULAQUERY_HPP_
+#include <com/sun/star/sheet/XFormulaQuery.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGEADDRESSABLE_HPP_
+#include <com/sun/star/sheet/XCellRangeAddressable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETOPERATION_HPP_
+#include <com/sun/star/sheet/XSheetOperation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCELLRANGES_HPP_
+#include <com/sun/star/sheet/XSheetCellRanges.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLFORMATRANGESSUPPLIER_HPP_
+#include <com/sun/star/sheet/XCellFormatRangesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGESQUERY_HPP_
+#include <com/sun/star/sheet/XCellRangesQuery.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETFILTERABLEEX_HPP_
+#include <com/sun/star/sheet/XSheetFilterableEx.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEET_HPP_
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETPAGEBREAK_HPP_
+#include <com/sun/star/sheet/XSheetPageBreak.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGEMOVEMENT_HPP_
+#include <com/sun/star/sheet/XCellRangeMovement.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XTEXT_HPP_
+#include <com/sun/star/text/XText.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XPRINTAREAS_HPP_
+#include <com/sun/star/sheet/XPrintAreas.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETLINKABLE_HPP_
+#include <com/sun/star/sheet/XSheetLinkable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSUBTOTALCALCULATABLE_HPP_
+#include <com/sun/star/sheet/XSubTotalCalculatable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XARRAYFORMULARANGE_HPP_
+#include <com/sun/star/sheet/XArrayFormulaRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLSERIES_HPP_
+#include <com/sun/star/sheet/XCellSeries.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XMULTIPLEOPERATION_HPP_
+#include <com/sun/star/sheet/XMultipleOperation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLADDRESSABLE_HPP_
+#include <com/sun/star/sheet/XCellAddressable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XREPLACEABLE_HPP_
+#include <com/sun/star/util/XReplaceable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XINDENT_HPP_
+#include <com/sun/star/util/XIndent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
+#include <com/sun/star/container/XNameContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XMERGEABLE_HPP_
+#include <com/sun/star/util/XMergeable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XAUTOFORMATTABLE_HPP_
+#include <com/sun/star/table/XAutoFormattable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XSORTABLE_HPP_
+#include <com/sun/star/util/XSortable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XIMPORTABLE_HPP_
+#include <com/sun/star/util/XImportable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XCOLUMNROWRANGE_HPP_
+#include <com/sun/star/table/XColumnRowRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XDATAPILOTTABLESSUPPLIER_HPP_
+#include <com/sun/star/sheet/XDataPilotTablesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETANNOTATIONANCHOR_HPP_
+#include <com/sun/star/sheet/XSheetAnnotationAnchor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSCENARIOSSUPPLIER_HPP_
+#include <com/sun/star/sheet/XScenariosSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETANNOTATIONSSUPPLIER_HPP_
+#include <com/sun/star/sheet/XSheetAnnotationsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETAUDITING_HPP_
+#include <com/sun/star/sheet/XSheetAuditing.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETOUTLINE_HPP_
+#include <com/sun/star/sheet/XSheetOutline.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XPROTECTABLE_HPP_
+#include <com/sun/star/util/XProtectable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSCENARIO_HPP_
+#include <com/sun/star/sheet/XScenario.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSTATE_HPP_
+#include <com/sun/star/beans/XPropertyState.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+
+class ScDocShell;
+class ScMarkData;
+class SchMemChart;
+class ScPrintRangeSaver;
+class ScAttrRectIterator;
+class ScCellRangeObj;
+class SvxUnoText;
+class ScLinkListener;
+class ScPatternAttr;
+
+
+typedef ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >* XPropertyChangeListenerPtr;
+SV_DECL_PTRARR_DEL( XPropertyChangeListenerArr_Impl, XPropertyChangeListenerPtr, 4, 4 );
+
+class ScNamedEntry;
+typedef ScNamedEntry* ScNamedEntryPtr;
+SV_DECL_PTRARR_DEL( ScNamedEntryArr_Impl, ScNamedEntryPtr, 4, 4 );
+
+
+// ScCellRangesBase - Basisklasse fuer ScCellRangesObj (mit Index-Access)
+// und ScCellRangeObj (ohne Index-Access)
+
+// XServiceInfo ist in den Ableitungen implementiert
+
+class ScCellRangesBase : public com::sun::star::beans::XPropertySet,
+ public com::sun::star::beans::XPropertyState,
+ public com::sun::star::sheet::XSheetOperation,
+ public com::sun::star::chart::XChartDataArray,
+ public com::sun::star::util::XIndent,
+ public com::sun::star::sheet::XCellRangesQuery,
+ public com::sun::star::sheet::XFormulaQuery,
+ public com::sun::star::util::XReplaceable,
+ public com::sun::star::lang::XServiceInfo,
+ public com::sun::star::lang::XUnoTunnel,
+ public com::sun::star::lang::XTypeProvider,
+ public cppu::OWeakObject,
+ public SfxListener
+{
+ friend class ScTabViewObj; // fuer select()
+ friend class ScTableSheetObj; // fuer createCursorByRange()
+
+private:
+ SfxItemPropertySet aPropSet;
+ ScDocShell* pDocShell;
+ ScLinkListener* pValueListener;
+ ScPatternAttr* pCurrentFlat;
+ ScPatternAttr* pCurrentDeep;
+ ScRangeList aRanges;
+ BOOL bChartColAsHdr;
+ BOOL bChartRowAsHdr;
+ BOOL bValueChangePosted;
+ XPropertyChangeListenerArr_Impl aValueListeners;
+
+ DECL_LINK( ValueListenerHdl, SfxHint* );
+ DECL_LINK( ValueChanged, com::sun::star::beans::PropertyChangeEvent* );
+
+private:
+ void PaintRanges_Impl( USHORT nPart );
+ SchMemChart* CreateMemChart_Impl() const;
+
+ const ScPatternAttr* GetCurrentAttrsFlat();
+ const ScPatternAttr* GetCurrentAttrsDeep();
+ void ForgetCurrentAttrs();
+
+ com::sun::star::uno::Reference<com::sun::star::sheet::XSheetCellRanges>
+ QueryDifferences_Impl(const com::sun::star::table::CellAddress& aCompare,
+ BOOL bColumnDiff);
+ com::sun::star::uno::Reference<com::sun::star::uno::XInterface>
+ Find_Impl(const com::sun::star::uno::Reference<
+ com::sun::star::util::XSearchDescriptor>& xDesc,
+ const ScAddress* pLastPos);
+
+public:
+ ScCellRangesBase(); // fuer SMART_REFLECTION Krempel
+ ScCellRangesBase(ScDocShell* pDocSh, const ScRange& rR);
+ ScCellRangesBase(ScDocShell* pDocSh, const ScRangeList& rR);
+ virtual ~ScCellRangesBase();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ virtual void RefChanged();
+
+ // aus Ableitungen, aber auch per getImplementation
+ ScDocShell* GetDocShell() const { return pDocShell; }
+ ScDocument* GetDocument() const;
+ const ScRangeList& GetRangeList() const { return aRanges; }
+
+ // per Service erzeugtes Objekt zum Leben erwecken:
+ void InitInsertRange(ScDocShell* pDocSh, const ScRange& rR);
+
+ void SetNewRange(const ScRange& rNew); // fuer Cursor
+ void SetNewRanges(const ScRangeList& rNew);
+
+ // XSheetOperation
+ virtual double SAL_CALL computeFunction( ::com::sun::star::sheet::GeneralFunction nFunction )
+ throw(::com::sun::star::uno::Exception,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearContents( sal_Int32 nContentFlags )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XPropertyState
+ virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL
+ getPropertyStates( const ::com::sun::star::uno::Sequence<
+ ::rtl::OUString >& aPropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault(
+ const ::rtl::OUString& aPropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XIndent
+ virtual void SAL_CALL decrementIndent() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL incrementIndent() throw(::com::sun::star::uno::RuntimeException);
+
+ // XChartData
+ virtual void SAL_CALL addChartDataChangeEventListener(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::chart::XChartDataChangeEventListener >& aListener )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeChartDataChangeEventListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::chart::XChartDataChangeEventListener >& aListener )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual double SAL_CALL getNotANumber() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isNotANumber( double nNumber )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XChartDataArray
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > > SAL_CALL
+ getData() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setData( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Sequence< double > >& aData )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getRowDescriptions()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setRowDescriptions( const ::com::sun::star::uno::Sequence<
+ ::rtl::OUString >& aRowDescriptions )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getColumnDescriptions()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setColumnDescriptions( const ::com::sun::star::uno::Sequence<
+ ::rtl::OUString >& aColumnDescriptions )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellRangesQuery
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
+ queryVisibleCells() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
+ queryEmptyCells() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
+ queryContentCells( sal_Int16 nContentFlags )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
+ queryFormulaCells( sal_Int32 nResultFlags )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
+ queryColumnDifferences(
+ const ::com::sun::star::table::CellAddress& aCompare )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
+ queryRowDifferences(
+ const ::com::sun::star::table::CellAddress& aCompare )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
+ queryIntersection(
+ const ::com::sun::star::table::CellRangeAddress& aRange )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XFormulaQuery
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
+ queryDependents( sal_Bool bRecursive )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
+ queryPrecedents( sal_Bool bRecursive )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSearchable
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor > SAL_CALL
+ createSearchDescriptor()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
+ findAll( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XSearchDescriptor >& xDesc )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
+ findFirst( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XSearchDescriptor >& xDesc )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
+ findNext( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XInterface >& xStartAt,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XSearchDescriptor >& xDesc )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XReplaceable
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XReplaceDescriptor > SAL_CALL
+ createReplaceDescriptor() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL replaceAll( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XSearchDescriptor >& xDesc )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScCellRangesBase* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface> xObj );
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScCellRangesObj : public ScCellRangesBase,
+ public com::sun::star::sheet::XSheetCellRanges,
+ public com::sun::star::container::XNameContainer,
+ public com::sun::star::container::XEnumerationAccess
+{
+private:
+ ScNamedEntryArr_Impl aNamedEntries;
+
+ ScCellRangeObj* GetObjectByIndex_Impl(USHORT nIndex) const;
+
+public:
+ ScCellRangesObj(ScDocShell* pDocSh, const ScRangeList& rR);
+ virtual ~ScCellRangesObj();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+ virtual void RefChanged();
+
+ // XSheetCellRanges
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess > SAL_CALL
+ getCells() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getRangeAddressesAsString()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL
+ getRangeAddresses() throw(::com::sun::star::uno::RuntimeException);
+
+ // XNameContainer
+ virtual void SAL_CALL insertByName( 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 removeByName( const ::rtl::OUString& Name )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameReplace
+ virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName,
+ const ::com::sun::star::uno::Any& aElement )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScCellRangeObj : public ScCellRangesBase,
+ public com::sun::star::sheet::XCellRangeAddressable,
+ public com::sun::star::sheet::XSheetCellRange,
+ public com::sun::star::sheet::XArrayFormulaRange,
+ public com::sun::star::sheet::XMultipleOperation,
+ public com::sun::star::util::XMergeable,
+ public com::sun::star::sheet::XCellSeries,
+ public com::sun::star::table::XAutoFormattable,
+ public com::sun::star::util::XSortable,
+ public com::sun::star::sheet::XSheetFilterableEx,
+ public com::sun::star::sheet::XSubTotalCalculatable,
+ public com::sun::star::util::XImportable,
+ public com::sun::star::sheet::XCellFormatRangesSupplier,
+ public com::sun::star::table::XColumnRowRange
+{
+private:
+ SfxItemPropertySet aRangePropSet;
+ ScRange aRange;
+
+protected:
+ const ScRange& GetRange() const { return aRange; }
+
+public:
+ ScCellRangeObj(ScDocShell* pDocSh, const ScRange& rR);
+ virtual ~ScCellRangeObj();
+
+ // uses ObjectShell from document, if set (returns NULL otherwise)
+ static com::sun::star::uno::Reference<com::sun::star::table::XCellRange>
+ CreateRangeFromDoc( ScDocument* pDoc, const ScRange& rR );
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+ virtual void RefChanged();
+
+ // XCellRange ist Basisklasse von XSheetCellRange und XSheetOperation
+// operator XCellRangeRef() const { return (XSheetCellRange*)this; }
+
+ // XCellRangeAddressable
+ virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getRangeAddress()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetCellRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > SAL_CALL
+ getSpreadsheet() throw(::com::sun::star::uno::RuntimeException);
+
+ // XArrayFormulaRange
+ virtual ::rtl::OUString SAL_CALL getArrayFormula() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setArrayFormula( const ::rtl::OUString& aFormula )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XMultipleOperation
+ virtual void SAL_CALL setTableOperation(
+ const ::com::sun::star::table::CellRangeAddress& aFormulaRange,
+ ::com::sun::star::sheet::TableOperationMode nMode,
+ const ::com::sun::star::table::CellAddress& aColumnCell,
+ const ::com::sun::star::table::CellAddress& aRowCell )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XMergeable
+ virtual void SAL_CALL merge( sal_Bool bMerge ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getIsMerged() throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellSeries
+ virtual void SAL_CALL fillSeries( ::com::sun::star::sheet::FillDirection nFillDirection,
+ ::com::sun::star::sheet::FillMode nFillMode,
+ ::com::sun::star::sheet::FillDateMode nFillDateMode,
+ double fStep, double fEndValue )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL fillAuto( ::com::sun::star::sheet::FillDirection nFillDirection,
+ sal_Int32 nSourceCount )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XAutoFormattable
+ virtual void SAL_CALL autoFormat( const ::rtl::OUString& aName )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XSortable
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
+ createSortDescriptor() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL sort( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue >& xDescriptor )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetFilterableEx
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL
+ createFilterDescriptorByObject( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::sheet::XSheetFilterable >& xObject )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetFilterable
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL
+ createFilterDescriptor( sal_Bool bEmpty )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL filter( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::sheet::XSheetFilterDescriptor >& xDescriptor )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSubTotalCalculatable
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSubTotalDescriptor > SAL_CALL
+ createSubTotalDescriptor( sal_Bool bEmpty )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL applySubTotals( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::sheet::XSubTotalDescriptor >& xDescriptor,
+ sal_Bool bReplace ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeSubTotals() throw(::com::sun::star::uno::RuntimeException);
+
+ // XImportable
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
+ createImportDescriptor( sal_Bool bEmpty )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL doImport( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue >& aDescriptor )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellFormatRangesSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
+ getCellFormatRanges() throw(::com::sun::star::uno::RuntimeException);
+
+ // XColumnRowRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XTableColumns > SAL_CALL
+ getColumns() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XTableRows > SAL_CALL
+ getRows() throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell > SAL_CALL
+ getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
+ getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop,
+ sal_Int32 nRight, sal_Int32 nBottom )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
+ getCellRangeByName( const ::rtl::OUString& aRange )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet ueberladen wegen Range-Properties
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+//! really derive cell from range?
+
+class ScCellObj : public ScCellRangeObj,
+ public com::sun::star::text::XText,
+ public com::sun::star::container::XEnumerationAccess,
+ public com::sun::star::table::XCell,
+ public com::sun::star::sheet::XCellAddressable,
+ public com::sun::star::sheet::XSheetAnnotationAnchor,
+ public com::sun::star::text::XTextFieldsSupplier
+{
+private:
+ SvxUnoText* pUnoText;
+ SfxItemPropertySet aCellPropSet;
+ ScAddress aCellPos;
+
+private:
+ SvxUnoText& GetUnoText();
+ String GetInputString_Impl(BOOL bEnglish) const;
+ String GetOutputString_Impl() const;
+ void SetString_Impl(const String& rString, BOOL bInterpret, BOOL bEnglish);
+ double GetValue_Impl() const;
+ void SetValue_Impl(double fValue);
+ com::sun::star::table::CellContentType GetResultType_Impl();
+
+public:
+ static const SfxItemPropertyMap* GetEditPropertyMap();
+
+ ScCellObj(ScDocShell* pDocSh, const ScAddress& rP);
+ virtual ~ScCellObj();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+ virtual void RefChanged();
+
+ // XML import needs to set results at formula cells,
+ // not meant for any other purpose.
+ void SetFormulaResultString( const ::rtl::OUString& rResult );
+ void SetFormulaResultDouble( double fResult );
+ const ScAddress& GetPosition() const { return aCellPos; }
+
+ // XText
+ virtual void SAL_CALL insertTextContent( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xRange,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextContent >& xContent,
+ sal_Bool bAbsorb )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeTextContent( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextContent >& xContent )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XSimpleText
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL
+ createTextCursor() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL
+ createTextCursorByRange( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& aTextPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL insertString( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xRange,
+ const ::rtl::OUString& aString, sal_Bool bAbsorb )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL insertControlCharacter( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xRange,
+ sal_Int16 nControlCharacter, sal_Bool bAbsorb )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL
+ getText() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL
+ getStart() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL
+ getEnd() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getString() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setString( const ::rtl::OUString& aString )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XCell
+ virtual ::rtl::OUString SAL_CALL getFormula() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setFormula( const ::rtl::OUString& aFormula )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual double SAL_CALL getValue() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setValue( double nValue ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::table::CellContentType SAL_CALL getType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getError() throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellAddressable
+ virtual ::com::sun::star::table::CellAddress SAL_CALL getCellAddress()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetAnnotationAnchor
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetAnnotation > SAL_CALL
+ getAnnotation() throw(::com::sun::star::uno::RuntimeException);
+
+ // XTextFieldsSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess > SAL_CALL
+ getTextFields() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL
+ getTextFieldMasters() throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet ueberladen wegen Zell-Properties
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ //! Listener-Krempel ??!?
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScTableSheetObj : public ScCellRangeObj,
+ public com::sun::star::sheet::XSpreadsheet,
+ public com::sun::star::container::XNamed,
+ public com::sun::star::sheet::XSheetPageBreak,
+ public com::sun::star::sheet::XCellRangeMovement,
+ public com::sun::star::table::XTableChartsSupplier,
+ public com::sun::star::sheet::XDataPilotTablesSupplier,
+ public com::sun::star::sheet::XScenariosSupplier,
+ public com::sun::star::sheet::XSheetAnnotationsSupplier,
+ public com::sun::star::drawing::XDrawPageSupplier,
+ public com::sun::star::sheet::XPrintAreas,
+ public com::sun::star::sheet::XSheetLinkable,
+ public com::sun::star::sheet::XSheetAuditing,
+ public com::sun::star::sheet::XSheetOutline,
+ public com::sun::star::util::XProtectable,
+ public com::sun::star::sheet::XScenario
+{
+ friend class ScTableSheetsObj; // fuer insertByName()
+
+private:
+ SfxItemPropertySet aSheetPropSet;
+
+ USHORT GetTab_Impl() const;
+ void PrintAreaUndo_Impl( ScPrintRangeSaver* pOldRanges );
+
+public:
+ ScTableSheetObj(ScDocShell* pDocSh, USHORT nTab);
+ virtual ~ScTableSheetObj();
+
+ void InitInsertSheet(ScDocShell* pDocSh, USHORT nTab);
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+ // XSpreadsheet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellCursor >
+ SAL_CALL createCursor() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellCursor > SAL_CALL
+ createCursorByRange( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::sheet::XSheetCellRange >& aRange )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetCellRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > SAL_CALL
+ getSpreadsheet() throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell > SAL_CALL
+ getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
+ getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop,
+ sal_Int32 nRight, sal_Int32 nBottom )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
+ getCellRangeByName( const ::rtl::OUString& aRange )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetPageBreak
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TablePageBreakData > SAL_CALL
+ getColumnPageBreaks() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TablePageBreakData > SAL_CALL
+ getRowPageBreaks() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeAllManualPageBreaks() throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellRangeMovement
+ virtual void SAL_CALL insertCells( const ::com::sun::star::table::CellRangeAddress& aRange,
+ ::com::sun::star::sheet::CellInsertMode nMode )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeRange( const ::com::sun::star::table::CellRangeAddress& aRange,
+ ::com::sun::star::sheet::CellDeleteMode nMode )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL moveRange( const ::com::sun::star::table::CellAddress& aDestination,
+ const ::com::sun::star::table::CellRangeAddress& aSource )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL copyRange( const ::com::sun::star::table::CellAddress& aDestination,
+ const ::com::sun::star::table::CellRangeAddress& aSource )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XTableChartsSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XTableCharts > SAL_CALL
+ getCharts() throw(::com::sun::star::uno::RuntimeException);
+
+ // XDataPilotTablesSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotTables > SAL_CALL
+ getDataPilotTables() throw(::com::sun::star::uno::RuntimeException);
+
+ // XScenariosSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XScenarios > SAL_CALL
+ getScenarios() throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetAnnotationsSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetAnnotations > SAL_CALL
+ getAnnotations() throw(::com::sun::star::uno::RuntimeException);
+
+ // XDrawPageSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL
+ getDrawPage() throw(::com::sun::star::uno::RuntimeException);
+
+ // XPrintAreas
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL
+ getPrintAreas() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPrintAreas( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::table::CellRangeAddress >& aPrintAreas )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getPrintTitleColumns() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPrintTitleColumns( sal_Bool bPrintTitleColumns )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getTitleColumns()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setTitleColumns(
+ const ::com::sun::star::table::CellRangeAddress& aTitleColumns )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getPrintTitleRows() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPrintTitleRows( sal_Bool bPrintTitleRows )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getTitleRows()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setTitleRows(
+ const ::com::sun::star::table::CellRangeAddress& aTitleRows )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetLinkable
+ virtual ::com::sun::star::sheet::SheetLinkMode SAL_CALL getLinkMode()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setLinkMode( ::com::sun::star::sheet::SheetLinkMode nLinkMode )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getLinkUrl() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setLinkUrl( const ::rtl::OUString& aLinkUrl )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getLinkSheetName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setLinkSheetName( const ::rtl::OUString& aLinkSheetName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL link( const ::rtl::OUString& aUrl,
+ const ::rtl::OUString& aSheetName,
+ const ::rtl::OUString& aFilterName,
+ const ::rtl::OUString& aFilterOptions,
+ ::com::sun::star::sheet::SheetLinkMode nMode )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetAuditing
+ virtual sal_Bool SAL_CALL hideDependents( const ::com::sun::star::table::CellAddress& aPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hidePrecedents( const ::com::sun::star::table::CellAddress& aPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL showDependents( const ::com::sun::star::table::CellAddress& aPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL showPrecedents( const ::com::sun::star::table::CellAddress& aPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL showErrors( const ::com::sun::star::table::CellAddress& aPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL showInvalid() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearArrows() throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetOutline
+ virtual void SAL_CALL group( const ::com::sun::star::table::CellRangeAddress& aRange,
+ ::com::sun::star::table::TableOrientation nOrientation )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL ungroup( const ::com::sun::star::table::CellRangeAddress& aRange,
+ ::com::sun::star::table::TableOrientation nOrientation )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL autoOutline( const ::com::sun::star::table::CellRangeAddress& aRange )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clearOutline() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL hideDetail( const ::com::sun::star::table::CellRangeAddress& aRange )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL showDetail( const ::com::sun::star::table::CellRangeAddress& aRange )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL showLevel( sal_Int16 nLevel,
+ ::com::sun::star::table::TableOrientation nOrientation )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XProtectable
+ virtual void SAL_CALL protect( const ::rtl::OUString& aPassword )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL unprotect( const ::rtl::OUString& aPassword )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isProtected() throw(::com::sun::star::uno::RuntimeException);
+
+ // XScenario
+ virtual sal_Bool SAL_CALL getIsScenario() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getScenarioComment() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setScenarioComment( const ::rtl::OUString& aScenarioComment )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addRanges( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::table::CellRangeAddress >& aRanges )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL apply() throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet ueberladen wegen Sheet-Properties
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScTableSheetObj* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface> xObj );
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScTableColumnObj : public ScCellRangeObj,
+ public com::sun::star::container::XNamed
+{
+private:
+ SfxItemPropertySet aColPropSet;
+
+public:
+ ScTableColumnObj(ScDocShell* pDocSh, USHORT nCol, USHORT nTab);
+ virtual ~ScTableColumnObj();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet ueberladen wegen Spalten-Properties
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ //! Listener-Krempel ??!?
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScTableRowObj : public ScCellRangeObj
+{
+private:
+ SfxItemPropertySet aRowPropSet;
+
+public:
+ ScTableRowObj(ScDocShell* pDocSh, USHORT nRow, USHORT nTab);
+ virtual ~ScTableRowObj();
+
+ // XPropertySet ueberladen wegen Zeilen-Properties
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ //! Listener-Krempel ??!?
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScCellsObj : public cppu::WeakImplHelper2<
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ ScRangeList aRanges;
+
+public:
+ ScCellsObj(ScDocShell* pDocSh, const ScRangeList& rR);
+ virtual ~ScCellsObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScCellsEnumeration : public cppu::WeakImplHelper2<
+ com::sun::star::container::XEnumeration,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ ScRangeList aRanges;
+ ScAddress aPos;
+ ScMarkData* pMark;
+ BOOL bAtEnd;
+
+private:
+ void Advance_Impl();
+ void CheckPos_Impl();
+
+public:
+ ScCellsEnumeration(ScDocShell* pDocSh, const ScRangeList& rR);
+ virtual ~ScCellsEnumeration();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XEnumeration
+ virtual sal_Bool SAL_CALL hasMoreElements() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL nextElement()
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+class ScCellFormatsObj : public cppu::WeakImplHelper3<
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ ScRange aTotalRange;
+
+private:
+ ScCellRangeObj* GetObjectByIndex_Impl(long nIndex) const;
+
+public:
+ ScCellFormatsObj(ScDocShell* pDocSh, const ScRange& rR);
+ virtual ~ScCellFormatsObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScCellFormatsEnumeration : public cppu::WeakImplHelper2<
+ com::sun::star::container::XEnumeration,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ USHORT nTab;
+ ScAttrRectIterator* pIter;
+ ScRange aNext;
+ BOOL bAtEnd;
+ BOOL bDirty;
+
+private:
+ void Advance_Impl();
+ ScCellRangeObj* NextObject_Impl();
+
+public:
+ ScCellFormatsEnumeration(ScDocShell* pDocSh, const ScRange& rR);
+ virtual ~ScCellFormatsEnumeration();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XEnumeration
+ virtual sal_Bool SAL_CALL hasMoreElements() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL nextElement()
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif
+
diff --git a/sc/inc/cfgids.hxx b/sc/inc/cfgids.hxx
new file mode 100644
index 000000000000..3817b7401003
--- /dev/null
+++ b/sc/inc/cfgids.hxx
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * $RCSfile: cfgids.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CFGID_HXX
+#define _CFGID_HXX
+
+#define SCCFG_DOC SFX_ITEMTYPE_SC_BEGIN
+#define SCCFG_VIEW (SFX_ITEMTYPE_SC_BEGIN + 1)
+#define SCCFG_APP (SFX_ITEMTYPE_SC_BEGIN + 2)
+#define SCCFG_SPELLCHECK (SFX_ITEMTYPE_SC_BEGIN + 3)
+#define SCCFG_PRINT (SFX_ITEMTYPE_SC_BEGIN + 4)
+#define SCCFG_STATUSBAR (SFX_ITEMTYPE_SC_BEGIN + 5)
+#define SCCFG_ACCELERATOR (SFX_ITEMTYPE_SC_BEGIN + 6)
+#define SCCFG_MENUBAR (SFX_ITEMTYPE_SC_BEGIN + 7)
+#define SCCFG_INPUT (SFX_ITEMTYPE_SC_BEGIN + 8)
+#define SCCFG_NAVIPI (SFX_ITEMTYPE_SC_BEGIN + 9)
+#define SCCFG_PLUGINMENU (SFX_ITEMTYPE_SC_BEGIN + 10)
+
+
+#endif
+
diff --git a/sc/inc/chartarr.hxx b/sc/inc/chartarr.hxx
new file mode 100644
index 000000000000..8e85ceba3096
--- /dev/null
+++ b/sc/inc/chartarr.hxx
@@ -0,0 +1,244 @@
+/*************************************************************************
+ *
+ * $RCSfile: chartarr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CHARTARR_HXX
+#define SC_CHARTARR_HXX
+
+// -----------------------------------------------------------------------
+
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx"
+#endif
+
+
+class ScAddress;
+class Table;
+
+class ScChartPositionMap
+{
+ friend class ScChartArray;
+
+ ScAddress** ppData;
+ ScAddress** ppColHeader;
+ ScAddress** ppRowHeader;
+ ULONG nCount;
+ USHORT nColCount;
+ USHORT nRowCount;
+
+ ScChartPositionMap( USHORT nChartCols, USHORT nChartRows,
+ USHORT nColAdd, // Header-Spalten
+ USHORT nRowAdd, // Header-Zeilen
+ Table& rCols // Table mit Col-Tables mit Address*
+ );
+ ~ScChartPositionMap(); //! deletes all ScAddress*
+
+ const ScAddress* GetPosition( ULONG nIndex ) const
+ {
+ if ( nIndex < nCount )
+ return ppData[ nIndex ];
+ return NULL;
+ }
+
+ // not implemented
+ ScChartPositionMap( const ScChartPositionMap& );
+ ScChartPositionMap& operator=( const ScChartPositionMap& );
+
+public:
+
+ ULONG GetCount() const { return nCount; }
+ USHORT GetColCount() const { return nColCount; }
+ USHORT GetRowCount() const { return nRowCount; }
+
+ BOOL IsValid( USHORT nCol, USHORT nRow ) const
+ { return nCol < nColCount && nRow < nRowCount; }
+ // Daten spaltenweise
+ ULONG GetIndex( USHORT nCol, USHORT nRow ) const
+ { return (ULONG) nCol * nRowCount + nRow; }
+
+ //! kann NULL sein und damit "kein Wert"
+ const ScAddress* GetPosition( USHORT nChartCol, USHORT nChartRow ) const
+ {
+ if ( IsValid( nChartCol, nChartRow ) )
+ return ppData[ GetIndex( nChartCol, nChartRow ) ];
+ return NULL;
+ }
+ const ScAddress* GetColHeaderPosition( USHORT nChartCol ) const
+ {
+ if ( nChartCol < nColCount )
+ return ppColHeader[ nChartCol ];
+ return NULL;
+ }
+ const ScAddress* GetRowHeaderPosition( USHORT nChartRow ) const
+ {
+ if ( nChartRow < nRowCount )
+ return ppRowHeader[ nChartRow ];
+ return NULL;
+ }
+ ScRangeListRef GetColRanges( USHORT nChartCol ) const;
+ ScRangeListRef GetRowRanges( USHORT nChartRow ) const;
+};
+
+
+enum ScChartGlue {
+ SC_CHARTGLUE_NA,
+ SC_CHARTGLUE_NONE, // alte Mimik
+ SC_CHARTGLUE_COLS, // alte Mimik
+ SC_CHARTGLUE_ROWS,
+ SC_CHARTGLUE_BOTH
+};
+
+class ScDocument;
+class ScMultipleReadHeader;
+class SchMemChart;
+
+class ScChartArray : public DataObject // nur noch Parameter-Struct
+{
+ ScRangeListRef aRangeListRef;
+ String aName;
+ ScDocument* pDocument;
+ ScChartPositionMap* pPositionMap;
+ ScChartGlue eGlue;
+ USHORT nStartCol;
+ USHORT nStartRow;
+ BOOL bColHeaders;
+ BOOL bRowHeaders;
+ BOOL bDummyUpperLeft;
+ BOOL bValid; // fuer Erzeugung aus SchMemChart
+
+private:
+ void CheckColRowHeaders();
+ SchMemChart* CreateMemChartSingle() const;
+ SchMemChart* CreateMemChartMulti();
+
+ void GlueState(); // zusammengefasste Bereiche
+ void CreatePositionMap();
+
+public:
+ ScChartArray( ScDocument* pDoc, USHORT nTab,
+ USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ const String& rChartName );
+ ScChartArray( ScDocument* pDoc, const ScRangeListRef& rRangeList,
+ const String& rChartName );
+ ScChartArray( const ScChartArray& rArr );
+ ScChartArray( ScDocument* pDoc, SvStream& rStream, ScMultipleReadHeader& rHdr );
+ ScChartArray( ScDocument* pDoc, const SchMemChart& rData );
+
+ virtual ~ScChartArray();
+ virtual DataObject* Clone() const;
+
+ const ScRangeListRef& GetRangeList() const { return aRangeListRef; }
+ void SetRangeList( const ScRangeListRef& rNew ) { aRangeListRef = rNew; }
+ void SetRangeList( const ScRange& rNew );
+ void AddToRangeList( const ScRange& rRange );
+ void AddToRangeList( const ScRangeListRef& rAdd );
+
+ void SetHeaders(BOOL bCol, BOOL bRow) { bColHeaders=bCol; bRowHeaders=bRow; }
+ BOOL HasColHeaders() const { return bColHeaders; }
+ BOOL HasRowHeaders() const { return bRowHeaders; }
+ BOOL IsValid() const { return bValid; }
+ void SetName(const String& rNew) { aName = rNew; }
+ const String& GetName() const { return aName; }
+
+ BOOL IsAtCursor(const ScAddress& rPos) const;
+
+ BOOL operator==(const ScChartArray& rCmp) const;
+
+ SchMemChart* CreateMemChart();
+ void SetExtraStrings(SchMemChart& rMem) const;
+
+ void InvalidateGlue()
+ {
+ eGlue = SC_CHARTGLUE_NA;
+ if ( pPositionMap )
+ {
+ delete pPositionMap;
+ pPositionMap = NULL;
+ }
+ }
+ const ScChartPositionMap* GetPositionMap();
+
+ static void CopySettings( SchMemChart& rDest, const SchMemChart& rSource );
+};
+
+class ScChartCollection : public Collection
+{
+public:
+ ScChartCollection() : Collection( 4,4 ) {}
+ ScChartCollection( const ScChartCollection& rColl ):
+ Collection( rColl ) {}
+
+ virtual DataObject* Clone() const;
+ ScChartArray* operator[](USHORT nIndex) const
+ { return (ScChartArray*)At(nIndex); }
+
+ BOOL operator==(const ScChartCollection& rCmp) const;
+
+ BOOL Load( ScDocument* pDoc, SvStream& rStream );
+};
+
+
+
+#endif
+
diff --git a/sc/inc/chartlis.hxx b/sc/inc/chartlis.hxx
new file mode 100644
index 000000000000..409c35d40bd6
--- /dev/null
+++ b/sc/inc/chartlis.hxx
@@ -0,0 +1,176 @@
+/*************************************************************************
+ *
+ * $RCSfile: chartlis.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CHARTLIS_HXX
+#define SC_CHARTLIS_HXX
+
+
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx"
+#endif
+
+class ScDocument;
+class ScChartUnoData;
+
+#ifndef _COM_SUN_STAR_CHART_XCHARTDATA_HPP_
+#include <com/sun/star/chart/XChartData.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CHART_XCHARTDATACHANGEEVENTLISTENER_HPP_
+#include <com/sun/star/chart/XChartDataChangeEventListener.hpp>
+#endif
+
+class ScChartListener : public StrData, public SfxListener
+{
+private:
+ ScRangeListRef aRangeListRef;
+ ScChartUnoData* pUnoData;
+ ScDocument* pDoc;
+ BOOL bUsed; // fuer ScChartListenerCollection::FreeUnused
+ BOOL bDirty;
+
+ // not implemented
+ ScChartListener& operator=( const ScChartListener& );
+
+public:
+ ScChartListener( const String& rName, ScDocument* pDoc,
+ const ScRange& rRange );
+ ScChartListener( const String& rName, ScDocument* pDoc,
+ const ScRangeListRef& rRangeListRef );
+ ScChartListener( const ScChartListener& );
+ virtual ~ScChartListener();
+ virtual DataObject* Clone() const;
+
+ void SetUno( const com::sun::star::uno::Reference< com::sun::star::chart::XChartDataChangeEventListener >& rListener,
+ const com::sun::star::uno::Reference< com::sun::star::chart::XChartData >& rSource );
+ com::sun::star::uno::Reference< com::sun::star::chart::XChartDataChangeEventListener > GetUnoListener() const;
+ com::sun::star::uno::Reference< com::sun::star::chart::XChartData > GetUnoSource() const;
+
+ BOOL IsUno() const { return (pUnoData != NULL); }
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ void StartListeningTo();
+ void EndListeningTo();
+ void ChangeListening( const ScRangeListRef& rRangeListRef,
+ BOOL bDirty = FALSE );
+ void Update();
+ const ScRangeListRef& GetRangeList() const { return aRangeListRef; }
+ void SetRangeList( const ScRangeListRef& rNew ) { aRangeListRef = rNew; }
+ void SetRangeList( const ScRange& rNew );
+ BOOL IsUsed() const { return bUsed; }
+ void SetUsed( BOOL bFlg ) { bUsed = bFlg; }
+ BOOL IsDirty() const { return bDirty; }
+ void SetDirty( BOOL bFlg ) { bDirty = bFlg; }
+
+ BOOL operator==( const ScChartListener& );
+ BOOL operator!=( const ScChartListener& r )
+ { return !operator==( r ); }
+};
+
+class ScChartListenerCollection : public StrCollection
+{
+private:
+ Timer aTimer;
+ ScDocument* pDoc;
+
+ DECL_LINK( TimerHdl, Timer* );
+
+ // not implemented
+ ScChartListenerCollection& operator=( const ScChartListenerCollection& );
+
+public:
+ ScChartListenerCollection( ScDocument* pDoc );
+ ScChartListenerCollection( const ScChartListenerCollection& );
+ virtual DataObject* Clone() const;
+
+ // nur nach copy-ctor noetig, wenn neu ins Dok gehaengt
+ void StartAllListeners();
+
+ void ChangeListening( const String& rName,
+ const ScRangeListRef& rRangeListRef,
+ BOOL bDirty = FALSE );
+ // FreeUnused nur wie in ScDocument::UpdateChartListenerCollection verwenden!
+ void FreeUnused();
+ void FreeUno( const com::sun::star::uno::Reference< com::sun::star::chart::XChartDataChangeEventListener >& rListener,
+ const com::sun::star::uno::Reference< com::sun::star::chart::XChartData >& rSource );
+ void StartTimer();
+ void UpdateDirtyCharts();
+ void SetDirty();
+ void SetDiffDirty( const ScChartListenerCollection&,
+ BOOL bSetChartRangeLists = FALSE );
+
+ void SetRangeDirty( const ScRange& rRange ); // z.B. Zeilen/Spalten
+
+ BOOL operator==( const ScChartListenerCollection& );
+};
+
+
+#endif
+
diff --git a/sc/inc/chartuno.hxx b/sc/inc/chartuno.hxx
new file mode 100644
index 000000000000..6128ee196932
--- /dev/null
+++ b/sc/inc/chartuno.hxx
@@ -0,0 +1,214 @@
+/*************************************************************************
+ *
+ * $RCSfile: chartuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CHARTUNO_HXX
+#define SC_CHARTUNO_HXX
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_TABLE_XTABLECHART_HPP_
+#include <com/sun/star/table/XTableChart.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XTABLECHARTS_HPP_
+#include <com/sun/star/table/XTableCharts.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DOCUMENT_XEMBEDDEDOBJECTSUPPLIER_HPP_
+#include <com/sun/star/document/XEmbeddedObjectSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+
+
+class ScDocShell;
+class ScRangeListRef;
+class ScChartObj;
+
+
+class ScChartsObj : public cppu::WeakImplHelper4<
+ com::sun::star::table::XTableCharts,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ USHORT nTab; // Charts sind pro Sheet
+
+ ScChartObj* GetObjectByIndex_Impl(long nIndex) const;
+ ScChartObj* GetObjectByName_Impl(const ::rtl::OUString& aName) const;
+
+public:
+ ScChartsObj(ScDocShell* pDocSh, USHORT nT);
+ virtual ~ScChartsObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XTableCharts
+ virtual void SAL_CALL addNewByName( const ::rtl::OUString& aName,
+ const ::com::sun::star::awt::Rectangle& aRect,
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::table::CellRangeAddress >& aRanges,
+ sal_Bool bColumnHeaders, sal_Bool bRowHeaders )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScChartObj : public cppu::WeakImplHelper3<
+ com::sun::star::table::XTableChart,
+ com::sun::star::document::XEmbeddedObjectSupplier,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ USHORT nTab; // Charts sind pro Sheet
+ String aChartName;
+
+ void Update_Impl( const ScRangeListRef& rRanges, BOOL bColHeaders, BOOL bRowHeaders );
+ void GetData_Impl( ScRangeListRef& rRanges, BOOL& rColHeaders, BOOL& rRowHeaders ) const;
+
+public:
+ ScChartObj(ScDocShell* pDocSh, USHORT nT, const String& rN);
+ virtual ~ScChartObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XTableChart
+ virtual sal_Bool SAL_CALL getHasColumnHeaders() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setHasColumnHeaders( sal_Bool bHasColumnHeaders )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getHasRowHeaders() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setHasRowHeaders( sal_Bool bHasRowHeaders )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL
+ getRanges( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setRanges( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::table::CellRangeAddress >& aRanges )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XEmbeddedObjectSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL
+ getEmbeddedObject() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+#endif
+
diff --git a/sc/inc/chgtrack.hxx b/sc/inc/chgtrack.hxx
new file mode 100644
index 000000000000..6d28a7da203c
--- /dev/null
+++ b/sc/inc/chgtrack.hxx
@@ -0,0 +1,1248 @@
+/*************************************************************************
+ *
+ * $RCSfile: chgtrack.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CHGTRACK_HXX
+#define SC_CHGTRACK_HXX
+
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _DATETIME_HXX //autogen
+#include <tools/datetime.hxx>
+#endif
+#ifndef _TOOLS_TABLE_HXX //autogen
+#include <tools/table.hxx>
+#endif
+#ifndef _STACK_HXX //autogen
+#include <tools/stack.hxx>
+#endif
+#ifndef _QUEUE_HXX //autogen
+#include <tools/queue.hxx>
+#endif
+#ifndef _SVMEMPOOL_HXX //autogen
+#include <tools/mempool.hxx>
+#endif
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+#ifndef SC_BIGRANGE_HXX
+#include "bigrange.hxx"
+#endif
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+
+#ifdef SC_CHGTRACK_CXX
+// core/inc
+#ifndef SC_REFUPDAT_HXX
+#include "refupdat.hxx"
+#endif
+#endif
+
+
+class ScBaseCell;
+class ScDocument;
+
+
+enum ScChangeActionType
+{
+ SC_CAT_NONE,
+ SC_CAT_INSERT_COLS,
+ SC_CAT_INSERT_ROWS,
+ SC_CAT_INSERT_TABS,
+ SC_CAT_DELETE_COLS,
+ SC_CAT_DELETE_ROWS,
+ SC_CAT_DELETE_TABS,
+ SC_CAT_MOVE,
+ SC_CAT_CONTENT,
+ SC_CAT_REJECT
+};
+
+
+enum ScChangeActionState
+{
+ SC_CAS_VIRGIN,
+ SC_CAS_ACCEPTED,
+ SC_CAS_REJECTED
+};
+
+
+enum ScChangeActionClipMode
+{
+ SC_CACM_NONE,
+ SC_CACM_CUT,
+ SC_CACM_COPY,
+ SC_CACM_PASTE
+};
+
+class SvStream;
+class ScMultipleReadHeader;
+class ScMultipleWriteHeader;
+
+// --- ScChangeActionLinkEntry ---------------------------------------------
+
+// Fuegt sich selbst am Beginn einer Kette ein, bzw. vor einem anderen
+// LinkEntry, on delete selbstaendiges ausklinken auch des gelinkten.
+// ppPrev == &previous->pNext oder Adresse des Pointers auf Beginn der Kette,
+// *ppPrev == this
+
+class ScChangeAction;
+
+class ScChangeActionLinkEntry
+{
+ // not implemented, prevent usage
+ ScChangeActionLinkEntry(
+ const ScChangeActionLinkEntry& );
+ ScChangeActionLinkEntry& operator=( const ScChangeActionLinkEntry& );
+
+protected:
+
+ ScChangeActionLinkEntry* pNext;
+ ScChangeActionLinkEntry** ppPrev;
+ ScChangeAction* pAction;
+ ScChangeActionLinkEntry* pLink;
+
+public:
+
+ DECL_FIXEDMEMPOOL_NEWDEL( ScChangeActionLinkEntry )
+
+ ScChangeActionLinkEntry(
+ ScChangeActionLinkEntry** ppPrevP,
+ ScChangeAction* pActionP )
+ : ppPrev( ppPrevP ),
+ pNext( *ppPrevP ),
+ pAction( pActionP ),
+ pLink( NULL )
+ {
+ if ( pNext )
+ pNext->ppPrev = &pNext;
+ *ppPrevP = this;
+ }
+
+ virtual ~ScChangeActionLinkEntry()
+ {
+ ScChangeActionLinkEntry* p = pLink;
+ UnLink();
+ Remove();
+ if ( p )
+ delete p;
+ }
+
+ void SetLink( ScChangeActionLinkEntry* pLinkP )
+ {
+ UnLink();
+ if ( pLinkP )
+ {
+ pLink = pLinkP;
+ pLinkP->pLink = this;
+ }
+ }
+
+ void UnLink()
+ {
+ if ( pLink )
+ {
+ pLink->pLink = NULL;
+ pLink = NULL;
+ }
+ }
+
+ void Remove()
+ {
+ if ( ppPrev )
+ {
+ if ( *ppPrev = pNext )
+ pNext->ppPrev = ppPrev;
+ ppPrev = NULL; // not inserted
+ }
+ }
+
+ void Insert( ScChangeActionLinkEntry** ppPrevP )
+ {
+ if ( !ppPrev )
+ {
+ ppPrev = ppPrevP;
+ if ( pNext = *ppPrevP )
+ pNext->ppPrev = &pNext;
+ *ppPrevP = this;
+ }
+ }
+
+ const ScChangeActionLinkEntry* GetLink() const { return pLink; }
+ ScChangeActionLinkEntry* GetLink() { return pLink; }
+ const ScChangeActionLinkEntry* GetNext() const { return pNext; }
+ ScChangeActionLinkEntry* GetNext() { return pNext; }
+ const ScChangeAction* GetAction() const { return pAction; }
+ ScChangeAction* GetAction() { return pAction; }
+};
+
+
+// --- ScChangeAction -------------------------------------------------------
+
+class ScChangeTrack;
+class ScChangeActionIns;
+class ScChangeActionDel;
+class ScChangeActionContent;
+class ScChangeActionCellListEntry;
+
+class ScChangeAction
+{
+ friend class ScChangeTrack;
+ friend class ScChangeActionIns;
+ friend class ScChangeActionDel;
+ friend class ScChangeActionMove;
+ friend class ScChangeActionContent;
+
+ // not implemented, prevent usage
+ ScChangeAction( const ScChangeAction& );
+ ScChangeAction& operator=( const ScChangeAction& );
+
+protected:
+
+ ScBigRange aBigRange; // Ins/Del/MoveTo/ContentPos
+ DateTime aDateTime; //! UTC
+ String aUser; // wer war's
+ String aComment; // Benutzerkommentar
+ ScChangeAction* pNext; // naechster in Kette
+ ScChangeAction* pPrev; // vorheriger in Kette
+ ScChangeActionLinkEntry* pLinkAny; // irgendwelche Links
+ ScChangeActionLinkEntry* pLinkDeletedIn; // Zuordnung zu
+ // geloeschten oder
+ // druebergemoveten oder
+ // rejecteten Insert
+ // Bereichen
+ ScChangeActionLinkEntry* pLinkDeleted; // Links zu geloeschten
+ ScChangeActionLinkEntry* pLinkDependent; // Links zu abhaengigen
+ ULONG nAction;
+ ULONG nRejectAction;
+ ScChangeActionType eType;
+ ScChangeActionState eState;
+
+
+ ScChangeAction( ScChangeActionType,
+ const ScRange& );
+ ScChangeAction( SvStream&,
+ ScMultipleReadHeader&, ScChangeTrack* );
+ virtual ~ScChangeAction();
+
+ static void StoreCell( ScBaseCell*, SvStream&,
+ ScMultipleWriteHeader& );
+ static ScBaseCell* LoadCell( SvStream&, ScMultipleReadHeader&,
+ ScDocument*, USHORT nVer );
+
+ static BOOL StoreLinkChain( ScChangeActionLinkEntry*,
+ SvStream& );
+ static BOOL LoadLinkChain( ScChangeAction*,
+ ScChangeActionLinkEntry**,
+ SvStream&, ScChangeTrack*,
+ BOOL bLinkDeleted );
+
+ static BOOL StoreCellList( ScChangeActionCellListEntry*,
+ SvStream& );
+ static BOOL LoadCellList( ScChangeAction* pOfAction,
+ ScChangeActionCellListEntry*&, SvStream&,
+ ScChangeTrack* );
+
+ String GetRefString( const ScBigRange&,
+ ScDocument*, BOOL bFlag3D = FALSE ) const;
+
+ void SetActionNumber( ULONG n ) { nAction = n; }
+ void SetRejectAction( ULONG n ) { nRejectAction = n; }
+ void SetUser( const String& r ) { aUser = r; }
+ void SetType( ScChangeActionType e ) { eType = e; }
+ void SetState( ScChangeActionState e ) { eState = e; }
+ void SetRejected();
+
+ ScBigRange& GetBigRange() { return aBigRange; }
+
+ ScChangeActionLinkEntry* AddLink( ScChangeAction* p,
+ ScChangeActionLinkEntry* pL )
+ {
+ ScChangeActionLinkEntry* pLnk =
+ new ScChangeActionLinkEntry(
+ &pLinkAny, p );
+ pLnk->SetLink( pL );
+ return pLnk;
+ }
+ void RemoveLink( ScChangeAction* p );
+ void RemoveAllAnyLinks();
+ // zeigt ein AnyLink auf p?
+ BOOL DependsOn( ScChangeAction* p ) const;
+
+ virtual ScChangeActionLinkEntry* GetDeletedIn() const
+ { return pLinkDeletedIn; }
+ virtual ScChangeActionLinkEntry** GetDeletedInAddress()
+ { return &pLinkDeletedIn; }
+ ScChangeActionLinkEntry* AddDeletedIn( ScChangeAction* p )
+ {
+ return new ScChangeActionLinkEntry(
+ GetDeletedInAddress(), p );
+ }
+ BOOL RemoveDeletedIn( const ScChangeAction* );
+ void RemoveAllDeletedIn();
+ void SetDeletedIn( ScChangeAction* );
+
+ ScChangeActionLinkEntry* AddDeleted( ScChangeAction* p )
+ {
+ return new ScChangeActionLinkEntry(
+ &pLinkDeleted, p );
+ }
+ BOOL RemoveDeleted( const ScChangeAction* p );
+ void RemoveAllDeleted();
+
+ ScChangeActionLinkEntry* AddDependent( ScChangeAction* p )
+ {
+ return new ScChangeActionLinkEntry(
+ &pLinkDependent, p );
+ }
+ void RemoveDependent( ScChangeAction* p );
+ void RemoveAllDependent();
+
+ void RemoveAllLinks();
+
+ virtual void AddContent( ScChangeActionContent* ) = 0;
+ virtual void DeleteCellEntries() = 0;
+
+ virtual void UpdateReference( const ScChangeTrack*,
+ UpdateRefMode, const ScBigRange&,
+ INT32 nDx, INT32 nDy, INT32 nDz );
+
+ void Accept();
+ virtual BOOL Reject( ScDocument* ) = 0;
+ void RejectRestoreContents( ScChangeTrack*,
+ short nDx, short nDy );
+
+ virtual BOOL Store( SvStream&, ScMultipleWriteHeader& ) const;
+ virtual BOOL StoreLinks( SvStream& ) const;
+ virtual BOOL LoadLinks( SvStream&, ScChangeTrack* );
+
+public:
+
+ BOOL IsInsertType() const
+ {
+ return eType == SC_CAT_INSERT_COLS ||
+ eType == SC_CAT_INSERT_ROWS ||
+ eType == SC_CAT_INSERT_TABS;
+ }
+ BOOL IsDeleteType() const
+ {
+ return eType == SC_CAT_DELETE_COLS ||
+ eType == SC_CAT_DELETE_ROWS ||
+ eType == SC_CAT_DELETE_TABS;
+ }
+ BOOL IsMasterType() const
+ { // alles was echte Abhaengige haben kann
+ return IsInsertType() ||
+ eType == SC_CAT_MOVE;
+ }
+ BOOL IsVirgin() const
+ { return eState == SC_CAS_VIRGIN; }
+ BOOL IsAccepted() const
+ { return eState == SC_CAS_ACCEPTED; }
+ BOOL IsRejected() const
+ { return eState == SC_CAS_REJECTED; }
+
+ // Action rejects another Action
+ BOOL IsRejecting() const
+ { return nRejectAction != 0; }
+
+ // ob Action im Dokument sichtbar ist
+ BOOL IsVisible() const;
+
+ // ob Action anfassbar ist
+ BOOL IsTouchable() const;
+
+ // ob Action ein Eintrag in Dialog-Root ist
+ BOOL IsDialogRoot() const;
+
+ // ob ein Eintrag im Dialog aufklappbar sein soll
+ BOOL IsDialogParent() const;
+
+ // ob Action ein Delete ist, unter dem
+ // aufgeklappt mehrere einzelne Deletes sind
+ BOOL IsMasterDelete() const;
+
+ // ob Action akzeptiert/selektiert/abgelehnt
+ // werden kann
+ BOOL IsClickable() const;
+
+ // ob Action abgelehnt werden kann
+ BOOL IsRejectable() const;
+
+ const ScBigRange& GetBigRange() const { return aBigRange; }
+ DateTime GetDateTime() const; // local time
+ const DateTime& GetDateTimeUTC() const // UTC time
+ { return aDateTime; }
+ const String& GetUser() const { return aUser; }
+ const String& GetComment() const { return aComment; }
+ ScChangeActionType GetType() const { return eType; }
+ ScChangeActionState GetState() const { return eState; }
+ ULONG GetActionNumber() const { return nAction; }
+ ULONG GetRejectAction() const { return nRejectAction; }
+
+ ScChangeAction* GetNext() const { return pNext; }
+ ScChangeAction* GetPrev() const { return pPrev; }
+
+ BOOL IsDeletedIn() const
+ { return GetDeletedIn() != NULL; }
+ BOOL IsDeleted() const
+ { return IsDeleteType() || IsDeletedIn(); }
+ BOOL IsDeletedIn( const ScChangeAction* ) const;
+ BOOL IsDeletedInDelType( ScChangeActionType ) const;
+
+ const ScChangeActionLinkEntry* GetFirstDeletedEntry() const
+ { return pLinkDeleted; }
+ const ScChangeActionLinkEntry* GetFirstDependentEntry() const
+ { return pLinkDependent; }
+ BOOL HasDependent() const
+ { return pLinkDependent != NULL; }
+ BOOL HasDeleted() const
+ { return pLinkDeleted != NULL; }
+
+ // Description wird an String angehaengt.
+ // Mit bSplitRange wird bei Delete nur
+ // eine Spalte/Zeile beruecksichtigt (fuer
+ // Auflistung der einzelnen Eintraege).
+ virtual void GetDescription( String&, ScDocument*,
+ BOOL bSplitRange = FALSE ) const {}
+
+ virtual void GetRefString( String&, ScDocument*,
+ BOOL bFlag3D = FALSE ) const;
+
+ // fuer DocumentMerge altes Datum einer anderen
+ // Action setzen, mit GetDateTimeUTC geholt
+ void SetDateTimeUTC( const DateTime& rDT )
+ { aDateTime = rDT; }
+
+ // Benutzerkommentar setzen
+ void SetComment( const String& rStr )
+ { aComment = rStr; }
+};
+
+
+// --- ScChangeActionIns ----------------------------------------------------
+
+class ScChangeActionIns : public ScChangeAction
+{
+ friend class ScChangeTrack;
+
+ ScChangeActionIns( const ScRange& rRange );
+ ScChangeActionIns( SvStream&,
+ ScMultipleReadHeader&, ScChangeTrack* );
+ virtual ~ScChangeActionIns();
+
+ virtual void AddContent( ScChangeActionContent* ) {}
+ virtual void DeleteCellEntries() {}
+
+ virtual BOOL Reject( ScDocument* );
+
+ virtual BOOL Store( SvStream&, ScMultipleWriteHeader& ) const;
+
+public:
+
+ virtual void GetDescription( String&, ScDocument*,
+ BOOL bSplitRange = FALSE ) const;
+};
+
+
+// --- ScChangeActionDel ----------------------------------------------------
+
+class ScChangeActionMove;
+
+class ScChangeActionDelMoveEntry : public ScChangeActionLinkEntry
+{
+ friend class ScChangeActionDel;
+ friend class ScChangeTrack;
+
+ short nCutOffFrom;
+ short nCutOffTo;
+
+
+ ScChangeActionDelMoveEntry(
+ ScChangeActionDelMoveEntry** ppPrev,
+ ScChangeActionMove* pMove,
+ short nFrom, short nTo )
+ : ScChangeActionLinkEntry(
+ (ScChangeActionLinkEntry**)
+ ppPrev,
+ (ScChangeAction*) pMove ),
+ nCutOffFrom( nFrom ),
+ nCutOffTo( nTo )
+ {}
+
+ ScChangeActionDelMoveEntry* GetNext()
+ {
+ return (ScChangeActionDelMoveEntry*)
+ ScChangeActionLinkEntry::GetNext();
+ }
+ ScChangeActionMove* GetMove()
+ {
+ return (ScChangeActionMove*)
+ ScChangeActionLinkEntry::GetAction();
+ }
+
+public:
+ const ScChangeActionDelMoveEntry* GetNext() const
+ {
+ return (const ScChangeActionDelMoveEntry*)
+ ScChangeActionLinkEntry::GetNext();
+ }
+ const ScChangeActionMove* GetMove() const
+ {
+ return (const ScChangeActionMove*)
+ ScChangeActionLinkEntry::GetAction();
+ }
+ short GetCutOffFrom() const { return nCutOffFrom; }
+ short GetCutOffTo() const { return nCutOffTo; }
+};
+
+
+class ScChangeActionDel : public ScChangeAction
+{
+ friend class ScChangeTrack;
+ friend void ScChangeAction::Accept();
+
+ ScChangeTrack* pTrack;
+ ScChangeActionCellListEntry* pFirstCell;
+ ScChangeActionIns* pCutOff; // abgeschnittener Insert
+ short nCutOff; // +: Start -: End
+ ScChangeActionDelMoveEntry* pLinkMove;
+ short nDx;
+ short nDy;
+
+ ScChangeActionDel( const ScRange& rRange,
+ short nDx, short nDy, ScChangeTrack* );
+ ScChangeActionDel( SvStream&,
+ ScMultipleReadHeader&, ScDocument*,
+ USHORT nVer, ScChangeTrack* );
+ virtual ~ScChangeActionDel();
+
+ void SetCutOffInsert( ScChangeActionIns* p, short n )
+ { pCutOff = p; nCutOff = n; }
+ ScChangeActionIns* GetCutOffInsert() { return pCutOff; }
+
+ virtual void AddContent( ScChangeActionContent* );
+ virtual void DeleteCellEntries();
+
+ ScChangeActionDelMoveEntry* AddCutOffMove( ScChangeActionMove* pMove,
+ short nFrom, short nTo )
+ {
+ return new ScChangeActionDelMoveEntry(
+ &pLinkMove, pMove, nFrom, nTo );
+ }
+ void UndoCutOffMoves();
+ void UndoCutOffInsert();
+
+ virtual void UpdateReference( const ScChangeTrack*,
+ UpdateRefMode, const ScBigRange&,
+ INT32 nDx, INT32 nDy, INT32 nDz );
+
+ virtual BOOL Reject( ScDocument* );
+
+ virtual BOOL Store( SvStream&, ScMultipleWriteHeader& ) const;
+ virtual BOOL StoreLinks( SvStream& ) const;
+ virtual BOOL LoadLinks( SvStream&, ScChangeTrack* );
+
+public:
+
+ // ob dieses das unterste einer Reihe (oder
+ // auch einzeln) ist
+ BOOL IsBaseDelete() const;
+
+ // ob dieses das oberste einer Reihe (oder
+ // auch einzeln) ist
+ BOOL IsTopDelete() const;
+
+ // ob dieses ein Teil einer Reihe ist
+ BOOL IsMultiDelete() const;
+
+ // ob es eine Col ist, die zu einem TabDelete gehoert
+ BOOL IsTabDeleteCol() const;
+
+ short GetDx() const { return nDx; }
+ short GetDy() const { return nDy; }
+ ScBigRange GetOverAllRange() const; // BigRange + (nDx, nDy)
+
+ const ScChangeActionCellListEntry* GetFirstCellEntry() const
+ { return pFirstCell; }
+ const ScChangeActionDelMoveEntry* GetFirstMoveEntry() const
+ { return pLinkMove; }
+ const ScChangeActionIns* GetCutOffInsert() const { return pCutOff; }
+ short GetCutOffCount() const { return nCutOff; }
+
+ virtual void GetDescription( String&, ScDocument*,
+ BOOL bSplitRange = FALSE ) const;
+};
+
+
+// --- ScChangeActionMove ---------------------------------------------------
+
+class ScChangeActionMove : public ScChangeAction
+{
+ friend class ScChangeTrack;
+ friend void ScChangeActionDel::UndoCutOffMoves();
+
+ ScBigRange aFromRange;
+ ScChangeTrack* pTrack;
+ ScChangeActionCellListEntry* pFirstCell;
+ ULONG nStartLastCut; // fuer PasteCut Undo
+ ULONG nEndLastCut;
+
+ ScChangeActionMove( const ScRange& rFromRange,
+ const ScRange& rToRange,
+ ScChangeTrack* pTrackP )
+ : ScChangeAction( SC_CAT_MOVE, rToRange ),
+ aFromRange( rFromRange ),
+ pTrack( pTrackP ),
+ pFirstCell( NULL ),
+ nStartLastCut(0),
+ nEndLastCut(0)
+ {}
+ ScChangeActionMove( SvStream&,
+ ScMultipleReadHeader&, ScChangeTrack* );
+ virtual ~ScChangeActionMove();
+
+ virtual void AddContent( ScChangeActionContent* );
+ virtual void DeleteCellEntries();
+
+ ScBigRange& GetFromRange() { return aFromRange; }
+
+ void SetStartLastCut( ULONG nVal ) { nStartLastCut = nVal; }
+ ULONG GetStartLastCut() const { return nStartLastCut; }
+ void SetEndLastCut( ULONG nVal ) { nEndLastCut = nVal; }
+ ULONG GetEndLastCut() const { return nEndLastCut; }
+
+ virtual void UpdateReference( const ScChangeTrack*,
+ UpdateRefMode, const ScBigRange&,
+ INT32 nDx, INT32 nDy, INT32 nDz );
+
+ virtual BOOL Reject( ScDocument* );
+
+ virtual BOOL Store( SvStream&, ScMultipleWriteHeader& ) const;
+ virtual BOOL StoreLinks( SvStream& ) const;
+ virtual BOOL LoadLinks( SvStream&, ScChangeTrack* );
+
+public:
+ const ScBigRange& GetFromRange() const { return aFromRange; }
+ void GetDelta( INT32& nDx, INT32& nDy, INT32& nDz ) const;
+
+ virtual void GetDescription( String&, ScDocument*,
+ BOOL bSplitRange = FALSE ) const;
+
+ virtual void GetRefString( String&, ScDocument*,
+ BOOL bFlag3D = FALSE ) const;
+};
+
+
+// --- ScChangeActionContent ------------------------------------------------
+
+class ScChangeActionContent : public ScChangeAction
+{
+ friend class ScChangeTrack;
+
+ String aOldValue;
+ String aNewValue;
+ ScBaseCell* pOldCell;
+ ScBaseCell* pNewCell;
+ ScChangeActionContent* pNextContent; // an gleicher Position
+ ScChangeActionContent* pPrevContent;
+ ScChangeActionContent* pNextInSlot; // in gleichem Slot
+ ScChangeActionContent** ppPrevInSlot;
+
+ ScChangeActionContent( SvStream&,
+ ScMultipleReadHeader&, ScDocument*,
+ USHORT nVer, ScChangeTrack* );
+
+ void SetNextContent( ScChangeActionContent* p )
+ { pNextContent = p; }
+ void SetPrevContent( ScChangeActionContent* p )
+ { pPrevContent = p; }
+
+ void InsertInSlot( ScChangeActionContent** pp )
+ {
+ if ( !ppPrevInSlot )
+ {
+ ppPrevInSlot = pp;
+ if ( pNextInSlot = *pp )
+ pNextInSlot->ppPrevInSlot = &pNextInSlot;
+ *pp = this;
+ }
+ }
+ void RemoveFromSlot()
+ {
+ if ( ppPrevInSlot )
+ {
+ if ( *ppPrevInSlot = pNextInSlot )
+ pNextInSlot->ppPrevInSlot = ppPrevInSlot;
+ ppPrevInSlot = NULL; // not inserted
+ }
+ }
+ ScChangeActionContent* GetNextInSlot() { return pNextInSlot; }
+
+ void ClearTrack();
+
+ static void GetStringOfCell( String& rStr,
+ const ScBaseCell* pCell,
+ const ScDocument* pDoc,
+ const ScAddress& rPos );
+
+ static void GetStringOfCell( String& rStr,
+ const ScBaseCell* pCell,
+ const ScDocument* pDoc,
+ ULONG nFormat );
+
+ static void SetValue( String& rStr, ScBaseCell*& pCell,
+ const ScAddress& rPos,
+ const ScBaseCell* pOrgCell,
+ const ScDocument* pFromDoc,
+ ScDocument* pToDoc );
+
+ static void SetValue( String& rStr, ScBaseCell*& pCell,
+ ULONG nFormat,
+ const ScBaseCell* pOrgCell,
+ const ScDocument* pFromDoc,
+ ScDocument* pToDoc );
+
+ static BOOL IsContentCellType( const ScBaseCell* );
+
+ static BOOL NeedsNumberFormat( const ScBaseCell* );
+
+ void SetValueString( String& rValue,
+ ScBaseCell*& pCell, const String& rStr,
+ ScDocument* pDoc );
+
+ void GetValueString( String& rStr,
+ const String& rValue,
+ const ScBaseCell* pCell ) const;
+
+ void GetFormulaString( String& rStr,
+ const ScFormulaCell* pCell ) const;
+
+ virtual void AddContent( ScChangeActionContent* ) {}
+ virtual void DeleteCellEntries() {}
+
+ virtual void UpdateReference( const ScChangeTrack*,
+ UpdateRefMode, const ScBigRange&,
+ INT32 nDx, INT32 nDy, INT32 nDz );
+
+ virtual BOOL Reject( ScDocument* );
+ BOOL Select( ScDocument*, ScChangeTrack*, BOOL bOldest );
+
+ void PutValueToDoc( ScBaseCell*, const String&,
+ ScDocument*, short nDx, short nDy ) const;
+
+ virtual BOOL Store( SvStream&, ScMultipleWriteHeader& ) const;
+ virtual BOOL StoreLinks( SvStream& ) const;
+ virtual BOOL LoadLinks( SvStream&, ScChangeTrack* );
+
+public:
+
+ DECL_FIXEDMEMPOOL_NEWDEL( ScChangeActionContent )
+
+ ScChangeActionContent( const ScRange& rRange )
+ : ScChangeAction( SC_CAT_CONTENT, rRange ),
+ pOldCell( NULL ),
+ pNewCell( NULL ),
+ pNextContent( NULL ),
+ pPrevContent( NULL ),
+ pNextInSlot( NULL ),
+ ppPrevInSlot( NULL )
+ {}
+ virtual ~ScChangeActionContent();
+
+ ScChangeActionContent* GetNextContent() const { return pNextContent; }
+ ScChangeActionContent* GetPrevContent() const { return pPrevContent; }
+ ScChangeActionContent* GetTopContent() const;
+ BOOL IsTopContent() const
+ { return pNextContent == NULL; }
+
+ virtual ScChangeActionLinkEntry* GetDeletedIn() const;
+ virtual ScChangeActionLinkEntry** GetDeletedInAddress();
+
+ void PutOldValueToDoc( ScDocument*,
+ short nDx, short nDy ) const;
+ void PutNewValueToDoc( ScDocument*,
+ short nDx, short nDy ) const;
+
+ void SetOldValue( const ScBaseCell*,
+ const ScDocument* pFromDoc,
+ ScDocument* pToDoc,
+ ULONG nFormat );
+ void SetOldValue( const ScBaseCell*,
+ const ScDocument* pFromDoc,
+ ScDocument* pToDoc );
+ void SetNewValue( const ScBaseCell*, ScDocument* );
+
+ // moeglichst nicht verwenden,
+ // setzt nur String bzw. generiert Formelzelle
+ void SetOldValue( const String& rOld, ScDocument* );
+ void SetNewValue( const String& rNew, ScDocument* );
+
+ void GetOldString( String& ) const;
+ void GetNewString( String& ) const;
+ const ScBaseCell* GetNewCell() const { return pNewCell; }
+ virtual void GetDescription( String&, ScDocument*,
+ BOOL bSplitRange = FALSE ) const;
+ virtual void GetRefString( String&, ScDocument*,
+ BOOL bFlag3D = FALSE ) const;
+};
+
+
+// --- ScChangeActionReject -------------------------------------------------
+
+class ScChangeActionReject : public ScChangeAction
+{
+ friend class ScChangeTrack;
+ friend BOOL ScChangeActionContent::Select( ScDocument*, ScChangeTrack*, BOOL );
+
+ ScChangeActionReject( ULONG nReject )
+ : ScChangeAction( SC_CAT_REJECT, ScRange() )
+ {
+ SetRejectAction( nReject );
+ SetState( SC_CAS_ACCEPTED );
+ }
+ ScChangeActionReject( SvStream&,
+ ScMultipleReadHeader&, ScChangeTrack* );
+
+ virtual void AddContent( ScChangeActionContent* ) {}
+ virtual void DeleteCellEntries() {}
+
+ virtual BOOL Reject( ScDocument* p ) { return FALSE; }
+
+ virtual BOOL Store( SvStream&, ScMultipleWriteHeader& ) const;
+};
+
+
+// --- ScChangeTrack --------------------------------------------------------
+
+enum ScChangeTrackMsgType
+{
+ SC_CTM_NONE,
+ SC_CTM_APPEND, // Actions angehaengt
+ SC_CTM_REMOVE, // Actions weggenommen
+ SC_CTM_CHANGE, // Actions geaendert
+ SC_CTM_PARENT // war kein Parent und ist jetzt einer
+};
+
+struct ScChangeTrackMsgInfo
+{
+ DECL_FIXEDMEMPOOL_NEWDEL( ScChangeTrackMsgInfo )
+
+ ScChangeTrackMsgType eMsgType;
+ ULONG nStartAction;
+ ULONG nEndAction;
+};
+
+// MsgQueue fuer Benachrichtigung via ModifiedLink
+DECLARE_QUEUE( ScChangeTrackMsgQueue, ScChangeTrackMsgInfo* );
+DECLARE_STACK( ScChangeTrackMsgStack, ScChangeTrackMsgInfo* );
+
+enum ScChangeTrackMergeState
+{
+ SC_CTMS_NONE,
+ SC_CTMS_PREPARE,
+ SC_CTMS_OWN,
+ SC_CTMS_OTHER
+};
+
+// zusaetzlich zu pFirst/pNext/pLast/pPrev eine Table, um schnell sowohl
+// per ActionNumber als auch ueber Liste zugreifen zu koennen
+DECLARE_TABLE( ScChangeActionTable, ScChangeAction* );
+
+// Intern generierte Actions beginnen bei diesem Wert (fast alle Bits gesetzt)
+// und werden runtergezaehlt, um sich in einer Table wertemaessig nicht mit den
+// "normalen" Actions in die Quere zu kommen.
+#define SC_CHGTRACK_GENERATED_START ((UINT32) 0xfffffff0)
+
+// SfxListener an der Applikation, um Aenderungen des Usernamens mitzubekommen
+
+class ScChangeTrack : public SfxListener
+{
+ friend void ScChangeAction::RejectRestoreContents( ScChangeTrack*, short, short );
+ friend BOOL ScChangeActionDel::Reject( ScDocument* pDoc );
+ friend void ScChangeActionDel::DeleteCellEntries();
+ friend void ScChangeActionMove::DeleteCellEntries();
+ friend BOOL ScChangeActionMove::Reject( ScDocument* pDoc );
+
+ static const USHORT nContentRowsPerSlot;
+ static const USHORT nContentSlots;
+
+ ScChangeActionTable aTable;
+ ScChangeActionTable aGeneratedTable;
+ ScChangeActionTable aPasteCutTable;
+ ScChangeTrackMsgQueue aMsgQueue;
+ ScChangeTrackMsgStack aMsgStackTmp;
+ ScChangeTrackMsgStack aMsgStackFinal;
+ StrCollection aUserCollection;
+ String aUser;
+ Link aModifiedLink;
+ ScRange aInDeleteRange;
+ DateTime aFixDateTime;
+ ScChangeAction* pFirst;
+ ScChangeAction* pLast;
+ ScChangeActionContent* pFirstGeneratedDelContent;
+ ScChangeActionContent** ppContentSlots;
+ ScChangeActionMove* pLastCutMove;
+ ScChangeActionLinkEntry* pLinkInsertCol;
+ ScChangeActionLinkEntry* pLinkInsertRow;
+ ScChangeActionLinkEntry* pLinkInsertTab;
+ ScChangeActionLinkEntry* pLinkMove;
+ ScChangeTrackMsgInfo* pBlockModifyMsg;
+ ScDocument* pDoc;
+ ULONG nActionMax;
+ ULONG nGeneratedMin;
+ ULONG nMarkLastSaved;
+ ULONG nStartLastCut;
+ ULONG nEndLastCut;
+ ULONG nLastMerge;
+ ScChangeTrackMergeState eMergeState;
+ USHORT nLoadedFileFormatVersion;
+ BOOL bLoadSave;
+ BOOL bInDelete;
+ BOOL bInDeleteUndo;
+ BOOL bInDeleteTop;
+ BOOL bInPasteCut;
+ BOOL bUseFixDateTime;
+
+ // not implemented, prevent usage
+ ScChangeTrack( const ScChangeTrack& );
+ ScChangeTrack& operator=( const ScChangeTrack& );
+
+#ifdef SC_CHGTRACK_CXX
+ static USHORT InitContentRowsPerSlot();
+ virtual void Notify( SfxBroadcaster&, const SfxHint& );
+ void Init();
+ void DtorClear();
+ void SetLoadSave( BOOL bVal ) { bLoadSave = bVal; }
+ void SetInDeleteRange( const ScRange& rRange )
+ { aInDeleteRange = rRange; }
+ void SetInDelete( BOOL bVal )
+ { bInDelete = bVal; }
+ void SetInDeleteTop( BOOL bVal )
+ { bInDeleteTop = bVal; }
+ void SetInDeleteUndo( BOOL bVal )
+ { bInDeleteUndo = bVal; }
+ void SetInPasteCut( BOOL bVal )
+ { bInPasteCut = bVal; }
+ void SetMergeState( ScChangeTrackMergeState eState )
+ { eMergeState = eState; }
+ ScChangeTrackMergeState GetMergeState() const { return eMergeState; }
+ void SetLastMerge( ULONG nVal ) { nLastMerge = nVal; }
+ ULONG GetLastMerge() const { return nLastMerge; }
+
+ void SetLastCutMoveRange( const ScRange&, ScDocument* );
+
+ // ModifyMsg blockweise und nicht einzeln erzeugen
+ void StartBlockModify( ScChangeTrackMsgType,
+ ULONG nStartAction );
+ void EndBlockModify( ULONG nEndAction );
+
+ void AddDependentWithNotify( ScChangeAction* pParent,
+ ScChangeAction* pDependent );
+
+ void Dependencies( ScChangeAction* );
+ void UpdateReference( ScChangeAction*, BOOL bUndo );
+ void UpdateReference( ScChangeAction** ppFirstAction,
+ ScChangeAction* pAct, BOOL bUndo );
+ void Append( ScChangeAction* pAppend, ULONG nAction );
+ void AppendDeleteRange( const ScRange&,
+ ScDocument* pRefDoc, short nDz,
+ ULONG nRejectingInsert );
+ void AppendOneDeleteRange( const ScRange& rOrgRange,
+ ScDocument* pRefDoc,
+ short nDx, short nDy, short nDz,
+ ULONG nRejectingInsert );
+ void LookUpContents( const ScRange& rOrgRange,
+ ScDocument* pRefDoc,
+ short nDx, short nDy, short nDz );
+ void Remove( ScChangeAction* );
+ void MasterLinks( ScChangeAction* );
+ void AppendLoaded( ScChangeAction* pAppend );
+
+ // Content on top an Position
+ ScChangeActionContent* SearchContentAt( const ScBigAddress&,
+ ScChangeAction* pButNotThis ) const;
+ // das gleiche fuer generierte Del-Eintraege,
+ // wobei der Content nicht in der angegebenen
+ // Richtung geloescht sein darf
+ ScChangeActionContent* SearchGeneratedDelContentAt(
+ const ScBigAddress&,
+ ScChangeActionType eNotInDelType ) const;
+ ScChangeActionContent* GenerateDelContent( const ScAddress&,
+ const ScBaseCell*,
+ const ScDocument* pFromDoc );
+ void DeleteGeneratedDelContent(
+ ScChangeActionContent* );
+ void DeleteCellEntries(
+ ScChangeActionCellListEntry*&,
+ ScChangeAction* pDeletor );
+
+ // Action und alle abhaengigen rejecten,
+ // Table stammt aus vorherigem GetDependents,
+ // ist nur bei Insert und Move (MasterType)
+ // noetig, kann ansonsten NULL sein.
+ // bRecursion == Aufruf aus Reject mit Table
+ BOOL Reject( ScChangeAction*,
+ ScChangeActionTable*, BOOL bRecursion );
+#endif // SC_CHGTRACK_CXX
+
+ void ClearMsgQueue();
+
+public:
+
+ static USHORT ComputeContentSlot( INT32 nRow )
+ {
+ if ( nRow < 0 || nRow > MAXROW )
+ return nContentSlots - 1;
+ return nRow / nContentRowsPerSlot;
+ }
+
+ ScChangeTrack( ScDocument* );
+ virtual ~ScChangeTrack();
+ void Clear();
+
+ ScChangeAction* GetFirst() const { return pFirst; }
+ ScChangeAction* GetLast() const { return pLast; }
+ ULONG GetActionMax() const { return nActionMax; }
+ BOOL IsGenerated( ULONG nAction ) const
+ { return nAction >= nGeneratedMin; }
+ ScChangeAction* GetAction( ULONG nAction ) const
+ { return aTable.Get( nAction ); }
+ ScChangeAction* GetGenerated( ULONG nGenerated ) const
+ { return aGeneratedTable.Get( nGenerated ); }
+ ScChangeAction* GetActionOrGenerated( ULONG nAction ) const
+ {
+ return IsGenerated( nAction ) ?
+ GetGenerated( nAction ) :
+ GetAction( nAction );
+ }
+ ULONG GetLastSavedActionNumber() const
+ { return nMarkLastSaved; }
+ ScChangeAction* GetLastSaved() const
+ { return aTable.Get( nMarkLastSaved ); }
+ ScChangeActionContent** GetContentSlots() const { return ppContentSlots; }
+
+ BOOL IsLoadSave() const { return bLoadSave; }
+ const ScRange& GetInDeleteRange() const
+ { return aInDeleteRange; }
+ BOOL IsInDelete() const { return bInDelete; }
+ BOOL IsInDeleteTop() const { return bInDeleteTop; }
+ BOOL IsInDeleteUndo() const { return bInDeleteUndo; }
+ BOOL IsInPasteCut() const { return bInPasteCut; }
+ void SetUser( const String& );
+ const String& GetUser() const { return aUser; }
+ const StrCollection& GetUserCollection() const
+ { return aUserCollection; }
+ ScDocument* GetDocument() const { return pDoc; }
+
+ // fuer MergeDocument, Original-Datum uebernehmen
+ void SetFixDateTimeUTC( const DateTime& rDT )
+ { aFixDateTime = rDT; }
+ void SetUseFixDateTime( BOOL bVal )
+ { bUseFixDateTime = bVal; }
+
+ void Append( ScChangeAction* );
+
+ void AppendDeleteRange( const ScRange&,
+ ScDocument* pRefDoc,
+ ULONG& nStartAction, ULONG& nEndAction,
+ short nDz = 0 );
+ // nDz: Multi-TabDel, LookUpContent ist
+ // um -nDz verschoben zu suchen
+
+ // nachdem neuer Wert im Dokument gesetzt wurde,
+ // alter Wert aus RefDoc/UndoDoc
+ void AppendContent( const ScAddress& rPos,
+ ScDocument* pRefDoc );
+ // nachdem neue Werte im Dokument gesetzt wurden,
+ // alte Werte aus RefDoc/UndoDoc
+ void AppendContentRange( const ScRange& rRange,
+ ScDocument* pRefDoc,
+ ULONG& nStartAction, ULONG& nEndAction,
+ ScChangeActionClipMode eMode = SC_CACM_NONE );
+ // nachdem neuer Wert im Dokument gesetzt wurde,
+ // alter Wert aus pOldCell, nOldFormat,
+ // RefDoc==NULL => Doc
+ void AppendContent( const ScAddress& rPos,
+ const ScBaseCell* pOldCell,
+ ULONG nOldFormat, ScDocument* pRefDoc = NULL );
+ // nachdem neuer Wert im Dokument gesetzt wurde,
+ // alter Wert aus pOldCell, Format aus Doc
+ void AppendContent( const ScAddress& rPos,
+ const ScBaseCell* pOldCell );
+ // nachdem neuer Wert im Dokument gesetzt wurde,
+ // alter Wert aus pOldCell, Format aus RefDoc
+ void AppendContent( const ScAddress& rPos,
+ const ScBaseCell* pOldCell,
+ ScDocument* pRefDoc );
+ // nachdem neue Werte im Dokument gesetzt wurden,
+ // alte Werte aus RefDoc/UndoDoc.
+ // Alle Contents, wo im RefDoc eine Zelle steht.
+ void AppendContentsIfInRefDoc( ScDocument* pRefDoc,
+ ULONG& nStartAction, ULONG& nEndAction );
+
+ // die folgenden beiden nur benutzen wenn's
+ // nicht anders geht (setzen nur String fuer
+ // NewValue bzw. Formelerzeugung)
+
+ // bevor neuer Wert im Dokument gesetzt wird
+ void AppendContent( const ScAddress& rPos,
+ const String& rNewValue );
+ // bevor neuer Wert im Dokument gesetzt wird
+ void AppendContent( const ScAddress& rPos,
+ const String& rNewValue,
+ ScBaseCell* pOldCell );
+
+ void AppendInsert( const ScRange& );
+
+ void AppendMove( const ScRange& rFromRange,
+ const ScRange& rToRange,
+ ScDocument* pRefDoc );
+
+ // Cut to Clipboard
+ void ResetLastCut()
+ {
+ nStartLastCut = nEndLastCut = 0;
+ if ( pLastCutMove )
+ {
+ delete pLastCutMove;
+ pLastCutMove = NULL;
+ }
+ }
+ BOOL HasLastCut() const
+ {
+ return nEndLastCut > 0 &&
+ nStartLastCut <= nEndLastCut &&
+ pLastCutMove;
+ }
+
+ void Undo( ULONG nStartAction, ULONG nEndAction );
+
+ // fuer MergeDocument, Referenzen anpassen,
+ //! darf nur in einem temporaer geoeffneten
+ //! Dokument verwendet werden, der Track
+ //! ist danach verhunzt
+ void MergePrepare( ScChangeAction* pFirstMerge );
+ void MergeOwn( ScChangeAction* pAct, ULONG nFirstMerge );
+ static BOOL MergeIgnore( const ScChangeAction&, ULONG nFirstMerge );
+
+ // Abhaengige in Table einfuegen.
+ // Bei Insert sind es echte Abhaengige,
+ // bei Move abhaengige Contents im FromRange
+ // und geloeschte im ToRange bzw. Inserts in
+ // FromRange oder ToRange,
+ // bei Delete eine Liste der geloeschten,
+ // bei Content andere Contents an gleicher Pos.
+ // Mit bListMasterDelete werden unter einem
+ // MasterDelete alle zu diesem Delete gehoerenden
+ // Deletes einer Reihe gelistet.
+ // Mit bAllFlat werden auch alle Abhaengigen
+ // der Abhaengigen flach eingefuegt.
+ void GetDependents( ScChangeAction*,
+ ScChangeActionTable&,
+ BOOL bListMasterDelete = FALSE,
+ BOOL bAllFlat = FALSE );
+
+ // Reject visible Action (und abhaengige)
+ BOOL Reject( ScChangeAction* );
+
+ // Accept visible Action (und abhaengige)
+ BOOL Accept( ScChangeAction* );
+
+ void AcceptAll(); // alle Virgins
+ BOOL RejectAll(); // alle Virgins
+
+ // Selektiert einen Content von mehreren an
+ // gleicher Position und akzeptiert diesen und
+ // die aelteren, rejected die neueren.
+ // Mit bOldest==TRUE wird der erste OldValue
+ // einer Virgin-Content-Kette restauriert.
+ BOOL SelectContent( ScChangeAction*,
+ BOOL bOldest = FALSE );
+
+ // wenn ModifiedLink gesetzt, landen
+ // Aenderungen in ScChangeTrackMsgQueue
+ void SetModifiedLink( const Link& r )
+ { aModifiedLink = r; ClearMsgQueue(); }
+ const Link& GetModifiedLink() const { return aModifiedLink; }
+ ScChangeTrackMsgQueue& GetMsgQueue() { return aMsgQueue; }
+
+ void NotifyModified( ScChangeTrackMsgType eMsgType,
+ ULONG nStartAction, ULONG nEndAction );
+
+ BOOL Load( SvStream& rStrm, USHORT nVer );
+ BOOL Store( SvStream& rStrm );
+ USHORT GetLoadedFileFormatVersion() const
+ { return nLoadedFileFormatVersion; }
+};
+
+
+#endif
+
+
diff --git a/sc/inc/chgviset.hxx b/sc/inc/chgviset.hxx
new file mode 100644
index 000000000000..ecc3f0691d05
--- /dev/null
+++ b/sc/inc/chgviset.hxx
@@ -0,0 +1,179 @@
+/*************************************************************************
+ *
+ * $RCSfile: chgviset.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_CHGVISET_HXX
+#define SC_CHGVISET_HXX
+
+#ifndef _DATETIME_HXX //autogen
+#include <tools/datetime.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx"
+#endif
+
+enum ScChgsDateMode{ SCDM_DATE_BEFORE=0,SCDM_DATE_SINCE=1,SCDM_DATE_EQUAL=2,
+ SCDM_DATE_NOTEQUAL=3,SCDM_DATE_BETWEEN=4, SCDM_DATE_SAVE=5,
+ SCDM_NO_DATEMODE=6};
+
+class SearchText;
+
+class ScChangeViewSettings
+{
+private:
+
+ SearchText* pCommentSearcher;
+ DateTime aFirstDateTime;
+ DateTime aLastDateTime;
+ String aAuthorToShow;
+ String aComment;
+ ScRangeList aRangeList;
+ ScChgsDateMode eDateMode;
+ BOOL bShowIt;
+ BOOL bIsDate;
+ BOOL bIsAuthor;
+ BOOL bIsComment;
+ BOOL bIsRange;
+ BOOL bEveryoneButMe;
+ BOOL bShowAccepted;
+ BOOL bShowRejected;
+
+public:
+
+ ScChangeViewSettings()
+ {
+ pCommentSearcher=NULL;
+ bIsDate=FALSE;
+ bIsAuthor=FALSE;
+ bIsRange=FALSE;
+ bIsComment=FALSE;
+ bShowIt=FALSE;
+ eDateMode=SCDM_DATE_BEFORE;
+ bEveryoneButMe=FALSE;
+ bShowAccepted=FALSE;
+ bShowRejected=FALSE;
+ }
+
+ ScChangeViewSettings( const ScChangeViewSettings& r );
+
+ ~ScChangeViewSettings();
+
+ BOOL ShowChanges() const {return bShowIt;}
+ void SetShowChanges(BOOL nFlag=TRUE){bShowIt=nFlag;}
+
+ BOOL HasDate() const {return bIsDate;}
+ void SetHasDate(BOOL nFlag=TRUE) {bIsDate=nFlag;}
+
+ void SetTheDateMode(ScChgsDateMode eDatMod){ eDateMode=eDatMod; }
+ ScChgsDateMode GetTheDateMode() const { return eDateMode; }
+
+ void SetTheFirstDateTime(const DateTime& aDateTime) {aFirstDateTime=aDateTime;}
+ const DateTime& GetTheFirstDateTime()const {return aFirstDateTime;}
+
+ void SetTheLastDateTime(const DateTime& aDateTime) {aLastDateTime=aDateTime;}
+ const DateTime& GetTheLastDateTime()const {return aLastDateTime;}
+
+
+ BOOL HasAuthor() const {return bIsAuthor;}
+ void SetHasAuthor(BOOL nFlag=TRUE) {bIsAuthor=nFlag;}
+
+ String GetTheAuthorToShow()const {return aAuthorToShow;}
+ void SetTheAuthorToShow(const String& aString){aAuthorToShow=aString;}
+
+ BOOL HasComment() const {return bIsComment;}
+ void SetHasComment(BOOL nFlag=TRUE) {bIsComment=nFlag;}
+
+ String GetTheComment()const {return aComment;}
+ void SetTheComment(const String& aString);
+
+ BOOL IsValidComment(const String* pCommentStr) const;
+
+ BOOL IsEveryoneButMe() const {return bEveryoneButMe;}
+ void SetEveryoneButMe(BOOL nFlag=TRUE) {bEveryoneButMe=nFlag;}
+
+
+ BOOL HasRange() const {return bIsRange;}
+ void SetHasRange(BOOL nFlag=TRUE) {bIsRange=nFlag;}
+
+ const ScRangeList& GetTheRangeList()const {return aRangeList;}
+ void SetTheRangeList(const ScRangeList& aRl){aRangeList=aRl;}
+
+ BOOL IsShowAccepted() const { return bShowAccepted; }
+ void SetShowAccepted( BOOL bVal ) { bShowAccepted = bVal; }
+
+ BOOL IsShowRejected() const { return bShowRejected; }
+ void SetShowRejected( BOOL bVal ) { bShowRejected = bVal; }
+
+
+ void Load( SvStream& rStream, USHORT nVer );
+ void Store( SvStream& rStream ) const;
+
+ ScChangeViewSettings& operator= ( const ScChangeViewSettings& r );
+
+};
+
+
+
+#endif
+
diff --git a/sc/inc/collect.hxx b/sc/inc/collect.hxx
new file mode 100644
index 000000000000..0d225cfae490
--- /dev/null
+++ b/sc/inc/collect.hxx
@@ -0,0 +1,241 @@
+/*************************************************************************
+ *
+ * $RCSfile: collect.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_COLLECT_HXX
+#define SC_COLLECT_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#include <limits.h>
+
+#define MAXCOLLECTIONSIZE 16384
+#define MAXDELTA 1024
+#define SCPOS_INVALID USHRT_MAX
+
+#define SC_STRTYPE_VALUE 0
+#define SC_STRTYPE_STANDARD 1
+
+class ScDocument;
+
+class DataObject
+{
+public:
+ DataObject() {}
+ virtual ~DataObject();
+ virtual DataObject* Clone() const = 0;
+};
+
+class Collection : public DataObject
+{
+protected:
+ USHORT nCount;
+ USHORT nLimit;
+ USHORT nDelta;
+ DataObject** pItems;
+public:
+ Collection(USHORT nLim = 4, USHORT nDel = 4);
+ Collection(const Collection& rCollection);
+ virtual ~Collection();
+
+ virtual DataObject* Clone() const;
+
+ void AtFree(USHORT nIndex);
+ void Free(DataObject* pDataObject);
+ void FreeAll();
+
+ BOOL AtInsert(USHORT nIndex, DataObject* pDataObject);
+ virtual BOOL Insert(DataObject* pDataObject);
+
+ DataObject* At(USHORT nIndex) const;
+ virtual USHORT IndexOf(DataObject* pDataObject) const;
+ USHORT GetCount() const { return nCount; }
+
+ DataObject* operator[]( const USHORT nIndex) const {return At(nIndex);}
+ Collection& operator=( const Collection& rCol );
+};
+
+
+class SortedCollection : public Collection
+{
+private:
+ BOOL bDuplicates;
+protected:
+ // fuer StrCollection Load/Store
+ void SetDups( BOOL bVal ) { bDuplicates = bVal; }
+ BOOL IsDups() const { return bDuplicates; }
+public:
+ SortedCollection(USHORT nLim = 4, USHORT nDel = 4, BOOL bDup = FALSE);
+ SortedCollection(const SortedCollection& rSortedCollection) :
+ Collection(rSortedCollection),
+ bDuplicates(rSortedCollection.bDuplicates) {}
+
+ virtual USHORT IndexOf(DataObject* pDataObject) const;
+ virtual short Compare(DataObject* pKey1, DataObject* pKey2) const = 0;
+ virtual BOOL IsEqual(DataObject* pKey1, DataObject* pKey2) const;
+ BOOL Search(DataObject* pDataObject, USHORT& rIndex) const;
+ virtual BOOL Insert(DataObject* pDataObject);
+ virtual BOOL InsertPos(DataObject* pDataObject, USHORT& nIndex);
+
+ BOOL operator==(const SortedCollection& rCmp) const;
+};
+
+
+
+//------------------------------------------------------------------------
+class StrData : public DataObject
+{
+friend class StrCollection;
+ String aStr;
+public:
+ StrData(const String& rStr) : aStr(rStr) {}
+ StrData(const StrData& rData) :aStr(rData.aStr) {}
+ virtual DataObject* Clone() const;
+ const String& GetString() const { return aStr; }
+ // SetString nur, wenn StrData nicht in StrCollection ist! !!!
+ // z.B. fuer Searcher
+ void SetString( const String& rNew ) { aStr = rNew; }
+};
+
+//------------------------------------------------------------------------
+
+class SvStream;
+
+class StrCollection : public SortedCollection
+{
+public:
+ StrCollection(USHORT nLim = 4, USHORT nDel = 4, BOOL bDup = FALSE) :
+ SortedCollection ( nLim, nDel, bDup ) {}
+ StrCollection(const StrCollection& rStrCollection) :
+ SortedCollection ( rStrCollection ) {}
+
+ virtual DataObject* Clone() const;
+ StrData* operator[]( const USHORT nIndex) const {return (StrData*)At(nIndex);}
+ virtual short Compare(DataObject* pKey1, DataObject* pKey2) const;
+
+ void Load( SvStream& );
+ void Store( SvStream& ) const;
+};
+
+//------------------------------------------------------------------------
+// TypedStrCollection: wie StrCollection, nur, dass Zahlen vor Strings
+// sortiert werden
+
+class TypedStrData : public DataObject
+{
+public:
+ TypedStrData( const String& rStr, double nVal = 0.0,
+ USHORT nType = SC_STRTYPE_STANDARD )
+ : aStrValue(rStr),
+ nValue(nVal),
+ nStrType(nType) {}
+
+ TypedStrData( ScDocument* pDoc, USHORT nCol, USHORT nRow, USHORT nTab,
+ BOOL bAllStrings );
+
+ TypedStrData( const TypedStrData& rCpy )
+ : aStrValue(rCpy.aStrValue),
+ nValue(rCpy.nValue),
+ nStrType(rCpy.nStrType) {}
+
+ virtual DataObject* Clone() const;
+
+ BOOL IsStrData() const { return nStrType != 0; }
+ const String& GetString() const { return aStrValue; }
+ double GetValue () const { return nValue; }
+
+private:
+ friend class TypedStrCollection;
+ friend class PivotStrCollection;
+
+ String aStrValue;
+ double nValue;
+ USHORT nStrType; // 0 = Value
+};
+
+class TypedStrCollection : public SortedCollection
+{
+private:
+ BOOL bCaseSensitive;
+
+public:
+ TypedStrCollection( USHORT nLim = 4, USHORT nDel = 4, BOOL bDup = FALSE )
+ : SortedCollection( nLim, nDel, bDup ) { bCaseSensitive = FALSE; }
+
+ TypedStrCollection( const TypedStrCollection& rCpy )
+ : SortedCollection( rCpy ) { bCaseSensitive = rCpy.bCaseSensitive; }
+
+ virtual DataObject* Clone() const;
+ virtual short Compare( DataObject* pKey1, DataObject* pKey2 ) const;
+
+ TypedStrData* operator[]( const USHORT nIndex) const
+ { return (TypedStrData*)At(nIndex); }
+
+ void SetCaseSensitive( BOOL bSet ) { bCaseSensitive = bSet; }
+
+ BOOL FindText( const String& rStart, String& rResult, USHORT& rPos, BOOL bBack ) const;
+ BOOL GetExactMatch( String& rString ) const;
+};
+
+#endif
+
+
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
new file mode 100644
index 000000000000..db3248695ba8
--- /dev/null
+++ b/sc/inc/column.hxx
@@ -0,0 +1,474 @@
+/*************************************************************************
+ *
+ * $RCSfile: column.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_COLUMN_HXX
+#define SC_COLUMN_HXX
+
+#ifndef SC_MARKARR_HXX
+#include "markarr.hxx"
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class Fraction;
+class OutputDevice;
+class Rectangle;
+class SfxBroadcaster;
+class SfxItemPoolCache;
+class SfxItemSet;
+class SfxListener;
+class SfxPoolItem;
+class SfxStyleSheetBase;
+class SvxBorderLine;
+class SvxBoxInfoItem;
+class SvxBoxItem;
+
+class ScAttrIterator;
+class ScAttrArray;
+class ScBaseCell;
+class ScDocument;
+class ScFormulaCell;
+class ScMarkData;
+class ScMultipleReadHeader;
+class ScMultipleWriteHeader;
+class ScPatternAttr;
+class ScStyleSheet;
+class ScBroadcasterList;
+class TypedStrCollection;
+struct ScFunctionData;
+struct ScLineFlags;
+
+
+#define COLUMN_DELTA 4
+
+
+struct ScNeededSizeOptions
+{
+ const ScPatternAttr* pPattern;
+ BOOL bFormula;
+ BOOL bSkipMerged;
+ BOOL bGetFont;
+ BOOL bTotalSize;
+
+ ScNeededSizeOptions()
+ {
+ pPattern = NULL;
+ bFormula = FALSE;
+ bSkipMerged = TRUE;
+ bGetFont = TRUE;
+ bTotalSize = FALSE;
+ }
+};
+
+struct ColEntry
+{
+ USHORT nRow;
+ ScBaseCell* pCell;
+};
+
+
+class ScIndexMap;
+
+class ScColumn
+{
+private:
+ USHORT nCol;
+ USHORT nTab;
+
+ USHORT nCount;
+ USHORT nLimit;
+ ColEntry* pItems;
+
+ ScAttrArray* pAttrArray;
+ ScDocument* pDocument;
+
+friend class ScDocument; // fuer FillInfo
+friend class ScDocumentIterator;
+friend class ScValueIterator;
+friend class ScQueryValueIterator;
+friend class ScColumnIterator;
+friend class ScQueryCellIterator;
+friend class ScMarkedDataIter;
+friend class ScCellIterator;
+friend class ScHorizontalCellIterator;
+friend class ScHorizontalAttrIterator;
+
+public:
+static BOOL bDoubleAlloc; // fuer Import: Groesse beim Allozieren verdoppeln
+
+public:
+ ScColumn();
+ ~ScColumn();
+
+ void Init(USHORT nNewCol, USHORT nNewTab, ScDocument* pDoc);
+
+ BOOL Search( USHORT nRow, USHORT& nIndex ) const;
+ ScBaseCell* GetCell( USHORT nRow ) const;
+ void Insert( USHORT nRow, ScBaseCell* pCell );
+ void Insert( USHORT nRow, ULONG nFormatIndex, ScBaseCell* pCell );
+ void Append( USHORT nRow, ScBaseCell* pCell );
+ void Delete( USHORT nRow );
+ void DeleteAtIndex( USHORT nIndex );
+ void FreeAll();
+ void Resize( USHORT nSize );
+ void SetNewRow( USHORT nRow1, USHORT nRow2 );
+ void SwapRow( USHORT nRow1, USHORT nRow2 );
+ void SwapCell( USHORT nRow, ScColumn& rCol);
+
+ BOOL HasLines( USHORT nRow1, USHORT nRow2, Rectangle& rSizes,
+ BOOL bLeft, BOOL bRight ) const;
+ BOOL HasAttrib( USHORT nRow1, USHORT nRow2, USHORT nMask ) const;
+ BOOL HasAttribSelection( const ScMarkData& rMark, USHORT nMask ) const;
+ BOOL ExtendMerge( USHORT nThisCol, USHORT nStartRow, USHORT nEndRow,
+ USHORT& rPaintCol, USHORT& rPaintRow,
+ BOOL bRefresh, BOOL bAttrs );
+
+ BOOL IsEmptyVisData(BOOL bNotes) const; // ohne Broadcaster
+ BOOL IsEmptyData() const;
+ BOOL IsEmptyAttr() const;
+ BOOL IsEmpty() const;
+
+ // nur Daten:
+ BOOL IsEmptyBlock(USHORT nStartRow, USHORT nEndRow) const;
+ USHORT GetEmptyLinesInBlock( USHORT nStartRow, USHORT nEndRow, ScDirection eDir ) const;
+ BOOL HasDataAt(USHORT nRow) const;
+ BOOL HasVisibleDataAt(USHORT nRow) const;
+ USHORT GetFirstDataPos() const;
+ USHORT GetLastDataPos() const;
+ USHORT GetLastVisDataPos(BOOL bNotes) const; // ohne Broadcaster
+ USHORT GetFirstVisDataPos(BOOL bNotes) const;
+ BOOL GetPrevDataPos(USHORT& rRow) const;
+ BOOL GetNextDataPos(USHORT& rRow) const;
+ void FindDataAreaPos(USHORT& rRow, short nMovY) const; // (ohne Broadcaster)
+ void FindUsed( USHORT nStartRow, USHORT nEndRow, BOOL* pUsed ) const;
+
+ USHORT VisibleCount( USHORT nStartRow, USHORT nEndRow ) const;
+
+ USHORT GetBlockMatrixEdges( USHORT nRow1, USHORT nRow2, USHORT nMask ) const;
+ BOOL HasSelectionMatrixFragment(const ScMarkData& rMark) const;
+
+ // Daten oder Attribute:
+ USHORT GetFirstEntryPos() const;
+ USHORT GetLastEntryPos() const;
+
+ // nur Attribute:
+ USHORT GetLastAttrPos() const;
+ BOOL HasVisibleAttr( USHORT& rFirstRow, USHORT& rLastRow, BOOL bSkipFirst ) const;
+ BOOL HasVisibleAttrIn( USHORT nStartRow, USHORT nEndRow ) const;
+ BOOL IsVisibleAttrEqual( const ScColumn& rCol, USHORT nStartRow = 0,
+ USHORT nEndRow = MAXROW ) const;
+ BOOL IsAllAttrEqual( const ScColumn& rCol, USHORT nStartRow, USHORT nEndRow ) const;
+
+ BOOL TestInsertCol( USHORT nStartRow, USHORT nEndRow) const;
+ BOOL TestInsertRow( USHORT nSize ) const;
+ void InsertRow( USHORT nStartRow, USHORT nSize );
+ void DeleteRow( USHORT nStartRow, USHORT nSize );
+ void DeleteRange( USHORT nStartIndex, USHORT nEndIndex, USHORT nDelFlag );
+ void DeleteArea(USHORT nStartRow, USHORT nEndRow, USHORT nDelFlag );
+ void CopyToClip(USHORT nRow1, USHORT nRow2, ScColumn& rColumn, BOOL bKeepScenarioFlags);
+ void CopyFromClip(USHORT nRow1, USHORT nRow2, short nDy,
+ USHORT nInsFlag, BOOL bAsLink, ScColumn& rColumn);
+ void StartListeningInArea( USHORT nRow1, USHORT nRow2 );
+ void BroadcastInArea( USHORT nRow1, USHORT nRow2 );
+
+ void RemoveEditAttribs( USHORT nStartRow, USHORT nEndRow );
+
+ // Markierung von diesem Dokument
+ void MixMarked( const ScMarkData& rMark, USHORT nFunction,
+ BOOL bSkipEmpty, ScColumn& rSrcCol );
+ void MixData( USHORT nRow1, USHORT nRow2, USHORT nFunction, BOOL bSkipEmpty,
+ ScColumn& rSrcCol );
+
+ ScFormulaCell* CreateRefCell( ScDocument* pDestDoc, const ScAddress& rDestPos,
+ USHORT nIndex, USHORT nFlags ) const;
+
+ ScAttrIterator* CreateAttrIterator( USHORT nStartRow, USHORT nEndRow ) const;
+
+ USHORT GetCol() const { return nCol; }
+
+ // UpdateSelectionFunction: Mehrfachselektion
+ void UpdateSelectionFunction( const ScMarkData& rMark,
+ ScFunctionData& rData, const BYTE* pRowFlags,
+ BOOL bDoExclude, USHORT nExStartRow, USHORT nExEndRow );
+ void UpdateAreaFunction( ScFunctionData& rData, BYTE* pRowFlags,
+ USHORT nStartRow, USHORT nEndRow );
+
+ void CopyToColumn(USHORT nRow1, USHORT nRow2, USHORT nFlags, BOOL bMarked,
+ ScColumn& rColumn, const ScMarkData* pMarkData = NULL,
+ BOOL bAsLink = FALSE );
+ void UndoToColumn(USHORT nRow1, USHORT nRow2, USHORT nFlags, BOOL bMarked,
+ ScColumn& rColumn, const ScMarkData* pMarkData = NULL );
+
+ void CopyScenarioFrom( const ScColumn& rSrcCol );
+ void CopyScenarioTo( ScColumn& rDestCol ) const;
+ BOOL TestCopyScenarioTo( const ScColumn& rDestCol ) const;
+ void MarkScenarioIn( ScMarkData& rDestMark ) const;
+
+ void CopyUpdated( const ScColumn& rPosCol, ScColumn& rDestCol ) const;
+
+ void SwapCol(ScColumn& rCol);
+ void MoveTo(USHORT nStartRow, USHORT nEndRow, ScColumn& rCol);
+
+ BOOL HasEditCells(USHORT nStartRow, USHORT nEndRow, USHORT& rFirst) const;
+
+ // TRUE = Zahlformat gesetzt
+ BOOL SetString( USHORT nRow, USHORT nTab, const String& rString );
+ void SetValue( USHORT nRow, const double& rVal);
+ void SetNote( USHORT nRow, const ScPostIt& rNote );
+ void SetError( USHORT nRow, const USHORT nError);
+
+ void GetString( USHORT nRow, String& rString ) const;
+ void GetInputString( USHORT nRow, String& rString ) const;
+ double GetValue( USHORT nRow ) const;
+ void GetFormula( USHORT nRow, String& rFormula,
+ BOOL bAsciiExport = FALSE ) const;
+ BOOL GetNote( USHORT nRow, ScPostIt& rNote ) const;
+ CellType GetCellType( USHORT nRow ) const;
+ USHORT GetCellCount() const { return nCount; }
+ long GetWeightedCount() const;
+ ULONG GetCodeCount() const; // RPN-Code in Formeln
+ USHORT GetErrCode( USHORT nRow ) const;
+
+ BOOL HasStringData( USHORT nRow ) const;
+ BOOL HasValueData( USHORT nRow ) const;
+ USHORT GetErrorData(USHORT nCol) const;
+ BOOL HasStringCells( USHORT nStartRow, USHORT nEndRow ) const;
+
+ void SetDirty();
+ void SetDirty( const ScRange& );
+ void SetDirtyVar();
+ void SetDirtyAfterLoad();
+ void CalcAll();
+ void CalcAfterLoad();
+ void CompileAll();
+ void CompileXML();
+
+ void ResetChanged( USHORT nStartRow, USHORT nEndRow );
+
+ void UpdateReference( UpdateRefMode eUpdateRefMode, USHORT nCol1, USHORT nRow1, USHORT nTab1,
+ USHORT nCol2, USHORT nRow2, USHORT nTab2,
+ short nDx, short nDy, short nDz,
+ ScDocument* pUndoDoc = NULL );
+ void UpdateInsertTab( USHORT nTable);
+ void UpdateInsertTabOnlyCells( USHORT nTable);
+ void UpdateDeleteTab( USHORT nTable, BOOL bIsMove, ScColumn* pRefUndo = NULL );
+ void UpdateMoveTab(USHORT nOldPos, USHORT nNewPos, USHORT nTabNo);
+ void UpdateCompile( BOOL bForceIfNameInUse = FALSE );
+ void UpdateTranspose( const ScRange& rSource, const ScAddress& rDest,
+ ScDocument* pUndoDoc );
+ void UpdateGrow( const ScRange& rArea, USHORT nGrowX, USHORT nGrowY );
+
+ void SetTabNo(USHORT nNewTab);
+ BOOL IsRangeNameInUse(USHORT nRow1, USHORT nRow2, USHORT nIndex) const;
+ void ReplaceRangeNamesInUse( USHORT nRow1, USHORT nRow2, const ScIndexMap& rMap );
+
+ const SfxPoolItem* GetAttr( USHORT nRow, USHORT nWhich ) const;
+ const ScPatternAttr* GetPattern( USHORT nRow ) const;
+ ULONG GetNumberFormat( USHORT nRow ) const;
+
+ void MergeSelectionPattern( SfxItemSet** ppSet, const ScMarkData& rMark, BOOL bDeep ) const;
+ void MergePatternArea( SfxItemSet** ppSet, USHORT nRow1, USHORT nRow2, BOOL bDeep ) const;
+ void MergeBlockFrame( SvxBoxItem* pLineOuter, SvxBoxInfoItem* pLineInner,
+ ScLineFlags& rFlags,
+ USHORT nStartRow, USHORT nEndRow, BOOL bLeft, USHORT nDistRight ) const;
+ void ApplyBlockFrame( const SvxBoxItem* pLineOuter, const SvxBoxInfoItem* pLineInner,
+ USHORT nStartRow, USHORT nEndRow, BOOL bLeft, USHORT nDistRight );
+
+ void ApplyAttr( USHORT nRow, const SfxPoolItem& rAttr );
+ void ApplyPattern( USHORT nRow, const ScPatternAttr& rPatAttr );
+ void ApplyPatternArea( USHORT nStartRow, USHORT nEndRow, const ScPatternAttr& rPatAttr );
+ void SetPattern( USHORT nRow, const ScPatternAttr& rPatAttr, BOOL bPutToPool = FALSE );
+ void SetPatternArea( USHORT nStartRow, USHORT nEndRow,
+ const ScPatternAttr& rPatAttr, BOOL bPutToPool = FALSE );
+ void ApplyPatternIfNumberformatIncompatible( const ScRange& rRange,
+ const ScPatternAttr& rPattern, short nNewType );
+
+ void ApplyStyle( USHORT nRow, const ScStyleSheet& rStyle );
+ void ApplyStyleArea( USHORT nStartRow, USHORT nEndRow, const ScStyleSheet& rStyle );
+ void ApplySelectionStyle(const ScStyleSheet& rStyle, const ScMarkData& rMark);
+ void ApplySelectionLineStyle( const ScMarkData& rMark,
+ const SvxBorderLine* pLine, BOOL bColorOnly );
+
+ const ScStyleSheet* GetStyle( USHORT nRow ) const;
+ const ScStyleSheet* GetSelectionStyle( const ScMarkData& rMark, BOOL& rFound ) const;
+ const ScStyleSheet* GetAreaStyle( BOOL& rFound, USHORT nRow1, USHORT nRow2 ) const;
+
+ void FindStyleSheet( const SfxStyleSheetBase* pStyleSheet, BOOL* pUsed, BOOL bReset );
+ BOOL IsStyleSheetUsed( const SfxStyleSheetBase& rStyle ) const;
+
+ short SearchStyle( short nRow, const ScStyleSheet* pSearchStyle,
+ BOOL bUp, BOOL bInSelection, const ScMarkData& rMark );
+ BOOL SearchStyleRange( short& rRow, short& rEndRow, const ScStyleSheet* pSearchStyle,
+ BOOL bUp, BOOL bInSelection, const ScMarkData& rMark );
+
+ BOOL ApplyFlags( USHORT nStartRow, USHORT nEndRow, INT16 nFlags );
+ BOOL RemoveFlags( USHORT nStartRow, USHORT nEndRow, INT16 nFlags );
+
+ void RemoveProtected( USHORT nStartRow, USHORT nEndRow );
+
+ short ApplySelectionCache( SfxItemPoolCache* pCache, const ScMarkData& rMark );
+ void DeleteSelection( USHORT nDelFlag, const ScMarkData& rMark );
+
+ void ClearSelectionItems( const USHORT* pWhich, const ScMarkData& rMark );
+ void ChangeSelectionIndent( BOOL bIncrement, const ScMarkData& rMark );
+
+ long GetNeededSize( USHORT nRow, OutputDevice* pDev,
+ double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY,
+ BOOL bWidth, const ScNeededSizeOptions& rOptions );
+ USHORT GetOptimalColWidth( OutputDevice* pDev, double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY,
+ BOOL bFormula, USHORT nOldWidth,
+ const ScMarkData* pMarkData,
+ BOOL bSimpleTextImport );
+ void GetOptimalHeight( USHORT nStartRow, USHORT nEndRow, USHORT* pHeight,
+ OutputDevice* pDev,
+ double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY,
+ BOOL bShrink, USHORT nMinHeight, USHORT nMinStart );
+private:
+ long GetSimpleTextNeededSize( USHORT nIndex, OutputDevice* pDev,
+ BOOL bWidth );
+public:
+
+ short GetNextUnprotected( short nRow, BOOL bUp ) const; // inkl. aktuelle
+
+ void GetFilterEntries(USHORT nStartRow, USHORT nEndRow, TypedStrCollection& rStrings);
+ BOOL GetDataEntries(USHORT nRow, TypedStrCollection& rStrings, BOOL bLimit);
+
+ USHORT NoteCount( USHORT nMaxRow = MAXROW ) const;
+
+ void LoadData( SvStream& rStream );
+ void SaveData( SvStream& rStream ) const;
+
+ void LoadNotes( SvStream& rStream );
+ void SaveNotes( SvStream& rStream ) const;
+
+ BOOL Load( SvStream& rStream, ScMultipleReadHeader& rHdr );
+ BOOL Save( SvStream& rStream, ScMultipleWriteHeader& rHdr ) const;
+ void UpdateInsertTabAbs(USHORT nNewPos);
+ BOOL TestTabRefAbs(USHORT nTable);
+ BOOL GetNextSpellingCell(USHORT& nRow, BOOL bInSel, const ScMarkData& rData) const;
+
+ void RemoveAutoSpellObj();
+
+ void StartListening( SfxListener& rLst, USHORT nRow );
+ void EndListening( SfxListener& rLst, USHORT nRow );
+ void MoveListeners( ScBroadcasterList& rSource, USHORT nDestRow );
+ void StartAllListeners();
+ void StartRelNameListeners();
+ void SetRelNameDirty();
+
+ void CompileDBFormula();
+ void CompileDBFormula( BOOL bCreateFormulaString );
+ void CompileNameFormula( BOOL bCreateFormulaString );
+ void CompileColRowNameFormula();
+
+ // maximale Stringlaengen einer Column, fuer z.B. dBase Export
+ xub_StrLen GetMaxStringLen( USHORT nRowStart, USHORT nRowEnd ) const;
+ xub_StrLen GetMaxNumberStringLen( USHORT& nPrecision,
+ USHORT nRowStart, USHORT nRowEnd ) const;
+
+private:
+ ScBaseCell* CloneCell(USHORT nIndex, USHORT nFlags,
+ ScDocument* pDestDoc, const ScAddress& rDestPos);
+};
+
+
+class ScColumnIterator // alle Daten eines Bereichs durchgehen
+{
+ const ScColumn* pColumn;
+ USHORT nPos;
+ USHORT nTop;
+ USHORT nBottom;
+public:
+ ScColumnIterator( const ScColumn* pCol, USHORT nStart=0, USHORT nEnd=MAXROW );
+ ~ScColumnIterator();
+
+ BOOL Next( USHORT& rRow, ScBaseCell*& rpCell );
+ USHORT GetIndex() const;
+};
+
+
+class ScMarkedDataIter // Daten in selektierten Bereichen durchgehen
+{
+ const ScColumn* pColumn;
+ USHORT nPos;
+ ScMarkArrayIter* pMarkIter;
+ USHORT nTop;
+ USHORT nBottom;
+ BOOL bNext;
+ BOOL bAll;
+
+public:
+ ScMarkedDataIter( const ScColumn* pCol, const ScMarkData* pMarkData,
+ BOOL bAllIfNone = FALSE );
+ ~ScMarkedDataIter();
+
+ BOOL Next( USHORT& rIndex );
+};
+
+
+#endif
+
+
diff --git a/sc/inc/compiler.hrc b/sc/inc/compiler.hrc
new file mode 100644
index 000000000000..e895a11f7e06
--- /dev/null
+++ b/sc/inc/compiler.hrc
@@ -0,0 +1,401 @@
+/*************************************************************************
+ *
+ * $RCSfile: compiler.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_COMPILER_HRC
+#define SC_COMPILER_HRC
+
+/* zentrale Definition der OpCodes fuer StarCalc-Funktionen */
+/* rj 15.07.96 */
+
+/*** Spezielle Kommandos ***/
+#define SC_OPCODE_PUSH 0 /* interne Kommandos */
+#define SC_OPCODE_JUMP 1
+#define SC_OPCODE_STOP 2
+#define SC_OPCODE_EXTERNAL 3
+#define SC_OPCODE_NAME 4
+#define SC_OPCODE_IF 5 /* Sprung Kommandos */
+#define SC_OPCODE_CHOSE 6
+#define SC_OPCODE_OPEN 7 /* Klammern und Seps */
+#define SC_OPCODE_CLOSE 8
+#define SC_OPCODE_SEP 9
+#define SC_OPCODE_MISSING 10 /* Spezial-Opcodes */
+#define SC_OPCODE_BAD 11
+#define SC_OPCODE_SPACES 12
+#define SC_OPCODE_MAT_REF 13
+#define SC_OPCODE_DB_AREA 14 /* weitere Zugriffs-Operanden */
+#define SC_OPCODE_MACRO 15
+#define SC_OPCODE_COL_ROW_NAME 16
+#define SC_OPCODE_COL_ROW_NAME_AUTO 17
+#define SC_OPCODE_END_DIV 20
+
+/*** Binaere Operatoren ***/
+#define SC_OPCODE_ADD 21
+#define SC_OPCODE_SUB 22
+#define SC_OPCODE_MUL 23
+#define SC_OPCODE_DIV 24
+#define SC_OPCODE_AMPERSAND 25
+#define SC_OPCODE_POW 26
+#define SC_OPCODE_EQUAL 27
+#define SC_OPCODE_NOT_EQUAL 28
+#define SC_OPCODE_LESS 29
+#define SC_OPCODE_GREATER 30
+#define SC_OPCODE_LESS_EQUAL 31
+#define SC_OPCODE_GREATER_EQUAL 32
+#define SC_OPCODE_AND 33
+#define SC_OPCODE_OR 34
+#define SC_OPCODE_INTERSECT 35
+#define SC_OPCODE_UNION 36
+#define SC_OPCODE_RANGE 37
+#define SC_OPCODE_END_BIN_OP 40
+
+/*** Unaere Operatoren ***/
+#define SC_OPCODE_NOT 41
+#define SC_OPCODE_NEG 42
+#define SC_OPCODE_NEG_SUB 43
+#define SC_OPCODE_END_UN_OP 45
+
+/*** Funktionen ohne Parameter ***/
+#define SC_OPCODE_PI 46
+#define SC_OPCODE_RANDOM 47
+#define SC_OPCODE_TRUE 48
+#define SC_OPCODE_FALSE 49
+#define SC_OPCODE_GET_ACT_DATE 50
+#define SC_OPCODE_GET_ACT_TIME 51
+#define SC_OPCODE_NO_VALUE 52
+#define SC_OPCODE_CURRENT 53
+#define SC_OPCODE_END_NO_PAR 60
+
+/*** Funktionen mit einem Parameter ***/
+#define SC_OPCODE_DEG 61 /* Trigonometrie */
+#define SC_OPCODE_RAD 62
+#define SC_OPCODE_SIN 63
+#define SC_OPCODE_COS 64
+#define SC_OPCODE_TAN 65
+#define SC_OPCODE_COT 66
+#define SC_OPCODE_ARC_SIN 67
+#define SC_OPCODE_ARC_COS 68
+#define SC_OPCODE_ARC_TAN 69
+#define SC_OPCODE_ARC_COT 70
+#define SC_OPCODE_SIN_HYP 71
+#define SC_OPCODE_COS_HYP 72
+#define SC_OPCODE_TAN_HYP 73
+#define SC_OPCODE_COT_HYP 74
+#define SC_OPCODE_ARC_SIN_HYP 75 /* transzendente */
+#define SC_OPCODE_ARC_COS_HYP 76
+#define SC_OPCODE_ARC_TAN_HYP 77
+#define SC_OPCODE_ARC_COT_HYP 78
+#define SC_OPCODE_EXP 79
+#define SC_OPCODE_LN 80
+#define SC_OPCODE_SQRT 81
+#define SC_OPCODE_FACT 82
+#define SC_OPCODE_GET_YEAR 83 /* Datum und Uhrzeit */
+#define SC_OPCODE_GET_MONTH 84
+#define SC_OPCODE_GET_DAY 85
+#define SC_OPCODE_GET_HOUR 86
+#define SC_OPCODE_GET_MIN 87
+#define SC_OPCODE_GET_SEC 88
+#define SC_OPCODE_PLUS_MINUS 89 /* diverse */
+#define SC_OPCODE_ABS 90
+#define SC_OPCODE_INT 91
+#define SC_OPCODE_PHI 92
+#define SC_OPCODE_GAUSS 93
+#define SC_OPCODE_IS_EMPTY 94 /* Feldtyp abfragen */
+#define SC_OPCODE_IS_STRING 95
+#define SC_OPCODE_IS_NON_STRING 96
+#define SC_OPCODE_IS_LOGICAL 97
+#define SC_OPCODE_TYPE 98
+#define SC_OPCODE_IS_REF 99
+#define SC_OPCODE_IS_VALUE 100
+#define SC_OPCODE_IS_FORMULA 101
+#define SC_OPCODE_IS_NV 102
+#define SC_OPCODE_IS_ERR 103
+#define SC_OPCODE_IS_ERROR 104
+#define SC_OPCODE_IS_EVEN 105
+#define SC_OPCODE_IS_ODD 106
+#define SC_OPCODE_N 107
+#define SC_OPCODE_GET_DATE_VALUE 108 /* String-Funktionen */
+#define SC_OPCODE_GET_TIME_VALUE 109
+#define SC_OPCODE_CODE 110
+#define SC_OPCODE_TRIM 111
+#define SC_OPCODE_UPPER 112
+#define SC_OPCODE_PROPPER 113
+#define SC_OPCODE_LOWER 114
+#define SC_OPCODE_LEN 115
+#define SC_OPCODE_T 116 /* diverse, Teil 2 */
+#define SC_OPCODE_VALUE 117
+#define SC_OPCODE_CLEAN 118
+#define SC_OPCODE_CHAR 119
+#define SC_OPCODE_LOG10 120
+#define SC_OPCODE_EVEN 121
+#define SC_OPCODE_ODD 122
+#define SC_OPCODE_STD_NORM_DIST 123
+#define SC_OPCODE_FISHER 124
+#define SC_OPCODE_FISHER_INV 125
+#define SC_OPCODE_S_NORM_INV 126
+#define SC_OPCODE_GAMMA_LN 127
+#define SC_OPCODE_ERROR_TYPE 128
+#define SC_OPCODE_ERR_CELL 129
+#define SC_OPCODE_FORMULA 130
+#define SC_OPCODE_END_1_PAR 200
+
+/*** Funktionen mit mehreren Parametern ***/
+#define SC_OPCODE_ARC_TAN_2 201
+#define SC_OPCODE_CEIL 202
+#define SC_OPCODE_FLOOR 203
+#define SC_OPCODE_ROUND 204
+#define SC_OPCODE_ROUND_UP 205
+#define SC_OPCODE_ROUND_DOWN 206
+#define SC_OPCODE_TRUNC 207
+#define SC_OPCODE_LOG 208
+#define SC_OPCODE_POWER 209
+#define SC_OPCODE_GGT 210
+#define SC_OPCODE_KGV 211
+#define SC_OPCODE_MOD 212
+#define SC_OPCODE_SUM_PRODUCT 213
+#define SC_OPCODE_SUM_SQ 214
+#define SC_OPCODE_SUM_X2MY2 215
+#define SC_OPCODE_SUM_X2DY2 216
+#define SC_OPCODE_SUM_XMY2 217
+#define SC_OPCODE_GET_DATE 218
+#define SC_OPCODE_GET_TIME 219
+#define SC_OPCODE_GET_DIFF_DATE 220
+#define SC_OPCODE_GET_DIFF_DATE_360 221
+#define SC_OPCODE_MIN 222
+#define SC_OPCODE_MAX 223
+#define SC_OPCODE_SUM 224
+#define SC_OPCODE_PRODUCT 225
+#define SC_OPCODE_AVERAGE 226
+#define SC_OPCODE_COUNT 227
+#define SC_OPCODE_COUNT_2 228
+#define SC_OPCODE_NBW 229
+#define SC_OPCODE_IKV 230
+#define SC_OPCODE_VAR 231
+#define SC_OPCODE_VAR_P 232
+#define SC_OPCODE_ST_DEV 233
+#define SC_OPCODE_ST_DEV_P 234
+#define SC_OPCODE_B 235
+#define SC_OPCODE_NORM_DIST 236
+#define SC_OPCODE_EXP_DIST 237
+#define SC_OPCODE_BINOM_DIST 238
+#define SC_OPCODE_POISSON_DIST 239
+#define SC_OPCODE_KOMBIN 240
+#define SC_OPCODE_KOMBIN_2 241
+#define SC_OPCODE_VARIATIONEN 242
+#define SC_OPCODE_VARIATIONEN_2 243
+#define SC_OPCODE_BW 244
+#define SC_OPCODE_DIA 245
+#define SC_OPCODE_GDA 246
+#define SC_OPCODE_GDA_2 247
+#define SC_OPCODE_VBD 248
+#define SC_OPCODE_LAUFZ 249
+#define SC_OPCODE_LIA 250
+#define SC_OPCODE_RMZ 251
+#define SC_OPCODE_COLUMNS 252
+#define SC_OPCODE_ROWS 253
+#define SC_OPCODE_COLUMN 254
+#define SC_OPCODE_ROW 255
+#define SC_OPCODE_ZGZ 256
+#define SC_OPCODE_ZW 257
+#define SC_OPCODE_ZZR 258
+#define SC_OPCODE_ZINS 259
+#define SC_OPCODE_ZINS_Z 260
+#define SC_OPCODE_KAPZ 261
+#define SC_OPCODE_KUM_ZINS_Z 262
+#define SC_OPCODE_KUM_KAP_Z 263
+#define SC_OPCODE_EFFEKTIV 264
+#define SC_OPCODE_NOMINAL 265
+#define SC_OPCODE_SUB_TOTAL 266 /* Spezialfunktion für Teilergebnisse */
+#define SC_OPCODE_DB_SUM 267 /* Datenbankfunktionen */
+#define SC_OPCODE_DB_COUNT 268
+#define SC_OPCODE_DB_COUNT_2 269
+#define SC_OPCODE_DB_AVERAGE 270
+#define SC_OPCODE_DB_GET 271
+#define SC_OPCODE_DB_MAX 272
+#define SC_OPCODE_DB_MIN 273
+#define SC_OPCODE_DB_PRODUCT 274
+#define SC_OPCODE_DB_STD_DEV 275
+#define SC_OPCODE_DB_STD_DEV_P 276
+#define SC_OPCODE_DB_VAR 277
+#define SC_OPCODE_DB_VAR_P 278
+#define SC_OPCODE_INDIRECT 279 /* Verwaltungsfunktionen */
+#define SC_OPCODE_ADRESS 280
+#define SC_OPCODE_MATCH 281
+#define SC_OPCODE_COUNT_EMPTY_CELLS 282
+#define SC_OPCODE_COUNT_IF 283
+#define SC_OPCODE_SUM_IF 284
+#define SC_OPCODE_LOOKUP 285
+#define SC_OPCODE_V_LOOKUP 286
+#define SC_OPCODE_H_LOOKUP 287
+#define SC_OPCODE_MULTI_AREA 288
+#define SC_OPCODE_OFFSET 289
+#define SC_OPCODE_INDEX 290
+#define SC_OPCODE_AREAS 291
+#define SC_OPCODE_CURRENCY 292 /* String-Funktionen */
+#define SC_OPCODE_REPLACE 293
+#define SC_OPCODE_FIXED 294
+#define SC_OPCODE_FIND 295
+#define SC_OPCODE_EXACT 296
+#define SC_OPCODE_LEFT 297
+#define SC_OPCODE_RIGHT 298
+#define SC_OPCODE_SEARCH 299
+#define SC_OPCODE_MID 300
+#define SC_OPCODE_TEXT 301
+#define SC_OPCODE_SUBSTITUTE 302
+#define SC_OPCODE_REPT 303
+#define SC_OPCODE_CONCAT 304
+#define SC_OPCODE_MAT_VALUE 305 /* Matrix-Funktionen */
+#define SC_OPCODE_MAT_DET 306
+#define SC_OPCODE_MAT_INV 307
+#define SC_OPCODE_MAT_MULT 308
+#define SC_OPCODE_MAT_TRANS 309
+#define SC_OPCODE_MATRIX_UNIT 310
+#define SC_OPCODE_BACK_SOLVER 311 /* BackSolver */
+#define SC_OPCODE_HYP_GEOM_DIST 312 /* Statistik-Funktionen */
+#define SC_OPCODE_LOG_NORM_DIST 313
+#define SC_OPCODE_T_DIST 314
+#define SC_OPCODE_F_DIST 315
+#define SC_OPCODE_CHI_DIST 316
+#define SC_OPCODE_WEIBULL 317
+#define SC_OPCODE_NEG_BINOM_VERT 318
+#define SC_OPCODE_KRIT_BINOM 319
+#define SC_OPCODE_KURT 320
+#define SC_OPCODE_HAR_MEAN 321
+#define SC_OPCODE_GEO_MEAN 322
+#define SC_OPCODE_STANDARD 323
+#define SC_OPCODE_AVE_DEV 324
+#define SC_OPCODE_SCHIEFE 325
+#define SC_OPCODE_DEV_SQ 326
+#define SC_OPCODE_MEDIAN 327
+#define SC_OPCODE_MODAL_VALUE 328
+#define SC_OPCODE_Z_TEST 329
+#define SC_OPCODE_T_TEST 330
+#define SC_OPCODE_RANK 331
+#define SC_OPCODE_PERCENTILE 332
+#define SC_OPCODE_PERCENT_RANK 333
+#define SC_OPCODE_LARGE 334
+#define SC_OPCODE_SMALL 335
+#define SC_OPCODE_FREQUENCY 336
+#define SC_OPCODE_QUARTILE 337
+#define SC_OPCODE_NORM_INV 338
+#define SC_OPCODE_CONFIDENCE 339
+#define SC_OPCODE_F_TEST 340
+#define SC_OPCODE_TRIM_MEAN 341
+#define SC_OPCODE_PROB 342
+#define SC_OPCODE_CORREL 343
+#define SC_OPCODE_COVAR 344
+#define SC_OPCODE_PEARSON 345
+#define SC_OPCODE_RSQ 346
+#define SC_OPCODE_STEYX 347
+#define SC_OPCODE_SLOPE 348
+#define SC_OPCODE_INTERCEPT 349
+#define SC_OPCODE_TREND 350
+#define SC_OPCODE_GROWTH 351
+#define SC_OPCODE_RGP 352
+#define SC_OPCODE_RKP 353
+#define SC_OPCODE_FORECAST 354
+#define SC_OPCODE_CHI_INV 355
+#define SC_OPCODE_GAMMA_DIST 356
+#define SC_OPCODE_GAMMA_INV 357
+#define SC_OPCODE_T_INV 358
+#define SC_OPCODE_F_INV 359
+#define SC_OPCODE_CHI_TEST 360
+#define SC_OPCODE_LOG_INV 361
+#define SC_OPCODE_TABLE_OP 362
+#define SC_OPCODE_BETA_DIST 363
+#define SC_OPCODE_BETA_INV 364
+#define SC_OPCODE_WEEK 365 /* sonstige */
+#define SC_OPCODE_GET_DAY_OF_WEEK 366
+#define SC_OPCODE_NO_NAME 367
+#define SC_OPCODE_STYLE 368
+#define SC_OPCODE_DDE 369
+#define SC_OPCODE_BASE 370
+#define SC_OPCODE_TABLE 371
+#define SC_OPCODE_TABLES 372
+#define SC_OPCODE_MIN_A 373
+#define SC_OPCODE_MAX_A 374
+#define SC_OPCODE_AVERAGE_A 375
+#define SC_OPCODE_ST_DEV_A 376
+#define SC_OPCODE_ST_DEV_P_A 377
+#define SC_OPCODE_VAR_A 378
+#define SC_OPCODE_VAR_P_A 379
+#define SC_OPCODE_EASTERSUNDAY 380
+#define SC_OPCODE_DECIMAL 381
+#define SC_OPCODE_CONVERT 382
+#define SC_OPCODE_END_2_PAR 383
+
+#define SC_OPCODE_LAST_OPCODE_ID 382 /* letzter OpCode */
+
+/*** Interna ***/
+#define SC_OPCODE_INTERNAL_BEGIN 9995
+#define SC_OPCODE_GAME 9995
+#define SC_OPCODE_SPEW 9996
+#define SC_OPCODE_TTT 9997
+#define SC_OPCODE_TEAM 9998
+#define SC_OPCODE_ANSWER 9999
+#define SC_OPCODE_INTERNAL_END 9999
+
+/*** ab hier sind Extradaten drin **/
+#define SC_OPCODE_DATA_TOKEN_1 10000
+
+#define SC_OPCODE_NONE 0xFFFF
+
+
+#endif /* SC_COMPILER_HRC */
diff --git a/sc/inc/compiler.hxx b/sc/inc/compiler.hxx
new file mode 100644
index 000000000000..306456a1e343
--- /dev/null
+++ b/sc/inc/compiler.hxx
@@ -0,0 +1,1123 @@
+/*************************************************************************
+ *
+ * $RCSfile: compiler.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_COMPILER_HXX
+#define SC_COMPILER_HXX
+
+#include <string.h> // wg. memcpy() und bitte nicht memory.h (WKC)
+
+#ifndef _INC_CDATA
+#define _INC_CDATA
+
+#ifndef _SVMEMPOOL_HXX //autogen
+#include <tools/mempool.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // fuer UpdateRefMode
+#endif
+#ifndef SC_COMPILER_HRC
+#include "compiler.hrc" // fuer OpCodes
+#endif
+
+#ifndef _UNOTOOLS_CHARCLASS_HXX
+#include <unotools/charclass.hxx>
+#endif
+
+#define _NEW_COMPILER
+
+//-----------------------------------------------
+
+// Konstanten und Datentypen auch fuer externe Module (Interpreter etc.):
+
+#define MAXCODE 512 // Maximale Anzahl Tokens
+#define MAXSTRLEN 256 // Maximale Laenge fuer Eingabestring
+ // (auch Formeln), "Verlaengerung" durch
+ // Namensvergabe moeglich
+#define MAXJUMPCOUNT 32
+#define MAXMATSIZE 100
+#define SC_DOUBLE_MAXVALUE 1.7e307
+
+#define errIllegalChar 501
+#define errIllegalArgument 502
+#define errIllegalFPOperation 503
+#define errIllegalParameter 504
+#define errIllegalJump 505
+#define errSeparator 506
+#define errPair 507
+#define errPairExpected 508
+#define errOperatorExpected 509
+#define errVariableExpected 510
+#define errParameterExpected 511
+#define errCodeOverflow 512
+#define errStringOverflow 513
+#define errStackOverflow 514
+#define errUnknownState 515
+#define errUnknownVariable 516
+#define errUnknownOpCode 517
+#define errUnknownStackVariable 518
+#define errNoValue 519
+#define errUnknownToken 520
+#define errNoCode 521
+#define errCircularReference 522
+#define errNoConvergence 523
+#define errNoRef 524
+#define errNoName 525
+#define errDoubleRef 526
+#define errInterpOverflow 527
+// wird nicht angezeigt, temporaer fuer TrackFormulas
+// Zelle haengt von einer ab, die errCircularReference ist
+#define errTrackFromCircRef 528
+
+#define NOVALUE 0x7fff
+
+
+// flag values of CharTable
+#define SC_COMPILER_C_ILLEGAL 0x0000
+#define SC_COMPILER_C_CHAR 0x0001
+#define SC_COMPILER_C_CHAR_BOOL 0x0002
+#define SC_COMPILER_C_CHAR_WORD 0x0004
+#define SC_COMPILER_C_CHAR_VALUE 0x0008
+#define SC_COMPILER_C_CHAR_STRING 0x0010
+#define SC_COMPILER_C_CHAR_DONTCARE 0x0020
+#define SC_COMPILER_C_BOOL 0x0040
+#define SC_COMPILER_C_WORD 0x0080 // auch in spstring.cxx dekl.
+#define SC_COMPILER_C_WORD_SEP 0x0100 // und rangenam.cxx (WORD und CHAR_WORD)
+#define SC_COMPILER_C_VALUE 0x0200
+#define SC_COMPILER_C_VALUE_SEP 0x0400
+#define SC_COMPILER_C_VALUE_EXP 0x0800
+#define SC_COMPILER_C_VALUE_SIGN 0x1000
+#define SC_COMPILER_C_VALUE_VALUE 0x2000
+#define SC_COMPILER_C_STRING_SEP 0x4000
+#define SC_COMPILER_C_NAME_SEP 0x8000 // es kann nur einen geben! '\''
+
+#define SC_COMPILER_FILE_TAB_SEP '#' // 'Doc'#Tab auch in global2.cxx
+
+
+enum OpCode
+ {
+ // Spezielle Kommandos
+ ocPush = SC_OPCODE_PUSH,
+ ocJump = SC_OPCODE_JUMP,
+ ocStop = SC_OPCODE_STOP,
+ ocExternal = SC_OPCODE_EXTERNAL,
+ ocName = SC_OPCODE_NAME,
+ // Sprung Kommandos
+ ocIf = SC_OPCODE_IF,
+ ocChose = SC_OPCODE_CHOSE,
+ // Klammern und Seps
+ ocOpen = SC_OPCODE_OPEN,
+ ocClose = SC_OPCODE_CLOSE,
+ ocSep = SC_OPCODE_SEP,
+ // Spezial-Opcodes
+ ocMissing = SC_OPCODE_MISSING,
+ ocBad = SC_OPCODE_BAD,
+ ocSpaces = SC_OPCODE_SPACES,
+ ocMatRef = SC_OPCODE_MAT_REF,
+ // weitere Zugriffs-Operanden
+ ocDBArea = SC_OPCODE_DB_AREA,
+ ocMacro = SC_OPCODE_MACRO,
+ ocColRowName = SC_OPCODE_COL_ROW_NAME,
+ ocColRowNameAuto = SC_OPCODE_COL_ROW_NAME_AUTO,
+ ocEndDiv = SC_OPCODE_END_DIV,
+ // Binaere Operatoren
+ ocAdd = SC_OPCODE_ADD,
+ ocSub = SC_OPCODE_SUB,
+ ocMul = SC_OPCODE_MUL,
+ ocDiv = SC_OPCODE_DIV,
+ ocAmpersand = SC_OPCODE_AMPERSAND,
+ ocPow = SC_OPCODE_POW,
+ ocEqual = SC_OPCODE_EQUAL,
+ ocNotEqual = SC_OPCODE_NOT_EQUAL,
+ ocLess = SC_OPCODE_LESS,
+ ocGreater = SC_OPCODE_GREATER,
+ ocLessEqual = SC_OPCODE_LESS_EQUAL,
+ ocGreaterEqual = SC_OPCODE_GREATER_EQUAL,
+ ocAnd = SC_OPCODE_AND,
+ ocOr = SC_OPCODE_OR,
+ ocIntersect = SC_OPCODE_INTERSECT,
+ ocUnion = SC_OPCODE_UNION,
+ ocRange = SC_OPCODE_RANGE,
+ ocEndBinOp = SC_OPCODE_END_BIN_OP,
+ // Unaere Operatoren
+ ocNot = SC_OPCODE_NOT,
+ ocNeg = SC_OPCODE_NEG,
+ ocNegSub = SC_OPCODE_NEG_SUB,
+ ocEndUnOp = SC_OPCODE_END_UN_OP,
+ // Funktionen mit keinem Parameter
+ ocPi = SC_OPCODE_PI,
+ ocRandom = SC_OPCODE_RANDOM,
+ ocTrue = SC_OPCODE_TRUE,
+ ocFalse = SC_OPCODE_FALSE,
+ ocGetActDate = SC_OPCODE_GET_ACT_DATE,
+ ocGetActTime = SC_OPCODE_GET_ACT_TIME,
+ ocNoValue = SC_OPCODE_NO_VALUE,
+ ocCurrent = SC_OPCODE_CURRENT,
+ ocEndNoPar = SC_OPCODE_END_NO_PAR,
+ // Funktionen mit einem Parameter
+ ocDeg = SC_OPCODE_DEG,
+ ocRad = SC_OPCODE_RAD,
+ ocSin = SC_OPCODE_SIN,
+ ocCos = SC_OPCODE_COS,
+ ocTan = SC_OPCODE_TAN,
+ ocCot = SC_OPCODE_COT,
+ ocArcSin = SC_OPCODE_ARC_SIN,
+ ocArcCos = SC_OPCODE_ARC_COS,
+ ocArcTan = SC_OPCODE_ARC_TAN,
+ ocArcCot = SC_OPCODE_ARC_COT,
+ ocSinHyp = SC_OPCODE_SIN_HYP,
+ ocCosHyp = SC_OPCODE_COS_HYP,
+ ocTanHyp = SC_OPCODE_TAN_HYP,
+ ocCotHyp = SC_OPCODE_COT_HYP,
+ ocArcSinHyp = SC_OPCODE_ARC_SIN_HYP,
+ ocArcCosHyp = SC_OPCODE_ARC_COS_HYP,
+ ocArcTanHyp = SC_OPCODE_ARC_TAN_HYP,
+ ocArcCotHyp = SC_OPCODE_ARC_COT_HYP,
+ ocExp = SC_OPCODE_EXP,
+ ocLn = SC_OPCODE_LN,
+ ocSqrt = SC_OPCODE_SQRT,
+ ocFact = SC_OPCODE_FACT,
+ ocGetYear = SC_OPCODE_GET_YEAR,
+ ocGetMonth = SC_OPCODE_GET_MONTH,
+ ocGetDay = SC_OPCODE_GET_DAY,
+ ocGetHour = SC_OPCODE_GET_HOUR,
+ ocGetMin = SC_OPCODE_GET_MIN,
+ ocGetSec = SC_OPCODE_GET_SEC,
+ ocPlusMinus = SC_OPCODE_PLUS_MINUS,
+ ocAbs = SC_OPCODE_ABS,
+ ocInt = SC_OPCODE_INT,
+ ocPhi = SC_OPCODE_PHI,
+ ocGauss = SC_OPCODE_GAUSS,
+ ocIsEmpty = SC_OPCODE_IS_EMPTY,
+ ocIsString = SC_OPCODE_IS_STRING,
+ ocIsNonString = SC_OPCODE_IS_NON_STRING,
+ ocIsLogical = SC_OPCODE_IS_LOGICAL,
+ ocType = SC_OPCODE_TYPE,
+ ocIsRef = SC_OPCODE_IS_REF,
+ ocIsValue = SC_OPCODE_IS_VALUE,
+ ocIsFormula = SC_OPCODE_IS_FORMULA,
+ ocIsNV = SC_OPCODE_IS_NV,
+ ocIsErr = SC_OPCODE_IS_ERR,
+ ocIsError = SC_OPCODE_IS_ERROR,
+ ocIsEven = SC_OPCODE_IS_EVEN,
+ ocIsOdd = SC_OPCODE_IS_ODD,
+ ocN = SC_OPCODE_N,
+ // String-Funktionen
+ ocGetDateValue = SC_OPCODE_GET_DATE_VALUE,
+ ocGetTimeValue = SC_OPCODE_GET_TIME_VALUE,
+ ocCode = SC_OPCODE_CODE,
+ ocTrim = SC_OPCODE_TRIM,
+ ocUpper = SC_OPCODE_UPPER,
+ ocPropper = SC_OPCODE_PROPPER,
+ ocLower = SC_OPCODE_LOWER,
+ ocLen = SC_OPCODE_LEN,
+ ocT = SC_OPCODE_T,
+ ocValue = SC_OPCODE_VALUE,
+ ocClean = SC_OPCODE_CLEAN,
+ ocChar = SC_OPCODE_CHAR,
+ ocLog10 = SC_OPCODE_LOG10,
+ ocEven = SC_OPCODE_EVEN,
+ ocOdd = SC_OPCODE_ODD,
+ ocStdNormDist = SC_OPCODE_STD_NORM_DIST,
+ ocFisher = SC_OPCODE_FISHER,
+ ocFisherInv = SC_OPCODE_FISHER_INV,
+ ocSNormInv = SC_OPCODE_S_NORM_INV,
+ ocGammaLn = SC_OPCODE_GAMMA_LN,
+ ocErrorType = SC_OPCODE_ERROR_TYPE,
+ ocErrCell = SC_OPCODE_ERR_CELL,
+ ocFormula = SC_OPCODE_FORMULA,
+ ocEnd1Par = SC_OPCODE_END_1_PAR,
+ // Funktionen mit mehreren Parametern
+ ocArcTan2 = SC_OPCODE_ARC_TAN_2,
+ ocCeil = SC_OPCODE_CEIL,
+ ocFloor = SC_OPCODE_FLOOR,
+ ocRound = SC_OPCODE_ROUND,
+ ocRoundUp = SC_OPCODE_ROUND_UP,
+ ocRoundDown = SC_OPCODE_ROUND_DOWN,
+ ocTrunc = SC_OPCODE_TRUNC,
+ ocLog = SC_OPCODE_LOG,
+ ocPower = SC_OPCODE_POWER,
+ ocGGT = SC_OPCODE_GGT,
+ ocKGV = SC_OPCODE_KGV,
+ ocMod = SC_OPCODE_MOD,
+ ocSumProduct = SC_OPCODE_SUM_PRODUCT,
+ ocSumSQ = SC_OPCODE_SUM_SQ,
+ ocSumX2MY2 = SC_OPCODE_SUM_X2MY2,
+ ocSumX2DY2 = SC_OPCODE_SUM_X2DY2,
+ ocSumXMY2 = SC_OPCODE_SUM_XMY2,
+ ocGetDate = SC_OPCODE_GET_DATE,
+ ocGetTime = SC_OPCODE_GET_TIME,
+ ocGetDiffDate = SC_OPCODE_GET_DIFF_DATE,
+ ocGetDiffDate360 = SC_OPCODE_GET_DIFF_DATE_360,
+ ocMin = SC_OPCODE_MIN,
+ ocMax = SC_OPCODE_MAX,
+ ocSum = SC_OPCODE_SUM,
+ ocProduct = SC_OPCODE_PRODUCT,
+ ocAverage = SC_OPCODE_AVERAGE,
+ ocCount = SC_OPCODE_COUNT,
+ ocCount2 = SC_OPCODE_COUNT_2,
+ ocNBW = SC_OPCODE_NBW,
+ ocIKV = SC_OPCODE_IKV,
+ ocVar = SC_OPCODE_VAR,
+ ocVarP = SC_OPCODE_VAR_P,
+ ocStDev = SC_OPCODE_ST_DEV,
+ ocStDevP = SC_OPCODE_ST_DEV_P,
+ ocB = SC_OPCODE_B,
+ ocNormDist = SC_OPCODE_NORM_DIST,
+ ocExpDist = SC_OPCODE_EXP_DIST,
+ ocBinomDist = SC_OPCODE_BINOM_DIST,
+ ocPoissonDist = SC_OPCODE_POISSON_DIST,
+ ocKombin = SC_OPCODE_KOMBIN,
+ ocKombin2 = SC_OPCODE_KOMBIN_2,
+ ocVariationen = SC_OPCODE_VARIATIONEN,
+ ocVariationen2 = SC_OPCODE_VARIATIONEN_2,
+ ocBW = SC_OPCODE_BW,
+ ocDIA = SC_OPCODE_DIA,
+ ocGDA = SC_OPCODE_GDA,
+ ocGDA2 = SC_OPCODE_GDA_2,
+ ocVBD = SC_OPCODE_VBD,
+ ocLaufz = SC_OPCODE_LAUFZ,
+ ocLIA = SC_OPCODE_LIA,
+ ocRMZ = SC_OPCODE_RMZ,
+ ocColumns = SC_OPCODE_COLUMNS,
+ ocRows = SC_OPCODE_ROWS,
+ ocColumn = SC_OPCODE_COLUMN,
+ ocRow = SC_OPCODE_ROW,
+ ocZGZ = SC_OPCODE_ZGZ,
+ ocZW = SC_OPCODE_ZW,
+ ocZZR = SC_OPCODE_ZZR,
+ ocZins = SC_OPCODE_ZINS,
+ ocZinsZ = SC_OPCODE_ZINS_Z,
+ ocKapz = SC_OPCODE_KAPZ,
+ ocKumZinsZ = SC_OPCODE_KUM_ZINS_Z,
+ ocKumKapZ = SC_OPCODE_KUM_KAP_Z,
+ ocEffektiv = SC_OPCODE_EFFEKTIV,
+ ocNominal = SC_OPCODE_NOMINAL,
+ // Spezialfunktion für Teilergebnisse
+ ocSubTotal = SC_OPCODE_SUB_TOTAL,
+ // Datenbankfunktionen
+ ocDBSum = SC_OPCODE_DB_SUM,
+ ocDBCount = SC_OPCODE_DB_COUNT,
+ ocDBCount2 = SC_OPCODE_DB_COUNT_2,
+ ocDBAverage = SC_OPCODE_DB_AVERAGE,
+ ocDBGet = SC_OPCODE_DB_GET,
+ ocDBMax = SC_OPCODE_DB_MAX,
+ ocDBMin = SC_OPCODE_DB_MIN,
+ ocDBProduct = SC_OPCODE_DB_PRODUCT,
+ ocDBStdDev = SC_OPCODE_DB_STD_DEV,
+ ocDBStdDevP = SC_OPCODE_DB_STD_DEV_P,
+ ocDBVar = SC_OPCODE_DB_VAR,
+ ocDBVarP = SC_OPCODE_DB_VAR_P,
+ // Verwaltungsfunktionen
+ ocIndirect = SC_OPCODE_INDIRECT,
+ ocAdress = SC_OPCODE_ADRESS,
+ ocMatch = SC_OPCODE_MATCH,
+ ocCountEmptyCells = SC_OPCODE_COUNT_EMPTY_CELLS,
+ ocCountIf = SC_OPCODE_COUNT_IF,
+ ocSumIf = SC_OPCODE_SUM_IF,
+ ocLookup = SC_OPCODE_LOOKUP,
+ ocVLookup = SC_OPCODE_V_LOOKUP,
+ ocHLookup = SC_OPCODE_H_LOOKUP,
+ ocMultiArea = SC_OPCODE_MULTI_AREA,
+ ocOffset = SC_OPCODE_OFFSET,
+ ocIndex = SC_OPCODE_INDEX,
+ ocAreas = SC_OPCODE_AREAS,
+ // String-Funktionen
+ ocCurrency = SC_OPCODE_CURRENCY,
+ ocReplace = SC_OPCODE_REPLACE,
+ ocFixed = SC_OPCODE_FIXED,
+ ocFind = SC_OPCODE_FIND,
+ ocExact = SC_OPCODE_EXACT,
+ ocLeft = SC_OPCODE_LEFT,
+ ocRight = SC_OPCODE_RIGHT,
+ ocSearch = SC_OPCODE_SEARCH,
+ ocMid = SC_OPCODE_MID,
+ ocText = SC_OPCODE_TEXT,
+ ocSubstitute = SC_OPCODE_SUBSTITUTE,
+ ocRept = SC_OPCODE_REPT,
+ ocConcat = SC_OPCODE_CONCAT,
+ // Matrix-Funktionen
+ ocMatValue = SC_OPCODE_MAT_VALUE,
+ ocMatDet = SC_OPCODE_MAT_DET,
+ ocMatInv = SC_OPCODE_MAT_INV,
+ ocMatMult = SC_OPCODE_MAT_MULT,
+ ocMatTrans = SC_OPCODE_MAT_TRANS,
+ ocMatrixUnit = SC_OPCODE_MATRIX_UNIT,
+ // BackSolver
+ ocBackSolver = SC_OPCODE_BACK_SOLVER,
+ // Statistik-Funktionen
+ ocHypGeomDist = SC_OPCODE_HYP_GEOM_DIST,
+ ocLogNormDist = SC_OPCODE_LOG_NORM_DIST,
+ ocTDist = SC_OPCODE_T_DIST,
+ ocFDist = SC_OPCODE_F_DIST,
+ ocChiDist = SC_OPCODE_CHI_DIST,
+ ocWeibull = SC_OPCODE_WEIBULL,
+ ocNegBinomVert = SC_OPCODE_NEG_BINOM_VERT,
+ ocKritBinom = SC_OPCODE_KRIT_BINOM,
+ ocKurt = SC_OPCODE_KURT,
+ ocHarMean = SC_OPCODE_HAR_MEAN,
+ ocGeoMean = SC_OPCODE_GEO_MEAN,
+ ocStandard = SC_OPCODE_STANDARD,
+ ocAveDev = SC_OPCODE_AVE_DEV,
+ ocSchiefe = SC_OPCODE_SCHIEFE,
+ ocDevSq = SC_OPCODE_DEV_SQ,
+ ocMedian = SC_OPCODE_MEDIAN,
+ ocModalValue = SC_OPCODE_MODAL_VALUE,
+ ocZTest = SC_OPCODE_Z_TEST,
+ ocTTest = SC_OPCODE_T_TEST,
+ ocRank = SC_OPCODE_RANK,
+ ocPercentile = SC_OPCODE_PERCENTILE,
+ ocPercentrank = SC_OPCODE_PERCENT_RANK,
+ ocLarge = SC_OPCODE_LARGE,
+ ocSmall = SC_OPCODE_SMALL,
+ ocFrequency = SC_OPCODE_FREQUENCY,
+ ocQuartile = SC_OPCODE_QUARTILE,
+ ocNormInv = SC_OPCODE_NORM_INV,
+ ocConfidence = SC_OPCODE_CONFIDENCE,
+ ocFTest = SC_OPCODE_F_TEST,
+ ocTrimMean = SC_OPCODE_TRIM_MEAN,
+ ocProb = SC_OPCODE_PROB,
+ ocCorrel = SC_OPCODE_CORREL,
+ ocCovar = SC_OPCODE_COVAR,
+ ocPearson = SC_OPCODE_PEARSON,
+ ocRSQ = SC_OPCODE_RSQ,
+ ocSTEYX = SC_OPCODE_STEYX,
+ ocSlope = SC_OPCODE_SLOPE,
+ ocIntercept = SC_OPCODE_INTERCEPT,
+ ocTrend = SC_OPCODE_TREND,
+ ocGrowth = SC_OPCODE_GROWTH,
+ ocRGP = SC_OPCODE_RGP,
+ ocRKP = SC_OPCODE_RKP,
+ ocForecast = SC_OPCODE_FORECAST,
+ ocChiInv = SC_OPCODE_CHI_INV,
+ ocGammaDist = SC_OPCODE_GAMMA_DIST,
+ ocGammaInv = SC_OPCODE_GAMMA_INV,
+ ocTInv = SC_OPCODE_T_INV,
+ ocFInv = SC_OPCODE_F_INV,
+ ocChiTest = SC_OPCODE_CHI_TEST,
+ ocLogInv = SC_OPCODE_LOG_INV,
+ ocTableOp = SC_OPCODE_TABLE_OP,
+ ocBetaDist = SC_OPCODE_BETA_DIST,
+ ocBetaInv = SC_OPCODE_BETA_INV,
+ // sonstige
+ ocWeek = SC_OPCODE_WEEK,
+ ocGetDayOfWeek = SC_OPCODE_GET_DAY_OF_WEEK,
+ ocNoName = SC_OPCODE_NO_NAME,
+ ocStyle = SC_OPCODE_STYLE,
+ ocDde = SC_OPCODE_DDE,
+ ocBase = SC_OPCODE_BASE,
+ ocTable = SC_OPCODE_TABLE,
+ ocTables = SC_OPCODE_TABLES,
+ ocMinA = SC_OPCODE_MIN_A,
+ ocMaxA = SC_OPCODE_MAX_A,
+ ocAverageA = SC_OPCODE_AVERAGE_A,
+ ocStDevA = SC_OPCODE_ST_DEV_A,
+ ocStDevPA = SC_OPCODE_ST_DEV_P_A,
+ ocVarA = SC_OPCODE_VAR_A,
+ ocVarPA = SC_OPCODE_VAR_P_A,
+ ocEasterSunday = SC_OPCODE_EASTERSUNDAY,
+ ocDecimal = SC_OPCODE_DECIMAL,
+ ocConvert = SC_OPCODE_CONVERT,
+ ocEnd2Par = SC_OPCODE_END_2_PAR,
+ // internes Allerlei
+ ocInternalBegin = SC_OPCODE_INTERNAL_BEGIN,
+ ocGame = SC_OPCODE_GAME,
+ ocSpew = SC_OPCODE_SPEW,
+ ocTTT = SC_OPCODE_TTT,
+ ocTeam = SC_OPCODE_TEAM,
+ ocAnswer = SC_OPCODE_ANSWER,
+ ocInternalEnd = SC_OPCODE_INTERNAL_END,
+ // ab hier sind Extradaten drin
+ ocDataToken1 = SC_OPCODE_DATA_TOKEN_1,
+ // kein OpCode
+ ocNone = SC_OPCODE_NONE
+ };
+
+enum StackVar
+ {
+ svByte,
+ svDouble,
+ svString,
+ svSingleRef,
+ svDoubleRef,
+ svMatrix,
+ svIndex,
+ svJump,
+ svExternal, // Byte + String
+
+ svMissing = 0x70, // liefert 0 oder ""
+ svErr // unbekannter StackType
+ };
+
+#endif
+
+class ScDocument;
+class ScMatrix;
+class ScRangeData;
+
+// Konstanten und Datentypen compilerintern:
+
+
+// Ref-Flags fuer alte (bis Release 3.1) Dokumente
+
+struct OldSingleRefBools
+{
+ BYTE bRelCol; // Flagwerte (s.u.), jeweils 2 Bits im Dateiformat
+ BYTE bRelRow;
+ BYTE bRelTab;
+ BYTE bOldFlag3D; // zwei BOOL Flags (s.u.)
+};
+
+#define SR_ABSOLUTE 0 // Absolutwert
+#define SR_RELABS 1 // Relativwert als Absolutwert (bis Release 3.1)
+#define SR_RELATIVE 2 // Relativwert als Deltawert (nach Release 3.1)
+#define SR_DELETED 3 // Gel”schte Zeile/Spalte/Tabelle
+
+#define SRF_3D 0x01 // 3D Ref, war frueher (vor 304a) der BOOL
+#define SRF_RELNAME 0x02 // Ref ist aus RangeName mit relativen Angaben entstanden
+#define SRF_BITS 0x03 // Maske der moeglichen Bits
+
+
+struct SingleRefData // Referenzen auf die Tabelle
+{
+ INT16 nCol; // absolute Angaben
+ INT16 nRow;
+ INT16 nTab;
+ INT16 nRelCol; // Angaben relativ zur Position
+ INT16 nRelRow;
+ INT16 nRelTab;
+
+ union
+ {
+ BOOL bFlags;
+ struct
+ {
+ BOOL bColRel :1;
+ BOOL bColDeleted :1;
+ BOOL bRowRel :1;
+ BOOL bRowDeleted :1;
+ BOOL bTabRel :1;
+ BOOL bTabDeleted :1;
+ BOOL bFlag3D :1; // 3D-Ref
+ BOOL bRelName :1; // Ref aus RangeName mit relativen Angaben
+ }Flags;
+ };
+
+ // kein default cTor, da in ScToken union verwendet, InitFlags setzen!
+ inline void InitFlags() { bFlags = 0; } // alles FALSE
+ // InitAddress: InitFlags und setzt Adresse
+ inline void InitAddress( const ScAddress& rAdr );
+ // InitAddressRel: InitFlags und setzt Adresse, alles relativ zu rPos
+ inline void InitAddressRel( const ScAddress& rAdr, const ScAddress& rPos );
+ inline void SetColRel( BOOL bVal ) { Flags.bColRel = (bVal ? TRUE : FALSE ); }
+ inline BOOL IsColRel() const { return Flags.bColRel; }
+ inline void SetRowRel( BOOL bVal ) { Flags.bRowRel = (bVal ? TRUE : FALSE ); }
+ inline BOOL IsRowRel() const { return Flags.bRowRel; }
+ inline void SetTabRel( BOOL bVal ) { Flags.bTabRel = (bVal ? TRUE : FALSE ); }
+ inline BOOL IsTabRel() const { return Flags.bTabRel; }
+
+ inline void SetColDeleted( BOOL bVal ) { Flags.bColDeleted = (bVal ? TRUE : FALSE ); }
+ inline BOOL IsColDeleted() const { return Flags.bColDeleted; }
+ inline void SetRowDeleted( BOOL bVal ) { Flags.bRowDeleted = (bVal ? TRUE : FALSE ); }
+ inline BOOL IsRowDeleted() const { return Flags.bRowDeleted; }
+ inline void SetTabDeleted( BOOL bVal ) { Flags.bTabDeleted = (bVal ? TRUE : FALSE ); }
+ inline BOOL IsTabDeleted() const { return Flags.bTabDeleted; }
+
+ inline void SetFlag3D( BOOL bVal ) { Flags.bFlag3D = (bVal ? TRUE : FALSE ); }
+ inline BOOL IsFlag3D() const { return Flags.bFlag3D; }
+ inline void SetRelName( BOOL bVal ) { Flags.bRelName = (bVal ? TRUE : FALSE ); }
+ inline BOOL IsRelName() const { return Flags.bRelName; }
+
+ inline BOOL Valid() const;
+
+ void SmartRelAbs( const ScAddress& rPos );
+ void CalcRelFromAbs( const ScAddress& rPos );
+ void CalcAbsIfRel( const ScAddress& rPos );
+ void OldBoolsToNewFlags( const OldSingleRefBools& );
+ BYTE CreateStoreByteFromFlags() const;
+ void CreateFlagsFromLoadByte( BYTE );
+};
+
+inline void SingleRefData::InitAddress( const ScAddress& rAdr )
+{
+ InitFlags();
+ nCol = rAdr.Col();
+ nRow = rAdr.Row();
+ nTab = rAdr.Tab();
+}
+
+inline void SingleRefData::InitAddressRel( const ScAddress& rAdr,
+ const ScAddress& rPos )
+{
+ InitFlags();
+ nCol = rAdr.Col();
+ nRow = rAdr.Row();
+ nTab = rAdr.Tab();
+ SetColRel( TRUE );
+ SetRowRel( TRUE );
+ SetTabRel( TRUE );
+ CalcRelFromAbs( rPos );
+}
+
+inline BOOL SingleRefData::Valid() const
+{
+ return nCol >= 0 && nCol <= MAXCOL &&
+ nRow >= 0 && nRow <= MAXROW &&
+ nTab >= 0 && nTab <= MAXTAB;
+}
+
+
+struct ComplRefData // Komplette Referenz
+{
+ SingleRefData Ref1;
+ SingleRefData Ref2;
+
+ inline void InitFlags()
+ { Ref1.InitFlags(); Ref2.InitFlags(); }
+ inline void InitRange( const ScRange& rRange )
+ {
+ Ref1.InitAddress( rRange.aStart );
+ Ref2.InitAddress( rRange.aEnd );
+ }
+ inline void InitRangeRel( const ScRange& rRange, const ScAddress& rPos )
+ {
+ Ref1.InitAddressRel( rRange.aStart, rPos );
+ Ref2.InitAddressRel( rRange.aEnd, rPos );
+ }
+ inline void SmartRelAbs( const ScAddress& rPos )
+ { Ref1.SmartRelAbs( rPos ); Ref2.SmartRelAbs( rPos ); }
+ inline void CalcRelFromAbs( const ScAddress& rPos )
+ { Ref1.CalcRelFromAbs( rPos ); Ref2.CalcRelFromAbs( rPos ); }
+ inline void CalcAbsIfRel( const ScAddress& rPos )
+ { Ref1.CalcAbsIfRel( rPos ); Ref2.CalcAbsIfRel( rPos ); }
+ inline BOOL Valid() const
+ { return Ref1.Valid() && Ref2.Valid(); }
+ void PutInOrder();
+};
+
+
+#if 0
+/*
+ OpCode eOp; // Op-Code
+ StackVar eType; // Art der Daten
+ USHORT nRefCnt; // Ref-Count
+ BOOL bRaw; // nicht per Clone auf passende Groesse getrimmt
+ */
+#endif
+
+#ifndef PRODUCT
+#define SC_TOKEN_FIX_MEMBERS \
+ OpCode eOp; \
+ StackVar eType; \
+ USHORT nRefCnt; \
+ BOOL bRaw;
+#else
+#define SC_TOKEN_FIX_MEMBERS \
+ USHORT eOp; \
+ USHORT eType; \
+ USHORT nRefCnt; \
+ BOOL bRaw;
+#endif
+
+struct ScDoubleToken
+{
+private:
+ SC_TOKEN_FIX_MEMBERS
+public:
+ union
+ { // union nur um gleiches Alignment wie ScToken sicherzustellen
+ double nValue;
+ BYTE cByte;
+ };
+ DECL_FIXEDMEMPOOL_NEWDEL( ScDoubleToken );
+};
+
+struct ScToken
+{
+ friend class ScCompiler;
+ // Friends, die temporaere Raw-Tokens auf dem Stack benutzen (und deswegen
+ // den private dtor brauchen) und wissen, was sie tun..
+ friend class ScTokenArray;
+ friend class ScInterpreter;
+private:
+ SC_TOKEN_FIX_MEMBERS
+public:
+ union {
+ double nValue;
+ ComplRefData aRef;
+ BYTE cByte;
+ ScMatrix* pMat;
+ USHORT nIndex; // Index fuer Name-Tabelle
+ sal_Unicode cStr[ MAXSTRLEN+1 ]; // String (bis 255 Zeichen + 0)
+ short nJump[MAXJUMPCOUNT+1]; // If/Chose-Token
+ };
+
+ ScToken() : bRaw( TRUE ) {}
+private:
+ ~ScToken() {} //! nur via Delete() loeschen
+public:
+ DECL_FIXEDMEMPOOL_NEWDEL( ScToken ); // Raw-ScToken
+ StackVar GetType() const { return (StackVar) eType; }
+ OpCode GetOpCode() const { return (OpCode) eOp; }
+ BOOL IsFunction() const; // reine Funktionen, keine Operatoren
+ BOOL IsMatrixFunction() const; // ob Funktion _immer_ eine Matrix returnt
+ BYTE GetParamCount() const;
+ void NewOpCode( OpCode e ) { eOp = e; }
+ void IncRef() { nRefCnt++; }
+ void DecRef() { if( !--nRefCnt ) Delete(); }
+ USHORT GetRef() const { return nRefCnt; }
+ void Delete();
+
+ // Diese Methoden nur auf Tokens, die nicht im TokenArray stehen,
+ // anwenden, da der RefCount auf 0 gesetzt wird!
+ void SetOpCode( OpCode eCode );
+ void SetString( const sal_Unicode* pStr );
+ void SetSingleReference( const SingleRefData& rRef );
+ void SetDoubleReference( const ComplRefData& rRef );
+ void SetByte( BYTE c );
+ void SetDouble( double fVal );
+ void SetInt( int nVal );
+ void SetName( USHORT n );
+ void SetMatrix( ScMatrix* p );
+ void SetExternal(const sal_Unicode* pStr);
+ // Diese Methoden sind hingegen OK.
+ ComplRefData& GetReference();
+ void SetReference( ComplRefData& rRef );
+
+ ScToken* Clone() const; // echte Kopie!
+ void Load30( SvStream& );
+ void Load( SvStream&, USHORT nVer );
+ void Store( SvStream& ) const;
+
+ BOOL operator== (const ScToken& rToken) const;
+ BOOL TextEqual(const ScToken& rToken) const;
+
+ static xub_StrLen GetStrLen( const sal_Unicode* pStr ); // as long as a "string" is an array
+ static size_t GetStrLenBytes( xub_StrLen nLen )
+ { return nLen * sizeof(sal_Unicode); }
+ static size_t GetStrLenBytes( const sal_Unicode* pStr )
+ { return GetStrLenBytes( GetStrLen( pStr ) ); }
+};
+
+
+class ScTokenRef
+{
+ ScToken* p;
+public:
+ inline ScTokenRef() { p = NULL; }
+ inline ScTokenRef( const ScTokenRef& r ) { if( ( p = r.p ) != NULL ) p->IncRef(); }
+ inline ScTokenRef( ScToken *t ) { if( ( p = t ) != NULL ) t->IncRef(); }
+ inline void Clear() { if( p ) p->DecRef(); }
+ inline ~ScTokenRef() { if( p ) p->DecRef(); }
+ inline ScTokenRef& operator=( const ScTokenRef& r ) { return *this = r.p; }
+ inline ScTokenRef& operator=( ScToken* t )
+ { if( t ) t->IncRef(); if( p ) p->DecRef(); p = t; return *this; }
+ inline BOOL Is() const { return p != NULL; }
+ inline BOOL operator ! () const { return p == NULL; }
+ inline ScToken* operator&() const { return p; }
+ inline ScToken* operator->() const { return p; }
+ inline ScToken& operator*() const { return *p; }
+ inline operator ScToken*() const { return p; }
+};
+
+
+enum ScRecalcMode40
+{ // alter RecalcMode bis einschliesslich 4.0
+ RC_NORMAL,
+ RC_ALWAYS,
+ RC_ONLOAD, // immer nach dem Laden
+ RC_ONLOAD_ONCE, // einmal nach dem Laden
+ RC_FORCED, // auch wenn Zelle nicht sichtbar
+ RC_ONREFMOVE // wenn Referenz bewegt wurde (ab SP3, 05.11.97)
+};
+
+// neuer (ab 5.0, 14.01.98) RecalcMode Zugriff nur noch noch via TokenArray
+// SetRecalcMode / IsRecalcMode...
+
+typedef BYTE ScRecalcMode;
+// von den exklusiven Bits kann nur eins gesetzt sein
+// wird von TokenArray SetRecalcMode... Methoden gehandelt
+#define RECALCMODE_NORMAL 0x01 // exklusiv
+#define RECALCMODE_ALWAYS 0x02 // exklusiv, immer
+#define RECALCMODE_ONLOAD 0x04 // exklusiv, immer nach dem Laden
+#define RECALCMODE_ONLOAD_ONCE 0x08 // exklusiv, einmal nach dem Laden
+#define RECALCMODE_FORCED 0x10 // kombiniert, auch wenn Zelle nicht sichtbar
+#define RECALCMODE_ONREFMOVE 0x20 // kombiniert, wenn Referenz bewegt wurde
+#define RECALCMODE_EMASK 0x0F // Maske der exklusiven Bits
+// werden neue Bits definiert, muessen ExportRecalcMode40 und AddRecalcMode
+// angepasst werden!
+
+class ScTokenArray
+{
+ friend class ScCompiler;
+ friend class ScTokenIterator;
+
+ ScToken** pCode; // Token->Array
+ ScToken** pRPN; // RPN-Array
+ USHORT nLen; // Laenge des TokenArrays
+ USHORT nRPN; // Laenge des RPN-Arrays
+ USHORT nIndex; // aktueller Step-Index
+ USHORT nError; // Fehlercode
+ short nRefs; // Anzahl Referenzen
+ ScRecalcMode nMode; // wann muss berechnet werden?
+
+ void Assign( const ScTokenArray& );
+
+ ScToken* Add( ScToken* );
+ void ImportRecalcMode40( ScRecalcMode40 );
+ ScRecalcMode40 ExportRecalcMode40() const;
+ inline void SetCombinedBitsRecalcMode( ScRecalcMode nBits )
+ { nMode |= (nBits & ~RECALCMODE_EMASK); }
+ inline ScRecalcMode GetCombinedBitsRecalcMode() const
+ { return nMode & ~RECALCMODE_EMASK; }
+ inline void SetMaskedRecalcMode( ScRecalcMode nBits )
+ { nMode = GetCombinedBitsRecalcMode() | nBits; }
+ // in nMode gesetzte exklusive Bits werden genullt,
+ // nVal kann auch kombinierte Bits enthalten,
+ // aber nur ein exklusives Bit darf gesetzt sein!
+
+public:
+ ScTokenArray();
+ ScTokenArray( const ScTokenArray& ); // Zuweisung mit Referenzen auf Tokens
+ ~ScTokenArray();
+ ScTokenArray* Clone() const; // echte Kopie!
+ void Clear();
+ void DelRPN();
+ ScToken* First() { nIndex = 0; return Next(); }
+ ScToken* Next();
+ ScToken* GetNextName();
+ ScToken* GetNextDBArea();
+ ScToken* GetNextReference();
+ ScToken* GetNextReferenceRPN();
+ ScToken* GetNextReferenceOrName();
+ ScToken* GetNextColRowName();
+ ScToken* GetNextOpCodeRPN( OpCode );
+ ScToken* PeekNext();
+ ScToken* PeekPrevNoSpaces(); // nur nach First/Next/Last/Prev !
+ ScToken* PeekNextNoSpaces(); // nur nach First/Next/Last/Prev !
+ ScToken* FirstRPN() { nIndex = 0; return NextRPN(); }
+ ScToken* NextRPN();
+ ScToken* LastRPN() { nIndex = nRPN; return PrevRPN(); }
+ ScToken* PrevRPN();
+
+ BOOL HasOpCodeRPN( OpCode ) const;
+ BOOL HasName() const; // token of type svIndex
+ BOOL IsReference( ScRange& rRange ) const; // exactly and only one range
+
+ ScToken** GetArray() const { return pCode; }
+ ScToken** GetCode() const { return pRPN; }
+ USHORT GetLen() const { return nLen; }
+ USHORT GetCodeLen() const { return nRPN; }
+ void Reset() { nIndex = 0; }
+ USHORT GetError() const { return nError; }
+ void SetError( USHORT n ) { nError = n; }
+ short GetRefs() const { return nRefs; }
+
+ inline ScRecalcMode GetRecalcMode() const { return nMode; }
+ void AddRecalcMode( ScRecalcMode nBits );
+ // Bits werden nicht direkt gesetzt sondern
+ // geprueft und evtl. nach Prio behandelt,
+ // wenn mehrere exklusive gesetzt sind!
+
+ inline void ClearRecalcMode() { nMode = RECALCMODE_NORMAL; }
+ inline void SetRecalcModeNormal()
+ { SetMaskedRecalcMode( RECALCMODE_NORMAL ); }
+ inline void SetRecalcModeAlways()
+ { SetMaskedRecalcMode( RECALCMODE_ALWAYS ); }
+ inline void SetRecalcModeOnLoad()
+ { SetMaskedRecalcMode( RECALCMODE_ONLOAD ); }
+ inline void SetRecalcModeOnLoadOnce()
+ { SetMaskedRecalcMode( RECALCMODE_ONLOAD_ONCE ); }
+ inline void SetRecalcModeForced()
+ { nMode |= RECALCMODE_FORCED; }
+ inline void ClearRecalcModeForced()
+ { nMode &= ~RECALCMODE_FORCED; }
+ inline void SetRecalcModeOnRefMove()
+ { nMode |= RECALCMODE_ONREFMOVE; }
+ inline void ClearRecalcModeOnRefMove()
+ { nMode &= ~RECALCMODE_ONREFMOVE; }
+ inline BOOL IsRecalcModeNormal() const
+ { return (nMode & RECALCMODE_NORMAL) != 0; }
+ inline BOOL IsRecalcModeAlways() const
+ { return (nMode & RECALCMODE_ALWAYS) != 0; }
+ inline BOOL IsRecalcModeOnLoad() const
+ { return (nMode & RECALCMODE_ONLOAD) != 0; }
+ inline BOOL IsRecalcModeOnLoadOnce() const
+ { return (nMode & RECALCMODE_ONLOAD_ONCE) != 0; }
+ inline BOOL IsRecalcModeForced() const
+ { return (nMode & RECALCMODE_FORCED) != 0; }
+ inline BOOL IsRecalcModeOnRefMove() const
+ { return (nMode & RECALCMODE_ONREFMOVE) != 0; }
+
+ inline OpCode GetOuterFuncOpCode(); // OpCode der aeusseren Funktion
+ // ermittelt Ausdehnung direkt angrenzender Refs
+ // nur auf echte Funcs wie z.B. GetOuterFuncOpCode() == ocSum anwenden!
+ BOOL GetAdjacentExtendOfOuterFuncRefs( USHORT& nExtend,
+ const ScAddress& rPos, ScDirection );
+
+ // Operatoren +,-,*,/,^,&,=,<>,<,>,<=,>=
+ // mit DoubleRef in Formel?
+ BOOL HasMatrixDoubleRefOps();
+
+ void Load30( SvStream&, const ScAddress& );
+ void Load( SvStream&, USHORT, const ScAddress& );
+ void Store( SvStream&, const ScAddress& ) const;
+
+ ScToken* AddToken( const ScToken& );
+ ScToken* AddOpCode( OpCode eCode );
+ ScToken* AddString( const sal_Unicode* pStr );
+ ScToken* AddDouble( double fVal );
+ ScToken* AddSingleReference( const SingleRefData& rRef );
+ ScToken* AddDoubleReference( const ComplRefData& rRef );
+ ScToken* AddName( USHORT n );
+ ScToken* AddMatrix( ScMatrix* p );
+ ScToken* AddExternal( const sal_Unicode* pStr );
+ ScToken* AddBad( const sal_Unicode* pStr ); // ocBad mit String
+
+ // Zuweisung mit Referenzen auf Tokens
+ ScTokenArray& operator=( const ScTokenArray& );
+};
+
+inline OpCode ScTokenArray::GetOuterFuncOpCode()
+{
+ if ( pRPN && nRPN )
+ return pRPN[nRPN-1]->GetOpCode();
+ return (OpCode) SC_OPCODE_NONE;
+}
+
+struct ImpTokenIterator;
+
+class ScTokenIterator
+{
+ friend class ScInterpreter; // fuer Jump()
+ ImpTokenIterator* pCur;
+ void Jump( short nStart, short nNext );
+ void Push( ScTokenArray* );
+ void Pop();
+public:
+ ScTokenIterator( const ScTokenArray& );
+ ~ScTokenIterator();
+ void Reset();
+ const ScToken* First();
+ const ScToken* Next();
+};
+
+struct ScArrayStack;
+
+class ScCompiler
+{
+public:
+ static String* pSymbolTableNative; // Liste der Symbole: String[]
+ static String* pSymbolTableEnglish; // Liste der Symbole English
+ static USHORT nAnzStrings; // Anzahl der Symbole
+private:
+ static USHORT* pCharTable; // char[];
+ ScDocument* pDoc;
+ ScAddress aPos;
+ String cFormula; // String -> TokenArray
+ String aCorrectedFormula; // autocorrected Formula
+ String aCorrectedSymbol; // autocorrected Symbol
+ sal_Unicode cSymbol[MAXSTRLEN]; // current Symbol
+ String aFormula; // formula source code
+ xub_StrLen nSrcPos; // tokenizer position (source code)
+ ScTokenArray* pArr;
+ ScTokenRef pToken;
+ OpCode eLastOp;
+ ScToken** pCode;
+ ScArrayStack* pStack;
+ String* pSymbolTable; // welche SymbolTable benutzt wird
+ USHORT pc;
+ short nNumFmt; // bei CompileTokenArray() gesetzt
+ short nMaxTab; // letzte Tabelle im Doc
+ short nRecursion; // GetToken Rekursionen
+ BOOL glSubTotal; // Merkvariablen fuer Zelle
+ BOOL bAutoCorrect; // AutoCorrection ausfuehren
+ BOOL bCorrected; // AutoCorrection ausgefuehrt
+ BOOL bCompileForFAP; //! kein echtes RPN sondern Namen
+ // werden nicht aufgeloest
+ BOOL bIgnoreErrors; // bei AutoCorrect und CompileForFAP
+ // trotz Fehler RPN erzeugen
+ BOOL bCompileXML;
+ BOOL bImportXML;
+
+ BOOL GetToken();
+ BOOL NextNewToken();
+ OpCode NextToken();
+ ScToken* PersistToken( ScToken* );
+ void PutCode( ScToken* );
+ void Factor();
+ void UnionCutLine();
+ void Unary();
+ void PowLine();
+ void MulDivLine();
+ void AddSubLine();
+ void CompareLine();
+ void NotLine();
+ OpCode Expression();
+
+ String MakeColStr( USHORT nCol );
+ String MakeRowStr( USHORT nRow );
+ String MakeTabStr( USHORT nTab, String& aDoc );
+ String MakeRefStr( ComplRefData& rRefData, BOOL bSingleRef );
+
+ void SetError(USHORT nError);
+ xub_StrLen NextSymbol();
+ BOOL IsValue( const String& );
+ BOOL IsOpCode( const String& );
+ BOOL IsOpCode2( const String& );
+ BOOL IsString();
+ BOOL IsReference( const String& );
+ BOOL IsMacro( const String& );
+ BOOL IsNamedRange( const String& );
+ BOOL IsDBRange( const String& );
+ BOOL IsColRowName( const String& );
+ void AutoCorrectParsedSymbol();
+ void AdjustReference( SingleRefData& r );
+ void PushTokenArray( ScTokenArray*, BOOL = FALSE );
+ void PopTokenArray();
+ void SetRelNameReference();
+public:
+ ScCompiler(ScDocument* pDocument, const ScAddress& );
+
+ ScCompiler( ScDocument* pDocument, const ScAddress&,
+ const ScTokenArray& rArr );
+
+ static void Init();
+ static void DeInit();
+ static void CheckTabQuotes( String& ); // fuer ScAddress::Format()
+
+ // schliesst String in Quotes ein, wenn nicht-alphanumerische Zeichen
+ // enthalten sind, bestehende Quotes werden escaped
+ static BOOL EnQuote( String& );
+ // entfernt Quotes, escaped Quotes werden unescaped
+ static BOOL DeQuote( String& );
+
+ //! _entweder_ CompileForFAP _oder_ AutoCorrection, _nicht_ beides
+ void SetCompileForFAP( BOOL bVal )
+ { bCompileForFAP = bVal; bIgnoreErrors = bVal; }
+ void SetAutoCorrection( BOOL bVal )
+ { bAutoCorrect = bVal; bIgnoreErrors = bVal; }
+ void SetCompileEnglish( BOOL bVal ); // use English SymbolTable
+ void SetCompileXML( BOOL bVal )
+ { bCompileXML = bVal; }
+ void SetImportXML( BOOL bVal )
+ { bImportXML = bVal; }
+ BOOL IsCorrected() { return bCorrected; }
+ const String& GetCorrectedFormula() { return aCorrectedFormula; }
+ ScTokenArray* CompileString( const String& rFormula );
+ BOOL CompileTokenArray();
+ short GetNumFormatType() { return nNumFmt; }
+
+ ScToken* CreateStringFromToken( String& rFormula, ScToken* pToken,
+ BOOL bAllowArrAdvance = FALSE );
+ void CreateStringFromTokenArray( String& rFormula );
+
+ void MoveRelWrap();
+ static void MoveRelWrap( ScTokenArray& rArr, ScDocument* pDoc,
+ const ScAddress& rPos );
+
+ BOOL UpdateNameReference( UpdateRefMode eUpdateRefMode,
+ const ScRange&,
+ short nDx, short nDy, short nDz,
+ BOOL& rChanged);
+
+ ScRangeData* UpdateReference( UpdateRefMode eUpdateRefMode,
+ const ScAddress& rOldPos, const ScRange&,
+ short nDx, short nDy, short nDz,
+ BOOL& rChanged);
+
+ /// Only once for converted shared formulas,
+ /// token array has to be compiled afterwards.
+ void UpdateSharedFormulaReference( UpdateRefMode eUpdateRefMode,
+ const ScAddress& rOldPos, const ScRange&,
+ short nDx, short nDy, short nDz );
+
+ ScRangeData* UpdateInsertTab(USHORT nTable, BOOL bIsName );
+ ScRangeData* UpdateDeleteTab(USHORT nTable, BOOL bIsMove, BOOL bIsName, BOOL& bCompile);
+ ScRangeData* UpdateMoveTab(USHORT nOldPos, USHORT nNewPos, BOOL bIsName );
+
+ BOOL HasModifiedRange();
+
+ /// Is the CharTable initialized? If not call Init() yourself!
+ static inline BOOL HasCharTable() { return pCharTable != NULL; }
+
+ /// Access the CharTable flags
+ static inline USHORT GetCharTableFlags( sal_Unicode c )
+ { return c < 128 ? pCharTable[ UINT8(c) ] : 0; }
+
+ /// If the character is allowed as first character in sheet names or references
+ static inline BOOL IsCharWordChar( sal_Unicode c )
+ {
+ return c < 128 ?
+ ((pCharTable[ UINT8(c) ] & SC_COMPILER_C_CHAR_WORD) == SC_COMPILER_C_CHAR_WORD) :
+ ScGlobal::pCharClass->isLetterNumeric( c );
+ }
+
+ /// If the character is allowed in sheet names or references
+ static inline BOOL IsWordChar( sal_Unicode c )
+ {
+ return c < 128 ?
+ ((pCharTable[ UINT8(c) ] & SC_COMPILER_C_WORD) == SC_COMPILER_C_WORD) :
+ ScGlobal::pCharClass->isLetterNumeric( c );
+ }
+};
+
+#endif
diff --git a/sc/inc/conditio.hxx b/sc/inc/conditio.hxx
new file mode 100644
index 000000000000..b1e86e832706
--- /dev/null
+++ b/sc/inc/conditio.hxx
@@ -0,0 +1,318 @@
+/*************************************************************************
+ *
+ * $RCSfile: conditio.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CONDITIO_HXX
+#define SC_CONDITIO_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+class ScBaseCell;
+class ScFormulaCell;
+class ScTokenArray;
+class ScMultipleReadHeader;
+class ScMultipleWriteHeader;
+class ScRangeList;
+
+
+#define SC_COND_GROW 16
+
+// nOptions Flags
+#define SC_COND_NOBLANKS 1
+
+
+ // Reihenfolge von ScConditionMode wie ScQueryOp,
+ // damit einmal zusammengefasst werden kann:
+
+enum ScConditionMode
+{
+ SC_COND_EQUAL,
+ SC_COND_LESS,
+ SC_COND_GREATER,
+ SC_COND_EQLESS,
+ SC_COND_EQGREATER,
+ SC_COND_NOTEQUAL,
+ SC_COND_BETWEEN,
+ SC_COND_NOTBETWEEN,
+ SC_COND_DIRECT,
+ SC_COND_NONE
+};
+
+enum ScConditionValType
+{
+ SC_VAL_VALUE,
+ SC_VAL_STRING,
+ SC_VAL_FORMULA
+};
+
+class ScConditionEntry
+{
+ // gespeicherte Daten:
+ ScConditionMode eOp;
+ USHORT nOptions;
+ double nVal1; // eingegeben oder berechnet
+ double nVal2;
+ String aStrVal1; // eingegeben oder berechnet
+ String aStrVal2;
+ BOOL bIsStr1; // um auch leere Strings zu erkennen
+ BOOL bIsStr2;
+ ScTokenArray* pFormula1; // eingegebene Formel
+ ScTokenArray* pFormula2;
+ ScAddress aSrcPos; // Quell-Adresse fuer Formeln
+ // temporaere Daten:
+ ScFormulaCell* pFCell1;
+ ScFormulaCell* pFCell2;
+ ScDocument* pDoc;
+ BOOL bRelRef1;
+ BOOL bRelRef2;
+ BOOL bFirstRun;
+
+ void MakeCells( const ScAddress& rPos );
+ void Compile( const String& rExpr1, const String& rExpr2, BOOL bEnglish );
+ void Interpret( const ScAddress& rPos );
+
+ BOOL IsValid( double nArg ) const;
+ BOOL IsValidStr( const String& rArg ) const;
+
+protected:
+ ScConditionEntry( SvStream& rStream, ScMultipleReadHeader& rHdr,
+ ScDocument* pDocument );
+ void StoreCondition(SvStream& rStream, ScMultipleWriteHeader& rHdr) const;
+
+public:
+ ScConditionEntry( ScConditionMode eOper,
+ const String& rExpr1, const String& rExpr2,
+ ScDocument* pDocument, const ScAddress& rPos,
+ BOOL bCompileEnglish );
+ ScConditionEntry( ScConditionMode eOper,
+ const ScTokenArray* pArr1, const ScTokenArray* pArr2,
+ ScDocument* pDocument, const ScAddress& rPos );
+ ScConditionEntry( const ScConditionEntry& r ); // flache Kopie der Formeln
+ // echte Kopie der Formeln (fuer Ref-Undo):
+ ScConditionEntry( ScDocument* pDocument, const ScConditionEntry& r );
+ ~ScConditionEntry();
+
+ int operator== ( const ScConditionEntry& r ) const;
+
+ BOOL IsCellValid( ScBaseCell* pCell, const ScAddress& rPos ) const;
+
+ ScConditionMode GetOperation() const { return eOp; }
+ BOOL IsIgnoreBlank() const { return ( nOptions & SC_COND_NOBLANKS ) == 0; }
+ void SetIgnoreBlank(BOOL bSet);
+ ScAddress GetSrcPos() const { return aSrcPos; }
+
+ String GetExpression( const ScAddress& rCursor, USHORT nPos,
+ ULONG nNumFmt = 0, BOOL bEnglish = FALSE ) const;
+
+ ScTokenArray* CreateTokenArry( USHORT nPos ) const;
+
+ void CompileAll();
+ void UpdateReference( UpdateRefMode eUpdateRefMode,
+ const ScRange& rRange, short nDx, short nDy, short nDz );
+ void UpdateMoveTab( USHORT nOldPos, USHORT nNewPos );
+
+ void SourceChanged( const ScAddress& rChanged );
+
+protected:
+ virtual void DataChanged( const ScRange* pModified ) const;
+ ScDocument* GetDocument() const { return pDoc; }
+};
+
+//
+// einzelner Eintrag fuer bedingte Formatierung
+//
+
+class ScConditionalFormat;
+
+class ScCondFormatEntry : public ScConditionEntry
+{
+ String aStyleName;
+ ScConditionalFormat* pParent;
+
+public:
+ ScCondFormatEntry( ScConditionMode eOper,
+ const String& rExpr1, const String& rExpr2,
+ ScDocument* pDocument, const ScAddress& rPos,
+ const String& rStyle, BOOL bCompileEnglish = FALSE );
+ ScCondFormatEntry( ScConditionMode eOper,
+ const ScTokenArray* pArr1, const ScTokenArray* pArr2,
+ ScDocument* pDocument, const ScAddress& rPos,
+ const String& rStyle );
+ ScCondFormatEntry( const ScCondFormatEntry& r );
+ ScCondFormatEntry( ScDocument* pDocument, const ScCondFormatEntry& r );
+ ScCondFormatEntry( SvStream& rStream, ScMultipleReadHeader& rHdr,
+ ScDocument* pDocument );
+ ~ScCondFormatEntry();
+
+ void SetParent( ScConditionalFormat* pNew ) { pParent = pNew; }
+
+ void Store(SvStream& rStream, ScMultipleWriteHeader& rHdr) const;
+
+ int operator== ( const ScCondFormatEntry& r ) const;
+
+ const String& GetStyle() const { return aStyleName; }
+
+protected:
+ virtual void DataChanged( const ScRange* pModified ) const;
+};
+
+//
+// komplette bedingte Formatierung
+//
+
+class ScConditionalFormat
+{
+ ScDocument* pDoc;
+ ScRangeList* pAreas; // Bereiche fuer Paint
+ ULONG nKey; // Index in Attributen
+ ScCondFormatEntry** ppEntries;
+ USHORT nEntryCount;
+ BOOL bIsUsed; // temporaer beim Speichern
+
+public:
+ ScConditionalFormat(ULONG nNewKey, ScDocument* pDocument);
+ ScConditionalFormat(const ScConditionalFormat& r);
+ ScConditionalFormat(SvStream& rStream, ScMultipleReadHeader& rHdr,
+ ScDocument* pDocument);
+ ~ScConditionalFormat();
+
+ // echte Kopie der Formeln (fuer Ref-Undo / zwischen Dokumenten)
+ ScConditionalFormat* Clone(ScDocument* pNewDoc = NULL) const;
+
+ void Store(SvStream& rStream, ScMultipleWriteHeader& rHdr) const;
+
+ void AddEntry( const ScCondFormatEntry& rNew );
+
+ BOOL IsEmpty() const { return (nEntryCount == 0); }
+ USHORT Count() const { return nEntryCount; }
+
+ void CompileAll();
+ void UpdateReference( UpdateRefMode eUpdateRefMode,
+ const ScRange& rRange, short nDx, short nDy, short nDz );
+ void UpdateMoveTab( USHORT nOldPos, USHORT nNewPos );
+
+ void SourceChanged( const ScAddress& rAddr );
+
+ const ScCondFormatEntry* GetEntry( USHORT nPos ) const;
+
+ const String& GetCellStyle( ScBaseCell* pCell, const ScAddress& rPos ) const;
+
+ BOOL EqualEntries( const ScConditionalFormat& r ) const;
+
+ void DoRepaint( const ScRange* pModified );
+ void InvalidateArea();
+
+ ULONG GetKey() const { return nKey; }
+ void SetKey(ULONG nNew) { nKey = nNew; } // nur wenn nicht eingefuegt!
+
+ void SetUsed(BOOL bSet) { bIsUsed = bSet; }
+ BOOL IsUsed() const { return bIsUsed; }
+
+ // sortiert (per PTRARR) nach Index
+ // operator== nur fuer die Sortierung
+ BOOL operator ==( const ScConditionalFormat& r ) const { return nKey == r.nKey; }
+ BOOL operator < ( const ScConditionalFormat& r ) const { return nKey < r.nKey; }
+};
+
+//
+// Liste der Bereiche und Formate:
+//
+
+typedef ScConditionalFormat* ScConditionalFormatPtr;
+
+SV_DECL_PTRARR_SORT(ScConditionalFormats_Impl, ScConditionalFormatPtr,
+ SC_COND_GROW, SC_COND_GROW);
+
+class ScConditionalFormatList : public ScConditionalFormats_Impl
+{
+public:
+ ScConditionalFormatList() {}
+ ScConditionalFormatList(const ScConditionalFormatList& rList);
+ ScConditionalFormatList(ScDocument* pNewDoc, const ScConditionalFormatList& rList);
+ ~ScConditionalFormatList() {}
+
+ void InsertNew( ScConditionalFormat* pNew )
+ { if (!Insert(pNew)) delete pNew; }
+
+ ScConditionalFormat* GetFormat( ULONG nKey );
+
+ void Load( SvStream& rStream, ScDocument* pDocument );
+ void Store( SvStream& rStream ) const;
+ void ResetUsed();
+
+ void CompileAll();
+ void UpdateReference( UpdateRefMode eUpdateRefMode,
+ const ScRange& rRange, short nDx, short nDy, short nDz );
+ void UpdateMoveTab( USHORT nOldPos, USHORT nNewPos );
+
+ void SourceChanged( const ScAddress& rAddr );
+
+ BOOL operator==( const ScConditionalFormatList& r ) const; // fuer Ref-Undo
+};
+
+#endif
+
+
diff --git a/sc/inc/consoli.hxx b/sc/inc/consoli.hxx
new file mode 100644
index 000000000000..f1643dd5a3a5
--- /dev/null
+++ b/sc/inc/consoli.hxx
@@ -0,0 +1,169 @@
+/*************************************************************************
+ *
+ * $RCSfile: consoli.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CONSOLI_HXX
+#define SC_CONSOLI_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScDocument;
+
+// -----------------------------------------------------------------------
+
+struct ScReferenceEntry // ohne Constructor !
+{
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTab;
+};
+
+
+//! Delta-Wert fuer Daten benutzen?
+
+class ScReferenceList // ohne Constructor !
+{
+private:
+ USHORT nCount;
+ USHORT nFullSize; // inkl. Fuell-Eintraege
+ ScReferenceEntry* pData;
+
+public:
+ void Init() { nCount=0; nFullSize=0; pData=NULL; }
+ void Clear() { delete[] pData; }
+
+ USHORT GetCount() { return nCount; }
+ const ScReferenceEntry& GetEntry( USHORT nPos ) { return pData[nPos]; }
+ void SetFullSize( USHORT nNew ) { nFullSize = nNew; }
+
+ void AddEntry( USHORT nCol, USHORT nRow, USHORT nTab );
+};
+
+// -----------------------------------------------------------------------
+
+
+//
+// Reihenfolge:
+// 1) ScConsData anlegen
+// 2) Parameter (Size/Flags)
+// 3) AddFields fuer alle Bereiche (nur noetig bei bColByName oder bRowByName)
+// 4) DoneFields ( " " )
+// 5) AddData fuer alle Bereiche
+// evtl. AddName nach jedem Bereich
+// 6) OutputToDocument
+//
+
+//! ab bestimmter Groesse ScDocument Struktur benutzen?
+
+
+class ScConsData
+{
+private:
+ ScSubTotalFunc eFunction;
+ BOOL bReference;
+ BOOL bColByName;
+ BOOL bRowByName;
+ BOOL bSubTitles;
+ USHORT nColCount;
+ USHORT nRowCount;
+ BOOL** ppUsed;
+ double** ppSum;
+ double** ppCount;
+ double** ppSumSqr;
+ ScReferenceList** ppRefs;
+ String** ppColHeaders;
+ String** ppRowHeaders;
+ USHORT nDataCount;
+ USHORT nTitleCount;
+ String** ppTitles;
+ USHORT** ppTitlePos;
+ BOOL bCornerUsed;
+ String aCornerText; // nur bei bColByName && bRowByName
+
+public:
+ ScConsData();
+ ~ScConsData();
+
+ void SetSize( USHORT nCols, USHORT nRows );
+ void SetFlags( ScSubTotalFunc eFunc, BOOL bColName, BOOL bRowName, BOOL bRef );
+
+ void InitData(BOOL bDelete=TRUE);
+ void DeleteData();
+
+ void AddFields( ScDocument* pSrcDoc, USHORT nTab,
+ USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 );
+ void DoneFields();
+
+ void AddData( ScDocument* pSrcDoc, USHORT nTab,
+ USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 );
+ void AddName( const String& rName );
+
+ void OutputToDocument( ScDocument* pDestDoc, USHORT nCol, USHORT nRow, USHORT nTab );
+
+ void GetSize( USHORT& rCols, USHORT& rRows ) const;
+ USHORT GetInsertCount() const;
+};
+
+
+#endif
+
+
diff --git a/sc/inc/convuno.hxx b/sc/inc/convuno.hxx
new file mode 100644
index 000000000000..41423fb7326c
--- /dev/null
+++ b/sc/inc/convuno.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: convuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CONVUNO_HXX
+#define SC_CONVUNO_HXX
+
+#ifndef _LANG_HXX
+#include <tools/lang.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_TABLE_CELLRANGEADDRESS_HPP_
+#include <com/sun/star/table/CellRangeAddress.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_LANG_LOCALE_HPP_
+#include <com/sun/star/lang/Locale.hpp>
+#endif
+
+class ScRange;
+
+class ScUnoConversion
+{
+public:
+ static void FillRange( ScRange& rDest, const com::sun::star::table::CellRangeAddress& rSource );
+ static void FillAddress( com::sun::star::table::CellRangeAddress& rDest, const ScRange& rSource );
+ static LanguageType GetLanguage( const com::sun::star::lang::Locale& rLocale );
+ static void FillLocale( com::sun::star::lang::Locale& rLocale, LanguageType eLang );
+};
+
+
+#endif
+
diff --git a/sc/inc/cursuno.hxx b/sc/inc/cursuno.hxx
new file mode 100644
index 000000000000..a9cfede7b752
--- /dev/null
+++ b/sc/inc/cursuno.hxx
@@ -0,0 +1,150 @@
+/*************************************************************************
+ *
+ * $RCSfile: cursuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CURSUNO_HXX
+#define SC_CURSUNO_HXX
+
+#ifndef SC_CELLSUNO_HXX
+#include "cellsuno.hxx"
+#endif
+
+#ifndef _COM_SUN_STAR_TABLE_XCELLCURSOR_HPP_
+#include <com/sun/star/table/XCellCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCELLCURSOR_HPP_
+#include <com/sun/star/sheet/XSheetCellCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XUSEDAREACURSOR_HPP_
+#include <com/sun/star/sheet/XUsedAreaCursor.hpp>
+#endif
+
+class ScCellCursorObj : public ScCellRangeObj,
+ public com::sun::star::sheet::XSheetCellCursor,
+ public com::sun::star::sheet::XUsedAreaCursor,
+ public com::sun::star::table::XCellCursor
+{
+public:
+ ScCellCursorObj(ScDocShell* pDocSh, const ScRange& rR);
+ virtual ~ScCellCursorObj();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetCellCursor
+ virtual void SAL_CALL collapseToCurrentRegion() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL collapseToCurrentArray() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL collapseToMergedArea() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL expandToEntireColumns() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL expandToEntireRows() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL collapseToSize( sal_Int32 nColumns, sal_Int32 nRows )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XUsedAreaCursor
+ virtual void SAL_CALL gotoStartOfUsedArea( sal_Bool bExpand )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoEndOfUsedArea( sal_Bool bExpand )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellCursor
+ virtual void SAL_CALL gotoStart() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoEnd() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoNext() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoPrevious() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL gotoOffset( sal_Int32 nColumnOffset, sal_Int32 nRowOffset )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetCellRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > SAL_CALL
+ getSpreadsheet() throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell > SAL_CALL
+ getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
+ getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop,
+ sal_Int32 nRight, sal_Int32 nBottom )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
+ getCellRangeByName( const ::rtl::OUString& aRange )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif
+
diff --git a/sc/inc/dapiuno.hxx b/sc/inc/dapiuno.hxx
new file mode 100644
index 000000000000..f35eb73fa83b
--- /dev/null
+++ b/sc/inc/dapiuno.hxx
@@ -0,0 +1,495 @@
+/*************************************************************************
+ *
+ * $RCSfile: dapiuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DAPIUNO_HXX
+#define SC_DAPIUNO_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef SC_RANGEUTL_HXX
+#include "rangeutl.hxx" // ScArea
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XDATAPILOTTABLE_HPP_
+#include <com/sun/star/sheet/XDataPilotTable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XDATAPILOTTABLES_HPP_
+#include <com/sun/star/sheet/XDataPilotTables.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XDATAPILOTDESCRIPTOR_HPP_
+#include <com/sun/star/sheet/XDataPilotDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_GENERALFUNCTION_HPP_
+#include <com/sun/star/sheet/GeneralFunction.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_DATAPILOTFIELDORIENTATION_HPP_
+#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+
+
+class ScDocShell;
+class ScPivot;
+
+class ScDataPilotTableObj;
+class ScDataPilotFieldObj;
+
+
+#define SC_FIELDORIENT_ALL USHRT_MAX
+
+
+class ScDataPilotConversion
+{
+public:
+ static com::sun::star::sheet::GeneralFunction FirstFunc( USHORT nBits );
+ static USHORT FunctionBit( com::sun::star::sheet::GeneralFunction eFunc );
+};
+
+
+
+// DataPilotTables Collection ist pro Tabelle
+
+class ScDataPilotTablesObj : public cppu::WeakImplHelper4<
+ com::sun::star::sheet::XDataPilotTables,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::lang::XServiceInfo>,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ USHORT nTab;
+
+ ScDataPilotTableObj* GetObjectByIndex_Impl(USHORT nIndex);
+ ScDataPilotTableObj* GetObjectByName_Impl(const ::rtl::OUString& aName);
+
+public:
+ ScDataPilotTablesObj(ScDocShell* pDocSh, USHORT nT);
+ virtual ~ScDataPilotTablesObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XDataPilotTables
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotDescriptor > SAL_CALL
+ createDataPilotDescriptor() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL insertNewByName( const ::rtl::OUString& aName,
+ const ::com::sun::star::table::CellAddress& aOutputAddress,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::sheet::XDataPilotDescriptor >& xDescriptor )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+// ScDataPilotDescriptorBase is never instantiated directly
+class ScDataPilotDescriptorBase : public com::sun::star::sheet::XDataPilotDescriptor,
+ public com::sun::star::lang::XServiceInfo,
+ public com::sun::star::lang::XUnoTunnel,
+ public com::sun::star::lang::XTypeProvider,
+ public cppu::OWeakObject,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+
+public:
+ ScDataPilotDescriptorBase(ScDocShell* pDocSh);
+ virtual ~ScDataPilotDescriptorBase();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ ScDocShell* GetDocShell() const { return pDocShell; }
+
+ // in den Ableitungen:
+ virtual void GetParam( ScPivotParam& rParam, ScQueryParam& rQuery,
+ ScArea& rSrcArea ) const = 0;
+ virtual void SetParam( const ScPivotParam& rParam, const ScQueryParam& rQuery,
+ const ScArea& rSrcArea ) = 0;
+
+ // XDataPilotDescriptor
+ // getName, setName, getTag, setTag in derived classes
+
+ virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getSourceRange()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSourceRange( const ::com::sun::star::table::CellRangeAddress& aSourceRange )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL
+ getFilterDescriptor() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
+ getDataPilotFields() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
+ getColumnFields() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
+ getRowFields() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
+ getPageFields() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
+ getDataFields() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
+ getHiddenFields() throw(::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScDataPilotDescriptorBase* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XDataPilotDescriptor> xObj );
+
+ // XTypeProvider (overloaded in ScDataPilotTableObj)
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo is in derived classes
+};
+
+
+class ScDataPilotDescriptor : public ScDataPilotDescriptorBase
+{
+private:
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ String aNameStr;
+ String aTagStr;
+
+public:
+ ScDataPilotDescriptor(ScDocShell* pDocSh);
+ virtual ~ScDataPilotDescriptor();
+
+ virtual void GetParam( ScPivotParam& rParam, ScQueryParam& rQuery, ScArea& rSrcArea ) const;
+ virtual void SetParam( const ScPivotParam& rParam,
+ const ScQueryParam& rQuery, const ScArea& rSrcArea );
+
+ // rest of XDataPilotDescriptor (incl. XNamed)
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTag() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setTag( const ::rtl::OUString& aTag )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScDataPilotTableObj : public ScDataPilotDescriptorBase,
+ public com::sun::star::sheet::XDataPilotTable
+{
+private:
+ USHORT nTab;
+ String aName;
+
+public:
+ ScDataPilotTableObj(ScDocShell* pDocSh, USHORT nT, const String& rN);
+ virtual ~ScDataPilotTableObj();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+ virtual void GetParam( ScPivotParam& rParam, ScQueryParam& rQuery, ScArea& rSrcArea ) const;
+ virtual void SetParam( const ScPivotParam& rParam,
+ const ScQueryParam& rQuery, const ScArea& rSrcArea );
+
+ // rest of XDataPilotDescriptor (incl. XNamed)
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTag() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setTag( const ::rtl::OUString& aTag )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XDataPilotTable
+ virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getOutputRange()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider (overloaded)
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScDataPilotFieldsObj : public cppu::WeakImplHelper4<
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::container::XNameAccess,
+ com::sun::star::lang::XServiceInfo>
+{
+private:
+ ScDataPilotDescriptorBase* pParent;
+ USHORT nType; // DataPilotFieldOrientation oder SC_FIELDORIENT_ALL
+
+ ScDataPilotFieldObj* GetObjectByIndex_Impl(USHORT nIndex) const;
+ ScDataPilotFieldObj* GetObjectByName_Impl(const ::rtl::OUString& aName) const;
+
+public:
+ ScDataPilotFieldsObj(ScDataPilotDescriptorBase* pPar, USHORT nTy);
+ virtual ~ScDataPilotFieldsObj();
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScDataPilotFieldObj : public cppu::WeakImplHelper3<
+ com::sun::star::container::XNamed,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo>
+{
+private:
+ SfxItemPropertySet aPropSet;
+ ScDataPilotDescriptorBase* pParent;
+ USHORT nField; // Spalte im Datenbereich
+ USHORT nSourceType;
+ USHORT nSourcePos;
+
+public:
+ ScDataPilotFieldObj(ScDataPilotDescriptorBase* pPar,
+ USHORT nF, USHORT nST, USHORT nSP);
+ virtual ~ScDataPilotFieldObj();
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // nur noch aus Property-Funktionen gerufen:
+ com::sun::star::sheet::DataPilotFieldOrientation getOrientation(void) const;
+ void setOrientation(com::sun::star::sheet::DataPilotFieldOrientation Orientation);
+ com::sun::star::sheet::GeneralFunction getFunction(void) const;
+ void setFunction(com::sun::star::sheet::GeneralFunction Function);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif
+
diff --git a/sc/inc/datauno.hxx b/sc/inc/datauno.hxx
new file mode 100644
index 000000000000..c62a0d361e9f
--- /dev/null
+++ b/sc/inc/datauno.hxx
@@ -0,0 +1,719 @@
+/*************************************************************************
+ *
+ * $RCSfile: datauno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DATAUNO_HXX
+#define SC_DATAUNO_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_TABLEFILTERFIELD_HPP_
+#include <com/sun/star/sheet/TableFilterField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_GENERALFUNCTION_HPP_
+#include <com/sun/star/sheet/GeneralFunction.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGEREFERRER_HPP_
+#include <com/sun/star/sheet/XCellRangeReferrer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETFILTERDESCRIPTOR_HPP_
+#include <com/sun/star/sheet/XSheetFilterDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCONSOLIDATIONDESCRIPTOR_HPP_
+#include <com/sun/star/sheet/XConsolidationDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XDATABASERANGES_HPP_
+#include <com/sun/star/sheet/XDatabaseRanges.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XDATABASERANGE_HPP_
+#include <com/sun/star/sheet/XDatabaseRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSUBTOTALDESCRIPTOR_HPP_
+#include <com/sun/star/sheet/XSubTotalDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSUBTOTALFIELD_HPP_
+#include <com/sun/star/sheet/XSubTotalField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMED_HPP_
+#include <com/sun/star/container/XNamed.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE5_HXX_
+#include <cppuhelper/implbase5.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE6_HXX_
+#include <cppuhelper/implbase6.hxx>
+#endif
+
+class ScDBData;
+class ScDocShell;
+
+class ScSubTotalFieldObj;
+class ScDatabaseRangeObj;
+class ScDataPilotDescriptorBase;
+
+
+class ScDataUnoConversion
+{
+public:
+ static ScSubTotalFunc GeneralToSubTotal( com::sun::star::sheet::GeneralFunction eSummary );
+ static com::sun::star::sheet::GeneralFunction SubTotalToGeneral( ScSubTotalFunc eSubTotal );
+};
+
+
+// ImportDescriptor gibt's nicht mehr als Uno-Objekt, nur noch Property-Sequence
+
+class ScImportDescriptor
+{
+public:
+ static void FillImportParam(
+ ScImportParam& rParam,
+ const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq );
+ static void FillProperties(
+ com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq,
+ const ScImportParam& rParam );
+ static long GetPropertyCount();
+};
+
+// SortDescriptor gibt's nicht mehr als Uno-Objekt, nur noch Property-Sequence
+
+class ScSortDescriptor
+{
+public:
+ static void FillSortParam(
+ ScSortParam& rParam,
+ const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq );
+ static void FillProperties(
+ com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq,
+ const ScSortParam& rParam );
+ static long GetPropertyCount();
+};
+
+
+// ScSubTotalDescriptorBase - Basisklasse fuer SubTotalDescriptor alleine und im DB-Bereich
+
+// to uno, both look the same
+
+class ScSubTotalDescriptorBase : public cppu::WeakImplHelper6<
+ com::sun::star::sheet::XSubTotalDescriptor,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XUnoTunnel,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ SfxItemPropertySet aPropSet;
+
+ ScSubTotalFieldObj* GetObjectByIndex_Impl(USHORT nIndex);
+
+public:
+ ScSubTotalDescriptorBase();
+ virtual ~ScSubTotalDescriptorBase();
+
+ // in derived classes:
+ // (Fields are within the range)
+ virtual void GetData( ScSubTotalParam& rParam ) const = 0;
+ virtual void PutData( const ScSubTotalParam& rParam ) = 0;
+
+ // XSubTotalDescriptor
+ virtual void SAL_CALL addNew( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::sheet::SubTotalColumn >& aSubTotalColumns,
+ sal_Int32 nGroupColumn )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clear() throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScSubTotalDescriptorBase* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XSubTotalDescriptor> xObj );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+// ScSubTotalDescriptor - dummer Container zur Benutzung mit XImportTarget
+
+class ScSubTotalDescriptor : public ScSubTotalDescriptorBase
+{
+private:
+ ScSubTotalParam aStoredParam;
+
+public:
+ ScSubTotalDescriptor();
+ virtual ~ScSubTotalDescriptor();
+
+ // von ScSubTotalDescriptorBase:
+ virtual void GetData( ScSubTotalParam& rParam ) const;
+ virtual void PutData( const ScSubTotalParam& rParam );
+
+ // Zugriff von aussen:
+ void SetParam( const ScSubTotalParam& rNew );
+// const ScSubTotalParam& GetParam() const { return aStoredParam; }
+};
+
+
+// ScRangeSubTotalDescriptor - SubTotalDescriptor eines Datenbank-Bereichs
+
+class ScRangeSubTotalDescriptor : public ScSubTotalDescriptorBase
+{
+private:
+ ScDatabaseRangeObj* pParent;
+
+public:
+ ScRangeSubTotalDescriptor(ScDatabaseRangeObj* pPar);
+ virtual ~ScRangeSubTotalDescriptor();
+
+ // von ScSubTotalDescriptorBase:
+ virtual void GetData( ScSubTotalParam& rParam ) const;
+ virtual void PutData( const ScSubTotalParam& rParam );
+};
+
+
+class ScSubTotalFieldObj : public cppu::WeakImplHelper2<
+ com::sun::star::sheet::XSubTotalField,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ com::sun::star::uno::Reference<com::sun::star::sheet::XSubTotalDescriptor> xRef;
+ ScSubTotalDescriptorBase& rParent;
+ USHORT nPos;
+
+public:
+ ScSubTotalFieldObj( ScSubTotalDescriptorBase* pDesc, USHORT nP );
+ virtual ~ScSubTotalFieldObj();
+
+ // XSubTotalField
+ virtual sal_Int32 SAL_CALL getGroupColumn() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setGroupColumn( sal_Int32 nGroupColumn )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::SubTotalColumn > SAL_CALL
+ getSubTotalColumns() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSubTotalColumns( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::sheet::SubTotalColumn >& aSubTotalColumns )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScConsolidationDescriptor : public cppu::WeakImplHelper2<
+ com::sun::star::sheet::XConsolidationDescriptor,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScConsolidateParam aParam;
+
+public:
+ ScConsolidationDescriptor();
+ virtual ~ScConsolidationDescriptor();
+
+ void SetParam( const ScConsolidateParam& rNew );
+ const ScConsolidateParam& GetParam() const { return aParam; }
+
+ // XConsolidationDescriptor
+ virtual ::com::sun::star::sheet::GeneralFunction SAL_CALL getFunction()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setFunction( ::com::sun::star::sheet::GeneralFunction nFunction )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL
+ getSources( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSources( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::table::CellRangeAddress >& aSources )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::table::CellAddress SAL_CALL getStartOutputPosition()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setStartOutputPosition(
+ const ::com::sun::star::table::CellAddress& aStartOutputPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getUseColumnHeaders() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setUseColumnHeaders( sal_Bool bUseColumnHeaders )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getUseRowHeaders() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setUseRowHeaders( sal_Bool bUseRowHeaders )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getInsertLinks() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setInsertLinks( sal_Bool bInsertLinks )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+// ScFilterDescriptorBase - Basisklasse fuer FilterDescriptor
+// alleine, im DB-Bereich und im DataPilot
+
+// to uno, all three look the same
+
+class ScFilterDescriptorBase : public cppu::WeakImplHelper3<
+ com::sun::star::sheet::XSheetFilterDescriptor,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ SfxItemPropertySet aPropSet;
+
+public:
+ ScFilterDescriptorBase();
+ virtual ~ScFilterDescriptorBase();
+
+ // in den Ableitungen:
+ // (nField[] hier innerhalb des Bereichs)
+ virtual void GetData( ScQueryParam& rParam ) const = 0;
+ virtual void PutData( const ScQueryParam& rParam ) = 0;
+
+ // XSheetFilterDescriptor
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TableFilterField > SAL_CALL
+ getFilterFields() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setFilterFields( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::sheet::TableFilterField >& aFilterFields )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+// ScFilterDescriptor - dummer Container zur Benutzung mit XFilterable
+
+class ScFilterDescriptor : public ScFilterDescriptorBase
+{
+private:
+ ScQueryParam aStoredParam; // nField[] hier innerhalb des Bereichs
+
+public:
+ ScFilterDescriptor();
+ virtual ~ScFilterDescriptor();
+
+ // von ScFilterDescriptorBase:
+ virtual void GetData( ScQueryParam& rParam ) const;
+ virtual void PutData( const ScQueryParam& rParam );
+
+ // Zugriff von aussen:
+ void SetParam( const ScQueryParam& rNew );
+ const ScQueryParam& GetParam() const { return aStoredParam; }
+};
+
+
+// ScRangeFilterDescriptor - FilterDescriptor eines Datenbank-Bereichs
+
+class ScRangeFilterDescriptor : public ScFilterDescriptorBase
+{
+private:
+ ScDatabaseRangeObj* pParent;
+
+public:
+ ScRangeFilterDescriptor(ScDatabaseRangeObj* pPar);
+ virtual ~ScRangeFilterDescriptor();
+
+ // von ScFilterDescriptorBase:
+ virtual void GetData( ScQueryParam& rParam ) const;
+ virtual void PutData( const ScQueryParam& rParam );
+};
+
+
+// ScDataPilotFilterDescriptor - FilterDescriptor eines DataPilotDescriptors
+
+class ScDataPilotFilterDescriptor : public ScFilterDescriptorBase
+{
+private:
+ ScDataPilotDescriptorBase* pParent;
+
+public:
+ ScDataPilotFilterDescriptor(ScDataPilotDescriptorBase* pPar);
+ virtual ~ScDataPilotFilterDescriptor();
+
+ // von ScFilterDescriptorBase:
+ virtual void GetData( ScQueryParam& rParam ) const;
+ virtual void PutData( const ScQueryParam& rParam );
+};
+
+
+class ScDatabaseRangeObj : public cppu::WeakImplHelper5<
+ com::sun::star::sheet::XDatabaseRange,
+ com::sun::star::container::XNamed,
+ com::sun::star::sheet::XCellRangeReferrer,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ String aName;
+ SfxItemPropertySet aPropSet;
+
+private:
+ ScDBData* GetDBData_Impl() const;
+
+public:
+ ScDatabaseRangeObj(ScDocShell* pDocSh, const String& rNm);
+ virtual ~ScDatabaseRangeObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // nField[] hier innerhalb des Bereichs:
+ void GetQueryParam(ScQueryParam& rQueryParam) const;
+ void SetQueryParam(const ScQueryParam& rQueryParam);
+ void GetSortParam(ScSortParam& rSortParam) const;
+ void SetSortParam(const ScSortParam& rSortParam);
+ void GetImportParam(ScImportParam& rImportParam) const;
+ void SetImportParam(const ScImportParam& rImportParam);
+ void GetSubTotalParam(ScSubTotalParam& rSubTotalParam) const;
+ void SetSubTotalParam(const ScSubTotalParam& rSubTotalParam);
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XDatabaseRange
+ virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getDataArea()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setDataArea( const ::com::sun::star::table::CellRangeAddress& aDataArea )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
+ getSortDescriptor() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL
+ getFilterDescriptor() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSubTotalDescriptor > SAL_CALL
+ getSubTotalDescriptor() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
+ getImportDescriptor() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellRangeReferrer
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
+ getReferredCells() throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScDatabaseRangesObj : public cppu::WeakImplHelper4<
+ com::sun::star::sheet::XDatabaseRanges,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+
+ ScDatabaseRangeObj* GetObjectByIndex_Impl(USHORT nIndex);
+ ScDatabaseRangeObj* GetObjectByName_Impl(const ::rtl::OUString& aName);
+
+public:
+ ScDatabaseRangesObj(ScDocShell* pDocSh);
+ virtual ~ScDatabaseRangesObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XDatabaseRanges
+ virtual void SAL_CALL addNewByName( const ::rtl::OUString& aName,
+ const ::com::sun::star::table::CellRangeAddress& aRange )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+
+#endif
+
diff --git a/sc/inc/dbcolect.hxx b/sc/inc/dbcolect.hxx
new file mode 100644
index 000000000000..70bf65fa07e5
--- /dev/null
+++ b/sc/inc/dbcolect.hxx
@@ -0,0 +1,280 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbcolect.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DBCOLECT_HXX
+#define SC_DBCOLECT_HXX
+
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ->Konstanten (MAXSORT, MAXQUERY)
+#endif
+
+
+//------------------------------------------------------------------------
+
+class ScDocument;
+class ScMultipleReadHeader;
+class ScMultipleWriteHeader;
+
+//------------------------------------------------------------------------
+
+class ScDBData : public DataObject
+{
+
+private:
+ // DBParam
+ String aName;
+ USHORT nTable;
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ BOOL bByRow;
+ BOOL bHasHeader;
+ BOOL bDoSize;
+ BOOL bKeepFmt;
+ BOOL bStripData;
+ // SortParam
+ BOOL bSortCaseSens;
+ BOOL bIncludePattern;
+ BOOL bSortInplace;
+ BOOL bSortUserDef;
+ USHORT nSortUserIndex;
+ USHORT nSortDestTab;
+ USHORT nSortDestCol;
+ USHORT nSortDestRow;
+ BOOL bDoSort[MAXSORT];
+ USHORT nSortField[MAXSORT];
+ BOOL bAscending[MAXSORT];
+ // QueryParam
+ BOOL bQueryInplace;
+ BOOL bQueryCaseSens;
+ BOOL bQueryRegExp;
+ BOOL bQueryDuplicate;
+ USHORT nQueryDestTab;
+ USHORT nQueryDestCol;
+ USHORT nQueryDestRow;
+ BOOL bDoQuery[MAXQUERY];
+ USHORT nQueryField[MAXQUERY];
+ ScQueryOp eQueryOp[MAXQUERY];
+ BOOL bQueryByString[MAXQUERY];
+ String* pQueryStr[MAXQUERY];
+ double nQueryVal[MAXQUERY];
+ ScQueryConnect eQueryConnect[MAXQUERY];
+ BOOL bIsAdvanced; // TRUE if created by advanced filter
+ ScRange aAdvSource; // source range
+ // SubTotalParam
+ BOOL bSubRemoveOnly;
+ BOOL bSubReplace;
+ BOOL bSubPagebreak;
+ BOOL bSubCaseSens;
+ BOOL bSubDoSort;
+ BOOL bSubAscending;
+ BOOL bSubIncludePattern;
+ BOOL bSubUserDef;
+ USHORT nSubUserIndex;
+ BOOL bDoSubTotal[MAXSUBTOTAL];
+ USHORT nSubField[MAXSUBTOTAL];
+ USHORT nSubTotals[MAXSUBTOTAL];
+ USHORT* pSubTotals[MAXSUBTOTAL];
+ ScSubTotalFunc* pFunctions[MAXSUBTOTAL];
+ // Datenbank-Import
+ BOOL bDBImport;
+ String aDBName;
+ String aDBStatement;
+ BOOL bDBNative;
+ BOOL bDBSelection; // nicht im Param: Wenn Selektion, Update sperren
+ BOOL bDBSql; // aDBStatement ist SQL und kein Name
+ BYTE nDBType; // enum DBObject (bisher nur dbTable, dbQuery)
+
+ USHORT nIndex; // eindeutiger Index fuer Formeln
+ USHORT nExportIndex; // used by Xcl export
+ BOOL bAutoFilter; // AutoFilter? (nicht gespeichert)
+ BOOL bModified; // wird bei UpdateReference gesetzt/geloescht
+
+public:
+ ScDBData(const String& rName,
+ USHORT nTab,
+ USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ BOOL bByR = TRUE, BOOL bHasH = TRUE);
+ ScDBData(const ScDBData& rData);
+ ScDBData( SvStream& rStream, ScMultipleReadHeader& rHdr );
+ ~ScDBData();
+
+ virtual DataObject* Clone() const;
+
+ ScDBData& operator= (const ScDBData& rData);
+
+ BOOL operator== (const ScDBData& rData) const;
+
+ BOOL Store( SvStream& rStream, ScMultipleWriteHeader& rHdr ) const;
+
+ const String& GetName() const { return aName; }
+ void GetName(String& rName) const { rName = aName; }
+ void SetName(const String& rName) { aName = rName; }
+ void GetArea(USHORT& rTab, USHORT& rCol1, USHORT& rRow1, USHORT& rCol2, USHORT& rRow2) const;
+ void GetArea(ScRange& rRange) const;
+ void SetArea(USHORT nTab, USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ void MoveTo(USHORT nTab, USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ BOOL IsByRow() const { return bByRow; }
+ void SetByRow(BOOL bByR) { bByRow = bByR; }
+ BOOL HasHeader() const { return bHasHeader; }
+ void SetHeader(BOOL bHasH) { bHasHeader = bHasH; }
+ void SetIndex(USHORT nInd) { nIndex = nExportIndex = nInd; }
+ USHORT GetIndex() const { return nIndex; }
+ BOOL IsDoSize() const { return bDoSize; }
+ void SetDoSize(BOOL bSet) { bDoSize = bSet; }
+ BOOL IsKeepFmt() const { return bKeepFmt; }
+ void SetKeepFmt(BOOL bSet) { bKeepFmt = bSet; }
+ BOOL IsStripData() const { return bStripData; }
+ void SetStripData(BOOL bSet) { bStripData = bSet; }
+
+ BOOL IsBeyond(USHORT nMaxRow) const;
+
+ String GetSourceString() const;
+ String GetOperations() const;
+
+ void GetSortParam(ScSortParam& rSortParam) const;
+ void SetSortParam(const ScSortParam& rSortParam);
+
+ void GetQueryParam(ScQueryParam& rQueryParam) const;
+ void SetQueryParam(const ScQueryParam& rQueryParam);
+ BOOL GetAdvancedQuerySource(ScRange& rSource) const;
+ void SetAdvancedQuerySource(const ScRange* pSource);
+
+ void GetSubTotalParam(ScSubTotalParam& rSubTotalParam) const;
+ void SetSubTotalParam(const ScSubTotalParam& rSubTotalParam);
+
+ void GetImportParam(ScImportParam& rImportParam) const;
+ void SetImportParam(const ScImportParam& rImportParam);
+
+ BOOL IsDBAtCursor(USHORT nCol, USHORT nRow, USHORT nTab, BOOL bStartOnly) const;
+ BOOL IsDBAtArea(USHORT nTab, USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2) const;
+
+ String GetTargetName(const String& rDocName) const;
+
+ BOOL HasImportParam() const { return bDBImport; }
+ BOOL HasQueryParam() const { return bDoQuery[0]; }
+ BOOL HasSortParam() const { return bDoSort[0]; }
+ BOOL HasSubTotalParam() const { return bDoSubTotal[0]; }
+
+ BOOL HasImportSelection() const { return bDBSelection; }
+ void SetImportSelection(BOOL bSet) { bDBSelection = bSet; }
+
+ BOOL HasAutoFilter() const { return bAutoFilter; }
+ void SetAutoFilter(BOOL bSet) { bAutoFilter = bSet; }
+
+ BOOL IsModified() const { return bModified; }
+ void SetModified(BOOL bMod) { bModified = bMod; }
+
+ void SetExportIndex( USHORT nIdx ) { nExportIndex = nIdx; }
+ USHORT GetExportIndex() const { return nExportIndex; }
+};
+
+
+//------------------------------------------------------------------------
+class ScDBCollection : public SortedCollection
+{
+
+private:
+ ScDocument* pDoc;
+ USHORT nEntryIndex; // Zaehler fuer die eindeutigen Indizes
+
+public:
+ ScDBCollection(USHORT nLim = 4, USHORT nDel = 4, BOOL bDup = FALSE, ScDocument* pDocument = NULL) :
+ SortedCollection ( nLim, nDel, bDup ),
+ pDoc ( pDocument ),
+ nEntryIndex ( SC_START_INDEX_DB_COLL ) // oberhalb der Namen
+ {}
+ ScDBCollection(const ScDBCollection& rScDBCollection) :
+ SortedCollection ( rScDBCollection ),
+ pDoc ( rScDBCollection.pDoc ),
+ nEntryIndex ( rScDBCollection.nEntryIndex)
+ {}
+
+ virtual DataObject* Clone() const { return new ScDBCollection(*this); }
+ ScDBData* operator[]( const USHORT nIndex) const {return (ScDBData*)At(nIndex);}
+ virtual short Compare(DataObject* pKey1, DataObject* pKey2) const;
+ virtual BOOL IsEqual(DataObject* pKey1, DataObject* pKey2) const;
+ ScDBData* GetDBAtCursor(USHORT nCol, USHORT nRow, USHORT nTab, BOOL bStartOnly) const;
+ ScDBData* GetDBAtArea(USHORT nTab, USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2) const;
+
+ BOOL Load( SvStream& rStream );
+ BOOL Store( SvStream& rStream ) const;
+
+ BOOL SearchName( const String& rName, USHORT& rIndex ) const;
+
+ void UpdateReference(UpdateRefMode eUpdateRefMode,
+ USHORT nCol1, USHORT nRow1, USHORT nTab1,
+ USHORT nCol2, USHORT nRow2, USHORT nTab2,
+ short nDx, short nDy, short nDz );
+ void UpdateMoveTab( USHORT nOldPos, USHORT nNewPos );
+
+ ScDBData* FindIndex(USHORT nIndex);
+ USHORT GetEntryIndex() { return nEntryIndex; }
+ void SetEntryIndex(USHORT nInd) { nEntryIndex = nInd; }
+ virtual BOOL Insert(DataObject* pDataObject);
+};
+
+#endif
diff --git a/sc/inc/dbtoken.hxx b/sc/inc/dbtoken.hxx
new file mode 100644
index 000000000000..0c8b8b57062a
--- /dev/null
+++ b/sc/inc/dbtoken.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbtoken.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _DBTOKEN_HXX
+#define _DBTOKEN_HXX
+
+#ifndef SC_COMPILER_HXX
+#include "compiler.hxx"
+#endif
+
+
+// SET DBG_TOKEN=string
+// + - make new data
+// - - do not make old data
+// aA - dump old/new token array
+// uU - dump old/new UPN array
+
+BOOL DbgToken( char );
+ScTokenArray* DbgMakeTokenArray
+ ( ScDocument* pDoc, USHORT nTab, const String& r, USHORT& rErr );
+void DbgDumpTokenArray( const BYTE* pArr, USHORT nLen, const char* pMsg );
+void DbgDelTokenArray( ScTokenArray* );
+StackVar DbgInterpret( ScDocument* pDok, const ScTokenArray* pToken,
+ USHORT nCOL, USHORT nROW, USHORT nTAB,
+ StackVar eStackVar,
+ char* &rStringErgPtr,
+ double& rDoubleErg,
+ USHORT& rError,
+ ScMatrix** ppMat);
+
+#endif
+
diff --git a/sc/inc/detdata.hxx b/sc/inc/detdata.hxx
new file mode 100644
index 000000000000..757bc99770d7
--- /dev/null
+++ b/sc/inc/detdata.hxx
@@ -0,0 +1,142 @@
+/*************************************************************************
+ *
+ * $RCSfile: detdata.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DETDATA_HXX
+#define SC_DETDATA_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+
+//------------------------------------------------------------------------
+
+#define SC_DETOP_GROW 4
+
+//------------------------------------------------------------------------
+enum ScDetOpType
+{
+ SCDETOP_ADDSUCC,
+ SCDETOP_DELSUCC,
+ SCDETOP_ADDPRED,
+ SCDETOP_DELPRED,
+ SCDETOP_ADDERROR
+};
+
+//------------------------------------------------------------------------
+
+class ScDetOpData
+{
+ ScAddress aPos;
+ ScDetOpType eOperation;
+
+public:
+ ScDetOpData( const ScAddress& rP, ScDetOpType eOp ) :
+ aPos(rP), eOperation(eOp) {}
+
+ ScDetOpData( const ScDetOpData& rData ) :
+ aPos(rData.aPos), eOperation(rData.eOperation) {}
+
+ const ScAddress& GetPos() const { return aPos; }
+ ScDetOpType GetOperation() const { return eOperation; }
+
+ // fuer UpdateRef:
+ void SetPos(const ScAddress& rNew) { aPos=rNew; }
+
+ int operator== ( const ScDetOpData& r ) const
+ { return eOperation == r.eOperation && aPos == r.aPos; }
+};
+
+//------------------------------------------------------------------------
+
+//
+// Liste der Operationen
+//
+
+typedef ScDetOpData* ScDetOpDataPtr;
+
+SV_DECL_PTRARR_DEL(ScDetOpArr_Impl, ScDetOpDataPtr, SC_DETOP_GROW, SC_DETOP_GROW);
+
+class ScDetOpList : public ScDetOpArr_Impl
+{
+public:
+ ScDetOpList() {}
+ ScDetOpList(const ScDetOpList& rList);
+ ~ScDetOpList() {}
+
+ void UpdateReference( ScDocument* pDoc, UpdateRefMode eUpdateRefMode,
+ const ScRange& rRange, short nDx, short nDy, short nDz );
+
+ BOOL operator==( const ScDetOpList& r ) const; // fuer Ref-Undo
+
+ void Append( ScDetOpData* pData ) { Insert( pData, Count() ); }
+
+ void Load( SvStream& rStream );
+ void Store( SvStream& rStream ) const;
+};
+
+
+
+#endif
diff --git a/sc/inc/detfunc.hxx b/sc/inc/detfunc.hxx
new file mode 100644
index 000000000000..c3afde5cd5bc
--- /dev/null
+++ b/sc/inc/detfunc.hxx
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ * $RCSfile: detfunc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DETFUNC_HXX
+#define SC_DETFUNC_HXX
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+class SdrObject;
+class SdrPage;
+class String;
+
+class ScCommentData;
+class ScDetectiveData;
+class ScDocument;
+class ScTripel;
+
+#define SC_DET_MAXCIRCLE 1000
+
+enum ScDetectiveDelete { SC_DET_ALL, SC_DET_DETECTIVE, SC_DET_CIRCLES, SC_DET_COMMENTS };
+
+class ScDetectiveFunc
+{
+ ScDocument* pDoc;
+ USHORT nTab;
+
+ Point GetDrawPos( USHORT nCol, USHORT nRow, BOOL bArrow );
+ BOOL HasArrow( USHORT nStartCol, USHORT nStartRow, USHORT nStartTab,
+ USHORT nEndCol, USHORT nEndRow, USHORT nEndTab );
+
+ void DeleteArrowsAt( USHORT nCol, USHORT nRow, BOOL bDestPnt );
+ void DeleteBox( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 );
+
+ BOOL HasError( const ScTripel& rStart, const ScTripel& rEnd, ScTripel& rErrPos );
+
+ void FillAttributes( ScDetectiveData& rData );
+
+ BOOL DrawEntry( USHORT nCol, USHORT nRow, const ScTripel& rRefStart, const ScTripel& rRefEnd,
+ ScDetectiveData& rData );
+ BOOL DrawAlienEntry( const ScTripel& rRefStart, const ScTripel& rRefEnd,
+ ScDetectiveData& rData );
+ void DrawCircle( USHORT nCol, USHORT nRow, ScDetectiveData& rData );
+
+ SdrObject* DrawCaption( USHORT nCol, USHORT nRow, const String& rText,
+ ScCommentData& rData, SdrPage* pDestPage,
+ BOOL bHasUserText, BOOL bLeft,
+ const Rectangle& rVisible );
+
+ USHORT InsertPredLevel( USHORT nCol, USHORT nRow, ScDetectiveData& rData, USHORT nLevel );
+ USHORT InsertPredLevelArea( const ScTripel& rRefStart, const ScTripel& rRefEnd,
+ ScDetectiveData& rData, USHORT nLevel );
+ USHORT FindPredLevel( USHORT nCol, USHORT nRow, USHORT nLevel, USHORT nDeleteLevel );
+ USHORT FindPredLevelArea( const ScTripel& rRefStart, const ScTripel& rRefEnd,
+ USHORT nLevel, USHORT nDeleteLevel );
+
+ USHORT InsertErrorLevel( USHORT nCol, USHORT nRow, ScDetectiveData& rData, USHORT nLevel );
+
+ USHORT InsertSuccLevel( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ ScDetectiveData& rData, USHORT nLevel );
+ USHORT FindSuccLevel( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nLevel, USHORT nDeleteLevel );
+
+
+public:
+ ScDetectiveFunc(ScDocument* pDocument, USHORT nTable) : pDoc(pDocument),nTab(nTable) {}
+
+ BOOL ShowSucc( USHORT nCol, USHORT nRow );
+ BOOL ShowPred( USHORT nCol, USHORT nRow );
+ BOOL ShowError( USHORT nCol, USHORT nRow );
+
+ BOOL DeleteSucc( USHORT nCol, USHORT nRow );
+ BOOL DeletePred( USHORT nCol, USHORT nRow );
+ BOOL DeleteAll( ScDetectiveDelete eWhat );
+
+ BOOL MarkInvalid(BOOL& rOverflow);
+
+ SdrObject* ShowComment( USHORT nCol, USHORT nRow, BOOL bForce, SdrPage* pDestPage = NULL );
+ SdrObject* ShowCommentUser( USHORT nCol, USHORT nRow, const String& rUserText,
+ const Rectangle& rVisible, BOOL bLeft,
+ BOOL bForce, SdrPage* pDestPage );
+ BOOL HideComment( USHORT nCol, USHORT nRow );
+
+ static BOOL IsNonAlienArrow( SdrObject* pObject );
+};
+
+
+
+#endif
diff --git a/sc/inc/dociter.hxx b/sc/inc/dociter.hxx
new file mode 100644
index 000000000000..eb7c5f3764f3
--- /dev/null
+++ b/sc/inc/dociter.hxx
@@ -0,0 +1,389 @@
+/*************************************************************************
+ *
+ * $RCSfile: dociter.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DOCITER_HXX
+#define SC_DOCITER_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScDocument;
+class ScBaseCell;
+class ScPatternAttr;
+class ScAttrArray;
+class ScAttrIterator;
+
+class ScDocumentIterator // alle nichtleeren Zellen durchgehen
+{
+private:
+ ScDocument* pDoc;
+ USHORT nStartTab;
+ USHORT nEndTab;
+
+ const ScPatternAttr* pDefPattern;
+
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTab;
+ ScBaseCell* pCell;
+ const ScPatternAttr* pPattern;
+
+
+ USHORT nColPos;
+ USHORT nAttrPos;
+
+ BOOL GetThis();
+ BOOL GetThisCol();
+
+public:
+ ScDocumentIterator( ScDocument* pDocument, USHORT nStartTable, USHORT nEndTable );
+ ~ScDocumentIterator();
+
+ BOOL GetFirst();
+ BOOL GetNext();
+
+ ScBaseCell* GetCell();
+ const ScPatternAttr* GetPattern();
+ void GetPos( USHORT& rCol, USHORT& rRow, USHORT& rTab );
+};
+
+class ScValueIterator // alle Zahlenwerte in einem Bereich durchgehen
+{
+private:
+ double fNextValue;
+ ScDocument* pDoc;
+ const ScAttrArray* pAttrArray;
+ ULONG nNumFormat; // fuer CalcAsShown
+ ULONG nNumFmtIndex;
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTab;
+ USHORT nColRow;
+ USHORT nNextRow;
+ USHORT nAttrEndRow;
+ short nNumFmtType;
+ BOOL bNumValid;
+ BOOL bSubTotal;
+ BOOL bNextValid;
+ BOOL bCalcAsShown;
+ BOOL bTextAsZero;
+
+ BOOL GetThis(double& rValue, USHORT& rErr);
+public:
+ ScValueIterator(ScDocument* pDocument,
+ USHORT nSCol, USHORT nSRow, USHORT nSTab,
+ USHORT nECol, USHORT nERow, USHORT nETab,
+ BOOL bSTotal = FALSE, BOOL bTextAsZero = FALSE);
+ ScValueIterator(ScDocument* pDocument,
+ const ScRange& rRange, BOOL bSTotal = FALSE,
+ BOOL bTextAsZero = FALSE );
+ void GetCurNumFmtInfo( short& nType, ULONG& nIndex );
+ BOOL GetFirst(double& rValue, USHORT& rErr);
+ BOOL GetNext(double& rValue, USHORT& rErr)
+ {
+ return bNextValid ? ( bNextValid = FALSE, rValue = fNextValue,
+ rErr = 0, nRow = nNextRow,
+ ++nColRow, bNumValid = FALSE, TRUE )
+ : ( ++nRow, GetThis(rValue, rErr) );
+ }
+};
+
+class ScQueryValueIterator // alle Zahlenwerte in einem Bereich durchgehen
+{
+private:
+ ScQueryParam aParam;
+ ScDocument* pDoc;
+ ScAttrArray* pAttrArray;
+ ULONG nNumFormat; // fuer CalcAsShown
+ ULONG nNumFmtIndex;
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nColRow;
+ USHORT nAttrEndRow;
+ USHORT nTab;
+ short nNumFmtType;
+ BOOL bCalcAsShown;
+
+ BOOL GetThis(double& rValue, USHORT& rErr);
+public:
+ ScQueryValueIterator(ScDocument* pDocument, USHORT nTable,
+ const ScQueryParam& aParam);
+ BOOL GetFirst(double& rValue, USHORT& rErr);
+ BOOL GetNext(double& rValue, USHORT& rErr);
+ void GetCurNumFmtInfo( short& nType, ULONG& nIndex )
+ { nType = nNumFmtType; nIndex = nNumFmtIndex; }
+};
+
+class ScCellIterator // alle Zellen in einem Bereich durchgehen
+{ // bei SubTotal aber keine ausgeblendeten und
+private: // SubTotalZeilen
+ ScDocument* pDoc;
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTab;
+ USHORT nColRow;
+ BOOL bSubTotal;
+
+ ScBaseCell* GetThis();
+public:
+ ScCellIterator(ScDocument* pDocument,
+ USHORT nSCol, USHORT nSRow, USHORT nSTab,
+ USHORT nECol, USHORT nERow, USHORT nETab,
+ BOOL bSTotal = FALSE);
+ ScCellIterator(ScDocument* pDocument,
+ const ScRange& rRange, BOOL bSTotal = FALSE);
+ ScBaseCell* GetFirst();
+ ScBaseCell* GetNext();
+ USHORT GetCol() { return nCol; }
+ USHORT GetRow() { return nRow; }
+ USHORT GetTab() { return nTab; }
+};
+
+class ScQueryCellIterator // alle nichtleeren Zellen in einem Bereich
+{ // durchgehen
+private:
+ ScQueryParam aParam;
+ ScDocument* pDoc;
+ ScAttrArray* pAttrArray;
+ ULONG nNumFormat;
+ USHORT nTab;
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nColRow;
+ USHORT nAttrEndRow;
+ BOOL bAdvanceQuery;
+
+ ScBaseCell* GetThis();
+public:
+ ScQueryCellIterator(ScDocument* pDocument, USHORT nTable,
+ const ScQueryParam& aParam, BOOL bMod = TRUE);
+ // fuer bMod = FALSE muss der QueryParam
+ // weiter aufgefuellt sein (bIsString)
+ ScBaseCell* GetFirst();
+ ScBaseCell* GetNext();
+ USHORT GetCol() { return nCol; }
+ USHORT GetRow() { return nRow; }
+ ULONG GetNumberFormat();
+
+ // setzt alle Entry.nField einen weiter, wenn Spalte
+ // wechselt, fuer ScInterpreter ScHLookup()
+ void SetAdvanceQueryParamEntryField( BOOL bVal )
+ { bAdvanceQuery = bVal; }
+ void AdvanceQueryParamEntryField();
+};
+
+class ScDocAttrIterator // alle Attribut-Bereiche
+{
+private:
+ ScDocument* pDoc;
+ USHORT nTab;
+ USHORT nEndCol;
+ USHORT nStartRow;
+ USHORT nEndRow;
+ USHORT nCol;
+ ScAttrIterator* pColIter;
+
+public:
+ ScDocAttrIterator(ScDocument* pDocument, USHORT nTable,
+ USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ ~ScDocAttrIterator();
+
+ const ScPatternAttr* GetNext( USHORT& rCol, USHORT& rRow1, USHORT& rRow2 );
+};
+
+class ScAttrRectIterator // alle Attribut-Bereiche, auch Bereiche ueber mehrere Spalten
+{
+private:
+ ScDocument* pDoc;
+ USHORT nTab;
+ USHORT nEndCol;
+ USHORT nStartRow;
+ USHORT nEndRow;
+ USHORT nIterStartCol;
+ USHORT nIterEndCol;
+ ScAttrIterator* pColIter;
+
+public:
+ ScAttrRectIterator(ScDocument* pDocument, USHORT nTable,
+ USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ ~ScAttrRectIterator();
+
+ void DataChanged();
+ const ScPatternAttr* GetNext( USHORT& rCol1, USHORT& rCol2, USHORT& rRow1, USHORT& rRow2 );
+};
+
+class ScHorizontalCellIterator // alle nichtleeren Zellen in einem Bereich
+{ // zeilenweise durchgehen
+private:
+ ScDocument* pDoc;
+ USHORT nTab;
+ USHORT nStartCol;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT* pNextRows;
+ USHORT* pNextIndices;
+ USHORT nCol;
+ USHORT nRow;
+ BOOL bMore;
+
+public:
+ ScHorizontalCellIterator(ScDocument* pDocument, USHORT nTable,
+ USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ ~ScHorizontalCellIterator();
+
+ ScBaseCell* GetNext( USHORT& rCol, USHORT& rRow );
+ BOOL ReturnNext( USHORT& rCol, USHORT& rRow );
+
+private:
+ void Advance();
+};
+
+
+//
+// gibt alle Bereiche mit nicht-Default-Formatierung zurueck (horizontal)
+//
+
+class ScHorizontalAttrIterator
+{
+private:
+ ScDocument* pDoc;
+ USHORT nTab;
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+
+ USHORT* pNextEnd;
+ USHORT* pIndices;
+ const ScPatternAttr** ppPatterns;
+ USHORT nCol;
+ USHORT nRow;
+ BOOL bRowEmpty;
+
+public:
+ ScHorizontalAttrIterator( ScDocument* pDocument, USHORT nTable,
+ USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 );
+ ~ScHorizontalAttrIterator();
+
+ const ScPatternAttr* GetNext( USHORT& rCol1, USHORT& rCol2, USHORT& rRow );
+};
+
+//
+// gibt nichtleere Zellen und Bereiche mit Formatierung zurueck (horizontal)
+//
+
+class ScUsedAreaIterator
+{
+private:
+ ScHorizontalCellIterator aCellIter;
+ ScHorizontalAttrIterator aAttrIter;
+
+ USHORT nNextCol;
+ USHORT nNextRow;
+
+ USHORT nCellCol;
+ USHORT nCellRow;
+ const ScBaseCell* pCell;
+ USHORT nAttrCol1;
+ USHORT nAttrCol2;
+ USHORT nAttrRow;
+ const ScPatternAttr* pPattern;
+
+ USHORT nFoundStartCol; // Ergebnisse nach GetNext
+ USHORT nFoundEndCol;
+ USHORT nFoundRow;
+ const ScPatternAttr* pFoundPattern;
+ const ScBaseCell* pFoundCell;
+
+public:
+ ScUsedAreaIterator( ScDocument* pDocument, USHORT nTable,
+ USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 );
+ ~ScUsedAreaIterator();
+
+ BOOL GetNext();
+
+ USHORT GetStartCol() const { return nFoundStartCol; }
+ USHORT GetEndCol() const { return nFoundEndCol; }
+ USHORT GetRow() const { return nFoundRow; }
+ const ScPatternAttr* GetPattern() const { return pFoundPattern; }
+ const ScBaseCell* GetCell() const { return pFoundCell; }
+};
+
+#endif
+
+
diff --git a/sc/inc/docoptio.hxx b/sc/inc/docoptio.hxx
new file mode 100644
index 000000000000..e200e4f24132
--- /dev/null
+++ b/sc/inc/docoptio.hxx
@@ -0,0 +1,246 @@
+/*************************************************************************
+ *
+ * $RCSfile: docoptio.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DOCOPTIO_HXX
+#define SC_DOCOPTIO_HXX
+
+
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+
+class ScDocOptions
+{
+ double fIterEps; // Epsilon-Wert dazu
+ USHORT nIterCount; // Anzahl
+ USHORT nPrecStandardFormat; // Nachkommastellen Standard
+ USHORT nDay; // Nulldatum:
+ USHORT nMonth;
+ USHORT nYear;
+ USHORT nYear2000; // bis zu welcher zweistelligen Jahreszahl 20xx angenommen wird
+ USHORT nTabDistance; // Abstand Standardtabulatoren
+ BOOL bIsIgnoreCase; // Gross-/Kleinschr. bei Vergleichen
+ BOOL bIsIter; // Iteration bei cirk. Ref
+ BOOL bCalcAsShown; // berechnen wie angezeigt (Precision)
+ BOOL bMatchWholeCell; // Suchkriterien muessen ganze Zelle matchen
+ BOOL bDoAutoSpell; // Auto-Spelling
+ BOOL bLookUpColRowNames; // Spalten-/Zeilenbeschriftungen automagisch suchen
+
+public:
+ ScDocOptions();
+ ScDocOptions( const ScDocOptions& rCpy );
+ ~ScDocOptions();
+
+ BOOL IsLookUpColRowNames() const { return bLookUpColRowNames; }
+ void SetLookUpColRowNames( BOOL bVal ) { bLookUpColRowNames = bVal; }
+ BOOL IsAutoSpell() const { return bDoAutoSpell; }
+ void SetAutoSpell( BOOL bVal ) { bDoAutoSpell = bVal; }
+ BOOL IsMatchWholeCell() const { return bMatchWholeCell; }
+ void SetMatchWholeCell( BOOL bVal ){ bMatchWholeCell = bVal; }
+ BOOL IsIgnoreCase() const { return bIsIgnoreCase; }
+ void SetIgnoreCase( BOOL bVal ) { bIsIgnoreCase = bVal; }
+ BOOL IsIter() const { return bIsIter; }
+ void SetIter( BOOL bVal ) { bIsIter = bVal; }
+ USHORT GetIterCount() const { return nIterCount; }
+ void SetIterCount( USHORT nCount) { nIterCount = nCount; }
+ double GetIterEps() const { return fIterEps; }
+ void SetIterEps( double fEps ) { fIterEps = fEps; }
+
+ void GetDate( USHORT& rD, USHORT& rM, USHORT& rY ) const
+ { rD = nDay; rM = nMonth; rY = nYear;}
+ void SetDate (USHORT nD, USHORT nM, USHORT nY)
+ { nDay = nD; nMonth = nM; nYear = nY; }
+ USHORT GetTabDistance() const { return nTabDistance;}
+ void SetTabDistance( USHORT nTabDist ) {nTabDistance = nTabDist;}
+
+ void ResetDocOptions();
+ inline void CopyTo(ScDocOptions& rOpt);
+ void Load(SvStream& rStream);
+ void Save(SvStream& rStream, BOOL bConfig = FALSE) const;
+
+ inline const ScDocOptions& operator=( const ScDocOptions& rOpt );
+ inline int operator==( const ScDocOptions& rOpt ) const;
+ inline int operator!=( const ScDocOptions& rOpt ) const;
+
+ USHORT GetStdPrecision() const { return nPrecStandardFormat; }
+ void SetStdPrecision( USHORT n ) { nPrecStandardFormat = n; }
+
+ BOOL IsCalcAsShown() const { return bCalcAsShown; }
+ void SetCalcAsShown( BOOL bVal ) { bCalcAsShown = bVal; }
+
+ void SetYear2000( USHORT nVal ) { nYear2000 = nVal; }
+ USHORT GetYear2000() const { return nYear2000; }
+};
+
+
+inline void ScDocOptions::CopyTo(ScDocOptions& rOpt)
+{
+ rOpt.bIsIgnoreCase = bIsIgnoreCase;
+ rOpt.bIsIter = bIsIter;
+ rOpt.nIterCount = nIterCount;
+ rOpt.fIterEps = fIterEps;
+ rOpt.nPrecStandardFormat = nPrecStandardFormat;
+ rOpt.nDay = nDay;
+ rOpt.nMonth = nMonth;
+ rOpt.nYear2000 = nYear2000;
+ rOpt.nYear = nYear;
+ rOpt.nTabDistance = nTabDistance;
+ rOpt.bCalcAsShown = bCalcAsShown;
+ rOpt.bMatchWholeCell = bMatchWholeCell;
+ rOpt.bDoAutoSpell = bDoAutoSpell;
+ rOpt.bLookUpColRowNames = bLookUpColRowNames;
+}
+
+inline const ScDocOptions& ScDocOptions::operator=( const ScDocOptions& rCpy )
+{
+ bIsIgnoreCase = rCpy.bIsIgnoreCase;
+ bIsIter = rCpy.bIsIter;
+ nIterCount = rCpy.nIterCount;
+ fIterEps = rCpy.fIterEps;
+ nPrecStandardFormat = rCpy.nPrecStandardFormat;
+ nDay = rCpy.nDay;
+ nMonth = rCpy.nMonth;
+ nYear = rCpy.nYear;
+ nYear2000 = rCpy.nYear2000;
+ nTabDistance = rCpy.nTabDistance;
+ bCalcAsShown = rCpy.bCalcAsShown;
+ bMatchWholeCell = rCpy.bMatchWholeCell;
+ bDoAutoSpell = rCpy.bDoAutoSpell;
+ bLookUpColRowNames = rCpy.bLookUpColRowNames;
+
+ return *this;
+}
+
+inline int ScDocOptions::operator==( const ScDocOptions& rOpt ) const
+{
+ return (
+ rOpt.bIsIgnoreCase == bIsIgnoreCase
+ && rOpt.bIsIter == bIsIter
+ && rOpt.nIterCount == nIterCount
+ && rOpt.fIterEps == fIterEps
+ && rOpt.nPrecStandardFormat == nPrecStandardFormat
+ && rOpt.nDay == nDay
+ && rOpt.nMonth == nMonth
+ && rOpt.nYear == nYear
+ && rOpt.nYear2000 == nYear2000
+ && rOpt.nTabDistance == nTabDistance
+ && rOpt.bCalcAsShown == bCalcAsShown
+ && rOpt.bMatchWholeCell == bMatchWholeCell
+ && rOpt.bDoAutoSpell == bDoAutoSpell
+ && rOpt.bLookUpColRowNames == bLookUpColRowNames
+ );
+}
+
+inline int ScDocOptions::operator!=( const ScDocOptions& rOpt ) const
+{
+ return !(operator==(rOpt));
+}
+
+//==================================================================
+// Item fuer Einstellungsdialog - Berechnen
+//==================================================================
+
+class ScTpCalcItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScTpCalcItem( USHORT nWhich );
+ ScTpCalcItem( USHORT nWhich,
+ const ScDocOptions& rOpt );
+ ScTpCalcItem( const ScTpCalcItem& rItem );
+ ~ScTpCalcItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ const ScDocOptions& GetDocOptions() const { return theOptions; }
+
+private:
+ ScDocOptions theOptions;
+};
+
+//==================================================================
+// CfgItem fuer Doc-Optionen
+//==================================================================
+
+class ScDocCfg : public ScDocOptions,
+ public SfxConfigItem
+{
+public:
+ ScDocCfg();
+
+ virtual String GetName() const;
+
+protected:
+ virtual int Load (SvStream& rStream);
+ virtual BOOL Store (SvStream& rStream);
+ virtual void UseDefault ();
+};
+
+
+#endif
+
diff --git a/sc/inc/docpool.hxx b/sc/inc/docpool.hxx
new file mode 100644
index 000000000000..57285057375f
--- /dev/null
+++ b/sc/inc/docpool.hxx
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * $RCSfile: docpool.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SCDOCPOL_HXX
+#define SC_SCDOCPOL_HXX
+
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+
+class ScStyleSheet;
+
+//------------------------------------------------------------------------
+
+class ScDocumentPool: public SfxItemPool
+{
+ SfxPoolItem** ppPoolDefaults;
+ SfxItemPool* pSecondary;
+ static USHORT* pVersionMap1;
+ static USHORT* pVersionMap2;
+ static USHORT* pVersionMap3;
+ static USHORT* pVersionMap4;
+
+public:
+ ScDocumentPool( SfxItemPool* pSecPool = NULL, BOOL bLoadRefCounts = FALSE );
+ ~ScDocumentPool();
+
+ virtual SfxItemPool* Clone() const;
+ virtual SfxMapUnit GetMetric( USHORT nWhich ) const;
+
+ virtual const SfxPoolItem& Put( const SfxPoolItem&, USHORT nWhich = 0 );
+ virtual void Remove( const SfxPoolItem& );
+ static void CheckRef( const SfxPoolItem& );
+ void MyLoadCompleted();
+
+ void StyleDeleted( ScStyleSheet* pStyle ); // Loeschen von Vorlagen im Organizer
+ virtual SfxItemPresentation GetPresentation(
+ const SfxPoolItem& rItem,
+ SfxItemPresentation ePresentation,
+ SfxMapUnit ePresentationMetric,
+ String& rText,
+ const International* pIntl = 0 ) const;
+
+ static void InitVersionMaps();
+ static void DeleteVersionMaps();
+};
+
+
+
+
+#endif
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
new file mode 100644
index 000000000000..68381cf4780c
--- /dev/null
+++ b/sc/inc/document.hxx
@@ -0,0 +1,1439 @@
+/*************************************************************************
+ *
+ * $RCSfile: document.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DOCUMENT_HXX
+#define SC_DOCUMENT_HXX
+
+
+#ifndef _SV_PRNTYPES_HXX //autogen
+#include <vcl/prntypes.hxx>
+#endif
+
+#ifndef _SV_TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef SC_TABLE_HXX
+#include "table.hxx" // FastGetRowHeight (inline)
+#endif
+
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx"
+#endif
+
+
+class KeyEvent;
+class OutputDevice;
+class ODbVariant;
+class SdrObject;
+class SfxBroadcaster;
+class SfxHint;
+class SfxItemSet;
+class SfxObjectShell;
+class SfxPoolItem;
+class SfxItemPool;
+class SfxPrinter;
+class SfxStatusBarManager;
+class SfxStyleSheetBase;
+class SvMemoryStream;
+class SvNumberFormatter;
+class SvxBorderLine;
+class SvxBoxInfoItem;
+class SvxBoxItem;
+class SvxBrushItem;
+class SvxLinkManager;
+class SvxSearchItem;
+class SvxShadowItem;
+class Window;
+class XColorTable;
+
+class ScAutoFormatData;
+class ScBaseCell;
+class ScBroadcastAreaSlotMachine;
+class ScChangeViewSettings;
+class ScChartCollection;
+class ScChartListenerCollection;
+class ScConditionalFormat;
+class ScConditionalFormatList;
+class ScDBCollection;
+class ScDBData;
+class ScDetOpData;
+class ScDetOpList;
+class ScDocOptions;
+class ScDocumentPool;
+class ScDrawLayer;
+class ScExtDocOptions;
+class ScFormulaCell;
+class SchMemChart;
+class ScMarkData;
+class ScOutlineTable;
+class ScPatternAttr;
+class ScPivot;
+class ScPivotCollection;
+class ScPrintRangeSaver;
+class ScRangeData;
+class ScRangeName;
+class ScStyleSheet;
+class ScStyleSheetPool;
+class ScTable;
+class ScTokenArray;
+class ScValidationData;
+class ScValidationDataList;
+class ScViewOptions;
+class TypedStrCollection;
+class ScChangeTrack;
+class ScFieldEditEngine;
+struct ScConsolidateParam;
+class ScDPObject;
+class ScDPCollection;
+
+
+#ifdef _ZFORLIST_DECLARE_TABLE
+class SvULONGTable;
+#else
+class Table;
+typedef Table SvULONGTable;
+#endif
+
+
+#define SC_TAB_APPEND 0xFFFF
+#define SC_DOC_NEW 0xFFFF
+#define REPEAT_NONE 0xFFFF
+
+#define SC_MACROCALL_ALLOWED 0
+#define SC_MACROCALL_NOTALLOWED 1
+#define SC_MACROCALL_ASK 2
+
+
+enum ScDocumentMode
+ {
+ SCDOCMODE_DOCUMENT,
+ SCDOCMODE_CLIP,
+ SCDOCMODE_UNDO
+ };
+
+
+
+// -----------------------------------------------------------------------
+//
+// structs fuer FillInfo
+//
+
+enum ScShadowPart
+{
+ SC_SHADOW_HSTART,
+ SC_SHADOW_VSTART,
+ SC_SHADOW_HORIZ,
+ SC_SHADOW_VERT,
+ SC_SHADOW_CORNER
+};
+
+#define SC_ROTDIR_NONE 0
+#define SC_ROTDIR_STANDARD 1
+#define SC_ROTDIR_LEFT 2
+#define SC_ROTDIR_RIGHT 3
+#define SC_ROTDIR_CENTER 4
+
+struct CellInfo
+ {
+ ScBaseCell* pCell;
+
+ const ScPatternAttr* pPatternAttr;
+ const SfxItemSet* pConditionSet;
+
+ const SvxBrushItem* pBackground;
+
+ const SvxBoxItem* pLinesAttr; // Original-Item (intern)
+
+ const SvxBorderLine* pThisBottom; // einzelne inkl. zusammengefasst
+ const SvxBorderLine* pNextTop; // (intern)
+ const SvxBorderLine* pThisRight;
+ const SvxBorderLine* pNextLeft;
+
+ const SvxBorderLine* pRightLine; // dickere zum Zeichnen
+ const SvxBorderLine* pBottomLine;
+
+ const SvxShadowItem* pShadowAttr; // Original-Item (intern)
+
+ ScShadowPart eHShadowPart; // Schatten effektiv zum Zeichnen
+ ScShadowPart eVShadowPart;
+ const SvxShadowItem* pHShadowOrigin;
+ const SvxShadowItem* pVShadowOrigin;
+
+ USHORT nWidth;
+
+ BOOL bMarked;
+ BOOL bStandard;
+ BOOL bEmptyCellText;
+
+ BOOL bMerged;
+ BOOL bHOverlapped;
+ BOOL bVOverlapped;
+ BOOL bAutoFilter;
+ BOOL bPushButton;
+ BYTE nRotateDir;
+
+ BOOL bPrinted; // bei Bedarf (Pagebreak-Modus)
+
+ BOOL bHideGrid; // output-intern
+ BOOL bEditEngine; // output-intern
+ };
+
+#define SC_ROTMAX_NONE USHRT_MAX
+
+struct RowInfo
+ {
+ CellInfo* pCellInfo;
+
+ USHORT nHeight;
+ USHORT nRowNo;
+ USHORT nRotMaxCol; // SC_ROTMAX_NONE, wenn nichts
+
+ BOOL bEmptyBack;
+ BOOL bEmptyText;
+ BOOL bAutoFilter;
+ BOOL bPushButton;
+ BOOL bChanged; // TRUE, wenn nicht getestet
+ };
+
+struct ScDocStat
+{
+ String aDocName;
+ USHORT nTableCount;
+ ULONG nCellCount;
+ USHORT nPageCount;
+};
+
+// nicht 11 Parameter bei CopyBlockFromClip, konstante Werte der Schleife hier
+struct ScCopyBlockFromClipParams
+{
+ ScDocument* pRefUndoDoc;
+ ScDocument* pClipDoc;
+ USHORT nInsFlag;
+ USHORT nTabStart;
+ USHORT nTabEnd;
+ BOOL bAsLink;
+};
+
+#define ROWINFO_MAX 1024
+
+
+// Spezialwert fuer Recalc-Alwyas-Zellen
+
+#define BCA_BRDCST_ALWAYS ScAddress( 0, 32767, 0 )
+#define BCA_LISTEN_ALWAYS ScRange( BCA_BRDCST_ALWAYS, BCA_BRDCST_ALWAYS )
+
+// -----------------------------------------------------------------------
+
+class ScDocument
+{
+friend class ScDocumentIterator;
+friend class ScValueIterator;
+friend class ScQueryValueIterator;
+friend class ScCellIterator;
+friend class ScQueryCellIterator;
+friend class ScHorizontalCellIterator;
+friend class ScHorizontalAttrIterator;
+friend class ScDocAttrIterator;
+friend class ScAttrRectIterator;
+friend class ScPivot;
+
+private:
+ ScDocumentPool* pDocPool;
+ ScStyleSheetPool* pStylePool;
+ SfxItemPool* pEditPool; // EditTextObjectPool
+ SfxItemPool* pEnginePool; // EditEnginePool
+ ScFieldEditEngine* pEditEngine; // mit pEditPool
+ SfxObjectShell* pShell;
+ SfxPrinter* pPrinter;
+ ScDrawLayer* pDrawLayer; // SdrModel
+ XColorTable* pColorTable;
+ ScConditionalFormatList* pCondFormList; // bedingte Formate
+ ScValidationDataList* pValidationList; // Gueltigkeit
+ SvNumberFormatter* pFormTable;
+ SvULONGTable* pFormatExchangeList; // zum Umsetzen von Zahlenformaten
+ ScTable* pTab[MAXTAB+1];
+ ScRangeName* pRangeName;
+ ScDBCollection* pDBCollection;
+ ScPivotCollection* pPivotCollection;
+ ScDPCollection* pDPCollection;
+ ScChartCollection* pChartCollection;
+ ScPatternAttr* pSelectionAttr; // Attribute eines Blocks
+ SvxLinkManager* pLinkManager;
+ ScFormulaCell* pFormulaTree; // Berechnungsbaum Start
+ ScFormulaCell* pEOFormulaTree; // Berechnungsbaum Ende, letzte Zelle
+ ScFormulaCell* pFormulaTrack; // BroadcastTrack Start
+ ScFormulaCell* pEOFormulaTrack; // BrodcastTrack Ende, letzte Zelle
+ ScBroadcastAreaSlotMachine* pBASM; // BroadcastAreas
+ ScChartListenerCollection* pChartListenerCollection;
+ SvMemoryStream* pClipData;
+ ScDetOpList* pDetOpList;
+ ScChangeTrack* pChangeTrack;
+ SfxBroadcaster* pUnoBroadcaster;
+ ScChangeViewSettings* pChangeViewSettings;
+
+ Link aColorLink; // fuer Farben in Z.Formaten
+ String aProtectPass;
+ String aDocName; // opt: Dokumentname
+ ScRangePairListRef xColNameRanges;
+ ScRangePairListRef xRowNameRanges;
+
+ ScViewOptions* pViewOptions; // View-Optionen
+ ScDocOptions* pDocOptions; // Dokument-Optionen
+ ScExtDocOptions* pExtDocOptions; // fuer Import etc.
+ ScConsolidateParam* pConsolidateDlgData;
+
+ ScRange aClipRange;
+ ScRange aEmbedRange;
+ ScAddress aCurTextWidthCalcPos;
+ ScAddress aOnlineSpellPos; // within whole document
+ ScRange aVisSpellRange;
+ ScAddress aVisSpellPos; // within aVisSpellRange (see nVisSpellState)
+
+ Timer aTrackTimer;
+
+ LanguageType eLanguage; // Default-Sprache
+ CharSet eSrcSet; // Einlesen: Quell-Zeichensatz
+
+ ULONG nFormulaCodeInTree; // FormelRPN im Formelbaum
+ USHORT nInterpretLevel; // >0 wenn im Interpreter
+ USHORT nMacroInterpretLevel; // >0 wenn Macro im Interpreter
+ USHORT nMaxTableNumber;
+ USHORT nSrcVer; // Dateiversion (Laden/Speichern)
+ USHORT nSrcMaxRow; // Zeilenzahl zum Laden/Speichern
+ USHORT nFormulaTrackCount;
+ USHORT nHardRecalcState; // 0: soft, 1: hard-warn, 2: hard
+ USHORT nVisibleTab; // fuer OLE etc.
+
+ BOOL bProtected;
+ BOOL bOwner;
+ BOOL bAutoCalc; // Automatisch Berechnen
+ BOOL bAutoCalcShellDisabled; // in/von/fuer ScDocShell disabled
+ // ob noch ForcedFormulas berechnet werden muessen,
+ // im Zusammenspiel mit ScDocShell SetDocumentModified,
+ // AutoCalcShellDisabled und TrackFormulas
+ BOOL bForcedFormulaPending;
+ BOOL bIsClip;
+ BOOL bCutMode;
+ BOOL bIsUndo;
+
+ BOOL bIsEmbedded; // Embedded-Bereich anzeigen/anpassen ?
+
+ // kein SetDirty bei ScFormulaCell::CompileTokenArray sondern am Ende
+ // von ScDocument::CompileAll[WithFormats], CopyScenario, CopyBlockFromClip
+ BOOL bNoSetDirty;
+ // kein Broadcast, keine Listener aufbauen waehrend aus einem anderen
+ // Doc (per Filter o.ae.) inserted wird, erst bei CompileAll / CalcAfterLoad
+ BOOL bInsertingFromOtherDoc;
+ BOOL bImportingXML; // special handling of formula text
+ BOOL bCalcingAfterLoad; // in CalcAfterLoad TRUE
+ // wenn temporaer keine Listener auf/abgebaut werden sollen
+ BOOL bNoListening;
+ BOOL bLoadingDone;
+ BOOL bIdleDisabled;
+ BOOL bInLinkUpdate; // TableLink or AreaLink
+ BOOL bChartListenerCollectionNeedsUpdate;
+ // ob RC_FORCED Formelzellen im Dokument sind/waren (einmal an immer an)
+ BOOL bHasForcedFormulas;
+ // ist beim Laden/Speichern etwas weggelassen worden?
+ BOOL bLostData;
+ // ob das Doc gerade zerstoert wird (kein Notify-Tracking etc. mehr)
+ BOOL bInDtorClear;
+ // ob bei Spalte/Zeile einfuegen am Rand einer Referenz die Referenz
+ // erweitert wird, wird in jedem UpdateReference aus InputOptions geholt,
+ // gesetzt und am Ende von UpdateReference zurueckgesetzt
+ BOOL bExpandRefs;
+ // fuer Detektiv-Update, wird bei jeder Aenderung an Formeln gesetzt
+ BOOL bDetectiveDirty;
+
+ BYTE nMacroCallMode; // Makros per Warnung-Dialog disabled?
+ BOOL bHasMacroFunc; // valid only after loading
+
+ BYTE nVisSpellState;
+
+ inline BOOL RowHidden( USHORT nRow, USHORT nTab ); // FillInfo
+
+ ScLkUpdMode eLinkMode;
+
+public:
+ long GetCellCount() const; // alle Zellen
+ long GetWeightedCount() const; // Formeln und Edit staerker gewichtet
+ ULONG GetCodeCount() const; // RPN-Code in Formeln
+ DECL_LINK( GetUserDefinedColor, USHORT * );
+ // Numberformatter
+
+public:
+ ScDocument( ScDocumentMode eMode = SCDOCMODE_DOCUMENT,
+ SfxObjectShell* pDocShell = NULL );
+ ~ScDocument();
+
+ const String& GetName() const { return aDocName; }
+ void SetName( const String& r ) { aDocName = r; }
+
+ void GetDocStat( ScDocStat& rDocStat );
+
+ void InitDrawLayer( SfxObjectShell* pDocShell = NULL );
+ XColorTable* GetColorTable();
+
+ SvxLinkManager* GetLinkManager() { return pLinkManager; }
+ void SetLinkManager( SvxLinkManager* pNew );
+
+ const ScDocOptions& GetDocOptions() const;
+ void SetDocOptions( const ScDocOptions& rOpt );
+ const ScViewOptions& GetViewOptions() const;
+ void SetViewOptions( const ScViewOptions& rOpt );
+ void SetPrintOptions();
+
+ ScExtDocOptions* GetExtDocOptions() { return pExtDocOptions; }
+ void SetExtDocOptions( ScExtDocOptions* pNewOptions );
+
+ LanguageType GetLanguage() const;
+ void SetLanguage( LanguageType eNewLang );
+
+ void SetConsolidateDlgData( const ScConsolidateParam* pData );
+ const ScConsolidateParam* GetConsolidateDlgData() const { return pConsolidateDlgData; }
+
+ void Clear();
+
+ ScRangeName* GetRangeName();
+ void SetRangeName( ScRangeName* pNewRangeName );
+ USHORT GetMaxTableNumber() { return nMaxTableNumber; }
+ void SetMaxTableNumber(USHORT nNumber) { nMaxTableNumber = nNumber; }
+
+ ScRangePairList* GetColNameRanges() { return &xColNameRanges; }
+ ScRangePairList* GetRowNameRanges() { return &xRowNameRanges; }
+ ScRangePairListRef& GetColNameRangesRef() { return xColNameRanges; }
+ ScRangePairListRef& GetRowNameRangesRef() { return xRowNameRanges; }
+
+ ScDBCollection* GetDBCollection() const;
+ void SetDBCollection( ScDBCollection* pNewDBCollection );
+ ScDBData* GetDBAtCursor(USHORT nCol, USHORT nRow, USHORT nTab,
+ BOOL bStartOnly = FALSE) const;
+ ScDBData* GetDBAtArea(USHORT nTab, USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2) const;
+
+ ScRangeData* GetRangeAtCursor(USHORT nCol, USHORT nRow, USHORT nTab,
+ BOOL bStartOnly = FALSE) const;
+ ScRangeData* GetRangeAtBlock( const ScRange& rBlock, String* pName=NULL ) const;
+
+ ScDPCollection* GetDPCollection();
+ ScDPObject* GetDPAtCursor(USHORT nCol, USHORT nRow, USHORT nTab) const;
+
+ ScPivotCollection* GetPivotCollection() const;
+ void SetPivotCollection(ScPivotCollection* pNewPivotCollection);
+ ScPivot* GetPivotAtCursor(USHORT nCol, USHORT nRow, USHORT nTab) const;
+
+ ScChartCollection* GetChartCollection() const;
+ void SetChartCollection(ScChartCollection* pNewChartCollection);
+
+ void EnsureGraphicNames();
+
+ SdrObject* GetObjectAtPoint( USHORT nTab, const Point& rPos );
+ BOOL HasChartAtPoint( USHORT nTab, const Point& rPos, String* pName = NULL );
+ void UpdateChartArea( const String& rChartName, const ScRange& rNewArea,
+ BOOL bColHeaders, BOOL bRowHeaders, BOOL bAdd,
+ Window* pWindow );
+ void UpdateChartArea( const String& rChartName,
+ const ScRangeListRef& rNewList,
+ BOOL bColHeaders, BOOL bRowHeaders, BOOL bAdd,
+ Window* pWindow );
+ SchMemChart* FindChartData(const String& rName, BOOL bForModify = FALSE);
+
+ void MakeTable( USHORT nTab );
+
+ USHORT GetVisibleTab() const { return nVisibleTab; }
+ void SetVisibleTab(USHORT nTab) { nVisibleTab = nTab; }
+
+ BOOL HasTable( USHORT nTab ) const;
+ BOOL GetName( USHORT nTab, String& rName ) const;
+ BOOL GetTable( const String& rName, USHORT& rTab ) const;
+ inline USHORT GetTableCount() const { return nMaxTableNumber; }
+ SvULONGTable* GetFormatExchangeList() const { return pFormatExchangeList; }
+
+ void SetDocProtection( BOOL bProtect, const String& rPasswd );
+ void SetTabProtection( USHORT nTab, BOOL bProtect, const String& rPasswd );
+ BOOL IsDocProtected() const;
+ BOOL IsDocEditable() const;
+ BOOL IsTabProtected( USHORT nTab ) const;
+ const String& GetDocPassword() const;
+ const String& GetTabPassword( USHORT nTab ) const;
+
+ void LockTable(USHORT nTab);
+ void UnlockTable(USHORT nTab);
+
+ BOOL IsBlockEditable( USHORT nTab, USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ BOOL* pOnlyNotBecauseOfMatrix = NULL ) const;
+ BOOL IsSelectedBlockEditable( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ const ScMarkData& rMark ) const;
+ BOOL IsSelectionEditable( const ScMarkData& rMark,
+ BOOL* pOnlyNotBecauseOfMatrix = NULL ) const;
+ BOOL IsSelectionOrBlockEditable( USHORT nTab, USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ const ScMarkData& rMark ) const;
+ BOOL IsSelectedOrBlockEditable( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ const ScMarkData& rMark ) const;
+
+ BOOL HasSelectedBlockMatrixFragment( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ const ScMarkData& rMark ) const;
+
+ BOOL IsEmbedded() const;
+ void GetEmbedded( ScTripel& rStart, ScTripel& rEnd ) const;
+ void SetEmbedded( const ScTripel& rStart, const ScTripel& rEnd );
+ void ResetEmbedded();
+ Rectangle GetEmbeddedRect() const; // 1/100 mm
+ void SetEmbedded( const Rectangle& rRect ); // aus VisArea (1/100 mm)
+ void SnapVisArea( Rectangle& rRect ) const; // 1/100 mm
+
+ BOOL ValidTabName( const String& rName ) const;
+ BOOL ValidNewTabName( const String& rName ) const;
+ void CreateValidTabName(String& rName) const;
+ BOOL InsertTab( USHORT nPos, const String& rName,
+ BOOL bExternalDocument = FALSE );
+ BOOL DeleteTab( USHORT nTab, ScDocument* pRefUndoDoc = NULL );
+ BOOL RenameTab( USHORT nTab, const String& rName,
+ BOOL bUpdateRef = TRUE,
+ BOOL bExternalDocument = FALSE );
+ BOOL MoveTab( USHORT nOldPos, USHORT nNewPos );
+ BOOL CopyTab( USHORT nOldPos, USHORT nNewPos,
+ const ScMarkData* pOnlyMarked = NULL );
+ ULONG TransferTab(ScDocument* pSrcDoc, USHORT nSrcPos, USHORT nDestPos,
+ BOOL bInsertNew = TRUE,
+ BOOL bResultsOnly = FALSE );
+ void TransferDrawPage(ScDocument* pSrcDoc, USHORT nSrcPos, USHORT nDestPos);
+ void ClearDrawPage(USHORT nTab);
+ void SetVisible( USHORT nTab, BOOL bVisible );
+ BOOL IsVisible( USHORT nTab ) const;
+ void SetScenario( USHORT nTab, BOOL bFlag );
+ BOOL IsScenario( USHORT nTab ) const;
+ void GetScenarioData( USHORT nTab, String& rComment,
+ Color& rColor, USHORT& rFlags ) const;
+ void SetScenarioData( USHORT nTab, const String& rComment,
+ const Color& rColor, USHORT nFlags );
+ BOOL IsActiveScenario( USHORT nTab ) const;
+ void SetActiveScenario( USHORT nTab, BOOL bActive ); // nur fuer Undo etc.
+ BYTE GetLinkMode( USHORT nTab ) const;
+ BOOL IsLinked( USHORT nTab ) const;
+ const String& GetLinkDoc( USHORT nTab ) const;
+ const String& GetLinkFlt( USHORT nTab ) const;
+ const String& GetLinkOpt( USHORT nTab ) const;
+ const String& GetLinkTab( USHORT nTab ) const;
+ void SetLink( USHORT nTab, BYTE nMode, const String& rDoc,
+ const String& rFilter, const String& rOptions,
+ const String& rTabName );
+ BOOL HasLink( const String& rDoc,
+ const String& rFilter, const String& rOptions ) const;
+ BOOL LinkEmptyTab( USHORT& nTab, const String& aDocTab,
+ const String& aFileName,
+ const String& aTabName ); // insert empty tab & link
+ BOOL LinkExternalTab( USHORT& nTab, const String& aDocTab,
+ const String& aFileName,
+ const String& aTabName );
+
+ BOOL HasDdeLinks() const;
+ BOOL HasAreaLinks() const;
+ void UpdateDdeLinks();
+ void UpdateAreaLinks();
+
+ void CopyDdeLinks( ScDocument* pDestDoc ) const;
+ void DisconnectDdeLinks();
+
+ // Fuer Excel-Import:
+ void CreateDdeLink( const String& rAppl, const String& rTopic, const String& rItem );
+
+ // Fuer StarOne Api:
+ USHORT GetDdeLinkCount() const;
+ BOOL GetDdeLinkData( USHORT nPos, String& rAppl, String& rTopic, String& rItem ) const;
+ BOOL UpdateDdeLink( const String& rAppl, const String& rTopic, const String& rItem );
+
+ SfxObjectShell* GetDocumentShell() const { return pShell; }
+ ScDrawLayer* GetDrawLayer() { return pDrawLayer; }
+ SfxBroadcaster* GetDrawBroadcaster(); // zwecks Header-Vermeidung
+ void BeginDrawUndo();
+
+ BOOL IsChart( SdrObject* pObject );
+ void UpdateAllCharts( BOOL bDoUpdate = TRUE );
+ void UpdateChartRef( UpdateRefMode eUpdateRefMode,
+ USHORT nCol1, USHORT nRow1, USHORT nTab1,
+ USHORT nCol2, USHORT nRow2, USHORT nTab2,
+ short nDx, short nDy, short nDz );
+ //! setzt nur die neue RangeList, keine ChartListener o.ae.
+ void SetChartRangeList( const String& rChartName,
+ const ScRangeListRef& rNewRangeListRef );
+
+ BOOL HasControl( USHORT nTab, const Rectangle& rMMRect );
+ void InvalidateControls( Window* pWin, USHORT nTab, const Rectangle& rMMRect );
+
+ void StopAnimations( USHORT nTab, Window* pWin );
+ void StartAnimations( USHORT nTab, Window* pWin );
+
+ BOOL HasBackgroundDraw( USHORT nTab, const Rectangle& rMMRect );
+ BOOL HasAnyDraw( USHORT nTab, const Rectangle& rMMRect );
+
+ ScOutlineTable* GetOutlineTable( USHORT nTab, BOOL bCreate = FALSE );
+ BOOL SetOutlineTable( USHORT nTab, const ScOutlineTable* pNewOutline );
+
+ void DoAutoOutline( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow, USHORT nTab );
+
+ BOOL DoSubTotals( USHORT nTab, ScSubTotalParam& rParam );
+ void RemoveSubTotals( USHORT nTab, ScSubTotalParam& rParam );
+ BOOL TestRemoveSubTotals( USHORT nTab, const ScSubTotalParam& rParam );
+
+ void PutCell( const ScAddress&, ScBaseCell* pCell, BOOL bForceTab = FALSE );
+ void PutCell( const ScAddress&, ScBaseCell* pCell,
+ ULONG nFormatIndex, BOOL bForceTab = FALSE);
+ void PutCell( USHORT nCol, USHORT nRow, USHORT nTab, ScBaseCell* pCell,
+ BOOL bForceTab = FALSE );
+ void PutCell(USHORT nCol, USHORT nRow, USHORT nTab, ScBaseCell* pCell,
+ ULONG nFormatIndex, BOOL bForceTab = FALSE);
+ // return TRUE = Zahlformat gesetzt
+ BOOL SetString( USHORT nCol, USHORT nRow, USHORT nTab, const String& rString );
+ void SetValue( USHORT nCol, USHORT nRow, USHORT nTab, const double& rVal );
+ void SetNote( USHORT nCol, USHORT nRow, USHORT nTab, const ScPostIt& rNote );
+ void SetError( USHORT nCol, USHORT nRow, USHORT nTab, const USHORT nError);
+
+ void PutVariable( USHORT nCol, USHORT nRow, USHORT nTab,
+ const ODbVariant* pVar, long nType, // enum SdbDatabaseType
+ BOOL* pSimpleFlag );
+
+ void InsertMatrixFormula(USHORT nCol1, USHORT nRow1,
+ USHORT nCol2, USHORT nRow2,
+ const ScMarkData& rMark,
+ const String& rFormula,
+ const ScTokenArray* p = NULL );
+ void InsertTableOp(const ScTabOpParam& rParam, // Mehrfachoperation
+ USHORT nCol1, USHORT nRow1,
+ USHORT nCol2, USHORT nRow2, const ScMarkData& rMark);
+
+ void GetString( USHORT nCol, USHORT nRow, USHORT nTab, String& rString );
+ void GetInputString( USHORT nCol, USHORT nRow, USHORT nTab, String& rString );
+ double GetValue( const ScAddress& );
+ void GetValue( USHORT nCol, USHORT nRow, USHORT nTab, double& rValue );
+ double RoundValueAsShown( double fVal, ULONG nFormat );
+ void GetNumberFormat( USHORT nCol, USHORT nRow, USHORT nTab,
+ ULONG& rFormat );
+ ULONG GetNumberFormat( const ScAddress& ) const;
+ /// if no number format attribute is set the calculated
+ /// number format of the formula cell is returned
+ void GetNumberFormatInfo( short& nType, ULONG& nIndex,
+ const ScAddress& rPos, const ScFormulaCell& rFCell ) const;
+ void GetFormula( USHORT nCol, USHORT nRow, USHORT nTab, String& rFormula,
+ BOOL bAsciiExport = FALSE ) const;
+ BOOL GetNote( USHORT nCol, USHORT nRow, USHORT nTab, ScPostIt& rNote);
+ void GetCellType( USHORT nCol, USHORT nRow, USHORT nTab, CellType& rCellType ) const;
+ CellType GetCellType( const ScAddress& rPos ) const;
+ void GetCell( USHORT nCol, USHORT nRow, USHORT nTab, ScBaseCell*& rpCell ) const;
+ ScBaseCell* GetCell( const ScAddress& rPos ) const;
+
+ void RefreshNoteFlags();
+ BOOL HasNoteObject( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+
+ BOOL HasData( USHORT nCol, USHORT nRow, USHORT nTab );
+ BOOL HasStringData( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+ BOOL HasValueData( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+ USHORT GetErrorData(USHORT nCol, USHORT nRow, USHORT nTab) const;
+ BOOL HasStringCells( const ScRange& rRange ) const;
+
+ BOOL ExtendMerge( USHORT nStartCol, USHORT nStartRow,
+ USHORT& rEndCol, USHORT& rEndRow, USHORT nTab,
+ BOOL bRefresh = FALSE, BOOL bAttrs = FALSE );
+ BOOL ExtendMerge( ScRange& rRange, BOOL bRefresh = FALSE, BOOL bAttrs = FALSE );
+ BOOL ExtendTotalMerge( ScRange& rRange );
+ BOOL ExtendOverlapped( USHORT& rStartCol, USHORT& rStartRow,
+ USHORT nEndCol, USHORT nEndRow, USHORT nTab );
+ BOOL ExtendOverlapped( ScRange& rRange );
+
+ BOOL RefreshAutoFilter( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow, USHORT nTab );
+
+ void DoMergeContents( USHORT nTab, USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow );
+ // ohne Ueberpruefung:
+ void DoMerge( USHORT nTab, USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow );
+ void RemoveMerge( USHORT nCol, USHORT nRow, USHORT nTab );
+
+ BOOL IsBlockEmpty( USHORT nTab, USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow ) const;
+ BOOL IsPrintEmpty( USHORT nTab, USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ BOOL bLeftIsEmpty = FALSE,
+ ScRange* pLastRange = NULL,
+ Rectangle* pLastMM = NULL ) const;
+
+ BOOL IsOverlapped( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+ BOOL IsHorOverlapped( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+ BOOL IsVerOverlapped( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+
+ BOOL HasAttrib( USHORT nCol1, USHORT nRow1, USHORT nTab1,
+ USHORT nCol2, USHORT nRow2, USHORT nTab2, USHORT nMask );
+ BOOL HasAttrib( const ScRange& rRange, USHORT nMask );
+
+ BOOL HasLines( const ScRange& rRange, Rectangle& rSizes ) const;
+
+ void GetBorderLines( USHORT nCol, USHORT nRow, USHORT nTab,
+ const SvxBorderLine** ppLeft,
+ const SvxBorderLine** ppTop,
+ const SvxBorderLine** ppRight,
+ const SvxBorderLine** ppBottom ) const;
+
+ void ResetChanged( const ScRange& rRange );
+
+ void SetDirty();
+ void SetDirty( const ScRange& );
+ void SetDirtyVar();
+ void CalcAll();
+ void CalcAfterLoad();
+ void CompileAll();
+ void CompileXML();
+
+ // Automatisch Berechnen
+ void SetAutoCalc( BOOL bNewAutoCalc );
+ BOOL GetAutoCalc() const { return bAutoCalc; }
+ // Automatisch Berechnen in/von/fuer ScDocShell disabled
+ void SetAutoCalcShellDisabled( BOOL bNew ) { bAutoCalcShellDisabled = bNew; }
+ BOOL IsAutoCalcShellDisabled() const { return bAutoCalcShellDisabled; }
+ // ForcedFormulas zu berechnen
+ void SetForcedFormulaPending( BOOL bNew ) { bForcedFormulaPending = bNew; }
+ BOOL IsForcedFormulaPending() const { return bForcedFormulaPending; }
+
+ void GetErrCode( USHORT nCol, USHORT nRow, USHORT nTab, USHORT& rErrCode );
+ USHORT GetErrCode( const ScAddress& ) const;
+
+ void GetDataArea( USHORT nTab, USHORT& rStartCol, USHORT& rStartRow,
+ USHORT& rEndCol, USHORT& rEndRow, BOOL bIncludeOld );
+ BOOL GetCellArea( USHORT nTab, USHORT& rEndCol, USHORT& rEndRow ) const;
+ BOOL GetTableArea( USHORT nTab, USHORT& rEndCol, USHORT& rEndRow ) const;
+ BOOL GetPrintArea( USHORT nTab, USHORT& rEndCol, USHORT& rEndRow,
+ BOOL bNotes = TRUE ) const;
+ BOOL GetPrintAreaHor( USHORT nTab, USHORT nStartRow, USHORT nEndRow,
+ USHORT& rEndCol, BOOL bNotes = TRUE ) const;
+ BOOL GetPrintAreaVer( USHORT nTab, USHORT nStartCol, USHORT nEndCol,
+ USHORT& rEndRow, BOOL bNotes = TRUE ) const;
+ void InvalidateTableArea();
+
+ BOOL GetDataStart( USHORT nTab, USHORT& rStartCol, USHORT& rStartRow ) const;
+
+ void ExtendPrintArea( OutputDevice* pDev, USHORT nTab,
+ USHORT nStartCol, USHORT nStartRow,
+ USHORT& rEndCol, USHORT nEndRow );
+
+ USHORT GetEmptyLinesInBlock( USHORT nStartCol, USHORT nStartRow, USHORT nStartTab,
+ USHORT nEndCol, USHORT nEndRow, USHORT nEndTab,
+ ScDirection eDir );
+
+ void FindAreaPos( USHORT& rCol, USHORT& rRow, USHORT nTab, short nMovX, short nMovY );
+ void GetNextPos( USHORT& rCol, USHORT& rRow, USHORT nTab, short nMovX, short nMovY,
+ BOOL bMarked, BOOL bUnprotected, const ScMarkData& rMark );
+
+ BOOL GetNextMarkedCell( USHORT& rCol, USHORT& rRow, USHORT nTab,
+ const ScMarkData& rMark );
+
+ void LimitChartArea( USHORT nTab, USHORT& rStartCol, USHORT& rStartRow,
+ USHORT& rEndCol, USHORT& rEndRow );
+ void LimitChartIfAll( ScRangeListRef& rRangeList );
+
+ BOOL InsertRow( USHORT nStartCol, USHORT nStartTab,
+ USHORT nEndCol, USHORT nEndTab,
+ USHORT nStartRow, USHORT nSize );
+ BOOL InsertRow( const ScRange& rRange );
+ void DeleteRow( USHORT nStartCol, USHORT nStartTab,
+ USHORT nEndCol, USHORT nEndTab,
+ USHORT nStartRow, USHORT nSize,
+ ScDocument* pRefUndoDoc = NULL, BOOL* pUndoOutline = NULL );
+ void DeleteRow( const ScRange& rRange,
+ ScDocument* pRefUndoDoc = NULL, BOOL* pUndoOutline = NULL );
+ BOOL InsertCol( USHORT nStartRow, USHORT nStartTab,
+ USHORT nEndRow, USHORT nEndTab,
+ USHORT nStartCol, USHORT nSize );
+ BOOL InsertCol( const ScRange& rRange );
+ void DeleteCol( USHORT nStartRow, USHORT nStartTab,
+ USHORT nEndRow, USHORT nEndTab,
+ USHORT nStartCol, USHORT nSize,
+ ScDocument* pRefUndoDoc = NULL, BOOL* pUndoOutline = NULL );
+ void DeleteCol( const ScRange& rRange,
+ ScDocument* pRefUndoDoc = NULL, BOOL* pUndoOutline = NULL );
+
+ BOOL CanInsertRow( const ScRange& rRange ) const;
+ BOOL CanInsertCol( const ScRange& rRange ) const;
+
+ void FitBlock( const ScRange& rOld, const ScRange& rNew, BOOL bClear = TRUE );
+ BOOL CanFitBlock( const ScRange& rOld, const ScRange& rNew );
+
+ BOOL IsClipOrUndo() const { return bIsClip || bIsUndo; }
+ BOOL IsUndo() const { return bIsUndo; }
+ BOOL IsClipboard() const { return bIsClip; }
+ void ResetClip( ScDocument* pSourceDoc, const ScMarkData* pMarks );
+ void ResetClip( ScDocument* pSourceDoc, USHORT nTab );
+ void SetCutMode( BOOL bCut );
+ BOOL IsCutMode();
+ void SetClipArea( const ScRange& rArea, BOOL bCut = FALSE );
+
+ void DeleteObjectsInArea( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ const ScMarkData& rMark );
+ void DeleteObjectsInSelection( const ScMarkData& rMark );
+ void DeleteObjects( USHORT nTab );
+
+ void DeleteArea(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ const ScMarkData& rMark, USHORT nDelFlag);
+ void DeleteAreaTab(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nTab, USHORT nDelFlag);
+ void DeleteAreaTab(const ScRange& rRange, USHORT nDelFlag);
+ void CopyToClip(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ BOOL bCut, ScDocument* pClipDoc, BOOL bAllTabs,
+ const ScMarkData* pMarks = NULL, BOOL bKeepScenarioFlags=FALSE);
+ void CopyTabToClip(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nTab, ScDocument* pClipDoc = NULL);
+ void CopyBlockFromClip( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ const ScMarkData& rMark, short nDx, short nDy,
+ const ScCopyBlockFromClipParams* pCBFCP );
+ void StartListeningFromClip( USHORT nCol1, USHORT nRow1,
+ USHORT nCol2, USHORT nRow2,
+ const ScMarkData& rMark, USHORT nInsFlag );
+ void BroadcastFromClip( USHORT nCol1, USHORT nRow1,
+ USHORT nCol2, USHORT nRow2,
+ const ScMarkData& rMark, USHORT nInsFlag );
+ void CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMark,
+ USHORT nInsFlag,
+ ScDocument* pRefUndoDoc = NULL,
+ ScDocument* pClipDoc = NULL,
+ BOOL bResetCut = TRUE,
+ BOOL bAsLink = FALSE );
+
+ void GetClipArea(USHORT& nClipX, USHORT& nClipY);
+ void GetClipStart(USHORT& nClipX, USHORT& nClipY);
+
+ BOOL IsClipboardSource() const;
+
+ void TransposeClip( ScDocument* pTransClip, USHORT nFlags, BOOL bAsLink );
+
+ void MixDocument( const ScRange& rRange, USHORT nFunction, BOOL bSkipEmpty,
+ ScDocument* pSrcDoc );
+
+ void FillTab( const ScRange& rSrcArea, const ScMarkData& rMark,
+ USHORT nFlags, USHORT nFunction,
+ BOOL bSkipEmpty, BOOL bAsLink );
+ void FillTabMarked( USHORT nSrcTab, const ScMarkData& rMark,
+ USHORT nFlags, USHORT nFunction,
+ BOOL bSkipEmpty, BOOL bAsLink );
+
+ void InitUndo( ScDocument* pSrcDoc, USHORT nTab1, USHORT nTab2,
+ BOOL bColInfo = FALSE, BOOL bRowInfo = FALSE );
+ void AddUndoTab( USHORT nTab1, USHORT nTab2,
+ BOOL bColInfo = FALSE, BOOL bRowInfo = FALSE );
+
+ // nicht mehr benutzen:
+ void CopyToDocument(USHORT nCol1, USHORT nRow1, USHORT nTab1,
+ USHORT nCol2, USHORT nRow2, USHORT nTab2,
+ USHORT nFlags, BOOL bMarked, ScDocument* pDestDoc,
+ const ScMarkData* pMarks = NULL, BOOL bColRowFlags = TRUE);
+ void UndoToDocument(USHORT nCol1, USHORT nRow1, USHORT nTab1,
+ USHORT nCol2, USHORT nRow2, USHORT nTab2,
+ USHORT nFlags, BOOL bMarked, ScDocument* pDestDoc,
+ const ScMarkData* pMarks = NULL);
+
+ void CopyToDocument(const ScRange& rRange,
+ USHORT nFlags, BOOL bMarked, ScDocument* pDestDoc,
+ const ScMarkData* pMarks = NULL, BOOL bColRowFlags = TRUE);
+ void UndoToDocument(const ScRange& rRange,
+ USHORT nFlags, BOOL bMarked, ScDocument* pDestDoc,
+ const ScMarkData* pMarks = NULL);
+
+ void CopyScenario( USHORT nSrcTab, USHORT nDestTab, BOOL bNewScenario = FALSE );
+ BOOL TestCopyScenario( USHORT nSrcTab, USHORT nDestTab ) const;
+ void MarkScenario( USHORT nSrcTab, USHORT nDestTab,
+ ScMarkData& rDestMark, BOOL bResetMark = TRUE,
+ USHORT nNeededBits = 0 ) const;
+ BOOL HasScenarioRange( USHORT nTab, const ScRange& rRange ) const;
+ const ScRangeList* GetScenarioRanges( USHORT nTab ) const;
+
+ void CopyUpdated( ScDocument* pPosDoc, ScDocument* pDestDoc );
+
+ void UpdateReference( UpdateRefMode eUpdateRefMode, USHORT nCol1, USHORT nRow1, USHORT nTab1,
+ USHORT nCol2, USHORT nRow2, USHORT nTab2,
+ short nDx, short nDy, short nDz, ScDocument* pUndoDoc = NULL );
+
+ void UpdateTranspose( const ScAddress& rDestPos, ScDocument* pClipDoc,
+ const ScMarkData& rMark, ScDocument* pUndoDoc = NULL );
+
+ void UpdateGrow( const ScRange& rArea, USHORT nGrowX, USHORT nGrowY );
+
+ void Fill( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ const ScMarkData& rMark,
+ USHORT nFillCount, FillDir eFillDir = FILL_TO_BOTTOM,
+ FillCmd eFillCmd = FILL_LINEAR, FillDateCmd eFillDateCmd = FILL_DAY,
+ double nStepValue = 1.0, double nMaxValue = 1E307);
+ String GetAutoFillPreview( const ScRange& rSource, USHORT nEndX, USHORT nEndY );
+
+ BOOL GetSelectionFunction( ScSubTotalFunc eFunc,
+ const ScAddress& rCursor, const ScMarkData& rMark,
+ double& rResult );
+
+ const SfxPoolItem* GetAttr( USHORT nCol, USHORT nRow, USHORT nTab, USHORT nWhich ) const;
+ const ScPatternAttr* GetPattern( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+ const ScPatternAttr* GetSelectionPattern( const ScMarkData& rMark, BOOL bDeep = TRUE );
+ ScPatternAttr* CreateSelectionPattern( const ScMarkData& rMark, BOOL bDeep = TRUE );
+
+ const ScConditionalFormat* GetCondFormat( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+ const SfxItemSet* GetCondResult( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+ const SfxPoolItem* GetEffItem( USHORT nCol, USHORT nRow, USHORT nTab, USHORT nWhich ) const;
+
+ BOOL HasDetectiveOperations() const;
+ void AddDetectiveOperation( const ScDetOpData& rData );
+ void ClearDetectiveOperations();
+ ScDetOpList* GetDetOpList() const { return pDetOpList; }
+ void SetDetOpList(ScDetOpList* pNew);
+
+ void GetSelectionFrame( const ScMarkData& rMark,
+ SvxBoxItem& rLineOuter,
+ SvxBoxInfoItem& rLineInner );
+ void ApplySelectionFrame( const ScMarkData& rMark,
+ const SvxBoxItem* pLineOuter,
+ const SvxBoxInfoItem* pLineInner );
+
+ void ClearSelectionItems( const USHORT* pWhich, const ScMarkData& rMark );
+ void ChangeSelectionIndent( BOOL bIncrement, const ScMarkData& rMark );
+
+ ULONG AddCondFormat( const ScConditionalFormat& rNew );
+ void FindConditionalFormat( ULONG nKey, ScRangeList& rRanges );
+ void ConditionalChanged( ULONG nKey );
+ void SetConditionalUsed( ULONG nKey ); // beim Speichern
+
+ ULONG AddValidationEntry( const ScValidationData& rNew );
+ void SetValidationUsed( ULONG nKey ); // beim Speichern
+
+ const ScValidationData* GetValidationEntry( ULONG nIndex ) const;
+
+ ScConditionalFormatList* GetCondFormList() const // Ref-Undo
+ { return pCondFormList; }
+ void SetCondFormList(ScConditionalFormatList* pNew);
+
+ ScValidationDataList* GetValidationList() const
+ { return pValidationList; }
+
+ void ApplyAttr( USHORT nCol, USHORT nRow, USHORT nTab,
+ const SfxPoolItem& rAttr );
+ void ApplyPattern( USHORT nCol, USHORT nRow, USHORT nTab,
+ const ScPatternAttr& rAttr );
+ void ApplyPatternArea( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ const ScMarkData& rMark, const ScPatternAttr& rAttr );
+ void ApplyPatternAreaTab( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow, USHORT nTab,
+ const ScPatternAttr& rAttr );
+ void ApplyPatternIfNumberformatIncompatible(
+ const ScRange& rRange, const ScMarkData& rMark,
+ const ScPatternAttr& rPattern, short nNewType );
+
+ void ApplyStyle( USHORT nCol, USHORT nRow, USHORT nTab,
+ const ScStyleSheet& rStyle);
+ void ApplyStyleArea( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ const ScMarkData& rMark, const ScStyleSheet& rStyle);
+ void ApplyStyleAreaTab( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow, USHORT nTab,
+ const ScStyleSheet& rStyle);
+
+ void ApplySelectionStyle( const ScStyleSheet& rStyle, const ScMarkData& rMark );
+ void ApplySelectionLineStyle( const ScMarkData& rMark,
+ const SvxBorderLine* pLine, BOOL bColorOnly );
+
+ const ScStyleSheet* GetStyle( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+ const ScStyleSheet* GetSelectionStyle( const ScMarkData& rMark ) const;
+
+ void StyleSheetChanged( const SfxStyleSheetBase* pStyleSheet, BOOL bRemoved,
+ OutputDevice* pDev,
+ double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY );
+
+ BOOL IsStyleSheetUsed( const SfxStyleSheetBase& rStyle ) const;
+
+ // Rueckgabe TRUE bei ApplyFlags: Wert geaendert
+ BOOL ApplyFlags( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ const ScMarkData& rMark, INT16 nFlags );
+ BOOL ApplyFlagsTab( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ USHORT nTab, INT16 nFlags );
+ BOOL RemoveFlags( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ const ScMarkData& rMark, INT16 nFlags );
+ BOOL RemoveFlagsTab( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ USHORT nTab, INT16 nFlags );
+
+ void SetPattern( const ScAddress&, const ScPatternAttr& rAttr,
+ BOOL bPutToPool = FALSE );
+ void SetPattern( USHORT nCol, USHORT nRow, USHORT nTab, const ScPatternAttr& rAttr,
+ BOOL bPutToPool = FALSE );
+ void DeleteNumberFormat( const ULONG* pDelKeys, ULONG nCount );
+
+ void AutoFormat( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ USHORT nFormatNo, const ScMarkData& rMark );
+ void GetAutoFormatData( USHORT nTab, USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ ScAutoFormatData& rData );
+ BOOL SearchAndReplace( const SvxSearchItem& rSearchItem,
+ USHORT& rCol, USHORT& rRow, USHORT& rTab,
+ ScMarkData& rMark,
+ String& rUndoStr, ScDocument* pUndoDoc = NULL );
+
+ // Col/Row von Folgeaufrufen bestimmen
+ // (z.B. nicht gefunden von Anfang, oder folgende Tabellen)
+ static void GetSearchAndReplaceStart( const SvxSearchItem& rSearchItem,
+ USHORT& rCol, USHORT& rRow );
+
+ BOOL Solver(USHORT nFCol, USHORT nFRow, USHORT nFTab,
+ USHORT nVCol, USHORT nVRow, USHORT nVTab,
+ const String& sValStr, double& nX);
+
+ void ApplySelectionPattern( const ScPatternAttr& rAttr, const ScMarkData& rMark );
+ void DeleteSelection( USHORT nDelFlag, const ScMarkData& rMark );
+ void DeleteSelectionTab( USHORT nTab, USHORT nDelFlag, const ScMarkData& rMark );
+
+ //
+
+ void SetColWidth( USHORT nCol, USHORT nTab, USHORT nNewWidth );
+ void SetRowHeight( USHORT nRow, USHORT nTab, USHORT nNewHeight );
+ void SetRowHeightRange( USHORT nStartRow, USHORT nEndRow, USHORT nTab,
+ USHORT nNewHeight );
+ void SetManualHeight( USHORT nStartRow, USHORT nEndRow, USHORT nTab, BOOL bManual );
+
+ USHORT GetColWidth( USHORT nCol, USHORT nTab ) const;
+ USHORT GetRowHeight( USHORT nRow, USHORT nTab ) const;
+ ULONG GetColOffset( USHORT nCol, USHORT nTab ) const;
+ ULONG GetRowOffset( USHORT nRow, USHORT nTab ) const;
+
+ USHORT GetOriginalWidth( USHORT nCol, USHORT nTab ) const;
+
+ inline USHORT FastGetRowHeight( USHORT nRow, USHORT nTab ) const; // ohne Ueberpruefungen!
+
+ USHORT GetHiddenRowCount( USHORT nRow, USHORT nTab ) const;
+
+ USHORT GetOptimalColWidth( USHORT nCol, USHORT nTab, OutputDevice* pDev,
+ double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY,
+ BOOL bFormula,
+ const ScMarkData* pMarkData = NULL,
+ BOOL bSimpleTextImport = FALSE );
+ BOOL SetOptimalHeight( USHORT nStartRow, USHORT nEndRow, USHORT nTab, USHORT nExtra,
+ OutputDevice* pDev,
+ double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY,
+ BOOL bShrink );
+ long GetNeededSize( USHORT nCol, USHORT nRow, USHORT nTab,
+ OutputDevice* pDev,
+ double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY,
+ BOOL bWidth, BOOL bTotalSize = FALSE );
+
+ void ShowCol(USHORT nCol, USHORT nTab, BOOL bShow);
+ void ShowRow(USHORT nRow, USHORT nTab, BOOL bShow);
+ void ShowRows(USHORT nRow1, USHORT nRow2, USHORT nTab, BOOL bShow);
+ void SetColFlags( USHORT nCol, USHORT nTab, BYTE nNewFlags );
+ void SetRowFlags( USHORT nRow, USHORT nTab, BYTE nNewFlags );
+
+ BYTE GetColFlags( USHORT nCol, USHORT nTab ) const;
+ BYTE GetRowFlags( USHORT nRow, USHORT nTab ) const;
+
+ USHORT GetLastFlaggedCol( USHORT nTab ) const;
+ USHORT GetLastFlaggedRow( USHORT nTab ) const;
+
+ BOOL IsFiltered( USHORT nRow, USHORT nTab ) const;
+
+ BOOL UpdateOutlineCol( USHORT nStartCol, USHORT nEndCol, USHORT nTab, BOOL bShow );
+ BOOL UpdateOutlineRow( USHORT nStartRow, USHORT nEndRow, USHORT nTab, BOOL bShow );
+
+ void StripHidden( USHORT& rX1, USHORT& rY1, USHORT& rX2, USHORT& rY2, USHORT nTab );
+ void ExtendHidden( USHORT& rX1, USHORT& rY1, USHORT& rX2, USHORT& rY2, USHORT nTab );
+
+ ScPatternAttr* GetDefPattern() const;
+ ScDocumentPool* GetPool();
+ ScStyleSheetPool* GetStyleSheetPool() const;
+
+ // PageStyle:
+ const String& GetPageStyle( USHORT nTab ) const;
+ void SetPageStyle( USHORT nTab, const String& rName );
+ Size GetPageSize( USHORT nTab ) const;
+ void SetPageSize( USHORT nTab, const Size& rSize );
+ void SetRepeatArea( USHORT nTab, USHORT nStartCol, USHORT nEndCol, USHORT nStartRow, USHORT nEndRow );
+ void UpdatePageBreaks();
+ void UpdatePageBreaks( USHORT nTab, const ScRange* pUserArea = NULL );
+ void RemoveManualBreaks( USHORT nTab );
+ BOOL HasManualBreaks( USHORT nTab ) const;
+
+ BOOL IsPageStyleInUse( const String& rStrPageStyle, USHORT* pInTab = NULL );
+ BOOL RemovePageStyleInUse( const String& rStrPageStyle );
+ BOOL RenamePageStyleInUse( const String& rOld, const String& rNew );
+ void ModifyStyleSheet( SfxStyleSheetBase& rPageStyle,
+ const SfxItemSet& rChanges );
+
+ void PageStyleModified( USHORT nTab, const String& rNewName );
+
+ BOOL NeedPageResetAfterTab( USHORT nTab ) const;
+
+ // war vorher im PageStyle untergracht. Jetzt an jeder Tabelle:
+ BOOL HasPrintRange();
+ USHORT GetPrintRangeCount( USHORT nTab );
+ const ScRange* GetPrintRange( USHORT nTab, USHORT nPos );
+ const ScRange* GetRepeatColRange( USHORT nTab );
+ const ScRange* GetRepeatRowRange( USHORT nTab );
+ void SetPrintRangeCount( USHORT nTab, USHORT nNew );
+ void SetPrintRange( USHORT nTab, USHORT nPos, const ScRange& rNew );
+ void SetRepeatColRange( USHORT nTab, const ScRange* pNew );
+ void SetRepeatRowRange( USHORT nTab, const ScRange* pNew );
+ ScPrintRangeSaver* CreatePrintRangeSaver() const;
+ void RestorePrintRanges( const ScPrintRangeSaver& rSaver );
+
+ Rectangle GetMMRect( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow, USHORT nTab );
+ ScRange GetRange( USHORT nTab, const Rectangle& rMMRect );
+
+ BOOL LoadPool( SvStream& rStream, BOOL bLoadRefCounts );
+ BOOL SavePool( SvStream& rStream ) const;
+
+ BOOL Load( SvStream& rStream, ScProgress* pProgress );
+ BOOL Save( SvStream& rStream, ScProgress* pProgress ) const;
+
+ void UpdStlShtPtrsFrmNms();
+ void StylesToNames();
+
+ void CopyStdStylesFrom( ScDocument* pSrcDoc );
+
+ CharSet GetSrcCharSet() const { return eSrcSet; }
+ ULONG GetSrcVersion() const { return nSrcVer; }
+ USHORT GetSrcMaxRow() const { return nSrcMaxRow; }
+
+ void SetLostData();
+ BOOL HasLostData() const { return bLostData; }
+
+ void SetSrcCharSet( CharSet eNew ) { eSrcSet = eNew; }
+ void UpdateFontCharSet();
+
+ friend SvStream& operator>>( SvStream& rStream, ScDocument& rDocument );
+ friend SvStream& operator<<( SvStream& rStream, const ScDocument& rDocument );
+
+ USHORT FillInfo( RowInfo* pRowInfo, USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ USHORT nTab, double nScaleX, double nScaleY,
+ BOOL bPageMode, BOOL bFormulaMode,
+ const ScMarkData* pMarkData = NULL );
+
+ SvNumberFormatter* GetFormatTable() const { return pFormTable; }
+
+ void Sort( USHORT nTab, const ScSortParam& rSortParam, BOOL bKeepQuery );
+ USHORT Query( USHORT nTab, const ScQueryParam& rQueryParam, BOOL bKeepSub );
+ BOOL ValidQuery( USHORT nRow, USHORT nTab, const ScQueryParam& rQueryParam );
+ BOOL CreateQueryParam( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nTab, ScQueryParam& rQueryParam );
+ void GetUpperCellString(USHORT nCol, USHORT nRow, USHORT nTab, String& rStr);
+
+ BOOL GetFilterEntries( USHORT nCol, USHORT nRow, USHORT nTab,
+ TypedStrCollection& rStrings );
+ BOOL GetFilterEntriesArea( USHORT nCol, USHORT nStartRow, USHORT nEndRow,
+ USHORT nTab, TypedStrCollection& rStrings );
+ BOOL GetDataEntries( USHORT nCol, USHORT nRow, USHORT nTab,
+ TypedStrCollection& rStrings, BOOL bLimit = FALSE );
+ BOOL GetFormulaEntries( TypedStrCollection& rStrings );
+
+ BOOL HasAutoFilter( USHORT nCol, USHORT nRow, USHORT nTab );
+
+ BOOL HasColHeader( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ USHORT nTab );
+ BOOL HasRowHeader( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ USHORT nTab );
+
+ SfxPrinter* GetPrinter();
+ void SetPrinter( SfxPrinter* pNewPrinter );
+ void EraseNonUsedSharedNames(USHORT nLevel);
+ BOOL GetNextSpellingCell(USHORT& nCol, USHORT& nRow, USHORT nTab,
+ BOOL bInSel, const ScMarkData& rMark) const;
+
+ BOOL ReplaceStyle(const SvxSearchItem& rSearchItem,
+ USHORT nCol, USHORT nRow, USHORT nTab,
+ ScMarkData& rMark, BOOL bIsUndo);
+
+ void DoColResize( USHORT nTab, USHORT nCol1, USHORT nCol2, USHORT nAdd );
+
+ // Idleberechnung der OutputDevice-Zelltextbreite
+ BOOL IsLoadingDone() const { return bLoadingDone; }
+ void InvalidateTextWidth( const String& rStyleName );
+ void InvalidateTextWidth( USHORT nTab );
+ void InvalidateTextWidth( const ScAddress* pAdrFrom = NULL,
+ const ScAddress* pAdrTo = NULL,
+ BOOL bBroadcast = FALSE );
+
+ BOOL IdleCalcTextWidth();
+ BOOL IdleCheckLinks();
+
+ BOOL ContinueOnlineSpelling(); // TRUE = etwas gefunden
+
+ BOOL IsIdleDisabled() const { return bIdleDisabled; }
+ void DisableIdle(BOOL bDo) { bIdleDisabled = bDo; }
+
+ BOOL IsDetectiveDirty() const { return bDetectiveDirty; }
+ void SetDetectiveDirty(BOOL bSet) { bDetectiveDirty = bSet; }
+
+ void RemoveAutoSpellObj();
+ void SetOnlineSpellPos( const ScAddress& rPos );
+ BOOL SetVisibleSpellRange( const ScRange& rRange ); // TRUE = changed
+
+ BYTE GetMacroCallMode() const { return nMacroCallMode; }
+ void SetMacroCallMode(BYTE nNew) { nMacroCallMode = nNew; }
+
+ BOOL GetHasMacroFunc() const { return bHasMacroFunc; }
+ void SetHasMacroFunc(BOOL bSet) { bHasMacroFunc = bSet; }
+
+ BOOL HasMacroCallsAfterLoad();
+ BOOL CheckMacroWarn();
+
+ // fuer Broadcasting/Listening
+ void SetNoSetDirty( BOOL bVal ) { bNoSetDirty = bVal; }
+ BOOL GetNoSetDirty() const { return bNoSetDirty; }
+ void SetInsertingFromOtherDoc( BOOL bVal ) { bInsertingFromOtherDoc = bVal; }
+ BOOL IsInsertingFromOtherDoc() const { return bInsertingFromOtherDoc; }
+ void SetImportingXML( BOOL bVal ) { bImportingXML = bVal; }
+ BOOL IsImportingXML() const { return bImportingXML; }
+ void SetCalcingAfterLoad( BOOL bVal ) { bCalcingAfterLoad = bVal; }
+ BOOL IsCalcingAfterLoad() const { return bCalcingAfterLoad; }
+ void SetNoListening( BOOL bVal ) { bNoListening = bVal; }
+ BOOL GetNoListening() const { return bNoListening; }
+
+ ScChartListenerCollection* GetChartListenerCollection() const
+ { return pChartListenerCollection; }
+ void SetChartListenerCollection( ScChartListenerCollection*,
+ BOOL bSetChartRangeLists = FALSE );
+ void UpdateChart( const String& rName, Window* pWin );
+ void UpdateChartListenerCollection();
+ BOOL IsChartListenerCollectionNeedsUpdate() const
+ { return bChartListenerCollectionNeedsUpdate; }
+ void SetChartListenerCollectionNeedsUpdate( BOOL bFlg )
+ { bChartListenerCollectionNeedsUpdate = bFlg; }
+
+ ScChangeViewSettings* GetChangeViewSettings() const { return pChangeViewSettings; }
+ void SetChangeViewSettings(const ScChangeViewSettings& rNew);
+
+ ScLkUpdMode GetLinkMode() const { return eLinkMode ;}
+ void SetLinkMode( ScLkUpdMode nSet ) { eLinkMode = nSet;}
+
+
+private:
+ void SetAutoFilterFlags();
+ void FindMaxRotCol( USHORT nTab, RowInfo* pRowInfo, USHORT nArrCount,
+ USHORT nX1, USHORT nX2 ) const;
+
+ USHORT RowDifferences( USHORT nThisRow, USHORT nThisTab,
+ ScDocument& rOtherDoc,
+ USHORT nOtherRow, USHORT nOtherTab,
+ USHORT nMaxCol, USHORT* pOtherCols );
+ USHORT ColDifferences( USHORT nThisCol, USHORT nThisTab,
+ ScDocument& rOtherDoc,
+ USHORT nOtherCol, USHORT nOtherTab,
+ USHORT nMaxRow, USHORT* pOtherRows );
+ void FindOrder( USHORT* pOtherRows, USHORT nThisEndRow, USHORT nOtherEndRow,
+ BOOL bColumns,
+ ScDocument& rOtherDoc, USHORT nThisTab, USHORT nOtherTab,
+ USHORT nEndCol, USHORT* pTranslate,
+ ScProgress* pProgress, ULONG nProAdd );
+ BOOL OnlineSpellInRange( const ScRange& rSpellRange, ScAddress& rSpellPos,
+ USHORT nMaxTest );
+
+ DECL_LINK( TrackTimeHdl, Timer* );
+
+public:
+ void StartListeningArea( const ScRange& rRange,
+ SfxListener* pListener );
+ void EndListeningArea( const ScRange& rRange,
+ SfxListener* pListener );
+ void Broadcast( ULONG nHint, const ScAddress& rAddr,
+ ScBaseCell* pCell );
+ // wrapper, ruft pCell->Broadcast() und AreaBroadcast() und
+ // TrackFormulas()
+ void DelBroadcastAreasInRange( const ScRange& rRange );
+ void UpdateBroadcastAreas( UpdateRefMode eUpdateRefMode,
+ const ScRange& rRange,
+ short nDx, short nDy, short nDz );
+
+
+ void StartListeningCell( const ScAddress& rAddress,
+ SfxListener* pListener );
+ void EndListeningCell( const ScAddress& rAddress,
+ SfxListener* pListener );
+ void PutInFormulaTree( ScFormulaCell* pCell );
+ void RemoveFromFormulaTree( ScFormulaCell* pCell );
+ void CalcFormulaTree( BOOL bOnlyForced = FALSE,
+ BOOL bNoProgressBar = FALSE );
+ void ClearFormulaTree();
+ void AppendToFormulaTrack( ScFormulaCell* pCell );
+ void RemoveFromFormulaTrack( ScFormulaCell* pCell );
+ void TrackFormulas();
+ USHORT GetFormulaTrackCount() const { return nFormulaTrackCount; }
+ BOOL IsInFormulaTree( ScFormulaCell* pCell ) const;
+ BOOL IsInFormulaTrack( ScFormulaCell* pCell ) const;
+ USHORT GetHardRecalcState() { return nHardRecalcState; }
+ void SetHardRecalcState( USHORT nVal ) { nHardRecalcState = nVal; }
+ void StartAllListeners();
+ const ScFormulaCell* GetFormulaTree() const { return pFormulaTree; }
+ BOOL HasForcedFormulas() const { return bHasForcedFormulas; }
+ void SetForcedFormulas( BOOL bVal ) { bHasForcedFormulas = bVal; }
+ ULONG GetFormulaCodeInTree() const { return nFormulaCodeInTree; }
+ BOOL IsInInterpreter() const { return nInterpretLevel != 0; }
+ USHORT GetInterpretLevel() { return nInterpretLevel; }
+ void IncInterpretLevel()
+ {
+ if ( nInterpretLevel < USHRT_MAX )
+ nInterpretLevel++;
+ }
+ void DecInterpretLevel()
+ {
+ if ( nInterpretLevel )
+ nInterpretLevel--;
+ }
+ BOOL IsInMacroInterpreter() const { return nMacroInterpretLevel != 0; }
+ USHORT GetMacroInterpretLevel() { return nMacroInterpretLevel; }
+ void IncMacroInterpretLevel()
+ {
+ if ( nMacroInterpretLevel < USHRT_MAX )
+ nMacroInterpretLevel++;
+ }
+ void DecMacroInterpretLevel()
+ {
+ if ( nMacroInterpretLevel )
+ nMacroInterpretLevel--;
+ }
+ BOOL IsInDtorClear() const { return bInDtorClear; }
+ void SetExpandRefs( BOOL bVal ) { bExpandRefs = bVal; }
+ BOOL IsExpandRefs() { return bExpandRefs; }
+
+ void IncSizeRecalcLevel( USHORT nTab );
+ void DecSizeRecalcLevel( USHORT nTab );
+
+ void StartTrackTimer();
+
+ void CompileDBFormula();
+ void CompileDBFormula( BOOL bCreateFormulaString );
+ void CompileNameFormula( BOOL bCreateFormulaString );
+ void CompileColRowNameFormula();
+
+ // maximale Stringlaengen einer Column, fuer z.B. dBase Export
+ xub_StrLen GetMaxStringLen( USHORT nTab, USHORT nCol,
+ USHORT nRowStart, USHORT nRowEnd ) const;
+ xub_StrLen GetMaxNumberStringLen( USHORT& nPrecision,
+ USHORT nTab, USHORT nCol,
+ USHORT nRowStart, USHORT nRowEnd ) const;
+
+ void KeyInput( const KeyEvent& rKEvt ); // TimerDelays etc.
+
+ ScChangeTrack* GetChangeTrack() const { return pChangeTrack; }
+
+ void StartChangeTracking();
+ void EndChangeTracking();
+
+ void CompareDocument( ScDocument& rOtherDoc );
+
+ void AddUnoObject( SfxListener& rObject );
+ void RemoveUnoObject( SfxListener& rObject );
+ void BroadcastUno( const SfxHint &rHint );
+
+ void SetInLinkUpdate(BOOL bSet); // TableLink or AreaLink
+ BOOL IsInLinkUpdate() const; // including DdeLink
+
+ SfxItemPool* GetEditPool() const { return pEditPool; }
+ SfxItemPool* GetEnginePool() const { return pEnginePool; }
+ ScFieldEditEngine& GetEditEngine();
+
+private: // CLOOK-Impl-Methoden
+ void ImplLoadDocOptions( SvStream& rStream );
+ void ImplLoadViewOptions( SvStream& rStream );
+ void ImplSaveDocOptions( SvStream& rStream ) const;
+ void ImplSaveViewOptions( SvStream& rStream ) const;
+ void ImplCreateOptions(); // bei Gelegenheit auf on-demand umstellen?
+ void ImplDeleteOptions();
+
+ void DeleteDrawLayer();
+ void DeleteColorTable();
+ void LoadDrawLayer(SvStream& rStream);
+ void StoreDrawLayer(SvStream& rStream) const;
+ BOOL DrawGetPrintArea( ScRange& rRange, BOOL bSetHor, BOOL bSetVer ) const;
+ void DrawMovePage( USHORT nOldPos, USHORT nNewPos );
+ void DrawCopyPage( USHORT nOldPos, USHORT nNewPos );
+
+ void UpdateDrawPrinter();
+ void InitClipPtrs( ScDocument* pSourceDoc );
+
+ void LoadDdeLinks(SvStream& rStream);
+ void SaveDdeLinks(SvStream& rStream) const;
+ void LoadAreaLinks(SvStream& rStream);
+ void SaveAreaLinks(SvStream& rStream) const;
+
+ BOOL HasPartOfMerged( const ScRange& rRange );
+};
+
+
+inline USHORT ScDocument::FastGetRowHeight( USHORT nRow, USHORT nTab ) const
+{
+ return ( pTab[nTab]->pRowFlags[nRow] & CR_HIDDEN ) ? 0 : pTab[nTab]->pRowHeight[nRow];
+}
+
+
+
+#endif
+
+
diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
new file mode 100644
index 000000000000..0b38a340b9a1
--- /dev/null
+++ b/sc/inc/docuno.hxx
@@ -0,0 +1,775 @@
+/*************************************************************************
+ *
+ * $RCSfile: docuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DOCUNO_HXX
+#define SC_DOCUNO_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScRange, ScAddress
+#endif
+
+#ifndef _SFX_OBJUNO_HXX
+#include <sfx2/sfxbasemodel.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _SVX_FMDMOD_HXX //autogen
+#include <svx/fmdmod.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_STYLE_XSTYLEFAMILIESSUPPLIER_HPP_
+#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DOCUMENT_XACTIONLOCKABLE_HPP_
+#include <com/sun/star/document/XActionLockable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DOCUMENT_XLINKTARGETSUPPLIER_HPP_
+#include <com/sun/star/document/XLinkTargetSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XDRAWPAGESSUPPLIER_HPP_
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_XDRAWPAGES_HPP_
+#include <com/sun/star/drawing/XDrawPages.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XGOALSEEK_HPP_
+#include <com/sun/star/sheet/XGoalSeek.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCALCULATABLE_HPP_
+#include <com/sun/star/sheet/XCalculatable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSCENARIOS_HPP_
+#include <com/sun/star/sheet/XScenarios.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCONSOLIDATABLE_HPP_
+#include <com/sun/star/sheet/XConsolidatable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEETDOCUMENT_HPP_
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XDOCUMENTAUDITING_HPP_
+#include <com/sun/star/sheet/XDocumentAuditing.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XPROTECTABLE_HPP_
+#include <com/sun/star/util/XProtectable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XTABLECOLUMNS_HPP_
+#include <com/sun/star/table/XTableColumns.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XTABLEROWS_HPP_
+#include <com/sun/star/table/XTableRows.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETANNOTATIONS_HPP_
+#include <com/sun/star/sheet/XSheetAnnotations.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+class ScDocShell;
+class ScAnnotationObj;
+class ScTableColumnObj;
+class ScTableRowObj;
+class ScTableSheetObj;
+class SvxFmDrawPage;
+class SvxDrawPage;
+
+class ScModelObj : public SfxBaseModel,
+ public com::sun::star::sheet::XSpreadsheetDocument,
+ public com::sun::star::document::XActionLockable,
+ public com::sun::star::sheet::XCalculatable,
+ public com::sun::star::util::XProtectable,
+ public com::sun::star::drawing::XDrawPagesSupplier,
+ public com::sun::star::sheet::XGoalSeek,
+ public com::sun::star::sheet::XConsolidatable,
+ public com::sun::star::sheet::XDocumentAuditing,
+ public com::sun::star::style::XStyleFamiliesSupplier,
+ public com::sun::star::document::XLinkTargetSupplier,
+ public com::sun::star::beans::XPropertySet,
+ public SvxFmMSFactory, // derived from XMultiServiceFactory
+ public com::sun::star::lang::XUnoTunnel,
+ public com::sun::star::lang::XServiceInfo
+{
+private:
+ SfxItemPropertySet aPropSet;
+ ScDocShell* pDocShell;
+ com::sun::star::uno::Reference<com::sun::star::uno::XAggregation> xNumberAgg;
+
+public:
+ ScModelObj(ScDocShell* pDocSh);
+ virtual ~ScModelObj();
+
+ // create ScModelObj and set at pDocSh (SetBaseModel)
+ static void CreateAndSet(ScDocShell* pDocSh);
+
+ ScDocument* GetDocument() const;
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+//? virtual UString getClassName(void);
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XSpreadsheetDocument
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheets > SAL_CALL
+ getSheets() throw(::com::sun::star::uno::RuntimeException);
+
+ // XStyleFamiliesSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL
+ getStyleFamilies() throw(::com::sun::star::uno::RuntimeException);
+
+ // XLinkTargetSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL
+ getLinks() throw(::com::sun::star::uno::RuntimeException);
+
+ // XActionLockable
+ virtual sal_Bool SAL_CALL isActionLocked() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addActionLock() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeActionLock() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setActionLocks( sal_Int16 nLock )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL resetActionLocks() throw(::com::sun::star::uno::RuntimeException);
+
+ // XCalculatable
+ virtual void SAL_CALL calculate() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL calculateAll() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isAutomaticCalculationEnabled()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL enableAutomaticCalculation( sal_Bool bEnabled )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XProtectable
+ virtual void SAL_CALL protect( const ::rtl::OUString& aPassword )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL unprotect( const ::rtl::OUString& aPassword )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isProtected() throw(::com::sun::star::uno::RuntimeException);
+
+ // XDrawPagesSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages > SAL_CALL
+ getDrawPages() throw(::com::sun::star::uno::RuntimeException);
+
+ //! XPrintable??
+
+ // XGoalSeek
+ virtual ::com::sun::star::sheet::GoalResult SAL_CALL seekGoal(
+ const ::com::sun::star::table::CellAddress& aFormulaPosition,
+ const ::com::sun::star::table::CellAddress& aVariablePosition,
+ const ::rtl::OUString& aGoalValue )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XConsolidatable
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XConsolidationDescriptor >
+ SAL_CALL createConsolidationDescriptor( sal_Bool bEmpty )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL consolidate( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::sheet::XConsolidationDescriptor >& xDescriptor )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XDocumentAuditing
+ virtual void SAL_CALL refreshArrows() throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XMultiServiceFactory
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
+ createInstance( const ::rtl::OUString& aServiceSpecifier )
+ throw(::com::sun::star::uno::Exception,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
+ createInstanceWithArguments( const ::rtl::OUString& ServiceSpecifier,
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Any >& Arguments )
+ throw(::com::sun::star::uno::Exception,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScModelObj* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface> xObj );
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScDrawPagesObj : public cppu::WeakImplHelper2<
+ com::sun::star::drawing::XDrawPages,
+ com::sun::star::lang::XServiceInfo>,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+
+ SvxFmDrawPage* GetObjectByIndex_Impl(INT32 nIndex) const;
+
+public:
+ ScDrawPagesObj(ScDocShell* pDocSh);
+ virtual ~ScDrawPagesObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XDrawPages
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL
+ insertNewByIndex( sal_Int32 nIndex )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::drawing::XDrawPage >& xPage )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScTableSheetsObj : public cppu::WeakImplHelper4<
+ com::sun::star::sheet::XSpreadsheets,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::lang::XServiceInfo>,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+
+ ScTableSheetObj* GetObjectByIndex_Impl(USHORT nIndex) const;
+ ScTableSheetObj* GetObjectByName_Impl(const ::rtl::OUString& aName) const;
+
+public:
+ ScTableSheetsObj(ScDocShell* pDocSh);
+ virtual ~ScTableSheetsObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XSpreadsheets
+ virtual void SAL_CALL insertNewByName( const ::rtl::OUString& aName, sal_Int16 nPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL moveByName( const ::rtl::OUString& aName, sal_Int16 nDestination )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL copyByName( const ::rtl::OUString& aName,
+ const ::rtl::OUString& aCopy, sal_Int16 nDestination )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XNameContainer
+ virtual void SAL_CALL insertByName( 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 removeByName( const ::rtl::OUString& Name )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameReplace
+ virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName,
+ const ::com::sun::star::uno::Any& aElement )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScTableColumnsObj : public cppu::WeakImplHelper4<
+ com::sun::star::table::XTableColumns,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XNameAccess,
+ com::sun::star::lang::XServiceInfo>,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ USHORT nTab;
+ USHORT nStartCol;
+ USHORT nEndCol;
+
+ ScTableColumnObj* GetObjectByIndex_Impl(USHORT nIndex) const;
+ ScTableColumnObj* GetObjectByName_Impl(const ::rtl::OUString& aName) const;
+
+public:
+ ScTableColumnsObj(ScDocShell* pDocSh, USHORT nT,
+ USHORT nSC, USHORT nEC);
+ virtual ~ScTableColumnsObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XTableColumns
+ virtual void SAL_CALL insertByIndex( sal_Int32 nIndex, sal_Int32 nCount )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByIndex( sal_Int32 nIndex, sal_Int32 nCount )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScTableRowsObj : public cppu::WeakImplHelper3<
+ com::sun::star::table::XTableRows,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::lang::XServiceInfo>,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ USHORT nTab;
+ USHORT nStartRow;
+ USHORT nEndRow;
+
+ ScTableRowObj* GetObjectByIndex_Impl(USHORT nIndex) const;
+
+public:
+ ScTableRowsObj(ScDocShell* pDocSh, USHORT nT,
+ USHORT nSR, USHORT nER);
+ virtual ~ScTableRowsObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XTableRows
+ virtual void SAL_CALL insertByIndex( sal_Int32 nIndex, sal_Int32 nCount )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByIndex( sal_Int32 nIndex, sal_Int32 nCount )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScSpreadsheetSettingsObj : public cppu::WeakImplHelper2<
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo>,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+
+public:
+ ScSpreadsheetSettingsObj(ScDocShell* pDocSh);
+ virtual ~ScSpreadsheetSettingsObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScAnnotationsObj : public cppu::WeakImplHelper3<
+ com::sun::star::sheet::XSheetAnnotations,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::lang::XServiceInfo>,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ USHORT nTab; // Collection haengt am Sheet
+
+ BOOL GetAddressByIndex_Impl( ULONG nIndex, ScAddress& rPos ) const;
+ ScAnnotationObj* GetObjectByIndex_Impl(USHORT nIndex) const;
+
+public:
+ ScAnnotationsObj(ScDocShell* pDocSh, USHORT nT);
+ virtual ~ScAnnotationsObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XSheetAnnotations
+ virtual void SAL_CALL insertNew( const ::com::sun::star::table::CellAddress& aPosition,
+ const ::rtl::OUString& aText )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByIndex( sal_Int32 nIndex )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScScenariosObj : public cppu::WeakImplHelper4<
+ com::sun::star::sheet::XScenarios,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::lang::XServiceInfo>,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ USHORT nTab;
+
+ BOOL GetScenarioIndex_Impl( const ::rtl::OUString& rName, USHORT& rIndex );
+ ScTableSheetObj* GetObjectByIndex_Impl(USHORT nIndex);
+ ScTableSheetObj* GetObjectByName_Impl(const ::rtl::OUString& aName);
+
+public:
+ ScScenariosObj(ScDocShell* pDocSh, USHORT nT);
+ virtual ~ScScenariosObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XScenarios
+ virtual void SAL_CALL addNewByName( const ::rtl::OUString& aName,
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::table::CellRangeAddress >& aRanges,
+ const ::rtl::OUString& aComment )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+
+
+#endif
+
diff --git a/sc/inc/dpobject.hxx b/sc/inc/dpobject.hxx
new file mode 100644
index 000000000000..b0d3a64abc02
--- /dev/null
+++ b/sc/inc/dpobject.hxx
@@ -0,0 +1,251 @@
+/*************************************************************************
+ *
+ * $RCSfile: dpobject.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DPOBJECT_HXX
+#define SC_DPOBJECT_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XDIMENSIONSSUPPLIER_HPP_
+#include <com/sun/star/sheet/XDimensionsSupplier.hpp>
+#endif
+
+
+//------------------------------------------------------------------
+
+
+class Rectangle;
+class SvStream;
+class ScDPSaveData;
+class ScDPOutput;
+struct ScDPPositionData;
+class ScMultipleReadHeader;
+class ScMultipleWriteHeader;
+class ScPivot;
+class ScPivotCollection;
+struct ScPivotParam;
+struct ScImportSourceDesc;
+struct ScSheetSourceDesc;
+
+
+struct ScDPServiceDesc
+{
+ String aServiceName;
+ String aParSource;
+ String aParName;
+ String aParUser;
+ String aParPass;
+
+ ScDPServiceDesc( const String& rServ, const String& rSrc, const String& rNam,
+ const String& rUser, const String& rPass ) :
+ aServiceName( rServ ), aParSource( rSrc ), aParName( rNam ),
+ aParUser( rUser ), aParPass( rPass ) { }
+
+ BOOL operator== ( const ScDPServiceDesc& rOther ) const
+ { return aServiceName == rOther.aServiceName &&
+ aParSource == rOther.aParSource &&
+ aParName == rOther.aParName &&
+ aParUser == rOther.aParUser &&
+ aParPass == rOther.aParPass; }
+};
+
+
+class ScDPObject : public DataObject
+{
+private:
+ ScDocument* pDoc;
+ // settings
+ ScDPSaveData* pSaveData;
+ String aTableName;
+ String aTableTag;
+ ScRange aOutRange;
+ ScSheetSourceDesc* pSheetDesc; // for sheet data
+ ScImportSourceDesc* pImpDesc; // for database data
+ ScDPServiceDesc* pServDesc; // for external service
+ // cached data
+ com::sun::star::uno::Reference<com::sun::star::sheet::XDimensionsSupplier> xSource;
+ ScDPOutput* pOutput;
+ BOOL bSettingsChanged;
+ BOOL bAlive; // FALSE if only used to hold settings
+
+
+ void CreateObjects();
+ void CreateOutput();
+
+public:
+ ScDPObject( ScDocument* pD );
+ ScDPObject(const ScDPObject& r);
+ virtual ~ScDPObject();
+
+ virtual DataObject* Clone() const;
+
+ void SetAlive(BOOL bSet);
+
+ void InvalidateData();
+ void InvalidateSource();
+
+ void Output();
+ ScRange GetNewOutputRange();
+
+ void SetSaveData(const ScDPSaveData& rData);
+ ScDPSaveData* GetSaveData() const { return pSaveData; }
+
+ void SetOutRange(const ScRange& rRange);
+ const ScRange& GetOutRange() const { return aOutRange; }
+
+ void SetSheetDesc(const ScSheetSourceDesc& rDesc);
+ void SetImportDesc(const ScImportSourceDesc& rDesc);
+ void SetServiceData(const ScDPServiceDesc& rDesc);
+
+ void WriteSourceDataTo( ScDPObject& rDest ) const;
+
+ const ScSheetSourceDesc* GetSheetDesc() const { return pSheetDesc; }
+ const ScImportSourceDesc* GetImportSourceDesc() const { return pImpDesc; }
+ const ScDPServiceDesc* GetDPServiceDesc() const { return pServDesc; }
+
+ com::sun::star::uno::Reference<com::sun::star::sheet::XDimensionsSupplier> GetSource();
+
+ BOOL IsSheetData() const;
+ BOOL IsImportData() const { return(pImpDesc != NULL); }
+ BOOL IsServiceData() const { return(pServDesc != NULL); }
+
+ void SetName(const String& rNew);
+ const String& GetName() const { return aTableName; }
+ void SetTag(const String& rNew);
+ const String& GetTag() const { return aTableTag; }
+
+ String GetDimName( long nDim, BOOL& rIsDataLayout );
+ void GetPositionData( ScDPPositionData& rData, const ScAddress& rPos );
+ long GetHeaderDim( const ScAddress& rPos );
+ BOOL GetHeaderDrag( const ScAddress& rPos, BOOL bMouseLeft, BOOL bMouseTop,
+ long nDragDim,
+ Rectangle& rPosRect, USHORT& rOrient, long& rDimPos );
+ BOOL IsFilterButton( const ScAddress& rPos );
+
+ void ToggleDetails( ScDPPositionData& rElemDesc, ScDPObject* pDestObj );
+
+ BOOL StoreOld(SvStream& rStream, ScMultipleWriteHeader& rHdr ) const;
+ BOOL StoreNew(SvStream& rStream, ScMultipleWriteHeader& rHdr ) const;
+ BOOL LoadNew(SvStream& rStream, ScMultipleReadHeader& rHdr );
+ BOOL FillOldParam(ScPivotParam& rParam, BOOL bForFile) const;
+ BOOL FillLabelData(ScPivotParam& rParam, BOOL* pShowAll, USHORT nShowAllMax) const;
+ void InitFromOldPivot(const ScPivot& rOld, ScDocument* pDoc, BOOL bSetSource);
+
+ void UpdateReference( UpdateRefMode eUpdateRefMode,
+ const ScRange& r, short nDx, short nDy, short nDz );
+ BOOL RefsEqual( const ScDPObject& r ) const;
+ void WriteRefsTo( ScDPObject& r ) const;
+
+ static BOOL HasRegisteredSources();
+ static com::sun::star::uno::Sequence<rtl::OUString> GetRegisteredSources();
+ static com::sun::star::uno::Reference<com::sun::star::sheet::XDimensionsSupplier>
+ CreateSource( const ScDPServiceDesc& rDesc );
+
+ static void ConvertOrientation( ScDPSaveData& rSaveData,
+ PivotField* pFields, USHORT nCount, USHORT nOrient,
+ ScDocument* pDoc, USHORT nRow, USHORT nTab,
+ const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XDimensionsSupplier>& xSource,
+ BOOL bOldDefaults,
+ PivotField* pRefColFields = NULL, USHORT nRefColCount = 0,
+ PivotField* pRefRowFields = NULL, USHORT nRefRowCount = 0 );
+};
+
+
+class ScDPCollection : public Collection
+{
+private:
+ ScDocument* pDoc;
+
+public:
+ ScDPCollection(ScDocument* pDocument);
+ ScDPCollection(const ScDPCollection& r);
+ virtual ~ScDPCollection();
+
+ virtual DataObject* Clone() const;
+
+ ScDPObject* operator[](USHORT nIndex) const {return (ScDPObject*)At(nIndex);}
+
+ BOOL StoreOld( SvStream& rStream ) const;
+ BOOL StoreNew( SvStream& rStream ) const;
+ BOOL LoadNew( SvStream& rStream );
+
+ void ConvertOldTables( ScPivotCollection& rOldColl );
+
+ void UpdateReference( UpdateRefMode eUpdateRefMode,
+ const ScRange& r, short nDx, short nDy, short nDz );
+
+ BOOL RefsEqual( const ScDPCollection& r ) const;
+ void WriteRefsTo( ScDPCollection& r ) const;
+
+ String CreateNewName( USHORT nMin = 1 ) const;
+ void EnsureNames();
+};
+
+
+#endif
+
diff --git a/sc/inc/dpoutput.hxx b/sc/inc/dpoutput.hxx
new file mode 100644
index 000000000000..17441abd14e1
--- /dev/null
+++ b/sc/inc/dpoutput.hxx
@@ -0,0 +1,170 @@
+/*************************************************************************
+ *
+ * $RCSfile: dpoutput.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DPOUTPUT_HXX
+#define SC_DPOUTPUT_HXX
+
+#ifndef _COM_SUN_STAR_SHEET_XDIMENSIONSSUPPLIER_HPP_
+#include <com/sun/star/sheet/XDimensionsSupplier.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_DATARESULT_HPP_
+#include <com/sun/star/sheet/DataResult.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_MEMBERRESULT_HPP_
+#include <com/sun/star/sheet/MemberResult.hpp>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class Rectangle;
+class SvStream;
+class ScDocument;
+
+struct ScDPOutLevelData;
+
+
+
+
+struct ScDPPositionData
+{
+ long nDimension;
+ long nHierarchy;
+ long nLevel;
+ long nFlags;
+ String aMemberName;
+
+ ScDPPositionData() { nDimension = nHierarchy = nLevel = -1; nFlags = 0; } // invalid
+};
+
+
+
+class ScDPOutput //! name???
+{
+private:
+ //! use impl-object?
+ ScDocument* pDoc;
+ com::sun::star::uno::Reference<
+ com::sun::star::sheet::XDimensionsSupplier> xSource;
+ ScAddress aStartPos;
+ BOOL bDoFilter;
+ ScDPOutLevelData* pColFields;
+ ScDPOutLevelData* pRowFields;
+ ScDPOutLevelData* pPageFields;
+ long nColFieldCount;
+ long nRowFieldCount;
+ long nPageFieldCount;
+ com::sun::star::uno::Sequence<
+ com::sun::star::uno::Sequence<
+ com::sun::star::sheet::DataResult> > aData;
+ String aDataDescription;
+ UINT32* pColNumFmt;
+ UINT32* pRowNumFmt;
+ long nColFmtCount;
+ long nRowFmtCount;
+
+ BOOL bSizesValid;
+ long nColCount;
+ long nRowCount;
+ long nHeaderSize;
+ USHORT nTabStartCol;
+ USHORT nTabStartRow;
+ USHORT nMemberStartCol;
+ USHORT nMemberStartRow;
+ USHORT nDataStartCol;
+ USHORT nDataStartRow;
+ USHORT nTabEndCol;
+ USHORT nTabEndRow;
+
+ void DataCell( USHORT nCol, USHORT nRow, USHORT nTab,
+ const com::sun::star::sheet::DataResult& rData );
+ void HeaderCell( USHORT nCol, USHORT nRow, USHORT nTab,
+ const com::sun::star::sheet::MemberResult& rData,
+ BOOL bColHeader, long nLevel );
+ void FieldCell( USHORT nCol, USHORT nRow, USHORT nTab, const String& rCaption );
+ void CalcSizes();
+
+public:
+ ScDPOutput( ScDocument* pD,
+ const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XDimensionsSupplier>& xSrc,
+ const ScAddress& rPos, BOOL bFilter );
+ ~ScDPOutput();
+
+ void SetPosition( const ScAddress& rPos );
+
+ void Output(); //! Refresh?
+ ScRange GetOutputRange();
+
+ void GetPositionData( ScDPPositionData& rData, const ScAddress& rPos );
+ long GetHeaderDim( const ScAddress& rPos );
+ BOOL GetHeaderDrag( const ScAddress& rPos, BOOL bMouseLeft, BOOL bMouseTop,
+ long nDragDim,
+ Rectangle& rPosRect, USHORT& rOrient, long& rDimPos );
+ BOOL IsFilterButton( const ScAddress& rPos );
+};
+
+
+#endif
+
diff --git a/sc/inc/dpsave.hxx b/sc/inc/dpsave.hxx
new file mode 100644
index 000000000000..bb1cb82de4c2
--- /dev/null
+++ b/sc/inc/dpsave.hxx
@@ -0,0 +1,221 @@
+/*************************************************************************
+ *
+ * $RCSfile: dpsave.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DPSAVE_HXX
+#define SC_DPSAVE_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _LIST_HXX //autogen wg. List
+#include <tools/list.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XDIMENSIONSSUPPLIER_HPP_
+#include <com/sun/star/sheet/XDimensionsSupplier.hpp>
+#endif
+
+class SvStream;
+
+// --------------------------------------------------------------------
+//
+// classes to save Data Pilot settings
+//
+
+
+class ScDPSaveMember
+{
+private:
+ String aName;
+ USHORT nVisibleMode;
+ USHORT nShowDetailsMode;
+
+public:
+ ScDPSaveMember(const String& rName);
+ ScDPSaveMember(const ScDPSaveMember& r);
+ ScDPSaveMember(SvStream& rStream);
+ ~ScDPSaveMember();
+
+ BOOL operator== ( const ScDPSaveMember& r ) const;
+
+ const String& GetName() { return aName; }
+ void SetIsVisible(BOOL bSet);
+ BOOL GetIsVisible() { return BOOL(nVisibleMode); }
+ void SetShowDetails(BOOL bSet);
+ BOOL GetShowDetails() { return BOOL(nShowDetailsMode); }
+
+ void WriteToSource( const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface>& xMember );
+
+ void Store( SvStream& rStream ) const;
+};
+
+
+class ScDPSaveDimension
+{
+private:
+ String aName;
+ String* pLayoutName; // alternative name for layout, not used (yet)
+ BOOL bIsDataLayout;
+ BOOL bDupFlag;
+ USHORT nOrientation;
+ USHORT nFunction; // enum GeneralFunction, for data dimensions
+ long nUsedHierarchy;
+ USHORT nShowEmptyMode; //! at level
+ BOOL bSubTotalDefault; //! at level
+ long nSubTotalCount;
+ USHORT* pSubTotalFuncs; // enum GeneralFunction
+ List aMemberList;
+
+public:
+ ScDPSaveDimension(const String& rName, BOOL bDataLayout);
+ ScDPSaveDimension(const ScDPSaveDimension& r);
+ ScDPSaveDimension(SvStream& rStream);
+ ~ScDPSaveDimension();
+
+ BOOL operator== ( const ScDPSaveDimension& r ) const;
+
+ const List& GetMembers() { return aMemberList; }
+ void AddMember(ScDPSaveMember* pMember) { aMemberList.Insert(pMember, LIST_APPEND); };
+
+ void SetDupFlag(BOOL bSet) { bDupFlag = bSet; }
+ BOOL GetDupFlag() const { return bDupFlag; }
+
+ const String& GetName() const { return aName; }
+ BOOL IsDataLayout() const { return bIsDataLayout; }
+
+ void SetOrientation(USHORT nNew);
+ void SetSubTotals(BOOL bSet); // to be removed!
+ void SetSubTotals(long nCount, const USHORT* pFuncs);
+ long GetSubTotalsCount() { return nSubTotalCount; }
+ USHORT GetSubTotalFunc(long nIndex) { return pSubTotalFuncs[nIndex]; }
+ void SetShowEmpty(BOOL bSet);
+ BOOL GetShowEmpty() { return BOOL(nShowEmptyMode); }
+ void SetFunction(USHORT nNew); // enum GeneralFunction
+ USHORT GetFunction() { return nFunction; }
+ void SetUsedHierarchy(long nNew);
+ long GetUsedHierarchy() { return nUsedHierarchy; }
+ void SetLayoutName(const String* pName);
+ const String& GetLayoutName() const;
+
+ USHORT GetOrientation() const { return nOrientation; }
+
+ ScDPSaveMember* GetMemberByName(const String& rName);
+
+ void WriteToSource( const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface>& xDim );
+
+ void Store( SvStream& rStream ) const;
+};
+
+
+class ScDPSaveData
+{
+private:
+ List aDimList;
+ USHORT nColumnGrandMode;
+ USHORT nRowGrandMode;
+ USHORT nIgnoreEmptyMode;
+ USHORT nRepeatEmptyMode;
+
+public:
+ ScDPSaveData();
+ ScDPSaveData(const ScDPSaveData& r);
+ ~ScDPSaveData();
+
+ ScDPSaveData& operator= ( const ScDPSaveData& r );
+
+ BOOL operator== ( const ScDPSaveData& r ) const;
+
+ const List& GetDimensions() const { return aDimList; }
+ void AddDimension(ScDPSaveDimension* pDim) { aDimList.Insert(pDim, LIST_APPEND); }
+
+ ScDPSaveDimension* GetDimensionByName(const String& rName);
+ ScDPSaveDimension* GetDataLayoutDimension();
+
+ ScDPSaveDimension* DuplicateDimension(const String& rName);
+
+ ScDPSaveDimension* GetExistingDimensionByName(const String& rName);
+ ScDPSaveDimension* GetNewDimensionByName(const String& rName);
+
+ void SetPosition( ScDPSaveDimension* pDim, long nNew );
+ void SetColumnGrand( BOOL bSet );
+ BOOL GetColumnGrand() const { return BOOL(nColumnGrandMode); }
+ void SetRowGrand( BOOL bSet );
+ BOOL GetRowGrand() const { return BOOL(nRowGrandMode); }
+ void SetIgnoreEmptyRows( BOOL bSet );
+ BOOL GetIgnoreEmptyRows() const { return BOOL(nIgnoreEmptyMode); }
+ void SetRepeatIfEmpty( BOOL bSet );
+ BOOL GetRepeatIfEmpty() const { return BOOL(nRepeatEmptyMode); }
+
+ void WriteToSource( const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XDimensionsSupplier>& xSource );
+
+ void Store( SvStream& rStream ) const;
+ void Load( SvStream& rStream );
+
+ BOOL IsEmpty() const;
+};
+
+
+#endif
+
diff --git a/sc/inc/dpsdbtab.hxx b/sc/inc/dpsdbtab.hxx
new file mode 100644
index 000000000000..f45d2cc7547e
--- /dev/null
+++ b/sc/inc/dpsdbtab.hxx
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * $RCSfile: dpsdbtab.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DPSDBTAB_HXX
+#define SC_DPSDBTAB_HXX
+
+#ifndef SC_DPTABDAT_HXX
+#include "dptabdat.hxx"
+#endif
+
+// --------------------------------------------------------------------
+//
+// implementation of ScDPTableData with database data
+//
+
+struct ScImportSourceDesc
+{
+ String aDBName;
+ String aObject;
+ USHORT nType; // enum DataImportMode
+ BOOL bNative;
+
+ BOOL operator== ( const ScImportSourceDesc& rOther ) const
+ { return aDBName == rOther.aDBName &&
+ aObject == rOther.aObject &&
+ nType == rOther.nType &&
+ bNative == rOther.bNative; }
+};
+
+class ScDatabaseDPData_Impl;
+
+class ScDatabaseDPData : public ScDPTableData
+{
+private:
+ ScDatabaseDPData_Impl* pImpl;
+
+ BOOL OpenDatabase();
+ void InitAllColumnEntries();
+
+public:
+ ScDatabaseDPData( const ScImportSourceDesc& rImport );
+ virtual ~ScDatabaseDPData();
+
+ virtual long GetColumnCount();
+ virtual const TypedStrCollection& GetColumnEntries(long nColumn);
+ virtual String getDimensionName(long nColumn);
+ virtual BOOL getIsDataLayoutDimension(long nColumn);
+ virtual BOOL IsDateDimension(long nDim);
+ virtual void DisposeData();
+ virtual void SetEmptyFlags( BOOL bIgnoreEmptyRows, BOOL bRepeatIfEmpty );
+
+ virtual void ResetIterator();
+ virtual BOOL GetNextRow( const ScDPTableIteratorParam& rParam );
+};
+
+
+
+#endif
+
diff --git a/sc/inc/dpshttab.hxx b/sc/inc/dpshttab.hxx
new file mode 100644
index 000000000000..7387d3ec2e1e
--- /dev/null
+++ b/sc/inc/dpshttab.hxx
@@ -0,0 +1,116 @@
+/*************************************************************************
+ *
+ * $RCSfile: dpshttab.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DPSHTTAB_HXX
+#define SC_DPSHTTAB_HXX
+
+#ifndef SC_DPTABDAT_HXX
+#include "dptabdat.hxx"
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+
+// --------------------------------------------------------------------
+//
+// implementation of ScDPTableData with sheet data
+//
+
+struct ScSheetSourceDesc
+{
+ ScRange aSourceRange;
+ ScQueryParam aQueryParam;
+
+ BOOL operator== ( const ScSheetSourceDesc& rOther ) const
+ { return aSourceRange == rOther.aSourceRange &&
+ aQueryParam == rOther.aQueryParam; }
+};
+
+class ScSheetDPData_Impl;
+
+class ScSheetDPData : public ScDPTableData
+{
+private:
+ ScSheetDPData_Impl* pImpl;
+
+public:
+ ScSheetDPData( ScDocument* pD, const ScSheetSourceDesc& rDesc );
+ virtual ~ScSheetDPData();
+
+ virtual long GetColumnCount();
+ virtual const TypedStrCollection& GetColumnEntries(long nColumn);
+ virtual String getDimensionName(long nColumn);
+ virtual BOOL getIsDataLayoutDimension(long nColumn);
+ virtual BOOL IsDateDimension(long nDim);
+ virtual UINT32 GetNumberFormat(long nDim);
+ virtual void DisposeData();
+ virtual void SetEmptyFlags( BOOL bIgnoreEmptyRows, BOOL bRepeatIfEmpty );
+
+ virtual void ResetIterator();
+ virtual BOOL GetNextRow( const ScDPTableIteratorParam& rParam );
+};
+
+
+
+#endif
+
diff --git a/sc/inc/dptabdat.hxx b/sc/inc/dptabdat.hxx
new file mode 100644
index 000000000000..8d16c4627678
--- /dev/null
+++ b/sc/inc/dptabdat.hxx
@@ -0,0 +1,176 @@
+/*************************************************************************
+ *
+ * $RCSfile: dptabdat.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:48 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DPTABDAT_HXX
+#define SC_DPTABDAT_HXX
+
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+class TypedStrCollection;
+
+// -----------------------------------------------------------------------
+
+#define SC_DAPI_DATE_HIERARCHIES 3
+
+#define SC_DAPI_HIERARCHY_FLAT 0
+#define SC_DAPI_HIERARCHY_QUARTER 1
+#define SC_DAPI_HIERARCHY_WEEK 2
+
+#define SC_DAPI_FLAT_LEVELS 1 // single level for flat dates
+#define SC_DAPI_QUARTER_LEVELS 4 // levels in year/quarter/month/day hierarchy
+#define SC_DAPI_WEEK_LEVELS 3 // levels in year/week/day hierarchy
+
+#define SC_DAPI_LEVEL_YEAR 0
+#define SC_DAPI_LEVEL_QUARTER 1
+#define SC_DAPI_LEVEL_MONTH 2
+#define SC_DAPI_LEVEL_DAY 3
+#define SC_DAPI_LEVEL_WEEK 1
+#define SC_DAPI_LEVEL_WEEKDAY 2
+
+// --------------------------------------------------------------------
+//
+// 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;
+};
+
+#define SC_VALTYPE_EMPTY 0
+#define SC_VALTYPE_VALUE 1
+#define SC_VALTYPE_STRING 2
+#define SC_VALTYPE_ERROR 3
+
+struct ScDPValueData
+{
+ double fValue;
+ BYTE nType;
+
+ void Set( double fV, BYTE nT ) { fValue = fV; nType = nT; }
+};
+
+
+struct ScDPTableIteratorParam
+{
+ // all pointers are just copied
+
+ USHORT nColCount;
+ const long* pCols;
+ ScDPItemData* pColData;
+ USHORT nRowCount;
+ const long* pRows;
+ ScDPItemData* pRowData;
+ USHORT nDatCount;
+ const long* pDats;
+ ScDPValueData* pValues;
+
+ ScDPTableIteratorParam( long nCCount, const long* pC, ScDPItemData* pCDat,
+ long nRCount, const long* pR, ScDPItemData* pRDat,
+ long nDCount, const long* pD, ScDPValueData* pV );
+};
+
+class ScDPTableData
+{
+ // cached data for GetDatePart
+ long nLastDateVal;
+ long nLastHier;
+ long nLastLevel;
+ long nLastRet;
+
+public:
+ ScDPTableData();
+ virtual ~ScDPTableData();
+
+ long GetDatePart( long nDateVal, long nHierarchy, long nLevel );
+
+ //! use (new) typed collection instead of StrCollection
+ //! or separate Str and ValueCollection
+
+ virtual long GetColumnCount() = 0;
+ virtual const TypedStrCollection& GetColumnEntries(long nColumn) = 0;
+ virtual String getDimensionName(long nColumn) = 0;
+ virtual BOOL getIsDataLayoutDimension(long nColumn) = 0;
+ virtual BOOL IsDateDimension(long nDim) = 0;
+ virtual UINT32 GetNumberFormat(long nDim);
+ virtual void DisposeData() = 0;
+ virtual void SetEmptyFlags( BOOL bIgnoreEmptyRows, BOOL bRepeatIfEmpty ) = 0;
+
+ virtual void ResetIterator() = 0;
+ virtual BOOL GetNextRow( const ScDPTableIteratorParam& rParam ) = 0;
+};
+
+
+#endif
+
diff --git a/sc/inc/dptabres.hxx b/sc/inc/dptabres.hxx
new file mode 100644
index 000000000000..a5caaea911ca
--- /dev/null
+++ b/sc/inc/dptabres.hxx
@@ -0,0 +1,343 @@
+/*************************************************************************
+ *
+ * $RCSfile: dptabres.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DPTABRES_HXX
+#define SC_DPTABRES_HXX
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_MEMBERRESULT_HPP_
+#include <com/sun/star/sheet/MemberResult.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_DATARESULT_HPP_
+#include <com/sun/star/sheet/DataResult.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
+#include <com/sun/star/uno/Sequence.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // enum ScSubTotalFunc
+#endif
+
+
+class ScAddress;
+class ScDocument;
+class ScDPSource;
+class ScDPDimension;
+class ScDPLevel;
+class ScDPMember;
+class ScDPAggData;
+
+struct ScDPValueData;
+
+//
+// aggregated data
+//! separate header file?
+//
+
+class ScDPAggData
+{
+private:
+ double fVal;
+ double fSquare;
+ long nCount;
+ ScDPAggData* pChild;
+
+public:
+ ScDPAggData() : fVal(0.0), fSquare(0.0), nCount(0), pChild(NULL) {}
+ ~ScDPAggData() { delete pChild; }
+
+ void Update( const ScDPValueData& rNext, ScSubTotalFunc eFunc );
+ double GetResult( ScSubTotalFunc eFunc ) const;
+ BOOL HasError( ScSubTotalFunc eFunc ) const;
+ BOOL HasData() const { return ( nCount != 0 ); }
+
+ const ScDPAggData* GetExistingChild() const { return pChild; }
+ ScDPAggData* GetChild();
+};
+
+
+// --------------------------------------------------------------------
+//
+// results for a hierarchy dimension
+//
+
+#define SC_DP_RES_GROW 16
+
+class ScDPResultDimension;
+class ScDPDataDimension;
+class ScDPDataMember;
+struct ScDPItemData;
+
+
+#define SC_DPMEASURE_ALL -1
+#define SC_DPMEASURE_ANY -2
+
+class ScDPResultData
+{
+private:
+ ScDPSource* pSource; //! Ref
+ //! keep things like measure lists here
+
+ long nMeasCount;
+ ScSubTotalFunc* pMeasFuncs;
+ String* pMeasNames;
+ BOOL bDataAtCol;
+ BOOL bDataAtRow;
+
+public:
+ ScDPResultData( ScDPSource* pSrc ); //! Ref
+ ~ScDPResultData();
+
+ void SetMeasureData( long nCount, const ScSubTotalFunc* pFunctions,
+ const String* pNames );
+ void SetDataLayoutOrientation( USHORT nOrient );
+
+ long GetMeasureCount() const { return nMeasCount; }
+ ScSubTotalFunc GetMeasureFunction(long nMeasure) const;
+ String GetMeasureString(long nMeasure, BOOL bForce, ScSubTotalFunc eForceFunc) const;
+ String GetMeasureDimensionName(long nMeasure) const;
+
+ BOOL IsDataAtCol() const { return bDataAtCol; }
+ BOOL IsDataAtRow() const { return bDataAtRow; }
+
+ long GetColStartMeasure() const;
+ long GetRowStartMeasure() const;
+
+ long GetCountForMeasure( long nMeas ) const
+ { return ( nMeas == SC_DPMEASURE_ALL ) ? nMeasCount : 1; }
+};
+
+
+class ScDPResultMember
+{
+private:
+ ScDPResultData* pResultData;
+ ScDPDimension* pParentDim; //! Ref
+ ScDPLevel* pParentLevel; //! Ref
+ ScDPMember* pMemberDesc; //! Ref
+ ScDPResultDimension* pChildDimension;
+ ScDPDataMember* pDataRoot;
+ BOOL bHasElements;
+ BOOL bForceSubTotal;
+
+public:
+ ScDPResultMember( ScDPResultData* pData, ScDPDimension* pDim,
+ ScDPLevel* pLev, ScDPMember* pDesc,
+ BOOL bForceSub ); //! Ref
+ ~ScDPResultMember();
+
+ void InitFrom( ScDPDimension** ppDim, ScDPLevel** ppLev );
+
+ String GetName() const;
+ BOOL IsValid() const;
+ BOOL IsVisible() const;
+ long GetSize(long nMeasure) const;
+
+// BOOL SubTotalEnabled() const;
+ long GetSubTotalCount() const;
+
+ BOOL IsNamedItem( const ScDPItemData& r ) const;
+
+ void SetHasElements() { bHasElements = TRUE; }
+
+ void ProcessData( const ScDPItemData* pChildMembers,
+ ScDPResultDimension* pDataDim,
+ const ScDPItemData* pDataMembers,
+ const ScDPValueData* pValues );
+
+ 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;
+
+ //! this will be removed!
+ const ScDPResultDimension* GetChildDimension() const { return pChildDimension; }
+ ScDPResultDimension* GetChildDimension() { return pChildDimension; }
+
+ ScDPDimension* GetParentDim() { return pParentDim; } //! Ref
+ ScDPLevel* GetParentLevel() { return pParentLevel; } //! Ref
+};
+
+class ScDPDataMember
+{
+private:
+ ScDPResultData* pResultData;
+ ScDPResultMember* pResultMember; //! Ref?
+ ScDPDataDimension* pChildDimension;
+ ScDPAggData aAggregate;
+
+ void UpdateValues(const ScDPValueData* pValues);
+
+public:
+ ScDPDataMember( ScDPResultData* pData, ScDPResultMember* pRes );
+ ~ScDPDataMember();
+
+ void InitFrom( ScDPResultDimension* pDim );
+
+ String GetName() const;
+ BOOL HasData(long nMeasure) const;
+
+ BOOL IsNamedItem( const ScDPItemData& r ) const;
+
+ void ProcessData( const ScDPItemData* pChildMembers, const ScDPValueData* pValues );
+
+ BOOL HasError(long nMeasure) const;
+ double GetAggregate(long nMeasure) const;
+
+ void FillDataRow( const ScDPResultMember* pRefMember,
+ com::sun::star::uno::Sequence<com::sun::star::sheet::DataResult>& rSequence,
+ long& rCol, long nMeasure, BOOL bIsSubTotalRow ) const;
+
+ //! this will be removed!
+ const ScDPDataDimension* GetChildDimension() const { return pChildDimension; }
+ ScDPDataDimension* GetChildDimension() { return pChildDimension; }
+};
+
+//! replace PtrArr with 32-bit array ????
+
+typedef ScDPResultMember* ScDPResultMemberPtr;
+SV_DECL_PTRARR_DEL(ScDPResultMembers, ScDPResultMemberPtr, SC_DP_RES_GROW, SC_DP_RES_GROW);
+
+typedef ScDPDataMember* ScDPDataMemberPtr;
+SV_DECL_PTRARR_DEL(ScDPDataMembers, ScDPDataMemberPtr, SC_DP_RES_GROW, SC_DP_RES_GROW);
+
+
+// result dimension contains only members
+
+class ScDPResultDimension
+{
+private:
+ ScDPResultData* pResultData;
+ ScDPResultMembers aMembers;
+ BOOL bIsDataLayout; //! or ptr to IntDimension?
+
+public:
+ ScDPResultDimension( ScDPResultData* pData );
+ ~ScDPResultDimension();
+
+ // allocates new members
+ void InitFrom( ScDPDimension** ppDim, ScDPLevel** ppLev );
+
+ long GetSize(long nMeasure) const;
+
+ BOOL IsValidEntry( const ScDPItemData* pMembers ) const;
+
+ // modifies existing members, allocates data dimensions
+ void ProcessData( const ScDPItemData* pMembers,
+ ScDPResultDimension* pDataDim,
+ const ScDPItemData* pDataMembers,
+ const ScDPValueData* pValues ); //! Test
+
+ void FillMemberResults( com::sun::star::uno::Sequence<
+ com::sun::star::sheet::MemberResult>* pSequences,
+ long nStart, long nMeasure );
+
+ void FillDataResults( const ScDPResultMember* pRefMember,
+ com::sun::star::uno::Sequence<
+ com::sun::star::uno::Sequence<
+ com::sun::star::sheet::DataResult> >& rSequence,
+ long nRow, long nMeasure ) const;
+
+ // for ScDPDataDimension::InitFrom
+ long GetMemberCount() const;
+ ScDPResultMember* GetMember(long n) const;
+
+ BOOL IsDataLayout() const { return bIsDataLayout; }
+
+ ScDPResultDimension* GetFirstChildDimension() const;
+};
+
+class ScDPDataDimension
+{
+private:
+ ScDPResultData* pResultData;
+ ScDPDataMembers aMembers;
+ BOOL bIsDataLayout; //! or ptr to IntDimension?
+
+public:
+ ScDPDataDimension( ScDPResultData* pData );
+ ~ScDPDataDimension();
+
+ void InitFrom( ScDPResultDimension* pDim ); // recursive
+ void ProcessData( const ScDPItemData* pDataMembers, const ScDPValueData* pValues );
+
+ void FillDataRow( const ScDPResultDimension* pRefDim,
+ com::sun::star::uno::Sequence<com::sun::star::sheet::DataResult>& rSequence,
+ long nCol, long nMeasure, BOOL bIsSubTotalRow ) const;
+};
+
+#endif
+
diff --git a/sc/inc/dptabsrc.hxx b/sc/inc/dptabsrc.hxx
new file mode 100644
index 000000000000..1ee9c640cce9
--- /dev/null
+++ b/sc/inc/dptabsrc.hxx
@@ -0,0 +1,795 @@
+/*************************************************************************
+ *
+ * $RCSfile: dptabsrc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DPTABSRC_HXX
+#define SC_DPTABSRC_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _LIST_HXX //autogen wg. List
+#include <tools/list.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // enum ScSubTotalFunc
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XDIMENSIONSSUPPLIER_HPP_
+#include <com/sun/star/sheet/XDimensionsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XHIERARCHIESSUPPLIER_HPP_
+#include <com/sun/star/sheet/XHierarchiesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XLEVELSSUPPLIER_HPP_
+#include <com/sun/star/sheet/XLevelsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XMEMBERSSUPPLIER_HPP_
+#include <com/sun/star/sheet/XMembersSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XDATAPILOTRESULTS_HPP_
+#include <com/sun/star/sheet/XDataPilotResults.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XDATAPILOTMEMBERRESULTS_HPP_
+#include <com/sun/star/sheet/XDataPilotMemberResults.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_MEMBERRESULT_HPP_
+#include <com/sun/star/sheet/MemberResult.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_GENERALFUNCTION_HPP_
+#include <com/sun/star/sheet/GeneralFunction.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XREFRESHABLE_HPP_
+#include <com/sun/star/util/XRefreshable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XCLONEABLE_HPP_
+#include <com/sun/star/util/XCloneable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMED_HPP_
+#include <com/sun/star/container/XNamed.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE5_HXX_
+#include <cppuhelper/implbase5.hxx>
+#endif
+
+
+class ScDPResultMember;
+class ScDPResultData;
+struct ScDPItemData;
+class ScDPTableData;
+
+// --------------------------------------------------------------------
+
+// should be dynamic!
+#define SC_DAPI_MAXFIELDS 256
+
+
+// --------------------------------------------------------------------
+//
+// implementation of DataPilotSource using ScDPTableData
+//
+
+
+class ScDPDimensions;
+class ScDPDimension;
+class ScDPHierarchies;
+class ScDPHierarchy;
+class ScDPLevels;
+class ScDPLevel;
+class ScDPMembers;
+class ScDPMember;
+
+
+class ScDPSource : public cppu::WeakImplHelper5<
+ com::sun::star::sheet::XDimensionsSupplier,
+ com::sun::star::sheet::XDataPilotResults,
+ com::sun::star::util::XRefreshable,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScDPTableData* pData; // data source
+ ScDPDimensions* pDimensions; // api objects
+ // settings:
+ long nColDims[SC_DAPI_MAXFIELDS];
+ long nRowDims[SC_DAPI_MAXFIELDS];
+ long nDataDims[SC_DAPI_MAXFIELDS];
+ long nPageDims[SC_DAPI_MAXFIELDS];
+ long nColDimCount;
+ long nRowDimCount;
+ long nDataDimCount;
+ long nPageDimCount;
+ BOOL bColumnGrand;
+ BOOL bRowGrand;
+ BOOL bIgnoreEmptyRows;
+ BOOL bRepeatIfEmpty;
+
+ long nDupCount;
+
+ // results:
+ ScDPResultData* pResData; // keep the rest in this!
+ ScDPResultMember* pColResRoot;
+ ScDPResultMember* pRowResRoot;
+ com::sun::star::uno::Sequence<com::sun::star::sheet::MemberResult>* pColResults;
+ com::sun::star::uno::Sequence<com::sun::star::sheet::MemberResult>* pRowResults;
+ List aColLevelList;
+ List aRowLevelList;
+ ScSubTotalFunc eDataFunctions[SC_DAPI_MAXFIELDS];
+
+ void CreateRes_Impl();
+ void FillMemberResults();
+ void FillLevelList( USHORT nOrientation, List& rList );
+
+ void SetDupCount( long nNew );
+
+public:
+ ScDPSource( ScDPTableData* pD ); // TableData is deleted by Source
+ virtual ~ScDPSource();
+
+ ScDPTableData* GetData() { return pData; }
+ const ScDPTableData* GetData() const { return pData; }
+
+ USHORT GetOrientation(long nColumn);
+ void SetOrientation(long nColumn, USHORT nNew);
+ long GetPosition(long nColumn);
+
+ long GetDataDimensionCount();
+ String GetDataDimName(long nIndex);
+ BOOL IsDataLayoutDimension(long nDim);
+ USHORT GetDataLayoutOrientation();
+
+ BOOL IsDateDimension(long nDim);
+
+ BOOL SubTotalAllowed(long nColumn); //! move to ScDPResultData
+
+ ScDPDimension* AddDuplicated(long nSource, const String& rNewName);
+ long GetDupCount() const { return nDupCount; }
+
+ long GetSourceDim(long nDim);
+
+ const com::sun::star::uno::Sequence<com::sun::star::sheet::MemberResult>*
+ GetMemberResults( ScDPLevel* pLevel );
+
+ ScDPDimensions* GetDimensionsObject();
+
+ // XDimensionsSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
+ SAL_CALL getDimensions( )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XDataPilotResults
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence<
+ ::com::sun::star::sheet::DataResult > > SAL_CALL getResults( )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XRefreshable
+ virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addRefreshListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XRefreshListener >& l )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeRefreshListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XRefreshListener >& l )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ virtual String getDataDescription(); //! ???
+
+ virtual BOOL getColumnGrand() const;
+ virtual void setColumnGrand(BOOL bSet);
+ virtual BOOL getRowGrand() const;
+ virtual void setRowGrand(BOOL bSet);
+
+ virtual BOOL getIgnoreEmptyRows() const;
+ virtual void setIgnoreEmptyRows(BOOL bSet);
+ virtual BOOL getRepeatIfEmpty() const;
+ virtual void setRepeatIfEmpty(BOOL bSet);
+
+ virtual void validate(); //! ???
+ virtual void disposeData();
+};
+
+class ScDPDimensions : public cppu::WeakImplHelper2<
+ com::sun::star::container::XNameAccess,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScDPSource* pSource;
+ long nDimCount;
+ ScDPDimension** ppDims;
+
+public:
+ ScDPDimensions( ScDPSource* pSrc );
+ virtual ~ScDPDimensions();
+
+ void CountChanged();
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ virtual long getCount() const;
+ virtual ScDPDimension* getByIndex(long nIndex) const;
+};
+
+class ScDPDimension : public cppu::WeakImplHelper5<
+ com::sun::star::sheet::XHierarchiesSupplier,
+ com::sun::star::container::XNamed,
+ com::sun::star::util::XCloneable,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScDPSource* pSource;
+ long nDim;
+ ScDPHierarchies* pHierarchies;
+ long nUsedHier;
+ USHORT nFunction; // enum GeneralFunction
+ String aName; // if empty, take from source
+ long nSourceDim; // >=0 if dup'ed
+
+public:
+ ScDPDimension( ScDPSource* pSrc, long nD );
+ virtual ~ScDPDimension();
+
+ long GetSourceDim() const { return nSourceDim; }
+
+ ScDPDimension* CreateCloneObject();
+ ScDPHierarchies* GetHierarchiesObject();
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XHierarchiesSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL
+ getHierarchies() throw(::com::sun::star::uno::RuntimeException);
+
+ // XCloneable
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL
+ createClone() throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ virtual USHORT getOrientation() const;
+ virtual void setOrientation(USHORT nNew);
+ virtual long getPosition() const;
+ virtual void setPosition(long nNew);
+ virtual BOOL getIsDataLayoutDimension() const;
+ virtual USHORT getFunction() const;
+ virtual void setFunction(USHORT nNew); // for data dimension
+ virtual long getUsedHierarchy() const;
+ virtual void setUsedHierarchy(long nNew);
+ virtual BOOL isDuplicated() const;
+};
+
+class ScDPHierarchies : public cppu::WeakImplHelper2<
+ com::sun::star::container::XNameAccess,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScDPSource* pSource;
+ long nDim;
+ long nHierCount;
+ ScDPHierarchy** ppHiers;
+
+public:
+ ScDPHierarchies( ScDPSource* pSrc, long nD );
+ virtual ~ScDPHierarchies();
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ virtual long getCount() const;
+ virtual ScDPHierarchy* getByIndex(long nIndex) const;
+};
+
+class ScDPHierarchy : public cppu::WeakImplHelper3<
+ com::sun::star::sheet::XLevelsSupplier,
+ com::sun::star::container::XNamed,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScDPSource* pSource;
+ long nDim;
+ long nHier;
+ ScDPLevels* pLevels;
+
+public:
+ ScDPHierarchy( ScDPSource* pSrc, long nD, long nH );
+ virtual ~ScDPHierarchy();
+
+ ScDPLevels* GetLevelsObject();
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XLevelsSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL
+ getLevels() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+class ScDPLevels : public cppu::WeakImplHelper2<
+ com::sun::star::container::XNameAccess,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScDPSource* pSource;
+ long nDim;
+ long nHier;
+ long nLevCount;
+ ScDPLevel** ppLevs;
+
+public:
+ ScDPLevels( ScDPSource* pSrc, long nD, long nH );
+ virtual ~ScDPLevels();
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ virtual long getCount() const;
+ virtual ScDPLevel* getByIndex(long nIndex) const;
+};
+
+class ScDPLevel : public cppu::WeakImplHelper5<
+ com::sun::star::sheet::XMembersSupplier,
+ com::sun::star::container::XNamed,
+ com::sun::star::sheet::XDataPilotMemberResults,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScDPSource* pSource;
+ long nDim;
+ long nHier;
+ long nLev;
+ ScDPMembers* pMembers;
+ com::sun::star::uno::Sequence<com::sun::star::sheet::GeneralFunction> aSubTotals;
+ BOOL bShowEmpty;
+
+public:
+ ScDPLevel( ScDPSource* pSrc, long nD, long nH, long nL );
+ virtual ~ScDPLevel();
+
+ ScDPMembers* GetMembersObject();
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XMembersSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL
+ getMembers() throw(::com::sun::star::uno::RuntimeException);
+
+ // XDataPilotMemberResults
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::MemberResult > SAL_CALL
+ getResults() throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ virtual com::sun::star::uno::Sequence<com::sun::star::sheet::GeneralFunction> getSubTotals() const;
+ virtual void setSubTotals(const com::sun::star::uno::Sequence<
+ com::sun::star::sheet::GeneralFunction>& rNew);
+ virtual BOOL getShowEmpty() const;
+ virtual void setShowEmpty(BOOL bSet);
+
+ //! number format (for data fields and date fields)
+};
+
+class ScDPMembers : public cppu::WeakImplHelper2<
+ com::sun::star::container::XNameAccess,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScDPSource* pSource;
+ long nDim;
+ long nHier;
+ long nLev;
+ long nMbrCount;
+ ScDPMember** ppMbrs;
+
+public:
+ ScDPMembers( ScDPSource* pSrc, long nD, long nH, long nL );
+ virtual ~ScDPMembers();
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ virtual long getCount() const;
+ virtual ScDPMember* getByIndex(long nIndex) const;
+};
+
+class ScDPMember : public cppu::WeakImplHelper3<
+ com::sun::star::container::XNamed,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScDPSource* pSource;
+ long nDim;
+ long nHier;
+ long nLev;
+
+ String aName; // name for api etc.
+// String aCaption; // visible name (changeable by user)
+ double fValue; // used internally for matching
+ BOOL bHasValue; // TRUE if this is a value
+
+ BOOL bVisible;
+ BOOL bShowDet;
+
+public:
+ ScDPMember( ScDPSource* pSrc, long nD, long nH, long nL,
+ const String& rN, double fV, BOOL bHV );
+ virtual ~ScDPMember();
+
+ BOOL IsNamedItem( const ScDPItemData& r ) const;
+ String GetNameStr() const;
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ virtual BOOL getIsVisible() const;
+ virtual void setIsVisible(BOOL bSet);
+ virtual BOOL getShowDetails() const;
+ virtual void setShowDetails(BOOL bSet);
+};
+
+
+#endif
+
diff --git a/sc/inc/drawattr.hxx b/sc/inc/drawattr.hxx
new file mode 100644
index 000000000000..e0ec15dc5315
--- /dev/null
+++ b/sc/inc/drawattr.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawattr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _IDLITEMS_HXX
+#define _IDLITEMS_HXX
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+
+#ifndef _SVX_SVXENUM_HXX
+#include <svx/svxenum.hxx>
+#endif
+
+
+class SvxDrawToolItem : public SfxEnumItem
+{
+public:
+
+ SvxDrawToolItem( const SvxDrawToolItem& rDrawToolItem ) :
+ SfxEnumItem( rDrawToolItem ){}
+
+ SvxDrawToolItem(USHORT nWhich ) : SfxEnumItem(nWhich){}
+
+
+ virtual String GetValueText() const;
+
+
+ virtual String GetValueText(USHORT nVal) const;
+ virtual USHORT GetValueCount() const
+ {return((USHORT)SVX_SNAP_DRAW_TEXT);}
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ virtual SfxPoolItem* Create( SvStream& rStream, USHORT nVer ) const;
+
+ inline SvxDrawToolItem& operator=(const SvxDrawToolItem&
+ rDrawTool)
+ {
+ SetValue( rDrawTool.GetValue() );
+ return *this;
+
+ }
+};
+#endif
+
+
diff --git a/sc/inc/drawpage.hxx b/sc/inc/drawpage.hxx
new file mode 100644
index 000000000000..e75d2739f5e5
--- /dev/null
+++ b/sc/inc/drawpage.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawpage.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DRAWPAGE_HXX
+#define SC_DRAWPAGE_HXX
+
+#ifndef _FM_FMPAGE_HXX
+#include <svx/fmpage.hxx>
+#endif
+
+
+class ScDrawLayer;
+
+// -----------------------------------------------------------------------
+
+class ScDrawPage: public FmFormPage
+{
+public:
+ ScDrawPage(ScDrawLayer& rNewModel, StarBASIC* pBasic, BOOL bMasterPage=FALSE);
+ ~ScDrawPage();
+
+ virtual void RequestBasic();
+};
+
+
+#endif
+
+
diff --git a/sc/inc/drwlayer.hxx b/sc/inc/drwlayer.hxx
new file mode 100644
index 000000000000..c5b477796133
--- /dev/null
+++ b/sc/inc/drwlayer.hxx
@@ -0,0 +1,212 @@
+/*************************************************************************
+ *
+ * $RCSfile: drwlayer.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DRWLAYER_HXX
+#define SC_DRWLAYER_HXX
+
+#ifndef _SV_GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+
+#ifndef _FM_FMMODEL_HXX
+#include <svx/fmmodel.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScDocument;
+class SfxViewShell;
+class ScDrawObjData;
+class ScIMapInfo;
+class IMapObject;
+class ScMarkData;
+class SdrOle2Obj;
+
+// -----------------------------------------------------------------------
+
+class ScTabDeletedHint : public SfxHint
+{
+private:
+ USHORT nTab;
+public:
+ TYPEINFO();
+ ScTabDeletedHint( USHORT nTabNo = USHRT_MAX );
+ virtual ~ScTabDeletedHint();
+
+ USHORT GetTab() { return nTab; }
+};
+
+class ScTabSizeChangedHint : public SfxHint
+{
+private:
+ USHORT nTab;
+public:
+ TYPEINFO();
+ ScTabSizeChangedHint( USHORT nTabNo = USHRT_MAX );
+ virtual ~ScTabSizeChangedHint();
+
+ USHORT GetTab() { return nTab; }
+};
+
+// -----------------------------------------------------------------------
+
+
+class ScDrawLayer: public FmFormModel
+{
+private:
+ String aName;
+ ScDocument* pDoc;
+ SdrUndoGroup* pUndoGroup;
+ BOOL bRecording;
+ BOOL bAdjustEnabled;
+
+private:
+ void MoveAreaMM( USHORT nTab, const Rectangle& rArea, const Point& rMove,
+ const Point& rTopLeft );
+ void MoveCells( USHORT nTab, USHORT nCol1,USHORT nRow1, USHORT nCol2,USHORT nRow2,
+ short nDx,short nDy );
+ void RecalcPos( SdrObject* pObj, ScDrawObjData* pData );
+
+public:
+ ScDrawLayer( ScDocument* pDocument, const String& rName );
+ virtual ~ScDrawLayer();
+
+ virtual SdrPage* AllocPage(FASTBOOL bMasterPage);
+ virtual SdrModel* AllocModel() const;
+ virtual void SetChanged( FASTBOOL bFlg = TRUE );
+
+ virtual Window* GetCurDocViewWin();
+ virtual SvStream* GetDocumentStream(FASTBOOL& rbDeleteAfterUse) const;
+
+ virtual SdrLayerID GetControlExportLayerId( const SdrObject & ) const;
+
+ BOOL HasObjects() const;
+
+ void ScAddPage( USHORT nTab );
+ void ScRemovePage( USHORT nTab );
+ void ScRenamePage( USHORT nTab, const String& rNewName );
+ void ScMovePage( USHORT nOldPos, USHORT nNewPos );
+ // inkl. Inhalt, bAlloc=FALSE -> nur Inhalt
+ void ScCopyPage( USHORT nOldPos, USHORT nNewPos, BOOL bAlloc );
+
+ ScDocument* GetDocument() const { return pDoc; }
+
+ void UpdateBasic(); // DocShell-Basic in DrawPages setzen
+
+ void Load( SvStream& rStream );
+ void Store( SvStream& rStream ) const;
+
+ BOOL GetPrintArea( ScRange& rRange, BOOL bSetHor, BOOL bSetVer ) const;
+
+ // automatische Anpassungen
+
+ void EnableAdjust( BOOL bSet = TRUE ) { bAdjustEnabled = bSet; }
+
+ void BeginCalcUndo();
+ SdrUndoGroup* GetCalcUndo();
+ BOOL IsRecording() { return bRecording; }
+ void AddCalcUndo( SdrUndoAction* pUndo );
+
+ void MoveArea( USHORT nTab, USHORT nCol1,USHORT nRow1, USHORT nCol2,USHORT nRow2,
+ short nDx,short nDy, BOOL bInsDel );
+ void WidthChanged( USHORT nTab, USHORT nCol, long nDifTwips );
+ void HeightChanged( USHORT nTab, USHORT nRow, long nDifTwips );
+
+ BOOL HasObjectsInRows( USHORT nTab, USHORT nStartRow, USHORT nEndRow );
+
+ void DeleteObjectsInArea( USHORT nTab, USHORT nCol1,USHORT nRow1,
+ USHORT nCol2,USHORT nRow2 );
+ void DeleteObjectsInSelection( const ScMarkData& rMark );
+ void DeleteObjects( USHORT nTab );
+
+ void SetPageSize( USHORT nPageNo, const Size& rSize );
+ ULONG GetDefTextHeight() const;
+
+ SdrObject* GetNamedObject( const String& rName, USHORT nId, USHORT& rFoundTab ) const;
+ String GetNewGraphicName() const;
+ void EnsureGraphicNames();
+
+ // Verankerung setzen und ermitteln
+ static void SetAnchor( SdrObject*, ScAnchorType );
+ static ScAnchorType GetAnchor( const SdrObject* );
+
+ // Positionen fuer Detektivlinien
+ static ScDrawObjData* GetObjData( SdrObject* pObj, BOOL bCreate=FALSE );
+
+ // Image-Map
+ static ScIMapInfo* GetIMapInfo( SdrObject* pObj );
+
+ static Graphic GetGraphicFromOle2Obj( const SdrOle2Obj* pOle2Obj );
+ static IMapObject* GetHitIMapObject( SdrObject* pObject,
+ const Point& rWinPoint, const Window& rCmpWnd );
+
+private:
+ static SvPersist* pGlobalDrawPersist; // fuer AllocModel
+public:
+ static void SetGlobalDrawPersist(SvPersist* pPersist);
+};
+
+
+#endif
+
+
diff --git a/sc/inc/editsrc.hxx b/sc/inc/editsrc.hxx
new file mode 100644
index 000000000000..18a95d56e586
--- /dev/null
+++ b/sc/inc/editsrc.hxx
@@ -0,0 +1,157 @@
+/*************************************************************************
+ *
+ * $RCSfile: editsrc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_EDITSRC_HXX
+#define SC_EDITSRC_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScRange, ScAddress
+#endif
+
+#ifndef _SVX_UNOEDSRC_HXX
+#include <svx/unoedsrc.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+class ScEditEngineDefaulter;
+class SfxBroadcaster;
+class SfxHint;
+class SvxEditEngineForwarder;
+
+class ScDocShell;
+class ScHeaderFooterContentObj;
+
+
+class ScHeaderFooterEditSource : public SvxEditSource, public SfxListener
+{
+private:
+ ScHeaderFooterContentObj* pContentObj;
+ USHORT nPart;
+ ScEditEngineDefaulter* pEditEngine;
+ SvxEditEngineForwarder* pForwarder;
+
+public:
+ ScHeaderFooterEditSource( ScHeaderFooterContentObj* pContent,
+ USHORT nP );
+ virtual ~ScHeaderFooterEditSource();
+
+ //! GetEditEngine nur als Uebergang, bis die Feld-Funktionen am Forwarder sind !!!
+ ScEditEngineDefaulter* GetEditEngine() { GetTextForwarder(); return pEditEngine; }
+
+ virtual SvxEditSource* Clone() const ;
+ virtual SvxTextForwarder* GetTextForwarder();
+ virtual void UpdateData();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+};
+
+
+class ScCellEditSource : public SvxEditSource, public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ ScAddress aCellPos;
+ ScEditEngineDefaulter* pEditEngine;
+ SvxEditEngineForwarder* pForwarder;
+ BOOL bDataValid;
+ BOOL bInUpdate;
+
+public:
+ ScCellEditSource(ScDocShell* pDocSh, const ScAddress& rP);
+ virtual ~ScCellEditSource();
+
+ //! GetEditEngine nur als Uebergang, bis die Feld-Funktionen am Forwarder sind !!!
+ ScEditEngineDefaulter* GetEditEngine() { GetTextForwarder(); return pEditEngine; }
+
+ virtual SvxEditSource* Clone() const ;
+ virtual SvxTextForwarder* GetTextForwarder();
+ virtual void UpdateData();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+};
+
+
+class ScAnnotationEditSource : public SvxEditSource, public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ ScAddress aCellPos;
+ ScEditEngineDefaulter* pEditEngine;
+ SvxEditEngineForwarder* pForwarder;
+ BOOL bDataValid;
+
+public:
+ ScAnnotationEditSource(ScDocShell* pDocSh, const ScAddress& rP);
+ virtual ~ScAnnotationEditSource();
+
+ virtual SvxEditSource* Clone() const ;
+ virtual SvxTextForwarder* GetTextForwarder();
+ virtual void UpdateData();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+};
+
+
+#endif
+
diff --git a/sc/inc/editutil.hxx b/sc/inc/editutil.hxx
new file mode 100644
index 000000000000..8436e4c088cd
--- /dev/null
+++ b/sc/inc/editutil.hxx
@@ -0,0 +1,275 @@
+/*************************************************************************
+ *
+ * $RCSfile: editutil.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_EDITUTIL_HXX
+#define SC_EDITUTIL_HXX
+
+
+#ifndef _MyEDITENG_HXX //autogen
+#include <svx/editeng.hxx>
+#endif
+
+#ifndef _SVX_PAGEITEM_HXX //autogen
+#include <svx/pageitem.hxx>
+#endif
+
+#ifndef _DATE_HXX //autogen
+#include <tools/date.hxx>
+#endif
+
+#ifndef _TIME_HXX //autogen
+#include <tools/time.hxx>
+#endif
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+#ifndef _FRACT_HXX //autogen
+#include <tools/fract.hxx>
+#endif
+
+
+class OutputDevice;
+class ScDocument;
+class ScPatternAttr;
+
+class ScEditUtil
+{
+ ScDocument* pDoc;
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTab;
+ Point aScrPos;
+ OutputDevice* pDev; // MapMode muss eingestellt sein
+ double nPPTX;
+ double nPPTY;
+ Fraction aZoomX;
+ Fraction aZoomY;
+
+ static const char __FAR_DATA pCalcDelimiters[];
+
+public:
+ static String ModifyDelimiters( const String& rOld );
+ static String GetSpaceDelimitedString( const EditEngine& rEngine );
+
+public:
+ ScEditUtil( ScDocument* pDocument, USHORT nX, USHORT nY, USHORT nZ,
+ const Point& rScrPosPixel,
+ OutputDevice* pDevice, double nScaleX, double nScaleY,
+ const Fraction& rX, const Fraction& rY ) :
+ pDoc(pDocument),nCol(nX),nRow(nY),nTab(nZ),
+ aScrPos(rScrPosPixel),pDev(pDevice),
+ nPPTX(nScaleX),nPPTY(nScaleY),aZoomX(rX),aZoomY(rY) {}
+
+ Rectangle GetEditArea( const ScPatternAttr* pPattern = NULL );
+};
+
+
+class ScEditAttrTester
+{
+ EditEngine* pEngine;
+ SfxItemSet* pEditAttrs;
+ BOOL bNeedsObject;
+ BOOL bNeedsCellAttr;
+
+public:
+ ScEditAttrTester( EditEngine* pEng );
+ ~ScEditAttrTester();
+
+ BOOL NeedsObject() const { return bNeedsObject; }
+ BOOL NeedsCellAttr() const { return bNeedsCellAttr; }
+ const SfxItemSet& GetAttribs() const { return *pEditAttrs; }
+};
+
+
+// construct pool before constructing EditEngine, destroy pool after EditEngine
+class ScEnginePoolHelper
+{
+protected:
+ SfxItemPool* pEnginePool;
+ SfxItemSet* pDefaults;
+ BOOL bDeleteEnginePool;
+ BOOL bDeleteDefaults;
+
+ ScEnginePoolHelper( SfxItemPool* pEnginePool,
+ BOOL bDeleteEnginePool = FALSE );
+ ScEnginePoolHelper( const ScEnginePoolHelper& rOrg );
+ virtual ~ScEnginePoolHelper();
+};
+
+
+class ScEditEngineDefaulter : public ScEnginePoolHelper, public EditEngine
+{
+public:
+ /// bDeleteEnginePool: Engine becomes the owner of the pool
+ /// and deletes it on destruction
+ ScEditEngineDefaulter( SfxItemPool* pEnginePool,
+ BOOL bDeleteEnginePool = FALSE );
+ /// If rOrg.bDeleteEnginePool: pool gets cloned and will be
+ /// deleted on destruction. Defaults are not set.
+ ScEditEngineDefaulter( const ScEditEngineDefaulter& rOrg );
+ virtual ~ScEditEngineDefaulter();
+
+ /// Creates a copy of SfxItemSet if bRememberCopy set
+ void SetDefaults( const SfxItemSet& rDefaults, BOOL bRememberCopy = TRUE );
+
+ /// Becomes the owner of the SfxItemSet if bTakeOwnership set
+ void SetDefaults( SfxItemSet* pDefaults, BOOL bTakeOwnership = TRUE );
+
+ /// Set the item in the default ItemSet which is created
+ /// if it doesn't exist yet.
+ /// The default ItemSet is then applied to each paragraph.
+ void SetDefaultItem( const SfxPoolItem& rItem );
+
+ /// Overwritten method to be able to apply defaults already set
+ void SetText( const EditTextObject& rTextObject );
+ /// Current defaults are not applied, new defaults are applied
+ void SetTextNewDefaults( const EditTextObject& rTextObject,
+ const SfxItemSet& rDefaults, BOOL bRememberCopy = TRUE );
+
+ /// Overwritten method to be able to apply defaults already set
+ void SetText( const String& rText );
+ /// Current defaults are not applied, new defaults are applied
+ void SetTextNewDefaults( const String& rText,
+ const SfxItemSet& rDefaults, BOOL bRememberCopy = TRUE );
+};
+
+
+// 1/100 mm
+class ScTabEditEngine : public ScEditEngineDefaulter
+{
+private:
+ void Init(const ScPatternAttr& rPattern);
+public:
+ ScTabEditEngine( ScDocument* pDoc ); // Default
+ // pEnginePool = ScDocument.GetEnginePool()
+ // pTextObjectPool = ScDocument.GetEditPool()
+ ScTabEditEngine( const ScPatternAttr& rPattern,
+ SfxItemPool* pEnginePool,
+ SfxItemPool* pTextObjectPool = NULL );
+};
+
+
+struct ScHeaderFieldData
+{
+ String aTitle; // Titel oder Dateiname wenn kein Titel
+ String aLongDocName; // Pfad und Dateiname
+ String aShortDocName; // nur Dateiname
+ String aTabName;
+ Date aDate;
+ Time aTime;
+ long nPageNo;
+ long nTotalPages;
+ SvxNumType eNumType;
+
+ ScHeaderFieldData();
+};
+
+
+// fuer Feldbefehle in der Tabelle
+class ScFieldEditEngine : public ScEditEngineDefaulter
+{
+private:
+ BOOL bExecuteURL;
+
+public:
+ // pEnginePool = ScDocument.GetEnginePool()
+ // pTextObjectPool = ScDocument.GetEditPool()
+ ScFieldEditEngine( SfxItemPool* pEnginePool,
+ SfxItemPool* pTextObjectPool = NULL,
+ BOOL bDeleteEnginePool = FALSE );
+
+ void SetExecuteURL(BOOL bSet) { bExecuteURL = bSet; }
+
+ virtual void FieldClicked( const SvxFieldItem& rField, USHORT, USHORT );
+ virtual String CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rTxtColor, Color*& rFldColor );
+};
+
+
+// for headers/footers with fields
+class ScHeaderEditEngine : public ScEditEngineDefaulter
+{
+private:
+ ScHeaderFieldData aData;
+
+public:
+ ScHeaderEditEngine( SfxItemPool* pEnginePool, BOOL bDeleteEnginePool = FALSE );
+ virtual String CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rTxtColor, Color*& rFldColor );
+
+ void SetTitle(const String& rNew) { aData.aTitle = rNew; }
+ void SetLongDocName(const String& rNew) { aData.aLongDocName = rNew; }
+ void SetShortDocName(const String& rNew) { aData.aShortDocName = rNew; }
+ void SetTabName(const String& rNew) { aData.aTabName = rNew; }
+ void SetDate(const Date& rNew) { aData.aDate = rNew; }
+ void SetTime(const Time& rNew) { aData.aTime = rNew; }
+ void SetPageNo(long nNew) { aData.nPageNo = nNew; }
+ void SetTotalPages(long nNew) { aData.nTotalPages = nNew; }
+ void SetNumType(SvxNumType eNew) { aData.eNumType = eNew; }
+ void SetData(const ScHeaderFieldData& rNew) { aData = rNew; }
+};
+
+// SvxFieldData-Ableitungen sind nach Svx verschoben
+
+
+#endif
+
+
diff --git a/sc/inc/eeimport.hxx b/sc/inc/eeimport.hxx
new file mode 100644
index 000000000000..e41c9c02de8b
--- /dev/null
+++ b/sc/inc/eeimport.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: eeimport.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_EEIMPORT_HXX
+#define SC_EEIMPORT_HXX
+
+#include "global.hxx"
+
+class ScDocument;
+class ScEEParser;
+class ScTabEditEngine;
+class SvStream;
+class Table;
+
+struct ScEEParseEntry;
+
+class ScEEImport
+{
+protected:
+ ScRange aRange;
+ ScDocument* pDoc;
+ ScEEParser* pParser;
+ ScTabEditEngine* pEngine;
+ Table* pRowHeights;
+
+ BOOL GraphicSize( USHORT nCol, USHORT nRow, USHORT nTab,
+ ScEEParseEntry* );
+ void InsertGraphic( USHORT nCol, USHORT nRow, USHORT nTab,
+ ScEEParseEntry* );
+
+public:
+ ScEEImport( ScDocument* pDoc, const ScRange& rRange );
+ virtual ~ScEEImport();
+
+ ULONG Read( SvStream& rStream );
+ ScRange GetRange() { return aRange; }
+ void WriteToDocument( BOOL bSizeColsRows = FALSE,
+ double nOutputFactor = 1.0 );
+};
+
+
+
+#endif
diff --git a/sc/inc/eetext.hxx b/sc/inc/eetext.hxx
new file mode 100644
index 000000000000..f801ba7cd9d1
--- /dev/null
+++ b/sc/inc/eetext.hxx
@@ -0,0 +1,77 @@
+/*************************************************************************
+ *
+ * $RCSfile: eetext.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_EETEXT_HXX
+#define SC_EETEXT_HXX
+
+// hier nur Items, die nicht in scitems.hxx sind!
+
+#define ITEMID_HYPHENZONE SID_ATTR_PARA_HYPHENZONE
+#define ITEMID_FMTBREAK SID_ATTR_PARA_PAGEBREAK
+#define ITEMID_FMTSPLIT SID_ATTR_PARA_SPLIT
+#define ITEMID_WIDOWS SID_ATTR_PARA_WIDOWS
+#define ITEMID_ORPHANS SID_ATTR_PARA_ORPHANS
+
+#define ITEMID_LINESPACING SID_ATTR_CHAR_FONTLIST
+
+#endif
+
+
diff --git a/sc/inc/fielduno.hxx b/sc/inc/fielduno.hxx
new file mode 100644
index 000000000000..fcc32fd8c2f7
--- /dev/null
+++ b/sc/inc/fielduno.hxx
@@ -0,0 +1,446 @@
+/*************************************************************************
+ *
+ * $RCSfile: fielduno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FIELDUNO_HXX
+#define SC_FIELDUNO_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScRange, ScAddress
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+#ifndef _MyEDITDATA_HXX //autogen
+#include <svx/editdata.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFIELD_HPP_
+#include <com/sun/star/text/XTextField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCONTAINER_HPP_
+#include <com/sun/star/container/XContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+
+
+class SvxEditSource;
+class SvxFieldItem;
+class ScCellFieldObj;
+class ScHeaderFieldObj;
+class ScHeaderFooterContentObj;
+
+
+//------------------------------------------------------------------
+
+
+class ScCellFieldsObj : public cppu::WeakImplHelper4<
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::container::XContainer,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ ScAddress aCellPos;
+ SvxEditSource* pEditSource;
+
+ ScCellFieldObj* GetObjectByIndex_Impl(INT32 Index) const;
+
+public:
+ ScCellFieldsObj(ScDocShell* pDocSh, const ScAddress& rPos);
+ virtual ~ScCellFieldsObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XContainer
+ virtual void SAL_CALL addContainerListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XContainerListener >& xListener )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeContainerListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XContainerListener >& xListener )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScCellFieldObj : public cppu::WeakImplHelper4<
+ com::sun::star::text::XTextField,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XUnoTunnel,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ SfxItemPropertySet aPropSet;
+ ScDocShell* pDocShell;
+ ScAddress aCellPos;
+ SvxEditSource* pEditSource;
+ ESelection aSelection;
+
+ String aUrl; // Inhalt, wenn noch nicht eingefuegt (nur dann!)
+ String aRepresentation;
+ String aTarget;
+
+public:
+ ScCellFieldObj();
+ ScCellFieldObj(ScDocShell* pDocSh, const ScAddress& rPos,
+ const ESelection& rSel);
+ virtual ~ScCellFieldObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // per getImplementation gerufen:
+ void DeleteField();
+ BOOL IsInserted() const { return pEditSource != NULL; }
+ SvxFieldItem CreateFieldItem();
+ void InitDoc( ScDocShell* pDocSh, const ScAddress& rPos,
+ const ESelection& rSel );
+
+ // XTextField
+ virtual ::rtl::OUString SAL_CALL getPresentation( sal_Bool bShowCommand )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XTextContent
+ virtual void SAL_CALL attach( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xTextRange )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL
+ getAnchor() throw(::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::lang::XEventListener >& xListener )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::lang::XEventListener >& aListener )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScCellFieldObj* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::text::XTextContent> xObj );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+//------------------------------------------------------------------
+
+class ScHeaderFieldsObj : public cppu::WeakImplHelper4<
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::container::XContainer,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScHeaderFooterContentObj* pContentObj;
+ USHORT nPart;
+ UINT16 nType;
+ SvxEditSource* pEditSource;
+
+ ScHeaderFieldObj* GetObjectByIndex_Impl(INT32 Index) const;
+
+public:
+ ScHeaderFieldsObj(ScHeaderFooterContentObj* pContent,
+ USHORT nP, USHORT nT);
+ virtual ~ScHeaderFieldsObj();
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XContainer
+ virtual void SAL_CALL addContainerListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XContainerListener >& xListener )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeContainerListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::container::XContainerListener >& xListener )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScHeaderFieldObj : public cppu::WeakImplHelper4<
+ com::sun::star::text::XTextField,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XUnoTunnel,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ SfxItemPropertySet aPropSet;
+ ScHeaderFooterContentObj* pContentObj;
+ USHORT nPart;
+ UINT16 nType;
+ SvxEditSource* pEditSource;
+ ESelection aSelection;
+
+public:
+ ScHeaderFieldObj();
+ ScHeaderFieldObj(ScHeaderFooterContentObj* pContent, USHORT nP,
+ USHORT nT, const ESelection& rSel);
+ virtual ~ScHeaderFieldObj();
+
+ // per getImplementation gerufen:
+ void DeleteField();
+ BOOL IsInserted() const { return pEditSource != NULL; }
+ SvxFieldItem CreateFieldItem();
+ void InitDoc( ScHeaderFooterContentObj* pContent, USHORT nP,
+ const ESelection& rSel );
+
+ // XTextField
+ virtual ::rtl::OUString SAL_CALL getPresentation( sal_Bool bShowCommand )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XTextContent
+ virtual void SAL_CALL attach( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xTextRange )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL
+ getAnchor() throw(::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::lang::XEventListener >& xListener )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::lang::XEventListener >& aListener )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScHeaderFieldObj* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::text::XTextContent> xObj );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+#endif
+
diff --git a/sc/inc/filter.hxx b/sc/inc/filter.hxx
new file mode 100644
index 000000000000..2bde1f043e2b
--- /dev/null
+++ b/sc/inc/filter.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: filter.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FILTER_HXX
+#define SC_FILTER_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _RTL_TEXTENC_H
+#include <rtl/textenc.h>
+#endif
+
+class SfxMedium;
+class SvStream;
+
+class ScAddress;
+class ScDocument;
+class ScRange;
+
+// Return-Werte Im-/Exportfilter (ULONG)
+
+typedef ULONG FltError;
+//enum FltError {
+
+#define eERR_OK ERRCODE_NONE // kein Fehler, alles OK
+#define eERR_OPEN SCERR_IMPORT_OPEN // ...
+#define eERR_UNBEK SCERR_IMPORT_UNKNOWN // unbekannter Fehler, auch historische Bedeutung
+#define eERR_NOMEM SCERR_IMPORT_OUTOFMEM // nicht mehr genuegend Speicher zur Verfuegung
+#define eERR_UNKN_WK SCERR_IMPORT_UNKNOWN_WK // unbekanntes WK?-Format (Lotus 1-2-3)
+#define eERR_FORMAT SCERR_IMPORT_FORMAT // Formatfehler beim Lesen (kein Formel-Fehler!)
+#define eERR_NI SCERR_IMPORT_NI // Nicht implementierter Filter
+#define eERR_UNKN_BIFF SCERR_IMPORT_UNKNOWN_BIFF // unbekanntes BIFF-Format (Excel)
+#define eERR_NI_BIFF SCERR_IMPORT_NI_BIFF // nicht implementiertes BIFF-Format
+#define eERR_FILEPASSWD SCERR_IMPORT_FILEPASSWD // File Passwordgeschuetzt
+#define eERR_INTERN SCERR_IMPORT_INTERNAL // interner Fehler
+#define eERR_RNGOVRFLW SCWARN_IMPORT_RANGE_OVERFLOW// ueberlauf der Zellkoordinaten:
+ // Tabelle abgschnitten auf erlaubtem Bereich
+// mehr Fehlercodes siehe scerrors.hxx
+
+// };
+
+
+// fuer Import
+enum EXCIMPFORMAT { EIF_AUTO, EIF_BIFF5, EIF_BIFF8, EIF_BIFF_LE4 };
+
+// fuer Export
+enum ExportFormatLotus { ExpWK1, ExpWK3, ExpWK4 };
+enum ExportFormatExcel { ExpBiff2, ExpBiff3, ExpBiff4, ExpBiff4W, ExpBiff5 };
+
+
+// Optionen fuer DIF-Im-/Export (Kombination ueber '|')
+#define SC_DIFOPT_PLAIN 0x00000000
+#define SC_DIFOPT_DATE 0x00000001
+#define SC_DIFOPT_TIME 0x00000002
+#define SC_DIFOPT_CURRENCY 0x00000004
+
+#define SC_DIFOPT_EXCEL (SC_DIFOPT_DATE|SC_DIFOPT_TIME|SC_DIFOPT_CURRENCY)
+
+
+// ***********************************************************************
+// Diverse Importfilter
+// ***********************************************************************
+
+FltError ScImportLotus123( SfxMedium&, ScDocument*, CharSet eSrc = RTL_TEXTENCODING_DONTKNOW );
+
+FltError ScImportExcel( SvStream&, ScDocument* );
+
+FltError ScImportExcel( SfxMedium&, ScDocument* );
+
+FltError ScImportExcel( SfxMedium&, ScDocument*, const EXCIMPFORMAT );
+ // eFormat == EIF_AUTO -> passender Filter wird automatisch verwendet
+ // eFormat == EIF_BIFF5 -> nur Biff5-Stream fuehrt zum Erfolg (auch wenn in einem Excel97-Doc)
+ // eFormat == EIF_BIFF5 -> nur Biff8-Stream fuehrt zum Erfolg (nur in Excel97-Docs)
+ // eFormat == EIF_BIFF_LE4 -> nur Nicht-Storage-Dateien _koennen_ zum Erfolg fuehren
+
+FltError ScImportStarCalc10( SvStream&, ScDocument* );
+
+FltError ScImportDif( SvStream&, ScDocument*, const ScAddress& rInsPos,
+ const CharSet eSrc = RTL_TEXTENCODING_DONTKNOW, UINT32 nDifOption = SC_DIFOPT_EXCEL );
+
+FltError ScImportRTF( SvStream&, ScDocument*, ScRange& rRange );
+
+FltError ScImportHTML( SvStream&, ScDocument*, ScRange& rRange, double nOutputFactor = 1.0 );
+
+// ***********************************************************************
+// Diverse Exportfilter
+// ***********************************************************************
+
+FltError ScExportLotus123( SvStream&, ScDocument*, ExportFormatLotus, CharSet eDest );
+
+FltError ScExportExcel234( SvStream&, ScDocument*, ExportFormatExcel, CharSet eDest );
+
+FltError ScExportExcel5( SfxMedium&, ScDocument*, const BOOL bTuerk, CharSet eDest );
+
+FltError ScExportDif( SvStream&, ScDocument*, const ScAddress& rOutPos, const CharSet eDest,
+ UINT32 nDifOption = SC_DIFOPT_EXCEL );
+
+FltError ScExportDif( SvStream&, ScDocument*, const ScRange& rRange, const CharSet eDest,
+ UINT32 nDifOption = SC_DIFOPT_EXCEL );
+
+FltError ScExportHTML( SvStream&, ScDocument*, const ScRange& rRange, const CharSet eDest, BOOL bAll,
+ const String& rStreamPath );
+
+FltError ScExportRTF( SvStream&, ScDocument*, const ScRange& rRange, const CharSet eDest );
+
+#endif
+
diff --git a/sc/inc/fmtuno.hxx b/sc/inc/fmtuno.hxx
new file mode 100644
index 000000000000..5f260db5d10e
--- /dev/null
+++ b/sc/inc/fmtuno.hxx
@@ -0,0 +1,364 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FMTUNO_HXX
+#define SC_FMTUNO_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScRange, ScAddress
+#endif
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCONDITIONALENTRIES_HPP_
+#include <com/sun/star/sheet/XSheetConditionalEntries.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCONDITION_HPP_
+#include <com/sun/star/sheet/XSheetCondition.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCONDITIONALENTRY_HPP_
+#include <com/sun/star/sheet/XSheetConditionalEntry.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE5_HXX_
+#include <cppuhelper/implbase5.hxx>
+#endif
+
+
+class ScDocument;
+class ScTableConditionalEntry;
+class ScConditionalFormat;
+class ScValidationData;
+
+
+// "erstmal" nur dummer Container
+
+class ScTableConditionalFormat : public cppu::WeakImplHelper5<
+ com::sun::star::sheet::XSheetConditionalEntries,
+ com::sun::star::container::XNameAccess,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::lang::XUnoTunnel,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ List aEntries;
+
+ ScTableConditionalEntry* GetObjectByIndex_Impl(USHORT nIndex) const;
+ void AddEntry_Impl( USHORT nMode,
+ const String& rExpr1, const String& rExpr2,
+ const ScAddress& rPos, const String& rStyle );
+
+public:
+ ScTableConditionalFormat();
+ ScTableConditionalFormat(ScDocument* pDoc, ULONG nKey, BOOL bEnglish);
+ virtual ~ScTableConditionalFormat();
+
+ void FillFormat( ScConditionalFormat& rFormat,
+ ScDocument* pDoc, BOOL bEnglish ) const;
+ void DataChanged();
+
+ // XSheetConditionalEntries
+ virtual void SAL_CALL addNew( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue >& aConditionalEntry )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByIndex( sal_Int32 nIndex )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL clear() throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScTableConditionalFormat* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XSheetConditionalEntries> xObj );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+
+class ScTableConditionalEntry : public cppu::WeakImplHelper3<
+ com::sun::star::sheet::XSheetCondition,
+ com::sun::star::sheet::XSheetConditionalEntry,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScTableConditionalFormat* pParent;
+ USHORT nMode; // enum ScConditionMode
+ String aExpr1;
+ String aExpr2;
+ ScAddress aSrcPos;
+ String aStyle;
+
+public:
+ ScTableConditionalEntry();
+ ScTableConditionalEntry( ScTableConditionalFormat* pPar,
+ USHORT nM, const String& rEx1,
+ const String& rEx2, const ScAddress& rPos,
+ const String& rSt );
+ virtual ~ScTableConditionalEntry();
+
+ void GetData( USHORT& rM, String& rEx1, String& rEx2,
+ ScAddress& rPos, String& rSt ) const;
+
+ // XSheetCondition
+ virtual ::com::sun::star::sheet::ConditionOperator SAL_CALL getOperator()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setOperator( ::com::sun::star::sheet::ConditionOperator nOperator )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getFormula1() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setFormula1( const ::rtl::OUString& aFormula1 )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getFormula2() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setFormula2( const ::rtl::OUString& aFormula2 )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::table::CellAddress SAL_CALL getSourcePosition()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSourcePosition( const ::com::sun::star::table::CellAddress& aSourcePosition )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetConditionalEntry
+ virtual ::rtl::OUString SAL_CALL getStyleName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setStyleName( const ::rtl::OUString& aStyleName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+
+class ScTableValidationObj : public cppu::WeakImplHelper4<
+ com::sun::star::sheet::XSheetCondition,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XUnoTunnel,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ SfxItemPropertySet aPropSet;
+ USHORT nMode; // enum ScConditionMode
+ String aExpr1;
+ String aExpr2;
+ ScAddress aSrcPos;
+ USHORT nValMode; // enum ScValidationMode
+ BOOL bIgnoreBlank;
+ BOOL bShowInput;
+ String aInputTitle;
+ String aInputMessage;
+ BOOL bShowError;
+ USHORT nErrorStyle; // enum ScValidErrorStyle
+ String aErrorTitle;
+ String aErrorMessage;
+
+ void ClearData_Impl();
+
+public:
+ ScTableValidationObj();
+ ScTableValidationObj(ScDocument* pDoc, ULONG nKey, BOOL bEnglish);
+ virtual ~ScTableValidationObj();
+
+ ScValidationData* CreateValidationData( ScDocument* pDoc, BOOL bEnglish ) const;
+ void DataChanged();
+
+ // XSheetCondition
+ virtual ::com::sun::star::sheet::ConditionOperator SAL_CALL getOperator()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setOperator( ::com::sun::star::sheet::ConditionOperator nOperator )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getFormula1() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setFormula1( const ::rtl::OUString& aFormula1 )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getFormula2() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setFormula2( const ::rtl::OUString& aFormula2 )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::table::CellAddress SAL_CALL getSourcePosition()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSourcePosition( const ::com::sun::star::table::CellAddress& aSourcePosition )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScTableValidationObj* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet> xObj );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif
+
diff --git a/sc/inc/global.hxx b/sc/inc/global.hxx
new file mode 100644
index 000000000000..16cb7f9d5c94
--- /dev/null
+++ b/sc/inc/global.hxx
@@ -0,0 +1,1619 @@
+/*************************************************************************
+ *
+ * $RCSfile: global.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SCGLOB_HXX
+#define SC_SCGLOB_HXX
+
+#ifndef _LANG_HXX //autogen
+#include <tools/lang.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+class ImageList;
+class Bitmap;
+class International;
+class SfxItemSet;
+class Color;
+
+
+#ifdef WIN
+// auf Windows 16 muessen die Zeilen weiter auf 8192 begrenzt werden
+// (zum Testen per Hand definieren)
+#define SC_LIMIT_ROWS
+#endif
+
+// Macro fuer den Call-Profiler unter WinNT
+// mit S_CAP kann eine Messung gestarted, mit E_CAP wieder gestoppt werden
+#if defined( WNT ) && defined( PROFILE )
+
+extern "C" {
+ void StartCAP();
+ void StopCAP();
+ void DumpCAP();
+};
+
+#define S_CAP StartCAP();
+#define E_CAP StopCAP(); DumpCAP();
+
+#endif
+
+//------------------------------------------------------------------------
+struct LabelData;
+//------------------------------------------------------------------------
+
+// die 1000 Namen des Calc...
+// Clipboard-Namen sind jetzt in so3/soapp.hxx
+// STRING_SCAPP war "scalc3", "scalc4", jetzt nur noch "scalc"
+
+#define STRING_SCAPP "scalc"
+#define STRING_SCSTREAM "StarCalcDocument"
+
+#define STRING_STANDARD "Standard"
+
+// '\r' geht auf'm Mac nicht...
+#define CHAR_CR char(13)
+
+#define MINDOUBLE 1.7e-307
+#define MAXDOUBLE 1.7e307
+
+#define MAXROW_30 8191
+#define MAXROW_40 31999
+#ifdef SC_LIMIT_ROWS
+#define MAXROW 8191
+#else
+#define MAXROW 31999
+#endif
+
+#define MAXCOL 255
+#define MAXTAB 255
+
+#define MINZOOM 20
+#define MAXZOOM 400
+
+#define MAXSUBTOTAL 3
+#define MAXSORT 3
+#define MAXQUERY 8
+#define PIVOT_MAXFIELD 8
+
+#define SC_START_INDEX_DB_COLL 50000
+ // Oberhalb dieser Grenze liegen
+ // die Indizes fuer DBBereiche
+
+#define VALIDROW(nRow) (nRow>=0 && nRow<=MAXROW)
+#define VALIDCOL(nCol) (nCol>=0 && nCol<=MAXCOL)
+#define VALIDTAB(nTab) (nTab>=0 && nTab<=MAXTAB)
+#define VALIDCOLROW(nCol,nRow) (VALIDCOL(nCol) && VALIDROW(nRow))
+#define VALIDCOLROWTAB(nCol,nRow,nTab) (VALIDCOL(nCol) && VALIDROW(nRow) && VALIDTAB(nTab))
+
+inline BOOL ValidColRow(USHORT nCol, USHORT nRow)
+{
+ return nCol <= MAXCOL && nRow <= MAXROW;
+}
+
+inline BOOL ValidColRowTab(USHORT nCol, USHORT nRow, USHORT nTab)
+{
+ return nCol <= MAXCOL && nRow <= MAXROW && nTab <= MAXTAB;
+}
+
+/*
+#ifdef OS2
+#define PIXEL_PER_INCH 72.0
+#else
+#define PIXEL_PER_INCH 96.0
+#endif
+*/
+
+#define PIXEL_PER_INCH 96.0
+
+#define CM_PER_INCH 2.54
+#define POINTS_PER_INCH 72.27
+#define PIXEL_PER_POINT (PIXEL_PER_INCH / POINTS_PER_INCH)
+#define INCHT_PER_CM (1.0 / CM_PER_INCH)
+#define POINTS_PER_CM (POINTS_PER_INCH / CM_PER_INCH)
+#define TWIPS_PER_POINT 20.0
+#define TWIPS_PER_INCH (TWIPS_PER_POINT * POINTS_PER_INCH)
+#define TWIPS_PER_CM (TWIPS_PER_INCH / CM_PER_INCH)
+#define CM_PER_TWIPS (CM_PER_INCH / TWIPS_PER_INCH)
+#define TWIPS_PER_PIXEL (TWIPS_PER_INCH / PIXEL_PER_INCH)
+#define TWIPS_PER_CHAR (TWIPS_PER_INCH / 13.6)
+#define PIXEL_PER_TWIPS (PIXEL_PER_INCH / TWIPS_PER_INCH)
+#define HMM_PER_TWIPS (CM_PER_TWIPS * 1000.0)
+
+#define STD_COL_WIDTH 1285
+#define STD_EXTRA_WIDTH 113 // 2mm Extra fuer optimale Breite
+ // Standard Zeilenhoehe: Text + Rand - STD_ROWHEIGHT_DIFF
+
+
+#define MAX_EXTRA_WIDTH 23811 // 42cm in TWIPS
+#define MAX_EXTRA_HEIGHT 23811
+#define MAX_COL_WIDTH 56693 // 1m in TWIPS
+#define MAX_COL_HEIGHT 56693
+
+#ifdef MAC
+#define STD_ROWHEIGHT_DIFF 3
+#else
+#define STD_ROWHEIGHT_DIFF 23
+#endif
+#define STD_FONT_HEIGHT 200 // entspricht 10 Punkt
+
+//! statt STD_ROW_HEIGHT ScGlobal::nStdRowHeight benutzen !
+
+#ifdef MAC // Mac braucht mehr Platz
+#define STD_ROW_HEIGHT (14.8 * TWIPS_PER_POINT) //
+#else
+#define STD_ROW_HEIGHT (12.8 * TWIPS_PER_POINT) // 256 Twips, 0.45 cm
+#endif
+
+ // Standardgroesse als Ole-Server (Zellen)
+#define OLE_STD_CELLS_X 4
+#define OLE_STD_CELLS_Y 5
+
+#define SC_SIZE_OPTIMUM 0xFFFF
+
+ // Update-Flags
+#define UF_SCROLL_LEFT 1
+#define UF_SCROLL_RIGHT 2
+#define UF_SCROLL_UP 4
+#define UF_SCROLL_DOWN 8
+#define UF_ROW 16
+#define UF_VIEW 32
+
+ // Repaint-Flags (fuer Messages)
+#define PAINT_GRID 1
+#define PAINT_TOP 2
+#define PAINT_LEFT 4
+#define PAINT_EXTRAS 8
+#define PAINT_INVERT 16
+#define PAINT_MARKS 32
+#define PAINT_OBJECTS 64
+#define PAINT_SIZE 128
+#define PAINT_ALL ( PAINT_GRID | PAINT_TOP | PAINT_LEFT | PAINT_EXTRAS | PAINT_OBJECTS | PAINT_SIZE )
+
+
+ // Flags fuer Spalten / Zeilen
+ // FILTERED immer zusammen mit HIDDEN
+ // FILTERED und MANUALSIZE nur fuer Zeilen moeglich
+#define CR_HIDDEN 1
+//#define CR_MARKED 2
+#define CR_PAGEBREAK 4
+#define CR_MANUALBREAK 8
+#define CR_FILTERED 16
+#define CR_MANUALSIZE 32
+
+// was davon kommt in die Datei:
+#define CR_SAVEMASK ( ~CR_PAGEBREAK )
+
+ // Insert-/Delete-Flags
+#define IDF_VALUE 0x0001
+#define IDF_DATETIME 0x0002
+#define IDF_STRING 0x0004
+#define IDF_NOTE 0x0008
+#define IDF_FORMULA 0x0010
+#define IDF_HARDATTR 0x0020
+#define IDF_STYLES 0x0040
+#define IDF_OBJECTS 0x0080
+#define IDF_EDITATTR 0x0100
+#define IDF_ATTRIB ( IDF_HARDATTR | IDF_STYLES )
+#define IDF_CONTENTS ( IDF_VALUE | IDF_DATETIME | IDF_STRING | IDF_NOTE | IDF_FORMULA )
+#define IDF_ALL ( IDF_CONTENTS | IDF_ATTRIB | IDF_OBJECTS )
+#define IDF_NONE 0x0000
+
+#define PASTE_NOFUNC 0
+#define PASTE_ADD 1
+#define PASTE_SUB 2
+#define PASTE_MUL 3
+#define PASTE_DIV 4
+
+#define PASTE_NONEMPTY 5
+
+ // Bits fuer HasAttr
+#define HASATTR_LINES 1
+#define HASATTR_MERGED 2
+#define HASATTR_OVERLAPPED 4
+#define HASATTR_PROTECTED 8
+#define HASATTR_SHADOW 16
+#define HASATTR_NEEDHEIGHT 32
+#define HASATTR_SHADOW_RIGHT 64
+#define HASATTR_SHADOW_DOWN 128
+#define HASATTR_AUTOFILTER 256
+#define HASATTR_CONDITIONAL 512
+#define HASATTR_ROTATE 1024
+#define HASATTR_NOTOVERLAPPED 2048
+
+#define HASATTR_PAINTEXT ( HASATTR_LINES | HASATTR_SHADOW | HASATTR_CONDITIONAL )
+
+
+#define EMPTY_STRING ScGlobal::GetEmptyString()
+
+ // Layer-ID's fuer Drawing
+#define SC_LAYER_FRONT 0
+#define SC_LAYER_BACK 1
+#define SC_LAYER_INTERN 2
+#define SC_LAYER_CONTROLS 3
+
+ // Tabellen linken
+#define SC_LINK_NONE 0
+#define SC_LINK_NORMAL 1
+#define SC_LINK_VALUE 2
+
+ // Eingabe
+#define SC_ENTER_NORMAL 0
+#define SC_ENTER_BLOCK 1
+#define SC_ENTER_MATRIX 2
+
+ // Step = 10pt, max. Einzug = 100 Schritte
+#define SC_INDENT_STEP 200
+#define SC_MAX_INDENT 20000
+
+ // Szenario-Flags
+#define SC_SCENARIO_COPYALL 1
+#define SC_SCENARIO_SHOWFRAME 2
+#define SC_SCENARIO_PRINTFRAME 4
+#define SC_SCENARIO_TWOWAY 8
+#define SC_SCENARIO_ATTRIB 16
+#define SC_SCENARIO_VALUE 32
+
+
+#ifndef DELETEZ
+#define DELETEZ(pPtr) { delete pPtr; pPtr = 0; }
+#endif
+
+ // Ist Bit in Set gesetzt?
+#define IS_SET(bit,set)(((set)&(bit))==(bit))
+
+#define MAX_FUNCCAT 12 // max. Kategorien fuer Funktionen
+#define SEL_ALL -1 // Eingabezeile: alles Selektieren
+#define RES_CANCEL 0 // Resultate der Funk.AutoPilot-Seiten
+#define RES_BACKWARD 1
+#define RES_END 2
+
+enum CellType
+ {
+ CELLTYPE_NONE,
+ CELLTYPE_VALUE,
+ CELLTYPE_STRING,
+ CELLTYPE_FORMULA,
+ CELLTYPE_NOTE,
+ CELLTYPE_EDIT,
+ CELLTYPE_SYMBOLS, // fuer Laden/Speichern
+
+ CELLTYPE_DESTROYED
+ };
+
+enum DelCellCmd
+ {
+ DEL_CELLSUP,
+ DEL_CELLSLEFT,
+ DEL_DELROWS,
+ DEL_DELCOLS,
+ DEL_NONE
+ };
+
+enum InsCellCmd
+ {
+ INS_CELLSDOWN,
+ INS_CELLSRIGHT,
+ INS_INSROWS,
+ INS_INSCOLS,
+ INS_NONE
+ };
+
+enum UpdateRefMode
+ {
+ URM_INSDEL,
+ URM_COPY,
+ URM_MOVE,
+ URM_REORDER
+ };
+
+enum FillDir
+ {
+ FILL_TO_BOTTOM,
+ FILL_TO_RIGHT,
+ FILL_TO_TOP,
+ FILL_TO_LEFT
+ };
+
+enum FillCmd
+ {
+ FILL_SIMPLE,
+ FILL_LINEAR,
+ FILL_GROWTH,
+ FILL_DATE,
+ FILL_AUTO
+ };
+
+enum FillDateCmd
+ {
+ FILL_DAY,
+ FILL_WEEKDAY,
+ FILL_MONTH,
+ FILL_YEAR
+ };
+
+enum ScDirection
+ {
+ DIR_BOTTOM,
+ DIR_RIGHT,
+ DIR_TOP,
+ DIR_LEFT
+ };
+
+enum ScSizeMode
+ {
+ SC_SIZE_DIRECT, // setzen oder bei 0 ausblenden
+ SC_SIZE_OPTIMAL, // alles auf optimal
+ SC_SIZE_SHOW, // einblenden mit alter Hoehe
+ SC_SIZE_VISOPT // nur sichtbare auf optimal
+ };
+
+enum ScInputMode
+ {
+ SC_INPUT_NONE,
+ SC_INPUT_TYPE, // Eingabe, ohne im Inplace-Modus zu sein
+ SC_INPUT_TABLE, // Textcursor in der Tabelle
+ SC_INPUT_TOP // Textcursor in der Eingabezeile
+ };
+
+enum ScVObjMode // Ausgabemodi von Objekten auf einer Seite
+{
+ VOBJ_MODE_SHOW,
+ VOBJ_MODE_HIDE,
+ VOBJ_MODE_DUMMY
+};
+
+enum ScAnchorType // Verankerung eines Zeichenobjekts
+{
+ SCA_CELL,
+ SCA_PAGE,
+ SCA_DONTKNOW // bei Mehrfachselektion
+};
+
+enum ScGetDBMode
+{
+ SC_DB_MAKE, // wenn noetig, "unbenannt" anlegen
+ SC_DB_IMPORT, // wenn noetig, "Importx" anlegen
+ SC_DB_OLD // nicht neu anlegen
+};
+
+enum ScLkUpdMode
+{ //Verknuepfungen
+ LM_ALWAYS, //immer aktualisieren
+ LM_NEVER, //niemals
+ LM_ON_DEMAND, //auf nachfrage
+ LM_UNKNOWN //Shit happens
+};
+
+
+// -----------------------------------------------------------------------
+
+//==================================================================
+
+// -----------------------------------------------------------------------
+struct ScImportParam
+{
+ USHORT nCol1;
+ USHORT nRow1;
+ USHORT nCol2;
+ USHORT nRow2;
+ BOOL bImport;
+ String aDBName; // Alias der Datenbank
+ String aStatement;
+ BOOL bNative;
+ BOOL bSql; // Statement oder Name?
+ BYTE nType; // enum DBObject
+
+ ScImportParam();
+ ScImportParam( const ScImportParam& r );
+ ~ScImportParam();
+
+ ScImportParam& operator= ( const ScImportParam& r );
+ BOOL operator== ( const ScImportParam& r ) const;
+ void Clear ();
+};
+
+// -----------------------------------------------------------------------
+
+class ScDocument;
+class ScDocShell;
+class ScDocShellRef;
+class SvxSearchItem;
+class ScAutoFormat;
+class FuncCollection;
+class ScUnoAddInCollection;
+class ScUserList;
+class SvxBrushItem;
+class ScFunctionList;
+class ScFunctionMgr;
+class SfxItemPool;
+class SdrModel;
+class EditTextObject;
+class SfxObjectShell;
+class SvNumberFormatter;
+class ScUnitConverter;
+class CharClass;
+
+namespace com { namespace sun { namespace star { namespace lang {
+ struct Locale;
+}}}}
+
+#ifndef _SCALC_EXE
+class ScGlobal
+{
+ static ScDocument* pClipDoc;
+ static SdrModel* pClipModel;
+ static BYTE nClipState;
+ static SvxSearchItem* pSearchItem;
+ static ScAutoFormat* pAutoFormat;
+ static FuncCollection* pFuncCollection;
+ static ScUnoAddInCollection* pAddInCollection;
+ static ScUserList* pUserList;
+ static String** ppRscString;
+ static String* pStrScDoc;
+ static String* pEmptyString;
+ static String* pStrClipDocName;
+ static SvxBrushItem* pEmptyBrushItem;
+ static SvxBrushItem* pButtonBrushItem;
+ static SvxBrushItem* pEmbeddedBrushItem;
+ static SvxBrushItem* pProtectedBrushItem;
+
+ static ImageList* pOutlineBitmaps;
+
+// static Bitmap* pAnchorBitmap;
+// static Bitmap* pGrayAnchorBitmap;
+
+ static ScFunctionList* pStarCalcFunctionList;
+ static ScFunctionMgr* pStarCalcFunctionMgr;
+
+ static ScUnitConverter* pUnitConverter;
+
+public:
+ static International* pScInternational;
+ static ::com::sun::star::lang::Locale* pLocale;
+ static CharClass* pCharClass;
+ static LanguageType eLnge;
+ static sal_Unicode cListDelimiter;
+ static ScDocument* GetClipDoc();
+ static BOOL HasClipDoc();
+ static const String& GetClipDocName();
+ static void SetClipDocName( const String& rNew );
+ static void CaptureClip();
+ static void ReleaseClip();
+ static BOOL IsClipCaptured();
+ static void SetClipDraw(SdrModel* pModel);
+ static BOOL IsClipDraw();
+ static SdrModel* GetClipModel();
+ static const SvxSearchItem& GetSearchItem();
+ static void SetSearchItem( const SvxSearchItem& rNew );
+ static ScAutoFormat* GetAutoFormat();
+ static void ClearAutoFormat(); //BugId 54209
+ static FuncCollection* GetFuncCollection();
+ static ScUnoAddInCollection* GetAddInCollection();
+ static ScUserList* GetUserList();
+ static void SetUserList( const ScUserList* pNewList );
+ static const String& GetRscString( USHORT nIndex );
+ static void OpenURL( const String& rURL, const String& rTarget );
+ static String GetAbsDocName( const String& rFileName,
+ SfxObjectShell* pShell );
+ static String GetDocTabName( const String& rFileName,
+ const String& rTabName );
+ static ULONG GetStandardFormat( SvNumberFormatter&,
+ ULONG nFormat, short nType );
+ static ULONG GetStandardFormat( double, SvNumberFormatter&,
+ ULONG nFormat, short nType );
+
+ static double nScreenPPTX;
+ static double nScreenPPTY;
+
+ static ScDocShellRef* pDrawClipDocShellRef;
+
+ static USHORT nDefFontHeight;
+ static USHORT nStdRowHeight;
+
+ static long nLastRowHeightExtra;
+ static long nLastColWidthExtra;
+
+ static void Init(); // am Anfang
+ static void InitAddIns();
+ static void Clear(); // bei Programmende
+
+ static void InitTextHeight(SfxItemPool* pPool);
+ static SvxBrushItem* GetEmptyBrushItem() { return pEmptyBrushItem; }
+ static SvxBrushItem* GetButtonBrushItem() { return pButtonBrushItem; }
+ static SvxBrushItem* GetEmbeddedBrushItem() { return pEmbeddedBrushItem; }
+ static SvxBrushItem* GetProtectedBrushItem() { return pProtectedBrushItem; }
+ static const String& GetEmptyString();
+ static const String& GetScDocString();
+
+ static ImageList* GetOutlineBitmaps();
+// static const Bitmap& GetAnchorBitmap();
+// static const Bitmap& GetGrayAnchorBitmap();
+
+ static ScFunctionList* GetStarCalcFunctionList();
+ static ScFunctionMgr* GetStarCalcFunctionMgr();
+
+ static String GetErrorString(USHORT nErrNumber);
+ static String GetLongErrorString(USHORT nErrNumber);
+ static BOOL EETextObjEqual( const EditTextObject* pObj1,
+ const EditTextObject* pObj2 );
+ static BOOL CheckWidthInvalidate( BOOL& bNumFormatChanged,
+ const SfxItemSet& rNewAttrs,
+ const SfxItemSet& rOldAttrs );
+ static BOOL HasAttrChanged( const SfxItemSet& rNewAttrs,
+ const SfxItemSet& rOldAttrs,
+ const USHORT nWhich );
+
+ static ScUnitConverter* GetUnitConverter();
+
+ /// strchr() functionality on unicode, as long as we need it for ScToken etc.
+ static const sal_Unicode* UnicodeStrChr( const sal_Unicode* pStr, sal_Unicode c );
+
+ static inline sal_Unicode ToUpperAlpha( sal_Unicode c )
+ { return ( c >= 'a' && c <= 'z' ) ? ( c-'a'+'A' ) : c; }
+};
+#endif
+
+class ScTripel
+{
+public:
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTab;
+
+public:
+ ScTripel();
+ ScTripel( USHORT nNewCol, USHORT nNewRow, USHORT nNewTab );
+ ScTripel( const ScTripel& rRef );
+ ~ScTripel();
+
+ USHORT GetCol() const { return nCol; }
+ USHORT GetRow() const { return nRow; }
+ USHORT GetTab() const { return nTab; }
+
+ void SetCol(USHORT nNewCol) { nCol = nNewCol; }
+ void SetRow(USHORT nNewRow) { nRow = nNewRow; }
+ void SetTab(USHORT nNewTab) { nTab = nNewTab; }
+
+ void Put(USHORT nNewCol, USHORT nNewRow, USHORT nNewTab)
+ { nCol=nNewCol; nRow=nNewRow; nTab=nNewTab; }
+
+ inline int operator == ( const ScTripel& rTripel ) const;
+ int operator != ( const ScTripel& rTripel ) const { return !(operator==(rTripel)); }
+
+ String GetText() const; // "(1,2,3)"
+ String GetColRowString( BOOL bAbolute = FALSE ) const; // "A1"||"$A$1"
+};
+
+inline ScTripel::ScTripel() :
+ nCol(0), nRow(0), nTab(0)
+{}
+
+inline ScTripel::ScTripel( USHORT nNewCol, USHORT nNewRow, USHORT nNewTab ) :
+ nCol(nNewCol), nRow(nNewRow), nTab(nNewTab)
+{}
+
+inline ScTripel::ScTripel( const ScTripel& rRef ) :
+ nCol(rRef.nCol), nRow(rRef.nRow), nTab(rRef.nTab)
+{}
+
+inline ScTripel::~ScTripel()
+{}
+
+inline int ScTripel::operator==( const ScTripel& rTripel ) const
+{
+ return nCol==rTripel.nCol && nRow==rTripel.nRow && nTab==rTripel.nTab;
+}
+
+class ScRefTripel : public ScTripel
+{
+ BOOL bRelCol;
+ BOOL bRelRow;
+ BOOL bRelTab;
+public:
+ ScRefTripel() :
+ ScTripel(), bRelCol(FALSE), bRelRow(FALSE), bRelTab(FALSE) {}
+ ScRefTripel( USHORT nNewCol, USHORT nNewRow, USHORT nNewTab, BOOL bNewRelCol, BOOL bNewRelRow, BOOL bNewRelTab ) :
+ ScTripel(nNewCol, nNewRow, nNewTab), bRelCol(bNewRelCol), bRelRow(bNewRelRow), bRelTab(bNewRelTab) {}
+ ScRefTripel( const ScRefTripel& rRef ) :
+ ScTripel(rRef.nCol, rRef.nRow, rRef.nTab), bRelCol(rRef.bRelCol), bRelRow(rRef.bRelRow), bRelTab(rRef.bRelTab) {}
+
+ BOOL GetRelCol() const { return bRelCol; }
+ BOOL GetRelRow() const { return bRelRow; }
+ BOOL GetRelTab() const { return bRelTab; }
+
+ void SetRelCol(BOOL bNewRelCol) { bRelCol = bNewRelCol; }
+ void SetRelRow(BOOL bNewRelRow) { bRelRow = bNewRelRow; }
+ void SetRelTab(BOOL bNewRelTab) { bRelTab = bNewRelTab; }
+
+ void Put(USHORT nNewCol, USHORT nNewRow, USHORT nNewTab, BOOL bNewRelCol, BOOL bNewRelRow, BOOL bNewRelTab )
+ { nCol = nNewCol; nRow = nNewRow; nTab = nNewTab;
+ bRelCol = bNewRelCol; bRelRow = bNewRelRow; bRelTab = bNewRelTab;}
+
+ inline int operator == ( const ScRefTripel& rRefTripel ) const;
+ int operator != ( const ScRefTripel& rRefTripel ) const { return !(operator==(rRefTripel)); }
+
+ String GetRefString(ScDocument* pDoc, USHORT nActTab) const;
+};
+
+
+inline int ScRefTripel::operator==( const ScRefTripel& rRefTripel ) const
+{
+ return nCol == rRefTripel.nCol && nRow==rRefTripel.nRow && nTab==rRefTripel.nTab &&
+ bRelCol == rRefTripel.bRelCol && bRelRow == rRefTripel.bRelRow && bRelTab == rRefTripel.bRelTab;
+}
+
+//==================================================================
+
+// Die neue Zelladressierung ist in einem UINT32 untergebracht:
+// +---+---+-------+
+// |Tab|Col| Row |
+// +---+---+-------+
+// Der Schnelligkeit halber wird beim Zugriff nicht geshiftet,
+// sondern plattformabhaengig gecastet.
+
+// Das Ergebnis von ConvertRef() ist eine Bitgruppe folgender Bits:
+
+#define SCA_COL_ABSOLUTE 0x01
+#define SCA_ROW_ABSOLUTE 0x02
+#define SCA_TAB_ABSOLUTE 0x04
+#define SCA_TAB_3D 0x08
+#define SCA_COL2_ABSOLUTE 0x10
+#define SCA_ROW2_ABSOLUTE 0x20
+#define SCA_TAB2_ABSOLUTE 0x40
+#define SCA_TAB2_3D 0x80
+#define SCA_VALID_ROW 0x0100
+#define SCA_VALID_COL 0x0200
+#define SCA_VALID_TAB 0x0400
+#define SCA_VALID_ROW2 0x1000
+#define SCA_VALID_COL2 0x2000
+#define SCA_VALID_TAB2 0x4000
+#define SCA_VALID 0x8000
+
+#define SCA_ABS SCA_VALID \
+ | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
+#define SCR_ABS SCA_ABS \
+ | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE
+#define SCA_ABS_3D SCA_ABS | SCA_TAB_3D
+#define SCR_ABS_3D SCR_ABS | SCA_TAB_3D
+
+class ScAddress
+{
+private:
+ UINT32 nAddress;
+ inline UINT16* RowPos();
+ inline BYTE* ColPos();
+ inline BYTE* TabPos();
+ inline const UINT16* RowPos() const;
+ inline const BYTE* ColPos() const;
+ inline const BYTE* TabPos() const;
+
+public:
+ inline ScAddress() { nAddress = 0; }
+ inline ScAddress( USHORT nCol, USHORT nRow, USHORT nTab )
+ { Set( nCol, nRow, nTab ); }
+ inline ScAddress( const ScAddress& r ) { nAddress = r.nAddress; }
+ inline ScAddress( UINT32 nNewAddress ) { nAddress = nNewAddress; }
+ // TO BE REMOVED
+ inline ScAddress( const ScTripel& r ) { Set( r.nCol, r.nRow, r.nTab ); }
+ inline ScAddress& operator=( const ScAddress& r )
+ { nAddress = r.nAddress; return *this; }
+ inline void Set( USHORT nCol, USHORT nRow, USHORT nTab );
+ inline USHORT Row() const { return *RowPos(); }
+ inline USHORT Col() const { return *ColPos(); }
+ inline USHORT Tab() const { return *TabPos(); }
+ inline USHORT SetRow( USHORT nRow ) { return *RowPos() = nRow; }
+ inline USHORT SetCol( USHORT nCol ) { return *ColPos() = (BYTE) nCol; }
+ inline USHORT SetTab( USHORT nTab ) { return *TabPos() = (BYTE) nTab; }
+ inline operator UINT32() const { return nAddress; }
+ inline void PutInOrder( ScAddress& r );
+ inline USHORT IncRow( short n=1 ) { return *RowPos() = (*RowPos() + n ) % (MAXROW+1); }
+ inline USHORT IncCol( short n=1 ) { return *ColPos() = (BYTE) (*ColPos() + n ); }
+ inline USHORT IncTab( short n=1 ) { return *TabPos() = (BYTE) (*TabPos() + n ); }
+ inline void GetVars( USHORT& nCol, USHORT& nRow, USHORT& nTab ) const;
+ USHORT Parse( const String&, ScDocument* = NULL );
+ void Format( String&, USHORT = 0, ScDocument* = NULL ) const;
+ // Das Doc fuer die maximal defineirte Tabelle
+ BOOL Move( short dx, short dy, short dz, ScDocument* =NULL );
+ inline int operator==( const ScAddress& r ) const;
+ inline int operator!=( const ScAddress& r ) const;
+ inline int operator<( const ScAddress& r ) const;
+ inline int operator<=( const ScAddress& r ) const;
+ inline int operator>( const ScAddress& r ) const;
+ inline int operator>=( const ScAddress& r ) const;
+ friend inline SvStream& operator<< ( SvStream& rStream, const ScAddress& rAdr );
+ friend inline SvStream& operator>> ( SvStream& rStream, ScAddress& rAdr );
+};
+
+inline void ScAddress::Set( USHORT nCol, USHORT nRow, USHORT nTab )
+{
+// nAddress = ((UINT32) ((((BYTE) nTab) << 8 ) + (BYTE) nCol ) << 16 )
+// | (UINT32) (UINT16) nRow;
+// Shifterei: 5 mov, 2 xor, 2 shl, 1 add, 1 and, 1 or
+// Casterei: 7 mov, ist weniger Code und schneller
+ *ColPos() = (BYTE) nCol;
+ *RowPos() = (UINT16) nRow;
+ *TabPos() = (BYTE) nTab;
+}
+
+inline void ScAddress::PutInOrder( ScAddress& r )
+{
+ if( r.nAddress < nAddress )
+ {
+ UINT32 nTemp;
+ nTemp = nAddress;
+ nAddress = r.nAddress;
+ r.nAddress = nTemp;
+ }
+ USHORT nTmp;
+ if ( (nTmp = r.Col()) < Col() )
+ {
+ r.SetCol( Col() );
+ SetCol( nTmp );
+ }
+ if ( (nTmp = r.Row()) < Row() )
+ {
+ r.SetRow( Row() );
+ SetRow( nTmp );
+ }
+}
+
+inline void ScAddress::GetVars( USHORT& nCol, USHORT& nRow, USHORT& nTab ) const
+{
+ nCol = Col();
+ nRow = Row();
+ nTab = Tab();
+}
+
+inline int ScAddress::operator==( const ScAddress& r ) const
+{
+ return ( nAddress == r.nAddress );
+}
+
+inline int ScAddress::operator!=( const ScAddress& r ) const
+{
+ return !operator==( r );
+}
+
+inline int ScAddress::operator<( const ScAddress& r ) const
+{
+ return ( nAddress < r.nAddress );
+}
+
+inline int ScAddress::operator<=( const ScAddress& r ) const
+{
+ return operator<( r ) || operator==( r );
+}
+
+inline int ScAddress::operator>( const ScAddress& r ) const
+{
+ return !operator<=( r );
+}
+
+inline int ScAddress::operator>=( const ScAddress& r ) const
+{
+ return !operator<( r );
+}
+
+#ifdef __LITTLEENDIAN
+
+inline USHORT* ScAddress::RowPos() { return (USHORT*) &nAddress; }
+inline BYTE* ScAddress::ColPos() { return (BYTE*) &nAddress + 2; }
+inline BYTE* ScAddress::TabPos() { return (BYTE*) &nAddress + 3; }
+inline const USHORT* ScAddress::RowPos() const { return (USHORT*) &nAddress; }
+inline const BYTE* ScAddress::ColPos() const { return (BYTE*) &nAddress + 2; }
+inline const BYTE* ScAddress::TabPos() const { return (BYTE*) &nAddress + 3; }
+
+#else
+
+inline USHORT* ScAddress::RowPos() { return (USHORT*) ((BYTE*) &nAddress + 2 ); }
+inline BYTE* ScAddress::ColPos() { return (BYTE*) &nAddress + 1; }
+inline BYTE* ScAddress::TabPos() { return (BYTE*) &nAddress; }
+inline const USHORT* ScAddress::RowPos() const { return (USHORT*) ((BYTE*) &nAddress + 2 ); }
+inline const BYTE* ScAddress::ColPos() const { return (BYTE*) &nAddress + 1; }
+inline const BYTE* ScAddress::TabPos() const { return (BYTE*) &nAddress; }
+
+#endif
+
+inline SvStream& operator<< ( SvStream& rStream, const ScAddress& rAdr )
+{
+ rStream << rAdr.nAddress;
+ return rStream;
+}
+
+inline SvStream& operator>> ( SvStream& rStream, ScAddress& rAdr )
+{
+ rStream >> rAdr.nAddress;
+ return rStream;
+}
+
+class ScRange
+{
+public:
+ ScAddress aStart, aEnd;
+ ScRange() : aStart(), aEnd() {}
+ ScRange( const ScAddress& s, const ScAddress& e )
+ : aStart( s ), aEnd( e ) { aStart.PutInOrder( aEnd ); }
+ ScRange( const ScRange& r ) : aStart( r.aStart ), aEnd( r.aEnd ) {}
+ ScRange( const ScAddress& r ) : aStart( r ), aEnd( r ) {}
+ ScRange( USHORT nCol, USHORT nRow, USHORT nTab )
+ : aStart( nCol, nRow, nTab ), aEnd( aStart ) {}
+ ScRange( USHORT nCol1, USHORT nRow1, USHORT nTab1,
+ USHORT nCol2, USHORT nRow2, USHORT nTab2 )
+ : aStart( nCol1, nRow1, nTab1 ), aEnd( nCol2, nRow2, nTab2 ) {}
+ // TO BE REMOVED
+ ScRange( const ScTripel& r )
+ : aStart( r.nCol, r.nRow, r.nTab ), aEnd( aStart ) {}
+ ScRange( const ScTripel& r1, const ScTripel& r2 )
+ : aStart( r1.nCol, r1.nRow, r1.nTab ),
+ aEnd( r2.nCol, r2.nRow, r2.nTab ) {}
+
+ ScRange& operator=( const ScRange& r )
+ { aStart = r.aStart; aEnd = r.aEnd; return *this; }
+ inline BOOL In( const ScAddress& ) const; // ist Address& in Range?
+ inline BOOL In( const ScRange& ) const; // ist Range& in Range?
+ USHORT Parse( const String&, ScDocument* = NULL );
+ USHORT ParseAny( const String&, ScDocument* = NULL );
+ inline void GetVars( USHORT& nCol1, USHORT& nRow1, USHORT& nTab1,
+ USHORT& nCol2, USHORT& nRow2, USHORT& nTab2 ) const;
+ void Format( String&, USHORT = 0, ScDocument* = NULL ) const;
+ // Das Doc fuer die maximal definierte Tabelle
+ BOOL Move( short dx, short dy, short dz, ScDocument* =NULL );
+ void Justify();
+ void ExtendOne();
+ BOOL Intersects( const ScRange& ) const; // ueberschneiden sich zwei Ranges?
+ inline int operator==( const ScRange& r ) const;
+ inline int operator!=( const ScRange& r ) const;
+ inline int operator<( const ScRange& r ) const;
+ inline int operator<=( const ScRange& r ) const;
+ inline int operator>( const ScRange& r ) const;
+ inline int operator>=( const ScRange& r ) const;
+ friend inline SvStream& operator<< ( SvStream& rStream, const ScRange& rRange );
+ friend inline SvStream& operator>> ( SvStream& rStream, ScRange& rRange );
+};
+
+inline void ScRange::GetVars( USHORT& nCol1, USHORT& nRow1, USHORT& nTab1,
+ USHORT& nCol2, USHORT& nRow2, USHORT& nTab2 ) const
+{
+ aStart.GetVars( nCol1, nRow1, nTab1 );
+ aEnd.GetVars( nCol2, nRow2, nTab2 );
+}
+
+inline int ScRange::operator==( const ScRange& r ) const
+{
+ return ( (aStart == r.aStart) && (aEnd == r.aEnd) );
+}
+
+inline int ScRange::operator!=( const ScRange& r ) const
+{
+ return !operator==( r );
+}
+
+// Sortierung auf linke obere Ecke, wenn die gleich dann auch rechte untere
+inline int ScRange::operator<( const ScRange& r ) const
+{
+ return aStart < r.aStart || (aStart == r.aStart && aEnd < r.aEnd) ;
+}
+
+inline int ScRange::operator<=( const ScRange& r ) const
+{
+ return operator<( r ) || operator==( r );
+}
+
+inline int ScRange::operator>( const ScRange& r ) const
+{
+ return !operator<=( r );
+}
+
+inline int ScRange::operator>=( const ScRange& r ) const
+{
+ return !operator<( r );
+}
+
+// damit das inlinig funkt die Address reference lassen!
+inline BOOL ScRange::In( const ScAddress& rAddr ) const
+{
+ return
+ aStart.Col() <= rAddr.Col() && rAddr.Col() <= aEnd.Col() &&
+ aStart.Row() <= rAddr.Row() && rAddr.Row() <= aEnd.Row() &&
+ aStart.Tab() <= rAddr.Tab() && rAddr.Tab() <= aEnd.Tab();
+}
+
+inline BOOL ScRange::In( const ScRange& r ) const
+{
+ return
+ aStart.Col() <= r.aStart.Col() && r.aEnd.Col() <= aEnd.Col() &&
+ aStart.Row() <= r.aStart.Row() && r.aEnd.Row() <= aEnd.Row() &&
+ aStart.Tab() <= r.aStart.Tab() && r.aEnd.Tab() <= aEnd.Tab();
+}
+
+inline SvStream& operator<< ( SvStream& rStream, const ScRange& rRange )
+{
+ rStream << rRange.aStart;
+ rStream << rRange.aEnd;
+ return rStream;
+}
+
+inline SvStream& operator>> ( SvStream& rStream, ScRange& rRange )
+{
+ rStream >> rRange.aStart;
+ rStream >> rRange.aEnd;
+ return rStream;
+}
+
+
+class ScRangePair
+{
+private:
+ ScRange aRange[2];
+
+public:
+ ScRangePair() {}
+ ScRangePair( const ScRangePair& r )
+ { aRange[0] = r.aRange[0]; aRange[1] = r.aRange[1]; }
+ ScRangePair( const ScRange& r1, const ScRange& r2 )
+ { aRange[0] = r1; aRange[1] = r2; }
+
+ inline ScRangePair& operator= ( const ScRangePair& r );
+ const ScRange& GetRange( USHORT n ) const { return aRange[n]; }
+ ScRange& GetRange( USHORT n ) { return aRange[n]; }
+ inline int operator==( const ScRangePair& ) const;
+ inline int operator!=( const ScRangePair& ) const;
+ friend inline SvStream& operator<< ( SvStream&, const ScRangePair& );
+ friend inline SvStream& operator>> ( SvStream&, ScRange& );
+};
+
+inline ScRangePair& ScRangePair::operator= ( const ScRangePair& r )
+{
+ aRange[0] = r.aRange[0];
+ aRange[1] = r.aRange[1];
+ return *this;
+}
+
+inline int ScRangePair::operator==( const ScRangePair& r ) const
+{
+ return ( (aRange[0] == r.aRange[0]) && (aRange[1] == r.aRange[1]) );
+}
+
+inline int ScRangePair::operator!=( const ScRangePair& r ) const
+{
+ return !operator==( r );
+}
+
+inline SvStream& operator<< ( SvStream& rStream, const ScRangePair& rPair )
+{
+ rStream << rPair.GetRange(0);
+ rStream << rPair.GetRange(1);
+ return rStream;
+}
+
+inline SvStream& operator>> ( SvStream& rStream, ScRangePair& rPair )
+{
+ rStream >> rPair.GetRange(0);
+ rStream >> rPair.GetRange(1);
+ return rStream;
+}
+
+//==================================================================
+
+inline void PutInOrder( USHORT& nStart, USHORT& nEnd )
+{
+ if (nEnd < nStart)
+ {
+ USHORT nTemp;
+ nTemp = nEnd;
+ nEnd = nStart;
+ nStart = nTemp;
+ }
+}
+
+//===================================================================
+// Globale Funktionen
+//===================================================================
+
+BOOL ConvertSingleRef(ScDocument* pDoc, const String& rRefString, USHORT nDefTab, ScRefTripel& rRefTripel);
+BOOL ConvertDoubleRef(ScDocument* pDoc, const String& rRefString, USHORT nDefTab, ScRefTripel& rStartRefTripel, ScRefTripel& rEndRefTripel);
+String ColToAlpha( const USHORT nCol );
+CharSet GetCharsetValue(const String& rCharSet);
+
+//===================================================================
+// Funktionsautopilot: Klassen zur Verwaltung der StarCalc-Funktionen
+//===================================================================
+
+class ScFuncDesc
+{
+public:
+ ScFuncDesc();
+ ~ScFuncDesc();
+
+ String GetSignature () const;
+ String GetFormulaString ( String** aArgArr ) const;
+
+ USHORT nFIndex; // eindeutiger Funktionsindex
+ USHORT nCategory; // Kategorie
+ String* pFuncName; // Funktionsname
+ String* pFuncDesc; // Funktionsbeschreibung
+ USHORT nArgCount; // Parameteranzahl
+ String** aDefArgNames; // Parametername(n)
+ String** aDefArgDescs; // Parameterbeschreibung(en)
+ BOOL* aDefArgOpt; // Flags ob Parameter optional ist
+ USHORT nHelpId; // HilfeId der Funktion
+};
+
+//==================================================================
+
+class ScFunctionMgr
+{
+public:
+ ScFunctionMgr();
+ ~ScFunctionMgr();
+
+ ScFuncDesc* Get( const String& rFName );
+ ScFuncDesc* Get( USHORT nFIndex );
+ ScFuncDesc* First( USHORT nCategory = 0 );
+ ScFuncDesc* Next();
+
+private:
+ ScFunctionList* pFuncList;
+ List* aCatLists[MAX_FUNCCAT];
+ List* pCurCatList;
+};
+
+//==================================================================
+
+class ScFunctionList
+{
+public:
+ ScFunctionList();
+ ~ScFunctionList();
+
+ ULONG GetCount() const
+ { return aFunctionList.Count(); }
+
+ ScFuncDesc* GetFunction( ULONG nIndex ) const
+ { return (ScFuncDesc*)aFunctionList.GetObject( nIndex ); }
+
+ xub_StrLen GetMaxFuncNameLen() const
+ { return nMaxFuncNameLen; }
+
+private:
+ List aFunctionList;
+ xub_StrLen nMaxFuncNameLen;
+};
+
+//==================================================================
+
+#define FUNC_NOTFOUND 0xffff
+
+class ScFormulaUtil
+{
+public:
+ static BOOL GetNextFunc( const String& rFormula,
+ BOOL bBack,
+ xub_StrLen& rFStart, // Ein- und Ausgabe
+ xub_StrLen* pFEnd = NULL,
+ ScFuncDesc** ppFDesc = NULL,
+ String*** pppArgs = NULL );
+
+ static const ScFuncDesc* GetDefaultFuncDesc();
+
+ static xub_StrLen GetFunctionStart( const String& rFormula, xub_StrLen nStart,
+ BOOL bBack, String* pFuncName = NULL );
+
+ static xub_StrLen GetFunctionEnd ( const String& rFormula, xub_StrLen nStart );
+
+ static xub_StrLen GetArgStart ( const String& rFormula, xub_StrLen nStart,
+ USHORT nArg );
+
+ static String** GetArgStrings ( const String& rFormula,
+ xub_StrLen nFuncPos,
+ USHORT nArgs );
+
+ static void FillArgStrings ( const String& rFormula,
+ xub_StrLen nFuncPos,
+ USHORT nArgs,
+ String** pArgs );
+};
+
+//==================================================================
+// Notiz
+//==================================================================
+
+class ScPostIt
+{
+private:
+ String aStrText;
+ String aStrDate;
+ String aStrAuthor;
+ BOOL bShown;
+
+public:
+ ScPostIt();
+ ScPostIt( const String& rText );
+ ScPostIt( const String& rText, const String& rDate, const String& rAuthor );
+ ScPostIt( const ScPostIt& rCpy );
+ ~ScPostIt();
+
+ const String& GetText() const { return aStrText; }
+ const String& GetDate() const { return aStrDate; }
+ const String& GetAuthor() const { return aStrAuthor; }
+ BOOL IsShown() const { return bShown; }
+
+ void SetText( const String& rNew ) { aStrText = rNew; }
+ void SetDate( const String& rNew ) { aStrDate = rNew; }
+ void SetAuthor( const String& rNew ) { aStrAuthor = rNew; }
+ void SetShown( BOOL bNew ) { bShown = bNew; }
+
+ void Clear() { aStrText.Erase(); aStrDate.Erase();
+ aStrAuthor.Erase(); bShown = FALSE; }
+ void AutoSetText( const String& rNewText );
+
+ inline const ScPostIt& operator= ( const ScPostIt& rCpy );
+
+ inline int operator==( const ScPostIt& rPostIt ) const;
+ int operator!=( const ScPostIt& rPostIt ) const { return !(operator==(rPostIt)); }
+
+ friend inline SvStream& operator>>( SvStream& rStream, ScPostIt& rPostIt );
+ friend inline SvStream& operator<<( SvStream& rStream, const ScPostIt& rPostIt );
+};
+
+inline const ScPostIt& ScPostIt::operator=( const ScPostIt& rCpy )
+{
+ aStrText = rCpy.aStrText;
+ aStrDate = rCpy.aStrDate;
+ aStrAuthor = rCpy.aStrAuthor;
+ bShown = rCpy.bShown;
+
+ return *this;
+}
+
+inline int ScPostIt::operator==( const ScPostIt& rPostIt ) const
+{
+ return ( aStrText == rPostIt.aStrText
+ && aStrDate == rPostIt.aStrDate
+ && aStrAuthor == rPostIt.aStrAuthor
+ && bShown == rPostIt.bShown );
+}
+
+inline SvStream& operator>>( SvStream& rStream, ScPostIt& rPostIt )
+{
+ // ohne bShown !!!
+
+ CharSet eSet = rStream.GetStreamCharSet();
+ rStream.ReadByteString( rPostIt.aStrText, eSet );
+ rStream.ReadByteString( rPostIt.aStrDate, eSet );
+ rStream.ReadByteString( rPostIt.aStrAuthor, eSet );
+
+ return rStream;
+}
+
+inline SvStream& operator<<( SvStream& rStream, const ScPostIt& rPostIt )
+{
+ // ohne bShown !!!
+
+ CharSet eSet = rStream.GetStreamCharSet();
+ rStream.WriteByteString( rPostIt.aStrText, eSet );
+ rStream.WriteByteString( rPostIt.aStrDate, eSet );
+ rStream.WriteByteString( rPostIt.aStrAuthor, eSet );
+
+ return rStream;
+}
+
+//==================================================================
+// evtl. in dbdata.hxx auslagern (?):
+
+enum ScQueryOp
+ {
+ SC_EQUAL,
+ SC_LESS,
+ SC_GREATER,
+ SC_LESS_EQUAL,
+ SC_GREATER_EQUAL,
+ SC_NOT_EQUAL,
+ SC_TOPVAL,
+ SC_BOTVAL,
+ SC_TOPPERC,
+ SC_BOTPERC
+ };
+
+// -----------------------------------------------------------------------
+
+enum ScQueryConnect
+ {
+ SC_AND,
+ SC_OR
+ };
+
+// -----------------------------------------------------------------------
+
+enum ScSubTotalFunc
+ {
+ SUBTOTAL_FUNC_NONE = 0,
+ SUBTOTAL_FUNC_AVE = 1,
+ SUBTOTAL_FUNC_CNT = 2,
+ SUBTOTAL_FUNC_CNT2 = 3,
+ SUBTOTAL_FUNC_MAX = 4,
+ SUBTOTAL_FUNC_MIN = 5,
+ SUBTOTAL_FUNC_PROD = 6,
+ SUBTOTAL_FUNC_STD = 7,
+ SUBTOTAL_FUNC_STDP = 8,
+ SUBTOTAL_FUNC_SUM = 9,
+ SUBTOTAL_FUNC_VAR = 10,
+ SUBTOTAL_FUNC_VARP = 11
+ };
+
+
+#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
+
+// -----------------------------------------------------------------------
+
+struct ScSubTotalParam;
+struct ScQueryParam;
+
+// -----------------------------------------------------------------------
+
+struct ScSortParam
+{
+ USHORT nCol1;
+ USHORT nRow1;
+ USHORT nCol2;
+ USHORT nRow2;
+ BOOL bHasHeader;
+ BOOL bByRow;
+ BOOL bCaseSens;
+ BOOL bUserDef;
+ USHORT nUserIndex;
+ BOOL bIncludePattern;
+ BOOL bInplace;
+ USHORT nDestTab;
+ USHORT nDestCol;
+ USHORT nDestRow;
+ BOOL bDoSort[MAXSORT];
+ USHORT nField[MAXSORT];
+ BOOL bAscending[MAXSORT];
+
+ ScSortParam();
+ ScSortParam( const ScSortParam& r );
+ // zum Sortieren von Zwischenergebnissen:
+ ScSortParam( const ScSubTotalParam& rSub, const ScSortParam& rOld );
+ ScSortParam( const ScQueryParam&, USHORT nCol ); // TopTen Sortierung
+
+ ScSortParam& operator= ( const ScSortParam& r );
+ BOOL operator== ( const ScSortParam& rOther ) const;
+ void Clear ();
+
+ void MoveToDest();
+};
+
+// -----------------------------------------------------------------------
+
+/*
+ * Dialog liefert die ausgezeichneten Feldwerte "leer"/"nicht leer"
+ * als Konstanten SC_EMPTYFIELDS bzw. SC_NONEMPTYFIELDS in nVal in
+ * Verbindung mit dem Schalter bQueryByString auf FALSE.
+ */
+
+#define SC_EMPTYFIELDS ((double)0x0042)
+#define SC_NONEMPTYFIELDS ((double)0x0043)
+
+class SearchParam;
+class SearchText;
+
+struct ScQueryEntry
+{
+ BOOL bDoQuery;
+ BOOL bQueryByString;
+ USHORT nField;
+ ScQueryOp eOp;
+ ScQueryConnect eConnect;
+ String* pStr;
+ double nVal;
+ SearchParam* pSearchParam; // falls RegExp, nicht gespeichert
+ SearchText* pSearchText; // falls RegExp, nicht gespeichert
+
+ ScQueryEntry();
+ ScQueryEntry(const ScQueryEntry& r);
+ ~ScQueryEntry();
+
+ // legt ggbf. pSearchParam und pSearchText an, immer RegExp!
+ SearchText* GetSearchTextPtr( BOOL bCaseSens );
+
+ void Clear();
+ ScQueryEntry& operator=( const ScQueryEntry& r );
+ BOOL operator==( const ScQueryEntry& r ) const;
+
+ void Load(SvStream& rStream);
+ void Store(SvStream& rStream) const;
+};
+
+struct ScQueryParam
+{
+ USHORT nCol1;
+ USHORT nRow1;
+ USHORT nCol2;
+ USHORT nRow2;
+ USHORT nTab;
+ BOOL bHasHeader;
+ BOOL bByRow;
+ BOOL bInplace;
+ BOOL bCaseSens;
+ BOOL bRegExp;
+ BOOL bDuplicate;
+ BOOL bDestPers; // nicht gespeichert
+ USHORT nDestTab;
+ USHORT nDestCol;
+ USHORT nDestRow;
+
+private:
+ USHORT nEntryCount;
+ ScQueryEntry* pEntries;
+
+public:
+ ScQueryParam();
+ ScQueryParam( const ScQueryParam& r );
+ ~ScQueryParam();
+
+ USHORT GetEntryCount() const { return nEntryCount; }
+ ScQueryEntry& GetEntry(USHORT n) const { return pEntries[n]; }
+ void Resize(USHORT nNew);
+
+ ScQueryParam& operator= ( const ScQueryParam& r );
+ BOOL operator== ( const ScQueryParam& rOther ) const;
+ void Clear ();
+ void DeleteQuery( USHORT nPos );
+
+ void MoveToDest();
+ void FillInExcelSyntax(String& aCellStr, USHORT nIndex);
+
+ void Load(SvStream& rStream);
+ void Store(SvStream& rStream) const;
+};
+
+// -----------------------------------------------------------------------
+
+struct ScSubTotalParam
+{
+ USHORT nCol1; // Selektierter Bereich
+ USHORT nRow1;
+ USHORT nCol2;
+ USHORT nRow2;
+ BOOL bRemoveOnly;
+ BOOL bReplace; // vorhandene Ergebnisse ersetzen
+ BOOL bPagebreak; // Seitenumbruch bei Gruppenwechsel
+ BOOL bCaseSens; // Gross-/Kleinschreibung
+ BOOL bDoSort; // vorher sortieren
+ BOOL bAscending; // aufsteigend sortieren
+ BOOL bUserDef; // Benutzer-def. Sort.Reihenfolge
+ USHORT nUserIndex; // Index auf Liste
+ BOOL bIncludePattern; // Formate mit sortieren
+ BOOL bGroupActive[MAXSUBTOTAL]; // aktive Gruppen
+ USHORT nField[MAXSUBTOTAL]; // zugehoeriges Feld
+ USHORT nSubTotals[MAXSUBTOTAL]; // Anzahl der SubTotals
+ USHORT* pSubTotals[MAXSUBTOTAL]; // Array der zu berechnenden Spalten
+ ScSubTotalFunc* pFunctions[MAXSUBTOTAL]; // Array der zugehoerige Funktionen
+
+ ScSubTotalParam();
+ ScSubTotalParam( const ScSubTotalParam& r );
+
+ ScSubTotalParam& operator= ( const ScSubTotalParam& r );
+ BOOL operator== ( const ScSubTotalParam& r ) const;
+ void Clear ();
+ void SetSubTotals ( USHORT nGroup,
+ const USHORT* ptrSubTotals,
+ const ScSubTotalFunc* ptrFuncions,
+ USHORT nCount );
+};
+
+// -----------------------------------------------------------------------
+class ScArea;
+
+struct ScConsolidateParam
+{
+ USHORT nCol; // Cursor Position /
+ USHORT nRow; // bzw. Anfang des Zielbereiches
+ USHORT nTab;
+ ScSubTotalFunc eFunction; // Berechnungsvorschrift
+ USHORT nDataAreaCount; // Anzahl der Datenbereiche
+ ScArea** ppDataAreas; // Zeiger-Array auf Datenbereiche
+ BOOL bByCol; // nach Spalten
+ BOOL bByRow; // nach Zeilen
+ BOOL bReferenceData; // Quelldaten referenzieren
+
+ ScConsolidateParam();
+ ScConsolidateParam( const ScConsolidateParam& r );
+ ~ScConsolidateParam();
+
+ ScConsolidateParam& operator= ( const ScConsolidateParam& r );
+ BOOL operator== ( const ScConsolidateParam& r ) const;
+ void Clear (); // = ClearDataAreas()+Members
+ void ClearDataAreas ();
+ void SetAreas ( ScArea* const* ppAreas, USHORT nCount );
+
+ void Load( SvStream& rStream );
+ void Store( SvStream& rStream ) const;
+};
+
+// -----------------------------------------------------------------------
+struct PivotField
+{
+ short nCol;
+ USHORT nFuncMask;
+ USHORT nFuncCount;
+
+ PivotField() :
+ nCol(0),nFuncMask(0),nFuncCount(0) {}
+
+ PivotField( const PivotField& rCpy ) :
+ nCol(rCpy.nCol),nFuncMask(rCpy.nFuncMask),nFuncCount(rCpy.nFuncCount) {}
+
+ PivotField(short nNewCol, USHORT nNewFuncMask = 0) :
+ nCol(nNewCol),nFuncMask(nNewFuncMask),nFuncCount(0) {}
+
+ PivotField operator = (const PivotField& r)
+ {
+ nCol = r.nCol;
+ nFuncMask = r.nFuncMask;
+ nFuncCount = r.nFuncCount;
+ return *this;
+ }
+
+ BOOL operator == (const PivotField& r) const
+ {
+ return ( (nCol == r.nCol)
+ && (nFuncMask == r.nFuncMask)
+ && (nFuncCount == r.nFuncCount));
+ }
+};
+
+// -----------------------------------------------------------------------
+struct ScPivotParam
+{
+ USHORT nCol; // Cursor Position /
+ USHORT nRow; // bzw. Anfang des Zielbereiches
+ USHORT nTab;
+ LabelData** ppLabelArr;
+ USHORT nLabels;
+ PivotField aColArr[PIVOT_MAXFIELD];
+ PivotField aRowArr[PIVOT_MAXFIELD];
+ PivotField aDataArr[PIVOT_MAXFIELD];
+ USHORT nColCount;
+ USHORT nRowCount;
+ USHORT nDataCount;
+ BOOL bIgnoreEmptyRows;
+ BOOL bDetectCategories;
+ BOOL bMakeTotalCol;
+ BOOL bMakeTotalRow;
+
+ ScPivotParam();
+ ScPivotParam( const ScPivotParam& r );
+ ~ScPivotParam();
+
+ ScPivotParam& operator= ( const ScPivotParam& r );
+ BOOL operator== ( const ScPivotParam& r ) const;
+ void Clear ();
+ void ClearLabelData ();
+ void ClearPivotArrays();
+ void SetLabelData ( LabelData** ppLabArr,
+ USHORT nLab );
+ void SetPivotArrays ( const PivotField* pColArr,
+ const PivotField* pRowArr,
+ const PivotField* pDataArr,
+ USHORT nColCnt,
+ USHORT nRowCnt,
+ USHORT nDataCnt );
+};
+
+
+//-----------------------------------------------------------------------
+
+struct ScSolveParam
+{
+ ScAddress aRefFormulaCell;
+ ScAddress aRefVariableCell;
+ String* pStrTargetVal;
+
+ ScSolveParam();
+ ScSolveParam( const ScSolveParam& r );
+ ScSolveParam( const ScAddress& rFormulaCell,
+ const ScAddress& rVariableCell,
+ const String& rTargetValStr );
+ ~ScSolveParam();
+
+ ScSolveParam& operator= ( const ScSolveParam& r );
+ BOOL operator== ( const ScSolveParam& r ) const;
+};
+
+struct ScTabOpParam
+{
+ ScRefTripel aRefFormulaCell;
+ ScRefTripel aRefFormulaEnd;
+ ScRefTripel aRefRowCell;
+ ScRefTripel aRefColCell;
+ BYTE nMode;
+
+ ScTabOpParam() {};
+ ScTabOpParam( const ScTabOpParam& r );
+ ScTabOpParam( const ScRefTripel& rFormulaCell,
+ const ScRefTripel& rFormulaEnd,
+ const ScRefTripel& rRowCell,
+ const ScRefTripel& rColCell,
+ BYTE nMd);
+ ~ScTabOpParam() {};
+
+ ScTabOpParam& operator= ( const ScTabOpParam& r );
+ BOOL operator== ( const ScTabOpParam& r ) const;
+};
+
+#endif
diff --git a/sc/inc/globstr.hrc b/sc/inc/globstr.hrc
new file mode 100644
index 000000000000..0a29514e78a2
--- /dev/null
+++ b/sc/inc/globstr.hrc
@@ -0,0 +1,543 @@
+/*************************************************************************
+ *
+ * $RCSfile: globstr.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef __GLOBSTR_HRC_
+#define __GLOBSTR_HRC_
+
+
+#define STR_UNDO_DELETECELLS 1
+#define STR_UNDO_CUT 2
+#define STR_UNDO_PASTE 3
+#define STR_UNDO_MOVE 4
+#define STR_UNDO_COPY 5
+#define STR_UNDO_DELETECONTENTS 6
+#define STR_UNDO_SELATTR 7
+#define STR_UNDO_SELATTRLINES 8
+#define STR_UNDO_COLWIDTH 9
+#define STR_UNDO_OPTCOLWIDTH 10
+#define STR_UNDO_ROWHEIGHT 11
+#define STR_UNDO_OPTROWHEIGHT 12
+#define STR_UNDO_AUTOFILL 13
+#define STR_UNDO_MERGE 14
+#define STR_UNDO_REMERGE 15
+#define STR_UNDO_AUTOFORMAT 16
+#define STR_UNDO_REPLACE 17
+#define STR_UNDO_CURSORATTR 18
+#define STR_UNDO_ENTERDATA 19
+#define STR_UNDO_INSCOLBREAK 20
+#define STR_UNDO_DELCOLBREAK 21
+#define STR_UNDO_INSROWBREAK 22
+#define STR_UNDO_DELROWBREAK 23
+#define STR_UNDO_DOOUTLINE 24
+#define STR_UNDO_REDOOUTLINE 25
+#define STR_UNDO_MAKEOUTLINE 26
+#define STR_UNDO_REMAKEOUTLINE 27
+#define STR_UNDO_OUTLINELEVEL 28
+#define STR_UNDO_DOOUTLINEBLK 29
+#define STR_UNDO_REDOOUTLINEBLK 30
+#define STR_UNDO_REMOVEALLOTLNS 31
+#define STR_UNDO_AUTOOUTLINE 32
+#define STR_UNDO_SUBTOTALS 33
+#define STR_UNDO_SORT 34
+#define STR_UNDO_QUERY 35
+#define STR_UNDO_DBDATA 36
+#define STR_UNDO_IMPORTDATA 37
+#define STR_UNDO_REPEATDB 38
+
+#define STR_DB_NONAME 39
+
+#define STR_MSSG_DOSUBTOTALS_0 40
+#define STR_MSSG_DOSUBTOTALS_1 41
+#define STR_MSSG_DOSUBTOTALS_2 42
+#define STR_MSSG_REPEATDB_0 43
+#define STR_MSSG_MAKEAUTOFILTER_0 44
+#define STR_MSSG_IMPORTDATA_0 45
+#define STR_MSSG_MAKEOUTLINE_0 46
+#define STR_MSSG_REMOVEOUTLINE_0 47
+#define STR_MSSG_PASTEFROMCLIP_0 48
+#define STR_MSSG_PASTEFROMCLIP_1 49
+#define STR_MSSG_MOVEBLOCKTO_0 50
+#define STR_MSSG_APPLYPATTLINES_0 51
+#define STR_MSSG_INSERTCELLS_0 52
+#define STR_MSSG_DELETECELLS_0 53
+#define STR_MSSG_MERGECELLS_0 54
+#define STR_MSSG_SEARCHANDREPLACE_0 55
+#define STR_MSSG_SOLVE_0 56
+#define STR_MSSG_SOLVE_1 57
+#define STR_MSSG_SOLVE_2 58
+#define STR_MSSG_SOLVE_3 59
+#define STR_MSSG_SOLVE_4 60
+#define STR_MSSG_SOLVE_5 61
+#define STR_MSSG_SOLVE_6 62
+// unused: 63
+
+#define STR_TABLE_GESAMTERGEBNIS 64
+#define STR_TABLE_ERGEBNIS 65
+#define STR_UNDO_SPELLING 66
+#define STR_TABLE_UND 67
+#define STR_TABLE_ODER 68
+#define STR_UNDO_INSERTCELLS 69
+#define STR_TABLE_DEF 70
+//#define STR_STYLENAME_STANDARD 71 s.u.
+#define STR_MOVE_TO_END 72
+#define STR_BOX_YNI 73
+#define STR_NO_REF_TABLE 74
+
+#define STR_PIVOTFUNC_SUM 75 // pivot.cxx
+#define STR_PIVOTFUNC_COUNT 76
+#define STR_PIVOTFUNC_AVG 77
+#define STR_PIVOTFUNC_MAX 78
+#define STR_PIVOTFUNC_MIN 79
+#define STR_PIVOTFUNC_PROD 80
+#define STR_PIVOTFUNC_COUNT2 90
+#define STR_PIVOTFUNC_STDDEV 91
+#define STR_PIVOTFUNC_STDDEV2 92
+#define STR_PIVOTFUNC_VAR 93
+#define STR_PIVOTFUNC_VAR2 94
+#define STR_PIVOT_TOTAL 95
+#define STR_PIVOT_DATA 96
+
+#define STR_PIVOT_INVALID_DBAREA 97 // tabvwsh3.cxx
+
+#define STR_TABLE 98
+#define STR_COLUMN 99
+#define STR_ROW 100
+#define STR_LOAD_DOC 101
+#define STR_SAVE_DOC 102
+
+#define STR_ERR_INVALID_TABREF 103
+#define STR_AREA_ALREADY_INSERTED 104
+#define STR_INVALID_TABREF 105
+#define STR_INVALID_QUERYAREA 106
+
+#define STR_REIMPORT_EMPTY 107
+#define STR_NOMULTISELECT 108
+#define STR_FILL_SERIES_PROGRESS 109 // documen3.cxx
+
+#define STR_UNKNOWN_FILTER 110
+
+#define STR_DATABASE_NOTFOUND 111
+#define STR_DATABASE_ABORTED 112
+
+#define STR_UNDO_PRINTRANGES 113
+
+#define STR_UNDO_DEC_INDENT 114
+#define STR_UNDO_INC_INDENT 115
+#define STR_UNDO_THESAURUS 116
+
+#define STR_FILL_TAB 117
+#define STR_NO_VALUE 118
+#define STR_UPDATE_SCENARIO 119
+#define STR_ERR_NEWSCENARIO 120
+#define STR_SCENARIO 121
+#define STR_PIVOT_TABLE 122
+#define STR_NEWTABNAMENOTUNIQUE 123
+
+#define STR_FUN_TEXT_SUM 124
+#define STR_FUN_TEXT_COUNT 125
+#define STR_FUN_TEXT_AVG 126
+#define STR_FUN_TEXT_MAX 127
+#define STR_FUN_TEXT_MIN 128
+#define STR_FUN_TEXT_PRODUCT 129
+#define STR_FUN_TEXT_STDDEV 130
+#define STR_FUN_TEXT_VAR 131
+#define STR_DOC_STAT 132
+
+//#define STR_STYLENAME_RESULT 133 s.u.
+
+#define STR_DBNAME_IMPORT 134
+
+#define STR_NOCHARTATCURSOR 135
+#define STR_NOAREASELECTED 136
+#define STR_INVALIDTABNAME 137
+
+#define STR_PIVOT_NOTFOUND 138
+#define STR_ERROR_STR 139
+#define STR_NV_STR 140
+#define STR_EMPTYDATA 141
+#define STR_PIVOT_NODATA 142
+#define STR_PIVOT_MOVENOTALLOWED 143
+
+#define STR_PRINT_INVALID_AREA 144
+
+#define STR_PAGESTYLE 145
+#define STR_HEADER 146
+#define STR_FOOTER 147
+
+#define STR_TEXTATTRS 148
+
+#define STR_HFCMD_DELIMITER 149
+#define HFCMD_START 150
+#define STR_HFCMD_PAGE 150
+#define STR_HFCMD_PAGES 151
+#define STR_HFCMD_DATE 152
+#define STR_HFCMD_TIME 153
+#define STR_HFCMD_FILE 154
+#define STR_HFCMD_TABLE 155
+#define HFCMD_END 155
+
+#define STR_PROTECTIONERR 156
+
+#define STR_PAGEHEADER 157
+#define STR_PAGEFOOTER 158
+#define STR_PAGE 159
+#define STR_LONG_ERR_ILL_ARG 160
+#define STR_LONG_ERR_ILL_PAR 161
+#define STR_LONG_ERR_ILL_FPO 162
+#define STR_LONG_ERR_ILL_CHAR 163
+#define STR_LONG_ERR_ILL_SEP 164
+#define STR_LONG_ERR_PAIR 165
+#define STR_LONG_ERR_OP_EXP 166
+#define STR_LONG_ERR_VAR_EXP 167
+#define STR_LONG_ERR_CODE_OVF 168
+#define STR_LONG_ERR_STR_OVF 169
+#define STR_LONG_ERR_STACK_OVF 170
+#define STR_LONG_ERR_SYNTAX 171
+#define STR_LONG_ERR_CIRC_REF 172
+#define STR_LONG_ERR_NO_NAME 173
+#define STR_LONG_ERR_NO_REF 174
+#define STR_LONG_ERR_NO_CONV 175
+#define STR_LONG_ERR_NO_VALUE 176
+#define STR_LONG_ERR_NV 177
+
+#define STR_GRIDCOLOR 178
+#define STR_MERGE_NOTEMPTY 179
+#define STR_CELL_FILTER 180
+
+#define STR_TARGETNOTFOUND 181
+
+#define STR_INVALID_EPS 182
+#define STR_TABLE_OP 183 // documen4.cxx
+#define STR_UNDO_TABOP 184
+
+#define STR_INVALID_AFNAME 185
+
+#define STR_AREA 186
+#define STR_YES 187
+#define STR_NO 188
+#define STR_PROTECTION 189
+#define STR_FORMULAS 190
+#define STR_HIDE 191
+#define STR_PRINT 192
+
+#define STR_INVALID_AFAREA 193
+
+#define STR_CASCADE 194 // Funktionsautopilot
+#define STR_OPTIONAL 195
+#define STR_REQUIRED 196
+#define STR_EDITFUNCTION 197
+#define STR_INVALID 198
+
+#define STR_NOTES 199
+#define STR_QUERY_DELTAB 200
+
+#define STR_UNDO_DETREFRESH 201
+
+#define STR_UNDO_SHOWNOTE 202
+#define STR_UNDO_HIDENOTE 203
+#define STR_UNDO_DRAGDROP 204
+
+#define STR_EXPORT_ASCII_WARNING 205
+#define STR_IMPORT_ERROR 206
+#define STR_IMPORT_ASCII 207
+#define STR_IMPORT_LOTUS 208
+#define STR_IMPORT_DBF 209
+#define STR_EXPORT_ASCII 210
+
+#define STR_STYLENAME_STANDARD 71
+#define STR_STYLENAME_RESULT 133
+#define STR_STYLENAME_RESULT1 211
+#define STR_STYLENAME_HEADLINE 212
+#define STR_STYLENAME_HEADLINE1 213
+#define STR_STYLENAME_REPORT 214
+#define STR_STYLENAME_REPORT1 215
+
+#define STR_PIVOT_ERROR 216
+#define STR_PIVOT_PROGRESS 217
+#define STR_IMPORT_EXCEL_WARNING 218
+#define STR_SPELLING_STOP_OK 219
+#define STR_THESAURUS_NO_STRING 220
+#define STR_SPELLING_BEGIN_TAB 221
+#define STR_SPELLING_NO_LANG 222 // kann spaeter wieder raus
+
+#define STR_UNDO_GRAFEDIT 223
+
+#define STR_NOLANGERR 224
+
+#define STR_UNDO_INSERT_TAB 225
+#define STR_UNDO_DELETE_TAB 226
+#define STR_UNDO_RENAME_TAB 227
+#define STR_UNDO_MOVE_TAB 228
+#define STR_UNDO_COPY_TAB 229
+#define STR_UNDO_APPEND_TAB 230
+
+#define STR_CHART_MAINTITLE 231
+#define STR_CHART_SUBTITLE 232
+#define STR_CHART_XTITLE 233
+#define STR_CHART_YTITLE 234
+#define STR_CHART_ZTITLE 235
+
+#define STR_ABSREFLOST 236
+#define STR_NAMECONFLICT 237
+
+#define STR_ERR_AUTOFILTER 238
+#define STR_MSSG_SEARCHANDREPLACE_1 239
+#define STR_MSSG_SEARCHANDREPLACE_2 240
+#define STR_MSSG_SEARCHANDREPLACE_3 241
+
+#define STR_CREATENAME_REPLACE 242
+#define STR_CREATENAME_MARKERR 243
+
+#define STR_UNDO_LISTNAMES 244
+#define STR_UNDO_PIVOT_NEW 245
+#define STR_UNDO_PIVOT_MODIFY 246
+#define STR_UNDO_PIVOT_DELETE 247
+#define STR_UNDO_CONSOLIDATE 248
+#define STR_UNDO_USESCENARIO 249
+#define STR_UNDO_MAKESCENARIO 250
+
+#define STR_CONSOLIDATE_ERR1 251
+#define STR_SCENARIO_NOTFOUND 252
+
+#define STR_UNDO_APPLYCELLSTYLE 253
+
+#define STR_UNDO_DETADDPRED 254
+#define STR_UNDO_DETDELPRED 255
+#define STR_UNDO_DETADDSUCC 256
+#define STR_UNDO_DETDELSUCC 257
+#define STR_UNDO_DETADDERROR 258
+#define STR_UNDO_DETDELALL 259
+
+#define STR_QUERY_DELENTRY 260
+
+#define STR_VOBJ_OBJECT 261
+#define STR_VOBJ_CHART 262
+#define STR_VOBJ_DRAWINGS 263
+#define STR_VOBJ_MODE_SHOW 264
+#define STR_VOBJ_MODE_HIDE 265
+#define STR_VOBJ_MODE_DUMMY 266
+
+#define STR_SCATTR_PAGE_TOPDOWN 267
+#define STR_SCATTR_PAGE_LEFTRIGHT 268
+#define STR_SCATTR_PAGE_NOTES 269
+#define STR_SCATTR_PAGE_GRID 270
+#define STR_SCATTR_PAGE_HEADERS 271
+#define STR_SCATTR_PAGE_FORMULAS 272
+#define STR_SCATTR_PAGE_NULLVALS 273
+#define STR_SCATTR_PAGE_PRINTDIR 274
+#define STR_SCATTR_PAGE_FIRSTPAGENO 275
+#define STR_SCATTR_PAGE_SCALE 276
+#define STR_SCATTR_PAGE_SCALETOPAGES 277
+
+#define STR_NOREF_STR 278
+#define STR_ODER_SO 279
+
+#define STR_UNDO_CHARTDATA 280
+#define STR_UNDO_ORIGINALSIZE 281
+
+#define STR_LINKERROR 282
+#define STR_LINKERRORFILE 283
+#define STR_LINKERRORTAB 284
+#define STR_UNDO_UPDATELINK 285
+
+#define STR_IMPORT_REPLACE 286
+
+#define STR_UNDO_REMOVELINK 287
+
+#define STR_OVERVIEW 288
+#define STR_DOC_INFO 289
+#define STR_DOC_CREATED 290
+#define STR_DOC_MODIFIED 291
+#define STR_DOC_PRINTED 292
+#define STR_DOC_THEME 293
+#define STR_DOC_KEYWORDS 318
+#define STR_DOC_COMMENT 294
+#define STR_BY 295
+#define STR_ON 296
+
+#define STR_RELOAD_TABLES 297
+
+#define STR_FILTER_TOOMANY 298
+
+#define STR_UNDO_ENTERMATRIX 299
+
+#define STR_INSERT_FULL 300
+#define STR_TABINSERT_ERROR 301
+#define STR_PASTE_ERROR 302
+#define STR_PASTE_FULL 303
+
+#define STR_ERR_INVALID_AREA 304
+
+#define STR_IMPORT_DIF 305
+#define STR_EXPORT_DIF 306
+
+#define STR_ERR_NOREF 307
+#define STR_FUN_TEXT_COUNT2 308
+#define STR_NO_NAME_REF 309
+
+#define STR_MATRIXFRAGMENTERR 310
+
+#define STR_UNDO_SHOWTAB 311
+#define STR_UNDO_HIDETAB 312
+#define STR_UNDO_INSERTAREALINK 313
+
+#define STR_REIMPORT_AFTER_LOAD 314
+
+#define STR_DETINVALID_OVERFLOW 315
+#define STR_GRAPHICNAME 316
+#define STR_INVALIDNAME 317
+// 318 ist oben
+#define STR_ERR_LINKOVERLAP 319
+
+#define STR_VALID_MACRONOTFOUND 320
+#define STR_VALID_DEFERROR 321
+
+#define STR_UNDO_DETINVALID 322
+
+#define STR_PROGRESS_CALCULATING 323
+#define STR_PROGRESS_SORTING 324
+#define STR_PROGRESS_HEIGHTING 325
+
+#define STR_QUICKHELP_DELETE 326
+
+#define STR_FUNCTIONLIST_MORE 327
+
+#define STR_PIVOT_STYLE_INNER 328
+#define STR_PIVOT_STYLE_RESULT 329
+#define STR_PIVOT_STYLE_CATEGORY 330
+#define STR_PIVOT_STYLE_TITLE 331
+#define STR_PIVOT_STYLE_FIELDNAME 332
+#define STR_PIVOT_STYLE_TOP 333
+
+#define STR_OPERATION_FILTER 334
+#define STR_OPERATION_SORT 335
+#define STR_OPERATION_SUBTOTAL 336
+#define STR_OPERATION_NONE 337
+
+#define STR_UNDO_PROTECT_TAB 338
+#define STR_UNDO_UNPROTECT_TAB 339
+#define STR_UNDO_PROTECT_DOC 340
+#define STR_UNDO_UNPROTECT_DOC 341
+
+#define STR_PROGRESS_IMPORT 342
+
+#define STR_SORT_ERR_MERGED 343
+
+#define STR_TIP_WIDTH 344
+#define STR_TIP_HEIGHT 345
+#define STR_TIP_HIDE 346
+
+#define STR_UNDO_REMOVEBREAKS 347
+#define STR_UNDO_PRINTSCALE 348
+#define STR_UNDO_DRAG_BREAK 349
+
+#define STR_QUICKHELP_REF 350
+
+#define STR_PIVOT_OVERLAP 351
+#define STR_PIVOT_NOTEMPTY 352
+
+#define STR_QUERY_NOTFOUND 353
+
+#define STR_ERR_INSERTOBJ 354
+
+#define STR_PROGRESS_COMPARING 355
+
+#define STR_CHANGED_BLANK 356
+#define STR_CHANGED_CELL 357
+#define STR_CHANGED_INSERT 358
+#define STR_CHANGED_DELETE 359
+#define STR_CHANGED_MOVE 360
+
+#define STR_QUERY_DELSCENARIO 361
+#define STR_UNDO_EDITSCENARIO 362
+
+#define STR_END_REDLINING_TITLE 363
+#define STR_END_REDLINING 364
+
+#define STR_UNDO_EDITNOTE 365
+#define STR_TABREMOVE_ERROR 366
+#define STR_CLOSE_ERROR_LINK 367
+#define STR_UNDO_RANGENAMES 368
+
+#define STR_MSSG_SEARCHANDREPLACE_4 369
+#define STR_MSSG_SEARCHANDREPLACE_5 370
+
+#define STR_UNDO_RESIZEMATRIX 371
+#define STR_TIP_RESIZEMATRIX 372
+
+#define STR_READONLYERR 373
+
+#define STR_PASTE_BIGGER 374
+
+#define STR_MACRO_WARNING 375
+
+#define STR_EXPORT_DBF 376
+
+#define STR_UNDO_APPLYPAGESTYLE 377
+#define STR_UNDO_EDITCELLSTYLE 378
+#define STR_UNDO_EDITPAGESTYLE 379
+
+#define STR_COUNT 379
+
+
+
+#endif
+
diff --git a/sc/inc/hints.hxx b/sc/inc/hints.hxx
new file mode 100644
index 000000000000..d135c09ffe8b
--- /dev/null
+++ b/sc/inc/hints.hxx
@@ -0,0 +1,199 @@
+/*************************************************************************
+ *
+ * $RCSfile: hints.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_HINTS_HXX
+#define SC_HINTS_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef _SFXHINT_HXX //autogen
+#include <svtools/hint.hxx>
+#endif
+
+// ---------------------------------------------------------------------------
+
+class ScPaintHint : public SfxHint
+{
+ ScRange aRange;
+ USHORT nParts;
+ BOOL bPrint; // Flag, ob auch Druck/Vorschau betroffen ist
+
+public:
+ TYPEINFO();
+ ScPaintHint();
+ ScPaintHint( const ScRange& rRng, USHORT nPaint = PAINT_ALL );
+ ~ScPaintHint();
+
+ void SetPrintFlag(BOOL bSet) { bPrint = bSet; }
+
+ const ScRange& GetRange() const { return aRange; }
+ USHORT GetStartCol() const { return aRange.aStart.Col(); }
+ USHORT GetStartRow() const { return aRange.aStart.Row(); }
+ USHORT GetStartTab() const { return aRange.aStart.Tab(); }
+ USHORT GetEndCol() const { return aRange.aEnd.Col(); }
+ USHORT GetEndRow() const { return aRange.aEnd.Row(); }
+ USHORT GetEndTab() const { return aRange.aEnd.Tab(); }
+ USHORT GetParts() const { return nParts; }
+ BOOL GetPrintFlag() const { return bPrint; }
+};
+
+
+class ScUpdateRefHint : public SfxHint
+{
+ UpdateRefMode eUpdateRefMode;
+ ScRange aRange;
+ short nDx;
+ short nDy;
+ short nDz;
+
+public:
+ TYPEINFO();
+
+ ScUpdateRefHint( UpdateRefMode eMode, const ScRange& rR,
+ short nX, short nY, short nZ );
+ ~ScUpdateRefHint();
+
+ UpdateRefMode GetMode() const { return eUpdateRefMode; }
+ const ScRange& GetRange() const { return aRange; }
+ short GetDx() const { return nDx; }
+ short GetDy() const { return nDy; }
+ short GetDz() const { return nDz; }
+};
+
+
+#define SC_POINTERCHANGED_NUMFMT 1
+
+class ScPointerChangedHint : public SfxHint
+{
+ USHORT nFlags;
+
+public:
+ TYPEINFO();
+
+ ScPointerChangedHint( USHORT nF );
+ ~ScPointerChangedHint();
+
+ USHORT GetFlags() const { return nFlags; }
+};
+
+
+//! move ScLinkRefreshedHint to a different file?
+
+#define SC_LINKREFTYPE_NONE 0
+#define SC_LINKREFTYPE_SHEET 1
+#define SC_LINKREFTYPE_AREA 2
+#define SC_LINKREFTYPE_DDE 3
+
+class ScLinkRefreshedHint : public SfxHint
+{
+ USHORT nLinkType; // SC_LINKREFTYPE_...
+ String aUrl; // used for sheet links
+ String aDdeAppl; // used for dde links:
+ String aDdeTopic;
+ String aDdeItem;
+ BYTE nDdeMode;
+ ScAddress aDestPos; // used to identify area links
+ //! also use source data for area links?
+
+public:
+ TYPEINFO();
+ ScLinkRefreshedHint();
+ ~ScLinkRefreshedHint();
+
+ void SetSheetLink( const String& rSourceUrl );
+ void SetDdeLink( const String& rA, const String& rT, const String& rI, BYTE nM );
+ void SetAreaLink( const ScAddress& rPos );
+
+ USHORT GetLinkType() const { return nLinkType; }
+ const String& GetUrl() const { return aUrl; }
+ const String& GetDdeAppl() const { return aDdeAppl; }
+ const String& GetDdeTopic() const { return aDdeTopic; }
+ const String& GetDdeItem() const { return aDdeItem; }
+ BYTE GetDdeMode() const { return nDdeMode; }
+ const ScAddress& GetDestPos() const { return aDestPos; }
+};
+
+
+//! move ScAutoStyleHint to a different file?
+
+class ScAutoStyleHint : public SfxHint
+{
+ ScRange aRange;
+ String aStyle1;
+ String aStyle2;
+ ULONG nTimeout;
+
+public:
+ TYPEINFO();
+ ScAutoStyleHint( const ScRange& rR, const String& rSt1,
+ ULONG nT, const String& rSt2 );
+ ~ScAutoStyleHint();
+
+ const ScRange& GetRange() const { return aRange; }
+ const String& GetStyle1() const { return aStyle1; }
+ UINT32 GetTimeout() const { return nTimeout; }
+ const String& GetStyle2() const { return aStyle2; }
+};
+
+
+#endif
diff --git a/sc/inc/htmlimp.hxx b/sc/inc/htmlimp.hxx
new file mode 100644
index 000000000000..51760fb5ab73
--- /dev/null
+++ b/sc/inc/htmlimp.hxx
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_HTMLIMP_HXX
+#define SC_HTMLIMP_HXX
+
+#include "eeimport.hxx"
+
+class ScHTMLParser;
+
+class ScHTMLImport : public ScEEImport
+{
+public:
+ ScHTMLImport( ScDocument* pDoc, const ScRange& rRange );
+ ~ScHTMLImport();
+ const ScHTMLParser* GetParser() const { return (ScHTMLParser*)pParser; }
+};
+
+
+#endif
diff --git a/sc/inc/indexmap.hxx b/sc/inc/indexmap.hxx
new file mode 100644
index 000000000000..692bc969e73f
--- /dev/null
+++ b/sc/inc/indexmap.hxx
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * $RCSfile: indexmap.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SC_INDEXMAP_HXX
+#define _SC_INDEXMAP_HXX
+
+
+#ifndef _SOLAR_H //autogen wg. USHORT
+#include <tools/solar.h>
+#endif
+
+
+class ScIndexMap
+{
+ // not implemented
+ ScIndexMap( const ScIndexMap& );
+ ScIndexMap& operator=( const ScIndexMap& );
+
+private:
+ USHORT* pMap;
+ USHORT nCount;
+
+public:
+ ScIndexMap( USHORT nEntries );
+ ~ScIndexMap();
+
+ void SetPair( USHORT nEntry, USHORT nIndex1, USHORT nIndex2 );
+ /// returns nIndex2 if found, else nIndex1
+ USHORT Find( USHORT nIndex1 ) const;
+};
+
+
+#endif // _SC_INDEXMAP_HXX
+
diff --git a/sc/inc/inputopt.hxx b/sc/inc/inputopt.hxx
new file mode 100644
index 000000000000..8053e42a488f
--- /dev/null
+++ b/sc/inc/inputopt.hxx
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * $RCSfile: inputopt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_INPUTOPT_HXX
+#define SC_INPUTOPT_HXX
+
+
+#ifndef _UTL_CONFIGITEM_HXX_
+#include <unotools/configitem.hxx>
+#endif
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class SvStream;
+
+
+class ScInputOptions
+{
+private:
+ USHORT nMoveDir; // enum ScDirection
+ BOOL bMoveSelection;
+ BOOL bEnterEdit;
+ BOOL bExtendFormat;
+ BOOL bRangeFinder;
+ BOOL bExpandRefs;
+ BOOL bMarkHeader;
+ BOOL bUseTabCol;
+
+public:
+ ScInputOptions();
+ ScInputOptions( const ScInputOptions& rCpy );
+ ~ScInputOptions();
+
+ void SetDefaults();
+
+ void SetMoveDir(USHORT nNew) { nMoveDir = nNew; }
+ USHORT GetMoveDir() const { return nMoveDir; }
+ void SetMoveSelection(BOOL bSet) { bMoveSelection = bSet; }
+ BOOL GetMoveSelection() const { return bMoveSelection; }
+ void SetEnterEdit(BOOL bSet) { bEnterEdit = bSet; }
+ BOOL GetEnterEdit() const { return bEnterEdit; }
+ void SetExtendFormat(BOOL bSet) { bExtendFormat = bSet; }
+ BOOL GetExtendFormat() const { return bExtendFormat; }
+ void SetRangeFinder(BOOL bSet) { bRangeFinder = bSet; }
+ BOOL GetRangeFinder() const { return bRangeFinder; }
+ void SetExpandRefs(BOOL bSet) { bExpandRefs = bSet; }
+ BOOL GetExpandRefs() const { return bExpandRefs; }
+ void SetMarkHeader(BOOL bSet) { bMarkHeader = bSet; }
+ BOOL GetMarkHeader() const { return bMarkHeader; }
+ void SetUseTabCol(BOOL bSet) { bUseTabCol = bSet; }
+ BOOL GetUseTabCol() const { return bUseTabCol; }
+
+ const ScInputOptions& operator= ( const ScInputOptions& rOpt );
+ friend SvStream& operator>> ( SvStream& rStream, ScInputOptions& rOpt );
+ friend SvStream& operator<< ( SvStream& rStream, const ScInputOptions& rOpt );
+};
+
+
+//==================================================================
+// CfgItem fuer Eingabe-Optionen
+//==================================================================
+
+class ScInputCfg : public ScInputOptions,
+ public utl::ConfigItem
+{
+ com::sun::star::uno::Sequence<rtl::OUString> GetPropertyNames();
+
+public:
+ ScInputCfg();
+
+ void SetOptions( const ScInputOptions& rNew );
+ void OptionsChanged(); // after direct access to SetOptions base class
+
+ virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames );
+ virtual void Commit();
+};
+
+
+#endif
+
diff --git a/sc/inc/linkuno.hxx b/sc/inc/linkuno.hxx
new file mode 100644
index 000000000000..f9be747c7b6d
--- /dev/null
+++ b/sc/inc/linkuno.hxx
@@ -0,0 +1,538 @@
+/*************************************************************************
+ *
+ * $RCSfile: linkuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_LINKUNO_HXX
+#define SC_LINKUNO_HXX
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XDDELINK_HPP_
+#include <com/sun/star/sheet/XDDELink.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XAREALINK_HPP_
+#include <com/sun/star/sheet/XAreaLink.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XAREALINKS_HPP_
+#include <com/sun/star/sheet/XAreaLinks.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XREFRESHABLE_HPP_
+#include <com/sun/star/util/XRefreshable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMED_HPP_
+#include <com/sun/star/container/XNamed.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+
+
+class ScAreaLink;
+class ScDocShell;
+class ScTableLink;
+
+typedef ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XRefreshListener >* XRefreshListenerPtr;
+SV_DECL_PTRARR_DEL( XRefreshListenerArr_Impl, XRefreshListenerPtr, 4, 4 );
+
+
+
+class ScSheetLinkObj : public cppu::WeakImplHelper4<
+ com::sun::star::container::XNamed,
+ com::sun::star::util::XRefreshable,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ SfxItemPropertySet aPropSet;
+ ScDocShell* pDocShell;
+ String aFileName;
+ XRefreshListenerArr_Impl aRefreshListeners;
+
+ ScTableLink* GetLink_Impl() const;
+ void Refreshed_Impl();
+
+public:
+ ScSheetLinkObj(ScDocShell* pDocSh, const String& rName);
+ virtual ~ScSheetLinkObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XRefreshable
+ virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addRefreshListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XRefreshListener >& l )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeRefreshListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XRefreshListener >& l )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // aus get/setPropertyValue gerufen:
+ ::rtl::OUString getFileName(void) const;
+ void setFileName(const ::rtl::OUString& FileName);
+ ::rtl::OUString getFilter(void) const;
+ void setFilter(const ::rtl::OUString& Filter);
+ ::rtl::OUString getFilterOptions(void) const;
+ void setFilterOptions(const ::rtl::OUString& FilterOptions);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScSheetLinksObj : public cppu::WeakImplHelper4<
+ com::sun::star::container::XNameAccess,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+
+ ScSheetLinkObj* GetObjectByIndex_Impl(INT32 nIndex);
+ ScSheetLinkObj* GetObjectByName_Impl(const ::rtl::OUString& aName);
+
+public:
+ ScSheetLinksObj(ScDocShell* pDocSh);
+ virtual ~ScSheetLinksObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScAreaLinkObj : public cppu::WeakImplHelper4<
+ com::sun::star::sheet::XAreaLink,
+ com::sun::star::util::XRefreshable,
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ SfxItemPropertySet aPropSet;
+ ScDocShell* pDocShell;
+ USHORT nPos;
+ XRefreshListenerArr_Impl aRefreshListeners;
+
+ void Modify_Impl( const ::rtl::OUString* pNewFile, const ::rtl::OUString* pNewFilter,
+ const ::rtl::OUString* pNewOptions, const ::rtl::OUString* pNewSource,
+ const com::sun::star::table::CellRangeAddress* pNewDest );
+ void Refreshed_Impl();
+
+public:
+ ScAreaLinkObj(ScDocShell* pDocSh, USHORT nP);
+ virtual ~ScAreaLinkObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XRefreshable
+ virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addRefreshListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XRefreshListener >& l )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeRefreshListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XRefreshListener >& l )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // aus get/setPropertyValue gerufen:
+ ::rtl::OUString getFileName(void) const;
+ void setFileName(const ::rtl::OUString& FileName);
+ ::rtl::OUString getFilter(void) const;
+ void setFilter(const ::rtl::OUString& Filter);
+ ::rtl::OUString getFilterOptions(void) const;
+ void setFilterOptions(const ::rtl::OUString& FilterOptions);
+
+ // XAreaLink
+ virtual ::rtl::OUString SAL_CALL getSourceArea() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSourceArea( const ::rtl::OUString& aSourceArea )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getDestArea()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setDestArea( const ::com::sun::star::table::CellRangeAddress& aDestArea )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScAreaLinksObj : public cppu::WeakImplHelper3<
+ com::sun::star::sheet::XAreaLinks,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+
+ ScAreaLinkObj* GetObjectByIndex_Impl(INT32 nIndex);
+
+public:
+ ScAreaLinksObj(ScDocShell* pDocSh);
+ virtual ~ScAreaLinksObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XAreaLinks
+ virtual void SAL_CALL insertAtPosition( const ::com::sun::star::table::CellAddress& aDestPos,
+ const ::rtl::OUString& aFileName,
+ const ::rtl::OUString& aSourceArea,
+ const ::rtl::OUString& aFilter,
+ const ::rtl::OUString& aFilterOptions )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByIndex( sal_Int32 nIndex )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+//! order of XNamed and DDELink changed to avoid "duplicate comdat" symbols
+
+class ScDDELinkObj : public cppu::WeakImplHelper4<
+ com::sun::star::sheet::XDDELink,
+ com::sun::star::container::XNamed,
+ com::sun::star::util::XRefreshable,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ String aAppl;
+ String aTopic;
+ String aItem;
+ XRefreshListenerArr_Impl aRefreshListeners;
+
+ void Refreshed_Impl();
+
+public:
+ ScDDELinkObj(ScDocShell* pDocSh, const String& rA,
+ const String& rT, const String& rI);
+ virtual ~ScDDELinkObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XDDELink
+ virtual ::rtl::OUString SAL_CALL getApplication() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getTopic() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getItem() throw(::com::sun::star::uno::RuntimeException);
+
+ // XRefreshable
+ virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addRefreshListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XRefreshListener >& l )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeRefreshListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::util::XRefreshListener >& l )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScDDELinksObj : public cppu::WeakImplHelper4<
+ com::sun::star::container::XNameAccess,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+
+ ScDDELinkObj* GetObjectByIndex_Impl(INT32 nIndex);
+ ScDDELinkObj* GetObjectByName_Impl(const ::rtl::OUString& aName);
+
+public:
+ ScDDELinksObj(ScDocShell* pDocSh);
+ virtual ~ScDDELinksObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+
+
+#endif
+
diff --git a/sc/inc/markarr.hxx b/sc/inc/markarr.hxx
new file mode 100644
index 000000000000..820a0b3a3a78
--- /dev/null
+++ b/sc/inc/markarr.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: markarr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_MARKARR_HXX
+#define SC_MARKARR_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+
+struct ScMarkEntry
+{
+ USHORT nRow;
+ BOOL bMarked;
+};
+
+class ScMarkArray
+{
+ USHORT nCount;
+ ScMarkEntry* pData;
+
+friend class ScMarkArrayIter;
+friend class ScDocument; // fuer FillInfo
+
+public:
+ ScMarkArray();
+ ~ScMarkArray();
+ void Reset( BOOL bMarked = FALSE );
+ BOOL GetMark( USHORT nRow ) const;
+ void SetMark( USHORT nRow, BOOL bMarked );
+ void SetMarkArea( USHORT nStartRow, USHORT nEndRow, BOOL bMarked );
+ BOOL IsAllMarked( USHORT nStartRow, USHORT nEndRow ) const;
+ BOOL HasOneMark( USHORT& rStartRow, USHORT& rEndRow ) const;
+ BOOL HasMarks() const;
+ void CopyMarksTo( ScMarkArray& rDestMarkArray ) const;
+
+ BOOL Search( USHORT nRow, short& nIndex ) const;
+ void DeleteArea(USHORT nStartRow, USHORT nEndRow);
+ void SwapCol(ScMarkArray& rMarkArray);
+ void MoveTo(USHORT nStartRow, USHORT nEndRow, ScMarkArray& rMarkArray);
+
+ short GetNextMarked( short nRow, BOOL bUp ) const; // inkl. aktuelle
+ USHORT GetMarkEnd( USHORT nRow, BOOL bUp ) const;
+};
+
+
+class ScMarkArrayIter // selektierte Bereiche durchgehen
+{
+ const ScMarkArray* pArray;
+ USHORT nPos;
+public:
+ ScMarkArrayIter( const ScMarkArray* pNewArray );
+ ~ScMarkArrayIter();
+
+ BOOL Next( USHORT& rTop, USHORT& rBottom );
+};
+
+
+
+#endif
+
diff --git a/sc/inc/markdata.hxx b/sc/inc/markdata.hxx
new file mode 100644
index 000000000000..3520db5e1df0
--- /dev/null
+++ b/sc/inc/markdata.hxx
@@ -0,0 +1,154 @@
+/*************************************************************************
+ *
+ * $RCSfile: markdata.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_MARKDATA_HXX
+#define SC_MARKDATA_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScMarkArray;
+class ScRangeList;
+
+//! todo:
+//! Es muss auch die Moeglichkeit geben, MarkArrays pro Tabelle zu halten,
+//! damit "alle suchen" ueber mehrere Tabellen wieder funktioniert!
+
+
+class ScMarkData
+{
+private:
+ ScRange aMarkRange; // Bereich
+ ScRange aMultiRange; // maximaler Bereich insgesamt
+ ScMarkArray* pMultiSel; // Mehrfachselektion
+ BOOL bTabMarked[MAXTAB+1]; // Tabelle selektiert
+ BOOL bMarked; // Rechteck markiert
+ BOOL bMultiMarked; // mehrfach markiert
+
+ BOOL bMarking; // Bereich wird aufgezogen -> kein MarkToMulti
+ BOOL bMarkIsNeg; // Aufheben bei Mehrfachselektion
+
+public:
+ ScMarkData();
+ ScMarkData(const ScMarkData& rData);
+ ~ScMarkData();
+
+ ScMarkData& operator=(const ScMarkData& rData);
+
+ void ResetMark();
+ void SetMarkArea( const ScRange& rRange );
+
+ void SetMultiMarkArea( const ScRange& rRange, BOOL bMark = TRUE );
+
+ void MarkToMulti();
+ void MarkToSimple();
+
+ BOOL IsMarked() const { return bMarked; }
+ BOOL IsMultiMarked() const { return bMultiMarked; }
+
+ void GetMarkArea( ScRange& rRange ) const;
+ void GetMultiMarkArea( ScRange& rRange ) const;
+
+ void SetAreaTab( USHORT nTab );
+
+ void SelectTable( USHORT nTab, BOOL bNew ) { bTabMarked[nTab] = bNew; }
+ BOOL GetTableSelect( USHORT nTab ) const { return bTabMarked[nTab]; }
+
+ void SelectOneTable( USHORT nTab );
+ USHORT GetSelectCount() const;
+ USHORT GetFirstSelected() const;
+
+ void SetMarkNegative( BOOL bFlag ) { bMarkIsNeg = bFlag; }
+ BOOL IsMarkNegative() const { return bMarkIsNeg; }
+ void SetMarking( BOOL bFlag ) { bMarking = bFlag; }
+ BOOL GetMarkingFlag() const { return bMarking; }
+
+ // fuer FillInfo / Document etc.
+ const ScMarkArray* GetArray() const { return pMultiSel; }
+
+ BOOL IsCellMarked( USHORT nCol, USHORT nRow, BOOL bNoSimple = FALSE ) const;
+ void FillRangeListWithMarks( ScRangeList* pList, BOOL bClear ) const;
+ void ExtendRangeListTables( ScRangeList* pList ) const;
+
+ void MarkFromRangeList( const ScRangeList& rList, BOOL bReset );
+
+ USHORT GetMarkColumnRanges( USHORT* pRanges );
+ USHORT GetMarkRowRanges( USHORT* pRanges );
+
+ BOOL IsColumnMarked( USHORT nCol ) const;
+ BOOL IsRowMarked( USHORT nRow ) const;
+ BOOL IsAllMarked( const ScRange& rRange ) const; // Multi
+
+ short GetNextMarked( USHORT nCol, short nRow, BOOL bUp ) const;
+ BOOL HasMultiMarks( USHORT nCol ) const;
+ BOOL HasAnyMultiMarks() const;
+
+ // Tabellen-Markierungen anpassen:
+ void InsertTab( USHORT nTab );
+ void DeleteTab( USHORT nTab );
+};
+
+
+
+#endif
+
+
diff --git a/sc/inc/miscuno.hxx b/sc/inc/miscuno.hxx
new file mode 100644
index 000000000000..1c97863a5d9b
--- /dev/null
+++ b/sc/inc/miscuno.hxx
@@ -0,0 +1,345 @@
+/*************************************************************************
+ *
+ * $RCSfile: miscuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_MISCUNO_HXX
+#define SC_MISCUNO_HXX
+
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATION_HPP_
+#include <com/sun/star/container/XEnumeration.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+
+
+#define SC_SIMPLE_SERVICE_INFO( ClassName, ClassNameAscii, ServiceAscii ) \
+::rtl::OUString SAL_CALL ClassName##::getImplementationName() \
+ throw(::com::sun::star::uno::RuntimeException) \
+{ \
+ return ::rtl::OUString::createFromAscii(ClassNameAscii##); \
+} \
+sal_Bool SAL_CALL ClassName##::supportsService( const ::rtl::OUString& ServiceName ) \
+ throw(::com::sun::star::uno::RuntimeException) \
+{ \
+ return !ServiceName.compareToAscii(ServiceAscii); \
+} \
+::com::sun::star::uno::Sequence< ::rtl::OUString > \
+ SAL_CALL ClassName##::getSupportedServiceNames(void) \
+ throw(::com::sun::star::uno::RuntimeException) \
+{ \
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > aRet(1); \
+ ::rtl::OUString* pArray = aRet.getArray(); \
+ pArray[0] = ::rtl::OUString::createFromAscii(ServiceAscii##); \
+ return aRet; \
+}
+
+#define SC_IMPL_DUMMY_PROPERTY_LISTENER( ClassName ) \
+ void SAL_CALL ClassName##::addPropertyChangeListener( const rtl::OUString&, \
+ const uno::Reference<beans::XPropertyChangeListener>&) \
+ throw(beans::UnknownPropertyException, \
+ lang::WrappedTargetException, uno::RuntimeException) \
+ { DBG_ERROR("not implemented"); } \
+ void SAL_CALL ClassName##::removePropertyChangeListener( const rtl::OUString&, \
+ const uno::Reference<beans::XPropertyChangeListener>&) \
+ throw(beans::UnknownPropertyException, \
+ lang::WrappedTargetException, uno::RuntimeException) \
+ { DBG_ERROR("not implemented"); } \
+ void SAL_CALL ClassName##::addVetoableChangeListener( const rtl::OUString&, \
+ const uno::Reference<beans::XVetoableChangeListener>&) \
+ throw(beans::UnknownPropertyException, \
+ lang::WrappedTargetException, uno::RuntimeException) \
+ { DBG_ERROR("not implemented"); } \
+ void SAL_CALL ClassName##::removeVetoableChangeListener( const rtl::OUString&, \
+ const uno::Reference<beans::XVetoableChangeListener>&) \
+ throw(beans::UnknownPropertyException, \
+ lang::WrappedTargetException, uno::RuntimeException) \
+ { DBG_ERROR("not implemented"); }
+
+
+#define SC_QUERYINTERFACE(x) \
+ if (rType == getCppuType((const uno::Reference<x>*)0)) \
+ { uno::Any aR; aR <<= uno::Reference<x>(this); return aR; }
+
+// SC_QUERY_MULTIPLE( XElementAccess, XIndexAccess ):
+// use if interface is used several times in one class
+
+#define SC_QUERY_MULTIPLE(x,y) \
+ if (rType == getCppuType((const uno::Reference<x>*)0)) \
+ { uno::Any aR; aR <<= uno::Reference<x>(static_cast<y*>(this)); return aR; }
+
+
+class ScIndexEnumeration : public cppu::WeakImplHelper2<
+ com::sun::star::container::XEnumeration,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ com::sun::star::uno::Reference<com::sun::star::container::XIndexAccess> xIndex;
+ INT32 nPos;
+
+public:
+ ScIndexEnumeration(const com::sun::star::uno::Reference<
+ com::sun::star::container::XIndexAccess>& rInd);
+ virtual ~ScIndexEnumeration();
+
+ // XEnumeration
+ virtual sal_Bool SAL_CALL hasMoreElements() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL nextElement()
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( )
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScEmptyEnumerationAccess : public cppu::WeakImplHelper2<
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::lang::XServiceInfo >
+{
+public:
+ ScEmptyEnumerationAccess();
+ virtual ~ScEmptyEnumerationAccess();
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( )
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScEmptyEnumeration : public cppu::WeakImplHelper2<
+ com::sun::star::container::XEnumeration,
+ com::sun::star::lang::XServiceInfo >
+{
+public:
+ ScEmptyEnumeration();
+ virtual ~ScEmptyEnumeration();
+
+ // XEnumeration
+ virtual sal_Bool SAL_CALL hasMoreElements() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL nextElement()
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( )
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+// new (uno 3) variant
+class ScNameToIndexAccess : public cppu::WeakImplHelper2<
+ com::sun::star::container::XIndexAccess,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ com::sun::star::uno::Reference<com::sun::star::container::XNameAccess> xNameAccess;
+ com::sun::star::uno::Sequence<rtl::OUString> aNames;
+
+public:
+ ScNameToIndexAccess(
+ const com::sun::star::uno::Reference<
+ com::sun::star::container::XNameAccess>& rNameObj );
+ virtual ~ScNameToIndexAccess();
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( )
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+class ScPrintSettingsObj : public cppu::WeakImplHelper2<
+ com::sun::star::beans::XPropertySet,
+ com::sun::star::lang::XServiceInfo >
+{
+public:
+ ScPrintSettingsObj();
+ virtual ~ScPrintSettingsObj();
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( )
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScUnoHelpFunctions
+{
+public:
+ static com::sun::star::uno::Reference<com::sun::star::uno::XInterface>
+ AnyToInterface( const com::sun::star::uno::Any& rAny );
+ static BOOL GetBoolProperty( const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet>& xProp,
+ const ::rtl::OUString& rName, BOOL bDefault = FALSE );
+ static long GetLongProperty( const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet>& xProp,
+ const ::rtl::OUString& rName, long nDefault = 0 );
+ static long GetEnumProperty( const com::sun::star::uno::Reference<
+ com::sun::star::beans::XPropertySet>& xProp,
+ const ::rtl::OUString& rName, long nDefault );
+
+ static BOOL GetBoolFromAny( const com::sun::star::uno::Any& aAny );
+ static INT16 GetInt16FromAny( const com::sun::star::uno::Any& aAny );
+ static INT32 GetEnumFromAny( const com::sun::star::uno::Any& aAny );
+ static void SetBoolInAny( com::sun::star::uno::Any& rAny, BOOL bValue );
+};
+
+
+
+#endif
+
diff --git a/sc/inc/nameuno.hxx b/sc/inc/nameuno.hxx
new file mode 100644
index 000000000000..873332ac6946
--- /dev/null
+++ b/sc/inc/nameuno.hxx
@@ -0,0 +1,397 @@
+/*************************************************************************
+ *
+ * $RCSfile: nameuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_NAMEUNO_HXX
+#define SC_NAMEUNO_HXX
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScRange
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCELLRANGE_HPP_
+#include <com/sun/star/sheet/XSheetCellRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XFORMULAQUERY_HPP_
+#include <com/sun/star/sheet/XFormulaQuery.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XLABELRANGE_HPP_
+#include <com/sun/star/sheet/XLabelRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XLABELRANGES_HPP_
+#include <com/sun/star/sheet/XLabelRanges.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGEREFERRER_HPP_
+#include <com/sun/star/sheet/XCellRangeReferrer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGEADDRESSABLE_HPP_
+#include <com/sun/star/sheet/XCellRangeAddressable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XUSEDAREACURSOR_HPP_
+#include <com/sun/star/sheet/XUsedAreaCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETOPERATION_HPP_
+#include <com/sun/star/sheet/XSheetOperation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XFILLACROSSSHEET_HPP_
+#include <com/sun/star/sheet/XFillAcrossSheet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XNAMEDRANGE_HPP_
+#include <com/sun/star/sheet/XNamedRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCELLRANGES_HPP_
+#include <com/sun/star/sheet/XSheetCellRanges.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XNAMEDRANGES_HPP_
+#include <com/sun/star/sheet/XNamedRanges.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCELLCURSOR_HPP_
+#include <com/sun/star/sheet/XSheetCellCursor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLFORMATRANGESSUPPLIER_HPP_
+#include <com/sun/star/sheet/XCellFormatRangesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGESQUERY_HPP_
+#include <com/sun/star/sheet/XCellRangesQuery.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICENAME_HPP_
+#include <com/sun/star/lang/XServiceName.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+
+class ScDocShell;
+class ScRangeData;
+
+
+class ScNamedRangeObj : public ::cppu::WeakImplHelper4<
+ ::com::sun::star::sheet::XNamedRange,
+ ::com::sun::star::sheet::XCellRangeReferrer,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ String aName;
+
+private:
+ ScRangeData* GetRangeData_Impl();
+ void Modify_Impl( const String* pNewName, const String* pNewContent,
+ const ScAddress* pNewPos, const sal_uInt16* pNewType );
+
+public:
+ ScNamedRangeObj(ScDocShell* pDocSh, const String& rNm);
+ virtual ~ScNamedRangeObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XNamedRange
+ virtual ::rtl::OUString SAL_CALL getContent() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setContent( const ::rtl::OUString& aContent )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::table::CellAddress SAL_CALL getReferencePosition()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setReferencePosition(
+ const ::com::sun::star::table::CellAddress& aReferencePosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getType() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setType( sal_Int32 nType ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellRangeReferrer
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
+ getReferredCells() throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScNamedRangesObj : public ::cppu::WeakImplHelper4<
+ ::com::sun::star::sheet::XNamedRanges,
+ ::com::sun::star::container::XEnumerationAccess,
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+
+ ScNamedRangeObj* GetObjectByIndex_Impl(sal_uInt16 nIndex);
+ ScNamedRangeObj* GetObjectByName_Impl(const ::rtl::OUString& aName);
+
+public:
+ ScNamedRangesObj(ScDocShell* pDocSh);
+ virtual ~ScNamedRangesObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XNamedRanges
+ virtual void SAL_CALL addNewByName( const ::rtl::OUString& aName, const ::rtl::OUString& aContent,
+ const ::com::sun::star::table::CellAddress& aPosition, sal_Int32 nType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addNewFromTitles( const ::com::sun::star::table::CellRangeAddress& aSource,
+ ::com::sun::star::sheet::Border aBorder )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL outputList( const ::com::sun::star::table::CellAddress& aOutputPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScLabelRangeObj : public ::cppu::WeakImplHelper2<
+ ::com::sun::star::sheet::XLabelRange,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ sal_Bool bColumn;
+ ScRange aRange; // Kriterium um Bereich zu finden
+
+private:
+ ScRangePair* GetData_Impl();
+ void Modify_Impl( const ScRange* pLabel, const ScRange* pData );
+
+public:
+ ScLabelRangeObj(ScDocShell* pDocSh, sal_Bool bCol, const ScRange& rR);
+ virtual ~ScLabelRangeObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XLabelRange
+ virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getLabelArea()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setLabelArea( const ::com::sun::star::table::CellRangeAddress& aLabelArea )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getDataArea()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setDataArea( const ::com::sun::star::table::CellRangeAddress& aDataArea )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScLabelRangesObj : public ::cppu::WeakImplHelper3<
+ ::com::sun::star::sheet::XLabelRanges,
+ ::com::sun::star::container::XEnumerationAccess,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ sal_Bool bColumn;
+
+ ScLabelRangeObj* GetObjectByIndex_Impl(sal_uInt16 nIndex);
+
+public:
+ ScLabelRangesObj(ScDocShell* pDocSh, sal_Bool bCol);
+ virtual ~ScLabelRangesObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XLabelRanges
+ virtual void SAL_CALL addNew( const ::com::sun::star::table::CellRangeAddress& aLabelArea,
+ const ::com::sun::star::table::CellRangeAddress& aDataArea )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeByIndex( sal_Int32 nIndex )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+
+
+#endif
+
diff --git a/sc/inc/navicfg.hxx b/sc/inc/navicfg.hxx
new file mode 100644
index 000000000000..f7cd1d4853c6
--- /dev/null
+++ b/sc/inc/navicfg.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: navicfg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_NAVICFG_HXX
+#define SC_NAVICFG_HXX
+
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+
+//==================================================================
+// CfgItem fuer Navigator-Zustand
+//==================================================================
+
+class ScNavipiCfg : public SfxConfigItem
+{
+private:
+ USHORT nListMode;
+ USHORT nDragMode;
+ USHORT nRootType;
+
+public:
+ ScNavipiCfg();
+
+ virtual String GetName() const;
+
+ void SetListMode(USHORT nNew);
+ USHORT GetListMode() const { return nListMode; }
+ void SetDragMode(USHORT nNew);
+ USHORT GetDragMode() const { return nDragMode; }
+ void SetRootType(USHORT nNew);
+ USHORT GetRootType() const { return nRootType; }
+
+protected:
+ virtual int Load(SvStream& rStream);
+ virtual BOOL Store(SvStream& rStream);
+ virtual void UseDefault();
+};
+
+
+#endif
+
diff --git a/sc/inc/notesuno.hxx b/sc/inc/notesuno.hxx
new file mode 100644
index 000000000000..785f53fbafc1
--- /dev/null
+++ b/sc/inc/notesuno.hxx
@@ -0,0 +1,172 @@
+/*************************************************************************
+ *
+ * $RCSfile: notesuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_NOTESUNO_HXX
+#define SC_NOTESUNO_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScRange, ScAddress
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XSHEETANNOTATION_HPP_
+#include <com/sun/star/sheet/XSheetAnnotation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCHILD_HPP_
+#include <com/sun/star/container/XChild.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TEXT_XSIMPLETEXT_HPP_
+#include <com/sun/star/text/XSimpleText.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+
+
+class ScDocShell;
+class SvxUnoText;
+
+
+class ScAnnotationObj : public cppu::WeakImplHelper4<
+ com::sun::star::container::XChild,
+ com::sun::star::text::XSimpleText,
+ com::sun::star::sheet::XSheetAnnotation,
+ com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ ScAddress aCellPos;
+ SvxUnoText* pUnoText;
+
+private:
+ SvxUnoText& GetUnoText();
+
+public:
+ ScAnnotationObj(ScDocShell* pDocSh, const ScAddress& rPos);
+ virtual ~ScAnnotationObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XChild
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
+ getParent() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XInterface >& Parent )
+ throw(::com::sun::star::lang::NoSupportException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XSimpleText
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL
+ createTextCursor() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL
+ createTextCursorByRange( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& aTextPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL insertString( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xRange,
+ const ::rtl::OUString& aString, sal_Bool bAbsorb )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL insertControlCharacter( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xRange,
+ sal_Int16 nControlCharacter, sal_Bool bAbsorb )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL
+ getText() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL
+ getStart() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL
+ getEnd() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getString() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setString( const ::rtl::OUString& aString )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSheetAnnotation
+ virtual ::com::sun::star::table::CellAddress SAL_CALL getPosition()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAuthor() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getDate() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getIsVisible() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setIsVisible( sal_Bool bIsVisible )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif
+
diff --git a/sc/inc/olinetab.hxx b/sc/inc/olinetab.hxx
new file mode 100644
index 000000000000..60bc73817cb5
--- /dev/null
+++ b/sc/inc/olinetab.hxx
@@ -0,0 +1,220 @@
+/*************************************************************************
+ *
+ * $RCSfile: olinetab.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_OUTLINETAB_HXX
+#define SC_OUTLINETAB_HXX
+
+
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+
+
+#define SC_OL_MAXDEPTH 7
+
+class SvStream;
+class ScMultipleReadHeader;
+class ScMultipleWriteHeader;
+
+
+class ScOutlineEntry : public DataObject
+{
+ USHORT nStart;
+ USHORT nSize;
+ BOOL bHidden;
+ BOOL bVisible;
+
+public:
+ ScOutlineEntry( USHORT nNewStart, USHORT nNewSize,
+ BOOL bNewHidden = FALSE );
+ ScOutlineEntry( const ScOutlineEntry& rEntry );
+ ScOutlineEntry( SvStream& rStream, ScMultipleReadHeader& rHdr );
+
+ void Store( SvStream& rStream, ScMultipleWriteHeader& rHdr );
+
+ virtual DataObject* Clone() const;
+
+ USHORT GetStart() const { return nStart; }
+ USHORT GetSize() const { return nSize; }
+ USHORT GetEnd() const { return nStart+nSize-1; }
+ BOOL IsHidden() const { return bHidden; } // Gruppe versteckt
+ BOOL IsVisible() const { return bVisible; } // Control sichtbar?
+
+ void Move( short nDelta );
+ void SetSize( USHORT nNewSize );
+ void SetPosSize( USHORT nNewPos, USHORT nNewSize );
+ void SetHidden( BOOL bNewHidden );
+ void SetVisible( BOOL bNewVisible );
+};
+
+
+class ScOutlineCollection : public SortedCollection
+{
+public:
+ ScOutlineCollection();
+
+ virtual short Compare(DataObject* pKey1, DataObject* pKey2) const;
+
+ USHORT FindStart( USHORT nMinStart );
+};
+
+
+class ScOutlineArray
+{
+friend class ScSubOutlineIterator;
+
+private:
+ USHORT nDepth;
+ ScOutlineCollection aCollections[SC_OL_MAXDEPTH];
+
+ BOOL DecDepth();
+ void FindEntry( USHORT nSearchPos, USHORT& rFindLevel, USHORT& rFindIndex,
+ USHORT nMaxLevel = SC_OL_MAXDEPTH );
+ void RemoveSub( USHORT nStartPos, USHORT nEndPos, USHORT nLevel );
+ void PromoteSub( USHORT nStartPos, USHORT nEndPos, USHORT nStartLevel );
+
+public:
+ ScOutlineArray();
+ ScOutlineArray( const ScOutlineArray& rArray );
+
+ USHORT GetDepth() const { return nDepth; }
+
+ BOOL FindTouchedLevel( USHORT nBlockStart, USHORT nBockEnd,
+ USHORT& rFindLevel );
+
+ BOOL Insert( USHORT nStartCol, USHORT nEndCol, BOOL& rSizeChanged,
+ BOOL bHidden = FALSE, BOOL bVisible = TRUE );
+ BOOL Remove( USHORT nBlockStart, USHORT nBlockEnd, BOOL& rSizeChanged );
+
+ ScOutlineEntry* GetEntry( USHORT nLevel, USHORT nIndex );
+ USHORT GetCount( USHORT nLevel );
+ ScOutlineEntry* GetEntryByPos( USHORT nLevel, USHORT nPos );
+ void SetVisibleBelow( USHORT nLevel, USHORT nEntry, BOOL bValue,
+ BOOL bSkipHidden = FALSE );
+
+ void GetRange( USHORT& rStart, USHORT& rEnd );
+ void ExtendBlock( USHORT nLevel, USHORT& rBlkStart, USHORT& rBlkEnd );
+
+ BOOL TestInsertSpace( USHORT nSize, USHORT nMaxVal );
+ void InsertSpace( USHORT nStartPos, USHORT nSize );
+ BOOL DeleteSpace( USHORT nStartPos, USHORT nSize );
+
+ BOOL ManualAction( USHORT nStartPos, USHORT nEndPos,
+ BOOL bShow, BYTE* pHiddenFlags );
+
+ void Load( SvStream& rStream );
+ void Store( SvStream& rStream );
+
+ void RemoveAll();
+};
+
+
+class ScOutlineTable
+{
+private:
+ ScOutlineArray aColOutline;
+ ScOutlineArray aRowOutline;
+
+public:
+ ScOutlineTable();
+ ScOutlineTable( const ScOutlineTable& rOutline );
+
+ const ScOutlineArray* GetColArray() const { return &aColOutline; }
+ ScOutlineArray* GetColArray() { return &aColOutline; }
+ const ScOutlineArray* GetRowArray() const { return &aRowOutline; }
+ ScOutlineArray* GetRowArray() { return &aRowOutline; }
+
+ BOOL TestInsertCol( USHORT nSize );
+ void InsertCol( USHORT nStartCol, USHORT nSize );
+ BOOL DeleteCol( USHORT nStartCol, USHORT nSize ); // TRUE: Undo nur ueber Original
+ BOOL TestInsertRow( USHORT nSize );
+ void InsertRow( USHORT nStartRow, USHORT nSize );
+ BOOL DeleteRow( USHORT nStartRow, USHORT nSize );
+
+ void Load( SvStream& rStream );
+ void Store( SvStream& rStream );
+};
+
+
+class ScSubOutlineIterator
+{
+private:
+ ScOutlineArray* pArray;
+ USHORT nStart;
+ USHORT nEnd;
+ USHORT nSubLevel;
+ USHORT nSubEntry;
+ USHORT nCount;
+ USHORT nDepth;
+
+public:
+ ScSubOutlineIterator( ScOutlineArray* pOutlineArray );
+ ScSubOutlineIterator( ScOutlineArray* pOutlineArray,
+ USHORT nLevel, USHORT nEntry );
+ ScOutlineEntry* GetNext();
+ USHORT LastLevel() const;
+ USHORT LastEntry() const;
+ void DeleteLast();
+};
+
+#endif
+
+
diff --git a/sc/inc/pagepar.hxx b/sc/inc/pagepar.hxx
new file mode 100644
index 000000000000..ede1c1317b1d
--- /dev/null
+++ b/sc/inc/pagepar.hxx
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * $RCSfile: pagepar.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PAGEPAR_HXX
+#define SC_PAGEPAR_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//-----------------------------------------------------------------------
+
+struct ScPageTableParam
+{
+ BOOL bNotes;
+ BOOL bGrid;
+ BOOL bHeaders;
+ BOOL bCharts;
+ BOOL bObjects;
+ BOOL bDrawings;
+ BOOL bFormulas;
+ BOOL bNullVals;
+ BOOL bTopDown;
+ BOOL bLeftRight;
+ BOOL bSkipEmpty;
+ BOOL bScaleNone;
+ BOOL bScaleAll;
+ BOOL bScalePageNum;
+ USHORT nScaleAll;
+ USHORT nScalePageNum;
+ USHORT nFirstPageNo;
+
+ ScPageTableParam();
+ ScPageTableParam( const ScPageTableParam& r );
+ ~ScPageTableParam();
+
+ ScPageTableParam& operator= ( const ScPageTableParam& r );
+ BOOL operator== ( const ScPageTableParam& r ) const;
+ void Reset ();
+};
+
+struct ScPageAreaParam
+{
+ BOOL bPrintArea;
+ BOOL bRepeatRow;
+ BOOL bRepeatCol;
+ ScRange aPrintArea;
+ ScRange aRepeatRow;
+ ScRange aRepeatCol;
+
+ ScPageAreaParam();
+ ScPageAreaParam( const ScPageAreaParam& r );
+ ~ScPageAreaParam();
+
+ ScPageAreaParam& operator= ( const ScPageAreaParam& r );
+ BOOL operator== ( const ScPageAreaParam& r ) const;
+ void Reset ();
+};
+
+
+#endif
+
+
diff --git a/sc/inc/patattr.hxx b/sc/inc/patattr.hxx
new file mode 100644
index 000000000000..5feb5cf5d90a
--- /dev/null
+++ b/sc/inc/patattr.hxx
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * $RCSfile: patattr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SCPATATR_HXX
+#define SC_SCPATATR_HXX
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+
+
+class Font;
+class OutputDevice;
+class Fraction;
+class ScStyleSheet;
+class SvNumberFormatter;
+class ScDocument;
+
+class ScPatternAttr: public SfxSetItem
+{
+ String* pName;
+ ScStyleSheet* pStyle;
+public:
+ static ScDocument* pDoc;
+ ScPatternAttr(SfxItemSet* pItemSet, const String& rStyleName);
+ ScPatternAttr(SfxItemSet* pItemSet, ScStyleSheet* pStyleSheet = NULL);
+ ScPatternAttr(SfxItemPool* pItemPool);
+ ScPatternAttr(const ScPatternAttr& rPatternAttr);
+
+ ~ScPatternAttr();
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream& rStream, USHORT nVersion) const;
+ virtual SvStream& Store(SvStream& rStream, USHORT nItemVersion) const;
+
+ virtual int operator==(const SfxPoolItem& rCmp) const;
+
+ const SfxPoolItem& GetItem( USHORT nWhich ) const
+ { return GetItemSet().Get(nWhich); }
+
+ const SfxPoolItem& GetItem( USHORT nWhich, const SfxItemSet* pCondSet ) const;
+
+ // pWhich sind keine Ranges, sondern einzelne IDs, 0-terminiert
+ BOOL HasItemsSet( const USHORT* pWhich ) const;
+ void ClearItems( const USHORT* pWhich );
+
+ void DeleteUnchanged( const ScPatternAttr* pOldAttrs );
+ void GetFont( Font& rFont, OutputDevice* pOutDev = NULL,
+ const Fraction* pScale = NULL,
+ const SfxItemSet* pCondSet = NULL ) const;
+
+ void FillEditItemSet( SfxItemSet* pSet,
+ const SfxItemSet* pCondSet = NULL ) const;
+ void GetFromEditItemSet( const SfxItemSet* pSet );
+
+ void FillEditParaItems( SfxItemSet* pSet ) const;
+
+ ScPatternAttr* PutInPool( ScDocument* pDestDoc, ScDocument* pSrcDoc ) const;
+
+ void SetStyleSheet(ScStyleSheet* pNewStyle);
+ const ScStyleSheet* GetStyleSheet() const { return pStyle; }
+ const String* GetStyleName() const;
+ void UpdateStyleSheet();
+ void StyleToName();
+
+ BOOL IsVisible() const;
+ BOOL IsVisibleEqual( const ScPatternAttr& rOther ) const;
+ BOOL IsSymbolFont() const;
+
+ ULONG GetNumberFormat( SvNumberFormatter* ) const;
+ ULONG GetNumberFormat( SvNumberFormatter* pFormatter,
+ const SfxItemSet* pCondSet ) const;
+
+ long GetRotateVal( const SfxItemSet* pCondSet ) const;
+ BYTE GetRotateDir( const SfxItemSet* pCondSet ) const;
+};
+
+#endif
diff --git a/sc/inc/pivot.hxx b/sc/inc/pivot.hxx
new file mode 100644
index 000000000000..95bc9471406e
--- /dev/null
+++ b/sc/inc/pivot.hxx
@@ -0,0 +1,364 @@
+/*************************************************************************
+ *
+ * $RCSfile: pivot.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+/*
+ WICHTIG:
+ Folgende Reihenfolge beim Aufbau der Pivot-Tabelle unbedingt einzuhalten:
+
+ pPivot->SetColFields(aColArr, aColCount)
+ pPivot->SetRowFields(aRowArr, aRowCount)
+ pPivot->SetDataFields(aDataArr, aDataCount)
+ if (pPivot->CreateData())
+ {
+ pPivotDrawData();
+ pPivotReleaseData();
+ }
+
+ ausserdem ist sicherzustellen, dass entweder das ColArr oder das RowArr
+ einen PivotDataField Eintrag enthalten
+
+*/
+
+
+#ifndef SC_PIVOT_HXX
+#define SC_PIVOT_HXX
+
+#include <global.hxx>
+
+class SubTotal;
+
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+
+#define PIVOT_DATA_FIELD (MAXCOL + 1)
+#define PIVOT_FUNC_REF (MAXCOL + 1)
+
+#define PIVOT_STYLE_INNER 0
+#define PIVOT_STYLE_RESULT 1
+#define PIVOT_STYLE_CATEGORY 2
+#define PIVOT_STYLE_TITLE 3
+#define PIVOT_STYLE_FIELDNAME 4
+#define PIVOT_STYLE_TOP 5
+
+class SvStream;
+class ScDocument;
+class ScUserListData;
+class ScMultipleReadHeader;
+class ScMultipleWriteHeader;
+class ScProgress;
+
+struct PivotColRef
+{
+ USHORT nDataIndex;
+ USHORT nRecCount;
+ USHORT nFuncMask;
+ USHORT nIndex;
+
+ PivotColRef()
+ {
+ nDataIndex = nRecCount = nIndex = 0;
+ nFuncMask = PIVOT_FUNC_NONE;
+ }
+};
+
+typedef PivotField PivotFieldArr[PIVOT_MAXFIELD];
+
+class PivotStrCollection : public StrCollection
+{
+ ScUserListData* pUserData;
+public:
+ PivotStrCollection(USHORT nLim = 4, USHORT nDel = 4, BOOL bDup = FALSE) :
+ StrCollection ( nLim, nDel, bDup ),
+ pUserData (NULL) { }
+ PivotStrCollection(const PivotStrCollection& rPivotStrCollection) :
+ StrCollection ( rPivotStrCollection ),
+ pUserData ( rPivotStrCollection.pUserData) {}
+
+ virtual DataObject* Clone() const;
+ virtual short Compare(DataObject* pKey1, DataObject* pKey2) const;
+
+ TypedStrData* operator[]( const USHORT nIndex) const
+ { return (TypedStrData*)At(nIndex); }
+ void SetUserData(ScUserListData* pData)
+ { pUserData = pData; }
+ const String& GetString(USHORT nIndex)
+ { return ((TypedStrData*)At(nIndex))->GetString(); }
+ short GetIndex(TypedStrData* pData) const;
+};
+
+class ScPivot : public DataObject
+{
+ ScDocument* pDoc;
+ ScQueryParam aQuery;
+ BOOL bHasHeader;
+
+ BOOL bIgnoreEmpty; // Flags aus Dialog
+ BOOL bDetectCat;
+ BOOL bMakeTotalCol;
+ BOOL bMakeTotalRow;
+
+ String aName;
+ String aTag;
+ USHORT nColNameCount;
+ String* pColNames; // Array
+
+ USHORT nSrcCol1;
+ USHORT nSrcRow1;
+ USHORT nSrcCol2;
+ USHORT nSrcRow2;
+ USHORT nSrcTab;
+
+ USHORT nDestCol1;
+ USHORT nDestRow1;
+ USHORT nDestCol2;
+ USHORT nDestRow2;
+ USHORT nDestTab;
+
+ USHORT nDataStartCol;
+ USHORT nDataStartRow;
+
+ short nColCount;
+ short nRowCount;
+ short nDataCount;
+
+ PivotFieldArr aColArr;
+ PivotFieldArr aRowArr;
+ PivotFieldArr aDataArr;
+
+ PivotStrCollection* pColList[PIVOT_MAXFIELD]; // pro Zeile alle Eintraege
+ PivotStrCollection* pRowList[PIVOT_MAXFIELD];
+ PivotStrCollection* pDataList; // Shortcut auf Col/RowList mit Daten
+
+ SubTotal** ppDataArr;
+ short nDataColCount;
+ short nDataRowCount;
+ short nRowIndex;
+ short nColIndex;
+ short nDataIndex;
+ short nRecCount;
+
+ PivotColRef* pColRef;
+
+ BOOL bValidArea;
+ BOOL bDataAtCol;
+
+public:
+ ScPivot(ScDocument* pDocument);
+ ScPivot(const ScPivot& rPivot);
+ ~ScPivot();
+
+ virtual DataObject* Clone() const;
+
+ ScPivot* CreateNew() const;
+
+ BOOL Load(SvStream& rStream, ScMultipleReadHeader& rHdr );
+ BOOL Store(SvStream& rStream, ScMultipleWriteHeader& rHdr ) const;
+
+ void SetQuery(const ScQueryParam& rQuery);
+ void GetQuery(ScQueryParam& rQuery) const;
+
+ void SetHeader(BOOL bHeader);
+ BOOL GetHeader() const;
+ void SetIgnoreEmpty(BOOL bIgnore);
+ BOOL GetIgnoreEmpty() const;
+ void SetDetectCat(BOOL bDetect);
+ BOOL GetDetectCat() const;
+ void SetMakeTotalCol(BOOL bSet);
+ BOOL GetMakeTotalCol() const;
+ void SetMakeTotalRow(BOOL bSet);
+ BOOL GetMakeTotalRow() const;
+
+ void SetName(const String& rNew);
+ const String& GetName() const;
+ void SetTag(const String& rNew);
+ const String& GetTag() const;
+
+ void SetSrcArea(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2, USHORT nTab);
+ void GetSrcArea(USHORT& rCol1, USHORT& rRow1, USHORT& rCol2, USHORT& rRow2, USHORT& rTab) const;
+ ScRange GetSrcArea() const;
+
+ void SetDestPos(USHORT nCol, USHORT nRow, USHORT nTab);
+ void GetDestArea(USHORT& rCol1, USHORT& rRow1, USHORT& rCol2, USHORT& rRow2, USHORT& rTab) const;
+ ScRange GetDestArea() const;
+
+ void SetColFields(const PivotField* pFieldArr, short nCount);
+ void GetColFields(PivotField* pFieldArr, short& rCount) const;
+ short GetColFieldCount() const { return nColCount; }
+
+ void SetRowFields(const PivotField* pFieldArr, short nCount);
+ void GetRowFields(PivotField* pFieldArr, short& rCount) const;
+ short GetRowFieldCount() const { return nRowCount; }
+
+ void SetDataFields(const PivotField* pFieldArr, short nCount);
+ void GetDataFields(PivotField* pFieldArr, short& rCount) const;
+
+ void GetParam( ScPivotParam& rParam, ScQueryParam& rQuery, ScArea& rSrcArea ) const;
+ void SetParam( const ScPivotParam& rParam, const ScQueryParam& rQuery,
+ const ScArea& rSrcArea );
+
+ BOOL CreateData(BOOL bKeepDest = FALSE);
+ void DrawData();
+ void ReleaseData();
+
+ BOOL IsPivotAtCursor(USHORT nCol, USHORT nRow, USHORT nTab) const;
+ BOOL IsFilterAtCursor(USHORT nCol, USHORT nRow, USHORT nTab) const;
+ BOOL GetColFieldAtCursor(USHORT nCol, USHORT nRow, USHORT nTab, USHORT& rField) const;
+ BOOL GetRowFieldAtCursor(USHORT nCol, USHORT nRow, USHORT nTab, USHORT& rField) const;
+
+ // Referenz-Anpassung:
+
+ void MoveSrcArea( USHORT nNewCol, USHORT nNewRow, USHORT nNewTab );
+ void MoveDestArea( USHORT nNewCol, USHORT nNewRow, USHORT nNewTab );
+ void ExtendSrcArea( USHORT nNewEndCol, USHORT nNewEndRow );
+
+private:
+ BOOL CreateFields();
+ void CreateFieldData();
+ void CalcArea();
+
+ void SetDataLine(USHORT nCol, USHORT nRow, USHORT nTab, USHORT nRIndex);
+ void SetFuncLine(USHORT nCol, USHORT nRow, USHORT nTab, USHORT nFunc, USHORT nIndex, USHORT nStartRIndex, USHORT nEndRIndex);
+ void ColToTable(short nField, USHORT& nRow, ScProgress& rProgress);
+ void RowToTable(short nField, USHORT& nCol);
+ void SetFrame(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2, USHORT nWidth = 20);
+ void SetFrameHor(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ void SetFrameVer(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ void SetFontBold(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ void SetJustifyLeft(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ void SetJustifyRight(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ void SetStyle(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2, USHORT nId);
+ void SetButton(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2);
+ void SetValue(USHORT nCol, USHORT nRow, const SubTotal& rTotal, USHORT nFunc);
+ USHORT GetCategoryRow( USHORT nCol, USHORT nRow );
+};
+
+//------------------------------------------------------------------------
+class ScPivotCollection : public Collection
+{
+
+private:
+ ScDocument* pDoc;
+public:
+ ScPivotCollection(USHORT nLim = 4, USHORT nDel = 4, ScDocument* pDocument = NULL) :
+ Collection ( nLim, nDel),
+ pDoc ( pDocument ) {}
+ ScPivotCollection(const ScPivotCollection& rScPivotCollection) :
+ Collection ( rScPivotCollection ),
+ pDoc ( rScPivotCollection.pDoc ) {}
+
+ virtual DataObject* Clone() const;
+ ScPivot* operator[]( const USHORT nIndex) const {return (ScPivot*)At(nIndex);}
+ ScPivot* GetPivotAtCursor(USHORT nCol, USHORT nRow, USHORT nTab) const;
+
+ BOOL Load( SvStream& rStream );
+ BOOL Store( SvStream& rStream ) const;
+
+ void UpdateReference(UpdateRefMode eUpdateRefMode,
+ USHORT nCol1, USHORT nRow1, USHORT nTab1,
+ USHORT nCol2, USHORT nRow2, USHORT nTab2,
+ short nDx, short nDy, short nDz );
+ void UpdateGrow( const ScRange& rArea, USHORT nGrowX, USHORT nGrowY );
+
+ BOOL operator==(const ScPivotCollection& rCmp) const;
+
+ String CreateNewName( USHORT nMin = 1 ) const;
+};
+
+//------------------------------------------------------------------------
+struct LabelData
+{
+ String* pStrColName;
+ short nCol;
+ BOOL bIsValue; // Summe oder Anzahl im Data-Feld
+ USHORT nFuncMask;
+
+
+ LabelData( const String& rColName,
+ short nColumn,
+ BOOL bVal,
+ USHORT nMask = PIVOT_FUNC_NONE )
+ : nCol (nColumn),
+ bIsValue (bVal),
+ nFuncMask (nMask)
+ { pStrColName = new String( rColName ); }
+
+ LabelData( const LabelData& rCpy )
+ : nCol (rCpy.nCol),
+ bIsValue (rCpy.bIsValue),
+ nFuncMask (rCpy.nFuncMask)
+ { pStrColName = new String( *(rCpy.pStrColName) ); }
+
+ ~LabelData()
+ { delete pStrColName; }
+
+ LabelData& operator=( const LabelData& r )
+ {
+ nCol = r.nCol;
+ bIsValue = r.bIsValue;
+ nFuncMask = r.nFuncMask;
+ pStrColName = new String( *(r.pStrColName) );
+
+ return *this;
+ }
+};
+
+
+#endif
diff --git a/sc/inc/printopt.hxx b/sc/inc/printopt.hxx
new file mode 100644
index 000000000000..ec4624e0f679
--- /dev/null
+++ b/sc/inc/printopt.hxx
@@ -0,0 +1,69 @@
+/*************************************************************************
+ *
+ * $RCSfile: printopt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PRINTOPT_HXX
+#define SC_PRINTOPT_HXX
+
+#error printopt.hxx nicht mehr verwenden!
+
+
+#endif
+
diff --git a/sc/inc/prnsave.hxx b/sc/inc/prnsave.hxx
new file mode 100644
index 000000000000..276375d44baf
--- /dev/null
+++ b/sc/inc/prnsave.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * $RCSfile: prnsave.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PRNSAVE_HXX
+#define SC_PRNSAVE_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class ScRange;
+
+class ScPrintSaverTab
+{
+ USHORT nPrintCount;
+ ScRange* pPrintRanges; // Array
+ ScRange* pRepeatCol; // einzeln
+ ScRange* pRepeatRow; // einzeln
+
+public:
+ ScPrintSaverTab();
+ ~ScPrintSaverTab();
+
+ void SetAreas( USHORT nCount, const ScRange* pRanges );
+ void SetRepeat( const ScRange* pCol, const ScRange* pRow );
+
+ USHORT GetPrintCount() const { return nPrintCount; }
+ const ScRange* GetPrintRanges() const { return pPrintRanges; }
+ const ScRange* GetRepeatCol() const { return pRepeatCol; }
+ const ScRange* GetRepeatRow() const { return pRepeatRow; }
+
+ BOOL operator==( const ScPrintSaverTab& rCmp ) const;
+};
+
+class ScPrintRangeSaver
+{
+ USHORT nTabCount;
+ ScPrintSaverTab* pData; // Array
+
+public:
+ ScPrintRangeSaver( USHORT nCount );
+ ~ScPrintRangeSaver();
+
+ USHORT GetTabCount() const { return nTabCount; }
+ ScPrintSaverTab& GetTabData(USHORT nTab);
+ const ScPrintSaverTab& GetTabData(USHORT nTab) const;
+
+ BOOL operator==( const ScPrintRangeSaver& rCmp ) const;
+};
+
+
+#endif
+
+
diff --git a/sc/inc/progress.hxx b/sc/inc/progress.hxx
new file mode 100644
index 000000000000..daf7d1cd8a04
--- /dev/null
+++ b/sc/inc/progress.hxx
@@ -0,0 +1,185 @@
+/*************************************************************************
+ *
+ * $RCSfile: progress.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PROGRESS_HXX
+#define SC_PROGRESS_HXX
+
+#ifndef _SFX_PROGRESS_HXX //autogen
+#include <sfx2/progress.hxx>
+#endif
+
+class ScDocument;
+
+class ScProgress
+{
+private:
+ static SfxProgress* pGlobalProgress;
+ static ULONG nGlobalRange;
+ static ULONG nGlobalPercent;
+ static BOOL bGlobalNoUserBreak;
+ static ScProgress* pInterpretProgress;
+ static ScProgress* pOldInterpretProgress;
+ static ULONG nInterpretProgress;
+ static BOOL bAllowInterpretProgress;
+ static ScDocument* pInterpretDoc;
+ static BOOL bIdleWasDisabled;
+
+ SfxProgress* pProgress;
+
+ // not implemented
+ ScProgress( const ScProgress& );
+ ScProgress& operator=( const ScProgress& );
+
+ static void CalcGlobalPercent( ULONG nVal )
+ {
+ nGlobalPercent = nGlobalRange ?
+ nVal * 100 / nGlobalRange : 0;
+ }
+
+public:
+ static SfxProgress* GetGlobalSfxProgress() { return pGlobalProgress; }
+ static BOOL IsUserBreak() { return !bGlobalNoUserBreak; }
+ static void CreateInterpretProgress( ScDocument* pDoc,
+ BOOL bWait = TRUE );
+ static ScProgress* GetInterpretProgress() { return pInterpretProgress; }
+ static void DeleteInterpretProgress();
+ static void SetAllowInterpret( BOOL bVal );
+ static BOOL GetAllowInterpret() { return bAllowInterpretProgress; }
+ static ULONG GetInterpretCount() { return nInterpretProgress; }
+ static ULONG GetGlobalRange() { return nGlobalRange; }
+ static ULONG GetGlobalPercent() { return nGlobalPercent; }
+
+ ScProgress( SfxObjectShell* pObjSh,
+ const String& rText,
+ ULONG nRange, BOOL bAllDocs = FALSE,
+ BOOL bWait = TRUE );
+ ~ScProgress();
+
+#ifdef SC_PROGRESS_CXX
+ // nur fuer DummyInterpret, sonst nie benutzen!!!
+ ScProgress();
+#endif
+ // kann NULL sein!
+ SfxProgress* GetSfxProgress() const { return pProgress; }
+
+ BOOL SetStateText( ULONG nVal, const String &rVal, ULONG nNewRange = 0 )
+ {
+ if ( pProgress )
+ {
+ if ( nNewRange )
+ nGlobalRange = nNewRange;
+ CalcGlobalPercent( nVal );
+ if ( !pProgress->SetStateText( nVal, rVal, nNewRange ) )
+ bGlobalNoUserBreak = FALSE;
+ return bGlobalNoUserBreak;
+ }
+ return TRUE;
+ }
+ BOOL SetState( ULONG nVal, ULONG nNewRange = 0 )
+ {
+ if ( pProgress )
+ {
+ if ( nNewRange )
+ nGlobalRange = nNewRange;
+ CalcGlobalPercent( nVal );
+ if ( !pProgress->SetState( nVal, nNewRange ) )
+ bGlobalNoUserBreak = FALSE;
+ return bGlobalNoUserBreak;
+ }
+ return TRUE;
+ }
+ BOOL SetStateCountDown( ULONG nVal )
+ {
+ if ( pProgress )
+ {
+ CalcGlobalPercent( nGlobalRange - nVal );
+ if ( !pProgress->SetState( nGlobalRange - nVal ) )
+ bGlobalNoUserBreak = FALSE;
+ return bGlobalNoUserBreak;
+ }
+ return TRUE;
+ }
+ BOOL SetStateOnPercent( ULONG nVal )
+ { // nur wenn Prozent mehr als vorher
+ if ( nGlobalRange && (nVal * 100 /
+ nGlobalRange) > nGlobalPercent )
+ return SetState( nVal );
+ return TRUE;
+ }
+ BOOL SetStateCountDownOnPercent( ULONG nVal )
+ { // nur wenn Prozent mehr als vorher
+ if ( nGlobalRange &&
+ ((nGlobalRange - nVal) * 100 /
+ nGlobalRange) > nGlobalPercent )
+ return SetStateCountDown( nVal );
+ return TRUE;
+ }
+ ULONG GetState()
+ {
+ if ( pProgress )
+ return pProgress->GetState();
+ return 0;
+ }
+};
+
+
+#endif
+
diff --git a/sc/inc/rangelst.hxx b/sc/inc/rangelst.hxx
new file mode 100644
index 000000000000..bebbffb98a66
--- /dev/null
+++ b/sc/inc/rangelst.hxx
@@ -0,0 +1,147 @@
+/*************************************************************************
+ *
+ * $RCSfile: rangelst.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_RANGELST_HXX
+#define SC_RANGELST_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScDocument;
+
+typedef ScRange* ScRangePtr;
+DECLARE_LIST( ScRangeListBase, ScRangePtr );
+class ScRangeList : public ScRangeListBase, public SvRefBase
+{
+public:
+ ScRangeList() {}
+ ScRangeList( const ScRangeList& rList );
+ virtual ~ScRangeList();
+ ScRangeList& operator=(const ScRangeList& rList);
+ void RemoveAll();
+ ScRangeList* Clone() const;
+ void Append( const ScRange& rRange )
+ {
+ ScRangePtr pR = new ScRange( rRange );
+ Insert( pR, LIST_APPEND );
+ }
+ USHORT Parse( const String&, ScDocument* = NULL,
+ USHORT nMask = SCA_VALID );
+ void Format( String&, USHORT nFlags = 0, ScDocument* = NULL ) const;
+ void Join( const ScRange&, BOOL bIsInList = FALSE );
+ BOOL UpdateReference( UpdateRefMode, ScDocument*,
+ const ScRange& rWhere,
+ short nDx, short nDy, short nDz );
+ ScRange* Find( const ScAddress& ) const;
+ ScRange* Find( const ScRange& ) const;
+ BOOL Load( SvStream&, USHORT nVer );
+ BOOL Store( SvStream& ) const;
+ BOOL operator==( const ScRangeList& ) const;
+ BOOL Intersects( const ScRange& ) const;
+ ULONG GetCellCount() const;
+};
+SV_DECL_IMPL_REF( ScRangeList );
+
+
+// RangePairList: erster Range (aRange[0]) eigentlicher Range, zweiter
+// Range (aRange[1]) Daten zu diesem Range, z.B. Rows eines ColName
+DECLARE_LIST( ScRangePairListBase, ScRangePair* );
+class ScRangePairList : public ScRangePairListBase, public SvRefBase
+{
+#if defined( ICC ) && defined( OS2 )
+ friend static int _Optlink ICCQsortRPairCompare( const void*, const void*);
+#endif
+private:
+ static int
+#ifdef WNT
+ __cdecl
+#endif
+ QsortNameCompare( const void*, const void* );
+
+public:
+ virtual ~ScRangePairList();
+ ScRangePairList* Clone() const;
+ void Append( const ScRangePair& rRangePair )
+ {
+ ScRangePair* pR = new ScRangePair( rRangePair );
+ Insert( pR, LIST_APPEND );
+ }
+ void Join( const ScRangePair&, BOOL bIsInList = FALSE );
+ BOOL UpdateReference( UpdateRefMode, ScDocument*,
+ const ScRange& rWhere,
+ short nDx, short nDy, short nDz );
+ ScRangePair* Find( const ScAddress& ) const;
+ ScRangePair* Find( const ScRange& ) const;
+ BOOL Load( SvStream&, USHORT nVer );
+ BOOL Store( SvStream& ) const;
+ ScRangePair** CreateNameSortedArray( ULONG& nCount, ScDocument* ) const;
+ BOOL operator==( const ScRangePairList& ) const;
+};
+SV_DECL_IMPL_REF( ScRangePairList );
+
+#if defined( ICC ) && defined( SC_RANGELST_CXX ) && defined( OS2 )
+ static int _Optlink ICCQsortRPairCompare( const void* a, const void* b)
+ { ScRangePairList::QsortNameCompare(a,b); }
+#endif
+
+
+#endif
diff --git a/sc/inc/rangenam.hxx b/sc/inc/rangenam.hxx
new file mode 100644
index 000000000000..c3e90421f5fb
--- /dev/null
+++ b/sc/inc/rangenam.hxx
@@ -0,0 +1,254 @@
+/*************************************************************************
+ *
+ * $RCSfile: rangenam.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_RANGENAM_HXX
+#define SC_RANGENAM_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // -> enum UpdateRefMode
+#endif
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+
+//------------------------------------------------------------------------
+
+class ScDocument;
+class ScMultipleReadHeader;
+class ScMultipleWriteHeader;
+
+//------------------------------------------------------------------------
+
+typedef USHORT RangeType;
+
+#define RT_NAME ((RangeType)0x0000)
+#define RT_DATABASE ((RangeType)0x0001)
+#define RT_CRITERIA ((RangeType)0x0002)
+#define RT_PRINTAREA ((RangeType)0x0004)
+#define RT_COLHEADER ((RangeType)0x0008)
+#define RT_ROWHEADER ((RangeType)0x0010)
+#define RT_ABSAREA ((RangeType)0x0020)
+#define RT_REFAREA ((RangeType)0x0040)
+#define RT_ABSPOS ((RangeType)0x0080)
+#define RT_SHARED ((RangeType)0x0100)
+#define RT_SHAREDMOD ((RangeType)0x0200)
+
+//------------------------------------------------------------------------
+
+class ScTokenArray;
+class ScIndexMap;
+
+class ScRangeData : public DataObject
+{
+#if defined( ICC ) && defined( OS2 )
+ friend static int _Optlink ICCQsortNameCompare( const void* a, const void* b);
+#endif
+private:
+ String aName;
+ ScTokenArray* pCode;
+ ScAddress aPos;
+ RangeType eType;
+ ScDocument* pDoc;
+ USHORT nIndex;
+ USHORT nExportIndex;
+ BOOL bModified; // wird bei UpdateReference gesetzt/geloescht
+
+ friend class ScRangeName;
+ ScRangeData( USHORT nIndex );
+public:
+ ScRangeData( ScDocument* pDoc,
+ const String& rName,
+ const String& rSymbol,
+ USHORT nCol = 0,
+ USHORT nRow = 0,
+ USHORT nTab = 0,
+ RangeType nType = RT_NAME,
+ BOOL bEnglish = FALSE );
+ ScRangeData( ScDocument* pDoc,
+ const String& rName,
+ const ScTokenArray& rArr,
+ USHORT nCol = 0,
+ USHORT nRow = 0,
+ USHORT nTab = 0,
+ RangeType nType = RT_NAME );
+ ScRangeData( ScDocument* pDoc,
+ const String& rName,
+ const ScAddress& rTarget );
+ // rTarget ist ABSPOS Sprungmarke
+ ScRangeData(const ScRangeData& rScRangeData);
+ ScRangeData( SvStream& rStream,
+ ScMultipleReadHeader& rHdr,
+ USHORT nVer );
+
+ virtual ~ScRangeData();
+
+
+ virtual DataObject* Clone() const;
+
+ BOOL Store( SvStream& rStream, ScMultipleWriteHeader& rHdr ) const;
+
+ BOOL operator== (const ScRangeData& rData) const;
+
+ void GetName( String& rName ) const { rName = aName; }
+ const String& GetName( void ) const { return aName; }
+ ScAddress GetPos() const { return aPos; }
+ // Der Index muss eindeutig sein. Ist er 0, wird ein neuer Index vergeben
+ void SetIndex( USHORT nInd ) { nIndex = nExportIndex = nInd; }
+ const USHORT GetIndex() { return nIndex; }
+ void SetExportIndex( USHORT nInd ) { nExportIndex = nInd; }
+ const USHORT GetExportIndex() { return nExportIndex; }
+ ScTokenArray* GetCode() { return pCode; }
+ USHORT GetErrCode();
+ BOOL HasReferences() const;
+ void SetDocument( ScDocument* pDocument){ pDoc = pDocument; }
+ ScDocument* GetDocument() const { return pDoc; }
+ void SetType( RangeType nType ) { eType = nType; }
+ void AddType( RangeType nType ) { eType = eType|nType; }
+ RangeType GetType() const { return eType; }
+ BOOL HasType( RangeType nType ) const;
+ void GetSymbol(String& rSymbol) const;
+ void GetEnglishSymbol(String& rSymbol, BOOL bCompileXML = FALSE) const;
+ void UpdateSymbol( String& rSymbol, const ScAddress& );
+ void UpdateReference( UpdateRefMode eUpdateRefMode,
+ const ScRange& r,
+ short nDx, short nDy, short nDz );
+ BOOL IsModified() const { return bModified; }
+
+ void GuessPosition();
+
+ void UpdateTranspose( const ScRange& rSource, const ScAddress& rDest );
+ void UpdateGrow( const ScRange& rArea, USHORT nGrowX, USHORT nGrowY );
+
+ BOOL IsReference( ScRange& rRef ) const;
+
+ BOOL IsRangeAtCursor( const ScAddress&, BOOL bStartOnly ) const;
+ BOOL IsRangeAtBlock( const ScRange& ) const;
+
+ void UpdateTabRef(USHORT nOldTable, USHORT nFlag, USHORT nNewTable);
+ void TransferTabRef( USHORT nOldTab, USHORT nNewTab );
+
+ void ReplaceRangeNamesInUse( const ScIndexMap& rMap );
+
+ BOOL IsBeyond( USHORT nMaxRow ) const;
+
+ static void MakeValidName( String& rName );
+ static BOOL IsNameValid( const String& rName, ScDocument* pDoc );
+#ifdef WNT
+ static int __cdecl QsortNameCompare( const void*, const void* );
+#else
+ static int QsortNameCompare( const void*, const void* );
+#endif
+};
+
+inline BOOL ScRangeData::HasType( RangeType nType ) const
+{
+ return ( ( eType & nType ) == nType );
+}
+
+#if defined( ICC ) && defined( OS2 )
+ static int _Optlink ICCQsortNameCompare( const void* a, const void* b)
+ { ScRangeData::QsortNameCompare(a,b); }
+#endif
+
+//------------------------------------------------------------------------
+
+class ScRangeName : public SortedCollection
+{
+private:
+ ScDocument* pDoc;
+ USHORT nSharedMaxIndex;
+public:
+ ScRangeName(USHORT nLim = 4, USHORT nDel = 4, BOOL bDup = FALSE,
+ ScDocument* pDocument = NULL) :
+ SortedCollection ( nLim, nDel, bDup ),
+ pDoc ( pDocument ),
+ nSharedMaxIndex ( 1 ) {} // darf nicht 0 sein!!
+
+ ScRangeName(const ScRangeName& rScRangeName, ScDocument* pDocument);
+
+ virtual DataObject* Clone(ScDocument* pDoc) const
+ { return new ScRangeName(*this, pDoc); }
+ ScRangeData* operator[]( const USHORT nIndex) const
+ { return (ScRangeData*)At(nIndex); }
+ virtual short Compare(DataObject* pKey1, DataObject* pKey2) const;
+ virtual BOOL IsEqual(DataObject* pKey1, DataObject* pKey2) const;
+
+ ScRangeData* GetRangeAtCursor( const ScAddress&, BOOL bStartOnly ) const;
+ ScRangeData* GetRangeAtBlock( const ScRange& ) const;
+
+ BOOL Load( SvStream& rStream, USHORT nVer );
+ BOOL Store( SvStream& rStream ) const;
+ BOOL SearchName( const String& rName, USHORT& rPos ) const;
+ void UpdateReference(UpdateRefMode eUpdateRefMode,
+ const ScRange& rRange,
+ short nDx, short nDy, short nDz );
+ void UpdateTabRef(USHORT nTable, USHORT nFlag, USHORT nNewTable = 0);
+ void UpdateTranspose( const ScRange& rSource, const ScAddress& rDest );
+ void UpdateGrow( const ScRange& rArea, USHORT nGrowX, USHORT nGrowY );
+ virtual BOOL Insert(DataObject* pDataObject);
+ ScRangeData* FindIndex(USHORT nIndex);
+ USHORT GetSharedMaxIndex() { return nSharedMaxIndex; }
+ void SetSharedMaxIndex(USHORT nInd) { nSharedMaxIndex = nInd; }
+ USHORT GetEntryIndex();
+};
+
+#endif
+
diff --git a/sc/inc/rangeseq.hxx b/sc/inc/rangeseq.hxx
new file mode 100644
index 000000000000..29f506aedf53
--- /dev/null
+++ b/sc/inc/rangeseq.hxx
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * $RCSfile: rangeseq.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_RANGESEQ_HXX
+#define SC_RANGESEQ_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef _COM_SUN_STAR_UNO_ANY_H_
+#include <com/sun/star/uno/Any.h>
+#endif
+
+class SvNumberFormatter;
+class ScDocument;
+class ScRange;
+class ScMatrix;
+
+class ScRangeToSequence
+{
+public:
+ static BOOL FillLongArray( com::sun::star::uno::Any& rAny,
+ ScDocument* pDoc, const ScRange& rRange );
+ static BOOL FillLongArray( com::sun::star::uno::Any& rAny,
+ const ScMatrix* pMatrix );
+ static BOOL FillDoubleArray( com::sun::star::uno::Any& rAny,
+ ScDocument* pDoc, const ScRange& rRange );
+ static BOOL FillDoubleArray( com::sun::star::uno::Any& rAny,
+ const ScMatrix* pMatrix );
+ static BOOL FillStringArray( com::sun::star::uno::Any& rAny,
+ ScDocument* pDoc, const ScRange& rRange );
+ static BOOL FillStringArray( com::sun::star::uno::Any& rAny,
+ const ScMatrix* pMatrix, SvNumberFormatter* pFormatter );
+ static BOOL FillMixedArray( com::sun::star::uno::Any& rAny,
+ ScDocument* pDoc, const ScRange& rRange );
+ static BOOL FillMixedArray( com::sun::star::uno::Any& rAny,
+ const ScMatrix* pMatrix );
+};
+
+
+#endif
+
diff --git a/sc/inc/rangeutl.hxx b/sc/inc/rangeutl.hxx
new file mode 100644
index 000000000000..f458469aa84e
--- /dev/null
+++ b/sc/inc/rangeutl.hxx
@@ -0,0 +1,198 @@
+/*************************************************************************
+ *
+ * $RCSfile: rangeutl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_RANGEUTL_HXX
+#define SC_RANGEUTL_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+//------------------------------------------------------------------------
+
+class SvStream;
+
+class ScArea;
+class ScDocument;
+class ScRefTripel;
+class ScTripel;
+class ScRange;
+class ScRangeName;
+class ScDBCollection;
+
+enum RutlNameScope { RUTL_NONE=0, RUTL_NAMES, RUTL_DBASE };
+
+//------------------------------------------------------------------------
+
+class ScRangeUtil
+{
+public:
+ ScRangeUtil() {}
+ ~ScRangeUtil() {}
+
+ BOOL MakeArea ( const String& rAreaStr,
+ ScArea& rArea,
+ ScDocument* pDoc,
+ USHORT nTab ) const;
+
+ void MakeAreaString ( const ScArea& rArea,
+ String& rAreaStr,
+ ScDocument* pDoc,
+ BOOL bRel = FALSE ) const;
+
+ void MakeTabAreaString ( const ScTripel& rAreaStart,
+ const ScTripel& rAreaEnd,
+ String& rAreaStr,
+ ScDocument* pDoc ) const;
+
+ void CutPosString ( const String& theAreaStr,
+ String& thePosStr ) const;
+
+ BOOL IsAbsTabArea ( const String& rAreaStr,
+ ScDocument* pDoc,
+ ScArea*** pppAreas = 0,
+ USHORT* pAreaCount = 0 ) const;
+
+ BOOL IsAbsArea ( const String& rAreaStr,
+ ScDocument* pDoc,
+ USHORT nTab,
+ String* pCompleteStr = 0,
+ ScRefTripel* pStartPos = 0,
+ ScRefTripel* pEndPos = 0 ) const;
+
+ BOOL IsRefArea ( const String& rAreaStr,
+ ScDocument* pDoc,
+ USHORT nTab,
+ String* pCompleteStr = 0,
+ ScRefTripel* pPosTripel = 0 ) const
+ { return FALSE; }
+
+ BOOL IsAbsPos ( const String& rPosStr,
+ ScDocument* pDoc,
+ USHORT nTab,
+ String* pCompleteStr = 0,
+ ScRefTripel* pPosTripel = 0 ) const;
+
+ BOOL MakeRangeFromName ( const String& rName,
+ ScDocument* pDoc,
+ USHORT nCurTab,
+ ScRange& rRange,
+ RutlNameScope eScope=RUTL_NAMES
+ ) const;
+};
+
+//------------------------------------------------------------------------
+
+class ScArea
+{
+public:
+ ScArea( USHORT tab = 0,
+ USHORT colStart = 0,
+ USHORT rowStart = 0,
+ USHORT colEnd = 0,
+ USHORT rowEnd = 0 );
+
+ ScArea( const ScArea& r );
+
+ void Clear ();
+ ScArea& operator= ( const ScArea& r );
+ BOOL operator== ( const ScArea& r ) const;
+ BOOL operator!= ( const ScArea& r ) const { return !( operator==(r) ); }
+ void GetString ( String& rStr,
+ BOOL bAbsolute = TRUE, ScDocument* pDoc = NULL ) const;
+
+public:
+ USHORT nTab;
+ USHORT nColStart;
+ USHORT nRowStart;
+ USHORT nColEnd;
+ USHORT nRowEnd;
+};
+
+SvStream& operator<< ( SvStream& rStream, const ScArea& rArea );
+SvStream& operator>> ( SvStream& rStream, ScArea& rArea );
+
+//------------------------------------------------------------------------
+
+//
+// gibt Bereiche mit Referenz und alle DB-Bereiche zurueck
+//
+
+class ScAreaNameIterator
+{
+private:
+ ScRangeName* pRangeName;
+ ScDBCollection* pDBCollection;
+ BOOL bFirstPass;
+ USHORT nPos;
+ String aStrNoName;
+
+public:
+ ScAreaNameIterator( ScDocument* pDoc );
+ ~ScAreaNameIterator() {}
+
+ BOOL Next( String& rName, ScRange& rRange );
+ BOOL WasDBName() const { return !bFirstPass; }
+};
+
+
+#endif // SC_RANGEUTL_HXX
+
diff --git a/sc/inc/rechead.hxx b/sc/inc/rechead.hxx
new file mode 100644
index 000000000000..8192898ae6a9
--- /dev/null
+++ b/sc/inc/rechead.hxx
@@ -0,0 +1,233 @@
+/*************************************************************************
+ *
+ * $RCSfile: rechead.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:49 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_RECHEAD_HXX
+#define SC_RECHEAD_HXX
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+// ID's fuer Dateien:
+
+#define SCID_SIZES 0x4200
+
+#define SCID_POOLS 0x4210
+#define SCID_DOCPOOL 0x4211
+#define SCID_STYLEPOOL 0x4212
+#define SCID_NEWPOOLS 0x4213 // ID fuer SC 3.0a
+#define SCID_EDITPOOL 0x4214
+
+#define SCID_DOCUMENT 0x4220
+#define SCID_DOCFLAGS 0x4221
+#define SCID_TABLE 0x4222
+#define SCID_DRAWING 0x4223
+#define SCID_RANGENAME 0x4224
+#define SCID_DBAREAS 0x4225
+#define SCID_PIVOT 0x4226
+#define SCID_CHARTS 0x4227
+#define SCID_NUMFORMAT 0x4228
+#define SCID_DOCOPTIONS 0x4229
+#define SCID_VIEWOPTIONS 0x422a
+#define SCID_PRINTSETUP 0x422b
+#define SCID_CHARSET 0x422c
+#define SCID_NEWDOCUMENT 0x422d // ID fuer SC 3.0a
+#define SCID_DDELINKS 0x422e
+#define SCID_AREALINKS 0x422f
+#define SCID_CONDFORMATS 0x4230
+#define SCID_VALIDATION 0x4231
+#define SCID_COLNAMERANGES 0x4232
+#define SCID_ROWNAMERANGES 0x4233
+#define SCID_DETOPLIST 0x4234
+#define SCID_CONSOLIDATA 0x4235
+#define SCID_CHANGETRACK 0x4236
+#define SCID_CHGVIEWSET 0x4237
+#define SCID_LINKUPMODE 0x4238
+#define SCID_DATAPILOT 0x4239
+
+#define SCID_COLUMNS 0x4240
+#define SCID_COLROWFLAGS 0x4241
+#define SCID_TABOPTIONS 0x4242
+#define SCID_TABLINK 0x4243
+
+#define SCID_COLDATA 0x4250
+#define SCID_COLNOTES 0x4251
+#define SCID_COLATTRIB 0x4252
+
+#define SCID_DRAWPOOL 0x4260
+#define SCID_DRAWMODEL 0x4261
+
+
+
+// Dateiversion
+// Falls das obere Byte inkrementiert wird, wird das Doc von
+// aelteren SCs nicht mehr geladen!
+
+#define SC_INITIAL_VERSION 0x0001
+#define SC_FORMULA_LCLVER 0x0002 // Formalen mit lokaler VerNr
+//--------------------------------
+#define SC_NEW_TOKEN_ARRAYS 0x0003 // neues TokenArray-Format
+#define SC_FORMULA_VALUES 0x0004 // Werte in Formelzellen
+#define SC_FORMULA_VALUES2 0x0005 // Werte in Formelzellen
+#define SC_DATABYTES 0x0006 // Datenbytes, kleine Tables
+#define SC_DATABYTES2 0x0007 // Datenbytes, kleine Tables
+#define SC_NUMFMT 0x0008 // Zahlenformat an Formelzelle
+#define SC_NEWIF 0x0009 // neue Codierung von ocIf (komp.)
+//--------------------------------
+#define SC_RELATIVE_REFS 0x0010 // relative Referenzen
+#define SC_SUBTOTAL_FLAG 0x0011 // bSubTotal der Formelzelle
+#define SC_COLROWNAME_RANGEPAIR 0x0012 // ColRowNameRanges als ScRangePair
+//--------------------------------
+#define SC_31_EXPORT_VER 0x0012 // Version bei 3.1-Export
+//-------------------------------- ab 4.0
+#define SC_32K_ROWS 0x0100 // 32000 Zeilen - inkompatibel
+#define SC_FONTCHARSET 0x0101 // Font-CharSets muessen stimmen
+//--------------------------------
+#define SC_40_EXPORT_VER 0x0101 // Version bei 4.0-Export
+//-------------------------------- ab 5.0
+#define SC_RECALC_MODE_BITS 0x0201 // TokenArray RecalcMode
+#define SC_MATRIX_DOUBLEREF 0x0202 // DoubleRef implizite Schnittmenge
+#define SC_VERSION_EDITPOOL 0x0203 // EditCells mit EditPool
+#define SC_SUBTOTAL_BUGFIX 0x0204 // bSubTotal der Formelzelle wirklich
+//-------------------------------- ab 5.2
+#define SC_CONVERT_RECALC_ON_LOAD 0x0205 // #73616# CONVERT function recalculated on each load
+//--------------------------------
+#define SC_CURRENT_VERSION 0x0205
+
+
+// alles ueber SC_31_EXPORT_VER muss auch beim Speichern abgefragt werden,
+// weil 3.1-Export diese Versionsnummer schreibt.
+
+// btw: 10 nach 09 ist kein Zaehlfehler sondern eine absichtliche Luecke,
+// weil nicht klar war, wie lange die RelRefs Entwicklung dauern wuerde.. :)
+
+class SvStream;
+
+// -----------------------------------------------------------------------
+
+// "Automatischer" Record-Header mit Groessenangabe
+
+class ScReadHeader
+{
+private:
+ SvStream& rStream;
+ ULONG nDataEnd;
+
+public:
+ ScReadHeader(SvStream& rNewStream);
+ ~ScReadHeader();
+
+ ULONG BytesLeft() const;
+};
+
+class ScWriteHeader
+{
+private:
+ SvStream& rStream;
+ ULONG nDataPos;
+ ULONG nDataSize;
+
+public:
+ ScWriteHeader(SvStream& rNewStream, ULONG nDefault = 0);
+ ~ScWriteHeader();
+};
+
+ // Header mit Groessenangaben fuer mehrere Objekte
+
+class ScMultipleReadHeader
+{
+private:
+ SvStream& rStream;
+ BYTE* pBuf;
+ SvMemoryStream* pMemStream;
+ ULONG nEndPos;
+ ULONG nEntryEnd;
+ ULONG nTotalEnd;
+
+public:
+ ScMultipleReadHeader(SvStream& rNewStream);
+ ~ScMultipleReadHeader();
+
+ void StartEntry();
+ void EndEntry();
+ ULONG BytesLeft() const;
+};
+
+class ScMultipleWriteHeader
+{
+private:
+ SvStream& rStream;
+ SvMemoryStream aMemStream;
+ ULONG nDataPos;
+ ULONG nDataSize;
+ ULONG nEntryStart;
+
+public:
+ ScMultipleWriteHeader(SvStream& rNewStream, ULONG nDefault = 0);
+ ~ScMultipleWriteHeader();
+
+ void StartEntry();
+ void EndEntry();
+};
+
+#endif
+
+
diff --git a/sc/inc/reffind.hxx b/sc/inc/reffind.hxx
new file mode 100644
index 000000000000..956c9ea6fc74
--- /dev/null
+++ b/sc/inc/reffind.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: reffind.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_REFFIND_HXX
+#define SC_REFFIND_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+class ScDocument;
+
+// -----------------------------------------------------------------------
+
+class ScRefFinder
+{
+private:
+ String aFormula;
+ ScDocument* pDoc;
+ xub_StrLen nFound;
+ xub_StrLen nSelStart;
+ xub_StrLen nSelEnd;
+
+public:
+ static const sal_Unicode __FAR_DATA pDelimiters[];
+
+ ScRefFinder( const String& rFormula, ScDocument* pDocument = NULL );
+ ~ScRefFinder();
+
+ const String& GetText() const { return aFormula; }
+ xub_StrLen GetFound() const { return nFound; }
+ xub_StrLen GetSelStart() const { return nSelStart; }
+ xub_StrLen GetSelEnd() const { return nSelEnd; }
+
+ void ToggleRel( xub_StrLen nStartPos, xub_StrLen nEndPos );
+};
+
+
+
+#endif
+
+
diff --git a/sc/inc/rtfimp.hxx b/sc/inc/rtfimp.hxx
new file mode 100644
index 000000000000..a21bd1b3fcce
--- /dev/null
+++ b/sc/inc/rtfimp.hxx
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtfimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_RTFIMP_HXX
+#define SC_RTFIMP_HXX
+
+#include "eeimport.hxx"
+
+class ScRTFImport : public ScEEImport
+{
+public:
+ ScRTFImport( ScDocument* pDoc, const ScRange& rRange );
+ ~ScRTFImport();
+};
+
+
+#endif
diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc
new file mode 100644
index 000000000000..8c1efb86f7cc
--- /dev/null
+++ b/sc/inc/sc.hrc
@@ -0,0 +1,1370 @@
+/*************************************************************************
+ *
+ * $RCSfile: sc.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_SC_HRC
+#define SC_SC_HRC
+
+#ifndef _SFX_HRC
+#include <sfx2/sfx.hrc> // ->#include <solar.hrc>
+#endif
+
+#ifndef _SVX_DIALOGS_HRC
+#include <svx/dialogs.hrc> // ->Svx-IDs
+#endif
+
+#define VAR_ARGS 30 // variable Parameter in scfuncs.src
+
+#define RID_HANDLEBITMAP 10005
+
+// Bereiche ------------------------------------------------------------------
+
+#define SC_VIEW_START (SID_SC_START)
+#define SC_VIEW_END (SID_SC_START + 99)
+#define SC_MESSAGE_START (SID_SC_START + 100)
+#define SC_MESSAGE_END (SID_SC_START + 199)
+#define SC_FUNCTION_START (SID_SC_START + 200)
+#define SC_FUNCTION_END (SID_SC_START + 299)
+#define SC_PARAM_START (SID_SC_START + 300)
+#define SC_PARAM_END (SID_SC_START + 399)
+
+// kompatibel zu frueher bleiben:
+#define SC_RESOURCE_START (RID_APP_START+5000)
+#define SC_RESOURCE_END (RID_APP_END)
+
+// ---------------------------------------------------------------------------
+// Hilfe IDs -----------------------------------------------------------------
+// Calc hat einen Bereich von 2000 IDs
+// Die Funktionen brauchen 11*90 = 990 IDs
+
+#define HID_SC_FUNC_START (HID_SC_START + 0)
+#define HID_INSWIN_START (HID_SC_START + 1000)
+#define HID_SC_SHEET_START (HID_SC_START + 1010)
+#define HID_SC_SHELL_START (HID_SC_START + 1030)
+#define HID_SC_WIN_START (HID_SC_START + 1050)
+#define HID_SC_CONTROL_START (HID_SC_START + 1070)
+#define HID_SC_DLG_START (HID_SC_START + 1100)
+#define HID_SC_TOOLBOX_START (HID_SC_START + 1170)
+#define HID_SC_MENU_START (HID_SC_START + 1180)
+
+// ---------------------------------------------------------------------------
+
+#define HID_INSWIN_POS (HID_INSWIN_START + 0 )
+#define HID_INSWIN_CALC (HID_INSWIN_START + 1 )
+#define HID_INSWIN_CANCEL (HID_INSWIN_START + 2 )
+#define HID_INSWIN_OK (HID_INSWIN_START + 3 )
+#define HID_INSWIN_SUMME (HID_INSWIN_START + 4 )
+#define HID_INSWIN_FUNC (HID_INSWIN_START + 5 )
+#define HID_INSWIN_INPUT (HID_INSWIN_START + 6 )
+
+// Hilfe IDs fuer Vorlagen ---------------------------------------------------
+#define HID_SC_SHEET_CELL_STD (HID_SC_SHEET_START +0 )
+#define HID_SC_SHEET_CELL_ERG (HID_SC_SHEET_START +1 )
+#define HID_SC_SHEET_CELL_ERG1 (HID_SC_SHEET_START +2 )
+#define HID_SC_SHEET_CELL_UEB (HID_SC_SHEET_START +3 )
+#define HID_SC_SHEET_CELL_UEB1 (HID_SC_SHEET_START +4 )
+#define HID_SC_SHEET_PAGE_STD (HID_SC_SHEET_START +10 )
+#define HID_SC_SHEET_PAGE_REP (HID_SC_SHEET_START +11 )
+
+// Hilfe IDs fuer Shells (Helferlein) (max.20) -------------------------------
+#define HID_SCSHELL_APP (HID_SC_SHELL_START +0 )
+#define HID_SCSHELL_DOCSH (HID_SC_SHELL_START +1 )
+#define HID_SCSHELL_DRAWSH (HID_SC_SHELL_START +2 )
+#define HID_SCSHELL_DRTXTOB (HID_SC_SHELL_START +3 )
+#define HID_SCSHELL_PIVOTSH (HID_SC_SHELL_START +4 )
+#define HID_SCSHELL_PREVWSH (HID_SC_SHELL_START +5 )
+#define HID_SCSHELL_TABVWSH (HID_SC_SHELL_START +6 )
+#define HID_SCSHELL_AUDIT (HID_SC_SHELL_START +7 )
+#define HID_SCSHELL_DRAWFORMSH (HID_SC_SHELL_START +8 )
+#define HID_SCSHELL_CELLSH (HID_SC_SHELL_START +9 )
+#define HID_SCSHELL_FORMATSH (HID_SC_SHELL_START +10)
+#define HID_SCSHELL_OLEOBEJCTSH (HID_SC_SHELL_START +11)
+#define HID_SCSHELL_CHARTSH (HID_SC_SHELL_START +12)
+#define HID_SCSHELL_GRAPHIC (HID_SC_SHELL_START +13)
+#define HID_SCSHELL_PAGEBREAK (HID_SC_SHELL_START +14)
+
+// Hilfe IDs fuer Dokumentfenster --------------------------------------------
+#define HID_SC_WIN_GRIDWIN ( HID_SC_WIN_START )
+#define HID_SC_WIN_PREVIEW ( HID_SC_WIN_START + 1 )
+
+// Hilfe IDs fuer einzelne Controls (max.30) ---------------------------------
+// Kopf/Fusszeilen Editfenster: Header/Footer links/rechts links/mitte/rechts
+#define HID_SC_HF_HLL ( HID_SC_CONTROL_START + 0 )
+#define HID_SC_HF_HLC ( HID_SC_CONTROL_START + 1 )
+#define HID_SC_HF_HLR ( HID_SC_CONTROL_START + 2 )
+#define HID_SC_HF_HRL ( HID_SC_CONTROL_START + 3 )
+#define HID_SC_HF_HRC ( HID_SC_CONTROL_START + 4 )
+#define HID_SC_HF_HRR ( HID_SC_CONTROL_START + 5 )
+#define HID_SC_HF_FLL ( HID_SC_CONTROL_START + 6 )
+#define HID_SC_HF_FLC ( HID_SC_CONTROL_START + 7 )
+#define HID_SC_HF_FLR ( HID_SC_CONTROL_START + 8 )
+#define HID_SC_HF_FRL ( HID_SC_CONTROL_START + 9 )
+#define HID_SC_HF_FRC ( HID_SC_CONTROL_START + 10 )
+#define HID_SC_HF_FRR ( HID_SC_CONTROL_START + 11 )
+// "Spalten" in Teilergebnissen: Gruppe 1/2/3 - nicht mehr!
+//#define HID_SC_SUBT_COLS_1 ( HID_SC_CONTROL_START + 12 )
+//#define HID_SC_SUBT_COLS_2 ( HID_SC_CONTROL_START + 13 )
+//#define HID_SC_SUBT_COLS_3 ( HID_SC_CONTROL_START + 14 )
+// Eintraege im Navigator
+#define HID_SC_NAVIPI_ENTRIES ( HID_SC_CONTROL_START + 15 )
+#define HID_SC_NAVIPI_ROW ( HID_SC_CONTROL_START + 16 )
+#define HID_SC_NAVIPI_COL ( HID_SC_CONTROL_START + 17 )
+#define HID_SC_NAVIPI_DOC ( HID_SC_CONTROL_START + 18 )
+#define HID_SC_NAVIPI_DATA ( HID_SC_CONTROL_START + 19 )
+#define HID_SC_NAVIPI_UP ( HID_SC_CONTROL_START + 20 )
+#define HID_SC_NAVIPI_DOWN ( HID_SC_CONTROL_START + 21 )
+#define HID_SC_NAVIPI_ZOOM ( HID_SC_CONTROL_START + 22 )
+#define HID_SC_NAVIPI_ROOT ( HID_SC_CONTROL_START + 23 )
+#define HID_SC_NAVIPI_SCEN ( HID_SC_CONTROL_START + 24 )
+#define HID_SC_NAVIPI_DROP ( HID_SC_CONTROL_START + 25 )
+// Teilergebnisse
+#define HID_SC_SUBT_GROUP ( HID_SC_CONTROL_START + 26 )
+#define HID_SC_SUBT_COLS ( HID_SC_CONTROL_START + 27 )
+#define HID_SC_SUBT_FUNC ( HID_SC_CONTROL_START + 28 )
+//
+#define HID_SC_NAVIPI_TOOLBOX ( HID_SC_CONTROL_START + 29 )
+// Bereich ist voll!
+
+// Hilfe IDs fuer Dialoge / Pages (max.70) -----------------------------------
+#define HID_SC_AUTOFORMAT (HID_SC_DLG_START )
+#define HID_SC_PIVOTFILTER (HID_SC_DLG_START +1 )
+#define HID_SC_INPORTOPT (HID_SC_DLG_START +2 )
+#define HID_SC_PIVOTSUBT (HID_SC_DLG_START +3 )
+#define HID_SC_FORM_ARGS (HID_SC_DLG_START +4 )
+#define HID_SCPAGE_SORT_FIELDS (HID_SC_DLG_START +5 )
+#define HID_SCPAGE_SORT_OPTIONS (HID_SC_DLG_START +6 )
+#define HID_SCPAGE_SUBT_OPTIONS (HID_SC_DLG_START +7 )
+#define HID_SCPAGE_SUBT_GROUP (HID_SC_DLG_START +8 )
+#define HID_SCPAGE_PROTECTION (HID_SC_DLG_START +9 )
+#define HID_SCPAGE_VIEW (HID_SC_DLG_START +10 )
+#define HID_SCPAGE_CALC (HID_SC_DLG_START +11 )
+#define HID_SCPAGE_USERLISTS (HID_SC_DLG_START +12 )
+#define HID_SCPAGE_HFEDIT (HID_SC_DLG_START +13 )
+#define HID_SCPAGE_AREAS (HID_SC_DLG_START +14 )
+#define HID_SCPAGE_TABLE (HID_SC_DLG_START +15 )
+#define HID_SCPAGE_PRINT (HID_SC_DLG_START +16 )
+
+#define HID_SCPAGE_SUBT_GROUP1 (HID_SC_DLG_START +17 )
+#define HID_SCPAGE_SUBT_GROUP2 (HID_SC_DLG_START +18 )
+#define HID_SCPAGE_SUBT_GROUP3 (HID_SC_DLG_START +19 )
+
+#define HID_SCPAGE_HFED_HL (HID_SC_DLG_START +20 )
+#define HID_SCPAGE_HFED_HR (HID_SC_DLG_START +21 )
+#define HID_SCPAGE_HFED_FL (HID_SC_DLG_START +22 )
+#define HID_SCPAGE_HFED_FR (HID_SC_DLG_START +23 )
+
+#define HID_SCPAGE_CONTENT (HID_SC_DLG_START +24 )
+#define HID_SCPAGE_LAYOUT (HID_SC_DLG_START +25 )
+#define HID_SCPAGE_INPUT (HID_SC_DLG_START +26 )
+
+#define HID_SC_NAVIGATOR (HID_SC_DLG_START +27 )
+
+#define HID_SC_MTRIN_VAL (HID_SC_DLG_START +28 )
+#define HID_SC_MTRIN_DEF (HID_SC_DLG_START +29 )
+#define HID_SC_SELENTRY_LIST (HID_SC_DLG_START +30 )
+#define HID_SC_GROUP_COLS (HID_SC_DLG_START +31 )
+#define HID_SC_GROUP_ROWS (HID_SC_DLG_START +32 )
+
+#define HID_SC_HF_TEXT (HID_SC_DLG_START +33 )
+#define HID_SC_HF_FILE (HID_SC_DLG_START +34 )
+#define HID_SC_HF_TABLE (HID_SC_DLG_START +35 )
+#define HID_SC_HF_PAGE (HID_SC_DLG_START +36 )
+#define HID_SC_HF_PAGES (HID_SC_DLG_START +37 )
+#define HID_SC_HF_DATE (HID_SC_DLG_START +38 )
+#define HID_SC_HF_TIME (HID_SC_DLG_START +39 )
+
+#define HID_SC_HEADER_EDIT (HID_SC_DLG_START +40 )
+#define HID_SC_FOOTER_EDIT (HID_SC_DLG_START +41 )
+
+#define HID_SC_SCENWIN_TOP (HID_SC_DLG_START +42 )
+#define HID_SC_SCENWIN_BOTTOM (HID_SC_DLG_START +43 )
+
+#define HID_SC_INPUTWIN (HID_SC_DLG_START +44 )
+
+#define HID_SC_RENAME_NAME (HID_SC_DLG_START +45 )
+#define HID_SC_APPEND_NAME (HID_SC_DLG_START +46 )
+
+// Funktionsautopilot: nur als Unique-IDs
+#define HID_SC_FAP_PAGE (HID_SC_DLG_START +47 )
+#define HID_SC_FAP_EDIT1 (HID_SC_DLG_START +48 )
+#define HID_SC_FAP_EDIT2 (HID_SC_DLG_START +49 )
+#define HID_SC_FAP_EDIT3 (HID_SC_DLG_START +50 )
+#define HID_SC_FAP_EDIT4 (HID_SC_DLG_START +51 )
+
+#define HID_SC_ADD_AUTOFMT (HID_SC_DLG_START +52 )
+#define HID_SC_AUTOFMT_NAME (HID_SC_DLG_START +53 )
+
+#define HID_SC_DROPMODE_URL (HID_SC_DLG_START +54 )
+#define HID_SC_DROPMODE_LINK (HID_SC_DLG_START +55 )
+#define HID_SC_DROPMODE_COPY (HID_SC_DLG_START +56 )
+
+#define HID_SC_FAP_STRUCT (HID_SC_DLG_START +57 )
+#define HID_SC_ASCII_TABCTR (HID_SC_DLG_START +58 )
+
+#define HID_SC_SCENARIO_DELETE (HID_SC_DLG_START +59 )
+#define HID_SC_SCENARIO_EDIT (HID_SC_DLG_START +60 )
+
+#define HID_SCDLG_FORMULA (HID_SC_DLG_START +61 )
+#define HID_SCDLG_CONDFORMAT (HID_SC_DLG_START +62 )
+#define HID_COLROWNAMERANGES (HID_SC_DLG_START +63 )
+
+#define HID_FUNCTION_BOX (HID_SC_DLG_START +64 )
+#define HID_SCPAGE_OPREDLINE (HID_SC_DLG_START +65 )
+#define HID_SC_REDLIN_CTR (HID_SC_DLG_START +66 )
+
+//Kopf/FusszeilenDlg: Contextmenue fuer Dateiname
+#define HID_FCOMMAND_TITEL (HID_SC_DLG_START +67 )
+#define HID_FCOMMAND_FILENAME (HID_SC_DLG_START +68 )
+#define HID_FCOMMAND_PATH (HID_SC_DLG_START +69 )
+
+
+// Hilfe IDs fuer Objekt- und Werkzeugleisten (max.10) -----------------------
+
+#define HID_SC_TOOLBOX_TOOLS ( HID_SC_TOOLBOX_START )
+#define HID_SC_TOOLBOX_TABLE ( HID_SC_TOOLBOX_START + 1 )
+#define HID_SC_TOOLBOX_DRAW ( HID_SC_TOOLBOX_START + 2 )
+#define HID_SC_TOOLBOX_DRTEXT ( HID_SC_TOOLBOX_START + 3 )
+#define HID_SC_TOOLBOX_PREVIEW ( HID_SC_TOOLBOX_START + 4 )
+
+// wrong group - HID_SC_DLG_START is full
+#define HID_SC_RENAME_AUTOFMT ( HID_SC_TOOLBOX_START + 5 )
+#define HID_SC_REN_AFMT_NAME ( HID_SC_TOOLBOX_START + 6 )
+
+// Hilfe IDs fuer Submenus (max.50) ------------------------------------------
+#define HID_SCMENU_EDIT ( HID_SC_MENU_START )
+#define HID_SCMENU_FILL ( HID_SC_MENU_START + 1 )
+#define HID_SCMENU_DELBREAK ( HID_SC_MENU_START + 2 )
+#define HID_SCMENU_VIEW ( HID_SC_MENU_START + 3 )
+#define HID_SCMENU_TOOLBARS ( HID_SC_MENU_START + 4 )
+#define HID_SCMENU_INSERT ( HID_SC_MENU_START + 5 )
+#define HID_SCMENU_INSBREAK ( HID_SC_MENU_START + 6 )
+#define HID_SCMENU_NAME ( HID_SC_MENU_START + 7 )
+#define HID_SCMENU_GRAPHIC ( HID_SC_MENU_START + 8 )
+#define HID_SCMENU_DATA ( HID_SC_MENU_START + 9 )
+#define HID_SCMENU_FILTER ( HID_SC_MENU_START + 10 )
+#define HID_SCMENU_OUTLINE ( HID_SC_MENU_START + 11 )
+#define HID_SCMENU_PIVOT ( HID_SC_MENU_START + 12 )
+#define HID_SCMENU_EXTRA ( HID_SC_MENU_START + 13 )
+#define HID_SCMENU_SPELLING ( HID_SC_MENU_START + 14 )
+#define HID_SCMENU_AUDIT ( HID_SC_MENU_START + 15 )
+#define HID_SCMENU_PROTECT ( HID_SC_MENU_START + 16 )
+#define HID_SCMENU_CELLCONT ( HID_SC_MENU_START + 17 )
+#define HID_SCMENU_ROW ( HID_SC_MENU_START + 18 )
+#define HID_SCMENU_COL ( HID_SC_MENU_START + 19 )
+#define HID_SCMENU_TAB ( HID_SC_MENU_START + 20 )
+#define HID_SCMENU_MERGE ( HID_SC_MENU_START + 21 )
+#define HID_SCMENU_AREA ( HID_SC_MENU_START + 22 )
+#define HID_SCMENU_OBJMIRROR ( HID_SC_MENU_START + 23 )
+#define HID_SCMENU_OBJARRANGE ( HID_SC_MENU_START + 24 )
+#define HID_SCMENU_ANCHOR ( HID_SC_MENU_START + 25 )
+#define HID_SCMENU_SENDTO ( HID_SC_MENU_START + 26 )
+#define HID_SCMENU_CHANGES ( HID_SC_MENU_START + 27 )
+
+#define HID_SC_FAP_BTN_FX1 ( HID_SC_MENU_START + 28 )
+#define HID_SC_FAP_BTN_FX2 ( HID_SC_MENU_START + 29 )
+#define HID_SC_FAP_BTN_FX3 ( HID_SC_MENU_START + 30 )
+#define HID_SC_FAP_BTN_FX4 ( HID_SC_MENU_START + 31 )
+#define HID_SC_FAP_BTN_REF1 ( HID_SC_MENU_START + 32 )
+#define HID_SC_FAP_BTN_REF2 ( HID_SC_MENU_START + 33 )
+#define HID_SC_FAP_BTN_REF3 ( HID_SC_MENU_START + 34 )
+#define HID_SC_FAP_BTN_REF4 ( HID_SC_MENU_START + 35 )
+#define HID_SC_FAP_FORMULA ( HID_SC_MENU_START + 36 )
+
+#define HID_SC_SORT_ACTION ( HID_SC_MENU_START + 37 )
+#define HID_SC_SORT_AUTHOR ( HID_SC_MENU_START + 38 )
+#define HID_SC_SORT_DATE ( HID_SC_MENU_START + 39 )
+#define HID_SC_SORT_COMMENT ( HID_SC_MENU_START + 40 )
+#define HID_SORT_POSITION ( HID_SC_MENU_START + 41 )
+#define HID_SC_CHANGES_COMMENT ( HID_SC_MENU_START + 42 )
+#define HID_SC_FUNCTIONLIST ( HID_SC_MENU_START + 43 )
+#define HID_SCPAGE_OPTLOAD ( HID_SC_MENU_START + 44 )
+#define HID_PASSWD_TABLE ( HID_SC_MENU_START + 45 )
+#define HID_PASSWD_DOC ( HID_SC_MENU_START + 46 )
+
+#define HID_DATAPILOT_TYPE ( HID_SC_MENU_START + 47 )
+#define HID_DATAPILOT_DATABASE ( HID_SC_MENU_START + 48 )
+#define HID_DATAPILOT_SERVICE ( HID_SC_MENU_START + 49 )
+
+// Ende Hilfe IDs ------------------------------------------------------------
+// ---------------------------------------------------------------------------
+
+// View-Funktionen (max. 100) ------------------------------------------------
+
+#define FID_TESTFUNC0 (SC_VIEW_START)
+#define FID_TESTFUNC1 (SC_VIEW_START + 1)
+#define FID_TESTFUNC2 (SC_VIEW_START + 2)
+#define FID_TESTFUNC3 (SC_VIEW_START + 3)
+#define FID_TESTFUNC4 (SC_VIEW_START + 4)
+#define FID_TESTFUNC5 (SC_VIEW_START + 5)
+#define FID_TESTFUNC6 (SC_VIEW_START + 6)
+#define FID_TESTFUNC7 (SC_VIEW_START + 7)
+#define FID_TESTFUNC8 (SC_VIEW_START + 8)
+#define FID_TESTFUNC9 (SC_VIEW_START + 9)
+#define FID_SCALESTATUS (SC_VIEW_START + 10)
+#define FID_COLOR (SC_VIEW_START + 11)
+//aus sfx: #define SID_REPAINT (SC_VIEW_START + 12)
+#define SID_UPDATECHART (SC_VIEW_START + 13)
+#define FID_MARKLEFT (SC_VIEW_START + 14)
+#define FID_MARKRIGHT (SC_VIEW_START + 15)
+#define FID_MARKUP (SC_VIEW_START + 16)
+#define FID_MARKDOWN (SC_VIEW_START + 17)
+#define FID_MARKPAGEUP (SC_VIEW_START + 18)
+#define FID_MARKPAGEDOWN (SC_VIEW_START + 19)
+
+// Slot-IDs fuer Attribute:
+
+#define SID_SCATTR_HOR_JUSTIFY (SC_VIEW_START + 30) // Alignment-Page
+#define SID_SCATTR_VER_JUSTIFY (SC_VIEW_START + 31)
+#define SID_SCATTR_MARGIN (SC_VIEW_START + 32)
+#define SID_SCATTR_ORIENTATION (SC_VIEW_START + 33)
+#define SID_SCATTR_LINEBREAK (SC_VIEW_START + 35)
+#define SID_SCATTR_PROTECTION (SC_VIEW_START + 36) // Protection-Page
+
+// sonstige Slot-IDs:
+
+#define SID_SCUSERLISTS (SC_VIEW_START + 37) // Benutzerdef.Listen
+#define RES_TBX_DUMMY (SC_VIEW_START + 38) // Dummy-Item
+#define SID_SCVIEWOPTIONS (SC_VIEW_START + 39)
+#define SID_SCDOCOPTIONS (SC_VIEW_START + 40)
+
+// Cursorbewegungen als Properties:
+
+#define SID_CURRENTCELL (SC_VIEW_START + 41)
+#define SID_CURRENTTAB (SC_VIEW_START + 42)
+#define SID_CURRENTDOC (SC_VIEW_START + 43)
+#define SID_CURRENTOBJECT (SC_VIEW_START + 44)
+
+// Slot-IDs fuer spez. ToolBox-Funktionen:
+
+#define SID_NUMBER_CURRENCY (SC_VIEW_START + 45)
+#define SID_NUMBER_PERCENT (SC_VIEW_START + 46)
+
+// "Slot" Ids fuer Eingabezeilen Images:
+#define SID_INPUT_FUNCTION (SC_VIEW_START + 47)
+#define SID_INPUT_SUM (SC_VIEW_START + 48)
+#define SID_INPUT_EQUAL (SC_VIEW_START + 49)
+#define SID_INPUT_CANCEL (SC_VIEW_START + 50)
+#define SID_INPUT_OK (SC_VIEW_START + 51)
+
+#define SID_NUMBER_STANDARD (SC_VIEW_START + 52)
+#define SID_NUMBER_DATE (SC_VIEW_START + 53)
+#define SID_NUMBER_TWODEC (SC_VIEW_START + 54)
+#define SID_NUMBER_SCIENTIFIC (SC_VIEW_START + 55)
+#define SID_NUMBER_TIME (SC_VIEW_START + 56)
+#define SID_NUMBER_INCDEC (SC_VIEW_START + 57)
+#define SID_NUMBER_DECDEC (SC_VIEW_START + 58)
+
+// Sonstiges:
+#define SID_LINKS (SC_VIEW_START + 60)
+#define SID_INSERT_SIMAGE (SC_VIEW_START + 61)
+#define SID_INSERT_SCHART (SC_VIEW_START + 62)
+#define SID_INSERT_SMATH (SC_VIEW_START + 63)
+#define SID_STANDARD_FONTS (SC_VIEW_START + 64)
+#define SID_MIRROR_VERTICAL (SC_VIEW_START + 65)
+#define SID_MIRROR_HORIZONTAL (SC_VIEW_START + 66)
+#define SID_CELL_FORMAT_RESET (SC_VIEW_START + 67)
+#define SID_SCPRINTOPTIONS (SC_VIEW_START + 68)
+#define SID_WINDOW_SPLIT (SC_VIEW_START + 69)
+#define SID_WINDOW_FIX (SC_VIEW_START + 70)
+#ifdef MAC
+#ifdef SID_DRAW_CHART
+#undef SID_DRAW_CHART
+#endif
+#endif
+#define SID_DRAW_CHART (SC_VIEW_START + 71)
+#define SID_UPDATETABLINKS (SC_VIEW_START + 72)
+
+//TabPage Eingabe
+#define SID_SC_INPUT_SELECTION (SC_VIEW_START + 73)
+#define SID_SC_INPUT_SELECTIONPOS (SC_VIEW_START + 74)
+#define SID_SC_INPUT_EDITMODE (SC_VIEW_START + 75)
+#define SID_SC_INPUT_FMT_EXPAND (SC_VIEW_START + 76)
+#define SID_SC_INPUT_RANGEFINDER (SC_VIEW_START + 77)
+#define SID_SC_INPUT_REF_EXPAND (SC_VIEW_START + 78)
+#define SID_SC_INPUT_MARK_HEADER (SC_VIEW_START + 79)
+
+#define SID_REIMPORT_AFTER_LOAD (SC_VIEW_START + 80)
+#define SID_DRAW_NOTEEDIT (SC_VIEW_START + 81)
+
+#define SID_CHOOSE_DESIGN (SC_VIEW_START + 82)
+#define SID_EURO_CONVERTER (SC_VIEW_START + 83)
+
+// Nachrichten -------------------------------------------------------------
+
+#define FID_INPUTLINE_STATUS (SC_MESSAGE_START)
+#define FID_INPUTLINE_ENTER (SC_MESSAGE_START + 1)
+#define FID_REPAINT (SC_MESSAGE_START + 2)
+#define FID_DATACHANGED (SC_MESSAGE_START + 3)
+#define FID_REFMODECHANGED (SC_MESSAGE_START + 4)
+#define FID_KILLEDITVIEW (SC_MESSAGE_START + 5)
+#define SID_SOLVE (SC_MESSAGE_START + 6)
+#define FID_FONT_SELECTED (SC_MESSAGE_START + 7)
+#define FID_FILTER_OK (SC_MESSAGE_START + 8)
+#define SC_HINT_DRWLAYER_NEW (SC_MESSAGE_START + 9)
+#define SID_TABDELETED (SC_MESSAGE_START + 10)
+#define FID_INPUTLINE_MATRIX (SC_MESSAGE_START + 11)
+#define SID_DLG_RETOK (SC_MESSAGE_START + 12)
+#define FID_ANYDATACHANGED (SC_MESSAGE_START + 13)
+#define SID_STATUS_DOCPOS (SC_MESSAGE_START + 14)
+#define SID_STATUS_PAGESTYLE (SC_MESSAGE_START + 15)
+#define SID_STATUS_SELMODE (SC_MESSAGE_START + 16)
+#define FID_KILLEDITVIEW_NOPAINT (SC_MESSAGE_START + 17)
+#define SID_DLG_MATRIX (SC_MESSAGE_START + 18)
+#define SC_HINT_DBAREAS_CHANGED (SC_MESSAGE_START + 19)
+#define SC_HINT_AREAS_CHANGED (SC_MESSAGE_START + 20)
+#define SC_HINT_TABLES_CHANGED (SC_MESSAGE_START + 21)
+
+#define SID_STATUS_SELMODE_ERG (SC_MESSAGE_START + 22)
+#define SID_STATUS_SELMODE_ERW (SC_MESSAGE_START + 23)
+#define SID_STATUS_SELMODE_NORM (SC_MESSAGE_START + 24)
+
+#define SID_CHART_SOURCE (SC_MESSAGE_START + 25)
+#define SID_CHART_NAME (SC_MESSAGE_START + 26)
+#define SID_CHART_ADDSOURCE (SC_MESSAGE_START + 27)
+
+#define SID_AUTO_STYLE (SC_MESSAGE_START + 28)
+
+#define FID_INPUTLINE_BLOCK (SC_MESSAGE_START + 29)
+
+#define SID_STATUS_SUM (SC_MESSAGE_START + 30)
+
+#define SC_HINT_DRAW_CHANGED (SC_MESSAGE_START + 31)
+#define SC_HINT_DOCNAME_CHANGED (SC_MESSAGE_START + 32)
+#define SC_HINT_AREALINKS_CHANGED (SC_MESSAGE_START + 33)
+#define SC_HINT_SHOWRANGEFINDER (SC_MESSAGE_START + 34)
+#define SC_HINT_DOC_SAVED (SC_MESSAGE_START + 35)
+#define SC_HINT_FORCESETTAB (SC_MESSAGE_START + 36)
+
+// Nachricht zum Oeffnen von Dialogen:
+#define SID_OPENDLG_CONSOLIDATE (SC_MESSAGE_START + 50)
+#define SID_OPENDLG_PIVOTTABLE (SC_MESSAGE_START + 51)
+#define SID_OPENDLG_FUNCTION (SC_MESSAGE_START + 52)
+#define SID_OPENDLG_SOLVE (SC_MESSAGE_START + 53)
+#define SID_OPENDLG_TABOP (SC_MESSAGE_START + 54)
+#define SID_OPENDLG_CHART (SC_MESSAGE_START + 55)
+#define SID_OPENDLG_EDITFUNCTION (SC_MESSAGE_START + 56)
+#define SID_OPENDLG_ARGUMENT (SC_MESSAGE_START + 57)
+#define SID_OPENDLG_MODCHART (SC_MESSAGE_START + 58)
+#define SID_OPENDLG_CONDFRMT (SC_MESSAGE_START + 59)
+
+#define SC_HINT_NAVIGATOR_UPDATEALL (SC_MESSAGE_START + 65)
+
+// Funktionen ------------------------------------------------------------
+// noch nach Menues sortiert - besserer Vorschlag?
+
+
+//#define FID_PRINT_PREVIEW (SC_FUNCTION_START)
+#define FID_DOC_MANAGER (SC_FUNCTION_START + 1)
+#define FID_CURSOR_ENTER (SC_FUNCTION_START + 2)
+#define SID_MAIL (SC_FUNCTION_START + 3)
+#define FILE_MENU_END (SC_FUNCTION_START + 20)
+
+#define EDIT_MENU_START (FILE_MENU_END)
+#define FID_PASTE_CONTENTS (EDIT_MENU_START)
+#define FID_DELETE_CELLCONTENTS (EDIT_MENU_START + 1)
+#define FID_DELETE_CELL (EDIT_MENU_START + 2)
+#define FID_DELETE_TABLE (EDIT_MENU_START + 3)
+#define FID_FILL_TO_BOTTOM (EDIT_MENU_START + 4)
+#define FID_FILL_TO_RIGHT (EDIT_MENU_START + 5)
+#define FID_FILL_TO_TOP (EDIT_MENU_START + 6)
+#define FID_FILL_TO_LEFT (EDIT_MENU_START + 7)
+#define FID_FILL_TAB (EDIT_MENU_START + 8)
+#define FID_FILL_SERIES (EDIT_MENU_START + 9)
+#define FID_SEARCH_REPLACE_DLG (EDIT_MENU_START + 10)
+#define FID_EDIT_OBJECT (EDIT_MENU_START + 11)
+#define SID_SC_NAVIGATOR (EDIT_MENU_START + 12)
+#define SID_SC_WIZARD (EDIT_MENU_START + 13)
+#define SID_SC_EDIT_OBJECT (EDIT_MENU_START + 14)
+#define SID_HFEDIT (EDIT_MENU_START + 15)
+
+#define SID_DEL_ROWS (EDIT_MENU_START + 16)//JN
+#define SID_DEL_COLS (EDIT_MENU_START + 17)//JN
+
+#define FID_CHG_RECORD (EDIT_MENU_START + 18)
+#define FID_CHG_SHOW (EDIT_MENU_START + 19)
+
+#define EDIT_MENU_END (EDIT_MENU_START + 20)
+#define VIEW_MENU_START (EDIT_MENU_END)
+
+#define FID_TOGGLEOBJECT (VIEW_MENU_START)
+#define FID_TOGGLEINPUTLINE (VIEW_MENU_START + 1)
+#define FID_TOGGLEHEADERS (VIEW_MENU_START + 2)
+#define FID_SCALE (VIEW_MENU_START + 4)
+#define FID_TOGGLESYNTAX (VIEW_MENU_START + 5)
+#define FID_SCREEN_OPTIONS (VIEW_MENU_START + 6)
+#define FID_PAGEBREAKMODE (VIEW_MENU_START + 7)
+#define FID_FUNCTION_BOX (VIEW_MENU_START + 8)
+// Compare/Merge jetzt aus Sfx
+//#define FID_CHG_COMPARE (VIEW_MENU_START + 16)// DANGER DIRTY ID
+//#define FID_CHG_MERGE (VIEW_MENU_START + 17)// DANGER DIRTY ID
+#define FID_CHG_ACCEPT (VIEW_MENU_START + 18)// DANGER DIRTY ID
+#define FID_CHG_COMMENT (VIEW_MENU_START + 19)// DANGER DIRTY ID
+#define VIEW_MENU_END (VIEW_MENU_START + 20)
+
+#define INSERT_MENU_START (VIEW_MENU_END)
+#define FID_PAGEBREAK (INSERT_MENU_START)
+#define FID_INS_ROWBRK (INSERT_MENU_START + 1)
+#define FID_INS_COLBRK (INSERT_MENU_START + 2)
+#define FID_DEL_ROWBRK (INSERT_MENU_START + 3)
+#define FID_DEL_COLBRK (INSERT_MENU_START + 4)
+#define FID_INS_CELL_CONTENTS (INSERT_MENU_START + 5)
+#define FID_INS_CELL (INSERT_MENU_START + 6)
+#define FID_INS_ROW (INSERT_MENU_START + 7)
+#define FID_INS_COLUMN (INSERT_MENU_START + 8)
+#define FID_INS_TABLE (INSERT_MENU_START + 9)
+#define SID_INS_FUNCTION (INSERT_MENU_START + 10)
+#define FID_DEFINE_NAME (INSERT_MENU_START + 11)
+#define FID_INSERT_NAME (INSERT_MENU_START + 12)
+#define FID_USE_NAME (INSERT_MENU_START + 13)
+#define FID_APPLY_NAME (INSERT_MENU_START + 14)
+//#define SID_CHARMAP (INSERT_MENU_START + 15)//!!! kommt von sfx
+//aus sfx: #define SID_INSERT_POSTIT (INSERT_MENU_START + 16)
+#define SID_INSERT_CLIPART (INSERT_MENU_START + 17) //!!! sollte vom Svx kommen
+#define FID_INS_CELLSDOWN (INSERT_MENU_START + 18)
+#define FID_INS_CELLSRIGHT (INSERT_MENU_START + 19)
+#define INSERT_MENU_END (INSERT_MENU_START + 20)
+
+#define FORMAT_MENU_START (INSERT_MENU_END)
+#define FID_CELL_FORMAT (FORMAT_MENU_START)
+#define FID_ROW_HEIGHT (FORMAT_MENU_START + 1)
+#define FID_ROW_OPT_HEIGHT (FORMAT_MENU_START + 2)
+#define FID_ROW_HIDE (FORMAT_MENU_START + 3)
+#define FID_ROW_SHOW (FORMAT_MENU_START + 4)
+#define FID_COL_WIDTH (FORMAT_MENU_START + 5)
+#define FID_COL_OPT_WIDTH (FORMAT_MENU_START + 6)
+#define FID_COL_HIDE (FORMAT_MENU_START + 7)
+#define FID_COL_SHOW (FORMAT_MENU_START + 8)
+#define FID_TABLE_HIDE (FORMAT_MENU_START + 9)
+#define FID_TABLE_SHOW (FORMAT_MENU_START + 10)
+#define FID_CONDITIONAL_FORMAT (FORMAT_MENU_START + 11)
+#define SID_SCSTYLES (FORMAT_MENU_START + 12)
+#define FID_MERGE_ON (FORMAT_MENU_START + 13)
+#define FID_MERGE_OFF (FORMAT_MENU_START + 14)
+#define SID_FORMATPAGE (FORMAT_MENU_START + 15)
+#define SID_TEXT_STANDARD (FORMAT_MENU_START + 16)
+#define SID_DRAWTEXT_ATTR_DLG (FORMAT_MENU_START + 17)
+#define FID_TABLE_VISIBLE (FORMAT_MENU_START + 18)
+#define FID_COL_OPT_DIRECT (FORMAT_MENU_START + 19)
+#define FORMAT_MENU_END (FORMAT_MENU_START + 20)
+
+#define EXTRA_MENU_START (FORMAT_MENU_END)
+#define FID_VOICE_CONTROL (EXTRA_MENU_START + 1)
+#define SID_RECALC_TITLE (EXTRA_MENU_START + 2)
+#define FID_AUTO_CALC (EXTRA_MENU_START + 3)
+#define FID_RECALC (EXTRA_MENU_START + 4)
+#define FID_UPDATE_DIAGRAMS (EXTRA_MENU_START + 5)
+#define FID_PROTECT_TABLE (EXTRA_MENU_START + 6)
+#define FID_PROTECT_DOC (EXTRA_MENU_START + 7)
+#define SID_EDIT_MACRO (EXTRA_MENU_START + 8)
+#define SID_SCOPTIONS (EXTRA_MENU_START + 9)
+#define SID_MACRO_CHOOSER (EXTRA_MENU_START + 10)
+#define SID_SCENARIOS (EXTRA_MENU_START + 12)
+#define SID_ADD_IN_MANAGER (EXTRA_MENU_START + 13)
+#define SID_PIVOT_RECALC (EXTRA_MENU_START + 14)
+#define SID_PIVOT_KILL (EXTRA_MENU_START + 15)
+
+// hier falsch, aber erstmal
+#define SID_SC_HELP_PI (EXTRA_MENU_START + 16)
+#define SID_SC_SHOW_KEYBOARD_HELP (EXTRA_MENU_START + 17)
+
+#define FID_HARD_RECALC (EXTRA_MENU_START + 18)
+#define FID_AUTOCOMPLETE (EXTRA_MENU_START + 19)
+
+#define EXTRA_MENU_END (EXTRA_MENU_START + 20)
+
+#define DATA_MENU_START (EXTRA_MENU_END)
+#define SID_DEFINE_DBNAME (DATA_MENU_START)
+#define SID_SELECT_DB (DATA_MENU_START + 1)
+#define SID_SORT (DATA_MENU_START + 2)
+#define SID_FILTER (DATA_MENU_START + 3)
+#define SID_SPECIAL_FILTER (DATA_MENU_START + 4)
+#define SID_AUTO_FILTER (DATA_MENU_START + 5)
+#define SID_UNFILTER (DATA_MENU_START + 6)
+#define SID_QUERY (DATA_MENU_START + 7)
+#define SID_SUBTOTALS (DATA_MENU_START + 8)
+//aus sfx: #define SID_OUTLINE_HIDE (DATA_MENU_START + 9)
+//aus sfx: #define SID_OUTLINE_SHOW (DATA_MENU_START + 10)
+//aus sfx: #define SID_OUTLINE_MAKE (DATA_MENU_START + 11)
+//aus sfx: #define SID_OUTLINE_REMOVE (DATA_MENU_START + 12)
+#define SID_AUTO_OUTLINE (DATA_MENU_START + 13)
+//aus sfx: #define SID_OUTLINE_DELETEALL (DATA_MENU_START + 14)
+#define SID_IMPORT_DATA (DATA_MENU_START + 15)
+#define SID_REIMPORT_DATA (DATA_MENU_START + 16)
+#define SID_PIVOT_TABLE (DATA_MENU_START + 17)
+#define SID_TABOP (DATA_MENU_START + 18)
+#define SID_TEXT_TO_COLUMNS (DATA_MENU_START + 19)
+#define SID_CONSOLIDATE (DATA_MENU_START + 20)
+#define SID_AUTOFILTER_HIDE (DATA_MENU_START + 21)
+
+#define SID_SBA_IMPORT (DATA_MENU_START + 22)
+
+#define SID_SORT_DESCENDING (DATA_MENU_START + 23)
+#define SID_SORT_ASCENDING (DATA_MENU_START + 24)
+//
+//
+#define DATA_MENU_END (DATA_MENU_START + 25)
+
+#define TAB_POPUP_START (DATA_MENU_END)
+#define RID_POPUP_TAB (TAB_POPUP_START)
+#define FID_TAB_MENU_RENAME (TAB_POPUP_START+1)
+#define FID_TAB_RENAME (TAB_POPUP_START+2)
+#define FID_TAB_MOVE (TAB_POPUP_START+3)
+#define FID_TAB_SELECTALL (TAB_POPUP_START+4)
+#define FID_TAB_APPEND (TAB_POPUP_START+5)
+#define FID_TAB_INDEX (TAB_POPUP_START+6)
+
+#define TAB_POPUP_END (DATA_MENU_END + 20)
+
+#define OBJBAR_FORMAT_START (TAB_POPUP_END)
+#define SID_ALIGNLEFT (OBJBAR_FORMAT_START+6)
+#define SID_ALIGNRIGHT (OBJBAR_FORMAT_START+7)
+#define SID_ALIGNCENTERHOR (OBJBAR_FORMAT_START+8)
+#define SID_ALIGNBLOCK (OBJBAR_FORMAT_START+9)
+#define SID_ALIGNTOP (OBJBAR_FORMAT_START+10)
+#define SID_ALIGNBOTTOM (OBJBAR_FORMAT_START+11)
+#define SID_ALIGNCENTERVER (OBJBAR_FORMAT_START+12)
+#define SID_SELECT_SCENARIO (OBJBAR_FORMAT_START+13)
+
+#define SID_V_ALIGNCELL (OBJBAR_FORMAT_START+14)
+#define SID_H_ALIGNCELL (OBJBAR_FORMAT_START+15)
+
+#define OBJBAR_FORMAT_END (OBJBAR_FORMAT_START+20)
+
+#define RID_INPUTBAR_START (OBJBAR_FORMAT_END)
+#define SID_INPUT_WINDOW (RID_INPUTBAR_START)
+#define RID_INPUTBAR_END (RID_INPUTBAR_START+1)
+
+#define DRAW_BAR_START (RID_INPUTBAR_END)
+//! SID_OBJECT_MIRROR wird sicher mal allgemein
+#define SID_OBJECT_MIRROR (DRAW_BAR_START)
+#define SID_DRAWTOABOVE (DRAW_BAR_START+15)
+#define SID_DRAWTOBELOW (DRAW_BAR_START+16)
+//#define SID_GROUP (DRAW_BAR_START+17)
+//#define SID_UNGROUP (DRAW_BAR_START+18)
+#define SID_FRAMETOTOP (DRAW_BAR_START+19)
+#define SID_FRAMETOBOTTOM (DRAW_BAR_START+20)
+//aus sfx: #define SID_FRAME_UP (DRAW_BAR_START+21)
+//aus sfx: #define SID_FRAME_DOWN (DRAW_BAR_START+22)
+#define SID_TOOL_TEXT (DRAW_BAR_START+23)
+#define SID_ANCHOR_PAGE (DRAW_BAR_START+24)
+#define SID_ANCHOR_CELL (DRAW_BAR_START+25)
+#define SID_ANCHOR_TOGGLE (DRAW_BAR_START+26)
+#define SID_ORIGINALSIZE (DRAW_BAR_START+27)
+
+#define DRAW_BAR_END (DRAW_BAR_START+50)
+
+#define DRAW_OBJECTBAR_START (DRAW_BAR_END)
+#define RID_DRAW_OBJECTBAR DRAW_OBJECTBAR_START
+
+#define DRAWTEXTBAR_START (DRAW_BAR_END)
+#define SID_TEXT_LINESPACING_1 (DRAWTEXTBAR_START)
+#define SID_TEXT_LINESPACING_2 (DRAWTEXTBAR_START+1)
+#define SID_TEXT_LINESPACING_3 (DRAWTEXTBAR_START+2)
+#define DRAWTEXTBAR_END (DRAWTEXTBAR_START+20)
+
+#define DETECTIVE_START (DRAWTEXTBAR_END)
+#define SID_DETECTIVE_ADD_PRED (DETECTIVE_START)
+#define SID_DETECTIVE_DEL_PRED (DETECTIVE_START+1)
+#define SID_DETECTIVE_ADD_SUCC (DETECTIVE_START+2)
+#define SID_DETECTIVE_DEL_SUCC (DETECTIVE_START+3)
+#define SID_DETECTIVE_ADD_ERR (DETECTIVE_START+4)
+#define SID_DETECTIVE_DEL_ALL (DETECTIVE_START+5)
+
+#define SID_DETECTIVE_FILLMODE (DETECTIVE_START+6)
+#define SID_FILL_ADD_PRED (DETECTIVE_START+7)
+#define SID_FILL_DEL_PRED (DETECTIVE_START+8)
+#define SID_FILL_ADD_SUCC (DETECTIVE_START+9)
+#define SID_FILL_DEL_SUCC (DETECTIVE_START+10)
+#define SID_FILL_NONE (DETECTIVE_START+11)
+#define SID_FILL_SELECT (DETECTIVE_START+12)
+
+#define SID_DETECTIVE_INVALID (DETECTIVE_START+13)
+
+#define SID_DETECTIVE_REFRESH (DETECTIVE_START+14)
+#define SID_DETECTIVE_AUTO (DETECTIVE_START+15)
+
+#define DETECTIVE_END (DETECTIVE_START+20)
+
+#define SID_API_SLOTS (DETECTIVE_END)
+//aus sfx: #define SID_ENTER_STRING (SID_API_SLOTS)
+#define SID_INSERT_MATRIX (SID_API_SLOTS+1)
+
+
+#define SID_PREVIEW_START (SID_API_SLOTS+20)
+#define SID_PREVIEW_NEXT (SID_PREVIEW_START)
+#define SID_PREVIEW_PREVIOUS (SID_PREVIEW_START+1)
+#define SID_PREVIEW_FIRST (SID_PREVIEW_START+2)
+#define SID_PREVIEW_LAST (SID_PREVIEW_START+3)
+#define SID_PREVIEW_GOTO (SID_PREVIEW_START+4)
+#define SID_PREVIEW_ZOOMIN (SID_PREVIEW_START+5)
+#define SID_PREVIEW_ZOOMOUT (SID_PREVIEW_START+6)
+#define SID_PREVIEW_END (SID_PREVIEW_START+20)
+
+//aus sfx: #define SID_KEYFUNC_START (SID_PREVIEW_END+5)
+#define SID_CURSORDOWN_SEL (SID_KEYFUNC_START + 0)
+#define SID_CURSORUP_SEL (SID_KEYFUNC_START + 1)
+#define SID_CURSORLEFT_SEL (SID_KEYFUNC_START + 2)
+#define SID_CURSORRIGHT_SEL (SID_KEYFUNC_START + 3)
+#define SID_CURSORPAGEDOWN_SEL (SID_KEYFUNC_START + 4)
+#define SID_CURSORPAGEUP_SEL (SID_KEYFUNC_START + 5)
+
+#define SID_CURSORPAGELEFT_ (SID_KEYFUNC_START + 6)
+#define SID_CURSORPAGELEFT_SEL (SID_KEYFUNC_START + 7)
+#define SID_CURSORPAGERIGHT_ (SID_KEYFUNC_START + 8)
+#define SID_CURSORPAGERIGHT_SEL (SID_KEYFUNC_START + 9)
+
+#define SID_CURSORTOPOFFILE_SEL (SID_KEYFUNC_START + 10)
+#define SID_CURSORENDOFFILE_SEL (SID_KEYFUNC_START + 11)
+#define SID_CURSORHOME_SEL (SID_KEYFUNC_START + 12)
+#define SID_CURSOREND_SEL (SID_KEYFUNC_START + 13)
+#define SID_CURSORBLKUP (SID_KEYFUNC_START + 14)
+#define SID_CURSORBLKDOWN (SID_KEYFUNC_START + 15)
+#define SID_CURSORBLKLEFT (SID_KEYFUNC_START + 16)
+#define SID_CURSORBLKRIGHT (SID_KEYFUNC_START + 17)
+#define SID_CURSORBLKUP_SEL (SID_KEYFUNC_START + 18)
+#define SID_CURSORBLKDOWN_SEL (SID_KEYFUNC_START + 19)
+#define SID_CURSORBLKLEFT_SEL (SID_KEYFUNC_START + 20)
+#define SID_CURSORBLKRIGHT_SEL (SID_KEYFUNC_START + 21)
+
+#define SID_NEXT_TABLE (SID_KEYFUNC_START + 22)
+#define SID_PREV_TABLE (SID_KEYFUNC_START + 23)
+
+#define SID_NEXT_UNPROTECT (SID_KEYFUNC_START + 24)
+#define SID_PREV_UNPROTECT (SID_KEYFUNC_START + 25)
+
+#define SID_SELECT_COL (SID_KEYFUNC_START + 26)
+#define SID_SELECT_ROW (SID_KEYFUNC_START + 27)
+#define SID_SELECT_NONE (SID_KEYFUNC_START + 28)
+#define SID_ALIGNCURSOR (SID_KEYFUNC_START + 29)
+#define SID_MARKDATAAREA (SID_KEYFUNC_START + 30)
+#define SID_SETINPUTMODE (SID_KEYFUNC_START + 31)
+#define SID_DELETE_CONTENTS (SID_KEYFUNC_START + 32)
+
+#define SID_MARKAREA (SID_KEYFUNC_START + 33)
+
+#define SID_AUTOFILL (SID_KEYFUNC_START + 34)
+#define FID_FILL_AUTO (SID_KEYFUNC_START + 35)
+#define SID_CANCEL (SID_KEYFUNC_START + 36)
+
+#define SID_CURSORENTERUP (SID_KEYFUNC_START + 37)
+#define SID_CURSORENTERDOWN (SID_KEYFUNC_START + 38)
+
+#define SID_KEYFUNC_END (SID_KEYFUNC_START + 50)
+
+#define SID_NEW_SLOTS (SID_KEYFUNC_END)
+#define SID_NEW_SLOTS_END (SID_NEW_SLOTS+100)
+
+#define SID_NEW_TABLENAME (SID_NEW_SLOTS+1)
+#define SID_COL_START (SID_NEW_SLOTS+2)
+#define SID_ROW_START (SID_NEW_SLOTS+3)
+#define SID_COL_END (SID_NEW_SLOTS+4)
+#define SID_ROW_END (SID_NEW_SLOTS+5)
+#define SID_KEEP_MARK (SID_NEW_SLOTS+6)
+#define SID_FILL_DIR (SID_NEW_SLOTS+7)
+#define SID_FILL_COUNT (SID_NEW_SLOTS+8)
+#define SID_WITH_UNDO (SID_NEW_SLOTS+9)
+//aus sfx: #define SID_ATTR_SECIALCHAR (SID_NEW_SLOTS+10)
+#define SID_ATTR_ROWHEADERS (SID_NEW_SLOTS+11)
+#define SID_ATTR_COLHEADERS (SID_NEW_SLOTS+12)
+
+#define SID_SC_CELLS (SID_NEW_SLOTS+13)
+#define SID_SC_RANGE (SID_NEW_SLOTS+14)
+#define SID_SC_SELECTION (SID_NEW_SLOTS+15)
+#define SID_SC_CELLTEXT (SID_NEW_SLOTS+16)
+
+#define SID_SC_NAME_TITLE (SID_NEW_SLOTS+17)
+
+#define SID_SC_ACTIVECELL (SID_NEW_SLOTS+18)
+#define SID_SC_ACTIVETAB (SID_NEW_SLOTS+19)
+#define SID_RANGE_ROW (SID_NEW_SLOTS+20)
+#define SID_RANGE_COL (SID_NEW_SLOTS+21)
+#define SID_RANGE_TABLE (SID_NEW_SLOTS+22)
+#define SID_RANGE_VALUE (SID_NEW_SLOTS+23)
+#define SID_RANGE_FORMULA (SID_NEW_SLOTS+24)
+#define SID_RANGE_TEXT (SID_NEW_SLOTS+25)
+#define SID_RANGE_TEXTVALUE (SID_NEW_SLOTS+26)
+#define SID_TABLE_ACTIVATE (SID_NEW_SLOTS+27)
+#define SID_TABLES_GET (SID_NEW_SLOTS+28)
+#define SID_PROP_INTERIOR (SID_NEW_SLOTS+29)
+#define SID_PROP_FONT (SID_NEW_SLOTS+30)
+
+#define SID_DEFINE_PRINTAREA (SID_NEW_SLOTS+31)
+#define SID_DELETE_PRINTAREA (SID_NEW_SLOTS+32)
+#define SID_CHANGE_PRINTAREA (SID_NEW_SLOTS+33)
+#define SID_OPENDLG_EDIT_PRINTAREA (SID_NEW_SLOTS+34)
+
+#define SID_OLE_OBJECT (SID_NEW_SLOTS+35)
+#define SID_OLE_ACTIVATE (SID_NEW_SLOTS+36)
+#define SID_OLE_DEACTIVATE (SID_NEW_SLOTS+37)
+
+#define SID_TOGGLE_REL (SID_NEW_SLOTS+38)
+#define SID_DATA_SELECT (SID_NEW_SLOTS+39)
+
+// Suchen & Ersetzen
+#define FID_SEARCH (SID_NEW_SLOTS+40)
+#define FID_REPEAT_SEARCH (SID_NEW_SLOTS+41)
+#define FID_REPLACE (SID_NEW_SLOTS+42)
+#define FID_SEARCH_ALL (SID_NEW_SLOTS+43)
+#define FID_REPLACE_ALL (SID_NEW_SLOTS+44)
+#define FID_SEARCH_COUNT (SID_NEW_SLOTS+45)
+
+#define SID_SC_SETTEXT (SID_NEW_SLOTS+46)
+#define SID_RANGE_ADDRESS (SID_NEW_SLOTS+47)
+#define SID_RANGE_OFFSET (SID_NEW_SLOTS+48)
+#define SID_NUMBER_FORMAT (SID_NEW_SLOTS+49)
+
+#define SID_OLE_SELECT (SID_NEW_SLOTS+50)
+#define SID_SC_ACTIVEOBJECT (SID_NEW_SLOTS+51)
+
+#define SID_RANGE_NOTETEXT (SID_NEW_SLOTS+52)
+#define FID_INSERT_FILE (SID_NEW_SLOTS+53)
+
+#define FID_VALIDATION (SID_NEW_SLOTS+54)
+
+// Slots fuer Toolbox Controller in der Werkzeugleiste
+#define SID_TBXCTL_INSERT (SID_NEW_SLOTS+55)
+#define SID_TBXCTL_INSCELLS (SID_NEW_SLOTS+56)
+#define SID_TBXCTL_INSOBJ (SID_NEW_SLOTS+57)
+
+#define SID_DEFINE_COLROWNAMERANGES (SID_NEW_SLOTS+58)
+
+#define FID_NOTE_VISIBLE (SID_NEW_SLOTS+59)
+
+// Items fuer Gueltigkeit
+#define FID_VALID_MODE (SID_NEW_SLOTS+60)
+#define FID_VALID_CONDMODE (SID_NEW_SLOTS+61)
+#define FID_VALID_VALUE1 (SID_NEW_SLOTS+62)
+#define FID_VALID_VALUE2 (SID_NEW_SLOTS+63)
+#define FID_VALID_BLANK (SID_NEW_SLOTS+64)
+#define FID_VALID_SHOWHELP (SID_NEW_SLOTS+65)
+#define FID_VALID_HELPTITLE (SID_NEW_SLOTS+66)
+#define FID_VALID_HELPTEXT (SID_NEW_SLOTS+67)
+#define FID_VALID_SHOWERR (SID_NEW_SLOTS+68)
+#define FID_VALID_ERRSTYLE (SID_NEW_SLOTS+69)
+#define FID_VALID_ERRTITLE (SID_NEW_SLOTS+70)
+#define FID_VALID_ERRTEXT (SID_NEW_SLOTS+71)
+
+#define SID_REFRESH_DBAREA (SID_NEW_SLOTS+72)
+#define SID_RANGE_REGION (SID_NEW_SLOTS+73)
+
+#define FID_FOCUS_POSWND (SID_NEW_SLOTS+74)
+
+// einzelne Slots fuer verschiedene Unterstreich-Arten (Popup-Menu)
+#define SID_ULINE_VAL_NONE (SID_NEW_SLOTS+75)
+#define SID_ULINE_VAL_SINGLE (SID_NEW_SLOTS+76)
+#define SID_ULINE_VAL_DOUBLE (SID_NEW_SLOTS+77)
+#define SID_ULINE_VAL_DOTTED (SID_NEW_SLOTS+78)
+
+#define FID_DEL_MANUALBREAKS (SID_NEW_SLOTS+79)
+#define SID_ADD_PRINTAREA (SID_NEW_SLOTS+80)
+#define FID_ADJUST_PRINTZOOM (SID_NEW_SLOTS+81)
+#define FID_RESET_PRINTZOOM (SID_NEW_SLOTS+82)
+
+#define SID_TABLES_COUNT (SID_NEW_SLOTS+83)
+#define SID_ACTIVE_OBJ_NAME (SID_NEW_SLOTS+84)
+#define SID_OBJECT_LEFT (SID_NEW_SLOTS+85)
+#define SID_OBJECT_TOP (SID_NEW_SLOTS+86)
+#define SID_OBJECT_WIDTH (SID_NEW_SLOTS+87)
+#define SID_OBJECT_HEIGHT (SID_NEW_SLOTS+88)
+
+#define SID_PIVOT_CREATE (SID_NEW_SLOTS+89)
+#define SID_PIVOT_FIELDS (SID_NEW_SLOTS+90)
+#define SID_PFIELD_NAME (SID_NEW_SLOTS+91)
+#define SID_PFIELD_ORIENTATION (SID_NEW_SLOTS+92)
+#define SID_PFIELD_FUNCTION (SID_NEW_SLOTS+93)
+#define SID_PIVOT_GET (SID_NEW_SLOTS+94)
+
+#define SID_DELETE_SCENARIO (SID_NEW_SLOTS+95)
+#define SID_EDIT_SCENARIO (SID_NEW_SLOTS+96)
+
+#define SID_GET_CLPBRD_FORMAT_COUNT (SID_NEW_SLOTS+97)
+#define SID_GET_CLPBRD_FORMAT_BY_IDX (SID_NEW_SLOTS+98)
+#define SID_GET_CLPBRD_FORMAT_NAME (SID_NEW_SLOTS+99)
+
+// idl Parameter ---------------------------------------------------------
+
+//aus sfx: #define FN_PARAM_1 (SC_PARAM_START)
+//aus sfx: #define FN_PARAM_2 (SC_PARAM_START+1)
+//aus sfx: #define FN_PARAM_3 (SC_PARAM_START+2)
+//aus sfx: #define FN_PARAM_4 (SC_PARAM_START+3)
+//aus sfx: #define FN_PARAM_5 (SC_PARAM_START+4)
+//aus sfx: #define FN_PARAM_6 (SC_PARAM_START+5)
+//aus sfx: #define FN_PARAM_7 (SC_PARAM_START+6)
+//aus sfx: #define FN_PARAM_8 (SC_PARAM_START+7)
+#define FN_PARAM_9 (FN_PARAM_8+1)
+
+#define SID_SORT_BYROW (SC_PARAM_START)
+#define SID_SORT_HASHEADER (SC_PARAM_START+1)
+#define SID_SORT_CASESENS (SC_PARAM_START+2)
+#define SID_SORT_ATTRIBS (SC_PARAM_START+3)
+#define SID_SORT_USERDEF (SC_PARAM_START+4)
+
+// Resourcen -------------------------------------------------------------
+
+#define RID_OBJECTBAR_APP (SC_RESOURCE_START)
+#define RID_OBJECTBAR_FORMAT (SC_RESOURCE_START+1)
+#define RID_OBJECTBAR_INPUT (SC_RESOURCE_START+2)
+#define RID_POPUP_CELLS (SC_RESOURCE_START+3)
+#define RID_POPUP_DRAW (SC_RESOURCE_START+4)
+#define RID_TEXT_TOOLBOX (SC_RESOURCE_START+5)
+#define RID_OBJECTBAR_PREVIEW (SC_RESOURCE_START+6)
+#define RID_POPUP_PREVIEW (SC_RESOURCE_START+7)
+#define RID_POPUP_OLE (SC_RESOURCE_START+8)
+#define RID_POPUP_CHART (SC_RESOURCE_START+9)
+//#define RID_ANCHORBITMAP (SC_RESOURCE_START+10)
+//#define RID_GRAYANCHORBITMAP (SC_RESOURCE_START+11)
+#define RID_OUTLINEBITMAPS (SC_RESOURCE_START+12)
+#define RID_DRAW_WIN (SC_RESOURCE_START+13)
+#define RID_CNTRLR_WIN (SC_RESOURCE_START+14)
+#define RID_GLOBSTR (SC_RESOURCE_START+15)
+#define RID_OBJECTMENU_CELLS (SC_RESOURCE_START+17)
+#define RID_OBJECTMENU_DRAW (SC_RESOURCE_START+18)
+#define RID_ALIGNMENT_WIN (SC_RESOURCE_START+19)
+#define RID_SCFUNCTIONS (SC_RESOURCE_START+20)
+#define RID_POPUP_PIVOT (SC_RESOURCE_START+21)
+#define RID_IMGLIST_INPUTWIN (SC_RESOURCE_START+22)
+#define RID_ERRHDLSC (SC_RESOURCE_START+23)
+#define RID_POPUP_GRAPHIC (SC_RESOURCE_START+24)
+#define RID_SCTEAMDLGBMP1 (SC_RESOURCE_START+25)
+#define RID_SCTEAMDLGBMP2 (SC_RESOURCE_START+26)
+#define RID_SCTEAMDLGBMP3 (SC_RESOURCE_START+27)
+#define RID_OBJECTMENU_DRAWTEXT (SC_RESOURCE_START+28)
+#define RID_POPUP_DRAWTEXT (SC_RESOURCE_START+29)
+#define RID_MN_FORMAT_ALGN (SC_RESOURCE_START+30)
+#define RID_MN_FORMAT_STYLE (SC_RESOURCE_START+31)
+#define RID_MN_FORMAT_LINESPACE (SC_RESOURCE_START+32)
+#define RID_POPUP_EDIT (SC_RESOURCE_START+33)
+#define RID_POPUP_AUDIT (SC_RESOURCE_START+34)
+#define RID_OBJECTBAR_TOOLS (SC_RESOURCE_START+35)
+#define RID_SC_FUNCTION_NAMES (SC_RESOURCE_START+36)
+#define RID_SC_FUNCTION_NAMES_ENGLISH (SC_RESOURCE_START+37)
+#define RID_TBXCTL_INSERT (SC_RESOURCE_START+38)
+#define RID_TBXCTL_INSCELLS (SC_RESOURCE_START+39)
+#define RID_TBXCTL_INSOBJ (SC_RESOURCE_START+40)
+#define RID_BMP_REFBTN1 (SC_RESOURCE_START+41)
+#define RID_BMP_REFBTN2 (SC_RESOURCE_START+42)
+#define RID_SC_FUNCTION_DESCRIPTIONS1 (SC_RESOURCE_START+43)
+#define RID_SC_FUNCTION_DESCRIPTIONS2 (SC_RESOURCE_START+44)
+#define RID_POPUP_CONTROL (SC_RESOURCE_START+45)
+#define RID_POPUP_PAGEBREAK (SC_RESOURCE_START+46)
+#define RID_OBJECTBAR_DRAWFORM (SC_RESOURCE_START+47)
+#define RID_POPUP_DRAWFORM (SC_RESOURCE_START+48)
+#define RID_OBJECTMENU_DRAWFORM (SC_RESOURCE_START+49)
+#define RID_SC_ADDIN_ROT13 (SC_RESOURCE_START+50)
+#define RID_SC_ADDIN_DFA (SC_RESOURCE_START+51)
+#define RID_IMAGELIST_NAVCONT (SC_RESOURCE_START+52)
+
+
+#define STR_START (SC_RESOURCE_START+100)
+#define STR_ROWHEIGHT (STR_START)
+#define STR_ROWHEIGHT_TITLE (STR_START + 1)
+#define STR_OPT_ROWHEIGHT (STR_START + 2)
+#define STR_OPT_ROWHEIGHT_TITLE (STR_START + 3)
+#define STR_COLWIDTH (STR_START + 4)
+#define STR_COLWIDTH_TITLE (STR_START + 5)
+#define STR_OPT_COLWIDTH (STR_START + 6)
+#define STR_OPT_COLWIDTH_TITLE (STR_START + 7)
+#define SCSTR_UNDEFINED (STR_START + 8)
+#define SCSTR_NONAME (STR_START + 9)
+#define SCSTR_NONE (STR_START + 10)
+#define SCSTR_EMPTY (STR_START + 11)
+#define SCSTR_NOTEMPTY (STR_START + 12)
+#define SCSTR_COLUMN (STR_START + 13)
+#define SCSTR_ROW (STR_START + 14)
+#define SCSTR_NEW (STR_START + 15)
+#define SCSTR_ADD (STR_START + 16)
+#define SCSTR_REMOVE (STR_START + 17)
+#define SCSTR_CANCEL (STR_START + 18)
+#define SCSTR_MODIFY (STR_START + 19)
+#define SCSTR_SHOWTABLE (STR_START + 20)
+#define SCSTR_HIDDENTABLES (STR_START + 21)
+#define SCSTR_SELECTDB (STR_START + 22)
+#define SCSTR_AREAS (STR_START + 23)
+#define SCSTR_TABLE (STR_START + 24)
+#define SCSTR_NAME (STR_START + 25)
+#define SCSTR_INSTABLE (STR_START + 26)
+#define SCSTR_APDTABLE (STR_START + 27)
+#define SCSTR_RENAMETAB (STR_START + 28)
+#define STR_INSERTGRAPHIC (STR_START + 29)
+//#define STR_BASIC_IDE (STR_START + 30)
+#define SCSTR_APPLICATION (STR_START + 31)
+#define SCSTR_DOCSHELL (STR_START + 32)
+#define SCSTR_TABVIEWSHELL (STR_START + 33)
+#define SCSTR_EDITSHELL (STR_START + 34)
+#define SCSTR_DRAWSHELL (STR_START + 35)
+#define SCSTR_DRAWTEXTSHELL (STR_START + 36)
+#define SCSTR_NEWTABLE (STR_START + 37)
+#define SCSTR_PREVIEWSHELL (STR_START + 38)
+
+#define SCSTR_PROTECTDOC (STR_START + 39)
+#define SCSTR_UNPROTECTDOC (STR_START + 40)
+#define SCSTR_PROTECTTAB (STR_START + 41)
+#define SCSTR_UNPROTECTTAB (STR_START + 42)
+#define SCSTR_PASSWORD (STR_START + 43)
+#define SCSTR_PASSWORDOPT (STR_START + 44)
+#define SCSTR_WRONGPASSWORD (STR_START + 45)
+
+#define SCSTR_PIVOTSHELL (STR_START + 46)
+#define SCSTR_END (STR_START + 47)
+#define SCSTR_STAT_PRINT (STR_START + 48)
+
+#define SCSTR_UNKNOWN (STR_START + 49)
+#define SCSTR_CHAR_ATTRS (STR_START + 50)
+#define SCSTR_ALL (STR_START + 51)
+#define SCSTR_STDFILTER (STR_START + 52)
+
+// Cfg-Item-Namen
+#define SCSTR_CFG_APP (STR_START + 53)
+#define SCSTR_CFG_DOC (STR_START + 54)
+#define SCSTR_CFG_VIEW (STR_START + 55)
+#define SCSTR_CFG_SPELLCHECK (STR_START + 56)
+#define SCSTR_CFG_PRINT (STR_START + 57)
+
+#define SCSTR_AUDITSHELL (STR_START + 58)
+
+#define SCSTR_CHARSET_USER (STR_START + 59)
+#define SCSTR_COLUMN_USER (STR_START + 60)
+#define SCSTR_FIELDSEP (STR_START + 61)
+#define SCSTR_TEXTSEP (STR_START + 62)
+
+#define SCSTR_30_APPLICATION (STR_START + 63)
+#define SCSTR_30_LONG_DOCNAME (STR_START + 64)
+
+#define SCSTR_CFG_INPUT (STR_START + 65)
+
+#define SCSTR_TOP10FILTER (STR_START + 66)
+
+#define SCSTR_CFG_NAVIPI (STR_START + 67)
+
+#define SCSTR_40_APPLICATION (STR_START + 68)
+#define SCSTR_40_LONG_DOCNAME (STR_START + 69)
+
+#define SCSTR_DRAWFORMSHELL (STR_START + 70)
+#define SCSTR_CELLSHELL (STR_START + 71)
+#define SCSTR_FORMATSHELL (STR_START + 72)
+#define SCSTR_OLEOBJECTSHELL (STR_START + 73)
+#define SCSTR_CHARTSHELL (STR_START + 74)
+#define SCSTR_GRAPHICSHELL (STR_START + 75)
+#define SCSTR_PAGEBREAKSHELL (STR_START + 76)
+
+#define SCSTR_GRFILTER_OPENERROR (STR_START + 77)
+#define SCSTR_GRFILTER_IOERROR (STR_START + 78)
+#define SCSTR_GRFILTER_FORMATERROR (STR_START + 79)
+#define SCSTR_GRFILTER_VERSIONERROR (STR_START + 80)
+#define SCSTR_GRFILTER_FILTERERROR (STR_START + 81)
+#define SCSTR_GRFILTER_TOOBIG (STR_START + 82)
+
+// Items
+
+#define SCSTR_HOR_JUSTIFY_LEFT (STR_START + 100)
+#define SCSTR_HOR_JUSTIFY_CENTER (STR_START + 101)
+#define SCSTR_HOR_JUSTIFY_RIGHT (STR_START + 102)
+#define SCSTR_HOR_JUSTIFY_BLOCK (STR_START + 103)
+#define SCSTR_HOR_JUSTIFY_REPEAT (STR_START + 104)
+#define SCSTR_HOR_JUSTIFY_STANDARD (STR_START + 105)
+#define SCSTR_VER_JUSTIFY_TOP (STR_START + 106)
+#define SCSTR_VER_JUSTIFY_CENTER (STR_START + 107)
+#define SCSTR_VER_JUSTIFY_BOTTOM (STR_START + 108)
+#define SCSTR_VER_JUSTIFY_STANDARD (STR_START + 109)
+#define SCSTR_ORIENTATION_TOPBOTTOM (STR_START + 110)
+#define SCSTR_ORIENTATION_BOTTOMTOP (STR_START + 111)
+#define SCSTR_ORIENTATION_STANDARD (STR_START + 112)
+
+#define SCSTR_CLIP_STRING (STR_START + 200)
+#define SCSTR_CLIP_RTF (STR_START + 201)
+#define SCSTR_CLIP_DDE (STR_START + 202)
+#define SCSTR_CLIP_DIF (STR_START + 203)
+
+#define SCSTR_HUMAN_SCDOC_NAME (STR_START + 210)
+#define SCSTR_SHORT_SCDOC_NAME (STR_START + 211)
+#define SCSTR_LONG_SCDOC_NAME (STR_START + 212)
+
+#define SCSTR_CLPBRD_CLEAR (STR_START + 213)
+
+#define SCSTR_FORMULA_AUTOCORRECTION (STR_START + 214)
+
+// Navigator - in der Reihenfolge wie SC_CONTENT_...
+#define SCSTR_CONTENT_ROOT (STR_START + 250)
+#define SCSTR_CONTENT_TABLE (STR_START + 251)
+#define SCSTR_CONTENT_RANGENAME (STR_START + 252)
+#define SCSTR_CONTENT_DBAREA (STR_START + 253)
+#define SCSTR_CONTENT_GRAPHIC (STR_START + 254)
+#define SCSTR_CONTENT_OLEOBJECT (STR_START + 255)
+#define SCSTR_CONTENT_NOTE (STR_START + 256)
+#define SCSTR_CONTENT_AREALINK (STR_START + 257)
+// hier ein wenig Platz fuer Erweiterungen
+
+// Eingabezeile, Quickhelp-Strings (HelpText jetzt per HelpId aus Hilfe)
+#define SCSTR_QHELP_INPUTWND (STR_START + 307)
+#define SCSTR_QHELP_POSWND (STR_START + 308)
+#define SCSTR_QHELP_BTNCALC (STR_START + 309)
+#define SCSTR_QHELP_BTNOK (STR_START + 310)
+#define SCSTR_QHELP_BTNCANCEL (STR_START + 311)
+#define SCSTR_QHELP_BTNSUM (STR_START + 312)
+#define SCSTR_QHELP_BTNEQUAL (STR_START + 313)
+
+// Validator
+#define SCSTR_MINIMUM (STR_START + 314)
+#define SCSTR_MAXIMUM (STR_START + 315)
+#define SCSTR_VALUE (STR_START + 316)
+
+// Formulator
+#define SCSTR_FUDB (STR_START + 389)
+#define SCSTR_FUDATE (STR_START + 390)
+#define SCSTR_FUFIN (STR_START + 391)
+#define SCSTR_FUINFO (STR_START + 392)
+#define SCSTR_FULOG (STR_START + 393)
+#define SCSTR_FUMATHS (STR_START + 394)
+#define SCSTR_FUSTAT (STR_START + 395)
+#define SCSTR_FUTAB (STR_START + 396)
+#define SCSTR_FUTEXT (STR_START + 397)
+//
+#define SCSTR_COMPILER_STRINGS (STR_START + 398)
+#define SCSTR_FILTER_STRINGS (STR_START + 399)
+#define SCSTR_COMPILER_INTL_STR (STR_START + 400)
+
+#define STR_END (STR_START + 401)
+
+#define BMP_START (STR_END)
+// Navigator
+#define RID_BMP_EXPAND (BMP_START)
+#define RID_BMP_COLLAPSE (BMP_START + 1)
+#define RID_IMG_DROP_URL (BMP_START + 2)
+#define RID_IMG_DROP_LINK (BMP_START + 3)
+#define RID_IMG_DROP_COPY (BMP_START + 4)
+
+#define RID_SCPTR_PIVOTCOL (BMP_START + 81)
+#define RID_SCPTR_PIVOTROW (BMP_START + 82)
+#define RID_SCPTR_DETECTIVE (BMP_START + 83)
+#define RID_SCPTR_CHART (BMP_START + 84)
+
+#define RID_SCICN_DOCUMENT (BMP_START + 95)
+#define RID_SCICN_TEMPLATE (BMP_START + 96)
+#define RID_SCICN_SC10DOC (BMP_START + 97)
+
+#define BMP_END (BMP_START + 100)
+
+#define SC_DIALOGS_START (BMP_END)
+#define RID_SCDLG_ATTR (SC_DIALOGS_START)
+#define RID_SCPAGE_NUMBER (SC_DIALOGS_START + 1)
+#define RID_SCPAGE_ALIGNMENT (SC_DIALOGS_START + 2)
+#define RID_SCPAGE_PROTECTION (SC_DIALOGS_START + 3)
+#define RID_SCDLG_SORT (SC_DIALOGS_START + 5)
+#define RID_SCPAGE_SORT_FIELDS (SC_DIALOGS_START + 6)
+#define RID_SCPAGE_SORT_OPTIONS (SC_DIALOGS_START + 7)
+#define RID_SCDLG_FILTER (SC_DIALOGS_START + 8)
+#define RID_SCDLG_SPEC_FILTER (SC_DIALOGS_START + 9)
+#define RID_SCMISCDLGS (SC_DIALOGS_START + 10)
+#define RID_SCDLG_DELCELL (SC_DIALOGS_START + 11)
+#define RID_SCDLG_INSCELL (SC_DIALOGS_START + 12)
+#define RID_SCDLG_DELCONT (SC_DIALOGS_START + 13)
+#define RID_SCDLG_INSCONT (SC_DIALOGS_START + 14)
+#define RID_SCDLG_MOVETAB (SC_DIALOGS_START + 15)
+#define RID_SCDLG_STRINPUT (SC_DIALOGS_START + 16)
+#define RID_SCDLG_MTRINPUT (SC_DIALOGS_START + 17)
+#define RID_SCDLG_SELENTRY (SC_DIALOGS_START + 18)
+#define RID_SCDLG_FILLSERIES (SC_DIALOGS_START + 19)
+#define RID_SCDLG_AUTOFORMAT (SC_DIALOGS_START + 20)
+#define RID_SCDLG_GROUP (SC_DIALOGS_START + 21)
+#define RID_SCDLG_NAMES (SC_DIALOGS_START + 22)
+#define RID_SCDLG_DBNAMES (SC_DIALOGS_START + 23)
+#define RID_SCDLG_PRINTOPTIONS (SC_DIALOGS_START + 24)
+#define RID_SCPAGE_PRINTOPTIONS (SC_DIALOGS_START + 25)
+#define RID_SCDLG_SOLVER (SC_DIALOGS_START + 26)
+#define RID_SCDLG_SUBTOTALS (SC_DIALOGS_START + 27)
+#define RID_SUBTBASE (SC_DIALOGS_START + 28)
+#define RID_SCPAGE_SUBT_OPTIONS (SC_DIALOGS_START + 29)
+#define RID_SCDLG_OPTIONS (SC_DIALOGS_START + 30)
+#define RID_SCPAGE_USERLISTS (SC_DIALOGS_START + 31)
+#define RID_SCDLG_PIVOTFILTER (SC_DIALOGS_START + 33)
+#define RID_SCDLG_PIVOT_LAYOUT (SC_DIALOGS_START + 34)
+#define RID_SCDLG_CONSOLIDATE (SC_DIALOGS_START + 35)
+#define RID_SCTBXWND_SCENARIO (SC_DIALOGS_START + 36)
+#define RID_SCDLG_FORMULATOR (SC_DIALOGS_START + 37)
+#define RID_SCDLG_PIVOTSUBT (SC_DIALOGS_START + 38)
+#define RID_SCDLG_NEWSCENARIO (SC_DIALOGS_START + 39)
+#define RID_SCDLG_FORMULA (SC_DIALOGS_START + 40)
+#define RID_SCDLG_ARGUMENTS (SC_DIALOGS_START + 41)
+#define RID_SCDLG_INSERT_TABLE (SC_DIALOGS_START + 42)
+#define RID_SCPAGE_TABLE (SC_DIALOGS_START + 43)
+#define RID_SCPAGE_AREAS (SC_DIALOGS_START + 44)
+#define RID_SCDLG_STYLES_START (SC_DIALOGS_START + 45)
+#define RID_SCDLG_STYLES_CHAR (SC_DIALOGS_START + 45)
+#define RID_SCDLG_STYLES_PAR (SC_DIALOGS_START + 46)
+#define RID_SCDLG_STYLES_FRAME (SC_DIALOGS_START + 47)
+#define RID_SCDLG_STYLES_PAGE (SC_DIALOGS_START + 48)
+#define RID_SCDLG_STYLES_END (SC_DIALOGS_START + 48)
+#define RID_HFBASE (SC_DIALOGS_START + 49)
+#define RID_SCDLG_HFEDIT (SC_DIALOGS_START + 50)
+#define RID_SCDLG_HFEDIT_ALL (SC_DIALOGS_START + 51)
+#define RID_SCDLG_HFED_HEADER (SC_DIALOGS_START + 52)
+#define RID_SCDLG_HFED_FOOTER (SC_DIALOGS_START + 53)
+#define RID_SCBTN_HFEDIT (SC_DIALOGS_START + 54)
+#define RID_SCPAGE_VIEW (SC_DIALOGS_START + 55)
+#define RID_SCPAGE_CALC (SC_DIALOGS_START + 56)
+#define RID_SCDLG_NAVIGATOR (SC_DIALOGS_START + 57)
+#define RID_SCDLG_TABOP (SC_DIALOGS_START + 58)
+#define RID_SCDLG_IMPORTOPT (SC_DIALOGS_START + 59)
+#define RID_POPUP_ROWHEADER (SC_DIALOGS_START + 60)
+#define RID_POPUP_COLHEADER (SC_DIALOGS_START + 61)
+#define RID_SCDLG_HFEDIT_SHDR (SC_DIALOGS_START + 62)
+#define RID_SCDLG_HFEDIT_SFTR (SC_DIALOGS_START + 63)
+#define RID_SCDLG_HFEDIT_LEFTHEADER (SC_DIALOGS_START + 64)
+#define RID_SCDLG_HFEDIT_RIGHTHEADER (SC_DIALOGS_START + 65)
+#define RID_SCDLG_HFEDIT_LEFTFOOTER (SC_DIALOGS_START + 66)
+#define RID_SCDLG_HFEDIT_RIGHTFOOTER (SC_DIALOGS_START + 67)
+#define RID_SCDLG_HFEDIT_HEADER (SC_DIALOGS_START + 68)
+#define RID_SCDLG_HFEDIT_FOOTER (SC_DIALOGS_START + 69)
+#define RID_SCPAGE_PRINT (SC_DIALOGS_START + 70)
+#define RID_SCDLG_COLORROW (SC_DIALOGS_START + 71)
+#define RID_SCDLG_NAMES_PASTE (SC_DIALOGS_START + 72)
+#define RID_SCDLG_NAMES_CREATE (SC_DIALOGS_START + 73)
+#define RID_SCDLG_NAMES_APPLY (SC_DIALOGS_START + 74) //NYI
+#define RID_SCDLG_TEAM (SC_DIALOGS_START + 75)
+
+#define RID_SCDLG_CHAR (SC_DIALOGS_START + 76)
+#define RID_SCDLG_PARAGRAPH (SC_DIALOGS_START + 77)
+#define RID_SCDLG_CHARTRANGE (SC_DIALOGS_START + 78)
+
+#define RID_SCPAGE_STAT (SC_DIALOGS_START + 79)
+#define RID_SCDLG_CHARTCOLROW (SC_DIALOGS_START + 80)
+#define RID_SCDLG_AREAS (SC_DIALOGS_START + 81)
+
+#define RID_SCDLG_EDITCHAR (SC_DIALOGS_START + 82)
+
+ // Popup fuer Statusbar-Controller
+#define RID_POPUP_SUMCTL (SC_DIALOGS_START + 83)
+#define RID_SUMCTL_SUM (SC_DIALOGS_START + 84)
+#define RID_SUMCTL_MIN (SC_DIALOGS_START + 85)
+#define RID_SUMCTL_MAX (SC_DIALOGS_START + 86)
+#define RID_SUMCTL_COUNT (SC_DIALOGS_START + 87)
+#define RID_SUMCTL_COUNT2 (SC_DIALOGS_START + 88)
+#define RID_SUMCTL_AVG (SC_DIALOGS_START + 89)
+#define RID_SUMCTL_NONE (SC_DIALOGS_START + 90)
+
+#define RID_SCDLG_ASCII (SC_DIALOGS_START + 91)
+
+ // Popup fuer Drop-Modus im Navigator
+#define RID_POPUP_DROPMODE (SC_DIALOGS_START + 92)
+#define RID_DROPMODE_URL (SC_DIALOGS_START + 93)
+#define RID_DROPMODE_LINK (SC_DIALOGS_START + 94)
+#define RID_DROPMODE_COPY (SC_DIALOGS_START + 95)
+#define RID_SCDLG_CONDFORMAT (SC_DIALOGS_START + 96)
+
+#define RID_SCPAGE_SUBT_GROUP1 (SC_DIALOGS_START + 97)
+#define RID_SCPAGE_SUBT_GROUP2 (SC_DIALOGS_START + 98)
+#define RID_SCPAGE_SUBT_GROUP3 (SC_DIALOGS_START + 99)
+
+#define RID_SCPAGE_HFED_HL (SC_DIALOGS_START + 100)
+#define RID_SCPAGE_HFED_HR (SC_DIALOGS_START + 101)
+#define RID_SCPAGE_HFED_FL (SC_DIALOGS_START + 102)
+#define RID_SCPAGE_HFED_FR (SC_DIALOGS_START + 103)
+
+// Ableitungen von RID_SCDLG_MTRINPUT
+#define RID_SCDLG_COL_MAN (SC_DIALOGS_START + 104)
+#define RID_SCDLG_COL_OPT (SC_DIALOGS_START + 105)
+#define RID_SCDLG_ROW_MAN (SC_DIALOGS_START + 106)
+#define RID_SCDLG_ROW_OPT (SC_DIALOGS_START + 107)
+
+// Ableitungen von RID_SCDLG_SELENTRY
+#define RID_SCDLG_SELECTDB (SC_DIALOGS_START + 108)
+#define RID_SCDLG_SHOW_TAB (SC_DIALOGS_START + 109)
+
+// Ableitungen von RID_SCDLG_GROUP
+#define RID_SCDLG_GRP_MAKE (SC_DIALOGS_START + 110)
+#define RID_SCDLG_GRP_KILL (SC_DIALOGS_START + 111)
+
+#define RID_SCDLG_COLROWNAMERANGES (SC_DIALOGS_START + 112)
+
+#define RID_SCPAGE_CONTENT (SC_DIALOGS_START + 113)
+#define RID_SCPAGE_LAYOUT (SC_DIALOGS_START + 114)
+#define RID_SCPAGE_INPUT (SC_DIALOGS_START + 115)
+
+#define RID_SCTAB_PARAMETER (SC_DIALOGS_START + 116)
+#define RID_SCTAB_FUNCTION (SC_DIALOGS_START + 117)
+#define RID_SCTAB_STRUCT (SC_DIALOGS_START + 118)
+
+#define RID_SCDLG_CHANGES (SC_DIALOGS_START + 119)
+
+#define RID_POPUP_NAVIPI_SCENARIO (SC_DIALOGS_START + 120)
+#define RID_NAVIPI_SCENARIO_DELETE (SC_DIALOGS_START + 121)
+#define RID_NAVIPI_SCENARIO_EDIT (SC_DIALOGS_START + 122)
+
+#define RID_SCDLG_HIGHLIGHT_CHANGES (SC_DIALOGS_START + 123)
+#define RID_SCPAGE_OPREDLINE (SC_DIALOGS_START + 124)
+
+#define RID_SCDLG_SIMPLEREF (SC_DIALOGS_START + 125)
+#define WID_SIMPLE_REF (SC_DIALOGS_START + 126)
+#define RID_POPUP_CHANGES (SC_DIALOGS_START + 127)
+#define RID_SCPAGE_OPTLOAD (SC_DIALOGS_START + 128)
+
+#define RID_SCDLG_DAPITYPE (SC_DIALOGS_START + 129)
+#define RID_SCDLG_DAPISERVICE (SC_DIALOGS_START + 130)
+#define RID_SCDLG_DAPIDATA (SC_DIALOGS_START + 131)
+
+#define SC_DIALOGS_END (SC_DIALOGS_START + 150)
+
+#ifndef STD_MASKCOLOR
+#define STD_MASKCOLOR Color { Red=0xC000; Green=0xC000; Blue=0xC000; }
+#endif
+
+
+#endif
+
+
diff --git a/sc/inc/scdll.hxx b/sc/inc/scdll.hxx
new file mode 100644
index 000000000000..391f2b83ba89
--- /dev/null
+++ b/sc/inc/scdll.hxx
@@ -0,0 +1,161 @@
+/*************************************************************************
+ *
+ * $RCSfile: scdll.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SCDLL_HXX
+#define SC_SCDLL_HXX
+
+class ResMgr;
+class SvFactory;
+class SotFactory;
+class StatusBar;
+class SfxMedium;
+class SfxFilter;
+
+#ifndef _SFXDEFS_HXX //autogen
+#include <sfx2/sfxdefs.hxx>
+#endif
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+#ifndef _SFX_OBJFAC_HXX
+#include <sfx2/docfac.hxx>
+#endif
+
+//-------------------------------------------------------------------------
+
+class ScDLL
+
+/* [Description]
+
+ This class is a wrapper for a Load-On-Demand-DLL. One instance
+ per SfxApplication will be created for the runtime of
+ SfxApplication-subclass::Main().
+
+ Remember: Do export this class! It is used by the application.
+*/
+
+{
+public:
+ // Ctor/Dtor must be linked to the application
+ ScDLL();
+ ~ScDLL();
+
+ // static-init/exit-code must be linked to the application
+ static void LibInit(); // called from SfxApplication-subclass::Init()
+ static void LibExit(); // called from SfxApplication-subclass::Exit()
+ static void PreExit(); // muss vor LibExit gerufen werden
+
+ // DLL-init/exit-code must be linked to the DLL only
+ static void Init(); // called directly after loading the DLL
+ static void Exit(); // called directly befor unloading the DLL
+
+
+ static void FillStatusBar(StatusBar &rBar);
+
+ static ULONG DetectFilter( SfxMedium& rMedium, const SfxFilter** ppFilter,
+ SfxFilterFlags nMust, SfxFilterFlags nDont );
+};
+
+//-------------------------------------------------------------------------
+
+#ifdef WNT
+typedef void ( __cdecl * ScSigCatchFunc )( int );
+#else
+typedef void ( * ScSigCatchFunc )( int );
+#endif
+typedef ScSigCatchFunc ( * ScLibSignalFunc )( int, ScSigCatchFunc );
+
+class ScModuleDummy: public SfxModule
+
+/* [Description]
+
+ This tricky class keeps pointers to the SvFactories while
+ the DLL isn`t loaded. A pointer to the one instance is available
+ through SXX_MOD() (shared-lib-app-data).
+*/
+
+{
+public:
+ // SvFactory name convention:
+ // 'p' + SfxObjectShell-subclass + 'Factory'
+ SotFactory* pScDocShellFactory;
+ ScLibSignalFunc pSignalFunc;
+
+ ScModuleDummy( ResMgr *pResMgr, BOOL bDummy, SfxObjectFactory* pFact )
+ : SfxModule(pResMgr, bDummy, pFact, NULL),
+ pScDocShellFactory(pFact), pSignalFunc(0)
+ {}
+
+ virtual SfxModule* Load();
+
+ ScLibSignalFunc GetSignalFunc() { return pSignalFunc; }
+
+ static SvGlobalName GetID(USHORT nFileFormat);
+ static USHORT HasID(const SvGlobalName& rName);
+};
+
+//-------------------------------------------------------------------------
+
+#define SC_DLL() ( *(ScModuleDummy**) GetAppData(SHL_CALC) )
+
+#endif
+
+
diff --git a/sc/inc/scerrors.hxx b/sc/inc/scerrors.hxx
new file mode 100644
index 000000000000..f4488d1ff98d
--- /dev/null
+++ b/sc/inc/scerrors.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: scerrors.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SCERRORS_HXX
+#define _SCERRORS_HXX
+
+#define SCERR_LAST 500
+
+#ifndef _ERRCODE_HXX //autogen
+#include <tools/errcode.hxx>
+#endif
+
+//------------------------------------------------------------------------
+// ERRORS
+//------------------------------------------------------------------------
+#define SCERR_IMPORT_CONNECT ( 1 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_CURSOR ( 2 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_OPEN ( 3 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_UNKNOWN ( 4 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_OUTOFMEM ( 5 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_UNKNOWN_WK ( 6 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_FORMAT ( 7 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_NI ( 8 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_UNKNOWN_BIFF ( 9 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_NI_BIFF ( 10 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_FILEPASSWD ( 11 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_INTERNAL ( 12 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCERR_IMPORT_8K_LIMIT ( 13 | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+
+#define SCERR_EXPORT_CONNECT ( 1 | ERRCODE_AREA_SC | ERRCODE_CLASS_WRITE )
+#define SCERR_EXPORT_CURSOR ( 2 | ERRCODE_AREA_SC | ERRCODE_CLASS_WRITE )
+#define SCERR_EXPORT_DATA ( 3 | ERRCODE_AREA_SC | ERRCODE_CLASS_WRITE )
+
+//------------------------------------------------------------------------
+// WARNINGS
+//------------------------------------------------------------------------
+#define SCWARN_EXPORT_ASCII ( 1 + SCERR_LAST | ERRCODE_WARNING_MASK | ERRCODE_AREA_SC | ERRCODE_CLASS_WRITE )
+#define SCWARN_IMPORT_RANGE_OVERFLOW ( 2 + SCERR_LAST | ERRCODE_WARNING_MASK | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCWARN_IMPORT_OPEN_FM3 ( 3 + SCERR_LAST | ERRCODE_WARNING_MASK | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCWARN_IMPORT_WRONG_FM3 ( 4 + SCERR_LAST | ERRCODE_WARNING_MASK | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCWARN_CORE_HARD_RECALC ( 5 + SCERR_LAST | ERRCODE_WARNING_MASK | ERRCODE_AREA_SC | ERRCODE_CLASS_GENERAL )
+#define SCWARN_EXPORT_MAXROW ( 6 + SCERR_LAST | ERRCODE_WARNING_MASK | ERRCODE_AREA_SC | ERRCODE_CLASS_WRITE )
+#define SCWARN_IMPORT_INFOLOST ( 7 + SCERR_LAST | ERRCODE_WARNING_MASK | ERRCODE_AREA_SC | ERRCODE_CLASS_READ )
+#define SCWARN_EXPORT_DATALOST ( 8 + SCERR_LAST | ERRCODE_WARNING_MASK | ERRCODE_AREA_SC | ERRCODE_CLASS_WRITE )
+
+#endif
+
diff --git a/sc/inc/scextopt.hxx b/sc/inc/scextopt.hxx
new file mode 100644
index 000000000000..3843b0a4059a
--- /dev/null
+++ b/sc/inc/scextopt.hxx
@@ -0,0 +1,286 @@
+/*************************************************************************
+ *
+ * $RCSfile: scextopt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SCEXTOPT_HXX
+#define _SCEXTOPT_HXX
+
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+#ifndef _LIST_HXX
+#include <tools/list.hxx>
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+
+
+class ColRowSettings;
+
+// ACHTUNG1: einzelne Einstellungen sollten stimmen
+// -> Absicherung nur ueber Assertions
+// ACHTUNG2: Plausibilitaet der Einstellungen untereinander ist nicht
+// gewaehrleistet
+
+struct ScExtTabOptions
+{
+ // Split -Info
+ UINT16 nTabNum;
+ UINT16 nSplitX; // horiz. Pos. in Twips, 0 = kein Split
+ UINT16 nSplitY; // vert. Pos. ~
+ UINT16 nLeftSplitCol; // linke sichtbare Col im rechten Teil
+ UINT16 nTopSplitRow; // obere sichtbare Row im unteren Teil
+ UINT16 nActPane; // 0: ur, 1: or, 2: ul, 3: ol
+
+ ScRange aLastSel; // letzte Selektion
+ BOOL bValidSel;
+ ScRange aDim; // original Excel-Groesse
+ BOOL bValidDim;
+
+ BOOL bFrozen; // = TRUE -> nSplitX / nSplitY Anzahl
+ // sichtbarer Col/Row links bzw. oben
+
+ inline ScExtTabOptions( void );
+ inline ScExtTabOptions( const ScRange& rLastSel );
+ inline ScExtTabOptions( const ScExtTabOptions& rCpy );
+ inline void operator =( const ScExtTabOptions& rCpy );
+
+ void SetSelection( const ScRange& rSelection );
+ void SetDimension( const ScRange& rDim );
+};
+
+
+
+
+class CodenameList : protected List
+{
+ // Code: colrowst.cxx
+private:
+protected:
+public:
+ inline CodenameList( void );
+ CodenameList( const CodenameList& );
+ virtual ~CodenameList();
+
+ inline void Append( const String& );
+
+ inline const String* First( void );
+ inline const String* Next( void );
+ inline const String* Act( void ) const;
+
+ List::Count;
+};
+
+
+
+
+class ScExtDocOptions
+{
+// Code: colrowst.cxx
+private:
+ friend ColRowSettings;
+ // Window -Info
+ ScExtTabOptions** ppExtTabOpts;
+
+ String* pCodenameWB;
+ CodenameList* pCodenames;
+public:
+ UINT32 nLinkCnt; // Zaehlt die Rekursionstufe beim Laden
+ // von externen Dokumenten
+ UINT16 nActTab; // aktuelle Tabelle
+ UINT16 nVisLeftCol; // linke Col des sichtbaren Tabellenteils
+ UINT16 nVisTopRow; // rechte Row des sichtbaren Tabellenteils
+ Color* pGridCol; // Farbe Grid und Row-/Col-Heading
+ UINT16 nZoom; // in %
+ // Cursor
+ UINT16 nCurCol; // aktuelle Cursor-Position
+ UINT16 nCurRow;
+ // -------------------------------------------------------------------
+ ScExtDocOptions( void );
+ ~ScExtDocOptions();
+
+ ScExtDocOptions& operator =( const ScExtDocOptions& rCpy );
+
+ void SetGridCol( BYTE nR, BYTE nG, BYTE nB );
+ void SetActTab( UINT16 nTab );
+ void SetVisCorner( UINT16 nCol, UINT16 nRow );
+ void SetCursor( UINT16 nCol, UINT16 nRow );
+ void SetZoom( UINT16 nZaehler, UINT16 nNenner );
+
+ void Add( const ColRowSettings& rCRS );
+
+ inline const ScExtTabOptions* GetExtTabOptions( const UINT16 nTabNum ) const;
+
+ inline const String* GetCodename( void ) const; // for Workbook globals
+ inline CodenameList* GetCodenames( void ); // for tables
+
+ void SetCodename( const String& ); // -> Workbook globals
+ void AddCodename( const String& ); // -> tables
+};
+
+
+
+
+inline CodenameList::CodenameList( void )
+{
+}
+
+
+inline void CodenameList::Append( const String& r )
+{
+ List::Insert( new String( r ), LIST_APPEND );
+}
+
+
+inline const String* CodenameList::First( void )
+{
+ return ( const String* ) List::First();
+}
+
+
+inline const String* CodenameList::Next( void )
+{
+ return ( const String* ) List::Next();
+}
+
+
+inline const String* CodenameList::Act( void ) const
+{
+ return ( const String* ) List::GetCurObject();
+}
+
+
+
+
+inline ScExtTabOptions::ScExtTabOptions( void )
+{
+ nSplitX = nSplitY = nLeftSplitCol = nTopSplitRow = nActPane = 0;
+ bFrozen = bValidSel = bValidDim = FALSE;
+}
+
+
+inline ScExtTabOptions::ScExtTabOptions( const ScRange& rLastSel ) : aLastSel( rLastSel )
+{
+ nTabNum = nSplitX = nSplitY = nLeftSplitCol = nTopSplitRow = nActPane = 0;
+ bFrozen = bValidDim = FALSE;
+ bValidSel = TRUE;
+}
+
+
+inline ScExtTabOptions::ScExtTabOptions( const ScExtTabOptions& rCpy )
+{
+ nTabNum = rCpy.nTabNum;
+ nSplitX = rCpy.nSplitX;
+ nSplitY = rCpy.nSplitY;
+ nLeftSplitCol = rCpy.nLeftSplitCol;
+ nTopSplitRow = rCpy.nTopSplitRow;
+ nActPane = rCpy.nActPane;
+ aLastSel = rCpy.aLastSel;
+ aDim = rCpy.aDim;
+ bFrozen = rCpy.bFrozen;
+ bValidSel = rCpy.bValidSel;
+ bValidDim = rCpy.bValidDim;
+}
+
+
+inline void ScExtTabOptions::operator =( const ScExtTabOptions& rCpy )
+{
+ nTabNum = rCpy.nTabNum;
+ nSplitX = rCpy.nSplitX;
+ nSplitY = rCpy.nSplitY;
+ nLeftSplitCol = rCpy.nLeftSplitCol;
+ nTopSplitRow = rCpy.nTopSplitRow;
+ nActPane = rCpy.nActPane;
+ aLastSel = rCpy.aLastSel;
+ aDim = rCpy.aDim;
+ bFrozen = rCpy.bFrozen;
+ bValidSel = rCpy.bValidSel;
+ bValidDim = rCpy.bValidDim;
+}
+
+
+
+
+inline const ScExtTabOptions* ScExtDocOptions::GetExtTabOptions( const UINT16 nTab ) const
+{
+ if( nTab <= MAXTAB )
+ return ppExtTabOpts[ nTab ];
+ else
+ return NULL;
+}
+
+
+inline const String* ScExtDocOptions::GetCodename( void ) const
+{
+ return pCodenameWB;
+}
+
+
+inline CodenameList* ScExtDocOptions::GetCodenames( void )
+{
+ return pCodenames;
+}
+
+
+#endif
+
diff --git a/sc/inc/scfuncs.hrc b/sc/inc/scfuncs.hrc
new file mode 100644
index 000000000000..1ce24809e5e7
--- /dev/null
+++ b/sc/inc/scfuncs.hrc
@@ -0,0 +1,348 @@
+/*************************************************************************
+ *
+ * $RCSfile: scfuncs.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc"
+
+#define ID_FUNCTION_GRP_DATABASE 1
+#define ID_FUNCTION_GRP_DATETIME 2
+#define ID_FUNCTION_GRP_FINANZ 3
+#define ID_FUNCTION_GRP_INFO 4
+#define ID_FUNCTION_GRP_LOGIC 5
+#define ID_FUNCTION_GRP_MATH 6
+#define ID_FUNCTION_GRP_MATRIX 7
+#define ID_FUNCTION_GRP_STATISTIC 8
+#define ID_FUNCTION_GRP_TABLE 9
+#define ID_FUNCTION_GRP_TEXT 10
+#define ID_FUNCTION_GRP_ADDINS 11
+
+#define ID_FUNCTION_OFFSET 90
+
+// ID zaehlt ab 1, Hilfe-IDs muessen aber bei HID_SC_FUNC_START anfangen
+#define HID_SC_FUNC_DUMMY (HID_SC_FUNC_START-ID_FUNCTION_OFFSET)
+
+#define HID_FUNC_DBANZAHL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+1)
+#define HID_FUNC_DBANZAHL2 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+2)
+#define HID_FUNC_DBMITTELWERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+3)
+#define HID_FUNC_DBAUSZUG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+4)
+#define HID_FUNC_DBMAX (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+5)
+#define HID_FUNC_DBMIN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+6)
+#define HID_FUNC_DBPRODUKT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+7)
+#define HID_FUNC_DBSTDABW (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+8)
+#define HID_FUNC_DBSTDABWN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+9)
+#define HID_FUNC_DBSUMME (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+10)
+#define HID_FUNC_DBVARIANZ (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+11)
+#define HID_FUNC_DBVARIANZEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATABASE*ID_FUNCTION_OFFSET)+12)
+
+#define HID_FUNC_DATUM (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+1)
+#define HID_FUNC_DATWERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+2)
+#define HID_FUNC_TAG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+3)
+#define HID_FUNC_TAGE360 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+4)
+#define HID_FUNC_STUNDE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+5)
+#define HID_FUNC_MINUTE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+6)
+#define HID_FUNC_MONAT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+7)
+#define HID_FUNC_JETZT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+8)
+#define HID_FUNC_SEKUNDE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+9)
+#define HID_FUNC_ZEIT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+10)
+#define HID_FUNC_ZEITWERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+11)
+#define HID_FUNC_HEUTE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+12)
+#define HID_FUNC_WOCHENTAG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+13)
+#define HID_FUNC_JAHR (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+14)
+#define HID_FUNC_TAGE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+15)
+#define HID_FUNC_KALENDERWOCHE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+16)
+#define HID_FUNC_OSTERSONNTAG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_DATETIME*ID_FUNCTION_OFFSET)+17)
+
+#define HID_FUNC_BW (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+1)
+#define HID_FUNC_ZW (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+2)
+#define HID_FUNC_ZZR (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+3)
+#define HID_FUNC_RMZ (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+4)
+#define HID_FUNC_ZINS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+5)
+#define HID_FUNC_ZINSZ (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+6)
+#define HID_FUNC_KAPZ (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+7)
+#define HID_FUNC_KUMKAPITAL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+8)
+#define HID_FUNC_KUMZINSZ (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+9)
+#define HID_FUNC_DIA (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+10)
+#define HID_FUNC_LIA (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+11)
+#define HID_FUNC_GDA (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+12)
+#define HID_FUNC_GDA2 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+13)
+#define HID_FUNC_VDB (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+14)
+#define HID_FUNC_EFFEKTIV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+15)
+#define HID_FUNC_NOMINAL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+16)
+#define HID_FUNC_NBW (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+17)
+#define HID_FUNC_IKV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+18)
+#define HID_FUNC_LAUFZEIT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+19)
+#define HID_FUNC_ZGZ (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_FINANZ*ID_FUNCTION_OFFSET)+20)
+
+#define HID_FUNC_ISTBEZUG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+1)
+#define HID_FUNC_ISTFEHL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+2)
+#define HID_FUNC_ISTFEHLER (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+3)
+#define HID_FUNC_ISTLEER (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+4)
+#define HID_FUNC_ISTLOG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+5)
+#define HID_FUNC_ISTNV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+6)
+#define HID_FUNC_ISTKTEXT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+7)
+#define HID_FUNC_ISTTEXT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+8)
+#define HID_FUNC_ISTZAHL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+9)
+#define HID_FUNC_ISTFORMEL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+10)
+#define HID_FUNC_N (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+11)
+#define HID_FUNC_NV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+12)
+#define HID_FUNC_TYP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+13)
+#define HID_FUNC_AKTUELL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+14)
+#define HID_FUNC_FORMEL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_INFO*ID_FUNCTION_OFFSET)+15)
+
+#define HID_FUNC_FALSCH (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_LOGIC*ID_FUNCTION_OFFSET)+1)
+#define HID_FUNC_NICHT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_LOGIC*ID_FUNCTION_OFFSET)+2)
+#define HID_FUNC_WAHR (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_LOGIC*ID_FUNCTION_OFFSET)+3)
+#define HID_FUNC_WENN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_LOGIC*ID_FUNCTION_OFFSET)+4)
+#define HID_FUNC_ODER (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_LOGIC*ID_FUNCTION_OFFSET)+5)
+#define HID_FUNC_UND (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_LOGIC*ID_FUNCTION_OFFSET)+6)
+
+#define HID_FUNC_ABS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+1)
+#define HID_FUNC_POTENZ (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+2)
+#define HID_FUNC_ANZAHLLEEREZELLEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+3)
+#define HID_FUNC_PI (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+4)
+#define HID_FUNC_SUMME (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+5)
+#define HID_FUNC_QUADRATESUMME (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+6)
+#define HID_FUNC_PRODUKT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+7)
+#define HID_FUNC_SUMMEWENN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+8)
+#define HID_FUNC_ZAEHLENWENN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+9)
+#define HID_FUNC_WURZEL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+10)
+#define HID_FUNC_ZUFALLSZAHL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+11)
+#define HID_FUNC_ISTGERADE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+12)
+#define HID_FUNC_ISTUNGERADE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+13)
+#define HID_FUNC_KOMBINATIONEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+14)
+#define HID_FUNC_KOMBINATIONEN2 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+15)
+#define HID_FUNC_ARCCOS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+16)
+#define HID_FUNC_ARCSIN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+17)
+#define HID_FUNC_ARCOSHYP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+18)
+#define HID_FUNC_ARSINHYP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+19)
+#define HID_FUNC_ARCCOT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+20)
+#define HID_FUNC_ARCTAN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+21)
+#define HID_FUNC_ARCOTHYP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+22)
+#define HID_FUNC_ARTANHYP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+23)
+#define HID_FUNC_COS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+24)
+#define HID_FUNC_SIN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+25)
+#define HID_FUNC_COT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+26)
+#define HID_FUNC_TAN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+27)
+#define HID_FUNC_COSHYP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+28)
+#define HID_FUNC_SINHYP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+29)
+#define HID_FUNC_COTHYP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+30)
+#define HID_FUNC_TANHYP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+31)
+#define HID_FUNC_ARCTAN2 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+32)
+#define HID_FUNC_DEG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+33)
+#define HID_FUNC_RAD (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+34)
+#define HID_FUNC_EXP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+35)
+#define HID_FUNC_LOG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+36)
+#define HID_FUNC_LN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+37)
+#define HID_FUNC_LOG10 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+38)
+#define HID_FUNC_FAKULTAET (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+39)
+#define HID_FUNC_REST (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+40)
+#define HID_FUNC_VORZEICHEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+41)
+#define HID_FUNC_TEILERGEBNIS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+42)
+#define HID_FUNC_GANZZAHL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+43)
+#define HID_FUNC_KUERZEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+44)
+#define HID_FUNC_RUNDEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+45)
+#define HID_FUNC_AUFRUNDEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+46)
+#define HID_FUNC_ABRUNDEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+47)
+#define HID_FUNC_GERADE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+48)
+#define HID_FUNC_UNGERADE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+49)
+#define HID_FUNC_OBERGRENZE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+50)
+#define HID_FUNC_UNTERGRENZE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+51)
+#define HID_FUNC_GGT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+52)
+#define HID_FUNC_KGV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+53)
+#define HID_FUNC_UMRECHNEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATH*ID_FUNCTION_OFFSET)+54)
+
+#define HID_FUNC_MTRANS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+1)
+#define HID_FUNC_MMULT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+2)
+#define HID_FUNC_MDET (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+3)
+#define HID_FUNC_MINV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+4)
+#define HID_FUNC_EINHEITSMATRIX (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+5)
+#define HID_FUNC_SUMMENPRODUKT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+6)
+#define HID_FUNC_SUMMEX2MY2 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+7)
+#define HID_FUNC_SUMMEX2PY2 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+8)
+#define HID_FUNC_SUMMEXMY2 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+9)
+#define HID_FUNC_HAEUFIGKEIT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+10)
+#define HID_FUNC_RGP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+11)
+#define HID_FUNC_RKP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+12)
+#define HID_FUNC_TREND (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+13)
+#define HID_FUNC_VARIATION (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_MATRIX*ID_FUNCTION_OFFSET)+14)
+
+#define HID_FUNC_ANZAHL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+1)
+#define HID_FUNC_ANZAHL2 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+2)
+#define HID_FUNC_MAX (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+3)
+#define HID_FUNC_MIN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+4)
+#define HID_FUNC_VARIANZ (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+5)
+#define HID_FUNC_VARIANZEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+6)
+#define HID_FUNC_STABW (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+7)
+#define HID_FUNC_STABWN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+8)
+#define HID_FUNC_MITTELWERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+9)
+#define HID_FUNC_SUMQUADABW (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+10)
+#define HID_FUNC_MITTELABW (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+11)
+#define HID_FUNC_SCHIEFE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+12)
+#define HID_FUNC_KURT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+13)
+#define HID_FUNC_GEOMITTEL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+14)
+#define HID_FUNC_HARMITTEL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+15)
+#define HID_FUNC_MODALWERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+16)
+#define HID_FUNC_MEDIAN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+17)
+#define HID_FUNC_QUANTIL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+18)
+#define HID_FUNC_QUARTILE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+19)
+#define HID_FUNC_KGROESSTE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+20)
+#define HID_FUNC_KKLEINSTE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+21)
+#define HID_FUNC_QUANTILSRANG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+22)
+#define HID_FUNC_RANG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+23)
+#define HID_FUNC_GESTUTZTMITTEL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+24)
+#define HID_FUNC_WAHRSCHBEREICH (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+25)
+#define HID_FUNC_B (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+26)
+#define HID_FUNC_PHI (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+27)
+#define HID_FUNC_GAUSS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+28)
+#define HID_FUNC_FISHER (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+29)
+#define HID_FUNC_FISHERINV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+30)
+#define HID_FUNC_BINOMVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+31)
+#define HID_FUNC_NEGBINOMVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+32)
+#define HID_FUNC_KRITBINOM (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+33)
+#define HID_FUNC_POISSON (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+34)
+#define HID_FUNC_NORMVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+35)
+#define HID_FUNC_NORMINV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+36)
+#define HID_FUNC_STANDNORMVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+37)
+#define HID_FUNC_STANDNORMINV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+38)
+#define HID_FUNC_LOGNORMVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+39)
+#define HID_FUNC_LOGINV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+40)
+#define HID_FUNC_EXPONVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+41)
+#define HID_FUNC_GAMMAVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+42)
+#define HID_FUNC_GAMMAINV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+43)
+#define HID_FUNC_GAMMALN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+44)
+#define HID_FUNC_BETAVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+45)
+#define HID_FUNC_BETAINV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+46)
+#define HID_FUNC_WEIBULL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+47)
+#define HID_FUNC_HYPGEOMVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+48)
+#define HID_FUNC_TVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+49)
+#define HID_FUNC_TINV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+50)
+#define HID_FUNC_FVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+51)
+#define HID_FUNC_FINV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+52)
+#define HID_FUNC_CHIVERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+53)
+#define HID_FUNC_CHIINV (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+54)
+#define HID_FUNC_STANDARDISIERUNG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+55)
+#define HID_FUNC_VARIATIONEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+56)
+#define HID_FUNC_VARIATIONEN2 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+57)
+#define HID_FUNC_KONFIDENZ (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+58)
+#define HID_FUNC_GTEST (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+59)
+#define HID_FUNC_CHITEST (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+60)
+#define HID_FUNC_FTEST (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+61)
+#define HID_FUNC_TTEST (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+62)
+#define HID_FUNC_BESTIMMTHEITSMASS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+63)
+#define HID_FUNC_ACHSENABSCHNITT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+64)
+#define HID_FUNC_STEIGUNG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+65)
+#define HID_FUNC_STFEHLERYX (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+66)
+#define HID_FUNC_PEARSON (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+67)
+#define HID_FUNC_KORREL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+68)
+#define HID_FUNC_KOVAR (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+69)
+#define HID_FUNC_SCHAETZER (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+70)
+#define HID_FUNC_MINA (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+71)
+#define HID_FUNC_MAXA (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+72)
+#define HID_FUNC_MITTELWERTA (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+73)
+#define HID_FUNC_STABWA (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+74)
+#define HID_FUNC_STABWNA (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+75)
+#define HID_FUNC_VARIANZA (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+76)
+#define HID_FUNC_VARIANZENA (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_STATISTIC*ID_FUNCTION_OFFSET)+77)
+
+#define HID_FUNC_ADRESSE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+1)
+#define HID_FUNC_BEREICHE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+2)
+#define HID_FUNC_WAHL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+3)
+#define HID_FUNC_SPALTE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+4)
+#define HID_FUNC_ZEILE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+5)
+#define HID_FUNC_SPALTEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+6)
+#define HID_FUNC_ZEILEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+7)
+#define HID_FUNC_WVERWEIS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+8)
+#define HID_FUNC_SVERWEIS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+9)
+#define HID_FUNC_INDEX (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+10)
+#define HID_FUNC_INDIREKT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+11)
+#define HID_FUNC_VERWEIS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+12)
+#define HID_FUNC_VERGLEICH (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+13)
+#define HID_FUNC_VERSCHIEBUNG (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+14)
+#define HID_FUNC_FEHLERTYP (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+15)
+#define HID_FUNC_VORLAGE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+16)
+#define HID_FUNC_DDE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+17)
+#define HID_FUNC_TABELLE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+18)
+#define HID_FUNC_TABELLEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TABLE*ID_FUNCTION_OFFSET)+19)
+
+#define HID_FUNC_CODE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+1)
+#define HID_FUNC_DM (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+2)
+#define HID_FUNC_ZEICHEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+3)
+#define HID_FUNC_SAEUBERN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+4)
+#define HID_FUNC_VERKETTEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+5)
+#define HID_FUNC_IDENTISCH (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+6)
+#define HID_FUNC_FINDEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+7)
+#define HID_FUNC_SUCHEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+8)
+#define HID_FUNC_GLAETTEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+9)
+#define HID_FUNC_GROSS2 (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+10)
+#define HID_FUNC_GROSS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+11)
+#define HID_FUNC_KLEIN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+12)
+#define HID_FUNC_WERT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+13)
+#define HID_FUNC_TEXT (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+14)
+#define HID_FUNC_T (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+15)
+#define HID_FUNC_ERSETZEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+16)
+#define HID_FUNC_FEST (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+17)
+#define HID_FUNC_LAENGE (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+18)
+#define HID_FUNC_LINKS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+19)
+#define HID_FUNC_RECHTS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+20)
+#define HID_FUNC_TEIL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+21)
+#define HID_FUNC_WIEDERHOLEN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+22)
+#define HID_FUNC_WECHSELN (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+23)
+#define HID_FUNC_BASIS (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+24)
+#define HID_FUNC_DEZIMAL (HID_SC_FUNC_DUMMY+(ID_FUNCTION_GRP_TEXT*ID_FUNCTION_OFFSET)+25)
+
diff --git a/sc/inc/scitems.hxx b/sc/inc/scitems.hxx
new file mode 100644
index 000000000000..b881cf381b81
--- /dev/null
+++ b/sc/inc/scitems.hxx
@@ -0,0 +1,248 @@
+/*************************************************************************
+ *
+ * $RCSfile: scitems.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_ITEMS_HXX
+#define SC_ITEMS_HXX
+
+#ifndef _SVX_SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+
+// EditEngine darf nicht ihre eigenen ITEMID's definieren
+#define _EEITEMID_HXX
+
+//--------------------------
+// Item-IDs fuer UI-MsgPool:
+//--------------------------
+
+//! sollten auch nach unter 1000 verschoben werden!
+
+#define MSGPOOL_START 1100
+//--------------------------------------
+#define SCITEM_STRING 1100
+#define SCITEM_SEARCHDATA 1101
+#define SCITEM_SORTDATA 1102
+#define SCITEM_QUERYDATA 1103
+#define SCITEM_SUBTDATA 1104
+#define SCITEM_CONSOLIDATEDATA 1105
+#define SCITEM_PIVOTDATA 1106
+#define SCITEM_SOLVEDATA 1107
+#define SCITEM_USERLIST 1108
+#define SCITEM_PRINTWARN 1109
+//--------------------------------------
+#define MSGPOOL_END 1109
+
+//-------------------------
+// Item-IDs fuer Attribute:
+//-------------------------
+#define ATTR_STARTINDEX 100 // Anfang Attribute
+
+#define ATTR_PATTERN_START 100 // Anfang Zellattribut-Pattern
+
+#define ATTR_FONT 100 // Anfang Zellattribute
+#define ATTR_FONT_HEIGHT 101
+#define ATTR_FONT_WEIGHT 102
+#define ATTR_FONT_POSTURE 103
+#define ATTR_FONT_UNDERLINE 104
+#define ATTR_FONT_CROSSEDOUT 105
+#define ATTR_FONT_CONTOUR 106
+#define ATTR_FONT_SHADOWED 107
+#define ATTR_FONT_COLOR 108
+#define ATTR_FONT_LANGUAGE 109
+#define ATTR_HOR_JUSTIFY 110
+#define ATTR_INDENT 111
+#define ATTR_VER_JUSTIFY 112
+#define ATTR_ORIENTATION 113
+#define ATTR_ROTATE_VALUE 114
+#define ATTR_ROTATE_MODE 115
+#define ATTR_LINEBREAK 116
+#define ATTR_MARGIN 117
+#define ATTR_MERGE 118
+#define ATTR_MERGE_FLAG 119
+#define ATTR_VALUE_FORMAT 120
+#define ATTR_LANGUAGE_FORMAT 121
+#define ATTR_BACKGROUND 122
+#define ATTR_PROTECTION 123
+#define ATTR_BORDER 124
+#define ATTR_BORDER_INNER 125 // innen, wg. Vorlagen-EditDialog
+#define ATTR_SHADOW 126
+#define ATTR_VALIDDATA 127
+#define ATTR_CONDITIONAL 128
+
+#define ATTR_PATTERN_END 128 // Ende Zellattribut-Pattern
+
+#define ATTR_PATTERN 129
+ // Seitenattribute
+#define ATTR_LRSPACE 130 // Editor: PageDesc-TabPage
+#define ATTR_ULSPACE 131
+#define ATTR_PAGE 132
+#define ATTR_PAGE_PAPERTRAY 133
+#define ATTR_PAGE_PAPERBIN 134
+#define ATTR_PAGE_SIZE 135
+#define ATTR_PAGE_MAXSIZE 136
+#define ATTR_PAGE_HORCENTER 137
+#define ATTR_PAGE_VERCENTER 138
+
+#define ATTR_PAGE_ON 139 // Editor: Header/Footer-Page
+#define ATTR_PAGE_DYNAMIC 140
+#define ATTR_PAGE_SHARED 141
+
+#define ATTR_PAGE_NOTES 142 // Editor: Tabelle
+#define ATTR_PAGE_GRID 143
+#define ATTR_PAGE_HEADERS 144
+#define ATTR_PAGE_CHARTS 145
+#define ATTR_PAGE_OBJECTS 146
+#define ATTR_PAGE_DRAWINGS 147
+#define ATTR_PAGE_TOPDOWN 148
+#define ATTR_PAGE_SCALE 149
+#define ATTR_PAGE_SCALETOPAGES 150
+#define ATTR_PAGE_FIRSTPAGENO 151
+
+#define ATTR_PAGE_PRINTAREA 152 // Editor: Druckbereiche
+#define ATTR_PAGE_REPEATROW 153
+#define ATTR_PAGE_REPEATCOL 154
+#define ATTR_PAGE_PRINTTABLES 155
+
+#define ATTR_PAGE_HEADERLEFT 156 // Inhalte der Kopf-/
+#define ATTR_PAGE_FOOTERLEFT 157 // Fusszeilen (links)
+#define ATTR_PAGE_HEADERRIGHT 158 // Inhalte der Kopf-/
+#define ATTR_PAGE_FOOTERRIGHT 159 // Fusszeilen (rechts)
+#define ATTR_PAGE_HEADERSET 160 // die Sets dazu...
+#define ATTR_PAGE_FOOTERSET 161
+
+#define ATTR_PAGE_FORMULAS 162
+#define ATTR_PAGE_NULLVALS 163
+
+#define ATTR_ENDINDEX ATTR_PAGE_NULLVALS // Ende Pool-Range
+
+//--------------------------------
+// Dummy Slot-IDs fuer Dialoge
+//--------------------------------
+#define SID_SCATTR_PAGE_NOTES ATTR_PAGE_NOTES
+#define SID_SCATTR_PAGE_GRID ATTR_PAGE_GRID
+#define SID_SCATTR_PAGE_HEADERS ATTR_PAGE_HEADERS
+#define SID_SCATTR_PAGE_CHARTS ATTR_PAGE_CHARTS
+#define SID_SCATTR_PAGE_OBJECTS ATTR_PAGE_OBJECTS
+#define SID_SCATTR_PAGE_DRAWINGS ATTR_PAGE_DRAWINGS
+#define SID_SCATTR_PAGE_TOPDOWN ATTR_PAGE_TOPDOWN
+#define SID_SCATTR_PAGE_SCALE ATTR_PAGE_SCALE
+#define SID_SCATTR_PAGE_SCALETOPAGES ATTR_PAGE_SCALETOPAGES
+#define SID_SCATTR_PAGE_FIRSTPAGENO ATTR_PAGE_FIRSTPAGENO
+#define SID_SCATTR_PAGE_PRINTAREA ATTR_PAGE_PRINTAREA
+#define SID_SCATTR_PAGE_REPEATROW ATTR_PAGE_REPEATROW
+#define SID_SCATTR_PAGE_REPEATCOL ATTR_PAGE_REPEATCOL
+#define SID_SCATTR_PAGE_PRINTTABLES ATTR_PAGE_PRINTTABLES
+#define SID_SCATTR_PAGE_HEADERLEFT ATTR_PAGE_HEADERLEFT
+#define SID_SCATTR_PAGE_FOOTERLEFT ATTR_PAGE_FOOTERLEFT
+#define SID_SCATTR_PAGE_HEADERRIGHT ATTR_PAGE_HEADERRIGHT
+#define SID_SCATTR_PAGE_FOOTERRIGHT ATTR_PAGE_FOOTERRIGHT
+#define SID_SCATTR_PAGE_FORMULAS ATTR_PAGE_FORMULAS
+#define SID_SCATTR_PAGE_NULLVALS ATTR_PAGE_NULLVALS
+
+//--------------------------------
+// IDs fuer Svx-Items:
+//--------------------------------
+#define ITEMID_LINE SID_FRAME_LINESTYLE
+#define ITEMID_BOX ATTR_BORDER
+#define ITEMID_BOXINFO ATTR_BORDER_INNER
+#define ITEMID_SHADOW ATTR_SHADOW
+#define ITEMID_BRUSH ATTR_BACKGROUND
+#define ITEMID_FONT ATTR_FONT
+#define ITEMID_FONTHEIGHT ATTR_FONT_HEIGHT
+#define ITEMID_WEIGHT ATTR_FONT_WEIGHT
+#define ITEMID_POSTURE ATTR_FONT_POSTURE
+#define ITEMID_UNDERLINE ATTR_FONT_UNDERLINE
+#define ITEMID_CROSSEDOUT ATTR_FONT_CROSSEDOUT
+#define ITEMID_CONTOUR ATTR_FONT_CONTOUR
+#define ITEMID_SHADOWED ATTR_FONT_SHADOWED
+#define ITEMID_COLOR ATTR_FONT_COLOR
+#define ITEMID_LANGUAGE ATTR_FONT_LANGUAGE
+#define ITEMID_HORJUSTIFY ATTR_HOR_JUSTIFY
+#define ITEMID_VERJUSTIFY ATTR_VER_JUSTIFY
+#define ITEMID_ORIENTATION ATTR_ORIENTATION
+#define ITEMID_LINEBREAK ATTR_LINEBREAK
+#define ITEMID_MARGIN ATTR_MARGIN
+#define ITEMID_ESCAPEMENT 0
+#define ITEMID_CASEMAP 0
+#define ITEMID_NUMBERINFO 0
+#define ITEMID_FONTLIST 0
+#define ITEMID_SEARCH SCITEM_SEARCHDATA
+#define ITEMID_ADJUST 0
+#define ITEMID_LRSPACE 0
+#define ITEMID_ULSPACE 0
+#define ITEMID_PAPERBIN 0
+#define ITEMID_SIZE 0
+#define ITEMID_PAGE 0
+#define ITEMID_SETITEM 0
+#define ITEMID_COLOR_TABLE SID_COLOR_TABLE
+#define ITEMID_GRADIENT_LIST SID_GRADIENT_LIST
+#define ITEMID_HATCH_LIST SID_HATCH_LIST
+#define ITEMID_BITMAP_LIST SID_BITMAP_LIST
+#define ITEMID_COLOR_TABLE SID_COLOR_TABLE
+#define ITEMID_DASH_LIST SID_DASH_LIST
+#define ITEMID_LINEEND_LIST SID_LINEEND_LIST
+#define ITEMID_AUTHOR 0
+#define ITEMID_DATE 0
+#define ITEMID_TEXT 0
+
+#endif
+
+
diff --git a/sc/inc/scmod.hxx b/sc/inc/scmod.hxx
new file mode 100644
index 000000000000..d4f4d7b56629
--- /dev/null
+++ b/sc/inc/scmod.hxx
@@ -0,0 +1,287 @@
+/*************************************************************************
+ *
+ * $RCSfile: scmod.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SCMOD_HXX
+#define SC_SCMOD_HXX
+
+#ifndef SC_SCDLL_HXX
+#include "scdll.hxx"
+#endif
+
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScInputMode
+#endif
+
+#ifndef SC_MARKDATA_HXX //@05.01.98
+#include "markdata.hxx" //ScMarkData
+#endif
+
+#ifndef SC_SHELLIDS_HXX
+#include "shellids.hxx"
+#endif
+
+class KeyEvent;
+class SdrModel;
+class SdrView;
+class EditView;
+class SfxErrorHandler;
+class SvxErrorHandler;
+
+class ScRange;
+class ScDocument;
+class ScViewCfg;
+class ScDocCfg;
+class ScAppCfg;
+class ScInputCfg;
+class ScViewOptions;
+class ScDocOptions;
+class ScAppOptions;
+class ScInputOptions;
+class ScInputHandler;
+class ScInputWindow;
+class ScTabViewShell;
+class ScFunctionDlg;
+class ScArgDlgBase;
+class ScTeamDlg;
+class ScEditFunctionDlg;
+class ScMessagePool;
+class EditFieldInfo;
+class ScNavipiCfg;
+class ScFormEditData;
+
+//==================================================================
+
+// for internal Drag&Drop:
+
+#define SC_DROP_NAVIGATOR 1
+#define SC_DROP_TABLE 2
+
+struct ScDragData
+{
+ ScDocument* pDoc;
+ ScMarkData aMarkData;
+ USHORT nStartX, nStartY, nTabNo, nSizeX, nSizeY;
+ USHORT nHandleX, nHandleY;
+ USHORT nFlags;
+ SdrModel* pSdrModel;
+ SdrView* pSdrView;
+ String aLinkDoc;
+ String aLinkTable;
+ String aLinkArea;
+ ScDocument* pJumpLocalDoc;
+ String aJumpTarget;
+ String aJumpText;
+};
+
+//==================================================================
+
+
+class ScModule: public ScModuleDummy, public SfxListener
+{
+ Timer aIdleTimer;
+ Timer aSpellTimer;
+ ScDragData aDragData;
+ ScMessagePool* pMessagePool;
+ // globalen InputHandler gibt's nicht mehr, jede View hat einen
+ ScInputHandler* pRefInputHandler;
+ ScTeamDlg* pTeamDlg;
+ ScViewCfg* pViewCfg;
+ ScDocCfg* pDocCfg;
+ ScAppCfg* pAppCfg;
+ ScInputCfg* pInputCfg;
+ ScNavipiCfg* pNavipiCfg;
+ SfxErrorHandler* pErrorHdl;
+ SvxErrorHandler* pSvxErrorHdl;
+ ScFormEditData* pFormEditData;
+ USHORT nCurRefDlgId;
+ BOOL bDragWasIntern;
+ BOOL bIsWaterCan;
+ BOOL bIsInEditCommand;
+
+public:
+ SFX_DECL_INTERFACE(SCID_APP);
+
+ ScModule( SfxObjectFactory* pFact );
+ virtual ~ScModule();
+
+ virtual SfxModule* Load();
+ virtual void FillStatusBar(StatusBar &rBar);
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ void DeleteCfg();
+ void CloseDialogs();
+
+ // von der Applikation verschoben:
+
+ DECL_LINK( IdleHandler, Timer* ); // Timer statt idle
+ DECL_LINK( SpellTimerHdl, Timer* );
+ DECL_LINK( CalcFieldValueHdl, EditFieldInfo* );
+
+ void Execute( SfxRequest& rReq );
+ void GetState( SfxItemSet& rSet );
+
+ void AnythingChanged();
+
+ // Drag & Drop:
+ const ScDragData& GetDragData() const { return aDragData; }
+ void ResetDragObject();
+ void SetDragObject( const ScMarkData& rMarkData, const ScRange& rRange,
+ USHORT nHandleX, USHORT nHandleY,
+ ScDocument* pDoc, USHORT nFlags );
+ void SetDragObject( SdrModel* pModel, SdrView* pView, USHORT nFlags );
+ void SetDragLink( const String& rDoc, const String& rTab, const String& rArea );
+ void SetDragJump( ScDocument* pLocalDoc,
+ const String& rTarget, const String& rText );
+
+ void SetDragIntern(BOOL bSet=TRUE) { bDragWasIntern = bSet; }
+ BOOL GetDragIntern() const { return bDragWasIntern; }
+
+ void SetWaterCan( BOOL bNew ) { bIsWaterCan = bNew; }
+ BOOL GetIsWaterCan() const { return bIsWaterCan; }
+
+ void SetInEditCommand( BOOL bNew ) { bIsInEditCommand = bNew; }
+ BOOL IsInEditCommand() const { return bIsInEditCommand; }
+
+ // Options:
+ const ScViewOptions& GetViewOptions ();
+ const ScDocOptions& GetDocOptions ();
+ const ScAppOptions& GetAppOptions ();
+ const ScInputOptions& GetInputOptions ();
+ void SetViewOptions ( const ScViewOptions& rOpt );
+ void SetDocOptions ( const ScDocOptions& rOpt );
+ void SetAppOptions ( const ScAppOptions& rOpt );
+ void SetInputOptions ( const ScInputOptions& rOpt );
+ void InsertEntryToLRUList(USHORT nFIndex);
+ void RecentFunctionsChanged();
+
+ static void GetSpellSettings( USHORT& rDefLang, BOOL& rAutoSpell, BOOL& rHideAuto );
+ static void SetAutoSpellProperty( BOOL bSet );
+ static void SetHideAutoProperty( BOOL bSet );
+ static BOOL HasThesaurusLanguage( USHORT nLang );
+
+ ScNavipiCfg& GetNavipiCfg();
+
+ void ModifyOptions( const SfxItemSet& rOptSet );
+
+ // InputHandler:
+ BOOL IsEditMode(); // nicht bei SC_INPUT_TYPE
+ BOOL IsInputMode(); // auch bei SC_INPUT_TYPE
+ void SetInputMode( ScInputMode eMode );
+ BOOL InputKeyEvent( const KeyEvent& rKEvt, BOOL bStartEdit = FALSE );
+ void InputEnterHandler( BYTE nBlockMode = 0 );
+ void InputCancelHandler();
+ void InputSelection( EditView* pView );
+ void InputChanged( EditView* pView );
+ ScInputHandler* GetInputHdl( ScTabViewShell* pViewSh = NULL );
+
+ void SetRefInputHdl( ScInputHandler* pNew );
+ ScInputHandler* GetRefInputHdl();
+
+ void SetInputWindow( ScInputWindow* pWin );
+ void ViewShellGone(ScTabViewShell* pViewSh);
+ void ViewShellChanged();
+ // Kommunikation mit Funktionsautopilot
+ void InputGetSelection( xub_StrLen& rStart, xub_StrLen& rEnd );
+ void InputSetSelection( xub_StrLen nStart, xub_StrLen nEnd );
+ void InputReplaceSelection( const String& rStr );
+ String InputGetFormulaStr();
+ void ActivateInputWindow( const String* pStr = NULL,
+ BOOL bMatrix = FALSE );
+
+ void InitFormEditData();
+ void ClearFormEditData();
+ ScFormEditData* GetFormEditData() { return pFormEditData; }
+
+ // Referenzeingabe:
+ void SetRefDialog( USHORT nId, BOOL bVis );
+ BOOL IsModalMode(SfxObjectShell* pDocSh = NULL);
+ BOOL IsFormulaMode();
+ BOOL IsRefDialogOpen();
+ BOOL IsTableLocked();
+ void OpenTeamDlg();
+ void SetTeamDlg( ScTeamDlg* pDlg ) { pTeamDlg = pDlg; }
+ ScTeamDlg* GetTeamDlg() const { return pTeamDlg; }
+ void SetReference( const ScRange& rRef, ScDocument* pDoc,
+ const ScMarkData* pMarkData = NULL );
+ void AddRefEntry();
+ void EndReference();
+ USHORT GetCurRefDlgId() const { return nCurRefDlgId; }
+
+ //virtuelle Methoden fuer den Optionendialog
+ virtual SfxItemSet* CreateItemSet( USHORT nId );
+ virtual void ApplyItemSet( USHORT nId, const SfxItemSet& rSet );
+ virtual SfxTabPage* CreateTabPage( USHORT nId, Window* pParent, const SfxItemSet& rSet );
+};
+
+#define SC_MOD() ( *(ScModule**) GetAppData(SHL_CALC) )
+
+#endif
+
+
diff --git a/sc/inc/scresid.hxx b/sc/inc/scresid.hxx
new file mode 100644
index 000000000000..9a90f71d4de4
--- /dev/null
+++ b/sc/inc/scresid.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: scresid.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SCRESID_HXX
+#define SC_SCRESID_HXX
+
+#ifndef _TOOLS_RESID_HXX //autogen
+#include <tools/resid.hxx>
+#endif
+
+//===================================================================
+
+class ScResId : public ResId
+{
+ public:
+ ScResId( USHORT nId ); // in scdll.cxx
+};
+
+
+
+#endif // SC_SCRESMGR_HXX
+
diff --git a/sc/inc/scwarngs.hxx b/sc/inc/scwarngs.hxx
new file mode 100644
index 000000000000..164484b25492
--- /dev/null
+++ b/sc/inc/scwarngs.hxx
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * $RCSfile: scwarngs.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef __SCWARNGS_HXX_
+#define __SCWARNGS_HXX_
+
+#define ERRCODE_SC_EXPORT_WRN_ASCII (ERRCODE_WARNING_MASK | ERRCODE_AREA_SC | ERRCODE_CLASS_WRITE | 1)
+#define ERRCODE_SC_IMPORT_WRN_RNGOVRFLW (ERRCODE_WARNING_MASK | ERRCODE_AREA_SC | ERRCODE_CLASS_READ | 1)
+
+
+#endif
+
diff --git a/sc/inc/segdefs.hxx b/sc/inc/segdefs.hxx
new file mode 100644
index 000000000000..537af2113ce7
--- /dev/null
+++ b/sc/inc/segdefs.hxx
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * $RCSfile: segdefs.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "segdefs_.hxx"
+
+//****************************************************************
+//
+//und jetzt alle probleme mit ERROR: unknown pragma beseitigen
+//
+//----------------------------------------------------------------
+
+//segmente mit laenge 00000H (map) werden von tcovsegs.exe vergessen
+//jetzt defines nachflicken!
+
+
+
diff --git a/sc/inc/segdefs_.hxx b/sc/inc/segdefs_.hxx
new file mode 100644
index 000000000000..a7d95fbecc67
--- /dev/null
+++ b/sc/inc/segdefs_.hxx
@@ -0,0 +1,5019 @@
+/*************************************************************************
+ *
+ * $RCSfile: segdefs_.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define appmain_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain_03 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain_04 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain_06 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain_22 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain_23 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain_2e SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain7_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain8_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain3_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain5_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appmain4_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define msgpool_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define inputhdl_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define inputhdl_0d SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define uiitems_16 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define uiitems_22 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define uiitems_28 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define uiitems_32 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define uiitems_40 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define impex_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define editsh_0a SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define global_0f SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define global_85 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define docoptio_0b SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define docoptio_0e SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define viewopti_0f SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define viewopti_12 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define printopt_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define printopt_06 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define printopt_0f SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define printopt_12 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appoptio_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appoptio_06 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define appoptio_09 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define global2_1f SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define global2_23 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define global2_37 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define compiler_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define adiasync_01 SEG_SEGCLASS(STARTING_SEG000,STARTING_CODE)
+#define docpool_03 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define column_0f SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_48 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_63 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_2d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin4_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin_22 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_0d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin4_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_24 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin4_03 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define global2_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define global2_11 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define fillinfo_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_5c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_53 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_25 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin4_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_54 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_5a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_5d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_60 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabview3_47 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin3_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_5f SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define colrowba_0d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_27 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabview4_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_17 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table1_10 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabview4_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_62 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_64 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define documen3_2e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabview4_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define hdrcont_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define colrowba_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define colrowba_0c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin3_0d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output2_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_8c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output2_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define patattr_08 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_28 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_26 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabview3_48 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabvwsha_05 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputhdl_25 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_47 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_40 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define column3_16 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define appmain_50 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabvwsh9_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define appmain3_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputhdl_10 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputhdl_26 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputhdl_29 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputhdl_24 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputwin_19 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputwin_09 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputwin_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputwin_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputwin_26 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define appmain_3c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputhdl_28 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define global_92 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputhdl_27 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define global2_4c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_11 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_32 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_31 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_42 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_3d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define column3_12 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define column_19 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define column_1a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_41 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_48 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define column_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_49 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_64 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define attarray_05 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define attarray_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define attarray_10 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define column_0a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_4b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_7b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabvwsha_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_05 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin_23 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define global_0e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_59 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_46 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewopti_13 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabview3_35 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_1c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputwin_1d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define inputwin_22 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabvwsh5_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define tabvwsh4_19 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin3_12 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_32 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define viewdata_57 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin3_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output3_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin3_14 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_61 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define table2_65 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_02 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_06 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_0d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_13 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_14 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_17 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_1a SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_1b SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_1c SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_1e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define global2_10 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define output_10 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_7d SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define document_7e SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define documen6_01 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define gridwin3_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define stlsheet_04 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define documen8_07 SEG_SEGCLASS(STARTWORK_SEG000,STARTWORK_CODE)
+#define global_07 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define tabvwsha_02 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define global_88 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define impex_09 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define applink_04 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define docsh_3b SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define gridwin_08 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define documen3_25 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define patattr_04 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define document_84 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define viewdata_3f SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define patattr_01 SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define document_2e SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define document_2a SEG_SEGCLASS(STARTWORK_SEG001,STARTWORK_CODE)
+#define tabvwsh7_01 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define viewfunc_38 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define document_6d SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define table2_88 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define column_64 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define document_a1 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define docsh4_11 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define docsh_2b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define docsh2_01 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define stlpool_06 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define docsh4_0d SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define global_50 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputhdl_2b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputwin_14 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputwin_20 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputhdl_08 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputhdl_1b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputhdl_1a SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputhdl_0c SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define appmain_0b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputwin_2c SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputwin_2b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define appmain_09 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputhdl_0b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define tabvwsh4_1a SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define gridwin_0f SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define tabview5_0c SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define appmain3_0b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define gridwin3_04 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define gridwin3_15 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define tabvwshd_03 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputhdl_03 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputwin_1e SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define inputwin_23 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define tabview_13 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define viewdata_1b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define editutil_01 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define document_56 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define table1_0e SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define column2_08 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define tabvwsh4_1b SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define docsh_16 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define documen3_45 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define tabview3_34 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define tabvwsh4_1e SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define rangeutl_04 SEG_SEGCLASS(STARTSLICE_SEG000,STARTSLICE_CODE)
+#define viewfunc_0b SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
+#define document_75 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
+#define table2_96 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
+#define column_70 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
+#define attarray_09 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
+#define tabvwsh8_04 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
+#define msgpool_04 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
+#define tabvwsh8_01 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
+#define document_a9 SEG_SEGCLASS(STARTSLICE_SEG001,STARTSLICE_CODE)
+#define appmain3_03 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define gridwin_0e SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define gridwin_0b SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define gridwin_39 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define viewdata_2e SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define gridwin3_03 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define gridwin_26 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define colrowba_09 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define hdrcont_08 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define hdrcont_05 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define hdrcont_03 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define colrowba_03 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define colrowba_04 SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define viewdata_1f SEG_SEGCLASS(STARTSLICE_SEG002,STARTSLICE_CODE)
+#define dbcolect_0f SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
+#define documen3_05 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
+#define documen3_37 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
+#define tabvwsh6_03 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
+#define inputwin_0d SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
+#define table1_28 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
+#define column2_23 SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
+#define attarray_2f SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
+#define column2_2a SEG_SEGCLASS(STARTSLICE_SEG003,STARTSLICE_CODE)
+#define viewfun2_1c SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define document_83 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define attarray_01 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define document_82 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define column_03 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define table1_01 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define document_06 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define global2_07 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define global2_09 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define markarr_01 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define docsh3_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define docsh_14 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define docsh3_16 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define tabvwsh4_16 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define docsh_38 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define docsh_39 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define docsh_40 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define docsh2_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define documen9_04 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define attarray_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define column_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define documen6_03 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define markarr_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define column3_06 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define table1_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define collect_04 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define collect_15 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define documen2_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define global_04 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define collect_17 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define adiasync_06 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define docpool_02 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define attrib_59 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define attrib_5a SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define attrib_6f SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define tabvwsh3_01 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define tabview3_6c SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define viewdata_3a SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define tabvwsh4_07 SEG_SEGCLASS(STARTSLICE_SEG004,STARTSLICE_CODE)
+#define document_91 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define stlsheet_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define table2_95 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define column_6f SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define attarray_2a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define table1_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define document_08 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabcont_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabcont_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define document_16 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabvwshf_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docsh6_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview3_44 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabcont_06 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview3_43 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define document_07 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabvwsh4_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docsh_41 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define documen3_0b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define document_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define appmain_58 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabvwsh4_15 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docsh4_0f SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docsh4_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define document_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define table1_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define olkact_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define appmain_29 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define olkact_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabvwsh4_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview5_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview_0b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define select_0f SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define select_19 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview_18 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview_11 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define olinewin_0e SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define olinewin_0f SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define documen3_0c SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview_69 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview_07 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview_0c SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define appmain_28 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define select_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define viewdata_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define viewopti_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define documen8_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define documen2_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define collect_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define viewopti_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define viewopti_18 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define viewopti_19 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define viewopti_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define documen3_35 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docsh3_15 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define documen3_33 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define documen8_0a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define appmain7_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docoptio_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docoptio_10 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define collect_0c SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define documen3_39 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview5_06 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define olinewin_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define documen3_34 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define viewdata_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define appmain7_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define viewopti_17 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define global_8b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docsh_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define inputwin_06 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define inputhdl_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define patattr_09 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define inputhdl_07 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define inputhdl_05 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define document_95 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define table2_98 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define inputwin_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define inputwin_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define inputwin_0e SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define inputwin_0b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define inputwin_28 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define inputwin_08 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docoptio_12 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define printopt_10 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define appoptio_0a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define appmain7_08 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define select_02 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define select_0e SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docpool_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define attrib_6d SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define attrib_8f SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define patattr_10 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define attrib_26 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define attrib_30 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define attrib_34 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define stlpool_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define bcaslot_0b SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define appmain7_0a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define cbuttonw_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define cbuttonw_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define gridwin_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define hdrcont_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define colrowba_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define colrowba_0a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabsplit_01 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabsplit_06 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define viewdata_4a SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define viewdata_10 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview5_04 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define tabview_75 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define docsh3_03 SEG_SEGCLASS(STARTSLICE_SEG005,STARTSLICE_CODE)
+#define gridwin5_01 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
+#define colrowba_05 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
+#define gridwin_29 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
+#define gridwin_28 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
+#define document_b3 SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
+#define viewfun2_1a SEG_SEGCLASS(STARTSLICE_SEG006,STARTSLICE_CODE)
+#define column_01 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define docsh6_05 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define tabvwshb_04 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define galwrap_02 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define msgpool_05 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define gridwin_2e SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define tabview2_10 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define tabvwsh4_09 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define gridwin3_10 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define tabview_6d SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define tabvwsh2_02 SEG_SEGCLASS(STARTSLICE_SEG007,STARTSLICE_CODE)
+#define viewdata_44 SEG_SEGCLASS(STARTSLICE_SEG008,STARTSLICE_CODE)
+#define tabview2_0b SEG_SEGCLASS(STARTSLICE_SEG008,STARTSLICE_CODE)
+#define docoptio_03 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define documen8_06 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define viewopti_14 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define viewdata_06 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define viewdata_03 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define viewdata_1d SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define tabview5_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define cbuttonw_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define gridwin_04 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define hdrcont_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define colrowba_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define colrowba_0b SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define tabsplit_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define tabcont_02 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define olinewin_04 SEG_SEGCLASS(STARTSLICE_SEG009,STARTSLICE_CODE)
+#define editutil_0b SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
+#define attrib_76 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
+#define editutil_0f SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
+#define attrib_6e SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
+#define editutil_1b SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
+#define attrib_72 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
+#define editutil_13 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
+#define attrib_77 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
+#define attrib_75 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
+#define editutil_17 SEG_SEGCLASS(STARTSLICE_SEG010,STARTSLICE_CODE)
+#define inputhdl_1c SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
+#define tabview5_0b SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
+#define uiitems_13 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
+#define docsh3_05 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
+#define uiitems_14 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
+#define viewdata_37 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
+#define viewdata_38 SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
+#define viewdata_3b SEG_SEGCLASS(STARTSLICE_SEG011,STARTSLICE_CODE)
+#define output_03 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define appmain_0a SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define tabview_06 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define tbxctl_02 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define inputhdl_19 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define attrib_5c SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define documen9_09 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define documen9_0a SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define stlpool_03 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define stlsheet_01 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define stlsheet_03 SEG_SEGCLASS(STARTSLICE_SEG012,STARTSLICE_CODE)
+#define documen9_10 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define editutil_0c SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define editutil_1c SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define attrib_83 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define attrib_91 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define document_92 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define patattr_0e SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define tabvwsh4_03 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define viewfunc_31 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define dbfunc_01 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define stlpool_02 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define editutil_1e SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define attrib_71 SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define editutil_0e SEG_SEGCLASS(STARTSLICE_SEG013,STARTSLICE_CODE)
+#define editutil_1a SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
+#define editutil_12 SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
+#define tabvwsh4_0b SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
+#define viewdata_48 SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
+#define tabview_73 SEG_SEGCLASS(STARTSLICE_SEG014,STARTSLICE_CODE)
+#define docsh_15 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
+#define inputwin_0f SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
+#define bcaslot_0c SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
+#define stlsheet_02 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
+#define stlsheet_06 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
+#define docsh6_02 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
+#define documen3_41 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
+#define documen3_42 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
+#define documen3_43 SEG_SEGCLASS(STARTSLICE_SEG015,STARTSLICE_CODE)
+#define inputwin_02 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
+#define inputwin_16 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
+#define inputwin_17 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
+#define inputhdl_22 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
+#define appmain9_01 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
+#define tabvwsh4_1f SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
+#define editsh_02 SEG_SEGCLASS(STARTSLICE_SEG016,STARTSLICE_CODE)
+#define tabview_05 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define viewfunc_33 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define dbfunc_03 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define target_01 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define appmain3_0d SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define appmain3_0e SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define appmain3_0f SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define global2_19 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define global2_1b SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define editutil_1f SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define global2_22 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define drtxtob2_04 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define uiitems_38 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define global2_27 SEG_SEGCLASS(STARTSLICE_SEG017,STARTSLICE_CODE)
+#define uiitems_1c SEG_SEGCLASS(STARTSLICE_SEG018,STARTSLICE_CODE)
+#define tbxctl_01 SEG_SEGCLASS(STARTSLICE_SEG018,STARTSLICE_CODE)
+#define editsh_01 SEG_SEGCLASS(STARTSLICE_SEG018,STARTSLICE_CODE)
+#define appmain_37 SEG_SEGCLASS(STARTSLICE_SEG018,STARTSLICE_CODE)
+#define global_93 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define global_94 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define attarray_07 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define attarray_08 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column_13 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define patattr_16 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define documen8_0b SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define scdebug_02 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define scdebug_01 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column2_0d SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define table5_08 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column2_0c SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column2_0b SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define document_3d SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define table2_39 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column3_01 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column3_03 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define documen7_07 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define cell_38 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define document_49 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column3_0c SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define cellform_01 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define table2_43 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define table3_75 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column3_18 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define cell_02 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define cell_03 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define drwlayer_0a SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define compiler_17 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define token_24 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define token_0d SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define token_53 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define compiler_1b SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define compiler_1d SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define table4_06 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column2_0a SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column_04 SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define column_0b SEG_SEGCLASS(CALLOPT_SEG000,CALLOPT_CODE)
+#define output2_05 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define tabview3_23 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define tabview3_26 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define tabview3_24 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define select_09 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define tabview3_66 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define documen3_09 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define pivot2_0c SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define tabvwsh4_2f SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define tabvwsh4_30 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define tabview3_25 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define drawview_0e SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define viewdata_1a SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define tabview2_09 SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define select_0c SEG_SEGCLASS(WORKSET_SEG000,WORKSET_CODE)
+#define cellform_02 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define cell2_0c SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define cell_40 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define output2_06 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_2e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define cell2_10 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define cell_13 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_61 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_63 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_68 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr1_2e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_25 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_11 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_2b SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_04 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr1_7d SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_13 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_21 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr5_5c SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr1_ba SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_26 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_06 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_bd SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define documen3_32 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_12 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define documen9_06 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drwlayer_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drwlayer_1e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drwlayer_10 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_65 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_67 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_64 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_62 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define documen9_0b SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define cell_41 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define documen2_07 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define documen8_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define document_a6 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define docsh_07 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define documen2_11 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define documen8_02 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define documen8_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drwlayer_05 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drwlayer_14 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drwlayer_0e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drwlayer_16 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drwlayer_1a SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drawpage_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr5_5a SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_18 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define cell2_0d SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define documen7_0c SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define cell_24 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_52 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_5c SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_29 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_2a SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_0d SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define read_01 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drawvie3_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_0e SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_ba SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr1_36 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr1_43 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define document_44 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr1_5d SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr4_08 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define docsh2_07 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr5_5b SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define interpr5_58 SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define token_5f SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define drwlayer_1b SEG_SEGCLASS(SLICES_SEG000,SLICES_CODE)
+#define tabview3_27 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabview3_28 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabview3_29 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define viewdata_17 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabvwshd_02 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabvwsha_04 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabview_17 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define viewdata_23 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define viewdata_30 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabview_79 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define gridwin_19 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define gridwin_34 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define gridwin3_09 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define gridwin3_0a SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define olinewin_10 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabview_16 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabvwshd_07 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabview3_2c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define documen2_13 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define documen9_0d SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define drwlayer_15 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define docsh4_04 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define printfun_21 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define printfun_0e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define documen2_24 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define documen3_3a SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define docsh6_04 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define viewfunc_03 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabview3_41 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define table1_2c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define column2_2c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define document_79 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define table2_4a SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define column_09 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define attarray_0f SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define attarray_1e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define attarray_11 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define printfun_13 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define document_2c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define viewdata_22 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define viewdata_2f SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define printfun_24 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define documen3_3f SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define table1_2b SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define tabview3_3d SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define viewdata_18 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define docsh3_0e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define docsh3_07 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define uiitems_10 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define document_af SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define uiitems_11 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define table2_aa SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define column_83 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define docsh3_06 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define impex_11 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define prevwsh2_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define printfun_0b SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define printfun_07 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define printfun_10 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define document_b9 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define document_b4 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define document_b5 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define printfun_17 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define preview_03 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define editutil_08 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define prevwsh_0c SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define pagepar_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define pagepar_03 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define docsh3_0b SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define docsh4_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define documen7_0d SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define dbfunc2_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define documen3_22 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define dbfunc4_01 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define document_3e SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define table2_3a SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define column3_0b SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define column_18 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define patattr_05 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define undoblk3_25 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define attarray_06 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define table2_54 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define document_65 SEG_SEGCLASS(SLICES_SEG001,SLICES_CODE)
+#define column2_2b SEG_SEGCLASS(SLICES_SEG002,SLICES_CODE)
+#define tabview3_38 SEG_SEGCLASS(SLICES_SEG002,SLICES_CODE)
+#define tabview4_01 SEG_SEGCLASS(SLICES_SEG002,SLICES_CODE)
+#define drawview_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview_60 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fudraw_08 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fusel_04 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fudraw_0b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fudraw_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define detfunc_1c SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fusel_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define gridwin3_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define gridwin_0c SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define document_33 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define gridwin3_11 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fudraw_0a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define gridwin_0d SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define gridwin3_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fusel_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fudraw_0c SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define global2_4d SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define cbuttonw_04 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define cbuttonw_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabvwsh4_2d SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fudraw_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fusel_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fupoor_08 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabvwsh2_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview2_11 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fupoor_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fudraw_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawview_13 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview3_31 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview5_05 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define select_08 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define select_1b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define select_0a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define gridwin_2a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define gridwin3_0f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define document_37 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawvie3_07 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview3_6b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fusel_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview5_08 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawvie3_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawview_0f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawutil_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawview_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawview_14 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawview_1b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define fupoor_0d SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define gridwin3_13 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define global_95 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawview_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawview_19 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawvie2_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabvwsh2_0c SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define markarr_04 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define markarr_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define column_06 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define table1_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define document_2f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define viewfun2_1f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define document_85 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define document_aa SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define document_1f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define viewfunc_0f SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define document_22 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define viewfun2_23 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define collect_0a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define viewfunc_14 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define table2_37 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define column_39 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define column_1b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define document_38 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define documen3_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define documen3_14 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define undobase_09 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define attarray_20 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define impop_01 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define patattr_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define colrowst_12 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define excel_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview5_03 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define drawvie2_02 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview3_33 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define viewdata_20 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview_78 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define viewdata_49 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview_72 SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview3_3a SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview3_3b SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define tabview3_3e SEG_SEGCLASS(SLICES_SEG003,SLICES_CODE)
+#define documen4_0c SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
+#define bcaslot_11 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
+#define bcaslot_07 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
+#define tabview3_36 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
+#define gridwin_1a SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
+#define output3_03 SEG_SEGCLASS(SLICES_SEG004,SLICES_CODE)
+#define output_05 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define output_0f SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define gridwin3_16 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define patattr_12 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define attrib_01 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define table4_09 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_23 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_0b SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_0c SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_1b SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_0e SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_0d SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_1c SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_13 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_11 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_04 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_12 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_24 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define table4_0a SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define documen3_16 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define viewfun2_22 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_01 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define zforauto_01 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define table4_08 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_09 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_05 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_07 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_0b SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_18 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_17 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_15 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_14 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_09 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_16 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_22 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_19 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_01 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_03 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_04 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_08 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_18 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define zforauto_08 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autofmt_0f SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_10 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_16 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_0e SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_14 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_12 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_06 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_0a SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_0c SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_0d SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_0f SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_11 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_13 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_15 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_17 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_19 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_1b SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_1d SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_1f SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_21 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define autoform_25 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define zforauto_04 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define zforauto_07 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define linelink_01 SEG_SEGCLASS(SLICES_SEG005,SLICES_CODE)
+#define compiler_04 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define cell_10 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define compiler_29 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define compiler_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define compiler_06 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define token_0a SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define compiler_07 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define column3_14 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define table2_3f SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define document_45 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rangenam_05 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define token_5e SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define token_50 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define column2_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define compiler_26 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define token_21 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rangenam_11 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define refupdat_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define refupdat_07 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define column2_06 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define table2_6b SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rechead_06 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define attarray_25 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rechead_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define document_88 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rechead_02 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rechead_07 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rangenam_06 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define dbcolect_15 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rechead_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rechead_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define docoptio_11 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define viewopti_15 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define pivot2_0d SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define collect_07 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define documen5_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define chartarr_18 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define viewopti_1b SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define attrib_3a SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define attrib_35 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define namebuff_16 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define token_51 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define excform_15 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define excform_11 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define colrowst_13 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define colrowst_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define impop_26 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define frmbase_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define excform_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define tokstack_10 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define impop_32 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define excform_13 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define tokstack_22 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define tokstack_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define excform_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define impop_39 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define impop_4d SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define cell_2d SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rangenam_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define collect_0f SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define collect_08 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define collect_0e SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rangenam_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define dbcolect_11 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rangenam_10 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rangenam_0b SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define rangenam_17 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define dbcolect_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define global2_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define dbcolect_09 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define dbcolect_05 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define collect_12 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define dbfunc_06 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define global2_01 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define dbcolect_1d SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define impop_48 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define impop_33 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define frmbase_04 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define namebuff_17 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define cell_3c SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define impop_38 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define attarray_03 SEG_SEGCLASS(SLICES_SEG006,SLICES_CODE)
+#define document_30 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
+#define table1_08 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
+#define column_05 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
+#define markarr_07 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
+#define markarr_03 SEG_SEGCLASS(SLICES_SEG007,SLICES_CODE)
+#define markarr_0e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_3a SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table1_0c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define markarr_0f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define column2_09 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table1_0d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define column2_0e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_55 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define viewfunc_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define viewfunc_13 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define documen3_19 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define documen3_1a SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_62 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define markarr_10 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define column_65 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_89 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define column_07 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define markarr_0a SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table1_0b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_3b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_6e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_97 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define column_71 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define column_10 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define column2_10 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_3c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define viewfun2_15 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define viewfunc_34 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define viewfunc_3e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_98 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define tabvwsh8_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define viewfunc_0c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define tabvwsha_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define tabvwsh5_20 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define tabvwsh5_21 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define tabvwshd_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define viewfunc_3b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define patattr_0a SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_57 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table1_0f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_8d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_a1 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define drwlayer_0b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define drwlayer_12 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_55 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_80 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_57 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_4f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define colrowst_04 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define impop_4c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define exctools_0b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define exctools_0e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define exctools_05 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define exctools_0c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define colrowst_15 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define colrowst_0f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_68 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_50 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define xfbuff_0d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define fontbuff_0c SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define attrib_39 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define xfbuff_0b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define attrib_38 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define drwlayer_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define drwlayer_1d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define drawvie3_06 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define drawsh2_05 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_a3 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_a4 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define documen8_0d SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define drwlayer_27 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_61 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define attrib_36 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define tabvwsh7_02 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define tphf_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define stlsheet_08 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define styledlg_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define styledlg_02 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define styledlg_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define stlsheet_07 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define docpool_08 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define docpool_07 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_51 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define column2_0f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_58 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table2_5b SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_60 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define dbfunc_09 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define collect_03 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table5_01 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_5f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define printfun_08 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define document_5e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define table5_02 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define printfun_1e SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define printfun_1f SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define editutil_02 SEG_SEGCLASS(SLICES_SEG008,SLICES_CODE)
+#define undobase_0a SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define table1_07 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define undocell_08 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define viewdata_15 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define documen3_2d SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define undocell_09 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define undocell_1a SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define uiitems_02 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define uiitems_03 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define uiitems_07 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define uiitems_04 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define undocell_07 SEG_SEGCLASS(SLICES_SEG009,SLICES_CODE)
+#define document_96 SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
+#define global2_47 SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
+#define global2_4a SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
+#define global2_4b SEG_SEGCLASS(SLICES_SEG010,SLICES_CODE)
+#define editsh_08 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define tabview2_02 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define tabview2_0a SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define document_2b SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define tabview2_08 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define viewutil_01 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define viewutil_02 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define viewutil_04 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define viewutil_05 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define select_14 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define viewdata_3e SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define hdrcont_06 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define colrowba_08 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define viewdata_21 SEG_SEGCLASS(SLICES_SEG011,SLICES_CODE)
+#define tabview_15 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
+#define documen3_03 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
+#define dbdocfun_06 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
+#define dbcolect_1b SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
+#define dbdocfun_04 SEG_SEGCLASS(SLICES_SEG012,SLICES_CODE)
+#define table2_4c SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define documen8_0c SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define drawvie2_03 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define undoblk3_27 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define undoblk3_5c SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define undoblk3_3f SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define undoblk3_5f SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define column_6e SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define patattr_17 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define cell2_0e SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define select_05 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define select_06 SEG_SEGCLASS(SLICES_SEG013,SLICES_CODE)
+#define tabview5_07 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define document_34 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr4_14 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr1_b7 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define dociter_0a SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define dociter_0b SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define dociter_0c SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr1_71 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr3_29 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr1_6b SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr1_6a SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define dociter_20 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr3_1f SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr3_1e SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr3_1d SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr3_31 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr5_b1 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr4_bb SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr1_6c SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr1_70 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr1_74 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr1_75 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr1_72 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr1_73 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr4_1d SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define token_0c SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr5_b3 SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define interpr5_6b SEG_SEGCLASS(SLICES_SEG014,SLICES_CODE)
+#define column2_14 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dociter_17 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dociter_18 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dociter_19 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table2_6c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table2_9d SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table2_9e SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define column2_07 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define documen2_08 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define column2_04 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define column2_15 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define rechead_04 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define document_89 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define rechead_05 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define docsh_0b SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define docoptio_0f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define attarray_24 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define column2_02 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define rechead_0a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define rechead_0b SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dbcolect_16 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define pivot2_0e SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define rangenam_07 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define rechead_0c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define cell_0d SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define token_2a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define token_43 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define rechead_0e SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define documen8_03 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define viewopti_16 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define viewopti_1c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define documen8_04 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define attarray_16 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define attrib_74 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define editutil_16 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define patattr_14 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define cell2_1d SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define cell2_1f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define drwlayer_06 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define documen9_0c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dociter_13 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dociter_14 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dociter_15 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table2_b0 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define document_8d SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table3_92 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define attrib_a3 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dociter_0f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dociter_10 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define interpr1_b9 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define global2_0f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define tabvwshc_01 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define global2_29 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define appmain_07 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define global2_21 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define uiitems_31 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define global2_31 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define anyrefdg_01 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define uiitems_2f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define global2_3a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define uiitems_2e SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define interpr1_7f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define document_41 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table2_3c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define column3_11 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dociter_0e SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dociter_11 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define interpr1_80 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define appmain3_0a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define tabvwsh6_01 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dbcolect_18 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define uiitems_34 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define uiitems_3f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define uiitems_42 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define msgpool_02 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define inputhdl_02 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define appmain3_02 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define uiitems_3a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dbcolect_06 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define documen3_20 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table3_7c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define gridwin_09 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define gridwin_31 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define gridwin_01 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define gridwin_32 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define gridwin_2f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dbcolect_0a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define gridwin_37 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define dbcolect_0b SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define gridwin_0a SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define gridwin_30 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define gridwin4_08 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define documen3_1d SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table3_79 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table3_7f SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define global2_16 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table2_77 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define table3_78 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define appmain7_0c SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define appoptio_03 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define printopt_03 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define interpr1_86 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define appmain2_03 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define patattr_07 SEG_SEGCLASS(SLICES_SEG015,SLICES_CODE)
+#define tabview5_0d SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define tabcont_04 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define undoolk_01 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define undobase_01 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define documen9_03 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_03 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_55 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define tokstack_11 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_54 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define interpr4_19 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define interpr4_1a SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define interpr1_97 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_02 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_56 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_57 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_04 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_58 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_05 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_59 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define token_09 SEG_SEGCLASS(SLICES_SEG016,SLICES_CODE)
+#define global_6a SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define token_27 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define compiler_25 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define compiler_24 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define compiler_23 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define compiler_22 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define compiler_21 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define compiler_20 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define compiler_3f SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define compiler_1e SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define compiler_4e SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define compiler_1c SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define cell_3d SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define column_81 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define table2_a8 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define document_a7 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define table2_ae SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define column_85 SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define cell_3f SEG_SEGCLASS(SLICES_SEG017,SLICES_CODE)
+#define appmain_36 SEG_SEGCLASS(SLICES_SEG018,SLICES_CODE)
+#define printfun_02 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define preview_16 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define prevwsh_16 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define preview_0c SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define preview_19 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define preview_17 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define preview_0e SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define prevwsh_0b SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define prevwsh_18 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define preview_0d SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define preview_1a SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define preview_18 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define prevwsh_15 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define prevwsh_14 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define prevwsh_13 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define prevwsh_1f SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define pagepar_07 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define pagepar_0a SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define pagepar_09 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define printfun_06 SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define printfun_2c SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define preview_1b SEG_SEGCLASS(SLICES_SEG019,SLICES_CODE)
+#define printfun_29 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_11 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_04 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_0a SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_05 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_19 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_22 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_1c SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_1d SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define editutil_0a SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_09 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define output_04 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define output3_01 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_20 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_18 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define editutil_07 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define editutil_10 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define editutil_14 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define editutil_18 SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_0c SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define printfun_0d SEG_SEGCLASS(SLICES_SEG020,SLICES_CODE)
+#define dbcolect_0c SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
+#define pagepar_04 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
+#define printfun_0f SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
+#define document_93 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
+#define table5_03 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
+#define document_94 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
+#define table5_04 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
+#define olinewin_06 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
+#define global_67 SEG_SEGCLASS(SLICES_SEG021,SLICES_CODE)
+#define editutil_09 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define table5_07 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define document_97 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define printfun_12 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define printfun_25 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define printfun_27 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define colrowba_12 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define fusel_01 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define patattr_11 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define attarray_2c SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define column2_22 SEG_SEGCLASS(SLICES_SEG022,SLICES_CODE)
+#define drawpage_02 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define drwlayer_0f SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define drwlayer_0c SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define drwlayer_0d SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define tabview3_2a SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define tabview3_40 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define token_69 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define documen7_01 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define bcaslot_0f SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define bcaslot_01 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define bcaslot_03 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define bcaslot_06 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define bcaslot_05 SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define bcaslot_0e SEG_SEGCLASS(SLICES_SEG023,SLICES_CODE)
+#define dociter_16 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
+#define cell_23 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
+#define fupoor_02 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
+#define tabview3_2b SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
+#define document_86 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
+#define table1_12 SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
+#define column2_1d SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
+#define column2_2d SEG_SEGCLASS(SLICES_SEG024,SLICES_CODE)
+#define autoform_03 SEG_SEGCLASS(SLICES_SEG025,SLICES_CODE)
+#define compiler_52 SEG_SEGCLASS(SLICES_SEG025,SLICES_CODE)
+#define attarray_27 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
+#define inputhdl_23 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
+#define editsh_05 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
+#define editsh_09 SEG_SEGCLASS(SLICES_SEG026,SLICES_CODE)
+#define undoblk3_3d SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
+#define fusel_02 SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
+#define autofmt_02 SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
+#define autofmt_0a SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
+#define autofmt_1a SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
+#define autofmt_1e SEG_SEGCLASS(SLICES_SEG027,SLICES_CODE)
+#define fudraw_02 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
+#define global_09 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
+#define table4_07 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
+#define autoform_26 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
+#define documen3_15 SEG_SEGCLASS(SLICES_SEG028,SLICES_CODE)
+#define document_52 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
+#define table2_8e SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
+#define document_9c SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
+#define table2_a0 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
+#define documen7_09 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
+#define table5_05 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
+#define column2_26 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
+#define cell_35 SEG_SEGCLASS(SLICES_SEG029,SLICES_CODE)
+#define autoform_08 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define autoform_1a SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define autoform_1c SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define autoform_1e SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define autoform_20 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define viewdata_3c SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define undodat_33 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define undodat_4d SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define document_2d SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define docsh_08 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define imoptdlg_04 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define imoptdlg_03 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define imoptdlg_05 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define imoptdlg_06 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define imoptdlg_07 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define imoptdlg_02 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define global_98 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define document_4b SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define table2_46 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define column_4f SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define documen3_1c SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define table3_76 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define table2_9f SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define impex_02 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define impex_06 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define impex_16 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define impex_20 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define impex_10 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define impex_18 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define documen7_13 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define table2_a7 SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define column3_1b SEG_SEGCLASS(SLICES_SEG030,SLICES_CODE)
+#define drawview_04 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
+#define column3_19 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
+#define table2_44 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
+#define drwlayer_02 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
+#define drwlayer_1f SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
+#define interpr1_42 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
+#define table1_0a SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
+#define column_08 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
+#define markarr_0d SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
+#define tabvwshd_04 SEG_SEGCLASS(SLICES_SEG031,SLICES_CODE)
+#define prevwsh_0f SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
+#define editsh_07 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
+#define printfun_2b SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
+#define docsh6_09 SEG_SEGCLASS(SLICES_SEG032,SLICES_CODE)
+#define gridwin4_07 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
+#define attrib_73 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
+#define attrib_a5 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
+#define attrib_a4 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
+#define editutil_0d SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
+#define editutil_1d SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
+#define editutil_11 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
+#define editutil_15 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
+#define editutil_19 SEG_SEGCLASS(SLICES_SEG033,SLICES_CODE)
+#define document_a3 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
+#define column3_09 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
+#define table2_34 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
+#define table4_13 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
+#define column_17 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
+#define column3_0f SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
+#define table4_05 SEG_SEGCLASS(SLICES_SEG034,SLICES_CODE)
+#define column3_1e SEG_SEGCLASS(SLICES_SEG035,SLICES_CODE)
+#define rechead_08 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
+#define cell_0c SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
+#define rechead_0d SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
+#define token_28 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
+#define token_41 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
+#define token_29 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
+#define token_42 SEG_SEGCLASS(SLICES_SEG036,SLICES_CODE)
+#define token_60 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
+#define undoblk3_31 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
+#define filldlg_01 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
+#define filldlg_02 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
+#define filldlg_03 SEG_SEGCLASS(SLICES_SEG037,SLICES_CODE)
+#define filldlg_04 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
+#define filldlg_06 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
+#define filldlg_07 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
+#define filldlg_05 SEG_SEGCLASS(SLICES_SEG038,SLICES_CODE)
+#define filldlg_08 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
+#define document_0b SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
+#define document_11 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
+#define table1_05 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
+#define document_4c SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
+#define table2_47 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
+#define column_50 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
+#define table2_a9 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
+#define column_82 SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
+#define documen7_0e SEG_SEGCLASS(SLICES_SEG039,SLICES_CODE)
+#define table1_25 SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
+#define column2_18 SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
+#define interpr3_05 SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
+#define interpr3_0d SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
+#define interpr3_12 SEG_SEGCLASS(SLICES_SEG040,SLICES_CODE)
+#define interpr3_47 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_4e SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_50 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_4d SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_51 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_54 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_19 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_52 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_15 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_4f SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_55 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_4a SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_48 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_53 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_14 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_49 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_1c SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr5_56 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr5_11 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define scmatrix_01 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define scmatrix_07 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr5_b4 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define scmatrix_0f SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr5_b5 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_46 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define scmatrix_0a SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_35 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_39 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_3a SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_3b SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_3d SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define scmatrix_05 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define scmatrix_02 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define scmatrix_06 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define scmatrix_04 SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr3_4c SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define interpr4_1f SEG_SEGCLASS(SLICES_SEG041,SLICES_CODE)
+#define undoblk3_33 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
+#define undoblk3_5d SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
+#define patattr_06 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
+#define cell_37 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
+#define bcaslot_02 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
+#define tabview_14 SEG_SEGCLASS(SLICES_SEG042,SLICES_CODE)
+#define docoptio_02 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
+#define viewopti_02 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
+#define impop_2c SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
+#define impop_42 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
+#define documen3_3b SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
+#define exctools_02 SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
+#define rangenam_1a SEG_SEGCLASS(SLICES_SEG043,SLICES_CODE)
+#define rangenam_1b SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
+#define cell2_1c SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
+#define cell2_1e SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
+#define documen9_02 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
+#define prevwsh_03 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
+#define prevwsh_06 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
+#define prevwsh_07 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
+#define preview_02 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
+#define preview_01 SEG_SEGCLASS(SLICES_SEG044,SLICES_CODE)
+#define olinetab_0b SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define table2_06 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define olinetab_0e SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define olinetab_22 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define compiler_43 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define compiler_44 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define compiler_54 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define interpr3_02 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define interpr3_03 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define interpr3_09 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define interpr3_01 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define interpr3_13 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define interpr3_16 SEG_SEGCLASS(SLICES_SEG045,SLICES_CODE)
+#define interpr3_0a SEG_SEGCLASS(SLICES_SEG046,SLICES_CODE)
+#define interpr3_0b SEG_SEGCLASS(SLICES_SEG046,SLICES_CODE)
+#define interpr3_0f SEG_SEGCLASS(SLICES_SEG047,SLICES_CODE)
+#define interpr3_17 SEG_SEGCLASS(SLICES_SEG047,SLICES_CODE)
+#define interpr3_1a SEG_SEGCLASS(SLICES_SEG047,SLICES_CODE)
+#define interpr3_20 SEG_SEGCLASS(SLICES_SEG047,SLICES_CODE)
+#define interpr3_27 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
+#define interpr3_32 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
+#define interpr3_34 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
+#define interpr3_45 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
+#define interpr3_36 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
+#define interpr3_33 SEG_SEGCLASS(SLICES_SEG048,SLICES_CODE)
+#define impop_02 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
+#define fontbuff_02 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
+#define fontbuff_03 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
+#define fontbuff_07 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
+#define xfbuff_02 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
+#define xfbuff_0a SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
+#define tokstack_03 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
+#define tokstack_0a SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
+#define frmbase_02 SEG_SEGCLASS(SLICES_SEG049,SLICES_CODE)
+#define impop_0b SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_51 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_49 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_1f SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define fontbuff_09 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_50 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define spstring_06 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define spstring_09 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define spstring_05 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_54 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define spstring_01 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_2a SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define namebuff_07 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_4a SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_45 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define spstring_02 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define spstring_0b SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define vfbuff_03 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define vfbuff_05 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define vfbuff_09 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define spstring_0a SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define namebuff_01 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_0c SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define spstring_08 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_56 SEG_SEGCLASS(SLICES_SEG050,SLICES_CODE)
+#define impop_14 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
+#define impop_1c SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
+#define impop_1d SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
+#define impop_20 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
+#define impop_23 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
+#define impop_27 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
+#define impop_28 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
+#define impop_29 SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
+#define impop_2b SEG_SEGCLASS(SLICES_SEG051,SLICES_CODE)
+#define impop_31 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
+#define impop_36 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
+#define xfbuff_01 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
+#define xfbuff_04 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
+#define xfbuff_07 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
+#define vfbuff_07 SEG_SEGCLASS(SLICES_SEG052,SLICES_CODE)
+#define impop_3b SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
+#define exctools_08 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
+#define impop_40 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
+#define impop_47 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
+#define impop_4e SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
+#define impop_53 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
+#define colrowst_01 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
+#define colrowst_03 SEG_SEGCLASS(SLICES_SEG053,SLICES_CODE)
+#define colrowst_02 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define colrowst_0b SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define colrowst_0d SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define colrowst_14 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define colrowst_10 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define colrowst_11 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define exctools_01 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define exctools_04 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define exctools_06 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define exctools_10 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define exctools_11 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define exctools_14 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define exctools_15 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define exctools_16 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define tokstack_02 SEG_SEGCLASS(SLICES_SEG054,SLICES_CODE)
+#define tokstack_15 SEG_SEGCLASS(SLICES_SEG055,SLICES_CODE)
+#define excform_0a SEG_SEGCLASS(SLICES_SEG055,SLICES_CODE)
+#define tokstack_19 SEG_SEGCLASS(SLICES_SEG055,SLICES_CODE)
+#define tokstack_1a SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
+#define tokstack_1c SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
+#define tokstack_1d SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
+#define namebuff_03 SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
+#define namebuff_12 SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
+#define namebuff_18 SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
+#define excform_04 SEG_SEGCLASS(SLICES_SEG056,SLICES_CODE)
+#define excform_0b SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
+#define excform_0c SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
+#define excform_0d SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
+#define vfbuff_01 SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
+#define fontbuff_01 SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
+#define fontbuff_05 SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
+#define fontbuff_0d SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
+#define xfbuff_09 SEG_SEGCLASS(SLICES_SEG057,SLICES_CODE)
+#define frmbase_01 SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
+#define dbcolect_0d SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
+#define dbcolect_10 SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
+#define documen3_06 SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
+#define dociter_1a SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
+#define dociter_1b SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
+#define dociter_1c SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
+#define dociter_1d SEG_SEGCLASS(SLICES_SEG058,SLICES_CODE)
+#define compiler_53 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
+#define compiler_08 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
+#define undoblk2_2d SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
+#define undoblk2_31 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
+#define column3_13 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
+#define table2_3e SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
+#define interpr1_6d SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
+#define interpr2_10 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
+#define interpr2_26 SEG_SEGCLASS(SLICES_SEG059,SLICES_CODE)
+#define tokstack_1e SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
+#define dbcolect_19 SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
+#define interpr1_46 SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
+#define interpr1_48 SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
+#define interpr1_4b SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
+#define interpr1_4c SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
+#define interpr1_4f SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
+#define interpr1_56 SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
+#define interpr1_58 SEG_SEGCLASS(SLICES_SEG060,SLICES_CODE)
+#define interpr2_13 SEG_SEGCLASS(SLICES_SEG061,SLICES_CODE)
+#define interpr2_17 SEG_SEGCLASS(SLICES_SEG061,SLICES_CODE)
+#define interpr2_25 SEG_SEGCLASS(SLICES_SEG061,SLICES_CODE)
+#define interpr2_29 SEG_SEGCLASS(SLICES_SEG061,SLICES_CODE)
+#define interpr2_3e SEG_SEGCLASS(SLICES_SEG062,SLICES_CODE)
+#define interpr2_3f SEG_SEGCLASS(SLICES_SEG062,SLICES_CODE)
+#define interpr2_41 SEG_SEGCLASS(SLICES_SEG062,SLICES_CODE)
+#define interpr2_42 SEG_SEGCLASS(SLICES_SEG062,SLICES_CODE)
+#define interpr2_57 SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
+#define interpr5_76 SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
+#define appmain_02 SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
+#define docsh_09 SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
+#define docsh_0d SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
+#define docsh_3a SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
+#define appmain9_02 SEG_SEGCLASS(SLICES_SEG063,SLICES_CODE)
+#define docsh4_05 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
+#define printfun_01 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
+#define printfun_2a SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
+#define global_10 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
+#define compiler_02 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
+#define interpr4_c2 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
+#define callform_09 SEG_SEGCLASS(SLICES_SEG064,SLICES_CODE)
+#define documen2_09 SEG_SEGCLASS(SLICES_SEG065,SLICES_CODE)
+#define dociter_12 SEG_SEGCLASS(SLICES_SEG065,SLICES_CODE)
+#define adiasync_03 SEG_SEGCLASS(SLICES_SEG065,SLICES_CODE)
+#define interpr2_38 SEG_SEGCLASS(SLICES_SEG065,SLICES_CODE)
+#define interpr2_39 SEG_SEGCLASS(SLICES_SEG065,SLICES_CODE)
+#define interpr2_3a SEG_SEGCLASS(SLICES_SEG066,SLICES_CODE)
+#define interpr2_43 SEG_SEGCLASS(SLICES_SEG066,SLICES_CODE)
+#define interpr3_2a SEG_SEGCLASS(SLICES_SEG067,SLICES_CODE)
+#define impop_25 SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
+#define exctools_0d SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
+#define colrowst_07 SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
+#define tabvwsh4_0c SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
+#define prevwsh_09 SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
+#define prevwsh_1c SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
+#define hdrcont_07 SEG_SEGCLASS(SLICES_SEG068,SLICES_CODE)
+#define tphf_02 SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
+#define tphf_04 SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
+#define tphf_0d SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
+#define tphf_03 SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
+#define tphf_0c SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
+#define tphf_06 SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
+#define tphf_07 SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
+#define tphf_0a SEG_SEGCLASS(SLICES_SEG069,SLICES_CODE)
+#define fupoor_05 SEG_SEGCLASS(SLICES_SEG070,SLICES_CODE)
+#define cell2_20 SEG_SEGCLASS(SLICES_SEG070,SLICES_CODE)
+#define dbcolect_03 SEG_SEGCLASS(SLICES_SEG070,SLICES_CODE)
+#define dbcolect_1f SEG_SEGCLASS(SLICES_SEG070,SLICES_CODE)
+#define collect_14 SEG_SEGCLASS(SLICES_SEG070,SLICES_CODE)
+#define interpr4_15 SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
+#define compiler_0a SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
+#define interpr1_6e SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
+#define interpr1_6f SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
+#define table2_af SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
+#define column2_17 SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
+#define table1_11 SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
+#define document_18 SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
+#define column2_1e SEG_SEGCLASS(SLICES_SEG071,SLICES_CODE)
+#define scmatrix_09 SEG_SEGCLASS(SLICES_SEG072,SLICES_CODE)
+#define interpr3_04 SEG_SEGCLASS(SLICES_SEG072,SLICES_CODE)
+#define interpr3_0c SEG_SEGCLASS(SLICES_SEG072,SLICES_CODE)
+#define undodat_31 SEG_SEGCLASS(SLICES_SEG072,SLICES_CODE)
+#define undodat_3f SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define undodat_54 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define attrdlg_01 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define attrdlg_02 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define attrdlg_03 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define drawview_18 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define undoblk3_26 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define gridwin_24 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define fupoor_03 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define fupoor_04 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define fudraw_07 SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define documen3_1e SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define table3_7a SEG_SEGCLASS(SLICES_SEG073,SLICES_CODE)
+#define document_35 SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
+#define document_76 SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
+#define table2_4d SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
+#define column_0c SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
+#define attarray_0c SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
+#define attarray_0b SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
+#define attarray_0a SEG_SEGCLASS(SLICES_SEG074,SLICES_CODE)
+#define global2_02 SEG_SEGCLASS(SLICES_SEG075,SLICES_CODE)
+#define dbcolect_12 SEG_SEGCLASS(SLICES_SEG075,SLICES_CODE)
+#define dbcolect_13 SEG_SEGCLASS(SLICES_SEG075,SLICES_CODE)
+#define interpr4_2d SEG_SEGCLASS(SLICES_SEG076,SLICES_CODE)
+#define interpr3_23 SEG_SEGCLASS(SLICES_SEG076,SLICES_CODE)
+#define interpr3_18 SEG_SEGCLASS(SLICES_SEG076,SLICES_CODE)
+#define interpr3_22 SEG_SEGCLASS(SLICES_SEG076,SLICES_CODE)
+#define interpr3_26 SEG_SEGCLASS(SLICES_SEG077,SLICES_CODE)
+#define interpr3_2f SEG_SEGCLASS(SLICES_SEG077,SLICES_CODE)
+#define interpr3_30 SEG_SEGCLASS(SLICES_SEG078,SLICES_CODE)
+#define interpr3_4b SEG_SEGCLASS(SLICES_SEG079,SLICES_CODE)
+#define impop_37 SEG_SEGCLASS(SLICES_SEG080,SLICES_CODE)
+#define colrowst_0e SEG_SEGCLASS(SLICES_SEG080,SLICES_CODE)
+#define excform_0e SEG_SEGCLASS(SLICES_SEG080,SLICES_CODE)
+#define excform_0f SEG_SEGCLASS(SLICES_SEG080,SLICES_CODE)
+#define appmain_08 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define inputwin_2a SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define inputwin_05 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define appmain_0f SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define inputhdl_13 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define inputhdl_0a SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define inputwin_03 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define viewfun2_8a SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define document_4a SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define tabview4_04 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define tabview4_03 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define appmain3_06 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define inputhdl_0e SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define viewutil_03 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define viewfun2_88 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define inputwin_13 SEG_SEGCLASS(SELDOM_SEG000,SELDOM_CODE)
+#define appmain_0e SEG_SEGCLASS(SELDOM_SEG001,SELDOM_CODE)
+#define inputhdl_12 SEG_SEGCLASS(SELDOM_SEG001,SELDOM_CODE)
+#define docsh_05 SEG_SEGCLASS(SELDOM_SEG001,SELDOM_CODE)
+#define appmain6_04 SEG_SEGCLASS(SELDOM_SEG001,SELDOM_CODE)
+#define appmain7_07 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define global_0c SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define table4_01 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define table4_03 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define column_16 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define userlist_09 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define collect_09 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define userlist_01 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define userlist_13 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define userlist_05 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define userlist_0a SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define userlist_04 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define userlist_06 SEG_SEGCLASS(SELDOM_SEG002,SELDOM_CODE)
+#define inputwin_1f SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define inputhdl_2a SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define docsh4_0c SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define docsh4_10 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphf_05 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_02 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_05 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_02 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_04 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_01 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_05 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_08 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_07 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_0e SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_06 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_0c SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_0d SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_0b SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tptable_0a SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_06 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_0c SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_09 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_23 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_15 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_01 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_08 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_16 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_12 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_19 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_0a SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_26 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define prevwsh_20 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_17 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_0b SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_10 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_11 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_13 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_14 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_24 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tphfedit_25 SEG_SEGCLASS(SELDOM_SEG003,SELDOM_CODE)
+#define tabview5_0e SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
+#define fumark_04 SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
+#define fumark_0b SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
+#define tabview_6a SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
+#define gridwin_27 SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
+#define fumark_09 SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
+#define viewdata_53 SEG_SEGCLASS(SELDOM_SEG004,SELDOM_CODE)
+#define uiitems_17 SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
+#define uiitems_1a SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
+#define global2_08 SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
+#define uiitems_24 SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
+#define uiitems_27 SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
+#define global2_1a SEG_SEGCLASS(SELDOM_SEG005,SELDOM_CODE)
+#define uiitems_39 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
+#define uiitems_3d SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
+#define global2_28 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
+#define global2_33 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
+#define global2_35 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
+#define global2_34 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
+#define global2_32 SEG_SEGCLASS(SELDOM_SEG006,SELDOM_CODE)
+#define tabvwshc_02 SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
+#define tabview_08 SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
+#define tabview2_0c SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
+#define tabview_6e SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
+#define viewdata_51 SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
+#define drawsh2_06 SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
+#define gridwin_35 SEG_SEGCLASS(SELDOM_SEG007,SELDOM_CODE)
+#define tabview3_5d SEG_SEGCLASS(SELDOM_SEG008,SELDOM_CODE)
+#define tabview3_5e SEG_SEGCLASS(SELDOM_SEG008,SELDOM_CODE)
+#define dbfunc_0d SEG_SEGCLASS(SELDOM_SEG008,SELDOM_CODE)
+#define tabview4_09 SEG_SEGCLASS(SELDOM_SEG008,SELDOM_CODE)
+#define colrowba_13 SEG_SEGCLASS(SELDOM_SEG008,SELDOM_CODE)
+#define docfunc_01 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define fuconrec_05 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define fuconstr_05 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define fuconstr_09 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define fuins1_01 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define fuins1_09 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define tabvwshb_03 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define tabview5_09 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define fuins1_02 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define fuins1_0a SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define tabview_68 SEG_SEGCLASS(SELDOM_SEG009,SELDOM_CODE)
+#define preview_06 SEG_SEGCLASS(SELDOM_SEG010,SELDOM_CODE)
+#define gridwin_02 SEG_SEGCLASS(SELDOM_SEG010,SELDOM_CODE)
+#define colrowba_06 SEG_SEGCLASS(SELDOM_SEG010,SELDOM_CODE)
+#define undoblk2_2b SEG_SEGCLASS(SELDOM_SEG010,SELDOM_CODE)
+#define output_11 SEG_SEGCLASS(SELDOM_SEG010,SELDOM_CODE)
+#define undoolk_03 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
+#define undoblk2_2c SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
+#define undobase_02 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
+#define tbxalign_01 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
+#define imoptdlg_0a SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
+#define drawsh_09 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
+#define fusel_08 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
+#define fuconrec_03 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
+#define fuconstr_03 SEG_SEGCLASS(SELDOM_SEG011,SELDOM_CODE)
+#define fuconrec_04 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define fuconstr_04 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define pvlaydlg_01 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define pvlaydlg_03 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define pvlaydlg_06 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define fieldwnd_03 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define pvlaydlg_07 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define fieldwnd_04 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define fieldwnd_11 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define pvlaydlg_14 SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define pvlaydlg_1d SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define fieldwnd_0b SEG_SEGCLASS(SELDOM_SEG012,SELDOM_CODE)
+#define tphf_08 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
+#define tphf_09 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
+#define tbxdraw_04 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
+#define fudraw_06 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
+#define fuconstr_07 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
+#define fuconrec_07 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
+#define fusel_07 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
+#define fieldwnd_01 SEG_SEGCLASS(SELDOM_SEG013,SELDOM_CODE)
+#define attrib_3b SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
+#define documen7_0b SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
+#define documen7_11 SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
+#define documen7_10 SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
+#define documen7_0f SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
+#define cell_3a SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
+#define documen7_12 SEG_SEGCLASS(SELDOM_SEG014,SELDOM_CODE)
+#define docpool_06 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define cell_0a SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define cell_12 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define compiler_05 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define compiler_15 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define compiler_14 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define compiler_0b SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define compiler_0c SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define cell_26 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define compiler_0d SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define compiler_0e SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define compiler_13 SEG_SEGCLASS(SELDOM_SEG015,SELDOM_CODE)
+#define cell2_21 SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
+#define rangeutl_07 SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
+#define autoform_27 SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
+#define autoform_2c SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
+#define autoform_2e SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
+#define zforauto_05 SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
+#define autoform_2f SEG_SEGCLASS(SELDOM_SEG016,SELDOM_CODE)
+#define autoform_29 SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
+#define autoform_2b SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
+#define drwlayer_08 SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
+#define drwlayer_09 SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
+#define interpr1_64 SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
+#define interpr1_a3 SEG_SEGCLASS(SELDOM_SEG017,SELDOM_CODE)
+#define table4_04 SEG_SEGCLASS(SELDOM_SEG018,SELDOM_CODE)
+#define subtotal_08 SEG_SEGCLASS(SELDOM_SEG018,SELDOM_CODE)
+#define subtotal_09 SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
+#define impop_0d SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
+#define spstring_07 SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
+#define impop_0e SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
+#define namebuff_0f SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
+#define rangenam_02 SEG_SEGCLASS(SELDOM_SEG019,SELDOM_CODE)
+#define impop_3a SEG_SEGCLASS(SELDOM_SEG020,SELDOM_CODE)
+#define impop_4f SEG_SEGCLASS(SELDOM_SEG020,SELDOM_CODE)
+#define excform_10 SEG_SEGCLASS(SELDOM_SEG020,SELDOM_CODE)
+#define tabvwsh8_02 SEG_SEGCLASS(SELDOM_SEG021,SELDOM_CODE)
+#define tabvwsh8_06 SEG_SEGCLASS(SELDOM_SEG021,SELDOM_CODE)
+#define tabvwshf_01 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define document_0d SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define document_0c SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define document_0e SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define viewfun2_27 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define viewdata_09 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define docsh3_14 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define tabcont_0c SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define strindlg_01 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define strindlg_02 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define strindlg_03 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define undotab_01 SEG_SEGCLASS(SELDOM_SEG022,SELDOM_CODE)
+#define uiitems_1e SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
+#define uiitems_21 SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
+#define filtdlg_0b SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
+#define filtdlg_04 SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
+#define anyrefdg_04 SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
+#define filtdlg_0a SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
+#define uiitems_1d SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
+#define global2_12 SEG_SEGCLASS(SELDOM_SEG023,SELDOM_CODE)
+#define tabview_64 SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
+#define viewfunc_37 SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
+#define document_6f SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
+#define table2_8c SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
+#define column_68 SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
+#define attarray_28 SEG_SEGCLASS(SELDOM_SEG024,SELDOM_CODE)
+#define viewfunc_40 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
+#define undotab_02 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
+#define undotab_03 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
+#define undotab_1f SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
+#define tbxctl_03 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
+#define tbxctl_04 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
+#define tbxdraw_01 SEG_SEGCLASS(SELDOM_SEG025,SELDOM_CODE)
+#define fumark_07 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define fumark_08 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define fuconrec_01 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define fuconrec_02 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define fuconrec_08 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define fuconstr_08 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define drawsh2_01 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define filtdlg_08 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define filtdlg_03 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define filtdlg_01 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define filtdlg_0e SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define filtdlg_07 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define filtdlg_09 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define foptmgr_01 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define foptmgr_03 SEG_SEGCLASS(SELDOM_SEG026,SELDOM_CODE)
+#define tbxdraw_02 SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
+#define tbxdraw_03 SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
+#define fuconstr_01 SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
+#define fuconstr_02 SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
+#define fuconstr_0a SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
+#define rangenam_08 SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
+#define cell_3b SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
+#define interpr4_1b SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
+#define interpr1_8e SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
+#define interpr1_8f SEG_SEGCLASS(SELDOM_SEG027,SELDOM_CODE)
+#define interpr4_27 SEG_SEGCLASS(SELDOM_SEG028,SELDOM_CODE)
+#define interpr1_38 SEG_SEGCLASS(SELDOM_SEG028,SELDOM_CODE)
+#define interpr1_39 SEG_SEGCLASS(SELDOM_SEG028,SELDOM_CODE)
+#define interpr1_3c SEG_SEGCLASS(SELDOM_SEG028,SELDOM_CODE)
+#define interpr1_3d SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr1_3e SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr1_81 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr1_82 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr1_83 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr1_87 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr1_88 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr1_b8 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr1_89 SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr1_8a SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr1_8b SEG_SEGCLASS(SELDOM_SEG029,SELDOM_CODE)
+#define interpr3_2b SEG_SEGCLASS(SELDOM_SEG030,SELDOM_CODE)
+#define interpr3_37 SEG_SEGCLASS(SELDOM_SEG030,SELDOM_CODE)
+#define interpr3_3c SEG_SEGCLASS(SELDOM_SEG030,SELDOM_CODE)
+#define interpr3_3e SEG_SEGCLASS(SELDOM_SEG031,SELDOM_CODE)
+#define interpr3_3f SEG_SEGCLASS(SELDOM_SEG031,SELDOM_CODE)
+#define interpr3_56 SEG_SEGCLASS(SELDOM_SEG032,SELDOM_CODE)
+#define impop_15 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define impop_34 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define tokstack_0b SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define tabvwsh4_0a SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define tabvwsh4_22 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define dbdocfun_01 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define dbdocfun_02 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define document_1d SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define dbcolect_07 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define documen4_02 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define documen2_10 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define table2_91 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define column3_02 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define documen4_0a SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define table4_12 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define column2_28 SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define documen4_0b SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define table1_2d SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define undodat_3d SEG_SEGCLASS(SELDOM_SEG033,SELDOM_CODE)
+#define viewdata_2a SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
+#define undodat_32 SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
+#define undodat_3e SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
+#define dbfunc_0c SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
+#define attrib_31 SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
+#define document_9b SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
+#define table2_9c SEG_SEGCLASS(SELDOM_SEG034,SELDOM_CODE)
+#define undoblk3_3e SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
+#define undocell_01 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
+#define undocell_02 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
+#define undocell_03 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
+#define undocell_19 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
+#define tabsplit_03 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
+#define select_12 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
+#define select_15 SEG_SEGCLASS(SELDOM_SEG035,SELDOM_CODE)
+#define select_17 SEG_SEGCLASS(SELDOM_SEG036,SELDOM_CODE)
+#define gridwin4_04 SEG_SEGCLASS(SELDOM_SEG036,SELDOM_CODE)
+#define hdrcont_0c SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
+#define fumark_01 SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
+#define fumark_03 SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
+#define drawsh2_02 SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
+#define filtdlg_02 SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
+#define foptmgr_02 SEG_SEGCLASS(SELDOM_SEG037,SELDOM_CODE)
+#define filtdlg_11 SEG_SEGCLASS(SELDOM_SEG038,SELDOM_CODE)
+#define filtdlg_12 SEG_SEGCLASS(SELDOM_SEG038,SELDOM_CODE)
+#define anyrefdg_02 SEG_SEGCLASS(SELDOM_SEG038,SELDOM_CODE)
+#define global_02 SEG_SEGCLASS(SELDOM_SEG038,SELDOM_CODE)
+#define interpr1_8d SEG_SEGCLASS(SELDOM_SEG038,SELDOM_CODE)
+#define attrib_3c SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
+#define attrib_3d SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
+#define attrib_79 SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
+#define attrib_80 SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
+#define attrib_98 SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
+#define documen8_0e SEG_SEGCLASS(SELDOM_SEG039,SELDOM_CODE)
+#define document_40 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
+#define impop_0f SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
+#define global2_42 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
+#define global2_46 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
+#define table2_8a SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
+#define column3_10 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
+#define cell_04 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
+#define global2_44 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
+#define global2_45 SEG_SEGCLASS(SELDOM_SEG040,SELDOM_CODE)
+#define document_5a SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
+#define table2_5d SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
+#define document_5b SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
+#define table2_5e SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
+#define document_66 SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
+#define table2_4f SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
+#define column_12 SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
+#define document_9f SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
+#define excobj_01 SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
+#define document_a0 SEG_SEGCLASS(SELDOM_SEG041,SELDOM_CODE)
+#define document_b6 SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
+#define table1_2e SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
+#define column3_04 SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
+#define patattr_03 SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
+#define global2_48 SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
+#define interpr1_8c SEG_SEGCLASS(SELDOM_SEG042,SELDOM_CODE)
+#define rangenam_09 SEG_SEGCLASS(SELDOM_SEG043,SELDOM_CODE)
+#define dbcolect_02 SEG_SEGCLASS(SELDOM_SEG043,SELDOM_CODE)
+#define drwlayer_07 SEG_SEGCLASS(SELDOM_SEG044,SELDOM_CODE)
+#define interpr4_1e SEG_SEGCLASS(SELDOM_SEG044,SELDOM_CODE)
+#define interpr1_7b SEG_SEGCLASS(SELDOM_SEG044,SELDOM_CODE)
+#define interpr1_2f SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_3f SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_40 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_41 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_44 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_45 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_47 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_49 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_4a SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_4d SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_4e SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_50 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_51 SEG_SEGCLASS(SELDOM_SEG045,SELDOM_CODE)
+#define interpr1_52 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
+#define interpr1_53 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
+#define interpr1_54 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
+#define interpr1_55 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
+#define interpr1_60 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
+#define interpr1_61 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
+#define interpr1_62 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
+#define interpr1_63 SEG_SEGCLASS(SELDOM_SEG046,SELDOM_CODE)
+#define interpr1_65 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
+#define interpr1_66 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
+#define interpr1_67 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
+#define interpr1_68 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
+#define interpr1_69 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
+#define interpr1_76 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
+#define interpr1_77 SEG_SEGCLASS(SELDOM_SEG047,SELDOM_CODE)
+#define interpr1_78 SEG_SEGCLASS(SELDOM_SEG048,SELDOM_CODE)
+#define interpr1_79 SEG_SEGCLASS(SELDOM_SEG048,SELDOM_CODE)
+#define interpr1_7a SEG_SEGCLASS(SELDOM_SEG049,SELDOM_CODE)
+#define interpr1_7c SEG_SEGCLASS(SELDOM_SEG050,SELDOM_CODE)
+#define interpr1_7e SEG_SEGCLASS(SELDOM_SEG051,SELDOM_CODE)
+#define interpr1_91 SEG_SEGCLASS(SELDOM_SEG051,SELDOM_CODE)
+#define interpr1_92 SEG_SEGCLASS(SELDOM_SEG051,SELDOM_CODE)
+#define interpr1_93 SEG_SEGCLASS(SELDOM_SEG052,SELDOM_CODE)
+#define interpr1_94 SEG_SEGCLASS(SELDOM_SEG052,SELDOM_CODE)
+#define interpr1_95 SEG_SEGCLASS(SELDOM_SEG053,SELDOM_CODE)
+#define interpr1_96 SEG_SEGCLASS(SELDOM_SEG053,SELDOM_CODE)
+#define interpr1_98 SEG_SEGCLASS(SELDOM_SEG053,SELDOM_CODE)
+#define interpr1_99 SEG_SEGCLASS(SELDOM_SEG053,SELDOM_CODE)
+#define interpr1_9a SEG_SEGCLASS(SELDOM_SEG054,SELDOM_CODE)
+#define interpr1_9b SEG_SEGCLASS(SELDOM_SEG054,SELDOM_CODE)
+#define interpr1_9c SEG_SEGCLASS(SELDOM_SEG054,SELDOM_CODE)
+#define interpr1_9d SEG_SEGCLASS(SELDOM_SEG054,SELDOM_CODE)
+#define interpr1_9e SEG_SEGCLASS(SELDOM_SEG055,SELDOM_CODE)
+#define interpr1_a4 SEG_SEGCLASS(SELDOM_SEG055,SELDOM_CODE)
+#define interpr1_a5 SEG_SEGCLASS(SELDOM_SEG056,SELDOM_CODE)
+#define interpr1_a9 SEG_SEGCLASS(SELDOM_SEG056,SELDOM_CODE)
+#define interpr1_b6 SEG_SEGCLASS(SELDOM_SEG056,SELDOM_CODE)
+#define interpr1_aa SEG_SEGCLASS(SELDOM_SEG056,SELDOM_CODE)
+#define interpr1_af SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
+#define table2_7e SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
+#define interpr2_08 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
+#define interpr2_09 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
+#define interpr2_12 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
+#define interpr2_14 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
+#define interpr2_15 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
+#define interpr2_16 SEG_SEGCLASS(SELDOM_SEG057,SELDOM_CODE)
+#define interpr2_18 SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
+#define interpr2_1b SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
+#define interpr2_1c SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
+#define interpr2_1d SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
+#define interpr2_b4 SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
+#define interpr2_71 SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
+#define interpr2_4e SEG_SEGCLASS(SELDOM_SEG058,SELDOM_CODE)
+#define interpr2_21 SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
+#define interpr2_22 SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
+#define interpr2_23 SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
+#define interpr2_27 SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
+#define interpr2_28 SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
+#define interpr2_3c SEG_SEGCLASS(SELDOM_SEG059,SELDOM_CODE)
+#define interpr2_40 SEG_SEGCLASS(SELDOM_SEG060,SELDOM_CODE)
+#define interpr2_49 SEG_SEGCLASS(SELDOM_SEG060,SELDOM_CODE)
+#define interpr2_4a SEG_SEGCLASS(SELDOM_SEG061,SELDOM_CODE)
+#define interpr2_4b SEG_SEGCLASS(SELDOM_SEG061,SELDOM_CODE)
+#define interpr2_4c SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
+#define interpr2_4d SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
+#define interpr2_70 SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
+#define interpr2_72 SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
+#define interpr2_73 SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
+#define interpr2_74 SEG_SEGCLASS(SELDOM_SEG062,SELDOM_CODE)
+#define interpr2_75 SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
+#define interpr2_af SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
+#define interpr2_b3 SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
+#define interpr5_4f SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
+#define interpr5_50 SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
+#define interpr5_64 SEG_SEGCLASS(SELDOM_SEG063,SELDOM_CODE)
+#define interpr5_52 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
+#define interpr5_b0 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
+#define interpr5_66 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
+#define interpr5_67 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
+#define interpr5_68 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
+#define interpr5_69 SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
+#define interpr5_6a SEG_SEGCLASS(SELDOM_SEG064,SELDOM_CODE)
+#define interpr5_5f SEG_SEGCLASS(SELDOM_SEG065,SELDOM_CODE)
+#define interpr5_78 SEG_SEGCLASS(SELDOM_SEG065,SELDOM_CODE)
+#define interpr5_60 SEG_SEGCLASS(SELDOM_SEG065,SELDOM_CODE)
+#define interpr5_6c SEG_SEGCLASS(SELDOM_SEG065,SELDOM_CODE)
+#define interpr5_6e SEG_SEGCLASS(SELDOM_SEG066,SELDOM_CODE)
+#define interpr5_6f SEG_SEGCLASS(SELDOM_SEG066,SELDOM_CODE)
+#define interpr3_08 SEG_SEGCLASS(SELDOM_SEG066,SELDOM_CODE)
+#define interpr3_0e SEG_SEGCLASS(SELDOM_SEG067,SELDOM_CODE)
+#define interpr3_21 SEG_SEGCLASS(SELDOM_SEG067,SELDOM_CODE)
+#define interpr3_24 SEG_SEGCLASS(SELDOM_SEG068,SELDOM_CODE)
+#define interpr3_25 SEG_SEGCLASS(SELDOM_SEG069,SELDOM_CODE)
+#define interpr3_2c SEG_SEGCLASS(SELDOM_SEG069,SELDOM_CODE)
+#define interpr3_2d SEG_SEGCLASS(SELDOM_SEG069,SELDOM_CODE)
+#define interpr3_38 SEG_SEGCLASS(SELDOM_SEG070,SELDOM_CODE)
+#define interpr3_44 SEG_SEGCLASS(SELDOM_SEG070,SELDOM_CODE)
+#define impop_30 SEG_SEGCLASS(SELDOM_SEG071,SELDOM_CODE)
+#define colrowst_05 SEG_SEGCLASS(SELDOM_SEG071,SELDOM_CODE)
+#define tokstack_0c SEG_SEGCLASS(SELDOM_SEG071,SELDOM_CODE)
+#define tokstack_0f SEG_SEGCLASS(SELDOM_SEG071,SELDOM_CODE)
+#define appmain_0c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_24 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_25 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_2f SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_30 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_31 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_32 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_33 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_34 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_38 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_3a SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_51 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_52 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain_5c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh_0a SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh_0c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh_33 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh_35 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh_3e SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh_42 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh_43 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain2_01 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain2_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain6_01 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain6_06 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain7_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain7_04 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain7_06 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain7_09 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain7_0b SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain7_0d SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain7_0f SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain7_11 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define applink_05 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain3_05 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain3_07 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain3_08 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain3_09 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain4_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain4_03 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain4_04 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmain4_05 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define msgpool_03 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputwin_10 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputwin_11 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputwin_12 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputwin_15 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputwin_1b SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputwin_1c SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputwin_24 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputwin_25 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputwin_27 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputhdl_09 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputhdl_1d SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputhdl_1e SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputhdl_1f SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define inputhdl_20 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmaina_01 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define appmaina_02 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh4_03 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh4_06 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh4_07 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh4_08 SEG_SEGCLASS(UNUSED_SEG000,UNUSED_CODE)
+#define docsh4_09 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define docsh4_0a SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define docsh4_0b SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define docsh4_0e SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define docsh4_12 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh9_01 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh9_03 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh9_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwshh_01 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwshh_02 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwshh_03 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwshb_01 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwshb_02 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwshb_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh2_07 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh2_08 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwshd_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwshd_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh8_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh8_07 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh8_08 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_04 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_08 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_0e SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_0f SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_10 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_17 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_18 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_1c SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_20 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_21 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_2b SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_2c SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_2e SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_31 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_32 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_33 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabvwsh4_34 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define tabview5_0a SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_15 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_18 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_19 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_1f SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_20 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_23 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_25 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_26 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_2a SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_2b SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_2c SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_2d SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_33 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_35 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_36 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_37 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_3b SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_3c SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_41 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_43 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_44 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_45 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_46 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_47 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_48 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_49 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_4a SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_4b SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_4c SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_4d SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define uiitems_4e SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define sbxtable_01 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define sbxtable_02 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define sbxtable_03 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define sbxtable_04 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define sbxtable_05 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define sbxtable_06 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define sbxtable_07 SEG_SEGCLASS(UNUSED_SEG001,UNUSED_CODE)
+#define sbxtable_08 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define sbxtable_09 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define sbxtable_0a SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define sbxtable_0b SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define sbxtable_0c SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define sbxtable_0e SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define docsh6_07 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define docsh6_08 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define docsh6_0a SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define docsh6_0b SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_07 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_08 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_0a SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_0b SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_12 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_13 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_14 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_15 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_17 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_19 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_23 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_24 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_25 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_26 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_27 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_28 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_29 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_2a SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_2b SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_2e SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_2f SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_30 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_31 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define impex_32 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define docsh2_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define docsh2_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define tpstat_01 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define tpstat_02 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define tpstat_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define tpstat_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define tpstat_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define docsh7_01 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define dbdocfun_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define docsh3_17 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define docsh3_18 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define autostyl_01 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define autostyl_02 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define autostyl_03 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define autostyl_04 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define autostyl_05 SEG_SEGCLASS(UNUSED_SEG002,UNUSED_CODE)
+#define autostyl_06 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define autostyl_07 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define autostyl_08 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define prevwsh_04 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define prevwsh_08 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define prevwsh_0a SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define prevwsh_0d SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define prevwsh_10 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define prevwsh_11 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define prevwsh_17 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define prevwsh_1b SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define prevwsh_1d SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define prevwsh_1e SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define pivotsh_01 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define pivotsh_02 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define pivotsh_03 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define pivotsh_04 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define editsh_04 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define editsh_06 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define editsh_0b SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_17 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_18 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_19 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_1b SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_1d SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_1e SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_20 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_21 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_24 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_25 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_26 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_28 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_29 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_2a SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_2b SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_2c SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_2d SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_2e SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_2f SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_30 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_31 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_32 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_87 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_89 SEG_SEGCLASS(UNUSED_SEG003,UNUSED_CODE)
+#define viewfun2_8c SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewfun2_8d SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_0d SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_0f SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_10 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_19 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_1a SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_1b SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_65 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_66 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_67 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_6b SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_6c SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_6f SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_70 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_71 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_74 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_76 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview_77 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_02 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_05 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_07 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_08 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_0a SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_0b SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_0c SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_0f SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_12 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_13 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_14 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_16 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_19 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_29 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_34 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_35 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_39 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_3d SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_40 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_41 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_42 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_47 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_4b SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_50 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_52 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_55 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewdata_56 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview3_2d SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview3_2e SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview3_2f SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview3_30 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview3_32 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview3_39 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview3_45 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview3_67 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview3_68 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define tabview3_69 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewfunc_04 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewfunc_05 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewfunc_0e SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewfunc_10 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewfunc_11 SEG_SEGCLASS(UNUSED_SEG004,UNUSED_CODE)
+#define viewfunc_12 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_32 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_35 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_36 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_39 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_3a SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_3c SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_3d SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_3f SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_41 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_42 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_43 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_44 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define viewfunc_45 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define tabview2_01 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define tabview2_07 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define tabview2_0d SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define tabview2_0e SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define tabview2_12 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define printfun_03 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define printfun_23 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define printfun_26 SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define printfun_2d SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define printfun_2e SEG_SEGCLASS(UNUSED_SEG005,UNUSED_CODE)
+#define printfun_2f SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define sbxrange_01 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define sbxrange_02 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define sbxrange_03 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define sbxrange_04 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define sbxrange_05 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define dataobj_01 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define dataobj_02 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define dataobj_03 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define dataobj_05 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define dataobj_08 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define dataobj_09 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define dataobj_0a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define dataobj_0b SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define dataobj_0c SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_02 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_03 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_04 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_05 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_06 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_07 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_08 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_09 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_0a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_0b SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_0c SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_0d SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_0e SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_0f SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_10 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_11 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_12 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_13 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_14 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_15 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_16 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_17 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_18 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_19 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_1a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_1b SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_1c SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_1d SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_1e SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_1f SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_20 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_21 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_22 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_23 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_24 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_25 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_26 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_27 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_28 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_29 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_2a SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_2b SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_2c SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_2d SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_2e SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_2f SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_30 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_34 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_35 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_36 SEG_SEGCLASS(UNUSED_SEG006,UNUSED_CODE)
+#define undodat_37 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_38 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_39 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_3a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_3b SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_3c SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_40 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_41 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_42 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_49 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_4a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_4b SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_4c SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_4e SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_4f SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_50 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_51 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_52 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_53 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_56 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_57 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_58 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_59 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_5a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_5b SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_5c SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_5d SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_5e SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_5f SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_60 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_61 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_62 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_63 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_64 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_65 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_66 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_67 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_68 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_69 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define undodat_6a SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define servobj_01 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define servobj_02 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define servobj_03 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define servobj_04 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define servobj_05 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define servobj_06 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_01 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_02 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_03 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_04 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_05 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_06 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_07 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_08 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_09 SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_0b SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_0c SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_0e SEG_SEGCLASS(UNUSED_SEG007,UNUSED_CODE)
+#define dbfunc3_0f SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define dbfunc3_11 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define dbfunc3_12 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define dbfunc3_13 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define galwrap_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define galwrap_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define galwrap_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define galwrap_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define galwrap_06 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define galwrap_07 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define styledlg_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define attrdlg_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define dbfunc_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define dbfunc_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define dbfunc_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define dbfunc_07 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define dbfunc_08 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define dbfunc_17 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define dbfunc_18 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define client_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define client_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define client_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define client_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define client_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define tabvwshe_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define tabvwshe_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define tabvwshe_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define viewfun4_01 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define viewfun4_02 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define viewfun4_03 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define viewfun4_04 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define viewfun4_05 SEG_SEGCLASS(UNUSED_SEG008,UNUSED_CODE)
+#define viewfun6_01 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun6_02 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun6_03 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun6_04 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun6_05 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun6_06 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun3_01 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun3_02 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun3_03 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun3_05 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun3_07 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun3_08 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun3_0b SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun3_14 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define viewfun3_15 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tabview4_02 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tabview4_08 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define drawview_07 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define drawview_12 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define drawview_1a SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_01 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_02 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_03 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_04 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_05 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_06 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_07 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_08 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_09 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_0a SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define tablink_0b SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_01 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_02 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_03 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_04 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_05 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_06 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_07 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_08 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_09 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_0a SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_0b SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_0c SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_0d SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_0e SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_0f SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_10 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_11 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_12 SEG_SEGCLASS(UNUSED_SEG009,UNUSED_CODE)
+#define undoblk_13 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_14 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_15 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_16 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_17 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_18 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_19 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_1a SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_1b SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_1c SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_1d SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_1e SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_1f SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_20 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_21 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_22 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_23 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_24 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_25 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_26 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_27 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_28 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_29 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_2a SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_2b SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_2c SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_2d SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_2e SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_2f SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_30 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_31 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_32 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_33 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_34 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_35 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_36 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_37 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_38 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_39 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_3a SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_3b SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_3c SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_3d SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_3e SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_3f SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_40 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_41 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_42 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_43 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_44 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_45 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_46 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_47 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define undoblk_48 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define preview_04 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define preview_05 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define preview_13 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define preview_14 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define viewutil_06 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_01 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_02 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_03 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_04 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_05 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_06 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_07 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_08 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_09 SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_0a SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_0b SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_0c SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_0d SEG_SEGCLASS(UNUSED_SEG010,UNUSED_CODE)
+#define namedlg_0e SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define namedlg_0f SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define namedlg_10 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define docsh5_01 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define docsh5_02 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define docsh5_03 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define docsh5_04 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define docsh5_05 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_1f SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_20 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_21 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_22 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_23 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_24 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_28 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_29 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_2a SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_32 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_34 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_35 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_36 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_37 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_38 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_39 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_3a SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_3b SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_3c SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_40 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_41 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_42 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_43 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_44 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_45 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_46 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_47 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_48 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_49 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_50 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_51 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_52 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_53 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_54 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_55 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_56 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_57 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_58 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_59 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_5a SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_5b SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_5e SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_60 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_61 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_62 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_63 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_64 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_65 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_66 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_67 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_68 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undoblk3_69 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_04 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_05 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_06 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_07 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_08 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_09 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_0a SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_0b SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_0c SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_0d SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_0e SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_0f SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_10 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_11 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_12 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_13 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_14 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_15 SEG_SEGCLASS(UNUSED_SEG011,UNUSED_CODE)
+#define undotab_16 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_17 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_18 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_19 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_1a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_1b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_1c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_1d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_1e SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_20 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_21 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_22 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_23 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_24 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_25 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_26 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_27 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_28 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_29 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_2a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_2b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_2c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_2d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_2e SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_2f SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_30 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_31 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_32 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_33 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_34 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_35 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_36 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_37 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undotab_38 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_04 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_05 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_06 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_0a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_0b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_0c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_0d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_0e SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_0f SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_10 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_11 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_12 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_13 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_14 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_15 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_16 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_17 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_18 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_1b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define undocell_1c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define gridwin_06 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define gridwin_10 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define gridwin_11 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define gridwin_12 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define gridwin_13 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define gridwin_14 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define gridwin_38 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define olinewin_05 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define olinewin_07 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define olinewin_08 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define olinewin_09 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define olinewin_0a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define olinewin_0b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define olinewin_0c SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define olinewin_0d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define olinewin_11 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define tabsplit_04 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define tabsplit_05 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define colrowba_07 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define colrowba_0f SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define colrowba_10 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define colrowba_11 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define colrowba_14 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define tabcont_08 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define tabcont_09 SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define tabcont_0a SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define tabcont_0b SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define tabcont_0d SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define tabcont_0e SEG_SEGCLASS(UNUSED_SEG012,UNUSED_CODE)
+#define tabcont_0f SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define select_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define select_07 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define select_0b SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define select_10 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define select_13 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define select_16 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define refundo_01 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define refundo_02 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define refundo_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define refundo_04 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undoblk2_2e SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undoblk2_2f SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undoblk2_30 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define gridwin4_05 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define output_20 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define output_21 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define output_22 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define output_23 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define output_24 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define output_25 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define output2_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define output2_04 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define dataobj2_01 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define dataobj3_01 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define dataobj3_02 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_04 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_05 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_06 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_07 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_08 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_0b SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_0c SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_0d SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_0e SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_0f SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_10 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_11 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_12 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_13 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_14 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undobase_15 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undoutil_01 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undoutil_02 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undoutil_03 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define undoutil_04 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define tabpages_18 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define tabpages_19 SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define tabpages_1a SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define tabpages_1b SEG_SEGCLASS(UNUSED_SEG013,UNUSED_CODE)
+#define tabpages_1c SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define tabpages_1d SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define tabpages_20 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define tabpages_22 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define drawvie3_05 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define tabvwshg_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define spelleng_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define viewfun5_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define viewfun5_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define viewfun7_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define viewfun7_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define viewfun7_03 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define viewfun7_04 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define viewfun7_05 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define viewfun7_06 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define gridwin2_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define gridwin2_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define gridwin2_03 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define gridwin2_04 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define gridwin2_05 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define hdrcont_09 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define hdrcont_0a SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define hdrcont_0b SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define undoolk_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define undoolk_04 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define drawvie4_01 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define drawvie4_02 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define drawvie4_03 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define drawvie4_04 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define drawvie4_05 SEG_SEGCLASS(UNUSED_SEG014,UNUSED_CODE)
+#define drawvie4_06 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_02 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_05 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_06 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_07 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_08 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_09 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_0a SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_0b SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_0c SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_0d SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_0e SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_10 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_12 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_13 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_14 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_15 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_16 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_17 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_18 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_19 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_1a SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_1b SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_1c SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_1d SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_1e SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_1f SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_20 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_21 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_22 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_23 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_24 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_25 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_26 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_27 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_28 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_29 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_2a SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_2b SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_2c SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_2d SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_2e SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_2f SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_30 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_31 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_32 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_33 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_34 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_35 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_36 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_37 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_38 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_39 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_3a SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_3b SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_3d SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_3e SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_3f SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_40 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_41 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define navipi_42 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define optdlg_01 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define optdlg_02 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define optdlg_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define optdlg_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define optdlg_05 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define optdlg_06 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define optdlg_07 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define tbxalign_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define tbxalign_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define drtxtob_01 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define drtxtob_02 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define drtxtob_03 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define drtxtob_04 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define drtxtob_05 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define drtxtob_06 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define drtxtob_07 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define drtxtob_08 SEG_SEGCLASS(UNUSED_SEG015,UNUSED_CODE)
+#define imoptdlg_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define drawsh_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define drawsh_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define drawsh_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define drawsh_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins2_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins2_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins2_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins2_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins2_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins2_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins2_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins2_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins2_09 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins2_0a SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins1_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins1_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuins1_0b SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fumark_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fumark_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fumark_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fumark_0a SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconpol_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconpol_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconpol_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconpol_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconpol_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconpol_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconpol_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconpol_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconctl_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconctl_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconctl_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconctl_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconctl_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconctl_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconctl_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconctl_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_09 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_0a SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_0b SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define futext_0c SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconrec_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconarc_01 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconarc_02 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconarc_03 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconarc_04 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconarc_05 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconarc_06 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconarc_07 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define fuconarc_08 SEG_SEGCLASS(UNUSED_SEG016,UNUSED_CODE)
+#define mvtabdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define mvtabdlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define mvtabdlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define mvtabdlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define mvtabdlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define mvtabdlg_06 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define mvtabdlg_07 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define mvtabdlg_08 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define mvtabdlg_09 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_06 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_07 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_08 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_09 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_0a SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define instbdlg_0b SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define lbseldlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define lbseldlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define lbseldlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define lbseldlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define subtdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define subtdlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define sortdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define sortdlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define scendlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define scendlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define scendlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define scendlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define inscodlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define inscodlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define inscodlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define inscodlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define inscodlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define delcldlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define delcldlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define delcldlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define autofmt_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define autofmt_06 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define autofmt_07 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define autofmt_1d SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define groupdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define groupdlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define groupdlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define namecrea_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define namecrea_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define delcodlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define delcodlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define delcodlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define delcodlg_04 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define delcodlg_05 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define funcdlg_01 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define funcdlg_02 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define funcdlg_03 SEG_SEGCLASS(UNUSED_SEG017,UNUSED_CODE)
+#define funcdlg_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_06 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_07 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_08 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_09 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_0b SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_0c SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_0d SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_0e SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_0f SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define funcdlg_10 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define edfundlg_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define edfundlg_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define edfundlg_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define edfundlg_0a SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define edfundlg_0c SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define edfundlg_0d SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define inscldlg_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define inscldlg_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define inscldlg_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define hfedtdlg_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define hfedtdlg_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define hfedtdlg_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define namepast_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define namepast_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define namepast_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define namepast_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define namepast_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define mtrindlg_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define mtrindlg_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define mtrindlg_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define mtrindlg_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define mtrindlg_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define mtrindlg_06 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_01 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_02 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_03 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_04 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_05 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_06 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_07 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_08 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_09 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_0a SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_0c SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_0d SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_0e SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_10 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_11 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define dbnamdlg_12 SEG_SEGCLASS(UNUSED_SEG018,UNUSED_CODE)
+#define chartdlg_01 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define chartdlg_02 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define chartdlg_03 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define chartdlg_04 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define chartdlg_05 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define chartdlg_06 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define chartdlg_07 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define chartdlg_09 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define chartdlg_0a SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_01 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_02 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_03 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_04 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_06 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_07 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_08 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_09 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_0a SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_0b SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define solvrdlg_0c SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_01 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_02 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_03 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_04 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_05 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_06 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_08 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_09 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_0b SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_0c SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_0d SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define sfiltdlg_0e SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define tabopdlg_01 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define tabopdlg_02 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define tabopdlg_03 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define tabopdlg_04 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define tabopdlg_05 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define tabopdlg_06 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define tabopdlg_07 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define tabopdlg_08 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define tabopdlg_09 SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define tabopdlg_0a SEG_SEGCLASS(UNUSED_SEG019,UNUSED_CODE)
+#define consdlg_01 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_02 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_03 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_04 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_05 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_06 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_07 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_08 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_09 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_0a SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_0b SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_0c SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_0d SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_0e SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_0f SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define consdlg_10 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_01 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_02 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_03 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_04 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_05 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_06 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_07 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_08 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_09 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_0a SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_0b SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_0c SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_0d SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_0e SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_0f SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_10 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_11 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_12 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_13 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define areasdlg_14 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define filtdlg_05 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define filtdlg_06 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define filtdlg_0c SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define filtdlg_0d SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define filtdlg_0f SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define filtdlg_10 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define pvlaydlg_02 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define pvlaydlg_04 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define pvlaydlg_08 SEG_SEGCLASS(UNUSED_SEG020,UNUSED_CODE)
+#define pvlaydlg_09 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_0a SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_0b SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_0c SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_0d SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_0e SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_0f SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_10 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_11 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_12 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_13 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_15 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_16 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_17 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_18 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_19 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_1b SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_1c SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define pvlaydlg_1e SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define tphf_0e SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define tphf_0f SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define tptable_03 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_01 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_02 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_03 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_04 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_06 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_07 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_08 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_09 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_0a SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_0b SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_0c SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_0e SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_0f SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_10 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_11 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_12 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_13 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_14 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_15 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_16 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_17 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_18 SEG_SEGCLASS(UNUSED_SEG021,UNUSED_CODE)
+#define argdlg_19 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define argdlg_1a SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define anyrefdg_03 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define pfiltdlg_01 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define pfiltdlg_02 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define pfiltdlg_03 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define pfiltdlg_04 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define pfiltdlg_05 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define pfiltdlg_06 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define pfiltdlg_07 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define pfiltdlg_08 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define pfiltdlg_09 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define pfiltdlg_0a SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_01 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_02 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_03 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_04 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_05 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_06 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_07 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_08 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_09 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_0a SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_0b SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_0c SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_0d SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define scenwnd_0e SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define navcitem_01 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define navcitem_02 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpview_01 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpview_02 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpview_03 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpview_05 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpview_06 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpview_07 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpview_08 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpview_09 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpview_0a SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpcalc_01 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpcalc_02 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpcalc_03 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpcalc_05 SEG_SEGCLASS(UNUSED_SEG022,UNUSED_CODE)
+#define tpcalc_06 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpcalc_07 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpcalc_09 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpcalc_0a SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpcalc_0c SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpcalc_0d SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpcalc_0e SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpprint_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpprint_02 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpprint_04 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpprint_06 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpprint_07 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpprint_08 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_02 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_03 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_05 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_06 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_07 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_08 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_09 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_0a SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_0b SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_0c SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_0d SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_0e SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_0f SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_10 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_12 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define tpusrlst_13 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drtxtob2_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drtxtob2_02 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drtxtob2_03 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drtxtob2_05 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drtxtob2_06 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drtxtob1_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drtxtob1_02 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drtxtob1_03 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drtxtob1_04 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drawsh1_07 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drawsh3_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define drawsh4_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define fupoor_06 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define fupoor_09 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define fupoor_0a SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define fupoor_0b SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define fupoor_0c SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define fudraw_04 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define fudraw_05 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define fusel2_01 SEG_SEGCLASS(UNUSED_SEG023,UNUSED_CODE)
+#define fuconstr_06 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_01 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_02 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_03 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_04 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_05 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_06 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_07 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_08 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_09 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_0a SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_0b SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_0c SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_0d SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_0e SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_0f SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_10 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_11 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_12 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_13 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_14 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_15 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_16 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_17 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_18 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_19 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_1a SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_1b SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_1c SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_1e SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_1f SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsubt_20 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_01 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_02 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_03 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_04 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_05 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_06 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_07 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_08 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_09 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_0a SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_0b SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_0c SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_0d SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_0e SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_0f SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_10 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_11 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_12 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_13 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_14 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_15 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_16 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_17 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_19 SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_1b SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tpsort_1e SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tphfedit_0d SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tphfedit_0f SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tphfedit_1a SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tphfedit_1c SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tphfedit_1d SEG_SEGCLASS(UNUSED_SEG024,UNUSED_CODE)
+#define tphfedit_1f SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define tphfedit_20 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define tphfedit_22 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define foptmgr_05 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define foptmgr_06 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define foptmgr_07 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define foptmgr_08 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_02 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_05 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_06 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_07 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_08 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_09 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_0a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_0c SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_0d SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_0e SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_0f SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define fieldwnd_10 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define funcutl_01 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define funcutl_02 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define funcutl_03 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define funcutl_05 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define funcutl_06 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define funcutl_07 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define crdlg_01 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define crdlg_02 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define crdlg_03 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define textdlgs_01 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define textdlgs_02 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define textdlgs_03 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define pvfundlg_01 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define pvfundlg_02 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define pvfundlg_03 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define pvfundlg_04 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define pvfundlg_05 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define pvfundlg_06 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define pvfundlg_07 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_03 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_05 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_06 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_08 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_0b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_0d SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_51 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_52 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_53 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_54 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_55 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_57 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_58 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_59 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_5b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_5c SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_5d SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_5f SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_60 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_6b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_72 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_79 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_7a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_7b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_7c SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_7d SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_86 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_87 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_8a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_8c SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_96 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_97 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_99 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_9a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define global_9b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_27 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_28 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_29 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_2a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_2b SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_2c SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_2d SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_37 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_3e SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_3f SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_70 SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_7a SEG_SEGCLASS(UNUSED_SEG025,UNUSED_CODE)
+#define attrib_7b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_7c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_7d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_7e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_7f SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_81 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_82 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_84 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_85 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_87 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_89 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_8a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_8b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_8c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_8e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_90 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_92 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_93 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_94 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_95 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_96 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_97 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_99 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_9a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_9b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_9c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_9d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_9e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_9f SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_a0 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_a1 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define attrib_a2 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define docoptio_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define docoptio_06 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define docoptio_07 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define docoptio_08 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define docoptio_09 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define docoptio_0a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define docoptio_0c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define docoptio_0d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_09 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_0a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_0b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_0c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_0d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_0e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_10 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_11 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_1a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define viewopti_1d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_02 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_04 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_08 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_09 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_0a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_0b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_0c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_0d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_0e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define printopt_11 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_02 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_04 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_07 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_08 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_0a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_0d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_0e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_0f SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_10 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_11 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_12 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_13 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_17 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_18 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_1b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_21 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_23 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_24 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_26 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_27 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_28 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_29 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_2a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_2b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_2c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_2f SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_30 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_31 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_36 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_38 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_3c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_3d SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_3e SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_40 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_44 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_46 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_47 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_48 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_49 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_4a SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_4b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen3_4c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen8_09 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen8_0f SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen8_10 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define documen8_11 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define appoptio_02 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define appoptio_04 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define appoptio_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define appoptio_07 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define appoptio_08 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define appoptio_0b SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define appoptio_0c SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define splcfg_01 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define splcfg_02 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define splcfg_03 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define splcfg_04 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define splcfg_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define editutil_04 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define editutil_05 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define editutil_06 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define editutil_20 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define editutil_21 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define document_09 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define document_10 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define document_15 SEG_SEGCLASS(UNUSED_SEG026,UNUSED_CODE)
+#define document_19 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_1a SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_1b SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_1c SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_1e SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_20 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_21 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_23 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_24 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_25 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_26 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_27 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_28 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_29 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_36 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_39 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_3f SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_43 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_46 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_4d SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_4e SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_50 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_59 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_67 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_69 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_6b SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_6c SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_71 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_73 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_74 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_7a SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_7f SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_81 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_99 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_9a SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_9d SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_a2 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_a4 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_a5 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_a8 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_ac SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_ae SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_b0 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_b1 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_b7 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_b8 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define document_ba SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen7_02 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen7_08 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen7_0a SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen7_14 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen7_16 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen4_01 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen4_04 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen4_05 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen4_06 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen4_07 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define documen4_09 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define column3_05 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define column3_07 SEG_SEGCLASS(UNUSED_SEG027,UNUSED_CODE)
+#define column3_08 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define column3_0a SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define column3_0d SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define column3_0e SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define column3_15 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define column3_17 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define column3_1a SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define column3_1c SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define column3_1d SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define documen6_02 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define documen2_03 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define documen2_04 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define documen2_18 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define documen2_19 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define documen2_1a SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define documen2_1b SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define documen2_1c SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define docpool_04 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define docpool_05 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define patattr_0b SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define patattr_0c SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define patattr_0f SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define patattr_13 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define patattr_15 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_06 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_0a SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_0b SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_0c SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_0d SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_13 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_14 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_15 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_17 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_18 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_1c SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_1d SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_1e SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_20 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_24 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_25 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_26 SEG_SEGCLASS(UNUSED_SEG028,UNUSED_CODE)
+#define global2_36 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_38 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_39 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_3b SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_3c SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_3d SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_3e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_3f SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_40 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_41 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_49 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_52 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_53 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_54 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define global2_55 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_04 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_0a SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_0c SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_0d SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_0e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_0f SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_12 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_13 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_14 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_15 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_16 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_19 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_1c SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_1d SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_1e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define rangenam_1f SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define documen5_02 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define documen5_03 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define documen5_04 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define documen5_05 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define documen5_06 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define documen5_07 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define stlpool_04 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define stlpool_05 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define stlpool_07 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_05 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_06 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_0b SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_0d SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_10 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_11 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_13 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_16 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_18 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_19 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_1a SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_1b SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define collect_1c SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell_01 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell_05 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell_0b SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell_0e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell_2e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell_30 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell_31 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell_39 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell_3e SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_02 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_03 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_04 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_05 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_07 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_08 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_09 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_0a SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_0b SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_0f SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_11 SEG_SEGCLASS(UNUSED_SEG029,UNUSED_CODE)
+#define cell2_13 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_14 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_15 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_16 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_17 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_18 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_19 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_1a SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_1b SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_22 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_23 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define cell2_24 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define rangeutl_01 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define rangeutl_02 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define rangeutl_03 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define rangeutl_05 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define rangeutl_08 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define rangeutl_09 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define rangeutl_0b SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define rangeutl_0c SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define rangeutl_11 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define dbcolect_04 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define dbcolect_08 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define dbcolect_0e SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define dbcolect_14 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define dbcolect_17 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define dbcolect_1a SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define dbcolect_1c SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define dbcolect_1e SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define dbcolect_20 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define autoform_02 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define autoform_28 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define autoform_2a SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define autoform_2d SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define autoform_30 SEG_SEGCLASS(UNUSED_SEG030,UNUSED_CODE)
+#define autoform_31 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define autoform_32 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_02 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_03 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_07 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_08 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_0b SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_0d SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_0e SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_0f SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_10 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_11 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define userlist_12 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_04 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_13 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_17 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_18 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_19 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_1c SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_20 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_21 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_22 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_23 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_24 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_25 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_26 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_29 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_2a SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define drwlayer_2c SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define documen9_05 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define documen9_07 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define documen9_08 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define documen9_0e SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define documen9_0f SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_03 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_04 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_05 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_06 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_07 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_08 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_09 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_0b SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_0c SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_0d SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_0e SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_0f SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_10 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_11 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_12 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_13 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_14 SEG_SEGCLASS(UNUSED_SEG031,UNUSED_CODE)
+#define pivot_15 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_16 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_17 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_18 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_19 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_1a SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_1b SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_1c SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_1d SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_1e SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_1f SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_20 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_21 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_22 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_2d SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_2e SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_30 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_31 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_32 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_33 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_34 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_35 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_36 SEG_SEGCLASS(UNUSED_SEG032,UNUSED_CODE)
+#define pivot_37 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot_38 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot_39 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot_3a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot_3b SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_01 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_02 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_03 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_04 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_05 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_06 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_07 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_08 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_09 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_0a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_0c SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_0d SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_0f SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_10 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_11 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_12 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_14 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_15 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_16 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_17 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_18 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_19 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_1a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_1b SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_1c SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_1d SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_1e SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_1f SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_20 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_21 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_23 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_24 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_25 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_26 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_27 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_28 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_29 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_2a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_2b SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_2c SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_2d SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_2e SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_2f SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_30 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_31 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define olinetab_32 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define fillinfo_01 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_01 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_02 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_10 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_16 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_1c SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_1f SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_25 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_27 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_29 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_2a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_2b SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_2c SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_2d SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_2e SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define chartarr_2f SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define bcaslot_04 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define bcaslot_08 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define bcaslot_09 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define bcaslot_0a SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define bcaslot_10 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define bcaslot_12 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define bcaslot_13 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot2_01 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot2_02 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot2_03 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot2_04 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot2_05 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot2_07 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot2_08 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot2_09 SEG_SEGCLASS(UNUSED_SEG033,UNUSED_CODE)
+#define pivot2_0a SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define pivot2_0b SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define pivot2_0f SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define pivot2_10 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define pivot2_11 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define pivot2_12 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define pivot2_13 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define pivot2_14 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_01 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_02 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_05 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_06 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_07 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_08 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_09 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_0b SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_0d SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_0f SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_10 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_11 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_12 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_13 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_14 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_16 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_17 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_18 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_19 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_1a SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define detfunc_1b SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_01 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_02 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_03 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_04 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_07 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_08 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_09 SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_0a SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_0b SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_0c SEG_SEGCLASS(UNUSED_SEG034,UNUSED_CODE)
+#define consoli_0d SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define consoli_0e SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define consoli_0f SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define consoli_10 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define consoli_11 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define consoli_12 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define consoli_13 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define consoli_14 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define zforauto_02 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define zforauto_06 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define callform_01 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define callform_02 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define callform_03 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define callform_04 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define callform_05 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define callform_06 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define callform_07 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define callform_08 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define callform_0a SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define callform_0c SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_01 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_03 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_0a SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_0b SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_0c SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_1c SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_20 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_28 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_2c SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_b1 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_b2 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_b8 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_b9 SEG_SEGCLASS(UNUSED_SEG035,UNUSED_CODE)
+#define interpr4_bc SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr4_be SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr4_bf SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr4_c0 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define compiler_27 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define compiler_28 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define compiler_49 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define compiler_4a SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define compiler_4f SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define compiler_50 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define compiler_51 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define compiler_55 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define adiasync_02 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define adiasync_04 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define adiasync_05 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_37 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_3a SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_3b SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_59 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_5a SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_5b SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_5c SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_5e SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_5f SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_85 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_90 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_a6 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_a7 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_a8 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_ab SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_ae SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_b1 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define interpr1_b5 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table3_67 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table3_68 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table3_69 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table3_72 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table3_73 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table3_74 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table3_80 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table3_93 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_06 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_13 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_14 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_15 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_16 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_17 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_18 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_19 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_24 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_26 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_27 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_29 SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_2a SEG_SEGCLASS(UNUSED_SEG036,UNUSED_CODE)
+#define table1_2f SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table1_30 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table1_31 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_05 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_1d SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_2e SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_2f SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_30 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_31 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_32 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_33 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_35 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_36 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_38 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_3b SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_42 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_45 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_4e SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_51 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_52 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_53 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_56 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_58 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_5c SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_66 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_6d SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_6e SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_6f SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_70 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_71 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_7d SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_81 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_82 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_85 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_86 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_87 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_8b SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_93 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_94 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_99 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_9a SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_9b SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_a2 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_a5 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_a6 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_ab SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_ac SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table2_ad SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table4_0b SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table4_0c SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table4_0d SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table4_0e SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table4_0f SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table4_11 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_01 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_02 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_03 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_04 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_05 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_06 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_07 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_08 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_09 SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_0a SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_0b SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_0c SEG_SEGCLASS(UNUSED_SEG037,UNUSED_CODE)
+#define table6_0d SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define table5_06 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define table5_09 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_03 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_05 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_11 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_12 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_16 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_1a SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_1b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_1c SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_24 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_25 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_27 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column2_29 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define refupdat_01 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define refupdat_02 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define refupdat_04 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define refupdat_05 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define refupdat_06 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define refupdat_08 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define markarr_08 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define markarr_0b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define markarr_0c SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define markarr_11 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define markarr_12 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_0d SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_0e SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_12 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_13 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_14 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_15 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_1b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_1c SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_1d SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_1f SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_21 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_26 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_29 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_2d SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_2e SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define attarray_30 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define token_0b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define token_22 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define token_23 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define token_6a SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define token_6b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define scmatrix_03 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define scmatrix_08 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define scmatrix_0b SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define scmatrix_0c SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define scmatrix_10 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define drawpage_03 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define subtotal_01 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define subtotal_02 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define subtotal_03 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define subtotal_04 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define subtotal_05 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define subtotal_06 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define subtotal_07 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column_0d SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column_11 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column_14 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column_15 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column_21 SEG_SEGCLASS(UNUSED_SEG038,UNUSED_CODE)
+#define column_22 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_31 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_32 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_33 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_37 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_3a SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_3b SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_3c SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_3d SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_3e SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_3f SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_40 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_41 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_42 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_43 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_44 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_61 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_62 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_63 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_6b SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_6d SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_72 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_76 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_77 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_78 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_7d SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_7f SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_80 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define column_84 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_2a SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_2b SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_35 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_36 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_37 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_3b SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_3d SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_44 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_45 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_46 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_47 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_48 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_77 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_b2 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_b5 SEG_SEGCLASS(UNUSED_SEG039,UNUSED_CODE)
+#define interpr2_b6 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr2_b7 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr2_b8 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_51 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_53 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_54 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_55 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_59 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_5d SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_5e SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_61 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_62 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_63 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_65 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_b6 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr5_b7 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr3_06 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr3_07 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr3_10 SEG_SEGCLASS(UNUSED_SEG040,UNUSED_CODE)
+#define interpr3_11 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define interpr3_1b SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define interpr3_28 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define ddelink_01 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define ddelink_02 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define ddelink_03 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define ddelink_04 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define ddelink_05 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define excel_04 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_04 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_07 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_08 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_09 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_0a SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_0b SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_0c SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_0d SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_0e SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_0f SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_10 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_11 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_12 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_13 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_14 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_15 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_16 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_17 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_18 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_19 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_1a SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_1b SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_1c SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_1d SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_1e SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_1f SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_20 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_21 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_22 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_23 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_24 SEG_SEGCLASS(UNUSED_SEG041,UNUSED_CODE)
+#define scflt_25 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_26 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_27 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_28 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_29 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_2a SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_2b SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_2c SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_2d SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_2e SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_2f SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_30 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_31 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_32 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_33 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_34 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_35 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_36 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_37 SEG_SEGCLASS(UNUSED_SEG042,UNUSED_CODE)
+#define scflt_38 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define scflt_39 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define scflt_3a SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define scflt_3b SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define scflt_3c SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define lotus_01 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_03 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_04 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_05 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_06 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_07 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_08 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_10 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_11 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_12 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_13 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_16 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_17 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_18 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_19 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_1a SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_1b SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_1e SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_21 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_22 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_24 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_2d SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_2e SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_2f SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_35 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_3c SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_3d SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_3e SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_3f SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_41 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_43 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_44 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_46 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_4b SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_52 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_55 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define impop_57 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define expop2_01 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define expop2_02 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define expop2_03 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define functab_02 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define functab_03 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define functab_04 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define exctools_03 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define exctools_17 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define scfobj_01 SEG_SEGCLASS(UNUSED_SEG043,UNUSED_CODE)
+#define lotread_01 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotread_02 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define tokstack_0d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define tokstack_0e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define tokstack_18 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define filter_02 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define filter_03 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_01 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_02 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_03 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_04 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_05 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_06 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_07 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_08 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_09 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_0a SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_0b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_0e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_0f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_10 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_11 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_12 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_13 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_14 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_15 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define lotimpop_16 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excform_02 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excform_03 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excform_08 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excform_14 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define vfbuff_04 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define vfbuff_06 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define fontbuff_04 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define fontbuff_08 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define fontbuff_0f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define fontbuff_10 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define fontbuff_11 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define fontbuff_12 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define fontbuff_13 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_01 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_02 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_03 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_04 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_06 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_07 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_08 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_09 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_0c SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_0d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_0e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_0f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_10 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_11 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_12 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_14 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_15 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_16 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_17 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_18 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_19 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_1a SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_1b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_1c SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_1d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_1e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_1f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_20 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_21 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_22 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_23 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_24 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_27 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_28 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_29 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_2a SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_2b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_2c SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_2d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_2e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_2f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_30 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_31 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_32 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_33 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_34 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_35 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_36 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_37 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_38 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_39 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_3a SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_3b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_3c SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_3d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_3e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_3f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_40 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_41 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_42 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_43 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_44 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_45 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_46 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_47 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_48 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_49 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_4a SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_4b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_4d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_4e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_52 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_53 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_54 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_55 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_56 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_57 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_58 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_5b SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_5c SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_5d SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_5e SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_5f SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_60 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_61 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_62 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_63 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_64 SEG_SEGCLASS(UNUSED_SEG044,UNUSED_CODE)
+#define excrecds_65 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_66 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_67 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_68 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_69 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_6a SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_6b SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_6c SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_6d SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_6e SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_6f SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_70 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_71 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_72 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_73 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_74 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_75 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_76 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_77 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_78 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_79 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_7a SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_7b SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_7c SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_7d SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_7e SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_7f SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_80 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_81 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_82 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_83 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_84 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excrecds_85 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_01 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_02 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_03 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_05 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_09 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_0b SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_0d SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_0f SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_10 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_11 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_12 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_13 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_14 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_15 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_16 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_17 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_18 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_19 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_1a SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_1b SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_1d SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_1e SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_1f SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_22 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_24 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_25 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_26 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_27 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_28 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_29 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excdoc_2a SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define frmbase_05 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define spstring_0c SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define spstring_0d SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_02 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_03 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_04 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_05 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_06 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_07 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_08 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_09 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_0a SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_0b SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define excobj_0c SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define lotattr_01 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define lotattr_02 SEG_SEGCLASS(UNUSED_SEG045,UNUSED_CODE)
+#define lotattr_03 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_04 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_05 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_06 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_07 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_08 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_0a SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_0b SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_0c SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_0d SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_0e SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotattr_0f SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_01 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_02 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_07 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_0a SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_0b SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_0c SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_0d SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_0e SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_0f SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_10 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_12 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_13 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_14 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_15 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_16 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_17 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_19 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_1a SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_1b SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define tool_1c SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define memory_01 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define memory_02 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_01 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_02 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_03 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_04 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_05 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_06 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_07 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_08 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_09 SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_0a SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_0b SEG_SEGCLASS(UNUSED_SEG046,UNUSED_CODE)
+#define lotform_0c SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define lotform_0d SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_01 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_06 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_07 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_08 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_09 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_0a SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_0b SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_10 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_12 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_13 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_14 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_15 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_16 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_17 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_18 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_19 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_1a SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_1b SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_1c SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define exccomp_1d SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_01 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_02 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_03 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_04 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_05 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_06 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_0a SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_0c SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_0d SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_0e SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_0f SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_10 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_11 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_12 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_13 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define op_14 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define teamdlg_01 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define teamdlg_02 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define teamdlg_03 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define teamdlg_04 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
+#define teamdlg_05 SEG_SEGCLASS(UNUSED_SEG047,UNUSED_CODE)
diff --git a/sc/inc/servuno.hxx b/sc/inc/servuno.hxx
new file mode 100644
index 000000000000..1b19bdae7545
--- /dev/null
+++ b/sc/inc/servuno.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: servuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SERVUNO_HXX
+#define SC_SERVUNO_HXX
+
+#ifndef _COM_SUN_STAR_UNO_XINTERFACE_HPP_
+#include <com/sun/star/uno/XInterface.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
+#include <com/sun/star/uno/Sequence.hxx>
+#endif
+//#ifndef _USR_USTRING_HXX
+//#include <usr/ustring.hxx>
+//#endif
+
+class ScDocShell;
+
+
+//! AutoFormat wirklich hier oder besser global??????
+
+#define SC_SERVICE_SHEET 0
+#define SC_SERVICE_URLFIELD 1
+#define SC_SERVICE_PAGEFIELD 2
+#define SC_SERVICE_PAGESFIELD 3
+#define SC_SERVICE_DATEFIELD 4
+#define SC_SERVICE_TIMEFIELD 5
+#define SC_SERVICE_TITLEFIELD 6
+#define SC_SERVICE_FILEFIELD 7
+#define SC_SERVICE_SHEETFIELD 8
+#define SC_SERVICE_CELLSTYLE 9
+#define SC_SERVICE_PAGESTYLE 10
+#define SC_SERVICE_AUTOFORMAT 11
+#define SC_SERVICE_CELLRANGES 12
+
+// drawing layer tables
+#define SC_SERVICE_GRADTAB 13
+#define SC_SERVICE_HATCHTAB 14
+#define SC_SERVICE_BITMAPTAB 15
+#define SC_SERVICE_TRGRADTAB 16
+#define SC_SERVICE_MARKERTAB 17
+#define SC_SERVICE_DASHTAB 18
+
+#define SC_SERVICE_COUNT 19
+#define SC_SERVICE_INVALID USHRT_MAX
+
+
+class ScServiceProvider
+{
+public:
+ // pDocShell wird nicht fuer alle Services benoetigt
+ static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
+ MakeInstance( sal_uInt16 nType, ScDocShell* pDocShell );
+ static ::com::sun::star::uno::Sequence<rtl::OUString> GetAllServiceNames();
+ static String GetProviderName(sal_uInt16 nObjectType);
+ static sal_uInt16 GetProviderType(const String& rServiceName);
+};
+
+
+
+#endif
+
diff --git a/sc/inc/shellids.hxx b/sc/inc/shellids.hxx
new file mode 100644
index 000000000000..072ed5411b92
--- /dev/null
+++ b/sc/inc/shellids.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * $RCSfile: shellids.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SHELLIDS_HXX
+#define SC_SHELLIDS_HXX
+
+// Sfx Interface-IDs
+#define SCID_APP (SFX_INTERFACE_SC_START+0)
+#define SCID_DOC_SHELL (SFX_INTERFACE_SC_START+1)
+#define SCID_TABVIEW_SHELL (SFX_INTERFACE_SC_START+2)
+#define SCID_TABPOP_SHELL (SFX_INTERFACE_SC_START+3)
+#define SCID_EDIT_SHELL (SFX_INTERFACE_SC_START+4)
+#define SCID_DRAW_SHELL (SFX_INTERFACE_SC_START+5)
+#define SCID_DRAW_TEXT_SHELL (SFX_INTERFACE_SC_START+6)
+#define SCID_PREVIEW_SHELL (SFX_INTERFACE_SC_START+7)
+#define SCID_PIVOT_SHELL (SFX_INTERFACE_SC_START+8)
+#define SCID_AUDITING_SHELL (SFX_INTERFACE_SC_START+9)
+#define SCID_FORM_SHELL (SFX_INTERFACE_SC_START+10)
+
+#define SCID_FORMAT_SHELL (SFX_INTERFACE_SC_START+11)
+#define SCID_CELL_SHELL (SFX_INTERFACE_SC_START+12)
+#define SCID_OLEOBJECT_SHELL (SFX_INTERFACE_SC_START+13)
+#define SCID_CHART_SHELL (SFX_INTERFACE_SC_START+14)
+#define SCID_GRAPHIC_SHELL (SFX_INTERFACE_SC_START+15)
+#define SCID_PAGEBREAK_SHELL (SFX_INTERFACE_SC_START+16)
+
+
+#endif
+
+
diff --git a/sc/inc/srchuno.hxx b/sc/inc/srchuno.hxx
new file mode 100644
index 000000000000..d41eef9e0caf
--- /dev/null
+++ b/sc/inc/srchuno.hxx
@@ -0,0 +1,175 @@
+/*************************************************************************
+ *
+ * $RCSfile: srchuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SRCHUNO_HXX
+#define SC_SRCHUNO_HXX
+
+#ifndef _COM_SUN_STAR_UTIL_XREPLACEDESCRIPTOR_HPP_
+#include <com/sun/star/util/XReplaceDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+
+
+class SvxSearchItem;
+
+
+class ScCellSearchObj : public cppu::WeakImplHelper3<
+ com::sun::star::util::XReplaceDescriptor,
+ com::sun::star::lang::XUnoTunnel,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ SfxItemPropertySet aPropSet;
+ SvxSearchItem* pSearchItem;
+
+public:
+ ScCellSearchObj();
+ virtual ~ScCellSearchObj();
+
+ SvxSearchItem* GetSearchItem() const { return pSearchItem; }
+
+ // XReplaceDescriptor
+ virtual ::rtl::OUString SAL_CALL getReplaceString() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setReplaceString( const ::rtl::OUString& aReplaceString )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XSearchDescriptor
+ virtual ::rtl::OUString SAL_CALL getSearchString() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSearchString( const ::rtl::OUString& aString )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // Search/Replace muss von aussen (vom XSearchable) gerufen werden...
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScCellSearchObj* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::util::XSearchDescriptor> xObj );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif
+
diff --git a/sc/inc/stlpool.hxx b/sc/inc/stlpool.hxx
new file mode 100644
index 000000000000..72f92b718532
--- /dev/null
+++ b/sc/inc/stlpool.hxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * $RCSfile: stlpool.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_STLPOOL_HXX
+#define SC_STLPOOL_HXX
+
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+
+
+class ScStyleSheet;
+class ScDocument;
+
+class ScStyleSheetPool : public SfxStyleSheetPool
+{
+public:
+ ScStyleSheetPool( SfxItemPool& rPool,
+ ScDocument* pDocument );
+ virtual ~ScStyleSheetPool();
+
+ void SetDocument( ScDocument* pDocument );
+ ScDocument* GetDocument() const { return pDoc; }
+
+ virtual void Erase( SfxStyleSheetBase* pStyle );
+
+ void SetActualStyleSheet ( SfxStyleSheetBase* pActStyleSheet )
+ { pActualStyleSheet = pActStyleSheet; }
+
+ SfxStyleSheetBase* GetActualStyleSheet ()
+ { return pActualStyleSheet; }
+
+ void CreateStandardStyles();
+ void CopyStdStylesFrom( ScStyleSheetPool* pSrcPool );
+ void UpdateStdNames();
+
+ void CopyStyleFrom( ScStyleSheetPool* pSrcPool,
+ const String& rName, SfxStyleFamily eFamily );
+
+ ScStyleSheet* FindCaseIns( const String& rName, SfxStyleFamily eFam );
+
+ void SetForceStdName( const String* pSet );
+ const String* GetForceStdName() const { return pForceStdName; }
+
+ virtual SfxStyleSheetBase& Make( const String&, SfxStyleFamily eFam,
+ USHORT nMask = 0xffff, USHORT nPos = 0xffff );
+
+protected:
+ virtual SfxStyleSheetBase* Create( const String& rName,
+ SfxStyleFamily eFamily,
+ USHORT nMask);
+ virtual SfxStyleSheetBase* Create( const SfxStyleSheetBase& rStyle );
+
+private:
+ SfxStyleSheetBase* pActualStyleSheet;
+ ScDocument* pDoc;
+ const String* pForceStdName;
+};
+
+#endif // SC_STLPOOL_HXX
+
diff --git a/sc/inc/stlsheet.hxx b/sc/inc/stlsheet.hxx
new file mode 100644
index 000000000000..534dc8bfea3a
--- /dev/null
+++ b/sc/inc/stlsheet.hxx
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * $RCSfile: stlsheet.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_STLSHEET_HXX
+#define SC_STLSHEET_HXX
+
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+
+//------------------------------------------------------------------------
+
+#define SCSTYLEBIT_STANDARD 0x0001
+
+//------------------------------------------------------------------------
+
+class ScStyleSheetPool;
+
+class ScStyleSheet : public SfxStyleSheet
+{
+friend class ScStyleSheetPool;
+public:
+ TYPEINFO();
+ virtual ~ScStyleSheet();
+
+ ScStyleSheet( const ScStyleSheet& rStyle );
+
+ virtual BOOL SetParent ( const String& rParentName );
+ virtual SfxItemSet& GetItemSet ();
+ virtual BOOL IsUsed () const;
+ virtual BOOL HasFollowSupport () const;
+ virtual BOOL HasParentSupport () const;
+
+ virtual const String& GetName() const;
+ virtual const String& GetParent() const;
+ virtual const String& GetFollow() const;
+
+ virtual BOOL SetName( const String& );
+
+protected:
+ ScStyleSheet( const String& rName,
+ ScStyleSheetPool& rPool,
+ SfxStyleFamily eFamily,
+ USHORT nMask );
+
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+};
+
+#endif // SC_STLSHEET_HXX
+
diff --git a/sc/inc/strload.hxx b/sc/inc/strload.hxx
new file mode 100644
index 000000000000..b66e51c516c9
--- /dev/null
+++ b/sc/inc/strload.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: strload.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_STRLOAD_HXX
+#define SC_STRLOAD_HXX
+
+#ifndef SC_SCRESID_HXX
+#include "scresid.hxx"
+#endif
+
+#ifndef _TOOLS_RC_HXX //autogen
+#include <tools/rc.hxx>
+#endif
+
+class ScRscStrLoader : public Resource
+{
+public:
+ ScRscStrLoader( USHORT nRsc, USHORT nStrId ) :
+ Resource( ScResId( nRsc ) ), theStr( ScResId( nStrId ) )
+ {
+ FreeResource();
+ }
+
+ const String& GetString() const { return theStr; }
+
+private:
+ String theStr;
+};
+
+
+#endif // SC_STRLOAD_HXX
+
diff --git a/sc/inc/styleuno.hxx b/sc/inc/styleuno.hxx
new file mode 100644
index 000000000000..fa1da441c736
--- /dev/null
+++ b/sc/inc/styleuno.hxx
@@ -0,0 +1,383 @@
+/*************************************************************************
+ *
+ * $RCSfile: styleuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_STYLEUNO_HXX
+#define SC_STYLEUNO_HXX
+
+#ifndef _SFX_ITEMPROP_HXX //autogen
+#include <svtools/itemprop.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _RSCSFX_HXX //autogen
+#include <rsc/rscsfx.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_STYLE_XSTYLE_HPP_
+#include <com/sun/star/style/XStyle.hpp>
+#endif
+#ifndef _COM_SUN_STAR_STYLE_XSTYLELOADER_HPP_
+#include <com/sun/star/style/XStyleLoader.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
+#include <com/sun/star/container/XNameContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSTATE_HPP_
+#include <com/sun/star/beans/XPropertyState.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE5_HXX_
+#include <cppuhelper/implbase5.hxx>
+#endif
+
+class SfxStyleSheetBase;
+class ScDocShell;
+
+class ScStyleFamilyObj;
+class ScStyleObj;
+
+
+class ScStyleNameConversion
+{
+public:
+ static const String& DisplayToProgrammaticName( const String& rDispName, UINT16 nType );
+ static const String& ProgrammaticToDisplayName( const String& rProgName, UINT16 nType );
+};
+
+
+class ScStyleFamiliesObj : public ::cppu::WeakImplHelper4<
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::container::XNameAccess,
+ ::com::sun::star::style::XStyleLoader,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+
+ ScStyleFamilyObj* GetObjectByType_Impl(UINT16 Type) const;
+ ScStyleFamilyObj* GetObjectByIndex_Impl(UINT32 nIndex) const;
+ ScStyleFamilyObj* GetObjectByName_Impl(const rtl::OUString& aName) const;
+
+public:
+ ScStyleFamiliesObj(ScDocShell* pDocSh);
+ virtual ~ScStyleFamiliesObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XStyleLoader
+ virtual void SAL_CALL loadStylesFromURL( const ::rtl::OUString& URL,
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue >& aOptions )
+ throw(::com::sun::star::io::IOException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
+ getStyleLoaderOptions() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScStyleFamilyObj : public ::cppu::WeakImplHelper3<
+ ::com::sun::star::container::XNameContainer,
+ ::com::sun::star::container::XIndexAccess,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ SfxStyleFamily eFamily; // Familie
+
+ ScStyleObj* GetObjectByIndex_Impl(UINT32 nIndex);
+ ScStyleObj* GetObjectByName_Impl(const rtl::OUString& Name);
+
+public:
+ ScStyleFamilyObj(ScDocShell* pDocSh, SfxStyleFamily eFam);
+ virtual ~ScStyleFamilyObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XNameContainer
+ virtual void SAL_CALL insertByName( 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 removeByName( const ::rtl::OUString& Name )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameReplace
+ virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName,
+ const ::com::sun::star::uno::Any& aElement )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+class ScStyleObj : public ::cppu::WeakImplHelper5<
+ ::com::sun::star::style::XStyle,
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::beans::XPropertyState,
+ ::com::sun::star::lang::XUnoTunnel,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ SfxItemPropertySet aPropSet;
+ ScDocShell* pDocShell;
+ SfxStyleFamily eFamily; // Familie
+ String aStyleName;
+
+ SfxStyleSheetBase* GetStyle_Impl();
+ const SfxItemSet* GetStyleItemSet_Impl( const String& rPropName, UINT16& rWhich );
+ void SetOrResetPropertyValue_Impl( const rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any* pValue );
+
+public:
+ ScStyleObj();
+ ScStyleObj(ScDocShell* pDocSh, SfxStyleFamily eFam, const String& rName);
+ virtual ~ScStyleObj();
+
+ // per getImplementation gerufen:
+ sal_Bool IsInserted() const { return pDocShell != NULL; }
+ SfxStyleFamily GetFamily() const { return eFamily; }
+ void InitDoc( ScDocShell* pNewDocSh, const String& rNewName );
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XStyle
+ virtual sal_Bool SAL_CALL isUserDefined() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isInUse() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getParentStyle() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setParentStyle( const ::rtl::OUString& aParentStyle )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XNamed
+ virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setName( const ::rtl::OUString& aName )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XPropertyState
+ virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL
+ getPropertyStates( const ::com::sun::star::uno::Sequence<
+ ::rtl::OUString >& aPropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault(
+ const ::rtl::OUString& aPropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScStyleObj* getImplementation( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XInterface> xObj );
+
+};
+
+#endif
+
diff --git a/sc/inc/subtotal.hxx b/sc/inc/subtotal.hxx
new file mode 100644
index 000000000000..b11ac30c9d33
--- /dev/null
+++ b/sc/inc/subtotal.hxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * $RCSfile: subtotal.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SUBTOTAL_HXX
+#define SC_SUBTOTAL_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef MSC
+ #include <setjmp.h>
+#else
+ extern "C"
+ {
+ #define _JBLEN 9 /* bp, di, si, sp, ret addr, ds */
+ typedef int jmp_buf[_JBLEN];
+ #define _JMP_BUF_DEFINED
+ #define setjmp _setjmp
+ int __cdecl _setjmp(jmp_buf);
+ void __cdecl longjmp(jmp_buf, int);
+ };
+#endif
+
+
+
+class SubTotal
+{
+private:
+ long nCount;
+ long nCount2;
+ double nSum;
+ double nSumSqr;
+ double nMax;
+ double nMin;
+ double nProduct;
+ BOOL bSumOk;
+ BOOL bSumSqrOk;
+ BOOL bProductOk;
+ USHORT nProgress;
+
+public:
+ USHORT nIndex; // Test
+ static jmp_buf aGlobalJumpBuf;
+
+public:
+ SubTotal();
+ ~SubTotal();
+
+ void UpdateNoVal();
+ void Update( double nVal );
+ void Update( const SubTotal& rVal );
+
+ short Valid( USHORT nFunction ) const;
+ // return 0 => Fehler, -1 => kein Wert, 1 => ok
+ double Result( USHORT nFunction ) const;
+ static BOOL SafePlus( double& fVal1, double fVal2);
+ static BOOL SafeMult( double& fVal1, double fVal2);
+ static BOOL SafeDiv( double& fVal1, double fVal2);
+};
+
+
+struct ScFunctionData // zum Berechnen von einzelnen Funktionen
+{
+ ScSubTotalFunc eFunc;
+ double nVal;
+ long nCount;
+ BOOL bError;
+
+ ScFunctionData( ScSubTotalFunc eFn ) :
+ eFunc(eFn), nVal(0.0), nCount(0), bError(FALSE) {}
+};
+
+
+#endif
+
+
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
new file mode 100644
index 000000000000..e384aaf1cceb
--- /dev/null
+++ b/sc/inc/table.hxx
@@ -0,0 +1,684 @@
+/*************************************************************************
+ *
+ * $RCSfile: table.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TABLE_HXX
+#define SC_TABLE_HXX
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _COLOR_HXX //autogen
+#include <vcl/color.hxx>
+#endif
+
+#ifndef SC_COLUMN_HXX
+#include "column.hxx"
+#endif
+
+class SearchParam;
+class SearchText;
+class SfxItemSet;
+class SfxStyleSheetBase;
+class SvxBoxInfoItem;
+class SvxBoxItem;
+class SvxSearchItem;
+
+class ScAutoFormat;
+class ScAutoFormatData;
+class ScBaseCell;
+class ScDocument;
+class ScDrawLayer;
+class ScFormulaCell;
+class ScOutlineTable;
+class ScPostIt;
+class ScPrintSaverTab;
+class ScProgress;
+class ScProgress;
+class ScRangeList;
+class ScSortInfoArray;
+class ScStyleSheet;
+class ScTableLink;
+class ScUserListData;
+class ScIndexMap;
+struct RowInfo;
+struct ScFunctionData;
+struct ScLineFlags;
+
+
+class ScTable
+{
+private:
+ // Daten pro Tabelle ------------------
+ ScColumn aCol[MAXCOL+1];
+
+ String aName;
+ String aComment;
+ BOOL bScenario;
+
+ String aLinkDoc;
+ String aLinkFlt;
+ String aLinkOpt;
+ String aLinkTab;
+ BYTE nLinkMode;
+
+ // Seitenformatvorlage
+ String aPageStyle;
+ BOOL bPageSizeValid;
+ Size aPageSizeTwips; // Groesse der Druck-Seite
+ USHORT nRepeatStartX; // Wiederholungszeilen/Spalten
+ USHORT nRepeatEndX; // REPEAT_NONE, wenn nicht benutzt
+ USHORT nRepeatStartY;
+ USHORT nRepeatEndY;
+
+ BOOL bProtected;
+ String aProtectPass;
+
+ USHORT* pColWidth;
+ USHORT* pRowHeight;
+
+ BYTE* pColFlags;
+ BYTE* pRowFlags;
+
+ ScOutlineTable* pOutlineTable;
+
+ USHORT nTableAreaX;
+ USHORT nTableAreaY;
+ BOOL bTableAreaValid;
+
+ // interne Verwaltung ------------------
+ BOOL bVisible;
+
+ USHORT nTab;
+ USHORT nRecalcLvl; // Rekursionslevel Size-Recalc
+ ScDocument* pDocument;
+ SearchParam* pSearchParam;
+ SearchText* pSearchText;
+
+ // SortierParameter um den Stackbedarf von Quicksort zu Minimieren
+ ScSortParam aSortParam;
+ BOOL bGlobalKeepQuery;
+ BOOL bSharedNameInserted;
+
+ USHORT nPrintRangeCount;
+ ScRange* pPrintRanges;
+ ScRange* pRepeatColRange;
+ ScRange* pRepeatRowRange;
+
+ USHORT nLockCount;
+
+ ScRangeList* pScenarioRanges;
+ Color aScenarioColor;
+ USHORT nScenarioFlags;
+ BOOL bActiveScenario;
+
+friend class ScDocument; // fuer FillInfo
+friend class ScDocumentIterator;
+friend class ScValueIterator;
+friend class ScQueryValueIterator;
+friend class ScCellIterator;
+friend class ScQueryCellIterator;
+friend class ScHorizontalCellIterator;
+friend class ScHorizontalAttrIterator;
+friend class ScDocAttrIterator;
+friend class ScAttrRectIterator;
+
+
+public:
+ ScTable( ScDocument* pDoc, USHORT nNewTab, const String& rNewName,
+ BOOL bColInfo = TRUE, BOOL bRowInfo = TRUE );
+ ~ScTable();
+
+ ScOutlineTable* GetOutlineTable() { return pOutlineTable; }
+
+ long GetCellCount() const;
+ long GetWeightedCount() const;
+ ULONG GetCodeCount() const; // RPN-Code in Formeln
+
+ BOOL SetOutlineTable( const ScOutlineTable* pNewOutline );
+ void StartOutlineTable();
+
+ void DoAutoOutline( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow );
+
+ BOOL TestRemoveSubTotals( const ScSubTotalParam& rParam );
+ void RemoveSubTotals( ScSubTotalParam& rParam );
+ BOOL DoSubTotals( ScSubTotalParam& rParam );
+
+ BOOL IsVisible() const { return bVisible; }
+ void SetVisible( BOOL bVis );
+
+ BOOL IsScenario() const { return bScenario; }
+ void SetScenario( BOOL bFlag );
+ void GetScenarioComment( String& rComment) const { rComment = aComment; }
+ void SetScenarioComment( const String& rComment ) { aComment = rComment; }
+ const Color& GetScenarioColor() const { return aScenarioColor; }
+ void SetScenarioColor(const Color& rNew) { aScenarioColor = rNew; }
+ USHORT GetScenarioFlags() const { return nScenarioFlags; }
+ void SetScenarioFlags(USHORT nNew) { nScenarioFlags = nNew; }
+ void SetActiveScenario(BOOL bSet) { bActiveScenario = bSet; }
+ BOOL IsActiveScenario() const { return bActiveScenario; }
+
+ BYTE GetLinkMode() const { return nLinkMode; }
+ BOOL IsLinked() const { return nLinkMode != SC_LINK_NONE; }
+ const String& GetLinkDoc() const { return aLinkDoc; }
+ const String& GetLinkFlt() const { return aLinkFlt; }
+ const String& GetLinkOpt() const { return aLinkOpt; }
+ const String& GetLinkTab() const { return aLinkTab; }
+
+ void SetLink( BYTE nMode, const String& rDoc, const String& rFlt, const String& rOpt,
+ const String& rTab );
+
+ void GetName( String& rName ) const;
+ void SetName( const String& rNewName );
+
+ const String& GetPageStyle() const { return aPageStyle; }
+ void SetPageStyle( const String& rName );
+ void PageStyleModified( const String& rNewName );
+
+ BOOL IsProtected() const { return bProtected; }
+ const String& GetPassword() const { return aProtectPass; }
+ void SetProtection( BOOL bProtect, const String& rPasswd )
+ { bProtected = bProtect; aProtectPass = rPasswd; }
+
+ Size GetPageSize() const;
+ void SetPageSize( const Size& rSize );
+ void SetRepeatArea( USHORT nStartCol, USHORT nEndCol, USHORT nStartRow, USHORT nEndRow );
+
+ void RemoveAutoSpellObj();
+
+ void LockTable();
+ void UnlockTable();
+
+ BOOL IsBlockEditable( USHORT nCol1, USHORT nRow1, USHORT nCol2,
+ USHORT nRow2, BOOL* pOnlyNotBecauseOfMatrix = NULL ) const;
+ BOOL IsSelectionEditable( const ScMarkData& rMark,
+ BOOL* pOnlyNotBecauseOfMatrix = NULL ) const;
+
+ BOOL HasBlockMatrixFragment( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 ) const;
+ BOOL HasSelectionMatrixFragment( const ScMarkData& rMark ) const;
+
+ BOOL IsBlockEmpty( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 ) const;
+
+ void PutCell( const ScAddress&, ScBaseCell* pCell );
+ void PutCell( const ScAddress&, ULONG nFormatIndex, ScBaseCell* pCell);
+ void PutCell( USHORT nCol, USHORT nRow, ScBaseCell* pCell );
+ void PutCell(USHORT nCol, USHORT nRow, ULONG nFormatIndex, ScBaseCell* pCell);
+ // TRUE = Zahlformat gesetzt
+ BOOL SetString( USHORT nCol, USHORT nRow, USHORT nTab, const String& rString );
+ void SetValue( USHORT nCol, USHORT nRow, const double& rVal );
+ void SetNote( USHORT nCol, USHORT nRow, const ScPostIt& rNote);
+ void SetError( USHORT nCol, USHORT nRow, USHORT nError);
+
+ void GetString( USHORT nCol, USHORT nRow, String& rString );
+ void GetInputString( USHORT nCol, USHORT nRow, String& rString );
+ double GetValue( const ScAddress& rPos ) const
+ { return aCol[rPos.Col()].GetValue( rPos.Row() ); }
+ double GetValue( USHORT nCol, USHORT nRow );
+ void GetFormula( USHORT nCol, USHORT nRow, String& rFormula,
+ BOOL bAsciiExport = FALSE );
+ BOOL GetNote( USHORT nCol, USHORT nRow, ScPostIt& rNote);
+
+ CellType GetCellType( const ScAddress& rPos ) const
+ { return aCol[rPos.Col()].GetCellType( rPos.Row() ); }
+ CellType GetCellType( USHORT nCol, USHORT nRow ) const;
+ ScBaseCell* GetCell( const ScAddress& rPos ) const
+ { return aCol[rPos.Col()].GetCell( rPos.Row() ); }
+ ScBaseCell* GetCell( USHORT nCol, USHORT nRow ) const;
+
+ void GetLastDataPos(USHORT& rCol, USHORT& rRow) const;
+
+ BOOL TestInsertRow( USHORT nStartCol, USHORT nEndCol, USHORT nSize );
+ void InsertRow( USHORT nStartCol, USHORT nEndCol, USHORT nStartRow, USHORT nSize );
+ void DeleteRow( USHORT nStartCol, USHORT nEndCol, USHORT nStartRow, USHORT nSize,
+ BOOL* pUndoOutline = NULL );
+
+ BOOL TestInsertCol( USHORT nStartRow, USHORT nEndRow, USHORT nSize );
+ void InsertCol( USHORT nStartCol, USHORT nStartRow, USHORT nEndRow, USHORT nSize );
+ void DeleteCol( USHORT nStartCol, USHORT nStartRow, USHORT nEndRow, USHORT nSize,
+ BOOL* pUndoOutline = NULL );
+
+ void DeleteArea(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2, USHORT nDelFlag);
+ void CopyToClip(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2, ScTable* pTable,
+ BOOL bKeepScenarioFlags);
+ void CopyFromClip(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2, short nDx, short nDy,
+ USHORT nInsFlag, BOOL bAsLink, ScTable* pTable);
+ void StartListeningInArea( USHORT nCol1, USHORT nRow1,
+ USHORT nCol2, USHORT nRow2 );
+ void BroadcastInArea( USHORT nCol1, USHORT nRow1,
+ USHORT nCol2, USHORT nRow2 );
+
+ void CopyToTable(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nFlags, BOOL bMarked, ScTable* pDestTab,
+ const ScMarkData* pMarkData = NULL,
+ BOOL bAsLink = FALSE, BOOL bColRowFlags = TRUE);
+ void UndoToTable(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nFlags, BOOL bMarked, ScTable* pDestTab,
+ const ScMarkData* pMarkData = NULL);
+
+ void TransposeClip( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ ScTable* pTransClip, USHORT nFlags, BOOL bAsLink );
+
+ // Markierung von diesem Dokument
+ void MixMarked( const ScMarkData& rMark, USHORT nFunction,
+ BOOL bSkipEmpty, ScTable* pSrcTab );
+ void MixData( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nFunction, BOOL bSkipEmpty, ScTable* pSrcTab );
+
+ void CopyData( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ USHORT nDestCol, USHORT nDestRow, USHORT nDestTab );
+
+ void CopyScenarioFrom( const ScTable* pSrcTab );
+ void CopyScenarioTo( ScTable* pDestTab ) const;
+ BOOL TestCopyScenarioTo( const ScTable* pDestTab ) const;
+ void MarkScenarioIn( ScMarkData& rMark, USHORT nNeededBits ) const;
+ BOOL HasScenarioRange( const ScRange& rRange ) const;
+ void InvalidateScenarioRanges();
+ const ScRangeList* GetScenarioRanges() const;
+
+ void CopyUpdated( const ScTable* pPosTab, ScTable* pDestTab ) const;
+
+ void InvalidateTableArea() { bTableAreaValid = FALSE; }
+
+ BOOL GetCellArea( USHORT& rEndCol, USHORT& rEndRow ) const; // FALSE = leer
+ BOOL GetTableArea( USHORT& rEndCol, USHORT& rEndRow ) const;
+ BOOL GetPrintArea( USHORT& rEndCol, USHORT& rEndRow, BOOL bNotes ) const;
+ BOOL GetPrintAreaHor( USHORT nStartRow, USHORT nEndRow,
+ USHORT& rEndCol, BOOL bNotes ) const;
+ BOOL GetPrintAreaVer( USHORT nStartCol, USHORT nEndCol,
+ USHORT& rEndRow, BOOL bNotes ) const;
+
+ BOOL GetDataStart( USHORT& rStartCol, USHORT& rStartRow ) const;
+
+ void ExtendPrintArea( OutputDevice* pDev,
+ USHORT nStartCol, USHORT nStartRow, USHORT& rEndCol, USHORT nEndRow );
+
+ void GetDataArea( USHORT& rStartCol, USHORT& rStartRow, USHORT& rEndCol, USHORT& rEndRow,
+ BOOL bIncludeOld );
+
+ USHORT GetEmptyLinesInBlock( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow, ScDirection eDir );
+
+ void FindAreaPos( USHORT& rCol, USHORT& rRow, short nMovX, short nMovY );
+ void GetNextPos( USHORT& rCol, USHORT& rRow, short nMovX, short nMovY,
+ BOOL bMarked, BOOL bUnprotected, const ScMarkData& rMark );
+
+ void LimitChartArea( USHORT& rStartCol, USHORT& rStartRow, USHORT& rEndCol, USHORT& rEndRow );
+
+ BOOL HasData( USHORT nCol, USHORT nRow );
+ BOOL HasStringData( USHORT nCol, USHORT nRow );
+ BOOL HasValueData( USHORT nCol, USHORT nRow );
+ USHORT GetErrorData(USHORT nCol, USHORT nRow) const;
+ BOOL HasStringCells( USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow ) const;
+
+ USHORT GetErrCode( const ScAddress& rPos ) const
+ { return aCol[rPos.Col()].GetErrCode( rPos.Row() ); }
+ USHORT GetErrCode( USHORT nCol, USHORT nRow ) const;
+
+ void ResetChanged( const ScRange& rRange );
+
+ void SetDirty();
+ void SetDirty( const ScRange& );
+ void SetDirtyAfterLoad();
+ void SetDirtyVar();
+ void CalcAll();
+ void CalcAfterLoad();
+ void CompileAll();
+ void CompileXML();
+
+ void UpdateReference( UpdateRefMode eUpdateRefMode, USHORT nCol1, USHORT nRow1, USHORT nTab1,
+ USHORT nCol2, USHORT nRow2, USHORT nTab2,
+ short nDx, short nDy, short nDz,
+ ScDocument* pUndoDoc = NULL );
+
+ void UpdateTranspose( const ScRange& rSource, const ScAddress& rDest,
+ ScDocument* pUndoDoc );
+
+ void UpdateGrow( const ScRange& rArea, USHORT nGrowX, USHORT nGrowY );
+
+ void UpdateInsertTab(USHORT nTable);
+ void UpdateInsertTabOnlyCells(USHORT nTable);
+ void UpdateDeleteTab( USHORT nTable, BOOL bIsMove, ScTable* pRefUndo = NULL );
+ void UpdateMoveTab(USHORT nOldPos, USHORT nNewPos, USHORT nTabNo, ScProgress& );
+ void UpdateCompile( BOOL bForceIfNameInUse = FALSE );
+ void SetTabNo(USHORT nNewTab);
+ BOOL IsRangeNameInUse(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nIndex) const;
+ void ReplaceRangeNamesInUse(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ const ScIndexMap& rMap );
+ void Fill( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nFillCount, FillDir eFillDir, FillCmd eFillCmd, FillDateCmd eFillDateCmd,
+ double nStepValue, double nMaxValue);
+ String GetAutoFillPreview( const ScRange& rSource, USHORT nEndX, USHORT nEndY );
+
+ void UpdateSelectionFunction( ScFunctionData& rData,
+ USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ const ScMarkData& rMark );
+
+ void AutoFormat( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ USHORT nFormatNo );
+ void GetAutoFormatData(USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow, ScAutoFormatData& rData);
+ void ScReplaceTabsStr( String& rStr, const String& rSrch, const String& rRepl ); // aus sw
+ BOOL SearchAndReplace(const SvxSearchItem& rSearchItem,
+ USHORT& rCol, USHORT& rRow, ScMarkData& rMark,
+ String& rUndoStr, ScDocument* pUndoDoc);
+
+ void FindMaxRotCol( RowInfo* pRowInfo, USHORT nArrCount, USHORT nX1, USHORT nX2 ) const;
+
+ void GetBorderLines( USHORT nCol, USHORT nRow,
+ const SvxBorderLine** ppLeft, const SvxBorderLine** ppTop,
+ const SvxBorderLine** ppRight, const SvxBorderLine** ppBottom ) const;
+
+ BOOL HasLines( const ScRange& rRange, Rectangle& rSizes ) const;
+ BOOL HasAttrib( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2, USHORT nMask ) const;
+ BOOL HasAttribSelection( const ScMarkData& rMark, USHORT nMask ) const;
+ BOOL ExtendMerge( USHORT nStartCol, USHORT nStartRow,
+ USHORT& rEndCol, USHORT& rEndRow,
+ BOOL bRefresh, BOOL bAttrs );
+ const SfxPoolItem* GetAttr( USHORT nCol, USHORT nRow, USHORT nWhich ) const;
+ const ScPatternAttr* GetPattern( USHORT nCol, USHORT nRow ) const;
+
+ ULONG GetNumberFormat( const ScAddress& rPos ) const
+ { return aCol[rPos.Col()].GetNumberFormat( rPos.Row() ); }
+ ULONG GetNumberFormat( USHORT nCol, USHORT nRow ) const;
+ void MergeSelectionPattern( SfxItemSet** ppSet,
+ const ScMarkData& rMark, BOOL bDeep ) const;
+ void MergePatternArea( SfxItemSet** ppSet, USHORT nCol1, USHORT nRow1,
+ USHORT nCol2, USHORT nRow2, BOOL bDeep ) const;
+ void MergeBlockFrame( SvxBoxItem* pLineOuter, SvxBoxInfoItem* pLineInner,
+ ScLineFlags& rFlags,
+ USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow ) const;
+ void ApplyBlockFrame( const SvxBoxItem* pLineOuter,
+ const SvxBoxInfoItem* pLineInner,
+ USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow );
+
+ void ApplyAttr( USHORT nCol, USHORT nRow, const SfxPoolItem& rAttr );
+ void ApplyPattern( USHORT nCol, USHORT nRow, const ScPatternAttr& rAttr );
+ void ApplyPatternArea( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow, const ScPatternAttr& rAttr );
+ void SetPattern( const ScAddress& rPos, const ScPatternAttr& rAttr, BOOL bPutToPool = FALSE )
+ { aCol[rPos.Col()].SetPattern( rPos.Row(), rAttr, bPutToPool ); }
+ void SetPattern( USHORT nCol, USHORT nRow, const ScPatternAttr& rAttr, BOOL bPutToPool = FALSE );
+ void ApplyPatternIfNumberformatIncompatible( const ScRange& rRange,
+ const ScPatternAttr& rPattern, short nNewType );
+
+ void ApplyStyle( USHORT nCol, USHORT nRow, const ScStyleSheet& rStyle );
+ void ApplyStyleArea( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow, const ScStyleSheet& rStyle );
+ void ApplySelectionStyle(const ScStyleSheet& rStyle, const ScMarkData& rMark);
+ void ApplySelectionLineStyle( const ScMarkData& rMark,
+ const SvxBorderLine* pLine, BOOL bColorOnly );
+
+ const ScStyleSheet* GetStyle( USHORT nCol, USHORT nRow ) const;
+ const ScStyleSheet* GetSelectionStyle( const ScMarkData& rMark, BOOL& rFound ) const;
+ const ScStyleSheet* GetAreaStyle( BOOL& rFound, USHORT nCol1, USHORT nRow1,
+ USHORT nCol2, USHORT nRow2 ) const;
+
+ void StyleSheetChanged( const SfxStyleSheetBase* pStyleSheet, BOOL bRemoved,
+ OutputDevice* pDev,
+ double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY );
+
+ BOOL IsStyleSheetUsed( const SfxStyleSheetBase& rStyle ) const;
+
+ BOOL ApplyFlags( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow, INT16 nFlags );
+ BOOL RemoveFlags( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow, INT16 nFlags );
+
+ void ApplySelectionCache( SfxItemPoolCache* pCache, const ScMarkData& rMark );
+ void DeleteSelection( USHORT nDelFlag, const ScMarkData& rMark );
+
+ void ClearSelectionItems( const USHORT* pWhich, const ScMarkData& rMark );
+ void ChangeSelectionIndent( BOOL bIncrement, const ScMarkData& rMark );
+
+ const ScRange* GetRepeatColRange() const { return pRepeatColRange; }
+ const ScRange* GetRepeatRowRange() const { return pRepeatRowRange; }
+ void SetRepeatColRange( const ScRange* pNew );
+ void SetRepeatRowRange( const ScRange* pNew );
+
+ USHORT GetPrintRangeCount() const { return nPrintRangeCount; }
+ const ScRange* GetPrintRange(USHORT nPos) const;
+ void SetPrintRangeCount( USHORT nNew );
+ void SetPrintRange( USHORT nPos, const ScRange& rNew );
+ void FillPrintSaver( ScPrintSaverTab& rSaveTab ) const;
+ void RestorePrintRanges( const ScPrintSaverTab& rSaveTab );
+
+ USHORT GetOptimalColWidth( USHORT nCol, OutputDevice* pDev,
+ double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY,
+ BOOL bFormula, const ScMarkData* pMarkData,
+ BOOL bSimpleTextImport );
+ BOOL SetOptimalHeight( USHORT nStartRow, USHORT nEndRow, USHORT nExtra,
+ OutputDevice* pDev,
+ double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY,
+ BOOL bForce );
+ long GetNeededSize( USHORT nCol, USHORT nRow,
+ OutputDevice* pDev,
+ double nPPTX, double nPPTY,
+ const Fraction& rZoomX, const Fraction& rZoomY,
+ BOOL bWidth, BOOL bTotalSize );
+ void SetColWidth( USHORT nCol, USHORT nNewWidth );
+ void SetRowHeight( USHORT nRow, USHORT nNewHeight );
+ BOOL SetRowHeightRange( USHORT nStartRow, USHORT nEndRow, USHORT nNewHeight,
+ double nPPTX, double nPPTY );
+ // nPPT fuer Test auf Veraenderung
+ void SetManualHeight( USHORT nStartRow, USHORT nEndRow, BOOL bManual );
+
+ USHORT GetColWidth( USHORT nCol ) const;
+ USHORT GetRowHeight( USHORT nRow ) const;
+ ULONG GetColOffset( USHORT nCol ) const;
+ ULONG GetRowOffset( USHORT nRow ) const;
+
+ USHORT GetOriginalWidth( USHORT nCol ) const;
+
+ USHORT GetHiddenRowCount( USHORT nRow ) const;
+
+ void ShowCol(USHORT nCol, BOOL bShow);
+ void ShowRow(USHORT nRow, BOOL bShow);
+ void DBShowRow(USHORT nRow, BOOL bShow);
+
+ void ShowRows(USHORT nRow1, USHORT nRow2, BOOL bShow);
+ void DBShowRows(USHORT nRow1, USHORT nRow2, BOOL bShow);
+
+ void SetColFlags( USHORT nCol, BYTE nNewFlags );
+ void SetRowFlags( USHORT nRow, BYTE nNewFlags );
+
+ USHORT GetLastFlaggedCol() const;
+ USHORT GetLastFlaggedRow() const;
+
+ BOOL IsFiltered(USHORT nRow) const;
+
+ BYTE GetColFlags( USHORT nCol ) const;
+ BYTE GetRowFlags( USHORT nRow ) const;
+
+ BOOL UpdateOutlineCol( USHORT nStartCol, USHORT nEndCol, BOOL bShow );
+ BOOL UpdateOutlineRow( USHORT nStartRow, USHORT nEndRow, BOOL bShow );
+
+ void UpdatePageBreaks( const ScRange* pUserArea );
+ void RemoveManualBreaks();
+ BOOL HasManualBreaks() const;
+
+ void StripHidden( USHORT& rX1, USHORT& rY1, USHORT& rX2, USHORT& rY2 );
+ void ExtendHidden( USHORT& rX1, USHORT& rY1, USHORT& rX2, USHORT& rY2 );
+
+ BOOL Load( SvStream& rStream, USHORT nVersion, ScProgress* pProgress );
+ BOOL Save( SvStream& rStream, long& rSavedDocCells, ScProgress* pProgress ) const;
+
+ void Sort(const ScSortParam& rSortParam, BOOL bKeepQuery);
+ BOOL ValidQuery(USHORT nRow, const ScQueryParam& rQueryParam, BOOL* pSpecial = NULL);
+ void TopTenQuery( ScQueryParam& );
+ USHORT Query(ScQueryParam& rQueryParam, BOOL bKeepSub);
+ BOOL CreateQueryParam(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2, ScQueryParam& rQueryParam);
+
+ void GetFilterEntries(USHORT nCol, USHORT nRow1, USHORT nRow2, TypedStrCollection& rStrings);
+ BOOL GetDataEntries(USHORT nCol, USHORT nRow, TypedStrCollection& rStrings, BOOL bLimit);
+
+ BOOL HasColHeader( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow );
+ BOOL HasRowHeader( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow );
+
+ void DoColResize( USHORT nCol1, USHORT nCol2, USHORT nAdd );
+
+ // maximale Stringlaengen einer Column, fuer z.B. dBase Export
+ xub_StrLen GetMaxStringLen( USHORT nCol,
+ USHORT nRowStart, USHORT nRowEnd ) const;
+ xub_StrLen GetMaxNumberStringLen( USHORT& nPrecision,
+ USHORT nCol,
+ USHORT nRowStart, USHORT nRowEnd ) const;
+
+ void FindConditionalFormat( ULONG nKey, ScRangeList& rRanges );
+
+ void IncRecalcLevel() { ++nRecalcLvl; }
+ void DecRecalcLevel() { if (!--nRecalcLvl) SetDrawPageSize(); }
+
+private:
+ void FillSeries( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nFillCount, FillDir eFillDir, FillCmd eFillCmd,
+ FillDateCmd eFillDateCmd,
+ double nStepValue, double nMaxValue, USHORT nMinDigits,
+ BOOL bAttribs, ScProgress& rProgress );
+ void FillAnalyse( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ FillCmd& rCmd, FillDateCmd& rDateCmd,
+ double& rInc, USHORT& rMinDigits,
+ ScUserListData*& rListData, USHORT& rListIndex);
+ void FillAuto( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2,
+ USHORT nFillCount, FillDir eFillDir, ScProgress& rProgress );
+
+ BOOL ValidNextPos( USHORT nCol, USHORT nRow, const ScMarkData& rMark,
+ BOOL bMarked, BOOL bUnprotected );
+
+ void AutoFormatArea(USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ USHORT nIndex, USHORT nFormatNo);
+ void GetAutoFormatAttr(USHORT nCol, USHORT nRow, USHORT nIndex, ScAutoFormatData& rData);
+ void GetAutoFormatFrame(USHORT nCol, USHORT nRow, USHORT nFlags, USHORT nIndex, ScAutoFormatData& rData);
+ BOOL SearchCell(const SvxSearchItem& rSearchItem, USHORT nCol, USHORT nRow,
+ const ScMarkData& rMark, String& rUndoStr, ScDocument* pUndoDoc);
+ BOOL Search(const SvxSearchItem& rSearchItem, USHORT& rCol, USHORT& rRow,
+ const ScMarkData& rMark, String& rUndoStr, ScDocument* pUndoDoc);
+ BOOL SearchAll(const SvxSearchItem& rSearchItem, ScMarkData& rMark,
+ String& rUndoStr, ScDocument* pUndoDoc);
+ BOOL Replace(const SvxSearchItem& rSearchItem, USHORT& rCol, USHORT& rRow,
+ const ScMarkData& rMark, String& rUndoStr, ScDocument* pUndoDoc);
+ BOOL ReplaceAll(const SvxSearchItem& rSearchItem, ScMarkData& rMark,
+ String& rUndoStr, ScDocument* pUndoDoc);
+
+ BOOL SearchStyle(const SvxSearchItem& rSearchItem, USHORT& rCol, USHORT& rRow,
+ ScMarkData& rMark);
+ BOOL ReplaceStyle(const SvxSearchItem& rSearchItem, USHORT& rCol, USHORT& rRow,
+ ScMarkData& rMark, BOOL bIsUndo);
+ BOOL SearchAllStyle(const SvxSearchItem& rSearchItem, ScMarkData& rMark);
+ BOOL ReplaceAllStyle(const SvxSearchItem& rSearchItem, ScMarkData& rMark,
+ ScDocument* pUndoDoc);
+
+ // benutzen globalen SortParam:
+ BOOL IsSorted(USHORT nStart, USHORT nEnd);
+ void DecoladeRow( ScSortInfoArray*, USHORT nRow1, USHORT nRow2 );
+ void SwapCol(USHORT nCol1, USHORT nCol2);
+ void SwapRow(USHORT nRow1, USHORT nRow2);
+ short CompareCell( USHORT nSort,
+ ScBaseCell* pCell1, USHORT nCell1Col, USHORT nCell1Row,
+ ScBaseCell* pCell2, USHORT nCell2Col, USHORT nCell2Row );
+ short Compare(USHORT nIndex1, USHORT nIndex2);
+ short Compare( ScSortInfoArray*, USHORT nIndex1, USHORT nIndex2);
+ ScSortInfoArray* CreateSortInfoArray( USHORT nInd1, USHORT nInd2 );
+ void QuickSort( ScSortInfoArray*, short nLo, short nHi);
+ void SortReorder( ScSortInfoArray*, ScProgress& );
+
+ BOOL CreateExcelQuery(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2, ScQueryParam& rQueryParam);
+ BOOL CreateStarQuery(USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2, ScQueryParam& rQueryParam);
+ void GetUpperCellString(USHORT nCol, USHORT nRow, String& rStr);
+
+ BOOL RefVisible(ScFormulaCell* pCell);
+
+ BOOL IsEmptyLine(USHORT nRow, USHORT nStartCol, USHORT nEndCol);
+
+ void IncDate(double& rVal, USHORT& nDayOfMonth, double nStep, FillDateCmd eCmd);
+ void FillFormula(USHORT& nFormulaCounter, BOOL bFirst, ScFormulaCell* pSrcCell,
+ USHORT nDestCol, USHORT nDestRow, BOOL bLast );
+ void UpdateInsertTabAbs(USHORT nNewPos);
+ BOOL GetNextSpellingCell(USHORT& rCol, USHORT& rRow, BOOL bInSel,
+ const ScMarkData& rMark) const;
+ BOOL GetNextMarkedCell( USHORT& rCol, USHORT& rRow, const ScMarkData& rMark );
+ void SetDrawPageSize();
+ BOOL TestTabRefAbs(USHORT nTable);
+ void CompileDBFormula();
+ void CompileDBFormula( BOOL bCreateFormulaString );
+ void CompileNameFormula( BOOL bCreateFormulaString );
+ void CompileColRowNameFormula();
+
+ void StartListening( const ScAddress& rAddress, SfxListener* pListener );
+ void EndListening( const ScAddress& rAddress, SfxListener* pListener );
+ void StartAllListeners();
+ void StartRelNameListeners();
+ void SetRelNameDirty();
+
+ USHORT FillMaxRot( RowInfo* pRowInfo, USHORT nArrCount, USHORT nX1, USHORT nX2,
+ USHORT nCol, USHORT nAttrRow1, USHORT nAttrRow2, USHORT nArrY,
+ const ScPatternAttr* pPattern, const SfxItemSet* pCondSet ) const;
+
+ // Idleberechnung der OutputDevice-Zelltextbreite
+ void InvalidateTextWidth( const ScAddress* pAdrFrom = NULL,
+ const ScAddress* pAdrTo = NULL,
+ BOOL bBroadcast = FALSE );
+};
+
+
+#endif
+
+
diff --git a/sc/inc/tablink.hxx b/sc/inc/tablink.hxx
new file mode 100644
index 000000000000..5cff4dd702b9
--- /dev/null
+++ b/sc/inc/tablink.hxx
@@ -0,0 +1,140 @@
+/*************************************************************************
+ *
+ * $RCSfile: tablink.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TABLINK_HXX
+#define SC_TABLINK_HXX
+
+#ifndef _LNKBASE_HXX //autogen
+#include <so3/lnkbase.hxx>
+#endif
+
+#ifndef SO2_DECL_SVEMBEDDEDOBJECT_DEFINED
+#define SO2_DECL_SVEMBEDDEDOBJECT_DEFINED
+SO2_DECL_REF(SvEmbeddedObject)
+#endif
+
+class ScDocShell;
+class SfxObjectShell;
+
+class ScTableLink : public SvBaseLink
+{
+private:
+ ScDocShell* pDocShell; // Container
+ String aFileName;
+ String aFilterName;
+ String aOptions;
+ BOOL bInCreate;
+ BOOL bAddUndo;
+ BOOL bDoPaint;
+
+public:
+ TYPEINFO();
+ ScTableLink( ScDocShell* pDocSh, const String& rFile,
+ const String& rFilter, const String& rOpt);
+ ScTableLink( SfxObjectShell* pShell, const String& rFile,
+ const String& rFilter, const String& rOpt);
+ virtual ~ScTableLink();
+ virtual void Closed();
+ virtual void DataChanged(SvData& rData);
+
+ virtual BOOL Edit(Window* pParent);
+
+ BOOL Refresh(const String& rNewFile, const String& rNewFilter,
+ const String* pNewOptions = NULL);
+ void SetInCreate(BOOL bSet) { bInCreate = bSet; }
+ void SetAddUndo(BOOL bSet) { bAddUndo = bSet; }
+ void SetPaint(BOOL bSet) { bDoPaint = bSet; }
+
+ const String& GetFileName() const { return aFileName; }
+ const String& GetFilterName() const { return aFilterName; }
+ const String& GetOptions() const { return aOptions; }
+
+ BOOL IsUsed() const;
+};
+
+
+class ScDocument;
+class SfxMedium;
+
+class ScDocumentLoader
+{
+private:
+ ScDocShell* pDocShell;
+ SvEmbeddedObjectRef aRef;
+ SfxMedium* pMedium;
+
+public:
+ ScDocumentLoader( const String& rFileName,
+ String& rFilterName, String& rOptions,
+ UINT32 nRekCnt = 0 );
+ ~ScDocumentLoader();
+ ScDocument* GetDocument();
+ ScDocShell* GetDocShell() { return pDocShell; }
+ BOOL IsError() const;
+ String GetTitle() const;
+
+ static String GetOptions( SfxMedium& rMedium );
+ static void GetFilterName( const String& rFileName,
+ String& rFilter, String& rOptions );
+};
+
+#endif
+
diff --git a/sc/inc/targuno.hxx b/sc/inc/targuno.hxx
new file mode 100644
index 000000000000..58c0dc6e8319
--- /dev/null
+++ b/sc/inc/targuno.hxx
@@ -0,0 +1,301 @@
+/*************************************************************************
+ *
+ * $RCSfile: targuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TARGUNO_HXX
+#define SC_TARGUNO_HXX
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_DOCUMENT_XLINKTARGETSUPPLIER_HPP_
+#include <com/sun/star/document/XLinkTargetSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICENAME_HPP_
+#include <com/sun/star/lang/XServiceName.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUES_HPP_
+#include <com/sun/star/beans/PropertyValues.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUE_HPP_
+#include <com/sun/star/beans/PropertyValue.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYSTATE_HPP_
+#include <com/sun/star/beans/PropertyState.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSETINFO_HPP_
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XMULTIPROPERTYSET_HPP_
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XFASTPROPERTYSET_HPP_
+#include <com/sun/star/beans/XFastPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XVETOABLECHANGELISTENER_HPP_
+#include <com/sun/star/beans/XVetoableChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSTATE_HPP_
+#include <com/sun/star/beans/XPropertyState.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSTATECHANGELISTENER_HPP_
+#include <com/sun/star/beans/XPropertyStateChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HPP_
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTIESCHANGELISTENER_HPP_
+#include <com/sun/star/beans/XPropertiesChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYACCESS_HPP_
+#include <com/sun/star/beans/XPropertyAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYCONTAINER_HPP_
+#include <com/sun/star/beans/XPropertyContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYSTATECHANGEEVENT_HPP_
+#include <com/sun/star/beans/PropertyStateChangeEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYCHANGEEVENT_HPP_
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XHIERARCHICALNAMEACCESS_HPP_
+#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCONTENTENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XContentEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATION_HPP_
+#include <com/sun/star/container/XEnumeration.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XELEMENTACCESS_HPP_
+#include <com/sun/star/container/XElementAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+
+class ScDocShell;
+
+
+#define SC_LINKTARGETTYPE_SHEET 0
+#define SC_LINKTARGETTYPE_RANGENAME 1
+#define SC_LINKTARGETTYPE_DBAREA 2
+
+#define SC_LINKTARGETTYPE_COUNT 3
+
+#define SCLINKTARGET_SERVICE "com.sun.star.document.LinkTarget"
+
+
+//! Graphic / OleObject (need separate collections!)
+
+
+class ScLinkTargetTypesObj : public ::cppu::WeakImplHelper2<
+ ::com::sun::star::container::XNameAccess,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ String aNames[SC_LINKTARGETTYPE_COUNT];
+
+public:
+ ScLinkTargetTypesObj(ScDocShell* pDocSh);
+ virtual ~ScLinkTargetTypesObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // ::com::sun::star::container::XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName(const ::rtl::OUString& aName)
+ throw( ::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL getElementNames(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL hasByName(const ::rtl::OUString& aName) throw( ::com::sun::star::uno::RuntimeException );
+
+ // ::com::sun::star::container::XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL hasElements(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ // ::com::sun::star::lang::XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL supportsService(const ::rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
+};
+
+
+class ScLinkTargetTypeObj : public ::cppu::WeakImplHelper3<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::document::XLinkTargetSupplier,
+ ::com::sun::star::lang::XServiceInfo >,
+ public SfxListener
+{
+private:
+ ScDocShell* pDocShell;
+ sal_uInt16 nType;
+ String aName;
+
+public:
+ ScLinkTargetTypeObj(ScDocShell* pDocSh, sal_uInt16 nT);
+ virtual ~ScLinkTargetTypeObj();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ static void SetLinkTargetBitmap( ::com::sun::star::uno::Any& rRet, sal_uInt16 nType );
+
+ // ::com::sun::star::beans::XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL setPropertyValue(const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue)
+ throw( ::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(const ::rtl::OUString& PropertyName)
+ throw( ::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addPropertyChangeListener(const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & xListener)
+ throw( ::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removePropertyChangeListener(const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener)
+ throw( ::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL addVetoableChangeListener(const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener)
+ throw( ::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removeVetoableChangeListener(const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener)
+ throw( ::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException );
+
+ // ::com::sun::star::document::XLinkTargetSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getLinks(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ // ::com::sun::star::lang::XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL supportsService(const ::rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
+};
+
+
+class ScLinkTargetsObj : public ::cppu::WeakImplHelper2<
+ ::com::sun::star::container::XNameAccess,
+ ::com::sun::star::lang::XServiceInfo >
+{
+private:
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > xCollection;
+
+public:
+ ScLinkTargetsObj( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > & rColl );
+ virtual ~ScLinkTargetsObj();
+
+ // ::com::sun::star::container::XNameAccess
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName(const ::rtl::OUString& aName)
+ throw( ::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL getElementNames(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL hasByName(const ::rtl::OUString& aName) throw( ::com::sun::star::uno::RuntimeException );
+
+ // ::com::sun::star::container::XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL hasElements(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ // ::com::sun::star::lang::XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL supportsService(const ::rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
+};
+
+
+#endif
+
diff --git a/sc/inc/textuno.hxx b/sc/inc/textuno.hxx
new file mode 100644
index 000000000000..580eb7133276
--- /dev/null
+++ b/sc/inc/textuno.hxx
@@ -0,0 +1,295 @@
+/*************************************************************************
+ *
+ * $RCSfile: textuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TEXTSUNO_HXX
+#define SC_TEXTSUNO_HXX
+
+#ifndef _SVX_UNOTEXT_HXX
+#include <svx/unotext.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_TEXT_XTEXTFIELDSSUPPLIER_HPP_
+#include <com/sun/star/text/XTextFieldsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XHEADERFOOTERCONTENT_HPP_
+#include <com/sun/star/sheet/XHeaderFooterContent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE5_HXX_
+#include <cppuhelper/implbase5.hxx>
+#endif
+
+
+class EditEngine;
+class EditTextObject;
+class ScDocShell;
+class ScAddress;
+
+struct ScHeaderFieldData;
+
+
+#define SC_HDFT_LEFT 0
+#define SC_HDFT_CENTER 1
+#define SC_HDFT_RIGHT 2
+
+
+// ScHeaderFooterContentObj ist ein dummer Container, der per setPropertyValue
+// wieder in die Seitenvorlage geschrieben werden muss
+
+class ScHeaderFooterContentObj : public cppu::WeakImplHelper3<
+ com::sun::star::sheet::XHeaderFooterContent,
+ com::sun::star::lang::XUnoTunnel,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ EditTextObject* pLeftText;
+ EditTextObject* pCenterText;
+ EditTextObject* pRightText;
+
+public:
+ ScHeaderFooterContentObj();
+ ScHeaderFooterContentObj( const EditTextObject* pLeft,
+ const EditTextObject* pCenter,
+ const EditTextObject* pRight );
+ virtual ~ScHeaderFooterContentObj();
+
+ // fuer ScPageHFItem (per getImplementation)
+ const EditTextObject* GetLeftEditObject() const { return pLeftText; }
+ const EditTextObject* GetCenterEditObject() const { return pCenterText; }
+ const EditTextObject* GetRightEditObject() const { return pRightText; }
+
+ void UpdateText( USHORT nPart, EditEngine& rSource );
+
+ // XHeaderFooterContent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL
+ getLeftText() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL
+ getCenterText() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL
+ getRightText() throw(::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScHeaderFooterContentObj* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XHeaderFooterContent> xObj );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+// ScHeaderFooterTextObj veraendert den Text in einem ScHeaderFooterContentObj
+
+class ScHeaderFooterTextObj : public cppu::WeakImplHelper5<
+ com::sun::star::text::XText,
+ com::sun::star::text::XTextRangeMover,
+ com::sun::star::container::XEnumerationAccess,
+ com::sun::star::text::XTextFieldsSupplier,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ ScHeaderFooterContentObj& rContentObj;
+ USHORT nPart;
+ SvxUnoText* pUnoText;
+
+public:
+ ScHeaderFooterTextObj( ScHeaderFooterContentObj& rContent,
+ USHORT nP );
+ virtual ~ScHeaderFooterTextObj();
+
+ static void FillDummyFieldData( ScHeaderFieldData& rData );
+
+ // XText
+ virtual void SAL_CALL insertTextContent( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xRange,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextContent >& xContent,
+ sal_Bool bAbsorb )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeTextContent( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextContent >& xContent )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XSimpleText
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL
+ createTextCursor() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL
+ createTextCursorByRange( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& aTextPosition )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL insertString( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xRange,
+ const ::rtl::OUString& aString, sal_Bool bAbsorb )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL insertControlCharacter( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xRange,
+ sal_Int16 nControlCharacter, sal_Bool bAbsorb )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XTextRange
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL
+ getText() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL
+ getStart() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL
+ getEnd() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getString() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setString( const ::rtl::OUString& aString )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XTextRangeMover
+ virtual void SAL_CALL moveTextRange( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XTextRange >& xRange,
+ sal_Int16 nParagraphs )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XTextFieldsSupplier
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess > SAL_CALL
+ getTextFields() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL
+ getTextFieldMasters() throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+// abgeleitete Cursor-Objekte nur, um per getImplementation unterscheiden zu koennen
+
+//! uno3: SvxUnoTextCursor is not derived from XUnoTunnel, but should be (?)
+
+class ScCellTextCursor : public SvxUnoTextCursor
+{
+public:
+ ScCellTextCursor();
+ ScCellTextCursor(const ScCellTextCursor& rOther);
+ ScCellTextCursor(const SvxUnoText& rText);
+ virtual ~ScCellTextCursor();
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScCellTextCursor* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface> xObj );
+};
+
+class ScHeaderFooterTextCursor : public SvxUnoTextCursor
+{
+public:
+ ScHeaderFooterTextCursor();
+ ScHeaderFooterTextCursor(const ScHeaderFooterTextCursor& rOther);
+ ScHeaderFooterTextCursor(const SvxUnoText& rText);
+ virtual ~ScHeaderFooterTextCursor();
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScHeaderFooterTextCursor* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface> xObj );
+};
+
+
+// ScAnnotationTextCursor nicht mehr - stattdessen wird einfach SvxUnoTextCursor benutzt
+
+
+#endif
+
diff --git a/sc/inc/unitconv.hxx b/sc/inc/unitconv.hxx
new file mode 100644
index 000000000000..efa5c963f62c
--- /dev/null
+++ b/sc/inc/unitconv.hxx
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * $RCSfile: unitconv.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNITCONV_HXX
+#define SC_UNITCONV_HXX
+
+#include "collect.hxx"
+
+
+class ScUnitConverterData : public StrData
+{
+ double fValue;
+
+ // not implemented
+ ScUnitConverterData& operator=( const ScUnitConverterData& );
+
+public:
+ ScUnitConverterData( const String& rFromUnit,
+ const String& rToUnit, double fValue = 1.0 );
+ ScUnitConverterData( const ScUnitConverterData& );
+ virtual ~ScUnitConverterData() {};
+
+ virtual DataObject* Clone() const;
+
+ double GetValue() const { return fValue; }
+
+ static void BuildIndexString( String& rStr,
+ const String& rFromUnit, const String& rToUnit );
+
+};
+
+
+class International;
+
+class ScUnitConverter : public StrCollection
+{
+ void ReadIniFiles();
+ void ReadIniFile( const String& rFileName, International& rIntl );
+
+ // not implemented
+ ScUnitConverter( const ScUnitConverter& );
+ ScUnitConverter& operator=( const ScUnitConverter& );
+
+public:
+ ScUnitConverter( USHORT nInit = 16, USHORT nDelta = 4 );
+ virtual ~ScUnitConverter() {};
+
+ BOOL GetValue( double& fValue, const String& rFromUnit,
+ const String& rToUnit ) const;
+};
+
+
+#endif
diff --git a/sc/inc/unoguard.hxx b/sc/inc/unoguard.hxx
new file mode 100644
index 000000000000..28a71495d241
--- /dev/null
+++ b/sc/inc/unoguard.hxx
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * $RCSfile: unoguard.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNOGUARD_HXX
+#define SC_UNOGUARD_HXX
+
+#ifndef _VOS_MUTEX_HXX_ //autogen
+#include <vos/mutex.hxx>
+#endif
+
+class ScUnoGuard : public NAMESPACE_VOS(OGuard)
+{
+public:
+ ScUnoGuard();
+ ~ScUnoGuard() {}
+};
+
+
+#endif
+
diff --git a/sc/inc/unonames.hxx b/sc/inc/unonames.hxx
new file mode 100644
index 000000000000..e6b57a01967d
--- /dev/null
+++ b/sc/inc/unonames.hxx
@@ -0,0 +1,376 @@
+/*************************************************************************
+ *
+ * $RCSfile: unonames.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNONAMES_HXX
+#define SC_UNONAMES_HXX
+
+// document
+#define SC_UNO_AREALINKS "AreaLinks"
+#define SC_UNO_DDELINKS "DDELinks"
+#define SC_UNO_COLLABELRNG "ColumnLabelRanges"
+#define SC_UNO_DATABASERNG "DatabaseRanges"
+#define SC_UNO_NAMEDRANGES "NamedRanges"
+#define SC_UNO_ROWLABELRNG "RowLabelRanges"
+#define SC_UNO_SHEETLINKS "SheetLinks"
+
+// CharacterProperties
+#define SC_UNONAME_CCOLOR "CharColor"
+#define SC_UNONAME_CHEIGHT "CharHeight"
+#define SC_UNONAME_CUNDER "CharUnderline"
+#define SC_UNONAME_CWEIGHT "CharWeight"
+#define SC_UNONAME_CPOST "CharPosture"
+#define SC_UNONAME_CCROSS "CharCrossedOut"
+#define SC_UNONAME_CLOCAL "CharLocale"
+#define SC_UNONAME_CSHADD "CharShadowed"
+#define SC_UNONAME_CFONT "CharFont"
+#define SC_UNONAME_COUTL "CharContoured"
+#define SC_UNONAME_CFNAME "CharFontName"
+
+// CellProperties
+#define SC_UNONAME_CELLSTYL "CellStyle"
+#define SC_UNONAME_CELLBACK "CellBackColor"
+#define SC_UNONAME_CELLTRAN "IsCellBackgroundTransparent"
+#define SC_UNONAME_CELLPRO "CellProtection"
+#define SC_UNONAME_CELLHJUS "HoriJustify"
+#define SC_UNONAME_CELLVJUS "VertJustify"
+#define SC_UNONAME_CELLORI "Orientation"
+#define SC_UNONAME_NUMFMT "NumberFormat"
+#define SC_UNONAME_SHADOW "ShadowFormat"
+#define SC_UNONAME_TBLBORD "TableBorder"
+#define SC_UNONAME_WRAP "IsTextWrapped"
+#define SC_UNONAME_PINDENT "ParaIndent"
+#define SC_UNONAME_PTMARGIN "ParaTopMargin"
+#define SC_UNONAME_PBMARGIN "ParaBottomMargin"
+#define SC_UNONAME_PLMARGIN "ParaLeftMargin"
+#define SC_UNONAME_PRMARGIN "ParaRightMargin"
+#define SC_UNONAME_ROTANG "RotateAngle"
+#define SC_UNONAME_ROTREF "RotateReference"
+
+#define SC_UNONAME_BOTTBORDER "BottomBorder"
+#define SC_UNONAME_LEFTBORDER "LeftBorder"
+#define SC_UNONAME_RIGHTBORDER "RightBorder"
+#define SC_UNONAME_TOPBORDER "TopBorder"
+
+// Styles
+#define SC_UNONAME_DISPNAME "DisplayName"
+
+// SheetCellRange
+#define SC_UNONAME_POS "Position"
+#define SC_UNONAME_SIZE "Size"
+
+// column/row/sheet
+#define SC_UNONAME_CELLHGT "Height"
+#define SC_UNONAME_CELLWID "Width"
+#define SC_UNONAME_CELLVIS "IsVisible"
+#define SC_UNONAME_CELLFILT "IsFiltered"
+#define SC_UNONAME_MANPAGE "IsManualPageBreak"
+#define SC_UNONAME_NEWPAGE "IsStartOfNewPage"
+#define SC_UNONAME_OHEIGHT "OptimalHeight"
+#define SC_UNONAME_OWIDTH "OptimalWidth"
+#define SC_UNONAME_PAGESTL "PageStyle"
+
+// LinkTarget
+#define SC_UNO_LINKDISPBIT "LinkDisplayBitmap"
+#define SC_UNO_LINKDISPNAME "LinkDisplayName"
+
+// other cell properties
+#define SC_UNONAME_CHCOLHDR "ChartColumnAsLabel"
+#define SC_UNONAME_CHROWHDR "ChartRowAsLabel"
+#define SC_UNONAME_CONDFMT "ConditionalFormat"
+#define SC_UNONAME_CONDLOC "ConditionalFormatLocal"
+#define SC_UNONAME_VALIDAT "Validation"
+#define SC_UNONAME_VALILOC "ValidationLocal"
+#define SC_UNONAME_FORMLOC "FormulaLocal"
+#define SC_UNONAME_FORMRT "FormulaResultType"
+
+// auto format
+#define SC_UNONAME_INCBACK "IncludeBackground"
+#define SC_UNONAME_INCBORD "IncludeBorder"
+#define SC_UNONAME_INCFONT "IncludeFont"
+#define SC_UNONAME_INCJUST "IncludeJustify"
+#define SC_UNONAME_INCNUM "IncludeNumberFormat"
+#define SC_UNONAME_INCWIDTH "IncludeWidthAndHeight"
+
+// function description
+#define SC_UNONAME_ARGUMENTS "Arguments"
+#define SC_UNONAME_CATEGORY "Category"
+#define SC_UNONAME_DESCRIPTION "Description"
+#define SC_UNONAME_ID "Id"
+#define SC_UNONAME_NAME "Name"
+
+// application settings
+#define SC_UNONAME_DOAUTOCP "DoAutoComplete"
+#define SC_UNONAME_ENTERED "EnterEdit"
+#define SC_UNONAME_EXPREF "ExpandReferences"
+#define SC_UNONAME_EXTFMT "ExtendFormat"
+#define SC_UNONAME_LINKUPD "LinkUpdateMode"
+#define SC_UNONAME_MARKHDR "MarkHeader"
+#define SC_UNONAME_METRIC "Metric"
+#define SC_UNONAME_MOVEDIR "MoveDirection"
+#define SC_UNONAME_MOVESEL "MoveSelection"
+#define SC_UNONAME_RANGEFIN "RangeFinder"
+#define SC_UNONAME_SCALE "Scale"
+#define SC_UNONAME_STBFUNC "StatusBarFunction"
+#define SC_UNONAME_ULISTS "UserLists"
+#define SC_UNONAME_USETABCOL "UseTabCol"
+
+// data pilot field
+#define SC_UNONAME_FUNCTION "Function"
+
+// database options
+#define SC_UNONAME_CASE "CaseSensitive"
+#define SC_UNONAME_DBNAME "DatabaseName"
+#define SC_UNONAME_FORMATS "IncludeFormats"
+#define SC_UNONAME_INSBRK "InsertPageBreaks"
+#define SC_UNONAME_KEEPFORM "KeepFormats"
+#define SC_UNONAME_MOVCELLS "MoveCells"
+#define SC_UNONAME_NATIVE "Native"
+#define SC_UNONAME_REGEXP "RegularExpressions"
+#define SC_UNONAME_SAVEOUT "SaveOutputPosition"
+#define SC_UNONAME_SKIPDUP "SkipDuplicates"
+#define SC_UNONAME_SRCOBJ "SourceObject"
+#define SC_UNONAME_SRCTYPE "SourceType"
+#define SC_UNONAME_STRIPDAT "StripData"
+#define SC_UNONAME_UNIQUE "UniqueOnly"
+#define SC_UNONAME_USEREGEX "UseRegularExpressions"
+#define SC_UNONAME_ULIST "UserListEnabled"
+#define SC_UNONAME_UINDEX "UserListIndex"
+#define SC_UNONAME_BINDFMT "BindFormatsToContent"
+#define SC_UNONAME_COPYOUT "CopyOutputData"
+#define SC_UNONAME_ISCASE "IsCaseSensitive"
+#define SC_UNONAME_ISULIST "IsUserListEnabled"
+#define SC_UNONAME_OUTPOS "OutputPosition"
+#define SC_UNONAME_CONTHDR "ContainsHeader"
+#define SC_UNONAME_MAXFLD "MaxFieldCount"
+#define SC_UNONAME_ORIENT "Orientation"
+#define SC_UNONAME_SORTFLD "SortFields"
+
+// url field
+#define SC_UNONAME_REPR "Representation"
+#define SC_UNONAME_TARGET "TargetFrame"
+#define SC_UNONAME_URL "URL"
+
+// conditional format
+#define SC_UNONAME_OPERATOR "Operator"
+#define SC_UNONAME_FORMULA1 "Formula1"
+#define SC_UNONAME_FORMULA2 "Formula2"
+#define SC_UNONAME_SOURCEPOS "SourcePosition"
+#define SC_UNONAME_STYLENAME "StyleName"
+
+// validation
+#define SC_UNONAME_ERRALSTY "ErrorAlertStyle"
+#define SC_UNONAME_ERRMESS "ErrorMessage"
+#define SC_UNONAME_ERRTITLE "ErrorTitle"
+#define SC_UNONAME_IGNOREBL "IgnoreBlankCells"
+#define SC_UNONAME_INPMESS "InputMessage"
+#define SC_UNONAME_INPTITLE "InputTitle"
+#define SC_UNONAME_SHOWERR "ShowErrorMessage"
+#define SC_UNONAME_SHOWINP "ShowInputMessage"
+#define SC_UNONAME_TYPE "Type"
+
+// links
+#define SC_UNONAME_FILTER "Filter"
+#define SC_UNONAME_FILTOPT "FilterOptions"
+#define SC_UNONAME_LINKURL "Url"
+
+// search descriptor
+#define SC_UNO_SRCHBACK "SearchBackwards"
+#define SC_UNO_SRCHBYROW "SearchByRow"
+#define SC_UNO_SRCHCASE "SearchCaseSensitive"
+#define SC_UNO_SRCHREGEXP "SearchRegularExpression"
+#define SC_UNO_SRCHSIM "SearchSimilarity"
+#define SC_UNO_SRCHSIMADD "SearchSimilarityAdd"
+#define SC_UNO_SRCHSIMEX "SearchSimilarityExchange"
+#define SC_UNO_SRCHSIMREL "SearchSimilarityRelax"
+#define SC_UNO_SRCHSIMREM "SearchSimilarityRemove"
+#define SC_UNO_SRCHSTYLES "SearchStyles"
+#define SC_UNO_SRCHTYPE "SearchType"
+#define SC_UNO_SRCHWORDS "SearchWords"
+
+// page styles
+#define SC_UNO_PAGE_BACKCOLOR "BackgroundColor"
+#define SC_UNO_PAGE_BACKTRANS "IsBackgroundTransparent"
+#define SC_UNO_PAGE_GRAPHICFILT "GraphicFilter"
+#define SC_UNO_PAGE_GRAPHICLOC "GraphicLocation"
+#define SC_UNO_PAGE_GRAPHICURL "GraphicURL"
+#define SC_UNO_PAGE_LEFTBORDER SC_UNONAME_LEFTBORDER
+#define SC_UNO_PAGE_RIGHTBORDER SC_UNONAME_RIGHTBORDER
+#define SC_UNO_PAGE_BOTTBORDER SC_UNONAME_BOTTBORDER
+#define SC_UNO_PAGE_TOPBORDER SC_UNONAME_TOPBORDER
+#define SC_UNO_PAGE_SHADOWFORM "ShadowFormat"
+#define SC_UNO_PAGE_LEFTMARGIN "LeftMargin"
+#define SC_UNO_PAGE_RIGHTMARGIN "RightMargin"
+#define SC_UNO_PAGE_TOPMARGIN "TopMargin"
+#define SC_UNO_PAGE_BOTTMARGIN "BottomMargin"
+#define SC_UNO_PAGE_LANDSCAPE "Landscape"
+#define SC_UNO_PAGE_NUMBERTYPE "NumberingType"
+#define SC_UNO_PAGE_SYTLELAYOUT "PageStyleLayout"
+#define SC_UNO_PAGE_PAPERTRAY "PrinterPaperTray"
+#define SC_UNO_PAGE_SIZE "Size"
+#define SC_UNO_PAGE_WIDTH "PageWidth"
+#define SC_UNO_PAGE_HEIGHT "PageHeight"
+#define SC_UNO_PAGE_CENTERHOR "CenterHorizontally"
+#define SC_UNO_PAGE_CENTERVER "CenterVertically"
+#define SC_UNO_PAGE_PRINTANNOT "PrintAnnotations"
+#define SC_UNO_PAGE_PRINTGRID "PrintGrid"
+#define SC_UNO_PAGE_PRINTHEADER "PrintHeaders"
+#define SC_UNO_PAGE_PRINTCHARTS "PrintCharts"
+#define SC_UNO_PAGE_PRINTOBJS "PrintObjects"
+#define SC_UNO_PAGE_PRINTDRAW "PrintDrawing"
+#define SC_UNO_PAGE_PRINTDOWN "PrintDownFirst"
+#define SC_UNO_PAGE_SCALEVAL "PageScale"
+#define SC_UNO_PAGE_SCALETOPAG "ScaleToPages"
+#define SC_UNO_PAGE_FIRSTPAGE "FirstPageNumber"
+#define SC_UNO_PAGE_LEFTHDRCONT "LeftPageHeaderContent"
+#define SC_UNO_PAGE_LEFTFTRCONT "LeftPageFooterContent"
+#define SC_UNO_PAGE_RIGHTHDRCON "RightPageHeaderContent"
+#define SC_UNO_PAGE_RIGHTFTRCON "RightPageFooterContent"
+#define SC_UNO_PAGE_PRINTFORMUL "PrintFormulas"
+#define SC_UNO_PAGE_PRINTZERO "PrintZeroValues"
+#define SC_UNO_PAGE_HDRBACKCOL "HeaderBackgroundColor"
+#define SC_UNO_PAGE_HDRBACKTRAN "TransparentHeaderBackground"
+#define SC_UNO_PAGE_HDRGRFFILT "HeaderGraphicFilter"
+#define SC_UNO_PAGE_HDRGRFLOC "HeaderGraphicLocation"
+#define SC_UNO_PAGE_HDRGRFURL "HeaderGraphicURL"
+#define SC_UNO_PAGE_HDRLEFTBOR "HeaderLeftBorder"
+#define SC_UNO_PAGE_HDRRIGHTBOR "HeaderRightBorder"
+#define SC_UNO_PAGE_HDRBOTTBOR "HeaderBottomBorder"
+#define SC_UNO_PAGE_HDRTOPBOR "HeaderTopBorder"
+#define SC_UNO_PAGE_HDRSHADOW "HeaderShadowFormat"
+#define SC_UNO_PAGE_HDRLEFTMAR "HeaderLeftMargin"
+#define SC_UNO_PAGE_HDRRIGHTMAR "HeaderRightMargin"
+#define SC_UNO_PAGE_HDRBODYDIST "HeaderBodyDistance"
+#define SC_UNO_PAGE_HDRHEIGHT "HeaderHeight"
+#define SC_UNO_PAGE_HDRON "HeaderOn"
+#define SC_UNO_PAGE_HDRDYNAMIC "HeaderDynamic"
+#define SC_UNO_PAGE_HDRSHARED "HeaderShared"
+#define SC_UNO_PAGE_FTRBACKCOL "FooterBackgroundColor"
+#define SC_UNO_PAGE_FTRBACKTRAN "TransparentFooterBackground"
+#define SC_UNO_PAGE_FTRGRFFILT "FooterGraphicFilter"
+#define SC_UNO_PAGE_FTRGRFLOC "FooterGraphicLocation"
+#define SC_UNO_PAGE_FTRGRFURL "FooterGraphicURL"
+#define SC_UNO_PAGE_FTRLEFTBOR "FooterLeftBorder"
+#define SC_UNO_PAGE_FTRRIGHTBOR "FooterRightBorder"
+#define SC_UNO_PAGE_FTRBOTTBOR "FooterBottomBorder"
+#define SC_UNO_PAGE_FTRTOPBOR "FooterTopBorder"
+#define SC_UNO_PAGE_FTRSHADOW "FooterShadowFormat"
+#define SC_UNO_PAGE_FTRLEFTMAR "FooterLeftMargin"
+#define SC_UNO_PAGE_FTRRIGHTMAR "FooterRightMargin"
+#define SC_UNO_PAGE_FTRBODYDIST "FooterBodyDistance"
+#define SC_UNO_PAGE_FTRHEIGHT "FooterHeight"
+#define SC_UNO_PAGE_FTRON "FooterOn"
+#define SC_UNO_PAGE_FTRDYNAMIC "FooterDynamic"
+#define SC_UNO_PAGE_FTRSHARED "FooterShared"
+
+// document settings
+#define SC_UNO_CALCASSHOWN "CalcAsShown"
+#define SC_UNO_DEFTABSTOP "DefaultTabStop"
+#define SC_UNO_IGNORECASE "IgnoreCase"
+#define SC_UNO_ITERCOUNT "IterationCount"
+#define SC_UNO_ITERENABLED "IsIterationEnabled"
+#define SC_UNO_ITEREPSILON "IterationEpsilon"
+#define SC_UNO_LOOKUPLABELS "LookUpLabels"
+#define SC_UNO_MATCHWHOLE "MatchWholeCell"
+#define SC_UNO_NULLDATE "NullDate"
+#define SC_UNO_SPELLONLINE "SpellOnline"
+#define SC_UNO_STANDARDDEC "StandardDecimals"
+
+// view options
+#define SC_UNO_COLROWHDR "ColumnRowHeaders"
+#define SC_UNO_GRIDCOLOR "GridColor"
+#define SC_UNO_HIDESPELL "HideSpellMarks"
+#define SC_UNO_HORSCROLL "HorizontalScrollBar"
+#define SC_UNO_OUTLSYMB "OutlineSymbols"
+#define SC_UNO_SHEETTABS "SheetTabs"
+#define SC_UNO_SHOWANCHOR "ShowAnchor"
+#define SC_UNO_SHOWCHARTS "ShowCharts"
+#define SC_UNO_SHOWDRAW "ShowDrawing"
+#define SC_UNO_SHOWFORM "ShowFormulas"
+#define SC_UNO_SHOWGRID "ShowGrid"
+#define SC_UNO_SHOWHELP "ShowHelpLines"
+#define SC_UNO_SHOWNOTES "ShowNotes"
+#define SC_UNO_SHOWOBJ "ShowObjects"
+#define SC_UNO_SHOWPAGEBR "ShowPageBreaks"
+#define SC_UNO_SHOWZERO "ShowZeroValues"
+#define SC_UNO_SHOWSOLID "SolidHandles"
+#define SC_UNO_VALUEHIGH "ValueHighlighting"
+#define SC_UNO_VERTSCROLL "VerticalScrollBar"
+
+// data pilot source
+#define SC_UNO_COLGRAND "ColumnGrand"
+#define SC_UNO_ROWGRAND "RowGrand"
+#define SC_UNO_ORIGINAL "Original"
+#define SC_UNO_ISDATALA "IsDataLayoutDimension"
+#define SC_UNO_ORIENTAT "Orientation"
+#define SC_UNO_POSITION "Position"
+#define SC_UNO_FUNCTION "Function"
+#define SC_UNO_USEDHIER "UsedHierarchy"
+#define SC_UNO_SUBTOTAL "SubTotals"
+#define SC_UNO_SHOWEMPT "ShowEmpty"
+#define SC_UNO_ISVISIBL "IsVisible"
+#define SC_UNO_SHOWDETA "ShowDetails"
+#define SC_UNO_IGNOREEM "IgnoreEmptyRows"
+#define SC_UNO_REPEATIF "RepeatIfEmpty"
+#define SC_UNO_DATADESC "DataDescription"
+#define SC_UNO_NUMBERFO "NumberFormat"
+
+#endif
+
diff --git a/sc/inc/userdat.hxx b/sc/inc/userdat.hxx
new file mode 100644
index 000000000000..63c0e08d2343
--- /dev/null
+++ b/sc/inc/userdat.hxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * $RCSfile: userdat.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_USERDAT_HXX
+#define SC_USERDAT_HXX
+
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+
+#ifndef _IMAP_HXX //autogen
+#include <svtools/imap.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+
+//-------------------------------------------------------------------------
+
+#define SC_DRAWLAYER 0x30334353 // Inventor: "SC30"
+
+// Object-Ids fuer UserData
+#define SC_UD_OBJDATA 1
+#define SC_UD_IMAPDATA 2
+
+//-------------------------------------------------------------------------
+
+class ScDrawObjFactory
+{
+ DECL_LINK( MakeUserData, SdrObjFactory * );
+public:
+ ScDrawObjFactory();
+ ~ScDrawObjFactory();
+};
+
+//-------------------------------------------------------------------------
+
+class ScDrawObjData : public SdrObjUserData
+{
+ virtual SdrObjUserData* Clone(SdrObject* pObj) const;
+ virtual void WriteData(SvStream& rOut);
+ virtual void ReadData(SvStream& rIn);
+public:
+ ScTripel aStt, aEnd;
+ BOOL bValidStart, bValidEnd;
+ ScDrawObjData();
+ ScDrawObjData( const ScDrawObjData& );
+ virtual ~ScDrawObjData();
+};
+
+//-------------------------------------------------------------------------
+
+class ScIMapInfo : public SdrObjUserData
+{
+ ImageMap aImageMap;
+
+public:
+ ScIMapInfo();
+ ScIMapInfo( const ImageMap& rImageMap );
+ ScIMapInfo( const ScIMapInfo& rIMapInfo );
+ virtual ~ScIMapInfo();
+
+ virtual SdrObjUserData* Clone( SdrObject* pObj ) const;
+
+ virtual void WriteData( SvStream& rOStm );
+ virtual void ReadData( SvStream& rIStm );
+
+ void SetImageMap( const ImageMap& rIMap ) { aImageMap = rIMap; }
+ const ImageMap& GetImageMap() const { return aImageMap; }
+};
+
+
+#endif
+
+
diff --git a/sc/inc/userlist.hxx b/sc/inc/userlist.hxx
new file mode 100644
index 000000000000..1a726cc6e817
--- /dev/null
+++ b/sc/inc/userlist.hxx
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * $RCSfile: userlist.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_USERLIST_HXX
+#define SC_USERLIST_HXX
+
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+#ifndef SC_COLLECT_HXX
+#include "collect.hxx"
+#endif
+
+//------------------------------------------------------------------------
+class ScUserListData : public DataObject
+{
+friend class ScUserList;
+ String aStr;
+ USHORT nTokenCount;
+ String* pSubStrings;
+ String* pUpperSub;
+
+ void InitTokens();
+
+public:
+ ScUserListData(const String& rStr);
+ ScUserListData(const ScUserListData& rData);
+ ScUserListData( SvStream& rStream );
+ virtual ~ScUserListData();
+
+ virtual DataObject* Clone() const { return new ScUserListData(*this); }
+ BOOL Store( SvStream& rStream ) const;
+ const String& GetString() const { return aStr; }
+ void SetString( const String& rStr);
+ USHORT GetSubCount() const;
+ BOOL GetSubIndex(const String& rSubStr, USHORT& rIndex) const;
+ String GetSubStr(USHORT nIndex) const;
+ StringCompare Compare(const String& rSubStr1, const String& rSubStr2) const;
+ StringCompare ICompare(const String& rSubStr1, const String& rSubStr2) const;
+};
+
+//------------------------------------------------------------------------
+class ScUserList : public Collection
+{
+public:
+ ScUserList( USHORT nLim = 4, USHORT nDel = 4);
+ ScUserList( const ScUserList& rUserList ) : Collection ( rUserList ) {}
+
+ virtual DataObject* Clone() const;
+
+ ScUserListData* GetData( const String& rSubStr ) const;
+ BOOL Load( SvStream& rStream );
+ BOOL Store( SvStream& rStream ) const;
+
+ inline ScUserListData* operator[]( const USHORT nIndex) const;
+ inline ScUserList& operator= ( const ScUserList& r );
+ BOOL operator==( const ScUserList& r ) const;
+ inline BOOL operator!=( const ScUserList& r ) const;
+};
+
+inline ScUserList& ScUserList::operator=( const ScUserList& r )
+ { return (ScUserList&)Collection::operator=( r ); }
+
+inline ScUserListData* ScUserList::operator[]( const USHORT nIndex) const
+ { return (ScUserListData*)At(nIndex); }
+
+inline BOOL ScUserList::operator!=( const ScUserList& r ) const
+ { return !operator==( r ); }
+
+#endif
+
diff --git a/sc/inc/validat.hxx b/sc/inc/validat.hxx
new file mode 100644
index 000000000000..d4f9b65032c9
--- /dev/null
+++ b/sc/inc/validat.hxx
@@ -0,0 +1,204 @@
+/*************************************************************************
+ *
+ * $RCSfile: validat.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_VALIDAT_HXX
+#define SC_VALIDAT_HXX
+
+#ifndef SC_CONDITIO_HXX
+#include "conditio.hxx"
+#endif
+
+class ScPatternAttr;
+
+enum ScValidationMode
+{
+ SC_VALID_ANY,
+ SC_VALID_WHOLE,
+ SC_VALID_DECIMAL,
+ SC_VALID_DATE,
+ SC_VALID_TIME,
+ SC_VALID_TEXTLEN,
+ SC_VALID_LIST,
+ SC_VALID_CUSTOM
+};
+
+enum ScValidErrorStyle
+{
+ SC_VALERR_STOP,
+ SC_VALERR_WARNING,
+ SC_VALERR_INFO,
+ SC_VALERR_MACRO
+};
+
+//
+// Eintrag fuer Gueltigkeit (es gibt nur eine Bedingung)
+//
+
+class ScValidationData : public ScConditionEntry
+{
+ ULONG nKey; // Index in Attributen
+
+ ScValidationMode eDataMode;
+ BOOL bShowInput;
+ BOOL bShowError;
+ ScValidErrorStyle eErrorStyle;
+ String aInputTitle;
+ String aInputMessage;
+ String aErrorTitle;
+ String aErrorMessage;
+
+ BOOL bIsUsed; // temporaer beim Speichern
+
+ BOOL DoMacro( const ScAddress& rPos, const String& rInput,
+ ScFormulaCell* pCell, Window* pParent ) const;
+
+public:
+ ScValidationData( ScValidationMode eMode, ScConditionMode eOper,
+ const String& rExpr1, const String& rExpr2,
+ ScDocument* pDocument, const ScAddress& rPos,
+ BOOL bCompileEnglish = FALSE );
+ ScValidationData( const ScValidationData& r );
+ ScValidationData( ScDocument* pDocument, const ScValidationData& r );
+ ScValidationData( SvStream& rStream, ScMultipleReadHeader& rHdr,
+ ScDocument* pDocument );
+ ~ScValidationData();
+
+ void Store(SvStream& rStream, ScMultipleWriteHeader& rHdr) const;
+
+ ScValidationData* Clone() const // echte Kopie
+ { return new ScValidationData( GetDocument(), *this ); }
+ ScValidationData* Clone(ScDocument* pNew) const
+ { return new ScValidationData( pNew, *this ); }
+
+ void ResetInput();
+ void ResetError();
+ void SetInput( const String& rTitle, const String& rMsg );
+ void SetError( const String& rTitle, const String& rMsg,
+ ScValidErrorStyle eStyle );
+
+ BOOL GetInput( String& rTitle, String& rMsg ) const
+ { rTitle = aInputTitle; rMsg = aInputMessage; return bShowInput; }
+ BOOL GetErrMsg( String& rTitle, String& rMsg, ScValidErrorStyle& rStyle ) const;
+
+ BOOL HasErrMsg() const { return bShowError; }
+
+ ScValidationMode GetDataMode() const { return eDataMode; }
+
+
+ // mit String: bei Eingabe, mit Zelle: fuer Detektiv / RC_FORCED
+ BOOL IsDataValid( const String& rTest, const ScPatternAttr& rPattern,
+ const ScAddress& rPos ) const;
+ BOOL IsDataValid( ScBaseCell* pCell, const ScAddress& rPos ) const;
+
+ // TRUE -> Abbruch
+ BOOL DoError( Window* pParent, const String& rInput, const ScAddress& rPos ) const;
+ void DoCalcError( ScFormulaCell* pCell ) const;
+
+ BOOL IsEmpty() const;
+ ULONG GetKey() const { return nKey; }
+ void SetKey(ULONG nNew) { nKey = nNew; } // nur wenn nicht eingefuegt!
+
+ void SetUsed(BOOL bSet) { bIsUsed = bSet; }
+ BOOL IsUsed() const { return bIsUsed; }
+
+ BOOL EqualEntries( const ScValidationData& r ) const; // fuer Undo
+
+ // sortiert (per PTRARR) nach Index
+ // operator== nur fuer die Sortierung
+ BOOL operator ==( const ScValidationData& r ) const { return nKey == r.nKey; }
+ BOOL operator < ( const ScValidationData& r ) const { return nKey < r.nKey; }
+};
+
+//
+// Liste der Bedingungen:
+//
+
+typedef ScValidationData* ScValidationDataPtr;
+
+SV_DECL_PTRARR_SORT(ScValidationEntries_Impl, ScValidationDataPtr,
+ SC_COND_GROW, SC_COND_GROW);
+
+class ScValidationDataList : public ScValidationEntries_Impl
+{
+public:
+ ScValidationDataList() {}
+ ScValidationDataList(const ScValidationDataList& rList);
+ ScValidationDataList(ScDocument* pNewDoc, const ScValidationDataList& rList);
+ ~ScValidationDataList() {}
+
+ void InsertNew( ScValidationData* pNew )
+ { if (!Insert(pNew)) delete pNew; }
+
+ ScValidationData* GetData( ULONG nKey );
+
+ void Load( SvStream& rStream, ScDocument* pDocument );
+ void Store( SvStream& rStream ) const;
+ void ResetUsed();
+
+ void UpdateReference( UpdateRefMode eUpdateRefMode,
+ const ScRange& rRange, short nDx, short nDy, short nDz );
+
+ BOOL operator==( const ScValidationDataList& r ) const; // fuer Ref-Undo
+};
+
+#endif
+
+
diff --git a/sc/inc/viewopti.hxx b/sc/inc/viewopti.hxx
new file mode 100644
index 000000000000..0564b2b04cac
--- /dev/null
+++ b/sc/inc/viewopti.hxx
@@ -0,0 +1,258 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewopti.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_VIEWOPTI_HXX
+#define SC_VIEWOPTI_HXX
+
+#ifndef _SVX_OPTGRID_HXX //autogen
+#include <svx/optgrid.hxx>
+#endif
+
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+
+#ifndef _UTL_CONFIGITEM_HXX_
+#include <unotools/configitem.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//==================================================================
+// View-Optionen
+//==================================================================
+
+enum ScViewOption
+{
+ VOPT_FORMULAS = 0,
+ VOPT_NULLVALS,
+ VOPT_SYNTAX,
+ VOPT_NOTES,
+ VOPT_VSCROLL,
+ VOPT_HSCROLL,
+ VOPT_TABCONTROLS,
+ VOPT_OUTLINER,
+ VOPT_HEADER,
+ VOPT_GRID,
+ VOPT_HELPLINES,
+ VOPT_ANCHOR,
+ VOPT_PAGEBREAKS,
+ VOPT_SOLIDHANDLES,
+ VOPT_CLIPMARKS,
+ VOPT_BIGHANDLES
+};
+
+enum ScVObjType
+{
+ VOBJ_TYPE_OLE = 0,
+ VOBJ_TYPE_CHART,
+ VOBJ_TYPE_DRAW
+};
+
+#define MAX_OPT (USHORT)VOPT_BIGHANDLES+1
+#define MAX_TYPE (USHORT)VOBJ_TYPE_DRAW+1
+
+//==================================================================
+// SvxGrid-Optionen mit Standard-Operatoren
+//==================================================================
+
+class ScGridOptions : public SvxOptionsGrid
+{
+public:
+ ScGridOptions() : SvxOptionsGrid() {}
+ ScGridOptions( const SvxOptionsGrid& rOpt ) : SvxOptionsGrid( rOpt ) {}
+
+ void SetDefaults();
+ const ScGridOptions& operator= ( const ScGridOptions& rCpy );
+ int operator== ( const ScGridOptions& rOpt ) const;
+ int operator!= ( const ScGridOptions& rOpt ) const { return !(operator==(rOpt)); }
+
+ friend SvStream& operator>> ( SvStream& rStream, ScGridOptions& rOpt );
+ friend SvStream& operator<< ( SvStream& rStream, const ScGridOptions& rOpt );
+};
+
+//==================================================================
+// Einstellungen - Ansicht
+//==================================================================
+
+class ScViewOptions
+{
+public:
+ ScViewOptions();
+ ScViewOptions( const ScViewOptions& rCpy );
+ ~ScViewOptions();
+
+ void SetDefaults();
+
+ void SetOption( ScViewOption eOpt, BOOL bNew = TRUE ) { aOptArr[eOpt] = bNew; }
+ BOOL GetOption( ScViewOption eOpt ) const { return aOptArr[eOpt]; }
+
+ void SetObjMode( ScVObjType eObj, ScVObjMode eMode ) { aModeArr[eObj] = eMode; }
+ ScVObjMode GetObjMode( ScVObjType eObj ) const { return aModeArr[eObj]; }
+
+ void SetGridColor( const Color& rCol, const String& rName ) { aGridCol = rCol; aGridColName = rName;}
+ Color GetGridColor( String* pStrName = NULL ) const;
+
+ const ScGridOptions& GetGridOptions() const { return aGridOpt; }
+ void SetGridOptions( const ScGridOptions& rNew ) { aGridOpt = rNew; }
+ SvxGridItem* CreateGridItem( USHORT nId = SID_ATTR_GRID_OPTIONS ) const;
+
+ BOOL IsHideAutoSpell() const { return bHideAutoSpell; }
+ void SetHideAutoSpell( BOOL bSet ) { bHideAutoSpell = bSet; }
+
+ const ScViewOptions& operator= ( const ScViewOptions& rCpy );
+ int operator== ( const ScViewOptions& rOpt ) const;
+ int operator!= ( const ScViewOptions& rOpt ) const { return !(operator==(rOpt)); }
+
+ friend SvStream& operator>> ( SvStream& rStream, ScViewOptions& rOpt );
+
+ void Save(SvStream& rStream, BOOL bConfig = FALSE) const;
+
+private:
+ BOOL aOptArr [MAX_OPT];
+ ScVObjMode aModeArr [MAX_TYPE];
+ Color aGridCol;
+ String aGridColName;
+ ScGridOptions aGridOpt;
+ BOOL bHideAutoSpell;
+};
+
+inline SvStream& operator<<( SvStream& rStream, const ScViewOptions& rOpt )
+{
+ rOpt.Save( rStream, FALSE );
+ return rStream;
+}
+
+//==================================================================
+// Item fuer Einstellungsdialog - Ansicht
+//==================================================================
+
+class ScTpViewItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScTpViewItem( USHORT nWhich );
+ ScTpViewItem( USHORT nWhich, const ScViewOptions& rOpt );
+ ScTpViewItem( const ScTpViewItem& rItem );
+ ~ScTpViewItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ const ScViewOptions& GetViewOptions() const { return theOptions; }
+
+private:
+ ScViewOptions theOptions;
+};
+
+
+// ConfigItem for classes that use items from several sub trees
+//! move to separate header file
+
+class ScLinkConfigItem : public utl::ConfigItem
+{
+ Link aCommitLink;
+
+public:
+ ScLinkConfigItem( const rtl::OUString rSubTree );
+ void SetCommitLink( const Link& rLink );
+
+ virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames );
+ virtual void Commit();
+
+ ConfigItem::GetProperties;
+ ConfigItem::EnableNotification;
+ ConfigItem::PutProperties;
+ ConfigItem::SetModified;
+};
+
+
+//==================================================================
+// CfgItem fuer View-Optionen
+//==================================================================
+
+class ScViewCfg : public ScViewOptions
+{
+ ScLinkConfigItem aLayoutItem;
+ ScLinkConfigItem aDisplayItem;
+ ScLinkConfigItem aGridItem;
+
+ DECL_LINK( LayoutCommitHdl, void* );
+ DECL_LINK( DisplayCommitHdl, void* );
+ DECL_LINK( GridCommitHdl, void* );
+
+ com::sun::star::uno::Sequence<rtl::OUString> GetLayoutPropertyNames();
+ com::sun::star::uno::Sequence<rtl::OUString> GetDisplayPropertyNames();
+ com::sun::star::uno::Sequence<rtl::OUString> GetGridPropertyNames();
+
+public:
+ ScViewCfg();
+
+ void SetOptions( const ScViewOptions& rNew );
+};
+
+
+#endif
+
+
diff --git a/sc/inc/viewuno.hxx b/sc/inc/viewuno.hxx
new file mode 100644
index 000000000000..e6ad48f37860
--- /dev/null
+++ b/sc/inc/viewuno.hxx
@@ -0,0 +1,359 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:51 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_VIEWUNO_HXX
+#define SC_VIEWUNO_HXX
+
+#ifndef _SFX_SFXBASECONTROLLER_HXX_
+#include <sfx2/sfxbasecontroller.hxx>
+#endif
+
+#ifndef _SVARRAY_HXX
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_VIEW_XCONTROLACCESS_HPP_
+#include <com/sun/star/view/XControlAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XSELECTIONCHANGELISTENER_HPP_
+#include <com/sun/star/view/XSelectionChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XSELECTIONSUPPLIER_HPP_
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGEREFERRER_HPP_
+#include <com/sun/star/sheet/XCellRangeReferrer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XVIEWSPLITABLE_HPP_
+#include <com/sun/star/sheet/XViewSplitable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XVIEWFREEZABLE_HPP_
+#include <com/sun/star/sheet/XViewFreezable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEETVIEW_HPP_
+#include <com/sun/star/sheet/XSpreadsheetView.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XVIEWPANE_HPP_
+#include <com/sun/star/sheet/XViewPane.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HPP_
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+
+class ScTabViewShell;
+
+#define SC_VIEWPANE_ACTIVE 0xFFFF
+
+
+typedef ::com::sun::star::uno::Reference<
+ ::com::sun::star::lang::XEventListener >* XEventListenerPtr;
+SV_DECL_PTRARR_DEL( EventListenerArr, XEventListenerPtr, 4, 4 );
+
+typedef ::com::sun::star::uno::Reference<
+ ::com::sun::star::view::XSelectionChangeListener >* XSelectionChangeListenerPtr;
+SV_DECL_PTRARR_DEL( XSelectionChangeListenerArr_Impl, XSelectionChangeListenerPtr, 4, 4 );
+
+
+// ScViewPaneBase not derived from OWeakObject
+// to avoid duplicate OWeakObject in ScTabViewObj
+
+class ScViewPaneBase : public com::sun::star::sheet::XViewPane,
+ public com::sun::star::sheet::XCellRangeReferrer,
+ public com::sun::star::view::XControlAccess,
+ public com::sun::star::lang::XServiceInfo,
+ public com::sun::star::lang::XTypeProvider,
+ public SfxListener
+{
+private:
+ ScTabViewShell* pViewShell;
+ USHORT nPane; // ScSplitPos oder SC_VIEWPANE_ACTIVE
+
+protected:
+ ScTabViewShell* GetViewShell() const { return pViewShell; }
+
+public:
+ ScViewPaneBase(ScTabViewShell* pViewSh, USHORT nP);
+ virtual ~ScViewPaneBase();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+ // XViewPane
+ virtual sal_Int32 SAL_CALL getFirstVisibleColumn() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setFirstVisibleColumn( sal_Int32 nFirstVisibleColumn )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getFirstVisibleRow() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setFirstVisibleRow( sal_Int32 nFirstVisibleRow )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getVisibleRange()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XCellRangeReferrer
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
+ getReferredCells() throw(::com::sun::star::uno::RuntimeException);
+
+ // XControlAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl > SAL_CALL
+ getControl( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::awt::XControlModel >& xModel )
+ throw(::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+// ScViewPaneObj for direct use (including OWeakObject)
+
+class ScViewPaneObj : public ScViewPaneBase, public cppu::OWeakObject
+{
+public:
+ ScViewPaneObj(ScTabViewShell* pViewSh, USHORT nP);
+ virtual ~ScViewPaneObj();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+// OWeakObject is base of SfxBaseController -> use ScViewPaneBase
+
+class ScTabViewObj : public ScViewPaneBase,
+ public SfxBaseController,
+ public com::sun::star::sheet::XSpreadsheetView,
+ public com::sun::star::container::XEnumerationAccess,
+ public com::sun::star::container::XIndexAccess,
+ public com::sun::star::view::XSelectionSupplier,
+ public com::sun::star::beans::XPropertySet,
+ public com::sun::star::sheet::XViewSplitable,
+ public com::sun::star::sheet::XViewFreezable,
+ public com::sun::star::lang::XUnoTunnel
+{
+private:
+ SfxItemPropertySet aPropSet;
+ XSelectionChangeListenerArr_Impl aSelectionListeners;
+
+ ScViewPaneObj* GetObjectByIndex_Impl(USHORT nIndex) const;
+
+public:
+ ScTabViewObj();
+ ScTabViewObj(ScTabViewShell* pViewSh);
+ virtual ~ScTabViewObj();
+
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
+ const ::com::sun::star::uno::Type & rType )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release() throw(::com::sun::star::uno::RuntimeException);
+
+ void SelectionChanged();
+
+ // XSelectionSupplier
+ virtual sal_Bool SAL_CALL select( const ::com::sun::star::uno::Any& aSelection )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getSelection()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addSelectionChangeListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::view::XSelectionChangeListener >& xListener )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeSelectionChangeListener( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::view::XSelectionChangeListener >& xListener )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ //! XPrintable?
+
+ // XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
+ SAL_CALL getPropertySetInfo()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Any& aValue )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::beans::PropertyVetoException,
+ ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
+ const ::rtl::OUString& PropertyName )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& xListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertyChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XVetoableChangeListener >& aListener )
+ throw(::com::sun::star::beans::UnknownPropertyException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
+ createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+ // XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+ // XSpreadsheetView
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > SAL_CALL
+ getActiveSheet() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setActiveSheet( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::sheet::XSpreadsheet >& xActiveSheet )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XViewSplitable
+ virtual sal_Bool SAL_CALL getIsWindowSplit() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSplitHorizontal() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSplitVertical() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSplitColumn() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getSplitRow() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL splitAtPosition( sal_Int32 nPixelX, sal_Int32 nPixelY )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XViewFreezable
+ virtual sal_Bool SAL_CALL hasFrozenPanes() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL freezeAtPosition( sal_Int32 nColumns, sal_Int32 nRows )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
+ sal_Int8 >& aIdentifier )
+ throw(::com::sun::star::uno::RuntimeException);
+
+ static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static ScTabViewObj* getImplementation( const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface> xObj );
+
+ // XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
+ throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif
+
diff --git a/sc/inc/waitoff.hxx b/sc/inc/waitoff.hxx
new file mode 100644
index 000000000000..adf59c987244
--- /dev/null
+++ b/sc/inc/waitoff.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * $RCSfile: waitoff.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:51 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_WAITOFF_HXX
+#define SC_WAITOFF_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class Window;
+
+class ScWaitCursorOff
+{
+private:
+ Window* pWin;
+ ULONG nWaiters;
+public:
+ ScWaitCursorOff( Window* pWin );
+ ~ScWaitCursorOff();
+};
+
+
+#endif
diff --git a/sc/inc/xmlwrap.hxx b/sc/inc/xmlwrap.hxx
new file mode 100644
index 000000000000..e044e18bc3d2
--- /dev/null
+++ b/sc/inc/xmlwrap.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlwrap.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:51 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_XMLWRAP_HXX
+#define SC_XMLWRAP_HXX
+
+class ScDocument;
+class SfxMedium;
+
+class ScXMLImportWrapper
+{
+ ScDocument& rDoc;
+ SfxMedium& rMedium;
+
+public:
+ ScXMLImportWrapper(ScDocument& rD, SfxMedium& rM);
+ BOOL Import();
+ BOOL Export();
+};
+
+#endif
+
diff --git a/sc/inc/zforauto.hxx b/sc/inc/zforauto.hxx
new file mode 100644
index 000000000000..5f0f3ef5b9ec
--- /dev/null
+++ b/sc/inc/zforauto.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * $RCSfile: zforauto.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:51 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _ZFORAUTO_HXX_
+#define _ZFORAUTO_HXX_
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _LANG_HXX //autogen
+#include <tools/lang.hxx>
+#endif
+
+
+class SvStream;
+class SvNumberFormatter;
+
+
+class ScNumFormatAbbrev
+{
+ String sFormatstring;
+ LanguageType eLnge;
+ LanguageType eSysLnge;
+public:
+ ScNumFormatAbbrev();
+ ScNumFormatAbbrev(const ScNumFormatAbbrev& aFormat);
+ ScNumFormatAbbrev(SvStream& rStream);
+ ScNumFormatAbbrev(ULONG nFormat, SvNumberFormatter& rFormatter);
+ void Load( SvStream& rStream ); // Laden der Zahlenformate
+ void Save( SvStream& rStream ) const; // Speichern der Zahlenformate
+ void PutFormatIndex(ULONG nFormat, SvNumberFormatter& rFormatter);
+ ULONG GetFormatIndex( SvNumberFormatter& rFormatter);
+ inline int operator==(const ScNumFormatAbbrev& rNumFormat)
+ {
+ return ((sFormatstring == rNumFormat.sFormatstring)
+ && (eLnge == rNumFormat.eLnge)
+ && (eSysLnge == rNumFormat.eSysLnge));
+ }
+ inline ScNumFormatAbbrev& operator=(const ScNumFormatAbbrev& rNumFormat)
+ {
+ sFormatstring = rNumFormat.sFormatstring;
+ eLnge = rNumFormat.eLnge;
+ eSysLnge = rNumFormat.eSysLnge;
+ return *this;
+ }
+ inline LanguageType GetLanguage() const { return eLnge; }
+};
+
+
+
+#endif
+
+
diff --git a/sc/prj/d.lst b/sc/prj/d.lst
new file mode 100644
index 000000000000..b9f9ae03bd35
--- /dev/null
+++ b/sc/prj/d.lst
@@ -0,0 +1,33 @@
+mkdir: %_DEST%\odk%_EXT%
+mkdir: %_DEST%\odk%_EXT%\inc
+mkdir: %_DEST%\odk%_EXT%\lib
+mkdir: %_DEST%\odk%_EXT%\src
+mkdir: %_DEST%\odk%_EXT%\pck
+..\inc\sc.lst %_DEST%\inc%_EXT%\sc.lst
+..\%__SRC%\inc\scinter.h %_DEST%\odk\inc%_EXT%\scinter.h
+..\%__SRC%\lib\scinter.lib %_DEST%\odk\lib%_EXT%\scinter.lib
+..\%__SRC%\misc\scinter.c %_DEST%\odk\src%_EXT%\scinter.c
+..\%__SRC%\bin\scalc3.exe %_DEST%\bin%_EXT%\scalc3.exe
+..\%__SRC%\bin\*.sym %_DEST%\bin%_EXT%\*.sym
+..\%__SRC%\bin\scalc3.pdb %_DEST%\bin%_EXT%\scalc3.pdb
+..\%__SRC%\bin\scslots.tlb %_DEST%\bin%_EXT%\scslots.tlb
+..\%__SRC%\bin\sc%upd%*.dll %_DEST%\bin%_EXT%\sc%upd%*.dll
+..\%__SRC%\bin\sc%upd%*.res %_DEST%\bin%_EXT%\sc%upd%*.res
+..\%__SRC%\bin\dfa%upd%*.dll %_DEST%\bin%_EXT%\dfa%upd%*.dll
+..\%__SRC%\bin\rot%upd%*.dll %_DEST%\bin%_EXT%\rot%upd%*.dll
+..\%__SRC%\bin\addin.zip %_DEST%\bin%_EXT%\addin.zip
+..\%__SRC%\misc\*.map %_DEST%\bin%_EXT%\*.map
+touch: ..\%__SRC%\misc\sc.hid %_DEST%\bin%_EXT%\sc.hid
+..\%__SRC%\lib\sci.lib %_DEST%\lib%_EXT%\sci.lib
+..\%__SRC%\lib\sclib.lib %_DEST%\lib%_EXT%\sclib.lib
+..\%__SRC%\slb\ysclib.lib %_DEST%\lib%_EXT%\ysclib.lib
+..\%__SRC%\slb\lib*.* %_DEST%\lib%_EXT%\lib*.*
+..\%__SRC%\lib\lib*.* %_DEST%\lib%_EXT%\lib*.*
+..\inc\sc.hrc %_DEST%\inc%_EXT%\sc.hrc
+..\source\convert.ini %_DEST%\pck%_EXT%\convert.ini
+dos: mkdir %_DEST%\inc\%_EXT%\sc
+hedabu: ..\inc\scdll.hxx %_DEST%\inc%_EXT%\sc\scdll.hxx
+mkdir: %_DEST%\ucr%_EXT%\sc
+..\%__SRC%\ucr\*.ucr %_DEST%\ucr%_EXT%\sc\*.ucr
+..\xml\*.xml %_DEST%\xml\*.xml
+
diff --git a/sc/sdi/app.sdi b/sc/sdi/app.sdi
new file mode 100644
index 000000000000..10fcd9f00908
--- /dev/null
+++ b/sc/sdi/app.sdi
@@ -0,0 +1,142 @@
+ //==================================================================
+ //
+ // StarCalc
+ //
+ // (C) 1994 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:44:52 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/sdi/app.sdv $ $Workfile: app.sdi $
+ //------------------------------------------------------------------
+
+interface StarCalc : Module
+[
+ uuid ( "AB3257C0-07D7-11CF-89CB-008029E4B0B1" )
+]
+{
+ SID_SC_EDITOPTIONS [ ExecMethod = Execute; ]
+ FID_AUTOCOMPLETE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_DETECTIVE_AUTO [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_PSZ_FUNCTION [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_FOCUS_POSWND [ ExecMethod = Execute; ]
+
+ SID_ATTR_METRIC [ ExecMethod = Execute; StateMethod = GetState; ]
+
+ SID_AUTOSPELL_CHECK
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ ]
+
+ SID_AUTOSPELL_MARKOFF
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ ]
+
+ SID_ATTR_LANGUAGE
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ ]
+
+ SID_CHOOSE_DESIGN [ ExecMethod = Execute; ]
+ SID_EURO_CONVERTER [ ExecMethod = Execute; ]
+}
+
+
+shell ScModule
+{
+ import StarCalc[Automation];
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.40 2000/02/10 15:10:20 nn
+ #72897# slot for Euro converter
+
+ Revision 1.39 1999/11/10 17:01:20 nn
+ SID_CHOOSE_DESIGN
+
+ Revision 1.38 1999/03/24 17:34:52 ANK
+ #63806# Configname rausgeschmissen
+
+
+ Rev 1.37 24 Mar 1999 18:34:52 ANK
+ #63806# Configname rausgeschmissen
+
+ Rev 1.36 22 Jun 1998 21:04:14 NN
+ SID_DETECTIVE_AUTO
+
+ Rev 1.35 28 Aug 1997 12:35:58 MBA
+ Neue Interface-Namen
+
+ Rev 1.34 07 Aug 1997 14:45:14 NN
+ #42479# SID_ATTR_METRIC
+
+ Rev 1.33 02 Jun 1997 15:45:16 NN
+ FID_FOCUS_POSWND
+
+ Rev 1.32 30 Apr 1997 16:44:08 ER
+ #39374# SID_ATTR_LANGUAGE in ScModule Execute/GetState Dokumentabgleich
+
+ Rev 1.31 09 Dec 1996 16:07:30 NN
+ SID_SC_EDITOPTIONS statt SID_SCOPTIONS, SID_AUTOSPELL_MARKOFF
+
+ Rev 1.30 18 Nov 1996 18:25:00 NN
+ SID_AUTOSPELL_CHECK
+
+ Rev 1.29 05 Nov 1996 14:38:46 NN
+ ScModule statt ScApplication
+
+ Rev 1.28 22 Oct 1996 13:15:14 HJS
+ merge 22.10.96
+
+ Rev 1.27 09 Oct 1996 12:08:56 HJS
+ merge 09.10.96
+
+ Rev 1.26 30 Sep 1996 11:09:36 NN
+ SID_PSZ_FUNCTION
+
+ Rev 1.25 25 Sep 1996 14:46:44 RJ
+ aufgeraeumt
+
+ Rev 1.24 26 Aug 1996 21:40:12 NN
+ #30649# Extras/Optionen mit PlugComm-Flag
+
+ Rev 1.23 21 Aug 1996 14:07:06 HJS
+ eu...
+
+ Rev 1.22 14 Aug 1996 17:01:06 NN
+ SID_INET_DLG
+
+ Rev 1.21 05 Jun 1996 12:05:52 OV
+ sid_show_browser raus
+
+ Rev 1.20 23 May 1996 16:05:36 NN
+ FID_AUTOCOMPLETE
+
+ Rev 1.19 29 Mar 1996 12:23:00 OS
+ Ids fuer Basic internationalisiert
+
+ Rev 1.18 29 Mar 1996 09:31:24 OS
+ Umlaut berichtigt
+
+ Rev 1.17 03 Mar 1996 19:17:12 JN
+ InsertHyperlink neu
+
+ Rev 1.16 28 Feb 1996 18:32:54 JN
+ hier kein Adressbuch, Ableitung jetzt von OfficeApplication
+
+ Rev 1.15 22 Feb 1996 12:58:08 JN
+ neuer Slot fuer Adressbuch ein/aus
+
+ Rev 1.14 13 Feb 1996 16:23:58 JN
+ Address Interface neu
+
+------------------------------------------------------------------------*/
+
+
+
diff --git a/sc/sdi/auditsh.sdi b/sc/sdi/auditsh.sdi
new file mode 100644
index 000000000000..a673ff411492
--- /dev/null
+++ b/sc/sdi/auditsh.sdi
@@ -0,0 +1,15 @@
+interface Auditing : Object
+{
+ SID_FILL_ADD_PRED [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_FILL_DEL_PRED [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_FILL_ADD_SUCC [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_FILL_DEL_SUCC [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_FILL_NONE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_CANCEL [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_FILL_SELECT [ ExecMethod = Execute; StateMethod = GetState; ]
+}
+
+shell ScAuditingShell
+{
+ import Auditing;
+}
diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi
new file mode 100644
index 000000000000..7b9df9aff77b
--- /dev/null
+++ b/sc/sdi/cellsh.sdi
@@ -0,0 +1,401 @@
+ //============================================================================
+ //
+ // StarCalc
+ //
+ // (C) 1994 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:44:52 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/sdi/cellsh.sdv $ $Workfile: cellsh.sdi $
+ //----------------------------------------------------------------------------
+
+ // ===========================================================================
+interface CellSelection : Selection
+[
+ uuid ( "D7680520-137B-11D3-B25B-006097DA68F3" )
+]
+{
+ SbxObject Movement
+ [
+ ]
+ // Slot's die in der DrawShell disabled werden. {
+ FID_DEFINE_NAME [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_DEFINE_COLROWNAMERANGES [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_OPENDLG_SOLVE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_OPENDLG_PIVOTTABLE [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_OPENDLG_TABOP [ ExecMethod = Execute; StateMethod = GetBlockState; ]
+ SID_FILTER [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_SPECIAL_FILTER [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_DEFINE_DBNAME [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_OPENDLG_CONSOLIDATE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_OPENDLG_CHART [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_IMPORT_DATA [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_OPENDLG_FUNCTION [ ExecMethod = Execute; StateMethod = GetCellState; ]
+ SID_INS_FUNCTION [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+
+ // Datenbank-Operationen {
+ SID_SORT_ASCENDING [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_SORT_DESCENDING [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_REIMPORT_DATA [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_REFRESH_DBAREA [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_SBA_BRW_INSERT [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_SELECT_DB [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_SORT [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ FID_FILTER_OK [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_AUTO_FILTER [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_AUTOFILTER_HIDE [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_UNFILTER [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_SUBTOTALS [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ SID_PIVOT_TABLE [ ExecMethod = ExecuteDB; StateMethod = GetDBState; ]
+ FID_VALIDATION [ ExecMethod = ExecuteDB; StateMethod = GetBlockState; ]
+
+ // } Datenbank-Operationen
+
+
+ SID_BORDER_OBJECT [ StateMethod = GetState; ]
+ SID_RANGE_ADDRESS [ StateMethod = GetState; ]
+
+ SID_HYPERLINK_SETLINK [ ExecMethod = ExecuteEdit; ]
+ SID_HYPERLINK_GETLINK [ StateMethod = GetHLinkState; ]
+ SID_UPDATECHART [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+
+ SID_RANGE_ROW [ StateMethod = GetState; ]
+ SID_RANGE_COL [ StateMethod = GetState; ]
+ SID_RANGE_TABLE [ StateMethod = GetState; ]
+ SID_RANGE_VALUE [ StateMethod = GetState; ]
+ SID_RANGE_FORMULA [ StateMethod = GetState; ]
+ SID_RANGE_TEXTVALUE [ StateMethod = GetState; ]
+ SID_RANGE_NOTETEXT [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+
+ SID_ENTER_STRING [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_INSERT_MATRIX [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_MARKAREA [ ExecMethod = Execute; ]
+ SID_SELECT_SCENARIO [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_CELL_FORMAT [ ExecMethod = Execute; StateMethod = GetBlockState; ]
+ FID_ROW_HEIGHT [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_ROW_OPT_HEIGHT [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_ROW_HIDE [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_ROW_SHOW [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_COL_WIDTH [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_COL_OPT_WIDTH [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_COL_OPT_DIRECT [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_COL_HIDE [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_COL_SHOW [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_AUTOFORMAT [ ExecMethod = Execute; StateMethod = GetBlockState; ]
+ SID_SOLVE [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_SCENARIOS [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_DETECTIVE_ADD_PRED [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_DETECTIVE_DEL_PRED [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_DETECTIVE_ADD_SUCC [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_DETECTIVE_DEL_SUCC [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_DETECTIVE_ADD_ERR [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_DETECTIVE_INVALID [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_DETECTIVE_REFRESH [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_INS_ROW [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_INS_COLUMN [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_INS_CELLSDOWN [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_INS_CELLSRIGHT [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ SID_DEL_ROWS [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_DEL_COLS [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_INS_CELL [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_DELETE_CELL [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_INS_CELL_CONTENTS [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_CELL_FORMAT_RESET [ ExecMethod = Execute; StateMethod = GetBlockState; ]
+
+ SfxVoidItem Clear SID_DELETE
+ (
+ SfxStringItem Flags SID_DELETE
+ )
+ [
+ ExecMethod = ExecuteEdit ;
+ StateMethod = GetBlockState ;
+ GroupId = GID_EDIT ; //FS
+ Cachable , HasDialog ;
+ MenuConfig , AccelConfig ;
+ ]
+ SID_DELETE_CONTENTS [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_INS_ROWBRK [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_INS_COLBRK [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_DEL_ROWBRK [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_DEL_COLBRK [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_FILL_TO_BOTTOM [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_FILL_TO_RIGHT [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_FILL_TO_TOP [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_FILL_TO_LEFT [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_FILL_TAB [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_FILL_SERIES [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ FID_FILL_AUTO [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_MARKDATAAREA [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+ SID_SETINPUTMODE [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+ SID_CUT [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ SID_COPY [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
+ SID_PASTE [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
+ FID_PASTE_CONTENTS [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
+ SID_GET_CLPBRD_FORMAT_COUNT [ ExecMethod = ExecuteEdit; ]
+ SID_GET_CLPBRD_FORMAT_BY_IDX [ ExecMethod = ExecuteEdit; ]
+ SID_GET_CLPBRD_FORMAT_NAME [ ExecMethod = ExecuteEdit; ]
+ FID_MERGE_ON [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_MERGE_OFF [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_OUTLINE_HIDE [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_OUTLINE_SHOW [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_OUTLINE_MAKE [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_OUTLINE_REMOVE [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_INPUTLINE_STATUS [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_INPUTLINE_ENTER [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_INPUTLINE_BLOCK [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_INPUTLINE_MATRIX [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_CHARMAP [ ExecMethod = ExecuteEdit; StateMethod = GetCellState; ]
+
+ SID_INSERT_POSTIT [ ExecMethod = ExecuteEdit; StateMethod = GetCellState; ]
+
+ SID_TABOP [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_CONSOLIDATE [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_INSERT_NAME [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ FID_USE_NAME [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_CANCEL [ ExecMethod = Execute; ]
+ SID_TOGGLE_REL [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_OPENDLG_CONDFRMT [ ExecMethod = Execute; StateMethod = GetBlockState; ]
+ FID_CONDITIONAL_FORMAT [ ExecMethod = ExecuteEdit; ]
+ FID_NOTE_VISIBLE [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_DEC_INDENT [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+ SID_INC_INDENT [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+
+ SID_THESAURUS [ ExecMethod = ExecuteEdit; StateMethod = GetCellState; ]
+ SID_SPELLING [ ExecMethod = ExecuteEdit; StateMethod = GetState; ]
+
+}
+
+ // ===========================================================================
+interface CellMovement : Selection
+[
+ uuid ( "FF2E35C0-137B-11D3-B25B-006097DA68F3" )
+]
+{
+ SfxVoidItem JumpToNextTable SID_NEXT_TABLE ( )
+ [
+ ExecMethod = ExecuteMove ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+
+ SfxVoidItem JumpToPrevTable SID_PREV_TABLE ( )
+ [
+ ExecMethod = ExecuteMove ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+
+ SfxVoidItem GoDown SID_CURSORDOWN
+ (
+ SfxInt16Item By FN_PARAM_1,
+ SfxBoolItem Sel FN_PARAM_2
+ )
+ [
+ ExecMethod = ExecuteCursor ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+
+ SfxVoidItem GoDownSel SID_CURSORDOWN_SEL
+ (
+ SfxInt16Item By FN_PARAM_1
+ )
+ [
+ Export = FALSE ;
+ ExecMethod = ExecuteCursorSel ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+ SID_CURSORBLKDOWN [ ExecMethod = ExecuteCursor; StateMethod = GetStateCursor; ]
+ SID_CURSORBLKDOWN_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+
+ SfxVoidItem GoUp SID_CURSORUP
+ (
+ SfxInt16Item By FN_PARAM_1,
+ SfxBoolItem Sel FN_PARAM_2
+ )
+ [
+ ExecMethod = ExecuteCursor ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+ SID_CURSORUP_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+ SID_CURSORBLKUP [ ExecMethod = ExecuteCursor; StateMethod = GetStateCursor; ]
+ SID_CURSORBLKUP_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+
+ SfxVoidItem GoLeft SID_CURSORLEFT
+ (
+ SfxInt16Item By FN_PARAM_1,
+ SfxBoolItem Sel FN_PARAM_2
+ )
+ [
+ ExecMethod = ExecuteCursor ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+ SID_CURSORLEFT_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+ SID_CURSORBLKLEFT [ ExecMethod = ExecuteCursor; StateMethod = GetStateCursor; ]
+ SID_CURSORBLKLEFT_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+
+ SfxVoidItem GoRight SID_CURSORRIGHT
+ (
+ SfxInt16Item By FN_PARAM_1,
+ SfxBoolItem Sel FN_PARAM_2
+ )
+ [
+ ExecMethod = ExecuteCursor ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+ SID_CURSORRIGHT_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+ SID_CURSORBLKRIGHT [ ExecMethod = ExecuteCursor; StateMethod = GetStateCursor; ]
+ SID_CURSORBLKRIGHT_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+ SID_NEXT_UNPROTECT [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+ SID_PREV_UNPROTECT [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+ SID_CURSORENTERDOWN [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+ SID_CURSORENTERUP [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+
+ SfxVoidItem GoDownBlock SID_CURSORPAGEDOWN
+ (
+ SfxInt16Item By FN_PARAM_1,
+ SfxBoolItem Sel FN_PARAM_2
+ )
+ [
+ ExecMethod = ExecuteCursor ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+ SID_CURSORPAGEDOWN_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+
+ SfxVoidItem GoUpBlock SID_CURSORPAGEUP
+ (
+ SfxInt16Item By FN_PARAM_1,
+ SfxBoolItem Sel FN_PARAM_2
+ )
+ [
+ ExecMethod = ExecuteCursor ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+ SID_CURSORPAGEUP_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+ SID_CURSORPAGELEFT_ [ ExecMethod = ExecuteCursor; StateMethod = GetStateCursor; ]
+ SID_CURSORPAGELEFT_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+ SID_CURSORPAGERIGHT_ [ ExecMethod = ExecuteCursor; StateMethod = GetStateCursor; ]
+ SID_CURSORPAGERIGHT_SEL [ ExecMethod = ExecuteCursorSel; StateMethod = GetStateCursor; ]
+ SID_ALIGNCURSOR [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+
+ SfxVoidItem GoToEndOfData SID_CURSORENDOFFILE
+ (
+ SfxBoolItem Sel FN_PARAM_2 //XXX
+ )
+ [
+ ExecMethod = ExecutePage ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+ SID_CURSORENDOFFILE_SEL [ ExecMethod = ExecutePageSel; StateMethod = GetStateCursor; ]
+
+ SfxVoidItem GoToStart SID_CURSORTOPOFFILE
+ (
+ SfxBoolItem Sel FN_PARAM_2 //XXX
+ )
+ [
+ ExecMethod = ExecutePage ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+ SID_CURSORTOPOFSCREEN [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+ SID_CURSORENDOFSCREEN [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+
+ SfxVoidItem GoToStartOfRow SID_CURSORHOME
+ (
+ SfxBoolItem Sel FN_PARAM_2
+ )
+ [
+ ExecMethod = ExecutePage ;
+ StateMethod = GetStateCursor ;
+ Cachable ;
+ ]
+
+ SID_CURSOREND [ ExecMethod = ExecutePage; StateMethod = GetStateCursor; ]
+ SID_CURSORTOPOFFILE_SEL [ ExecMethod = ExecutePageSel; StateMethod = GetStateCursor; ]
+ SID_CURSORHOME_SEL [ ExecMethod = ExecutePageSel; StateMethod = GetStateCursor; ]
+ SID_CURSOREND_SEL [ ExecMethod = ExecutePageSel; StateMethod = GetStateCursor; ]
+ SID_SELECT_COL [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+ SID_SELECT_ROW [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+ SID_SELECT_NONE [ ExecMethod = ExecuteMove; StateMethod = GetStateCursor; ]
+ SID_SELECTALL [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_STATUS_SUM [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_STATUS_DOCPOS [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_STATUS_SELMODE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_STATUS_SELMODE_ERG [ ExecMethod = Execute; ]
+ SID_STATUS_SELMODE_ERW [ ExecMethod = Execute; ]
+ SID_STATUS_SELMODE_NORM [ ExecMethod = Execute; ]
+ SID_ATTR_SIZE [ StateMethod = GetState; ]
+ SID_ATTR_POSITION [ StateMethod = GetState; ]
+ SID_TABLE_CELL
+ [
+ // "Tabellenzelle" soll nicht im Anpassen-Dialog auftauchen:
+ StatusBarConfig = FALSE ;
+ StateMethod = GetState ;
+ ]
+ SID_DATA_SELECT [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_DETECTIVE_FILLMODE [ ExecMethod = Execute; StateMethod = GetState; ] // api:
+}
+
+
+interface RangeSelection : Selection
+[
+ uuid ( "0CAB4620-137C-11D3-B25B-006097DA68F3" )
+]
+{
+ import CellSelection;
+ import FormatForSelection;
+ import TableFont ".Font";
+ import BaseSelection;
+}
+
+interface Cell
+[
+ uuid ( "F0645A00-1921-11D3-B25B-006097DA68F3" )
+]
+{
+ import CellSelection;
+ import CellMovement;
+}
+
+ // ===========================================================================
+shell ScCellShell : ScFormatShell
+{
+ import Cell[Automation];
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.3 1999/07/27 15:03:42 ANK
+ #67793# changes for table-protection
+
+
+ Rev 1.2 27 Jul 1999 17:03:42 ANK
+ #67793# changes for table-protection
+
+ Rev 1.1 21 Jun 1999 20:38:28 ANK
+ #66547# Slot's moved
+
+ Rev 1.0 02 Jun 1999 21:44:38 ANK
+ #66547# SubShells
+
+------------------------------------------------------------------------*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/sdi/chartsh.sdi b/sc/sdi/chartsh.sdi
new file mode 100644
index 000000000000..c12fb941dfa5
--- /dev/null
+++ b/sc/sdi/chartsh.sdi
@@ -0,0 +1,18 @@
+ //============================================================================
+ //
+ // ScChartShell fuer StarCalc
+ //
+ // (C) 1999 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:44:52 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/sdi/chartsh.sdv $ $Workfile: chartsh.sdi $
+ //----------------------------------------------------------------------------
+
+interface ChartSelection : Selection
+{
+}
+
+ // ===========================================================================
+shell ScChartShell : ScDrawShell
+{
+ import ChartSelection;
+}
diff --git a/sc/sdi/docsh.sdi b/sc/sdi/docsh.sdi
new file mode 100644
index 000000000000..dc467478a550
--- /dev/null
+++ b/sc/sdi/docsh.sdi
@@ -0,0 +1,289 @@
+ //============================================================================
+ //
+ // StarCalc
+ //
+ // (C) 1994 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:44:52 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/sdi/docsh.sdv $ $Workfile: docsh.sdi $
+ //----------------------------------------------------------------------------
+
+
+
+ //============================================================================
+interface Name : Object
+[
+ uuid = "BA338A40-064E-11d0-89CB-008029E4B0B1" ;
+]
+{
+ SID_SC_NAME_TITLE [ ExecMethod = Execute; StateMethod = GetState; ] // ole() api(ply)
+}
+
+
+ //============================================================================
+interface TableSelection : Selection
+[
+ uuid = "BA338A41-064E-11d0-89CB-008029E4B0B1" ;
+]
+{
+ SID_DELETE_PRINTAREA [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_OPENDLG_EDIT_PRINTAREA [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_CHANGE_PRINTAREA [ ExecMethod = Execute; ]
+ FID_DEL_MANUALBREAKS [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_RESET_PRINTZOOM [ ExecMethod = Execute; StateMethod = GetState; ]
+ SbxObject Cells SID_SC_CELLS
+ (
+ UINT16 Column SID_SC_CELLS,
+ UINT16 Row FN_PARAM_1
+ )
+ [
+ ]
+ UINT16 Index FID_TAB_INDEX
+ [
+ Readonly ;
+ ]
+ FID_PROTECT_TABLE [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_PROTECT_DOC [ ExecMethod = Execute; StateMethod = GetState; ]
+
+ SID_AUTO_OUTLINE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_OUTLINE_DELETEALL [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_FORMATPAGE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_HFEDIT [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_DETECTIVE_DEL_ALL [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_TABLE_VISIBLE [ ExecMethod = ExecuteTable; StateMethod = GetStateTable; ]
+ FID_TAB_MOVE [ ExecMethod = ExecuteTable; StateMethod = GetStateTable; ]
+ FID_DELETE_TABLE [ ExecMethod = ExecuteTable; StateMethod = GetStateTable; ]
+ FID_TAB_RENAME [ ExecMethod = ExecuteTable; StateMethod = GetStateTable; ]
+
+ SID_TABLE_ACTIVATE [ ExecMethod = Execute; ]
+}
+
+
+ //============================================================================
+interface TableDocument : OfficeDocument
+[
+ uuid = "BA338A42-064E-11d0-89CB-008029E4B0B1" ;
+]
+{
+ SID_SBA_IMPORT [ ExecMethod = Execute; ]
+ SID_SC_CELLS [ ExecMethod = Execute; ]
+ SID_SC_CELLTEXT [ ExecMethod = Execute; ]
+ SID_SC_SETTEXT [ ExecMethod = Execute; ]
+ SID_SC_RANGE [ ExecMethod = Execute; ]
+ SID_SC_SELECTION [ StateMethod = GetSbxState; ]
+ SID_SC_ACTIVECELL [ StateMethod = GetSbxState; ]
+ SID_SC_ACTIVETAB [ StateMethod = GetSbxState; ]
+ SID_TABLES_GET [ StateMethod = GetSbxState; ]
+ SID_TABLES_COUNT [ StateMethod = GetState; ]
+ SID_PIVOT_GET [ StateMethod = GetSbxState; ]
+ SID_SC_ACTIVEOBJECT [ StateMethod = GetDrawObjState; ]
+ SID_ATTR_YEAR2000 [ StateMethod = GetState; ExecMethod = Execute; ]
+ SbxObject OLEObjects
+ [
+ Readonly ;
+ IsCollection ;
+ ]
+ SID_CHART_SOURCE [ ExecMethod = Execute; ]
+ SID_CHART_ADDSOURCE [ ExecMethod = Execute; ]
+ FID_AUTO_CALC [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_RECALC [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_HARD_RECALC [ ExecMethod = Execute; ]
+ SID_UPDATETABLINKS [ ExecMethod = Execute; ]
+ SID_REIMPORT_AFTER_LOAD [ ExecMethod = Execute; ]
+ SID_AUTO_STYLE [ ExecMethod = Execute; ]
+
+ SID_GET_COLORTABLE [ ExecMethod = Execute; ]
+
+ FID_CHG_RECORD [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_DOCUMENT_COMPARE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_DOCUMENT_MERGE [ ExecMethod = Execute; StateMethod = GetState; ]
+
+ SID_DELETE_SCENARIO [ ExecMethod = Execute; ]
+ SID_EDIT_SCENARIO [ ExecMethod = Execute; ]
+}
+
+
+ //============================================================================
+shell ScDocShell : SfxObjectShell
+[
+ uuid ( "3F543FA0-B6A6-101B-9961-04021C007002" )
+]
+{
+ import TableDocument[Automation];
+}
+
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.80 1999/08/24 14:12:28 ANK
+ #68244# JumpToTable moved
+
+
+ Rev 1.79 24 Aug 1999 16:12:28 ANK
+ #68244# JumpToTable moved
+
+ Rev 1.78 27 Jul 1999 17:03:42 ANK
+ #67793# changes for table-protection
+
+ Rev 1.77 21 Jun 1999 20:38:30 ANK
+ #66547# Slot's moved
+
+ Rev 1.76 02 Jun 1999 21:41:34 ANK
+ #66547# SubShells
+
+ Rev 1.75 24 Mar 1999 18:35:14 ANK
+ #63806# Configname rausgeschmissen
+
+ Rev 1.74 27 Jan 1999 20:09:58 ER
+ #61027# new: Year2000
+
+ Rev 1.73 30 Jun 1998 23:23:58 NN
+ Merge/Compare mit Sfx-Slots
+
+ Rev 1.72 11 Mar 1998 22:48:42 NN
+ FID_CHG_MERGE/COMPARE
+
+ Rev 1.71 10 Mar 1998 21:53:32 NN
+ DELETE_SCENARIO, EDIT_SCENARIO
+
+ Rev 1.70 06 Mar 1998 14:19:34 ANK
+ New Idl's Redlin
+
+ Rev 1.69 29 Oct 1997 14:30:22 NN
+ Pivottabellen fuer Basic
+
+ Rev 1.68 21 Oct 1997 11:28:20 NN
+ #44618# SID_GET_COLORTABLE
+
+ Rev 1.67 04 Sep 1997 13:35:24 MBA
+ Document von OfficeDocument abgeleitet
+
+ Rev 1.66 02 Sep 1997 19:20:44 MBA
+ OLEObjects jetzt in SVX
+
+ Rev 1.65 28 Aug 1997 12:36:26 MBA
+ Neue Interface-Namen
+
+ Rev 1.64 11 Jul 1997 12:05:48 NN
+ SID_TABLES_COUNT
+
+ Rev 1.63 23 Jun 1997 11:27:58 NN
+ Slots fuer Seitenumbruch-Vorschau
+
+ Rev 1.62 23 Feb 1997 22:47:02 NN
+ SID_REIMPORT_AFTER_LOAD
+
+ Rev 1.61 14 Nov 1996 09:28:20 MI
+ SID_TEMPLATE/SID_STYLE
+
+ Rev 1.60 22 Oct 1996 13:15:14 HJS
+ merge 22.10.96
+
+ Rev 1.59 09 Oct 1996 12:08:44 HJS
+ merge 09.10.96
+
+ Rev 1.58 25 Sep 1996 14:43:04 RJ
+ aufgeraeumt
+
+ Rev 1.57 04 Sep 1996 12:34:26 NN
+ OLEObjects, SelectedObject
+
+ Rev 1.56 02 Sep 1996 10:08:36 NN
+ Hide/Show an Tables, Remove ohne Parameter, Hidden->Visible
+
+ Rev 1.55 29 Aug 1996 18:04:18 NN
+ SetText -> PutCell
+
+ Rev 1.54 28 Aug 1996 21:03:34 NN
+ Parameter bei Cells, neu: SetText
+
+ Rev 1.53 23 Aug 1996 19:42:26 RJ
+ Slot fuer DB-Import
+
+ Rev 1.52 23 Aug 1996 16:31:30 NN
+ CellText
+
+ Rev 1.51 23 Aug 1996 16:07:22 NN
+ nochmal GetSbxState
+
+ Rev 1.50 21 Aug 1996 14:07:04 HJS
+ eu...
+
+ Rev 1.48 30 Jul 1996 12:47:22 NN
+ #29898# GetState fuer FID_RECALC
+
+ Rev 1.47 23 Jul 1996 21:35:28 NN
+ AddChartData
+
+ Rev 1.46 23 Jul 1996 20:49:12 NN
+ SBA-Slots auch aus der idl raus
+
+ Rev 1.45 16 Jul 1996 10:37:20 NN
+ #27077# SID_MODIFIED raus
+
+ Rev 1.44 08 Jul 1996 16:15:40 HJS
+ uebersetzung
+
+ Rev 1.43 01 Apr 1996 15:37:10 NN
+ #26327# ChangeChartData: Parameter fuer Spalten-/Zeilenkoepfe
+
+ Rev 1.42 22 Mar 1996 13:51:34 NN
+ SID_AUTO_STYLE
+
+ Rev 1.41 06 Mar 1996 19:16:30 NN
+ SID_UPDATETABLINKS
+
+ Rev 1.40 29 Feb 1996 11:45:18 NN
+ ExecuteTable/GetStateTable bei FID_DELETE_TABLE
+
+ Rev 1.39 26 Feb 1996 14:40:14 NF
+ Wegen CLOOKS im View
+
+ Rev 1.37 12 Feb 1996 17:15:24 MO
+ Delete/Edit/ChangePtintArea
+
+ Rev 1.36 12 Feb 1996 17:15:06 JN
+ SID_CHART_SOURCE jetzt mit Argumenten fuer Basic
+
+ Rev 1.35 31 Jan 1996 19:18:18 JN
+ #24962#
+
+ Rev 1.34 29 Jan 1996 16:21:16 JN
+ Basic weitergemacht
+
+ Rev 1.33 18 Jan 1996 18:44:28 JN
+ Konfiguration und Basic
+
+ Rev 1.32 16 Jan 1996 16:36:38 JN
+ Zwischenstand Basic
+
+ Rev 1.31 11 Jan 1996 22:31:18 NN
+ #24145# SID_CHART_SOURCE
+
+ Rev 1.30 11 Jan 1996 16:48:38 JN
+ Zwischenstand Basic
+
+ Rev 1.29 21 Dec 1995 12:44:58 JN
+ Umstellungen...
+
+ Rev 1.28 20 Dec 1995 13:06:40 JN
+ ...
+
+ Rev 1.27 19 Dec 1995 16:20:50 MD
+ Selection, ActiveCell, ActiveTable
+
+ Rev 1.26 15 Dec 1995 17:44:30 MD
+ Fixes (ob die gehen?)
+
+ Rev 1.25 15 Dec 1995 15:25:56 JN
+ neue Slots fuer Basic
+
+ Rev 1.24 14 Dec 1995 10:49:38 NF
+ Name nach ReName wegen SFX-Stand
+
+ Rev 1.23 14 Dec 1995 10:19:20 MD
+ Tables, Table
+------------------------------------------------------------------------*/
+
+
+
+
diff --git a/sc/sdi/drawsh.sdi b/sc/sdi/drawsh.sdi
new file mode 100644
index 000000000000..893461a46807
--- /dev/null
+++ b/sc/sdi/drawsh.sdi
@@ -0,0 +1,142 @@
+interface TableDraw : Selection
+{
+ // Drawing geht von Basic aus gar nicht, darum alles mit Export = FALSE
+
+ FID_DEFINE_NAME [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_DEFINE_COLROWNAMERANGES [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_SOLVE [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_PIVOTTABLE [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_TABOP [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_FILTER [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_SPECIAL_FILTER [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_DEFINE_DBNAME [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_CONSOLIDATE [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_CHART [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_EDIT_PRINTAREA [ StateMethod = StateDisableItems; Export = FALSE; ]
+ // andere:
+ SID_DRAW_CHART [ StateMethod = StateDisableItems; Export = FALSE; ]
+ //! SID_STYLE_DESIGNER [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_CATALOG [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_IMPORT_DATA [ StateMethod = StateDisableItems; Export = FALSE; ]
+ //! SID_OPENDLG_FUNCTION[ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_FAMILY2 [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_FAMILY4 [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_APPLY [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_WATERCAN [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_NEW_BY_EXAMPLE [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_UPDATE_BY_EXAMPLE [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_NEW [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_EDIT [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_DELETE [ StateMethod = StateDisableItems; Export = FALSE; ]
+
+ //----------------------------------------------------------------------------
+ SID_TEXT_STANDARD [ ExecMethod = ExecDrawAttr; StateMethod = NoState; Export = FALSE; ]
+ SID_DRAWTEXT_ATTR_DLG [ ExecMethod = ExecDrawAttr; StateMethod = NoState; Export = FALSE; ]
+ // ---- Slot-IDs fuer Objectbar:
+ // Flaechen-Attribute
+ SID_ATTR_FILL_STYLE [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
+ SID_ATTR_FILL_COLOR [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
+ SID_ATTR_FILL_GRADIENT [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
+ SID_ATTR_FILL_HATCH [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
+ SID_ATTR_FILL_BITMAP [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
+ // ---- Linien-Attribute:
+ SID_ATTR_LINE_STYLE [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
+ SID_ATTR_LINEEND_STYLE [ ExecMethod = ExecDrawAttr; StateMethod = GetAttrFuncState; Export = FALSE; ]
+ SID_ATTR_LINE_DASH [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
+ SID_ATTR_LINE_WIDTH [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
+ SID_ATTR_LINE_COLOR [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawAttrState; Export = FALSE; ]
+ SID_ATTRIBUTES_AREA [ ExecMethod = ExecDrawAttr; StateMethod = GetAttrFuncState; Export = FALSE; ]
+ SID_ATTRIBUTES_LINE [ ExecMethod = ExecDrawAttr; StateMethod = GetAttrFuncState; Export = FALSE; ]
+ SID_ATTR_TRANSFORM [ ExecMethod = ExecDrawAttr; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ // ---- Ausrichtungs - Funktionen:
+ //! PseudoSlots gibt Aerger mit Referenz-Dialogen ???
+ SvxDrawAlignItem ObjectAlign SID_OBJECT_ALIGN
+ [
+ // PseudoSlots = TRUE;
+ PseudoSlots = FALSE ;
+ Export = FALSE ;
+ // PseudoPrefix = SID_OBJECT_ALIGN;
+ ExecMethod = ExecDrawFunc ;
+ StateMethod = NoState ;
+ GroupId = GID_FORMAT ;
+ FastCall , Cachable ;
+ ToolBoxConfig ;
+ ]
+ SID_OBJECT_ALIGN_LEFT [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_OBJECT_ALIGN_CENTER [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_OBJECT_ALIGN_RIGHT [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_OBJECT_ALIGN_UP [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_OBJECT_ALIGN_MIDDLE [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_OBJECT_ALIGN_DOWN [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ // ---- andere Funktionen:
+ SID_OBJECT_HEAVEN [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_OBJECT_HELL [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_FRAME_TO_TOP [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_FRAME_TO_BOTTOM [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_FRAME_UP [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_FRAME_DOWN [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_GROUP [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_UNGROUP [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_ENTER_GROUP [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_LEAVE_GROUP [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ // !!! special
+ SID_DELETE [ExecMethod = ExecDrawFunc ;StateMethod = GetDrawFuncState; Export = FALSE ;]
+ /*
+ SfxVoidItem Delete SID_DELETE ( )
+ [
+ ExecMethod = ExecDrawFunc ;
+ StateMethod = GetDrawFuncState ;
+ Export = FALSE ;
+ GroupId = GID_EDIT ;
+ FastCall , Cachable ;
+ ToolBoxConfig , MenuConfig , AccelConfig ;
+ ]
+ */
+ SID_DELETE_CONTENTS [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_CUT [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_COPY [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_SELECTALL [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_OBJECT_ROTATE [ ExecMethod = ExecDrawFunc; StateMethod = GetState; Export = FALSE; ]
+ SID_OBJECT_MIRROR [ ExecMethod = ExecDrawFunc; StateMethod = GetState; Export = FALSE; ]
+ SID_BEZIER_EDIT [ ExecMethod = ExecDrawFunc; StateMethod = GetState; Export = FALSE; ]
+ SID_MIRROR_HORIZONTAL[ ExecMethod = ExecDrawFunc;StateMethod = GetDrawFuncState; Export = FALSE; ]
+ /*
+ SfxVoidItem ObjectMirrorHorizontal SID_MIRROR_HORIZONTAL ( )
+ [
+ StateMethod = GetDrawFuncState ;
+ Export = FALSE ;
+ GroupId = GID_FORMAT ;
+ Cachable ;
+ MenuConfig ; //FS
+ ]
+ */
+ SID_MIRROR_VERTICAL [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_ANCHOR_PAGE [ ExecMethod = ExecDrawFunc; StateMethod = GetState; Export = FALSE; ]
+ SID_ANCHOR_TOGGLE [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_ANCHOR_CELL [ ExecMethod = ExecDrawFunc; StateMethod = GetState; Export = FALSE; ]
+ // ---- FontWork:
+ SID_FONTWORK [ ExecMethod = ExecDrawFunc; StateMethod = GetState; Export = FALSE; ]
+ SID_FORMTEXT_STYLE [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_ADJUST [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_DISTANCE [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_START [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_MIRROR [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_HIDEFORM [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_OUTLINE [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_SHADOW [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_SHDWCOLOR [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_SHDWXVAL [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_SHDWYVAL [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_STDFORM [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_ATTR_SIZE [ StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_ORIGINALSIZE [ ExecMethod = ExecDrawFunc; StateMethod = GetDrawFuncState; Export = FALSE; ]
+ SID_HYPERLINK_SETLINK [ ExecMethod = ExecuteHLink; Export = FALSE; ]
+ SID_HYPERLINK_GETLINK [ StateMethod = GetHLinkState; Export = FALSE; ]
+}
+
+
+ // ===========================================================================
+shell ScDrawShell
+{
+ import TableDraw;
+}
diff --git a/sc/sdi/drformsh.sdi b/sc/sdi/drformsh.sdi
new file mode 100644
index 000000000000..8ce5258fb877
--- /dev/null
+++ b/sc/sdi/drformsh.sdi
@@ -0,0 +1,19 @@
+ //============================================================================
+ //
+ // ScDrawFormShell fuer StarCalc
+ //
+ // (C) 1999 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:44:52 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/sdi/drformsh.sdv $ $Workfile: drformsh.sdi $
+ //----------------------------------------------------------------------------
+
+interface TableForm : Selection
+{
+}
+
+
+ // ===========================================================================
+shell ScDrawFormShell : ScDrawShell
+{
+ import TableForm;
+}
diff --git a/sc/sdi/drtxtob.sdi b/sc/sdi/drtxtob.sdi
new file mode 100644
index 000000000000..6a747e952c97
--- /dev/null
+++ b/sc/sdi/drtxtob.sdi
@@ -0,0 +1,94 @@
+interface TableDrawText : Selection
+{
+ // Drawing geht von Basic aus gar nicht, darum alles mit Export = FALSE
+
+ // alle Referenz-Eingabe-Dialoge:
+ FID_DEFINE_NAME [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_DEFINE_COLROWNAMERANGES [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_SOLVE [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_PIVOTTABLE [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_TABOP [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_FILTER [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_SPECIAL_FILTER [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_DEFINE_DBNAME [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_CONSOLIDATE [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_CHART [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_EDIT_PRINTAREA [ StateMethod = StateDisableItems; Export = FALSE; ]
+ // andere:
+ SID_DRAW_CHART [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_CATALOG [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_IMPORT_DATA [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_OPENDLG_FUNCTION [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_FAMILY2 [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_FAMILY4 [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_APPLY [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_WATERCAN [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_NEW_BY_EXAMPLE [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_UPDATE_BY_EXAMPLE [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_NEW [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_EDIT [ StateMethod = StateDisableItems; Export = FALSE; ]
+ SID_STYLE_DELETE [ StateMethod = StateDisableItems; Export = FALSE; ]
+
+ //----------------------------------------------------------------------------
+ SID_CUT [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_COPY [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PASTE [ ExecMethod = Execute; StateMethod = GetClipState; Export = FALSE; ]
+ FID_PASTE_CONTENTS [ ExecMethod = Execute; StateMethod = GetClipState; Export = FALSE; ]
+ SID_SELECTALL [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_CHARMAP [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ // Attribute: --------------------------------------------------
+ SID_TEXT_STANDARD [ ExecMethod = ExecuteAttr; StateMethod = GetState; Export = FALSE; ]
+ SID_DRAWTEXT_ATTR_DLG [ ExecMethod = ExecuteAttr; StateMethod = GetState; Export = FALSE; ]
+ SID_ATTR_CHAR_FONT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_FONTHEIGHT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_COLOR [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_WEIGHT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_POSTURE [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_UNDERLINE [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+
+ SID_ULINE_VAL_NONE [ ExecMethod = ExecuteToggle; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ULINE_VAL_SINGLE [ ExecMethod = ExecuteToggle; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ULINE_VAL_DOUBLE [ ExecMethod = ExecuteToggle; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ULINE_VAL_DOTTED [ ExecMethod = ExecuteToggle; StateMethod = GetAttrState; Export = FALSE; ]
+
+ SID_ATTR_CHAR_CONTOUR [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_SHADOWED [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_STRIKEOUT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_PARA_ADJUST_LEFT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_PARA_ADJUST_CENTER [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_PARA_ADJUST_RIGHT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_PARA_ADJUST_BLOCK [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_PARA_LINESPACE_10 [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_PARA_LINESPACE_15 [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_PARA_LINESPACE_20 [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_SET_SUPER_SCRIPT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_SET_SUB_SCRIPT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_CHAR_DLG [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_PARA_DLG [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ // ---- FontWork:
+ SID_FONTWORK [ ExecMethod = ExecuteExtra; StateMethod = GetState; Export = FALSE; ]
+
+ SID_FORMTEXT_STYLE [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_ADJUST [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_DISTANCE [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_START [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_MIRROR [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_HIDEFORM [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_OUTLINE [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_SHADOW [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_SHDWCOLOR [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_SHDWXVAL [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_SHDWYVAL [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+ SID_FORMTEXT_STDFORM [ ExecMethod = ExecFormText; StateMethod = GetFormTextState; Export = FALSE; ]
+
+ SID_HYPERLINK_SETLINK [ ExecMethod = Execute; Export = FALSE; ]
+ SID_HYPERLINK_GETLINK [ StateMethod = GetState; Export = FALSE; ]
+}
+
+
+
+ // ===========================================================================
+shell ScDrawTextObjectBar
+{
+ import TableDrawText;
+}
diff --git a/sc/sdi/editsh.sdi b/sc/sdi/editsh.sdi
new file mode 100644
index 000000000000..63d333d68e77
--- /dev/null
+++ b/sc/sdi/editsh.sdi
@@ -0,0 +1,57 @@
+interface TableText : Selection
+{
+ // von Basic aus nicht erreichbar, darum alles mit Export = FALSE
+
+ SID_ATTR_INSERT [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+
+ SfxVoidItem Delete SID_DELETE ( )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_EDIT ;
+ Cachable ;
+ ]
+ SID_CUT [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_COPY [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PASTE [ ExecMethod = Execute; StateMethod = GetClipState; Export = FALSE; ]
+ FID_PASTE_CONTENTS [ ExecMethod = Execute; StateMethod = GetClipState; Export = FALSE; ]
+ SID_SELECTALL [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_CHARMAP [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ FID_INSERT_NAME [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+
+ // ---- Attribute:
+ SID_ATTR_CHAR_FONT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_FONTHEIGHT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_COLOR [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+
+ // ---- Attribut - Toggles:
+ SID_ATTR_CHAR_WEIGHT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_POSTURE [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_UNDERLINE [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+
+ SID_ULINE_VAL_NONE [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ULINE_VAL_SINGLE [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ULINE_VAL_DOUBLE [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ULINE_VAL_DOTTED [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+
+ SID_ATTR_CHAR_STRIKEOUT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_SHADOWED [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_ATTR_CHAR_CONTOUR [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_SET_SUPER_SCRIPT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_SET_SUB_SCRIPT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; Export = FALSE; ]
+ SID_CELL_FORMAT_RESET [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_CHAR_DLG [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_TOGGLE_REL [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+
+ SID_HYPERLINK_SETLINK [ ExecMethod = Execute; Export = FALSE; ]
+ SID_HYPERLINK_GETLINK [ StateMethod = GetState; Export = FALSE; ]
+}
+
+
+ // ===========================================================================
+shell ScEditShell
+{
+ import TableText;
+}
+
diff --git a/sc/sdi/formatsh.sdi b/sc/sdi/formatsh.sdi
new file mode 100644
index 000000000000..5902840f716d
--- /dev/null
+++ b/sc/sdi/formatsh.sdi
@@ -0,0 +1,172 @@
+ //============================================================================
+ //
+ // StarCalc
+ //
+ // (C) 1994 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:44:52 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/sdi/formatsh.sdv $ $Workfile: formatsh.sdi $
+ //----------------------------------------------------------------------------
+
+ // ===========================================================================
+interface TableFont : Object
+[
+ uuid ( "2E4AC1C0-137C-11D3-B25B-006097DA68F3" )
+]
+{
+ SID_ATTR_CHAR_FONT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; ]
+ SID_ATTR_CHAR_FONTHEIGHT [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; ]
+ SID_ATTR_CHAR_COLOR [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; ]
+ SID_ATTR_CHAR_WEIGHT [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ATTR_CHAR_POSTURE [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ATTR_CHAR_UNDERLINE [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ULINE_VAL_NONE [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ULINE_VAL_SINGLE [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ULINE_VAL_DOUBLE [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ULINE_VAL_DOTTED [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+}
+
+ // ===========================================================================
+interface FormatForSelection : Selection
+[
+ uuid ( "40F448A0-137C-11D3-B25B-006097DA68F3" )
+]
+{
+ //Auch das Basic muss wieder laufen
+ SbxObject Font SID_PROP_FONT
+ [
+ ]
+ SbxObject Interior SID_PROP_INTERIOR // status(Final)
+ [
+ ]
+
+ // Slot's die in der DrawShell disabled werden. {
+ SID_STYLE_FAMILY2 [ ExecMethod = ExecuteStyle; StateMethod = GetStyleState; ]
+ SID_STYLE_APPLY [ ExecMethod = ExecuteStyle; StateMethod = GetStyleState; ]
+ SID_STYLE_WATERCAN [ ExecMethod = ExecuteStyle; StateMethod = GetStyleState; ]
+ SID_STYLE_NEW_BY_EXAMPLE [ ExecMethod = ExecuteStyle; StateMethod = GetStyleState; ]
+ SID_STYLE_UPDATE_BY_EXAMPLE [ ExecMethod = ExecuteStyle; StateMethod = GetStyleState; ]
+
+ SfxVoidItem NewTemplate SID_STYLE_NEW
+ (
+ SfxStringItem Param SID_STYLE_NEW,
+ SfxUInt16Item Family SID_STYLE_FAMILY
+ )
+ [
+ ExecMethod = ExecuteStyle ;
+ StateMethod = GetStyleState ;
+ GroupId = GID_VIEW ;
+ Cachable ;
+ ]
+
+ // !!! special
+ SfxTemplateItem PageStyleApply SID_STYLE_FAMILY4 ( )
+ [
+ ExecMethod = ExecuteStyle ;
+ StateMethod = GetStyleState ;
+ GroupId = GID_FORMAT ;
+ Cachable ;
+ ]
+
+ SfxVoidItem EditTemplate SID_STYLE_EDIT
+ (
+ SfxStringItem Param SID_STYLE_EDIT,
+ SfxUInt16Item Family SID_STYLE_FAMILY
+ )
+ [
+ ExecMethod = ExecuteStyle ;
+ StateMethod = GetStyleState ;
+ GroupId = GID_VIEW ;
+ Cachable ;
+ ]
+
+ SfxVoidItem DeleteTemplate SID_STYLE_DELETE
+ (
+ SfxStringItem Param SID_STYLE_DELETE,
+ SfxUInt16Item Family SID_STYLE_FAMILY
+ )
+ [
+ ExecMethod = ExecuteStyle ;
+ StateMethod = GetStyleState ;
+ GroupId = GID_VIEW ;
+ Cachable ;
+ ]
+ // } Slot's die in der DrawShell disabled werden.
+
+ SID_BACKGROUND_COLOR [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; ]
+ SID_ALIGNLEFT [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ALIGNRIGHT [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ALIGNTOP [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ALIGNBOTTOM [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ALIGNCENTERVER [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+ SID_ALIGNBLOCK [ ExecMethod = ExecuteTextAttr; StateMethod = GetTextAttrState; ]
+
+ SfxVoidItem AlignHCenter SID_ALIGNCENTERHOR ( )
+ [
+ ExecMethod = ExecuteTextAttr ;
+ StateMethod = GetTextAttrState ;
+ GroupId = GID_FORMAT ; //FS
+ Cachable ;
+ ToolBoxConfig ;
+ ]
+ SID_V_ALIGNCELL [ ExecMethod = ExecuteAlignment; StateMethod = GetAlignState; ]
+ SID_H_ALIGNCELL [ ExecMethod = ExecuteAlignment; StateMethod = GetAlignState; ]
+
+ SID_NUMBER_FORMAT [ ExecMethod = ExecuteNumFormat; StateMethod = GetNumFormatState;]
+ SID_NUMBER_TWODEC [ ExecMethod = ExecuteNumFormat;]
+ SID_NUMBER_SCIENTIFIC [ ExecMethod = ExecuteNumFormat;]
+ SID_NUMBER_DATE [ ExecMethod = ExecuteNumFormat;]
+ SID_NUMBER_CURRENCY [ ExecMethod = ExecuteNumFormat;]
+ SID_NUMBER_PERCENT [ ExecMethod = ExecuteNumFormat;]
+ SID_NUMBER_TIME [ ExecMethod = ExecuteNumFormat;]
+ SID_NUMBER_STANDARD [ ExecMethod = ExecuteNumFormat;]
+ SID_NUMBER_INCDEC [ ExecMethod = ExecuteNumFormat;]
+ SID_NUMBER_DECDEC [ ExecMethod = ExecuteNumFormat;]
+
+ SID_ATTR_BORDER [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; ] //XXX
+ SID_ATTR_BORDER_INNER [ StateMethod = GetBorderState; ] // status()
+// SID_ATTR_BORDER_OUTER [ ExecMethod = ExecuteAttr; StateMethod = GetBorderState; ] // status()
+ SID_ATTR_ALIGN_LINEBREAK [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; ]
+ SID_FRAME_LINESTYLE [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; ]
+ SID_FRAME_LINECOLOR [ ExecMethod = ExecuteAttr; StateMethod = GetAttrState; ]
+}
+
+
+ // ===========================================================================
+shell ScFormatShell
+{
+ import FormatForSelection[Automation];
+// import Interior ".Interior";
+ import TableFont ".Font";
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.3 2000/05/24 09:30:06 nn
+ SID_ATTR_BORDER still needed
+
+ Revision 1.2 2000/05/11 17:01:05 nn
+ slots for old basic api removed2
+
+ Revision 1.1 1999/06/02 19:44:38 ANK
+ #66547# SubShells
+
+
+ Rev 1.0 02 Jun 1999 21:44:38 ANK
+ #66547# SubShells
+
+------------------------------------------------------------------------*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/sdi/graphsh.sdi b/sc/sdi/graphsh.sdi
new file mode 100644
index 000000000000..52e35954b49d
--- /dev/null
+++ b/sc/sdi/graphsh.sdi
@@ -0,0 +1,18 @@
+ //============================================================================
+ //
+ // ScGraphicShell fuer StarCalc
+ //
+ // (C) 1999 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:44:52 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/sdi/graphsh.sdv $ $Workfile: graphsh.sdi $
+ //----------------------------------------------------------------------------
+
+interface GraphSelection : Selection
+{
+}
+
+ // ===========================================================================
+shell ScGraphicShell : ScDrawShell
+{
+ import GraphSelection;
+}
diff --git a/sc/sdi/makefile.mk b/sc/sdi/makefile.mk
new file mode 100644
index 000000000000..11c343723a2b
--- /dev/null
+++ b/sc/sdi/makefile.mk
@@ -0,0 +1,136 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:52 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=sc
+TARGET=scslots
+SVSDIINC=$(PRJ)$/source$/ui$/inc
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : svpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sv.mk
+
+# --- Files --------------------------------------------------------
+
+
+SDINAME=$(TARGET)
+SIDHRCNAME=SCSLOTS.HRC
+SDIEXPORT=newslots
+
+SVSDIDEPEND= \
+ $(SOLARINCDIR)$/ofa.ilb \
+ scalc.sdi \
+ app.sdi \
+ auditsh.sdi \
+ docsh.sdi \
+ drawsh.sdi \
+ drtxtob.sdi \
+ drformsh.sdi \
+ editsh.sdi \
+ newslots.sdi \
+ pivotsh.sdi \
+ prevwsh.sdi \
+ tabvwsh.sdi \
+ formatsh.sdi\
+ cellsh.sdi \
+ oleobjsh.sdi\
+ chartsh.sdi \
+ graphsh.sdi \
+ pgbrksh.sdi \
+ scslots.hrc \
+ $(INC)$/sc.hrc
+
+SRCFILES= \
+ scslots.src
+
+# --- Targets -------------------------------------------------------
+
+.IF "$(depend)" = ""
+
+ALL: \
+ ALLTAR \
+ $(BIN)$/$(SDINAME).tlb
+
+.ENDIF
+
+
+.INCLUDE : target.mk
+
+.IF "$(GUIBASE)$(VCL)"=="WIN"
+$(BIN)$/$(SDINAME).tlb: \
+ $(MISCX)$/$(SDINAME).odl
+ rscpp -I.;$(SVSDIINC);$(INC) -DSOLAR_VERSION=$(solar_version) $(MISC)$/$(SDINAME).odl $(MISC)$/$(SDINAME).odx
+.IF "$(GUI)"=="WIN"
+ wx /w mktyplib /nocpp /o $(MISC)$/$(SDINAME).err /tlb $(BIN)$/$(SDINAME).tlb $(MISC)$/$(SDINAME).odx
+.ELSE
+ mktyplib /win32 /nocpp /o $(MISC)$/$(SDINAME).err /tlb $(BIN)$/$(SDINAME).tlb $(MISC)$/$(SDINAME).odx
+.ENDIF
+ @+type $(MISC)$/$(SDINAME).err
+.ELSE
+$(BIN)$/$(SDINAME).tlb:
+ @echo nix
+.ENDIF
+
+
diff --git a/sc/sdi/oleobjsh.sdi b/sc/sdi/oleobjsh.sdi
new file mode 100644
index 000000000000..fa3e7435afab
--- /dev/null
+++ b/sc/sdi/oleobjsh.sdi
@@ -0,0 +1,18 @@
+ //============================================================================
+ //
+ // ScOleObjectShell fuer StarCalc
+ //
+ // (C) 1999 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:44:52 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/sdi/oleobjsh.sdv $ $Workfile: oleobjsh.sdi $
+ //----------------------------------------------------------------------------
+
+interface OleObjectSelection : Selection
+{
+}
+
+ // ===========================================================================
+shell ScOleObjectShell : ScDrawShell
+{
+ import OleObjectSelection;
+}
diff --git a/sc/sdi/pgbrksh.sdi b/sc/sdi/pgbrksh.sdi
new file mode 100644
index 000000000000..0d333709fb53
--- /dev/null
+++ b/sc/sdi/pgbrksh.sdi
@@ -0,0 +1,18 @@
+ //============================================================================
+ //
+ // ScPageBreakShell fuer StarCalc
+ //
+ // (C) 1999 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:44:52 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/sdi/pgbrksh.sdv $ $Workfile: pgbrksh.sdi $
+ //----------------------------------------------------------------------------
+
+interface PageBreakMode : Selection
+{
+}
+
+ // ===========================================================================
+shell ScPageBreakShell
+{
+ import PageBreakMode;
+}
diff --git a/sc/sdi/pivotsh.sdi b/sc/sdi/pivotsh.sdi
new file mode 100644
index 000000000000..3a5103e92929
--- /dev/null
+++ b/sc/sdi/pivotsh.sdi
@@ -0,0 +1,12 @@
+interface Pivot : Object
+{
+ // von Basic aus nicht erreichbar, darum alles mit Export = FALSE
+
+ SID_PIVOT_RECALC [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PIVOT_KILL [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+}
+
+shell ScPivotShell
+{
+ import Pivot;
+}
diff --git a/sc/sdi/prevwsh.sdi b/sc/sdi/prevwsh.sdi
new file mode 100644
index 000000000000..c45a3890038c
--- /dev/null
+++ b/sc/sdi/prevwsh.sdi
@@ -0,0 +1,138 @@
+interface TablePrintPreview : View
+{
+ // von Basic aus nicht erreichbar, darum alles mit Export = FALSE
+
+ SID_FORMATPAGE [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_STATUS_PAGESTYLE [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_HFEDIT [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_ATTR_ZOOM [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ FID_SCALE [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_STATUS_DOCPOS [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PREVIEW_NEXT [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PREVIEW_PREVIOUS [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PREVIEW_FIRST [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PREVIEW_LAST [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+
+ SfxVoidItem CursorPageUp SID_CURSORPAGEUP
+ (
+ SfxInt16Item By SID_CURSORPAGEUP
+ )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_INTERN ;
+ Cachable ;
+ ]
+
+ SfxVoidItem CursorPageDown SID_CURSORPAGEDOWN
+ (
+ SfxInt16Item By SID_CURSORPAGEDOWN
+ )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_INTERN ;
+ Cachable ;
+ ]
+
+ SID_CURSORHOME [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_CURSOREND [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+
+ SfxVoidItem CursorDown SID_CURSORDOWN
+ (
+ SfxInt16Item By SID_CURSORDOWN
+ )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_INTERN ;
+ Cachable ;
+ ]
+ SfxVoidItem CursorUp SID_CURSORUP
+ (
+ SfxInt16Item By SID_CURSORUP
+ )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_INTERN ;
+ Cachable ;
+ ]
+ SfxVoidItem CursorLeft SID_CURSORLEFT
+ (
+ SfxInt16Item By SID_CURSORLEFT
+ )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_INTERN ;
+ Cachable ;
+ ]
+
+ SfxVoidItem CursorRight SID_CURSORRIGHT
+ (
+ SfxInt16Item By SID_CURSORRIGHT
+ )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_INTERN ;
+ Cachable ;
+ ]
+
+ SfxVoidItem PPage SID_PREV_TABLE ( )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_INTERN ;
+ Cachable ;
+ ]
+
+ SfxVoidItem NPage SID_NEXT_TABLE ( )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_INTERN ;
+ Cachable ;
+ ]
+
+ SfxVoidItem FPage SID_CURSORTOPOFFILE ( )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_INTERN ;
+ Cachable ;
+ ]
+
+ SfxVoidItem LPage SID_CURSORENDOFFILE ( )
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE;
+ GroupId = GID_INTERN ;
+ Cachable ;
+ ]
+ SID_PREVIEW_ZOOMIN [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PREVIEW_ZOOMOUT [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_REPAINT [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_UNDO [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_REDO [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_REPEAT [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PRINTPREVIEW [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ] // ole() api()
+}
+
+
+ // ===========================================================================
+shell ScPreviewShell : SfxViewShell
+{
+ import TablePrintPreview;
+}
diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi
new file mode 100644
index 000000000000..4a49c74c8045
--- /dev/null
+++ b/sc/sdi/scalc.sdi
@@ -0,0 +1,6565 @@
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatPercent SID_NUMBER_PERCENT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillModeRemoveSuccessor SID_FILL_DEL_SUCC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatTime SID_NUMBER_TIME
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxInt32Item ObjectHeight SID_OBJECT_HEIGHT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatScientific SID_NUMBER_SCIENTIFIC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxInt32Item ObjectLeft SID_OBJECT_LEFT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatDecimal SID_NUMBER_TWODEC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ConditionalFormatDialog SID_OPENDLG_CONDFRMT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem StarChartDialog SID_OPENDLG_CHART
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ToggleRelative SID_TOGGLE_REL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem StarChartDataDialog SID_OPENDLG_MODCHART
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EditPrintArea SID_OPENDLG_EDIT_PRINTAREA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item ColumnWidth FID_COL_WIDTH
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ChangePrintArea SID_CHANGE_PRINTAREA
+(SfxStringItem PrintArea SID_CHANGE_PRINTAREA,SfxStringItem PrintRepeatRow FN_PARAM_2,SfxStringItem PrintRepeatCol FN_PARAM_3)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DRAWING;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem Mirror SID_OBJECT_MIRROR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_SPECIAL;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Select SID_OLE_SELECT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_SPECIAL;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Deactivate SID_OLE_DEACTIVATE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_SPECIAL;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Activate SID_OLE_ACTIVATE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_SPECIAL;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillModeTraceSuccessor SID_FILL_ADD_SUCC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EditScenario SID_EDIT_SCENARIO
+(SfxStringItem ScenarioName SID_EDIT_SCENARIO)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ClearArrowPrecedents SID_DETECTIVE_DEL_PRED
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToNextTable SID_NEXT_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PageFormatDialog SID_FORMATPAGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillModeSelect SID_FILL_SELECT
+(SfxInt16Item PosX SID_RANGE_COL,SfxInt16Item PosY SID_RANGE_ROW)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillModeEnd SID_FILL_NONE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DeleteScenario SID_DELETE_SCENARIO
+(SfxStringItem ScenarioName SID_DELETE_SCENARIO)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DeletePrintArea SID_DELETE_PRINTAREA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ClearContents SID_DELETE_CONTENTS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DrawEditNote SID_DRAW_NOTEEDIT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DrawChart SID_DRAW_CHART
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertFile FID_INSERT_FILE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AuditingFillMode SID_DETECTIVE_FILLMODE
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DeleteColumns SID_DEL_COLS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ObjectMirrorHorizontal SID_MIRROR_HORIZONTAL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ReplaceAll FID_REPLACE_ALL
+(SfxStringItem SearchString FID_REPLACE_ALL,SfxStringItem ReplaceString FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatIncDecimals SID_NUMBER_INCDEC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem NumberFormat SID_NUMBER_FORMAT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatCurrency SID_NUMBER_CURRENCY
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToNextUnprotected SID_NEXT_UNPROTECT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EditHeaderAndFooter SID_HFEDIT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SvxHorJustifyItem HorizontalAlignment SID_H_ALIGNCELL
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item GetClipboardFormatCount SID_GET_CLPBRD_FORMAT_COUNT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Select SID_MARKAREA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertObjectStarMath SID_INSERT_SMATH
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertObjectStarImage SID_INSERT_SIMAGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataImport SID_IMPORT_DATA
+(SfxStringItem DatabaseName SID_IMPORT_DATA,SfxStringItem SqlCommand FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = TRUE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TableOperation SID_TABOP
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem Tables SID_TABLES_GET
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item TableCount SID_TABLES_COUNT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DOCUMENT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem StandardTextAttributes SID_TEXT_STANDARD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item InsObjCtrl SID_TBXCTL_INSOBJ
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item InsertCtrl SID_TBXCTL_INSERT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataSubTotals SID_SUBTOTALS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem GoToObject SID_CURRENTOBJECT
+(SfxStringItem ToObject SID_CURRENTOBJECT)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem StatusPageStyle SID_STATUS_PAGESTYLE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = TRUE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SortDescending SID_SORT_DESCENDING
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem StatusFunction SID_STATUS_SUM
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item StatusSelectionModeNorm SID_STATUS_SELMODE_NORM
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item StatusSelectionMode SID_STATUS_SELMODE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = TRUE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TextAttributes SID_DRAWTEXT_ATTR_DLG
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DRAWING;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DefineDBName SID_DEFINE_DBNAME
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetOptimalRowHeight FID_ROW_OPT_HEIGHT
+(SfxUInt16Item aExtraHeight FID_ROW_OPT_HEIGHT)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem StandardFonts SID_STANDARD_FONTS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AcceptChanges FID_CHG_ACCEPT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem RefreshArrows SID_DETECTIVE_REFRESH
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem SelectScenario SID_SELECT_SCENARIO
+(SfxStringItem Name SID_SELECT_SCENARIO)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SplitWindow SID_WINDOW_SPLIT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataFilterRemoveFilter SID_UNFILTER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem UnderlineSingle SID_ULINE_VAL_SINGLE
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem UnderlineDotted SID_ULINE_VAL_DOTTED
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FreezePanes SID_WINDOW_FIX
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SvxVerJustifyItem VerticalAlignment SID_V_ALIGNCELL
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem UpdateChart SID_UPDATECHART
+(SfxBoolItem AllCharts SID_UPDATECHART)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoUpToStartOfData SID_CURSORBLKUP
+(SfxInt16Item By FN_PARAM_1,SfxBoolItem Sel FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem NoteText SID_RANGE_NOTETEXT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem Address SID_RANGE_ADDRESS
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = ;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item StatusBarFunc SID_PSZ_FUNCTION
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem TextValue SID_RANGE_TEXTVALUE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem CurrentRegion SID_RANGE_REGION
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = ;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem Offset SID_RANGE_OFFSET
+(SfxInt16Item Column FN_PARAM_1,SfxInt16Item Row FN_PARAM_2,SfxInt16Item Table FN_PARAM_3)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ZoomIn SID_PREVIEW_ZOOMIN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DeletePivotTable SID_PIVOT_KILL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TableOperationDialog SID_OPENDLG_TABOP
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoalSeekDialog SID_OPENDLG_SOLVE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PreviousPage SID_PREVIEW_PREVIOUS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToPreviousUnprotected SID_PREV_UNPROTECT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToPrevTable SID_PREV_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem CellText SID_SC_CELLTEXT
+(SfxUInt16Item Column SID_SC_CELLTEXT,SfxUInt16Item Row FN_PARAM_1,SfxUInt16Item Table FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ScenarioManager SID_SCENARIOS
+(SfxStringItem Name SID_SCENARIOS,SfxStringItem Comment SID_NEW_TABLENAME)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PutCell SID_SC_SETTEXT
+(SfxUInt16Item Column FN_PARAM_1,SfxUInt16Item Row FN_PARAM_2,SfxUInt16Item Table FN_PARAM_3,SfxStringItem Text SID_SC_SETTEXT)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem Title SID_SC_NAME_TITLE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = ;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SelectRow SID_SELECT_ROW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Deselect SID_SELECT_NONE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ToolsOptions SID_SCOPTIONS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EditObject SID_SC_EDIT_OBJECT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SbaUpdate SID_SBA_IMPORT
+(SfxStringItem Query SID_SBA_IMPORT,SfxStringItem Target FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataReImport SID_REIMPORT_DATA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+ScDoubleItem Value SID_RANGE_VALUE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem Cells SID_SC_CELLS
+(SfxUInt16Item Column SID_SC_CELLS,SfxUInt16Item Row FN_PARAM_1,SfxUInt16Item Table FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem ActiveTable SID_SC_ACTIVETAB
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignHorizontalCenter SID_ALIGNCENTERHOR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* status: */
+ SlotType = SfxStringItem
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem CalculateHard FID_HARD_RECALC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillRight FID_FILL_TO_RIGHT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillDown FID_FILL_TO_BOTTOM
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillTable FID_FILL_TAB
+(SfxStringItem Flags FID_FILL_TAB)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem FunctionBox FID_FUNCTION_BOX
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FilterExecute FID_FILTER_OK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillUp FID_FILL_TO_TOP
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillSeries FID_FILL_SERIES
+(SfxStringItem FillDir FID_FILL_SERIES,SfxStringItem FillCmd FN_PARAM_1,SfxStringItem FillStep FN_PARAM_3,SfxStringItem FillDateCmd FN_PARAM_2,SfxStringItem FillStart FN_PARAM_4,SfxStringItem FillMax FN_PARAM_5)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxInt32Item ObjectWidth SID_OBJECT_WIDTH
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ShowColumn FID_COL_SHOW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetOptimalColumnWidth FID_COL_OPT_WIDTH
+(SfxUInt16Item aExtraWidth FID_COL_OPT_WIDTH)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Remove FID_DELETE_TABLE
+(SfxUInt16Item Index FID_DELETE_TABLE)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Delete FID_DELETE_CELL
+(SfxStringItem Flags FID_DELETE_CELL)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DeleteRowbreak FID_DEL_ROWBRK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Calculate FID_RECALC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertName FID_INSERT_NAME
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Insert FID_INS_TABLE
+(SfxStringItem Name FID_INS_TABLE,SfxUInt16Item Index FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DefineLabelRange SID_DEFINE_COLROWNAMERANGES
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxInt16Item PasteSpecial FID_PASTE_CONTENTS
+(SfxUInt32Item Format FID_PASTE_CONTENTS)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem PagebreakMode FID_PAGEBREAKMODE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SplitCell FID_MERGE_OFF
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertColumnBreak FID_INS_COLBRK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem StatusInputLine FID_INPUTLINE_STATUS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoDownToEndOfDataSel SID_CURSORBLKDOWN_SEL
+(SfxInt16Item By FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertColumns FID_INS_COLUMN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertCellsDown FID_INS_CELLSDOWN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem AutoRefreshArrows SID_DETECTIVE_AUTO
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertCell FID_INS_CELL
+(SfxStringItem Flags FID_INS_CELL)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatDecDecimals SID_NUMBER_DECDEC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem MergeCells FID_MERGE_ON
+(SfxBoolItem MoveContents FID_MERGE_ON)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoalSeek SID_SOLVE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Cancel SID_CANCEL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Move FID_TAB_MOVE
+(SfxStringItem DocName FID_TAB_MOVE,SfxUInt16Item Index FN_PARAM_1,SfxBoolItem Copy FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertFunction SID_INS_FUNCTION
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item Column SID_RANGE_COL
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AdjustPrintZoom FID_ADJUST_PRINTZOOM
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AutoFill FID_FILL_AUTO
+(SfxStringItem EndCell FID_FILL_AUTO)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ShowDependents SID_DETECTIVE_ADD_SUCC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Activate SID_TABLE_ACTIVATE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem ActiveCell SID_SC_ACTIVECELL
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataFilterStandardFilter SID_FILTER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item StatusSelectionModeExt SID_STATUS_SELMODE_ERW
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetOptimalColumnWidthDirect FID_COL_OPT_DIRECT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FormatCellDialog FID_CELL_FORMAT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem AutoComplete FID_AUTOCOMPLETE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ChooseDesign SID_CHOOSE_DESIGN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ShowChanges FID_CHG_SHOW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem TraceChangeMode FID_CHG_RECORD
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem CommentChange FID_CHG_COMMENT
+(SfxStringItem Comment FID_CHG_COMMENT)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataPilotExec SID_PIVOT_TABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem OriginalSize SID_ORIGINALSIZE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Replace FID_REPLACE
+(SfxStringItem SearchString FID_REPLACE,SfxStringItem ReplaceString FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Search FID_SEARCH
+(SfxStringItem SearchString FID_SEARCH)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FunctionDialog SID_OPENDLG_FUNCTION
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InputLineEnter FID_INPUTLINE_ENTER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NextPage SID_PREVIEW_NEXT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem GoToCell SID_CURRENTCELL
+(SfxStringItem ToPoint SID_CURRENTCELL)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AddChartData SID_CHART_ADDSOURCE
+(SfxStringItem Name SID_CHART_NAME,SfxStringItem Range SID_CHART_SOURCE)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ResetAttributes SID_CELL_FORMAT_RESET
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataFilterHideAutoFilter SID_AUTOFILTER_HIDE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem CreateSWDrawView SID_CREATE_SW_DRAWVIEW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ConsolidateExec SID_CONSOLIDATE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ChangeChartData SID_CHART_SOURCE
+(SfxStringItem Name SID_CHART_NAME,SfxStringItem Range SID_CHART_SOURCE,SfxBoolItem ColHeaders FN_PARAM_1,SfxBoolItem RowHeaders FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AutoOutline SID_AUTO_OUTLINE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem SetAnchorToCell SID_ANCHOR_CELL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignTop SID_ALIGNTOP
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignLeft SID_ALIGNLEFT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataFilterAutoFilter SID_AUTO_FILTER
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem WrapText SID_ATTR_ALIGN_LINEBREAK
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem SetAnchorToPage SID_ANCHOR_PAGE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DefinePrintArea SID_DEFINE_PRINTAREA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoRightBlockSel SID_CURSORPAGERIGHT_SEL
+(SfxInt16Item By FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoRightBlock SID_CURSORPAGERIGHT_
+(SfxInt16Item By FN_PARAM_1,SfxBoolItem Sel FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToPreviousCell SID_CURSORENTERUP
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InputLineBlock FID_INPUTLINE_BLOCK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FirstPage SID_PREVIEW_FIRST
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataSelect SID_DATA_SELECT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToNextCell SID_CURSORENTERDOWN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoDownToEndOfData SID_CURSORBLKDOWN
+(SfxInt16Item By FN_PARAM_1,SfxBoolItem Sel FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem JumpToTable SID_CURRENTTAB
+(SfxUInt16Item Nr SID_CURRENTTAB)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GotoDocument SID_CURRENTDOC
+(SfxStringItem DocName SID_CURRENTDOC)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoUpToStartOfDataSel SID_CURSORBLKUP_SEL
+(SfxInt16Item By FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoRightToEndOfDataSel SID_CURSORBLKRIGHT_SEL
+(SfxInt16Item By FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoLeftToStartOfDataSel SID_CURSORBLKLEFT_SEL
+(SfxInt16Item By FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem Name FID_TAB_RENAME
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Add FID_TAB_APPEND
+(SfxStringItem Name FID_TAB_APPEND)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SearchAll FID_SEARCH_ALL
+(SfxStringItem SearchString FID_SEARCH_ALL)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem StatusScale FID_SCALESTATUS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatStandard SID_NUMBER_STANDARD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignRight SID_ALIGNRIGHT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TableRename FID_TAB_MENU_RENAME
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Scale FID_SCALE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item RowHeight FID_ROW_HEIGHT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ResetPrintZoom FID_RESET_PRINTZOOM
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem RepeatSearch FID_REPEAT_SEARCH
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ClearArrows SID_DETECTIVE_DEL_ALL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ShowRow FID_ROW_SHOW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem HideRow FID_ROW_HIDE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoToCurrentCell SID_ALIGNCURSOR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignBlock SID_ALIGNBLOCK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AddPrintArea SID_ADD_PRINTAREA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem SelectedObjectName SID_ACTIVE_OBJ_NAME
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignVCenter SID_ALIGNCENTERVER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem SelectedObject SID_SC_ACTIVEOBJECT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AlignBottom SID_ALIGNBOTTOM
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Validation FID_VALIDATION
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem Visible FID_TABLE_VISIBLE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Hide FID_TABLE_HIDE
+(SfxStringItem aTableName FID_TABLE_HIDE)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TableSelectAll FID_TAB_SELECTALL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem CreateNames FID_USE_NAME
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ViewInputLineOnOff FID_TOGGLEINPUTLINE
+(SfxBoolItem Mode FID_TOGGLEINPUTLINE)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ViewRowColumnHeadersOnOff FID_TOGGLEHEADERS
+(SfxBoolItem Mode FID_TOGGLEHEADERS)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EditLinks SID_LINKS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DeleteRows SID_DEL_ROWS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertContents FID_INS_CELL_CONTENTS
+(SfxStringItem Flags FID_INS_CELL_CONTENTS)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SelectData SID_MARKDATAAREA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem TextInSpalten SID_TEXT_TO_COLUMNS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DeleteAllBreaks FID_DEL_MANUALBREAKS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoLeftBlock SID_CURSORPAGELEFT_
+(SfxInt16Item By FN_PARAM_1,SfxBoolItem Sel FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ClearArrowDependents SID_DETECTIVE_DEL_SUCC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SelectColumn SID_SELECT_COL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataConsolidate SID_OPENDLG_CONSOLIDATE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ApplyNames FID_APPLY_NAME
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataDataPilotRun SID_OPENDLG_PIVOTTABLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SortAscending SID_SORT_ASCENDING
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem RecalcPivotTable SID_PIVOT_RECALC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InputLineMatrix FID_INPUTLINE_MATRIX
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SelectDB SID_SELECT_DB
+(SfxStringItem DbName SID_SELECT_DB)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem Range SID_SC_RANGE
+(SfxStringItem Range SID_SC_RANGE,SfxBoolItem KeepSelect FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AddInManager SID_ADD_IN_MANAGER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ShowErrors SID_DETECTIVE_ADD_ERR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DefineName FID_DEFINE_NAME
+(SfxStringItem Name FID_DEFINE_NAME,SfxStringItem Symbol FN_PARAM_1,SfxStringItem Options FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SimpleReferenz WID_SIMPLE_REF
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ZoomOut SID_PREVIEW_ZOOMOUT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoLeftToStartOfData SID_CURSORBLKLEFT
+(SfxInt16Item By FN_PARAM_1,SfxBoolItem Sel FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem UnderlineDouble SID_ULINE_VAL_DOUBLE
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertRowBreak FID_INS_ROWBRK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt32Item GetClipboardFormat SID_GET_CLPBRD_FORMAT_BY_IDX
+(SfxUInt16Item Index SID_GET_CLPBRD_FORMAT_BY_IDX)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ObjectMirrorVertical SID_MIRROR_VERTICAL
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ToolProtectionDocument FID_PROTECT_DOC
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ShowPrecedents SID_DETECTIVE_ADD_PRED
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Protect FID_PROTECT_TABLE
+(SfxBoolItem Protect FID_PROTECT_TABLE,SfxStringItem Password FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem HideColumn FID_COL_HIDE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item InsCellsCtrl SID_TBXCTL_INSCELLS
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxInt32Item ObjectTop SID_OBJECT_TOP
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ConditionalFormat FID_CONDITIONAL_FORMAT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertMatrix SID_INSERT_MATRIX
+(SfxStringItem Formula SID_INSERT_MATRIX)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem OleObject SID_OLE_OBJECT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DeleteColumnbreak FID_DEL_COLBRK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ViewValueHighlightingOnOff FID_TOGGLESYNTAX
+(SfxBoolItem Mode FID_TOGGLESYNTAX)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ToggleAnchorType SID_ANCHOR_TOGGLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillModeTracePredescessor SID_FILL_ADD_PRED
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataSort SID_SORT
+(SfxBoolItem ByRows SID_SORT_BYROW,SfxBoolItem HasHeader SID_SORT_HASHEADER,SfxBoolItem CaseSensitive SID_SORT_CASESENS,SfxBoolItem IncludeAttribs SID_SORT_ATTRIBS,SfxUInt16Item UserDefIndex SID_SORT_USERDEF,SfxUInt16Item Col1 FN_PARAM_1,SfxBoolItem Ascending1 FN_PARAM_2,SfxUInt16Item Col2 FN_PARAM_3,SfxBoolItem Ascending2 FN_PARAM_4,SfxUInt16Item Col3 FN_PARAM_5,SfxBoolItem Ascending3 FN_PARAM_6)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem GetClipboardFormatName SID_GET_CLPBRD_FORMAT_NAME
+(SfxUInt32Item Format SID_GET_CLPBRD_FORMAT_NAME)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item Table SID_RANGE_TABLE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem LastPage SID_PREVIEW_LAST
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Show FID_TABLE_SHOW
+(SfxStringItem aTableName FID_TABLE_SHOW)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem GoRightToEndOfData SID_CURSORBLKRIGHT
+(SfxInt16Item By FN_PARAM_1,SfxBoolItem Sel FN_PARAM_2)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem Selection SID_SC_SELECTION
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem AutoStyle SID_AUTO_STYLE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem AutomaticCalculation FID_AUTO_CALC
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataAreaRefresh SID_REFRESH_DBAREA
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem NoteVisible FID_NOTE_VISIBLE
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertCellsRight FID_INS_CELLSRIGHT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem DataPilotTables SID_PIVOT_GET
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem StatusDocPos SID_STATUS_DOCPOS
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = TRUE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem DataFilterSpecialFilter SID_SPECIAL_FILTER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillModeRemovePredescessor SID_FILL_DEL_PRED
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ShowInvalid SID_DETECTIVE_INVALID
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DATA;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NumberFormatDate SID_NUMBER_DATE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem UpdateTableLinks SID_UPDATETABLINKS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem Formula SID_RANGE_FORMULA
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FocusCellAddress FID_FOCUS_POSWND
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = TRUE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_APPLICATION;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem EuroConverter SID_EURO_CONVERTER
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item Row SID_RANGE_ROW
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ReImportAfterLoad SID_REIMPORT_AFTER_LOAD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetInputMode SID_SETINPUTMODE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem UnderlineNone SID_ULINE_VAL_NONE
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertRows FID_INS_ROW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FillLeft FID_FILL_TO_LEFT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxUInt16Item StatusSelectionModeExp SID_STATUS_SELMODE_ERG
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = TRUE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
+//--------------------------------------------------------------------------
+SfxObjectItem DataPilotCreate SID_PIVOT_CREATE
+(SfxStringItem Destination FN_PARAM_1,SfxStringItem Name FN_PARAM_2,SfxBoolItem TotalCol FN_PARAM_3,SfxBoolItem TotalRow FN_PARAM_4)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_INTERN;
+]
+
diff --git a/sc/sdi/scslots.hrc b/sc/sdi/scslots.hrc
new file mode 100644
index 000000000000..b290f39df6aa
--- /dev/null
+++ b/sc/sdi/scslots.hrc
@@ -0,0 +1,67 @@
+/*************************************************************************
+ *
+ * $RCSfile: scslots.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:52 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include <sfx2/sfx.hrc>
+#include <svx/dialogs.hrc>
+#include <offmgr/sba.hrc>
+#include <basctl/basicide.hrc>
+#include <sfx2/sfxsids.hrc>
+#include <svx/svxids.hrc>
+#include <sc.hrc>
diff --git a/sc/sdi/scslots.sdi b/sc/sdi/scslots.sdi
new file mode 100644
index 000000000000..319235da4d9f
--- /dev/null
+++ b/sc/sdi/scslots.sdi
@@ -0,0 +1,40 @@
+import "ofa.ilb"
+
+module
+"ADC7D7A1-2341-101C-A55A-04021C007002"
+"82528B40-234D-101C-A55A-04021C007002"
+StarCalc
+[
+HelpText( "StarDivision StarCalc" ),
+SlotIdFile( "scslots.hrc" )
+TypeLibFile( "scslots.tlb" )
+ModulePrefix( "Sc" )
+]
+{
+ item double ScDoubleItem;
+ item String SvxBoxInfoItem;
+
+ //----------------------------------------------------------
+ // bei Problemen ggF. "von Hand" includen (=Copy/Paste)
+
+ include "newslots.sdi" // temporaer
+ include "scalc.sdi"
+ include "docsh.sdi"
+ include "tabvwsh.sdi"
+ include "drawsh.sdi"
+ include "editsh.sdi"
+ include "pivotsh.sdi"
+ include "app.sdi"
+ include "drtxtob.sdi"
+ include "prevwsh.sdi"
+ include "auditsh.sdi"
+ include "drformsh.sdi"
+ include "formatsh.sdi"
+ include "cellsh.sdi"
+ include "oleobjsh.sdi"
+ include "chartsh.sdi"
+ include "graphsh.sdi"
+ include "pgbrksh.sdi"
+
+}
+
diff --git a/sc/sdi/tabpopsh.sdi b/sc/sdi/tabpopsh.sdi
new file mode 100644
index 000000000000..7118834b53ef
--- /dev/null
+++ b/sc/sdi/tabpopsh.sdi
@@ -0,0 +1,5 @@
+shell ScTabPopShell
+{
+ // nix drin
+}
+
diff --git a/sc/sdi/tabvwsh.sdi b/sc/sdi/tabvwsh.sdi
new file mode 100644
index 000000000000..908477bb19c2
--- /dev/null
+++ b/sc/sdi/tabvwsh.sdi
@@ -0,0 +1,282 @@
+ //============================================================================
+ //
+ // StarCalc
+ //
+ // (C) 1994 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:44:52 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/sdi/tabvwsh.sdv $ $Workfile: tabvwsh.sdi $
+ //----------------------------------------------------------------------------
+
+
+ // ===========================================================================
+interface TableOLEObject : Selection
+[
+ uuid ( "C04AA960-137B-11D3-B25B-006097DA68F3" )
+]
+{
+ SID_ACTIVE_OBJ_NAME [ StateMethod = GetObjectState; ]
+ SID_OLE_OBJECT [ StateMethod = GetObjectState; ]
+ SID_OLE_ACTIVATE [ ExecMethod = ExecuteObject; ]
+ SID_OLE_DEACTIVATE [ ExecMethod = ExecuteObject; ]
+ SID_OLE_SELECT [ ExecMethod = ExecuteObject; ] // api:
+ SID_OBJECT_LEFT [ ExecMethod = ExecuteObject; StateMethod = GetObjectState; ]
+ SID_OBJECT_TOP [ ExecMethod = ExecuteObject; StateMethod = GetObjectState; ]
+ SID_OBJECT_WIDTH [ ExecMethod = ExecuteObject; StateMethod = GetObjectState; ]
+ SID_OBJECT_HEIGHT [ ExecMethod = ExecuteObject; StateMethod = GetObjectState; ]
+}
+
+ //============================================================================
+interface Tables : Collection
+[
+ uuid = "5692EFC0-355B-11cf-89CB-008029E4B0B1" ;
+]
+{
+ FID_TAB_SELECTALL [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_TAB_MENU_RENAME [ ExecMethod = ExecuteTable; StateMethod = GetStateTable; ]
+ FID_TAB_APPEND [ ExecMethod = ExecuteTable; StateMethod = GetStateTable; ]
+ FID_INS_TABLE [ ExecMethod = ExecuteTable; StateMethod = GetStateTable; ]
+ FID_TABLE_HIDE [ ExecMethod = ExecuteTable; StateMethod = GetStateTable; ]
+ FID_TABLE_SHOW [ ExecMethod = ExecuteTable; StateMethod = GetStateTable; ]
+}
+
+ // ===========================================================================
+interface BaseSelection : Selection
+[
+ uuid = "02ABE040-137B-11D3-B25B-006097DA68F3" ;
+]
+{
+ // Einfuegen von Objekten {
+
+ SID_INSERT_GRAPHIC [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+ SID_INSERT_FRAME [ ExecMethod = ExecDraw; StateMethod = GetDrawState; Export = FALSE; ]
+ SID_INSERT_OBJECT [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+ SID_INSERT_PLUGIN [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+ SID_INSERT_SOUND [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+ SID_INSERT_VIDEO [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+ SID_INSERT_APPLET [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+ SID_INSERT_FLOATINGFRAME [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+
+ SID_IMAP [ ExecMethod = ExecImageMap; StateMethod = GetImageMapState; ]
+ SID_IMAP_EXEC [ ExecMethod = ExecImageMap; StateMethod = GetImageMapState; ]
+
+ SfxVoidItem InsertObjectStarChart SID_INSERT_DIAGRAM
+ (
+ SfxBoolItem ColHeaders SID_ATTR_COLHEADERS,
+ SfxBoolItem RowHeaders SID_ATTR_ROWHEADERS,
+ SfxBoolItem InNewTable FN_PARAM_4,
+ SfxStringItem RangeList FN_PARAM_5
+ )
+ [
+ ExecMethod = ExecDrawIns ;
+ StateMethod = GetDrawInsState ;
+ Cachable , Asynchron ;
+ ]
+
+ SID_PIVOT_CREATE [ ExecMethod = ExecuteSbx; StateMethod = GetSbxState; ]
+ SID_RANGE_OFFSET [ ExecMethod = ExecuteSbx; ]
+ SID_RANGE_REGION [ StateMethod = GetSbxState; ]
+
+
+ SID_INSERT_SIMAGE [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+ SID_INSERT_SMATH [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+ SID_GALLERY_FORMATS [ ExecMethod = ExecGallery; StateMethod = GetGalleryState; ]
+ SID_GALLERY [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+ SID_DRAW_NOTEEDIT [ ExecMethod = ExecDraw; StateMethod = GetDrawState; ]
+ SID_OBJECTRESIZE [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+
+ //SID_CHOOSE_CONTROLS [ ExecMethod = ExecDraw; StateMethod = GetDrawState; ]
+ SID_OBJECT_SELECT [ ExecMethod = ExecDraw; StateMethod = GetDrawState; ]
+ SID_SHOW_HIDDEN [ ExecMethod = ExecDraw; StateMethod = GetDrawState; ] // status()
+ SID_SHOW_FORMS [ ExecMethod = ExecDraw; StateMethod = GetDrawState; ] // status()
+ SID_INSERT_DRAW [ ExecMethod = ExecDraw; StateMethod = GetDrawState; ]
+ SID_FM_CREATE_CONTROL [ ExecMethod = ExecDraw ; ]
+ SID_LINKS [ ExecMethod = ExecDrawIns; StateMethod = GetDrawInsState; ]
+ SID_DRAW_CHART [ ExecMethod = ExecDraw; StateMethod = GetDrawState; ]
+ SID_OPENDLG_MODCHART [ ExecMethod = Execute; StateMethod = NoState; ]
+
+ // } Einfuegen von Objekten
+
+}
+
+interface TableEditView : View
+[
+ uuid ( "16D7E4A0-2FB4-11CF-89CB-008029E4B0B1" )
+]
+{
+ SbxObject SearchSettings
+ [
+ Readonly ;
+ ]
+
+ SbxObject Table
+ [
+ ]
+ SbxObject Range
+ [
+ Export = FALSE ;
+ ]
+
+ FID_TOGGLEINPUTLINE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_DEFINE_PRINTAREA [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_ADD_PRINTAREA [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_ADJUST_PRINTZOOM [ ExecMethod = Execute; StateMethod = GetState; ]
+
+ SID_CURRENTDOC [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_WINDOW_SPLIT [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_WINDOW_FIX [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_SAVEDOC
+ [
+ ExecMethod = ExecuteSave ;
+ StateMethod = GetSaveState ;
+ Export = FALSE ;
+ ]
+ SID_SAVEASDOC
+ [
+ ExecMethod = ExecuteSave ;
+ StateMethod = GetSaveState ;
+ Export = FALSE ;
+ ]
+ // hat zwar ein SW im Namen, wird aber im Calc auch gebraucht
+ SID_CREATE_SW_DRAWVIEW [ ExecMethod = Execute; ]
+ SID_ATTR_ZOOM [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_INSERT_FILE [ ExecMethod = Execute; StateMethod = GetState; ]
+ // Save / SaveAs ueberladen, um die Eingabe abzuschliessen
+
+ FID_SCALE [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_FUNCTION_BOX [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_CHG_SHOW [ ExecMethod = Execute; StateMethod = GetState; ]
+ WID_SIMPLE_REF [ ExecMethod = Execute; StateMethod = NoState; ]
+ FID_CHG_ACCEPT [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_CHG_COMMENT [ ExecMethod = Execute; StateMethod = GetState; ]
+
+ FID_SCALESTATUS [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_TOGGLESYNTAX [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_TOGGLEHEADERS [ ExecMethod = Execute; StateMethod = GetState; ]
+ FID_PAGEBREAKMODE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_REPAINT [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_CURRENTCELL [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_CURRENTOBJECT [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_JUMPTOMARK [ ExecMethod = Execute; StateMethod = NoState; ] // status(final|play)
+
+ SID_PRINTPREVIEW [ ExecMethod = Execute; StateMethod = GetState; ]
+
+
+ // Suchen/Eersetzen:
+ FID_SEARCH_NOW [ ExecMethod = ExecSearch; StateMethod = NoState; ]
+ SID_SEARCH_ITEM [ ExecMethod = ExecSearch; StateMethod = GetState; ]
+ SID_SEARCH_OPTIONS [ ExecMethod = NoExec; StateMethod = GetState; ]
+ // Suchen/Ersetzen von Basic aus:
+ FID_SEARCH [ ExecMethod = ExecSearch; ]
+ FID_REPLACE [ ExecMethod = ExecSearch; ]
+ FID_SEARCH_ALL [ ExecMethod = ExecSearch; ]
+ FID_REPLACE_ALL [ ExecMethod = ExecSearch; ]
+ FID_REPEAT_SEARCH [ ExecMethod = ExecSearch; ]
+
+ SID_CURRENTTAB [ ExecMethod = Execute; StateMethod = GetState; ]
+
+ // view options for drawing layer are needed here because they
+ // can be set without a drawing object selected (#75361#)
+ SID_GRID_VISIBLE [ ExecMethod = ExecDrawOpt; StateMethod = GetDrawOptState; Export = FALSE; ]
+ SID_GRID_USE [ ExecMethod = ExecDrawOpt; StateMethod = GetDrawOptState; Export = FALSE; ]
+ SID_HELPLINES_MOVE [ ExecMethod = ExecDrawOpt; StateMethod = GetDrawOptState; Export = FALSE; ]
+}
+
+
+ //
+ // Pivot-Krempel
+ //
+
+interface DataPilotTables : Collection
+[
+ uuid ( "86DB0400-4EE6-11d1-89CB-008029E4B0B1" )
+]
+{
+}
+
+interface DataPilotTable : Selection
+[
+ uuid ( "E8DBA2C1-4C5E-11d1-89CB-008029E4B0B1" )
+]
+{
+ SbxObject DataPilotFields SID_PIVOT_FIELDS
+ [ HelpText = "" ; ]
+}
+
+interface DataPilotFields : Collection
+[
+ uuid ( "BA09AF20-4C70-11d1-89CB-008029E4B0B1" )
+]
+{
+}
+
+interface DataPilotField : Object
+[
+ uuid ( "D2C2C540-4C8B-11d1-89CB-008029E4B0B1" )
+]
+{
+ String FieldName SID_PFIELD_NAME
+ [ HelpText = "" ; ]
+ UINT16 Orientation SID_PFIELD_ORIENTATION
+ [ HelpText = "" ; ]
+ UINT16 Function SID_PFIELD_FUNCTION
+ [ HelpText = "" ; ]
+}
+
+ // ===========================================================================
+shell ScTabViewShell : SfxViewShell
+{
+ import TableSelection "ActiveDocument.ActiveTable";
+ import TableOLEObject "SelectedObject";
+ import Tables "ActiveDocument.Tables";
+ import BaseSelection;
+ import TableEditView[Automation];
+// import SearchSettings;
+
+
+ SID_STATUS_PAGESTYLE [ ExecMethod = Execute; StateMethod = GetState; ]
+ SID_TBXCTL_INSERT [ ExecMethod = ExecTbx; StateMethod = GetTbxState; ]
+ SID_TBXCTL_INSCELLS [ ExecMethod = ExecTbx; StateMethod = GetTbxState; ]
+ SID_TBXCTL_INSOBJ [ ExecMethod = ExecTbx; StateMethod = GetTbxState; ]
+
+}
+
+/*------------------------------------------------------------------------
+ $Log: not supported by cvs2svn $
+ Revision 1.250 2000/06/21 12:33:27 nn
+ #75361# slots for grid options moved to tabvwsh
+
+ Revision 1.249 2000/05/11 17:01:05 nn
+ slots for old basic api removed2
+
+ Revision 1.248 1999/08/24 14:12:30 ANK
+ #68244# JumpToTable moved
+
+
+ Rev 1.247 24 Aug 1999 16:12:30 ANK
+ #68244# JumpToTable moved
+
+ Rev 1.246 09 Aug 1999 19:07:32 NN
+ sound/video
+
+ Rev 1.245 21 Jun 1999 20:38:22 ANK
+ #66547# Slot's moved
+
+ Rev 1.244 02 Jun 1999 21:42:24 ANK
+ #66547# SubShells
+
+------------------------------------------------------------------------*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/filter/dif/difexp.cxx b/sc/source/filter/dif/difexp.cxx
new file mode 100644
index 000000000000..5b82e2c413ae
--- /dev/null
+++ b/sc/source/filter/dif/difexp.cxx
@@ -0,0 +1,255 @@
+/*************************************************************************
+ *
+ * $RCSfile: difexp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <stdio.h>
+
+#include "dif.hxx"
+#include "filter.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "progress.hxx"
+
+
+FltError ScExportDif( SvStream& rStream, ScDocument* pDoc,
+ const ScAddress& rOutPos, const CharSet eNach, UINT32 nDifOption )
+{
+ UINT16 nEndCol, nEndRow;
+ pDoc->GetTableArea( rOutPos.Tab(), nEndCol, nEndRow );
+ ScAddress aEnd( nEndCol, nEndRow, rOutPos.Tab() );
+ ScAddress aStart( rOutPos );
+
+ aStart.PutInOrder( aEnd );
+
+ return ScExportDif( rStream, pDoc, ScRange( aStart, aEnd ), eNach, nDifOption );
+}
+
+
+FltError ScExportDif( SvStream& rOut, ScDocument* pDoc,
+ const ScRange&rRange, const CharSet eNach, UINT32 nDifOption )
+{
+ DBG_ASSERT( rRange.aStart <= rRange.aEnd, "*ScExportDif(): Range unsortiert!" );
+ DBG_ASSERTWARNING( rRange.aStart.Tab() == rRange.aEnd.Tab(),
+ "ScExportDif(): nur eine Tabelle bidde!" );
+
+ const sal_Char* p2DoubleQuotes_LF = "\"\"\n";
+ const sal_Char* pSpecDataType_LF = "-1,0\n";
+ const sal_Char* pEmptyData = "1,0\n\"\"\n";
+ const sal_Char* pStringData = "1,0\n\"";
+ const sal_Char* pNumData = "0,";
+ const sal_Char* pNumDataERROR = "0,0\nERROR\n";
+
+ FltError eRet = eERR_OK;
+ ByteString aTmp;
+ ByteString aOS;
+ String aUniString;
+ UINT16 nEndCol = rRange.aEnd.Col();
+ UINT16 nEndRow = rRange.aEnd.Row();
+ UINT16 nNumCols = nEndCol - rRange.aStart.Col() + 1;
+ UINT16 nNumRows = nEndRow - rRange.aStart.Row() + 1;
+ UINT16 nTab = rRange.aStart.Tab();
+
+ double fVal;
+ sal_Char* pBuffer = new sal_Char[ 256 ];
+
+ const BOOL bPlain = ( nDifOption == SC_DIFOPT_PLAIN );
+
+ ScProgress aPrgrsBar( NULL, ScGlobal::GetRscString( STR_LOAD_DOC ), nNumRows );
+
+ aPrgrsBar.SetState( 0 );
+
+ // TABLE
+ DBG_ASSERT( pDoc->HasTable( nTab ), "*ScExportDif(): Tabelle nicht vorhanden!" );
+
+ aOS = pKeyTABLE;
+ aOS += "\n0,1\n\"";
+
+ pDoc->GetName( nTab, aUniString );
+ aOS += ByteString( aUniString, eNach );
+ aOS += "\"\n";
+ rOut.Write( aOS.GetBuffer(), aOS.Len() );
+
+ // VECTORS
+ aOS = pKeyVECTORS;
+ aOS += "\n0,";
+ aOS += ByteString::CreateFromInt32( nNumCols );
+ aOS += '\n';
+ aOS += p2DoubleQuotes_LF;
+ rOut.Write( aOS.GetBuffer(), aOS.Len() );
+
+ // TUPLES
+ aOS = pKeyTUPLES;
+ aOS += "\n0,";
+ aOS += ByteString::CreateFromInt32( nNumRows );
+ aOS += '\n';
+ aOS += p2DoubleQuotes_LF;
+ rOut.Write( aOS.GetBuffer(), aOS.Len() );
+
+ // DATA
+ rOut << pKeyDATA << "\n0,0\n" << p2DoubleQuotes_LF;
+
+ UINT16 nColCnt, nRowCnt;
+ ScBaseCell* pAkt;
+ const sal_Char* pOutString;
+
+ for( nRowCnt = rRange.aStart.Row() ; nRowCnt <= nEndRow ; nRowCnt++ )
+ {
+ rOut << pSpecDataType_LF << pKeyBOT << '\n';
+ for( nColCnt = rRange.aStart.Col() ; nColCnt <= nEndCol ; nColCnt++ )
+ {
+ pDoc->GetCell( nColCnt, nRowCnt, nTab, pAkt );
+ if( pAkt )
+ {
+ switch( pAkt->GetCellType() )
+ {
+ case CELLTYPE_NONE:
+ case CELLTYPE_NOTE:
+ pOutString = pEmptyData;
+ break;
+ case CELLTYPE_VALUE:
+ aOS = pNumData;
+ if( bPlain )
+ {
+ fVal = ( ( ScValueCell * ) pAkt )->GetValue();
+ sprintf( pBuffer, "%.14G", fVal );
+ aOS += pBuffer;
+ }
+ else
+ {
+ pDoc->GetInputString( nColCnt, nRowCnt, nTab, aUniString );
+ aOS += ByteString( aUniString, eNach );
+ }
+ aOS += "\nV\n";
+ pOutString = aOS.GetBuffer();
+ break;
+ case CELLTYPE_EDIT:
+ aOS = pStringData;
+ ( ( ScEditCell* ) pAkt )->GetString( aUniString );
+ aOS += ByteString( aUniString, eNach );
+ aOS += "\"\n";
+ pOutString = aOS.GetBuffer();
+ break;
+ case CELLTYPE_STRING:
+ aOS = pStringData;
+ ( ( ScStringCell* ) pAkt )->GetString( aUniString );
+ aOS += ByteString( aUniString, eNach );
+ aOS += "\"\n";
+ pOutString = aOS.GetBuffer();
+ break;
+ case CELLTYPE_FORMULA:
+ if( pAkt->HasValueData() )
+ {
+ aOS = pNumData;
+ if( bPlain )
+ {
+ fVal = ( ( ScFormulaCell * ) pAkt )->GetValue();
+ sprintf( pBuffer, "%.14G", fVal );
+ aOS += pBuffer;
+ }
+ else
+ {
+ pDoc->GetInputString( nColCnt, nRowCnt, nTab, aUniString );
+ aOS += ByteString( aUniString, eNach );
+ }
+ aOS += "\nV\n";
+ pOutString = aOS.GetBuffer();
+ }
+ else if( pAkt->HasStringData() )
+ {
+ aOS = pStringData;
+ ( ( ScFormulaCell * ) pAkt )->GetString( aUniString );
+ aOS += ByteString( aUniString, eNach );
+ aOS += "\"\n";
+ pOutString = aOS.GetBuffer();
+ }
+ else
+ pOutString = pNumDataERROR;
+
+ break;
+ }
+ }
+ else
+ pOutString = pEmptyData;
+
+ rOut << pOutString;
+ }
+ aPrgrsBar.SetState( nRowCnt );
+ }
+
+ rOut << pSpecDataType_LF << pKeyEOD << '\n';
+
+ delete[] pBuffer;
+
+ return eRet;
+}
+
+
+
+
diff --git a/sc/source/filter/dif/difimp.cxx b/sc/source/filter/dif/difimp.cxx
new file mode 100644
index 000000000000..90ea679d3552
--- /dev/null
+++ b/sc/source/filter/dif/difimp.cxx
@@ -0,0 +1,930 @@
+/*************************************************************************
+ *
+ * $RCSfile: difimp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svtools/zforlist.hxx>
+#include <math.h>
+
+#include "dif.hxx"
+#include "filter.hxx"
+#include "fltprgrs.hxx"
+#include "flttools.hxx"
+#include "scerrors.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "patattr.hxx"
+#include "docpool.hxx"
+#include "attrib.hxx"
+
+
+const sal_Char* pKeyTABLE = "TABLE";
+const sal_Char* pKeyVECTORS = "VECTORS";
+const sal_Char* pKeyTUPLES = "TUPLES";
+const sal_Char* pKeyDATA = "DATA";
+const sal_Char* pKeyBOT = "BOT";
+const sal_Char* pKeyEOD = "EOD";
+const sal_Char* pKeyERROR = "ERROR";
+const sal_Char* pKeyTRUE = "TRUE";
+const sal_Char* pKeyFALSE = "FALSE";
+const sal_Char* pKeyNA = "NA";
+
+
+#if __ALIGNMENT4 == 1
+UINT32 DifParser::nBOT = *( ( UINT32* ) pKeyBOT );
+UINT32 DifParser::nEOD = *( ( UINT32* ) pKeyEOD );
+UINT32 DifParser::n1_0 = *( ( UINT32* ) "1,0" );
+#else
+sal_Char DifParser::cBOT_0 = 'B';
+sal_Char DifParser::cBOT_1 = 'O';
+sal_Char DifParser::cBOT_2 = 'T';
+sal_Char DifParser::cBOT_3 = 0x00;
+sal_Char DifParser::cEOD_0 = 'E';
+sal_Char DifParser::cEOD_1 = 'O';
+sal_Char DifParser::cEOD_2 = 'D';
+sal_Char DifParser::cEOD_3 = 0x00;
+sal_Char DifParser::c1_0_0 = '1';
+sal_Char DifParser::c1_0_1 = ',';
+sal_Char DifParser::c1_0_2 = '0';
+sal_Char DifParser::c1_0_3 = 0x00;
+#endif
+
+#if __ALIGNMENT2 == 1
+UINT16 DifParser::nV = *( ( UINT16* ) "V" );
+#else
+sal_Char DifParser::cV_0 = 'V';
+sal_Char DifParser::cV_1 = 0x00;
+#endif
+
+
+
+
+FltError ScImportDif( SvStream& rIn, ScDocument* pDoc, const ScAddress& rInsPos,
+ const CharSet eVon, UINT32 nDifOption )
+{
+ DifParser aDifParser( rIn, nDifOption, *pDoc, eVon );
+ const BOOL bPlain = aDifParser.IsPlain();
+
+ UINT16 nBaseTab = rInsPos.Tab();
+
+ TOPIC eTopic = T_UNKNOWN;
+ BOOL bSyntErrWarn = FALSE;
+ BOOL bOverflowWarn = FALSE;
+
+ ByteString& rData = aDifParser.aData;
+ BOOL bData = FALSE;
+
+ UINT16 nNumCols = 0;
+ UINT16 nNumRows = 0;
+
+ rIn.Seek( 0 );
+
+ FilterProgressBar aPrgrsBar( rIn );
+
+ while( eTopic != T_DATA && eTopic != T_END )
+ {
+ eTopic = aDifParser.GetNextTopic();
+
+ aPrgrsBar.Progress();
+
+ bData = rData.Len() > 0;
+
+ switch( eTopic )
+ {
+ case T_TABLE:
+ {
+ if( aDifParser.nVector != 0 || aDifParser.nVal != 1 )
+ bSyntErrWarn = TRUE;
+ if( bData )
+ pDoc->RenameTab( nBaseTab, String( rData, eVon ) );
+ }
+ break;
+ case T_VECTORS:
+ {
+ if( aDifParser.nVector != 0 )
+ bSyntErrWarn = TRUE;
+ if( aDifParser.nVal > MAXCOL + 1 )
+ nNumCols = 0xFFFF;
+ else
+ nNumCols = ( UINT16 ) aDifParser.nVal;
+ }
+ break;
+ case T_TUPLES:
+ {
+ if( aDifParser.nVector != 0 )
+ bSyntErrWarn = TRUE;
+ if( aDifParser.nVal > MAXROW + 1 )
+ nNumRows = 0xFFFF;
+ else
+ nNumRows = ( UINT16 ) aDifParser.nVal;
+ }
+ break;
+ case T_DATA:
+ {
+ if( aDifParser.nVector != 0 || aDifParser.nVal != 0 )
+ bSyntErrWarn = TRUE;
+ }
+ break;
+ case T_LABEL:
+ case T_COMMENT:
+ case T_SIZE:
+ case T_PERIODICITY:
+ case T_MAJORSTART:
+ case T_MINORSTART:
+ case T_TRUELENGTH:
+ case T_UINITS:
+ case T_DISPLAYUNITS:
+ case T_END:
+ case T_UNKNOWN:
+ break;
+#ifdef DBG_UTIL
+ default:
+ DBG_ERROR( "*ScImportDif(): enum vergessen!" );
+#endif
+ }
+
+ }
+
+
+ if( eTopic == T_DATA )
+ { // Ab hier kommen die Daten
+ UINT16 nBaseCol = rInsPos.Col();
+
+ UINT16 nColCnt = 0xFFFF;
+ UINT16 nRowCnt = rInsPos.Row();
+ UINT32 nHandleLogic = 0xFFFFFFFF;
+ DifAttrCache aAttrCache( bPlain );
+
+ DATASET eAkt = D_UNKNOWN;
+
+ while( eAkt != D_EOD )
+ {
+ eAkt = aDifParser.GetNextDataset();
+
+ aPrgrsBar.Progress();
+
+ switch( eAkt )
+ {
+ case D_BOT:
+ if( nColCnt < 0xFFFF )
+ nRowCnt++;
+ nColCnt = nBaseCol;
+ break;
+ case D_EOD:
+ break;
+ case D_NUMERIC: // Numbercell
+ if( nColCnt == 0xFFFF )
+ nColCnt = nBaseCol;
+
+ if( nColCnt <= MAXCOL && nRowCnt <= MAXROW )
+ {
+ ScBaseCell* pCell;
+ if( DifParser::IsV( rData.GetBuffer() ) )
+ {
+ pCell = new ScValueCell( aDifParser.fVal );
+ if( !bPlain )
+ aAttrCache.SetNumFormat( nColCnt, nRowCnt,
+ aDifParser.nNumFormat );
+ }
+ else if( rData == pKeyTRUE || rData == pKeyFALSE )
+ {
+ pCell = new ScValueCell( aDifParser.fVal );
+ if( bPlain )
+ aAttrCache.SetLogical( nColCnt, nRowCnt );
+ else
+ aAttrCache.SetNumFormat( nColCnt, nRowCnt,
+ aDifParser.nNumFormat );
+ }
+ else if( rData == pKeyNA || rData == pKeyERROR )
+ pCell = new ScStringCell( String( rData, eVon ) );
+ else
+ {
+ ByteString aTmp( "#IND: " );
+ aTmp += rData;
+ aTmp += '?';
+ pCell = new ScStringCell( String( aTmp, eVon ) );
+ }
+
+ pDoc->PutCell( nColCnt, nRowCnt, nBaseTab, pCell, ( BOOL ) TRUE );
+ }
+ else
+ bOverflowWarn = TRUE;
+
+ nColCnt++;
+ break;
+ case D_STRING: // Textcell
+ if( nColCnt == 0xFFFF )
+ nColCnt = nBaseCol;
+
+ if( nColCnt <= MAXCOL && nRowCnt <= MAXROW )
+ {
+ if( rData.Len() > 0 )
+ {
+ pDoc->PutCell( nColCnt, nRowCnt, nBaseTab,
+ ScBaseCell::CreateTextCell( String( rData, eVon ), pDoc ), ( BOOL ) TRUE );
+ }
+ }
+ else
+ bOverflowWarn = TRUE;
+
+ nColCnt++;
+ break;
+ case D_UNKNOWN:
+ break;
+ case D_SYNT_ERROR:
+ break;
+#ifdef DBG_UTIL
+ default:
+ DBG_ERROR( "*ScImportDif(): enum vergessen!" );
+#endif
+ }
+ }
+
+ aAttrCache.Apply( *pDoc, nBaseTab );
+ }
+ else
+ return eERR_FORMAT;
+
+ if( bSyntErrWarn )
+ //###############################################
+ // ACHTUNG: Hier fehlt noch die richtige Warnung!
+ return eERR_RNGOVRFLW;
+ //###############################################
+ else if( bOverflowWarn )
+ return eERR_RNGOVRFLW;
+ else
+ return eERR_OK;
+}
+
+
+DifParser::DifParser( SvStream& rNewIn, const UINT32 nOption, ScDocument& rDoc, CharSet e ) :
+ rIn( rNewIn )
+{
+ eCharSet = e;
+ bPlain = ( nOption == SC_DIFOPT_PLAIN );
+
+ if( bPlain )
+ pNumFormatter = NULL;
+ else
+ pNumFormatter = rDoc.GetFormatTable();
+}
+
+
+TOPIC DifParser::GetNextTopic( void )
+{
+ enum STATE { S_VectorVal, S_Data, S_END, S_START, S_UNKNOWN, S_ERROR_L2 };
+
+ static const sal_Char* ppKeys[] =
+ {
+ pKeyTABLE, // 0
+ pKeyVECTORS,
+ pKeyTUPLES,
+ pKeyDATA,
+ "LABEL",
+ "COMMENT", // 5
+ "SIZE",
+ "PERIODICITY",
+ "MAJORSTART",
+ "MINORSTART",
+ "TRUELENGTH", // 10
+ "UINITS",
+ "DISPLAYUNITS",
+ "" // 13
+ };
+
+ static const TOPIC pTopics[] =
+ {
+ T_TABLE, // 0
+ T_VECTORS,
+ T_TUPLES,
+ T_DATA,
+ T_LABEL,
+ T_COMMENT, // 5
+ T_SIZE,
+ T_PERIODICITY,
+ T_MAJORSTART,
+ T_MINORSTART,
+ T_TRUELENGTH, // 10
+ T_UINITS,
+ T_DISPLAYUNITS,
+ T_UNKNOWN // 13
+ };
+
+ STATE eS = S_START;
+ BOOL bValOverflow = FALSE;
+ ByteString aLine;
+
+ nVector = 0;
+ nVal = 0;
+ TOPIC eRet = T_UNKNOWN;
+
+ while( eS != S_END )
+ {
+ if( !rIn.ReadLine( aLine ) )
+ {
+ eS = S_END;
+ eRet = T_END;
+ }
+
+ switch( eS )
+ {
+ case S_START:
+ {
+ const sal_Char* pRef;
+ UINT16 nCnt = 0;
+ BOOL bSearch = TRUE;
+
+ pRef = ppKeys[ nCnt ];
+
+ while( bSearch )
+ {
+ if( aLine == pRef )
+ {
+ eRet = pTopics[ nCnt ];
+ bSearch = FALSE;
+ }
+ else
+ {
+ nCnt++;
+ pRef = ppKeys[ nCnt ];
+ if( !*pRef )
+ bSearch = FALSE;
+ }
+ }
+
+ if( *pRef )
+ eS = S_VectorVal;
+ else
+ eS = S_UNKNOWN;
+ }
+ break;
+ case S_VectorVal:
+ {
+ const sal_Char* pCur = aLine.GetBuffer();
+
+ pCur = ScanIntVal( pCur, nVector );
+
+ if( *pCur == ',' )
+ {
+ pCur++;
+ ScanIntVal( pCur, nVal );
+ eS = S_Data;
+ }
+ else
+ eS = S_ERROR_L2;
+ }
+ break;
+ case S_Data:
+ DBG_ASSERT( aLine.Len() >= 2,
+ "+GetNextTopic(): <String> ist zu kurz!" );
+ if( aLine.Len() > 2 )
+ aData = aLine.Copy( 1, aLine.Len() - 2 );
+ else
+ aData.Erase();
+ eS = S_END;
+ break;
+#ifdef DBG_UTIL
+ case S_END:
+ DBG_ERROR( "+GetNextTopic(): Ende? Gibt's hier nicht!" );
+ break;
+#endif
+ case S_UNKNOWN:
+ // 2 Zeilen ueberlesen
+ rIn.ReadLine( aLine );
+ case S_ERROR_L2: // Fehler in Line 2 aufgetreten
+ // eine Zeile ueberlesen
+ rIn.ReadLine( aLine );
+ eS = S_END;
+ break;
+#ifdef DBG_UTIL
+ default:
+ DBG_ERROR( "*GetNextTopic((): enum vergessen!" );
+#endif
+ }
+ }
+
+ return eRet;
+}
+
+
+DATASET DifParser::GetNextDataset( void )
+{
+ DATASET eRet = D_UNKNOWN;
+ ByteString aLine;
+ const sal_Char* pAkt;
+
+ rIn.ReadLine( aLine );
+
+ pAkt = aLine.GetBuffer();
+
+ switch( *pAkt )
+ {
+ case '-': // Special Datatype
+ pAkt++;
+
+ if( Is1_0( pAkt ) )
+ {
+ rIn.ReadLine( aLine );
+ if( IsBOT( aLine.GetBuffer() ) )
+ eRet = D_BOT;
+ else if( IsEOD( aLine.GetBuffer() ) )
+ eRet = D_EOD;
+ }
+ break;
+ case '0': // Numeric Data
+ pAkt++; // Wert in fVal, 2. Zeile in aData
+ if( *pAkt == ',' )
+ {
+ pAkt++;
+ if( bPlain )
+ {
+ if( ScanFloatVal( pAkt ) )
+ {
+ rIn.ReadLine( aData );
+ eRet = D_NUMERIC;
+ }
+ else
+ eRet = D_SYNT_ERROR;
+ }
+ else
+ { // ...und zur Strafe mit'm Numberformatter...
+ DBG_ASSERT( pNumFormatter, "-DifParser::GetNextDataset(): No Formatter, more fun!" );
+ String aTestVal( pAkt, eCharSet );
+ ULONG nFormat = 0;
+ double fTmpVal;
+ if( pNumFormatter->IsNumberFormat( aTestVal, nFormat, fTmpVal ) )
+ {
+ rIn.ReadLine( aData );
+ fVal = fTmpVal;
+ nNumFormat = nFormat;
+ eRet = D_NUMERIC;
+ }
+ else
+ eRet = D_SYNT_ERROR;
+ }
+ }
+ break;
+ case '1': // String Data
+ if( Is1_0( aLine.GetBuffer() ) )
+ {
+ rIn.ReadLine( aLine );
+ DBG_ASSERT( aLine.Len() >= 2,
+ "*DifParser::GetNextTopic(): Text ist zu kurz (mind. \"\")!" );
+ aData = aLine.Copy( 1, aLine.Len() - 2 );
+ eRet = D_STRING;
+ }
+ break;
+ }
+
+ if( eRet == D_UNKNOWN )
+ rIn.ReadLine( aLine );
+
+ if( rIn.IsEof() )
+ eRet = D_EOD;
+
+ return eRet;
+}
+
+
+const sal_Char* DifParser::ScanIntVal( const sal_Char* pStart, UINT32& rRet )
+{
+ sal_Char cAkt = *pStart;
+
+ if( IsNumber( cAkt ) )
+ rRet = ( UINT32 ) ( cAkt - '0' );
+ else
+ return NULL;
+
+ pStart++;
+ cAkt = *pStart;
+
+ while( IsNumber( cAkt ) && rRet < ( 0xFFFFFFFF / 10 ) )
+ {
+ rRet *= 10;
+ rRet += ( UINT32 ) ( cAkt - '0' );
+
+ pStart++;
+ cAkt = *pStart;
+ }
+
+ return pStart;
+}
+
+
+BOOL DifParser::ScanFloatVal( const sal_Char* pStart )
+ {
+ double fNewVal = 0.0;
+ BOOL bNeg = FALSE;
+ double fFracPos;
+ INT32 nExp = 0;
+ BOOL bExpNeg = FALSE;
+ BOOL bExpOverflow = FALSE;
+ static const UINT16 nExpLimit = 4096; // ACHTUNG: muss genauer ermittelt werden!
+
+ sal_Char cAkt;
+ BOOL bRet = FALSE;
+
+ enum STATE { S_FIRST, S_PRE, S_POST, S_EXP_FIRST, S_EXP, S_END, S_FINDEND };
+
+ STATE eS = S_FIRST;
+
+ fNewVal = 0.0;
+
+ while( eS != S_END )
+ {
+ cAkt = *pStart;
+ switch( eS )
+ {
+ case S_FIRST:
+ if( IsNumber( cAkt ) )
+ {
+ fNewVal *= 10;
+ fNewVal += cAkt - '0';
+ eS = S_PRE;
+ }
+ else
+ {
+ switch( cAkt )
+ {
+ case ' ':
+ case '\t':
+ case '+':
+ break;
+ case '-':
+ bNeg = !bNeg;
+ break;
+ case '.':
+ case ',': //!
+ eS = S_POST;
+ fFracPos = 0.1;
+ break;
+ default:
+ eS = S_END;
+ }
+ }
+ break;
+ case S_PRE:
+ if( IsNumber( cAkt ) )
+ {
+ fNewVal *= 10;
+ fNewVal += cAkt - '0';
+ }
+ else
+ {
+ switch( cAkt )
+ {
+ case '.':
+ case ',': //!
+ eS = S_POST;
+ fFracPos = 0.1;
+ break;
+ case 'e':
+ case 'E':
+ eS = S_EXP;
+ break;
+ case 0x00: // IsNumberEnding( cAkt )
+ bRet = TRUE; // no
+ default: // break!
+ eS = S_END;
+ }
+ }
+ break;
+ case S_POST:
+ if( IsNumber( cAkt ) )
+ {
+ fNewVal += fFracPos * ( cAkt - '0' );
+ fFracPos /= 10.0;
+ }
+ else
+ {
+ switch( cAkt )
+ {
+ case 'e':
+ case 'E':
+ eS = S_EXP_FIRST;
+ break;
+ case 0x00: // IsNumberEnding( cAkt )
+ bRet = TRUE; // no
+ default: // break!
+ eS = S_END;
+ }
+ }
+ break;
+ case S_EXP_FIRST:
+ if( IsNumber( cAkt ) )
+ {
+ if( nExp < nExpLimit )
+ {
+ nExp *= 10;
+ nExp += ( UINT16 ) ( cAkt - '0' );
+ }
+ eS = S_EXP;
+ }
+ else
+ {
+ switch( cAkt )
+ {
+ case '+':
+ break;
+ case '-':
+ bExpNeg = !bExpNeg;
+ break;
+ default:
+ eS = S_END;
+ }
+ }
+ break;
+ case S_EXP:
+ if( IsNumber( cAkt ) )
+ {
+ if( nExp < ( 0xFFFF / 10 ) )
+ {
+ nExp *= 10;
+ nExp += ( UINT16 ) ( cAkt - '0' );
+ }
+ else
+ {
+ bExpOverflow = TRUE;
+ eS = S_FINDEND;
+ }
+ }
+ else
+ {
+ bRet = IsNumberEnding( cAkt );
+ eS = S_END;
+ }
+ break;
+ case S_FINDEND:
+ if( IsNumberEnding( cAkt ) )
+ {
+ bRet = TRUE; // damit sinnvoll weitergeparst werden kann
+ eS = S_END;
+ }
+ break;
+#ifdef DBG_UTIL
+ case S_END:
+ DBG_ERROR( "*ScanVal(): S_END erreicht!" );
+ break;
+ default:
+ DBG_ERROR( "*ScanVal(): State vergessen!" );
+#endif
+ }
+ pStart++;
+ }
+
+ if( bRet )
+ {
+ if( bExpOverflow )
+ return NULL; // ACHTUNG: hier muss noch differenziert werden
+
+ if( bNeg )
+ fNewVal *= 1.0;
+
+ if( bExpNeg )
+ nExp *= -1;
+
+ if( nExp != 0 )
+ fNewVal *= pow( 10.0, ( double ) nExp );
+ fVal = fNewVal;
+ }
+
+ return bRet;
+}
+
+
+DifColumn::~DifColumn( void )
+{
+ ENTRY* pAkt = ( ENTRY* ) List::First();
+
+ while( pAkt )
+ {
+ delete pAkt;
+ pAkt = ( ENTRY* ) List::Next();
+ }
+}
+
+
+void DifColumn::SetLogical( UINT16 nRow )
+{
+ DBG_ASSERT( nRow <= MAXROW, "*DifColumn::SetLogical(): Row zu gross!" );
+
+ if( pAkt )
+ {
+ DBG_ASSERT( nRow > 0, "*DifColumn::SetLogical(): weitere koennen nicht 0 sein!" );
+ nRow--;
+ if( pAkt->nEnd == nRow )
+ pAkt->nEnd++;
+ else
+ pAkt = NULL;
+ }
+ else
+ {
+ pAkt = new ENTRY;
+ pAkt->nStart = pAkt->nEnd = nRow;
+ List::Insert( pAkt, LIST_APPEND );
+ }
+}
+
+
+void DifColumn::SetNumFormat( UINT16 nRow, const UINT32 nNumFormat )
+{
+ DBG_ASSERT( nRow <= MAXROW, "*DifColumn::SetNumFormat(): Row zu gross!" );
+
+ if( nNumFormat > 0 )
+ {
+ if( pAkt )
+ {
+ DBG_ASSERT( nRow > 0,
+ "*DifColumn::SetNumFormat(): weitere koennen nicht 0 sein!" );
+ DBG_ASSERT( nRow > pAkt->nEnd,
+ "*DifColumn::SetNumFormat(): Noch 'mal von vorne?" );
+
+ if( pAkt->nNumFormat == nNumFormat && pAkt->nEnd == nRow - 1 )
+ pAkt->nEnd = nRow;
+ else
+ NewEntry( nRow, nNumFormat );
+ }
+ else
+ NewEntry( nRow, nNumFormat );
+ }
+ else
+ pAkt = NULL;
+}
+
+
+void DifColumn::NewEntry( const UINT16 nPos, const UINT32 nNumFormat )
+{
+ pAkt = new ENTRY;
+ pAkt->nStart = pAkt->nEnd = nPos;
+ pAkt->nNumFormat = nNumFormat;
+ List::Insert( pAkt, LIST_APPEND );
+}
+
+
+void DifColumn::Apply( ScDocument& rDoc, const UINT16 nCol, const UINT16 nTab, const ScPatternAttr& rPattAttr )
+{
+ ENTRY* pAkt = ( ENTRY* ) List::First();
+
+ while( pAkt )
+ {
+ rDoc.ApplyPatternAreaTab( nCol, pAkt->nStart, nCol, pAkt->nEnd,
+ nTab, rPattAttr );
+ pAkt = ( ENTRY* ) List::Next();
+ }
+}
+
+
+void DifColumn::Apply( ScDocument& rDoc, const UINT16 nCol, const UINT16 nTab )
+{
+ ScPatternAttr aAttr( rDoc.GetPool() );
+ SfxItemSet& rItemSet = aAttr.GetItemSet();
+
+ ENTRY* pAkt = ( ENTRY* ) List::First();
+
+ while( pAkt )
+ {
+ DBG_ASSERT( pAkt->nNumFormat > 0,
+ "+DifColumn::Apply(): Numberformat darf hier nicht 0 sein!" );
+ rItemSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, pAkt->nNumFormat ) );
+
+ rDoc.ApplyPatternAreaTab( nCol, pAkt->nStart, nCol, pAkt->nEnd, nTab, aAttr );
+
+ rItemSet.ClearItem();
+
+ pAkt = ( ENTRY* ) List::Next();
+ }
+}
+
+
+DifAttrCache::DifAttrCache( const BOOL bNewPlain )
+{
+ bPlain = bNewPlain;
+ ppCols = new DifColumn *[ MAXCOL + 1 ];
+ for( UINT16 nCnt = 0 ; nCnt <= MAXCOL ; nCnt++ )
+ ppCols[ nCnt ] = NULL;
+}
+
+
+DifAttrCache::~DifAttrCache()
+{
+ for( UINT16 nCnt = 0 ; nCnt <= MAXCOL ; nCnt++ )
+ {
+ if( ppCols[ nCnt ] )
+ delete ppCols[ nCnt ];
+ }
+}
+
+
+void DifAttrCache::SetNumFormat( const UINT16 nCol, const UINT16 nRow, const UINT32 nNumFormat )
+{
+ DBG_ASSERT( nCol <= MAXCOL, "-DifAttrCache::SetNumFormat(): Col zu gross!" );
+ DBG_ASSERT( !bPlain, "*DifAttrCache::SetNumFormat(): sollte nicht Plain sein!" );
+
+ if( !ppCols[ nCol ] )
+ ppCols[ nCol ] = new DifColumn;
+
+ ppCols[ nCol ]->SetNumFormat( nRow, nNumFormat );
+}
+
+
+void DifAttrCache::Apply( ScDocument& rDoc, UINT16 nTab )
+{
+ if( bPlain )
+ {
+ ScPatternAttr* pPatt = NULL;
+
+ for( UINT16 nCol = 0 ; nCol <= MAXCOL ; nCol++ )
+ {
+ if( ppCols[ nCol ] )
+ {
+ if( !pPatt )
+ {
+ pPatt = new ScPatternAttr( rDoc.GetPool() );
+ pPatt->GetItemSet().Put( SfxUInt32Item( ATTR_VALUE_FORMAT,
+ rDoc.GetFormatTable()->GetStandardFormat( NUMBERFORMAT_LOGICAL ) ) );
+ }
+
+ ppCols[ nCol ]->Apply( rDoc, nCol, nTab, *pPatt );
+ }
+ }
+
+ if( pPatt )
+ delete pPatt;
+ }
+ else
+ {
+ for( UINT16 nCol = 0 ; nCol <= MAXCOL ; nCol++ )
+ {
+ if( ppCols[ nCol ] )
+ ppCols[ nCol ]->Apply( rDoc, nCol, nTab );
+ }
+ }
+}
+
+
+
diff --git a/sc/source/filter/dif/makefile.mk b/sc/source/filter/dif/makefile.mk
new file mode 100644
index 000000000000..d9d935394f7e
--- /dev/null
+++ b/sc/source/filter/dif/makefile.mk
@@ -0,0 +1,95 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=dif
+
+AUTOSEG=true
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\pch\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ difimp.cxx \
+ difexp.cxx
+
+
+SLOFILES = \
+ $(SLO)$/difimp.obj \
+ $(SLO)$/difexp.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/filter/excel/biffdump.cxx b/sc/source/filter/excel/biffdump.cxx
new file mode 100644
index 000000000000..b57b09df21c7
--- /dev/null
+++ b/sc/source/filter/excel/biffdump.cxx
@@ -0,0 +1,6347 @@
+/*************************************************************************
+ *
+ * $RCSfile: biffdump.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#include "biffdump.hxx"
+
+
+#ifdef DEBUGGING
+
+#include <tools/stream.hxx>
+#include <sfx2/inimgr.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/objsh.hxx>
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <document.hxx>
+
+#include "flttools.hxx"
+#include "fltprgrs.hxx"
+
+#include "imp_op.hxx"
+
+#ifndef SC_SCGLOB_HXX
+#include <global.hxx>
+#endif
+
+
+#define GETSTR(s) ByteString( s, RTL_TEXTENCODING_MS_1252 )
+
+static ByteString aDefaultName;
+
+static const sal_Char* __pHexPrefix = "0x";
+static const sal_Char* __pBinPrefix = "0b";
+static const sal_Char* pU = "UNKNOWN ";
+static const sal_Char* pRefSep = "/";
+
+
+const sal_Char* Biff8RecDumper::pLevelPreString = " ";
+const sal_Char* Biff8RecDumper::pLevelPreStringNT = pLevelPreString + strlen( pLevelPreString );
+UINT32 Biff8RecDumper::nInstances = 0;
+sal_Char* Biff8RecDumper::pBlankLine = NULL;
+const UINT16 Biff8RecDumper::nLenBlankLine = 255;
+const UINT16 Biff8RecDumper::nRecCnt = 0x2000;
+UINT8* Biff8RecDumper::pCharType = NULL;
+UINT8* Biff8RecDumper::pCharVal = NULL;
+
+static const UINT16 nLevelInc = 1;
+
+
+static UINT16 nXFCount = 0;
+
+static UINT16 nSXLISize[2] = {0, 0}; // array size for SXLI records [rows/cols]
+static UINT16 nSXLIIndex = 0; // current index for SXLI records
+
+Biff8RecDumper __aDummyBiff8RecDumperInstance();
+
+
+static void __AddHexNibble( ByteString& r, UINT8 nVal )
+{
+ const sal_Char pH[] = "0123456789ABCDEF";
+
+ nVal &= 0x0F;
+
+ r += pH[ nVal ];
+}
+
+
+static void __AddPureHex( ByteString& r, UINT8 nVal )
+{
+ __AddHexNibble( r, nVal >> 4 );
+ __AddHexNibble( r, nVal );
+}
+
+
+static void __AddHex( ByteString& r, UINT8 nVal )
+{
+ r += __pHexPrefix;
+ __AddHexNibble( r, nVal >> 4 );
+ __AddHexNibble( r, nVal );
+}
+
+
+static void __AddPureHex( ByteString& r, UINT16 nVal )
+{
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 12 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 8 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 4 ) );
+ __AddHexNibble( r, ( UINT8 ) nVal );
+}
+
+
+static void __AddHex( ByteString& r, UINT16 nVal )
+{
+ r += __pHexPrefix;
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 12 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 8 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 4 ) );
+ __AddHexNibble( r, ( UINT8 ) nVal );
+}
+
+
+static void __AddPureHex( ByteString& r, UINT32 nVal )
+{
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 28 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 24 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 20 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 16 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 12 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 8 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 4 ) );
+ __AddHexNibble( r, ( UINT8 ) nVal );
+}
+
+
+static void __AddHex( ByteString& r, UINT32 nVal )
+{
+ r += __pHexPrefix;
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 28 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 24 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 20 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 16 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 12 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 8 ) );
+ __AddHexNibble( r, ( UINT8 ) ( nVal >> 4 ) );
+ __AddHexNibble( r, ( UINT8 ) nVal );
+}
+
+
+static void __AddHex( ByteString& r, INT32 nVal )
+{
+ __AddHex( r, (UINT32) nVal );
+}
+
+
+static void __AddPureBinNibble( ByteString& r, UINT8 nVal )
+{
+ nVal <<= 4;
+ for( int n = 4 ; n ; n-- )
+ {
+ r += ( nVal & 0x80 )? "1" : "0";
+ nVal <<= 1;
+ }
+}
+
+
+static void __AddPureBin( ByteString& r, UINT8 nVal )
+{
+ __AddPureBinNibble( r, nVal >> 4 );
+ r += " ";
+ __AddPureBinNibble( r, nVal );
+}
+
+
+static void __AddPureBin( ByteString& r, UINT16 nVal )
+{
+ const sal_Char* pIn = " ";
+ __AddPureBin( r, ( UINT8 ) ( nVal >> 8 ) );
+ r += pIn;
+ __AddPureBin( r, ( UINT8 ) nVal );
+}
+
+
+static void __AddPureBin( ByteString& r, UINT32 nVal )
+{
+ const sal_Char* pIn = " ";
+ __AddPureBin( r, ( UINT8 ) ( nVal >> 24 ) );
+ r += pIn;
+ __AddPureBin( r, ( UINT8 ) ( nVal >> 16 ) );
+ r += pIn;
+ __AddPureBin( r, ( UINT8 ) ( nVal >> 8 ) );
+ r += pIn;
+ __AddPureBin( r, ( UINT8 ) nVal );
+}
+
+
+inline static void __AddDec( ByteString& r, UINT32 n )
+{
+ sal_Char p[ 32 ];
+ ultoa( n, p, 10 );
+
+ r += p;
+}
+
+
+inline static void __AddDec( ByteString& r, UINT16 n )
+{
+ __AddDec( r, ( UINT32 ) n );
+}
+
+
+inline static void __AddDec( ByteString& r, UINT8 n )
+{
+ __AddDec( r, ( UINT32 ) n );
+}
+
+
+inline static void __AddDec( ByteString& r, INT32 n )
+{
+ sal_Char p[ 32 ];
+ ltoa( n, p, 10 );
+
+ r += p;
+}
+
+
+inline static void __AddDec( ByteString& r, INT16 n )
+{
+ __AddDec( r, ( INT32 ) n );
+}
+
+
+static void __AddDec( ByteString& r, UINT32 nVal, UINT16 nNumOfDig, sal_Char c = ' ' )
+{
+ ByteString t;
+ ByteString aVal;
+ __AddDec( aVal, nVal );
+ INT32 n = nNumOfDig - (INT32) aVal.Len();
+ if( n > 0 )
+ t.Fill( n, c );
+ r += t;
+ r += aVal;
+}
+
+
+inline static void __AddDec1616( ByteString& r, UINT32 n )
+{
+ __AddDec( r, (UINT16)(n >> 16) );
+ r += '.';
+ __AddDec( r, (UINT16)(n & 0xFFFF) );
+}
+
+
+static void __AddDouble( ByteString& r, const double f )
+{
+ sal_Char p[ 256 ];
+ sprintf( p, "%.15G", f );
+ r += p;
+}
+
+
+inline static void __Add16p16( ByteString& r, UINT32 n )
+{
+ __AddDouble( r, double(n) / 65536.0 );
+}
+
+
+static void __AddRef( ByteString& r, const UINT16 nC, const UINT16 nR )
+{
+ ScTripel aRef( nC, nR, 0 );
+ r += GETSTR( aRef.GetColRowString() );
+}
+
+
+static void __AddCellHead( ByteString& r, const UINT16 nC, const UINT16 nR, const UINT16 nXF )
+{
+ __AddRef( r, (UINT8) nC, nR );
+ r += " (XF=";
+ __AddDec( r, nXF );
+ r += ')';
+}
+
+
+static UINT8 Read1( SvStream& r )
+{
+ UINT8 n;
+ r >> n;
+ return n;
+}
+
+
+static UINT16 Read2( SvStream& r )
+{
+ UINT16 n;
+ r >> n;
+ return n;
+}
+
+
+static UINT32 Read4( SvStream& r )
+{
+ UINT32 n;
+ r >> n;
+ return n;
+}
+
+
+static double Read8( SvStream& r )
+{
+ double f;
+ r >> f;
+ return f;
+}
+
+
+
+
+IdRangeList::~IdRangeList()
+{
+ Clear();
+}
+
+
+void IdRangeList::Clear( void )
+{
+ IdRange* p = ( IdRange* ) First();
+
+ while( p )
+ {
+ delete p;
+ p = ( IdRange* ) Next();
+ }
+
+ List::Clear();
+}
+
+
+
+
+void Biff8RecDumper::Print( const ByteString& r )
+{
+ DBG_ASSERT( pDumpStream, "-Biff8RecDumper::Print(): Stream is wech!" );
+ *pDumpStream << '\n' << pLevelPre;
+ pDumpStream->Write( r.GetBuffer(), r.Len() );
+}
+
+
+void Biff8RecDumper::Print( const sal_Char* p )
+{
+ DBG_ASSERT( pDumpStream, "-Biff8RecDumper::Print(): Stream is wech!" );
+ DBG_ASSERT( p, "-Biff8RecDumper::Print(): ByteString is wech!" );
+
+ *pDumpStream << '\n' << pLevelPre << p;
+}
+
+
+static const sal_Char* GetSeriesType( const UINT16 n )
+{
+ const sal_Char* p;
+
+ switch( n )
+ {
+ case 0: p = "date"; break;
+ case 1: p = "numeric"; break;
+ case 2: p = "sequence"; break;
+ case 3: p = "text"; break;
+ default: p = pU;
+ }
+
+ return p;
+}
+
+
+static const sal_Char* GetLineType( const UINT16 n )
+{
+ const sal_Char* p;
+
+ switch( n )
+ {
+ case 0: p = "solid"; break;
+ case 1: p = "dash"; break;
+ case 2: p = "dot"; break;
+ case 3: p = "dash-dot"; break;
+ case 4: p = "dash-dot-dot"; break;
+ case 5: p = "none"; break;
+ case 6: p = "dark gray pattern"; break;
+ case 7: p = "medium gray pattern"; break;
+ case 8: p = "light gray pattern"; break;
+ default: p = pU;
+ }
+
+ return p;
+}
+
+
+static ByteString GetRGB( const UINT32 n )
+{
+ ByteString s;
+
+ s += "R";
+ __AddDec( s, ( UINT8 ) n );
+ s += " G";
+ __AddDec( s, ( UINT8 ) ( n >> 8 ) );
+ s += " B";
+ __AddDec( s, ( UINT8 ) ( n >> 16 ) );
+
+ return s;
+}
+
+
+void AddRef( ByteString&, UINT16, UINT16, const BOOL, const UINT16 nTab = 0xFFFF );
+
+static void AddRef( ByteString& t, UINT16 nRow, UINT16 nC, const BOOL bName, const UINT16 nTab )
+{
+ const BOOL bColRel = ( nC & 0x4000 ) != 0;
+ const BOOL bRowRel = ( nC & 0x8000 ) != 0;
+ const UINT8 nCol = ( UINT8 ) nC;
+
+ if( bName )
+ {
+ // C O L
+ if( bColRel )
+ {// rel Col
+ INT16 n = ( INT8 ) nCol;
+ if( n > 0 )
+ t += "+";
+ __AddDec( t, n );
+ }
+ else
+ // abs Col
+ __AddDec( t, nCol );
+
+ t += pRefSep;
+
+ // R O W
+ if( bRowRel )
+ {// rel Row
+ INT16 n = ( INT16 ) nRow;
+ if( n > 0 )
+ t += "+";
+ __AddDec( t, n );
+ }
+ else
+ // abs Row
+ __AddDec( t, nRow );
+ }
+ else
+ {
+ // C O L
+ __AddDec( t, nCol );
+
+ t += pRefSep;
+ // R O W
+ __AddDec( t, nRow );
+ }
+
+ if( nTab < 0xFFFF )
+ {
+ t += pRefSep;
+ __AddDec( t, nTab );
+ }
+}
+
+
+
+
+/*static void AddAddress( ByteString& t, UINT16 nR, UINT16 nC )
+{
+ t += nC;
+ t += "/";
+ t += nR;
+ t += " ";
+ ScTripel aTripel( nC, nR, 0 );
+ t += aTripel.GetColRowString();
+}
+*/
+
+static void AddString( ByteString& t, SvStream& r, INT32& rLeft, const UINT16 nLen )
+{
+ if( nLen )
+ {
+ UINT16 n = nLen;
+ UINT8 c;
+ while( n )
+ {
+ c = Read1( r );
+ if( c < ' ' )
+ {
+ t += '<';
+ __AddHex( t, c );
+ t += '>';
+ }
+ else
+ t += ( sal_Char ) c;
+ n--;
+ }
+ rLeft -= nLen;
+ }
+}
+
+
+static BOOL AddUNICODEString( ByteString& t, SvStream& r, INT32& rLeft, const BOOL b = TRUE, UINT16 n = 0 )
+{ // ByteString& rInOut, SvStream& rInStream, INT32& rLeft, const BOOL bWordLen, UINT16 nPrefetchLen )
+ UINT32 nStart = r.Tell();
+ BOOL bRet = TRUE;
+ if( !n )
+ {
+ if( b )
+ r >> n;
+ else
+ n = Read1( r );
+ }
+ UINT8 nGrbit = 0;
+ UINT32 nExtLen = 0;
+ UINT16 nCrun = 0;
+ const sal_Char* p;
+ r >> nGrbit;
+ const BOOL b8Bit = ( nGrbit & 0x01 ) == 0x00;
+ const BOOL bFarEast = ( nGrbit & 0x04 ) != 0x00;
+ const BOOL bRichString = ( nGrbit & 0x08 ) != 0x00;
+ t += "[l=";
+ __AddDec( t, n );
+ t += ", f=";
+ __AddHex( t, nGrbit );
+ t += " (";
+ if( b8Bit )
+ p = "8-Bit, ";
+ else
+ p = "16-Bit, ";
+ t += p;
+
+ p = NULL;
+ if( bRichString )
+ {
+ r >> nCrun;
+ p = "Rich-ByteString";
+ }
+ if( bFarEast )
+ {
+ r >> nExtLen;
+ if( p )
+ p = "Far East Rich-ByteString";
+ else
+ p = "Far East";
+ }
+ if( !p )
+ p = "standard";
+ t += p;
+ t += ")]: \'";
+
+ UINT8 nC;
+ const UINT32 nLimit = 256;
+ const BOOL bCut = n > nLimit;
+ UINT32 nRest = 0;
+ UINT32 nSeek = 0;
+ if( n )
+ {
+ if( bCut )
+ {
+ nRest = n - nLimit;
+ n = nLimit;
+ }
+ while( n )
+ {
+ if( b8Bit )
+ r >> nC;
+ else
+ nC = ( UINT8 ) Read2( r );
+ if( nC < ' ' )
+ {
+ t += '<';
+ __AddHex( t, nC );
+ t += '>';
+ }
+ else
+ t += ( sal_Char ) nC;
+ n--;
+ }
+ }
+
+ if( nRest )
+ r.SeekRel( nRest );
+
+ t += '\'';
+ if( bCut )
+ t += "...";
+
+ if( nCrun )
+ {
+ t += " + ";
+ __AddDec( t, nCrun );
+ t += " format blocks (";
+ nCrun *= 4;
+ __AddDec( t, nCrun );
+ t += " Bytes)";
+ }
+ if( nExtLen )
+ {
+ t += " + ";
+ __AddDec( t, nExtLen );
+ t += " Byte extended info";
+ }
+
+ if( nExtLen + nCrun < 2048 )
+ {
+ if( bRichString )
+ nSeek = nCrun + nExtLen;
+ else if( bFarEast )
+ nSeek = nExtLen;
+ }
+ else
+ {
+ t += " (Gruetze!)";
+ bRet = FALSE;
+ }
+
+ r.SeekRel( nSeek );
+
+ rLeft -= r.Tell() - nStart;
+
+ return bRet;
+}
+
+
+DUMP_ERR::~DUMP_ERR()
+{
+ if( pHint )
+ delete pHint;
+}
+
+
+
+
+#define LINESTART() {t.Erase();t+=pPre;}
+#define IGNORE(n) rIn.SeekRel(n)
+#define ADDBIN(n) __AddBin( t, Read##n( rIn ) )
+#define ADDHEX(n) __AddHex( t, Read##n( rIn ) )
+#define ADDDEC(n) __AddDec( t, Read##n( rIn ) )
+#define ADD16P16() __Add16p16( t, Read4( rIn ) )
+#define ADDTEXT(T) t += T
+#define ADDCOLROW(c,r) __AddRef( t, c, r )
+#define PRINT() Print( t )
+#define PreDump(LEN) {UINT32 nOldPos=rIn.Tell();ContDump(LEN);rIn.Seek(nOldPos);}
+#define ADDCELLHEAD() {UINT16 nR,nC,nX;rIn>>nR>>nC>>nX;__AddCellHead(t,nC,nR,nX);}
+#define CHECKBREAK(n) {{nLeft-=n;if(nLeft<0)break;}}
+#define STARTFLAG() ADDTEXT( "flags (" ); __AddHex( t, __nFlags ); ADDTEXT( "):" );
+#define ADDFLAG(mask,text) {if( __nFlags&mask ) t+=text;}
+
+
+void Biff8RecDumper::DumpPivotCache( const UINT16 nStrId )
+{
+ ByteString t;
+ const sal_Char* pPre = " ";
+ UINT16 __nFlags;
+ if( !pPivotCache )
+ {
+ LINESTART();
+ ADDTEXT( "-- no cache storage available --" );
+ PRINT();
+ return;
+ }
+
+ __AddPureHex( t, nStrId );
+
+ SvStorageStream* pStIn = pPivotCache->OpenStream( String::CreateFromAscii( t.GetBuffer() ), STREAM_STD_READ );
+
+ if( !pStIn )
+ {
+ LINESTART();
+ ADDTEXT( "-- no cache stream available --" );
+ PRINT();
+ return;
+ }
+
+ SvStream* pOldIn = pIn;
+
+ pIn = pStIn;
+ SvStream& rIn = *pIn;
+
+ // -- dump from here --
+ rIn.Seek( STREAM_SEEK_TO_END );
+ UINT32 nTotalLen = rIn.Tell();
+ UINT16 nStrLen = ( nTotalLen > 0x0000FFFFL )? 0xFFFF : ( UINT16 ) nTotalLen;
+ rIn.Seek( 0 );
+
+// PreDump( nStrLen );
+
+ INT32 n = ( INT32 ) nTotalLen;
+ UINT16 nId, nLen;
+ UINT32 nFieldCnt = 0;
+ UINT32 nItemCnt;
+ UINT32 nTabIndexCnt = 0;
+
+ while( n > 3 ) // 7 = min len (End-Marke)
+ {
+ rIn >> nId >> nLen;
+ n -= 4;
+
+ LINESTART();
+
+ switch( nId )
+ {
+ case 0x000A: // EOC
+ {
+ ADDTEXT( "<end of cache>" );
+ PRINT();
+ }
+ break;
+ case 0x00C6: // SXDB - cache info
+ {
+ ADDTEXT( "[0x00C6] SXDB" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( pPre );
+ ADDTEXT( "number of recs: " );
+ ADDDEC( 4 );
+ ADDTEXT( " stream id: " );
+ ADDHEX( 2 );
+ ADDTEXT( " flags: " );
+ ADDHEX( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( pPre );
+ ADDTEXT( "DB block recs: " );
+ ADDDEC( 2 );
+ ADDTEXT( " base fields: " );
+ ADDDEC( 2 );
+ ADDTEXT( " all fields: " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( pPre );
+ ADDTEXT( "reserved: " );
+ ADDHEX( 2 );
+ ADDTEXT( " type: " );
+ ADDHEX( 2 );
+ ADDTEXT( " changed by:" );
+ PRINT();
+ n -= 18;
+ LINESTART();
+ ADDTEXT( pPre );
+ AddUNICODEString( t, rIn, n );
+ PRINT();
+ }
+ break;
+ case 0x00C7: // Pivot Field
+ {
+ nItemCnt = 0;
+
+ ADDTEXT( "[0x00C7] #" );
+ __AddDec( t, nFieldCnt, 3 );
+ nFieldCnt++;
+ ADDTEXT( " (pivot field): " );
+ if( n < 14 )
+ {
+ n = 0;
+ ADDTEXT( "<break in pivot field start>" );
+ PRINT();
+ }
+ else
+ {
+ PRINT();
+ LINESTART();
+ ADDTEXT( pPre );
+ ADDTEXT( pPre );
+ rIn >> __nFlags;
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fInIndexList" );
+ ADDFLAG( 0x0002, " fNotInList" );
+ ADDFLAG( 0x0200, " fLongIndex" );
+ ADDTEXT( " data type: " );
+ __nFlags &= 0x0DFC;
+ switch( __nFlags )
+ {
+ case 0x0480: ADDTEXT( "string" ); break;
+ case 0x0520: ADDTEXT( "double (fraction)" ); break;
+ case 0x0560: ADDTEXT( "double (int only)" ); break;
+ case 0x05A0: ADDTEXT( "string & double (fraction)" ); break;
+ case 0x05E0: ADDTEXT( "string & double (int only)" ); break;
+ case 0x0900: ADDTEXT( "date" ); break;
+ case 0x0D00: ADDTEXT( "date & (any) double" ); break;
+ case 0x0D80: ADDTEXT( "date & string (& double?)" ); break;
+ default: ADDTEXT( pU );
+ }
+ PRINT();
+ LINESTART();
+ ADDTEXT( pPre );
+ ADDTEXT( pPre );
+ ADDTEXT( "unknown: " );
+ ADDHEX( 2 );
+ ADDTEXT( " unknown: " );
+ ADDHEX( 2 );
+ ADDTEXT( " item count #1: " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( pPre );
+ ADDTEXT( pPre );
+ ADDTEXT( "unknown: " );
+ ADDHEX( 2 );
+ ADDTEXT( " unknown: " );
+ ADDHEX( 2 );
+ ADDTEXT( " item count #2: " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( pPre );
+ ADDTEXT( pPre );
+ n -= 14;
+ if( n < 3 )
+ {
+ n = 0;
+ ADDTEXT( "<break in pivot field name>" );
+ PRINT();
+ }
+ else
+ {
+ ADDTEXT( "name: " );
+ AddUNICODEString( t, rIn, n );
+ PRINT();
+ }
+ }
+ }
+ break;
+ case 0x00C8: // indexes to source data
+ {
+ if( !nTabIndexCnt )
+ {
+ ADDTEXT( "array of indexes to source data (0x00C8 records):" );
+ PRINT();
+ LINESTART();
+ }
+ ADDTEXT( pPre );
+ ADDTEXT( "[0x00C8] #" );
+ __AddDec( t, nTabIndexCnt, 3 );
+ nTabIndexCnt++;
+ ADDTEXT( " (index list):" );
+ for( UINT16 iIndex = 0; iIndex < nLen; iIndex++ )
+ {
+ ADDTEXT( " " );
+ ADDHEX( 1 );
+ }
+ n -= nLen;
+ PRINT();
+ }
+ break;
+ case 0x00C9: // double
+ {
+ ADDTEXT( pPre );
+ ADDTEXT( "[0x00C9] #" );
+ __AddDec( t, nItemCnt, 3 );
+ ADDTEXT( " (double): " );
+ nItemCnt++;
+ double fVal;
+ rIn >> fVal;
+ n -= 8;
+ ADDTEXT( " " );
+ __AddDouble( t, fVal );
+ PRINT();
+ }
+ break;
+ case 0x00CD: // ByteString
+ {
+ ADDTEXT( pPre );
+ ADDTEXT( "[0x00CD] #" );
+ __AddDec( t, nItemCnt, 3 );
+ ADDTEXT( " (string): " );
+ nItemCnt++;
+ AddUNICODEString( t, rIn, n );
+ PRINT();
+ }
+ break;
+ case 0x00CE: // date & time special format
+ {
+ ADDTEXT( pPre );
+ ADDTEXT( "[0x00CE] #" );
+ __AddDec( t, nItemCnt, 3 );
+ ADDTEXT( " (date/time): " );
+ nItemCnt++;
+ UINT8 nDay, nHour, nMin, nSec;
+ UINT16 nYear, nMonth;
+ rIn >> nYear >> nMonth >> nDay >> nHour >> nMin >> nSec;
+ n -= 8;
+ if( nDay )
+ {
+ __AddDec( t, nDay );
+ ADDTEXT( "." );
+ __AddDec( t, nMonth );
+ ADDTEXT( "." );
+ __AddDec( t, nYear );
+ ADDTEXT( " " );
+ }
+ __AddDec( t, nHour, 2, '0' );
+ ADDTEXT( ":" );
+ __AddDec( t, nMin, 2, '0' );
+ ADDTEXT( ":" );
+ __AddDec( t, nSec, 2, '0' );
+ PRINT();
+ }
+ break;
+ case 0x0122: // SXDBEX - ext. cache info
+ {
+ ADDTEXT( "[0x0122] SXDBEX -- last changed: " );
+ double fDate;
+ rIn >> fDate;
+ __AddDouble( t, fDate );
+ ADDTEXT( " SXFORMULA recs: " );
+ ADDDEC( 4 );
+ PRINT();
+ n -= 12;
+ }
+ break;
+ case 0x01BB: // SXFDBTYPE - SQL data type
+ {
+ ADDTEXT( pPre );
+ ADDTEXT( "[0x01BB] SXFDBTYPE -- SQL data type: " );
+ ADDHEX( 2 );
+ PRINT();
+ n -= 2;
+ }
+ break;
+ default:
+ {
+ ADDTEXT( pPre );
+ ADDTEXT( "? [" );
+ __AddHex( t, nId );
+ ADDTEXT( "] [" );
+ __AddDec( t, nLen );
+ ADDTEXT( "]:" );
+ for( UINT16 nC = 0 ; nC < nLen ; nC++ )
+ {
+ ADDTEXT( " " );
+ ADDHEX( 1 );
+ }
+ n -= nLen;
+ PRINT();
+ }
+ }
+ }
+
+ pIn = pOldIn;
+}
+
+
+UINT16 Biff8RecDumper::DumpXF( SvStream& rIn, const sal_Char* pPre )
+{
+ ByteString t;
+ const sal_Char* p;
+ UINT16 nW4, nW6, nW8, nW10, nW12, nW14, nW16, nW22;
+ UINT32 nL18;
+
+ rIn >> nW4 >> nW6 >> nW8 >> nW10 >> nW12 >> nW14 >> nW16 >> nL18 >> nW22;
+
+ LINESTART();
+ ADDTEXT( "--4- --6- --8- -10- -12- -14- -16- ---18--- -22-" );
+ PRINT();
+ LINESTART();
+ __AddPureHex( t, nW4 );
+ ADDTEXT( "-" );
+ __AddPureHex( t, nW6 );
+ ADDTEXT( "-" );
+ __AddPureHex( t, nW8 );
+ ADDTEXT( "-" );
+ __AddPureHex( t, nW10 );
+ ADDTEXT( "-" );
+ __AddPureHex( t, nW12 );
+ ADDTEXT( "-" );
+ __AddPureHex( t, nW14 );
+ ADDTEXT( "-" );
+ __AddPureHex( t, nW16 );
+ ADDTEXT( "-" );
+ __AddPureHex( t, nL18 );
+ ADDTEXT( "-" );
+ __AddPureHex( t, nW22);
+ PRINT();
+
+ LINESTART();
+ if( nW8 & 0x0004 )
+ ADDTEXT( "Style XF" );
+ else
+ ADDTEXT( "Cell XF " );
+ ADDTEXT( " ( #" );
+ __AddDec( t, nXFCount );
+ nXFCount++;
+ ADDTEXT( " )" );
+ PRINT();
+
+ LINESTART(); // pXFD->SetFont( nW4 );
+ ADDTEXT( "Font: " );
+ __AddDec( t, nW4 );
+ PRINT();
+
+ LINESTART(); // pXFD->SetValueFormat( pValueFormBuffer->GetValueFormat( nW6 ) );
+ ADDTEXT( "Format: " );
+ __AddDec( t, nW6 );
+ PRINT();
+
+ LINESTART();
+ ADDTEXT( "Flags: " );
+ if( nW8 & 0x0001 ) // pXFD->SetLocked( ( BOOL ) ( nW8 & 0x0001 ) );
+ ADDTEXT( " Locked" );
+ if( nW8 & 0x0002 ) // pXFD->SetHidden( ( BOOL ) ( nW8 & 0x0002 ) );
+ ADDTEXT( " Hidden" );
+ if( nW10 & 0x0008 ) // pXFD->SetWrap( EWT_Wrap );
+ ADDTEXT( " Wrap" );
+ if( nW10 & 0x0080 )
+ ADDTEXT( " JustLast" );
+ if( nW12 & 0x0020 ) // pXFD->Merge();
+ ADDTEXT( " Merge" );
+ PRINT();
+
+
+ LINESTART(); // pXFD->SetParent( nW8 >> 4 );
+ ADDTEXT( "Parent: " );
+ __AddDec( t, ( UINT32 ) ( nW8 >> 4 ) );
+ PRINT();
+
+ LINESTART(); // pXFD->SetAlign( ( ExcHorizAlign ) ( nW10 & 0x0007 ) );
+ ADDTEXT( "Alignment: " );
+ switch( nW10 & 0x0007 )
+ {
+ case 0: p = "general"; break;
+ case 1: p = "left"; break;
+ case 2: p = "center"; break;
+ case 3: p = "right"; break;
+ case 4: p = "fill"; break;
+ case 5: p = "justify"; break;
+ case 6: p = "center across selection"; break;
+ default: p = "ERROR";
+ }
+ ADDTEXT( p );
+ PRINT();
+
+ LINESTART(); // pXFD->SetAlign( ( ExcVertAlign ) ( ( nW10 & 0x0070 ) >> 4 ) );
+ ADDTEXT( "Vertical Alignment: " );
+ switch( ( nW10 & 0x0070 ) >> 4 )
+ {
+ case 0: p = "top"; break;
+ case 1: p = "center"; break;
+ case 2: p = "bottom"; break;
+ case 3: p = "justify"; break;
+ default: p = "ERROR";
+ }
+ ADDTEXT( p );
+ PRINT();
+
+ LINESTART(); // pXFD->SetTextOrient( ( UINT8 ) ( nW10 >> 8 ) );
+ ADDTEXT( "Rotation: " );
+ __AddDec( t, ( UINT8 ) ( nW10 >> 8 ) );
+ PRINT();
+
+ LINESTART(); // pXFD->SetIndent( nW12 & 0x000F );
+ ADDTEXT( "Indent: " );
+ __AddDec( t, ( UINT32 ) ( nW12 & 0x000F ) );
+ PRINT();
+
+ LINESTART(); // aBorder.nLeftLine = ( BYTE ) nW14 & 0x000F;
+ ADDTEXT( "Left Line: " );
+ __AddDec( t, ( BYTE ) ( nW14 & 0x000F ) );
+ ADDTEXT( ", c= " );
+ __AddDec( t, ( UINT32 ) ( nW16 & 0x007F ) ); // aBorder.nLeftColor = nW16 & 0x007F;
+ PRINT();
+
+ nW14 >>= 4;
+ LINESTART(); // aBorder.nRightLine = ( BYTE ) nW14 & 0x000F;
+ ADDTEXT( "Right Line: " );
+ __AddDec( t, ( BYTE ) ( nW14 & 0x000F ) );
+ ADDTEXT( ", c= " );
+ __AddDec( t, ( UINT32 ) ( ( nW16 >> 7 ) & 0x007F ) ); // aBorder.nRightColor = ( nW16 >> 7 ) & 0x007F;
+ PRINT();
+
+ nW14 >>= 4;
+ LINESTART(); // aBorder.nTopLine = ( BYTE ) nW14 & 0x000F;
+ ADDTEXT( "Top Line: " );
+ __AddDec( t, ( BYTE ) ( nW14 & 0x000F ) );
+ ADDTEXT( ", c= " );
+ __AddDec( t, ( UINT16 ) ( nL18 & 0x007F ) ); // aBorder.nTopColor = ( UINT16 ) ( nL18 & 0x007F );
+ PRINT();
+
+ nW14 >>= 4;
+ LINESTART(); // aBorder.nBottomLine = ( BYTE ) nW14 & 0x000F;
+ ADDTEXT( "Bottom Line: " );
+ __AddDec( t, ( BYTE ) ( nW14 & 0x000F ) );
+ ADDTEXT( ", c= " );
+ __AddDec( t, ( UINT16 ) ( ( nL18 >> 7 ) & 0x007F ) ); // aBorder.nBottomColor = ( UINT16 ) ( ( nL18 >> 7 ) & 0x007F );
+ PRINT();
+
+ LINESTART();
+ ADDTEXT( "Fill Pattern: p=" );
+ __AddDec( t, ( BYTE ) ( nL18 >> 26 ) ); // aFill.nPattern = ( BYTE ) ( nL18 >> 26 );
+ ADDTEXT( " fc=" );
+ __AddDec( t, ( UINT32 ) ( nW22 & 0x007F ) ); // aFill.nForeColor = nW22 & 0x007F;
+ ADDTEXT( " bc=" );
+ __AddDec( t, ( UINT32 ) ( ( nW22 & 0x3F80 ) >> 7 ) ); // aFill.nBackColor = ( nW22 & 0x3F80 ) >> 7;
+ PRINT();
+
+ return 20; // Laenge des Recs
+}
+
+// 16 bit pseudo password
+void Biff8RecDumper::DumpValidPassword( SvStream& rIn, const sal_Char* pPre )
+{
+ ByteString t;
+ UINT16 nPasswd;
+ rIn >> nPasswd;
+ LINESTART();
+ __AddHex( t, nPasswd );
+ if( nPasswd )
+ {
+ ByteString sPasswd;
+ ByteString sDummy;
+ UINT16 nLen = 9;
+ UINT16 nDummy;
+ UINT16 nNewChar;
+
+ nPasswd ^= 0xCE4B;
+ nDummy = nPasswd;
+ ADDTEXT( " without mask: " );
+ __AddHex( t, nPasswd );
+ sPasswd.Erase();
+ while( !(nDummy & 0x8000) && nLen )
+ {
+ nLen--;
+ nDummy <<= 1;
+ }
+ if( !nLen ) nLen = 2;
+ if( (nLen ^ nPasswd) & 0x0001 ) nLen++;
+ if( nLen == 9 )
+ {
+ nLen = 10;
+ nPasswd ^= 0x8001;
+ }
+ nPasswd ^= nLen;
+ if( nLen < 9 ) nPasswd <<= (8 - nLen);
+ for( UINT16 iChar = nLen; iChar > 0; iChar-- )
+ {
+ switch( iChar )
+ {
+ case 10:
+ nNewChar = (nPasswd & 0xC000) | 0x0400;
+ nPasswd ^= nNewChar;
+ nNewChar >>= 2;
+ break;
+ case 9:
+ nNewChar = 0x4200;
+ nPasswd ^= nNewChar;
+ nNewChar >>= 1;
+ break;
+ case 1:
+ nNewChar = nPasswd & 0xFF00;
+ break;
+ default:
+ nNewChar = (nPasswd & 0xE000) ^ 0x2000;
+ if( !nNewChar ) nNewChar = (nPasswd & 0xF000) ^ 0x1800;
+ if( nNewChar == 0x6000 ) nNewChar = 0x6100;
+ nPasswd ^= nNewChar;
+ nPasswd <<= 1;
+ break;
+ }
+ nNewChar >>= 8;
+ nNewChar &= 0x00FF;
+ sDummy = sPasswd;
+ sPasswd = (sal_Char) nNewChar;
+ sPasswd += sDummy;
+ }
+ ADDTEXT( " valid password: \"" );
+ t += sPasswd;
+ ADDTEXT( "\"" );
+ }
+ PRINT();
+}
+
+
+void Biff8RecDumper::RecDump( const UINT16 nR, const UINT16 nL )
+{
+ const sal_Char* p;
+ BOOL bDec = FALSE;
+ ByteString aTmp;
+ const ByteString* pName = GetName( nR );
+ INT32 nLeft = nL;
+ UINT16 __nFlags;
+
+
+ switch( nR )
+ {
+ case 0x0809:
+ nLevelCnt = 0;
+ break;
+ case 0x1033:
+ if( pName )
+ aTmp = *pName;
+ else
+ aTmp = "BEGIN ";
+ bDec = ( pLevelPre + nLevelInc ) >= pLevelPreString;
+ nLevelCnt++;
+ aTmp.Append( ByteString::CreateFromInt32( nLevelCnt ) );
+ pName = &aTmp;
+ break;
+ case 0x1034:
+ if( pName )
+ aTmp = *pName;
+ else
+ aTmp = "END ";
+ if( ( pLevelPre + nLevelInc ) <= pLevelPreStringNT )
+ pLevelPre += nLevelInc;
+ if( nLevelCnt )
+ {
+ aTmp.Append( ByteString::CreateFromInt32( nLevelCnt ) );
+ nLevelCnt--;
+ }
+ else
+ aTmp += "#LEVEL ERROR#";
+ pName = &aTmp;
+ break;
+ }
+
+ ByteString aT;
+ ByteString& t = aT;
+// const sal_Char* pPre = " ";
+ const sal_Char* pPre = ( ( pLevelPre + 1 ) >= pLevelPreString )? pLevelPre - 1 : pLevelPre;
+
+ if( nR || nL ) // skip dummy-zero DIMENSIONS at eof
+ {
+ aT += pLevelPre;
+ __AddHex( aT, nR );
+
+ if( pName )
+ {
+ aT += " (";
+ aT += *pName;
+ aT += ") [";
+ }
+ else
+ aT += " [";
+
+ __AddHex( aT, nL );
+ aT += "]";
+ if( !bSkipOffset )
+ {
+ aT += " :";
+ __AddHex( aT, UINT32(pIn->Tell() - 2 * sizeof(UINT16)) );
+ aT += ':';
+ }
+
+ Print( aT );
+ }
+
+ if( HasModeNameOnly( nR ) )
+ ;
+ else if( HasModeHex( nR ) )
+ ContDump( nL );
+ else if( nMaxBodyLines && nL )
+ {
+ SvStream& rIn = *pIn;
+
+ LINESTART();
+
+ switch( nR )
+ {
+ case 0x06:
+ {
+// LINESTART();
+ ADDCELLHEAD();
+ PRINT();
+ LINESTART();
+ ADDTEXT( "val = " );
+ __AddDouble( t, Read8( rIn ) );
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ STARTFLAG();
+ ADDFLAG( 0x01, " fAlwaysCalc" );
+ ADDFLAG( 0x02, " fCalcOnLoad" );
+ ADDFLAG( 0x08, " fShrFmla" );
+ }
+ PRINT();
+ LINESTART();
+ UINT16 n;
+ ADDTEXT( "chn = " );
+ __AddPureHex( t, Read4( rIn ) );
+ rIn >> n;
+ ADDTEXT( " cce = " );
+ __AddDec( t, n );
+ PRINT();
+ FormulaDump( n, FT_CellFormula );
+ }
+ break;
+ case 0x13: // PASSWORD
+ DumpValidPassword( rIn, pPre );
+ break;
+ case 0x17:
+ {
+// LINESTART();
+ UINT16 n;
+ rIn >> n;
+ ADDTEXT( "# of XTI: " );
+ __AddDec( t, n );
+ PRINT();
+ UINT16 nSB, nF, nL;
+ while( n )
+ {
+ LINESTART();
+ rIn >> nSB >> nF >> nL;
+ ADDTEXT( "Supbook = " );
+ __AddDec( t, nSB );
+ ADDTEXT( " Tab = " );
+ __AddDec( t, nF );
+ ADDTEXT( " ... " );
+ __AddDec( t, nL );
+ PRINT();
+ n--;
+ }
+ }
+ break;
+ case 0x18:
+ case 0x0218: // NAME
+ {
+ UINT32 nStop = rIn.Tell() + nL;
+ UINT8 nNameText, n8;
+ UINT16 nNameDef, n16;
+
+ PreDump( nL );
+ rIn >> __nFlags >> n8 >> nNameText >> nNameDef >> n16 >> n16 >> n8 >> n8 >> n8 >> n8;
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fHidden" );
+ ADDFLAG( 0x0002, " fFunc" );
+ ADDFLAG( 0x0004, " fVBProc" );
+ ADDFLAG( 0x0008, " fProc" );
+ ADDFLAG( 0x0010, " fCalcExp" );
+ ADDFLAG( 0x0020, " fBuiltIn" );
+ ADDFLAG( 0x1000, " fBig" );
+ ADDFLAG( 0xE000, " !RESERVED!" );
+ ADDTEXT( " Fn grp index: " );
+ __AddDec( t, (UINT16)((__nFlags & 0x0FC0) >> 6) );
+ PRINT();
+
+ INT32 nBytesLeft = nStop - rIn.Tell();
+ ByteString sTemp;
+ LINESTART();
+ ADDTEXT( "NAMETEXT[" );
+ __AddDec( t, nNameText );
+ ADDTEXT( "] = " );
+ if( nNameText )
+ sTemp = GETSTR( ::ReadUnicodeString( rIn, nBytesLeft, *pExcRoot->pCharset, nNameText ) );
+ else
+ {
+ rIn >> n8;
+ nBytesLeft--;
+ }
+ if( (__nFlags & 0x0020) && (nNameText == 1) )
+ {
+ UINT8 nAutoname = (UINT8)(sTemp.GetChar( 0 ));
+ ADDTEXT( "(" );
+ __AddHex( t, nAutoname );
+ ADDTEXT( ") " );
+ switch( nAutoname )
+ {
+ case 0x00: ADDTEXT( "Consolidate_Area" ); break;
+ case 0x01: ADDTEXT( "Auto_Open" ); break;
+ case 0x02: ADDTEXT( "Auto_Close" ); break;
+ case 0x03: ADDTEXT( "Extract" ); break;
+ case 0x04: ADDTEXT( "Database" ); break;
+ case 0x05: ADDTEXT( "Criteria" ); break;
+ case 0x06: ADDTEXT( "Print_Area" ); break;
+ case 0x07: ADDTEXT( "Print_Titles" ); break;
+ case 0x08: ADDTEXT( "Recorder" ); break;
+ case 0x09: ADDTEXT( "Data_Form" ); break;
+ case 0x0A: ADDTEXT( "Auto_Activate" ); break;
+ case 0x0B: ADDTEXT( "Auto_Deactivate" ); break;
+ case 0x0C: ADDTEXT( "Sheet_Title" ); break;
+ case 0x0D: ADDTEXT( "AutoFilter" ); break;
+ default: ADDTEXT( pU );
+ }
+ }
+ else
+ {
+ ADDTEXT( "\"" );
+ t += sTemp;
+ ADDTEXT( "\"" );
+ }
+ PRINT();
+ LINESTART();
+ t += "NAMEDEF[";
+ __AddDec( t, nNameDef );
+ t += "] (formula?)";
+ PRINT();
+ if ( nNameDef && nBytesLeft > 0 )
+ FormulaDump( ((nBytesLeft < nNameDef) ? UINT16(nBytesLeft) : nNameDef), FT_RangeName );
+ rIn.Seek( nStop );
+ }
+ break;
+ case 0x51:
+ {
+// LINESTART();
+ UINT16 nR1, nR2;
+ UINT8 nC1, nC2;
+ rIn >> nR1 >> nR2 >> nC1 >> nC2;
+ ADDCOLROW( nC1, nR1 );
+ ADDTEXT( " : " );
+ ADDCOLROW( nC2, nR2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "workbook: " );
+ INT32 nDummy;
+ AddUNICODEString( t, rIn, nDummy, TRUE );
+ PRINT();
+ }
+ break;
+ case 0x5B: // FILESHARING
+ {
+ PreDump( nL );
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fReadOnlyRec" );
+ PRINT();
+ }
+ DumpValidPassword( rIn, pPre );
+ }
+ break;
+ case 0x5D:
+ ObjDump( nL );
+ break;
+ case 0x007D: // COLINFO - col range info
+ {
+ LINESTART();
+ ADDTEXT( "col range: " );
+ ADDDEC( 2 );
+ ADDTEXT( "-" );
+ ADDDEC( 2 );
+ ADDTEXT( " width: " );
+ ADDDEC( 2 );
+ ADDTEXT( "/256 charwidth ix to XF: " );
+ ADDDEC( 2 );
+ PRINT();
+ rIn >> __nFlags;
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fHidden" );
+ ADDTEXT( " outlnlev=" );
+ __AddDec( t, (UINT16)((__nFlags & 0x0700) >> 8) );
+ ADDFLAG( 0x1000, " fCollapsed" );
+ ADDFLAG( 0xE8FE, " !RESERVED!" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "reserved: " );
+ ADDHEX( 2 );
+ PRINT();
+ }
+ break;
+ case 0x7E:
+ {
+// LINESTART();
+ ADDCELLHEAD();
+ ADDTEXT( " val = " );
+ __AddDouble( t, ImportExcel::RkToDouble( Read4( rIn ) ) );
+ PRINT();
+ }
+ break;
+ case 0x0080: // GUTS - row & col gutters for outlines
+ {
+ LINESTART();
+ ADDTEXT( "size row gutter: " );
+ __AddDec( t, Read2( rIn ), 5 );
+ ADDTEXT( " | size col gutter: " );
+ __AddDec( t, Read2( rIn ), 5 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "max outline lev: " );
+ __AddDec( t, Read2( rIn ), 5 );
+ ADDTEXT( " | max outline lev: " );
+ __AddDec( t, Read2( rIn ), 5 );
+ PRINT();
+ }
+ break;
+ case 0x0081: // WSBOOL - additional workspace info
+ {
+ rIn >> __nFlags;
+ LINESTART();
+ STARTFLAG();
+ if( __nFlags & 0x00F1 )
+ {
+ ADDFLAG( 0x0001, " fShowAutoBreaks" );
+ ADDFLAG( 0x0010, " fDialog" );
+ ADDFLAG( 0x0020, " fApplyStyles" );
+ ADDFLAG( 0x0040, " fRowSumsBelow" );
+ ADDFLAG( 0x0080, " fColSumsBelow" );
+ PRINT();
+ LINESTART();
+ }
+ if( __nFlags & (0xCD00 | 0x320E) )
+ {
+ ADDTEXT( " " );
+ ADDFLAG( 0x0100, " fFitToPage" );
+ ADDFLAG( 0x0400, " fDispRowGuts" );
+ ADDFLAG( 0x0800, " fDispColGuts" );
+ ADDFLAG( 0x4000, " fAee" );
+ ADDFLAG( 0x8000, " fAfe" );
+ ADDFLAG( 0x320E, " !RESERVED!" );
+ PRINT();
+ }
+ if( !__nFlags )
+ PRINT();
+ }
+ break;
+ case 0x92: // PALETTE
+ {
+ UINT16 nColCnt;
+ rIn >> nColCnt;
+ LINESTART();
+ ADDTEXT( "count: " );
+ __AddDec( t, nColCnt );
+ PRINT();
+ LINESTART();
+ for( UINT16 nCol = 0; nCol < nColCnt; nCol++ )
+ {
+ __AddDec( t, nCol, 2 );
+ ADDTEXT( "=" );
+ ADDHEX( 4 );
+ ADDTEXT( " " );
+ if( (nCol % 5 == 4) || (nCol == nColCnt - 1) )
+ {
+ PRINT();
+ LINESTART();
+ }
+ }
+ }
+ break;
+ case 0x9D: // AUTOFILTERINFO -- count of drop-down arrows
+ {
+ LINESTART();
+ ADDTEXT( "count of drop-down arrows: " );
+ ADDDEC( 2 );
+ PRINT();
+ }
+ break;
+ case 0x9E: // AUTOFILTER -- autofilter settings
+ {
+ UINT8 nType;
+ UINT8 nCompare;
+ ByteString sTemp[ 2 ];
+ UINT16 nLen[ 2 ] = { 0, 0 };
+ UINT8 nF;
+ INT32 nDummy;
+ LINESTART();
+ ADDTEXT( "count: " );
+ ADDDEC( 2 );
+ rIn >> __nFlags;
+ STARTFLAG();
+ ADDFLAG( 0x0003, " fJoin" );
+ ADDFLAG( 0x0004, " fSimpleEq1" );
+ ADDFLAG( 0x0008, " fSimpleEq2" );
+ ADDFLAG( 0x0010, " fTop10" );
+ ADDFLAG( 0x0020, " fTop" );
+ ADDFLAG( 0x0040, " fPercent" );
+ PRINT();
+ LINESTART();
+ if( __nFlags & 0x0003 )
+ ADDTEXT( "(custom conditions are OR-ed" );
+ else
+ ADDTEXT( "(custom conditions are AND-ed" );
+ if( __nFlags & 0x0010 )
+ {
+ if( __nFlags & 0x0020 )
+ ADDTEXT( "; show top " );
+ else
+ ADDTEXT( "; show bottom " );
+ __AddDec( t, (UINT16)(__nFlags >> 7) );
+ if( __nFlags & 0x0040 )
+ ADDTEXT( " percent" );
+ else
+ ADDTEXT( " items" );
+ }
+ ADDTEXT( ")" );
+ PRINT();
+ for( nF = 0; nF < 2; nF++ )
+ {
+ LINESTART();
+ __AddDec( t, (UINT16)(nF + 1) );
+ ADDTEXT( ". Filter: " );
+ rIn >> nType >> nCompare;
+ switch( nType )
+ {
+ case 0x00: ADDTEXT( "not used " ); break;
+ case 0x02: ADDTEXT( "RK " ); break;
+ case 0x04: ADDTEXT( "double " ); break;
+ case 0x06: ADDTEXT( "string " ); break;
+ case 0x08: ADDTEXT( "bool/err " ); break;
+ case 0x0A: ADDTEXT( "show nothing " ); break;
+ case 0x0C: ADDTEXT( "all blanks " ); break;
+ case 0x0E: ADDTEXT( "all non-blanks " ); break;
+ default:
+ ADDTEXT( "unknown (" );
+ __AddHex( t, nType );
+ ADDTEXT( ") " );
+ }
+ switch( nCompare )
+ {
+ case 0x01: ADDTEXT( "< " ); break;
+ case 0x02: ADDTEXT( "= " ); break;
+ case 0x03: ADDTEXT( "<= " ); break;
+ case 0x04: ADDTEXT( "> " ); break;
+ case 0x05: ADDTEXT( "<> " ); break;
+ case 0x06: ADDTEXT( ">= " ); break;
+ default: if( nCompare ) __AddHex( t, nCompare );
+ }
+ sTemp[ nF ] = t;
+ switch( nType )
+ {
+ case 0x02:
+ __AddDouble( sTemp[ nF ], ImportExcel::RkToDouble( Read4( rIn ) ) );
+ IGNORE( 4 );
+ break;
+ case 0x04:
+ __AddDouble( sTemp[ nF ], Read8( rIn ) );
+ break;
+ case 0x06:
+ IGNORE( 4 );
+ nLen[ nF ] = Read1( rIn );
+ IGNORE( 3 );
+ break;
+ case 0x08:
+ __AddHex( sTemp[ nF ], Read1( rIn ) );
+ sTemp[ nF ] += " ";
+ __AddHex( sTemp[ nF ], Read1( rIn ) );
+ IGNORE( 6 );
+ break;
+ default:
+ IGNORE( 8 );
+ }
+ }
+ for( nF = 0; nF < 2; nF++ )
+ {
+ t = sTemp[ nF ];
+ if( nLen[ nF ] )
+ AddUNICODEString( t, rIn, nDummy, TRUE, nLen[ nF ] );
+ PRINT();
+ }
+ }
+ break;
+ case 0xA0:
+ {
+ UINT16 nN, nD;
+ rIn >> nN >> nD;
+ LINESTART();
+ ADDTEXT( "Window Zoom Magnification = " );
+ __AddDec( t, nN );
+ ADDTEXT( "/" );
+ __AddDec( t, nD );
+ PRINT();
+ }
+ break;
+ case 0xAF:
+ {
+ UINT16 nCref;
+ UINT8 nLocked, nHidden, nName, nComment, nNameUser;
+ UINT16 nRest = nL;
+ rIn >> nCref >> nLocked >> nHidden >> nName >> nComment >> nNameUser;
+ nRest -= sizeof( nCref ) + sizeof( nLocked ) + sizeof( nHidden ) + sizeof( nName )
+ + sizeof( nComment ) + sizeof( nNameUser );
+ LINESTART();
+ ADDTEXT( "Changing Cells = " );
+ __AddDec( t, nCref );
+ if( nLocked )
+ ADDTEXT( " fLocked" );
+ if( nHidden )
+ ADDTEXT( " fHidden" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "Name = " );
+ __AddDec( t, nName );
+ ADDTEXT( " Comment = " );
+ __AddDec( t, nComment );
+ ADDTEXT( " Name User = " );
+ __AddDec( t, nNameUser );
+ PRINT();
+ ContDump( nRest );
+ }
+ break;
+ case 0xB0: // SXVIEW
+ {
+ UINT16 nColFirst, nColLast, nRowFirst, nRowLast;
+ rIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nSXLIIndex = 0; // new pivot table
+ LINESTART();
+ ADDTEXT( "PivotTable: " );
+ __AddDec( t, nColFirst );
+ ADDTEXT( " / " );
+ __AddDec( t, nRowFirst );
+ ADDTEXT( " - " );
+ __AddDec( t, nColLast );
+ ADDTEXT( " / " );
+ __AddDec( t, nRowLast );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "1st Head: " );
+ ADDDEC( 2 );
+ rIn >> nRowFirst;
+ ADDTEXT( " First Data: " );
+ ADDDEC( 2 );
+ ADDTEXT( " / " );
+ __AddDec( t, nRowFirst );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "Cache index: " );
+ ADDDEC( 2 );
+ ADDTEXT( " reserved: " );
+ ADDHEX( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "axis 4 data: " );
+ ADDDEC( 2 );
+ ADDTEXT( " pos 4 Data: " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "num of fields: " );
+ ADDDEC( 2 );
+ rIn >> nSXLISize[0] >> nSXLISize[1];
+ ADDTEXT( " ...row fields: " );
+ __AddDec( t, nSXLISize[0] );
+ ADDTEXT( " ...col fields: " );
+ __AddDec( t, nSXLISize[1] );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "num of page fields: " );
+ ADDDEC( 2 );
+ ADDTEXT( " ...data fields: " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "data rows: " );
+ ADDDEC( 2 );
+ ADDTEXT( " data cols: " );
+ ADDDEC( 2 );
+ rIn >> __nFlags;
+ PRINT();
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fRowGrand" );
+ ADDFLAG( 0x0002, " fColGrand" );
+ ADDFLAG( 0x0008, " fAutoFormat" );
+ ADDFLAG( 0x0010, " fWidthHeightAuto" );
+ ADDFLAG( 0x0020, " fFontAuto" );
+ ADDFLAG( 0x0040, " fAlignAuto" );
+ ADDFLAG( 0x0080, " fBorderAuto" );
+ ADDFLAG( 0x0100, " fPatternAuto" );
+ ADDFLAG( 0x0200, " fNumberAuto" );
+ PRINT();
+ }
+ LINESTART();
+ ADDTEXT( "index 2 PivotTable autoform: " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ UINT16 nTableLen = Read2( rIn );
+ UINT16 nDataLen = Read2( rIn );
+ INT32 nDummy;
+ ADDTEXT( "PivotTable name: " );
+ if( nTableLen )
+ AddUNICODEString( t, rIn, nDummy, TRUE, nTableLen );
+ else
+ ADDTEXT( "-/-" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "data field name: " );
+ if( nDataLen )
+ AddUNICODEString( t, rIn, nDummy, TRUE, nDataLen );
+ else
+ ADDTEXT( "-/-" );
+ PRINT();
+ }
+ break;
+ case 0xB1: // SXVD
+ {
+ rIn >> __nFlags;
+ LINESTART();
+ ADDTEXT( "Axis (" );
+ __AddHex( t, __nFlags );
+ ADDTEXT( "):" );
+ if( __nFlags )
+ {
+ ADDFLAG( 0x0001, " row" );
+ ADDFLAG( 0x0002, " col" );
+ ADDFLAG( 0x0004, " page" );
+ ADDFLAG( 0x0008, " data" );
+ }
+ else
+ ADDTEXT( " no axis" );
+ ADDTEXT( " num of att. subtotals: " );
+ ADDDEC( 2 );
+ PRINT();
+ rIn >> __nFlags;
+ LINESTART();
+ ADDTEXT( "subtotal type(" );
+ __AddHex( t, __nFlags );
+ ADDTEXT( "):" );
+ if( __nFlags )
+ {
+ ADDFLAG( 0x0001, " Default" );
+ ADDFLAG( 0x0002, " Sum" );
+ ADDFLAG( 0x0004, " Counta" );
+ ADDFLAG( 0x0008, " Average" );
+ ADDFLAG( 0x0010, " Max" );
+ ADDFLAG( 0x0020, " Min" );
+ ADDFLAG( 0x0040, " Product" );
+ ADDFLAG( 0x0080, " Count" );
+ ADDFLAG( 0x0100, " Stdev" );
+ ADDFLAG( 0x0200, " Stddevp" );
+ ADDFLAG( 0x0400, " Var" );
+ ADDFLAG( 0x0800, " Varp" );
+ }
+ else
+ ADDTEXT( " none" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "num of items: " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "Name: " );
+ UINT16 nLen = Read2( rIn );
+ INT32 nDummy;
+ if( nLen == 0xFFFF )
+ ADDTEXT( "<name in cache>" );
+ else
+ AddUNICODEString( t, rIn, nDummy, TRUE, nLen );
+ PRINT();
+ }
+ break;
+ case 0xB2: // SXVI
+ {
+ INT32 nCntDwn = nL;
+ UINT16 nType, nCache;
+ rIn >> nType >> __nFlags >> nCache;
+ LINESTART();
+ switch( nType )
+ {
+ case 0xFE: p = "Page"; break;
+ case 0xFF: p = "Null"; break;
+ case 0x00: p = "Data"; break;
+ case 0x01: p = "Default"; break;
+ case 0x02: p = "SUM"; break;
+ case 0x03: p = "COUNT"; break;
+ case 0x04: p = "AVERAGE"; break;
+ case 0x05: p = "MAX"; break;
+ case 0x06: p = "MIN"; break;
+ case 0x07: p = "PRODUCT"; break;
+ case 0x08: p = "COUNTA"; break;
+ case 0x09: p = "STDEV"; break;
+ case 0x0A: p = "STDEVP"; break;
+ case 0x0B: p = "VAR"; break;
+ case 0x0C: p = "VARP"; break;
+ case 0x0D: p = "Grand total"; break;
+ default: p = pU;
+ }
+ ADDTEXT( "Type (" );
+ __AddHex( t, nType );
+ ADDTEXT( "): " );
+ ADDTEXT( p );
+ ADDTEXT( " iCache: " );
+ __AddDec( t, nCache );
+ PRINT();
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x01, " fHidden" );
+ ADDFLAG( 0x02, " fHideDetail" );
+ ADDFLAG( 0x04, " fFormula" );
+ ADDFLAG( 0x08, " fMissing" );
+ PRINT();
+ }
+ LINESTART();
+ ADDTEXT( "Name: " );
+ UINT16 nCch = Read2( rIn );
+ if( nCch == 0xFFFF )
+ ADDTEXT( "<name in cache>" );
+ else if( nCch )
+ AddUNICODEString( t, rIn, nCntDwn, TRUE, nCch );
+ else
+ ADDTEXT( "<empty string>" );
+ PRINT();
+ }
+ break;
+ case 0xB4: // SXIVD
+ {
+ const UINT16 nBrkNum = 5;
+ UINT16 nBrk = nBrkNum;
+ UINT16 nSize = nL / 2;
+ LINESTART();
+ for( UINT16 i = 0; i < nSize; i++ )
+ {
+ ADDHEX( 2 );
+ nBrk--;
+ if( nBrk )
+ ADDTEXT( " " );
+ else
+ {
+ PRINT();
+ LINESTART();
+ nBrk = nBrkNum;
+ }
+ }
+ if( nBrk < nBrkNum ) PRINT();
+ }
+ break;
+ case 0xB5: // SXLI - pivot table line item array
+ {
+ UINT16 nIdent;
+ UINT16 nType;
+ UINT16 nMaxInd;
+ const sal_Char* pInd = " ";
+ const sal_Char* pType[] = {
+ "Data", "Default", "SUM", "COUNT","AVERAGE",
+ "MAX", "MIN", "PRODUCT", "COUNTA", "STDEV",
+ "STDEVP", "VAR", "VARP", "Grand total",
+ "Blank line" }; // undocumented
+ while( nLeft > 0 )
+ {
+ rIn >> nIdent >> nType >> nMaxInd >> __nFlags;
+ LINESTART();
+ ADDTEXT( "# of ident. items: " );
+ __AddDec( t, nIdent );
+ ADDTEXT( " Type (" );
+ __AddHex( t, nType );
+ ADDTEXT( "): " );
+ if( nType > 0x0E )
+ p = pU;
+ else
+ p = pType[ nType ];
+ ADDTEXT( p );
+ ADDTEXT( " relevant indexes: " );
+ __AddDec( t, nMaxInd );
+ PRINT();
+ LINESTART();
+ ADDTEXT( pInd );
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fMultiDataName" );
+ ADDFLAG( 0x0200, " fSub" );
+ ADDFLAG( 0x0400, " fBlock" );
+ ADDFLAG( 0x0800, " fGrand" );
+ ADDFLAG( 0x1000, " fMultiDataOnAxis" );
+ ADDFLAG( 0x2000, " fBlankLine" ); // undocumented
+ ADDFLAG( 0x4000, " fHideDetail" ); // undocumented
+ ADDFLAG( 0x8000, " !RESERVED!" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( pInd );
+ ADDTEXT( "index to data field: " );
+ __AddDec( t, (UINT16) ( (__nFlags & 0x01FE) >> 1 ) );
+ PRINT();
+ nLeft -= 8;
+ LINESTART();
+ ADDTEXT( pInd );
+ ADDTEXT( "array of " );
+ __AddDec( t, nSXLISize[nSXLIIndex] );
+ ADDTEXT( " indexes (^ are ident., * are irrelevant):" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( pInd );
+ ADDTEXT( " " );
+ nLeft -= 2 * nSXLISize[nSXLIIndex];
+ if( nLeft >= 0 )
+ {
+ const UINT16 nBrkNum = 5;
+ UINT16 nBrk = nBrkNum;
+ for( UINT16 i = 0; i < nSXLISize[nSXLIIndex]; i++ )
+ {
+ __AddDec( t, Read2( rIn ), 7 );
+ if( i < nIdent )
+ ADDTEXT( "^" );
+ else if( i < nMaxInd )
+ ADDTEXT( " " );
+ else
+ ADDTEXT( "*" );
+ nBrk--;
+ if( !nBrk )
+ {
+ PRINT();
+ LINESTART();
+ ADDTEXT( pInd );
+ ADDTEXT( " " );
+ nBrk = nBrkNum;
+ }
+ }
+ if( nBrk < nBrkNum )
+ PRINT();
+ }
+ else
+ Print( "<unexpected end of record>" );
+ }
+ nSXLIIndex = 1 - nSXLIIndex;
+ }
+ break;
+ case 0xB6: // SXPI - pivot table page item(s)
+ {
+ UINT16 nArrayCnt = nL / 6;
+ LINESTART();
+ __AddDec( t, nArrayCnt );
+ ADDTEXT( " page items:" );
+ PRINT();
+ for( UINT16 iArray = 0; iArray < nArrayCnt; iArray++ )
+ {
+ LINESTART();
+ ADDTEXT( "index SXVD: " );
+ __AddDec( t, Read2( rIn ), 3 );
+ ADDTEXT( " index SXVI: " );
+ UINT16 nSXVIInd;
+ rIn >> nSXVIInd;
+ __AddDec( t, nSXVIInd, 5 );
+ if( nSXVIInd == 32765 )
+ ADDTEXT( " (All items) Obj ID: " );
+ else
+ ADDTEXT( " Obj ID: " );
+ ADDHEX( 2 );
+ PRINT();
+ }
+ }
+ break;
+ case 0xBD:
+ {
+ UINT16 nC, nR, nXF;
+ UINT32 nRK;
+ UINT16 n = ( nL - 4 ) / 6;
+
+ rIn >> nR >> nC;
+ while( n )
+ {
+ rIn >> nXF >> nRK;
+ LINESTART();
+ __AddCellHead( t, nC, nR, nXF );
+ ADDTEXT( " val = " );
+ __AddDouble( t, ImportExcel::RkToDouble( nRK ) );
+ PRINT();
+ nC++;
+ n--;
+ }
+ }
+ break;
+ case 0xBE:
+ {
+ LINESTART();
+ ADDCELLHEAD();
+ PRINT();
+ LINESTART();
+ ADDTEXT( "next XFs: " );
+ UINT16 n = ( nL - 6 ) / 2;
+ while( n )
+ {
+ __AddDec( t, Read2( rIn ) );
+ n--;
+ if( n )
+ ADDTEXT( ' ' );
+ }
+ PRINT();
+ }
+ break;
+ case 0xC5: // SXDI
+ {
+ INT32 nCntDwn = nL;
+ LINESTART();
+ ADDTEXT( "Field: " );
+ ADDDEC( 2 );
+ UINT16 nFunc = Read2( rIn );
+ ADDTEXT( " aggregation func (" );
+ __AddHex( t, nFunc );
+ ADDTEXT( "): " );
+ const sal_Char* pFunc[] = { "Sum", "Count", "Average", "Max", "Min",
+ "Product", "Count Nums", "StdDev", "StdDevp", "Var",
+ "Varp" };
+ if( nFunc > 0x0A )
+ p = pU;
+ else
+ p = pFunc[ nFunc ];
+ ADDTEXT( p );
+ ADDTEXT( " display format (" );
+ const sal_Char* pDispl[] = {
+ "Normal", "Difference", "Percentage of", "Percentage difference from", "Running total in",
+ "Percentage of row", "Percentage of column", "Percentage of total", "Index" };
+ UINT16 nDispl = Read2( rIn );
+ __AddHex( t, nDispl );
+ ADDTEXT( "): " );
+ if( nDispl > 0x08 )
+ p = pU;
+ else
+ p = pDispl[ nDispl ];
+ ADDTEXT( p );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "ind. to SXVD: " );
+ ADDDEC( 2 );
+ ADDTEXT( " ind. to SXVI: " );
+ ADDDEC( 2 );
+ ADDTEXT( " num format: " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "name: " );
+ UINT16 nCch = Read2( rIn );
+ nCntDwn -= 14;
+ if( nCch == 0xFFFF )
+ ADDTEXT( "<name in cache>" );
+ else if( nCch )
+ AddUNICODEString( t, rIn, nCntDwn, TRUE, nCch );
+ else
+ ADDTEXT( "<empty string>" );
+ PRINT();
+ }
+ break;
+ case 0xCD: // SXSTRING
+ {
+ long nDummy;
+ LINESTART();
+ AddUNICODEString( t, rIn, nDummy );
+ PRINT();
+ }
+ break;
+ case 0xD5: // SXIDSTM - pivot table cache stream id
+ {
+ LINESTART();
+ UINT16 nStrId = Read2( rIn );
+ ADDTEXT( "Stream ID: " );
+ __AddHex( t, nStrId );
+ PRINT();
+ DumpPivotCache( nStrId );
+ }
+ break;
+ case 0xE0:
+ DumpXF( rIn, pPre );
+ break;
+ case 0xE3:
+ {
+ LINESTART();
+ ADDTEXT( "view source (" );
+ UINT16 n = Read2( rIn );
+ __AddHex( t, n );
+ ADDTEXT( "): " );
+ switch( n )
+ {
+ case 0x01: p = "M$ Excel list or database"; break;
+ case 0x02: p = "external data source"; break;
+ case 0x04: p = "multiple consolidation ranges"; break;
+ case 0x08: p = "pivot table"; break;
+ case 0x10: p = "scenario manager summary report"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ PRINT();
+ }
+ break;
+ case 0xE5: // CELLMERGING
+ {
+ UINT16 nCount, nInd;
+ UINT16 nRow1, nRow2, nCol1, nCol2;
+ rIn >> nCount;
+ LINESTART();
+ ADDTEXT( "Count: " );
+ __AddDec( t, nCount );
+ PRINT();
+ LINESTART();
+ for( nInd = 0; nInd < 3; nInd++ )
+ ADDTEXT( " row - row / col-col | " );
+ PRINT();
+ LINESTART();
+ if( nCount * 8 + 2 == nL )
+ {
+ for( nInd = 0; nInd < nCount; nInd++ )
+ {
+ rIn >> nRow1 >> nRow2 >> nCol1 >> nCol2;
+ __AddDec( t, nRow1, 5 );
+ ADDTEXT( "-" );
+ __AddDec( t, nRow2, 5 );
+ ADDTEXT( " / " );
+ __AddDec( t, nCol1, 3 );
+ ADDTEXT( "-" );
+ __AddDec( t, nCol2, 3 );
+ ADDTEXT( " | " );
+ if( (nInd % 3 == 2) || (nInd == nCount - 1) )
+ {
+ PRINT();
+ LINESTART();
+ }
+ }
+ }
+ else
+ {
+ LINESTART();
+ ADDTEXT( "<Wrong record length!>" );
+ PRINT();
+ }
+ }
+ break;
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ EscherDump( nL );
+ break;
+ case 0xFC:
+ {
+ INT32 nCntDwn = nL;
+ UINT16 nCnt = 0;
+
+ ContDump( 8 );
+ nCntDwn -= 8;
+
+ while( nCntDwn > 0 )
+ {
+ LINESTART();
+ __AddDec( t, nCnt );
+ ADDTEXT( ": " );
+ if( !AddUNICODEString( t, rIn, nCntDwn ) )
+ nCntDwn = 0;
+ PRINT();
+ nCnt++;
+ }
+ }
+ break;
+ case 0xFD:
+ {
+ LINESTART();
+ ADDCELLHEAD();
+ ADDTEXT( " sst = " );
+ ADDDEC(4);
+ PRINT();
+ }
+ break;
+ case 0x0100: // SXVDEX
+ {
+ LINESTART();
+ UINT32 __nFlags = Read4( rIn );
+ STARTFLAG();
+ if( __nFlags & 0x009F )
+ {
+ ADDFLAG( 0x0001, " fShowAllItems" );
+ ADDFLAG( 0x0002, " fDragToRow" );
+ ADDFLAG( 0x0004, " fDragToColumn" );
+ ADDFLAG( 0x0008, " fDragToPage" );
+ ADDFLAG( 0x0010, " fDragToHide" );
+ ADDFLAG( 0x0080, " fServerBased" );
+ PRINT();
+ LINESTART();
+ }
+ if( __nFlags & 0xBF00 )
+ {
+ ADDTEXT( " " );
+ ADDFLAG( 0x0200, " fAutoSort" );
+ ADDFLAG( 0x0400, " fAscendSort" );
+ ADDFLAG( 0x0800, " fAutoShow" );
+ ADDFLAG( 0x1000, " fAscendShow" );
+ ADDFLAG( 0x2000, " fCalculatedField" );
+ PRINT();
+ LINESTART();
+ }
+ if( __nFlags & 0x00FF4000 )
+ {
+ ADDTEXT( " " ); // Layout flags:
+ ADDFLAG( 0x00004000, " fLONewPage" ); // undocumented
+ ADDFLAG( 0x00200000, " fLOReport" ); // undocumented
+ ADDFLAG( 0x00400000, " fLOBlankLine" ); // undocumented
+ ADDFLAG( 0x00800000, " fLOSubTotalTop" ); // undocumented
+ PRINT();
+ LINESTART();
+ }
+ if( __nFlags & 0xFF000060 )
+ {
+ ADDTEXT( " !RESERVED!" );
+ PRINT();
+ }
+ if( !__nFlags )
+ PRINT();
+ LINESTART();
+ ADDTEXT( "reserved = " );
+ __AddHex( t, Read1( rIn ) );
+ ADDTEXT( " citmShow = " );
+ ADDDEC( 1 );
+ ADDTEXT( " isxdiSort = " );
+ ADDHEX( 2 );
+ ADDTEXT( " isxdiShow = " );
+ ADDHEX( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "number format = " );
+ UINT16 n = Read2( rIn );
+ if( n )
+ __AddDec( t, n );
+ else
+ ADDTEXT( "none" );
+ PRINT();
+ }
+ break;
+ case 0x01AE:
+ {
+ LINESTART();
+ ADDTEXT( "# of tabs: " );
+ UINT16 nTabs;
+ rIn >> nTabs;
+ __AddDec( t, nTabs );
+ const UINT32 n = rIn.Tell();
+ PRINT();
+ LINESTART();
+ if( nL <= 2 + 2 * nTabs )
+ {
+ ADDTEXT( "----- shortened record -----" );
+ PRINT();
+
+ rIn.Seek( n );
+ ContDump( nL - 2 );
+ }
+ else
+ {
+ INT32 nDummy;
+ ADDTEXT( "file name: " );
+ AddUNICODEString( t, rIn, nDummy );
+ PRINT();
+ while( nTabs )
+ {
+ LINESTART();
+ ADDTEXT( " " );
+ AddUNICODEString( t, rIn, nDummy );
+ PRINT();
+ nTabs--;
+ }
+
+// rIn.Seek( n );
+// ContDump( nL - 2 );
+ }
+
+ }
+ break;
+ case 0x01B0: // CONDFMT
+ {
+ PreDump( nL );
+
+ INT32 nCntDwn = nL;
+ UINT16 nNum;
+ LINESTART();
+ ADDTEXT( "# of formats: " );
+ rIn >> nNum;
+ __AddDec( t, nNum );
+ rIn >> __nFlags;
+ ADDTEXT( " " );
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fToughRecalc" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "range: " );
+ UINT16 nR1, nR2, nC1, nC2;
+ rIn >> nR1 >> nR2 >> nC1 >> nC2;
+ nCntDwn -= 12;
+ ADDCOLROW( nC1, nR1 );
+ if( nC1 != nC2 || nR1 != nR2 )
+ {
+ ADDTEXT( ":" );
+ ADDCOLROW( nC2, nR2 );
+ }
+ PRINT();
+ UINT16 nC = 0;
+ UINT16 nMac;
+ while( nCntDwn >= 10 )
+ {
+ LINESTART();
+ ADDTEXT( "SQREF #" );
+ __AddDec( t, nC );
+ ADDTEXT( " [" );
+ rIn >> nMac;
+ nCntDwn -= 2;
+ __AddDec( t, nMac );
+ ADDTEXT( "]" );
+ PRINT();
+ if( nMac )
+ {
+ LINESTART();
+ ADDTEXT( pPre );
+ while( nMac && nCntDwn >= 8 )
+ {
+ rIn >> nR1 >> nR2 >> nC1 >> nC2;
+ nCntDwn -= 8;
+ ADDCOLROW( nC1, nR1 );
+ if( nC1 != nC2 || nR1 != nR2 )
+ {
+ ADDTEXT( ":" );
+ ADDCOLROW( nC2, nR2 );
+ }
+ nMac--;
+ if( nMac )
+ ADDTEXT( " - " );
+ }
+ PRINT();
+ }
+
+ nC++;
+ }
+ if( nCntDwn > 0 )
+ ContDump( ( UINT16 ) nCntDwn );
+ }
+ break;
+ case 0x01B1: // CF
+ {
+ INT32 nCntDwn = nL;
+ UINT8 nCcf, nCp;
+ UINT16 nCce1, nCce2;
+ const UINT32 nStartPos = rIn.Tell();
+ rIn >> nCcf >> nCp >> nCce1 >> nCce2;
+ nCntDwn -= 6;
+ LINESTART();
+ ADDTEXT( "type (" );
+ __AddHex( t, nCcf );
+ ADDTEXT( "): " );
+ switch( nCcf )
+ {
+ case 0x01: p = "cond"; break;
+ case 0x02: p = "form"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ ADDTEXT( " operator (" );
+ __AddHex( t, nCp );
+ ADDTEXT( "): " );
+ switch( nCp )
+ {
+ case 0x00: p = "-/-"; break;
+ case 0x01: p = "between"; break;
+ case 0x02: p = "not between"; break;
+ case 0x03: p = "="; break;
+ case 0x04: p = "!="; break;
+ case 0x05: p = ">"; break;
+ case 0x06: p = "<"; break;
+ case 0x07: p = ">="; break;
+ case 0x08: p = "<="; break;
+ default: p = NULL;
+ }
+ if( p )
+ ADDTEXT( p );
+ else
+ __AddHex( t, nCp );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "cce1: " );
+ __AddDec( t, nCce1 );
+ ADDTEXT( " cce2: " );
+ __AddDec( t, nCce2 );
+ PRINT();
+
+ INT32 nPreForm = nCntDwn - nCce1 - nCce2;
+ if( nPreForm > 0 )
+ {
+ LINESTART();
+ ADDTEXT( "len rgbdxf: " );
+ __AddDec( t, nPreForm );
+ PRINT();
+
+ UINT32 nPosPreForm = rIn.Tell();
+ ContDump( ( UINT16 ) nPreForm );
+
+ rIn.Seek( nPosPreForm ); // start
+ UINT32 nFlags = Read4( rIn );
+ IGNORE( 2 );
+ BOOL bFont = TRUEBOOL( nFlags & 0x04000000 );
+ BOOL bLine = TRUEBOOL( nFlags & 0x10000000 );
+ BOOL bPatt = TRUEBOOL( nFlags & 0x20000000 );
+
+ LINESTART();
+ ADDTEXT( "start = " );
+ __AddPureBin( t, nFlags );
+ PRINT();
+
+ if( bFont )
+ {
+ LINESTART();
+ ADDTEXT( "- FONT - [ 118 ]" );
+ PRINT();
+
+ LINESTART();
+ ADDTEXT( "const: [ 20 ]" );
+ PRINT();
+ ContDump( 20 );
+
+ LINESTART();
+ ADDTEXT( "1. var: [ 44 ]" );
+ PRINT();
+ ContDump( 44 );
+
+ LINESTART();
+ ADDTEXT( "const: [ 4 ]" );
+ PRINT();
+ ContDump( 4 );
+
+ LINESTART();
+ ADDTEXT( "2. var: [ 33 ]" );
+ PRINT();
+ ContDump( 33 );
+
+ LINESTART();
+ ADDTEXT( "const: [ 17 ]" );
+ PRINT();
+ ContDump( 17 );
+ }
+
+ if( bLine )
+ {
+ LINESTART();
+ ADDTEXT( "- BORDER - [ 8 ]" );
+ PRINT();
+ ContDump( 8 );
+ }
+
+ if( bPatt )
+ {
+ LINESTART();
+ ADDTEXT( "- PATTERN -[ 4 ]" );
+ PRINT();
+ ContDump( 4 );
+ }
+
+ rIn.Seek( nPosPreForm + nPreForm );
+ nCntDwn -= nPreForm;
+ }
+
+ if( nCntDwn >= nCce1 )
+ {
+ LINESTART();
+ ADDTEXT( "form1:" );
+ PRINT();
+ FormulaDump( nCce1, FT_RangeName );
+ nCntDwn -= nCce1;
+ }
+ if( nCntDwn >= nCce2 )
+ {
+ LINESTART();
+ ADDTEXT( "form2:" );
+ PRINT();
+ FormulaDump( nCce2, FT_RangeName );
+// nCntDwn -= nCce2;
+ }
+ }
+ break;
+ case 0x01B2:
+ {
+ PreDump( nL );
+
+ rIn >> __nFlags;
+ LINESTART();
+ STARTFLAG();
+ ADDTEXT( " (" );
+ __AddPureBin( t, __nFlags );
+ ADDTEXT( ")" );
+ ADDTEXT( "):" );
+ ADDFLAG( 0x0001, " fWnClosed" );
+ ADDFLAG( 0x0002, " fWnPinned" );
+ ADDFLAG( 0x0004, " fCached" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "input window: " );
+ ADDHEX( 4 );
+ ADDTEXT( " / " );
+ ADDHEX( 4 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "object id: " );
+ ADDHEX( 4 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "num of DV recs: " );
+ ADDDEC( 4 );
+ PRINT();
+ }
+ break;
+ case 0x01BE:
+ {
+ PreDump( nL );
+ UINT32 __nFlags;
+ rIn >> __nFlags;
+ nLeft -= 4;
+ LINESTART();
+ STARTFLAG();
+ ADDTEXT( " (" );
+ __AddPureBin( t, __nFlags );
+ ADDTEXT( ")" );
+ PRINT();
+ LINESTART();
+ if( __nFlags )
+ {
+ ADDTEXT( " " );
+ ADDFLAG( 0x00000080, " fStrLookup" );
+ ADDFLAG( 0x00000100, " fAllowBlank" );
+ ADDFLAG( 0x00000200, " fSuppressCombo" );
+ ADDFLAG( 0x00040000, " fShowInputMsg" );
+ ADDFLAG( 0x00080000, " fShowErrorMsg" );
+ }
+ PRINT(); LINESTART();
+ const char* pValType[] =
+ {
+ "all", "integer", "decimal", "list", "date", "time", "text len", "user",
+ "8", "9", "A", "B", "C", "D", "E", "F"
+ };
+ LINESTART();
+ ADDTEXT( "validation type: " );
+ ADDTEXT( pValType[ __nFlags & 0x0000000F ] );
+ PRINT();
+
+ const char* pOpType[] =
+ {
+ "between", "not between", "equal", "not equal",
+ "greater", "less", "greater or equal", "less or equal",
+ "8", "9", "A", "B", "C", "D", "E", "F"
+ };
+ LINESTART();
+ ADDTEXT( "operator type: " );
+ ADDTEXT( pOpType[ ( __nFlags >> 20 ) & 0x0000000F ] );
+ PRINT();
+
+ LINESTART();
+ ADDTEXT( "Prompt Title: " );
+ AddUNICODEString( t, rIn, nLeft );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "Error Title: " );
+ AddUNICODEString( t, rIn, nLeft );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "Prompt Message: " );
+ AddUNICODEString( t, rIn, nLeft );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "Error Message: " );
+ AddUNICODEString( t, rIn, nLeft );
+ PRINT();
+ if( nLeft > 8 )
+ ContDump( ( UINT16 ) ( nLeft - 8 ) );
+
+ // Row-Row / Col-Col
+ UINT16 nR1, nR2, nC1, nC2;
+ rIn >> nR1 >> nR2 >> nC1 >> nC2;
+ LINESTART();
+ ADDTEXT( "Cells: " );
+ __AddRef( t, nC1, nR1 );
+ if( nC1 != nC2 || nR1 != nR2 )
+ {
+ ADDTEXT( " : " );
+ __AddRef( t, nC2, nR2 );
+ }
+ PRINT();
+ }
+ break;
+ case 0x01B8: // HLINK
+ {
+ PreDump( nL );
+
+ LINESTART();
+ PRINT();
+ ADDTEXT( "Row1 = " );
+ ADDDEC( 2 );
+ ADDTEXT( " Row2 = " );
+ ADDDEC( 2 );
+ ADDTEXT( " Col1 = " );
+ ADDDEC( 2 );
+ ADDTEXT( " Col2 = " );
+ ADDDEC( 2 );
+ PRINT();
+
+ ContDump( 20 );
+
+ rIn >> __nFlags;
+ IGNORE( 2 );
+ CHECKBREAK( 32 ); //
+ LINESTART();
+ ADDTEXT( "#1 " );
+ STARTFLAG();
+ ADDTEXT( " (" );
+ __AddPureBin( t, __nFlags );
+ ADDTEXT( ")" );
+ ADDFLAG( 0x02, " fAbs?" );
+ ADDFLAG( 0x08, " fMark (B3)" );
+ PRINT();
+ LINESTART();
+ PRINT();
+
+ while( nLeft > 0 )
+ {
+ UINT32 nStartPos = rIn.Tell();
+ UINT32 n1, n2;
+
+ rIn >> n1 >> n2;
+ CHECKBREAK( 8 );
+
+ LINESTART();
+
+ if( n1 == 0x00000303 && n2 == 0x00000000 )
+ {
+ ADDTEXT( "## file name ##" );
+ PRINT();
+ ContDump( 8 );
+ LINESTART();
+ ADDTEXT( "downlevel = " );
+ ADDDEC( 2 );
+ PRINT();
+ rIn >> n1;
+ CHECKBREAK( 14 );
+ LINESTART();
+ ADDTEXT( "len = " );
+ __AddDec( t, n1 );
+ PRINT();
+ CHECKBREAK( n1 );
+ ContDump( n1 );
+ }
+ else if( n1 == 0xDEADFFFF && n2 == 0x00000000 )
+ {
+ ADDTEXT( "## table name ##" );
+ PRINT();
+ ContDump( 16 );
+ rIn >> n2 >> n1;
+ IGNORE( 2 );
+ CHECKBREAK( 26 );
+ LINESTART();
+ __nFlags = ( UINT16 ) n2;
+ STARTFLAG();
+ ADDTEXT( " (" );
+ __AddPureBin( t, __nFlags );
+ ADDTEXT( ")" );
+ ADDFLAG( 0x04, " fAbs" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "len = " );
+ __AddDec( t, n1 );
+ PRINT();
+ CHECKBREAK( n1 );
+ ContDump( n1 );
+ }
+ else if( n1 == 0x79EAC9E0 && n2 == 0x11CEBAF9 )
+ {
+ ADDTEXT( "## URL ##" );
+ PRINT();
+ ContDump( 8 );
+ rIn >> n1;
+ CHECKBREAK( 12 );
+ LINESTART();
+ ADDTEXT( "len = " );
+ __AddDec( t, n1 );
+ PRINT();
+ CHECKBREAK( n1 );
+ ContDump( n1 );
+ }
+ else
+ {
+ nLeft += 4;
+ rIn.Seek( nStartPos + 4 ); // n1 still valid!
+ ADDTEXT( "## string ##" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "chars = " );
+ __AddDec( t, n1 );
+ PRINT();
+ n1 *= 2; // n1 was number of chars
+ CHECKBREAK( n1 );
+ ContDump( n1 );
+ }
+ }
+ }
+ break;
+ case 0x0201:
+ {
+ LINESTART();
+ ADDCELLHEAD();
+ PRINT();
+ }
+ break;
+ case 0x0208: // ROW - row info
+ {
+ LINESTART();
+ ADDTEXT( "row #: " );
+ ADDDEC( 2 );
+ ADDTEXT( " def. cols: " );
+ ADDDEC( 2 );
+ ADDTEXT( "-" );
+ ADDDEC( 2 );
+ ADDTEXT( " ht: " );
+ ADDDEC( 2 );
+ ADDTEXT( " reserved: " );
+ ADDHEX( 4 );
+ PRINT();
+ rIn >> __nFlags;
+ LINESTART();
+ STARTFLAG();
+ ADDTEXT( " outlnlev=" );
+ __AddDec( t, (UINT16)(__nFlags & 0x0007) );
+ ADDFLAG( 0x0010, " fCollapsed" );
+ ADDFLAG( 0x0020, " fRowHeightZero" );
+ ADDFLAG( 0x0040, " fUnsynced" );
+ ADDFLAG( 0x0080, " fGhostDirty" );
+ ADDFLAG( 0xFF08, " !RESERVED!" );
+ PRINT();
+ if( __nFlags & 0x0080 )
+ {
+ UINT16 nXF;
+ rIn >> nXF;
+ LINESTART();
+ ADDTEXT( "ix to XF: " );
+ __AddDec( t, (UINT16)(nXF & 0x0FFF) );
+ ADDTEXT( " add. flags(" );
+ __AddHex( t, nXF );
+ ADDTEXT( "):" );
+ ADDFLAG( 0x1000, " fExAsc" );
+ ADDFLAG( 0x2000, " fExDsc" );
+ ADDFLAG( 0xC000, " !RESERVED!" );
+ }
+ }
+ break;
+ case 0x0225: // DEFAULTROWHEIGHT - height & flags
+ {
+ rIn >> __nFlags;
+ LINESTART();
+ ADDTEXT( "default row " );
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fUnsynced" );
+ ADDFLAG( 0x0002, " fRowHtZero" );
+ ADDFLAG( 0x0004, " fExAsc" );
+ ADDFLAG( 0x0008, " fExDsc" );
+ ADDFLAG( 0xFFF0, " !RESERVED!" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "default row height: " );
+ ADDDEC( 2 );
+ PRINT();
+ }
+ break;
+ case 0x027E:
+ {
+ ADDCELLHEAD();
+ ADDTEXT( " val = " );
+ __AddDouble( t, ImportExcel::RkToDouble( Read4( rIn ) ) );
+ PRINT();
+ }
+ break;
+ case 0x04BC:
+ {
+ UINT16 nR1, nR2;
+ UINT8 nC1, nC2;
+ LINESTART();
+ rIn >> nR1 >> nR2 >> nC1 >> nC2;
+ __AddRef( t, nC1, nR1 );
+ ADDTEXT( " - " );
+ __AddRef( t, nC2, nR2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "reserved = " );
+ __AddPureHex( t, Read2( rIn ) );
+ UINT16 n;
+ rIn >> n;
+ ADDTEXT( " cce = " );
+ __AddDec( t, n );
+ PRINT();
+ FormulaDump( n, FT_SharedFormula );
+ }
+ break;
+ case 0x0803: // WEBQRYSETTINGS - web query: options
+ {
+ UINT16 nCnt;
+ LINESTART();
+ ADDTEXT( "repeated recnum: " );
+ ADDHEX( 2 );
+ ADDTEXT( " unknown:" );
+ for( nCnt = 0; nCnt < 3; nCnt++ )
+ {
+ ADDTEXT( " " );
+ ADDHEX( 2 );
+ }
+ PRINT();
+ LINESTART();
+ rIn >> __nFlags;
+ STARTFLAG();
+ ADDFLAG( 0x0001, "fImportPRE " );
+ ADDFLAG( 0x0002, "fIgnoreSep " );
+ ADDFLAG( 0x0004, "fUseSetting " );
+ ADDFLAG( 0x0010, "fIgnoreDate " );
+ ADDFLAG( 0x0020, "fWhatIsIt? " );
+ ADDFLAG( 0xFFC8, "!UNKNOWN! " );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "unknown: " );
+ for( nCnt = 0; nCnt < 9; nCnt++ )
+ {
+ ADDTEXT( " " );
+ ADDHEX( 2 );
+ }
+ PRINT();
+ }
+ break;
+ case 0x0804: // WEBQRYTABLES - web query: selected tables
+ {
+ INT32 nDummy;
+ LINESTART();
+ ADDTEXT( "repeated recnum: " );
+ ADDHEX( 2 );
+ ADDTEXT( " unknown: " );
+ ADDHEX( 2 );
+ PRINT();
+ if( nL > 6 )
+ {
+ LINESTART();
+ ADDTEXT( "text: " );
+ AddUNICODEString( t, rIn, nDummy );
+ PRINT();
+ }
+ }
+ break;
+ case 0x0809: // BOF
+ {
+ LINESTART();
+ ADDTEXT( "version number: " );
+ ADDHEX( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "substream type: " );
+ UINT16 n;
+ rIn >> n;
+ __AddHex( t, n );
+ ADDTEXT( " (" );
+ switch( n )
+ {
+ case 0x0005: p = "Workbook globals"; break;
+ case 0x0006: p = "Visual Basic module"; break;
+ case 0x0010: p = "Worksheet or dialog sheet"; break;
+ case 0x0020: p = "Chart"; break;
+ case 0x0040: p = "MS 4.0 Macro"; break;
+ case 0x0100: p = "Workspace file"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ ADDTEXT( ")" );
+ PRINT();
+ LINESTART();
+ rIn >> n;
+ ADDTEXT( "build identifier: ");
+ __AddHex( t, n );
+ ADDTEXT( " (=" );
+ __AddDec( t, n );
+ ADDTEXT( ")" );
+ PRINT();
+
+ LINESTART();
+ rIn >> n;
+ ADDTEXT( "build year: ");
+ __AddHex( t, n );
+ ADDTEXT( " (=" );
+ __AddDec( t, n );
+ ADDTEXT( ")" );
+ PRINT();
+
+ UINT32 __nFlags;
+ rIn >> __nFlags;
+ LINESTART();
+ ADDTEXT( "file history " );
+ STARTFLAG();
+ if( __nFlags )
+ {
+ ADDFLAG( 0x00000001, " fWin" );
+ ADDFLAG( 0x00000002, " fRisc" );
+ ADDFLAG( 0x00000004, " fBeta" );
+ ADDFLAG( 0x00000008, " fWinAny" );
+ ADDFLAG( 0x00000010, " fMacAny" );
+ ADDFLAG( 0x00000020, " fBetaAny" );
+ ADDFLAG( 0x00000100, " fRiscAny" );
+ ADDFLAG( 0xFFFFE0C0, " fXxxxxxx" );
+ }
+ PRINT();
+
+ LINESTART();
+ ADDTEXT( "lowest BIFF version: ");
+ ADDHEX( 4 );
+ PRINT();
+ }
+ break;
+ case 0x1002: // ChartChart
+ {
+ LINESTART();
+ ADDTEXT( "Pos = " );
+ ADD16P16();
+ ADDTEXT( " / " );
+ ADD16P16();
+ ADDTEXT( " Size = " );
+ ADD16P16();
+ ADDTEXT( " / " );
+ ADD16P16();
+ PRINT();
+ }
+ break;
+ case 0x1003: // ChartSeries
+ {
+ UINT16 nSdtX, nSdtY, nCValx, nCValy, nSdtBSize, nCValBSize;
+ rIn >> nSdtX >> nSdtY >> nCValx >> nCValy >> nSdtBSize >> nCValBSize;
+ LINESTART();
+ ADDTEXT( "categories: " );
+ ADDTEXT( GetSeriesType( nSdtX ) );
+ ADDTEXT( " values: " );
+ ADDTEXT( GetSeriesType( nSdtY ) );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "Count of categories = " );
+ __AddDec( t, nCValx );
+ ADDTEXT( " Count of values = " );
+ __AddDec( t, nCValy );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "Type of data in Bubble size series: " );
+ const sal_Char* p = GetSeriesType( nSdtBSize );
+ ADDTEXT( p );
+ if ( p == pU )
+ __AddHex( t, nSdtBSize );
+ ADDTEXT( " count = " );
+ __AddDec( t, nCValBSize );
+ PRINT();
+ }
+ break;
+ case 0x1006: // ChartDataformat
+ {
+ UINT16 n;
+ LINESTART();
+ rIn >> n;
+ ADDTEXT( "Point number = " );
+ __AddDec( t, n );
+ if( n == 0xFFFF )
+ ADDTEXT( " (entire series)" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "Series index = " );
+ ADDDEC( 2 );
+ ADDTEXT( " Series number = " );
+ ADDDEC( 2 );
+ if( Read2( rIn ) & 0x01 )
+ ADDTEXT( " (fXL4iss)" );
+ PRINT();
+ }
+ break;
+ case 0x1007: // ChartLineform
+ {
+ LINESTART();
+ ADDTEXT( "Color = " );
+ ADDTEXT( GetRGB( Read4( rIn ) ) );
+ ADDTEXT( " Pattern : " );
+ ADDTEXT( GetLineType( Read2( rIn ) ) );
+ switch( ( INT16 ) Read2( rIn ) )
+ {
+ case -1: p = "hairline"; break;
+ case 0: p = "narrow (single)"; break;
+ case 1: p = "medium (double)"; break;
+ case 2: p = "wide (triple)"; break;
+ default: p = pU;
+ }
+ ADDTEXT( ", " );
+ ADDTEXT( p );
+ PRINT();
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fAuto" );
+ ADDFLAG( 0x0004, " fDrawTick" );
+ PRINT();
+ }
+ LINESTART();
+ ADDTEXT( "color index = " );
+ ADDDEC( 2 );
+ PRINT();
+ }
+ break;
+ case 0x1009: // ChartMarkerformat
+ {
+ UINT16 n;
+ LINESTART();
+ ADDTEXT( "Fore = " );
+ ADDTEXT( GetRGB( Read4( rIn ) ) );
+ ADDTEXT( " Back = " );
+ ADDTEXT( GetRGB( Read4( rIn ) ) );
+ rIn >> n;
+ switch( n )
+ {
+ case 0: p = "no marker"; break;
+ case 1: p = "square"; break;
+ case 2: p = "diamond"; break;
+ case 3: p = "triangle"; break;
+ case 4: p = "X"; break;
+ case 5: p = "star"; break;
+ case 6: p = "Dow-Jones"; break;
+ case 7: p = "std deviation"; break;
+ case 8: p = "circle"; break;
+ case 9: p = "plus sign"; break;
+ default: p = pU;
+ }
+ ADDTEXT( " Type = " );
+ ADDTEXT( p );
+ PRINT();
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fAuto" );
+ ADDFLAG( 0x0010, " fNoBackg" );
+ ADDFLAG( 0x0020, " fNoFore" );
+ ADDFLAG( 0xFFCE, " UNKNOWN" );
+ PRINT();
+ }
+ LINESTART();
+ ADDTEXT( "border color = " );
+ ADDDEC( 2 );
+ ADDTEXT( " fill color = " );
+ ADDDEC( 2 );
+ ADDTEXT( " size = " );
+ ADDDEC(4);
+ PRINT();
+ }
+ break;
+ case 0x100A: // ChartAreaformat
+ {
+ LINESTART();
+ ADDTEXT( "Fore = " );
+ ADDTEXT( GetRGB( Read4( rIn ) ) );
+ ADDTEXT( " Back = " );
+ ADDTEXT( GetRGB( Read4( rIn ) ) );
+ ADDTEXT( " Pattern = " );
+ UINT16 n;
+ rIn >> n >> __nFlags;
+ __AddDec( t, n );
+ ADDTEXT( " (" );
+ __AddHex( t, n );
+ ADDTEXT( ")" );
+ PRINT();
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x01, " fAuto" );
+ ADDFLAG( 0x02, " fInvertNeg" );
+ PRINT();
+ }
+ }
+ LINESTART();
+ ADDTEXT( "color index fore = " );
+ ADDDEC( 2 );
+ ADDTEXT( ", back = " );
+ ADDDEC( 2 );
+ PRINT();
+ break;
+ case 0x100B: // ChartPieformat
+ LINESTART();
+ ADDDEC( 2 );
+ ADDTEXT( "%" );
+ PRINT();
+ break;
+ case 0x100C: // ChartAttachedlabel
+ ContDump( nL );
+ break;
+ case 0x100D: // ChartSeriestext
+ ContDump( nL );
+ break;
+ case 0x1014: // ChartChartformat
+ {
+ ContDump( 16 );
+ LINESTART();
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fVaried" );
+ PRINT();
+ }
+ LINESTART();
+ ADDTEXT( "drawing order = " );
+ ADDDEC( 2 );
+ PRINT();
+ }
+ break;
+ case 0x1015: // ChartLegend
+ {
+ UINT32 nX, nY, nDx, nDy;
+ UINT8 nWType, nWSpacing;
+ rIn >> nX >> nY >> nDx >> nDy >> nWType >> nWSpacing >> __nFlags;
+ LINESTART();
+ __AddDec( t, nX );
+ ADDTEXT( " / " );
+ __AddDec( t, nY );
+ ADDTEXT( " [" );
+ __AddDec( t, nDx );
+ ADDTEXT( " / " );
+ __AddDec( t, nDy );
+ ADDTEXT( "]" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( " Type: " );
+ switch( nWType )
+ {
+ case 0: p = "bottom"; break;
+ case 1: p = "corner"; break;
+ case 2: p = "top"; break;
+ case 3: p = "right"; break;
+ case 4: p = "left"; break;
+ case 7: p = "not docked or inside the plot area"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ ADDTEXT( " Spacing: " );
+ switch( nWSpacing )
+ {
+ case 0: p = "close"; break;
+ case 1: p = "medium"; break;
+ case 2: p = "open"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ PRINT();
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x01, " fAutoPosition" );
+ ADDFLAG( 0x02, " fAutoSeries" );
+ ADDFLAG( 0x04, " fAutoPosX" );
+ ADDFLAG( 0x08, " fAutoPosY" );
+ ADDFLAG( 0x10, " fVert" );
+ ADDFLAG( 0x20, " fWasDataTable" );
+ PRINT();
+ }
+ }
+ break;
+ case 0x1016: // ChartSerieslist
+ ContDump( nL );
+ break;
+ case 0x1017: // ChartBar
+ {
+ LINESTART();
+ ADDTEXT( "space betw. bars = " );
+ ADDDEC( 2 );
+ ADDTEXT( " space betw. cat = " );
+ ADDDEC( 2 );
+ PRINT();
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fTranspose" );
+ ADDFLAG( 0x0002, " fStacked" );
+ ADDFLAG( 0x0004, " f100" );
+ ADDFLAG( 0x0008, " fHasShadow" );
+ PRINT();
+ }
+ }
+ break;
+ case 0x1018: // ChartLine
+ ContDump( nL );
+ break;
+ case 0x1019: // ChartPie
+ ContDump( nL );
+ break;
+ case 0x101A: // ChartArea
+ ContDump( nL );
+ break;
+ case 0x101C: // ChartLine
+ ContDump( nL );
+ break;
+ case 0x101D: // ChartAxis
+ {
+ LINESTART();
+ switch( Read2( rIn ) )
+ {
+ case 0: p = "category axis or x axis on a scatter chart"; break;
+ case 1: p = "value axis"; break;
+ case 2: p = "series axis"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ PRINT();
+ ContDump( 16 );
+ }
+ break;
+ case 0x101E: // ChartTick
+ {
+ LINESTART();
+ switch( Read1( rIn ) )
+ {
+ case 0: p = "invisible"; break;
+ case 1: p = "inside of axis line"; break;
+ case 2: p = "outside of axis line"; break;
+ case 3: p = "cross axis line"; break;
+ default: p = pU;
+ }
+ ADDTEXT( "major = " );
+ ADDTEXT( p );
+ switch( Read1( rIn ) )
+ {
+ case 0: p = "invisible"; break;
+ case 1: p = "inside of axis line"; break;
+ case 2: p = "outside of axis line"; break;
+ case 3: p = "cross axis line"; break;
+ default: p = pU;
+ }
+ ADDTEXT( " minor = " );
+ ADDTEXT( p );
+ PRINT();
+ LINESTART();
+ switch( Read1( rIn ) )
+ {
+ case 0: p = "invisible"; break;
+ case 1: p = "low end"; break;
+ case 2: p = "high end"; break;
+ case 3: p = "next to axis"; break;
+ default: p = pU;
+ }
+ ADDTEXT( "position = " );
+ ADDTEXT( p );
+ switch( Read1( rIn ) )
+ {
+ case 1: p = "transparent"; break;
+ case 2: p = "opaque"; break;
+ default: p = pU;
+ }
+ ADDTEXT( " mode = " );
+ ADDTEXT( p );
+ ADDTEXT( " text col = " );
+ ADDTEXT( GetRGB( Read4( rIn ) ) );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "reserved = " );
+ ADDHEX( 4 ); t += ' ';
+ ADDHEX( 4 ); t += ' ';
+ ADDHEX( 4 ); t += ' ';
+ ADDHEX( 4 );
+ PRINT();
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fAutoCol" );
+ ADDFLAG( 0x0002, " fAutoBack" );
+ ADDFLAG( 0x0020, " fAutoRot" );
+ PRINT();
+ }
+ LINESTART();
+ ADDTEXT( "color index = " );
+ ADDDEC( 2 );
+ ADDTEXT( " rotation = " );
+ ADDDEC( 2 );
+ PRINT();
+ }
+ break;
+ case 0x101F: // ChartValuerange
+ {
+ LINESTART();
+ ADDTEXT( "min val = " );
+ __AddDouble( t, Read8( rIn ) );
+ ADDTEXT( " max val = " );
+ __AddDouble( t, Read8( rIn ) );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "major incr = " );
+ __AddDouble( t, Read8( rIn ) );
+ ADDTEXT( " minor incr = " );
+ __AddDouble( t, Read8( rIn ) );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "cross val = " );
+ __AddDouble( t, Read8( rIn ) );
+ PRINT();
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fAutoMin" );
+ ADDFLAG( 0x0002, " fAutoMax" );
+ ADDFLAG( 0x0004, " fAutoMajor" );
+ ADDFLAG( 0x0008, " fAutoMinor" );
+ ADDFLAG( 0x0010, " fAutoCross" );
+ ADDFLAG( 0x0020, " fLogScale" );
+ ADDFLAG( 0x0040, " fReverse" );
+ ADDFLAG( 0x0080, " fMaxCross" );
+ PRINT();
+ }
+ }
+ break;
+ case 0x1020: // ChartCatserrange
+ {
+ LINESTART();
+ ADDTEXT( "Value axis / category crossing point: " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "label freq = " );
+ ADDDEC( 2 );
+ ADDTEXT( " mark freq = " );
+ ADDDEC( 2 );
+ PRINT();
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fBetween" );
+ ADDFLAG( 0x0002, " fMaxCross" );
+ ADDFLAG( 0x0004, " fReverse" );
+ PRINT();
+ }
+ }
+ break;
+ case 0x1021: // ChartAxislineformat
+ {
+ LINESTART();
+ switch( Read2( rIn ) )
+ {
+ case 0: p = "axis line itself"; break;
+ case 1: p = "major grid line"; break;
+ case 2: p = "minor grid line"; break;
+ case 3: p = "walls or floor"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ PRINT();
+ }
+ break;
+ case 0x1022: // CHARTFORMATLINK
+ ContDump( nL );
+ break;
+ case 0x1024: // ChartDefaulttext
+ ContDump( nL );
+ break;
+ case 0x1025: // ChartText
+ {
+ LINESTART();
+ UINT8 nAt, nVat;
+ UINT16 nBkgMode;
+ INT32 nX, nY, nDx, nDy;
+ UINT16 nGrbit2, nIcvText;
+ INT16 nTrot;
+ rIn >> nAt >> nVat >> nBkgMode;
+ ADDTEXT( "h = " );
+ switch( nAt )
+ {
+ case 1: p = "left"; break;
+ case 2: p = "center"; break;
+ case 3: p = "right"; break;
+ case 4: p = "justify"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ ADDTEXT( " v = " );
+ switch( nVat )
+ {
+ case 1: p = "top"; break;
+ case 2: p = "center"; break;
+ case 3: p = "bottom"; break;
+ case 4: p = "justify"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ ADDTEXT( " mode = " );
+ if( nBkgMode == 1 )
+ ADDTEXT( "transparent" );
+ else if( nBkgMode == 2 )
+ ADDTEXT( "opaque" );
+ else
+ ADDTEXT( pU );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "color = " );
+ ADDTEXT( GetRGB( Read4( rIn ) ) );
+ rIn >> nX >> nY >> nDx >> nDy >> __nFlags >> nIcvText >> nGrbit2 >> nTrot;
+ ADDTEXT( " pos[size] = " );
+ __AddDec( t, nX );
+ ADDTEXT( " / " );
+ __AddDec( t, nY );
+ ADDTEXT( " [" );
+ __AddDec( t, nDx );
+ ADDTEXT( " / " );
+ __AddDec( t, nDy );
+ ADDTEXT( "]" );
+ PRINT();
+ LINESTART();
+ ADDTEXT( " (pos[size] = " );
+ __AddHex( t, nX );
+ ADDTEXT( " / " );
+ __AddHex( t, nY );
+ ADDTEXT( " [" );
+ __AddHex( t, nDx );
+ ADDTEXT( " / " );
+ __AddHex( t, nDy );
+ ADDTEXT( "])" );
+ PRINT();
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fAutoColor" );
+ ADDFLAG( 0x0002, " fShowKey" );
+ ADDFLAG( 0x0004, " fShowValue" );
+ ADDFLAG( 0x0008, " fVert" );
+ ADDFLAG( 0x0010, " fAutoText" );
+ ADDFLAG( 0x0020, " fGenerated" );
+ ADDFLAG( 0x0040, " fDeleted" );
+ ADDFLAG( 0x0080, " fAutoMode" );
+ ADDFLAG( 0x0800, " fShLabPct" );
+ ADDFLAG( 0x1000, " fShowPct" );
+ ADDFLAG( 0x2000, " fShowBubbleSizes" );
+ ADDFLAG( 0x4000, " fShowLabel" );
+ PRINT();
+ }
+ LINESTART();
+ ADDTEXT( "rot = " );
+ switch( __nFlags & 0x0700 )
+ {
+ case 0x0000: p = "no rotation"; break;
+ case 0x0100: p = "top to bottom, upright"; break;
+ case 0x0200: p = "90 deg counterclockwise"; break;
+ case 0x0300: p = "90 deg clockwise"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ ADDTEXT( " trot = " );
+ __AddDec( t, nTrot );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "text color = " );
+ __AddDec( t, nIcvText );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "placement: " );
+ switch( nGrbit2 & 0x000F )
+ {
+ case 0: p = "0 default"; break;
+ case 1: p = "outside"; break;
+ case 2: p = "inside"; break;
+ case 3: p = "center"; break;
+ case 4: p = "axis"; break;
+ case 5: p = "above"; break;
+ case 6: p = "below"; break;
+ case 7: p = "left"; break;
+ case 8: p = "right"; break;
+ case 9: p = "auto"; break;
+ case 10: p = "moved"; break;
+ default: p = pU;
+ }
+ ADDTEXT( p );
+ PRINT();
+ }
+ break;
+ case 0x1026: // ChartFontx
+ ContDump( nL );
+ break;
+ case 0x1027: // ChartObjectLink
+ ContDump( nL );
+ break;
+ case 0x1032: // ChartFrame
+ {
+ LINESTART();
+ switch( Read2( rIn ) )
+ {
+ case 0: p = "no border"; break;
+ case 1:
+ case 2:
+ case 3: p = "reserved"; break;
+ case 4: p = "with shadow"; break;
+ default: p = pU;
+ }
+ ADDTEXT( "Frame type: " );
+ ADDTEXT( p );
+ PRINT();
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x01, " fAutoSize" );
+ ADDFLAG( 0x02, " fAutoPosition" );
+ PRINT();
+ }
+ }
+ break;
+ case 0x1035: // ChartPlotarea
+ ContDump( nL );
+ break;
+ case 0x103A: // Chart3D
+ ContDump( nL );
+ break;
+ case 0x103C: // ChartPicf
+ ContDump( nL );
+ break;
+ case 0x103D: // ChartDropbar
+ ContDump( nL );
+ break;
+ case 0x103E: // ChartRadar
+ ContDump( nL );
+ break;
+ case 0x103F: // ChartSurface
+ ContDump( nL );
+ break;
+ case 0x1040: // ChartRadararea
+ ContDump( nL );
+ break;
+ case 0x1041: // ChartAxisparent
+ {
+ LINESTART();
+ switch( Read2( rIn ) )
+ {
+ case 0: p = "main"; break;
+ case 1: p = "secondary"; break;
+ default: p = pU;
+ }
+ ADDTEXT( "Index: " );
+ ADDTEXT( p );
+ ADDTEXT( " " );
+ ADDDEC(4);
+ ADDTEXT( '/' );
+ ADDDEC(4);
+ ADDTEXT( " [" );
+ ADDDEC(4);
+ ADDTEXT( '/' );
+ ADDDEC(4);
+ ADDTEXT( ']' );
+ PRINT();
+ }
+ break;
+ case 0x1043: // ChartLegendxn
+ ContDump( nL );
+ break;
+ case 0x1044: // ChartShtprops
+ ContDump( nL );
+ break;
+ case 0x1045: // ChartSertocrt
+ ContDump( nL );
+ break;
+ case 0x1046: // ChartAxesused
+ {
+ LINESTART();
+ ADDTEXT( "Used : " );
+ ADDDEC( 2 );
+ PRINT();
+ }
+ break;
+ case 0x1048: // ChartSbaseref
+ ContDump( nL );
+ break;
+ case 0x104A: // ChartSerparent
+ ContDump( nL );
+ break;
+ case 0x104B: // ChartSerauxtrend
+ ContDump( nL );
+ break;
+ case 0x104E: // ChartIfmt
+ ContDump( nL );
+ break;
+ case 0x104F: // ChartPos
+ {
+ LINESTART();
+ UINT16 nMdTopLt, nMdBotRt;
+ INT32 nX, nY, nDx, nDy;
+ rIn >> nMdTopLt >> nMdBotRt >> nX >> nY >> nDx >> nDy;
+ ADDTEXT( "TopLr = " );
+ __AddDec( t, nMdTopLt );
+ ADDTEXT( " BotRt = " );
+ __AddDec( t, nMdBotRt );
+ PRINT();
+ LINESTART();
+ __AddDec( t, nX );
+ ADDTEXT( " / " );
+ __AddDec( t, nY );
+ ADDTEXT( " [" );
+ __AddDec( t, nDx );
+ ADDTEXT( " / " );
+ __AddDec( t, nDy );
+ ADDTEXT( "]" );
+ PRINT();
+ }
+ break;
+ case 0x1050: // ChartAlruns
+ ContDump( nL );
+ break;
+ case 0x1051: // AI
+ {
+ LINESTART();
+ UINT8 n8 = Read1( rIn );
+ switch( n8 )
+ {
+ case 0: p = "title or text"; break;
+ case 1: p = "values"; break;
+ case 2: p = "categories"; break;
+ default: p = pU;
+ }
+ ADDTEXT( "Link index identifier: " );
+ ADDTEXT( p );
+ if ( p == pU )
+ __AddHex( t, n8 );
+ PRINT();
+ LINESTART();
+ switch( Read1( rIn ) )
+ {
+ case 0: p = "use default categories"; break;
+ case 1: p = "text or value"; break;
+ case 2: p = "linked to worksheet"; break;
+ case 3: p = "not used (HaHaHa...)"; break;
+ case 4: p = "error reported"; break;
+ default: p = pU;
+ }
+ ADDTEXT( "Refernce type: " );
+ ADDTEXT( p );
+ PRINT();
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x01, " fCustomIfmt" );
+ PRINT();
+ }
+ LINESTART();
+ ADDTEXT( "Numberformat = " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ UINT16 n;
+ rIn >> n;
+ ADDTEXT( "Formula [" );
+ __AddDec( t, n );
+ ADDTEXT( "]: ---------------- " );
+ PRINT();
+ FormulaDump( n, FT_CellFormula );
+ }
+ break;
+ case 0x105B: // ChartSerauxerrbar
+ ContDump( nL );
+ break;
+ case 0x105D: // ChartSerfmt
+ ContDump( nL );
+ break;
+ case 0x105F: // Chart3DDataForm
+ {
+ UINT8 nGround, nTop;
+ nGround = Read1( rIn );
+ nTop = Read1( rIn );
+ UINT16 nStyle = ((UINT16)nGround << 8) | nTop;
+ LINESTART();
+ ADDTEXT( "3D - format (" );
+ __AddHex( t, nGround );
+ ADDTEXT( " " );
+ __AddHex( t, nTop );
+ ADDTEXT( "): " );
+ switch( nStyle )
+ {
+ case 0x0000: ADDTEXT( "bar" ); break;
+ case 0x0001: ADDTEXT( "pyramid" ); break;
+ case 0x0002: ADDTEXT( "pyramid, cut" ); break;
+ case 0x0100: ADDTEXT( "cylinder" ); break;
+ case 0x0101: ADDTEXT( "cone" ); break;
+ case 0x0102: ADDTEXT( "cone, cut" ); break;
+ default: ADDTEXT( pU );
+ }
+ PRINT();
+ }
+ break;
+ case 0x1060: // ChartFbi
+ {
+ LINESTART();
+ ADDTEXT( "dmixBasis = " );
+ ADDDEC( 2 );
+ ADDTEXT( " dmiyBasis = " );
+ ADDDEC( 2 );
+ ADDTEXT( " twpHeightBasis = " );
+ ADDDEC( 2 );
+ ADDTEXT( " scab = " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "ifnt = " );
+ ADDDEC( 2 );
+ PRINT();
+ }
+ break;
+ case 0x1061: // ChartBoppop
+ ContDump( nL );
+ break;
+ case 0x1062: // ChartAxcext
+ {
+ LINESTART();
+ ADDTEXT( "cat on axis: " );
+ ADDDEC( 2 );
+ ADDTEXT( " ... " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "major unit: val = " );
+ ADDDEC( 2 );
+ ADDTEXT( " units = " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "minor unit: val = " );
+ ADDDEC( 2 );
+ ADDTEXT( " units = " );
+ ADDDEC( 2 );
+ PRINT();
+ LINESTART();
+ ADDTEXT( "base unit = " );
+ ADDDEC( 2 );
+ ADDTEXT( " crossing point of val axis = " );
+ ADDDEC( 2 );
+ PRINT();
+ rIn >> __nFlags;
+ if( __nFlags )
+ {
+ LINESTART();
+ STARTFLAG();
+ ADDFLAG( 0x0001, " fAutiMin" );
+ ADDFLAG( 0x0002, " fAutoMax" );
+ ADDFLAG( 0x0004, " fAutoMajor" );
+ ADDFLAG( 0x0008, " fAutoMinor" );
+ ADDFLAG( 0x0010, " fDateAxis" );
+ ADDFLAG( 0x0020, " fAutoBase" );
+ ADDFLAG( 0x0040, " fAutoCross" );
+ ADDFLAG( 0x0080, " fAutoDate" );
+ PRINT();
+ }
+ }
+ break;
+ case 0x1063: // ChartDat
+ ContDump( nL );
+ break;
+ case 0x1064: // ChartPlotgrowth
+ {
+ UINT32 nDx, nDy;
+ rIn >> nDx >> nDy;
+ LINESTART();
+ ADDTEXT( "dxPlotGrowth = " );
+ __Add16p16( t, nDx );
+ ADDTEXT( " (" );
+ __AddHex( t, nDx );
+ ADDTEXT( ") dyPlotGrowth = " );
+ __Add16p16( t, nDy );
+ ADDTEXT( " (" );
+ __AddHex( t, nDy );
+ ADDTEXT( ")" );
+ PRINT();
+ }
+ break;
+ case 0x1065: // ChartSiindex
+ ContDump( nL );
+ break;
+ case 0x1066: // ChartGelframe
+ ContDump( nL );
+ break;
+ case 0x1067: // ChartBoppcustom
+ ContDump( nL );
+ break;
+ default:
+ ContDump( nL );
+ }
+
+ }
+
+ if( nLeft < 0 )
+ {
+ LINESTART();
+ ADDTEXT( " ----- RECORD OVER READ -----" );
+ PRINT();
+ }
+
+ if( bDec )
+ pLevelPre -= nLevelInc;
+}
+
+
+static const sal_Char* GetBlipType( UINT8 n )
+{
+ switch ( n )
+ {
+ case 0 :
+ return " ERROR";
+ break;
+ case 1 :
+ return " UNKNOWN";
+ break;
+ case 2 :
+ return " EMF";
+ break;
+ case 3 :
+ return " WMF";
+ break;
+ case 4 :
+ return " PICT";
+ break;
+ case 5 :
+ return " JPEG";
+ break;
+ case 6 :
+ return " PNG";
+ break;
+ case 7 :
+ return " DIB";
+ break;
+ default:
+ if ( n < 32 )
+ return " NotKnown";
+ else
+ return " Client";
+ }
+}
+
+void Biff8RecDumper::EscherDump( const UINT16 nMaxLen )
+{
+#if 0
+// if an entire hex block is needed
+ ULONG nPos = pIn->Tell();
+ ContDump( nMaxLen );
+ pIn->Seek( nPos );
+#endif
+
+ INT32 n = nMaxLen;
+ UINT16 nPre, nR;
+ UINT32 nL;
+ const sal_Char* p;
+ ByteString aT;
+ UINT16 nDumpSize;
+
+ aT += pLevelPre;
+
+ while( n > 0 )
+ {
+ *pIn >> nPre >> nR >> nL;
+ n -= sizeof( nPre ) + sizeof( nR ) + sizeof( nL );
+
+ switch( nR )
+ {
+ case 0xF000: p = "MsofbtDggContainer"; break;
+ case 0xF006: p = "MsofbtDgg"; break;
+ case 0xF016: p = "MsofbtCLSID"; break;
+ case 0xF00B: p = "MsofbtOPT"; break;
+ case 0xF11A: p = "MsofbtColorMRU"; break;
+ case 0xF11E: p = "MsofbtSplitMenuColors"; break;
+ case 0xF001: p = "MsofbtBstoreContainer"; break;
+ case 0xF007: p = "MsofbtBSE"; break;
+ case 0xF002: p = "MsofbtDgContainer"; break;
+ case 0xF008: p = "MsofbtDg"; break;
+ case 0xF118: p = "MsofbtRegroupItem"; break;
+ case 0xF120: p = "MsofbtColorScheme"; break;
+ case 0xF003: p = "MsofbtSpgrContainer"; break;
+ case 0xF004: p = "MsofbtSpContainer"; break;
+ case 0xF009: p = "MsofbtSpgr"; break;
+ case 0xF00A: p = "MsofbtSp"; break;
+ case 0xF00C: p = "MsofbtTextbox"; break;
+ case 0xF00D: p = "MsofbtClientTextbox"; break;
+ case 0xF00E: p = "MsofbtAnchor"; break;
+ case 0xF00F: p = "MsofbtChildAnchor"; break;
+ case 0xF010: p = "MsofbtClientAnchor"; break;
+ case 0xF011: p = "MsofbtClientData"; break;
+ case 0xF11F: p = "MsofbtOleObject"; break;
+ case 0xF11D: p = "MsofbtDeletedPspl"; break;
+ case 0xF005: p = "MsofbtSolverContainer"; break;
+ case 0xF012: p = "MsofbtConnectorRule"; break;
+ case 0xF013: p = "MsofbtAlignRule"; break;
+ case 0xF014: p = "MsofbtArcRule"; break;
+ case 0xF015: p = "MsofbtClientRule"; break;
+ case 0xF017: p = "MsofbtCalloutRule"; break;
+ case 0xF119: p = "MsofbtSelection"; break;
+ default:
+ if( nR >= 0xF018 && nR <= 0xF117 )
+ p = "MsofbtBLIP";
+ else if ( ( nPre & 0x000F ) == 0x000F )
+ p = "UNKNOWN container";
+ else
+ p = "UNKNOWN ID";
+ }
+
+ aT += " ";
+ __AddHex( aT, nR );
+ ((aT += " ") += p) += " [";
+ __AddHex( aT, nPre );
+ aT += ',';
+ __AddHex( aT, nL );
+ aT += "] instance: ";
+ __AddDec( aT, (UINT16)(nPre >> 4) );
+ Print( aT );
+
+ if ( nR == 0xF007 && 36 <= n && 36 <= nL )
+ { // BSE, FBSE
+ ULONG nP = pIn->Tell();
+ UINT8 n8;
+ UINT16 n16;
+ UINT32 n32;
+
+ aT = " btWin32: ";
+ *pIn >> n8;
+ __AddHex( aT, n8 );
+ aT += GetBlipType( n8 );
+ aT += " btMacOS: ";
+ *pIn >> n8;
+ __AddHex( aT, n8 );
+ aT += GetBlipType( n8 );
+ Print( aT );
+
+ aT = " rgbUid:";
+ Print( aT );
+ ContDump( 16 );
+
+ aT = " tag: ";
+ *pIn >> n16;
+ __AddHex( aT, n16 );
+ Print( aT );
+
+ aT = " size: ";
+ *pIn >> n32;
+ __AddHex( aT, n32 );
+ Print( aT );
+
+ aT = " cRef: ";
+ *pIn >> n32;
+ __AddHex( aT, n32 );
+ Print( aT );
+
+ aT = " offs: ";
+ *pIn >> n32;
+ __AddHex( aT, n32 );
+ Print( aT );
+
+ aT = " usage: ";
+ *pIn >> n8;
+ __AddHex( aT, n8 );
+ aT += " cbName: ";
+ *pIn >> n8;
+ __AddHex( aT, n8 );
+ aT += " unused2: ";
+ *pIn >> n8;
+ __AddHex( aT, n8 );
+ aT += " unused3: ";
+ *pIn >> n8;
+ __AddHex( aT, n8 );
+ Print( aT );
+
+ n -= pIn->Tell() - nP;
+ nL = 0; // loop to MsofbtBLIP
+ }
+ else if ( nR == 0xF010 && 0x12 <= n && 0x12 <= nL )
+ { // ClientAnchor
+ ULONG nP = pIn->Tell();
+ UINT16 n16;
+
+ aT = " Flag: ";
+ *pIn >> n16;
+ __AddHex( aT, n16 );
+ Print( aT );
+
+ aT = " Col1: ";
+ *pIn >> n16;
+ __AddHex( aT, n16 );
+ aT += " dX1: ";
+ *pIn >> n16;
+ __AddHex( aT, n16 );
+ aT += " Row1: ";
+ *pIn >> n16;
+ __AddHex( aT, n16 );
+ aT += " dY1: ";
+ *pIn >> n16;
+ __AddHex( aT, n16 );
+ Print( aT );
+
+ aT = " Col2: ";
+ *pIn >> n16;
+ __AddHex( aT, n16 );
+ aT += " dX2: ";
+ *pIn >> n16;
+ __AddHex( aT, n16 );
+ aT += " Row2: ";
+ *pIn >> n16;
+ __AddHex( aT, n16 );
+ aT += " dY2: ";
+ *pIn >> n16;
+ __AddHex( aT, n16 );
+ Print( aT );
+
+ ULONG nC = pIn->Tell() - nP;
+ n -= nC;
+ nL -= nC;
+ }
+ else if ( nR == 0xF00B )
+ { // OPT
+ while ( nL >= 6 && n >= 6 )
+ {
+ UINT16 n16;
+ UINT32 n32;
+ *pIn >> n16 >> n32;
+ nL -= 6; n -= 6;
+ aT = " ";
+ __AddHex( aT, n16 );
+ aT += " (";
+ __AddDec( aT, n16 & 0x3FFF, 5 );
+ if ( (n16 & 0x8000) == 0 )
+ {
+ if ( n16 & 0x4000 )
+ aT += ", fBlipID";
+ aT += ") ";
+ __AddHex( aT, n32 );
+ if ( (n16 & 0x4000) == 0 )
+ {
+ aT += " (";
+ __AddDec1616( aT, n32 );
+ aT += ')';
+ }
+ Print( aT );
+ }
+ else
+ {
+ aT += ", fComplex) ";
+ __AddHex( aT, n32 );
+ Print( aT );
+ while ( n32 && n > 0 )
+ {
+ nDumpSize = (n32 > (UINT32) n) ? (UINT16) n : (UINT16) n32;
+ ContDump( nDumpSize );
+ nL -= nDumpSize;
+ n -= nDumpSize;
+ n32 -= nDumpSize;
+ }
+ }
+ }
+ }
+
+ if( ( nPre & 0x000F ) == 0x000F && n >= 0 )
+ { // Container
+ if ( nL <= (UINT32) n )
+ Print( " completed within" );
+ else
+ Print( " continued elsewhere" );
+ }
+ else if( n >= 0 )
+ // -> 0x0000 ... 0x0FFF
+ {
+ nDumpSize = ( ( UINT32 ) nL > ( UINT32 ) n )? ( UINT16 ) n : ( UINT16 ) nL;
+
+ if( nDumpSize )
+ {
+ ContDump( nDumpSize );
+ n -= nDumpSize;
+ }
+ }
+ else
+ Print( " >> OVERRUN <<" );
+
+ aT.Erase();
+ }
+}
+
+
+void Biff8RecDumper::ObjDump( const UINT16 nMaxLen )
+{
+#if 0
+// if an entire hex block is needed
+ ULONG nPos = pIn->Tell();
+ ContDump( nMaxLen );
+ pIn->Seek( nPos );
+#endif
+
+ INT32 n = nMaxLen;
+ UINT16 nR, nL;
+ const sal_Char* p;
+ ByteString t;
+ SvStream& rIn = *pIn;
+ UINT16 nDumpSize;
+
+ t += pLevelPre;
+
+ while( n > 0 )
+ {
+ rIn >> nR >> nL;
+ n -= sizeof( nR ) + sizeof( nL );
+
+ BOOL bDetails = FALSE;
+ switch( nR )
+ {
+ case 0x0000: p = "ftEnd"; break;
+ case 0x0001: p = "(Reserved)"; break;
+ case 0x0002: p = "(Reserved)"; break;
+ case 0x0003: p = "(Reserved)"; break;
+ case 0x0004: p = "ftMacro"; break;
+ case 0x0005: p = "ftButton"; break;
+ case 0x0006: p = "ftGmo"; break;
+ case 0x0007: p = "ftCf"; break;
+ case 0x0008: p = "ftPioGrbit"; bDetails = TRUE; break;
+ case 0x0009: p = "ftPictFmla"; bDetails = TRUE; break;
+ case 0x000A: p = "ftCbls"; break;
+ case 0x000B: p = "ftRbo"; break;
+ case 0x000C: p = "ftSbs"; break;
+ case 0x000D: p = "ftNts"; break;
+ case 0x000E: p = "ftSbsFmla"; break;
+ case 0x000F: p = "ftGboData"; break;
+ case 0x0010: p = "ftEdoData"; break;
+ case 0x0011: p = "ftRboData"; break;
+ case 0x0012: p = "ftCblsData"; break;
+ case 0x0013: p = "ftLbsData"; break;
+ case 0x0014: p = "ftCblsFmla"; break;
+ case 0x0015: p = "ftCmo"; bDetails = TRUE; break;
+ default:
+ p = "UNKNOWN ID";
+ }
+
+ t += " ";
+ __AddHex( t, nR );
+ t += " [";
+ __AddHex( t, nL );
+ (t += "] ") += p;
+ Print( t );
+
+ if( n >= 0 )
+ {
+ nDumpSize = ( ( UINT32 ) nL > ( UINT32 ) n )? ( UINT16 ) n : ( UINT16 ) nL;
+
+ if( nDumpSize )
+ {
+ ULONG nPos1 = (bDetails ? rIn.Tell() : 0);
+ ContDump( nDumpSize );
+ n -= nDumpSize;
+ if ( bDetails )
+ {
+ ULONG nPos2 = rIn.Tell();
+ rIn.Seek( nPos1 );
+ t.Erase();
+ switch ( nR )
+ {
+ case 0x0008 : // ftPioGrbit
+ {
+ UINT16 __nFlags = Read2( rIn );
+ if ( __nFlags )
+ {
+ ADDTEXT( " " );
+ STARTFLAG();
+ ADDFLAG( 0x0008, " fAsSymbol" );
+ ADDFLAG( 0x0002, " fLinked" );
+ ADDFLAG( 0x0001, " f1???" );
+ }
+ }
+ break;
+ case 0x0009 : // ftPictFmla
+ {
+ ADDTEXT( " Document type " );
+ UINT16 nFmlaLen;
+ rIn >> nFmlaLen;
+ if ( sizeof(nFmlaLen) + nFmlaLen == nL )
+ {
+ ADDTEXT( "linked\n OLE stream: LNK........ (ID in EXTERNNAME of SUPBOOK)\n XTI: " );
+ IGNORE(7); // MAY be right
+ ADDHEX(2);
+ }
+ else
+ {
+ ADDTEXT( "embedded " );
+ const UINT16 nStringOffset = 14; // MAY be right
+ rIn.Seek( nPos1 + nStringOffset );
+ INT32 nBytesLeft = nL - nStringOffset;
+ AddUNICODEString( t, rIn, nBytesLeft );
+ ADDTEXT( '\n' );
+ if ( nBytesLeft < 4 )
+ ADDTEXT( " >> ByteString OVERRUN <<\n" );
+ else if ( nBytesLeft == 5 )
+ {
+ ADDTEXT( " pad byte " );
+ ADDHEX(1);
+ ADDTEXT( '\n' );
+ }
+ else if ( nBytesLeft == 4 )
+ ADDTEXT( " no pad byte\n" );
+ else
+ ADDTEXT( " oops.. bytes left?!?\n" );
+
+ ADDTEXT( " OLE stream: MBD" );
+ rIn.Seek( nPos1 + sizeof(nFmlaLen) + nFmlaLen );
+ UINT32 nOleId;
+ rIn >> nOleId;
+ __AddPureHex( t, nOleId );
+ }
+ }
+ break;
+ case 0x0015 : // ftCmo
+ {
+ UINT16 nType, nId;
+ rIn >> nType >> nId;
+ ADDTEXT( " Object ID " );
+ __AddHex( t, nId );
+ switch ( nType )
+ {
+ case 0x0000 : p = "Group"; break;
+ case 0x0001 : p = "Line"; break;
+ case 0x0002 : p = "Rectangle"; break;
+ case 0x0003 : p = "Oval"; break;
+ case 0x0004 : p = "Arc"; break;
+ case 0x0005 : p = "Chart"; break;
+ case 0x0006 : p = "Text"; break;
+ case 0x0007 : p = "Button"; break;
+ case 0x0008 : p = "Picture"; break;
+ case 0x0009 : p = "Polygon"; break;
+ case 0x000a : p = "(Reserved)"; break;
+ case 0x000b : p = "Check box"; break;
+ case 0x000c : p = "Option button";break;
+ case 0x000d : p = "Edit box"; break;
+ case 0x000e : p = "Label"; break;
+ case 0x000f : p = "Dialog box"; break;
+ case 0x0010 : p = "Spinner"; break;
+ case 0x0011 : p = "Scroll bar"; break;
+ case 0x0012 : p = "List box"; break;
+ case 0x0013 : p = "Group box"; break;
+ case 0x0014 : p = "Combo box"; break;
+ case 0x0015 : p = "(Reserved)"; break;
+ case 0x0016 : p = "(Reserved)"; break;
+ case 0x0017 : p = "(Reserved)"; break;
+ case 0x0018 : p = "(Reserved)"; break;
+ case 0x0019 : p = "Comment"; break;
+ case 0x001a : p = "(Reserved)"; break;
+ case 0x001b : p = "(Reserved)"; break;
+ case 0x001c : p = "(Reserved)"; break;
+ case 0x001d : p = "(Reserved)"; break;
+ case 0x001e : p = "Microsoft Office drawing"; break;
+ default:
+ p = "UNKNOWN";
+ }
+ ADDTEXT( ", type " );
+ __AddHex( t, nType );
+ ADDTEXT( ' ' );
+ ADDTEXT( p );
+ }
+ break;
+ }
+ if ( t.Len() )
+ PRINT();
+ rIn.Seek( nPos2 );
+ }
+ }
+ }
+ else
+ Print( " >> OVERRUN <<" );
+
+ t.Erase();
+ }
+}
+
+
+#undef ADDFLAG
+#undef LINESTART
+#undef IGNORE
+#undef ADDHEX
+#undef ADDDEC
+#undef ADDTEXT
+#undef ADDCOLROW
+#undef PRINT
+#undef PreDump
+#undef ADDCELLHEAD
+#undef CHECKBREAK
+
+void Biff8RecDumper::ContDump( const UINT16 nL )
+{
+ UINT32 nC = nMaxBodyLines;
+ UINT32 n = nL;
+ UINT32 nInL, nTmp;
+ UINT8* pB = new UINT8[ nL ];
+ UINT8* p;
+ const UINT16 nLineLen = 16;
+ UINT16 nCharCnt;
+ BOOL bPart;
+ ByteString aT;
+
+ aT += pLevelPre;
+
+ while( n && nC )
+ {
+ bPart = n < nLineLen;
+ nInL = bPart? n : nLineLen;
+ n -= nInL;
+
+ pIn->Read( pB, nInL );
+
+ // als Hex-Codes
+ nTmp = nInL;
+ p = pB;
+ nCharCnt = 0;
+ while( nTmp )
+ {
+ if( nCharCnt == nLineLen / 2 )
+ aT += ' ';
+
+ nCharCnt++;
+
+ aT += ' ';
+ __AddPureHex( aT, *p );
+ p++;
+
+ nTmp--;
+ }
+
+ if( bPart )
+ aT += GetBlanks( ( UINT16 ) ( ( nLineLen - nInL ) * 3 ) );
+
+ // als chars
+
+ aT += " ";
+ if( nInL < 9 )
+ aT += ' ';
+
+ nTmp = nInL;
+ p = pB;
+ nCharCnt = 0;
+ while( nTmp )
+ {
+ if( nCharCnt == nLineLen / 2 )
+ aT += ' ';
+
+ nCharCnt++;
+
+ if( IsPrintable( *p ) )
+ aT += *p;
+ else
+ aT += '.';
+
+ p++;
+
+ nTmp--;
+ }
+
+ Print( aT );
+ aT.Erase();
+ aT += pLevelPre;
+
+ nC--;
+ }
+
+ delete[] pB;
+}
+
+
+static const sal_Char* GetTokenClass( const UINT8 n )
+{
+ const sal_Char* pInvOc = "NO CLASS";
+ const sal_Char* p;
+
+ if( n < 0x20 )
+ p = pInvOc;
+ else if( n < 0x3F )
+ p = "Ref";
+ else if( n < 0x5F )
+ p = "Val";
+ else if( n < 0x7F )
+ p = "Arr";
+ else
+ p = pInvOc;
+
+ return p;
+}
+
+
+static ByteString GetTokenClassString( const UINT8 n )
+{
+ ByteString t( GetTokenClass( n ) );
+
+ t += "=";
+
+ return t;
+}
+
+
+void Biff8RecDumper::FormulaDump( const UINT16 nL, const FORMULA_TYPE eFT )
+{
+ if( !nL )
+ return;
+
+#define CLOSE(string) {t+=pInfix;t+=string;Print(t);t.Erase();t+=pPre;}
+
+#define ADD(string) {t+=pInfix;t+=string;}
+
+#define IGNORE(n) {pIn->SeekRel(n);nBytesLeft-=n;}
+
+ const UINT32 nAfterPos = pIn->Tell() + nL;
+ const sal_Char* pPre = " ";
+ const sal_Char* pInfix = " ";
+
+ BYTE nOp;
+ ByteString t;
+ const sal_Char* p;
+ BOOL bError = FALSE;
+ const BOOL bRangeName = eFT == FT_RangeName;
+ const BOOL bSharedFormula = eFT == FT_SharedFormula;
+ const BOOL bRNorSF = bRangeName || bSharedFormula;
+
+ INT32 nBytesLeft = ( INT32 ) nL;
+
+ t += pPre;
+
+ while( nBytesLeft > 0 && !bError )
+ {
+ *pIn >> nOp;
+ nBytesLeft -= sizeof( nOp );
+
+ switch( nOp ) // Buch Seite:
+ { // SDK4 SDK5
+ case 0x01: // Array Formula [325 ]
+ // Array Formula or Shared Formula [ 277]
+ IGNORE(4);
+ CLOSE("Shared Formula")
+ break;
+ case 0x02: // Data Table [325 277]
+ IGNORE(4);
+ break;
+ case 0x03: // Addition [312 264]
+ CLOSE("ADD")
+ break;
+ case 0x04: // Subtraction [313 264]
+ CLOSE("SUB")
+ break;
+ case 0x05: // Multiplication [313 264]
+ CLOSE("MUL")
+ break;
+ case 0x06: // Division [313 264]
+ CLOSE("DIV")
+ break;
+ case 0x07: // Exponetiation [313 265]
+ CLOSE("EXP")
+ break;
+ case 0x08: // Concatenation [313 265]
+ CLOSE("CONCAT")
+ break;
+ case 0x09: // Less Than [313 265]
+ CLOSE("<")
+ break;
+ case 0x0A: // Less Than or Equal [313 265]
+ CLOSE("<=")
+ break;
+ case 0x0B: // Equal [313 265]
+ CLOSE("=")
+ break;
+ case 0x0C: // Greater Than or Equal [313 265]
+ CLOSE(">=")
+ break;
+ case 0x0D: // Greater Than [313 265]
+ CLOSE(">")
+ break;
+ case 0x0E: // Not Equal [313 265]
+ CLOSE("<>")
+ break;
+ case 0x0F: // Intersection [314 265]
+ CLOSE("INTERSECT")
+ break;
+ case 0x10: // Union [314 265]
+ CLOSE("UNION")
+ break;
+ case 0x11: // Range [314 265]
+ CLOSE("RANGE")
+ break;
+ case 0x12: // Unary Plus [312 264]
+ CLOSE("+")
+ break;
+ case 0x13: // Unary Minus [312 264]
+ CLOSE("-")
+ break;
+ case 0x14: // Percent Sign [312 264]
+ CLOSE("%")
+ break;
+ case 0x15: // Parenthesis [326 278]
+ CLOSE("()")
+ break;
+ case 0x16: // Missing Argument [314 266]
+ ADD("MISSING ARGUMENT")
+ break;
+ case 0x17: // ByteString Constant [314 266]
+ {
+ UINT8 nLen;
+
+ *pIn >> nLen;
+ nBytesLeft -= sizeof( nLen );
+
+ ADD("STRING[");
+ __AddDec( t, nLen );
+ t += "] = \"";
+
+ if( nLen )
+ t += GETSTR( ::ReadUnicodeString( *pIn, nBytesLeft, *pExcRoot->pCharset, nLen ) );
+ else
+ {
+ pIn->SeekRel( 1 );
+ nBytesLeft--;
+ }
+ t += "\"";
+ }
+ break;
+ case 0x19: // Special Attribute [327 279]
+ {
+ ADD("SPECIAL ATTRIBUTE: ");
+ UINT16 nData, nFakt;
+ BYTE nOpt;
+
+ *pIn >> nOpt >> nData;
+ nBytesLeft -= sizeof( nOpt ) + sizeof( nData );
+ nFakt = 2;
+
+ if( nOpt & 0x04 )
+ {// nFakt -> Bytes oder Words ueberlesen AttrChoose
+ CLOSE("AttrChoose");
+ nData++;
+ pIn->SeekRel( nData * nFakt );
+ nBytesLeft -= nData * nFakt;
+ }
+ else if( nOpt & 0x10 ) // AttrSum
+ {
+// DoMulArgs( ocSum, 1 );
+ CLOSE("AttrSum");
+ }
+ else
+ {
+ CLOSE("AttrMISC");
+ }
+ }
+ break;
+ case 0x1C: // Error Value [314 266]
+ ADD("ERROR VALUE")
+ break;
+ case 0x1D: // Boolean [315 266]
+ {
+ if( Read1( *pIn ) == 0 )
+ p = "FALSE";
+ else
+ p = "TRUE";
+ nBytesLeft--;
+ ADD("BOOL = ");
+ t += p;
+ }
+ break;
+ case 0x1E: // Integer [315 266]
+ ADD("INT = ");
+ __AddDec( t, Read2( *pIn ) );
+ nBytesLeft -= 2;
+ break;
+ case 0x1F: // Number [315 266]
+ {
+ double f;
+ *pIn >> f;
+ nBytesLeft -= sizeof( f );
+ ADD( "NUMBER = " );
+ __AddDouble( t, f );
+ }
+ break;
+ case 0x40:
+ case 0x60:
+ case 0x20: // Array Constant [317 268]
+ ADD( GetTokenClassString( nOp ) );
+ ADD( "ARRAY CONSTANT" );
+ break;
+ case 0x41:
+ case 0x61:
+ case 0x21: // Function, Fixed Number of Arguments [333 282]
+ {
+ UINT16 nInd;
+ *pIn >> nInd;
+ nBytesLeft -= sizeof( nInd );
+
+ ByteString aStr( GetTokenClassString( nOp ) );
+ aStr += "FIX FUNCTION [";
+ __AddDec( aStr, nInd );
+ aStr += " (";
+ __AddHex( aStr, nInd );
+ aStr += ")]";
+ CLOSE(aStr);
+ }
+ break;
+ case 0x42:
+ case 0x62:
+ case 0x22: // Function, Variable Number of Arg. [333 283]
+ {
+ BYTE nAnz;
+ UINT16 nInd;
+
+ *pIn >> nAnz >> nInd;
+ nBytesLeft -= sizeof( nAnz ) + sizeof( nInd );
+
+ ByteString aStr( GetTokenClassString( nOp ) );
+ aStr += "VAR FUNCTION [";
+ __AddDec( aStr, nInd );
+ aStr += " (";
+ __AddHex( aStr, nInd );
+ aStr += ")] #";
+ __AddDec( aStr, ( UINT32 ) ( nAnz & 0x7F ) );
+ aStr += "(";
+ __AddHex( aStr, nAnz );
+ aStr += ")";
+ CLOSE(aStr);
+ }
+ break;
+ case 0x43:
+ case 0x63:
+ case 0x23: // Name [318 269]
+ {
+ UINT16 nInd;
+ *pIn >> nInd;
+ nBytesLeft -= sizeof( nInd );
+ IGNORE(2);
+ ADD( GetTokenClassString( nOp ) );
+ ADD("NAME = ");
+ __AddDec( t, nInd );
+ }
+ break;
+ case 0x44:
+ case 0x64:
+ case 0x24: // Cell Reference [319 270]
+ case 0x4A:
+ case 0x6A:
+ case 0x2A: // Deleted Cell Reference [323 273]
+ {
+ UINT16 nCol, nRow;
+ *pIn >> nRow >> nCol;
+ nBytesLeft -= 4;
+ ADD( GetTokenClassString( nOp ) );
+ switch ( nOp )
+ {
+ case 0x4A:
+ case 0x6A:
+ case 0x2A: // Deleted Cell Reference [323 273]
+ ADD("DEL");
+ }
+ ADD("CELL REF = ");
+ __AddHex( t, nCol );
+ t += pRefSep;
+ __AddHex( t, nRow );
+ t += " [";
+ AddRef( t, nRow, nCol, bRangeName );
+ t += "]";
+ }
+ break;
+ case 0x45:
+ case 0x65:
+ case 0x25: // Area Reference [320 270]
+ case 0x4B:
+ case 0x6B:
+ case 0x2B: // Deleted Area Refernce [323 273]
+ {
+ UINT16 nRowFirst, nRowLast;
+ UINT16 nColFirst, nColLast;
+ *pIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 8;
+ ADD( GetTokenClassString( nOp ) );
+ switch ( nOp )
+ {
+ case 0x4B:
+ case 0x6B:
+ case 0x2B: // Deleted Area Refernce [323 273]
+ ADD("DEL");
+ }
+ ADD("AREA REF = ");
+ __AddHex( t, nColFirst );
+ t += pRefSep;
+ __AddHex( t, nRowFirst );
+ t += ":";
+ __AddHex( t, nColLast );
+ t += pRefSep;
+ __AddHex( t, nRowLast );
+ t += " [";
+ AddRef( t, nRowFirst, nColFirst, bRangeName );
+ t += ":";
+ AddRef( t, nRowLast, nColLast, bRangeName );
+ t += "]";
+ }
+ break;
+ case 0x46:
+ case 0x66:
+ case 0x26: // Constant Reference Subexpression [321 271]
+ ADD( GetTokenClassString( nOp ) );
+ ADD("CONST REF SUBEXPR");
+ IGNORE(6);
+ break;
+ case 0x47:
+ case 0x67:
+ case 0x27: // Erroneous Constant Reference Subexpr. [322 272]
+ ADD( GetTokenClassString( nOp ) );
+ ADD("ERR CONST REF SUBEXPR");
+ IGNORE(6);
+ break;
+ case 0x48:
+ case 0x68:
+ case 0x28: // Incomplete Constant Reference Subexpr.[331 281]
+ ADD( GetTokenClassString( nOp ) );
+ ADD("INCOMPL CONST REF SUBEXPR");
+ IGNORE(6);
+ break;
+ case 0x49:
+ case 0x69:
+ case 0x29: // Variable Reference Subexpression [331 281]
+ ADD( GetTokenClassString( nOp ) );
+ ADD("VAR REF SUBEXPR");
+ IGNORE(2);
+ break;
+ case 0x4C:
+ case 0x6C:
+ case 0x2C: // Cell Reference Within a Name [323 ]
+ // Cell Reference Within a Shared Formula[ 273]
+ {
+ UINT16 nRow, nCol;
+ *pIn >> nRow >> nCol;
+ nBytesLeft -= 4;
+ ADD( GetTokenClassString( nOp ) );
+ ADD("CELL REF IN NAME = ");
+ __AddHex( t, nCol );
+ t += pRefSep;
+ __AddHex( t, nRow );
+ t += " [";
+ AddRef( t, nRow, nCol, bRNorSF );
+ t += "]";
+ }
+ break;
+ case 0x4D:
+ case 0x6D:
+ case 0x2D: // Area Reference Within a Name [324 ]
+ { // Area Reference Within a Shared Formula[ 274]
+ UINT16 nRowFirst, nRowLast;
+ UINT16 nColFirst, nColLast;
+ *pIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 8;
+ ADD( GetTokenClassString( nOp ) );
+ ADD("AREA REF IN NAME = ");
+ __AddHex( t, nColFirst );
+ t += pRefSep;
+ __AddHex( t, nRowFirst );
+ t += ":";
+ __AddHex( t, nColLast );
+ t += pRefSep;
+ __AddHex( t, nRowLast );
+ t += " [";
+ AddRef( t, nRowFirst, nColFirst, bRNorSF );
+ t += ":";
+ AddRef( t, nRowLast, nColLast, bRNorSF );
+ t += "]";
+ }
+ break;
+ case 0x4E:
+ case 0x6E:
+ case 0x2E: // Reference Subexpression Within a Name [332 282]
+ ADD( GetTokenClassString( nOp ) );
+ ADD("REF SUBEXPR IN NAME");
+ IGNORE(2);
+ break;
+ case 0x4F:
+ case 0x6F:
+ case 0x2F: // Incomplete Reference Subexpression... [332 282]
+ ADD( GetTokenClassString( nOp ) );
+ ADD("INCOMPL REF SUBEXPR IN NAME");
+ IGNORE(2);
+ break;
+ case 0x58:
+ case 0x78:
+ case 0x38: // Command-Equivalent Function [333 ]
+ {
+ UINT8 nNum, nAnz;
+ ByteString aStr( GetTokenClassString( nOp ) );
+ aStr += "COMM_EQU_FUNC";
+ *pIn >> nNum;
+ nBytesLeft -= sizeof( nNum );
+ aStr.Append( ByteString::CreateFromInt32( nNum ) );
+ *pIn >> nAnz;
+ nBytesLeft -= sizeof( nAnz );
+ aStr += ")] #";
+ __AddDec( aStr, ( UINT32 ) ( nAnz & 0x7F ) );
+ aStr += "(";
+ __AddHex( aStr, nAnz );
+ aStr += ")";
+ CLOSE(aStr);
+ }
+ break;
+ case 0x59:
+ case 0x79:
+ case 0x39: // Name or External Name [ 275]
+ {
+ UINT16 nUINT16;
+ INT16 nINT16;
+ *pIn >> nINT16;
+ nBytesLeft -= sizeof( nINT16 );
+ *pIn >> nUINT16;
+ nBytesLeft -= sizeof( nUINT16 );
+ IGNORE(2);
+ ADD( GetTokenClassString( nOp ) );
+ if( nINT16 >= 0 )
+ {
+ ADD("EXT NAME [");
+ }
+ else
+ {
+ ADD("NAME [");
+ }
+ __AddDec( t, nUINT16 );
+ t += "]";
+ }
+ break;
+ case 0x5A:
+ case 0x7A:
+ case 0x3A: // 3-D Cell Reference [ 275]
+ case 0x5C:
+ case 0x7C:
+ case 0x3C: // Deleted 3-D Cell Reference [ 277]
+ {
+ UINT16 nIxti, nRow, nCol;
+ *pIn >> nIxti >> nRow >> nCol;
+ nBytesLeft -= 6;
+ ADD( GetTokenClassString( nOp ) );
+ switch ( nOp )
+ {
+ case 0x5C:
+ case 0x7C:
+ case 0x3C: // Deleted 3-D Cell Reference [ 277]
+ ADD("DEL");
+ }
+ ADD("3D CELL REF = ");
+ __AddHex( t, nCol );
+ t += pRefSep;
+ __AddHex( t, nRow );
+ t += pRefSep;
+ __AddHex( t, nIxti );
+ t += " [";
+ AddRef( t, nRow, nCol, bRangeName, nIxti );
+ t += "]";
+ }
+ break;
+ case 0x5B:
+ case 0x7B:
+ case 0x3B: // 3-D Area Reference [ 276]
+ case 0x5D:
+ case 0x7D:
+ case 0x3D: // Deleted 3-D Area Reference [ 277]
+ {
+ UINT16 nIxti, nRow1, nCol1, nRow2, nCol2;
+ *pIn >> nIxti >> nRow1 >> nRow2 >> nCol1 >> nCol2;
+ nBytesLeft -= 10;
+ ADD( GetTokenClassString( nOp ) );
+ switch ( nOp )
+ {
+ case 0x5D:
+ case 0x7D:
+ case 0x3D: // Deleted 3-D Area Reference [ 277]
+ ADD("DEL");
+ }
+ ADD("3D AREA REF = ");
+ __AddHex( t, nCol1 );
+ t += pRefSep;
+ __AddHex( t, nRow1 );
+ t += pRefSep;
+ __AddHex( t, nIxti );
+ t += ":";
+ __AddHex( t, nCol2 );
+ t += pRefSep;
+ __AddHex( t, nRow2 );
+ t += " [";
+ AddRef( t, nRow1, nCol1, bRangeName, nIxti );
+ t += ":";
+ AddRef( t, nRow2, nCol2, bRangeName );
+ t += "]";
+ }
+ break;
+ default: bError = TRUE;
+ }
+ }
+
+ if( t != pPre )
+ Print( t );
+
+ pIn->Seek( nAfterPos );
+
+#undef CLOSE
+#undef ADD
+#undef IGNORE
+}
+
+
+const sal_Char* Biff8RecDumper::GetBlanks( const UINT16 nNumOfBlanks )
+{
+ DBG_ASSERT( pBlankLine, "-Biff8RecDumper::GetBlanks(): nicht so schnell mein Freund!" );
+ DBG_ASSERT( nNumOfBlanks <= nLenBlankLine,
+ "+Biff8RecDumper::GetBlanks(): So viel kannst Du nicht von mir verlangen!" );
+
+ return pBlankLine + ( ( nNumOfBlanks <= nLenBlankLine )? ( nLenBlankLine - nNumOfBlanks ) : 0 );
+}
+
+
+BOOL Biff8RecDumper::IsLineEnd( const sal_Char c, sal_Char& rNext, SvStream& rIn, INT32& rLeft )
+{
+ static const sal_Char cNL = '\n';
+ static const sal_Char cRET = '\r';
+
+ if( IsEndOfLine( c ) )
+ {
+ sal_Char cDouble = ( c == cNL )? cRET : cNL;
+
+ if( rNext == cDouble )
+ {
+ rIn >> rNext;
+ rLeft--;
+ }
+
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+
+_KEYWORD Biff8RecDumper::GetKeyType( const ByteString& r )
+{
+ ByteString t( r );
+ _KEYWORD e;
+
+ t.ToUpperAscii();
+
+ if( t == "SKIPDUMP" )
+ e = Skipdump;
+ else if( t == "SKIPOFFSET" )
+ e = SkipOffset;
+ else if( t == "CONTLOAD" )
+ e = Contload;
+ else if( t == "PARSEP" )
+ e = Parsep;
+ else if( t == "MAXBODYLINES" )
+ e = Maxbodylines;
+ else if( t == "INCLUDE" || t == "+" )
+ e = Include;
+ else if( t == "EXCLUDE" || t == "-" )
+ e = Exclude;
+ else if( t == "HEX" || t == "H" )
+ e = Hex;
+ else if( t == "BODY" || t == "B" )
+ e = Body;
+ else if( t == "NAMEONLY" || t =="N" )
+ e = NameOnly;
+ else if( t == "COMMENT" )
+ e = Comment;
+ else if( t == "OUTPUT" )
+ e = Output;
+ else if( t == "TITLE" )
+ e = Title;
+ else if( t == "CLEARFILE" )
+ e = ClearFile;
+ else
+ e = KW_Unknown;
+
+ return e;
+}
+
+
+void Biff8RecDumper::Init( void )
+{
+ bClearFile = FALSE;
+
+ if( pDumpModes || ppRecNames )
+ return;
+
+ const sal_Char* pDefName = "biffrecdumper.ini";
+ const sal_Char* pIniKey = "BIFFRECDUMPERINI";
+
+ SvFileStream* pIn;
+
+ ByteString aIniName( GETSTR( SFX_INIMANAGER()->Get( SFX_GROUP_COMMON, _STRING( pIniKey ) ) ) );
+
+ if( aIniName.Len() )
+ pIn = CreateInStream( aIniName.GetBuffer() );
+ else
+ pIn = NULL;
+
+ if( !pIn )
+ {
+ const sal_Char* pIni = getenv( pIniKey );
+ if( pIni )
+ {
+ pIn = CreateInStream( pIni );
+ if( !pIn )
+ AddError( 0, "Could not open ini file", ByteString( pIni ) );
+ }
+ else
+ {
+ pIn = CreateInStream( ".", pDefName );
+
+ if( !pIn )
+ {
+ pIni = getenv( "TMP" );
+ if( !pIni )
+ pIni = getenv( "TEMP" );
+
+ if( pIni )
+ pIn = CreateInStream( pIni, pDefName );
+
+ if( !pIn )
+ {
+ AddError( 0, "Could not find ini file" );
+ bEndLoading = TRUE; // zur Sicherheit....
+ }
+ }
+ }
+ }
+
+ if( pIn )
+ {
+ pIn->Seek( STREAM_SEEK_TO_END );
+
+ const UINT32 nStreamLen = pIn->Tell();
+
+ if( nStreamLen <= 1 )
+ {
+ pIn->Close();
+ delete pIn;
+ return;
+ }
+
+ pIn->Seek( STREAM_SEEK_TO_BEGIN );
+
+ pDumpModes = new UINT16[ nRecCnt ];
+ ppRecNames = new ByteString*[ nRecCnt ];
+
+ memset( pDumpModes, 0x00, sizeof( UINT16 ) * nRecCnt );
+ memset( ppRecNames, 0x00, sizeof( ByteString* )* nRecCnt );
+
+ enum STATE { PreLine, InCommand, PostCommand, InId, PostEqu,
+ InVal, InName, InInExClude, InBodyMode, PostSepIEC,
+ PostSepBM, InComment };
+
+ STATE eAct = PreLine;
+ sal_Char c;
+ sal_Char cNext;
+ INT32 n = ( INT32 ) nStreamLen;
+ ByteString aCommand;
+ ByteString aVal;
+ ByteString aInExClude;
+ ByteString aHexBody;
+ UINT32 nLine = 1;
+ BOOL bCommand;
+
+ *pIn >> c >> cNext;
+
+ while( n > 0 )
+ {
+ n--;
+
+ switch( eAct )
+ {
+ case PreLine:
+ if( IsAlphaNum( c ) )
+ {
+ if( IsNum( c ) )
+ {
+ eAct = InId;
+ bCommand = FALSE;
+ }
+ else
+ {
+ eAct = InCommand;
+ bCommand = TRUE;
+ }
+ aCommand.Erase();
+ aCommand += c;
+ }
+ else if( c == cComm1 && cNext == cComm2 )
+ eAct = InComment;
+ else if( IsLineEnd( c, cNext, *pIn, n ) )
+ nLine++;
+ else if( !IsBlank( c ) )
+ {
+ AddError( nLine, "Unexpected command or id" );
+ n = 0;
+ }
+ break;
+ case InCommand:
+ if( c == '=' )
+ {
+ eAct = PostEqu;
+ aVal.Erase();
+ }
+ else if( IsAlpha( c ) )
+ aCommand += c;
+ else if( IsBlank( c ) )
+ eAct = PostCommand;
+ else if( IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ if( ExecCommand( nLine, aCommand ) )
+ {
+ eAct = PreLine;
+ nLine++;
+ }
+ else
+ n = 0;
+ }
+ else if( c == cComm1 && cNext == cComm2 )
+ {
+ if( ExecCommand( nLine, aCommand ) )
+ eAct = InComment;
+ else
+ {
+ AddError( nLine, "Invalid command before comment", aCommand );
+ n = 0;
+ }
+ }
+ else
+ {
+ aCommand += '>';
+ aCommand += c;
+ aCommand += '<';
+ AddError( nLine, "Invalid character in command or id", aCommand );
+ n = 0;
+ }
+ break;
+ case PostCommand:
+ if( c == '=' )
+ {
+ eAct = PostEqu;
+ aVal.Erase();
+ }
+ else if( IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ if( ExecCommand( nLine, aCommand ) )
+ {
+ eAct = PreLine;
+ nLine++;
+ }
+ else
+ n = 0;
+ }
+ else if( c == cComm1 && cNext == cComm2 )
+ {
+ if( ExecCommand( nLine, aCommand ) )
+ eAct = InComment;
+ else
+ {
+ AddError( nLine, "Invalid command before comment", aCommand );
+ n = 0;
+ }
+ }
+ else if( !IsBlank( c ) )
+ {
+ AddError( nLine, "Expecting blank or \'=\' following the command", aCommand );
+ n = 0;
+ }
+ break;
+ case InId:
+ if( c == '=' )
+ {
+ eAct = PostEqu;
+ aVal.Erase();
+ }
+ else if( IsAlphaNum( c ) )
+ aCommand += c;
+ else if( IsBlank( c ) )
+ eAct = PostCommand;
+ else if( ( c == cComm1 && cNext == cComm2 ) || IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ AddError( nLine, "Unexpected end of record id", aCommand );
+ eAct = InComment;
+ }
+ else
+ {
+ AddError( nLine, "Unexpected sal_Char in record id", aCommand );
+ n = 0;
+ }
+ break;
+ case PostEqu:
+ if( bCommand )
+ { // Command
+ if( c == cComm1 && cNext == cComm2 )
+ {
+ if( ExecCommand( nLine, aCommand ) )
+ eAct = InComment;
+ else
+ {
+ AddError( nLine, "Unknwon command", aCommand );
+ n = 0;
+ }
+ }
+ else if( IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ if( ExecCommand( nLine, aCommand ) )
+ {
+ eAct = PreLine;
+ nLine++;
+ }
+ else
+ {
+ AddError( nLine, "Unknwon command", aCommand );
+ n = 0;
+ }
+ }
+ else if( !bCommand && c == cParSep )
+ eAct = PostSepIEC;
+ else if( !IsBlank( c ) )
+ {
+ aVal.Erase();
+ aVal += c;
+ eAct = InVal;
+ }
+ }
+ else
+ { // Set
+ if( ( c == cComm1 && cNext == cComm2 ) || IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ AddError( nLine, "No mode set for record", aCommand );
+ n = 0;
+ }
+ else if( !bCommand && c == cParSep )
+ eAct = PostSepIEC;
+ else
+ {
+ aVal.Erase();
+ aVal += c;
+ eAct = InName;
+ aInExClude.Erase();
+ aHexBody.Erase();
+ }
+ }
+ break;
+ case InVal:
+ if( c == cComm1 && cNext == cComm2 )
+ {
+ if( ExecCommand( nLine, aCommand, &aVal ) )
+ eAct = InComment;
+ else
+ {
+ AddError( nLine, "Unknwon command", aCommand );
+ n = 0;
+ }
+ }
+ else if( IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ if( ExecCommand( nLine, aCommand, &aVal ) )
+ {
+ eAct = PreLine;
+ nLine++;
+ }
+ else
+ {
+ AddError( nLine, "Unknwon command", aCommand );
+ n = 0;
+ }
+ }
+ else
+ aVal += c;
+ break;
+ case InName:
+ if( c == cParSep )
+ eAct = PostSepIEC;
+ else if( c == cComm1 && cNext == cComm2 )
+ {
+ if( ExecSetVal( nLine, aCommand, &aVal, NULL, NULL ) )
+ eAct = InComment;
+ else
+ n = 0;
+ }
+ else if( IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ if( ExecSetVal( nLine, aCommand, &aVal, NULL, NULL ) )
+ {
+ eAct = PreLine;
+ nLine++;
+ }
+ else
+ n = 0;
+ }
+ else
+ aVal += c;
+ break;
+ case InInExClude:
+ if( c == cParSep )
+ eAct = PostSepBM;
+ else if( c == cComm1 && cNext == cComm2 )
+ {
+ if( ExecSetVal( nLine, aCommand, &aVal, &aInExClude, NULL ) )
+ eAct = InComment;
+ else
+ n = 0;
+ }
+ else if( IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ if( ExecSetVal( nLine, aCommand, &aVal, &aInExClude, NULL ) )
+ {
+ eAct = PreLine;
+ nLine++;
+ }
+ else
+ n = 0;
+ }
+ else
+ aInExClude += c;
+ break;
+ case InBodyMode:
+ if( c == cParSep )
+ {
+ AddError( nLine, "Only 3 parameter possible" );
+ n = 0;
+ }
+ else if( c == cComm1 && cNext == cComm2 )
+ {
+ if( ExecSetVal( nLine, aCommand, &aVal, &aInExClude, &aHexBody ) )
+ eAct = InComment;
+ else
+ n = 0;
+ }
+ else if( IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ if( ExecSetVal( nLine, aCommand, &aVal, &aInExClude, &aHexBody ) )
+ {
+ eAct = PreLine;
+ nLine++;
+ }
+ else
+ n = 0;
+ }
+ else
+ aInExClude += c;
+ break;
+ case PostSepIEC:
+ if( c == cParSep )
+ eAct = PostSepBM;
+ else if( c == cComm1 && cNext == cComm2 )
+ {
+ if( ExecSetVal( nLine, aCommand, &aVal, NULL, NULL ) )
+ eAct = InComment;
+ else
+ n = 0;
+ }
+ else if( IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ if( ExecSetVal( nLine, aCommand, &aVal, NULL, NULL ) )
+ {
+ eAct = PreLine;
+ nLine++;
+ }
+ else
+ n = 0;
+ }
+ else if( !IsBlank( c ) )
+ {
+ aInExClude += c;
+ eAct = InInExClude;
+ }
+ break;
+ case PostSepBM:
+ if( c == cParSep )
+ eAct = PostSepBM;
+ else if( c == cComm1 && cNext == cComm2 )
+ {
+ if( ExecSetVal( nLine, aCommand, &aVal, &aInExClude, NULL ) )
+ eAct = InComment;
+ else
+ n = 0;
+ }
+ else if( IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ if( ExecSetVal( nLine, aCommand, &aVal, &aInExClude, NULL ) )
+ {
+ eAct = PreLine;
+ nLine++;
+ }
+ else
+ n = 0;
+ }
+ else if( !IsBlank( c ) )
+ {
+ aHexBody += c;
+ eAct = InBodyMode;
+ }
+ break;
+ case InComment:
+ if( IsLineEnd( c, cNext, *pIn, n ) )
+ {
+ eAct = PreLine;
+ nLine++;
+ }
+ break;
+ default:
+ n = 0;
+ }
+
+ c = cNext;
+ *pIn >> cNext;
+ }
+
+ pIn->Close();
+ delete pIn;
+ }
+}
+
+
+BOOL Biff8RecDumper::ExecCommand( const UINT32 nL, const ByteString& r, const ByteString* pVal )
+{
+ _KEYWORD e = GetKeyType( r );
+ BOOL b = TRUE;
+ const UINT32 nValLen = ( pVal )? pVal->Len() : 0;
+ BOOL bSet;
+ UINT16 nMode;
+
+ switch( e )
+ {
+ case Skipdump: bSkip = TRUE; break;
+ case SkipOffset: bSkipOffset = TRUE; break;
+ case Contload: bEndLoading = TRUE; break;
+ case Parsep:
+ if( nValLen == 0 )
+ {
+ AddError( nL, "No separator found" );
+ b = FALSE;
+ }
+ else if( nValLen == 1 )
+ cParSep = *( pVal->GetBuffer() );
+ else
+ {
+ AddError( nL, "More than 1 sal_Char is not valid for separator", *pVal );
+ b = FALSE;
+ }
+ break;
+ case Maxbodylines:
+ if( nValLen )
+ {
+ UINT32 n = GetVal( *pVal );
+
+ if( n == 0xFFFFFFFF )
+ {
+ AddError( nL, "Syntax error in value of body lines" );
+ b = FALSE;
+ }
+ else
+ nMaxBodyLines = n;
+ }
+ else
+ {
+ AddError( nL, "No value specified for number of body lines" );
+ b = FALSE;
+ }
+ break;
+ case Include:
+ bSet = FALSE;
+ nMode = MODE_SKIP;
+ goto _common;
+ case Exclude:
+ bSet = TRUE;
+ nMode = MODE_SKIP;
+ goto _common;
+ case Hex:
+ bSet = TRUE;
+ nMode = MODE_HEX;
+ goto _common;
+ case Body:
+ bSet = FALSE;
+ nMode = MODE_HEX;
+ goto _common;
+ case NameOnly:
+ bSet = TRUE;
+ nMode = MODE_NAMEONLY;
+ goto _common;
+_common:
+ if( pVal )
+ {
+ IdRangeList aRL;
+ if( FillIdRangeList( nL, aRL, *pVal ) )
+ {
+ const IdRange* p = aRL.First();
+ if( bSet )
+ {
+ while( p )
+ { SetFlag( p->nFirst, p->nLast, nMode ); p = aRL.Next(); }
+ }
+ else
+ {
+ while( p )
+ { ClrFlag( p->nFirst, p->nLast, nMode ); p = aRL.Next(); }
+ }
+ }
+ else
+ b = FALSE;
+ }
+ break;
+ case Comment:
+ if( pVal && pVal->Len() >= 2 )
+ {
+ cComm1 = pVal->GetChar( 0 );
+ cComm2 = pVal->GetChar( 1 );
+ }
+ break;
+ case Output:
+ CopyStrpOnStrp( pOutName, pVal );
+ if( pOutName )
+ {
+ if( *pOutName == "*" )
+ {
+ ByteString aDefault( "DefaultDumpName.txt" );
+ SfxObjectShell* pShell = pExcRoot->pDoc->GetDocumentShell();
+ if( pShell )
+ {
+ SfxMedium* pMedium = pShell->GetMedium();
+ if( pMedium )
+ {
+ const ByteString aTextExtension( ".txt" );
+ aDefault = GETSTR( pMedium->GetPhysicalName() );
+ xub_StrLen nStrLen = aDefault.Len();
+ if( nStrLen >= 4 )
+ {
+ ByteString aTmp( aDefault );
+ aTmp.ToLowerAscii();
+ if( aTmp.Copy( nStrLen -4 ) == ".xls" )
+ aDefault.Replace( nStrLen - 4, aTextExtension.Len(), aTextExtension );
+ else
+ aDefault += aTextExtension;
+ }
+ else
+ aDefault += aTextExtension;
+ }
+ }
+
+ *pOutName = aDefault;
+ }
+ CreateOutStream( nL );
+ }
+ else if( pDumpStream )
+ {
+ pDumpStream->Close();
+ DELANDNULL( pDumpStream );
+ }
+ break;
+ case Title:
+ CopyStrpOnStrp( pTitle, pVal );
+ break;
+ case ClearFile:
+ bClearFile = TRUE;
+ break;
+ default:
+ AddError( nL, "Unknown command", r );
+ b = FALSE;
+ }
+
+ return b;
+}
+
+
+BOOL Biff8RecDumper::ExecSetVal( const UINT32 nL, const ByteString& rId, const ByteString* pName,
+ const ByteString* pIEC, const ByteString* pHB )
+{
+ UINT32 _nId = GetVal( rId );
+
+ if( _nId == 0xFFFFFFFF )
+ {
+ AddError( nL, "Syntax error in record id", rId );
+ return FALSE;
+ }
+ else if( _nId >= ( UINT32 ) nRecCnt )
+ {
+ AddError( nL, "Record id to high", rId );
+ return FALSE;
+ }
+
+ UINT16 nId = ( UINT16 ) _nId;
+
+ if( pName && pName->Len() )
+ SetName( nId, *pName );
+
+ _KEYWORD e;
+ UINT16 n = GetMode( nId );
+
+ if( pIEC && pIEC->Len() )
+ {
+ e = GetKeyType( *pIEC );
+
+ if( e == Include )
+ n &= ~MODE_SKIP;
+ else if( e == Exclude )
+ n |= MODE_SKIP;
+ else
+ {
+ AddError( nL, "Invalid key for in-/exclude", *pIEC );
+ return FALSE;
+ }
+ }
+
+ if( pHB && pHB->Len() )
+ {
+ e = GetKeyType( *pHB );
+
+ if( e == NameOnly )
+ n |= MODE_NAMEONLY;
+ else
+ {
+ n &= ~MODE_NAMEONLY;
+ if( e == Hex )
+ n |= MODE_HEX;
+ else if( e == Body )
+ n &= ~MODE_HEX;
+ else
+ {
+ AddError( nL, "Invalid key for hex/body/name only", *pIEC );
+ return FALSE;
+ }
+ }
+ }
+
+ SetMode( nId, n );
+ return TRUE;
+}
+
+
+void Biff8RecDumper::SetFlag( const UINT16 nF, const UINT16 nL, const UINT16 nFl )
+{
+ UINT16 n = ( nF < nL )? nF : nL;
+ UINT16 nLast = ( nF < nL )? nL : nF;
+
+ if( nLast >= nRecCnt )
+ nLast = nRecCnt - 1;
+
+ while( n <= nLast )
+ {
+ pDumpModes[ n ] |= nFl;
+ n++;
+ }
+}
+
+
+void Biff8RecDumper::ClrFlag( const UINT16 nF, const UINT16 nL, const UINT16 nFlags )
+{
+ UINT16 n = ( nF < nL )? nF : nL;
+ UINT16 nLast = ( nF < nL )? nL : nF;
+ UINT16 nFl = ~nFlags;
+
+ if( nLast >= nRecCnt )
+ nLast = nRecCnt - 1;
+
+ while( n <= nLast )
+ {
+ pDumpModes[ n ] &= nFl;
+ n++;
+ }
+}
+
+
+void Biff8RecDumper::SetName( const UINT16 n, ByteString* p )
+{
+ if( n < nRecCnt )
+ CopyStrpOnStrp( ppRecNames[ n ], p );
+}
+
+
+UINT32 Biff8RecDumper::GetVal( const ByteString& r )
+{
+ const sal_Char* p = r.GetBuffer();
+ sal_Char c = *p;
+ UINT32 n;
+ const UINT32 nLimitDec = 0xFFFFFFFF / 10;
+ const UINT32 nLimitHex = 0xFFFFFFFF / 16;
+ BOOL bError = FALSE;
+
+ enum STATE { First, Dec, MaybeHex, Hex };
+
+ STATE e = First;
+
+ while( c )
+ {
+ switch( e )
+ {
+ case First:
+ if( IsNum( c ) )
+ {
+ if( c == '0' )
+ e = MaybeHex;
+ else
+ {
+ e = Dec;
+ n = GetVal( c );
+ }
+ }
+ else
+ bError = TRUE;
+ break;
+ case Dec:
+ if( n < nLimitDec && IsNum( c ) )
+ {
+ n *= 10;
+ n += GetVal( c );
+ }
+ else
+ bError = TRUE;
+ break;
+ case MaybeHex:
+ if( c == 'x' || c == 'X' )
+ {
+ e = Hex;
+ n = 0;
+ }
+ else if( IsNum( c ) )
+ {
+ n = GetVal( c );
+ e = Dec;
+ }
+ else
+ bError = TRUE;
+ break;
+ case Hex:
+ if( n < nLimitHex && IsHex( c ) )
+ {
+ n *= 16;
+ n += GetVal( c );
+ }
+ else
+ bError = TRUE;
+ break;
+ }
+
+ if( bError )
+ c = 0x00;
+ else
+ {
+ p++;
+ c = *p;
+ }
+ }
+
+ if( bError )
+ return 0xFFFFFFFF;
+ else
+ return n;
+}
+
+
+BOOL Biff8RecDumper::FillIdRangeList( const UINT32 nL, IdRangeList& rRL, const ByteString& rV )
+{
+ rRL.Clear();
+
+ const sal_Char* pSyntErr = "Syntax error in number (list)";
+
+#define SYNTERR(ch) AddError( ((UINT32)(b=FALSE))+nL, pSyntErr, ch? ((((t+=">")+=ByteString::CreateFromInt32(ch))+="<")) : t )
+#define NEWVAL(_n) _n=(n>=(UINT32)nRecCnt)?nRecCnt-1:(UINT16)n
+#define ORDERN() {if(n1>n2){UINT16 nT=n1;n1=n2;n2=nT;}}
+
+ const sal_Char* p = rV.GetBuffer();
+ sal_Char c = *p;
+ const sal_Char cSep = cParSep;
+ const sal_Char cCont = '.';
+ const sal_Char cAll = '*';
+ ByteString t;
+ UINT16 n1, n2;
+ UINT32 n;
+ BOOL b = TRUE;
+ BOOL bExp2 = FALSE;
+
+ enum STATE { PreFirst, InFirst, PostFirst, InCont, PreLast, InLast, PostLast };
+ STATE e = PreFirst;
+
+ while( c )
+ {
+ switch( e )
+ {
+ case PreFirst:
+ if( IsAlphaNum( c ) )
+ {
+ t += c;
+ e = InFirst;
+ }
+ else if( c == cAll )
+ {
+ rRL.Append( 0, nRecCnt - 1 );
+ e = PostLast;
+ }
+ else if( !IsBlank( c ) )
+ SYNTERR( c );
+ break;
+ case InFirst:
+ if( c == cSep || c == cCont || IsBlank( c ) )
+ {
+ n = GetVal( t );
+ if( n == 0xFFFFFFFF )
+ SYNTERR( 0 );
+ else
+ NEWVAL( n1 );
+
+ t.Erase();
+
+ if( c == cSep )
+ {
+ rRL.Append( n1, n1 );
+ e = PreFirst;
+ }
+ else if( c == cCont )
+ {
+ bExp2 = TRUE;
+ e = InCont;
+ }
+ else
+ e = PostFirst;
+ }
+ else if( IsAlphaNum( c ) )
+ t += c;
+ else
+ SYNTERR( c );
+ break;
+ case PostFirst:
+ if( c == cCont )
+ {
+ e = InCont;
+ bExp2 = TRUE;
+ }
+ else if( c == cSep )
+ {
+ n = GetVal( t );
+ if( n == 0xFFFFFFFF )
+ SYNTERR( 0 );
+ else
+ NEWVAL( n1 );
+
+ e = PreFirst;
+ }
+ else if( !IsBlank( c ) )
+ SYNTERR( c );
+ break;
+ case InCont:
+ if( IsAlphaNum( c ) )
+ {
+ t += c;
+ e = InLast;
+ }
+ else if( IsBlank( c ) )
+ e = PreLast;
+ else if( c == cSep || c == cAll )
+ {
+ rRL.Append( n1, nRecCnt - 1 );
+ bExp2 = FALSE;
+ e = PreFirst;
+ }
+ else if( c != cCont )
+ SYNTERR( c );
+ break;
+ case PreLast:
+ if( IsAlphaNum( c ) )
+ {
+ t += c;
+ e = InLast;
+ }
+ else if( !IsBlank( c ) )
+ SYNTERR( c );
+ break;
+ break;
+ case InLast:
+ if( c == cSep || IsBlank( c ) )
+ {
+ n = GetVal( t );
+ if( n == 0xFFFFFFFF )
+ SYNTERR( 0 );
+ else
+ NEWVAL( n2 );
+
+ t.Erase();
+ ORDERN();
+ rRL.Append( n1, n2 );
+ bExp2 = FALSE;
+ e = ( c == cSep )? PreFirst : PostLast;
+ }
+ else if( IsAlphaNum( c ) )
+ t += c;
+ else
+ SYNTERR( c );
+ break;
+ case PostLast:
+ if( c == cSep )
+ {
+ e = PreFirst;
+ bExp2 = FALSE;
+ }
+ else if( !IsBlank( c ) )
+ SYNTERR( c );
+ break;
+ }
+
+ if( b )
+ {
+ p++;
+ c = *p;
+ }
+ else
+ c = 0x00;
+ }
+
+ if( bExp2 )
+ {
+ if( t.Len() )
+ {
+ n = GetVal( t );
+ if( n == 0xFFFFFFFF )
+ SYNTERR( 0 );
+ else
+ NEWVAL( n2 );
+ ORDERN();
+ }
+ else
+ n2 = nRecCnt - 1;
+
+ if( b )
+ rRL.Append( n1, n2 );
+ }
+
+#undef SYNTERR
+#undef NEWVAL
+#undef ORDERN
+
+ return b;
+}
+
+
+BOOL Biff8RecDumper::CreateOutStream( const UINT32 n )
+{
+ const BOOL bWithErr = ( n != 0xFFFFFFFF );
+
+ if( pDumpStream )
+ {
+ pDumpStream->Close();
+ DELANDNULL( pDumpStream );
+ }
+
+ if( pOutName )
+ {
+ pOutName->EraseLeadingChars( ' ' );
+ pOutName->EraseTrailingChars( ' ' );
+ pOutName->EraseLeadingChars( '\t' );
+ pOutName->EraseTrailingChars( '\t' );
+
+ pDumpStream = new SvFileStream( String::CreateFromAscii( pOutName->GetBuffer() ), STREAM_WRITE|STREAM_SHARE_DENYWRITE );
+
+ if( pDumpStream->IsOpen() )
+ {
+ pDumpStream->Seek( bClearFile? STREAM_SEEK_TO_BEGIN : STREAM_SEEK_TO_END );
+ return TRUE;
+ }
+ else
+ {
+ DELANDNULL( pDumpStream );
+ }
+ }
+
+ return FALSE;
+}
+
+
+SvFileStream* Biff8RecDumper::CreateInStream( const sal_Char* pN )
+{
+ SvFileStream* p = new SvFileStream( String::CreateFromAscii( pN ), STREAM_READ|STREAM_SHARE_DENYWRITE );
+
+ if( p->IsOpen() )
+ return p;
+ else
+ {
+ delete p;
+ return NULL;
+ }
+}
+
+
+SvFileStream* Biff8RecDumper::CreateInStream( const sal_Char* pP, const sal_Char* pN )
+{
+ ByteString t( pP );
+ const sal_Char c = t.GetChar( t.Len() - 1 );
+
+ if( c != '\\' )
+ t += '\\';
+ else if( c != '/' )
+ t += '/';
+
+ t += pN;
+
+ return CreateInStream( t.GetBuffer() );
+}
+
+
+void Biff8RecDumper::AddError( const UINT32 n, const ByteString& rT, const ByteString& rH )
+{
+ DUMP_ERR* p = new DUMP_ERR( n, rT, rH );
+
+ if( pFirst )
+ pLast->pNext = p;
+ else
+ pFirst = p;
+
+ pLast = p;
+}
+
+
+Biff8RecDumper::Biff8RecDumper( RootData& rRootData ) : ExcRoot( &rRootData )
+{
+ nXFCount = 0;
+ nInstances++;
+ pPivotCache = NULL;
+
+ if( !pCharType )
+ {
+ pCharType = new UINT8[ 256 ];
+ memset( pCharType, 0x00, 256 );
+
+ pCharVal = new UINT8[ 256 ];
+ memset( pCharVal, 0x00, 256 );
+
+ sal_Char c;
+ UINT8 n;
+
+#define __TYPE(n) pCharType[(UINT8)n]
+#define __VAL(n) pCharVal[(UINT8)n]
+
+ __TYPE( '\n' ) = CT_EOL;
+ __TYPE( '\r' ) = CT_EOL;
+
+ __TYPE( ' ' ) = CT_BLANK;
+ __TYPE( '\t' ) = CT_BLANK;
+
+ for( c = '0', n = 0 ; c <= '9' ; c++, n++ )
+ {
+ __TYPE( c ) = CT_NUM|CT_HEX|CT_ALPHANUM;
+ __VAL( c ) = n;
+ }
+ for( c = 'a', n = 10 ; c <= 'f' ; c++, n++ )
+ {
+ __TYPE( c ) = CT_HEX|CT_ALPHA|CT_ALPHANUM|CT_LOWERALPHA;
+ __VAL( c ) = n;
+ }
+ for( c = 'g' ; c <= 'z' ; c++ )
+ __TYPE( c ) = CT_ALPHA|CT_ALPHANUM|CT_LOWERALPHA;
+ for( c = 'A', n = 10 ; c <= 'F' ; c++, n++ )
+ {
+ __TYPE( c ) = CT_HEX|CT_ALPHA|CT_ALPHANUM|CT_UPPERALPHA;
+ __VAL( c ) = n;
+ }
+ for( c = 'G' ; c <= 'Z' ; c++ )
+ __TYPE( c ) = CT_ALPHA|CT_ALPHANUM|CT_UPPERALPHA;
+
+#undef __TYPE
+#undef __VAL
+ }
+
+ pDumpStream = NULL;
+
+ if( !pBlankLine )
+ {
+ pBlankLine = new sal_Char[ nLenBlankLine + 1 ];
+ memset( pBlankLine, ' ', nLenBlankLine );
+ pBlankLine[ nLenBlankLine ] = 0x00;
+ }
+
+ pTitle = NULL;
+ pOutName = NULL;
+ pLevelPre = pLevelPreStringNT;
+
+ nMaxBodyLines = 1024;
+ bEndLoading = bSkip = bSkipOffset = FALSE;
+
+ pDumpModes = NULL;
+ ppRecNames = NULL;
+
+ pFirst = pLast = pAct = NULL;
+
+ cParSep = ',';
+ cComm1 = cComm2 = '/';
+
+ Init();
+}
+
+
+Biff8RecDumper::~Biff8RecDumper()
+{
+ if( pDumpStream )
+ {
+ pDumpStream->Close();
+ delete pDumpStream;
+ }
+
+ if( nInstances )
+ {
+ nInstances--;
+ if( !nInstances )
+ {
+ delete[] pBlankLine;
+ pBlankLine = NULL;
+
+ delete[] pCharType;
+ pCharType = NULL;
+
+ delete[] pCharVal;
+ pCharVal = NULL;
+ }
+ }
+
+ if( pDumpModes )
+ delete[] pDumpModes;
+
+ if( ppRecNames )
+ {
+ ByteString** pp = ppRecNames;
+ UINT16 n = nRecCnt;
+ while( n )
+ {
+ if( *pp )
+ delete *pp;
+ pp++;
+ n--;
+ }
+ delete[] ppRecNames;
+ }
+
+ if( pTitle )
+ delete pTitle;
+
+ if( pOutName )
+ delete pOutName;
+
+ DUMP_ERR* p = pFirst;
+ DUMP_ERR* pD;
+ if( p )
+ {
+ pD = p;
+ p = p->pNext;
+ delete pD;
+ }
+}
+
+
+BOOL Biff8RecDumper::Dump( SvStream& r )
+{
+ const DUMP_ERR* pErr = FirstErr();
+
+ if( pErr )
+ {
+ if( pDumpStream )
+ {
+ SvFileStream& rOut = *pDumpStream;
+ while( pErr )
+ {
+ rOut << "\nError";
+ if( pErr->nLine )
+ {
+ ByteString t;
+ t += pErr->nLine;
+ rOut << " at line " << t.GetBuffer();
+ }
+
+ rOut << ": " << pErr->aText.GetBuffer();
+
+ if( pErr->pHint )
+ rOut << " (" << pErr->pHint->GetBuffer() << ')';
+ pErr = NextErr();
+ }
+ rOut << '\n';
+ }
+ }
+ else if( pDumpStream && !bSkip )
+ {
+ pPivotCache = pExcRoot->pPivotCacheStorage;
+
+ if( pTitle )
+ *pDumpStream << pTitle->GetBuffer();
+
+ const UINT32 nStartPos = r.Tell();
+ pIn = &r;
+
+ UINT16 nRecNum, nRecLen;
+ UINT32 nNextRecord;
+
+ FilterProgressBar* pPrgrsBar = new FilterProgressBar( *pIn );
+
+ const UINT32 nLimitPos = pPrgrsBar->GetStreamLen(); // mit 'Sicherheitsbereich'
+
+ nNextRecord = r.Tell();
+
+ while( nNextRecord < nLimitPos )
+ {
+ r >> nRecNum >> nRecLen;
+
+ pPrgrsBar->Progress();
+
+ if( HasModeDump( nRecNum ) )
+ RecDump( nRecNum, nRecLen );
+
+ nNextRecord += 4;
+ nNextRecord += nRecLen;
+
+ r.Seek( nNextRecord );
+ }
+
+ *pDumpStream << '\n';
+
+ pIn = NULL;
+ delete pPrgrsBar;
+
+ r.Seek( nStartPos );
+
+ pPivotCache = NULL;
+ }
+
+ return !bEndLoading;
+}
+
+
+#endif
+
+
+
+
diff --git a/sc/source/filter/excel/colrowst.cxx b/sc/source/filter/excel/colrowst.cxx
new file mode 100644
index 000000000000..fb571f8835be
--- /dev/null
+++ b/sc/source/filter/excel/colrowst.cxx
@@ -0,0 +1,859 @@
+/*************************************************************************
+ *
+ * $RCSfile: colrowst.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+
+#pragma hdrstop
+
+
+#include <string.h>
+
+#include "document.hxx"
+#include "scextopt.hxx"
+
+#include "root.hxx"
+#include "xfbuff.hxx"
+#include "colrowst.hxx"
+
+
+
+const UINT16 FltColumn::nDefCleared = 0xFFFF;
+
+
+ColRowSettings::ColRowSettings( void )
+{
+ pHorizPb = pVertPb = NULL;
+
+ nDefWidth = nDefHeight = 0;
+
+ pWidth = new INT32 [ MAXCOL + 1 ];
+ pColHidden = new BOOL [ MAXCOL + 1 ];
+
+ pHeight = new UINT16 [ MAXROW + 1 ];
+ pRowFlags = new INT8[ MAXROW + 1 ];
+
+ pExtTabOpt = NULL;
+
+ Reset();
+}
+
+
+ColRowSettings::~ColRowSettings()
+{
+ if( pHorizPb )
+ delete pHorizPb;
+
+ if( pVertPb )
+ delete pVertPb;
+
+ delete[] pRowFlags;
+ delete[] pHeight;
+ delete[] pColHidden;
+ delete[] pWidth;
+
+ if( pExtTabOpt )
+ delete pExtTabOpt;
+}
+
+
+void ColRowSettings::Reset( void )
+{
+ UINT16 nC;
+ for( nC = 0 ; nC <= MAXCOL ; nC++ )
+ {
+ pColHidden[ nC ] = FALSE;
+ pWidth[ nC ] = -1;
+ }
+
+ memset( pRowFlags, 0x00, sizeof( INT8 ) * ( MAXROW + 1 ) );
+
+ if( pExtTabOpt )
+ {
+ delete pExtTabOpt;
+ pExtTabOpt = NULL;
+ }
+
+ if( pHorizPb )
+ {
+ delete pHorizPb;
+ pHorizPb = NULL;
+ }
+
+ if( pVertPb )
+ {
+ delete pVertPb;
+ pVertPb = NULL;
+ }
+
+ bDirty = TRUE;
+ nMaxRow = 0;
+
+ bSetByStandard = FALSE;
+}
+
+
+void ColRowSettings::Apply( const UINT16 nAktTab )
+{
+ if( !bDirty )
+ return;
+
+ UINT16 nC;
+ UINT16 nStart = 0;
+ UINT16 nWidth;
+ UINT16 nLastWidth = ( pWidth[ 0 ] >= 0 )? ( UINT16 ) pWidth[ 0 ] : nDefWidth;
+ ScDocument& rD = *pExcRoot->pDoc;
+ BOOL bExtraHide;
+
+ rD.IncSizeRecalcLevel( nAktTab );
+
+ // Column-Bemachung
+ for( nC = 0 ; nC <= MAXCOL ; nC++ )
+ {
+ if( pWidth[ nC ] >= 0 )
+ // eingestellte Width
+ nWidth = ( UINT16 ) pWidth[ nC ];
+ else
+ // Default-Width
+ nWidth = nDefWidth;
+
+ bExtraHide = ( nWidth == 0 );
+
+ if( !bExtraHide )
+ rD.SetColWidth( nC, nAktTab, nWidth );
+
+ if( pColHidden[ nC ] || bExtraHide )
+ // Column versteckt
+ rD.SetColFlags( nC, nAktTab, rD.GetColFlags( nC, nAktTab ) | CR_HIDDEN );
+ }
+
+ // Row-Bemachung
+
+ INT8 nFlags;
+ nStart = 0;
+ UINT16 nHeight;
+
+ UINT16 nLastHeight;
+ nFlags = pRowFlags[ 0 ];
+ if( nFlags & ROWFLAG_USED )
+ {
+ if( nFlags & ROWFLAG_DEFAULT )
+ nLastHeight = nDefHeight;
+ else
+ {
+ nLastHeight = pHeight[ 0 ];
+ if( !nLastHeight )
+ nLastHeight = nDefHeight;
+ }
+ }
+ else
+ nLastHeight = nDefHeight;
+
+ for( nC = 0 ; nC <= nMaxRow ; nC++ )
+ {
+ nFlags = pRowFlags[ nC ];
+
+ if( nFlags & ROWFLAG_USED )
+ {
+ if( nFlags & ROWFLAG_DEFAULT )
+ nHeight = nDefHeight;
+ else
+ {
+ nHeight = pHeight[ nC ];
+ if( !nHeight )
+ nHeight = nDefHeight;
+ }
+
+ if( nFlags & ( ROWFLAG_HIDDEN | ROWFLAG_MAN ) )
+ {
+ BYTE nSCFlags = rD.GetRowFlags( nC, nAktTab );
+
+ if( nFlags & ROWFLAG_HIDDEN )
+ nSCFlags |= CR_HIDDEN;
+
+ if( nFlags & ROWFLAG_MAN )
+ nSCFlags |= CR_MANUALSIZE;
+
+ rD.SetRowFlags( nC, nAktTab, nSCFlags );
+ }
+ }
+ else
+ nHeight = nDefHeight;
+
+ if( !nHeight )
+ rD.SetRowFlags( nC, nAktTab, rD.GetRowFlags( nC, nAktTab ) | CR_HIDDEN );
+
+ if( nLastHeight != nHeight )
+ {
+ DBG_ASSERT( nC, "ColRowSettings::Apply(): Algorithmus-Fehler!" );
+
+ if( nLastHeight )
+ rD.SetRowHeightRange( nStart, nC - 1, nAktTab, nLastHeight );
+
+ nStart = nC;
+ nLastHeight = nHeight;
+ }
+ }
+
+ if( nLastHeight )
+ rD.SetRowHeightRange( nStart, nMaxRow, nAktTab, nLastHeight );
+
+ if( pExtTabOpt )
+ pExcRoot->pExtDocOpt->Add( *this );
+
+ if( pHorizPb )
+ {
+ UINT16 n = pHorizPb->First();
+
+ while( n && n <= MAXROW )
+ {
+ rD.SetRowFlags( n, nAktTab, rD.GetRowFlags( n, nAktTab ) | CR_MANUALBREAK );
+ n = pHorizPb->Next();
+ }
+ }
+
+ if( pVertPb )
+ {
+ UINT16 n = pVertPb->First();
+
+ while( n && n <= MAXCOL )
+ {
+ rD.SetColFlags( n, nAktTab, rD.GetColFlags( n, nAktTab ) | CR_MANUALBREAK );
+ n = pVertPb->Next();
+ }
+ }
+
+ bDirty = FALSE; // jetzt stimmt Tabelle im ScDocument
+
+ rD.DecSizeRecalcLevel( nAktTab );
+}
+
+
+void ColRowSettings::HideColRange( UINT16 nColFirst, UINT16 nColLast )
+{
+ DBG_ASSERT( nColFirst <= nColLast, "+ColRowSettings::HideColRange(): First > Last?!" );
+ DBG_ASSERT( nColLast <= MAXCOL, "+ColRowSettings::HideColRange(): ungueltige Column" );
+
+ if( nColLast > MAXCOL )
+ nColLast = MAXCOL;
+
+ BOOL* pHidden;
+ BOOL* pFinish;
+ pHidden = &pColHidden[ nColFirst ];
+ pFinish = &pColHidden[ nColLast ];
+ while( pHidden <= pFinish )
+ *( pHidden++ ) = TRUE;
+}
+
+
+void ColRowSettings::SetWidthRange( UINT16 nColFirst, UINT16 nColLast, UINT16 nNew )
+{
+ DBG_ASSERT( nColFirst <= nColLast, "+ColRowSettings::SetColWidthRange(): First > Last?!" );
+ DBG_ASSERT( nColLast <= MAXCOL, "+ColRowSettings::SetColWidthRange(): ungueltige Column" );
+
+ if( nColLast > MAXCOL )
+ nColLast = MAXCOL;
+
+ INT32* pWidthCount;
+ INT32* pFinish;
+ pWidthCount = &pWidth[ nColFirst ];
+ pFinish = &pWidth[ nColLast ];
+
+ while( pWidthCount <= pFinish )
+ *( pWidthCount++ ) = nNew;
+}
+
+
+void ColRowSettings::SetDefaultXF( UINT16 nColFirst, UINT16 nColLast, UINT16 nXF )
+{
+ DBG_ASSERT( nColFirst <= nColLast, "+ColRowSettings::SetDefaultXF(): First > Last?!" );
+ DBG_ASSERT( nColLast <= MAXCOL, "+ColRowSettings::SetDefaultXF(): ungueltige Column" );
+
+ if( nColLast > MAXCOL )
+ nColLast = MAXCOL;
+
+ ScDocument& rDoc = *pExcRoot->pDoc;
+ XF_Buffer& rXFBuff = *pExcRoot->pXF_Buffer;
+ const UINT16 nTab = *pExcRoot->pAktTab;
+
+ for( UINT16 n = nColFirst ; n <= nColLast ; n++ )
+ rDoc.ApplyPatternAreaTab( n, 0, n, MAXROW, nTab, rXFBuff.GetPattern( nXF ) );
+}
+
+
+void ColRowSettings::SetDefaults( UINT16 nWidth, UINT16 nHeight )
+{
+ nDefWidth = nWidth;
+ nDefHeight = nHeight;
+}
+
+
+void ColRowSettings::_SetRowSettings( const UINT16 nRow, const UINT16 nExcelHeight, const UINT16 nGrbit )
+{
+ pHeight[ nRow ] = ( UINT16 ) ( ( double ) ( nExcelHeight & 0x7FFF ) * pExcRoot->fRowScale );
+
+ INT8 nFlags = ROWFLAG_USED;
+
+ if( nExcelHeight & 0x8000 )
+ nFlags |= ROWFLAG_DEFAULT;
+
+ if( nGrbit & 0x40 )
+ nFlags |= ROWFLAG_MAN;
+
+ if( nGrbit & 0x20 )
+ nFlags |= ROWFLAG_HIDDEN;
+
+ pRowFlags[ nRow ] = nFlags;
+
+ if( nRow > nMaxRow )
+ nMaxRow = nRow;
+}
+
+
+void ColRowSettings::ReadSplit( SvStream& rIn )
+{
+ if( !pExtTabOpt )
+ {
+ pExtTabOpt = new ScExtTabOptions;
+ pExtTabOpt->bFrozen = FALSE;
+ }
+
+ rIn >> pExtTabOpt->nSplitX >> pExtTabOpt->nSplitY >> pExtTabOpt->nTopSplitRow >> pExtTabOpt->nLeftSplitCol;
+
+ if( pExcRoot->eHauptDateiTyp == Biff5 )
+ rIn >> pExtTabOpt->nActPane;
+ else
+ {
+ UINT8 nTmp;
+ rIn >> nTmp;
+ pExtTabOpt->nActPane = nTmp;
+ }
+
+ pExtTabOpt->nTabNum = *pExcRoot->pAktTab;
+}
+
+
+void ColRowSettings::SetFrozen( const BOOL bFrozen )
+{
+ if( !pExtTabOpt )
+ pExtTabOpt = new ScExtTabOptions;
+
+ pExtTabOpt->nTabNum = *pExcRoot->pAktTab;
+ pExtTabOpt->bFrozen = bFrozen;
+}
+
+
+
+void ColRowSettings::SetSelection( const ScRange& rSel )
+{
+ if( pExtTabOpt )
+ pExtTabOpt->SetSelection( rSel );
+ else
+ pExtTabOpt = new ScExtTabOptions( rSel );
+}
+
+
+void ColRowSettings::SetDimension( const ScRange& rDim )
+{
+ if( !pExtTabOpt )
+ pExtTabOpt = new ScExtTabOptions;
+
+ pExtTabOpt->SetDimension( rDim );
+}
+
+
+void ColRowSettings::SetHorizPagebreak( const UINT16 n )
+{
+ DBG_ASSERT( n, "+ColRowSettings::SetHorizPagebreak(): 0 ist hier nicht zulaessig!" );
+
+ if( !pHorizPb )
+ pHorizPb = new UINT16List;
+
+ pHorizPb->Append( n );
+}
+
+
+void ColRowSettings::SetVertPagebreak( const UINT16 n )
+{
+ DBG_ASSERT( n, "+ColRowSettings::SetVertPagebreak(): 0 ist hier nicht zulaessig!" );
+
+ if( !pVertPb )
+ pVertPb = new UINT16List;
+
+ pVertPb->Append( n );
+}
+
+
+
+
+FltColumn::FltColumn( RootData* pRD, UINT16 nNewCol ) : ExcRoot( pRD )
+{
+ DBG_ASSERT( nNewCol <= MAXCOL, "-FltColumn::Ctor: Column > MAXCOL! MIIIIIIIIIIIIIIIIIIST!" );
+
+ pData = new UINT16[ MAXROW + 1 ];
+ nCol = nNewCol;
+ nLastRow = MAXROW;
+ Reset();
+}
+
+
+FltColumn::~FltColumn()
+{
+ delete[] pData;
+}
+
+
+void FltColumn::Reset( void )
+{
+ for( UINT16 nC = 0 ; nC <= nLastRow ; nC++ )
+ pData[ nC ] = nDefCleared;
+
+ nLastRow = 0;
+}
+
+
+void FltColumn::Apply( const UINT16 nTab ) const
+{
+ ScDocument& rD = *pExcRoot->pDoc;
+ XF_Buffer& rXF_Buff = *pExcRoot->pXF_Buffer;
+
+ UINT16 nCount, nLastXF, nAktXF, nLastCount;
+
+ nLastCount = 0;
+ nLastXF = pData[ nLastCount ];
+
+ for( nCount = 1 ; nCount <= nLastRow ; nCount++ )
+ {
+ nAktXF = pData[ nCount ];
+ if( nAktXF != nLastXF )
+ {
+ if( nLastXF != nDefCleared )
+ rD.ApplyPatternAreaTab( nCol, nLastCount, nCol, nCount - 1, nTab, rXF_Buff.GetPattern( nLastXF ) );
+ nLastCount = nCount;
+ nLastXF = nAktXF;
+ }
+ }
+ // ...und den Rest applyen
+ if( nLastXF != nDefCleared )
+ rD.ApplyPatternAreaTab( nCol, nLastCount, nCol, nCount - 1, nTab, rXF_Buff.GetPattern( nLastXF ) );
+}
+
+
+
+
+FltTabelle::FltTabelle( RootData* pRD ) : ExcRoot( pRD )
+{
+ nSize = MAXCOL + 1;
+ nLastCol = 0;
+ pData = new FltColumn *[ nSize ];
+
+ pData[ 0 ] = new FltColumn( pExcRoot, 0 ); // Column 0 gibt's per Default
+
+ for( UINT16 nC = 1 ; nC < nSize ; nC++ )
+ pData[ nC ] = NULL;
+
+ pFirstCellMerge = pLastCellMerge = NULL;
+}
+
+
+FltTabelle::~FltTabelle()
+{
+ FltColumn** pDel = pData;
+ for( UINT16 nC = 0 ; nC <= nLastCol ; nC++, pDel++ )
+ if( *pDel ) delete *pDel;
+
+ delete [] pData;
+
+ if( pFirstCellMerge )
+ {
+ CELLMERGE* pN;
+ CELLMERGE* pDel = pFirstCellMerge;
+ while( pDel )
+ {
+ pN = pDel->pNext;
+ delete pDel;
+ pDel = pN;
+ }
+#ifdef _DEBUG
+ pFirstCellMerge = pLastCellMerge = NULL;
+#endif
+ }
+}
+
+
+void FltTabelle::SetXF( UINT16 nCol, UINT16 nRow, UINT16 nNewXF, const BOOL bBlank )
+{
+ DBG_ASSERT( nCol <= MAXCOL, "-FltTabelle::SetXF(): Col > MAXCOL!");
+ DBG_ASSERT( nRow <= MAXROW, "-FltTabelle::SetXF(): Row > MAXROW!");
+
+ if( !pData[ nCol ] )
+ {
+ pData[ nCol ] = new FltColumn( pExcRoot, nCol );
+ if( nCol > nLastCol ) nLastCol = nCol;
+ }
+
+ const XF_Data* pXFData = pExcRoot->pXF_Buffer->GetXF( nNewXF );
+
+#ifdef _DEBUG
+ if( !pXFData )
+ {
+ DBG_WARNING( "+FltTabelle::SetXF(): Nicht so schnell mein Freund?!" );
+ }
+#endif
+
+ if( pXFData && pXFData->HorizAlign() == EHA_CentAcrSel )
+ {
+ if( pFirstCellMerge )
+ {
+ CELLMERGE* p;
+ if( bBlank )
+ {
+ p = pLastCellMerge;
+ if( p->nLast + 1 == nCol )
+ p->nLast = nCol;
+ else
+ {
+ p = new CELLMERGE( nRow, nCol );
+ pLastCellMerge->pNext = p;
+ pLastCellMerge = p;
+ }
+ }
+ else
+ {
+ p = new CELLMERGE( nRow, nCol );
+ pLastCellMerge->pNext = p;
+ pLastCellMerge = p;
+ }
+ }
+ else
+ pFirstCellMerge = pLastCellMerge = new CELLMERGE( nRow, nCol );
+ }
+
+ pData[ nCol ]->SetXF( nRow, nNewXF );
+}
+
+
+void FltTabelle::Reset( void )
+{
+ for( UINT16 nC = 0 ; nC <= nLastCol ; nC++ )
+ if( pData[ nC ] ) pData[ nC ]->Reset();
+
+ if( pFirstCellMerge )
+ {
+ CELLMERGE* pN;
+ CELLMERGE* pDel = pFirstCellMerge;
+ while( pDel )
+ {
+ pN = pDel->pNext;
+ delete pDel;
+ pDel = pN;
+ }
+
+ pFirstCellMerge = pLastCellMerge = NULL;
+ }
+}
+
+
+void FltTabelle::Apply( const UINT16 nTab )
+{
+ for( UINT16 nC = 0 ; nC <= nLastCol ; nC++ )
+ if( pData[ nC ] ) pData[ nC ]->Apply( nTab );
+
+ if( pFirstCellMerge )
+ {
+ CELLMERGE* p = pFirstCellMerge;
+ ScDocument* pDoc = pExcRoot->pDoc;
+
+ while( p )
+ {
+ pDoc->DoMerge( nTab, p->nFirst, p->nRow, p->nLast, p->nRow );
+ p = p->pNext;
+ }
+ }
+}
+
+
+
+
+void ScExtTabOptions::SetSelection( const ScRange& r )
+{
+ if( r.aStart.Row() <= MAXROW && r.aEnd.Row() <= MAXROW )
+ {
+ bValidSel = TRUE;
+ aLastSel = r;
+ }
+ else
+ bValidSel = FALSE;
+}
+
+
+void ScExtTabOptions::SetDimension( const ScRange& r )
+{
+ if( r.aStart.Row() <= MAXROW && r.aEnd.Row() <= MAXROW )
+ {
+ bValidDim = TRUE;
+ aDim = r;
+ }
+ else
+ bValidDim = FALSE;
+}
+
+
+
+
+CodenameList::CodenameList( const CodenameList& r )
+{
+ UINT32 n = 0;
+ const String* p = ( const String*) r.GetObject( n );
+
+ while( p )
+ {
+ Append( *p );
+ n++;
+ p = ( const String*) r.GetObject( n );
+ }
+}
+
+
+CodenameList::~CodenameList()
+{
+ String* p = ( String* ) List::First();
+
+ while( p )
+ {
+ delete p;
+ p = ( String* ) List::Next();
+ }
+}
+
+
+
+
+ScExtDocOptions::ScExtDocOptions( void )
+{
+ pGridCol = NULL;
+ nActTab = nVisLeftCol = nVisTopRow = 0;
+ nLinkCnt = 0; // -> 'Root'-Dokument
+ nZoom = 100;
+
+ ppExtTabOpts = new ScExtTabOptions *[ MAXTAB + 1 ];
+ for( UINT16 nCnt = 0 ; nCnt <= MAXTAB ; nCnt++ )
+ ppExtTabOpts[ nCnt ] = NULL;
+
+ pCodenameWB = NULL;
+ pCodenames = NULL;
+}
+
+
+ScExtDocOptions::~ScExtDocOptions()
+{
+ if( pGridCol )
+ delete pGridCol;
+
+ for( UINT16 nCnt = 0 ; nCnt <= MAXTAB ; nCnt++ )
+ {
+ if( ppExtTabOpts[ nCnt ] )
+ delete ppExtTabOpts[ nCnt ];
+ }
+
+ delete[] ppExtTabOpts;
+
+ if( pCodenameWB )
+ delete pCodenameWB;
+ if( pCodenames )
+ delete pCodenames;
+}
+
+
+ScExtDocOptions& ScExtDocOptions::operator =( const ScExtDocOptions& rCpy )
+{
+ nLinkCnt = rCpy.nLinkCnt;
+ nActTab = rCpy.nActTab;
+ nVisLeftCol = rCpy.nVisLeftCol;
+ nVisTopRow = rCpy.nVisTopRow;
+ if( pGridCol )
+ {
+ if( rCpy.pGridCol )
+ *pGridCol = *rCpy.pGridCol;
+ else
+ {
+ delete pGridCol;
+ pGridCol = NULL;
+ }
+ }
+ else if( rCpy.pGridCol )
+ pGridCol = new Color( *rCpy.pGridCol );
+
+ nZoom = rCpy.nZoom;
+ nCurCol = rCpy.nCurCol;
+ nCurRow = rCpy.nCurRow;
+
+ for( UINT16 nCnt = 0 ; nCnt <= MAXTAB ; nCnt++ )
+ {
+ const ScExtTabOptions* pT = rCpy.ppExtTabOpts[ nCnt ];
+ if( pT )
+ {
+ if( ppExtTabOpts[ nCnt ] )
+ *ppExtTabOpts[ nCnt ] = *pT;
+ else
+ ppExtTabOpts[ nCnt ] = new ScExtTabOptions( *pT );
+ }
+ else
+ {
+ if( ppExtTabOpts[ nCnt ] )
+ delete ppExtTabOpts[ nCnt ];
+
+ ppExtTabOpts[ nCnt ] = NULL;
+ }
+ }
+
+ if( rCpy.pCodenameWB )
+ pCodenameWB = new String( *rCpy.pCodenameWB );
+ if( rCpy.pCodenames )
+ pCodenames = new CodenameList( *rCpy.pCodenames );
+
+ return *this;
+}
+
+
+void ScExtDocOptions::SetGridCol( BYTE nR, BYTE nG, BYTE nB )
+{
+ const static UINT16 nFakt = 257; // 0...255 * 257 = 0...65535
+
+ if( pGridCol )
+ delete pGridCol;
+
+ pGridCol = new Color( nFakt * nR, nFakt * nG, nFakt * nB );
+}
+
+
+void ScExtDocOptions::SetActTab( UINT16 nTab )
+{
+ nActTab = ( nTab <= MAXTAB )? nTab : MAXTAB;
+}
+
+
+void ScExtDocOptions::SetVisCorner( UINT16 nCol, UINT16 nRow )
+{
+ nVisLeftCol = ( nCol <= MAXCOL )? nCol : MAXCOL;
+ nVisTopRow = ( nRow <= MAXROW )? nRow : MAXROW;
+}
+
+
+void ScExtDocOptions::SetCursor( UINT16 nCol, UINT16 nRow )
+{
+ nCurCol = ( nCol <= MAXCOL )? nCol : MAXCOL;
+ nCurRow = ( nRow <= MAXROW )? nRow : MAXROW;
+}
+
+
+void ScExtDocOptions::SetZoom( UINT16 nZaehler, UINT16 nNenner )
+{
+ nZoom = 100 * nZaehler / nNenner;
+ if( nZoom < 20 )
+ nZoom = 20;
+ else if( nZoom > 400 )
+ nZoom = 400;
+}
+
+
+void ScExtDocOptions::Add( const ColRowSettings& rCRS )
+{
+ const UINT16 nTab = *rCRS.pExcRoot->pAktTab;
+
+ if( nTab <= MAXTAB )
+ {
+ if( rCRS.pExtTabOpt )
+ {
+ if( ppExtTabOpts[ nTab ] )
+ *ppExtTabOpts[ nTab ] = *rCRS.pExtTabOpt;
+ else
+ ppExtTabOpts[ nTab ] = new ScExtTabOptions( *rCRS.pExtTabOpt );
+ }
+ }
+ else
+ {
+ DBG_WARNING( "ScExtDocOptions::Add(): Aetsch... falsch bedient!" );
+ }
+}
+
+
+void ScExtDocOptions::SetCodename( const String& r )
+{
+ if( pCodenameWB )
+ *pCodenameWB = r;
+ else
+ pCodenameWB = new String( r );
+}
+
+
+void ScExtDocOptions::AddCodename( const String& r )
+{
+ if( !pCodenames )
+ pCodenames = new CodenameList;
+
+ pCodenames->Append( r );
+}
+
+
+
diff --git a/sc/source/filter/excel/excdoc.cxx b/sc/source/filter/excel/excdoc.cxx
new file mode 100644
index 000000000000..3e1fd1d1874f
--- /dev/null
+++ b/sc/source/filter/excel/excdoc.cxx
@@ -0,0 +1,1198 @@
+/*************************************************************************
+ *
+ * $RCSfile: excdoc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <math.h>
+
+#include "scitems.hxx"
+
+#include <svx/svdobj.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/lrspitem.hxx>
+#include <svx/ulspitem.hxx>
+#include <svtools/intitem.hxx>
+#include <svtools/zformat.hxx>
+#include <so3/svstor.hxx>
+
+#include "drwlayer.hxx"
+
+#include "cell.hxx"
+#include "dociter.hxx"
+#include "document.hxx"
+#include "rangenam.hxx"
+#include "dbcolect.hxx"
+#include "global.hxx"
+#include "globstr.hrc"
+#include "progress.hxx"
+#include "conditio.hxx"
+#include "dpobject.hxx"
+#include "attrib.hxx"
+#include "scextopt.hxx"
+#include "stlsheet.hxx"
+#include "stlpool.hxx"
+#include "olinetab.hxx"
+
+#include "excdoc.hxx"
+#include "excupn.hxx"
+#include "namebuff.hxx"
+
+#include "xcl97exp.hxx"
+#include "xcl97dum.hxx"
+#include "xcl97rec.hxx"
+#include "xcl97esc.hxx"
+#include "xcl97piv.hxx"
+
+
+NameBuffer* ExcDocument::pTabNames = NULL;
+
+
+
+static String lcl_GetVbaTabName( UINT16 n )
+{
+ String aRet( RTL_CONSTASCII_STRINGPARAM( "__VBA__" ) );
+ aRet += String::CreateFromInt32( n );
+ return aRet;
+}
+
+
+
+
+ExcRecordListRefs::~ExcRecordListRefs()
+{
+}
+
+
+
+
+ExcRecordListInst::~ExcRecordListInst()
+{
+ ExcRecord* pDel = ( ExcRecord* ) List::First();
+ while( pDel )
+ {
+ delete pDel;
+ pDel = ( ExcRecord* ) List::Next();
+ }
+}
+
+
+
+
+ExcRowBlock* ExcTable::pRowBlock = NULL;
+
+ExcTable::ExcTable( RootData* pRD ) :
+ ExcRoot( pRD ),
+ nScTab( 0 ),
+ nExcTab( EXC_TABBUF_INVALID )
+{ }
+
+
+ExcTable::ExcTable( RootData* pRD, UINT16 nScTable ) :
+ ExcRoot( pRD ),
+ nScTab( nScTable ),
+ nExcTab( pRD->pTabBuffer->GetExcTable( nScTable ) )
+{ }
+
+
+ExcTable::~ExcTable()
+{
+ Clear();
+}
+
+
+void ExcTable::Clear( void )
+{
+}
+
+
+void ExcTable::AddRow( ExcRow* pRow )
+{
+ DBG_ASSERT( pRowBlock, "ExcTable::AddRow() - missing RowBlock!" );
+ ExcRowBlock* pNewRowBlock = pRowBlock->Append( pRow );
+ if( pNewRowBlock )
+ {
+ pRowBlock = pNewRowBlock;
+ Add( pRowBlock );
+ }
+}
+
+
+void ExcTable::AddUsedRow( ExcRow*& rpRow )
+{
+ if( rpRow->IsDefault() )
+ delete rpRow;
+ else
+ AddRow( rpRow );
+}
+
+
+void ExcTable::FillAsHeader( ExcRecordListRefs& rBSRecList )
+{
+ RootData& rR = *pExcRoot;
+ ScDocument& rDoc = *rR.pDoc;
+ ExcETabNumBuffer& rTabBuffer = *rR.pTabBuffer;
+
+ if ( rR.eDateiTyp < Biff8 )
+ Add( new ExcBofW );
+ else
+ Add( new ExcBofW8 );
+
+ UINT16 nC;
+ String aTmpString;
+ UINT16 nScTabCount = rTabBuffer.GetScTabCount();
+ UINT16 nExcTabCount = rTabBuffer.GetExcTabCount();
+ UINT16 nCodenames = rR.nCodenames;
+
+ ExcNameList* pNameL = rR.pNameList = new ExcNameList;
+ ExcPalette2* pPalette2 = rR.pPalette2 = new ExcPalette2( *rR.pColor );
+ UsedFontList* pFontRecs = rR.pFontRecs = new UsedFontList( rR.eDateiTyp ) ;
+ UsedFormList* pFormRecs = new UsedFormList;
+
+ XclSstList* pSstRecs = NULL;
+ XclExternsheetList* pExternsheetRecs = NULL; // change: ExternsheetList includes Supbooks
+ if ( rR.eDateiTyp >= Biff8 )
+ {
+ rR.pSstRecs = pSstRecs = new XclSstList;
+ rR.pExternsheetRecs = pExternsheetRecs = new XclExternsheetList( &rR );
+ }
+
+ rR.pObjRecs = NULL; // per sheet
+ rR.pNoteRecs = NULL; // per sheet
+
+ pFontRecs->SetBaseIndex( 6 ); // 6 statt 5 wegen Ausfall von 4!
+ pFormRecs->SetBaseIndex( 164 ); // siehe auch ValueFormBuffer::nNewFormats
+ ExcFont::SetPalette( *pPalette2 );
+
+ UsedAttrList* pXFRecs = new UsedAttrList( &rR, *pPalette2, *pFontRecs, *pFormRecs );
+ pXFRecs->SetBaseIndex( 21 );
+ ExcCell::SetXFRecs( pXFRecs );
+
+
+ ExcXf::SetPalette( *pPalette2 );
+
+ if( rR.eDateiTyp < Biff8 )
+ Add( new ExcDummy_00 );
+ else
+ {
+ // first create style XFs
+ SfxStyleSheetIterator aStyleIter( rDoc.GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
+ SfxStyleSheetBase* pStyle = aStyleIter.First();
+ ScPatternAttr* pPatt;
+
+ while( pStyle )
+ {
+ if( pStyle->IsUserDefined() )
+ {
+ pPatt = new ScPatternAttr( &pStyle->GetItemSet() );
+ pXFRecs->Find( pPatt, TRUE );
+ }
+ pStyle = aStyleIter.Next();
+ }
+
+ Add( new ExcDummy8_00a );
+ Add( new ExcTabid8( Max( nExcTabCount, nCodenames ) ) );
+ if( rR.bWriteVBAStorage )
+ {
+ Add( new XclObproj );
+ const String* p = rR.pExtDocOpt->GetCodename();
+ if( p )
+ Add( new XclCodename( *p ) );
+ }
+ Add( new ExcDummy8_00b );
+ }
+
+ // erst Namen- und Tabellen-Eintraege aufbauen
+ DBG_ASSERT( rDoc.GetRangeName(), "-ExcTable::Header(): Keine Namen? Kann nicht angehen!" );
+
+ String aName;
+
+ for( nC = 0 ; nC < nScTabCount ; nC++ )
+ if( rTabBuffer.IsExportTable( nC ) )
+ {
+ rDoc.GetName( nC, aTmpString );
+ *ExcDocument::pTabNames << aTmpString;
+ }
+
+ if ( rR.eDateiTyp < Biff8 )
+ {
+ // Externcount & Externsheet
+ ExcExterncount* pExtCnt = new ExcExterncount( &rR, FALSE );
+
+ Add( pExtCnt );
+
+ ExcExternsheetList* pExcExtShtList = new ExcExternsheetList;
+
+ DBG_ASSERT( !rR.pExtSheetCntAndRecs, "*ExcTable::Header(): pExtSheetCntAndRecs already exist!" );
+
+ rR.pExtSheetCntAndRecs = new ExcExternDup( *pExtCnt, *pExcExtShtList );
+
+ Add( pExcExtShtList );
+
+ for( nC = 0 ; nC < nScTabCount ; nC++ )
+ if( rTabBuffer.IsExportTable( nC ) )
+ pExcExtShtList->Add( new ExcExternsheet( &rR, nC ) );
+
+ // Names
+ Add( pNameL );
+
+ ScRangeName& rRangeNames = *rDoc.GetRangeName();
+ UINT16 j, nNames;
+ nNames = rRangeNames.GetCount();
+ for( j = 0 ; j < nNames ; j++ )
+ {
+ ScRangeData* pData = ( ScRangeData * ) rRangeNames[ j ];
+ DBG_ASSERT( pData, "-ExcTable::Header(): 1, 2, 3 - wer zaehlt hier falsch?" );
+
+ if ( !rR.bBreakSharedFormula || !pData->HasType( RT_SHARED ) )
+ { // no SHARED_FORMULA_... names if not needed
+ pData->SetExportIndex( rR.nRangeNameIndex++ );
+
+ pNameL->Append( new ExcName( &rR, pData ) );
+ }
+ }
+ ScDBCollection& rDBAreas = *rDoc.GetDBCollection();
+ nNames = rDBAreas.GetCount();
+ for( j = 0 ; j < nNames ; j++ )
+ {
+ ScDBData* pData = ( ScDBData * ) rDBAreas[ j ];
+ DBG_ASSERT( pData, "-ExcTable::Header(): 1, 2, 3 - wer zaehlt hier falsch?" );
+
+ pData->SetExportIndex( rR.nRangeNameIndex++ );
+ pNameL->Append( new ExcName( &rR, pData ) );
+ }
+
+ Add( new ExcDummy_040 );
+ Add( new Exc1904( rDoc ) );
+ Add( new ExcDummy_041 );
+ // Font
+ Add( new ExcDummy_01 );
+ Add( pFontRecs );
+ // Format
+ Add( new ExcDummy_Fm );
+ Add( pFormRecs );
+ // XF + Style
+ Add( new ExcDummy_XF );
+ Add( pXFRecs );
+ // Style
+ Add( new ExcDummy_Style );
+ // Colors
+ Add( pPalette2 );
+
+ // Bundlesheet
+ ExcBundlesheet* pBS;
+ for( nC = 0 ; nC < nScTabCount ; nC++ )
+ if( rTabBuffer.IsExportTable( nC ) )
+ {
+ rDoc.GetName( nC, aTmpString );
+ pBS = new ExcBundlesheet( &rR, aTmpString );
+ Add( pBS );
+ rBSRecList.Append( pBS );
+ }
+ }
+ else
+ {
+ Add( new ExcDummy8_040 );
+ Add( new Exc1904( rDoc ) );
+ Add( new ExcDummy8_041 );
+ // Font
+ Add( new ExcDummy8_01 );
+ Add( pFontRecs );
+ // Format
+ Add( new ExcDummy8_Fm );
+ Add( pFormRecs );
+ // XF + Style
+ Add( new ExcDummy8_XF );
+ Add( pXFRecs );
+ // Style
+ Add( new ExcDummy8_Style );
+
+ // Pivot Cache
+ ScDPCollection* pDPColl = rDoc.GetDPCollection();
+ if( pDPColl )
+ {
+ XclPivotCacheList* pPCList = new XclPivotCacheList( &rR, *pDPColl );
+ rR.pPivotCacheList = pPCList;
+
+ for( const XclPivotCache* pCache = pPCList->First(); pCache; pCache = pPCList->Next() )
+ {
+ Add( new XclSxIdStm( *pCache ) );
+ Add( new XclSxVs( *pCache ) );
+ Add( new XclDConRef( pCache->GetRange(), pCache->GetWorkbook() ) );
+ }
+ }
+
+ // Colors
+ Add( pPalette2 );
+
+ // Natural Language Formulas Flag
+ Add( new ExcDummy8_UsesElfs );
+
+ // Bundlesheet
+ ExcBundlesheet* pBS;
+ for( nC = 0 ; nC < nScTabCount ; nC++ )
+ if( rTabBuffer.IsExportTable( nC ) )
+ {
+ rDoc.GetName( nC, aTmpString );
+ pBS = new ExcBundlesheet8( aTmpString );
+ Add( pBS );
+ rBSRecList.Append( pBS );
+ }
+
+ for( UINT16 nAdd = 0; nC < nCodenames ; nC++, nAdd++ )
+ {
+ aTmpString = lcl_GetVbaTabName( nAdd );
+ pBS = new ExcBundlesheet8( aTmpString );
+ Add( pBS );
+ rBSRecList.Append( pBS );
+ }
+
+ // COUNTRY always Germany
+ Add( new ExcDummy8_Country );
+ // SUPBOOKs, XCTs, CRNs, EXTERNSHEET
+ Add( pExternsheetRecs );
+ // NAMEs
+ Add( pNameL );
+
+ ScRangeName& rRangeNames = *rDoc.GetRangeName();
+ UINT16 j, nNames;
+ nNames = rRangeNames.GetCount();
+ for( j = 0 ; j < nNames ; j++ )
+ {
+ ScRangeData* pData = ( ScRangeData * ) rRangeNames[ j ];
+ DBG_ASSERT( pData, "-ExcTable::Header(): 1, 2, 3 - wer zaehlt hier falsch?" );
+
+ if ( !rR.bBreakSharedFormula || !pData->HasType( RT_SHARED ) )
+ { // no SHARED_FORMULA_... names if not needed
+ ExcName* pExcNameRec = new ExcName( &rR, pData );
+
+ if( pExcNameRec->IsDummy() )
+ pData->SetExportIndex( 0xFFFF );
+ else
+ pData->SetExportIndex( rR.nRangeNameIndex++ );
+
+ pNameL->Append( pExcNameRec );
+ }
+ }
+
+ // print range and titles
+ for( nC = 0 ; nC < nScTabCount ; nC++ )
+ {
+ pNameL->Append( new XclPrintRange( &rR, nC, rDoc ) );
+ pNameL->Append( new XclTitleRange( &rR, nC, rDoc ) );
+ }
+
+ ScDBCollection& rDBAreas = *rDoc.GetDBCollection();
+ nNames = rDBAreas.GetCount();
+ for( j = 0 ; j < nNames ; j++ )
+ {
+ ScDBData* pData = ( ScDBData * ) rDBAreas[ j ];
+ DBG_ASSERT( pData, "-ExcTable::Header(): 1, 2, 3 - wer zaehlt hier falsch?" );
+
+ pData->SetExportIndex( rR.nRangeNameIndex++ );
+ pNameL->Append( new ExcName( &rR, pData ) );
+ }
+
+ // MSODRAWINGGROUP per-document data
+ Add( new XclMsodrawinggroup( rR, ESCHER_DggContainer ) );
+ // SST, EXTSST
+ Add( pSstRecs );
+ }
+
+ Add( new ExcEof );
+}
+
+
+void ExcTable::FillAsTable( void )
+{
+ RootData& rR = *pExcRoot;
+ ScDocument& rDoc = *rR.pDoc;
+ ExcETabNumBuffer& rTabBuffer = *rR.pTabBuffer;
+
+ if( nScTab >= rTabBuffer.GetScTabCount() )
+ {
+ CodenameList* pL = rR.pExtDocOpt->GetCodenames();
+ if( pL )
+ {
+ const String* p = pL->Next();
+ if( p )
+ NullTab( p );
+ }
+
+ return;
+ }
+
+ UINT16 nLastCol, nLastRow, // in Tabelle
+ nFirstCol, nFirstRow;
+ UINT16 nPrevRow = 0;
+ UINT16 nColMin; // fuer aktuelle Zeile
+ // Row-Records
+ const UINT16 nDefXF = 0x0F;
+ UINT16 nCol = 0;
+ UINT16 nRow = 0;
+
+ UINT16 nMaxFlagCol = rDoc.GetLastFlaggedCol( nScTab );
+ UINT16 nMaxFlagRow = rDoc.GetLastFlaggedRow( nScTab );;
+
+ ExcRecord* pAktExcCell;
+ SvNumberFormatter& rFormatter = *rR.pFormTable;
+ const BiffTyp eDateiTyp = rR.eDateiTyp;
+
+ SfxStyleSheet* pStSh = ( SfxStyleSheet* ) rDoc.GetStyleSheetPool()->Find(
+ rDoc.GetPageStyle( nScTab ), SFX_STYLE_FAMILY_PAGE );
+ rR.pStyleSheet = pStSh;
+
+ SfxItemSet* pStyleSheetItemSet = pStSh? &pStSh->GetItemSet() : NULL;
+ rR.pStyleSheetItemSet = pStyleSheetItemSet;
+
+ ExcRecordList* pHlinks = new ExcRecordList;
+
+ DBG_ASSERT( (nScTab >= 0L) && (nScTab <= MAXTAB), "-ExcTable::Table(): nScTab - no ordinary table!" );
+ DBG_ASSERT( (nExcTab >= 0L) && (nExcTab <= MAXTAB), "-ExcTable::Table(): nExcTab - no ordinary table!" );
+
+ rDoc.GetTableArea( nScTab, nLastCol, nLastRow );
+
+ if( nLastRow > rR.nRowMax ) // max. Zeilenzahl ueberschritten?
+ {
+ nLastRow = rR.nRowMax;
+ rR.bCellCut = TRUE;
+ }
+
+ // find outline range
+ ScOutlineTable* pOLTable = rDoc.GetOutlineTable( nScTab );
+ ScOutlineArray* pOLColArray = NULL;
+ ScOutlineArray* pOLRowArray = NULL;
+ if( pOLTable )
+ {
+ UINT16 nStart, nEnd;
+ UINT16 nMaxOLCol = 0;
+ UINT16 nMaxOLRow = 0;
+
+ pOLColArray = pOLTable->GetColArray();
+ if( pOLColArray )
+ {
+ pOLColArray->GetRange( nStart, nEnd );
+ nMaxOLCol = nEnd + 1;
+ }
+ nMaxFlagCol = Max( nMaxFlagCol, nMaxOLCol );
+
+ pOLRowArray = pOLTable->GetRowArray();
+ if( pOLRowArray )
+ {
+ pOLRowArray->GetRange( nStart, nEnd );
+ nMaxOLRow = nEnd + 1;
+ }
+ nMaxFlagRow = Max( nMaxFlagRow, nMaxOLRow );
+ }
+ nMaxFlagCol = Min( nMaxFlagCol, (UINT16) MAXCOL );
+ nMaxFlagRow = Min( Min( nMaxFlagRow, (UINT16) MAXROW ), rR.nRowMax );
+
+ ExcEOutline aExcOLCol( pOLColArray );
+ ExcEOutline aExcOLRow( pOLRowArray );
+
+
+ ScUsedAreaIterator aIterator( &rDoc, nScTab, 0, 0, nLastCol, nLastRow );
+ const ScBaseCell* pAktScCell;
+ const ScPatternAttr* pPatt;
+ ExcBlankMulblank* pLastBlank = NULL;
+ ExcRKMulRK* pLastRKMulRK = NULL;
+ BOOL bIter;
+
+ // jetz schon, um erste Zeile zu bekommen
+ bIter = aIterator.GetNext();
+ if( bIter )
+ {
+ nCol = aIterator.GetStartCol();
+ nRow = aIterator.GetRow();
+
+ if( nRow > rR.nRowMax ) // max. Zeilenzahl ueberschritten?
+ {
+ rR.bCellCut = TRUE;
+ NullTab();
+ return;
+ }
+ pAktScCell = aIterator.GetCell();
+ pPatt = aIterator.GetPattern();
+ }
+
+ // Header und Default-Recs
+ if ( eDateiTyp < Biff8 )
+ {
+ Add( new ExcBof );
+ // CALCMODE bis VCENTER
+ Add( new ExcDummy_02 );
+ }
+ else
+ {
+ Add( new ExcBof8 );
+ // CALCMODE bis VCENTER
+ Add( new ExcDummy8_02 );
+ }
+
+ // GUTS (count & size of outline icons)
+ Add( new ExcEGuts( pOLColArray, pOLRowArray ) );
+
+ const SvxLRSpaceItem& rLRSpaceItem = ( const SvxLRSpaceItem& ) pStyleSheetItemSet->Get( ATTR_LRSPACE );
+ Add( new ExcMargin( rLRSpaceItem.GetLeft(), IMPEXC_MARGINSIDE_LEFT ) );
+ Add( new ExcMargin( rLRSpaceItem.GetRight(), IMPEXC_MARGINSIDE_RIGHT ) );
+
+ const SvxULSpaceItem& rULSpaceItem = ( const SvxULSpaceItem& ) pStyleSheetItemSet->Get( ATTR_ULSPACE );
+ Add( new ExcMargin( rULSpaceItem.GetUpper(), IMPEXC_MARGINSIDE_TOP ) );
+ Add( new ExcMargin( rULSpaceItem.GetLower(), IMPEXC_MARGINSIDE_BOTTOM ) );
+
+ Add( new ExcPrintheaders( pStyleSheetItemSet ) );
+ Add( new ExcPrintGridlines( pStyleSheetItemSet ) );
+ Add( new ExcHcenter( pStyleSheetItemSet ) );
+ Add( new ExcVcenter( pStyleSheetItemSet ) );
+
+ Add( new ExcHeader( &rR, eDateiTyp >= Biff8 ) );
+ Add( new ExcFooter( &rR, eDateiTyp >= Biff8 ) );
+ Add( new ExcSetup( &rR ) );
+
+ if ( eDateiTyp < Biff8 && rR.pExtSheetCntAndRecs )
+ Add( new ExcExternDup( *rR.pExtSheetCntAndRecs ) );
+
+ // Defcolwidth (Breite aus Excel-Dokument)
+ ExcDefcolwidth* pExcDefColWidth = new ExcDefcolwidth( 0x000a );
+ Add( pExcDefColWidth );
+
+ // COLINFO records
+ ExcColinfo* pLastColInfo = new ExcColinfo( 0, nScTab, nDefXF, rDoc, aExcOLCol );
+ ExcColinfo* pNewColInfo;
+
+ Add( pLastColInfo );
+ for( UINT16 iCol = 1; iCol <= MAXCOL; iCol++ )
+ {
+ pNewColInfo = new ExcColinfo( iCol, nScTab, nDefXF, rDoc, aExcOLCol );
+ if( !pLastColInfo->Expand( pNewColInfo ) )
+ {
+ pLastColInfo = pNewColInfo;
+ Add( pLastColInfo );
+ }
+ }
+
+ // Dimensions
+ ExcDimensions* pDimensions = new ExcDimensions( rR.eDateiTyp );
+ Add( pDimensions );
+
+ if ( rR.eDateiTyp >= Biff8 )
+ {
+ // Scenarios
+ Add( new ExcEScenarioManager( rDoc, nScTab ) );
+ // list holding OBJ records and creating MSODRAWING per-sheet data
+ rR.pObjRecs = new XclObjList( rR );
+ // AutoFilter
+ Add( new ExcAutoFilterRecs( rR, nScTab ) );
+ // list of NOTE records
+ rR.pNoteRecs = new XclNoteList;
+ }
+
+ // NOTE
+ const ScPostIt* pNote = NULL;
+
+ // merged cells
+ XclCellMergingList* pCellMerging = new XclCellMergingList;
+
+ // rows & cols
+ nFirstRow = nRow;
+ nColMin = nFirstCol = nCol;
+ pRowBlock = new ExcRowBlock;
+ Add( pRowBlock );
+
+ // at least one ROW rec
+ if( !bIter )
+ AddRow( new ExcRow( 0, nScTab, 0, 1, nDefXF, rDoc, aExcOLRow ) );
+
+ while( bIter )
+ {
+ nCol = aIterator.GetStartCol(); // nur bei erstem Durchlauf doppelt!
+ pAktScCell = aIterator.GetCell();
+ pPatt = aIterator.GetPattern();
+
+ // add ROW recs from empty rows
+ while( nPrevRow < nRow )
+ {
+ ExcRow* pRow = new ExcRow( nPrevRow, nScTab, 0, 1, nDefXF, rDoc, aExcOLRow );
+ AddUsedRow( pRow );
+ nPrevRow++;
+ }
+
+ ScAddress aScPos( nCol, nRow, nScTab );
+
+ if( pAktScCell )
+ {// nicht-leere Zelle
+ pLastBlank = NULL;
+ pNote = pAktScCell->GetNotePtr();
+
+ switch( pAktScCell->GetCellType() )
+ {
+ case CELLTYPE_NONE:
+ pLastRKMulRK = NULL;
+ break;
+ case CELLTYPE_VALUE:
+ {
+ double fVal = ( ( ScValueCell * ) pAktScCell )->GetValue();
+ if ( pPatt && (fVal == 0.0 || fVal == 1.0) &&
+ rFormatter.GetType(
+ ((const SfxUInt32Item&)pPatt->GetItem(
+ ATTR_VALUE_FORMAT )).GetValue() ) == NUMBERFORMAT_LOGICAL )
+ {
+ pLastRKMulRK = NULL;
+ pAktExcCell = new ExcBoolerr( aScPos, pPatt, UINT8(fVal), FALSE );
+ }
+ else
+ {
+ double fFrac, fInt;
+ INT32 nInt;
+ fFrac = modf( fVal, &fInt );
+ // 2^29 = 536870912
+ if( fFrac == 0.0 && fInt >= -536870912.0 && fInt <= 536870911.0 )
+ {
+ nInt = ( INT32 ) fInt;
+ nInt <<= 2;
+ nInt |= 0x02;
+ if( pLastRKMulRK )
+ {
+ ExcRKMulRK* pNewRK = pLastRKMulRK->Extend( aScPos, pPatt, nInt );
+ if( pNewRK )
+ pLastRKMulRK = pNewRK;
+
+ pAktExcCell = pNewRK;
+ }
+ else
+ pAktExcCell = pLastRKMulRK = new ExcRKMulRK( aScPos, pPatt, nInt );
+ }
+ else
+ {
+ fFrac = modf( fVal * 100.0, &fInt );
+ if( fFrac == 0.0 && fInt >= -536870912.0 && fInt <= 536870911.0 )
+ {
+ nInt = ( INT32 ) fInt;
+ nInt <<= 2;
+ nInt |= 0x03;
+ if( pLastRKMulRK )
+ {
+ ExcRKMulRK* pNewRK = pLastRKMulRK->Extend( aScPos, pPatt, nInt );
+ if( pNewRK )
+ pLastRKMulRK = pNewRK;
+
+ pAktExcCell = pNewRK;
+ }
+ else
+ pAktExcCell = pLastRKMulRK = new ExcRKMulRK( aScPos, pPatt, nInt );
+ }
+ else
+ {
+ pAktExcCell = new ExcNumber( aScPos, pPatt, fVal );
+ pLastRKMulRK = NULL;
+ }
+ }
+ }
+ }
+ break;
+ case CELLTYPE_STRING:
+ {
+ pLastRKMulRK = NULL;
+ String aTemp;
+
+ ( ( ScStringCell* ) pAktScCell )->GetString( aTemp );
+
+ if ( rR.eDateiTyp < Biff8 )
+ pAktExcCell = new ExcLabel( aScPos, pPatt, aTemp, rR );
+ else
+ pAktExcCell = new ExcLabelSst( aScPos, pPatt, aTemp, rR );
+ }
+ break;
+ case CELLTYPE_FORMULA:
+ {
+ pLastRKMulRK = NULL;
+ ScFormulaCell* pFormCell = ( ScFormulaCell * ) pAktScCell;
+ ULONG nCellNumForm = ( pPatt ?
+ (( const SfxUInt32Item& ) pPatt->GetItem(
+ ATTR_VALUE_FORMAT )).GetValue() : 0 );
+ ULONG nAltNumForm;
+ BOOL bForceAltNumForm;
+ if ( ( nCellNumForm % SV_COUNTRY_LANGUAGE_OFFSET ) == 0 )
+ {
+ // #73420# Xcl doesn't know boolean number formats,
+ // we write "TRUE";"TRUE";"FALSE" or "WAHR";"WAHR";"FALSCH"
+ // or any other language dependent key words instead.
+ // Don't do it for automatic formula formats,
+ // because Xcl gets them right.
+ if ( pFormCell->GetFormatType() == NUMBERFORMAT_LOGICAL )
+ nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND;
+ else
+ nAltNumForm = pFormCell->GetStandardFormat(
+ rFormatter, nCellNumForm );
+ bForceAltNumForm = FALSE;
+ }
+ else
+ {
+ // #73420# If number format set is boolean and
+ // automatic format is boolean don't write that ugly
+ // special format.
+ if ( pFormCell->GetFormatType() == NUMBERFORMAT_LOGICAL
+ && rFormatter.GetType( nCellNumForm ) == NUMBERFORMAT_LOGICAL )
+ {
+ nAltNumForm = 0;
+ bForceAltNumForm = TRUE;
+ }
+ else
+ {
+ nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND;
+ bForceAltNumForm = FALSE;
+ }
+ }
+ pAktExcCell = new ExcFormula( &rR, aScPos, pPatt, nAltNumForm, bForceAltNumForm,
+ *pFormCell->GetCode() );
+ }
+ break;
+ case CELLTYPE_EDIT:
+ {
+ pLastRKMulRK = NULL;
+ if( rR.eDateiTyp < Biff8 )
+ pAktExcCell = new ExcRString( &rR, aScPos, pPatt, *((ScEditCell*) pAktScCell) );
+ else
+ pAktExcCell = new ExcLabelSst( aScPos, pPatt, *((ScEditCell*) pAktScCell), rR );
+
+ XclHlink*& rpHlink = rR.pLastHlink;
+ if( rpHlink )
+ {
+ rpHlink->Set( aScPos );
+ pHlinks->Append( rpHlink );
+ rpHlink = NULL;
+ }
+ }
+ break;
+ case CELLTYPE_NOTE:
+ {
+ pAktExcCell = NULL;
+ pLastRKMulRK = NULL;
+ DBG_ASSERT( pNote, "-ExcTable::Table(): Note-Cell ohne Note!" );
+ }
+ break;
+#ifdef DBG_UTIL
+ case CELLTYPE_DESTROYED:
+ pAktExcCell = NULL;
+ pLastRKMulRK = NULL;
+ break;
+#endif
+ default:
+ DBG_ERROR( "*ExcTable::Table(): Unbekannter Zelltyp" );
+ pAktExcCell = NULL;
+ pLastRKMulRK = NULL;
+ }
+ }
+ else
+ {// leere Zelle mit Attributierung
+ pNote = NULL;
+ if( pLastBlank && pLastBlank->GetLastCol() + 1 == aIterator.GetStartCol() )
+ {
+ pLastBlank->Add( pPatt,
+ aIterator.GetEndCol() - aIterator.GetStartCol() + 1 );
+
+ pAktScCell = NULL; // kein NEUER Record!
+ }
+ else
+ {
+ pLastBlank = new ExcBlankMulblank( aScPos, pPatt,
+ aIterator.GetEndCol() - aIterator.GetStartCol() + 1 );
+ pAktExcCell = pLastBlank;
+ }
+ }
+
+ if( pAktExcCell )
+ {
+ Add( pAktExcCell );
+ pAktExcCell = NULL;
+ }
+
+ if( pNote )
+ {
+ if ( rR.eDateiTyp < Biff8 )
+ Add( new ExcNote( aScPos, pNote->GetText(), rR ) );
+ else
+ rR.pNoteRecs->Add( new XclNote( rR, aScPos, *pNote ) );
+ }
+
+ // merged cells
+ if( pPatt )
+ {
+ ScMergeAttr& rItem = (ScMergeAttr&) pPatt->GetItem( ATTR_MERGE );
+ if( rItem.IsMerged() )
+ for( UINT16 iCol = aIterator.GetStartCol(); iCol <= aIterator.GetEndCol(); iCol++ )
+ pCellMerging->Append( iCol, rItem.GetColMerge(),
+ nRow, rItem.GetRowMerge() );
+ }
+
+ bIter = aIterator.GetNext();
+
+ // new row number
+ if( bIter )
+ {
+ nRow = aIterator.GetRow();
+ if( nRow > rR.nRowMax ) // Excel row limit
+ bIter = FALSE;
+ }
+
+ // new row -> add previous ROW rec
+ if( !bIter || (nPrevRow < nRow) )
+ {
+ AddRow( new ExcRow( nPrevRow, nScTab, nColMin, nCol + 1, nDefXF, rDoc, aExcOLRow ) );
+ nPrevRow++;
+ nColMin = aIterator.GetStartCol();
+ nFirstCol = Min( nFirstCol, nColMin );
+ }
+ }
+
+ // remaining rows with attributes
+ while( nRow < nMaxFlagRow )
+ {
+ nRow++;
+ ExcRow* pRow = new ExcRow( nRow, nScTab, 0, 1, nDefXF, rDoc, aExcOLRow );
+ AddUsedRow( pRow );
+ }
+
+ // insert merged cells
+ Add( pCellMerging );
+
+ // update dimensions
+ pDimensions->SetLimits( nFirstCol, nFirstRow, nLastCol, nLastRow );
+
+ if( rR.eDateiTyp < Biff8 )
+ Add( new ExcWindow2( nExcTab ) );
+ else
+ {
+ ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
+ if( pDrawLayer )
+ {
+ SdrPage* pPage = pDrawLayer->GetPage( nScTab );
+ if( pPage )
+ rR.pEscher->GetEx()->AddSdrPage( *pPage );
+ }
+ //! close Escher group shape and ESCHER_DgContainer
+ //! opened by XclObjList ctor MSODRAWING
+ rR.pObjRecs->EndSheet();
+ // all MSODRAWING and OBJ stuff of this sheet goes here
+ Add( rR.pObjRecs );
+ // NOTE records
+ Add( rR.pNoteRecs );
+
+ // pivot tables
+ ScDPCollection* pDPColl = rDoc.GetDPCollection();
+ XclPivotCacheList* pPCList = rR.pPivotCacheList;
+ if( pDPColl && pPCList )
+ {
+ for( USHORT nObjCnt = 0; nObjCnt < pDPColl->GetCount(); nObjCnt++ )
+ {
+ ScDPObject* pDPObject = (*pDPColl)[ nObjCnt ];
+ const XclPivotCache* pCache = pPCList->Get( nObjCnt );
+
+ if( pDPObject && pCache )
+ {
+ const ScRange& rRange = pDPObject->GetOutRange();
+ if( rRange.aStart.Tab() == nScTab )
+ Add( new XclPivotTableRecs( *pCache, nObjCnt ) );
+ }
+ }
+ }
+
+ // WINDOW2
+ Add( new ExcWindow28( nExcTab ) );
+ }
+
+ // Default-Recs am Ende
+ Add( new ExcDummy_03 );
+
+ if( rR.eDateiTyp >= Biff8 )
+ {
+ // conditional formats
+ const ScConditionalFormatList* pCondFormList = rDoc.GetCondFormList();
+ if( pCondFormList )
+ {
+ UINT32 nCondCnt = pCondFormList->Count();
+ ScConditionalFormat* const* ppCondForm = pCondFormList->GetData();
+ ScRangeList* pRangeList = NULL;
+
+ while( nCondCnt )
+ {
+ if( *ppCondForm )
+ {
+ const ScConditionalFormat& rCF = **ppCondForm;
+
+ if( pRangeList )
+ pRangeList->Clear();
+ else
+ pRangeList = new ScRangeList;
+
+ rDoc.FindConditionalFormat( rCF.GetKey(), *pRangeList );
+
+ if( pRangeList->Count() )
+ {
+ Add( new XclCondFormat( rCF, pRangeList, rR ) );
+ pRangeList = NULL;
+ }
+ }
+
+ ppCondForm++;
+ nCondCnt--;
+ }
+
+ if( pRangeList )
+ delete pRangeList;
+ }
+
+ if( rR.bWriteVBAStorage )
+ {
+ CodenameList* pL = rR.pExtDocOpt->GetCodenames();
+ if( pL )
+ {
+ const String* p = nExcTab ? pL->Next() : pL->First();
+ if( p )
+ Add( new XclCodename( *p ) );
+ }
+ }
+ }
+
+ rR.pStyleSheet = NULL;
+ rR.pStyleSheetItemSet = NULL;
+
+ Add( pHlinks );
+
+ // EOF
+ Add( new ExcEof );
+}
+
+
+void ExcTable::NullTab( const String* pCodename )
+{
+ DBG_ASSERT( (nScTab >= 0L) && (nScTab <= MAXTAB), "-ExcTable::Table(): nScTab - no ordinary table!" );
+ DBG_ASSERT( (nExcTab >= 0L) && (nExcTab <= MAXTAB), "-ExcTable::Table(): nExcTab - no ordinary table!" );
+
+ RootData& rR = *pExcRoot;
+
+ if ( rR.eDateiTyp < Biff8 )
+ {
+ Add( new ExcBof );
+ Add( new ExcWindow2( nExcTab ) );
+ }
+ else
+ {
+ Add( new ExcBof8 );
+
+ if( pCodename )
+ Add( new XclCodename( *pCodename ) );
+ else
+ {
+ // create at least the MSODRAWING per-sheet data
+ rR.pObjRecs = new XclObjList( rR );
+ // all drawing obects
+ ScDrawLayer* pDrawLayer = pExcRoot->pDoc->GetDrawLayer();
+ if ( pDrawLayer )
+ {
+ SdrPage* pPage = pDrawLayer->GetPage( nScTab );
+ if ( pPage )
+ rR.pEscher->GetEx()->AddSdrPage( *pPage );
+ }
+ //! close Escher group shape and ESCHER_DgContainer
+ //! opened by XclObjList ctor MSODRAWING
+ rR.pObjRecs->EndSheet();
+ Add( rR.pObjRecs );
+ }
+ // WINDOW2
+
+ Add( new ExcWindow28( nExcTab ) );
+ }
+ Add( new ExcEof );
+}
+
+
+void ExcTable::Write( SvStream& rStr )
+{
+ ExcRecord* pAkt = aRecList.First();
+
+ while( pAkt )
+ {
+ pAkt->Save( rStr );
+ pAkt = aRecList.Next();
+ }
+}
+
+
+
+
+void ExcDocument::Clear( void )
+{
+ ExcTable* pDelTab = ( ExcTable* ) List::First();
+ while( pDelTab )
+ {
+ delete pDelTab;
+ pDelTab = ( ExcTable * ) List::Next();
+ }
+ List::Clear();
+}
+
+
+ExcDocument::ExcDocument( RootData* pRD ) : ExcRoot( pRD ), aHeader( pRD )
+{
+ pTabNames = new NameBuffer( 0, 16 );
+
+ pPrgrsBar = new ScProgress(
+ NULL, ScGlobal::GetRscString(STR_SAVE_DOC),
+ ( UINT32 ) pExcRoot->pDoc->GetCellCount() * 2 );
+ ExcCell::SetPrgrsBar( *pPrgrsBar );
+}
+
+
+ExcDocument::~ExcDocument()
+{
+ Clear();
+
+ DBG_ASSERT( ExcCell::_nRefCount == 0, "*ExcDocument::~ExcDocument(): Ein'n hab'n wir noch!" );
+
+ delete pTabNames;
+#ifdef DBG_UTIL
+ pTabNames = NULL;
+#endif
+
+ delete pPrgrsBar;
+ ExcCell::ClearPrgrsBar();
+}
+
+
+void ExcDocument::ReadDoc( void )
+{
+ CodenameList* pL = pExcRoot->pExtDocOpt->GetCodenames();
+ UINT16 nCodenames = pExcRoot->nCodenames = pL? pL->Count() : 0;
+
+ aHeader.FillAsHeader( aBundleSheetRecList );
+
+ UINT16 nTabs = Max( pExcRoot->pDoc->GetTableCount(), nCodenames );
+ UINT16 nTabCnt;
+ pExcRoot->pAktTab = &nTabCnt;
+
+ for( nTabCnt = 0 ; nTabCnt < nTabs ; nTabCnt++ )
+ Add( nTabCnt );
+
+ pExcRoot->pAktTab = NULL;
+
+ if ( pExcRoot->eDateiTyp >= Biff8 )
+ pExcRoot->pEscher->GetEx()->EndDocument(); // complete temporary Escher stream
+}
+
+
+void ExcDocument::Add( UINT16 nScTab )
+{
+ if( pExcRoot->pTabBuffer->IsExportTable( nScTab ) )
+ {
+ ExcTable* pTab = new ExcTable( pExcRoot, nScTab );
+ List::Insert( pTab, LIST_APPEND );
+ pTab->FillAsTable();
+ }
+}
+
+
+void ExcDocument::Write( SvStream& rOut )
+{
+ if( List::Count() > 0 )
+ {
+ if ( pExcRoot->eDateiTyp >= Biff8 )
+ pExcRoot->pEscher->GetStrm().Seek(0); // ready for take off
+
+ pExcRoot->pPalette2->ReduceColors();
+
+ ExcTable* pAktTab;
+ ExcBundlesheet* pAktBS;
+
+ aHeader.Write( rOut );
+
+ pAktTab = ( ExcTable* ) List::First();
+ pAktBS = ( ExcBundlesheet* ) aBundleSheetRecList.First();
+ while( pAktTab )
+ {
+ DBG_ASSERT( pAktBS, "-ExcDocument::Write(): BundleSheetRecs und Tabs passen nicht zusammen!" );
+ pAktBS->SetStreamPos( rOut.Tell() );
+ pAktTab->Write( rOut );
+ pAktTab = ( ExcTable* ) List::Next();
+ pAktBS = ( ExcBundlesheet* ) aBundleSheetRecList.Next();
+ }
+
+ DBG_ASSERT( !pAktBS, "+ExcDocument::Write(): mehr BundleSheetRecs als Tabs!" );
+
+ // BundleSheetRecs anpassen
+ pAktBS = ( ExcBundlesheet* ) aBundleSheetRecList.First();
+ while( pAktBS )
+ {
+ pAktBS->UpdateStreamPos( rOut );
+ pAktBS = ( ExcBundlesheet* ) aBundleSheetRecList.Next();
+ }
+
+ if( pExcRoot->pPivotCacheList )
+ pExcRoot->pPivotCacheList->Write();
+ }
+}
+
diff --git a/sc/source/filter/excel/excel.cxx b/sc/source/filter/excel/excel.cxx
new file mode 100644
index 000000000000..48a7cf0120ae
--- /dev/null
+++ b/sc/source/filter/excel/excel.cxx
@@ -0,0 +1,319 @@
+/*************************************************************************
+ *
+ * $RCSfile: excel.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <sfx2/docfile.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/saveopt.hxx>
+#include <so3/svstor.hxx>
+#include <vcl/exchange.hxx>
+#include <tools/globname.hxx>
+//#include <segmentc.hxx>
+
+// wenn definiert, erzeugt Excel-Import nur Dumps ueber die DBG_TRACE-Funktion
+//#define __DUMPER__
+
+#include <filter.hxx>
+
+#include "scerrors.hxx"
+#include "root.hxx"
+#include "imp_op.hxx"
+#include "excimp8.hxx"
+#include "exp_op.hxx"
+
+
+void InitFuncData( BOOL bBiff8 );
+void DeInitFuncData();
+
+
+
+static const sal_Char* pWrkbkNameExcel5 = "Book";
+static const sal_Char* pWrkbkNameExcel97 = "Workbook";
+const sal_Char* pPivotCacheStorageName = "_SX_DB_CUR";
+const sal_Char* pVBAStorageName = "_VBA_PROJECT_CUR";
+const sal_Char* pVBASubStorageName = "VBA";
+
+
+FltError ScImportExcel( SvStream& rStream, ScDocument* pDocument )
+{
+ ImportExcel aFilter( rStream, pDocument );
+ return aFilter.Read();
+}
+
+
+FltError ScImportExcel( SfxMedium& r, ScDocument* p )
+{
+ return ScImportExcel( r, p, EIF_AUTO );
+}
+
+
+FltError ScImportExcel( SfxMedium& rMedium, ScDocument* pDocument, const EXCIMPFORMAT eFormat )
+{
+ DBG_ASSERT( &rMedium != NULL,
+ "--ScImportExcel(): Wer hat mich da falsch gerufen?!!!" );
+
+ FltError eRet;
+
+ if( rMedium.IsStorage() )
+ {// OLE2-Datei
+ enum BiffType { BT0, BT5, BT8 };
+ SvStorage* pStorage = rMedium.GetStorage();
+ SvStorage* pPivotCacheStorage = NULL;
+ const String aPvCchStrgNm( String::CreateFromAscii( pPivotCacheStorageName ) );
+
+ if( pStorage == NULL )
+ return eERR_OPEN;
+
+ BiffType eBT = BT0;
+
+ String aWrkbkName( String::CreateFromAscii( pWrkbkNameExcel97 ) ); // -> Biff8 hoeherwertiger!
+ const BOOL bContBiff8 = pStorage->IsContained( aWrkbkName ) && pStorage->IsStream( aWrkbkName );
+
+ aWrkbkName.AssignAscii( pWrkbkNameExcel5 );
+ const BOOL bContBiff5 = pStorage->IsContained( aWrkbkName ) && pStorage->IsStream( aWrkbkName );
+
+ if( !bContBiff8 && !bContBiff5 )
+ return eERR_UNKN_BIFF;
+
+ switch( eFormat )
+ {
+ case EIF_AUTO:
+ if( bContBiff8 )
+ {
+ eBT = BT8;
+ aWrkbkName.AssignAscii( pWrkbkNameExcel97 );
+ }
+ else
+ {
+ eBT = BT5;
+ DBG_ASSERT( bContBiff5, "*ScImportExcel(): Falscher Zustand" );
+ }
+ break;
+ case EIF_BIFF5:
+ if( bContBiff5 )
+ eBT = BT5;
+ else
+ return eERR_FORMAT; // Error-Code richtig?
+ break;
+ case EIF_BIFF8:
+ if( bContBiff8 )
+ {
+ eBT = BT8;
+ aWrkbkName.AssignAscii( pWrkbkNameExcel97 );
+ pPivotCacheStorage = pStorage->OpenStorage( aPvCchStrgNm, STREAM_STD_READ );
+ }
+ else
+ return eERR_FORMAT; // Error-Code richtig?
+ break;
+ case EIF_BIFF_LE4:
+ return eERR_FORMAT; // Error-Code richtig?
+ break;
+#ifdef DEBUG
+ default:
+ DBG_ERROR( "*ScImportExcel(): Format vergessen!" );
+#endif
+ }
+
+ SvStorageStreamRef xStStream = pStorage->OpenStream( aWrkbkName,
+ STREAM_READ | STREAM_SHARE_DENYALL );
+
+ xStStream->SetBufferSize( 32768 );
+
+ if( eBT == BT8 )
+ { // Tuerk-Test
+ SvStream& r = *xStStream;
+ r.SeekRel( 4 );
+ UINT16 nVersion;
+ r >> nVersion;
+ if( nVersion == 0x0500 )
+ eBT = BT5; // getuerkt!!!
+ r.Seek( 0 );
+ }
+
+ ImportExcel* pFilter;
+
+ if( eBT == BT5 )
+ pFilter = new ImportExcel( *xStStream, pDocument );
+ else
+ pFilter = new ImportExcel8( pStorage, *xStStream, pDocument, pPivotCacheStorage );
+
+ eRet = pFilter->Read();
+
+ xStStream->SetBufferSize( 0 );
+
+ delete pFilter;
+ }
+ else if( eFormat == EIF_AUTO || eFormat == EIF_BIFF_LE4 )
+ {// normale Datei
+ SvStream* pStream = rMedium.GetInStream();
+
+ if( pStream == NULL )
+ return eERR_OPEN;
+
+ pStream->Seek( 0UL );
+
+ pStream->SetBufferSize( 32768 );
+
+ ImportExcel aFilter( *pStream, pDocument );
+ eRet = aFilter.Read();
+
+ pStream->SetBufferSize( 0 );
+ }
+ else
+ return eERR_FORMAT; // Error-Code richtig?
+
+ return eRet;
+}
+
+
+
+
+FltError ScExportExcel234( SvStream &aStream, ScDocument *pDoc,
+ ExportFormatExcel eFormat, CharSet eNach )
+{
+ FltError eRet = eERR_NI;
+ return eRet;
+}
+
+
+FltError ScExportExcel5( SfxMedium &rOutMedium, ScDocument *pDocument,
+ const BOOL bBiff8, CharSet eNach )
+{
+ const sal_Char* pWrkBook;
+ const sal_Char* pClipboard;
+ const sal_Char* pClassName;
+
+ if( bBiff8 )
+ {
+ pWrkBook = pWrkbkNameExcel97;
+ pClipboard = "Biff8";
+ pClassName = "Microsoft Excel 97-Tabelle";
+ }
+ else
+ {
+ pWrkBook = pWrkbkNameExcel5;
+ pClipboard = "Biff5";
+ pClassName = "Microsoft Excel 5.0-Tabelle";
+ }
+
+ FltError eRet = eERR_NI;
+
+ if( &rOutMedium == NULL )
+ return eERR_OPEN;
+
+ rOutMedium.GetStorage();
+
+ if( rOutMedium.IsStorage() )
+ {// OLE2-Datei
+ SvStorage* pStorage = rOutMedium.GetStorage();
+
+ if( pStorage == NULL )
+ return eERR_OPEN;
+
+ SvStorageStreamRef xStStream =
+ pStorage->OpenStream( _STRING( pWrkBook ), STREAM_READWRITE | STREAM_TRUNC );
+
+ xStStream->SetBufferSize( 32768 );
+
+ InitFuncData( bBiff8 );
+
+ if ( bBiff8 )
+ {
+ BOOL bStoreRel = rOutMedium.IsRemote()?
+ SFX_APP()->GetOptions().IsSaveRelINet() :
+ SFX_APP()->GetOptions().IsSaveRelFSys();
+ ExportBiff8 aFilter( *pStorage, *xStStream, pDocument, eNach, bStoreRel );
+ eRet = aFilter.Write();
+ }
+ else
+ {
+ ExportBiff5 aFilter( *pStorage, *xStStream, pDocument, eNach );
+ eRet = aFilter.Write();
+ }
+
+
+ if( eRet == eERR_RNGOVRFLW )
+ eRet = SCWARN_EXPORT_MAXROW;
+
+ DeInitFuncData();
+
+ xStStream->SetBufferSize( 0 );
+
+ // CompObj schreiben
+ SvGlobalName aName( 0x00020810, 0x0000, 0x0000, 0xc0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 );
+ UINT32 nClip = Exchange::RegisterFormatName( _STRING( pClipboard ) );
+ pStorage->SetClass( aName, nClip, _STRING( pClassName ) );
+ xStStream->Commit();
+ }
+ else
+ eRet = eERR_OPEN;
+
+ return eRet;
+}
+
+
+
diff --git a/sc/source/filter/excel/excform.cxx b/sc/source/filter/excel/excform.cxx
new file mode 100644
index 000000000000..cb10852ad639
--- /dev/null
+++ b/sc/source/filter/excel/excform.cxx
@@ -0,0 +1,2613 @@
+/*************************************************************************
+ *
+ * $RCSfile: excform.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+//#include <string.h>
+
+#include "cell.hxx"
+#include "document.hxx"
+#include "rangenam.hxx"
+#include "global.hxx"
+#include "compiler.hxx"
+
+#include "imp_op.hxx"
+#include "root.hxx"
+#include "excform.hxx"
+
+
+const UINT16 ExcelToSc::nRowMask = 0x3FFF;
+const UINT16 ExcelToSc::nLastInd = 399;
+
+
+
+
+void ImportExcel::Formula25()
+{
+ UINT16 nRow, nCol, nXF, nFormLen;
+ double fCurVal;
+ BYTE nAttr0, nFlag0;
+ BOOL bShrFmla;
+
+ aIn >> nRow >> nCol;
+ nBytesLeft -= 4;
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {// BIFF2
+ BYTE nDummy;
+
+ aIn.SeekRel( 3 );
+ nBytesLeft -= 3;
+
+ aIn >> fCurVal;
+ aIn.SeekRel( 1 );
+ aIn >> nDummy;
+ nFormLen = nDummy;
+ nBytesLeft -= 10;
+ bShrFmla = FALSE;
+ nAttr0 = 0x01; // Always calculate
+ }
+ else
+ {// BIFF5
+ aIn >> nXF >> fCurVal >> nFlag0;
+ aIn.SeekRel( 5 );
+
+ aIn >> nFormLen;
+ nBytesLeft -= 18;
+
+ bShrFmla = nFlag0 & 0x08; // shared or not shared
+ }
+
+ nLastXF = nXF;
+
+ Formula( nCol, nRow, nTab, nXF, nFormLen, fCurVal, nFlag0, bShrFmla );
+}
+
+
+void ImportExcel::Formula3()
+{
+ Formula4();
+}
+
+
+void ImportExcel::Formula4()
+{
+ UINT16 nRow, nCol, nXF, nFormLen;
+ double fCurVal;
+ BYTE nFlag0;
+
+ aIn >> nRow >> nCol >> nXF >> fCurVal >> nFlag0;
+ aIn.SeekRel( 1 );
+ aIn >> nFormLen;
+ nBytesLeft -= 18;
+
+ nLastXF = nXF;
+
+ Formula( nCol, nRow, nTab, nXF, nFormLen, fCurVal, nFlag0, FALSE );
+}
+
+
+void ImportExcel::Formula( UINT16 nCol, UINT16 nRow, UINT16 nTab,
+ UINT16 nXF, UINT16 nFormLen, double& rCurVal, BYTE nFlag, BOOL bShrFmla )
+{
+ ConvErr eErr = ConvOK;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ // jetzt steht Lesemarke auf Formel, Laenge in nFormLen
+ const ScTokenArray* pErgebnis;
+ INT32 nAnzBytes = nFormLen;
+ BOOL bConvert;
+
+ pFormConv->Reset( nFormLen, ScAddress( nCol, nRow, nTab ) );
+
+ if( bShrFmla )
+ bConvert = !pFormConv->GetShrFmla( pErgebnis, nAnzBytes );
+ else
+ bConvert = TRUE;
+
+ if( bConvert )
+ eErr = pFormConv->Convert( pErgebnis, nAnzBytes );
+
+ nBytesLeft += nAnzBytes - nFormLen;
+
+ ScFormulaCell* pZelle = NULL;
+
+ if( pErgebnis )
+ {
+ pZelle = new ScFormulaCell( pD, ScAddress( nCol, nRow, nTab ), pErgebnis );
+
+ pD->PutCell( nCol, nRow, nTab, pZelle, (BOOL)TRUE );
+
+ aColRowBuff.Used( nCol, nRow );
+ }
+ else
+ {
+ CellType eCellType;
+ ScBaseCell* pBaseCell;
+ pD->GetCellType( nCol, nRow, nTab, eCellType );
+ if( eCellType == CELLTYPE_FORMULA )
+ {
+ pD->GetCell( nCol, nRow, nTab, pBaseCell );
+ pZelle = ( ScFormulaCell* ) pBaseCell;
+ if( pZelle )
+ pZelle->AddRecalcMode( RECALCMODE_ONLOAD_ONCE );
+ }
+ }
+
+ if( pZelle )
+ {
+ if( eErr != ConvOK )
+ ExcelToSc::SetError( *pZelle, eErr );
+ else if( ExcelToSc::SetCurVal( *pZelle, rCurVal ) )
+ pLastFormCell = pZelle; // String-Record sollte folgen
+ else
+ pLastFormCell = NULL;
+ }
+ else
+ pLastFormCell = NULL;
+
+ pFltTab->SetXF( nCol, nRow, nXF );
+ }
+ else
+ bTabTruncated = TRUE;
+}
+
+
+
+
+ExcelToSc::~ExcelToSc() {}
+
+
+ExcelToSc::ExcelToSc( RootData* pRD, SvStream& aStr, const UINT16& rOrgTab ) :
+ ConverterBase( aStr, 512 ),
+ ExcRoot( pRD )
+{
+}
+
+
+void ExcelToSc::GetDummy( const ScTokenArray*& pErgebnis )
+{
+ aPool.Store( _STRINGCONST( "Dummy()" ) );
+ aPool >> aStack;
+ pErgebnis = aPool[ aStack.Get() ];
+}
+
+
+ConvErr ExcelToSc::Convert( const ScTokenArray*& pErgebnis, INT32& rRestbytes, const FORMULA_TYPE eFT )
+{
+ BYTE nOp, nLen, nByte;
+ UINT16 nUINT16, nIndexToFunc;
+ INT16 nINT16;
+ double fDouble;
+ String aString;
+ BOOL bError = FALSE;
+ BOOL bArrayFormula = FALSE;
+ TokenId nMerk0;
+ const BOOL bRangeName = eFT == FT_RangeName;
+ const BOOL bSharedFormula = eFT == FT_SharedFormula;
+ const BOOL bRNorSF = bRangeName || bSharedFormula;
+ const CharSet eCharSet = *pExcRoot->pCharset;
+
+ SingleRefData aSRD;
+ aSRD.InitFlags();
+ ComplRefData aCRD;
+ aCRD.InitFlags();
+
+ bExternName = FALSE;
+
+ nBytesLeft = rRestbytes;
+
+ if( eStatus != ConvOK )
+ return eStatus;
+
+ if( rRestbytes == 0 )
+ {
+ aPool.Store( _STRINGCONST( "-/-" ) );
+ aPool >> aStack;
+ pErgebnis = aPool[ aStack.Get() ];
+ return ConvOK;
+ }
+
+ while( nBytesLeft > 0 && !bError )
+ {
+ Read( nOp );
+
+ switch( nOp ) // Buch Seite:
+ { // SDK4 SDK5
+ case 0x01: // Array Formula [325 ]
+ // Array Formula or Shared Formula [ 277]
+ nUINT16 = 3;
+
+ if( pExcRoot->eHauptDateiTyp != Biff2 )
+ nUINT16++;
+
+ Ignore( nUINT16 );
+
+ bArrayFormula = TRUE;
+ break;
+ case 0x02: // Data Table [325 277]
+ {
+ nUINT16 = 3;
+ if( pExcRoot->eHauptDateiTyp != Biff2 )
+ nUINT16++;
+
+ Ignore( nUINT16 );
+
+ aPool << ocBad;
+ aPool >> aStack;
+ }
+ break;
+ case 0x03: // Addition [312 264]
+ aStack >> nMerk0;
+ aPool << aStack << ocAdd << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x04: // Subtraction [313 264]
+ // SECOMD-TOP minus TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocSub << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x05: // Multiplication [313 264]
+ aStack >> nMerk0;
+ aPool << aStack << ocMul << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x06: // Division [313 264]
+ // divide TOP by SECOND-TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocDiv << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x07: // Exponetiation [313 265]
+ // raise SECOND-TOP to power of TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocPow << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x08: // Concatenation [313 265]
+ // append TOP to SECOND-TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocAmpersand << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x09: // Less Than [313 265]
+ // SECOND-TOP < TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocLess << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0A: // Less Than or Equal [313 265]
+ // SECOND-TOP <= TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocLessEqual << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0B: // Equal [313 265]
+ // SECOND-TOP == TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocEqual << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0C: // Greater Than or Equal [313 265]
+ // SECOND-TOP == TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocGreaterEqual << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0D: // Greater Than [313 265]
+ // SECOND-TOP == TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocGreater << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0E: // Not Equal [313 265]
+ // SECOND-TOP == TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocNotEqual << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0F: // Intersection [314 265]
+ aStack >> nMerk0;
+ aPool << aStack << ocIntersect << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x10: // Union [314 265]
+ // ocSep behelfsweise statt 'ocUnion'
+ aStack >> nMerk0;
+ aPool << ocOpen << aStack << ocSep << nMerk0 << ocClose;
+ // doesn't fit exactly, but is more Excel-like
+ aPool >> aStack;
+ break;
+ case 0x11: // Range [314 265]
+ {
+ // wenn erster und zweiter Ausdruck auf'm Stack Single Referenzen
+ // sind, dann Area Reference erzeugen, ansonsten Fehlerhaften Aus-
+ // druck generieren
+ BOOL bErrorToken = TRUE;
+ TokenId nMerk1;
+
+ aStack >> nMerk0;
+ aStack >> nMerk1;
+
+ if( aPool.GetType( nMerk0 ) == T_RefC &&
+ aPool.GetType( nMerk1 ) == T_RefC )
+ {
+ register const SingleRefData *pRef1 = aPool.GetSRD( nMerk1 );
+ register const SingleRefData *pRef2 = aPool.GetSRD( nMerk0 );
+ if( pRef1 && pRef2 )
+ {
+ aCRD.Ref1 = *pRef1;
+ aCRD.Ref2 = *pRef2;
+ aStack << aPool.Store( aCRD );
+ bErrorToken = FALSE;
+ }
+ }
+
+ if( bErrorToken )
+ {
+ aPool << ocNoName << ocOpen << nMerk1 << ocSep
+ << nMerk0 << ocClose;
+
+ aPool >> aStack;
+ }
+ }
+ break;
+ case 0x12: // Unary Plus [312 264]
+ break;
+ case 0x13: // Unary Minus [312 264]
+ aPool << ocNegSub << aStack;
+ aPool >> aStack;
+ break;
+ case 0x14: // Percent Sign [312 264]
+ // <Stack> + '/' + '100'
+ nMerk0 = aPool.Store( 100.0 );
+ aPool << ocOpen << aStack << ocDiv << nMerk0 << ocClose;
+ aPool >> aStack;
+ break;
+ case 0x15: // Parenthesis [326 278]
+ aPool << ocOpen << aStack << ocClose;
+ aPool >> aStack;
+ break;
+ case 0x16: // Missing Argument [314 266]
+ aPool << ocMissing;
+ aPool >> aStack;
+ break;
+ case 0x17: // String Constant [314 266]
+ Read( nLen );
+ DBG_ASSERT( (long)nLen + (long)3 < (long)nBufferSize,
+ "-ExcelToSc::Convert(): Uni-Puffer zu klein!" );
+ aIn.Read( pBuffer, nLen );
+ nBytesLeft -= nLen;
+ pBuffer[ nLen ] = 0;
+
+ aString = String( pBuffer, eCharSet );
+
+ aStack << aPool.Store( aString );
+ break;
+ case 0x19: // Special Attribute [327 279]
+ {
+ UINT16 nData, nFakt;
+ BYTE nOpt;
+
+ Read( nOpt );
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {
+ Read( nByte );
+ nData = nByte;
+ nFakt = 1;
+ }
+ else
+ {
+ Read( nData );
+ nFakt = 2;
+ }
+
+ if( nOpt & 0x04 )
+ {// nFakt -> Bytes oder Words ueberlesen AttrChoose
+ nData++;
+ Ignore( nData * nFakt );
+ }
+ else if( nOpt & 0x10 ) // AttrSum
+ DoMulArgs( ocSum, 1 );
+ }
+ break;
+ case 0x1A: // External Reference [330 ]
+ switch( pExcRoot->eHauptDateiTyp )
+ {
+ case Biff2: Ignore( 7 ); break;
+ case Biff3:
+ case Biff4: Ignore( 10 ); break;
+ case Biff5:
+ DBG_WARNING( "-ExcelToSc::Convert(): 0x1A gibt's nicht in Biff5!" );
+ default:
+ DBG_WARNING( "-ExcelToSc::Convert(): Ein wenig vergesslich, was?" );
+ }
+ break;
+ case 0x1B: // End External Reference [330 ]
+ switch( pExcRoot->eHauptDateiTyp )
+ {
+ case Biff2: Ignore( 3 ); break;
+ case Biff3:
+ case Biff4: Ignore( 4 ); break;
+ case Biff5:
+ DBG_WARNING( "-ExcelToSc::Convert(): 0x1B gibt's nicht in Biff5!" );
+ default:
+ DBG_WARNING( "-ExcelToSc::Convert(): Ein wenig vergesslich, was?" );
+ }
+ break;
+ case 0x1C: // Error Value [314 266]
+ {
+ Read( nByte );
+ DefTokenId eOc;
+ switch( nByte )
+ {
+ case 0x00:
+ case 0x07:
+ case 0x17:
+ case 0x1D:
+ case 0x24: eOc = ocStop; break;
+ case 0x0F:
+ case 0x2A: eOc = ocNoValue; break;
+ default: eOc = ocNoName;
+ }
+ aPool << eOc;
+ if( eOc != ocStop )
+ aPool << ocOpen << ocClose;
+
+ aPool >> aStack;
+ }
+ break;
+ case 0x1D: // Boolean [315 266]
+ Read( nByte );
+ if( nByte == 0 )
+ aPool << ocFalse << ocOpen << ocClose;
+ else
+ aPool << ocTrue << ocOpen << ocClose;
+ aPool >> aStack;
+ break;
+ case 0x1E: // Integer [315 266]
+ Read( nUINT16 );
+ aStack << aPool.Store( ( double ) nUINT16 );
+ break;
+ case 0x1F: // Number [315 266]
+ Read( fDouble );
+ aStack << aPool.Store( fDouble );
+ break;
+ case 0x40:
+ case 0x60:
+ case 0x20: // Array Constant [317 268]
+ Ignore( 7 );
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case 0x41:
+ case 0x61:
+ case 0x21: // Function, Fixed Number of Arguments [333 282]
+ if( pExcRoot->eHauptDateiTyp == Biff2 ||
+ pExcRoot->eHauptDateiTyp == Biff3 )
+ {
+ Read( nByte );
+ nIndexToFunc = nByte;
+ }
+ else
+ Read( nIndexToFunc );
+
+ DoDefArgs( nIndexToFunc );
+ break;
+ case 0x42:
+ case 0x62:
+ case 0x22: // Function, Variable Number of Arg. [333 283]
+ {
+ BYTE nAnz;
+ Read( nAnz );
+ nAnz &= 0x7F;
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 ||
+ pExcRoot->eHauptDateiTyp == Biff3 )
+ {
+ Read( nByte );
+ nIndexToFunc = nByte;
+ }
+ else
+ Read( nIndexToFunc );
+
+ DoMulArgs( IndexToToken( nIndexToFunc ), nAnz );
+ }
+ break;
+ case 0x43:
+ case 0x63:
+ case 0x23: // Name [318 269]
+ Read( nUINT16 );
+ switch( pExcRoot->eHauptDateiTyp )
+ {
+ case Biff2: Ignore( 5 ); break;
+ case Biff3:
+ case Biff4: Ignore( 8 ); break;
+ case Biff5: Ignore( 12 ); break;
+ default:
+ DBG_ERROR(
+ "-ExcelToSc::Convert(): Ein wenig vergesslich, was?" );
+ }
+ aStack << aPool.Store( ( *pExcRoot->pRNameBuff )[ nUINT16 ] );
+ break;
+ case 0x44:
+ case 0x64:
+ case 0x24: // Cell Reference [319 270]
+ case 0x4A:
+ case 0x6A:
+ case 0x2A: // Deleted Cell Reference [323 273]
+ Read( nUINT16 );
+ Read( nByte );
+ aSRD.nCol = nByte;
+ aSRD.nRow = nUINT16 & 0x3FFF;
+ aSRD.nRelTab = 0;
+ aSRD.SetTabRel( TRUE );
+ aSRD.SetFlag3D( bRangeName );
+
+ ExcRelToScRel( nUINT16, nByte, aSRD, bRangeName );
+
+ switch ( nOp )
+ {
+ case 0x4A:
+ case 0x6A:
+ case 0x2A: // Deleted Cell Reference [323 273]
+ // no information which part is deleted, set both
+ aSRD.SetColDeleted( TRUE );
+ aSRD.SetRowDeleted( TRUE );
+ }
+
+ aStack << aPool.Store( aSRD );
+ break;
+ case 0x45:
+ case 0x65:
+ case 0x25: // Area Reference [320 270]
+ case 0x4B:
+ case 0x6B:
+ case 0x2B: // Deleted Area Refernce [323 273]
+ {
+ UINT16 nRowFirst, nRowLast;
+ UINT8 nColFirst, nColLast;
+ SingleRefData& rSRef1 = aCRD.Ref1;
+ SingleRefData& rSRef2 = aCRD.Ref2;
+
+ aIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 6;
+
+ rSRef1.nRelTab = rSRef2.nRelTab = 0;
+ rSRef1.SetTabRel( TRUE );
+ rSRef2.SetTabRel( TRUE );
+ rSRef1.SetFlag3D( bRangeName );
+ rSRef2.SetFlag3D( bRangeName );
+
+ ExcRelToScRel( nRowFirst, nColFirst, aCRD.Ref1, bRangeName );
+ ExcRelToScRel( nRowLast, nColLast, aCRD.Ref2, bRangeName );
+
+ if( IsComplColRange( nColFirst, nColLast ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRowFirst, nRowLast ) )
+ SetComplRow( aCRD );
+
+ switch ( nOp )
+ {
+ case 0x4B:
+ case 0x6B:
+ case 0x2B: // Deleted Area Refernce [323 273]
+ // no information which part is deleted, set all
+ rSRef1.SetColDeleted( TRUE );
+ rSRef1.SetRowDeleted( TRUE );
+ rSRef2.SetColDeleted( TRUE );
+ rSRef2.SetRowDeleted( TRUE );
+ }
+
+ aStack << aPool.Store( aCRD );
+ }
+ break;
+ case 0x46:
+ case 0x66:
+ case 0x26: // Constant Reference Subexpression [321 271]
+ Ignore( 6 ); // mehr steht da nicht!
+ break;
+ case 0x47:
+ case 0x67:
+ case 0x27: // Erroneous Constant Reference Subexpr. [322 272]
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ Ignore( 4 ); // mehr steht da nicht!
+ else
+ Ignore( 6 ); // mehr steht da nicht!
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case 0x48:
+ case 0x68:
+ case 0x28: // Incomplete Constant Reference Subexpr.[331 281]
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ Ignore( 4 ); // mehr steht da nicht!
+ else
+ Ignore( 6 ); // mehr steht da nicht!
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case 0x49:
+ case 0x69:
+ case 0x29: // Variable Reference Subexpression [331 281]
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ Ignore( 1 ); // mehr steht da nicht!
+ else
+ Ignore( 2 ); // mehr steht da nicht!
+ break;
+ case 0x4C:
+ case 0x6C:
+ case 0x2C: // Cell Reference Within a Name [323 ]
+ // Cell Reference Within a Shared Formula[ 273]
+ {
+ Read( nUINT16 ); // Attribute, Row
+ Read( nByte ); // Col
+
+ aSRD.nRelTab = 0;
+ aSRD.SetTabRel( TRUE );
+ aSRD.SetFlag3D( bRangeName );
+
+ ExcRelToScRel( nUINT16, nByte, aSRD, bRNorSF );
+
+ aStack << aPool.Store( aSRD );
+ }
+ break;
+ case 0x4D:
+ case 0x6D:
+ case 0x2D: // Area Reference Within a Name [324 ]
+ { // Area Reference Within a Shared Formula[ 274]
+ UINT16 nRowFirst, nRowLast;
+ UINT8 nColFirst, nColLast;
+
+ aCRD.Ref1.nRelTab = aCRD.Ref2.nRelTab = 0;
+ aCRD.Ref1.SetTabRel( TRUE );
+ aCRD.Ref2.SetTabRel( TRUE );
+ aCRD.Ref1.SetFlag3D( bRangeName );
+ aCRD.Ref2.SetFlag3D( bRangeName );
+
+ aIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 6;
+
+ ExcRelToScRel( nRowFirst, nColFirst, aCRD.Ref1, bRNorSF );
+ ExcRelToScRel( nRowLast, nColLast, aCRD.Ref2, bRNorSF );
+
+ if( IsComplColRange( nColFirst, nColLast ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRowFirst, nRowLast ) )
+ SetComplRow( aCRD );
+
+ aStack << aPool.Store( aCRD );
+ }
+ break;
+ case 0x4E:
+ case 0x6E:
+ case 0x2E: // Reference Subexpression Within a Name [332 282]
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ Ignore( 1 ); // mehr steht da nicht!
+ else
+ Ignore( 2 ); // mehr steht da nicht!
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case 0x4F:
+ case 0x6F:
+ case 0x2F: // Incomplete Reference Subexpression... [332 282]
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ Ignore( 1 ); // mehr steht da nicht!
+ else
+ Ignore( 2 ); // mehr steht da nicht!
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case 0x58:
+ case 0x78:
+ case 0x38: // Command-Equivalent Function [333 ]
+ aString.AssignAscii( "COMM_EQU_FUNC" );
+ Read( nByte );
+ aString += String::CreateFromInt32( nByte );
+ Read( nByte );
+ aStack << aPool.Store( aString );
+ DoMulArgs( ocPush, nByte + 1 );
+ break;
+ case 0x59:
+ case 0x79:
+ case 0x39: // Name or External Name [ 275]
+ Read( nINT16 );
+ Ignore( 8 );
+ Read( nUINT16 );
+ if( nINT16 >= 0 )
+ {
+ const ExtName* pExtName;
+ pExtName = pExcRoot->pExtNameBuff->GetName( nUINT16 );
+ if( pExtName && pExtName->IsDDE() &&
+ pExcRoot->pExtSheetBuff->IsLink( ( UINT16 ) nINT16 ) )
+ {
+ String aAppl, aExtDoc;
+ TokenId nPar1, nPar2;
+
+ pExcRoot->pExtSheetBuff->GetLink( ( UINT16 ) nINT16 , aAppl, aExtDoc );
+ nPar1 = aPool.Store( aAppl );
+ nPar2 = aPool.Store( aExtDoc );
+ nMerk0 = aPool.Store( pExtName->aName );
+ aPool << ocDde << ocOpen << nPar1 << ocSep << nPar2 << ocSep
+ << nMerk0 << ocClose;
+
+ pExcRoot->pDoc->CreateDdeLink( aAppl, aExtDoc, pExtName->aName );
+ }
+ else
+ aPool << ocBad;
+
+ aPool >> aStack;
+ }
+ else
+ aStack << aPool.Store( ( *pExcRoot->pRNameBuff )[ nUINT16 ] );
+ Ignore( 12 );
+ break;
+ case 0x5A:
+ case 0x7A:
+ case 0x3A: // 3-D Cell Reference [ 275]
+ case 0x5C:
+ case 0x7C:
+ case 0x3C: // Deleted 3-D Cell Reference [ 277]
+ {
+ UINT16 nTabFirst, nTabLast, nRow;
+ INT16 nExtSheet;
+ BYTE nCol;
+
+ aIn >> nExtSheet;
+ Ignore( 8 );
+ aIn >> nTabFirst >> nTabLast >> nRow >> nCol;
+ nBytesLeft -= 9;
+
+ if( nExtSheet >= 0 )
+ { // von extern
+ if( pExcRoot->pExtSheetBuff->GetScTabIndex( nExtSheet, nTabLast ) )
+ {
+ nTabFirst = nTabLast;
+ nExtSheet = 0; // gefunden
+ }
+ else
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ nExtSheet = 1; // verhindert Erzeugung einer SingleRef
+ }
+ }
+
+ if( nExtSheet <= 0 )
+ { // in aktuellem Workbook
+ BOOL b3D = ( nTabFirst != aEingPos.Tab() ) || bRangeName;
+ aSRD.nTab = nTabFirst;
+ aSRD.SetFlag3D( b3D );
+ aSRD.SetTabRel( FALSE );
+
+ ExcRelToScRel( nRow, nCol, aSRD, bRangeName );
+
+ switch ( nOp )
+ {
+ case 0x5C:
+ case 0x7C:
+ case 0x3C: // Deleted 3-D Cell Reference [ 277]
+ // no information which part is deleted, set both
+ aSRD.SetColDeleted( TRUE );
+ aSRD.SetRowDeleted( TRUE );
+ }
+ if ( nTabFirst > MAXTAB )
+ aSRD.SetTabDeleted( TRUE );
+
+ if( nTabLast != nTabFirst )
+ {
+ aCRD.Ref1 = aSRD;
+ aCRD.Ref2.nCol = aSRD.nCol;
+ aCRD.Ref2.nRow = aSRD.nRow;
+ aCRD.Ref2.nTab = nTabLast;
+ b3D = ( nTabLast != aEingPos.Tab() );
+ aCRD.Ref2.SetFlag3D( b3D );
+ aCRD.Ref2.SetTabRel( FALSE );
+ aCRD.Ref2.SetTabDeleted( nTabLast > MAXTAB );
+ aStack << aPool.Store( aCRD );
+ }
+ else
+ aStack << aPool.Store( aSRD );
+ }
+ }
+
+ break;
+ case 0x5B:
+ case 0x7B:
+ case 0x3B: // 3-D Area Reference [ 276]
+ case 0x5D:
+ case 0x7D:
+ case 0x3D: // Deleted 3-D Area Reference [ 277]
+ {
+ UINT16 nTabFirst, nTabLast, nRowFirst, nRowLast;
+ INT16 nExtSheet;
+ BYTE nColFirst, nColLast;
+
+ aIn >> nExtSheet;
+ Ignore( 8 );
+ aIn >> nTabFirst >> nTabLast >> nRowFirst >> nRowLast
+ >> nColFirst >> nColLast;
+ nBytesLeft -= 12;
+
+ if( nExtSheet >= 0 )
+ // von extern
+ {
+ if( pExcRoot->pExtSheetBuff->GetScTabIndex( nExtSheet, nTabLast ) )
+ {
+ nTabFirst = nTabLast;
+ nExtSheet = 0; // gefunden
+ }
+ else
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ nExtSheet = 1; // verhindert Erzeugung einer CompleteRef
+ }
+ }
+
+ if( nExtSheet <= 0 )
+ {// in aktuellem Workbook
+ // erster Teil des Bereichs
+ SingleRefData& rR1 = aCRD.Ref1;
+ SingleRefData& rR2 = aCRD.Ref2;
+
+ rR1.nTab = nTabFirst;
+ rR2.nTab = nTabLast;
+ rR1.SetFlag3D( ( nTabFirst != aEingPos.Tab() ) || bRangeName );
+ rR1.SetTabRel( FALSE );
+ rR2.SetFlag3D( ( nTabLast != aEingPos.Tab() ) || bRangeName );
+ rR2.SetTabRel( FALSE );
+
+ ExcRelToScRel( nRowFirst, nColFirst, aCRD.Ref1, bRangeName );
+ ExcRelToScRel( nRowLast, nColLast, aCRD.Ref2, bRangeName );
+
+ if( IsComplColRange( nColFirst, nColLast ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRowFirst, nRowLast ) )
+ SetComplRow( aCRD );
+
+ switch ( nOp )
+ {
+ case 0x5D:
+ case 0x7D:
+ case 0x3D: // Deleted 3-D Area Reference [ 277]
+ // no information which part is deleted, set all
+ rR1.SetColDeleted( TRUE );
+ rR1.SetRowDeleted( TRUE );
+ rR2.SetColDeleted( TRUE );
+ rR2.SetRowDeleted( TRUE );
+ }
+ if ( nTabFirst > MAXTAB )
+ rR1.SetTabDeleted( TRUE );
+ if ( nTabLast > MAXTAB )
+ rR2.SetTabDeleted( TRUE );
+
+ aStack << aPool.Store( aCRD );
+ }//ENDE in aktuellem Workbook
+ }
+ break;
+ default: bError = TRUE;
+ }
+ }
+
+ ConvErr eRet;
+
+ if( bError )
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ pErgebnis = aPool[ aStack.Get() ];
+ eRet = ConvErrNi;
+ }
+ else if( nBytesLeft != 0 )
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ pErgebnis = aPool[ aStack.Get() ];
+ eRet = ConvErrCount;
+ }
+ else if( bExternName )
+ {
+ rRestbytes = nBytesLeft;
+
+ pErgebnis = aPool[ aStack.Get() ];
+ eRet = ConvErrExternal;
+ }
+ else if( bArrayFormula )
+ {
+ rRestbytes = nBytesLeft;
+
+ pErgebnis = NULL;
+ eRet = ConvOK;
+ }
+ else
+ {
+ rRestbytes = nBytesLeft;
+
+ pErgebnis = aPool[ aStack.Get() ];
+
+ eRet = ConvOK;
+ }
+
+ return eRet;
+}
+
+
+ConvErr ExcelToSc::Convert( _ScRangeListTabs& rRangeList, INT32& rRestbytes, const FORMULA_TYPE eFT )
+{
+ BYTE nOp, nLen;
+ UINT16 nIgnore;
+ UINT16 nUINT16;
+ UINT8 nByte;
+ BOOL bError = FALSE;
+ BOOL bArrayFormula = FALSE;
+ const BOOL bRangeName = eFT == FT_RangeName;
+ const BOOL bSharedFormula = eFT == FT_SharedFormula;
+ const BOOL bRNorSF = bRangeName || bSharedFormula;
+
+ SingleRefData aSRD;
+ aSRD.InitFlags();
+ ComplRefData aCRD;
+ aCRD.InitFlags();
+ aCRD.Ref1.nTab = aCRD.Ref2.nTab = aEingPos.Tab();
+
+ bExternName = FALSE;
+
+ nBytesLeft = rRestbytes;
+
+ if( eStatus != ConvOK )
+ return eStatus;
+
+ if( rRestbytes == 0 )
+ return ConvOK;
+
+ while( nBytesLeft > 0 && !bError )
+ {
+ Read( nOp );
+ nIgnore = 0;
+
+ switch( nOp ) // Buch Seite:
+ { // SDK4 SDK5
+ case 0x01: // Array Formula [325 ]
+ // Array Formula or Shared Formula [ 277]
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ nIgnore = 3;
+ else
+ nIgnore = 4;
+ bArrayFormula = TRUE;
+ break;
+ case 0x02: // Data Table [325 277]
+ {
+ nIgnore = 3;
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ nIgnore = 3;
+ else
+ nIgnore = 4;
+ }
+ break;
+ case 0x03: // Addition [312 264]
+ case 0x04: // Subtraction [313 264]
+ case 0x05: // Multiplication [313 264]
+ case 0x06: // Division [313 264]
+ case 0x07: // Exponetiation [313 265]
+ case 0x08: // Concatenation [313 265]
+ case 0x09: // Less Than [313 265]
+ case 0x0A: // Less Than or Equal [313 265]
+ case 0x0B: // Equal [313 265]
+ case 0x0C: // Greater Than or Equal [313 265]
+ case 0x0D: // Greater Than [313 265]
+ case 0x0E: // Not Equal [313 265]
+ case 0x0F: // Intersection [314 265]
+ case 0x10: // Union [314 265]
+ case 0x11: // Range [314 265]
+ case 0x12: // Unary Plus [312 264]
+ case 0x13: // Unary Minus [312 264]
+ case 0x14: // Percent Sign [312 264]
+ case 0x15: // Parenthesis [326 278]
+ case 0x16: // Missing Argument [314 266]
+ break;
+ case 0x17: // String Constant [314 266]
+ Read( nLen );
+ nIgnore = nLen;
+ break;
+ case 0x19: // Special Attribute [327 279]
+ {
+ UINT16 nData, nFakt;
+ BYTE nOpt;
+
+ Read( nOpt );
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {
+ UINT8 n;
+ Read( n );
+ nData = n;
+ nFakt = 1;
+ }
+ else
+ {
+ Read( nData );
+ nFakt = 2;
+ }
+
+ if( nOpt & 0x04 )
+ {// nFakt -> Bytes oder Words ueberlesen AttrChoose
+ nData++;
+ Ignore( nData * nFakt );
+ }
+ }
+ break;
+ case 0x1A: // External Reference [330 ]
+ switch( pExcRoot->eHauptDateiTyp )
+ {
+ case Biff2: nIgnore = 7; break;
+ case Biff3:
+ case Biff4: nIgnore = 10; break;
+ case Biff5: DBG_WARNING( "-ExcelToSc::Convert(): 0x1A gibt's nicht in Biff5!" );
+ default: DBG_WARNING( "-ExcelToSc::Convert(): Ein wenig vergesslich, was?" );
+ }
+ break;
+ case 0x1B: // End External Reference [330 ]
+ switch( pExcRoot->eHauptDateiTyp )
+ {
+ case Biff2: nIgnore = 3; break;
+ case Biff3:
+ case Biff4: nIgnore = 4; break;
+ case Biff5: DBG_WARNING( "-ExcelToSc::Convert(): 0x1B gibt's nicht in Biff5!" );
+ default: DBG_WARNING( "-ExcelToSc::Convert(): Ein wenig vergesslich, was?" );
+ }
+ break;
+ case 0x1C: // Error Value [314 266]
+ case 0x1D: // Boolean [315 266]
+ nIgnore = 1;
+ break;
+ case 0x1E: // Integer [315 266]
+ nIgnore = 2;
+ break;
+ case 0x1F: // Number [315 266]
+ nIgnore = sizeof( double );
+ break;
+ case 0x40:
+ case 0x60:
+ case 0x20: // Array Constant [317 268]
+ nIgnore = 7;
+ break;
+ case 0x41:
+ case 0x61:
+ case 0x21: // Function, Fixed Number of Arguments [333 282]
+ if( pExcRoot->eHauptDateiTyp == Biff2 || pExcRoot->eHauptDateiTyp == Biff3 )
+ nIgnore = 1;
+ else
+ nIgnore = 2;
+ break;
+ case 0x42:
+ case 0x62:
+ case 0x22: // Function, Variable Number of Arg. [333 283]
+ if( pExcRoot->eHauptDateiTyp == Biff2 || pExcRoot->eHauptDateiTyp == Biff3 )
+ nIgnore = 2;
+ else
+ nIgnore = 3;
+ break;
+ case 0x43:
+ case 0x63:
+ case 0x23: // Name [318 269]
+ switch( pExcRoot->eHauptDateiTyp )
+ {
+ case Biff2: nIgnore = 7; break;
+ case Biff3:
+ case Biff4: nIgnore = 10; break;
+ case Biff5: nIgnore = 14; break;
+ default: DBG_ERROR( "-ExcelToSc::Convert(): Ein wenig vergesslich, was?" );
+ }
+ break;
+ case 0x44:
+ case 0x64:
+ case 0x24: // Cell Reference [319 270]
+ Read( nUINT16 );
+ Read( nByte );
+ aSRD.nCol = nByte;
+ aSRD.nRow = nUINT16 & 0x3FFF;
+ aSRD.nRelTab = 0;
+ aSRD.SetTabRel( TRUE );
+ aSRD.SetFlag3D( bRangeName );
+
+ ExcRelToScRel( nUINT16, nByte, aSRD, bRangeName );
+
+ rRangeList.Append( aSRD );
+ break;
+ case 0x45:
+ case 0x65:
+ case 0x25: // Area Reference [320 270]
+ {
+ UINT16 nRowFirst, nRowLast;
+ UINT8 nColFirst, nColLast;
+ SingleRefData &rSRef1 = aCRD.Ref1;
+ SingleRefData &rSRef2 = aCRD.Ref2;
+
+ aIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 6;
+
+ rSRef1.nRelTab = rSRef2.nRelTab = 0;
+ rSRef1.SetTabRel( TRUE );
+ rSRef2.SetTabRel( TRUE );
+ rSRef1.SetFlag3D( bRangeName );
+ rSRef2.SetFlag3D( bRangeName );
+
+ ExcRelToScRel( nRowFirst, nColFirst, aCRD.Ref1, bRangeName );
+ ExcRelToScRel( nRowLast, nColLast, aCRD.Ref2, bRangeName );
+
+ if( IsComplColRange( nColFirst, nColLast ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRowFirst, nRowLast ) )
+ SetComplRow( aCRD );
+
+ rRangeList.Append( aCRD );
+ }
+ break;
+ case 0x46:
+ case 0x66:
+ case 0x26: // Constant Reference Subexpression [321 271]
+ nIgnore = 6;
+ break;
+ case 0x47:
+ case 0x67:
+ case 0x27: // Erroneous Constant Reference Subexpr. [322 272]
+ case 0x48:
+ case 0x68:
+ case 0x28: // Incomplete Constant Reference Subexpr.[331 281]
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ nIgnore = 4;
+ else
+ nIgnore = 6;
+ break;
+ case 0x49:
+ case 0x69:
+ case 0x29: // Variable Reference Subexpression [331 281]
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ nIgnore = 1;
+ else
+ nIgnore = 2;
+ break;
+ case 0x4A:
+ case 0x6A:
+ case 0x2A: // Deleted Cell Reference [323 273]
+ nIgnore = 3;
+ break;
+ case 0x4B:
+ case 0x6B:
+ case 0x2B: // Deleted Area Refernce [323 273]
+ nIgnore = 6;
+ break;
+ case 0x4C:
+ case 0x6C:
+ case 0x2C: // Cell Reference Within a Name [323 ]
+ // Cell Reference Within a Shared Formula[ 273]
+ {
+ Read( nUINT16 ); // Attribute, Row
+ Read( nByte ); // Col
+
+ aSRD.nRelTab = 0;
+ aSRD.SetTabRel( TRUE );
+ aSRD.SetFlag3D( bRangeName );
+
+ ExcRelToScRel( nUINT16, nByte, aSRD, bRNorSF );
+
+ rRangeList.Append( aSRD );
+ }
+ break;
+ case 0x4D:
+ case 0x6D:
+ case 0x2D: // Area Reference Within a Name [324 ]
+ { // Area Reference Within a Shared Formula[ 274]
+ UINT16 nRowFirst, nRowLast;
+ UINT8 nColFirst, nColLast;
+
+ aCRD.Ref1.nRelTab = aCRD.Ref2.nRelTab = 0;
+ aCRD.Ref1.SetTabRel( TRUE );
+ aCRD.Ref2.SetTabRel( TRUE );
+ aCRD.Ref1.SetFlag3D( bRangeName );
+ aCRD.Ref2.SetFlag3D( bRangeName );
+
+ aIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 6;
+
+ ExcRelToScRel( nRowFirst, nColFirst, aCRD.Ref1, bRNorSF );
+ ExcRelToScRel( nRowLast, nColLast, aCRD.Ref2, bRNorSF );
+
+ if( IsComplColRange( nColFirst, nColLast ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRowFirst, nRowLast ) )
+ SetComplRow( aCRD );
+
+ rRangeList.Append( aCRD );
+ }
+ break;
+ case 0x4E:
+ case 0x6E:
+ case 0x2E: // Reference Subexpression Within a Name [332 282]
+ case 0x4F:
+ case 0x6F:
+ case 0x2F: // Incomplete Reference Subexpression... [332 282]
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ nIgnore = 1;
+ else
+ nIgnore = 2;
+ break;
+ case 0x58:
+ case 0x78:
+ case 0x38: // Command-Equivalent Function [333 ]
+ nIgnore = 2;
+ break;
+ case 0x59:
+ case 0x79:
+ case 0x39: // Name or External Name [ 275]
+ nIgnore = 24;
+ break;
+ case 0x5A:
+ case 0x7A:
+ case 0x3A: // 3-D Cell Reference [ 275]
+ {
+ UINT16 nTabFirst, nTabLast, nRow;
+ INT16 nExtSheet;
+ BYTE nCol;
+
+ aIn >> nExtSheet;
+ Ignore( 8 );
+ aIn >> nTabFirst >> nTabLast >> nRow >> nCol;
+ nBytesLeft -= 9;
+
+ if( nExtSheet >= 0 )
+ // von extern
+ {
+ if( pExcRoot->pExtSheetBuff->GetScTabIndex( nExtSheet, nTabLast ) )
+ {
+ nTabFirst = nTabLast;
+ nExtSheet = 0; // gefunden
+ }
+ else
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ nExtSheet = 1; // verhindert Erzeugung einer SingleRef
+ }
+ }
+
+ if( nExtSheet <= 0 )
+ {// in aktuellem Workbook
+ BOOL b3D = ( nTabFirst != aEingPos.Tab() ) || bRangeName;
+ aSRD.nTab = nTabFirst;
+ aSRD.SetFlag3D( b3D );
+ aSRD.SetTabRel( FALSE );
+
+ ExcRelToScRel( nRow, nCol, aSRD, bRangeName );
+
+ if( nTabLast != nTabFirst )
+ {
+ aCRD.Ref1 = aSRD;
+ aCRD.Ref2.nCol = aSRD.nCol;
+ aCRD.Ref2.nRow = aSRD.nRow;
+ aCRD.Ref2.nTab = nTabLast;
+ b3D = ( nTabLast != aEingPos.Tab() );
+ aCRD.Ref2.SetFlag3D( b3D );
+ aCRD.Ref2.SetTabRel( FALSE );
+ rRangeList.Append( aCRD );
+ }
+ else
+ rRangeList.Append( aSRD );
+ }
+ }
+
+ break;
+ case 0x5B:
+ case 0x7B:
+ case 0x3B: // 3-D Area Reference [ 276]
+ {
+ UINT16 nTabFirst, nTabLast, nRowFirst, nRowLast;
+ INT16 nExtSheet;
+ BYTE nColFirst, nColLast;
+
+ aIn >> nExtSheet;
+ Ignore( 8 );
+ aIn >> nTabFirst >> nTabLast >> nRowFirst >> nRowLast
+ >> nColFirst >> nColLast;
+ nBytesLeft -= 12;
+
+ if( nExtSheet >= 0 )
+ // von extern
+ {
+ if( pExcRoot->pExtSheetBuff->GetScTabIndex( nExtSheet, nTabLast ) )
+ {
+ nTabFirst = nTabLast;
+ nExtSheet = 0; // gefunden
+ }
+ else
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ nExtSheet = 1; // verhindert Erzeugung einer CompleteRef
+ }
+ }
+
+ if( nExtSheet <= 0 )
+ {// in aktuellem Workbook
+ // erster Teil des Bereichs
+ SingleRefData &rR1 = aCRD.Ref1;
+ SingleRefData &rR2 = aCRD.Ref2;
+
+ rR1.nTab = nTabFirst;
+ rR2.nTab = nTabLast;
+ rR1.SetFlag3D( ( nTabFirst != aEingPos.Tab() ) || bRangeName );
+ rR1.SetTabRel( FALSE );
+ rR2.SetFlag3D( ( nTabLast != aEingPos.Tab() ) || bRangeName );
+ rR2.SetTabRel( FALSE );
+
+ ExcRelToScRel( nRowFirst, nColFirst, aCRD.Ref1, bRangeName );
+ ExcRelToScRel( nRowLast, nColLast, aCRD.Ref2, bRangeName );
+
+ if( IsComplColRange( nColFirst, nColLast ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRowFirst, nRowLast ) )
+ SetComplRow( aCRD );
+
+ rRangeList.Append( aCRD );
+ }//ENDE in aktuellem Workbook
+ }
+ break;
+ case 0x5C:
+ case 0x7C:
+ case 0x3C: // Deleted 3-D Cell Reference [ 277]
+ nIgnore = 17;
+ break;
+ case 0x5D:
+ case 0x7D:
+ case 0x3D: // Deleted 3-D Area Reference [ 277]
+ nIgnore = 20;
+ break;
+ default: bError = TRUE;
+ }
+
+ Ignore( nIgnore );
+ }
+
+ ConvErr eRet;
+
+ if( bError )
+ eRet = ConvErrNi;
+ else if( nBytesLeft != 0 )
+ eRet = ConvErrCount;
+ else if( bExternName )
+ eRet = ConvErrExternal;
+ else if( bArrayFormula )
+ {
+ rRestbytes = nBytesLeft;
+ eRet = ConvOK;
+ }
+ else
+ {
+ rRestbytes = nBytesLeft;
+ eRet = ConvOK;
+ }
+
+ return eRet;
+}
+
+
+void ExcelToSc::DoMulArgs( DefTokenId eId, BYTE nAnz )
+{
+ TokenId eParam[ 256 ];
+ INT32 nLauf;
+
+ if( eId == ocLog10 && nAnz > 1 )
+ eId = ocLog;
+ else if( eId == ocCeil || eId == ocFloor )
+ {
+ aStack << aPool.Store( 1.0 ); // default, da in Excel nicht vorhanden
+ nAnz++;
+ }
+
+ for( nLauf = 0 ; nLauf < nAnz ; nLauf++ )
+ aStack >> eParam[ nLauf ];
+
+ if( nAnz > 0 && eId == ocExternal )
+ {
+ TokenId n = eParam[ nAnz - 1 ];
+//##### GRUETZE FUER BASIC-FUNCS RICHTEN!
+ if( aPool.IsExternal( n ) )
+ {
+ aPool << n;
+ nAnz--;
+ }
+ else
+ aPool << eId;
+ }
+ else
+ aPool << eId;
+
+ aPool << ocOpen;
+
+ if( nAnz > 0 )
+ {
+ INT16 nNull = -1; // gibt einen auszulassenden Parameter an
+ // ACHTUNG: 0 ist der letzte Parameter, nAnz-1 der erste
+
+ INT16 nLast = nAnz - 1;
+
+ // Funktionen, bei denen Parameter wegfallen muessen
+ if( eId == ocPercentrank && nAnz == 3 )
+ nNull = 0; // letzten Parameter bei Bedarf weglassen
+
+ else if( eId == ocIndirect && nAnz == 2 )
+ nNull = 0;
+
+ else if( eId == ocAdress && nAnz > 3 )
+ nNull = nAnz - 4;
+
+ // Joost-Spezialfaelle
+ else if( eId == ocRound || eId == ocRoundUp || eId == ocRoundDown )
+ {
+ if( aPool.IsSingleOp( eParam[ 0 ], ocMissing ) )
+ nNull = 0; // letzten (ocMissing) weglassen
+ }
+ else if( eId == ocIf )
+ {
+ UINT16 nNullParam = 0;
+ for( nLauf = 0 ; nLauf < nAnz ; nLauf++ )
+ {
+ if( aPool.IsSingleOp( eParam[ nLauf ], ocMissing ) )
+ {
+ if( !nNullParam )
+ nNullParam = aPool.Store( ( double ) 0.0 );
+ eParam[ nLauf ] = nNullParam;
+ }
+ }
+ }
+
+ // [Parameter{;Parameter}]
+ aPool << eParam[ nLast ];
+ for( nLauf = nLast - 1 ; nLauf >= 0 ; nLauf-- )
+ {
+ if( nLauf != nNull )
+ aPool << ocSep << eParam[ nLauf ];
+ }
+ }
+ aPool << ocClose;
+
+ aPool >> aStack;
+}
+
+
+DefTokenId ExcelToSc::IndexToToken( UINT16 nIndex )
+{
+ static const DefTokenId pMap[ nLastInd + 1 ] =
+ {
+ ocCount, // XlfCount 0
+ ocIf, // XlfIf
+ ocIsNV, // XlfIsna
+ ocIsError, // XlfIserror
+ ocSum, // XlfSum
+ ocAverage, // XlfAverage
+ ocMin, // XlfMin
+ ocMax, // XlfMax
+ ocRow,
+ ocColumn,
+ ocNoValue, // XlfNa
+ ocNBW, // XlfNpv
+ ocStDev, // XlfStdev
+ ocCurrency, // XlfDollar
+ ocFixed, // XlfFixed
+ ocSin, // XlfSin
+ ocCos, // XlfCos
+ ocTan, // XlfTan
+ ocArcTan, // XlfAtan
+ ocPi, // XlfPi
+ ocSqrt, // XlfSqrt
+ ocExp, // XlfExp
+ ocLn, // XlfLn
+ ocLog10, // XlfLog10
+ ocAbs, // XlfAbs
+ ocInt, // XlfInt
+ ocPlusMinus, // XlfSign
+ ocRound, // XlfRound
+ ocLookup, // XlfLookup
+ ocIndex, // XlfIndex
+ ocRept, // XlfRept
+ ocMid, // XlfMid
+ ocLen, // XlfLen
+ ocValue, // XlfValue
+ ocTrue, // XlfTrue
+ ocFalse, // XlfFalse
+ ocAnd, // *
+ ocOr, // *
+ ocNot, // *
+ ocMod, // XlfMod
+ ocDBCount, // XlfDcount
+ ocDBSum, // XlfDsum
+ ocDBAverage, // XlfDaverage
+ ocDBMin, // XlfDmin
+ ocDBMax, // XlfDmax
+ ocDBStdDev, // XlfDstdev
+ ocVar, // XlfVar
+ ocDBVar, // XlfDvar
+ ocText, // XlfText
+ ocRGP, // XlfLinest
+ ocTrend, // XlfTrend
+ ocRKP, // XlfLogest
+ ocGrowth, // XlfGrowth
+ ocNoName, // XlfGoto
+ ocNoName, // XlfHalt
+ ocNoName, // ?
+ ocBW, // XlfPv
+ ocZW, // XlfFv
+ ocZZR, // XlfNper
+ ocRMZ, // XlfPmt
+ ocZins, // XlfRate
+ ocNoName, // XlfMirr
+ ocIKV, // XlfIrr
+ ocRandom, // XlfRand
+ ocMatch, // XlfMatch
+ ocGetDate, // XlfDate
+ ocGetTime, // XlfTime
+ ocGetDay, // XlfDay
+ ocGetMonth, // XlfMonth
+ ocGetYear, // XlfYear
+ ocGetDayOfWeek, // XlfWeekday
+ ocGetHour, // XlfHour
+ ocGetMin, // XlfMinute
+ ocGetSec, // XlfSecond
+ ocGetActTime, // XlfNow
+ ocAreas, // XlfAreas
+ ocRows, // XlfRows
+ ocColumns, // XlfColumns
+ ocOffset, // XlfOffset
+ ocNoName, // XlfAbsref
+ ocNoName, // XlfRelref
+ ocNoName, // XlfArgument
+ ocSearch, // XlfSearch
+ ocMatTrans, // XlfTranspose
+ ocNoName, // XlfError
+ ocNoName, // XlfStep
+ ocType, // XlfType
+ ocNoName, // XlfEcho
+ ocNoName, // XlfSetName
+ ocNoName, // XlfCaller
+ ocNoName, // XlfDeref
+ ocNoName, // XlfWindows
+ ocNoName, // XlfSeries
+ ocNoName, // XlfDocuments
+ ocNoName, // XlfActiveCell
+ ocNoName, // XlfSelection
+ ocNoName, // XlfResult
+ ocArcTan2, // XlfAtan2
+ ocArcSin, // XlfAsin
+ ocArcCos, // XlfAcos
+ ocChose, // XlfChose
+ ocHLookup, // XlfHlookup
+ ocVLookup, // XlfVlookup
+ ocNoName, // XlfLinks
+ ocNoName, // XlfInput
+ ocIsRef, // XlfIsref
+ ocNoName, // XlfGetFormula
+ ocNoName, // XlfGetName
+ ocNoName, // XlfSetValue
+ ocLog10, // XlfLog
+ ocNoName, // XlfExec
+ ocChar, // XlfChar
+ ocLower, // XlfLower
+ ocUpper, // XlfUpper
+ ocPropper, // XlfProper
+ ocLeft, // XlfLeft
+ ocRight, // XlfRight
+ ocExact, // XlfExact
+ ocTrim, // XlfTrim
+ ocReplace, // XlfReplace
+ ocSubstitute, // XlfSubstitute
+ ocCode, // XlfCode
+ ocNoName, // XlfNames
+ ocNoName, // XlfDirectory
+ ocFind, // XlfFind
+ ocNoName, // XlfCell
+ ocIsErr, // XlfIserr
+ ocIsString, // XlfIstext
+ ocIsValue, // XlfIsnumber
+ ocIsEmpty, // XlfIsblank
+ ocT, // XlfT
+ ocN, // XlfN
+ ocNoName, // XlfFopen
+ ocNoName, // XlfFclose
+ ocNoName, // XlfFsize
+ ocNoName, // XlfFreadln
+ ocNoName, // XlfFread
+ ocNoName, // XlfFwriteln
+ ocNoName, // XlfFwrite
+ ocNoName, // XlfFpos
+ ocGetDateValue, // XlfDatevalue
+ ocGetTimeValue, // XlfTimevalue
+ ocLIA, // XlfSln
+ ocDIA, // XlfSyd
+ ocGDA, // XlfDdb
+ ocNoName, // XlfGetDef
+ ocNoName, // XlfReftext
+ ocNoName, // XlfTextref
+ ocIndirect, // XlfIndirect
+ ocNoName, // XlfRegister
+ ocNoName, // XlfCall
+ ocNoName, // XlfAddBar
+ ocNoName, // XlfAddMenu
+ ocNoName, // XlfAddCommand
+ ocNoName, // XlfEnableCommand
+ ocNoName, // XlfCheckCommand
+ ocNoName, // XlfRenameCommand
+ ocNoName, // XlfShowBar
+ ocNoName, // XlfDeleteMenu
+ ocNoName, // XlfDeleteCommand
+ ocNoName, // XlfGetChartItem
+ ocNoName, // XlfDialogBox
+ ocClean, // XlfClean
+ ocMatDet, // XlfMdeterm
+ ocMatInv, // XlfMinverse
+ ocMatMult, // XlfMmult
+ ocNoName, // XlfFiles
+ ocZinsZ, // XlfIpmt
+ ocKapz, // XlfPpmt
+ ocCount2, // XlfCounta
+ ocNoName, // XlfCancelKey
+ ocNoName, // ?
+ ocNoName, // XlfAppMin
+ ocNoName, // XlfAppMax
+ ocNoName, // XlfBringToFront
+ ocNoName, // XlfInitiate
+ ocNoName, // XlfRequest
+ ocNoName, // XlfPoke
+ ocNoName, // XlfExecute
+ ocNoName, // XlfTerminate
+ ocNoName, // XlfRestart
+ ocNoName, // XlfHelp
+ ocNoName, // XlfGetBar
+ ocProduct, // XlfProduct
+ ocFact, // XlfFact
+ ocNoName, // XlfGetCell
+ ocNoName, // XlfGetWorkspace
+ ocNoName, // XlfGetWindow
+ ocNoName, // XlfGetDocument
+ ocDBProduct, // XlfDproduct
+ ocIsNonString, // XlfIsnontext
+ ocNoName, // XlfGetNote,
+ ocNoName, // XlfNote
+ ocStDevP, // XlfStdevp
+ ocVarP, // XlfVarp
+ ocDBStdDevP, // XlfDstdevp
+ ocDBVarP, // XlfDvarp
+ ocTrunc, // XlfTrunc
+ ocIsLogical, // XlfIslogical
+ ocDBCount2, // XlfDcounta
+ ocNoName, // XlfDeleteBar
+ ocNoName, // XlfUnregister
+ ocNoName, // ?
+ ocNoName, // ?
+ ocNoName, // XlfUsdollar
+ ocNoName, // XlfFindb
+ ocNoName, // XlfSearchb
+ ocNoName, // XlfReplaceb
+ ocNoName, // XlfLeftb
+ ocNoName, // XlfRightb
+ ocNoName, // XlfMidb
+ ocNoName, // XlfLenb
+ ocRoundUp, // XlfRoundup
+ ocRoundDown, // XlfRounddown
+ ocNoName, // XlfAsc
+ ocNoName, // XlfDbcs
+ ocRank, // XlfRank
+ ocNoName, // ?
+ ocNoName, // ?
+ ocAdress, // XlfAddress
+ ocGetDiffDate360, // XlfDays360
+ ocGetActDate, // XlfToday
+ ocVBD, // XlfVdb
+ ocNoName, // XlfEditColor
+ ocNoName, // XlfShowLevels
+ ocNoName, // XlfFormatMain
+ ocNoName, // ?
+ ocMedian, // XlfMedian
+ ocSumProduct, // XlfSumproduct
+ ocSinHyp, // XlfSinh
+ ocCosHyp, // XlfCosh
+ ocTanHyp, // XlfTanh
+ ocArcSinHyp, // XlfAsinh
+ ocArcCosHyp, // XlfAcosh
+ ocArcTanHyp, // XlfAtanh
+ ocDBGet, // XlfDget
+ ocNoName, // XlfCreateObject
+ ocNoName, // XlfVolatile
+ ocNoName, // XlfLastError
+ ocNoName, // XlfCustomUndo
+ ocNoName, // XlfCustomRepeat
+ ocNoName, // XlfFormulaConvert
+ ocNoName, // XlfGetLinkInfo
+ ocNoName, // XlfTextBox
+ ocNoName, // XlfInfo
+ ocNoName, // XlfGroup
+ ocNoName, // XlfGetObject
+ ocGDA2, // XlfDb
+ ocNoName, // XlfPause
+ ocNoName, // ?
+ ocNoName, // ?
+ ocNoName, // XlfResume
+ ocFrequency, // XlfFrequency
+ ocNoName, // XlfAddToolbar
+ ocNoName, // XlfDeleteToolbar
+ ocExternal, // Add In
+ ocNoName, // XlfResetToolbar
+ ocNoName, // XlfEvaluate
+ ocNoName, // XlfGetToolbar
+ ocNoName, // XlfGetTool
+ ocNoName, // XlfSpellingCheck
+ ocErrorType, // XlfErrorType
+ ocNoName, // XlfAppTitle
+ ocNoName, // XlfWindowTitle
+ ocNoName, // XlfSaveToolbar
+ ocNoName, // XlfEnableTool
+ ocNoName, // XlfPressTool
+ ocNoName, // XlfRegisterId
+ ocNoName, // XlfGetWorkbook
+ ocAveDev, // XlfAvedev
+ ocBetaDist, // XlfBetadist
+ ocGammaLn, // XlfGammaln
+ ocBetaInv, // XlfBetainv
+ ocBinomDist, // XlfBinomdist
+ ocChiDist, // XlfChidist
+ ocChiInv, // XlfChiinv
+ ocKombin, // XlfCombin
+ ocConfidence, // XlfConfidence
+ ocKritBinom, // XlfCritbinom
+ ocEven, // XlfEven
+ ocExpDist, // XlfExpondist
+ ocFDist, // XlfFdist
+ ocFInv, // XlfFinv
+ ocFisher, // XlfFisher
+ ocFisherInv, // XlfFisherinv
+ ocFloor, // XlfFloor
+ ocGammaDist, // XlfGammadist
+ ocGammaInv, // XlfGammainv
+ ocCeil, // XlfCeiling
+ ocHypGeomDist, // XlfHypgeomdist
+ ocLogNormDist, // XlfLognormdist
+ ocLogInv, // XlfLoginv
+ ocNegBinomVert, // XlfNegbinomdist
+ ocNormDist, // XlfNormdist
+ ocStdNormDist, // XlfNormsdist
+ ocNormInv, // XlfNorminv
+ ocSNormInv, // XlfNormsinv
+ ocStandard, // XlfStandardize
+ ocOdd, // XlfOdd
+ ocVariationen, // XlfPermut
+ ocPoissonDist, // XlfPoisson
+ ocTDist, // XlfTdist
+ ocWeibull, // XlfWeibull
+ ocSumXMY2, // XlfSumxmy2
+ ocSumX2MY2, // XlfSumx2my2
+ ocSumX2DY2, // XlfSumx2py2
+ ocChiTest, // XlfChitest
+ ocCorrel, // XlfCorrel
+ ocCovar, // XlfCovar
+ ocForecast, // XlfForecast
+ ocFTest, // XlfFtest
+ ocIntercept, // XlfIntercept
+ ocPearson, // XlfPearson
+ ocRSQ, // XlfRsq
+ ocSTEYX, // XlfSteyx
+ ocSlope, // XlfSlope
+ ocTTest, // XlfTtest
+ ocProb, // XlfProb
+ ocDevSq, // XlfDevsq
+ ocGeoMean, // XlfGeomean
+ ocHarMean, // XlfHarmean
+ ocSumSQ, // XlfSumsq
+ ocKurt, // XlfKurt
+ ocSchiefe, // XlfSkew
+ ocZTest, // XlfZtest,
+ ocLarge, // XlfLarge
+ ocSmall, // XlfSmall
+ ocQuartile, // XlfQuartile
+ ocPercentile, // XlfPercentile
+ ocPercentrank, // XlfPercentrank
+ ocModalValue, // XlfMode
+ ocTrimMean, // XlfTrimmean
+ ocTInv, // XlfTinv
+ ocNoName, // ?
+ ocNoName, // XlfMovieCommand
+ ocNoName, // XlfGetMovie
+ ocConcat, // XlfConcatenate
+ ocPower, // XlfPower
+ ocNoName, // XlfPivotAddData
+ ocNoName, // XlfGetPivotTable
+ ocNoName, // XlfGetPivotField
+ ocNoName, // XlfGetPivotItem
+ ocRad, // XlfRadians
+ ocDeg, // XlfDegrees
+ ocSubTotal, // XlfSubtotal
+ ocSumIf, // XlfSumif
+ ocCountIf, // XlfCountif
+ ocCountEmptyCells, // XlfCountblank
+ ocNoName, // XlfScenarioGet
+ ocNoName, // XlfOptionsListsGet
+ ocNoName, // XlfIspmt
+ ocGetDiffDate, // XlfDatedif
+ ocNoName, // XlfDatestring
+ ocNoName, // XlfNumberstring
+ ocNoName, // XlfRoman
+ ocNoName, // XlfOpenDialog
+ ocNoName, // XlfSaveDialog 356
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, // 360
+ ocAverageA, // MITTELWERTA
+ ocMaxA, // MAXA
+ ocMinA, // MINA
+ ocStDevPA, // STABWNA
+ ocVarPA, // VARIANZENA 365
+ ocStDevA, // STABWA
+ ocVarA, // VARIANZA
+ ocNoName, //
+ ocNoName, //
+ ocNoName, // 370
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, // 375
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, // 380
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, // 385
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, // 390
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName, // 395
+ ocNoName, //
+ ocNoName, //
+ ocNoName, //
+ ocNoName // 399
+ };
+
+ if( nIndex <= nLastInd )
+ return pMap[ nIndex ];
+ else
+ return ocNoName;
+}
+
+
+BYTE ExcelToSc::IndexToAnzahl( UINT16 nIndex )
+{
+ static const BYTE pMap[ nLastInd + 1 ] =
+ {
+ 0, // XlfCount
+ 0, // ##XlfIf##
+ 1, // XlfIsna
+ 1, // XlfIserror
+ 1, // XlfSum
+ 1, // XlfAverage
+ 1, // XlfMin
+ 1, // XlfMax
+ 1, // XlfRow
+ 1, // XlfColumn
+ 0, // XlfNa
+ 0, // XlfNpv
+ 0, // XlfStdev
+ 2, // XlfDollar
+ 3, // XlfFixed
+ 1, // XlfSin
+ 1, // XlfCos
+ 1, // XlfTan
+ 1, // XlfAtan
+ 0, // XlfPi
+ 1, // XlfSqrt
+ 1, // XlfExp
+ 1, // XlfLn
+ 1, // XlfLog10
+ 1, // XlfAbs
+ 1, // XlfInt
+ 1, // XlfSign
+ 2, // XlfRound
+ 0, // XlfLookup
+ 0, // XlfIndex
+ 2, // XlfRept
+ 3, // XlfMid
+ 1, // XlfLen
+ 1, // XlfValue
+ 0, // XlfTrue
+ 0, // XlfFalse
+ 0, // XlfAnd *Parmeter n-Stueck?
+ 0, // XlfOr *
+ 1, // XlfNot
+ 2, // XlfMod
+ 3, // XlfDcount
+ 3, // XlfDsum
+ 3, // XlfDaverage
+ 3, // XlfDmin
+ 3, // XlfDmax
+ 3, // XlfDstdev
+ 0, // XlfVar
+ 3, // XlfDvar
+ 2, // XlfText
+ 0, // XlfLinest
+ 4, // XlfTrend
+ 0, // XlfLogest
+ 0, // XlfGrowth
+ 0, // XlfGoto
+ 0, // XlfHalt
+ 0, // ?
+ 0, // XlfPv
+ 0, // XlfFv
+ 0, // XlfNper
+ 3, // XlfPmt
+ 0, // XlfRate
+ 3, // XlfMirr
+ 0, // XlfIrr
+ 0, // XlfRand
+ 0, // XlfMatch
+ 3, // XlfDate
+ 3, // XlfTime
+ 1, // XlfDay
+ 1, // XlfMonth
+ 1, // XlfYear
+ 1, // XlfWeekday
+ 1, // XlfHour
+ 1, // XlfMinute
+ 1, // XlfSecond
+ 0, // XlfNow
+ 1, // XlfAreas
+ 1, // XlfRows
+ 1, // XlfColumns
+ 0, // XlfOffset
+ 0, // XlfAbsref
+ 0, // XlfRelref
+ 0, // XlfArgument
+ 2, // XlfSearch
+ 1, // XlfTranspose
+ 1, // XlfError
+ 0, // XlfStep
+ 1, // XlfType
+ 0, // XlfEcho
+ 0, // XlfSetName
+ 0, // XlfCaller
+ 0, // XlfDeref
+ 0, // XlfWindows
+ 0, // XlfSeries
+ 0, // XlfDocuments
+ 0, // XlfActiveCell
+ 0, // XlfSelection
+ 0, // XlfResult
+ 2, // XlfAtan2
+ 1, // XlfAsin
+ 1, // XlfAcos
+ 0, // XlfChoose
+ 3, // XlfHlookup
+ 3, // XlfVlookup
+ 0, // XlfLinks
+ 0, // XlfInput
+ 1, // XlfIsref
+ 0, // XlfGetFormula
+ 0, // XlfGetName
+ 0, // XlfSetValue
+ 1, // XlfLog
+ 0, // XlfExec
+ 1, // XlfChar
+ 1, // XlfLower
+ 1, // XlfUpper
+ 1, // XlfProper
+ 2, // XlfLeft
+ 2, // XlfRight
+ 2, // XlfExact
+ 1, // XlfTrim
+ 4, // XlfReplace
+ 4, // XlfSubstitute
+ 1, // XlfCode
+ 0, // XlfNames
+ 0, // XlfDirectory
+ 2, // XlfFind
+ 0, // XlfCell
+ 1, // XlfIserr
+ 1, // XlfIstext
+ 1, // XlfIsnumber
+ 1, // XlfIsblank
+ 1, // XlfT
+ 1, // XlfN
+ 0, // XlfFopen
+ 0, // XlfFclose
+ 0, // XlfFsize
+ 0, // XlfFreadln
+ 0, // XlfFread
+ 0, // XlfFwriteln
+ 0, // XlfFwrite
+ 0, // XlfFpos
+ 1, // XlfDatevalue
+ 1, // XlfTimevalue
+ 3, // XlfSln
+ 4, // XlfSyd
+ 0, // XlfDdb
+ 0, // XlfGetDef
+ 0, // XlfReftext
+ 0, // XlfTextref
+ 2, // XlfIndirect
+ 0, // XlfRegister
+ 0, // XlfCall
+ 0, // XlfAddBar
+ 0, // XlfAddMenu
+ 0, // XlfAddCommand
+ 0, // XlfEnableCommand
+ 0, // XlfCheckCommand
+ 0, // XlfRenameCommand
+ 0, // XlfShowBar
+ 0, // XlfDeleteMenu
+ 0, // XlfDeleteCommand
+ 0, // XlfGetChartItem
+ 0, // XlfDialogBox
+ 1, // XlfClean
+ 1, // XlfMdeterm
+ 1, // XlfMinverse
+ 2, // XlfMmult
+ 0, // XlfFiles
+ 0, // XlfIpmt
+ 0, // XlfPpmt
+ 0, // XlfCounta
+ 0, // XlfCancelKey
+ 0, // ?
+ 0, // XlfAppMinimize
+ 0, // XlfAppMaximize
+ 0, // XlfBringToFront
+ 0, // XlfInitiate
+ 0, // XlfRequest
+ 0, // XlfPoke
+ 0, // XlfExecute
+ 0, // XlfTerminate
+ 0, // XlfRestart
+ 0, // XlfHelp
+ 0, // XlfGetBar
+ 0, // XlfProduct
+ 1, // XlfFact
+ 0, // XlfGetCell
+ 0, // XlfGetWorkspace
+ 0, // XlfGetWindow
+ 0, // XlfGetDocument
+ 3, // XlfDproduct
+ 1, // XlfIsnontext
+ 0, // XlfGetNote
+ 0, // XlfNote
+ 3, // XlfStdevp
+ 0, // XlfVarp
+ 3, // XlfDstdevp
+ 3, // XlfDvarp
+ 1, // XlfTrunc
+ 1, // XlfIslogical
+ 3, // XlfDcounta
+ 0, // XlfDeleteBar
+ 0, // XlfUnregister
+ 0, // ?
+ 0, // ?
+ 0, // XlfUsdollar
+ 0, // XlfFindb
+ 0, // XlfSearchb
+ 0, // XlfReplaceb
+ 0, // XlfLeftb
+ 0, // XlfRightb
+ 0, // XlfMidb
+ 0, // XlfLenb
+ 2, // XlfRoundup
+ 2, // XlfRounddown
+ 0, // XlfAsc
+ 0, // XlfDbcs
+ 0, // XlfRank
+ 0, // ?
+ 0, // ?
+ 0, // XlfAddress
+ 2, // XlfDays360
+ 0, // XlfToday
+ 0, // XlfVdb
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // XlfMedian
+ 0, // XlfSumproduct
+ 1, // XlfSinh
+ 1, // XlfCosh
+ 1, // XlfTanh
+ 1, // XlfAsinh
+ 1, // XlfAcosh
+ 1, // XlfAtanh
+ 3, // XlfDget
+ 0, // XlfCreateObject
+ 0, // XlfVolatile
+ 0, // XlfLastError
+ 0, // XlfCustomUndo
+ 0, // XlfCustomRepeat
+ 0, // XlfFormulaConvert
+ 0, // XlfGetLinkInfo
+ 0, // XlfTextBox
+ 1, // XlfInfo
+ 0, // XlfGroup
+ 0, // XlfGetObject
+ 0, // XlfDb
+ 0, // XlfPause
+ 0, // ?
+ 0, // ?
+ 0, // XlfResume
+ 2, // XlfFrequency
+ 0, // XlfAddToolbar
+ 0, // XlfDeleteToolbar
+ 2, // Add In
+ 0, // XlfResetToolbar
+ 0, // XlfEvaluate
+ 0, // XlfGetToolbar
+ 0, // XlfGetTool
+ 0, // XlfSpellingCheck
+ 1, // XlfErrorType
+ 0, // XlfAppTitle
+ 0, // XlfWindowTitle
+ 0, // XlfSaveToolbar
+ 0, // XlfEnableTool
+ 0, // XlfPressTool
+ 0, // XlfRegisterId
+ 0, // XlfGetWorkbook
+ 0, // XlfAvedev
+ 0, // XlfBetadist
+ 1, // XlfGammaln
+ 0, // XlfBetainv
+ 4, // XlfBinomdist
+ 2, // XlfChidist
+ 2, // XlfChiinv
+ 2, // XlfCombin
+ 3, // XlfConfidence
+ 3, // XlfCritbinom
+ 1, // XlfEven
+ 3, // XlfExpondist
+ 3, // XlfFdist
+ 3, // XlfFinv
+ 1, // XlfFisher
+ 1, // XlfFisherinv
+ 2, // XlfFloor ??? da war mal eine 0 ???
+ 4, // XlfGammadist
+ 3, // XlfGammainv
+ 2, // XlfCeiling
+ 4, // XlfHypgeomdist
+ 3, // XlfLognormdist
+ 3, // XlfLoginv
+ 3, // XlfNegbinomdist
+ 4, // XlfNormdist
+ 1, // XlfNormsdist
+ 3, // XlfNorminv
+ 1, // XlfNormsinv
+ 3, // XlfStandardize
+ 1, // XlfOdd
+ 2, // XlfPermut
+ 3, // XlfPoisson
+ 3, // XlfTdist
+ 4, // XlfWeibull
+ 2, // XlfSumxmy2
+ 2, // XlfSumx2my2
+ 2, // XlfSumx2py2
+ 2, // XlfChitest
+ 2, // XlfCorrel
+ 2, // XlfCovar
+ 3, // XlfForecast
+ 2, // XlfFtest
+ 2, // XlfIntercept
+ 2, // XlfPearson
+ 2, // XlfRsq
+ 2, // XlfSteyx
+ 2, // XlfSlope
+ 4, // XlfTtest
+ 0, // XlfProb
+ 0, // XlfDevsq
+ 0, // XlfGeomean
+ 0, // XlfHarmean
+ 0, // XlfSumsq
+ 0, // XlfKurt
+ 0, // XlfSkew
+ 0, // XlfZtest
+ 2, // XlfLarge
+ 2, // XlfSmall
+ 2, // XlfQuartile
+ 2, // XlfPercentile
+ 2, // XlfPercentrank
+ 0, // XlfMode
+ 2, // XlfTrimmean
+ 2, // XlfTinv
+ 0, // ?
+ 0, // XlfMovieCommand
+ 0, // XlfGetMovie
+ 0, // XlfConcatenate
+ 2, // XlfPower
+ 0, // XlfPivotAddData
+ 0, // XlfGetPivotTable
+ 0, // XlfGetPivotField
+ 0, // XlfGetPivotItem
+ 1, // XlfRadians
+ 1, // XlfDegrees
+ 0, // XlfSubtotal
+ 0, // XlfSumif
+ 2, // XlfCountif
+ 1, // XlfCountblank
+ 0, // XlfScenarioGet
+ 0, // XlfOptionsListsGet
+ 0, // XlfIspmt
+ 0, // XlfDatedif
+ 0, // XlfDatestring
+ 0, // XlfNumberstring
+ 0, // XlfRoman
+ 0, // XlfOpenDialog
+ 0, // XlfSaveDialog 356
+ 0, //
+ 0, //
+ 0, //
+ 0, // 360
+ 0, // MITTELWERTA
+ 0, // MAXA
+ 0, // MINA
+ 0, // STABWNA
+ 0, // VARIANZENA 365
+ 0, // STABWA
+ 0, // VARIANZA
+ 0, //
+ 0, //
+ 0, // 370
+ 0, //
+ 0, //
+ 0, //
+ 0, //
+ 0, // 375
+ 0, //
+ 0, //
+ 0, //
+ 0, //
+ 0, // 380
+ 0, //
+ 0, //
+ 0, //
+ 0, //
+ 0, // 385
+ 0, //
+ 0, //
+ 0, //
+ 0, //
+ 0, // 390
+ 0, //
+ 0, //
+ 0, //
+ 0, //
+ 0, // 395
+ 0, //
+ 0, //
+ 0, //
+ 0 //
+ };
+
+ if( nIndex <= nLastInd )
+ return pMap[ nIndex ];
+ else
+ return 0;
+}
+
+
+void ExcelToSc::ExcRelToScRel( UINT16 nRow, UINT8 nCol, SingleRefData &rSRD, const BOOL bName )
+{
+ if( bName )
+ {
+ // C O L
+ if( nRow & 0x4000 )
+ {// rel Col
+ rSRD.SetColRel( TRUE );
+ rSRD.nRelCol = *( ( sal_Char * ) &nCol );
+ }
+ else
+ {// abs Col
+ rSRD.SetColRel( FALSE );
+ rSRD.nCol = nCol;
+ }
+
+ // R O W
+ if( nRow & 0x8000 )
+ {// rel Row
+ rSRD.SetRowRel( TRUE );
+ if( nRow & 0x2000 ) // Bit 13 gesetzt?
+ // -> Row negativ
+ rSRD.nRelRow = *( ( INT16 * ) &nRow ) | 0xC000;
+ else
+ // -> Row positiv
+ rSRD.nRelRow = nRow & nRowMask;
+ }
+ else
+ {// abs Row
+ rSRD.SetRowRel( FALSE );
+ rSRD.nRow = nRow & nRowMask;
+ }
+
+ // T A B
+ // #67965# abs needed if rel in shared formula for ScCompiler UpdateNameReference
+ if ( rSRD.IsTabRel() && !rSRD.IsFlag3D() )
+ rSRD.nTab = *pExcRoot->pAktTab;
+ }
+ else
+ {
+ // C O L
+ rSRD.SetColRel( ( nRow & 0x4000 ) > 0 );
+ rSRD.nCol = nCol;
+
+ // R O W
+ rSRD.SetRowRel( ( nRow & 0x8000 ) > 0 );
+ rSRD.nRow = nRow & nRowMask;
+
+ if ( rSRD.IsColRel() )
+ rSRD.nRelCol = rSRD.nCol - aEingPos.Col();
+ if ( rSRD.IsRowRel() )
+ rSRD.nRelRow = rSRD.nRow - aEingPos.Row();
+ }
+}
+
+
+const ScTokenArray* ExcelToSc::GetBoolErr( BoolError eType )
+{
+ UINT16 nError;
+ aPool.Reset();
+ aStack.Reset();
+
+ DefTokenId eOc;
+
+ switch( eType )
+ {
+ case BE_NULL: eOc = ocStop; nError = errNoCode; break;
+ case BE_DIV0: eOc = ocStop; nError = errIllegalFPOperation; break;
+ case BE_VALUE: eOc = ocNoValue; nError = NOVALUE; break;
+ case BE_REF: eOc = ocStop; nError = errNoRef; break;
+ case BE_NAME: eOc = ocStop; nError = errNoName; break;
+ case BE_NUM: eOc = ocStop; nError = errIllegalFPOperation; break;
+ case BE_NA: eOc = ocNoValue; nError = NOVALUE; break;
+ case BE_TRUE: eOc = ocTrue; nError = 0; break;
+ case BE_FALSE: eOc = ocFalse; nError = 0; break;
+ case BE_UNKNOWN: eOc = ocStop; nError = errUnknownState; break;
+ default:
+ DBG_ERROR( "*ExcelToSc::GetBoolErr(): fehlender enum!" );
+ eOc = ocNoName;
+ nError = errUnknownState;
+ }
+
+ aPool << eOc;
+ if( eOc != ocStop )
+ aPool << ocOpen << ocClose;
+
+ aPool >> aStack;
+
+ const ScTokenArray* pErgebnis = aPool[ aStack.Get() ];
+ if( nError )
+ ( ( ScTokenArray* ) pErgebnis )->SetError( nError );
+
+ ( ( ScTokenArray* ) pErgebnis )->SetRecalcModeNormal();
+
+ return pErgebnis;
+}
+
+
+BOOL ExcelToSc::GetShrFmla( const ScTokenArray*& rpErgebnis, INT32& rRestbytes )
+{
+ BYTE nOp;
+ BOOL bRet = TRUE;
+ UINT32 nOldPos;
+
+ if( rRestbytes == 0 )
+ bRet = FALSE;
+ else
+ {
+ nBytesLeft = rRestbytes;
+
+ nOldPos = aIn.Tell();
+
+ Read( nOp );
+
+ if( nOp == 0x01 ) // Shared Formula [ 277]
+ {
+ UINT16 nCol, nRow;
+
+ Read( nRow );
+ Read( nCol );
+
+ aStack << aPool.Store( pExcRoot->pShrfmlaBuff->Find(
+ ScAddress( nCol, nRow, *pExcRoot->pAktTab ) ) );
+
+ bRet = TRUE;
+ }
+ else
+ bRet = FALSE;
+ }
+
+ if( bRet )
+ {
+ rRestbytes = nBytesLeft;
+ rpErgebnis = aPool[ aStack.Get() ];
+ }
+ else
+ {
+ aIn.Seek( nOldPos );
+ rpErgebnis = NULL;
+ }
+ return bRet;
+}
+
+
+BOOL ExcelToSc::SetCurVal( ScFormulaCell &rCell, double &rfCurVal )
+{
+ UINT16 nInd;
+ BYTE nType;
+ BYTE nVal;
+ BOOL bString = FALSE;
+
+#ifdef __BIGENDIAN
+ // Code fuer alle anstaendigen Prozessoren
+ nType = *( ( ( BYTE * ) &rfCurVal ) + 7 );
+ nVal = *( ( ( BYTE * ) &rfCurVal ) + 5 );
+ nInd = *( ( UINT16 * ) &rfCurVal );
+#else
+ // fuer Schund-Prozessoren
+ nType = *( ( BYTE * ) &rfCurVal );
+ nVal = *( ( ( BYTE * ) &rfCurVal ) + 2 );
+ nInd = *( ( ( UINT16 * ) &rfCurVal ) + 3 );
+#endif
+
+ if( ( UINT16 ) ~nInd )
+ // Wert ist Float
+ rCell.SetDouble( rfCurVal );
+ else
+ {
+ switch( nType )
+ {
+ case 0: // String
+ bString = TRUE;
+ break;
+ case 1: // Bool
+ if( nVal )
+ rfCurVal = 1.0;
+ else
+ rfCurVal = 0.0;
+ rCell.SetDouble( rfCurVal );
+ break;
+ case 2: // Error
+ {
+ switch( nVal )
+ {// nInd temp. missbrauchen
+ case 0x00: nInd = errNoCode; break; // #NULL!
+ case 0x07: nInd = errIllegalFPOperation; break;// #DIV/0!
+ case 0x0F: nInd = NOVALUE; break; // #VALUE!
+ case 0x17: nInd = errNoRef; break; // #REF!
+ case 0x1D: nInd = errNoName; break; // #NAME?
+ case 0x24: nInd = errIllegalFPOperation; break;// #NUM!
+ case 0x2A: nInd = NOVALUE; break; // #N/A
+ default: nInd = errIllegalArgument;
+ }
+ rCell.SetErrCode( nInd );
+ }
+ break;
+ }
+ }
+
+ return bString;
+}
+
+
+void ExcelToSc::SetError( ScFormulaCell &rCell, const ConvErr eErr )
+{
+ UINT16 nInd;
+
+ switch( eErr )
+ {
+ case ConvErrNi: nInd = errUnknownToken; break;
+ case ConvErrNoMem: nInd = errCodeOverflow; break;
+ case ConvErrExternal: nInd = errNoName; break;
+ case ConvErrCount: nInd = errCodeOverflow; break;
+ default: nInd = errNoCode; // hier fiel mir nichts
+ // Besseres ein...
+ }
+
+ rCell.SetErrCode( nInd );
+}
+
+
+void ExcelToSc::SetComplCol( ComplRefData &rCRD )
+{
+ SingleRefData &rSRD = rCRD.Ref2;
+ if( rSRD.IsColRel() )
+ rSRD.nRelCol = MAXCOL - aEingPos.Col();
+ else
+ rSRD.nCol = MAXCOL;
+}
+
+
+void ExcelToSc::SetComplRow( ComplRefData &rCRD )
+{
+ SingleRefData &rSRD = rCRD.Ref2;
+ if( rSRD.IsRowRel() )
+ rSRD.nRelRow = MAXROW - aEingPos.Row();
+ else
+ rSRD.nRow = MAXROW;
+}
+
+
+
diff --git a/sc/source/filter/excel/excform8.cxx b/sc/source/filter/excel/excform8.cxx
new file mode 100644
index 000000000000..9a1cedd96ecc
--- /dev/null
+++ b/sc/source/filter/excel/excform8.cxx
@@ -0,0 +1,1506 @@
+/*************************************************************************
+ *
+ * $RCSfile: excform8.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "cell.hxx"
+#include "document.hxx"
+#include "rangenam.hxx"
+
+#include "excimp8.hxx"
+#include "root.hxx"
+#include "excform.hxx"
+
+
+
+// ------------------------------------------------------------------ 0x06
+
+void ImportExcel8::Formula( void )
+{
+ UINT16 nRow, nCol, nXF, nFormLen;
+ double fCurVal;
+ BYTE nFlag0;
+ BOOL bShrFmla;
+
+ aIn >> nRow >> nCol;
+ nBytesLeft -= 4;
+
+ aIn >> nXF >> fCurVal >> nFlag0;
+ aIn.SeekRel( 5 );
+
+ aIn >> nFormLen;
+ nBytesLeft -= 18;
+
+ bShrFmla = nFlag0 & 0x08; // shared or not shared
+
+ nLastXF = nXF;
+
+ Formula( nCol, nRow, nTab, nXF, nFormLen, fCurVal, nFlag0, bShrFmla );
+}
+
+
+
+void ImportExcel8::Formula( UINT16 nCol, UINT16 nRow, UINT16 nTab,
+ UINT16 nXF, UINT16 nFormLen, double& rCurVal, BYTE nFlag, BOOL bShrFmla )
+{
+ ConvErr eErr = ConvOK;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ // jetzt steht Lesemarke auf Formel, Laenge in nFormLen
+ const ScTokenArray* pErgebnis;
+ INT32 nAnzBytes = nFormLen;
+ BOOL bConvert;
+
+ pFormConv->Reset( nFormLen, ScAddress( nCol, nRow, nTab ) );
+
+ if( bShrFmla )
+ bConvert = !pFormConv->GetShrFmla( pErgebnis, nAnzBytes );
+ else
+ bConvert = TRUE;
+
+ if( bConvert )
+ eErr = pFormConv->Convert( pErgebnis, nAnzBytes );
+
+ nBytesLeft += nAnzBytes - nFormLen;
+
+ ScFormulaCell *pZelle = NULL;
+
+ if( pErgebnis )
+ {
+ pZelle = new ScFormulaCell( pD, ScAddress( nCol, nRow, nTab ), pErgebnis );
+
+ pD->PutCell( nCol, nRow, nTab, pZelle, (BOOL)TRUE );
+
+ aColRowBuff.Used( nCol, nRow );
+ }
+ else
+ {
+ CellType eCellType;
+ ScBaseCell *pBaseCell;
+ pD->GetCellType( nCol, nRow, nTab, eCellType );
+ if( eCellType == CELLTYPE_FORMULA )
+ {
+ pD->GetCell( nCol, nRow, nTab, pBaseCell );
+ pZelle = ( ScFormulaCell * ) pBaseCell;
+ if( pZelle )
+ pZelle->AddRecalcMode( RECALCMODE_ONLOAD_ONCE );
+ }
+ }
+
+ if( pZelle )
+ {
+ if( eErr != ConvOK )
+ ExcelToSc::SetError( *pZelle, eErr );
+ else if( ExcelToSc::SetCurVal( *pZelle, rCurVal ) )
+ pLastFormCell = pZelle; // String-Record sollte folgen
+ else
+ pLastFormCell = NULL;
+ }
+ else
+ pLastFormCell = NULL;
+
+ pFltTab->SetXF( nCol, nRow, nXF );
+ }
+ else
+ bTabTruncated = TRUE;
+}
+
+
+
+
+ExcelToSc8::ExcelToSc8( RootData* pRD, SvStream& aStr, const UINT16& rOrgTab ) :
+ ExcelToSc( pRD, aStr, rOrgTab )
+{
+}
+
+
+ExcelToSc8::~ExcelToSc8()
+{
+}
+
+
+ConvErr ExcelToSc8::Convert( const ScTokenArray*& pErgebnis, INT32& rRestbytes, const FORMULA_TYPE eFT )
+{
+ BYTE nOp, nLen, nByte;
+ UINT16 nUINT16, nIndexToFunc;
+ INT16 nINT16;
+ double fDouble;
+ String aString;
+ BOOL bError = FALSE;
+ BOOL bArrayFormula = FALSE;
+ TokenId nMerk0;
+ const BOOL bRangeName = eFT == FT_RangeName;
+ const BOOL bSharedFormula = eFT == FT_SharedFormula;
+ const BOOL bRNorSF = bRangeName || bSharedFormula;
+ const XtiBuffer& rXtiBuffer = *pExcRoot->pXtiBuffer;
+ const SupbookBuffer& rSupbookBuffer = *pExcRoot->pSupbookBuffer;
+ const Xti* pXti;
+ const CharSet eCharSet = *pExcRoot->pCharset;
+
+ SingleRefData aSRD;
+ aSRD.InitFlags();
+ ComplRefData aCRD;
+ aCRD.InitFlags();
+
+ bExternName = FALSE;
+
+ nBytesLeft = rRestbytes;
+
+ if( eStatus != ConvOK )
+ return eStatus;
+
+ if( rRestbytes == 0 )
+ {
+ aPool.Store( _STRINGCONST( "-/-" ) );
+ aPool >> aStack;
+ pErgebnis = aPool[ aStack.Get() ];
+ return ConvOK;
+ }
+
+ while( nBytesLeft > 0 && !bError )
+ {
+ Read( nOp );
+
+ switch( nOp ) // Buch Seite:
+ { // SDK4 SDK5
+ case 0x01: // Array Formula [325 ]
+ // Array Formula or Shared Formula [ 277]
+ case 0x02: // Data Table [325 277]
+ Ignore( 4 );
+
+ bArrayFormula = TRUE;
+ break;
+ case 0x03: // Addition [312 264]
+ aStack >> nMerk0;
+ aPool << aStack << ocAdd << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x04: // Subtraction [313 264]
+ // SECOMD-TOP minus TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocSub << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x05: // Multiplication [313 264]
+ aStack >> nMerk0;
+ aPool << aStack << ocMul << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x06: // Division [313 264]
+ // divide TOP by SECOND-TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocDiv << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x07: // Exponetiation [313 265]
+ // raise SECOND-TOP to power of TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocPow << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x08: // Concatenation [313 265]
+ // append TOP to SECOND-TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocAmpersand << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x09: // Less Than [313 265]
+ // SECOND-TOP < TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocLess << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0A: // Less Than or Equal [313 265]
+ // SECOND-TOP <= TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocLessEqual << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0B: // Equal [313 265]
+ // SECOND-TOP == TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocEqual << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0C: // Greater Than or Equal [313 265]
+ // SECOND-TOP == TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocGreaterEqual << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0D: // Greater Than [313 265]
+ // SECOND-TOP == TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocGreater << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0E: // Not Equal [313 265]
+ // SECOND-TOP == TOP
+ aStack >> nMerk0;
+ aPool << aStack << ocNotEqual << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x0F: // Intersection [314 265]
+ aStack >> nMerk0;
+ aPool << aStack << ocIntersect << nMerk0;
+ aPool >> aStack;
+ break;
+ case 0x10: // Union [314 265]
+ // ocSep behelfsweise statt 'ocUnion'
+ aStack >> nMerk0;
+ aPool << ocOpen << aStack << ocSep << nMerk0 << ocClose;
+ // doesn't fit exactly, but is more Excel-like
+ aPool >> aStack;
+ break;
+ case 0x11: // Range [314 265]
+ {
+ // wenn erster und zweiter Ausdruck auf'm Stack Single Referenzen
+ // sind, dann Area Reference erzeugen, ansonsten Fehlerhaften Aus-
+ // druck generieren
+ BOOL bErrorToken = TRUE;
+ TokenId nMerk1;
+
+ aStack >> nMerk0;
+ aStack >> nMerk1;
+
+ if( aPool.GetType( nMerk0 ) == T_RefC &&
+ aPool.GetType( nMerk1 ) == T_RefC )
+ {
+ register const SingleRefData *pRef1 = aPool.GetSRD( nMerk1 );
+ register const SingleRefData *pRef2 = aPool.GetSRD( nMerk0 );
+ if( pRef1 && pRef2 )
+ {
+ aCRD.Ref1 = *pRef1;
+ aCRD.Ref2 = *pRef2;
+ aStack << aPool.Store( aCRD );
+ bErrorToken = FALSE;
+ }
+ }
+
+ if( bErrorToken )
+ {
+ aPool << ocNoName << ocOpen << nMerk1 << ocSep
+ << nMerk0 << ocClose;
+
+ aPool >> aStack;
+ }
+ }
+ break;
+ case 0x12: // Unary Plus [312 264]
+ break;
+ case 0x13: // Unary Minus [312 264]
+ aPool << ocNegSub << aStack;
+ aPool >> aStack;
+ break;
+ case 0x14: // Percent Sign [312 264]
+ // <Stack> + '/' + '100'
+ nMerk0 = aPool.Store( 100.0 );
+ aPool << ocOpen << aStack << ocDiv << nMerk0 << ocClose;
+ aPool >> aStack;
+ break;
+ case 0x15: // Parenthesis [326 278]
+ aPool << ocOpen << aStack << ocClose;
+ aPool >> aStack;
+ break;
+ case 0x16: // Missing Argument [314 266]
+ aPool << ocMissing;
+ aPool >> aStack;
+ break;
+ case 0x17: // String Constant [314 266]
+ Read( nLen ); // und?
+
+ if( nLen )
+ aString = ::ReadUnicodeString( aIn, nBytesLeft, eCharSet, nLen );
+ else
+ {
+ aString = EMPTY_STRING;
+ Ignore( 1 ); // Grbit ueberlesen
+ }
+
+ aStack << aPool.Store( aString );
+ break;
+ case 0x19: // Special Attribute [327 279]
+ {
+ UINT16 nData, nFakt;
+ BYTE nOpt;
+
+ Read( nOpt );
+
+ Read( nData );
+ nFakt = 2;
+
+ if( nOpt & 0x04 )
+ {// nFakt -> Bytes oder Words ueberlesen AttrChoose
+ nData++;
+ Ignore( nData * nFakt );
+ }
+ else if( nOpt & 0x10 ) // AttrSum
+ DoMulArgs( ocSum, 1 );
+ }
+ break;
+ case 0x1C: // Error Value [314 266]
+ {
+ Read( nByte );
+ DefTokenId eOc;
+ switch( nByte )
+ {
+ case 0x00:
+ case 0x07:
+ case 0x17:
+ case 0x1D:
+ case 0x24: eOc = ocStop; break;
+ case 0x0F:
+ case 0x2A: eOc = ocNoValue; break;
+ default: eOc = ocNoName;
+ }
+ aPool << eOc;
+ if( eOc != ocStop )
+ aPool << ocOpen << ocClose;
+
+ aPool >> aStack;
+ }
+ break;
+ case 0x1D: // Boolean [315 266]
+ Read( nByte );
+ if( nByte == 0 )
+ aPool << ocFalse << ocOpen << ocClose;
+ else
+ aPool << ocTrue << ocOpen << ocClose;
+ aPool >> aStack;
+ break;
+ case 0x1E: // Integer [315 266]
+ Read( nUINT16 );
+ aStack << aPool.Store( ( double ) nUINT16 );
+ break;
+ case 0x1F: // Number [315 266]
+ Read( fDouble );
+ aStack << aPool.Store( fDouble );
+ break;
+ case 0x40:
+ case 0x60:
+ case 0x20: // Array Constant [317 268]
+ Ignore( 7 );
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case 0x41:
+ case 0x61:
+ case 0x21: // Function, Fixed Number of Arguments [333 282]
+ Read( nIndexToFunc );
+
+ DoDefArgs( nIndexToFunc );
+ break;
+ case 0x42:
+ case 0x62:
+ case 0x22: // Function, Variable Number of Arg. [333 283]
+ {
+ BYTE nAnz;
+ Read( nAnz );
+ nAnz &= 0x7F;
+
+ Read( nIndexToFunc );
+
+ DoMulArgs( IndexToToken( nIndexToFunc ), nAnz );
+ }
+ break;
+ case 0x43:
+ case 0x63:
+ case 0x23: // Name [318 269]
+ Read( nUINT16 );
+ Ignore( 2 );
+
+ aStack << aPool.Store( ( *pExcRoot->pRNameBuff )[ nUINT16 ] );
+ break;
+ case 0x44:
+ case 0x64:
+ case 0x24: // Cell Reference [319 270]
+ case 0x4A:
+ case 0x6A:
+ case 0x2A: // Deleted Cell Reference [323 273]
+ {
+ UINT16 nCol, nRow;
+
+ aIn >> nRow >> nCol;
+ nBytesLeft -= 4;
+
+ aSRD.nCol = nCol;
+ aSRD.nRow = nRow & 0x3FFF;
+ aSRD.nRelTab = 0;
+ aSRD.SetTabRel( TRUE );
+ aSRD.SetFlag3D( bRangeName );
+
+ ExcelToSc8::ExcRelToScRel( nRow, nCol, aSRD, bRangeName );
+
+ switch ( nOp )
+ {
+ case 0x4A:
+ case 0x6A:
+ case 0x2A: // Deleted Cell Reference [323 273]
+ // no information which part is deleted, set both
+ aSRD.SetColDeleted( TRUE );
+ aSRD.SetRowDeleted( TRUE );
+ }
+
+ aStack << aPool.Store( aSRD );
+ }
+ break;
+ case 0x45:
+ case 0x65:
+ case 0x25: // Area Reference [320 270]
+ case 0x4B:
+ case 0x6B:
+ case 0x2B: // Deleted Area Refernce [323 273]
+ {
+ UINT16 nRowFirst, nRowLast;
+ UINT16 nColFirst, nColLast;
+ SingleRefData &rSRef1 = aCRD.Ref1;
+ SingleRefData &rSRef2 = aCRD.Ref2;
+
+ aIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 8;
+
+ rSRef1.nRelTab = rSRef2.nRelTab = 0;
+ rSRef1.SetTabRel( TRUE );
+ rSRef2.SetTabRel( TRUE );
+ rSRef1.SetFlag3D( bRangeName );
+ rSRef2.SetFlag3D( bRangeName );
+
+ ExcelToSc8::ExcRelToScRel( nRowFirst, nColFirst, aCRD.Ref1, bRangeName );
+ ExcelToSc8::ExcRelToScRel( nRowLast, nColLast, aCRD.Ref2, bRangeName );
+
+ if( IsComplColRange( nColFirst, nColLast ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRowFirst, nRowLast ) )
+ SetComplRow( aCRD );
+
+ switch ( nOp )
+ {
+ case 0x4B:
+ case 0x6B:
+ case 0x2B: // Deleted Area Refernce [323 273]
+ // no information which part is deleted, set all
+ rSRef1.SetColDeleted( TRUE );
+ rSRef1.SetRowDeleted( TRUE );
+ rSRef2.SetColDeleted( TRUE );
+ rSRef2.SetRowDeleted( TRUE );
+ }
+
+ aStack << aPool.Store( aCRD );
+ }
+ break;
+ case 0x46:
+ case 0x66:
+ case 0x26: // Constant Reference Subexpression [321 271]
+ Ignore( 6 ); // mehr steht da nicht!
+ break;
+ case 0x47:
+ case 0x67:
+ case 0x27: // Erroneous Constant Reference Subexpr. [322 272]
+ Ignore( 6 ); // mehr steht da nicht!
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case 0x48:
+ case 0x68:
+ case 0x28: // Incomplete Constant Reference Subexpr.[331 281]
+ Ignore( 6 ); // mehr steht da nicht!
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case 0x49:
+ case 0x69:
+ case 0x29: // Variable Reference Subexpression [331 281]
+ Ignore( 2 ); // mehr steht da nicht!
+ break;
+ case 0x4C:
+ case 0x6C:
+ case 0x2C: // Cell Reference Within a Name [323 ]
+ // Cell Reference Within a Shared Formula[ 273]
+ {
+ UINT16 nRow, nCol;
+
+ aIn >> nRow >> nCol;
+ nBytesLeft -= 4;
+
+ aSRD.nRelTab = 0;
+ aSRD.SetTabRel( TRUE );
+ aSRD.SetFlag3D( bRangeName );
+
+ ExcelToSc8::ExcRelToScRel( nRow, nCol, aSRD, bRNorSF );
+
+ aStack << aPool.Store( aSRD );
+ }
+ break;
+ case 0x4D:
+ case 0x6D:
+ case 0x2D: // Area Reference Within a Name [324 ]
+ { // Area Reference Within a Shared Formula[ 274]
+ UINT16 nRowFirst, nRowLast;
+ UINT16 nColFirst, nColLast;
+
+ aCRD.Ref1.nRelTab = aCRD.Ref2.nRelTab = 0;
+ aCRD.Ref1.SetTabRel( TRUE );
+ aCRD.Ref2.SetTabRel( TRUE );
+ aCRD.Ref1.SetFlag3D( bRangeName );
+ aCRD.Ref2.SetFlag3D( bRangeName );
+
+ aIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 8;
+
+ ExcelToSc8::ExcRelToScRel( nRowFirst, nColFirst, aCRD.Ref1, bRNorSF );
+ ExcelToSc8::ExcRelToScRel( nRowLast, nColLast, aCRD.Ref2, bRNorSF );
+
+ if( IsComplColRange( nColFirst, nColLast ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRowFirst, nRowLast ) )
+ SetComplRow( aCRD );
+
+ aStack << aPool.Store( aCRD );
+ }
+ break;
+ case 0x4E:
+ case 0x6E:
+ case 0x2E: // Reference Subexpression Within a Name [332 282]
+ Ignore( 2 ); // mehr steht da nicht!
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case 0x4F:
+ case 0x6F:
+ case 0x2F: // Incomplete Reference Subexpression... [332 282]
+ Ignore( 2 ); // mehr steht da nicht!
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case 0x58:
+ case 0x78:
+ case 0x38: // Command-Equivalent Function [333 ]
+ aString.AssignAscii( "COMM_EQU_FUNC" );
+ Read( nByte );
+ aString += String::CreateFromInt32( nByte );
+ Read( nByte );
+ aStack << aPool.Store( aString );
+ DoMulArgs( ocPush, nByte + 1 );
+ break;
+ case 0x59:
+ case 0x79:
+ case 0x39: // Name or External Name [ 275]
+ Read( nINT16 );
+ Read( nUINT16 );
+ Ignore( 2 );
+ if( nINT16 >= 0 )
+ {
+ const ExtName* pExtName;
+ pExtName = pExcRoot->pExtNameBuff->GetName( nUINT16 );
+
+ if( pExtName )
+ {
+ nINT16++;
+ if( pExtName->IsDDE() && pExcRoot->pExtSheetBuff->IsLink( ( UINT16 ) nINT16 ) )
+ {
+ String aAppl, aExtDoc;
+ TokenId nPar1, nPar2;
+
+ pExcRoot->pExtSheetBuff->GetLink( ( UINT16 ) nINT16 , aAppl, aExtDoc );
+ nPar1 = aPool.Store( aAppl );
+ nPar2 = aPool.Store( aExtDoc );
+ nMerk0 = aPool.Store( pExtName->aName );
+ aPool << ocDde << ocOpen << nPar1 << ocSep << nPar2 << ocSep
+ << nMerk0 << ocClose;
+ aPool >> aStack;
+ }
+ else
+ aStack << aPool.Store( ocNoName, pExtName->aName );
+ }
+ else
+ {
+ //aStack << ocNoName;
+ aPool << ocBad;
+ aPool >> aStack;
+ }
+ }
+ else
+ aStack << aPool.Store( ( *pExcRoot->pRNameBuff )[ nUINT16 ] );
+ break;
+ case 0x5A:
+ case 0x7A:
+ case 0x3A: // 3-D Cell Reference [ 275]
+ case 0x5C:
+ case 0x7C:
+ case 0x3C: // Deleted 3-D Cell Reference [ 277]
+ {
+ UINT16 nIxti, nRw, nGrbitCol;
+
+ aIn >> nIxti >> nRw >> nGrbitCol;
+ nBytesLeft -= 6;
+
+ pXti = rXtiBuffer.Get( nIxti );
+
+ if( pXti )
+ {
+ const SupbookE* pSbE = rSupbookBuffer.Get( pXti->nSupbook );
+
+ if( pSbE )
+ {
+ UINT16 nTabFirst, nTabLast;
+ if( pSbE->IsExternal() )
+ {
+ nTabFirst = pSbE->GetScTabNum( pXti->nFirst );
+ nTabLast = pSbE->GetScTabNum( pXti->nLast );
+ }
+ else
+ {
+ nTabFirst = pXti->nFirst;
+ nTabLast = pXti->nLast;
+ }
+ BOOL b3D = ( nTabFirst != aEingPos.Tab() ) || bRangeName;
+
+ aSRD.nTab = nTabFirst;
+ aSRD.SetFlag3D( b3D );
+ aSRD.SetTabRel( FALSE );
+
+ ExcRelToScRel( nRw, nGrbitCol, aSRD, bRangeName );
+
+ switch ( nOp )
+ {
+ case 0x5C:
+ case 0x7C:
+ case 0x3C: // Deleted 3-D Cell Reference [ 277]
+ // no information which part is deleted, set both
+ aSRD.SetColDeleted( TRUE );
+ aSRD.SetRowDeleted( TRUE );
+ }
+ if ( nTabFirst > MAXTAB )
+ aSRD.SetTabDeleted( TRUE );
+
+ if( nTabLast != nTabFirst )
+ {
+ aCRD.Ref1 = aCRD.Ref2 = aSRD;
+ aCRD.Ref2.nTab = nTabLast;
+ b3D = ( nTabLast != aEingPos.Tab() );
+ aStack << aPool.Store( aCRD );
+ }
+ else
+ aStack << aPool.Store( aSRD );
+ }
+ }
+ else
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ }
+ }
+ break;
+ case 0x5B:
+ case 0x7B:
+ case 0x3B: // 3-D Area Reference [ 276]
+ case 0x5D:
+ case 0x7D:
+ case 0x3D: // Deleted 3-D Area Reference [ 277]
+ {
+ UINT16 nIxti, nRw1, nGrbitCol1, nRw2, nGrbitCol2;
+
+ aIn >> nIxti >> nRw1 >> nRw2 >> nGrbitCol1 >> nGrbitCol2;
+ nBytesLeft -= 10;
+
+ pXti = rXtiBuffer.Get( nIxti );
+
+ if( pXti )
+ {
+ const SupbookE* pSbE = rSupbookBuffer.Get( pXti->nSupbook );
+
+ if( pSbE )
+ {
+ UINT16 nTabFirst, nTabLast;
+ if( pSbE->IsExternal() )
+ {
+ nTabFirst = pSbE->GetScTabNum( pXti->nFirst );
+ nTabLast = pSbE->GetScTabNum( pXti->nLast );
+ }
+ else
+ {
+ nTabFirst = pXti->nFirst;
+ nTabLast = pXti->nLast;
+ }
+
+ SingleRefData &rR1 = aCRD.Ref1;
+ SingleRefData &rR2 = aCRD.Ref2;
+
+ rR1.nTab = nTabFirst;
+ rR2.nTab = nTabLast;
+ rR1.SetFlag3D( ( nTabFirst != aEingPos.Tab() ) || bRangeName );
+ rR1.SetTabRel( FALSE );
+ rR2.SetFlag3D( ( nTabLast != aEingPos.Tab() ) || bRangeName );
+ rR2.SetTabRel( FALSE );
+
+ ExcelToSc8::ExcRelToScRel( nRw1, nGrbitCol1, aCRD.Ref1, bRangeName );
+ ExcelToSc8::ExcRelToScRel( nRw2, nGrbitCol2, aCRD.Ref2, bRangeName );
+
+ if( IsComplColRange( nGrbitCol1, nGrbitCol2 ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRw1, nRw2 ) )
+ SetComplRow( aCRD );
+
+ switch ( nOp )
+ {
+ case 0x5D:
+ case 0x7D:
+ case 0x3D: // Deleted 3-D Area Reference [ 277]
+ // no information which part is deleted, set all
+ rR1.SetColDeleted( TRUE );
+ rR1.SetRowDeleted( TRUE );
+ rR2.SetColDeleted( TRUE );
+ rR2.SetRowDeleted( TRUE );
+ }
+ if ( nTabFirst > MAXTAB )
+ rR1.SetTabDeleted( TRUE );
+ if ( nTabLast > MAXTAB )
+ rR2.SetTabDeleted( TRUE );
+
+ aStack << aPool.Store( aCRD );
+ }
+ else
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ }
+ }
+ else
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ }
+ }
+ break;
+ default: bError = TRUE;
+ }
+ }
+
+ ConvErr eRet;
+
+ if( bError )
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ pErgebnis = aPool[ aStack.Get() ];
+ eRet = ConvErrNi;
+ }
+ else if( nBytesLeft != 0 )
+ {
+ aPool << ocBad;
+ aPool >> aStack;
+ pErgebnis = aPool[ aStack.Get() ];
+ eRet = ConvErrCount;
+ }
+ else if( bExternName )
+ {
+ rRestbytes = nBytesLeft;
+
+ pErgebnis = aPool[ aStack.Get() ];
+ eRet = ConvErrExternal;
+ }
+ else if( bArrayFormula )
+ {
+ rRestbytes = nBytesLeft;
+
+ pErgebnis = NULL;
+ eRet = ConvOK;
+ }
+ else
+ {
+ rRestbytes = nBytesLeft;
+
+ pErgebnis = aPool[ aStack.Get() ];
+
+ eRet = ConvOK;
+ }
+
+ return eRet;
+}
+
+
+
+ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, INT32 &rRestbytes, const FORMULA_TYPE eFT )
+{
+ BYTE nOp, nLen;//, nByte;
+ BOOL bError = FALSE;
+ BOOL bArrayFormula = FALSE;
+ const BOOL bRangeName = eFT == FT_RangeName;
+ const BOOL bSharedFormula = eFT == FT_SharedFormula;
+ const BOOL bRNorSF = bRangeName || bSharedFormula;
+ const XtiBuffer& rXtiBuffer = *pExcRoot->pXtiBuffer;
+ const SupbookBuffer& rSupbookBuffer = * pExcRoot->pSupbookBuffer;
+ const Xti* pXti;
+
+ SingleRefData aSRD;
+ aSRD.InitFlags();
+ ComplRefData aCRD;
+ aCRD.InitFlags();
+
+ bExternName = FALSE;
+
+ nBytesLeft = rRestbytes;
+
+ if( eStatus != ConvOK )
+ return eStatus;
+
+ if( rRestbytes == 0 )
+ return ConvOK;
+
+ while( nBytesLeft > 0 && !bError )
+ {
+ Read( nOp );
+
+ switch( nOp ) // Buch Seite:
+ { // SDK4 SDK5
+ case 0x01: // Array Formula [325 ]
+ // Array Formula or Shared Formula [ 277]
+ Ignore( 4 );
+
+ bArrayFormula = TRUE;
+ break;
+ case 0x02: // Data Table [325 277]
+ Ignore( 4 );
+ break;
+ case 0x03: // Addition [312 264]
+ case 0x04: // Subtraction [313 264]
+ case 0x05: // Multiplication [313 264]
+ case 0x06: // Division [313 264]
+ case 0x07: // Exponetiation [313 265]
+ case 0x08: // Concatenation [313 265]
+ case 0x09: // Less Than [313 265]
+ case 0x0A: // Less Than or Equal [313 265]
+ case 0x0B: // Equal [313 265]
+ case 0x0C: // Greater Than or Equal [313 265]
+ case 0x0D: // Greater Than [313 265]
+ case 0x0E: // Not Equal [313 265]
+ case 0x0F: // Intersection [314 265]
+ case 0x10: // Union [314 265]
+ case 0x11: // Range [314 265]
+ case 0x12: // Unary Plus [312 264]
+ case 0x13: // Unary Minus [312 264]
+ case 0x14: // Percent Sign [312 264]
+ case 0x15: // Parenthesis [326 278]
+ case 0x16: // Missing Argument [314 266]
+ break;
+ case 0x17: // String Constant [314 266]
+ Read( nLen ); // und?
+
+ if( nLen )
+ ::SkipUnicodeString( aIn, nBytesLeft, nLen );
+ else
+ Ignore( 1 ); // Grbit ueberlesen
+ break;
+ case 0x19: // Special Attribute [327 279]
+ {
+ UINT16 nData, nFakt;
+ BYTE nOpt;
+
+ Read( nOpt );
+
+ Read( nData );
+ nFakt = 2;
+
+ if( nOpt & 0x04 )
+ {// nFakt -> Bytes oder Words ueberlesen AttrChoose
+ nData++;
+ Ignore( nData * nFakt );
+ }
+ }
+ break;
+ case 0x1C: // Error Value [314 266]
+ case 0x1D: // Boolean [315 266]
+ Ignore( 1 );
+ break;
+ case 0x1E: // Integer [315 266]
+ Ignore( 2 );
+ break;
+ case 0x1F: // Number [315 266]
+ Ignore( sizeof( double ) );
+ break;
+ case 0x40:
+ case 0x60:
+ case 0x20: // Array Constant [317 268]
+ Ignore( 7 );
+ break;
+ case 0x41:
+ case 0x61:
+ case 0x21: // Function, Fixed Number of Arguments [333 282]
+ Ignore( 2 );
+ break;
+ case 0x42:
+ case 0x62:
+ case 0x22: // Function, Variable Number of Arg. [333 283]
+ Ignore( 3 );
+ break;
+ case 0x43:
+ case 0x63:
+ case 0x23: // Name [318 269]
+ Ignore( 4 );
+ break;
+ case 0x44:
+ case 0x64:
+ case 0x24: // Cell Reference [319 270]
+ {
+ UINT16 nCol, nRow;
+
+ aIn >> nRow >> nCol;
+ nBytesLeft -= 4;
+
+ aSRD.nCol = nCol;
+ aSRD.nRow = nRow & 0x3FFF;
+ aSRD.nRelTab = 0;
+ aSRD.SetTabRel( TRUE );
+ aSRD.SetFlag3D( bRangeName );
+
+ ExcelToSc8::ExcRelToScRel( nRow, nCol, aSRD, bRangeName );
+
+ rRangeList.Append( aSRD );
+ }
+ break;
+ case 0x45:
+ case 0x65:
+ case 0x25: // Area Reference [320 270]
+ {
+ UINT16 nRowFirst, nRowLast;
+ UINT16 nColFirst, nColLast;
+ SingleRefData &rSRef1 = aCRD.Ref1;
+ SingleRefData &rSRef2 = aCRD.Ref2;
+
+ aIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 8;
+
+ rSRef1.nRelTab = rSRef2.nRelTab = 0;
+ rSRef1.SetTabRel( TRUE );
+ rSRef2.SetTabRel( TRUE );
+ rSRef1.SetFlag3D( bRangeName );
+ rSRef2.SetFlag3D( bRangeName );
+
+ ExcelToSc8::ExcRelToScRel( nRowFirst, nColFirst, aCRD.Ref1, bRangeName );
+ ExcelToSc8::ExcRelToScRel( nRowLast, nColLast, aCRD.Ref2, bRangeName );
+
+ if( IsComplColRange( nColFirst, nColLast ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRowFirst, nRowLast ) )
+ SetComplRow( aCRD );
+
+ rRangeList.Append( aCRD );
+ }
+ break;
+ case 0x46:
+ case 0x66:
+ case 0x26: // Constant Reference Subexpression [321 271]
+ case 0x47:
+ case 0x67:
+ case 0x27: // Erroneous Constant Reference Subexpr. [322 272]
+ case 0x48:
+ case 0x68:
+ case 0x28: // Incomplete Constant Reference Subexpr.[331 281]
+ Ignore( 6 ); // mehr steht da nicht!
+ break;
+ case 0x49:
+ case 0x69:
+ case 0x29: // Variable Reference Subexpression [331 281]
+ Ignore( 2 ); // mehr steht da nicht!
+ break;
+ case 0x4A:
+ case 0x6A:
+ case 0x2A: // Deleted Cell Reference [323 273]
+ Ignore( 3 );
+ break;
+ case 0x4B:
+ case 0x6B:
+ case 0x2B: // Deleted Area Refernce [323 273]
+ Ignore( 6 );
+ break;
+ case 0x4C:
+ case 0x6C:
+ case 0x2C: // Cell Reference Within a Name [323 ]
+ // Cell Reference Within a Shared Formula[ 273]
+ {
+ UINT16 nRow, nCol;
+
+ aIn >> nRow >> nCol;
+ nBytesLeft -= 4;
+
+ aSRD.nRelTab = 0;
+ aSRD.SetTabRel( TRUE );
+ aSRD.SetFlag3D( bRangeName );
+
+ ExcelToSc8::ExcRelToScRel( nRow, nCol, aSRD, bRNorSF );
+
+ rRangeList.Append( aSRD );
+ }
+ break;
+ case 0x4D:
+ case 0x6D:
+ case 0x2D: // Area Reference Within a Name [324 ]
+ { // Area Reference Within a Shared Formula[ 274]
+ UINT16 nRowFirst, nRowLast;
+ UINT16 nColFirst, nColLast;
+
+ aCRD.Ref1.nRelTab = aCRD.Ref2.nRelTab = 0;
+ aCRD.Ref1.SetTabRel( TRUE );
+ aCRD.Ref2.SetTabRel( TRUE );
+ aCRD.Ref1.SetFlag3D( bRangeName );
+ aCRD.Ref2.SetFlag3D( bRangeName );
+
+ aIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 8;
+
+ ExcelToSc8::ExcRelToScRel( nRowFirst, nColFirst, aCRD.Ref1, bRNorSF );
+ ExcelToSc8::ExcRelToScRel( nRowLast, nColLast, aCRD.Ref2, bRNorSF );
+
+ if( IsComplColRange( nColFirst, nColLast ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRowFirst, nRowLast ) )
+ SetComplRow( aCRD );
+
+ rRangeList.Append( aCRD );
+ }
+ break;
+ case 0x4E:
+ case 0x6E:
+ case 0x2E: // Reference Subexpression Within a Name [332 282]
+ case 0x4F:
+ case 0x6F:
+ case 0x2F: // Incomplete Reference Subexpression... [332 282]
+ case 0x58:
+ case 0x78:
+ case 0x38: // Command-Equivalent Function [333 ]
+ Ignore( 2 );
+ break;
+ case 0x59:
+ case 0x79:
+ case 0x39: // Name or External Name [ 275]
+ Ignore( 24 );
+ break;
+ case 0x5A:
+ case 0x7A:
+ case 0x3A: // 3-D Cell Reference [ 275]
+ {
+ UINT16 nIxti, nRw, nGrbitCol;
+
+ aIn >> nIxti >> nRw >> nGrbitCol;
+ nBytesLeft -= 6;
+
+ pXti = rXtiBuffer.Get( nIxti );
+
+ if( pXti )
+ {
+ const SupbookE* pSbE = rSupbookBuffer.Get( pXti->nSupbook );
+
+ if( pSbE )
+ {
+// if( pSbE->IsSameSheet() )
+ {// in aktuellem Workbook
+ UINT16 nTabFirst = pXti->nFirst;
+ UINT16 nTabLast = pXti->nLast;
+ BOOL b3D = ( nTabFirst != aEingPos.Tab() ) || bRangeName;
+
+ aSRD.nTab = nTabFirst;
+ aSRD.SetFlag3D( b3D );
+ aSRD.SetTabRel( FALSE );
+
+ ExcRelToScRel( nRw, nGrbitCol, aSRD, bRangeName );
+
+ if( nTabLast != nTabFirst )
+ {
+ aCRD.Ref1 = aSRD;
+ aCRD.Ref2.nCol = aSRD.nCol;
+ aCRD.Ref2.nRow = aSRD.nRow;
+ aCRD.Ref2.nTab = nTabLast;
+ b3D = ( nTabLast != aEingPos.Tab() );
+ aCRD.Ref2.SetFlag3D( b3D );
+ aCRD.Ref2.SetTabRel( FALSE );
+ rRangeList.Append( aCRD );
+ }
+ else
+ rRangeList.Append( aSRD );
+ }
+ }
+ }
+ }
+ break;
+ case 0x5B:
+ case 0x7B:
+ case 0x3B: // 3-D Area Reference [ 276]
+ {
+ UINT16 nIxti, nRw1, nGrbitCol1, nRw2, nGrbitCol2;
+
+ aIn >> nIxti >> nRw1 >> nRw2 >> nGrbitCol1 >> nGrbitCol2;
+ nBytesLeft -= 10;
+
+ pXti = rXtiBuffer.Get( nIxti );
+
+ if( pXti )
+ {
+ const SupbookE* pSbE = rSupbookBuffer.Get( pXti->nSupbook );
+
+ if( pSbE )
+ {
+ UINT16 nTabFirst = pXti->nFirst;
+ UINT16 nTabLast = pXti->nLast;
+
+ SingleRefData &rR1 = aCRD.Ref1;
+ SingleRefData &rR2 = aCRD.Ref2;
+
+ rR1.nTab = nTabFirst;
+ rR2.nTab = nTabLast;
+ rR1.SetFlag3D( ( nTabFirst != aEingPos.Tab() ) || bRangeName );
+ rR1.SetTabRel( FALSE );
+ rR2.SetFlag3D( ( nTabLast != aEingPos.Tab() ) || bRangeName );
+ rR2.SetTabRel( FALSE );
+
+ ExcelToSc8::ExcRelToScRel( nRw1, nGrbitCol1, aCRD.Ref1, bRangeName );
+ ExcelToSc8::ExcRelToScRel( nRw2, nGrbitCol2, aCRD.Ref2, bRangeName );
+
+ if( IsComplColRange( nGrbitCol1, nGrbitCol2 ) )
+ SetComplCol( aCRD );
+ else if( IsComplRowRange( nRw1, nRw2 ) )
+ SetComplRow( aCRD );
+
+ rRangeList.Append( aCRD );
+ }
+ }
+ }
+ break;
+ case 0x5C:
+ case 0x7C:
+ case 0x3C: // Deleted 3-D Cell Reference [ 277]
+ Ignore( 17 );
+ break;
+ case 0x5D:
+ case 0x7D:
+ case 0x3D: // Deleted 3-D Area Reference [ 277]
+ Ignore( 20 );
+ break;
+ default:
+ bError = TRUE;
+ }
+ }
+
+ ConvErr eRet;
+
+ if( bError )
+ eRet = ConvErrNi;
+ else if( nBytesLeft != 0 )
+ eRet = ConvErrCount;
+ else if( bExternName )
+ eRet = ConvErrExternal;
+ else
+ eRet = ConvOK;
+
+ return eRet;
+}
+
+
+
+void ExcelToSc8::ExcRelToScRel( UINT16 nRow, UINT16 nC, SingleRefData &rSRD, const BOOL bName )
+{
+ const BOOL bColRel = ( nC & 0x4000 ) != 0;
+ const BOOL bRowRel = ( nC & 0x8000 ) != 0;
+ const UINT8 nCol = ( UINT8 ) nC;
+
+ rSRD.SetColRel( bColRel );
+ rSRD.SetRowRel( bRowRel );
+
+ if( bName )
+ {
+ // C O L
+ if( bColRel )
+ // rel Col
+ rSRD.nRelCol = ( INT8 ) nCol;
+ else
+ // abs Col
+ rSRD.nCol = nCol;
+
+ // R O W
+ if( bRowRel )
+ // rel Row
+ rSRD.nRelRow = ( INT16 ) nRow;
+ else
+ // abs Row
+ rSRD.nRow = nRow;
+
+ // T A B
+ // #67965# abs needed if rel in shared formula for ScCompiler UpdateNameReference
+ if ( rSRD.IsTabRel() && !rSRD.IsFlag3D() )
+ rSRD.nTab = *pExcRoot->pAktTab;
+ }
+ else
+ {
+ // C O L
+ if ( bColRel )
+ rSRD.nRelCol = (INT16) nCol - aEingPos.Col();
+ else
+ rSRD.nCol = nCol;
+
+ // R O W
+ if ( bRowRel )
+ rSRD.nRelRow = (INT16) nRow - aEingPos.Row();
+ else
+ rSRD.nRow = nRow;
+ }
+}
+
+
+BOOL ExcelToSc8::GetAbsRefs( SvStream& rIn, INT32& nBytesLeft, ScRangeList& r )
+{
+ UINT8 nOp;
+ UINT16 nRow1, nRow2, nCol1, nCol2, nTab1, nTab2;
+ UINT16 nIxti;
+
+ const XtiBuffer& rXtiBuffer = *pExcRoot->pXtiBuffer;
+ const SupbookBuffer& rSupbookBuffer = *pExcRoot->pSupbookBuffer;
+ const Xti* pXti;
+ UINT32 nSeek;
+
+ while( nBytesLeft > 0 )
+ {
+ rIn >> nOp;
+ nBytesLeft--;
+ nSeek = 0;
+
+ switch( nOp )
+ {
+ case 0x44:
+ case 0x64:
+ case 0x24: // Cell Reference [319 270]
+ case 0x4C:
+ case 0x6C:
+ case 0x2C: // Cell Reference Within a Name [323 ]
+ // Cell Reference Within a Shared Formula[ 273]
+ aIn >> nRow1 >> nCol1;
+ nBytesLeft -= 4;
+
+ nRow2 = nRow1;
+ nCol2 = nCol1;
+ nTab1 = nTab2 = *pExcRoot->pAktTab;
+ goto _common;
+ case 0x45:
+ case 0x65:
+ case 0x25: // Area Reference [320 270]
+ case 0x4D:
+ case 0x6D:
+ case 0x2D: // Area Reference Within a Name [324 ]
+ // Area Reference Within a Shared Formula[ 274]
+ aIn >> nRow1 >> nRow2 >> nCol1 >> nCol2;
+ nBytesLeft -= 8;
+
+ nTab1 = nTab2 = *pExcRoot->pAktTab;
+ goto _common;
+ case 0x5A:
+ case 0x7A:
+ case 0x3A: // 3-D Cell Reference [ 275]
+ aIn >> nIxti >> nRow1 >> nCol1;
+ nBytesLeft -= 6;
+
+ nRow2 = nRow1;
+ nCol2 = nCol1;
+
+ goto _3d_common;
+ case 0x5B:
+ case 0x7B:
+ case 0x3B: // 3-D Area Reference [ 276]
+ aIn >> nIxti >> nRow1 >> nRow2 >> nCol1 >> nCol2;
+ nBytesLeft -= 10;
+
+ _3d_common:
+ pXti = rXtiBuffer.Get( nIxti );
+
+ if( pXti )
+ {
+ const SupbookE* pSbE = rSupbookBuffer.Get( pXti->nSupbook );
+
+ nTab1 = pXti->nFirst;
+ nTab2 = pXti->nLast;
+ }
+ else
+ break;
+
+ goto _common;
+ _common:
+ if( !( nCol1 & 0xC000 ) || ( nCol2 & 0xC000 ) )
+ r.Insert(
+ new ScRange( ScAddress( nCol1, nRow1, nTab1 ), ScAddress( nCol2, nRow2, nTab2 ) ),
+ LIST_APPEND );
+ break;
+ case 0x1C: // Error Value [314 266]
+ case 0x1D: // Boolean [315 266]
+ nSeek = 1;
+ break;
+ case 0x1E: // Integer [315 266]
+ case 0x41:
+ case 0x61:
+ case 0x21: // Function, Fixed Number of Arguments [333 282]
+ case 0x49:
+ case 0x69:
+ case 0x29: // Variable Reference Subexpression [331 281]
+ case 0x4E:
+ case 0x6E:
+ case 0x2E: // Reference Subexpression Within a Name [332 282]
+ case 0x4F:
+ case 0x6F:
+ case 0x2F: // Incomplete Reference Subexpression... [332 282]
+ case 0x58:
+ case 0x78:
+ case 0x38: // Command-Equivalent Function [333 ]
+ nSeek = 2;
+ break;
+ case 0x42:
+ case 0x62:
+ case 0x22: // Function, Variable Number of Arg. [333 283]
+ nSeek = 3;
+ break;
+ case 0x01: // Array Formula [325 ]
+ case 0x02: // Data Table [325 277]
+ case 0x43:
+ case 0x63:
+ case 0x23: // Name [318 269]
+ case 0x4A:
+ case 0x6A:
+ case 0x2A: // Deleted Cell Reference [323 273]
+ nSeek = 4;
+ break;
+ case 0x46:
+ case 0x66:
+ case 0x26: // Constant Reference Subexpression [321 271]
+ case 0x47:
+ case 0x67:
+ case 0x27: // Erroneous Constant Reference Subexpr. [322 272]
+ case 0x48:
+ case 0x68:
+ case 0x28: // Incomplete Constant Reference Subexpr.[331 281]
+ case 0x5C:
+ case 0x7C:
+ case 0x3C: // Deleted 3-D Cell Reference [ 277]
+ nSeek = 6;
+ break;
+ case 0x40:
+ case 0x60:
+ case 0x20: // Array Constant [317 268]
+ nSeek = 7;
+ break;
+ case 0x1F: // Number [315 266]
+ case 0x4B:
+ case 0x6B:
+ case 0x2B: // Deleted Area Refernce [323 273]
+ nSeek = 8;
+ break;
+ case 0x5D:
+ case 0x7D:
+ case 0x3D: // Deleted 3-D Area Reference [ 277]
+ nSeek = 10;
+ break;
+ case 0x59:
+ case 0x79:
+ case 0x39: // Name or External Name [ 275]
+ nSeek = 24;
+ break;
+ case 0x17: // String Constant [314 266]
+ {
+ UINT8 nLen;
+ rIn >>nLen;
+ nBytesLeft--;
+
+ if( nLen )
+ {
+ ::SkipUnicodeString( rIn, nBytesLeft, nLen );
+ nSeek = 0;
+ }
+ else
+ nSeek = 1;
+ }
+ break;
+ case 0x19: // Special Attribute [327 279]
+ {
+ UINT16 nData;
+ UINT8 nOpt;
+ rIn >> nOpt >> nData;
+ nBytesLeft -= sizeof( nOpt ) + sizeof( nData );
+ if( nOpt & 0x04 )
+ {// nFakt -> Bytes oder Words ueberlesen AttrChoose
+ nData++;
+ nSeek = nData * 2;
+ }
+ }
+ break;
+ }
+
+ rIn.SeekRel( nSeek );
+ nBytesLeft -= nSeek;
+ }
+
+ return r.Count() != 0;
+}
+
+
+
+
+
diff --git a/sc/source/filter/excel/excimp8.cxx b/sc/source/filter/excel/excimp8.cxx
new file mode 100644
index 000000000000..96025bb51422
--- /dev/null
+++ b/sc/source/filter/excel/excimp8.cxx
@@ -0,0 +1,3384 @@
+/*************************************************************************
+ *
+ * $RCSfile: excimp8.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#ifndef SC_ITEMS_HXX
+#include <scitems.hxx>
+#endif
+
+#include <offmgr/fltrcfg.hxx>
+#include <offmgr/app.hxx>
+
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <sfx2/docfile.hxx>
+#include <sfx2/objsh.hxx>
+#include <svx/editdata.hxx>
+#include <svx/editeng.hxx>
+#include <svx/editobj.hxx>
+#include <svx/editstat.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/colritem.hxx>
+#include <svx/udlnitem.hxx>
+#include <svx/wghtitem.hxx>
+#include <svx/postitem.hxx>
+#include <svx/crsditem.hxx>
+#include <svx/flditem.hxx>
+#include <svx/xflclit.hxx>
+#include <svx/msdffdef.hxx>
+#include <svx/svxmsbas.hxx>
+
+#include <svx/svdorect.hxx>
+#include <svx/svdogrp.hxx>
+#include <svx/svdpage.hxx>
+
+
+#include <tools/string.hxx>
+#include <tools/urlobj.hxx>
+#include <tools/solmath.hxx>
+
+#ifndef SC_DRWLAYER_HXX
+#include <drwlayer.hxx>
+#endif
+
+#include "cell.hxx"
+#include "document.hxx"
+#include "patattr.hxx"
+#include "docpool.hxx"
+#include "attrib.hxx"
+#include "conditio.hxx"
+#include "validat.hxx"
+#include "dbcolect.hxx"
+#include "editutil.hxx"
+
+#include "excimp8.hxx"
+#include "xfbuff.hxx"
+#include "vfbuff.hxx"
+#include "fontbuff.hxx"
+#include "excform.hxx"
+#include "spstring.hxx"
+#include "fltprgrs.hxx"
+#include "flttools.hxx"
+#include "scextopt.hxx"
+#include "stlpool.hxx"
+
+
+extern const sal_Char* pVBAStorageName;
+extern const sal_Char* pVBASubStorageName;
+
+ExcStreamConsumer::ExcStreamConsumer() :
+ pStrm ( NULL ),
+ pNode ( NULL ),
+ nBytesLeft ( 0 )
+{
+};
+
+ExcStreamConsumer::~ExcStreamConsumer()
+{
+ delete pStrm;
+ while ( pNode )
+ RemoveNode();
+}
+
+void ExcStreamConsumer::UpdateNode( const DffRecordHeader& rHd )
+{
+ while ( pNode && ( ( pNode->nPos + pNode->nSize ) <= rHd.nFilePos ) )
+ RemoveNode();
+ ExcStreamNode* pTemp = pNode;
+ pNode = new ExcStreamNode;
+ pNode->nPos = rHd.nFilePos;
+ pNode->nSize = rHd.nRecLen + 8;
+ pNode->pPrev = pTemp;
+}
+
+void ExcStreamConsumer::RemoveNode()
+{
+ ExcStreamNode* pTemp = pNode;
+ pNode = pNode->pPrev;
+ delete pTemp;
+}
+
+const DffRecordHeader* ExcStreamConsumer::Consume( SvStream* pS, sal_uInt32 nLen )
+{
+ DffRecordHeader* pRetValue = NULL;
+ if ( pS )
+ {
+ sal_uInt32 nEntry = ( pStrm ) ? pStrm->Tell() : 0;
+ sal_Bool bOwnsStream = ( nLen == 0 );
+
+ if ( !nLen )
+ {
+ pS->Seek( STREAM_SEEK_TO_END );
+ nLen = pS->Tell();
+ if ( !nLen )
+ {
+ delete pS;
+ return NULL;
+ }
+ pS->Seek( 0 );
+ }
+ if ( bOwnsStream && ( pStrm == NULL ) )
+ {
+ pStrm = pS;
+ pStrm->Seek( STREAM_SEEK_TO_END );
+ }
+ else
+ {
+ if ( ( bOwnsStream == FALSE ) && ( pStrm == NULL ) )
+ pStrm = new SvMemoryStream;
+ if ( pStrm )
+ {
+ sal_Char* pBuf = new sal_Char[ nLen ];
+ pS->Read( pBuf, nLen );
+ pStrm->Write( pBuf, nLen );
+ delete [] pBuf;
+ if ( bOwnsStream )
+ delete pS;
+ }
+ else
+ pStrm = pS;
+ }
+ sal_uInt32 nPos = pStrm->Tell();
+ pStrm->Seek( nEntry );
+ if ( nBytesLeft )
+ {
+ if ( nLen < nBytesLeft )
+ {
+ pStrm->SeekRel( nLen );
+ nBytesLeft -= nLen;
+ }
+ else
+ {
+ pStrm->SeekRel( nBytesLeft );
+ nBytesLeft = 0;
+ }
+ }
+ while ( pStrm->Tell() < nPos )
+ {
+ *pStrm >> aHd;
+ if ( aHd.IsContainer() )
+ UpdateNode( aHd );
+ else
+ {
+ if ( ( pStrm->Tell() + aHd.nRecLen ) <= nPos )
+ pStrm->SeekRel( aHd.nRecLen );
+ else
+ {
+ nBytesLeft = ( pStrm->Tell() + aHd.nRecLen ) - nPos;
+ pStrm->Seek( nPos );
+ }
+ }
+ }
+ if ( !nBytesLeft )
+ pRetValue = &aHd;
+ pStrm->Seek( nPos );
+ }
+ return pRetValue;
+}
+
+sal_Bool ExcStreamConsumer::AppendData( sal_Char* pBuf, sal_uInt32 nLen )
+{
+ sal_Bool bRetValue = FALSE;
+ if ( aHd.nRecType && ( aHd.IsContainer() == FALSE ) && ( nBytesLeft == 0 ) )
+ {
+ while ( pNode && ( ( pNode->nPos + pNode->nSize ) <= aHd.nFilePos ) )
+ RemoveNode();
+ ExcStreamNode* pTemp = pNode;
+ while ( pTemp )
+ {
+ pTemp->nSize += nLen; // updating container sizes
+ pStrm->Seek( pTemp->nPos + 4 );
+ *pStrm << ( pTemp->nSize - 8 );
+ pTemp = pTemp->pPrev;
+ }
+ aHd.nRecLen += nLen;
+ pStrm->Seek( aHd.nFilePos + 4 ); // updating atom size
+ *pStrm << aHd.nRecLen;
+ pStrm->Seek( STREAM_SEEK_TO_END );
+ pStrm->Write( pBuf, nLen );
+ return TRUE;
+ }
+ return bRetValue;
+}
+
+struct PosBufferCont
+{
+ const UINT32 nStart;
+ const UINT32 nEnd;
+ const UINT32 nObjNum;
+ const UINT16 nTabNum;
+
+ ClientAnchorData* pAnchDat;
+
+ inline PosBufferCont( const UINT32 nS, const UINT32 nE, const UINT32 nO,
+ const UINT16 nTab );
+ inline ~PosBufferCont();
+ inline BOOL IsInRange( const UINT32 n ) const;
+ inline void SetAnchor( ClientAnchorData* p );
+};
+
+
+inline PosBufferCont::PosBufferCont( const UINT32 nS, const UINT32 nE, const UINT32 nO,
+ const UINT16 nTab ) :
+ nStart( nS ), nEnd( nE ), nObjNum( nO ), pAnchDat( NULL ), nTabNum( nTab )
+{
+}
+
+
+inline PosBufferCont::~PosBufferCont()
+{
+ if( pAnchDat )
+ delete pAnchDat;
+}
+
+
+inline BOOL PosBufferCont::IsInRange( const UINT32 n ) const
+{
+ return ( n >= nStart && n <= nEnd );
+}
+
+
+inline void PosBufferCont::SetAnchor( ClientAnchorData* p )
+{
+ p->nTab = nTabNum;
+
+ if( pAnchDat )
+ delete pAnchDat;
+ pAnchDat = p;
+}
+
+
+
+Biff8MSDffManager::Biff8MSDffManager(
+ RootData* p,
+ PosBuffer& rPosBuffer,
+ ExcEscherObjList& rEOL,
+ SvStream& rStCtrl,
+ long nOffsDgg,
+ SvStream* pStData,
+ SdrModel* pSdrModel_,
+ long nApplicationScale,
+ ColorData mnDefaultColor_,
+ ULONG nDefaultFontHeight_,
+ SvStream* pStData2_ ) :
+ ExcRoot( p ),
+ rPosBuff( rPosBuffer ),
+ rEscherObjList( rEOL ),
+ SvxMSDffManager( rStCtrl, nOffsDgg, pStData, pSdrModel_, nApplicationScale, mnDefaultColor_,
+ nDefaultFontHeight_, pStData2_ )
+{
+ SetSvxMSDffSettings( SVXMSDFF_SETTINGS_CROP_BITMAPS | SVXMSDFF_SETTINGS_IMPORT_EXCEL );
+}
+
+
+Biff8MSDffManager::~Biff8MSDffManager()
+{
+}
+
+
+void Biff8MSDffManager::ProcessClientAnchor2( SvStream& rStr, DffRecordHeader& rH, void*, DffObjData& rD )
+{
+ rH.SeekToContent( rStr );
+ rStr.SeekRel( 2 );
+ UINT32 nFilePos = rStr.Tell();
+
+ ClientAnchorData* p = new ClientAnchorData;
+
+ if( rPosBuff.SetAnchorData( rStr.Tell(), p ) )
+ {
+ rStr >> p->nCol >> p->nX >> p->nRow >> p->nY >> p->nDCol >> p->nDX >> p->nDRow >> p->nDY;
+
+ const UINT16 nAnchTab = p->nTab;
+ const UINT16 nAnchRow = p->nRow;
+ const UINT16 nAnchCol = p->nCol;
+ ScDocument* pDoc = pExcRoot->pDoc;
+
+ Rectangle& rRect = rD.aChildAnchor;
+ rRect.nLeft = CalcX( nAnchTab, nAnchCol, p->nX, HMM_PER_TWIPS, pDoc );
+ rRect.nTop = CalcY( nAnchTab, nAnchRow, p->nY, HMM_PER_TWIPS, pDoc );
+ rRect.nRight = CalcX( nAnchTab, p->nDCol, p->nDX, HMM_PER_TWIPS, pDoc );
+ rRect.nBottom = CalcY( nAnchTab, p->nDRow, p->nDY, HMM_PER_TWIPS, pDoc );
+
+ rD.bChildAnchor = TRUE;
+
+ UINT32 nObjNum;
+ if( rPosBuff.GetObjNum( nFilePos, nObjNum ) )
+ {
+ ExcEscherObj* pObj = (ExcEscherObj*) rEscherObjList.Get( nObjNum );
+ if ( pObj )
+ {
+ pObj->SetAnchor( rRect );
+ if ( pObj->GetObjType() == OT_OLE )
+ {
+ ((ExcEscherOle*)pObj)->SetBlipId( GetPropertyValue( DFF_Prop_pib ) );
+ }
+ }
+ }
+ }
+ else
+ delete p;
+}
+
+
+SdrObject* Biff8MSDffManager::ProcessObj(
+ SvStream& rSt, DffObjData& rObjData, void* pData, Rectangle& rTextRect, SdrObject* pRet )
+{
+ if( pRet && ( GetPropertyValue( DFF_Prop_fNoFillHitTest ) & 0x10 ) &&
+ ( IsProperty( DFF_Prop_fillColor ) == 0 ) )
+ { // maybe if there is no color, we could do this in ApplyAttributes ( writer ?, calc ? )
+ SfxItemSet* pSet = new SfxItemSet( pSdrModel->GetItemPool() );
+ pSet->Put( XFillColorItem( XubString(), Color( 0xffffff ) ) );
+ pRet->NbcSetAttributes( *pSet, FALSE );
+ delete pSet;
+ }
+
+ if( maShapeRecords.SeekToContent( rSt, DFF_msofbtClientData, SEEK_FROM_CURRENT_AND_RESTART ) )
+ {
+ const DffRecordHeader* pHd = maShapeRecords.Current();
+ sal_Bool bDummy = FALSE;
+ }
+
+ if( maShapeRecords.SeekToContent( rSt, DFF_msofbtClientTextbox, SEEK_FROM_CURRENT_AND_RESTART ) )
+ {
+ const DffRecordHeader* pHd = maShapeRecords.Current();
+ sal_Bool bDummy = FALSE;
+ }
+
+ UINT32 nTextId = GetPropertyValue( DFF_Prop_lTxid, 0 );
+ if( nTextId )
+ {
+ if( rObjData.eShapeType == mso_sptRectangle )
+ delete pRet, pRet = NULL;
+
+ SdrObject* pTObj = NULL;
+
+ // Abstaende an den Raendern der Textbox lesen
+
+ INT32 nDefault = 92076;
+ if( GetPropertyValue( DFF_Prop_FitTextToShape ) & 0x08 )
+ nDefault = 20000; // auto default
+
+ INT32 nTextLeft = GetPropertyValue( DFF_Prop_dxTextLeft, nDefault );
+ INT32 nTextRight = GetPropertyValue( DFF_Prop_dxTextRight, nDefault );
+ INT32 nTextTop = GetPropertyValue( DFF_Prop_dyTextTop, nDefault / 2 );
+ INT32 nTextBottom = GetPropertyValue( DFF_Prop_dyTextBottom, nDefault / 2 );
+ ScaleEmu( nTextLeft );
+ ScaleEmu( nTextRight );
+ ScaleEmu( nTextTop );
+ ScaleEmu( nTextBottom );
+ // Die vertikalen Absatzeinrueckungen sind im BoundRect mit drin, hier rausrechnen
+ rTextRect.Bottom() -= nTextTop + nTextBottom;
+
+ INT32 nTextRotationAngle = 0;
+ if( IsProperty( DFF_Prop_txflTextFlow ) )
+ {
+ MSO_TextFlow eTextFlow = (MSO_TextFlow)( GetPropertyValue( DFF_Prop_txflTextFlow ) & 0xFFFF );
+ switch( eTextFlow )
+ {
+ case mso_txflBtoT : // Bottom to Top non-@, unten -> oben
+ nTextRotationAngle = 9000;
+ break;
+ case mso_txflTtoBA : /* #68110# */ // Top to Bottom @-font, oben -> unten
+ case mso_txflTtoBN : // Top to Bottom non-@, oben -> unten
+ case mso_txflVertN : // Vertical, non-@, oben -> unten
+ nTextRotationAngle = 27000;
+ break;
+ case mso_txflHorzN : // Horizontal non-@, normal
+ case mso_txflHorzA : // Horizontal @-font, normal
+ default :
+ nTextRotationAngle = 0;
+ break;
+ }
+ if( nTextRotationAngle )
+ {
+ if( rObjData.nSpFlags & SP_FFLIPV )
+ {
+ if( nTextRotationAngle == 9000 )
+ nTextRotationAngle = 27000;
+ else if( nTextRotationAngle == 27000 )
+ nTextRotationAngle = 9000;
+ }
+ Point nCenter( rTextRect.Center() );
+ long nDX = rTextRect.Right() - rTextRect.Left();
+ long nDY = rTextRect.Bottom() - rTextRect.Top();
+ rTextRect.Left() = nCenter.X() - nDY/2;
+ rTextRect.Top() = nCenter.Y() - nDX/2;
+ rTextRect.Right() = rTextRect.Left() + nDY;
+ rTextRect.Bottom() = rTextRect.Top() + nDX;
+ }
+ }
+ pTObj = new SdrRectObj( OBJ_TEXT, rTextRect );
+
+
+ if( nTextRotationAngle )
+ {
+ double f = nTextRotationAngle * nPi180;
+ pTObj->NbcRotate( rTextRect.Center(), nTextRotationAngle, sin( f ), cos( f ) );
+ }
+
+ SfxItemSet aSet( pSdrModel->GetItemPool() );
+ if( !pRet )
+ {
+ if( ( GetPropertyValue( DFF_Prop_fNoFillHitTest ) & 0x10 ) &&
+ ( IsProperty( DFF_Prop_fillColor ) == 0 ) )
+ { // maybe if there is no color, we could do this in ApplyAttributes ( writer ?, calc ? )
+ SfxItemSet* pSet = new SfxItemSet( pSdrModel->GetItemPool() );
+ pSet->Put( XFillColorItem( XubString(), Color( 0xffffff ) ) );
+ pTObj->NbcSetAttributes( *pSet, FALSE );
+ delete pSet;
+ }
+
+ ((SvxMSDffManager*)this)->ApplyAttributes( rSt, aSet, pTObj );
+ }
+ switch( (MSO_WrapMode)GetPropertyValue( DFF_Prop_WrapText, mso_wrapSquare ) )
+ {
+ case mso_wrapNone :
+ {
+ if( GetPropertyValue( DFF_Prop_FitTextToShape ) & 2 ) // be sure this is FitShapeToText
+ aSet.Put( SdrTextAutoGrowWidthItem( TRUE ) );
+ }
+ break;
+
+ case mso_wrapByPoints :
+ aSet.Put( SdrTextContourFrameItem( TRUE ) );
+ break;
+ }
+
+ // Abstaende an den Raendern der Textbox setzen
+ aSet.Put( SdrTextLeftDistItem( nTextLeft ) );
+ aSet.Put( SdrTextRightDistItem( nTextRight ) );
+ aSet.Put( SdrTextUpperDistItem( nTextTop ) );
+ aSet.Put( SdrTextLowerDistItem( nTextBottom ) );
+
+ // Textverankerung lesen
+ if( IsProperty( DFF_Prop_anchorText ) )
+ {
+ MSO_Anchor eTextAnchor = (MSO_Anchor)GetPropertyValue( DFF_Prop_anchorText );
+
+ SdrTextVertAdjust eTVA = SDRTEXTVERTADJUST_CENTER;
+ BOOL bTVASet = FALSE;
+ SdrTextHorzAdjust eTHA = SDRTEXTHORZADJUST_CENTER;
+ BOOL bTHASet = FALSE;
+
+ switch( eTextAnchor )
+ {
+ case mso_anchorTop:
+ {
+ eTVA = SDRTEXTVERTADJUST_TOP;
+ bTVASet = TRUE;
+ }
+ break;
+ case mso_anchorTopCentered:
+ {
+ eTVA = SDRTEXTVERTADJUST_TOP;
+ bTVASet = TRUE;
+ bTHASet = TRUE;
+ }
+ break;
+
+ case mso_anchorMiddle:
+ bTVASet = TRUE;
+ break;
+ case mso_anchorMiddleCentered:
+ {
+ bTVASet = TRUE;
+ bTHASet = TRUE;
+ }
+ break;
+ case mso_anchorBottom:
+ {
+ eTVA = SDRTEXTVERTADJUST_BOTTOM;
+ bTVASet = TRUE;
+ }
+ break;
+ case mso_anchorBottomCentered:
+ {
+ eTVA = SDRTEXTVERTADJUST_BOTTOM;
+ bTVASet = TRUE;
+ bTHASet = TRUE;
+ }
+ break;
+ }
+
+ // Einsetzen
+ if( bTVASet )
+ aSet.Put( SdrTextVertAdjustItem( eTVA ) );
+ if( bTHASet )
+ aSet.Put( SdrTextHorzAdjustItem( eTHA ) );
+ }
+
+ aSet.Put( SdrTextMinFrameHeightItem( rTextRect.Bottom() - rTextRect.Top() ) );
+ pTObj->SetModel( pSdrModel );
+ pTObj->NbcSetAttributes( aSet, FALSE );
+
+
+ UINT32 nObjNum;
+
+ if( rPosBuff.GetObjNum( rObjData.rSpHd.nFilePos, nObjNum ) )
+ {
+ ExcEscherTxo* pExcTxoObj = rEscherObjList.GetTxo( nObjNum );
+ if( pExcTxoObj )
+ pExcTxoObj->Apply( pTObj );
+ }
+
+ if( pTObj )
+ { // rotate text with shape ?
+ if( mnFix16Angle )
+ {
+ double f = mnFix16Angle * nPi180;
+ pTObj->NbcRotate( rObjData.rBoundRect.Center(), mnFix16Angle, sin( f ), cos( f ) );
+ }
+
+ if( pRet )
+ {
+ SdrObject* pGroup = new SdrObjGroup;
+ pGroup->GetSubList()->NbcInsertObject( pRet );
+ pGroup->GetSubList()->NbcInsertObject( pTObj );
+ pRet = pGroup;
+ }
+ else
+ pRet = pTObj;
+ }
+// if( !rObjData.bCalledByGroup )
+ if( ( rObjData.nCalledByGroup == 0 )
+ ||
+ ( (rObjData.nSpFlags & SP_FGROUP)
+ && (rObjData.nCalledByGroup < 2) )
+ )
+ StoreShapeOrder( rObjData.nShapeId, nTextId, pRet );
+ }
+ return pRet;
+}
+
+
+ULONG Biff8MSDffManager::Calc_nBLIPPos( ULONG nOrgVal, ULONG nStreamPos ) const
+{
+ return nStreamPos + 4;
+}
+
+
+FASTBOOL Biff8MSDffManager::GetColorFromPalette( USHORT n, Color& r) const
+{
+ const SvxColorItem* p = pExcRoot->pColor->GetColor( n, FALSE );
+
+ if( p )
+ {
+ r = p->GetValue();
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+
+BOOL Biff8MSDffManager::ShapeHasText( ULONG nShapeId, ULONG nFilePos ) const
+{
+ UINT32 n;
+
+ if( rPosBuff.GetObjNum( nFilePos, n ) )
+ {
+ const ExcEscherObj* p = rEscherObjList.Get( n );
+ if( p && p->GetObjType() == OT_TXO )
+ {
+ return ( ( const ExcEscherTxo* ) p )->GetText() != NULL;
+ }
+ }
+
+ return FALSE;
+}
+
+
+
+
+String ImportExcel8::aSstErrTxt( _STRINGCONST( "*** ERROR IN SST ***" ) );
+
+#define INVALID_POS 0xFFFFFFFF
+
+
+
+void TxoCont::ReadTxo( SvStream& r )
+{
+ if( !nStepCount )
+ {
+ r.SeekRel( 10 );
+ r >> nTextLen >> nFormCnt;
+
+ nStepCount = 1;
+ }
+}
+
+
+void TxoCont::ReadCont( SvStream& r, RootData& rRD, ScEditEngineDefaulter& rEdEngine )
+{
+ if( nStepCount == 1 )
+ {// Record mit Text
+ if( nTextLen )
+ {
+ if( !pText )
+ {
+ INT32 nDummy = 0xFFFF;
+ pText = new String( ::ReadUnicodeString( r, nDummy, *rRD.pCharset, nTextLen ) );
+ }
+ }
+
+ nStepCount = 2;
+ }
+ else if( nStepCount == 2 /*&& nFormCnt*/ )
+ {
+// DBG_ASSERT( nFormCnt >= 2, "TxoCont::ReadCont(): Das war nicht abgemacht!" );
+
+ if( pText )
+ {
+ SvMemoryStream aHelpStr;
+
+ if( nFormCnt )
+ nFormCnt--;
+
+ UINT32 n = nFormCnt;
+ UINT16 nChar, nFont;
+
+ while( n )
+ {
+ r >> nChar >> nFont;
+ r.SeekRel( 4 );
+
+ aHelpStr << nChar << nFont;
+
+ n--;
+ }
+
+ aHelpStr.Seek( 0 );
+
+ INT32 nDummy1 = 0xFFFF;
+ ShStrTabFormEntry aHelpObj( *pText, aHelpStr, nDummy1, nFormCnt );
+
+ DBG_ASSERT( !pFormText, "TxoCont::ReadCont(): Ich bin doch nicht alleine!!" );
+
+ pFormText = aHelpObj.CreateEditTextObject( rEdEngine, *rRD.pFontBuffer );
+ }
+
+ nStepCount = 3;
+ }
+ else
+ {
+ DBG_ERROR( "TxoCont::ReadCont(): Stop Du Verkehrs-Rowdy!" );
+ }
+}
+
+
+TxoCont::~TxoCont()
+{
+ if( pText )
+ delete pText;
+ if( pFormText )
+ delete pFormText;
+}
+
+
+void TxoCont::Clear( void )
+{
+ if( pText )
+ {
+ delete pText;
+ pText = NULL;
+ }
+ if( pFormText )
+ {
+ delete pFormText;
+ pFormText = NULL;
+ }
+
+ nTextLen = nFormCnt = 0;
+ nStepCount = 0;
+}
+
+
+
+
+PosBuffer::~PosBuffer()
+{
+ PosBufferCont* p = ( PosBufferCont* ) List::First();
+
+ while( p )
+ {
+ delete p;
+ p = ( PosBufferCont* ) List::Next();
+ }
+}
+
+
+void PosBuffer::Append( const UINT32 nS, const UINT32 nE, const UINT32 n, const UINT16 nT )
+{
+ List::Insert( new PosBufferCont( nS, nE, n, nT ), LIST_APPEND );
+}
+
+
+BOOL PosBuffer::GetObjNum( const UINT32 n, UINT32& r )
+{
+ const PosBufferCont* p = ( const PosBufferCont* ) List::First();
+
+ while( p )
+ {
+ if( p->IsInRange( n ) )
+ {
+ r = p->nObjNum;
+ return TRUE;
+ }
+
+ p = ( const PosBufferCont* ) List::Next();
+ }
+
+ return FALSE;
+}
+
+
+BOOL PosBuffer::SetAnchorData( const UINT32 n, ClientAnchorData* pData )
+{
+ PosBufferCont* p = ( PosBufferCont* ) List::First();
+
+ while( p )
+ {
+ if( p->IsInRange( n ) )
+ {
+ p->SetAnchor( pData );
+ return TRUE;
+ }
+
+ p = ( PosBufferCont* ) List::Next();
+ }
+
+ return FALSE;
+}
+
+
+const ClientAnchorData* PosBuffer::GetAnchorData( const UINT32 nObjNum ) const
+{
+ UINT32 n = 0;
+ const PosBufferCont* p = ( const PosBufferCont* ) List::GetObject( n );
+
+ while( p )
+ {
+ if( p->nObjNum == nObjNum )
+ return p->pAnchDat;
+
+ n++;
+ p = ( const PosBufferCont* ) List::GetObject( n );
+ }
+
+ return NULL;
+}
+
+
+
+
+ExcCondForm::ExcCondForm( RootData* p ) : ExcRoot( p )
+{
+ nTab = *p->pAktTab;
+ nCol = nRow = 0;
+ nNumOfConds = nCondCnt = 0;
+ pScCondForm = NULL;
+ pRangeList = new ScRangeList;
+}
+
+
+ExcCondForm::~ExcCondForm()
+{
+ delete pRangeList;
+}
+
+
+void ExcCondForm::Read( SvStream& rIn )
+{
+ rIn >> nNumOfConds;
+ rIn.SeekRel( 2 );
+ rIn >> nRow;
+ rIn.SeekRel( 2 );
+ rIn >> nCol;
+ rIn.SeekRel( 2 );
+
+ UINT16 nRngCnt, nR1, nR2, nC1, nC2;
+ rIn >> nRngCnt;
+ while( nRngCnt )
+ {
+ rIn >> nR1 >> nR2 >> nC1 >> nC2;
+
+ pRangeList->Append( ScRange( nC1, nR1, nTab, nC2, nR2, nTab ) );
+
+ nRngCnt--;
+ }
+}
+
+
+void ExcCondForm::ReadCf( SvStream& rIn, const UINT16 nRecLen, ExcelToSc& rConv )
+{
+ if( nNumOfConds )
+ {
+ nNumOfConds--;
+
+ const UINT32 nRecPos = rIn.Tell();
+ UINT8 nFormType, nFormOperator;
+ UINT16 nLenForm1, nLenForm2;
+ ULONG nDummy;
+
+ rIn >> nFormType >> nFormOperator >> nLenForm1 >> nLenForm2;
+
+ ScConditionMode eMode;
+ BOOL bValid = FALSE;
+ BOOL bSingForm = TRUE;
+
+ if( nFormType == 0x01 )
+ {// compare
+ bValid = TRUE;
+
+ switch( nFormOperator )
+ {
+ case 0x01: eMode = SC_COND_BETWEEN; bSingForm = FALSE; break;
+ case 0x02: eMode = SC_COND_NOTBETWEEN; bSingForm = FALSE; break;
+ case 0x03: eMode = SC_COND_EQUAL; break;
+ case 0x04: eMode = SC_COND_NOTEQUAL; break;
+ case 0x05: eMode = SC_COND_GREATER; break;
+ case 0x06: eMode = SC_COND_LESS; break;
+ case 0x07: eMode = SC_COND_EQGREATER; break;
+ case 0x08: eMode = SC_COND_EQLESS; break;
+ default: eMode = SC_COND_NONE;
+ }
+ }
+ else if( nFormType == 0x02 )
+ {
+ bValid = TRUE;
+ eMode = SC_COND_DIRECT;
+ }
+
+ if( bValid )
+ {
+ UINT16 nFormatsLen = nLenForm1 + nLenForm2 + 6;
+ if( nFormatsLen > nRecLen )
+ return;
+
+ nFormatsLen = nRecLen - nFormatsLen; // >0!
+
+ ScDocument* pDoc = pExcRoot->pDoc;
+ String aStyle( pExcRoot->GetCondFormStyleName( nCondCnt ) );
+
+ const ScTokenArray* pFrmla1 = NULL;
+ const ScTokenArray* pFrmla2 = NULL;
+ INT32 nAnzBytes;
+
+ ScAddress aPos( nCol, nRow, nTab );
+
+ if( !pScCondForm )
+ {
+ nDummy = 0;
+ pScCondForm = new ScConditionalFormat( nDummy, pDoc );
+ }
+
+ // create style
+ UINT32 nPosF = rIn.Tell();
+ UINT32 nPosL = nPosF;
+ UINT32 nPosP = nPosF;
+
+ switch( nFormatsLen )
+ {
+ case 10: nPosF = 0; nPosL = 0; nPosP += 7; break; // P
+ case 14: nPosF = 0; nPosL += 6; nPosP = 0; break; // L
+ case 18: nPosF = 0; nPosL += 6; nPosP += 15; break; // L + P
+ case 124: nPosF += 74; nPosL = 0; nPosP = 0; break; // F
+ case 128: nPosF += 74; nPosL = 0; nPosP += 125; break; // F + P
+ case 132: nPosF += 74; nPosL += 124; nPosP = 0; break; // F + L
+ case 136: nPosF += 74; nPosL += 124; nPosP += 133; break; // F + L + P
+ default: nPosF = 0; nPosL = 0; nPosP = 0;
+ }
+
+ SfxItemSet& rStyleItemSet = pDoc->GetStyleSheetPool()->Make(
+ aStyle, SFX_STYLE_FAMILY_PARA,
+ SFXSTYLEBIT_USERDEF ).GetItemSet();
+
+ ColorBuffer& rColBuff = *pExcRoot->pColor;
+
+ if( nPosF )
+ {
+ UINT8 nAttr1, nAttr2, nAttr3, nUnder;
+ UINT16 nBold;
+ UINT32 nCol;
+ rIn.Seek( nPosF );
+ rIn >> nAttr1; // italic / strike out
+ rIn.SeekRel( 3 );
+ rIn >> nBold; // boldness
+ rIn.SeekRel( 2 );
+ rIn >> nUnder; // num of underlines
+ rIn.SeekRel( 3 );
+ rIn >> nCol; // color
+ rIn.SeekRel( 4 );
+ rIn >> nAttr2; // strike out DC + italic/bold DC
+ rIn.SeekRel( 7 );
+ rIn >> nAttr3; // underline DC
+
+ BOOL bItalic = nAttr1 & 0x02;
+ BOOL bStrikeOut = nAttr1 & 0x80;
+
+ BOOL bHasColor = ( nCol != 0xFFFFFFFF );
+ BOOL bHasBoldItalic = !TRUEBOOL( nAttr2 & 0x02 );
+ BOOL bHasStrikeOut = !TRUEBOOL( nAttr2 & 0x80 );
+ BOOL bHasUnderline = !TRUEBOOL( nAttr3 & 0x01 );
+
+ if( bHasBoldItalic )
+ {
+ SvxWeightItem aWeightItem( FontBuffer::GetWeight( nBold ) );
+ rStyleItemSet.Put( aWeightItem );
+
+ SvxPostureItem aAttr( bItalic? ITALIC_NORMAL : ITALIC_NONE );
+ rStyleItemSet.Put( aAttr );
+ }
+
+ if( bHasUnderline )
+ {
+ FontUnderline eUnder;
+ switch( nUnder )
+ {
+ case 1: eUnder = UNDERLINE_SINGLE; break;
+ case 2: eUnder = UNDERLINE_DOUBLE; break;
+ default: eUnder = UNDERLINE_NONE;
+ }
+ SvxUnderlineItem aUndItem( eUnder );
+ rStyleItemSet.Put( aUndItem );
+ }
+
+ if( bHasStrikeOut )
+ {
+ SvxCrossedOutItem aAttr( bStrikeOut? STRIKEOUT_SINGLE : STRIKEOUT_NONE );
+ rStyleItemSet.Put( aAttr );
+ }
+
+ if( bHasColor )
+ rStyleItemSet.Put( *rColBuff.GetColor( nCol ) );
+ }
+
+ if( nPosL )
+ {
+ UINT8 nLineH, nLineV;
+ UINT16 nColH, nColV;
+ rIn.Seek( nPosL );
+
+ rIn >> nLineV >> nLineH >> nColV >> nColH;
+
+ UINT8 nLineL = nLineV & 0x0F;
+ UINT16 nColL = nColV & 0x007F;
+ UINT8 nLineR = nLineV >> 4;
+ UINT16 nColR = ( nColV >> 7 ) & 0x007F;
+ UINT8 nLineT = nLineH & 0x0F;
+ UINT16 nColT = nColH & 0x007F;
+ UINT8 nLineB = nLineH >> 4;
+ UINT16 nColB = ( nColH >> 7 ) & 0x007F;
+
+ XF_Buffer::SetBorder( rStyleItemSet, rColBuff,
+ nLineL, nColL, nLineR, nColR, nLineT, nColT, nLineB, nColB );
+ }
+
+ if( nPosP )
+ {
+ UINT8 nP;
+ UINT16 nCol;
+ rIn.Seek( nPosP );
+
+ rIn >> nP >> nCol;
+
+ UINT8 nF = nCol & 0x007F;
+ UINT8 nB = ( nCol >> 7 ) & 0x007F;
+
+ if( !nP )
+ {// no brush set
+ nF = nB;
+ nB = 0xFF;
+ nP = 1;
+ }
+
+ XF_Buffer::SetFill( rStyleItemSet, rColBuff, nP, nF, nB );
+ }
+
+ // convert formulas
+ FORMULA_TYPE eFT = FT_RangeName;
+ if( nLenForm1 )
+ {
+ rIn.Seek( nRecPos + nRecLen - nLenForm1 - nLenForm2 );
+
+ rConv.Reset( nLenForm1, aPos );
+ nAnzBytes = nLenForm1;
+
+ rConv.Convert( pFrmla1, nAnzBytes, eFT );
+ }
+
+ ScTokenArray* pHelp;
+
+ if( nLenForm2 )
+ {
+ if( pFrmla1 )
+ {
+ // copy unique ScTokenArry from formula converter!
+ pHelp = pFrmla1->Clone();
+ pFrmla1 = ( const ScTokenArray* ) pHelp;
+ }
+
+ rIn.Seek( nRecPos + nRecLen - nLenForm2 );
+
+ rConv.Reset( nLenForm2, aPos );
+ nAnzBytes = nLenForm2;
+
+ rConv.Convert( pFrmla2, nAnzBytes, eFT );
+ }
+
+ ScCondFormatEntry aCFE( eMode, pFrmla1, pFrmla2, pDoc, aPos, aStyle );
+
+ pScCondForm->AddEntry( aCFE );
+
+ if( pFrmla1 && pFrmla2 )
+ {
+ // if both pointers are non null, 1 is a real copy
+ pHelp = ( ScTokenArray* ) pFrmla1;
+ delete pHelp;
+ }
+ }
+ nCondCnt++;
+ }
+}
+
+
+void ExcCondForm::Apply( void )
+{
+ if( pScCondForm )
+ {
+ ULONG nCondFormat = pExcRoot->pDoc->AddCondFormat( *pScCondForm );
+ ScPatternAttr aPat( pExcRoot->pDoc->GetPool() );
+ aPat.GetItemSet().Put( SfxUInt32Item( ATTR_CONDITIONAL, nCondFormat ) );
+
+ const ScRange* p = pRangeList->First();
+ UINT16 nC1, nC2, nR1, nR2;
+
+ while( p )
+ {
+ nC1 = p->aStart.Col();
+ nR1 = p->aStart.Row();
+ nC2 = p->aEnd.Col();
+ nR2 = p->aEnd.Row();
+
+ if( nC1 > MAXCOL )
+ nC1 = MAXCOL;
+ if( nC2 > MAXCOL )
+ nC2 = MAXCOL;
+ if( nR1 > MAXROW )
+ nR1 = MAXROW;
+ if( nR2 > MAXROW )
+ nR2 = MAXROW;
+
+ pExcRoot->pDoc->ApplyPatternAreaTab( nC1, nR1, nC2, nR2, nTab, aPat );
+
+ p = pRangeList->Next();
+ }
+ }
+}
+
+
+
+
+ExcCondFormList::~ExcCondFormList()
+{
+ ExcCondForm* p = ( ExcCondForm* ) List::First();
+
+ while( p )
+ {
+ delete p;
+ p = ( ExcCondForm* ) List::Next();
+ }
+}
+
+
+void ExcCondFormList::Apply( void )
+{
+ ExcCondForm* p = ( ExcCondForm* ) List::First();
+
+ while( p )
+ {
+ p->Apply();
+ p = ( ExcCondForm* ) List::Next();
+ }
+}
+
+
+
+
+ImportExcel8::ImportExcel8( SvStorage* pStorage, SvStream& rStream, ScDocument* pDoc,
+ SvStorage* pPivotCache ) :
+ ImportExcel( rStream, pDoc ), aEscherObjList( aPosBuffer, pExcRoot )
+{
+ delete pFormConv;
+
+ pExcRoot->pXtiBuffer = new XtiBuffer;
+ pExcRoot->pSupbookBuffer = new SupbookBuffer;
+
+ pFormConv = new ExcelToSc8( pExcRoot, rStream, nTab );
+
+ pActTxo = NULL;
+
+ bLeadingTxo = FALSE;
+ bMaybeTxo = FALSE;
+ bCond4EscherCont = bLeadingObjRec = FALSE;
+ bTabStartDummy = TRUE;
+
+ pActEscherObj = NULL;
+
+ pActChart = NULL;
+
+ pExcRoot->pPivotCacheStorage = pPivotCache;
+ pCurrPivTab = NULL;
+ pCurrPivotCache = NULL;
+
+ pActCondForm = NULL;
+ pCondFormList = NULL;
+
+ pExcRoot->pRootStorage = pStorage;
+
+ bHasBasic = FALSE;
+}
+
+
+ImportExcel8::~ImportExcel8()
+{
+ delete pExcRoot->pXtiBuffer;
+ delete pExcRoot->pSupbookBuffer;
+
+ if( pActTxo )
+ delete pActTxo;
+
+ if( pActEscherObj )
+ delete pActEscherObj;
+
+ if( pCondFormList )
+ delete pCondFormList;
+}
+
+
+void ImportExcel8::RecString( void )
+{
+ if( pLastFormCell )
+ {
+ INT32 nDummy = nBytesLeft;
+ pLastFormCell->SetString( ::ReadUnicodeString( aIn, nDummy, eQuellChar ) );
+
+ pLastFormCell = NULL;
+ }
+}
+
+
+void ImportExcel8::Verticalpagebreaks( void )
+{
+ UINT16 n;
+ UINT16 nCol;
+
+ aIn >> n;
+
+ while( n )
+ {
+ aIn >> nCol;
+ aIn.SeekRel( 4 ); // beide Rows ueberlesen
+
+ aColRowBuff.SetVertPagebreak( nCol );
+
+ n--;
+ }
+}
+
+
+void ImportExcel8::Horizontalpagebreaks( void )
+{
+ UINT16 n;
+ UINT16 nRow;
+
+ aIn >> n;
+
+ while( n )
+ {
+ aIn >> nRow;
+ aIn.SeekRel( 4 ); // beide Cols ueberlesen
+
+ aColRowBuff.SetHorizPagebreak( nRow );
+
+ n--;
+ }
+}
+
+
+void ImportExcel8::Note( void )
+{
+ UINT16 nCol, nRow, nId;
+
+ aIn >> nRow >> nCol;
+ aIn.SeekRel( 2 );
+ aIn >> nId;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ if( nId )
+ {
+ const ExcEscherObj* pObj = aEscherObjList.Get( nId, nTab );
+
+ if( pObj && pObj->GetObjType() == OT_NOTE )
+ {
+ const String* p = ( ( ExcEscherNote* ) pObj )->GetText();
+
+ if( p )
+ pD->SetNote( nCol, nRow, nTab, ScPostIt( *p ) );
+ }
+ }
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel8::Format( void )
+{
+ Ignore( 2 );
+ String aFormat( ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar ) );
+
+ pValueFormBuffer->NewValueFormat( aFormat );
+}
+
+
+void ImportExcel8::Externsheet( void )
+{
+ UINT16 nXtiCnt;
+
+ aIn >> nXtiCnt;
+ nBytesLeft -= 2;
+
+ pExcRoot->pXtiBuffer->Read( aIn, nXtiCnt, nBytesLeft );
+}
+
+
+void ImportExcel8::Externname( void )
+{
+ UINT32 nRes;
+ UINT16 nOpt;
+ UINT8 nLen;
+
+ aIn >> nOpt >> nRes >> nLen;
+ nBytesLeft -= sizeof( nRes ) + sizeof( nOpt ) + sizeof( nLen );
+
+ String aName;
+
+ if( nLen )
+ aName = ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar, nLen );
+
+ if( ( nOpt & 0x0001 ) || ( ( nOpt & 0xFFFE ) == 0x0000 ) )
+ // external name
+ pExcRoot->pExtNameBuff->AddName( ExcelNameToScName( aName ) );
+ else if( nOpt & 0x0010 )
+ // ole link
+ pExcRoot->pExtNameBuff->AddOLE( aName, nRes ); // nRes is storage ID
+ else
+ // dde link
+ pExcRoot->pExtNameBuff->AddDDE( aName );
+}
+
+
+void ImportExcel8::Font( void )
+{
+ UINT16 nHeight, nIndexCol, nScript;
+ UINT8 nAttr0;
+ BYTE nUnderline, nFamily, nCharSet;
+ UINT8 nLen;
+ UINT16 nWeight;
+
+ aIn >> nHeight >> nAttr0;
+ aIn.SeekRel( 1 );
+ aIn >> nIndexCol >> nWeight >> nScript >> nUnderline >> nFamily >> nCharSet;
+ aIn.SeekRel( 1 ); // Reserved
+
+ aIn >> nLen;
+
+ String aName( ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar, nLen ) );
+
+ // Font in Pool batschen
+ pExcRoot->pFontBuffer->NewFont(
+ nHeight, nAttr0, nScript, nUnderline, nIndexCol, nWeight,
+ nFamily, nCharSet, aName );
+}
+
+
+void ImportExcel8::Cont( const UINT16 nLenRecord )
+{
+ if( pActTxo )
+ {
+ pActTxo->ReadCont( aIn, *pExcRoot, GetEdEng() );
+
+ if( pActTxo->IsComplete() )
+ {
+ if( pActEscherObj )
+ {
+ if( pActEscherObj->GetObjType() == OT_TXO || pActEscherObj->GetObjType() == OT_NOTE )
+ {
+ ( ( ExcEscherTxo* ) pActEscherObj )->TakeTxo( *pActTxo );
+
+ if( bMaybeTxo )
+ {
+ aEscherObjList.MorpheLastObj( pActEscherObj );
+ bMaybeTxo = FALSE;
+ }
+ else
+ aEscherObjList.Append( pActEscherObj );
+ }
+ else
+ delete pActEscherObj;
+
+ pActEscherObj = NULL;
+ }
+
+ delete pActTxo;
+ pActTxo = NULL;
+ }
+ }
+ else if( bCond4EscherCont )
+ Msodrawing( nLenRecord );
+ else if( bLeadingObjRec )
+ {
+ UINT32 nOldPos = aIn.Tell();
+ UINT32 nId;
+ aIn >> nId;
+
+ if( ( nId & 0xF000000F ) == 0xF000000F )
+ {
+ aIn.Seek( nOldPos );
+ Msodrawing( nLenRecord );
+ }
+
+ bLeadingObjRec = FALSE;
+ }
+}
+
+
+void ImportExcel8::Dconref( void )
+{
+ if( !pCurrPivotCache )
+ return;
+
+ UINT16 nR1, nR2;
+ UINT8 nC1, nC2;
+ String aFileName, aTabName;
+ BOOL bSelf;
+
+ aIn >> nR1 >> nR2 >> nC1 >> nC2;
+ nBytesLeft -= 6;
+
+ EncodeExternSheetUnicode( aIn, aFileName, aTabName, nBytesLeft, bSelf );
+
+ if( !aTabName.Len() )
+ {
+ aTabName = aFileName;
+ aFileName.Erase();
+ }
+ pCurrPivotCache->SetSource( nC1, nR1, nC2, nR2, aFileName, aTabName, bSelf );
+}
+
+
+void ImportExcel8::Xct( void )
+{
+ if( pExcRoot->pCurrSupbook )
+ {
+ UINT16 nCrnCount;
+ UINT16 nTabNum = 0;
+
+ aIn >> nCrnCount;
+ if( nBytesLeft > 3 )
+ aIn >> nTabNum;
+
+ pExcRoot->pCurrSupbook->SetCurrScTab( nTabNum );
+ }
+}
+
+
+void ImportExcel8::Crn( void )
+{
+ if( pExcRoot->pCurrSupbook )
+ {
+ SupbookE& rSB = *pExcRoot->pCurrSupbook;
+
+ if( rSB.HasValidScTab() )
+ {
+ UINT8 nLastCol;
+ UINT8 nFirstCol;
+ UINT16 nRow;
+ UINT16 nTab = rSB.GetCurrScTab();
+ UINT8 nValType;
+
+ aIn >> nLastCol >> nFirstCol >> nRow;
+ nBytesLeft -= 4;
+
+ ScAddress aAddr( (UINT16) 0, nRow, nTab );
+
+ for( UINT16 iCol = nFirstCol; (iCol <= nLastCol) && (nBytesLeft > 1); iCol++ )
+ {
+ aAddr.SetCol( iCol );
+ aIn >> nValType;
+ nBytesLeft--;
+ switch( nValType )
+ {
+ case EXC_CRN_DOUBLE:
+ if( nBytesLeft >= 8 )
+ {
+ double fVal;
+ aIn >> fVal;
+ nBytesLeft -= 8;
+ pD->SetValue( iCol, nRow, nTab, fVal );
+ }
+ break;
+ case EXC_CRN_STRING:
+ if( nBytesLeft >= 3 )
+ {
+ String sText( ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar ) );
+ ScStringCell* pStrCell = new ScStringCell( sText );
+ pD->PutCell( aAddr, pStrCell );
+ }
+ break;
+ case EXC_CRN_BOOL:
+ case EXC_CRN_ERROR:
+ if( nBytesLeft >= 8 )
+ {
+ BOOL bIsErr = (nValType == 0x10);
+ UINT16 nErrBool;
+ double fVal;
+
+ aIn >> nErrBool;
+ aIn.SeekRel( 6 );
+ nBytesLeft -= 8;
+
+ const ScTokenArray* pTok = ErrorToFormula( bIsErr, nErrBool, fVal );
+ ScFormulaCell* pCell = new ScFormulaCell( pD, aAddr, pTok );
+
+ pCell->SetDouble( fVal );
+ pD->PutCell( aAddr, pCell );
+ }
+ break;
+ }
+ }
+ }
+ }
+}
+
+
+void ImportExcel8::Obj( const UINT32 nLimitPos )
+{
+ UINT16 nOpcode, nLenRec;
+ UINT32 nNextRec = aIn.Tell();
+ BOOL bLoop = TRUE;
+ ExcEscherObj* pObj = NULL;
+
+ while( bLoop )
+ {
+ aIn >> nOpcode >> nLenRec;
+
+ nNextRec += 4;
+ nNextRec += nLenRec;
+
+ if( aIn.IsEof() || nNextRec > nLimitPos )
+ bLoop = FALSE;
+ else
+ {
+ switch( nOpcode )
+ {
+ case 0x00:
+ bLoop = FALSE;
+ break;
+ case 0x15: pObj = ObjFtCmo(); break;
+ case 0x08: ObjFtPioGrbit( pObj ); break;
+ case 0x09: ObjFtPictFmla( pObj, nLenRec ); break;
+ }
+ }
+
+ aIn.Seek( nNextRec );
+ }
+
+ bLeadingObjRec = TRUE;
+}
+
+
+ExcEscherObj* ImportExcel8::ObjFtCmo( void )
+{
+ UINT16 nOt, nOid, nGrbit;
+
+ aIn >> nOt >> nOid >> nGrbit;
+
+ if( !pActEscherObj )
+ pActEscherObj = new ExcEscherObj( 0, 0, nTab, pExcRoot );
+
+ if ( pActEscherObj )
+ pActEscherObj->SetId( nOid );
+
+ bMaybeTxo = FALSE;
+
+ ExcEscherObj* pObj;
+ switch( nOt )
+ {
+ case 0x05: // Chart
+ pActEscherObj = pObj = new ExcEscherChart( pActEscherObj/*, pActChart */);
+ break;
+ case 0x02: // rectangel
+ case 0x01: // line
+ case 0x03: // oval
+ case 0x04: // arc
+ case 0x09: // polygon
+ aEscherObjList.Append( pObj = new ExcEscherDrwObj( pActEscherObj ) );
+ bMaybeTxo = TRUE;
+ break;
+ case 0x08: // picture
+ aEscherObjList.Append( pObj = new ExcEscherOle( pActEscherObj ) );
+ break;
+ case 0x06: // text
+ bLeadingTxo = TRUE;
+ pActEscherObj = pObj = new ExcEscherTxo( pActEscherObj );
+ break;
+ case 0x19: // Note
+ bLeadingTxo = TRUE;
+ pActEscherObj = pObj = new ExcEscherNote( pActEscherObj );
+ break;
+ default:
+ aEscherObjList.Append( pObj = new ExcEscherDrwObj( pActEscherObj ) );
+ }
+
+ if( nOt != 0x05 )
+ bCond4EscherCont = FALSE;
+
+ return pObj;
+}
+
+
+void ImportExcel8::ObjFtPioGrbit( ExcEscherObj* pObj )
+{
+ DBG_ASSERT( pObj && pObj->GetObjType() == OT_OLE, "ImportExcel8::ObjFtPioGrbit: no OLE object" );
+ if ( !(pObj && pObj->GetObjType() == OT_OLE) )
+ return ;
+ ExcEscherOle* pOle = (ExcEscherOle*) pObj;
+ UINT16 nBits;
+ aIn >> nBits;
+ pOle->SetAsSymbol( nBits & 0x0008 );
+ pOle->SetLinked( nBits & 0x0002 );
+}
+
+
+void ImportExcel8::ObjFtPictFmla( ExcEscherObj* pObj, UINT16 nLen )
+{
+ DBG_ASSERT( pObj && pObj->GetObjType() == OT_OLE, "ImportExcel8::ObjFtPictFmla: no OLE object" );
+ if ( !(pObj && pObj->GetObjType() == OT_OLE) )
+ return ;
+ ((ExcEscherOle*)pObj)->ReadPictFmla( aIn, nLen );
+}
+
+
+void ImportExcel8::Boundsheet( void )
+{
+ UINT8 nLen;
+ UINT16 nGrbit;
+
+ aIn.SeekRel( 4 );
+ aIn >> nGrbit >> nLen;
+ nBytesLeft -= 7;
+
+ String aName( ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar, nLen ) );
+
+ ExcelNameToScName( aName );
+ *pExcRoot->pTabNameBuff << aName;
+
+ if( nBdshtTab > 0 )
+ {
+ DBG_ASSERT( !pD->HasTable( nBdshtTab ),
+ "*ImportExcel::Boundsheet8(): Tabelle schon vorhanden!" );
+
+ pD->MakeTable( nBdshtTab );
+ }
+
+ if( ( nGrbit & 0x0001 ) || ( nGrbit & 0x0002 ) )
+ pD->SetVisible( nBdshtTab, FALSE );
+
+ pD->RenameTab( nBdshtTab, aName );
+ nBdshtTab++;
+}
+
+
+void ImportExcel8::FilterMode( void )
+{ }
+
+
+void ImportExcel8::AutoFilterInfo( void )
+{
+ AutoFilterData* pData = pAutoFilter->GetByTab( nTab );
+ if( pData )
+ pData->SetAdvancedRange( NULL );
+}
+
+
+void ImportExcel8::AutoFilter( void )
+{
+ AutoFilterData* pData = pAutoFilter->GetByTab( nTab );
+ if( pData )
+ pData->ReadAutoFilter( aIn, nBytesLeft );
+}
+
+
+void ImportExcel8::Scenman( void )
+{
+ UINT16 nLastDispl;
+
+ aIn.SeekRel( 4 );
+ aIn >> nLastDispl;
+
+ aScenList.SetLast( nLastDispl );
+}
+
+
+UINT32 ImportExcel8::Scenario( const UINT16 n )
+{
+ SvStream* pStr;
+
+ UINT32 nSumLen;
+ UINT32 nNextRecord;
+ SvMemoryStream* pMemStr = CreateContinueStream( n, nSumLen, nNextRecord, FALSE );
+
+ if( pMemStr )
+ {
+ pStr = pMemStr;
+ pStr->Seek( STREAM_SEEK_TO_BEGIN );
+ }
+ else
+ pStr = &aIn;
+
+ aScenList.Append( new ExcScenario( *pStr, *pExcRoot ) );
+
+ if( pMemStr )
+ delete pMemStr;
+
+ return nNextRecord;
+}
+
+
+void ImportExcel8::SXView( void )
+{
+ pCurrPivTab = new PivotTable( aIn, pExcRoot, (UINT8) nTab, nBytesLeft );
+ aPivotTabList.Append( pCurrPivTab );
+}
+
+
+void ImportExcel8::SXVd( void )
+{
+ if( !pCurrPivTab )
+ return;
+ pCurrPivTab->AddViewField( aIn, nBytesLeft );
+}
+
+
+void ImportExcel8::SXVi( void )
+{
+ if( !pCurrPivTab )
+ return;
+
+ UINT16 nItemType, nGrBit, nCache;
+ aIn >> nItemType >> nGrBit >> nCache;
+ pCurrPivTab->AddViewItem( nItemType, nCache, nGrBit );
+}
+
+
+void ImportExcel8::SXIvd( void )
+{
+ if( !pCurrPivTab )
+ return;
+ pCurrPivTab->ReadRCFieldIDs( aIn, nBytesLeft );
+}
+
+
+void ImportExcel8::SXLi( void )
+{ } // unnecessary to read this record
+
+
+void ImportExcel8::SXPi( void )
+{
+ if( !pCurrPivTab )
+ return;
+
+ UINT16 nArrayCnt = nBytesLeft / 6; // SXPI contains 6-byte-arrays
+ UINT16 nSXVD;
+ UINT16 nSXVI;
+ UINT16 nObjID;
+
+ for( UINT16 iArray = 0; iArray < nArrayCnt; iArray++ )
+ {
+ aIn >> nSXVD >> nSXVI >> nObjID;
+ pCurrPivTab->AddPageItemInfo( nSXVD, nSXVI );
+ }
+}
+
+
+void ImportExcel8::SXDi( void )
+{
+ if( !pCurrPivTab )
+ return;
+ pCurrPivTab->AddDataItem( aIn, nBytesLeft );
+}
+
+
+void ImportExcel8::SXIdStm( void )
+{
+ UINT16 nStrId;
+ aIn >> nStrId;
+
+ if( !pExcRoot->pImpPivotCacheList )
+ pExcRoot->pImpPivotCacheList = new PivotCacheList;
+
+ pCurrPivotCache = new PivotCache( pExcRoot, nStrId );
+ pExcRoot->pImpPivotCacheList->Append( pCurrPivotCache );
+}
+
+
+void ImportExcel8::Xf( void )
+{
+#define HASATTRSET(m) (!(nW12&m))
+ static UINT16 nXFCnt = 0;
+ UINT16 nW4, nW6, nW8, nW10, nW12, nW14, nW16, nW22;
+ UINT32 nL18;
+ CellBorder aBorder;
+ CellFill aFill;
+ XF_Data* pXFD = new XF_Data;
+
+ aIn >> nW4 >> nW6 >> nW8 >> nW10 >> nW12 >> nW14 >> nW16 >> nL18 >> nW22;
+
+ nBytesLeft -= 20;
+
+ const BOOL bCellXF = ( nW8 & 0x0004 ) == 0;
+
+ pXFD->SetCellXF( bCellXF );
+
+ if( bCellXF || HASATTRSET( 0x0800 ) )
+ pXFD->SetFont( nW4 );
+ if( bCellXF || HASATTRSET( 0x0400 ) )
+ pXFD->SetValueFormat( pValueFormBuffer->GetValueFormat( nW6 ) );
+ if( bCellXF || HASATTRSET( 0x8000 ) )
+ {
+ pXFD->SetLocked( TRUEBOOL( nW8 & 0x0001 ) );
+ pXFD->SetHidden( TRUEBOOL( nW8 & 0x0002 ) );
+ }
+ if( bCellXF )
+ pXFD->SetParent( nW8 >> 4 );
+ if( bCellXF || HASATTRSET( 0x1000 ) )
+ {
+ pXFD->SetAlign( ( ExcHorizAlign ) ( nW10 & 0x0007 ) );
+ if( nW10 & 0x0008 )
+ pXFD->SetWrap( EWT_Wrap );
+ pXFD->SetAlign( ( ExcVertAlign ) ( ( nW10 & 0x0070 ) >> 4 ) );
+ pXFD->SetTextOrient( ( UINT8 ) ( nW10 >> 8 ) );
+ }
+
+ // nW12 >> 5 : 1 fMergeCell
+
+ pXFD->SetIndent( nW12 & 0x000F );
+
+ if( bCellXF || HASATTRSET( 0x2000 ) )
+ {
+ aBorder.nLeftLine = ( BYTE ) nW14 & 0x000F;
+ nW14 >>= 4;
+ aBorder.nRightLine = ( BYTE ) nW14 & 0x000F;
+ nW14 >>= 4;
+ aBorder.nTopLine = ( BYTE ) nW14 & 0x000F;
+ nW14 >>= 4;
+ aBorder.nBottomLine = ( BYTE ) nW14 & 0x000F;
+
+ aBorder.nLeftColor = nW16 & 0x007F;
+ aBorder.nRightColor = ( nW16 >> 7 ) & 0x007F;
+ aBorder.nTopColor = ( UINT16 ) ( nL18 & 0x007F );
+ aBorder.nBottomColor = ( UINT16 ) ( ( nL18 >> 7 ) & 0x007F );
+
+ pXFD->SetBorder( aBorder );
+ }
+
+ if( bCellXF || HASATTRSET( 0x4000 ) )
+ {
+ aFill.nPattern = ( BYTE ) ( nL18 >> 26 );
+ aFill.nForeColor = nW22 & 0x007F;
+ aFill.nBackColor = ( nW22 & 0x3F80 ) >> 7;
+
+ pXFD->SetFill( aFill );
+ }
+
+ if( nW12 & 0x0020 )
+ pXFD->Merge();
+
+ pExcRoot->pXF_Buffer->NewXF( pXFD );
+ nXFCnt++;
+
+#undef HASATTRSET
+}
+
+
+void ImportExcel8::SXVs( void )
+{
+ if( !pCurrPivotCache )
+ return;
+
+ UINT16 nSrcType;
+ aIn >> nSrcType;
+ pCurrPivotCache->SetSourceType( nSrcType );
+}
+
+
+void ImportExcel8::Cellmerging( void )
+{
+ UINT16 n, nR1, nR2, nC1, nC2;
+
+ aIn >> n;
+
+ DBG_ASSERT( nBytesLeft >= 2 + n * 8, "*ImportExcel8::Cellmerging(): in die Hose!" );
+
+ while( n )
+ {
+ aIn >> nR1 >> nR2 >> nC1 >> nC2;
+
+ if( nR1 > MAXROW )
+ nR1 = MAXROW;
+ if( nR2 > MAXROW )
+ nR2 = MAXROW;
+ if( nC1 > MAXCOL )
+ nC1 = MAXCOL;
+ if( nC2 > MAXCOL )
+ nC2 = MAXCOL;
+
+ pD->DoMerge( nTab, nC1, nR1, nC2, nR2 );
+ n--;
+ }
+}
+
+
+UINT32 ImportExcel8::Msodrawinggroup( const UINT32 n )
+{
+ DBG_ASSERT( n <= 0xFFFF, "*ImportExcel8::Msodrawinggroup(): Record zu lang!" );
+
+ UINT32 nSumLen;
+ UINT32 nNextRecord;
+
+ const DffRecordHeader* pLatestRecHd =
+ aExcStreamConsumer.Consume( CreateContinueStream( ( UINT16 ) n, nSumLen, nNextRecord, TRUE ), 0 );
+
+ return nNextRecord;
+}
+
+
+void ImportExcel8::Msodrawing( const UINT32 nL )
+{
+ bCond4EscherCont = TRUE;
+ const UINT32 nFallBack = aIn.Tell();
+
+ if ( !aExcStreamConsumer.GetStream() )
+ return;
+
+ if( bTabStartDummy )
+ {// Dummy fuer ungueltigen ersten Shape einfuegen
+ aEscherObjList.Append( new ExcEscherObj( 0, 0, nTab, pExcRoot ) );
+
+ bTabStartDummy = FALSE;
+ }
+ const UINT32 nS = aExcStreamConsumer.GetStream()->Tell();
+ if( nL )
+ {
+ const DffRecordHeader* pLatestRecHd = aExcStreamConsumer.Consume( &aIn, nL );
+ if ( pLatestRecHd )
+ {
+ switch ( pLatestRecHd->nRecType )
+ {
+ case DFF_msofbtClientData :
+ {
+ sal_Char* pBuf = new sal_Char[ 0x100 ];
+ aExcStreamConsumer.AppendData( pBuf, 0x100 );
+ delete pBuf;
+ }
+ break;
+ case DFF_msofbtClientTextbox :
+ {
+ sal_Char* pBuf = new sal_Char[ 0x200 ];
+ aExcStreamConsumer.AppendData( pBuf, 0x200 );
+ delete pBuf;
+ }
+ break;
+ }
+ }
+ nBytesLeft = 0;
+ }
+ if( bLeadingTxo )
+ {
+ DBG_ASSERTWARNING( pActEscherObj && pActEscherObj->GetObjType() == OT_TXO,
+ "ImportExcel8::Msodrawing(): Vorgaenger wech oder falsch!" );
+ bLeadingTxo = FALSE;
+ }
+ else
+ {
+ if( pActEscherObj )
+ delete pActEscherObj; // aEscherObjList.Append( pActEscherObj );
+
+ pActEscherObj = new ExcEscherObj( nS, aExcStreamConsumer.GetStream()->Tell() - 1, nTab, pExcRoot );
+
+ if( bMaybeTxo )
+ {
+ if( nL <= 8 )
+ {
+ UINT16 nFBT;
+
+ aIn.Seek( nFallBack + 2 );
+
+ aIn >> nFBT;
+
+ if( nFBT != 0xF00D )
+ bMaybeTxo = FALSE; // != Client Text Box
+ }
+ else
+ bMaybeTxo = FALSE;
+ }
+ }
+}
+
+
+void ImportExcel8::Msodrawingselection( const UINT32 n )
+{
+}
+
+
+void ImportExcel8::SXRule( void )
+{
+}
+
+
+void ImportExcel8::SXEx( void )
+{
+}
+
+
+void ImportExcel8::SXFilt( void )
+{
+}
+
+
+void ImportExcel8::SXSelect( void )
+{
+}
+
+
+UINT32 ImportExcel8::Sst( void )
+{
+ SvStream* pStr;
+
+ UINT16 n = ( UINT16 ) nBytesLeft;
+ UINT32 nSumLen;
+ UINT32 nNextRecord;
+ UINT32List aCutPosList;
+ SvMemoryStream* pMemStr = CreateContinueStream( n, nSumLen, nNextRecord, FALSE, &aCutPosList );
+ INT32 nReadSize;
+
+ if( pMemStr )
+ {// Struktur mit Folge-Records
+ nReadSize = ( INT32 ) nSumLen;
+ pStr = pMemStr;
+ pStr->Seek( STREAM_SEEK_TO_BEGIN );
+ }
+ else
+ {// 'Pure' Tabelle
+ pStr = &aIn;
+ nReadSize = ( INT32 ) n;
+ }
+
+ pStr->SeekRel( 8 );
+ nReadSize -= 8;
+
+ ShStrTabEntry* p;
+
+ while( nReadSize > 0 )
+ {
+ p = CreateUnicodeEntry( *pStr, nReadSize, eQuellChar, 0, &aCutPosList );
+ aSharedStringTable.Append( p );
+ }
+
+ if( pMemStr )
+ delete pMemStr;
+
+ return nNextRecord;
+}
+
+
+SvMemoryStream* ImportExcel8::CreateContinueStream( const UINT16 n, UINT32& rSLen, UINT32& rNPR,
+ const BOOL bForceSingle, UINT32List* pCutPosList )
+{
+ DBG_ASSERT( n, "-ImportExcel8::CreateContinueStream(): Base-Record muss zumindest Daten enthalten!" );
+
+ bCond4EscherCont = FALSE;
+
+ const UINT32 nStartPos = aIn.Tell();
+ UINT16 nId;
+ SvMemoryStream* pMemStr;
+ UINT32 nNextRecord = nStartPos;
+
+ aIn.SeekRel( n );
+ aIn >> nId;
+
+ aIn.Seek( nStartPos );
+
+ if( nId == 0x3C )
+ {// Struktur mit Folge-Records
+ UINT16 nBufferLen = n;
+ UINT16 nLen = n;
+ sal_Char* pBuffer = new sal_Char[ nBufferLen ];
+
+ pMemStr = new SvMemoryStream;
+
+ aIn.Read( pBuffer, nLen );
+ pMemStr->Write( pBuffer, nLen );
+
+ aIn >> nId >> nLen;
+
+ do
+ {
+ if( nLen > nBufferLen )
+ {
+ delete[] pBuffer;
+ nBufferLen = nLen;
+ pBuffer = new sal_Char[ nBufferLen ];
+ }
+
+ aIn.Read( pBuffer, nLen );
+
+ if( pCutPosList )
+ {
+// UINT32 n = pMemStr->Tell();
+ pCutPosList->Append( pMemStr->Tell() ); // Schnittstelle merken
+ }
+
+ pMemStr->Write( pBuffer, nLen );
+
+ aIn >> nId >> nLen;
+ }
+ while( nId == 0x3C );
+
+ rSLen = pMemStr->Tell();
+ pMemStr->Seek( STREAM_SEEK_TO_END );
+
+ rNPR = aIn.Tell() - 4;
+
+ delete[] pBuffer;
+
+ nBytesLeft = 0;
+ }
+ else
+ {// 'Pure' Record
+ rNPR = nStartPos + n;
+ if( bForceSingle )
+ {
+ pMemStr = new SvMemoryStream;
+ sal_Char* pBuffer = new sal_Char[ n ];
+
+ aIn.Read( pBuffer, n );
+ pMemStr->Write( pBuffer, n );
+
+ delete[] pBuffer;
+
+ nBytesLeft = 0;
+ }
+ else
+ pMemStr = NULL;
+ rSLen = n;
+ }
+
+ return pMemStr;
+}
+
+
+ScBaseCell* ImportExcel8::CreateCellFromShStrTabEntry( const ShStrTabEntry* p, const UINT16 nXF )
+{
+ ScBaseCell* pRet = NULL;
+ if( p )
+ {
+ if( p->GetString().Len() > 0 )
+ {
+ if( p->HasFormats() )
+ {
+ ScEditEngineDefaulter& rEdEng = GetEdEng();
+ EditTextObject* pTextObj = p->CreateEditTextObject(
+ rEdEng, *pExcRoot->pFontBuffer );
+
+ DBG_ASSERT( pTextObj, "-ImportExcel8::Labelsst(): Keiner hat mich lieb!" );
+
+ pRet = new ScEditCell( pTextObj, pD, rEdEng.GetEditTextObjectPool() );
+
+ delete pTextObj;
+ }
+ else if( pExcRoot->pXF_Buffer->HasAttribSuperOrSubscript( nXF ) )
+ {
+ EditTextObject* pTObj = CreateFormText( 0, p->GetString(), nXF );
+
+ pRet = new ScEditCell( pTObj, pD, GetEdEng().GetEditTextObjectPool() );
+
+ delete pTObj;
+ }
+ else
+ pRet = ScBaseCell::CreateTextCell( p->GetString(), pD );
+ }
+ }
+ else
+ pRet = ScBaseCell::CreateTextCell( aSstErrTxt, pD );
+
+ return pRet;
+}
+
+
+void ImportExcel8::SXVdex( void )
+{
+ if( !pCurrPivTab )
+ return;
+
+ UINT32 nFlags;
+ aIn >> nFlags;
+ pCurrPivTab->SetShowEmpty( TRUEBOOL( nFlags & 0x00000001 ) );
+}
+
+
+void ImportExcel8::Condfmt( void )
+{
+ pActCondForm = new ExcCondForm( pExcRoot );
+
+ if( !pCondFormList )
+ pCondFormList = new ExcCondFormList;
+
+ pCondFormList->Append( pActCondForm );
+
+ pActCondForm->Read( aIn );
+}
+
+
+void ImportExcel8::Cf( void )
+{
+ if( pActCondForm )
+ pActCondForm->ReadCf( aIn, ( UINT16 ) nBytesLeft, *pFormConv );
+}
+
+
+void ImportExcel8::Dval( void )
+{
+}
+
+
+void ImportExcel8::Labelsst( void )
+{
+ UINT16 nRow, nCol, nXF;
+ UINT32 nSst;
+
+ aIn >> nRow >> nCol >> nXF >> nSst;
+
+ nBytesLeft -= 10;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ const ShStrTabEntry* p = aSharedStringTable.Get( nSst );
+
+ ScBaseCell* pCell = CreateCellFromShStrTabEntry( p, nXF );
+ if( pCell )
+ pD->PutCell( nCol, nRow, nTab, pCell, ( BOOL ) TRUE );
+
+ aColRowBuff.Used( nCol, nRow );
+
+ pFltTab->SetXF( nCol, nRow, nXF );
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel8::Label( void )
+{
+ UINT16 nRow, nCol, nXF;
+ aIn >> nRow >> nCol >> nXF;
+ nBytesLeft -= 6;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ ShStrTabEntry* p = CreateUnicodeEntry( aIn, nBytesLeft, eQuellChar );
+
+ ScBaseCell* pCell = CreateCellFromShStrTabEntry( p, nXF );
+ if( pCell )
+ pD->PutCell( nCol, nRow, nTab, pCell, ( BOOL ) TRUE );
+
+ aColRowBuff.Used( nCol, nRow );
+
+ pFltTab->SetXF( nCol, nRow, nXF );
+
+ delete p;
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel8::Supbook( void )
+{
+ pExcRoot->pCurrSupbook = new SupbookE( aIn, nBytesLeft, *pExcRoot );
+ pExcRoot->pSupbookBuffer->Append( pExcRoot->pCurrSupbook );
+}
+
+
+void ImportExcel8::Txo( void )
+{
+ if( pActTxo )
+ pActTxo->Clear();
+ else
+ pActTxo = new TxoCont;
+
+ pActTxo->ReadTxo( aIn );
+
+ if( pActEscherObj && pActEscherObj->GetObjType() != OT_NOTE )
+ pActEscherObj = new ExcEscherTxo( pActEscherObj );
+
+ if( bMaybeTxo )
+ {
+ if( !pActEscherObj )
+ pActEscherObj = new ExcEscherObj( 0, 0, nTab, pExcRoot );
+
+ pActEscherObj = new ExcEscherTxo( pActEscherObj );
+ }
+}
+
+
+void ImportExcel8::Codename( BOOL bWorkbookGlobals )
+{
+ if( bHasBasic )
+ {
+ String aName( ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar ) );
+
+ DBG_ASSERT( pExcRoot->pExtDocOpt, "-ImportExcel8::Codename(): nothing there to store!" );
+
+ if( bWorkbookGlobals )
+ pExcRoot->pExtDocOpt->SetCodename( aName );
+ else
+ pExcRoot->pExtDocOpt->AddCodename( aName );
+ }
+}
+
+
+void ImportExcel8::Dv( void )
+{
+ UINT32 nFlags;
+
+ aIn >> nFlags;
+ nBytesLeft -= sizeof( nFlags );
+
+ String aPromptTitle( ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar ) );
+ String aErrorTitle( ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar ) );
+ String aPromptMessage( ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar ) );
+ String aErrorMessage( ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar ) );
+
+ // vals
+ if( nBytesLeft > 8 )
+ {
+ Ignore( nBytesLeft - 8 );
+
+ UINT16 nR1, nR2, nC1, nC2;
+
+ aIn >> nR1 >> nR2 >> nC1 >> nC2;
+
+ for( UINT16 nC = nC1 ; nC <= nC2 ; nC++ )
+ for( UINT16 nR = nR1 ; nR <= nR2 ; nR++ )
+ {
+ ScValidationMode eValMode = ( ScValidationMode ) ( nFlags & 0x00000007 );
+ // StarCalc matches Excel in lower 3 bits!
+ ScConditionMode eMode;
+ switch( ( nFlags >> 20 ) & 0x00000007 )
+ {
+ case 0x00: eMode = SC_COND_BETWEEN; break;
+ case 0x01: eMode = SC_COND_NOTBETWEEN; break;
+ case 0x02: eMode = SC_COND_EQUAL; break;
+ case 0x03: eMode = SC_COND_NOTEQUAL; break;
+ case 0x04: eMode = SC_COND_GREATER; break;
+ case 0x05: eMode = SC_COND_LESS; break;
+ case 0x06: eMode = SC_COND_EQGREATER; break;
+ case 0x07: eMode = SC_COND_EQLESS; break;
+ }
+ String aDummy;
+ aDummy.AssignAscii( "1" );
+ ScValidationData aValidData( eValMode, eMode, aDummy, aDummy, pD, ScAddress( nC, nR, nTab ) );
+
+ ULONG nHandle = pD->AddValidationEntry( aValidData );
+ }
+ }
+}
+
+
+static BOOL lcl_Test( SvStream& r, const UINT32 n )
+{
+ UINT32 nOldPos = r.Tell();
+ UINT32 nRef;
+
+ r >> nRef;
+
+ r.Seek( nOldPos );
+
+ return nRef == n;
+}
+
+
+static void lcl_GetAbs( String& rPath, UINT16 nDl, SfxObjectShell* pDocShell )
+{
+ String aTmpStr;
+
+ if( nDl )
+ {
+ while( nDl )
+ {
+ aTmpStr.AppendAscii( "../" );
+ nDl--;
+ }
+ }
+
+ aTmpStr += rPath;
+
+ bool bWasAbs = false;
+ rPath = pDocShell->GetMedium()->GetURLObject().smartRel2Abs( aTmpStr, bWasAbs ).GetMainURL();
+}
+
+
+void ImportExcel8::Hlink( void )
+{
+ UINT16 nRF, nRL, nCF, nCL;
+
+ ReadX( nRF );
+ ReadX( nRL );
+ ReadX( nCF );
+ ReadX( nCL );
+
+ Ignore( 24 ); // flags are not realy interresting
+
+ UINT16 nDl = 0; // counter for level to climb down in path
+ String* pL = NULL; // link / file name
+ String* p8 = NULL; // 8.3-representation from file name
+ String* pM = NULL; // mark
+
+ while( nBytesLeft > 0 )
+ {
+ UINT32 nStartPos = aIn.Tell();
+ UINT32 n1, n2;
+
+ aIn >> n1 >> n2;
+ nBytesLeft -= sizeof( n1 ) + sizeof( n2 );
+
+ if( n1 == 0x00000303 && n2 == 0x00000000 )
+ { // 8.3 file name or something else...
+ Ignore( 8 );
+ aIn >> nDl >> n1;
+ nBytesLeft -= sizeof( nDl ) + sizeof( n1 );
+
+ if( p8 )
+ *p8 = ReadCString( n1, TRUE );
+ else
+ p8 = new String( ReadCString( n1, TRUE ) );
+
+ lcl_GetAbs( *p8, nDl, pD->GetDocumentShell() );
+ }
+ else if( n1 == 0xDEADFFFF && n2 == 0x00000000 )
+ { // file name
+ Ignore( 16 );
+ aIn >> n2 >> n1;
+ nBytesLeft -= sizeof( n1 ) + sizeof( n2 );
+ Ignore( 2 );
+
+ if( nBytesLeft > 0 )
+ {
+ if( pL )
+ *pL = ReadWString( n1, TRUE );
+ else
+ pL = new String( ReadWString( n1, TRUE ) );
+
+ lcl_GetAbs( *pL, nDl, pD->GetDocumentShell() );
+ }
+ else
+ nBytesLeft = 0;
+ }
+ else if( n1 == 0x79EAC9E0 && n2 == 0x11CEBAF9 )
+ { // URL
+ Ignore( 8 );
+ aIn >> n1;
+ nBytesLeft -= sizeof( n1 );
+
+ if( pL )
+ *pL = ReadWString( n1, TRUE );
+ else
+ pL = new String( ReadWString( n1, TRUE ) );
+ }
+ else
+ { // text or mark
+ nBytesLeft += 4;
+ aIn.Seek( nStartPos + 4 ); // n1 still valid!
+ n1 *= 2; // n1 was number of chars
+
+ if( p8 || pL )
+ {
+ if( pM )
+ *pM = ReadWString( n1, TRUE );
+ else
+ pM = new String( ReadWString( n1, TRUE ) );
+ }
+ else
+ Ignore( n1 );
+ }
+ }
+
+
+ String* pHlink = NULL;
+
+ if( pL )
+ {
+ pHlink = pL;
+ pL = NULL;
+ }
+ else if( p8 )
+ {
+ pHlink = p8;
+ p8 = NULL;
+ }
+
+ if( pHlink )
+ {
+ if( pM )
+ {
+ *pHlink += '#';
+ *pHlink += *pM;
+ }
+
+ for( UINT16 nCol = nCF ; nCol <= nCL ; nCol++ )
+ {
+ for( UINT16 nRow = nRF ; nRow <= nRL ; nRow++ )
+ InsertHyperlink( nCol, nRow, *pHlink );
+ }
+ }
+
+ if( pL )
+ delete pL;
+ if( p8 )
+ delete p8;
+ if( pM )
+ delete pM;
+ if( pHlink )
+ delete pHlink;
+}
+
+
+String* ImportExcel8::ReadFileHlink( void )
+{ // 2 B deleted
+ return NULL;
+}
+
+
+String* ImportExcel8::ReadURLHlink( void )
+{ // 2 B deleted
+ return NULL;
+}
+
+
+void ImportExcel8::Dimensions( void )
+{
+ UINT32 nRowFirst, nRowLast;
+ UINT16 nColFirst, nColLast;
+
+ aIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+ nBytesLeft -= 12;
+
+ if( nRowLast > MAXROW )
+ nRowLast = MAXROW;
+ if( nColLast > MAXCOL )
+ nColLast = MAXCOL;
+ if( nRowFirst > nRowLast )
+ nRowFirst = nRowLast;
+ if( nColFirst > nColLast )
+ nColFirst = nColLast;
+
+ aColRowBuff.SetDimension(
+ ScRange( nColFirst, ( UINT16 ) nRowFirst, nTab, nColLast, ( UINT16 ) nRowLast, nTab ) );
+}
+
+
+void ImportExcel8::Name( void )
+{
+ const ScTokenArray* pErgebnis;
+ UINT16 nLenDef;
+ BYTE nLenName;
+ BYTE nLen;
+
+ UINT16 nOpt;
+ UINT16 nLenSeekRel = 0;
+ UINT16 nSheet;
+
+ aIn >> nOpt;
+ aIn.SeekRel( 1 );
+ aIn >> nLenName >> nLenDef >> nSheet;
+ aIn.SeekRel( 2 );
+ aIn >> nLen; // length of custom menu text
+ nLenSeekRel += nLen;
+ aIn >> nLen; // length of description text
+ nLenSeekRel += nLen;
+ aIn >> nLen; // length of help topic text
+ nLenSeekRel += nLen;
+ aIn >> nLen; // length of status bar text
+ nLenSeekRel += nLen;
+ nBytesLeft -= 14;
+
+ pFormConv->Reset( nLenDef );
+
+ // Namen einlesen
+ String aName( ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar, nLenName ) );
+ // jetzt steht Lesemarke an der Formel
+
+ sal_Unicode cFirstChar = aName.GetChar( 0 );
+
+ const UINT32 nFormStart = aIn.Tell();
+ const BOOL bHidden = TRUEBOOL( nOpt & EXC_NAME_HIDDEN );
+ const BOOL bBuiltIn = TRUEBOOL( nOpt & EXC_NAME_BUILTIN );
+ const BOOL bPrintArea = bBuiltIn && ( cFirstChar == EXC_BUILTIN_PRINTAREA );
+ const BOOL bPrintTitles = bBuiltIn && ( cFirstChar == EXC_BUILTIN_PRINTTITLES );
+ const BOOL bAutoFilter = bBuiltIn && ( cFirstChar == EXC_BUILTIN_AUTOFILTER );
+ const BOOL bCriteria = bBuiltIn && ( cFirstChar == EXC_BUILTIN_CRITERIA );
+ const BOOL bExtract = bBuiltIn && ( cFirstChar == EXC_BUILTIN_EXTRACT );
+ BOOL bAppendTabNum = FALSE;
+ BOOL bSkip = FALSE;
+
+ if( bBuiltIn )
+ {// Built-in name
+ aName.AssignAscii( GetExcBuiltInName( cFirstChar ) );
+ }
+ else
+ aName = ExcelNameToScName( aName );
+
+ if( nOpt & (EXC_NAME_VB | EXC_NAME_BIG) )
+ // function or command?
+ pFormConv->GetDummy( pErgebnis );
+ else if( bBuiltIn )
+ {
+ if( bPrintArea )
+ {// Druckbereich
+ long nAnzBytes = nLenDef;
+ pFormConv->Convert( *pPrintRanges, nAnzBytes, FT_RangeName );
+ }
+ else if( bPrintTitles )
+ {// Druckbereich
+ long nAnzBytes = nLenDef;
+ pFormConv->Convert( *pPrintTitles, nAnzBytes, FT_RangeName );
+ }
+ aIn.Seek( nFormStart );
+
+ long nAnzBytes = nLenDef;
+ pFormConv->Convert( pErgebnis, nAnzBytes, FT_RangeName );
+
+ // AutoFilter
+ if( pErgebnis && (bAutoFilter || bCriteria || bExtract) )
+ {
+ ScRange aRange;
+ if( pErgebnis->IsReference( aRange ) ) // test & get range
+ {
+ aName += String::CreateFromInt32( (sal_Int32) aRange.aStart.Tab() );
+ bSkip = bAutoFilter;
+
+ if( bAutoFilter )
+ pAutoFilter->Insert( pExcRoot, aRange, aName );
+ else if( bCriteria )
+ pAutoFilter->AddAdvancedRange( aRange );
+ else if( bExtract )
+ pAutoFilter->AddExtractPos( aRange );
+ }
+ }
+ }
+ else
+ {// Formel
+ long nAnzBytes = nLenDef;
+ pFormConv->Convert( pErgebnis, nAnzBytes, FT_RangeName );
+ }
+
+ if( !bSkip )
+ {
+ if( bHidden )
+ pExcRoot->pRNameBuff->Store( aName, NULL, nSheet );
+ else
+ // ohne hidden
+ pExcRoot->pRNameBuff->Store( aName, pErgebnis, nSheet, bPrintArea );
+ }
+}
+
+
+void ImportExcel8::Style( void )
+{
+ UINT16 nXf;
+
+ aIn >> nXf;
+ nBytesLeft -= sizeof( nXf );
+
+ if( !( nXf & 0x8000 ) )
+ {
+ nXf &= 0x0FFF; // only bit 0...11 is used for XF-index
+
+ pExcRoot->pXF_Buffer->SetStyle( nXf, ReadUnicodeString( aIn, nBytesLeft, eQuellChar ) );
+ }
+}
+
+
+void ImportExcel8::GetHFString( String& r )
+{
+ r = ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar );
+}
+
+
+void ImportExcel8::EndSheet( void )
+{
+ pActCondForm = NULL;
+
+ ImportExcel::EndSheet();
+}
+
+
+void ImportExcel8::PostDocLoad( void )
+{
+ if( pCondFormList )
+ pCondFormList->Apply();
+
+ pAutoFilter->Apply();
+
+ if( aExcStreamConsumer.GetStream() )
+ {
+ Biff8MSDffManager* pDffMan = new Biff8MSDffManager( pExcRoot, aPosBuffer, aEscherObjList,
+ *aExcStreamConsumer.GetStream(), 0, 0, pD->GetDrawLayer(), 1440 );
+
+ const UINT32 nMax = aPosBuffer.Count();
+ const ClientAnchorData* pAnch;
+
+ const SvxMSDffShapeInfos* pShpInf = pDffMan->GetShapeInfos();
+
+ if( pShpInf )
+ {
+ const UINT32 nMax = pShpInf->Count();
+ UINT32 nChartCnt = 0;
+ const SvxMSDffShapeInfo* p;
+ ULONG nShapeId;
+ SdrObject* pSdrObj = NULL;
+ SvxMSDffImportData* pMSDffImportData;
+ UINT32 n;
+ UINT32 nObjNum;
+ BOOL bRangeTest;
+
+ for( n = 0 ; n < nMax ; n++ )
+ {
+ p = pShpInf->GetObject( ( UINT16 ) n );
+ DBG_ASSERT( p, "-ImportExcel8::PostDocLoad(): Immer diese falschen Versprechungen!" );
+
+ nShapeId = p->nShapeId;
+
+ if( aPosBuffer.GetObjNum( p->nFilePos, nObjNum ) )
+ {
+ pMSDffImportData = new SvxMSDffImportData;
+
+ pSdrObj = NULL;
+ pDffMan->GetShape( nShapeId, pSdrObj, *pMSDffImportData );
+
+ if( pSdrObj )
+ {
+ pAnch = aPosBuffer.GetAnchorData( nObjNum );
+ bRangeTest = FALSE;
+ if( pAnch )
+ {
+ bRangeTest = aPivotTabList.IsInPivotRange( pAnch->nCol, pAnch->nRow, pAnch->nTab );
+ if( pAutoFilter )
+ bRangeTest |= pAutoFilter->HasDropDown( pAnch->nCol, pAnch->nRow, pAnch->nTab );
+ }
+ if( bRangeTest )
+ {
+ delete pSdrObj;
+ pSdrObj = NULL;
+ }
+ else
+ {
+ ExcEscherObj* p = (ExcEscherObj*) aEscherObjList.Get( nObjNum );
+ if ( p )
+ {
+ p->SetObj( pSdrObj );
+ switch ( p->GetObjType() )
+ {
+ case OT_CHART :
+ nChartCnt++;
+ break;
+ case OT_OLE :
+ ((ExcEscherOle*)p)->CreateSdrOle( *pDffMan );
+ break;
+ }
+ }
+ }
+ }
+
+ delete pMSDffImportData;
+ }
+ }
+ if( pExcRoot->pProgress )
+ pExcRoot->pProgress->StartPostLoadProgress( nChartCnt );
+ }
+
+ delete pDffMan;
+ }
+
+ aEscherObjList.Apply();
+
+ ImportExcel::PostDocLoad();
+
+ // Scenarien bemachen! ACHTUNG: Hier wird Tabellen-Anzahl im Dokument erhoeht!!
+ if( aScenList.Count() )
+ {
+ pD->UpdateChartListenerCollection(); // references in charts must be updated
+
+ aScenList.Apply( *pD );
+ }
+
+ // BASIC
+ if( bHasBasic )
+ {
+ OfaFilterOptions* pFiltOpt = OFF_APP()->GetFilterOptions();
+
+ if( pFiltOpt )
+ {
+ if( pFiltOpt->IsLoadExcelBasicCode() || pFiltOpt->IsLoadExcelBasicStorage() )
+ {
+ DBG_ASSERT( pExcRoot->pRootStorage, "-ImportExcel8::PostDocLoad(): no storage, no cookies!" );
+
+ SvxImportMSVBasic aBasicImport( *pD->GetDocumentShell(), *pExcRoot->pRootStorage,
+ pFiltOpt->IsLoadExcelBasicCode(),
+ pFiltOpt->IsLoadExcelBasicStorage() );
+
+ aBasicImport.Import( String::CreateFromAscii( pVBAStorageName ),
+ String::CreateFromAscii( pVBASubStorageName ) );
+ }
+ }
+ }
+
+ // read doc info
+ SfxDocumentInfo aNewDocInfo;
+ SfxDocumentInfo& rOldDocInfo = pD->GetDocumentShell()->GetDocInfo();
+
+ aNewDocInfo.LoadPropertySet( pExcRoot->pRootStorage );
+
+ rOldDocInfo = aNewDocInfo;
+ pD->GetDocumentShell()->Broadcast( SfxDocumentInfoHint( &rOldDocInfo ) );
+}
+
+
+
+void ImportExcel8::InsertHyperlink( const UINT16 nCol, const UINT16 nRow, const String& rURL )
+{
+ ScAddress aAddr( nCol, nRow, nTab );
+
+ const CellType e = pD->GetCellType( aAddr );
+
+ if( e == CELLTYPE_FORMULA || e == CELLTYPE_VALUE )
+ return;
+
+ String aOrgText;
+ pD->GetString( nCol, nRow, nTab, aOrgText );
+ if( !aOrgText.Len() )
+ aOrgText = rURL;
+
+ EditEngine& rEdEng = GetEdEng();
+ ESelection aAppSel( 0xFFFF, 0xFFFF );
+
+ rEdEng.SetText( EMPTY_STRING );
+
+ SvxURLField aUrlField( rURL, aOrgText, SVXURLFORMAT_APPDEFAULT );
+
+ rEdEng.QuickInsertField( SvxFieldItem( aUrlField ), aAppSel );
+
+ EditTextObject* pTextObj = rEdEng.CreateTextObject();
+
+ ScBaseCell* pCell = new ScEditCell( pTextObj, pD, GetEdEng().GetEditTextObjectPool() );
+
+ delete pTextObj;
+
+ pD->PutCell( aAddr, pCell, ( BOOL ) TRUE );
+}
+
+
+String ImportExcel8::ReadWString( UINT16 nLen, const BOOL b )
+{
+ String aString;
+ DBG_ASSERT( sizeof( sal_Unicode ) == 2, "ImportExcel8::ReadWString(): sal_Unicode not Excel-conform" );
+
+ if( b )
+ {
+ if( ( INT32 ) nLen > nBytesLeft )
+ {
+ aIn.SeekRel( nBytesLeft );
+ nLen = 0;
+ nBytesLeft = 0;
+ }
+ else
+ {
+ DBG_ASSERT( nLen % 2 == 0, "*ImportExcel8::ReadWString(): Unicode with odd number of bytes!" );
+
+ nLen /= 2;
+ nBytesLeft -= nLen * 2;
+ }
+ }
+
+ sal_Unicode c;
+ while( nLen )
+ {
+ aIn >> c;
+ if( c )
+ aString += c;
+ nLen--;
+ }
+
+ return aString;
+}
+
+
+String ImportExcel8::ReadCString( UINT16 n, const BOOL b )
+{
+ if( b && ( INT32 ) n > nBytesLeft )
+ {
+ aIn.SeekRel( nBytesLeft );
+ nBytesLeft = 0;
+ n = 0;
+ }
+
+ if( n )
+ {
+ sal_Char* p = new sal_Char[ n + 1 ];
+
+ aIn.Read( p, n );
+
+ if( b )
+ nBytesLeft -= n;
+
+ p[ n ] = 0x00;
+
+ return String( p, eQuellChar );
+ }
+ else
+ return EMPTY_STRING;
+}
+
+
+
+
+XtiBuffer::~XtiBuffer()
+{
+ Xti* p = ( Xti* ) List::First();
+ while( p )
+ {
+ delete p;
+ p = ( Xti* ) List::Next();
+ }
+}
+
+
+void XtiBuffer::Read( SvStream& r, UINT32 n, INT32& rBytesLeft )
+{
+ Xti* p;
+
+ rBytesLeft -= n * 6;
+
+ while( n )
+ {
+ p = new Xti;
+
+ r >> p->nSupbook >> p->nFirst >> p->nLast;
+
+ List::Insert( p, LIST_APPEND );
+
+ n--;
+ }
+}
+
+
+
+
+struct SupbookTab
+{
+ String aName;
+ UINT16 nScNum;
+};
+
+
+
+
+SupbookE::SupbookE( SvStream& rIn, INT32& rBytesLeft, RootData& rExcRoot )
+{
+ UINT16 nTabCnt;
+ SupbookTab* pNewTab;
+
+ rIn >> nTabCnt;
+ rBytesLeft -= 2;
+
+ if( rBytesLeft < 2 + 2 * nTabCnt )
+ {// verkuerzter Record _ohne_ Strings
+ bSelf = TRUE; // erste Naeherung...
+
+ rIn.SeekRel( rBytesLeft );
+ rBytesLeft = 0;
+ }
+ else
+ {
+ bSelf = FALSE; // erste Naeherung...
+
+ String aTabName;
+
+ EncodeExternSheetUnicode( rIn, aFileName, aTabName, rBytesLeft, bSelf );
+
+ if( nTabCnt )
+ {
+ while( nTabCnt )
+ {
+ pNewTab = new SupbookTab;
+
+ String& rTabName = pNewTab->aName;
+ rTabName = ::ReadUnicodeString( rIn, rBytesLeft, *rExcRoot.pCharset, 0 );
+ ExcelNameToScName( rTabName );
+
+ if( rExcRoot.pExtDocOpt->nLinkCnt < 1 )
+ {
+ UINT16 nNewTabNum;
+ String aURL( ScGlobal::GetAbsDocName( aFileName,
+ rExcRoot.pDoc->GetDocumentShell() ) );
+ String aTabName( ScGlobal::GetDocTabName( aURL, rTabName ) );
+
+ if( rExcRoot.pDoc->LinkEmptyTab( nNewTabNum, aTabName, aURL, rTabName ) )
+ pNewTab->nScNum = nNewTabNum;
+ else
+ pNewTab->nScNum = 0xFFFF;
+ }
+ else
+ pNewTab->nScNum = 0xFFFF;
+
+ List::Insert( pNewTab, LIST_APPEND );
+
+ nTabCnt--;
+ }
+ }
+ else
+ {// einen Ersatzeintrag generieren
+ pNewTab = new SupbookTab;
+ pNewTab->aName = aFileName;
+ pNewTab->nScNum = 0xFFFF;
+ List::Insert( pNewTab, LIST_APPEND );
+ }
+ }
+}
+
+
+SupbookE::~SupbookE()
+{
+ SupbookTab* p = ( SupbookTab* ) List::First();
+ while( p )
+ {
+ delete p;
+ p = ( SupbookTab* ) List::Next();
+ }
+}
+
+
+BOOL SupbookE::IsValid( const UINT16 n ) const
+{
+ const SupbookTab* p = ( const SupbookTab* ) List::GetObject( n );
+
+ if( p )
+ return p->nScNum != 0xFFFF;
+ else
+ return FALSE;
+}
+
+
+UINT16 SupbookE::GetScTabNum( const UINT16 n ) const
+{
+ const SupbookTab* p = ( const SupbookTab* ) List::GetObject( n );
+
+ if( p )
+ return p->nScNum;
+ else
+ return 0xFFFF;
+}
+
+
+
+
+SupbookBuffer::~SupbookBuffer()
+{
+ SupbookE* p = ( SupbookE* ) List::First();
+ while( p )
+ {
+ delete p;
+ p = ( SupbookE* ) List::Next();
+ }
+}
+
+
+
+
+//___________________________________________________________________
+// classes AutoFilterRange, AutoFilterRangeBuffer
+
+AutoFilterData::AutoFilterData( RootData* pRoot, const ScRange& rRange, const String& rName ) :
+ ExcRoot( pRoot ),
+ nFirstEmpty( 0 ),
+ bHasDropDown( FALSE ),
+ bHasConflict( FALSE )
+{
+ aParam.nCol1 = rRange.aStart.Col();
+ aParam.nRow1 = rRange.aStart.Row();
+ aParam.nTab = rRange.aStart.Tab();
+ aParam.nCol2 = rRange.aEnd.Col();
+ aParam.nRow2 = rRange.aEnd.Row();
+
+ ScDBCollection& rColl = *pRoot->pDoc->GetDBCollection();
+
+ pCurrDBData = rColl.GetDBAtArea( Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
+ if( !pCurrDBData )
+ {
+ pCurrDBData = new ScDBData( rName, Tab(), StartCol(), StartRow(), EndCol(), EndRow() );
+ if( pCurrDBData )
+ rColl.Insert( pCurrDBData );
+ }
+}
+
+void AutoFilterData::CreateFromDouble( String& rStr, double fVal )
+{
+ SolarMath::DoubleToString( rStr, fVal, 'A', INT_MAX,
+ ScGlobal::pScInternational->GetNumDecimalSep(), TRUE );
+}
+
+void AutoFilterData::SetCellAttribs()
+{
+ bHasDropDown = TRUE;
+ for ( UINT16 nCol = StartCol(); nCol <= EndCol(); nCol++ )
+ {
+ INT16 nFlag = ((ScMergeFlagAttr*) pExcRoot->pDoc->
+ GetAttr( nCol, StartRow(), Tab(), ATTR_MERGE_FLAG ))->GetValue();
+ pExcRoot->pDoc->ApplyAttr( nCol, StartRow(), Tab(),
+ ScMergeFlagAttr( nFlag | SC_MF_AUTO) );
+ }
+}
+
+void AutoFilterData::InsertQueryParam()
+{
+ if( pCurrDBData && !bHasConflict )
+ {
+ ScRange aAdvRange;
+ BOOL bHasAdv = pCurrDBData->GetAdvancedQuerySource( aAdvRange );
+ if( bHasAdv )
+ pExcRoot->pDoc->CreateQueryParam( aAdvRange.aStart.Col(),
+ aAdvRange.aStart.Row(), aAdvRange.aEnd.Col(), aAdvRange.aEnd.Row(),
+ aAdvRange.aStart.Tab(), aParam );
+
+ pCurrDBData->SetQueryParam( aParam );
+ if( bHasAdv )
+ pCurrDBData->SetAdvancedQuerySource( &aAdvRange );
+ else
+ {
+ pCurrDBData->SetAutoFilter( TRUE );
+ SetCellAttribs();
+ }
+ }
+}
+
+BOOL AutoFilterData::HasDropDown( UINT16 nCol, UINT16 nRow, UINT16 nTab ) const
+{
+ return (bHasDropDown && (StartCol() <= nCol) && (nCol <= EndCol()) &&
+ (nRow == StartRow()) && (nTab == Tab()));
+}
+
+void AutoFilterData::ReadAutoFilter( SvStream& rStrm, INT32& nLeft )
+{
+ UINT16 nCol, nFlags;
+ rStrm >> nCol >> nFlags;
+
+ ScQueryConnect eConn = (nFlags & EXC_AFFLAG_ANDORMASK) ? SC_OR : SC_AND;
+ BOOL bTop10 = TRUEBOOL( nFlags & EXC_AFFLAG_TOP10 );
+ BOOL bTopOfTop10 = TRUEBOOL( nFlags & EXC_AFFLAG_TOP10TOP );
+ BOOL bPercent = TRUEBOOL( nFlags & EXC_AFFLAG_TOP10PERC );
+ UINT16 nCntOfTop10 = nFlags >> 7;
+ UINT16 nCount = aParam.GetEntryCount();
+
+ if( bTop10 )
+ {
+ if( nFirstEmpty < nCount )
+ {
+ ScQueryEntry& aEntry = aParam.GetEntry( nFirstEmpty );
+ aEntry.bDoQuery = TRUE;
+ aEntry.bQueryByString = TRUE;
+ aEntry.nField = StartCol() + nCol;
+ aEntry.eOp = bTopOfTop10 ?
+ (bPercent ? SC_TOPPERC : SC_TOPVAL) : (bPercent ? SC_BOTPERC : SC_BOTVAL);
+ aEntry.eConnect = SC_AND;
+ aEntry.pStr->Assign( String::CreateFromInt32( (sal_Int32) nCntOfTop10 ) );
+
+ rStrm.SeekRel( 20 );
+ nFirstEmpty++;
+ }
+ }
+ else
+ {
+ UINT8 nE, nType, nOper, nBoolErr, nVal;
+ UINT32 nRK;
+ double fVal;
+ BOOL bIgnore;
+
+ UINT8 nStrLen[ 2 ] = { 0, 0 };
+ String* pEntryStr[ 2 ] = { NULL, NULL };
+
+ for( nE = 0; nE < 2; nE++ )
+ {
+ if( nFirstEmpty < nCount )
+ {
+ ScQueryEntry& aEntry = aParam.GetEntry( nFirstEmpty );
+ pEntryStr[ nE ] = aEntry.pStr;
+ bIgnore = FALSE;
+
+ rStrm >> nType >> nOper;
+ switch( nOper )
+ {
+ case EXC_AFOPER_LESS:
+ aEntry.eOp = SC_LESS;
+ break;
+ case EXC_AFOPER_EQUAL:
+ aEntry.eOp = SC_EQUAL;
+ break;
+ case EXC_AFOPER_LESSEQUAL:
+ aEntry.eOp = SC_LESS_EQUAL;
+ break;
+ case EXC_AFOPER_GREATER:
+ aEntry.eOp = SC_GREATER;
+ break;
+ case EXC_AFOPER_NOTEQUAL:
+ aEntry.eOp = SC_NOT_EQUAL;
+ break;
+ case EXC_AFOPER_GREATEREQUAL:
+ aEntry.eOp = SC_GREATER_EQUAL;
+ break;
+ default:
+ aEntry.eOp = SC_EQUAL;
+ }
+
+ switch( nType )
+ {
+ case EXC_AFTYPE_RK:
+ rStrm >> nRK;
+ rStrm.SeekRel( 4 );
+ CreateFromDouble( *aEntry.pStr, ImportExcel::RkToDouble( nRK ) );
+ break;
+ case EXC_AFTYPE_DOUBLE:
+ rStrm >> fVal;
+ CreateFromDouble( *aEntry.pStr, fVal );
+ break;
+ case EXC_AFTYPE_STRING:
+ rStrm.SeekRel( 4 );
+ rStrm >> nStrLen[ nE ];
+ rStrm.SeekRel( 3 );
+ aEntry.pStr->Erase();
+ break;
+ case EXC_AFTYPE_BOOLERR:
+ rStrm >> nBoolErr >> nVal;
+ rStrm.SeekRel( 6 );
+ aEntry.pStr->Assign( String::CreateFromInt32( (sal_Int32) nVal ) );
+ bIgnore = (BOOL) nBoolErr;
+ break;
+ case EXC_AFTYPE_EMPTY:
+ aEntry.bQueryByString = FALSE;
+ aEntry.nVal = SC_EMPTYFIELDS;
+ aEntry.eOp = SC_EQUAL;
+ break;
+ case EXC_AFTYPE_NOTEMPTY:
+ aEntry.bQueryByString = FALSE;
+ aEntry.nVal = SC_NONEMPTYFIELDS;
+ aEntry.eOp = SC_EQUAL;
+ break;
+ default:
+ rStrm.SeekRel( 8 );
+ bIgnore = TRUE;
+ }
+
+ if( (nE > 0) && (nCol > 0) && (eConn == SC_OR) && !bIgnore )
+ bHasConflict = TRUE;
+ if( !bHasConflict && !bIgnore )
+ {
+ aEntry.bDoQuery = TRUE;
+ aEntry.bQueryByString = TRUE;
+ aEntry.nField = StartCol() + nCol;
+ aEntry.eConnect = nE ? eConn : SC_AND;
+ nFirstEmpty++;
+ }
+ }
+ else
+ rStrm.SeekRel( 10 );
+ }
+
+ nLeft -= 20;
+ for( nE = 0; nE < 2; nE++ )
+ if( nStrLen[ nE ] && pEntryStr[ nE ] )
+ pEntryStr[ nE ]->Assign( ::ReadUnicodeString(
+ rStrm, nLeft, *pExcRoot->pCharset, nStrLen[ nE ] ) );
+ }
+}
+
+void AutoFilterData::SetAdvancedRange( const ScRange* pRange )
+{
+ if( pCurrDBData )
+ pCurrDBData->SetAdvancedQuerySource( pRange );
+}
+
+void AutoFilterData::SetExtractPos( const ScAddress& rAddr )
+{
+ aParam.nDestCol = rAddr.Col();
+ aParam.nDestRow = rAddr.Row();
+ aParam.nDestTab = rAddr.Tab();
+ aParam.bInplace = FALSE;
+ aParam.bDestPers = TRUE;
+}
+
+void AutoFilterData::Apply()
+{
+ InsertQueryParam();
+
+ BYTE nFlags;
+ for( UINT16 nRow = StartRow(); nRow <= EndRow(); nRow++ )
+ {
+ nFlags = pExcRoot->pDoc->GetRowFlags( nRow, Tab() );
+ if( nFlags & CR_HIDDEN )
+ nFlags |= CR_FILTERED;
+ pExcRoot->pDoc->SetRowFlags( nRow, Tab(), nFlags );
+ }
+}
+
+
+
+
+AutoFilterBuffer::~AutoFilterBuffer()
+{
+ for( AutoFilterData* pData = _First(); pData; pData = _Next() )
+ delete pData;
+}
+
+void AutoFilterBuffer::Insert( RootData* pRoot, const ScRange& rRange,
+ const String& rName )
+{
+ if( !GetByTab( rRange.aStart.Tab() ) )
+ Append( new AutoFilterData( pRoot, rRange, rName ) );
+}
+
+void AutoFilterBuffer::AddAdvancedRange( const ScRange& rRange )
+{
+ AutoFilterData* pData = GetByTab( rRange.aStart.Tab() );
+ if( pData )
+ pData->SetAdvancedRange( &rRange );
+}
+
+void AutoFilterBuffer::AddExtractPos( const ScRange& rRange )
+{
+ AutoFilterData* pData = GetByTab( rRange.aStart.Tab() );
+ if( pData )
+ pData->SetExtractPos( rRange.aStart );
+}
+
+void AutoFilterBuffer::Apply()
+{
+ for( AutoFilterData* pData = _First(); pData; pData = _Next() )
+ pData->Apply();
+}
+
+AutoFilterData* AutoFilterBuffer::GetByTab( UINT16 nTab )
+{
+ for( AutoFilterData* pData = _First(); pData; pData = _Next() )
+ if( pData->Tab() == nTab )
+ return pData;
+ return NULL;
+}
+
+BOOL AutoFilterBuffer::HasDropDown( UINT16 nCol, UINT16 nRow, UINT16 nTab )
+{
+ for( AutoFilterData* pData = _First(); pData; pData = _Next() )
+ if( pData->HasDropDown( nCol, nRow, nTab ) )
+ return TRUE;
+ return FALSE;
+}
+
+
+
+
diff --git a/sc/source/filter/excel/excobj.cxx b/sc/source/filter/excel/excobj.cxx
new file mode 100644
index 000000000000..70f4393f1ac6
--- /dev/null
+++ b/sc/source/filter/excel/excobj.cxx
@@ -0,0 +1,1274 @@
+/*************************************************************************
+ *
+ * $RCSfile: excobj.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+#define _SDR_NOEXTDEV // ExtOutputDevice
+//#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+#define _SDR_NOTEXTOBJ // SdrTextObj
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+#define _SDR_NOOLE2OBJ // SdrOle2Obj
+#define SI_NOOTHERFORMS
+#define SI_NOSBXCONTROLS
+#define _VCBRW_HXX
+#define _VCTRLS_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+
+//------------------------------------------------------------------------
+
+#include <stdio.h>
+
+#include "scitems.hxx"
+#include <svx/colritem.hxx>
+#include <svx/svddef.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdopath.hxx>
+#include <svx/svdorect.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/xcolit.hxx>
+#include <svx/xfillit.hxx>
+#include <svx/xfillit0.hxx>
+#include <svx/xlineit.hxx>
+#include <svx/xlineit0.hxx>
+#include <svx/xsetit.hxx>
+#include <svx/outlobj.hxx>
+#include <svx/outliner.hxx>
+#include <sfx2/objsh.hxx>
+#include <so3/ipobj.hxx>
+#include <so3/svstor.hxx>
+#include <sch/schdll.hxx>
+#include <sch/memchrt.hxx>
+#ifndef _SCHDLL0_HXX
+#include <sch/schdll0.hxx>
+#endif
+#include <svtools/itemset.hxx>
+#include <sfx2/app.hxx>
+#include <svx/editdata.hxx>
+#include <svx/editeng.hxx>
+#include <svx/editobj.hxx>
+#include <svx/editstat.hxx>
+#ifndef _SVDOGRAF_HXX //autogen wg. SdrGrafObj
+#include <svx/svdograf.hxx>
+#endif
+
+#include <sfx2/interno.hxx>
+
+#include "document.hxx"
+#include "drwlayer.hxx"
+#include "chartarr.hxx"
+#include "editutil.hxx"
+
+#include "imp_op.hxx"
+#include "excimp8.hxx"
+#include "fontbuff.hxx"
+#include "excchart.hxx"
+#include "fltprgrs.hxx"
+
+using namespace com::sun::star;
+
+// Object Flags
+
+#define OBJF_SELECTED 0x0001 // ---
+#define OBJF_AUTOSIZE 0x0002 // zellgebunden
+#define OBJF_MOVE 0x0004 // ---
+#define OBJF_LOCKED 0x0010 // ---
+#define OBJF_GROUPED 0x0080 // ---
+#define OBJF_HIDDEN 0x0100 // ---
+#define OBJF_VISIBLE 0x0200 // ---
+#define OBJF_PRINTABLE 0x0400 // ---
+
+
+void ImportExcel::Obj()
+{
+ UINT32 nObj;
+ UINT16 nType, nId, nFlags;
+ // Zeilen, Spalten, Offsets (in 1/1024 Zeile/Spalte)
+ UINT16 nCol1, nColOff1, nRow1, nRowOff1;
+ UINT16 nCol2, nColOff2, nRow2, nRowOff2;
+ UINT16 nMacroLen;
+
+ aIn >> nObj >> nType >> nId >> nFlags
+ >> nCol1 >> nColOff1 >> nRow1 >> nRowOff1
+ >> nCol2 >> nColOff2 >> nRow2 >> nRowOff2
+ >> nMacroLen;
+ BOOL bBiff5 = BOOL( pExcRoot->eHauptDateiTyp == Biff5 );
+ short nReserved = bBiff5 ? 6 : 2;
+ aIn.SeekRel( nReserved );
+ nBytesLeft -= 28 + nReserved;
+
+ Point aUL( CalcX( nTab, nCol1, nColOff1, HMM_PER_TWIPS, pD ),
+ CalcY( nTab, nRow1, nRowOff1, HMM_PER_TWIPS, pD ) );
+
+ Point aLR( CalcX( nTab, nCol2, nColOff2, HMM_PER_TWIPS, pD ),
+ CalcY( nTab, nRow2, nRowOff2, HMM_PER_TWIPS, pD ) );
+
+ SfxItemSet aSet
+ ( pD->GetDrawLayer()->GetItemPool(), SDRATTR_START, SDRATTR_END );
+ SdrObject* pObj = NULL;
+ switch( nType )
+ {
+ case 0x01: pObj = LineObj( aSet, aUL, aLR ); break;
+ case 0x02: pObj = RectObj( aSet, aUL, aLR ); break;
+ case 0x05: pObj = BeginChartObj( aSet, aUL, aLR ); break;
+ }
+ if( pObj )
+ {
+ pObj->SetAttributes( aSet, TRUE );
+ pObj->NbcSetLogicRect(Rectangle( aUL, aLR ) );
+ pObj->SetLayer( SC_LAYER_FRONT );
+ pD->GetDrawLayer()->GetPage( nTab )->InsertObject( pObj );
+ if( bBiff5 && nBytesLeft )
+ {
+ BYTE nNameLen;
+ aIn >> nNameLen;
+ aIn.SeekRel( nNameLen + nMacroLen );
+ nBytesLeft -= nNameLen + nMacroLen;
+ }
+ }
+}
+
+
+void ImportExcel::SetLineStyle( SfxItemSet& rSet, short nColor, short nStyle, short nWidth )
+{
+ if( nColor >= 0 )
+ {
+ const SvxColorItem* pColor = pExcRoot->pColor->GetColor( nColor );
+ rSet.Put( XLineColorItem( String(), pColor->GetValue() ) );
+ }
+ if( nStyle >= 0 )
+ {
+ XLineStyle eStyle = ( nStyle == 1 || nStyle == 2 )
+ ? XLINE_DASH : XLINE_SOLID;
+ rSet.Put( XLineStyleItem( eStyle ) );
+ }
+ if( nWidth >= 0 )
+ rSet.Put( XLineWidthItem( nWidth * 40 ) );
+}
+
+
+void ImportExcel::SetFillStyle( SfxItemSet& rSet, short nBg, short nFg, short nStyle )
+{
+ if( nBg >= 0 )
+ {
+ const SvxColorItem* pColor = pExcRoot->pColor->GetColor( nFg );
+ rSet.Put( XFillColorItem( String(), pColor->GetValue() ) );
+ }
+ if( nStyle >= 0 )
+ // Entweder mit Farbe oder leer, keine Patterns!
+ rSet.Put( XFillStyleItem( nStyle ? XFILL_SOLID : XFILL_NONE ) );
+}
+
+
+SdrObject* ImportExcel::LineObj( SfxItemSet& rSet, const Point& rUL, const Point& rLR )
+{
+ BYTE nLc, nStyle, nWeight, nAuto;
+ UINT16 nEndStyles;
+ BYTE nQuadrant;
+ aIn >> nLc >> nStyle >> nWeight >> nAuto >> nEndStyles >> nQuadrant;
+ aIn.SeekRel( 1 );
+ nBytesLeft -= 8;
+
+ Point aPointArr[2] = { rUL, rLR };
+ SdrPathObj* pObj = new SdrPathObj( OBJ_LINE, XPolyPolygon( XPolygon( Polygon( 2, aPointArr ) ) ) );
+ SetLineStyle( rSet, nLc, nStyle, nWeight );
+ return pObj;
+}
+
+
+SdrObject* ImportExcel::RectObj( SfxItemSet& rSet, const Point& rUL, const Point& rLR )
+{
+ BYTE nBg, nFg, nPat, fAuto1, nLc, nLStyle, nLWeight, fAuto2;
+ UINT16 nFRS;
+ aIn >> nBg >> nFg >> nPat >> fAuto1 >> nLc >> nLStyle
+ >> nLWeight >> fAuto2 >> nFRS;
+ nBytesLeft -= 10;
+
+ SdrRectObj* pObj = new SdrRectObj( Rectangle( rUL, rLR ) );
+ SetLineStyle( rSet, nLc, nLStyle, nLWeight );
+ SetFillStyle( rSet, nBg, nFg, nPat );
+ return pObj;
+}
+
+
+SdrObject* ImportExcel::BeginChartObj( SfxItemSet&, const Point& rUL, const Point& rLR )
+{
+ BYTE nBg, nFg, nPat, fAuto1, nLc, nLStyle, nLWeight, fAuto2;
+ UINT16 nFRS;
+ aIn >> nBg >> nFg >> nPat >> fAuto1 >> nLc >> nLStyle
+ >> nLWeight >> fAuto2 >> nFRS;
+ aIn.SeekRel( 18 );
+ nBytesLeft -= 10 + 18;
+
+ ExcelChartData* pData = new ExcelChartData( pD, rUL, rLR, nTab );
+ SetLineStyle( *pData->pAttrs, nLc, nLStyle, nLWeight );
+ SetFillStyle( *pData->pAttrs, nBg, nFg, nPat );
+ pData->pNext = pChart;
+ pChart = pData;
+ return NULL;
+}
+
+
+void ImportExcel::EndChartObj()
+{
+ DBG_ASSERT( pChart, "Kein Chart definiert!" );
+
+ ExcelChartData* pData = pChart;
+ if( !pData )
+ return;
+
+ pChart = pData->pNext;
+
+ if( pUsedChartFirst )
+ pUsedChartLast->pNext = pData;
+ else
+ pUsedChartFirst = pData;
+
+ pUsedChartLast = pData;
+
+ pData->pNext = NULL;
+}
+
+
+ExcelChartData::ExcelChartData( ScDocument* p, const Point& rUL, const Point& rLR, const UINT16 nBT ) :
+ aRect( rUL, rLR ),
+ nRow1( 32767 ), nCol1( 32767 ), nTab1( 32767 ), nRow2( 0 ), nCol2( 0 ), nTab2( 0 ), pNext( NULL ),
+ nBaseTab( nBT ), nObjNum( 0xFFFFFFFF )
+{
+ pAttrs = new SfxItemSet( p->GetDrawLayer()->GetItemPool(), SDRATTR_START, SDRATTR_END );
+}
+
+
+ExcelChartData::~ExcelChartData()
+{
+ delete pAttrs;
+}
+
+
+void ImportExcel::ChartSelection( void )
+{
+ UINT8 nId, nRef;
+ UINT16 nFlags, nFmt, nSize;
+ aIn >> nId >> nRef >> nFlags >> nFmt >> nSize;
+ // Nur Links To Worksheet auswerten
+ if( nRef == 2 && nSize )
+ {
+ // Der AI-Record enthaelt eine 3D Cell Reference (Opcode 0x3A)
+ // oder eine 3D Area Reference (Opcode 0x3B) (oder auch nicht...)
+ UINT8 nOp;
+ UINT16 nLink;
+ UINT16 nTab1, nTab2, nRow1, nRow2;
+ UINT16 nCol1, nCol2;
+ BOOL bValues = FALSE;
+
+ aIn >> nOp;
+
+ if( pExcRoot->eHauptDateiTyp == Biff5 )
+ {
+ aIn >> nLink;
+
+ if( nLink == 0xFFFF )
+ {
+ aIn.SeekRel( 8 );
+ switch( nOp )
+ {
+ case 0x3A:
+ {
+ UINT8 nC;
+ aIn >> nTab1 >> nTab2 >> nRow1 >> nC;
+ nRow2 = nRow1;
+ nCol2 = nCol1 = nC;
+ bValues = TRUE;
+ }
+ break;
+ case 0x3B:
+ {
+ UINT8 nC1, nC2;
+ aIn >> nTab1 >> nTab2 >> nRow1 >> nRow2 >> nC1 >> nC2;
+ nCol1 = nC1;
+ nCol2 = nC2;
+ bValues = TRUE;
+ }
+ break;
+ }
+
+ nRow1 &= 0x3FFF;
+ nRow2 &= 0x3FFF;
+ }
+ }
+ else // Biff8 (?)
+ {
+ UINT16 nIxti;
+
+ DBG_ASSERT( pExcRoot->eHauptDateiTyp == Biff8,
+ "*ImportExcel::ChartSelection(): Den kenn' ich nicht!" );
+
+ if( nOp == 0x3A || nOp == 0x3B )
+ {
+ if( nOp == 0x3A )
+ {
+ aIn >> nIxti >> nRow1 >> nCol1;
+ nCol1 &= 0x3FFF;
+ nCol2 = nCol1;
+ nRow2 = nRow1;
+ }
+ else
+ {
+ aIn >> nIxti >> nRow1 >> nRow2 >> nCol1 >> nCol2;
+ nCol1 &= 0x3FFF;
+ nCol2 &= 0x3FFF;
+ }
+
+ const Xti* pXti = pExcRoot->pXtiBuffer->Get( nIxti );
+
+ if( pXti )
+ {
+ const SupbookE* pSbE = pExcRoot->pSupbookBuffer->Get( pXti->nSupbook );
+
+ if( pSbE /*&& pSbE->IsSameSheet()*/ )
+ {// in aktuellem Workbook
+ nTab1 = pXti->nFirst;
+ nTab2 = pXti->nLast;
+ bValues = TRUE;
+ }
+ }
+ }
+ } // Ende Biff8
+
+ if( bValues )
+ {
+ DBG_ASSERT( pChart, "Keine Chartdaten!" );
+ if( pChart )
+ {
+ if( pChart->nRow1 > nRow1 )
+ pChart->nRow1 = nRow1;
+ if( pChart->nCol1 > nCol1 )
+ pChart->nCol1 = nCol1;
+ if( pChart->nTab1 > nTab1 )
+ pChart->nTab1 = nTab1;
+ if( pChart->nRow2 < nRow2 )
+ pChart->nRow2 = nRow2;
+ if( pChart->nCol2 < nCol2 )
+ pChart->nCol2 = nCol2;
+ if( pChart->nTab2 > nTab2 )
+ pChart->nTab2 = nTab2;
+ }
+ }
+ }
+}
+
+
+void ImportExcel::ChartSeriesText()
+{
+ UINT16 nId;
+ aIn >> nId;
+ if( pChart )
+ ReadExcString( LenByte, pChart->aLastLabel );
+}
+
+
+void ImportExcel::ChartObjectLink()
+{
+ UINT16 nType, nVar1, nVar2;
+ aIn >> nType >> nVar1 >> nVar2;
+ if( pChart && pChart->aLastLabel.Len() )
+ {
+ switch( nType )
+ {
+ case 1: pChart->aTitle = pChart->aLastLabel; break;
+ case 2: pChart->aYTitle = pChart->aLastLabel; break;
+ case 3: pChart->aXTitle = pChart->aLastLabel; break;
+ case 7: pChart->aZTitle = pChart->aLastLabel; break;
+ }
+ pChart->aLastLabel.Erase();
+ }
+}
+
+
+#ifdef WNT
+#pragma optimize("",off)
+#endif
+
+void ImportExcel::EndAllChartObjects( void )
+{
+ ExcelChartData* p = pUsedChartFirst;
+ ExcelChartData* pDelete;
+
+ while( p )
+ {
+ if( p->nRow1 <= p->nRow2 && p->nCol1 <= p->nCol2 )
+ {
+ SfxObjectShell* pSh = pD->GetDocumentShell();
+ SvStorageRef aStor = new SvStorage( String() );
+ SvInPlaceObjectRef aIPObj;
+ // wenn Chart nicht installiert ist, darf nicht auf SCH_MOD zugegriffen werden!
+ //! Warnung am Storage setzen?
+ if ( SFX_APP()->HasFeature(SFX_FEATURE_SCHART) )
+ {
+#ifndef SO3
+ aIPObj = &SvInPlaceObject::ClassFactory()->CreateAndInit
+ ( *SCH_MOD()->pSchChartDocShellFactory, aStor );
+#else
+ aIPObj = &((SvFactory*)SvInPlaceObject::ClassFactory())->CreateAndInit
+ ( *SCH_MOD()->pSchChartDocShellFactory, aStor );
+#endif
+ }
+ if( aIPObj.Is() )
+ {
+ pSh->InsertObject(aIPObj, String());
+ // String aName = aIPObj->GetName()->GetName();
+
+ String aName;
+ SvInfoObject* pInfoObj = pSh->Find( aIPObj );
+
+ if( pInfoObj )
+ aName = pInfoObj->GetObjName();
+ else
+ DBG_ERROR( "IP-Object not found :-/" );
+
+
+ Size aSize = aIPObj->GetVisArea().GetSize();
+ if( aSize.Height() == 0 || aSize.Width() == 0 )
+ {
+ aSize.Width() = 5000;
+ aSize.Height() = 5000;
+ aSize = Window::LogicToLogic
+ ( aSize, MapMode( MAP_100TH_MM ), MapMode( aIPObj->GetMapUnit() ) );
+ aIPObj->SetVisAreaSize( aSize );
+ }
+
+ pD->LimitChartArea( p->nTab1, p->nCol1, p->nRow1, p->nCol2, p->nRow2 );
+
+ SdrOle2Obj* pSdrObj = new SdrOle2Obj( aIPObj, aName, p->aRect );
+
+ pSdrObj->SetAttributes( *p->pAttrs, TRUE );
+ pSdrObj->SetLayer( SC_LAYER_FRONT );
+
+ pD->GetDrawLayer()->GetPage( p->nBaseTab )->InsertObject( pSdrObj );
+
+ pSdrObj->NbcSetLogicRect( p->aRect );
+
+ ScChartArray aChartObj
+ ( pD, p->nTab1, p->nCol1, p->nRow1, p->nCol2, p->nRow2, aName );
+
+ SchMemChart* pMemChart = aChartObj.CreateMemChart();
+ SchDLL::Update( aIPObj, pMemChart );
+ delete pMemChart;
+ }
+ }
+
+ pDelete = p;
+ p = p->pNext;
+
+ delete pDelete;
+ }
+
+ pUsedChartFirst = pUsedChartLast = NULL;
+
+ p = pChart;
+ while( p )
+ {
+ pDelete = p;
+ p = p->pNext;
+ delete pDelete;
+ }
+
+}
+
+
+
+#ifdef WNT
+#pragma optimize("",on)
+#endif
+
+
+
+
+void ImportExcel8::EndAllChartObjects( void )
+{
+}
+
+
+void ImportExcel8::EndChartObj( void )
+{
+}
+
+
+
+
+ExcEscherObj::ExcEscherObj( const UINT32 nS, const UINT32 nE, const UINT16 nT, RootData* p ) : ExcRoot( p )
+{
+ pAnchor = NULL;
+ pSdrObj = NULL;
+ nStrPosStart = nS;
+ nStrPosEnd = nE;
+ nTab = nT;
+ nId = 0xFFFF;
+}
+
+
+ExcEscherObj::ExcEscherObj( ExcEscherObj& r ) : ExcRoot( r.pExcRoot )
+{
+ if( r.pAnchor )
+ pAnchor = new Rectangle( *r.pAnchor );
+ else
+ pAnchor = NULL;
+
+ if( r.pSdrObj )
+ {
+ pSdrObj = r.pSdrObj;
+ r.pSdrObj = NULL;
+ }
+ else
+ pSdrObj = NULL;
+
+ nStrPosStart = r.nStrPosStart;
+ nStrPosEnd = r.nStrPosEnd;
+ nTab = r.nTab;
+ nId = r.nId;
+}
+
+
+ExcEscherObj::~ExcEscherObj()
+{
+ if( pAnchor )
+ delete pAnchor;
+ if( pSdrObj )
+ delete pSdrObj;
+}
+
+
+OBJECTTYPE ExcEscherObj::GetObjType( void ) const
+{
+ return OT_UNKNOWN;
+}
+
+
+void ExcEscherObj::SetAnchor( const Rectangle& r )
+{
+ if( pAnchor )
+ *pAnchor = r;
+ else
+ pAnchor = new Rectangle( r );
+}
+
+
+void ExcEscherObj::SetObj( SdrObject* p )
+{
+ if( pSdrObj )
+ delete pSdrObj;
+
+ pSdrObj = p;
+}
+
+
+void ExcEscherObj::Apply( void )
+{
+ if( pSdrObj && pAnchor )
+ {
+ pExcRoot->pDoc->GetDrawLayer()->GetPage( nTab )->InsertObject( pSdrObj );
+
+ pSdrObj = NULL;
+ }
+}
+
+
+void ExcEscherObj::MorpheFrom( ExcEscherObj*& rpMAD )
+{
+ ExcEscherObj& r = *rpMAD;
+
+ nStrPosStart = r.nStrPosStart;
+ nStrPosEnd = r.nStrPosEnd;
+ nTab = r.nTab;
+ nId = r.nId;
+
+ pAnchor = r.pAnchor;
+ r.pAnchor = NULL;
+
+ pSdrObj = r.pSdrObj;
+ r.pSdrObj = NULL;
+
+ delete rpMAD;
+ rpMAD = NULL;
+}
+
+
+ExcChart* ExcEscherObj::GetChartData( void )
+{
+ return NULL;
+}
+
+
+void ExcEscherObj::SetChartData( ExcChart* p )
+{
+}
+
+
+
+
+ExcEscherChart::ExcEscherChart( ExcEscherObj*& rpCAD ) : ExcEscherObj( *rpCAD )
+{
+ delete rpCAD;
+ rpCAD = NULL;
+
+ pChrtData = new ExcChart( pExcRoot );
+
+ pChrtData->nBaseTab = nTab;
+}
+
+
+ExcEscherChart::~ExcEscherChart()
+{
+ if( pChrtData )
+ {
+ delete pChrtData;
+#ifdef DEBUG
+ pChrtData = ( ExcChart* ) 0xFFFF7777;
+#endif
+ }
+}
+
+
+OBJECTTYPE ExcEscherChart::GetObjType( void ) const
+{
+ return OT_CHART;
+}
+
+
+ExcChart* ExcEscherChart::GetChartData( void )
+{
+ return pChrtData;
+}
+
+
+void ExcEscherChart::SetChartData( ExcChart* p )
+{
+ if( pChrtData )
+ delete pChrtData;
+
+ pChrtData = p;
+}
+
+
+void ExcEscherChart::Apply( void )
+{
+ // Setz-Teil vom alten EndAllChartObjects()
+ ExcChart* p = pChrtData;
+
+ if( p && p->GetSourceData() && pAnchor )
+ {
+ p->CloseSourceData();
+
+ const ExcChart_LinkedData* p1 = p->GetSourceData();
+
+ ScDocument* pD = pExcRoot->pDoc;
+
+ SfxObjectShell* pSh = pD->GetDocumentShell();
+ SvStorageRef aStor = new SvStorage( String() );
+ SvInPlaceObjectRef aIPObj;
+ Rectangle& rRect = *pAnchor;
+
+ // wenn Chart nicht installiert ist, darf nicht auf SCH_MOD zugegriffen werden!
+ //! Warnung am Storage setzen?
+ if ( SFX_APP()->HasFeature(SFX_FEATURE_SCHART) )
+ {
+#ifndef SO3
+ aIPObj = &SvInPlaceObject::ClassFactory()->CreateAndInit
+ ( *SCH_MOD()->pSchChartDocShellFactory, aStor );
+#else
+ aIPObj = &((SvFactory*)SvInPlaceObject::ClassFactory())->CreateAndInit
+ ( *SCH_MOD()->pSchChartDocShellFactory, aStor );
+#endif
+ }
+ if( aIPObj.Is() )
+ {
+ pSh->InsertObject(aIPObj, String());
+
+ String aName;
+ SvInfoObject* pInfoObj = pSh->Find( aIPObj );
+
+ if( pInfoObj )
+ aName = pInfoObj->GetObjName();
+ else
+ DBG_ERROR( "IP-Object not found :-/" );
+
+ BOOL bEnabled = aIPObj->IsEnableSetModified();
+ if (bEnabled)
+ aIPObj->EnableSetModified(FALSE);
+
+ Size aSize = aIPObj->GetVisArea().GetSize();
+ if( aSize.Height() == 0 || aSize.Width() == 0 )
+ {
+ aSize.Width() = 5000;
+ aSize.Height() = 5000;
+ aSize = Window::LogicToLogic
+ ( aSize, MapMode( MAP_100TH_MM ), MapMode( aIPObj->GetMapUnit() ) );
+ aIPObj->SetVisAreaSize( aSize );
+ }
+
+ SdrOle2Obj* pSdrObj = new SdrOle2Obj( aIPObj, aName, rRect );
+
+ pSdrObj->SetLayer( SC_LAYER_FRONT );
+
+ pD->GetDrawLayer()->GetPage( p->nBaseTab )->InsertObject( pSdrObj );
+
+ pSdrObj->NbcSetLogicRect( rRect );
+
+ ScChartArray aChartObj( pD, p1->GetRangeList(), aName );
+
+ BOOL bSwap = ( p1 && p1->GetDir() );
+ BOOL bColHdr = bSwap ? p->bHasSeriesNames : p->bHasCategoryNames;
+ BOOL bRowHdr = bSwap ? p->bHasCategoryNames : p->bHasSeriesNames;
+ aChartObj.SetHeaders( bColHdr, bRowHdr );
+
+ SchMemChart* pMemChart = aChartObj.CreateMemChart();
+ SchDLL::Update( aIPObj, pMemChart );
+ delete pMemChart;
+
+ SfxInPlaceObjectRef aSfxObj( aIPObj );
+ if( aSfxObj.Is() )
+ {
+ SfxObjectShell* pObjSh = aSfxObj->GetObjectShell();
+ if( pObjSh )
+ {
+ uno::Reference<lang::XComponent> x = pObjSh->GetModel().get();
+ if( x.is() )
+ p->Apply( x, rRect );
+ }
+ }
+
+ if (bEnabled)
+ aIPObj->EnableSetModified(TRUE);
+
+ aIPObj->SetModified();
+ aIPObj->DoSave();
+ aIPObj->DoSaveCompleted();
+ aIPObj->GetStorage()->Commit();
+ }
+ }
+}
+
+
+
+
+ExcEscherOle::ExcEscherOle( ExcEscherObj*& rpCAD ):
+ ExcEscherObj( *rpCAD ),
+ nBlipId( 0 ),
+ bAsSymbol( FALSE ),
+ bLinked( FALSE )
+{
+ delete rpCAD;
+ rpCAD = NULL;
+}
+
+
+ExcEscherOle::~ExcEscherOle()
+{
+}
+
+
+OBJECTTYPE ExcEscherOle::GetObjType( void ) const
+{
+ return OT_OLE;
+}
+
+
+void ExcEscherOle::ReadPictFmla( SvStream& rIn, UINT16 nLen )
+{
+ UINT32 nStorageId;
+ UINT16 nFmlaLen;
+ rIn >> nFmlaLen;
+ BOOL bSizeOk = (bLinked && (sizeof(nFmlaLen) + nFmlaLen == nLen))
+ || (!bLinked && (sizeof(nFmlaLen) + nFmlaLen + sizeof(nStorageId) == nLen));
+ DBG_ASSERT( bSizeOk || !bLinked, "ExcEscherOle::ReadPictFmla: bad linked size" );
+ DBG_ASSERT( bSizeOk || bLinked, "ExcEscherOle::ReadPictFmla: bad embedded size" );
+ if ( !bSizeOk )
+ return ; //2do: what else?
+
+ String aUserName;
+ ULONG nPos0 = rIn.Tell(); // fmla start
+ BOOL bOk = TRUE;
+ if ( bLinked )
+ {
+ UINT16 n16;
+ rIn >> n16; // should be 7 but who knows ...
+ bOk = (n16 + 3 <= nFmlaLen);
+ DBG_ASSERT( bOk, "ExcEscherOle::ReadPictFmla: linked length mismatch" );
+ if ( bOk )
+ {
+ rIn.SeekRel( n16 );
+ UINT8 n8;
+ rIn >> n8;
+ bOk = (n8 == 0x01);
+ DBG_ASSERT( bOk, "ExcEscherOle::ReadPictFmla: no sheet start" );
+ if ( bOk )
+ {
+ rIn >> n16; // EXTERNSHEET based 0, EXTERNNAME based 1
+ const ExtName* pExtName = pExcRoot->pExtNameBuff->GetName( n16 + 1 );
+ bOk = (pExtName && pExtName->IsOLE());
+ DBG_ASSERT( bOk, "ExcEscherOle::ReadPictFmla: EXTERNNAME not found or not OLE" );
+ if ( bOk )
+ nStorageId = pExtName->nStorageId;
+ }
+ }
+ }
+ else
+ {
+ UINT16 n16;
+ rIn >> n16; // should be 5 but who knows ...
+ DBG_ASSERT( n16 + 4 <= nFmlaLen, "ExcEscherOle::ReadPictFmla: embedded length mismatch" );
+ if ( n16 + 4 <= nFmlaLen )
+ {
+ rIn.SeekRel( n16 + 4 );
+ UINT8 n8;
+ rIn >> n8;
+ DBG_ASSERT( n8 == 0x03, "ExcEscherOle::ReadPictFmla: no name start" );
+ if ( n8 == 0x03 )
+ {
+ rIn >> n16; // string length
+ if ( n16 )
+ { // the 4th way Xcl stores a unicode string: not even a Grbit byte present if length 0
+ INT32 nLeft = INT32(nFmlaLen) - (rIn.Tell() - nPos0);
+ aUserName = ReadUnicodeString( rIn, nLeft, *pExcRoot->pCharset, n16 );
+ // 0:= ID follows, 1:= pad byte + ID
+ DBG_ASSERT( nLeft == 0 || nLeft == 1, "ExcEscherOle::ReadPictFmla: unknown left over" );
+ }
+ }
+ }
+ rIn.Seek( nPos0 + nFmlaLen );
+ rIn >> nStorageId;
+ }
+ if ( bOk )
+ {
+ aStorageName.AssignAscii( bLinked ? "LNK" : "MBD" );
+ sal_Char aBuf[ sizeof(UINT32) * 2 + 1 ];
+ sprintf( aBuf, "%08X", nStorageId );
+ aStorageName.AppendAscii( aBuf );
+ }
+}
+
+
+void ExcEscherOle::CreateSdrOle( Biff8MSDffManager& rDffMan )
+{
+ if( pAnchor && aStorageName.Len() )
+ {
+ Graphic aGraph;
+ if( rDffMan.GetBLIP( nBlipId, aGraph ) )
+ {
+ SvStorageRef xSrc = pExcRoot->pRootStorage;
+ SvStorageRef xDst( pExcRoot->pDoc->GetDocumentShell()->GetStorage() );
+ SdrOle2Obj* pRet = SvxMSDffManager::CreateSdrOLEFromStorage(
+ aStorageName, xSrc, xDst, aGraph, *pAnchor, NULL );
+ if( pRet )
+ SetObj( pRet );
+ }
+ }
+}
+
+
+void ExcEscherOle::Apply()
+{
+ if( pSdrObj && pAnchor )
+ {
+ if( pSdrObj->ISA( SdrOle2Obj ) )
+ {
+ SvInfoObject* pInfoObj =
+ pExcRoot->pDoc->GetDocumentShell()->InsertObject(
+ ((SdrOle2Obj*)pSdrObj)->GetObjRef(), EMPTY_STRING );
+
+ DBG_ASSERT( pInfoObj, "ExcEscherOle::Apply: no InfoObject" );
+
+ if( pInfoObj )
+ ((SdrOle2Obj*)pSdrObj)->SetName( pInfoObj->GetObjName() );
+ }
+ pExcRoot->pDoc->GetDrawLayer()->GetPage( nTab )->InsertObject( pSdrObj );
+ pSdrObj = NULL;
+ }
+}
+
+
+
+
+ExcEscherDrwObj::ExcEscherDrwObj( ExcEscherObj*& rpCAD ): ExcEscherObj( *rpCAD )
+{
+ delete rpCAD;
+ rpCAD = NULL;
+}
+
+
+ExcEscherDrwObj::~ExcEscherDrwObj()
+{
+}
+
+
+OBJECTTYPE ExcEscherDrwObj::GetObjType( void ) const
+{
+ return OT_PICTURE;
+}
+
+
+
+
+void ExcEscherTxo::ApplyTextOnObject( SdrObject* p_Obj )
+{
+ if( bIsApplied )
+ return;
+
+ SdrObject* pObj = p_Obj? p_Obj : pSdrObj;
+
+ if( pObj && pObj->ISA( SdrTextObj ) )
+ {
+ SdrTextObj* pTxtObj = ( SdrTextObj* ) pObj;
+
+ bIsApplied = TRUE;
+
+ if( pFormText )
+ {
+ OutlinerParaObject* pOPO = new OutlinerParaObject( *pFormText );
+ pOPO->SetOutlinerMode( OUTLINERMODE_TEXTOBJECT );
+ pTxtObj->NbcSetOutlinerParaObject( pOPO );
+ }
+ else if( pText )
+ pTxtObj->SetText( *pText );
+ else
+ bIsApplied = FALSE;
+ }
+}
+
+
+ExcEscherTxo::ExcEscherTxo( ExcEscherObj*& rpCAD ): ExcEscherObj( *rpCAD )
+{
+ pText = NULL;
+ pFormText = NULL;
+
+ delete rpCAD;
+ rpCAD = NULL;
+
+ bIsApplied = FALSE;
+}
+
+
+ExcEscherTxo::~ExcEscherTxo()
+{
+ if( pText )
+ delete pText;
+}
+
+
+OBJECTTYPE ExcEscherTxo::GetObjType( void ) const
+{
+ return OT_TXO;
+}
+
+
+void ExcEscherTxo::SetObj( SdrObject* p )
+{
+ ExcEscherObj::SetObj( p );
+
+ ApplyTextOnObject();
+}
+
+
+void ExcEscherTxo::SetText( const String& r )
+{
+ if( pText )
+ *pText = r;
+ else
+ pText = new String( r );
+
+ ApplyTextOnObject();
+}
+
+
+void ExcEscherTxo::TakeTxo( TxoCont& r )
+{
+ if( r.HasFormText() )
+ {
+ if( pFormText )
+ delete pFormText;
+
+ pFormText = r.pFormText;
+
+ r.pFormText = NULL; // jetzt hab ich's!
+ }
+
+ if( r.HasText() )
+ {
+ if( pText )
+ delete pText;
+
+ pText = r.pText;
+
+ r.pText = NULL; // noch einen!
+ }
+
+ ApplyTextOnObject();
+}
+
+
+void ExcEscherTxo::Apply( void )
+{
+ ApplyTextOnObject();
+
+ ExcEscherObj::Apply();
+}
+
+
+void ExcEscherTxo::Apply( SdrObject* p )
+{
+ ApplyTextOnObject( p );
+}
+
+
+ExcEscherNote::ExcEscherNote( ExcEscherObj*& rpCAD ) : ExcEscherTxo( rpCAD )
+{
+}
+
+
+OBJECTTYPE ExcEscherNote::GetObjType( void ) const
+{
+ return OT_NOTE;
+}
+
+
+void ExcEscherNote::Apply( void )
+{
+}
+
+
+
+
+BOOL ExcEscherObjList::SetTabStart( const UINT16 n )
+{
+ if( n == nLastReqTab )
+ return TRUE;
+
+ UINT32 nSrchIndx;
+ if( n > nLastReqTab )
+ nSrchIndx = nLastReqTabStart + 1;
+ else
+ nSrchIndx = 0;
+
+ ExcEscherObj* p = ( ExcEscherObj* ) GetObject( nSrchIndx );
+
+ while( p )
+ {
+ if( p->nTab == n )
+ {
+ nLastReqTab = n;
+ nLastReqTabStart = nSrchIndx;
+
+ return TRUE;
+ }
+
+ nSrchIndx++;
+ p = ( ExcEscherObj* ) GetObject( nSrchIndx );
+ }
+
+ return FALSE;
+}
+
+
+ExcEscherObjList::ExcEscherObjList( PosBuffer& r, RootData* p ) : rPosBuffer( r ), ExcRoot( p )
+{
+ nLastReqTabStart = 0;
+ nLastReqTab = 0;
+}
+
+
+ExcEscherObjList::~ExcEscherObjList()
+{
+ ExcEscherObj* p = ( ExcEscherObj* ) First();
+
+ while( p )
+ {
+ delete p;
+ p = ( ExcEscherObj* ) Next();
+ }
+}
+
+
+void ExcEscherObjList::Append( ExcEscherObj* p )
+{
+ rPosBuffer.Append( p->nStrPosStart, p->nStrPosEnd, Count(), p->nTab );
+
+ List::Insert( p, LIST_APPEND );
+}
+
+
+void ExcEscherObjList::MorpheLastObj( ExcEscherObj* p )
+{
+ UINT32 n = Count();
+
+ if( n )
+ {
+ n--;
+
+ ExcEscherObj* pOld = ( ExcEscherObj* ) GetObject( n );
+
+ p->MorpheFrom( pOld );
+
+ Replace( p, n );
+ }
+}
+
+
+const ExcEscherObj* ExcEscherObjList::Get( const UINT32 n, const UINT16 nTab ) const
+{
+ if( nTab == 0xFFFF )
+ return ( const ExcEscherObj* ) List::GetObject( n );
+ else if( ( ( ExcEscherObjList* ) this )->SetTabStart( nTab ) )
+ {
+ UINT32 nPos = nLastReqTabStart;
+ const ExcEscherObj* p;
+ while ( (p = ( const ExcEscherObj* ) List::GetObject( nPos )) &&
+ p->nTab == nTab )
+ {
+ if ( n == p->GetId() )
+ return p;
+ ++nPos;
+ }
+ }
+ return NULL;
+}
+
+
+ExcEscherTxo* ExcEscherObjList::GetTxo( const UINT32 nObjNum, const UINT16 nTab ) const
+{
+ const ExcEscherObj* p = Get( nObjNum, nTab );
+
+ if( p->GetObjType() == OT_TXO )
+ return ( ExcEscherTxo* ) p;
+ else
+ return NULL;
+}
+
+
+void ExcEscherObjList::SetData( const UINT32 n, SdrObject* pDrObj )
+{
+ ExcEscherObj* p = ( ExcEscherObj* ) Get( n );
+
+ if( p )
+ p ->SetObj( pDrObj );
+ else
+ delete pDrObj;
+}
+
+
+void ExcEscherObjList::SetData( const UINT32 n, const Rectangle& r )
+{
+ ExcEscherObj* p = ( ExcEscherObj* ) Get( n );
+
+ if( p )
+ p->SetAnchor( r );
+}
+
+
+void ExcEscherObjList::SetData( const UINT32 n, const Rectangle& rA, SdrObject* pDrObj )
+{
+ ExcEscherObj* p = ( ExcEscherObj* ) Get( n );
+
+ if( p )
+ {
+ p->SetAnchor( rA );
+
+ p->SetObj( pDrObj );
+ }
+ else
+ delete pDrObj;
+}
+
+
+void ExcEscherObjList::Apply( void )
+{
+ ExcEscherObj* p = ( ExcEscherObj* ) First();
+
+ while( p )
+ {
+ p->Apply();
+
+ if( p->GetObjType() == OT_CHART && pExcRoot->pProgress )
+ pExcRoot->pProgress->Progress();
+
+ p = ( ExcEscherObj* ) Next();
+ }
+}
+
diff --git a/sc/source/filter/excel/excrecds.cxx b/sc/source/filter/excel/excrecds.cxx
new file mode 100644
index 000000000000..55100f232491
--- /dev/null
+++ b/sc/source/filter/excel/excrecds.cxx
@@ -0,0 +1,4327 @@
+/*************************************************************************
+ *
+ * $RCSfile: excrecds.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/editdata.hxx>
+#include <svx/editeng.hxx>
+#include <svx/editobj.hxx>
+#include <svx/editstat.hxx>
+
+#define ITEMID_FIELD EE_FEATURE_FIELD
+#include <svx/flditem.hxx>
+#undef ITEMID_FIELD
+
+#include <svx/algitem.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/brshitem.hxx>
+#include <svx/pageitem.hxx>
+#include <svx/paperinf.hxx>
+#include <svx/sizeitem.hxx>
+#include <svtools/intitem.hxx>
+#include <svtools/zforlist.hxx>
+#include <svtools/zformat.hxx>
+
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+
+#include <string.h>
+
+#include "global.hxx"
+#include "docpool.hxx"
+#include "patattr.hxx"
+#include "cell.hxx"
+#include "document.hxx"
+#include "patattr.hxx"
+#include "attrib.hxx"
+#include "dociter.hxx"
+#include "progress.hxx"
+#include "rangenam.hxx"
+#include "dbcolect.hxx"
+#include "stlsheet.hxx"
+#include "stlpool.hxx"
+#include "editutil.hxx"
+
+#include "excrecds.hxx"
+#include "root.hxx"
+#include "fontbuff.hxx"
+#include "excupn.hxx"
+
+#include "xcl97exp.hxx"
+#include "xcl97rec.hxx"
+
+
+
+
+//---------------------------------------------------- class ExcETabNumBuffer -
+
+ExcETabNumBuffer::ExcETabNumBuffer( ScDocument& rDoc )
+{
+ nScCnt = rDoc.GetTableCount();
+ pBuffer = nScCnt ? new UINT32[ nScCnt ] : NULL;
+
+ for( UINT16 nTab = 0; nTab < nScCnt; nTab++ )
+ {
+ pBuffer[ nTab ] = 0;
+
+ // ignored tables (skipped by export, invalid Excel table number)
+ if( rDoc.IsScenario( nTab ) )
+ pBuffer[ nTab ] = EXC_TABBUF_FLAGIGNORE;
+
+ // external tables (skipped, with valid Excel table number for ref's)
+ else if( rDoc.GetLinkMode( nTab ) == SC_LINK_VALUE )
+ pBuffer[ nTab ] = EXC_TABBUF_FLAGEXT;
+ }
+ ApplyBuffer();
+}
+
+ExcETabNumBuffer::~ExcETabNumBuffer()
+{
+ if( pBuffer )
+ delete[] pBuffer;
+}
+
+void ExcETabNumBuffer::ApplyBuffer()
+{
+ UINT16 nIndex = 0;
+ UINT16 nTab;
+ nExcCnt = nExtCnt = 0;
+
+ // regular tables
+ for( nTab = 0; nTab < nScCnt; nTab++ )
+ {
+ if( IsExportTable( nTab ) )
+ {
+ pBuffer[ nTab ] |= nIndex;
+ nIndex++;
+ nExcCnt++;
+ }
+ else
+ pBuffer[ nTab ] |= EXC_TABBUF_INVALID;
+ }
+
+ // external tables
+ for( nTab = 0; nTab < nScCnt; nTab++ )
+ if( IsExternal( nTab ) )
+ {
+ pBuffer[ nTab ] &= EXC_TABBUF_MASKFLAGS;
+ pBuffer[ nTab ] |= nIndex;
+ nIndex++;
+ nExtCnt++;
+ }
+}
+
+BOOL ExcETabNumBuffer::IsExternal( UINT16 nScTab ) const
+{
+ DBG_ASSERT( nScTab < nScCnt, "ExcETabNumBuffer::IsExternal() - out of range!" );
+ return TRUEBOOL( pBuffer[ nScTab ] & EXC_TABBUF_FLAGEXT );
+}
+
+BOOL ExcETabNumBuffer::IsExportTable( UINT16 nScTab ) const
+{
+ DBG_ASSERT( nScTab < nScCnt, "ExcETabNumBuffer::IsExportTable() - out of range!" );
+ return (pBuffer[ nScTab ] & EXC_TABBUF_MASKFLAGS) == 0;
+}
+
+UINT16 ExcETabNumBuffer::GetExcTable( UINT16 nScTab ) const
+{
+ if( nScTab < nScCnt )
+ return (UINT16)(pBuffer[ nScTab ] & EXC_TABBUF_MASKTAB);
+ return EXC_TABBUF_INVALID;
+}
+
+
+
+
+//----------------------------------------------------------- class ExcRecord -
+const UINT16 ExcRecord::nIgnore = 0;
+
+//------------------------------------------------------------- class ExcCell -
+UsedAttrList* ExcCell::pXFRecs = NULL;
+UINT32 ExcCell::nCellCount = 0UL;
+ScProgress* ExcCell::pPrgrsBar = NULL;
+#ifdef DBG_UTIL
+INT32 ExcCell::_nRefCount = 0L;
+#endif
+
+
+//--------------------------------------------------------- class ExcDummy_00 -
+const BYTE ExcDummy_00::pMyData[] = {
+ 0xe1, 0x00, 0x00, 0x00, // INTERFACEHDR
+ 0xc1, 0x00, 0x02, 0x00, 0x00, 0x00, // MMS
+ 0xbf, 0x00, 0x00, 0x00, // TOOLBARHDR
+ 0xc0, 0x00, 0x00, 0x00, // TOOLBAREND
+ 0xe2, 0x00, 0x00, 0x00, // INTERFACEEND
+ 0x5c, 0x00, 0x20, 0x00, 0x04, 0x4d, 0x72, 0x20, 0x58, // WRITEACCESS
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x42, 0x00, 0x02, 0x00, 0xe4, 0x04, // CODEPAGE
+ 0x9c, 0x00, 0x02, 0x00, 0x0e, 0x00 // FNGROUPCOUNT
+};
+const UINT16 ExcDummy_00::nMyLen = sizeof( ExcDummy_00::pMyData );
+// ( UINT16 ) 0x00 + 0x02 + 0x00 + 0x00 + 0x00 + 0x20 +
+// 0x02 + 0x02 + 8 * 4;
+
+//-------------------------------------------------------- class ExcDummy_04x -
+const BYTE ExcDummy_040::pMyData[] = {
+ 0x19, 0x00, 0x02, 0x00, 0x00, 0x00, // WINDOWPROTECT
+ 0x12, 0x00, 0x02, 0x00, 0x00, 0x00, // PROTECT
+ 0x13, 0x00, 0x02, 0x00, 0x00, 0x00, // PASSWORD
+ 0x3d, 0x00, 0x12, 0x00, 0xe0, 0x01, 0x5a, 0x00, 0xcf, // WINDOW1
+ 0x3f, 0x4e, 0x2a, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x58, 0x02,
+ 0x40, 0x00, 0x02, 0x00, 0x00, 0x00, // BACKUP
+ 0x8d, 0x00, 0x02, 0x00, 0x00, 0x00, // HIDEOBJ
+};
+const UINT16 ExcDummy_040::nMyLen = sizeof( ExcDummy_040::pMyData );
+// ( UINT16 ) 0x02 + 0x02 + 0x02 + 0x12 + 0x02 + 0x02 + 6 * 4;
+
+const BYTE ExcDummy_041::pMyData[] = {
+ 0x0e, 0x00, 0x02, 0x00, 0x01, 0x00, // PRECISION
+ 0xda, 0x00, 0x02, 0x00, 0x00, 0x00 // BOOKBOOL
+};
+const UINT16 ExcDummy_041::nMyLen = sizeof( ExcDummy_041::pMyData );
+// ( UINT16 ) 0x02 + 0x02 + 2 * 4;
+
+//--------------------------------------------------------- class ExcDummy_01-
+// Default Font Records
+const BYTE ExcDummy_01::pMyData[] = { //////////
+ 0x31, 0x00, 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x90, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x05, 0x41, 0x72, 0x69, 0x61, 0x6c,
+ // 'alter Wert 0xa5, hier Reserved
+ 0x31, 0x00, 0x14, 0x00, 0xc8, 0x00, 0x01, 0x00, 0xff, 0x7f, 0xbc, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x05, 0x41, 0x72, 0x69, 0x61, 0x6c,
+
+ 0x31, 0x00, 0x14, 0x00, 0xc8, 0x00, 0x02, 0x00, 0xff, 0x7f, 0x90, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x05, 0x41, 0x72, 0x69, 0x61, 0x6c,
+
+ 0x31, 0x00, 0x14, 0x00, 0xc8, 0x00, 0x03, 0x00, 0xff, 0x7f, 0xbc, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x05, 0x41, 0x72, 0x69, 0x61, 0x6c,
+
+ 0x31, 0x00, 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x90, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x05, 0x41, 0x72, 0x69, 0x61, 0x6c
+};
+const UINT16 ExcDummy_01::nMyLen = sizeof( ExcDummy_01::pMyData ); //( ( UINT16 ) 0x14 + 4 ) * 5;
+
+
+//--------------------------------------------------------- class ExcDummy_Fm -
+const BYTE ExcDummy_Fm::pMyData[] = {
+ 0x1e, 0x04, 0x1c, 0x00, 0x05, 0x00, 0x19, 0x23, 0x2c, 0x23, 0x23, 0x30,
+ 0x5c, 0x20, 0x22, 0x44, 0x4d, 0x22, 0x3b, 0x5c, 0x2d, 0x23, 0x2c, 0x23,
+ 0x23, 0x30, 0x5c, 0x20, 0x22, 0x44, 0x4d, 0x22,
+ 0x1e, 0x04, 0x21, 0x00, 0x06, 0x00, 0x1e, 0x23, 0x2c, 0x23, 0x23, 0x30,
+ 0x5c, 0x20, 0x22, 0x44, 0x4d, 0x22, 0x3b, 0x5b, 0x52, 0x65, 0x64, 0x5d,
+ 0x5c, 0x2d, 0x23, 0x2c, 0x23, 0x23, 0x30, 0x5c, 0x20, 0x22, 0x44, 0x4d,
+ 0x22,
+ 0x1e, 0x04, 0x22, 0x00, 0x07, 0x00, 0x1f, 0x23, 0x2c, 0x23, 0x23, 0x30,
+ 0x2e, 0x30, 0x30, 0x5c, 0x20, 0x22, 0x44, 0x4d, 0x22, 0x3b, 0x5c, 0x2d,
+ 0x23, 0x2c, 0x23, 0x23, 0x30, 0x2e, 0x30, 0x30, 0x5c, 0x20, 0x22, 0x44,
+ 0x4d, 0x22,
+ 0x1e, 0x04, 0x27, 0x00, 0x08, 0x00, 0x24, 0x23, 0x2c, 0x23, 0x23, 0x30,
+ 0x2e, 0x30, 0x30, 0x5c, 0x20, 0x22, 0x44, 0x4d, 0x22, 0x3b, 0x5b, 0x52,
+ 0x65, 0x64, 0x5d, 0x5c, 0x2d, 0x23, 0x2c, 0x23, 0x23, 0x30, 0x2e, 0x30,
+ 0x30, 0x5c, 0x20, 0x22, 0x44, 0x4d, 0x22,
+ 0x1e, 0x04, 0x3c, 0x00, 0x2a, 0x00, 0x39, 0x5f, 0x2d, 0x2a, 0x20, 0x23,
+ 0x2c, 0x23, 0x23, 0x30, 0x5c, 0x20, 0x22, 0x44, 0x4d, 0x22, 0x5f, 0x2d,
+ 0x3b, 0x5c, 0x2d, 0x2a, 0x20, 0x23, 0x2c, 0x23, 0x23, 0x30, 0x5c, 0x20,
+ 0x22, 0x44, 0x4d, 0x22, 0x5f, 0x2d, 0x3b, 0x5f, 0x2d, 0x2a, 0x20, 0x22,
+ 0x2d, 0x22, 0x5c, 0x20, 0x22, 0x44, 0x4d, 0x22, 0x5f, 0x2d, 0x3b, 0x5f,
+ 0x2d, 0x40, 0x5f, 0x2d,
+ 0x1e, 0x04, 0x3c, 0x00, 0x29, 0x00, 0x39, 0x5f, 0x2d, 0x2a, 0x20, 0x23,
+ 0x2c, 0x23, 0x23, 0x30, 0x5c, 0x20, 0x5f, 0x44, 0x5f, 0x4d, 0x5f, 0x2d,
+ 0x3b, 0x5c, 0x2d, 0x2a, 0x20, 0x23, 0x2c, 0x23, 0x23, 0x30, 0x5c, 0x20,
+ 0x5f, 0x44, 0x5f, 0x4d, 0x5f, 0x2d, 0x3b, 0x5f, 0x2d, 0x2a, 0x20, 0x22,
+ 0x2d, 0x22, 0x5c, 0x20, 0x5f, 0x44, 0x5f, 0x4d, 0x5f, 0x2d, 0x3b, 0x5f,
+ 0x2d, 0x40, 0x5f, 0x2d,
+ 0x1e, 0x04, 0x44, 0x00, 0x2c, 0x00, 0x41, 0x5f, 0x2d, 0x2a, 0x20, 0x23,
+ 0x2c, 0x23, 0x23, 0x30, 0x2e, 0x30, 0x30, 0x5c, 0x20, 0x22, 0x44, 0x4d,
+ 0x22, 0x5f, 0x2d, 0x3b, 0x5c, 0x2d, 0x2a, 0x20, 0x23, 0x2c, 0x23, 0x23,
+ 0x30, 0x2e, 0x30, 0x30, 0x5c, 0x20, 0x22, 0x44, 0x4d, 0x22, 0x5f, 0x2d,
+ 0x3b, 0x5f, 0x2d, 0x2a, 0x20, 0x22, 0x2d, 0x22, 0x3f, 0x3f, 0x5c, 0x20,
+ 0x22, 0x44, 0x4d, 0x22, 0x5f, 0x2d, 0x3b, 0x5f, 0x2d, 0x40, 0x5f, 0x2d,
+
+ 0x1e, 0x04, 0x44, 0x00, 0x2b, 0x00, 0x41, 0x5f, 0x2d, 0x2a, 0x20, 0x23,
+ 0x2c, 0x23, 0x23, 0x30, 0x2e, 0x30, 0x30, 0x5c, 0x20, 0x5f, 0x44, 0x5f,
+ 0x4d, 0x5f, 0x2d, 0x3b, 0x5c, 0x2d, 0x2a, 0x20, 0x23, 0x2c, 0x23, 0x23,
+ 0x30, 0x2e, 0x30, 0x30, 0x5c, 0x20, 0x5f, 0x44, 0x5f, 0x4d, 0x5f, 0x2d,
+ 0x3b, 0x5f, 0x2d, 0x2a, 0x20, 0x22, 0x2d, 0x22, 0x3f, 0x3f, 0x5c, 0x20,
+ 0x5f, 0x44, 0x5f, 0x4d, 0x5f, 0x2d, 0x3b, 0x5f, 0x2d, 0x40, 0x5f, 0x2d
+};
+const UINT16 ExcDummy_Fm::nMyLen = sizeof( ExcDummy_Fm::pMyData );
+// ( UINT16 ) 0x1c + 0x21 + 0x22 + 0x27 + 0x3c + 0x3c + 0x44 + 0x44 + 4 * 8;
+
+
+//--------------------------------------------------------- class ExcDummy_XF -
+const BYTE ExcDummy_XF::pMyData[] = {
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0x00,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x05, 0x00, 0x2b, 0x00, 0xf5, 0xff, 0x20, 0xf8,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x05, 0x00, 0x29, 0x00, 0xf5, 0xff, 0x20, 0xf8,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x05, 0x00, 0x09, 0x00, 0xf5, 0xff, 0x20, 0xf8,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x05, 0x00, 0x2c, 0x00, 0xf5, 0xff, 0x20, 0xf8,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x00, 0x10, 0x00, 0x05, 0x00, 0x2a, 0x00, 0xf5, 0xff, 0x20, 0xf8,
+ 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+const UINT16 ExcDummy_XF::nMyLen = sizeof( ExcDummy_XF::pMyData );
+// ( UINT16 ) ( 0x10 + 4 ) * 21;
+
+//------------------------------------------------------ class ExcDummy_Style -
+const BYTE ExcDummy_Style::pMyData[] = {
+ 0x93, 0x02, 0x04, 0x00, 0x10, 0x80, 0x03, 0xff,
+ 0x93, 0x02, 0x04, 0x00, 0x11, 0x80, 0x06, 0xff,
+ 0x93, 0x02, 0x04, 0x00, 0x12, 0x80, 0x05, 0xff,
+ 0x93, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0xff,
+ 0x93, 0x02, 0x04, 0x00, 0x13, 0x80, 0x04, 0xff,
+ 0x93, 0x02, 0x04, 0x00, 0x14, 0x80, 0x07, 0xff
+};
+const UINT16 ExcDummy_Style::nMyLen = sizeof( ExcDummy_Style::pMyData );
+// ( UINT16 ) ( 0x04 + 4 ) * 6;
+
+//--------------------------------------------------------- class ExcDummy_02 -
+const BYTE ExcDummy_02::pMyData[] = {
+ 0x0d, 0x00, 0x02, 0x00, 0x01, 0x00, // CALCMODE
+ 0x0c, 0x00, 0x02, 0x00, 0x64, 0x00, // CALCCOUNT
+ 0x0f, 0x00, 0x02, 0x00, 0x01, 0x00, // REFMODE
+ 0x11, 0x00, 0x02, 0x00, 0x00, 0x00, // ITERATION
+ 0x10, 0x00, 0x08, 0x00, 0xfc, 0xa9, 0xf1, 0xd2, 0x4d, // DELTA
+ 0x62, 0x50, 0x3f,
+ 0x5f, 0x00, 0x02, 0x00, 0x01, 0x00, // SAVERECALC
+// 0x2a, 0x00, 0x02, 0x00, 0x00, 0x00, // PRINTHEADERS
+// 0x2b, 0x00, 0x02, 0x00, 0x01, 0x00, // PRINTGRIDLINES
+ 0x82, 0x00, 0x02, 0x00, 0x00, 0x00, // GRIDSET
+// 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // GUTS
+// 0x00, 0x00, 0x00,
+ 0x25, 0x02, 0x04, 0x00, 0x00, 0x00, 0xff, 0x00, // DEFAULTROWHEIGHT
+ 0x8c, 0x00, 0x04, 0x00, 0x31, 0x00, 0x31, 0x00, // COUNTRY
+ 0x81, 0x00, 0x02, 0x00, 0xc1, 0x04, // WSBOOL
+// 0x14, 0x00, 0x03, 0x00, 0x02, 0x26, 0x41, // HEADER
+// 0x15, 0x00, 0x09, 0x00, 0x08, 0x53, 0x65, 0x69, 0x74, // FOOTER
+// 0x65, 0x20, 0x26, 0x50,
+// 0x83, 0x00, 0x02, 0x00, 0x00, 0x00, // HCENTER
+// 0x84, 0x00, 0x02, 0x00, 0x00, 0x00, // VCENTER
+// 0xa1, 0x00, 0x22, 0x00, 0x00, 0x00, 0x31, 0x00, 0x01, // SETUP
+// 0x00, 0x01, 0x00, 0x01, 0x00, 0x44, 0x00, 0x72, 0x75,
+// 0x6e, 0x67, 0xc1, 0x8d, 0xb0, 0x82, 0xc1, 0x60, 0xe0,
+// 0x3f, 0xc1, 0x8d, 0xb0, 0x82, 0xc1, 0x60, 0xe0, 0x3f,
+// 0xf0, 0x00//,
+// 0x55, 0x00, 0x02, 0x00, 0x0a, 0x00 // DEFCOLWIDTH
+};
+const UINT16 ExcDummy_02::nMyLen = sizeof( ExcDummy_02::pMyData );
+// ( UINT16 ) 0x02 + 0x02 + 0x02 + 0x02 +
+// 0x08 + 0x02 + 0x02 + 0x02 + 0x02 + 0x08 + 0x04 + 0x04 + 0x02 + /*0x03 +*/
+// /*0x09 +*/ 0x02 + 0x02 + /*0x22 +*/ /*0x02 + */15 * 4;
+
+
+//--------------------------------------------------------- class ExcDummy_03 -
+const BYTE ExcDummy_03::pMyData[] = {
+ 0x1d, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // SELECTION
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00
+};
+const UINT16 ExcDummy_03::nMyLen = sizeof( ExcDummy_03::pMyData );
+
+
+ExcPalette2* ExcFont::pPalette2 = NULL;
+#ifdef DBG_UTIL
+UINT16 ExcFont::nObjCnt = 0;
+#endif
+
+ExcPalette2* ExcXf::pPalette2 = NULL;
+#ifdef DBG_UTIL
+UINT16 ExcXf::nObjCnt = 0;
+#endif
+
+SvNumberFormatter* ExcFormat::pFormatter = NULL;
+UINT32 ExcFormat::nObjCnt = 0;
+
+
+
+
+//----------------------------------------------------------- class ExcRecord -
+
+void ExcRecord::SaveCont( SvStream& rStr )
+{
+}
+
+
+void ExcRecord::_Save( SvStream& rStr )
+{
+ rStr << ( UINT16 ) GetNum() << ( UINT16 ) GetLen();
+}
+
+
+ExcRecord::~ExcRecord()
+{
+}
+
+
+void ExcRecord::Save( SvStream& rStr )
+{
+ _Save( rStr );
+ SaveCont( rStr );
+}
+
+
+
+
+ExcRecordList::~ExcRecordList()
+{
+ ExcRecord* p = First();
+
+ while( p )
+ {
+ delete p;
+ p = Next();
+ }
+}
+
+
+UINT16 ExcRecordList::GetNum( void ) const
+{
+ return 0; // doesn't matter, dummy
+}
+
+
+UINT16 ExcRecordList::GetLen( void ) const
+{
+ const UINT32 nEnd = Count();
+ UINT32 n;
+ UINT16 nLen = 0;
+
+ for( n = 0 ; n < nEnd ; n++ )
+ nLen += Get( n )->GetLen();
+
+ return nLen;
+}
+
+
+void ExcRecordList::Save( SvStream& r )
+{
+ ExcRecord* p = First();
+
+ while( p )
+ {
+ p->Save( r );
+ p = Next();
+ }
+}
+
+
+
+
+//--------------------------------------------------------- class ExcEmptyRec -
+
+void ExcEmptyRec::_Save( SvStream& rStrm )
+{ }
+
+void ExcEmptyRec::Save( SvStream& rStrm )
+{ }
+
+UINT16 ExcEmptyRec::GetNum() const
+{
+ return 0;
+}
+
+UINT16 ExcEmptyRec::GetLen() const
+{
+ return 0;
+}
+
+
+
+//--------------------------------------------------------- class ExcDummyRec -
+
+void ExcDummyRec::Save( SvStream& rStr )
+{
+ rStr.Write( GetData(), GetLen() );
+}
+
+
+UINT16 ExcDummyRec::GetNum( void ) const
+{
+ return 0x0000; // weil Banane
+}
+
+
+
+
+ExcBof_Base::ExcBof_Base( void )
+{
+ nRupBuild = 0x096c; // von Excel abgeschrieben
+ nRupYear = 0x07c9; // "
+}
+
+
+
+
+void ExcCell::SaveCont( SvStream& rStr )
+{
+ if( pPrgrsBar )
+ pPrgrsBar->SetState( GetCellCount() );
+
+ IncCellCount();
+
+ rStr << ( UINT16 ) aPos.Row() << ( UINT16 ) aPos.Col() << nXF;
+ SaveDiff( rStr );
+}
+
+
+void ExcCell::SaveDiff( SvStream& )
+{
+}
+
+
+ExcCell::ExcCell( const ScAddress rPos, const ScPatternAttr* pAttr,
+ const ULONG nAltNumForm, BOOL bForceAltNumForm ) :
+ aPos( rPos )
+{
+ if( pPrgrsBar )
+ pPrgrsBar->SetState( GetCellCount() );
+
+ IncCellCount();
+
+ // Basis-Daten
+ DBG_ASSERT( pXFRecs, "-ExcCell::ExcCell(): Halt Fremder!" );
+
+ nXF = pXFRecs->Find( pAttr, FALSE, nAltNumForm, bForceAltNumForm );
+
+#ifdef DBG_UTIL
+ _nRefCount++;
+#endif
+}
+
+
+ExcCell::~ExcCell()
+{
+ pXFRecs = NULL;
+#ifdef DBG_UTIL
+ _nRefCount--;
+ DBG_ASSERT( _nRefCount >= 0, "*ExcCell::~ExcCell(): Das war mindestens einer zuviel!" );
+#endif
+}
+
+
+void ExcCell::SetXFRecs( UsedAttrList *pNewXFRecs )
+{
+ pXFRecs = pNewXFRecs;
+}
+
+
+
+
+ExcBof::ExcBof( void )
+{
+ nDocType = 0x0010;
+ nVers = 0x0500;
+}
+
+
+void ExcBof::SaveCont( SvStream &rStr )
+{
+ rStr << nVers << nDocType << nRupBuild << nRupYear;
+}
+
+
+UINT16 ExcBof::GetNum( void ) const
+{
+ return 0x0809;
+}
+
+
+UINT16 ExcBof::GetLen( void ) const
+{
+ return 8;
+}
+
+
+
+
+ExcBofW::ExcBofW( void )
+{
+ nDocType = 0x0005;
+ nVers = 0x0500;
+}
+
+
+void ExcBofW::SaveCont( SvStream &rStr )
+{
+ rStr << nVers << nDocType << nRupBuild << nRupYear;
+}
+
+
+UINT16 ExcBofW::GetNum( void ) const
+{
+ return 0x0809;
+}
+
+
+UINT16 ExcBofW::GetLen( void ) const
+{
+ return 8;
+}
+
+
+
+
+void ExcFngroupcount::SaveCont( SvStream &rStr )
+{
+ rStr << ( UINT16 ) 0x000E; // abgekupfert von einem Original
+}
+
+
+UINT16 ExcFngroupcount::GetNum( void ) const
+{
+ return 0x009C;
+}
+
+
+UINT16 ExcFngroupcount::GetLen( void ) const
+{
+ return 2;
+}
+
+
+
+
+UINT16 ExcEof::GetNum( void ) const
+{
+ return 0x000A;
+}
+
+
+UINT16 ExcEof::GetLen( void ) const
+{
+ return 0;
+}
+
+
+
+
+UINT16 ExcDummy_00::GetLen( void ) const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy_00::GetData( void ) const
+{
+ return pMyData;
+}
+
+
+
+
+UINT16 ExcDummy_040::GetLen( void ) const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy_040::GetData( void ) const
+{
+ return pMyData;
+}
+
+
+
+
+UINT16 ExcDummy_041::GetLen( void ) const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy_041::GetData( void ) const
+{
+ return pMyData;
+}
+
+
+
+
+void Exc1904::SaveCont( SvStream& r )
+{
+ UINT16 n = b1904? 0x0001 : 0x0000;
+ r << n;
+}
+
+
+Exc1904::Exc1904( ScDocument& r )
+{
+ Date* p = r.GetFormatTable()->GetNullDate();
+ if( p )
+ b1904 = ( *p == Date( 1, 1, 1904 ) );
+ else
+ b1904 = FALSE;
+}
+
+
+UINT16 Exc1904::GetNum( void ) const
+{
+ return 0x0022;
+}
+
+
+UINT16 Exc1904::GetLen( void ) const
+{
+ return 2;
+}
+
+
+
+
+ExcFont::ExcFont( BiffTyp eBiffP ) :
+ eBiff( eBiffP )
+{
+#ifdef DBG_UTIL
+ nObjCnt++;
+#endif
+ DBG_ASSERT( pPalette2, "*ExcFont::ExcFont() - Missing palette!" );
+
+ nNameLen = nHeight = nAttr = nWeight = 0;
+ nUnder = nCharset = 0;
+ nFamily = EXC_FONTFAM_SYSTEM;
+ nSign = 0;
+ bIgnoreCol = TRUE;
+ nColorSer = pPalette2->InsertIndex( EXC_FONTCOL_IGNORE );
+}
+
+
+ExcFont::ExcFont( Font* pFont, BiffTyp eBiffP ) :
+ eBiff( eBiffP )
+{
+#ifdef DBG_UTIL
+ nObjCnt++;
+#endif
+ DBG_ASSERT( pPalette2, "*ExcFont::ExcFont() - Missing palette!" );
+ DBG_ASSERT( pFont, "*ExcFont::ExcFont() - Missing font!" );
+
+ SetName( pFont->GetName() );
+
+ // attributes
+ nAttr = EXC_FONTATTR_NONE;
+ SetItalic( pFont->GetItalic() != ITALIC_NONE );
+ SetStrikeout( pFont->GetStrikeout() != STRIKEOUT_NONE );
+ SetOutline( pFont->IsOutline() );
+ SetShadow( pFont->IsShadow() );
+
+ SetHeight( (UINT16) pFont->GetSize().Height() );
+ SetColor( pPalette2->InsertColor( pFont->GetColor(), EXC_COLOR_CELLTEXT ) );
+ SetWeight( pFont->GetWeight() );
+ SetUnderline( pFont->GetUnderline() );
+ SetFamily( pFont->GetFamily() );
+ SetCharSet( pFont->GetCharSet() );
+
+ // checksum for quick comparison
+ nSign = 0;
+ for( const sal_Unicode* pAkt = sName.GetBuffer(); *pAkt; pAkt++ )
+ nSign += (UINT16) *pAkt;
+ nSign += nWeight * 3;
+ nSign += nCharset * 5;
+ nSign += nNameLen * 7;
+ nSign += nHeight * 11;
+ nSign += nUnder * 13;
+ nSign += nAttr * 17;
+ nSign += nFamily * 19;
+}
+
+
+ExcFont::~ExcFont()
+{
+#ifdef DBG_UTIL
+ DBG_ASSERT( nObjCnt, "ExcFont::ExcFont() - nObjCnt underflow!" );
+ nObjCnt--;
+
+// if( !nObjCnt )
+// pPalette2 = NULL;
+#endif
+}
+
+
+void ExcFont::SetName( const String& rName )
+{
+ sName.Assign( rName );
+ nNameLen = (UINT16) sName.Len();
+}
+
+
+void ExcFont::SetColor( UINT32 nSerial )
+{
+ nColorSer = nSerial;
+ bIgnoreCol = FALSE;
+}
+
+
+void ExcFont::SaveCont( SvStream& rStrm )
+{
+ XclContinue aCont( rStrm, 0, GetLen() );
+
+ rStrm << nHeight // font height
+ << nAttr // attributes
+ << pPalette2->GetColorIndex( nColorSer ) // color index
+ << nWeight // boldeness - Biff5 only
+ << (UINT16)0 // super-/subscript (none)
+ << nUnder // underline
+ << nFamily // family
+ << nCharset // character set
+ << (BYTE) 0xA5; // original from Excel
+
+ // Name
+ DBG_ASSERT( nNameLen < 256, "ExcFont::SaveCont() - sName too long!" );
+ if ( eBiff < Biff8 )
+ {
+ rStrm << (BYTE) nNameLen;
+ rStrm.Write( sName.GetBuffer(), (BYTE) nNameLen );
+ }
+ else
+ {
+ //! always 16-bit
+ XclRawUnicodeString aUni( sName, 255, TRUE );
+ rStrm << (UINT8) aUni.GetLen() << aUni.GetGrbit();
+ aUni.Write( aCont );
+ }
+}
+
+
+BOOL ExcFont::operator==( const ExcFont &rRef ) const
+{
+ if( nSign != rRef.nSign )
+ return FALSE;
+ if( (nColorSer != rRef.nColorSer) && !bIgnoreCol && !rRef.bIgnoreCol )
+ return FALSE;
+ return
+ (
+ (nNameLen == rRef.nNameLen) && (nHeight == rRef.nHeight) &&
+ (nAttr == rRef.nAttr) && (nWeight == rRef.nWeight) &&
+ (nUnder == rRef.nUnder) && (nFamily == rRef.nFamily) &&
+ (nCharset == rRef.nCharset) && (sName == rRef.sName) );
+}
+
+
+void ExcFont::SetPalette( ExcPalette2& rPalette2 )
+{
+ pPalette2 = &rPalette2;
+}
+
+
+UINT16 ExcFont::GetWeight( const FontWeight eWeight )
+{
+ switch( eWeight )
+ {
+ case WEIGHT_DONTKNOW: return EXC_FONTWGHT_DONTKNOW; // DONTCARE
+ case WEIGHT_THIN: return EXC_FONTWGHT_THIN;
+ case WEIGHT_ULTRALIGHT: return EXC_FONTWGHT_ULTRALIGHT;
+ case WEIGHT_LIGHT: return EXC_FONTWGHT_LIGHT;
+ case WEIGHT_SEMILIGHT: return EXC_FONTWGHT_SEMILIGHT;
+ case WEIGHT_NORMAL: return EXC_FONTWGHT_NORMAL;
+ case WEIGHT_MEDIUM: return EXC_FONTWGHT_MEDIUM;
+ case WEIGHT_SEMIBOLD: return EXC_FONTWGHT_SEMIBOLD;
+ case WEIGHT_BOLD: return EXC_FONTWGHT_BOLD;
+ case WEIGHT_ULTRABOLD: return EXC_FONTWGHT_ULTRABOLD;
+ case WEIGHT_BLACK: return EXC_FONTWGHT_BLACK;
+ }
+ return EXC_FONTWGHT_NORMAL;
+}
+
+
+UINT8 ExcFont::GetUnderline( const FontUnderline eUnder )
+{
+ switch( eUnder )
+ {
+ case UNDERLINE_SINGLE: return EXC_FONTUL_SINGLE;
+ case UNDERLINE_DOUBLE: return EXC_FONTUL_DOUBLE;
+ case UNDERLINE_DOTTED: return EXC_FONTUL_DOTTED;
+ }
+ return EXC_FONTUL_NONE;
+}
+
+
+UINT8 ExcFont::GetFamily( const FontFamily eFamily )
+{
+ switch( eFamily )
+ {
+ case FAMILY_DONTKNOW: return EXC_FONTFAM_DONTKNOW;
+ case FAMILY_DECORATIVE: return EXC_FONTFAM_DECORATIVE;
+ case FAMILY_MODERN: return EXC_FONTFAM_MODERN;
+ case FAMILY_ROMAN: return EXC_FONTFAM_ROMAN;
+ case FAMILY_SCRIPT: return EXC_FONTFAM_SCRIPT;
+ case FAMILY_SWISS: return EXC_FONTFAM_SWISS;
+ case FAMILY_SYSTEM: return EXC_FONTFAM_SYSTEM;
+ }
+ DBG_ERROR( "ExcFont::GetFamily() - unknown family!" );
+ return EXC_FONTFAM_DONTKNOW;
+}
+
+
+UINT8 ExcFont::GetCharSet( const rtl_TextEncoding eCharset )
+{
+ switch( eCharset )
+ {
+ case RTL_TEXTENCODING_DONTKNOW: return EXC_FONTCSET_DONTKNOW;
+ case RTL_TEXTENCODING_MS_1252: return EXC_FONTCSET_MS_1252;
+ case RTL_TEXTENCODING_APPLE_ROMAN: return EXC_FONTCSET_APPLE_ROMAN;
+ case RTL_TEXTENCODING_IBM_437: return EXC_FONTCSET_IBM_437;
+ case RTL_TEXTENCODING_IBM_850: return EXC_FONTCSET_IBM_850;
+ case RTL_TEXTENCODING_IBM_860: return EXC_FONTCSET_IBM_860;
+ case RTL_TEXTENCODING_IBM_861: return EXC_FONTCSET_IBM_861;
+ case RTL_TEXTENCODING_IBM_863: return EXC_FONTCSET_IBM_863;
+ case RTL_TEXTENCODING_IBM_865: return EXC_FONTCSET_IBM_865;
+ case (rtl_TextEncoding) 9: return EXC_FONTCSET_SYSTEM;
+ case RTL_TEXTENCODING_SYMBOL: return EXC_FONTCSET_SYMBOL;
+ }
+
+ return EXC_FONTCSET_DONTKNOW;
+}
+
+
+UINT16 ExcFont::GetNum( void ) const
+{
+ return 0x0031;
+}
+
+
+UINT16 ExcFont::GetLen( void ) const
+{
+ return 15 + ( eBiff < Biff8 ? nNameLen : 1 + 2 * nNameLen );
+}
+
+
+
+
+UINT16 ExcDummy_01::GetLen( void ) const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy_01::GetData( void ) const
+{
+ return pMyData;
+}
+
+
+
+
+UINT16 ExcDummy_Fm::GetLen( void ) const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy_Fm::GetData( void ) const
+{
+ return pMyData;
+}
+
+
+
+
+UINT16 ExcDummy_XF::GetLen( void ) const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy_XF::GetData( void ) const
+{
+ return pMyData;
+}
+
+
+
+
+UINT16 ExcDummy_Style::GetLen( void ) const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy_Style::GetData( void ) const
+{
+ return pMyData;
+}
+
+
+
+
+ExcBundlesheet::ExcBundlesheet( RootData* p, const String& rNewName ) : aName( rNewName ), ExcRoot( p )
+{
+ DBG_ASSERT( rNewName.Len() < 256, "*ExcBundlesheet::Ctor: Tabellenname laenger als 255 Zeichen!" );
+
+ nOwnPos = nStrPos = 0xFFFFFFFF;
+}
+
+
+void ExcBundlesheet::SaveCont( SvStream& rStr )
+{
+ nOwnPos = rStr.Tell();
+ ByteString aStr( aName, *pExcRoot->pCharset );
+ BYTE nNameLen = ( BYTE ) aStr.Len(); // max. 255 Zeichen langer Name
+ rStr << ( UINT32 ) 0x00000000 << nIgnore << nNameLen; // Position ist nur Dummy
+ // '-> Worksheet visible
+
+ rStr.Write( aStr.GetBuffer(), nNameLen );
+}
+
+
+void ExcBundlesheet::UpdateStreamPos( SvStream& rOut )
+{
+ rOut.Seek( nOwnPos );
+ rOut << nStrPos;
+}
+
+
+UINT16 ExcBundlesheet::GetNum( void ) const
+{
+ return 0x0085;
+}
+
+
+UINT16 ExcBundlesheet::GetLen( void ) const
+{
+ return 7 + ( UINT16 ) aName.Len();
+}
+
+
+
+
+UINT16 ExcDummy_02::GetLen( void ) const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy_02::GetData( void ) const
+{
+ return pMyData;
+}
+
+
+
+
+ExcNote::ExcNote( const ScAddress aNewPos, const String& rText, RootData& rExcRoot ) :
+ aPos( aNewPos )
+{
+ pText = new ByteString( rText, *rExcRoot.pCharset );
+ nTextLen = ( UINT16 ) pText->Len();
+
+ if( nTextLen > 4080 )
+ {
+ nTextLen = 4080;
+ DBG_WARNING( "ExcNote::ExcNote(): String truncated" );
+ }
+}
+
+
+ExcNote::~ExcNote()
+{
+ delete pText;
+}
+
+
+void ExcNote::SaveCont( SvStream& rStr )
+{
+ rStr << ( UINT16 ) aPos.Row() << ( UINT16 ) aPos.Col() << nTextLen;
+ rStr.Write( pText->GetBuffer(), nTextLen );
+}
+
+
+UINT16 ExcNote::GetNum( void ) const
+{
+ return 0x001C;
+}
+
+
+UINT16 ExcNote::GetLen( void ) const
+{
+ return 6 + nTextLen;
+}
+
+
+
+
+ExcNumber::ExcNumber( const ScAddress rPos, const ScPatternAttr* pAttr,
+ const double& rNewVal ) :
+ ExcCell( rPos, pAttr )
+{
+ fVal = rNewVal;
+}
+
+
+void ExcNumber::SaveDiff( SvStream &rStr )
+{
+ rStr << fVal;
+}
+
+
+UINT16 ExcNumber::GetNum( void ) const
+{
+ return 0x0203;
+}
+
+
+UINT16 ExcNumber::GetLen( void ) const
+{
+ return 6 + 8;
+}
+
+
+
+
+ExcBoolerr::ExcBoolerr( const ScAddress rPos, const ScPatternAttr* pAttr,
+ UINT8 nValP, BOOL bIsError ) :
+ // #73420# force to "no number format" if boolean value
+ ExcCell( rPos, pAttr, (bIsError ? NUMBERFORMAT_ENTRY_NOT_FOUND : 0), !bIsError ),
+ nVal( bIsError ? nValP : (nValP != 0) ),
+ bError( bIsError != 0 )
+{
+}
+
+
+void ExcBoolerr::SaveDiff( SvStream &rStr )
+{
+ rStr << nVal << bError;
+}
+
+
+UINT16 ExcBoolerr::GetNum( void ) const
+{
+ return 0x0205;
+}
+
+
+UINT16 ExcBoolerr::GetLen( void ) const
+{
+ return 6 + 2;
+}
+
+
+
+
+void ExcRKMulRK::SaveCont( SvStream& rStr )
+{
+ if( ExcCell::pPrgrsBar )
+ ExcCell::pPrgrsBar->SetState( ExcCell::GetCellCount() );
+
+ CONT* pAct = ( CONT* ) List::First();
+
+ DBG_ASSERT( pAct, "-ExcRKMulRk::SaveCont(): einen brauch' ich schon! ")
+
+ if( IsRK() )
+ {
+ rStr << ( UINT16 ) aPos.Row() << ( UINT16 ) aPos.Col() << pAct->nXF
+ << pAct->nVal;
+ ExcCell::IncCellCount();
+ }
+ else
+ {
+ UINT16 nLastCol = aPos.Col();
+ rStr << ( UINT16 ) aPos.Row() << nLastCol;
+ while( pAct )
+ {
+ rStr << pAct->nXF << pAct->nVal;
+ pAct = ( CONT* ) List::Next();
+ ExcCell::IncCellCount();
+ nLastCol++;
+ }
+
+ nLastCol--;
+ rStr << nLastCol;
+ }
+}
+
+
+ExcRKMulRK::ExcRKMulRK( const ScAddress rPos, const ScPatternAttr *pAttr, const INT32 nVal ) :
+ aPos( rPos )
+{
+ if( ExcCell::pPrgrsBar )
+ ExcCell::pPrgrsBar->SetState( ExcCell::GetCellCount() );
+
+ ExcCell::IncCellCount();
+
+ // Basis-Daten
+ DBG_ASSERT( ExcCell::pXFRecs, "-ExcRKMulRk::ExcRKMulRK(): Halt Fremder!" );
+
+ CONT* pNewCont = new CONT;
+
+ if( pAttr )
+ pNewCont->nXF = ExcCell::pXFRecs->Find( pAttr );
+ else
+ pNewCont->nXF = 15;
+ pNewCont->nVal = nVal;
+ List::Insert( pNewCont, LIST_APPEND );
+}
+
+
+ExcRKMulRK::~ExcRKMulRK()
+{
+ CONT* pDel = ( CONT* ) List::First();
+ while( pDel )
+ {
+ delete pDel;
+ pDel = ( CONT* ) List::Next();
+ }
+}
+
+
+ExcRKMulRK* ExcRKMulRK::Extend(
+ const ScAddress rPos, const ScPatternAttr* pAttr, const INT32 nVal )
+{
+ if( aPos.Row() == rPos.Row() && aPos.Col() + List::Count() == rPos.Col() )
+ {// erweiterbar
+ if( ExcCell::pPrgrsBar )
+ ExcCell::pPrgrsBar->SetState( ExcCell::GetCellCount() );
+
+ ExcCell::IncCellCount();
+
+ CONT* pNewCont = new CONT;
+
+ if( pAttr )
+ pNewCont->nXF = ExcCell::pXFRecs->Find( pAttr );
+ else
+ pNewCont->nXF = 15;
+ pNewCont->nVal = nVal;
+ List::Insert( pNewCont, LIST_APPEND );
+ return NULL;
+ }
+ else
+ {// neuen erzeugen
+ return new ExcRKMulRK( rPos, pAttr, nVal );
+ }
+}
+
+
+UINT16 ExcRKMulRK::GetNum( void ) const
+{
+ if( IsRK() )
+ return 0x027E;
+ else
+ return 0x00BD;
+}
+
+
+UINT16 ExcRKMulRK::GetLen( void ) const
+{
+ if( IsRK() )
+ return 6 + 4;
+ else
+ return 6 + ( UINT16 ) List::Count() * 6;
+}
+
+
+
+
+ExcLabel::ExcLabel( const ScAddress rPos, const ScPatternAttr* pAttr, const String& rText, RootData& rExcRoot ) :
+ ExcCell( rPos, pAttr )
+{
+ pText = new ByteString( rText, *rExcRoot.pCharset );
+ nTextLen = ( UINT16 ) pText->Len();
+
+ if( nTextLen > 255 )
+ {
+ nTextLen = 255;
+ DBG_WARNING( "ExcLabel::ExcLabel(): String truncated" );
+ }
+}
+
+
+ExcLabel::~ExcLabel()
+{
+ delete pText;
+}
+
+
+void ExcLabel::SaveDiff( SvStream &rStr )
+{
+ rStr << nTextLen;
+ rStr.Write( pText->GetBuffer(), nTextLen );
+}
+
+
+UINT16 ExcLabel::GetNum( void ) const
+{
+ return 0x0204;
+}
+
+
+UINT16 ExcLabel::GetLen( void ) const
+{
+ return 6 + 2 + nTextLen;
+}
+
+
+
+
+ExcRichStr::ExcRichStr( ExcCell& rExcCell, String& rText, const ScPatternAttr* pAttr,
+ const ScEditCell& rEdCell, RootData& rRoot, xub_StrLen nMaxChars ) :
+ eBiff( rRoot.eDateiTyp )
+{
+ const EditTextObject* p = rEdCell.GetData();
+
+// const SvxURLField*& rpLastHlink = rRoot.pLastHlink;
+ XclHlink*& rpLastHlink = rRoot.pLastHlink;
+ if( rpLastHlink )
+ {
+ delete rpLastHlink;
+ rpLastHlink = NULL;
+ }
+
+ if( p )
+ {
+ ScEditEngineDefaulter& rEdEng = rRoot.GetEdEng();
+ const BOOL bOldMode = rEdEng.GetUpdateMode();
+ rEdEng.SetUpdateMode( TRUE );
+ {
+ SfxItemSet* pTmpItemSet = new SfxItemSet( rEdEng.GetEmptyItemSet() );
+
+ if( !pAttr )
+ pAttr = rRoot.pDoc->GetDefPattern();
+
+ pAttr->FillEditItemSet( pTmpItemSet );
+ rEdEng.SetDefaults( pTmpItemSet );
+ }
+ rEdEng.SetText( *p );
+
+ const USHORT nParCnt = rEdEng.GetParagraphCount();
+ USHORT nPar;
+ USHORT n;
+ USHORT nF = 0;
+ USHORT nListLen;
+ xub_StrLen nParPos = 0;
+ xub_StrLen nStartPos;
+ String aParText;
+ const sal_Unicode cParSep = 0x0A;
+ SvUShorts aPosList;
+ ESelection aSel;
+ ScPatternAttr aPatAttr( rRoot.pDoc->GetPool() );
+ UsedFontList& rFontList = *rRoot.pFontRecs;
+
+ // Erster Font ist der Font der Zelle, erst nachfolgende Abweichungen
+ // werden im RichStr gespeichert.
+ Font* pFont = new Font;
+ pAttr->GetFont( *pFont );
+ USHORT nLastFontIndex = rFontList.Add( pFont );
+
+ for( nPar = 0 ; nPar < nParCnt ; )
+ {
+ aSel.nStartPara = aSel.nEndPara = nPar;
+ nParPos = rText.Len();
+
+ aParText = rEdEng.GetText( nPar );
+
+ if( aParText.Len() )
+ {
+// if ( eBiff < Biff8 )
+// aParText.Convert( CHARSET_SYSTEM, CHARSET_ANSI );
+
+ rEdEng.GetPortions( nPar, aPosList );
+ nListLen = aPosList.Count();
+
+ aSel.nStartPos = 0;
+ for( n = 0 ; n < nListLen ; n++ )
+ {
+ aSel.nEndPos = ( xub_StrLen ) aPosList.GetObject( n );
+
+ {
+ SfxItemSet aItemSet( rEdEng.GetAttribs( aSel ) );
+
+ // detect hyperlink but only take first one!
+ if( aSel.nEndPos == aSel.nStartPos + 1 && !rpLastHlink )
+ {
+ const SfxPoolItem* pItem;
+
+ if( aItemSet.GetItemState( EE_FEATURE_FIELD, FALSE, &pItem ) == SFX_ITEM_ON )
+ {
+ const SvxFieldData* pField = ((const SvxFieldItem*) pItem)->GetField();
+
+ if( pField && pField->ISA( SvxURLField ) )
+ {
+ rpLastHlink = new XclHlink( rRoot, *( ( const SvxURLField* ) pField ) );
+ const String* p = rpLastHlink->GetRepr();
+ if( p )
+ aParText = *p;
+ }
+ }
+ }
+
+ aPatAttr.GetItemSet().ClearItem();
+ aPatAttr.GetFromEditItemSet( &aItemSet );
+
+ Font* pFont = new Font;
+ aPatAttr.GetFont( *pFont );
+ UINT16 nFontIndex = rFontList.Add( pFont );
+
+ if( nFontIndex > 255 && eBiff < Biff8 )
+ nFontIndex = 0;
+
+ nStartPos = nParPos + aSel.nStartPos;
+ if( nStartPos <= nMaxChars && (eBiff >= Biff8 || nF < 256) )
+ {
+ if( nLastFontIndex != nFontIndex )
+ {
+ DBG_ASSERT( nStartPos <= 0xFFFF, "*ExcRichStr::ExcRichStr(): Start pos to big!" );
+ aForms.Append( ( UINT16 ) nStartPos );
+ aForms.Append( nFontIndex );
+ nLastFontIndex = nFontIndex;
+ nF++;
+ }
+ }
+ }
+ aSel.nStartPos = aSel.nEndPos;
+ }
+
+ rText += aParText;
+ }
+
+ nPar++;
+ if( nPar < nParCnt )
+ rText += cParSep;
+ }
+
+ rEdEng.SetUpdateMode( bOldMode );
+
+ // XF mit Umbruch auswaehlen?
+ rExcCell.SetXF( nParCnt <= 1 ? ExcCell::GetXFRecs()->Find( pAttr ) :
+ ExcCell::GetXFRecs()->FindWithLineBreak( pAttr ) );
+ }
+ else
+ {
+ rEdCell.GetString( rText );
+// if ( eBiff < Biff8 )
+// rText.Convert( CHARSET_SYSTEM, CHARSET_ANSI );
+ }
+}
+
+
+void ExcRichStr::Write( XclContinue& rCont )
+{
+ const UINT32 nEnd = ( UINT32 ) GetFormCount() * 2;
+ if( nEnd )
+ {
+ if ( eBiff >= Biff8 )
+ rCont.Write( &aForms, nEnd );
+ else
+ { // keine CONTINUE Records, max 255 chars + 2 * 255 Forms
+ SvStream& rStr = rCont.GetStream();
+ rStr << ( UINT8 ) aForms.First();
+ for( UINT32 n = 1 ; n < nEnd ; n++ )
+ rStr << ( UINT8 ) aForms.Next();
+ }
+ }
+}
+
+
+ExcRichStr::~ExcRichStr()
+{
+}
+
+
+
+ExcRString::ExcRString( RootData* pRootData, const ScAddress aNewPos, const ScPatternAttr* pAttr,
+ const ScEditCell& rEdCell ) :
+ ExcCell( aNewPos, pAttr )
+{
+ pRichStr = new ExcRichStr( *this, aText, pAttr, rEdCell, *pRootData, 255 );
+ DBG_ASSERT( aText.Len() <= 0xFFFF, "*ExcRString::ExcRString(): String to long!" );
+ nTextLen = ( UINT16 ) aText.Len();
+
+ if( nTextLen > 255 )
+ nTextLen = 255;
+}
+
+
+ExcRString::~ExcRString()
+{
+ delete pRichStr;
+}
+
+
+void ExcRString::SaveDiff( SvStream& rStr )
+{
+ XclContinue aCont( rStr, 6, GetLen() );
+ rStr << nTextLen;
+ rStr.Write( ByteString( aText, *pExcRoot->pCharset ).GetBuffer(), nTextLen );
+ rStr << ( UINT8 ) pRichStr->GetFormCount();
+ pRichStr->Write( aCont );
+}
+
+
+UINT16 ExcRString::GetNum( void ) const
+{
+ return 0x00D6;
+}
+
+
+UINT16 ExcRString::GetLen( void ) const
+{
+ return 6 + 2 + nTextLen + 1 + ( UINT16 ) pRichStr->GetByteCount();
+}
+
+
+
+
+ExcFormula::ExcFormula( RootData* pRD, const ScAddress rPos, const ScPatternAttr* pAttr,
+ const ULONG nAltNumForm, BOOL bForceAltNumForm, const ScTokenArray& rTokArray ) :
+ ExcCell( rPos, pAttr, nAltNumForm, bForceAltNumForm )
+{
+ // Formel wandeln
+ ExcUPN aExcUPN( pRD, rTokArray, &rPos );
+ nFormLen = aExcUPN.GetLen();
+
+ if( nFormLen > 0 )
+ pData = new sal_Char[ nFormLen ];
+ else
+ pData = NULL;
+
+ memcpy( pData, aExcUPN.GetData(), nFormLen );
+
+ DBG_ASSERT( pData,
+ "*ExcFormula::ExcFormula(): 'n bisschen 'was sollte es schon sein!" );
+}
+
+
+ExcFormula::~ExcFormula()
+{
+ if( pData )
+ delete[] pData;
+}
+
+
+void ExcFormula::SaveDiff( SvStream &rStr )
+{// grbit chn
+ rStr << ( double ) 0.0 << ( UINT16 ) 0x0003 << ( UINT32 ) 0x00000000
+ << nFormLen;
+ if( pData )
+ rStr.Write( pData, nFormLen );
+}
+
+
+UINT16 ExcFormula::GetNum( void ) const
+{
+ return 0x0006;
+}
+
+
+UINT16 ExcFormula::GetLen( void ) const
+{
+ return 6 + 16 + nFormLen;
+}
+
+
+
+
+void ExcBlankMulblank::SaveDiff( SvStream &rStr )
+{
+ if( bMulBlank )
+ {
+ void *pAkt = List::First();
+ if( pAkt )
+ {
+ UINT16 nCol = ( UINT16 ) aPos.Col();
+ UINT16 nXF, nTmpAnz;
+
+ do{
+ nXF = GetXF( pAkt );
+ nTmpAnz = GetAnz( pAkt );
+
+ nCol += nTmpAnz;
+
+ while( nTmpAnz )
+ {
+ rStr << nXF;
+ nTmpAnz--;
+ }
+
+ pAkt = List::Next();
+ } while( pAkt );
+
+ rStr << nCol; // nur 'nCol' und nicht 'nCol-1', weil initial schon einen zu
+ // wenig wegen 'Single-Schreiben' eines XFs in ExcCell!
+ }
+ }
+}
+
+
+ExcBlankMulblank::ExcBlankMulblank( const ScAddress rPos,
+ const ScPatternAttr *pFirstAttr, UINT16 nFirstAnz ) :
+ ExcCell( rPos, pFirstAttr )
+{// nFirstAnz > 1 -> sofort Mulblank, ansonsten erstmal Blank!
+ DBG_ASSERT( nFirstAnz > 0, "-ExcBlankMulblank::ExcBlankMulblank(): Anzahl <> 0!" );
+ nLastCol = aPos.Col();
+
+ nLen = 6;
+
+ nFirstAnz--; // einer ist schon in ExcCell!
+ if( nFirstAnz )
+ {
+ List::Insert( MakeEntry( nXF, nFirstAnz ), LIST_APPEND );
+
+ bMulBlank = TRUE;
+ nLen += 2 * nFirstAnz + 2;
+ nLastCol += nFirstAnz;
+ }
+ else
+ bMulBlank = FALSE;
+}
+
+
+void ExcBlankMulblank::Add( const ScPatternAttr *pAttr, const UINT16 nAddAnz )
+{
+ DBG_ASSERT( pXFRecs, "-ExcMulblank::Add(): Wohin des Weges Fremder?" );
+
+ if( !bMulBlank )
+ {
+ bMulBlank = TRUE;
+ nLen += 2;
+ }
+
+ List::Insert( MakeEntry( pXFRecs->Find( pAttr ), nAddAnz ), LIST_APPEND );
+ nLen += 2 * nAddAnz;
+ nLastCol += nAddAnz;
+}
+
+
+UINT16 ExcBlankMulblank::GetNum( void ) const
+{
+ if( bMulBlank )
+ return 0x00BE;
+ else
+ return 0x0201;
+}
+
+
+UINT16 ExcBlankMulblank::GetLen( void ) const
+{
+ return nLen;
+}
+
+
+
+
+ExcNameListEntry::~ExcNameListEntry()
+{
+}
+
+
+UINT16 ExcNameListEntry::GetNum( void ) const
+{
+ return 0x0018;
+}
+
+
+
+
+void ExcName::Init( BOOL bHid, BOOL bBIn )
+{
+ nFormLen = 0;
+ pData = NULL;
+ nTabNum = 0;
+ bHidden = bHid;
+ bBuiltIn = bBIn;
+ bDummy = FALSE;
+}
+
+
+void ExcName::BuildFormula( const ScRange& rRange )
+{ // build formula from range
+ ScTokenArray aArr;
+
+ if ( rRange.aStart == rRange.aEnd )
+ {
+ SingleRefData aRef;
+ aRef.InitAddress( rRange.aStart );
+ aArr.AddSingleReference( aRef );
+ }
+ else
+ {
+ ComplRefData aRef;
+ aRef.InitRange( rRange );
+ aArr.AddDoubleReference( aRef );
+ }
+ ExcUPN aExcUPN( pExcRoot, aArr );
+ nFormLen = aExcUPN.GetLen();
+
+ DBG_ASSERT( nFormLen > 0, "+ExcName::BuildFormula(): No Data, no Name!" );
+
+ if( nFormLen > 0 )
+ {
+ pData = new UINT8[ nFormLen ];
+ memcpy( pData, aExcUPN.GetData(), nFormLen );
+ }
+ else
+ pData = NULL;
+}
+
+
+ExcName::ExcName( RootData* pRD, ScRangeData* pRange ) : eBiff( pRD->eDateiTyp ), ExcRoot( pRD )
+{
+ Init();
+
+ pRange->GetName( aName );
+
+ bDummy = aName.CompareToAscii( GetExcBuiltInName( 0x06 ) ) == COMPARE_EQUAL; // no PrintRanges
+
+ if( !bDummy )
+ {
+ // Formel wandeln
+ const ScTokenArray* pTokArray = pRange->GetCode();
+ if( pTokArray )
+ {
+ ExcUPN aExcUPN( pRD, *pTokArray );
+ nFormLen = aExcUPN.GetLen();
+
+ DBG_ASSERT( nFormLen > 0, "+ExcName::ExcName(): No Data, no Name!" );
+
+ if( nFormLen > 0 )
+ {
+ pData = new UINT8[ nFormLen ];
+ memcpy( pData, aExcUPN.GetData(), nFormLen );
+ }
+ }
+ }
+}
+
+
+ExcName::ExcName( RootData* pRD, ScDBData* pArea ) :
+ ExcRoot( pRD ),
+ eBiff( pRD->eDateiTyp )
+{
+ Init();
+
+ pArea->GetName( aName );
+ // generate unique name, DBData is merged into RangeName
+ ScRangeName* pRangeName = pRD->pDoc->GetRangeName();
+ USHORT nPos;
+ if ( pRangeName->SearchName( aName, nPos ) )
+ {
+ aName.AppendAscii( "_" );
+ static const sal_Unicode pExtend[] =
+ {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
+ 'U', 'V', 'W', 'X', 'Y', 'Z'
+ };
+ const USHORT nExtCnt = sizeof(pExtend) / sizeof(sal_Unicode);
+ USHORT nExtend = nExtCnt;
+ do
+ {
+ if ( nExtend < nExtCnt )
+ aName.Erase( aName.Len() - 1, 1 ); // delete last char
+ else
+ nExtend = 0;
+ aName.Append( pExtend[ nExtend++ ] );
+ }
+ while ( pRangeName->SearchName( aName, nPos ) );
+ }
+
+ ScRange aRange;
+ pArea->GetArea( aRange );
+ BuildFormula( aRange );
+}
+
+
+ExcName::ExcName( RootData* pRD, const ScRange& rRange, UINT8 nBuiltIn, BOOL bHid ) :
+ ExcRoot( pRD ),
+ eBiff( pRD->eDateiTyp )
+{
+ Init( bHid, TRUE );
+
+ sal_Char aChar = (sal_Char) nBuiltIn;
+ aName.AssignAscii( &aChar, 1 );
+ nTabNum = rRange.aStart.Tab() + 1;
+
+ BuildFormula( rRange );
+}
+
+
+ExcName::~ExcName()
+{
+ if( pData )
+ delete[] pData;
+}
+
+
+void ExcName::Save( SvStream& r )
+{
+ if( !bDummy )
+ {
+ _Save( r );
+ SaveCont( r );
+ }
+}
+
+
+void ExcName::SaveCont( SvStream& rStr )
+{
+ XclContinue aCont( rStr, 0, GetLen() );
+ UINT8 nNameLen = ( UINT8 ) Min( aName.Len(), ( xub_StrLen ) 255 );
+ UINT16 nGrbit = (bHidden ? EXC_NAME_HIDDEN : 0) | (bBuiltIn ? EXC_NAME_BUILTIN : 0);
+
+ // grbit chKey cch
+ rStr << nGrbit << ( BYTE ) 0x00 << nNameLen
+ // cce ixals itab
+ << nFormLen << ( UINT16 ) 0x0000 << nTabNum
+ // cch...
+ << ( UINT32 ) 0x00000000;
+ if ( eBiff < Biff8 )
+ {
+ rStr.Write( ByteString( aName, *pExcRoot->pCharset ).GetBuffer(), nNameLen );
+ if( pData )
+ rStr.Write( pData, nFormLen );
+ }
+ else
+ {
+ XclRawUnicodeString aUni( aName, nNameLen );
+ rStr << aUni.GetGrbit();
+ aUni.Write( aCont );
+ aCont.Write( pData, nFormLen );
+ }
+}
+
+
+UINT16 ExcName::GetLen( void ) const
+{ // only a guess for Biff8 (8bit/16bit unknown)
+ if( bDummy )
+ return 0;
+ else
+ return 14 + nFormLen + (eBiff < Biff8 ? 0 : 1) + Min( aName.Len(), ( xub_StrLen ) 255 );
+}
+
+
+
+
+ExcNameList::~ExcNameList()
+{
+ for( ExcNameListEntry* pName = _First(); pName; pName = _Next() )
+ delete pName;
+}
+
+
+void ExcNameList::_Save( SvStream& rStrm )
+{
+}
+
+
+void ExcNameList::SaveCont( SvStream& rStrm )
+{
+ for( ExcNameListEntry* pName = _First(); pName; pName = _Next() )
+ pName->Save( rStrm );
+}
+
+
+UINT16 ExcNameList::GetNum( void ) const
+{
+ return 0;
+}
+
+
+UINT16 ExcNameList::GetLen( void ) const
+{
+ return 0;
+}
+
+
+
+
+UINT16 ExcDummy_03::GetLen( void ) const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy_03::GetData( void ) const
+{
+ return pMyData;
+}
+
+
+
+
+ExcDimensions::ExcDimensions( BiffTyp eBiffP )
+ : eBiff( eBiffP )
+{
+ nRwMic = nRwMac = nColMic = nColMac = 0;
+}
+
+
+ExcDimensions::ExcDimensions( UINT16 nFirstCol, UINT16 nFirstRow,
+ UINT16 nLastCol, UINT16 nLastRow, BiffTyp eBiffP )
+ : eBiff( eBiffP )
+{
+ SetLimits( nFirstCol, nFirstRow, nLastCol, nLastRow );
+}
+
+
+void ExcDimensions::SaveCont( SvStream &rStr )
+{
+ if ( eBiff < Biff8 )
+ rStr << nRwMic << nRwMac;
+ else
+ rStr << (UINT32) nRwMic << (UINT32) nRwMac;
+ rStr << nColMic << nColMac << nIgnore;
+}
+
+
+UINT16 ExcDimensions::GetNum( void ) const
+{
+ return 0x0200;
+}
+
+
+UINT16 ExcDimensions::GetLen( void ) const
+{
+ return eBiff < Biff8 ? 10 : 14;
+}
+
+
+void ExcDimensions::SetLimits( UINT16 nFirstCol, UINT16 nFirstRow,
+ UINT16 nLastCol, UINT16 nLastRow )
+{
+ nRwMic = nFirstRow;
+ nRwMac = nLastRow + 1;
+ nColMic = nFirstCol;
+ nColMac = nLastCol + 1;
+}
+
+
+
+
+ExcEOutline::ExcEOutline( ScOutlineArray* pArray ) :
+ pOLArray( pArray ),
+ nCurrExcLevel( 0 ),
+ bIsColl( FALSE )
+{
+ ScOutlineEntry* pEntry;
+
+ for( UINT16 nLev = 0; nLev < SC_OL_MAXDEPTH; nLev++ )
+ {
+ pEntry = pArray ? pArray->GetEntryByPos( nLev, 0 ) : NULL;
+ nEnd[ nLev ] = pEntry ? pEntry->GetEnd() : 0;
+ bHidden[ nLev ] = FALSE;
+ }
+
+}
+
+void ExcEOutline::Update( UINT16 nNum )
+{
+ if( !pOLArray )
+ return;
+
+ UINT16 nNewLevel;
+ BOOL bFound = pOLArray->FindTouchedLevel( nNum, nNum, nNewLevel );
+ UINT16 nNewExcLevel = bFound ? nNewLevel + 1 : 0;
+ UINT16 nLevel;
+
+ if( nNewExcLevel >= nCurrExcLevel )
+ {
+ bIsColl = FALSE;
+ for( nLevel = 0; nLevel < nNewExcLevel; nLevel++ )
+ if( nEnd[ nLevel ] < nNum )
+ {
+ ScOutlineEntry* pEntry = pOLArray->GetEntryByPos( nLevel, nNum );
+ if( pEntry )
+ {
+ nEnd[ nLevel ] = pEntry->GetEnd();
+ bHidden[ nLevel ] = pEntry->IsHidden();
+ }
+ }
+ }
+ else
+ {
+ for( nLevel = nNewExcLevel; nLevel < nCurrExcLevel; nLevel++ )
+ bIsColl |= bHidden[ nLevel ];
+ }
+ nCurrExcLevel = nNewExcLevel;
+}
+
+
+
+
+ExcEGuts::ExcEGuts( ScOutlineArray* pCol, ScOutlineArray* pRow )
+{
+ nRowLevel = nColLevel = 0;
+
+ if( pCol )
+ nColLevel = Min( pCol->GetDepth(), (UINT16) EXC_OUTLINE_MAX );
+ if( pRow )
+ nRowLevel = Min( pRow->GetDepth(), (UINT16) EXC_OUTLINE_MAX );
+}
+
+void ExcEGuts::SaveCont( SvStream& rStrm )
+{
+ rStrm << (UINT16)(nRowLevel ? (12 * nRowLevel + 17) : 0)
+ << (UINT16)(nColLevel ? (12 * nColLevel + 17) : 0)
+ << (UINT16)(nRowLevel + (nRowLevel ? 1 : 0))
+ << (UINT16)(nColLevel + (nRowLevel ? 1 : 0));
+}
+
+UINT16 ExcEGuts::GetNum() const
+{
+ return 0x0080;
+}
+
+UINT16 ExcEGuts::GetLen() const
+{
+ return 8;
+}
+
+
+
+
+ExcRow::ExcRow( UINT16 nRow, UINT16 nTab, UINT16 nFCol, UINT16 nLCol,
+ UINT16 nNewXF, ScDocument& rDoc, ExcEOutline& rOutline ) :
+ nNum( nRow ),
+ nXF( nNewXF ),
+ nOptions( 0x0000 )
+{
+ BYTE nRowOptions = rDoc.GetRowFlags( nRow, nTab );
+ BOOL bUserHeight = TRUEBOOL( nRowOptions & CR_MANUALSIZE );
+
+ SetRange( nFCol, nLCol );
+ SetHeight( rDoc.GetRowHeight( nRow, nTab ), bUserHeight );
+
+ if( TRUEBOOL( nRowOptions & CR_HIDDEN ) )
+ nOptions |= EXC_ROW_ZEROHEIGHT;
+
+ rOutline.Update( nRow );
+
+ nOptions |= EXC_ROW_LEVELFLAGS( rOutline.GetLevel() );
+ if( rOutline.IsCollapsed() )
+ nOptions |= EXC_ROW_COLLAPSED;
+}
+
+void ExcRow::SetRange( UINT16 nFCol, UINT16 nLCol )
+{
+ DBG_ASSERT( nFCol <= nLCol, "+ExcRow::SetRange(): First Col > Last Col!" );
+
+ nFirstCol = nFCol;
+ nLastCol = nLCol;
+}
+
+void ExcRow::SetHeight( UINT16 nNewHeight, BOOL bUser )
+{
+ if( nNewHeight == 0 )
+ {
+ nOptions |= EXC_ROW_ZEROHEIGHT;
+ nHeight = EXC_ROW_VALZEROHEIGHT;
+ }
+ else
+ nHeight = nNewHeight;
+
+ if( bUser )
+ nOptions |= EXC_ROW_UNSYNCED; // user height
+ else
+ nHeight |= EXC_ROW_FLAGDEFHEIGHT; // default height
+}
+
+void ExcRow::SaveCont( SvStream& rStrm )
+{
+ nOptions |= EXC_ROW_FLAGCOMMON;
+ rStrm << nNum << nFirstCol << (UINT16)(nLastCol + 1)
+ << nHeight << (UINT32)0 << nOptions << nXF;
+}
+
+UINT16 ExcRow::GetNum() const
+{
+ return 0x0208;
+}
+
+
+UINT16 ExcRow::GetLen() const
+{
+ return 16;
+}
+
+
+
+
+ExcRowBlock::ExcRowBlock()
+{
+ ppRows = new ExcRow* [ 32 ];
+ nNext = 0;
+}
+
+ExcRowBlock::~ExcRowBlock()
+{
+ UINT16 nC;
+ for( nC = 0 ; nC < nNext ; nC++ )
+ delete ppRows[ nC ];
+
+ delete[] ppRows;
+}
+
+void ExcRowBlock::Save( SvStream& rOut )
+{
+ UINT16 nC;
+ for( nC = 0 ; nC < nNext ; nC++ )
+ ppRows[ nC ]->Save( rOut );
+}
+
+ExcRowBlock* ExcRowBlock::Append( ExcRow* pNewRow )
+{
+ if( nNext < 32 )
+ {
+ ppRows[ nNext ] = pNewRow;
+ nNext++;
+ return NULL;
+ }
+ else
+ {
+ ExcRowBlock* pRet = new ExcRowBlock;
+ pRet->ppRows[ 0 ] = pNewRow;
+ pRet->nNext = 1;
+ return pRet;
+ }
+}
+
+UINT16 ExcRowBlock::GetNum() const
+{
+ return 0x0000; // Dummy
+}
+
+
+UINT16 ExcRowBlock::GetLen() const
+{
+ UINT32 nLenSum = 0;
+ if( nNext )
+ {
+ for( UINT16 nC = 0; nC < nNext; nC++ )
+ nLenSum += ppRows[ nC ]->GetLen();
+
+ nLenSum += (nNext - 1) * 4;
+ }
+
+ DBG_ASSERT( nLenSum <= 0xFFFF, "ExcRowBlock::GetLen() - size > 0xFFFF!" );
+ return (UINT16) nLenSum;
+}
+
+
+
+
+ExcDefcolwidth::ExcDefcolwidth( UINT16 nNewWidth )
+{
+ nWidth = nNewWidth;
+}
+
+
+void ExcDefcolwidth::SaveCont( SvStream &rStr )
+{
+ rStr << nWidth;
+}
+
+
+UINT16 ExcDefcolwidth::GetNum( void ) const
+{
+ return 0x0055;
+}
+
+
+UINT16 ExcDefcolwidth::GetLen( void ) const
+{
+ return 2;
+}
+
+
+
+
+ExcColinfo::ExcColinfo( UINT16 nCol, UINT16 nTab, UINT16 nNewXF,
+ ScDocument& rDoc, ExcEOutline& rOutline )
+{
+ nFirstCol = nLastCol = nCol;
+ nXF = nNewXF;
+ SetWidth( rDoc.GetColWidth( nCol, nTab ) );
+
+ BYTE nColFlags = rDoc.GetColFlags( nCol, nTab );
+ nOptions = 0x0000;
+
+ if( nColFlags & CR_HIDDEN )
+ nOptions |= EXC_COL_HIDDEN;
+
+ rOutline.Update( nCol );
+
+ nOptions |= EXC_COL_LEVELFLAGS( rOutline.GetLevel() );
+ if( rOutline.IsCollapsed() )
+ nOptions |= EXC_COL_COLLAPSED;
+}
+
+void ExcColinfo::SetWidth( UINT16 nWidth )
+{
+ double f = nWidth;
+ f *= 1328.0 / 25.0;
+ f += 90.0;
+ f *= 1.0 / 23.0;
+
+ nColWidth = (UINT16) f;
+}
+
+BOOL ExcColinfo::Expand( ExcColinfo* pExp )
+{
+ if( pExp && (nLastCol + 1 == pExp->nFirstCol) && (nColWidth == pExp->nColWidth) &&
+ (nXF == pExp->nXF) && (nOptions == pExp->nOptions) )
+ {// erweitern
+ nLastCol = pExp->nLastCol;
+ delete pExp;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+void ExcColinfo::SaveCont( SvStream &rStr )
+{
+ rStr << nFirstCol << nLastCol << nColWidth << nXF << nOptions << (BYTE)0;
+}
+
+UINT16 ExcColinfo::GetNum( void ) const
+{
+ return 0x007D;
+}
+
+UINT16 ExcColinfo::GetLen( void ) const
+{
+ return 11;
+}
+
+
+
+
+ExcXf::ExcXf( UINT16 nFont, UINT16 nForm, const ScPatternAttr* pPattAttr, BOOL& rbWrap, BOOL bSt ) :
+ bStyle( bSt )
+{
+#ifdef DBG_UTIL
+ nObjCnt++;
+#endif
+
+ bAtrNum = bAtrFnt = bAtrAlc = bAtrBdr = bAtrPat = bAtrProt = !bSt; // always TRUE for cell xfs
+
+ nIfnt = nFont;
+ nIfmt = nForm;
+
+ nOffs8 = 0x0001;
+
+ if( pPattAttr )
+ {
+ switch( ( SvxCellHorJustify )
+ ((const SvxHorJustifyItem&)pPattAttr->GetItem( ATTR_HOR_JUSTIFY )).GetValue() )
+ {
+ case SVX_HOR_JUSTIFY_STANDARD: eAlc = EHA_General; break;
+ case SVX_HOR_JUSTIFY_LEFT: eAlc = EHA_Left; break;
+ case SVX_HOR_JUSTIFY_CENTER: eAlc = EHA_Center; break;
+ case SVX_HOR_JUSTIFY_RIGHT: eAlc = EHA_Right; break;
+ case SVX_HOR_JUSTIFY_BLOCK: eAlc = EHA_Justify; break;
+ case SVX_HOR_JUSTIFY_REPEAT: eAlc = EHA_Fill; break;
+ default:
+ DBG_ERROR( "ExcXf::ExcXf(): ATTR_HOR_JUSTIFY unbekannt!" );
+ eAlc = EHA_General;
+ }
+
+ switch( ( SvxCellVerJustify )
+ ((const SvxVerJustifyItem&)pPattAttr->GetItem( ATTR_VER_JUSTIFY )).GetValue() )
+ {
+ case SVX_VER_JUSTIFY_STANDARD: eAlcV = EVA_Bottom; break;
+ case SVX_VER_JUSTIFY_TOP: eAlcV = EVA_Top; break;
+ case SVX_VER_JUSTIFY_CENTER: eAlcV = EVA_Center; break;
+ case SVX_VER_JUSTIFY_BOTTOM: eAlcV = EVA_Bottom; break;
+ default:
+ DBG_ERROR( "ExcXf::ExcXf(): ATTR_VER_JUSTIFY unbekannt!" );
+ eAlcV = EVA_Bottom;
+ }
+
+ switch( ( SvxCellOrientation )
+ ((const SvxOrientationItem&)pPattAttr->GetItem( ATTR_ORIENTATION )).GetValue() )
+ {
+ case SVX_ORIENTATION_STANDARD: eOri = ETO_NoRot; break;
+ case SVX_ORIENTATION_TOPBOTTOM: eOri = ETO_90cw; break;
+ case SVX_ORIENTATION_BOTTOMTOP: eOri = ETO_90ccw; break;
+ case SVX_ORIENTATION_STACKED: eOri = ETO_TopBottom; break;
+ default:
+ DBG_ERROR( "ExcXf::ExcXf(): ATTR_ORIENTATION unbekannt!" );
+ eOri = ETO_NoRot;
+ }
+
+ bFWrap = rbWrap ||
+ ( ( BOOL ) ((const SfxBoolItem&)pPattAttr->GetItem( ATTR_LINEBREAK )).GetValue() );
+
+ // fore-/background
+ const SvxBrushItem& rBrushItem = ( const SvxBrushItem& ) pPattAttr->GetItem( ATTR_BACKGROUND );
+ Color aCol = rBrushItem.GetColor();
+
+ nFls = aCol.GetTransparency()? 0x0000 : 0x0001;
+
+ nIcvForeSer = pPalette2->InsertColor( aCol, EXC_COLOR_CELLBGROUND );
+ nIcvBackSer = pPalette2->InsertColor( Color( COL_BLACK ), EXC_COLOR_CELLBGROUND );
+
+ // Umrandung
+ const SvxBoxItem& rBox = ((const SvxBoxItem&)pPattAttr->GetItem( ATTR_BORDER ));
+
+ ScToExcBorderLine( rBox.GetTop(), nIcvTopSer, nDgTop );
+ ScToExcBorderLine( rBox.GetLeft(), nIcvLftSer, nDgLeft );
+ ScToExcBorderLine( rBox.GetBottom(), nIcvBotSer, nDgBottom );
+ ScToExcBorderLine( rBox.GetRight(), nIcvRigSer, nDgRight );
+
+ if( bSt )
+ {
+ static const USHORT pFntChkWichs[] =
+ {
+ ATTR_FONT_HEIGHT,
+ ATTR_FONT_WEIGHT,
+ ATTR_FONT_POSTURE,
+ ATTR_FONT_UNDERLINE,
+ ATTR_FONT_CROSSEDOUT,
+ ATTR_FONT_CONTOUR,
+ ATTR_FONT_SHADOWED,
+ ATTR_FONT_COLOR,
+ ATTR_FONT_LANGUAGE,
+ 0
+ };
+
+ const SfxItemSet& rSet = pPattAttr->GetItemSet();
+
+ bAtrNum = rSet.GetItemState( ATTR_VALUE_FORMAT, FALSE ) == SFX_ITEM_SET;
+ bAtrFnt = pPattAttr->HasItemsSet( pFntChkWichs );
+ bAtrAlc = ( rSet.GetItemState( ATTR_HOR_JUSTIFY, FALSE ) == SFX_ITEM_SET ) ||
+ ( rSet.GetItemState( ATTR_VER_JUSTIFY, FALSE ) == SFX_ITEM_SET ) ||
+ ( rSet.GetItemState( ATTR_LINEBREAK, FALSE ) == SFX_ITEM_SET );
+ bAtrBdr = rSet.GetItemState( ATTR_BORDER, FALSE ) == SFX_ITEM_SET;
+ bAtrPat = rSet.GetItemState( ATTR_BACKGROUND, FALSE ) == SFX_ITEM_SET;
+ bAtrProt = rSet.GetItemState( ATTR_PROTECTION, FALSE ) == SFX_ITEM_SET;
+ }
+ }
+ else
+ {
+ eAlc = EHA_General;
+ eAlcV = EVA_Bottom;
+ eOri = ETO_NoRot;
+ bFWrap = FALSE;
+ nFls = 0x0000;
+ nIcvBackSer = pPalette2->InsertIndex( 65 );
+ nIcvForeSer = pPalette2->InsertIndex( 64 );
+ nIcvTopSer = nIcvBotSer = nIcvLftSer = nIcvRigSer = 0;
+ nDgTop = nDgLeft = nDgBottom = nDgRight = 0;
+ }
+
+ rbWrap = bFWrap;
+
+ bFSxButton = FALSE; // XF Record attached PivotTable Button
+}
+
+
+#ifdef DBG_UTIL
+ExcXf::~ExcXf()
+{
+ nObjCnt--;
+
+ if( !nObjCnt )
+ {
+ pPalette2 = NULL; // letzter macht das Licht aus...
+ }
+}
+#endif
+
+
+void ExcXf::SaveCont( SvStream& rStr )
+{
+ UINT16 nTmp;
+
+ rStr << nIfnt << nIfmt // Offs 4 + 6
+ << nOffs8; // Offs 8
+
+ nTmp = ( UINT16 ) eAlc; // Offs 10
+ nTmp |= 0x0800; // locked
+ if( bFWrap )
+ nTmp += 0x0008;
+ nTmp += ( ( UINT16 ) eAlcV ) << 4;
+ nTmp += ( ( UINT16 ) eOri ) << 8;
+ rStr << nTmp;
+
+ UINT16 nForeInd, nBackInd;
+ pPalette2->GetMixedColors( nIcvForeSer, nIcvBackSer, nForeInd, nBackInd, nFls );
+ nTmp = nForeInd; // Offs 12
+ nTmp |= nBackInd << 7;
+
+ if ( bFSxButton )
+ nTmp |= 0x2000;
+ rStr << nTmp;
+
+ nTmp = nFls; // Offs 14
+ nTmp += nDgBottom << 6;
+ nTmp |= pPalette2->GetColorIndex( nIcvBotSer ) << 9;
+ rStr << nTmp;
+
+ nTmp = nDgTop; // Offs 16
+ nTmp += nDgLeft << 3;
+ nTmp += nDgRight << 6;
+ nTmp |= pPalette2->GetColorIndex( nIcvTopSer ) << 9;
+ rStr << nTmp;
+
+ nTmp = pPalette2->GetColorIndex( nIcvLftSer ); // Offs 18
+ nTmp |= pPalette2->GetColorIndex( nIcvRigSer ) << 7;
+ rStr << nTmp;
+}
+
+
+void ExcXf::ScToExcBorderLine( const SvxBorderLine* pLine, UINT32& rIcvSer, UINT16& rDg )
+{
+ if( !pLine )
+ {
+ rIcvSer = 0;
+ rDg = 0;
+ return;
+ }
+
+ rIcvSer = pPalette2->InsertColor( pLine->GetColor(), EXC_COLOR_CELLBORDER );
+
+ if( pLine->GetDistance() )
+ // doppelte Linien
+ rDg = 6;
+ else
+ {// einfache Linien
+ UINT16 nOut = pLine->GetOutWidth();
+
+ if( nOut <= DEF_LINE_WIDTH_1 )
+ rDg = 1;
+ else if( nOut <= DEF_LINE_WIDTH_2 )
+ rDg = 2;
+ else
+ rDg = 5;
+ }
+}
+
+
+void ExcXf::SetPalette( ExcPalette2& rPalette2 )
+{
+ pPalette2 = &rPalette2;
+}
+
+
+UINT16 ExcXf::GetNum( void ) const
+{
+ return 0x00E0;
+}
+
+
+UINT16 ExcXf::GetLen( void ) const
+{
+ return 16;
+}
+
+
+
+
+ExcFormat::ExcFormat( RootData* pExcRoot, UINT32 nNewScIndex ) : ExcRoot( pExcRoot )
+{
+ // ACHTUNG: nIndex wird hier NICHT gesetzt -> bei Freunden machen!
+ if( !nObjCnt )
+ pFormatter = new SvNumberFormatter( LANGUAGE_ENGLISH_US );
+
+ nObjCnt++; // Objektzaehler einen hoch
+
+ eBiff = pExcRoot->eDateiTyp;
+
+ nScIndex = nNewScIndex;
+
+ DBG_ASSERT( pExcRoot->pDoc->GetFormatTable(), "-ExcFormat::ExcFormat(): Keine Format-Tabelle!" );
+
+ const SvNumberformat* pEntry = pExcRoot->pDoc->GetFormatTable()->GetEntry( nNewScIndex );
+
+ if( pEntry )
+ {
+ if( pEntry->GetType() == NUMBERFORMAT_LOGICAL )
+ {
+ String aTmpStr;
+ Color aDummyCol;
+ Color* pDummyCol = &aDummyCol;
+
+ pForm = new String( '\"' );
+ ( ( SvNumberformat * ) pEntry )->GetOutputString( 1.0, aTmpStr, &pDummyCol );
+ *pForm += aTmpStr;
+ pForm->AppendAscii( "\";\"" );
+ *pForm += aTmpStr;
+ pForm->AppendAscii( "\";\"" );
+ ( ( SvNumberformat * ) pEntry )->GetOutputString( 0.0, aTmpStr, &pDummyCol );
+ *pForm += aTmpStr;
+ pForm->AppendAscii( "\"" );
+ }
+ else
+ {
+ LanguageType eLang = pEntry->GetLanguage();
+ if ( eLang == LANGUAGE_ENGLISH_US )
+ pForm = new String( pEntry->GetFormatstring() );
+ else
+ {
+ xub_StrLen nDummy;
+ UINT32 nConvertIndex;
+ INT16 nTyp = NUMBERFORMAT_DEFINED;
+ String aTmpString( pEntry->GetFormatstring() );
+ pFormatter->PutandConvertEntry( aTmpString, nDummy, nTyp,
+ nConvertIndex, eLang, LANGUAGE_ENGLISH_US );
+
+ pForm = new String( pFormatter->GetEntry( nConvertIndex )->GetFormatstring() );
+ }
+ if( pForm->EqualsAscii( "Standard" ) )
+ pForm->AssignAscii( "General" );
+ }
+ }
+ else
+ pForm = new String( RTL_CONSTASCII_STRINGPARAM( "\"Internal Error: Unknown Numberformat!\"" ) );
+
+ nFormLen = ( BYTE ) pForm->Len();
+}
+
+
+ExcFormat::~ExcFormat()
+{
+ delete pForm;
+
+ DBG_ASSERT( nObjCnt, "*ExcFormat::~ExcFormat(): zuviel des Guten" );
+ nObjCnt--;
+ if( !nObjCnt )
+ {
+ DBG_ASSERT( pFormatter, "*ExcFormat::~ExcFormat(): multiple delete!" );
+ delete pFormatter;
+ pFormatter = NULL;
+ }
+}
+
+
+void ExcFormat::SaveCont( SvStream &rOut )
+{
+ if ( eBiff < Biff8 )
+ {
+ rOut << nIndex << nFormLen;
+ rOut.Write( ByteString( *pForm, *pExcRoot->pCharset ).GetBuffer(), nFormLen );
+ }
+ else
+ {
+ XclContinue aCont( rOut, 0, GetLen() );
+ rOut << nIndex;
+ XclUnicodeString( *pForm ).Write( aCont );
+ }
+}
+
+
+UINT16 ExcFormat::GetNum( void ) const
+{
+ return 0x041E;
+}
+
+
+UINT16 ExcFormat::GetLen( void ) const
+{ //! for Biff8 only a prediction, assumes 8-bit string
+ return ( eBiff < Biff8 ? 2 + 1 + nFormLen : 2 + 3 + nFormLen );
+}
+
+
+
+//_____________________________________________________________________________
+// ExcPal2Entry & ExcPalette2
+
+INT32 lcl_GetColorDistance( const Color& rCol1, const Color& rCol2 )
+{
+ INT32 nDist = rCol1.GetRed() - rCol2.GetRed();
+ nDist *= nDist * 77;
+ INT32 nDummy = rCol1.GetGreen() - rCol2.GetGreen();
+ nDist += nDummy * nDummy * 151;
+ nDummy = rCol1.GetBlue() - rCol2.GetBlue();
+ nDist += nDummy * nDummy * 28;
+ return nDist;
+}
+
+void lcl_SetMixedColor( Color& rDest, const Color& rSrc1, const Color& rSrc2 )
+{
+ rDest.SetRed( (UINT8)(((UINT16) rSrc1.GetRed() + rSrc2.GetRed()) >> 1) );
+ rDest.SetGreen( (UINT8)(((UINT16) rSrc1.GetGreen() + rSrc2.GetGreen()) >> 1) );
+ rDest.SetBlue( (UINT8)(((UINT16) rSrc1.GetBlue() + rSrc2.GetBlue()) >> 1) );
+}
+
+
+
+
+void ExcPal2Entry::UpdateEntry( UINT16 nColorType )
+{
+ switch( nColorType )
+ {
+ case EXC_COLOR_CHARTLINE:
+ nWeight++;
+ break;
+ case EXC_COLOR_CELLBORDER:
+ case EXC_COLOR_CHARTAREA:
+ nWeight += 2;
+ break;
+ case EXC_COLOR_CELLTEXT:
+ case EXC_COLOR_CHARTTEXT:
+ nWeight += 10;
+ break;
+ case EXC_COLOR_CELLBGROUND:
+ nWeight += 20;
+ break;
+ }
+}
+
+void ExcPal2Entry::AddColor( const ExcPal2Entry& rEntry )
+{
+ UINT32 nWeight2 = rEntry.GetWeighting();
+ UINT32 nWeightSum = nWeight + nWeight2;
+ UINT32 nWeightSum2 = nWeightSum >> 1;
+ UINT32 nDummy;
+
+ nDummy = nWeight * GetRed() + nWeight2 * rEntry.GetRed() + nWeightSum2;
+ SetRed( (UINT8)(nDummy / nWeightSum) );
+ nDummy = nWeight * GetGreen() + nWeight2 * rEntry.GetGreen() + nWeightSum2;
+ SetGreen( (UINT8)(nDummy / nWeightSum) );
+ nDummy = nWeight * GetBlue() + nWeight2 * rEntry.GetBlue() + nWeightSum2;
+ SetBlue( (UINT8)(nDummy / nWeightSum) );
+
+ nWeight = nWeightSum;
+}
+
+void ExcPal2Entry::Save( SvStream& rStrm )
+{
+ rStrm << GetRed() << GetGreen() << GetBlue() << (UINT8)0x00;
+}
+
+
+
+
+ExcPalette2::ExcPalette2( ColorBuffer& rCB ) :
+ rColBuff( rCB ),
+ nLastInd( 0 ),
+ nMaxSerial( 0 ),
+ pColorIndex( NULL ),
+ pColors( NULL )
+{
+ Color aCol( 0x00000000 );
+ InsertColor( aCol, EXC_COLOR_CELLTEXT );
+}
+
+ExcPalette2::~ExcPalette2()
+{
+ for( ExcPal2Entry* pEntry = _First(); pEntry; pEntry = _Next() )
+ delete pEntry;
+ if( pColorIndex )
+ delete[] pColorIndex;
+ if( pColors )
+ delete[] pColors;
+}
+
+void ExcPalette2::SearchEntry( const Color& rCol, UINT32& rIndex, BOOL& rbIsEqual ) const
+{
+ rbIsEqual = FALSE;
+ rIndex = 0;
+ if( !Count() )
+ return;
+
+ ExcPal2Entry* pEntry = _Get( nLastInd );
+ if( pEntry )
+ if( pEntry->IsEqual( rCol ) )
+ {
+ rIndex = nLastInd;
+ rbIsEqual = TRUE;
+ return;
+ }
+
+ UINT32 nStart = 0;
+ UINT32 nEnd = List::Count() - 1;
+ UINT32 nNew;
+
+ while( !rbIsEqual && (nStart <= nEnd) )
+ {
+ nNew = (nStart + nEnd) >> 1;
+ pEntry = _Get( nNew );
+ rbIsEqual = pEntry->IsEqual( rCol );
+ if( !rbIsEqual )
+ {
+ if( pEntry->IsGreater( rCol ) )
+ nEnd = nNew - 1;
+ else
+ {
+ nStart = nNew + 1;
+ if( nStart > nEnd )
+ nNew++;
+ }
+ }
+ }
+ rIndex = nNew;
+}
+
+ExcPal2Entry* ExcPalette2::CreateEntry( const Color& rCol, UINT32 nIndex )
+{
+ ExcPal2Entry* pEntry = new ExcPal2Entry( rCol, List::Count() );
+ List::Insert( pEntry, nIndex );
+ return pEntry;
+}
+
+UINT32 ExcPalette2::InsertColor( const Color& rCol, UINT16 nColorType )
+{
+ UINT32 nIndex;
+ BOOL bIsEqual;
+ SearchEntry( rCol, nIndex, bIsEqual );
+
+ ExcPal2Entry* pEntry = _Get( nIndex );
+ if( !pEntry || !bIsEqual )
+ pEntry = CreateEntry( rCol, nIndex );
+
+ pEntry->UpdateEntry( nColorType );
+ nLastInd = nIndex;
+ return pEntry->GetSerial();
+}
+
+UINT32 ExcPalette2::InsertIndex( UINT16 nIndex )
+{
+ return EXC_PAL2_INDEXBASE | nIndex;
+}
+
+void ExcPalette2::RecalcColorIndex( UINT32 nKeep, UINT32 nRemove )
+{
+ UINT32 nInd;
+ UINT32* pColInd;
+ for( nInd = 0, pColInd = pColorIndex; nInd < nMaxSerial; nInd++, pColInd++ )
+ {
+ if( *pColInd == nRemove )
+ *pColInd = nKeep;
+ if( *pColInd > nRemove )
+ (*pColInd)--;
+ }
+}
+
+void ExcPalette2::MergeColors( UINT32 nKeep, UINT32 nRemove )
+{
+ if( nRemove == 0 )
+ {
+ UINT32 nSwap = nKeep;
+ nKeep = nRemove;
+ nRemove = nSwap;
+ }
+
+ ExcPal2Entry* pKeepEntry = _Get( nKeep );
+ ExcPal2Entry* pRemoveEntry = _Get( nRemove );
+ if( pKeepEntry && pRemoveEntry )
+ {
+ if( nKeep == 0 )
+ pKeepEntry->AddWeighting( *pRemoveEntry );
+ else
+ pKeepEntry->AddColor( *pRemoveEntry );
+
+ List::Remove( nRemove );
+ delete pRemoveEntry;
+ RecalcColorIndex( nKeep, nRemove );
+ }
+}
+
+UINT32 ExcPalette2::GetRemoveColor() const
+{
+ UINT32 nFound = 0;
+ UINT32 nMinW = 0xFFFFFFFF;
+
+ for( UINT32 nInd = 0; nInd < List::Count(); nInd++ )
+ {
+ ExcPal2Entry* pEntry = _Get( nInd );
+ if( pEntry )
+ if( pEntry->GetWeighting() < nMinW )
+ {
+ nFound = nInd;
+ nMinW = pEntry->GetWeighting();
+ }
+ }
+ return nFound;
+}
+
+INT32 ExcPalette2::GetNearColors( const Color& rCol, UINT32& rFirst, UINT32& rSecond ) const
+{
+ rFirst = rSecond = 0;
+ INT32 nMinD1 = 0x7FFFFFFF;
+ INT32 nMinD2 = 0x7FFFFFFF;
+
+ for( UINT32 nInd = 0; nInd < List::Count(); nInd++ )
+ {
+ ExcPal2Entry* pEntry = _Get( nInd );
+ if( pEntry )
+ {
+ Color aEntryColor( pEntry->GetColor() );
+ INT32 nDist = lcl_GetColorDistance( aEntryColor, rCol );
+ if( nDist < nMinD1 )
+ {
+ rSecond = rFirst;
+ nMinD2 = nMinD1;
+ rFirst = nInd;
+ nMinD1 = nDist;
+ }
+ else if( nDist < nMinD2 )
+ {
+ rSecond = nInd;
+ nMinD2 = nDist;
+ }
+ }
+ }
+ return nMinD1;
+}
+
+UINT32 ExcPalette2::GetNearestColor( const Color& rCol, UINT32 nIgnore ) const
+{
+ UINT32 nFound = 0;
+ INT32 nMinD = 0x7FFFFFFF;
+
+ for( UINT32 nInd = 0; nInd < List::Count(); nInd++ )
+ if( nInd != nIgnore )
+ {
+ ExcPal2Entry* pCheck = _Get( nInd );
+ if( pCheck )
+ {
+ Color aCheckColor( pCheck->GetColor() );
+ INT32 nDist = lcl_GetColorDistance( rCol, aCheckColor );
+ if( nDist < nMinD )
+ {
+ nFound = nInd;
+ nMinD = nDist;
+ }
+ }
+ }
+ return nFound;
+}
+
+UINT32 ExcPalette2::GetNearestColor( UINT32 nIndex ) const
+{
+ ExcPal2Entry* pEntry = _Get( nIndex );
+ if( !pEntry )
+ return 0;
+
+ Color aCol( pEntry->GetColor() );
+ return GetNearestColor( aCol, nIndex );
+}
+
+void ExcPalette2::ReduceColors()
+{
+ nMaxSerial = List::Count();
+ if( !nMaxSerial )
+ return;
+
+ pColorIndex = new UINT32[ nMaxSerial ];
+ pColors = new Color[ nMaxSerial ];
+
+ for( UINT32 nInd = 0; nInd < nMaxSerial; nInd++ )
+ {
+ ExcPal2Entry* pEntry = _Get( nInd );
+ if( pEntry )
+ {
+ pColorIndex[ pEntry->GetSerial() ] = nInd;
+ pColors[ pEntry->GetSerial() ].SetColor( pEntry->GetColor() );
+ }
+ }
+
+ while( List::Count() > rColBuff.GetAnz() )
+ {
+ UINT32 nRemove = GetRemoveColor();
+ UINT32 nNearest = GetNearestColor( nRemove );
+ MergeColors( nNearest, nRemove );
+ }
+}
+
+UINT16 ExcPalette2::GetColorIndex( const Color& rCol ) const
+{
+ UINT32 nIndex = GetNearestColor( rCol, EXC_PAL2_IGNORE );
+ return (UINT16)(nIndex + ColorBuffer::GetIndCorrect());
+}
+
+UINT16 ExcPalette2::GetColorIndex( UINT32 nSerial ) const
+{
+ if( nSerial >= EXC_PAL2_INDEXBASE )
+ return (UINT16)(nSerial & !EXC_PAL2_INDEXBASE);
+ if( (nSerial >= nMaxSerial) || !pColorIndex )
+ return 0;
+ return (UINT16)(pColorIndex[ nSerial ] + ColorBuffer::GetIndCorrect());
+}
+
+void ExcPalette2::GetMixedColors( UINT32 nForeSer, UINT32 nBackSer,
+ UINT16& rForeInd, UINT16& rBackInd, UINT16& rPatt ) const
+{
+ if( (nForeSer >= EXC_PAL2_INDEXBASE) || (nBackSer >= EXC_PAL2_INDEXBASE) ||
+ ( !rPatt ) ) // <> 0x0000 -> non-solid brush
+ {
+ rForeInd = GetColorIndex( nForeSer );
+ rBackInd = GetColorIndex( nBackSer );
+ return;
+ }
+
+ rForeInd = rBackInd = 0;
+ if( (nForeSer >= nMaxSerial) || !pColors )
+ return;
+
+ UINT32 nIndex1, nIndex2;
+ Color aColorArr[ 5 ];
+ INT32 nFirstDist = GetNearColors( pColors[ nForeSer ], nIndex1, nIndex2 );
+
+ ExcPal2Entry* pEntry1 = _Get( nIndex1 );
+ ExcPal2Entry* pEntry2 = _Get( nIndex2 );
+ if( !pEntry1 || !pEntry2 )
+ return;
+
+ aColorArr[ 0 ].SetColor( pEntry1->GetColor() );
+ aColorArr[ 4 ].SetColor( pEntry2->GetColor() );
+ lcl_SetMixedColor( aColorArr[ 2 ], aColorArr[ 0 ], aColorArr[ 4 ] );
+ lcl_SetMixedColor( aColorArr[ 1 ], aColorArr[ 0 ], aColorArr[ 2 ] );
+ lcl_SetMixedColor( aColorArr[ 3 ], aColorArr[ 2 ], aColorArr[ 4 ] );
+
+ INT32 nMinDist = nFirstDist;
+ UINT16 nMinIndex = 0;
+ for( UINT16 nCnt = 1; nCnt < 4; nCnt++ )
+ {
+ INT32 nDist = lcl_GetColorDistance( pColors[ nForeSer ], aColorArr[ nCnt ] );
+ if( nDist < nMinDist )
+ {
+ nMinDist = nDist;
+ nMinIndex = nCnt;
+ }
+ }
+ rForeInd = (UINT16)(nIndex1 + ColorBuffer::GetIndCorrect());
+ rBackInd = (UINT16)(nIndex2 + ColorBuffer::GetIndCorrect());
+ if( nMinDist < (nFirstDist >> 1) )
+ switch( nMinIndex )
+ {
+ case 1: rPatt = 3; break;
+ case 2: rPatt = 2; break;
+ case 3: rPatt = 4; break;
+ }
+}
+
+ColorData ExcPalette2::GetRGBValue( UINT16 nIndex ) const
+{
+ if( nIndex >= ColorBuffer::GetIndCorrect() )
+ {
+ ExcPal2Entry* pEntry = _Get( nIndex - ColorBuffer::GetIndCorrect() );
+ if( pEntry )
+ return pEntry->GetColor();
+ }
+ return 0;
+}
+
+void ExcPalette2::SaveCont( SvStream& rStrm )
+{
+ rStrm << rColBuff.GetAnz();
+
+ for( ExcPal2Entry* pEntry = _First(); pEntry; pEntry = _Next() )
+ pEntry->Save( rStrm );
+
+ for( UINT16 nInd = List::Count(); nInd < rColBuff.GetAnz(); nInd++ )
+ rStrm << rColBuff.GetRed( nInd )
+ << rColBuff.GetGreen( nInd )
+ << rColBuff.GetBlue( nInd )
+ << (UINT8)0x00;
+}
+
+UINT16 ExcPalette2::GetNum() const
+{
+ return 0x0092;
+}
+
+UINT16 ExcPalette2::GetLen() const
+{
+ return 2 + 4 * rColBuff.GetAnz();
+}
+//_____________________________________________________________________________
+
+
+
+ExcExterncount::ExcExterncount( RootData* pRD, const BOOL bTableNew ) : ExcRoot( pRD )
+{
+ bTable = bTableNew;
+}
+
+
+void ExcExterncount::SaveCont( SvStream &rOut )
+{
+ UINT16 nNumTabs = pExcRoot->pDoc->GetTableCount();
+
+ if( nNumTabs && bTable )
+ nNumTabs--;
+
+ rOut << nNumTabs;
+}
+
+
+UINT16 ExcExterncount::GetNum( void ) const
+{
+ return 0x0016;
+}
+
+
+UINT16 ExcExterncount::GetLen( void ) const
+{
+ return 2;
+}
+
+
+
+
+ExcExternsheet::ExcExternsheet( RootData* pExcRoot, const UINT16 nNewTabNum ) : ExcRoot( pExcRoot )
+{
+ DBG_ASSERT( pExcRoot->pDoc->HasTable( nNewTabNum ),
+ "*ExcExternsheet::ExcExternsheet(): Tabelle existiert nicht!" );
+
+ pExcRoot->pDoc->GetName( nNewTabNum, aTabName );
+ DBG_ASSERT( aTabName.Len() < 256,
+ "*ExcExternsheet::ExcExternsheet(): Tabellenname zu lang fuer Excel!" );
+}
+
+
+void ExcExternsheet::SaveCont( SvStream& rOut )
+{
+ rOut << ( UINT8 ) ( aTabName.Len() + 1 ) << ( UINT8 ) 0x03;
+ rOut.Write( ByteString( aTabName, *pExcRoot->pCharset ).GetBuffer(), aTabName.Len() );
+}
+
+
+UINT16 ExcExternsheet::GetNum( void ) const
+{
+ return 0x0017;
+}
+
+
+UINT16 ExcExternsheet::GetLen( void ) const
+{
+ DBG_ASSERT( aTabName.Len() <= 0xFFFF, "*ExcExternsheet::GetLen(): Tab name to long!" );
+ return 2 + ( UINT16 ) aTabName.Len();
+}
+
+
+
+
+void ExcExternsheetList::_Save( SvStream& r )
+{
+ ExcExternsheet* p = ( ExcExternsheet* ) First();
+
+ while( p )
+ {
+ p->Save( r );
+ p = ( ExcExternsheet* ) Next();
+ }
+}
+
+
+ExcExternsheetList::~ExcExternsheetList()
+{
+ ExcExternsheet* p = ( ExcExternsheet* ) First();
+
+ while( p )
+ {
+ delete p;
+ p = ( ExcExternsheet* ) Next();
+ }
+}
+
+
+UINT16 ExcExternsheetList::GetNum( void ) const
+{ // Dummy
+ return 0;
+}
+
+
+UINT16 ExcExternsheetList::GetLen( void ) const
+{ // Dummy
+ return 0;
+}
+
+
+
+
+void ExcExternDup::_Save( SvStream& r )
+{
+ rExtCnt.Save( r );
+ rExtSheetList.Save( r );
+}
+
+
+ExcExternDup::ExcExternDup( ExcExterncount& rC, ExcExternsheetList& rL ) :
+ rExtCnt( rC ), rExtSheetList( rL )
+{
+}
+
+
+ExcExternDup::ExcExternDup( const ExcExternDup& r ) :
+ rExtCnt( r.rExtCnt ), rExtSheetList( r.rExtSheetList )
+{
+}
+
+
+UINT16 ExcExternDup::GetNum( void ) const
+{ // Dummy
+ return 0;
+}
+
+
+UINT16 ExcExternDup::GetLen( void ) const
+{ // Dummy
+ return 0;
+}
+
+
+
+
+ExcWindow2::ExcWindow2( UINT16 nTab ) : nTable( nTab )
+{
+}
+
+
+void ExcWindow2::SaveCont( SvStream& rOut )
+{
+ BYTE pData[] = { 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+ DBG_ASSERT( sizeof(pData) == GetLen(), "ExcWindow2::SaveCont: length mismatch" );
+ if ( GetTable() == 0 )
+ pData[1] |= 0x06; // displayed and selected
+ rOut.Write( pData, GetLen() );
+}
+
+
+UINT16 ExcWindow2::GetNum( void ) const
+{
+ return 0x023e;
+}
+
+
+UINT16 ExcWindow2::GetLen( void ) const
+{
+ return 10;
+}
+
+
+
+
+UsedList::UsedList( void )
+{
+ nLen = 0;
+}
+
+
+void UsedList::SaveCont( SvStream& rOut )
+{
+ ExcRecord* pExcRec = ( ExcRecord* ) First();
+
+ while( pExcRec )
+ {
+ pExcRec->Save( rOut );
+ pExcRec = ( ExcRecord * ) Next();
+ }
+}
+
+
+void UsedList::_Save( SvStream &rOut )
+{
+}
+
+
+void UsedList::SetBaseIndex( UINT16 nNewVal )
+{
+ nBaseIndex = nNewVal;
+}
+
+
+UINT16 UsedList::GetLen( void ) const
+{
+ return nLen;
+}
+
+
+
+
+UsedFontList::UsedFontList( BiffTyp eBiffP ) : eBiff( eBiffP )
+{ }
+
+
+UsedFontList::~UsedFontList()
+{
+ for( ExcFont* pFont = _First(); pFont; pFont = _Next() )
+ delete pFont;
+}
+
+
+BOOL UsedFontList::Find( ExcFont* pExcFont, UINT16& rIndex )
+{
+ rIndex = nBaseIndex;
+ for( ExcFont* pCurr = _First(); pCurr; pCurr = _Next() )
+ {
+ if( *pCurr == *pExcFont )
+ {
+ if( !pExcFont->HasIgnoreCol() )
+ pCurr->SetColor( pExcFont->GetColor() ); // overwrite ignore flag
+ return TRUE;
+ }
+ rIndex++;
+ }
+ return FALSE;
+}
+
+
+UINT16 UsedFontList::Add( ExcFont* pExcFont )
+{
+ UINT16 nIndex;
+ if( Find( pExcFont, nIndex ) )
+ {
+ delete pExcFont;
+ return nIndex;
+ }
+
+ Insert( pExcFont, LIST_APPEND );
+
+ nLen += pExcFont->GetLen();
+ return (UINT16)(Count() - 1 + nBaseIndex);
+}
+
+
+UINT16 UsedFontList::Add( Font* pFont )
+{
+ return Add( new ExcFont( pFont, eBiff ) );
+}
+
+
+UINT16 UsedFontList::GetNum( void ) const
+{
+ return 0xFF31;
+}
+
+
+
+
+UsedFormList::~UsedFormList()
+{
+ void* pAkt = First();
+
+ while( pAkt )
+ {
+ delete ( ExcFormat* ) pAkt;
+ pAkt = Next();
+ }
+}
+
+
+UINT16 UsedFormList::Add( ExcFormat* pFormat )
+{
+ // Doubletten suchen
+ UINT32 nSearch = pFormat->nScIndex;
+
+ ExcFormat* pAkt = ( ExcFormat* ) First();
+ UINT16 nC = nBaseIndex;
+ while( pAkt )
+ {
+ if( pAkt->nScIndex == nSearch )
+ {
+ delete pFormat;
+ return nC;
+ }
+ nC++;
+ pAkt = ( ExcFormat* ) Next();
+ }
+ pFormat->nIndex = nC;
+ Insert( pFormat, LIST_APPEND );
+ nLen += pFormat->GetLen();
+ return nC;
+}
+
+
+UINT16 UsedFormList::GetNum( void ) const
+{
+ return 0xFF1E;
+}
+
+
+
+
+void UsedAttrList::AddNewXF( const ScPatternAttr* pAttr, const BOOL bStyle, const BOOL bExplLineBreak,
+ const ULONG nAltNumForm, BOOL bForceAltNumForm )
+{
+ // Aufbauen der Excel-Daten
+ ENTRY* pData = new ENTRY;
+ pData->pPattAttr = pAttr;
+ pData->bLineBreak = bExplLineBreak;
+ pData->nAltNumForm = nAltNumForm;
+ Insert( ( void* ) pData, LIST_APPEND );
+
+ // Font-Daten
+ UINT16 nFontIndex;
+
+ // Format-Daten
+ ULONG nScForm;
+
+ if( pAttr )
+ {
+ Font* pFont = new Font;
+ pAttr->GetFont( *pFont );
+ nFontIndex = rFntLst.Add( pFont );
+
+ if ( bForceAltNumForm )
+ nScForm = nAltNumForm;
+ else
+ {
+ nScForm = (( SfxUInt32Item& ) pAttr->GetItem( ATTR_VALUE_FORMAT )).GetValue();
+
+ if( nAltNumForm != NUMBERFORMAT_ENTRY_NOT_FOUND &&
+ ( nScForm % SV_COUNTRY_LANGUAGE_OFFSET ) == 0 )
+ nScForm = nAltNumForm;
+ }
+ }
+ else
+ {
+ nScForm = nAltNumForm;
+ nFontIndex = 0;
+ }
+
+ ExcFormat* pFormat = new ExcFormat( pExcRoot, nScForm );
+
+ UINT16 nFormatIndex = rFrmLst.Add( pFormat );
+
+ // XF-Daten + Laengen-Update
+ if ( pExcRoot->eDateiTyp < Biff8 )
+ pData->pXfRec = new ExcXf( nFontIndex, nFormatIndex, pAttr, pData->bLineBreak, bStyle );
+ else
+ pData->pXfRec = new ExcXf8( nFontIndex, nFormatIndex, pAttr, pData->bLineBreak, bStyle );
+ nLen += pData->pXfRec->GetLen();
+}
+
+
+UsedAttrList::UsedAttrList( RootData* pRD, ExcPalette2& rPal2,
+ UsedFontList& rUFntLst, UsedFormList& rUFrmLst ) :
+ ExcRoot( pRD ),
+ rPalette2( rPal2 ),
+ rFntLst( rUFntLst ),
+ rFrmLst( rUFrmLst )
+{
+}
+
+
+UsedAttrList::~UsedAttrList()
+{
+ void* pAkt = First();
+
+ while( pAkt )
+ {
+ delete ( ( ENTRY* ) pAkt )->pXfRec; // erst ExcXf loeschen
+ delete ( ENTRY* ) pAkt; // ... dann Entry selbst
+ pAkt = Next();
+ }
+}
+
+
+void UsedAttrList::SaveCont( SvStream& rOut )
+{
+ ENTRY* pEntry = ( ENTRY* ) First();
+
+ while( pEntry )
+ {
+ pEntry->pXfRec->Save( rOut );
+ pEntry = ( ENTRY* ) Next();
+ }
+}
+
+
+UINT16 UsedAttrList::Find( const ScPatternAttr* pAttr, const BOOL bStyle,
+ const UINT32 nAltNumForm, BOOL bForceAltNumForm )
+{
+ if( !pAttr && nAltNumForm == NUMBERFORMAT_ENTRY_NOT_FOUND )
+ return 15; // default XF
+
+ DBG_ASSERT( nBaseIndex, "*UsedAttrList::Find(): leer == nichtleer?" );
+
+ const ENTRY* pAkt = ( const ENTRY* ) First();
+ UINT16 nC = nBaseIndex;
+
+ while( pAkt )
+ {
+ if( pAkt->Equal( pAttr, nAltNumForm ) )
+ return nC;
+ pAkt = ( const ENTRY* ) Next();
+ nC++;
+ }
+
+ // neuen ausdenken
+
+ AddNewXF( pAttr, bStyle, FALSE, nAltNumForm, bForceAltNumForm );
+
+ return nC;
+}
+
+
+UINT16 UsedAttrList::FindWithLineBreak( const ScPatternAttr* pAttr )
+{
+ DBG_ASSERT( nBaseIndex,
+ "*UsedAttrList::FindWithLineBreak(): leer == nichtleer?" );
+
+ ENTRY* pAkt = ( ENTRY* ) First();
+ UINT16 nC = nBaseIndex;
+
+ while( pAkt )
+ {
+ if( pAkt->pPattAttr == pAttr && pAkt->bLineBreak )
+ return nC;
+ pAkt = ( ENTRY* ) Next();
+ nC++;
+ }
+
+ // neuen ausdenken
+
+ AddNewXF( pAttr, FALSE, TRUE );
+
+ return nC;
+}
+
+
+UINT16 UsedAttrList::GetNum( void ) const
+{
+ return 0xFFE0;
+}
+
+
+
+
+void ExcSetup::SaveCont( SvStream& rStr )
+{
+ rStr << nPaperSize << nScale << nPageStart
+ << ( UINT16 ) 1 << ( UINT16 ) 1 // FitWidth / FitHeight
+ << nGrbit
+ << ( UINT16 ) 0x012C << ( UINT16 ) 0x012C // Res / VRes
+ << ( UINT32 ) 0 << ( UINT32 ) 0x3FE00000 // Header margin (double)
+ << ( UINT32 ) 0 << ( UINT32 ) 0x3FE00000 // Footer margin (double)
+ << ( UINT16 ) 1; // num of copies
+}
+
+
+ExcSetup::ExcSetup( RootData* pExcRoot )
+{
+ SfxStyleSheet* pStSh = pExcRoot->pStyleSheet;
+
+ if( pStSh )
+ {
+ SfxItemSet& rSet = *pExcRoot->pStyleSheetItemSet;
+ const SvxPageItem& rItem = ( const SvxPageItem& ) rSet.Get( ATTR_PAGE );
+ const BOOL bLandscape = rItem.IsLandscape();
+
+ nGrbit = bLandscape? 0 : 0x0002; // !fLandscape / fLandscape
+
+ // direct copy from ImportExcel::Setup()!
+ struct PAPER_SIZE
+ {
+ INT32 nH;
+ INT32 nW;
+ };
+ static const nAnzSizes = 42;
+ static const PAPER_SIZE pPS[ nAnzSizes ] =
+ {
+ {(INT32)(0),(INT32)(0)}, // undefined
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*11)}, // Letter 8 1/2 x 11 in
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*11)}, // Letter Small 8 1/2 x 11 in
+ {(INT32)(TWIPS_PER_INCH*11),(INT32)(TWIPS_PER_INCH*17)}, // Tabloid 11 x 17 in
+ {(INT32)(TWIPS_PER_INCH*17),(INT32)(TWIPS_PER_INCH*11)}, // Ledger 17 x 11 in
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*14)}, // Legal 8 1/2 x 14 in
+ {(INT32)(TWIPS_PER_INCH*5.5),(INT32)(TWIPS_PER_INCH*8.5)}, // Statement 5 1/2 x 8 1/2 in
+ {(INT32)(TWIPS_PER_INCH*7.25),(INT32)(TWIPS_PER_INCH*10.5)}, // Executive 7 1/4 x 10 1/2 in
+ {(INT32)(TWIPS_PER_CM*29.7),(INT32)(TWIPS_PER_CM*42.0)}, // A3 297 x 420 mm
+ {(INT32)(TWIPS_PER_CM*21.0),(INT32)(TWIPS_PER_CM*29.7)}, // A4 210 x 297 mm
+ {(INT32)(TWIPS_PER_CM*21.0),(INT32)(TWIPS_PER_CM*29.7)}, // A4 Small 210 x 297 mm
+ {(INT32)(TWIPS_PER_CM*14.8),(INT32)(TWIPS_PER_CM*21.0)}, // A5 148 x 210 mm
+ {(INT32)(TWIPS_PER_CM*25.0),(INT32)(TWIPS_PER_CM*35.4)}, // B4 250 x 354
+ {(INT32)(TWIPS_PER_CM*18.2),(INT32)(TWIPS_PER_CM*25.7)}, // B5 182 x 257 mm
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*13)}, // Folio 8 1/2 x 13 in
+ {(INT32)(TWIPS_PER_CM*21.5),(INT32)(TWIPS_PER_CM*27.5)}, // Quarto 215 x 275 mm
+ {(INT32)(TWIPS_PER_INCH*10),(INT32)(TWIPS_PER_INCH*14)}, // 10x14 in
+ {(INT32)(TWIPS_PER_INCH*11),(INT32)(TWIPS_PER_INCH*17)}, // 11x17 in
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*11)}, // Note 8 1/2 x 11 in
+ {(INT32)(TWIPS_PER_INCH*3.875),(INT32)(TWIPS_PER_INCH*8.875)}, // Envelope #9 3 7/8 x 8 7/8
+ {(INT32)(TWIPS_PER_INCH*4.125),(INT32)(TWIPS_PER_INCH*9.5)}, // Envelope #10 4 1/8 x 9 1/2
+ {(INT32)(TWIPS_PER_INCH*4.5),(INT32)(TWIPS_PER_INCH*10.375)}, // Envelope #11 4 1/2 x 10 3/8
+ {(INT32)(TWIPS_PER_INCH*4.03),(INT32)(TWIPS_PER_INCH*11)}, // Envelope #12 4 \276 x 11
+ {(INT32)(TWIPS_PER_INCH*14.5),(INT32)(TWIPS_PER_INCH*11.5)}, // Envelope #14 5 x 11 1/2
+ {(INT32)(0),(INT32)(0)}, // C size sheet
+ {(INT32)(0),(INT32)(0)}, // D size sheet
+ {(INT32)(0),(INT32)(0)}, // E size sheet
+ {(INT32)(TWIPS_PER_CM*11.0),(INT32)(TWIPS_PER_CM*22.0)}, // Envelope DL 110 x 220mm
+ {(INT32)(TWIPS_PER_CM*16.2),(INT32)(TWIPS_PER_CM*22.9)}, // Envelope C5 162 x 229 mm
+ {(INT32)(TWIPS_PER_CM*32.4),(INT32)(TWIPS_PER_CM*45.8)}, // Envelope C3 324 x 458 mm
+ {(INT32)(TWIPS_PER_CM*22.9),(INT32)(TWIPS_PER_CM*32.4)}, // Envelope C4 229 x 324 mm
+ {(INT32)(TWIPS_PER_CM*11.4),(INT32)(TWIPS_PER_CM*16.2)}, // Envelope C6 114 x 162 mm
+ {(INT32)(TWIPS_PER_CM*11.4),(INT32)(TWIPS_PER_CM*22.9)}, // Envelope C65 114 x 229 mm
+ {(INT32)(TWIPS_PER_CM*25.0),(INT32)(TWIPS_PER_CM*35.3)}, // Envelope B4 250 x 353 mm
+ {(INT32)(TWIPS_PER_CM*17.6),(INT32)(TWIPS_PER_CM*25.0)}, // Envelope B5 176 x 250 mm
+ {(INT32)(TWIPS_PER_CM*17.6),(INT32)(TWIPS_PER_CM*12.5)}, // Envelope B6 176 x 125 mm
+ {(INT32)(TWIPS_PER_CM*11.0),(INT32)(TWIPS_PER_CM*23.0)}, // Envelope 110 x 230 mm
+ {(INT32)(TWIPS_PER_INCH*3.875),(INT32)(TWIPS_PER_INCH*7.5)}, // Envelope Monarch 3.875 x 7.5 in
+ {(INT32)(TWIPS_PER_INCH*3.625),(INT32)(TWIPS_PER_INCH*6.5)}, // 6 3/4 Envelope 3 5/8 x 6 1/2 in
+ {(INT32)(TWIPS_PER_INCH*14.875),(INT32)(TWIPS_PER_INCH*11)}, // US Std Fanfold 14 7/8 x 11 in
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*12)}, // German Std Fanfold 8 1/2 x 12 in
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*13)} // German Legal Fanfold 8 1/2 x 13 in
+ };
+
+ UINT16 n = 0;
+ const PAPER_SIZE* pAct = pPS;
+ Size aSize( ( ( const SvxSizeItem& ) rSet.Get( ATTR_PAGE_SIZE ) ).GetSize() );
+ const long nH = bLandscape? aSize.nB : aSize.nA;
+ const long nW = bLandscape? aSize.nA : aSize.nB;
+
+ long nMaxDH = 50;
+ long nMinDH = -nMaxDH;
+ long nMaxDW = 70;
+ long nMinDW = -nMaxDW;
+ long nDH, nDW;
+
+ nPaperSize = 0;
+
+ while( nPaperSize < nAnzSizes )
+ {
+ nDH = pAct->nH - nH;
+ nDW = pAct->nW - nW;
+ if( nDH >= nMinDH && nDH <= nMaxDH && nDW >= nMinDW && nDW <= nMaxDW )
+ break;
+ nPaperSize++;
+ pAct++;
+ }
+
+ if( nPaperSize >= nAnzSizes )
+ nPaperSize = 0; // default if size doesn't match Excel sizes
+
+ nScale = ( UINT16 ) ( ( const SfxUInt16Item& ) rSet.Get( ATTR_PAGE_SCALE ) ).GetValue();
+
+ nPageStart = ( UINT16 ) ( ( const SfxUInt16Item& ) rSet.Get( ATTR_PAGE_FIRSTPAGENO ) ).GetValue();
+
+ if( nPageStart != 1 )
+ nGrbit |= 0x0080; // fUsePage
+
+ if( !( ( const SfxBoolItem& ) rSet.Get( ATTR_PAGE_TOPDOWN ) ).GetValue() )
+ nGrbit |= 0x0001; // ffLeftToRight
+
+ if( !( ( const SfxBoolItem& ) rSet.Get( ATTR_PAGE_NOTES ) ).GetValue() )
+ nGrbit |= 0x0020; // fNotes
+ }
+ else
+ { // defaults
+ nPaperSize = 0;
+ nScale = 100;
+ nPageStart = 1;
+ nGrbit = 0x0001;
+ }
+}
+
+
+UINT16 ExcSetup::GetNum( void ) const
+{
+ return 0x00A1;
+}
+
+
+UINT16 ExcSetup::GetLen( void ) const
+{
+ return 0x0022;
+}
+
+
+
+
+void ExcHeaderFooter::_Save( SvStream& rStream )
+{
+ if( !aFormatString.Len() )
+ return;
+
+ if( bUnicode )
+ { // >= Biff8
+ XclRawUnicodeString aStr( aFormatString );
+ DBG_ASSERT( aStr.GetByteCount() <= 0xFFFC, "*ExcHeaderFooter::SaveCont(): string is to long!" );
+
+ nLen = ( UINT16 ) ( aStr.GetByteCount() + 3 );
+
+ rStream << GetNum() << nLen << aStr.GetLen() << aStr.GetGrbit();
+ aStr.WriteToStream( rStream );
+ }
+ else
+ { // < Biff8
+ ByteString aStr( aFormatString, *pExcRoot->pCharset );
+ DBG_ASSERT( aStr.Len() <= 0xFE, "*ExcHeaderFooter::SaveCont(): string is to long!" );
+
+ nLen = ( UINT16 ) ( aStr.Len() + 1 );
+
+ rStream << GetNum() << nLen << ( UINT8 ) aStr.Len();
+ rStream.Write( aStr.GetBuffer(), aStr.Len() );
+ }
+}
+
+
+String ExcHeaderFooter::GetFormatString( USHORT nWhich )
+{
+ SfxItemSet* pItemSet = pExcRoot->pStyleSheetItemSet;
+
+ if( pItemSet )
+ return GetFormatString( ( const ScPageHFItem& ) pItemSet->Get( nWhich ) );
+ else
+ return EMPTY_STRING;
+}
+
+
+String ExcHeaderFooter::GetFormatString( const ScPageHFItem& r )
+{
+ String aRet;
+
+ const EditTextObject* pLeft = r.GetLeftArea();
+ const EditTextObject* pMid = r.GetCenterArea();
+ const EditTextObject* pRight = r.GetRightArea();
+
+ if( pLeft )
+ {
+ String aStr( GetFormatString( *pLeft ) );
+
+ if( aStr.Len() )
+ {
+ aRet.AppendAscii( "&L" );
+ aRet.Append( aStr );
+ }
+ }
+
+ if( pMid )
+ {
+ String aStr( GetFormatString( *pMid ) );
+
+ if( aStr.Len() )
+ {
+ aRet.AppendAscii( "&C" );
+ aRet.Append( aStr );
+ }
+ }
+
+ if( pRight )
+ {
+ String aStr( GetFormatString( *pRight ) );
+
+ if( aStr.Len() )
+ {
+ aRet.AppendAscii( "&R" );
+ aRet.Append( aStr );
+ }
+ }
+
+ return aRet;
+}
+
+
+String ExcHeaderFooter::GetFormatString( const EditTextObject& rEdTxtObj )
+{
+ String aRet;
+
+ const sal_Unicode cParSep = 0x0A;
+ BOOL bFields = FALSE;
+
+ EditEngine& rEdEng = pExcRoot->GetEdEngForHF();
+
+ rEdEng.SetText( rEdTxtObj );
+
+ UINT16 nParas = rEdEng.GetParagraphCount();
+ if( nParas )
+ {
+ ESelection aSel( 0, 0, nParas - 1, rEdEng.GetTextLen( nParas - 1 ) );
+ SfxItemSet aSet( rEdEng.GetAttribs( aSel ) );
+ SfxItemState eFieldState = aSet.GetItemState( EE_FEATURE_FIELD, FALSE );
+ if( eFieldState == SFX_ITEM_DONTCARE || eFieldState == SFX_ITEM_SET )
+ bFields = TRUE;
+ }
+ if( bFields )
+ {
+ BOOL bOldUpdateMode = rEdEng.GetUpdateMode();
+ UINT16 nPar;
+
+ rEdEng.SetUpdateMode( TRUE );
+
+ for( nPar=0 ; nPar < nParas ; nPar++ )
+ {
+ if( nPar > 0 )
+ aRet += cParSep;
+
+ SvUShorts aPortions;
+
+ rEdEng.GetPortions( nPar, aPortions );
+
+ UINT16 nCnt = aPortions.Count();
+ UINT16 nStart = 0;
+ UINT16 nPos;
+
+ for( nPos = 0 ; nPos < nCnt ; nPos++ )
+ {
+ UINT16 nEnd = aPortions.GetObject( nPos );
+ ESelection aSel( nPar, nStart, nPar, nEnd );
+
+ // fields are single characters
+ if( nEnd == nStart + 1 )
+ {
+ const SfxPoolItem* pItem;
+ SfxItemSet aSet = rEdEng.GetAttribs( aSel );
+ if( aSet.GetItemState( EE_FEATURE_FIELD, FALSE, &pItem ) == SFX_ITEM_ON )
+ {
+ const SvxFieldData* pField = ( ( const SvxFieldItem* ) pItem )->GetField();
+
+ if( pField )
+ {
+ const char* p;
+ if( pField->ISA( SvxPageField ) )
+ p = "&P";
+ else if( pField->ISA( SvxPagesField ) )
+ p = "&N";
+ else if( pField->ISA( SvxDateField ) )
+ p = "&D";
+ else if( pField->ISA( SvxTimeField ) || pField->ISA( SvxExtTimeField ) )
+ p = "&T";
+ else if( pField->ISA( SvxFileField ) || pField->ISA( SvxExtFileField ) )
+ p = "&F";
+ else if( pField->ISA( SvxTableField ) )
+ p = "&A";
+ else
+ p = "<unsupported field>";
+
+ aRet.AppendAscii( p );
+ }
+ }
+ else
+ aRet += rEdEng.GetText( aSel );
+ }
+ else
+ aRet += rEdEng.GetText( aSel );
+
+ nStart = nEnd;
+ }
+ }
+ rEdEng.SetUpdateMode( bOldUpdateMode );
+ }
+
+ return aRet;
+}
+
+
+ExcHeaderFooter::ExcHeaderFooter( RootData* p, const BOOL b ) :
+ nLen( 0 ),
+ bUnicode( b ),
+ ExcRoot( p )
+{
+}
+
+
+UINT16 ExcHeaderFooter::GetLen( void ) const
+{
+ return nLen;
+}
+
+
+
+
+ExcHeader::ExcHeader( RootData* p, const BOOL b ) : ExcHeaderFooter( p, b )
+{
+ aFormatString = GetFormatString( ATTR_PAGE_HEADERRIGHT );
+}
+
+
+UINT16 ExcHeader::GetNum( void ) const
+{
+ return 0x0014;
+}
+
+
+
+
+ExcFooter::ExcFooter( RootData* p, const BOOL b ) : ExcHeaderFooter( p, b )
+{
+ aFormatString = GetFormatString( ATTR_PAGE_FOOTERRIGHT );
+}
+
+
+UINT16 ExcFooter::GetNum( void ) const
+{
+ return 0x0015;
+}
+
+
+
+
+void ExcBoolRecord::SaveCont( SvStream& r )
+{
+ r << ( UINT16 ) ( bVal? 0x0001 : 0x0000 );
+}
+
+
+ExcBoolRecord::ExcBoolRecord( SfxItemSet* pItemSet, USHORT nWhich, BOOL bDefault )
+{
+ bVal = pItemSet? ( ( const SfxBoolItem& ) pItemSet->Get( nWhich ) ).GetValue() : bDefault;
+}
+
+
+UINT16 ExcBoolRecord::GetLen( void ) const
+{
+ return 2;
+}
+
+
+
+
+ExcPrintheaders::ExcPrintheaders( SfxItemSet* p ) : ExcBoolRecord( p, ATTR_PAGE_HEADERS, TRUE )
+{
+}
+
+
+UINT16 ExcPrintheaders::GetNum( void ) const
+{
+ return 0x002A;
+}
+
+
+
+
+ExcPrintGridlines::ExcPrintGridlines( SfxItemSet* p ) : ExcBoolRecord( p, ATTR_PAGE_GRID, TRUE )
+{
+}
+
+
+UINT16 ExcPrintGridlines::GetNum( void ) const
+{
+ return 0x002B;
+}
+
+
+
+
+ExcHcenter::ExcHcenter( SfxItemSet* p ) : ExcBoolRecord( p, ATTR_PAGE_HORCENTER, FALSE )
+{
+}
+
+
+UINT16 ExcHcenter::GetNum( void ) const
+{
+ return 0x0083;
+}
+
+
+
+
+ExcVcenter::ExcVcenter( SfxItemSet* p ) : ExcBoolRecord( p, ATTR_PAGE_VERCENTER, FALSE )
+{
+}
+
+
+UINT16 ExcVcenter::GetNum( void ) const
+{
+ return 0x0084;
+}
+
+
+
+//___________________________________________________________________
+// AutoFilter
+
+
+
+void ExcFilterMode::SaveCont( SvStream& rStrm )
+{ }
+
+UINT16 ExcFilterMode::GetNum() const
+{
+ return 0x009B;
+}
+
+UINT16 ExcFilterMode::GetLen() const
+{
+ return 0;
+}
+
+
+
+
+ExcAutoFilterInfo::~ExcAutoFilterInfo()
+{ }
+
+void ExcAutoFilterInfo::SaveCont( SvStream& rStrm )
+{
+ rStrm << nCount;
+}
+
+UINT16 ExcAutoFilterInfo::GetNum() const
+{
+ return 0x009D;
+}
+
+UINT16 ExcAutoFilterInfo::GetLen() const
+{
+ return 2;
+}
+
+
+
+
+ExcFilterCondition::ExcFilterCondition() :
+ nType( EXC_AFTYPE_NOTUSED ),
+ nOper( EXC_AFOPER_EQUAL ),
+ fVal( 0.0 ),
+ pText( NULL )
+{ }
+
+ExcFilterCondition::~ExcFilterCondition()
+{
+ if( pText )
+ delete pText;
+}
+
+UINT16 ExcFilterCondition::GetTextBytes() const
+{
+ if( !pText )
+ return 0;
+ return 1 + pText->GetByteCount();
+}
+
+void ExcFilterCondition::SetCondition( UINT8 nTp, UINT8 nOp, double fV, String* pT )
+{
+ nType = nTp;
+ nOper = nOp;
+ fVal = fV;
+
+ if( pText )
+ delete pText;
+ pText = pT ? new XclRawUnicodeString( *pT ) : NULL;
+}
+
+void ExcFilterCondition::Save( SvStream& rStrm )
+{
+ rStrm << nType << nOper;
+ switch( nType )
+ {
+ case EXC_AFTYPE_DOUBLE:
+ rStrm << fVal;
+ break;
+ case EXC_AFTYPE_STRING:
+ DBG_ASSERT( pText, "ExcFilterCondition::Save() -- pText is NULL!" );
+ rStrm << (UINT32)0 << (UINT8) pText->GetLen() << (UINT16)0 << (UINT8)0;
+ break;
+ case EXC_AFTYPE_BOOLERR:
+ rStrm << (UINT8)0 << (UINT8)((fVal != 0) ? 1 : 0) << (UINT32)0 << (UINT16)0;
+ break;
+ default:
+ rStrm << (UINT32)0 << (UINT32)0;
+ }
+}
+
+void ExcFilterCondition::SaveText( SvStream& rStrm )
+{
+ if( nType == EXC_AFTYPE_STRING )
+ {
+ DBG_ASSERT( pText, "ExcFilterCondition::SaveText() -- pText is NULL!" );
+ rStrm << pText->GetGrbit();
+ pText->WriteToStream( rStrm );
+ }
+}
+
+
+
+
+ExcAutoFilter::ExcAutoFilter( UINT16 nC ) :
+ nCol( nC ),
+ nFlags( 0 )
+{ }
+
+BOOL ExcAutoFilter::AddCondition( ScQueryConnect eConn, UINT8 nType, UINT8 nOp,
+ double fVal, String* pText, BOOL bSimple )
+{
+ if( !aCond[ 1 ].IsEmpty() )
+ return FALSE;
+
+ UINT16 nInd = aCond[ 0 ].IsEmpty() ? 0 : 1;
+
+ if( nInd == 1 )
+ nFlags |= (eConn == SC_OR) ? EXC_AFFLAG_OR : EXC_AFFLAG_AND;
+ if( bSimple )
+ nFlags |= (nInd == 0) ? EXC_AFFLAG_SIMPLE1 : EXC_AFFLAG_SIMPLE2;
+
+ aCond[ nInd ].SetCondition( nType, nOp, fVal, pText );
+ return TRUE;
+}
+
+BOOL ExcAutoFilter::AddEntry( RootData& rRoot, const ScQueryEntry& rEntry )
+{
+ BOOL bConflict = FALSE;
+ String sText;
+
+ if( rEntry.pStr )
+ sText.Assign( *rEntry.pStr );
+
+ BOOL bLen = TRUEBOOL( sText.Len() );
+
+ // empty/nonempty fields
+ if( !bLen && (rEntry.nVal == SC_EMPTYFIELDS) )
+ bConflict = !AddCondition( rEntry.eConnect, EXC_AFTYPE_EMPTY, EXC_AFOPER_NONE, 0.0, NULL, TRUE );
+ else if( !bLen && (rEntry.nVal == SC_NONEMPTYFIELDS) )
+ bConflict = !AddCondition( rEntry.eConnect, EXC_AFTYPE_NOTEMPTY, EXC_AFOPER_NONE, 0.0, NULL, TRUE );
+ // other conditions
+ else
+ {
+ double fVal = 0.0;
+ ULONG nIndex = 0;
+ BOOL bIsNum = bLen ? rRoot.pDoc->GetFormatTable()->IsNumberFormat( sText, nIndex, fVal ) : TRUE;
+ String* pText = bIsNum ? NULL : &sText;
+
+ // top10 flags
+ UINT16 nNewFlags = 0x0000;
+ switch( rEntry.eOp )
+ {
+ case SC_TOPVAL:
+ nNewFlags = (EXC_AFFLAG_TOP10 | EXC_AFFLAG_TOP10TOP);
+ break;
+ case SC_BOTVAL:
+ nNewFlags = EXC_AFFLAG_TOP10;
+ break;
+ case SC_TOPPERC:
+ nNewFlags = (EXC_AFFLAG_TOP10 | EXC_AFFLAG_TOP10TOP | EXC_AFFLAG_TOP10PERC);
+ break;
+ case SC_BOTPERC:
+ nNewFlags = (EXC_AFFLAG_TOP10 | EXC_AFFLAG_TOP10PERC);
+ break;
+ }
+ BOOL bNewTop10 = TRUEBOOL( nNewFlags & EXC_AFFLAG_TOP10 );
+
+ bConflict = HasTop10() && bNewTop10;
+ if( !bConflict )
+ {
+ if( bNewTop10 )
+ {
+ if( fVal < 0 ) fVal = 0;
+ if( fVal >= 501 ) fVal = 500;
+ nFlags |= (nNewFlags | (UINT16)(fVal) << 7);
+ }
+ // normal condition
+ else
+ {
+ UINT8 nType = bIsNum ? EXC_AFTYPE_DOUBLE : EXC_AFTYPE_STRING;
+ UINT8 nOper = EXC_AFOPER_NONE;
+
+ switch( rEntry.eOp )
+ {
+ case SC_EQUAL: nOper = EXC_AFOPER_EQUAL; break;
+ case SC_LESS: nOper = EXC_AFOPER_LESS; break;
+ case SC_GREATER: nOper = EXC_AFOPER_GREATER; break;
+ case SC_LESS_EQUAL: nOper = EXC_AFOPER_LESSEQUAL; break;
+ case SC_GREATER_EQUAL: nOper = EXC_AFOPER_GREATEREQUAL; break;
+ case SC_NOT_EQUAL: nOper = EXC_AFOPER_NOTEQUAL; break;
+ }
+ bConflict = !AddCondition( rEntry.eConnect, nType, nOper, fVal, pText );
+ }
+ }
+ }
+ return bConflict;
+}
+
+void ExcAutoFilter::SaveCont( SvStream& rStrm )
+{
+ rStrm << nCol << nFlags;
+ aCond[ 0 ].Save( rStrm );
+ aCond[ 1 ].Save( rStrm );
+ aCond[ 0 ].SaveText( rStrm );
+ aCond[ 1 ].SaveText( rStrm );
+}
+
+UINT16 ExcAutoFilter::GetNum() const
+{
+ return 0x009E;
+}
+
+UINT16 ExcAutoFilter::GetLen() const
+{
+ return 24 + aCond[ 0 ].GetTextBytes() + aCond[ 1 ].GetTextBytes();
+}
+
+
+
+
+ExcAutoFilterRecs::ExcAutoFilterRecs( RootData& rRoot, UINT16 nTab ) :
+ pFilterMode( NULL ),
+ pFilterInfo( NULL )
+{
+ ScDBCollection& rDBColl = *rRoot.pDoc->GetDBCollection();
+
+ // search for first DB-range with filter
+ UINT16 nIndex = 0;
+ BOOL bFound = FALSE;
+ BOOL bAdvanced;
+ ScDBData* pData = NULL;
+ ScRange aRange;
+ ScRange aAdvRange;
+ while( (nIndex < rDBColl.GetCount()) && !bFound )
+ {
+ pData = rDBColl[ nIndex ];
+ if( pData )
+ {
+ pData->GetArea( aRange );
+ bAdvanced = pData->GetAdvancedQuerySource( aAdvRange );
+ bFound = (aRange.aStart.Tab() == nTab) &&
+ (pData->HasQueryParam() || pData->HasAutoFilter() || bAdvanced);
+ }
+ if( !bFound )
+ nIndex++;
+ }
+
+ if( pData && bFound )
+ {
+ ScQueryParam aParam;
+ pData->GetQueryParam( aParam );
+
+ ScRange aRange( aParam.nCol1, aParam.nRow1, aParam.nTab,
+ aParam.nCol2, aParam.nRow2, aParam.nTab );
+ UINT16 nColCnt = aParam.nCol2 - aParam.nCol1 + 1;
+
+ rRoot.pNameList->Append( new ExcName( &rRoot, aRange, EXC_BUILTIN_AUTOFILTER, TRUE ) );
+
+ // advanced filter
+ if( bAdvanced )
+ {
+ // filter criteria, excel allows only same table
+ if( aAdvRange.aStart.Tab() == nTab )
+ rRoot.pNameList->Append(
+ new ExcName( &rRoot, aAdvRange, EXC_BUILTIN_CRITERIA ) );
+
+ // filter destination range, excel allows only same table
+ if( !aParam.bInplace )
+ {
+ ScRange aDestRange( aParam.nDestCol, aParam.nDestRow, aParam.nDestTab );
+ aDestRange.aEnd.IncCol( nColCnt - 1 );
+ if( aDestRange.aStart.Tab() == nTab )
+ rRoot.pNameList->Append(
+ new ExcName( &rRoot, aDestRange, EXC_BUILTIN_EXTRACT ) );
+ }
+
+ pFilterMode = new ExcFilterMode;
+ }
+ // AutoFilter
+ else
+ {
+ BOOL bConflict = FALSE;
+ BOOL bContLoop = TRUE;
+ BOOL bHasOr = FALSE;
+ UINT16 nFirstField = aParam.GetEntry( 0 ).nField;
+
+ // create AUTOFILTER records for filtered columns
+ for( UINT16 nEntry = 0; !bConflict && bContLoop && (nEntry < aParam.GetEntryCount()); nEntry++ )
+ {
+ const ScQueryEntry& rEntry = aParam.GetEntry( nEntry );
+
+ bContLoop = rEntry.bDoQuery;
+ if( bContLoop )
+ {
+ ExcAutoFilter* pFilter = GetByCol( rEntry.nField - aRange.aStart.Col() );
+
+ if( nEntry > 0 )
+ bHasOr |= (rEntry.eConnect == SC_OR);
+
+ bConflict = (nEntry > 1) && bHasOr;
+ if( !bConflict )
+ bConflict = (nEntry == 1) && (rEntry.eConnect == SC_OR) &&
+ (nFirstField != rEntry.nField);
+ if( !bConflict )
+ bConflict = pFilter->AddEntry( rRoot, rEntry );
+ }
+ }
+
+ // additional tests for conflicts
+ for( ExcAutoFilter* pFilter = _First(); !bConflict && pFilter; pFilter = _Next() )
+ bConflict = pFilter->HasCondition() && pFilter->HasTop10();
+
+ if( bConflict )
+ DeleteList();
+
+ if( List::Count() )
+ pFilterMode = new ExcFilterMode;
+ pFilterInfo = new ExcAutoFilterInfo( nColCnt );
+ AddObjRecs( rRoot, aRange.aStart, nColCnt );
+ }
+ }
+}
+
+ExcAutoFilterRecs::~ExcAutoFilterRecs()
+{
+ if( pFilterMode )
+ delete pFilterMode;
+ if( pFilterInfo )
+ delete pFilterInfo;
+ DeleteList();
+}
+
+void ExcAutoFilterRecs::DeleteList()
+{
+ for( ExcAutoFilter* pFilter = _First(); pFilter; pFilter = _Next() )
+ delete pFilter;
+ List::Clear();
+}
+
+ExcAutoFilter* ExcAutoFilterRecs::GetByCol( UINT16 nCol )
+{
+ ExcAutoFilter* pFilter;
+ for( pFilter = _First(); pFilter; pFilter = _Next() )
+ if( pFilter->GetCol() == nCol )
+ return pFilter;
+ pFilter = new ExcAutoFilter( nCol );
+ Append( pFilter );
+ return pFilter;
+}
+
+BOOL ExcAutoFilterRecs::IsFiltered( UINT16 nCol )
+{
+ ExcAutoFilter* pFilter;
+ for( pFilter = _First(); pFilter; pFilter = _Next() )
+ if( pFilter->GetCol() == nCol )
+ return TRUE;
+ return FALSE;
+}
+
+void ExcAutoFilterRecs::AddObjRecs( RootData& rRoot, const ScAddress& rPos, UINT16 nCols )
+{
+ ScAddress aAddr( rPos );
+ for( UINT16 nObj = 0; nObj < nCols; nObj++ )
+ {
+ XclObjDropDown* pObj = new XclObjDropDown( rRoot, aAddr, IsFiltered( nObj ) );
+ rRoot.pObjRecs->Add( pObj );
+ aAddr.IncCol( 1 );
+ }
+}
+
+void ExcAutoFilterRecs::Save( SvStream& rStrm )
+{
+ if( pFilterMode )
+ pFilterMode->Save( rStrm );
+ if( pFilterInfo )
+ pFilterInfo->Save( rStrm );
+ for( ExcAutoFilter* pFilter = _First(); pFilter; pFilter = _Next() )
+ pFilter->Save( rStrm );
+}
+
+
+
+
+void ExcMargin::SaveCont( SvStream& r )
+{
+ double f = nVal;
+
+ f /= 1440.0;
+
+ r << f;
+}
+
+
+ExcMargin::ExcMargin( long n, IMPEXC_MARGINSIDE e ) : nVal( ( n < 0 )? 0 : ( UINT16 ) n )
+{
+ switch( e )
+ {
+ case IMPEXC_MARGINSIDE_LEFT: nId = 0x26; break;
+ case IMPEXC_MARGINSIDE_RIGHT: nId = 0x27; break;
+ case IMPEXC_MARGINSIDE_TOP: nId = 0x28; break;
+ case IMPEXC_MARGINSIDE_BOTTOM: nId = 0x29; break;
+ default:
+ nId = 0x26;
+ DBG_WARNING( "ExcMargin::ExcMargin(): impossible enum state!" );
+ }
+}
+
+
+UINT16 ExcMargin::GetNum() const
+{
+ return nId;
+}
+
+
+UINT16 ExcMargin::GetLen() const
+{
+ return 8;
+}
+
+
diff --git a/sc/source/filter/excel/exctools.cxx b/sc/source/filter/excel/exctools.cxx
new file mode 100644
index 000000000000..9f4e376a087c
--- /dev/null
+++ b/sc/source/filter/excel/exctools.cxx
@@ -0,0 +1,2420 @@
+/*************************************************************************
+ *
+ * $RCSfile: exctools.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <svx/editdata.hxx>
+#include <svx/editeng.hxx>
+#include <svx/editobj.hxx>
+#include <svx/editstat.hxx>
+#include <vcl/color.hxx>
+#include <so3/svstor.hxx>
+//#include <svx/flditem.hxx>
+
+#include <string.h>
+#include <math.h>
+
+#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
+
+#include "document.hxx"
+#include "patattr.hxx"
+#include "attrib.hxx"
+#include "globstr.hrc"
+#include "scextopt.hxx"
+#include "olinetab.hxx"
+#include "progress.hxx"
+#include "dpsave.hxx"
+#include "dpobject.hxx"
+#include "dpshttab.hxx"
+#include "editutil.hxx"
+
+#include "imp_op.hxx"
+#include "root.hxx"
+#include "xfbuff.hxx"
+#include "vfbuff.hxx"
+#include "fontbuff.hxx"
+#include "excimp8.hxx"
+#include "scerrors.hxx"
+#include "otlnbuff.hxx"
+#include "fltprgrs.hxx"
+#include "excsst.hxx"
+#include "flttools.hxx"
+#include "spstring.hxx"
+#include "excpivot.hxx"
+#include "excrecds.hxx"
+
+#include "xcl97piv.hxx"
+#include "xcl97rec.hxx"
+
+using namespace com::sun::star;
+
+extern double ReadLongDouble( SvStream& rStr );
+static const char* pStrErr = "STRINGERROR IN: ";
+
+#define CHECK_OVERRUN(n,s) {if(n<0){String t(s);s.AssignAscii(pStrErr);s+=t;}}
+
+// - ALLGEMEINE ----------------------------------------------------------
+
+#ifdef _MSC_VER
+#if _MSC_VER <= 800
+#undef __SIMPLE_FUNC
+#define __SIMPLE_FUNC
+#endif
+#endif
+
+double ReadLongDouble( SvStream& rStr )
+
+#ifdef __SIMPLE_FUNC
+// ========== nur fuer VC 1.5 oder kleiner ===============================
+{
+ long double fRet;
+ rStr.Read( &fRet, 10 );
+ return ( double ) fRet;
+}
+#undef __SIMPLE_FUNC
+#else
+// ========== ausfuehrliche Version fuer'n Rest ==========================
+{
+ register long double lfDouble = 0.0;
+ register long double lfFakt = 256.0;
+ BYTE pDouble10[ 10 ];
+
+ rStr.Read( pDouble10, 10 ); // Intel-10 in pDouble10
+
+ lfDouble = ( long double ) pDouble10[ 7 ]; // Byte 7
+ lfDouble *= lfFakt; // Byte 6
+ lfDouble += ( long double ) pDouble10[ 6 ];
+ lfDouble *= lfFakt; // Byte 5
+ lfDouble += ( long double ) pDouble10[ 5 ];
+ lfDouble *= lfFakt; // Byte 4
+ lfDouble += ( long double ) pDouble10[ 4 ];
+ lfDouble *= lfFakt; // Byte 3
+ lfDouble += ( long double ) pDouble10[ 3 ];
+ lfDouble *= lfFakt; // Byte 2
+ lfDouble += ( long double ) pDouble10[ 2 ];
+ lfDouble *= lfFakt; // Byte 1
+ lfDouble += ( long double ) pDouble10[ 1 ];
+ lfDouble *= lfFakt; // Byte 0
+ lfDouble += ( long double ) pDouble10[ 0 ];
+
+ // Bei 0.0 sind alle Bits 0, und pow(2.0,-16446) kommt mit dem
+ // CSet Compiler nicht so gut
+ if( lfDouble != 0.0 )
+ {
+ // Exponent
+ register INT32 nExp;
+ nExp = ( pDouble10[ 9 ] & 0x7F );
+ nExp <<= 8;
+ nExp += pDouble10[ 8 ];
+ nExp -= 16446;
+
+ lfDouble *= pow( 2.0, ( double ) nExp );
+ }
+
+ // Sign
+ if( pDouble10[ 9 ] & 0x80 )
+ lfDouble *= ( long double ) -1.0;
+
+ return ( double ) lfDouble;
+/*
+
+" M a p p i n g - G u i d e "
+
+10-Byte Intel
+
+77777777 77666666 66665555 55555544 44444444 33333333 33222222 22221111 1111110 00000000 x10
+98765432 10987654 32109876 54321098 76543210 98765432 10987654 32109876 54321098 76543210 Bit-# insgesamt
+9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 Byte-#
+76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210 Bit-# im Byte
+SEEEEEEE EEEEEEEE IMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM Gruppe
+01111110 00000000 06665555 55555544 44444444 33333333 33222222 22221111 11111100 00000000 x10
+14321098 76543210 02109876 54321098 76543210 98765432 10987654 32109876 54321098 76543210 Bit in Gruppe
+*/
+}
+
+#endif
+
+
+ScEditEngineDefaulter& RootData::GetEdEng( void )
+{
+ if( !pEdEng )
+ {
+ ScEditEngineDefaulter* p = new ScEditEngineDefaulter( pDoc->GetEnginePool() );
+
+ p->SetRefMapMode( MAP_100TH_MM );
+ p->SetEditTextObjectPool( pDoc->GetEditPool() );
+ p->SetUpdateMode( FALSE );
+ p->EnableUndo( FALSE );
+ p->SetControlWord( ( p->GetControlWord() & ~EE_CNTRL_ALLOWBIGOBJS ) );
+
+ pEdEng = p;
+ }
+
+ return *pEdEng;
+}
+
+
+ScEditEngineDefaulter& RootData::GetEdEngForHF( void )
+{
+ if( !pEdEngHF )
+ {
+ // can't use document's edit engine pool here,
+ // because pool must have twips as default metric
+ ScEditEngineDefaulter* p = new ScHeaderEditEngine( EditEngine::CreatePool(), TRUE );
+
+ p->SetRefMapMode( MAP_TWIP ); // headers/footers are in twips
+ p->SetUpdateMode( FALSE );
+ p->EnableUndo( FALSE );
+ p->SetControlWord( ( p->GetControlWord() & ~EE_CNTRL_ALLOWBIGOBJS ) );
+
+ pEdEngHF = p;
+ }
+
+ return *pEdEngHF;
+}
+
+
+String RootData::GetCondFormStyleName( const UINT16 n )
+{
+ if( n <= nLastCond )
+ nCondRangeCnt++;
+
+ String t( RTL_CONSTASCII_STRINGPARAM( "CndFrmStyl_" ) );
+
+ t += UniString::CreateFromInt32( nCondRangeCnt );
+ t.AppendAscii( "_" );
+ t += UniString::CreateFromInt32( n );
+
+ nLastCond = n;
+
+ return t;
+}
+
+
+RootData::RootData( void )
+{
+ fColScale = fRowScale = 1.0;
+ pDoc = NULL;
+ pFormTable = NULL;
+ pScRangeName = NULL;
+ pColor = NULL;
+ pXF_Buffer = NULL;
+ pFontBuffer = NULL;
+ eDefLanguage = ScGlobal::eLnge;
+ eDateiTyp = eHauptDateiTyp = eGlobalDateiTyp = BiffX;
+ pExtSheetBuff = NULL;
+ pTabNameBuff = NULL;
+ pRNameBuff = NULL;
+ pShrfmlaBuff = NULL;
+ pExtNameBuff = NULL;
+ pAktTab = NULL;
+ pCharset = NULL;
+ pExtDocOpt = NULL;
+ pProgress = NULL;
+
+ pEdEng = pEdEngHF = NULL;
+
+ bCellCut = FALSE;
+ bBreakSharedFormula = TRUE;
+ bDefaultPage = bChartTab = FALSE;
+
+ pXtiBuffer = NULL;
+ pSupbookBuffer = NULL;
+ pCurrSupbook = NULL;
+
+ pRootStorage = pPivotCacheStorage = NULL;
+ pImpPivotCacheList = NULL;
+
+ nCondRangeCnt = 0;
+ nLastCond = 0;
+
+ pRootStorage = NULL;
+ pTabBuffer = NULL;
+ pNameList = NULL;
+ pPalette2 = NULL;
+ pFontRecs = NULL;
+ pExtSheetCntAndRecs = NULL;
+ nRowMax = 0;
+ nRangeNameIndex = 1;
+
+ pSstRecs = NULL;
+ pExternsheetRecs = NULL;
+ pObjRecs = NULL;
+ pNoteRecs = NULL;
+ pEscher = NULL;
+
+ pPivotCacheList = NULL;
+
+ bWriteVBAStorage = FALSE;
+ nCodenames = 0;
+
+ pStyleSheet = NULL;
+ pStyleSheetItemSet = NULL;
+
+ pLastHlink = NULL;
+ bStoreRel = FALSE;
+ pBasePath = NULL;
+}
+
+
+RootData::~RootData()
+{
+ delete pFontBuffer;
+ delete pColor;
+ delete pExtSheetBuff;
+ delete pTabNameBuff;
+ delete pRNameBuff;
+ delete pShrfmlaBuff;
+ delete pExtNameBuff;
+ delete pXF_Buffer;
+
+ if( pTabBuffer )
+ delete pTabBuffer;
+ if( pEdEng )
+ delete pEdEng;
+ if( pEdEngHF )
+ delete pEdEngHF;
+ if( pExtSheetCntAndRecs )
+ delete pExtSheetCntAndRecs;
+
+ if( pImpPivotCacheList )
+ delete pImpPivotCacheList;
+ if( pPivotCacheList )
+ delete pPivotCacheList;
+
+ if( pLastHlink )
+ delete pLastHlink;
+ if( pBasePath )
+ delete pBasePath;
+}
+
+
+
+
+ImportTyp::ImportTyp( SvStream& aStream, ScDocument* pDoc, CharSet eQ ): aIn( aStream )
+{
+ eQuellChar = eQ;
+ pD = pDoc;
+
+ pExtOpt = NULL;
+}
+
+
+ImportTyp::~ImportTyp()
+{
+ ScExtDocOptions* p = pD->GetExtDocOptions();
+ if( p )
+ {
+ if( pExtOpt )
+ {
+ *p = *pExtOpt;
+ delete pExtOpt;
+ }
+ }
+ else
+ pD->SetExtDocOptions( pExtOpt );
+}
+
+
+FltError ImportTyp::Read()
+{
+ return eERR_INTERN;
+}
+
+
+ScExtDocOptions &ImportTyp::GetExtOpt( void )
+{
+ if( !pExtOpt )
+ {
+ pExtOpt = new ScExtDocOptions;
+ ScExtDocOptions* pOrg = pD->GetExtDocOptions();
+ if( pOrg )
+ *pExtOpt = *pOrg;
+ }
+ return *pExtOpt;
+}
+
+
+
+
+OutlineBuffer::OutlineBuffer( USHORT nNewSize )
+{
+ DBG_ASSERT( nNewSize > 0, "-OutlineBuffer::Ctor: nNewSize == 0!" );
+
+ nSize = nNewSize + 1;
+ pLevel = new BYTE[ nSize ];
+ pOuted = new BOOL[ nSize ];
+ pHidden = new BOOL[ nSize ];
+ pOutlineArray = NULL;
+
+ Reset();
+}
+
+
+OutlineBuffer::~OutlineBuffer()
+{
+ delete[] pLevel;
+ delete[] pOuted;
+ delete[] pHidden;
+}
+
+
+void OutlineBuffer::SetLevel( USHORT nIndex, BYTE nVal, BOOL bOuted, BOOL bHidden )
+{
+ if( nIndex < nSize )
+ {
+ pLevel[ nIndex ] = nVal;
+ pOuted[ nIndex ] = bOuted;
+ pHidden[ nIndex ] = bHidden;
+
+ if( nIndex > nLast )
+ nLast = nIndex;
+ if( nVal > nMaxLevel )
+ nMaxLevel = nVal;
+ }
+}
+
+
+void OutlineBuffer::SetOuted( USHORT nIndex )
+{
+ if( nIndex < nSize )
+ {
+ pOuted[ nIndex ] = TRUE;
+ if( nIndex > nLast )
+ nLast = nIndex;
+ }
+}
+
+
+void OutlineBuffer::SetOuted( USHORT nIndex, BOOL bOuted )
+{
+ if( nIndex < nSize )
+ {
+ pOuted[ nIndex ] = bOuted;
+ if( nIndex > nLast )
+ nLast = nIndex;
+ }
+}
+
+
+void OutlineBuffer::SetOutlineArray( ScOutlineArray* pOArray )
+{
+ pOutlineArray = pOArray;
+}
+
+
+// transtorm xcl-outline into SC-outline
+void OutlineBuffer::MakeScOutline( void )
+{
+ if( !pOutlineArray || !HasOutline() )
+ return;
+
+ const UINT16 nNumLev = 8;
+ BOOL bPreOutedLevel = FALSE;
+ BYTE nCurrLevel = 0;
+ UINT16 nC;
+ BOOL bMakeHidden[ nNumLev ];
+ BOOL bMakeVisible[ nNumLev + 1 ];
+
+ for( nC = 0; nC < nNumLev; nC++ )
+ bMakeHidden[ nC ] = FALSE;
+ for( nC = 0; nC <= nNumLev; nC++ )
+ bMakeVisible[ nC ] = TRUE;
+ if( nLast < (nSize - 1) )
+ nLast++;
+
+ // search for hidden attributes at end of level, move them to begin
+ if( bButtonNormal )
+ {
+ for( BYTE nWorkLevel = 1; nWorkLevel <= nMaxLevel; nWorkLevel++ )
+ {
+ UINT16 nStartPos;
+ BYTE nCurrLevel = 0;
+ BYTE nPrevLevel = 0;
+
+ for( UINT16 nC = 0 ; nC <= nLast ; nC++ )
+ {
+ nPrevLevel = nCurrLevel;
+ nCurrLevel = pLevel[ nC ];
+ if( (nPrevLevel < nWorkLevel) && (nCurrLevel >= nWorkLevel) )
+ nStartPos = nC;
+ else if( (nPrevLevel >= nWorkLevel) && (nCurrLevel < nWorkLevel) )
+ {
+ if( pOuted[ nC ] && pHidden[ nStartPos ] )
+ {
+ if( nStartPos )
+ pOuted[ nStartPos - 1 ] = TRUE;
+ else
+ bPreOutedLevel = TRUE;
+ pOuted[ nC ] = FALSE;
+ }
+ }
+ }
+ }
+ }
+ else
+ bPreOutedLevel = pHidden[ 0 ];
+
+ // generate SC outlines
+ UINT16 nPrevC;
+ UINT16 nStart[ nNumLev ];
+ BOOL bDummy;
+ BOOL bPrevOuted = bPreOutedLevel;
+ BOOL bCurrHidden = FALSE;
+ BOOL bPrevHidden = FALSE;
+
+ for( nC = 0; nC <= nLast; nC++ )
+ {
+ BYTE nWorkLevel = pLevel[ nC ];
+
+ nPrevC = nC ? nC - 1 : 0;
+ bPrevHidden = bCurrHidden;
+ bCurrHidden = pHidden[ nC ];
+
+ // open new levels
+ while( nWorkLevel > nCurrLevel )
+ {
+ nCurrLevel++;
+ bMakeHidden[ nCurrLevel ] = bPrevOuted;
+ bMakeVisible[ nCurrLevel + 1 ] =
+ bMakeVisible[ nCurrLevel ] && !bMakeHidden[ nCurrLevel ];
+ nStart[ nCurrLevel ] = nC;
+ }
+ // close levels
+ while( nWorkLevel < nCurrLevel )
+ {
+ BOOL bLastLevel = (nWorkLevel == (nCurrLevel - 1));
+ BOOL bRealHidden = (bMakeHidden[ nCurrLevel ] && bPrevHidden );
+ BOOL bRealVisible = (bMakeVisible[ nCurrLevel ] ||
+ (!bCurrHidden && bLastLevel));
+
+ pOutlineArray->Insert( nStart[ nCurrLevel ], nPrevC , bDummy,
+ bRealHidden, bRealVisible );
+ nCurrLevel--;
+ }
+
+ bPrevOuted = pOuted[ nC ];
+ }
+}
+
+
+void OutlineBuffer::SetLevelRange( USHORT nF, USHORT nL, BYTE nVal,
+ BOOL bOuted, BOOL bHidden )
+{
+ DBG_ASSERT( nF <= nL, "+OutlineBuffer::SetLevelRange(): Last < First!" );
+
+ if( nL < nSize )
+ {
+ if( nL > nLast )
+ nLast = nL;
+
+ BYTE* pLevelCount;
+ BYTE* pLast;
+ BOOL* pOutedCount;
+ BOOL* pHiddenCount;
+
+ pLevelCount = &pLevel[ nF ];
+ pLast = &pLevel[ nL ];
+ pOutedCount = &pOuted[ nF ];
+ pHiddenCount = &pHidden[ nF ];
+
+ while( pLevelCount <= pLast )
+ {
+ *( pLevelCount++ ) = nVal;
+ *( pOutedCount++ ) = bOuted;
+ *( pHiddenCount++ ) = bHidden;
+ }
+
+ if( nVal > nMaxLevel )
+ nMaxLevel = nVal;
+ }
+}
+
+
+void OutlineBuffer::Reset( void )
+{
+ for( USHORT nC = 0 ; nC < nSize ; nC++ )
+ {
+ pLevel[ nC ] = 0;
+ pOuted[ nC ] = pHidden[ nC ] = FALSE;
+ }
+ nLast = 0;
+ nMaxLevel = 0;
+}
+
+
+void OutlineBuffer::Reset( ScOutlineArray *pOArray )
+{
+ for( USHORT nC = 0 ; nC < nSize ; nC++ )
+ {
+ pLevel[ nC ] = 0;
+ pOuted[ nC ] = pHidden[ nC ] = FALSE;
+ }
+ pOutlineArray = pOArray;
+}
+
+
+
+
+INT32 FilterProgressBar::nInstances = 0;
+
+
+FilterProgressBar::FilterProgressBar( SvStream& rStr ) : pStr( &rStr )
+{
+ nInstances++;
+
+ const UINT32 nCurPos = rStr.Tell();
+
+ UINT32 nEndPos = rStr.Seek( STREAM_SEEK_TO_END );
+ nCnt = 0;
+
+ if( nInstances == 1 )
+ pPrgrs = new ScProgress( NULL, ScGlobal::GetRscString( STR_LOAD_DOC ), nEndPos - nCurPos );
+ else
+ pPrgrs = NULL;
+
+ if( pPrgrs )
+ pPrgrs->SetState( nCurPos );
+
+ rStr.Seek( nCurPos );
+}
+
+
+FilterProgressBar::~FilterProgressBar()
+{
+ nInstances--;
+
+ if( pPrgrs )
+ delete pPrgrs;
+}
+
+
+void FilterProgressBar::Progress( void )
+{
+ if( pPrgrs )
+ {
+ if( pStr )
+ pPrgrs->SetState( pStr->Tell() );
+ else
+ {
+ nCnt++;
+ pPrgrs->SetState( nCnt );
+ }
+ }
+}
+
+
+UINT32 FilterProgressBar::GetStreamLen( void ) const
+{
+ if( pStr )
+ {
+ const UINT32 nCurPos = pStr->Tell();
+
+ UINT32 nEndPos = pStr->Seek( STREAM_SEEK_TO_END );
+
+ pStr->Seek( nCurPos );
+
+ return nEndPos;
+ }
+ else
+ return 0;
+}
+
+
+void FilterProgressBar::StartPostLoadProgress( const UINT32 nObj )
+{
+ if( pPrgrs )
+ {
+ pStr = NULL;
+ nCnt = 0;
+
+ delete pPrgrs;
+ if( nObj )
+ {
+ pPrgrs = new ScProgress( NULL,
+ ScGlobal::GetRscString( STR_PROGRESS_CALCULATING ), nObj );
+ }
+ else
+ pPrgrs = NULL;
+
+ }
+}
+
+
+
+
+ShStrTabEntry::ShStrTabEntry( const String& r ) : aString( r )
+{
+}
+
+
+ShStrTabEntry::~ShStrTabEntry()
+{
+}
+
+
+BOOL ShStrTabEntry::HasFormats( void ) const
+{
+ return FALSE;
+}
+
+
+EditTextObject* ShStrTabEntry::CreateEditTextObject( ScEditEngineDefaulter&, FontBuffer& ) const
+{
+ return NULL;
+}
+
+
+
+
+struct ShStrTabFormData
+{
+ EditTextObject* pEdTxtObj;
+ UINT16* pForms;
+ UINT16 nFormCnt;
+
+ ShStrTabFormData( SvStream& rIn, INT32& rBytesLeft, UINT16 nFormCnt );
+ // wenn Ctor fehlschlaegt, ist pForms NULL!
+ ~ShStrTabFormData();
+};
+
+
+ShStrTabFormData::ShStrTabFormData( SvStream& r, INT32& rBytesLeft, UINT16 n )
+{
+ pEdTxtObj = NULL;
+ if( n )
+ {
+ pForms = new UINT16[ n * 2 ];
+ nFormCnt = n;
+
+ rBytesLeft -= n * 4;
+ UINT16* p = pForms;
+
+ while( n )
+ {
+ r >> *p;
+ p++;
+ r >> *p;
+ p++;
+ n--;
+ }
+ }
+ else
+ pForms = NULL;
+}
+
+
+ShStrTabFormData::~ShStrTabFormData()
+{
+ if( pEdTxtObj )
+ delete pEdTxtObj;
+
+ if( pForms )
+ delete[] pForms;
+}
+
+
+
+
+ShStrTabFormEntry::ShStrTabFormEntry( const String& r, SvStream& rIn, INT32& rBytesLeft, const UINT16 nFormCnt ) :
+ ShStrTabEntry( r )
+{
+ pData = new ShStrTabFormData( rIn, rBytesLeft, nFormCnt );
+ if( !pData->pForms )
+ {
+ delete pData;
+ pData = NULL;
+ }
+}
+
+
+ShStrTabFormEntry::~ShStrTabFormEntry()
+{
+ if( pData )
+ delete pData;
+}
+
+
+BOOL ShStrTabFormEntry::HasFormats( void ) const
+{
+ return pData && pData->pForms;
+}
+
+
+
+
+#define READFORM() nChar = *pRead; pRead++; nFont = *pRead; pRead++; nAnzFrms--;
+
+
+EditTextObject* ShStrTabFormEntry::CreateEditTextObject( ScEditEngineDefaulter& rEdEng, FontBuffer& rFB ) const
+{
+ if( !pData || !pData->pForms )
+ return NULL;
+
+ if( !pData->pEdTxtObj )
+ {
+ rEdEng.SetText( aString );
+
+ SfxItemSet aItemSet( rEdEng.GetEmptyItemSet() );
+
+ UINT16 nChar, nFont;
+ const sal_Unicode* pAktChar = aString.GetBuffer();
+ sal_Unicode cAkt = *pAktChar;
+ UINT16 nCnt = 0;
+ const UINT16* pRead = pData->pForms;
+ UINT32 nAnzFrms = pData->nFormCnt;
+
+ READFORM();
+
+ ESelection aSel( 0, 0 );
+
+ while( cAkt )
+ {
+ if( nCnt >= nChar )
+ {// neuer Item-Set
+ rEdEng.QuickSetAttribs( aItemSet, aSel );
+
+ aItemSet.ClearItem( 0 );
+
+ rFB.Fill( nFont, aItemSet, FALSE );
+ if( nAnzFrms )
+ {
+ READFORM();
+ }
+ else
+ nChar = 0xFFFF;
+
+ aSel.nStartPara = aSel.nEndPara;
+ aSel.nStartPos = aSel.nEndPos;
+ }
+
+ if( cAkt == '\n' )
+ {// new Paragraph
+ aSel.nEndPara++;
+ aSel.nEndPos = 0;
+ }
+ else
+ aSel.nEndPos++;
+
+ pAktChar++;
+ cAkt = *pAktChar;
+ nCnt++;
+ }
+
+ // letzten ItemSet setzten
+ rEdEng.QuickSetAttribs( aItemSet, aSel );
+
+ pData->pEdTxtObj = rEdEng.CreateTextObject();
+ }
+
+ return pData->pEdTxtObj->Clone();
+}
+
+
+
+
+SharedStringTable::SharedStringTable( void )
+{
+}
+
+
+SharedStringTable::~SharedStringTable()
+{
+ Clear();
+}
+
+
+void SharedStringTable::Append( ShStrTabEntry* p )
+{
+ List::Insert( p, LIST_APPEND );
+}
+
+
+void SharedStringTable::Clear( void )
+{
+ ShStrTabEntry* p = ( ShStrTabEntry* ) List::First();
+
+ while( p )
+ {
+ delete p;
+ p = ( ShStrTabEntry* ) List::Next();
+ }
+
+ List::Clear();
+}
+
+
+
+
+CharSet GetSystemCharSet( void )
+{
+ return gsl_getSystemTextEncoding();
+}
+
+
+static String ReadString( SvStream& aIn, INT32& nBytesLeft, const UINT16 nLen, const BOOL b8Bit, CharSet eSrc );
+
+static void SkipString( SvStream& aIn, INT32& nBytesLeft, const UINT16 nLen, const BOOL b8Bit );
+
+static String ReadString( SvStream& aIn, INT32& nBytesLeft, const UINT16 nLen,
+ const BOOL b8BitStart, UINT32List& rCutPosList, CharSet eSrc );
+
+
+
+
+ShStrTabEntry* CreateUnicodeEntry( SvStream& rIn, INT32& nLeft, CharSet eSrc, const UINT16 nPreLen,
+ UINT32List* pCutPosList )
+{
+ UINT16 nCch;
+ UINT8 nGrbit;
+ ShStrTabEntry* pRet;
+
+ if( nPreLen )
+ nCch = nPreLen;
+ else
+ {
+ rIn >> nCch;
+ nLeft -= 2;
+ }
+ rIn >> nGrbit;
+ nLeft--;
+
+ const BOOL b8Bit = ( nGrbit & 0x01 ) == 0x00;
+ const BOOL bRich = ( nGrbit & 0x08 ) != 0x00;
+ const BOOL bFarEast = ( nGrbit & 0x04 ) != 0x00;
+
+ UINT16 nCrun;
+ UINT32 nExtInf;
+
+ if( bRich )
+ {
+ rIn >> nCrun;
+ nLeft -= sizeof( nCrun );
+ }
+ else
+ nCrun = 0;
+
+ if( bFarEast )
+ {
+ rIn >> nExtInf;
+ nLeft -= sizeof( nExtInf );
+ }
+ else
+ nExtInf = 0;
+
+ if( pCutPosList )
+ {
+ if( bRich )
+ pRet = new ShStrTabFormEntry(
+ ReadString( rIn, nLeft, nCch, b8Bit, *pCutPosList, eSrc ), rIn, nLeft, nCrun );
+ else
+ pRet = new ShStrTabEntry( ReadString( rIn, nLeft, nCch, b8Bit, *pCutPosList, eSrc ) );
+ }
+ else
+ {
+ if( bRich )
+ pRet = new ShStrTabFormEntry( ReadString( rIn, nLeft, nCch, b8Bit, eSrc ), rIn, nLeft, nCrun );
+ else
+ pRet = new ShStrTabEntry( ReadString( rIn, nLeft, nCch, b8Bit, eSrc ) );
+ }
+
+ if( nExtInf )
+ {
+ rIn.SeekRel( nExtInf );
+ nLeft -= nExtInf;
+ }
+
+ return pRet;
+}
+
+
+
+
+String ReadUnicodeString( SvStream& rIn, INT32& nLeft, CharSet eSrc, const UINT16 nPreLen )
+{
+ UINT16 nCch;
+ UINT8 nGrbit;
+
+ if( nPreLen )
+ nCch = nPreLen;
+ else
+ {
+ rIn >> nCch;
+ nLeft -= 2;
+ }
+
+ rIn >> nGrbit;
+ nLeft--;
+
+ const BOOL b8Bit = ( nGrbit & 0x01 ) == 0x00;
+ const BOOL bRich = ( nGrbit & 0x08 ) != 0x00;
+ const BOOL bFarEast = ( nGrbit & 0x04 ) != 0x00;
+
+ UINT16 nCrun;
+ UINT32 nExtInf;
+
+ if( bRich )
+ {
+ rIn >> nCrun;
+ nLeft -= sizeof( nCrun );
+ }
+ else
+ nCrun = 0;
+
+ if( bFarEast )
+ {
+ rIn >> nExtInf;
+ nLeft -= sizeof( nExtInf );
+ }
+ else
+ nExtInf = 0;
+
+ String aRet = ReadString( rIn, nLeft, nCch, b8Bit, eSrc );
+
+ UINT32 nSeek = nCrun * 4 + nExtInf;
+ if( nSeek )
+ {
+ rIn.SeekRel( nSeek );
+ nLeft -= nSeek;
+ }
+
+ return aRet;
+}
+
+
+
+
+void SkipUnicodeString( SvStream& rIn, INT32& nLeft, const UINT16 nPreLen )
+{
+ UINT16 nCch;
+ UINT8 nGrbit;
+
+ if( nPreLen )
+ nCch = nPreLen;
+ else
+ {
+ rIn >> nCch;
+ nLeft -= 2;
+ }
+
+ rIn >> nGrbit;
+ nLeft--;
+
+ const BOOL b8Bit = ( nGrbit & 0x01 ) == 0x00;
+ const BOOL bRich = ( nGrbit & 0x08 ) != 0x00;
+ const BOOL bFarEast = ( nGrbit & 0x04 ) != 0x00;
+
+ UINT16 nCrun;
+ UINT32 nExtInf;
+
+ if( bRich )
+ {
+ rIn >> nCrun;
+ nLeft -= sizeof( nCrun );
+ }
+ else
+ nCrun = 0;
+
+ if( bFarEast )
+ {
+ rIn >> nExtInf;
+ nLeft -= sizeof( nExtInf );
+ }
+ else
+ nExtInf = 0;
+
+ SkipString( rIn, nLeft, nCch, b8Bit );
+
+
+ UINT32 nSeek = nCrun * 4 + nExtInf;
+ if( nSeek )
+ {
+ rIn.SeekRel( nSeek );
+ nLeft -= nSeek;
+ }
+}
+
+
+static void ReadStringDirect( SvStream& rIn, String& rString, const UINT16 nLen, CharSet eSrc );
+
+
+
+
+String ReadString( SvStream& aIn, INT32& nBytesLeft, const UINT16 nLen, const BOOL b8Bit, CharSet eSrc )
+{
+ String aStr;
+ if( nLen && nBytesLeft >= 0 )
+ {
+ if( b8Bit )
+ {
+ ReadStringDirect( aIn, aStr, nLen, eSrc );
+ nBytesLeft -= nLen;
+ }
+ else
+ {
+ // normales Unicode-Dingen!
+ INT16 c;
+ String aTmpString;
+ UINT16 n = nLen;
+
+ while( n )
+ {
+ aIn >> c;
+ aStr += ( sal_Unicode ) c;
+ n--;
+ }
+ nBytesLeft -= nLen * sizeof( c );
+ }
+
+ CHECK_OVERRUN( nBytesLeft, aStr );
+ }
+
+ return aStr;
+}
+
+
+
+
+void SkipString( SvStream& aIn, INT32& nBytesLeft, const UINT16 nLen, const BOOL b8Bit )
+{
+ if( nLen )
+ {
+ ULONG n = nLen;
+ if( !b8Bit )
+ n *= 2;
+
+ aIn.SeekRel( n );
+ nBytesLeft -= n;
+ }
+}
+
+
+
+
+String ReadString( SvStream& aIn, INT32& nBytesLeft, const UINT16 nLen, const BOOL b8BitStart,
+ UINT32List& rCutPosList, CharSet eSrc )
+{
+ String aEndStr;
+
+ if( nLen && nBytesLeft >= 0 )
+ {
+ UINT32 nActPos = aIn.Tell();
+ UINT32 nNextCut = rCutPosList.First();
+
+
+ // search for first cut after string start
+ while( nNextCut && nNextCut < nActPos )
+ nNextCut = rCutPosList.Next();
+
+ UINT32 nMaxPos = nActPos + nLen * 2 + rCutPosList.Count();
+ if( !nNextCut || nNextCut > nMaxPos )
+ return ReadString( aIn, nBytesLeft, nLen, b8BitStart, eSrc ); // no cut in string
+
+ UINT16 nCharsLeft = nLen;
+ BOOL b8Bit = b8BitStart;
+
+ while( nCharsLeft && nBytesLeft >= 0 )
+ {
+ if( b8Bit )
+ {
+ ByteString aTmpCStr;
+ sal_Char c;
+ while( nCharsLeft && b8Bit && nBytesLeft >= 0 )
+ {
+ aIn >> c;
+ nCharsLeft--;
+ nBytesLeft--;
+ aTmpCStr += c;
+ nActPos++;
+ if( nActPos == nNextCut && nCharsLeft )
+ {
+ UINT8 nF;
+ aIn >> nF;
+ nBytesLeft--;
+ nActPos++;
+ b8Bit = !nF;
+ nNextCut = rCutPosList.Next();
+ if( !nNextCut )
+ {
+ if( aTmpCStr.Len() )
+ {
+ aEndStr += String( aTmpCStr, eSrc );
+ aTmpCStr.Erase();
+ }
+ aEndStr += ReadString( aIn, nBytesLeft, nCharsLeft, b8Bit, eSrc );
+ nCharsLeft = 0;
+ }
+ }
+ }
+ if( aTmpCStr.Len() )
+ aEndStr += String( aTmpCStr, eSrc );
+ // no need to erase aTmpWStr, cause it's deleted here
+ }
+ else
+ {
+ INT16 c;
+ String aTmpWStr;
+
+ while( nCharsLeft && !b8Bit && nBytesLeft >= 0 )
+ {
+ aIn >> c;
+ nCharsLeft--;
+ nBytesLeft -= 2;
+ aTmpWStr += ( sal_Unicode ) c;
+ nActPos += 2;
+
+ if( nNextCut )
+ {// makes only sense if a next cut exists
+ if( nActPos > nNextCut )
+ {
+ // emergency break when missfit data alignment
+ aIn.Seek( nNextCut );
+ nCharsLeft++; // one sal_Char read to much!?
+ }
+
+ if( nActPos == nNextCut && nCharsLeft )
+ {
+ UINT8 nF;
+ aIn >> nF;
+ nBytesLeft--;
+ nActPos++;
+ b8Bit = !nF;
+ nNextCut = rCutPosList.Next();
+ if( !nNextCut )
+ {// rest of string is not split any more
+ if( aTmpWStr.Len() )
+ {
+ aEndStr += aTmpWStr;
+ aTmpWStr.Erase();
+ }
+ aEndStr += ReadString( aIn, nBytesLeft, nCharsLeft, b8Bit, eSrc );
+ nCharsLeft = 0;
+ }
+ }
+ }
+ }
+ if( aTmpWStr.Len() )
+ aEndStr += aTmpWStr;
+ // no need to erase aTmpWStr, cause it's deleted here
+ }
+ }
+ }
+
+ return aEndStr;
+}
+
+
+
+
+void ReadStringDirect( SvStream& rIn, String& r, const UINT16 n, CharSet e )
+{
+ sal_Char* pBuffer = new sal_Char[ n + 1 ];
+ rIn.Read( pBuffer, n );
+
+ pBuffer[ n ] = 0x00;
+
+ r += String( pBuffer, e );
+
+ delete[] pBuffer;
+}
+
+
+
+
+INT16 lcl_ReadExternSheetChar( SvStream& aIn, INT32& nBytesLeft, UINT16& nCharsLeft, BOOL b16Bit )
+{
+ INT16 nRetVal;
+ sal_Char cChar;
+
+ if( b16Bit )
+ {
+ aIn >> nRetVal;
+ nBytesLeft -= 2;
+ }
+ else
+ {
+ aIn >> cChar;
+ nRetVal = (INT16) cChar;
+ nBytesLeft--;
+ }
+ nCharsLeft--;
+ return nRetVal;
+}
+
+
+
+
+// reads 8 bit and 16 bit strings
+void EncodeExternSheet( SvStream& aIn, String& aFile, String& aTabName,
+ INT32& nBytesLeft, BOOL& rbSWbk, UINT16 nLen, BOOL b16Bit )
+{
+ enum State{ S_INIT, S_PATH, S_FILENAME, S_TABNAME };
+ INT16 cEnc;
+ State eS = S_INIT;
+
+ rbSWbk = FALSE;
+ while( nLen )
+ {
+ cEnc = lcl_ReadExternSheetChar( aIn, nBytesLeft, nLen, b16Bit );
+ switch( eS )
+ {
+ case S_INIT:
+ switch( cEnc )
+ {
+ case 0x00: // empty
+ case 0x01: break; // encode
+ case 0x02: // self
+ case 0x03: rbSWbk = TRUE; break; // encode & self
+ default: aFile += ( sal_Unicode ) cEnc;
+ }
+ eS = S_PATH;
+ break;
+ case S_PATH:
+ switch( cEnc )
+ {
+ case 0x01:
+ if( nLen > 1 )
+ {
+ cEnc = lcl_ReadExternSheetChar( aIn, nBytesLeft, nLen, b16Bit );
+ if( cEnc == '@' )
+ aFile.AppendAscii( "//" );
+ else
+ {
+ aFile += ( sal_Unicode ) cEnc;
+ aFile.AppendAscii( ":\\" );
+ }
+ }
+ else
+ aFile.AppendAscii( "<NULL-DRIVE!>" );
+ break;
+ case 0x02:
+ case 0x03: aFile.AppendAscii( "\\" ); break;
+ case 0x04: aFile.AppendAscii( "..\\") ; break;
+ case 0x05:
+ if( nLen )
+ {
+ INT16 nVolLen = lcl_ReadExternSheetChar( aIn, nBytesLeft, nLen, b16Bit );
+ if( nVolLen )
+ {
+ while( nVolLen )
+ {
+ cEnc = lcl_ReadExternSheetChar( aIn, nBytesLeft, nLen, b16Bit );
+ aFile += ( sal_Unicode ) cEnc;
+ nVolLen--;
+ }
+ }
+ else
+ aFile.AppendAscii( "<EMPTY MAC-LONG-VOLUME>" );
+
+ aFile.AppendAscii( ":" );
+ }
+ else
+ aFile.AppendAscii( "<ERROR IN MAC-LONG-VOLUME>" );
+ break;
+ case 0x06: aFile.AppendAscii( "<Startup Dir>:" ); break;
+ case 0x07: aFile.AppendAscii( "<Alt Startup Dir>:" ); break;
+ case 0x08: aFile.AppendAscii( "<Library>" ); break;
+ case '[': eS = S_FILENAME; break; // Start von FileName
+ default: aFile += ( sal_Unicode ) cEnc;
+ }
+ break;
+ case S_FILENAME:
+ switch( cEnc )
+ {
+ case ']': eS = S_TABNAME; break; // Ende FileName
+ default: aFile += ( sal_Unicode ) cEnc;
+ }
+ break;
+ case S_TABNAME: aTabName += ( sal_Unicode ) cEnc; break;
+ }
+ }
+}
+
+
+
+
+void EncodeExternSheetUnicode( SvStream& aIn, String& aFile, String& aTabName, INT32& nBytesLeft,
+ BOOL& rbSWbk, UINT16 nPreLen )
+{
+ UINT16 nCch;
+ UINT8 nGrbit;
+ String aRet;
+
+ if( nPreLen )
+ nCch = nPreLen;
+ else
+ {
+ aIn >> nCch;
+ nBytesLeft -= 2;
+ }
+
+ aIn >> nGrbit;
+ nBytesLeft--;
+
+ UINT16 b16Bit = (nGrbit & 0x01);
+
+ if( nGrbit & 0x04 )
+ {
+ // extended String Far-East-Version
+ UINT32 nExtRstLen;
+ UINT8 nEnc;
+
+ aIn >> nExtRstLen >> nEnc;
+ nBytesLeft -= sizeof( nExtRstLen ) + sizeof( nEnc );
+ EncodeExternSheet( aIn, aFile, aTabName, nBytesLeft, rbSWbk, nCch, b16Bit );
+ aIn.SeekRel( nExtRstLen );
+ nBytesLeft -= nExtRstLen;
+ }
+ else if( nGrbit & 0x08 )
+ {
+ // extended String Rich-String-Version
+ UINT32 nTmp;
+ UINT16 nCrun;
+
+ aIn >> nCrun;
+ nBytesLeft -= sizeof( nCrun );
+ EncodeExternSheet( aIn, aFile, aTabName, nBytesLeft, rbSWbk, nCch, b16Bit );
+ nTmp = nCrun * 4;
+ aIn.SeekRel( nTmp );
+ nBytesLeft -= nTmp;
+ }
+ else
+ EncodeExternSheet( aIn, aFile, aTabName, nBytesLeft, rbSWbk, nCch, b16Bit );
+}
+
+
+
+
+long CalcX( const UINT16 nT, const UINT16 nC, const UINT16 nOC, const double f, ScDocument* pD )
+{
+ return ( long ) (
+ ( ( double ) pD->GetColOffset( nC, nT )
+ + ( double ) pD->GetColWidth( nC, nT ) * ( ( double ) nOC / 1024.0 ) )
+ * f );
+}
+
+
+
+
+long CalcY( const UINT16 nT, const UINT16 nR, const UINT16 nOR, const double f, ScDocument* pD )
+{
+ return ( long ) (
+ ( ( double ) pD->GetRowOffset( nR, nT )
+ + ( double ) pD->GetRowHeight( nR, nT ) * ( ( double ) nOR / 256.0 ) )
+ * f );
+}
+
+
+
+
+ExcScenarioCell::ExcScenarioCell( const UINT16 nC, const UINT16 nR ) : nCol( nC ), nRow( nR )
+{
+}
+
+
+void ExcScenarioCell::SetValue( const String& r )
+{
+ aValue = r;
+}
+
+
+
+
+#define EXCSCAPPEND(EXCSCCELL) (List::Insert(EXCSCCELL,LIST_APPEND))
+#define EXCSCFIRST() ((ExcScenarioCell*)List::First())
+#define EXCSCNEXT() ((ExcScenarioCell*)List::Next())
+
+
+ExcScenario::ExcScenario( SvStream& rIn, const RootData& rR ) : nTab( *rR.pAktTab )
+{
+ const CharSet eSrc = *rR.pCharset;
+
+ UINT16 nCref;
+ UINT8 nName, nComment;
+ INT32 nD;
+
+ rIn >> nCref;
+ rIn.SeekRel( 2 );
+ rIn >> nName >> nComment;
+ rIn.SeekRel( 1 ); // statt nUser!
+
+ if( nName )
+ pName = new String( ::ReadUnicodeString( rIn, nD, eSrc, nName ) );
+ else
+ {
+ pName = new String( RTL_CONSTASCII_STRINGPARAM( "Scenery" ) );
+ rIn.SeekRel( 1 );
+ }
+
+ pUserName = new String( ::ReadUnicodeString( rIn, nD, eSrc ) );
+
+ if( nComment )
+ pComment = new String( ::ReadUnicodeString( rIn, nD, eSrc, 0 ) );
+ else
+ pComment = new String( EMPTY_STRING );
+
+ UINT16 n = nCref;
+ UINT16 nC, nR;
+ while( n )
+ {
+ rIn >> nR >> nC;
+
+ EXCSCAPPEND( new ExcScenarioCell( nC, nR ) );
+
+ n--;
+ }
+
+ n = nCref;
+ ExcScenarioCell* p = EXCSCFIRST();
+ while( p )
+ {
+ p->SetValue( ::ReadUnicodeString( rIn, nD, eSrc ) );
+
+ p = EXCSCNEXT();
+ }
+}
+
+
+ExcScenario::~ExcScenario()
+{
+ ExcScenarioCell* p = EXCSCFIRST();
+
+ while( p )
+ {
+ delete p;
+ p = EXCSCNEXT();
+ }
+
+ if( pName )
+ delete pName;
+ if( pComment )
+ delete pComment;
+ if( pUserName )
+ delete pUserName;
+}
+
+
+void ExcScenario::Apply( ScDocument& r, const BOOL bLast )
+{
+ UINT32 nNumCells = List::Count();
+
+ ExcScenarioCell* p = EXCSCFIRST();
+ String aSzenName( *pName );
+ r.CreateValidTabName( aSzenName );
+ UINT16 nNewTab = nTab + 1;
+
+ if( !r.InsertTab( nNewTab, aSzenName ) )
+ return;
+
+ r.SetScenario( nNewTab, TRUE );
+ r.SetScenarioData( nNewTab, *pComment, COL_LIGHTGRAY, SC_SCENARIO_SHOWFRAME|SC_SCENARIO_COPYALL );
+
+ while( p )
+ {
+ UINT16 nCol = p->nCol;
+ UINT16 nRow = p->nRow;
+ String aVal = p->GetValue();
+
+ r.ApplyFlagsTab( nCol, nRow, nCol, nRow, nNewTab, SC_MF_SCENARIO );
+
+ r.SetString( nCol, nRow, nNewTab, aVal );
+
+ p = EXCSCNEXT();
+ }
+
+ if( bLast )
+ {
+ DBG_ASSERT( r.IsActiveScenario( nNewTab ), "*ExcScenario::Apply(): Doppelt-Gemoppelt!" );
+
+ r.SetActiveScenario( nNewTab, TRUE );
+ }
+}
+
+
+
+
+ExcScenarioList::~ExcScenarioList()
+{
+ ExcScenario* p = _First();
+
+ while( p )
+ {
+ delete p;
+ p = _Next();
+ }
+}
+
+
+void ExcScenarioList::Apply( ScDocument& r )
+{
+ ExcScenario* p = _Last();
+ UINT16 n = ( UINT16 ) Count();
+
+ while( p )
+ {
+ n--;
+ p->Apply( r, ( BOOL ) ( n == nLastScenario ) );
+ p = _Prev();
+ }
+}
+
+
+
+
+//--PIVOT TABLES-------------------------------------------------------
+
+String ScGetHexStr( UINT16 nValue )
+{
+ static const sal_Char pH[] = "0123456789ABCDEF";
+ String aStrName;
+
+ aStrName += pH[ nValue >> 12 ];
+ aStrName += pH[ (nValue >> 8) & 0x000F ];
+ aStrName += pH[ (nValue >> 4) & 0x000F ];
+ aStrName += pH[ nValue & 0x000F ];
+
+ return aStrName;
+}
+
+
+
+//_________________________________________________________
+
+PivotCacheItem::~PivotCacheItem()
+{ }
+
+BOOL PivotCacheItem::IsString() const
+{
+ return FALSE;
+}
+
+BOOL PivotCacheItem::IsDouble() const
+{
+ return FALSE;
+}
+
+BOOL PivotCacheStringItem::IsString() const
+{
+ return TRUE;
+}
+
+BOOL PivotCacheDoubleItem::IsDouble() const
+{
+ return TRUE;
+}
+
+
+
+//_________________________________________________________
+
+PivotCacheField::~PivotCacheField()
+{
+ for( PivotCacheItem* pItem = _First(); pItem; pItem = _Next() )
+ delete pItem;
+}
+
+
+
+//_________________________________________________________
+
+PivotCache::PivotCache( RootData* pExcRoot, UINT16 nStreamId )
+{
+ SvStorage* pSt = pExcRoot->pPivotCacheStorage;
+ if( !pSt )
+ return;
+
+ SvStorageStream* pStIn = pSt->OpenStream( ScGetHexStr( nStreamId ), STREAM_STD_READ );
+ if( !pStIn )
+ return;
+
+ SvStream& rIn = *pStIn;
+
+ rIn.Seek( STREAM_SEEK_TO_END );
+
+ INT32 nCntDwn = (INT32) rIn.Tell();
+ UINT32 nNextPart = 0;
+ UINT16 nId, nLen;
+
+ const CharSet eSrc = *pExcRoot->pCharset;
+
+ PivotCacheField* pActField = NULL;
+ BOOL bExistsReadLater = FALSE; // any field without items
+ BOOL bDoReadLater = FALSE; // read now into this fields
+ BOOL bDataItem; // last record was data
+
+ rIn.Seek( 0 );
+
+ while( nCntDwn > 3 )
+ {
+ rIn >> nId >> nLen;
+ nCntDwn -= 4;
+ nNextPart += 4;
+ nNextPart += nLen;
+ bDataItem = FALSE;
+
+ switch( nId )
+ {
+ case 0x000A: // EOC
+ nCntDwn = 0;
+ break;
+ case 0x00C7: // Pivot Field
+ {
+ UINT16 nFlags;
+ rIn >> nFlags;
+ rIn.SeekRel( 12 );
+ nCntDwn -= 14;
+ if( nCntDwn < 3 )
+ nCntDwn = 0;
+ else
+ {
+ pActField = new PivotCacheField( ::ReadUnicodeString( rIn, nCntDwn, eSrc ) );
+ pActField->SetReadState( TRUEBOOL( nFlags & 0x0002 ) );
+ bExistsReadLater |= pActField->GetReadState();
+ Append( pActField );
+ }
+ }
+ break;
+ case 0x00C8: // index array
+ {
+ bDoReadLater = bExistsReadLater;
+ if( bDoReadLater )
+ pActField = GetFirstReadLater();
+ }
+ break;
+ case 0x00C9: // double
+ {
+ bDataItem = TRUE;
+ if( nCntDwn < 8 )
+ nCntDwn = 0;
+ else
+ {
+ double fVal;
+ rIn >> fVal;
+ nCntDwn -= 8;
+ if( pActField )
+ pActField->Append( new PivotCacheDoubleItem( fVal ) );
+ }
+ }
+ break;
+ case 0x00CD: // String
+ {
+ bDataItem = TRUE;
+ if( nCntDwn < 3 )
+ nCntDwn = 0;
+ else if( pActField )
+ pActField->Append( new PivotCacheStringItem( ::ReadUnicodeString( rIn , nCntDwn, eSrc ) ) );
+ }
+ break;
+ case 0x00CE: // alternative date/time
+ {
+ bDataItem = TRUE;
+ nCntDwn -= 8;
+ if( pActField )
+ pActField->Append( new PivotCacheDoubleItem( 0 ) );
+ }
+ break;
+ default:
+ nCntDwn -= nLen;
+ }
+ if( bDoReadLater && bDataItem )
+ pActField = GetNextReadLater();
+
+ rIn.Seek( nNextPart );
+ }
+}
+
+PivotCache::~PivotCache()
+{
+ for( PivotCacheField* pField = _First(); pField; pField = _Next() )
+ delete pField;
+}
+
+void PivotCache::SetSourceType( UINT16 nType )
+{
+ switch( nType )
+ {
+ case 0x01: eSrcType = PTST_ExcelOrDB; break;
+ case 0x02: eSrcType = PTST_extern; break;
+ case 0x04: eSrcType = PTST_MultConsoldRngs; break;
+ case 0x08: eSrcType = PTST_PivTab; break;
+ case 0x10: eSrcType = PTST_ScenMan; break;
+ default: eSrcType = PTST_unknown;
+ }
+}
+
+void PivotCache::SetSource( UINT8 nC1, UINT16 nR1, UINT8 nC2, UINT16 nR2,
+ const String& rFName, const String& rTName, BOOL bSelfRef )
+{
+ aFileName = rFName;
+ aTabName = rTName;
+ bSelf = bSelfRef;
+ aSrcRange.aStart.Set( nC1, nR1, 0xFFFF );
+ aSrcRange.aEnd.Set( nC2, nR2, 0xFFFF );
+}
+
+PivotCacheField* PivotCache::GetFirstReadLater()
+{
+ PivotCacheField* pField = (PivotCacheField*) List::First();
+ if( pField )
+ if( !pField->GetReadState() )
+ pField = GetNextReadLater();
+ return pField;
+}
+
+PivotCacheField* PivotCache::GetNextReadLater()
+{
+ PivotCacheField* pField = _Next();
+ while( pField )
+ {
+ if( pField->GetReadState() )
+ return pField;
+ pField = _Next();
+ }
+ return NULL;
+}
+
+const PivotCacheItem* PivotCache::GetItem( UINT16 nFieldId, UINT16 nItemId ) const
+{
+ const PivotCacheField* pField = (const PivotCacheField*) List::GetObject( nFieldId );
+ return pField ? pField->Get( nItemId ) : NULL;
+}
+
+
+const String* PivotCache::GetFieldName( UINT16 nFieldId ) const
+{
+ const PivotCacheField* pField = (const PivotCacheField*) List::GetObject( nFieldId );
+ return pField ? pField->GetName() : NULL;
+}
+
+
+
+//_________________________________________________________
+
+PivotCacheList::~PivotCacheList()
+{
+ for( PivotCache* pCache = _First(); pCache; pCache = _Next() )
+ delete pCache;
+}
+
+
+
+//_________________________________________________________
+
+PivotDataItem::PivotDataItem( UINT16 nI, UINT16 nFunc, UINT16 nD,
+ UINT16 nF, String* pName ) :
+ nIndex( nI ),
+ nFunction( nFunc ),
+ nDisplay( nD ),
+ nFormat( nF )
+{
+ pLayoutName = pName ? new String( *pName ) : NULL;
+}
+
+PivotDataItem::~PivotDataItem()
+{
+ if( pLayoutName )
+ delete pLayoutName;
+}
+
+
+
+//_________________________________________________________
+
+PivotDataItemList::~PivotDataItemList()
+{
+ for( PivotDataItem* pItem = _First(); pItem; pItem = _Next() )
+ delete pItem;
+}
+
+
+
+//_________________________________________________________
+
+PivotFieldItem::PivotFieldItem( UINT16 nT, UINT16 nC, UINT16 nGrBit ) :
+ nType( nT ),
+ nCache( nC ),
+ bHidden( TRUEBOOL( nGrBit & 0x01 ) ),
+ bHideDetail( TRUEBOOL( nGrBit & 0x02 ) ),
+ bFormula( TRUEBOOL( nGrBit & 0x04 ) ),
+ bMissing( TRUEBOOL( nGrBit & 0x08 ) )
+{ }
+
+PivotFieldItem::PivotFieldItem( PivotFieldItem& r ) :
+ nType( r.nType ),
+ nCache( r.nCache ),
+ bHidden( r.bHidden ),
+ bHideDetail( r.bHideDetail ),
+ bFormula( r.bFormula ),
+ bMissing( r.bMissing )
+{ }
+
+
+
+//_________________________________________________________
+
+PivotFieldItemList::PivotFieldItemList( PivotFieldItemList& r )
+{
+ for( PivotFieldItem* pItem = _First(); pItem; pItem = _Next() )
+ Append( new PivotFieldItem( *pItem ) );
+}
+
+PivotFieldItemList::~PivotFieldItemList()
+{
+ for( PivotFieldItem* pItem = _First(); pItem; pItem = _Next() )
+ delete pItem;
+}
+
+
+
+//_________________________________________________________
+
+PivotTabField::PivotTabField( UINT16 nAx, UINT16 nNOSubt, UINT16 nSType,
+ UINT16 nNOItems, UINT16 nCI, const String* pName ) :
+ nCacheIndex( nCI ),
+ nIndex( 0xFFFF ),
+ nNumOfSubtotals( nNOSubt ),
+ nNumOfItems( nNOItems ),
+ nSubType( nSType )
+{
+ pLayoutName = pName ? new String( *pName ) : NULL;
+ switch( nAx )
+ {
+ case 1: nAxis = sheet::DataPilotFieldOrientation_ROW; break;
+ case 2: nAxis = sheet::DataPilotFieldOrientation_COLUMN; break;
+ case 4: nAxis = sheet::DataPilotFieldOrientation_PAGE; break;
+ case 8: nAxis = sheet::DataPilotFieldOrientation_DATA; break;
+ default: nAxis = sheet::DataPilotFieldOrientation_HIDDEN;
+ }
+}
+
+PivotTabField::PivotTabField( PivotTabField& r, UINT16 nSubT, const String* pName ) :
+ aItemList( r.aItemList ),
+ nCacheIndex( r.nCacheIndex ),
+ nIndex( r.nIndex ),
+ nNumOfSubtotals( r.nNumOfSubtotals ),
+ nNumOfItems( r.nNumOfItems ),
+ nAxis( r.nAxis ),
+ nSubType( nSubT )
+{
+ pLayoutName = pName ? new String( *pName ) : NULL;
+}
+
+PivotTabField::~PivotTabField()
+{
+ if( pLayoutName )
+ delete pLayoutName;
+}
+
+
+
+//_________________________________________________________
+
+PivotTabFieldList::~PivotTabFieldList()
+{
+ for( PivotTabField* pField = _First(); pField; pField = _Next() )
+ delete pField;
+ if( pIndexList )
+ delete pIndexList;
+}
+
+void PivotTabFieldList::AddIndex( UINT16 nIndex )
+{
+ if( !pIndexList )
+ pIndexList = new UINT16List;
+ pIndexList->Append( nIndex );
+}
+
+PivotTabField* PivotTabFieldList::_FindIndex( UINT16 nIndex )
+{
+ PivotTabField* pField = _First();
+ while( pField )
+ {
+ if( pField->GetCacheIndex() == nIndex )
+ return pField;
+ pField = _Next();
+ }
+ return NULL;
+}
+
+const PivotTabField* PivotTabFieldList::FirstInOrder()
+{
+ nIndexCnt = 0;
+ if( pIndexList )
+ return _FindIndex( pIndexList->Get( 0 ) );
+ return (const PivotTabField*) List::First();
+}
+
+const PivotTabField* PivotTabFieldList::NextInOrder()
+{
+ if( pIndexList )
+ {
+ nIndexCnt++;
+ if( nIndexCnt < pIndexList->Count() )
+ return _FindIndex( pIndexList->Get( nIndexCnt ) );
+ return NULL;
+ }
+ return (const PivotTabField*) List::Next();
+}
+
+PivotTabField* PivotTabFieldList::CreateDuplicate( UINT16 nCache, UINT16 nSubT,
+ const String* pName )
+{
+ PivotTabField* pNew = NULL;
+ PivotTabField* pOld = _FindIndex( nCache );
+ if( pOld )
+ pNew = new PivotTabField( *pOld, nSubT, pName );
+ return pNew;
+}
+
+
+
+//_________________________________________________________
+
+PivotTable::PivotTable( SvStream& rIn, RootData* pRD, UINT8 nTab, INT32 nBytesLeft ) :
+ ExcRoot( pRD )
+{
+ nSxIvdTurn = nSxLiInd = 0;
+ pActField = pActDataField = NULL;
+ pColFieldList = pRowFieldList = pPageFieldList = NULL;
+ pDataFieldList = pFullDataList = NULL;
+ pDataItemList = NULL;
+ pCache = NULL;
+ nCacheIndexCnt = 0;
+
+ UINT16 nRowFirst, nRowLast, nColFirst, nColLast;
+ UINT16 nRowFirstHead, nRowFirstData, nColFirstData;
+ UINT16 nICache, nDummy, nDefAxis4Data, nDefPos4Data, nDim;
+ UINT16 nNumDataRow, nNumDataCol, nIndTabAutoFmt;
+ UINT16 nTabNameLen, nDtaFldNameLen;
+
+ rIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast
+ >> nRowFirstHead >> nRowFirstData >> nColFirstData
+ >> nICache >> nDummy >> nDefAxis4Data >> nDefPos4Data >> nDim
+ >> nDimRow >> nDimCol >> nDimPage >> nDimData
+ >> nNumDataRow >> nNumDataCol >> nFlags >> nIndTabAutoFmt
+ >> nTabNameLen >> nDtaFldNameLen;
+ nBytesLeft -= 44;
+
+ if( pExcRoot->pImpPivotCacheList )
+ pCache = pExcRoot->pImpPivotCacheList->Get( nICache );
+
+ aViewRange.aStart.Set( nColFirst & 0xFF, nRowFirst, nTab );
+ aViewRange.aEnd.Set( nColLast & 0xFF, nRowLast, nTab );
+ aOutputRange = aViewRange;
+ if( aOutputRange.aStart.Row() )
+ aOutputRange.aStart.IncRow( -1 );
+
+// *** unused ***
+// String aPivTabName;
+// if( nTabNameLen )
+// aPivTabName = ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar, nTabNameLen );
+// String aDataFieldName;
+// if( nDtaFldNameLen )
+// aDataFieldName = ::ReadUnicodeString( aIn, nBytesLeft, eQuellChar, nDtaFldNameLen );
+}
+
+PivotTable::~PivotTable()
+{
+ if( pColFieldList )
+ delete pColFieldList;
+ if( pRowFieldList )
+ delete pRowFieldList;
+ if( pPageFieldList )
+ delete pPageFieldList;
+ if( pDataFieldList )
+ delete pDataFieldList;
+ if( pFullDataList )
+ delete pFullDataList;
+ if( pDataItemList )
+ delete pDataItemList;
+}
+
+void PivotTable::DecodeSubTotals( long& rCount, USHORT* pFuncs, UINT16 nFlags )
+{
+ rCount = 0;
+ if( !nFlags )
+ return;
+ UINT16 nMask = 0x0001;
+ for( USHORT nBitNum = 1; nBitNum <= 16; nBitNum++ )
+ {
+ if( nFlags & nMask )
+ {
+ pFuncs[ rCount ] = nBitNum;
+ rCount++;
+ }
+ nMask <<= 1;
+ }
+}
+
+void PivotTable::AddViewField( SvStream& rIn, INT32 nBytesLeft )
+{
+ const CharSet eSrc = *pExcRoot->pCharset;
+ PivotTabFieldList** ppList;
+ UINT16 nAxis, nSubTotals, nSubType, nItems, nStrLen;
+ String* pName = NULL;
+
+ rIn >> nAxis >> nSubTotals >> nSubType >> nItems >> nStrLen;
+ nBytesLeft -= 10;
+ if( nStrLen < 0xFFFF )
+ pName = new String( ::ReadUnicodeString( rIn, nBytesLeft, eSrc, nStrLen ) );
+
+ pActField = pActDataField = NULL;
+
+ for( UINT16 nAxisMask = 0x0001; nAxisMask <= 0x0008; nAxisMask <<= 1 )
+ {
+ if( nAxis & nAxisMask )
+ {
+ PivotTabField*& rpAct = (nAxisMask == 0x0008) ? pActDataField : pActField;
+ switch( nAxisMask )
+ {
+ case 0x0001: ppList = &pRowFieldList; break;
+ case 0x0002: ppList = &pColFieldList; break;
+ case 0x0004: ppList = &pPageFieldList; break;
+ case 0x0008: ppList = &pDataFieldList; break;
+ default: ppList = NULL;
+ }
+ if( ppList )
+ {
+ if( !*ppList )
+ *ppList = new PivotTabFieldList;
+ rpAct = new PivotTabField( nAxisMask, nSubTotals, nSubType, nItems, nCacheIndexCnt, pName );
+ (*ppList)->Append( rpAct );
+ }
+ }
+ }
+
+ if( pName )
+ delete pName;
+ nCacheIndexCnt++;
+}
+
+void PivotTable::AddViewItem( UINT16 nItemType, UINT16 nCache, UINT16 nGrBit )
+{
+ if( pActField )
+ pActField->AppendItem( nItemType, nCache, nGrBit );
+ if( pActDataField )
+ pActDataField->AppendItem( nItemType, nCache, nGrBit );
+}
+
+void PivotTable::ReadRCFieldIDs( SvStream& rIn, INT32 nBytesLeft )
+{
+ if( nSxIvdTurn > 1 )
+ return;
+
+ if( !nSxIvdTurn && !nDimRow ) nSxIvdTurn++; // row-SXIVD doesn't exist if no row fields
+
+ PivotTabFieldList*& rpFL = nSxIvdTurn ? pColFieldList : pRowFieldList;
+ if( !rpFL )
+ return;
+
+ UINT16 nArrayCnt = (UINT16)(nBytesLeft >> 1);
+ UINT16 nIndex;
+
+ for( UINT16 iCnt = 0; iCnt < nArrayCnt; iCnt++ )
+ {
+ rIn >> nIndex;
+ if( nIndex == 0xFFFE )
+ rpFL->Append( new PivotTabField( nSxIvdTurn + 1, 1, 1, 0, 0xFFFE, NULL ) );
+ rpFL->SetIndex( iCnt, nIndex );
+ rpFL->AddIndex( nIndex );
+ }
+ nSxIvdTurn++;
+}
+
+void PivotTable::AddPageItemInfo( UINT16 nSXVD, UINT16 nSXVI )
+{
+ if( !pPageFieldList )
+ return;
+
+ pPageFieldList->SetIndex( nSXVD, nSXVI );
+ pPageFieldList->AddIndex( nSXVD );
+ if( aOutputRange.aStart.Row() )
+ aOutputRange.aStart.IncRow( -1 );
+}
+
+void PivotTable::AddDataItem( SvStream& rIn, INT32 nBytesLeft )
+{
+ const CharSet eSrc = *pExcRoot->pCharset;
+ String* pName = NULL;
+ UINT16 nIndex, nFunc, nD, nSXVD, nSXVI, nF, nStrLen;
+
+ rIn >> nIndex >> nFunc >> nD >> nSXVD >> nSXVI >> nF >> nStrLen;
+ nBytesLeft -= 14;
+ if( nStrLen < 0xFFFF )
+ pName = new String( ::ReadUnicodeString( rIn, nBytesLeft, eSrc, nStrLen ) );
+
+ if( !pDataItemList )
+ pDataItemList = new PivotDataItemList;
+ pDataItemList->Append( new PivotDataItem( nIndex, nFunc, nD, nF, pName ) );
+
+ if( pName )
+ delete pName;
+}
+
+void PivotTable::CreateFullDataList()
+{
+ if( !pDataFieldList || !pDataItemList )
+ return;
+
+ for( const PivotDataItem* pDI = pDataItemList->First(); pDI; pDI = pDataItemList->Next() )
+ {
+ PivotTabField* pField = pDataFieldList->CreateDuplicate(
+ pDI->GetIndex(), pDI->GetFunction(), pDI->GetLayoutName() );
+
+ if( pField )
+ {
+ if( !pFullDataList )
+ pFullDataList = new PivotTabFieldList;
+ pFullDataList->Append( pField );
+ }
+ }
+}
+
+void PivotTable::SetFields( PivotTabFieldList& rList, USHORT nOrient, ScDPSaveData& rSaveData )
+{
+ ScDPSaveDimension* pDim;
+ const String* pFieldName;
+ const PivotCacheItem* pCI;
+ const PivotTabField* pPF = rList.FirstInOrder();
+
+ while( pPF )
+ {
+ if( pPF->GetIndex() == 0xFFFE )
+ {
+ pDim = rSaveData.GetDataLayoutDimension();
+ pDim->SetOrientation( nOrient );
+ }
+ else
+ {
+ pFieldName = pPF->GetCacheName( pCache );
+ if( pFieldName )
+ pDim = rSaveData.GetNewDimensionByName( *pFieldName );
+ else
+ {
+ String aDummy( RTL_CONSTASCII_STRINGPARAM( "<INVALID CACHE INDEX #" ) );
+ aDummy += UniString::CreateFromInt32( pPF->GetCacheIndex() );
+ aDummy.AppendAscii( ">" );
+ pDim = rSaveData.GetDimensionByName( aDummy );
+ }
+
+ pDim->SetOrientation( nOrient );
+ pDim->SetLayoutName( pPF->GetLayoutName() );
+ pDim->SetShowEmpty( pPF->GetShowEmpty() );
+
+ // subtotal type
+ UINT16 nSubType = pPF->GetSubType();
+ if( nOrient == sheet::DataPilotFieldOrientation_DATA )
+ pDim->SetFunction( nSubType + 2 );
+ else
+ {
+ long nCount;
+ USHORT nFuncs[16];
+ DecodeSubTotals( nCount, nFuncs, nSubType );
+ pDim->SetSubTotals( nCount, nFuncs );
+ }
+
+ if( !pCache )
+ return;
+
+ // view items
+ const PivotFieldItemList& rItemList = pPF->GetItemList();
+ UINT32 nNumItems = rItemList.Count();
+ UINT32 nItemCnt;
+ const PivotFieldItem* pItem;
+ ScDPSaveMember* pMember;
+ for( nItemCnt = 0; nItemCnt < nNumItems; nItemCnt++ )
+ {
+ pItem = rItemList.Get( nItemCnt );
+ if( pItem )
+ {
+ pCI = pCache->GetItem( pPF->GetCacheIndex(), pItem->GetCacheIndex() );
+ if( pCI )
+ {
+ if( pCI->IsString() )
+ pMember = pDim->GetMemberByName(
+ ((PivotCacheStringItem*) pCI)->GetCont() );
+ else if( pCI->IsDouble() )
+ pMember = NULL;
+// pMember = pDim->GetMemberByValue(
+// ((PivotCacheDoubleItem*) pCI)->GetCont() );
+ else
+ pMember = NULL;
+
+ if( pMember )
+ {
+ pMember->SetIsVisible( !pItem->IsHidden() );
+ pMember->SetShowDetails( !pItem->IsHideDetail() );
+ }
+ }
+ }
+ }
+ }
+ pPF = rList.NextInOrder();
+ }
+}
+
+void PivotTable::Apply()
+{
+ if( !pCache )
+ return;
+
+ if( !pCache->IsSelfRef() || pCache->GetSourceType() != PTST_ExcelOrDB )
+ return;
+
+ UINT16 nTabNum = 0xFFFF;
+ ScRange aSrcRange( pCache->GetSourceRange() );
+
+ if( aSrcRange.aStart.Tab() >= 0xFF && !pExcRoot->pDoc->GetTable( pCache->GetTabName(), nTabNum ) )
+ return;
+
+ ScDPSaveData aSaveData;
+
+ aSaveData.SetRowGrand( TRUEBOOL( nFlags & 0x0001 ) );
+ aSaveData.SetColumnGrand( TRUEBOOL( nFlags & 0x0002 ) );
+
+ if( pRowFieldList )
+ SetFields( *pRowFieldList, sheet::DataPilotFieldOrientation_ROW, aSaveData );
+ if( pColFieldList )
+ SetFields( *pColFieldList, sheet::DataPilotFieldOrientation_COLUMN, aSaveData);
+ if( pPageFieldList )
+ SetFields( *pPageFieldList, sheet::DataPilotFieldOrientation_PAGE, aSaveData );
+ if( pDataFieldList )
+ {
+ CreateFullDataList();
+ if( pFullDataList )
+ SetFields( *pFullDataList, sheet::DataPilotFieldOrientation_DATA, aSaveData );
+ }
+
+ ScDPCollection* pColl = pExcRoot->pDoc->GetDPCollection();
+ ScDPObject* pNew = new ScDPObject( pExcRoot->pDoc );
+ ScSheetSourceDesc aDesc;
+
+ aSrcRange.aStart.SetTab( nTabNum );
+ aSrcRange.aEnd.SetTab( nTabNum );
+ aDesc.aSourceRange = aSrcRange;
+ pNew->SetSaveData( aSaveData );
+ pNew->SetSheetDesc( aDesc );
+ pNew->SetOutRange( aViewRange );
+ pColl->Insert( pNew );
+}
+
+
+
+//_________________________________________________________
+
+PivotTableList::~PivotTableList()
+{
+ for( PivotTable* pTable = First(); pTable; pTable = Next() )
+ delete pTable;
+}
+
+BOOL PivotTableList::IsInPivotRange( UINT16 nCol, UINT16 nRow, UINT16 nTab ) const
+{
+ const ScAddress aRef( nCol, nRow, nTab );
+
+ for( UINT32 nCnt = 0; nCnt < List::Count(); nCnt++ )
+ {
+ PivotTable* pTable = Get( nCnt );
+ if( pTable )
+ if( pTable->IsInPivotRange( aRef ) )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void PivotTableList::Apply()
+{
+ for( PivotTable* pTable = First(); pTable; pTable = Next() )
+ pTable->Apply();
+}
+
+
+
+
+const sal_Char* GetExcBuiltInName( sal_Unicode n )
+{
+ const sal_Char* p[] = {
+ "BuiltIn_Consolidate_Area","BuiltIn_Auto_Open","BuiltIn_Auto_Close",
+ "BuiltIn_Extract","BuiltIn_Database","BuiltIn_Criteria","BuiltIn_Print_Area",
+ "BuiltIn_Print_Titles","BuiltIn_Recorder","BuiltIn_Data_Form",
+ "BuiltIn_Auto_Activate","BuiltIn_Auto_Deactivate","BuiltIn_SheetTitle",
+ "BuiltIn_AutoFilter","BuiltIn_UNKNOWN" };
+
+ if( n < 0x00 || n > EXC_BUILTIN_UNKNOWN )
+ n = EXC_BUILTIN_UNKNOWN;
+
+ return p[ n ];
+}
+
+
+
+
+
diff --git a/sc/source/filter/excel/expop2.cxx b/sc/source/filter/excel/expop2.cxx
new file mode 100644
index 000000000000..8cace86255a0
--- /dev/null
+++ b/sc/source/filter/excel/expop2.cxx
@@ -0,0 +1,225 @@
+/*************************************************************************
+ *
+ * $RCSfile: expop2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <offmgr/fltrcfg.hxx>
+#include <offmgr/app.hxx>
+
+#ifndef _SFX_INIMGR_HXX //autogen
+#include <sfx2/inimgr.hxx>
+#endif
+
+#include <sfx2/objsh.hxx>
+#include <sfx2/docinf.hxx>
+#include <svx/svxmsbas.hxx>
+
+#include "scerrors.hxx"
+#include "scextopt.hxx"
+
+#include "root.hxx"
+#include "exp_op.hxx"
+#include "excdoc.hxx"
+#include "fontbuff.hxx"
+
+#include "xcl97exp.hxx"
+#include "xcl97esc.hxx"
+
+#include "document.hxx"
+
+
+extern const sal_Char* pVBAStorageName;
+extern const sal_Char* pVBASubStorageName;
+
+
+
+
+ExportBiff5::ExportBiff5( SvStorage& rRootStorage, SvStream& aStream, ScDocument* pDoc, CharSet eDest ):
+ ExportTyp( aStream, pDoc, eDest )
+ // Excel immer Windoofs, Quelle (SC) immer System
+{
+ DBG_ASSERT( pDoc, "-ExportBiff5::ExportBiff5(): No Null-Document!" );
+
+ // nur Teil der Root-Daten gebraucht
+ pExcRoot = new RootData;
+ pExcRoot->pDoc = pDoc;
+ pExcRoot->pTabBuffer = new ExcETabNumBuffer( *pDoc );
+ pExcRoot->pAktTab = NULL;
+ pExcRoot->bCellCut = FALSE;
+ pExcRoot->pFontRecs = NULL;
+ pExcRoot->pSstRecs = NULL;
+ pExcRoot->pEdEng = NULL;
+ pExcRoot->eGlobalDateiTyp = Biff5;
+ pExcRoot->eHauptDateiTyp = Biff5;
+ pExcRoot->eDateiTyp = Biff5;
+ pExcRoot->nRowMax = EXC5_ANZROW;
+ pExcRoot->pFormTable = pDoc->GetFormatTable();
+ pExcRoot->pRootStorage = &rRootStorage;
+
+ pExcRoot->pColor = new ColorBuffer( pExcRoot );
+ pExcRoot->pColor->SetDefaults();
+
+ pExcRoot->pCharset = &eZielChar;
+
+ pExcRoot->pExtDocOpt = new ScExtDocOptions;
+ if( pDoc->GetExtDocOptions() )
+ *pExcRoot->pExtDocOpt = *pDoc->GetExtDocOptions();
+
+ String aBreakSharedFormula(
+ SFX_INIMANAGER()->Get( SFX_GROUP_COMMON, _STRINGCONST( "EXCELBREAKSHAREDFORMULA" ) ) );
+
+ if( aBreakSharedFormula.Len() )
+ pExcRoot->bBreakSharedFormula = aBreakSharedFormula.ToInt32() != 0;
+ else
+ pExcRoot->bBreakSharedFormula = TRUE;
+
+ pExcDoc = new ExcDocument( pExcRoot );
+}
+
+
+ExportBiff5::~ExportBiff5()
+{
+ delete pExcDoc;
+ delete pExcRoot;
+}
+
+
+FltError ExportBiff5::Write()
+{
+ FltError eRet = eERR_OK;
+ OfaFilterOptions* pFiltOpt = NULL;
+ SvStorage* pRootStorage = pExcRoot->pRootStorage;
+
+ if( pExcRoot->eGlobalDateiTyp >= Biff8 )
+ {
+ pFiltOpt = OFF_APP()->GetFilterOptions();
+
+ pExcRoot->bWriteVBAStorage = pFiltOpt && pFiltOpt->IsLoadExcelBasicStorage();
+ }
+
+ SfxObjectShell& rDocShell = *pExcRoot->pDoc->GetDocumentShell();
+
+ if( pExcRoot->bWriteVBAStorage )
+ {
+ SfxObjectShell& rDocShell = *pExcRoot->pDoc->GetDocumentShell();
+
+ DBG_ASSERT( pExcRoot->pRootStorage, "-ImportExcel8::ImportExcel8(): no storage, no cookies!" );
+
+ SvxImportMSVBasic aBasicImport( rDocShell,
+ *pRootStorage,
+ pFiltOpt->IsLoadExcelBasicCode(),
+ pFiltOpt->IsLoadExcelBasicStorage() );
+
+ ULONG nErr = aBasicImport.SaveOrDelMSVBAStorage( TRUE, _STRING( pVBAStorageName ) );
+
+ if( nErr != ERRCODE_NONE )
+ rDocShell.SetError( nErr );
+ }
+
+ // VBA-storage written?
+ pExcRoot->bWriteVBAStorage = pRootStorage->IsContained( _STRING( pVBAStorageName ) );
+
+ pExcDoc->ReadDoc(); // ScDoc -> ExcDoc
+ pExcDoc->Write( aOut ); // wechstreamen
+
+ SfxDocumentInfo& rInfo = rDocShell.GetDocInfo();
+ rInfo.SavePropertySet( pExcRoot->pRootStorage );
+
+ if( pExcRoot->bCellCut )
+ return SCWARN_EXPORT_MAXROW;
+ else
+ return eERR_OK;
+}
+
+
+
+ExportBiff8::ExportBiff8( SvStorage& rRootStorage, SvStream& aStream, ScDocument* pDoc, CharSet eZ, BOOL bStoreRel ) :
+ ExportBiff5( rRootStorage, aStream, pDoc, eZ )
+{
+ pExcRoot->eGlobalDateiTyp = Biff8;
+ pExcRoot->eHauptDateiTyp = Biff8;
+ pExcRoot->eDateiTyp = Biff8;
+ pExcRoot->nRowMax = XCL8_ROWMAX;
+ pExcRoot->pEscher = new XclEscher( pDoc->GetTableCount(), *pExcRoot );
+
+ pExcRoot->pColor->SetDefaults();
+
+ pExcRoot->bStoreRel = bStoreRel;
+
+ String aBase = pDoc->GetDocumentShell()->GetBaseURL();
+ aBase.Erase( aBase.SearchBackward( '/' ) + 1 );
+ pExcRoot->pBasePath = new String( aBase );
+}
+
+
+ExportBiff8::~ExportBiff8()
+{
+ delete pExcRoot->pEscher;
+ pExcRoot->pEscher = NULL;
+}
+
+
diff --git a/sc/source/filter/excel/fontbuff.cxx b/sc/source/filter/excel/fontbuff.cxx
new file mode 100644
index 000000000000..9c6a3f847fdd
--- /dev/null
+++ b/sc/source/filter/excel/fontbuff.cxx
@@ -0,0 +1,778 @@
+/*************************************************************************
+ *
+ * $RCSfile: fontbuff.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/cntritem.hxx>
+#include <svx/crsditem.hxx>
+#include <svx/eeitem.hxx>
+#include <svx/postitem.hxx>
+#include <svx/shdditem.hxx>
+#include <svx/escpitem.hxx>
+#include <svx/udlnitem.hxx>
+#include <svx/wghtitem.hxx>
+#include <sfx2/printer.hxx>
+#include <vcl/system.hxx>
+
+#include "attrib.hxx"
+#include "document.hxx"
+#include "global.hxx"
+#include "docpool.hxx"
+#include "patattr.hxx"
+
+#include "flttools.hxx"
+#include "fontbuff.hxx"
+#include "lotfntbf.hxx"
+
+
+const UINT16 ColorBuffer::nAnzDef = 56;
+
+
+static const ColBuffEntry pDefArrayBiff5[] = {
+ { 0x00, 0x00, 0x00 },
+ { 0xff, 0xff, 0xff },
+ { 0xff, 0x00, 0x00 },
+ { 0x00, 0xff, 0x00 },
+ { 0x00, 0x00, 0xff },
+ { 0xff, 0xff, 0x00 },
+ { 0xff, 0x00, 0xff },
+ { 0x00, 0xff, 0xff },
+ { 0x80, 0x00, 0x00 },
+ { 0x00, 0x80, 0x00 },
+ { 0x00, 0x00, 0x80 },
+ { 0x80, 0x80, 0x00 },
+ { 0x80, 0x00, 0x80 },
+ { 0x00, 0x80, 0x80 },
+ { 0xc0, 0xc0, 0xc0 },
+ { 0x80, 0x80, 0x80 },
+ { 0x80, 0x80, 0xff },
+ { 0x80, 0x20, 0x60 },
+ { 0xff, 0xff, 0xc0 },
+ { 0xa0, 0xe0, 0xe0 },
+ { 0x60, 0x00, 0x80 },
+ { 0xff, 0x80, 0x80 },
+ { 0x00, 0x80, 0xc0 },
+ { 0xc0, 0xc0, 0xff },
+ { 0x00, 0x00, 0x80 },
+ { 0xff, 0x00, 0xff },
+ { 0xff, 0xff, 0x00 },
+ { 0x00, 0xff, 0xff },
+ { 0x80, 0x00, 0x80 },
+ { 0x80, 0x00, 0x00 },
+ { 0x00, 0x80, 0x80 },
+ { 0x00, 0x00, 0xff },
+ { 0x00, 0xcf, 0xff },
+ { 0x69, 0xff, 0xff },
+ { 0xe0, 0xff, 0xe0 },
+ { 0xff, 0xff, 0x80 },
+ { 0xa6, 0xca, 0xf0 },
+ { 0xdd, 0x9c, 0xb3 },
+ { 0xb3, 0x8f, 0xee },
+ { 0xe3, 0xe3, 0xe3 },
+ { 0x2a, 0x6f, 0xf9 },
+ { 0x3f, 0xb8, 0xcd },
+ { 0x48, 0x84, 0x36 },
+ { 0x95, 0x8c, 0x41 },
+ { 0x8e, 0x5e, 0x42 },
+ { 0xa0, 0x62, 0x7a },
+ { 0x62, 0x4f, 0xac },
+ { 0x96, 0x96, 0x96 },
+ { 0x1d, 0x2f, 0xbe },
+ { 0x28, 0x66, 0x76 },
+ { 0x00, 0x45, 0x00 },
+ { 0x45, 0x3e, 0x01 },
+ { 0x6a, 0x28, 0x13 },
+ { 0x85, 0x39, 0x6a },
+ { 0x4a, 0x32, 0x85 },
+ { 0x42, 0x42, 0x42 }
+ };
+
+
+static const ColBuffEntry pDefArrayBiff8[] = {
+ { 0x00, 0x00, 0x00 },
+ { 0xFF, 0xFF, 0xFF },
+ { 0xFF, 0x00, 0x00 },
+ { 0x00, 0xFF, 0x00 },
+ { 0x00, 0x00, 0xFF },
+ { 0xFF, 0xFF, 0x00 },
+ { 0xFF, 0x00, 0xFF },
+ { 0x00, 0xFF, 0xFF },
+ { 0x80, 0x00, 0x00 },
+ { 0x00, 0x80, 0x00 },
+ { 0x00, 0x00, 0x80 },
+ { 0x80, 0x80, 0x00 },
+ { 0x80, 0x00, 0x80 },
+ { 0x00, 0x80, 0x80 },
+ { 0xC0, 0xC0, 0xC0 },
+ { 0x80, 0x80, 0x80 },
+ { 0x99, 0x99, 0xFF },
+ { 0x99, 0x33, 0x66 },
+ { 0xFF, 0xFF, 0xCC },
+ { 0xCC, 0xFF, 0xFF },
+ { 0x66, 0x00, 0x66 },
+ { 0xFF, 0x80, 0x80 },
+ { 0x00, 0x66, 0xCC },
+ { 0xCC, 0xCC, 0xFF },
+ { 0x00, 0x00, 0x80 },
+ { 0xFF, 0x00, 0xFF },
+ { 0xFF, 0xFF, 0x00 },
+ { 0x00, 0xFF, 0xFF },
+ { 0x80, 0x00, 0x80 },
+ { 0x80, 0x00, 0x00 },
+ { 0x00, 0x80, 0x80 },
+ { 0x00, 0x00, 0xFF },
+ { 0x00, 0xCC, 0xFF },
+ { 0xCC, 0xFF, 0xFF },
+ { 0xCC, 0xFF, 0xCC },
+ { 0xFF, 0xFF, 0x99 },
+ { 0x99, 0xCC, 0xFF },
+ { 0xFF, 0x99, 0xCC },
+ { 0xCC, 0x99, 0xFF },
+ { 0xFF, 0xCC, 0x99 },
+ { 0x33, 0x66, 0xFF },
+ { 0x33, 0xCC, 0xCC },
+ { 0x99, 0xCC, 0x00 },
+ { 0xFF, 0xCC, 0x00 },
+ { 0xFF, 0x99, 0x00 },
+ { 0xFF, 0x66, 0x00 },
+ { 0x66, 0x66, 0x99 },
+ { 0x96, 0x96, 0x96 },
+ { 0x00, 0x33, 0x66 },
+ { 0x33, 0x99, 0x66 },
+ { 0x00, 0x33, 0x00 },
+ { 0x33, 0x33, 0x00 },
+ { 0x99, 0x33, 0x00 },
+ { 0x99, 0x33, 0x66 },
+ { 0x33, 0x33, 0x99 },
+ { 0x33, 0x33, 0x33 }
+ };
+
+
+#ifndef VCL
+const UINT16 ColorBuffer::nColCorrect = 257;
+#endif
+
+const UINT16 ColorBuffer::nIndCorrect = 8;
+
+const UINT16 LotusFontBuffer::nSize = 8;
+
+
+
+ColorBuffer::ColorBuffer( RootData* pRD ) : ExcRoot( pRD )
+{
+ pDefArray = NULL;
+
+ UINT16 nSize = 64 - nIndCorrect;
+
+ pArray = new SvxColorItem *[ nSize ];
+ for( UINT16 nC = 0 ; nC < nSize ; nC++ )
+ pArray[ nC ] = NULL;
+
+ nCount = 0;
+ nMax = nSize;
+ bAuto = FALSE;
+
+ pDefault = new SvxColorItem( Color( COL_BLACK ) );
+}
+
+
+ColorBuffer::~ColorBuffer()
+{
+ Reset();
+
+ delete[] pArray;
+
+ delete pDefault;
+}
+
+
+void ColorBuffer::Reset()
+{
+ for( UINT16 nC = 0 ; nC < nCount ; nC++ )
+ {
+ if( pArray[ nC ] )
+ {
+ delete pArray[ nC ];
+ pArray[ nC ] = NULL;
+ }
+ }
+ nCount = 0;
+}
+
+
+BOOL ColorBuffer::NewColor( UINT16 nR, UINT16 nG, UINT16 nB )
+{
+ if( nCount < nMax )
+ {
+#ifdef VCL
+ pArray[ nCount ] = new SvxColorItem( Color( ( UINT8 ) nR, ( UINT8 ) nG, ( UINT8 ) nB) );
+#else
+ pArray[ nCount ] = new SvxColorItem( Color(
+ nR * nColCorrect,
+ nG * nColCorrect,
+ nB * nColCorrect ) );
+#endif
+ nCount++;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+const SvxColorItem* ColorBuffer::GetColor( UINT16 nIndex, const BOOL bOptGetDefault )
+{
+ if( pExcRoot->eHauptDateiTyp != Biff5 && pExcRoot->eHauptDateiTyp != Biff8 && nIndex >= 24 )
+ {
+ // Auto in < Excel 5
+ bAuto = TRUE;
+ return bOptGetDefault? pDefault : NULL;
+ }
+
+ if( nIndex >= nIndCorrect )
+ nIndex -= nIndCorrect;
+
+ if( nIndex < nMax )
+ {
+ bAuto = FALSE;
+ if( pArray[ nIndex ] )
+ return pArray[ nIndex ]; // schon Generiert
+ if( nIndex >= nCount )
+ { // ausserhalb der Definierten
+ if( nIndex < nAnzDef )
+ { // ... aber innerhalb der Defaults
+ pArray[ nIndex ] = new SvxColorItem( Color(
+ pDefArray[ nIndex ].nR, // R
+ pDefArray[ nIndex ].nG, // G
+ pDefArray[ nIndex ].nB ) ); // B
+ }
+ else
+ // ... und ausserhalb der Defaults
+ return bOptGetDefault? pDefault : NULL;
+ }
+ return pArray[ nIndex ];
+ }
+ else
+ { // ueber Array-Kapazitaet bzw. Auto
+ bAuto = TRUE;
+ return bOptGetDefault? pDefault : NULL;
+ }
+}
+
+
+void ColorBuffer::SetDefaults( void )
+{
+ if( pExcRoot->eHauptDateiTyp == Biff8 )
+ pDefArray = pDefArrayBiff8;
+ else
+ pDefArray = pDefArrayBiff5;
+}
+
+
+
+
+const UINT16 FontBuffer::nDefaultMasterHeight = 200;
+
+
+FontBuffer::FontBuffer( RootData* pRD ) : ExcRoot( pRD )
+{
+ aDefaultFont.bItalic = aDefaultFont.bStrikeout = aDefaultFont.bOutline = aDefaultFont.bShadow = FALSE;
+ aDefaultFont.eUnderline = ExcUndNone;
+ aDefaultFont.nWeight = 400; // NORMAL
+ aDefaultFont.nColor = 0xFFFF;
+}
+
+
+FontBuffer::~FontBuffer()
+{
+ register UINT32 nCnt = List::Count();
+ register ScExcFont* pDel = ( ScExcFont* ) List::First();
+
+ // NULL pointers may exist => not while(pDel)
+ while( nCnt-- )
+ {
+ delete pDel;
+ pDel = ( ScExcFont* ) List::Next();
+ }
+}
+
+
+void FontBuffer::NewFont( UINT16 nHeight, BYTE nAttr0, UINT16 nIndexCol, const String& rName )
+{
+ // fuer Biff2-4
+
+ BYTE nUnderline;
+ UINT16 nBoldness;
+
+ if( nAttr0 & 0x04 )
+ // underline
+ nUnderline = ( BYTE ) ExcUndSingle;
+ else
+ nUnderline = ( BYTE ) ExcUndNone;
+
+ if( nAttr0 & 0x01 )
+ // bold
+ nBoldness = 700; // BOLD
+ else
+ nBoldness = 400; // NORMAL
+
+ NewFont( nHeight, nAttr0, nUnderline, nIndexCol, nBoldness, 0x00, 0x01, rName );
+ // -> nFamily = DONTKNOW, nCharSet = DONTKNOW
+}
+
+
+void FontBuffer::NewFont( UINT16 nHeight, BYTE nAttr0, BYTE nUnderline,
+ UINT16 nIndexCol, UINT16 nBoldness, BYTE nFamily, BYTE nCharSet, const String& rName )
+{
+ NewFont( nHeight, nAttr0, 0x0000, nUnderline, nIndexCol, nBoldness, nFamily, nCharSet, rName );
+}
+
+
+void FontBuffer::NewFont( UINT16 nHeight, BYTE nAttr0, UINT16 nScript, BYTE nUnderline,
+ UINT16 nIndexCol, UINT16 nBoldness, BYTE nFamily, BYTE nCharSet, const String& rName )
+{
+ // fuer Biff5
+ if( Count() == 4 )
+ // 4 darf nicht vorkommen
+ Insert( NULL, LIST_APPEND );
+
+ // Umwandlung Windows-Font in SV-Font
+ CharSet eCharSet;
+ switch( nCharSet )
+ {
+ case 0: // ANSI_CHARSET
+ eCharSet = RTL_TEXTENCODING_MS_1252;
+ break;
+ case 255: // OEM_CHARSET
+ eCharSet = RTL_TEXTENCODING_IBM_850;
+ break;
+ case 2: // SYMBOL_CHARSET
+ eCharSet = RTL_TEXTENCODING_SYMBOL;
+ break;
+ default:
+ eCharSet = GetSystemCharSet();
+ }
+
+ FontFamily eFamily;
+ // !ACHTUNG!: anders als in Windows-Doku scheint der Font im unteren
+ // Nible des Bytes zu stehen -> Pitch unbekannt!
+ switch( nFamily & 0x0F ) // ...eben nicht!
+ {
+ case 0x01: // FF_ROMAN
+ eFamily = FAMILY_ROMAN;
+ break;
+ case 0x02: // FF_SWISS
+ eFamily = FAMILY_SWISS;
+ break;
+ case 0x03: // FF_MODERN
+ eFamily = FAMILY_MODERN;
+ break;
+ case 0x04: // FF_SCRIPT
+ eFamily = FAMILY_SCRIPT;
+ break;
+ case 0x05: // FF_DECORATIVE
+ eFamily = FAMILY_DECORATIVE;
+ break;
+ default:
+ if( *pExcRoot->pCharset == RTL_TEXTENCODING_APPLE_ROMAN &&
+ ( rName.EqualsAscii( "Geneva" ) || rName.EqualsAscii( "Chicago" ) ) )
+ eFamily = FAMILY_SWISS;
+ else
+ eFamily = FAMILY_DONTKNOW;
+ }
+
+ SvxFontItem* pSvxFont = new SvxFontItem( eFamily, rName, EMPTY_STRING, PITCH_DONTKNOW, eCharSet );
+
+ DBG_ASSERT( nHeight < 32767, "+FontList::NewFont(): Height >= 32767 - Pech..." );
+
+ ScExcFont* pScExcFont = new ScExcFont( *pSvxFont, *( new SvxFontHeightItem( ( ULONG ) nHeight ) ) );
+
+ pScExcFont->nColor = nIndexCol;
+ pScExcFont->nScript = ( UINT8 ) nScript;
+ pScExcFont->eUnderline = ( ExcUnderlineType ) nUnderline;
+ pScExcFont->nWeight = nBoldness;
+ pScExcFont->bItalic = nAttr0 & 0x02; // italic
+ pScExcFont->bStrikeout = nAttr0 &0x08; // strikeout
+ pScExcFont->bOutline = nAttr0 &0x10; // outline
+ pScExcFont->bShadow = nAttr0 &0x20; // shadow
+
+ Insert( pScExcFont, LIST_APPEND );
+
+ if( Count() == 1 )
+ {
+ double f;
+ switch( nHeight )
+ {
+ case 240: f = 1.21860; break; // 12
+ case 320: f = 1.61040; break; // 16
+ default:
+ {
+ SfxPrinter* p = pExcRoot->pDoc->GetPrinter();
+
+ if( p )
+ {
+ const UINT16 nArial10Width = 111;
+
+ Font aF( rName, Size( 0, nHeight ) );
+
+ aF.SetFamily( eFamily );
+ aF.SetCharSet( eCharSet );
+
+ p->SetFont( aF );
+
+ f = ( double ) p->GetTextWidth( _STRINGCONST( "0" ) ) / ( double ) nArial10Width;
+ }
+ else
+ f = ( double ) nHeight / ( double ) nDefaultMasterHeight;
+ }
+ }
+ pExcRoot->fColScale *= f;
+ }
+}
+
+
+void FontBuffer::Fill( const UINT16 nIndex, SfxItemSet& rItemSet, const BOOL bOwn )
+{
+ ScExcFont* pFont = ( ScExcFont* ) GetObject( nIndex );
+
+ if( !pFont )
+ pFont = &aDefaultFont;
+
+ SvxWeightItem aWeightItem( GetWeight( pFont->nWeight ) );
+
+ if( pFont->bItalic )
+ {// italic
+ SvxPostureItem aAttr( ITALIC_NORMAL );
+ if( bOwn )
+ rItemSet.Put( aAttr );
+ else
+ rItemSet.Put( aAttr, EE_CHAR_ITALIC );
+ }
+
+
+ if( !bOwn && pFont->nScript )
+ {
+ SvxEscapement eEsc;
+
+ switch( pFont->nScript )
+ {
+ case 0x01: eEsc = SVX_ESCAPEMENT_SUPERSCRIPT; break;
+ case 0x02: eEsc = SVX_ESCAPEMENT_SUBSCRIPT; break;
+ case 0x00:
+ default:
+ eEsc = SVX_ESCAPEMENT_OFF;
+ }
+
+ rItemSet.Put( SvxEscapementItem( eEsc, EE_CHAR_ESCAPEMENT ) );
+ }
+
+
+ UINT16 nUnderline;
+
+ switch( pFont->eUnderline )
+ {
+ case ExcUndSingle:
+ case ExcUndSingleAcc: nUnderline = UNDERLINE_SINGLE; break;
+ case ExcUndDouble:
+ case ExcUndDoubleAcc: nUnderline = UNDERLINE_DOUBLE; break;
+ default: nUnderline = UNDERLINE_NONE;
+ }
+
+ SvxUnderlineItem aUndItem( ( FontUnderline ) nUnderline );
+
+
+ if( pFont->bStrikeout )
+ {// strikeout
+ SvxCrossedOutItem aAttr( STRIKEOUT_SINGLE );
+ if( bOwn )
+ rItemSet.Put( aAttr );
+ else
+ rItemSet.Put( aAttr, EE_CHAR_STRIKEOUT );
+ }
+
+ if( pFont->bOutline )
+ {// outline
+ SvxContourItem aAttr( TRUE );
+ if( bOwn )
+ rItemSet.Put( aAttr );
+ else
+ rItemSet.Put( aAttr, EE_CHAR_OUTLINE );
+ }
+
+ if( pFont->bShadow )
+ {// shadow
+ SvxShadowedItem aAttr( TRUE );
+ if( bOwn )
+ rItemSet.Put( aAttr );
+ else
+ rItemSet.Put( aAttr, EE_CHAR_SHADOW );
+ }
+
+ if( bOwn )
+ {
+ rItemSet.Put( pFont->GetFontItem() );
+ rItemSet.Put( pFont->GetHeightItem() );
+ rItemSet.Put( *pExcRoot->pColor->GetColor( pFont->nColor ) );
+ rItemSet.Put( aWeightItem );
+ rItemSet.Put( aUndItem );
+ }
+ else
+ {
+ SvxFontItem aFontItem = pFont->GetFontItem();
+
+ if( aFontItem.GetCharSet() == *pExcRoot->pCharset )
+ aFontItem.GetCharSet() = GetSystemCharSet();
+
+ rItemSet.Put( aFontItem, EE_CHAR_FONTINFO );
+
+ SvxFontHeightItem& rHeightItem = pFont->GetHeightItem();
+ long nOldHeight = rHeightItem.GetHeight();
+ long nNewHeight = ( long ) ( HMM_PER_TWIPS * nOldHeight );
+
+ rHeightItem.SetHeightValue( nNewHeight );
+
+ rItemSet.Put( rHeightItem, EE_CHAR_FONTHEIGHT );
+
+ rHeightItem.SetHeightValue( nOldHeight );
+
+ rItemSet.Put( *pExcRoot->pColor->GetColor( pFont->nColor ), EE_CHAR_COLOR );
+ rItemSet.Put( aWeightItem, EE_CHAR_WEIGHT );
+ rItemSet.Put( aUndItem, EE_CHAR_UNDERLINE );
+ }
+}
+
+
+void FontBuffer::Reset( void )
+{
+ register ScExcFont* pDel = ( ScExcFont* ) List::First();
+
+ while( pDel )
+ {
+ if( pDel )
+ delete pDel;
+ pDel = ( ScExcFont* ) List::Next();
+ }
+ Clear();
+}
+
+
+BOOL FontBuffer::HasSuperOrSubscript( const UINT16 n ) const
+{
+ const ScExcFont* p = ( const ScExcFont* ) GetObject( n );
+
+ if( p )
+ return p->nScript != 0x00;
+ else
+ return FALSE;
+}
+
+
+SvxWeightItem FontBuffer::GetWeight( const UINT16 nWeight )
+{
+ SvxWeightItem aWeightItem;
+
+ if( !nWeight )
+ aWeightItem = WEIGHT_DONTKNOW;
+ else if( nWeight < 150 )
+ aWeightItem = WEIGHT_THIN;
+ else if( nWeight < 250 )
+ aWeightItem = WEIGHT_ULTRALIGHT;
+ else if( nWeight < 325 )
+ aWeightItem = WEIGHT_LIGHT;
+ else if( nWeight < 375 )
+ aWeightItem = WEIGHT_SEMILIGHT;
+ else if( nWeight < 450 )
+ aWeightItem = WEIGHT_NORMAL;
+ else if( nWeight < 550 )
+ aWeightItem = WEIGHT_MEDIUM;
+ else if( nWeight < 650 )
+ aWeightItem = WEIGHT_SEMIBOLD;
+ else if( nWeight < 750 )
+ aWeightItem = WEIGHT_BOLD;
+ else if( nWeight < 850 )
+ aWeightItem = WEIGHT_ULTRABOLD;
+ else
+ aWeightItem = WEIGHT_BLACK;
+
+ return aWeightItem;
+}
+
+
+
+
+void LotusFontBuffer::Fill( const UINT8 nIndex, SfxItemSet& rItemSet )
+{
+ UINT8 nIntIndex = nIndex & 0x07;
+
+ ENTRY* pAkt = pData + nIntIndex;
+
+ if( pAkt->pFont )
+ rItemSet.Put( *pAkt->pFont );
+
+ if( pAkt->pHeight )
+ rItemSet.Put( *pAkt->pHeight );
+
+ if( pAkt->pColor )
+ rItemSet.Put( *pAkt->pColor );
+
+ if( nIndex & 0x08 )
+ {
+ SvxWeightItem aWeightItem( WEIGHT_BOLD );
+ rItemSet.Put( aWeightItem );
+ }
+
+ if( nIndex & 0x10 )
+ {
+ SvxPostureItem aAttr( ITALIC_NORMAL );
+ rItemSet.Put( aAttr );
+ }
+
+ FontUnderline eUnderline;
+ switch( nIndex & 0x60 ) // Bit 5+6
+ {
+ case 0x60:
+ case 0x20: eUnderline = UNDERLINE_SINGLE; break;
+ case 0x40: eUnderline = UNDERLINE_DOUBLE; break;
+ default: eUnderline = UNDERLINE_NONE;
+ }
+ if( eUnderline != UNDERLINE_NONE )
+ {
+ SvxUnderlineItem aUndItem( eUnderline );
+ rItemSet.Put( aUndItem );
+ }
+}
+
+
+void LotusFontBuffer::SetName( const UINT16 nIndex, const String& rName )
+{
+ DBG_ASSERT( nIndex < nSize, "*LotusFontBuffer::SetName(): Array zu klein!" );
+ if( nIndex < nSize )
+ {
+ register ENTRY* pEntry = pData + nIndex;
+ pEntry->TmpName( rName );
+
+ if( pEntry->nType >= 0 )
+ MakeFont( pEntry );
+ }
+}
+
+
+void LotusFontBuffer::SetHeight( const UINT16 nIndex, const UINT16 nHeight )
+{
+ DBG_ASSERT( nIndex < nSize, "*LotusFontBuffer::SetHeight(): Array zu klein!" );
+ if( nIndex < nSize )
+ pData[ nIndex ].Height( *( new SvxFontHeightItem( ( ULONG ) nHeight * 20 ) ) );
+}
+
+
+void LotusFontBuffer::SetType( const UINT16 nIndex, const UINT16 nType )
+{
+ DBG_ASSERT( nIndex < nSize, "*LotusFontBuffer::SetType(): Array zu klein!" );
+ if( nIndex < nSize )
+ {
+ register ENTRY* pEntry = pData + nIndex;
+ pEntry->Type( nType );
+
+ if( pEntry->pTmpName )
+ MakeFont( pEntry );
+ }
+}
+
+
+void LotusFontBuffer::MakeFont( ENTRY* pEntry )
+{
+ FontFamily eFamily = FAMILY_DONTKNOW;
+ FontPitch ePitch = PITCH_DONTKNOW;
+ CharSet eCharSet = RTL_TEXTENCODING_DONTKNOW;
+
+ switch( pEntry->nType )
+ {
+ case 0x00: // Helvetica
+ eFamily = FAMILY_SWISS;
+ ePitch = PITCH_VARIABLE;
+ break;
+ case 0x01: // Times Roman
+ eFamily = FAMILY_ROMAN;
+ ePitch = PITCH_VARIABLE;
+ break;
+ case 0x02: // Courier
+ ePitch = PITCH_FIXED;
+ break;
+ case 0x03: // Symbol
+ eCharSet = RTL_TEXTENCODING_SYMBOL;
+ break;
+ }
+
+ pEntry->pFont = new SvxFontItem( eFamily, *pEntry->pTmpName, EMPTY_STRING, ePitch, eCharSet );
+
+ delete pEntry->pTmpName;
+ pEntry->pTmpName = NULL;
+}
+
+
+
diff --git a/sc/source/filter/excel/frmbase.cxx b/sc/source/filter/excel/frmbase.cxx
new file mode 100644
index 000000000000..c34165753243
--- /dev/null
+++ b/sc/source/filter/excel/frmbase.cxx
@@ -0,0 +1,278 @@
+/*************************************************************************
+ *
+ * $RCSfile: frmbase.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#include "formel.hxx"
+
+
+
+
+_ScRangeList::~_ScRangeList()
+ {
+ ScRange* p = ( ScRange* ) First();
+
+ while( p )
+ {
+ delete p;
+ p = ( ScRange* ) Next();
+ }
+ }
+
+
+
+
+_ScRangeListTabs::_ScRangeListTabs( void )
+ {
+ ppTabLists = new _ScRangeList*[ MAXTAB + 1 ];
+
+ for( UINT16 n = 0 ; n <= MAXTAB ; n++ )
+ ppTabLists[ n ] = NULL;
+
+ bHasRanges = FALSE;
+ pAct = NULL;
+ nAct = 0;
+ }
+
+
+_ScRangeListTabs::~_ScRangeListTabs()
+ {
+ if( bHasRanges )
+ {
+ for( UINT16 n = 0 ; n <= MAXTAB ; n++ )
+ {
+ if( ppTabLists[ n ] )
+ delete ppTabLists[ n ];
+ }
+ }
+
+ delete[] ppTabLists;
+ }
+
+
+void _ScRangeListTabs::Append( SingleRefData a, const BOOL b )
+ {
+ if( b )
+ {
+ if( a.nTab > MAXTAB )
+ a.nTab = MAXTAB;
+
+ if( a.nCol > MAXCOL )
+ a.nCol = MAXCOL;
+
+ if( a.nRow > MAXROW )
+ a.nRow = MAXROW;
+ }
+ else
+ {
+ DBG_ASSERT( a.nTab <= MAXTAB, "-_ScRangeListTabs::Append(): Luegen haben kurze Abstuerze!" );
+ }
+
+ bHasRanges = TRUE;
+
+ _ScRangeList* p = ppTabLists[ a.nTab ];
+
+ if( !p )
+ p = ppTabLists[ a.nTab ] = new _ScRangeList;
+
+ p->Append( a );
+ }
+
+
+void _ScRangeListTabs::Append( ComplRefData a, const BOOL b )
+ {
+ if( b )
+ {
+ INT16& rTab = a.Ref1.nTab;
+ if( rTab > MAXTAB )
+ rTab = MAXTAB;
+ else if( rTab < 0 )
+ rTab = 0;
+
+ INT16& rCol1 = a.Ref1.nCol;
+ if( rCol1 > MAXCOL )
+ rCol1 = MAXCOL;
+ else if( rCol1 < 0 )
+ rCol1 = 0;
+
+ INT16& rRow1 = a.Ref1.nRow;
+ if( rRow1 > MAXROW )
+ rRow1 = MAXROW;
+ else if( rRow1 < 0 )
+ rRow1 = 0;
+
+ INT16& rCol2 = a.Ref2.nCol;
+ if( rCol2 > MAXCOL )
+ rCol2 = MAXCOL;
+ else if( rCol2 < 0 )
+ rCol2 = 0;
+
+ INT16& rRow2 = a.Ref2.nRow;
+ if( rRow2 > MAXROW )
+ rRow2 = MAXROW;
+ else if( rRow2 < 0 )
+ rRow2 = 0;
+ }
+ else
+ {
+ DBG_ASSERT( a.Ref1.nTab <= MAXTAB,
+ "-_ScRangeListTabs::Append(): Luegen haben kurze Abstuerze!" );
+ DBG_ASSERT( a.Ref1.nTab == a.Ref2.nTab,
+ "+_ScRangeListTabs::Append(): 3D-Ranges werden in SC nicht unterstuetzt!" );
+ }
+
+ bHasRanges = TRUE;
+
+ _ScRangeList* p = ppTabLists[ a.Ref1.nTab ];
+
+ if( !p )
+ p = ppTabLists[ a.Ref1.nTab ] = new _ScRangeList;
+
+ p->Append( a );
+ }
+
+
+const ScRange* _ScRangeListTabs::First( const UINT16 n )
+ {
+ DBG_ASSERT( n <= MAXTAB, "-_ScRangeListTabs::First(): Und tschuessssssss!" );
+
+ if( ppTabLists[ n ] )
+ {
+ pAct = ppTabLists[ n ];
+ nAct = n;
+ return pAct->First();
+ }
+ else
+ {
+ pAct = NULL;
+ nAct = 0;
+ return NULL;
+ }
+ }
+
+
+const ScRange* _ScRangeListTabs::Next( void )
+ {
+ if( pAct )
+ return pAct->Next();
+ else
+ return NULL;
+ }
+
+
+
+
+ConverterBase::ConverterBase( SvStream &rStr, UINT16 nNewBuffer ) :
+ aIn( rStr ),
+ aEingPos( ( UINT16 ) 0, ( UINT16 ) 0, ( UINT16 ) 0 )
+ {
+ DBG_ASSERT( nNewBuffer > 0, "-ExcelToSc::ExcelToSc(): nNewBuffer == 0!" );
+
+ pBuffer = new sal_Char[ nNewBuffer ];
+
+ nBufferSize = nNewBuffer;
+ nBytesLeft = 0;
+ eStatus = ConvOK;
+ }
+
+
+ConverterBase::~ConverterBase()
+ {
+ delete[] pBuffer;
+ }
+
+
+void ConverterBase::Reset( INT32 nLen, ScAddress aNewEingPos )
+ {
+ nBytesLeft = nLen;
+ eStatus = ConvOK;
+ aEingPos = aNewEingPos;
+ aPool.Reset();
+ aStack.Reset();
+ }
+
+
+void ConverterBase::Reset( INT32 nLen )
+ {
+ nBytesLeft = nLen;
+ eStatus = ConvOK;
+ aEingPos.Set( 0, 0, 0 );
+ aPool.Reset();
+ aStack.Reset();
+ }
+
+
+void ConverterBase::Reset( ScAddress aNewEingPos )
+ {
+ nBytesLeft = 0;
+ eStatus = ConvOK;
+ aEingPos = aNewEingPos;
+ aPool.Reset();
+ aStack.Reset();
+ }
+
+
+
diff --git a/sc/source/filter/excel/impop.cxx b/sc/source/filter/excel/impop.cxx
new file mode 100644
index 000000000000..3d6bfaa28798
--- /dev/null
+++ b/sc/source/filter/excel/impop.cxx
@@ -0,0 +1,2998 @@
+/*************************************************************************
+ *
+ * $RCSfile: impop.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#include "scitems.hxx"
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <svx/editdata.hxx>
+#include <svx/editeng.hxx>
+#include <svx/editobj.hxx>
+#include <svx/editstat.hxx>
+#include <svx/flditem.hxx>
+#include <svx/lrspitem.hxx>
+#include <svx/pageitem.hxx>
+#include <svx/paperinf.hxx>
+#include <svx/sizeitem.hxx>
+#include <svx/ulspitem.hxx>
+#include <sfx2/inimgr.hxx>
+#include <svtools/zforlist.hxx>
+#include <tools/solmath.hxx>
+
+#if defined( WNT ) || defined( WIN )
+#include <math.h>
+#else
+#include <stdlib.h>
+#endif
+
+#include "cell.hxx"
+#include "document.hxx"
+#include "rangenam.hxx"
+#include "compiler.hxx"
+#include "patattr.hxx"
+#include "attrib.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "markdata.hxx"
+#include "olinetab.hxx"
+#include "stlsheet.hxx"
+#include "stlpool.hxx"
+#include "compiler.hxx"
+#include "viewopti.hxx"
+#include "docoptio.hxx"
+#include "scextopt.hxx"
+#include "editutil.hxx"
+
+#include "imp_op.hxx"
+#include "excimp8.hxx"
+#include "xfbuff.hxx"
+#include "vfbuff.hxx"
+#include "fontbuff.hxx"
+#include "spstring.hxx"
+#include "excform.hxx"
+#include "flttools.hxx"
+
+
+
+
+const double ImportExcel::fExcToTwips =
+ ( double ) TWIPS_PER_CHAR / 256.0;
+
+
+
+
+#define EXCTOSTR( s ) String( s, eQuellChar )
+#define ASSTOSTR( s ) s, eQuellChar
+
+
+ImportExcel::ImportExcel( SvStream& aStream, ScDocument* pDoc ):
+ ImportTyp( aStream, pDoc, RTL_TEXTENCODING_MS_1252 ),
+ aColOutlineBuff( MAXCOL + 1 ), aRowOutlineBuff( MAXROW + 1 )
+{
+ pChart = pUsedChartFirst = pUsedChartLast = NULL;
+
+ aColRowBuff.SetDefWidth( STD_COL_WIDTH );
+ aColRowBuff.SetDefHeight( ( UINT16 ) STD_ROW_HEIGHT );
+ nTab = nBdshtTab = 0;
+ nIxfeIndex = 0; // zur Sicherheit auf 0
+ aExtNameBuff.SetBase( 1 );
+
+ pPrintRanges = new _ScRangeListTabs;
+ pPrintTitles = new _ScRangeListTabs;
+
+ pStyleSheetItemSet = NULL;
+
+ // Root-Daten fuellen - nach new's ohne Root als Parameter
+
+ pExcRoot = new RootData;
+ pExcRoot->pDoc = pDoc;
+ pExcRoot->pFormTable = pDoc->GetFormatTable();
+ pExcRoot->pScRangeName = pDoc->GetRangeName();
+ pExcRoot->pColor = new ColorBuffer( pExcRoot );
+ pExcRoot->pFontBuffer = new FontBuffer( pExcRoot );
+ pExcRoot->eDefLanguage = ScGlobal::eLnge; //LANGUAGE_SYSTEM;
+ pExcRoot->aStandard.AssignAscii( "General" );
+ pExcRoot->eDateiTyp = pExcRoot->eHauptDateiTyp = pExcRoot->eGlobalDateiTyp = BiffX;
+ pExcRoot->pExtSheetBuff = new ExtSheetBuffer( pExcRoot ); //&aExtSheetBuff;
+ pExcRoot->pTabNameBuff = new NameBuffer( pExcRoot ); //&aTabNameBuff;
+ pExcRoot->pRNameBuff = new RangeNameBuffer( pExcRoot ); //&aRangeNameBuff;
+ pExcRoot->pShrfmlaBuff = new ShrfmlaBuffer( pExcRoot ); //&aShrfrmlaBuff;
+ pExcRoot->pExtNameBuff = new ExtNameBuff;
+ pExcRoot->pAktTab = &nTab; // nicht schoen, aber einfach
+ pExcRoot->pCharset = &eQuellChar; // dto.
+ pExcRoot->pExtDocOpt = new ScExtDocOptions;
+ if( pDoc->GetExtDocOptions() )
+ *pExcRoot->pExtDocOpt = *pDoc->GetExtDocOptions();
+ pExcRoot->pProgress = NULL;
+ pExcRoot->pEdEng = NULL;
+ pExcRoot->pEdEngHF = NULL;
+ pExcRoot->pXF_Buffer = new XF_Buffer( pExcRoot );
+
+ // ab Biff8
+ pExcRoot->nCondRangeCnt = ( UINT32 ) -1; // GetCondFormStyleName() starts with increment!
+
+ aColRowBuff.Set( pExcRoot );
+ aExtNameBuff.Set( pExcRoot );
+
+ pFltTab = new FltTabelle( pExcRoot );
+
+ pValueFormBuffer = new ValueFormBuffer( pExcRoot );
+
+ pFormConv = new ExcelToSc( pExcRoot, aStream, nTab );
+
+ bTabTruncated = FALSE;
+
+ pAutoFilter = new AutoFilterBuffer;
+
+ // Optionen aus INI-File
+ SfxIniManager* pIniManager = SFX_INIMANAGER();
+ String aColScale = pIniManager->Get( SFX_GROUP_COMMON, _STRINGCONST( "EXCELCOLSCALE" ) );
+ String aRowScale = pIniManager->Get( SFX_GROUP_COMMON, _STRINGCONST( "EXCELROWSCALE" ) );
+ const International& rIntl = *ScGlobal::pScInternational;
+ DBG_ASSERT( ScGlobal::pScInternational, "-ImportExcel::ImportExcel(): International puddemacht?!" );
+ int nDummy;
+
+ pExcRoot->fColScale = SolarMath::StringToDouble( aColScale.GetBuffer(), rIntl, nDummy );
+ if( pExcRoot->fColScale <= 0.0 )
+ pExcRoot->fColScale = 1.0;
+
+ pExcRoot->fRowScale = SolarMath::StringToDouble( aRowScale.GetBuffer(), rIntl, nDummy );
+ if( pExcRoot->fRowScale <= 0.0 )
+ pExcRoot->fRowScale = 1.0;
+
+ pExcRoot->bBreakSharedFormula = FALSE;
+ pExcRoot->bChartTab = FALSE;
+
+ // Excel-Dokument per Default auf 31.12.1899, entspricht Excel-Einstellungen mit 1.1.1900
+ ScDocOptions aOpt = pD->GetDocOptions();
+ aOpt.SetDate( 30, 12, 1899 );
+ pD->SetDocOptions( aOpt );
+ pD->GetFormatTable()->ChangeNullDate( 30, 12, 1899 );
+}
+
+
+ImportExcel::~ImportExcel( void )
+{
+ delete pPrintRanges;
+ delete pPrintTitles;
+
+ pExcRoot->pDoc->SetSrcCharSet( eQuellChar );
+
+ delete pFormConv;
+ delete pValueFormBuffer;
+
+ delete pFltTab;
+
+ delete pExcRoot;
+}
+
+
+void ImportExcel::Dimensions( void )
+{
+ if( nBytesLeft < 8 ) // hack for Applix-rubbish
+ return;
+
+ UINT16 nRowFirst, nRowLast, nColFirst, nColLast;
+
+ aIn >> nRowFirst >> nRowLast >> nColFirst >> nColLast;
+
+ aColRowBuff.SetDimension(
+ ScRange( nColFirst, nRowFirst, nTab, nColLast, nRowLast, nTab ) );
+}
+
+
+void ImportExcel::Blank25( void )
+{
+ UINT16 nRow, nCol, nXF;
+
+ aIn >> nRow >> nCol;
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {
+ aIn.SeekRel( 3 );
+ nXF = 0;
+ }
+ else
+ aIn >> nXF;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ aColRowBuff.Used( nCol, nRow );
+ pFltTab->SetXF( nCol, nRow, nXF, TRUE );
+ }
+ else
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Integer( void )
+{
+ UINT16 nRow, nCol, nInt;
+
+ aIn >> nRow >> nCol;
+ aIn.SeekRel( 3 );
+ aIn >> nInt;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ ScValueCell* pZelle = new ScValueCell( nInt );
+
+ pD->PutCell( nCol, nRow, nTab, pZelle, (BOOL) TRUE );
+ aColRowBuff.Used( nCol, nRow );
+ pFltTab->SetXF( nCol, nRow, 0 );
+ }
+ else
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Number25( void )
+{
+ UINT16 nRow, nCol, nXF;
+ double fValue;
+
+ aIn >> nRow >> nCol;
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {
+ aIn.SeekRel( 3 );
+ nXF = 0;
+ }
+ else
+ aIn >> nXF;
+
+ aIn >> fValue;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ ScValueCell* pZelle = new ScValueCell( fValue );
+
+ pD->PutCell( nCol, nRow, nTab, pZelle, (BOOL) TRUE );
+ aColRowBuff.Used( nCol, nRow );
+
+ pFltTab->SetXF( nCol, nRow, nXF );
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Label25( void )
+{
+ UINT16 nR, nC, nXF;
+ StringInfoLen eLen;
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {// nur fuer BIFF2
+ BYTE nAttr0, nAttr1, nAttr2;
+
+ aIn >> nR >> nC >> nAttr0 >> nAttr1 >> nAttr2;
+
+ nXF = nAttr0 & 0x3F;
+ if( nXF == 63 )
+ // IXFE-record stand davor
+ nXF = nIxfeIndex;
+
+ eLen = LenByte;
+ }
+ else
+ {
+ aIn >> nR >> nC >> nXF;
+
+ eLen = LenWord;
+ }
+
+ SetTextCell( nC, nR, ReadExcString( eLen ), nXF );
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Boolerr25( void )
+{
+ UINT16 nRow, nCol, nXF;
+ BYTE bErrOrVal, nError;
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {// nur fuer BIFF2
+ BYTE nAttr0, nAttr1, nAttr2;
+
+ aIn >> nRow >> nCol >> nAttr0 >> nAttr1 >> nAttr2;
+
+ nXF = nAttr0 & 0x3F;
+ if( nXF == 63 )
+ // IXFE-record stand davor
+ nXF = nIxfeIndex;
+ }
+ else
+ aIn >> nRow >> nCol >> nXF;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ double fVal;
+ const ScTokenArray *pErgebnis;
+
+ aIn >> nError >> bErrOrVal;
+
+ // Simulation ueber Formelzelle!
+ pErgebnis = ErrorToFormula( bErrOrVal, nError, fVal );
+
+ ScFormulaCell *pZelle = new ScFormulaCell(
+ pD, ScAddress( nCol, nRow, nTab ), pErgebnis );
+
+ pZelle->SetDouble( fVal );
+
+ pD->PutCell( nCol, nRow, nTab, pZelle, (BOOL)TRUE );
+
+ aColRowBuff.Used( nCol, nRow );
+
+ pFltTab->SetXF( nCol, nRow, nXF );
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::RecString( void )
+{
+ if( pLastFormCell )
+ {
+ ByteString aText;
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ ReadExcString( LenByte, aText );
+ else
+ ReadExcString( LenWord, aText );
+
+ pLastFormCell->SetString( EXCTOSTR( aText ) );
+
+ pLastFormCell = NULL;
+ }
+}
+
+
+void ImportExcel::Row25( void )
+{
+ UINT16 nRow, nRowHeight;
+
+ aIn >> nRow;
+ aIn.SeekRel( 4 ); // Mic und Mac ueberspringen
+
+ if( nRow <= MAXROW )
+ {
+ aIn >> nRowHeight; // direkt in Twips angegeben
+ aIn.SeekRel( 2 );
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {// -------------------- BIFF2
+ nRowHeight = ( UINT16 ) ( ( double ) nRowHeight * pExcRoot->fRowScale );
+ aColRowBuff.SetHeight( nRow, nRowHeight );
+ }
+ else
+ {// -------------------- BIFF5
+ UINT16 nGrbit;
+
+ aIn.SeekRel( 2 ); // reserved
+ aIn >> nGrbit;
+
+ aRowOutlineBuff.SetLevel( nRow, EXC_ROW_GETLEVEL( nGrbit ),
+ TRUEBOOL( nGrbit & EXC_ROW_COLLAPSED ), TRUEBOOL( nGrbit & EXC_ROW_ZEROHEIGHT ) );
+
+ aColRowBuff.SetRowSettings( nRow, nRowHeight, nGrbit );
+ }
+ }
+}
+
+
+void ImportExcel::Bof2( void )
+{
+ //POST: eDateiTyp = Biff2
+ UINT16 nTyp;
+
+ aIn.SeekRel( 2 );
+ aIn >> nTyp;
+
+ pExcRoot->eHauptDateiTyp = Biff2;
+
+ if( nTyp == 0x0010 ) // Worksheet?
+ {
+ pExcRoot->eDateiTyp = Biff2;
+ }
+ else if( nTyp == 0x0020 ) // Chart?
+ {
+ pExcRoot->eDateiTyp = Biff2C;
+ }
+ else if( nTyp == 0x0040 ) // Macro?
+ {
+ pExcRoot->eDateiTyp = Biff2M;
+ }
+ else
+ {
+ pExcRoot->eDateiTyp = BiffX;
+ pExcRoot->eHauptDateiTyp = BiffX;
+ }
+}
+
+
+void ImportExcel::Eof( void )
+{
+ // POST: darf nur nach einer GUELTIGEN Tabelle gerufen werden!
+ EndSheet();
+ nTab++;
+}
+
+
+BOOL ImportExcel::Password( void )
+{
+ // POST: return = TRUE, wenn Password <> 0
+ UINT16 nPasswd;
+
+ aIn >> nPasswd;
+
+ return nPasswd != 0x0000;
+}
+
+
+void ImportExcel::Header( void )
+{
+ if( nBytesLeft )
+ GetHF( TRUE );
+}
+
+
+void ImportExcel::Footer( void )
+{
+ if( nBytesLeft )
+ GetHF( FALSE );
+}
+
+
+void ImportExcel::Externsheet( void )
+{
+ String aFile;
+ String aTabName;
+ BYTE nLen;
+ BOOL bSameWorkBook = FALSE;
+
+ aIn >> nLen;
+ EncodeExternSheet( aIn, aFile, aTabName, nBytesLeft, bSameWorkBook, nLen, FALSE );
+ ExcelNameToScName( aTabName );
+ pExcRoot->pExtSheetBuff->Add( aFile, aTabName, bSameWorkBook );
+}
+
+
+void ImportExcel::Name25( void )
+{
+ const ScTokenArray* pErgebnis;
+ UINT16 nLenDef;
+ ByteString _aName;
+ BYTE nLenName, nLen;
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {// --------------------------------------------------- Biff2
+ BYTE nAttr0, nAttr1, nLenExpr;
+
+ aIn >> nAttr0 >> nAttr1;
+ aIn.SeekRel( 1 );
+ aIn >> nLenName >> nLenExpr;
+ nBytesLeft -= 5;
+
+ pFormConv->Reset( nLenExpr );
+
+ // Namen einlesen
+ AppendString( aIn, _aName, nLenName );
+ nBytesLeft -= nLenName;
+
+
+ String aName( ASSTOSTR( _aName ) );
+ ExcelNameToScName( aName );
+
+ if( nAttr0 & 0x02 )
+ // function or command?
+ pFormConv->GetDummy( pErgebnis );
+ else // ...oder nur Formel
+ { // Parsed expression Scannen
+ long nAnzBytes = nLenExpr; // nLenExpr = Anz. Bytes VOR Read
+ pFormConv->Convert( pErgebnis, nAnzBytes, FT_RangeName );
+ }
+
+ pExcRoot->pRNameBuff->Store( aName, pErgebnis );
+
+ aIn.SeekRel( 1 ); // cceDup ueberfluessig
+ nBytesLeft--;
+ }// ------------------------------------------Ende fuer Biff2
+ else
+ {// --------------------------------------------------- Biff5
+ UINT16 nOpt;
+ UINT16 nLenSeekRel = 0;
+ UINT16 nSheet;
+ ByteString _aName;
+
+ aIn >> nOpt;
+ aIn.SeekRel( 1 );
+ aIn >> nLenName >> nLenDef >> nSheet;
+ aIn.SeekRel( 2 );
+ aIn >> nLen; // length of custom menu text
+ nLenSeekRel += nLen;
+ aIn >> nLen; // length of description text
+ nLenSeekRel += nLen;
+ aIn >> nLen; // length of help topic text
+ nLenSeekRel += nLen;
+ aIn >> nLen; // length of status bar text
+ nLenSeekRel += nLen;
+ nBytesLeft -= 14;
+
+ pFormConv->Reset( nLenDef );
+
+ // Namen einlesen
+ AppendString( aIn, _aName, nLenName );
+ nBytesLeft -= nLenName;
+ // jetzt steht Lesemarke an der Formel
+
+ String aName( ASSTOSTR( _aName ) );
+
+ const UINT32 nFormStart = aIn.Tell();
+ const BOOL bHidden = TRUEBOOL( nOpt & EXC_NAME_HIDDEN );
+ const BOOL bBuildIn = TRUEBOOL( nOpt & EXC_NAME_BUILTIN );
+
+ sal_Char cFirstNameChar = aName.GetChar( 0 );
+ const BOOL bPrintArea = bBuildIn && ( cFirstNameChar == EXC_BUILTIN_PRINTAREA );
+ const BOOL bPrintTitles = bBuildIn && ( cFirstNameChar == EXC_BUILTIN_PRINTTITLES );
+
+ if( bBuildIn )
+ {// Build-in name
+ aName.AssignAscii( GetExcBuiltInName( cFirstNameChar ) );
+ }
+ else
+ ExcelNameToScName( aName );
+
+ if( nOpt & (EXC_NAME_VB | EXC_NAME_BIG) )
+ // function or command?
+ pFormConv->GetDummy( pErgebnis );
+ else if( bBuildIn )
+ {
+ if( bPrintArea )
+ {// Druckbereich
+ long nAnzBytes = nLenDef;
+ pFormConv->Convert( *pPrintRanges, nAnzBytes, FT_RangeName );
+ }
+ else if( bPrintTitles )
+ {// Druckbereich
+ long nAnzBytes = nLenDef;
+ pFormConv->Convert( *pPrintTitles, nAnzBytes, FT_RangeName );
+ }
+ aIn.Seek( nFormStart );
+
+ long nAnzBytes = nLenDef;
+ pFormConv->Convert( pErgebnis, nAnzBytes, FT_RangeName );
+ }
+ else // ...oder nur Formel
+ // Parsed expression Scannen
+ {
+ long nAnzBytes = nLenDef;
+ pFormConv->Convert( pErgebnis, nAnzBytes, FT_RangeName );
+ }
+
+ if( bHidden )
+ pExcRoot->pRNameBuff->Store( aName, NULL, nSheet );
+ else
+ // ohne hidden
+ pExcRoot->pRNameBuff->Store( aName, pErgebnis, nSheet, bPrintArea );
+ }// ----------------------------------------- Ende fuer Biff5
+}
+
+
+void ImportExcel::Verticalpagebreaks( void )
+{
+ UINT16 n;
+ UINT16 nCol;
+
+ aIn >> n;
+
+ while( n )
+ {
+ aIn >> nCol;
+
+ aColRowBuff.SetVertPagebreak( nCol );
+
+ n--;
+ }
+}
+
+
+void ImportExcel::Horizontalpagebreaks( void )
+{
+ UINT16 n;
+ UINT16 nRow;
+
+ aIn >> n;
+
+ while( n )
+ {
+ aIn >> nRow;
+
+ aColRowBuff.SetHorizPagebreak( nRow );
+
+ n--;
+ }
+}
+
+
+void ImportExcel::Note( void )
+{
+ UINT16 nCol, nRow;
+ ByteString aNote;
+
+ aIn >> nRow >> nCol;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ pD->SetNote( nCol, nRow, nTab, ScPostIt( EXCTOSTR( ReadExcString( LenWord ) ) ) );
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Selection( void )
+{
+ UINT16 nNumRefs, nFirstRow, nLastRow;
+ UINT8 nFirstCol, nLastCol;
+
+ aIn.SeekRel( 7 );
+
+ aIn >> nNumRefs;
+
+ if( nNumRefs )
+ {
+ nNumRefs--;
+
+ if( nNumRefs )
+ aIn.SeekRel( nNumRefs * 6 ); // nur letzte Selektion interessiert
+
+ aIn >> nFirstRow >> nLastRow >> nFirstCol >> nLastCol;
+
+ aColRowBuff.SetSelection( ScRange( ( UINT16 ) nFirstCol, nFirstRow, nTab,
+ ( UINT16 ) nLastCol, nLastRow, nTab ) );
+ }
+}
+
+
+void ImportExcel::Format235( void )
+{
+ ByteString aFormString;
+
+ if( pExcRoot->eHauptDateiTyp == Biff5 )
+ aIn.SeekRel( 2 );
+
+ pValueFormBuffer->NewValueFormat( EXCTOSTR( ReadExcString( LenByte ) ) );
+}
+
+
+void ImportExcel::Formatcount( void )
+{
+}
+
+
+void ImportExcel::Columndefault( void )
+{// Default Cell Attributes
+ UINT16 nColMic, nColMac;
+ BYTE nOpt0;
+
+ aIn >> nColMic >> nColMac;
+
+ DBG_ASSERT( nBytesLeft - 4 == ( INT32 ) ( nColMac - nColMic ) * 3,
+ "+ImportExcel::Columndefault(): Wie jetzt?!!..." );
+
+ nColMac--;
+
+ if( nColMac > MAXCOL )
+ nColMac = MAXCOL;
+
+ for( UINT16 nCol = nColMic ; nCol <= nColMac ; nCol++ )
+ {
+ aIn >> nOpt0;
+ aIn.SeekRel( 2 ); // nur 0. Attribut-Byte benutzt
+
+ if( nOpt0 & 0x80 ) // Col hidden?
+ aColRowBuff.HideCol( nCol );
+ }
+}
+
+
+void ImportExcel::Array25( void )
+{
+ UINT16 nFirstRow, nLastRow, nFormLen;
+ BYTE nFirstCol, nLastCol;
+
+ aIn >> nFirstRow >> nLastRow >> nFirstCol >> nLastCol;
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {// BIFF2
+ BYTE nDummy;
+ aIn.SeekRel( 1 );
+ aIn >> nDummy;
+
+ nFormLen = nDummy;
+ }
+ else
+ {// BIFF5
+ aIn.SeekRel( 6 );
+ aIn >> nFormLen;
+ }
+
+ if( nLastRow <= MAXROW && nLastCol <= MAXCOL )
+ {
+ // jetzt steht Lesemarke auf Formel, Laenge in nFormLen
+ const ScTokenArray* pErgebnis;
+
+ pFormConv->Reset( nFormLen, ScAddress( nFirstCol, nFirstRow, nTab ) );
+
+ long nAnzBytes = nFormLen;
+
+ pFormConv->Convert( pErgebnis, nAnzBytes );
+ nBytesLeft += nAnzBytes - nFormLen;
+
+ DBG_ASSERT( pErgebnis, "*ImportExcel::Array25(): ScTokenArray ist NULL!" );
+
+ ScMarkData aMarkData;
+ aMarkData.SelectOneTable( nTab );
+ pD->InsertMatrixFormula(
+ nFirstCol, nFirstRow, nLastCol, nLastRow, aMarkData,
+ EMPTY_STRING, pErgebnis );
+
+ UINT16 nRowCnt, nColCnt;
+
+ for( nColCnt = nFirstCol + 1 ; nColCnt <= nLastCol ; nColCnt++ )
+ for( nRowCnt = nFirstRow ; nRowCnt <= nLastRow ; nRowCnt++ )
+ {
+ pFltTab->SetXF( nColCnt, nRowCnt, nLastXF );
+ aColRowBuff.Used( nColCnt, nRowCnt );
+ }
+ }
+}
+
+
+void ImportExcel::Rec1904( void )
+{
+ UINT16 n1904;
+
+ aIn >> n1904;
+
+ if( n1904 )
+ {// 1904 date system
+ ScDocOptions aOpt = pD->GetDocOptions();
+ aOpt.SetDate( 1, 1, 1904 );
+ pD->SetDocOptions( aOpt );
+ pD->GetFormatTable()->ChangeNullDate( 1, 1, 1904 );
+ }
+}
+
+
+void ImportExcel::Externname25( void )
+{
+ UINT32 nRes;
+ UINT16 nOpt;
+ UINT16 nLenExpr = 0;
+
+ aIn >> nOpt >> nRes;
+
+ String aName( ASSTOSTR( ReadExcString( LenByte ) ) );
+
+ if( ( nOpt & 0x0001 ) || ( ( nOpt & 0xFFFE ) == 0x0000 ) )
+ {// external name
+ ExcelNameToScName( aName );
+ pExcRoot->pExtNameBuff->AddName( aName );
+ }
+ else if( nOpt & 0x0010 )
+ {// ole link
+ pExcRoot->pExtNameBuff->AddOLE( aName, nRes ); // nRes is storage ID
+ }
+ else
+ {// dde link
+ pExcRoot->pExtNameBuff->AddDDE( aName );
+ }
+}
+
+
+void ImportExcel::Colwidth( void )
+{// Column Width
+ BYTE nColFirst, nColLast;
+ UINT16 nColWidth;
+
+ aIn >> nColFirst >> nColLast >> nColWidth;
+
+ if( nColLast > MAXCOL )
+ nColLast = MAXCOL;
+
+ aColRowBuff.SetWidthRange( nColFirst, nColLast, CalcColWidth( nColWidth ) );
+}
+
+
+void ImportExcel::Defrowheight2( void )
+{
+ UINT16 nDef;
+
+ aIn >> nDef;
+
+ nDef &=0x7FFF;
+ nDef = ( UINT16 ) ( ( double ) nDef * pExcRoot->fRowScale );
+
+ aColRowBuff.SetDefHeight( nDef );
+}
+
+
+void ImportExcel::Leftmargin( void )
+{
+ GetAndSetMargin( IMPEXC_MARGINSIDE_LEFT );
+}
+
+
+void ImportExcel::Rightmargin( void )
+{
+ GetAndSetMargin( IMPEXC_MARGINSIDE_RIGHT );
+}
+
+
+void ImportExcel::Topmargin( void )
+{
+ GetAndSetMargin( IMPEXC_MARGINSIDE_TOP );
+}
+
+
+void ImportExcel::Bottommargin( void )
+{
+ GetAndSetMargin( IMPEXC_MARGINSIDE_BOTTOM );
+}
+
+
+void ImportExcel::Printheaders( void )
+{
+ UINT16 nPrintHeaders;
+
+ aIn >> nPrintHeaders;
+
+ if( nPrintHeaders == 1 )
+ pStyleSheetItemSet->Put( SfxBoolItem( ATTR_PAGE_HEADERS, TRUE ) );
+ else
+ pStyleSheetItemSet->Put( SfxBoolItem( ATTR_PAGE_HEADERS, FALSE ) );
+}
+
+
+void ImportExcel::Prntgrdlns( void )
+{
+ UINT16 nPrintGrid;
+
+ aIn >> nPrintGrid;
+
+ if( nPrintGrid == 1 )
+ pStyleSheetItemSet->Put( SfxBoolItem( ATTR_PAGE_GRID, TRUE ) );
+ else
+ pStyleSheetItemSet->Put( SfxBoolItem( ATTR_PAGE_GRID, FALSE ) );
+}
+
+
+BOOL ImportExcel::Filepass( void )
+{
+ // POST: return = TRUE, wenn Password <> 0
+ UINT32 nPasswd;
+
+ aIn >> nPasswd;
+
+ return nPasswd != 0x00000000;
+}
+
+
+void ImportExcel::Font25( void )
+{
+ UINT16 nHeight, nIndexCol;
+ BYTE nAttr0;
+ ByteString aName;
+ FontBuffer* pFB = pExcRoot->pFontBuffer;
+
+ if( pExcRoot->eHauptDateiTyp == Biff2 )
+ {// Biff2
+ aIn >> nHeight >> nAttr0;
+ aIn.SeekRel( 1 );
+ nIndexCol = 32767;
+
+ pFB->NewFont( nHeight, nAttr0, nIndexCol, EXCTOSTR( ReadExcString( LenByte ) ) );
+ }
+ else
+ {// Biff5
+ BYTE nUnder, nFam, nChar;
+ UINT16 nWeight, nScript;
+
+ aIn >> nHeight >> nAttr0;
+ aIn.SeekRel( 1 );
+ aIn >> nIndexCol >> nWeight >> nScript >> nUnder >> nFam >> nChar;
+ aIn.SeekRel( 1 ); // Reserved
+
+ pFB->NewFont( nHeight, nAttr0, nScript, nUnder, nIndexCol, nWeight, nFam, nChar,
+ EXCTOSTR( ReadExcString( LenByte ) ) );
+ }
+}
+
+
+void ImportExcel::Pane( void )
+{
+ aColRowBuff.ReadSplit( aIn );
+}
+
+
+void ImportExcel::Codepage( void )
+{
+ UINT16 nPage;
+
+ aIn >> nPage;
+
+ switch( nPage )
+ {
+ case 0x01B5: // IBM PC 437 (Multiplan)
+ eQuellChar = RTL_TEXTENCODING_IBM_437;
+ break;
+ case 0x0352: // Herkunft ?
+ eQuellChar = RTL_TEXTENCODING_IBM_850;
+ break;
+ case 0x8000: // Apple Macintosh
+ case 0x2710: // ???????????????????????????????????????????????
+ eQuellChar = RTL_TEXTENCODING_APPLE_ROMAN;
+ break;
+ case 0x04E4: // ANSI (Windows ) Biff4+5
+ case 0x8001: // ANSI (Windows ) Biff2+3
+ eQuellChar = RTL_TEXTENCODING_MS_1252;
+ break;
+ }
+}
+
+
+void ImportExcel::XF2( void )
+{
+ BYTE nDummyFormat, nDummyFont, nAttr;
+ UINT16 nIndexFormat, nIndexFont;
+ CellBorder aBorder;
+ XF_Data* pXFD = new XF_Data;
+
+ pXFD->SetCellXF(); // keine Style-XFs in Biff2
+
+ aIn >> nDummyFont;
+ aIn.SeekRel( 1 );
+ aIn >> nDummyFormat;
+ aIn >> nAttr;
+
+ nIndexFormat = nDummyFormat & 0x3F;
+ nIndexFont = nDummyFont;
+
+ if( nAttr & 0x08 )
+ aBorder.nLeftLine = 1; // = durchgezogen, duenn
+ else
+ aBorder.nLeftLine = 0; // = keine Linie
+
+ if( nAttr & 0x10 )
+ aBorder.nRightLine = 1;
+ else
+ aBorder.nRightLine = 0;
+
+ if( nAttr & 0x20 )
+ aBorder.nTopLine = 1;
+ else
+ aBorder.nTopLine = 0;
+
+ if( nAttr & 0x40 )
+ aBorder.nBottomLine = 1;
+ else
+ aBorder.nBottomLine = 0;
+
+ aBorder.nLeftColor = aBorder.nRightColor = aBorder.nTopColor =
+ aBorder.nBottomColor = 8; // = schwarz?
+
+ pXFD->SetBorder( aBorder );
+ pXFD->SetFont( nIndexFont );
+ pXFD->SetValueFormat( pValueFormBuffer->GetValueFormat( nIndexFormat ) );
+ pXFD->SetAlign( ( ExcHorizAlign ) ( nAttr & 0x07 ) );
+ pXFD->SetAlign( EVA_Top );
+ pXFD->SetTextOrient( ETO_NoRot );
+ pXFD->SetLocked( TRUEBOOL( nDummyFormat & 0x40 ) );
+ pXFD->SetHidden( TRUEBOOL( nDummyFormat & 0x80 ) );
+
+ pExcRoot->pXF_Buffer->NewXF( pXFD );
+}
+
+
+void ImportExcel::Ixfe( void )
+{
+ aIn >> nIxfeIndex;
+}
+
+
+void ImportExcel::DefColWidth( void )
+{
+ UINT16 nWidth;
+ aIn >> nWidth;
+
+ aColRowBuff.SetDefWidth( CalcColWidth( (UINT16) ( (double)nWidth * 292.5 ) ) );
+}
+
+
+void ImportExcel::Builtinfmtcnt( void )
+{
+}
+
+
+void ImportExcel::Colinfo( void )
+{// Column Formatting Information
+ UINT16 nColFirst, nColLast, nColWidth, nXF;
+ UINT16 nOpt;
+
+ aIn >> nColFirst >> nColLast >> nColWidth >> nXF >> nOpt;
+
+ if( nColFirst > MAXCOL )
+ return;
+
+ if( nColLast > MAXCOL )
+ nColLast = MAXCOL;
+
+ aColOutlineBuff.SetLevelRange( nColFirst, nColLast, EXC_COL_GETLEVEL( nOpt ),
+ TRUEBOOL( nOpt & EXC_COL_COLLAPSED ), TRUEBOOL( nOpt & EXC_COL_HIDDEN ) );
+
+ if( nOpt & EXC_COL_HIDDEN ) // Cols hidden?
+ aColRowBuff.HideColRange( nColFirst, nColLast );
+
+ aColRowBuff.SetWidthRange( nColFirst, nColLast, CalcColWidth( nColWidth ) );
+
+ aColRowBuff.SetDefaultXF( nColFirst, nColLast, nXF );
+}
+
+
+void ImportExcel::Rk( void )
+{// Cell Value, RK Number
+ UINT16 nRow, nCol, nXF;
+ UINT32 nRkNum;
+
+ aIn >> nRow >> nCol >> nXF >> nRkNum;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ ScValueCell* pZelle = new ScValueCell( RkToDouble( nRkNum ) );
+
+ pD->PutCell( nCol, nRow, nTab, pZelle, (BOOL)TRUE );
+ aColRowBuff.Used( nCol, nRow );
+
+ pFltTab->SetXF( nCol, nRow, nXF );
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Wsbool( void )
+{
+ UINT16 nFlags;
+ aIn >> nFlags;
+
+ aRowOutlineBuff.SetButtonMode( TRUEBOOL( nFlags & 0x0040 ) );
+ aColOutlineBuff.SetButtonMode( TRUEBOOL( nFlags & 0x0080 ) );
+}
+
+
+void ImportExcel::Gridset( void )
+{
+}
+
+
+void ImportExcel::Hcenter( void )
+{
+ DBG_ASSERT( pStyleSheetItemSet, "-ImportExcel::Hcenter(): kein StyleSheet - Schiet!" );
+ UINT16 nCenter;
+ aIn >> nCenter;
+ if( nCenter == 1 )
+ pStyleSheetItemSet->Put( SfxBoolItem( ATTR_PAGE_HORCENTER, TRUE ) );
+}
+
+
+void ImportExcel::Vcenter( void )
+{
+ DBG_ASSERT( pStyleSheetItemSet, "-ImportExcel::Vcenter(): kein StyleSheet - Schiet!" );
+ UINT16 nCenter;
+ aIn >> nCenter;
+ if( nCenter == 1 )
+ pStyleSheetItemSet->Put( SfxBoolItem( ATTR_PAGE_VERCENTER, TRUE ) );
+}
+
+
+void ImportExcel::Boundsheet( void )
+{
+ UINT16 nGrbit;
+
+ if( pExcRoot->eHauptDateiTyp == Biff5 )
+ {
+ aIn.SeekRel( 4 );
+ aIn >> nGrbit;
+ }
+ else
+ nGrbit = 0x0000;
+
+ String aName( ASSTOSTR( ReadExcString( LenByte ) ) );
+
+ ExcelNameToScName( aName );
+
+ *pExcRoot->pTabNameBuff << aName;
+
+ if( nBdshtTab > 0 )
+ {
+ DBG_ASSERT( !pD->HasTable( nBdshtTab ), "*ImportExcel::Boundsheet(): Tabelle schon vorhanden!" );
+
+ pD->MakeTable( nBdshtTab );
+ }
+
+ if( ( nGrbit & 0x0001 ) || ( nGrbit & 0x0002 ) )
+ pD->SetVisible( nBdshtTab, FALSE );
+
+ pD->RenameTab( nBdshtTab, aName );
+ nBdshtTab++;
+}
+
+
+void ImportExcel::Country( void )
+{
+ UINT16 nCountry, nWinIni;
+
+ aIn >> nCountry >> nWinIni;
+
+ switch( nWinIni )
+ {
+ case 1: // USA
+ pExcRoot->eDefLanguage = LANGUAGE_ENGLISH_US;
+ break;
+ case 2: // Canada
+ pExcRoot->eDefLanguage = LANGUAGE_ENGLISH_CAN;
+ break;
+ case 3: // Latin America, except Brazil
+ pExcRoot->eDefLanguage = LANGUAGE_SPANISH;
+ break;
+ case 31: // Netherlands
+ pExcRoot->eDefLanguage = LANGUAGE_DUTCH;
+ break;
+ case 32: // Belgium
+ pExcRoot->eDefLanguage = LANGUAGE_DUTCH_BELGIAN;
+ break;
+ case 33: // France
+ pExcRoot->eDefLanguage = LANGUAGE_FRENCH;
+ break;
+ case 34: // Spain
+ pExcRoot->eDefLanguage = LANGUAGE_SPANISH;
+ break;
+ case 39: // Italy
+ pExcRoot->eDefLanguage = LANGUAGE_ITALIAN;
+ break;
+ case 41: // Switzerland
+ pExcRoot->eDefLanguage = LANGUAGE_GERMAN_SWISS;
+ break;
+ case 43: // Austria
+ pExcRoot->eDefLanguage = LANGUAGE_GERMAN_AUSTRIAN;
+ break;
+ case 44: // United Kingdom
+ pExcRoot->eDefLanguage = LANGUAGE_ENGLISH_UK;
+ break;
+ case 45: // Denmark
+ pExcRoot->eDefLanguage = LANGUAGE_DANISH;
+ break;
+ case 46: // Sweden
+ pExcRoot->eDefLanguage = LANGUAGE_SWEDISH;
+ break;
+ case 47: // Norway
+ pExcRoot->eDefLanguage = LANGUAGE_NORWEGIAN;
+ break;
+ case 49: // Germany
+ pExcRoot->eDefLanguage = LANGUAGE_GERMAN;
+ break;
+ case 52: // Mexico
+ pExcRoot->eDefLanguage = LANGUAGE_SPANISH_MEXICAN;
+ break;
+ case 55: // Brazil
+ pExcRoot->eDefLanguage = LANGUAGE_PORTUGUESE_BRAZILIAN;
+ break;
+ case 61: // Australia
+ pExcRoot->eDefLanguage = LANGUAGE_ENGLISH_AUS;
+ break;
+ case 64: // New Zealand
+ pExcRoot->eDefLanguage = LANGUAGE_ENGLISH_NZ;
+ break;
+ case 81: // Japan
+ pExcRoot->eDefLanguage = LANGUAGE_JAPANESE;
+ break;
+ case 82: // South Korea
+ pExcRoot->eDefLanguage = LANGUAGE_KOREAN;
+ break;
+ case 351: // Portugal
+ pExcRoot->eDefLanguage = LANGUAGE_PORTUGUESE;
+ break;
+ case 354: // Iceland
+ pExcRoot->eDefLanguage = LANGUAGE_ICELANDIC;
+ break;
+ case 358: // Finland
+ pExcRoot->eDefLanguage = LANGUAGE_FINNISH;
+ break;
+ case 785: // Arabic
+ pExcRoot->eDefLanguage = LANGUAGE_ARABIC;
+ break;
+ case 886: // Republic of China
+ pExcRoot->eDefLanguage = LANGUAGE_CHINESE;
+ break;
+ case 972: // Israel
+ pExcRoot->eDefLanguage = LANGUAGE_HEBREW;
+ break;
+ }
+}
+
+
+void ImportExcel::Hideobj( void )
+{
+ UINT16 nHide;
+ ScVObjMode eOle, eChart, eDraw;
+
+ aIn >> nHide;
+
+ ScViewOptions aOpts( pD->GetViewOptions() );
+
+ switch( nHide )
+ {
+ case 1: // Placeholders
+ eOle = VOBJ_MODE_SHOW; // in Excel 97 werden nur Charts als Platzhalter angezeigt
+ eChart = VOBJ_MODE_DUMMY;
+ eDraw = VOBJ_MODE_SHOW;
+ break;
+ case 2: // Hide all
+ eOle = VOBJ_MODE_HIDE;
+ eChart = VOBJ_MODE_HIDE;
+ eDraw = VOBJ_MODE_HIDE;
+ break;
+ default: // Show all
+ eOle = VOBJ_MODE_SHOW;
+ eChart = VOBJ_MODE_SHOW;
+ eDraw = VOBJ_MODE_SHOW;
+ break;
+ }
+
+ aOpts.SetObjMode( VOBJ_TYPE_OLE, eOle );
+ aOpts.SetObjMode( VOBJ_TYPE_CHART, eChart );
+ aOpts.SetObjMode( VOBJ_TYPE_DRAW, eDraw );
+
+ pD->SetViewOptions( aOpts );
+}
+
+
+void ImportExcel::Bundleheader( void )
+{
+}
+
+
+void ImportExcel::Palette( void )
+{
+ UINT16 nAnz;
+ BYTE nRed, nGreen, nBlue, nDummy;
+
+ aIn >> nAnz;
+
+#ifdef DEB_UTIL
+ nBytesLeft -= 2;
+#endif
+
+ for( UINT16 nC = 0 ; nC < nAnz ; nC++ )
+ {
+ aIn >> nRed >> nGreen >> nBlue >> nDummy;
+ pExcRoot->pColor->NewColor( nRed, nGreen, nBlue );
+
+#ifdef DEB_UTIL
+ nBytesLeft -= 4;
+#endif
+ }
+
+#ifdef DEB_UTIL
+ DBG_ASSERT( nBytesLeft >= 0, "*ImportExcel::Palette(): Ups, das war zuviel!" );
+ DBG_ASSERT( nBytesLeft <= 0, "*ImportExcel::Palette(): Ups, da ha'mer jemanden vergessen!" );
+#endif
+}
+
+
+void ImportExcel::Standardwidth( void )
+{
+ UINT16 nWidth;
+ aIn >> nWidth;
+
+ aColRowBuff.SetDefWidth( CalcColWidth( nWidth ), TRUE );
+}
+
+
+void ImportExcel::Scl( void )
+{
+ UINT16 nNscl, nDscl;
+
+ aIn >> nNscl >> nDscl;
+
+ pExcRoot->pExtDocOpt->SetZoom( nNscl, nDscl );
+}
+
+
+void ImportExcel::Setup( void )
+{
+ struct PAPER_SIZE
+ {
+ INT32 nH;
+ INT32 nW;
+ };
+ static const nAnzSizes = 42;
+ static SvxPaper pSvxPS[ nAnzSizes ] =
+ {
+ SVX_PAPER_USER, // undefined
+ SVX_PAPER_LETTER, // Letter 8 1/2 x 11 in
+ SVX_PAPER_USER, // Letter Small 8 1/2 x 11 in
+ SVX_PAPER_TABLOID, // Tabloid 11 x 17 in
+ SVX_PAPER_USER, // Ledger 17 x 11 in
+ SVX_PAPER_LEGAL, // Legal 8 1/2 x 14 in
+ SVX_PAPER_USER, // Statement 5 1/2 x 8 1/2 in
+ SVX_PAPER_USER, // Executive 7 1/4 x 10 1/2 in
+ SVX_PAPER_A3, // A3 297 x 420 mm
+ SVX_PAPER_A4, // A4 210 x 297 mm
+ SVX_PAPER_USER, // A4 Small 210 x 297 mm
+ SVX_PAPER_A5, // A5 148 x 210 mm
+ SVX_PAPER_B4, // B4 250 x 354
+ SVX_PAPER_B5, // B5 182 x 257 mm
+ SVX_PAPER_USER, // Folio 8 1/2 x 13 in
+ SVX_PAPER_USER, // Quarto 215 x 275 mm
+ SVX_PAPER_USER, // 10x14 in
+ SVX_PAPER_USER, // 11x17 in
+ SVX_PAPER_USER, // Note 8 1/2 x 11 in
+ SVX_PAPER_USER, // Envelope #9 3 7/8 x 8 7/8
+ SVX_PAPER_USER, // Envelope #10 4 1/8 x 9 1/2
+ SVX_PAPER_USER, // Envelope #11 4 1/2 x 10 3/8
+ SVX_PAPER_USER, // Envelope #12 4 \276 x 11
+ SVX_PAPER_USER, // Envelope #14 5 x 11 1/2
+ SVX_PAPER_A4, // C size sheet
+ SVX_PAPER_A4, // D size sheet
+ SVX_PAPER_A4, // E size sheet
+ SVX_PAPER_DL, // Envelope DL 110 x 220mm
+ SVX_PAPER_C5, // Envelope C5 162 x 229 mm
+ SVX_PAPER_USER, // Envelope C3 324 x 458 mm
+ SVX_PAPER_C4, // Envelope C4 229 x 324 mm
+ SVX_PAPER_C6, // Envelope C6 114 x 162 mm
+ SVX_PAPER_C65, // Envelope C65 114 x 229 mm
+ SVX_PAPER_B4, // Envelope B4 250 x 353 mm
+ SVX_PAPER_B5, // Envelope B5 176 x 250 mm
+ SVX_PAPER_B6, // Envelope B6 176 x 125 mm
+ SVX_PAPER_USER, // Envelope 110 x 230 mm
+ SVX_PAPER_USER, // Envelope Monarch 3.875 x 7.5 in
+ SVX_PAPER_USER, // 6 3/4 Envelope 3 5/8 x 6 1/2 in
+ SVX_PAPER_USER, // US Std Fanfold 14 7/8 x 11 in
+ SVX_PAPER_USER, // German Std Fanfold 8 1/2 x 12 in
+ SVX_PAPER_USER // German Legal Fanfold 8 1/2 x 13 in
+ };
+ static const PAPER_SIZE pPS[ nAnzSizes ] =
+ {
+ {(INT32)(0),(INT32)(0)}, // undefined
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*11)}, // Letter 8 1/2 x 11 in
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*11)}, // Letter Small 8 1/2 x 11 in
+ {(INT32)(TWIPS_PER_INCH*11),(INT32)(TWIPS_PER_INCH*17)}, // Tabloid 11 x 17 in
+ {(INT32)(TWIPS_PER_INCH*17),(INT32)(TWIPS_PER_INCH*11)}, // Ledger 17 x 11 in
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*14)}, // Legal 8 1/2 x 14 in
+ {(INT32)(TWIPS_PER_INCH*5.5),(INT32)(TWIPS_PER_INCH*8.5)}, // Statement 5 1/2 x 8 1/2 in
+ {(INT32)(TWIPS_PER_INCH*7.25),(INT32)(TWIPS_PER_INCH*10.5)}, // Executive 7 1/4 x 10 1/2 in
+ {(INT32)(TWIPS_PER_CM*29.7),(INT32)(TWIPS_PER_CM*42.0)}, // A3 297 x 420 mm
+ {(INT32)(TWIPS_PER_CM*21.0),(INT32)(TWIPS_PER_CM*29.7)}, // A4 210 x 297 mm
+ {(INT32)(TWIPS_PER_CM*21.0),(INT32)(TWIPS_PER_CM*29.7)}, // A4 Small 210 x 297 mm
+ {(INT32)(TWIPS_PER_CM*14.8),(INT32)(TWIPS_PER_CM*21.0)}, // A5 148 x 210 mm
+ {(INT32)(TWIPS_PER_CM*25.0),(INT32)(TWIPS_PER_CM*35.4)}, // B4 250 x 354
+ {(INT32)(TWIPS_PER_CM*18.2),(INT32)(TWIPS_PER_CM*25.7)}, // B5 182 x 257 mm
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*13)}, // Folio 8 1/2 x 13 in
+ {(INT32)(TWIPS_PER_CM*21.5),(INT32)(TWIPS_PER_CM*27.5)}, // Quarto 215 x 275 mm
+ {(INT32)(TWIPS_PER_INCH*10),(INT32)(TWIPS_PER_INCH*14)}, // 10x14 in
+ {(INT32)(TWIPS_PER_INCH*11),(INT32)(TWIPS_PER_INCH*17)}, // 11x17 in
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*11)}, // Note 8 1/2 x 11 in
+ {(INT32)(TWIPS_PER_INCH*3.875),(INT32)(TWIPS_PER_INCH*8.875)}, // Envelope #9 3 7/8 x 8 7/8
+ {(INT32)(TWIPS_PER_INCH*4.125),(INT32)(TWIPS_PER_INCH*9.5)}, // Envelope #10 4 1/8 x 9 1/2
+ {(INT32)(TWIPS_PER_INCH*4.5),(INT32)(TWIPS_PER_INCH*10.375)}, // Envelope #11 4 1/2 x 10 3/8
+ {(INT32)(TWIPS_PER_INCH*4.03),(INT32)(TWIPS_PER_INCH*11)}, // Envelope #12 4 \276 x 11
+ {(INT32)(TWIPS_PER_INCH*14.5),(INT32)(TWIPS_PER_INCH*11.5)}, // Envelope #14 5 x 11 1/2
+ {(INT32)(0),(INT32)(0)}, // C size sheet
+ {(INT32)(0),(INT32)(0)}, // D size sheet
+ {(INT32)(0),(INT32)(0)}, // E size sheet
+ {(INT32)(TWIPS_PER_CM*11.0),(INT32)(TWIPS_PER_CM*22.0)}, // Envelope DL 110 x 220mm
+ {(INT32)(TWIPS_PER_CM*16.2),(INT32)(TWIPS_PER_CM*22.9)}, // Envelope C5 162 x 229 mm
+ {(INT32)(TWIPS_PER_CM*32.4),(INT32)(TWIPS_PER_CM*45.8)}, // Envelope C3 324 x 458 mm
+ {(INT32)(TWIPS_PER_CM*22.9),(INT32)(TWIPS_PER_CM*32.4)}, // Envelope C4 229 x 324 mm
+ {(INT32)(TWIPS_PER_CM*11.4),(INT32)(TWIPS_PER_CM*16.2)}, // Envelope C6 114 x 162 mm
+ {(INT32)(TWIPS_PER_CM*11.4),(INT32)(TWIPS_PER_CM*22.9)}, // Envelope C65 114 x 229 mm
+ {(INT32)(TWIPS_PER_CM*25.0),(INT32)(TWIPS_PER_CM*35.3)}, // Envelope B4 250 x 353 mm
+ {(INT32)(TWIPS_PER_CM*17.6),(INT32)(TWIPS_PER_CM*25.0)}, // Envelope B5 176 x 250 mm
+ {(INT32)(TWIPS_PER_CM*17.6),(INT32)(TWIPS_PER_CM*12.5)}, // Envelope B6 176 x 125 mm
+ {(INT32)(TWIPS_PER_CM*11.0),(INT32)(TWIPS_PER_CM*23.0)}, // Envelope 110 x 230 mm
+ {(INT32)(TWIPS_PER_INCH*3.875),(INT32)(TWIPS_PER_INCH*7.5)}, // Envelope Monarch 3.875 x 7.5 in
+ {(INT32)(TWIPS_PER_INCH*3.625),(INT32)(TWIPS_PER_INCH*6.5)}, // 6 3/4 Envelope 3 5/8 x 6 1/2 in
+ {(INT32)(TWIPS_PER_INCH*14.875),(INT32)(TWIPS_PER_INCH*11)}, // US Std Fanfold 14 7/8 x 11 in
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*12)}, // German Std Fanfold 8 1/2 x 12 in
+ {(INT32)(TWIPS_PER_INCH*8.5),(INT32)(TWIPS_PER_INCH*13)} // German Legal Fanfold 8 1/2 x 13 in
+ };
+
+
+ UINT16 nPaperSize, nScale, nStartPage, nFitWidth, nFitHeight, nOpt;
+
+ aIn >> nPaperSize >> nScale >> nStartPage >> nFitWidth >> nFitHeight >> nOpt;
+
+ SvxPageItem aPageItem( ( const SvxPageItem& ) pStyleSheetItemSet->Get( ATTR_PAGE ) );
+
+ pStyleSheetItemSet->Put( SfxBoolItem( ATTR_PAGE_TOPDOWN, !( nOpt & 0x0001 ) ) );
+
+ if( !( nOpt & 0x0004 ) )
+ {// fNoPls (TRUE->ignore nPaperSize, nScale, nPrintRes,
+ // nVertRes, nCopies, fLandscape)
+ pExcRoot->bDefaultPage = FALSE;
+ BOOL bLandscape = !TRUEBOOL( nOpt & 0x0002 );
+ aPageItem.SetLandscape( bLandscape );
+
+ Size aSize;
+ if( nPaperSize >= nAnzSizes )
+ aSize = Size( 0, 0 );
+ else if( pSvxPS[ nPaperSize ] == SVX_PAPER_USER )
+ aSize = Size( pPS[ nPaperSize ].nH, pPS[ nPaperSize ].nW );
+ else
+ aSize = SvxPaperInfo::GetPaperSize( pSvxPS[ nPaperSize ] );
+
+ if( bLandscape )
+ {
+ long nTmp;
+ nTmp = aSize.nA;
+ aSize.nA = aSize.nB;
+ aSize.nB = nTmp;
+ }
+
+ pStyleSheetItemSet->Put( SvxSizeItem( ATTR_PAGE_SIZE, aSize ) );
+
+ pStyleSheetItemSet->Put( SfxUInt16Item( ATTR_PAGE_SCALE, nScale ) );
+ }
+
+ if( nOpt & 0x0020 )
+ // fNotes
+ pStyleSheetItemSet->Put( SfxBoolItem( ATTR_PAGE_NOTES, TRUE ) );
+
+ if( nOpt & 0x0080 )
+ // fUsePage
+ pStyleSheetItemSet->Put(
+ SfxUInt16Item( ATTR_PAGE_FIRSTPAGENO, nStartPage ) );
+
+ pStyleSheetItemSet->Put( aPageItem );
+}
+
+
+void ImportExcel::Shrfmla( void )
+{
+ UINT16 nFirstRow, nLastRow, nLenExpr;
+ BYTE nFirstCol, nLastCol;
+
+ aIn >> nFirstRow >> nLastRow >> nFirstCol >> nLastCol;
+ aIn.SeekRel( 2 );
+ aIn >> nLenExpr;
+
+ // jetzt steht Lesemarke an der Formel
+
+ const ScTokenArray* pErgebnis;
+
+ pFormConv->Reset( nLenExpr );
+
+ long nAnzBytes = nLenExpr;
+ pFormConv->Convert( pErgebnis, nAnzBytes, FT_SharedFormula );
+
+
+ DBG_ASSERT( pErgebnis, "+ImportExcel::Shrfmla(): ScTokenArray ist NULL!" );
+
+ pExcRoot->pShrfmlaBuff->Store(
+ ScRange(
+ ScAddress( nFirstCol, nFirstRow, nTab ),
+ ScAddress( nLastCol, nLastRow, nTab ) ),
+ *pErgebnis );
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Mulrk( void )
+{
+ UINT16 nRow, nColFirst, nXF;
+ UINT32 nRkNum;
+
+ aIn >> nRow >> nColFirst;
+ nBytesLeft -= 4;
+
+ if( nRow <= MAXROW )
+ {
+ for( UINT16 nCol = nColFirst ; nBytesLeft > 2 ; nCol++ )
+ {
+ aIn >> nXF >> nRkNum;
+ nBytesLeft -= 6;
+
+ if( nCol <= MAXCOL )
+ {
+ ScValueCell* pZelle = new ScValueCell( RkToDouble( nRkNum ) );
+
+ pD->PutCell( nCol, nRow, nTab, pZelle, (BOOL)TRUE );
+ aColRowBuff.Used( nCol, nRow );
+ pFltTab->SetXF( nCol, nRow, nXF );
+ }
+ }
+ DBG_ASSERT( nBytesLeft == 2, "+ImportExcel::Mulrk(): Was'n das?!!!" );
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Mulblank( void )
+{
+ UINT16 nRow, nCol, nColFirst, nXF;
+
+ aIn >> nRow >> nColFirst;
+ nBytesLeft -= 4;
+
+ if( nRow <= MAXROW )
+ {
+ for( nCol = nColFirst ; nBytesLeft > 2 ; nCol++ )
+ {
+ aIn >> nXF;
+ nBytesLeft -= 2;
+
+ if( nCol <= MAXCOL )
+ {
+ aColRowBuff.Used( nCol, nRow );
+ pFltTab->SetXF( nCol, nRow, nXF, TRUE );
+ }
+ }
+ aIn >> nRow; // nRow zum Testen von letzter Col missbraucht
+ nBytesLeft -= 2;
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Rstring( void )
+{
+ UINT16 nRow, nCol, nXF;
+ BYTE nCount;
+ ByteString aString;
+
+ aIn >> nRow >> nCol >> nXF;
+
+ ReadExcString( LenWord, aString );
+
+ aIn >> nCount;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ if( aString.Len() )
+ {
+ EditTextObject* pTextObj = CreateFormText( nCount, EXCTOSTR( aString ), nXF );
+
+ ScBaseCell* pZelle = new ScEditCell( pTextObj, pD, GetEdEng().GetEditTextObjectPool() );
+
+ delete pTextObj;
+
+ pD->PutCell( nCol, nRow, nTab, pZelle, (BOOL)TRUE );
+ }
+
+ aColRowBuff.Used( nCol, nRow );
+
+ pFltTab->SetXF( nCol, nRow, nXF );
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::XF5( void )
+{
+ UINT16 nAttr0, nAlign, nIndexFormat, nIndexFont, nFillCol,
+ nFill_Bottom, nBorder0, nBorder1;
+ CellBorder aBorder;
+ CellFill aFill;
+ XF_Data* pXFD = new XF_Data;
+
+ aIn >> nIndexFont >> nIndexFormat >> nAttr0 >> nAlign >> nFillCol
+ >> nFill_Bottom >> nBorder0 >> nBorder1;
+
+ aBorder.nTopLine = ( BYTE ) nBorder0 & 0x0007; // .............210
+ aBorder.nTopColor = ( nBorder0 & 0xFE00 ) >> 9; // 5432109.........
+ aBorder.nLeftLine = ( BYTE ) ( ( nBorder0 & 0x0038 ) >> 3 );// ..........543...
+ aBorder.nLeftColor = nBorder1 & 0x007F ; // .........6543210
+ aBorder.nBottomLine = ( BYTE ) ((nFill_Bottom & 0x01C0)>>6);// .......876......
+ aBorder.nBottomColor = ( nFill_Bottom & 0xFE00 ) >> 9; // 5432109.........
+ aBorder.nRightLine = ( BYTE ) ( ( nBorder0 & 0x01C0 ) >> 6);//........876.....
+ aBorder.nRightColor = ( nBorder1& 0x3F80 ) >> 7; // ..3210987.......
+
+ aFill.nPattern = ( BYTE ) nFill_Bottom & 0x003F; // ..........543210
+ aFill.nForeColor = nFillCol & 0x007F; // .........6543210
+ aFill.nBackColor = ( nFillCol & 0x1F80 ) >> 7; // ...210987.......
+
+ if( nAttr0 & 0x0004 )
+ {// Style-XF
+ pXFD->SetStyleXF();
+ }
+ else
+ {// Cell-XF
+ pXFD->SetCellXF();
+ }
+
+ pXFD->SetParent( ( nAttr0 & 0xFFF0 ) >> 4 );
+
+ pXFD->SetValueFormat( pValueFormBuffer->GetValueFormat( nIndexFormat ) );
+
+ pXFD->SetFont( nIndexFont );
+
+ pXFD->SetAlign( ( ExcHorizAlign ) ( nAlign & 0x0007 ) );
+ pXFD->SetAlign( ( ExcVertAlign ) ( ( nAlign & 0x0030 ) >> 4 ) );
+ // using 2 instead of 3 Bit, because of lack of Applix to export correct alignment...
+ pXFD->SetTextOrient( ( ExcTextOrient ) ( ( nAlign & 0x0300 ) >> 8 ) );
+
+ pXFD->SetWrap( ( ExcWrapText ) ( ( nAlign & 0x0008 ) >> 3 ) );
+
+ pXFD->SetBorder( aBorder );
+
+ pXFD->SetFill( aFill );
+
+ pXFD->SetLocked( TRUEBOOL( nAttr0 & 0x0001 ) );
+ pXFD->SetHidden( TRUEBOOL( nAttr0 & 0x0002 ) );
+
+ pExcRoot->pXF_Buffer->NewXF( pXFD );
+}
+
+
+void ImportExcel::Blank34( void )
+{
+ UINT16 nRow, nCol, nXF;
+
+ aIn >> nRow >> nCol >> nXF;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ aColRowBuff.Used( nCol, nRow );
+
+ pFltTab->SetXF( nCol, nRow, nXF, TRUE );
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Number34( void )
+{
+ UINT16 nRow, nCol, nXF;
+ double fValue;
+
+ aIn >> nRow >> nCol >> nXF >> fValue;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ ScValueCell* pZelle = new ScValueCell( fValue );
+ DBG_ASSERT( pZelle != NULL, "ImportExcel::Number34(): Nix Zelle!" );
+
+ pD->PutCell( nCol, nRow, nTab, pZelle, ( BOOL )TRUE );
+
+ aColRowBuff.Used( nCol, nRow );
+
+ pFltTab->SetXF( nCol, nRow, nXF );
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Label34( void )
+{
+ UINT16 nR, nC, nXF;
+
+ aIn >> nR >> nC >> nXF;
+
+ SetTextCell( nC, nR, ReadExcString( LenWord ), nXF );
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Boolerr34( void )
+{
+ UINT16 nRow, nCol, nXF;
+ BYTE bErrOrVal, nError;
+
+ aIn >> nRow >> nCol >> nXF;
+
+ if( nRow <= MAXROW && nCol <= MAXCOL )
+ {
+ double fVal;
+ const ScTokenArray* pErgebnis;
+
+ aIn >> nError >> bErrOrVal;
+
+ // Simulation ueber Formelzelle!
+ pErgebnis = ErrorToFormula( bErrOrVal, nError, fVal );
+
+ ScFormulaCell* pZelle = new ScFormulaCell(
+ pD, ScAddress( nCol, nRow, nTab ), pErgebnis );
+
+ pZelle->SetDouble( fVal );
+
+ pD->PutCell( nCol, nRow, nTab, pZelle, (BOOL)TRUE );
+
+ aColRowBuff.Used( nCol, nRow );
+
+ pFltTab->SetXF( nCol, nRow, nXF );
+ }
+ else
+ bTabTruncated = TRUE;
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Row34( void )
+{
+ UINT16 nRow, nRowHeight, nGrbit;
+
+ aIn >> nRow;
+ aIn.SeekRel( 4 ); // Mic und Mac ueberspringen
+
+ if( nRow <= MAXROW )
+ {
+ aIn >> nRowHeight; // direkt in Twips angegeben
+ aIn.SeekRel( 4 );
+
+ aIn >> nGrbit;
+
+ aRowOutlineBuff.SetLevel( nRow, EXC_ROW_GETLEVEL( nGrbit ),
+ TRUEBOOL( nGrbit & EXC_ROW_COLLAPSED ), TRUEBOOL( nGrbit & EXC_ROW_ZEROHEIGHT ) );
+
+ aColRowBuff.SetRowSettings( nRow, nRowHeight, nGrbit );
+ }
+}
+
+
+void ImportExcel::Bof3( void )
+{
+ UINT16 nTyp;
+
+ aIn.SeekRel( 2 );
+ aIn >> nTyp;
+
+ DBG_ASSERT( nTyp != 0x0100, "*ImportExcel::Bof3(): Biff3 als Workbook?!" );
+
+ pExcRoot->eHauptDateiTyp = Biff3;
+
+ if( nTyp == 0x0010 ) // Sheet?
+ pExcRoot->eDateiTyp = Biff3;
+ else if( nTyp == 0x0100 ) // Book?
+ pExcRoot->eDateiTyp = Biff3W;
+ else if( nTyp == 0x0020 ) // Chart?
+ pExcRoot->eDateiTyp = Biff3C;
+ else if( nTyp == 0x0040 ) // Macro?
+ pExcRoot->eDateiTyp = Biff3M;
+ else
+ {
+ pExcRoot->eDateiTyp = BiffX;
+ pExcRoot->eHauptDateiTyp = BiffX;
+ }
+}
+
+
+void ImportExcel::Name34( void )
+{
+ BYTE nLenName;
+ UINT16 nAttr, nLenExpr;
+ const ScTokenArray* pErgebnis;
+ BOOL bPrintArea;
+ BOOL bPrintTitles;
+ BOOL bBuildIn;
+
+ aIn >> nAttr;
+ aIn.SeekRel( 1 );
+ aIn >> nLenName >> nLenExpr;
+ nBytesLeft -= 6;
+
+ pFormConv->Reset( nLenExpr );
+
+ // Namen einlesen
+ String aName( ASSTOSTR( ReadString( aIn, nLenName ) ) );
+ sal_Char cFirstNameChar = aName.GetChar( 0 );
+
+ const UINT32 nFormStart = aIn.Tell();
+
+ if( nLenName == 1 && cFirstNameChar < EXC_BUILTIN_UNKNOWN )
+ {// Build-in name (0x00 - 0x0D als erstes Zeichen)
+ bPrintArea = ( cFirstNameChar == EXC_BUILTIN_PRINTAREA );
+ bPrintTitles = ( cFirstNameChar == EXC_BUILTIN_PRINTTITLES );
+ bBuildIn = TRUE;
+
+ aName.AssignAscii( GetExcBuiltInName( cFirstNameChar ) );
+ }
+ else
+ {
+ ExcelNameToScName( aName );
+
+ bPrintArea = bPrintTitles = bBuildIn = FALSE;
+ }
+
+ const BOOL bHidden = TRUEBOOL( nAttr & EXC_NAME_HIDDEN );
+
+ if( nAttr & EXC_NAME_VB )
+ // function, command or name on macro sheet?
+ pFormConv->GetDummy( pErgebnis );
+ else if( bBuildIn )
+ {
+ if( bPrintArea )
+ {// Druckbereich
+ long nAnzBytes = nLenExpr;
+ pFormConv->Convert( *pPrintRanges, nAnzBytes, FT_RangeName );
+ }
+ else if( bPrintTitles )
+ {// Druckbereich
+ long nAnzBytes = nLenExpr;
+ pFormConv->Convert( *pPrintTitles, nAnzBytes, FT_RangeName );
+ }
+ aIn.Seek( nFormStart );
+
+ long nAnzBytes = nLenExpr;
+ pFormConv->Convert( pErgebnis, nAnzBytes, FT_RangeName );
+ }
+ else
+ // Parsed expression Scannen
+ {
+ long nAnzBytes = nLenExpr;
+ pFormConv->Convert( pErgebnis, nAnzBytes, FT_RangeName );
+ }
+
+ if( bHidden ) // ohne hidden und complex
+ pExcRoot->pRNameBuff->Store( aName, NULL );
+ else
+ pExcRoot->pRNameBuff->Store( aName, pErgebnis, 0, bPrintArea );
+}
+
+
+void ImportExcel::Array34( void )
+{
+ UINT16 nFirstRow, nLastRow, nFormLen;
+ BYTE nFirstCol, nLastCol;
+
+ aIn >> nFirstRow >> nLastRow >> nFirstCol >> nLastCol;
+ aIn.SeekRel( 6 );
+ aIn >> nFormLen;
+
+ if( nLastRow <= MAXROW && nLastCol <= MAXCOL )
+ {
+ // jetzt steht Lesemarke auf Formel, Laenge in nFormLen
+ const ScTokenArray* pErgebnis;
+
+ pFormConv->Reset( nFormLen, ScAddress( nFirstCol, nFirstRow, nTab ) );
+
+ long nAnzBytes = nFormLen;
+
+ pFormConv->Convert( pErgebnis, nAnzBytes );
+ nBytesLeft += nAnzBytes - nFormLen;
+
+ DBG_ASSERT( pErgebnis, "+ImportExcel::Array34(): ScTokenArray ist NULL!" );
+
+ ScMarkData aMarkData;
+ aMarkData.SelectOneTable( nTab );
+ pD->InsertMatrixFormula( nFirstCol, nFirstRow, nLastCol, nLastRow, aMarkData, EMPTY_STRING, pErgebnis);
+
+ UINT16 nRowCnt, nColCnt;
+
+ for( nColCnt = nFirstCol + 1 ; nColCnt <= nLastCol ; nColCnt++ )
+ for( nRowCnt = nFirstRow ; nRowCnt <= nLastRow ; nRowCnt++ )
+ {
+ pFltTab->SetXF( nColCnt, nRowCnt, nLastXF );
+ aColRowBuff.Used( nColCnt, nRowCnt );
+ }
+ }
+
+ pLastFormCell = NULL;
+}
+
+
+void ImportExcel::Externname34( void )
+{
+}
+
+
+void ImportExcel::Defrowheight345( void )
+{
+ UINT16 nDef, nOpt;
+
+ aIn >> nOpt >> nDef;
+
+ nDef = ( UINT16 ) ( ( double ) nDef * pExcRoot->fRowScale );
+
+ if( nOpt && 0x0002 )
+ aColRowBuff.SetDefHeight( 0 );
+ else
+ aColRowBuff.SetDefHeight( nDef );
+}
+
+
+void ImportExcel::Font34( void )
+{
+ UINT16 nHeight, nIndexCol;
+ BYTE nAttr0;
+
+ aIn >> nHeight >> nAttr0;
+ aIn.SeekRel( 1 );
+ aIn >> nIndexCol;
+
+ pExcRoot->pFontBuffer->NewFont( nHeight, nAttr0, nIndexCol, EXCTOSTR( ReadExcString( LenByte ) ) );
+}
+
+
+void ImportExcel::Window2_5( void )
+{
+ ScExtDocOptions& rExtOpt = *pExcRoot->pExtDocOpt;
+ UINT16 nOpt;
+ aIn >> nOpt;
+
+ if( nOpt & 0x0400 )
+ {// Paged
+ UINT16 nCol, nRow;
+
+ aIn >> nRow >> nCol;
+ if( nRow > MAXROW )
+ nRow = MAXROW;
+ if( nCol > MAXCOL )
+ nCol = MAXCOL;
+
+ rExtOpt.SetActTab( nTab );
+ rExtOpt.SetVisCorner( nCol, nRow );
+ }
+
+ if( nOpt & 0x0008 ) // Frozen
+ aColRowBuff.SetFrozen( TRUE );
+
+ if( !( nOpt & 0x0020 ) )
+ {// Use RGB
+ BYTE nGridR, nGridG, nGridB;
+
+ aIn >> nGridR >> nGridG >> nGridB;
+
+ rExtOpt.SetGridCol( nGridR, nGridG, nGridB );
+ }
+
+ if( !nTab ) // nur Tabelle 0 wird uebernommen!
+ {
+ ScViewOptions aOpts( pD->GetViewOptions() );
+
+ if( nOpt & 0x0001 )
+ // Display Formulas
+ aOpts.SetOption( VOPT_FORMULAS, TRUE );
+ else
+ aOpts.SetOption( VOPT_FORMULAS, FALSE );
+
+ if( nOpt & 0x0002 )
+ // Display Gridlines
+ aOpts.SetOption( VOPT_GRID, TRUE );
+ else
+ // Display No Gridlines
+ aOpts.SetOption( VOPT_GRID, FALSE );
+
+ if( nOpt & 0x0004 )
+ aOpts.SetOption( VOPT_HEADER, TRUE );
+ else
+ // No Row-/Col-Headings
+ aOpts.SetOption( VOPT_HEADER, FALSE );
+
+ if( nOpt & 0x0010 )
+ aOpts.SetOption( VOPT_NULLVALS, TRUE );
+ else
+ // Suppress Zero-Values
+ aOpts.SetOption( VOPT_NULLVALS, FALSE );
+
+ if( nOpt & 0x0080 )
+ aOpts.SetOption( VOPT_OUTLINER, TRUE );
+ else
+ // Hide Outline
+ aOpts.SetOption( VOPT_OUTLINER, FALSE );
+
+ pD->SetViewOptions( aOpts );
+ }
+}
+
+
+void ImportExcel::XF3( void )
+{
+ BYTE nDummyFormat, nDummyFont;
+ UINT16 nAttr0, nAttr1, nIndexFormat, nIndexFont, nBorder, nFill;
+ CellBorder aBorder;
+ CellFill aFill;
+ XF_Data* pXFD = new XF_Data;
+
+ aIn >> nDummyFont >> nDummyFormat >> nAttr0 >> nAttr1 >> nFill >> nBorder;
+
+ aBorder.nTopLine = ( BYTE ) nBorder & 0x0007; // .............210
+ aBorder.nTopColor = ( nBorder & 0x00F8 ) >> 3; // ........76543...
+ aBorder.nLeftLine = ( BYTE ) ( ( nBorder & 0x0700 ) >> 8 ); // .....098........
+ aBorder.nLeftColor = ( nBorder & 0xF800 ) >> 11; // 54321...........
+ aIn >> nBorder;
+ aBorder.nBottomLine = ( BYTE ) nBorder & 0x0007; // .............210
+ aBorder.nBottomColor = ( nBorder & 0x00F8 ) >> 3; // ........76543...
+ aBorder.nRightLine = ( BYTE ) ( ( nBorder & 0x0700 ) >> 8 );// .....098........
+ aBorder.nRightColor = ( nBorder & 0xF800 ) >> 11; // 54321...........
+
+ nIndexFormat = nDummyFormat;
+ nIndexFont = nDummyFont;
+ aFill.nPattern = ( BYTE ) ( nFill & 0x003F ); // ..........543210
+ aFill.nForeColor = ( nFill & 0x07C0 ) >> 6; // .....09876......
+ aFill.nBackColor = ( nFill & 0xF800 ) >> 11; // 54321...........
+
+ if( nAttr0 & 0x0004 )
+ {// Style-XF
+ pXFD->SetStyleXF();
+ }
+ else
+ {// Cell-XF
+ pXFD->SetCellXF();
+ }
+
+ pXFD->SetParent( ( nAttr1 & 0xFFF0 ) >> 4 );
+
+ pXFD->SetValueFormat( pValueFormBuffer->GetValueFormat( nIndexFormat ) );
+
+ pXFD->SetFont( nIndexFont );
+
+ pXFD->SetAlign( ( ExcHorizAlign ) ( nAttr1 & 0x0007 ) );
+
+ pXFD->SetWrap( ( ExcWrapText ) ( ( nAttr1 & 0x0008 ) >> 3 ) );
+
+ pXFD->SetAlign( EVA_Top );
+ pXFD->SetTextOrient( ETO_NoRot );
+
+ pXFD->SetBorder( aBorder );
+
+ pXFD->SetFill( aFill );
+
+ pXFD->SetLocked( TRUEBOOL( nAttr0 & 0x0001 ) );
+ pXFD->SetHidden( TRUEBOOL( nAttr0 & 0x0002 ) );
+
+ pExcRoot->pXF_Buffer->NewXF( pXFD );
+}
+
+
+void ImportExcel::Bof4( void )
+{
+ //POST: eDateiTyp = Biff4
+ UINT16 nTyp;
+
+ aIn.SeekRel( 2 );
+ aIn >> nTyp;
+
+ pExcRoot->eHauptDateiTyp = Biff4;
+
+ if( nTyp == 0x0010 ) // Sheet?
+ {
+ pExcRoot->eDateiTyp = Biff4;
+ }
+ else if( nTyp == 0x0100 ) // Book?
+ {
+ pExcRoot->eDateiTyp = Biff4W;
+ }
+ else if( nTyp == 0x0020 ) // Chart?
+ {
+ pExcRoot->eDateiTyp = Biff4C;
+ }
+ else if( nTyp == 0x0040 ) // Macro?
+ {
+ pExcRoot->eDateiTyp = Biff4M;
+ }
+ else
+ {
+ pExcRoot->eDateiTyp = BiffX;
+ pExcRoot->eHauptDateiTyp = BiffX;
+ }
+}
+
+
+void ImportExcel::Format4( void )
+{
+ aIn.SeekRel( 2 );
+ pValueFormBuffer->NewValueFormat( EXCTOSTR( ReadExcString( LenByte ) ) );
+}
+
+
+void ImportExcel::XF4( void )
+{
+ BYTE nDummyFormat, nDummyFont;
+ UINT16 nAttr0, nAttr1, nIndexFormat, nIndexFont, nBorder, nFill;
+ CellBorder aBorder;
+ CellFill aFill;
+ XF_Data* pXFD = new XF_Data;
+
+ aIn >> nDummyFont >> nDummyFormat >> nAttr0 >> nAttr1 >> nFill >> nBorder;
+ aBorder.nTopLine = ( BYTE ) nBorder & 0x0007; // .............210
+ aBorder.nTopColor = ( nBorder & 0x00F8 ) >> 3; // ........76543...
+ aBorder.nLeftLine = ( BYTE ) ( ( nBorder & 0x0700 ) >> 8 ); // .....098........
+ aBorder.nLeftColor = ( nBorder & 0xF800 ) >> 11; // 54321...........
+ aIn >> nBorder;
+ aBorder.nBottomLine = ( BYTE ) nBorder & 0x0007; // .............210
+ aBorder.nBottomColor = ( nBorder & 0x00F8 ) >> 3; // ........76543...
+ aBorder.nRightLine = ( BYTE ) ( ( nBorder & 0x0700 ) >> 8 );// .....098........
+ aBorder.nRightColor = ( nBorder & 0xF800 ) >> 11; // 54321...........
+
+ nIndexFormat = nDummyFormat;
+ nIndexFont = nDummyFont;
+ aFill.nPattern = ( BYTE ) nFill & 0x003F; // ..........543210
+ aFill.nForeColor = ( nFill & 0x07C0 ) >> 6; // .....09876......
+ aFill.nBackColor = ( nFill & 0xF800 ) >> 11; // 54321...........
+
+ if( nAttr0 & 0x0004 )
+ {// Style-XF
+ pXFD->SetStyleXF();
+ }
+ else
+ {// Cell-XF
+ pXFD->SetCellXF();
+ }
+
+ pXFD->SetParent( ( nAttr0 & 0xFFF0 ) >> 4 );
+
+ pXFD->SetValueFormat( pValueFormBuffer->GetValueFormat( nIndexFormat ) );
+
+ pXFD->SetFont( nIndexFont );
+
+ pXFD->SetAlign( ( ExcHorizAlign ) ( nAttr1 & 0x0007 ) );
+
+ pXFD->SetWrap( ( ExcWrapText ) ( ( nAttr1 & 0x0008 ) >> 3 ) );
+
+ pXFD->SetAlign( ( ExcVertAlign ) ( ( nAttr1 & 0x0030 ) >> 4 ) );
+ pXFD->SetTextOrient(
+ ( ExcTextOrient ) ( ( nAttr1 & 0x00C0 ) >> 6 ) );
+
+ pXFD->SetBorder( aBorder );
+
+ pXFD->SetFill( aFill );
+
+ pXFD->SetLocked( TRUEBOOL( nAttr0 & 0x0001 ) );
+ pXFD->SetHidden( TRUEBOOL( nAttr0 & 0x0002 ) );
+
+ pExcRoot->pXF_Buffer->NewXF( pXFD );
+}
+
+
+void ImportExcel::Bof5( void )
+{
+ //POST: eDateiTyp = Typ der zu lesenden Datei
+ UINT16 nSubType, nVers;
+ BiffTyp eHaupt = Biff5;
+ BiffTyp eDatei;
+
+ aIn >> nVers >> nSubType;
+
+ switch( nSubType )
+ {
+ case 0x0005: // Workbook-Globals?
+ eDatei = Biff5W;
+ break;
+ case 0x0006: // Visual Basic?
+ eDatei = Biff5V;
+ break;
+ case 0x0010: // Worksheet?
+ eDatei = Biff5;
+ break;
+ case 0x0020: // Chart?
+ eDatei = Biff5C;
+ break;
+ case 0x0040: // Excel4 Macro?
+ eDatei = Biff5M4;
+// eHaupt = Biff4; // !!!!!!!!! RICHTIG? !!!!!!!!!!!!
+ break;
+ case 0x0100: // Workbook?
+ eDatei = Biff5W;
+ break;
+ default:
+ pExcRoot->eDateiTyp = BiffX;
+ pExcRoot->eHauptDateiTyp = BiffX;
+ return;
+ }
+
+ if( nVers == 0x0600 && pExcRoot->eGlobalDateiTyp != Biff5W )
+ {// Biff8
+ eHaupt = ( BiffTyp ) ( eHaupt - Biff5 + Biff8 );
+ eDatei = ( BiffTyp ) ( eDatei - Biff5 + Biff8 );
+ }
+
+ pExcRoot->eHauptDateiTyp = eHaupt;
+ pExcRoot->eDateiTyp = eDatei;
+}
+
+
+double ImportExcel::RkToDouble( const UINT32& nRk )
+{
+ //PLATTFORMABHAENGIG//
+ double fVal;
+
+ // jetzt kommt Code aus'm Excel-Developer's-Kit-Buch V5 (S.223)
+ if( nRk & 0x02 )
+ // Integer
+ fVal = ( double ) ( *( ( INT32 * ) &nRk ) >> 2 );
+ else
+ {// 64-Bit IEEE-Float
+#ifdef __BIGENDIAN
+//680xx und alle anderen vernuenftigen Prozessoren...
+ *( ( UINT32 * ) &fVal + 1 ) = 0; // unteren 32 Bits = 0
+ *( ( UINT32 * ) &fVal ) = nRk & 0xFFFFFFFC; // Bit 0, 1 = 0
+#else
+//Intel-Sch...
+ *( ( UINT32 * ) &fVal ) = 0; // unteren 32 Bits = 0
+ *( ( UINT32 * ) &fVal + 1 ) = nRk & 0xFFFFFFFC; // Bit 0, 1 = 0
+#endif
+ }
+
+ if( nRk & 0x01 )
+ fVal *= 0.01;
+
+ return fVal;
+}
+
+
+void ImportExcel::ReadExcString( StringInfoLen eLen, ByteString& aString )
+{
+ // POST: ACHTUNG: Funktion setzt nBytesLeft selbstaendig!!!!!
+ // (geht auch nicht anders!)
+ // ACHTUNG: es wird an String angehaengt
+
+ if( nBytesLeft < 0 ) // hack for Applix rubbish, never needed before!
+ return;
+
+ UINT16 nLaenge;
+
+ if( eLen == LenByte )
+ {
+ BYTE nHelp;
+ aIn >> nHelp;
+ nLaenge = nHelp;
+ nBytesLeft--;
+ }
+ else
+ {
+ aIn >> nLaenge;
+ nBytesLeft -= 2;
+ }
+
+ if( nBytesLeft < nLaenge ) // hack for Applix rubbish, never needed before!
+ nLaenge = nBytesLeft;
+
+ AppendString( aIn, aString, nLaenge );
+ nBytesLeft -= nLaenge;
+}
+
+
+void ImportExcel::ReadExcString( StringInfoLen eLen, String& aString )
+{
+ ByteString aTmp;
+
+ ReadExcString( eLen, aTmp );
+
+ aString += String( aTmp, eQuellChar );
+}
+
+
+void ImportExcel::ResetBof( void )
+{ // setzt alle Einstellungen fuer neuen Tabellenbeginn zurueck
+ aColRowBuff.Reset();
+ pFltTab->Reset();
+}
+
+
+void ImportExcel::EndSheet( void )
+{ // mach 'Gemarmel' am Ende eines Sheets
+ aColOutlineBuff.SetOutlineArray( pD->GetOutlineTable( nTab, TRUE )->GetColArray() );
+ aColOutlineBuff.MakeScOutline();
+ aColOutlineBuff.Reset();
+
+ aRowOutlineBuff.SetOutlineArray( pD->GetOutlineTable( nTab, TRUE )->GetRowArray() );
+ aRowOutlineBuff.MakeScOutline();
+ aRowOutlineBuff.Reset();
+
+ aColRowBuff.Apply( nTab );
+
+ pFltTab->Apply( nTab );
+
+ pExcRoot->pExtSheetBuff->Reset();
+ pExcRoot->pExtNameBuff->Reset();
+}
+
+
+ByteString ImportExcel::ReadExcString( StringInfoLen eLen )
+{
+ // POST: ACHTUNG: Funktion setzt nBytesLeft selbstaendig!!!!!
+ // (geht auch nicht anders!)
+ ByteString aRet;
+ UINT16 nLaenge;
+
+ if( eLen == LenByte )
+ {
+ BYTE nHelp;
+ aIn >> nHelp;
+ nLaenge = nHelp;
+ nBytesLeft--;
+ }
+ else
+ {
+ aIn >> nLaenge;
+ nBytesLeft -= 2;
+ }
+
+ if( nLaenge )
+ {
+ sal_Char* p = new sal_Char[ nLaenge + 1 ];
+ aIn.Read( p, nLaenge );
+ p[ nLaenge ] = 0x00;
+ aRet = p;
+ delete[] p;
+ nBytesLeft -= nLaenge;
+ }
+
+ return aRet;
+}
+
+
+void ImportExcel::NeueTabelle( void )
+{
+ if( nTab > 0 && !pD->HasTable( nTab ) )
+ pD->MakeTable( nTab );
+
+ // fuer neue Tabelle eigene Tabellenvorlage erzeugen
+ String aStyleName( GetPageStyleName( nTab ) );
+
+ pStyleSheetItemSet =
+ &pD->GetStyleSheetPool()->Make( aStyleName, SFX_STYLE_FAMILY_PAGE,
+ SFXSTYLEBIT_USERDEF ).GetItemSet();
+
+ pExcRoot->bDefaultPage = TRUE;
+}
+
+
+const ScTokenArray* ImportExcel::ErrorToFormula( BYTE bErrOrVal, BYTE nError, double& rVal )
+{
+ BoolError eType;
+ if( bErrOrVal )
+ {// Error Value
+ switch( nError )
+ {
+ case 0x00: eType = BE_NULL; break;
+ case 0x07: eType = BE_DIV0; break;
+ case 0x0F: eType = BE_VALUE; break;
+ case 0x17: eType = BE_REF; break;
+ case 0x1D: eType = BE_NAME; break;
+ case 0x24: eType = BE_NUM; break;
+ case 0x2A: eType = BE_NA; break;
+ default: eType = BE_UNKNOWN; break;
+ }
+ rVal = 0.0;
+ }
+ else
+ {// Boolean Value
+ if( nError )
+ {
+ eType = BE_TRUE;
+ rVal = 1.0;
+ }
+ else
+ {
+ eType = BE_FALSE;
+ rVal = 0.0;
+ }
+ }
+ return pFormConv->GetBoolErr( eType );
+}
+
+
+void ImportExcel::ScanHeadFootParts( const String& rIn, EditTextObject*& rpLeft,
+ EditTextObject*& rpMid, EditTextObject*& rpRight )
+{
+ enum State { SearchEmb, SearchFunc, AddLeft, AddMid, AddRight, ScanSize, ScanFont };
+
+ EditEngine& rEdEng = pExcRoot->GetEdEngForHF();
+ ESelection aAppSel( 0xFFFF, 0xFFFF );
+
+ rEdEng.SetText( EMPTY_STRING ); //NN: wenn nur ein Feld belegt ist, kommt kein &C
+
+ const sal_Unicode* pAct = rIn.GetBuffer();
+
+ State eAct = AddMid;
+ State ePrev = AddMid;
+ String aTmpString;
+
+ while( *pAct )
+ {
+ switch( eAct )
+ {
+ case SearchEmb: // '&' suchen
+ if( *pAct == '&' )
+ eAct = SearchFunc;
+ break;
+ case SearchFunc: // auf Funktionen verteilen
+ switch( *pAct )
+ {
+ case 'C': // Start mittlerer Teil
+ if( ePrev == AddLeft )
+ {
+ delete rpLeft;
+ rpLeft = rEdEng.CreateTextObject();
+ }
+ else if( ePrev == AddRight )
+ {
+ delete rpRight;
+ rpRight = rEdEng.CreateTextObject();
+ }
+
+ if( !rpMid )
+ {
+ rEdEng.SetText( EMPTY_STRING );
+ rpMid = rEdEng.CreateTextObject();
+ }
+ else
+ rEdEng.SetText( *rpMid );
+
+ eAct = ePrev = AddMid;
+ break;
+ case 'L': // Start linker Teil
+ if( ePrev == AddMid )
+ {
+ delete rpMid;
+ rpMid = rEdEng.CreateTextObject();
+ }
+ else if( ePrev == AddRight )
+ {
+ delete rpRight;
+ rpRight = rEdEng.CreateTextObject();
+ }
+
+ if( !rpLeft )
+ {
+ rEdEng.SetText( EMPTY_STRING );
+ rpLeft = rEdEng.CreateTextObject();
+ }
+ else
+ rEdEng.SetText( *rpLeft );
+
+ eAct = ePrev = AddLeft;
+ break;
+ case 'R': // Start rechter Teil
+ if( ePrev == AddMid )
+ {
+ delete rpMid;
+ rpMid = rEdEng.CreateTextObject();
+ }
+ else if( ePrev == AddLeft )
+ {
+ delete rpLeft;
+ rpLeft = rEdEng.CreateTextObject();
+ }
+
+ if( !rpRight )
+ {
+ rEdEng.SetText( EMPTY_STRING );
+ rpRight = rEdEng.CreateTextObject();
+ }
+ else
+ rEdEng.SetText( *rpRight );
+
+ eAct = ePrev = AddRight;
+ break;
+ case 'P': // Seitennummer
+ rEdEng.QuickInsertField( SvxFieldItem( SvxPageField() ), aAppSel );
+ eAct = ePrev;
+ break;
+ case 'N': // Seitenzahl
+ rEdEng.QuickInsertField( SvxFieldItem( SvxPagesField() ), aAppSel );
+ eAct = ePrev;
+ break;
+ case 'D': // Datum
+ rEdEng.QuickInsertField( SvxFieldItem( SvxDateField() ), aAppSel );
+ eAct = ePrev;
+ break;
+ case 'T': // Zeit
+ rEdEng.QuickInsertField( SvxFieldItem( SvxTimeField() ), aAppSel );
+ eAct = ePrev;
+ break;
+ case 'F': // Datei
+ rEdEng.QuickInsertField( SvxFieldItem( SvxExtFileField() ), aAppSel );
+ eAct = ePrev;
+ break;
+ case 'A': // Tabellen-Name
+ rEdEng.QuickInsertField( SvxFieldItem( SvxTableField() ), aAppSel );
+ eAct = ePrev;
+ break;
+ case '\"': // Font
+ eAct = ScanFont;
+ break;
+ default:
+ if( *pAct >= '0' && *pAct <= '9' ) // Font Size
+ eAct = ScanSize;
+ else
+ eAct = ePrev;
+ }
+ break;
+ case AddLeft: // linkes Drittel fuellen
+ case AddMid: // mittleres Drittel fuellen
+ case AddRight: // rechtes Drittel fuellen
+ if( *pAct == '&' )
+ {
+ if( aTmpString.Len() )
+ {
+ rEdEng.QuickInsertText( aTmpString, aAppSel );
+ aTmpString.Erase();
+ }
+
+ eAct = SearchFunc;
+ }
+ else
+ aTmpString += *pAct;
+ break;
+ case ScanFont: // Font ueberlesen
+ if( *pAct == '\"' )
+ eAct = ePrev;
+ break;
+ case ScanSize: // Font Size ueberlesen
+ if( *pAct < '0' || *pAct > '9' )
+ {
+ if( *pAct == '&' )
+ {
+ if( aTmpString.Len() )
+ {
+ rEdEng.QuickInsertText( aTmpString, aAppSel );
+ aTmpString.Erase();
+ }
+
+ eAct = SearchFunc;
+ }
+ else
+ {
+ aTmpString += *pAct;
+ eAct = ePrev;
+ }
+ }
+ break;
+ default:
+ DBG_ERROR( "*ImportExcel::ScanHeadFootParts(): State vergessen!" );
+ }
+ pAct++;
+ }
+
+ if( aTmpString.Len() )
+ {
+ rEdEng.QuickInsertText( aTmpString, aAppSel );
+ aTmpString.Erase();
+ }
+
+ switch( ePrev )
+ {
+ case AddMid:
+ delete rpMid;
+ rpMid = rEdEng.CreateTextObject();
+ break;
+ case AddLeft:
+ delete rpLeft;
+ rpLeft = rEdEng.CreateTextObject();
+ break;
+ case AddRight:
+ delete rpRight;
+ rpRight = rEdEng.CreateTextObject();
+ break;
+ }
+
+ //NN: Calc kommt durcheinander, wenn nicht alle 3 Pointer gesetzt sind:
+ if( !rpMid || !rpLeft || !rpRight )
+ {
+ rEdEng.SetText( EMPTY_STRING );
+ if( !rpMid )
+ rpMid = rEdEng.CreateTextObject();
+ if( !rpLeft )
+ rpLeft = rEdEng.CreateTextObject();
+ if( !rpRight )
+ rpRight = rEdEng.CreateTextObject();
+ }
+}
+
+
+void ImportExcel::GetHF( BOOL bHeader )
+{
+ String aExcHF;
+ EditTextObject* pLeft = NULL;
+ EditTextObject* pMid = NULL;
+ EditTextObject* pRight = NULL;
+
+ GetHFString( aExcHF );
+
+ ScanHeadFootParts( aExcHF, pLeft, pMid, pRight );
+
+ ScPageHFItem* pHFItemLeft;
+ ScPageHFItem* pHFItemRight;
+ if( bHeader )
+ { // erzeuge Header
+ pHFItemLeft = new ScPageHFItem( ATTR_PAGE_HEADERLEFT );
+ pHFItemRight = new ScPageHFItem( ATTR_PAGE_HEADERRIGHT );
+ }
+ else
+ { // erzeuge Footer
+ pHFItemLeft = new ScPageHFItem( ATTR_PAGE_FOOTERLEFT );
+ pHFItemRight = new ScPageHFItem( ATTR_PAGE_FOOTERRIGHT );
+ }
+
+ DBG_ASSERT( pStyleSheetItemSet, "-ImportExcel::SetHF(): kein Set, keine Kopfer/Fusser!" );
+
+ if( pLeft )
+ {
+ pHFItemLeft->SetLeftArea( *pLeft );
+ pHFItemRight->SetLeftArea( *pLeft );
+ delete pLeft;
+ }
+
+ if( pMid )
+ {
+ pHFItemLeft->SetCenterArea( *pMid );
+ pHFItemRight->SetCenterArea( *pMid );
+ delete pMid;
+ }
+
+ if( pRight )
+ {
+ pHFItemLeft->SetRightArea( *pRight );
+ pHFItemRight->SetRightArea( *pRight );
+ delete pRight;
+ }
+
+ pStyleSheetItemSet->Put( *pHFItemLeft );
+ pStyleSheetItemSet->Put( *pHFItemRight );
+
+ delete pHFItemLeft;
+ delete pHFItemRight;
+}
+
+
+void ImportExcel::GetHFString( String& r )
+{
+ ByteString aTmpStr;
+ ReadExcString( LenByte, aTmpStr );
+
+ r = EXCTOSTR( aTmpStr );
+}
+
+
+void ImportExcel::GetAndSetMargin( IMPEXC_MARGINSIDE eSide )
+{
+ double fMargin;
+ aIn >> fMargin;
+ nBytesLeft -= 8;
+ fMargin *= 1440.0;
+ fMargin += 0.4999999999999; // casten -> runden
+
+ DBG_ASSERT( pStyleSheetItemSet, "-ImportExcel::GetAndSetMargin(): nix StyleSheetItemSet!" );
+
+ if( eSide == IMPEXC_MARGINSIDE_TOP || eSide == IMPEXC_MARGINSIDE_BOTTOM )
+ {
+ SvxULSpaceItem aItem( ATTR_ULSPACE );
+ aItem = ( const SvxULSpaceItem& ) pStyleSheetItemSet->Get( ATTR_ULSPACE );
+ if( eSide == IMPEXC_MARGINSIDE_TOP )
+ aItem.SetUpperValue( ( UINT16 ) fMargin );
+ else
+ aItem.SetLowerValue( ( UINT16 ) fMargin );
+ pStyleSheetItemSet->Put( aItem );
+ }
+ else
+ {
+ SvxLRSpaceItem aItem( ATTR_LRSPACE );
+ aItem = ( const SvxLRSpaceItem& ) pStyleSheetItemSet->Get( ATTR_LRSPACE );
+ if( eSide == IMPEXC_MARGINSIDE_RIGHT )
+ aItem.SetRightValue( ( UINT16 ) fMargin );
+ else
+ aItem.SetLeftValue( ( UINT16 ) fMargin );
+ pStyleSheetItemSet->Put( aItem );
+ }
+}
+
+
+String ImportExcel::GetPageStyleName( UINT16 nTab )
+{
+ String aRet( RTL_CONSTASCII_STRINGPARAM( "TAB_" ) );
+ const String* pTabName = pExcRoot->pTabNameBuff->Get( nTab );
+
+ if( pTabName )
+ // wenn Name vorhanden
+ aRet += *pTabName;
+ else
+ {// kein Name vergeben -> Pech gehabt
+ aRet.AppendAscii( "TAB" );
+ aRet += String::CreateFromInt32( nTab );
+ }
+
+ return aRet;
+}
+
+
+EditTextObject* ImportExcel::CreateFormText( BYTE nAnzFrms, const String& rS, const UINT16 nXF )
+{
+ EditEngine& rEdEng = GetEdEng();
+
+ rEdEng.SetText( rS );
+
+ SfxItemSet aItemSet( rEdEng.GetEmptyItemSet() );
+ pExcRoot->pFontBuffer->Fill( pExcRoot->pXF_Buffer->GetExcFont( nXF ), aItemSet, FALSE );
+
+ ESelection aSel( 0, 0 );
+
+ if( nAnzFrms )
+ {
+ BYTE nChar, nFont;
+ const sal_Unicode* pAktChar = rS.GetBuffer();
+ sal_Unicode cAkt = *pAktChar;
+ UINT16 nCnt = 0;
+
+ aIn >> nChar >> nFont;
+ nAnzFrms--;
+
+ while( cAkt )
+ {
+ if( nCnt >= nChar )
+ {// neuer Item-Set
+ rEdEng.QuickSetAttribs( aItemSet, aSel );
+
+ aItemSet.ClearItem( 0 );
+
+ pExcRoot->pFontBuffer->Fill( nFont, aItemSet, FALSE );
+ if( nAnzFrms )
+ {
+ aIn >> nChar >> nFont;
+ nAnzFrms--;
+ }
+ else
+ nChar = 0xFF;
+
+ aSel.nStartPara = aSel.nEndPara;
+ aSel.nStartPos = aSel.nEndPos;
+ }
+
+ if( cAkt == '\n' )
+ {// new Paragraph
+ aSel.nEndPara++;
+ aSel.nEndPos = 0;
+ }
+ else
+ aSel.nEndPos++;
+
+ pAktChar++;
+ cAkt = *pAktChar;
+ nCnt++;
+ }
+
+ // letzten ItemSet setzten
+ rEdEng.QuickSetAttribs( aItemSet, aSel );
+ }
+ else
+ {
+ aSel.nEndPos = rS.Len();
+ rEdEng.QuickSetAttribs( aItemSet, aSel );
+ }
+
+ return rEdEng.CreateTextObject();
+}
+
+
+ScEditEngineDefaulter& ImportExcel::GetEdEng( void ) const
+{
+ return pExcRoot->GetEdEng();
+}
+
+
+void ImportExcel::PostDocLoad( void )
+{
+ ScDocOptions aDocOpt( pD->GetDocOptions() );
+ aDocOpt.SetIgnoreCase( TRUE ); // immer in Excel
+ pD->SetDocOptions( aDocOpt );
+
+ pD->SetExtDocOptions( pExcRoot->pExtDocOpt );
+
+ EndAllChartObjects();
+
+ pD->UpdateAllCharts();
+
+ const UINT16 nLast = pD->GetTableCount();
+ const ScRange* p;
+
+ if( pPrintRanges->HasRanges() )
+ {
+ UINT16 nPos;
+
+ for( UINT16 n = 0 ; n < nLast ; n++ )
+ {
+ p = pPrintRanges->First( n );
+ if( p )
+ {
+ DBG_ASSERT( pPrintRanges->GetActList(),
+ "-ImportExcel::PostDocLoad(): Imaginaere Tabelle gefunden!" );
+
+ pD->SetPrintRangeCount( n, ( UINT16 ) pPrintRanges->GetActList()->Count() );
+
+ nPos = 0;
+
+ while( p )
+ {
+ pD->SetPrintRange( n, nPos, *p );
+
+ nPos++;
+ p = pPrintRanges->Next();
+ }
+ }
+ }
+ }
+
+ if( pPrintTitles->HasRanges() )
+ {
+ for( UINT16 n = 0 ; n < nLast ; n++ )
+ {
+ p = pPrintTitles->First( n );
+ if( p )
+ {
+ DBG_ASSERT( pPrintTitles->GetActList(),
+ "-ImportExcel::PostDocLoad(): Imaginaere Tabelle gefunden!" );
+
+ BOOL bRowVirgin = TRUE;
+ BOOL bColVirgin = TRUE;
+
+ while( p )
+ {
+ if( p->aStart.Col() == 0 && p->aEnd.Col() == MAXCOL && bRowVirgin )
+ {
+ pD->SetRepeatRowRange( n, p );
+ bRowVirgin = FALSE;
+ }
+
+ if( p->aStart.Row() == 0 && p->aEnd.Row() == MAXROW && bColVirgin )
+ {
+ pD->SetRepeatColRange( n, p );
+ bColVirgin = FALSE;
+ }
+
+ p = pPrintTitles->Next();
+ }
+ }
+ }
+ }
+}
+
+
+void ImportExcel::SetTextCell( const UINT16 nC, const UINT16 nR, ByteString& r, const UINT16 nXF )
+{
+ if( nR <= MAXROW && nC <= MAXCOL )
+ {
+ if( r.Len() )
+ {
+ String aStr( r, eQuellChar );
+
+ ScBaseCell* pZelle;
+
+ if( pExcRoot->pXF_Buffer->HasAttribSuperOrSubscript( nXF ) )
+ {// jetzt kommt 'ne Edit-Engine in's Spiel!
+ EditTextObject* pTObj = CreateFormText( 0, aStr, nXF );
+
+ pZelle = new ScEditCell( pTObj, pD, GetEdEng().GetEditTextObjectPool() );
+
+ delete pTObj;
+ }
+ else
+ pZelle = ScBaseCell::CreateTextCell( aStr, pD );
+
+ pD->PutCell( nC, nR, nTab, pZelle, ( BOOL ) TRUE );
+ }
+
+ aColRowBuff.Used( nC, nR );
+
+ pFltTab->SetXF( nC, nR, nXF );
+ }
+ else
+ bTabTruncated = TRUE;
+}
+
+
+UINT16 ImportExcel::CalcColWidth( const UINT16 n )
+{
+ double f = ( double ) n;
+
+ f *= pExcRoot->fColScale;
+ f *= 23.0;
+ f -= 90.0;
+ f *= 25.0 / 1328.0;
+
+ if( f < 0.0 )
+ f = 0.0;
+
+ return ( UINT16 ) f;
+}
+
+
+
+
diff --git a/sc/source/filter/excel/makefile.mk b/sc/source/filter/excel/makefile.mk
new file mode 100644
index 000000000000..645bf6c7d31e
--- /dev/null
+++ b/sc/source/filter/excel/makefile.mk
@@ -0,0 +1,145 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=excel
+
+AUTOSEG=true
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\pch\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ read.cxx \
+ readchrt.cxx \
+ impop.cxx \
+ excimp8.cxx \
+ excel.cxx \
+ excform.cxx \
+ excform8.cxx \
+ fontbuff.cxx \
+ vfbuff.cxx \
+ xfbuff.cxx \
+ tokstack.cxx \
+ spstring.cxx \
+ namebuff.cxx \
+ colrowst.cxx \
+ expop2.cxx \
+ excrecds.cxx \
+ excdoc.cxx \
+ exctools.cxx \
+ excobj.cxx \
+ excchart.cxx \
+ excchrta.cxx \
+ functab.cxx \
+ frmbase.cxx \
+ exccomp.cxx \
+ biffdump.cxx
+
+
+SLOFILES = \
+ $(SLO)$/read.obj \
+ $(SLO)$/readchrt.obj \
+ $(SLO)$/impop.obj \
+ $(SLO)$/excimp8.obj \
+ $(SLO)$/excel.obj \
+ $(SLO)$/excform.obj \
+ $(SLO)$/excform8.obj \
+ $(SLO)$/fontbuff.obj \
+ $(SLO)$/vfbuff.obj \
+ $(SLO)$/xfbuff.obj \
+ $(SLO)$/tokstack.obj \
+ $(SLO)$/spstring.obj \
+ $(SLO)$/namebuff.obj \
+ $(SLO)$/colrowst.obj \
+ $(SLO)$/expop2.obj \
+ $(SLO)$/excrecds.obj \
+ $(SLO)$/excdoc.obj \
+ $(SLO)$/exctools.obj \
+ $(SLO)$/excobj.obj \
+ $(SLO)$/excchart.obj \
+ $(SLO)$/excchrta.obj \
+ $(SLO)$/functab.obj \
+ $(SLO)$/frmbase.obj \
+ $(SLO)$/exccomp.obj \
+ $(SLO)$/biffdump.obj
+
+
+EXCEPTIONSFILES = \
+ $(SLO)$/excchrta.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/filter/excel/namebuff.cxx b/sc/source/filter/excel/namebuff.cxx
new file mode 100644
index 000000000000..4448e49f95c8
--- /dev/null
+++ b/sc/source/filter/excel/namebuff.cxx
@@ -0,0 +1,526 @@
+/*************************************************************************
+ *
+ * $RCSfile: namebuff.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <tools/urlobj.hxx>
+#include <string.h>
+
+#include "rangenam.hxx"
+#include "document.hxx"
+#include "compiler.hxx"
+#include "scextopt.hxx"
+
+#include "spstring.hxx"
+#include "namebuff.hxx"
+#include "root.hxx"
+#include "tokstack.hxx"
+#include "flttools.hxx"
+
+
+const UINT16 RangeNameBuffer::nError = 0xFFFF;
+
+
+
+
+UINT32 StringHashEntry::MakeHashCode( const String& r )
+{
+ register UINT32 n = 0;
+ const sal_Unicode* pAkt = r.GetBuffer();
+ register sal_Unicode cAkt = *pAkt;
+
+ while( cAkt )
+ {
+ n *= 70;
+ n += ( UINT32 ) cAkt;
+ pAkt++;
+ cAkt = *pAkt;
+ }
+
+ return n;
+}
+
+
+
+
+NameBuffer::~NameBuffer()
+{
+ register StringHashEntry* pDel = ( StringHashEntry* ) List::First();
+ while( pDel )
+ {
+ delete pDel;
+ pDel = ( StringHashEntry* ) List::Next();
+ }
+}
+
+
+//void NameBuffer::operator <<( const SpString &rNewString )
+void NameBuffer::operator <<( const String &rNewString )
+{
+ DBG_ASSERT( Count() + nBase < 0xFFFF,
+ "*NameBuffer::GetLastIndex(): Ich hab' die Nase voll!" );
+
+ List::Insert( new StringHashEntry( rNewString ), LIST_APPEND );
+}
+
+
+void NameBuffer::Reset()
+{
+ register StringHashEntry* pDel = ( StringHashEntry* ) List::First();
+ while( pDel )
+ {
+ delete pDel;
+ pDel = ( StringHashEntry* ) List::Next();
+ }
+ Clear();
+}
+
+
+BOOL NameBuffer::Find( const sal_Char* pRefName, UINT16& rIndex )
+{
+ StringHashEntry aRefEntry( String::CreateFromAscii( pRefName ) );
+
+ register StringHashEntry* pFind = ( StringHashEntry* ) List::First();
+ register UINT16 nCnt = nBase;
+ while( pFind )
+ {
+ if( *pFind == aRefEntry )
+ {
+ rIndex = nCnt;
+ return TRUE;
+ }
+ pFind = ( StringHashEntry* ) List::Next();
+ nCnt++;
+ }
+
+ return FALSE;
+}
+
+
+
+
+void RangeNameBuffer::Store( ByteString& r, const ScTokenArray* p, UINT16 n, const BOOL b )
+{
+ Store( String( r, *pExcRoot->pCharset ), p, n, b );
+}
+
+
+void RangeNameBuffer::Store( String& rName, const ScTokenArray* pDef, UINT16 nAltSheet, const BOOL bPrintarea )
+{
+ if( pDef )
+ {
+ DBG_ASSERT( Count() < 0xFFFF,
+ "*RangeNameBuffer::Store(): max. 64K Names!" );
+
+ // Name schon vorhanden?
+ UINT16 nDummy;
+ if( pExcRoot->pScRangeName->SearchName( rName, nDummy ) )
+ {
+ rName.AppendAscii( "___" );
+ rName += String::CreateFromInt32( nAltSheet );
+ }
+
+ ScRangeData* pData = new ScRangeData( pExcRoot->pDoc, rName, *pDef );
+
+ pData->GuessPosition();
+ pData->SetIndex( ( UINT16 ) Count() );
+
+ if( bPrintarea )
+ pData->AddType( RT_PRINTAREA );
+
+ pExcRoot->pScRangeName->Insert( pData );
+
+ Insert( ( void* ) TRUE, LIST_APPEND );
+ }
+ else
+ Insert( ( void* ) FALSE, LIST_APPEND );
+}
+
+
+
+
+#ifdef DBG_UTIL
+UINT16 nShrCnt;
+#endif
+
+
+ShrfmlaBuffer::ShrfmlaBuffer( RootData* pRD ) :
+ ExcRoot( pRD )
+{
+ nBase = 16384; // Range~ und Shared~ Dingens mit jeweils der Haelfte Ids
+
+#ifdef DBG_UTIL
+ nShrCnt = 0;
+#endif
+}
+
+
+ShrfmlaBuffer::~ShrfmlaBuffer()
+{
+ register ScAddress* pDel = ( ScAddress* ) List::First();
+
+ while( pDel )
+ {
+ delete pDel;
+ pDel = ( ScAddress* ) List::Next();
+ }
+}
+
+
+void ShrfmlaBuffer::Store( const ScRange& rRange, const ScTokenArray& rToken )
+{
+ String aName( RTL_CONSTASCII_STRINGPARAM( "SHARED_FORMULA_" ) );
+ aName += String::CreateFromInt32( List::Count() );
+
+ DBG_ASSERT( List::Count() + nBase <= 0xFFFF, "*ShrfmlaBuffer::Store(): Gleich wird mir schlecht...!" );
+
+ ScRangeData* pData = new ScRangeData( pExcRoot->pDoc, aName, rToken, 0, 0, 0, RT_SHARED );
+
+ pData->GuessPosition();
+ pData->SetIndex( ( UINT16 ) ( List::Count() + nBase ) );
+
+ pExcRoot->pScRangeName->Insert( pData );
+
+ ScRange* pNew = new ScRange( rRange );
+ Insert( pNew, LIST_APPEND );
+}
+
+
+UINT16 ShrfmlaBuffer::Find( const ScAddress aAddr )
+{
+ register ScRange* pAkt = ( ScRange* ) List::First();
+ ScAddress aSearchAddr( aAddr );
+
+ register UINT16 nPos = nBase;
+
+ while( pAkt )
+ {
+ if( pAkt->aStart == aSearchAddr )
+ return nPos;
+
+ nPos++;
+ pAkt = ( ScRange* ) List::Next();
+ }
+
+ nPos = nBase;
+ pAkt = ( ScRange* ) List::First();
+
+ while( pAkt )
+ {
+ if( pAkt->In( aSearchAddr ) )
+ return nPos;
+
+ nPos++;
+ pAkt = ( ScRange* ) List::Next();
+ }
+
+ return nPos;
+}
+
+
+
+
+ExtSheetBuffer::~ExtSheetBuffer()
+{
+ Cont *pAkt = ( Cont * ) List::First();
+ while( pAkt )
+ {
+ delete pAkt;
+ pAkt = ( Cont * ) List::Next();
+ }
+}
+
+
+void ExtSheetBuffer::Add( const String& rFPAN, const String& rTN, const BOOL bSWB )
+{
+ List::Insert( new Cont( rFPAN, rTN, bSWB ), LIST_APPEND );
+}
+
+
+void ExtSheetBuffer::AddLink( const String& rComplStr )
+{
+ String aAppl;
+ String aDoc;
+
+ const sal_Unicode* pAct = rComplStr.GetBuffer();
+ sal_Unicode cAct = *pAct;
+ BOOL bDDE = FALSE;
+
+ while( cAct )
+ {
+ if( cAct == 0x03 )
+ {
+ *( ( sal_Unicode* ) pAct ) = 0x00;
+ aAppl = rComplStr.GetBuffer();
+ *( ( sal_Unicode* ) pAct ) = cAct;
+ cAct = 0x00;
+ bDDE = TRUE;
+ aDoc = pAct + 1;
+ }
+ else
+ {
+ pAct++;
+ cAct = *pAct;
+ }
+ }
+
+ if( !bDDE )
+ aDoc = rComplStr; // ????????????????????????????????????????????
+
+ Cont* pNew = new Cont( aAppl, aDoc );
+ pNew->bLink = bDDE;
+
+ List::Insert( pNew, LIST_APPEND );
+}
+
+
+BOOL ExtSheetBuffer::GetScTabIndex( UINT16 nExcIndex, UINT16& rScIndex )
+{
+ DBG_ASSERT( nExcIndex,
+ "*ExtSheetBuffer::GetScTabIndex(): Sheet-Index == 0!" );
+
+ nExcIndex--;
+ Cont* pCur = ( Cont * ) List::GetObject( nExcIndex );
+ UINT16& rTabNum = pCur->nTabNum;
+
+ if( pCur )
+ {
+ if( rTabNum < 0xFFFD )
+ {
+ rScIndex = rTabNum;
+ return TRUE;
+ }
+
+ if( rTabNum == 0xFFFF )
+ {// neue Tabelle erzeugen
+ UINT16 nNewTabNum;
+ if( pCur->bSWB )
+ {// Tabelle ist im selben Workbook!
+ if( pExcRoot->pDoc->GetTable( pCur->aTab, nNewTabNum ) )
+ {
+ rScIndex = rTabNum = nNewTabNum;
+ return TRUE;
+ }
+ else
+ rTabNum = 0xFFFD;
+ }
+ else
+ {// Tabelle ist 'echt' extern
+ if( pExcRoot->pExtDocOpt->nLinkCnt < 1 )
+ {
+ String aURL( ScGlobal::GetAbsDocName( pCur->aFile,
+ pExcRoot->pDoc->GetDocumentShell() ) );
+ String aTabName( ScGlobal::GetDocTabName( aURL, pCur->aTab ) );
+ if( pExcRoot->pDoc->LinkExternalTab( nNewTabNum, aTabName, aURL, pCur->aTab ) )
+ {
+ rScIndex = rTabNum = nNewTabNum;
+ return TRUE;
+ }
+ else
+ rTabNum = 0xFFFE; // Tabelle einmal nicht angelegt -> wird
+ // wohl auch nicht mehr gehen...
+ }
+ else
+ rTabNum = 0xFFFE;
+
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+
+BOOL ExtSheetBuffer::IsLink( const UINT16 nExcIndex ) const
+{
+ DBG_ASSERT( nExcIndex > 0, "*ExtSheetBuffer::IsLink(): Index muss >0 sein!" );
+ Cont* pRet = ( Cont * ) List::GetObject( nExcIndex - 1 );
+
+ if( pRet )
+ return pRet->bLink;
+ else
+ return FALSE;
+}
+
+
+BOOL ExtSheetBuffer::GetLink( const UINT16 nExcIndex, String& rAppl, String& rDoc ) const
+{
+ DBG_ASSERT( nExcIndex > 0, "*ExtSheetBuffer::GetLink(): Index muss >0 sein!" );
+ Cont* pRet = ( Cont * ) List::GetObject( nExcIndex - 1 );
+
+ if( pRet )
+ {
+ rAppl = pRet->aFile;
+ rDoc = pRet->aTab;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+
+void ExtSheetBuffer::Reset( void )
+{
+ Cont *pAkt = ( Cont * ) List::First();
+ while( pAkt )
+ {
+ delete pAkt;
+ pAkt = ( Cont * ) List::Next();
+ }
+
+ List::Clear();
+}
+
+
+
+
+BOOL ExtName::IsDDE( void ) const
+{
+ return ( nFlags & 0x0001 ) != 0;
+}
+
+
+BOOL ExtName::IsOLE( void ) const
+{
+ return ( nFlags & 0x0002 ) != 0;
+}
+
+
+BOOL ExtName::IsName( void ) const
+{
+ return ( nFlags & 0x0004 ) != 0;
+}
+
+
+
+
+const sal_Char* ExtNameBuff::pJoostTest = "Joost ist doof!";
+
+
+ExtNameBuff::~ExtNameBuff()
+{
+ ExtName* pDel = ( ExtName* ) List::First();
+ while( pDel )
+ {
+ delete pDel;
+ pDel = ( ExtName* ) List::Next();
+ }
+}
+
+
+void ExtNameBuff::AddDDE( const String& rName )
+{
+ ExtName* pNew = new ExtName( rName );
+ pNew->nFlags = 0x0001;
+
+ List::Insert( pNew, LIST_APPEND );
+}
+
+
+void ExtNameBuff::AddOLE( const String& rName, UINT32 nStorageId )
+{
+ ExtName* pNew = new ExtName( rName );
+ pNew->nFlags = 0x0002;
+ pNew->nStorageId = nStorageId;
+
+ List::Insert( pNew, LIST_APPEND );
+}
+
+
+void ExtNameBuff::AddName( const String& rName )
+{
+ ExtName* pNew = new ExtName( rName );
+ pNew->nFlags = 0x0004;
+
+ List::Insert( pNew, LIST_APPEND );
+}
+
+
+const ExtName* ExtNameBuff::GetName( const UINT16 nExcelIndex ) const
+{
+ DBG_ASSERT( nExcelIndex > 0, "*ExtNameBuff::GetName(): Index kann nur >0 sein!" );
+
+ return ( const ExtName* ) List::GetObject( nExcelIndex - 1 );
+}
+
+
+void ExtNameBuff::Reset( void )
+{
+ ExtName* pDel = ( ExtName* ) List::First();
+ while( pDel )
+ {
+ delete pDel;
+ pDel = ( ExtName* ) List::Next();
+ }
+
+ sal_Char cTmp = *pJoostTest;
+ cTmp++;
+
+ List::Clear();
+}
+
+
diff --git a/sc/source/filter/excel/read.cxx b/sc/source/filter/excel/read.cxx
new file mode 100644
index 000000000000..4538416c4f1b
--- /dev/null
+++ b/sc/source/filter/excel/read.cxx
@@ -0,0 +1,1759 @@
+/*************************************************************************
+ *
+ * $RCSfile: read.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:11 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "document.hxx"
+#include "docoptio.hxx"
+#include "globstr.hrc"
+#include "scerrors.hxx"
+#include "stlsheet.hxx"
+#include "stlpool.hxx"
+
+#include "root.hxx"
+#include "imp_op.hxx"
+#include "excimp8.hxx"
+#include "fltprgrs.hxx"
+
+#include "biffdump.hxx"
+#include "fontbuff.hxx"
+
+#ifdef DBG_UTIL
+ByteString& AddRecordName( UINT16 nOpcode, ByteString& rRet );
+#endif
+
+
+FltError ImportExcel::Read( void )
+{
+ UINT16 nOpcode; // aktueller Opcode
+ UINT16 nLaengeRec; // Laenge aktueller Record
+ UINT32 nTempPos; // Temporaer fuer Z_Biff5Pre fuer
+ // alte Stream-Pos
+ UINT32 nNextRecord; // Stream-Pos des naechsten Records
+
+ const BOOL bWithDrawLayer = pD->GetDrawLayer() != NULL;
+
+ enum Zustand {
+ Z_BiffNull, // Nicht in gueltigem Biff-Format
+ Z_Biff2, // Biff2: nur eine Tabelle
+ Z_Biff2C, // Biff2: Chart
+
+ Z_Biff3, // Biff3: nur eine Tabelle
+ Z_Biff3C, // Biff3: Chart
+
+ Z_Biff4, // Biff4: nur eine Tabelle
+ Z_Biff4W, // Biff4 Workbook: Globals
+ Z_Biff4I, // Biff4 Workbook: Initiales fuer eine Tabelle
+ Z_Biff4T, // Biff4 Workbook: eine Tabelle selbst
+ Z_Biff4E, // Biff4 Workbook: zwischen den Tabellen
+ Z_Biff4C, // Biff4: Chart
+
+ Z_Biff5WPre,// Biff5: Prefetch Workbook
+ Z_Biff5W, // Biff5: Globals
+ Z_Biff5I, // Biff5: Initiales fuer eine Tabelle
+ Z_Biff5T, // Biff5: eine Tabelle selbst
+ Z_Biff5E, // Biff5: zwischen den Tabellen
+ Z_Biff5Pre, // Biff5: Prefetch fuer Shrfmla/Array Formula
+ Z_Biff5C, // Biff5: Chart
+ Z_Biffn0, // Alle Biffs: Tabelle bis naechstesss EOF ueberlesen
+ Z_Ende };
+
+ Zustand eAkt = Z_BiffNull, ePrev = Z_BiffNull;
+
+ FltError eLastErr = eERR_OK;
+
+ DBG_ASSERT( &aIn != NULL, "-ImportExcel::Read(): Kein Stream - wie dass?!" );
+
+ FilterProgressBar* pPrgrsBar = new FilterProgressBar( aIn );
+
+ const UINT32 nLimitPos = pPrgrsBar->GetStreamLen();
+
+ nNextRecord = aIn.Tell();
+
+ while( eAkt != Z_Ende )
+ {
+ if( aIn.Tell() >= nLimitPos )
+ {
+#ifdef __DBG_UTIL
+ eAkt = Z_Ende;
+#endif
+ break;
+ }
+
+ aIn >> nOpcode >> nLaengeRec;
+
+ nBytesLeft = nLaengeRec;
+ nNextRecord += 4;
+ nNextRecord += nLaengeRec; // alles klar zum Seeken
+
+ if( eAkt != Z_Biff5Pre && eAkt != Z_Biff5WPre )
+ pPrgrsBar->Progress();
+
+ switch( eAkt )
+ {
+ // ----------------------------------------------------------------
+ case Z_BiffNull: // ------------------------------- Z_BiffNull -
+ {
+ switch( nOpcode )
+ {
+ case 0x09: // BOF [ 2 ]
+ Bof2();
+ pExcRoot->pColor->SetDefaults();
+ if( pExcRoot->eDateiTyp == Biff2 )
+ {
+ eAkt = Z_Biff2;
+ pExcRoot->eGlobalDateiTyp = Biff2;
+ ResetBof();
+ NeueTabelle();
+ }
+ break;
+ case 0x0209: // BOF [ 3 ]
+ Bof3();
+ pExcRoot->pColor->SetDefaults();
+ if( pExcRoot->eDateiTyp == Biff3 )
+ {
+ eAkt = Z_Biff3;
+ pExcRoot->eGlobalDateiTyp = Biff3;
+ ResetBof();
+ NeueTabelle();
+ }
+ break;
+ case 0x0409: // BOF [ 4 ]
+ Bof4();
+ pExcRoot->pColor->SetDefaults();
+ if( pExcRoot->eDateiTyp == Biff4 )
+ {
+ eAkt = Z_Biff4;
+ pExcRoot->eGlobalDateiTyp = Biff4;
+ ResetBof();
+ NeueTabelle();
+ }
+ else if( pExcRoot->eDateiTyp == Biff4W )
+ {
+ eAkt = Z_Biff4W;
+ pExcRoot->eGlobalDateiTyp = Biff4W;
+ }
+ break;
+ case 0x0809: // BOF [ 5]
+ {
+ Bof5();
+ pExcRoot->pColor->SetDefaults();
+ if( pExcRoot->eDateiTyp == Biff5W )
+ {
+ pExcRoot->eGlobalDateiTyp = Biff5W;
+ eAkt = Z_Biff5WPre;
+
+ nBdshtTab = 0;
+
+ aIn.Seek( nNextRecord );
+ nBytesLeft = 0;
+ nTempPos = nNextRecord; // und Position merken
+ }
+
+ DBG_ASSERT( pExcRoot->eDateiTyp != Biff5,
+ "+ImportExcel::Read(): Tabelle ohne Workbook!" );
+ }
+ break;
+ }
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff2: // ---------------------------------- Z_Biff2 -
+ {
+ switch( nOpcode )
+ {
+ case 0x00: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x01: Blank25(); break; // BLANK [ 2 5]
+ case 0x02: Integer(); break; // INTEGER [ 2 ]
+ case 0x03: Number25(); break; // NUMBER [ 2 5]
+ case 0x04: Label25(); break; // LABEL [ 2 5]
+ case 0x05: Boolerr25(); break; // BOOLERR [ 2 5]
+ case 0x06: Formula25(); break; // FORMULA [ 2 5]
+ case 0x07: RecString(); break; // STRING [ 2345]
+ case 0x08: Row25(); break; // ROW [ 2 5]
+ case 0x0A: // EOF [ 2345]
+ EndSheet();
+ eAkt = Z_Ende;
+ break;
+ case 0x14: Header(); break; // HEADER [ 2345]
+ case 0x15: Footer(); break; // FOOTER [ 2345]
+ case 0x17: Externsheet(); break; // EXTERNSHEET [ 2345]
+ case 0x18: Name25(); break; // NAME [ 2 5]
+ case 0x1C: Note(); break; // NOTE [ 2345]
+ case 0x1D: Selection(); break; // SELECTION [ 2345]
+ case 0x1E: Format235(); break; // FORMAT [ 23 5]
+ case 0x1F: Formatcount(); break; // FORMATCOUNT [ 2 ]
+ case 0x20: Columndefault(); break; // COLUMNDEFAULT[ 2 ]
+ case 0x21: Array25(); break; // ARRAY [ 2 5]
+ case 0x23: Externname25(); break; // EXTERNNAME [ 2 5]
+ case 0x24: Colwidth(); break; // COLWIDTH [ 2 ]
+ case 0x25: Defrowheight2(); break; // DEFAULTROWHEI[ 2 ]
+ case 0x26: Leftmargin(); break; // LEFTMARGIN [ 2345]
+ case 0x27: Rightmargin(); break; // RIGHTMARGIN [ 2345]
+ case 0x28: Topmargin(); break; // TOPMARGIN [ 2345]
+ case 0x29: Bottommargin(); break; // BOTTOMMARGIN [ 2345]
+ case 0x2A: Printheaders(); break; // PRINTHEADERS [ 2345]
+ case 0x2F: // FILEPASS [ 2345]
+ if( Filepass() )
+ {
+ eLastErr = eERR_FILEPASSWD;
+ eAkt = Z_Ende;
+ }
+ break;
+ case 0x31: Font25(); break; // FONT [ 2 5]
+ case 0x41: Pane(); break; // PANE [ 2345]
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345]
+ case 0x43: XF2(); break; // XF [ 2 ]
+ case 0x44: Ixfe(); break; // IXFE [ 2 ]
+ case 0x0200: Dimensions(); break; // DIMENSIONS [ 2345]
+ }
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff3: // ---------------------------------- Z_Biff3 -
+ {
+ switch( nOpcode )
+ {
+ case 0x00: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x0A: // EOF [ 2345]
+ EndSheet();
+ eAkt = Z_Ende;
+ break;
+ case 0x14: Header(); break; // HEADER [ 2345]
+ case 0x15: Footer(); break; // FOOTER [ 2345]
+ case 0x17: Externsheet(); break; // EXTERNSHEET [ 2345]
+ case 0x1A: Verticalpagebreaks(); break;
+ case 0x1B: Horizontalpagebreaks(); break;
+ case 0x1C: Note(); break; // NOTE [ 2345]
+ case 0x1D: Selection(); break; // SELECTION [ 2345]
+ case 0x1E: Format235(); break; // FORMAT [ 23 5]
+ case 0x22: Rec1904(); break; // 1904 [ 2345]
+ case 0x26: Leftmargin(); break; // LEFTMARGIN [ 2345]
+ case 0x27: Rightmargin(); break; // RIGHTMARGIN [ 2345]
+ case 0x28: Topmargin(); break; // TOPMARGIN [ 2345]
+ case 0x29: Bottommargin(); break; // BOTTOMMARGIN [ 2345]
+ case 0x2A: Printheaders(); break; // PRINTHEADERS [ 2345]
+ case 0x2B: Prntgrdlns(); break; // PRINTGRIDLINE[ 2345]
+ case 0x2F: // FILEPASS [ 2345]
+ if( Filepass() )
+ {
+ eLastErr = eERR_FILEPASSWD;
+ eAkt = Z_Ende;
+ }
+ break;
+ case 0x41: Pane(); break; // PANE [ 2345]
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345]
+ case 0x56: Builtinfmtcnt(); break; // BUILTINFMTCNT[ 34 ]
+ case 0x7D: Colinfo(); break; // COLINFO [ 345]
+ case 0x8C: Country(); break; // COUNTRY [ 345]
+ case 0x92: Palette(); break; // PALETTE [ 345]
+ case 0x0200: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x0201: Blank34(); break; // BLANK [ 34 ]
+ case 0x0203: Number34(); break; // NUMBER [ 34 ]
+ case 0x0204: Label34(); break; // LABEL [ 34 ]
+ case 0x0205: Boolerr34(); break; // BOOLERR [ 34 ]
+ case 0x0206: Formula3(); break; // FORMULA [ 3 ]
+ case 0x0207: RecString(); break; // STRING [ 2345]
+ case 0x0208: Row34(); break; // ROW [ 34 ]
+ case 0x0218: Name34(); break; // NAME [ 34 ]
+ case 0x0221: Array34(); break; // ARRAY [ 34 ]
+ case 0x0223: Externname34(); break; // EXTERNNAME [ 34 ]
+ case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[ 345]
+ case 0x0231: Font34(); break; // FONT [ 34 ]
+ case 0x023E: Window2_5(); break; // WINDOW [ 5]
+ case 0x0243: XF3(); break; // XF [ 3 ]
+ case 0x027E: Rk(); break; // RK [ 34 ]
+ }
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff4: // ---------------------------------- Z_Biff4 -
+ {
+ switch( nOpcode )
+ {
+ case 0x00: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x0A: // EOF [ 2345]
+ EndSheet();
+ eAkt = Z_Ende;
+ break;
+ case 0x14: Header(); break; // HEADER [ 2345]
+ case 0x15: Footer(); break; // FOOTER [ 2345]
+ case 0x17: Externsheet(); break; // EXTERNSHEET [ 2345]
+ case 0x1A: Verticalpagebreaks(); break;
+ case 0x1B: Horizontalpagebreaks(); break;
+ case 0x1C: Note(); break; // NOTE [ 2345]
+ case 0x1D: Selection(); break; // SELECTION [ 2345]
+ case 0x22: Rec1904(); break; // 1904 [ 2345]
+ case 0x2F: // FILEPASS [ 2345]
+ if( Filepass() )
+ {
+ eLastErr = eERR_FILEPASSWD;
+ eAkt = Z_Ende;
+ }
+ case 0x41: Pane(); break; // PANE [ 2345]
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345]
+ case 0x55: DefColWidth(); break;
+ case 0x56: Builtinfmtcnt(); break; // BUILTINFMTCNT[ 34 ]
+ case 0x7D: Colinfo(); break; // COLINFO [ 345]
+ case 0x8C: Country(); break; // COUNTRY [ 345]
+ case 0x92: Palette(); break; // PALETTE [ 345]
+ case 0x99: Standardwidth(); break; // STANDARDWIDTH[ 45]
+ case 0xA1: Setup(); break; // SETUP [ 45]
+ case 0x0200: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x0201: Blank34(); break; // BLANK [ 34 ]
+ case 0x0203: Number34(); break; // NUMBER [ 34 ]
+ case 0x0204: Label34(); break; // LABEL [ 34 ]
+ case 0x0205: Boolerr34(); break; // BOOLERR [ 34 ]
+ case 0x0207: RecString(); break; // STRING [ 2345]
+ case 0x0208: Row34(); break; // ROW [ 34 ]
+ case 0x0218: Name34(); break; // NAME [ 34 ]
+ case 0x0221: Array34(); break; // ARRAY [ 34 ]
+ case 0x0223: Externname34(); break; // EXTERNNAME [ 34 ]
+ case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[ 345]
+ case 0x0231: Font34(); break; // FONT [ 34 ]
+ case 0x023E: Window2_5(); break; // WINDOW [ 5]
+ case 0x027E: Rk(); break; // RK [ 34 ]
+ case 0x0406: Formula4(); break; // FORMULA [ 4 ]
+ case 0x041E: Format4(); break; // FORMAT [ 4 ]
+ case 0x0443: XF4(); break; // XF [ 4 ]
+ }
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff4W: // --------------------------------- Z_Biff4W -
+ {
+ switch( nOpcode )
+ {
+ case 0x0A: // EOF [ 2345]
+ eAkt = Z_Ende;
+ break;
+ case 0x2F: // FILEPASS [ 2345]
+ if( Filepass() )
+ {
+ eLastErr = eERR_FILEPASSWD;
+ eAkt = Z_Ende;
+ }
+ break;
+ case 0x17: Externsheet(); break; // EXTERNSHEET [ 2345]
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345]
+ case 0x55: DefColWidth(); break;
+ case 0x56: Builtinfmtcnt(); break; // BUILTINFMTCNT[ 34 ]
+ case 0x8C: Country(); break; // COUNTRY [ 345]
+ case 0x8F: Bundleheader(); break; // BUNDLEHEADER [ 4 ]
+ case 0x92: Palette(); break; // PALETTE [ 345]
+ case 0x99: Standardwidth(); break; // STANDARDWIDTH[ 45]
+ case 0x0218: Name34(); break; // NAME [ 34 ]
+ case 0x0223: Externname34(); break; // EXTERNNAME [ 34 ]
+ case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[ 345]
+ case 0x0231: Font34(); break; // FONT [ 34 ]
+ case 0x0409: // BOF [ 4 ]
+ Bof4();
+ if( pExcRoot->eDateiTyp == Biff4 )
+ {
+ eAkt = Z_Biff4I;
+ NeueTabelle();
+ }
+ else
+ eAkt = Z_Ende;
+ break;
+ case 0x041E: Format4(); break; // FORMAT [ 4 ]
+ case 0x0443: XF4(); break; // XF [ 4 ]
+ }
+
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff4I: // --------------------------------- Z_Biff4I -
+ {
+ switch( nOpcode )
+ {
+ case 0x00: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x0A: // EOF [ 2345]
+ eAkt = Z_Biff4E;
+ nTab++;
+ break;
+ case 0x14: Header(); break; // HEADER [ 2345]
+ case 0x15: Footer(); break; // FOOTER [ 2345]
+ case 0x1A: Verticalpagebreaks(); break;
+ case 0x1B: Horizontalpagebreaks(); break;
+ case 0x1C: // NOTE [ 2345]
+ Note();
+ eAkt = Z_Biff4T;
+ break;
+ case 0x1D: Selection(); break; // SELECTION [ 2345]
+ case 0x2F: // FILEPASS [ 2345]
+ if( Filepass() )
+ {
+ eLastErr = eERR_FILEPASSWD;
+ eAkt = Z_Ende;
+ }
+ break;
+ case 0x41: Pane(); break; // PANE [ 2345]
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345]
+ case 0x55: DefColWidth(); break;
+ case 0x56: Builtinfmtcnt(); break; // BUILTINFMTCNT[ 34 ]
+ case 0x7D: Colinfo(); break; // COLINFO [ 345]
+ case 0x8C: Country(); break; // COUNTRY [ 345]
+ case 0x8F: Bundleheader(); break; // BUNDLEHEADER [ 4 ]
+ case 0x92: Palette(); break; // PALETTE [ 345]
+ case 0x99: Standardwidth(); break; // STANDARDWIDTH[ 45]
+ case 0xA1: Setup(); break; // SETUP [ 45]
+ case 0x0200: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x0201: // BLANK [ 34 ]
+ Blank34();
+ eAkt = Z_Biff4T;
+ break;
+ case 0x0203: // NUMBER [ 34 ]
+ Number34();
+ eAkt = Z_Biff4T;
+ break;
+ case 0x0204: // LABEL [ 34 ]
+ Label34();
+ eAkt = Z_Biff4T;
+ break;
+ case 0x0205: // BOOLERR [ 34 ]
+ Boolerr34();
+ eAkt = Z_Biff4T;
+ break;
+ case 0x0208: Row34(); break; // ROW [ 34 ]
+ case 0x0218: Name34(); break; // NAME [ 34 ]
+ case 0x0221: // ARRAY [ 34 ]
+ Array34();
+ eAkt = Z_Biff4T;
+ break;
+ case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[ 345]
+ case 0x0231: Font34(); break; // FONT [ 34 ]
+ case 0x027E: // RK [ 34 ]
+ Rk();
+ eAkt = Z_Biff4T;
+ break;
+ case 0x0406: // FORMULA [ 4 ]
+ Formula4();
+ eAkt = Z_Biff4T;
+ case 0x041E: Format4(); break; // FORMAT [ 4 ]
+ case 0x0443: XF4(); break; // XF [ 4 ]
+ break;
+ }
+
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff4T: // --------------------------------- Z_Biff4T -
+ {
+ switch( nOpcode )
+ {
+ case 0x0A: // EOF [ 2345]
+ EndSheet();
+ nTab++;
+ eAkt = Z_Biff4E;
+ break;
+ case 0x1C: Note(); break; // NOTE [ 2345]
+ case 0x0201: Blank34(); break; // BLANK [ 34 ]
+ case 0x0203: Number34(); break; // NUMBER [ 34 ]
+ case 0x0204: Label34(); break; // LABEL [ 34 ]
+ case 0x0205: Boolerr34(); break; // BOOLERR [ 34 ]
+ case 0x0207: RecString(); break; // STRING [ 2345]
+ case 0x0208: Row34(); break; // ROW [ 34 ]
+ case 0x0221: Array34(); break; // ARRAY [ 34 ]
+ case 0x023E: Window2_5(); break; // WINDOW [ 5]
+ case 0x027E: Rk(); break; // RK [ 34 ]
+ case 0x0406: Formula4(); break; // FORMULA [ 4 ]
+ }
+
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff4E: // --------------------------------- Z_Biff4E -
+ {
+ switch( nOpcode )
+ {
+ case 0x0A: // EOF [ 2345]
+ eAkt = Z_Ende;
+ break;
+ case 0x8F: break; // BUNDLEHEADER [ 4 ]
+ case 0x0409: // BOF [ 4 ]
+ Bof4();
+ NeueTabelle();
+ if( pExcRoot->eDateiTyp == Biff4 )
+ {
+ eAkt = Z_Biff4I;
+ ResetBof();
+ }
+ else
+ {
+ ePrev = eAkt;
+ eAkt = Z_Biffn0;
+ }
+ break;
+ }
+
+ }
+ break;
+ case Z_Biff5WPre: // ------------------------------ Z_Biff5WPre -
+ {
+ switch( nOpcode )
+ {
+ case 0x0A: // EOF [ 2345]
+ eAkt = Z_Biff5W;
+ nNextRecord = nTempPos; // und zurueck an alte Position
+ break;
+ case 0x2F: // FILEPASS [ 2345]
+ if( Filepass() )
+ {
+ eLastErr = eERR_FILEPASSWD;
+ eAkt = Z_Ende;
+ }
+ break;
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345]
+ case 0x85: Boundsheet(); break; // BOUNDSHEET [ 5]
+ break;
+ }
+ }
+ break;
+ case Z_Biff5W: // --------------------------------- Z_Biff5W -
+ {
+ switch( nOpcode )
+ {
+ case 0x0A: // EOF [ 2345]
+ eAkt = Z_Biff5E;
+ break;
+ case 0x18: Name25(); break; // NAME [ 2 5]
+ case 0x1E: Format235(); break; // FORMAT [ 23 5]
+ case 0x1F: Formatcount(); break; // FORMATCOUNT [ 2 ]
+ case 0x22: Rec1904(); break; // 1904 [ 2345]
+ case 0x25: Defrowheight2(); break; // DEFAULTROWHEI[ 2 ]
+ case 0x2F: // FILEPASS [ 2345]
+ if( Filepass() )
+ {
+ eLastErr = eERR_FILEPASSWD;
+ eAkt = Z_Ende;
+ }
+ break;
+ case 0x31: Font25(); break; // FONT [ 2 5]
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345]
+ case 0x55: DefColWidth(); break;
+ case 0x56: Builtinfmtcnt(); break; // BUILTINFMTCNT[ 34 ]
+ case 0x8C: Country(); break; // COUNTRY [ 345]
+ case 0x8D: Hideobj(); break; // HIDEOBJ [ 345]
+ case 0x92: Palette(); break; // PALETTE [ 345]
+ case 0x99: Standardwidth(); break; // STANDARDWIDTH[ 45]
+ case 0xE0: XF5(); break; // XF [ 5]
+ case 0x0218: Name34(); break; // NAME [ 34 ]
+ case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[ 345]
+ case 0x0231: Font34(); break; // FONT [ 34 ]
+ case 0x0243: XF3(); break; // XF [ 3 ]
+ case 0x041E: Format4(); break; // FORMAT [ 4 ]
+ case 0x0443: XF4(); break; // XF [ 4 ]
+ }
+
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff5I: // --------------------------------- Z_Biff5I -
+ {
+ switch( nOpcode )
+ {
+ case 0x00: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x01: // BLANK [ 2 5]
+ Blank25();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x03: // NUMBER [ 2 5]
+ Number25();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x04: // LABEL [ 2 5]
+ Label25();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x05: // BOOLERR [ 2 5]
+ Boolerr25();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x06: // FORMULA [ 2 5]
+ Formula25();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x0A: // EOF [ 2345]
+ eAkt = Z_Biff5E;
+ nTab++;
+ break;
+ case 0x14: Header(); break; // HEADER [ 2345]
+ case 0x15: Footer(); break; // FOOTER [ 2345]
+ case 0x17: Externsheet(); break; // EXTERNSHEET [ 2345]
+ case 0x1C: // NOTE [ 2345]
+ Note();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x1D: Selection(); break; // SELECTION [ 2345]
+ case 0x23: Externname25(); break; // EXTERNNAME [ 2 5]
+ case 0x26: Leftmargin(); break; // LEFTMARGIN [ 2345]
+ case 0x27: Rightmargin(); break; // RIGHTMARGIN [ 2345]
+ case 0x28: Topmargin(); break; // TOPMARGIN [ 2345]
+ case 0x29: Bottommargin(); break; // BOTTOMMARGIN [ 2345]
+ case 0x2A: Printheaders(); break; // PRINTHEADERS [ 2345]
+ case 0x2B: Prntgrdlns(); break; // PRINTGRIDLINE[ 2345]
+ case 0x2F: // FILEPASS [ 2345]
+ if( Filepass() )
+ {
+ eLastErr = eERR_FILEPASSWD;
+ eAkt = Z_Ende;
+ }
+ break;
+ case 0x5D:
+ if( bWithDrawLayer )
+ Obj();
+
+ eAkt = Z_Biff5T; break;
+ case 0x7E: // RK [ 5]
+ Rk();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x82: Gridset(); break; // GRIDSET [ 345]
+ case 0x83: Hcenter(); break; // HCENTER [ 345]
+ case 0x84: Vcenter(); break; // VCENTER [ 345]
+ case 0xA1: Setup(); break; // SETUP [ 45]
+ case 0xBD: // MULRK [ 5]
+ Mulrk();
+ eAkt = Z_Biff5T;
+ break;
+ case 0xBE: // MULBLANK [ 5]
+ Mulblank();
+ eAkt = Z_Biff5T;
+ break;
+ case 0xD6: // RSTRING [ 5]
+ Rstring();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x0200: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x0201: // BLANK [ 34 ]
+ Blank34();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x0203: // NUMBER [ 34 ]
+ Number34();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x0204: // LABEL [ 34 ]
+ Label34();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x0205: // BOOLERR [ 34 ]
+ Boolerr34();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x0206: // FORMULA [ 3 ]
+ Formula3();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x027E: // RK [ 34 ]
+ Rk();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x0406: // FORMULA [ 4 ]
+ Formula4();
+ eAkt = Z_Biff5T;
+ break;
+ case 0x0809: // BOF [ 5]
+ Bof5();
+ NeueTabelle();
+ if( pExcRoot->eDateiTyp == Biff5C )
+ {
+ ePrev = eAkt;
+ eAkt = Z_Biff5C;
+ }
+ else if( pExcRoot->eDateiTyp == Biff5M4 )
+ {
+ ePrev = eAkt;
+ eAkt = Z_Biffn0;
+ }
+#ifdef DBG_UTIL
+ else
+ {
+ DBG_ASSERT( pExcRoot->eDateiTyp == Biff5C,
+ "-ImportExcel::Read(): Sofort zu mir (GT)!" );
+ }
+#endif
+ break;
+ }
+
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff5T: // --------------------------------- Z_Biff5T -
+ {
+ switch( nOpcode )
+ {
+ case 0x01: Blank25(); break; // BLANK [ 2 5]
+ case 0x03: Number25(); break; // NUMBER [ 2 5]
+ case 0x04: Label25(); break; // LABEL [ 2 5]
+ case 0x05: Boolerr25(); break; // BOOLERR [ 2 5]
+ case 0x06: Formula25(); break; // FORMULA [ 2 5]
+ case 0x07: RecString(); break; // STRING [ 2345]
+ case 0x0A: // EOF [ 2345]
+ EndSheet();
+ nTab++;
+ eAkt = Z_Biff5E;
+ break;
+ case 0x1C: Note(); break; // NOTE [ 2345]
+ case 0x5D: // OBJ [ 2345]
+ if( bWithDrawLayer )
+ Obj();
+
+ break;
+ case 0x7E: Rk(); break; // RK [ 5]
+ case 0xA0: Scl(); break; // SCL [ 45]
+ case 0xBD: Mulrk(); break; // MULRK [ 5]
+ case 0xBE: Mulblank(); break; // MULBLANK [ 5]
+ case 0xD6: Rstring(); break; // RSTRING [ 5]
+ case 0x0201: Blank34(); break; // BLANK [ 34 ]
+ case 0x0203: Number34(); break; // NUMBER [ 34 ]
+ case 0x0204: Label34(); break; // LABEL [ 34 ]
+ case 0x0205: Boolerr34(); break; // BOOLERR [ 34 ]
+ case 0x0206: Formula3(); break; // FORMULA [ 3 ]
+ case 0x0207: RecString(); break; // STRING [ 2345]
+ case 0x027E: Rk(); break; // RK [ 34 ]
+ case 0x0406: Formula4(); break; // FORMULA [ 4 ]
+ case 0x0809: // BOF [ 5]
+ Bof5();
+ if( pExcRoot->eDateiTyp == Biff5C )
+ {
+ ePrev = eAkt;
+ eAkt = Z_Biff5C;
+ }
+ else
+ {
+ ePrev = eAkt;
+ eAkt = Z_Biffn0;
+ }
+
+ DBG_ASSERT( pExcRoot->eDateiTyp == Biff5C,
+ "-ImportExcel::Read(): Sofort zu mir (GT)!" );
+ break;
+ }
+
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff5E: // --------------------------------- Z_Biff5E -
+ {
+ switch( nOpcode )
+ {
+ case 0x0809: // BOF [ 5]
+ Bof5();
+ NeueTabelle();
+ switch( pExcRoot->eDateiTyp )
+ {
+ case Biff5:
+ eAkt = Z_Biff5Pre; // Shrfmla Prefetch, Row-Prefetch
+ aColRowBuff.Reset();
+ pFltTab->Reset();
+
+ aIn.Seek( nNextRecord );
+ nBytesLeft = 0;
+ nTempPos = nNextRecord; // und Position merken
+ break;
+ case Biff5C:
+ eAkt = Z_Biff5C;
+ ePrev = Z_Biff5E;
+ break;
+ case Biff5M4:
+ case Biff5V:
+ default:
+ NeueTabelle();
+ pD->SetVisible( nTab, FALSE );
+ ePrev = eAkt;
+ eAkt = Z_Biffn0;
+ }
+ DBG_ASSERT( pExcRoot->eDateiTyp != Biff5W,
+ "+ImportExcel::Read(): Doppel-Whopper-Workbook!" );
+
+ break;
+ }
+
+ }
+ break;
+ case Z_Biff5Pre: // ------------------------------- Z_Biff5Pre -
+ {
+ switch( nOpcode )
+ {
+ case 0x00: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x08: Row25(); break; // ROW [ 2 5]
+ case 0x0A: // EOF [ 2345]
+ eAkt = Z_Biff5I;
+ nNextRecord = nTempPos; // und zurueck an alte Position
+ aColRowBuff.Apply( nTab );
+#ifdef DBG_UTIL
+aIn.Seek( nNextRecord );
+#endif
+
+ break;
+ case 0x1A: Verticalpagebreaks(); break;
+ case 0x1B: Horizontalpagebreaks(); break;
+ case 0x1D: Selection(); break; // SELECTION [ 2345]
+ case 0x17: Externsheet(); break; // EXTERNSHEET [ 2345]
+ case 0x21: Array25(); break; // ARRAY [ 2 5]
+ case 0x23: Externname25(); break; // EXTERNNAME [ 2 5]
+ case 0x41: Pane(); break; // PANE [ 2345]
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345]
+ case 0x55: DefColWidth(); break;
+ case 0x7D: Colinfo(); break; // COLINFO [ 345]
+ case 0x81: Wsbool(); break; // WSBOOL [ 2345]
+ case 0x8C: Country(); break; // COUNTRY [ 345]
+ case 0x99: Standardwidth(); break; // STANDARDWIDTH[ 45]
+ case 0x0200: Dimensions(); break; // DIMENSIONS [ 2345]
+ case 0x0208: Row34(); break; // ROW [ 34 ]
+ case 0x0221: Array34(); break; // ARRAY [ 34 ]
+ case 0x0223: Externname34(); break; // EXTERNNAME [ 34 ]
+ case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[ 345]
+ case 0x023E: Window2_5(); break; // WINDOW [ 5]
+ case 0x04BC: Shrfmla(); break; // SHRFMLA [ 5]
+ }
+ }
+ break;
+ case Z_Biff5C: // ------------------------------------- Z_Biff5C -
+ {
+ if( bWithDrawLayer )
+ {
+ switch( nOpcode )
+ {
+ case 0x0A: // EOF [ 2345]
+ EndChartObj();
+ eAkt = ePrev; // und retur (zur Tabelle?)
+ break;
+ case 0x1002: ChartChart(); break;
+ case 0x1003: ChartSeries(); break;
+ //case 0x1004: ;break;
+ case 0x1006: ChartDataformat(); break;
+ case 0x1007: ChartLineform(); break;
+ case 0x1009: ChartMarkerformat(); break;
+ case 0x100A: ChartAreaformat(); break;
+ case 0x100B: ChartPieformat(); break;
+ case 0x100C: ChartAttachedlabel(); break;
+ case 0x100D: ChartSeriestext(); break; // SERIESTEXT [ 2345]
+ case 0x1014: ChartChartformat(); break;
+ case 0x1015: ChartLegend(); break;
+ case 0x1016: ChartSerieslist(); break;
+ case 0x1017: ChartBar(); break;
+ case 0x1018: ChartLine(); break;
+ case 0x1019: ChartPie(); break;
+ case 0x101A: ChartArea(); break;
+ //case 0x101B: ;break;
+ case 0x101C: ChartLine(); break;
+ case 0x101D: ChartAxis(); break;
+ case 0x101E: ChartTick(); break;
+ case 0x101F: ChartValuerange(); break;
+ case 0x1020: ChartCatserrange(); break;
+ case 0x1021: ChartAxislineformat(); break;
+ //case 0x1022: ; break;
+ case 0x1024: ChartDefaulttext(); break;
+ case 0x1025: ChartText(); break;
+ case 0x1026: ChartFontx(); break;
+ case 0x1027: ChartObjectLink(); break; // OBJECTLINK [ 2345]
+ case 0x1032: ChartFrame(); break;
+ //case 0x1033: ;break;
+ //case 0x1034: ;break;
+ case 0x1035: ChartPlotarea(); break;
+ case 0x103A: Chart3D(); break;
+ case 0x103C: ChartPicf(); break;
+ case 0x103D: ChartDropbar(); break;
+ case 0x103E: ChartRadar(); break;
+ case 0x103F: ChartSurface(); break;
+ case 0x1040: ChartRadararea(); break;
+ case 0x1041: ChartAxisparent(); break;
+ case 0x1043: ChartLegendxn(); break;
+ case 0x1044: ChartShtprops(); break;
+ case 0x1045: ChartSertocrt(); break;
+ case 0x1046: ChartAxesused(); break;
+ case 0x1048: ChartSbaseref(); break;
+ case 0x104A: ChartSerparent(); break;
+ case 0x104B: ChartSerauxtrend(); break;
+ case 0x104E: ChartIfmt(); break;
+ case 0x104F: ChartPos(); break;
+ case 0x1050: ChartAlruns(); break;
+ case 0x1051: ChartSelection(); break; // AI [ 5]
+ case 0x105B: ChartSerauxerrbar(); break;
+ case 0x105D: ChartSerfmt(); break;
+ }
+ }
+ else if( nOpcode == 0x0A )
+ eAkt = ePrev;
+ }
+ break;
+ case Z_Biffn0: // --------------------------------- Z_Biffn0 -
+ {
+ switch( nOpcode )
+ {
+ case 0x0A: // EOF [ 2345]
+ eAkt = ePrev;
+ nTab++;
+ break;
+ }
+
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Ende: // ----------------------------------- Z_Ende -
+ DBG_ERROR( "*ImportExcel::Read(): Not possible state!" );
+ break;
+ default: DBG_ERROR( "-ImportExcel::Read(): Zustand vergessen!" );
+ }
+
+
+#ifdef DBG_UTIL
+{
+if( nNextRecord < aIn.Tell() && nOpcode != 0x0A )
+{
+ ByteString aDeb( "Biff +ImportExcel::Read(): over drive with " );
+ AddRecordName( nOpcode, aDeb );
+ DBG_WARNING( aDeb.GetBuffer() );
+}
+}
+#endif
+
+ aIn.Seek( nNextRecord ); // zum naechsten Record
+ }
+
+ pD->CalcAfterLoad();
+
+{
+ ScStyleSheetPool* pPool = pD->GetStyleSheetPool();
+
+ UINT16 nTabLast;// = pExcRoot->pTabNameBuff->GetLastIndex();
+ if( pExcRoot->eGlobalDateiTyp == Biff3 || pExcRoot->eGlobalDateiTyp == Biff4 )
+ nTabLast = 1;
+ else
+ nTabLast = pExcRoot->pTabNameBuff->GetLastIndex();
+
+ UINT16 nTabCount;
+ for( nTabCount = 0 ; nTabCount < nTabLast ; nTabCount++ )
+ pD->SetPageStyle( nTabCount, GetPageStyleName( nTabCount ) );
+}
+
+ PostDocLoad();
+
+ delete pPrgrsBar;
+
+ if( bTabTruncated )
+ eLastErr = eERR_RNGOVRFLW;
+
+ return eLastErr;
+}
+
+
+
+
+FltError ImportExcel8::Read( void )
+{
+#ifdef DEBUGGING
+ BOOL bDebugging = TRUE;
+ if( bDebugging )
+ {
+ Biff8RecDumper aDumper( *pExcRoot );
+
+ if( aDumper.Dump( aIn ) )
+ return eERR_OK;
+ }
+#endif
+
+ UINT16 nOpcode; // aktueller Opcode
+ UINT16 nLaengeRec; // Laenge aktueller Record
+ UINT32 nTempPos; // Temporaer fuer Z_Biff8Pre fuer
+ // alte Stream-Pos
+ UINT32 nNextRecord; // Stream-Pos des naechsten Records
+
+ const BOOL bWithDrawLayer = pD->GetDrawLayer() != NULL;
+
+ enum Zustand {
+ Z_BiffNull, // Nicht in gueltigem Biff-Format
+ Z_Biff8WPre,// Biff8: Prefetch Workbook
+ Z_Biff8W, // Biff8: Globals
+ Z_Biff8I, // Biff8: Initiales fuer eine Tabelle
+ Z_Biff8T, // Biff8: eine Tabelle selbst
+ Z_Biff8E, // Biff8: zwischen den Tabellen
+ Z_Biff8Pre, // Biff8: Prefetch fuer Shrfmla/Array Formula
+ Z_Biff8C, // Biff8: Chart (nur noch zum Ueberlesen)
+
+ Z_Biffn0, // Alle Biffs: Tabelle bis naechstesss EOF ueberlesen
+ Z_Ende };
+
+ Zustand eAkt = Z_BiffNull, ePrev = Z_BiffNull;
+
+ FltError eLastErr = eERR_OK;
+
+ DBG_ASSERT( &aIn != NULL,
+ "-ImportExcel::Read(): Kein Stream - wie dass?!" );
+
+ FilterProgressBar* pPrgrsBar = new FilterProgressBar( aIn );
+ pExcRoot->pProgress = pPrgrsBar;
+
+ const UINT32 nLimitPos = pPrgrsBar->GetStreamLen();
+
+ nNextRecord = aIn.Tell();
+
+ while( eAkt != Z_Ende )
+ {
+ if( aIn.Tell() >= nLimitPos )
+ {
+#ifdef __DBG_UTIL
+ eAkt = Z_Ende;
+#endif
+ break;
+ }
+
+ aIn >> nOpcode >> nLaengeRec;
+
+ nBytesLeft = nLaengeRec;
+ nNextRecord += 4;
+ nNextRecord += nLaengeRec;
+
+ if( eAkt != Z_Biff8Pre && eAkt != Z_Biff8WPre )
+ pPrgrsBar->Progress();
+
+ if( nOpcode != 0x5D && nOpcode != 0x3C ) // no obj-record and no cont-record
+ bLeadingObjRec = FALSE;
+
+ switch( eAkt )
+ {
+ case Z_BiffNull: // ------------------------------- Z_BiffNull -
+ {
+ switch( nOpcode )
+ {
+ case 0x0809: // BOF [ 5 8 ]
+ {
+ Bof5();
+
+ pExcRoot->pColor->SetDefaults();
+ if( pExcRoot->eHauptDateiTyp == Biff8 )
+ {
+ pExcRoot->eGlobalDateiTyp = Biff8W;
+ eAkt = Z_Biff8WPre;
+
+ nBdshtTab = 0;
+
+ aIn.Seek( nNextRecord );
+ nBytesLeft = 0;
+ nTempPos = nNextRecord; // und Position merken
+ }
+
+ DBG_ASSERT( pExcRoot->eDateiTyp != Biff8,
+ "+ImportExcel8::Read(): Tabelle ohne Workbook!" );
+ }
+ break;
+ }
+ }
+ break;
+ case Z_Biff8WPre: // ------------------------------ Z_Biff8WPre -
+ {
+ switch( nOpcode )
+ {
+ case 0x0A: // EOF [ 2345 ]
+ eAkt = Z_Biff8W;
+ nNextRecord = nTempPos; // und zurueck an alte Position
+ break;
+ case 0x2F: // FILEPASS [ 2345 ]
+ if( Filepass() )
+ {
+ eLastErr = eERR_FILEPASSWD;
+ eAkt = Z_Ende;
+ }
+ break;
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345 ]
+ case 0x85: Boundsheet(); break; // BOUNDSHEET [ 5 ]
+ break;
+ }
+ }
+ break;
+ case Z_Biff8W: // --------------------------------- Z_Biff8W -
+ {
+ switch( nOpcode )
+ {
+ case 0x0A: // EOF [ 2345 ]
+ eAkt = Z_Biff8E;
+ break;
+ case 0x17: Externsheet(); break; // EXTERNSHEET [ 2345 8 ]
+ case 0x18: Name(); break; // NAME [ 2 5 8 ]
+ case 0x1F: Formatcount(); break; // FORMATCOUNT [ 2 ]
+ case 0x22: Rec1904(); break; // 1904 [ 2345 ]
+ case 0x23: Externname(); break; // EXTERNNAME [ 8 ]
+ case 0x25: Defrowheight2(); break; // DEFAULTROWHEI[ 2 ]
+ case 0x31: Font(); break; // FONT [ 2 5 ]
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345 ]
+ case 0x51: Dconref(); break; // DCONREF ##++##
+ case 0x55: DefColWidth(); break;
+ case 0x56: Builtinfmtcnt(); break; // BUILTINFMTCNT[ 34 ]
+ case 0x59: Xct(); break; // XCT [ 8 ]
+ case 0x5A: Crn(); break; // CRN [ 8 ]
+ case 0x8C: Country(); break; // COUNTRY [ 345 ]
+ case 0x8D: Hideobj(); break; // HIDEOBJ [ 345 ]
+ case 0x92: Palette(); break; // PALETTE [ 345 ]
+ case 0x99: Standardwidth(); break; // STANDARDWIDTH[ 45 ]
+ case 0xD3: bHasBasic = TRUE; break;
+ case 0xD5: SXIdStm(); break; // SXIDSTM ##++##
+ case 0xE0: Xf(); break; // XF [ 5 ]
+ case 0xE3: SXVs(); break; // SXVS ##++##
+ case 0xEB:
+ nNextRecord = Msodrawinggroup( nLaengeRec );
+ break;
+ case 0xFC: nNextRecord = Sst();break;// SST [ 8 ]
+ case 0x01AE: Supbook(); break; // SUPBOOK [ 8 ]
+ case 0x01BA: Codename( TRUE ); break;
+ case 0x0218: Name(); break; // NAME [ 8 ]
+ case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[ 345 ]
+ case 0x0231: Font34(); break; // FONT [ 34 ]
+ case 0x0293: Style(); break;
+ case 0x041E: Format(); break; // FORMAT [ 4 ]
+ }
+
+ }
+ break;
+ case Z_Biff8I: // --------------------------------- Z_Biff8I -
+ {
+ switch( nOpcode )
+ {
+ case 0x01: // BLANK [ 2 5 ]
+ Blank25();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x03: // NUMBER [ 2 5 ]
+ Number25();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x04: // LABEL [ 2 5 ]
+ Label();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x05: // BOOLERR [ 2 5 ]
+ Boolerr25();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x06: // FORMULA [ 2 5 ]
+ case 0x0206:
+ case 0x0406:
+ Formula25();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x0A: // EOF [ 2345 ]
+ EndSheet();
+ eAkt = Z_Biff8E;
+ nTab++;
+ bCond4EscherCont = FALSE;
+ break;
+ case 0x14: Header(); break; // HEADER [ 2345 ]
+ case 0x15: Footer(); break; // FOOTER [ 2345 ]
+ case 0x1C: // NOTE [ 2345 ]
+ Note();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x1D: Selection(); break; // SELECTION [ 2345 ]
+ case 0x23: Externname25(); break; // EXTERNNAME [ 2 5 ]
+ case 0x26: Leftmargin(); break; // LEFTMARGIN [ 2345 ]
+ case 0x27: Rightmargin(); break; // RIGHTMARGIN [ 2345 ]
+ case 0x28: Topmargin(); break; // TOPMARGIN [ 2345 ]
+ case 0x29: Bottommargin(); break; // BOTTOMMARGIN [ 2345 ]
+ case 0x2A: Printheaders(); break; // PRINTHEADERS [ 2345 ]
+ case 0x2B: Prntgrdlns(); break; // PRINTGRIDLINE[ 2345 ]
+ case 0x2F: // FILEPASS [ 2345 ]
+ if( Filepass() )
+ {
+ eLastErr = eERR_FILEPASSWD;
+ eAkt = Z_Ende;
+ }
+ break;
+ case 0x5D:
+ if( bWithDrawLayer )
+ Obj( nNextRecord + 8 ); // 'lokaler' Stream
+
+ eAkt = Z_Biff8T;
+ break;
+ case 0x7E: // RK [ 5 ]
+ Rk();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x82: Gridset(); break; // GRIDSET [ 345 ]
+ case 0x83: Hcenter(); break; // HCENTER [ 345 ]
+ case 0x84: Vcenter(); break; // VCENTER [ 345 ]
+ case 0xA1: Setup(); break; // SETUP [ 45 ]
+ case 0xAE: Scenman(); break;
+ case 0xAF:
+ nNextRecord = Scenario( nLaengeRec );
+ eAkt = Z_Biff8T;
+ break;
+ case 0xBD: // MULRK [ 5 ]
+ Mulrk();
+ eAkt = Z_Biff8T;
+ break;
+ case 0xBE: // MULBLANK [ 5 ]
+ Mulblank();
+ eAkt = Z_Biff8T;
+ break;
+ case 0xD6: // RSTRING [ 5 ]
+ Rstring();
+ eAkt = Z_Biff8T;
+ break;
+ case 0xE5: Cellmerging(); break;
+ case 0xEC:
+ Msodrawing( nLaengeRec );
+ eAkt = Z_Biff8T;
+ break;
+ case 0xED:
+ Msodrawingselection( nLaengeRec );
+ eAkt = Z_Biff8T;
+ break;
+ case 0xFD: // LABELSST [ 8 ]
+ Labelsst();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x01B0:
+ Condfmt();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x01B2:
+ Dval();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x01B6:
+ Txo();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x01B8:
+ Hlink();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x01BE:
+ Dv();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x0200: Dimensions(); break; // DIMENSIONS [ 8 ]
+ case 0x0201: // BLANK [ 34 ]
+ Blank34();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x0203: // NUMBER [ 34 ]
+ Number34();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x0204: // LABEL [ 34 ]
+ Label();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x0205: // BOOLERR [ 34 ]
+ Boolerr34();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x027E: // RK [ 34 ]
+ Rk();
+ eAkt = Z_Biff8T;
+ break;
+ case 0x0809: // BOF [ 5 ]
+ Bof5();
+ NeueTabelle();
+ if( pExcRoot->eDateiTyp == Biff8C )
+ {
+ if( bWithDrawLayer &&
+ pActEscherObj && pActEscherObj->GetObjType() == OT_CHART )
+ {
+ aIn.Seek( nNextRecord );
+
+ ReadChart8( *pPrgrsBar, nLimitPos, FALSE ); // zunaechst Return vergessen
+ nNextRecord = aIn.Tell();
+ }
+ else
+ {// Stream-Teil mit Chart ueberlesen
+ ePrev = eAkt;
+ eAkt = Z_Biff8C;
+ }
+ }
+#ifdef DBG_UTIL
+ else
+ {
+ DBG_ASSERT( pExcRoot->eDateiTyp == Biff5C,
+ "-ImportExcel8::Read(): Sofort zu mir (GT)!" );
+ }
+#endif
+ break;
+ }
+
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff8T: // --------------------------------- Z_Biff8T -
+ {
+ switch( nOpcode )
+ {
+ case 0x01: Blank25(); break; // BLANK [ 2 5 ]
+ case 0x03: Number25(); break; // NUMBER [ 2 5 ]
+ case 0x04: Label(); break; // LABEL [ 2 5 ]
+ case 0x05: Boolerr25(); break; // BOOLERR [ 2 5 ]
+ case 0x0206:
+ case 0x0406:
+ case 0x06: Formula(); break; // FORMULA [ 8 ]
+ case 0x07: RecString(); break; // STRING [ 2345 ]
+ case 0x0A: // EOF [ 2345 ]
+ EndSheet();
+ nTab++;
+ eAkt = Z_Biff8E;
+ bCond4EscherCont = FALSE;
+ break;
+ case 0x1C: Note(); break; // NOTE [ 2345 ]
+ case 0x3C: Cont( nLaengeRec ); break;
+ case 0x5D: // OBJ [ 2345 ]
+ if( bWithDrawLayer )
+ Obj( nNextRecord + 8 ); // 'lokaler' Stream);
+ break;
+ case 0x7E: Rk(); break; // RK [ 5 ]
+ case 0xA0: Scl(); break; // SCL [ 45 ]
+ case 0xAE: Scenman(); break;
+ case 0xAF: nNextRecord = Scenario( nLaengeRec ); break;
+ case 0xB0: SXView(); break; // SXVIEW ##++##
+ case 0xB1: SXVd(); break; // SXVD ##++##
+ case 0xB2: SXVi(); break; // SXVI ##++##
+ case 0xB4: SXIvd(); break; // SXIVD ##++##
+ case 0xB5: SXLi(); break; // SXLI ##++##
+ case 0xB6: SXPi(); break; // ##++##
+ case 0xBD: Mulrk(); break; // MULRK [ 5 ]
+ case 0xBE: Mulblank(); break; // MULBLANK [ 5 ]
+ case 0xC5: SXDi(); break; // SXDI ##++##
+ case 0xD6: Rstring(); break; // RSTRING [ 5 ]
+ case 0xE5: Cellmerging(); break;
+ case 0xEC: Msodrawing( nLaengeRec ); break;
+ case 0xED: Msodrawingselection( nLaengeRec ); break;
+ case 0xF0: SXRule(); break; // SXRULE ##++##
+ case 0xF1: SXEx(); break; // SXEX ##++##
+ case 0xF2: SXFilt(); break; // SXFILT ##++##
+ case 0xF7: SXSelect(); break; // SXSELECT ##++##
+ case 0xFD: Labelsst(); break; // LABELSST [ 8 ]
+ case 0x0100: SXVdex(); break; // SXVDEX ##++##
+ case 0x01B0: Condfmt(); break;
+ case 0x01B1: Cf(); break;
+ case 0x01B2: Dval(); break;
+ case 0x01B6: Txo(); break;
+ case 0x01B8: Hlink(); break;
+ case 0x01BE: Dv(); break;
+ case 0x0201: Blank34(); break; // BLANK [ 34 ]
+ case 0x0203: Number34(); break; // NUMBER [ 34 ]
+ case 0x0204: Label(); break; // LABEL [ 34 ]
+ case 0x0205: Boolerr34(); break; // BOOLERR [ 34 ]
+ case 0x0207: RecString(); break; // STRING [ 2345 ]
+ case 0x027E: Rk(); break; // RK [ 34 ]
+ case 0x0809: // BOF [ 5 ]
+ Bof5();
+ if( pExcRoot->eDateiTyp == Biff8C && bWithDrawLayer &&
+ pActEscherObj && pActEscherObj->GetObjType() == OT_CHART )
+ {
+ aIn.Seek( nNextRecord );
+ ReadChart8( *pPrgrsBar, nLimitPos, FALSE ); // zunaechst Return vergessen
+ nNextRecord = aIn.Tell();
+ }
+ else
+ {
+ ePrev = eAkt;
+ eAkt = Z_Biffn0;
+ }
+
+ DBG_ASSERT( pExcRoot->eDateiTyp == Biff8C,
+ "-ImportExcel8::Read(): Sofort zu mir (GT)!" );
+ break;
+ }
+
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Biff8E: // --------------------------------- Z_Biff8E -
+ {
+ switch( nOpcode )
+ {
+ case 0x0809: // BOF [ 5 ]
+ Bof5();
+ NeueTabelle();
+
+ bTabStartDummy = TRUE;
+
+ switch( pExcRoot->eDateiTyp )
+ {
+ case Biff8:
+ eAkt = Z_Biff8Pre; // Shrfmla Prefetch, Row-Prefetch
+ aColRowBuff.Reset();
+ pFltTab->Reset();
+
+ aIn.Seek( nNextRecord );
+ nBytesLeft = 0;
+ nTempPos = nNextRecord; // und Position merken
+ break;
+ case Biff8C:
+ if ( pActEscherObj )
+ {
+ DBG_ERRORFILE( "+ImportExcel8::Read(): Diagramm schon Escher?!?" );
+ delete pActEscherObj;
+ }
+ pActEscherObj = new ExcEscherObj( 0, 0, nTab, pExcRoot );
+ // erstmal irgendeine Groesse setzen
+ pActEscherObj = new ExcEscherChart( pActEscherObj );
+ aIn.Seek( nNextRecord );
+ pExcRoot->bChartTab = TRUE;
+
+ ReadChart8( *pPrgrsBar, nLimitPos, TRUE );
+ pExcRoot->bChartTab = FALSE;
+ EndSheet();
+ nTab++;
+ nNextRecord = aIn.Tell();
+ break;
+ case Biff8V:
+ default:
+ pD->SetVisible( nTab, FALSE );
+ ePrev = eAkt;
+ eAkt = Z_Biffn0;
+ }
+ DBG_ASSERT( pExcRoot->eDateiTyp != Biff8W,
+ "+ImportExcel8::Read(): Doppel-Whopper-Workbook!" );
+
+ break;
+ }
+
+ }
+ break;
+ case Z_Biff8Pre: // ------------------------------- Z_Biff8Pre -
+ {
+ switch( nOpcode )
+ {
+ case 0x00: Dimensions(); break; // DIMENSIONS [ 2345 ]
+ case 0x08: Row25(); break; // ROW [ 2 5 ]
+ case 0x0A: // EOF [ 2345 ]
+ eAkt = Z_Biff8I;
+ nNextRecord = nTempPos; // und zurueck an alte Position
+ aColRowBuff.Apply( nTab );
+#ifdef DBG_UTIL
+aIn.Seek( nNextRecord );
+#endif
+
+ break;
+ case 0x1A: Verticalpagebreaks(); break;
+ case 0x1B: Horizontalpagebreaks(); break;
+ case 0x1D: Selection(); break; // SELECTION [ 2345 ]
+ case 0x17: Externsheet(); break; // EXTERNSHEET [ 2345 ]
+ case 0x21: Array25(); break; // ARRAY [ 2 5 ]
+ case 0x23: Externname25(); break; // EXTERNNAME [ 2 5 ]
+ case 0x41: Pane(); break; // PANE [ 2345 ]
+ case 0x42: Codepage(); break; // CODEPAGE [ 2345 ]
+ case 0x55: DefColWidth(); break;
+ case 0x7D: Colinfo(); break; // COLINFO [ 345 ]
+ case 0x81: Wsbool(); break; // WSBOOL [ 2345 ]
+ case 0x8C: Country(); break; // COUNTRY [ 345 ]
+ case 0x99: Standardwidth(); break; // STANDARDWIDTH[ 45 ]
+ case 0x9B: FilterMode(); break; // FILTERMODE
+ case 0x9D: AutoFilterInfo(); break;// AUTOFILTERINFO
+ case 0x9E: AutoFilter(); break; // AUTOFILTER
+ case 0x01BA: Codename( FALSE ); break;
+ case 0x0200: Dimensions(); break; // DIMENSIONS [ 2345 ]
+ case 0x0208: Row34(); break; // ROW [ 34 ]
+ case 0x0221: Array34(); break; // ARRAY [ 34 ]
+ case 0x0223: Externname25(); break; // EXTERNNAME [ 34 ]
+ case 0x0225: Defrowheight345();break;//DEFAULTROWHEI[ 345 ]
+ case 0x023E: Window2_5(); break; // WINDOW [ 5]
+ case 0x04BC: Shrfmla(); break; // SHRFMLA [ 5 ]
+ }
+ }
+ break;
+ case Z_Biff8C: // ------------------------------------- Z_Biff8C -
+ {
+ if( nOpcode == 0x0A )
+ eAkt = ePrev;
+ }
+ break;
+ case Z_Biffn0: // --------------------------------- Z_Biffn0 -
+ {
+ switch( nOpcode )
+ {
+ case 0x0A: // EOF [ 2345 ]
+ eAkt = ePrev;
+ nTab++;
+ break;
+ }
+
+ }
+ break;
+ // ----------------------------------------------------------------
+ case Z_Ende: // ----------------------------------- Z_Ende -
+ DBG_ERROR( "*ImportExcel8::Read(): Not possible state!" );
+ break;
+ default: DBG_ERROR( "-ImportExcel8::Read(): Zustand vergessen!" );
+ }
+
+ aIn.Seek( nNextRecord ); // zum naechsten Record
+ }
+
+ pD->CalcAfterLoad();
+
+{
+ ScStyleSheetPool* pPool = pD->GetStyleSheetPool();
+
+ UINT16 nTabLast = pExcRoot->pTabNameBuff->GetLastIndex();
+
+ UINT16 nTabCount;
+ for( nTabCount = 0 ; nTabCount < nTabLast ; nTabCount++ )
+ pD->SetPageStyle( nTabCount, GetPageStyleName( nTabCount ) );
+}
+
+ PostDocLoad();
+
+ // building pivot tables
+ aPivotTabList.Apply();
+
+ //
+
+ pExcRoot->pProgress = NULL;
+ delete pPrgrsBar;
+
+ if( bTabTruncated )
+ eLastErr = eERR_RNGOVRFLW;
+
+ return eLastErr;
+}
+
+
+
+
+#ifdef DBG_UTIL
+
+ByteString& AddRecordName( UINT16 nOpcode, ByteString& aDeb )
+{
+ switch( nOpcode )
+ {
+ case 0x00: aDeb += "DIMENSIONS [ 2 5]"; break;
+ case 0x01: aDeb += "BLANK [ 2 5]"; break;
+ case 0x02: aDeb += "INTEGER [ 2 ]"; break;
+ case 0x03: aDeb += "NUMBER [ 2 5]"; break;
+ case 0x04: aDeb += "LABEL [ 2 5]"; break;
+ case 0x05: aDeb += "BOOLERR"; break;
+ case 0x06: aDeb += "FORMULA [ 2 5]"; break;
+ case 0x07: aDeb += "STRING"; break;
+ case 0x08: aDeb += "ROW [ 2 5]"; break;
+ case 0x09: aDeb += "BOF [ 2 ]"; break;
+ case 0x0A: aDeb += "EOF [ 2345]"; break;
+ case 0x0B: aDeb += "INDEX"; break;
+ case 0x0C: aDeb += "CALCCOUNT"; break;
+ case 0x0D: aDeb += "CALCMODE"; break;
+ case 0x0E: aDeb += "PRECISION"; break;
+ case 0x0F: aDeb += "REFMODE"; break;
+ case 0x10: aDeb += "DELTA"; break;
+ case 0x11: aDeb += "ITERATION"; break;
+ case 0x12: aDeb += "PROTECT"; break;
+ case 0x13: aDeb += "PASSWORD [ 2345]"; break;
+ case 0x14: aDeb += "HEADER"; break;
+ case 0x15: aDeb += "FOOTER"; break;
+ case 0x16: aDeb += "EXTERNCOUNT"; break;
+ case 0x17: aDeb += "EXTERNSHEET [ 2345]"; break;
+ case 0x18: aDeb += "NAME [ 2 5]"; break;
+ case 0x19: aDeb += "WINDOWPROTECT"; break;
+ case 0x1A: aDeb += "VERTICALPAGEBREAKS"; break;
+ case 0x1B: aDeb += "HORIZONTALPAGEBREAKS"; break;
+ case 0x1C: aDeb += "NOTE [ 2345]"; break;
+ case 0x1D: aDeb += "SELECTION"; break;
+ case 0x1E: aDeb += "FORMAT [ 23 5]"; break;
+ case 0x1F: aDeb += "FORMATCOUNT [ 2 ]"; break;
+ case 0x20: aDeb += "COLUMNDEFAULT [ 2 ]"; break;
+ case 0x21: aDeb += "ARRAY [ 2 5]"; break;
+ case 0x22: aDeb += "1904 [ 2345]"; break;
+ case 0x23: aDeb += "EXTERNNAME [ 2 5]"; break;
+ case 0x24: aDeb += "COLWIDTH [ 2 ]"; break;
+ case 0x25: aDeb += "DEFAULTROWHEI [ 2 ]"; break;
+ case 0x26: aDeb += "LEFTMARGIN"; break;
+ case 0x27: aDeb += "RIGHTMARGIN"; break;
+ case 0x28: aDeb += "TOPMARGIN"; break;
+ case 0x29: aDeb += "BOTTOMMARGIN"; break;
+ case 0x2A: aDeb += "PRINTHEADERS"; break;
+ case 0x2B: aDeb += "PRINTGRIDLINES"; break;
+ case 0x2F: aDeb += "FILEPASS [ 2345]"; break;
+ case 0x31: aDeb += "FONT [ 2 5]"; break;
+ case 0x36: aDeb += "TABLE"; break;
+ case 0x3C: aDeb += "CONTINUE"; break;
+ case 0x3D: aDeb += "WINDOW1"; break;
+ case 0x3E: aDeb += "WINDOW2"; break;
+ case 0x40: aDeb += "BACKUP"; break;
+ case 0x41: aDeb += "PANE"; break;
+ case 0x42: aDeb += "CODEPAGE [ 2345]"; break;
+ case 0x43: aDeb += "XF [ 2 ]"; break;
+ case 0x44: aDeb += "IXFE [ 2 ]"; break;
+ case 0x4D: aDeb += "PLS"; break;
+ case 0x50: aDeb += "DCON"; break;
+ case 0x51: aDeb += "DCONREF"; break;
+ case 0x53: aDeb += "DCONNAME"; break;
+ case 0x55: aDeb += "DEFCOLWIDTH [ 2345]"; break;
+ case 0x56: aDeb += "BUILTINFMTCNT [ 34 ]"; break;
+ case 0x59: aDeb += "XCT"; break;
+ case 0x5A: aDeb += "CRN"; break;
+ case 0x5B: aDeb += "FILESHARING"; break;
+ case 0x5C: aDeb += "WRITEACCESS"; break;
+ case 0x5D: aDeb += "OBJ"; break;
+ case 0x5E: aDeb += "UNCALCED"; break;
+ case 0x5F: aDeb += "SAFERECALC"; break;
+ case 0x60: aDeb += "TEMPLATE"; break;
+ case 0x63: aDeb += "OBJPROTECT"; break;
+ case 0x7D: aDeb += "COLINFO [ 345]"; break;
+ case 0x7E: aDeb += "RK [ 5]"; break;
+ case 0x7F: aDeb += "IMDATA"; break;
+ case 0x80: aDeb += "GUTS"; break;
+ case 0x81: aDeb += "WSBOOL"; break;
+ case 0x82: aDeb += "GRIDSET"; break;
+ case 0x83: aDeb += "HCENTER"; break;
+ case 0x84: aDeb += "VCENTER"; break;
+ case 0x85: aDeb += "BOUNDSHEET [ 5]"; break;
+ case 0x86: aDeb += "WRITEPROT"; break;
+ case 0x87: aDeb += "ADDIN"; break;
+ case 0x88: aDeb += "EDG"; break;
+ case 0x89: aDeb += "PUB"; break;
+ case 0x8C: aDeb += "COUNTRY [ 345]"; break;
+ case 0x8D: aDeb += "HIDEOBJ"; break;
+ case 0x8E: aDeb += "BUNDLESOFFSET [ 4 ]"; break;
+ case 0x8F: aDeb += "BUNDLEHEADER [ 4 ]"; break;
+ case 0x90: aDeb += "SORT"; break;
+ case 0x91: aDeb += "SUB"; break;
+ case 0x92: aDeb += "PALETTE [ 345]"; break;
+ case 0x93: aDeb += "STYLE"; break;
+ case 0x94: aDeb += "LHRECORD"; break;
+ case 0x95: aDeb += "LHNGRAPH"; break;
+ case 0x96: aDeb += "SOUND"; break;
+ case 0x98: aDeb += "LPR"; break;
+ case 0x99: aDeb += "STANDARDWIDTH [ 5]"; break;
+ case 0x9A: aDeb += "FNGROUPNAME"; break;
+ case 0x9B: aDeb += "FILTERMODE"; break;
+ case 0x9C: aDeb += "FNGROUPCOUNT"; break;
+ case 0x9D: aDeb += "AUTOFILTERINFO"; break;
+ case 0x9E: aDeb += "AUTOFILTER"; break;
+ case 0xA0: aDeb += "SCL"; break;
+ case 0xA9: aDeb += "COORDLIST"; break;
+ case 0xAB: aDeb += "GCW"; break;
+ case 0xAE: aDeb += "SCENMAN"; break;
+ case 0xAF: aDeb += "SCENARIO"; break;
+ case 0xB0: aDeb += "SXVIEW"; break;
+ case 0xB1: aDeb += "SXVD"; break;
+ case 0xB2: aDeb += "SXVI"; break;
+ case 0xB4: aDeb += "SXIVD"; break;
+ case 0xB5: aDeb += "SXLI"; break;
+ case 0xB6: aDeb += "SXPI"; break;
+ case 0xB8: aDeb += "DOCROUTE"; break;
+ case 0xB9: aDeb += "RECIPNAME"; break;
+ case 0xBC: aDeb += "SHRFMLA"; break;
+ case 0xBD: aDeb += "MULRK [ 5]"; break;
+ case 0xBE: aDeb += "MULBLANK [ 5]"; break;
+ case 0xC1: aDeb += "MMS"; break;
+ case 0xC2: aDeb += "ADDMENU"; break;
+ case 0xC3: aDeb += "DELMENU"; break;
+ case 0xC5: aDeb += "SXDI"; break;
+ case 0xCD: aDeb += "SXSTRING"; break;
+ case 0xD0: aDeb += "SXTBL"; break;
+ case 0xD1: aDeb += "SXTBRGITEM"; break;
+ case 0xD2: aDeb += "SXTBPG"; break;
+ case 0xD3: aDeb += "OBPROJ"; break;
+ case 0xD5: aDeb += "SXIDSTM"; break;
+ case 0xD6: aDeb += "RSTRING [ 5]"; break;
+ case 0xD7: aDeb += "DBCELL"; break;
+ case 0xDA: aDeb += "BOOKBOOL"; break;
+ case 0xDC: aDeb += "SXEXT"; break;
+ case 0xDD: aDeb += "SCENPROTECT"; break;
+ case 0xDE: aDeb += "OLESIZE"; break;
+ case 0xDF: aDeb += "UDDESC"; break;
+ case 0xE0: aDeb += "XF [ 5]"; break;
+ case 0xE1: aDeb += "INTERFACEHDR"; break;
+ case 0xE2: aDeb += "INTERFACEEND"; break;
+ case 0xE3: aDeb += "SXVS"; break;
+ case 0x0200: aDeb += "DIMENSIONS [ 34 ]"; break;
+ case 0x0201: aDeb += "BLANK [ 34 ]"; break;
+ case 0x0203: aDeb += "NUMBER [ 34 ]"; break;
+ case 0x0204: aDeb += "LABEL [ 34 ]"; break;
+ case 0x0206: aDeb += "FORMULA [ 3 ]"; break;
+ case 0x0208: aDeb += "ROW [ 34 ]"; break;
+ case 0x0209: aDeb += "BOF [ 3 ]"; break;
+ case 0x0218: aDeb += "NAME [ 34 ]"; break;
+ case 0x0221: aDeb += "ARRAY [ 34 ]"; break;
+ case 0x0223: aDeb += "EXTERNNAME [ 34 ]"; break;
+ case 0x0225: aDeb += "DEFAULTROWHEI [ 345]"; break;
+ case 0x0231: aDeb += "FONT [ 34 ]"; break;
+ case 0x0243: aDeb += "XF [ 3 ]"; break;
+ case 0x027E: aDeb += "RK [ 34 ]"; break;
+ case 0x0406: aDeb += "FORMULA [ 4 ]"; break;
+ case 0x0409: aDeb += "BOF [ 4 ]"; break;
+ case 0x041E: aDeb += "FORMAT [ 4 ]"; break;
+ case 0x0443: aDeb += "XF [ 4 ]"; break;
+ case 0x04BC: aDeb += "SHRFMLA [ 5]"; break;
+ case 0x0809: aDeb += "BOF [ 5]"; break;
+ default:
+ {
+ sal_Char pTmpBuff[ 64 ];
+ sprintf( pTmpBuff, "<unbekannter Opcode %04X >", nOpcode );
+ aDeb += pTmpBuff;
+ }
+ }
+ return aDeb;
+}
+
+#endif
+
+
diff --git a/sc/source/filter/excel/tokstack.cxx b/sc/source/filter/excel/tokstack.cxx
new file mode 100644
index 000000000000..55787b1ce825
--- /dev/null
+++ b/sc/source/filter/excel/tokstack.cxx
@@ -0,0 +1,623 @@
+/*************************************************************************
+ *
+ * $RCSfile: tokstack.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#include <string.h>
+#endif
+
+#include "compiler.hxx"
+#include "tokstack.hxx"
+#include "global.hxx"
+
+const UINT16 TokenPool::nScTokenOff = 8192;
+
+
+TokenStack::TokenStack( UINT16 nNewSize )
+{
+ pStack = new TokenId[ nNewSize ];
+
+ Reset();
+ nSize = nNewSize;
+}
+
+
+TokenStack::~TokenStack()
+{
+ delete[] pStack;
+}
+
+
+
+
+//------------------------------------------------------------------------
+
+// !ACHTUNG!: nach Aussen hin beginnt die Nummerierung mit 1!
+// !ACHTUNG!: SC-Token werden mit einem Offset nScTokenOff abgelegt
+// -> Unterscheidung von anderen Token
+
+
+TokenPool::TokenPool( void )
+{
+ UINT16 nLauf = nScTokenOff;
+
+ // Sammelstelle fuer Id-Folgen
+ nP_Id = 256;
+ pP_Id = new UINT16[ nP_Id ];
+
+ // Sammelstelle fuer Ids
+ nElement = 32;
+ pElement = new UINT16[ nElement ];
+ pType = new E_TYPE[ nElement ];
+ pSize = new UINT16[ nElement ];
+ nP_IdLast = 0;
+
+ // Sammelstelle fuer Strings
+ nP_Str = 4;
+ ppP_Str = new String *[ nP_Str ];
+ for( nLauf = 0 ; nLauf < nP_Str ; nLauf++ )
+ ppP_Str[ nLauf ] = NULL;
+
+ // Sammelstelle fuer double
+ nP_Dbl = 8;
+ pP_Dbl = new double[ nP_Dbl ];
+
+ // Sammelstellen fuer Referenzen
+ nP_RefTr = 32;
+ ppP_RefTr = new SingleRefData *[ nP_RefTr ];
+ for( nLauf = 0 ; nLauf < nP_RefTr ; nLauf++ )
+ ppP_RefTr[ nLauf ] = NULL;
+
+ nP_Ext = 32;
+ ppP_Ext = new EXTCONT*[ nP_Ext ];
+ memset( ppP_Ext, NULL, sizeof( EXTCONT* ) * nP_Ext );
+
+ pScToken = new ScTokenArray;
+
+ Reset();
+}
+
+
+TokenPool::~TokenPool()
+{
+ UINT16 n;
+
+ delete[] pP_Id;
+ delete[] pElement;
+ delete[] pType;
+ delete[] pSize;
+ delete[] pP_Dbl;
+
+ for( n = 0 ; n < nP_RefTr ; n++/*, pAktTr++*/ )
+ {
+ if( ppP_RefTr[ n ] )
+ delete ppP_RefTr[ n ];
+ }
+ delete[] ppP_RefTr;
+
+ for( n = 0 ; n < nP_Str ; n++/*, pAktStr++*/ )
+ {
+ if( ppP_Str[ n ] )
+ delete ppP_Str[ n ];
+ }
+ delete[] ppP_Str;
+
+ for( n = 0 ; n < nP_Ext ; n++ )
+ {
+ if( ppP_Ext[ n ] )
+ delete ppP_Ext[ n ];
+ }
+ delete[] ppP_Ext;
+
+ delete pScToken;
+}
+
+
+void TokenPool::GrowString( void )
+{
+ UINT16 nP_StrNew = nP_Str * 2;
+ UINT16 nL;
+
+ String** ppP_StrNew = new String *[ nP_StrNew ];
+
+ for( nL = 0 ; nL < nP_Str ; nL++ )
+ ppP_StrNew[ nL ] = ppP_Str[ nL ];
+ for( nL = nP_Str ; nL < nP_StrNew ; nL++ )
+ ppP_StrNew[ nL ] = NULL;
+
+ nP_Str = nP_StrNew;
+
+ delete[] ppP_Str;
+ ppP_Str = ppP_StrNew;
+}
+
+
+void TokenPool::GrowDouble( void )
+{
+ UINT16 nP_DblNew = nP_Dbl * 2;
+
+ double* pP_DblNew = new double[ nP_DblNew ];
+
+ for( UINT16 nL = 0 ; nL < nP_Dbl ; nL++ )
+ pP_DblNew[ nL ] = pP_Dbl[ nL ];
+
+ nP_Dbl = nP_DblNew;
+
+ delete[] pP_Dbl;
+ pP_Dbl = pP_DblNew;
+}
+
+
+void TokenPool::GrowTripel( void )
+{
+ UINT16 nP_RefTrNew = nP_RefTr * 2;
+ UINT16 nL;
+
+ SingleRefData** ppP_RefTrNew = new SingleRefData *[ nP_RefTrNew ];
+
+ for( nL = 0 ; nL < nP_RefTr ; nL++ )
+ ppP_RefTrNew[ nL ] = ppP_RefTr[ nL ];
+ for( nL = nP_RefTr ; nL < nP_RefTrNew ; nL++ )
+ ppP_RefTrNew[ nL ] = NULL;
+
+ nP_RefTr = nP_RefTrNew;
+
+ delete[] ppP_RefTr;
+ ppP_RefTr = ppP_RefTrNew;
+}
+
+
+void TokenPool::GrowId( void )
+{
+ UINT16 nP_IdNew = nP_Id * 2;
+
+ UINT16* pP_IdNew = new UINT16[ nP_IdNew ];
+
+ for( UINT16 nL = 0 ; nL < nP_Id ; nL++ )
+ pP_IdNew[ nL ] = pP_Id[ nL ];
+
+ nP_Id = nP_IdNew;
+
+ delete[] pP_Id;
+ pP_Id = pP_IdNew;
+}
+
+
+void TokenPool::GrowElement( void )
+{
+ UINT16 nElementNew = nElement * 2;
+
+ UINT16* pElementNew = new UINT16[ nElementNew ];
+ E_TYPE* pTypeNew = new E_TYPE[ nElementNew ];
+ UINT16* pSizeNew = new UINT16[ nElementNew ];
+
+ for( UINT16 nL = 0 ; nL < nElement ; nL++ )
+ {
+ pElementNew[ nL ] = pElement[ nL ];
+ pTypeNew[ nL ] = pType[ nL ];
+ pSizeNew[ nL ] = pSize[ nL ];
+ }
+
+ nElement = nElementNew;
+
+ delete[] pElement;
+ delete[] pType;
+ delete[] pSize;
+ pElement = pElementNew;
+ pType = pTypeNew;
+ pSize = pSizeNew;
+}
+
+
+void TokenPool::GrowExt( void )
+{
+ UINT16 nNewSize = nP_Ext * 2;
+
+ EXTCONT** ppNew = new EXTCONT*[ nNewSize ];
+
+ memcpy( ppNew, ppP_Ext, sizeof( EXTCONT* ) * nP_Ext );
+
+ delete[] ppP_Ext;
+ nP_Ext = nNewSize;
+}
+
+
+void TokenPool::GetElement( const UINT16 nId )
+{
+ DBG_ASSERT( nId < nElementAkt, "*TokenPool::GetElement(): Id zu gross!?" );
+
+ if( pType[ nId ] == T_Id )
+ GetElementRek( nId );
+ else
+ {
+ switch( pType[ nId ] )
+ {
+#ifdef DBG_UTIL
+ case T_Id:
+ DBG_ERROR( "-TokenPool::GetElement(): hier hast Du nichts zu suchen!" );
+ break;
+#endif
+ case T_Str:
+ pScToken->AddString( ppP_Str[ pElement[ nId ] ]->GetBuffer() );
+ break;
+ case T_D:
+ pScToken->AddDouble( pP_Dbl[ pElement[ nId ] ] );
+ break;
+ case T_RefC:
+ pScToken->AddSingleReference( *ppP_RefTr[ pElement[ (UINT16) nId ] ] );
+ break;
+ case T_RefA:
+ {
+ ComplRefData aComplRefData;
+ aComplRefData.Ref1 = *ppP_RefTr[ pElement[ nId ] ];
+ aComplRefData.Ref2 = *ppP_RefTr[ pElement[ nId ] + 1 ];
+ pScToken->AddDoubleReference( aComplRefData );
+ }
+ break;
+ case T_RN:
+ pScToken->AddName( pElement[ nId ] );
+ break;
+ case T_Ext:
+ {
+ UINT16 n = pElement[ nId ];
+ EXTCONT* p = ( n < nP_Ext )? ppP_Ext[ n ] : NULL;
+
+ if( p )
+ ScToken* pTok = pScToken->AddExternal( p->aText.GetBuffer() );
+ }
+ break;
+ default:
+ DBG_ERROR("-TokenPool::GetElement(): Zustand undefiniert!?");
+ }
+ }
+}
+
+
+void TokenPool::GetElementRek( const UINT16 nId )
+{
+#ifdef DBG_UTIL
+ nRek++;
+ DBG_ASSERT( nRek <= nP_Id, "*TokenPool::GetElement(): Rekursion loopt!?" );
+#endif
+
+ DBG_ASSERT( nId < nElementAkt, "*TokenPool::GetElementRek(): Id zu gross!?" );
+
+ DBG_ASSERT( pType[ nId ] == T_Id, "-TokenPool::GetElementRek(): nId nicht Id-Folge!" );
+
+
+ UINT16 nAnz = pSize[ nId ];
+ UINT16* pAkt = &pP_Id[ pElement[ nId ] ];
+ for( ; nAnz > 0 ; nAnz--, pAkt++ )
+ {
+ if( *pAkt < nScTokenOff )
+ {// Rekursion oder nicht?
+ switch( pType[ ( TokenId ) *pAkt ] )
+ {
+ case T_Id:
+ GetElementRek( ( TokenId ) *pAkt );
+ break;
+ case T_Str:
+ pScToken->AddString( ppP_Str[ pElement[ ( TokenId ) *pAkt ] ]->GetBuffer() );
+ break;
+ case T_D:
+ pScToken->AddDouble( pP_Dbl[ pElement[ ( TokenId ) *pAkt ] ] );
+ break;
+ case T_RefC:
+ pScToken->AddSingleReference( *ppP_RefTr[ pElement[ (UINT16) *pAkt ] ] );
+ break;
+ case T_RefA:
+ {
+ ComplRefData aComplRefData;
+ aComplRefData.Ref1 = *ppP_RefTr[ pElement[ ( TokenId ) *pAkt ] ];
+ aComplRefData.Ref2 = *ppP_RefTr[ pElement[ ( TokenId ) *pAkt ] + 1 ];
+ pScToken->AddDoubleReference( aComplRefData );
+ }
+ break;
+ case T_RN:
+ pScToken->AddName( pElement[ ( TokenId ) *pAkt ] );
+ break;
+ case T_Ext:
+ {
+ UINT16 n = pElement[ ( TokenId ) *pAkt ];
+ EXTCONT* p = ( n < nP_Ext )? ppP_Ext[ n ] : NULL;
+
+ if( p )
+ ScToken* pTok = pScToken->AddExternal( p->aText.GetBuffer() );
+ }
+ break;
+ default:
+ DBG_ERROR("-TokenPool::GetElementRek(): Zustand undefiniert!?");
+ }
+ }
+ else // elementarer SC_Token
+ pScToken->AddOpCode( ( DefTokenId ) ( *pAkt - nScTokenOff ) );
+ }
+
+
+#ifdef DBG_UTIL
+ nRek--;
+#endif
+}
+
+
+void TokenPool::operator >>( TokenId& rId )
+{
+ rId = ( TokenId ) ( nElementAkt + 1 );
+
+ if( nElementAkt >= nElement )
+ GrowElement();
+
+ pElement[ nElementAkt ] = nP_IdLast; // Start der Token-Folge
+ pType[ nElementAkt ] = T_Id; // Typinfo eintragen
+ pSize[ nElementAkt ] = nP_IdAkt - nP_IdLast;
+ // von nP_IdLast bis nP_IdAkt-1 geschrieben -> Laenge der Folge
+
+ nElementAkt++; // Startwerte fuer naechste Folge
+ nP_IdLast = nP_IdAkt;
+}
+
+
+TokenId TokenPool::Store( const double& rDouble )
+{
+ if( nElementAkt >= nElement )
+ GrowElement();
+
+ if( nP_DblAkt >= nP_Dbl )
+ GrowDouble();
+
+ pElement[ nElementAkt ] = nP_DblAkt; // Index in Double-Array
+ pType[ nElementAkt ] = T_D; // Typinfo Double eintragen
+
+ pP_Dbl[ nP_DblAkt ] = rDouble;
+
+ pSize[ nElementAkt ] = 1; // eigentlich Banane
+
+ nElementAkt++;
+ nP_DblAkt++;
+
+ return ( TokenId ) nElementAkt; // Ausgabe von altem Wert + 1!
+}
+
+
+TokenId TokenPool::Store( const UINT16 nIndex )
+{
+ if( nElementAkt >= nElement )
+ GrowElement();
+
+ pElement[ nElementAkt ] = nIndex; // Daten direkt im Index!
+ pType[ nElementAkt ] = T_RN; // Typinfo Range Name eintragen
+
+ nElementAkt++;
+ return ( TokenId ) nElementAkt; // Ausgabe von altem Wert + 1!
+}
+
+
+TokenId TokenPool::Store( const String& rString )
+{
+ // weitgehend nach Store( const sal_Char* ) kopiert, zur Vermeidung
+ // eines temporaeren Strings in "
+ if( nElementAkt >= nElement )
+ GrowElement();
+
+ if( nP_StrAkt >= nP_Str )
+ GrowString();
+
+ pElement[ nElementAkt ] = nP_StrAkt; // Index in String-Array
+ pType[ nElementAkt ] = T_Str; // Typinfo String eintragen
+
+ // String anlegen
+ if( !ppP_Str[ nP_StrAkt ] )
+ //...aber nur, wenn noch nicht vorhanden
+ ppP_Str[ nP_StrAkt ] = new String( rString );
+ else
+ //...ansonsten nur kopieren
+ *ppP_Str[ nP_StrAkt ] = rString;
+
+ DBG_ASSERT( sizeof( xub_StrLen ) <= 2, "*TokenPool::Store(): StrLen doesn't match!" );
+
+ pSize[ nElementAkt ] = ( UINT16 ) ppP_Str[ nP_StrAkt ]->Len();
+
+ nElementAkt++;
+ nP_StrAkt++;
+
+ return ( TokenId ) nElementAkt; // Ausgabe von altem Wert + 1!
+}
+
+
+TokenId TokenPool::Store( const SingleRefData& rTr )
+{
+ if( nElementAkt >= nElement )
+ GrowElement();
+
+ if( nP_RefTrAkt >= nP_RefTr )
+ GrowTripel();
+
+ pElement[ nElementAkt ] = nP_RefTrAkt;
+ pType[ nElementAkt ] = T_RefC; // Typinfo Cell-Reff eintragen
+
+ if( !ppP_RefTr[ nP_RefTrAkt ] )
+ ppP_RefTr[ nP_RefTrAkt ] = new SingleRefData( rTr );
+ else
+ *ppP_RefTr[ nP_RefTrAkt ] = rTr;
+
+ nElementAkt++;
+ nP_RefTrAkt++;
+
+ return ( TokenId ) nElementAkt; // Ausgabe von altem Wert + 1!
+}
+
+
+TokenId TokenPool::Store( const ComplRefData& rTr )
+{
+ if( nElementAkt >= nElement )
+ GrowElement();
+
+ if( nP_RefTrAkt + 1 >= nP_RefTr )
+ GrowTripel();
+
+ pElement[ nElementAkt ] = nP_RefTrAkt;
+ pType[ nElementAkt ] = T_RefA; // Typinfo Area-Reff eintragen
+
+ if( !ppP_RefTr[ nP_RefTrAkt ] )
+ ppP_RefTr[ nP_RefTrAkt ] = new SingleRefData( rTr.Ref1 );
+ else
+ *ppP_RefTr[ nP_RefTrAkt ] = rTr.Ref1;
+ nP_RefTrAkt++;
+
+ if( !ppP_RefTr[ nP_RefTrAkt ] )
+ ppP_RefTr[ nP_RefTrAkt ] = new SingleRefData( rTr.Ref2 );
+ else
+ *ppP_RefTr[ nP_RefTrAkt ] = rTr.Ref2;
+ nP_RefTrAkt++;
+
+ nElementAkt++;
+
+ return ( TokenId ) nElementAkt; // Ausgabe von altem Wert + 1!
+}
+
+
+TokenId TokenPool::Store( const DefTokenId e, const String& r )
+{
+ if( nElementAkt >= nElement )
+ GrowElement();
+
+ if( nP_ExtAkt >= nP_Ext )
+ GrowString();
+
+ pElement[ nElementAkt ] = nP_ExtAkt;
+ pType[ nElementAkt ] = T_Ext; // Typinfo String eintragen
+
+ if( ppP_Ext[ nP_ExtAkt ] )
+ {
+ ppP_Ext[ nP_ExtAkt ]->eId = e;
+ ppP_Ext[ nP_ExtAkt ]->aText = r;
+ }
+ else
+ ppP_Ext[ nP_ExtAkt ] = new EXTCONT( e, r );
+
+ nElementAkt++;
+ nP_ExtAkt++;
+
+ return ( TokenId ) nElementAkt; // Ausgabe von altem Wert + 1!
+}
+
+
+void TokenPool::Reset( void )
+{
+ nP_IdAkt = nP_IdLast = nElementAkt = nP_StrAkt = nP_DblAkt = nP_RefTrAkt = nP_ExtAkt = 0;
+}
+
+
+BOOL TokenPool::IsSingleOp( TokenId nId, const DefTokenId eId ) const
+{
+ if( nId && nId <= nElementAkt )
+ {// existent?
+ nId--;
+ if( T_Id == pType[ nId ] )
+ {// Tokenfolge?
+ if( pSize[ nId ] == 1 )
+ {// GENAU 1 Token
+ UINT16 nSecId = pP_Id[ pElement[ nId ] ];
+ if( nSecId >= nScTokenOff )
+ {// Default-Token?
+ return ( DefTokenId ) ( nSecId - nScTokenOff ) == eId; // Gesuchter?
+ }
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+
+BOOL TokenPool::IsExternal( TokenId n ) const
+{
+ if( n && n <= nElementAkt )
+ {
+ n--;
+ return ( pType[ n ] == T_Ext );
+ }
+
+ return FALSE;
+}
+
+
+const String* TokenPool::GetString( TokenId n ) const
+{
+ const String* p = NULL;
+ if( n && n <= nElementAkt )
+ {
+ n--;
+ if( pType[ n ] == T_Str )
+ p = ppP_Str[ pElement[ n ] ];
+ }
+
+ return p;
+}
+
+
+
+
diff --git a/sc/source/filter/html/htmlexp.cxx b/sc/source/filter/html/htmlexp.cxx
new file mode 100644
index 000000000000..71aef5aeef61
--- /dev/null
+++ b/sc/source/filter/html/htmlexp.cxx
@@ -0,0 +1,1671 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlexp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#ifdef MAC
+#define _SYSDEP_HXX
+#endif
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+//#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+#define _DOCKWIN_HXX //???
+//#define _CTRL_HXX ****
+#define _SCRBAR_HXX
+//#define _BUTTON_HXX ***
+#define _IMAGEBTN_HXX
+#define _FIXED_HXX
+#define _GROUP_HXX
+#define _EDIT_HXX
+#define _COMBOBOX_HXX
+#define _LSTBOX_HXX
+#define _SELENG_HXX
+#define _SPLIT_HXX
+#define _SPIN_HXX
+#define _FIELD_HXX
+#define _MOREBTN_HXX
+#define _TOOLBOX_HXX
+#define _STATUS_HXX
+#define _SVTCTRL3_HXX
+#define _SVTCTRL2_HXX
+//#define _DIALOG_HXX ***
+#define _MSGBOX_HXX
+//#define _SYSDLG_HXX ***
+#define _PRNDLG_HXX
+#define _COLDLG_HXX
+#define _TABDLG_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+#define _TABBAR_HXX
+#define _VALUESET_HXX
+#define _STDMENU_HXX
+#define _STDCTRL_HXX
+#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+#define _SVTREELIST_HXX
+//#define _FILTER_HXX ***
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+//#define _SFXDOCINF_HXX ***
+#define _SFXLINKHDL_HXX
+#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX ***
+//#define _SFXAPP_HXX ***
+#define _SFX_BINDINGS_HXX
+#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX ***
+#define _SFXOBJFACE_HXX
+#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+#define _SFX_CHILDWIN_HXX
+#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX ***
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX ***
+//define _SFX_OBJFAC_HXX ***
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+#define _VIEWFAC_HXX
+#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+#define _SFXTABDLG_HXX
+#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX ***
+//#define _SFXINTITEM_HXX ***
+//#define _SFXENUMITEM_HXX ***
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX ***
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX ***
+//#define _SFXITEMSET_HXX ***
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX ***
+
+//xout.hxx
+//#define _XENUM_HXX ***
+//#define _XPOLY_HXX ***
+//#define _XATTR_HXX ***
+#define _XOUTX_HXX
+//#define _XPOOL_HXX ***
+#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+#define _SDR_NOUNDO
+#define _SDR_NOXOUTDEV
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+
+#define SI_NOITEMS
+#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX ***
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX ***
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+//#define _SVX_IMPGRF_HXX ***
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+//inet
+#define _INETINDP_HXX
+#define _INETIMP_HXX
+#define _INETWRAP_HXX
+#define _INETKEEP_HXX
+#define _PLUGMGR_HXX
+//#define _URLOBJ_HXX ***
+
+#define SFX_NOCLOOKS
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#define _SVSTDARR_STRINGSSORTDTOR
+
+#ifndef _RTL_TENCINFO_H //autogen wg. rtl_getBestMimeCharsetFromTextEncoding, rtl_getTextEncodingFromMimeCharset
+#include <rtl/tencinfo.h>
+#endif
+
+#include <svx/algitem.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/brshitem.hxx>
+#include <svx/colritem.hxx>
+#include <svx/fhgtitem.hxx>
+#include <svx/fontitem.hxx>
+#include <svx/postitem.hxx>
+#include <svx/udlnitem.hxx>
+#include <svx/wghtitem.hxx>
+#include <svx/xoutbmp.hxx>
+#ifndef _MyEDITENG_HXX //autogen wg. EditEngine
+#include <svx/editeng.hxx>
+#endif
+#ifndef _EEITEM_HXX //autogen wg. EE_FEATURE_FIELD
+#include <svx/eeitem.hxx>
+#endif
+#include <offmgr/app.hxx>
+#include <offmgr/htmlcfg.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/docinf.hxx>
+#include <sfx2/frmhtmlw.hxx>
+#include <sfx2/objsh.hxx>
+#include <svtools/stritem.hxx>
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SVSTDARR_USHORTS
+#define _SVSTDARR_USHORTS
+#endif
+#include <svtools/svstdarr.hxx>
+#include <svtools/zforlist.hxx>
+#include <svtools/htmlkywd.hxx>
+#include <svtools/htmlout.hxx>
+#include <svtools/parhtml.hxx>
+#include <vcl/outdev.hxx>
+#include <tools/intn.hxx>
+#include <stdio.h>
+
+#if defined(GetNumberFormat) && SUPD<356
+// xoutbmp.hxx -> svimbase.hxx -> sysdep.hxx -> windows.h ->
+// define GetNumberFormat GetNumberFormatA
+#undef GetNumberFormat
+#endif
+
+#include "htmlexp.hxx"
+#include "filter.hxx"
+#include "flttools.hxx"
+#include "global.hxx"
+#include "document.hxx"
+#include "scitems.hxx"
+#include "attrib.hxx"
+#include "patattr.hxx"
+#include "stlpool.hxx"
+#include "scresid.hxx"
+#include "cell.hxx"
+#include "cellform.hxx"
+#include "docoptio.hxx"
+#include "editutil.hxx"
+
+#define ITEMID_FIELD EE_FEATURE_FIELD
+#include <svx/flditem.hxx>
+#undef ITEMID_FIELD
+
+
+// ohne sc.hrc: error C2679: binary '=' : no operator defined which takes a
+// right-hand operand of type 'const class String (__stdcall *)(class ScResId)'
+// bei
+// const String aStrTable( ScResId( SCSTR_TABLE ) ); aStrOut = aStrTable;
+// ?!???
+#include "sc.hrc"
+#include "globstr.hrc"
+
+//========================================================================
+
+const static sal_Char __FAR_DATA sMyBegComment[] = "<!-- ";
+const static sal_Char __FAR_DATA sMyEndComment[] = " -->";
+const static sal_Char __FAR_DATA sFontFamily[] = "font-family: ";
+const static sal_Char __FAR_DATA sFontSize[] = "font-size: ";
+
+const USHORT __FAR_DATA ScHTMLExport::nDefaultFontSize[SC_HTML_FONTSIZES] =
+{
+ HTMLFONTSZ1_DFLT, HTMLFONTSZ2_DFLT, HTMLFONTSZ3_DFLT, HTMLFONTSZ4_DFLT,
+ HTMLFONTSZ5_DFLT, HTMLFONTSZ6_DFLT, HTMLFONTSZ7_DFLT
+};
+
+USHORT ScHTMLExport::nFontSize[SC_HTML_FONTSIZES] = { 0 };
+
+const USHORT ScHTMLExport::nCellSpacing = 0;
+const sal_Char __FAR_DATA ScHTMLExport::sIndentSource[nIndentMax+1] =
+ "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
+
+//========================================================================
+// Makros fuer HTML-Export
+//========================================================================
+#define OUT_PROLOGUE() (rStrm << sHTML30_Prologue << ScExportBase::sNewLine \
+ << ScExportBase::sNewLine)
+#define TAG_ON( tag ) HTMLOutFuncs::Out_AsciiTag( rStrm, tag )
+#define TAG_OFF( tag ) HTMLOutFuncs::Out_AsciiTag( rStrm, tag, FALSE )
+#define OUT_STR( str ) HTMLOutFuncs::Out_String( rStrm, str, eDestEnc )
+#define OUT_LF() rStrm << ScExportBase::sNewLine << GetIndentStr()
+#define lcl_OUT_LF() rStrm << ScExportBase::sNewLine
+#define TAG_ON_LF( tag ) (TAG_ON( tag ) << ScExportBase::sNewLine << GetIndentStr())
+#define TAG_OFF_LF( tag ) (TAG_OFF( tag ) << ScExportBase::sNewLine << GetIndentStr())
+#define OUT_HR() TAG_ON_LF( sHTML_horzrule )
+#define OUT_COMMENT( comment ) (rStrm << sMyBegComment, OUT_STR( comment ) \
+ << sMyEndComment << ScExportBase::sNewLine \
+ << GetIndentStr())
+#define lcl_OUT_COMMENT( comment ) (rStrm << sMyBegComment, OUT_STR( comment ) \
+ << sMyEndComment << ScExportBase::sNewLine)
+
+#define OUT_SP_CSTR_ASS( s ) rStrm << ' ' << s << '='
+#define APPEND_SPACE( s ) s.AppendAscii(" ")
+
+extern BOOL bOderSo;
+
+#define GLOBSTR(id) ScGlobal::GetRscString( id )
+
+
+
+//========================================================================
+
+FltError ScExportHTML( SvStream& rStrm, ScDocument* pDoc,
+ const ScRange& rRange, const CharSet eNach, BOOL bAll,
+ const String& rStreamPath )
+{
+ ScHTMLExport aEx( rStrm, pDoc, rRange, bAll, rStreamPath );
+ return aEx.Write();
+}
+
+
+void lcl_AddStamp( String& rStr, const SfxStamp& rStamp, International& rInter )
+{
+ const DateTime& rDateTime = rStamp.GetTime();
+ String aStrDate = rInter.GetDate( rDateTime );
+ String aStrTime = rInter.GetTime( rDateTime );
+
+ rStr += GLOBSTR( STR_BY );
+ APPEND_SPACE( rStr );
+ if (rStamp.GetName().Len())
+ rStr += rStamp.GetName();
+ else
+ rStr.AppendAscii( "???" );
+ APPEND_SPACE( rStr );
+ rStr += GLOBSTR( STR_ON );
+ APPEND_SPACE( rStr );
+ if (aStrDate.Len())
+ rStr += aStrDate;
+ else
+ rStr.AppendAscii( "???" );
+ rStr.AppendAscii( ", " );
+ if (aStrTime.Len())
+ rStr += aStrTime;
+ else
+ rStr.AppendAscii( "???" );
+}
+
+
+void lcl_AppendHTMLColorTripel( ByteString& rStr, const Color& rColor )
+{
+ // <font COLOR="#00FF40">hallo</font>
+ sal_Char buf[64];
+ sal_Char* p = buf;
+
+ rStr += "\"#";
+ p += sprintf( p, "%02X", rColor.GetRed() );
+ p += sprintf( p, "%02X", rColor.GetGreen() );
+ p += sprintf( p, "%02X", rColor.GetBlue() );
+ rStr += buf;
+ rStr += '\"';
+}
+
+
+/*void lcl_TagOn( String& rResult, const String& rTag, const String* pStrOpt )
+{
+ rResult = '<';
+ rResult += rTag;
+ if ( pStrOpt )
+ {
+ rResult += ' ';
+ rResult += *pStrOpt;
+ }
+ rResult += '>';
+}
+*/
+
+/*void lcl_TagOff( String& rResult, const String& rTag )
+{
+ rResult = '<'; rResult += rTag; rResult += '>';
+}
+*/
+
+void lcl_WriteTeamInfo( SvStream& rStrm, rtl_TextEncoding eDestEnc )
+{
+ if ( !bOderSo ) return;
+ lcl_OUT_LF();
+ lcl_OUT_COMMENT( _STRINGCONST( "Sascha Ballach " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Michael Daeumling (aka Bitsau) " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Michael Hagen " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Roland Jakobs " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Andreas Krebs " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Niklas Nebel " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Jacques Nietsch " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Marcus Olk " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Eike Rathke " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Daniel Rentz " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Stephan Templin " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "Gunnar Timm " ) );
+ lcl_OUT_COMMENT( _STRINGCONST( "*** Man kann nicht ALLES haben! ***" ) );
+ lcl_OUT_LF();
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+
+ScHTMLExport::ScHTMLExport( SvStream& rStrmP, ScDocument* pDocP,
+ const ScRange& rRangeP,
+ BOOL bAllP, const String& rStreamPathP ) :
+ ScExportBase( rStrmP, pDocP, rRangeP ),
+ aStreamPath( rStreamPathP ),
+ pAppWin( Application::GetDefaultDevice() ),
+ pSrcArr( NULL ),
+ pDestArr( NULL ),
+ nUsedTables( 0 ),
+ nIndent( 0 ),
+ bAll( bAllP ),
+ bTabHasGraphics( FALSE ),
+ bCalcAsShown( pDocP->GetDocOptions().IsCalcAsShown() )
+{
+ const sal_Char* pCharSet = rtl_getBestMimeCharsetFromTextEncoding( gsl_getSystemTextEncoding() );
+ eDestEnc = rtl_getTextEncodingFromMimeCharset( pCharSet );
+
+ strcpy( sIndent, sIndentSource );
+ sIndent[0] = 0;
+ const USHORT nCount = pDoc->GetTableCount();
+ for ( USHORT nTab = 0; nTab < nCount; nTab++ )
+ {
+ if ( !IsEmptyTable( nTab ) )
+ nUsedTables++;
+ }
+
+ // neue Konfiguration setzen
+ OfaHtmlOptions* pHtmlOptions = ((OfficeApplication*)SFX_APP())->GetHtmlOptions();
+ bCopyLocalFileToINet = pHtmlOptions->IsSaveGraphicsLocal();
+ for ( USHORT j=0; j < SC_HTML_FONTSIZES; j++ )
+ {
+ USHORT nSize = pHtmlOptions->GetFontSize( j );
+ // in Twips merken, wie unser SvxFontHeightItem
+ if ( nSize )
+ nFontSize[j] = nSize * 20;
+ else
+ nFontSize[j] = nDefaultFontSize[j] * 20;
+ }
+
+ // Content-Id fuer Mail-Export?
+ SfxObjectShell* pDocSh = pDoc->GetDocumentShell();
+ if ( pDocSh )
+ {
+ const SfxPoolItem* pItem = pDocSh->GetItem( SID_ORIGURL );
+ if( pItem )
+ {
+ aCId = ((const SfxStringItem *)pItem)->GetValue();
+ DBG_ASSERT( aCId.Len(), "CID ohne Laenge!" );
+ }
+ }
+}
+
+
+ScHTMLExport::~ScHTMLExport()
+{
+ for ( ScHTMLGraphEntry* pE = aGraphList.First(); pE; pE = aGraphList.Next() )
+ delete pE;
+ delete pSrcArr;
+ delete pDestArr;
+}
+
+
+USHORT ScHTMLExport::GetFontSizeNumber( USHORT nHeight )
+{
+ USHORT nSize = 1;
+ for ( USHORT j=SC_HTML_FONTSIZES-1; j>0; j-- )
+ {
+ if( nHeight > (nFontSize[j] + nFontSize[j-1]) / 2 )
+ { // der naechstgelegene
+ nSize = j+1;
+ break;
+ }
+ }
+ return nSize;
+}
+
+
+USHORT ScHTMLExport::ToPixel( USHORT nVal )
+{
+ if( nVal )
+ {
+ nVal = (USHORT)pAppWin->LogicToPixel(
+ Size( nVal, nVal ), MapMode( MAP_TWIP ) ).Width();
+ if( !nVal ) // wo ein Twip ist sollte auch ein Pixel sein
+ nVal = 1;
+ }
+ return nVal;
+}
+
+
+Size ScHTMLExport::MMToPixel( const Size& rSize )
+{
+ Size aSize( rSize );
+ aSize = pAppWin->LogicToPixel( rSize, MapMode( MAP_100TH_MM ) );
+ // wo etwas ist sollte auch ein Pixel sein
+ if ( !aSize.Width() && rSize.Width() )
+ aSize.Width() = 1;
+ if ( !aSize.Height() && rSize.Height() )
+ aSize.Height() = 1;
+ return aSize;
+}
+
+
+ULONG ScHTMLExport::Write()
+{
+ rStrm << '<' << sHTML_doctype << ' ' << sHTML_doctype32 << '>'
+ << sNewLine << sNewLine;
+ TAG_ON_LF( sHTML_html );
+ if ( bAll )
+ {
+ WriteHeader();
+ OUT_LF();
+ }
+ WriteBody();
+ OUT_LF();
+ TAG_OFF_LF( sHTML_html );
+
+ return rStrm.GetError();
+}
+
+
+void ScHTMLExport::WriteHeader()
+{
+ International& rInter = *ScGlobal::pScInternational;
+ SfxDocumentInfo& rInfo = pDoc->GetDocumentShell()->GetDocInfo();
+ String aStrOut;
+
+ IncIndent(1); TAG_ON_LF( sHTML_head );
+
+ SfxFrameHTMLWriter::Out_DocInfo( rStrm, &rInfo, sIndent, eDestEnc );
+ OUT_LF();
+
+ //----------------------------------------------------------
+ if ( rInfo.GetPrinted().GetName().Len() )
+ {
+ OUT_COMMENT( GLOBSTR( STR_DOC_INFO ) );
+ aStrOut = GLOBSTR( STR_DOC_PRINTED );
+ aStrOut.AppendAscii( ": " );
+ lcl_AddStamp( aStrOut, rInfo.GetPrinted(), rInter );
+ OUT_COMMENT( aStrOut );
+ }
+ //----------------------------------------------------------
+
+ lcl_WriteTeamInfo( rStrm, eDestEnc );
+
+ IncIndent(-1); OUT_LF(); TAG_OFF_LF( sHTML_head );
+}
+
+
+void ScHTMLExport::WriteOverview()
+{
+ if ( nUsedTables > 1 )
+ {
+ IncIndent(1);
+ OUT_HR();
+ IncIndent(1); TAG_ON( sHTML_parabreak ); TAG_ON_LF( sHTML_center );
+ TAG_ON( sHTML_head1 );
+ OUT_STR( ScGlobal::GetRscString( STR_OVERVIEW ) );
+ TAG_OFF_LF( sHTML_head1 );
+
+ String aStr;
+
+ const USHORT nCount = pDoc->GetTableCount();
+ for ( USHORT nTab = 0; nTab < nCount; nTab++ )
+ {
+ if ( !IsEmptyTable( nTab ) )
+ {
+ pDoc->GetName( nTab, aStr );
+ rStrm << "<A HREF=\"#table"
+ << ByteString::CreateFromInt32( nTab ).GetBuffer()
+ << "\">";
+ OUT_STR( aStr );
+ rStrm << "</A>";
+ TAG_ON_LF( sHTML_linebreak );
+ }
+ }
+
+ IncIndent(-1); OUT_LF();
+ IncIndent(-1); TAG_OFF( sHTML_center ); TAG_OFF_LF( sHTML_parabreak );
+ }
+}
+
+
+const SfxItemSet& ScHTMLExport::PageDefaults( USHORT nTab )
+{
+ SfxStyleSheetBasePool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = NULL;
+ DBG_ASSERT( pStylePool, "StylePool not found! :-(" );
+ pStylePool->SetSearchMask( SFX_STYLE_FAMILY_PARA, SFXSTYLEBIT_ALL );
+ pStyleSheet = pStylePool->Find( ScGlobal::GetRscString(STR_STYLENAME_STANDARD), SFX_STYLE_FAMILY_PARA );
+ DBG_ASSERT( pStyleSheet, "ParaStyle not found! :-(" );
+ if (!pStyleSheet)
+ pStyleSheet = pStylePool->First();
+ const SfxItemSet& rSetPara = pStyleSheet->GetItemSet();
+
+ // Defaults fuer Vergleich in WriteCell merken
+ aHTMLStyle.aFontFamilyName =
+ ((const SvxFontItem&)(rSetPara.Get( ATTR_FONT ))).GetFamilyName();
+ aHTMLStyle.nFontHeight =
+ ((const SvxFontHeightItem&)(rSetPara.Get( ATTR_FONT_HEIGHT ))).GetHeight();
+
+ // Seitenvorlage Druckeinstellungen fuer z.B. Hintergrundgrafik,
+ // es gibt nur eine Hintergrundgrafik in HTML!
+ // aHTMLStyle.aBackgroundColor wird nicht hier sondern in WriteBody gesetzt
+ pStylePool->SetSearchMask( SFX_STYLE_FAMILY_PAGE, SFXSTYLEBIT_ALL );
+ pStyleSheet = pStylePool->Find( pDoc->GetPageStyle( nTab ), SFX_STYLE_FAMILY_PAGE );
+ DBG_ASSERT( pStyleSheet, "PageStyle not found! :-(" );
+ if (!pStyleSheet)
+ pStyleSheet = pStylePool->First();
+ const SfxItemSet& rSet = pStyleSheet->GetItemSet();
+ return rSet;
+}
+
+
+BOOL ScHTMLExport::HasBottomBorder( USHORT nRow, USHORT nTab,
+ USHORT nStartCol, USHORT nEndCol )
+{
+ BOOL bHas = TRUE;
+ for ( USHORT nCol=nStartCol; nCol<=nEndCol && bHas; nCol++ )
+ {
+ SvxBoxItem* pBorder = (SvxBoxItem*)
+ pDoc->GetAttr( nCol, nRow, nTab, ATTR_BORDER );
+ if ( !pBorder || !pBorder->GetBottom() )
+ { // vielleicht obere Border an Zelle darunter?
+ if ( nRow < MAXROW )
+ {
+ pBorder = (SvxBoxItem*) pDoc->GetAttr( nCol, nRow+1, nTab, ATTR_BORDER );
+ if ( !pBorder || !pBorder->GetTop() )
+ bHas = FALSE;
+ }
+ else
+ bHas = FALSE;
+ }
+ }
+ return bHas;
+}
+
+
+BOOL ScHTMLExport::HasLeftBorder( USHORT nCol, USHORT nTab,
+ USHORT nStartRow, USHORT nEndRow )
+{
+ BOOL bHas = TRUE;
+ for ( USHORT nRow=nStartRow; nRow<=nEndRow && bHas; nRow++ )
+ {
+ SvxBoxItem* pBorder = (SvxBoxItem*)
+ pDoc->GetAttr( nCol, nRow, nTab, ATTR_BORDER );
+ if ( !pBorder || !pBorder->GetLeft() )
+ { // vielleicht rechte Border an Zelle links daneben?
+ if ( nCol > 0 )
+ {
+ pBorder = (SvxBoxItem*) pDoc->GetAttr( nCol-1, nRow, nTab, ATTR_BORDER );
+ if ( !pBorder || !pBorder->GetRight() )
+ bHas = FALSE;
+ }
+ else
+ bHas = FALSE;
+ }
+ }
+ return bHas;
+}
+
+
+BOOL ScHTMLExport::HasTopBorder( USHORT nRow, USHORT nTab,
+ USHORT nStartCol, USHORT nEndCol )
+{
+ BOOL bHas = TRUE;
+ for ( USHORT nCol=nStartCol; nCol<=nEndCol && bHas; nCol++ )
+ {
+ SvxBoxItem* pBorder = (SvxBoxItem*)
+ pDoc->GetAttr( nCol, nRow, nTab, ATTR_BORDER );
+ if ( !pBorder || !pBorder->GetTop() )
+ { // vielleicht untere Border an Zelle darueber?
+ if ( nRow > 0 )
+ {
+ pBorder = (SvxBoxItem*) pDoc->GetAttr( nCol, nRow-1, nTab, ATTR_BORDER );
+ if ( !pBorder || !pBorder->GetBottom() )
+ bHas = FALSE;
+ }
+ else
+ bHas = FALSE;
+ }
+ }
+ return bHas;
+}
+
+
+BOOL ScHTMLExport::HasRightBorder( USHORT nCol, USHORT nTab,
+ USHORT nStartRow, USHORT nEndRow )
+{
+ BOOL bHas = TRUE;
+ for ( USHORT nRow=nStartRow; nRow<=nEndRow && bHas; nRow++ )
+ {
+ SvxBoxItem* pBorder = (SvxBoxItem*)
+ pDoc->GetAttr( nCol, nRow, nTab, ATTR_BORDER );
+ if ( !pBorder || !pBorder->GetRight() )
+ { // vielleicht linke Border an Zelle rechts daneben?
+ if ( nCol < MAXCOL )
+ {
+ pBorder = (SvxBoxItem*) pDoc->GetAttr( nCol+1, nRow, nTab, ATTR_BORDER );
+ if ( !pBorder || !pBorder->GetLeft() )
+ bHas = FALSE;
+ }
+ else
+ bHas = FALSE;
+ }
+ }
+ return bHas;
+}
+
+
+void ScHTMLExport::WriteBody()
+{
+ const SfxItemSet& rSet = PageDefaults( bAll ? 0 : aRange.aStart.Tab() );
+ const SvxBrushItem* pBrushItem = (const SvxBrushItem*)&rSet.Get( ATTR_BACKGROUND );
+
+ aHTMLStyle.aBackgroundColor = pBrushItem->GetColor();
+
+ // CSS1 StyleSheet
+ IncIndent(1); TAG_ON_LF( sHTML_style );
+ rStrm << sMyBegComment; OUT_LF();
+ rStrm << sHTML_body << " { " << sFontFamily;
+ xub_StrLen nFonts = aHTMLStyle.aFontFamilyName.GetTokenCount( ';' );
+ if ( nFonts == 1 )
+ {
+ rStrm << '\"';
+ OUT_STR( aHTMLStyle.aFontFamilyName );
+ rStrm << '\"';
+ }
+ else
+ { // Fontliste, VCL: Semikolon als Separator,
+ // CSS1: Komma als Separator und jeder einzelne Fontname quoted
+ const String& rList = aHTMLStyle.aFontFamilyName;
+ for ( xub_StrLen j = 0, nPos = 0; j < nFonts; j++ )
+ {
+ rStrm << '\"';
+ OUT_STR( rList.GetToken( 0, ';', nPos ) );
+ rStrm << '\"';
+ if ( j < nFonts-1 )
+ rStrm << ", ";
+ }
+ }
+ rStrm << "; " << sFontSize
+ << ByteString::CreateFromInt32( GetFontSizeNumber( ( USHORT ) aHTMLStyle.nFontHeight ) ).GetBuffer()
+ << " }";
+ OUT_LF();
+ rStrm << sMyEndComment;
+ IncIndent(-1); OUT_LF(); TAG_OFF_LF( sHTML_style );
+ OUT_LF();
+
+ // default Textfarbe schwarz
+ rStrm << '<' << sHTML_body << ' ' << sHTML_O_text << "=\"#000000\"";
+
+ if ( bAll && GPOS_NONE != pBrushItem->GetGraphicPos() )
+ {
+ const String* pLink = pBrushItem->GetGraphicLink();
+ String aGrfNm;
+
+ // embeddete Grafik -> via WriteGraphic schreiben
+ if( !pLink )
+ {
+ const Graphic* pGrf = pBrushItem->GetGraphic();
+ if( pGrf )
+ {
+ // Grafik als (JPG-)File speichern
+ aGrfNm = aStreamPath;
+ USHORT nErr = XOutBitmap::WriteGraphic( *pGrf, aGrfNm, _STRINGCONST( "JPG" ) );
+ if( !nErr ) // fehlerhaft, da ist nichts auszugeben
+ {
+ aGrfNm = URIHelper::SmartRelToAbs( aGrfNm );
+ if ( HasCId() )
+ MakeCIdURL( aGrfNm );
+ pLink = &aGrfNm;
+ }
+ }
+ }
+ else
+ {
+ aGrfNm = *pLink;
+ if( bCopyLocalFileToINet || HasCId() )
+ {
+ CopyLocalFileToINet( aGrfNm, aStreamPath );
+ if ( HasCId() )
+ MakeCIdURL( aGrfNm );
+ }
+ else
+ aGrfNm = URIHelper::SmartRelToAbs( aGrfNm );
+ pLink = &aGrfNm;
+ }
+ if( pLink )
+ {
+ rStrm << ' ' << sHTML_O_background << "=\"";
+ OUT_STR( INetURLObject::AbsToRel( *pLink ) ) << '\"';
+ }
+ }
+ OUT_SP_CSTR_ASS( sHTML_O_bgcolor );
+ HTMLOutFuncs::Out_Color( rStrm, aHTMLStyle.aBackgroundColor );
+
+ rStrm << '>'; OUT_LF();
+
+ if ( bAll )
+ WriteOverview();
+
+ WriteTables();
+
+ TAG_OFF_LF( sHTML_body );
+}
+
+
+void ScHTMLExport::WriteTables()
+{
+ const USHORT nTabCount = pDoc->GetTableCount();
+ const String aStrTable( ScResId( SCSTR_TABLE ) );
+ String aStr;
+ String aStrOut;
+ USHORT nStartCol, nStartRow, nStartTab;
+ USHORT nEndCol, nEndRow, nEndTab;
+ USHORT nStartColFix, nStartRowFix, nEndColFix, nEndRowFix;
+ ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+ if ( bAll )
+ {
+ nStartTab = 0;
+ nEndTab = nTabCount - 1;
+ }
+ else
+ {
+ nStartCol = nStartColFix = aRange.aStart.Col();
+ nStartRow = nStartRowFix = aRange.aStart.Row();
+ nStartTab = aRange.aStart.Tab();
+ nEndCol = nEndColFix = aRange.aEnd.Col();
+ nEndRow = nEndRowFix = aRange.aEnd.Row();
+ nEndTab = aRange.aEnd.Tab();
+ }
+ for ( USHORT nTab=nStartTab; nTab<=nEndTab; nTab++ )
+ {
+ if ( bAll )
+ {
+ if ( !GetDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow ) )
+ continue; // for
+
+ if ( nUsedTables > 1 )
+ {
+ aStrOut = aStrTable;
+ aStrOut.AppendAscii( " " );
+ aStrOut += String::CreateFromInt32( nTab + 1 );
+ aStrOut.AppendAscii( ": " );
+
+ OUT_HR();
+
+ // Anker festlegen:
+ rStrm << "<A NAME=\"table"
+ << ByteString::CreateFromInt32( nTab ).GetBuffer()
+ << "\">";
+ TAG_ON( sHTML_head1 );
+ OUT_STR( aStrOut );
+ TAG_ON( sHTML_emphasis );
+
+ pDoc->GetName( nTab, aStr );
+ OUT_STR( aStr );
+
+ TAG_OFF( sHTML_emphasis );
+ TAG_OFF( sHTML_head1 );
+ rStrm << "</A>"; OUT_LF();
+ }
+ }
+ else
+ {
+ nStartCol = nStartColFix;
+ nStartRow = nStartRowFix;
+ nEndCol = nEndColFix;
+ nEndRow = nEndRowFix;
+ if ( !TrimDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow ) )
+ continue; // for
+ }
+
+ // <TABLE ...>
+ ByteString aByteStrOut = sHTML_table;
+// aStrOut = sHTML_table;
+ aByteStrOut += ' ';
+ aByteStrOut += sHTML_frame;
+ aByteStrOut += '=';
+ USHORT nFrame = 0;
+ if ( HasBottomBorder( nEndRow, nTab, nStartCol, nEndCol ) )
+ nFrame |= 2;
+ if ( HasLeftBorder( nStartCol, nTab, nStartRow, nEndRow ) )
+ nFrame |= 4;
+ if ( HasTopBorder( nStartRow, nTab, nStartCol, nEndCol ) )
+ nFrame |= 8;
+ if ( HasRightBorder( nEndCol, nTab, nStartRow, nEndRow ) )
+ nFrame |= 16;
+ if ( nFrame )
+ {
+ // nicht alle Kombinationen sind in HTML moeglich
+ // nur void, above, below, lhs, rhs, hsides, vsides, box
+ const USHORT nAll = 2 | 4 | 8 | 16;
+ USHORT nBit;
+ for ( nBit=2; nBit<=16; nBit <<= 1 )
+ {
+ if ( (nFrame | nBit) == nAll )
+ { // mindestens drei Seiten => vier
+ aByteStrOut += sHTML_TF_box;
+ nFrame = 0;
+ break;
+ }
+ }
+ if ( nFrame )
+ { // ein oder zwei Seiten
+ for ( nBit=2; nBit<=16; nBit <<= 1 )
+ {
+ if ( (nFrame & nBit) == nFrame )
+ { // eine Seite
+ switch ( nBit )
+ {
+ case 2:
+ aByteStrOut += sHTML_TF_below;
+ break;
+ case 4:
+ aByteStrOut += sHTML_TF_lhs;
+ break;
+ case 8:
+ aByteStrOut += sHTML_TF_above;
+ break;
+ case 16:
+ aByteStrOut += sHTML_TF_rhs;
+ break;
+ }
+ nFrame = 0;
+ break;
+ }
+ }
+ if ( nFrame )
+ { // zwei Seiten
+ // horizontale bevorzugt
+ if ( nFrame & 8 )
+ {
+ if ( nFrame & 2 )
+ aByteStrOut += sHTML_TF_hsides;
+ else
+ aByteStrOut += sHTML_TF_above;
+ }
+ else if ( nFrame & 2 )
+ aByteStrOut += sHTML_TF_below;
+ else if ( nFrame & 4 )
+ {
+ if ( nFrame & 16 )
+ aByteStrOut += sHTML_TF_vsides;
+ else
+ aByteStrOut += sHTML_TF_lhs;
+ }
+ else // if ( nFrame & 16 )
+ aByteStrOut += sHTML_TF_rhs;
+ }
+ }
+ }
+ else
+ aByteStrOut += sHTML_TF_void;
+
+ bTabHasGraphics = bTabAlignedLeft = FALSE;
+ if ( bAll && pDrawLayer )
+ PrepareGraphics( pDrawLayer, nTab, nStartCol, nStartRow,
+ nEndCol, nEndRow );
+
+ // mehr <TABLE ...>
+ if ( bTabAlignedLeft )
+ (((aByteStrOut += ' ') += sHTML_O_align) += '=') += sHTML_AL_left;
+ // ALIGN=LEFT allow text and graphics to flow around
+ // CELLSPACING
+ (((aByteStrOut += ' ' ) += sHTML_O_cellspacing ) += '=') +=
+ ByteString::CreateFromInt32( nCellSpacing );
+ // COLS=n
+ USHORT nColCnt = 0;
+ USHORT nCol;
+ for ( nCol=nStartCol; nCol<=nEndCol; nCol++ )
+ {
+ if ( !(pDoc->GetColFlags( nCol, nTab ) & CR_HIDDEN) )
+ ++nColCnt;
+ }
+ (((aByteStrOut += ' ') += sHTML_O_cols) += '=') += ByteString::CreateFromInt32( nColCnt );
+ // RULES=GROUPS
+ (((aByteStrOut += ' ') += sHTML_O_rules) += '=') += sHTML_TR_groups;
+ // Netscape und M$IE brauchen ein BORDER=n um ueberhaupt ein Rule zu zeichnen
+ ((aByteStrOut += ' ') += sHTML_O_border) += "=1";
+ IncIndent(1); TAG_ON_LF( aByteStrOut.GetBuffer() );
+
+ // <COLGROUP> fuer RULES=GROUPS
+ TAG_ON( sHTML_colgroup );
+ // <COL WIDTH=x> als Vorabinformation fuer lange Tabellen
+ ByteString aByteStr = sHTML_col;
+ aByteStr += ' ';
+ aByteStr += sHTML_O_width;
+ aByteStr += '=';
+ for ( nCol=nStartCol; nCol<=nEndCol; nCol++ )
+ {
+ if ( pDoc->GetColFlags( nCol, nTab ) & CR_HIDDEN )
+ continue; // for
+
+ aByteStrOut = aByteStr;
+ aByteStrOut += ByteString::CreateFromInt32(
+ ToPixel( pDoc->GetColWidth( nCol, nTab ) ) );
+ TAG_ON( aByteStrOut.GetBuffer() );
+
+ if ( nCol < nEndCol && HasRightBorder( nCol, nTab,
+ nStartRow, nEndRow ) )
+ { // neue ColGroup fuer RULES
+ TAG_OFF_LF( sHTML_colgroup );
+ TAG_ON( sHTML_colgroup );
+ }
+ }
+ TAG_OFF_LF( sHTML_colgroup );
+
+ // <TBODY> fuer RULES=GROUPS
+ IncIndent(1); TAG_ON_LF( sHTML_tbody );
+ for ( USHORT nRow=nStartRow; nRow<=nEndRow; nRow++ )
+ {
+ if ( pDoc->GetRowFlags( nRow, nTab ) & CR_HIDDEN )
+ continue; // for
+
+ IncIndent(1); TAG_ON_LF( sHTML_tablerow );
+ for ( USHORT nCol=nStartCol; nCol<=nEndCol; nCol++ )
+ {
+ if ( pDoc->GetColFlags( nCol, nTab ) & CR_HIDDEN )
+ continue; // for
+
+ if ( nCol == nEndCol )
+ IncIndent(-1);
+ WriteCell( nCol, nRow, nTab );
+ }
+
+ if ( nRow < nEndRow && HasBottomBorder( nRow, nTab,
+ nStartCol, nEndCol ) )
+ { // neuer TBody fuer RULES
+ IncIndent(-1); TAG_OFF_LF( sHTML_tablerow );
+ TAG_OFF_LF( sHTML_tbody );
+ IncIndent(1); TAG_ON_LF( sHTML_tbody );
+ }
+ else
+ {
+ if ( nRow == nEndRow )
+ IncIndent(-1);
+ TAG_OFF_LF( sHTML_tablerow );
+ }
+ }
+ IncIndent(-1); TAG_OFF_LF( sHTML_tbody );
+
+ IncIndent(-1); TAG_OFF_LF( sHTML_table );
+
+ if ( bTabHasGraphics )
+ {
+ // der Rest, der nicht in Zellen ist
+ for ( ScHTMLGraphEntry* pE = aGraphList.First(); pE; pE = aGraphList.Next() )
+ {
+ if ( !pE->bWritten )
+ WriteGraphEntry( pE );
+ delete pE;
+ }
+ aGraphList.Clear();
+ if ( bTabAlignedLeft )
+ { // mit <BR CLEAR=LEFT> das <TABLE ALIGN=LEFT> wieder ausschalten
+ aByteStrOut = sHTML_linebreak;
+ (((aByteStrOut += ' ') += sHTML_O_clear) += '=') += sHTML_AL_left;
+ TAG_ON_LF( aByteStrOut.GetBuffer() );
+ }
+ }
+
+ if ( bAll )
+ OUT_COMMENT( _STRINGCONST( "**************************************************************************" ) );
+ }
+}
+
+
+void ScHTMLExport::WriteCell( USHORT nCol, USHORT nRow, USHORT nTab )
+{
+ const ScPatternAttr* pAttr = pDoc->GetPattern( nCol, nRow, nTab );
+
+ const ScMergeFlagAttr& rMergeFlagAttr = (const ScMergeFlagAttr&) pAttr->GetItem( ATTR_MERGE_FLAG );
+ if ( rMergeFlagAttr.IsOverlapped() )
+ return ;
+
+ ScAddress aPos( nCol, nRow, nTab );
+ BOOL bIsGraphHere = FALSE;
+ ScHTMLGraphEntry* pGraphEntry;
+ if ( bTabHasGraphics )
+ {
+ for ( pGraphEntry = aGraphList.First(); pGraphEntry;
+ pGraphEntry = aGraphList.Next() )
+ {
+
+ if ( pGraphEntry->bInCell && pGraphEntry->aRange.In( aPos ) )
+ {
+ if ( pGraphEntry->aRange.aStart == aPos )
+ bIsGraphHere = TRUE;
+ else
+ return ; // ist ein Col/RowSpan, Overlapped
+ break;
+ }
+ }
+ }
+
+ ScBaseCell* pCell = pDoc->GetCell( aPos );
+ ULONG nFormat = pAttr->GetNumberFormat( pFormatter );
+ BOOL bValueData;
+ if ( pCell )
+ bValueData = pCell->HasValueData();
+ else
+ bValueData = FALSE;
+
+ ByteString aStrTD = sHTML_tabledata;
+
+ String aStr;
+ const sal_Char* pChar;
+ USHORT nWidthPixel;
+ USHORT nHeightPixel;
+
+ const ScMergeAttr& rMergeAttr = (const ScMergeAttr&) pAttr->GetItem( ATTR_MERGE );
+ if ( bIsGraphHere || rMergeAttr.IsMerged() )
+ {
+ USHORT j, n, v;
+ if ( bIsGraphHere )
+ n = pGraphEntry->aRange.aEnd.Col() - nCol + 1;
+ else
+ n = rMergeAttr.GetColMerge();
+ if ( n > 1 )
+ {
+ (((aStrTD += ' ') += sHTML_O_colspan) += '=') += ByteString::CreateFromInt32( n );
+ n += nCol;
+ for ( j=nCol, v=0; j<n; j++ )
+ v += pDoc->GetColWidth( j, nTab );
+ nWidthPixel = ToPixel( v );
+ }
+ else
+ nWidthPixel = ToPixel( pDoc->GetColWidth( nCol, nTab ) );
+
+ if ( bIsGraphHere )
+ n = pGraphEntry->aRange.aEnd.Row() - nRow + 1;
+ else
+ n = rMergeAttr.GetRowMerge();
+ if ( n > 1 )
+ {
+ (((aStrTD += ' ') += sHTML_O_rowspan) += '=') += ByteString::CreateFromInt32( n );
+ n += nRow;
+ for ( j=nRow, v=0; j<n; j++ )
+ v += pDoc->GetRowHeight( j, nTab );
+ nHeightPixel = ToPixel( v );
+ }
+ else
+ nHeightPixel = ToPixel( pDoc->GetRowHeight( nRow, nTab ) );
+ }
+ else
+ {
+ nWidthPixel = ToPixel( pDoc->GetColWidth( nCol, nTab ) );
+ nHeightPixel = ToPixel( pDoc->GetRowHeight( nRow, nTab ) );
+ }
+
+ // trotz der <TABLE COLS=n> und <COL WIDTH=x> Angaben noetig,
+ // da die nicht von Netscape beachtet werden..
+ // Spaltenbreite
+ (((aStrTD += ' ') += sHTML_O_width) += '=') += ByteString::CreateFromInt32( nWidthPixel );
+ // Zeilenhoehe
+ (((aStrTD += ' ') += sHTML_O_height) += '=') += ByteString::CreateFromInt32( nHeightPixel );
+
+ const SvxFontItem& rFontItem = (const SvxFontItem&) pAttr->GetItem( ATTR_FONT );
+ const SvxFontHeightItem& rFontHeightItem = (const SvxFontHeightItem&)pAttr->GetItem( ATTR_FONT_HEIGHT );
+ const SvxWeightItem& rWeightItem = (const SvxWeightItem&) pAttr->GetItem( ATTR_FONT_WEIGHT );
+ const SvxPostureItem& rPostureItem = (const SvxPostureItem&) pAttr->GetItem( ATTR_FONT_POSTURE );
+ const SvxUnderlineItem& rUnderlineItem = (const SvxUnderlineItem&) pAttr->GetItem( ATTR_FONT_UNDERLINE );
+ const SvxColorItem& rColorItem = (const SvxColorItem&) pAttr->GetItem( ATTR_FONT_COLOR );
+ const SvxHorJustifyItem& rHorJustifyItem = (const SvxHorJustifyItem&)pAttr->GetItem( ATTR_HOR_JUSTIFY );
+ const SvxVerJustifyItem& rVerJustifyItem = (const SvxVerJustifyItem&)pAttr->GetItem( ATTR_VER_JUSTIFY );
+ const SvxBrushItem& rBrushItem = (const SvxBrushItem&) pAttr->GetItem( ATTR_BACKGROUND );
+ Color aBgColor;
+ if ( rBrushItem.GetColor().GetTransparency() == 255 )
+ aBgColor = aHTMLStyle.aBackgroundColor; // #55121# keine ungewollte Hintergrundfarbe
+ else
+ aBgColor = rBrushItem.GetColor();
+
+ BOOL bBold = ( WEIGHT_BOLD <= rWeightItem.GetWeight() );
+ BOOL bItalic = ( ITALIC_NONE != rPostureItem.GetPosture() );
+ BOOL bUnderline = ( UNDERLINE_NONE != rUnderlineItem.GetUnderline() );
+ BOOL bSetFontColor = ( COL_BLACK != rColorItem.GetValue().GetColor() );
+#if 0
+// keine StyleSheet-Fontangaben: hart fuer jede Zelle
+ BOOL bSetFontName = TRUE;
+ BOOL bSetFontHeight = TRUE;
+#else
+ BOOL bSetFontName = ( aHTMLStyle.aFontFamilyName != rFontItem.GetFamilyName() );
+ BOOL bSetFontHeight = ( aHTMLStyle.nFontHeight != rFontHeightItem.GetHeight() );
+#endif
+ BOOL bSetFont = (bSetFontColor || bSetFontName || bSetFontHeight);
+
+ switch( rHorJustifyItem.GetValue() )
+ {
+ case SVX_HOR_JUSTIFY_STANDARD:
+ pChar = (bValueData ? sHTML_AL_right : sHTML_AL_left);
+ break;
+ case SVX_HOR_JUSTIFY_CENTER: pChar = sHTML_AL_center; break;
+ case SVX_HOR_JUSTIFY_BLOCK: pChar = sHTML_AL_justify; break;
+ case SVX_HOR_JUSTIFY_RIGHT: pChar = sHTML_AL_right; break;
+ case SVX_HOR_JUSTIFY_LEFT:
+ case SVX_HOR_JUSTIFY_REPEAT:
+ default: pChar = sHTML_AL_left; break;
+ }
+
+ (((aStrTD += ' ') += sHTML_O_align) += '=') += pChar;
+
+ switch( rVerJustifyItem.GetValue() )
+ {
+ case SVX_VER_JUSTIFY_TOP: pChar = sHTML_VA_top; break;
+ case SVX_VER_JUSTIFY_CENTER: pChar = sHTML_VA_middle; break;
+ case SVX_VER_JUSTIFY_BOTTOM: pChar = sHTML_VA_bottom; break;
+ case SVX_VER_JUSTIFY_STANDARD:
+ default: pChar = NULL;
+ }
+ if ( pChar )
+ (((aStrTD += ' ') += sHTML_O_valign) += '=') += pChar;
+
+ if ( aHTMLStyle.aBackgroundColor != aBgColor )
+ {
+ ((aStrTD += ' ') += sHTML_O_bgcolor) += '=';
+ lcl_AppendHTMLColorTripel( aStrTD, aBgColor );
+ }
+
+ double fVal = 0.0;
+ if ( bValueData )
+ {
+ if ( pCell )
+ {
+ switch ( pCell->GetCellType() )
+ {
+ case CELLTYPE_VALUE:
+ fVal = ((ScValueCell*)pCell)->GetValue();
+ if ( bCalcAsShown && fVal != 0.0 )
+ fVal = pDoc->RoundValueAsShown( fVal, nFormat );
+ break;
+ case CELLTYPE_FORMULA:
+ fVal = ((ScFormulaCell*)pCell)->GetValue();
+ if ( (nFormat % SV_COUNTRY_LANGUAGE_OFFSET) == 0 )
+ nFormat = ScGlobal::GetStandardFormat( fVal, *pFormatter,
+ nFormat, ((ScFormulaCell*)pCell)->GetFormatType() );
+ break;
+ default:
+ DBG_ERRORFILE( "value data with unsupported cell type" );
+ }
+ }
+ }
+ HTMLOutFuncs::CreateTableDataOptionsValNum( aStrTD, bValueData, fVal,
+ nFormat, *pFormatter, eDestEnc );
+
+ TAG_ON( aStrTD.GetBuffer() );
+
+ if ( bBold ) TAG_ON( sHTML_bold );
+ if ( bItalic ) TAG_ON( sHTML_italic );
+ if ( bUnderline ) TAG_ON( sHTML_underline );
+
+
+ if ( bSetFont )
+ {
+ ByteString aStr = sHTML_font;
+ if ( bSetFontName )
+ {
+ ((aStr += ' ') += sHTML_O_face) += "=\"";
+ xub_StrLen nFonts = rFontItem.GetFamilyName().GetTokenCount( ';' );
+ if ( nFonts == 1 )
+ {
+ ByteString aTmpStr;
+ HTMLOutFuncs::ConvertStringToHTML( rFontItem.GetFamilyName(), aTmpStr, eDestEnc );
+ aStr += aTmpStr;
+ }
+ else
+ { // Fontliste, VCL: Semikolon als Separator, HTML: Komma
+ const String& rList = rFontItem.GetFamilyName();
+ for ( xub_StrLen j = 0, nPos = 0; j < nFonts; j++ )
+ {
+ ByteString aTmpStr;
+ HTMLOutFuncs::ConvertStringToHTML( rList.GetToken( 0, ';', nPos ), aTmpStr, eDestEnc );
+ aStr += aTmpStr;
+ if ( j < nFonts-1 )
+ aStr += ',';
+ }
+ }
+ aStr += '\"';
+ }
+ if ( bSetFontHeight )
+ {
+ (((aStr += ' ') += sHTML_O_size) += '=')
+ += ByteString::CreateFromInt32( GetFontSizeNumber( (USHORT)rFontHeightItem.GetHeight() ) );
+ }
+ if ( bSetFontColor )
+ {
+ Color aColor = rColorItem.GetValue();
+ ((aStr += ' ') += sHTML_O_color) += '=';
+ lcl_AppendHTMLColorTripel( aStr, aColor );
+ }
+ TAG_ON( aStr.GetBuffer() );
+ }
+
+ String aStrOut;
+ BOOL bFieldText = FALSE;
+ if ( pCell )
+ { // cell content
+ Color* pColor;
+ switch ( pCell->GetCellType() )
+ {
+ case CELLTYPE_NOTE :
+ // nothing
+ break;
+ case CELLTYPE_EDIT :
+ bFieldText = WriteFieldText( (const ScEditCell*) pCell );
+ if ( bFieldText )
+ break;
+ //! else: fallthru
+ default:
+ ScCellFormat::GetString( pCell, nFormat, aStrOut, &pColor, *pFormatter );
+ }
+ }
+ if ( !bFieldText )
+ {
+ if ( !aStrOut.Len() )
+ TAG_ON( sHTML_linebreak ); // #42573# keine komplett leere Zelle
+ else
+ OUT_STR( aStrOut );
+ }
+ if ( bIsGraphHere )
+ WriteGraphEntry( pGraphEntry );
+
+ if ( bSetFont ) TAG_OFF( sHTML_font );
+ if ( bUnderline ) TAG_OFF( sHTML_underline );
+ if ( bItalic ) TAG_OFF( sHTML_italic );
+ if ( bBold ) TAG_OFF( sHTML_bold );
+
+ TAG_OFF_LF( sHTML_tabledata );
+}
+
+
+BOOL ScHTMLExport::WriteFieldText( const ScEditCell* pCell )
+{
+ BOOL bFields = FALSE;
+ const EditTextObject* pData;
+ pCell->GetData( pData );
+ // text and anchor of URL fields, Doc-Engine is a ScFieldEditEngine
+ EditEngine& rEngine = pDoc->GetEditEngine();
+ rEngine.SetText( *pData );
+ USHORT nParas = rEngine.GetParagraphCount();
+ if ( nParas )
+ {
+ ESelection aSel( 0, 0, nParas-1, rEngine.GetTextLen( nParas-1 ) );
+ SfxItemSet aSet( rEngine.GetAttribs( aSel ) );
+ SfxItemState eFieldState = aSet.GetItemState( EE_FEATURE_FIELD, FALSE );
+ if ( eFieldState == SFX_ITEM_DONTCARE || eFieldState == SFX_ITEM_SET )
+ bFields = TRUE;
+ }
+ if ( bFields )
+ {
+ BOOL bOldUpdateMode = rEngine.GetUpdateMode();
+ rEngine.SetUpdateMode( TRUE ); // no portions if not formatted
+ for ( USHORT nPar=0; nPar < nParas; nPar++ )
+ {
+ if ( nPar > 0 )
+ rStrm << ' '; // blank between paragraphs
+ SvUShorts aPortions;
+ rEngine.GetPortions( nPar, aPortions );
+ USHORT nCnt = aPortions.Count();
+ USHORT nStart = 0;
+ for ( USHORT nPos = 0; nPos < nCnt; nPos++ )
+ {
+ USHORT nEnd = aPortions.GetObject( nPos );
+ ESelection aSel( nPar, nStart, nPar, nEnd );
+ BOOL bUrl = FALSE;
+ // fields are single characters
+ if ( nEnd == nStart+1 )
+ {
+ const SfxPoolItem* pItem;
+ SfxItemSet aSet = rEngine.GetAttribs( aSel );
+ if ( aSet.GetItemState( EE_FEATURE_FIELD, FALSE, &pItem ) == SFX_ITEM_ON )
+ {
+ const SvxFieldData* pField = ((const SvxFieldItem*)pItem)->GetField();
+ if ( pField && pField->ISA(SvxURLField) )
+ {
+ bUrl = TRUE;
+ const SvxURLField* pURLField = (const SvxURLField*)pField;
+// String aFieldText = rEngine.GetText( aSel );
+ rStrm << '<' << sHTML_anchor << ' ' << sHTML_O_href << "=\"";
+ OUT_STR( pURLField->GetURL() );
+ rStrm << "\">";
+ OUT_STR( pURLField->GetRepresentation() );
+ rStrm << "</" << sHTML_anchor << '>';
+ }
+ }
+ }
+ if ( !bUrl )
+ OUT_STR( rEngine.GetText( aSel ) );
+ nStart = nEnd;
+ }
+ }
+ rEngine.SetUpdateMode( bOldUpdateMode );
+ }
+ return bFields;
+}
+
+
+BOOL ScHTMLExport::CopyLocalFileToINet( String& rFileNm,
+ const String& rTargetNm, BOOL bFileToFile )
+{
+ BOOL bRet = FALSE;
+ INetURLObject aFileUrl, aTargetUrl;
+ aFileUrl.SetSmartURL( rFileNm );
+ aTargetUrl.SetSmartURL( rTargetNm );
+ if( INET_PROT_FILE == aFileUrl.GetProtocol() &&
+ ( (bFileToFile && INET_PROT_FILE == aTargetUrl.GetProtocol()) ||
+ (!bFileToFile && INET_PROT_FILE != aTargetUrl.GetProtocol() &&
+ INET_PROT_FTP <= aTargetUrl.GetProtocol() &&
+ INET_PROT_NEWS >= aTargetUrl.GetProtocol()) ) )
+ {
+ if( pSrcArr )
+ {
+ // wurde die Datei schon verschoben
+ USHORT nPos;
+ if( pSrcArr->Seek_Entry( &rFileNm, &nPos ))
+ {
+ rFileNm = *(*pDestArr)[ nPos ];
+ return TRUE;
+ }
+ }
+ else
+ {
+ pSrcArr = new SvStringsSortDtor( 4, 4 );
+ pDestArr = new SvStringsSortDtor( 4, 4 );
+ }
+
+ String* pSrc = new String( rFileNm );
+ SvFileStream aTmp( aFileUrl.PathToFileName(), STREAM_READ );
+
+ String* pDest = new String( aTargetUrl.GetPartBeforeLastName() );
+ *pDest += aFileUrl.GetName();
+
+ if( bFileToFile )
+ {
+ INetURLObject aCpyURL( *pDest );
+ SvFileStream aCpy( aCpyURL.PathToFileName(), STREAM_WRITE );
+ aCpy << aTmp;
+
+ aCpy.Close();
+ bRet = SVSTREAM_OK == aCpy.GetError();
+ }
+ else
+ {
+ SfxMedium aMedium( *pDest, STREAM_WRITE | STREAM_SHARE_DENYNONE,
+ FALSE, FALSE );
+
+ // temp. File anlegen
+ // aMedium.DownLoad();
+
+ {
+ SvFileStream aCpy( aMedium.GetPhysicalName(), STREAM_WRITE );
+ aCpy << aTmp;
+ }
+
+ // uebertragen
+ aMedium.Close();
+ aMedium.Commit();
+
+ bRet = 0 == aMedium.GetError();
+ }
+
+ if( bRet )
+ {
+ pSrcArr->Insert( pSrc );
+ pDestArr->Insert( pDest );
+ rFileNm = *pDest;
+ }
+ else
+ {
+ delete pSrc;
+ delete pDest;
+ }
+ }
+
+ return bRet;
+}
+
+
+void ScHTMLExport::MakeCIdURL( String& rURL )
+{
+ if( !aCId.Len() )
+ return;
+
+ INetURLObject aURLObj( rURL );
+ if( INET_PROT_FILE != aURLObj.GetProtocol() )
+ return;
+
+ String aLastName( aURLObj.GetLastName() );
+ DBG_ASSERT( aLastName.Len(), "Dateiname ohne Laenge!" );
+ aLastName.ToLowerAscii();
+
+ rURL.AssignAscii( "cid:" );
+ rURL += aLastName;
+ rURL.AppendAscii( "." );
+ rURL += aCId;
+}
+
+
+void ScHTMLExport::IncIndent( short nVal )
+{
+ sIndent[nIndent] = '\t';
+ nIndent += nVal;
+ if ( nIndent < 0 )
+ nIndent = 0;
+ else if ( nIndent > nIndentMax )
+ nIndent = nIndentMax;
+ sIndent[nIndent] = 0;
+}
+
+
+
diff --git a/sc/source/filter/html/htmlexp2.cxx b/sc/source/filter/html/htmlexp2.cxx
new file mode 100644
index 000000000000..3b75e54514a5
--- /dev/null
+++ b/sc/source/filter/html/htmlexp2.cxx
@@ -0,0 +1,287 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlexp2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#ifdef MAC
+#define _SYSDEP_HXX
+#endif
+
+#include <svx/svditer.hxx>
+#include <svx/svdograf.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/xoutbmp.hxx>
+#include <so3/ipobj.hxx>
+#include <sot/exchange.hxx>
+#include <svtools/htmlkywd.hxx>
+#include <svtools/htmlout.hxx>
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#include <tools/urlobj.hxx>
+
+#if defined(WIN) || defined(WNT)
+#ifndef _SVWIN_H
+#include <tools/svwin.h>
+#endif
+#endif
+
+#include "htmlexp.hxx"
+#include "global.hxx"
+#include "flttools.hxx"
+#include "document.hxx"
+#include "drwlayer.hxx"
+
+
+//------------------------------------------------------------------------
+
+void ScHTMLExport::PrepareGraphics( ScDrawLayer* pDrawLayer, USHORT nTab,
+ USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow )
+{
+ if ( pDrawLayer->HasObjectsInRows( nTab, nStartRow, nEndRow ) )
+ {
+ SdrPage* pDrawPage = pDrawLayer->GetPage( nTab );
+ if ( pDrawPage )
+ {
+ bTabHasGraphics = TRUE;
+ FillGraphList( pDrawPage, nTab,
+ nStartCol, nStartRow, nEndCol, nEndRow );
+ for ( ScHTMLGraphEntry* pE = aGraphList.First(); pE;
+ pE = aGraphList.Next() )
+ {
+ if ( !pE->bInCell )
+ { // nicht alle in Zellen: einige neben Tabelle
+ bTabAlignedLeft = TRUE;
+ break;
+ }
+ }
+ }
+ }
+}
+
+
+void ScHTMLExport::FillGraphList( const SdrPage* pPage, USHORT nTab,
+ USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow )
+{
+ ULONG nObjCount = pPage->GetObjCount();
+ if ( nObjCount )
+ {
+ Rectangle aRect;
+ if ( !bAll )
+ aRect = pDoc->GetMMRect( nStartCol, nStartRow, nEndCol, nEndRow, nTab );
+ SdrObjListIter aIter( *pPage, IM_FLAT );
+ SdrObject* pObject = aIter.Next();
+ while ( pObject )
+ {
+ Rectangle aObjRect = pObject->GetBoundRect();
+ if ( bAll || aRect.IsInside( aObjRect ) )
+ {
+ switch ( pObject->GetObjIdentifier() )
+ {
+ case OBJ_GRAF:
+ case OBJ_OLE2:
+ {
+ Size aSpace;
+ ScRange aR = pDoc->GetRange( nTab, aObjRect );
+ // Rectangle in mm/100
+ Size aSize( MMToPixel( aObjRect.GetSize() ) );
+ USHORT nCol1 = aR.aStart.Col();
+ USHORT nRow1 = aR.aStart.Row();
+ USHORT nCol2 = aR.aEnd.Col();
+ USHORT nRow2 = aR.aEnd.Row();
+ // alle Zellen unter der Grafik leer?
+ BOOL bInCell = (pDoc->GetEmptyLinesInBlock(
+ nCol1, nRow1, nTab, nCol2, nRow2, nTab, DIR_TOP )
+ == (nRow2 - nRow1)); // rows-1 !
+ if ( bInCell )
+ { // Spacing innerhalb der Span-Cell
+ Rectangle aCellRect = pDoc->GetMMRect(
+ nCol1, nRow1, nCol2, nRow2, nTab );
+ aSpace = MMToPixel( Size(
+ aCellRect.GetWidth() - aObjRect.GetWidth(),
+ aCellRect.GetHeight() - aObjRect.GetHeight() ));
+ aSpace.Width() += (nCol2-nCol1) * (nCellSpacing+1);
+ aSpace.Height() += (nRow2-nRow1) * (nCellSpacing+1);
+ aSpace.Width() /= 2;
+ aSpace.Height() /= 2;
+ }
+ ScHTMLGraphEntry* pE = new ScHTMLGraphEntry( pObject,
+ aR, aSize, bInCell, aSpace );
+ aGraphList.Insert( pE, LIST_APPEND );
+ }
+ break;
+ default:
+ DBG_ERRORFILE( "FillGraphList: kein OBJ_GRAF, kein OBJ_OLE2, unnu?" );
+ }
+ }
+ pObject = aIter.Next();
+ }
+ }
+}
+
+
+void ScHTMLExport::WriteGraphEntry( ScHTMLGraphEntry* pE )
+{
+ SdrObject* pObject = pE->pObject;
+ ByteString aOpt;
+ (((aOpt += ' ') += sHTML_O_width) += '=') +=
+ ByteString::CreateFromInt32( pE->aSize.Width() );
+ (((aOpt += ' ') += sHTML_O_height) += '=') +=
+ ByteString::CreateFromInt32( pE->aSize.Height() );
+ if ( pE->bInCell )
+ {
+ (((aOpt += ' ') += sHTML_O_hspace) += '=') +=
+ ByteString::CreateFromInt32( pE->aSpace.Width() );
+ (((aOpt += ' ') += sHTML_O_vspace) += '=') +=
+ ByteString::CreateFromInt32( pE->aSpace.Height() );
+ }
+ switch ( pObject->GetObjIdentifier() )
+ {
+ case OBJ_GRAF:
+ {
+ const SdrGrafObj* pSGO = (SdrGrafObj*)pObject;
+ const SdrGrafObjGeoData* pGeo = (SdrGrafObjGeoData*)pSGO->GetGeoData();
+ USHORT nMirrorCase = (pGeo->aGeo.nDrehWink == 18000 ?
+ ( pGeo->bMirrored ? 3 : 4 ) : ( pGeo->bMirrored ? 2 : 1 ));
+ BOOL bHMirr = ( ( nMirrorCase == 2 ) || ( nMirrorCase == 4 ) );
+ BOOL bVMirr = ( ( nMirrorCase == 3 ) || ( nMirrorCase == 4 ) );
+ ULONG nXOutFlags = 0;
+ if ( bHMirr )
+ nXOutFlags |= XOUTBMP_MIRROR_HORZ;
+ if ( bVMirr )
+ nXOutFlags |= XOUTBMP_MIRROR_VERT;
+ String aLinkName;
+ if ( pSGO->IsLinkedGraphic() )
+ aLinkName = pSGO->GetFileName();
+ WriteImage( aLinkName, pSGO->GetGraphic(), aOpt, nXOutFlags );
+ pE->bWritten = TRUE;
+ }
+ break;
+ case OBJ_OLE2:
+ {
+ const SvInPlaceObjectRef& rRef = ((SdrOle2Obj*)pObject)->GetObjRef();
+ GDIMetaFile* pPic = NULL;
+ SvData aData( FORMAT_GDIMETAFILE );
+ if( rRef->GetData( &aData ) )
+ aData.GetData( &pPic, TRANSFER_REFERENCE );
+ if( pPic )
+ {
+ Graphic aGraph( *pPic );
+ String aLinkName;
+ WriteImage( aLinkName, aGraph, aOpt );
+ pE->bWritten = TRUE;
+ }
+ }
+ break;
+ }
+}
+
+
+void ScHTMLExport::WriteImage( String& rLinkName, const Graphic& rGrf,
+ const ByteString& rImgOptions, ULONG nXOutFlags )
+{
+ // embeddete Grafik -> via WriteGraphic schreiben
+ if( !rLinkName.Len() )
+ {
+ if( aStreamPath.Len() > 0 )
+ {
+ // Grafik als (JPG-)File speichern
+ String aGrfNm( aStreamPath );
+ USHORT nErr = XOutBitmap::WriteGraphic( rGrf, aGrfNm, _STRINGCONST( "JPG" ), nXOutFlags );
+ if( !nErr ) // sonst fehlerhaft, da ist nichts auszugeben
+ {
+ rLinkName = URIHelper::SmartRelToAbs( aGrfNm );
+ if ( HasCId() )
+ MakeCIdURL( rLinkName );
+ }
+ }
+ }
+ else
+ {
+ if( bCopyLocalFileToINet || HasCId() )
+ {
+ CopyLocalFileToINet( rLinkName, aStreamPath );
+ if ( HasCId() )
+ MakeCIdURL( rLinkName );
+ }
+ else
+ rLinkName = URIHelper::SmartRelToAbs( rLinkName );
+ }
+ if( rLinkName.Len() )
+ { // <IMG SRC="..."[ rImgOptions]>
+ rStrm << '<' << sHTML_image << ' ' << sHTML_O_src << "=\"";
+ HTMLOutFuncs::Out_String( rStrm, INetURLObject::AbsToRel( rLinkName ), eDestEnc ) << '\"';
+ if ( rImgOptions.Len() )
+ rStrm << rImgOptions.GetBuffer();
+ rStrm << '>' << sNewLine << GetIndentStr();
+ }
+}
+
+
+
+
diff --git a/sc/source/filter/html/htmlimp.cxx b/sc/source/filter/html/htmlimp.cxx
new file mode 100644
index 000000000000..e8f4d883bb94
--- /dev/null
+++ b/sc/source/filter/html/htmlimp.cxx
@@ -0,0 +1,147 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlimp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/lrspitem.hxx>
+#include <svx/paperinf.hxx>
+#include <svx/sizeitem.hxx>
+#include <svx/ulspitem.hxx>
+#include <vcl/svapp.hxx>
+
+#include "htmlimp.hxx"
+#include "htmlpars.hxx"
+#include "filter.hxx"
+#include "global.hxx"
+#include "document.hxx"
+#include "editutil.hxx"
+#include "stlpool.hxx"
+#include "stlsheet.hxx"
+
+
+//------------------------------------------------------------------------
+
+FltError ScImportHTML( SvStream &rStream, ScDocument *pDoc,
+ ScRange& rRange, double nOutputFactor )
+{
+ ScHTMLImport aImp( pDoc, rRange );
+ FltError nErr = (FltError) aImp.Read( rStream );
+ ScRange aR = aImp.GetRange();
+ rRange.aEnd = aR.aEnd;
+ aImp.WriteToDocument( TRUE, nOutputFactor ); // mit SizeColRow
+ return nErr;
+}
+
+
+ScHTMLImport::ScHTMLImport( ScDocument* pDocP, const ScRange& rRange ) :
+ ScEEImport( pDocP, rRange )
+{
+ Size aPageSize;
+ OutputDevice* pDefaultDev = Application::GetDefaultDevice();
+ const String& aPageStyle = pDoc->GetPageStyle( rRange.aStart.Tab() );
+ ScStyleSheet* pStyleSheet = (ScStyleSheet*)pDoc->
+ GetStyleSheetPool()->Find( aPageStyle, SFX_STYLE_FAMILY_PAGE );
+ if ( pStyleSheet )
+ {
+ const SfxItemSet& rSet = pStyleSheet->GetItemSet();
+ const SvxLRSpaceItem* pLRItem = (const SvxLRSpaceItem*) &rSet.Get( ATTR_LRSPACE );
+ long nLeftMargin = pLRItem->GetLeft();
+ long nRightMargin = pLRItem->GetRight();
+ const SvxULSpaceItem* pULItem = (const SvxULSpaceItem*) &rSet.Get( ATTR_ULSPACE );
+ long nTopMargin = pULItem->GetUpper();
+ long nBottomMargin = pULItem->GetLower();
+ aPageSize = ((const SvxSizeItem&) rSet.Get(ATTR_PAGE_SIZE)).GetSize();
+ if ( !aPageSize.Width() || !aPageSize.Height() )
+ {
+ DBG_ERRORFILE("PageSize Null ?!?!?");
+ aPageSize = SvxPaperInfo::GetPaperSize( SVX_PAPER_A4 );
+ }
+ aPageSize.Width() -= nLeftMargin + nRightMargin;
+ aPageSize.Height() -= nTopMargin + nBottomMargin;
+ aPageSize = pDefaultDev->LogicToPixel( aPageSize, MapMode( MAP_TWIP ) );
+ }
+ else
+ {
+ DBG_ERRORFILE("kein StyleSheet?!?");
+ aPageSize = pDefaultDev->LogicToPixel(
+ SvxPaperInfo::GetPaperSize( SVX_PAPER_A4 ), MapMode( MAP_TWIP ) );
+ }
+ pParser = new ScHTMLParser( pEngine, aPageSize, pDocP );
+}
+
+
+ScHTMLImport::~ScHTMLImport()
+{
+ // Reihenfolge wichtig, sonst knallt's irgendwann irgendwo in irgendeinem Dtor!
+ // Ist gewaehrleistet, da ScEEImport Basisklasse ist
+ delete (ScHTMLParser*) pParser; // vor EditEngine!
+}
+
+
+
+
diff --git a/sc/source/filter/html/htmlpars.cxx b/sc/source/filter/html/htmlpars.cxx
new file mode 100644
index 000000000000..023a8d695838
--- /dev/null
+++ b/sc/source/filter/html/htmlpars.cxx
@@ -0,0 +1,1668 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlpars.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <sot/dtrans.hxx>
+#define SC_HTMLPARS_CXX
+#include "scitems.hxx"
+#ifndef _OFF_APP_HXX //autogen
+#include <offmgr/app.hxx>
+#endif
+#ifndef _OFA_HTMLCFG_HXX //autogen
+#include <offmgr/htmlcfg.hxx>
+#endif
+#include <svx/algitem.hxx>
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+#include <svx/brshitem.hxx>
+#include <svx/editeng.hxx>
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#include <svx/impgrf.hxx>
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#include <svx/wghtitem.hxx>
+#include <sfx2/docinf.hxx>
+#include <sfx2/frmhtml.hxx>
+#include <sfx2/objsh.hxx>
+#include <svtools/eitem.hxx>
+#include <svtools/filter.hxx>
+#include <svtools/htmlkywd.hxx>
+#include <svtools/htmltokn.h>
+
+
+#include <vcl/svapp.hxx>
+#include <tools/urlobj.hxx>
+
+#include "htmlpars.hxx"
+#include "global.hxx"
+#include "flttools.hxx"
+#include "document.hxx"
+#include "rangelst.hxx"
+
+
+SV_IMPL_VARARR_SORT( ScHTMLColOffset, ULONG );
+
+//------------------------------------------------------------------------
+
+ScHTMLParser::ScHTMLParser( EditEngine* pEditP, const Size& aPageSizeP,
+ ScDocument* pDocP ) :
+ ScEEParser( pEditP ),
+ aPageSize( aPageSizeP ),
+ xLockedList( new ScRangeList ),
+ pDoc( pDocP ),
+ pTables( NULL ),
+ pColOffset( new ScHTMLColOffset ),
+ pLocalColOffset( new ScHTMLColOffset ),
+ nFirstTableCell(0),
+ nTableLevel(0),
+ nTable(0),
+ nMaxTable(0),
+ nColCntStart(0),
+ nMaxCol(0),
+ nTableWidth(0),
+ nColOffset(0),
+ nColOffsetStart(0),
+ nMetaCnt(0),
+ bTabInTabCell( FALSE ),
+ bFirstRow( TRUE ),
+ bInCell( FALSE ),
+ bInTitle( FALSE )
+{
+ // neue Konfiguration setzen
+ OfaHtmlOptions* pHtmlOptions = ((OfficeApplication*)SFX_APP())->GetHtmlOptions();
+ for ( USHORT j=0; j < SC_HTML_FONTSIZES; j++ )
+ {
+ // in Twips merken, wie unser SvxFontHeightItem
+ aFontHeights[j] = pHtmlOptions->GetFontSize( j ) * 20;
+ }
+
+ MakeColNoRef( pLocalColOffset, 0, 0, 0, 0 );
+ MakeColNoRef( pColOffset, 0, 0, 0, 0 );
+}
+
+
+ScHTMLParser::~ScHTMLParser()
+{
+ ScHTMLTableStackEntry* pS;
+ while ( pS = aTableStack.Pop() )
+ {
+ if ( pList->GetPos( pS->pCellEntry ) == LIST_ENTRY_NOTFOUND )
+ delete pS->pCellEntry;
+ if ( pS->pLocalColOffset != pLocalColOffset )
+ delete pS->pLocalColOffset;
+ delete pS;
+ }
+ delete pLocalColOffset;
+ delete pColOffset;
+ if ( pTables )
+ {
+ for ( Table* pT = (Table*) pTables->First(); pT; pT = (Table*) pTables->Next() )
+ delete pT;
+ delete pTables;
+ }
+}
+
+
+ULONG ScHTMLParser::Read( SvStream& rStream )
+{
+ Link aOldLink = pEdit->GetImportHdl();
+ pEdit->SetImportHdl( LINK( this, ScHTMLParser, HTMLImportHdl ) );
+ ULONG nErr = pEdit->Read( rStream, EE_FORMAT_HTML,
+ pDoc->GetDocumentShell()->GetHeaderAttributes() );
+ pEdit->SetImportHdl( aOldLink );
+ Adjust();
+ // Spaltenbreiten erzeugen
+ OutputDevice* pDefaultDev = Application::GetDefaultDevice();
+ USHORT nCount = pColOffset->Count();
+ const ULONG* pOff = (const ULONG*) pColOffset->GetData();
+ ULONG nOff = *pOff++;
+ Size aSize;
+ for ( USHORT j = 1; j < nCount; j++, pOff++ )
+ {
+ aSize.Width() = *pOff - nOff;
+ aSize = pDefaultDev->PixelToLogic( aSize, MapMode( MAP_TWIP ) );
+ pColWidths->Insert( j-1, (void*)aSize.Width() );
+ nOff = *pOff;
+ }
+ return nErr;
+}
+
+
+void ScHTMLParser::NewActEntry( ScEEParseEntry* pE )
+{
+ ScEEParser::NewActEntry( pE );
+ if ( pE )
+ {
+ if ( !pE->aSel.HasRange() )
+ { // komplett leer, nachfolgender Text landet im gleichen Absatz!
+ pActEntry->aSel.nStartPara = pE->aSel.nEndPara;
+ pActEntry->aSel.nStartPos = pE->aSel.nEndPos;
+ }
+ }
+ pActEntry->aSel.nEndPara = pActEntry->aSel.nStartPara;
+ pActEntry->aSel.nEndPos = pActEntry->aSel.nStartPos;
+}
+
+
+void ScHTMLParser::EntryEnd( ScEEParseEntry* pE, const ESelection& rSel )
+{
+ if ( rSel.nEndPara >= pE->aSel.nStartPara )
+ {
+ pE->aSel.nEndPara = rSel.nEndPara;
+ pE->aSel.nEndPos = rSel.nEndPos;
+ }
+ else if ( rSel.nStartPara == pE->aSel.nStartPara - 1 && !pE->aSel.HasRange() )
+ { // kein Absatz angehaengt aber leer, nichts tun
+ }
+ else
+ {
+ DBG_ERRORFILE( "EntryEnd: EditEngine ESelection End < Start" );
+ }
+}
+
+
+void ScHTMLParser::NextRow( ImportInfo* pInfo )
+{
+ if ( bInCell )
+ CloseEntry( pInfo );
+ if ( nRowMax < ++nRowCnt )
+ nRowMax = nRowCnt;
+ nColCnt = nColCntStart;
+ nColOffset = nColOffsetStart;
+ bFirstRow = FALSE;
+}
+
+
+BOOL ScHTMLParser::SeekOffset( ScHTMLColOffset* pOffset, USHORT nOffset,
+ USHORT* pCol, USHORT nOffsetTol )
+{
+ if ( pOffset->Seek_Entry( nOffset, pCol ) )
+ return TRUE;
+ USHORT nCount = pOffset->Count();
+ if ( !nCount )
+ return FALSE;
+ USHORT nCol = *pCol;
+ // nCol ist Einfuegeposition, da liegt der Naechsthoehere (oder auch nicht)
+ if ( nCol < nCount && (((*pOffset)[nCol] - nOffsetTol) <= nOffset) )
+ return TRUE;
+ // nicht kleiner als alles andere? dann mit Naechstniedrigerem vergleichen
+ else if ( nCol && (((*pOffset)[nCol-1] + nOffsetTol) >= nOffset) )
+ {
+ (*pCol)--;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+void ScHTMLParser::MakeCol( ScHTMLColOffset* pOffset, USHORT& nOffset,
+ USHORT& nWidth, USHORT nOffsetTol, USHORT nWidthTol )
+{
+ USHORT nPos;
+ if ( SeekOffset( pOffset, nOffset, &nPos, nOffsetTol ) )
+ nOffset = (USHORT)(*pOffset)[nPos];
+ else
+ pOffset->Insert( nOffset );
+ if ( nWidth )
+ {
+ if ( SeekOffset( pOffset, nOffset + nWidth, &nPos, nWidthTol ) )
+ nWidth = (USHORT)(*pOffset)[nPos] - nOffset;
+ else
+ pOffset->Insert( nOffset + nWidth );
+ }
+}
+
+
+void ScHTMLParser::MakeColNoRef( ScHTMLColOffset* pOffset, USHORT nOffset,
+ USHORT nWidth, USHORT nOffsetTol, USHORT nWidthTol )
+{
+ USHORT nPos;
+ if ( SeekOffset( pOffset, nOffset, &nPos, nOffsetTol ) )
+ nOffset = (USHORT)(*pOffset)[nPos];
+ else
+ pOffset->Insert( nOffset );
+ if ( nWidth )
+ {
+ if ( !SeekOffset( pOffset, nOffset + nWidth, &nPos, nWidthTol ) )
+ pOffset->Insert( nOffset + nWidth );
+ }
+}
+
+
+void ScHTMLParser::ModifyOffset( ScHTMLColOffset* pOffset, USHORT& nOldOffset,
+ USHORT& nNewOffset, USHORT nOffsetTol )
+{
+ USHORT nPos;
+ if ( !SeekOffset( pOffset, nOldOffset, &nPos, nOffsetTol ) )
+ {
+ if ( SeekOffset( pOffset, nNewOffset, &nPos, nOffsetTol ) )
+ nNewOffset = (USHORT)(*pOffset)[nPos];
+ else
+ pOffset->Insert( nNewOffset );
+ return ;
+ }
+ nOldOffset = (USHORT)(*pOffset)[nPos];
+ USHORT nPos2;
+ if ( SeekOffset( pOffset, nNewOffset, &nPos2, nOffsetTol ) )
+ {
+ nNewOffset = (USHORT)(*pOffset)[nPos2];
+ return ;
+ }
+ ULONG* pData = ((ULONG*) pOffset->GetData()) + nPos; //! QAD
+ long nDiff = nNewOffset - nOldOffset;
+ if ( nDiff < 0 )
+ {
+ const ULONG* pStop = pOffset->GetData();
+ do
+ {
+ *pData += nDiff;
+ } while ( pStop < pData-- );
+ }
+ else
+ {
+ const ULONG* pStop = pOffset->GetData() + pOffset->Count();
+ do
+ {
+ *pData += nDiff;
+ } while ( ++pData < pStop );
+ }
+}
+
+
+void ScHTMLParser::SkipLocked( ScEEParseEntry* pE, BOOL bJoin )
+{
+ if ( pE->nCol <= MAXCOL )
+ { // wuerde sonst bei ScAddress falschen Wert erzeugen, evtl. Endlosschleife!
+ BOOL bBadCol = FALSE;
+ BOOL bAgain;
+ ScRange aRange( pE->nCol, pE->nRow, 0,
+ pE->nCol + pE->nColOverlap - 1, pE->nRow + pE->nRowOverlap - 1, 0 );
+ do
+ {
+ bAgain = FALSE;
+ for ( ScRange* pR = xLockedList->First(); pR; pR = xLockedList->Next() )
+ {
+ if ( pR->Intersects( aRange ) )
+ {
+ pE->nCol = pR->aEnd.Col() + 1;
+ USHORT nTmp = pE->nCol + pE->nColOverlap - 1;
+ if ( pE->nCol > MAXCOL || nTmp > MAXCOL )
+ bBadCol = TRUE;
+ else
+ {
+ bAgain = TRUE;
+ aRange.aStart.SetCol( pE->nCol );
+ aRange.aEnd.SetCol( nTmp );
+ }
+ break;
+ }
+ }
+ } while ( bAgain );
+ if ( bJoin && !bBadCol )
+ xLockedList->Join( aRange );
+ }
+}
+
+
+void ScHTMLParser::Adjust()
+{
+ for ( ScRange* pR = xLockedList->First(); pR; pR = xLockedList->Next() )
+ delete pR;
+ xLockedList->Clear();
+ ScHTMLAdjustStack aStack;
+ ScHTMLAdjustStackEntry* pS;
+ USHORT nTab = 0;
+ USHORT nLastCol = (USHORT)~0;
+ USHORT nNextRow = 0;
+ USHORT nCurRow = 0;
+ USHORT nPageWidth = (USHORT) aPageSize.Width();
+ Table* pTab = NULL;
+ for ( ScEEParseEntry* pE = pList->First(); pE; pE = pList->Next() )
+ {
+ if ( pE->nTab < nTab )
+ { // Table beendet
+ if ( pS = aStack.Pop() )
+ {
+ nLastCol = pS->nLastCol;
+ nNextRow = pS->nNextRow;
+ nCurRow = pS->nCurRow;
+ }
+ delete pS;
+ nTab = pE->nTab;
+ pTab = (pTables ? (Table*) pTables->Get( nTab ) : NULL);
+
+ }
+ USHORT nRow = pE->nRow;
+ if ( pE->nCol <= nLastCol )
+ { // naechste Zeile
+ if ( pE->nRow < nNextRow )
+ pE->nRow = nCurRow = nNextRow;
+ else
+ nCurRow = nNextRow = pE->nRow;
+ USHORT nR;
+ if ( pTab && (nR = (USHORT)(ULONG) pTab->Get( nCurRow )) )
+ nNextRow += nR;
+ else
+ nNextRow++;
+ }
+ else
+ pE->nRow = nCurRow;
+ nLastCol = pE->nCol; // eingelesene Col
+ if ( pE->nTab > nTab )
+ { // neue Table
+ aStack.Push( new ScHTMLAdjustStackEntry(
+ nLastCol, nNextRow, nCurRow ) );
+ nTab = pE->nTab;
+ pTab = (pTables ? (Table*) pTables->Get( nTab ) : NULL);
+ // neuer Zeilenabstand
+ USHORT nR;
+ if ( pTab && (nR = (USHORT)(ULONG) pTab->Get( nCurRow )) )
+ nNextRow = nCurRow + nR;
+ else
+ nNextRow = nCurRow + 1;
+ }
+ if ( nTab == 0 )
+ pE->nWidth = nPageWidth;
+ else
+ { // echte Table, keine Absaetze auf der Wiese
+ if ( pTab )
+ {
+ USHORT nRowSpan = pE->nRowOverlap;
+ for ( USHORT j=0; j < nRowSpan; j++ )
+ { // aus merged Zeilen resultierendes RowSpan
+ USHORT nRows = (USHORT)(ULONG) pTab->Get( nRow+j );
+ if ( nRows > 1 )
+ {
+ pE->nRowOverlap += nRows - 1;
+ if ( j == 0 )
+ { // merged Zeilen verschieben die naechste Zeile
+ USHORT nTmp = nCurRow + nRows;
+ if ( nNextRow < nTmp )
+ nNextRow = nTmp;
+ }
+ }
+ }
+ }
+ }
+ // echte Col
+ SeekOffset( pColOffset, pE->nOffset, &pE->nCol );
+ USHORT nColBeforeSkip = pE->nCol;
+ SkipLocked( pE, FALSE );
+ if ( pE->nCol != nColBeforeSkip )
+ {
+ USHORT nCount = pColOffset->Count();
+ if ( nCount <= pE->nCol )
+ {
+ pE->nOffset = (USHORT) (*pColOffset)[nCount-1];
+ MakeCol( pColOffset, pE->nOffset, pE->nWidth );
+ }
+ else
+ {
+ pE->nOffset = (USHORT) (*pColOffset)[pE->nCol];
+ }
+ }
+ USHORT nPos;
+ if ( pE->nWidth && SeekOffset( pColOffset, pE->nOffset + pE->nWidth, &nPos ) )
+ pE->nColOverlap = nPos - pE->nCol;
+ else
+ {
+//2do: das muss nicht korrekt sein, ist aber..
+ pE->nColOverlap = 1;
+ }
+ xLockedList->Join( ScRange( pE->nCol, pE->nRow, 0,
+ pE->nCol + pE->nColOverlap - 1, pE->nRow + pE->nRowOverlap - 1, 0 ) );
+ // MaxDimensions mitfuehren
+ USHORT nTmp = pE->nCol + pE->nColOverlap;
+ if ( nColMax < nTmp )
+ nColMax = nTmp;
+ nTmp = pE->nRow + pE->nRowOverlap;
+ if ( nRowMax < nTmp )
+ nRowMax = nTmp;
+ }
+ while ( pS = aStack.Pop() )
+ delete pS;
+}
+
+
+USHORT ScHTMLParser::GetWidth( ScEEParseEntry* pE )
+{
+ if ( pE->nWidth )
+ return pE->nWidth;
+ USHORT nPos = Min( pE->nCol - nColCntStart + pE->nColOverlap,
+ pLocalColOffset->Count() - 1 );
+ USHORT nOff2 = (USHORT) (*pLocalColOffset)[nPos];
+ if ( pE->nOffset < nOff2 )
+ return nOff2 - pE->nOffset;
+ return 0;
+}
+
+
+void ScHTMLParser::SetWidths()
+{
+ ScEEParseEntry* pE;
+ USHORT nCol;
+ if ( !nTableWidth )
+ nTableWidth = (USHORT) aPageSize.Width();
+ USHORT nColsPerRow = nMaxCol - nColCntStart;
+ if ( !nColsPerRow )
+ nColsPerRow = 1;
+ if ( pLocalColOffset->Count() <= 2 )
+ { // nur PageSize, es gab keine Width-Angabe
+ USHORT nWidth = nTableWidth / nColsPerRow;
+ USHORT nOff = nColOffsetStart;
+ pLocalColOffset->Remove( (USHORT)0, pLocalColOffset->Count() );
+ for ( nCol = 0; nCol <= nColsPerRow; nCol++, nOff += nWidth )
+ {
+ MakeColNoRef( pLocalColOffset, nOff, 0, 0, 0 );
+ }
+ nTableWidth = (*pLocalColOffset)[pLocalColOffset->Count() -1 ] - (*pLocalColOffset)[0];
+ pE = pList->Seek( nFirstTableCell );
+ while ( pE )
+ {
+ if ( pE->nTab == nTable )
+ {
+ pE->nOffset = (USHORT) (*pLocalColOffset)[pE->nCol - nColCntStart];
+ pE->nWidth = 0; // to be recalculated later
+ }
+ pE = pList->Next();
+ }
+ }
+ else
+ { // einige mit einige ohne Width
+ pE = pList->Seek( nFirstTableCell );
+ // #36350# wieso eigentlich kein pE ?!?
+ if ( pE )
+ {
+ USHORT* pOffsets = new USHORT[ nColsPerRow+1 ];
+ memset( pOffsets, 0, (nColsPerRow+1) * sizeof(USHORT) );
+ USHORT* pWidths = new USHORT[ nColsPerRow ];
+ memset( pWidths, 0, nColsPerRow * sizeof(USHORT) );
+ pOffsets[0] = nColOffsetStart;
+ while ( pE )
+ {
+ if ( pE->nTab == nTable && pE->nWidth )
+ {
+ nCol = pE->nCol - nColCntStart;
+ if ( nCol < nColsPerRow )
+ {
+ if ( pE->nColOverlap == 1 )
+ {
+ if ( pWidths[nCol] < pE->nWidth )
+ pWidths[nCol] = pE->nWidth;
+ }
+ else
+ { // try to find a single undefined width
+ USHORT nTotal = 0;
+ BOOL bFound = FALSE;
+ USHORT nHere;
+ USHORT nStop = Min( USHORT(nCol + pE->nColOverlap), nColsPerRow );
+ for ( ; nCol < nStop; nCol++ )
+ {
+ if ( pWidths[nCol] )
+ nTotal += pWidths[nCol];
+ else
+ {
+ if ( bFound )
+ {
+ bFound = FALSE;
+ break; // for
+ }
+ bFound = TRUE;
+ nHere = nCol;
+ }
+ }
+ if ( bFound && pE->nWidth > nTotal )
+ pWidths[nHere] = pE->nWidth - nTotal;
+ }
+ }
+ }
+ pE = pList->Next();
+ }
+ USHORT nWidths = 0;
+ USHORT nUnknown = 0;
+ for ( nCol = 0; nCol < nColsPerRow; nCol++ )
+ {
+ if ( pWidths[nCol] )
+ nWidths += pWidths[nCol];
+ else
+ nUnknown++;
+ }
+ if ( nUnknown )
+ {
+ USHORT nW = ((nWidths < nTableWidth) ?
+ ((nTableWidth - nWidths) / nUnknown) :
+ (nTableWidth / nUnknown));
+ for ( nCol = 0; nCol < nColsPerRow; nCol++ )
+ {
+ if ( !pWidths[nCol] )
+ pWidths[nCol] = nW;
+ }
+ }
+ for ( nCol = 1; nCol <= nColsPerRow; nCol++ )
+ {
+ pOffsets[nCol] = pOffsets[nCol-1] + pWidths[nCol-1];
+ }
+ pLocalColOffset->Remove( (USHORT)0, pLocalColOffset->Count() );
+ for ( nCol = 0; nCol <= nColsPerRow; nCol++ )
+ {
+ MakeColNoRef( pLocalColOffset, pOffsets[nCol], 0, 0, 0 );
+ }
+ nTableWidth = pOffsets[nColsPerRow] - pOffsets[0];
+
+ pE = pList->Seek( nFirstTableCell );
+ while ( pE )
+ {
+ if ( pE->nTab == nTable )
+ {
+ nCol = pE->nCol - nColCntStart;
+ DBG_ASSERT( nCol < nColsPerRow, "ScHTMLParser::SetWidths: column overflow" );
+ if ( nCol < nColsPerRow )
+ {
+ pE->nOffset = pOffsets[nCol];
+ nCol += pE->nColOverlap;
+ if ( nCol > nColsPerRow )
+ nCol = nColsPerRow;
+ pE->nWidth = pOffsets[nCol] - pE->nOffset;
+ }
+ }
+ pE = pList->Next();
+ }
+
+ delete [] pWidths;
+ delete [] pOffsets;
+ }
+ }
+ if ( pLocalColOffset->Count() )
+ {
+ USHORT nMax = (USHORT) (*pLocalColOffset)[pLocalColOffset->Count() - 1];
+ if ( aPageSize.Width() < nMax )
+ aPageSize.Width() = nMax;
+ }
+ pE = pList->Seek( nFirstTableCell );
+ while ( pE )
+ {
+ if ( pE->nTab == nTable )
+ {
+ if ( !pE->nWidth )
+ {
+ pE->nWidth = GetWidth( pE );
+ DBG_ASSERT( pE->nWidth, "SetWidths: pE->nWidth == 0" );
+ }
+ MakeCol( pColOffset, pE->nOffset, pE->nWidth );
+ }
+ pE = pList->Next();
+ }
+}
+
+
+void ScHTMLParser::Colonize( ScEEParseEntry* pE )
+{
+ USHORT nCol = pE->nCol;
+ SkipLocked( pE ); // Spaltenverdraengung nach rechts
+ if ( nCol < pE->nCol )
+ { // verdraengt
+ nCol = pE->nCol - nColCntStart;
+ USHORT nCount = pLocalColOffset->Count();
+ if ( nCol < nCount )
+ nColOffset = (USHORT) (*pLocalColOffset)[nCol];
+ else
+ nColOffset = (USHORT) (*pLocalColOffset)[nCount - 1];
+ }
+ pE->nOffset = nColOffset;
+ USHORT nWidth = GetWidth( pE );
+ MakeCol( pLocalColOffset, pE->nOffset, nWidth );
+ if ( pE->nWidth )
+ pE->nWidth = nWidth;
+ nColOffset = pE->nOffset + nWidth;
+ if ( nTableWidth < nColOffset - nColOffsetStart )
+ nTableWidth = nColOffset - nColOffsetStart;
+}
+
+
+void ScHTMLParser::CloseEntry( ImportInfo* pInfo )
+{
+ bInCell = FALSE;
+ if ( bTabInTabCell )
+ { // in TableOff vom Stack geholt
+ bTabInTabCell = FALSE;
+ if ( pList->GetPos( pActEntry ) == LIST_ENTRY_NOTFOUND )
+ delete pActEntry;
+ NewActEntry( pList->Last() ); // neuer freifliegender pActEntry
+ return ;
+ }
+ if ( pActEntry->nCol == (USHORT)~0 )
+ pActEntry->nCol = nColCnt;
+ if ( pActEntry->nRow == (USHORT)~0 )
+ pActEntry->nRow = nRowCnt;
+ if ( pActEntry->nTab == 0 )
+ pActEntry->nWidth = (USHORT) aPageSize.Width();
+ Colonize( pActEntry );
+ nColCnt = pActEntry->nCol + pActEntry->nColOverlap;
+ if ( nMaxCol < nColCnt )
+ nMaxCol = nColCnt; // TableStack MaxCol
+ if ( nColMax < nColCnt )
+ nColMax = nColCnt; // globales MaxCol fuer ScEEParser GetDimensions!
+ EntryEnd( pActEntry, pInfo->aSelection );
+ ESelection& rSel = pActEntry->aSel;
+ while ( rSel.nStartPara < rSel.nEndPara
+ && pEdit->GetTextLen( rSel.nStartPara ) == 0 )
+ { // vorgehaengte Leerabsaetze strippen
+ rSel.nStartPara++;
+ }
+ while ( rSel.nEndPos == 0 && rSel.nEndPara > rSel.nStartPara )
+ { // angehaengte Leerabsaetze strippen
+ rSel.nEndPara--;
+ rSel.nEndPos = pEdit->GetTextLen( rSel.nEndPara );
+ }
+ if ( rSel.nStartPara > rSel.nEndPara )
+ { // gibt GPF in CreateTextObject
+ DBG_ERRORFILE( "CloseEntry: EditEngine ESelection Start > End" );
+ rSel.nEndPara = rSel.nStartPara;
+ }
+ if ( rSel.HasRange() )
+ pActEntry->aItemSet.Put( SfxBoolItem( ATTR_LINEBREAK, TRUE ) );
+ pList->Insert( pActEntry, LIST_APPEND );
+ NewActEntry( pActEntry ); // neuer freifliegender pActEntry
+}
+
+
+IMPL_LINK( ScHTMLParser, HTMLImportHdl, ImportInfo*, pInfo )
+{
+#if defined(erDEBUG) //|| 1
+ static ESelection aDebugSel;
+ static String aDebugStr;
+ static SvFileStream* pDebugStrm = NULL;
+ static ULONG nDebugStrmPos = 0;
+ static ULONG nDebugCount = 0;
+ static ULONG nDebugCountAll = 0;
+ static const sal_Char* sDebugState[15] = {
+ "RTFIMP_START", "RTFIMP_END",
+ "RTFIMP_NEXTTOKEN", "RTFIMP_UNKNOWNATTR",
+ "RTFIMP_SETATTR",
+ "RTFIMP_INSERTTEXT",
+ "RTFIMP_INSERTPARA",
+ "HTMLIMP_START", "HTMLIMP_END",
+ "HTMLIMP_NEXTTOKEN", "HTMLIMP_UNKNOWNATTR",
+ "HTMLIMP_SETATTR",
+ "HTMLIMP_INSERTTEXT",
+ "HTMLIMP_INSERTPARA", "HTMLIMP_INSERTFIELD"
+ };
+
+ nDebugCountAll++;
+ if ( pInfo->eState != HTMLIMP_NEXTTOKEN // not too much
+ || pInfo->nToken == HTML_TABLE_ON
+ || pInfo->nToken == HTML_TABLE_OFF
+ || pInfo->nToken == HTML_TABLEROW_ON
+ || pInfo->nToken == HTML_TABLEROW_OFF
+ || pInfo->nToken == HTML_TABLEHEADER_ON
+ || pInfo->nToken == HTML_TABLEHEADER_OFF
+ || pInfo->nToken == HTML_TABLEDATA_ON
+ || pInfo->nToken == HTML_TABLEDATA_OFF
+ || !aDebugSel.IsEqual( pInfo->aSelection )
+ || pInfo->aText.Len() || aDebugStr != pInfo->aText
+ )
+ {
+ aDebugSel = pInfo->aSelection;
+ aDebugStr = pInfo->aText;
+ nDebugCount++;
+ if ( !pDebugStrm )
+ {
+ pDebugStrm = new SvFileStream( "d:\\erdbghtm.log",
+ STREAM_WRITE | STREAM_TRUNC );
+ }
+ else
+ {
+ pDebugStrm->ReOpen();
+ pDebugStrm->Seek( nDebugStrmPos );
+ }
+ SvFileStream& rS = *pDebugStrm;
+ rS.WriteNumber( nDebugCountAll ); rS << ".: ";
+ rS.WriteNumber( nDebugCount ); rS << ". State: ";
+ rS.WriteNumber( (USHORT) pInfo->eState );
+ rS << ' ' << sDebugState[pInfo->eState] << endl;
+ rS << "SPar,SPos EPar,EPos: ";
+ rS.WriteNumber( aDebugSel.nStartPara ); rS << ',';
+ rS.WriteNumber( aDebugSel.nStartPos ); rS << ' ';
+ rS.WriteNumber( aDebugSel.nEndPara ); rS << ',';
+ rS.WriteNumber( aDebugSel.nEndPos ); rS << endl;
+ if ( aDebugStr.Len() )
+ {
+ rS << "Text: \"" << aDebugStr << '\"' << endl;
+ }
+ else
+ {
+ rS << "Text:" << endl;
+ }
+ rS << "Token: "; rS.WriteNumber( pInfo->nToken );
+ switch ( pInfo->nToken )
+ {
+ case HTML_TABLE_ON:
+ rS << " HTML_TABLE_ON";
+ break;
+ case HTML_TABLE_OFF:
+ rS << " HTML_TABLE_OFF";
+ break;
+ case HTML_TABLEROW_ON:
+ rS << " HTML_TABLEROW_ON";
+ break;
+ case HTML_TABLEROW_OFF:
+ rS << " HTML_TABLEROW_OFF";
+ break;
+ case HTML_TABLEHEADER_ON:
+ rS << " HTML_TABLEHEADER_ON";
+ break;
+ case HTML_TABLEHEADER_OFF:
+ rS << " HTML_TABLEHEADER_OFF";
+ break;
+ case HTML_TABLEDATA_ON:
+ rS << " HTML_TABLEDATA_ON";
+ break;
+ case HTML_TABLEDATA_OFF:
+ rS << " HTML_TABLEDATA_OFF";
+ break;
+ }
+ rS << " Value: "; rS.WriteNumber( pInfo->nTokenValue );
+ rS << endl << endl;
+ nDebugStrmPos = pDebugStrm->Tell();
+ pDebugStrm->Close();
+ }
+#endif
+ switch ( pInfo->eState )
+ {
+ case HTMLIMP_NEXTTOKEN:
+ ProcToken( pInfo );
+ break;
+ case HTMLIMP_UNKNOWNATTR:
+ ProcToken( pInfo );
+ break;
+ case HTMLIMP_START:
+ break;
+ case HTMLIMP_END:
+ if ( pInfo->aSelection.nEndPos )
+ { // falls noch Text: letzten Absatz erzeugen
+ // Zeile weiterschalten ohne CloseEntry aufzurufen
+ bInCell = FALSE;
+ NextRow( pInfo );
+ bInCell = TRUE;
+ CloseEntry( pInfo );
+ }
+ while ( nTableLevel > 0 )
+ TableOff( pInfo ); // vergessene </TABLE> ausbuegeln
+ break;
+ case HTMLIMP_SETATTR:
+ break;
+ case HTMLIMP_INSERTTEXT:
+ break;
+ case HTMLIMP_INSERTPARA:
+ if ( nTableLevel < 1 )
+ {
+ CloseEntry( pInfo );
+ NextRow( pInfo );
+ }
+ break;
+ case HTMLIMP_INSERTFIELD:
+ break;
+ default:
+ DBG_ERRORFILE("HTMLImportHdl: unknown ImportInfo.eState");
+ }
+ return 0;
+}
+
+
+// Groesster Gemeinsamer Teiler nach Euklid (Kettendivision)
+// Sonderfall: 0 und irgendwas geben 1
+USHORT lcl_GGT( USHORT a, USHORT b )
+{
+ if ( !a || !b )
+ return 1;
+ do
+ {
+ if ( a > b )
+ a -= USHORT(a / b) * b;
+ else
+ b -= USHORT(b / a) * a;
+ } while ( a && b );
+ return (a ? a : b);
+}
+
+
+// Kleinstes Gemeinsames Vielfaches: a * b / GGT(a,b)
+USHORT lcl_KGV( USHORT a, USHORT b )
+{
+ if ( a > b ) // Ueberlauf unwahrscheinlicher machen
+ return (a / lcl_GGT(a,b)) * b;
+ else
+ return (b / lcl_GGT(a,b)) * a;
+}
+
+
+void ScHTMLParser::TableDataOn( ImportInfo* pInfo )
+{
+ if ( bInCell )
+ CloseEntry( pInfo );
+ if ( !nTableLevel )
+ {
+ DBG_ERROR( "Dummbatz-Dok! <TH> oder <TD> ohne vorheriges <TABLE>" );
+ TableOn( pInfo );
+ }
+ bInCell = TRUE;
+ BOOL bHorJustifyCenterTH = (pInfo->nToken == HTML_TABLEHEADER_ON);
+ const HTMLOptions* pOptions = ((HTMLParser*)pInfo->pParser)->GetOptions();
+ USHORT nArrLen = pOptions->Count();
+ for ( USHORT i = 0; i < nArrLen; i++ )
+ {
+ const HTMLOption* pOption = (*pOptions)[i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_COLSPAN:
+ {
+ pActEntry->nColOverlap = ( USHORT ) pOption->GetString().ToInt32();
+ }
+ break;
+ case HTML_O_ROWSPAN:
+ {
+ pActEntry->nRowOverlap = ( USHORT ) pOption->GetString().ToInt32();
+ }
+ break;
+ case HTML_O_ALIGN:
+ {
+ bHorJustifyCenterTH = FALSE;
+ SvxCellHorJustify eVal;
+ const String& rOptVal = pOption->GetString();
+ if ( rOptVal.CompareIgnoreCaseToAscii( sHTML_AL_right ) == COMPARE_EQUAL )
+ eVal = SVX_HOR_JUSTIFY_RIGHT;
+ else if ( rOptVal.CompareIgnoreCaseToAscii( sHTML_AL_center ) == COMPARE_EQUAL )
+ eVal = SVX_HOR_JUSTIFY_CENTER;
+ else if ( rOptVal.CompareIgnoreCaseToAscii( sHTML_AL_left ) == COMPARE_EQUAL )
+ eVal = SVX_HOR_JUSTIFY_LEFT;
+ else
+ eVal = SVX_HOR_JUSTIFY_STANDARD;
+ if ( eVal != SVX_HOR_JUSTIFY_STANDARD )
+ pActEntry->aItemSet.Put( SvxHorJustifyItem( eVal, ATTR_HOR_JUSTIFY) );
+ }
+ break;
+ case HTML_O_VALIGN:
+ {
+ SvxCellVerJustify eVal;
+ const String& rOptVal = pOption->GetString();
+ if ( rOptVal.CompareIgnoreCaseToAscii( sHTML_VA_top ) == COMPARE_EQUAL )
+ eVal = SVX_VER_JUSTIFY_TOP;
+ else if ( rOptVal.CompareIgnoreCaseToAscii( sHTML_VA_middle ) == COMPARE_EQUAL )
+ eVal = SVX_VER_JUSTIFY_CENTER;
+ else if ( rOptVal.CompareIgnoreCaseToAscii( sHTML_VA_bottom ) == COMPARE_EQUAL )
+ eVal = SVX_VER_JUSTIFY_BOTTOM;
+ else
+ eVal = SVX_VER_JUSTIFY_STANDARD;
+ pActEntry->aItemSet.Put( SvxVerJustifyItem( eVal, ATTR_VER_JUSTIFY) );
+ }
+ break;
+ case HTML_O_WIDTH:
+ {
+ pActEntry->nWidth = GetWidthPixel( pOption );
+ }
+ break;
+ case HTML_O_BGCOLOR:
+ {
+ Color aColor;
+ pOption->GetColor( aColor );
+ pActEntry->aItemSet.Put(
+ SvxBrushItem( aColor, ATTR_BACKGROUND ) );
+ }
+ break;
+ case HTML_O_SDVAL:
+ {
+ pActEntry->pValStr = new String( pOption->GetString() );
+ }
+ break;
+ case HTML_O_SDNUM:
+ {
+ pActEntry->pNumStr = new String( pOption->GetString() );
+ }
+ break;
+ }
+ }
+ pActEntry->nCol = nColCnt;
+ pActEntry->nRow = nRowCnt;
+ pActEntry->nTab = nTable;
+ if ( bHorJustifyCenterTH )
+ pActEntry->aItemSet.Put(
+ SvxHorJustifyItem( SVX_HOR_JUSTIFY_CENTER, ATTR_HOR_JUSTIFY) );
+}
+
+
+void ScHTMLParser::TableOn( ImportInfo* pInfo )
+{
+ if ( ++nTableLevel > 1 )
+ { // Table in Table
+ USHORT nTmpColOffset = nColOffset; // wird in Colonize noch angepasst
+ Colonize( pActEntry );
+ aTableStack.Push( new ScHTMLTableStackEntry(
+ pActEntry, xLockedList, pLocalColOffset, nFirstTableCell,
+ nColCnt, nRowCnt, nColCntStart, nMaxCol, nTable,
+ nTableWidth, nColOffset, nColOffsetStart,
+ bFirstRow ) );
+ USHORT nLastWidth = nTableWidth;
+ nTableWidth = GetWidth( pActEntry );
+ if ( nTableWidth == nLastWidth && nMaxCol - nColCntStart > 1 )
+ { // es muss mehr als einen geben, also kann dieser nicht alles sein
+ nTableWidth = nLastWidth / (nMaxCol - nColCntStart);
+ }
+ nLastWidth = nTableWidth;
+ if ( pInfo->nToken == HTML_TABLE_ON )
+ { // es kann auch TD oder TH sein, wenn es vorher kein TABLE gab
+ const HTMLOptions* pOptions = ((HTMLParser*)pInfo->pParser)->GetOptions();
+ USHORT nArrLen = pOptions->Count();
+ for ( USHORT i = 0; i < nArrLen; i++ )
+ {
+ const HTMLOption* pOption = (*pOptions)[i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_WIDTH:
+ { // Prozent: von Dokumentbreite bzw. aeusserer Zelle
+ nTableWidth = GetWidthPixel( pOption );
+ }
+ break;
+ }
+ }
+ }
+ bInCell = FALSE;
+ if ( bTabInTabCell && !(nTableWidth < nLastWidth) )
+ { // mehrere Tabellen in einer Zelle, untereinander
+ bTabInTabCell = FALSE;
+ NextRow( pInfo );
+ }
+ else
+ { // in dieser Zelle geht's los, oder nebeneinander
+ bTabInTabCell = FALSE;
+ nColCntStart = nColCnt;
+ nColOffset = nTmpColOffset;
+ nColOffsetStart = nColOffset;
+ }
+ ScEEParseEntry* pE = pList->Last();
+ NewActEntry( pE ); // neuer freifliegender pActEntry
+ xLockedList = new ScRangeList;
+ }
+ else
+ { // einfache Table auf Dokumentebene
+ EntryEnd( pActEntry, pInfo->aSelection );
+ if ( pActEntry->aSel.HasRange() )
+ { // noch fliegender Text
+ CloseEntry( pInfo );
+ NextRow( pInfo );
+ }
+ aTableStack.Push( new ScHTMLTableStackEntry(
+ pActEntry, xLockedList, pLocalColOffset, nFirstTableCell,
+ nColCnt, nRowCnt, nColCntStart, nMaxCol, nTable,
+ nTableWidth, nColOffset, nColOffsetStart,
+ bFirstRow ) );
+ nTableWidth = 0;
+ if ( pInfo->nToken == HTML_TABLE_ON )
+ { // es kann auch TD oder TH sein, wenn es vorher kein TABLE gab
+ const HTMLOptions* pOptions = ((HTMLParser*)pInfo->pParser)->GetOptions();
+ USHORT nArrLen = pOptions->Count();
+ for ( USHORT i = 0; i < nArrLen; i++ )
+ {
+ const HTMLOption* pOption = (*pOptions)[i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_WIDTH:
+ { // Prozent: von Dokumentbreite bzw. aeusserer Zelle
+ nTableWidth = GetWidthPixel( pOption );
+ }
+ break;
+ }
+ }
+ }
+ }
+ pLocalColOffset = new ScHTMLColOffset;
+ nTable = ++nMaxTable;
+ bFirstRow = TRUE;
+ nFirstTableCell = pList->Count();
+
+ MakeColNoRef( pLocalColOffset, nColOffsetStart, 0, 0, 0 );
+}
+
+
+void ScHTMLParser::TableOff( ImportInfo* pInfo )
+{
+ if ( bInCell )
+ CloseEntry( pInfo );
+ if ( nColCnt > nColCntStart )
+ NextRow( pInfo ); // das optionale TableRowOff war nicht
+ if ( !nTableLevel )
+ {
+ DBG_ERROR( "Dummbatz-Dok! </TABLE> ohne oeffnendes <TABLE>" );
+ return ;
+ }
+ if ( --nTableLevel > 0 )
+ { // Table in Table beendet
+ ScHTMLTableStackEntry* pS = aTableStack.Pop();
+ if ( pS )
+ {
+ ScEEParseEntry* pE = pS->pCellEntry;
+ USHORT nRows = nRowCnt - pS->nRowCnt;
+ if ( nRows > 1 )
+ { // Groesse der Tabelle an dieser Position eintragen
+ USHORT j;
+ USHORT nCol = nColCntStart;
+ USHORT nRow = pS->nRowCnt;
+ USHORT nTab = pS->nTable;
+ if ( !pTables )
+ pTables = new Table;
+ // Hoehen der aeusseren Table
+ Table* pTab1 = (Table*) pTables->Get( nTab );
+ if ( !pTab1 )
+ {
+ pTab1 = new Table;
+ pTables->Insert( nTab, pTab1 );
+ }
+ USHORT nRowSpan = pE->nRowOverlap;
+ USHORT nRowKGV;
+ USHORT nRowsPerRow1; // aeussere Table
+ USHORT nRowsPerRow2; // innere Table
+ if ( nRowSpan > 1 )
+ { // KGV auf das sich aussere und innere Zeilen
+ // abbilden lassen
+ nRowKGV = lcl_KGV( nRowSpan, nRows );
+ nRowsPerRow1 = nRowKGV / nRowSpan;
+ nRowsPerRow2 = nRowKGV / nRows;
+ }
+ else
+ {
+ nRowKGV = nRowsPerRow1 = nRows;
+ nRowsPerRow2 = 1;
+ }
+ Table* pTab2 = NULL;
+ if ( nRowsPerRow2 > 1 )
+ { // Hoehen der inneren Table
+ pTab2 = new Table;
+ pTables->Insert( nTable, pTab2 );
+ }
+ // void* Data-Entry der Table-Class fuer das
+ // Hoehen-Mapping missbrauchen
+ if ( nRowKGV > 1 )
+ {
+ if ( nRowsPerRow1 > 1 )
+ { // aussen
+ for ( j=0; j < nRowSpan; j++ )
+ {
+ ULONG nRowKey = nRow + j;
+ USHORT nR = (USHORT)(ULONG) pTab1->Get( nRowKey );
+ if ( !nR )
+ pTab1->Insert( nRowKey, (void*) nRowsPerRow1 );
+ else if ( nRowsPerRow1 > nR )
+ pTab1->Replace( nRowKey, (void*) nRowsPerRow1 );
+ //2do: wie geht das noch besser?
+ else if ( nRowsPerRow1 < nR && nRowSpan == 1
+ && nTable == nMaxTable )
+ { // Platz uebrig, evtl. besser mergen
+ USHORT nAdd = nRowsPerRow1 - (nR % nRowsPerRow1);
+ nR += nAdd;
+ if ( (nR % nRows) == 0 )
+ { // nur wenn abbildbar
+ USHORT nR2 = (USHORT)(ULONG) pTab1->Get( nRowKey+1 );
+ if ( nR2 > nAdd )
+ { // nur wenn wirklich Platz
+ pTab1->Replace( nRowKey, (void*) nR );
+ pTab1->Replace( nRowKey+1, (void*) (nR2 - nAdd) );
+ nRowsPerRow2 = nR / nRows;
+ }
+ }
+ }
+ }
+ }
+ if ( nRowsPerRow2 > 1 )
+ { // innen
+ if ( !pTab2 )
+ { // nRowsPerRow2 kann erhoeht worden sein
+ pTab2 = new Table;
+ pTables->Insert( nTable, pTab2 );
+ }
+ for ( j=0; j < nRows; j++ )
+ {
+ ULONG nRowKey = nRow + j;
+ USHORT nR = (USHORT)(ULONG) pTab2->Get( nRowKey );
+ if ( !nR )
+ pTab2->Insert( nRowKey, (void*) nRowsPerRow2 );
+ else if ( nRowsPerRow2 > nR )
+ pTab2->Replace( nRowKey, (void*) nRowsPerRow2 );
+ }
+ }
+ }
+ }
+
+ SetWidths();
+
+ if ( !pE->nWidth )
+ pE->nWidth = nTableWidth;
+ else if ( pE->nWidth < nTableWidth )
+ {
+ USHORT nOldOffset = pE->nOffset + pE->nWidth;
+ USHORT nNewOffset = pE->nOffset + nTableWidth;
+ ModifyOffset( pS->pLocalColOffset, nOldOffset, nNewOffset );
+ USHORT nTmp = nNewOffset - pE->nOffset - pE->nWidth;
+ pE->nWidth = nNewOffset - pE->nOffset;
+ pS->nTableWidth += nTmp;
+ if ( pS->nColOffset >= nOldOffset )
+ pS->nColOffset += nTmp;
+ }
+
+ nColCnt = pE->nCol + pE->nColOverlap;
+ nRowCnt = pS->nRowCnt;
+ nColCntStart = pS->nColCntStart;
+ nMaxCol = pS->nMaxCol;
+ nTable = pS->nTable;
+ nTableWidth = pS->nTableWidth;
+ nFirstTableCell = pS->nFirstTableCell;
+ nColOffset = pS->nColOffset;
+ nColOffsetStart = pS->nColOffsetStart;
+ bFirstRow = pS->bFirstRow;
+ xLockedList = pS->xLockedList;
+ delete pLocalColOffset;
+ pLocalColOffset = pS->pLocalColOffset;
+ delete pActEntry;
+ // pActEntry bleibt erstmal erhalten falls da noch 'ne Table in
+ // der gleichen Zelle aufgemacht werden sollte (in HTML ist ja
+ // alles moeglich..) und wird in CloseEntry deleted
+ pActEntry = pE;
+ delete pS;
+ }
+ bTabInTabCell = TRUE;
+ bInCell = TRUE;
+ }
+ else
+ { // einfache Table beendet
+ SetWidths();
+ ScHTMLTableStackEntry* pS = aTableStack.Pop();
+ nMaxCol = 0;
+ if ( pS )
+ {
+ delete pLocalColOffset;
+ pLocalColOffset = pS->pLocalColOffset;
+ delete pS;
+ }
+ }
+}
+
+
+void ScHTMLParser::Image( ImportInfo* pInfo )
+{
+ if ( !pActEntry->pImageList )
+ pActEntry->pImageList = new ScHTMLImageList;
+ ScHTMLImageList* pIL = pActEntry->pImageList;
+ ScHTMLImage* pImage = new ScHTMLImage;
+ pIL->Insert( pImage, LIST_APPEND );
+ const HTMLOptions* pOptions = ((HTMLParser*)pInfo->pParser)->GetOptions();
+ USHORT nArrLen = pOptions->Count();
+ for ( USHORT i = 0; i < nArrLen; i++ )
+ {
+ const HTMLOption* pOption = (*pOptions)[i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_SRC:
+ {
+ pImage->aURL = INetURLObject::RelToAbs( pOption->GetString() );
+ }
+ break;
+ case HTML_O_ALT:
+ {
+ if ( !pActEntry->bHasGraphic )
+ { // ALT text only if not any image loaded
+ if ( pActEntry->aAltText.Len() )
+ pActEntry->aAltText.AppendAscii( "; " );
+ pActEntry->aAltText += pOption->GetString();
+ }
+ }
+ break;
+ case HTML_O_WIDTH:
+ {
+ pImage->aSize.Width() = (long)pOption->GetNumber();
+ }
+ break;
+ case HTML_O_HEIGHT:
+ {
+ pImage->aSize.Height() = (long)pOption->GetNumber();
+ }
+ break;
+ case HTML_O_HSPACE:
+ {
+ pImage->aSpace.X() = (long)pOption->GetNumber();
+ }
+ break;
+ case HTML_O_VSPACE:
+ {
+ pImage->aSpace.Y() = (long)pOption->GetNumber();
+ }
+ break;
+ }
+ }
+ if ( !pImage->aURL.Len() )
+ {
+ DBG_ERRORFILE( "Image: Grafik ohne URL ?!?" );
+ return ;
+ }
+
+ USHORT nFormat;
+ Graphic* pGraphic = new Graphic;
+ GraphicFilter* pFilter = ::GetGrfFilter();
+ if ( GRFILTER_OK != ::LoadGraphic( pImage->aURL, pImage->aFilterName,
+ *pGraphic, pFilter, &nFormat ) )
+ {
+ delete pGraphic;
+ return ; // dumm gelaufen
+ }
+ if ( !pActEntry->bHasGraphic )
+ { // discard any ALT text in this cell if we have any image
+ pActEntry->bHasGraphic = TRUE;
+ pActEntry->aAltText.Erase();
+ }
+ pImage->aFilterName = pFilter->GetImportFormatName( nFormat );
+ pImage->pGraphic = pGraphic;
+ if ( !(pImage->aSize.Width() && pImage->aSize.Height()) )
+ {
+ OutputDevice* pDefaultDev = Application::GetDefaultDevice();
+ pImage->aSize = pDefaultDev->LogicToPixel( pGraphic->GetPrefSize(),
+ pGraphic->GetPrefMapMode() );
+ }
+ if ( pIL->Count() > 0 )
+ {
+ long nWidth = 0;
+ for ( ScHTMLImage* pI = pIL->First(); pI; pI = pIL->Next() )
+ {
+ if ( pI->nDir & nHorizontal )
+ nWidth += pI->aSize.Width() + 2 * pI->aSpace.X();
+ else
+ nWidth = 0;
+ }
+ if ( pActEntry->nWidth
+ && (nWidth + pImage->aSize.Width() + 2 * pImage->aSpace.X()
+ >= pActEntry->nWidth) )
+ pIL->Last()->nDir = nVertical;
+ }
+}
+
+
+void ScHTMLParser::ColOn( ImportInfo* pInfo )
+{
+ const HTMLOptions* pOptions = ((HTMLParser*)pInfo->pParser)->GetOptions();
+ USHORT nArrLen = pOptions->Count();
+ for ( USHORT i = 0; i < nArrLen; i++ )
+ {
+ const HTMLOption* pOption = (*pOptions)[i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_WIDTH:
+ {
+ USHORT nVal = GetWidthPixel( pOption );
+ MakeCol( pLocalColOffset, nColOffset, nVal, 0, 0 );
+ nColOffset += nVal;
+ }
+ break;
+ }
+ }
+}
+
+
+USHORT ScHTMLParser::GetWidthPixel( const HTMLOption* pOption )
+{
+ const String& rOptVal = pOption->GetString();
+ if ( rOptVal.Search('%') != STRING_NOTFOUND )
+ { // Prozent
+ USHORT nW = (nTableWidth ? nTableWidth : (USHORT) aPageSize.Width());
+ return (USHORT)((pOption->GetNumber() * nW) / 100);
+ }
+ else
+ {
+ if ( rOptVal.Search('*') != STRING_NOTFOUND )
+ { // relativ zu was?!?
+//2do: ColArray aller relativen Werte sammeln und dann MakeCol
+ return 0;
+ }
+ else
+ return (USHORT)pOption->GetNumber(); // Pixel
+ }
+}
+
+
+void ScHTMLParser::AnchorOn( ImportInfo* pInfo )
+{
+ const HTMLOptions* pOptions = ((HTMLParser*)pInfo->pParser)->GetOptions();
+ USHORT nArrLen = pOptions->Count();
+ for ( USHORT i = 0; i < nArrLen; i++ )
+ {
+ const HTMLOption* pOption = (*pOptions)[i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_NAME:
+ {
+ pActEntry->pName = new String( pOption->GetString() );
+ }
+ break;
+ }
+ }
+}
+
+
+BOOL ScHTMLParser::IsAtBeginningOfText( ImportInfo* pInfo )
+{
+ ESelection& rSel = pActEntry->aSel;
+ return rSel.nStartPara == rSel.nEndPara &&
+ rSel.nStartPara <= pInfo->aSelection.nEndPara &&
+ pEdit->GetTextLen( rSel.nStartPara ) == 0;
+}
+
+
+void ScHTMLParser::FontOn( ImportInfo* pInfo )
+{
+ if ( IsAtBeginningOfText( pInfo ) )
+ { // nur am Anfang des Textes, gilt dann fuer gesamte Zelle
+ const HTMLOptions* pOptions = ((HTMLParser*)pInfo->pParser)->GetOptions();
+ USHORT nArrLen = pOptions->Count();
+ for ( USHORT i = 0; i < nArrLen; i++ )
+ {
+ const HTMLOption* pOption = (*pOptions)[i];
+ switch( pOption->GetToken() )
+ {
+ case HTML_O_FACE :
+ {
+ const String& rFace = pOption->GetString();
+ String aFontName;
+ xub_StrLen nPos = 0;
+ while( nPos != STRING_NOTFOUND )
+ { // Fontliste, VCL: Semikolon als Separator, HTML: Komma
+ String aFName = rFace.GetToken( 0, ',', nPos );
+ aFName.EraseTrailingChars().EraseLeadingChars();
+ if( aFontName.Len() )
+ aFontName += ';';
+ aFontName += aFName;
+ }
+ if ( aFontName.Len() )
+ pActEntry->aItemSet.Put( SvxFontItem( FAMILY_DONTKNOW,
+ aFontName, EMPTY_STRING, PITCH_DONTKNOW,
+ RTL_TEXTENCODING_DONTKNOW, ATTR_FONT ) );
+ }
+ break;
+ case HTML_O_SIZE :
+ {
+ USHORT nSize = (USHORT) pOption->GetNumber();
+ if ( nSize == 0 )
+ nSize = 1;
+ else if ( nSize > SC_HTML_FONTSIZES )
+ nSize = SC_HTML_FONTSIZES;
+ pActEntry->aItemSet.Put( SvxFontHeightItem(
+ aFontHeights[nSize-1], 100, ATTR_FONT_HEIGHT ) );
+ }
+ break;
+ case HTML_O_COLOR :
+ {
+ Color aColor;
+ pOption->GetColor( aColor );
+ pActEntry->aItemSet.Put( SvxColorItem( aColor, ATTR_FONT_COLOR ) );
+ }
+ break;
+ }
+ }
+ }
+}
+
+
+void ScHTMLParser::ProcToken( ImportInfo* pInfo )
+{
+#ifdef DEBUG
+ HTML_TOKEN_IDS eTokenId = (HTML_TOKEN_IDS)pInfo->nToken;
+#endif
+ BOOL bSetLastToken = TRUE;
+ switch ( pInfo->nToken )
+ {
+ case HTML_META:
+ {
+ USHORT nContentOpt = HTML_O_CONTENT;
+ rtl_TextEncoding eEnc = RTL_TEXTENCODING_DONTKNOW;
+ HTMLParser* pParser = (HTMLParser*) pInfo->pParser;
+ const HTMLOptions* pOptions = pParser->GetOptions( &nContentOpt );
+ SfxFrameHTMLParser::ParseMetaOptions(
+ &pDoc->GetDocumentShell()->GetDocInfo(),
+ pDoc->GetDocumentShell()->GetHeaderAttributes(),
+ pOptions, nMetaCnt, eEnc );
+ // If the encoding is set by a META tag, it may only overwrite the
+ // current encoding if both, the current and the new encoding, are 1-BYTE
+ // encodings. Everything else cannot lead to reasonable results.
+ if( RTL_TEXTENCODING_DONTKNOW != eEnc &&
+ eEnc < RTL_TEXTENCODING_STD_COUNT &&
+ pParser->GetSrcEncoding() < RTL_TEXTENCODING_STD_COUNT )
+ pParser->SetSrcEncoding( eEnc );
+ }
+ break;
+ case HTML_TITLE_ON:
+ {
+ bInTitle = TRUE;
+ aString.Erase();
+ }
+ break;
+ case HTML_TITLE_OFF:
+ {
+ if ( bInTitle && aString.Len() )
+ {
+ // Leerzeichen von Zeilenumbruechen raus
+ aString.EraseLeadingChars();
+ aString.EraseTrailingChars();
+ pDoc->GetDocumentShell()->GetDocInfo().SetTitle( aString );
+ }
+ bInTitle = FALSE;
+ }
+ break;
+ case HTML_TABLE_ON:
+ {
+ TableOn( pInfo );
+ }
+ break;
+ case HTML_COL_ON:
+ {
+ ColOn( pInfo );
+ }
+ break;
+ case HTML_TABLEHEADER_ON: // oeffnet Zelle
+ {
+ if ( bInCell )
+ CloseEntry( pInfo );
+ // bInCell nicht TRUE setzen, das macht TableDataOn
+ pActEntry->aItemSet.Put(
+ SvxWeightItem( WEIGHT_BOLD, ATTR_FONT_WEIGHT) );
+ } // fall thru
+ case HTML_TABLEDATA_ON: // oeffnet Zelle
+ {
+ TableDataOn( pInfo );
+ }
+ break;
+ case HTML_TABLEHEADER_OFF:
+ case HTML_TABLEDATA_OFF: // schliesst Zelle
+ {
+ if ( bInCell )
+ CloseEntry( pInfo ); // aber nur wenn's auch eine war
+ }
+ break;
+ case HTML_TABLEROW_ON: // vor erster Zelle in Row
+ {
+ if ( nColCnt > nColCntStart )
+ NextRow( pInfo ); // das optionale TableRowOff war nicht
+ nColOffset = nColOffsetStart;
+ }
+ break;
+ case HTML_TABLEROW_OFF: // nach letzter Zelle in Row
+ {
+ NextRow( pInfo );
+ }
+ break;
+ case HTML_TABLE_OFF:
+ {
+ TableOff( pInfo );
+ }
+ break;
+ case HTML_IMAGE:
+ {
+ Image( pInfo );
+ }
+ break;
+ case HTML_PARABREAK_OFF:
+ { // nach einem Image geht es vertikal weiter
+ if ( pActEntry->pImageList && pActEntry->pImageList->Count() > 0 )
+ pActEntry->pImageList->Last()->nDir = nVertical;
+ }
+ break;
+ case HTML_ANCHOR_ON:
+ {
+ AnchorOn( pInfo );
+ }
+ break;
+ case HTML_FONT_ON :
+ {
+ FontOn( pInfo );
+ }
+ break;
+ case HTML_BIGPRINT_ON :
+ {
+//2do: aktuelle Fontgroesse merken und einen groesser
+ if ( IsAtBeginningOfText( pInfo ) )
+ pActEntry->aItemSet.Put( SvxFontHeightItem(
+ aFontHeights[3], 100, ATTR_FONT_HEIGHT ) );
+ }
+ break;
+ case HTML_SMALLPRINT_ON :
+ {
+//2do: aktuelle Fontgroesse merken und einen kleiner
+ if ( IsAtBeginningOfText( pInfo ) )
+ pActEntry->aItemSet.Put( SvxFontHeightItem(
+ aFontHeights[0], 100, ATTR_FONT_HEIGHT ) );
+ }
+ break;
+ case HTML_BOLD_ON :
+ case HTML_STRONG_ON :
+ {
+ if ( IsAtBeginningOfText( pInfo ) )
+ pActEntry->aItemSet.Put( SvxWeightItem( WEIGHT_BOLD,
+ ATTR_FONT_WEIGHT ) );
+ }
+ break;
+ case HTML_ITALIC_ON :
+ case HTML_EMPHASIS_ON :
+ case HTML_ADDRESS_ON :
+ case HTML_BLOCKQUOTE_ON :
+ case HTML_BLOCKQUOTE30_ON :
+ case HTML_CITIATION_ON :
+ case HTML_VARIABLE_ON :
+ {
+ if ( IsAtBeginningOfText( pInfo ) )
+ pActEntry->aItemSet.Put( SvxPostureItem( ITALIC_NORMAL,
+ ATTR_FONT_POSTURE ) );
+ }
+ break;
+ case HTML_DEFINSTANCE_ON :
+ {
+ if ( IsAtBeginningOfText( pInfo ) )
+ {
+ pActEntry->aItemSet.Put( SvxWeightItem( WEIGHT_BOLD,
+ ATTR_FONT_WEIGHT ) );
+ pActEntry->aItemSet.Put( SvxPostureItem( ITALIC_NORMAL,
+ ATTR_FONT_POSTURE ) );
+ }
+ }
+ break;
+ case HTML_UNDERLINE_ON :
+ {
+ if ( IsAtBeginningOfText( pInfo ) )
+ pActEntry->aItemSet.Put( SvxUnderlineItem( UNDERLINE_SINGLE,
+ ATTR_FONT_UNDERLINE ) );
+ }
+ break;
+ case HTML_TEXTTOKEN:
+ {
+ if ( bInTitle )
+ aString += pInfo->aText;
+ }
+ break;
+ default:
+ { // nLastToken nicht setzen!
+ bSetLastToken = FALSE;
+ }
+ }
+ if ( bSetLastToken )
+ nLastToken = pInfo->nToken;
+}
+
+
+
diff --git a/sc/source/filter/html/makefile.mk b/sc/source/filter/html/makefile.mk
new file mode 100644
index 000000000000..477eeb7cbb05
--- /dev/null
+++ b/sc/source/filter/html/makefile.mk
@@ -0,0 +1,99 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=html
+
+AUTOSEG=true
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\pch\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ htmlexp.cxx \
+ htmlexp2.cxx \
+ htmlimp.cxx \
+ htmlpars.cxx
+
+
+SLOFILES = \
+ $(SLO)$/htmlexp.obj \
+ $(SLO)$/htmlexp2.obj \
+ $(SLO)$/htmlimp.obj \
+ $(SLO)$/htmlpars.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/filter/inc/biffdump.hxx b/sc/source/filter/inc/biffdump.hxx
new file mode 100644
index 000000000000..52d412663c50
--- /dev/null
+++ b/sc/source/filter/inc/biffdump.hxx
@@ -0,0 +1,550 @@
+/*************************************************************************
+ *
+ * $RCSfile: biffdump.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+#ifndef _BIFFDUMP_HXX
+#define _BIFFDUMP_HXX
+
+
+#ifdef DEBUG
+#define DEBUGGING__________
+#endif
+
+#ifdef DEBUGGING
+
+
+#include <tools/string.hxx>
+#include <tools/list.hxx>
+#include <so3/svstor.hxx>
+
+#include "excform.hxx"
+#include "root.hxx"
+
+
+#define MODE_DUMP 0x0000
+#define MODE_SKIP 0x0001
+
+#define MODE_HEX 0x0002
+#define MODE_BODY 0x0000
+#define MODE_NAMEONLY 0x0008
+
+#define MODE_PLAIN 0x0000
+#define MODE_DETAIL 0x0004
+
+
+#define CT_EOL 0x01
+#define CT_NUM 0x02
+#define CT_ALPHA 0x04
+#define CT_ALPHANUM 0x08
+#define CT_HEX 0x10
+#define CT_LOWERALPHA 0x20
+#define CT_UPPERALPHA 0x40
+#define CT_BLANK 0x80
+
+
+#define DELANDNULL(p) {delete p;p=NULL;}
+
+inline void CopyStrpOnStrp( ByteString*& rpToString, const ByteString* pFromString );
+
+
+struct DUMP_ERR
+{
+ DUMP_ERR* pNext;
+ UINT32 nLine;
+ ByteString aText;
+ ByteString* pHint;
+
+ inline DUMP_ERR( const UINT32 nLine, const ByteString& rText, const ByteString& rHint );
+ inline DUMP_ERR( const UINT32 nLine, const ByteString& rText );
+ ~DUMP_ERR();
+};
+
+
+
+
+enum _KEYWORD { KW_Unknown, Skipdump, Contload, Parsep, Maxbodylines, Include, Exclude,
+ Hex, Body, Comment, Output, Title, NameOnly, ClearFile, SkipOffset };
+
+
+
+
+struct IdRange
+{
+ UINT16 nFirst;
+ UINT16 nLast;
+ IdRange( const UINT16 nF, const UINT16 nL ) : nFirst( nF ), nLast( nL ) {}
+};
+
+
+
+
+class IdRangeList : protected List
+{
+private:
+protected:
+public:
+ virtual ~IdRangeList();
+
+ List::Count;
+
+ inline const IdRange* First( void );
+ inline const IdRange* Next( void );
+ inline const IdRange* Get( const UINT32 n ) const;
+
+ inline void Append( const UINT16 nFirst, const UINT16 nNext );
+
+ void Clear( void );
+ };
+
+
+
+
+class Biff8RecDumper : public ExcRoot
+{
+private:
+protected:
+ static const sal_Char* pLevelPreString;
+ static const sal_Char* pLevelPreStringNT;
+ const sal_Char* pLevelPre;
+ UINT16 nLevelCnt;
+
+ ByteString* pTitle;
+ ByteString* pOutName;
+
+ SvFileStream* pDumpStream;
+ SvStream* pIn;
+ SvStorage* pPivotCache;
+
+ UINT32 nMaxBodyLines;
+ BOOL bEndLoading;
+ BOOL bSkip;
+ BOOL bSkipOffset;
+ BOOL bClearFile;
+
+ static const UINT16 nRecCnt;
+ UINT16* pDumpModes;
+ ByteString** ppRecNames;
+
+ static UINT32 nInstances;
+
+ static sal_Char* pBlankLine;
+ static const UINT16 nLenBlankLine;
+
+ static UINT8* pCharType;
+ static UINT8* pCharVal;
+
+ DUMP_ERR* pFirst;
+ DUMP_ERR* pLast;
+ DUMP_ERR* pAct;
+
+ sal_Char cParSep;
+ sal_Char cComm1;
+ sal_Char cComm2;
+
+ void Print( const ByteString& rStr );
+ void Print( const sal_Char* pStr );
+ void DumpPivotCache( const UINT16 nStrId );
+ UINT16 DumpXF( SvStream& rIn, const sal_Char* pPre );
+ void DumpValidPassword( SvStream& rIn, const sal_Char* pPre );
+ void RecDump( const UINT16 nR, const UINT16 nL );
+ void EscherDump( const UINT16 nL );
+ void ObjDump( const UINT16 nL );
+ void ContDump( const UINT16 nL );
+ void FormulaDump( const UINT16 nL, const FORMULA_TYPE eFT );
+ static const sal_Char* GetBlanks( const UINT16 nNumOfBlanks );
+ static BOOL IsLineEnd( const sal_Char c, sal_Char& rNext, SvStream& rIn, INT32& rLeft );
+ void Init( void );
+ static _KEYWORD GetKeyType( const ByteString& rString );
+ BOOL ExecCommand( const UINT32 nLine, const ByteString& rCommand,
+ const ByteString* pVal = NULL );
+ BOOL ExecSetVal( const UINT32 nLine, const ByteString& rId,
+ const ByteString* pName, const ByteString* pInExClude,
+ const ByteString* pHexBody );
+
+ inline void SetMode( const UINT16 nRecNum, const UINT16 nMode );
+ inline UINT16 GetMode( const UINT16 nRecNum ) const;
+ inline UINT16* GetModeRef( const UINT16 nRecNum ) const;
+ inline BOOL HasMode( const UINT16 nRecNum, const UINT16 nRefMode ) const;
+ inline BOOL HasModeDump( const UINT16 nRecNum ) const;
+ inline BOOL HasModeSkip( const UINT16 nRecNum ) const;
+ inline BOOL HasModeHex( const UINT16 nRecNum ) const;
+ inline BOOL HasModeBody( const UINT16 nRecNum ) const;
+ inline BOOL HasModePlain( const UINT16 nRecNum ) const;
+ inline BOOL HasModeDetail( const UINT16 nRecNum ) const;
+ inline BOOL HasModeNameOnly( const UINT16 nRecNum ) const;
+ void SetFlag( const UINT16 nFirst, const UINT16 nLast, const UINT16 nFlags );
+ void ClrFlag( const UINT16 nFirst, const UINT16 nLast, const UINT16 nFlags );
+
+ inline void SetName( const UINT16 nRecNum, const sal_Char* pName );
+ inline void SetName( const UINT16 nRecNum, const ByteString& rName );
+ void SetName( const UINT16 nRecNum, ByteString* pName );
+ inline const ByteString* GetName( const UINT16 nRecNum );
+
+ inline static BOOL IsNum( const sal_Char c );
+ inline static BOOL IsAlpha( const sal_Char c );
+ inline static BOOL IsAlphaNum( const sal_Char c );
+ inline static BOOL IsHex( const sal_Char c );
+ inline static BOOL IsEndOfLine( const sal_Char c );
+ inline static BOOL IsBlank( const sal_Char c );
+ static UINT32 GetVal( const ByteString& rString );
+ BOOL FillIdRangeList( const UINT32 nLine, IdRangeList& rRangeList,
+ const ByteString& rVals );
+ inline static UINT8 GetVal( const sal_Char c );
+ BOOL CreateOutStream( const UINT32 nL = 0xFFFFFFFF );
+ static SvFileStream* CreateInStream( const sal_Char* pName );
+ static SvFileStream* CreateInStream( const sal_Char* pPath, const sal_Char* pName );
+
+ void AddError( const UINT32 nLine, const ByteString& rText, const ByteString& rHint );
+ inline void AddError( const UINT32 nLine, const sal_Char* pText, const ByteString& rHint );
+ inline void AddError( const UINT32 nLine, const ByteString& rText );
+ inline void AddError( const UINT32 nLine, const sal_Char* pText );
+ inline const DUMP_ERR* FirstErr( void );
+ inline const DUMP_ERR* NextErr( void );
+public:
+ Biff8RecDumper( RootData& rRootData );
+ ~Biff8RecDumper();
+ BOOL Dump( SvStream& rIn );
+ // = TRUE -> nicht weiter laden
+
+ inline static BOOL IsPrintable( const UINT8 nC );
+ };
+
+
+
+
+inline void CopyStrpOnStrp( ByteString*& rp, const ByteString* p )
+{
+ if( p )
+ {
+ if( rp )
+ *rp = *p;
+ else
+ rp = new ByteString( *p );
+ }
+ else if( rp )
+ {
+ delete rp;
+ rp = NULL;
+ }
+}
+
+
+
+
+inline DUMP_ERR::DUMP_ERR( const UINT32 n, const ByteString& rT, const ByteString& rH ) :
+ nLine( n ), aText( rT ), pNext( NULL )
+{
+ pHint = new ByteString( rH );
+}
+
+
+inline DUMP_ERR::DUMP_ERR( const UINT32 n, const ByteString& rT ) :
+ nLine( n ), aText( rT ), pHint( NULL ), pNext( NULL )
+{
+}
+
+
+
+
+inline const IdRange* IdRangeList::First( void )
+{
+ return ( const IdRange* ) List::First();
+}
+
+
+inline const IdRange* IdRangeList::Next( void )
+{
+ return ( const IdRange* ) List::Next();
+}
+
+
+inline const IdRange* IdRangeList::Get( const UINT32 n ) const
+{
+ return ( const IdRange* ) List::GetObject( n );
+}
+
+
+inline void IdRangeList::Append( const UINT16 n1, const UINT16 n2 )
+{
+ List::Insert( new IdRange( n1, n2 ), LIST_APPEND );
+}
+
+
+
+
+inline void Biff8RecDumper::SetMode( const UINT16 n, const UINT16 nM )
+{
+ if( n < nRecCnt )
+ pDumpModes[ n ] = nM;
+}
+
+
+inline UINT16 Biff8RecDumper::GetMode( const UINT16 n ) const
+{
+ if( n < nRecCnt )
+ return pDumpModes[ n ];
+ else
+ return 0xFFFF;
+}
+
+
+inline UINT16* Biff8RecDumper::GetModeRef( const UINT16 n ) const
+{
+ if( n < nRecCnt )
+ return pDumpModes + n;
+ else
+ return NULL;
+}
+
+
+inline BOOL Biff8RecDumper::HasMode( const UINT16 n, const UINT16 nM ) const
+{
+ if( n < nRecCnt )
+ return ( pDumpModes[ n ] & nM ) == nM;
+ else
+ return FALSE;
+}
+
+
+inline BOOL Biff8RecDumper::HasModeDump( const UINT16 n ) const
+{
+ if( n < nRecCnt )
+ return ( pDumpModes[ n ] & MODE_SKIP ) == 0;
+ else
+ return FALSE;
+}
+
+
+inline BOOL Biff8RecDumper::HasModeSkip( const UINT16 n ) const
+{
+ if( n < nRecCnt )
+ return ( pDumpModes[ n ] & MODE_SKIP ) != 0;
+ else
+ return FALSE;
+}
+
+
+inline BOOL Biff8RecDumper::HasModeHex( const UINT16 n ) const
+{
+ if( n < nRecCnt )
+ return ( pDumpModes[ n ] & MODE_HEX ) != 0;
+ else
+ return FALSE;
+}
+
+
+inline BOOL Biff8RecDumper::HasModeBody( const UINT16 n ) const
+{
+ if( n < nRecCnt )
+ return ( pDumpModes[ n ] & MODE_HEX ) == 0;
+ else
+ return FALSE;
+}
+
+
+inline BOOL Biff8RecDumper::HasModePlain( const UINT16 n ) const
+{
+ if( n < nRecCnt )
+ return ( pDumpModes[ n ] & MODE_DETAIL ) == 0;
+ else
+ return FALSE;
+}
+
+
+inline BOOL Biff8RecDumper::HasModeDetail( const UINT16 n ) const
+{
+ if( n < nRecCnt )
+ return ( pDumpModes[ n ] & MODE_DETAIL ) != 0;
+ else
+ return FALSE;
+}
+
+
+inline BOOL Biff8RecDumper::HasModeNameOnly( const UINT16 n ) const
+{
+ if( n < nRecCnt )
+ return ( pDumpModes[ n ] & MODE_NAMEONLY ) != 0;
+ else
+ return FALSE;
+}
+
+
+inline void Biff8RecDumper::SetName( const UINT16 n, const sal_Char* p )
+{
+ if( n < nRecCnt )
+ {
+ if( ppRecNames[ n ] )
+ *ppRecNames[ n ] = p;
+ else
+ ppRecNames[ n ] = new ByteString( p );
+ }
+}
+
+
+inline void Biff8RecDumper::SetName( const UINT16 n, const ByteString& r )
+{
+ if( n < nRecCnt )
+ {
+ if( ppRecNames[ n ] )
+ *ppRecNames[ n ] = r;
+ else
+ ppRecNames[ n ] = new ByteString( r );
+ }
+}
+
+
+inline const ByteString* Biff8RecDumper::GetName( const UINT16 n )
+{
+ if( n < nRecCnt )
+ return ppRecNames[ n ];
+ else
+ return NULL;
+}
+
+
+inline BOOL Biff8RecDumper::IsNum( const sal_Char c )
+{
+ return ( pCharType[ ( UINT8 ) c ] & CT_NUM ) != 0;
+}
+
+
+inline BOOL Biff8RecDumper::IsAlpha( const sal_Char c )
+{
+ return ( pCharType[ ( UINT8 ) c ] & CT_ALPHA ) != 0;
+}
+
+
+inline BOOL Biff8RecDumper::IsAlphaNum( const sal_Char c )
+{
+ return ( pCharType[ ( UINT8 ) c ] & CT_ALPHANUM ) != 0;
+}
+
+
+inline BOOL Biff8RecDumper::IsHex( const sal_Char c )
+{
+ return ( pCharType[ ( UINT8 ) c ] & CT_HEX ) != 0;
+}
+
+
+inline BOOL Biff8RecDumper::IsEndOfLine( const sal_Char c )
+{
+ return ( pCharType[ ( UINT8 ) c ] & CT_EOL ) != 0;
+}
+
+
+inline BOOL Biff8RecDumper::IsBlank( const sal_Char c )
+{
+ return ( pCharType[ ( UINT8 ) c ] & CT_BLANK ) != 0;
+}
+
+
+inline UINT8 Biff8RecDumper::GetVal( const sal_Char c )
+{
+ return pCharVal[ ( UINT8 ) c ];
+}
+
+
+inline void Biff8RecDumper::AddError( const UINT32 n, const sal_Char* p, const ByteString& r )
+{
+ AddError( n, ByteString( p ), r );
+}
+
+
+inline void Biff8RecDumper::AddError( const UINT32 nLine, const ByteString& rText )
+{
+}
+
+
+inline void Biff8RecDumper::AddError( const UINT32 nLine, const sal_Char* pText )
+{
+}
+
+
+inline const DUMP_ERR* Biff8RecDumper::FirstErr( void )
+{
+ pAct = pFirst;
+ return pAct;
+}
+
+
+inline const DUMP_ERR* Biff8RecDumper::NextErr( void )
+{
+ if( pAct )
+ pAct = pAct->pNext;
+
+ return pAct;
+}
+
+
+inline BOOL Biff8RecDumper::IsPrintable( const UINT8 n )
+{
+ return n >= ' ';
+}
+
+
+#endif
+
+#endif
+
+
+
+
diff --git a/sc/source/filter/inc/colrowst.hxx b/sc/source/filter/inc/colrowst.hxx
new file mode 100644
index 000000000000..94cb514db9ec
--- /dev/null
+++ b/sc/source/filter/inc/colrowst.hxx
@@ -0,0 +1,300 @@
+/*************************************************************************
+ *
+ * $RCSfile: colrowst.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _COLROWST_HXX
+#define _COLROWST_HXX
+
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+
+#ifndef _ROOT_HXX
+#include "root.hxx"
+#endif
+#ifndef _FLTTOOLS_HXX
+#include "flttools.hxx"
+#endif
+
+
+// ----- forwards --------------------------------------------------------
+class XF_Buffer;
+class SvStream;
+class ScExtDocOptions;
+struct ScExtTabOptions;
+
+
+
+// ----------------------------------------------- class ColRowSettings --
+
+#define ROWFLAG_USED 0x01
+#define ROWFLAG_DEFAULT 0x02
+#define ROWFLAG_HIDDEN 0x04
+#define ROWFLAG_MAN 0x08
+
+
+class ColRowSettings : public ExcRoot
+{
+private:
+ // ACHTUNG: Col-/Row-Angaben in TWIPS
+ friend ScExtDocOptions;
+
+ UINT16List* pHorizPb; // horizontale Seitenumbrueche
+ UINT16List* pVertPb; // vertikale ~
+
+ ScExtTabOptions* pExtTabOpt;
+ INT32* pWidth;
+ BOOL* pColHidden;
+ UINT16* pHeight;
+ INT8* pRowFlags;
+
+ UINT16 nMaxRow;
+ UINT16 nDefWidth;
+ UINT16 nDefHeight;
+ BOOL bDirty; // noch nicht rausgehauen?
+ BOOL bSetByStandard; // StandardWidth hat Vorrang vor DefColWidth!
+
+ void _SetRowSettings( const UINT16 nRow, const UINT16 nExcelHeight, const UINT16 nGrbit );
+public:
+ ColRowSettings( void );
+ ~ColRowSettings();
+ void Reset( void );
+
+ void SetDefaults( UINT16 nWidth, UINT16 nHeight );
+ inline void SetDefWidth( const UINT16 nNew, const BOOL bStandardWidth = FALSE );
+ inline void SetDefHeight( const UINT16 nNew );
+
+ inline void Used( const UINT16 nCol, const UINT16 nRow );
+
+ inline void HideCol( const UINT16 nCol );
+ void HideColRange( UINT16 nColFirst, UINT16 nColLast );
+ void SetWidthRange( UINT16 nF, UINT16 nL, UINT16 nNew );
+ void SetDefaultXF( UINT16 nColFirst, UINT16 nColLast, UINT16 nXF );
+ inline void SetWidth( const UINT16 nCol, const INT32 nNew );
+
+ inline void SetHeight( const UINT16 nRow, const UINT16 nNew );
+ inline void HideRow( const UINT16 nRow );
+ inline void SetRowSettings( const UINT16 nRow, const UINT16 nExcelHeight, const UINT16 nGrbit );
+ // Auswertung/Umrechung von nExcelHeight und Auswertung nGrbit
+
+ void ReadSplit( SvStream& rIn );
+ void SetFrozen( const BOOL bFrozen );
+ void SetSelection( const ScRange& rSel );
+ void SetDimension( const ScRange& rDim );
+
+ void SetHorizPagebreak( const UINT16 nRow );
+ void SetVertPagebreak( const UINT16 nCol );
+
+ void Apply( const UINT16 nTab );
+};
+
+
+
+
+inline void ColRowSettings::SetDefWidth( const UINT16 n, const BOOL b )
+{
+ if( b )
+ {
+ nDefWidth = n;
+ bSetByStandard = TRUE;
+ }
+ else if( !bSetByStandard )
+ nDefWidth = n;
+}
+
+
+inline void ColRowSettings::SetDefHeight( const UINT16 n )
+{
+ nDefHeight = n;
+}
+
+
+inline void ColRowSettings::SetWidth( const UINT16 nCol, const INT32 nNew )
+{
+ if( nCol <= MAXCOL )
+ pWidth[ nCol ] = nNew;
+}
+
+
+inline void ColRowSettings::SetHeight( const UINT16 nRow, const UINT16 n )
+{
+ if( nRow <= MAXROW )
+ {
+ pHeight[ nRow ] = ( UINT16 ) ( ( double ) ( n & 0x7FFF ) * pExcRoot->fRowScale );
+
+ INT8 nFlags = pRowFlags[ nRow ];
+ nFlags |= ROWFLAG_USED;
+
+ if( n & 0x8000 )
+ nFlags|= ROWFLAG_DEFAULT;
+
+ if( nRow > nMaxRow )
+ nMaxRow = nRow;
+
+ pRowFlags[ nRow ] = nFlags;
+ }
+}
+
+
+inline void ColRowSettings::HideCol( const UINT16 nCol )
+{
+ if( nCol <= MAXCOL )
+ pColHidden[ nCol ] = TRUE;
+}
+
+
+inline void ColRowSettings::HideRow( const UINT16 nRow )
+{
+ if( nRow <= MAXROW )
+ {
+ pRowFlags[ nRow ] |= ( ROWFLAG_HIDDEN | ROWFLAG_USED );
+
+ if( nRow > nMaxRow )
+ nMaxRow = nRow;
+ }
+}
+
+
+inline void ColRowSettings::Used( const UINT16 nCol, const UINT16 nRow )
+{
+ if( nCol <= MAXCOL && nRow <= MAXROW )
+ {
+ pRowFlags[ nRow ] |= ROWFLAG_USED;
+
+ if( nRow > nMaxRow )
+ nMaxRow = nRow;
+ }
+}
+
+
+inline void ColRowSettings::SetRowSettings( const UINT16 nRow, const UINT16 nExcelHeight,
+ const UINT16 nGrbit )
+{
+ if( nRow <= MAXROW )
+ _SetRowSettings( nRow, nExcelHeight, nGrbit );
+}
+
+
+
+
+// ---------------------------------------------------- class FltColumn --
+
+class FltColumn : public ExcRoot
+{
+private:
+ UINT16* pData; // Daten-Array fuer XF-Indizes
+ UINT16 nLastRow;
+ UINT16 nCol; // Column-Nummer
+ const static UINT16 nDefCleared;
+public:
+ FltColumn( RootData* pRD, UINT16 nNewCol ); // fuer den Ersten
+ ~FltColumn();
+
+ inline void SetXF( UINT16 nRow, UINT16 nNewXF );
+ void Reset( void );
+ void Apply( const UINT16 nTab ) const;
+};
+
+
+inline void FltColumn::SetXF( UINT16 nRow, UINT16 nNewXF )
+{
+ DBG_ASSERT( nRow <= MAXROW, "-FltColumn::SetXF(): Row > MAXROW!" );
+
+ if( nRow > nLastRow )
+ nLastRow = nRow;
+
+ pData[ nRow ] = nNewXF;
+}
+
+
+// --------------------------------------------------- class FltTabelle --
+
+class FltTabelle : public ExcRoot
+{
+private:
+ struct CELLMERGE
+ {
+ CELLMERGE* pNext;
+ UINT16 nRow;
+ UINT16 nFirst; // Cols
+ UINT16 nLast;
+
+ CELLMERGE( const UINT16 nR, const UINT16 nC )
+ { pNext = NULL; nRow = nR; nFirst = nLast = nC; }
+};
+
+ FltColumn** pData; // Array mit Column-Daten
+ UINT16 nSize;
+ UINT16 nLastCol;
+
+ CELLMERGE* pFirstCellMerge;
+ CELLMERGE* pLastCellMerge;
+public:
+ FltTabelle( RootData* pRD );
+ ~FltTabelle();
+ void SetXF( UINT16 nCol, UINT16 nRow, UINT16 nNewXF, const BOOL bBlank = FALSE );
+ void Reset( void );
+ void Apply( const UINT16 nTab );
+};
+
+// -----------------------------------------------------------------------
+
+#endif
+
diff --git a/sc/source/filter/inc/decl.h b/sc/source/filter/inc/decl.h
new file mode 100644
index 000000000000..bf00fbb9e8e7
--- /dev/null
+++ b/sc/source/filter/inc/decl.h
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: decl.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef __DECL_H
+#define __DECL_H
+
+#include <tools/solar.h>
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+enum WKTYP { eWK_UNKNOWN = -2, eWK_1 = 0, eWK_2, eWK3, eWK4, eWK_Error };
+typedef void ( BEARBFKT )( void );
+typedef sal_Char STRING16[ 16 ];
+typedef sal_Char STRING14[ 14 ];
+typedef sal_Char STRING8[ 8 ];
+typedef sal_Char STRING6[ 6 ];
+typedef USHORT USHORT4[ 4 ];
+//typedef unsigned short USHORT4[ 4 ];
+#endif
+
diff --git a/sc/source/filter/inc/dif.hxx b/sc/source/filter/inc/dif.hxx
new file mode 100644
index 000000000000..3fae570e6e1c
--- /dev/null
+++ b/sc/source/filter/inc/dif.hxx
@@ -0,0 +1,303 @@
+/*************************************************************************
+ *
+ * $RCSfile: dif.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _DIF_HXX
+#define _DIF_HXX
+
+
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+
+class SvStream;
+class SvNumberFormatter;
+class ScDocument;
+class ScPatternAttr;
+
+extern const sal_Char* pKeyTABLE;
+extern const sal_Char* pKeyVECTORS;
+extern const sal_Char* pKeyTUPLES;
+extern const sal_Char* pKeyDATA;
+extern const sal_Char* pKeyBOT;
+extern const sal_Char* pKeyEOD;
+extern const sal_Char* pKeyTRUE;
+extern const sal_Char* pKeyFALSE;
+extern const sal_Char* pKeyNA;
+
+
+enum TOPIC
+{
+ T_UNKNOWN,
+ T_TABLE, T_VECTORS, T_TUPLES, T_DATA, T_LABEL, T_COMMENT, T_SIZE,
+ T_PERIODICITY, T_MAJORSTART, T_MINORSTART, T_TRUELENGTH, T_UINITS,
+ T_DISPLAYUNITS,
+ T_END
+};
+
+enum DATASET { D_BOT, D_EOD, D_NUMERIC, D_STRING, D_UNKNOWN, D_SYNT_ERROR };
+
+
+class DifParser
+{
+public:
+ ByteString aData;
+ double fVal;
+ UINT32 nVector;
+ UINT32 nVal;
+ UINT32 nNumFormat;
+ CharSet eCharSet;
+private:
+ SvNumberFormatter* pNumFormatter;
+ SvStream& rIn;
+ BOOL bPlain;
+#if __ALIGNMENT4 == 1
+ static UINT32 nBOT;
+ static UINT32 nEOD;
+ static UINT32 n1_0;
+ static UINT16 nV;
+#else
+ static sal_Char cBOT_0;
+ static sal_Char cEOD_0;
+ static sal_Char c1_0_0;
+ static sal_Char cBOT_1;
+ static sal_Char cEOD_1;
+ static sal_Char c1_0_1;
+ static sal_Char cBOT_2;
+ static sal_Char cEOD_2;
+ static sal_Char c1_0_2;
+ static sal_Char cBOT_3;
+ static sal_Char cEOD_3;
+ static sal_Char c1_0_3;
+ static sal_Char cV_0;
+ static sal_Char cV_1;
+#endif
+
+ static inline BOOL IsBOT( const sal_Char* pRef );
+ static inline BOOL IsEOD( const sal_Char* pRef );
+ static inline BOOL Is1_0( const sal_Char* pRef );
+public:
+ DifParser( SvStream&, const UINT32 nOption, ScDocument&, CharSet );
+
+ TOPIC GetNextTopic( void );
+
+ DATASET GetNextDataset( void );
+
+ const sal_Char* ScanIntVal( const sal_Char* pStart, UINT32& rRet );
+ BOOL ScanFloatVal( const sal_Char* pStart );
+
+ inline BOOL IsNumber( const sal_Char cChar );
+ inline BOOL IsNumberEnding( const sal_Char cChar );
+
+ static inline BOOL IsV( const sal_Char* pRef );
+
+ inline BOOL IsPlain( void ) const;
+};
+
+
+inline BOOL DifParser::IsBOT( const sal_Char* pRef )
+{
+#if __ALIGNMENT4 == 1
+ return ( nBOT == *( ( UINT32* ) pRef ) );
+#else
+ return ( pRef[ 0 ] == cBOT_0 &&
+ pRef[ 1 ] == cBOT_1 &&
+ pRef[ 2 ] == cBOT_2 &&
+ pRef[ 3 ] == cBOT_3 );
+#endif
+}
+
+
+inline BOOL DifParser::IsEOD( const sal_Char* pRef )
+{
+#if __ALIGNMENT4 == 1
+ return ( nEOD == *( ( UINT32* ) pRef ) );
+#else
+ return ( pRef[ 0 ] == cEOD_0 &&
+ pRef[ 1 ] == cEOD_1 &&
+ pRef[ 2 ] == cEOD_2 &&
+ pRef[ 3 ] == cEOD_3 );
+#endif
+}
+
+
+inline BOOL DifParser::Is1_0( const sal_Char* pRef )
+{
+#if __ALIGNMENT4 == 1
+ return ( n1_0 == *( ( UINT32* ) pRef ) );
+#else
+ return ( pRef[ 0 ] == c1_0_0 &&
+ pRef[ 1 ] == c1_0_1 &&
+ pRef[ 2 ] == c1_0_2 &&
+ pRef[ 3 ] == c1_0_3 );
+#endif
+}
+
+
+inline BOOL DifParser::IsV( const sal_Char* pRef )
+{
+#if __ALIGNMENT4 == 1
+ return ( nV == *( ( UINT16 * ) pRef ) );
+#else
+ return ( pRef[ 0 ] == cV_0 &&
+ pRef[ 1 ] == cV_1 );
+#endif
+}
+
+
+inline BOOL DifParser::IsNumber( const sal_Char cChar )
+{
+ return ( cChar >= '0' && cChar <= '9' );
+}
+
+
+inline BOOL DifParser::IsNumberEnding( const sal_Char cChar )
+{
+ return ( cChar == 0x00 );
+}
+
+
+inline BOOL DifParser::IsPlain( void ) const
+{
+ return bPlain;
+}
+
+
+
+
+class DifAttrCache;
+class ScPatternAttr;
+
+
+class DifColumn : private List
+{
+private:
+ friend DifAttrCache;
+ struct ENTRY
+ {
+ UINT32 nNumFormat;
+
+ UINT16 nStart;
+ UINT16 nEnd;
+ };
+
+ ENTRY* pAkt;
+
+ inline DifColumn( void );
+ ~DifColumn();
+ void SetLogical( UINT16 nRow );
+ void SetNumFormat( UINT16 nRow, const UINT32 nNumFormat );
+ void NewEntry( const UINT16 nPos, const UINT32 nNumFormat );
+ void Apply( ScDocument&, const UINT16 nCol, const UINT16 nTab, const ScPatternAttr& );
+ void Apply( ScDocument &rDoc, const UINT16 nCol, const UINT16 nTab );
+public: // geht niemanden etwas an...
+};
+
+
+inline DifColumn::DifColumn( void )
+{
+ pAkt = NULL;
+}
+
+
+
+
+class DifAttrCache
+{
+private:
+ DifColumn** ppCols;
+ BOOL bPlain;
+public:
+ DifAttrCache( const BOOL bPlain );
+ ~DifAttrCache();
+ inline void SetLogical( const UINT16 nCol, const UINT16 nRow );
+ void SetNumFormat( const UINT16 nCol, const UINT16 nRow, const UINT32 nNumFormat );
+ void Apply( ScDocument&, UINT16 nTab );
+};
+
+
+inline void DifAttrCache::SetLogical( const UINT16 nCol, const UINT16 nRow )
+{
+ DBG_ASSERT( nCol <= MAXCOL, "-DifAttrCache::SetLogical(): Col zu gross!" );
+ DBG_ASSERT( bPlain, "*DifAttrCache::SetLogical(): muss Plain sein!" );
+
+ if( !ppCols[ nCol ] )
+ ppCols[ nCol ] = new DifColumn;
+ ppCols[ nCol ]->SetLogical( nRow );
+}
+
+
+#endif
+
+
diff --git a/sc/source/filter/inc/eeparser.hxx b/sc/source/filter/inc/eeparser.hxx
new file mode 100644
index 000000000000..90384518866d
--- /dev/null
+++ b/sc/source/filter/inc/eeparser.hxx
@@ -0,0 +1,189 @@
+/*************************************************************************
+ *
+ * $RCSfile: eeparser.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_EEPARSER_HXX
+#define SC_EEPARSER_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _GRAPH_HXX //autogen
+#include <vcl/graph.hxx>
+#endif
+#ifndef _TABLE_HXX //autogen
+#include <tools/table.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _MyEDITDATA_HXX //autogen
+#include <svx/editdata.hxx>
+#endif
+
+const sal_Char nHorizontal = 1;
+const sal_Char nVertical = 2;
+const sal_Char nHoriVerti = nHorizontal | nVertical;
+
+struct ScHTMLImage
+{
+ String aURL;
+ Size aSize;
+ Point aSpace;
+ String aFilterName;
+ Graphic* pGraphic; // wird von WriteToDocument uebernommen
+ sal_Char nDir; // 1==hori, 2==verti, 3==beides
+
+ ScHTMLImage() :
+ pGraphic( NULL ),
+ aSize( 0, 0 ), aSpace( 0, 0 ), nDir( nHorizontal )
+ {}
+ ~ScHTMLImage()
+ { if ( pGraphic ) delete pGraphic; }
+};
+DECLARE_LIST( ScHTMLImageList, ScHTMLImage* );
+
+struct ScEEParseEntry
+{
+ SfxItemSet aItemSet;
+ ESelection aSel; // Selection in EditEngine
+ String* pValStr; // HTML evtl. SDVAL String
+ String* pNumStr; // HTML evtl. SDNUM String
+ String* pName; // HTML evtl. Anchor/RangeName
+ String aAltText; // HTML IMG ALT Text
+ ScHTMLImageList* pImageList; // Grafiken in dieser Zelle
+ USHORT nCol; // relativ zum Beginn des Parse
+ USHORT nRow;
+ USHORT nTab; // HTML TableInTable
+ USHORT nTwips; // RTF ColAdjust etc.
+ USHORT nColOverlap; // merged cells wenn >1
+ USHORT nRowOverlap; // merged cells wenn >1
+ USHORT nOffset; // HTML PixelOffset
+ USHORT nWidth; // HTML PixelWidth
+ BOOL bHasGraphic; // HTML any image loaded
+
+ ScEEParseEntry( SfxItemPool* pPool ) :
+ aItemSet( *pPool ), pValStr( NULL ),
+ pNumStr( NULL ), pName( NULL ), pImageList( NULL ),
+ nCol((USHORT)~0), nRow((USHORT)~0), nTab(0),
+ nColOverlap(1), nRowOverlap(1),
+ nOffset(0), nWidth(0), bHasGraphic(FALSE)
+ {}
+ ~ScEEParseEntry()
+ {
+ if ( pValStr )
+ delete pValStr;
+ if ( pNumStr )
+ delete pNumStr;
+ if ( pName )
+ delete pName;
+ if ( pImageList )
+ {
+ for ( ScHTMLImage* pI = pImageList->First();
+ pI; pI = pImageList->Next() )
+ {
+ delete pI;
+ }
+ delete pImageList;
+ }
+ }
+};
+DECLARE_LIST( ScEEParseList, ScEEParseEntry* );
+
+
+class EditEngine;
+
+class ScEEParser
+{
+protected:
+ EditEngine* pEdit;
+ SfxItemPool* pPool;
+ SfxItemPool* pDocPool;
+ ScEEParseList* pList;
+ ScEEParseEntry* pActEntry;
+ Table* pColWidths;
+ int nLastToken;
+ USHORT nColCnt;
+ USHORT nRowCnt;
+ USHORT nColMax;
+ USHORT nRowMax;
+
+ void NewActEntry( ScEEParseEntry* );
+
+public:
+ ScEEParser( EditEngine* );
+ virtual ~ScEEParser();
+
+ virtual ULONG Read( SvStream& ) = 0;
+
+ void GetDimensions( USHORT& nCols, USHORT& nRows ) const
+ { nCols = nColMax; nRows = nRowMax; }
+ ULONG Count() const { return pList->Count(); }
+ ScEEParseEntry* First() const { return pList->First(); }
+ ScEEParseEntry* Next() const { return pList->Next(); }
+ Table* GetColWidths() const { return pColWidths; }
+};
+
+
+
+#endif
+
diff --git a/sc/source/filter/inc/excdefs.hxx b/sc/source/filter/inc/excdefs.hxx
new file mode 100644
index 000000000000..67a4431226e7
--- /dev/null
+++ b/sc/source/filter/inc/excdefs.hxx
@@ -0,0 +1,272 @@
+/*************************************************************************
+ *
+ * $RCSfile: excdefs.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _EXCDEFS_HXX
+#define _EXCDEFS_HXX
+//_________________________________________________________
+//
+// excdefs.hxx: constants for import/export
+//_________________________________________________________
+
+
+//_________________________________________________________
+// ExcETabNumBuffer
+
+#define EXC_TABBUF_INVALID 0xFFFF
+#define EXC_TABBUF_MASKTAB 0x0000FFFF
+#define EXC_TABBUF_MASKFLAGS 0xFFFF0000
+#define EXC_TABBUF_FLAGIGNORE 0x00010000
+#define EXC_TABBUF_FLAGEXT 0x00020000
+
+//_________________________________________________________
+// (0x0018, 0x0218) NAME
+
+// flags
+#define EXC_NAME_HIDDEN 0x0001
+#define EXC_NAME_FUNC 0x0002
+#define EXC_NAME_VB 0x0004
+#define EXC_NAME_PROC 0x0008
+#define EXC_NAME_CALCEXP 0x0010
+#define EXC_NAME_BUILTIN 0x0020
+#define EXC_NAME_FGROUPMASK 0x0FC0
+#define EXC_NAME_BIG 0x1000
+
+// "BuiltIn" names
+#define EXC_BUILTIN_CONSOLIDATEAREA 0x00
+#define EXC_BUILTIN_AUTOOPEN 0x01
+#define EXC_BUILTIN_AUTOCLOSE 0x02
+#define EXC_BUILTIN_EXTRACT 0x03
+#define EXC_BUILTIN_DATABASE 0x04
+#define EXC_BUILTIN_CRITERIA 0x05
+#define EXC_BUILTIN_PRINTAREA 0x06
+#define EXC_BUILTIN_PRINTTITLES 0x07
+#define EXC_BUILTIN_RECORDER 0x08
+#define EXC_BUILTIN_DATAFORM 0x09
+#define EXC_BUILTIN_AUTOACTIVATE 0x0A
+#define EXC_BUILTIN_AUTODEACTIVATE 0x0B
+#define EXC_BUILTIN_SHEETTITLE 0x0C
+#define EXC_BUILTIN_AUTOFILTER 0x0D
+#define EXC_BUILTIN_UNKNOWN 0x0E
+
+//_________________________________________________________
+// (0x0031) FONT
+
+// attributes
+#define EXC_FONTATTR_NONE 0x0000
+#define EXC_FONTATTR_ITALIC 0x0002
+#define EXC_FONTATTR_STRIKEOUT 0x0008
+#define EXC_FONTATTR_OUTLINE 0x0010
+#define EXC_FONTATTR_SHADOW 0x0020
+
+// color
+#define EXC_FONTCOL_IGNORE 0x7FFF
+
+// weight
+#define EXC_FONTWGHT_DONTKNOW 0
+#define EXC_FONTWGHT_THIN 100
+#define EXC_FONTWGHT_ULTRALIGHT 200
+#define EXC_FONTWGHT_LIGHT 300
+#define EXC_FONTWGHT_SEMILIGHT 350
+#define EXC_FONTWGHT_NORMAL 400
+#define EXC_FONTWGHT_MEDIUM 500
+#define EXC_FONTWGHT_SEMIBOLD 600
+#define EXC_FONTWGHT_BOLD 700
+#define EXC_FONTWGHT_ULTRABOLD 800
+#define EXC_FONTWGHT_BLACK 900
+
+// height
+#define EXC_FONTHGHT_COEFF 20.0
+
+// underline
+#define EXC_FONTUL_NONE 0x00
+#define EXC_FONTUL_SINGLE 0x01
+#define EXC_FONTUL_DOUBLE 0x02
+#define EXC_FONTUL_DOTTED 0x21
+
+// families
+#define EXC_FONTFAM_DONTKNOW 0x00
+#define EXC_FONTFAM_ROMAN 0x01
+#define EXC_FONTFAM_SWISS 0x02
+#define EXC_FONTFAM_SYSTEM EXC_FONTFAM_SWISS
+#define EXC_FONTFAM_MODERN 0x03
+#define EXC_FONTFAM_SCRIPT 0x04
+#define EXC_FONTFAM_DECORATIVE 0x05
+
+// charsets
+#define EXC_FONTCSET_DONTKNOW 0x00
+#define EXC_FONTCSET_MS_1252 0x00
+#define EXC_FONTCSET_APPLE_ROMAN 0x00
+#define EXC_FONTCSET_IBM_437 0x00
+#define EXC_FONTCSET_IBM_850 0xFF
+#define EXC_FONTCSET_IBM_860 0x00
+#define EXC_FONTCSET_IBM_861 0x00
+#define EXC_FONTCSET_IBM_863 0x00
+#define EXC_FONTCSET_IBM_865 0x00
+#define EXC_FONTCSET_SYSTEM 0x00
+#define EXC_FONTCSET_SYMBOL 0x02
+
+//_________________________________________________________
+// (0x0059, 0x005A) CRN, XCT
+
+// CRN data types
+#define EXC_CRN_DOUBLE 0x01
+#define EXC_CRN_STRING 0x02
+#define EXC_CRN_BOOL 0x04
+#define EXC_CRN_ERROR 0x10
+
+//_________________________________________________________
+// (0x0092) PALETTE (class ExcPalette2)
+
+// color types
+#define EXC_COLOR_CELLTEXT 0x0001
+#define EXC_COLOR_CELLBORDER 0x0002
+#define EXC_COLOR_CELLBGROUND 0x0003
+#define EXC_COLOR_CHARTTEXT 0x0011
+#define EXC_COLOR_CHARTLINE 0x0012
+#define EXC_COLOR_CHARTAREA 0x0013
+
+// special color indices
+#define EXC_COLIND_AUTOTEXT 77
+#define EXC_COLIND_AUTOLINE 77
+#define EXC_COLIND_AUTOFILLBG 77
+#define EXC_COLIND_AUTOFILLFG 78
+
+// internal
+#define EXC_PAL2_INDEXBASE 0xFFFF0000
+#define EXC_PAL2_IGNORE 0xFFFFFFFF
+
+//_________________________________________________________
+// (0x009B, 0x009D, 0x009E) AUTOFILTER
+
+// flags
+#define EXC_AFFLAG_AND 0x0000
+#define EXC_AFFLAG_OR 0x0001
+#define EXC_AFFLAG_ANDORMASK 0x0003
+#define EXC_AFFLAG_SIMPLE1 0x0004
+#define EXC_AFFLAG_SIMPLE2 0x0008
+#define EXC_AFFLAG_TOP10 0x0010
+#define EXC_AFFLAG_TOP10TOP 0x0020
+#define EXC_AFFLAG_TOP10PERC 0x0040
+
+// data types
+#define EXC_AFTYPE_NOTUSED 0x00
+#define EXC_AFTYPE_RK 0x02
+#define EXC_AFTYPE_DOUBLE 0x04
+#define EXC_AFTYPE_STRING 0x06
+#define EXC_AFTYPE_BOOLERR 0x08
+#define EXC_AFTYPE_INVALID 0x0A
+#define EXC_AFTYPE_EMPTY 0x0C
+#define EXC_AFTYPE_NOTEMPTY 0x0E
+
+// comparison operands
+#define EXC_AFOPER_NONE 0x00
+#define EXC_AFOPER_LESS 0x01
+#define EXC_AFOPER_EQUAL 0x02
+#define EXC_AFOPER_LESSEQUAL 0x03
+#define EXC_AFOPER_GREATER 0x04
+#define EXC_AFOPER_NOTEQUAL 0x05
+#define EXC_AFOPER_GREATEREQUAL 0x06
+
+//_________________________________________________________
+// (0x00AE, 0x00AF) SCENARIO, SCENMAN
+
+#define EXC_SCEN_MAXCELL 32
+#define EXC_SCEN_MAXSTRINGLEN 0xFF
+
+//_________________________________________________________
+// (0x007D) COLINFO
+
+// flags
+#define EXC_COL_HIDDEN 0x0001
+#define EXC_COL_COLLAPSED 0x1000
+
+// outline
+#define EXC_COL_LEVELFLAGS(nOL) ((nOL & 0x0007) << 8)
+#define EXC_COL_GETLEVEL(nFlag) ((nFlag & 0x0700) >> 8)
+
+//_________________________________________________________
+// (0x0208) ROW
+
+// flags
+#define EXC_ROW_COLLAPSED 0x0010
+#define EXC_ROW_ZEROHEIGHT 0x0020
+#define EXC_ROW_UNSYNCED 0x0040
+#define EXC_ROW_GHOSTDIRTY 0x0080
+
+// outline
+#define EXC_ROW_LEVELFLAGS(nOL) (nOL & 0x0007)
+#define EXC_ROW_GETLEVEL(nFlag) (nFlag & 0x0007)
+
+// unknown, always save
+#define EXC_ROW_FLAGCOMMON 0x0100
+
+// row height
+#define EXC_ROW_VALZEROHEIGHT 0x00FF
+#define EXC_ROW_FLAGDEFHEIGHT 0x8000
+
+//_________________________________________________________
+// Specials for outlines
+
+#define EXC_OUTLINE_MAX 7
+#define EXC_OUTLINE_COUNT (EXC_OUTLINE_MAX + 1)
+
+
+#endif // _EXCDEFS_HXX
diff --git a/sc/source/filter/inc/excdoc.hxx b/sc/source/filter/inc/excdoc.hxx
new file mode 100644
index 000000000000..d3ad3953829a
--- /dev/null
+++ b/sc/source/filter/inc/excdoc.hxx
@@ -0,0 +1,210 @@
+/*************************************************************************
+ *
+ * $RCSfile: excdoc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _EXCDOC_HXX
+#define _EXCDOC_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef _EXCRECDS_HXX
+#include "excrecds.hxx"
+#endif
+#ifndef _ROOT_HXX
+#include "root.hxx"
+#endif
+
+
+#define EXC5_ANZROW (UINT16(16383))
+#define XCL8_ROWMAX (UINT16(65535))
+
+
+//------------------------------------------------------------------ Forwards -
+
+class SvStream;
+class ScBaseCell;
+class ScHorizontalCellIterator;
+class ScDocument;
+
+class NameBuffer;
+
+class ScProgress;
+
+//class ScDPCollection;
+//class ScDPObject;
+//class ScRange;
+
+//--------------------------------------------------- class ExcRecordListRefs -
+
+#ifndef MAC
+class ExcRecordListRefs : protected List
+#else
+class ExcRecordListRefs : public List
+#endif
+{
+private:
+protected:
+public:
+ virtual ~ExcRecordListRefs();
+ inline void Append( ExcRecord* );
+ inline ExcRecord* First( void );
+ inline ExcRecord* Next( void );
+};
+
+
+inline void ExcRecordListRefs::Append( ExcRecord* pER )
+{
+ List::Insert( pER, CONTAINER_APPEND );
+}
+
+
+inline ExcRecord* ExcRecordListRefs::First( void )
+{
+ return ( ExcRecord* ) List::First();
+}
+
+
+inline ExcRecord* ExcRecordListRefs::Next( void )
+{
+ return ( ExcRecord* ) List::Next();
+}
+
+
+//--------------------------------------------------- class ExcRecordListInst -
+
+class ExcRecordListInst : public ExcRecordListRefs
+{
+private:
+protected:
+public:
+ virtual ~ExcRecordListInst();
+};
+
+
+//------------------------------------------------------------ class ExcTable -
+
+class ExcTable : public ExcRoot
+{
+private:
+ ExcRecordListInst aRecList;
+ UINT16 nScTab; // table number SC document
+ UINT16 nExcTab; // table number Excel document
+ UINT16 nAktRow; // fuer'n Iterator
+ UINT16 nAktCol;
+
+ static ExcRowBlock* pRowBlock; // buffer for ROW recs
+
+ void Clear();
+ void NullTab( const String* pCodename = NULL );
+ // pRec mit new anlegen und vergessen, delete macht ExcTable selber!
+ inline void Add( ExcRecord *pRec );
+
+ void AddRow( ExcRow* pRow );
+ void AddUsedRow( ExcRow*& rpRow ); // Add() or delete
+public:
+ ExcTable( RootData* pRD );
+ ExcTable( RootData* pRD, UINT16 nScTable );
+ ~ExcTable();
+
+ void FillAsHeader( ExcRecordListRefs& rBundleSheetRecList );
+ void FillAsTable( void );
+
+ void Write( SvStream& );
+};
+
+
+inline void ExcTable::Add( ExcRecord* pRec )
+{
+ DBG_ASSERT( pRec, "-ExcTable::Add(): pRec ist NULL!" );
+
+ aRecList.Append( pRec );
+}
+
+
+//--------------------------------------------------------- class ExcDocument -
+
+class ExcDocument : private List, public ExcRoot
+{
+friend class ExcTable;
+
+private:
+ ExcRecordListRefs aBundleSheetRecList;
+ ExcTable aHeader;
+
+ ScProgress* pPrgrsBar;
+
+ static NameBuffer* pTabNames;
+
+ void Clear( void );
+ void Add( UINT16 nScTab );
+public:
+ ExcDocument( RootData* pRD/*, ExportFormatExcel*/ );
+ ~ExcDocument();
+ void ReadDoc( void );
+ void Write( SvStream& );
+};
+
+
+
+
+#endif
+
diff --git a/sc/source/filter/inc/excform.hxx b/sc/source/filter/inc/excform.hxx
new file mode 100644
index 000000000000..38129d0b0f66
--- /dev/null
+++ b/sc/source/filter/inc/excform.hxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: excform.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _EXCFORM_HXX
+#define _EXCFORM_HXX
+
+#ifndef _FORMEL_HXX
+#include "formel.hxx"
+#endif
+
+
+class ScRangeList;
+
+
+#ifdef MWERKS
+class ExcelToSc : public ConverterBase, public ExcRoot
+#else
+class ExcelToSc : public ConverterBase, protected ExcRoot
+#endif
+{
+protected:
+ BOOL bExternName; // wenn External Name gefunden wurde
+ static const UINT16 nRowMask;
+ static const UINT16 nLastInd; // letzter Index fuer Excel->SC-
+ // Token Umsetzung
+ // ---------------------------------------------------------------
+ inline void DoDefArgs( UINT16 );
+
+ void DoMulArgs( DefTokenId, BYTE );
+
+ static DefTokenId IndexToToken( UINT16 );
+
+ static BYTE IndexToAnzahl( UINT16 );
+
+ void ExcRelToScRel( UINT16 nRow, UINT8 nCol, SingleRefData&, const BOOL bName );
+
+public:
+ ExcelToSc( RootData* pRD, SvStream& aStr, const UINT16& rOrgTab );
+ virtual ~ExcelToSc();
+ virtual ConvErr Convert( const ScTokenArray*&, INT32& nRest, const FORMULA_TYPE eFT = FT_CellFormula );
+
+ virtual ConvErr Convert( _ScRangeListTabs&, INT32& nRest, const FORMULA_TYPE eFT = FT_CellFormula );
+
+ void GetDummy( const ScTokenArray*& );
+ const ScTokenArray* GetBoolErr( BoolError );
+ BOOL GetShrFmla( const ScTokenArray*&, INT32& rRestbytes );
+
+ static BOOL SetCurVal( ScFormulaCell& rCell, double& rCurVal );
+ // return = TRUE -> String-Record folgt!
+ static void SetError( ScFormulaCell& rCell, const ConvErr eErr );
+
+ static inline BOOL IsComplColRange( const UINT16 nCol1, const UINT16 nCol2 );
+ static inline BOOL IsComplRowRange( const UINT16 nRow1, const UINT16 nRow2 );
+
+ void SetComplCol( ComplRefData& );
+ void SetComplRow( ComplRefData& );
+};
+
+
+inline void ExcelToSc::DoDefArgs( UINT16 nIndex )
+{
+ DoMulArgs( IndexToToken( nIndex ), IndexToAnzahl( nIndex ) );
+}
+
+
+inline BOOL ExcelToSc::IsComplColRange( const UINT16 nCol1, const UINT16 nCol2 )
+{
+ return ( nCol1 == 0x00 ) && ( nCol2 == 0xFF );
+}
+
+
+inline BOOL ExcelToSc::IsComplRowRange( const UINT16 nRow1, const UINT16 nRow2 )
+{
+ return ( ( nRow1 & 0x3FFF ) == 0x0000 ) && ( ( nRow2 & 0x3FFF ) == 0x3FFF );
+}
+
+
+
+
+class ExcelToSc8 : public ExcelToSc
+{
+ void ExcRelToScRel( UINT16 nRow, UINT16 nCol, SingleRefData&,
+ const BOOL bName );
+public:
+ ExcelToSc8( RootData* pRD, SvStream& aStr, const UINT16& rOrgTab );
+ virtual ~ExcelToSc8();
+
+ virtual ConvErr Convert( const ScTokenArray*&, INT32& nRest, const FORMULA_TYPE eFT = FT_CellFormula );
+
+ virtual ConvErr Convert( _ScRangeListTabs&, INT32& nRest, const FORMULA_TYPE eFT = FT_CellFormula );
+
+ static inline BOOL IsComplRowRange( const UINT16 nRow1, const UINT16 nRow2 );
+
+ BOOL GetAbsRefs( SvStream& rStream, INT32& rRest, ScRangeList& rRangeList );
+};
+
+
+inline BOOL ExcelToSc8::IsComplRowRange( const UINT16 nRow1, const UINT16 nRow2 )
+{
+ return ( nRow1 == 0x0000 ) && ( nRow2 == 0xFFFF );
+}
+
+
+
+
+
+#endif
diff --git a/sc/source/filter/inc/excimp8.hxx b/sc/source/filter/inc/excimp8.hxx
new file mode 100644
index 000000000000..dfa373aee5d7
--- /dev/null
+++ b/sc/source/filter/inc/excimp8.hxx
@@ -0,0 +1,963 @@
+/*************************************************************************
+ *
+ * $RCSfile: excimp8.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+#ifndef _EXCIMP8_HXX
+#define _EXCIMP8_HXX
+
+
+#ifndef _IMP_OP_HXX
+#include "imp_op.hxx"
+#endif
+#ifndef _ROOT_HXX
+#include "root.hxx"
+#endif
+#ifndef _EXCSST_HXX
+#include "excsst.hxx"
+#endif
+#ifndef _FLTTOOLS_HXX
+#include "flttools.hxx"
+#endif
+#ifndef _EXCSCEN_HXX
+#include "excscen.hxx"
+#endif
+#ifndef _EXCPIVOT_HXX
+#include "excpivot.hxx"
+#endif
+#ifndef _EXCDEFS_HXX
+#include "excdefs.hxx"
+#endif
+
+#ifndef _LIST_HXX
+#include <tools/list.hxx>
+#endif
+#ifndef _MSDFFIMP_HXX
+#include <svx/msdffimp.hxx>
+#endif
+#include <string.h>
+
+
+struct ClientAnchorData;
+class FilterProgressBar;
+class PosBuffer;
+class ExcEscherObjList;
+class ExcChart;
+class ScBaseCell;
+class SvStorage;
+class DffRecordHeader;
+struct DffObjData;
+class ScRangeList;
+
+class ScConditionalFormat;
+class ExcEscherTxo;
+
+class ScDBData;
+
+
+class Biff8MSDffManager : public SvxMSDffManager, protected ExcRoot
+{
+private:
+ PosBuffer& rPosBuff;
+ ExcEscherObjList& rEscherObjList;
+protected:
+ virtual void ProcessClientAnchor2( SvStream&, DffRecordHeader&, void*, DffObjData& );
+ virtual SdrObject* ProcessObj( SvStream&, DffObjData&, void* pData, Rectangle& rTextRect,
+ SdrObject* pObj = NULL );
+ virtual ULONG Calc_nBLIPPos( ULONG nOrgVal, ULONG nStreamPos ) const;
+ virtual FASTBOOL GetColorFromPalette( USHORT nNum, Color& ) const;
+ virtual BOOL ShapeHasText( ULONG nShapeId, ULONG nFilePos ) const;
+public:
+ Biff8MSDffManager(
+ RootData* pRootData,
+ PosBuffer& rPosBuffer,
+ ExcEscherObjList& rEscherObjList,
+ SvStream& rStCtrl,
+ long nOffsDgg,
+ SvStream* pStData,
+ SdrModel* pSdrModel_ = 0,
+ long nApplicationScale = 0,
+ ColorData mnDefaultColor_ = COL_DEFAULT,
+ ULONG nDefaultFontHeight_ = 24,
+ SvStream* pStData2_ = 0);
+ virtual ~Biff8MSDffManager();
+};
+
+
+
+
+class TxoCont
+{
+private:
+ friend class ImportExcel8;
+ friend class ExcEscherTxo;
+
+ String* pText;
+ EditTextObject* pFormText;
+ UINT16 nTextLen;
+ UINT16 nFormCnt;
+ UINT16 nStepCount;
+
+ void ReadTxo( SvStream& );
+ void ReadCont( SvStream&, RootData&, ScEditEngineDefaulter& );
+public:
+ inline TxoCont( void );
+ virtual ~TxoCont();
+
+ inline BOOL HasText( void ) const;
+ inline const String* GetText( void ) const;
+
+ inline BOOL HasFormText( void ) const;
+ inline const EditTextObject* GetTextObject( void ) const;
+
+ inline BOOL IsComplete( void ) const;
+
+ void Clear( void );
+};
+
+
+
+
+class PosBuffer : protected List
+{
+private:
+protected:
+public:
+ virtual ~PosBuffer();
+ void Append( const UINT32 nStartRange, const UINT32 nEndRange,
+ const UINT32 nObjNum, const UINT16 nTabNum );
+ BOOL GetObjNum( const UINT32 nPos, UINT32& rObjNum );
+
+ BOOL SetAnchorData( const UINT32 nPos, ClientAnchorData* );
+ const ClientAnchorData* GetAnchorData( const UINT32 nObjNum ) const;
+
+ List::Count;
+};
+
+
+
+
+struct ClientAnchorData
+{
+ UINT32 nObjNum;
+
+ UINT16 nTab;
+ UINT16 nCol;
+ UINT16 nX;
+ UINT16 nRow;
+ UINT16 nY;
+ UINT16 nDCol;
+ UINT16 nDX;
+ UINT16 nDRow;
+ UINT16 nDY;
+
+ inline ClientAnchorData( void );
+ inline ClientAnchorData( const ClientAnchorData& );
+};
+
+
+
+
+enum OBJECTTYPE
+{
+ OT_UNKNOWN = 0,
+ OT_CHART,
+ OT_PICTURE,
+ OT_TXO,
+ OT_NOTE,
+ OT_OLE
+};
+
+
+
+class ExcEscherObj : public ExcRoot
+{
+private:
+ friend class ExcEscherObjList;
+protected:
+ UINT32 nStrPosStart;
+ UINT32 nStrPosEnd;
+ UINT16 nTab;
+ UINT16 nId;
+ Rectangle* pAnchor;
+ SdrObject* pSdrObj;
+public:
+ ExcEscherObj( const UINT32 nStrPosStart, const UINT32 nStrPosEnd,
+ const UINT16 nT, RootData* );
+ ExcEscherObj( ExcEscherObj& rCopy );
+ // !ACHTUNG: pSdrObj von rCopy wandert nach this!
+ // rCopy.pSdrObj ist danach NULL!!!
+ virtual ~ExcEscherObj();
+
+ inline void SetId( UINT16 );
+ inline UINT16 GetId( void ) const;
+
+ virtual OBJECTTYPE GetObjType( void ) const;
+
+ void SetAnchor( const Rectangle& );
+
+ inline const Rectangle* GetAnchor( void ) const;
+
+ virtual void SetObj( SdrObject* );
+ inline const SdrObject* GetObj( void ) const;
+
+ virtual void Apply( void );
+
+ void MorpheFrom( ExcEscherObj*& rp );
+
+ virtual ExcChart* GetChartData( void ); // Special for ExcEscherChart
+ virtual void SetChartData( ExcChart* );
+};
+
+
+
+
+class ExcEscherChart : public ExcEscherObj
+{
+private:
+protected:
+ ExcChart* pChrtData;
+public:
+ ExcEscherChart( ExcEscherObj*& rp );
+ virtual ~ExcEscherChart();
+
+ virtual OBJECTTYPE GetObjType( void ) const;
+
+ virtual ExcChart* GetChartData( void );
+ virtual void SetChartData( ExcChart* );
+
+ virtual void Apply( void );
+};
+
+
+
+
+class ExcEscherOle : public ExcEscherObj
+{
+private:
+ String aStorageName;
+ UINT32 nBlipId;
+ BOOL bAsSymbol : 1;
+ BOOL bLinked : 1;
+protected:
+public:
+ ExcEscherOle( ExcEscherObj*& rpCopyAndDel );
+ virtual ~ExcEscherOle();
+
+ virtual OBJECTTYPE GetObjType( void ) const;
+ virtual void Apply( void );
+
+ inline void SetAsSymbol( BOOL bVal ) { bAsSymbol = (bVal != 0); }
+ inline void SetLinked( BOOL bVal ) { bLinked = (bVal != 0); }
+ inline void SetBlipId( UINT32 nVal ) { nBlipId = nVal; }
+
+ void ReadPictFmla( SvStream&, UINT16 nLen );
+ void CreateSdrOle( Biff8MSDffManager& );
+};
+
+
+
+
+class ExcEscherDrwObj : public ExcEscherObj
+{
+private:
+protected:
+ SdrObject* pSdrObj;
+public:
+ ExcEscherDrwObj( ExcEscherObj*& rp );
+ virtual ~ExcEscherDrwObj();
+
+ virtual OBJECTTYPE GetObjType( void ) const;
+};
+
+
+
+
+class ExcEscherTxo : public ExcEscherObj
+{
+private:
+protected:
+ String* pText;
+ EditTextObject* pFormText;
+ BOOL bIsApplied;
+
+ void ApplyTextOnObject( SdrObject* pSdrObj = NULL );
+public:
+ ExcEscherTxo( ExcEscherObj*& rp );
+ virtual ~ExcEscherTxo();
+
+ virtual OBJECTTYPE GetObjType( void ) const;
+
+ virtual void SetObj( SdrObject* );
+
+ void SetText( const String& );
+ inline const String* GetText( void ) const;
+
+ void TakeTxo( TxoCont& );
+
+ virtual void Apply( void );
+ void Apply( SdrObject* );
+ // also set bIsApplied, but doesn't put on drawing layer!
+};
+
+
+
+
+class ExcEscherNote : public ExcEscherTxo
+{
+private:
+protected:
+public:
+ ExcEscherNote( ExcEscherObj*& rp );
+ virtual OBJECTTYPE GetObjType( void ) const;
+ virtual void Apply( void );
+};
+
+
+
+
+class ExcEscherObjList : protected List, protected ExcRoot
+{
+private:
+ UINT32 nLastReqTabStart;
+ UINT16 nLastReqTab;
+
+ BOOL SetTabStart( const UINT16 nNewTab );
+protected:
+ PosBuffer& rPosBuffer;
+public:
+ ExcEscherObjList( PosBuffer&, RootData* );
+ virtual ~ExcEscherObjList();
+
+ void Append( ExcEscherObj* );
+ void MorpheLastObj( ExcEscherObj* );
+
+ inline const ExcEscherObj* First( void );
+ inline const ExcEscherObj* Next( void );
+ const ExcEscherObj* Get( const UINT32 nObjNum, const UINT16 nTab = 0xFFFF ) const;
+ ExcEscherTxo* GetTxo( const UINT32 nObjNum, const UINT16 nTab = 0xFFFF ) const;
+
+ void SetData( const UINT32 nObjNum, SdrObject* pDrawObj );
+ void SetData( const UINT32 nObjNum, const Rectangle& rAnchor );
+ void SetData( const UINT32 nObjNum, const Rectangle& rAnchor,
+ SdrObject* pDrawObj );
+
+ List::Count;
+
+ void Apply( void );
+};
+
+
+
+
+class ExcCondForm : protected ExcRoot//, List
+{
+ private:
+ UINT16 nTab;
+ UINT16 nNumOfConds;
+ UINT16 nCondCnt;
+ UINT16 nCol;
+ UINT16 nRow;
+// UINT16 nRow2;
+// UINT16 nCol2;
+ ScRangeList* pRangeList;
+
+ ScConditionalFormat* pScCondForm;
+ protected:
+ public:
+ ExcCondForm( /*const UINT16 nTab, */RootData* pRootData );
+ virtual ~ExcCondForm();
+
+ void Read( SvStream& rIn );
+ void ReadCf( SvStream& rIn, const UINT16 nRecLen,
+ ExcelToSc& rFormConverter );
+ void Apply( void );
+};
+
+
+
+
+class ExcCondFormList : protected List
+{
+ private:
+ protected:
+ public:
+ virtual ~ExcCondFormList();
+ inline void Append( ExcCondForm* pNew );
+
+ void Apply( void );
+};
+
+struct ExcStreamNode
+{
+ sal_uInt32 nPos;
+ sal_uInt32 nSize;
+ ExcStreamNode* pPrev;
+};
+
+class ExcStreamConsumer
+{
+ sal_uInt32 nBytesLeft;
+ SvStream* pStrm;
+ ExcStreamNode* pNode;
+ DffRecordHeader aHd;
+
+ void UpdateNode( const DffRecordHeader& rHd );
+ void RemoveNode();
+
+ public :
+
+ const DffRecordHeader* Consume( SvStream* pStrm, sal_uInt32 nLen ); // owns stream if nLen != 0
+ sal_Bool AppendData( sal_Char* pBuf, sal_uInt32 nLen );
+ SvStream* GetStream() const { return pStrm; };
+
+ ExcStreamConsumer();
+ ~ExcStreamConsumer();
+};
+
+class ImportExcel8 : public ImportExcel
+{
+ protected:
+ static String aSstErrTxt;
+
+ SharedStringTable aSharedStringTable;
+
+ ExcStreamConsumer aExcStreamConsumer;
+ PosBuffer aPosBuffer;
+
+ ExcChart* pActChart;
+
+ ExcEscherObj* pActEscherObj;
+ BOOL bLeadingTxo;
+ BOOL bMaybeTxo;
+ BOOL bTabStartDummy;
+ BOOL bCond4EscherCont;
+ BOOL bLeadingObjRec;
+ ExcEscherObjList aEscherObjList;
+
+ TxoCont* pActTxo;
+
+ ExcScenarioList aScenList;
+
+ PivotTableList aPivotTabList;
+ PivotTable* pCurrPivTab;
+ PivotCache* pCurrPivotCache;
+
+ ExcCondForm* pActCondForm;
+ ExcCondFormList* pCondFormList;
+
+ BOOL bHasBasic;
+
+ void Formula( void ); // 0x06
+ void RecString( void ); // 0x07
+ void Verticalpagebreaks( void ); // 0x1A
+ void Horizontalpagebreaks( void ); // 0x1B
+ void Note( void ); // 0x1C
+ void Format( void ); // 0x1E
+ void Externsheet( void ); // 0x17
+ void Externname( void ); // 0x23
+ void Font( void ); // 0x31
+ void Cont( const UINT16 nLenRecord );// 0x3C
+ void Dconref( void ); // 0x51
+ void Xct( void ); // 0x59
+ void Crn( void ); // 0x5A
+ void Obj( const UINT32 nLimitPos ); // 0x5D
+ void Boundsheet( void ); // 0x85
+ void FilterMode( void ); // 0x9B
+ void AutoFilterInfo( void ); // 0x9D
+ void AutoFilter( void ); // 0x9E
+ void Scenman( void ); // 0xAE
+ UINT32 Scenario( const UINT16 nLenRecord );
+ void SXView( void ); // 0xB0
+ void SXVd( void ); // 0xB1
+ void SXVi( void ); // 0xB2
+ void SXIvd( void ); // 0xB4
+ void SXLi( void ); // 0xB5
+ void SXPi( void ); // 0xB6
+ void SXDi( void ); // 0xC5
+ void SXIdStm( void ); // 0xD5
+ void Xf( void ); // 0xE0
+ void SXVs( void ); // 0xE3
+ void Cellmerging( void ); // 0xE5 geraten...
+ UINT32 Msodrawinggroup( const UINT32 nLenRecord ); // 0xEB
+ // liefert Pos vom Folgerecord
+ void Msodrawing( const UINT32 nLenRecord ); // 0xEC
+ void Msodrawingselection( const UINT32 nLenRecord ); // 0xED
+ void SXRule( void ); // 0xF0
+ void SXEx( void ); // 0xF1
+ void SXFilt( void ); // 0xF2
+ void SXSelect( void ); // 0xF7
+ UINT32 Sst( void ); // 0xFC
+ // liefert Pos vom Folgerecord
+ ScBaseCell* CreateCellFromShStrTabEntry( const ShStrTabEntry*,
+ const UINT16 nXF );
+ void Labelsst( void ); // 0xFD
+ void SXVdex( void ); // 0x0100
+ void Label( void ); // 0x0204
+
+ void Supbook( void ); // 0x01AE
+ void Condfmt( void ); // 0x01B0
+ void Cf( void ); // 0x01B1
+ void Dval( void ); // 0x01B2
+ void Txo( void ); // 0x01B6
+ void Codename( BOOL bWBGlobals ); // 0x01BA
+ void Dv( void ); // 0x01BE
+ void Hlink( void );
+ String* ReadFileHlink( void );
+ String* ReadURLHlink( void );
+ void Dimensions( void ); // 0x0200
+ void Name( void ); // 0x0218
+ void Style( void );
+
+ void ChartScl( void ); // 0x00A0
+ void ChartChart( void ); // 0x1002
+ void ChartSeries( void ); // 0x1003 changed from Biff5
+ void ChartDataformat( void ); // 0x1006
+ void ChartLineformat( void ); // 0x1007
+ void ChartMarkerformat( void ); // 0x1009
+ void ChartAreaformat( void ); // 0x100A
+ void ChartPieformat( void ); // 0x100B
+ void ChartAttachedlabel( void ); // 0x100C
+ void ChartSeriestext( void ); // 0x100D
+ void ChartLegend( void ); // 0x1015
+ void ChartBar( void ); // 0x1017
+ void ChartLine( void ); // 0x1018
+ void ChartPie( void ); // 0x1019
+ void ChartArea( void ); // 0x101A
+ void ChartScatter( void ); // 0x101B
+ void ChartAxis( void ); // 0x101D
+ void ChartTick( void ); // 0x101E
+ void ChartValuerange( void ); // 0x101F
+ void ChartAxislineformat( void ); // 0x1021
+ void ChartDefaulttext( void ); // 0x1024
+ void ChartText( void ); // 0x1025
+ void ChartFontx( void ); // 0x1026
+ void ChartObjectlink( void ); // 0x1027
+ void ChartFrame( void ); // 0x1032
+ void Chart3D( void ); // 0x103A
+ void ChartPicf( void ); // 0x103C
+ void ChartDropbar( void ); // 0x103D
+ void ChartRadar( void ); // 0x103E
+ void ChartSurface( void ); // 0x103F
+ void ChartAxisparent( void ); // 0x1041
+ void ChartShtprops( void ); // 0x1044
+ void ChartSertocrt( void ); // 0x1045
+ void ChartAxesused( void ); // 0x1046
+ void ChartIfmt( void ); // 0x104E
+ void ChartAi( void ); // 0x1051 (ChartSelection)
+ void ChartAi_2_Series( void ); // 0x1051 (ChartSelection)
+ void ChartSerfmt( void ); // 0x105D
+ void Chart3DDataformat( void ); // 0x105F
+ void ChartFbi( void ); // 0x1060 new to Biff8
+ void ChartBoppop( void ); // 0x1061
+ void ChartAxcext( void ); // 0x1062
+ void ChartDat( void ); // 0x1063
+ void ChartPlotgrowth( void ); // 0x1064
+ void ChartSiindex( void ); // 0x1065
+ void ChartGelframe( void ); // 0x1066
+ void ChartBoppcustom( void ); // 0x1067
+
+ // Subrecords fuer OBJ (nach Obj( void )
+ ExcEscherObj* ObjFtCmo( void ); // 0x15
+ void ObjFtPioGrbit( ExcEscherObj* pObj ); // 0x08
+ void ObjFtPictFmla( ExcEscherObj* pObj, UINT16 nLen ); // 0x09
+
+ void Formula( UINT16 nCol, UINT16 nRow, UINT16 nTab,
+ UINT16 nXF, UINT16 nFormLen, double &rCurVal,
+ BYTE nFlag, BOOL bShrFmla );
+ // -> excform8.cxx
+ virtual void GetHFString( String& rStr );
+ void EndSheet( void );
+ virtual void EndAllChartObjects( void ); // -> excobj.cxx
+ void EndChartObj( void );
+ virtual void PostDocLoad( void );
+
+ virtual FltError ReadChart8( FilterProgressBar&, const UINT32 nLimitPos,
+ const BOOL bOwnTab );
+ // -> read.cxx
+ SvMemoryStream* CreateContinueStream(
+ const UINT16 nBaseRecordLen, // Laenge vom Start-Record
+ UINT32& rSummaryLen, // rueck: Laenge vom Memory Stream
+ UINT32& rNextPureRecord,
+ const BOOL bForceSingle = FALSE, // erzeugt Memory-Stream auch bei Single-Record
+ UINT32List* pCutPosList = NULL // opt. Liste mit Streampos (im Mem-Stream) der
+ // Schnittstellen
+ );
+ // rueck: neue Pos naechster Rec
+ // muss mit aIn-Pos direkt am Record-Body-Anfang gerufen werden
+ // return = NULL -> normaler Record, weitermachen wie gewohnt
+ // return != NULL -> statt aIn Memory-Stream verwenden und nach Gebrauch
+ // selbst zerstoeren, Pos von aIn ist dann UNDEFINIERT
+ void InsertHyperlink( const UINT16 nCol, const UINT16 nRow,
+ const String& rURL );
+ String ReadWString( UINT16 nAnzBytes, const BOOL bDecBytesLeft = FALSE );
+ String ReadCString( UINT16 nAnzBytes, const BOOL bDecBytesLeft = FALSE );
+ inline ExcChart* GetActChartData( void );
+ public:
+ ImportExcel8(
+ SvStorage* pStorage,
+ SvStream& aStream,
+ ScDocument* pDoc,
+ SvStorage* pPivotCache );
+
+ virtual ~ImportExcel8( void );
+
+ virtual FltError Read( void );
+};
+
+
+
+
+struct Xti
+{
+ UINT16 nSupbook; // Index auf suported external book
+ UINT16 nFirst; // first sheet tab
+ UINT16 nLast; // last sheet tab
+};
+
+
+
+
+class XtiBuffer : protected List
+{
+ private:
+ protected:
+ public:
+ virtual ~XtiBuffer();
+ void Read( SvStream& rIn, UINT32 nNumOfEntries, INT32& rBytesLeft );
+ inline const Xti* Get( const UINT32 nIndex ) const;
+};
+
+
+
+
+class SupbookE : protected List
+{
+ private:
+ String aFileName;
+ BOOL bSelf;
+ UINT16 nCurrScTab;
+
+ public:
+ SupbookE( SvStream& rIn, INT32& rBytesLeft, RootData& rExcRoot );
+ virtual ~SupbookE();
+
+ BOOL IsValid( const UINT16 nExcTabNum ) const;
+ inline BOOL IsExternal( void ) const;
+ inline const String& GetName( void ) const;
+ UINT16 GetScTabNum( const UINT16 nExcTabNum ) const;
+
+ inline void SetCurrScTab( const UINT16 nExcTabNum );
+ inline UINT16 GetCurrScTab( void );
+ inline BOOL HasValidScTab( void );
+};
+
+
+
+
+class SupbookBuffer : protected List
+{
+ private:
+ protected:
+ public:
+ virtual ~SupbookBuffer();
+
+ inline void Append( SupbookE* pNewSupbook );
+ inline const SupbookE* Get( const UINT32 nIndex ) const;
+};
+
+
+
+//___________________________________________________________________
+// classes AutoFilterData, AutoFilterBuffer
+
+class AutoFilterData : private ExcRoot
+{
+private:
+ ScDBData* pCurrDBData;
+ ScQueryParam aParam;
+ UINT16 nFirstEmpty;
+ BOOL bHasDropDown;
+ BOOL bHasConflict;
+
+ void CreateFromDouble( String& rStr, double fVal );
+ void SetCellAttribs();
+ void InsertQueryParam();
+
+protected:
+public:
+ AutoFilterData( RootData* pRoot, const ScRange& rRange,
+ const String& rName );
+
+ inline UINT16 Tab() const { return aParam.nTab; }
+ inline UINT16 StartCol() const { return aParam.nCol1; }
+ inline UINT16 StartRow() const { return aParam.nRow1; }
+ inline UINT16 EndCol() const { return aParam.nCol2; }
+ inline UINT16 EndRow() const { return aParam.nRow2; }
+ BOOL HasDropDown( UINT16 nCol, UINT16 nRow, UINT16 nTab ) const;
+
+ void ReadAutoFilter( SvStream& rStrm, INT32& nLeft );
+
+ void SetAdvancedRange( const ScRange* pRange );
+ void SetExtractPos( const ScAddress& rAddr );
+ void Apply();
+};
+
+
+class AutoFilterBuffer : private List
+{
+private:
+ inline AutoFilterData* _First() { return (AutoFilterData*) List::First(); }
+ inline AutoFilterData* _Next() { return (AutoFilterData*) List::Next(); }
+
+ inline void Append( AutoFilterData* pData )
+ { List::Insert( pData, LIST_APPEND ); }
+protected:
+public:
+ virtual ~AutoFilterBuffer();
+
+ void Insert( RootData* pRoot, const ScRange& rRange,
+ const String& rName );
+ void AddAdvancedRange( const ScRange& rRange );
+ void AddExtractPos( const ScRange& rRange );
+ void Apply();
+
+ AutoFilterData* GetByTab( UINT16 nTab );
+ BOOL HasDropDown( UINT16 nCol, UINT16 nRow, UINT16 nTab );
+};
+
+
+
+
+//___________________________________________________________________
+// inlines
+
+inline ClientAnchorData::ClientAnchorData( void )
+{
+ memset( this, 0x00, sizeof( ClientAnchorData ) );
+}
+
+
+inline ClientAnchorData::ClientAnchorData( const ClientAnchorData& r )
+{
+ memcpy( this, &r, sizeof( ClientAnchorData ) );
+}
+
+
+
+
+inline void ExcEscherObj::SetId( UINT16 n )
+{
+ nId = n;
+}
+
+inline UINT16 ExcEscherObj::GetId( void ) const
+{
+ return nId;
+}
+
+inline const Rectangle* ExcEscherObj::GetAnchor( void ) const
+{
+ return pAnchor;
+}
+
+
+inline const SdrObject* ExcEscherObj::GetObj( void ) const
+{
+ return pSdrObj;
+}
+
+
+
+
+inline const String* ExcEscherTxo::GetText( void ) const
+{
+ return pText;
+}
+
+
+
+
+inline const ExcEscherObj* ExcEscherObjList::First( void )
+{
+ return ( const ExcEscherObj* ) List::First();
+}
+
+
+inline const ExcEscherObj* ExcEscherObjList::Next( void )
+{
+ return ( const ExcEscherObj* ) List::Next();
+}
+
+
+
+
+inline TxoCont::TxoCont( void )
+{
+ pText = NULL;
+ pFormText = NULL;
+ Clear();
+}
+
+
+inline BOOL TxoCont::HasText( void ) const
+{
+ return pText != NULL;
+}
+
+
+inline const String* TxoCont::GetText( void ) const
+{
+ return pText;
+}
+
+
+inline BOOL TxoCont::HasFormText( void ) const
+{
+ return pFormText != NULL;
+}
+
+
+inline const EditTextObject* TxoCont::GetTextObject( void ) const
+{
+ return pFormText;
+}
+
+
+inline BOOL TxoCont::IsComplete( void ) const
+{
+ return nStepCount > 2;
+}
+
+
+
+
+inline BOOL SupbookE::IsExternal( void ) const
+{
+ return !bSelf;
+}
+
+
+inline const String& SupbookE::GetName( void ) const
+{
+ return aFileName;
+}
+
+
+inline void SupbookE::SetCurrScTab( const UINT16 nExcTabNum )
+{
+ nCurrScTab = GetScTabNum( nExcTabNum );
+}
+
+
+inline UINT16 SupbookE::GetCurrScTab( void )
+{
+ return nCurrScTab;
+}
+
+
+inline BOOL SupbookE::HasValidScTab( void )
+{
+ return nCurrScTab != 0xFFFF;
+}
+
+
+
+
+inline const Xti* XtiBuffer::Get( const UINT32 n ) const
+{
+ return ( const Xti* ) List::GetObject( n );
+}
+
+
+
+
+inline void SupbookBuffer::Append( SupbookE* p )
+{
+ List::Insert( p, LIST_APPEND );
+}
+
+
+inline const SupbookE* SupbookBuffer::Get( const UINT32 n ) const
+{
+ return ( const SupbookE* ) List::GetObject( n );
+}
+
+
+
+
+inline void ExcCondFormList::Append( ExcCondForm* p )
+{
+ List::Insert( p, LIST_APPEND );
+}
+
+
+inline ExcChart* ImportExcel8::GetActChartData( void )
+{
+ if( pActEscherObj )
+ return pActEscherObj->GetChartData();
+ else
+ return NULL;
+}
+
+
+#endif
+
diff --git a/sc/source/filter/inc/excrecds.hxx b/sc/source/filter/inc/excrecds.hxx
new file mode 100644
index 000000000000..ffd9b5b4de4e
--- /dev/null
+++ b/sc/source/filter/inc/excrecds.hxx
@@ -0,0 +1,1695 @@
+/*************************************************************************
+ *
+ * $RCSfile: excrecds.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _EXCRECDS_HXX
+#define _EXCRECDS_HXX
+
+#ifndef SC_OUTLINETAB_HXX
+#include "olinetab.hxx"
+#endif
+#ifndef SC_FILTER_HXX
+#include "filter.hxx"
+#endif
+#ifndef _XFBUFF_HXX
+#include "xfbuff.hxx"
+#endif
+#ifndef _ROOT_HXX
+#include "root.hxx"
+#endif
+#ifndef _FLTTOOLS_HXX
+#include "flttools.hxx"
+#endif
+#ifndef _EXCDEFS_HXX
+#include "excdefs.hxx"
+#endif
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _ZFORLIST_HXX
+#include <svtools/zforlist.hxx>
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+#ifndef _SV_FONTTYPE_HXX //autogen
+#include <vcl/fonttype.hxx>
+#endif
+#ifndef _TOOLS_COLOR_HXX
+#include <tools/color.hxx>
+#endif
+
+//------------------------------------------------------------------ Forwards -
+
+class SvStream;
+class Font;
+class List;
+class ScPatternAttr;
+class ScTokenArray;
+class ScRangeData;
+class ScDBData;
+class ScEditCell;
+class SfxItemSet;
+class EditTextObject;
+class ScPageHFItem;
+class XclRawUnicodeString;
+
+//class ExcRecordList;
+class UsedAttrList;
+
+class ScProgress;
+
+//---------------------------------------------------- class ExcETabNumBuffer -
+// - stores the correct Excel table number for each Calc table
+
+class ExcETabNumBuffer
+{
+private:
+ UINT16 nScCnt;
+ UINT16 nExcCnt;
+ UINT16 nExtCnt;
+ UINT32* pBuffer;
+
+ void ApplyBuffer();
+
+protected:
+public:
+ ExcETabNumBuffer( ScDocument& rDoc );
+ ~ExcETabNumBuffer();
+
+ BOOL IsExternal( UINT16 nScTab ) const;
+ BOOL IsExportTable( UINT16 nScTab ) const;
+ UINT16 GetExcTable( UINT16 nScTab ) const;
+ inline UINT16 GetScTabCount() const { return nScCnt; }
+ inline UINT16 GetExcTabCount() const { return nExcCnt; }
+ inline UINT16 GetExternTabCount() const { return nExtCnt; }
+};
+
+
+
+//----------------------------------------------------------- class ExcRecord -
+
+class ExcRecord
+{
+protected:
+ static const UINT16 nIgnore; // fuer Nichtdokumentiertes
+ virtual void SaveCont( SvStream& );
+ virtual void _Save( SvStream& );
+ // fuer ExcRecord-Daten: ACHTUNG: NICHT UEBERLADEN
+ // ... ausser es werden nNumber und nLen SELBST geschrieben!
+public:
+ virtual ~ExcRecord();
+ virtual UINT16 GetNum( void ) const = 0;
+ virtual UINT16 GetLen( void ) const = 0;
+ virtual void Save( SvStream& );
+};
+
+
+class ExcRecordList : protected List, public ExcRecord
+{
+private:
+protected:
+public:
+ virtual ~ExcRecordList();
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+ virtual void Save( SvStream& );
+
+ inline ExcRecord* First( void ) { return ( ExcRecord* ) List::First(); }
+ inline ExcRecord* Next( void ) { return ( ExcRecord* ) List::Next(); }
+
+ inline void Append( ExcRecord* pNew ) { List::Insert( pNew, LIST_APPEND ); }
+ inline const ExcRecord* Get( UINT32 nNum ) const { return ( ExcRecord* ) List::GetObject( nNum ); }
+
+ List::Count;
+};
+
+
+//--------------------------------------------------------- class ExcEmptyRec -
+
+class ExcEmptyRec : public ExcRecord
+{
+private:
+ virtual void _Save( SvStream& rStrm );
+protected:
+public:
+ virtual void Save( SvStream& rStrm );
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//--------------------------------------------------------- class ExcDummyRec -
+
+class ExcDummyRec : public ExcRecord
+{
+protected:
+public:
+ void Save( SvStream& );
+ virtual UINT16 GetNum( void ) const;
+ virtual const BYTE* GetData( void ) const = 0;
+};
+
+
+//--------------------------------------------------------- class ExcBof_Base -
+
+class ExcBof_Base : public ExcRecord
+{
+private:
+protected:
+ UINT16 nDocType;
+ UINT16 nVers;
+ UINT16 nRupBuild;
+ UINT16 nRupYear;
+public:
+ ExcBof_Base( void );
+};
+
+
+//------------------------------------------------------------- class ExcCell -
+
+class ExcRKMulRK;
+
+class ExcCell : public ExcRecord
+{
+friend ExcRKMulRK;
+protected:
+ ScAddress aPos;
+ UINT16 nXF;
+ static UsedAttrList* pXFRecs; // um zu Attributen zu kommen
+ static UINT32 nCellCount; // zaehlt DOPPELT: im Ctor und SaveCont
+ static ScProgress* pPrgrsBar;
+#ifdef DBG_UTIL
+ friend class ExcDocument;
+ static INT32 _nRefCount;
+#endif
+ // ---------------------------------------------------------------
+ void SaveCont( SvStream& );
+ virtual void SaveDiff( SvStream& );
+ ExcCell( const ScAddress aPos, const ScPatternAttr* pAttr,
+ const ULONG nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND,
+ BOOL bForceAltNumForm = FALSE );
+public:
+ virtual ~ExcCell();
+ void SetXF( UINT16 nNew ) { nXF = nNew; }
+ static void SetXFRecs( UsedAttrList* pXFRecs );
+ static UsedAttrList* GetXFRecs() { return pXFRecs; }
+ inline static void ResetCellCount( void );
+ inline static void IncCellCount( void );
+ inline static UINT32 GetCellCount( void );
+ inline static void SetPrgrsBar( ScProgress& );
+ inline static void ClearPrgrsBar( void );
+};
+
+
+inline void ExcCell::ResetCellCount( void )
+{
+ nCellCount = 0;
+}
+
+
+inline void ExcCell::IncCellCount( void )
+{
+ nCellCount++;
+}
+
+
+inline UINT32 ExcCell::GetCellCount( void )
+{
+ return nCellCount;
+}
+
+
+inline void ExcCell::SetPrgrsBar( ScProgress& rNewBar )
+{
+ ResetCellCount(); // logisch... oder?
+ pPrgrsBar = &rNewBar;
+}
+
+
+inline void ExcCell::ClearPrgrsBar( void )
+{
+ pPrgrsBar = NULL;
+}
+
+
+//-------------------------------------------------------------- class ExcBof -
+// Header Record fuer WORKSHEETS
+
+class ExcBof : public ExcBof_Base
+{
+private:
+ void SaveCont( SvStream& );
+public:
+ ExcBof( void );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//------------------------------------------------------------- class ExcBofW -
+// Header Record fuer WORKBOOKS
+
+class ExcBofW : public ExcBof_Base
+{
+private:
+ void SaveCont( SvStream& );
+public:
+ ExcBofW( void );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//----------------------------------------------------- class ExcFngroupcount -
+
+class ExcFngroupcount : public ExcRecord
+{
+private:
+ void SaveCont( SvStream& );
+public:
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//-------------------------------------------------------------- class ExcEof -
+
+class ExcEof : public ExcRecord
+{
+private:
+public:
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//--------------------------------------------------------- class ExcDummy_00 -
+// von INTERFACEHDR bis FNGROUPCOUNT (siehe excrecds.cxx)
+
+class ExcDummy_00 : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen( void ) const;
+ virtual const BYTE* GetData( void ) const;
+};
+
+
+//-------------------------------------------------------- class ExcDummy_04x -
+// von WINDOWPROTECT bis BOOKBOOL (siehe excrecds.cxx), 1904 ausgespart
+
+class ExcDummy_040 : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen( void ) const;
+ virtual const BYTE* GetData( void ) const;
+};
+
+
+class ExcDummy_041 : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen( void ) const;
+ virtual const BYTE* GetData( void ) const;
+};
+
+
+class Exc1904 : public ExcRecord
+{
+private:
+ BOOL b1904;
+ virtual void SaveCont( SvStream& );
+public:
+ Exc1904( ScDocument& rDoc );
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//------------------------------------------------------------- class ExcFont -
+
+class ExcPalette2;
+
+class ExcFont : public ExcRecord
+{
+private:
+ String sName;
+ UINT16 nNameLen;
+ UINT16 nHeight;
+ UINT16 nAttr; // italic, strikeout, outline, shadow
+ UINT32 nColorSer;
+ UINT16 nWeight;
+ UINT8 nUnder;
+ UINT8 nFamily;
+ UINT8 nCharset;
+ BOOL bIgnoreCol;
+ UINT32 nSign; // quick ==
+ BiffTyp eBiff;
+ static ExcPalette2* pPalette2;
+#ifdef DBG_UTIL
+ static UINT16 nObjCnt;
+#endif
+ // ---------------------------------------------------------------
+ virtual void SaveCont( SvStream& rStrm );
+public:
+ ExcFont( BiffTyp eBiff );
+ ExcFont( Font* pFont, BiffTyp eBiff );
+ ~ExcFont();
+
+ BOOL operator==( const ExcFont& rRef ) const;
+ inline BOOL operator!=( const ExcFont& rRef ) const
+ { return !(*this == rRef); }
+
+ static void SetPalette( ExcPalette2& rPalette2 );
+ void SetName( const String& rName );
+ void SetColor( UINT32 nSerial );
+ inline void SetHeightPt( float fHt ) { nHeight = (UINT16)(fHt * EXC_FONTHGHT_COEFF); }
+ inline void SetHeight( UINT16 nHt ) { nHeight = nHt; }
+ inline void SetItalic( BOOL bItalic ) { if( bItalic ) nAttr |= EXC_FONTATTR_ITALIC; }
+ inline void SetStrikeout( BOOL bStrikeout ) { if( bStrikeout ) nAttr |= EXC_FONTATTR_STRIKEOUT; }
+ inline void SetOutline( BOOL bOutline ) { if( bOutline ) nAttr |= EXC_FONTATTR_OUTLINE; }
+ inline void SetShadow( BOOL bShadow ) { if( bShadow ) nAttr |= EXC_FONTATTR_SHADOW; }
+ inline void SetWeight( FontWeight eWeight ) { nWeight = GetWeight( eWeight ); }
+ inline void SetUnderline( FontUnderline eUnder ) { nUnder = GetUnderline( eUnder ); }
+ inline void SetFamily( FontFamily eFamily ) { nFamily = GetFamily( eFamily ); }
+ inline void SetCharSet( rtl_TextEncoding eCharset ) { nCharset = GetCharSet( eCharset ); }
+
+ inline BOOL HasIgnoreCol() const { return bIgnoreCol; }
+ inline UINT32 GetColor() const { return nColorSer; }
+
+ static UINT16 GetWeight( const FontWeight eWeight );
+ static UINT8 GetUnderline( const FontUnderline eUnder );
+ static UINT8 GetFamily( const FontFamily eFamily );
+ static UINT8 GetCharSet( const rtl_TextEncoding eCharset );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+
+//--------------------------------------------------------- class ExcDummy_01 -
+// Ersatz fuer Default Font Records
+
+class ExcDummy_01: public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen( void ) const;
+ virtual const BYTE* GetData( void ) const;
+};
+
+
+//--------------------------------------------------------- class ExcDummy_Fm -
+// Ersatz fuer Default Format Records
+
+class ExcDummy_Fm : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen( void ) const;
+ virtual const BYTE* GetData( void ) const;
+};
+
+
+//--------------------------------------------------------- class ExcDummy_XF -
+// Ersatz fuer Default XF Records
+
+class ExcDummy_XF : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen( void ) const;
+ virtual const BYTE* GetData( void ) const;
+};
+
+
+//------------------------------------------------------ class ExcDummy_Style -
+// Ersatz fuer Default Style Records
+
+class ExcDummy_Style : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen( void ) const;
+ virtual const BYTE* GetData( void ) const;
+};
+
+
+//------------------------------------------------------ class ExcBundlesheet -
+
+class ExcBundlesheet : public ExcRecord, ExcRoot
+{
+private:
+ UINT32 nStrPos;
+ const String aName;
+ void SaveCont( SvStream& );
+protected:
+ UINT32 nOwnPos; // Position NACH # und Len
+public:
+ ExcBundlesheet( RootData*, const String& rNewName );
+
+ inline void SetStreamPos( const UINT32 nNewStrPos );
+ void UpdateStreamPos( SvStream& );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+inline void ExcBundlesheet::SetStreamPos( const UINT32 nNewStrPos )
+{
+ nStrPos = nNewStrPos;
+}
+
+
+//--------------------------------------------------------- class ExcDummy_02 -
+// in Tabelle: von CALCMODE bis SETUP
+
+class ExcDummy_02 : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen( void ) const;
+ virtual const BYTE* GetData( void ) const;
+};
+
+
+//------------------------------------------------------------- class ExcNote -
+
+class ExcNote : public ExcRecord
+{
+private:
+ ByteString* pText;
+ ScAddress aPos;
+ UINT16 nTextLen;
+ void SaveCont( SvStream& );
+public:
+ ExcNote( const ScAddress, const String& rText, RootData& );
+ virtual ~ExcNote();
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//----------------------------------------------------------- class ExcNumber -
+
+class ExcNumber : public ExcCell
+{
+private:
+ double fVal;
+ //----------------------------------------------------------------
+ void SaveDiff( SvStream& );// statt SaveCont()
+public:
+ ExcNumber( const ScAddress, const ScPatternAttr*, const double& rVal );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//---------------------------------------------------------- class ExcBoolerr -
+
+class ExcBoolerr : public ExcCell
+{
+private:
+ UINT8 nVal;
+ UINT8 bError;
+ //----------------------------------------------------------------
+ void SaveDiff( SvStream& );// statt SaveCont()
+public:
+ ExcBoolerr( const ScAddress, const ScPatternAttr*, UINT8 nVal, BOOL bIsError );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//---------------------------------------------------------- class ExcRKMulRK -
+
+class ExcRKMulRK : private List, public ExcRecord
+{
+private:
+ ScAddress aPos;
+ struct CONT
+ {
+ UINT32 nVal;
+ UINT16 nXF;
+ };
+protected:
+ virtual void SaveCont( SvStream& );
+public:
+ ExcRKMulRK( const ScAddress, const ScPatternAttr*, const INT32 nVal );
+ virtual ~ExcRKMulRK();
+
+ ExcRKMulRK* Extend( const ScAddress rPos,
+ const ScPatternAttr *pAttr,
+ const INT32 nVal );
+ // passt neuer RK an alten 'ran, so ist return = NULL,
+ // ansonsten wird neuer RK zurueckgeliefert
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+
+ inline BOOL IsRK( void ) const;
+ inline BOOL IsMulRK( void ) const;
+};
+
+
+inline BOOL ExcRKMulRK::IsRK( void ) const
+{
+ return List::Count() == 1;
+}
+
+
+inline BOOL ExcRKMulRK::IsMulRK( void ) const
+{
+ return List::Count() > 1;
+}
+
+
+//------------------------------------------------------------ class ExcLabel -
+
+class ExcLabel : public ExcCell
+{
+private:
+ ByteString* pText;
+ UINT16 nTextLen;
+ //----------------------------------------------------------------
+ void SaveDiff( SvStream& );// statt SaveCont()
+public:
+ ExcLabel( const ScAddress, const ScPatternAttr*, const String& rText, RootData& );
+ virtual ~ExcLabel();
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//---------------------------------------------------------- class ExcRichStr
+
+class XclContinue;
+
+// Helferklasse fuer ExcRString und ExcLabel8/XclRichString
+class ExcRichStr
+{
+private:
+ UINT16List aForms; // Form und Pos nacheinander
+ BiffTyp eBiff;
+public:
+ ExcRichStr(
+ ExcCell& rExcCell,
+ String& rText,
+ const ScPatternAttr* pAttr,
+ const ScEditCell& rEdCell,
+ RootData& rRoot,
+ xub_StrLen nMaxChars );
+ ~ExcRichStr();
+
+ inline UINT16 GetFormCount() const;
+
+ // number of bytes to be saved
+ inline UINT32 GetByteCount() const;
+
+ // write list of forms
+ void Write( XclContinue& rCont );
+};
+
+
+inline UINT16 ExcRichStr::GetFormCount() const
+{
+ return (UINT16) Min( aForms.Count() / 2, (eBiff < Biff8 ? UINT32(0xff) : UINT32(0xffff)) );
+}
+
+
+inline UINT32 ExcRichStr::GetByteCount() const
+{
+ return (eBiff < Biff8 ? 2 : 4) * GetFormCount();
+}
+
+
+//---------------------------------------------------------- class ExcRString -
+
+class ExcRString : public ExcCell, ExcRoot
+{
+private:
+ String aText;
+ ExcRichStr* pRichStr;
+ UINT16 nTextLen;
+ //----------------------------------------------------------------
+ void SaveDiff( SvStream& );// statt SaveCont()
+public:
+ ExcRString(
+ RootData* pRootData,
+ const ScAddress aPos,
+ const ScPatternAttr* pAttr,
+ const ScEditCell& rEdCell );
+ virtual ~ExcRString();
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//---------------------------------------------------------- class ExcFormula -
+
+class ExcFormula : public ExcCell
+{
+private:
+// double fCurVal;
+ sal_Char* pData;
+ UINT16 nFormLen;
+ //----------------------------------------------------------------
+ void SaveDiff( SvStream& );// statt SaveCont()
+public:
+ ExcFormula( RootData *pRD,
+ const ScAddress rPos,
+ const ScPatternAttr *pAttr,
+ const ULONG nAltNumForm,
+ BOOL bForceAltNumForm,
+// const double &rCurVal,
+ const ScTokenArray& rCode );
+ ~ExcFormula();
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//---------------------------------------------------- class ExcBlankMulblank -
+
+class ExcBlankMulblank : public ExcCell, private List
+{
+private:
+ UINT16 nLastCol;
+ BOOL bMulBlank;
+ UINT16 nLen;
+
+ inline void* MakeEntry( const UINT16 nXF, const UINT16 nAnz );
+ inline UINT16 GetXF( const void* );
+ inline UINT16 GetAnz( const void* );
+ void SaveDiff( SvStream& );// statt SaveCont()
+public:
+ ExcBlankMulblank(
+ const ScAddress rPos,
+ const ScPatternAttr* pFirstAttr,
+ UINT16 nFirstAnz );
+ void Add( const ScPatternAttr* pAttr, const UINT16 nAnz );
+ inline UINT16 GetLastCol( void ) const;
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+inline void* ExcBlankMulblank::MakeEntry( const UINT16 nXF, const UINT16 nAddAnz )
+{
+ return ( void* ) ( ( UINT32 ) nXF + ( ( ( UINT32 ) nAddAnz ) << 16 ) );
+}
+
+
+inline UINT16 ExcBlankMulblank::GetXF( const void *nEntry )
+{
+ return ( UINT16 ) ( UINT32 ) nEntry;
+}
+
+
+inline UINT16 ExcBlankMulblank::GetAnz( const void* nEntry )
+{
+ return ( UINT16 ) ( ( ( UINT32 ) nEntry ) >> 16 );
+}
+
+
+inline UINT16 ExcBlankMulblank::GetLastCol( void ) const
+{
+ return nLastCol;
+}
+
+
+
+
+class ExcNameListEntry : public ExcRecord
+{
+private:
+protected:
+public:
+ virtual ~ExcNameListEntry();
+ virtual UINT16 GetNum( void ) const;
+};
+
+
+
+
+//------------------------------------------------------------- class ExcName -
+
+class ExcName : public ExcNameListEntry, ExcRoot
+{
+private:
+ String aName;
+ UINT8* pData;
+ UINT16 nFormLen;
+ UINT16 nTabNum;
+ BOOL bHidden;
+ BOOL bBuiltIn;
+ BOOL bDummy;
+ BiffTyp eBiff;
+ //----------------------------------------------------------------
+ void Init( BOOL bHid = FALSE, BOOL bBIn = FALSE );
+ void BuildFormula( const ScRange& rRange );
+ void SaveCont( SvStream& );
+public:
+ ExcName( RootData* pRD, ScRangeData* pRange );
+ ExcName( RootData* pRD, ScDBData* pArea );
+ ExcName( RootData* pRD, const ScRange& rRange,
+ UINT8 nBuiltIn, BOOL bHid = FALSE );
+ ~ExcName();
+
+// virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+ virtual void Save( SvStream& );
+
+ inline BOOL IsDummy( void ) const;
+};
+
+
+inline BOOL ExcName::IsDummy( void ) const
+{
+ return bDummy;
+}
+
+
+
+
+//--------------------------------------------------------- class ExcNameList -
+
+class ExcNameList : public ExcEmptyRec, private List
+{
+private:
+ inline ExcNameListEntry* _First() { return (ExcNameListEntry*) List::First(); }
+ inline ExcNameListEntry* _Next() { return (ExcNameListEntry*) List::Next(); }
+
+protected:
+ virtual void _Save( SvStream& rStrm );
+ virtual void SaveCont( SvStream& rStrm );
+public:
+ virtual ~ExcNameList();
+
+ inline void Append( ExcNameListEntry* pName )
+ { List::Insert( pName, LIST_APPEND ); }
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//--------------------------------------------------------- class ExcDummy_03 -
+// in Tabelle: SELECTION
+
+class ExcDummy_03 : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen( void ) const;
+ virtual const BYTE* GetData( void ) const;
+};
+
+
+//------------------------------------------------------- class ExcDimensions -
+
+class ExcDimensions : public ExcRecord
+{
+private:
+ UINT16 nRwMic;
+ UINT16 nRwMac;
+ UINT16 nColMic;
+ UINT16 nColMac;
+ BiffTyp eBiff;
+ void SaveCont( SvStream& );
+public:
+ ExcDimensions( BiffTyp );
+ ExcDimensions( UINT16 nFirstCol, UINT16 nFirstRow,
+ UINT16 nLastCol, UINT16 nLastRow, BiffTyp );
+ void SetLimits( UINT16 nFirstCol, UINT16 nFirstRow,
+ UINT16 nLastCol, UINT16 nLastRow );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//--------------------------------------------------------- class ExcEOutline -
+
+class ExcEOutline
+{
+private:
+ ScOutlineArray* pOLArray;
+ UINT16 nCurrExcLevel;
+ BOOL bIsColl;
+ UINT16 nEnd[ SC_OL_MAXDEPTH ];
+ BOOL bHidden[ SC_OL_MAXDEPTH ];
+
+protected:
+public:
+ ExcEOutline( ScOutlineArray* pArray );
+
+ void Update( UINT16 nNum );
+
+ inline BOOL IsCollapsed() const { return bIsColl; }
+ inline UINT16 GetLevel() const
+ { return Min( nCurrExcLevel, (UINT16) EXC_OUTLINE_MAX ); }
+};
+
+
+//------------------------------------------------------------ class ExcEGuts -
+
+class ExcEGuts : public ExcRecord
+{
+private:
+ UINT16 nRowLevel;
+ UINT16 nColLevel;
+
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ ExcEGuts( ScOutlineArray* pCol, ScOutlineArray* pRow );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+//-------------------------------------------------------------- class ExcRow -
+
+class ExcRow : public ExcRecord
+{
+private:
+ UINT16 nNum;
+ UINT16 nFirstCol;
+ UINT16 nLastCol;
+ UINT16 nHeight;
+ UINT16 nOptions;
+ UINT16 nXF;
+ BOOL bDefHeight;
+
+ void SetRange( UINT16 nFCol, UINT16 nLCol );
+ void SetHeight( UINT16 nNewHeight, BOOL bUser );
+
+ void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ ExcRow( UINT16 nNum, UINT16 nTab, UINT16 nFCol, UINT16 nLCol,
+ UINT16 nXF, ScDocument& rDoc, ExcEOutline& rOutline );
+
+ inline BOOL IsDefault();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+inline BOOL ExcRow::IsDefault()
+{
+ return (TRUEBOOL( nHeight & EXC_ROW_FLAGDEFHEIGHT ) && !nOptions);
+}
+
+
+
+class ExcRowBlock : public ExcRecord
+{
+private:
+ ExcRow** ppRows; // 32 Rows en Block
+ UINT16 nNext;
+
+protected:
+public:
+ ExcRowBlock();
+ ~ExcRowBlock();
+
+ virtual void Save( SvStream& rOut );
+
+ ExcRowBlock* Append( ExcRow* pNewRow );
+ // liefert neuen Block, wenn alter voll, ansonsten NULL
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+//------------------------------------------------------ class ExcDefcolwidth -
+
+class ExcDefcolwidth : public ExcRecord
+{
+private:
+ UINT16 nWidth;
+ void SaveCont( SvStream& );
+public:
+ ExcDefcolwidth( UINT16 nDefColWidth );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//---------------------------------------------------------- class ExcColinfo -
+
+class ExcColinfo : public ExcRecord
+{
+private:
+ UINT16 nFirstCol;
+ UINT16 nLastCol;
+ UINT16 nColWidth;
+ UINT16 nXF;
+ UINT16 nOptions;
+ //----------------------------------------------------------------
+ void SaveCont( SvStream& );
+public:
+ ExcColinfo( UINT16 nCol, UINT16 nTab, UINT16 nXF,
+ ScDocument& rDoc, ExcEOutline& rOutline );
+ void SetWidth( UINT16 nWidth );
+
+ BOOL Expand( ExcColinfo* pExp );
+ // wenn sich this mit pExp erweitern laesst, wird pExp
+ // GELOESCHT, return = TRUE!, ansonsten muss pExp als
+ // Neuer eingefuegt werden wenn return = FALSE
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//--------------------------------------------------------------- class ExcXf -
+
+class ExcXf : public ExcRecord
+{
+protected:
+ static ExcPalette2* pPalette2;
+
+ UINT16 nIfnt;
+ UINT16 nIfmt;
+
+ UINT16 nOffs8;
+
+ UINT32 nIcvForeSer;
+ UINT32 nIcvBackSer;
+ UINT16 nFls;
+
+ UINT32 nIcvTopSer;
+ UINT32 nIcvBotSer;
+ UINT32 nIcvLftSer;
+ UINT32 nIcvRigSer;
+
+ UINT16 nDgTop;
+ UINT16 nDgBottom;
+ UINT16 nDgLeft;
+ UINT16 nDgRight;
+
+ ExcHorizAlign eAlc;
+ ExcVertAlign eAlcV;
+ ExcTextOrient eOri;
+ BOOL bFWrap;
+ BOOL bFSxButton;
+
+ BOOL bStyle;
+
+ BOOL bAtrNum;
+ BOOL bAtrFnt;
+ BOOL bAtrAlc;
+ BOOL bAtrBdr;
+ BOOL bAtrPat;
+ BOOL bAtrProt;
+
+#ifdef DBG_UTIL
+ static UINT16 nObjCnt;
+#endif
+ //----------------------------------------------------------------
+ virtual void SaveCont( SvStream& );
+public:
+ ExcXf( UINT16 nFont, UINT16 nForm, const ScPatternAttr*, BOOL& rbLineBreak,
+ BOOL bStyle = FALSE );
+ // rbLineBreak = TRUE erzwingt Wrap,
+ // return von rbLineBreak enthaelt immer tatsaechliches Wrap
+#ifdef DBG_UTIL
+ virtual ~ExcXf();
+#endif
+
+ static void SetPalette( ExcPalette2& rPalette2 );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+
+ static void ScToExcBorderLine( const SvxBorderLine*, UINT32& rIcvSer, UINT16& rDg );
+};
+
+
+//----------------------------------------------------------- class ExcFormat -
+
+class UsedFormList;
+class SvNumberFormatter;
+
+class ExcFormat : public ExcRecord, ExcRoot
+{
+private:
+ friend UsedFormList;
+
+ UINT16 nIndex; // Excel-Index
+ UINT32 nScIndex; // ...
+ String* pForm;
+ BYTE nFormLen;
+ BiffTyp eBiff;
+ static SvNumberFormatter* pFormatter;
+ static UINT32 nObjCnt;
+ //----------------------------------------------------------------
+ void SaveCont( SvStream& );
+public:
+ ExcFormat( RootData*, UINT32 nScIndex );
+ virtual ~ExcFormat();
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+
+//--------------------------------------------------------- class ExcPalette2 -
+// a new class for PALETTE record, supports color reduction
+
+class ExcPal2Entry : private Color
+{
+private:
+ UINT32 nSerial;
+ UINT32 nWeight;
+
+protected:
+public:
+ inline ExcPal2Entry( const Color& rCol, UINT32 nSer );
+
+ Color::GetRed;
+ Color::GetGreen;
+ Color::GetBlue;
+ Color::GetColor;
+ inline UINT32 GetSerial() const { return nSerial; }
+ inline UINT32 GetWeighting() const { return nWeight; }
+ inline BOOL IsGreater( const Color& rCol ) const;
+ inline BOOL IsEqual( const Color& rCol ) const;
+
+ void UpdateEntry( UINT16 nColorType );
+ inline void AddWeighting( const ExcPal2Entry& rEntry );
+ void AddColor( const ExcPal2Entry& rEntry );
+
+ void Save( SvStream& rStrm );
+};
+
+inline ExcPal2Entry::ExcPal2Entry( const Color& rCol, UINT32 nSer ) :
+ Color( rCol ),
+ nSerial( nSer ),
+ nWeight( 0 )
+{ }
+
+inline BOOL ExcPal2Entry::IsGreater( const Color& rCol ) const
+{
+ return mnColor > rCol.GetColor();
+}
+
+inline BOOL ExcPal2Entry::IsEqual( const Color& rCol ) const
+{
+ return mnColor == rCol.GetColor();
+}
+
+inline void ExcPal2Entry::AddWeighting( const ExcPal2Entry& rEntry )
+{
+ nWeight += rEntry.GetWeighting();
+}
+
+
+
+class ExcPalette2 : private List, public ExcRecord
+{
+private:
+ ColorBuffer& rColBuff; // defaults
+ UINT32 nLastInd;
+ UINT32 nMaxSerial;
+ UINT32* pColorIndex;
+ Color* pColors;
+
+ inline ExcPal2Entry* _First() { return (ExcPal2Entry*) List::First(); }
+ inline ExcPal2Entry* _Next() { return (ExcPal2Entry*) List::Next(); }
+ inline ExcPal2Entry* _Get( UINT32 nIndex ) const;
+
+ void SearchEntry( const Color& rCol, UINT32& nIndex, BOOL& bIsEqual ) const;
+ ExcPal2Entry* CreateEntry( const Color& rCol, UINT32 nIndex );
+ void RecalcColorIndex( UINT32 nKeep, UINT32 nRemove );
+ void MergeColors( UINT32 nKeep, UINT32 nRemove );
+ UINT32 GetRemoveColor() const;
+ INT32 GetNearColors( const Color& rCol, UINT32& rFirst, UINT32& rSecond ) const;
+ UINT32 GetNearestColor( const Color& rCol, UINT32 nIgnore ) const;
+ UINT32 GetNearestColor( UINT32 nIndex ) const;
+
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ ExcPalette2( ColorBuffer& rCB );
+ virtual ~ExcPalette2();
+
+ UINT32 InsertColor( const Color& rCol, UINT16 nColorType );
+ UINT32 InsertIndex( UINT16 nIndex );
+ void ReduceColors();
+ UINT16 GetColorIndex( const Color& rCol ) const;
+ UINT16 GetColorIndex( UINT32 nSerial ) const;
+ void GetMixedColors( UINT32 nForeSer, UINT32 nBackSer,
+ UINT16& rForeInd, UINT16& rBackInd, UINT16& rPatt ) const;
+ ColorData GetRGBValue( UINT16 nIndex ) const;
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+inline ExcPal2Entry* ExcPalette2::_Get( UINT32 nIndex ) const
+{
+ return (ExcPal2Entry*) List::GetObject( nIndex );
+}
+
+
+
+//------------------------------------------------------ class ExcExterncount -
+
+class ExcExterncount : public ExcRecord, ExcRoot
+{
+private:
+ //----------------------------------------------------------------
+ void SaveCont( SvStream& );
+ BOOL bTable;
+public:
+ ExcExterncount( RootData*, const BOOL bTable );
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//------------------------------------------------------ class ExcExternsheet -
+
+class ExcExternsheet : public ExcRecord, ExcRoot
+{
+private:
+ String aTabName;
+ //----------------------------------------------------------------
+ void SaveCont( SvStream& );
+public:
+ ExcExternsheet( RootData* pRD, const UINT16 nTabNum );
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//-------------------------------------------------- class ExcExternsheetList -
+
+class ExcExternsheetList : public ExcRecord, protected List
+{
+private:
+protected:
+ virtual void _Save( SvStream& );
+public:
+ virtual ~ExcExternsheetList();
+ inline void Add( ExcExternsheet* pNew ) { List::Insert( pNew, LIST_APPEND ); }
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//-------------------------------------------------------- class ExcExternDup -
+
+class ExcExternDup : public ExcRecord
+{
+private:
+ ExcExterncount& rExtCnt;
+ ExcExternsheetList& rExtSheetList;
+protected:
+ virtual void _Save( SvStream& );
+public:
+ ExcExternDup( ExcExterncount&, ExcExternsheetList& );
+ ExcExternDup( const ExcExternDup& );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//---------------------------------------------------------- class ExcWindow2 -
+
+class ExcWindow2 : public ExcRecord
+{
+private:
+ UINT16 nTable;
+ //----------------------------------------------------------------
+ void SaveCont( SvStream& );
+public:
+ ExcWindow2( UINT16 nTable );
+ inline UINT16 GetTable() const { return nTable; }
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//------------------------------------------------------------ class UsedList -
+
+class UsedList : public List, public ExcRecord
+{
+private:
+ virtual void SaveCont( SvStream& );
+protected:
+ void _Save( SvStream& );
+ // musste ueberladen werden, da sonst nicht
+ // ohne Inhalt geschrieben werden kann!
+ UINT16 nBaseIndex;
+ UINT16 nLen;
+public:
+ UsedList( void );
+ void SetBaseIndex( UINT16 nNewVal );
+ // um auf richtigen Excel-Index 'trimmen'
+ // zu koennen
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+//-------------------------------------------------------- class UsedFontList -
+
+class UsedFontList : public UsedList
+{
+private:
+ BiffTyp eBiff;
+
+ inline ExcFont* _First() { return (ExcFont*) List::First(); }
+ inline ExcFont* _Next() { return (ExcFont*) List::Next(); }
+
+public:
+ UsedFontList( BiffTyp eBiff );
+ virtual ~UsedFontList();
+
+ BOOL Find( ExcFont* pExcFont, UINT16& rIndex );
+ UINT16 Add( ExcFont* pExcFont );
+ UINT16 Add( Font* pFont );
+
+ virtual UINT16 GetNum( void ) const;
+};
+
+
+//-------------------------------------------------------- class UsedFormList -
+
+class UsedFormList : public UsedList
+{
+private:
+public:
+ ~UsedFormList();
+ UINT16 Add( ExcFormat* pFormat );
+
+ virtual UINT16 GetNum( void ) const;
+};
+
+
+//-------------------------------------------------------- class UsedAttrList -
+// entspricht einer Ansammlung XF-Records
+
+class UsedAttrList : public UsedList, ExcRoot
+{
+private:
+ struct ENTRY
+ {
+ const ScPatternAttr* pPattAttr;
+ ExcXf* pXfRec;
+ BOOL bLineBreak;
+ ULONG nAltNumForm;
+
+ inline ENTRY( void ) : nAltNumForm( NUMBERFORMAT_ENTRY_NOT_FOUND ) {}
+
+ inline BOOL Equal( const ScPatternAttr* p, const ULONG n ) const
+ {
+ return pPattAttr == p && nAltNumForm == n;
+ }
+ };
+
+ ExcPalette2& rPalette2;
+ UsedFontList& rFntLst;
+ UsedFormList& rFrmLst;
+ void SaveCont( SvStream& ); // ... ueberladen, da List
+ // nicht direkt ExcRecord-Pointer enthaelt!
+ void AddNewXF( const ScPatternAttr* pAttr,
+ const BOOL bStyle, const BOOL bExplLineBreak,
+ const ULONG nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND,
+ BOOL bForceAltNumForm = FALSE );
+public:
+ UsedAttrList( RootData* pRD, ExcPalette2&,
+ UsedFontList&, UsedFormList& );
+ virtual ~UsedAttrList();
+ UINT16 Find( const ScPatternAttr* pSearch, const BOOL bStyle = FALSE,
+ const ULONG nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND,
+ BOOL bForceAltNumForm = FALSE );
+ UINT16 FindWithLineBreak( const ScPatternAttr* pSearch );
+
+ virtual UINT16 GetNum( void ) const;
+};
+
+
+
+
+class ExcSetup : public ExcRecord
+{
+private:
+ UINT16 nPaperSize;
+ UINT16 nScale;
+ UINT16 nPageStart;
+ UINT16 nGrbit;
+
+ void SaveCont( SvStream& );
+public:
+ ExcSetup( RootData* );
+
+ virtual UINT16 GetNum( void ) const;
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+
+
+class ExcHeaderFooter : public ExcRecord, ExcRoot
+{
+protected:
+ String aFormatString;
+ UINT16 nLen;
+ BOOL bUnicode;
+ virtual void _Save( SvStream& );
+ String GetFormatString( USHORT nWhich );
+ String GetFormatString( const ScPageHFItem& );
+ String GetFormatString( const EditTextObject& );
+public:
+ ExcHeaderFooter( RootData*, const BOOL bUnicode );
+
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+
+
+class ExcHeader : public ExcHeaderFooter
+{
+protected:
+public:
+ ExcHeader( RootData*, const BOOL bUnicode );
+
+ virtual UINT16 GetNum( void ) const;
+};
+
+
+
+
+class ExcFooter : public ExcHeaderFooter
+{
+protected:
+public:
+ ExcFooter( RootData*, const BOOL bUnicode );
+
+ virtual UINT16 GetNum( void ) const;
+};
+
+
+
+
+class ExcBoolRecord : public ExcRecord
+{
+ // stores BOOL as 16bit val ( 0x0000 | 0x0001 )
+private:
+ void SaveCont( SvStream& );
+ BOOL bVal;
+public:
+ inline ExcBoolRecord( const BOOL bDefault ) : bVal( bDefault ) {}
+ ExcBoolRecord( SfxItemSet*, USHORT nWhich, BOOL bDefault );
+
+ virtual UINT16 GetLen( void ) const;
+};
+
+
+
+
+class ExcPrintheaders : public ExcBoolRecord
+{
+private:
+public:
+ ExcPrintheaders( SfxItemSet* );
+
+ virtual UINT16 GetNum( void ) const;
+};
+
+
+
+
+class ExcPrintGridlines : public ExcBoolRecord
+{
+private:
+public:
+ ExcPrintGridlines( SfxItemSet* );
+
+ virtual UINT16 GetNum( void ) const;
+};
+
+
+
+
+class ExcHcenter : public ExcBoolRecord
+{
+private:
+public:
+ ExcHcenter( SfxItemSet* );
+
+ virtual UINT16 GetNum( void ) const;
+};
+
+
+
+
+class ExcVcenter : public ExcBoolRecord
+{
+private:
+public:
+ ExcVcenter( SfxItemSet* );
+
+ virtual UINT16 GetNum( void ) const;
+};
+
+
+
+//___________________________________________________________________
+// AutoFilter
+
+class ExcFilterMode : public ExcRecord
+{
+private:
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+
+class ExcAutoFilterInfo : public ExcRecord
+{
+private:
+ UINT16 nCount;
+
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ inline ExcAutoFilterInfo( UINT16 nC ) { nCount = nC; }
+ virtual ~ExcAutoFilterInfo();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+
+class ExcFilterCondition
+{
+private:
+ UINT8 nType;
+ UINT8 nOper;
+ double fVal;
+ XclRawUnicodeString* pText;
+
+protected:
+public:
+ ExcFilterCondition();
+ ~ExcFilterCondition();
+
+ inline BOOL IsEmpty() const { return (nType == EXC_AFTYPE_NOTUSED); }
+ inline BOOL HasEqual() const { return (nOper == EXC_AFOPER_EQUAL); }
+ UINT16 GetTextBytes() const;
+
+ void SetCondition( UINT8 nTp, UINT8 nOp, double fV, String* pT );
+
+ void Save( SvStream& rStrm );
+ void SaveText( SvStream& rStrm );
+};
+
+
+
+class ExcAutoFilter : public ExcRecord
+{
+private:
+ UINT16 nCol;
+ UINT16 nFlags;
+ ExcFilterCondition aCond[ 2 ];
+
+ BOOL AddCondition( ScQueryConnect eConn, UINT8 nType,
+ UINT8 nOp, double fVal, String* pText,
+ BOOL bSimple = FALSE );
+
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ ExcAutoFilter( UINT16 nC );
+
+ inline UINT16 GetCol() const { return nCol; }
+ inline BOOL HasCondition() const { return !aCond[ 0 ].IsEmpty(); }
+ inline BOOL HasTop10() const { return TRUEBOOL( nFlags & EXC_AFFLAG_TOP10 ); }
+
+ BOOL AddEntry( RootData& rRoot, const ScQueryEntry& rEntry );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+
+class ExcAutoFilterRecs : private List, public ExcEmptyRec
+{
+private:
+ ExcFilterMode* pFilterMode;
+ ExcAutoFilterInfo* pFilterInfo;
+
+ inline ExcAutoFilter* _First() { return (ExcAutoFilter*) List::First(); }
+ inline ExcAutoFilter* _Next() { return (ExcAutoFilter*) List::Next(); }
+ ExcAutoFilter* GetByCol( UINT16 nCol ); // always 0-based
+
+ BOOL IsFiltered( UINT16 nCol );
+
+ void DeleteList();
+ inline void Append( ExcAutoFilter* pFilter )
+ { List::Insert( pFilter, LIST_APPEND ); }
+ void AddObjRecs( RootData& rRoot, const ScAddress& rPos, UINT16 nCols );
+protected:
+public:
+ ExcAutoFilterRecs( RootData& rRoot, UINT16 nTab );
+ virtual ~ExcAutoFilterRecs();
+
+ virtual void Save( SvStream& rStrm );
+};
+
+
+
+
+class ExcMargin : public ExcRecord
+{
+private:
+ UINT16 nVal;
+ UINT16 nId;
+
+ virtual void SaveCont( SvStream& rStrm );
+protected:
+public:
+ ExcMargin( long nMargin, IMPEXC_MARGINSIDE eSide );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+
+
+#endif
diff --git a/sc/source/filter/inc/excscen.hxx b/sc/source/filter/inc/excscen.hxx
new file mode 100644
index 000000000000..963600f77990
--- /dev/null
+++ b/sc/source/filter/inc/excscen.hxx
@@ -0,0 +1,183 @@
+/*************************************************************************
+ *
+ * $RCSfile: excscen.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+#ifndef _EXCSCEN_HXX
+#define _EXCSCEN_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _LIST_HXX
+#include <tools/list.hxx>
+#endif
+
+
+struct RootData;
+
+
+
+
+class ExcScenarioCell
+{
+private:
+ String aValue;
+public:
+ const UINT16 nCol;
+ const UINT16 nRow;
+
+ ExcScenarioCell( const UINT16 nC, const UINT16 nR );
+ void SetValue( const String& rVal );
+ inline const String& GetValue( void ) const;
+};
+
+
+
+
+class ExcScenario : protected List
+{
+private:
+ friend class ExcScenarioList;
+protected:
+ String* pName;
+ String* pComment;
+ String* pUserName;
+
+ const UINT16 nTab;
+
+ void Apply( ScDocument& rDoc, const BOOL bLast = FALSE );
+public:
+ ExcScenario( SvStream& rIn, const RootData& rRoot );
+ virtual ~ExcScenario();
+};
+
+
+
+
+class ExcScenarioList : protected List
+{
+private:
+ UINT16 nLastScenario;
+ inline ExcScenario* _First( void ) { return ( ExcScenario* ) List::First(); }
+ inline ExcScenario* _Next( void ) { return ( ExcScenario* ) List::Next(); }
+ inline ExcScenario* _Last( void ) { return ( ExcScenario* ) List::Last(); }
+ inline ExcScenario* _Prev( void ) { return ( ExcScenario* ) List::Prev(); }
+protected:
+public:
+ inline ExcScenarioList( void );
+ virtual ~ExcScenarioList();
+
+ inline void Append( ExcScenario* pNew );
+
+ inline void SetLast( const UINT16 nIndex4Last );
+
+ inline const ExcScenario* First( void );
+ inline const ExcScenario* Next( void );
+
+ List::Count;
+
+ void Apply( ScDocument& rDoc );
+};
+
+
+
+
+inline const String& ExcScenarioCell::GetValue( void ) const
+{
+ return aValue;
+}
+
+
+
+
+inline ExcScenarioList::ExcScenarioList( void )
+{
+ nLastScenario = 0;
+}
+
+
+inline void ExcScenarioList::Append( ExcScenario* p )
+{
+ List::Insert( p, LIST_APPEND );
+}
+
+
+inline const ExcScenario* ExcScenarioList::First( void )
+{
+ return ( const ExcScenario* ) List::First();
+}
+
+
+inline const ExcScenario* ExcScenarioList::Next( void )
+{
+ return ( const ExcScenario* ) List::Next();
+}
+
+
+inline void ExcScenarioList::SetLast( const UINT16 n )
+{
+ nLastScenario = n;
+}
+
+
+#endif
+
diff --git a/sc/source/filter/inc/exp_op.hxx b/sc/source/filter/inc/exp_op.hxx
new file mode 100644
index 000000000000..70e03047f9a5
--- /dev/null
+++ b/sc/source/filter/inc/exp_op.hxx
@@ -0,0 +1,160 @@
+/*************************************************************************
+ *
+ * $RCSfile: exp_op.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _EXP_OP_HXX
+#define _EXP_OP_HXX
+
+#ifndef SC_FILTER_HXX
+#include "filter.hxx"
+#endif
+
+#ifndef _ROOT_HXX
+#include "root.hxx"
+#endif
+
+class ScDocument;
+class ScPatternAttr;
+class ScFormulaCell;
+class ExcDocument;
+
+
+class ExportTyp
+{
+protected:
+ SvStream& aOut; // Ausgabe-Stream
+ ScDocument* pD; // Dokument
+ CharSet eZielChar; // Ziel-Zeichensatz
+public:
+ ExportTyp( SvStream& aStream, ScDocument* pDoc, CharSet eDest ):
+ aOut( aStream )
+ {
+ eZielChar = eDest;
+ pD = pDoc;
+ }
+
+ virtual FltError Write() = 0;
+};
+
+
+
+
+class ExportWK1 : public ExportTyp
+{
+private:
+ BYTE GenFormByte( const ScPatternAttr& );
+ void Bof();
+ void Eof();
+ void Calcmode();
+ void Calcorder();
+ void Split();
+ void Sync();
+ void Dimensions();
+ void Window1();
+ void Colw();
+ void Blank( const UINT16 nC, const UINT16 nR, const ScPatternAttr& );
+ void Number( const UINT16 nC, const UINT16 nR, const double f, const ScPatternAttr& );
+ void Label( const UINT16 nC, const UINT16 nR, const String&, const ScPatternAttr& );
+ void Formula( const UINT16 nC, const UINT16 nR, const ScFormulaCell*, const ScPatternAttr& );
+ void Protect();
+ void Footer();
+ void Header();
+ void Margins();
+ void Labelfmt();
+ void Calccount();
+ void Cursorw12();
+ void WKString( const UINT16 nC, const UINT16 nR, const ScFormulaCell*, const ScPatternAttr& );
+ void Snrange();
+ void Hidcol();
+ void Cpi();
+public:
+ inline ExportWK1( SvStream& r, ScDocument* p, CharSet e ) :
+ ExportTyp( r, p, e ) {};
+
+ FltError Write();
+};
+
+
+
+
+class ExportBiff5 : public ExportTyp, public ExcRoot
+{
+private:
+ ExcDocument* pExcDoc;
+public:
+ ExportBiff5( SvStorage&, SvStream&, ScDocument*, CharSet eDest );
+ virtual ~ExportBiff5();
+ FltError Write();
+};
+
+
+
+
+class ExportBiff8 : public ExportBiff5
+{
+public:
+ ExportBiff8( SvStorage&, SvStream&, ScDocument*, CharSet eDest, BOOL bStoreRel );
+ virtual ~ExportBiff8();
+};
+
+
+#endif
+
+
diff --git a/sc/source/filter/inc/expbase.hxx b/sc/source/filter/inc/expbase.hxx
new file mode 100644
index 000000000000..6baa695b8c45
--- /dev/null
+++ b/sc/source/filter/inc/expbase.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: expbase.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_EXPBASE_HXX
+#define SC_EXPBASE_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+
+class SvStream;
+class ScFieldEditEngine;
+
+class ScExportBase
+{
+public:
+#if defined UNX || defined MAC
+ static const sal_Char __FAR_DATA sNewLine;
+#else
+ static const sal_Char __FAR_DATA sNewLine[];
+#endif
+
+protected:
+
+ SvStream& rStrm;
+ ScRange aRange;
+ ScDocument* pDoc;
+ SvNumberFormatter* pFormatter;
+ ScFieldEditEngine* pEditEngine;
+
+public:
+
+ ScExportBase( SvStream&, ScDocument*, const ScRange& );
+ virtual ~ScExportBase();
+
+ // Hidden Cols/Rows an den Raendern trimmen,
+ // return: TRUE wenn Bereich vorhanden
+ // Start/End/Col/Row muessen gueltige Ausgangswerte sein
+ BOOL TrimDataArea( USHORT nTab, USHORT& nStartCol,
+ USHORT& nStartRow, USHORT& nEndCol, USHORT& nEndRow ) const;
+
+ // Ausgabebereich einer Tabelle ermitteln,
+ // Hidden Cols/Rows an den Raendern beruecksichtigt,
+ // return: TRUE wenn Bereich vorhanden
+ BOOL GetDataArea( USHORT nTab, USHORT& nStartCol,
+ USHORT& nStartRow, USHORT& nEndCol, USHORT& nEndRow ) const;
+
+ // Tabelle nicht vorhanden oder leer
+ BOOL IsEmptyTable( USHORT nTab ) const;
+
+ ScFieldEditEngine& GetEditEngine() const;
+
+};
+
+
+#endif // SC_EXPBASE_HXX
+
diff --git a/sc/source/filter/inc/filt_pch.hxx b/sc/source/filter/inc/filt_pch.hxx
new file mode 100644
index 000000000000..caa4acf54e3e
--- /dev/null
+++ b/sc/source/filter/inc/filt_pch.hxx
@@ -0,0 +1,377 @@
+/*************************************************************************
+ *
+ * $RCSfile: filt_pch.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// ItemID-Defines etc. muessen immer ganz vorne stehen
+
+#include "scitems.hxx"
+#include "eetext.hxx"
+
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#define _ZFORLIST_DECLARE_TABLE
+
+#define SC_PROGRESS_CXX
+
+// ab hier automatisch per makepch generiert
+// folgende duerfen nicht aufgenommen werden:
+// ...
+
+#include <tools/solar.h>
+#include <tools/string.hxx>
+#include <rtl/textenc.h>
+#include <sal/types.h>
+#include <sal/config.h>
+#include <rtl/textcvt.h>
+#include <rtl/string.hxx>
+#include <rtl/string.h>
+#include <rtl/ustring.h>
+#include <rtl/memory.h>
+#include <rtl/macros.hxx>
+#include <rtl/ustring.hxx>
+#include <rtl/ustring>
+#include <rtl/locale.hxx>
+#include <rtl/locale.h>
+#include <tools/contnr.hxx>
+#include <tools/lang.hxx>
+#include <tools/list.hxx>
+#include <global.hxx>
+#include <tools/stream.hxx>
+#include <tools/errinf.hxx>
+#include <tools/rtti.hxx>
+#include <tools/errcode.hxx>
+#include <tools/ref.hxx>
+#include <tools/link.hxx>
+#include <tools/debug.hxx>
+#include <tools/time.hxx>
+#include <tools/date.hxx>
+#include <svtools/svarray.hxx>
+#include <tools/intn.hxx>
+#include <vcl/sv.h>
+#include <vcl/timer.hxx>
+#include <tools/gen.hxx>
+#include <vcl/color.hxx>
+#include <tools/color.hxx>
+#include <filter.hxx>
+#include <rangelst.hxx>
+#include <osl/types.h>
+#include <osl/mutex.h>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Any.h>
+#include <cppu/macros.hxx>
+#include <uno/lbnames.h>
+#include <uno/any2.h>
+#include <uno/data.h>
+#include <typelib/typedescription.h>
+#include <typelib/uik.h>
+#include <typelib/typeclass.h>
+#include <com/sun/star/uno/Type.h>
+#include <com/sun/star/uno/TypeClass.hdl>
+#include <com/sun/star/uno/Type.hxx>
+#include <osl/mutex.hxx>
+#include <osl/macros.hxx>
+#include <com/sun/star/uno/genfunc.hxx>
+#include <com/sun/star/uno/genfunc.h>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/uno/XInterface.hdl>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/uno/RuntimeException.hdl>
+#include <com/sun/star/uno/Exception.hdl>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/uno/Exception.hpp>
+#include <svtools/hint.hxx>
+#include <svtools/poolitem.hxx>
+#include <document.hxx>
+#include <vcl/prntypes.hxx>
+#include <table.hxx>
+#include <column.hxx>
+#include <markarr.hxx>
+#include <root.hxx>
+#include <flttypes.hxx>
+#include <svtools/solar.hrc>
+#include <sfx2/sfxsids.hrc>
+#include <svtools/cntwids.hrc>
+#include <sfx2/cntids.hrc>
+#include <tools/mempool.hxx>
+#include <compiler.hxx>
+#include <compiler.hrc>
+#include <sfx2/sfx.hrc>
+#include <scitems.hxx>
+#include <svx/svxids.hrc>
+#include <svtools/itemset.hxx>
+#include <svtools/memberid.hrc>
+#include <tools/table.hxx>
+#include <flttools.hxx>
+#include <vcl/vclenum.hxx>
+#include <vcl/resid.hxx>
+#include <tools/resid.hxx>
+#include <vcl/rc.hxx>
+#include <tools/rc.hxx>
+#include <tools/resmgr.hxx>
+#include <tools/fract.hxx>
+#include <vcl/bitmap.hxx>
+#include <vcl/mapmod.hxx>
+#include <vcl/mapunit.hxx>
+#include <vcl/region.hxx>
+#include <svtools/lstner.hxx>
+#include <patattr.hxx>
+#include <vcl/font.hxx>
+#include <vcl/gdiobj.hxx>
+#include <svtools/cenumitm.hxx>
+#include <svtools/eitem.hxx>
+#include <svtools/intitem.hxx>
+#include <svtools/cintitem.hxx>
+#include <svtools/brdcst.hxx>
+#include <sot/sotref.hxx>
+#include <tools/globname.hxx>
+#include <sot/factory.hxx>
+#include <sot/object.hxx>
+#include <sot/sotdata.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/alpha.hxx>
+#include <vcl/gdimtf.hxx>
+#include <tools/unqidx.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/animate.hxx>
+#include <vcl/graph.h>
+#include <vcl/gfxlink.hxx>
+#include <rsc/rscsfx.hxx>
+#include <vcl/wall.hxx>
+#include <vcl/settings.hxx>
+#include <vcl/accel.hxx>
+#include <vcl/keycod.hxx>
+#include <vcl/keycodes.hxx>
+#include <namebuff.hxx>
+#include <tools/shl.hxx>
+#include <tools/pstm.hxx>
+#include <so3/iface.hxx>
+#include <so3/factory.hxx>
+#include <so3/so2ref.hxx>
+#include <so3/so2dll.hxx>
+#include <svx/fhgtitem.hxx>
+#include <xfbuff.hxx>
+#include <vos/types.hxx>
+#include <vos/object.hxx>
+#include <vos/macros.hxx>
+#include <tools/unqid.hxx>
+#include <com/sun/star/uno/Sequence.h>
+#include <uno/sequence2.h>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <attrib.hxx>
+#include <svtools/zforlist.hxx>
+#include <svx/fontitem.hxx>
+#include <com/sun/star/lang/XEventListener.hpp>
+#include <com/sun/star/lang/XEventListener.hdl>
+#include <com/sun/star/lang/EventObject.hdl>
+#include <com/sun/star/lang/EventObject.hpp>
+#include <vcl/outdev.hxx>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/PropertyValue.hdl>
+#include <com/sun/star/beans/PropertyState.hdl>
+#include <com/sun/star/beans/PropertyState.hpp>
+#include <collect.hxx>
+#include <vcl/window.hxx>
+#include <vcl/pointr.hxx>
+#include <vcl/ptrstyle.hxx>
+#include <vcl/wintypes.hxx>
+#include <vcl/inputctx.hxx>
+#include <vcl/event.hxx>
+#include <sot/dtrans.hxx>
+#include <tools/ownlist.hxx>
+#include <vcl/cmdevt.hxx>
+#include <vcl/fonttype.hxx>
+#include <cell.hxx>
+#include <osl/interlck.h>
+#include <sfx2/sfxuno.hxx>
+#include <colrowst.hxx>
+#include <com/sun/star/util/URL.hpp>
+#include <com/sun/star/util/URL.hdl>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hdl>
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#include <com/sun/star/lang/XSingleServiceFactory.hdl>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/lang/XTypeProvider.hdl>
+#include <cppuhelper/typeprovider.hxx>
+#include <rtl/uuid.h>
+#include <cppuhelper/queryinterface.hxx>
+#include <cppuhelper/factory.hxx>
+#include <uno/dispatcher.h>
+#include <com/sun/star/registry/XRegistryKey.hpp>
+#include <com/sun/star/registry/XRegistryKey.hdl>
+#include <com/sun/star/registry/InvalidRegistryException.hdl>
+#include <com/sun/star/registry/InvalidValueException.hdl>
+#include <com/sun/star/registry/RegistryKeyType.hdl>
+#include <com/sun/star/registry/RegistryValueType.hdl>
+#include <com/sun/star/registry/InvalidRegistryException.hpp>
+#include <com/sun/star/registry/InvalidValueException.hpp>
+#include <com/sun/star/registry/RegistryKeyType.hpp>
+#include <com/sun/star/registry/RegistryValueType.hpp>
+#include <sot/storage.hxx>
+#include <so3/so2defs.hxx>
+#include <tools/datetime.hxx>
+#include <osl/thread.h>
+#include <imp_op.hxx>
+#include <otlnbuff.hxx>
+#include <tokstack.hxx>
+#include <com/sun/star/container/NoSuchElementException.hdl>
+#include <com/sun/star/container/NoSuchElementException.hpp>
+#include <vcl/svapp.hxx>
+#include <vos/thread.hxx>
+#include <vos/runnable.hxx>
+#include <vos/refernce.hxx>
+#include <vcl/apptypes.hxx>
+#include <svx/editdata.hxx>
+#include <svx/editeng.hxx>
+#include <com/sun/star/lang/WrappedTargetException.hdl>
+#include <com/sun/star/lang/WrappedTargetException.hpp>
+#include <sfx2/shell.hxx>
+#include <tools/stack.hxx>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XComponent.hdl>
+#include <svx/svxenum.hxx>
+#include <formel.hxx>
+#include <so3/svstor.hxx>
+#include <com/sun/star/container/XElementAccess.hdl>
+#include <com/sun/star/container/XElementAccess.hpp>
+#include <svtools/itempool.hxx>
+#include <svx/eeitem.hxx>
+#include <rangenam.hxx>
+#include <vcl/syswin.hxx>
+#include <svtools/smplhint.hxx>
+#include <fontbuff.hxx>
+#include <vcl/ctrl.hxx>
+#include <vcl/field.hxx>
+#include <vcl/spinfld.hxx>
+#include <vcl/edit.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/combobox.h>
+#include <vcl/fldunit.hxx>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XFrame.hdl>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/XWindow.hdl>
+#include <com/sun/star/awt/Rectangle.hdl>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/XFocusListener.hpp>
+#include <com/sun/star/awt/XFocusListener.hdl>
+#include <com/sun/star/awt/FocusEvent.hdl>
+#include <com/sun/star/awt/FocusEvent.hpp>
+#include <com/sun/star/awt/XKeyListener.hpp>
+#include <com/sun/star/awt/XKeyListener.hdl>
+#include <com/sun/star/awt/KeyEvent.hdl>
+#include <com/sun/star/awt/InputEvent.hdl>
+#include <com/sun/star/awt/KeyEvent.hpp>
+#include <com/sun/star/awt/InputEvent.hpp>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/XMouseListener.hdl>
+#include <com/sun/star/awt/MouseEvent.hdl>
+#include <com/sun/star/awt/MouseEvent.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hdl>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/XPaintListener.hdl>
+#include <com/sun/star/awt/PaintEvent.hdl>
+#include <com/sun/star/awt/PaintEvent.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/awt/XWindowListener.hdl>
+#include <com/sun/star/awt/WindowEvent.hdl>
+#include <com/sun/star/awt/WindowEvent.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/frame/XController.hdl>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/frame/XModel.hdl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.hdl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
+#include <so3/persist.hxx>
+#include <com/sun/star/container/XIndexAccess.hdl>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <excrecds.hxx>
+#include <scerrors.hxx>
+#include <docpool.hxx>
+#include <svx/msdffimp.hxx>
+#include <com/sun/star/lang/IllegalArgumentException.hdl>
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <tools/urlobj.hxx>
+#include <svx/colritem.hxx>
+#include <vcl/wrkwin.hxx>
+#include <fltprgrs.hxx>
+#include <excsst.hxx>
+#include <excimp8.hxx>
+#include <excscen.hxx>
+#include <excpivot.hxx>
+#include <com/sun/star/frame/XFrameActionListener.hpp>
+#include <com/sun/star/frame/XFrameActionListener.hdl>
+#include <com/sun/star/frame/FrameActionEvent.hdl>
+#include <com/sun/star/frame/FrameAction.hdl>
+#include <com/sun/star/frame/FrameActionEvent.hpp>
+#include <com/sun/star/frame/FrameAction.hpp>
+#include <com/sun/star/frame/XFramesSupplier.hpp>
+#include <com/sun/star/frame/XFramesSupplier.hdl>
+#include <com/sun/star/frame/XFrames.hpp>
+#include <com/sun/star/frame/XFrames.hdl>
+#include <svx/msdffdef.hxx>
+#include <vcl/image.hxx>
+
+
+
+
diff --git a/sc/source/filter/inc/fkttab.h b/sc/source/filter/inc/fkttab.h
new file mode 100644
index 000000000000..a163d1303225
--- /dev/null
+++ b/sc/source/filter/inc/fkttab.h
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: fkttab.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef __FKTTAB_H__
+#define __FKTTAB_H__
+
+#include "decl.h"
+
+// Prefixes der Operationen
+extern const sal_Char *cPre[ 256 ];
+
+// Infixes der Operationen
+extern const sal_Char *cInf[ 256 ];
+
+// Postfixes der Operationen
+extern const sal_Char *cPost[ 256 ];
+
+// Bearbeitungsfunktion sal_Char *X( sal_Char * )
+extern BEARBFKT *pFkt[ 256 ];
+
+#endif
+
diff --git a/sc/source/filter/inc/flttypes.hxx b/sc/source/filter/inc/flttypes.hxx
new file mode 100644
index 000000000000..2621ac80296c
--- /dev/null
+++ b/sc/source/filter/inc/flttypes.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * $RCSfile: flttypes.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _FLTTYPES_HXX
+#define _FLTTYPES_HXX
+
+enum BiffTyp
+{
+ BiffX = 0x0000,
+ Biff2 = 0x2000, Biff2M = 0x2002, Biff2C = 0x2004,
+ Biff3 = 0x3000, Biff3W = 0x3001, Biff3M = 0x3002, Biff3C = 0x3004,
+ Biff4 = 0x4000, Biff4W = 0x4001, Biff4M = 0x4002, Biff4C = 0x4004,
+ Biff5 = 0x5000, Biff5W = 0x5001, Biff5V = 0x5002, Biff5C = 0x5004, Biff5M4 = 0x5008,
+ Biff8 = 0x8000, Biff8W = 0x8001, Biff8V = 0x8002, Biff8C = 0x8004, Biff8M4 = 0x8008
+};
+
+enum Lotus123Typ
+{
+ Lotus_X,
+ Lotus_WK1,
+ Lotus_WK3,
+ Lotus_WK4,
+ Lotus_FM3
+};
+
+#endif
+
diff --git a/sc/source/filter/inc/formel.hxx b/sc/source/filter/inc/formel.hxx
new file mode 100644
index 000000000000..c78cfb63c9d9
--- /dev/null
+++ b/sc/source/filter/inc/formel.hxx
@@ -0,0 +1,362 @@
+/*************************************************************************
+ *
+ * $RCSfile: formel.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _FORMEL_HXX
+#define _FORMEL_HXX
+
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef _LIST_HXX
+#include <tools/list.hxx>
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+#ifndef _TOKSTACK_HXX
+#include "tokstack.hxx"
+#endif
+#ifndef _ROOT_HXX
+#include "root.hxx"
+#endif
+#ifndef SC_SCGLOB_HXX
+#include <global.hxx>
+#endif
+#ifndef SC_COMPILER_HXX
+#include <compiler.hxx>
+#endif
+
+
+// ----- forwards --------------------------------------------------------
+
+class SvStream;
+class ScTokenArray;
+class ScFormulaCell;
+struct SingleRefData;
+struct ComplRefData;
+
+
+
+
+//------------------------------------------------------------------------
+
+enum ConvErr
+{
+ ConvOK = 0,
+ ConvErrNi, // nicht implemntierter/unbekannter Opcode aufgetreten
+ ConvErrNoMem, // Fehler beim Speicheranfordern
+ ConvErrExternal,// Add-Ins aus Excel werden nicht umgesetzt
+ ConvErrCount // Nicht alle Bytes der Formel 'erwischt'
+};
+
+
+enum FORMULA_TYPE
+{
+ FT_CellFormula,
+ FT_RangeName,
+ FT_SharedFormula
+};
+
+
+enum BoolError { BE_NULL, BE_DIV0, BE_VALUE, BE_REF, BE_NAME, BE_NUM,
+ BE_NA, BE_TRUE, BE_FALSE, BE_UNKNOWN };
+
+
+
+
+//--------------------------------------------------------- class ScRangeList -
+
+class _ScRangeList : protected List
+{
+private:
+protected:
+public:
+ virtual ~_ScRangeList();
+ inline void Append( const ScRange& rRange );
+ inline void Append( ScRange* pRange );
+ inline void Append( const SingleRefData& rSRD );
+ inline void Append( const ComplRefData& rCRD );
+
+ List::Count;
+ inline BOOL HasRanges( void ) const;
+
+ inline const ScRange* First( void );
+ inline const ScRange* Next( void );
+};
+
+
+inline void _ScRangeList::Append( const ScRange& r )
+{
+ List::Insert( new ScRange( r ), LIST_APPEND );
+}
+
+
+inline void _ScRangeList::Append( ScRange* p )
+{
+ List::Insert( p, LIST_APPEND );
+}
+
+
+inline BOOL _ScRangeList::HasRanges( void ) const
+{
+ return Count() > 0;
+}
+
+
+inline const ScRange* _ScRangeList::First( void )
+{
+ return ( const ScRange* ) List::First();
+}
+
+
+inline const ScRange* _ScRangeList::Next( void )
+{
+ return ( const ScRange* ) List::Next();
+}
+
+
+inline void _ScRangeList::Append( const SingleRefData& r )
+{
+ List::Insert( new ScRange( r.nCol, r.nRow, r.nTab ), LIST_APPEND );
+}
+
+
+inline void _ScRangeList::Append( const ComplRefData& r )
+{
+ List::Insert( new ScRange( r.Ref1.nCol, r.Ref1.nRow, r.Ref1.nTab,
+ r.Ref2.nCol, r.Ref2.nRow, r.Ref2.nTab ),
+ LIST_APPEND );
+}
+
+
+
+
+//----------------------------------------------------- class ScRangeListTabs -
+
+class _ScRangeListTabs
+{
+private:
+protected:
+ BOOL bHasRanges;
+ _ScRangeList** ppTabLists;
+ _ScRangeList* pAct;
+ UINT16 nAct;
+public:
+ _ScRangeListTabs( void );
+ virtual ~_ScRangeListTabs();
+
+ void Append( SingleRefData aSRD, const BOOL bLimit = TRUE );
+ void Append( ComplRefData aCRD, const BOOL bLimit = TRUE );
+
+ inline BOOL HasRanges( void ) const;
+
+ const ScRange* First( const UINT16 nTab = 0 );
+ const ScRange* Next( void );
+// const ScRange* NextContinue( void );
+ inline INT32 GetActTab( void ) const; // < 0 -> keine aktuelle Tab
+ inline const _ScRangeList* GetActList( void ) const;
+};
+
+
+inline BOOL _ScRangeListTabs::HasRanges( void ) const
+{
+ return bHasRanges;
+}
+
+
+inline INT32 _ScRangeListTabs::GetActTab( void ) const
+{
+ if( pAct )
+ return nAct;
+ else
+ return -1;
+}
+
+
+inline const _ScRangeList* _ScRangeListTabs::GetActList( void ) const
+{
+ return pAct;
+}
+
+
+
+
+class ConverterBase
+{
+protected:
+ SvStream& aIn;
+ ConvErr eStatus;
+ TokenPool aPool; // User Token + Predefined Token
+ TokenStack aStack;
+ INT32 nBytesLeft;
+ sal_Char* pBuffer; // Universal-Puffer
+ UINT16 nBufferSize; // ...und seine Groesse
+ ScAddress aEingPos;
+ // -------------------------------------------------------------------
+ inline void Ignore( const long nSeekRel );
+
+ inline void Read( sal_Char& nByte );
+
+ inline void Read( BYTE& nByte );
+
+ inline void Read( UINT16& nUINT16 );
+
+ inline void Read( INT16& nINT16 );
+
+ inline void Read( double& fDouble );
+
+ ConverterBase( SvStream& rStr, UINT16 nNewBuffer );
+ virtual ~ConverterBase();
+
+public:
+ void Reset( INT32 nLen );
+
+ void Reset( INT32 nLen, ScAddress aEingPos );
+
+ void Reset( ScAddress aEingPos );
+
+ inline UINT16 GetEingabeCol( void ) const;
+
+ inline UINT16 GetEingabeRow( void ) const;
+
+ inline UINT16 GetEingabeTab( void ) const;
+
+ inline ScAddress GetEingPos( void ) const;
+
+ virtual ConvErr Convert( const ScTokenArray*& rpErg, INT32& nRest,
+ const FORMULA_TYPE eFT = FT_CellFormula ) = 0;
+};
+
+
+inline void ConverterBase::Ignore( const long nSeekRel )
+{
+ aIn.SeekRel( nSeekRel );
+ nBytesLeft -= nSeekRel;
+}
+
+
+inline void ConverterBase::Read( sal_Char& nByte )
+{
+ aIn >> nByte;
+ nBytesLeft--;
+}
+
+
+inline void ConverterBase::Read( BYTE& nByte )
+{
+ aIn >> nByte;
+ nBytesLeft--;
+}
+
+
+inline void ConverterBase::Read( UINT16& nUINT16 )
+{
+ aIn >> nUINT16;
+ nBytesLeft -= 2;
+}
+
+
+inline void ConverterBase::Read( INT16& nINT16 )
+{
+ aIn >> nINT16;
+ nBytesLeft -= 2;
+}
+
+
+inline void ConverterBase::Read( double& fDouble )
+{
+ aIn >> fDouble;
+ nBytesLeft -= 8;
+}
+
+
+inline UINT16 ConverterBase::GetEingabeCol( void ) const
+{
+ return aEingPos.Col();
+}
+
+
+inline UINT16 ConverterBase::GetEingabeRow( void ) const
+{
+ return aEingPos.Row();
+}
+
+
+inline UINT16 ConverterBase::GetEingabeTab( void ) const
+{
+ return aEingPos.Tab();
+}
+
+
+inline ScAddress ConverterBase::GetEingPos( void ) const
+{
+ return aEingPos;
+}
+
+
+
+
+#endif
+
+
diff --git a/sc/source/filter/inc/funktion.h b/sc/source/filter/inc/funktion.h
new file mode 100644
index 000000000000..aeca2dfe5375
--- /dev/null
+++ b/sc/source/filter/inc/funktion.h
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: funktion.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef __FUNKTION_H__
+#define __FUNKTION_H__
+
+// Bearbeitungsfunktionen
+void P0( void ); // 0 Parameter
+void P1( void ); // 1 Parameter
+void P2( void ); // 2 Parameter
+void P3( void ); // 3 Parameter
+void P4( void ); // 4 Parameter
+void P5( void ); // 5 Parameter
+void Pn( void ); // n Parameter
+void NI( void ); // nicht implementiert
+void ConstFloat( void ); // 0
+void Variable( void ); // 1
+void LotusRange( void ); // 2
+void FormulaReturn( void ); // 3
+void Klammer( void ); // 4
+void ConstInt( void ); // 5
+void ConstString( void ); // 6
+// ACHTUNG: unbekannte Funktionen -> P0()
+
+#endif
+
diff --git a/sc/source/filter/inc/htmlexp.hxx b/sc/source/filter/inc/htmlexp.hxx
new file mode 100644
index 000000000000..7c611371fd69
--- /dev/null
+++ b/sc/source/filter/inc/htmlexp.hxx
@@ -0,0 +1,203 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlexp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_HTMLEXP_HXX
+#define SC_HTMLEXP_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef _RTL_TEXTENC_H //autogen wg. rtl_TextEncoding
+#include <rtl/textenc.h>
+#endif
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+#include "expbase.hxx"
+
+
+class ScDocument;
+class SfxItemSet;
+class SdrPage;
+class Graphic;
+class SdrObject;
+class OutputDevice;
+class ScDrawLayer;
+class SvStringsSortDtor;
+class ScEditCell;
+
+struct ScHTMLStyle
+{ // Defaults aus StyleSheet
+ Color aBackgroundColor;
+ String aFontFamilyName;
+ UINT32 nFontHeight; // Item-Value
+
+ const ScHTMLStyle& operator=( const ScHTMLStyle& r )
+ {
+ aBackgroundColor = r.aBackgroundColor;
+ aFontFamilyName = r.aFontFamilyName;
+ nFontHeight = r.nFontHeight;
+ return *this;
+ }
+};
+
+struct ScHTMLGraphEntry
+{
+ ScRange aRange; // ueberlagerter Zellbereich
+ Size aSize; // Groesse in Pixeln
+ Size aSpace; // Spacing in Pixeln
+ SdrObject* pObject;
+ BOOL bInCell; // ob in Zelle ausgegeben wird
+ BOOL bWritten;
+
+ ScHTMLGraphEntry( SdrObject* pObj, const ScRange& rRange,
+ const Size& rSize, BOOL bIn, const Size& rSpace ) :
+ aRange( rRange ), pObject( pObj ), aSize( rSize ), bInCell( bIn ),
+ aSpace( rSpace ), bWritten( FALSE ) {}
+};
+
+DECLARE_LIST( ScHTMLGraphList, ScHTMLGraphEntry* );
+
+#define SC_HTML_FONTSIZES 7
+const short nIndentMax = 23;
+
+class ScHTMLExport : public ScExportBase
+{
+ // default HtmlFontSz[1-7]
+ static const USHORT nDefaultFontSize[SC_HTML_FONTSIZES];
+ // HtmlFontSz[1-7] in s*3.ini [user]
+ static USHORT nFontSize[SC_HTML_FONTSIZES];
+ static const USHORT nCellSpacing;
+ static const sal_Char __FAR_DATA sIndentSource[];
+
+ ScHTMLGraphList aGraphList;
+ ScHTMLStyle aHTMLStyleGlobal;
+ ScHTMLStyle aHTMLStyle;
+ String aStreamPath;
+ String aCId; // Content-Id fuer Mail-Export
+ OutputDevice* pAppWin; // fuer Pixelei
+ SvStringsSortDtor* pSrcArr; // fuer CopyLocalFileToINet
+ SvStringsSortDtor* pDestArr;
+ rtl_TextEncoding eDestEnc;
+ USHORT nUsedTables;
+ short nIndent;
+ sal_Char sIndent[nIndentMax+1];
+ BOOL bAll; // ganzes Dokument
+ BOOL bTabHasGraphics;
+ BOOL bTabAlignedLeft;
+ BOOL bCalcAsShown;
+ BOOL bCopyLocalFileToINet;
+
+ const SfxItemSet& PageDefaults( USHORT nTab );
+
+ void WriteBody();
+ void WriteHeader();
+ void WriteOverview();
+ void WriteTables();
+ void WriteCell( USHORT nCol, USHORT nRow, USHORT nTab );
+ void WriteGraphEntry( ScHTMLGraphEntry* );
+ void WriteImage( String& rLinkName,
+ const Graphic&, const ByteString& rImgOptions,
+ ULONG nXOutFlags = 0 );
+ // nXOutFlags fuer XOutBitmap::WriteGraphic
+
+ // write to stream if and only if URL fields in edit cell
+ BOOL WriteFieldText( const ScEditCell* pCell );
+
+ // kopiere ggfs. eine lokale Datei ins Internet
+ BOOL CopyLocalFileToINet( String& rFileNm,
+ const String& rTargetNm, BOOL bFileToFile = FALSE );
+ BOOL HasCId() { return aCId.Len() > 0; }
+ void MakeCIdURL( String& rURL );
+
+ void PrepareGraphics( ScDrawLayer*, USHORT nTab,
+ USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow );
+ void FillGraphList( const SdrPage*, USHORT nTab,
+ USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow );
+
+ BOOL HasBottomBorder( USHORT nRow, USHORT nTab,
+ USHORT nStartCol, USHORT nEndCol );
+ BOOL HasLeftBorder( USHORT nCol, USHORT nTab,
+ USHORT nStartRow, USHORT nEndRow );
+ BOOL HasTopBorder( USHORT nRow, USHORT nTab,
+ USHORT nStartCol, USHORT nEndCol );
+ BOOL HasRightBorder( USHORT nCol, USHORT nTab,
+ USHORT nStartRow, USHORT nEndRow );
+
+ USHORT GetFontSizeNumber( USHORT nHeight );
+ USHORT ToPixel( USHORT nTwips );
+ Size MMToPixel( const Size& r100thMMSize );
+ void IncIndent( short nVal );
+ const sal_Char* GetIndentStr() { return sIndent; }
+
+public:
+ ScHTMLExport( SvStream&, ScDocument*, const ScRange&,
+ BOOL bAll, const String& aStreamPath );
+ virtual ~ScHTMLExport();
+ ULONG Write();
+};
+
+#endif
+
diff --git a/sc/source/filter/inc/htmlpars.hxx b/sc/source/filter/inc/htmlpars.hxx
new file mode 100644
index 000000000000..1c55969377b8
--- /dev/null
+++ b/sc/source/filter/inc/htmlpars.hxx
@@ -0,0 +1,202 @@
+/*************************************************************************
+ *
+ * $RCSfile: htmlpars.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_HTMLPARS_HXX
+#define SC_HTMLPARS_HXX
+
+#ifndef _STACK_HXX //autogen
+#include <tools/stack.hxx>
+#endif
+
+#include "rangelst.hxx"
+#include "eeparser.hxx"
+
+#define SC_HTML_FONTSIZES 7 // wie Export, HTML-Options
+#define SC_HTML_OFFSET_TOL 10 // Pixeltoleranz fuer SeekOffset
+
+SV_DECL_VARARR_SORT( ScHTMLColOffset, ULONG, 16, 4);
+
+struct ScHTMLTableStackEntry
+{
+ ScRangeListRef xLockedList;
+ ScEEParseEntry* pCellEntry;
+ ScHTMLColOffset* pLocalColOffset;
+ ULONG nFirstTableCell;
+ USHORT nColCnt;
+ USHORT nRowCnt;
+ USHORT nColCntStart;
+ USHORT nMaxCol;
+ USHORT nTable;
+ USHORT nTableWidth;
+ USHORT nColOffset;
+ USHORT nColOffsetStart;
+ BOOL bFirstRow;
+ ScHTMLTableStackEntry( ScEEParseEntry* pE,
+ const ScRangeListRef& rL, ScHTMLColOffset* pTO,
+ ULONG nFTC,
+ USHORT nCol, USHORT nRow,
+ USHORT nStart, USHORT nMax, USHORT nTab,
+ USHORT nTW, USHORT nCO, USHORT nCOS,
+ BOOL bFR )
+ : pCellEntry( pE ), xLockedList( rL ),
+ pLocalColOffset( pTO ),
+ nFirstTableCell( nFTC ),
+ nColCnt( nCol ), nRowCnt( nRow ),
+ nColCntStart( nStart ), nMaxCol( nMax ),
+ nTable( nTab ), nTableWidth( nTW ),
+ nColOffset( nCO ), nColOffsetStart( nCOS ),
+ bFirstRow( bFR )
+ {}
+ ~ScHTMLTableStackEntry() {}
+};
+DECLARE_STACK( ScHTMLTableStack, ScHTMLTableStackEntry* );
+
+struct ScHTMLAdjustStackEntry
+{
+ USHORT nLastCol;
+ USHORT nNextRow;
+ USHORT nCurRow;
+ ScHTMLAdjustStackEntry( USHORT nLCol, USHORT nNRow,
+ USHORT nCRow )
+ : nLastCol( nLCol ), nNextRow( nNRow ),
+ nCurRow( nCRow )
+ {}
+};
+DECLARE_STACK( ScHTMLAdjustStack, ScHTMLAdjustStackEntry* );
+
+class EditEngine;
+class ScDocument;
+class HTMLOption;
+
+class ScHTMLParser : public ScEEParser
+{
+private:
+ ULONG aFontHeights[SC_HTML_FONTSIZES];
+ ScHTMLTableStack aTableStack;
+ Size aPageSize; // in Pixeln
+ String aString;
+ ScRangeListRef xLockedList; // je Table
+ ScDocument* pDoc;
+ Table* pTables;
+ ScHTMLColOffset* pColOffset;
+ ScHTMLColOffset* pLocalColOffset; // je Table
+ ULONG nFirstTableCell; // je Table
+ short nTableLevel;
+ USHORT nTable;
+ USHORT nMaxTable;
+ USHORT nColCntStart; // erste Col je Table
+ USHORT nMaxCol; // je Table
+ USHORT nTableWidth; // je Table
+ USHORT nColOffset; // aktuell, Pixel
+ USHORT nColOffsetStart; // Startwert je Table, in Pixel
+ USHORT nMetaCnt; // fuer ParseMetaOptions
+ BOOL bTabInTabCell;
+ BOOL bFirstRow; // je Table, ob in erster Zeile
+ BOOL bInCell;
+ BOOL bInTitle;
+
+ DECL_LINK( HTMLImportHdl, ImportInfo* );
+ void NewActEntry( ScEEParseEntry* );
+ void EntryEnd( ScEEParseEntry*, const ESelection& );
+ void ProcToken( ImportInfo* );
+ void CloseEntry( ImportInfo* );
+ void NextRow( ImportInfo* );
+ void SkipLocked( ScEEParseEntry*, BOOL bJoin = TRUE );
+ static BOOL SeekOffset( ScHTMLColOffset*, USHORT nOffset,
+ USHORT* pCol,
+ USHORT nOffsetTol = SC_HTML_OFFSET_TOL );
+ static void MakeCol( ScHTMLColOffset*, USHORT& nOffset,
+ USHORT& nWidth,
+ USHORT nOffsetTol = SC_HTML_OFFSET_TOL,
+ USHORT nWidthTol = SC_HTML_OFFSET_TOL );
+ static void MakeColNoRef( ScHTMLColOffset*, USHORT nOffset,
+ USHORT nWidth,
+ USHORT nOffsetTol = SC_HTML_OFFSET_TOL,
+ USHORT nWidthTol = SC_HTML_OFFSET_TOL );
+ static void ModifyOffset( ScHTMLColOffset*, USHORT& nOldOffset,
+ USHORT& nNewOffset,
+ USHORT nOffsetTol = SC_HTML_OFFSET_TOL );
+ void Colonize( ScEEParseEntry* );
+ USHORT GetWidth( ScEEParseEntry* );
+ void SetWidths();
+ void Adjust();
+
+ USHORT GetWidthPixel( const HTMLOption* );
+ BOOL IsAtBeginningOfText( ImportInfo* );
+
+ void TableOn( ImportInfo* );
+ void ColOn( ImportInfo* );
+ void TableDataOn( ImportInfo* );
+ void TableOff( ImportInfo* );
+ void Image( ImportInfo* );
+ void AnchorOn( ImportInfo* );
+ void FontOn( ImportInfo* );
+
+public:
+ ScHTMLParser( EditEngine*, const Size& aPageSize,
+ ScDocument* );
+ virtual ~ScHTMLParser();
+ virtual ULONG Read( SvStream& );
+};
+
+
+#endif
+
diff --git a/sc/source/filter/inc/imp_op.hxx b/sc/source/filter/inc/imp_op.hxx
new file mode 100644
index 000000000000..51e6cbc808b7
--- /dev/null
+++ b/sc/source/filter/inc/imp_op.hxx
@@ -0,0 +1,466 @@
+/*************************************************************************
+ *
+ * $RCSfile: imp_op.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _IMP_OP_HXX
+#define _IMP_OP_HXX
+
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+#ifndef _FLTTYPES_HXX
+#include "flttypes.hxx"
+#endif
+#ifndef _NAMEBUFF_HXX
+#include "namebuff.hxx"
+#endif
+#ifndef _ROOT_HXX
+#include "root.hxx"
+#endif
+#ifndef _OTLNBUFF_HXX
+#include "otlnbuff.hxx"
+#endif
+#ifndef _COLROWST_HXX
+#include "colrowst.hxx"
+#endif
+#ifndef _EXCDEFS_HXX
+#include "excdefs.hxx"
+#endif
+#ifndef _STREAM_HXX
+#include <tools/stream.hxx>
+#endif
+
+
+class ScFormulaCell;
+class SdrObject;
+class FontBuffer;
+class XF_Buffer;
+class ValueFormBuffer;
+class SpString;
+class ScDocument;
+class ExcelToSc;
+struct ScToken;
+class ScToken2;
+class SfxItemSet;
+class ScExtDocOptions;
+class _ScRangeListTabs;
+class AutoFilterBuffer;
+
+enum StringInfoLen
+{
+ LenByte = 0, // 1 Byte lange Stringlaengeninfo
+ LenWord = 1 // 2 Byte " "
+};
+
+
+
+
+class ImportTyp
+{
+protected:
+ SvStream& aIn; // Eingabe-Stream
+ CharSet eQuellChar; // Quell-Zeichensatz
+ ScDocument* pD; // Dokument
+ ScExtDocOptions* pExtOpt; // optionale extended Options
+ UINT16 nTab; // z.Zt. bearbeitete Tabelle
+public:
+ ImportTyp( SvStream&, ScDocument*, CharSet eSrc );
+ virtual ~ImportTyp();
+
+ virtual FltError Read( void );
+
+ ScExtDocOptions& GetExtOpt( void );
+};
+
+
+
+
+class SvInPlaceObjectRef;
+
+
+
+
+struct ExcelChartData
+{
+ Rectangle aRect; // Ecken
+ String aTitle, aXTitle, aYTitle, aZTitle;
+ String aLastLabel; // letzter SERIESTEXT-Label
+ SfxItemSet* pAttrs; // Attribute
+ ExcelChartData* pNext; // wer weiss schon...
+ UINT16 nRow1, nCol1, nRow2, nCol2, nTab1, nTab2; // Quellbereich
+ UINT16 nBaseTab;
+ UINT32 nObjNum;
+
+ ExcelChartData( ScDocument*, const Point&, const Point&,
+ const UINT16 nBaseTab );
+ ~ExcelChartData();
+};
+
+
+
+
+class ImportExcel : public ImportTyp, protected ExcRoot
+{
+private:
+ ExcelChartData* pChart; // aktuelle Chart-Daten
+ ExcelChartData* pUsedChartFirst; // benutzte Chart-Daten, erster
+ ExcelChartData* pUsedChartLast; // benutzte Chart-Daten, letzter
+
+protected:
+ INT32 nBytesLeft; // Restbytes des aktuelle Records
+ static const double fExcToTwips; // Umrechnung 1/256 Zeichen -> Twips
+
+ ValueFormBuffer* pValueFormBuffer; // ... Number-Formats
+ NameBuffer aExtNameBuff; // ... externe Namen (Ind.-Basis=1)
+ _ScRangeListTabs* pPrintRanges;
+ _ScRangeListTabs* pPrintTitles;
+ ExcelToSc* pFormConv; // Formel-Konverter
+
+ SfxItemSet* pStyleSheetItemSet; // aktuelle Seitenvorlage
+
+ OutlineBuffer aColOutlineBuff; // temporaere Puffer fuer Outline-
+ OutlineBuffer aRowOutlineBuff; // Angabe
+ ColRowSettings aColRowBuff; // Col/Row-Einstellungen 1 Tabelle
+ FltTabelle* pFltTab; // Attribute-Optimierung
+
+ UINT16 nIxfeIndex; // merkt sich Angabe im IXFE-Record
+ UINT16 nLastXF; // letzter XF in Formula-Record
+ UINT16 nBdshtTab; // Counter fuer Boundsheet
+ ScFormulaCell* pLastFormCell; // fuer String-Records
+
+ BOOL bTabTruncated; // wenn Bereichsueberschreitung zum
+ // Abschneiden von Zellen fuehrt
+
+ AutoFilterBuffer* pAutoFilter; // ranges for autofilter and advanced filter
+
+ // Record-Funktionen
+ void Dimensions( void ); // 0x00
+ void Blank25( void ); // 0x01
+ void Integer( void ); // 0x02
+ void Number25( void ); // 0x03
+ void Label25( void ); // 0x04
+ void Boolerr25( void ); // 0x05
+ void Formula25( void ); // 0x06 -> excform.cxx
+ void RecString( void ); // 0x07, 0x0207
+ void Row25( void ); // 0x08
+ void Bof2( void ); // 0x09
+ void Eof( void ); // 0x0A
+ BOOL Password( void ); // 0x13
+ void Header( void ); // 0x14
+ void Footer( void ); // 0x15
+ void Externsheet( void ); // 0x17
+ void Name25( void ); // 0x18
+ void Verticalpagebreaks( void ); // 0x1A
+ void Horizontalpagebreaks( void ); // 0x1B
+ void Note( void ); // 0x1C
+ void Selection( void ); // 0x1D
+ void Format235( void ); // 0x1E
+ void Formatcount( void ); // 0x1F
+ void Columndefault( void ); // 0x20
+ void Array25( void ); // 0x21
+ void Rec1904( void ); // 0x22
+ void Externname25( void ); // 0x23
+ void Colwidth( void ); // 0x24
+ void Defrowheight2( void ); // 0x25
+ void Leftmargin( void ); // 0x26
+ void Rightmargin( void ); // 0x27
+ void Topmargin( void ); // 0x28
+ void Bottommargin( void ); // 0x29
+ void Printheaders( void ); // 0x2A
+ void Prntgrdlns( void ); // 0x2B
+ BOOL Filepass( void ); // 0x2F
+ void Font25( void ); // 0x31
+// void Window1( void ); // 0x3D
+ void Pane( void ); // 0x41
+ void Codepage( void ); // 0x42
+ void XF2( void ); // 0x43
+ void Ixfe( void ); // 0x44
+ void DefColWidth( void ); // 0x55
+ void Builtinfmtcnt( void ); // 0x56
+ void Obj( void ); // 0x5D
+ void Colinfo( void ); // 0x7D
+ void Rk( void ); // 0x7E
+ void Wsbool( void ); // 0x81
+ void Gridset( void ); // 0x82
+ void Hcenter( void ); // 0x83
+ void Vcenter( void ); // 0x84
+ void Boundsheet( void ); // 0x85
+ void Country( void ); // 0x8C
+ void Hideobj( void ); // 0x8D
+ void Bundleheader( void ); // 0x8F
+ void Palette( void ); // 0x92
+ void Standardwidth( void ); // 0x99
+ void Scl( void ); // 0xA0
+ void Setup( void ); // 0xA1
+ void Shrfmla( void ); // 0xBC
+ void Mulrk( void ); // 0xBD
+ void Mulblank( void ); // 0xBE
+ void Rstring( void ); // 0xD6
+ void XF5( void ); // 0xE0
+ void Blank34( void ); // 0x0201
+ void Number34( void ); // 0x0203
+ void Label34( void ); // 0x0204
+ void Boolerr34( void ); // 0x0205
+ void Formula3( void ); // 0x0206 -> excform.cxx
+ // 0x0207 -> 0x07
+ void Row34( void ); // 0x0208
+ void Bof3( void ); // 0x0209
+ void Name34( void ); // 0x0218
+ void Array34( void ); // 0x0221
+ void Externname34( void ); // 0x0223
+ void Defrowheight345( void ); // 0x0225
+ void Font34( void ); // 0x0231
+ void Window2_5( void ); // 0x023E
+ void XF3( void ); // 0x0243
+ //void Rk( void ); // 0x027E -> 0x7E
+ void Formula4( void ); // 0x0406 -> excform.cxx
+ void Bof4( void ); // 0x0409
+ void Format4( void ); // 0x041E
+ void XF4( void ); // 0x0443
+ void Bof5( void ); // 0x0809
+ // ---------------------------------------------------------------
+ void SetLineStyle( SfxItemSet&, short, short, short );
+ void SetFillStyle( SfxItemSet&, short, short, short );
+ SdrObject* LineObj( SfxItemSet&, const Point&, const Point& );
+ SdrObject* RectObj( SfxItemSet&, const Point&, const Point& );
+ SdrObject* BeginChartObj( SfxItemSet&, const Point&, const Point& );
+ void EndChartObj( void );
+ void ChartSelection( void );
+ void ChartSeriesText( void );
+ void ChartObjectLink( void );
+ void Chart3D( void );
+ void ChartAi( void );
+ void ChartAlruns( void );
+ void ChartArea( void );
+ void ChartAreaformat( void );
+ void ChartAttachedlabel( void );
+ void ChartAxesused( void );
+ void ChartAxis( void );
+ void ChartAxislineformat( void );
+ void ChartAxisparent( void );
+ void ChartBar( void );
+ void ChartCatserrange( void );
+ void ChartChart( void );
+ void ChartChartformat( void );
+ void ChartChartline( void );
+ void ChartDataformat( void );
+ void ChartDefaulttext( void );
+ void ChartDropbar( void );
+ void ChartFontx( void );
+ void ChartFrame( void );
+ void ChartIfmt( void );
+ void ChartLegend( void );
+ void ChartLegendxn( void );
+ void ChartLine( void );
+ void ChartLineform( void );
+ void ChartMarkerformat( void );
+// void ChartObjectlink( void );
+ void ChartPicf( void );
+ void ChartPie( void );
+ void ChartPieformat( void );
+ void ChartPlotarea( void );
+ void ChartPos( void );
+ void ChartRadar( void );
+ void ChartRadararea( void );
+ void ChartSbaseref( void );
+ void ChartSerauxerrbar( void );
+ void ChartSerauxtrend( void );
+ void ChartSerfmt( void );
+ void ChartSeries( void );
+ void ChartSerieslist( void );
+ void ChartSeriestext( void );
+ void ChartSerparent( void );
+ void ChartSertocrt( void );
+ void ChartShtprops( void );
+ void ChartSurface( void );
+ void ChartText( void );
+ void ChartTick( void );
+ void ChartValuerange( void );
+
+ // ---------------------------------------------------------------
+ void Formula( UINT16 nCol, UINT16 nRow, UINT16 nTab,
+ UINT16 nXF, UINT16 nFormLen, double &rCurVal,
+ BYTE nFlag, BOOL bShrFmla );
+ // -> excform.cxx
+
+ void ReadExcString( StringInfoLen eLen, ByteString& aStr );
+ void ReadExcString( StringInfoLen eLen, String& aStr );
+ void ResetBof( void );
+ void ExcToScName( SpString& rName );
+ void EndSheet( void );
+ ByteString ReadExcString( StringInfoLen eLen );
+ void NeueTabelle( void );
+ const ScTokenArray* ErrorToFormula( BYTE bErrOrVal, BYTE nError,
+ double& rVal );
+ void ScanHeadFootParts( const String& rIn, EditTextObject*& rpLeft,
+ EditTextObject*& rpMid, EditTextObject*& rpRight );
+ void GetHF( BOOL bHeader );
+ virtual void GetHFString( String& rStr );
+ void GetAndSetMargin( IMPEXC_MARGINSIDE eSide );
+ // nSide -> IMPEXC_MARGINSIDE_*
+ String GetPageStyleName( UINT16 nTab );
+ EditTextObject* CreateFormText( BYTE, const String&, const UINT16 );
+ ScEditEngineDefaulter& GetEdEng( void ) const;
+ virtual void EndAllChartObjects( void ); // -> excobj.cxx
+
+ inline void Ignore( const UINT32 nNumOfBytes );
+ inline UINT8 Read1( void );
+ inline UINT16 Read2( void );
+ inline UINT32 Read4( void );
+ inline double Read8( void );
+ inline void ReadX( UINT8& r );
+ inline void ReadX( UINT16& r );
+ inline void ReadX( UINT32& r );
+ inline void ReadX( double& r );
+
+ virtual void PostDocLoad( void );
+ virtual void SetTextCell( const UINT16 nCol, const UINT16 nRow,
+ ByteString& rUnconvertedText, const UINT16 nXF );
+ // Achtung: rUnconvertedText wird moeglicherweise veraendert
+ UINT16 CalcColWidth( const UINT16 nExcColWidth );
+public:
+ ImportExcel( SvStream&, ScDocument* );
+
+ virtual ~ImportExcel( void );
+
+ virtual FltError Read( void );
+
+ static double RkToDouble( const UINT32& nRk );
+};
+
+
+
+
+inline void ImportExcel::Ignore( const UINT32 n )
+{
+ aIn.SeekRel( n );
+ nBytesLeft -= n;
+}
+
+
+inline UINT8 ImportExcel::Read1( void )
+{
+ UINT8 n;
+ aIn >> n;
+ nBytesLeft -= sizeof( n );
+ return n;
+}
+
+
+inline UINT16 ImportExcel::Read2( void )
+{
+ UINT16 n;
+ aIn >> n;
+ nBytesLeft -= sizeof( n );
+ return n;
+}
+
+
+inline UINT32 ImportExcel::Read4( void )
+{
+ UINT32 n;
+ aIn >> n;
+ nBytesLeft -= sizeof( n );
+ return n;
+}
+
+
+inline double ImportExcel::Read8( void )
+{
+ double f;
+ aIn >> f;
+ nBytesLeft -= sizeof( f );
+ return f;
+}
+
+
+inline void ImportExcel::ReadX( UINT8& r )
+{
+ aIn >> r;
+ nBytesLeft -= sizeof( r );
+}
+
+
+inline void ImportExcel::ReadX( UINT16& r )
+{
+ aIn >> r;
+ nBytesLeft -= sizeof( r );
+}
+
+
+inline void ImportExcel::ReadX( UINT32& r )
+{
+ aIn >> r;
+ nBytesLeft -= sizeof( r );
+}
+
+
+inline void ImportExcel::ReadX( double& r )
+{
+ aIn >> r;
+ nBytesLeft -= sizeof( r );
+}
+
+
+#endif
+
diff --git a/sc/source/filter/inc/lotattr.hxx b/sc/source/filter/inc/lotattr.hxx
new file mode 100644
index 000000000000..6571c008f882
--- /dev/null
+++ b/sc/source/filter/inc/lotattr.hxx
@@ -0,0 +1,190 @@
+/*************************************************************************
+ *
+ * $RCSfile: lotattr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _LOTATTR_HXX
+#define _LOTATTR_HXX
+
+#include <tools/solar.h>
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+
+#include <patattr.hxx>
+#include <scitems.hxx>
+
+// ----- forwards --------------------------------------------------------
+class ScDocument;
+class ScDocumentPool;
+class SvxBorderLine;
+class SvxColorItem;
+class Color;
+
+class LotAttrTable;
+
+
+struct LotAttrWK3
+{
+ UINT8 nFont;
+ UINT8 nLineStyle;
+ UINT8 nFontCol;
+ UINT8 nBack;
+
+ inline BOOL HasStyles( void );
+ inline BOOL IsCentered( void );
+};
+
+
+inline BOOL LotAttrWK3::HasStyles( void )
+{
+ return ( nFont || nLineStyle || nFontCol || ( nBack & 0x7F ) );
+ // !! ohne Center-Bit!!
+}
+
+
+inline BOOL LotAttrWK3::IsCentered( void )
+{
+ return ( nBack & 0x80 );
+}
+
+
+class LotAttrCache : private List
+{
+private:
+ friend LotAttrTable;
+
+ struct ENTRY
+ {
+ ScPatternAttr* pPattAttr;
+ UINT32 nHash0;
+
+ inline ENTRY( const ScPatternAttr& r ) { pPattAttr = new ScPatternAttr( r ); }
+
+ inline ENTRY( ScPatternAttr* p ) { pPattAttr = p; }
+
+ inline ~ENTRY() { delete pPattAttr; }
+
+ inline BOOL operator ==( const ENTRY& r ) const { return nHash0 == r.nHash0; }
+
+ inline BOOL operator ==( const UINT32& r ) const { return nHash0 == r; }
+ };
+
+ ScDocumentPool* pDocPool;
+ SvxColorItem* ppColorItems[ 6 ]; // 0 und 7 fehlen!
+ SvxColorItem* pBlack;
+ SvxColorItem* pWhite;
+ Color* pColTab;
+
+ inline static void MakeHash( const LotAttrWK3& rAttr, UINT32& rOut )
+ {
+ ( ( UINT8* ) &rOut )[ 0 ] = rAttr.nFont & 0x7F;
+ ( ( UINT8* ) &rOut )[ 1 ] = rAttr.nLineStyle;
+ ( ( UINT8* ) &rOut )[ 2 ] = rAttr.nFontCol;
+ ( ( UINT8* ) &rOut )[ 3 ] = rAttr.nBack;
+ }
+ static void LotusToScBorderLine( UINT8 nLine, SvxBorderLine& );
+ const SvxColorItem& GetColorItem( const UINT8 nLotIndex ) const;
+ const Color& GetColor( const UINT8 nLotIndex ) const;
+public:
+ LotAttrCache( void );
+ ~LotAttrCache();
+
+ const ScPatternAttr& GetPattAttr( const LotAttrWK3& );
+};
+
+
+class LotAttrCol : private List
+{
+private:
+ struct ENTRY
+ {
+ const ScPatternAttr* pPattAttr;
+ UINT16 nFirstRow;
+ UINT16 nLastRow;
+ };
+
+public:
+ ~LotAttrCol( void );
+ void SetAttr( const UINT16 nRow, const ScPatternAttr& );
+ void Apply( const UINT16 nCol, const UINT16 nTab, const BOOL bClear = TRUE );
+ void Clear( void );
+};
+
+
+class LotAttrTable
+{
+private:
+ LotAttrCol pCols[ MAXCOL + 1 ];
+ LotAttrCache aAttrCache;
+public:
+ LotAttrTable( void );
+ ~LotAttrTable();
+
+ void SetAttr( const UINT8 nColFirst, const UINT8 nColLast, const UINT16 nRow, const LotAttrWK3& );
+ void Apply( const UINT16 nTabNum );
+};
+
+
+
+
+
+#endif
+
diff --git a/sc/source/filter/inc/lotfntbf.hxx b/sc/source/filter/inc/lotfntbf.hxx
new file mode 100644
index 000000000000..5a743c480438
--- /dev/null
+++ b/sc/source/filter/inc/lotfntbf.hxx
@@ -0,0 +1,152 @@
+/*************************************************************************
+ *
+ * $RCSfile: lotfntbf.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _LOTFNTBF_HXX
+#define _LOTFNTBF_HXX
+
+#include <tools/solar.h>
+
+#include "scitems.hxx"
+
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_COLRITEM_HXX //autogen
+#include <svx/colritem.hxx>
+#endif
+
+// ---------------------------------------------------- class LotusFontBuffer -
+
+// Code in fontbuff.cxx (excel)
+
+class LotusFontBuffer
+{
+private:
+ struct ENTRY
+ {
+ String* pTmpName;
+ SvxFontItem* pFont;
+ SvxFontHeightItem* pHeight;
+ SvxColorItem* pColor;
+ INT32 nType; // < 0 -> undefiniert
+ inline ENTRY( void )
+ {
+ pTmpName = NULL;
+ pFont = NULL;
+ pHeight = NULL;
+ pColor = NULL;
+ nType = -1;
+ }
+ inline ~ENTRY()
+ {
+ if( pTmpName )
+ delete pTmpName;
+ if( pFont )
+ delete pFont;
+ if( pHeight )
+ delete pHeight;
+ if( pColor )
+ delete pColor;
+ }
+ inline void TmpName( const String &rNew )
+ {
+ if( pTmpName )
+ *pTmpName = rNew;
+ else
+ pTmpName = new String( rNew );
+ }
+ inline void Font( SvxFontItem& rNew )
+ {
+ if( pFont )
+ delete pFont;
+ pFont = &rNew;
+ }
+ inline void Height( SvxFontHeightItem& rNew )
+ {
+ if( pHeight )
+ delete pHeight;
+ pHeight = &rNew;
+ }
+ inline void Color( SvxColorItem& rNew )
+ {
+ if( pColor )
+ delete pColor;
+ pColor = &rNew;
+ }
+ inline void Type( const UINT16 nNew ) { nType = nNew; }
+ };
+
+ ENTRY pData[ 8 ];
+ const static UINT16 nSize;
+ void MakeFont( ENTRY* pEntry );
+public:
+ void Fill( const UINT8 nIndex, SfxItemSet& rItemSet );
+ void SetName( const UINT16 nIndex, const String& rName );
+ void SetHeight( const UINT16 nIndex, const UINT16 nHeight );
+ void SetType( const UINT16 nIndex, const UINT16 nType );
+};
+
+
+
+#endif
diff --git a/sc/source/filter/inc/lotform.hxx b/sc/source/filter/inc/lotform.hxx
new file mode 100644
index 000000000000..462ee1bac00e
--- /dev/null
+++ b/sc/source/filter/inc/lotform.hxx
@@ -0,0 +1,167 @@
+/*************************************************************************
+ *
+ * $RCSfile: lotform.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _LOTFORM_HXX
+#define _LOTFORM_HXX
+
+#ifndef _FORMEL_HXX
+#include "formel.hxx"
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+
+
+
+enum FUNC_TYPE
+{
+ FT_Return = 0, // End Formula
+ FT_FuncFix0, // Funktion, 0 Parameter
+ FT_FuncFix1, // Funktion, 0 Parameter
+ FT_FuncFix2, // Funktion, 0 Parameter
+ FT_FuncFix3, // Funktion, 0 Parameter
+ FT_FuncFix4, // Funktion, 0 Parameter
+ FT_FuncVar, // ~, var. P.
+ FT_Neg, // Negierung
+ FT_Op, // Operator
+ FT_NotImpl, // nicht implementiert
+ FT_ConstFloat, // Double (8-Byte)
+ FT_Variable, // Single Ref
+ FT_Range, // Double Ref
+ FT_Braces, // Klammmern
+ FT_ConstInt, // Integer
+ FT_ConstString, // String
+ FT_NOP, // nichts
+ // zusaetzlich ab WK3
+ FT_Cref, // Cell Reference
+ FT_Rref, // Range Reference
+ FT_Nrref, // Named range reference
+ FT_Absnref, // Absolut named range
+ FT_Erref, // Err range reference
+ FT_Ecref, // Err cell reference
+ FT_Econstant, // Err constant
+ FT_Splfunc, // SPLfunction
+ FT_Const10Float,// Float (10-Byte)
+ FT_Snum // Const Short Num
+ // fuer 'Problemfaelle' beim Import
+};
+
+
+
+
+class LotusToSc : public ConverterBase
+{
+private:
+ CharSet eSrcChar;
+ TokenId nAddToken; // ')+1.0'
+ TokenId nSubToken; // ~
+ TokenId n0Token; // '0.0';
+ // ---------------------------------------------------------------
+ static FUNC_TYPE IndexToType( BYTE );
+ static DefTokenId IndexToToken( BYTE );
+ static FUNC_TYPE IndexToTypeWK3( BYTE );
+ static DefTokenId IndexToTokenWK3( BYTE );
+ void DoFunc( DefTokenId eOc, BYTE nAnz, const sal_Char* pExtName );
+ void LotusRelToScRel( UINT16 nCol, UINT16 nRow,
+ SingleRefData& rSRD );
+ BOOL bWK3; // alternative Codeumsetzung statt fuer < WK1
+ // -------------------------------------------------------------------
+ void ReadSRD( SingleRefData& rSRD, BYTE nFlags );
+ inline void ReadCRD( ComplRefData& rCRD, BYTE nFlags );
+ void IncToken( TokenId &rParam );
+ // ACHTUNG: hier wird die aktuelle Token-Kette im Pool
+ // mit '(<rParam>)+1' fortgeschrieben und mit
+ // Store() abgeschlossen!
+ void DecToken( TokenId& rParam );
+ // ACHTUNG: ~
+ void NegToken( TokenId& rParam );
+ // ACHTUNG: wie ~, nur wird '-(<rParam>)' gebildet
+public:
+ LotusToSc( SvStream& aStr, CharSet eSrc );
+ virtual ConvErr Convert( const ScTokenArray*& rpErg, INT32& nRest,
+ const FORMULA_TYPE eFT = FT_CellFormula );
+
+ void Reset( ScAddress aEingPos );
+ inline void SetWK3( void );
+};
+
+
+inline void LotusToSc::ReadCRD( ComplRefData& rCRD, BYTE nRelBit )
+{
+ // erster Teil
+ ReadSRD( rCRD.Ref1, nRelBit );
+
+ // zweiter Teil
+ ReadSRD( rCRD.Ref2, nRelBit >> 3 );
+}
+
+
+inline void LotusToSc::SetWK3( void )
+{
+ bWK3 = TRUE;
+}
+
+
+
+#endif
+
diff --git a/sc/source/filter/inc/lotimpop.hxx b/sc/source/filter/inc/lotimpop.hxx
new file mode 100644
index 000000000000..5adf8d1a3d56
--- /dev/null
+++ b/sc/source/filter/inc/lotimpop.hxx
@@ -0,0 +1,208 @@
+/*************************************************************************
+ *
+ * $RCSfile: lotimpop.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+#ifndef _LOTIMPOP_HXX
+#define _LOTIMPOP_HXX
+
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+#include "imp_op.hxx"
+#include "flttypes.hxx"
+#include "lotform.hxx"
+#include "lotattr.hxx"
+
+class ScFormulaCell;
+class LotusFontBuffer;
+class SvxBorderLine;
+
+
+class ImportLotus : public ImportTyp
+{
+private:
+ SvStream* pIn; // benoetigt wegen multiplem Read()!
+ LotusFontBuffer* pFontBuff;
+ LotusToSc aConv;
+ INT32 nExtTab;
+ // -------------------------------------------------------------------
+ // in WK?-Datei
+ void Bof( void ); // 0x0000 00
+ BOOL BofFm3( void ); // 0x0000 00
+ void Columnwidth( UINT16 nRecLen ); // 0x0007 07
+ void Hiddencolumn( UINT16 nRecLen ); // 0x0008 08
+ void Userrange( void ); // 0x0009 09
+ void Errcell( void ); // 0x0014 20
+ void Nacell( void ); // 0x0015 21
+ void Labelcell( void ); // 0x0016 22
+ void Numbercell( void ); // 0x0017 23
+ void Smallnumcell( void ); // 0x0018 24
+ ScFormulaCell* Formulacell( UINT16 nRecLen ); // 0x0019 25
+ void Formulastring( ScFormulaCell& ); // 0x001a 26
+ // 0x001b 27 special
+ void NamedSheet( void ); // 14000
+ void RowPresentation( UINT16 nRecLen ); // 2007
+
+ // -------------------------------------------------------------------
+ // in FM?-Datei
+ void Font_Face( void ); // 174
+ void Font_Type( void ); // 176
+ void Font_Ysize( void ); // 177
+ void _Row( const UINT16 nRecLen ); // 197 ?
+ // -------------------------------------------------------------------
+ inline void Read( ScAddress& );
+ inline void Read( ScRange& );
+ // fuer Addresses/Ranges im Format Row(16)/Tab(8)/Col(8)
+ inline void Read( sal_Char& );
+ inline void Read( BYTE& );
+ inline void Read( UINT16& );
+ inline void Read( INT16& );
+ inline void Read( UINT32& );
+ inline void Read( double& ); // 10-Byte-IEEE lesen
+ inline void Read( LotAttrWK3& );
+ void Read( String& ); // 0-terminierten String einlesen
+ inline void Skip( const UINT16 nNumBytes );
+ // -------------------------------------------------------------------
+public:
+ ImportLotus( SvStream&, ScDocument*, CharSet eSrc );
+
+ virtual ~ImportLotus();
+
+ FltError Read();
+ FltError Read( SvStream& ); // special for *.fm3-Dateien
+};
+
+
+inline void ImportLotus::Read( ScAddress& rAddr )
+{
+ UINT16 nRow;
+ *pIn >> nRow;
+ rAddr.SetRow( nRow );
+ BYTE nByte;
+ *pIn >> nByte;
+ rAddr.SetTab( nByte );
+ *pIn >> nByte;
+ rAddr.SetCol( nByte );
+}
+
+
+inline void ImportLotus::Read( ScRange& rRange )
+{
+ Read( rRange.aStart );
+ Read( rRange.aEnd );
+}
+
+
+inline void ImportLotus::Read( sal_Char& r )
+{
+ *pIn >> r;
+}
+
+
+inline void ImportLotus::Read( BYTE& r )
+{
+ *pIn >> r;
+}
+
+
+inline void ImportLotus::Read( UINT16& r )
+{
+ *pIn >> r;
+}
+
+
+inline void ImportLotus::Read( INT16& r )
+{
+ *pIn >> r;
+}
+
+
+inline void ImportLotus::Read( UINT32& r )
+{
+ *pIn >> r;
+}
+
+
+extern double ReadLongDouble( SvStream& rStr ); // -> exctools.cxx
+
+
+inline void ImportLotus::Read( double& r )
+{
+ r = ReadLongDouble( *pIn );
+}
+
+
+inline void ImportLotus::Read( LotAttrWK3& r )
+{
+ *pIn >> r.nFont >> r.nFontCol >> r.nBack >> r.nLineStyle;
+}
+
+
+inline void ImportLotus::Skip( const UINT16 n )
+{
+ pIn->SeekRel( n );
+}
+
+
+
+#endif
diff --git a/sc/source/filter/inc/lotrange.hxx b/sc/source/filter/inc/lotrange.hxx
new file mode 100644
index 000000000000..79572578b67b
--- /dev/null
+++ b/sc/source/filter/inc/lotrange.hxx
@@ -0,0 +1,202 @@
+/*************************************************************************
+ *
+ * $RCSfile: lotrange.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _LOTRANGE_HXX
+#define _LOTRANGE_HXX
+
+#include <tools/solar.h>
+#include <compiler.hxx>
+
+// --------------------------------------------------------- class LotusRange -
+
+class LotusRangeList;
+
+typedef UINT16 LR_ID;
+#define ID_FAIL 0xFFFF
+
+class LotusRange
+{
+ friend LotusRangeList;
+private:
+ UINT32 nHash;
+ UINT16 nColStart;
+ UINT16 nRowStart;
+ UINT16 nColEnd;
+ UINT16 nRowEnd;
+ LR_ID nId;
+ void MakeHash( void );
+ inline void Copy( const LotusRange& );
+ inline void SetId( LR_ID nId );
+public:
+ LotusRange( UINT16 nCol, UINT16 nRow );
+ LotusRange( UINT16 nColS, UINT16 nRowS, UINT16 nColE, UINT16 nRowE );
+ LotusRange( const LotusRange& );
+ inline LotusRange &operator =( const LotusRange& );
+ inline BOOL operator ==( const LotusRange& ) const;
+ inline BOOL operator !=( const LotusRange& ) const;
+ inline BOOL IsSingle( void ) const;
+};
+
+
+inline void LotusRange::Copy( const LotusRange& rCpy )
+{
+ nColStart = rCpy.nColStart;
+ nRowStart = rCpy.nRowStart;
+ nColEnd = rCpy.nColEnd;
+ nRowEnd = rCpy.nRowEnd;
+}
+
+
+inline void LotusRange::SetId( LR_ID nNewId )
+{
+ nId = nNewId;
+}
+
+
+inline LotusRange &LotusRange::operator =( const LotusRange& rCpy )
+{
+ Copy( rCpy );
+ return *this;
+}
+
+
+inline BOOL LotusRange::operator ==( const LotusRange& rRef ) const
+{
+ return ( nHash == rRef.nHash && nColStart == rRef.nColStart &&
+ nRowStart == rRef.nRowStart && nColEnd == rRef.nColEnd &&
+ nRowEnd == rRef.nRowEnd );
+}
+
+
+inline BOOL LotusRange::operator !=( const LotusRange& rRef ) const
+{
+ return ( nHash != rRef.nHash || nColStart != rRef.nColStart ||
+ nRowStart != rRef.nRowStart || nColEnd != rRef.nColEnd ||
+ nRowEnd != rRef.nRowEnd );
+}
+
+
+inline BOOL LotusRange::IsSingle( void ) const
+{
+ return ( nColStart == nColEnd && nRowStart == nRowEnd );
+}
+
+
+
+// ----------------------------------------------------- class LotusRangeList -
+
+class LotusRangeList : private List
+{
+private:
+ LR_ID nIdCnt;
+ ComplRefData aComplRef;
+ static UINT16 nEingCol;
+ static UINT16 nEingRow;
+public:
+ LotusRangeList( void );
+ ~LotusRangeList( void );
+ inline UINT16 GetIndex( UINT16 nCol, UINT16 nRow );
+ inline UINT16 GetIndex( UINT16 nColS, UINT16 nRowS, UINT16 nColE, UINT16 nRowE );
+ UINT16 GetIndex( const LotusRange& );
+ inline void Append( UINT16 nCol, UINT16 nRow, const String& );
+ inline void Append( UINT16 nColS, UINT16 nRowS, UINT16 nColE, UINT16 nRowE, const String& );
+ void Append( LotusRange* pLR, const String& rName );
+ inline static void SetEing( const UINT16 nCol, const UINT16 nRow );
+};
+
+
+inline LR_ID LotusRangeList::GetIndex( UINT16 nCol, UINT16 nRow )
+{
+ LotusRange aRef( nCol, nRow );
+ return GetIndex( aRef );
+}
+
+
+inline LR_ID LotusRangeList::GetIndex( UINT16 nColS, UINT16 nRowS, UINT16 nColE, UINT16 nRowE )
+{
+ LotusRange aRef( nColS, nRowS, nColE, nRowE );
+ return GetIndex( aRef );
+}
+
+
+inline void LotusRangeList::Append( UINT16 nCol, UINT16 nRow, const String& rName )
+{
+ Append( new LotusRange( nCol, nRow ), rName );
+}
+
+
+inline void LotusRangeList::Append( UINT16 nColS, UINT16 nRowS, UINT16 nColE, UINT16 nRowE, const String& r )
+{
+ Append( new LotusRange( nColS, nRowS, nColE, nRowE ), r );
+}
+
+
+inline void LotusRangeList::SetEing( const UINT16 nCol, const UINT16 nRow )
+{
+ nEingCol = nCol;
+ nEingRow = nRow;
+}
+
+#endif
+
+
+
diff --git a/sc/source/filter/inc/makefile.mk b/sc/source/filter/inc/makefile.mk
new file mode 100644
index 000000000000..0f89d88a929d
--- /dev/null
+++ b/sc/source/filter/inc/makefile.mk
@@ -0,0 +1,61 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
diff --git a/sc/source/filter/inc/namebuff.hxx b/sc/source/filter/inc/namebuff.hxx
new file mode 100644
index 000000000000..6fda7239313f
--- /dev/null
+++ b/sc/source/filter/inc/namebuff.hxx
@@ -0,0 +1,426 @@
+/*************************************************************************
+ *
+ * $RCSfile: namebuff.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _NAMEBUFF_HXX
+#define _NAMEBUFF_HXX
+
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+#ifndef SC_COMPILER_HXX
+#include "compiler.hxx"
+#endif
+
+#ifndef _ROOT_HXX
+#include "root.hxx"
+#endif
+
+class ScDocument;
+class ScTokenArray;
+class NameBuffer;
+
+
+
+
+class StringHashEntry
+{
+private:
+ friend NameBuffer;
+ String aString;
+ UINT32 nHash;
+
+ static UINT32 MakeHashCode( const String& );
+public:
+ inline StringHashEntry( const String& );
+ inline StringHashEntry( void );
+ inline void operator =( const sal_Char* );
+ inline void operator =( const String& );
+ inline void operator =( const StringHashEntry& );
+ inline BOOL operator ==( const StringHashEntry& ) const;
+};
+
+
+inline StringHashEntry::StringHashEntry( void )
+{
+}
+
+
+inline StringHashEntry::StringHashEntry( const String& r ) : aString( r )
+{
+ nHash = MakeHashCode( r );
+}
+
+
+inline void StringHashEntry::operator =( const sal_Char* p )
+{
+ aString.AssignAscii( p );
+ nHash = MakeHashCode( aString );
+}
+
+
+inline void StringHashEntry::operator =( const String& r )
+{
+ aString = r;
+ nHash = MakeHashCode( r );
+}
+
+
+inline void StringHashEntry::operator =( const StringHashEntry& r )
+{
+ nHash = r.nHash;
+ aString = r.aString;
+}
+
+
+inline BOOL StringHashEntry::operator ==( const StringHashEntry& r ) const
+{
+ return ( nHash == r.nHash && aString == r.aString );
+}
+
+
+
+class NameBuffer : private List, public ExcRoot
+{
+private:
+ UINT16 nBase; // Index-Basis
+public:
+ inline NameBuffer( void );
+ inline NameBuffer( RootData* );
+ inline NameBuffer( RootData*, UINT16 nNewBase );
+
+ virtual ~NameBuffer();
+ inline const String* Get( UINT16 nIndex );
+ inline UINT16 GetLastIndex( void );
+ inline void SetBase( UINT16 nNewBase = 0 );
+ void operator <<( const String& rNewString );
+ void Reset( void );
+ BOOL Find( const sal_Char* pRefName, UINT16& rIndex );
+};
+
+
+inline NameBuffer::NameBuffer( void )
+{
+ nBase = 0;
+}
+
+
+inline NameBuffer::NameBuffer( RootData* p ) : ExcRoot( p )
+{
+ nBase = 0;
+}
+
+
+inline NameBuffer::NameBuffer( RootData* p, UINT16 nNewBase ) : ExcRoot( p )
+{
+ nBase = nNewBase;
+}
+
+
+inline const String* NameBuffer::Get( UINT16 n )
+{
+ if( n < nBase )
+ return NULL;
+ else
+ {
+ StringHashEntry* pObj = ( StringHashEntry* ) List::GetObject( n );
+
+ if( pObj )
+ return &pObj->aString;
+ else
+ return NULL;
+ }
+}
+
+
+inline UINT16 NameBuffer::GetLastIndex( void )
+{
+ DBG_ASSERT( Count() + nBase <= 0xFFFF, "*NameBuffer::GetLastIndex(): Ich hab' die Nase voll!" );
+
+ return ( UINT16 ) ( Count() + nBase );
+}
+
+
+inline void NameBuffer::SetBase( UINT16 nNewBase )
+{
+ nBase = nNewBase;
+}
+
+
+
+
+class RangeNameBuffer : private List, public ExcRoot
+{
+protected:
+ static const UINT16 nError; // Dummy, Null-Wert
+public:
+ inline RangeNameBuffer( RootData* p );
+ // Name, Definition
+ void Store( ByteString&, const ScTokenArray*,
+ UINT16 nAltSheet = 0, const BOOL bPrintarea = FALSE );
+ void Store( String&, const ScTokenArray*,
+ UINT16 nAltSheet = 0, const BOOL bPrintarea = FALSE );
+ inline UINT16 operator[]( UINT16 nExcInd ) const;
+ inline UINT16 GetPos( void ) const;
+};
+
+
+inline RangeNameBuffer::RangeNameBuffer( RootData* p ) : ExcRoot( p )
+{
+ // Ersten gibt's in Excel UND bei SC nicht!
+ Insert( ( void* ) FALSE, LIST_APPEND );
+}
+
+
+inline UINT16 RangeNameBuffer::operator[]( UINT16 nExcInd ) const
+{
+ DBG_ASSERT( nExcInd, "-RangeNameBuffer::operator[](): 0 nicht definiert!?" );
+
+ return nExcInd;
+}
+
+
+inline UINT16 RangeNameBuffer::GetPos( void ) const
+{
+ DBG_ASSERT( Count() <= 0xFFFF, "*RangeNameBuffer::GetPos(): zuviel in Liste!" );
+
+ return ( UINT16 ) Count();
+}
+
+
+
+
+class ShrfmlaBuffer : private List, public ExcRoot
+{
+private:
+ UINT16 nBase; // Startwert Indizierung
+public:
+ ShrfmlaBuffer( RootData* pRD );
+ virtual ~ShrfmlaBuffer();
+ void Store( const ScRange& rRange, const ScTokenArray& );
+ UINT16 Find( const ScAddress aAdress );
+ };
+
+
+
+
+class RangeNameBufferWK3 : private List
+{
+private:
+ struct ENTRY
+ {
+ StringHashEntry aStrHashEntry;
+ ComplRefData aComplRefDataRel;
+ String aScAbsName;
+ UINT16 nAbsInd; // == 0 -> noch keine Abs-Name!
+ UINT16 nRelInd;
+ BOOL bSingleRef;
+ ENTRY( const String& rName, const String& rScName, const ComplRefData& rCRD ) :
+ aStrHashEntry( rName ),
+ aComplRefDataRel( rCRD ),
+ aScAbsName( rScName )
+ {
+ nAbsInd = 0;
+ aScAbsName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "_ABS" ) );
+ }
+ };
+
+ ScTokenArray* pScTokenArray;
+ UINT16 nIntCount;
+public:
+ RangeNameBufferWK3( void );
+ virtual ~RangeNameBufferWK3();
+ void Add( const String& rName, const ComplRefData& rCRD );
+ inline void Add( const String& rName, const ScRange& aScRange );
+ BOOL FindRel( const String& rRef, UINT16& rIndex );
+ BOOL FindAbs( const String& rRef, UINT16& rIndex );
+};
+
+
+inline void RangeNameBufferWK3::Add( const String& rName, const ScRange& aScRange )
+{
+ ComplRefData aCRD;
+ SingleRefData* pSRD;
+ const ScAddress* pScAddr;
+
+ pSRD = &aCRD.Ref1;
+ pScAddr = &aScRange.aStart;
+ pSRD->SetFlag3D( TRUE );
+ pSRD->nCol = pScAddr->Col();
+ pSRD->nRow = pScAddr->Row();
+ pSRD->nTab = pScAddr->Tab();
+
+ // zunaechst ALLE Refs nur absolut
+ pSRD->SetColRel( FALSE );
+ pSRD->SetRowRel( FALSE );
+ pSRD->SetTabRel( FALSE );
+
+ pSRD = &aCRD.Ref2;
+ pScAddr = &aScRange.aEnd;
+ pSRD->SetFlag3D( TRUE );
+ pSRD->nCol = pScAddr->Col();
+ pSRD->nRow = pScAddr->Row();
+ pSRD->nTab = pScAddr->Tab();
+
+ // zunaechst ALLE Refs nur absolut
+ pSRD->SetColRel( FALSE );
+ pSRD->SetRowRel( FALSE );
+ pSRD->SetTabRel( FALSE );
+
+ Add( rName, aCRD );
+}
+
+
+
+
+class ExtSheetBuffer : private List, public ExcRoot
+{
+private:
+ struct Cont
+ {
+ String aFile;
+ String aTab;
+ UINT16 nTabNum; // 0xFFFF -> noch nicht angelegt
+ // 0xFFFE -> versucht anzulegen, ging aber schief
+ // 0xFFFD -> soll im selben Workbook sein, findet's aber nicht
+ BOOL bSWB;
+ BOOL bLink;
+ Cont( const String& rFilePathAndName, const String& rTabName ) :
+ aFile( rFilePathAndName ),
+ aTab( rTabName )
+ {
+ nTabNum = 0xFFFF; // -> Tabelle noch nicht erzeugt
+ bSWB = bLink = FALSE;
+ }
+ Cont( const String& rFilePathAndName, const String& rTabName,
+ const BOOL bSameWB ) :
+ aFile( rFilePathAndName ),
+ aTab( rTabName )
+ {
+ nTabNum = 0xFFFF; // -> Tabelle noch nicht erzeugt
+ bSWB = bSameWB;
+ bLink = FALSE;
+ }
+ };
+public:
+ inline ExtSheetBuffer( RootData* );
+ virtual ~ExtSheetBuffer();
+
+ void Add( const String& rFilePathAndName,
+ const String& rTabName, const BOOL bSameWorkbook = FALSE );
+
+ void AddLink( const String& rComplStr );
+
+ BOOL GetScTabIndex( UINT16 nExcSheetIndex, UINT16& rIn_LastTab_Out_ScIndex );
+ BOOL IsLink( const UINT16 nExcSheetIndex ) const;
+ BOOL GetLink( const UINT16 nExcSheetIndex, String &rAppl, String &rDoc ) const;
+
+ void Reset( void );
+};
+
+
+inline ExtSheetBuffer::ExtSheetBuffer( RootData* p ) : ExcRoot( p )
+{
+}
+
+
+
+
+struct ExtName
+{
+ String aName;
+ UINT32 nStorageId;
+ UINT16 nFlags;
+
+ inline ExtName( const String& r ) : aName( r ), nStorageId( 0 ) {}
+
+ BOOL IsDDE( void ) const;
+ BOOL IsOLE( void ) const;
+ BOOL IsName( void ) const;
+};
+
+
+
+
+class ExtNameBuff : private List
+{
+private:
+ static const sal_Char* pJoostTest;
+protected:
+public:
+ virtual ~ExtNameBuff();
+
+ void AddDDE( const String& rName );
+ void AddOLE( const String& rName, UINT32 nStorageId );
+ void AddName( const String& rName );
+
+ const ExtName* GetName( const UINT16 nExcelIndex ) const;
+
+ void Reset( void );
+};
+
+
+#endif
+
+
diff --git a/sc/source/filter/inc/op.h b/sc/source/filter/inc/op.h
new file mode 100644
index 000000000000..465efeb9d355
--- /dev/null
+++ b/sc/source/filter/inc/op.h
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * $RCSfile: op.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _OP_H
+#define _OP_H
+
+#include <tools/solar.h>
+
+// OP-Code-Funktionen
+class SvStream;
+void NI( SvStream &aStream, USHORT nLaenge );
+void OP_BOF( SvStream &aStream, USHORT nLaenge );
+void OP_EOF( SvStream &aStream, USHORT nLaenge );
+void OP_Integer( SvStream &aStream, USHORT nLaenge );
+void OP_Number( SvStream &aStream, USHORT nLaenge );
+void OP_Label( SvStream &aStream, USHORT nLaenge );
+void OP_Text( SvStream &aStream, USHORT nLaenge ); // WK3
+void OP_Integer3( SvStream &aStream, USHORT nLaenge ); // WK3
+void OP_Number3( SvStream &aStream, USHORT nLaenge ); // WK3
+void OP_Formula( SvStream &aStream, USHORT nLaenge );
+void OP_Formula3( SvStream &aStream, USHORT nLaenge ); // WK3
+void OP_ColumnWidth( SvStream &aStream, USHORT nLaenge );
+void OP_NamedRange( SvStream &aStream, USHORT nLaenge );
+void OP_SymphNamedRange( SvStream &aStream, USHORT nLaenge );
+void OP_Footer( SvStream &aStream, USHORT nLaenge );
+void OP_Header( SvStream &aStream, USHORT nLaenge );
+void OP_Margins( SvStream &aStream, USHORT nLaenge );
+void OP_HiddenCols( SvStream &aStream, USHORT nLaenge );
+void OP_Window1( SvStream &aStream, USHORT nLaenge );
+void OP_Blank( SvStream &aStream, USHORT nLaenge );
+
+#endif
+
diff --git a/sc/source/filter/inc/optab.h b/sc/source/filter/inc/optab.h
new file mode 100644
index 000000000000..ebecca82ebcd
--- /dev/null
+++ b/sc/source/filter/inc/optab.h
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * $RCSfile: optab.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _OPTAB_H
+#define _OPTAB_H
+
+typedef void ( *OPCODE_FKT )( SvStream &aStream, USHORT nLaenge );
+
+#define FKT_LIMIT 101
+
+#endif
+
diff --git a/sc/source/filter/inc/otlnbuff.hxx b/sc/source/filter/inc/otlnbuff.hxx
new file mode 100644
index 000000000000..ed2fc3f7feca
--- /dev/null
+++ b/sc/source/filter/inc/otlnbuff.hxx
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * $RCSfile: otlnbuff.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _OTLNBUFF_HXX
+#define _OTLNBUFF_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class ScOutlineArray;
+
+class OutlineBuffer
+{
+ // -> exctools.cxx
+ private:
+ BYTE* pLevel;
+ BOOL* pOuted;
+ BOOL* pHidden;
+ USHORT nSize;
+ USHORT nLast;
+ BYTE nMaxLevel;
+ ScOutlineArray* pOutlineArray;
+ BOOL bButtonNormal; // TRUE -> right / under
+ public:
+ OutlineBuffer( USHORT nNewSize );
+ ~OutlineBuffer();
+ void SetLevel( USHORT nIndex, BYTE nVal, BOOL bOuted, BOOL bHidden );
+ void SetOuted( USHORT nIndex );
+ void SetOuted( USHORT nIndex, BOOL bOuted );
+ void SetOutlineArray( ScOutlineArray* pOArray );
+ void Reset( void );
+ void Reset( ScOutlineArray* pOArray );
+ void MakeScOutline( void );
+ void SetLevelRange( USHORT nF, USHORT nL, BYTE nVal,
+ BOOL bOuted, BOOL bHidden );
+
+ inline BOOL HasOutline( void ) const;
+
+ inline void SetButtonMode( const BOOL bRightOrUnder );
+};
+
+
+
+
+inline BOOL OutlineBuffer::HasOutline( void ) const
+{
+ return nMaxLevel > 0;
+}
+
+
+inline void OutlineBuffer::SetButtonMode( const BOOL b )
+{
+ bButtonNormal = b;
+}
+
+
+#endif
+
diff --git a/sc/source/filter/inc/root.hxx b/sc/source/filter/inc/root.hxx
new file mode 100644
index 000000000000..7062524d82ed
--- /dev/null
+++ b/sc/source/filter/inc/root.hxx
@@ -0,0 +1,267 @@
+/*************************************************************************
+ *
+ * $RCSfile: root.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _ROOT_HXX
+#define _ROOT_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+#ifndef SC_SCGLOB_HXX
+#include <global.hxx>
+#endif
+
+#ifndef _FLTTYPES_HXX
+#include "flttypes.hxx"
+#endif
+#ifndef SC_FILTER_HXX
+#include "filter.hxx"
+#endif
+#ifndef _EXCDEFS_HXX
+#include "excdefs.hxx"
+#endif
+
+class SvStorage;
+class SvNumberFormatter;
+class ScRangeName;
+
+class ColorBuffer;
+class NameBuffer;
+class RangeNameBuffer;
+class RangeNameBufferWK3;
+class ShrfmlaBuffer;
+class ExtNameBuff;
+class ExtSheetBuffer;
+class FontBuffer;
+class ExcExternDup;
+class ScExtDocOptions;
+class ScEditEngineDefaulter;
+class XF_Buffer;
+class FilterProgressBar;
+class PivotCacheList;
+
+class XtiBuffer;
+class SupbookBuffer;
+class SupbookE;
+
+class ExcETabNumBuffer;
+class ExcNameList;
+class ExcPalette2;
+class UsedFontList;
+class XclSstList;
+class XclSupbookList;
+class XclExternsheetList;
+class XclObjList;
+class XclNoteList;
+class XclEscher;
+class XclPivotCacheList;
+class SfxStyleSheet;
+class ExcRecordList;
+//class SvxURLField;
+class XclHlink;
+
+// ---------------------------------------------------------- Excel Imp~/Exp~ -
+
+struct RootData // -> Inkarnation jeweils im ImportExcel-Objekt!
+{
+ SvStorage* pRootStorage; // THE storage
+ double fColScale; // Skalierungs-Faktoren fuer
+ double fRowScale; // Spaltenbreiten / Zeilenhoehen
+ ScDocument* pDoc;
+ SvNumberFormatter* pFormTable;
+ ScRangeName* pScRangeName;
+ ColorBuffer* pColor;
+ XF_Buffer* pXF_Buffer;
+ FontBuffer* pFontBuffer;
+ LanguageType eDefLanguage;
+ String aStandard; // Schluessel fuer Exc-Standard-Format
+ BiffTyp eDateiTyp; // feine Differenzierung
+ BiffTyp eHauptDateiTyp; // grobe Klassifizierung
+ BiffTyp eGlobalDateiTyp; // was war's ganz am Anfang?
+ ExtSheetBuffer* pExtSheetBuff;
+ NameBuffer* pTabNameBuff;
+ RangeNameBuffer* pRNameBuff;
+ ShrfmlaBuffer* pShrfmlaBuff;
+ ExtNameBuff* pExtNameBuff;
+ USHORT* pAktTab; // Zeiger auf aktuelle Tab-Nummer
+ const CharSet* pCharset; // actual charset (im- / export!)
+ ScExtDocOptions* pExtDocOpt;
+ FilterProgressBar* pProgress; // aktueller Progressbar
+
+ ScEditEngineDefaulter* pEdEng; // for rstrings, etc
+ ScEditEngineDefaulter* pEdEngHF; // special for header and footer
+
+ BOOL bCellCut; // bei Ueberlauf max. Cols / Rows
+ BOOL bBreakSharedFormula; // SharedFormula bei Export aufbrechen?
+ BOOL bDefaultPage; // Landscape etc. nicht gesetzt
+ BOOL bChartTab; // Tabelle mit einem einzigen Chart
+
+ // Biff8
+ XtiBuffer* pXtiBuffer; // Elemente der Externsheet-Records
+ SupbookBuffer* pSupbookBuffer; // Liste Suporting External Workbooks
+ SupbookE* pCurrSupbook; // current supbook in pSupbookBuffer
+
+ SvStorage* pPivotCacheStorage;
+ PivotCacheList* pImpPivotCacheList; // pivot caches for import
+
+ ScEditEngineDefaulter& GetEdEng( void ); // -> exctools.cxx
+ ScEditEngineDefaulter& GetEdEngForHF( void ); // -> exctools.cxx
+
+ UINT32 nCondRangeCnt;
+ UINT16 nLastCond;
+ String GetCondFormStyleName( const UINT16 nCondCnt ); // -> exctools.cxx
+
+ // Erweiterungen fuer Export
+ ExcETabNumBuffer* pTabBuffer;
+ ExcNameList* pNameList;
+ ExcPalette2* pPalette2;
+ UsedFontList* pFontRecs;
+ ExcExternDup* pExtSheetCntAndRecs;
+ UINT16 nRowMax;
+ UINT16 nRangeNameIndex;
+ // Biff8
+ XclSstList* pSstRecs;
+ XclExternsheetList* pExternsheetRecs;
+ XclObjList* pObjRecs;
+ XclNoteList* pNoteRecs;
+ XclEscher* pEscher;
+
+ XclPivotCacheList* pPivotCacheList;
+
+ BOOL bWriteVBAStorage;
+
+ UINT16 nCodenames;
+
+ SfxStyleSheet* pStyleSheet;
+ SfxItemSet* pStyleSheetItemSet;
+
+// const SvxURLField* pLastHlink; // last found hyperlink
+ XclHlink* pLastHlink;
+ BOOL bStoreRel;
+ String* pBasePath;
+
+ RootData( void ); // -> exctools.cxx
+ ~RootData(); // -> exctools.cxx
+};
+
+
+
+
+class ExcRoot
+{
+private:
+protected:
+ RootData* pExcRoot;
+ inline ExcRoot( void );
+ inline ExcRoot( RootData* pNexExcRoot );
+public:
+ inline void Set( RootData* pExcRoot );
+};
+
+
+
+
+inline ExcRoot::ExcRoot( void )
+{
+#ifdef DBG_UTIL
+ pExcRoot = NULL;
+#endif
+}
+
+
+inline ExcRoot::ExcRoot( RootData* pNexExcRoot )
+{
+ pExcRoot = pNexExcRoot;
+}
+
+
+inline void ExcRoot::Set( RootData* pRD )
+{
+ pExcRoot = pRD;
+}
+
+
+
+
+// ---------------------------------------------------------- Lotus Imp~/Exp~ -
+
+class LotusRangeList;
+class LotusFontBuffer;
+class LotAttrTable;
+
+
+struct LOTUS_ROOT
+{
+ ScDocument* pDoc;
+ LotusRangeList* pRangeNames;
+ ScRangeName* pScRangeName;
+ CharSet eCharsetQ;
+ Lotus123Typ eFirstType;
+ Lotus123Typ eActType;
+ ScRange aActRange;
+ RangeNameBufferWK3* pRngNmBffWK3;
+ LotusFontBuffer* pFontBuff;
+ LotAttrTable* pAttrTable;
+};
+
+extern LOTUS_ROOT* pLotusRoot; // -> Inkarn. in filter.cxx
+
+#endif
diff --git a/sc/source/filter/inc/rtfexp.hxx b/sc/source/filter/inc/rtfexp.hxx
new file mode 100644
index 000000000000..71c06f89418e
--- /dev/null
+++ b/sc/source/filter/inc/rtfexp.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtfexp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_RTFEXP_HXX
+#define SC_RTFEXP_HXX
+
+#include "expbase.hxx"
+
+
+class ScRTFExport : public ScExportBase
+{
+ ULONG* pCellX; // kumulierte Zellbreiten einer Tabelle
+
+ void WriteTab( USHORT nTab );
+ void WriteRow( USHORT nTab, USHORT nRow );
+ void WriteCell( USHORT nTab, USHORT nCol, USHORT nRow );
+
+public:
+
+ ScRTFExport( SvStream&, ScDocument*, const ScRange& );
+ virtual ~ScRTFExport();
+
+ ULONG Write();
+};
+
+
+#endif // SC_RTFEXP_HXX
+
diff --git a/sc/source/filter/inc/rtfparse.hxx b/sc/source/filter/inc/rtfparse.hxx
new file mode 100644
index 000000000000..a417d023785a
--- /dev/null
+++ b/sc/source/filter/inc/rtfparse.hxx
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtfparse.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_RTFPARSE_HXX
+#define SC_RTFPARSE_HXX
+
+#include "eeparser.hxx"
+
+#ifdef SC_RTFPARSE_CXX
+
+struct ScRTFCellDefault
+{
+ SfxItemSet aItemSet;
+ USHORT nCol;
+ USHORT nTwips; // rechter Rand der Zelle
+ USHORT nColOverlap; // MergeCell wenn >1, merged cells wenn 0
+
+ ScRTFCellDefault( SfxItemPool* pPool ) :
+ aItemSet( *pPool ), nColOverlap(1) {}
+};
+
+DECLARE_LIST( ScRTFDefaultList, ScRTFCellDefault* );
+// Remove: (const unsigned short &) not sufficiently different from (unsigned short)
+// deswegen ULONG, typedef bringt's auch nicht :-(
+SV_DECL_VARARR_SORT( ScRTFColTwips, ULONG, 16, 4);
+
+#else // SC_RTFPARSE_CXX
+
+struct ScRTFCellDefault;
+class ScRTFDefaultList;
+class ScRTFColTwips;
+
+#endif // SC_RTFPARSE_CXX
+
+
+class EditEngine;
+
+class ScRTFParser : public ScEEParser
+{
+private:
+ ScRTFDefaultList* pDefaultList;
+ ScRTFColTwips* pColTwips;
+ ScRTFCellDefault* pInsDefault;
+ ScRTFCellDefault* pActDefault;
+ ScRTFCellDefault* pDefMerge;
+ ULONG nStartAdjust;
+ USHORT nLastWidth;
+ BOOL bNewDef;
+
+ DECL_LINK( RTFImportHdl, ImportInfo* );
+ inline void NextRow();
+ void EntryEnd( ScEEParseEntry*, const ESelection& );
+ void ProcToken( ImportInfo* );
+ void ColAdjust();
+ BOOL SeekTwips( USHORT nTwips, USHORT* pCol );
+ void NewCellRow( ImportInfo* );
+
+public:
+ ScRTFParser( EditEngine* );
+ virtual ~ScRTFParser();
+ virtual ULONG Read( SvStream& );
+};
+
+
+#endif
diff --git a/sc/source/filter/inc/scflt.hxx b/sc/source/filter/inc/scflt.hxx
new file mode 100644
index 000000000000..3b4dbe69d044
--- /dev/null
+++ b/sc/source/filter/inc/scflt.hxx
@@ -0,0 +1,776 @@
+/*************************************************************************
+ *
+ * $RCSfile: scflt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SCFLT_HXX
+#define SC_SCFLT_HXX
+
+#include <tools/solar.h>
+#include "viewopti.hxx"
+
+// FehlerNummern
+#define errUnknownFormat 1
+#define errUnknownID 2
+#define errOutOfMemory 3
+
+// Identifiers im FileFormat
+#define ColWidthID 1
+#define ColAttrID 2
+#define RowHeightID 3
+#define RowAttrID 4
+#define FontID 5
+#define NameID 6
+#define TableID 7
+#define ObjectID 8
+#define PatternID 9
+#define DataBaseID 10
+
+// Zeilen/Spalten Flags
+#define crfSoftBreak 1
+#define crfHardBreak 2
+#define crfHidden 4
+
+// Zelltypen
+#define ctValue 1
+#define ctString 2
+#define ctFormula 3
+#define ctNote 4
+
+// FontStyles
+#define ffDontCare 0x00
+#define ffRoman 0x10
+#define ffSwiss 0x20
+#define ffModern 0x30
+#define ffScript 0x40
+#define ffDecorative 0x50
+
+// FontWeight
+#define fwNormal 400
+
+// FontAttribute
+#define atNone 0
+#define atBold 1
+#define atItalic 2
+#define atUnderline 4
+#define atStrikeOut 8
+
+// Horizontale Ausrichtung
+#define hjNone 0
+#define hjLeft 1
+#define hjCenter 2
+#define hjRight 3
+
+// Vertikale Ausrichtung
+#define vjNone 0
+#define vjTop 1
+#define vjCenter 2
+#define vjBottom 3
+
+// AusrichtungsFlags
+#define ojWordBreak 0x01
+#define ojBottomTop 0x02
+#define ojTopBottom 0x04
+
+// ZellRaster
+#define raNone 0
+#define raGray12 1
+#define raGray25 2
+#define raGray50 3
+#define raGray75 4
+#define raGray100 5
+
+// Zellschutz
+#define paProtect 1
+#define paHideFormula 2
+#define paHideAll 4
+#define paHidePrint 8
+
+// ZahlenFormatFlags
+#define vfStandard 0
+#define vfMoney 1
+#define vfThousend 2
+#define vfPercent 3
+#define vfExponent 4
+#define vfZerro 5
+#define vfDate 6
+#define vfTime 7
+#define vfBoolean 8
+#define vfStandardRed 9
+#define vfMoneyRed 10
+#define vfThousendRed 11
+#define vfPercentRed 12
+#define vfExponentRed 13
+#define vfFormula 14
+#define vfString 15
+#define vfNone 16
+
+// DatumsFormatFlags
+#define df_NDMY_Long 0
+#define df_DMY_Long 1
+#define df_MY_Long 2
+#define df_NDM_Long 3
+#define df_DM_Long 4
+#define df_M_Long 5
+#define df_NDMY_Short 6
+#define df_DMY_Short 7
+#define df_MY_Short 8
+#define df_NDM_Short 9
+#define df_DM_Short 10
+#define df_M_Short 11
+#define df_Q_Long 12
+#define df_Q_Short 13
+
+// ZeitFormatFlags
+#define tf_HMS_Long 0
+#define tf_HM_Long 1
+#define tf_HMS_Short 2
+#define tf_HM_Short 3
+
+// Attribute für FormatVorlage
+#define pfValue 0x01
+#define pfFont 0x02
+#define pfJustify 0x04
+#define pfFrame 0x08
+#define pfRaster 0x10
+#define pfProtection 0x20
+
+// Displayflags für die Tabelle
+#define dfFormula 0x0001 // Formeln
+#define dfZerro 0x0002 // Nullwerte
+#define dfGrid 0x0004 // Gitternetz
+#define dfPageBreak 0x0008 // Seitenumbruch
+#define dfColRowBar 0x0010 // Zeilen/Spalten Köpfe (Dummy)
+#define dfSyntax 0x0020 // Syntax Highlighting
+#define dfPrintPage 0x0040 // Druckbildansicht (Dummy)
+#define dfObjectAll 0x0080 // Objekte anzeigen
+#define dfObjectFrame 0x0100 // Objekte als Platzhalter
+#define dfObjectNone 0x0200 // Objekte nicht anzeigen
+#define dfNoteMark 0x0400 // Notizanzeiger
+#define dfProtectMark 0x0800 // Schutzanzeiger
+
+// Objekt Typen
+#define otNone 0 // s.u.
+#define otOle 1
+#define otImage 2
+#define otChart 3
+
+// Grafik Typen
+#define gtNone 0 // Kann nicht vorkommen
+#define gtOle 1 // Ole 1.0 Objekt
+#define gtImage 2 // Image (Bitmap oder Metafile)
+#define gtChart 3 // Chart
+
+// Datum/Uhrzeit
+struct Sc10DateTime
+{
+ USHORT Year;
+ USHORT Month;
+ USHORT Day;
+ USHORT Hour;
+ USHORT Min;
+ USHORT Sec;
+};
+
+// ZahlenFormate
+struct Sc10ValueFormat
+{
+ BYTE Format; // Zahl, Waehrung, Prozent etc.
+ BYTE Info; // Anzahl Nachkommastellen, Anzahl Stellen, bzw. Datums/Zeitformat
+};
+
+// Fontbeschreibung
+struct Sc10LogFont
+{
+ INT16 lfHeight;
+ INT16 lfWidth;
+ INT16 lfEscapement;
+ INT16 lfOrientation;
+ INT16 lfWeight;
+ BYTE lfItalic;
+ BYTE lfUnderline;
+ BYTE lfStrikeOut;
+ BYTE lfCharSet;
+ BYTE lfOutPrecision;
+ BYTE lfClipPrecision;
+ BYTE lfQuality;
+ BYTE lfPitchAndFamily;
+ sal_Char lfFaceName[32];
+
+ int operator==( const Sc10LogFont& rData ) const;
+};
+
+// RGB-Frabwerte
+struct Sc10Color
+{
+ BYTE Dummy;
+ BYTE Blue;
+ BYTE Green;
+ BYTE Red;
+ int operator==( const Sc10Color& rColor ) const;
+};
+
+// Blockbeschreibung
+struct Sc10BlockRect
+{
+ INT16 x1;
+ INT16 y1;
+ INT16 x2;
+ INT16 y2;
+};
+
+// Datenbank-Bereich
+struct Sc10DataBaseRec
+{
+ sal_Char Name[32];
+ INT16 Tab;
+ Sc10BlockRect Block;
+ BYTE RowHeader;
+ INT16 SortField0;
+ BYTE SortUpOrder0;
+ INT16 SortField1;
+ BYTE SortUpOrder1;
+ INT16 SortField2;
+ BYTE SortUpOrder2;
+ BYTE IncludeFormat;
+ INT16 QueryField0;
+ INT16 QueryOp0;
+ BYTE QueryByString0;
+ sal_Char QueryString0[64];
+ double QueryValue0;
+ INT16 QueryConnect1;
+ INT16 QueryField1;
+ INT16 QueryOp1;
+ BYTE QueryByString1;
+ sal_Char QueryString1[64];
+ double QueryValue1;
+ INT16 QueryConnect2;
+ INT16 QueryField2;
+ INT16 QueryOp2;
+ BYTE QueryByString2;
+ sal_Char QueryString2[64];
+ double QueryValue2;
+};
+
+// Kopf/Fußzeilen-Beschreibung
+struct Sc10HeadFootLine
+{
+ sal_Char Title[128];
+ Sc10LogFont LogFont;
+ BYTE HorJustify;
+ BYTE VerJustify;
+ USHORT Raster;
+ USHORT Frame;
+ Sc10Color TextColor;
+ Sc10Color BackColor;
+ Sc10Color RasterColor;
+ USHORT FrameColor; // Nibble Codierte Farben link oben rechts unten
+ USHORT Reserved;
+
+ int operator==( const Sc10HeadFootLine& rData ) const;
+};
+
+// Seitenformat
+struct Sc10PageFormat
+{
+ Sc10HeadFootLine HeadLine;
+ Sc10HeadFootLine FootLine;
+ INT16 Orientation;
+ INT16 Width;
+ INT16 Height;
+ INT16 NonPrintableX;
+ INT16 NonPrintableY;
+ INT16 Left;
+ INT16 Top;
+ INT16 Right;
+ INT16 Bottom;
+ INT16 Head;
+ INT16 Foot;
+ BYTE HorCenter;
+ BYTE VerCenter;
+ BYTE PrintGrid;
+ BYTE PrintColRow;
+ BYTE PrintNote;
+ BYTE TopBottomDir;
+ sal_Char PrintAreaName[32];
+ Sc10BlockRect PrintArea;
+ sal_Char PrnZoom[6]; // Pascal 6 Byte Realzahl
+ USHORT FirstPageNo;
+ INT16 RowRepeatStart;
+ INT16 RowRepeatEnd;
+ INT16 ColRepeatStart;
+ INT16 ColRepeatEnd;
+ sal_Char Reserved[26];
+
+ int operator==( const Sc10PageFormat& rData ) const;
+};
+
+// Tabellenschutz
+struct Sc10TableProtect
+{
+ sal_Char PassWord[16];
+ USHORT Flags;
+ BYTE Protect;
+};
+
+// Documentschutz
+struct Sc10SheetProtect
+{
+ sal_Char PassWord[16];
+ USHORT Flags;
+ BYTE Protect;
+};
+
+// Dateikopf StarCalc 1.0 Datei
+struct Sc10FileHeader
+{
+ sal_Char CopyRight[30];
+ USHORT Version;
+ sal_Char Reserved[32];
+};
+
+// Benutzer-Definierte Datei-Beschreibung
+struct Sc10FileInfo
+{
+ sal_Char Title[64];
+ sal_Char Thema[64];
+ sal_Char Keys[64];
+ sal_Char Note[256];
+ sal_Char InfoLabel0[16];
+ sal_Char InfoLabel1[16];
+ sal_Char InfoLabel2[16];
+ sal_Char InfoLabel3[16];
+ sal_Char Info0[32];
+ sal_Char Info1[32];
+ sal_Char Info2[32];
+ sal_Char Info3[32];
+ sal_Char CreateAuthor[64];
+ sal_Char ChangeAuthor[64];
+ sal_Char PrintAuthor[64];
+ Sc10DateTime CreateDate;
+ Sc10DateTime ChangeDate;
+ Sc10DateTime PrintDate;
+ ULONG PageCount;
+ ULONG ChartCount;
+ ULONG PictureCount;
+ ULONG GraphCount;
+ ULONG OleCount;
+ ULONG NoteCount;
+ ULONG TextCellCount;
+ ULONG ValueCellCount;
+ ULONG FormulaCellCount;
+ ULONG CellCount;
+ sal_Char Reserved[52];
+};
+
+// Letze Cursorposition
+struct Sc10EditStateInfo
+{
+ // Cursor Position
+ USHORT CarretX;
+ USHORT CarretY;
+ USHORT CarretZ;
+ // Linke obere Ecke der Tabelle im Fenster
+ USHORT DeltaX;
+ USHORT DeltaY;
+ USHORT DeltaZ;
+ // Ueberfluessig in StarCalc 3.0
+ BYTE DataBaseMode;
+ sal_Char Reserved[51];
+};
+
+// Attribut-Eintrag
+struct Sc10ColData
+{
+ USHORT Row;
+ USHORT Value;
+};
+
+// ZellAttribut-Beschreibung
+struct Sc10ColAttr
+{
+ USHORT Count;
+ Sc10ColData* pData;
+
+ Sc10ColAttr() : pData(NULL) {}
+};
+
+// GraphHeader
+struct Sc10GraphHeader
+{
+ BYTE Typ; // Typ der Grafik (Ole-Objekt, Image (Bitmap oder MetaFile), Chart-Object)
+ INT16 CarretX; // ZellPosition der Grafik
+ INT16 CarretY;
+ INT16 CarretZ;
+ INT32 x; // x,y Abstand zum Zellrand in Pixel (Pixel weil ich Grafiken in Fenstern ablege)
+ INT32 y;
+ INT32 w; // w,h Breite und Hoehe in Pixel
+ INT32 h;
+ BYTE IsRelPos; // Ist die Position relativ zur Zelle oder absolute in der Tabelle
+ BYTE DoPrint; // Soll die Grafik ausgedruckt werden
+ USHORT FrameType; // Art der Umrandung um die Grafik (Keine, Einfach, Doppelt, Einfach Dick, Doppelt Dick)
+ BYTE IsTransparent; // Soll der Hintergrund gezeichnet werden
+ Sc10Color FrameColor; // Umrandungsfarbe als RGB-Wert
+ Sc10Color BackColor; // Hintergrundfarbe als RGB-Wert
+ sal_Char Reserved[32]; // Na was wohl
+};
+
+// ImageHeader
+struct Sc10ImageHeader
+{
+ sal_Char FileName[128]; // Dateiname des urspruenglich eingefügten Bildes
+ INT16 Typ; // Typ der Grafik (Bitmap oder Metafile)
+ BYTE Linked; // Kann nicht vorkommen
+ INT16 x1; // Urspruengliche Groesse der Grafik (nur fuer Metafiles)
+ INT16 y1;
+ INT16 x2;
+ INT16 y2;
+ ULONG Size; // Groesse der Grafik in BYTES
+};
+
+// ChartHeader
+struct Sc10ChartHeader
+{
+ INT16 MM; // Meatfile Struktur MapMode, Breite, Hoehe
+ INT16 xExt;
+ INT16 yExt;
+ ULONG Size; // Groesse der Grafik in BYTES
+};
+
+// ChartSheetData
+struct Sc10ChartSheetData
+{
+ BYTE HasTitle; // Hat das Chart Daten aus der Tabell fuer einen Titel
+ INT16 TitleX; // Zellposition des Titels
+ INT16 TitleY;
+ BYTE HasSubTitle; // Hat das Chart Daten aus der Tabell fuer einen Untertitel
+ INT16 SubTitleX; // Zellposition des Untertitels
+ INT16 SubTitleY;
+ BYTE HasLeftTitle; // Hat das Chart Daten aus der Tabelle fuer einen Linken-Titel
+ INT16 LeftTitleX; // Zellposition des Linken-Titels
+ INT16 LeftTitleY;
+ BYTE HasLegend; // Hat das Chart Daten aus der Tabelle fuer eine Legende
+ INT16 LegendX1; // Zellen der Legende
+ INT16 LegendY1;
+ INT16 LegendX2;
+ INT16 LegendY2;
+ BYTE HasLabel; // Hat das Chart Daten aus der Tabelle fuer die Achsbeschriftung
+ INT16 LabelX1; // Zellen der Achsbeschriftung
+ INT16 LabelY1;
+ INT16 LabelX2;
+ INT16 LabelY2;
+ INT16 DataX1; // Zellen der Daten
+ INT16 DataY1;
+ INT16 DataX2;
+ INT16 DataY2;
+ sal_Char Reserved[64];
+};
+
+#define AGPie2D 1 // Pie Chart 2D
+#define AGPie3D 2 // Pie Chart 3D
+#define AGBar2D 3 // Bar Chart 2D
+#define AGBar3D 4 // Bar Chart 3D
+#define AGGantt 5 // Gantt Diagramm
+#define AGLine 6 // Line Chart
+#define AGLogLine 7 // Logarythmic-Coordinate Chart
+#define AGArea 8 // Area Chart
+#define AGHLC 11 // High-Low-Close Chart
+#define AGPolar 10 // Polar-Coordinate Chart
+
+typedef sal_Char Sc10ChartText[30];
+
+struct Sc10ChartTypeData
+{
+ INT16 NumSets;
+ INT16 NumPoints;
+ INT16 DrawMode;
+ INT16 GraphType;
+ INT16 GraphStyle;
+ sal_Char GraphTitle[80];
+ sal_Char BottomTitle[80];
+ INT16 SymbolData[256];
+ INT16 ColorData[256];
+ INT16 ThickLines[256];
+ INT16 PatternData[256];
+ INT16 LinePatternData[256];
+ INT16 NumGraphStyles[11];
+ INT16 ShowLegend;
+ Sc10ChartText LegendText[256];
+ INT16 ExplodePie;
+ INT16 FontUse;
+ INT16 FontFamily[5];
+ INT16 FontStyle[5];
+ INT16 FontSize[5];
+ INT16 GridStyle;
+ INT16 Labels;
+ INT16 LabelEvery;
+ Sc10ChartText LabelText[50];
+ sal_Char LeftTitle[80];
+ sal_Char Reserved[4646];
+};
+
+
+// FontAttribut
+class Sc10FontData : public DataObject
+{
+public:
+ INT16 Height;
+ BYTE CharSet;
+ BYTE PitchAndFamily;
+ sal_Char FaceName[32];
+
+ Sc10FontData( const Sc10FontData& rData ) :
+ Height( rData.Height ),
+ CharSet( rData.CharSet ),
+ PitchAndFamily( rData.PitchAndFamily ) { strcpy( FaceName, rData.FaceName ); }
+ Sc10FontData( SvStream& rStream );
+ virtual DataObject* Clone() const { return new Sc10FontData(*this); }
+};
+
+
+// Font-Collection
+class Sc10FontCollection : public Collection
+{
+protected:
+ ULONG nError;
+public:
+ Sc10FontCollection( SvStream& rStream );
+ ULONG GetError() { return nError; }
+ Sc10FontData* At(USHORT nIndex) { return (Sc10FontData*)Collection::At(nIndex); }
+};
+
+
+//BereichsDaten
+class Sc10NameData : public DataObject
+{
+public :
+ sal_Char Name[32];
+ sal_Char Reference[64];
+ sal_Char Reserved[12];
+
+ Sc10NameData(const Sc10NameData& rData)
+ {
+ strcpy(Name, rData.Name);
+ strcpy(Reference, rData.Reference);
+ memcpy(Reserved, rData.Reserved, sizeof(Reserved));
+ }
+ Sc10NameData(SvStream& rStream);
+ virtual DataObject* Clone() const { return new Sc10NameData(*this); }
+};
+
+
+// Bereichs-Collection
+class Sc10NameCollection : public Collection
+{
+protected:
+ ULONG nError;
+public:
+ Sc10NameCollection(SvStream& rStream);
+ULONG GetError() { return nError; }
+Sc10NameData* At(USHORT nIndex) { return (Sc10NameData*)Collection::At(nIndex); }
+};
+
+
+// Vorlage-Daten
+class Sc10PatternData : public DataObject
+{
+public:
+ sal_Char Name[32];
+ Sc10ValueFormat ValueFormat;
+ Sc10LogFont LogFont;
+ USHORT Attr;
+ USHORT Justify;
+ USHORT Frame;
+ USHORT Raster;
+ USHORT nColor;
+ USHORT FrameColor;
+ USHORT Flags;
+ USHORT FormatFlags;
+ sal_Char Reserved[8];
+
+ Sc10PatternData(const Sc10PatternData& rData)
+ {
+ strcpy(Name, rData.Name);
+ memcpy(&ValueFormat, &rData.ValueFormat, sizeof(ValueFormat));
+ memcpy(&LogFont, &rData.LogFont, sizeof(LogFont));
+ Attr = rData.Attr;
+ Justify = rData.Justify;
+ Frame = rData.Frame;
+ Raster = rData.Raster;
+ nColor = rData.nColor;
+ FrameColor = rData.FrameColor;
+ Flags = rData.Flags;
+ FormatFlags = rData.FormatFlags;
+ memcpy(Reserved, rData.Reserved, sizeof(Reserved));
+ }
+ Sc10PatternData(SvStream& rStream);
+virtual DataObject* Clone() const { return new Sc10PatternData(*this); }
+};
+
+
+// Vorlage-Collection
+class Sc10PatternCollection : public Collection
+{
+protected:
+ ULONG nError;
+public:
+ Sc10PatternCollection(SvStream& rStream);
+ ULONG GetError() { return nError; }
+ Sc10PatternData* At(USHORT nIndex) { return (Sc10PatternData*)Collection::At(nIndex); }
+};
+
+
+// DatenBank-Daten
+class Sc10DataBaseData : public DataObject
+{
+public:
+ Sc10DataBaseRec DataBaseRec;
+
+ Sc10DataBaseData(const Sc10DataBaseData& rData)
+ {
+ memcpy(&DataBaseRec, &rData.DataBaseRec, sizeof(DataBaseRec));
+ }
+ Sc10DataBaseData(SvStream& rStream);
+virtual DataObject* Clone() const { return new Sc10DataBaseData(*this); }
+};
+
+
+// DatenBank-Collection
+class Sc10DataBaseCollection : public Collection
+{
+protected:
+ ULONG nError;
+ sal_Char ActName[32];
+public:
+ Sc10DataBaseCollection(SvStream& rStream);
+ ULONG GetError() { return nError; }
+ Sc10DataBaseData* At(USHORT nIndex) { return (Sc10DataBaseData*)Collection::At(nIndex); }
+};
+
+
+class Sc10PageData : public DataObject
+{
+public:
+ Sc10PageFormat aPageFormat;
+ Sc10PageData( const Sc10PageFormat& rFormat ) : aPageFormat(rFormat) {}
+ int operator==( const Sc10PageData& rData ) const
+ { return aPageFormat == rData.aPageFormat; }
+ virtual DataObject* Clone() const;
+};
+
+// Seitenformat-Collection
+class Sc10PageCollection : public Collection
+{
+public:
+ Sc10PageCollection() : Collection(1,1) {};
+ Sc10PageData* At(USHORT nIndex) { return (Sc10PageData*)Collection::At(nIndex); }
+ USHORT Insert( const Sc10PageFormat& rData );
+ void PutToDoc( ScDocument* pDoc );
+};
+
+
+class FilterProgressBar;
+
+// Import-Klasse
+class Sc10Import
+{
+ ULONG nError;
+ SvStream& rStream;
+ ScDocument* pDoc;
+ Sc10Color TextPalette[16];
+ Sc10Color BackPalette[16];
+ Sc10Color RasterPalette[16];
+ Sc10Color FramePalette[16];
+ Sc10SheetProtect SheetProtect;
+ Sc10FontCollection* pFontCollection;
+ Sc10NameCollection* pNameCollection;
+ Sc10PatternCollection* pPatternCollection;
+ Sc10DataBaseCollection* pDataBaseCollection;
+ INT16 TabCount;
+ USHORT nShowTab;
+ ScViewOptions aSc30ViewOpt;
+ FilterProgressBar* pPrgrsBar;
+
+public:
+ Sc10Import( SvStream& rStr, ScDocument* pDocument );
+ ~Sc10Import();
+
+ ULONG Import();
+ void LoadFileHeader();
+ void LoadFileInfo();
+ void LoadEditStateInfo();
+ void LoadProtect();
+ void LoadViewColRowBar();
+ void LoadScrZoom();
+ void LoadPalette();
+ void LoadFontCollection();
+ void LoadNameCollection();
+ void ImportNameCollection();
+ void LoadPatternCollection();
+ void LoadDataBaseCollection();
+ void LoadTables();
+ void LoadCol(USHORT Col, USHORT Tab);
+ void LoadColAttr(USHORT Col, USHORT Tab);
+ void LoadAttr(Sc10ColAttr& rAttr);
+ void ChangeFormat(USHORT nFormat, USHORT nInfo, ULONG& nKey);
+ void LoadObjects();
+};
+
+#endif
+
diff --git a/sc/source/filter/inc/scfobj.hxx b/sc/source/filter/inc/scfobj.hxx
new file mode 100644
index 000000000000..c601058f50ff
--- /dev/null
+++ b/sc/source/filter/inc/scfobj.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * $RCSfile: scfobj.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SCFOBJ_HXX
+#define SC_SCFOBJ_HXX
+
+class ScDocument;
+
+class Sc10InsertObject
+{
+public:
+ static void InsertChart( ScDocument* pDoc, USHORT nDestTab, const Rectangle& rRect,
+ USHORT nSrcTab, USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 );
+};
+
+
+#endif
+
diff --git a/sc/source/filter/inc/scmem.h b/sc/source/filter/inc/scmem.h
new file mode 100644
index 000000000000..e5b56b899f35
--- /dev/null
+++ b/sc/source/filter/inc/scmem.h
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * $RCSfile: scmem.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef __SCMEM_H__
+#define __SCMEM_H__
+
+#include <tools/solar.h>
+
+BOOL MemNew( void );
+void MemDelete( void );
+
+#endif
+
diff --git a/sc/source/filter/inc/tokstack.hxx b/sc/source/filter/inc/tokstack.hxx
new file mode 100644
index 000000000000..8813e0fbc7b0
--- /dev/null
+++ b/sc/source/filter/inc/tokstack.hxx
@@ -0,0 +1,385 @@
+/*************************************************************************
+ *
+ * $RCSfile: tokstack.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _TOKSTACK_HXX
+#define _TOKSTACK_HXX
+
+#ifndef _INC_STRING
+#include <string.h>
+#endif
+
+#ifndef _DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+
+#ifndef SC_COMPILER_HXX
+#include "compiler.hxx"
+#endif
+
+
+typedef UINT16 TokenId;
+typedef OpCode DefTokenId;
+
+
+//------------------------------------------------------------------------
+struct ComplRefData;
+class TokenStack;
+struct ScToken;
+
+
+enum E_TYPE
+{
+ T_Id, // Id-Folge
+ T_Str, // String
+ T_D, // Double
+ T_RefC, // Cell Reference
+ T_RefA, // Area Reference
+ T_RN, // Range Name
+ T_Ext, // irgendwas Unbekanntes mit Funktionsnamen
+ T_Error // fuer Abfrage im Fehlerfall
+};
+
+
+
+
+class TokenPool
+{
+ // !ACHTUNG!: externe Id-Basis ist 1, interne 0!
+ // Ausgabe Id = 0 -> Fehlerfall
+ private:
+ String** ppP_Str; // Pool fuer Strings
+ UINT16 nP_Str; // ...mit Groesse
+ UINT16 nP_StrAkt; // ...und Schreibmarke
+
+ double* pP_Dbl; // Pool fuer Doubles
+ UINT16 nP_Dbl;
+ UINT16 nP_DblAkt;
+
+ SingleRefData** ppP_RefTr; // Pool fuer Referenzen
+ UINT16 nP_RefTr;
+ UINT16 nP_RefTrAkt;
+
+ UINT16* pP_Id; // Pool fuer Id-Folgen
+ UINT16 nP_Id;
+ UINT16 nP_IdAkt;
+ UINT16 nP_IdLast; // letzter Folgen-Beginn
+
+ struct EXTCONT
+ {
+ DefTokenId eId;
+ String aText;
+ EXTCONT( const DefTokenId e, const String& r ) :
+ eId( e ), aText( r ){}
+ };
+ EXTCONT** ppP_Ext;
+ UINT16 nP_Ext;
+ UINT16 nP_ExtAkt;
+
+ UINT16* pElement; // Array mit Indizes fuer Elemente
+ E_TYPE* pType; // ...mit Typ-Info
+ UINT16* pSize; // ...mit Laengenangabe (Anz. UINT16)
+ UINT16 nElement;
+ UINT16 nElementAkt;
+
+ static const UINT16 nScTokenOff;// Offset fuer SC-Token
+#ifdef DBG_UTIL
+ UINT16 nRek; // Rekursionszaehler
+#endif
+ ScTokenArray* pScToken; // Tokenbastler
+
+ void GrowString( void );
+ void GrowDouble( void );
+ void GrowTripel( void );
+ void GrowId( void );
+ void GrowElement( void );
+ void GrowExt( void );
+ void GetElement( const UINT16 nId );
+ void GetElementRek( const UINT16 nId );
+ public:
+ TokenPool( void );
+ ~TokenPool();
+ inline TokenPool& operator <<( const TokenId nId );
+ inline TokenPool& operator <<( const DefTokenId eId );
+ inline TokenPool& operator <<( TokenStack& rStack );
+ void operator >>( TokenId& rId );
+ inline void operator >>( TokenStack& rStack );
+ inline TokenId Store( void );
+ TokenId Store( const double& rDouble );
+
+ // nur fuer Range-Names
+ TokenId Store( const UINT16 nIndex );
+ inline TokenId Store( const INT16 nWert );
+ TokenId Store( const String& rString );
+ TokenId Store( const SingleRefData& rTr );
+ TokenId Store( const ComplRefData& rTr );
+
+ TokenId Store( const DefTokenId eId, const String& rName );
+ // 4 externals (e.g. AddIns, Makros...)
+ inline TokenId LastId( void ) const;
+ inline const ScTokenArray* operator []( const TokenId nId );
+ void Reset( void );
+ inline E_TYPE GetType( TokenId nId ) const;
+ inline const SingleRefData* GetSRD( TokenId nId ) const;
+ BOOL IsSingleOp( TokenId nId, const DefTokenId eId ) const;
+ BOOL IsExternal( TokenId nId ) const;
+
+ const String* GetString( TokenId nId ) const;
+};
+
+
+
+
+class TokenStack
+ // Stack fuer Token-Ids: Id 0 sollte reserviert bleiben als
+ // fehlerhafte Id, da z.B. Get() im Fehlerfall 0 liefert
+{
+ private:
+ TokenId* pStack; // Stack als Array
+ UINT16 nPos; // Schreibmarke
+ UINT16 nSize; // Erster Index ausserhalb des Stacks
+ public:
+ TokenStack( UINT16 nNewSize = 1024 );
+ ~TokenStack();
+ inline TokenStack& operator <<( const TokenId nNewId );
+ inline void operator >>( TokenId &rId );
+
+ inline void Reset( void );
+
+ inline TokenId Get( void );
+};
+
+
+
+
+inline TokenId TokenStack::Get( void )
+{
+ DBG_ASSERT( nPos > 0,
+ "*TokenStack::Get(): Leer ist leer, ist leer, ist leer, ist..." );
+
+ register TokenId nRet;
+
+ if( nPos == 0 )
+ nRet = 0;
+ else
+ {
+ nPos--;
+ nRet = pStack[ nPos ];
+ }
+
+ return nRet;
+}
+
+
+inline TokenStack &TokenStack::operator <<( const TokenId nNewId )
+{// Element auf Stack
+ DBG_ASSERT( nPos < nSize, "*TokenStack::<<(): Stackueberlauf" );
+ if( nPos < nSize )
+ {
+ pStack[ nPos ] = nNewId;
+ nPos++;
+ }
+
+ return *this;
+}
+
+
+inline void TokenStack::operator >>( TokenId& rId )
+{// Element von Stack
+ DBG_ASSERT( nPos > 0,
+ "*TokenStack::>>(): Leer ist leer, ist leer, ist leer, ..." );
+ if( nPos > 0 )
+ {
+ nPos--;
+ rId = pStack[ nPos ];
+ }
+}
+
+
+inline void TokenStack::Reset( void )
+{
+ nPos = 0;
+}
+
+
+
+
+inline TokenPool& TokenPool::operator <<( const TokenId nId )
+{
+ // POST: nId's werden hintereinander im Pool unter einer neuen Id
+ // abgelegt. Vorgang wird mit >> oder Store() abgeschlossen
+ // nId -> ( UINT16 ) nId - 1;
+ DBG_ASSERT( ( UINT16 ) nId < nScTokenOff,
+ "-TokenPool::operator <<: TokenId im DefToken-Bereich!" );
+
+ if( nP_IdAkt >= nP_Id )
+ GrowId();
+
+ pP_Id[ nP_IdAkt ] = ( ( UINT16 ) nId ) - 1;
+ nP_IdAkt++;
+
+ return *this;
+}
+
+
+inline TokenPool& TokenPool::operator <<( const DefTokenId eId )
+{
+ DBG_ASSERT( ( UINT32 ) eId + nScTokenOff < 0xFFFF,
+ "-TokenPool::operator<<: enmum zu gross!" );
+
+ if( nP_IdAkt >= nP_Id )
+ GrowId();
+
+ pP_Id[ nP_IdAkt ] = ( ( UINT16 ) eId ) + nScTokenOff;
+ nP_IdAkt++;
+
+ return *this;
+}
+
+
+inline TokenPool& TokenPool::operator <<( TokenStack& rStack )
+{
+ if( nP_IdAkt >= nP_Id )
+ GrowId();
+
+ pP_Id[ nP_IdAkt ] = ( ( UINT16 ) rStack.Get() ) - 1;
+ nP_IdAkt++;
+
+ return *this;
+}
+
+
+inline void TokenPool::operator >>( TokenStack& rStack )
+{
+ register TokenId nId;
+ *this >> nId;
+ rStack << nId;
+}
+
+
+inline TokenId TokenPool::Store( void )
+{
+ register TokenId nId;
+ *this >> nId;
+ return nId;
+}
+
+
+inline TokenId TokenPool::Store( const INT16 nWert )
+{
+ return Store( ( double ) nWert );
+}
+
+
+inline TokenId TokenPool::LastId( void ) const
+{
+ return ( TokenId ) nElementAkt; // stimmt, da Ausgabe mit Offset 1!
+}
+
+
+const inline ScTokenArray* TokenPool::operator []( const TokenId nId )
+{
+ pScToken->Clear();
+
+ if( nId )
+ {//...nur wenn nId > 0!
+#ifdef DBG_UTIL
+ nRek = 0;
+#endif
+ GetElement( ( UINT16 ) nId - 1 );
+ }
+
+ return pScToken;
+}
+
+
+inline E_TYPE TokenPool::GetType( TokenId nId ) const
+{
+ register E_TYPE nRet;
+
+ nId--;
+
+ if( nId < nElementAkt )
+ nRet = pType[ ( UINT16 ) nId ] ;
+ else
+ nRet = T_Error;
+
+ return nRet;
+}
+
+
+inline const SingleRefData* TokenPool::GetSRD( TokenId nId ) const
+{
+ register SingleRefData* pRet;
+
+ nId--;
+
+ if( nId < nElementAkt && pType[ ( UINT16 ) nId ] == T_RefC )
+ pRet = ppP_RefTr[ pElement[ ( UINT16 ) nId ] ];
+ else
+ pRet = NULL;
+
+ return pRet;
+}
+
+
+
+#endif
+
diff --git a/sc/source/filter/inc/tool.h b/sc/source/filter/inc/tool.h
new file mode 100644
index 000000000000..5e2843a344fe
--- /dev/null
+++ b/sc/source/filter/inc/tool.h
@@ -0,0 +1,198 @@
+/*************************************************************************
+ *
+ * $RCSfile: tool.h,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _TOOL_H
+#define _TOOL_H
+
+#include <attrib.hxx> //!!! noch noetig?????
+#include <document.hxx>
+
+// Defaultwerte
+const BYTE nDezStd = 0; // Dezimalstellen fuer Standard-Zellen
+const BYTE nDezFloat = 2; // " " Float-Zellen
+
+void PutFormString( UINT16 nCol, UINT16 nRow, UINT16 nTab, sal_Char *pString );
+
+void SetFormat( UINT16 nCol, UINT16 nRow, UINT16 nTab, BYTE nFormat, BYTE nSt );
+
+sal_Char* ReplaceWith( sal_Char* pString, sal_Char cVon, sal_Char cNach );
+
+void InitPage( void );
+
+String DosToSystem( sal_Char *pSource );
+
+double SnumToDouble( INT16 nVal );
+
+typedef UINT16 StampTyp;
+
+#define MAKE_STAMP(nF,nS) ((nS&0x0F)+((nF&0x7F)*16))
+ // Bit 0...3 = Bit 0...3 von Stellenzahl
+ // Bit 4...10 = Bit 0...6 von Formatbyte
+
+class FormIdent
+{
+private:
+ StampTyp nStamp; // Identifikations-Schluessel
+ SfxUInt32Item* pAttr; // zugehoeriges Attribut
+public:
+ FormIdent( void )
+ {
+ nStamp = 0;
+ pAttr = NULL;
+ }
+
+ FormIdent( BYTE nFormat, BYTE nSt, SfxUInt32Item& rAttr )
+ {
+ nStamp = MAKE_STAMP( nFormat, nSt );
+ pAttr = &rAttr;
+ }
+
+ FormIdent( BYTE nFormat, BYTE nSt )
+ {
+ nStamp = MAKE_STAMP( nFormat, nSt );
+ pAttr = NULL;
+ }
+
+ BOOL operator ==( const FormIdent& rComp ) const
+ {
+ return ( nStamp == rComp.nStamp );
+ }
+
+ BOOL operator ==( const StampTyp& rStamp ) const
+ {
+ return ( nStamp == rStamp );
+ }
+
+ StampTyp GetStamp( void ) const
+ {
+ return nStamp;
+ }
+
+ SfxUInt32Item* GetAttr( void )
+ {
+ return pAttr;
+ }
+
+ void SetStamp( BYTE nFormat, BYTE nSt )
+ {
+ nStamp = MAKE_STAMP( nFormat, nSt );
+ }
+};
+
+
+#define __nSize 2048
+
+
+
+
+class FormCache
+{
+private:
+ FormIdent aIdents[ __nSize ]; //gepufferte Formate
+ BOOL bValid[ __nSize ];
+ FormIdent aCompareIdent; // zum Vergleichen
+ BYTE nDefaultFormat; // Defaultformat der Datei
+ SvNumberFormatter* pFormTable; // Value-Format-Table-Anker
+ StampTyp nIndex;
+ LanguageType eLanguage; // Systemsprache
+
+ SfxUInt32Item* NewAttr( BYTE nFormat, BYTE nSt );
+public:
+ FormCache( ScDocument*, BYTE nNewDefaultFormat = 0xFF );
+ ~FormCache();
+
+ inline const SfxUInt32Item* GetAttr( BYTE nFormat, BYTE nSt );
+ void SetDefaultFormat( BYTE nD = 0xFF )
+ {
+ nDefaultFormat = nD;
+ }
+};
+
+
+inline const SfxUInt32Item* FormCache::GetAttr( BYTE nFormat, BYTE nSt )
+{
+ // PREC: nFormat = Lotus-Format-Byte
+ // nSt = Stellenzahl
+ // POST: return = zu nFormat und nSt passendes SC-Format
+ SfxUInt32Item* pAttr;
+ SfxUInt32Item* pRet;
+
+ aCompareIdent.SetStamp( nFormat, nSt );
+ nIndex = aCompareIdent.GetStamp();
+ DBG_ASSERT( nIndex < __nSize, "FormCache::GetAttr(): Uuuuuuups... so nicht!" );
+ if( bValid[ nIndex ] )
+ pRet = aIdents[ nIndex ].GetAttr();
+ else
+ {
+ // neues Attribut anlegen
+ pAttr = NewAttr( nFormat, nSt );
+ DBG_ASSERT( pAttr, "FormCache::GetAttr(): Nix Speicherus" );
+
+ aIdents[ nIndex ] = FormIdent( nFormat, nSt, *pAttr );
+ bValid[ nIndex ] = TRUE;
+
+ pRet = pAttr;
+ }
+ return pRet;
+}
+
+#endif
+
diff --git a/sc/source/filter/inc/xcl97dum.hxx b/sc/source/filter/inc/xcl97dum.hxx
new file mode 100644
index 000000000000..9c838ab9ed44
--- /dev/null
+++ b/sc/source/filter/inc/xcl97dum.hxx
@@ -0,0 +1,193 @@
+/*************************************************************************
+ *
+ * $RCSfile: xcl97dum.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _XCL97DUM_HXX
+#define _XCL97DUM_HXX
+
+
+#include "excrecds.hxx"
+
+
+// --- class ExcDummy8_xx --------------------------------------------
+
+class ExcDummy8_00a : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+class ExcDummy8_00b : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+class ExcDummy8_040 : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+class ExcDummy8_041 : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+class ExcDummy8_01 : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+class ExcDummy8_Fm : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+class ExcDummy8_XF : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+class ExcDummy8_Style : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+class ExcDummy8_UsesElfs : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+class ExcDummy8_Country : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+class ExcDummy8_02 : public ExcDummyRec
+{
+private:
+ static const BYTE pMyData[];
+ static const UINT16 nMyLen;
+public:
+ virtual UINT16 GetLen() const;
+ virtual const BYTE* GetData() const;
+};
+
+
+
+#endif // _XCL97DUM_HXX
diff --git a/sc/source/filter/inc/xcl97esc.hxx b/sc/source/filter/inc/xcl97esc.hxx
new file mode 100644
index 000000000000..06b83d842772
--- /dev/null
+++ b/sc/source/filter/inc/xcl97esc.hxx
@@ -0,0 +1,303 @@
+/*************************************************************************
+ *
+ * $RCSfile: xcl97esc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:13 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _XCL97ESC_HXX
+#define _XCL97ESC_HXX
+
+
+#ifndef _SVX_ESCHEREX_HXX
+#include <svx/escherex.hxx>
+#endif
+#ifndef _TOOLS_TABLE_HXX //autogen wg. Table
+#include <tools/table.hxx>
+#endif
+#ifndef _STACK_HXX //autogen wg. Stack
+#include <tools/stack.hxx>
+#endif
+
+
+// --- class XclEscherEx ---------------------------------------------
+
+struct RootData;
+class SvStream;
+class TempFile;
+class SvFileStream;
+class XclObj;
+class XclEscherHostAppData;
+class XclEscherClientData;
+class XclEscherClientTextbox;
+
+class XclEscherEx : public EscherEx
+{
+private:
+ List aOffsetMap;
+ Stack aStack;
+ RootData& rRootData;
+ TempFile* pPicTempFile;
+ SvFileStream* pPicStrm;
+ XclObj* pCurrXclObj;
+ XclEscherHostAppData* pCurrAppData;
+ XclEscherClientData* pTheClientData; // always the same
+ XclEscherClientTextbox* pAdditionalText;
+ USHORT nAdditionalText;
+
+ void DeleteCurrAppData();
+
+public:
+ XclEscherEx( SvStream& rStrm, UINT32 nDrawings,
+ RootData& rRoot );
+ virtual ~XclEscherEx();
+
+ /// maintains OffsetMap
+ virtual void InsertAtCurrentPos( UINT32 nBytes, BOOL bCont = FALSE );
+
+ virtual SvStream* QueryPicStream();
+ virtual EscherExHostAppData* StartShape( const com::sun::star::uno::Reference<
+ com::sun::star::drawing::XShape>& rShape );
+ virtual void EndShape( UINT16 nShapeType, UINT32 nShapeID );
+ virtual EscherExHostAppData* EnterAdditionalTextGroup();
+
+ /// appends stream offset to list and returns position in list
+ ULONG AddCurrentOffsetToMap();
+ /// replaces position in list with current stream offset
+ void ReplaceCurrentOffsetInMap( ULONG nPos );
+ /// returns stream offset for position in list
+ inline ULONG GetOffsetFromMap( ULONG nPos ) const;
+ /// last position in list (count-1)
+ inline ULONG GetLastOffsetMapPos() const;
+
+ /// Flush and merge PicStream into EscherStream
+ void EndDocument();
+};
+
+
+inline ULONG XclEscherEx::GetOffsetFromMap( ULONG nPos ) const
+{
+ return (ULONG) aOffsetMap.GetObject( nPos );
+}
+
+
+inline ULONG XclEscherEx::GetLastOffsetMapPos() const
+{
+ return aOffsetMap.Count() - 1;
+}
+
+
+// --- class XclEscher -----------------------------------------------
+
+struct RootData;
+class TempFile;
+class SvFileStream;
+
+class XclEscher
+{
+private:
+ TempFile* pTempFile;
+ SvFileStream* pStrm;
+ XclEscherEx* pEx;
+
+public:
+ XclEscher( UINT32 nDrawings, RootData& rRoot );
+ ~XclEscher();
+
+ inline XclEscherEx* GetEx() const { return pEx; }
+ inline SvStream& GetStrm() const { return *pStrm; }
+};
+
+
+// --- class XclEscherHostAppData ------------------------------------
+
+class XclEscherHostAppData : public EscherExHostAppData
+{
+private:
+ BOOL bStackedGroup;
+
+public:
+ XclEscherHostAppData() : bStackedGroup( FALSE )
+ {}
+ inline void SetStackedGroup( BOOL b ) { bStackedGroup = b; }
+ inline BOOL IsStackedGroup() const { return bStackedGroup; }
+};
+
+
+// --- class XclEscherClientAnchor -----------------------------------
+
+struct RootData;
+class ScDocument;
+class ScAddress;
+class Rectangle;
+class SdrObject;
+
+class XclEscherClientAnchor : public EscherExClientAnchor_Base
+{
+private:
+ RootData* pRootData;
+ // all undocumented
+ UINT16 nFlag; // 0: move and size with cell
+ // 2: move with cell, don't size
+ // 3: don't move, don't size
+ UINT16 nCol1; // UL column
+ UINT16 nX1; // UL offset (in fractions of a column, 1024)
+ UINT16 nRow1; // UL row
+ UINT16 nY1; // UL offset (in fractions of a row, 256)
+ UINT16 nCol2; // LR column
+ UINT16 nX2; // LR offset (in fractions of a column, 1024)
+ UINT16 nRow2; // LR row
+ UINT16 nY2; // LR offset (in fractions of a row, 256)
+
+ static BOOL FindNextCol(
+ USHORT& nCol,
+ const ScDocument* pDoc,
+ USHORT nTab,
+ short nDir
+ );
+ static BOOL FindNextRow(
+ USHORT& nRow,
+ const ScDocument* pDoc,
+ USHORT nTab,
+ short nDir
+ );
+ static void ColX(
+ UINT16& nCol,
+ UINT16& nX,
+ UINT16 nStart,
+ long& nWidth,
+ long nPosX,
+ const ScDocument* pDoc,
+ USHORT nTab
+ );
+ static void RowY(
+ UINT16& nRow,
+ UINT16& nY,
+ UINT16 nStart,
+ long& nWidth,
+ long nPosY,
+ const ScDocument* pDoc,
+ USHORT nTab
+ );
+ void Init( const Rectangle& rRect );
+
+public:
+
+ static UINT16 GetMoveSizeFlag( const SdrObject& rObj );
+
+ XclEscherClientAnchor(
+ RootData& rRoot,
+ UINT16 nMoveSizeFlag
+ );
+
+ /// used for Charts
+ XclEscherClientAnchor(
+ RootData& rRoot,
+ const SdrObject& rObj
+ );
+
+ /// only used for notes without sizes
+ XclEscherClientAnchor(
+ const ScDocument* pDoc,
+ const ScAddress& rPos
+ );
+
+ /// used by class XclObjDropDown
+ void SetDropDownPosition( const ScAddress& rAddr );
+
+ virtual void WriteData( EscherEx& rEx, const Rectangle& rRect );
+ void WriteData( EscherEx& rEx ) const;
+};
+
+
+// --- class XclEscherClientData -------------------------------------
+
+class XclEscherClientData : public EscherExClientRecord_Base
+{
+public:
+ XclEscherClientData() {}
+ virtual void WriteData( EscherEx& rEx ) const;
+};
+
+
+// --- class XclEscherClientTextbox ----------------------------------
+
+class SdrTextObj;
+
+class XclEscherClientTextbox : public EscherExClientRecord_Base
+{
+private:
+ RootData& rRootData;
+ const SdrTextObj& rTextObj;
+ XclObj* pXclObj;
+
+public:
+ XclEscherClientTextbox(
+ RootData& rRoot,
+ const SdrTextObj& rObj,
+ XclObj* pObj
+ );
+
+ //! ONLY for the AdditionalText mimic
+ inline void SetXclObj( XclObj* p ) { pXclObj = p; }
+
+ virtual void WriteData( EscherEx& rEx ) const;
+};
+
+
+
+#endif // _XCL97ESC_HXX
diff --git a/sc/source/filter/inc/xcl97rec.hxx b/sc/source/filter/inc/xcl97rec.hxx
new file mode 100644
index 000000000000..e7269a868b5f
--- /dev/null
+++ b/sc/source/filter/inc/xcl97rec.hxx
@@ -0,0 +1,1332 @@
+/*************************************************************************
+ *
+ * $RCSfile: xcl97rec.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _XCL97REC_HXX
+#define _XCL97REC_HXX
+
+#include "excrecds.hxx"
+#include "xcl97exp.hxx"
+#include "xcl97esc.hxx"
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx"
+#endif
+
+struct SingleRefData;
+
+// --- class XclSstList ----------------------------------------------
+
+class XclSstList : public List, public ExcRecord
+{
+private:
+ // overwritten to be able to not save empty list
+ void _Save( SvStream& );
+
+ virtual void SaveCont( SvStream& );
+
+public:
+ XclSstList();
+ virtual ~XclSstList();
+
+ UINT32 Add( XclUnicodeString* );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclCrn --------------------------------------------------
+
+class XclCrn : public ExcRecord
+{
+private:
+ UINT16 nCol;
+ UINT16 nRow;
+
+protected:
+ void SaveHeadings( SvStream& rStrm );
+
+public:
+ inline XclCrn( UINT16 nC, UINT16 nR ) :
+ nCol( nC ), nRow( nR ) {}
+
+ inline BOOL IsAddress( UINT16 nC, UINT16 nR )
+ { return (nC == nCol) && (nR == nRow); }
+
+ virtual UINT16 GetNum() const;
+};
+
+
+// --- class XclCrnDouble ---------------------------------------------
+
+class XclCrnDouble : public XclCrn
+{
+private:
+ double fVal;
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ XclCrnDouble( UINT16 nC, UINT16 nR, double fV );
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclCrnString ---------------------------------------------
+
+class XclCrnString : public XclCrn
+{
+private:
+ XclRawUnicodeString sText;
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ XclCrnString( UINT16 nC, UINT16 nR, const String& rTxt );
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclCrnBool -----------------------------------------------
+
+class XclCrnBool : public XclCrn
+{
+private:
+ UINT16 nBool;
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ XclCrnBool( UINT16 nC, UINT16 nR, BOOL b );
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclXct --------------------------------------------------
+
+class XclXct : public ExcRecord, private List
+{
+private:
+ XclUnicodeString sTable;
+ UINT16 nTabNum;
+
+ inline XclCrn* _First() { return (XclCrn*) List::First(); }
+ inline XclCrn* _Next() { return (XclCrn*) List::Next(); }
+
+ BOOL Exists( UINT16 nCol, UINT16 nRow );
+ inline void Append( XclCrn* pCrn )
+ { List::Insert( pCrn, LIST_APPEND ); }
+
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ inline XclXct( const String& rTab ) :
+ sTable( rTab ) { }
+ virtual ~XclXct();
+
+ inline UINT16 GetTableBytes() const { return sTable.GetByteCount(); }
+ inline const XclUnicodeString& GetTableName() const { return sTable; }
+
+ inline void SetTableNum( UINT16 nTab ) { nTabNum = nTab; }
+ void StoreCellRange( RootData& rRoot, const ScRange& rRange );
+
+ virtual void Save( SvStream& rStrm );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclSupbook ----------------------------------------------
+
+class XclSupbook : public ExcRecord, private List
+{
+private:
+ UINT16 nTables;
+ String sDocName;
+ XclRawUnicodeString sEncoded;
+ UINT32 nLen;
+ BOOL bSelf;
+
+ inline XclXct* _First() { return (XclXct*) List::First(); }
+ inline XclXct* _Next() { return (XclXct*) List::Next(); }
+ inline XclXct* _Get( UINT16 nTab ) const
+ { return (XclXct*) List::GetObject( nTab ); }
+
+ virtual void SaveCont( SvStream& rStrm );
+
+public:
+ XclSupbook( UINT16 nTabs ); // own book
+ XclSupbook( const String& rDocName ); // ext book
+ virtual ~XclSupbook();
+
+ inline const String& GetName() const { return sDocName; }
+
+ UINT16 AddTableName( const String& rTabName );
+ void StoreCellRange( RootData& rRoot, const ScRange& rRange,
+ UINT16 nXct );
+
+ virtual void Save( SvStream& rStrm );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclSupbookList ------------------------------------------
+
+class XclSupbookList : public ExcEmptyRec, ExcRoot, private List
+{
+private:
+ UINT16* pSupbookBuffer; // supbook number for every xcl table
+ UINT16* pTableBuffer; // table numbers in supbook
+ UINT16 nRefdCnt; // array size for p***Buffer
+
+ inline XclSupbook* _First() { return (XclSupbook*) List::First(); }
+ inline XclSupbook* _Next() { return (XclSupbook*) List::Next(); }
+ inline XclSupbook* _Get( UINT32 nInd )
+ { return (XclSupbook*) List::GetObject( nInd ); }
+
+ inline XclSupbook* GetSupbook( UINT16 nExcTab ) const;
+
+ UINT32 Append( XclSupbook* pBook );
+ void AddExt( UINT16 nScTab );
+
+public:
+ XclSupbookList( RootData* pRoot );
+ virtual ~XclSupbookList();
+
+ void StoreCellRange( const ScRange& rRange );
+
+ void WriteXtiInfo( SvStream& rStrm, UINT16 nTabFirst, UINT16 nTabLast );
+ virtual void Save( SvStream& rStrm );
+};
+
+inline XclSupbook* XclSupbookList::GetSupbook( UINT16 nExcTab ) const
+{
+ return (XclSupbook*) List::GetObject( pSupbookBuffer[ nExcTab ] );
+}
+
+
+// --- class XclXti --------------------------------------------------
+
+class XclXti
+{
+private:
+ UINT16 nTabFirst;
+ UINT16 nTabLast;
+
+public:
+ inline XclXti( UINT16 nFirst, UINT16 nLast ) :
+ nTabFirst( nFirst ), nTabLast( nLast ) {}
+
+ static inline UINT16 GetSize() { return 3 * sizeof(UINT16); }
+ inline UINT16 GetTabFirst() const { return nTabFirst; }
+ inline UINT16 GetTabLast() const { return nTabLast; }
+};
+
+
+// --- class XclExternsheetList --------------------------------------
+
+class XclExternsheetList : public ExcRecord, ExcRoot, private List
+{
+private:
+ XclSupbookList aSupbookList;
+
+ XclXti* _First() { return (XclXti*) List::First(); }
+ XclXti* _Next() { return (XclXti*) List::Next(); }
+
+ static inline UINT16 GetVal16( UINT32 nVal )
+ { return (nVal <= 0xFFFF) ? (UINT16) nVal : 0xFFFF; }
+
+ inline void WriteXtiInfo( SvStream& rStrm, XclXti& rXti );
+ virtual void SaveCont( SvStream& rStrm );
+
+public:
+ XclExternsheetList( RootData* pRoot );
+ virtual ~XclExternsheetList();
+
+ // Xcl design error
+ inline UINT16 GetCount16() const { return GetVal16( List::Count() ); }
+
+ UINT16 Add( XclXti* pXti );
+
+ // add new XclXti if not found - expects Excel tabnums
+ UINT16 Find( UINT16 nTabFirst, UINT16 nTabLast );
+
+ // cell contents -> CRN - expects SC tabnums
+ void StoreCellCont( const SingleRefData& rRef );
+ void StoreCellRange( const SingleRefData& rRef1, const SingleRefData& rRef2 );
+
+ virtual void Save( SvStream& rStrm );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+inline void XclExternsheetList::WriteXtiInfo( SvStream& rStrm, XclXti& rXti )
+{
+ aSupbookList.WriteXtiInfo( rStrm, rXti.GetTabFirst(), rXti.GetTabLast() );
+}
+
+
+// --- class XclMsodrawing_Base --------------------------------------
+
+class XclMsodrawing_Base
+{
+protected:
+ XclEscher* pEscher;
+ ULONG nStartPos; // position in OffsetMap
+ ULONG nStopPos; // position in OffsetMap
+
+public:
+ XclMsodrawing_Base( XclEscher& rEscher );
+ virtual ~XclMsodrawing_Base();
+
+ inline XclEscher* GetEscher() const { return pEscher; }
+ inline XclEscherEx* GetEscherEx() const { return pEscher->GetEx(); }
+ void UpdateStopPos();
+ ULONG GetDataLen() const;
+};
+
+
+// --- class XclMsodrawinggroup --------------------------------------
+
+class XclMsodrawinggroup : public XclMsodrawing_Base, public ExcRecord
+{
+private:
+
+ virtual void SaveCont( SvStream& );
+
+public:
+ XclMsodrawinggroup( RootData& rRoot,
+ UINT16 nEscherType = 0 );
+ virtual ~XclMsodrawinggroup();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclMsodrawing -------------------------------------------
+
+class XclMsodrawing : public XclMsodrawing_Base, public ExcRecord
+{
+private:
+
+ virtual void SaveCont( SvStream& );
+
+public:
+ XclMsodrawing( RootData& rRoot,
+ UINT16 nEscherType = 0 );
+ virtual ~XclMsodrawing();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclObjList ----------------------------------------------
+
+class XclObj;
+class XclMsodrawing;
+
+class XclObjList : public List, public ExcRecord
+{
+private:
+ XclMsodrawing* pMsodrawingPerSheet;
+
+ // overwritten to be able to write nothing
+ void _Save( SvStream& );
+ virtual void SaveCont( SvStream& );
+
+public:
+ XclObjList( RootData& rRoot );
+ virtual ~XclObjList();
+
+ XclObj* First() { return (XclObj*) List::First(); }
+ XclObj* Next() { return (XclObj*) List::Next(); }
+
+ /// return: 1-based ObjId
+ ///! count>=0xFFFF: Obj will be deleted, return 0
+ UINT16 Add( XclObj* );
+
+ inline XclMsodrawing* GetMsodrawingPerSheet();
+ /// close groups and DgContainer opened in ctor
+ void EndSheet();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+inline XclMsodrawing* XclObjList::GetMsodrawingPerSheet()
+{
+ return pMsodrawingPerSheet;
+}
+
+
+// --- class XclObj --------------------------------------------------
+
+class XclTxo;
+class SdrTextObj;
+
+class XclObj : public ExcRecord
+{
+ friend void XclObjList::SaveCont( SvStream& );
+
+protected:
+
+ enum FtType {
+ ftEnd = 0x0000,
+ // reserved: 0x01-0x03
+ ftMacro = 0x0004,
+ ftButton = 0x0005,
+ ftGmo = 0x0006,
+ ftCf = 0x0007,
+ ftPioGrbit = 0x0008,
+ ftPictFmla = 0x0009,
+ ftCbls = 0x000A,
+ ftRbo = 0x000B,
+ ftSbs = 0x000C,
+ ftNts = 0x000D,
+ ftSbsFmla = 0x000E,
+ ftGboData = 0x000F,
+ ftEdoData = 0x0010,
+ ftRboData = 0x0011,
+ ftCblsdata = 0x0012,
+ ftLbsData = 0x0013,
+ ftCbsFmls = 0x0014,
+ ftCmo = 0x0015
+ };
+
+ enum ObjType {
+ otGroup = 0x0000,
+ otLine = 0x0001,
+ otRectangle = 0x0002,
+ otOval = 0x0003,
+ otArc = 0x0004,
+ otChart = 0x0005,
+ otText = 0x0006,
+ otButton = 0x0007,
+ otPicture = 0x0008,
+ otPolygon = 0x0009,
+ // reserved: 0x0A
+ otCheckBox = 0x000B,
+ otOptionButtton = 0x000C,
+ otEditBox = 0x000D,
+ otLabel = 0x000E,
+ otDialogBox = 0x000F,
+ otSpinner = 0x0010,
+ otScrollBar = 0x0011,
+ otListBox = 0x0012,
+ otGroupBox = 0x0013,
+ otComboBox = 0x0014,
+ // reserved: 0x15-0x18
+ otComment = 0x0019,
+ // reserved: 0x1A-0x1D
+ otMsOffDrawing = 0x001E,
+ // SC internal
+ otUnknown = 0xFFFF // only for temporary use
+ };
+
+ XclMsodrawing* pMsodrawing;
+ XclMsodrawing* pClientTextbox;
+ XclTxo* pTxo;
+ ObjType eObjType;
+ UINT16 nObjId;
+ UINT16 nGrbit;
+ BOOL bFirstOnSheet;
+
+ XclObj( ObjType eObjType, RootData& rRoot );
+
+ // overwritten for writing MSODRAWING record
+ void _Save( SvStream& );
+ virtual void SaveCont( SvStream& );
+ void SaveText( SvStream& );
+
+public:
+
+ virtual ~XclObj();
+
+ inline void SetId( UINT16 nId ) { nObjId = nId; }
+
+ inline void SetLocked( BOOL b )
+ { b ? nGrbit |= 0x0001 : nGrbit &= ~0x0001; }
+ inline void SetPrintable( BOOL b )
+ { b ? nGrbit |= 0x0010 : nGrbit &= ~0x0010; }
+ inline void SetAutoFill( BOOL b )
+ { b ? nGrbit |= 0x2000 : nGrbit &= ~0x2000; }
+ inline void SetAutoLine( BOOL b )
+ { b ? nGrbit |= 0x4000 : nGrbit &= ~0x4000; }
+
+ // set corresponding ObjType
+ void SetEscherShapeType( UINT16 nType );
+ inline void SetEscherShapeTypeGroup() { eObjType = otGroup; }
+
+ //! actually writes ESCHER_ClientTextbox
+ void SetText( RootData& rRoot, const SdrTextObj& rObj );
+
+ inline void UpdateStopPos();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+inline void XclObj::UpdateStopPos()
+{
+ if ( pClientTextbox )
+ pClientTextbox->UpdateStopPos();
+ else
+ pMsodrawing->UpdateStopPos();
+}
+
+
+// --- class XclObjComment -------------------------------------------
+
+class XclObjComment : public XclObj
+{
+private:
+
+ virtual void SaveCont( SvStream& );
+
+public:
+ XclObjComment( RootData& rRoot,
+ const ScAddress& rPos, const String& rStr );
+ virtual ~XclObjComment();
+
+// virtual UINT16 GetNum() const; // done by XclObj
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclObjDropDown ------------------------------------------
+
+class XclObjDropDown : public XclObj
+{
+private:
+ BOOL bIsFiltered;
+
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ XclObjDropDown( RootData& rRoot, const ScAddress& rPos, BOOL bFilt );
+ virtual ~XclObjDropDown();
+
+ virtual UINT16 GetLen() const; // GetNum() done by XclObj
+};
+
+
+// --- class XclTxo --------------------------------------------------
+
+class SdrTextObj;
+
+class XclTxo : public ExcRecord
+{
+ friend void XclObjComment::SaveCont( SvStream& );
+
+private:
+
+ XclRawUnicodeString aText;
+ UINT16 nGrbit;
+ UINT16 nRot;
+
+ virtual void SaveCont( SvStream& );
+
+public:
+ XclTxo( const String& rStr );
+ XclTxo( const SdrTextObj& rEditObj );
+ virtual ~XclTxo();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclObjOle -----------------------------------------------
+
+class XclObjOle : public XclObj
+{
+private:
+
+ const SdrObject& rOleObj;
+ SvStorage* pRootStorage;
+
+ virtual void SaveCont( SvStream& );
+
+public:
+ XclObjOle( RootData& rRoot, const SdrObject& rObj );
+ virtual ~XclObjOle();
+
+// virtual UINT16 GetNum() const; // done by XclObj
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclObjAny -----------------------------------------------
+
+class XclObjAny : public XclObj
+{
+private:
+
+ virtual void SaveCont( SvStream& );
+
+public:
+ XclObjAny( RootData& rRoot );
+ virtual ~XclObjAny();
+
+// virtual UINT16 GetNum() const; // done by XclObj
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclNoteList ---------------------------------------------
+
+class XclNote;
+
+class XclNoteList : public List, public ExcRecord
+{
+private:
+ // overwritten to be able to write nothing
+ void _Save( SvStream& );
+ virtual void SaveCont( SvStream& );
+
+public:
+ XclNoteList();
+ virtual ~XclNoteList();
+
+ XclNote* First() { return (XclNote*) List::First(); }
+ XclNote* Next() { return (XclNote*) List::Next(); }
+
+ void Add( XclNote* );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclNote -------------------------------------------------
+
+class XclNote : public ExcRecord
+{
+private:
+ XclUnicodeString aAuthor;
+ ScAddress aPos;
+ UINT16 nGrbit;
+ UINT16 nObjId;
+
+ // overwritten to be able to not save any data
+ void _Save( SvStream& );
+ virtual void SaveCont( SvStream& );
+
+public:
+ XclNote( RootData& rD, const ScAddress& rPos,
+ const ScPostIt& rNote );
+ virtual ~XclNote();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class ExcBof8_Base --------------------------------------------
+
+class ExcBof8_Base : public ExcBof_Base
+{
+protected:
+ UINT32 nFileHistory; // bfh
+ UINT32 nLowestBiffVer; // sfo
+
+ virtual void SaveCont( SvStream& rStrm );
+
+public:
+ ExcBof8_Base();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class ExcBofW8 ------------------------------------------------
+// Header Record fuer WORKBOOKS
+
+class ExcBofW8 : public ExcBof8_Base
+{
+public:
+ ExcBofW8();
+};
+
+
+// --- class ExcBof8 -------------------------------------------------
+// Header Record fuer WORKSHEETS
+
+class ExcBof8 : public ExcBof8_Base
+{
+public:
+ ExcBof8();
+};
+
+
+// --- class ExcBofC8 ------------------------------------------------
+// Header Record fuer CHARTs
+
+class ExcBofC8 : public ExcBof8_Base
+{
+public:
+ ExcBofC8();
+};
+
+
+// --- class ExcLabel8 -----------------------------------------------
+
+class ExcLabel8 : public ExcCell
+{
+private:
+ XclRichString aText;
+
+ virtual void SaveDiff( SvStream& ); // statt SaveCont()
+
+public:
+ ExcLabel8(
+ const ScAddress& rPos,
+ const ScPatternAttr* pAttr,
+ const String& rText );
+ ExcLabel8(
+ const ScAddress& rPos,
+ const ScPatternAttr* pAttr,
+ const ScEditCell& rEdCell,
+ RootData& rRoot );
+ virtual ~ExcLabel8();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class ExcLabelSst ---------------------------------------------
+
+class ExcLabelSst : public ExcCell
+{
+private:
+ UINT32 nIsst; // Index in SST
+
+ virtual void SaveDiff( SvStream& ); // statt SaveCont()
+
+public:
+ ExcLabelSst(
+ const ScAddress& rPos,
+ const ScPatternAttr* pAttr,
+ const String& rText,
+ RootData& rRoot );
+ ExcLabelSst(
+ const ScAddress& rPos,
+ const ScPatternAttr* pAttr,
+ const ScEditCell& rEdCell,
+ RootData& rRoot );
+ virtual ~ExcLabelSst();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class ExcXf8 --------------------------------------------------
+
+class ExcXf8 : public ExcXf
+{
+private:
+ UINT16 nTrot;
+ UINT16 nCIndent;
+ UINT16 nIReadingOrder;
+
+ UINT16 nGrbitDiag;
+ UINT32 nIcvDiagSer;
+ UINT16 nDgDiag;
+
+ BOOL bFShrinkToFit;
+ BOOL bFMergeCell;
+
+ virtual void SaveCont( SvStream& rStrm );
+
+public:
+ ExcXf8( UINT16 nFont, UINT16 nForm,
+ const ScPatternAttr* pPattAttr,
+ BOOL& rbLineBreak, BOOL bStyle = FALSE );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class ExcBundlesheet8 -----------------------------------------
+
+class ExcBundlesheet8 : public ExcBundlesheet
+{
+private:
+ const XclRawUnicodeString aUnicodeName;
+
+ virtual void SaveCont( SvStream& );
+
+public:
+ ExcBundlesheet8( const String &rNewName );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class ExcTabid8 -----------------------------------------------
+
+class ExcTabid8 : public ExcRecord
+{
+private:
+ UINT16 nTabs;
+
+ void SaveCont( SvStream& );
+
+public:
+ ExcTabid8( UINT16 nTabsP ) : nTabs( nTabsP ) {}
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class ExcWindow28 ---------------------------------------------
+
+class ExcWindow28 : public ExcWindow2
+{
+private:
+
+ void SaveCont( SvStream& );
+
+public:
+ ExcWindow28( UINT16 nTab ) : ExcWindow2( nTab ) {}
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+// --- class XclCondFormat -------------------------------------------
+
+class ScConditionalFormat;
+class ScCondFormatEntry;
+class ScRangeList;
+struct RootData;
+class XclCf;
+
+class XclCondFormat : public ExcRecord, protected List
+{
+// writes multiple cf _and_ condfmt records!
+private:
+ const ScConditionalFormat& rCF;
+ ScRangeList* pRL;
+ UINT16 nTabNum;
+ UINT16 nOwnLen;
+ UINT16 nComplLen;
+protected:
+ virtual void _Save( SvStream& ); // because multiple records are written!
+public:
+ XclCondFormat( const ScConditionalFormat&, ScRangeList*, RootData& );
+ // takes ScRangeList, don't use it after this Ctor!
+ virtual ~XclCondFormat();
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+class XclCf : public ExcRecord
+{
+private:
+ friend XclCondFormat;
+
+ ExcPalette2& rPalette2;
+
+ sal_Char* pVarData; // formats + formulas
+ UINT16 nVarLen; // len of attributes + formulas
+ UINT16 nFormatLen;
+ UINT16 nFormLen1;
+ UINT16 nFormLen2;
+
+ UINT8 nType; // formatting type
+ UINT8 nOp; // formatting operator
+
+ BOOL bHasStyle;
+ UINT32 nStart;
+
+ BOOL bHasFont;
+ UINT32 nFontData1;
+ UINT32 nFontData2;
+ UINT32 nFontData3;
+ UINT32 nFontData4;
+ UINT32 nFontData5;
+ UINT8 nFontData6;
+ BOOL bHasColor;
+ UINT32 nIcvTextSer;
+
+ BOOL bHasLine;
+ UINT8 nLineData1;
+ UINT8 nLineData2;
+ UINT32 nIcvTopSer;
+ UINT32 nIcvBotSer;
+ UINT32 nIcvLftSer;
+ UINT32 nIcvRigSer;
+
+ BOOL bHasPattern;
+ UINT16 nPatt;
+ UINT32 nIcvForeSer;
+ UINT32 nIcvBackSer;
+
+protected:
+ virtual void SaveCont( SvStream& );
+public:
+ XclCf( const ScCondFormatEntry&, RootData& );
+ virtual ~XclCf();
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+class XclObproj : public ExcRecord
+{
+public:
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+//============================================================================
+// data consolidation reference
+
+
+class XclDConRef : public ExcRecord
+{
+private:
+ ScRange aSourceRange;
+ XclRawUnicodeString* pWorkbook;
+
+protected:
+ virtual void SaveCont( SvStream& rStrm );
+
+public:
+ XclDConRef( const ScRange& rSrcR, const String& rWB );
+ virtual ~XclDConRef();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+
+//============================================================================
+// merged cells
+//_________________________________________________________
+// class XclCellMerging - merged cells (max. 1024)
+
+class XclCellMerging : public ExcRecord
+{
+private:
+ UINT16 nCount;
+ UINT16List aCoordList;
+
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ inline XclCellMerging();
+ virtual ~XclCellMerging();
+
+ inline BOOL IsListFull() const { return nCount >= 1024; }
+ void Append( UINT16 nCol1, UINT16 nColCnt,
+ UINT16 nRow1, UINT16 nRowCnt );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+inline XclCellMerging::XclCellMerging() :
+ nCount( 0 )
+{ }
+
+
+
+//_________________________________________________________
+// class XclCellMergingList - list of XclCellMerging
+
+class XclCellMergingList : public ExcEmptyRec, private List
+{
+private:
+ XclCellMerging* pCurrRec;
+
+ inline XclCellMerging* _First() { return (XclCellMerging*) List::First(); }
+ inline XclCellMerging* _Next() { return (XclCellMerging*) List::Next(); }
+
+ XclCellMerging* InsertNewRec();
+
+protected:
+public:
+ inline XclCellMergingList();
+ virtual ~XclCellMergingList();
+
+ void Append( UINT16 nCol1, UINT16 nColCnt,
+ UINT16 nRow1, UINT16 nRowCnt );
+
+ virtual void Save( SvStream& rStrm );
+};
+
+
+inline XclCellMergingList::XclCellMergingList() :
+ pCurrRec( NULL )
+{ }
+
+
+
+//_________________________________________________________
+// class XclCodename
+
+class XclCodename : public ExcRecord
+{
+private:
+ XclUnicodeString aName;
+ virtual void SaveCont( SvStream& );
+public:
+ XclCodename( const String& );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+
+
+class XclBuildInName : public ExcNameListEntry, private ExcRoot
+{
+private:
+ UINT8 nKey;
+ UINT8* pData;
+ UINT16 nFormLen;
+ UINT16 nTabNum;
+ ScRangeList aRL;
+
+ void _Save( SvStream& rStrm );
+
+ inline ScRange* _First( void );
+ inline ScRange* _Next( void );
+protected:
+ inline void Append( const ScRange& rNew );
+
+ void Add( const ScRange& rRange );
+ void CreateFormula( void );
+public:
+ XclBuildInName( RootData*, UINT16 nTabNum, UINT8 nKey );
+ virtual ~XclBuildInName();
+
+ virtual UINT16 GetLen() const;
+};
+
+
+inline ScRange* XclBuildInName::_First( void )
+{
+ return ( ScRange* ) aRL.First();
+}
+
+
+inline ScRange* XclBuildInName::_Next( void )
+{
+ return ( ScRange* ) aRL.Next();
+}
+
+
+inline void XclBuildInName::Append( const ScRange& r )
+{
+ aRL.Append( r );
+}
+
+
+
+
+class XclPrintRange : public XclBuildInName
+{
+public:
+ XclPrintRange( RootData*, UINT16 nTabNum, ScDocument& rDoc );
+};
+
+
+
+
+class XclTitleRange : public XclBuildInName
+{
+public:
+ XclTitleRange( RootData*, UINT16 nTabNum, ScDocument& rDoc );
+};
+
+
+
+
+//___________________________________________________________________
+// Scenario export
+// - ExcEScenarioCell a cell of a scenario range
+// - ExcEScenario all ranges of a scenario table
+// - ExcEScenarioManager list of scenario tables
+
+class ExcEScenarioCell
+{
+private:
+ UINT16 nCol;
+ UINT16 nRow;
+ XclRawUnicodeString sText;
+
+protected:
+public:
+ ExcEScenarioCell( UINT16 nC, UINT16 nR, const String& rTxt );
+
+ inline UINT16 GetStringBytes()
+ { return (UINT16)(sText.GetByteCount() + 3); }
+
+ inline void WriteAddress( SvStream& rStrm ) { rStrm << nRow << nCol; }
+ void WriteText( SvStream& rStrm );
+};
+
+
+
+class ExcEScenario : public ExcRecord, private List
+{
+private:
+ UINT16 nRecLen;
+ XclRawUnicodeString sName;
+ XclRawUnicodeString sComment;
+ static XclRawUnicodeString sUsername;
+
+ inline ExcEScenarioCell* _First() { return (ExcEScenarioCell*) List::First(); }
+ inline ExcEScenarioCell* _Next() { return (ExcEScenarioCell*) List::Next(); }
+
+ BOOL Append( UINT16 nCol, UINT16 nRow, const String& rTxt );
+
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ ExcEScenario( ScDocument& rDoc, UINT16 nTab );
+ virtual ~ExcEScenario();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+
+class ExcEScenarioManager : public ExcRecord, private List
+{
+private:
+ UINT16 nActive;
+
+ inline ExcEScenario* _First() { return (ExcEScenario*) List::First(); }
+ inline ExcEScenario* _Next() { return (ExcEScenario*) List::Next(); }
+
+ inline void Append( ExcEScenario* pScen )
+ { List::Insert( pScen, LIST_APPEND ); }
+
+ virtual void SaveCont( SvStream& rStrm );
+
+protected:
+public:
+ ExcEScenarioManager( ScDocument& rDoc, UINT16 nTab );
+ virtual ~ExcEScenarioManager();
+
+ virtual void Save( SvStream& rStrm );
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+};
+
+
+
+
+class SvMemoryStream;
+class SvxURLField;
+
+
+class XclHlink : public ExcRecord
+{
+private:
+ UINT16 nColFirst;
+ UINT16 nRowFirst;
+ UINT32 nFlags;
+
+ String* pRepr; // to B displayed in cell text
+
+ static const BYTE pStaticData1[];
+ SvMemoryStream* pVarData;
+
+ static inline UINT32 StaticLen( void ); // -> xcl97rec.cxx!
+ inline UINT32 VarLen( void ) const; // -> xcl97rec.cxx!
+
+ virtual void SaveCont( SvStream& );
+public:
+ XclHlink( RootData&, const SvxURLField& );
+ virtual ~XclHlink();
+
+ virtual UINT16 GetNum() const;
+ virtual UINT16 GetLen() const;
+
+ inline void Set( const ScAddress& rPos );
+
+ inline BOOL IsValid( void ) const;
+ inline const String* GetRepr( void ) const;
+};
+
+
+inline void XclHlink::Set( const ScAddress& r )
+{
+ nColFirst = r.Col();
+ nRowFirst = r.Row();
+}
+
+
+inline BOOL XclHlink::IsValid( void ) const
+{
+ return pVarData != NULL;
+}
+
+
+inline const String* XclHlink::GetRepr( void ) const
+{
+ return pRepr;
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.23 2000/09/17 14:08:49 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.22 2000/09/01 10:02:35 gt
+ export hyperlink
+
+ Revision 1.20 2000/07/28 15:12:03 gt
+ export print range/title + im-/export styles
+
+ Revision 1.19 2000/07/14 07:57:59 dr
+ export: external references
+
+ Revision 1.18 2000/07/04 07:39:31 dr
+ export: scenarios
+
+ Revision 1.17 2000/06/23 11:32:57 dr
+ add: class XclObjDropDown
+
+ Revision 1.16 2000/05/29 14:36:17 dr
+ class ExcPalette2 - color reduction algorithm
+
+ Revision 1.15 2000/05/08 14:02:46 gt
+ #75548# merge from branch
+
+ Revision 1.14 2000/05/05 15:27:20 dr
+ new: XclCellMerging, XclCellMergingList
+
+ Revision 1.13 2000/05/05 09:25:53 gt
+ UNICODE
+
+ Revision 1.12 2000/04/20 08:07:42 dr
+ pivot table export
+
+ Revision 1.11 2000/02/25 12:00:04 gt
+ #73585# Filter Options and VBA-recognition by Excel
+
+ Revision 1.10 2000/02/07 19:13:31 er
+ #72775# new: XclObjOle
+
+ Revision 1.9 2000/01/31 08:30:52 gt
+ #72481# export conditional format
+
+ Revision 1.8 1999/10/12 16:30:47 er
+ new: XclObjChart
+
+ Revision 1.7 1999/09/29 15:56:26 er
+ new: XclObjChart
+
+ Revision 1.6 1999/09/22 19:09:01 er
+ chg: OBJ records
+
+ Revision 1.5 1999/07/27 14:55:06 ER
+ new: Msodrawinggroup, Msodrawing, Obj, ObjComment, Note, NoteList, Txo
+
+
+ Rev 1.4 27 Jul 1999 16:55:06 ER
+ new: Msodrawinggroup, Msodrawing, Obj, ObjComment, Note, NoteList, Txo
+
+ Rev 1.3 01 Jul 1999 17:20:18 ER
+ chg: WINDOW2 sets selected sheet tab, ExcDummy_03 only SELECTION
+
+ Rev 1.2 16 Jun 1999 19:57:50 ER
+ new: XclObjList, XclObj, XclObjComment, XclTxo, XclNote
+
+ Rev 1.1 11 Jun 1999 20:08:08 ER
+ xcl97exp Formula: References, SupbookList, ExtsheetList, literal Strings
+
+------------------------------------------------------------------------*/
+
+#endif // _XCL97REC_HXX
diff --git a/sc/source/filter/lotus/expop.cxx b/sc/source/filter/lotus/expop.cxx
new file mode 100644
index 000000000000..d08968f24324
--- /dev/null
+++ b/sc/source/filter/lotus/expop.cxx
@@ -0,0 +1,431 @@
+/*************************************************************************
+ *
+ * $RCSfile: expop.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <tools/debug.hxx>
+
+#include "dociter.hxx"
+#include "cell.hxx"
+#include "document.hxx"
+
+#include "exp_op.hxx"
+
+
+
+
+BYTE ExportWK1::GenFormByte( const ScPatternAttr &aAttr )
+{
+ return 0xFF;
+}
+
+
+inline void ExportWK1::Bof()
+{ // (0x00)
+ aOut << ( USHORT ) 0x00 << ( USHORT ) 2 << ( USHORT ) 0x0406; // Version 1-2-3/2, Symhony/1.1
+}
+
+
+inline void ExportWK1::Eof()
+{ // (0x01)
+ aOut << ( USHORT ) 0x01 << ( USHORT ) 0;
+}
+
+
+inline void ExportWK1::Calcmode()
+{ // (0x02)
+ // Calculationmode = automatic
+ aOut << ( USHORT ) 0x02 << ( USHORT ) 1 << ( BYTE ) 0xFF;
+}
+
+
+inline void ExportWK1::Calcorder()
+{ // (0x03)
+ // order = natural
+ aOut << ( USHORT ) 0x03 << ( USHORT ) 1 << ( BYTE ) 0x00;
+}
+
+
+inline void ExportWK1::Split()
+{ // (0x04)
+ // not split
+ aOut << ( USHORT ) 0x04 << ( USHORT ) 1 << ( BYTE ) 0x00;
+}
+
+
+inline void ExportWK1::Sync()
+{ // (0x05)
+ // not synchronized
+ aOut << ( USHORT ) 0x05 << ( USHORT ) 1 << ( BYTE ) 0x00;
+}
+
+
+inline void ExportWK1::Dimensions()
+{ // (0x06)
+ USHORT nEndCol, nEndRow;
+ aOut << ( USHORT ) 0x06 << ( USHORT ) 8 << ( USHORT ) 0 << ( USHORT ) 0; // Starting Col/Row
+ pD->GetPrintArea( 0, nEndCol, nEndRow );
+ aOut << nEndCol << nEndRow; // Ending Col/Row
+}
+
+
+inline void ExportWK1::Window1()
+{ // (0x07)
+ aOut << ( USHORT ) 0x07 << ( USHORT ) 32
+ << ( USHORT ) 0 << ( USHORT ) 0 // Cursor Col/Row
+ << ( BYTE ) 0xFF // Format: protected, special, default
+ << ( BYTE ) 0 // Dummy
+ << ( USHORT ) 9 // Default column width
+ << ( USHORT ) 8 << ( USHORT ) 14// Number of cols/rows on screen
+ << ( USHORT ) 0 << ( USHORT ) 0 // Left col / top row
+ // Rest aus Doku-Beispiel
+ << ( USHORT ) 0 << ( USHORT ) 0 // Number of title cols / rows
+ << ( USHORT ) 0 << ( USHORT ) 0 // Left title col / top title row
+ << ( USHORT ) 0x0004 << ( USHORT ) 0x0004// Top-left col / row
+ << ( USHORT ) 0x0048 // Number of cols in window
+ << ( USHORT ) 0x00; // Dummy
+}
+
+
+inline void ExportWK1::Colw()
+{ // (0x08)
+ // ACHTUNG: muss nach Window1 und vor hidden cols record kommen!
+ USHORT nWidth;
+ BYTE nWidthSpaces;
+ for( USHORT nCol = 0 ; nCol < 256 ; nCol++ )
+ {
+ nWidth = pD->GetColWidth( nCol, 0 );
+ nWidthSpaces = ( BYTE ) ( nWidth / TWIPS_PER_CHAR );
+ aOut << ( USHORT ) 0x08 << ( USHORT ) 3 << nCol << nWidthSpaces;
+ }
+}
+
+
+void ExportWK1::Blank( const USHORT nCol, const USHORT nRow, const ScPatternAttr& aAttr )
+{ // (0x0C)
+ // PREC: nCol <= MAXCOL, nRow <= MAXROW
+ DBG_ASSERT( nCol <= MAXCOL, "ExportWK1::Blank(): Col > MAXCOL" );
+ DBG_ASSERT( nRow <= MAXROW, "ExportWK1::Blank(): Row > MAXROW" );
+
+ aOut << ( USHORT ) 0x0C << ( USHORT ) 5 << GenFormByte( aAttr ) << nCol << nRow;
+}
+
+
+void ExportWK1::Number( const USHORT nCol, const USHORT nRow, const double fWert, const ScPatternAttr &aAttr )
+{ // (0x0E)
+ // PREC: nCol <= MAXCOL, nRow <= MAXROW
+ DBG_ASSERT( nCol <= MAXCOL, "ExportWK1::Number(): Col > MAXCOL" );
+ DBG_ASSERT( nRow <= MAXROW, "ExportWK1::Number(): Row > MAXROW" );
+
+ aOut << ( USHORT ) 0x0E << ( USHORT ) 13 << GenFormByte( aAttr ) << nCol << nRow << fWert;
+}
+
+
+void ExportWK1::Label( const USHORT nCol, const USHORT nRow, const String& rStr, const ScPatternAttr& aAttr )
+{ // (0x0F)
+ // PREC: nCol <= MAXCOL, nRow <= MAXROW
+ DBG_ASSERT( nCol <= MAXCOL, "ExportWK1::Label(): Col > MAXCOL" );
+ DBG_ASSERT( nRow <= MAXROW, "ExportWK1::Label(): Row > MAXROW" );
+
+ ByteString aStr( rStr, eZielChar );
+
+ USHORT nLaenge = 7; // Anzahl Bytes vor String+Nullbyte am Ende + Alignment-Char
+
+ xub_StrLen nAnz = aStr.Len();
+
+
+ if( nAnz > 240 ) // max. 240 Zeichen im String
+ nAnz = 240;
+
+ nLaenge += ( USHORT ) nAnz; // + Stringlaenge
+
+ aOut << ( USHORT ) 0x0F << nLaenge << GenFormByte( aAttr ) << nCol << nRow << ( sal_Char ) '\'';
+ // ACHTUNG: ZUNAECHST NUR LEFT ALIGNMENT
+
+ aOut.Write( aStr.GetBuffer(), nAnz );
+
+ aOut << ( BYTE ) 0x00; // ...und Nullterminator anhaengen
+}
+
+
+void ExportWK1::Formula( const USHORT nCol, const USHORT nRow, const ScFormulaCell* pFC, const ScPatternAttr& aAttr )
+{ // (0x10)
+ // PREC: nCol <= MAXCOL, nRow <= MAXROW
+ DBG_ASSERT( nCol <= MAXCOL, "ExportWK1::Formula(): Col > MAXCOL" );
+ DBG_ASSERT( nRow <= MAXROW, "ExportWK1::Formula(): Row > MAXROW" );
+
+ USHORT nLaenge = 15; // Bytes bis Formel
+ double fErgebnis;
+
+ // zunaechst nur Dummy-Angaben (Formel := Ergebnis der Berechnung )
+ nLaenge += 9+1;
+
+ fErgebnis = ( ( ScFormulaCell* ) pFC )->GetValue();
+
+ aOut << ( USHORT ) 0x10 << ( USHORT ) nLaenge
+ << GenFormByte( aAttr ) << nCol << nRow
+ << fErgebnis
+ << ( USHORT ) 9+1 // Dummy-Formula-Size
+ << ( BYTE ) 0x00 // constant, floating point
+ << fErgebnis
+ << ( BYTE ) 0x03; // return
+}
+
+
+inline void ExportWK1::Protect()
+{ // (0x24)
+ //Global protection off
+ aOut << ( USHORT ) 0x24 << ( USHORT ) 1 << ( BYTE ) 0x00;
+}
+
+
+inline void ExportWK1::Footer()
+{ // (0x25)
+ // zunaechst nur leerer C-String
+ aOut << ( USHORT ) 0x25 << ( USHORT ) 242 << ( sal_Char ) '\''; // linksbuendiger leerer String
+ for( short nLauf = 0 ; nLauf < 241 ; nLauf++ )
+ aOut << ( BYTE ) 0x00;
+}
+
+
+inline void ExportWK1::Header()
+{ // (0x26)
+ // zunaechst nur leerer C-String
+ aOut << ( USHORT ) 0x26 << ( USHORT ) 242 << ( sal_Char ) '\''; // linksbuendiger leerer String
+ for( short nLauf = 0 ; nLauf < 241 ; nLauf++ )
+ aOut << ( BYTE ) 0x00;
+}
+
+
+inline void ExportWK1::Margins()
+{ // (0x28)
+ aOut << ( USHORT ) 0x28 << ( USHORT ) 10
+ << ( USHORT ) 4 << ( USHORT ) 76 // Left/right margin
+ << ( USHORT ) 66 // Page length
+ << ( USHORT ) 2 << ( USHORT ) 2; // Top/Bottom margin
+}
+
+
+inline void ExportWK1::Labelfmt()
+{ // (0x29)
+ // Global label alignment = left
+ aOut << ( USHORT ) 0x29 << ( USHORT ) 1 << ( BYTE ) 0x27;
+}
+
+
+inline void ExportWK1::Calccount()
+{ // (0x2F)
+ // Iteration count = 16 (oder so aehnlich)
+ aOut << ( USHORT ) 0x2F << ( USHORT ) 1 << ( BYTE ) 16;
+}
+
+
+inline void ExportWK1::Cursorw12()
+{ // (0x31)
+ // Cursor location in window 1
+ aOut << ( USHORT ) 0x31 << ( USHORT ) 1 << ( BYTE ) 1;
+}
+
+
+void ExportWK1::WKString( const USHORT nCol, const USHORT nRow, const ScFormulaCell* pFC, const ScPatternAttr& aAttr )
+{ // (0x33)
+ // PREC: nCol <= MAXCOL, nRow <= MAXROW
+/* DBG_ASSERT( nCol <= MAXCOL, "ExportWK1::Label(): Col > MAXCOL" );
+ DBG_ASSERT( nRow <= MAXROW, "ExportWK1::Label(): Row > MAXROW" );
+
+ String aStr;
+ ( ( ScFormulaCell * ) pFC )->GetString( aStr ); // Formeltext zunaechst so belassen
+
+ USHORT nLaenge = 6; // Anzahl Bytes vor String+Nullbyte am Ende
+
+ USHORT nAnz = aStr.Len();
+
+ if( nAnz > 240 ) // max. 240 Zeichen im String
+ nAnz = 240;
+
+ nLaenge += nAnz; // + Stringlaenge
+
+ aOut << ( USHORT ) 0x33 << nLaenge
+ << GenFormByte( aAttr ) << nCol << nRow;
+
+ // Zeichenweise String ausgeben
+ for( USHORT nLauf = 0 ; nLauf < nAnz ; nLauf++ )
+ aOut << aStr[ nLauf ];
+
+ aOut << ( BYTE ) 0x00; // ...und Nullterminator anhaengen
+*/
+ }
+
+
+inline void ExportWK1::Snrange()
+{ // (0x47)
+ //aOut << ( USHORT ) 0x47 << ( USHORT ) x
+/* ScRangeName *pRanges = pD->GetRangeName();
+ ScRangeData *pData;
+ String aName;
+
+ USHORT nAnz = pRanges->GetCount();
+
+ for( USHORT nLauf = 0 ; nLauf < nAnz ; nLauf++ )
+ {
+ pData = pRanges[ nLauf ];
+
+ }
+*/
+}
+
+
+inline void ExportWK1::Hidcol()
+{ // (0x64)
+ ULONG nHide = 0x00000000; // ...niemand ist versteckt
+
+ aOut << ( USHORT ) 0x64 << ( USHORT ) 32;
+
+ for( int nLauf = 0 ; nLauf < 8 ; nLauf++ )
+ aOut << nHide; // 8 * 32 Bits = 256
+}
+
+
+inline void ExportWK1::Cpi()
+{ // (0x96)
+ //aOut << ( USHORT ) 0x96 << ( USHORT ) x;
+}
+
+
+FltError ExportWK1::Write()
+{
+ Bof();
+ //Dimensions();
+ //Cpi();
+ //Calccount();
+ //Calcmode();
+ //Calcorder();
+ //Split();
+ //Sync();
+ //Window1();
+ Colw();
+ //Hidcol();
+ //Cursorw12();
+ //Snrange();
+ //Protect();
+ //Footer();
+ //Header();
+ //Margins();
+ //Labelfmt();
+
+ // Zellen-Bemachung
+ ScDocumentIterator aIter( pD, 0, 0 );
+ ScBaseCell* pCell;
+ USHORT nCol, nRow, nTab;
+ const ScPatternAttr* pPatAttr;
+
+ if( aIter.GetFirst() )
+ do
+ { // ueber alle Zellen der ersten Tabelle iterieren
+ pPatAttr = aIter.GetPattern();
+ pCell = aIter.GetCell();
+ aIter.GetPos( nCol, nRow, nTab );
+
+ switch( pCell->GetCellType() )
+ {
+ case CELLTYPE_VALUE:
+ {
+ double fVal;
+ fVal = ( ( ScValueCell * ) pCell)->GetValue();
+ Number( nCol, nRow, fVal, *pPatAttr );
+ }
+ break;
+ case CELLTYPE_STRING:
+ {
+ String aStr;
+ ( ( ScStringCell * ) pCell)->GetString( aStr );
+ Label( nCol, nRow, aStr, *pPatAttr );
+ }
+ break;
+ case CELLTYPE_FORMULA:
+ {
+ Formula( nCol, nRow, ( ScFormulaCell * ) pCell, *pPatAttr );
+ WKString( nCol, nRow, ( ScFormulaCell * ) pCell, *pPatAttr );
+ }
+ break;
+ case CELLTYPE_NOTE:
+ case CELLTYPE_NONE:
+ case CELLTYPE_DESTROYED:
+ break;
+ default:
+ DBG_ASSERT( FALSE, "ExportWK1::Write(): unbekannter Celltype!" );
+ }
+ }
+ while( aIter.GetNext() );
+
+ Eof();
+
+ return eERR_OK;
+}
+
+
+
diff --git a/sc/source/filter/lotus/export.cxx b/sc/source/filter/lotus/export.cxx
new file mode 100644
index 000000000000..8a2f31758887
--- /dev/null
+++ b/sc/source/filter/lotus/export.cxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * $RCSfile: export.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#include "scerrors.hxx"
+#include "exp_op.hxx"
+
+
+FltError ScExportLotus123( SvStream& aStream, ScDocument* pDoc, ExportFormatLotus eFormat, CharSet eDest )
+{
+ switch( eFormat )
+ {
+ case ExpWK1:
+ {
+ ExportWK1 aWKFile( aStream, pDoc, eDest );
+ aWKFile.Write();
+ }
+ break;
+ case ExpWK3:
+ return eERR_NI;
+ break;
+ default:
+ return eERR_NI;
+ }
+
+ return eERR_OK;
+}
+
+
+
diff --git a/sc/source/filter/lotus/filter.cxx b/sc/source/filter/lotus/filter.cxx
new file mode 100644
index 000000000000..56f8f8c6fea7
--- /dev/null
+++ b/sc/source/filter/lotus/filter.cxx
@@ -0,0 +1,241 @@
+/*************************************************************************
+ *
+ * $RCSfile: filter.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+// Das geht: Versionserkennung WKS, WK1 und WK3
+// ...Rest steht in op.cpp
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <tools/solar.h>
+#include <string.h>
+#include <assert.h>
+
+#include "filter.hxx"
+#include "document.hxx"
+#include "compiler.hxx"
+#include "scerrors.hxx"
+
+#include "fltprgrs.hxx"
+#include "root.hxx"
+#include "lotrange.hxx"
+#include "optab.h"
+#include "scmem.h"
+#include "decl.h"
+#include "tool.h"
+
+// Konstanten ------------------------------------------------------------
+const UINT16 nBOF = 0x0000;
+
+
+
+// externe Variablen -----------------------------------------------------
+extern WKTYP eTyp; // Typ der gerade in bearbeitung befindlichen Datei
+WKTYP eTyp;
+
+extern BOOL bEOF; // zeigt Ende der Datei
+BOOL bEOF;
+
+extern CharSet eCharNach; // Zeichenkonvertierung von->nach
+CharSet eCharNach;
+
+extern CharSet eCharVon;
+CharSet eCharVon;
+
+extern ScDocument* pDoc; // Aufhaenger zum Dokumentzugriff
+ScDocument* pDoc;
+
+
+extern sal_Char* pPuffer; // -> memory.cxx
+extern sal_Char* pDummy1; // -> memory.cxx
+
+extern OPCODE_FKT pOpFkt[ FKT_LIMIT ];
+ // -> optab.cxx, Tabelle moeglicher Opcodes
+
+extern long nDateiLaenge; // -> datei.cpp, ...der gerade offenen Datei
+
+LOTUS_ROOT* pLotusRoot = NULL;
+
+
+WKTYP ScanVersion( SvStream& aStream );
+
+
+extern FltError ScImportLotus123old( SvStream&, ScDocument*, CharSet eSrc );
+
+
+
+FltError ScImportLotus123old( SvStream& aStream, ScDocument* pDocument, CharSet eSrc )
+{
+ aStream.Seek( 0UL );
+
+ // Zeiger auf Dokument global machen
+ pDoc = pDocument;
+
+ bEOF = FALSE;
+
+ eCharVon = eSrc;
+
+ // Speicher besorgen
+ if( !MemNew() )
+ return eERR_NOMEM;
+
+ InitPage(); // Seitenformat initialisieren (nur Tab 0!)
+
+ // Progressbar starten
+ FilterProgressBar aPrgrsBar( aStream );
+
+ // Datei-Typ ermitteln
+ eTyp = ScanVersion( aStream );
+
+ switch( eTyp ) // auswaehlen der Tabelle
+ {
+ case eWK_1:
+ case eWK_2: break;
+ case eWK3: return eERR_NI;
+ case eWK_Error: return eERR_FORMAT;
+ default: return eERR_UNKN_WK;
+ }
+
+ // Init von Lotus Root-Daten -> Ctor LotusImport
+
+ // Aufdroeseln der Opcodes
+
+ while( !bEOF )
+ {
+ UINT16 nOpcode, nLaenge;
+
+ // ein Lotus-Record einlesen
+ aStream >> nOpcode >> nLaenge;
+
+ aPrgrsBar.Progress();
+
+
+ if( aStream.IsEof() )
+ bEOF = TRUE;
+ else if( nOpcode == 75 )
+ return eERR_FILEPASSWD;
+ else if( nOpcode < FKT_LIMIT )
+ ( pOpFkt[ nOpcode ] )( aStream, nLaenge );
+ else
+ aStream.SeekRel( nLaenge );
+ }
+
+ MemDelete();
+
+ pDoc->CalcAfterLoad();
+
+ return eERR_OK;
+}
+
+
+WKTYP ScanVersion( SvStream& aStream )
+{
+ // PREC: pWKDatei: Zeiger auf offene Datei
+ // POST: return: Typ der Datei
+ UINT16 nOpcode, nVersNr, nRecLaenge;
+
+ // erstes Byte muss wegen BOF zwingend 0 sein!
+ aStream >> nOpcode;
+ if( nOpcode != nBOF )
+ return eWK_UNKNOWN;
+
+ aStream >> nRecLaenge >> nVersNr;
+
+ if( aStream.IsEof() )
+ return eWK_Error;
+
+ switch( nVersNr )
+ {
+ case 0x0404:
+ if( nRecLaenge == 2 )
+ return eWK_1;
+ else
+ return eWK_UNKNOWN;
+ break;
+
+ case 0x0406:
+ if( nRecLaenge == 2 )
+ return eWK_2;
+ else
+ return eWK_UNKNOWN;
+ break;
+
+ case 0x1000:
+ aStream >> nVersNr;
+ if( aStream.IsEof() ) return eWK_Error;
+ if( nVersNr == 0x0004 && nRecLaenge == 26 )
+ { // 4 Bytes von 26 gelesen->22 ueberlesen
+ aStream.Read( pDummy1, 22 );
+ return eWK3;
+ }
+ break;
+ }
+
+ return eWK_UNKNOWN;
+}
+
+
+
+
diff --git a/sc/source/filter/lotus/lotattr.cxx b/sc/source/filter/lotus/lotattr.cxx
new file mode 100644
index 000000000000..88e0a92535e8
--- /dev/null
+++ b/sc/source/filter/lotus/lotattr.cxx
@@ -0,0 +1,335 @@
+/*************************************************************************
+ *
+ * $RCSfile: lotattr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/algitem.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/brshitem.hxx>
+
+#include "document.hxx"
+#include "patattr.hxx"
+#include "docpool.hxx"
+#include "attrib.hxx"
+
+#include "lotattr.hxx"
+#include "lotfntbf.hxx"
+#include "root.hxx"
+
+
+
+void LotAttrCache::LotusToScBorderLine( UINT8 nLine, SvxBorderLine& aBL )
+{
+ static const UINT16 pPara[ 4 ][ 3 ] =
+ {
+ { 0,0,0 },
+ { DEF_LINE_WIDTH_1, 0, 0 },
+ { DEF_LINE_WIDTH_2, 0, 0 },
+ { DEF_LINE_WIDTH_1, DEF_LINE_WIDTH_1, DEF_LINE_WIDTH_1 }
+ };
+
+ nLine &= 0x03;
+
+ if( nLine )
+ {
+ aBL.SetOutWidth( pPara[ nLine ][ 0 ] );
+ aBL.SetInWidth( pPara[ nLine ][ 1 ] );
+ aBL.SetDistance( pPara[ nLine ][ 2 ] );
+ }
+}
+
+
+const SvxColorItem& LotAttrCache::GetColorItem( const UINT8 nLotIndex ) const
+{
+ DBG_ASSERT( nLotIndex > 0 && nLotIndex < 7,
+ "-LotAttrCache::GetColorItem(): so nicht!" );
+
+ return *ppColorItems[ nLotIndex - 1 ];
+}
+
+
+const Color& LotAttrCache::GetColor( const UINT8 nLotIndex ) const
+{
+ // Farbe <-> Index passt fuer Background, nicht aber fuer Fonts (0 <-> 7)!
+ DBG_ASSERT( nLotIndex < 8, "*LotAttrCache::GetColor(): Index > 7!" );
+ return pColTab[ nLotIndex ];
+}
+
+
+LotAttrCache::LotAttrCache( void )
+{
+ pDocPool = pLotusRoot->pDoc->GetPool();
+
+ pColTab = new Color [ 8 ];
+ pColTab[ 0 ] = Color( COL_WHITE );
+ pColTab[ 1 ] = Color( COL_LIGHTBLUE );
+ pColTab[ 2 ] = Color( COL_LIGHTGREEN );
+ pColTab[ 3 ] = Color( COL_LIGHTCYAN );
+ pColTab[ 4 ] = Color( COL_LIGHTRED );
+ pColTab[ 5 ] = Color( COL_LIGHTMAGENTA );
+ pColTab[ 6 ] = Color( COL_YELLOW );
+ pColTab[ 7 ] = Color( COL_BLACK );
+
+ ppColorItems[ 0 ] = new SvxColorItem( GetColor( 1 ) ); // 1
+ ppColorItems[ 1 ] = new SvxColorItem( GetColor( 2 ) );
+ ppColorItems[ 2 ] = new SvxColorItem( GetColor( 3 ) );
+ ppColorItems[ 3 ] = new SvxColorItem( GetColor( 4 ) );
+ ppColorItems[ 4 ] = new SvxColorItem( GetColor( 5 ) );
+ ppColorItems[ 5 ] = new SvxColorItem( GetColor( 6 ) ); // 6
+
+ pBlack = new SvxColorItem( Color( COL_BLACK ) );
+ pWhite = new SvxColorItem( Color( COL_WHITE ) );
+}
+
+
+LotAttrCache::~LotAttrCache()
+{
+ ENTRY* pAkt = ( ENTRY* ) List::First();
+
+ while( pAkt )
+ {
+ delete pAkt;
+ pAkt = ( ENTRY* ) List::Next();
+ }
+
+ for( UINT16 nCnt = 0 ; nCnt < 6 ; nCnt++ )
+ delete ppColorItems[ nCnt ];
+
+ delete pBlack;
+ delete pWhite;
+
+ delete[] pColTab;
+}
+
+
+const ScPatternAttr& LotAttrCache::GetPattAttr( const LotAttrWK3& rAttr )
+{
+ UINT32 nRefHash;
+ ENTRY* pAkt = ( ENTRY* ) List::First();
+
+ MakeHash( rAttr, nRefHash );
+
+ while( pAkt )
+ {
+ if( *pAkt == nRefHash )
+ return *pAkt->pPattAttr;
+
+ pAkt = ( ENTRY* ) List::Next();
+ }
+
+ // neues PatternAttribute erzeugen
+ ScPatternAttr* pNewPatt = new ScPatternAttr( pDocPool );
+ SfxItemSet& rItemSet = pNewPatt->GetItemSet();
+ pAkt = new ENTRY( pNewPatt );
+
+ pAkt->nHash0 = nRefHash;
+
+ pLotusRoot->pFontBuff->Fill( rAttr.nFont, rItemSet );
+
+ UINT8 nLine = rAttr.nLineStyle;
+ if( nLine )
+ {
+ SvxBoxItem aBox( ATTR_BORDER );
+ SvxBorderLine aTop, aLeft, aBottom, aRight;
+
+ LotusToScBorderLine( nLine, aLeft );
+ nLine >>= 2;
+ LotusToScBorderLine( nLine, aRight );
+ nLine >>= 2;
+ LotusToScBorderLine( nLine, aTop );
+ nLine >>= 2;
+ LotusToScBorderLine( nLine, aBottom );
+
+ aBox.SetLine( &aTop, BOX_LINE_TOP );
+ aBox.SetLine( &aLeft, BOX_LINE_LEFT );
+ aBox.SetLine( &aBottom, BOX_LINE_BOTTOM );
+ aBox.SetLine( &aRight, BOX_LINE_RIGHT );
+
+ rItemSet.Put( aBox );
+ }
+
+ UINT8 nFontCol = rAttr.nFontCol & 0x07;
+ if( nFontCol )
+ {
+ // nFontCol > 0
+ if( nFontCol < 7 )
+ rItemSet.Put( GetColorItem( nFontCol ) );
+ else
+ rItemSet.Put( *pWhite );
+ }
+
+ UINT8 nBack = rAttr.nBack & 0x1F;
+ if( nBack )
+ rItemSet.Put( SvxBrushItem( GetColor( nBack & 0x07 ) ) );
+
+ if( rAttr.nBack & 0x80 )
+ {
+ SvxHorJustifyItem aHorJustify;
+ aHorJustify.SetValue( SVX_HOR_JUSTIFY_CENTER );
+ rItemSet.Put( aHorJustify );
+ }
+
+ List::Insert( pAkt, LIST_APPEND );
+
+ return *pNewPatt;
+ }
+
+
+LotAttrCol::~LotAttrCol()
+{
+ Clear();
+}
+
+
+void LotAttrCol::SetAttr( const UINT16 nRow, const ScPatternAttr& rAttr )
+{
+ DBG_ASSERT( nRow <= MAXROW, "*LotAttrCol::SetAttr(): ... und rums?!" );
+
+ ENTRY* pAkt = ( ENTRY* ) List::Last();
+
+ if( pAkt )
+ {
+ if( ( pAkt->nLastRow == nRow - 1 ) && ( &rAttr == pAkt->pPattAttr ) )
+ pAkt->nLastRow = nRow;
+ else
+ {
+ pAkt = new ENTRY;
+
+ pAkt->pPattAttr = &rAttr;
+ pAkt->nFirstRow = pAkt->nLastRow = nRow;
+ List::Insert( pAkt, LIST_APPEND );
+ }
+ }
+ else
+ { // erster Eintrag
+ pAkt = new ENTRY;
+ pAkt->pPattAttr = &rAttr;
+ pAkt->nFirstRow = pAkt->nLastRow = nRow;
+ List::Insert( pAkt, LIST_APPEND );
+ }
+}
+
+
+void LotAttrCol::Apply( const UINT16 nColNum, const UINT16 nTabNum, const BOOL bClear )
+{
+ ScDocument* pDoc = pLotusRoot->pDoc;
+ ENTRY* pAkt = ( ENTRY* ) List::First();
+
+ while( pAkt )
+ {
+ pDoc->ApplyPatternAreaTab( nColNum, pAkt->nFirstRow, nColNum, pAkt->nLastRow,
+ nTabNum, *pAkt->pPattAttr );
+
+ pAkt = ( ENTRY* ) List::Next();
+ }
+}
+
+
+void LotAttrCol::Clear( void )
+{
+ ENTRY* pAkt = ( ENTRY* ) List::First();
+
+ while( pAkt )
+ {
+ delete pAkt;
+ pAkt = ( ENTRY* ) List::Next();
+ }
+}
+
+
+LotAttrTable::LotAttrTable( void )
+{
+}
+
+
+LotAttrTable::~LotAttrTable()
+{
+}
+
+
+void LotAttrTable::SetAttr( const UINT8 nColFirst, const UINT8 nColLast, const UINT16 nRow,
+ const LotAttrWK3& rAttr )
+{
+ const ScPatternAttr& rPattAttr = aAttrCache.GetPattAttr( rAttr );
+ UINT16 nColCnt;
+
+ for( nColCnt = nColFirst ; nColCnt <= nColLast ; nColCnt++ )
+ pCols[ nColCnt ].SetAttr( nRow, rPattAttr );
+}
+
+
+void LotAttrTable::Apply( const UINT16 nTabNum )
+{
+ UINT16 nColCnt;
+ for( nColCnt = 0 ; nColCnt <= MAXCOL ; nColCnt++ )
+ pCols[ nColCnt ].Apply( nColCnt, nTabNum ); // macht auch gleich ein Clear() am Ende
+}
+
+
+
+
diff --git a/sc/source/filter/lotus/lotform.cxx b/sc/source/filter/lotus/lotform.cxx
new file mode 100644
index 000000000000..11fb93228405
--- /dev/null
+++ b/sc/source/filter/lotus/lotform.cxx
@@ -0,0 +1,2087 @@
+/*************************************************************************
+ *
+ * $RCSfile: lotform.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "decl.h"
+#include "spstring.hxx"
+#include "lotform.hxx"
+#include "compiler.hxx"
+#include "lotrange.hxx"
+#include "namebuff.hxx"
+#include "root.hxx"
+#include "tool.h"
+
+extern WKTYP eTyp;
+
+extern double ReadLongDouble( SvStream& rStr );
+
+
+static const sal_Char* GetAddInName( const UINT8 nIndex );
+
+static DefTokenId lcl_KnownAddIn( const ByteString& sTest );
+
+
+
+
+void LotusToSc::DoFunc( DefTokenId eOc, BYTE nAnz, const sal_Char* pExtString )
+{
+ TokenId eParam[ 256 ];
+ INT32 nLauf;
+ TokenId nMerk0, nMerk1;
+
+ BOOL bAddIn = FALSE;
+ BOOL bNeg = FALSE;
+
+ DBG_ASSERT( nAnz < 128, "-LotusToSc::DoFunc(): Neee! -so viel kann ich nicht!" );
+
+ if( eOc == ocNoName )
+ {
+ ByteString t;
+ if( pExtString )
+ {
+ const ByteString s( "@<<@123>>" );
+
+ t = pExtString;
+
+ xub_StrLen n = t.Search( s );
+ if( n != STRING_NOTFOUND )
+ t.Erase( 0, n + s.Len() );
+
+ t.EraseTrailingChars( '(' );
+
+ eOc = lcl_KnownAddIn( t );
+
+ if( eOc == ocNoName )
+ t.Insert( "L123_", 0 );
+ }
+ else
+ t = "#UNKNOWN FUNC NAME#";
+
+ if( eOc == ocNoName )
+ {
+ bAddIn = TRUE;
+ nMerk0 = aPool.Store( eOc, String( t, eSrcChar ) );
+
+ aPool << nMerk0;
+ }
+ }
+
+ for( nLauf = 0 ; nLauf < nAnz ; nLauf++ )
+ aStack >> eParam[ nLauf ];
+
+ // Spezialfaelle...
+ switch( eOc )
+ {
+ case ocIndex:
+ DBG_ASSERT( nAnz > 2, "+LotusToSc::DoFunc(): ocIndex braucht mind. 2 Parameter!" );
+ nMerk0 = eParam[ 0 ];
+ eParam[ 0 ] = eParam[ 1 ];
+ eParam[ 1 ] = nMerk0;
+ IncToken( eParam[ 0 ] );
+ IncToken( eParam[ 1 ] );
+ break;
+ case ocIKV:
+ {
+ DBG_ASSERT( nAnz == 2, "+LotusToSc::DoFunc(): ocIKV hat nur 2 Parameter!" );
+ nMerk0 = eParam[ 0 ];
+ eParam[ 0 ] = eParam[ 1 ];
+ eParam[ 1 ] = nMerk0;
+ }
+ break;
+ case ocGetYear:
+ {
+ nMerk0 = aPool.Store( 1900.0 );
+ aPool << ocOpen;
+ }
+ break;
+ case ocChose:
+ {// 1. Parameter ++
+ IncToken( eParam[ nAnz - 1 ] );
+ }
+ break;
+ case ocFind:
+ case ocHLookup:
+ case ocVLookup:
+ {// letzten Parameter ++
+ IncToken( eParam[ 0 ] );
+ }
+ break;
+ case ocMid:
+ case ocReplace:
+ {// 2. Parameter ++
+ IncToken( eParam[ nAnz - 2 ] );
+ }
+ break;
+ case ocZins:
+ {
+ // neue Anzahl = 4!
+ DBG_ASSERT( nAnz == 3,
+ "*LotusToSc::DoFunc(): ZINS() hat 3 Parameter!" );
+ nAnz = 4;
+ eParam[ 3 ] = eParam[ 0 ]; // 3. -> 1.
+ eParam[ 0 ] = eParam[ 2 ]; // 1. -> 4.
+ NegToken( eParam[ 1 ] ); // 2. -> -2. (+ 2. -> 3.)
+ eParam[ 2 ] = n0Token; // -> 2. als Default
+ }
+ break;
+ }
+ // ................
+
+
+ if( !bAddIn )
+ aPool << eOc;
+
+ aPool << ocOpen;
+
+ if( nAnz > 0 )
+ {
+ INT16 nNull = -1; // gibt einen auszulassenden Parameter an
+ // ACHTUNG: 0 ist der letzte Parameter, nAnz-1 der erste
+
+ INT16 nLast = nAnz - 1;
+
+ if( eOc == ocRMZ )
+ { // Extrawurst ocRMZ letzter Parameter negiert!
+ // zusaetzlich: 1. -> 3., 3. -> 2., 2. -> 1.
+ DBG_ASSERT( nAnz == 3,
+ "+LotusToSc::DoFunc(): ocRMZ hat genau 3 Parameter!" );
+ aPool << eParam[ 1 ] << ocSep << eParam[ 0 ] << ocSep
+ << ocNegSub << eParam[ 2 ];
+ }
+ else
+ { // Normalfall
+ // [Parameter{;Parameter}]
+ aPool << eParam[ nLast ];
+
+ for( nLauf = nLast - 1 ; nLauf >= 0 ; nLauf-- )
+ {
+ if( nLauf != nNull )
+ aPool << ocSep << eParam[ nLauf ];
+ }
+ }
+ }
+
+
+ // Spezialfaelle...
+ if( eOc == ocGetYear )
+ {
+ aPool << ocClose << ocSub << nMerk0;
+ }
+ else if( eOc == ocFixed )
+ {
+ aPool << ocSep << ocTrue << ocOpen << ocClose;
+ }
+ else if( eOc == ocFind )
+ {
+ nMerk1 = aPool.Store();
+ DecToken( nMerk1 );
+ aPool << nMerk1;
+ }
+
+ aPool << ocClose;
+
+ // ................
+
+ aPool >> aStack;
+
+ if( bNeg )
+ {
+ aPool << ocOpen << ocSub << aStack << ocClose;
+ aPool >> aStack;
+ }
+}
+
+
+void LotusToSc::LotusRelToScRel( UINT16 nCol, UINT16 nRow, SingleRefData& rSRD )
+ {
+ // Col-Bemachung
+ if( nCol & 0x8000 )
+ {
+ rSRD.SetColRel( TRUE );
+ if( nCol & 0x0080 )
+ nCol |= 0xFF00;
+ else
+ nCol &= 0x00FF;
+ rSRD.nRelCol = ( INT16 ) nCol;
+ }
+ else
+ {
+ rSRD.SetColRel( FALSE );
+ rSRD.nCol = nCol & 0x00FF;
+ }
+
+ // Row-Bemachung
+ if( nRow & 0x8000 )
+ {
+ rSRD.SetRowRel( TRUE );
+ // vorzeichenrichtige Erweiterung
+ switch( eTyp )
+ {
+ // 5432 1098 7654 3210
+ // 8421 8421 8421 8421
+ // xxx xxxx xxxx
+ case eWK_1:
+ if( nRow & 0x0400 )
+ nRow |= 0xF800;
+ else
+ nRow &= 0x07FF;
+ break;
+ // 8421 8421 8421 8421
+ // x xxxx xxxx xxxx
+ case eWK_2:
+ if( nRow & 0x1000 )
+ nRow |= 0xE000;
+ else
+ nRow &= 0x1FFF;
+ break;
+ default:
+ DBG_ERROR( "*LotusToSc::LotusRelToScRel(): etwas vergessen...?" );
+ }
+ }
+ else
+ {
+ rSRD.SetRowRel( FALSE );
+ switch( eTyp )
+ {
+ // 5432 1098 7654 3210
+ // 8421 8421 8421 8421
+ // xxx xxxx xxxx
+ case eWK_1:
+ nRow &= 0x07FF;
+ break;
+ // 8421 8421 8421 8421
+ // xx xxxx xxxx xxxx
+ case eWK_2:
+ nRow &= 0x3FFF;
+ break;
+ default:
+ DBG_ERROR( "*LotusToSc::LotusRelToScRel(): etwas vergessen...?" );
+ }
+ }
+
+ if( rSRD.IsRowRel() )
+ rSRD.nRelRow = ( INT16 ) nRow;
+ else
+ rSRD.nRow = nRow;
+
+ if( rSRD.IsRowRel() || rSRD.IsColRel() )
+ rSRD.CalcAbsIfRel( aEingPos );
+ }
+
+
+void LotusToSc::ReadSRD( SingleRefData& rSRD, BYTE nRelBit )
+ {
+ BYTE nTab, nCol;
+ UINT16 nRow;
+
+ Read( nRow );
+ Read( nTab );
+ Read( nCol );
+
+ BOOL b3D = ( nTab != aEingPos.Tab() );
+
+ rSRD.SetColRel( ( nRelBit & 0x01 ) != 0 );
+ rSRD.nCol = nCol;
+
+ rSRD.SetRowRel( ( nRelBit & 0x02 ) != 0 );
+ rSRD.nRow = nRow;
+
+ rSRD.SetTabRel( ( ( nRelBit & 0x04) != 0 ) || !b3D );
+ rSRD.nTab = nTab;
+
+ rSRD.SetFlag3D( b3D );
+
+ rSRD.CalcRelFromAbs( aEingPos );
+ }
+
+
+void LotusToSc::IncToken( TokenId &rParam )
+ {
+ aPool << ocOpen << rParam << nAddToken;
+ rParam = aPool.Store();
+ }
+
+
+void LotusToSc::DecToken( TokenId &rParam )
+ {
+ aPool << ocOpen << rParam << nSubToken;
+ rParam = aPool.Store();
+ }
+
+
+void LotusToSc::NegToken( TokenId &rParam )
+ {
+ aPool << ocNegSub << ocOpen << rParam << ocClose;
+ rParam = aPool.Store();
+ }
+
+
+void LotusToSc::Reset( ScAddress aEingPos )
+ {
+ ConverterBase::Reset( aEingPos );
+
+ TokenId nEins = aPool.Store( 1.0 );
+
+ aPool << ocClose << ocAdd << nEins;
+ nAddToken = aPool.Store();
+
+ aPool << ocClose << ocSub << nEins;
+ nSubToken = aPool.Store();
+
+ n0Token = aPool.Store( 0.0 );
+ }
+
+
+LotusToSc::LotusToSc( SvStream &rStream, CharSet e ) :
+ ConverterBase( rStream, 128 )
+ {
+ eSrcChar = e;
+ bWK3 = FALSE;
+ }
+
+
+typedef FUNC_TYPE ( FuncType1 ) ( BYTE );
+typedef DefTokenId ( FuncType2 ) ( BYTE );
+
+
+ConvErr LotusToSc::Convert( const ScTokenArray*& rpErg, INT32& rRest,
+ const FORMULA_TYPE eFT )
+{
+ BYTE nOc;
+ BYTE nAnz;
+ BYTE nRelBits;
+ UINT16 nStrLen;
+ UINT16 nRngIndex;
+ FUNC_TYPE eType = FT_NOP;
+ TokenId nMerk0;
+ DefTokenId eOc;
+ const BOOL bRangeName = eFT == FT_RangeName;
+ const sal_Char* pExtName;
+ RangeNameBufferWK3& rRangeNameBufferWK3 = *pLotusRoot->pRngNmBffWK3;
+
+ ComplRefData aCRD;
+ aCRD.InitFlags();
+ SingleRefData& rR = aCRD.Ref1;
+
+ LR_ID nId;
+ TokenId nNewId;
+
+ LotusRangeList& rRangeList = *pLotusRoot->pRangeNames;
+
+ FuncType1* pIndexToType;
+ FuncType2* pIndexToToken;
+
+ if( bWK3 )
+ { // fuer > WK3
+ pIndexToType = IndexToTypeWK3;
+ pIndexToToken = IndexToTokenWK3;
+ }
+ else
+ {
+ pIndexToType = IndexToType;
+ pIndexToToken = IndexToToken;
+
+ rR.SetTabRel( TRUE );
+ rR.nTab = aEingPos.Tab();
+ rR.nRelTab = 0;
+ rR.SetFlag3D( FALSE );
+ }
+
+ aCRD.Ref2 = rR;
+
+ nBytesLeft = rRest;
+
+ while( eType ) // != FT_Return (==0)
+ {
+ Read( nOc );
+
+ if( nBytesLeft < 0 )
+ {
+ rpErg = aPool[ aStack.Get() ];
+ return ConvErrCount;
+ }
+
+ eType = ( pIndexToType )( nOc );
+ eOc = ( pIndexToToken)( nOc );
+ if( eOc == ocNoName )
+ pExtName = GetAddInName( nOc );
+
+ switch( eType )
+ {
+ case FT_Return:
+ if( bWK3 )
+ nBytesLeft = 0; // wird ab WK3 nicht benutzt
+
+ rRest = nBytesLeft;
+ break;
+ case FT_NotImpl:
+ case FT_FuncFix0: DoFunc( eOc, 0, pExtName ); break;
+ case FT_FuncFix1: DoFunc( eOc, 1, pExtName ); break;
+ case FT_FuncFix2: DoFunc( eOc, 2, pExtName ); break;
+ case FT_FuncFix3: DoFunc( eOc, 3, pExtName ); break;
+ case FT_FuncFix4: DoFunc( eOc, 4, pExtName ); break;
+ case FT_FuncVar:
+ Read( nAnz );
+ DoFunc( eOc, nAnz, pExtName );
+ break;
+ case FT_Neg:
+ aPool << ocOpen << ocNegSub << aStack << ocClose;
+ aPool >> aStack;
+ break;
+ case FT_Op:
+ aStack >> nMerk0;
+ aPool << aStack << eOc << nMerk0;
+ aPool >> aStack;
+ break;
+ case FT_ConstFloat:
+ {
+ double fDouble;
+ Read( fDouble );
+ aStack << aPool.Store( fDouble );
+ }
+ break;
+ case FT_Variable:
+ {
+ UINT16 nCol, nRow;
+ Read( nCol );
+ Read( nRow );
+
+ LotusRelToScRel( nCol, nRow, rR );
+
+ if( bWK3 )
+ nNewId = aPool.Store( rR );
+ else
+ {
+ nId = rRangeList.GetIndex( rR.nCol, rR.nRow );
+
+ if( nId == ID_FAIL )
+ // kein Range dazu
+ nNewId = aPool.Store( rR );
+ else
+ nNewId = aPool.Store( ( UINT16 ) nId );
+ }
+
+ aStack << nNewId;
+ }
+ break;
+ case FT_Range:
+ {
+ UINT16 nColS, nRowS, nColE, nRowE;
+ Read( nColS );
+ Read( nRowS );
+ Read( nColE );
+ Read( nRowE );
+
+ LotusRelToScRel( nColS, nRowS, rR );
+ LotusRelToScRel( nColE, nRowE, aCRD.Ref2 );
+
+ if( bWK3 )
+ nNewId = aPool.Store( aCRD );
+ else
+ {
+ nId = rRangeList.GetIndex(
+ rR.nCol, rR.nRow, aCRD.Ref2.nCol, aCRD.Ref2.nRow );
+
+ if( nId == ID_FAIL )
+ // kein Range dazu
+ nNewId = aPool.Store( aCRD );
+ else
+ nNewId = aPool.Store( ( UINT16 ) nId );
+ }
+
+ aStack << nNewId;
+ }
+ break;
+ case FT_Braces:
+ aPool << ocOpen << aStack << ocClose;
+ aPool >> aStack;
+ break;
+ case FT_ConstInt:
+ {
+ INT16 nVal;
+ Read( nVal );
+ aStack << aPool.Store( ( double ) nVal );
+ }
+ break;
+ case FT_ConstString:
+ {
+ String aTmp( ReadCString( aIn, nBytesLeft, eSrcChar ) );
+
+ aStack << aPool.Store( aTmp );
+ }
+ break;
+ case FT_NOP:
+ break;
+ // ------------------------------------------ fuer > WK3 -
+ case FT_Cref:
+ Read( nRelBits );
+ ReadSRD( rR, nRelBits );
+ aStack << aPool.Store( rR );
+ break;
+ case FT_Rref:
+ Read( nRelBits );
+ ReadCRD( aCRD, nRelBits );
+ aStack << aPool.Store( aCRD );
+ break;
+ case FT_Nrref:
+ {
+ String aTmp( ReadCString( aIn, nBytesLeft, eSrcChar ) );
+ if( rRangeNameBufferWK3.FindRel( aTmp, nRngIndex ) )
+ aStack << aPool.Store( nRngIndex );
+ else
+ {
+ String aText( RTL_CONSTASCII_STRINGPARAM( "NRREF " ) );
+ aText += aTmp;
+ aStack << aPool.Store( aText );
+ }
+ }
+ break;
+ case FT_Absnref:
+ {
+ String aTmp( ReadCString( aIn, nBytesLeft, eSrcChar ) );
+ if( rRangeNameBufferWK3.FindAbs( aTmp, nRngIndex ) )
+ aStack << aPool.Store( nRngIndex );
+ else
+ {
+ String aText( RTL_CONSTASCII_STRINGPARAM( "ABSNREF " ) );
+ aText += aTmp;
+ aStack << aPool.Store( aText );
+ }
+ }
+ break;
+ case FT_Erref:
+ Ignore( 4 );
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case FT_Ecref:
+ Ignore( 5 );
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case FT_Econstant:
+ Ignore( 10 );
+ aPool << ocBad;
+ aPool >> aStack;
+ break;
+ case FT_Splfunc:
+ {
+ Read( nAnz );
+ Read( nStrLen );
+
+ if( nStrLen )
+ {
+// String t( ReadString( aIn, nStrLen, eSrcChar ) );
+ sal_Char* p = new sal_Char[ nStrLen + 1 ];
+ aIn.Read( p, nStrLen );
+ p[ nStrLen ] = 0x00;
+
+ DoFunc( ocNoName, nAnz, p );
+
+ delete[] p;
+ }
+ else
+ DoFunc( ocNoName, nAnz, NULL );
+ }
+ break;
+ case FT_Const10Float:
+ aStack << aPool.Store( ReadLongDouble( aIn ) );
+ break;
+ case FT_Snum:
+ {
+ INT16 nVal;
+ Read( nVal );
+ aStack << aPool.Store( SnumToDouble( nVal ) );
+ }
+ break;
+ default:
+ DBG_ERROR( "*LotusToSc::Convert(): unbekannter enum!" );
+ }
+ }
+
+ rpErg = aPool[ aStack.Get() ];
+
+ DBG_ASSERT( nBytesLeft >= 0, "*LotusToSc::Convert(): zuviel verarbeitet!");
+ DBG_ASSERT( nBytesLeft <= 0, "*LotusToSc::Convert(): wat is mit'm Rest?" );
+
+ if( rRest )
+ aIn.SeekRel( nBytesLeft ); // eventuellen Rest/Ueberlauf korrigieren
+
+ rRest = 0;
+
+ return ConvOK;
+}
+
+
+FUNC_TYPE LotusToSc::IndexToType( BYTE nIndex )
+{
+ static const FUNC_TYPE pType[ 256 ] =
+ { // Code Bezeichnung
+ FT_ConstFloat, // 0 8-Byte-IEEE-Float
+ FT_Variable, // 1 Variable
+ FT_Range, // 2 Bereich
+ FT_Return, // 3 return
+ FT_Braces, // 4 Klammer
+ FT_ConstInt, // 5 2-Byte-Integer
+ FT_ConstString, // 6 ASCII-String
+ FT_NOP, // 7 NOP
+ FT_Neg, // 8 Negation
+ FT_Op, // 9 Addition
+ FT_Op, // 10 Subtraktion
+ FT_Op, // 11 Multiplikation
+ FT_Op, // 12 Division
+ FT_Op, // 13 Potenzierung
+ FT_Op, // 14 Gleichheit
+ FT_Op, // 15 Ungleich
+ FT_Op, // 16 Kleiner-gleich
+ FT_Op, // 17 Groesser-gleich
+ FT_Op, // 18 Kleiner
+ FT_Op, // 19 Groesser
+ FT_Op, // 20 And (logisch)
+ FT_Op, // 21 Or (logisch)
+ FT_FuncFix1, // 22 Not (logisch)
+ FT_NOP, // 23 unaeres Plus
+ FT_NotImpl, // 24
+ FT_NotImpl, // 25
+ FT_NotImpl, // 26
+ FT_NotImpl, // 27
+ FT_NotImpl, // 28
+ FT_NotImpl, // 29
+ FT_NotImpl, // 30
+ FT_FuncFix0, // 31 Not applicable
+ FT_FuncFix0, // 32 Error
+ FT_FuncFix1, // 33 Betrag ABS()
+ FT_FuncFix1, // 34 Ganzzahl INT()
+ FT_FuncFix1, // 35 Quadratwurzel
+ FT_FuncFix1, // 36 Zehnerlogarithmus
+ FT_FuncFix1, // 37 Natuerlicher Logarithmus
+ FT_FuncFix0, // 38 PI
+ FT_FuncFix1, // 39 Sinus
+ FT_FuncFix1, // 40 Cosinus
+ FT_FuncFix1, // 41 Tangens
+ FT_FuncFix2, // 42 Arcus-Tangens 2 (4.Quadrant) <----- richtig? -
+ FT_FuncFix1, // 43 Arcus-Tangens (2.Quadrant)
+ FT_FuncFix1, // 44 Arcus-Sinus
+ FT_FuncFix1, // 45 Arcus-Cosinus
+ FT_FuncFix1, // 46 Exponentialfunktion
+ FT_FuncFix2, // 47 Modulo
+ FT_FuncVar, // 48 Auswahl
+ FT_FuncFix1, // 49 Is not applicable?
+ FT_FuncFix1, // 50 Is Error?
+ FT_FuncFix0, // 51 FALSE
+ FT_FuncFix0, // 52 TRUE
+ FT_FuncFix0, // 53 Zufallszahl
+ FT_FuncFix3, // 54 Datum
+ FT_FuncFix0, // 55 Heute
+ FT_FuncFix3, // 56 Payment
+ FT_FuncFix3, // 57 Present Value
+ FT_FuncFix3, // 58 Future Value
+ FT_FuncFix3, // 59 If ... then ... else ...
+ FT_FuncFix1, // 60 Tag des Monats
+ FT_FuncFix1, // 61 Monat
+ FT_FuncFix1, // 62 Jahr
+ FT_FuncFix2, // 63 Runden
+ FT_FuncFix3, // 64 Zeit
+ FT_FuncFix1, // 65 Stunde
+ FT_FuncFix1, // 66 Minute
+ FT_FuncFix1, // 67 Sekunde
+ FT_FuncFix1, // 68 Ist Zahl?
+ FT_FuncFix1, // 69 Ist Text?
+ FT_FuncFix1, // 70 Len()
+ FT_FuncFix1, // 71 Val()
+ FT_FuncFix2, // 72 String()
+ FT_FuncFix3, // 73 Mid()
+ FT_FuncFix1, // 74 Char()
+ FT_FuncFix1, // 75 Ascii()
+ FT_FuncFix3, // 76 Find()
+ FT_FuncFix1, // 77 Datevalue
+ FT_FuncFix1, // 78 Timevalue
+ FT_FuncFix1, // 79 Cellpointer
+ FT_FuncVar, // 80 Sum()
+ FT_FuncVar, // 81 Avg()
+ FT_FuncVar, // 82 Cnt()
+ FT_FuncVar, // 83 Min()
+ FT_FuncVar, // 84 Max()
+ FT_FuncFix3, // 85 Vlookup()
+ FT_FuncFix2, // 86 Npv()
+ FT_FuncVar, // 87 Var()
+ FT_FuncVar, // 88 Std()
+ FT_FuncFix2, // 89 Irr()
+ FT_FuncFix3, // 90 Hlookup()
+ FT_FuncFix3, // 91 ?
+ FT_FuncFix3, // 92 ?
+ FT_FuncFix3, // 93 ?
+ FT_FuncFix3, // 94 ?
+ FT_FuncFix3, // 95 ?
+ FT_FuncFix3, // 96 ?
+ FT_FuncFix3, // 97 ?
+ FT_FuncFix3, // 98 Index() <- richtig? -
+ FT_FuncFix1, // 99 Cols()
+ FT_FuncFix1, // 100 Rows()
+ FT_FuncFix2, // 101 Repeat()
+ FT_FuncFix1, // 102 Upper()
+ FT_FuncFix1, // 103 Lower()
+ FT_FuncFix2, // 104 Left()
+ FT_FuncFix2, // 105 Right()
+ FT_FuncFix4, // 106 Replace()
+ FT_FuncFix1, // 107 Proper()
+ FT_FuncFix2, // 108 Cell()
+ FT_FuncFix1, // 109 Trim()
+ FT_FuncFix1, // 110 Clean()
+ FT_FuncFix1, // 111 F()
+ FT_FuncFix1, // 112 Wert() (oder W()?)
+ FT_FuncFix2, // 113 Exact()
+ FT_NotImpl, // 114 Call()
+ FT_FuncFix1, // 115 @@()
+ FT_FuncFix3, // 116 Rate()
+ FT_FuncFix1, // 117 Term()
+ FT_FuncFix1, // 118 Cterm()
+ FT_FuncFix3, // 119 Sln()
+ FT_FuncFix4, // 120 Syd(), Soy()
+ FT_FuncFix4, // 121 Ddb()
+ FT_NotImpl, // 122
+ FT_NotImpl, // 123
+ FT_NotImpl, // 124
+ FT_NotImpl, // 125
+ FT_NotImpl, // 126
+ FT_NotImpl, // 127
+ FT_NotImpl, // 128
+ FT_NotImpl, // 129
+ FT_NotImpl, // 130
+ FT_NotImpl, // 131
+ FT_NotImpl, // 132
+ FT_NotImpl, // 133
+ FT_NotImpl, // 134
+ FT_NotImpl, // 135
+ FT_NotImpl, // 136
+ FT_NotImpl, // 137
+ FT_NotImpl, // 138
+ FT_NotImpl, // 139
+ FT_NotImpl, // 140
+ FT_NotImpl, // 141
+ FT_NotImpl, // 142
+ FT_NotImpl, // 143
+ FT_NotImpl, // 144
+ FT_NotImpl, // 145
+ FT_NotImpl, // 146
+ FT_NotImpl, // 147
+ FT_NotImpl, // 148
+ FT_NotImpl, // 149
+ FT_NotImpl, // 150
+ FT_NotImpl, // 151
+ FT_NotImpl, // 152
+ FT_NotImpl, // 153
+ FT_NotImpl, // 154
+ FT_NotImpl, // 155
+ FT_FuncVar, // 156 ?
+ FT_NotImpl, // 157
+ FT_NotImpl, // 158
+ FT_NotImpl, // 159
+ FT_NotImpl, // 160
+ FT_NotImpl, // 161
+ FT_NotImpl, // 162
+ FT_NotImpl, // 163
+ FT_NotImpl, // 164
+ FT_NotImpl, // 165
+ FT_NotImpl, // 166
+ FT_NotImpl, // 167
+ FT_NotImpl, // 168
+ FT_NotImpl, // 169
+ FT_NotImpl, // 170
+ FT_NotImpl, // 171
+ FT_NotImpl, // 172
+ FT_NotImpl, // 173
+ FT_NotImpl, // 174
+ FT_NotImpl, // 175
+ FT_NotImpl, // 176
+ FT_NotImpl, // 177
+ FT_NotImpl, // 178
+ FT_NotImpl, // 179
+ FT_NotImpl, // 180
+ FT_NotImpl, // 181
+ FT_NotImpl, // 182
+ FT_NotImpl, // 183
+ FT_NotImpl, // 184
+ FT_NotImpl, // 185
+ FT_NotImpl, // 186
+ FT_NotImpl, // 187
+ FT_NotImpl, // 188
+ FT_NotImpl, // 189
+ FT_NotImpl, // 190
+ FT_NotImpl, // 191
+ FT_NotImpl, // 192
+ FT_NotImpl, // 193
+ FT_NotImpl, // 194
+ FT_NotImpl, // 195
+ FT_NotImpl, // 196
+ FT_NotImpl, // 197
+ FT_NotImpl, // 198
+ FT_NotImpl, // 199
+ FT_NotImpl, // 200
+ FT_NotImpl, // 201
+ FT_NotImpl, // 202
+ FT_NotImpl, // 203
+ FT_NotImpl, // 204
+ FT_NotImpl, // 205
+ FT_FuncVar, // 206 ?
+ FT_NotImpl, // 207
+ FT_NotImpl, // 208
+ FT_NotImpl, // 209
+ FT_NotImpl, // 210
+ FT_NotImpl, // 211
+ FT_NotImpl, // 212
+ FT_NotImpl, // 213
+ FT_NotImpl, // 214
+ FT_NotImpl, // 215
+ FT_NotImpl, // 216
+ FT_NotImpl, // 217
+ FT_NotImpl, // 218
+ FT_NotImpl, // 219
+ FT_NotImpl, // 220
+ FT_NotImpl, // 221
+ FT_NotImpl, // 222
+ FT_NotImpl, // 223
+ FT_NotImpl, // 224
+ FT_NotImpl, // 225
+ FT_NotImpl, // 226
+ FT_NotImpl, // 227
+ FT_NotImpl, // 228
+ FT_NotImpl, // 229
+ FT_NotImpl, // 230
+ FT_NotImpl, // 231
+ FT_NotImpl, // 232
+ FT_NotImpl, // 233
+ FT_NotImpl, // 234
+ FT_NotImpl, // 235
+ FT_NotImpl, // 236
+ FT_NotImpl, // 237
+ FT_NotImpl, // 238
+ FT_NotImpl, // 239
+ FT_NotImpl, // 240
+ FT_NotImpl, // 241
+ FT_NotImpl, // 242
+ FT_NotImpl, // 243
+ FT_NotImpl, // 244
+ FT_NotImpl, // 245
+ FT_NotImpl, // 246
+ FT_NotImpl, // 247
+ FT_NotImpl, // 248
+ FT_NotImpl, // 249
+ FT_NotImpl, // 250
+ FT_NotImpl, // 251
+ FT_NotImpl, // 252
+ FT_NotImpl, // 253
+ FT_NotImpl, // 254
+ FT_FuncVar, // 255 ?
+ };
+ return pType[ nIndex ];
+}
+
+
+DefTokenId LotusToSc::IndexToToken( BYTE nIndex )
+{
+ static const DefTokenId pToken[ 256 ] =
+ { // Code Bezeichnung
+ ocPush, // 0 8-Byte-IEEE-Float
+ ocPush, // 1 Variable
+ ocPush, // 2 Bereich
+ ocPush, // 3 return
+ ocPush, // 4 Klammer
+ ocPush, // 5 2-Byte-Integer
+ ocPush, // 6 ASCII-String
+ ocPush, // 7 NOP
+ ocNegSub, // 8 Negation
+ ocAdd, // 9 Addition
+ ocSub, // 10 Subtraktion
+ ocMul, // 11 Multiplikation
+ ocDiv, // 12 Division
+ ocPow, // 13 Potenzierung
+ ocEqual, // 14 Gleichheit
+ ocNotEqual, // 15 Ungleich
+ ocLessEqual, // 16 Kleiner-gleich
+ ocGreaterEqual, // 17 Groesser-gleich
+ ocLess, // 18 Kleiner
+ ocGreater, // 19 Groesser
+ ocAnd, // 20 And (logisch)
+ ocOr, // 21 Or (logisch)
+ ocNot, // 22 Not (logisch)
+ ocPush, // 23 unaeres Plus
+ ocNoName, // 24
+ ocNoName, // 25
+ ocNoName, // 26
+ ocNoName, // 27
+ ocNoName, // 28
+ ocNoName, // 29
+ ocNoName, // 30
+ ocNoValue, // 31 Not applicable
+ ocNoName, // 32 Error
+ ocAbs, // 33 Betrag ABS()
+ ocInt, // 34 Ganzzahl INT()
+ ocSqrt, // 35 Quadratwurzel
+ ocLog10, // 36 Zehnerlogarithmus
+ ocLn, // 37 Natuerlicher Logarithmus
+ ocPi, // 38 PI
+ ocSin, // 39 Sinus
+ ocCos, // 40 Cosinus
+ ocTan, // 41 Tangens
+ ocArcTan2, // 42 Arcus-Tangens 2 (4.Quadrant)
+ ocArcTan, // 43 Arcus-Tangens (2.Quadrant)
+ ocArcSin, // 44 Arcus-Sinus
+ ocArcCos, // 45 Arcus-Cosinus
+ ocExp, // 46 Exponentialfunktion
+ ocMod, // 47 Modulo
+ ocChose, // 48 Auswahl
+ ocIsNV, // 49 Is not applicable?
+ ocIsError, // 50 Is Error?
+ ocFalse, // 51 FALSE
+ ocTrue, // 52 TRUE
+ ocRandom, // 53 Zufallszahl
+ ocGetDate, // 54 Datum
+ ocGetActDate, // 55 Heute
+ ocRMZ, // 56 Payment
+ ocBW, // 57 Present Value
+ ocZW, // 58 Future Value
+ ocIf, // 59 If ... then ... else ...
+ ocGetDay, // 60 Tag des Monats
+ ocGetMonth, // 61 Monat
+ ocGetYear, // 62 Jahr
+ ocRound, // 63 Runden
+ ocGetTime, // 64 Zeit
+ ocGetHour, // 65 Stunde
+ ocGetMin, // 66 Minute
+ ocGetSec, // 67 Sekunde
+ ocIsValue, // 68 Ist Zahl?
+ ocIsString, // 69 Ist Text?
+ ocLen, // 70 Len()
+ ocValue, // 71 Val()
+ ocFixed, // 72 String() ocFixed ersatzweise + Spezialfall
+ ocMid, // 73 Mid()
+ ocChar, // 74 Char()
+ ocCode, // 75 Ascii()
+ ocFind, // 76 Find()
+ ocGetDateValue, // 77 Datevalue
+ ocGetTimeValue, // 78 Timevalue
+ ocNoName, // 79 Cellpointer
+ ocSum, // 80 Sum()
+ ocAverage, // 81 Avg()
+ ocCount, // 82 Cnt()
+ ocMin, // 83 Min()
+ ocMax, // 84 Max()
+ ocVLookup, // 85 Vlookup()
+ ocNBW, // 86 Npv()
+ ocVar, // 87 Var()
+ ocNormDist, // 88 Std()
+ ocIKV, // 89 Irr()
+ ocHLookup, // 90 Hlookup()
+ ocDBSum, // 91 XlfDsum
+ ocDBAverage, // 92 XlfDaverage
+ ocDBCount, // 93 XlfDcount
+ ocDBMin, // 94 XlfDmin
+ ocDBMax, // 95 XlfDmax
+ ocDBVar, // 96 XlfDvar
+ ocDBStdDev, // 97 XlfDstdev
+ ocIndex, // 98 Index()
+ ocColumns, // 99 Cols()
+ ocRows, // 100 Rows()
+ ocRept, // 101 Repeat()
+ ocUpper, // 102 Upper()
+ ocLower, // 103 Lower()
+ ocLeft, // 104 Left()
+ ocRight, // 105 Right()
+ ocReplace, // 106 Replace()
+ ocPropper, // 107 Proper()
+ ocNoName, // 108 Cell()
+ ocTrim, // 109 Trim()
+ ocClean, // 110 Clean()
+ ocFalse, // 111 F()
+ ocTrue, // 112 W()
+ ocExact, // 113 Exact()
+ ocNoName, // 114 Call()
+ ocIndirect, // 115 @@()
+ ocZins, // 116 Rate()
+ ocNoName, // 117 Term()
+ ocNoName, // 118 Cterm()
+ ocLIA, // 119 Sln()
+ ocDIA, // 120 Syd(), Soy()
+ ocGDA, // 121 Ddb()
+ ocNoName, // 122
+ ocNoName, // 123
+ ocNoName, // 124
+ ocNoName, // 125
+ ocNoName, // 126
+ ocNoName, // 127
+ ocNoName, // 128
+ ocNoName, // 129
+ ocNoName, // 130
+ ocNoName, // 131
+ ocNoName, // 132
+ ocNoName, // 133
+ ocNoName, // 134
+ ocNoName, // 135
+ ocNoName, // 136
+ ocNoName, // 137
+ ocNoName, // 138
+ ocNoName, // 139
+ ocNoName, // 140
+ ocNoName, // 141
+ ocNoName, // 142
+ ocNoName, // 143
+ ocNoName, // 144
+ ocNoName, // 145
+ ocNoName, // 146
+ ocNoName, // 147
+ ocNoName, // 148
+ ocNoName, // 149
+ ocNoName, // 150
+ ocNoName, // 151
+ ocNoName, // 152
+ ocNoName, // 153
+ ocNoName, // 154
+ ocNoName, // 155
+ ocNoName, // 156 ?
+ ocNoName, // 157
+ ocNoName, // 158
+ ocNoName, // 159
+ ocNoName, // 160
+ ocNoName, // 161
+ ocNoName, // 162
+ ocNoName, // 163
+ ocNoName, // 164
+ ocNoName, // 165
+ ocNoName, // 166
+ ocNoName, // 167
+ ocNoName, // 168
+ ocNoName, // 169
+ ocNoName, // 170
+ ocNoName, // 171
+ ocNoName, // 172
+ ocNoName, // 173
+ ocNoName, // 174
+ ocNoName, // 175
+ ocNoName, // 176
+ ocNoName, // 177
+ ocNoName, // 178
+ ocNoName, // 179
+ ocNoName, // 180
+ ocNoName, // 181
+ ocNoName, // 182
+ ocNoName, // 183
+ ocNoName, // 184
+ ocNoName, // 185
+ ocNoName, // 186
+ ocNoName, // 187
+ ocNoName, // 188
+ ocNoName, // 189
+ ocNoName, // 190
+ ocNoName, // 191
+ ocNoName, // 192
+ ocNoName, // 193
+ ocNoName, // 194
+ ocNoName, // 195
+ ocNoName, // 196
+ ocNoName, // 197
+ ocNoName, // 198
+ ocNoName, // 199
+ ocNoName, // 200
+ ocNoName, // 201
+ ocNoName, // 202
+ ocNoName, // 203
+ ocNoName, // 204
+ ocNoName, // 205
+ ocNoName, // 206 ?
+ ocNoName, // 207
+ ocNoName, // 208
+ ocNoName, // 209
+ ocNoName, // 210
+ ocNoName, // 211
+ ocNoName, // 212
+ ocNoName, // 213
+ ocNoName, // 214
+ ocNoName, // 215
+ ocNoName, // 216
+ ocNoName, // 217
+ ocNoName, // 218
+ ocNoName, // 219
+ ocNoName, // 220
+ ocNoName, // 221
+ ocNoName, // 222
+ ocNoName, // 223
+ ocNoName, // 224
+ ocNoName, // 225
+ ocNoName, // 226
+ ocNoName, // 227
+ ocNoName, // 228
+ ocNoName, // 229
+ ocNoName, // 230
+ ocNoName, // 231
+ ocNoName, // 232
+ ocNoName, // 233
+ ocNoName, // 234
+ ocNoName, // 235
+ ocNoName, // 236
+ ocNoName, // 237
+ ocNoName, // 238
+ ocNoName, // 239
+ ocNoName, // 240
+ ocNoName, // 241
+ ocNoName, // 242
+ ocNoName, // 243
+ ocNoName, // 244
+ ocNoName, // 245
+ ocNoName, // 246
+ ocNoName, // 247
+ ocNoName, // 248
+ ocNoName, // 249
+ ocNoName, // 250
+ ocNoName, // 251
+ ocNoName, // 252
+ ocNoName, // 253
+ ocNoName, // 254
+ ocNoName // 255 ?
+ };
+
+ return pToken[ nIndex ];
+}
+
+
+FUNC_TYPE LotusToSc::IndexToTypeWK3( BYTE nIndex )
+{
+ static const FUNC_TYPE pType[ 256 ] =
+ { // Code Bezeichnung
+ FT_Const10Float, // 0 8-Byte-IEEE-Float
+ FT_Cref, // 1 Cell Reference
+ FT_Rref, // 2 Area Reference
+ FT_Return, // 3 return
+ FT_Braces, // 4 Klammer
+ FT_Snum, // 5 2-Byte-Short-Num
+ FT_ConstString, // 6 ASCII-String
+ FT_Nrref, // 7 Named range reference
+ FT_Absnref, // 8 Absolut named range
+ FT_Erref, // 9 Err range reference
+ FT_Ecref, // 10 Err cell reference
+ FT_Econstant, // 11 Err constant
+ FT_NotImpl, // 12
+ FT_NotImpl, // 13
+ FT_Neg, // 14 Negation
+ FT_Op, // 15 Addition
+ FT_Op, // 16 Subtraktion
+ FT_Op, // 17 Multiplikation
+ FT_Op, // 18 Division
+ FT_Op, // 19 Potenzierung
+ FT_Op, // 20 Gleichheit
+ FT_Op, // 21 Ungleich
+ FT_Op, // 22 Kleiner-gleich
+ FT_Op, // 23 Groesser-gleich
+ FT_Op, // 24 Kleiner
+ FT_Op, // 25 Groesser
+ FT_Op, // 26 And (logisch)
+ FT_Op, // 27 Or (logisch)
+ FT_FuncFix1, // 28 Not (logisch)
+ FT_NOP, // 29 unaeres Plus
+ FT_Op, // 30 Concatenation
+ FT_FuncFix0, // 31 Not applicable
+ FT_FuncFix0, // 32 Error
+ FT_FuncFix1, // 33 Betrag ABS()
+ FT_FuncFix1, // 34 Ganzzahl INT()
+ FT_FuncFix1, // 35 Quadratwurzel
+ FT_FuncFix1, // 36 Zehnerlogarithmus
+ FT_FuncFix1, // 37 Natuerlicher Logarithmus
+ FT_FuncFix0, // 38 PI
+ FT_FuncFix1, // 39 Sinus
+ FT_FuncFix1, // 40 Cosinus
+ FT_FuncFix1, // 41 Tangens
+ FT_FuncFix2, // 42 Arcus-Tangens 2 (4.Quadrant)
+ FT_FuncFix1, // 43 Arcus-Tangens (2.Quadrant)
+ FT_FuncFix1, // 44 Arcus-Sinus
+ FT_FuncFix1, // 45 Arcus-Cosinus
+ FT_FuncFix1, // 46 Exponentialfunktion
+ FT_FuncFix2, // 47 Modulo
+ FT_FuncVar, // 48 Auswahl
+ FT_FuncFix1, // 49 Is not applicable?
+ FT_FuncFix1, // 50 Is Error?
+ FT_FuncFix0, // 51 FALSE
+ FT_FuncFix0, // 52 TRUE
+ FT_FuncFix0, // 53 Zufallszahl
+ FT_FuncFix3, // 54 Datum
+ FT_FuncFix0, // 55 Heute
+ FT_FuncFix3, // 56 Payment
+ FT_FuncFix3, // 57 Present Value
+ FT_FuncFix3, // 58 Future Value
+ FT_FuncFix3, // 59 If ... then ... else ...
+ FT_FuncFix1, // 60 Tag des Monats
+ FT_FuncFix1, // 61 Monat
+ FT_FuncFix1, // 62 Jahr
+ FT_FuncFix2, // 63 Runden
+ FT_FuncFix3, // 64 Zeit
+ FT_FuncFix1, // 65 Stunde
+ FT_FuncFix1, // 66 Minute
+ FT_FuncFix1, // 67 Sekunde
+ FT_FuncFix1, // 68 Ist Zahl?
+ FT_FuncFix1, // 69 Ist Text?
+ FT_FuncFix1, // 70 Len()
+ FT_FuncFix1, // 71 Val()
+ FT_FuncFix2, // 72 String()
+ FT_FuncFix3, // 73 Mid()
+ FT_FuncFix1, // 74 Char()
+ FT_FuncFix1, // 75 Ascii()
+ FT_FuncFix3, // 76 Find()
+ FT_FuncFix1, // 77 Datevalue
+ FT_FuncFix1, // 78 Timevalue
+ FT_FuncFix1, // 79 Cellpointer
+ FT_FuncVar, // 80 Sum()
+ FT_FuncVar, // 81 Avg()
+ FT_FuncVar, // 82 Cnt()
+ FT_FuncVar, // 83 Min()
+ FT_FuncVar, // 84 Max()
+ FT_FuncFix3, // 85 Vlookup()
+ FT_FuncFix2, // 86 Npv()
+ FT_FuncVar, // 87 Var()
+ FT_FuncVar, // 88 Std()
+ FT_FuncFix2, // 89 Irr()
+ FT_FuncFix3, // 90 Hlookup()
+ FT_FuncVar, // 91 Dsum <-------- neu! -
+ FT_FuncVar, // 92 Davg <-------- neu! -
+ FT_FuncVar, // 93 Dcnt <-------- neu! -
+ FT_FuncVar, // 94 Dmin <-------- neu! -
+ FT_FuncVar, // 95 Dmax <-------- neu! -
+ FT_FuncVar, // 96 Dvar <-------- neu! -
+ FT_FuncVar, // 97 Dstd <-------- neu! -
+ FT_FuncVar, // 98 Index() <-------- change! -
+ FT_FuncFix1, // 99 Cols() <-------- neu! -
+ FT_FuncFix1, // 100 Rows() <-------- neu! -
+ FT_FuncFix2, // 101 Repeat() <-------- neu! -
+ FT_FuncFix1, // 102 Upper() <-------- neu! -
+ FT_FuncFix1, // 103 Lower() <-------- neu! -
+ FT_FuncFix2, // 104 Left() <-------- neu! -
+ FT_FuncFix2, // 105 Right() <-------- neu! -
+ FT_FuncFix4, // 106 Replace() <-------- neu! -
+ FT_FuncFix1, // 107 Proper() <-------- neu! -
+ FT_FuncFix2, // 108 Cell() <-------- neu! -
+ FT_FuncFix1, // 109 Trim() <-------- neu! -
+ FT_FuncFix1, // 110 Clean() <-------- neu! -
+ FT_FuncFix1, // 111 S() <--------- change in Bez. -
+ FT_FuncFix1, // 112 N() <--------- change in Bez. -
+ FT_FuncFix2, // 113 Exact() <-------- neu! -
+ FT_NotImpl, // 114 App <--------- change in Bez. -
+ FT_FuncFix1, // 115 @@() <-------- neu! -
+ FT_FuncFix3, // 116 Rate() <-------- neu! -
+ FT_FuncFix3, // 117 Term() <--------- change in Anz.
+ FT_FuncFix3, // 118 Cterm() <--------- change in Anz.
+ FT_FuncFix3, // 119 Sln() <-------- neu! -
+ FT_FuncFix4, // 120 Syd() <-------- neu! -
+ FT_FuncFix4, // 121 Ddb() <-------- neu! -
+ FT_Splfunc, // 122 Splfunc <-------- neu! -
+ FT_FuncFix1, // 123 Sheets <-------- neu! -
+ FT_FuncFix1, // 124 Info <-------- neu! -
+ FT_FuncVar, // 125 Sumproduct <-------- neu! -
+ FT_FuncFix1, // 126 Isrange <-------- neu! -
+ FT_FuncVar, // 127 Dget <-------- neu! -
+ FT_FuncVar, // 128 Dquery <-------- neu! -
+ FT_FuncFix4, // 129 Coord <-------- neu! -
+ FT_NOP, // 130 Reserved (internal) <-------- neu! -
+ FT_FuncFix0, // 131 Today <-------- neu! -
+ FT_FuncVar, // 132 Vdb <-------- neu! -
+ FT_FuncVar, // 133 Dvars <-------- neu! -
+ FT_FuncVar, // 134 Dstds <-------- neu! -
+ FT_FuncVar, // 135 Vars <-------- neu! -
+ FT_FuncVar, // 136 Stds <-------- neu! -
+ FT_FuncFix2, // 137 D360 <-------- neu! -
+ FT_NOP, // 138 Reserved (internal) <-------- neu! -
+ FT_FuncFix0, // 139 Isapp <-------- neu! - Anzahl ? -
+ FT_FuncVar, // 140 Isaaf <-------- neu! - Anzahl ? -
+ FT_FuncFix1, // 141 Weekday <-------- neu! -
+ FT_FuncFix3, // 142 Datedif <-------- neu! -
+ FT_FuncVar, // 143 Rank <-------- neu! -
+ FT_FuncFix2, // 144 Numberstring <-------- neu! -
+ FT_FuncFix1, // 145 Datestring <-------- neu! -
+ FT_FuncFix1, // 146 Decimal <-------- neu! -
+ FT_FuncFix1, // 147 Hex <-------- neu! -
+ FT_FuncFix4, // 148 Db <-------- neu! -
+ FT_FuncFix4, // 149 Pmti <-------- neu! -
+ FT_FuncFix4, // 150 Spi <-------- neu! -
+ FT_FuncFix1, // 151 Fullp <-------- neu! -
+ FT_FuncFix1, // 152 Halfp <-------- neu! -
+ FT_FuncVar, // 153 Pureavg <-------- neu! -
+ FT_FuncVar, // 154 Purecount <-------- neu! -
+ FT_FuncVar, // 155 Puremax <-------- neu! -
+ FT_FuncVar, // 156 Puremin <-------- neu! -
+ FT_FuncVar, // 157 Purestd <-------- neu! -
+ FT_FuncVar, // 158 Purevar <-------- neu! -
+ FT_FuncVar, // 159 Purestds <-------- neu! -
+ FT_FuncVar, // 160 Purevars <-------- neu! -
+ FT_FuncFix3, // 161 Pmt2 <-------- neu! -
+ FT_FuncFix3, // 162 Pv2 <-------- neu! -
+ FT_FuncFix3, // 163 Fv2 <-------- neu! -
+ FT_FuncFix3, // 164 Term2 <-------- neu! -
+ FT_NotImpl, // 165 --- <-------- neu! - Anzahl ? -
+ FT_FuncFix2, // 166 D360 (US-Version)
+ FT_NotImpl, // 167
+ FT_NotImpl, // 168
+ FT_NotImpl, // 169
+ FT_NotImpl, // 170
+ FT_NotImpl, // 171
+ FT_NotImpl, // 172
+ FT_NotImpl, // 173
+ FT_NotImpl, // 174
+ FT_NotImpl, // 175
+ FT_NotImpl, // 176
+ FT_NotImpl, // 177
+ FT_NotImpl, // 178
+ FT_NotImpl, // 179
+ FT_NotImpl, // 180
+ FT_NotImpl, // 181
+ FT_NotImpl, // 182
+ FT_NotImpl, // 183
+ FT_NotImpl, // 184
+ FT_NotImpl, // 185
+ FT_FuncVar, // 186 Solver <-------- neu! -
+ FT_NotImpl, // 187
+ FT_NotImpl, // 188
+ FT_NotImpl, // 189
+ FT_NotImpl, // 190
+ FT_NotImpl, // 191
+ FT_NotImpl, // 192
+ FT_NotImpl, // 193
+ FT_NotImpl, // 194
+ FT_NotImpl, // 195
+ FT_NotImpl, // 196
+ FT_NotImpl, // 197
+ FT_NotImpl, // 198
+ FT_NotImpl, // 199
+ FT_NotImpl, // 200
+ FT_NotImpl, // 201
+ FT_NotImpl, // 202
+ FT_NotImpl, // 203
+ FT_NotImpl, // 204
+ FT_NotImpl, // 205
+ FT_NotImpl, // 206
+ FT_NotImpl, // 207
+ FT_NotImpl, // 208
+ FT_NotImpl, // 209
+ FT_NotImpl, // 210
+ FT_NotImpl, // 211
+ FT_NotImpl, // 212
+ FT_NotImpl, // 213
+ FT_NotImpl, // 214
+ FT_NotImpl, // 215
+ FT_NotImpl, // 216
+ FT_NotImpl, // 217
+ FT_NotImpl, // 218
+ FT_NotImpl, // 219
+ FT_NotImpl, // 220
+ FT_NotImpl, // 221
+ FT_NotImpl, // 222
+ FT_NotImpl, // 223
+ FT_NotImpl, // 224
+ FT_NotImpl, // 225
+ FT_NotImpl, // 226
+ FT_NotImpl, // 227
+ FT_NotImpl, // 228
+ FT_NotImpl, // 229
+ FT_NotImpl, // 230
+ FT_NotImpl, // 231
+ FT_NotImpl, // 232
+ FT_NotImpl, // 233
+ FT_NotImpl, // 234
+ FT_NotImpl, // 235
+ FT_NotImpl, // 236
+ FT_NotImpl, // 237
+ FT_NotImpl, // 238
+ FT_NotImpl, // 239
+ FT_NotImpl, // 240
+ FT_NotImpl, // 241
+ FT_NotImpl, // 242
+ FT_NotImpl, // 243
+ FT_NotImpl, // 244
+ FT_NotImpl, // 245
+ FT_NotImpl, // 246
+ FT_NotImpl, // 247
+ FT_NotImpl, // 248
+ FT_NotImpl, // 249
+ FT_NotImpl, // 250
+ FT_NotImpl, // 251
+ FT_NotImpl, // 252
+ FT_NotImpl, // 253
+ FT_NotImpl, // 254
+ FT_NotImpl, // 255
+ };
+ return pType[ nIndex ];
+}
+
+
+DefTokenId LotusToSc::IndexToTokenWK3( BYTE nIndex )
+{
+ static const DefTokenId pToken[ 256 ] =
+ { // Code Bezeichnung
+ ocPush, // 0 8-Byte-IEEE-Float
+ ocPush, // 1 Variable
+ ocPush, // 2 Bereich
+ ocPush, // 3 return
+ ocPush, // 4 Klammer
+ ocPush, // 5 2-Byte-Integer
+ ocPush, // 6 ASCII-String
+ ocPush, // 7 Named range reference
+ ocPush, // 8 Absolut named range
+ ocPush, // 9 Err range reference
+ ocPush, // 10 Err cell reference
+ ocPush, // 11 Err constant
+ ocPush, // 12
+ ocPush, // 13
+ ocNegSub, // 14 Negation
+ ocAdd, // 15 Addition
+ ocSub, // 16 Subtraktion
+ ocMul, // 17 Multiplikation
+ ocDiv, // 18 Division
+ ocPow, // 19 Potenzierung
+ ocEqual, // 20 Gleichheit
+ ocNotEqual, // 21 Ungleich
+ ocLessEqual, // 22 Kleiner-gleich
+ ocGreaterEqual, // 23 Groesser-gleich
+ ocLess, // 24 Kleiner
+ ocGreater, // 25 Groesser
+ ocAnd, // 26 And (logisch)
+ ocOr, // 27 Or (logisch)
+ ocNot, // 28 Not (logisch)
+ ocPush, // 29 unaeres Plus
+ ocAmpersand, // 30 Concatenation
+ ocNoValue, // 31 Not applicable
+ ocNoName, // 32 Error
+ ocAbs, // 33 Betrag ABS()
+ ocInt, // 34 Ganzzahl INT()
+ ocSqrt, // 35 Quadratwurzel
+ ocLog10, // 36 Zehnerlogarithmus
+ ocLn, // 37 Natuerlicher Logarithmus
+ ocPi, // 38 PI
+ ocSin, // 39 Sinus
+ ocCos, // 40 Cosinus
+ ocTan, // 41 Tangens
+ ocArcTan2, // 42 Arcus-Tangens 2 (4.Quadrant)
+ ocArcTan, // 43 Arcus-Tangens (2.Quadrant)
+ ocArcSin, // 44 Arcus-Sinus
+ ocArcCos, // 45 Arcus-Cosinus
+ ocExp, // 46 Exponentialfunktion
+ ocMod, // 47 Modulo
+ ocChose, // 48 Auswahl
+ ocIsNV, // 49 Is not applicable?
+ ocIsError, // 50 Is Error?
+ ocFalse, // 51 FALSE
+ ocTrue, // 52 TRUE
+ ocRandom, // 53 Zufallszahl
+ ocGetDate, // 54 Datum
+ ocGetActDate, // 55 Heute
+ ocRMZ, // 56 Payment
+ ocBW, // 57 Present Value
+ ocZW, // 58 Future Value
+ ocIf, // 59 If ... then ... else ...
+ ocGetDay, // 60 Tag des Monats
+ ocGetMonth, // 61 Monat
+ ocGetYear, // 62 Jahr
+ ocRound, // 63 Runden
+ ocGetTime, // 64 Zeit
+ ocGetHour, // 65 Stunde
+ ocGetMin, // 66 Minute
+ ocGetSec, // 67 Sekunde
+ ocIsValue, // 68 Ist Zahl?
+ ocIsString, // 69 Ist Text?
+ ocLen, // 70 Len()
+ ocValue, // 71 Val()
+ ocFixed, // 72 String() ocFixed ersatzweise + Spezialfall
+ ocMid, // 73 Mid()
+ ocChar, // 74 Char()
+ ocCode, // 75 Ascii()
+ ocFind, // 76 Find()
+ ocGetDateValue, // 77 Datevalue
+ ocGetTimeValue, // 78 Timevalue
+ ocNoName, // 79 Cellpointer
+ ocSum, // 80 Sum()
+ ocAverage, // 81 Avg()
+ ocCount, // 82 Cnt()
+ ocMin, // 83 Min()
+ ocMax, // 84 Max()
+ ocVLookup, // 85 Vlookup()
+ ocNBW, // 86 Npv()
+ ocVar, // 87 Var()
+ ocStDev, // 88 Std()
+ ocIKV, // 89 Irr()
+ ocHLookup, // 90 Hlookup()
+ ocDBSum, // 91 XlfDsum
+ ocDBAverage, // 92 XlfDaverage
+ ocDBCount, // 93 XlfDcount
+ ocDBMin, // 94 XlfDmin
+ ocDBMax, // 95 XlfDmax
+ ocDBVar, // 96 XlfDvar
+ ocDBStdDev, // 97 XlfDstdev
+ ocIndex, // 98 Index()
+ ocColumns, // 99 Cols()
+ ocRows, // 100 Rows()
+ ocRept, // 101 Repeat()
+ ocUpper, // 102 Upper()
+ ocLower, // 103 Lower()
+ ocLeft, // 104 Left()
+ ocRight, // 105 Right()
+ ocReplace, // 106 Replace()
+ ocPropper, // 107 Proper()
+ ocNoName, // 108 Cell()
+ ocTrim, // 109 Trim()
+ ocClean, // 110 Clean()
+ ocNoName, // 111 F() (Excel: T()?)
+ ocNoName, // 112 W()
+ ocExact, // 113 Exact()
+ ocNoName, // 114 Call()
+ ocIndirect, // 115 @@()
+ ocZins, // 116 Rate()
+ ocNoName, // 117 Term()
+ ocNoName, // 118 Cterm()
+ ocLIA, // 119 Sln()
+ ocDIA, // 120 Syd(), Soy()
+ ocGDA, // 121 Ddb()
+ ocNoName, // 122 Splfunc
+ ocNoName, // 123 Sheets
+ ocNoName, // 124 Info
+ ocSumProduct, // 125 Sumproduct
+ ocNoName, // 126 Isrange
+ ocDBGet, // 127 Dget
+ ocNoName, // 128 Dquery
+ ocNoName, // 129 Coord
+ ocNoName, // 130 Reserved (internal)
+ ocGetActDate, // 131 Today
+ ocNoName, // 132 Vdb
+ ocDBVarP, // 133 Dvars
+ ocDBStdDevP, // 134 Dstds
+ ocVarP, // 135 Vars
+ ocStDevP, // 136 Stds
+ ocGetDiffDate360, // 137 D360
+ ocNoName, // 138 Reserved (internal)
+ ocNoName, // 139 Isapp
+ ocNoName, // 140 Isaaf
+ ocGetDayOfWeek, // 141 Weekday
+ ocGetDiffDate, // 142 Datedif
+ ocRank, // 143 Rank
+ ocNoName, // 144 Numberstring
+ ocNoName, // 145 Datestring
+ ocNoName, // 146 Decimal
+ ocNoName, // 147 Hex
+ ocNoName, // 148 Db
+ ocNoName, // 149 Pmti
+ ocNoName, // 150 Spi
+ ocNoName, // 151 Fullp
+ ocNoName, // 152 Halfp
+ ocNoName, // 153 Pureavg
+ ocCount2, // 154 Purecount
+ ocNoName, // 155 Puremax
+ ocNoName, // 156 Puremin
+ ocNoName, // 157 Purestd
+ ocNoName, // 158 Purevar
+ ocNoName, // 159 Purestds
+ ocNoName, // 160 Purevars
+ ocNoName, // 161 Pmt2
+ ocNoName, // 162 Pv2
+ ocNoName, // 163 Fv2
+ ocNoName, // 164 Term2
+ ocNoName, // 165 --- <-------- neu! - Anzahl ? -
+ ocGetDiffDate360, // 166 D360 (US-Version, ersatzweise wie ander D360-Funktion)
+ ocNoName, // 167
+ ocNoName, // 168
+ ocNoName, // 169
+ ocNoName, // 170
+ ocNoName, // 171
+ ocNoName, // 172
+ ocNoName, // 173
+ ocNoName, // 174
+ ocNoName, // 175
+ ocNoName, // 176
+ ocNoName, // 177
+ ocNoName, // 178
+ ocNoName, // 179
+ ocNoName, // 180
+ ocNoName, // 181
+ ocNoName, // 182
+ ocNoName, // 183
+ ocNoName, // 184
+ ocNoName, // 185
+ ocNoName, // 186
+ ocNoName, // 187
+ ocNoName, // 188
+ ocNoName, // 189
+ ocNoName, // 190
+ ocNoName, // 191
+ ocNoName, // 192
+ ocNoName, // 193
+ ocNoName, // 194
+ ocNoName, // 195
+ ocNoName, // 196
+ ocNoName, // 197
+ ocNoName, // 198
+ ocNoName, // 199
+ ocNoName, // 200
+ ocNoName, // 201
+ ocNoName, // 202
+ ocNoName, // 203
+ ocNoName, // 204
+ ocNoName, // 205
+ ocNoName, // 206 ?
+ ocNoName, // 207
+ ocNoName, // 208
+ ocNoName, // 209
+ ocNoName, // 210
+ ocNoName, // 211
+ ocNoName, // 212
+ ocNoName, // 213
+ ocNoName, // 214
+ ocNoName, // 215
+ ocNoName, // 216
+ ocNoName, // 217
+ ocNoName, // 218
+ ocNoName, // 219
+ ocNoName, // 220
+ ocNoName, // 221
+ ocNoName, // 222
+ ocNoName, // 223
+ ocNoName, // 224
+ ocNoName, // 225
+ ocNoName, // 226
+ ocNoName, // 227
+ ocNoName, // 228
+ ocNoName, // 229
+ ocNoName, // 230
+ ocNoName, // 231
+ ocNoName, // 232
+ ocNoName, // 233
+ ocNoName, // 234
+ ocNoName, // 235
+ ocNoName, // 236
+ ocNoName, // 237
+ ocNoName, // 238
+ ocNoName, // 239
+ ocNoName, // 240
+ ocNoName, // 241
+ ocNoName, // 242
+ ocNoName, // 243
+ ocNoName, // 244
+ ocNoName, // 245
+ ocNoName, // 246
+ ocNoName, // 247
+ ocNoName, // 248
+ ocNoName, // 249
+ ocNoName, // 250
+ ocNoName, // 251
+ ocNoName, // 252
+ ocNoName, // 253
+ ocNoName, // 254
+ ocNoName // 255 ?
+ };
+
+ return pToken[ nIndex ];
+}
+
+
+
+
+const sal_Char* GetAddInName( const UINT8 n )
+{
+ static const sal_Char* pNames[ 256 ] =
+ {
+ NULL, // 0 8-Byte-IEEE-Float
+ NULL, // 1 Variable
+ NULL, // 2 Bereich
+ NULL, // 3 return
+ NULL, // 4 Klammer
+ NULL, // 5 2-Byte-Integer
+ NULL, // 6 ASCII-String
+ NULL, // 7 Named range reference
+ NULL, // 8 Absolut named range
+ NULL, // 9 Err range reference
+ NULL, // 10 Err cell reference
+ NULL, // 11 Err constant
+ NULL, // 12
+ NULL, // 13
+ NULL, // 14 Negation
+ NULL, // 15 Addition
+ NULL, // 16 Subtraktion
+ NULL, // 17 Multiplikation
+ NULL, // 18 Division
+ NULL, // 19 Potenzierung
+ NULL, // 20 Gleichheit
+ NULL, // 21 Ungleich
+ NULL, // 22 Kleiner-gleich
+ NULL, // 23 Groesser-gleich
+ NULL, // 24 Kleiner
+ NULL, // 25 Groesser
+ NULL, // 26 And (logisch)
+ NULL, // 27 Or (logisch)
+ NULL, // 28 Not (logisch)
+ NULL, // 29 unaeres Plus
+ NULL, // 30 Concatenation
+ NULL, // 31 Not applicable
+ NULL, // 32 Error
+ NULL, // 33 Betrag ABS()
+ NULL, // 34 Ganzzahl INT()
+ NULL, // 35 Quadratwurzel
+ NULL, // 36 Zehnerlogarithmus
+ NULL, // 37 Natuerlicher Logarithmus
+ NULL, // 38 PI
+ NULL, // 39 Sinus
+ NULL, // 40 Cosinus
+ NULL, // 41 Tangens
+ NULL, // 42 Arcus-Tangens 2 (4.Quadrant)
+ NULL, // 43 Arcus-Tangens (2.Quadrant)
+ NULL, // 44 Arcus-Sinus
+ NULL, // 45 Arcus-Cosinus
+ NULL, // 46 Exponentialfunktion
+ NULL, // 47 Modulo
+ NULL, // 48 Auswahl
+ NULL, // 49 Is not applicable?
+ NULL, // 50 Is Error?
+ NULL, // 51 FALSE
+ NULL, // 52 TRUE
+ NULL, // 53 Zufallszahl
+ NULL, // 54 Datum
+ NULL, // 55 Heute
+ NULL, // 56 Payment
+ NULL, // 57 Present Value
+ NULL, // 58 Future Value
+ NULL, // 59 If ... then ... else ...
+ NULL, // 60 Tag des Monats
+ NULL, // 61 Monat
+ NULL, // 62 Jahr
+ NULL, // 63 Runden
+ NULL, // 64 Zeit
+ NULL, // 65 Stunde
+ NULL, // 66 Minute
+ NULL, // 67 Sekunde
+ NULL, // 68 Ist Zahl?
+ NULL, // 69 Ist Text?
+ NULL, // 70 Len()
+ NULL, // 71 Val()
+ NULL, // 72 String() ocFixed ersatzweise + Spezialfall
+ NULL, // 73 Mid()
+ NULL, // 74 Char()
+ NULL, // 75 Ascii()
+ NULL, // 76 Find()
+ NULL, // 77 Datevalue
+ NULL, // 78 Timevalue
+ "ZELLZEIGER", // 79 Cellpointer
+ NULL, // 80 Sum()
+ NULL, // 81 Avg()
+ NULL, // 82 Cnt()
+ NULL, // 83 Min()
+ NULL, // 84 Max()
+ NULL, // 85 Vlookup()
+ NULL, // 86 Npv()
+ NULL, // 87 Var()
+ NULL, // 88 Std()
+ NULL, // 89 Irr()
+ NULL, // 90 Hlookup()
+ NULL, // 91 XlfDsum
+ NULL, // 92 XlfDaverage
+ NULL, // 93 XlfDcount
+ NULL, // 94 XlfDmin
+ NULL, // 95 XlfDmax
+ NULL, // 96 XlfDvar
+ NULL, // 97 XlfDstdev
+ NULL, // 98 Index()
+ NULL, // 99 Cols()
+ NULL, // 100 Rows()
+ NULL, // 101 Repeat()
+ NULL, // 102 Upper()
+ NULL, // 103 Lower()
+ NULL, // 104 Left()
+ NULL, // 105 Right()
+ NULL, // 106 Replace()
+ NULL, // 107 Proper()
+ "ZELLE", // 108 Cell()
+ NULL, // 109 Trim()
+ NULL, // 110 Clean()
+ "F", // 111 F() (Excel: T()?)
+ "W", // 112 W()
+ NULL, // 113 Exact()
+ NULL, // 114 Call()
+ NULL, // 115 @@()
+ NULL, // 116 Rate()
+ "ANN", // 117 Term()
+ NULL, // 118 Cterm()
+ NULL, // 119 Sln()
+ NULL, // 120 Syd(), Soy()
+ NULL, // 121 Ddb()
+ "SplFunc", // 122 Splfunc
+ "BLAETTER", // 123 Sheets
+ "INFO", // 124 Info
+ NULL, // 125 Sumproduct
+ "ISTBEREICH", // 126 Isrange
+ NULL, // 127 Dget
+ "DABFRAGE", // 128 Dquery
+ "KOORD", // 129 Coord
+ NULL, // 130 Reserved (internal)
+ NULL, // 131 Today
+ NULL, // 132 Vdb
+ NULL, // 133 Dvars
+ NULL, // 134 Dstds
+ NULL, // 135 Vars
+ NULL, // 136 Stds
+ NULL, // 137 D360
+ NULL, // 138 Reserved (internal)
+ NULL, // 139 Isapp
+ "ISTDEFZUS", // 140 Isaaf
+ NULL, // 141 Weekday
+ NULL, // 142 Datedif
+ NULL, // 143 Rank
+ NULL, // 144 Numberstring
+ "DATUMFOLGE", // 145 Datestring
+ "DEZIMAL", // 146 Decimal
+ "HEX", // 147 Hex
+ NULL, // 148 Db
+ NULL, // 149 Pmti
+ NULL, // 150 Spi
+ NULL, // 151 Fullp
+ NULL, // 152 Halfp
+ "PURMITTELWERT", // 153 Pureavg
+ "PURANZAHL", // 154 Purecount
+ "PURMAX", // 155 Puremax
+ "PURMIN", // 156 Puremin
+ "PURSTDABW", // 157 Purestd
+ "PURVAR", // 158 Purevar
+ "PURSTDABWP", // 159 Purestds
+ "PURVARP", // 160 Purevars
+ NULL, // 161 Pmt2
+ NULL, // 162 Pv2
+ NULL, // 163 Fv2
+ NULL, // 164 Term2
+ NULL, // 165 --- <-------- neu! - Anzahl ? -
+ NULL, // 166 D360 (US-Version, ersatzweise wie ander D360-Funktion)
+ NULL, // 167
+ NULL, // 168
+ NULL, // 169
+ NULL, // 170
+ NULL, // 171
+ NULL, // 172
+ NULL, // 173
+ NULL, // 174
+ NULL, // 175
+ NULL, // 176
+ NULL, // 177
+ NULL, // 178
+ NULL, // 179
+ NULL, // 180
+ NULL, // 181
+ NULL, // 182
+ NULL, // 183
+ NULL, // 184
+ NULL, // 185
+ NULL, // 186
+ NULL, // 187
+ NULL, // 188
+ NULL, // 189
+ NULL, // 190
+ NULL, // 191
+ NULL, // 192
+ NULL, // 193
+ NULL, // 194
+ NULL, // 195
+ NULL, // 196
+ NULL, // 197
+ NULL, // 198
+ NULL, // 199
+ NULL, // 200
+ NULL, // 201
+ NULL, // 202
+ NULL, // 203
+ NULL, // 204
+ NULL, // 205
+ NULL, // 206 ?
+ NULL, // 207
+ NULL, // 208
+ NULL, // 209
+ NULL, // 210
+ NULL, // 211
+ NULL, // 212
+ NULL, // 213
+ NULL, // 214
+ NULL, // 215
+ NULL, // 216
+ NULL, // 217
+ NULL, // 218
+ NULL, // 219
+ NULL, // 220
+ NULL, // 221
+ NULL, // 222
+ NULL, // 223
+ NULL, // 224
+ NULL, // 225
+ NULL, // 226
+ NULL, // 227
+ NULL, // 228
+ NULL, // 229
+ NULL, // 230
+ NULL, // 231
+ NULL, // 232
+ NULL, // 233
+ NULL, // 234
+ NULL, // 235
+ NULL, // 236
+ NULL, // 237
+ NULL, // 238
+ NULL, // 239
+ NULL, // 240
+ NULL, // 241
+ NULL, // 242
+ NULL, // 243
+ NULL, // 244
+ NULL, // 245
+ NULL, // 246
+ NULL, // 247
+ NULL, // 248
+ NULL, // 249
+ NULL, // 250
+ NULL, // 251
+ NULL, // 252
+ NULL, // 253
+ NULL, // 254
+ NULL // 255 ?
+ };
+
+ return pNames[ n ];
+}
+
+
+DefTokenId lcl_KnownAddIn( const ByteString& sTest )
+{
+ DefTokenId eId = ocNoName;
+
+ if( sTest == "FACT" )
+ eId = ocFact;
+ else if(sTest== "ISEMPTY")
+ eId=ocIsEmpty;
+ else if(sTest== "DEGTORAD")
+ eId=ocRad;
+ else if(sTest== "RADTODEG")
+ eId=ocDeg;
+ else if(sTest== "SIGN")
+ eId=ocPlusMinus;
+ else if(sTest== "ACOSH")
+ eId=ocArcCosHyp;
+ else if(sTest== "ACOTH")
+ eId=ocArcCotHyp;
+ else if(sTest== "ASINH")
+ eId=ocArcSinHyp;
+ else if(sTest== "ATANH")
+ eId=ocArcTanHyp;
+ else if(sTest== "COSH")
+ eId=ocCosHyp;
+ else if(sTest== "COTH")
+ eId=ocCotHyp;
+ else if(sTest== "SINH")
+ eId=ocSinHyp;
+ else if(sTest== "TANH")
+ eId=ocTanHyp;
+ else if(sTest== "EVEN")
+ eId=ocIsEven;
+ else if(sTest== "ODD")
+ eId=ocIsOdd;
+ else if(sTest== "ACOT")
+ eId=ocArcCot;
+ else if(sTest== "COT")
+ eId=ocCot;
+ else if(sTest== "ACOT")
+ eId=ocArcCot;
+ else if(sTest== "TRUNC")
+ eId=ocTrunc;
+ else if(sTest== "GEOMEAN")
+ eId=ocGeoMean;
+ else if(sTest== "HARMEAN")
+ eId=ocHarMean;
+ else if(sTest== "CORREL")
+ eId=ocCorrel;
+ else if(sTest== "MEDIAN")
+ eId=ocMedian;
+ else if(sTest== "COV")
+ eId=ocCovar;
+ else if(sTest== "SKEWNESS")
+ eId=ocSchiefe;
+ else if(sTest== "CHITEST")
+ eId=ocChiTest;
+ else if(sTest== "FTEST")
+ eId=ocFTest;
+ else if(sTest== "AVEDEV")
+ eId=ocAveDev;
+ else if(sTest== "PRODUCT")
+ eId=ocProduct;
+ else if(sTest== "PERMUT")
+ eId=ocVariationen;
+ else if(sTest== "GAMMALN")
+ eId=ocGammaLn;
+ else if(sTest== "POISSON")
+ eId=ocPoissonDist;
+ else if(sTest== "NORMAL")
+ eId=ocNormDist;
+ else if(sTest== "CRITBINOMIAL")
+ eId=ocKritBinom;
+ return eId;
+
+
+}
+
diff --git a/sc/source/filter/lotus/lotimpop.cxx b/sc/source/filter/lotus/lotimpop.cxx
new file mode 100644
index 000000000000..6805d8707b99
--- /dev/null
+++ b/sc/source/filter/lotus/lotimpop.cxx
@@ -0,0 +1,519 @@
+/*************************************************************************
+ *
+ * $RCSfile: lotimpop.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#ifndef _VOS_MUTEX_HXX_
+#include <vos/mutex.hxx>
+#endif
+
+#include "attrib.hxx"
+#include "document.hxx"
+#include "rangenam.hxx"
+#include "cell.hxx"
+#include "patattr.hxx"
+#include "docpool.hxx"
+#include "compiler.hxx"
+#include "global.hxx"
+
+#include "root.hxx"
+#include "lotimpop.hxx"
+#include "spstring.hxx"
+#include "lotfntbf.hxx"
+#include "lotform.hxx"
+#include "tool.h"
+#include "namebuff.hxx"
+#include "lotrange.hxx"
+#include "lotattr.hxx"
+
+
+static NAMESPACE_VOS( OMutex ) aLotImpSemaphore;
+
+
+ImportLotus::ImportLotus( SvStream& aStream, ScDocument* pDoc, CharSet eQ ) :
+ ImportTyp( aStream, pDoc, eQ ),
+ pIn( &aStream ),
+ aConv( *pIn, eQ )
+{
+ pExtOpt = NULL;
+
+ // good point to start locking of import lotus
+ aLotImpSemaphore.acquire();
+
+ pLotusRoot = new LOTUS_ROOT;
+ pLotusRoot->pDoc = pDoc;
+ pLotusRoot->pRangeNames = new LotusRangeList;
+ pLotusRoot->pScRangeName = pDoc->GetRangeName();
+ pLotusRoot->eCharsetQ = eQ;
+ pLotusRoot->eFirstType = Lotus_X;
+ pLotusRoot->eActType = Lotus_X;
+ pLotusRoot->pRngNmBffWK3 = new RangeNameBufferWK3;
+ pFontBuff = pLotusRoot->pFontBuff = new LotusFontBuffer;
+ pLotusRoot->pAttrTable = new LotAttrTable;
+}
+
+
+ImportLotus::~ImportLotus()
+{
+ delete pLotusRoot->pRangeNames;
+ delete pLotusRoot->pRngNmBffWK3;
+ delete pFontBuff;
+ delete pLotusRoot->pAttrTable;
+ delete pLotusRoot;
+
+#ifdef DBG_UTIL
+ pLotusRoot = NULL;
+#endif
+
+ // no need 4 pLotusRoot anymore
+ aLotImpSemaphore.release();
+}
+
+
+void ImportLotus::Bof( void )
+{
+ UINT16 nFileCode, nFileSub, nSaveCnt;
+ BYTE nMajorId, nMinorId, nFlags;
+
+ Read( nFileCode );
+ Read( nFileSub );
+ Read( pLotusRoot->aActRange );
+ Read( nSaveCnt );
+ Read( nMajorId );
+ Read( nMinorId );
+ Skip( 1 );
+ Read( nFlags );
+
+ if( nFileSub == 0x0004 )
+ {
+ if( nFileCode == 0x1000 )
+ {// <= WK3
+ pLotusRoot->eFirstType = pLotusRoot->eActType = Lotus_WK3;
+ }
+ else if( nFileCode == 0x1002 )
+ {// WK4
+ pLotusRoot->eFirstType = pLotusRoot->eActType = Lotus_WK4;
+ }
+ }
+}
+
+
+BOOL ImportLotus::BofFm3( void )
+{
+ UINT16 nFileCode, nFileSub;
+
+ Read( nFileCode );
+ Read( nFileSub );
+
+ return ( nFileCode == 0x8007 && ( nFileSub == 0x0000 || nFileSub == 0x00001 ) );
+}
+
+
+void ImportLotus::Columnwidth( UINT16 nRecLen )
+{
+ DBG_ASSERT( nRecLen >= 4, "*ImportLotus::Columnwidth(): Record zu kurz!" );
+
+ BYTE nTab, nWindow2;
+ UINT16 nCnt = ( nRecLen - 4 ) / 2;
+
+ Read( nTab );
+ Read( nWindow2 );
+
+ if( !pD->HasTable( nTab ) )
+ pD->MakeTable( nTab );
+
+ if( !nWindow2 )
+ {
+ Skip( 2 );
+
+ BYTE nCol, nSpaces;
+
+ while( nCnt )
+ {
+ Read( nCol );
+ Read( nSpaces );
+ // ACHTUNG: Korrekturfaktor nach 'Augenmass' ermittelt!
+ pD->SetColWidth( nCol, nTab, ( UINT16 ) ( TWIPS_PER_CHAR * 1.28 * nSpaces ) );
+
+ nCnt--;
+ }
+ }
+}
+
+
+void ImportLotus::Hiddencolumn( UINT16 nRecLen )
+{
+ DBG_ASSERT( nRecLen >= 4, "*ImportLotus::Hiddencolumn(): Record zu kurz!" );
+
+ BYTE nTab, nWindow2;
+ UINT16 nCnt = ( nRecLen - 4 ) / 2;
+
+ Read( nTab );
+ Read( nWindow2 );
+
+ if( !nWindow2 )
+ {
+ Skip( 2 );
+
+ BYTE nCol;
+
+ while( nCnt )
+ {
+ Read( nCol );
+
+ pD->SetColFlags( nCol, nTab, pD->GetColFlags( nCol, nTab ) | CR_HIDDEN );
+
+ nCnt--;
+ }
+ }
+}
+
+
+void ImportLotus::Userrange( void )
+{
+ UINT16 nRangeType;
+ ScRange aScRange;
+ sal_Char* pBuffer = new sal_Char[ 32 ];
+
+ Read( nRangeType );
+
+ pIn->Read( pBuffer, 16 );
+ pBuffer[ 16 ] = ( sal_Char ) 0x00; // zur Sicherheit...
+ String aName( pBuffer, eQuellChar );
+
+ Read( aScRange );
+
+ pLotusRoot->pRngNmBffWK3->Add( aName, aScRange );
+ delete[] pBuffer;
+}
+
+
+void ImportLotus::Errcell( void )
+{
+ ScAddress aA;
+
+ Read( aA );
+
+ pD->PutCell( aA.Col(), aA.Row(), aA.Tab(), new ScStringCell( _STRINGCONST( "#ERR!" ) ), (BOOL)TRUE );
+}
+
+
+void ImportLotus::Nacell( void )
+{
+ ScAddress aA;
+
+ Read( aA );
+
+ pD->PutCell( aA.Col(), aA.Row(), aA.Tab(), new ScStringCell( _STRINGCONST( "#NA!" ) ), (BOOL)TRUE );
+}
+
+
+void ImportLotus::Labelcell( void )
+{
+ ScAddress aA;
+ String aLabel;
+ sal_Char cAlign;
+
+ Read( aA );
+ Read( cAlign );
+ Read( aLabel );
+
+// aLabel.Convert( pLotusRoot->eCharsetQ );
+
+ pD->PutCell( aA.Col(), aA.Row(), aA.Tab(), new ScStringCell( aLabel ), (BOOL)TRUE );
+}
+
+
+void ImportLotus::Numbercell( void )
+ {
+ ScAddress aAddr;
+ double fVal;
+
+ Read( aAddr );
+ Read( fVal );
+
+ pD->PutCell( aAddr.Col(), aAddr.Row(), aAddr.Tab(),
+ new ScValueCell( fVal ), (BOOL)TRUE );
+ }
+
+
+void ImportLotus::Smallnumcell( void )
+ {
+ ScAddress aAddr;
+ INT16 nVal;
+
+ Read( aAddr );
+ Read( nVal );
+
+ pD->PutCell( aAddr.Col(), aAddr.Row(), aAddr.Tab(),
+ new ScValueCell( SnumToDouble( nVal ) ), ( BOOL ) TRUE );
+ }
+
+
+ScFormulaCell *ImportLotus::Formulacell( UINT16 n )
+ {
+ DBG_ASSERT( pIn, "-ImportLotus::Formulacell(): Null-Stream -> Rums!" );
+
+ ScAddress aAddr;
+
+ Read( aAddr );
+ Skip( 10 );
+
+ n -= 14;
+
+ const ScTokenArray* pErg;
+ INT32 nRest = n;
+
+ aConv.Reset( aAddr );
+ aConv.SetWK3();
+ aConv.Convert( pErg, nRest );
+
+ ScFormulaCell* pZelle = new ScFormulaCell( pD, aAddr, pErg );
+
+ pZelle->AddRecalcMode( RECALCMODE_ONLOAD_ONCE );
+
+ pD->PutCell( aAddr.Col(), aAddr.Row(), aAddr.Tab(), pZelle, (BOOL)TRUE );
+
+ return NULL;
+ }
+
+
+void ImportLotus::Read( String &r )
+{
+ AppendCString( *pIn, r, eQuellChar );
+}
+
+
+void ImportLotus::RowPresentation( UINT16 nRecLen )
+{
+ DBG_ASSERT( nRecLen > 4, "*ImportLotus::RowPresentation(): Record zu kurz!" );
+
+ BYTE nTab, nFlags;
+ UINT16 nRow, nHeight;
+ UINT16 nCnt = ( nRecLen - 4 ) / 8;
+
+ Read( nTab );
+ Skip( 1 );
+
+ while( nCnt )
+ {
+ Read( nRow );
+ Read( nHeight );
+ Skip( 2 );
+ Read( nFlags );
+ Skip( 1 );
+
+ if( nFlags & 0x02 ) // Fixed / Strech to fit fonts
+ { // fixed
+ // Height in Lotus in 1/32 Points
+ nHeight *= 20; // -> 32 * TWIPS
+ nHeight /= 32; // -> TWIPS
+
+ pD->SetRowFlags( nRow, nTab, pD->GetRowFlags( nRow, nTab ) | CR_MANUALSIZE );
+
+ pD->SetRowHeight( nRow, nTab, nHeight );
+ }
+
+ nCnt--;
+ }
+}
+
+
+void ImportLotus::NamedSheet( void )
+{
+ UINT16 nTab;
+ String aName;
+
+ Read( nTab );
+ Read( aName );
+
+ if( pD->HasTable( nTab ) )
+ pD->RenameTab( nTab, aName );
+ else
+ pD->InsertTab( nTab, aName );
+}
+
+
+void ImportLotus::Font_Face( void )
+{
+ BYTE nNum;
+ String aName;
+
+ Read( nNum );
+
+ // ACHTUNG: QUICK-HACK gegen unerklaerliche Loops
+ if( nNum > 7 )
+ return;
+ // ACHTUNG
+
+ Read( aName );
+
+ pFontBuff->SetName( nNum, aName );
+}
+
+
+void ImportLotus::Font_Type( void )
+{
+ static const UINT16 nAnz = 8;
+ UINT16 nCnt;
+ UINT16 nType;
+
+ for( nCnt = 0 ; nCnt < nAnz ; nCnt++ )
+ {
+ Read( nType );
+ pFontBuff->SetType( nCnt, nType );
+ }
+}
+
+
+void ImportLotus::Font_Ysize( void )
+{
+ static const UINT16 nAnz = 8;
+ UINT16 nCnt;
+ UINT16 nSize;
+
+ for( nCnt = 0 ; nCnt < nAnz ; nCnt++ )
+ {
+ Read( nSize );
+ pFontBuff->SetHeight( nCnt, nSize );
+ }
+}
+
+
+void ImportLotus::_Row( const UINT16 nRecLen )
+ {
+ DBG_ASSERT( nExtTab >= 0, "*ImportLotus::_Row(): Kann hier nicht sein!" );
+
+ UINT16 nRow;
+ UINT16 nHeight;
+ UINT16 nCntDwn = ( nRecLen - 4 ) / 5;
+ UINT16 nColCnt = 0;
+ UINT8 nRepeats;
+ LotAttrWK3 aAttr;
+
+ BOOL bCenter = FALSE;
+ UINT16 nCenterStart, nCenterEnd;
+
+ Read( nRow );
+ Read( nHeight );
+
+ nHeight &= 0x0FFF;
+ nHeight *= 22;
+
+ if( nHeight )
+ pD->SetRowHeight( nRow, ( UINT16 ) nExtTab, nHeight );
+
+ while( nCntDwn )
+ {
+ Read( aAttr );
+ Read( nRepeats );
+
+ if( aAttr.HasStyles() )
+ pLotusRoot->pAttrTable->SetAttr(
+ ( UINT8 ) nColCnt, ( UINT8 ) ( nColCnt + nRepeats ), nRow, aAttr );
+
+ // hier und NICHT in class LotAttrTable, weil nur Attributiert wird,
+ // wenn die anderen Attribute gesetzt sind
+ // -> bei Center-Attribute wird generell zentriert gesetzt
+ if( aAttr.IsCentered() )
+ {
+ if( bCenter )
+ {
+ if( pD->HasData( nColCnt, nRow, ( UINT16 ) nExtTab ) )
+ {// neue Center nach vorheriger Center
+ pD->DoMerge( ( UINT16 ) nExtTab, nCenterStart, nRow, nCenterEnd, nRow );
+ nCenterStart = ( UINT16 ) nColCnt;
+ }
+ }
+ else
+ {// ganz neue Center
+ bCenter = TRUE;
+ nCenterStart = ( UINT16 ) nColCnt;
+ }
+ nCenterEnd = nColCnt + nRepeats;
+ }
+ else
+ {
+ if( bCenter )
+ {// evtl. alte Center bemachen
+ pD->DoMerge( ( UINT16 ) nExtTab, nCenterStart, nRow, nCenterEnd, nRow );
+ bCenter = FALSE;
+ }
+ }
+
+ nColCnt += nRepeats;
+ nColCnt++;
+
+ nCntDwn--;
+ }
+
+ if( bCenter )
+ // evtl. alte Center bemachen
+ pD->DoMerge( ( UINT16 ) nExtTab, nCenterStart, nRow, nCenterEnd, nRow );
+ }
+
+
diff --git a/sc/source/filter/lotus/lotread.cxx b/sc/source/filter/lotus/lotread.cxx
new file mode 100644
index 000000000000..1c85317d2f46
--- /dev/null
+++ b/sc/source/filter/lotus/lotread.cxx
@@ -0,0 +1,360 @@
+/*************************************************************************
+ *
+ * $RCSfile: lotread.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "document.hxx"
+
+#include "scerrors.hxx"
+#include "root.hxx"
+#include "lotimpop.hxx"
+#include "fltprgrs.hxx"
+#include "lotattr.hxx"
+
+
+class ScFormulaCell;
+
+
+FltError ImportLotus::Read()
+{
+ enum STATE
+ {
+ S_START, // analyse first BOF
+ S_WK1, // in WK1-Stream
+ S_WK3, // in WK3-Section
+ S_WK4, // ...
+ S_FM3, // ...
+ S_END // Import finished
+ };
+
+ UINT16 nOp;
+ UINT16 nSubType;
+ UINT16 nRecLen;
+ UINT32 nNextRec = 0UL;
+ FltError eRet = eERR_OK;
+// ScFormulaCell *pLastFormCell;
+
+ STATE eAkt = S_START;
+
+ nTab = 0;
+ nExtTab = -2;
+
+ pIn->Seek( nNextRec );
+
+ // Progressbar starten
+ FilterProgressBar aPrgrsBar( *pIn );
+
+ while( eAkt != S_END )
+ {
+ *pIn >> nOp >> nRecLen;
+
+ if( pIn->IsEof() )
+ eAkt = S_END;
+
+ nNextRec += nRecLen + 4;
+
+ switch( eAkt )
+ {
+ // -----------------------------------------------------------
+ case S_START: // S_START
+ if( nOp )
+ {
+ eRet = SCERR_IMPORT_UNKNOWN_WK;
+ eAkt = S_END;
+ }
+ else
+ {
+ if( nRecLen > 2 )
+ {
+ Bof();
+ switch( pLotusRoot->eFirstType )
+ {
+ case Lotus_WK1: eAkt = S_WK1; break;
+ case Lotus_WK3: eAkt = S_WK3; break;
+ case Lotus_WK4: eAkt = S_WK4; break;
+ case Lotus_FM3: eAkt = S_FM3; break;
+ default:
+ eRet = SCERR_IMPORT_UNKNOWN_WK;
+ eAkt = S_END;
+ }
+ }
+ else
+ {
+ eAkt = S_END; // hier kommt wat fuer <= WK1 hinne!
+ eRet = 0xFFFFFFFF;
+ }
+ }
+ break;
+ // -----------------------------------------------------------
+ case S_WK1: // S_WK1
+ break;
+ // -----------------------------------------------------------
+ case S_WK3: // S_WK3
+ case S_WK4: // S_WK4
+ switch( nOp )
+ {
+ case 0x0001: // EOF
+ eAkt = S_FM3;
+ nTab++;
+ break;
+
+ case 0x0002: // PASSWORD
+ eRet = eERR_FILEPASSWD;
+ eAkt = S_END;
+ break;
+
+ case 0x0007: // COLUMNWIDTH
+ Columnwidth( nRecLen );
+ break;
+
+ case 0x0008: // HIDDENCOLUMN
+ Hiddencolumn( nRecLen );
+ break;
+
+ case 0x0009: // USERRANGE
+ Userrange();
+ break;
+
+ case 0x0013: // FORMAT
+
+ break;
+ case 0x0014: // ERRCELL
+ Errcell();
+ break;
+
+ case 0x0015: // NACELL
+ Nacell();
+ break;
+
+ case 0x0016: // LABELCELL
+ Labelcell();
+ break;
+
+ case 0x0017: // NUMBERCELL
+ Numbercell();
+ break;
+
+ case 0x0018: // SMALLNUMCELL
+ Smallnumcell();
+ break;
+
+ case 0x0019: // FORMULACELL
+ Formulacell( nRecLen );
+ break;
+
+ case 0x001b: // extended attributes
+ Read( nSubType );
+ nRecLen -= 2;
+ switch( nSubType )
+ {
+ case 2007: // ROW PRESENTATION
+ RowPresentation( nRecLen );
+ break;
+
+ case 14000: // NAMED SHEET
+ NamedSheet();
+ break;
+ }
+ }
+
+ break;
+ // -----------------------------------------------------------
+ case S_FM3: // S_FM3
+ break;
+ // -----------------------------------------------------------
+ case S_END: // S_END
+ break;
+ // -----------------------------------------------------------
+#ifdef DBG_UTIL
+ default:
+ DBG_ERROR( "*ImportLotus::Read(): State unbekannt!" );
+ eAkt = S_END;
+#endif
+ }
+
+ DBG_ASSERT( nNextRec >= pIn->Tell(),
+ "*ImportLotus::Read(): Etwas zu gierig..." );
+
+ pIn->Seek( nNextRec );
+ aPrgrsBar.Progress();
+ }
+
+ // duemmliche Namen eliminieren
+ UINT16 nTabs = pD->GetTableCount();
+ UINT16 nCnt;
+ String aTabName;
+ String aBaseName;
+ String aRef( RTL_CONSTASCII_STRINGPARAM( "temp" ) );
+ if( nTabs )
+ {
+ if( nTabs > 1 )
+ {
+ pD->GetName( 0, aBaseName );
+ aBaseName.Erase( aBaseName.Len() - 1 );
+ }
+ for( nCnt = 1 ; nCnt < nTabs ; nCnt++ )
+ {
+ DBG_ASSERT( pD->HasTable( nCnt ),
+ "-ImportLotus::Read(): Wo ist meine Tabelle?!" );
+ pD->GetName( nCnt, aTabName );
+ if( aTabName == aRef )
+ {
+ aTabName = aBaseName;
+ pD->CreateValidTabName( aTabName );
+ pD->RenameTab( nCnt, aTabName );
+ }
+ }
+ }
+
+ pD->CalcAfterLoad();
+
+ return eRet;
+}
+
+
+FltError ImportLotus::Read( SvStream& rIn )
+{
+ pIn = &rIn;
+
+ BOOL bRead = TRUE;
+ UINT16 nOp;
+ UINT16 nRecLen;
+ UINT32 nNextRec = 0UL;
+ FltError eRet = eERR_OK;
+
+ nTab = 0;
+ nExtTab = -1;
+
+ pIn->Seek( nNextRec );
+
+ // Progressbar starten
+ FilterProgressBar aPrgrsBar( *pIn );
+
+ while( bRead )
+ {
+ *pIn >> nOp >> nRecLen;
+
+ if( pIn->IsEof() )
+ bRead = FALSE;
+ else
+ {
+ nNextRec += nRecLen + 4;
+
+ switch( nOp )
+ {
+ case 0x0000: // BOF
+ if( nRecLen != 26 || !BofFm3() )
+ {
+ bRead = FALSE;
+ eRet = eERR_FORMAT;
+ }
+ break;
+
+ case 0x0001: // EOF
+ bRead = FALSE;
+ DBG_ASSERT( nTab == 0,
+ "-ImportLotus::Read( SvStream& ): Zweimal EOF nicht erlaubt" );
+ nTab++;
+ break;
+
+ case 174: // FONT_FACE
+ Font_Face();
+ break;
+
+ case 176: // FONT_TYPE
+ Font_Type();
+ break;
+
+ case 177: // FONT_YSIZE
+ Font_Ysize();
+ break;
+
+ case 195:
+ if( nExtTab >= 0 )
+ pLotusRoot->pAttrTable->Apply( ( UINT16 ) nExtTab );
+ nExtTab++;
+ break;
+ case 197:
+ _Row( nRecLen );
+ break;
+ }
+
+ DBG_ASSERT( nNextRec >= pIn->Tell(),
+ "*ImportLotus::Read(): Etwas zu gierig..." );
+
+ pIn->Seek( nNextRec );
+ aPrgrsBar.Progress();
+ }
+ }
+
+ pLotusRoot->pAttrTable->Apply( ( UINT16 ) nExtTab );
+
+ return eRet;
+}
+
+
+
diff --git a/sc/source/filter/lotus/lotus.cxx b/sc/source/filter/lotus/lotus.cxx
new file mode 100644
index 000000000000..e07d857c6957
--- /dev/null
+++ b/sc/source/filter/lotus/lotus.cxx
@@ -0,0 +1,152 @@
+/*************************************************************************
+ *
+ * $RCSfile: lotus.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <sfx2/docfile.hxx>
+#include <sfx2/inimgr.hxx>
+
+#include "flttools.hxx"
+#include "scerrors.hxx"
+#include "lotimpop.hxx"
+#include "root.hxx"
+
+//------------------------------------------------------------------------
+
+extern FltError ScImportLotus123old( SvStream&, ScDocument*, CharSet eSrc );
+ // alter Krempel in filter.cxx!
+
+
+
+FltError ScImportLotus123( SfxMedium& rMedium, ScDocument* pDocument, CharSet eSrc )
+{
+ SfxIniManager* pIniManager = SFX_INIMANAGER();
+ BOOL bWithWK3 = pIniManager->Get(
+ SFX_GROUP_COMMON, _STRINGCONST( "WK3" ) ).
+ EqualsAscii( "1" );
+
+ SvStream* pStream = rMedium.GetInStream();
+
+ if( !pStream )
+ return eERR_OPEN;
+
+ FltError eRet;
+
+ pStream->Seek( 0UL );
+
+ pStream->SetBufferSize( 32768 );
+
+ ImportLotus aLotusImport( *pStream, pDocument, eSrc );
+
+ if( bWithWK3 )
+ eRet = aLotusImport.Read();
+ else
+ eRet = 0xFFFFFFFF; // WK1 /WKS erzwingen
+
+ // ACHTUNG: QUICK-HACK fuer WK1 / WKS <-> WK3 / WK4
+ if( eRet == 0xFFFFFFFF )
+ {
+ SvStream* pStream = rMedium.GetInStream();
+
+ if( !pStream )
+ return eERR_OPEN;
+
+ pStream->Seek( 0UL );
+
+ pStream->SetBufferSize( 32768 );
+
+ eRet = ScImportLotus123old( *pStream, pDocument, eSrc );
+
+ pStream->SetBufferSize( 0 );
+
+ return eRet;
+ }
+
+ if( eRet != eERR_OK )
+ return eRet;
+
+ if( pLotusRoot->eFirstType == Lotus_WK3 )
+ {// versuchen *.FM3-File zu laden
+ INetURLObject aURL( rMedium.GetURLObject() );
+ aURL.setExtension( _STRINGCONST( "FM3" ) );
+ SfxMedium aMedium( aURL.GetMainURL(), STREAM_STD_READ, TRUE );
+ SvStream* pStream = aMedium.GetInStream();
+ if ( pStream )
+ {
+ if( aLotusImport.Read( *pStream ) != eERR_OK )
+ eRet = SCWARN_IMPORT_WRONG_FM3;
+ }
+ else
+ eRet = SCWARN_IMPORT_OPEN_FM3;
+ }
+
+ return eRet;
+}
+
+
+
+
diff --git a/sc/source/filter/lotus/makefile.mk b/sc/source/filter/lotus/makefile.mk
new file mode 100644
index 000000000000..c13309342911
--- /dev/null
+++ b/sc/source/filter/lotus/makefile.mk
@@ -0,0 +1,116 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=lotus
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\pch\filt_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ filter.cxx \
+ lotus.cxx \
+ lotimpop.cxx \
+ lotread.cxx \
+ lotform.cxx \
+ memory.cxx \
+ op.cxx \
+ optab.cxx \
+ tool.cxx \
+ expop.cxx \
+ export.cxx \
+ lotattr.cxx
+
+
+
+SLOFILES = \
+ $(SLO)$/filter.obj \
+ $(SLO)$/lotus.obj \
+ $(SLO)$/lotimpop.obj \
+ $(SLO)$/lotread.obj \
+ $(SLO)$/lotform.obj \
+ $(SLO)$/memory.obj \
+ $(SLO)$/op.obj \
+ $(SLO)$/optab.obj \
+ $(SLO)$/tool.obj \
+ $(SLO)$/expop.obj \
+ $(SLO)$/export.obj \
+ $(SLO)$/lotattr.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/filter/lotus/memory.cxx b/sc/source/filter/lotus/memory.cxx
new file mode 100644
index 000000000000..279a20b4f6bd
--- /dev/null
+++ b/sc/source/filter/lotus/memory.cxx
@@ -0,0 +1,174 @@
+/*************************************************************************
+ *
+ * $RCSfile: memory.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+// Bemerkung: Variablen nicht ueber Headerfile, Module muessen sich
+// selbst per extern ihre Sachen besorgen!
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#include "scitems.hxx"
+#include <svx/algitem.hxx>
+
+#include "attrib.hxx"
+
+#include "decl.h"
+#include "tool.h"
+
+extern const long nStackSize;
+extern const int nAnzNRange;
+
+extern ScDocument* pDoc;
+
+const long nStackSize = 8L * 1024; // -> form_xxx.cpp
+const int nAnzNRange = 2048; // -> tool_xxx.cpp, max. 2048 Named Ranges
+
+sal_Char* pPuffer; // -> flt_xxx.cxx
+sal_Char* pDummy1; // -> flt_xxx.cxx, ScanVersion()
+sal_Char* pDummy2; // -> tool.cxx, CreateTable()
+
+extern BYTE* pFormelBuffer; // -> tool.cxx, fuer OP_Formula()
+BYTE* pFormelBuffer;
+
+extern FormCache* pValueFormCache; // -> tool.cxx
+
+sal_Char* pStack; // -> formel.cxx
+sal_Char* pPuffer0; // -> formel.cxx
+sal_Char* pPuffer1; // -> formel.cxx
+extern const int nMaxPar;
+const int nMaxPar = 128; // max. 128 Parameter werden unterstuetzt
+sal_Char** pPar; // -> formel.cxx, Pn()
+
+#ifndef _DOS // -> op.cxx
+sal_Char* pAnsi;
+#endif
+sal_Char* pErgebnis; // -> op.cxx
+
+extern BOOL bFormInit; // -> tool.cxx, fuer GetFormHandle()
+BOOL bFormInit;
+
+extern SvxHorJustifyItem *pAttrRight, *pAttrLeft, *pAttrCenter,
+ *pAttrRepeat, *pAttrStandard; // -> tool.cxx, fuer GetFormAttr()
+extern ScProtectionAttr* pAttrUnprot; // -> tool.cxx, fuer PutFormString()
+
+
+
+BOOL MemNew( void )
+{
+ pPuffer = new sal_Char [ 32L*1024L ];
+
+ pDummy1 = new sal_Char [ 32 ];
+
+ pDummy2 = new sal_Char [ 32 ];
+
+ pStack = new sal_Char [ nStackSize * 3 ]; // alle drei auf einmal
+
+ pPuffer0 = pStack + nStackSize;
+ pPuffer1 = pPuffer0 + nStackSize;
+
+ pAnsi = new sal_Char [ 2048 ];
+
+ pErgebnis = new sal_Char [ 32L*1024L ];
+
+ pPar = new sal_Char *[ nMaxPar ];
+
+ pFormelBuffer = new BYTE[ 4096 ];
+
+ pValueFormCache = new FormCache( pDoc );
+
+ // fuer tool.cxx::PutFormString()
+ pAttrUnprot = new ScProtectionAttr( TRUE );
+ pAttrRight = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_RIGHT );
+ pAttrLeft = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_LEFT );
+ pAttrCenter = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_CENTER );
+ pAttrRepeat = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_REPEAT );
+ pAttrStandard = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_STANDARD );
+ bFormInit = TRUE;
+
+ return TRUE;
+}
+
+
+void MemDelete( void )
+{
+ delete[] pPuffer;
+ delete[] pDummy1;
+ delete[] pDummy2;
+ delete[] pStack;
+ delete[] pAnsi;
+ delete[] pErgebnis;
+ delete[] pPar;
+ delete[] pFormelBuffer;
+
+ delete pValueFormCache;
+ delete pAttrRight;
+ delete pAttrLeft;
+ delete pAttrCenter;
+ delete pAttrRepeat;
+ delete pAttrStandard;
+ delete pAttrUnprot;
+}
+
+
+
diff --git a/sc/source/filter/lotus/op.cxx b/sc/source/filter/lotus/op.cxx
new file mode 100644
index 000000000000..a27bdcc02036
--- /dev/null
+++ b/sc/source/filter/lotus/op.cxx
@@ -0,0 +1,388 @@
+/*************************************************************************
+ *
+ * $RCSfile: op.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <tools/solar.h>
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#if defined( MAC ) || defined( ICC )
+#include <stdlib.h>
+#endif
+
+#include "cell.hxx"
+#include "rangenam.hxx"
+#include "document.hxx"
+
+#include "op.h"
+#include "tool.h"
+#include "math.h"
+#include "decl.h"
+#include "spstring.hxx"
+#include "lotform.hxx"
+#include "lotrange.hxx"
+
+#include "root.hxx"
+
+extern sal_Char* pAnsi; // -> memory.cxx, Puffer zum Umwandeln von OEM->ANSI
+extern sal_Char* pErgebnis; // -> memory.cxx, Ergebnispuffer
+extern WKTYP eTyp; // -> filter.cxx, aktueller Dateityp
+extern BOOL bEOF; // -> filter.cxx, zeigt Dateiende an
+extern sal_Char* pPuffer0; // -> memory.cxx
+extern sal_Char* pPuffer1;
+extern BYTE nDefaultFormat; // -> tool.cxx, Default-Zellenformat
+extern ScDocument* pDoc; // -> filter.cxx, Aufhaenger zum Dokumentzugriff
+extern BYTE* pFormelBuffer; // -> memory.cxx, fuer
+
+static UINT16 nDefWidth = ( UINT16 ) ( TWIPS_PER_CHAR * 10 );
+
+
+
+
+void NI( SvStream& r, UINT16 n )
+{
+ r.SeekRel( n );
+}
+
+
+void OP_BOF( SvStream& r, UINT16 n )
+{
+ r.SeekRel( 2 ); // Versionsnummer ueberlesen
+}
+
+
+void OP_EOF( SvStream& r, UINT16 n )
+{
+ bEOF = TRUE;
+}
+
+
+void OP_Integer( SvStream& r, UINT16 n )
+{
+ BYTE nFormat;
+ UINT16 nCol, nRow, nTab = 0;
+ INT16 nValue;
+
+ r >> nFormat >> nCol >> nRow >> nValue;
+
+ ScValueCell* pZelle = new ScValueCell( ( double ) nValue );
+ pDoc->PutCell( nCol, nRow, nTab, pZelle, ( BOOL ) TRUE );
+
+ // 0 Stellen nach'm Komma!
+ SetFormat( nCol, nRow, nTab, nFormat, 0 );
+}
+
+
+void OP_Number( SvStream& r, UINT16 n )
+{
+ BYTE nFormat;
+ UINT16 nCol, nRow, nTab = 0;
+ double fValue;
+
+ r >> nFormat >> nCol >> nRow >> fValue;
+
+ // pErgebnis kurzzeitig als Dummy-Puffer missbrauchen
+ sprintf( pErgebnis, "%.15lg", fValue ); // auf 15 Stellen runden
+ ScValueCell* pZelle = new ScValueCell( atof( pErgebnis ) );
+ pDoc->PutCell( nCol, nRow, nTab, pZelle, ( BOOL ) TRUE );
+
+ SetFormat( nCol, nRow, nTab, nFormat, nDezFloat );
+}
+
+
+void OP_Label( SvStream& r, UINT16 n )
+{
+ BYTE nFormat;
+ UINT16 nCol, nRow, nTab = 0;
+ sal_Char pText[ 256 ];
+
+ r >> nFormat >> nCol >> nRow;
+ n -= 5;
+
+ r.Read( pText, n );
+ pText[ n + 1 ] = 0; // zur Sicherheit Nullterminator anhaengen
+ // der Mega-Hack: bei Text wird HART Text als Format eingebrannt!!!!!!!
+ nFormat &= 0x80; // Bit 7 belassen
+ nFormat |= 0x75; // protected egal, special-text gesetzt
+
+ // Sonderzeichenanpassung
+ DosToSystem( pText );
+
+ PutFormString( nCol, nRow, nTab, pText );
+
+ SetFormat( nCol, nRow, nTab, nFormat, nDezStd );
+}
+
+
+void OP_Text( SvStream& r, UINT16 n ) // WK3
+{
+ UINT16 nRow;
+ BYTE nCol, nTab;
+ sal_Char pText[ 256 ];
+
+ r >> nRow >> nTab >> nCol;
+ n -= 4;
+
+ r.Read( pText, n );
+ pText[ n ] = 0; // zur Sicherheit Nullterminator anhaengen
+
+ PutFormString( nCol, nRow, nTab, pText );
+}
+
+
+void OP_Formula( SvStream& r, UINT16 n )
+{
+ BYTE nFormat;
+ UINT16 nCol, nRow, nTab = 0, nFormulaSize;
+
+ r >> nFormat >> nCol >> nRow;
+ r.SeekRel( 8 ); // Ergebnis ueberspringen
+ r >> nFormulaSize;
+
+ const ScTokenArray* pErg;
+ INT32 nBytesLeft = nFormulaSize;
+ ScAddress aAddress( nCol, nRow, nTab );
+
+ LotusToSc aConv( r, pLotusRoot->eCharsetQ );
+ aConv.Reset( aAddress );
+ aConv.Convert( pErg, nBytesLeft );
+
+ ScFormulaCell* pZelle = new ScFormulaCell( pLotusRoot->pDoc, aAddress, pErg );
+
+ pZelle->AddRecalcMode( RECALCMODE_ONLOAD_ONCE );
+
+ pDoc->PutCell( nCol, nRow, nTab, pZelle, ( BOOL ) TRUE );
+
+ // nFormat = Standard -> Nachkommastellen wie Float
+ SetFormat( nCol, nRow, nTab, nFormat, nDezFloat );
+}
+
+
+void OP_ColumnWidth( SvStream& r, UINT16 n )
+{
+ UINT16 nCol, nBreite, nTab = 0;
+ BYTE nWidthSpaces;
+
+ r >> nCol >> nWidthSpaces;
+
+ if( nWidthSpaces )
+ // Annahme: 10cpi-Zeichensatz
+ nBreite = ( UINT16 ) ( TWIPS_PER_CHAR * nWidthSpaces );
+ else
+ {
+ pDoc->SetColFlags( nCol, 0, pDoc->GetColFlags( nCol, 0 ) | CR_HIDDEN );
+ nBreite = nDefWidth;
+ }
+
+ pDoc->SetColWidth( nCol, nTab, nBreite );
+}
+
+
+void OP_NamedRange( SvStream& r, UINT16 n )
+ {
+ // POST: waren Koordinaten ungueltig, wird nicht gespeichert
+ UINT16 nColSt, nRowSt, nColEnd, nRowEnd;
+ sal_Char cPuffer[ 32 ];
+
+ r.Read( cPuffer, 16 );
+
+ r >> nColSt >> nRowSt >> nColEnd >> nRowEnd;
+
+ LotusRange* pRange;
+
+ if( nColSt == nColEnd && nRowSt == nRowEnd )
+ pRange = new LotusRange( nColSt, nRowSt );
+ else
+ pRange = new LotusRange( nColSt, nRowSt, nColEnd, nRowEnd );
+
+ if( isdigit( *cPuffer ) )
+ { // erstes Zeichen im Namen eine Zahl -> 'A' vor Namen setzen
+ *pAnsi = 'A';
+ strcpy( pAnsi + 1, cPuffer );
+ }
+ else
+ strcpy( pAnsi, cPuffer );
+
+ DosToSystem( pAnsi );
+
+ String aTmp( pAnsi, pLotusRoot->eCharsetQ );
+
+ ExcelNameToScName( aTmp );
+
+ pLotusRoot->pRangeNames->Append( pRange, aTmp );
+}
+
+
+void OP_SymphNamedRange( SvStream& r, UINT16 n )
+{
+ // POST: waren Koordinaten ungueltig, wird nicht gespeichert
+ UINT16 nColSt, nRowSt, nColEnd, nRowEnd, nN = 0;
+ BYTE nType;
+ sal_Char* pName;
+ sal_Char cPuffer[ 32 ];
+
+ r.Read( cPuffer, 16 );
+ cPuffer[ 16 ] = 0;
+ pName = cPuffer;
+
+ r >> nColSt >> nRowSt >> nColEnd >> nRowEnd >> nType;
+
+ LotusRange* pRange;
+
+ if( nType )
+ pRange = new LotusRange( nColSt, nRowSt );
+ else
+ pRange = new LotusRange( nColSt, nRowSt, nColEnd, nRowEnd );
+
+ if( isdigit( *cPuffer ) )
+ { // erstes Zeichen im Namen eine Zahl -> 'A' vor Namen setzen
+ *pAnsi = 'A';
+ strcpy( pAnsi + 1, cPuffer );
+ }
+ else
+ strcpy( pAnsi, cPuffer );
+
+ DosToSystem( pAnsi );
+
+ String aTmp( pAnsi, pLotusRoot->eCharsetQ );
+ ExcelNameToScName( aTmp );
+
+ pLotusRoot->pRangeNames->Append( pRange, aTmp );
+}
+
+
+void OP_Footer( SvStream& r, UINT16 n )
+{
+ r.SeekRel( n );
+}
+
+
+void OP_Header( SvStream& r, UINT16 n )
+{
+ r.SeekRel( n );
+}
+
+
+void OP_Margins( SvStream& r, UINT16 n )
+{
+ r.SeekRel( n );
+}
+
+
+void OP_HiddenCols( SvStream& r, UINT16 n )
+{
+ UINT16 nByte, nBit, nCount;
+ BYTE nAkt;
+ nCount = 0;
+
+ for( nByte = 0 ; nByte < 32 ; nByte++ ) // 32 Bytes mit ...
+ {
+ r >> nAkt;
+ for( nBit = 0 ; nBit < 8 ; nBit++ ) // ...jeweils 8 Bits = 256 Bits
+ {
+ if( nAkt & 0x01 ) // unterstes Bit gesetzt?
+ // -> Hidden Col
+ pDoc->SetColFlags( nCount, 0, pDoc->GetColFlags( nCount, 0 ) | CR_HIDDEN );
+
+ nCount++;
+ nAkt = nAkt / 2; // der Nächste bitte...
+ }
+ }
+}
+
+
+void OP_Window1( SvStream& r, UINT16 n )
+{
+ r.SeekRel( 4 ); // Cursor Pos ueberspringen
+
+ r >> nDefaultFormat;
+
+ r.SeekRel( 1 ); // 'unused' ueberspringen
+
+ r >> nDefWidth;
+
+ r.SeekRel( n - 8 ); // und den Rest ueberspringen
+
+ nDefWidth = ( UINT16 ) ( TWIPS_PER_CHAR * nDefWidth );
+
+ // statt Defaulteinstellung in SC alle Cols zu Fuss setzen
+ for( UINT16 nCol = 0 ; nCol <= MAXCOL ; nCol++ )
+ pDoc->SetColWidth( nCol, 0, nDefWidth );
+}
+
+
+void OP_Blank( SvStream& r, UINT16 n )
+{
+ UINT16 nCol, nRow;
+ BYTE nFormat;
+ r >> nFormat >> nCol >> nRow;
+
+ SetFormat( nCol, nRow, 0, nFormat, nDezFloat );
+}
+
+
diff --git a/sc/source/filter/lotus/optab.cxx b/sc/source/filter/lotus/optab.cxx
new file mode 100644
index 000000000000..3bc2db678775
--- /dev/null
+++ b/sc/source/filter/lotus/optab.cxx
@@ -0,0 +1,178 @@
+/*************************************************************************
+ *
+ * $RCSfile: optab.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#include "op.h"
+#include "optab.h"
+
+
+// Bearbeitungsfunktion sal_Char *X( sal_Char * )
+OPCODE_FKT pOpFkt[ FKT_LIMIT ] =
+{ // Code
+ OP_BOF, // 0
+ OP_EOF, // 1
+ NI, // 2
+ NI, // 3
+ NI, // 4
+ NI, // 5
+ NI, // 6
+ OP_Window1, // 7
+ OP_ColumnWidth, // 8
+ NI, // 9
+ NI, // 10
+ OP_NamedRange, // 11
+ OP_Blank, // 12
+ OP_Integer, // 13
+ OP_Number, // 14
+ OP_Label, // 15
+ OP_Formula, // 16
+ NI, // 17
+ NI, // 18
+ NI, // 19
+ NI, // 20
+ NI, // 21
+ NI, // 22
+ NI, // 23
+ NI, // 24
+ NI, // 25
+ NI, // 26
+ NI, // 27
+ NI, // 28
+ NI, // 29
+ NI, // 30
+ NI, // 31
+ NI, // 32
+ NI, // 33
+ NI, // 34
+ NI, // 35
+ NI, // 36
+ OP_Footer, // 37
+ OP_Header, // 38
+ NI, // 39
+ OP_Margins, // 40
+ NI, // 41
+ NI, // 42
+ NI, // 43
+ NI, // 44
+ NI, // 45
+ NI, // 46
+ NI, // 47
+ NI, // 48
+ NI, // 49
+ NI, // 50
+ NI, // 51
+ NI, // 52
+ NI, // 53
+ NI, // 54
+ NI, // 55
+ NI, // 56
+ NI, // 57
+ NI, // 58
+ NI, // 59
+ NI, // 60
+ NI, // 61
+ NI, // 62
+ NI, // 63
+ NI, // 64
+ NI, // 65
+ NI, // 66
+ NI, // 67
+ NI, // 68
+ NI, // 69
+ NI, // 70
+ OP_SymphNamedRange, // 71
+ NI, // 72
+ NI, // 73
+ NI, // 74
+ NI, // 75
+ NI, // 76
+ NI, // 77
+ NI, // 78
+ NI, // 79
+ NI, // 80
+ NI, // 81
+ NI, // 82
+ NI, // 83
+ NI, // 84
+ NI, // 85
+ NI, // 86
+ NI, // 87
+ NI, // 88
+ NI, // 89
+ NI, // 90
+ NI, // 91
+ NI, // 92
+ NI, // 93
+ NI, // 94
+ NI, // 95
+ NI, // 96
+ NI, // 97
+ NI, // 98
+ NI, // 99
+ OP_HiddenCols, // 100
+};
+
+
diff --git a/sc/source/filter/lotus/tool.cxx b/sc/source/filter/lotus/tool.cxx
new file mode 100644
index 000000000000..7945715ed3e2
--- /dev/null
+++ b/sc/source/filter/lotus/tool.cxx
@@ -0,0 +1,704 @@
+/*************************************************************************
+ *
+ * $RCSfile: tool.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/algitem.hxx>
+#include <svtools/zforlist.hxx>
+#include <tools/solar.h>
+
+#include "cell.hxx"
+#include "rangenam.hxx"
+#include "compiler.hxx"
+
+#include "tool.h"
+#include "decl.h"
+#include "spstring.hxx"
+#include "root.hxx"
+#include "lotrange.hxx"
+#include "namebuff.hxx"
+
+#pragma optimize("",off)
+
+//--------------------------------------------------------- EXTERNE VARIABLEN -
+extern WKTYP eTyp; // -> filter.cxx, aktueller Dateityp
+extern sal_Char* pDummy2; // -> memory.cxx
+extern ScDocument* pDoc; // -> filter.cxx, Aufhaenger zum Dokumentzugriff
+extern CharSet eCharNach; // -> filter.cxx, Zeichenkonvertierung von->nach
+
+extern BOOL bFormInit; // -> memory.cxx, fuer GetFormHandle()
+
+//--------------------------------------------------------- GLOBALE VARIABLEN -
+BYTE nDefaultFormat; // -> op.cpp, Standard-Zellenformat
+
+extern SvxHorJustifyItem *pAttrRight, *pAttrLeft, *pAttrCenter, *pAttrRepeat, *pAttrStandard;
+extern ScProtectionAttr* pAttrUnprot;
+extern SfxUInt32Item** pAttrValForms;
+
+SvxHorJustifyItem *pAttrRight, *pAttrLeft, *pAttrCenter, *pAttrRepeat, *pAttrStandard;
+ // -> in memory.cxx initialisiert
+ScProtectionAttr* pAttrUnprot; // -> " memory.cxx "
+
+extern FormCache* pValueFormCache; // -> in memory.cxx initialisiert
+FormCache* pValueFormCache;
+
+UINT16 LotusRangeList::nEingCol;
+UINT16 LotusRangeList::nEingRow;
+
+
+
+
+void PutFormString( UINT16 nCol, UINT16 nRow, UINT16 nTab, sal_Char* pString )
+{
+ // Label-Format-Auswertung
+ DBG_ASSERT( pString != NULL, "PutFormString(): pString == NULL" );
+
+ sal_Char cForm;
+ SvxHorJustifyItem* pJustify = NULL;
+
+ cForm = *pString;
+
+ switch( cForm )
+ {
+ case '"': // rechtsbuendig
+ pJustify = pAttrRight;
+ pString++;
+ break;
+ case '\'': // linksbuendig
+ pJustify = pAttrLeft;
+ pString++;
+ break;
+ case '^': // zentriert
+ pJustify = pAttrCenter;
+ pString++;
+ break;
+ case '|': // printer command
+ pString = NULL;
+ break;
+ case '\\': // Wiederholung
+ pJustify = pAttrRepeat;
+ pString++;
+ break;
+ default: // kenn' ich nicht!
+ pJustify = pAttrStandard;
+ }
+
+ if( pString )
+ {
+ pDoc->ApplyAttr( nCol, nRow, nTab, *pJustify );
+ ScStringCell* pZelle = new ScStringCell( String( pString, pLotusRoot->eCharsetQ ) );
+ pDoc->PutCell( nCol, nRow, nTab, pZelle, ( BOOL ) TRUE );
+ }
+}
+
+
+
+
+void SetFormat( UINT16 nCol, UINT16 nRow, UINT16 nTab, BYTE nFormat, BYTE nSt )
+{
+ // PREC: nSt = Standard-Dezimalstellenanzahl
+ pDoc->ApplyAttr( nCol, nRow, nTab, *( pValueFormCache->GetAttr( nFormat, nSt ) ) );
+
+ ScProtectionAttr aAttr;
+
+ aAttr.SetProtection( nFormat & 0x80 );
+
+ pDoc->ApplyAttr( nCol, nRow, nTab, aAttr );
+}
+
+
+
+
+sal_Char* ReplaceWith( sal_Char* pString, sal_Char cVon, sal_Char cNach )
+{ // Ersetzt alle Vorkommen von cVon durch cNach
+ // cNach = 0 -> cVon wird aus String herausgeloescht!
+ // PREC: pString: Nullterminierter String
+ // POST: cNach = 0: aus String werden alle Vorkommen von cVon
+ // herausgeloescht (String wird kuerzer)
+ // cNach !=0: alle Vorkommen von cVon im String werden durch
+ // cNach ersetzt
+ DBG_ASSERT( pString != NULL, "ReplaceWith(): pString == NULL" );
+
+ sal_Char *pAkt, *pCpy;
+ if( cNach != 0 )
+ { // Zeichen erstzen
+ for( pAkt = pString ; *pAkt != 0 ; pAkt++ )
+ {
+ if( *pAkt == cVon )
+ *pAkt = cNach;
+ }
+ }
+ else
+ { // Zeichen loeschen
+ for( pAkt = pCpy =pString ; *pAkt != 0 ; pAkt++ )
+ if( *pAkt != cVon )
+ {
+ *pCpy = *pAkt;
+ pCpy++;
+ }
+ *pCpy = 0; // Nullterminator anhaengen
+ }
+
+ return pString;
+}
+
+
+
+
+void InitPage( void )
+{ // Seitenformat initialisieren, d.h. Default-Werte von SC holen
+ //scGetPageFormat( 0, &aPage );
+}
+
+
+
+
+String DosToSystem( sal_Char* p )
+{ // Umwandlung vom internen in externen Zeichensatz
+ return String( p, pLotusRoot->eCharsetQ );
+}
+
+
+
+
+double SnumToDouble( INT16 nVal )
+{
+ const double pFacts[ 8 ] = {
+ 5000.0,
+ 500.0,
+ 0.05,
+ 0.005,
+ 0.0005,
+ 0.00005,
+ 0.0625,
+ 0.015625 };
+
+ double fVal;
+
+ if( nVal & 0x0001 )
+ {
+ fVal = pFacts[ ( nVal >> 1 ) & 0x0007 ];
+ fVal *= ( INT16 ) ( nVal >> 4 );
+ }
+ else
+ fVal = ( INT16 ) ( nVal >> 1 );
+
+ return fVal;
+}
+
+
+
+
+FormCache::FormCache( ScDocument* pDoc, BYTE nNewDefaultFormat )
+{ // Default-Format ist 'Default'
+ nDefaultFormat = nNewDefaultFormat;
+ pFormTable = pDoc->GetFormatTable();
+ for( UINT16 nC = 0 ; nC < __nSize ; nC++ )
+ bValid[ nC ] = FALSE;
+ eLanguage = ScGlobal::eLnge;
+}
+
+
+FormCache::~FormCache()
+{
+ for( UINT16 nC = 0 ; nC < __nSize ; nC++ )
+ delete aIdents[ nC ].GetAttr();
+}
+
+
+SfxUInt32Item* FormCache::NewAttr( BYTE nFormat, BYTE nSt )
+{
+ // neues Format erzeugen
+ BYTE nL, nH; // Low-/High-Nibble
+ BYTE nForm = nFormat;
+ String aFormString;
+ sal_Char* pFormString = NULL;
+ INT16 eType = NUMBERFORMAT_ALL;
+ UINT32 nIndex;
+ UINT32 nHandle;
+ BOOL bDefault = FALSE;
+ //void GenerateFormat( aFormString, eType, COUNTRY_SYSTEM, LANGUAGE_SYSTEM,
+ // BOOL bThousand, BOOL IsRed, UINT16 nPrecision, UINT16 nAnzLeading );
+
+ if( nForm == 0xFF ) // Default-Format?
+ nForm = nDefaultFormat;
+
+ // Aufdroeseln in Low- und High-Nibble
+ nL = nFormat & 0x0F;
+ nH = ( nFormat & 0xF0 ) / 16;
+
+ nH &= 0x07; // Bits 4-6 'rausziehen
+ switch( nH )
+ {
+ case 0x00: // Festkommaformat (fixed)
+ //fStandard;nL;
+ nIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_NUMBER, eLanguage );
+ pFormTable->GenerateFormat( aFormString, nIndex,
+ eLanguage, FALSE, FALSE, nL, 1 );
+ break;
+ case 0x01: // Exponentdarstellung (scientific notation)
+ //fExponent;nL;
+ nIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_SCIENTIFIC, eLanguage );
+ pFormTable->GenerateFormat( aFormString, nIndex,
+ eLanguage, FALSE, FALSE, nL, 1 );
+ break;
+ case 0x02: // Waehrungsdarstellung (currency)
+ //fMoney;nL;
+ nIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_CURRENCY, eLanguage );
+ pFormTable->GenerateFormat( aFormString, nIndex,
+ eLanguage, FALSE, FALSE, nL, 1 );
+ break;
+ case 0x03: // Prozent
+ //fPercent;nL;
+ nIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_PERCENT, eLanguage );
+ pFormTable->GenerateFormat( aFormString, nIndex,
+ eLanguage, FALSE, FALSE, nL, 1 );
+ break;
+ case 0x04: // Komma
+ //fStandard;nL;
+ nIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_NUMBER, eLanguage );
+ pFormTable->GenerateFormat( aFormString, nIndex,
+ eLanguage, TRUE, FALSE, nL, 1 );
+ break;
+ case 0x05: // frei
+ //fStandard;nL;
+ nIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_NUMBER, eLanguage );
+ pFormTable->GenerateFormat( aFormString, nIndex,
+ eLanguage, FALSE, FALSE, nL, 1 );
+ break;
+ case 0x06: // frei
+ //fStandard;nL;
+ nIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_NUMBER, eLanguage );
+ pFormTable->GenerateFormat( aFormString, nIndex,
+ eLanguage, FALSE, FALSE, nL, 1 );
+ nIndex = 0;
+ break;
+ case 0x07: // Spezialformat
+ switch( nL )
+ {
+ case 0x00: // +/-
+ //fStandard;nSt;
+ nIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_NUMBER, eLanguage );
+ pFormTable->GenerateFormat( aFormString, nIndex,
+ eLanguage, FALSE, TRUE, nSt, 1 );
+ break;
+ case 0x01: // generelles Format
+ //fStandard;nSt;
+ nIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_NUMBER, eLanguage );
+ pFormTable->GenerateFormat( aFormString, nIndex,
+ eLanguage, FALSE, FALSE, nSt, 1 );
+ break;
+ case 0x02: // Datum: Tag, Monat, Jahr
+ //fDate;dfDayMonthYearLong;
+ eType = NUMBERFORMAT_DATE;
+ pFormString = "TT.MM.JJJJ";
+ break;
+ case 0x03: // Datum: Tag, Monat
+ //fDate;dfDayMonthLong;
+ eType = NUMBERFORMAT_DATE;
+ pFormString = "TT.MMMM";
+ break;
+ case 0x04: // Datum: Monat, Jahr
+ //fDate;dfMonthYearLong;
+ eType = NUMBERFORMAT_DATE;
+ pFormString = "MM.JJJJ";
+ break;
+ case 0x05: // Textformate
+ //fString;nSt;
+ eType = NUMBERFORMAT_TEXT;
+ pFormString = "@";
+ break;
+ case 0x06: // versteckt
+ //wFlag |= paHideAll;bSetFormat = FALSE;
+ eType = NUMBERFORMAT_NUMBER;
+ pFormString = "";
+ break;
+ case 0x07: // Time: hour, min, sec
+ //fTime;tfHourMinSec24;
+ eType = NUMBERFORMAT_TIME;
+ pFormString = "HH:MM:SS";
+ break;
+ case 0x08: // Time: hour, min
+ //fTime;tfHourMin24;
+ eType = NUMBERFORMAT_TIME;
+ pFormString = "HH:MM";
+ break;
+ case 0x09: // Date, intern INT32 1
+ //fDate;dfDayMonthYearLong;
+ eType = NUMBERFORMAT_DATE;
+ pFormString = "TT.MM.JJJJ";
+ break;
+ case 0x0A: // Date, intern INT32 2
+ //fDate;dfDayMonthYearLong;
+ eType = NUMBERFORMAT_DATE;
+ pFormString = "TT.MM.JJJJ";
+ break;
+ case 0x0B: // Time, intern INT32 1
+ //fTime;tfHourMinSec24;
+ eType = NUMBERFORMAT_TIME;
+ pFormString = "HH:MM:SS";
+ break;
+ case 0x0C: // Time, intern INT32 2
+ //fTime;tfHourMinSec24;
+ eType = NUMBERFORMAT_TIME;
+ pFormString = "HH:MM:SS";
+ break;
+ case 0x0F: // Standardeinstellung
+ //fStandard;nSt;
+ bDefault = TRUE;
+ break;
+ }
+ break;
+ }
+
+ // Format in Table schieben
+ if( bDefault )
+ nHandle = 0;
+ else
+ {
+ if( pFormString )
+ aFormString.AssignAscii( pFormString );
+
+ xub_StrLen nDummy;
+ pFormTable->PutEntry( aFormString, nDummy, eType, nHandle, eLanguage );
+ }
+
+ return new SfxUInt32Item( ATTR_VALUE_FORMAT, ( UINT32 ) nHandle );
+}
+
+
+
+
+void LotusRange::MakeHash( void )
+{
+ // 33222222222211111111110000000000
+ // 10987654321098765432109876543210
+ // ******** nColS
+ // ******** nColE
+ // **************** nRowS
+ // **************** nRowE
+ nHash = nColStart;
+ nHash += nColEnd << 6;
+ nHash += ( ( UINT32 ) nRowStart ) << 12;
+ nHash += ( ( UINT32 ) nRowEnd ) << 16;
+}
+
+
+LotusRange::LotusRange( UINT16 nCol, UINT16 nRow )
+{
+ nColStart = nColEnd = nCol;
+ nRowStart = nRowEnd = nRow;
+ nId = ID_FAIL;
+ MakeHash();
+}
+
+
+LotusRange::LotusRange( UINT16 nCS, UINT16 nRS, UINT16 nCE, UINT16 nRE )
+{
+ nColStart = nCS;
+ nColEnd = nCE;
+ nRowStart = nRS;
+ nRowEnd = nRE;
+ nId = ID_FAIL;
+ MakeHash();
+}
+
+
+LotusRange::LotusRange( const LotusRange& rCpy )
+{
+ Copy( rCpy );
+}
+
+
+
+
+
+LotusRangeList::LotusRangeList( void )
+{
+ aComplRef.InitFlags();
+
+ SingleRefData* pSingRef;
+ nIdCnt = 1;
+
+ pSingRef = &aComplRef.Ref1;
+ pSingRef->nTab = pSingRef->nRelTab = 0;
+ pSingRef->SetColRel( FALSE );
+ pSingRef->SetRowRel( FALSE );
+ pSingRef->SetTabRel( TRUE );
+ pSingRef->SetFlag3D( FALSE );
+
+ pSingRef = &aComplRef.Ref2;
+ pSingRef->nTab = pSingRef->nRelTab = 0;
+ pSingRef->SetColRel( FALSE );
+ pSingRef->SetRowRel( FALSE );
+ pSingRef->SetTabRel( TRUE );
+ pSingRef->SetFlag3D( FALSE );
+}
+
+
+LotusRangeList::~LotusRangeList( void )
+ {
+ LotusRange *pDel = ( LotusRange * ) List::First();
+
+ while( pDel )
+ {
+ delete pDel;
+ pDel = ( LotusRange * ) List::Next();
+ }
+ }
+
+
+LR_ID LotusRangeList::GetIndex( const LotusRange &rRef )
+{
+ LotusRange* pComp = ( LotusRange* ) List::First();
+
+ while( pComp )
+ {
+ if( *pComp == rRef )
+ return pComp->nId;
+ pComp = ( LotusRange* ) List::Next();
+ }
+
+ return ID_FAIL;
+}
+
+
+void LotusRangeList::Append( LotusRange* pLR, const String& rName )
+{
+ DBG_ASSERT( pLR, "*LotusRangeList::Append(): das wird nichts!" );
+ List::Insert( pLR, CONTAINER_APPEND );
+
+ ScTokenArray aTokArray;
+
+ SingleRefData* pSingRef = &aComplRef.Ref1;
+
+ pSingRef->nCol = pLR->nColStart;
+ pSingRef->nRow = pLR->nRowStart;
+
+ if( pLR->IsSingle() )
+ aTokArray.AddSingleReference( *pSingRef );
+ else
+ {
+ pSingRef = &aComplRef.Ref2;
+ pSingRef->nCol = pLR->nColEnd;
+ pSingRef->nRow = pLR->nRowEnd;
+ aTokArray.AddDoubleReference( aComplRef );
+ }
+
+ ScRangeData* pData = new ScRangeData(
+ pLotusRoot->pDoc, rName, aTokArray );
+
+ pLotusRoot->pScRangeName->Insert( pData );
+
+ pLR->SetId( nIdCnt );
+
+ nIdCnt++;
+}
+
+
+
+
+RangeNameBufferWK3::RangeNameBufferWK3( void )
+{
+ pScTokenArray = new ScTokenArray;
+ nIntCount = 1;
+}
+
+
+RangeNameBufferWK3::~RangeNameBufferWK3()
+{
+ ENTRY* pDel = ( ENTRY* ) List::First();
+
+ while( pDel )
+ {
+ delete pDel;
+ pDel = ( ENTRY* ) List::Next();
+ }
+
+ delete pScTokenArray;
+}
+
+
+void RangeNameBufferWK3::Add( const String& rOrgName, const ComplRefData& rCRD )
+{
+ static UINT16 nDouble = 0;
+
+ String aScName( rOrgName );
+ ExcelNameToScName( aScName );
+
+ register ENTRY* pInsert = new ENTRY( rOrgName, aScName, rCRD );
+
+ List::Insert( pInsert, CONTAINER_APPEND );
+
+ pScTokenArray->Clear();
+
+ register const SingleRefData& rRef1 = rCRD.Ref1;
+ register const SingleRefData& rRef2 = rCRD.Ref2;
+
+ if( rRef1.nCol == rRef2.nCol && rRef1.nRow == rRef2.nRow && rRef1.nTab == rRef2.nTab )
+ {
+ pScTokenArray->AddSingleReference( rCRD.Ref1 );
+ pInsert->bSingleRef = TRUE;
+ }
+ else
+ {
+ pScTokenArray->AddDoubleReference( rCRD );
+ pInsert->bSingleRef = FALSE;
+ }
+
+ ScRangeData* pData = new ScRangeData( pLotusRoot->pDoc, aScName, *pScTokenArray );
+
+ pInsert->nRelInd = nIntCount;
+ pData->SetIndex( nIntCount );
+ nIntCount++;
+
+ pLotusRoot->pScRangeName->Insert( pData );
+}
+
+
+BOOL RangeNameBufferWK3::FindRel( const String& rRef, UINT16& rIndex )
+{
+ StringHashEntry aRef( rRef );
+
+ ENTRY* pFind = ( ENTRY* ) List::First();
+
+ while( pFind )
+ {
+ if( aRef == pFind->aStrHashEntry )
+ {
+ rIndex = pFind->nRelInd;
+ return TRUE;
+ }
+ pFind = ( ENTRY* ) List::Next();
+ }
+
+ return FALSE;
+}
+
+
+BOOL RangeNameBufferWK3::FindAbs( const String& rRef, UINT16& rIndex )
+{
+ String aTmp( rRef );
+ StringHashEntry aRef( aTmp.Erase( 0, 1 ) ); // ohne '$' suchen!
+
+ ENTRY* pFind = ( ENTRY* ) List::First();
+
+ while( pFind )
+ {
+ if( aRef == pFind->aStrHashEntry )
+ {
+ // eventuell neuen Range Name aufbauen
+ if( pFind->nAbsInd )
+ rIndex = pFind->nAbsInd;
+ else
+ {
+ SingleRefData* pRef = &pFind->aComplRefDataRel.Ref1;
+ pScTokenArray->Clear();
+
+ pRef->SetColRel( FALSE );
+ pRef->SetRowRel( FALSE );
+ pRef->SetTabRel( TRUE );
+
+ if( pFind->bSingleRef )
+ pScTokenArray->AddSingleReference( *pRef );
+ else
+ {
+ pRef = &pFind->aComplRefDataRel.Ref2;
+ pRef->SetColRel( FALSE );
+ pRef->SetRowRel( FALSE );
+ pRef->SetTabRel( TRUE );
+ pScTokenArray->AddDoubleReference( pFind->aComplRefDataRel );
+ }
+
+ ScRangeData* pData = new ScRangeData( pLotusRoot->pDoc, pFind->aScAbsName, *pScTokenArray );
+
+ rIndex = pFind->nAbsInd = nIntCount;
+ pData->SetIndex( rIndex );
+ nIntCount++;
+
+ pLotusRoot->pScRangeName->Insert( pData );
+ }
+
+ return TRUE;
+ }
+ pFind = ( ENTRY* ) List::Next();
+ }
+
+ return FALSE;
+}
+
+
diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx
new file mode 100644
index 000000000000..cac1499b4c35
--- /dev/null
+++ b/sc/source/filter/rtf/eeimpars.cxx
@@ -0,0 +1,624 @@
+/*************************************************************************
+ *
+ * $RCSfile: eeimpars.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/adjitem.hxx>
+#include <svx/editobj.hxx>
+#include <svx/editview.hxx>
+#include <svx/escpitem.hxx>
+#include <svx/langitem.hxx>
+#include <svx/svdograf.hxx>
+#include <svx/svdpage.hxx>
+#ifndef _SFXHTML_HXX //autogen wg. SfxHTMLParser
+#include <sfx2/sfxhtml.hxx>
+#endif
+#include <svtools/parhtml.hxx>
+#include <vcl/virdev.hxx>
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+
+#include "eeimport.hxx"
+#include "global.hxx"
+#include "document.hxx"
+#include "editutil.hxx"
+#include "stlsheet.hxx"
+#include "docpool.hxx"
+#include "attrib.hxx"
+#include "patattr.hxx"
+#include "cell.hxx"
+#include "eeparser.hxx"
+#include "drwlayer.hxx"
+#include "rangenam.hxx"
+#include "progress.hxx"
+
+#include "globstr.hrc"
+
+// in fuins1.cxx
+extern void LimitSizeOnDrawPage( Size& rSize, Point& rPos, const Size& rPage );
+
+//------------------------------------------------------------------------
+
+ScEEImport::ScEEImport( ScDocument* pDocP, const ScRange& rRange ) :
+ aRange( rRange ),
+ pDoc( pDocP ),
+ pParser( NULL ),
+ pRowHeights( new Table )
+{
+ const ScPatternAttr* pPattern = pDoc->GetPattern(
+ aRange.aStart.Col(), aRange.aStart.Row(), aRange.aStart.Tab() );
+ pEngine = new ScTabEditEngine( *pPattern, pDoc->GetEditPool() );
+ pEngine->SetUpdateMode( FALSE );
+ pEngine->EnableUndo( FALSE );
+}
+
+
+ScEEImport::~ScEEImport()
+{
+ // Reihenfolge wichtig, sonst knallt's irgendwann irgendwo in irgendeinem Dtor!
+ // Ist gewaehrleistet, da ScEEImport Basisklasse ist
+ delete pEngine; // nach Parser!
+ delete pRowHeights;
+}
+
+
+ULONG ScEEImport::Read( SvStream& rStream )
+{
+ ULONG nErr = pParser->Read( rStream );
+
+ USHORT nEndCol, nEndRow;
+ pParser->GetDimensions( nEndCol, nEndRow );
+ if ( nEndCol )
+ {
+ nEndCol += aRange.aStart.Col() - 1;
+ if ( nEndCol > MAXCOL )
+ nEndCol = MAXCOL;
+ }
+ else
+ nEndCol = aRange.aStart.Col();
+ if ( nEndRow )
+ {
+ nEndRow += aRange.aStart.Row() - 1;
+ if ( nEndRow > MAXROW )
+ nEndRow = MAXROW;
+ }
+ else
+ nEndRow = aRange.aStart.Row();
+ aRange.aEnd.Set( nEndCol, nEndRow, aRange.aStart.Tab() );
+
+ return nErr;
+}
+
+
+void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor )
+{
+ ScProgress* pProgress = new ScProgress( NULL,
+ ScGlobal::GetRscString( STR_LOAD_DOC ), pParser->Count() );
+ ULONG nProgress = 0;
+
+ USHORT nStartCol, nStartRow, nTab, nEndCol, nEndRow,
+ nOverlapRowMax, nLastMergedRow, nMergeColAdd;
+ nStartCol = aRange.aStart.Col();
+ nStartRow = aRange.aStart.Row();
+ nTab = aRange.aStart.Tab();
+ nEndCol = aRange.aEnd.Col();
+ nEndRow = aRange.aEnd.Row();
+ nOverlapRowMax = nMergeColAdd = 0;
+ nLastMergedRow = (USHORT)~0;
+ BOOL bHasGraphics = FALSE;
+ ScEEParseEntry* pE;
+
+ const sal_Char cDecSep = ScGlobal::pScInternational->GetNumDecimalSep();
+ const sal_Char cThoSep = ScGlobal::pScInternational->GetNumThousandSep();
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ ScDocumentPool* pDocPool = pDoc->GetPool();
+ ScRangeName* pRangeNames = pDoc->GetRangeName();
+ for ( pE = pParser->First(); pE; pE = pParser->Next() )
+ {
+ USHORT nRow = nStartRow + pE->nRow;
+ if ( nRow != nLastMergedRow )
+ nMergeColAdd = 0;
+ USHORT nCol = nStartCol + pE->nCol + nMergeColAdd;
+ // RowMerge feststellen, pures ColMerge und ColMerge der ersten
+ // MergeRow bereits beim parsen
+ if ( nRow <= nOverlapRowMax )
+ {
+ while ( pDoc->HasAttrib( nCol, nRow, nTab,
+ nCol, nRow, nTab, HASATTR_OVERLAPPED ) )
+ {
+ nCol++;
+ nMergeColAdd++;
+ }
+ nLastMergedRow = nRow;
+ }
+ // fuer zweiten Durchlauf eintragen
+ pE->nCol = nCol;
+ pE->nRow = nRow;
+ if ( nCol <= MAXCOL && nRow <= MAXROW )
+ {
+ SfxItemSet aSet = pEngine->GetAttribs( pE->aSel );
+ // Default raus, wir setzen selber links/rechts je nachdem ob Text
+ // oder Zahl; EditView.GetAttribs liefert immer kompletten Set
+ // mit Defaults aufgefuellt
+ const SfxPoolItem& rItem = aSet.Get( EE_PARA_JUST );
+ if ( ((const SvxAdjustItem&)rItem).GetAdjust() == SVX_ADJUST_LEFT )
+ aSet.ClearItem( EE_PARA_JUST );
+
+ // Testen, ob einfacher String ohne gemischte Attribute
+ BOOL bSimple = ( pE->aSel.nStartPara == pE->aSel.nEndPara );
+ const SfxPoolItem* pItem;
+ USHORT nId;
+ for (nId = EE_CHAR_START; nId <= EE_CHAR_END && bSimple; nId++)
+ {
+ SfxItemState eState = aSet.GetItemState( nId, TRUE, &pItem );
+ if (eState == SFX_ITEM_DONTCARE)
+ bSimple = FALSE;
+ else if (eState == SFX_ITEM_SET)
+ {
+ if ( nId == EE_CHAR_ESCAPEMENT ) // Hoch-/Tiefstellen immer ueber EE
+ {
+ if ( (SvxEscapement)((const SvxEscapementItem*)pItem)->GetEnumValue()
+ != SVX_ESCAPEMENT_OFF )
+ bSimple = FALSE;
+ }
+ }
+ }
+ if ( bSimple )
+ { // Feldbefehle enthalten?
+ SfxItemState eFieldState = aSet.GetItemState( EE_FEATURE_FIELD, FALSE );
+ if ( eFieldState == SFX_ITEM_DONTCARE || eFieldState == SFX_ITEM_SET )
+ bSimple = FALSE;
+ }
+
+ // HTML
+ String aValStr, aNumStr;
+ double fVal;
+ ULONG nNumForm;
+ LanguageType eNumLang;
+ if ( pE->pNumStr )
+ { // SDNUM muss sein wenn SDVAL
+ aNumStr = *pE->pNumStr;
+ if ( pE->pValStr )
+ aValStr = *pE->pValStr;
+ fVal = SfxHTMLParser::GetTableDataOptionsValNum(
+ nNumForm, eNumLang, aValStr, aNumStr, *pFormatter );
+ }
+
+ // Attribute setzen
+ ScPatternAttr aAttr( pDocPool );
+ aAttr.GetFromEditItemSet( &aSet );
+ SfxItemSet& rSet = aAttr.GetItemSet();
+ if ( aNumStr.Len() )
+ {
+ rSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, nNumForm ) );
+ rSet.Put( SvxLanguageItem( eNumLang, ATTR_LANGUAGE_FORMAT ) );
+ }
+ const SfxItemSet& rESet = pE->aItemSet;
+ if ( rESet.Count() )
+ {
+ const SfxPoolItem* pItem;
+ if ( rESet.GetItemState( ATTR_BACKGROUND, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ if ( rESet.GetItemState( ATTR_BORDER, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ if ( rESet.GetItemState( ATTR_SHADOW, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ // HTML
+ if ( rESet.GetItemState( ATTR_HOR_JUSTIFY, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ if ( rESet.GetItemState( ATTR_VER_JUSTIFY, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ if ( rESet.GetItemState( ATTR_LINEBREAK, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ if ( rESet.GetItemState( ATTR_FONT, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ if ( rESet.GetItemState( ATTR_FONT_HEIGHT, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ if ( rESet.GetItemState( ATTR_FONT_COLOR, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ if ( rESet.GetItemState( ATTR_FONT_WEIGHT, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ if ( rESet.GetItemState( ATTR_FONT_POSTURE, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ if ( rESet.GetItemState( ATTR_FONT_UNDERLINE, FALSE, &pItem) == SFX_ITEM_SET )
+ rSet.Put( *pItem );
+ }
+ if ( pE->nColOverlap > 1 || pE->nRowOverlap > 1 )
+ { // merged cells, mit SfxItemSet Put schneller als mit
+ // nachtraeglichem ScDocument DoMerge
+ ScMergeAttr aMerge( pE->nColOverlap, pE->nRowOverlap );
+ rSet.Put( aMerge );
+ USHORT nRO;
+ if ( pE->nColOverlap > 1 )
+ pDoc->ApplyFlagsTab( nCol+1, nRow,
+ nCol + pE->nColOverlap - 1, nRow, nTab,
+ SC_MF_HOR );
+ if ( pE->nRowOverlap > 1 )
+ {
+ nRO = nRow + pE->nRowOverlap - 1;
+ pDoc->ApplyFlagsTab( nCol, nRow+1,
+ nCol, nRO , nTab,
+ SC_MF_VER );
+ if ( nRO > nOverlapRowMax )
+ nOverlapRowMax = nRO;
+ }
+ if ( pE->nColOverlap > 1 && pE->nRowOverlap > 1 )
+ pDoc->ApplyFlagsTab( nCol+1, nRow+1,
+ nCol + pE->nColOverlap - 1, nRO, nTab,
+ SC_MF_HOR | SC_MF_VER );
+ }
+ const ScStyleSheet* pStyleSheet =
+ pDoc->GetPattern( nCol, nRow, nTab )->GetStyleSheet();
+ aAttr.SetStyleSheet( (ScStyleSheet*)pStyleSheet );
+ pDoc->SetPattern( nCol, nRow, nTab, aAttr, TRUE );
+
+ // Daten eintragen
+ if (bSimple)
+ {
+ if ( aValStr.Len() )
+ pDoc->SetValue( nCol, nRow, nTab, fVal );
+ else if ( !pE->aSel.HasRange() )
+ {
+ // maybe ALT text of IMG or similar
+ pDoc->SetString( nCol, nRow, nTab, pE->aAltText );
+ // wenn SelRange komplett leer kann nachfolgender Text im gleichen Absatz liegen!
+ }
+ else
+ {
+ String aStr( pEngine->GetText( pE->aSel.nStartPara ) );
+ const sal_Char cDecSepEng = '.';
+ const sal_Char cThoSepEng = ',';
+ if ( cDecSep != cDecSepEng
+ && aStr.GetTokenCount( cDecSepEng ) == 2 )
+ { // evtl. englische Zahl wandeln und im Deutschen
+ // den Numberformatter kein Datum draus machen lassen..
+ xub_StrLen nInd = 0;
+ ByteString aLeft( aStr.GetToken( 0, cDecSepEng, nInd ), RTL_TEXTENCODING_ASCII_US );
+ ByteString aRight( aStr.GetToken( 0, cDecSepEng, nInd ), RTL_TEXTENCODING_ASCII_US );
+ aRight.EraseTrailingChars();
+ if ( aRight.IsNumericAscii() )
+ {
+ aLeft.EraseLeadingChars();
+ nInd = 0;
+ xub_StrLen n = aLeft.GetTokenCount( cThoSepEng );
+ for ( xub_StrLen j = 0; j < n; j++ )
+ {
+ ByteString aT( aLeft.GetToken( 0, cThoSepEng, nInd ) );
+ if ( j > 0 && aT.Len() != 3 )
+ break; // Tausenderseparator heisst er
+ if ( !aT.IsNumericAscii() )
+ break;
+ }
+ if ( j == n )
+ {
+ if ( n > 1 )
+ { // harter cast spart Zeit
+ sal_Char* p = (sal_Char*) aLeft.GetBuffer();
+ while ( *p )
+ {
+ if ( *p == cThoSepEng )
+ *p = cThoSep;
+ p++;
+ }
+ }
+ aLeft += cDecSep;
+ aLeft += aRight;
+ aStr = String( aLeft, RTL_TEXTENCODING_ASCII_US );
+ }
+ }
+ }
+ pDoc->SetString( nCol, nRow, nTab, aStr );
+ }
+ }
+ else
+ {
+ EditTextObject* pObject = pEngine->CreateTextObject( pE->aSel );
+ pDoc->PutCell( nCol, nRow, nTab, new ScEditCell( pObject,
+ pDoc, pEngine->GetEditTextObjectPool() ) );
+ delete pObject;
+ }
+ if ( pE->pImageList )
+ bHasGraphics |= GraphicSize( nCol, nRow, nTab, pE );
+ if ( pE->pName )
+ { // Anchor Name => RangeName
+ USHORT nIndex;
+ if ( !pRangeNames->SearchName( *pE->pName, nIndex ) )
+ {
+ ScRangeData* pData = new ScRangeData( pDoc, *pE->pName,
+ ScAddress( nCol, nRow, nTab ) );
+ pRangeNames->Insert( pData );
+ }
+ }
+ }
+ pProgress->SetStateOnPercent( ++nProgress );
+ }
+ if ( bSizeColsRows )
+ {
+ // Spaltenbreiten
+ Table* pColWidths = pParser->GetColWidths();
+ if ( pColWidths->Count() )
+ {
+ nProgress = 0;
+ pProgress->SetState( nProgress, nEndCol - nStartCol + 1 );
+ for ( USHORT nCol = nStartCol; nCol <= nEndCol; nCol++ )
+ {
+ USHORT nWidth = (USHORT)(ULONG) pColWidths->Get( nCol );
+ if ( nWidth )
+ pDoc->SetColWidth( nCol, nTab, nWidth );
+ pProgress->SetState( ++nProgress );
+ }
+ }
+ DELETEZ( pProgress ); // SetOptimalHeight hat seinen eigenen ProgressBar
+ // Zeilenhoehen anpassen, Basis 100% Zoom
+ Fraction aZoom( 1, 1 );
+ double nPPTX = ScGlobal::nScreenPPTX * (double) aZoom
+ / nOutputFactor; // Faktor ist Drucker zu Bildschirm
+ double nPPTY = ScGlobal::nScreenPPTY * (double) aZoom;
+ VirtualDevice aVirtDev;
+ pDoc->SetOptimalHeight( 0, nEndRow, 0,
+ ScGlobal::nLastRowHeightExtra, &aVirtDev,
+ nPPTX, nPPTY, aZoom, aZoom, FALSE );
+ if ( pRowHeights->Count() )
+ {
+ for ( USHORT nRow = nStartRow; nRow <= nEndRow; nRow++ )
+ {
+ USHORT nHeight = (USHORT)(ULONG) pRowHeights->Get( nRow );
+ if ( nHeight > pDoc->FastGetRowHeight( nRow, nTab ) )
+ pDoc->SetRowHeight( nRow, nTab, nHeight );
+ }
+ }
+ }
+ if ( bHasGraphics )
+ { // Grafiken einfuegen
+ for ( pE = pParser->First(); pE; pE = pParser->Next() )
+ {
+ if ( pE->pImageList )
+ {
+ USHORT nCol = pE->nCol;
+ USHORT nRow = pE->nRow;
+ if ( nCol <= MAXCOL && nRow <= MAXROW )
+ InsertGraphic( nCol, nRow, nTab, pE );
+ }
+ }
+ }
+ if ( pProgress )
+ delete pProgress;
+}
+
+
+BOOL ScEEImport::GraphicSize( USHORT nCol, USHORT nRow, USHORT nTab,
+ ScEEParseEntry* pE )
+{
+ ScHTMLImageList* pIL = pE->pImageList;
+ if ( !pIL || !pIL->Count() )
+ return FALSE;
+ BOOL bHasGraphics = FALSE;
+ OutputDevice* pDefaultDev = Application::GetDefaultDevice();
+ long nWidth, nHeight;
+ nWidth = nHeight = 0;
+ sal_Char nDir = nHorizontal;
+ for ( ScHTMLImage* pI = pIL->First(); pI; pI = pIL->Next() )
+ {
+ if ( pI->pGraphic )
+ bHasGraphics = TRUE;
+ Size aSizePix = pI->aSize;
+ aSizePix.Width() += 2 * pI->aSpace.X();
+ aSizePix.Height() += 2 * pI->aSpace.Y();
+ Size aLogicSize = pDefaultDev->PixelToLogic( aSizePix, MapMode( MAP_TWIP ) );
+ if ( nDir & nHorizontal )
+ nWidth += aLogicSize.Width();
+ else if ( nWidth < aLogicSize.Width() )
+ nWidth = aLogicSize.Width();
+ if ( nDir & nVertical )
+ nHeight += aLogicSize.Height();
+ else if ( nHeight < aLogicSize.Height() )
+ nHeight = aLogicSize.Height();
+ nDir = pI->nDir;
+ }
+ // Spaltenbreiten
+ Table* pColWidths = pParser->GetColWidths();
+ long nThisWidth = (long) pColWidths->Get( nCol );
+ long nColWidths = nThisWidth;
+ USHORT nColSpanCol = nCol + pE->nColOverlap;
+ for ( USHORT nC = nCol + 1; nC < nColSpanCol; nC++ )
+ {
+ nColWidths += (long) pColWidths->Get( nC );
+ }
+ if ( nWidth > nColWidths )
+ { // Differenz nur in der ersten Spalte eintragen
+ if ( nThisWidth )
+ pColWidths->Replace( nCol, (void*)(nWidth - nColWidths + nThisWidth) );
+ else
+ pColWidths->Insert( nCol, (void*)(nWidth - nColWidths) );
+ }
+ // Zeilenhoehen, Differenz auf alle betroffenen Zeilen verteilen
+ USHORT nRowSpan = pE->nRowOverlap;
+ nHeight /= nRowSpan;
+ if ( nHeight == 0 )
+ nHeight = 1; // fuer eindeutigen Vergleich
+ for ( USHORT nR = nRow; nR < nRow + nRowSpan; nR++ )
+ {
+ long nRowHeight = (long) pRowHeights->Get( nR );
+ if ( nHeight > nRowHeight )
+ {
+ if ( nRowHeight )
+ pRowHeights->Replace( nR, (void*)nHeight );
+ else
+ pRowHeights->Insert( nR, (void*)nHeight );
+ }
+ }
+ return bHasGraphics;
+}
+
+
+void ScEEImport::InsertGraphic( USHORT nCol, USHORT nRow, USHORT nTab,
+ ScEEParseEntry* pE )
+{
+ ScHTMLImageList* pIL = pE->pImageList;
+ if ( !pIL || !pIL->Count() )
+ return ;
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ if (!pModel)
+ {
+ pDoc->InitDrawLayer();
+ pModel = pDoc->GetDrawLayer();
+ }
+ SdrPage* pPage = pModel->GetPage( nTab );
+ OutputDevice* pDefaultDev = Application::GetDefaultDevice();
+
+ Point aCellInsertPos(
+ (long)((double) pDoc->GetColOffset( nCol, nTab ) * HMM_PER_TWIPS),
+ (long)((double) pDoc->GetRowOffset( nRow, nTab ) * HMM_PER_TWIPS) );
+
+ Point aInsertPos( aCellInsertPos );
+ Point aSpace;
+ Size aLogicSize;
+ sal_Char nDir = nHorizontal;
+ for ( ScHTMLImage* pI = pIL->First(); pI; pI = pIL->Next() )
+ {
+ if ( nDir & nHorizontal )
+ { // horizontal
+ aInsertPos.X() += aLogicSize.Width();
+ aInsertPos.X() += aSpace.X();
+ aInsertPos.Y() = aCellInsertPos.Y();
+ }
+ else
+ { // vertikal
+ aInsertPos.X() = aCellInsertPos.X();
+ aInsertPos.Y() += aLogicSize.Height();
+ aInsertPos.Y() += aSpace.Y();
+ }
+ // Offset des Spacings drauf
+ aSpace = pDefaultDev->PixelToLogic( pI->aSpace, MapMode( MAP_100TH_MM ) );
+ aInsertPos += aSpace;
+
+ Size aSizePix = pI->aSize;
+ aLogicSize = pDefaultDev->PixelToLogic( aSizePix, MapMode( MAP_100TH_MM ) );
+ // Groesse begrenzen
+ ::LimitSizeOnDrawPage( aLogicSize, aInsertPos, pPage->GetSize() );
+
+ if ( pI->pGraphic )
+ {
+ Rectangle aRect ( aInsertPos, aLogicSize );
+ SdrGrafObj* pObj = new SdrGrafObj( *pI->pGraphic, aRect );
+ pObj->SetGraphicLink( pI->aURL, pI->aFilterName );
+ pObj->SetName( pI->aURL );
+
+ pPage->InsertObject( pObj );
+ pObj->SetLogicRect( aRect ); // erst nach InsertObject !!!
+ }
+ nDir = pI->nDir;
+ }
+}
+
+
+ScEEParser::ScEEParser( EditEngine* pEditP ) :
+ pEdit( pEditP ),
+ pPool( EditEngine::CreatePool() ),
+ pDocPool( new ScDocumentPool ),
+ pList( new ScEEParseList ),
+ pColWidths( new Table ),
+ nLastToken(0),
+ nColCnt(0),
+ nRowCnt(0),
+ nColMax(0),
+ nRowMax(0)
+{
+ // pPool wird spaeter bei RTFIMP_START dem SvxRTFParser untergejubelt
+ pPool->SetSecondaryPool( pDocPool );
+ pPool->FreezeIdRanges();
+ NewActEntry( NULL );
+}
+
+
+ScEEParser::~ScEEParser()
+{
+ delete pActEntry;
+ delete pColWidths;
+ for ( ScEEParseEntry* pE = pList->First(); pE; pE = pList->Next() )
+ delete pE;
+ delete pList;
+
+ // Pool erst loeschen nachdem die Listen geloescht wurden
+ pPool->SetSecondaryPool( NULL );
+ delete pDocPool;
+ delete pPool;
+}
+
+
+void ScEEParser::NewActEntry( ScEEParseEntry* pE )
+{ // neuer freifliegender pActEntry
+ pActEntry = new ScEEParseEntry( pPool );
+ pActEntry->aSel.nStartPara = (pE ? pE->aSel.nEndPara + 1 : 0);
+ pActEntry->aSel.nStartPos = 0;
+}
+
+
+
+
diff --git a/sc/source/filter/rtf/expbase.cxx b/sc/source/filter/rtf/expbase.cxx
new file mode 100644
index 000000000000..581ca67b2387
--- /dev/null
+++ b/sc/source/filter/rtf/expbase.cxx
@@ -0,0 +1,147 @@
+/*************************************************************************
+ *
+ * $RCSfile: expbase.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#include "expbase.hxx"
+#include "document.hxx"
+#include "editutil.hxx"
+
+
+//------------------------------------------------------------------
+
+#if defined(MAC)
+const sal_Char __FAR_DATA ScExportBase::sNewLine = '\015';
+#elif defined(UNX)
+const sal_Char __FAR_DATA ScExportBase::sNewLine = '\012';
+#else
+const sal_Char __FAR_DATA ScExportBase::sNewLine[] = "\015\012";
+#endif
+
+
+ScExportBase::ScExportBase( SvStream& rStrmP, ScDocument* pDocP,
+ const ScRange& rRangeP )
+ :
+ rStrm( rStrmP ),
+ aRange( rRangeP ),
+ pDoc( pDocP ),
+ pFormatter( pDocP->GetFormatTable() ),
+ pEditEngine( NULL )
+{
+}
+
+
+ScExportBase::~ScExportBase()
+{
+ delete pEditEngine;
+}
+
+
+BOOL ScExportBase::GetDataArea( USHORT nTab, USHORT& nStartCol,
+ USHORT& nStartRow, USHORT& nEndCol, USHORT& nEndRow ) const
+{
+ pDoc->GetDataStart( nTab, nStartCol, nStartRow );
+ pDoc->GetPrintArea( nTab, nEndCol, nEndRow, TRUE );
+ return TrimDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow );
+}
+
+
+BOOL ScExportBase::TrimDataArea( USHORT nTab, USHORT& nStartCol,
+ USHORT& nStartRow, USHORT& nEndCol, USHORT& nEndRow ) const
+{
+ while ( nStartCol <= nEndCol &&
+ pDoc->GetColFlags( nStartCol, nTab ) & CR_HIDDEN )
+ ++nStartCol;
+ while ( nStartCol <= nEndCol &&
+ pDoc->GetColFlags( nEndCol, nTab ) & CR_HIDDEN )
+ --nEndCol;
+ while ( nStartRow <= nEndRow &&
+ pDoc->GetRowFlags( nStartRow, nTab ) & CR_HIDDEN )
+ ++nStartRow;
+ while ( nStartRow <= nEndRow &&
+ pDoc->GetRowFlags( nEndRow, nTab ) & CR_HIDDEN )
+ --nEndRow;
+ return nStartCol <= nEndCol && nStartRow <= nEndRow;
+}
+
+
+BOOL ScExportBase::IsEmptyTable( USHORT nTab ) const
+{
+ if ( !pDoc->HasTable( nTab ) )
+ return TRUE;
+ USHORT nStartCol, nStartRow, nEndCol, nEndRow;
+ return !GetDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow );
+}
+
+
+ScFieldEditEngine& ScExportBase::GetEditEngine() const
+{
+ if ( !pEditEngine )
+ ((ScExportBase*)this)->pEditEngine = new ScFieldEditEngine( pDoc->GetEditPool() );
+ return *pEditEngine;
+}
+
+
diff --git a/sc/source/filter/rtf/makefile.mk b/sc/source/filter/rtf/makefile.mk
new file mode 100644
index 000000000000..6889983b8513
--- /dev/null
+++ b/sc/source/filter/rtf/makefile.mk
@@ -0,0 +1,102 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=rtf
+
+AUTOSEG=true
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\pch\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ eeimpars.cxx \
+ expbase.cxx \
+ rtfexp.cxx \
+ rtfimp.cxx \
+ rtfparse.cxx
+
+
+
+SLOFILES = \
+ $(SLO)$/eeimpars.obj \
+ $(SLO)$/expbase.obj \
+ $(SLO)$/rtfexp.obj \
+ $(SLO)$/rtfimp.obj \
+ $(SLO)$/rtfparse.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/filter/rtf/rtfexp.cxx b/sc/source/filter/rtf/rtfexp.cxx
new file mode 100644
index 000000000000..1b7f41abfc0c
--- /dev/null
+++ b/sc/source/filter/rtf/rtfexp.cxx
@@ -0,0 +1,361 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtfexp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#include "scitems.hxx"
+#ifndef _SVX_ALGITEM_HXX //autogen
+#include <svx/algitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_POSTITEM_HXX //autogen
+#include <svx/postitem.hxx>
+#endif
+#ifndef _SVX_UDLNITEM_HXX //autogen
+#include <svx/udlnitem.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SFXSTYLE_HXX //autogen
+#include <svtools/style.hxx>
+#endif
+#ifndef _RTFOUT_HXX
+#include <svtools/rtfout.hxx>
+#endif
+#ifndef _RTFKEYWD_HXX
+#include <svtools/rtfkeywd.hxx>
+#endif
+
+#include "rtfexp.hxx"
+#include "filter.hxx"
+#include "flttools.hxx"
+#include "document.hxx"
+#include "patattr.hxx"
+#include "attrib.hxx"
+#include "cell.hxx"
+#include "cellform.hxx"
+#include "editutil.hxx"
+#include "stlpool.hxx"
+
+
+//------------------------------------------------------------------
+
+FltError ScExportRTF( SvStream& rStrm, ScDocument* pDoc,
+ const ScRange& rRange, const CharSet eNach )
+{
+ ScRTFExport aEx( rStrm, pDoc, rRange );
+ return aEx.Write();
+}
+
+
+ScRTFExport::ScRTFExport( SvStream& rStrmP, ScDocument* pDocP, const ScRange& rRangeP )
+ :
+ ScExportBase( rStrmP, pDocP, rRangeP ),
+ pCellX( new ULONG[ MAXCOL+2 ] )
+{
+}
+
+
+ScRTFExport::~ScRTFExport()
+{
+ delete [] pCellX;
+}
+
+
+ULONG ScRTFExport::Write()
+{
+ rStrm << '{' << sRTF_RTF;
+#ifdef MAC
+ rStrm << sRTF_MAC << sNewLine;
+#else
+ rStrm << sRTF_ANSI << sNewLine;
+#endif
+
+#if 0
+// das ist noch nicht ausgegoren
+/*
+ SfxStyleSheetBasePool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = NULL;
+ DBG_ASSERT( pStylePool, "StylePool not found! :-(" );
+ pStylePool->SetSearchMask( SFX_STYLE_FAMILY_PARA, SFXSTYLEBIT_ALL );
+ pStyleSheet = pStylePool->Find( STRING_STANDARD, SFX_STYLE_FAMILY_PARA );
+ DBG_ASSERT( pStyleSheet, "ParaStyle not found! :-(" );
+ const SfxItemSet& rSetPara = pStyleSheet->GetItemSet();
+
+ // fonttbl
+ String aFontFamilyName(
+ ((const SvxFontItem&)(rSetPara.Get( ATTR_FONT ))).GetFamilyName() );
+ rStrm << sRTF_DEFF << '0'
+ << '{' << sRTF_FONTTBL
+ << '{' << sRTF_F << '0' << sRTF_FNIL << ' ' << aFontFamilyName.GetStr() << ";}"
+ << '}' << sNewLine;
+
+ // hier kaeme die colortbl
+
+ // stylesheet
+ UINT32 nFontHeight =
+ ((const SvxFontHeightItem&)(rSetPara.Get( ATTR_FONT_HEIGHT ))).GetHeight();
+ rStrm << '{' << sRTF_STYLESHEET
+ << '{' << sRTF_FS << String( UINT32(nFontHeight / TWIPS_PER_POINT) ).GetStr()
+ << ' ' << pStyleSheet->GetName().GetStr() << ";}"
+ << '}' << sNewLine;
+*/
+#endif
+
+ // Daten
+ for ( USHORT nTab = aRange.aStart.Tab(); nTab <= aRange.aEnd.Tab(); nTab++ )
+ {
+ if ( nTab > aRange.aStart.Tab() )
+ rStrm << sRTF_PAR;
+ WriteTab( nTab );
+ }
+
+ rStrm << '}' << sNewLine;
+ return rStrm.GetError();
+}
+
+
+void ScRTFExport::WriteTab( USHORT nTab )
+{
+ rStrm << '{' << sNewLine;
+ if ( pDoc->HasTable( nTab ) )
+ {
+ memset( &pCellX[0], 0, (MAXCOL+2) * sizeof(ULONG) );
+ USHORT nCol;
+ USHORT nEndCol = aRange.aEnd.Col();
+ for ( nCol = aRange.aStart.Col(); nCol <= nEndCol; nCol++ )
+ {
+ pCellX[nCol+1] = pCellX[nCol] + pDoc->GetColWidth( nCol, nTab );
+ }
+
+ USHORT nEndRow = aRange.aEnd.Row();
+ for ( USHORT nRow = aRange.aStart.Row(); nRow <= nEndRow; nRow++ )
+ {
+ WriteRow( nTab, nRow );
+ }
+ }
+ rStrm << '}' << sNewLine;
+}
+
+
+void ScRTFExport::WriteRow( USHORT nTab, USHORT nRow )
+{
+ rStrm << sRTF_TROWD << sRTF_TRGAPH << "30" << sRTF_TRLEFT << "-30";
+ rStrm << sRTF_TRRH << ByteString::CreateFromInt32( pDoc->GetRowHeight( nRow, nTab ) ).GetBuffer();
+ USHORT nCol;
+ USHORT nEndCol = aRange.aEnd.Col();
+ for ( nCol = aRange.aStart.Col(); nCol <= nEndCol; nCol++ )
+ {
+ const ScPatternAttr* pAttr = pDoc->GetPattern( nCol, nRow, nTab );
+ const ScMergeAttr& rMergeAttr = (const ScMergeAttr&) pAttr->GetItem( ATTR_MERGE );
+ const SvxVerJustifyItem& rVerJustifyItem= (const SvxVerJustifyItem&)pAttr->GetItem( ATTR_VER_JUSTIFY );
+
+ const sal_Char* pChar;
+
+ if ( rMergeAttr.GetColMerge() )
+ rStrm << sRTF_CLMGF;
+ else
+ {
+ const ScMergeFlagAttr& rMergeFlagAttr = (const ScMergeFlagAttr&) pAttr->GetItem( ATTR_MERGE_FLAG );
+ if ( rMergeFlagAttr.IsHorOverlapped() )
+ rStrm << sRTF_CLMRG;
+ }
+
+ switch( rVerJustifyItem.GetValue() )
+ {
+ case SVX_VER_JUSTIFY_TOP: pChar = sRTF_CLVERTALT; break;
+ case SVX_VER_JUSTIFY_CENTER: pChar = sRTF_CLVERTALC; break;
+ case SVX_VER_JUSTIFY_BOTTOM: pChar = sRTF_CLVERTALB; break;
+ case SVX_VER_JUSTIFY_STANDARD: pChar = sRTF_CLVERTALB; break; //! Bottom
+ default: pChar = NULL; break;
+ }
+ if ( pChar )
+ rStrm << pChar;
+
+ rStrm << sRTF_CELLX << ByteString::CreateFromInt32( pCellX[nCol+1] ).GetBuffer();
+ if ( (nCol & 0x0F) == 0x0F )
+ rStrm << sNewLine; // Zeilen nicht zu lang werden lassen
+ }
+ rStrm << sRTF_PARD << sRTF_PLAIN << sRTF_INTBL << sNewLine;
+
+ ULONG nStrmPos = rStrm.Tell();
+ for ( nCol = aRange.aStart.Col(); nCol <= nEndCol; nCol++ )
+ {
+ WriteCell( nTab, nRow, nCol );
+ if ( rStrm.Tell() - nStrmPos > 255 )
+ { // Zeilen nicht zu lang werden lassen
+ rStrm << sNewLine;
+ nStrmPos = rStrm.Tell();
+ }
+ }
+ rStrm << sRTF_ROW << sNewLine;
+}
+
+
+void ScRTFExport::WriteCell( USHORT nTab, USHORT nRow, USHORT nCol )
+{
+ const ScPatternAttr* pAttr = pDoc->GetPattern( nCol, nRow, nTab );
+
+ const ScMergeFlagAttr& rMergeFlagAttr = (const ScMergeFlagAttr&) pAttr->GetItem( ATTR_MERGE_FLAG );
+ if ( rMergeFlagAttr.IsHorOverlapped() )
+ {
+ rStrm << sRTF_CELL;
+ return ;
+ }
+
+ ScBaseCell* pCell;
+ pDoc->GetCell( nCol, nRow, nTab, pCell );
+ BOOL bValueData;
+ String aContent;
+ if ( pCell )
+ {
+ switch ( pCell->GetCellType() )
+ {
+ case CELLTYPE_NOTE :
+ bValueData = FALSE;
+ break; // nix
+ case CELLTYPE_EDIT :
+ {
+ bValueData = FALSE;
+ EditEngine& rEngine = GetEditEngine();
+ const EditTextObject* pObj;
+ ((const ScEditCell*)pCell)->GetData( pObj );
+ if ( pObj )
+ {
+ rEngine.SetText( *pObj );
+ aContent = rEngine.GetText( LINEEND_LF ); // LineFeed zwischen Absaetzen!
+ }
+ }
+ break;
+ default:
+ {
+ bValueData = pCell->HasValueData();
+ ULONG nFormat = pAttr->GetNumberFormat( pFormatter );
+ Color* pColor;
+ ScCellFormat::GetString( pCell, nFormat, aContent, &pColor, *pFormatter );
+ }
+ }
+ }
+ else
+ bValueData = FALSE;
+
+ BOOL bResetPar, bResetAttr;
+ bResetPar = bResetAttr = FALSE;
+
+ const SvxHorJustifyItem& rHorJustifyItem = (const SvxHorJustifyItem&)pAttr->GetItem( ATTR_HOR_JUSTIFY );
+ const SvxWeightItem& rWeightItem = (const SvxWeightItem&) pAttr->GetItem( ATTR_FONT_WEIGHT );
+ const SvxPostureItem& rPostureItem = (const SvxPostureItem&) pAttr->GetItem( ATTR_FONT_POSTURE );
+ const SvxUnderlineItem& rUnderlineItem = (const SvxUnderlineItem&) pAttr->GetItem( ATTR_FONT_UNDERLINE );
+
+ const sal_Char* pChar;
+
+ switch( rHorJustifyItem.GetValue() )
+ {
+ case SVX_HOR_JUSTIFY_STANDARD:
+ pChar = (bValueData ? sRTF_QR : sRTF_QL);
+ break;
+ case SVX_HOR_JUSTIFY_CENTER: pChar = sRTF_QC; break;
+ case SVX_HOR_JUSTIFY_BLOCK: pChar = sRTF_QJ; break;
+ case SVX_HOR_JUSTIFY_RIGHT: pChar = sRTF_QR; break;
+ case SVX_HOR_JUSTIFY_LEFT:
+ case SVX_HOR_JUSTIFY_REPEAT:
+ default: pChar = sRTF_QL; break;
+ }
+ rStrm << pChar;
+
+ if ( rWeightItem.GetWeight() >= WEIGHT_BOLD )
+ { // bold
+ bResetAttr = TRUE;
+ rStrm << sRTF_B;
+ }
+ if ( rPostureItem.GetPosture() != ITALIC_NONE )
+ { // italic
+ bResetAttr = TRUE;
+ rStrm << sRTF_I;
+ }
+ if ( rUnderlineItem.GetUnderline() != UNDERLINE_NONE )
+ { // underline
+ bResetAttr = TRUE;
+ rStrm << sRTF_UL;
+ }
+
+ rStrm << ' ';
+ RTFOutFuncs::Out_String( rStrm, aContent );
+ rStrm << sRTF_CELL;
+
+ if ( bResetPar )
+ rStrm << sRTF_PARD << sRTF_INTBL;
+ if ( bResetAttr )
+ rStrm << sRTF_PLAIN;
+}
+
+
diff --git a/sc/source/filter/rtf/rtfimp.cxx b/sc/source/filter/rtf/rtfimp.cxx
new file mode 100644
index 000000000000..d7f1e3e118df
--- /dev/null
+++ b/sc/source/filter/rtf/rtfimp.cxx
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtfimp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include "global.hxx"
+#include "document.hxx"
+#include "filter.hxx"
+#endif
+
+#ifndef SC_EDITUTIL_HXX
+#include "editutil.hxx"
+#endif
+#include "rtfimp.hxx"
+#include "rtfparse.hxx"
+
+
+FltError ScImportRTF( SvStream &rStream, ScDocument *pDoc, ScRange& rRange )
+{
+ ScRTFImport aImp( pDoc, rRange );
+ FltError nErr = (FltError) aImp.Read( rStream );
+ ScRange aR = aImp.GetRange();
+ rRange.aEnd = aR.aEnd;
+ aImp.WriteToDocument();
+ return nErr;
+}
+
+
+ScRTFImport::ScRTFImport( ScDocument* pDocP, const ScRange& rRange ) :
+ ScEEImport( pDocP, rRange )
+{
+ pParser = new ScRTFParser( pEngine );
+}
+
+
+ScRTFImport::~ScRTFImport()
+{
+ // Reihenfolge wichtig, sonst knallt's irgendwann irgendwo in irgendeinem Dtor!
+ // Ist gewaehrleistet, da ScEEImport Basisklasse ist
+ delete (ScRTFParser*) pParser; // vor EditEngine!
+}
+
+
+
diff --git a/sc/source/filter/rtf/rtfparse.cxx b/sc/source/filter/rtf/rtfparse.cxx
new file mode 100644
index 000000000000..090140b09463
--- /dev/null
+++ b/sc/source/filter/rtf/rtfparse.cxx
@@ -0,0 +1,450 @@
+/*************************************************************************
+ *
+ * $RCSfile: rtfparse.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/eeitem.hxx>
+#include <svx/editeng.hxx>
+#include <svx/fhgtitem.hxx>
+#include <svx/svxrtf.hxx>
+#include <vcl/outdev.hxx>
+#include <svtools/rtftoken.h>
+
+#define SC_RTFPARSE_CXX
+#include "rtfparse.hxx"
+#include "global.hxx"
+#include "document.hxx"
+#include "docpool.hxx"
+
+#define SC_RTFTWIPTOL 10 // 10 Twips Toleranz bei Spaltenbestimmung
+
+
+
+SV_IMPL_VARARR_SORT( ScRTFColTwips, ULONG );
+
+
+
+ScRTFParser::ScRTFParser( EditEngine* pEditP ) :
+ ScEEParser( pEditP ),
+ pDefaultList( new ScRTFDefaultList ),
+ pColTwips( new ScRTFColTwips ),
+ pActDefault( NULL ),
+ pDefMerge( NULL ),
+ nStartAdjust( (ULONG)~0 ),
+ nLastWidth(0),
+ bNewDef( FALSE )
+{
+ // RTF default FontSize 12Pt
+ long nMM = OutputDevice::LogicToLogic( 12, MAP_POINT, MAP_100TH_MM );
+ pPool->SetPoolDefaultItem( SvxFontHeightItem( nMM, 100, EE_CHAR_FONTHEIGHT ) );
+ // freifliegender pInsDefault
+ pInsDefault = new ScRTFCellDefault( pPool );
+}
+
+
+ScRTFParser::~ScRTFParser()
+{
+ delete pInsDefault;
+ delete pColTwips;
+ for ( ScRTFCellDefault* pD = pDefaultList->First(); pD; pD = pDefaultList->Next() )
+ delete pD;
+ delete pDefaultList;
+}
+
+
+ULONG ScRTFParser::Read( SvStream& rStream )
+{
+ Link aOldLink = pEdit->GetImportHdl();
+ pEdit->SetImportHdl( LINK( this, ScRTFParser, RTFImportHdl ) );
+ ULONG nErr = pEdit->Read( rStream, EE_FORMAT_RTF );
+ if ( nLastToken == RTF_PAR )
+ {
+ ScEEParseEntry* pE = pList->Last();
+ if ( pE
+ // komplett leer
+ && (( pE->aSel.nStartPara == pE->aSel.nEndPara
+ && pE->aSel.nStartPos == pE->aSel.nEndPos)
+ // leerer Paragraph
+ || ( pE->aSel.nStartPara + 1 == pE->aSel.nEndPara
+ && pE->aSel.nStartPos == pEdit->GetTextLen( pE->aSel.nStartPara )
+ && pE->aSel.nEndPos == 0 )) )
+ { // den letzten leeren Absatz nicht uebernehmen
+ pList->Remove();
+ delete pE;
+ }
+ }
+ ColAdjust();
+ pEdit->SetImportHdl( aOldLink );
+ return nErr;
+}
+
+
+void ScRTFParser::EntryEnd( ScEEParseEntry* pE, const ESelection& aSel )
+{
+ // Paragraph -2 stript den angehaengten leeren Paragraph
+ pE->aSel.nEndPara = aSel.nEndPara - 2;
+ // obwohl das nEndPos heisst, ist das letzte Position + 1
+ pE->aSel.nEndPos = pEdit->GetTextLen( aSel.nEndPara - 1 );
+}
+
+
+inline void ScRTFParser::NextRow()
+{
+ if ( nRowMax < ++nRowCnt )
+ nRowMax = nRowCnt;
+}
+
+
+BOOL ScRTFParser::SeekTwips( USHORT nTwips, USHORT* pCol )
+{
+ if ( pColTwips->Seek_Entry( nTwips, pCol ) )
+ return TRUE;
+ USHORT nCount = pColTwips->Count();
+ if ( !nCount )
+ return FALSE;
+ USHORT nCol = *pCol;
+ // nCol ist Einfuegeposition, da liegt der Naechsthoehere (oder auch nicht)
+ if ( nCol < nCount && (((*pColTwips)[nCol] - SC_RTFTWIPTOL) <= nTwips) )
+ return TRUE;
+ // nicht kleiner als alles andere? dann mit Naechstniedrigerem vergleichen
+ else if ( nCol && (((*pColTwips)[nCol-1] + SC_RTFTWIPTOL) >= nTwips) )
+ {
+ (*pCol)--;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+void ScRTFParser::ColAdjust()
+{
+ if ( nStartAdjust != (ULONG)~0 )
+ {
+ USHORT nCol = 0;
+ ScEEParseEntry* pE;
+ pE = pList->Seek( nStartAdjust );
+ while ( pE )
+ {
+ if ( pE->nCol == 0 )
+ nCol = 0;
+ pE->nCol = nCol;
+ if ( pE->nColOverlap > 1 )
+ nCol += pE->nColOverlap; // merged cells mit \clmrg
+ else
+ {
+ SeekTwips( pE->nTwips, &nCol );
+ if ( ++nCol <= pE->nCol )
+ nCol = pE->nCol + 1; // verschobene Zell-X
+ pE->nColOverlap = nCol - pE->nCol; // merged cells ohne \clmrg
+ }
+ if ( nCol > nColMax )
+ nColMax = nCol;
+ pE = pList->Next();
+ }
+ nStartAdjust = (ULONG)~0;
+ pColTwips->Remove( (USHORT)0, pColTwips->Count() );
+ }
+}
+
+
+IMPL_LINK( ScRTFParser, RTFImportHdl, ImportInfo*, pInfo )
+{
+ switch ( pInfo->eState )
+ {
+ case RTFIMP_NEXTTOKEN:
+ ProcToken( pInfo );
+ break;
+ case RTFIMP_UNKNOWNATTR:
+ ProcToken( pInfo );
+ break;
+ case RTFIMP_START:
+ {
+ SvxRTFParser* pParser = (SvxRTFParser*) pInfo->pParser;
+ pParser->SetAttrPool( pPool );
+ RTFPardAttrMapIds& rMap = pParser->GetPardMap();
+ rMap.nBrush = ATTR_BACKGROUND;
+ rMap.nBox = ATTR_BORDER;
+ rMap.nShadow = ATTR_SHADOW;
+ }
+ break;
+ case RTFIMP_END:
+ if ( pInfo->aSelection.nEndPos )
+ { // falls noch Text: letzten Absatz erzeugen
+ pActDefault = NULL;
+ pInfo->nToken = RTF_PAR;
+ // EditEngine hat keinen leeren Paragraph mehr angehaengt
+ // den EntryEnd strippen koennte
+ pInfo->aSelection.nEndPara++;
+ ProcToken( pInfo );
+ }
+ break;
+ case RTFIMP_SETATTR:
+ break;
+ case RTFIMP_INSERTTEXT:
+ break;
+ case RTFIMP_INSERTPARA:
+ break;
+ default:
+ DBG_ERRORFILE("unknown ImportInfo.eState");
+ }
+ return 0;
+}
+
+
+// bei RTF_INTBL bzw. am Anfang von erstem RTF_CELL nach RTF_CELLX wenn es
+// kein RTF_INTBL gab, bad behavior
+void ScRTFParser::NewCellRow( ImportInfo* pInfo )
+{
+ if ( bNewDef )
+ {
+ ScRTFCellDefault* pD;
+ bNewDef = FALSE;
+ // rechts nicht buendig? => neue Tabelle
+ if ( nLastWidth
+ && (pD = pDefaultList->Last()) && pD->nTwips != nLastWidth )
+ {
+ USHORT n1, n2;
+ if ( !( SeekTwips( nLastWidth, &n1 )
+ && SeekTwips( pD->nTwips, &n2 ) && n1 == n2) )
+ ColAdjust();
+ }
+ // TwipCols aufbauen, erst nach nLastWidth Vergleich!
+ for ( pD = pDefaultList->First(); pD; pD = pDefaultList->Next() )
+ {
+ USHORT n;
+ if ( !SeekTwips( pD->nTwips, &n ) )
+ pColTwips->Insert( pD->nTwips );
+ }
+ }
+ pDefMerge = NULL;
+ pActDefault = pDefaultList->First();
+ DBG_ASSERT( pActDefault, "NewCellRow: pActDefault==0" );
+}
+
+
+/*
+ SW:
+ ~~~
+ [\par]
+ \trowd \cellx \cellx ...
+ \intbl \cell \cell ...
+ \row
+ [\par]
+ [\trowd \cellx \cellx ...]
+ \intbl \cell \cell ...
+ \row
+ [\par]
+
+ M$-Word:
+ ~~~~~~~~
+ [\par]
+ \trowd \cellx \cellx ...
+ \intbl \cell \cell ...
+ \intbl \row
+ [\par]
+ [\trowd \cellx \cellx ...]
+ \intbl \cell \cell ...
+ \intbl \row
+ [\par]
+
+ */
+
+void ScRTFParser::ProcToken( ImportInfo* pInfo )
+{
+ ScRTFCellDefault* pD;
+ ScEEParseEntry* pE;
+ switch ( pInfo->nToken )
+ {
+ case RTF_TROWD: // TableROWDefault, vor erstem RTF_CELLX
+ {
+ if ( pD = pDefaultList->Last() )
+ nLastWidth = pD->nTwips;
+ nColCnt = 0;
+ for ( pD = pDefaultList->First(); pD; pD = pDefaultList->Next() )
+ delete pD;
+ pDefaultList->Clear();
+ pDefMerge = NULL;
+ nLastToken = pInfo->nToken;
+ }
+ break;
+ case RTF_CLMGF: // CeLlMerGeFirst, die MergeCell
+ {
+ pDefMerge = pInsDefault;
+ nLastToken = pInfo->nToken;
+ }
+ break;
+ case RTF_CLMRG: // CeLlMeRGe, Zelle mit vorheriger merged
+ {
+ if ( !pDefMerge )
+ pDefMerge = pDefaultList->Last();
+ DBG_ASSERT( pDefMerge, "RTF_CLMRG: pDefMerge==0" );
+ if ( pDefMerge ) // sonst rottes RTF
+ pDefMerge->nColOverlap++; // mehrere nacheinander moeglich
+ pInsDefault->nColOverlap = 0; // Flag: ignoriere diese
+ nLastToken = pInfo->nToken;
+ }
+ break;
+ case RTF_CELLX: // schliesst Zelldefault
+ {
+ bNewDef = TRUE;
+ pInsDefault->nCol = nColCnt;
+ pInsDefault->nTwips = pInfo->nTokenValue; // rechter Zellenrand
+ pDefaultList->Insert( pInsDefault, LIST_APPEND );
+ // neuer freifliegender pInsDefault
+ pInsDefault = new ScRTFCellDefault( pPool );
+ if ( ++nColCnt > nColMax )
+ nColMax = nColCnt;
+ nLastToken = pInfo->nToken;
+ }
+ break;
+ case RTF_INTBL: // vor erstem RTF_CELL
+ {
+ // einmal ueber NextToken und einmal ueber UnknownAttrToken
+ // oder z.B. \intbl ... \cell \pard \intbl ... \cell
+ if ( nLastToken != RTF_INTBL && nLastToken != RTF_CELL )
+ {
+ NewCellRow( pInfo );
+ nLastToken = pInfo->nToken;
+ }
+ }
+ break;
+ case RTF_CELL: // schliesst Zelle
+ {
+ DBG_ASSERT( pActDefault, "RTF_CELL: pActDefault==0" );
+ if ( bNewDef || !pActDefault )
+ NewCellRow( pInfo ); // davor war kein \intbl, bad behavior
+ // rottes RTF? retten was zu retten ist
+ if ( !pActDefault )
+ pActDefault = pInsDefault;
+ if ( pActDefault->nColOverlap > 0 )
+ { // nicht merged mit vorheriger
+ pActEntry->nCol = pActDefault->nCol;
+ pActEntry->nColOverlap = pActDefault->nColOverlap;
+ pActEntry->nTwips = pActDefault->nTwips;
+ pActEntry->nRow = nRowCnt;
+ pActEntry->aItemSet.Set( pActDefault->aItemSet );
+ EntryEnd( pActEntry, pInfo->aSelection );
+
+ if ( nStartAdjust == (ULONG)~0 )
+ nStartAdjust = pList->Count();
+ pList->Insert( pActEntry, LIST_APPEND );
+ NewActEntry( pActEntry ); // neuer freifliegender pActEntry
+ }
+ else
+ { // aktuelle Twips der MergeCell zuweisen
+ if ( pE = pList->Last() )
+ pE->nTwips = pActDefault->nTwips;
+ // Selection des freifliegenden pActEntry anpassen
+ // Paragraph -1 wg. Textaufbruch in EditEngine waehrend Parse
+ pActEntry->aSel.nStartPara = pInfo->aSelection.nEndPara - 1;
+ }
+ pActDefault = pDefaultList->Next();
+ nLastToken = pInfo->nToken;
+ }
+ break;
+ case RTF_ROW: // nach letzter Zelle in Row
+ {
+ NextRow();
+ nLastToken = pInfo->nToken;
+ }
+ break;
+ case RTF_PAR: // Paragraph
+ {
+ if ( !pActDefault )
+ { // Text nicht in Tabelle
+ ColAdjust(); // bisherige Tabelle beenden
+ pActEntry->nCol = 0;
+ pActEntry->nRow = nRowCnt;
+ EntryEnd( pActEntry, pInfo->aSelection );
+ pList->Insert( pActEntry, LIST_APPEND );
+ NewActEntry( pActEntry ); // neuer freifliegender pActEntry
+ NextRow();
+ }
+ nLastToken = pInfo->nToken;
+ }
+ break;
+ default:
+ { // nLastToken nicht setzen!
+ switch ( pInfo->nToken & ~(0xff | RTF_TABLEDEF) )
+ {
+ case RTF_SHADINGDEF:
+ ((SvxRTFParser*)pInfo->pParser)->ReadBackgroundAttr(
+ pInfo->nToken, pInsDefault->aItemSet, TRUE );
+ break;
+ case RTF_BRDRDEF:
+ ((SvxRTFParser*)pInfo->pParser)->ReadBorderAttr(
+ pInfo->nToken, pInsDefault->aItemSet, TRUE );
+ break;
+ }
+ }
+ }
+}
+
+
+
+
diff --git a/sc/source/filter/starcalc/makefile.mk b/sc/source/filter/starcalc/makefile.mk
new file mode 100644
index 000000000000..3e7bfa281033
--- /dev/null
+++ b/sc/source/filter/starcalc/makefile.mk
@@ -0,0 +1,96 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=scflt
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\pch\filt_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ scflt.cxx \
+ scfobj.cxx
+
+
+
+SLOFILES = \
+ $(SLO)$/scflt.obj \
+ $(SLO)$/scfobj.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/filter/starcalc/scflt.cxx b/sc/source/filter/starcalc/scflt.cxx
new file mode 100644
index 000000000000..4426e49ad002
--- /dev/null
+++ b/sc/source/filter/starcalc/scflt.cxx
@@ -0,0 +1,2568 @@
+/*************************************************************************
+ *
+ * $RCSfile: scflt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/algitem.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/brshitem.hxx>
+#include <svx/colritem.hxx>
+#include <svx/crsditem.hxx>
+#include <svx/editdata.hxx>
+#include <svx/editeng.hxx>
+#include <svx/editobj.hxx>
+#include <svx/eeitem.hxx>
+#include <svx/fhgtitem.hxx>
+#include <svx/fontitem.hxx>
+#include <svx/lrspitem.hxx>
+#include <svx/pageitem.hxx>
+#include <svx/postitem.hxx>
+#include <svx/sizeitem.hxx>
+#include <svx/udlnitem.hxx>
+#include <svx/ulspitem.hxx>
+#include <svx/wghtitem.hxx>
+#include <svtools/zforlist.hxx>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+
+#include "global.hxx"
+#include "sc.hrc"
+#include "attrib.hxx"
+#include "patattr.hxx"
+#include "docpool.hxx"
+#include "document.hxx"
+#include "collect.hxx"
+#include "rangenam.hxx"
+#include "dbcolect.hxx"
+#include "stlsheet.hxx"
+#include "stlpool.hxx"
+#include "filter.hxx"
+#include "scflt.hxx"
+#include "cell.hxx"
+#include "scfobj.hxx"
+#include "docoptio.hxx"
+#include "viewopti.hxx"
+#include "fltprgrs.hxx"
+#include "globstr.hrc"
+
+
+#define DEFCHARSET RTL_TEXTENCODING_MS_1252
+
+#define SC10TOSTRING(p) String(p,DEFCHARSET)
+
+
+extern double ReadLongDouble( SvStream& rStr ); // -> exctools.cxx
+
+
+
+void lcl_ReadDateTime(SvStream& rStream, Sc10DateTime& rDateTime)
+{
+ rStream >> rDateTime.Year;
+ rStream >> rDateTime.Month;
+ rStream >> rDateTime.Day;
+ rStream >> rDateTime.Hour;
+ rStream >> rDateTime.Min;
+ rStream >> rDateTime.Sec;
+}
+
+
+void lcl_ReadFileHeader(SvStream& rStream, Sc10FileHeader& rFileHeader)
+{
+ rStream.Read(&rFileHeader.CopyRight, sizeof(rFileHeader.CopyRight));
+ rStream >> rFileHeader.Version;
+ rStream.Read(&rFileHeader.Reserved, sizeof(rFileHeader.Reserved));
+}
+
+
+void lcl_ReadFileInfo(SvStream& rStream, Sc10FileInfo& rFileInfo)
+{
+ rStream.Read(&rFileInfo.Title, sizeof(rFileInfo.Title));
+ rStream.Read(&rFileInfo.Thema, sizeof(rFileInfo.Thema));
+ rStream.Read(&rFileInfo.Keys, sizeof(rFileInfo.Keys));
+ rStream.Read(&rFileInfo.Note, sizeof(rFileInfo.Note));
+ rStream.Read(&rFileInfo.InfoLabel0, sizeof(rFileInfo.InfoLabel0));
+ rStream.Read(&rFileInfo.InfoLabel1, sizeof(rFileInfo.InfoLabel1));
+ rStream.Read(&rFileInfo.InfoLabel2, sizeof(rFileInfo.InfoLabel2));
+ rStream.Read(&rFileInfo.InfoLabel3, sizeof(rFileInfo.InfoLabel3));
+ rStream.Read(&rFileInfo.Info0, sizeof(rFileInfo.Info0));
+ rStream.Read(&rFileInfo.Info1, sizeof(rFileInfo.Info1));
+ rStream.Read(&rFileInfo.Info2, sizeof(rFileInfo.Info2));
+ rStream.Read(&rFileInfo.Info3, sizeof(rFileInfo.Info3));
+ rStream.Read(&rFileInfo.CreateAuthor, sizeof(rFileInfo.CreateAuthor));
+ rStream.Read(&rFileInfo.ChangeAuthor, sizeof(rFileInfo.ChangeAuthor));
+ rStream.Read(&rFileInfo.PrintAuthor, sizeof(rFileInfo.PrintAuthor));
+ lcl_ReadDateTime(rStream, rFileInfo.CreateDate);
+ lcl_ReadDateTime(rStream, rFileInfo.ChangeDate);
+ lcl_ReadDateTime(rStream, rFileInfo.PrintDate);
+ rStream >> rFileInfo.PageCount;
+ rStream >> rFileInfo.ChartCount;
+ rStream >> rFileInfo.PictureCount;
+ rStream >> rFileInfo.GraphCount;
+ rStream >> rFileInfo.OleCount;
+ rStream >> rFileInfo.NoteCount;
+ rStream >> rFileInfo.TextCellCount;
+ rStream >> rFileInfo.ValueCellCount;
+ rStream >> rFileInfo.FormulaCellCount;
+ rStream >> rFileInfo.CellCount;
+ rStream.Read(rFileInfo.Reserved, sizeof(rFileInfo.Reserved));
+}
+
+
+void lcl_ReadEditStateInfo(SvStream& rStream, Sc10EditStateInfo& rInfo)
+{
+ rStream >> rInfo.CarretX;
+ rStream >> rInfo.CarretY;
+ rStream >> rInfo.CarretZ;
+
+ rStream >> rInfo.DeltaX;
+ rStream >> rInfo.DeltaY;
+ rStream >> rInfo.DeltaZ;
+
+ rStream >> rInfo.DataBaseMode;
+ rStream.Read(rInfo.Reserved, sizeof(rInfo.Reserved));
+}
+
+
+void lcl_ReadTabProtect(SvStream& rStream, Sc10TableProtect& rProtect)
+{
+ rStream.Read(&rProtect.PassWord, sizeof(rProtect.PassWord));
+ rStream >> rProtect.Flags;
+ rStream >> rProtect.Protect;
+}
+
+
+void lcl_ReadSheetProtect(SvStream& rStream, Sc10SheetProtect& rProtect)
+{
+ rStream.Read(&rProtect.PassWord, sizeof(rProtect.PassWord));
+ rStream >> rProtect.Flags;
+ rStream >> rProtect.Protect;
+}
+
+
+void lcl_ReadRGB(SvStream& rStream, Sc10Color& rColor)
+{
+ rStream >> rColor.Dummy;
+ rStream >> rColor.Blue;
+ rStream >> rColor.Green;
+ rStream >> rColor.Red;
+}
+
+
+void lcl_ReadPalette(SvStream& rStream, Sc10Color* pPalette)
+{
+ for (USHORT i = 0; i < 16; i++)
+ lcl_ReadRGB(rStream, pPalette[i]);
+}
+
+
+void lcl_ReadValueFormat(SvStream& rStream, Sc10ValueFormat& rFormat)
+{
+ rStream >> rFormat.Format;
+ rStream >> rFormat.Info;
+}
+
+
+void lcl_ReadLogFont(SvStream& rStream, Sc10LogFont& rFont)
+{
+ rStream >> rFont.lfHeight;
+ rStream >> rFont.lfWidth;
+ rStream >> rFont.lfEscapement;
+ rStream >> rFont.lfOrientation;
+ rStream >> rFont.lfWeight;
+ rStream >> rFont.lfItalic;
+ rStream >> rFont.lfUnderline;
+ rStream >> rFont.lfStrikeOut;
+ rStream >> rFont.lfCharSet;
+ rStream >> rFont.lfOutPrecision;
+ rStream >> rFont.lfClipPrecision;
+ rStream >> rFont.lfQuality;
+ rStream >> rFont.lfPitchAndFamily;
+ rStream.Read(&rFont.lfFaceName, sizeof(rFont.lfFaceName));
+}
+
+
+void lcl_ReadBlockRect(SvStream& rStream, Sc10BlockRect& rBlock)
+{
+ rStream >> rBlock.x1;
+ rStream >> rBlock.y1;
+ rStream >> rBlock.x2;
+ rStream >> rBlock.y2;
+}
+
+
+void lcl_ReadHeadFootLine(SvStream& rStream, Sc10HeadFootLine& rLine)
+{
+ rStream.Read(&rLine.Title, sizeof(rLine.Title));
+ lcl_ReadLogFont(rStream, rLine.LogFont);
+ rStream >> rLine.HorJustify;
+ rStream >> rLine.VerJustify;
+ rStream >> rLine.Raster;
+ rStream >> rLine.Frame;
+ lcl_ReadRGB(rStream, rLine.TextColor);
+ lcl_ReadRGB(rStream, rLine.BackColor);
+ lcl_ReadRGB(rStream, rLine.RasterColor);
+ rStream >> rLine.FrameColor;
+ rStream >> rLine.Reserved;
+}
+
+
+void lcl_ReadPageFormat(SvStream& rStream, Sc10PageFormat& rFormat)
+{
+ lcl_ReadHeadFootLine(rStream, rFormat.HeadLine);
+ lcl_ReadHeadFootLine(rStream, rFormat.FootLine);
+ rStream >> rFormat.Orientation;
+ rStream >> rFormat.Width;
+ rStream >> rFormat.Height;
+ rStream >> rFormat.NonPrintableX;
+ rStream >> rFormat.NonPrintableY;
+ rStream >> rFormat.Left;
+ rStream >> rFormat.Top;
+ rStream >> rFormat.Right;
+ rStream >> rFormat.Bottom;
+ rStream >> rFormat.Head;
+ rStream >> rFormat.Foot;
+ rStream >> rFormat.HorCenter;
+ rStream >> rFormat.VerCenter;
+ rStream >> rFormat.PrintGrid;
+ rStream >> rFormat.PrintColRow;
+ rStream >> rFormat.PrintNote;
+ rStream >> rFormat.TopBottomDir;
+ rStream.Read(&rFormat.PrintAreaName, sizeof(rFormat.PrintAreaName));
+ lcl_ReadBlockRect(rStream, rFormat.PrintArea);
+ rStream.Read(&rFormat.PrnZoom, sizeof(rFormat.PrnZoom));
+ rStream >> rFormat.FirstPageNo;
+ rStream >> rFormat.RowRepeatStart;
+ rStream >> rFormat.RowRepeatEnd;
+ rStream >> rFormat.ColRepeatStart;
+ rStream >> rFormat.ColRepeatEnd;
+ rStream.Read(&rFormat.Reserved, sizeof(rFormat.Reserved));
+}
+
+
+void lcl_ReadGraphHeader(SvStream& rStream, Sc10GraphHeader& rHeader)
+{
+ rStream >> rHeader.Typ;
+ rStream >> rHeader.CarretX;
+ rStream >> rHeader.CarretY;
+ rStream >> rHeader.CarretZ;
+ rStream >> rHeader.x;
+ rStream >> rHeader.y;
+ rStream >> rHeader.w;
+ rStream >> rHeader.h;
+ rStream >> rHeader.IsRelPos;
+ rStream >> rHeader.DoPrint;
+ rStream >> rHeader.FrameType;
+ rStream >> rHeader.IsTransparent;
+ lcl_ReadRGB(rStream, rHeader.FrameColor);
+ lcl_ReadRGB(rStream, rHeader.BackColor);
+ rStream.Read(&rHeader.Reserved, sizeof(rHeader.Reserved));
+}
+
+
+void lcl_ReadImageHeaer(SvStream& rStream, Sc10ImageHeader& rHeader)
+{
+ rStream.Read(&rHeader.FileName, sizeof(rHeader.FileName));
+ rStream >> rHeader.Typ;
+ rStream >> rHeader.Linked;
+ rStream >> rHeader.x1;
+ rStream >> rHeader.y1;
+ rStream >> rHeader.x2;
+ rStream >> rHeader.y2;
+ rStream >> rHeader.Size;
+}
+
+
+void lcl_ReadChartHeader(SvStream& rStream, Sc10ChartHeader& rHeader)
+{
+ rStream >> rHeader.MM;
+ rStream >> rHeader.xExt;
+ rStream >> rHeader.yExt;
+ rStream >> rHeader.Size;
+}
+
+
+void lcl_ReadChartSheetData(SvStream& rStream, Sc10ChartSheetData& rSheetData)
+{
+ rStream >> rSheetData.HasTitle;
+ rStream >> rSheetData.TitleX;
+ rStream >> rSheetData.TitleY;
+ rStream >> rSheetData.HasSubTitle;
+ rStream >> rSheetData.SubTitleX;
+ rStream >> rSheetData.SubTitleY;
+ rStream >> rSheetData.HasLeftTitle;
+ rStream >> rSheetData.LeftTitleX;
+ rStream >> rSheetData.LeftTitleY;
+ rStream >> rSheetData.HasLegend;
+ rStream >> rSheetData.LegendX1;
+ rStream >> rSheetData.LegendY1;
+ rStream >> rSheetData.LegendX2;
+ rStream >> rSheetData.LegendY2;
+ rStream >> rSheetData.HasLabel;
+ rStream >> rSheetData.LabelX1;
+ rStream >> rSheetData.LabelY1;
+ rStream >> rSheetData.LabelX2;
+ rStream >> rSheetData.LabelY2;
+ rStream >> rSheetData.DataX1;
+ rStream >> rSheetData.DataY1;
+ rStream >> rSheetData.DataX2;
+ rStream >> rSheetData.DataY2;
+ rStream.Read(&rSheetData.Reserved, sizeof(rSheetData.Reserved));
+}
+
+
+void lcl_ReadChartTypeData(SvStream& rStream, Sc10ChartTypeData& rTypeData)
+{
+ rStream >> rTypeData.NumSets;
+ rStream >> rTypeData.NumPoints;
+ rStream >> rTypeData.DrawMode;
+ rStream >> rTypeData.GraphType;
+ rStream >> rTypeData.GraphStyle;
+ rStream.Read(&rTypeData.GraphTitle, sizeof(rTypeData.GraphTitle));
+ rStream.Read(&rTypeData.BottomTitle, sizeof(rTypeData.BottomTitle));
+ USHORT i;
+ for (i = 0; i < 256; i++)
+ rStream >> rTypeData.SymbolData[i];
+ for (i = 0; i < 256; i++)
+ rStream >> rTypeData.ColorData[i];
+ for (i = 0; i < 256; i++)
+ rStream >> rTypeData.ThickLines[i];
+ for (i = 0; i < 256; i++)
+ rStream >> rTypeData.PatternData[i];
+ for (i = 0; i < 256; i++)
+ rStream >> rTypeData.LinePatternData[i];
+ for (i = 0; i < 11; i++)
+ rStream >> rTypeData.NumGraphStyles[i];
+ rStream >> rTypeData.ShowLegend;
+ for (i = 0; i < 256; i++)
+ rStream.Read(&rTypeData.LegendText[i], sizeof(Sc10ChartText));
+ rStream >> rTypeData.ExplodePie;
+ rStream >> rTypeData.FontUse;
+ for (i = 0; i < 5; i++)
+ rStream >> rTypeData.FontFamily[i];
+ for (i = 0; i < 5; i++)
+ rStream >> rTypeData.FontStyle[i];
+ for (i = 0; i < 5; i++)
+ rStream >> rTypeData.FontSize[i];
+ rStream >> rTypeData.GridStyle;
+ rStream >> rTypeData.Labels;
+ rStream >> rTypeData.LabelEvery;
+ for (i = 0; i < 50; i++)
+ rStream.Read(&rTypeData.LabelText[i], sizeof(Sc10ChartText));
+ rStream.Read(&rTypeData.LeftTitle, sizeof(rTypeData.LeftTitle));
+ rStream.Read(&rTypeData.Reserved, sizeof(rTypeData.Reserved));
+ //rStream.Read(&rTypeData, sizeof(rTypeData));
+}
+
+//! funktioniert das auf allen Systemen ???
+
+double lcl_PascalToDouble(sal_Char* tp6)
+{
+ struct
+ {
+ UINT8 be ; /* biased exponent */
+ unsigned int v1 ; /* lower 16 bits of mantissa */
+ unsigned int v2 ; /* next 16 bits of mantissa */
+ unsigned int v3:7; /* upper 7 bits of mantissa */
+ unsigned int s :1; /* sign bit */
+ } real;
+
+ memcpy (&real, tp6, 6);
+ if (real.be == 0)
+ return 0.0;
+ return (((((128 +real.v3) * 65536.0) + real.v2) * 65536.0 + real.v1) *
+ ldexp ((real.s? -1.0: 1.0), real.be - (129+39)));
+}
+
+
+void lcl_ChangeColor( USHORT nIndex, Color& rColor )
+{
+ ColorData aCol;
+
+ switch( nIndex )
+ {
+ case 1: aCol = COL_RED; break;
+ case 2: aCol = COL_GREEN; break;
+ case 3: aCol = COL_BROWN; break;
+ case 4: aCol = COL_BLUE; break;
+ case 5: aCol = COL_MAGENTA; break;
+ case 6: aCol = COL_CYAN; break;
+ case 7: aCol = COL_GRAY; break;
+ case 8: aCol = COL_LIGHTGRAY; break;
+ case 9: aCol = COL_LIGHTRED; break;
+ case 10: aCol = COL_LIGHTGREEN; break;
+ case 11: aCol = COL_YELLOW; break;
+ case 12: aCol = COL_LIGHTBLUE; break;
+ case 13: aCol = COL_LIGHTMAGENTA; break;
+ case 14: aCol = COL_LIGHTCYAN; break;
+ case 15: aCol = COL_WHITE; break;
+ default: aCol = COL_BLACK;
+ }
+
+ rColor.SetColor( aCol );
+}
+
+String lcl_MakeOldPageStyleFormatName( USHORT i )
+{
+ String aName = ScGlobal::GetRscString( STR_PAGESTYLE );
+ aName.AppendAscii( " " );
+ aName += String::CreateFromInt32( i + 1 );
+
+ return aName;
+}
+
+//--------------------------------------------
+// Font
+//--------------------------------------------
+
+
+Sc10FontData::Sc10FontData(SvStream& rStream)
+{
+ rStream >> Height;
+ rStream >> CharSet;
+ rStream >> PitchAndFamily;
+ USHORT nLen;
+ rStream >> nLen;
+ rStream.Read(FaceName, nLen);
+}
+
+
+Sc10FontCollection::Sc10FontCollection(SvStream& rStream) :
+ Collection (4, 4),
+ nError (0)
+{
+ USHORT ID;
+ rStream >> ID;
+ if (ID == FontID)
+ {
+ USHORT nAnz;
+ rStream >> nAnz;
+ for (USHORT i=0; (i < nAnz) && (nError == 0); i++)
+ {
+ Insert(new Sc10FontData(rStream));
+ nError = rStream.GetError();
+ }
+ }
+ else
+ {
+ DBG_ERROR( "FontID" );
+ nError = errUnknownID;
+ }
+}
+
+
+//--------------------------------------------
+// Benannte-Bereiche
+//--------------------------------------------
+
+
+Sc10NameData::Sc10NameData(SvStream& rStream)
+{
+ BYTE nLen;
+ rStream >> nLen;
+ rStream.Read(Name, sizeof(Name) - 1);
+ Name[nLen] = 0;
+
+ rStream >> nLen;
+ rStream.Read(Reference, sizeof(Reference) - 1);
+ Reference[nLen] = 0;
+ rStream.Read(Reserved, sizeof(Reserved));
+}
+
+
+Sc10NameCollection::Sc10NameCollection(SvStream& rStream) :
+ Collection (4, 4),
+ nError (0)
+{
+ USHORT ID;
+ rStream >> ID;
+ if (ID == NameID)
+ {
+ USHORT nAnz;
+ rStream >> nAnz;
+ for (USHORT i=0; (i < nAnz) && (nError == 0); i++)
+ {
+ Insert(new Sc10NameData(rStream));
+ nError = rStream.GetError();
+ }
+ }
+ else
+ {
+ DBG_ERROR( "NameID" );
+ nError = errUnknownID;
+ }
+}
+
+//--------------------------------------------
+// Vorlagen
+//--------------------------------------------
+
+
+Sc10PatternData::Sc10PatternData(SvStream& rStream)
+{
+ rStream.Read(Name, sizeof(Name));
+ //rStream.Read(&ValueFormat, sizeof(ValueFormat));
+ //rStream.Read(&LogFont, sizeof(LogFont));
+ lcl_ReadValueFormat(rStream, ValueFormat);
+ lcl_ReadLogFont(rStream, LogFont);
+
+ rStream >> Attr;
+ rStream >> Justify;
+ rStream >> Frame;
+ rStream >> Raster;
+ rStream >> nColor;
+ rStream >> FrameColor;
+ rStream >> Flags;
+ rStream >> FormatFlags;
+ rStream.Read(Reserved, sizeof(Reserved));
+}
+
+
+Sc10PatternCollection::Sc10PatternCollection(SvStream& rStream) :
+ Collection (4, 4),
+ nError (0)
+{
+ USHORT ID;
+ rStream >> ID;
+ if (ID == PatternID)
+ {
+ USHORT nAnz;
+ rStream >> nAnz;
+ for (USHORT i=0; (i < nAnz) && (nError == 0); i++)
+ {
+ Insert(new Sc10PatternData(rStream));
+ nError = rStream.GetError();
+ }
+ }
+ else
+ {
+ DBG_ERROR( "PatternID" );
+ nError = errUnknownID;
+ }
+}
+
+
+//--------------------------------------------
+// Datenbank
+//--------------------------------------------
+
+
+Sc10DataBaseData::Sc10DataBaseData(SvStream& rStream)
+{
+ //rStream.Read(&DataBaseRec, sizeof(DataBaseRec));
+ rStream.Read(&DataBaseRec.Name, sizeof(DataBaseRec.Name));
+ rStream >> DataBaseRec.Tab;
+ lcl_ReadBlockRect(rStream, DataBaseRec.Block);
+ rStream >> DataBaseRec.RowHeader;
+ rStream >> DataBaseRec.SortField0;
+ rStream >> DataBaseRec.SortUpOrder0;
+ rStream >> DataBaseRec.SortField1;
+ rStream >> DataBaseRec.SortUpOrder1;
+ rStream >> DataBaseRec.SortField2;
+ rStream >> DataBaseRec.SortUpOrder2;
+ rStream >> DataBaseRec.IncludeFormat;
+
+ rStream >> DataBaseRec.QueryField0;
+ rStream >> DataBaseRec.QueryOp0;
+ rStream >> DataBaseRec.QueryByString0;
+ rStream.Read(&DataBaseRec.QueryString0, sizeof(DataBaseRec.QueryString0));
+ DataBaseRec.QueryValue0 = ReadLongDouble(rStream);
+
+ rStream >> DataBaseRec.QueryConnect1;
+ rStream >> DataBaseRec.QueryField1;
+ rStream >> DataBaseRec.QueryOp1;
+ rStream >> DataBaseRec.QueryByString1;
+ rStream.Read(&DataBaseRec.QueryString1, sizeof(DataBaseRec.QueryString1));
+ DataBaseRec.QueryValue1 = ReadLongDouble(rStream);
+
+ rStream >> DataBaseRec.QueryConnect2;
+ rStream >> DataBaseRec.QueryField2;
+ rStream >> DataBaseRec.QueryOp2;
+ rStream >> DataBaseRec.QueryByString2;
+ rStream.Read(&DataBaseRec.QueryString2, sizeof(DataBaseRec.QueryString2));
+ DataBaseRec.QueryValue2 = ReadLongDouble(rStream);
+}
+
+
+Sc10DataBaseCollection::Sc10DataBaseCollection(SvStream& rStream) :
+ Collection (4, 4),
+ nError (0)
+{
+ USHORT ID;
+ rStream >> ID;
+ if (ID == DataBaseID)
+ {
+ rStream.Read(ActName, sizeof(ActName));
+ USHORT nAnz;
+ rStream >> nAnz;
+ for (USHORT i=0; (i < nAnz) && (nError == 0); i++)
+ {
+ Insert(new Sc10DataBaseData(rStream));
+ nError = rStream.GetError();
+ }
+ }
+ else
+ {
+ DBG_ERROR( "DataBaseID" );
+ nError = errUnknownID;
+ }
+}
+
+
+int Sc10LogFont::operator==( const Sc10LogFont& rData ) const
+{
+ return !strcmp( lfFaceName, rData.lfFaceName )
+ && lfHeight == rData.lfHeight
+ && lfWidth == rData.lfWidth
+ && lfEscapement == rData.lfEscapement
+ && lfOrientation == rData.lfOrientation
+ && lfWeight == rData.lfWeight
+ && lfItalic == rData.lfItalic
+ && lfUnderline == rData.lfUnderline
+ && lfStrikeOut == rData.lfStrikeOut
+ && lfCharSet == rData.lfCharSet
+ && lfOutPrecision == rData.lfOutPrecision
+ && lfClipPrecision == rData.lfClipPrecision
+ && lfQuality == rData.lfQuality
+ && lfPitchAndFamily == rData.lfPitchAndFamily;
+}
+
+
+int Sc10Color::operator==( const Sc10Color& rColor ) const
+{
+ return ((Red == rColor.Red) && (Green == rColor.Green) && (Blue == rColor.Blue));
+}
+
+
+int Sc10HeadFootLine::operator==( const Sc10HeadFootLine& rData ) const
+{
+ return !strcmp(Title, rData.Title)
+ && LogFont == rData.LogFont
+ && HorJustify == rData.HorJustify
+ && VerJustify == rData.VerJustify
+ && Raster == rData.Raster
+ && Frame == rData.Frame
+ && TextColor == rData.TextColor
+ && BackColor == rData.BackColor
+ && RasterColor == rData.RasterColor
+ && FrameColor == rData.FrameColor
+ && Reserved == rData.Reserved;
+}
+
+
+int Sc10PageFormat::operator==( const Sc10PageFormat& rData ) const
+{
+ return !strcmp(PrintAreaName, rData.PrintAreaName)
+ && HeadLine == rData.HeadLine
+ && FootLine == rData.FootLine
+ && Orientation == rData.Orientation
+ && Width == rData.Width
+ && Height == rData.Height
+ && NonPrintableX == rData.NonPrintableX
+ && NonPrintableY == rData.NonPrintableY
+ && Left == rData.Left
+ && Top == rData.Top
+ && Right == rData.Right
+ && Bottom == rData.Bottom
+ && Head == rData.Head
+ && Foot == rData.Foot
+ && HorCenter == rData.HorCenter
+ && VerCenter == rData.VerCenter
+ && PrintGrid == rData.PrintGrid
+ && PrintColRow == rData.PrintColRow
+ && PrintNote == rData.PrintNote
+ && TopBottomDir == rData.TopBottomDir
+ && FirstPageNo == rData.FirstPageNo
+ && RowRepeatStart == rData.RowRepeatStart
+ && RowRepeatEnd == rData.RowRepeatEnd
+ && ColRepeatStart == rData.ColRepeatStart
+ && ColRepeatEnd == rData.ColRepeatEnd
+ && !memcmp( PrnZoom, rData.PrnZoom, sizeof(PrnZoom) )
+ && !memcmp( &PrintArea, &rData.PrintArea, sizeof(PrintArea) );
+}
+
+
+USHORT Sc10PageCollection::Insert( const Sc10PageFormat& rData )
+{
+ for (USHORT i=0; i<nCount; i++)
+ if (At(i)->aPageFormat == rData)
+ return i;
+
+ Collection::Insert( new Sc10PageData(rData) );
+
+ return nCount-1;
+}
+
+
+static inline UINT8 GetMixedCol( const UINT8 nB, const UINT8 nF, const UINT16 nFak )
+{
+ INT32 nT = nB - nF;
+ nT *= ( INT32 ) nFak;
+ nT /= 0xFFFF;
+ nT += nF;
+ return ( UINT8 ) nT;
+}
+static inline Color GetMixedColor( const Color& rFore, const Color& rBack, UINT16 nFact )
+{
+ return Color( GetMixedCol( rBack.GetRed(), rFore.GetRed(), nFact ),
+ GetMixedCol( rBack.GetGreen(), rFore.GetGreen(), nFact ),
+ GetMixedCol( rBack.GetBlue(), rFore.GetBlue(), nFact ) );
+}
+
+
+void Sc10PageCollection::PutToDoc( ScDocument* pDoc )
+{
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ EditEngine aEditEngine( pDoc->GetEnginePool() );
+ EditTextObject* pEmptyObject = aEditEngine.CreateTextObject();
+
+ for (USHORT i=0; i<nCount; i++)
+ {
+ Sc10PageFormat* pPage = &At(i)->aPageFormat;
+
+ pPage->Width = (short) ( pPage->Width * ( 72.0 / 72.27 ) + 0.5 );
+ pPage->Height = (short) ( pPage->Height * ( 72.0 / 72.27 ) + 0.5 );
+ pPage->Top = (short) ( pPage->Top * ( 72.0 / 72.27 ) + 0.5 );
+ pPage->Bottom = (short) ( pPage->Bottom * ( 72.0 / 72.27 ) + 0.5 );
+ pPage->Left = (short) ( pPage->Left * ( 72.0 / 72.27 ) + 0.5 );
+ pPage->Right = (short) ( pPage->Right * ( 72.0 / 72.27 ) + 0.5 );
+ pPage->Head = (short) ( pPage->Head * ( 72.0 / 72.27 ) + 0.5 );
+ pPage->Foot = (short) ( pPage->Foot * ( 72.0 / 72.27 ) + 0.5 );
+
+ String aName = lcl_MakeOldPageStyleFormatName( i );
+
+ ScStyleSheet* pSheet = (ScStyleSheet*) &pStylePool->Make( aName,
+ SFX_STYLE_FAMILY_PAGE,
+ SFXSTYLEBIT_USERDEF | SCSTYLEBIT_STANDARD );
+ SfxItemSet* pSet = &pSheet->GetItemSet();
+
+ for (USHORT nHeadFoot=0; nHeadFoot<2; nHeadFoot++)
+ {
+ Sc10HeadFootLine* pHeadFootLine = nHeadFoot ? &pPage->FootLine : &pPage->HeadLine;
+
+ SfxItemSet aEditAttribs(aEditEngine.GetEmptyItemSet());
+ FontFamily eFam;
+ switch (pPage->HeadLine.LogFont.lfPitchAndFamily & 0xF0)
+ {
+ case ffDontCare: eFam = FAMILY_DONTKNOW; break;
+ case ffRoman: eFam = FAMILY_ROMAN; break;
+ case ffSwiss: eFam = FAMILY_SWISS; break;
+ case ffModern: eFam = FAMILY_MODERN; break;
+ case ffScript: eFam = FAMILY_SCRIPT; break;
+ case ffDecorative: eFam = FAMILY_DECORATIVE; break;
+ }
+ aEditAttribs.Put( SvxFontItem(
+ eFam,
+ SC10TOSTRING( pHeadFootLine->LogFont.lfFaceName ), EMPTY_STRING ),
+ EE_CHAR_FONTINFO );
+ aEditAttribs.Put( SvxFontHeightItem( Abs( pHeadFootLine->LogFont.lfHeight ) ),
+ EE_CHAR_FONTHEIGHT);
+
+ Sc10Color nColor = pHeadFootLine->TextColor;
+ Color TextColor( nColor.Red, nColor.Green, nColor.Blue );
+ aEditAttribs.Put(SvxColorItem(TextColor), EE_CHAR_COLOR);
+ // FontAttr
+ if (pHeadFootLine->LogFont.lfWeight != fwNormal)
+ aEditAttribs.Put(SvxWeightItem(WEIGHT_BOLD), EE_CHAR_WEIGHT);
+ if (pHeadFootLine->LogFont.lfItalic != 0)
+ aEditAttribs.Put(SvxPostureItem(ITALIC_NORMAL), EE_CHAR_ITALIC);
+ if (pHeadFootLine->LogFont.lfUnderline != 0)
+ aEditAttribs.Put(SvxUnderlineItem(UNDERLINE_SINGLE), EE_CHAR_UNDERLINE);
+ if (pHeadFootLine->LogFont.lfStrikeOut != 0)
+ aEditAttribs.Put(SvxCrossedOutItem(STRIKEOUT_SINGLE), EE_CHAR_STRIKEOUT);
+ String aText( pHeadFootLine->Title, DEFCHARSET );
+ aEditEngine.SetText( aText );
+ aEditEngine.QuickSetAttribs( aEditAttribs, ESelection( 0, 0, 0, aText.Len() ) );
+
+ EditTextObject* pObject = aEditEngine.CreateTextObject();
+ ScPageHFItem aHeaderItem(nHeadFoot ? ATTR_PAGE_FOOTERRIGHT : ATTR_PAGE_HEADERRIGHT);
+ switch (pHeadFootLine->HorJustify)
+ {
+ case hjCenter:
+ aHeaderItem.SetLeftArea(*pEmptyObject);
+ aHeaderItem.SetCenterArea(*pObject);
+ aHeaderItem.SetRightArea(*pEmptyObject);
+ break;
+ case hjRight:
+ aHeaderItem.SetLeftArea(*pEmptyObject);
+ aHeaderItem.SetCenterArea(*pEmptyObject);
+ aHeaderItem.SetRightArea(*pObject);
+ break;
+ default:
+ aHeaderItem.SetLeftArea(*pObject);
+ aHeaderItem.SetCenterArea(*pEmptyObject);
+ aHeaderItem.SetRightArea(*pEmptyObject);
+ break;
+ }
+ delete pObject;
+ pSet->Put( aHeaderItem );
+
+ SfxItemSet aSetItemItemSet( *pDoc->GetPool(),
+ ATTR_BACKGROUND, ATTR_BACKGROUND,
+ ATTR_BORDER, ATTR_SHADOW,
+ ATTR_PAGE_SIZE, ATTR_PAGE_SIZE,
+ ATTR_LRSPACE, ATTR_ULSPACE,
+ ATTR_PAGE_ON, ATTR_PAGE_SHARED,
+ 0 );
+ nColor = pHeadFootLine->BackColor;
+ Color aBColor( nColor.Red, nColor.Green, nColor.Blue );
+ nColor = pHeadFootLine->RasterColor;
+ Color aRColor( nColor.Red, nColor.Green, nColor.Blue );
+
+ UINT16 nFact;
+ BOOL bSwapCol = FALSE;
+ switch (pHeadFootLine->Raster)
+ {
+ case raNone: nFact = 0xffff; bSwapCol = TRUE; break;
+ case raGray12: nFact = (0xffff / 100) * 12; break;
+ case raGray25: nFact = (0xffff / 100) * 25; break;
+ case raGray50: nFact = (0xffff / 100) * 50; break;
+ case raGray75: nFact = (0xffff / 100) * 75; break;
+ default: nFact = 0xffff;
+ }
+ if( bSwapCol )
+ aSetItemItemSet.Put( SvxBrushItem( GetMixedColor( aBColor, aRColor, nFact ) ) );
+ else
+ aSetItemItemSet.Put( SvxBrushItem( GetMixedColor( aRColor, aBColor, nFact ) ) );
+
+ if (pHeadFootLine->Frame != 0)
+ {
+ USHORT nLeft = 0;
+ USHORT nTop = 0;
+ USHORT nRight = 0;
+ USHORT nBottom = 0;
+ USHORT fLeft = (pHeadFootLine->Frame & 0x000F);
+ USHORT fTop = (pHeadFootLine->Frame & 0x00F0) / 0x0010;
+ USHORT fRight = (pHeadFootLine->Frame & 0x0F00) / 0x0100;
+ USHORT fBottom = (pHeadFootLine->Frame & 0xF000) / 0x1000;
+ if (fLeft > 1)
+ nLeft = 50;
+ else if (fLeft > 0)
+ nLeft = 20;
+ if (fTop > 1)
+ nTop = 50;
+ else if (fTop > 0)
+ nTop = 20;
+ if (fRight > 1)
+ nRight = 50;
+ else if (fRight > 0)
+ nRight = 20;
+ if (fBottom > 1)
+ nBottom = 50;
+ else if (fBottom > 0)
+ nBottom = 20;
+ Color ColorLeft(COL_BLACK);
+ Color ColorTop(COL_BLACK);
+ Color ColorRight(COL_BLACK);
+ Color ColorBottom(COL_BLACK);
+ USHORT cLeft = (pHeadFootLine->FrameColor & 0x000F);
+ USHORT cTop = (pHeadFootLine->FrameColor & 0x00F0) >> 4;
+ USHORT cRight = (pHeadFootLine->FrameColor & 0x0F00) >> 8;
+ USHORT cBottom = (pHeadFootLine->FrameColor & 0xF000) >> 12;
+ lcl_ChangeColor(cLeft, ColorLeft);
+ lcl_ChangeColor(cTop, ColorTop);
+ lcl_ChangeColor(cRight, ColorRight);
+ lcl_ChangeColor(cBottom, ColorBottom);
+ SvxBorderLine aLine;
+ SvxBoxItem aBox;
+ aLine.SetOutWidth(nLeft);
+ aLine.SetColor(ColorLeft);
+ aBox.SetLine(&aLine, BOX_LINE_LEFT);
+ aLine.SetOutWidth(nTop);
+ aLine.SetColor(ColorTop);
+ aBox.SetLine(&aLine, BOX_LINE_TOP);
+ aLine.SetOutWidth(nRight);
+ aLine.SetColor(ColorRight);
+ aBox.SetLine(&aLine, BOX_LINE_RIGHT);
+ aLine.SetOutWidth(nBottom);
+ aLine.SetColor(ColorBottom);
+ aBox.SetLine(&aLine, BOX_LINE_BOTTOM);
+
+ aSetItemItemSet.Put(aBox);
+ }
+
+ pSet->Put( SvxULSpaceItem( 0, 0, ATTR_ULSPACE ) );
+
+ if (nHeadFoot==0)
+ aSetItemItemSet.Put( SvxSizeItem( ATTR_PAGE_SIZE, Size( 0, pPage->Top - pPage->Head ) ) );
+ else
+ aSetItemItemSet.Put( SvxSizeItem( ATTR_PAGE_SIZE, Size( 0, pPage->Bottom - pPage->Foot ) ) );
+
+ aSetItemItemSet.Put(SfxBoolItem( ATTR_PAGE_ON, TRUE ));
+ aSetItemItemSet.Put(SfxBoolItem( ATTR_PAGE_DYNAMIC, FALSE ));
+ aSetItemItemSet.Put(SfxBoolItem( ATTR_PAGE_SHARED, TRUE ));
+
+ pSet->Put( SvxSetItem( nHeadFoot ? ATTR_PAGE_FOOTERSET : ATTR_PAGE_HEADERSET,
+ aSetItemItemSet ) );
+ }
+
+ SvxPageItem aPageItem(ATTR_PAGE);
+ aPageItem.SetPageUsage( SVX_PAGE_ALL );
+ aPageItem.SetLandscape( pPage->Orientation != 1 );
+ aPageItem.SetNumType( SVX_ARABIC );
+ pSet->Put(aPageItem);
+
+ pSet->Put(SvxLRSpaceItem( pPage->Left, pPage->Right, 0,0, ATTR_LRSPACE ));
+ pSet->Put(SvxULSpaceItem( pPage->Top, pPage->Bottom, ATTR_ULSPACE ));
+
+ pSet->Put(SfxBoolItem( ATTR_PAGE_HORCENTER, pPage->HorCenter ));
+ pSet->Put(SfxBoolItem( ATTR_PAGE_VERCENTER, pPage->VerCenter ));
+
+ //----------------
+ // Area-Parameter:
+ //----------------
+ {
+ ScRange* pRepeatRow = NULL;
+ ScRange* pRepeatCol = NULL;
+
+ if ( pPage->ColRepeatStart >= 0 )
+ pRepeatCol = new ScRange( pPage->ColRepeatStart, 0, 0 );
+ if ( pPage->RowRepeatStart >= 0 )
+ pRepeatRow = new ScRange( 0, pPage->RowRepeatStart, 0 );
+
+
+ if ( pRepeatRow || pRepeatCol )
+ {
+ //
+ // an allen Tabellen setzen
+ //
+ const USHORT nLast = pDoc->GetMaxTableNumber();
+ for ( USHORT i=0; i < nLast; i++ )
+ {
+ pDoc->SetRepeatColRange( i, pRepeatCol );
+ pDoc->SetRepeatRowRange( i, pRepeatRow );
+ }
+ }
+
+ delete pRepeatRow;
+ delete pRepeatCol;
+ }
+
+ //-----------------
+ // Table-Parameter:
+ //-----------------
+ pSet->Put( SfxBoolItem( ATTR_PAGE_NOTES, pPage->PrintNote ) );
+ pSet->Put( SfxBoolItem( ATTR_PAGE_GRID, pPage->PrintGrid ) );
+ pSet->Put( SfxBoolItem( ATTR_PAGE_HEADERS, pPage->PrintColRow ) );
+ pSet->Put( SfxBoolItem( ATTR_PAGE_TOPDOWN, pPage->TopBottomDir ) );
+ pSet->Put( ScViewObjectModeItem( ATTR_PAGE_CHARTS, VOBJ_MODE_SHOW ) );
+ pSet->Put( ScViewObjectModeItem( ATTR_PAGE_OBJECTS, VOBJ_MODE_SHOW ) );
+ pSet->Put( ScViewObjectModeItem( ATTR_PAGE_DRAWINGS, VOBJ_MODE_SHOW ) );
+ pSet->Put( SfxUInt16Item( ATTR_PAGE_SCALE,
+ (UINT16)( lcl_PascalToDouble( pPage->PrnZoom ) * 100 ) ) );
+ pSet->Put( SfxUInt16Item( ATTR_PAGE_FIRSTPAGENO, 1 ) );
+
+ pSet->Put( SvxSizeItem( ATTR_PAGE_SIZE, Size( pPage->Width, pPage->Height ) ) );
+ }
+
+ delete pEmptyObject;
+}
+
+
+DataObject* Sc10PageData::Clone() const
+{
+ return new Sc10PageData(aPageFormat);
+}
+
+
+//--------------------------------------------
+// Import
+//--------------------------------------------
+
+
+Sc10Import::Sc10Import(SvStream& rStr, ScDocument* pDocument ) :
+ rStream (rStr),
+ pDoc (pDocument),
+ pFontCollection (NULL),
+ pNameCollection (NULL),
+ pPatternCollection (NULL),
+ pDataBaseCollection (NULL),
+ nError (0),
+ nShowTab (0)
+{
+ pPrgrsBar = NULL;
+}
+
+
+Sc10Import::~Sc10Import()
+{
+ pDoc->CalcAfterLoad();
+ pDoc->UpdateAllCharts();
+
+ delete pFontCollection;
+ delete pNameCollection;
+ delete pPatternCollection;
+ delete pDataBaseCollection;
+
+ DBG_ASSERT( pPrgrsBar == NULL,
+ "*Sc10Import::Sc10Import(): Progressbar lebt noch!?" );
+}
+
+
+ULONG Sc10Import::Import()
+{
+ pPrgrsBar = new FilterProgressBar( rStream );
+
+ ScDocOptions aOpt = pDoc->GetDocOptions();
+ aOpt.SetDate( 1, 1, 1900 );
+ aOpt.SetYear2000( 18 + 1901 ); // ab SO51 src513e vierstellig
+ pDoc->SetDocOptions( aOpt );
+ pDoc->GetFormatTable()->ChangeNullDate( 1, 1, 1900 );
+
+ LoadFileHeader(); pPrgrsBar->Progress();
+ if (!nError) { LoadFileInfo(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadEditStateInfo(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadProtect(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadViewColRowBar(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadScrZoom(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadPalette(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadFontCollection(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadNameCollection(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadPatternCollection(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadDataBaseCollection(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadTables(); pPrgrsBar->Progress(); }
+ if (!nError) { LoadObjects(); pPrgrsBar->Progress(); }
+ if (!nError) { ImportNameCollection(); pPrgrsBar->Progress(); }
+ pDoc->SetViewOptions( aSc30ViewOpt );
+
+ if (nError)
+ {
+ sal_Char s[8];
+ sprintf(s,"%d",(short)nError);
+ DBG_ERROR(s);
+ }
+
+ delete pPrgrsBar;
+#ifdef DBG_UTIL
+ pPrgrsBar = NULL;
+#endif
+
+ return nError;
+}
+
+
+void Sc10Import::LoadFileHeader()
+{
+ Sc10FileHeader FileHeader;
+ //rStream.Read(&FileHeader, sizeof(FileHeader));
+ lcl_ReadFileHeader(rStream, FileHeader);
+
+ nError = rStream.GetError();
+ if ( nError == 0 )
+ {
+ sal_Char Sc10CopyRight[32];
+ strcpy(Sc10CopyRight, "Blaise-Tabelle");
+ Sc10CopyRight[14] = 10;
+ Sc10CopyRight[15] = 13;
+ Sc10CopyRight[16] = 0;
+ if ((strcmp(FileHeader.CopyRight, Sc10CopyRight) != 0)
+ || (FileHeader.Version < 101)
+ || (FileHeader.Version > 102))
+ nError = errUnknownFormat;
+ }
+}
+
+
+void Sc10Import::LoadFileInfo()
+{
+ Sc10FileInfo FileInfo;
+ rStream.Read(&FileInfo, sizeof(FileInfo));
+ //lcl_ReadFileInfo(rStream, FileInfo);
+
+ nError = rStream.GetError();
+ // Achtung Info Uebertragen
+}
+
+
+
+void Sc10Import::LoadEditStateInfo()
+{
+ Sc10EditStateInfo EditStateInfo;
+ rStream.Read(&EditStateInfo, sizeof(EditStateInfo));
+ //lcl_ReadEditStateInfo(rStream, EditStateInfo);
+
+ nError = rStream.GetError();
+ nShowTab = EditStateInfo.DeltaZ;
+ // Achtung Cursorposition und Offset der Tabelle Uebertragen (soll man das machen??)
+}
+
+
+void Sc10Import::LoadProtect()
+{
+ //rStream.Read(&SheetProtect, sizeof(SheetProtect));
+ lcl_ReadSheetProtect(rStream, SheetProtect);
+ nError = rStream.GetError();
+ pDoc->SetDocProtection( SheetProtect.Protect, SC10TOSTRING( SheetProtect.PassWord ) );
+}
+
+
+void Sc10Import::LoadViewColRowBar()
+{
+ BYTE ViewColRowBar;
+ rStream >> ViewColRowBar;
+ nError = rStream.GetError();
+ aSc30ViewOpt.SetOption( VOPT_HEADER, (BOOL)ViewColRowBar );
+}
+
+
+void Sc10Import::LoadScrZoom()
+{
+ // Achtung Zoom ist leider eine 6Byte TP real Zahl (keine Ahnung wie die Umzusetzen ist)
+ sal_Char cZoom[6];
+ rStream.Read(cZoom, sizeof(cZoom));
+ nError = rStream.GetError();
+}
+
+
+void Sc10Import::LoadPalette()
+{
+ //rStream.Read(TextPalette, sizeof(TextPalette));
+ //rStream.Read(BackPalette, sizeof(BackPalette));
+ //rStream.Read(RasterPalette, sizeof(RasterPalette));
+ //rStream.Read(FramePalette, sizeof(FramePalette));
+ lcl_ReadPalette(rStream, TextPalette);
+ lcl_ReadPalette(rStream, BackPalette);
+ lcl_ReadPalette(rStream, RasterPalette);
+ lcl_ReadPalette(rStream, FramePalette);
+
+ nError = rStream.GetError();
+}
+
+
+void Sc10Import::LoadFontCollection()
+{
+ pFontCollection = new Sc10FontCollection(rStream);
+}
+
+
+void Sc10Import::LoadNameCollection()
+{
+ pNameCollection = new Sc10NameCollection(rStream);
+}
+
+
+void Sc10Import::ImportNameCollection()
+{
+ ScRangeName* pRN = pDoc->GetRangeName();
+
+ for (USHORT i = 0; i < pNameCollection->GetCount(); i++)
+ {
+ Sc10NameData* pName = pNameCollection->At( i );
+ pRN->Insert( new ScRangeData( pDoc,
+ SC10TOSTRING( pName->Name ),
+ SC10TOSTRING( pName->Reference ) ) );
+ }
+}
+
+
+void Sc10Import::LoadPatternCollection()
+{
+ pPatternCollection = new Sc10PatternCollection( rStream );
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ for( USHORT i = 0 ; i < pPatternCollection->GetCount() ; i++ )
+ {
+ Sc10PatternData* pPattern = pPatternCollection->At( i );
+ String aName( pPattern->Name, DEFCHARSET );
+ SfxStyleSheetBase* pStyle = pStylePool->Find( aName, SFX_STYLE_FAMILY_PARA );
+ if( pStyle == NULL )
+ pStylePool->Make( aName, SFX_STYLE_FAMILY_PARA );
+ else
+ {
+ pPattern->Name[ 27 ] = 0;
+ strcat( pPattern->Name, "_Old" );
+ aName = SC10TOSTRING( pPattern->Name );
+ pStylePool->Make( aName, SFX_STYLE_FAMILY_PARA );
+ }
+ pStyle = pStylePool->Find( aName, SFX_STYLE_FAMILY_PARA );
+ if( pStyle != NULL )
+ {
+ SfxItemSet &rItemSet = pStyle->GetItemSet();
+ // Font
+ if( ( pPattern->FormatFlags & pfFont ) == pfFont )
+ {
+ FontFamily eFam;
+ switch( pPattern->LogFont.lfPitchAndFamily & 0xF0 )
+ {
+ case ffDontCare : eFam = FAMILY_DONTKNOW; break;
+ case ffRoman : eFam = FAMILY_ROMAN; break;
+ case ffSwiss : eFam = FAMILY_SWISS; break;
+ case ffModern : eFam = FAMILY_MODERN; break;
+ case ffScript : eFam = FAMILY_SCRIPT; break;
+ case ffDecorative : eFam = FAMILY_DECORATIVE; break;
+ }
+ rItemSet.Put( SvxFontItem( eFam, SC10TOSTRING( pPattern->LogFont.lfFaceName ), EMPTY_STRING ) );
+ rItemSet.Put( SvxFontHeightItem( Abs( pPattern->LogFont.lfHeight ) ) );
+ Color TextColor( COL_BLACK );
+ lcl_ChangeColor( ( pPattern->nColor & 0x000F ), TextColor );
+ rItemSet.Put( SvxColorItem( TextColor ) );
+ // FontAttr
+ if( pPattern->LogFont.lfWeight != fwNormal )
+ rItemSet.Put( SvxWeightItem( WEIGHT_BOLD ) );
+ if( pPattern->LogFont.lfItalic != 0 )
+ rItemSet.Put( SvxPostureItem( ITALIC_NORMAL ) );
+ if( pPattern->LogFont.lfUnderline != 0 )
+ rItemSet.Put( SvxUnderlineItem( UNDERLINE_SINGLE ) );
+ if( pPattern->LogFont.lfStrikeOut != 0 )
+ rItemSet.Put( SvxCrossedOutItem( STRIKEOUT_SINGLE ) );
+ }
+ // Ausrichtung
+ if( ( pPattern->FormatFlags & pfJustify ) == pfJustify )
+ {
+ USHORT HorJustify = ( pPattern->Justify & 0x000F );
+ USHORT VerJustify = ( pPattern->Justify & 0x00F0 ) >> 4;
+ USHORT OJustify = ( pPattern->Justify & 0x0F00 ) >> 8;
+ USHORT EJustify = ( pPattern->Justify & 0xF000 ) >> 12;
+ if( HorJustify != 0 )
+ switch( HorJustify )
+ {
+ case hjLeft:
+ rItemSet.Put( SvxHorJustifyItem( SVX_HOR_JUSTIFY_LEFT ) );
+ break;
+ case hjCenter:
+ rItemSet.Put( SvxHorJustifyItem( SVX_HOR_JUSTIFY_CENTER ) );
+ break;
+ case hjRight:
+ rItemSet.Put( SvxHorJustifyItem( SVX_HOR_JUSTIFY_RIGHT ) );
+ break;
+ }
+ if( VerJustify != 0 )
+ switch( VerJustify )
+ {
+ case vjTop:
+ rItemSet.Put( SvxVerJustifyItem( SVX_VER_JUSTIFY_TOP ) );
+ break;
+ case vjCenter:
+ rItemSet.Put( SvxVerJustifyItem( SVX_VER_JUSTIFY_CENTER ) );
+ break;
+ case vjBottom:
+ rItemSet.Put( SvxVerJustifyItem( SVX_VER_JUSTIFY_BOTTOM ) );
+ break;
+ }
+
+ if( ( OJustify & ojWordBreak ) == ojWordBreak )
+ rItemSet.Put( SfxBoolItem( TRUE ) );
+ if( ( OJustify & ojBottomTop ) == ojBottomTop )
+ rItemSet.Put( SvxOrientationItem( SVX_ORIENTATION_BOTTOMTOP ) );
+ else if( ( OJustify & ojTopBottom ) == ojTopBottom )
+ rItemSet.Put( SvxOrientationItem( SVX_ORIENTATION_TOPBOTTOM ) );
+
+ INT16 Margin = Max( ( USHORT ) 20, ( USHORT ) ( EJustify * 20 ) );
+// if( ( ( OJustify & ojBottomTop ) == ojBottomTop ) ||
+// ( ( OJustify & ojBottomTop ) == ojBottomTop ) )
+// vielleicht so?
+ if( ( ( OJustify & ojBottomTop ) == ojBottomTop ) )
+ rItemSet.Put( SvxMarginItem( 20, Margin, 20, Margin ) );
+ else
+ rItemSet.Put( SvxMarginItem( Margin, 20, Margin, 20 ) );
+ }
+
+ // Frame
+ if( ( pPattern->FormatFlags & pfFrame ) == pfFrame )
+ {
+ if( pPattern->Frame != 0 )
+ {
+ USHORT nLeft = 0;
+ USHORT nTop = 0;
+ USHORT nRight = 0;
+ USHORT nBottom = 0;
+ USHORT fLeft = ( pPattern->Frame & 0x000F );
+ USHORT fTop = ( pPattern->Frame & 0x00F0 ) / 0x0010;
+ USHORT fRight = ( pPattern->Frame & 0x0F00 ) / 0x0100;
+ USHORT fBottom = ( pPattern->Frame & 0xF000 ) / 0x1000;
+
+ if( fLeft > 1 )
+ nLeft = 50;
+ else if( fLeft > 0 )
+ nLeft = 20;
+
+ if( fTop > 1 )
+ nTop = 50;
+ else if( fTop > 0 )
+ nTop = 20;
+
+ if( fRight > 1 )
+ nRight = 50;
+ else if( fRight > 0 )
+ nRight = 20;
+
+ if( fBottom > 1 )
+ nBottom = 50;
+ else if( fBottom > 0 )
+ nBottom = 20;
+
+ Color ColorLeft( COL_BLACK );
+ Color ColorTop( COL_BLACK );
+ Color ColorRight( COL_BLACK );
+ Color ColorBottom( COL_BLACK );
+
+ USHORT cLeft = ( pPattern->FrameColor & 0x000F );
+ USHORT cTop = ( pPattern->FrameColor & 0x00F0 ) >> 4;
+ USHORT cRight = ( pPattern->FrameColor & 0x0F00 ) >> 8;
+ USHORT cBottom = ( pPattern->FrameColor & 0xF000 ) >> 12;
+
+ lcl_ChangeColor( cLeft, ColorLeft );
+ lcl_ChangeColor( cTop, ColorTop );
+ lcl_ChangeColor( cRight, ColorRight );
+ lcl_ChangeColor( cBottom, ColorBottom );
+
+ SvxBorderLine aLine;
+ SvxBoxItem aBox;
+
+ aLine.SetOutWidth( nLeft );
+ aLine.SetColor( ColorLeft );
+ aBox.SetLine( &aLine, BOX_LINE_LEFT );
+ aLine.SetOutWidth( nTop );
+ aLine.SetColor( ColorTop );
+ aBox.SetLine( &aLine, BOX_LINE_TOP );
+ aLine.SetOutWidth( nRight );
+ aLine.SetColor( ColorRight );
+ aBox.SetLine( &aLine, BOX_LINE_RIGHT );
+ aLine.SetOutWidth( nBottom );
+ aLine.SetColor( ColorBottom );
+ aBox.SetLine( &aLine, BOX_LINE_BOTTOM );
+ rItemSet.Put( aBox );
+ }
+ }
+ // Raster
+ if( ( pPattern->FormatFlags & pfRaster ) == pfRaster )
+ {
+ if( pPattern->Raster != 0 )
+ {
+ USHORT nBColor = ( pPattern->nColor & 0x00F0 ) >> 4;
+ USHORT nRColor = ( pPattern->nColor & 0x0F00 ) >> 8;
+ Color aBColor( COL_BLACK );
+
+ lcl_ChangeColor( nBColor, aBColor );
+
+ if( nBColor == 0 )
+ aBColor.SetColor( COL_WHITE );
+ else if( nBColor == 15 )
+ aBColor.SetColor( COL_BLACK );
+
+ Color aRColor( COL_BLACK );
+ lcl_ChangeColor( nRColor, aRColor );
+ UINT16 nFact;
+ BOOL bSwapCol = FALSE;
+ BOOL bSetItem = TRUE;
+ switch (pPattern->Raster)
+ {
+ case raNone: nFact = 0xffff; bSwapCol = TRUE; bSetItem = (nBColor > 0); break;
+ case raGray12: nFact = (0xffff / 100) * 12; break;
+ case raGray25: nFact = (0xffff / 100) * 25; break;
+ case raGray50: nFact = (0xffff / 100) * 50; break;
+ case raGray75: nFact = (0xffff / 100) * 75; break;
+ default: nFact = 0xffff; bSetItem = (nRColor < 15);
+ }
+ if ( bSetItem )
+ {
+ if( bSwapCol )
+ rItemSet.Put( SvxBrushItem( GetMixedColor( aBColor, aRColor, nFact ) ) );
+ else
+ rItemSet.Put( SvxBrushItem( GetMixedColor( aRColor, aBColor, nFact ) ) );
+ }
+ }
+ }
+ // ZahlenFormate
+ if( ( pPattern->ValueFormat.Format != 0 ) &&
+ ( ( pPattern->FormatFlags & pfValue ) == pfValue ) )
+ {
+ ULONG nKey = 0;
+ ChangeFormat( pPattern->ValueFormat.Format, pPattern->ValueFormat.Info, nKey );
+ rItemSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, ( UINT32 ) nKey ) );
+ }
+
+ // Zellattribute (Schutz, Versteckt...)
+ if( ( pPattern->Flags != 0 ) &&
+ ( ( pPattern->FormatFlags & pfProtection ) == pfProtection ) )
+ {
+ BOOL bProtect = ( ( pPattern->Flags & paProtect ) == paProtect );
+ BOOL bHFormula = ( ( pPattern->Flags & paHideFormula ) == paHideFormula );
+ BOOL bHCell = ( ( pPattern->Flags & paHideAll ) == paHideAll );
+ BOOL bHPrint = ( ( pPattern->Flags & paHidePrint ) == paHidePrint );
+ rItemSet.Put( ScProtectionAttr( bProtect, bHFormula, bHCell, bHPrint ) );
+ }
+ } // if Style != 0
+ } // for (i = 0; i < GetCount()
+}
+
+
+void Sc10Import::LoadDataBaseCollection()
+{
+ pDataBaseCollection = new Sc10DataBaseCollection(rStream);
+ for( USHORT i = 0 ; i < pDataBaseCollection->GetCount() ; i++ )
+ {
+ Sc10DataBaseData* pOldData = pDataBaseCollection->At(i);
+ ScDBData* pNewData = new ScDBData( SC10TOSTRING( pOldData->DataBaseRec.Name ),
+ ( USHORT ) pOldData->DataBaseRec.Tab,
+ ( USHORT ) pOldData->DataBaseRec.Block.x1,
+ ( USHORT ) pOldData->DataBaseRec.Block.y1,
+ ( USHORT ) pOldData->DataBaseRec.Block.x2,
+ ( USHORT ) pOldData->DataBaseRec.Block.y2,
+ TRUE,
+ ( BOOL) pOldData->DataBaseRec.RowHeader );
+ pDoc->GetDBCollection()->Insert( pNewData );
+ }
+}
+
+
+void Sc10Import::LoadTables()
+{
+ Sc10PageCollection aPageCollection;
+ USHORT nDisplayMask = 0xFFFF;
+ USHORT nDisplayValue = 0;
+
+ INT16 TabCount;
+ rStream >> TabCount;
+ for (INT16 Tab=0; (Tab < TabCount) && (nError == 0); Tab++)
+ {
+ Sc10PageFormat PageFormat;
+ INT16 DataBaseIndex;
+ Sc10TableProtect TabProtect;
+ INT16 TabNo;
+ sal_Char TabName[128];
+ USHORT Display;
+ BYTE Visible;
+ USHORT ID;
+ USHORT DataCount;
+ USHORT DataStart;
+ USHORT DataEnd;
+ USHORT DataValue;
+ USHORT Count;
+ USHORT i;
+ USHORT j;
+ String aStr; // Universal-Konvertierungs-String
+
+
+ //rStream.Read(&PageFormat, sizeof(PageFormat));
+ lcl_ReadPageFormat(rStream, PageFormat);
+
+ USHORT nAt = aPageCollection.Insert(PageFormat);
+ String aPageName = lcl_MakeOldPageStyleFormatName( nAt );
+
+ pPrgrsBar->Progress();
+
+ rStream >> DataBaseIndex;
+
+ //rStream.Read(&TabProtect, sizeof(TabProtect));
+ lcl_ReadTabProtect(rStream, TabProtect);
+
+ pDoc->SetTabProtection( Tab, TabProtect.Protect, SC10TOSTRING( TabProtect.PassWord ) );
+
+ rStream >> TabNo;
+
+ BYTE nLen;
+ rStream >> nLen;
+ rStream.Read(TabName, sizeof(TabName) - 1);
+ TabName[nLen] = 0;
+
+ //----------------------------------------------------------
+ rStream >> Display;
+
+ if ( Tab == (INT16)nShowTab )
+ {
+ ScVObjMode eObjMode = VOBJ_MODE_SHOW;
+
+ aSc30ViewOpt.SetOption( VOPT_FORMULAS, IS_SET(dfFormula,Display) );
+ aSc30ViewOpt.SetOption( VOPT_NULLVALS, IS_SET(dfZerro,Display) );
+ aSc30ViewOpt.SetOption( VOPT_SYNTAX, IS_SET(dfSyntax,Display) );
+ aSc30ViewOpt.SetOption( VOPT_NOTES, IS_SET(dfNoteMark,Display) );
+ aSc30ViewOpt.SetOption( VOPT_VSCROLL, TRUE );
+ aSc30ViewOpt.SetOption( VOPT_HSCROLL, TRUE );
+ aSc30ViewOpt.SetOption( VOPT_TABCONTROLS, TRUE );
+ aSc30ViewOpt.SetOption( VOPT_OUTLINER, TRUE );
+ aSc30ViewOpt.SetOption( VOPT_GRID, IS_SET(dfGrid,Display) );
+
+ // VOPT_HEADER wird in LoadViewColRowBar() gesetzt
+
+ if ( IS_SET(dfObjectAll,Display) ) // Objekte anzeigen
+ eObjMode = VOBJ_MODE_SHOW;
+ else if ( IS_SET(dfObjectFrame,Display) ) // Objekte als Platzhalter
+ eObjMode = VOBJ_MODE_DUMMY;
+ else if ( IS_SET(dfObjectNone,Display) ) // Objekte nicht anzeigen
+ eObjMode = VOBJ_MODE_HIDE;
+
+ aSc30ViewOpt.SetObjMode( VOBJ_TYPE_OLE, eObjMode );
+ aSc30ViewOpt.SetObjMode( VOBJ_TYPE_CHART, eObjMode );
+ aSc30ViewOpt.SetObjMode( VOBJ_TYPE_DRAW, eObjMode );
+ }
+
+ /* wofuer wird das benoetigt? Da in SC 1.0 die Anzeigeflags pro Tabelle gelten und nicht pro View
+ Dieses Flag in die ViewOptions eintragen bei Gelegenheit, Sollte der Stephan Olk machen
+ if (Tab == 0)
+ nDisplayValue = Display;
+ else
+ {
+ USHORT nDiff = Display ^ nDisplayValue;
+ nDisplayMask &= ~nDiff;
+ }
+ */
+ //--------------------------------------------------------------------
+ rStream >> Visible;
+
+ nError = rStream.GetError();
+ if (nError != 0) return;
+
+ if (TabNo == 0)
+ pDoc->RenameTab(TabNo, SC10TOSTRING( TabName ), FALSE);
+ else
+ pDoc->InsertTab(SC_TAB_APPEND, SC10TOSTRING( TabName ) );
+
+ pDoc->SetPageStyle( Tab, aPageName );
+
+ if (Visible == 0) pDoc->SetVisible(TabNo, FALSE);
+
+ // ColWidth
+ rStream >> ID;
+ if (ID != ColWidthID)
+ {
+ DBG_ERROR( "ColWidthID" );
+ nError = errUnknownID;
+ return;
+ }
+ rStream >> DataCount;
+ DataStart = 0;
+ for (i=0; i < DataCount; i++)
+ {
+ rStream >> DataEnd;
+ rStream >> DataValue;
+ for (j = DataStart; j <= DataEnd; j++) pDoc->SetColWidth(j, TabNo, DataValue);
+ DataStart = DataEnd + 1;
+ }
+ pPrgrsBar->Progress();
+
+ // ColAttr
+ rStream >> ID;
+ if (ID != ColAttrID)
+ {
+ DBG_ERROR( "ColAttrID" );
+ nError = errUnknownID;
+ return;
+ }
+
+ rStream >> DataCount;
+ DataStart = 0;
+ for (i=0; i < DataCount; i++)
+ {
+ rStream >> DataEnd;
+ rStream >> DataValue;
+ if (DataValue != 0)
+ {
+ BYTE nFlags = 0;
+ if ((DataValue & crfSoftBreak) == crfSoftBreak)
+ nFlags |= CR_PAGEBREAK;
+ if ((DataValue & crfHardBreak) == crfHardBreak)
+ nFlags |= CR_MANUALBREAK;
+ if ((DataValue & crfHidden) == crfHidden)
+ nFlags |= CR_HIDDEN;
+ for (j = DataStart; j <= DataEnd; j++) pDoc->SetColFlags(j, TabNo, nFlags);
+ }
+ DataStart = DataEnd + 1;
+ }
+ pPrgrsBar->Progress();
+
+ // RowHeight
+ rStream >> ID;
+ if (ID != RowHeightID)
+ {
+ DBG_ERROR( "RowHeightID" );
+ nError = errUnknownID;
+ return;
+ }
+
+ rStream >> DataCount;
+ DataStart = 0;
+ for (i=0; i < DataCount; i++)
+ {
+ rStream >> DataEnd;
+ rStream >> DataValue;
+ pDoc->SetRowHeightRange(DataStart, DataEnd, TabNo, DataValue);
+ DataStart = DataEnd + 1;
+ }
+ pPrgrsBar->Progress();
+
+ // RowAttr
+ rStream >> ID;
+ if (ID != RowAttrID)
+ {
+ DBG_ERROR( "RowAttrID" );
+ nError = errUnknownID;
+ return;
+ }
+
+ rStream >> DataCount;
+ DataStart = 0;
+ for (i=0; i < DataCount; i++)
+ {
+ rStream >> DataEnd;
+ rStream >> DataValue;
+ if (DataValue != 0)
+ {
+ BYTE nFlags = 0;
+ if ((DataValue & crfSoftBreak) == crfSoftBreak)
+ nFlags |= CR_PAGEBREAK;
+ if ((DataValue & crfHardBreak) == crfHardBreak)
+ nFlags |= CR_MANUALBREAK;
+ if ((DataValue & crfHidden) == crfHidden)
+ nFlags |= CR_HIDDEN;
+ for (j = DataStart; j <= DataEnd; j++) pDoc->SetRowFlags(j, TabNo, nFlags);
+ }
+ DataStart = DataEnd + 1;
+ }
+ pPrgrsBar->Progress();
+
+ // DataTable
+ rStream >> ID;
+ if (ID != TableID)
+ {
+ DBG_ERROR( "TableID" );
+ nError = errUnknownID;
+ return;
+ }
+ for (USHORT Col = 0; (Col <= MAXCOL) && (nError == 0); Col++)
+ {
+ rStream >> Count;
+ nError = rStream.GetError();
+ if ((Count != 0) && (nError == 0))
+ LoadCol(Col, TabNo);
+ }
+ DBG_ASSERT( nError == 0, "Stream" );
+ }
+ pPrgrsBar->Progress();
+
+ aPageCollection.PutToDoc( pDoc );
+}
+
+
+void Sc10Import::LoadCol(USHORT Col, USHORT Tab)
+{
+ LoadColAttr(Col, Tab);
+
+ USHORT CellCount;
+ BYTE CellType;
+ USHORT Row;
+ rStream >> CellCount;
+ if (CellCount > MAXROW) nError = errUnknownFormat;
+ for (USHORT i = 0; (i < CellCount) && (nError == 0); i++)
+ {
+ rStream >> CellType;
+ rStream >> Row;
+ nError = rStream.GetError();
+ if (nError == 0)
+ {
+ switch (CellType)
+ {
+ case ctValue :
+ {
+ const SfxPoolItem* pValueFormat = pDoc->GetAttr(Col, Row, Tab, ATTR_VALUE_FORMAT);
+ ULONG nFormat = ((SfxUInt32Item*)pValueFormat)->GetValue();
+ double Value = ReadLongDouble(rStream);
+ //rStream.Read(&Value, sizeof(Value));
+
+ // Achtung hier ist eine Anpassung Notwendig wenn Ihr das Basisdatum aendert
+ // In StarCalc 1.0 entspricht 0 dem 01.01.1900
+ // if ((nFormat >= 30) && (nFormat <= 35))
+ // Value += 0;
+ if ((nFormat >= 40) && (nFormat <= 45))
+ Value /= 86400.0;
+ pDoc->SetValue(Col, Row, Tab, Value);
+ break;
+ }
+ case ctString :
+ {
+ BYTE Len;
+ sal_Char s[256];
+ rStream >> Len;
+ rStream.Read(s, Len);
+ s[Len] = 0;
+
+ pDoc->SetString( Col, Row, Tab, SC10TOSTRING( s ) );
+ break;
+ }
+ case ctFormula :
+ {
+ double Value = ReadLongDouble(rStream);
+ BYTE Len;
+ sal_Char s[256];
+ //rStream.Read(&Value, sizeof(Value));
+ rStream >> Len;
+ rStream.Read(&s[1], Len);
+ s[0] = '=';
+ s[Len + 1] = 0;
+ ScFormulaCell* pCell = new ScFormulaCell( pDoc, ScAddress( Col, Row, Tab ) );
+ pCell->SetString( SC10TOSTRING( s ) );
+ pDoc->PutCell( Col, Row, Tab, pCell, (BOOL)TRUE );
+ break;
+ }
+ case ctNote :
+ break;
+ default :
+ nError = errUnknownFormat;
+ break;
+ }
+ USHORT NoteLen;
+ rStream >> NoteLen;
+ if (NoteLen != 0)
+ {
+ sal_Char Note[4096];
+ rStream.Read(Note, NoteLen);
+ Note[NoteLen] = 0;
+ pDoc->SetNote(Col, Row, Tab, ScPostIt( SC10TOSTRING( Note )) );
+ }
+ }
+ pPrgrsBar->Progress();
+ }
+}
+
+
+void Sc10Import::LoadColAttr(USHORT Col, USHORT Tab)
+{
+ Sc10ColAttr aFont;
+ Sc10ColAttr aAttr;
+ Sc10ColAttr aJustify;
+ Sc10ColAttr aFrame;
+ Sc10ColAttr aRaster;
+ Sc10ColAttr aValue;
+ Sc10ColAttr aColor;
+ Sc10ColAttr aFrameColor;
+ Sc10ColAttr aFlag;
+ Sc10ColAttr aPattern;
+
+ if (nError == 0) LoadAttr(aFont);
+ if (nError == 0) LoadAttr(aAttr);
+ if (nError == 0) LoadAttr(aJustify);
+ if (nError == 0) LoadAttr(aFrame);
+ if (nError == 0) LoadAttr(aRaster);
+ if (nError == 0) LoadAttr(aValue);
+ if (nError == 0) LoadAttr(aColor);
+ if (nError == 0) LoadAttr(aFrameColor);
+ if (nError == 0) LoadAttr(aFlag);
+ if (nError == 0) LoadAttr(aPattern);
+
+ if (nError == 0)
+ {
+ USHORT nStart;
+ USHORT nEnd;
+ USHORT i;
+ UINT16 nLimit;
+ UINT16 nValue;
+ Sc10ColData *pColData;
+
+ // Font (Name, Groesse)
+ nStart = 0;
+ nEnd = 0;
+ nLimit = aFont.Count;
+ pColData = aFont.pData;
+ for( i = 0 ; i < nLimit ; i++, pColData++ )
+ {
+ //nEnd = aFont.pData[i].Row;
+ nEnd = pColData->Row;
+ //if ((nStart <= nEnd) && (aFont.pData[i].Value != 0))
+ if ((nStart <= nEnd) && (pColData->Value))
+ {
+ FontFamily eFam;
+ //Sc10FontData* pFont = pFontCollection->At(aFont.pData[i].Value);
+ Sc10FontData* pFont = pFontCollection->At(pColData->Value);
+ switch (pFont->PitchAndFamily & 0xF0)
+ {
+ case ffDontCare : eFam = FAMILY_DONTKNOW; break;
+ case ffRoman : eFam = FAMILY_ROMAN; break;
+ case ffSwiss : eFam = FAMILY_SWISS; break;
+ case ffModern : eFam = FAMILY_MODERN; break;
+ case ffScript : eFam = FAMILY_SCRIPT; break;
+ case ffDecorative : eFam = FAMILY_DECORATIVE; break;
+ }
+ ScPatternAttr aPattern(pDoc->GetPool());
+ aPattern.GetItemSet().Put(SvxFontItem(eFam, SC10TOSTRING( pFont->FaceName ), EMPTY_STRING));
+ aPattern.GetItemSet().Put(SvxFontHeightItem(Abs(pFont->Height)));
+ pDoc->ApplyPatternAreaTab(Col, nStart, Col, nEnd, Tab, aPattern);
+ }
+ nStart = nEnd + 1;
+ }
+
+ // Fontfarbe
+ nStart = 0;
+ nEnd = 0;
+ nLimit = aColor.Count;
+ pColData = aColor.pData;
+ for( i = 0 ; i < nLimit ; i++, pColData++ )
+ {
+ //nEnd = aColor.pData[i].Row;
+ nEnd = pColData->Row;
+ //if ((nStart <= nEnd) && (aColor.pData[i].Value != 0))
+ if ((nStart <= nEnd) && (pColData->Value))
+ {
+ Color TextColor(COL_BLACK);
+ lcl_ChangeColor((pColData->Value & 0x000F), TextColor);
+ ScPatternAttr aPattern(pDoc->GetPool());
+ aPattern.GetItemSet().Put(SvxColorItem(TextColor));
+ pDoc->ApplyPatternAreaTab(Col, nStart, Col, nEnd, Tab, aPattern);
+ }
+ nStart = nEnd + 1;
+ }
+
+ // Fontattribute (Fett, Kursiv...)
+ nStart = 0;
+ nEnd = 0;
+ nLimit = aAttr.Count;
+ pColData = aAttr.pData;
+ for( i = 0 ; i < nLimit ; i++, pColData++ )
+ {
+ nEnd = pColData->Row;
+ nValue = pColData->Value;
+ if ((nStart <= nEnd) && (nValue))
+ {
+ ScPatternAttr aPattern(pDoc->GetPool());
+ if ((nValue & atBold) == atBold)
+ aPattern.GetItemSet().Put(SvxWeightItem(WEIGHT_BOLD));
+ if ((nValue & atItalic) == atItalic)
+ aPattern.GetItemSet().Put(SvxPostureItem(ITALIC_NORMAL));
+ if ((nValue & atUnderline) == atUnderline)
+ aPattern.GetItemSet().Put(SvxUnderlineItem(UNDERLINE_SINGLE));
+ if ((nValue & atStrikeOut) == atStrikeOut)
+ aPattern.GetItemSet().Put(SvxCrossedOutItem(STRIKEOUT_SINGLE));
+ pDoc->ApplyPatternAreaTab(Col, nStart, Col, nEnd, Tab, aPattern);
+ }
+ nStart = nEnd + 1;
+ }
+
+ // Zellausrichtung
+ nStart = 0;
+ nEnd = 0;
+ nLimit = aJustify.Count;
+ pColData = aJustify.pData;
+ for( i = 0 ; i < nLimit ; i++, pColData++ )
+ {
+ nEnd = pColData->Row;
+ nValue = pColData->Value;
+ if ((nStart <= nEnd) && (nValue))
+ {
+ ScPatternAttr aPattern(pDoc->GetPool());
+ USHORT HorJustify = (nValue & 0x000F);
+ USHORT VerJustify = (nValue & 0x00F0) >> 4;
+ USHORT OJustify = (nValue & 0x0F00) >> 8;
+ USHORT EJustify = (nValue & 0xF000) >> 12;
+
+ switch (HorJustify)
+ {
+ case hjLeft:
+ aPattern.GetItemSet().Put(SvxHorJustifyItem(SVX_HOR_JUSTIFY_LEFT));
+ break;
+ case hjCenter:
+ aPattern.GetItemSet().Put(SvxHorJustifyItem(SVX_HOR_JUSTIFY_CENTER));
+ break;
+ case hjRight:
+ aPattern.GetItemSet().Put(SvxHorJustifyItem(SVX_HOR_JUSTIFY_RIGHT));
+ break;
+ }
+
+ switch (VerJustify)
+ {
+ case vjTop:
+ aPattern.GetItemSet().Put(SvxVerJustifyItem(SVX_VER_JUSTIFY_TOP));
+ break;
+ case vjCenter:
+ aPattern.GetItemSet().Put(SvxVerJustifyItem(SVX_VER_JUSTIFY_CENTER));
+ break;
+ case vjBottom:
+ aPattern.GetItemSet().Put(SvxVerJustifyItem(SVX_VER_JUSTIFY_BOTTOM));
+ break;
+ }
+
+ if (OJustify & ojWordBreak)
+ aPattern.GetItemSet().Put(SfxBoolItem(TRUE));
+ if (OJustify & ojBottomTop)
+ aPattern.GetItemSet().Put(SvxOrientationItem(SVX_ORIENTATION_BOTTOMTOP));
+ else if (OJustify & ojTopBottom)
+ aPattern.GetItemSet().Put(SvxOrientationItem(SVX_ORIENTATION_TOPBOTTOM));
+
+ INT16 Margin = Max((USHORT)20, (USHORT)(EJustify * 20));
+ if (((OJustify & ojBottomTop) == ojBottomTop) || ((OJustify & ojBottomTop) == ojBottomTop))
+ aPattern.GetItemSet().Put(SvxMarginItem(20, Margin, 20, Margin));
+ else
+ aPattern.GetItemSet().Put(SvxMarginItem(Margin, 20, Margin, 20));
+ pDoc->ApplyPatternAreaTab(Col, nStart, Col, nEnd, Tab, aPattern);
+ }
+ nStart = nEnd + 1;
+ }
+ // Umrandung
+ BOOL bEnd = FALSE;
+ USHORT nColorIndex = 0;
+ USHORT nFrameIndex = 0;
+
+ // Special Fix...
+ const UINT32 nHelpMeStart = 100;
+ UINT32 nHelpMe = nHelpMeStart;
+ USHORT nColorIndexOld = nColorIndex;
+ USHORT nFrameIndexOld = nColorIndex;
+
+ nEnd = 0;
+ nStart = 0;
+ while( !bEnd && nHelpMe )
+ {
+ pColData = &aFrame.pData[ nFrameIndex ];
+
+ USHORT nValue = pColData->Value;
+ USHORT nLeft = 0;
+ USHORT nTop = 0;
+ USHORT nRight = 0;
+ USHORT nBottom = 0;
+ USHORT fLeft = ( nValue & 0x000F );
+ USHORT fTop = ( nValue & 0x00F0 ) >> 4;
+ USHORT fRight = ( nValue & 0x0F00 ) >> 8;
+ USHORT fBottom = ( nValue & 0xF000 ) >> 12;
+
+ if( fLeft > 1 )
+ nLeft = 50;
+ else if( fLeft > 0 )
+ nLeft = 20;
+
+ if( fTop > 1 )
+ nTop = 50;
+ else if( fTop > 0 )
+ nTop = 20;
+
+ if( fRight > 1 )
+ nRight = 50;
+ else if( fRight > 0 )
+ nRight = 20;
+
+ if( fBottom > 1 )
+ nBottom = 50;
+ else if( fBottom > 0 )
+ nBottom = 20;
+
+ Color ColorLeft( COL_BLACK );
+ Color ColorTop( COL_BLACK );
+ Color ColorRight( COL_BLACK );
+ Color ColorBottom( COL_BLACK );
+ USHORT nFrmColVal = aFrameColor.pData[ nColorIndex ].Value;
+ USHORT nFrmColRow = aFrameColor.pData[ nColorIndex ].Row;
+ USHORT cLeft = ( nFrmColVal & 0x000F );
+ USHORT cTop = ( nFrmColVal & 0x00F0 ) >> 4;
+ USHORT cRight = ( nFrmColVal & 0x0F00 ) >> 8;
+ USHORT cBottom = ( nFrmColVal & 0xF000 ) >> 12;
+
+ lcl_ChangeColor( cLeft, ColorLeft );
+ lcl_ChangeColor( cTop, ColorTop );
+ lcl_ChangeColor( cRight, ColorRight );
+ lcl_ChangeColor( cBottom, ColorBottom );
+
+ if( pColData->Row < nFrmColRow )
+ {
+ nEnd = pColData->Row;
+ if( nFrameIndex < ( aFrame.Count - 1 ) )
+ nFrameIndex++;
+ }
+ else if( pColData->Row > nFrmColRow )
+ {
+ nEnd = aFrameColor.pData[ nColorIndex ].Row;
+ if( nColorIndex < ( aFrameColor.Count - 1 ) )
+ nColorIndex++;
+ }
+ else
+ {
+ nEnd = nFrmColRow;
+ if( nFrameIndex < (aFrame.Count - 1 ) )
+ nFrameIndex++;
+ if( nColorIndex < ( aFrameColor.Count - 1 ) )
+ nColorIndex++;
+ }
+ if( ( nStart <= nEnd ) && ( nValue != 0 ) )
+ {
+ ScPatternAttr aPattern(pDoc->GetPool());
+ SvxBorderLine aLine;
+ SvxBoxItem aBox;
+
+ aLine.SetOutWidth( nLeft );
+ aLine.SetColor( ColorLeft );
+ aBox.SetLine( &aLine, BOX_LINE_LEFT );
+
+ aLine.SetOutWidth( nTop );
+ aLine.SetColor( ColorTop );
+ aBox.SetLine( &aLine, BOX_LINE_TOP );
+
+ aLine.SetOutWidth( nRight );
+ aLine.SetColor( ColorRight );
+ aBox.SetLine( &aLine, BOX_LINE_RIGHT );
+
+ aLine.SetOutWidth( nBottom );
+ aLine.SetColor( ColorBottom );
+ aBox.SetLine( &aLine, BOX_LINE_BOTTOM );
+
+ aPattern.GetItemSet().Put( aBox );
+ pDoc->ApplyPatternAreaTab( Col, nStart, Col, nEnd, Tab, aPattern );
+ }
+ nStart = nEnd + 1;
+
+ bEnd = ( nFrameIndex == ( aFrame.Count - 1 ) ) && ( nColorIndex == ( aFrameColor.Count - 1 ) );
+
+ if( nColorIndexOld != nColorIndex || nFrameIndexOld != nFrameIndex )
+ {
+ nColorIndexOld = nColorIndex;
+ nFrameIndexOld = nFrameIndex;
+ nHelpMe = nHelpMeStart;
+ }
+ else
+ nHelpMe--;
+
+ pColData++;
+ }
+
+ // ACHTUNG: Code bis hier ueberarbeitet ... jetzt hab' ich keinen Bock mehr! (GT)
+
+ // Hintergrund (Farbe, Raster)
+ USHORT nRasterIndex = 0;
+ bEnd = FALSE;
+ nColorIndex = 0;
+ nEnd = 0;
+ nStart = 0;
+
+ // Special Fix...
+ nHelpMe = nHelpMeStart;
+ USHORT nRasterIndexOld = nRasterIndex;
+
+ while( !bEnd && nHelpMe )
+ {
+ USHORT nBColor = ( aColor.pData[ nColorIndex ].Value & 0x00F0 ) >> 4;
+ USHORT nRColor = ( aColor.pData[ nColorIndex ].Value & 0x0F00 ) >> 8;
+ Color aBColor( COL_BLACK );
+
+ lcl_ChangeColor( nBColor, aBColor );
+
+ if( nBColor == 0 )
+ aBColor.SetColor( COL_WHITE );
+ else if( nBColor == 15 )
+ aBColor.SetColor( COL_BLACK );
+
+ Color aRColor( COL_BLACK );
+
+ lcl_ChangeColor( nRColor, aRColor );
+
+ ScPatternAttr aPattern( pDoc->GetPool() );
+
+ UINT16 nFact;
+ BOOL bSwapCol = FALSE;
+ BOOL bSetItem = TRUE;
+ switch ( aRaster.pData[ nRasterIndex ].Value )
+ {
+ case raNone: nFact = 0xffff; bSwapCol = TRUE; bSetItem = (nBColor > 0); break;
+ case raGray12: nFact = (0xffff / 100) * 12; break;
+ case raGray25: nFact = (0xffff / 100) * 25; break;
+ case raGray50: nFact = (0xffff / 100) * 50; break;
+ case raGray75: nFact = (0xffff / 100) * 75; break;
+ default: nFact = 0xffff; bSetItem = (nRColor < 15);
+ }
+ if ( bSetItem )
+ {
+ if( bSwapCol )
+ aPattern.GetItemSet().Put( SvxBrushItem( GetMixedColor( aBColor, aRColor, nFact ) ) );
+ else
+ aPattern.GetItemSet().Put( SvxBrushItem( GetMixedColor( aRColor, aBColor, nFact ) ) );
+ }
+ if( aRaster.pData[ nRasterIndex ].Row < aColor.pData[ nColorIndex ].Row )
+ {
+ nEnd = aRaster.pData[ nRasterIndex ].Row;
+ if( nRasterIndex < ( aRaster.Count - 1 ) )
+ nRasterIndex++;
+ }
+ else if( aRaster.pData[ nRasterIndex ].Row > aColor.pData[ nColorIndex ].Row )
+ {
+ nEnd = aColor.pData[ nColorIndex ].Row;
+ if( nColorIndex < ( aColor.Count - 1 ) )
+ nColorIndex++;
+ }
+ else
+ {
+ nEnd = aColor.pData[ nColorIndex ].Row;
+ if( nRasterIndex < ( aRaster.Count - 1 ) )
+ nRasterIndex++;
+ if( nColorIndex < ( aColor.Count - 1 ) )
+ nColorIndex++;
+ }
+ if( nStart <= nEnd )
+ pDoc->ApplyPatternAreaTab( Col, nStart, Col, nEnd, Tab, aPattern );
+
+ nStart = nEnd + 1;
+
+ bEnd = ( nRasterIndex == ( aRaster.Count - 1 ) ) && ( nColorIndex == ( aColor.Count - 1 ) );
+
+ if( nColorIndexOld != nColorIndex || nRasterIndexOld != nRasterIndex )
+ {
+ nColorIndexOld = nColorIndex;
+ nRasterIndexOld = nRasterIndex;
+ nHelpMe = nHelpMeStart;
+ }
+ else
+ nHelpMe--;
+
+ nHelpMe--;
+ }
+
+ // Zahlenformate
+ nStart = 0;
+ nEnd = 0;
+ nLimit = aValue.Count;
+ pColData = aValue.pData;
+ for (i=0; i<nLimit; i++, pColData++)
+ {
+ nEnd = pColData->Row;
+ nValue = pColData->Value;
+ if ((nStart <= nEnd) && (nValue))
+ {
+ ULONG nKey = 0;
+ USHORT nFormat = (nValue & 0x00FF);
+ USHORT nInfo = (nValue & 0xFF00) >> 8;
+ ChangeFormat(nFormat, nInfo, nKey);
+ ScPatternAttr aPattern(pDoc->GetPool());
+ aPattern.GetItemSet().Put(SfxUInt32Item(ATTR_VALUE_FORMAT, (UINT32)nKey));
+ pDoc->ApplyPatternAreaTab(Col, nStart, Col, nEnd, Tab, aPattern);
+ }
+ nStart = nEnd + 1;
+ }
+
+ // Zellattribute (Schutz, Versteckt...)
+ nStart = 0;
+ nEnd = 0;
+ for (i=0; i<aFlag.Count; i++)
+ {
+ nEnd = aFlag.pData[i].Row;
+ if ((nStart <= nEnd) && (aFlag.pData[i].Value != 0))
+ {
+ BOOL bProtect = ((aFlag.pData[i].Value & paProtect) == paProtect);
+ BOOL bHFormula = ((aFlag.pData[i].Value & paHideFormula) == paHideFormula);
+ BOOL bHCell = ((aFlag.pData[i].Value & paHideAll) == paHideAll);
+ BOOL bHPrint = ((aFlag.pData[i].Value & paHidePrint) == paHidePrint);
+ ScPatternAttr aPattern(pDoc->GetPool());
+ aPattern.GetItemSet().Put(ScProtectionAttr(bProtect, bHFormula, bHCell, bHPrint));
+ pDoc->ApplyPatternAreaTab(Col, nStart, Col, nEnd, Tab, aPattern);
+ }
+ nStart = nEnd + 1;
+ }
+
+ // ZellVorlagen
+ nStart = 0;
+ nEnd = 0;
+ USHORT Row = 10;
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ for (i=0; i<aPattern.Count; i++)
+ {
+ nEnd = aPattern.pData[i].Row;
+ if ((nStart <= nEnd) && (aPattern.pData[i].Value != 0))
+ {
+ USHORT nPatternIndex = (aPattern.pData[i].Value & 0x00FF) - 1;
+ Sc10PatternData* pPattern = pPatternCollection->At(nPatternIndex);
+ if (pPattern != NULL)
+ {
+ ScStyleSheet* pStyle = (ScStyleSheet*) pStylePool->Find(
+ SC10TOSTRING( pPattern->Name ), SFX_STYLE_FAMILY_PARA);
+
+ if (pStyle != NULL)
+ pDoc->ApplyStyleAreaTab(Col, nStart, Col, nEnd, Tab, *pStyle);
+ }
+ }
+ nStart = nEnd + 1;
+ }
+ }
+
+ delete[] aFont.pData;
+ delete[] aAttr.pData;
+ delete[] aJustify.pData;
+ delete[] aFrame.pData;
+ delete[] aRaster.pData;
+ delete[] aValue.pData;
+ delete[] aColor.pData;
+ delete[] aFrameColor.pData;
+ delete[] aFlag.pData;
+ delete[] aPattern.pData;
+}
+
+
+void Sc10Import::LoadAttr(Sc10ColAttr& rAttr)
+{
+ rStream >> rAttr.Count;
+ rAttr.pData = new Sc10ColData[rAttr.Count];
+ if (rAttr.pData != NULL)
+ {
+ for (USHORT i = 0; i < rAttr.Count; i++)
+ {
+ rStream >> rAttr.pData[i].Row;
+ rStream >> rAttr.pData[i].Value;
+ }
+ //rStream.Read(rAttr.pData, rAttr.Count * sizeof(Sc10ColData));
+ nError = rStream.GetError();
+ }
+ else
+ nError = errOutOfMemory;
+}
+
+
+void Sc10Import::ChangeFormat(USHORT nFormat, USHORT nInfo, ULONG& nKey)
+{
+ // Achtung: Die Formate werden nur auf die StarCalc 3.0 internen Formate gemappt
+ // Korrekterweise muessten zum Teil neue Formate erzeugt werden (sollte Stephan sich ansehen)
+ nKey = 0;
+ switch (nFormat)
+ {
+ case vfStandard :
+ if (nInfo > 0)
+ nKey = 2;
+ break;
+ case vfMoney :
+ if (nInfo > 0)
+ nKey = 21;
+ else
+ nKey = 20;
+ break;
+ case vfThousend :
+ if (nInfo > 0)
+ nKey = 4;
+ else
+ nKey = 5;
+ break;
+ case vfPercent :
+ if (nInfo > 0)
+ nKey = 11;
+ else
+ nKey = 10;
+ break;
+ case vfExponent :
+ nKey = 60;
+ break;
+ case vfZerro :
+ // Achtung kein Aequivalent
+ break;
+ case vfDate :
+ switch (nInfo)
+ {
+ case df_NDMY_Long :
+ nKey = 31;
+ break;
+ case df_DMY_Long :
+ nKey = 30;
+ break;
+ case df_MY_Long :
+ nKey = 32;
+ break;
+ case df_NDM_Long :
+ nKey = 31;
+ break;
+ case df_DM_Long :
+ nKey = 33;
+ break;
+ case df_M_Long :
+ nKey = 34;
+ break;
+ case df_NDMY_Short :
+ nKey = 31;
+ break;
+ case df_DMY_Short :
+ nKey = 30;
+ break;
+ case df_MY_Short :
+ nKey = 32;
+ break;
+ case df_NDM_Short :
+ nKey = 31;
+ break;
+ case df_DM_Short :
+ nKey = 33;
+ break;
+ case df_M_Short :
+ nKey = 34;
+ break;
+ case df_Q_Long :
+ nKey = 35;
+ break;
+ case df_Q_Short :
+ nKey = 35;
+ break;
+ default :
+ nKey = 30;
+ break;
+ }
+ break;
+ case vfTime :
+ switch (nInfo)
+ {
+ case tf_HMS_Long :
+ nKey = 41;
+ break;
+ case tf_HM_Long :
+ nKey = 40;
+ break;
+ case tf_HMS_Short :
+ nKey = 43;
+ break;
+ case tf_HM_Short :
+ nKey = 42;
+ break;
+ default :
+ nKey = 41;
+ break;
+ }
+ break;
+ case vfBoolean :
+ nKey = 99;
+ break;
+ case vfStandardRed :
+ if (nInfo > 0)
+ nKey = 2;
+ break;
+ case vfMoneyRed :
+ if (nInfo > 0)
+ nKey = 23;
+ else
+ nKey = 22;
+ break;
+ case vfThousendRed :
+ if (nInfo > 0)
+ nKey = 4;
+ else
+ nKey = 5;
+ break;
+ case vfPercentRed :
+ if (nInfo > 0)
+ nKey = 11;
+ else
+ nKey = 10;
+ break;
+ case vfExponentRed :
+ nKey = 60;
+ break;
+ case vfFormula :
+ break;
+ case vfString :
+ break;
+ }
+}
+
+
+void Sc10Import::LoadObjects()
+{
+ USHORT ID;
+ rStream >> ID;
+ if (rStream.IsEof()) return;
+ if (ID == ObjectID)
+ {
+#ifdef SC10_SHOW_OBJECTS
+ // Achtung nur zu Debugzwecken
+ //-----------------------------------
+ pDoc->InsertTab(SC_TAB_APPEND, "GraphObjects");
+ USHORT nCol = 0;
+ USHORT nRow = 0;
+ USHORT nTab = 0;
+ pDoc->GetTable("GraphObjects", nTab);
+ pDoc->SetString(nCol++, nRow, nTab, "ObjectTyp");
+ pDoc->SetString(nCol++, nRow, nTab, "Col");
+ pDoc->SetString(nCol++, nRow, nTab, "Row");
+ pDoc->SetString(nCol++, nRow, nTab, "Tab");
+ pDoc->SetString(nCol++, nRow, nTab, "X");
+ pDoc->SetString(nCol++, nRow, nTab, "Y");
+ pDoc->SetString(nCol++, nRow, nTab, "W");
+ pDoc->SetString(nCol++, nRow, nTab, "H");
+ //-----------------------------------
+#endif
+
+ USHORT nAnz;
+ rStream >> nAnz;
+ sal_Char Reserved[32];
+ rStream.Read(Reserved, sizeof(Reserved));
+ nError = rStream.GetError();
+ if ((nAnz > 0) && (nError == 0))
+ {
+ BYTE ObjectType;
+ Sc10GraphHeader GraphHeader;
+ BOOL IsOleObject = FALSE; // Achtung dies ist nur ein Notnagel
+ for (USHORT i = 0; (i < nAnz) && (nError == 0) && !rStream.IsEof() && !IsOleObject; i++)
+ {
+ rStream >> ObjectType;
+ //rStream.Read(&GraphHeader, sizeof(GraphHeader));
+ lcl_ReadGraphHeader(rStream, GraphHeader);
+
+ double nPPTX = ScGlobal::nScreenPPTX;
+ double nPPTY = ScGlobal::nScreenPPTY;
+
+ long nStartX = 0;
+ for (short nX=0; nX<GraphHeader.CarretX; nX++)
+ nStartX += pDoc->GetColWidth(nX, GraphHeader.CarretZ);
+ nStartX = (long) ( nStartX * HMM_PER_TWIPS );
+ nStartX += (long) ( GraphHeader.x / nPPTX * HMM_PER_TWIPS );
+ long nSizeX = (long) ( GraphHeader.w / nPPTX * HMM_PER_TWIPS );
+ long nStartY = 0;
+ for (short nY=0; nY<GraphHeader.CarretY; nY++)
+ nStartY += pDoc->FastGetRowHeight(nY, GraphHeader.CarretZ);
+ nStartY = (long) ( nStartY * HMM_PER_TWIPS );
+ nStartY += (long) ( GraphHeader.y / nPPTY * HMM_PER_TWIPS );
+ long nSizeY = (long) ( GraphHeader.h / nPPTY * HMM_PER_TWIPS );
+
+#ifdef SC10_SHOW_OBJECTS
+ // Achtung nur zu Debugzwecken
+ //-----------------------------------
+ nCol = 0;
+ nRow++;
+ switch (ObjectType)
+ {
+ case otOle :
+ pDoc->SetString(nCol++, nRow, nTab, "Ole-Object");
+ break;
+ case otImage :
+ pDoc->SetString(nCol++, nRow, nTab, "Image-Object");
+ break;
+ case otChart :
+ pDoc->SetString(nCol++, nRow, nTab, "Chart-Object");
+ break;
+ default :
+ pDoc->SetString(nCol++, nRow, nTab, "ERROR");
+ break;
+ }
+ pDoc->SetValue(nCol++, nRow, nTab, GraphHeader.CarretX);
+ pDoc->SetValue(nCol++, nRow, nTab, GraphHeader.CarretY);
+ pDoc->SetValue(nCol++, nRow, nTab, GraphHeader.CarretZ);
+ pDoc->SetValue(nCol++, nRow, nTab, GraphHeader.x);
+ pDoc->SetValue(nCol++, nRow, nTab, GraphHeader.y);
+ pDoc->SetValue(nCol++, nRow, nTab, GraphHeader.w);
+ pDoc->SetValue(nCol++, nRow, nTab, GraphHeader.h);
+ //-----------------------------------
+#endif
+
+ switch (ObjectType)
+ {
+ case otOle :
+ // Achtung hier muss sowas wie OleLoadFromStream passieren
+ IsOleObject = TRUE;
+ break;
+ case otImage :
+ {
+ Sc10ImageHeader ImageHeader;
+ //rStream.Read(&ImageHeader, sizeof(ImageHeader));
+ lcl_ReadImageHeaer(rStream, ImageHeader);
+
+ // Achtung nun kommen die Daten (Bitmap oder Metafile)
+ // Typ = 1 Device Dependend Bitmap DIB
+ // Typ = 2 MetaFile
+ rStream.SeekRel(ImageHeader.Size);
+
+ if( ImageHeader.Typ != 1 && ImageHeader.Typ != 2 )
+ nError = errUnknownFormat;
+ break;
+ }
+ case otChart :
+ {
+ Sc10ChartHeader ChartHeader;
+ Sc10ChartSheetData ChartSheetData;
+ Sc10ChartTypeData* pTypeData = new Sc10ChartTypeData;
+ //rStream.Read(&ChartHeader, sizeof(ChartHeader));
+ lcl_ReadChartHeader(rStream, ChartHeader);
+
+ //! altes Metafile verwenden ??
+ rStream.SeekRel(ChartHeader.Size);
+
+ //rStream.Read(&ChartSheetData, sizeof(ChartSheetData));
+ lcl_ReadChartSheetData(rStream, ChartSheetData);
+
+ //rStream.Read(pTypeData, sizeof(Sc10ChartTypeData));
+ lcl_ReadChartTypeData(rStream, *pTypeData);
+
+ Rectangle aRect( Point(nStartX,nStartY), Size(nSizeX,nSizeY) );
+ Sc10InsertObject::InsertChart( pDoc, GraphHeader.CarretZ, aRect,
+ GraphHeader.CarretZ,
+ ChartSheetData.DataX1, ChartSheetData.DataY1,
+ ChartSheetData.DataX2, ChartSheetData.DataY2 );
+
+ delete pTypeData;
+ }
+ break;
+ default :
+ nError = errUnknownFormat;
+ break;
+ }
+ nError = rStream.GetError();
+ }
+ }
+ }
+ else
+ {
+ DBG_ERROR( "ObjectID" );
+ nError = errUnknownID;
+ }
+}
+
+
+
+
+//-----------------------------------------------------------------------------------------------
+
+FltError ScImportStarCalc10( SvStream& rStream, ScDocument* pDocument )
+{
+ rStream.Seek( 0UL );
+ Sc10Import aImport( rStream, pDocument );
+ return ( FltError ) aImport.Import();
+}
+
+
+
diff --git a/sc/source/filter/starcalc/scfobj.cxx b/sc/source/filter/starcalc/scfobj.cxx
new file mode 100644
index 000000000000..03adfe27b479
--- /dev/null
+++ b/sc/source/filter/starcalc/scfobj.cxx
@@ -0,0 +1,390 @@
+/*************************************************************************
+ *
+ * $RCSfile: scfobj.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#if defined WIN
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX
+//#define _FILTER_HXX
+//#define _SVLBOXITM_HXX
+//#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX ***
+//#define _SFXOBJFACE_HXX ***
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX ***
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX ***
+//#define _SFXDOCTDLG_HXX ***
+//#define _SFX_TEMPLDLG_HXX ***
+//#define _SFXNEW_HXX ***
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX ***
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+//#define _ARGS_HXX //*
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+//#define _SIDLL_HXX ***
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdoole2.hxx>
+#include <svx/svdpage.hxx>
+#include <sfx2/objsh.hxx>
+#include <so3/ipobj.hxx>
+#include <so3/svstor.hxx>
+#include <sch/schdll.hxx>
+#include <sch/schdll0.hxx>
+#include <sch/memchrt.hxx>
+#include <sfx2/app.hxx>
+
+#include "scfobj.hxx"
+#include "document.hxx"
+#include "drwlayer.hxx"
+#include "chartarr.hxx"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+
+//==================================================================
+
+void Sc10InsertObject::InsertChart( ScDocument* pDoc, USHORT nDestTab, const Rectangle& rRect,
+ USHORT nSrcTab, USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 )
+{
+ // wenn Chart nicht installiert ist, darf nicht auf SCH_MOD zugegriffen werden!
+ if ( !SFX_APP()->HasFeature(SFX_FEATURE_SCHART) )
+ return;
+
+ SvStorageRef aStor = new SvStorage(String());
+ SvInPlaceObjectRef aNewIPObj = &(( SvFactory *)
+ SvInPlaceObject::ClassFactory()) ->CreateAndInit(
+ *SCH_MOD()->pSchChartDocShellFactory, aStor );
+
+ if ( aNewIPObj.Is() )
+ {
+ String aName = pDoc->GetDocumentShell()->InsertObject( aNewIPObj, String() )->GetObjName();
+ SdrOle2Obj* pSdrOle2Obj = new SdrOle2Obj( aNewIPObj, aName, rRect );
+
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ if (!pModel)
+ {
+ pDoc->InitDrawLayer();
+ pModel = pDoc->GetDrawLayer();
+ DBG_ASSERT(pModel,"DrawLayer ?");
+ }
+
+ SdrPage* pPage = pModel->GetPage(nDestTab);
+ DBG_ASSERT(pPage,"Page ?");
+ pPage->InsertObject(pSdrOle2Obj);
+
+ pSdrOle2Obj->SetLogicRect(rRect); // erst nach InsertObject !!!
+ aNewIPObj->SetVisAreaSize(rRect.GetSize());
+
+ // hier kann das Chart noch nicht mit Daten gefuettert werden,
+ // weil die Formeln noch nicht berechnet sind.
+ // Deshalb in die ChartCollection, die Daten werden dann im
+ // Sc10Import dtor geholt.
+
+ ScChartCollection* pColl = pDoc->GetChartCollection();
+ pColl->Insert( new ScChartArray( pDoc, nSrcTab, nX1, nY1, nX2, nY2, aName ) );
+ }
+}
+
+
+
diff --git a/sc/source/filter/xcl97/makefile.mk b/sc/source/filter/xcl97/makefile.mk
new file mode 100644
index 000000000000..25c19b2a63b8
--- /dev/null
+++ b/sc/source/filter/xcl97/makefile.mk
@@ -0,0 +1,109 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=xcl97
+
+AUTOSEG=true
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\pch\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ xcl97dum.cxx \
+ xcl97esc.cxx \
+ xcl97exp.cxx \
+ xcl97rch.cxx \
+ xcl97rec.cxx \
+ xcl97piv.cxx
+
+
+SLOFILES = \
+ $(SLO)$/xcl97dum.obj \
+ $(SLO)$/xcl97esc.obj \
+ $(SLO)$/xcl97exp.obj \
+ $(SLO)$/xcl97rch.obj \
+ $(SLO)$/xcl97rec.obj \
+ $(SLO)$/xcl97piv.obj
+
+
+EXCEPTIONSFILES = \
+ $(SLO)$/xcl97rch.obj \
+ $(SLO)$/xcl97piv.obj
+
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/filter/xcl97/xcl97dum.cxx b/sc/source/filter/xcl97/xcl97dum.cxx
new file mode 100644
index 000000000000..f7eae91dbe4a
--- /dev/null
+++ b/sc/source/filter/xcl97/xcl97dum.cxx
@@ -0,0 +1,527 @@
+/*************************************************************************
+ *
+ * $RCSfile: xcl97dum.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#include "xcl97dum.hxx"
+
+
+// --- ExcDummy8_xx Data ---------------------------------------------
+
+// ... (8+) := neu in Biff8, ... (8*) := anders in Biff8
+
+const BYTE ExcDummy8_00a::pMyData[] = {
+ 0xe1, 0x00, 0x02, 0x00, 0xb0, 0x04, // INTERFACEHDR
+ 0xc1, 0x00, 0x02, 0x00, 0x00, 0x00, // MMS
+ 0xe2, 0x00, 0x00, 0x00, // INTERFACEEND
+ 0x5c, 0x00, 0x70, 0x00, // WRITEACCESS (8*)
+ 0x08, 0x00, 0x00, 0x53, 0x74, 0x61, 0x72, 0x43, // "StarCalc"
+ 0x61, 0x6C, 0x63, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x42, 0x00, 0x02, 0x00, 0xb0, 0x04, // CODEPAGE
+ 0x61, 0x01, 0x02, 0x00, 0x00, 0x00 // DSF (8+)
+};
+const UINT16 ExcDummy8_00a::nMyLen = sizeof(ExcDummy8_00a::pMyData);
+
+ // TABID (8+): ExcTabid
+
+const BYTE ExcDummy8_00b::pMyData[] = {
+ 0x9c, 0x00, 0x02, 0x00, 0x0e, 0x00 // FNGROUPCOUNT
+};
+const UINT16 ExcDummy8_00b::nMyLen = sizeof(ExcDummy8_00b::pMyData);
+
+
+const BYTE ExcDummy8_040::pMyData[] = {
+ 0x19, 0x00, 0x02, 0x00, 0x00, 0x00, // WINDOWPROTECT
+ 0x12, 0x00, 0x02, 0x00, 0x00, 0x00, // PROTECT
+ 0x13, 0x00, 0x02, 0x00, 0x00, 0x00, // PASSWORD
+ 0xaf, 0x01, 0x02, 0x00, 0x00, 0x00, // PROT4REV (8+)
+ 0xbc, 0x01, 0x02, 0x00, 0x00, 0x00, // PROT4REVPASS (8+)
+ 0x3d, 0x00, 0x12, 0x00, 0xe0, 0x01, 0x5a, 0x00, 0xcf, // WINDOW1
+ 0x3f, 0x4e, 0x2a, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x58, 0x02,
+ 0x40, 0x00, 0x02, 0x00, 0x00, 0x00, // BACKUP
+ 0x8d, 0x00, 0x02, 0x00, 0x00, 0x00 // HIDEOBJ
+};
+const UINT16 ExcDummy8_040::nMyLen = sizeof(ExcDummy8_040::pMyData);
+
+
+const BYTE ExcDummy8_041::pMyData[] = {
+ 0x0e, 0x00, 0x02, 0x00, 0x01, 0x00, // PRECISION
+ 0xb7, 0x01, 0x02, 0x00, 0x00, 0x00, // REFRESHALL (8+)
+ 0xda, 0x00, 0x02, 0x00, 0x00, 0x00 // BOOKBOOL
+};
+const UINT16 ExcDummy8_041::nMyLen = sizeof(ExcDummy8_041::pMyData);
+
+
+// 5 Default Font Records (8*)
+// Eigentlich nur 4 noetig, aber so bleibt der BaseIndex gleich mit Biff5.
+// FontNr. 4 (der fuenfte) existiert in Xcl nicht!
+const BYTE ExcDummy8_01::pMyData[] = {
+ 0x31, 0x00, 0x1a, 0x00,
+ 0xC8, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x90, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01,
+ 0x41, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6C, 0x00,
+
+ 0x31, 0x00, 0x1a, 0x00,
+ 0xC8, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x90, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01,
+ 0x41, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6C, 0x00,
+
+ 0x31, 0x00, 0x1a, 0x00,
+ 0xC8, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x90, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01,
+ 0x41, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6C, 0x00,
+
+ 0x31, 0x00, 0x1a, 0x00,
+ 0xC8, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x90, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01,
+ 0x41, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6C, 0x00,
+
+ 0x31, 0x00, 0x1a, 0x00,
+ 0xC8, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x90, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01,
+ 0x41, 0x00, 0x72, 0x00, 0x69, 0x00, 0x61, 0x00, 0x6C, 0x00
+};
+const UINT16 ExcDummy8_01::nMyLen = sizeof(ExcDummy8_01::pMyData);
+
+
+// 8 default FORMAT Records (8*) (DM Formats)
+const BYTE ExcDummy8_Fm::pMyData[] = {
+ 0x1e, 0x04, 0x1e, 0x00,
+ 0x05, 0x00, 0x19, 0x00, 0x00, 0x23, 0x2C, 0x23,
+ 0x23, 0x30, 0x5C, 0x20, 0x22, 0x44, 0x4D, 0x22,
+ 0x3B, 0x5C, 0x2D, 0x23, 0x2C, 0x23, 0x23, 0x30,
+ 0x5C, 0x20, 0x22, 0x44, 0x4D, 0x22,
+
+ 0x1e, 0x04, 0x23, 0x00,
+ 0x06, 0x00, 0x1E, 0x00, 0x00, 0x23, 0x2C, 0x23,
+ 0x23, 0x30, 0x5C, 0x20, 0x22, 0x44, 0x4D, 0x22,
+ 0x3B, 0x5B, 0x52, 0x65, 0x64, 0x5D, 0x5C, 0x2D,
+ 0x23, 0x2C, 0x23, 0x23, 0x30, 0x5C, 0x20, 0x22,
+ 0x44, 0x4D, 0x22,
+
+ 0x1e, 0x04, 0x24, 0x00,
+ 0x07, 0x00, 0x1F, 0x00, 0x00, 0x23, 0x2C, 0x23,
+ 0x23, 0x30, 0x2E, 0x30, 0x30, 0x5C, 0x20, 0x22,
+ 0x44, 0x4D, 0x22, 0x3B, 0x5C, 0x2D, 0x23, 0x2C,
+ 0x23, 0x23, 0x30, 0x2E, 0x30, 0x30, 0x5C, 0x20,
+ 0x22, 0x44, 0x4D, 0x22,
+
+ 0x1e, 0x04, 0x29, 0x00,
+ 0x08, 0x00, 0x24, 0x00, 0x00, 0x23, 0x2C, 0x23,
+ 0x23, 0x30, 0x2E, 0x30, 0x30, 0x5C, 0x20, 0x22,
+ 0x44, 0x4D, 0x22, 0x3B, 0x5B, 0x52, 0x65, 0x64,
+ 0x5D, 0x5C, 0x2D, 0x23, 0x2C, 0x23, 0x23, 0x30,
+ 0x2E, 0x30, 0x30, 0x5C, 0x20, 0x22, 0x44, 0x4D,
+ 0x22,
+
+ 0x1e, 0x04, 0x3e, 0x00,
+ 0x2A, 0x00, 0x39, 0x00, 0x00, 0x5F, 0x2D, 0x2A,
+ 0x20, 0x23, 0x2C, 0x23, 0x23, 0x30, 0x5C, 0x20,
+ 0x22, 0x44, 0x4D, 0x22, 0x5F, 0x2D, 0x3B, 0x5C,
+ 0x2D, 0x2A, 0x20, 0x23, 0x2C, 0x23, 0x23, 0x30,
+ 0x5C, 0x20, 0x22, 0x44, 0x4D, 0x22, 0x5F, 0x2D,
+ 0x3B, 0x5F, 0x2D, 0x2A, 0x20, 0x22, 0x2D, 0x22,
+ 0x5C, 0x20, 0x22, 0x44, 0x4D, 0x22, 0x5F, 0x2D,
+ 0x3B, 0x5F, 0x2D, 0x40, 0x5F, 0x2D,
+
+ 0x1e, 0x04, 0x3e, 0x00,
+ 0x29, 0x00, 0x39, 0x00, 0x00, 0x5F, 0x2D, 0x2A,
+ 0x20, 0x23, 0x2C, 0x23, 0x23, 0x30, 0x5C, 0x20,
+ 0x5F, 0x44, 0x5F, 0x4D, 0x5F, 0x2D, 0x3B, 0x5C,
+ 0x2D, 0x2A, 0x20, 0x23, 0x2C, 0x23, 0x23, 0x30,
+ 0x5C, 0x20, 0x5F, 0x44, 0x5F, 0x4D, 0x5F, 0x2D,
+ 0x3B, 0x5F, 0x2D, 0x2A, 0x20, 0x22, 0x2D, 0x22,
+ 0x5C, 0x20, 0x5F, 0x44, 0x5F, 0x4D, 0x5F, 0x2D,
+ 0x3B, 0x5F, 0x2D, 0x40, 0x5F, 0x2D,
+
+ 0x1e, 0x04, 0x46, 0x00,
+ 0x2C, 0x00, 0x41, 0x00, 0x00, 0x5F, 0x2D, 0x2A,
+ 0x20, 0x23, 0x2C, 0x23, 0x23, 0x30, 0x2E, 0x30,
+ 0x30, 0x5C, 0x20, 0x22, 0x44, 0x4D, 0x22, 0x5F,
+ 0x2D, 0x3B, 0x5C, 0x2D, 0x2A, 0x20, 0x23, 0x2C,
+ 0x23, 0x23, 0x30, 0x2E, 0x30, 0x30, 0x5C, 0x20,
+ 0x22, 0x44, 0x4D, 0x22, 0x5F, 0x2D, 0x3B, 0x5F,
+ 0x2D, 0x2A, 0x20, 0x22, 0x2D, 0x22, 0x3F, 0x3F,
+ 0x5C, 0x20, 0x22, 0x44, 0x4D, 0x22, 0x5F, 0x2D,
+ 0x3B, 0x5F, 0x2D, 0x40, 0x5F, 0x2D,
+
+ 0x1e, 0x04, 0x46, 0x00,
+ 0x2B, 0x00, 0x41, 0x00, 0x00, 0x5F, 0x2D, 0x2A,
+ 0x20, 0x23, 0x2C, 0x23, 0x23, 0x30, 0x2E, 0x30,
+ 0x30, 0x5C, 0x20, 0x5F, 0x44, 0x5F, 0x4D, 0x5F,
+ 0x2D, 0x3B, 0x5C, 0x2D, 0x2A, 0x20, 0x23, 0x2C,
+ 0x23, 0x23, 0x30, 0x2E, 0x30, 0x30, 0x5C, 0x20,
+ 0x5F, 0x44, 0x5F, 0x4D, 0x5F, 0x2D, 0x3B, 0x5F,
+ 0x2D, 0x2A, 0x20, 0x22, 0x2D, 0x22, 0x3F, 0x3F,
+ 0x5C, 0x20, 0x5F, 0x44, 0x5F, 0x4D, 0x5F, 0x2D,
+ 0x3B, 0x5F, 0x2D, 0x40, 0x5F, 0x2D
+};
+const UINT16 ExcDummy8_Fm::nMyLen = sizeof(ExcDummy8_Fm::pMyData);
+
+
+// 21 default XF Records (8*)
+const BYTE ExcDummy8_XF::pMyData[] = {
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x01, 0x00, 0x2B, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x01, 0x00, 0x29, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x01, 0x00, 0x09, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x01, 0x00, 0x2C, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
+
+ 0xe0, 0x00, 0x14, 0x00,
+ 0x01, 0x00, 0x2A, 0x00, 0xF5, 0xFF, 0x20, 0x00,
+ 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20
+
+};
+const UINT16 ExcDummy8_XF::nMyLen = sizeof(ExcDummy8_XF::pMyData);
+
+
+// 6 default STYLE Records (8*)
+const BYTE ExcDummy8_Style::pMyData[] = {
+ 0x93, 0x02, 0x04, 0x00, 0x10, 0x80, 0x03, 0xFF,
+ 0x93, 0x02, 0x04, 0x00, 0x11, 0x80, 0x06, 0xFF,
+ 0x93, 0x02, 0x04, 0x00, 0x12, 0x80, 0x05, 0xFF,
+ 0x93, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0xFF,
+ 0x93, 0x02, 0x04, 0x00, 0x13, 0x80, 0x04, 0xFF,
+ 0x93, 0x02, 0x04, 0x00, 0x14, 0x80, 0x07, 0xFF
+};
+const UINT16 ExcDummy8_Style::nMyLen = sizeof(ExcDummy8_Style::pMyData);
+
+
+// Natural Language Formulas Flag (8+) 0 := nein, 1:= ja
+const BYTE ExcDummy8_UsesElfs::pMyData[] = {
+ 0x60, 0x01, 0x02, 0x00, 0x00, 0x00
+};
+const UINT16 ExcDummy8_UsesElfs::nMyLen = sizeof(ExcDummy8_UsesElfs::pMyData);
+
+
+// Country always Germany
+const BYTE ExcDummy8_Country::pMyData[] = {
+ 0x8c, 0x00, 0x04, 0x00, 0x31, 0x00, 0x31, 0x00
+};
+const UINT16 ExcDummy8_Country::nMyLen = sizeof(ExcDummy8_Country::pMyData);
+
+
+const BYTE ExcDummy8_02::pMyData[] = {
+ 0x0d, 0x00, 0x02, 0x00, 0x01, 0x00, // CALCMODE
+ 0x0c, 0x00, 0x02, 0x00, 0x64, 0x00, // CALCCOUNT
+ 0x0f, 0x00, 0x02, 0x00, 0x01, 0x00, // REFMODE
+ 0x11, 0x00, 0x02, 0x00, 0x00, 0x00, // ITERATION
+ 0x10, 0x00, 0x08, 0x00, 0xfc, 0xa9, 0xf1, 0xd2, 0x4d, // DELTA
+ 0x62, 0x50, 0x3f,
+ 0x5f, 0x00, 0x02, 0x00, 0x01, 0x00, // SAVERECALC
+// 0x2a, 0x00, 0x02, 0x00, 0x00, 0x00, // PRINTHEADERS
+// 0x2b, 0x00, 0x02, 0x00, 0x01, 0x00, // PRINTGRIDLINES
+ 0x82, 0x00, 0x02, 0x00, 0x00, 0x00, // GRIDSET
+// 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // GUTS
+// 0x00, 0x00, 0x00,
+ 0x25, 0x02, 0x04, 0x00, 0x00, 0x00, 0xff, 0x00, // DEFAULTROWHEIGHT
+ 0x81, 0x00, 0x02, 0x00, 0xc1, 0x04, // WSBOOL
+// 0x14, 0x00, 0x00, 0x00, // HEADER (none) (8*)
+// 0x15, 0x00, 0x00, 0x00, // FOOTER (none) (8*)
+// 0x83, 0x00, 0x02, 0x00, 0x00, 0x00, // HCENTER
+// 0x84, 0x00, 0x02, 0x00, 0x00, 0x00 // VCENTER
+// 0xa1, 0x00, 0x22, 0x00, 0x00, 0x00, 0x31, 0x00, 0x01, // SETUP
+// 0x00, 0x01, 0x00, 0x01, 0x00, 0x44, 0x00, 0x72, 0x75,
+// 0x6e, 0x67, 0xc1, 0x8d, 0xb0, 0x82, 0xc1, 0x60, 0xe0,
+// 0x3f, 0xc1, 0x8d, 0xb0, 0x82, 0xc1, 0x60, 0xe0, 0x3f,
+// 0xf0, 0x00
+ };
+const UINT16 ExcDummy8_02::nMyLen = sizeof(ExcDummy8_02::pMyData);
+
+
+// --- class ExcDummy8_xx --------------------------------------------
+
+UINT16 ExcDummy8_00a::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_00a::GetData() const
+{
+ return pMyData;
+}
+
+
+
+UINT16 ExcDummy8_00b::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_00b::GetData() const
+{
+ return pMyData;
+}
+
+
+
+UINT16 ExcDummy8_040::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_040::GetData() const
+{
+ return pMyData;
+}
+
+
+
+UINT16 ExcDummy8_041::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_041::GetData() const
+{
+ return pMyData;
+}
+
+
+
+UINT16 ExcDummy8_01::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_01::GetData() const
+{
+ return pMyData;
+}
+
+
+
+UINT16 ExcDummy8_Fm::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_Fm::GetData() const
+{
+ return pMyData;
+}
+
+
+
+UINT16 ExcDummy8_XF::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_XF::GetData() const
+{
+ return pMyData;
+}
+
+
+
+UINT16 ExcDummy8_Style::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_Style::GetData() const
+{
+ return pMyData;
+}
+
+
+
+UINT16 ExcDummy8_UsesElfs::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_UsesElfs::GetData() const
+{
+ return pMyData;
+}
+
+
+
+UINT16 ExcDummy8_Country::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_Country::GetData() const
+{
+ return pMyData;
+}
+
+
+
+UINT16 ExcDummy8_02::GetLen() const
+{
+ return nMyLen;
+}
+
+
+const BYTE* ExcDummy8_02::GetData() const
+{
+ return pMyData;
+}
+
+
+
diff --git a/sc/source/filter/xcl97/xcl97esc.cxx b/sc/source/filter/xcl97/xcl97esc.cxx
new file mode 100644
index 000000000000..d26a35398ac2
--- /dev/null
+++ b/sc/source/filter/xcl97/xcl97esc.cxx
@@ -0,0 +1,641 @@
+/*************************************************************************
+ *
+ * $RCSfile: xcl97esc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#ifndef _SCHDLL0_HXX //autogen wg. SchModuleDummy
+#include <sch/schdll0.hxx>
+#endif
+#ifndef _OUTLOBJ_HXX //autogen wg. OutlinerParaObject
+#include <svx/outlobj.hxx>
+#endif
+#ifndef _SVDOTEXT_HXX //autogen wg. SdrTextObj
+#include <svx/svdotext.hxx>
+#endif
+#ifndef _SVDOBJ_HXX //autogen wg. SdrObject
+#include <svx/svdobj.hxx>
+#endif
+#ifndef _SVDOOLE2_HXX //autogen wg. SdrOle2Obj
+#include <svx/svdoole2.hxx>
+#endif
+#ifndef _IPOBJ_HXX //autogen wg. SvInPlaceObject
+#include <so3/ipobj.hxx>
+#endif
+#ifndef _SV_OUTDEV_HXX //autogen wg. OutputDevice
+#include <vcl/outdev.hxx>
+#endif
+#ifndef _TOOLS_TEMPFILE_HXX
+#include <tools/tempfile.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen wg. SvFileStream
+#include <tools/stream.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX //autogen wg. DBG_ERRORFILE
+#include <tools/debug.hxx>
+#endif
+
+#include "global.hxx"
+#include "document.hxx"
+#include "xcl97esc.hxx"
+#include "xcl97rec.hxx"
+#include "xcl97rch.hxx"
+
+
+// --- class XclEscherEx ---------------------------------------------
+
+XclEscherEx::XclEscherEx( SvStream& rStrm, UINT32 nDrawings, RootData& rRoot )
+ :
+ EscherEx( rStrm, nDrawings ),
+ rRootData( rRoot ),
+ pPicTempFile( NULL ),
+ pPicStrm( NULL ),
+ pCurrXclObj( NULL ),
+ pCurrAppData( NULL ),
+ pTheClientData( new XclEscherClientData ),
+ pAdditionalText( NULL ),
+ nAdditionalText( 0 )
+{
+ aOffsetMap.Insert( (void*) 0, LIST_APPEND ); // start of stream
+ // Xcl forgets OLE objects completely if the Escher object is not EMF and
+ // the corresponding OLE application is opened and nothing is changed.
+ SetOleEmf( TRUE );
+}
+
+
+XclEscherEx::~XclEscherEx()
+{
+ DBG_ASSERT( !aStack.Count(), "~XclEscherEx: stack not empty" );
+ DeleteCurrAppData();
+ delete pTheClientData;
+ if ( pPicStrm )
+ {
+ pPicStrm->Close();
+ delete pPicStrm;
+ }
+ if ( pPicTempFile )
+ delete pPicTempFile;
+}
+
+
+SvStream* XclEscherEx::QueryPicStream()
+{
+ if ( !pPicStrm )
+ {
+ if ( !pPicTempFile )
+ {
+ pPicTempFile = new TempFile;
+ if ( pPicTempFile->IsValid() )
+ pPicTempFile->EnableKillingFile();
+ else
+ {
+ delete pPicTempFile;
+ pPicTempFile = NULL;
+ }
+ }
+ if ( pPicTempFile )
+ {
+ pPicStrm = new SvFileStream( pPicTempFile->GetName(), STREAM_STD_READWRITE );
+ pPicStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ }
+ }
+ return pPicStrm;
+}
+
+
+void XclEscherEx::InsertAtCurrentPos( UINT32 nBytes, BOOL bCont )
+{
+ ULONG nPos = GetStreamPos();
+ ULONG nCnt = aOffsetMap.Count();
+ ULONG j, nOff;
+ for ( j=0, nOff = (ULONG) aOffsetMap.First(); j<nCnt;
+ j++, nOff = (ULONG) aOffsetMap.Next() )
+ {
+ if ( nOff >= nPos )
+ aOffsetMap.Replace( (void*) (nOff + nBytes) );
+ }
+ EscherEx::InsertAtCurrentPos( nBytes, bCont );
+}
+
+
+ULONG XclEscherEx::AddCurrentOffsetToMap()
+{
+ aOffsetMap.Insert( (void*) GetStreamPos(), LIST_APPEND );
+ return aOffsetMap.Count() - 1;
+}
+
+
+void XclEscherEx::ReplaceCurrentOffsetInMap( ULONG nPos )
+{
+ aOffsetMap.Replace( (void*) GetStreamPos(), nPos );
+}
+
+
+EscherExHostAppData* XclEscherEx::StartShape( const com::sun::star::uno::Reference<
+ com::sun::star::drawing::XShape >& rShape )
+{
+ if ( nAdditionalText )
+ nAdditionalText++;
+ BOOL bInGroup = ( pCurrXclObj != NULL );
+ if ( bInGroup )
+ { // stacked recursive group object
+ if ( !pCurrAppData->IsStackedGroup() )
+ { //! UpdateStopPos only once
+ pCurrAppData->SetStackedGroup( TRUE );
+ pCurrXclObj->UpdateStopPos();
+ }
+ }
+ aStack.Push( pCurrXclObj );
+ aStack.Push( pCurrAppData );
+ pCurrAppData = new XclEscherHostAppData;
+ const SdrObject* pObj = GetSdrObject( rShape );
+ if ( !pObj )
+ pCurrXclObj = new XclObjAny( rRootData ); // just what is it?!?
+ else
+ {
+ switch ( pObj->GetObjIdentifier() )
+ {
+ case OBJ_OLE2 :
+ {
+ //! not-const because GetObjRef may load the OLE object
+ SvInPlaceObjectRef xObj( ((SdrOle2Obj*)pObj)->GetObjRef() );
+ if ( xObj.Is() )
+ {
+ SvGlobalName aObjClsId( *xObj->GetSvFactory() );
+ if ( SchModuleDummy::HasID( aObjClsId ) )
+ { // yes, it's a chart diagram
+ rRootData.pObjRecs->Add( new XclObjChart( rRootData, rShape ) );
+ pCurrXclObj = NULL; // no metafile or whatsoever
+ }
+ else // metafile and OLE object
+ pCurrXclObj = new XclObjOle( rRootData, *pObj );
+ }
+ else // just a metafile
+ pCurrXclObj = new XclObjAny( rRootData );
+ }
+ break;
+ default:
+ pCurrXclObj = new XclObjAny( rRootData );
+ }
+ }
+ if ( pCurrXclObj )
+ {
+ if ( !rRootData.pObjRecs->Add( pCurrXclObj ) )
+ { // maximum count reached, object got deleted
+ pCurrXclObj = NULL;
+ }
+ else
+ {
+ pCurrAppData->SetClientData( pTheClientData );
+ if ( nAdditionalText == 0 )
+ {
+ if ( pObj )
+ {
+ if ( !bInGroup )
+ pCurrAppData->SetClientAnchor(
+ new XclEscherClientAnchor( rRootData,
+ XclEscherClientAnchor::GetMoveSizeFlag( *pObj ) ) );
+ const SdrTextObj* pTextObj = PTR_CAST( SdrTextObj, pObj );
+ if ( pTextObj )
+ {
+ const OutlinerParaObject* pParaObj = pTextObj->GetOutlinerParaObject();
+ if( pParaObj )
+ pCurrAppData->SetClientTextbox(
+ new XclEscherClientTextbox(
+ rRootData, *pTextObj, pCurrXclObj ) );
+ }
+ }
+ else
+ {
+ if ( !bInGroup )
+ pCurrAppData->SetClientAnchor(
+ new XclEscherClientAnchor( rRootData, 0 ) );
+ }
+ }
+ else if ( nAdditionalText == 3 )
+ {
+ if ( pAdditionalText )
+ {
+ pAdditionalText->SetXclObj( pCurrXclObj );
+ pCurrAppData->SetClientTextbox( pAdditionalText );
+ }
+ }
+ }
+ }
+ if ( !pCurrXclObj )
+ pCurrAppData->SetDontWriteShape( TRUE );
+ return pCurrAppData;
+}
+
+
+void XclEscherEx::EndShape( UINT16 nShapeType, UINT32 nShapeID )
+{
+ if ( !nShapeID && pCurrXclObj )
+ { // shape not written
+ XclObj* p = (XclObj*) rRootData.pObjRecs->Last();
+ DBG_ASSERT( p == pCurrXclObj, "XclEscherEx::EndShape: what object?" );
+ if ( p == pCurrXclObj )
+ {
+ rRootData.pObjRecs->Remove();
+ delete pCurrXclObj;
+ pCurrXclObj = NULL;
+ }
+ }
+ if ( pCurrXclObj )
+ {
+ if ( pCurrAppData->IsStackedGroup() )
+ pCurrXclObj->SetEscherShapeTypeGroup();
+ else
+ {
+ pCurrXclObj->SetEscherShapeType( nShapeType );
+ pCurrXclObj->UpdateStopPos();
+ }
+ }
+ DeleteCurrAppData();
+ pCurrAppData = (XclEscherHostAppData*) aStack.Pop();
+ pCurrXclObj = (XclObj*) aStack.Pop();
+ if ( nAdditionalText == 3 )
+ nAdditionalText = 0;
+}
+
+
+EscherExHostAppData* XclEscherEx::EnterAdditionalTextGroup()
+{
+ nAdditionalText = 1;
+ pAdditionalText = (XclEscherClientTextbox*) pCurrAppData->GetClientTextbox();
+ pCurrAppData->SetClientTextbox( NULL );
+ return pCurrAppData;
+}
+
+
+void XclEscherEx::DeleteCurrAppData()
+{
+ if ( pCurrAppData )
+ {
+ delete pCurrAppData->GetClientAnchor();
+// delete pCurrAppData->GetClientData();
+ delete pCurrAppData->GetClientTextbox();
+ delete pCurrAppData;
+ }
+}
+
+
+void XclEscherEx::EndDocument()
+{
+ Flush( pPicStrm );
+}
+
+
+// --- class XclEscher -----------------------------------------------
+
+#include <osl/file.hxx>
+XclEscher::XclEscher( UINT32 nDrawings, RootData& rRoot )
+{
+ pTempFile = new TempFile;
+ pTempFile->EnableKillingFile();
+ pStrm = new SvFileStream( pTempFile->GetName(), STREAM_STD_READWRITE );
+ pStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+ pEx = new XclEscherEx( *pStrm, nDrawings, rRoot );
+}
+
+
+XclEscher::~XclEscher()
+{
+ pStrm->Close();
+ delete pEx;
+ delete pStrm;
+ delete pTempFile;
+}
+
+
+// --- class XclEscherClientAnchor -----------------------------------
+
+XclEscherClientAnchor::XclEscherClientAnchor( RootData& rRoot, UINT16 nFlagP )
+ :
+ pRootData( &rRoot ),
+ nFlag( nFlagP ),
+ nCol1(0),
+ nX1(0),
+ nRow1(0),
+ nY1(0),
+ nCol2(0),
+ nX2(0),
+ nRow2(0),
+ nY2(0)
+{
+}
+
+
+XclEscherClientAnchor::XclEscherClientAnchor( RootData& rRoot, const SdrObject& rObj )
+ :
+ pRootData( &rRoot )
+{
+ nFlag = GetMoveSizeFlag( rObj );
+ const MapMode aSrc( MAP_100TH_MM );
+ const MapMode aDst( MAP_TWIP );
+ Rectangle aRect( OutputDevice::LogicToLogic( rObj.GetBoundRect(), aSrc, aDst ) );
+ Init( aRect );
+}
+
+
+UINT16 XclEscherClientAnchor::GetMoveSizeFlag( const SdrObject& rObj )
+{
+ // X==0,Y==1 := anchored at page => don't move, don't size
+ const Point& rAnchor = rObj.GetAnchorPos();
+ return (rAnchor.X() == 0 && rAnchor.Y() == 1) ? 3 : 0;
+}
+
+
+void XclEscherClientAnchor::Init( const Rectangle& rRect )
+{
+ const ScDocument* pDoc = pRootData->pDoc;
+ const USHORT nTab = *pRootData->pAktTab;
+
+ long nWidth = 0;
+ ColX( nCol1, nX1, 0, nWidth, rRect.TopLeft().X(), pDoc, nTab );
+ ColX( nCol2, nX2, nCol1, nWidth, rRect.BottomRight().X(), pDoc, nTab );
+
+ long nHeight = 0;
+ RowY( nRow1, nY1, 0, nHeight, rRect.TopLeft().Y(), pDoc, nTab );
+ RowY( nRow2, nY2, nRow1, nHeight, rRect.BottomRight().Y(), pDoc, nTab );
+}
+
+
+void XclEscherClientAnchor::ColX( UINT16& nCol, UINT16& nX, UINT16 nStart,
+ long& nWidth, long nPosX, const ScDocument* pDoc, USHORT nTab )
+{
+ long nW = 0;
+ for ( nCol = nStart; nCol <= MAXCOL; nCol++ )
+ {
+ nW = pDoc->GetColWidth( nCol, nTab );
+ if ( nWidth + nW > nPosX )
+ break;
+ nWidth += nW;
+ }
+ long n = nPosX - nWidth;
+ DBG_ASSERT( n < nW, "XclEscherClientAnchor::ColX: width?" );
+ nX = ( nW ? (UINT16) ((n * 1024) / nW) : 0 );
+}
+
+
+void XclEscherClientAnchor::RowY( UINT16& nRow, UINT16& nY, UINT16 nStart,
+ long& nHeight, long nPosY, const ScDocument* pDoc, USHORT nTab )
+{
+ long nH = 0;
+ for ( nRow = nStart; nRow <= MAXROW; nRow++ )
+ {
+ nH = pDoc->GetRowHeight( nRow, nTab );
+ if ( nHeight + nH > nPosY )
+ break;
+ nHeight += nH;
+ }
+ long n = nPosY - nHeight;
+ DBG_ASSERT( n < nH, "XclEscherClientAnchor::RowY: width?" );
+ nY = ( nH ? (UINT16) ((n * 255) / nH) : 0 );
+}
+
+
+// create comment note textbox, try 2 cols by 5 rows
+XclEscherClientAnchor::XclEscherClientAnchor( const ScDocument* pDoc,
+ const ScAddress& rPos )
+ :
+ pRootData( NULL ),
+ nFlag(2) // move but don't size
+{
+ USHORT nTab = rPos.Tab();
+ BOOL bBad = FALSE;
+ nCol1 = rPos.Col();
+ // go right
+ if ( !FindNextCol( nCol1, pDoc, nTab, 1 ) )
+ bBad = TRUE;
+ else
+ {
+ nCol2 = nCol1;
+ bBad = !FindNextCol( nCol2, pDoc, nTab, 1 );
+ }
+ if ( bBad )
+ { // go left
+ bBad = FALSE;
+ nCol2 = rPos.Col();
+ if ( !FindNextCol( nCol2, pDoc, nTab, -1 ) )
+ nCol1 = nCol2 = rPos.Col(); // hopeless
+ else
+ {
+ nCol1 = nCol2;
+ if ( !FindNextCol( nCol1, pDoc, nTab, -1 ) )
+ nCol1 = nCol2;
+ }
+ }
+ if ( nCol1 == nCol2 )
+ {
+ nX1 = 0;
+ nX2 = 1023;
+ }
+ else
+ {
+ nX1 = 0x00c0;
+ nX2 = 0x0326;
+ }
+
+ BOOL bTop = FALSE;
+ nRow1 = rPos.Row();
+ switch ( nRow1 )
+ {
+ case 0 :
+ case 1 :
+ nRow1 = 0;
+ bTop = (pDoc->GetRowFlags( nRow1, nTab ) & CR_HIDDEN) == 0;
+ break;
+ default:
+ nRow1 -= 2;
+ }
+ // go down
+ if ( !bTop && !FindNextRow( nRow1, pDoc, nTab, 1 ) )
+ bBad = TRUE;
+ else
+ {
+ nRow2 = nRow1;
+ for ( int j=0; j<4 && !bBad; j++ )
+ {
+ bBad = !FindNextRow( nRow2, pDoc, nTab, 1 );
+ }
+ }
+ if ( bBad )
+ { // go up
+ bBad = FALSE;
+ nRow2 = rPos.Row();
+ if ( !FindNextRow( nRow2, pDoc, nTab, -1 ) )
+ nRow1 = nRow2 = rPos.Row(); // hopeless
+ else
+ {
+ nRow1 = nRow2;
+ for ( int j=0; j<4 && !bBad; j++ )
+ {
+ USHORT nBkp = nRow1;
+ if ( !FindNextRow( nRow1, pDoc, nTab, -1 ) )
+ {
+ bBad = TRUE;
+ nRow1 = nBkp;
+ }
+ }
+ }
+ }
+ if ( nRow1 == nRow2 )
+ {
+ nY1 = 0;
+ nY2 = 255;
+ }
+ else if ( nRow1 == 0 && nRow1 == rPos.Row() )
+ {
+ nY1 = 0x001e;
+ nY2 = 0x0078;
+ }
+ else
+ {
+ nY1 = 0x0069;
+ nY2 = 0x00c4;
+ }
+}
+
+
+void XclEscherClientAnchor::SetDropDownPosition( const ScAddress& rAddr )
+{
+ nCol1 = rAddr.Col();
+ nRow1 = rAddr.Row();
+ nCol2 = nCol1 + 1;
+ nRow2 = nRow1 + 1;
+ nX1 = nY1 = nX2 = nY2 = 0;
+}
+
+
+BOOL XclEscherClientAnchor::FindNextCol( USHORT& nCol, const ScDocument* pDoc,
+ USHORT nTab, short nDir )
+{
+ while ( nDir < 0 ? 0 < nCol : nCol < MAXCOL )
+ {
+ nCol += nDir;
+ if ( (pDoc->GetColFlags( nCol, nTab ) & CR_HIDDEN) == 0 )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+BOOL XclEscherClientAnchor::FindNextRow( USHORT& nRow, const ScDocument* pDoc,
+ USHORT nTab, short nDir )
+{
+ while ( nDir < 0 ? 0 < nRow : nRow < MAXROW )
+ {
+ nRow += nDir;
+ if ( (pDoc->GetRowFlags( nRow, nTab ) & CR_HIDDEN) == 0 )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+void XclEscherClientAnchor::WriteData( EscherEx& rEx, const Rectangle& rRect )
+{
+ //! the rectangle is already in twips
+ Init( rRect );
+ WriteData( rEx );
+}
+
+
+void XclEscherClientAnchor::WriteData( EscherEx& rEx ) const
+{
+ rEx.AddAtom( 18, ESCHER_ClientAnchor );
+ rEx.GetStream() << nFlag
+ << nCol1 << nX1 << nRow1 << nY1
+ << nCol2 << nX2 << nRow2 << nY2;
+}
+
+
+// --- class XclEscherClientData -------------------------------------
+
+void XclEscherClientData::WriteData( EscherEx& rEx ) const
+{ // actual data is in the following OBJ record
+ rEx.AddAtom( 0, ESCHER_ClientData );
+}
+
+
+// --- class XclEscherClientTextbox -------------------------------------
+
+XclEscherClientTextbox::XclEscherClientTextbox( RootData& rRoot,
+ const SdrTextObj& rObj, XclObj* pObj )
+ :
+ rRootData( rRoot ),
+ rTextObj( rObj ),
+ pXclObj( pObj )
+{
+}
+
+
+void XclEscherClientTextbox::WriteData( EscherEx& rEx ) const
+{
+ pXclObj->SetText( rRootData, rTextObj );
+}
+
+
diff --git a/sc/source/filter/xcl97/xcl97rec.cxx b/sc/source/filter/xcl97/xcl97rec.cxx
new file mode 100644
index 000000000000..38379c1c6d39
--- /dev/null
+++ b/sc/source/filter/xcl97/xcl97rec.cxx
@@ -0,0 +1,2972 @@
+/*************************************************************************
+ *
+ * $RCSfile: xcl97rec.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SVDPOOL_HXX //autogen wg. SdrItemPool
+#include <svx/svdpool.hxx>
+#endif
+#ifndef _SDTAITM_HXX //autogen wg. SdrTextHorzAdjustItem, SdrTextVertAdjustItem
+#include <svx/sdtaitm.hxx>
+#endif
+#ifndef _SVDOTEXT_HXX //autogen wg. SdrTextObj
+#include <svx/svdotext.hxx>
+#endif
+#ifndef _OUTLOBJ_HXX //autogen wg. OutlinerParaObject
+#include <svx/outlobj.hxx>
+#endif
+#ifndef _EDITOBJ_HXX //autogen wg. EditTextObject
+#include <svx/editobj.hxx>
+#endif
+#ifndef _SVDOOLE2_HXX //autogen wg. SdrOle2Obj
+#include <svx/svdoole2.hxx>
+#endif
+#ifndef _IPOBJ_HXX //autogen wg. SvInPlaceObject
+#include <so3/ipobj.hxx>
+#endif
+#ifndef _SVSTOR_HXX //autogen wg. SvStorage
+#include <so3/svstor.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen wg. SfxItemSet
+#include <svtools/itemset.hxx>
+#endif
+
+#ifndef _TOOLS_SOLMATH_HXX // DoubleToString()
+#include <tools/solmath.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX // SFX_INIMAMAGER()
+#include <sfx2/inimgr.hxx>
+#endif
+#ifndef _URLOBJ_HXX // INetURLObject
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _ZFORMAT_HXX // SvNumberformat
+#include <svtools/zformat.hxx>
+#endif
+#ifndef SC_CELL_HXX // ScFormulaCell
+#include "cell.hxx"
+#endif
+
+#include "xcl97rec.hxx"
+#include "xcl97esc.hxx"
+#include "excupn.hxx"
+
+#include "scitems.hxx"
+#include <svx/boxitem.hxx>
+#include <svx/brshitem.hxx>
+
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+#include <svx/flditem.hxx>
+
+#include <stdio.h>
+
+#include "document.hxx"
+#include "conditio.hxx"
+#include "rangelst.hxx"
+#include "stlpool.hxx"
+
+
+// --- class XclSstList ----------------------------------------------
+
+XclSstList::XclSstList()
+{
+}
+
+
+XclSstList::~XclSstList()
+{
+ for ( XclUnicodeString* p = (XclUnicodeString*) First(); p;
+ p = (XclUnicodeString*) Next() )
+ {
+ delete p;
+ }
+}
+
+
+UINT32 XclSstList::Add( XclUnicodeString* pStr )
+{
+ Insert( pStr, LIST_APPEND );
+ return Count() - 1;
+}
+
+
+void XclSstList::_Save( SvStream& rStrm )
+{
+ if ( !Count() )
+ return ;
+ rStrm << GetNum() << GetLen();
+}
+
+
+void XclSstList::SaveCont( SvStream& rStrm )
+{
+ const UINT32 nCstTotal = Count();
+ if ( !nCstTotal )
+ return ;
+ SvMemoryStream aIsstInf( 8192 );
+ UINT32 nPerBucket = nCstTotal;
+ while ( nPerBucket > 0xFFFF )
+ { // just fit into 16bit
+ nPerBucket /= 2;
+ }
+ const UINT16 nDsst = Max( (UINT16) 8, (UINT16) nPerBucket );
+ UINT16 nStr = 0;
+ // SST
+ { // own scope for Continue
+ XclContinue aCont( rStrm, 0 );
+ rStrm << nCstTotal << nCstTotal; // Total, Unique
+ for ( XclUnicodeString* p = (XclUnicodeString*) First(); p;
+ p = (XclUnicodeString*) Next() )
+ {
+ if ( nStr == 0 )
+ { // ISSTINF
+ const UINT32 nIb = rStrm.Tell();
+ aIsstInf << nIb;
+//2do: cb ?!? Offset into the SST record that points to where the bucket begins
+ aIsstInf << (UINT16) 0x0000; // cb
+ aIsstInf << (UINT16) 0x0000; // reserved
+ }
+ p->Write( aCont );
+ if ( ++nStr == nDsst )
+ nStr = 0;
+ }
+ }
+ // EXTSST
+ rStrm << (UINT16) 0x00ff; // EXTSST
+ rStrm << (UINT16) 0x0000; // RecLen
+ { // own scope for Continue
+ XclContinue aCont( rStrm, 0 );
+ rStrm << nDsst;
+ const UINT16 nIsstInfSize = sizeof(UINT32) + sizeof(UINT16) + sizeof(UINT16);
+ aCont.WriteMemStream( aIsstInf, nIsstInfSize );
+ }
+}
+
+
+UINT16 XclSstList::GetNum() const
+{
+ return 0x00fc;
+}
+
+
+UINT16 XclSstList::GetLen() const
+{
+ return 8; //! nur FixLen, Rest per XclContinue
+}
+
+
+
+// --- class XclCrn --------------------------------------------------
+
+void XclCrn::SaveHeadings( SvStream& rStrm )
+{
+ rStrm << (UINT8) nCol << (UINT8) nCol << nRow;
+}
+
+UINT16 XclCrn::GetNum() const
+{
+ return 0x005A;
+}
+
+
+
+// --- class XclCrnDouble --------------------------------------------
+
+XclCrnDouble::XclCrnDouble( UINT16 nC, UINT16 nR, double fV ) :
+ XclCrn( nC, nR ),
+ fVal( fV )
+{ }
+
+void XclCrnDouble::SaveCont( SvStream& rStrm )
+{
+ XclCrn::SaveHeadings( rStrm );
+ rStrm << (UINT8) EXC_CRN_DOUBLE << fVal;
+}
+
+UINT16 XclCrnDouble::GetLen() const
+{
+ return 13;
+}
+
+
+
+// --- class XclCrnString ---------------------------------------------
+
+XclCrnString::XclCrnString( UINT16 nC, UINT16 nR, const String& rTxt ) :
+ XclCrn( nC, nR ),
+ sText( rTxt )
+{ }
+
+void XclCrnString::SaveCont( SvStream& rStrm )
+{
+ XclCrn::SaveHeadings( rStrm );
+ rStrm << (UINT8) EXC_CRN_STRING << sText.GetLen() << sText.GetGrbit();
+ sText.WriteToStream( rStrm );
+}
+
+UINT16 XclCrnString::GetLen() const
+{
+ return 8 + sText.GetByteCount();
+}
+
+
+
+// --- class XclCrnBool ----------------------------------------------
+
+XclCrnBool::XclCrnBool( UINT16 nC, UINT16 nR, BOOL b ) :
+ XclCrn( nC, nR ),
+ nBool( b ? 1 : 0 )
+{ }
+
+void XclCrnBool::SaveCont( SvStream& rStrm )
+{
+ XclCrn::SaveHeadings( rStrm );
+ rStrm << (UINT8) EXC_CRN_BOOL << nBool << (UINT16)0 << (UINT32)0;
+}
+
+UINT16 XclCrnBool::GetLen() const
+{
+ return 13;
+}
+
+
+
+// --- class XclXct --------------------------------------------------
+
+XclXct::~XclXct()
+{
+ for( XclCrn* pCrn = _First(); pCrn; pCrn = _Next() )
+ delete pCrn;
+}
+
+BOOL XclXct::Exists( UINT16 nCol, UINT16 nRow )
+{
+ for( XclCrn* pCrn = _First(); pCrn; pCrn = _Next() )
+ if( pCrn->IsAddress( nCol, nRow ) )
+ return TRUE;
+ return FALSE;
+}
+
+void XclXct::StoreCellRange( RootData& rRoot, const ScRange& rRange )
+{
+ ScDocument& rDoc = *rRoot.pDoc;
+ SvNumberFormatter& rFTab = *rRoot.pFormTable;
+ UINT16 nTab = rRange.aStart.Tab();
+
+ for( UINT16 nRow = rRange.aStart.Row(); nRow <= rRange.aEnd.Row(); nRow++ )
+ for( UINT16 nCol = rRange.aStart.Col(); nCol <= rRange.aEnd.Col(); nCol++ )
+ if( !Exists( nCol, nRow ) )
+ {
+ if( rDoc.HasValueData( nCol, nRow, nTab ) )
+ {
+ ScAddress aAddr( nCol, nRow, nTab );
+ double fVal = rDoc.GetValue( aAddr );
+ ULONG nFormat = rDoc.GetNumberFormat( aAddr );
+ short nType = rFTab.GetType( nFormat );
+ BOOL bIsBool = (nType == NUMBERFORMAT_LOGICAL);
+
+ if( !bIsBool && ((nFormat % SV_COUNTRY_LANGUAGE_OFFSET) == 0) &&
+ (rDoc.GetCellType( aAddr ) == CELLTYPE_FORMULA) )
+ {
+ ScFormulaCell* pCell = (ScFormulaCell*) rDoc.GetCell( aAddr );
+ if ( pCell )
+ bIsBool = (pCell->GetFormatType() == NUMBERFORMAT_LOGICAL);
+ }
+
+ if( bIsBool && ((fVal == 0.0) || (fVal == 1.0)) )
+ Append( new XclCrnBool( nCol, nRow, (fVal == 1.0) ) );
+ else
+ Append( new XclCrnDouble( nCol, nRow, fVal ) );
+ }
+ else
+ {
+ String sText;
+ rDoc.GetString( nCol, nRow, nTab, sText );
+ Append( new XclCrnString( nCol, nRow, sText ) );
+ }
+ }
+}
+
+void XclXct::SaveCont( SvStream& rStrm )
+{
+ rStrm << (UINT16) List::Count() << nTabNum;
+}
+
+void XclXct::Save( SvStream& rStrm )
+{
+ ExcRecord::Save( rStrm );
+
+ for( XclCrn* pCrn = _First(); pCrn; pCrn = _Next() )
+ pCrn->Save( rStrm );
+}
+
+UINT16 XclXct::GetNum() const
+{
+ return 0x0059;
+}
+
+UINT16 XclXct::GetLen() const
+{
+ return 4;
+}
+
+
+
+// --- class XclSupbook ----------------------------------------------
+
+XclSupbook::XclSupbook( UINT16 nTabs ) :
+ nTables( nTabs ),
+ nLen( 4 ),
+ bSelf( TRUE )
+{ }
+
+XclSupbook::XclSupbook( const String& rDocName ) :
+ sDocName( rDocName ),
+ bSelf( FALSE )
+{
+ INetURLObject aURLObj( rDocName );
+ DBG_ASSERT( !aURLObj.HasError(), "XclSupbook::XclSupbook() - Corrupt external filename!" );
+
+ sEncoded.Assign( aURLObj.getFSysPath( INetURLObject::FSYS_DOS ) );
+ nLen = 5 + sEncoded.GetByteCount();
+}
+
+XclSupbook::~XclSupbook()
+{
+ for( XclXct* pXct = _First(); pXct; pXct = _Next() )
+ delete pXct;
+}
+
+UINT16 XclSupbook::AddTableName( const String& rTabName )
+{
+ DBG_ASSERT( !bSelf, "XclSupbook::AddTableName() - Don't insert table names here" );
+ XclXct* pXct = new XclXct( rTabName );
+ nLen += pXct->GetTableBytes();
+ List::Insert( pXct, LIST_APPEND );
+
+ UINT16 nTabNum = List::Count() - 1;
+ pXct->SetTableNum( nTabNum );
+ return nTabNum;
+}
+
+void XclSupbook::StoreCellRange( RootData& rRoot, const ScRange& rRange, UINT16 nXct )
+{
+ XclXct* pXct = _Get( nXct );
+ if( pXct )
+ pXct->StoreCellRange( rRoot, rRange );
+}
+
+void XclSupbook::Save( SvStream& rStrm )
+{
+ ExcRecord::Save( rStrm );
+
+ for( XclXct* pXct = _First(); pXct; pXct = _Next() )
+ pXct->Save( rStrm );
+}
+
+void XclSupbook::SaveCont( SvStream& rStrm )
+{
+ if ( bSelf )
+ rStrm << nTables << (UINT8) 0x01 << (UINT8) 0x04;
+ else
+ {
+ XclContinue aCont( rStrm, 0, GetLen() );
+
+ rStrm << (UINT16) List::Count() << sEncoded.GetLen() << sEncoded.GetGrbit();
+ sEncoded.WriteToStream( rStrm );
+
+ for( XclXct* pXct = _First(); pXct; pXct = _Next() )
+ pXct->GetTableName().Write( aCont );
+ }
+}
+
+UINT16 XclSupbook::GetNum() const
+{
+ return 0x01AE;
+}
+
+UINT16 XclSupbook::GetLen() const
+{
+ return nLen;
+}
+
+
+
+// --- class XclSupbookList ------------------------------------------
+
+XclSupbookList::XclSupbookList( RootData* pRoot ) :
+ ExcRoot( pRoot ),
+ pSupbookBuffer( NULL ),
+ pTableBuffer( NULL )
+{
+ ExcETabNumBuffer& rTabBuffer = *pRoot->pTabBuffer;
+
+ UINT16 nScCnt = rTabBuffer.GetScTabCount();
+ UINT16 nExcCnt = rTabBuffer.GetExcTabCount();
+ UINT16 nExtCnt = rTabBuffer.GetExternTabCount();
+
+ nRefdCnt = nExcCnt + nExtCnt;
+ if( !nRefdCnt )
+ return;
+
+ pSupbookBuffer = new UINT16[ nRefdCnt ];
+ pTableBuffer = new UINT16[ nRefdCnt ];
+
+ UINT16 nInd;
+ for( nInd = 0; nInd < nRefdCnt; nInd++ )
+ pSupbookBuffer[ nInd ] = pTableBuffer[ nInd ] = 0;
+
+ // self-ref supbook at beginning of list
+ Append( new XclSupbook( Max( nExcCnt, pRoot->nCodenames ) ) );
+ for( nInd = 0; nInd < nExcCnt; nInd++ )
+ {
+ pSupbookBuffer[ nInd ] = 0;
+ pTableBuffer[ nInd ] = nInd;
+ }
+
+ // add supbooks with external references
+ for( nInd = 0; nInd < nScCnt; nInd++ )
+ if( rTabBuffer.IsExternal( nInd ) )
+ AddExt( nInd );
+}
+
+XclSupbookList::~XclSupbookList()
+{
+ for( XclSupbook* pBook = _First(); pBook; pBook = _Next() )
+ delete pBook;
+ if( pSupbookBuffer )
+ delete[] pSupbookBuffer;
+ if( pTableBuffer )
+ delete[] pTableBuffer;
+}
+
+UINT32 XclSupbookList::Append( XclSupbook* pBook )
+{
+ List::Insert( pBook, LIST_APPEND );
+ return Count() - 1;
+}
+
+void XclSupbookList::AddExt( UINT16 nScTab )
+{
+ // find ext doc name or append new one, save position in pSupbookBuffer
+ const String& rExtDoc = pExcRoot->pDoc->GetLinkDoc( nScTab );
+ DBG_ASSERT( rExtDoc.Len(), "XclSupbookList::Add() - Missing external filename!" );
+
+ XclSupbook* pBook;
+ BOOL bFound = FALSE;
+ UINT16 nPos;
+
+ for( UINT32 nSB = 0; !bFound && (nSB < List::Count()); nSB++ )
+ {
+ pBook = _Get( nSB );
+ if( pBook )
+ bFound = (rExtDoc == pBook->GetName());
+ if( bFound )
+ nPos = nSB;
+ }
+ if( !bFound )
+ {
+ pBook = new XclSupbook( rExtDoc );
+ nPos = Append( pBook );
+ }
+ UINT16 nInd = pExcRoot->pTabBuffer->GetExcTable( nScTab );
+ DBG_ASSERT( nInd < nRefdCnt,
+ "XclSupbookList::XclSupbookList() - Out of range!" );
+ pSupbookBuffer[ nInd ] = nPos;
+
+ // append new table name, save position in pTableBuffer
+ nPos = pBook->AddTableName( pExcRoot->pDoc->GetLinkTab( nScTab ) );
+ pTableBuffer[ nInd ] = nPos;
+}
+
+void XclSupbookList::StoreCellRange( const ScRange& rRange )
+{
+ UINT16 nExcTab = pExcRoot->pTabBuffer->GetExcTable( rRange.aStart.Tab() );
+ DBG_ASSERT( nExcTab < nRefdCnt, "XclSupbookList::StoreCellRange() - Out of range!" );
+
+ XclSupbook* pBook = GetSupbook( nExcTab );
+ if( pBook )
+ pBook->StoreCellRange( *pExcRoot, rRange, pTableBuffer[ nExcTab ] );
+}
+
+void XclSupbookList::WriteXtiInfo( SvStream& rStrm, UINT16 nTabFirst, UINT16 nTabLast )
+{
+ DBG_ASSERT( (nTabFirst < nRefdCnt) && (nTabLast < nRefdCnt),
+ "XclSupbookList::WriteXliInfo() - Out of range!" );
+
+ UINT16 nSupb = pSupbookBuffer[ nTabFirst ];
+ BOOL bConflict = FALSE;
+
+ // all tables in the same supbook?
+ for( UINT16 nTab = nTabFirst + 1; !bConflict && (nTab <= nTabLast); nTab++ )
+ {
+ bConflict = (pSupbookBuffer[ nTab ] != nSupb);
+ if( bConflict )
+ nTabLast = nTab - 1;
+ }
+
+ rStrm << nSupb << pTableBuffer[ nTabFirst ] << pTableBuffer[ nTabLast ];
+}
+
+void XclSupbookList::Save( SvStream& rStrm )
+{
+ for( XclSupbook* pBook = _First(); pBook; pBook = _Next() )
+ pBook->Save( rStrm );
+}
+
+
+
+// --- class XclExternsheetList --------------------------------------
+
+XclExternsheetList::XclExternsheetList( RootData* pRoot ) :
+ ExcRoot( pRoot ),
+ aSupbookList( pRoot )
+{
+ Find( 0, 0 ); // add dummy Xti to prevent an empty list
+}
+
+XclExternsheetList::~XclExternsheetList()
+{
+ for ( XclXti* pXTI = _First(); pXTI; pXTI = _Next() )
+ delete pXTI;
+}
+
+UINT16 XclExternsheetList::Add( XclXti* pXti )
+{
+ Insert( pXti, LIST_APPEND );
+ DBG_ASSERT( Count() == GetCount16(), "XclExternsheetList::Add: too much for Xcl" );
+ return (GetCount16() - 1);
+}
+
+UINT16 XclExternsheetList::Find( UINT16 nTabFirst, UINT16 nTabLast )
+{
+ for( XclXti* pXTI = _First(); pXTI; pXTI = _Next() )
+ {
+ if( pXTI->GetTabFirst() == nTabFirst && pXTI->GetTabLast() == nTabLast )
+ return GetVal16( List::GetCurPos() );
+ }
+ return Add( new XclXti( nTabFirst, nTabLast ) );
+}
+
+void XclExternsheetList::StoreCellCont( const SingleRefData& rRef )
+{
+ if( pExcRoot->pTabBuffer->IsExternal( rRef.nTab ) )
+ aSupbookList.StoreCellRange( ScRange(
+ rRef.nCol, rRef.nRow, rRef.nTab, rRef.nCol, rRef.nRow, rRef.nTab ) );
+}
+
+void XclExternsheetList::StoreCellRange( const SingleRefData& rRef1, const SingleRefData& rRef2 )
+{
+ for( UINT16 nTab = rRef1.nTab; nTab <= rRef2.nTab; nTab++ )
+ if( pExcRoot->pTabBuffer->IsExternal( nTab ) )
+ aSupbookList.StoreCellRange( ScRange(
+ rRef1.nCol, rRef1.nRow, nTab, rRef2.nCol, rRef2.nRow, nTab ) );
+}
+
+void XclExternsheetList::SaveCont( SvStream& rStrm )
+{
+ XclContinue aCont( rStrm, 0, GetLen() );
+ UINT16 nCount16 = GetCount16();
+ rStrm << nCount16;
+ UINT32 nElems = nCount16;
+ if( nElems )
+ {
+ XclXti* pXti = _First();
+ WriteXtiInfo( rStrm, *pXti );
+ nElems--;
+ UINT32 nHere = 1;
+ UINT32 nStop = 1;
+ UINT16 nSize = XclXti::GetSize();
+ while( nElems )
+ {
+ aCont.Slice( nElems, nStop, nSize );
+ while( nHere < nStop )
+ {
+ pXti = _Next();
+ DBG_ASSERT( pXti, "XclExternsheetList::SaveCont() - Xti missing!" );
+ WriteXtiInfo( rStrm, *pXti );
+ nHere++;
+ }
+ }
+ }
+}
+
+void XclExternsheetList::Save( SvStream& rStrm )
+{
+ aSupbookList.Save( rStrm ); // SUPBOOKs, XCTs, CRNs
+ ExcRecord::Save( rStrm ); // EXTERNSHEET
+}
+
+UINT16 XclExternsheetList::GetNum() const
+{
+ return 0x0017;
+}
+
+UINT16 XclExternsheetList::GetLen() const
+{ // only a prediction for XclContinue
+ return 2 + GetCount16() * XclXti::GetSize();
+}
+
+
+// --- class ExcBof8_Base --------------------------------------------
+
+ExcBof8_Base::ExcBof8_Base()
+{
+ nVers = 0x0600;
+ nRupBuild = 0x0dbb;
+ nRupYear = 0x07cc;
+// nFileHistory = 0x00000001; // last edited by Microsoft Excel for Windows
+ nFileHistory = 0x00000000;
+ nLowestBiffVer = 0x00000006; // Biff8
+}
+
+
+void ExcBof8_Base::SaveCont( SvStream &rStrm )
+{
+ rStrm << nVers << nDocType << nRupBuild << nRupYear
+ << nFileHistory << nLowestBiffVer;
+}
+
+
+UINT16 ExcBof8_Base::GetNum() const
+{
+ return 0x0809;
+}
+
+
+UINT16 ExcBof8_Base::GetLen() const
+{
+ return 16;
+}
+
+
+// --- class ExcBof8 -------------------------------------------------
+
+ExcBof8::ExcBof8()
+{
+ nDocType = 0x0010;
+}
+
+
+// --- class ExcBofW8 ------------------------------------------------
+
+ExcBofW8::ExcBofW8()
+{
+ nDocType = 0x0005;
+}
+
+
+// --- class ExcBofC8 ------------------------------------------------
+
+ExcBofC8::ExcBofC8()
+{
+ nDocType = 0x0020;
+}
+
+
+// --- class ExcLabel8 -----------------------------------------------
+
+ExcLabel8::ExcLabel8( const ScAddress& rPos, const ScPatternAttr* pAttr,
+ const String& rNewText )
+ :
+ ExcCell( rPos, pAttr ),
+ aText( rNewText, 255 )
+{
+}
+
+
+ExcLabel8::ExcLabel8( const ScAddress& rPos, const ScPatternAttr* pAttr,
+ const ScEditCell& rEdCell, RootData& rRoot )
+ :
+ ExcCell( rPos, pAttr )
+{
+ String aStr;
+ aText.SetRichStr( new ExcRichStr( *this, aStr, pAttr, rEdCell, rRoot, 255 ) );
+ aText.Assign( aStr, 255 );
+}
+
+
+ExcLabel8::~ExcLabel8()
+{
+}
+
+
+void ExcLabel8::SaveDiff( SvStream &rStrm )
+{
+ XclContinue aCont( rStrm, 6, GetLen() );
+ aText.Write( aCont );
+}
+
+
+UINT16 ExcLabel8::GetNum() const
+{
+ return 0x0204;
+}
+
+
+UINT16 ExcLabel8::GetLen() const
+{ // Text bytes max 2 * 255 chars + 2 * 2 * 255 forms
+ return 6 + (UINT16) aText.GetByteCount();
+}
+
+
+// --- class ExcLabelSst ---------------------------------------------
+
+ExcLabelSst::ExcLabelSst( const ScAddress& rPos, const ScPatternAttr* pAttr,
+ const String& rNewText, RootData& rRoot )
+ :
+ ExcCell( rPos, pAttr )
+{
+ nIsst = rRoot.pSstRecs->Add( new XclUnicodeString( rNewText ) );
+}
+
+
+ExcLabelSst::ExcLabelSst( const ScAddress& rPos, const ScPatternAttr* pAttr,
+ const ScEditCell& rEdCell, RootData& rRoot )
+ :
+ ExcCell( rPos, pAttr )
+{
+ XclRichString* pRS = new XclRichString;
+ String aStr;
+ pRS->SetRichStr( new ExcRichStr( *this, aStr, pAttr, rEdCell, rRoot, 0xFFFF ) );
+ pRS->Assign( aStr );
+ nIsst = rRoot.pSstRecs->Add( pRS );
+}
+
+
+ExcLabelSst::~ExcLabelSst()
+{
+}
+
+
+void ExcLabelSst::SaveDiff( SvStream &rStrm )
+{
+ rStrm << nIsst;
+}
+
+
+UINT16 ExcLabelSst::GetNum() const
+{
+ return 0x00fd;
+}
+
+
+UINT16 ExcLabelSst::GetLen() const
+{
+ return 6 + 4;
+}
+
+
+// --- class ExcXf8 --------------------------------------------------
+
+ExcXf8::ExcXf8( UINT16 nFont, UINT16 nForm, const ScPatternAttr* pPattAttr,
+ BOOL& rbLineBreak, BOOL bSt ) :
+ ExcXf( nFont, nForm, pPattAttr, rbLineBreak, bSt )
+{
+ nTrot = 0;
+ nCIndent = 0;
+ bFShrinkToFit = 0;
+ bFMergeCell = 0;
+ nIReadingOrder = 0;
+ nGrbitDiag = 0;
+ nIcvDiagSer = 0;
+ nDgDiag = 0;
+}
+
+
+UINT16 ExcXf8::GetNum() const
+{
+ return 0x00E0;
+}
+
+
+UINT16 ExcXf8::GetLen() const
+{
+ return 20;
+}
+
+
+void ExcXf8::SaveCont( SvStream& rStrm )
+{
+ register UINT16 nTmp;
+ register UINT32 nTmp32;
+
+ rStrm << nIfnt << nIfmt // Offs 4 + 6
+ << nOffs8; // Offs 8
+
+ nTmp = ( UINT16 ) eAlc; // Offs 10
+ if( bFWrap )
+ nTmp |= 0x0008;
+ nTmp |= ( ( UINT16 ) eAlcV ) << 4;
+ nTmp |= nTrot << 8;
+ rStrm << nTmp;
+
+ nTmp = nCIndent; // Offs 12
+ if( bFShrinkToFit )
+ nTmp |= 0x0010;
+ if( bFMergeCell )
+ nTmp |= 0x0020;
+ nTmp |= nIReadingOrder << 6;
+ // Bit 9-8 reserved, Bit 15-10 fAtr... alle 0 (keine Parent Styles)
+ rStrm << nTmp;
+
+ nTmp = nDgLeft; // Offs 14
+ nTmp |= nDgRight << 4;
+ nTmp |= nDgTop << 8;
+ nTmp |= nDgBottom << 12;
+ rStrm << nTmp;
+
+ nTmp = pPalette2->GetColorIndex( nIcvLftSer ); // Offs 16
+ nTmp |= pPalette2->GetColorIndex( nIcvRigSer ) << 7;
+ nTmp |= nGrbitDiag << 14;
+ rStrm << nTmp;
+
+ nTmp32 = pPalette2->GetColorIndex( nIcvTopSer ); // Offs 18
+ nTmp32 |= (UINT32) pPalette2->GetColorIndex( nIcvBotSer ) << 7;
+ nTmp32 |= (UINT32) pPalette2->GetColorIndex( nIcvDiagSer ) << 14;
+ nTmp32 |= (UINT32) nDgDiag << 21;
+
+ UINT16 nForeInd, nBackInd;
+ pPalette2->GetMixedColors( nIcvForeSer, nIcvBackSer, nForeInd, nBackInd, nFls );
+
+ nTmp32 |= (UINT32) nFls << 26;
+ rStrm << nTmp32;
+
+ nTmp = nForeInd | (nBackInd << 7); // Offs 22
+
+ if( bFSxButton )
+ nTmp |= 0x4000;
+ rStrm << nTmp;
+}
+
+
+// --- class ExcBundlesheet8 -----------------------------------------
+
+ExcBundlesheet8::ExcBundlesheet8( const String &rNewName )
+ :
+ ExcBundlesheet( NULL, rNewName ), // no pExcRoot needed
+ aUnicodeName( rNewName, 255 )
+{
+}
+
+
+void ExcBundlesheet8::SaveCont( SvStream &rStrm )
+{
+ XclContinue aCont( rStrm, 0, GetLen() );
+ nOwnPos = rStrm.Tell();
+ UINT8 nGrbit = aUnicodeName.HasHighByte() ? 0x01 : 0x00;
+ // Position ist nur Dummy
+ rStrm << ( UINT32 ) 0x00000000 << nIgnore
+ // `-> Worksheet visible
+ << (UINT8) aUnicodeName.GetLen() << nGrbit;
+ // `-> max 255 chars, done in Unicode ctor
+ aUnicodeName.Write( aCont );
+}
+
+
+UINT16 ExcBundlesheet8::GetNum() const
+{
+ return 0x0085;
+}
+
+
+UINT16 ExcBundlesheet8::GetLen() const
+{ // Text max 255 chars
+ return 8 + (UINT16) aUnicodeName.GetByteCount();
+}
+
+
+// --- class ExcTabid8 -----------------------------------------------
+
+void ExcTabid8::SaveCont( SvStream& rStrm )
+{
+ for ( UINT16 j=0; j<nTabs; j++ )
+ {
+ rStrm << UINT16(j+1);
+ }
+}
+
+
+UINT16 ExcTabid8::GetNum() const
+{
+ return 0x013d;
+}
+
+
+UINT16 ExcTabid8::GetLen() const
+{
+ return nTabs * 2;
+}
+
+
+// --- class ExcWindow28 ---------------------------------------------
+
+void ExcWindow28::SaveCont( SvStream& rStrm )
+{
+ BYTE pData[] = {
+ 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00
+ };
+ DBG_ASSERT( sizeof(pData) == GetLen(), "ExcWindow28::SaveCont: length mismatch" );
+ if ( GetTable() == 0 )
+ pData[1] |= 0x06; // displayed and selected
+ rStrm.Write( pData, GetLen() );
+}
+
+
+UINT16 ExcWindow28::GetNum() const
+{
+ return 0x023e;
+}
+
+
+UINT16 ExcWindow28::GetLen() const
+{
+ return 18;
+}
+
+
+// --- class XclMsodrawing_Base --------------------------------------
+
+XclMsodrawing_Base::XclMsodrawing_Base( XclEscher& rEscher )
+ :
+ pEscher( &rEscher ),
+ nStartPos( rEscher.GetEx()->GetLastOffsetMapPos() )
+{
+ // for safety's sake add this now
+ nStopPos = GetEscherEx()->AddCurrentOffsetToMap();
+ DBG_ASSERT( GetDataLen() == 0, "XclMsodrawing_Base ctor: do I really own that data?" );
+}
+
+
+XclMsodrawing_Base::~XclMsodrawing_Base()
+{
+}
+
+
+void XclMsodrawing_Base::UpdateStopPos()
+{
+ if ( nStopPos )
+ GetEscherEx()->ReplaceCurrentOffsetInMap( nStopPos );
+ else
+ nStopPos = GetEscherEx()->AddCurrentOffsetToMap();
+}
+
+
+ULONG XclMsodrawing_Base::GetDataLen() const
+{
+ if ( nStartPos < nStopPos )
+ {
+ XclEscherEx* pEx = GetEscherEx();
+ return pEx->GetOffsetFromMap( nStopPos ) - pEx->GetOffsetFromMap( nStartPos );
+ }
+ DBG_ERRORFILE( "XclMsodrawing_Base::GetDataLen: position mismatch" );
+ return 0;
+}
+
+
+// --- class XclMsodrawinggroup --------------------------------------
+
+XclMsodrawinggroup::XclMsodrawinggroup( RootData& rRoot, UINT16 nEscherType )
+ :
+ XclMsodrawing_Base( *rRoot.pEscher )
+{
+ if ( nEscherType )
+ {
+ XclEscherEx* pEx = GetEscherEx();
+ SvStream& rOut = pEx->GetStream();
+ switch ( nEscherType )
+ {
+ case ESCHER_DggContainer :
+ { // per-document data
+ pEx->OpenContainer( nEscherType );
+//2do: stuff it with our own document defaults?
+#if 0
+ pEx->BeginCount();
+ pEx->AddOpt( ... );
+ pEx->EndCount( ESCHER_OPT, 3 );
+#else
+ BYTE pDummyOPT[] = {
+ 0xBF, 0x00, 0x08, 0x00, 0x08, 0x00, 0x81, 0x01,
+ 0x09, 0x00, 0x00, 0x08, 0xC0, 0x01, 0x40, 0x00,
+ 0x00, 0x08
+ };
+ pEx->AddAtom( sizeof(pDummyOPT), ESCHER_OPT, 3, 3 );
+ rOut.Write( pDummyOPT, sizeof(pDummyOPT) );
+#endif
+ BYTE pDummySplitMenuColors[] = {
+ 0x0D, 0x00, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x08,
+ 0x17, 0x00, 0x00, 0x08, 0xF7, 0x00, 0x00, 0x10
+ };
+ pEx->AddAtom( sizeof(pDummySplitMenuColors), ESCHER_SplitMenuColors, 0, 4 );
+ rOut.Write( pDummySplitMenuColors, sizeof(pDummySplitMenuColors) );
+ pEx->CloseContainer(); // ESCHER_DggContainer
+ }
+ break;
+ }
+ UpdateStopPos();
+ }
+}
+
+
+XclMsodrawinggroup::~XclMsodrawinggroup()
+{
+}
+
+
+void XclMsodrawinggroup::SaveCont( SvStream& rStrm )
+{
+ DBG_ASSERT( GetEscherEx()->GetStreamPos() == GetEscherEx()->GetOffsetFromMap( nStartPos ),
+ "XclMsodrawinggroup::SaveCont: Escher stream position mismatch" );
+ UINT32 nDataLen = GetDataLen();
+ XclContinue aCont( rStrm, 0, (UINT16) nDataLen );
+ aCont.WriteStream( pEscher->GetStrm(), nDataLen );
+}
+
+
+UINT16 XclMsodrawinggroup::GetNum() const
+{
+ return 0x00eb;
+}
+
+
+UINT16 XclMsodrawinggroup::GetLen() const
+{
+ return (UINT16) GetDataLen(); // only a prediction for XclContinue
+}
+
+
+// --- class XclMsodrawing --------------------------------------
+
+XclMsodrawing::XclMsodrawing( RootData& rRoot, UINT16 nEscherType )
+ :
+ XclMsodrawing_Base( *rRoot.pEscher )
+{
+ if ( nEscherType )
+ {
+ XclEscherEx* pEx = GetEscherEx();
+ switch ( nEscherType )
+ {
+ case ESCHER_DgContainer :
+ { // per-sheet data
+ pEx->OpenContainer( nEscherType );
+ // open group shape container
+ Rectangle aRect( 0, 0, 0, 0 );
+ pEx->EnterGroup( &aRect );
+ }
+ break;
+ }
+ UpdateStopPos();
+ }
+}
+
+
+XclMsodrawing::~XclMsodrawing()
+{
+}
+
+
+void XclMsodrawing::SaveCont( SvStream& rStrm )
+{
+ DBG_ASSERT( GetEscherEx()->GetStreamPos() == GetEscherEx()->GetOffsetFromMap( nStartPos ),
+ "XclMsodrawing::SaveCont: Escher stream position mismatch" );
+ UINT32 nDataLen = GetDataLen();
+ XclContinue aCont( rStrm, 0, (UINT16) nDataLen );
+ aCont.WriteStream( pEscher->GetStrm(), nDataLen );
+}
+
+
+UINT16 XclMsodrawing::GetNum() const
+{
+ return 0x00ec;
+}
+
+
+UINT16 XclMsodrawing::GetLen() const
+{
+ return (UINT16) GetDataLen(); // only a prediction for XclContinue
+}
+
+
+// --- class XclObjList ----------------------------------------------
+
+XclObjList::XclObjList( RootData& rRoot )
+ :
+ pMsodrawingPerSheet( new XclMsodrawing( rRoot, ESCHER_DgContainer ) )
+{
+}
+
+
+XclObjList::~XclObjList()
+{
+ for ( XclObj* p = First(); p; p = Next() )
+ {
+ delete p;
+ }
+ delete pMsodrawingPerSheet;
+}
+
+
+UINT16 XclObjList::Add( XclObj* pObj )
+{
+ DBG_ASSERT( Count() < 0xFFFF, "XclObjList::Add: too much for Xcl" );
+ if ( Count() < 0xFFFF )
+ {
+ Insert( pObj, LIST_APPEND );
+ UINT16 nCnt = (UINT16) Count();
+ pObj->SetId( nCnt );
+ return nCnt;
+ }
+ else
+ {
+ delete pObj;
+ return 0;
+ }
+}
+
+
+void XclObjList::EndSheet()
+{
+ XclEscherEx* pEx = pMsodrawingPerSheet->GetEscherEx();
+ //! close all Escher group shapes created since XclObjList ctor MSODRAWING
+ while ( pEx->GetGroupLevel() )
+ {
+ pEx->LeaveGroup();
+ }
+ //! close ESCHER_DgContainer created by XclObjList ctor MSODRAWING
+ pEx->CloseContainer();
+}
+
+
+void XclObjList::_Save( SvStream& rStrm )
+{ // nothing
+}
+
+
+void XclObjList::SaveCont( SvStream& rStrm )
+{
+ //! Escher must be written, even if there are no objects
+ pMsodrawingPerSheet->Save( rStrm );
+
+ for ( XclObj* p = First(); p; p = Next() )
+ {
+ p->Save( rStrm );
+ }
+}
+
+
+UINT16 XclObjList::GetNum() const
+{ // dummy
+ return 0;
+}
+
+
+UINT16 XclObjList::GetLen() const
+{ // dummy
+ return 0;
+}
+
+
+// --- class XclObj --------------------------------------------------
+
+XclObj::XclObj( ObjType eType, RootData& rRoot )
+ :
+ pClientTextbox( NULL ),
+ pTxo( NULL ),
+ eObjType( eType ),
+ nObjId(0),
+ nGrbit( 0x6011 ), // AutoLine, AutoFill, Printable, Locked
+ bFirstOnSheet( rRoot.pObjRecs->Count() == 0 )
+{
+ //! first object continues the first MSODRAWING record
+ if ( bFirstOnSheet )
+ pMsodrawing = rRoot.pObjRecs->GetMsodrawingPerSheet();
+ else
+ pMsodrawing = new XclMsodrawing( rRoot );
+}
+
+
+XclObj::~XclObj()
+{
+ if ( !bFirstOnSheet )
+ delete pMsodrawing;
+ delete pClientTextbox;
+ delete pTxo;
+}
+
+
+void XclObj::_Save( SvStream& rStrm )
+{
+ // MSODRAWING record (msofbtSpContainer)
+ if ( !bFirstOnSheet )
+ pMsodrawing->Save( rStrm );
+
+ // OBJ
+ rStrm << GetNum() << GetLen();
+}
+
+
+void XclObj::SaveCont( SvStream& rStrm )
+{ // ftCmo subrecord
+ DBG_ASSERT( eObjType != otUnknown, "XclObj::SaveCont: unknown type" );
+ rStrm << (UINT16) ftCmo << (UINT16) 0x0012;
+ rStrm << (UINT16) eObjType << nObjId << nGrbit
+ << UINT32(0) << UINT32(0) << UINT32(0);
+}
+
+
+void XclObj::SaveText( SvStream& rStrm )
+{
+ // MSODRAWING record (msofbtClientTextbox)
+ if ( pClientTextbox )
+ pClientTextbox->Save( rStrm );
+ // TXO and CONTINUE records
+ if ( pTxo )
+ pTxo->Save( rStrm );
+}
+
+
+UINT16 XclObj::GetNum() const
+{ // the real OBJ
+ return 0x005d;
+}
+
+
+UINT16 XclObj::GetLen() const
+{ // length of subrecord including ID and LEN
+ return 22;
+}
+
+
+void XclObj::SetEscherShapeType( UINT16 nType )
+{
+//2do: what about the other defined ot... types?
+ switch ( nType )
+ {
+ case ESCHER_ShpInst_Line :
+ eObjType = otLine;
+ break;
+ case ESCHER_ShpInst_Rectangle :
+ case ESCHER_ShpInst_RoundRectangle :
+ eObjType = otRectangle;
+ break;
+ case ESCHER_ShpInst_Ellipse :
+ eObjType = otOval;
+ break;
+ case ESCHER_ShpInst_Arc :
+ eObjType = otArc;
+ break;
+ case ESCHER_ShpInst_TextBox :
+ eObjType = otText;
+ break;
+ case ESCHER_ShpInst_PictureFrame :
+ eObjType = otPicture;
+ break;
+ default:
+ eObjType = otMsOffDrawing;
+ }
+}
+
+
+void XclObj::SetText( RootData& rRoot, const SdrTextObj& rObj )
+{
+ DBG_ASSERT( !pClientTextbox, "XclObj::SetText: already set" );
+ if ( !pClientTextbox )
+ {
+ pMsodrawing->UpdateStopPos();
+ pClientTextbox = new XclMsodrawing( rRoot );
+ pClientTextbox->GetEscherEx()->AddAtom( 0, ESCHER_ClientTextbox ); // TXO record
+ pClientTextbox->UpdateStopPos();
+ pTxo = new XclTxo( rObj );
+ }
+}
+
+
+// --- class XclObjComment -------------------------------------------
+
+XclObjComment::XclObjComment( RootData& rRoot, const ScAddress& rPos, const String& rStr )
+ :
+ XclObj( otComment, rRoot )
+{
+ nGrbit = 0; // all off: AutoLine, AutoFill, Printable, Locked
+ XclEscherEx* pEx = pMsodrawing->GetEscherEx();
+ pEx->OpenContainer( ESCHER_SpContainer );
+ pEx->AddShape( ESCHER_ShpInst_TextBox, SHAPEFLAG_HAVEANCHOR | SHAPEFLAG_HAVESPT );
+ pEx->BeginCount();
+ pEx->AddOpt( ESCHER_Prop_lTxid, 0 ); // undocumented
+ pEx->AddOpt( ESCHER_Prop_FitTextToShape, 0x00080008 ); // bool field
+ pEx->AddOpt( 0x0158, 0x00000000 ); // undocumented
+ pEx->AddOpt( ESCHER_Prop_fillColor, 0x08000050 );
+ pEx->AddOpt( ESCHER_Prop_fillBackColor, 0x08000050 );
+ pEx->AddOpt( ESCHER_Prop_fNoFillHitTest, 0x00110010 ); // bool field
+ pEx->AddOpt( ESCHER_Prop_shadowColor, 0x00000000 );
+ pEx->AddOpt( ESCHER_Prop_fshadowObscured, 0x00030003 ); // bool field
+ pEx->AddOpt( ESCHER_Prop_fPrint, 0x000A0002 ); // bool field
+ pEx->EndCount( ESCHER_OPT, 3 );
+ XclEscherClientAnchor( rRoot.pDoc, rPos ).WriteData( *pEx );
+ pEx->AddAtom( 0, ESCHER_ClientData ); // OBJ record
+ pMsodrawing->UpdateStopPos();
+ //! Be sure to construct the MSODRAWING ClientTextbox record _after_ the
+ //! base OBJ's MSODRAWING record Escher data is completed.
+ pClientTextbox = new XclMsodrawing( rRoot );
+ pClientTextbox->GetEscherEx()->AddAtom( 0, ESCHER_ClientTextbox ); // TXO record
+ pClientTextbox->UpdateStopPos();
+ pEx->CloseContainer(); // ESCHER_SpContainer
+ // TXO
+ pTxo = new XclTxo( rStr );
+}
+
+
+XclObjComment::~XclObjComment()
+{
+}
+
+
+void XclObjComment::SaveCont( SvStream& rStrm )
+{
+ // ftCmo subrecord
+ XclObj::SaveCont( rStrm );
+
+#if 0
+/*
+ // ftNts subrecord, Note structure, where the hell is this documented?!?
+ // seems like we don't need it ...
+ rStrm << UINT16( ftNts ) << UINT16(0x0016)
+ << UINT32(0) << UINT32(0) << UINT16(0)
+ << UINT16(0xa000) << UINT16(0xcf24) << UINT16(0xf78e) << UINT16(0);
+ if ( bFirstOnSheet )
+ rStrm << UINT16(0x0010);
+ else
+ rStrm << UINT16(0x0158);
+ rStrm << UINT16(0);
+*/
+#endif
+
+ // ftEnd subrecord
+ rStrm << UINT16(0) << UINT16(0);
+
+ // second MSODRAWING record and TXO and CONTINUE records
+ SaveText( rStrm );
+}
+
+
+UINT16 XclObjComment::GetLen() const
+{ // length of all subrecords including IDs and LENs
+ return XclObj::GetLen() /* + 4 + 0x0016 */ + 4;
+}
+
+
+// --- class XclObjDropDown ------------------------------------------
+
+XclObjDropDown::XclObjDropDown( RootData& rRoot, const ScAddress& rPos, BOOL bFilt ) :
+ XclObj( otComboBox, rRoot ),
+ bIsFiltered( bFilt )
+{
+ SetLocked( TRUE );
+ SetPrintable( FALSE );
+ SetAutoFill( TRUE );
+ SetAutoLine( FALSE );
+ nGrbit |= 0x0100; // undocumented
+ XclEscherEx* pEx = pMsodrawing->GetEscherEx();
+ pEx->OpenContainer( ESCHER_SpContainer );
+ pEx->AddShape( ESCHER_ShpInst_HostControl, SHAPEFLAG_HAVEANCHOR | SHAPEFLAG_HAVESPT );
+ pEx->BeginCount();
+ pEx->AddOpt( ESCHER_Prop_LockAgainstGrouping, 0x01040104 ); // bool field
+ pEx->AddOpt( ESCHER_Prop_FitTextToShape, 0x00080008 ); // bool field
+ pEx->AddOpt( ESCHER_Prop_fNoFillHitTest, 0x00010000 ); // bool field
+ pEx->AddOpt( ESCHER_Prop_fNoLineDrawDash, 0x00080000 ); // bool field
+ pEx->AddOpt( ESCHER_Prop_fPrint, 0x000A0000 ); // bool field
+ pEx->EndCount( ESCHER_OPT, 3 );
+
+ XclEscherClientAnchor aAnchor( rRoot, 0x0001 ); // MsofbtClientAnchor
+ aAnchor.SetDropDownPosition( rPos );
+ aAnchor.WriteData( *pEx );
+
+ pEx->AddAtom( 0, ESCHER_ClientData ); // OBJ record
+ pMsodrawing->UpdateStopPos();
+ pEx->CloseContainer(); // ESCHER_SpContainer
+}
+
+XclObjDropDown::~XclObjDropDown()
+{ }
+
+void XclObjDropDown::SaveCont( SvStream& rStrm )
+{
+ // ftCmo subrecord
+ XclObj::SaveCont( rStrm );
+
+ // ftSbs subrecord - Scroll bars (dummy)
+ rStrm << (UINT16)0x000C << (UINT16)0x0014
+ << (UINT32)0 << (UINT32)0 << (UINT32)0 << (UINT32)0 << (UINT32)0;
+
+ // ftLbsData subrecord - Listbox data
+ rStrm << (UINT16)0x0013 << (UINT16)0x0010
+ << (UINT32)0 << (UINT16)0 << (UINT16)0x0301 << (UINT16)0;
+ rStrm << (bIsFiltered ? (UINT16)0x000A : (UINT16)0x0002) << (UINT32)0;
+
+ // ftEnd subrecord
+ rStrm << (UINT16)0 << (UINT16)0;
+}
+
+UINT16 XclObjDropDown::GetLen() const
+{
+ // length of all subrecords including IDs and LENs
+ // (all from XclObj) + ftSbs + ftLbsData + ftEnd
+ return XclObj::GetLen() + 24 + 20 + 4;
+}
+
+
+// --- class XclTxo --------------------------------------------------
+
+XclTxo::XclTxo( const String& rStr )
+ :
+ aText( rStr, (SC_XCL_RECLENMAX-1)/2 ), // must fit into _one_ CONTINUE
+ nGrbit(0),
+ nRot(0)
+{
+}
+
+
+XclTxo::XclTxo( const SdrTextObj& rTextObj )
+ :
+ nGrbit(0),
+ nRot(0)
+{
+ String aStr;
+ const OutlinerParaObject* pParaObj = rTextObj.GetOutlinerParaObject();
+ DBG_ASSERT( pParaObj, "XclTxo: no ParaObject" );
+ if( pParaObj )
+ {
+ // alignment in graphic
+ SfxItemSet aItemSet( *rTextObj.GetItemPool(), SDRATTR_START, SDRATTR_END );
+ rTextObj.TakeAttributes( aItemSet, FALSE, FALSE );
+ switch ( ((const SdrTextHorzAdjustItem&) (aItemSet.Get( SDRATTR_TEXT_HORZADJUST ))).GetValue() )
+ {
+ case SDRTEXTHORZADJUST_LEFT :
+ nGrbit |= (1 << 1);
+ break;
+ case SDRTEXTHORZADJUST_CENTER :
+ nGrbit |= (2 << 1);
+ break;
+ case SDRTEXTHORZADJUST_RIGHT :
+ nGrbit |= (3 << 1);
+ break;
+ case SDRTEXTHORZADJUST_BLOCK :
+ nGrbit |= (4 << 1);
+ break;
+ }
+ switch ( ((const SdrTextVertAdjustItem&) (aItemSet.Get( SDRATTR_TEXT_VERTADJUST ))).GetValue() )
+ {
+ case SDRTEXTVERTADJUST_TOP :
+ nGrbit |= (1 << 4);
+ break;
+ case SDRTEXTVERTADJUST_CENTER :
+ nGrbit |= (2 << 4);
+ break;
+ case SDRTEXTVERTADJUST_BOTTOM :
+ nGrbit |= (3 << 4);
+ break;
+ case SDRTEXTVERTADJUST_BLOCK :
+ nGrbit |= (4 << 4);
+ break;
+ }
+ // the text
+ const EditTextObject& rEditObj = pParaObj->GetTextObject();
+ USHORT nPara = rEditObj.GetParagraphCount();
+ for( USHORT j = 0; j < nPara; j++ )
+ {
+ aStr += rEditObj.GetText( j );
+ if ( j < nPara-1 )
+ aStr += ( sal_Char ) 0x0a;
+ }
+//2do: formatting runs
+ }
+ aText.Assign( aStr, (SC_XCL_RECLENMAX-1)/2 ); // must fit into _one_ CONTINUE
+}
+
+
+XclTxo::~XclTxo()
+{
+}
+
+
+void XclTxo::SaveCont( SvStream& rStrm )
+{
+ XclContinue aCont( rStrm, 0, GetLen() );
+ UINT16 nTextLen = aText.GetLen();
+ UINT16 nFormatLen = 0;
+ if ( nTextLen && !nFormatLen )
+ nFormatLen = 8 * 2; // length of CONTINUE record, not count of formats
+ rStrm << nGrbit << nRot << UINT32(0) << UINT16(0)
+ << nTextLen << nFormatLen << UINT32(0);
+
+ // CONTINUE records are only written if there is some text
+ if ( nTextLen )
+ {
+ // CONTINUE text
+ aCont.NextRecord( 1 + (UINT16) aText.GetByteCount() );
+ rStrm << aText.GetGrbit();
+ aText.Write( aCont );
+
+ // CONTINUE formatting runs
+ aCont.NextRecord( nFormatLen );
+ // write at least two dummy TXORUNs
+ rStrm
+ << UINT16(0) // first character
+ << UINT16(0) // normal font
+ << UINT32(0) // Reserved
+ << nTextLen
+ << UINT16(0) // normal font
+ << UINT32(0) // Reserved
+ ;
+ }
+}
+
+
+UINT16 XclTxo::GetNum() const
+{
+ return 0x01b6;
+}
+
+
+UINT16 XclTxo::GetLen() const
+{
+ return 18;
+}
+
+
+// --- class XclObjOle -------------------------------------------
+
+XclObjOle::XclObjOle( RootData& rRoot, const SdrObject& rObj )
+ :
+ XclObj( otPicture, rRoot ),
+ rOleObj( rObj ),
+ pRootStorage( rRoot.pRootStorage )
+{
+}
+
+
+XclObjOle::~XclObjOle()
+{
+}
+
+
+void XclObjOle::SaveCont( SvStream& rStrm )
+{
+ { // own scope for record length (abused Continue)
+ XclContinue aCont( rStrm, 0 );
+
+ // ftCmo subrecord
+ XclObj::SaveCont( rStrm );
+
+ // write only as embedded, not linked
+ String aStorageName( RTL_CONSTASCII_STRINGPARAM( "MBD" ) );
+ sal_Char aBuf[ sizeof(UINT32) * 2 + 1 ];
+ UINT32 nPictureId = UINT32(this);
+ sprintf( aBuf, "%08X", nPictureId );
+ aStorageName.AppendAscii( aBuf );
+ SvStorageRef xOleStg = pRootStorage->OpenStorage( aStorageName,
+ STREAM_READWRITE| STREAM_SHARE_DENYALL );
+ if( xOleStg.Is() )
+ {
+ SvInPlaceObjectRef xObj( ((SdrOle2Obj&)rOleObj).GetObjRef() );
+ if ( xObj.Is() )
+ {
+ // set version to "old" version, because it must be
+ // saved in MS notation.
+ xOleStg->SetVersion( SOFFICE_FILEFORMAT_31 );
+ xObj->DoSaveAs( &xOleStg );
+ xObj->DoSaveCompleted();
+
+ // ftCf subrecord, undocumented as usual
+ rStrm << UINT16(ftCf) << UINT16(2) << UINT16(0x0002);
+
+ // ftPioGrbit subrecord, undocumented as usual
+ rStrm << UINT16(ftPioGrbit) << UINT16(2) << UINT16(0x0001);
+
+ // ftPictFmla subrecord, undocumented as usual
+ rStrm << UINT16(ftPictFmla) << UINT16(0);
+ { // own scope for subrecord length (abused Continue)
+ XclContinue aPictFmla( rStrm, 0 );
+ rStrm << UINT16(0); // dummy formula length
+ { // own scope for real formula length (abused Continue)
+ XclContinue aFmla( rStrm, 0 );
+ const UINT8 pData[] = {
+ 0x05, 0x00,
+// 0xac, 0x10, 0xa4, 0x00, // Xcl changes values on each object
+ 0x00, 0x00, 0x00, 0x00, // zeroed
+ 0x02, // GPF if zeroed
+// 0x78, 0xa9, 0x86, 0x00, // Xcl changes values on each object
+ 0x00, 0x00, 0x00, 0x00, // zeroed
+ 0x03
+ };
+ rStrm.Write( pData, sizeof(pData) );
+ XclUnicodeString aName( xOleStg->GetUserName() );
+ aName.Write( aFmla );
+ if ( aName.GetByteCount() % 2 == 1 )
+ rStrm << UINT8(0); // pad byte
+ }
+ rStrm << nPictureId;
+ }
+ }
+ }
+
+ // ftEnd subrecord
+ rStrm << UINT16(0) << UINT16(0);
+ }
+ // second MSODRAWING record and TXO and CONTINUE records
+ // we shouldn't have any here, so just in case ...
+ SaveText( rStrm );
+}
+
+
+UINT16 XclObjOle::GetLen() const
+{ // length of all subrecords including IDs and LENs
+ // the job is done by XclContinue record header
+ return 0;
+}
+
+
+// --- class XclObjAny -------------------------------------------
+
+XclObjAny::XclObjAny( RootData& rRoot )
+ :
+ XclObj( otUnknown, rRoot )
+{
+}
+
+
+XclObjAny::~XclObjAny()
+{
+}
+
+
+void XclObjAny::SaveCont( SvStream& rStrm )
+{
+ // ftCmo subrecord
+ XclObj::SaveCont( rStrm );
+ switch ( eObjType )
+ {
+ case otGroup : // ftGmo subrecord
+ rStrm << UINT16(ftGmo) << UINT16(2) << UINT16(0);
+ break;
+ }
+ // ftEnd subrecord
+ rStrm << UINT16(0) << UINT16(0);
+ // second MSODRAWING record and TXO and CONTINUE records
+ SaveText( rStrm );
+}
+
+
+UINT16 XclObjAny::GetLen() const
+{ // length of all subrecords including IDs and LENs
+ UINT16 nLen = XclObj::GetLen() + 4;
+ switch ( eObjType )
+ {
+ case otGroup : nLen += 6; break;
+ }
+ return nLen;
+}
+
+
+// --- class XclNoteList ----------------------------------------------
+
+XclNoteList::XclNoteList()
+{
+}
+
+
+XclNoteList::~XclNoteList()
+{
+ for ( XclNote* p = First(); p; p = Next() )
+ {
+ delete p;
+ }
+}
+
+
+void XclNoteList::Add( XclNote* pNote )
+{
+ // limitation on 64kB is done in XclObjList,
+ // more notes get no ID and will not save themselfs
+ Insert( pNote, LIST_APPEND );
+}
+
+
+void XclNoteList::_Save( SvStream& rStrm )
+{ // nothing
+}
+
+
+void XclNoteList::SaveCont( SvStream& rStrm )
+{
+ for ( XclNote* p = First(); p; p = Next() )
+ {
+ p->Save( rStrm );
+ }
+}
+
+
+UINT16 XclNoteList::GetNum() const
+{ // dummy
+ return 0;
+}
+
+
+UINT16 XclNoteList::GetLen() const
+{ // dummy
+ return 0;
+}
+
+
+// --- class XclNote -------------------------------------------------
+
+XclNote::XclNote( RootData& rRoot, const ScAddress& rPos, const ScPostIt& rNote )
+ :
+ aAuthor( rNote.GetAuthor() ),
+ aPos( rPos ),
+ nGrbit(0)
+{
+ XclObjComment* pObj = new XclObjComment( rRoot, rPos, rNote.GetText() );
+ nObjId = rRoot.pObjRecs->Add( pObj );
+}
+
+
+XclNote::~XclNote()
+{
+}
+
+
+void XclNote::_Save( SvStream& rStrm )
+{
+ if ( nObjId )
+ rStrm << GetNum() << GetLen();
+}
+
+
+void XclNote::SaveCont( SvStream& rStrm )
+{
+ if ( !nObjId )
+ return ;
+
+ XclContinue aCont( rStrm, 0, GetLen() );
+ rStrm << (UINT16) aPos.Row() << (UINT16) aPos.Col() << nGrbit << nObjId;
+ aAuthor.Write( aCont );
+ if ( aAuthor.GetByteCount() % 2 )
+ rStrm << UINT8(0); // pad byte goes here, docs are wrong!
+}
+
+
+UINT16 XclNote::GetNum() const
+{
+ return 0x001c;
+}
+
+
+UINT16 XclNote::GetLen() const
+{
+ if ( !nObjId )
+ return 0;
+
+ UINT32 nLen = aAuthor.GetByteCount();
+ if ( nLen % 2 )
+ nLen++; // pad byte
+ return 8 + 1 + (UINT16) nLen;
+}
+
+
+// --- class XclCondFormat -------------------------------------------
+
+void XclCondFormat::_Save( SvStream& rStrm )
+{
+ DBG_ASSERT( List::Count() < 65536, "+XclCondFormat::_Save(): to much CFs!" );
+
+ // writing new condfmt / cf combination
+
+ // write header
+ rStrm << GetNum();
+
+ UINT32 nLenPos = rStrm.Tell();
+
+ rStrm << nOwnLen << ( UINT16 ) List::Count() << ( UINT16 ) 0x0000;
+
+ nOwnLen = 14; // base len without rerefs
+
+ const UINT32 nMinMaxPos = rStrm.Tell();
+ UINT16 nRowFirst = 0xFFFF;
+ UINT16 nRowLast = 0;
+ UINT16 nColFirst = 0xFFFF;
+ UINT16 nColLast = 0;
+ UINT16 nRefCnt = 0;
+
+ rStrm << nRowFirst << nRowLast << nColFirst << nColLast << nRefCnt; // dummies
+
+ const ScRange* pAct = pRL->First();
+
+ while( pAct )
+ {
+ const ScAddress& rStart = pAct->aStart;
+ const ScAddress& rEnd = pAct->aEnd;
+
+ if( rStart.Tab() == nTabNum )
+ {
+ nRefCnt++;
+
+ UINT16 nRF = rStart.Row();
+ UINT16 nCF = rStart.Col();
+ UINT16 nRL = rEnd.Row();
+ UINT16 nCL = rEnd.Col();
+
+ if( nRF < nRowFirst )
+ nRowFirst = nRF;
+ if( nRL > nRowLast )
+ nRowLast = nRL;
+ if( nCF < nColFirst )
+ nColFirst = nCF;
+ if( nCL > nColLast )
+ nColLast = nCL;
+
+ rStrm << nRF << nRL << nCF << nCL;
+ }
+ pAct = pRL->Next();
+ }
+
+ nOwnLen += 8 * nRefCnt;
+
+ UINT32 nActPos = rStrm.Tell();
+
+ // write record len
+ rStrm.Seek( nLenPos );
+ rStrm << nOwnLen;
+
+ // write min / max and num of refs
+ rStrm.Seek( nMinMaxPos );
+ rStrm << nRowFirst << nRowLast << nColFirst << nColLast << nRefCnt;
+
+ rStrm.Seek( nActPos );
+
+ XclCf* p = ( XclCf* ) ( ((XclCondFormat*)this)->First() );
+ while( p )
+ {
+ p->Save( rStrm );
+
+ p = ( XclCf* ) ( ((XclCondFormat*)this)->Next() );
+ }
+}
+
+
+XclCondFormat::XclCondFormat( const ScConditionalFormat& _rCF, ScRangeList* _pRL, RootData& rER )
+ :
+ rCF( _rCF )
+{
+ pRL = _pRL;
+ nTabNum = *rER.pAktTab;
+ nComplLen = nOwnLen = 0;
+
+ USHORT n;
+ USHORT nNum = _rCF.Count();
+ const ScCondFormatEntry* pCFE;
+
+ for( n = 0 ; n < nNum ; n++ )
+ {
+ pCFE = _rCF.GetEntry( n );
+ if( pCFE )
+ List::Insert( new XclCf( *pCFE, rER ), LIST_APPEND );
+ }
+}
+
+
+XclCondFormat::~XclCondFormat()
+{
+ if( pRL )
+ delete pRL;
+}
+
+
+UINT16 XclCondFormat::GetNum() const
+{
+ return 0x01B0; // starts with CONDFMT, CF follows within data
+}
+
+
+UINT16 XclCondFormat::GetLen() const
+{
+ return nComplLen; // not easy to predict!
+}
+
+
+
+// --- class XclCf ---------------------------------------------------
+
+XclCf::XclCf( const ScCondFormatEntry& r, RootData& rRD ) :
+ rPalette2( *rRD.pPalette2 )
+{
+ nType = 0x01; // compare
+ nFormatLen = 0;
+ bHasStyle = bHasFont = bHasLine = bHasPattern = FALSE;
+
+ BOOL bSingForm = TRUE;
+ switch( r.GetOperation() )
+ {
+ case SC_COND_EQUAL: nOp = 0x03; break;
+ case SC_COND_LESS: nOp = 0x06; break;
+ case SC_COND_GREATER: nOp = 0x05; break;
+ case SC_COND_EQLESS: nOp = 0x08; break;
+ case SC_COND_EQGREATER: nOp = 0x07; break;
+ case SC_COND_NOTEQUAL: nOp = 0x04; break;
+ case SC_COND_BETWEEN: nOp = 0x01; bSingForm = FALSE; break;
+ case SC_COND_NOTBETWEEN: nOp = 0x02; bSingForm = FALSE; break;
+ case SC_COND_DIRECT: nOp = 0x00; nType = 0x02; break;
+ default: nOp = 0x00; nType = 0x00;
+ }
+
+ // creating formats
+ const String& rStyleName = r.GetStyle();
+ SfxStyleSheetBase* pStyle =
+ rRD.pDoc->GetStyleSheetPool()->Find( rStyleName, SFX_STYLE_FAMILY_PARA );
+
+ bHasStyle = pStyle ? TRUE : FALSE;
+ if( bHasStyle )
+ {
+ const SfxItemSet& rSet = pStyle->GetItemSet();
+ ScPatternAttr aAttr( new SfxItemSet( rSet ) );
+
+ BOOL bHasItalic = rSet.GetItemState( ATTR_FONT_POSTURE, TRUE ) == SFX_ITEM_SET;
+ BOOL bHasUnderline = rSet.GetItemState( ATTR_FONT_UNDERLINE, TRUE ) == SFX_ITEM_SET;
+ BOOL bHasStrikeOut = rSet.GetItemState( ATTR_FONT_CROSSEDOUT, TRUE ) == SFX_ITEM_SET;
+ BOOL bHasWeight = rSet.GetItemState( ATTR_FONT_WEIGHT, TRUE ) == SFX_ITEM_SET;
+ bHasColor = rSet.GetItemState( ATTR_FONT_COLOR, TRUE ) == SFX_ITEM_SET;
+
+ bHasFont = bHasItalic || bHasUnderline || bHasStrikeOut || bHasWeight || bHasColor;
+ bHasLine = rSet.GetItemState( ATTR_BORDER, TRUE ) == SFX_ITEM_SET;
+ bHasPattern = rSet.GetItemState( ATTR_BACKGROUND, TRUE ) == SFX_ITEM_SET;
+
+ // constants for formatsstart
+ nStart = 0x00FFFFFF; // nothing included, all DC
+ nFormatLen = 6;
+
+ if( bHasFont )
+ {
+ nStart |= 0x04000000;
+ nStart &= 0xFF3FFFFF;
+ nFormatLen += 118;
+ }
+ if( bHasLine )
+ {
+ nStart |= 0x10000000;
+ nStart &= 0xFFFFC3FF;
+ nFormatLen += 8;
+ }
+ if( bHasPattern )
+ {
+ nStart |= 0x20000000;
+ nStart &= 0xFF3BFFFF;
+ nFormatLen += 4;
+ }
+
+ // font data
+ if( bHasFont )
+ {
+ Font aFont;
+ ScPatternAttr aPattAttr( new SfxItemSet( rSet ) );
+ aPattAttr.GetFont( aFont );
+
+ BOOL bItalic = ( bHasItalic && aFont.GetItalic() != ITALIC_NONE );
+ BOOL bStrikeOut = ( bHasStrikeOut && aFont.GetStrikeout() != STRIKEOUT_NONE );
+
+ nFontData1 = bItalic ? 0x00000002 : 0;
+ nFontData1 |= bStrikeOut ? 0x00000080 : 0;
+
+ if( bHasWeight )
+ nFontData2 = ExcFont::GetWeight( aFont.GetWeight() );
+ else
+ nFontData2 = bHasItalic ? 0x00000400 : 0;
+ nFontData3 = bHasUnderline ? ExcFont::GetUnderline( aFont.GetUnderline() ) : 0;
+
+ if( bHasColor )
+ nIcvTextSer = rPalette2.InsertColor( aFont.GetColor(), EXC_COLOR_CELLTEXT );
+
+ nFontData4 = bHasStrikeOut ? 0x00000018 : 0x00000098;
+ nFontData4 |= (bHasWeight || bHasItalic) ? 0 : 0x00000002;
+ nFontData5 = bHasUnderline ? 0 : 0x00000001;
+ nFontData6 = (bHasWeight || bHasItalic) ? 0 : 0x01;
+ }
+
+ // border data
+ if( bHasLine )
+ {
+ const SvxBoxItem& rBox = ((const SvxBoxItem&)aAttr.GetItem( ATTR_BORDER ));
+ UINT16 nDgTop, nDgBottom, nDgLeft, nDgRight;
+
+ ExcXf::ScToExcBorderLine( rBox.GetTop(), nIcvTopSer, nDgTop );
+ ExcXf::ScToExcBorderLine( rBox.GetBottom(), nIcvBotSer, nDgBottom );
+ ExcXf::ScToExcBorderLine( rBox.GetLeft(), nIcvLftSer, nDgLeft );
+ ExcXf::ScToExcBorderLine( rBox.GetRight(), nIcvRigSer, nDgRight );
+
+ nLineData1 = (UINT8)((nDgLeft & 0x0F) | (nDgRight << 4));
+ nLineData2 = (UINT8)((nDgTop & 0x0F) | (nDgBottom << 4));
+ }
+
+ // background / foreground data
+ if( bHasPattern )
+ {
+ const SvxBrushItem& rBrushItem = (const SvxBrushItem&)aAttr.GetItem( ATTR_BACKGROUND );
+ Color aColor( rBrushItem.GetColor() );
+ nPatt = aColor.GetTransparency() ? 0x0000 : 0x0001;
+ nIcvForeSer = rPalette2.InsertColor( aColor, EXC_COLOR_CELLBGROUND );
+ nIcvBackSer = rPalette2.InsertColor( Color( COL_BLACK ), EXC_COLOR_CELLBGROUND );
+ }
+ }
+
+ ScTokenArray* pScTokArry1 = r.CreateTokenArry( 0 );
+ ExcUPN* pForm1 = new ExcUPN( &rRD, *pScTokArry1, NULL, TRUE );
+ nFormLen1 = pForm1->GetLen();
+
+ ScTokenArray* pScTokArry2;
+ ExcUPN* pForm2;
+ if( bSingForm )
+ nFormLen2 = 0;
+ else
+ {
+ pScTokArry2 = r.CreateTokenArry( 1 );
+ pForm2 = new ExcUPN( &rRD, *pScTokArry2, NULL, TRUE );
+ nFormLen2 = pForm2->GetLen();
+ }
+
+ DBG_ASSERT( nFormLen1 + nFormLen2 < 4096, "*XclCf::XclCf(): possible overflow of var data" );
+
+ nVarLen = nFormLen1 + nFormLen2;
+ pVarData = new sal_Char[ nVarLen ];
+
+ if( nFormLen1 )
+ memcpy( pVarData, pForm1->GetData(), nFormLen1 );
+ delete pForm1;
+ delete pScTokArry1;
+
+ if( pForm2 )
+ {
+ memcpy( pVarData + nFormLen1, pForm2->GetData(), nFormLen2 );
+ delete pForm2;
+ delete pScTokArry2;
+ }
+}
+
+
+XclCf::~XclCf()
+{
+ if( pVarData )
+ delete pVarData;
+}
+
+
+void XclCf::SaveCont( SvStream& rStrm )
+{
+ const UINT8 pPre[ 68 ] =
+ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xDF, 0x3F, 0x8A, 0x1D, 0x3C, 0xFC, 0xFD, 0x7E, 0xDF, 0x3F,
+ 0x4E, 0x4A, 0x54, 0x30, 0x00, 0x00, 0x00, 0x00, 0x65, 0x10,
+ 0x00, 0x30, 0xF0, 0x59, 0x54, 0x30, 0xEC, 0x04, 0xC8, 0x00,
+ 0x4C, 0x00, 0x00, 0x00, 0x89, 0x10, 0x00, 0x30, 0xEC, 0x04,
+ 0xC8, 0x00, 0xF0, 0x59, 0x54, 0x30, 0x4C, 0x00, 0x00, 0x00,
+ 0x4E, 0x4A, 0x54, 0x30, 0xFF, 0xFF, 0xFF, 0xFF
+ };
+ const UINT8 pPost[ 17 ] =
+ { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x01, 0x00
+ };
+
+ rStrm << nType << nOp << nFormLen1 << nFormLen2;
+ if( bHasStyle )
+ {
+ rStrm << nStart << (UINT16)0x0002;
+ if( bHasFont )
+ {
+ rStrm.Write( pPre, 68 );
+ rStrm << nFontData1 << nFontData2 << nFontData3;
+ if( bHasColor )
+ rStrm << (UINT32) rPalette2.GetColorIndex( nIcvTextSer );
+ else
+ rStrm << (UINT32)0xFFFFFFFF;
+ rStrm << (UINT32)0x00000000 << nFontData4
+ << (UINT32)0x00000001 << nFontData5
+ << nFontData6;
+ rStrm.Write( pPost, 17 );
+ }
+ if( bHasLine )
+ {
+ UINT16 nLineData3, nLineData4;
+ nLineData3 = rPalette2.GetColorIndex( nIcvLftSer ) & 0x007F;
+ nLineData3 |= (rPalette2.GetColorIndex( nIcvRigSer ) & 0x007F) << 7;
+ nLineData4 = rPalette2.GetColorIndex( nIcvTopSer ) & 0x007F;
+ nLineData4 |= (rPalette2.GetColorIndex( nIcvBotSer ) & 0x007F) << 7;
+
+ rStrm << nLineData1 << nLineData2 << nLineData3 << nLineData4
+ << (UINT16)0xBA00;
+ }
+ if( bHasPattern )
+ {
+ UINT16 nForeInd, nBackInd;
+ rPalette2.GetMixedColors( nIcvForeSer, nIcvBackSer, nForeInd, nBackInd, nPatt );
+
+ UINT8 nPattData1 = (nPatt == 1) ? 0 : (UINT8) nPatt;
+ UINT16 nPattData2 = ((nForeInd & 0x007F ) << 7) | (nBackInd & 0x007F);
+
+ rStrm << (UINT8)0 << nPattData1 << nPattData2;
+ }
+ }
+ rStrm.Write( pVarData, nVarLen );
+}
+
+
+UINT16 XclCf::GetNum() const
+{
+ return 0x01B1;
+}
+
+
+UINT16 XclCf::GetLen() const
+{
+ return 6 + nFormatLen + nVarLen;
+}
+
+
+UINT16 XclObproj::GetNum() const
+{
+ return 0x00D3;
+}
+
+
+UINT16 XclObproj::GetLen() const
+{
+ return 0;
+}
+
+
+
+//============================================================================
+// data consolidation reference
+
+
+XclDConRef::XclDConRef( const ScRange& rSrcR, const String& rWB ) :
+ aSourceRange( rSrcR )
+{
+ String sTemp( ( sal_Unicode ) 0x02 );
+
+ sTemp += rWB;
+ pWorkbook = new XclRawUnicodeString( sTemp );
+}
+
+XclDConRef::~XclDConRef()
+{
+ delete pWorkbook;
+}
+
+void XclDConRef::SaveCont( SvStream& rStrm )
+{
+ rStrm << (UINT16) aSourceRange.aStart.Row()
+ << (UINT16) aSourceRange.aEnd.Row()
+ << (UINT8) aSourceRange.aStart.Col()
+ << (UINT8) aSourceRange.aEnd.Col()
+ << (UINT16) pWorkbook->GetLen()
+ << pWorkbook->GetGrbit();
+ pWorkbook->WriteToStream( rStrm );
+ rStrm << (UINT8) 0x00;
+}
+
+UINT16 XclDConRef::GetNum() const
+{
+ return 0x0051;
+}
+
+UINT16 XclDConRef::GetLen() const
+{
+ return 10 + pWorkbook->GetByteCount();
+}
+
+
+
+//============================================================================
+// merged cells
+//_________________________________________________________
+// class XclCellMerging - merged cells (max. 1024)
+
+XclCellMerging::~XclCellMerging()
+{ }
+
+void XclCellMerging::Append( UINT16 nCol1, UINT16 nColCnt,
+ UINT16 nRow1, UINT16 nRowCnt )
+{
+ aCoordList.Append( nRow1 );
+ aCoordList.Append( nRow1 + nRowCnt - 1 );
+ aCoordList.Append( nCol1 );
+ aCoordList.Append( nCol1 + nColCnt - 1 );
+ nCount++;
+}
+
+void XclCellMerging::SaveCont( SvStream& rStrm )
+{
+ rStrm << nCount;
+ for( UINT16 nInd = 0; nInd < nCount * 4; nInd++ )
+ rStrm << aCoordList.Get( nInd );
+}
+
+UINT16 XclCellMerging::GetNum() const
+{
+ return 0x00E5;
+}
+
+UINT16 XclCellMerging::GetLen() const
+{
+ return nCount * 8 + 2;
+}
+
+
+
+//_________________________________________________________
+// class XclCellMergingList - list of XclCellMerging
+
+XclCellMergingList::~XclCellMergingList()
+{
+ for( XclCellMerging* pMrg = _First(); pMrg; pMrg = _Next() )
+ delete pMrg;
+}
+
+XclCellMerging* XclCellMergingList::InsertNewRec()
+{
+ XclCellMerging* pMrg = new XclCellMerging;
+ List::Insert( pMrg, LIST_APPEND );
+ return pMrg;
+}
+
+void XclCellMergingList::Append( UINT16 nCol1, UINT16 nColCnt,
+ UINT16 nRow1, UINT16 nRowCnt )
+{
+ if( !pCurrRec )
+ pCurrRec = InsertNewRec();
+ if( pCurrRec->IsListFull() )
+ pCurrRec = InsertNewRec();
+
+ pCurrRec->Append( nCol1, nColCnt, nRow1, nRowCnt );
+}
+
+
+void XclCellMergingList::Save( SvStream& rStrm )
+{
+ for( XclCellMerging* pMrg = _First(); pMrg; pMrg = _Next() )
+ pMrg->Save( rStrm );
+}
+
+
+
+// ---- class XclCodename --------------------------------------------
+
+void XclCodename::SaveCont( SvStream& rStr )
+{
+ rStr << aName.GetLen() << aName.GetGrbit();
+ aName.WriteToStream( rStr );
+}
+
+
+XclCodename::XclCodename( const String& r ) : aName( r )
+{
+}
+
+
+UINT16 XclCodename::GetNum() const
+{
+ return 0x01BA;
+}
+
+
+UINT16 XclCodename::GetLen() const
+{
+ return aName.GetByteCount();
+}
+
+
+
+
+void XclBuildInName::_Save( SvStream& rStr )
+{
+// CreateFormula();
+ if( pData )
+ {
+ rStr << ( UINT16 ) 0x0018 << GetLen();
+ // grbit (built in only ) chKey cch
+ rStr << ( UINT16 ) 0x0020 << ( UINT8 ) 0x00 << ( UINT8 ) 0x01
+ // cce itab cch
+ << nFormLen << nTabNum << ( UINT32 ) 0x00000001
+ // grbit string
+ << ( UINT16 ) 0x00000 << ( UINT8 ) 0x00 << nKey;
+
+ rStr.Write( pData, nFormLen );
+ }
+}
+
+
+void XclBuildInName::Add( const ScRange& r )
+{
+ Append( r );
+}
+
+
+void XclBuildInName::CreateFormula( void )
+{
+ if( !pData )
+ {
+ ExcUPN* p = CreateExcUpnFromScRangeList( *pExcRoot, aRL );
+
+ nFormLen = p->GetLen();
+
+ if( nFormLen )
+ {
+ pData = new UINT8[ nFormLen ];
+ memcpy( pData, p->GetData(), nFormLen );
+ }
+
+ delete p;
+ }
+}
+
+
+XclBuildInName::XclBuildInName( RootData* p, UINT16 nTab, UINT8 nK ) :
+ ExcRoot( p ),
+ nTabNum( nTab ),
+ nKey( nK )
+{
+ pData = NULL;
+ nFormLen = 0;
+}
+
+
+XclBuildInName::~XclBuildInName()
+{
+ if( pData )
+ delete[] pData;
+}
+
+
+UINT16 XclBuildInName::GetLen() const
+{
+ return 16 + nFormLen;
+}
+
+
+
+
+XclPrintRange::XclPrintRange( RootData* p, UINT16 nTabNum, ScDocument& rDoc ) : XclBuildInName( p, nTabNum, 0x06 )
+{
+ if( rDoc.HasPrintRange() )
+ {
+ UINT16 nAnz = rDoc.GetPrintRangeCount( nTabNum );
+ UINT16 n;
+
+ for( n = 0 ; n < nAnz ; n++ )
+ Add( *rDoc.GetPrintRange( nTabNum, n ) );
+
+ CreateFormula();
+ }
+}
+
+
+
+
+XclTitleRange::XclTitleRange( RootData* p, UINT16 nTabNum, ScDocument& rDoc ) : XclBuildInName( p, nTabNum, 0x07 )
+{
+ const ScRange* pRepColRange = rDoc.GetRepeatColRange( nTabNum );
+ const ScRange* pRepRowRange = rDoc.GetRepeatRowRange( nTabNum );
+
+ if( pRepColRange || pRepRowRange )
+ {
+ if( pRepColRange )
+ Add( *pRepColRange );
+
+ if( pRepRowRange )
+ Add( *pRepRowRange );
+
+ CreateFormula();
+ }
+}
+
+
+
+
+//___________________________________________________________________
+// Scenario export
+
+
+ExcEScenarioCell::ExcEScenarioCell( UINT16 nC, UINT16 nR, const String& rTxt ) :
+ nCol( nC ),
+ nRow( nR ),
+ sText( rTxt, EXC_SCEN_MAXSTRINGLEN )
+{ }
+
+void ExcEScenarioCell::WriteText( SvStream& rStrm )
+{
+ rStrm << sText.GetLen() << sText.GetGrbit();
+ sText.WriteToStream( rStrm );
+}
+
+
+
+
+XclRawUnicodeString ExcEScenario::sUsername;
+
+ExcEScenario::ExcEScenario( ScDocument& rDoc, UINT16 nTab )
+{
+ String sTmpName;
+ String sTmpComm;
+ Color aDummyCol;
+ UINT16 nDummyFlags;
+
+ rDoc.GetName( nTab, sTmpName );
+ sName.Assign( sTmpName, EXC_SCEN_MAXSTRINGLEN );
+ nRecLen = 8 + sName.GetByteCount();
+
+ rDoc.GetScenarioData( nTab, sTmpComm, aDummyCol, nDummyFlags );
+ sComment.Assign( sTmpComm, EXC_SCEN_MAXSTRINGLEN );
+ if( sComment.GetLen() )
+ nRecLen += 3 + sComment.GetByteCount();
+
+ if( !sUsername.GetLen() )
+ sUsername.Assign( SFX_INIMANAGER()->Get( SFX_KEY_USER_NAME ) );
+ if( !sUsername.GetLen() )
+ sUsername.Assign( String::CreateFromAscii( "SC" ) );
+ nRecLen += 3 + sUsername.GetByteCount();
+
+ const ScRangeList* pRList = rDoc.GetScenarioRanges( nTab );
+ if( !pRList )
+ return;
+
+ BOOL bContLoop = TRUE;
+ UINT16 nRow, nCol;
+ String sText;
+ double fVal;
+
+ for( UINT32 nRange = 0; (nRange < pRList->Count()) && bContLoop; nRange++ )
+ {
+ const ScRange* pRange = pRList->GetObject( nRange );
+ for( nRow = pRange->aStart.Row(); (nRow <= pRange->aEnd.Row()) && bContLoop; nRow++ )
+ for( nCol = pRange->aStart.Col(); (nCol <= pRange->aEnd.Col()) && bContLoop; nCol++ )
+ {
+ if( rDoc.HasValueData( nCol, nRow, nTab ) )
+ {
+ rDoc.GetValue( nCol, nRow, nTab, fVal );
+ sText.Erase();
+ SolarMath::DoubleToString( sText, fVal, 'A', INT_MAX,
+ ScGlobal::pScInternational->GetNumDecimalSep(), TRUE );
+ }
+ else
+ rDoc.GetString( nCol, nRow, nTab, sText );
+ bContLoop = Append( nCol, nRow, sText );
+ }
+ }
+}
+
+ExcEScenario::~ExcEScenario()
+{
+ for( ExcEScenarioCell* pCell = _First(); pCell; pCell = _Next() )
+ delete pCell;
+}
+
+BOOL ExcEScenario::Append( UINT16 nCol, UINT16 nRow, const String& rTxt )
+{
+ if( List::Count() == EXC_SCEN_MAXCELL )
+ return FALSE;
+
+ ExcEScenarioCell* pCell = new ExcEScenarioCell( nCol, nRow, rTxt );
+
+ UINT16 nNewLen = nRecLen + 6 + pCell->GetStringBytes();
+ if( nNewLen > SC_XCL_RECLENMAX )
+ {
+ delete pCell;
+ return FALSE;
+ }
+
+ List::Insert( pCell, LIST_APPEND );
+ nRecLen = nNewLen;
+ return TRUE;
+}
+
+void ExcEScenario::SaveCont( SvStream& rStrm )
+{
+ rStrm << (UINT16) List::Count() // number of cells
+ << (UINT8) 1 // fLocked
+ << (UINT8) 0 // fHidden
+ << (UINT8) sName.GetLen() // length of scen name
+ << (UINT8) sComment.GetLen() // length of comment
+ << (UINT8) sUsername.GetLen() // length of user name
+ << sName.GetGrbit();
+ sName.WriteToStream( rStrm );
+
+ rStrm << sUsername.GetLen() << sUsername.GetGrbit();
+ sUsername.WriteToStream( rStrm );
+
+ if( sComment.GetLen() )
+ {
+ rStrm << sComment.GetLen() << sComment.GetGrbit();
+ sComment.WriteToStream( rStrm );
+ }
+
+ ExcEScenarioCell* pCell;
+ for( pCell = _First(); pCell; pCell = _Next() )
+ pCell->WriteAddress( rStrm); // pos of cell
+ for( pCell = _First(); pCell; pCell = _Next() )
+ pCell->WriteText( rStrm ); // string content
+ for( UINT16 nCell = 0; nCell < List::Count(); nCell++ )
+ rStrm << (UINT16) 0; // date format
+}
+
+UINT16 ExcEScenario::GetNum() const
+{
+ return 0x00AF;
+}
+
+UINT16 ExcEScenario::GetLen() const
+{
+ return nRecLen;
+}
+
+
+
+
+ExcEScenarioManager::ExcEScenarioManager( ScDocument& rDoc, UINT16 nTab ) :
+ nActive( 0 )
+{
+ if( rDoc.IsScenario( nTab ) )
+ return;
+
+ UINT16 nFirstTab = nTab + 1;
+ UINT16 nNewTab = nFirstTab;
+
+ while( rDoc.IsScenario( nNewTab ) )
+ {
+ Append( new ExcEScenario( rDoc, nNewTab ) );
+
+ if( rDoc.IsActiveScenario( nNewTab ) )
+ nActive = nNewTab - nFirstTab;
+ nNewTab++;
+ }
+}
+
+ExcEScenarioManager::~ExcEScenarioManager()
+{
+ for( ExcEScenario* pScen = _First(); pScen; pScen = _Next() )
+ delete pScen;
+}
+
+void ExcEScenarioManager::SaveCont( SvStream& rStrm )
+{
+ rStrm << (UINT16) List::Count() // number of scenarios
+ << nActive // active scen
+ << nActive // last displayed
+ << (UINT16) 0; // reference areas
+
+ for( ExcEScenario* pScen = _First(); pScen; pScen = _Next() )
+ pScen->Save( rStrm );
+}
+
+void ExcEScenarioManager::Save( SvStream& rStrm )
+{
+ if( List::Count() )
+ ExcRecord::Save( rStrm );
+}
+
+UINT16 ExcEScenarioManager::GetNum() const
+{
+ return 0x00AE;
+}
+
+UINT16 ExcEScenarioManager::GetLen() const
+{
+ return 8;
+}
+
+
+
+
+const BYTE XclHlink::pStaticData1[] =
+{
+ 0xD0, 0xC9, 0xEA, 0x79, 0xF9, 0xBA, 0xCE, 0x11,
+ 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B,
+ 0x02, 0x00, 0x00, 0x00
+};
+
+
+inline UINT32 XclHlink::StaticLen( void )
+{
+ return sizeof( pStaticData1 );
+}
+
+
+inline UINT32 XclHlink::VarLen( void ) const
+{
+ pVarData->Seek( STREAM_SEEK_TO_END );
+ return pVarData->Tell();
+}
+
+
+void XclHlink::SaveCont( SvStream& rOut )
+{
+ if( IsValid() )
+ {
+ rOut << nRowFirst << nRowFirst << nColFirst << nColFirst;
+
+ rOut.Write( pStaticData1, sizeof( pStaticData1 ) );
+
+ rOut << nFlags;
+
+ pVarData->Seek( STREAM_SEEK_TO_BEGIN );
+ rOut << *pVarData;
+ }
+}
+
+
+#define CHARCOUNT TRUE
+#define BYTECOUNT FALSE
+
+
+static void lcl_SaveHlinkString16( SvStream& rOut, const String& rStr, BOOL bCharCount )
+{
+ XclRawUnicodeString s( rStr, 0xFFFF, TRUE );
+ UINT32 nLen = bCharCount? s.GetLen() + 1 : s.GetByteCount() + 2; // + 0-Byte!
+
+ rOut << nLen;
+ s.WriteToStream( rOut );
+ rOut << ( UINT16 ) 0x0000;
+}
+
+
+static ByteString lcl_Get83Repr( const INetURLObject& r, CharSet e )
+{
+ String aExt( r.GetExtension() );
+ String aName( r.GetBase() );
+
+ if( aExt.Len() > 3 )
+ aExt.Erase( 0, 3 );
+ aExt.ToUpperAscii();
+
+ String aS( RTL_CONSTASCII_STRINGPARAM( "..\\") );
+ String aR;
+ while( aName.SearchAndReplace( aS, aR ) != STRING_NOTFOUND );
+
+ if( aName.Len() > 8 )
+ {
+ aName.Erase( 6 );
+ aName.AppendAscii( "~1" );
+ }
+ aName.ToUpperAscii();
+
+ aName.AppendAscii( "." );
+ aName += aExt;
+
+ return ByteString( aName, e );
+}
+
+
+XclHlink::XclHlink( RootData& rR, const SvxURLField& rURLField )
+{
+ pVarData = NULL;
+ pRepr = NULL;
+ {
+ nFlags = 0x00000001;
+
+ const XubString& rURL = rURLField.GetURL();
+ const XubString& rRepr = rURLField.GetRepresentation();
+ const XubString& rTargFrame = rURLField.GetTargetFrame();
+
+ SvxURLFormat eFormat = rURLField.GetFormat();
+
+ INetURLObject aURLObj( rURL );
+
+ const INetProtocol eProtocol = aURLObj.GetProtocol();
+
+ UINT32 n1, n2;
+ const BOOL bWithRepr = rRepr.Len() > 0;
+
+ SvMemoryStream& rOut = *( pVarData = new SvMemoryStream );
+
+ if( bWithRepr )
+ {
+ if( pRepr )
+ delete pRepr;
+ pRepr = new String( rRepr );
+ }
+
+ if( eProtocol == INET_PROT_FILE )
+ {
+ BOOL bRel = rR.bStoreRel;
+ String aPathAndName( aURLObj.getFSysPath( INetURLObject::FSYS_DOS ) );
+ UINT32 nLen;
+
+ UINT16 nDL = 0;
+
+ String aOrgPaN( aPathAndName );
+ if( bRel )
+ {
+ DBG_ASSERT( rR.pBasePath, "-XclHlink::XclHlink(): on the meadow is not... :-)" );
+
+ aPathAndName = aURLObj.GetRelURL( *rR.pBasePath, aPathAndName, INetURLObject::WAS_ENCODED, INetURLObject::DECODE_WITH_CHARSET );
+
+ if( aPathAndName.SearchAscii( INET_FILE_SCHEME ) == 0 )
+ { // not converted to rel -> make abs
+ aPathAndName = aOrgPaN;
+ bRel = FALSE;
+ }
+ else
+ {
+ if( aPathAndName.SearchAscii( "./" ) == 0 )
+ aPathAndName.Erase( 0, 2 );
+ else
+ {
+ while( aPathAndName.SearchAndReplaceAscii( "../", EMPTY_STRING ) != STRING_NOTFOUND )
+ nDL++;
+ }
+ }
+ }
+
+ // 8.3-representation... not really useful but necessary
+ n1 = 0x00000303;
+ n2 = 0x00000000;
+
+ ByteString aEtRepr( lcl_Get83Repr( aURLObj, *rR.pCharset ) );
+ nLen = aEtRepr.Len() + 1; // + 0-Byte
+
+ // C0 00 00 00 00 00 00 46
+ rOut << n1 << n2 << ( UINT32 ) 0x000000C0 << ( UINT32 ) 0x46000000 << nDL << nLen;
+ rOut.Write( aEtRepr.GetBuffer(), nLen - 1 );
+ rOut << ( UINT8 ) 0x00;
+
+ // full path and filename
+ n1 = 0xDEADFFFF;
+ n2 = 0x00000000;
+ // 4x non-interesting data...
+ rOut << n1 << n2 << n2 << n2 << n2 << n2;
+
+ XclRawUnicodeString s( aPathAndName, 0xFFFF, TRUE );
+ nLen = s.GetByteCount();
+ n1 = bRel? 0x00000040 : 0x00000004;
+ // UNICODE-flags?
+ rOut << n1 << nLen << ( UINT16 ) 0x0003;
+ s.WriteToStream( rOut );
+ }
+ else
+ {
+ if( bWithRepr )
+ lcl_SaveHlinkString16( rOut, rRepr, CHARCOUNT );
+
+ String aURL = aURLObj.GetURLNoMark();
+
+ n1 = 0x79EAC9E0;
+ n2 = 0x11CEBAF9;
+ // 8C 82 00 AA 00 4B A9 0B
+ rOut << n1 << n2 << ( UINT32 ) 0xAA00828C << ( UINT32 ) 0x0BA94B00;
+
+ lcl_SaveHlinkString16( rOut, aURL, BYTECOUNT );
+
+ if( !pRepr )
+ pRepr = new String( aURL );
+ }
+
+ if( aURLObj.HasMark() )
+ {
+ String aMark = aURLObj.GetMark();
+ lcl_SaveHlinkString16( rOut, aMark, CHARCOUNT );
+
+ nFlags |= 0x00000008;
+ }
+ }
+}
+
+
+XclHlink::~XclHlink()
+{
+ if( pVarData )
+ delete pVarData;
+
+ if( pRepr )
+ delete pRepr;
+}
+
+
+UINT16 XclHlink::GetNum() const
+{
+ return 0x01B8;
+}
+
+
+UINT16 XclHlink::GetLen() const
+{
+ pVarData->Seek( STREAM_SEEK_TO_END );
+ return IsValid()? ( UINT16 ) ( 12 + StaticLen() + VarLen() ) : 0;
+ // 12 = cols/rows + flags
+}
+
+
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.32 2000/09/17 14:08:51 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.31 2000/09/01 10:00:45 gt
+ export hyperlink
+
+ Revision 1.29 2000/08/14 11:29:05 dr
+ Chart export, part 1: common formats: chart & axis titles, legend, colors, fonts
+
+ Revision 1.28 2000/07/28 15:08:42 gt
+ export print range/title + im-/export styles
+
+ Revision 1.27 2000/07/14 07:55:34 dr
+ export: external references
+
+ Revision 1.26 2000/07/11 13:51:56 er
+ merged from src594 branch
+
+ Revision 1.25 2000/07/11 10:04:04 er
+ NOOLDSV
+
+ Revision 1.24 2000/07/04 07:33:42 dr
+ export: scenarios
+
+ Revision 1.23 2000/06/23 11:35:04 dr
+ add: class XclObjDropDown
+
+ Revision 1.22 2000/06/06 12:14:55 hr
+ syntax
+
+ Revision 1.21 2000/05/29 14:32:01 dr
+ class ExcPalette2 - color reduction algorithm
+
+ Revision 1.20 2000/05/15 16:28:09 nn
+ include
+
+ Revision 1.19 2000/05/08 14:02:20 gt
+ #75548# merge from branch
+
+ Revision 1.18 2000/05/05 18:53:22 nn
+ src569 changes merged
+
+ Revision 1.17 2000/05/05 15:29:18 dr
+ new: XclCellMerging, XclCellMergingList
+
+ Revision 1.16 2000/05/05 12:20:59 gt
+ UNICODE
+
+ Revision 1.15 2000/04/27 08:11:37 dr
+ pivot tables export
+
+ Revision 1.14 2000/04/27 06:27:14 gt
+ #75275# references in conditional format formulas as in shared formulas
+
+ Revision 1.13 2000/02/25 12:00:08 gt
+ #73585# Filter Options and VBA-recognition by Excel
+
+ Revision 1.12 2000/02/17 15:32:49 er
+ #73145# XclObjAny: write ftGmo subrecord if otGroup
+
+ Revision 1.11 2000/02/07 19:09:50 er
+ #72775# new: XclObjOle
+
+ Revision 1.10 2000/01/31 08:44:58 gt
+ #72481# export conditional format
+
+ Revision 1.9 1999/09/29 16:02:36 er
+ new: ExcBofC8
+
+ Revision 1.8 1999/09/22 19:12:10 er
+ chg: OBJ records
+
+ Revision 1.7 1999/08/06 22:34:38 ER
+ add: XclObjComment: temporary test code erDebugEscherExAddSdr
+
+
+ Rev 1.6 07 Aug 1999 00:34:38 ER
+ add: XclObjComment: temporary test code erDebugEscherExAddSdr
+
+ Rev 1.5 27 Jul 1999 16:55:32 ER
+ new: Msodrawinggroup, Msodrawing, Obj, ObjComment, Note, NoteList, Txo
+
+ Rev 1.4 01 Jul 1999 17:21:56 ER
+ chg: WINDOW2 sets selected sheet tab, ExcDummy_03 only SELECTION
+
+ Rev 1.3 16 Jun 1999 19:58:18 ER
+ new: XclObjList, XclObj, XclObjComment, XclTxo, XclNote
+
+ Rev 1.2 11 Jun 1999 20:08:12 ER
+ xcl97exp Formula: References, SupbookList, ExtsheetList, literal Strings
+
+ Rev 1.1 03 Jun 1999 18:42:38 ER
+ xcl97exp Font, Format, RichStr
+
+ Rev 1.0 01 Jun 1999 13:43:38 ER
+ Xcl97 Export Zwischenstand
+------------------------------------------------------------------------*/
diff --git a/sc/source/filter/xml/makefile.mk b/sc/source/filter/xml/makefile.mk
new file mode 100644
index 000000000000..1df68100f891
--- /dev/null
+++ b/sc/source/filter/xml/makefile.mk
@@ -0,0 +1,130 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=xml
+
+ENABLE_EXCEPTIONS=TRUE
+
+AUTOSEG=true
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=filt_pch
+PROJECTPCHSOURCE=..\pch\filt_pch
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ xmlwrap.cxx \
+ xmlimprt.cxx \
+ xmlexprt.cxx \
+ xmlbodyi.cxx \
+ xmltabi.cxx \
+ xmlrowi.cxx \
+ xmlcelli.cxx \
+ xmlconti.cxx \
+ xmlcoli.cxx \
+ xmlsubti.cxx \
+ xmlnexpi.cxx \
+ xmldrani.cxx \
+ xmlfilti.cxx \
+ xmlsorti.cxx \
+ xmlstyle.cxx \
+ xmlstyli.cxx \
+ xmldpimp.cxx \
+ xmlannoi.cxx \
+ xmlmapch.cxx
+
+SLOFILES = \
+ $(SLO)$/xmlwrap.obj \
+ $(SLO)$/xmlimprt.obj \
+ $(SLO)$/xmlexprt.obj \
+ $(SLO)$/xmlbodyi.obj \
+ $(SLO)$/xmltabi.obj \
+ $(SLO)$/xmlrowi.obj \
+ $(SLO)$/xmlcelli.obj \
+ $(SLO)$/xmlconti.obj \
+ $(SLO)$/xmlcoli.obj \
+ $(SLO)$/xmlsubti.obj \
+ $(SLO)$/xmlnexpi.obj \
+ $(SLO)$/xmldrani.obj \
+ $(SLO)$/xmlfilti.obj \
+ $(SLO)$/xmlsorti.obj \
+ $(SLO)$/xmlstyle.obj \
+ $(SLO)$/xmlstyli.obj \
+ $(SLO)$/xmldpimp.obj \
+ $(SLO)$/xmlannoi.obj \
+ $(SLO)$/xmlmapch.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/filter/xml/xmlannoi.cxx b/sc/source/filter/xml/xmlannoi.cxx
new file mode 100644
index 000000000000..87cc1c4a31f5
--- /dev/null
+++ b/sc/source/filter/xml/xmlannoi.cxx
@@ -0,0 +1,155 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlannoi.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmlannoi.hxx"
+#include "xmlimprt.hxx"
+#include "xmlcelli.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlkywd.hxx>
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLAnnotationContext::ScXMLAnnotationContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const uno::Reference<xml::sax::XAttributeList>& xAttrList,
+ ScXMLTableRowCellContext* pTempCellContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ bDisplay(sal_True)
+{
+ pCellContext = pTempCellContext;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetTableAnnotationAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_TABLE_ANNOTATION_ATTR_AUTHOR:
+ {
+ sAuthor = sValue;
+ }
+ break;
+ case XML_TOK_TABLE_ANNOTATION_ATTR_CREATE_DATE:
+ {
+ sCreateDate = sValue;
+ }
+ break;
+ case XML_TOK_TABLE_ANNOTATION_ATTR_DISPLAY:
+ {
+ if (sValue.compareToAscii(sXML_false) == 0)
+ bDisplay = sal_False;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLAnnotationContext::~ScXMLAnnotationContext()
+{
+}
+
+SvXMLImportContext *ScXMLAnnotationContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLAnnotationContext::Characters( const ::rtl::OUString& rChars )
+{
+ sOUText += rChars;
+}
+
+void ScXMLAnnotationContext::EndElement()
+{
+ ScMyAnnotation aMyAnnotation;
+ aMyAnnotation.sAuthor = sAuthor;
+ aMyAnnotation.sCreateDate = sCreateDate;
+ aMyAnnotation.sText = sOUText;
+ aMyAnnotation.bDisplay = bDisplay;
+ pCellContext->AddAnnotation(aMyAnnotation);
+}
+
diff --git a/sc/source/filter/xml/xmlannoi.hxx b/sc/source/filter/xml/xmlannoi.hxx
new file mode 100644
index 000000000000..bb7eddc9439b
--- /dev/null
+++ b/sc/source/filter/xml/xmlannoi.hxx
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlannoi.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLANNOI_HXX
+#define SC_XMLANNOI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+
+class ScXMLImport;
+class ScXMLTableRowCellContext;
+
+class ScXMLAnnotationContext : public SvXMLImportContext
+{
+ rtl::OUString sOUText;
+ rtl::OUString sAuthor;
+ rtl::OUString sCreateDate;
+ sal_Bool bDisplay;
+ ScXMLTableRowCellContext* pCellContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLAnnotationContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLTableRowCellContext* pCellContext);
+
+ virtual ~ScXMLAnnotationContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void Characters( const ::rtl::OUString& rChars );
+
+ virtual void EndElement();
+};
+
+
+#endif
+
diff --git a/sc/source/filter/xml/xmlbodyi.cxx b/sc/source/filter/xml/xmlbodyi.cxx
new file mode 100644
index 000000000000..2d783df119b9
--- /dev/null
+++ b/sc/source/filter/xml/xmlbodyi.cxx
@@ -0,0 +1,153 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlbodyi.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmlbodyi.hxx"
+#include "xmltabi.hxx"
+#include "xmlnexpi.hxx"
+#include "xmldrani.hxx"
+#include "xmlimprt.hxx"
+#include "xmldpimp.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+
+#ifndef _SAL_TYPES_H_
+#include <sal/types.h>
+#endif
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLBodyContext::ScXMLBodyContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName ) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+}
+
+ScXMLBodyContext::~ScXMLBodyContext()
+{
+}
+
+SvXMLImportContext *ScXMLBodyContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetBodyElemTokenMap();
+ sal_Bool bOrdered = sal_False;
+ sal_Bool bHeading = sal_False;
+ switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ {
+// case XML_TOK_TEXT_H:
+// bHeading = TRUE;
+// case XML_TOK_TEXT_P:
+// pContext = new SwXMLParaContext( GetSwImport(),nPrefix, rLocalName,
+// xAttrList, bHeading );
+// break;
+// case XML_TOK_TEXT_ORDERED_LIST:
+// bOrdered = TRUE;
+// case XML_TOK_TEXT_UNORDERED_LIST:
+// pContext = new SwXMLListBlockContext( GetSwImport(),nPrefix, rLocalName,
+// xAttrList, bOrdered );
+// break;
+ case XML_TOK_BODY_TABLE:
+// if( !GetScImport().GetPaM().GetNode()->FindTableNode() )
+ pContext = new ScXMLTableContext( GetScImport(),nPrefix, rLocalName,
+ xAttrList );
+ break;
+ case XML_TOK_BODY_NAMED_EXPRESSIONS:
+ pContext = new ScXMLNamedExpressionsContext ( GetScImport(), nPrefix, rLocalName,
+ xAttrList );
+ break;
+ case XML_TOK_BODY_DATABASE_RANGES:
+ pContext = new ScXMLDatabaseRangesContext ( GetScImport(), nPrefix, rLocalName,
+ xAttrList );
+ break;
+ case XML_TOK_BODY_DATABASE_RANGE:
+ pContext = new ScXMLDatabaseRangeContext ( GetScImport(), nPrefix, rLocalName,
+ xAttrList );
+ break;
+ case XML_TOK_BODY_DATA_PILOT_TABLES:
+ pContext = new ScXMLDataPilotTablesContext ( GetScImport(), nPrefix, rLocalName,
+ xAttrList );
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+
+ return pContext;
+}
+
+void ScXMLBodyContext::EndElement()
+{
+}
diff --git a/sc/source/filter/xml/xmlbodyi.hxx b/sc/source/filter/xml/xmlbodyi.hxx
new file mode 100644
index 000000000000..8838b8e2ab5c
--- /dev/null
+++ b/sc/source/filter/xml/xmlbodyi.hxx
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlbodyi.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_XMLBODYI_HXX
+#define SC_XMLBODYI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+
+class ScXMLImport;
+
+class ScXMLBodyContext : public SvXMLImportContext
+{
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+ ScXMLBodyContext( ScXMLImport& rImport, USHORT nPrfx, const NAMESPACE_RTL(OUString)& rLName );
+ virtual ~ScXMLBodyContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+ virtual void EndElement();
+};
+
+#endif
+
diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx
new file mode 100644
index 000000000000..b4a12c001d42
--- /dev/null
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -0,0 +1,1034 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlcelli.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmlcelli.hxx"
+#include "xmlconti.hxx"
+#include "xmlimprt.hxx"
+#include "xmltabi.hxx"
+#include "xmlstyli.hxx"
+#include "xmlannoi.hxx"
+#include "global.hxx"
+#include "document.hxx"
+#include "cellsuno.hxx"
+#include "docuno.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/xmlkywd.hxx>
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmluconv.hxx>
+#include <xmloff/families.hxx>
+#ifndef XMLOFF_NUMEHELP_HXX
+#include <xmloff/numehelp.hxx>
+#endif
+#include <svtools/zforlist.hxx>
+
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/sheet/XSpreadsheets.hpp>
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#include <com/sun/star/sheet/XCellRangeAddressable.hpp>
+#include <com/sun/star/table/CellRangeAddress.hpp>
+
+#ifndef _COM_SUN_STAR_UTIL_XMERGEABLE_HPP_
+#include <com/sun/star/util/XMergeable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XCELLRANGE_HPP_
+#include <com/sun/star/table/XCellRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLADDRESS_HPP_
+#include <com/sun/star/table/CellAddress.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_NUMBERFORMAT_HPP_
+#include <com/sun/star/util/NumberFormat.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATSSUPPLIER_HPP_
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTYPES_HPP_
+#include <com/sun/star/util/XNumberFormatTypes.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_DATE_HPP_
+#include <com/sun/star/util/Date.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_LOCALE_HPP_
+#include <com/sun/star/lang/Locale.hpp>
+#endif
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+#ifndef _DATE_HXX
+#include <tools/date.hxx>
+#endif
+#ifndef _TOOLS_SOLMATH_HXX
+#include <tools/solmath.hxx>
+#endif
+#ifndef _ISOLANG_HXX
+#include <tools/isolang.hxx>
+#endif
+#include <tools/intn.hxx>
+
+#define SC_NUMBERFORMAT "NumberFormat"
+#define SC_LOCALE "Locale"
+#define SC_NULLDATE "NullDate"
+#define SC_CURRENCYSYMBOL "CurrencySymbol"
+#define SC_CELLSTYLE "CellStyle"
+#define SC_TYPE "Type"
+#define SC_STANDARDFORMAT "StandardFormat"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ const sal_Bool bTempIsCovered,
+ const sal_Int32 nTempRepeatedRows ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ bIsMerged(sal_False),
+ bIsMatrix(sal_False),
+ bIsFormula(sal_False),
+ bHasSubTable(sal_False),
+ bIsCovered(bTempIsCovered),
+ bHasAnnotation(sal_False),
+ nRepeatedRows(nTempRepeatedRows),
+ bIsEmpty(sal_True),
+ bHasTextImport(sal_False),
+ bIsFirstTextImport(sal_True)
+{
+ GetScImport().GetTables().AddColumn(bTempIsCovered);
+ nMergedCols = 1;
+ nMergedRows = 1;
+ nCellsRepeated = 1;
+ fValue = 0.0;
+ nCellType = 0;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetTableRowCellAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_TABLE_ROW_CELL_ATTR_STYLE_NAME:
+ {
+ sStyleName = sValue;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_ROWS:
+ {
+ bIsMerged = sal_True;
+ nMergedRows = sValue.toInt32();
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_COLS:
+ {
+ bIsMerged = sal_True;
+ nMergedCols = sValue.toInt32();
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_REPEATED:
+ {
+ nCellsRepeated = sValue.toInt32();
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_VALUE_TYPE:
+ {
+ nCellType = GetCellType(sValue);
+ bIsEmpty = sal_False;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_VALUE:
+ {
+ GetScImport().GetMM100UnitConverter().convertNumber(fValue, sValue);
+ bIsEmpty = sal_False;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_DATE_VALUE:
+ {
+ sOUDateValue = sValue;
+ bIsEmpty = sal_False;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_TIME_VALUE:
+ {
+ sOUTimeValue = sValue;
+ bIsEmpty = sal_False;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_BOOLEAN_VALUE:
+ {
+ sOUBooleanValue = sValue;
+ bIsEmpty = sal_False;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_STRING_VALUE:
+ {
+ sOUTextValue = sValue;
+ bIsEmpty = sal_False;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_FORMULA:
+ {
+ bIsFormula = sal_True;
+ sOUFormula = sValue;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_CURRENCY :
+ {
+ sCurrencySymbol = sValue;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_COLS :
+ {
+ bIsMatrix = sal_True;
+ nMatrixCols = sValue.toInt32();
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_ROWS :
+ {
+ bIsMatrix = sal_True;
+ nMatrixRows = sValue.toInt32();
+ }
+ break;
+ }
+ }
+
+}
+
+sal_Int16 ScXMLTableRowCellContext::GetCellType(const rtl::OUString& sOUValue) const
+{
+ if (sOUValue.equals(GetScImport().sSC_float))
+ return util::NumberFormat::NUMBER;
+ else
+ if (sOUValue.equals(GetScImport().sSC_string))
+ return util::NumberFormat::TEXT;
+ else
+ if (sOUValue.equals(GetScImport().sSC_time))
+ return util::NumberFormat::TIME;
+ else
+ if (sOUValue.equals(GetScImport().sSC_date))
+ return util::NumberFormat::DATETIME;
+ else
+ if (sOUValue.equals(GetScImport().sSC_percentage))
+ return util::NumberFormat::PERCENT;
+ else
+ if (sOUValue.equals(GetScImport().sSC_currency))
+ return util::NumberFormat::CURRENCY;
+ else
+ if (sOUValue.equals(GetScImport().sSC_boolean))
+ return util::NumberFormat::LOGICAL;
+ else
+ return 0;
+}
+
+ScXMLTableRowCellContext::~ScXMLTableRowCellContext()
+{
+}
+
+SvXMLImportContext *ScXMLTableRowCellContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetTableRowCellElemTokenMap();
+ sal_Bool bHeader = sal_False;
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_TABLE_ROW_CELL_P:
+ {
+// if( IsInsertTextPossible() )
+/* pContext = new ScXMLContentContext( GetScImport(), nPrefix,
+ rLName, xAttrList, XML_TOK_TABLE_ROW_CELL_P,
+ this );*/
+ bIsEmpty = sal_False;
+ ScXMLImport& rXMLImport = GetScImport();
+ if (bIsFirstTextImport)
+ {
+ com::sun::star::table::CellAddress aCellPos = rXMLImport.GetTables().GetRealCellPos();
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rXMLImport.GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ uno::Any aTable = xIndex->getByIndex(aCellPos.Sheet);
+ uno::Reference<sheet::XSpreadsheet> xTable;
+ aTable>>=xTable;
+ uno::Reference<table::XCellRange> xCellRange ( xTable, uno::UNO_QUERY );
+ if (xCellRange.is())
+ {
+ uno::Reference <table::XCell> xCell = xCellRange->getCellByPosition(aCellPos.Column, aCellPos.Row);
+ if (xCell.is())
+ {
+ uno::Reference<text::XText> xText(xCell, uno::UNO_QUERY);
+ if (xText.is())
+ {
+ uno::Reference<text::XTextCursor> xTextCursor = xText->createTextCursor();
+ rXMLImport.GetTextImport()->SetCursor(xTextCursor);
+ bIsFirstTextImport = sal_False;
+ bHasTextImport = sal_True;
+ pContext = rXMLImport.GetTextImport()->CreateTextChildContext(
+ GetScImport(), nPrefix, rLName, xAttrList);
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ pContext = rXMLImport.GetTextImport()->CreateTextChildContext(
+ GetScImport(), nPrefix, rLName, xAttrList);
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_SUBTABLE:
+ {
+ bHasSubTable = sal_True;
+ pContext = new ScXMLTableContext( GetScImport() , nPrefix,
+ rLName, xAttrList,
+ sal_True, nMergedCols);
+ nMergedCols = 1;
+ bIsMerged = sal_False;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_CELL_ANNOTATION:
+ {
+ bIsEmpty = sal_False;
+ pContext = new ScXMLAnnotationContext( GetScImport(), nPrefix, rLName,
+ xAttrList, this);
+ }
+ break;
+ }
+
+ if (!pContext)
+ {
+ ScXMLImport& rXMLImport = GetScImport();
+ com::sun::star::table::CellAddress aCellPos = rXMLImport.GetTables().GetRealCellPos();
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rXMLImport.GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ ScModelObj* pDocObj = ScModelObj::getImplementation( GetScImport().GetModel() );
+ if ( pDocObj )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ if (pDoc)
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ uno::Any aTable = xIndex->getByIndex(aCellPos.Sheet);
+ uno::Reference<sheet::XSpreadsheet> xTable;
+ if (aTable>>=xTable)
+ {
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xTable, uno::UNO_QUERY);
+ if (xDrawPageSupplier.is())
+ {
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ if (xDrawPage.is())
+ {
+ uno::Reference<drawing::XShapes> xShapes (xDrawPage, uno::UNO_QUERY);
+ if (xShapes.is())
+ {
+ Rectangle aRec = pDoc->GetMMRect(aCellPos.Column, aCellPos.Row, aCellPos.Column, aCellPos.Row, aCellPos.Sheet);
+ awt::Point aPoint;
+ aPoint.X = aRec.Left();
+ aPoint.Y = aRec.Top();
+ awt::Point* pPoint = &aPoint;
+ pContext = rXMLImport.GetShapeImport()->CreateGroupChildContext(
+ rXMLImport, nPrefix, rLName, xAttrList, xShapes/*, pPoint*/);
+ if (pContext)
+ bIsEmpty = sal_False;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+sal_Int16 ScXMLTableRowCellContext::GetCellType(const sal_Int32 nNumberFormat, sal_Bool& bIsStandard)
+{
+ uno::Reference <util::XNumberFormatsSupplier> xNumberFormatsSupplier = GetScImport().GetNumberFormatsSupplier();
+ if (xNumberFormatsSupplier.is())
+ {
+ uno::Reference <util::XNumberFormats> xNumberFormats = xNumberFormatsSupplier->getNumberFormats();
+ if (xNumberFormats.is())
+ {
+ uno::Reference <beans::XPropertySet> xNumberPropertySet = xNumberFormats->getByKey(nNumberFormat);
+ uno::Any aIsStandardFormat = xNumberPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_STANDARDFORMAT)));
+ aIsStandardFormat >>= bIsStandard;
+ uno::Any aNumberFormat = xNumberPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_TYPE)));
+ sal_Int16 nNumberFormat;
+ if ( aNumberFormat >>= nNumberFormat )
+ {
+ return nNumberFormat;
+ }
+ }
+ }
+ return 0;
+}
+
+void ScXMLTableRowCellContext::SetType(const uno::Reference<table::XCellRange>& xCellRange,
+ const table::CellAddress& aCellAddress)
+{
+ uno::Reference <util::XNumberFormatsSupplier> xNumberFormatsSupplier = GetScImport().GetNumberFormatsSupplier();
+ if (xNumberFormatsSupplier.is())
+ {
+ uno::Reference <util::XNumberFormats> xNumberFormats = xNumberFormatsSupplier->getNumberFormats();
+ if (xNumberFormats.is())
+ {
+ sal_Int32 nBottom = aCellAddress.Row + nRepeatedRows - 1;
+ sal_Int32 nRight = aCellAddress.Column + nCellsRepeated - 1;
+ if (nBottom > MAXROW)
+ nBottom = MAXROW;
+ if (nRight > MAXCOL)
+ nRight = MAXCOL;
+ uno::Reference <util::XNumberFormatTypes> xNumberFormatTypes (xNumberFormats, uno::UNO_QUERY);
+ uno::Reference <table::XCellRange> xPropCellRange = xCellRange->getCellRangeByPosition(aCellAddress.Column, aCellAddress.Row,
+ nRight, nBottom);
+ if (xPropCellRange.is())
+ {
+ uno::Reference <beans::XPropertySet> xCellPropertySet (xPropCellRange, uno::UNO_QUERY);
+ if (xCellPropertySet.is() && xNumberFormatTypes.is())
+ {
+ uno::Any aKey = xCellPropertySet->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT) ));
+ sal_Int32 nKey;
+ if ( aKey >>= nKey )
+ {
+ sal_Bool bIsStandard;
+ if (nCellType != (GetCellType(nKey, bIsStandard) & ~util::NumberFormat::DEFINED))
+ {
+ uno::Reference < beans::XPropertySet> xNumberFormatProperties = xNumberFormats->getByKey(nKey);
+ if (xNumberFormatProperties.is())
+ {
+ if (nCellType != util::NumberFormat::CURRENCY)
+ {
+ uno::Any aNumberLocale = xNumberFormatProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_LOCALE)));
+ lang::Locale aLocale;
+ if ( aNumberLocale >>= aLocale )
+ {
+ sal_Int32 nNumberFormatPropertyKey = xNumberFormatTypes->getStandardFormat(nCellType, aLocale);
+ uno::Any aNumberFormatPropertyKey;
+ aNumberFormatPropertyKey <<= nNumberFormatPropertyKey;
+ xCellPropertySet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT)), aNumberFormatPropertyKey );
+ }
+ }
+ else
+ {
+ nKey = SetCurrencySymbol(nKey);
+ uno::Any aAny;
+ aAny <<= nKey;
+ xCellPropertySet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT)), aAny);
+ }
+ }
+ }
+ else
+ {
+ if (nCellType == util::NumberFormat::CURRENCY)
+ {
+ rtl::OUString sNewCurrencySymbol;
+ if (XMLNumberFormatAttributesExportHelper::GetCurrencySymbol(nKey, sNewCurrencySymbol, xNumberFormatsSupplier))
+ {
+ if (!sNewCurrencySymbol.equals(sCurrencySymbol))
+ {
+ nKey = SetCurrencySymbol(nKey);
+ uno::Any aAny;
+ aAny <<= nKey;
+ xCellPropertySet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT)), aAny);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+void ScXMLTableRowCellContext::SetType(const uno::Reference<table::XCell>& xCell)
+{
+ uno::Reference <util::XNumberFormatsSupplier> xNumberFormatsSupplier = GetScImport().GetNumberFormatsSupplier();
+ if (xNumberFormatsSupplier.is())
+ {
+ uno::Reference <util::XNumberFormats> xNumberFormats = xNumberFormatsSupplier->getNumberFormats();
+ if (xNumberFormats.is())
+ {
+ uno::Reference <util::XNumberFormatTypes> xNumberFormatTypes (xNumberFormats, uno::UNO_QUERY);
+ uno::Reference <beans::XPropertySet> xCellPropertySet (xCell, uno::UNO_QUERY);
+ if (xCellPropertySet.is() && xNumberFormatTypes.is())
+ {
+ uno::Any aKey = xCellPropertySet->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT) ));
+ sal_Int32 nKey;
+ if ( aKey >>= nKey )
+ {
+ sal_Bool bIsStandard;
+ if (nCellType != (GetCellType(nKey, bIsStandard) & ~util::NumberFormat::DEFINED))
+ {
+ uno::Reference < beans::XPropertySet> xNumberFormatProperties = xNumberFormats->getByKey(nKey);
+ if (xNumberFormatProperties.is())
+ {
+ if (nCellType != util::NumberFormat::CURRENCY)
+ {
+ uno::Any aNumberLocale = xNumberFormatProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_LOCALE)));
+ lang::Locale aLocale;
+ if ( aNumberLocale >>= aLocale )
+ {
+ sal_Int32 nNumberFormatPropertyKey = xNumberFormatTypes->getStandardFormat(nCellType, aLocale);
+ uno::Any aNumberFormatPropertyKey;
+ aNumberFormatPropertyKey <<= nNumberFormatPropertyKey;
+ xCellPropertySet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT)), aNumberFormatPropertyKey );
+ }
+ }
+ else
+ {
+ nKey = SetCurrencySymbol(nKey);
+ uno::Any aAny;
+ aAny <<= nKey;
+ xCellPropertySet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT)), aAny);
+ }
+ }
+ }
+ else
+ {
+ if (nCellType == util::NumberFormat::CURRENCY)
+ {
+ rtl::OUString sNewCurrencySymbol;
+ if (XMLNumberFormatAttributesExportHelper::GetCurrencySymbol(nKey, sNewCurrencySymbol, xNumberFormatsSupplier))
+ {
+ if (!sNewCurrencySymbol.equals(sCurrencySymbol))
+ {
+ nKey = SetCurrencySymbol(nKey);
+ uno::Any aAny;
+ aAny <<= nKey;
+ xCellPropertySet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT)), aAny);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+sal_Int32 ScXMLTableRowCellContext::SetCurrencySymbol(const sal_Int32 nKey)
+{
+ if (sCurrencySymbol.getLength() > 0)
+ {
+ uno::Reference <util::XNumberFormatsSupplier> xNumberFormatsSupplier = GetScImport().GetNumberFormatsSupplier();
+ if (xNumberFormatsSupplier.is())
+ {
+ uno::Reference <util::XNumberFormats> xNumberFormats = xNumberFormatsSupplier->getNumberFormats();
+ if (xNumberFormats.is())
+ {
+ uno::Reference <beans::XPropertySet> xProperties = xNumberFormats->getByKey(nKey);
+ if (xProperties.is())
+ {
+ uno::Any aAny = xProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_LOCALE)));
+ lang::Locale aLocale;
+ if (aAny >>= aLocale)
+ {
+ LanguageType aLanguageType = ConvertIsoNamesToLanguage(aLocale.Language, aLocale.Country);
+ International aInt(aLanguageType);
+ sal_Unicode aDecimalSep = aInt.GetNumDecimalSep();
+ sal_Unicode aThousandSep = aInt.GetNumThousandSep();
+ rtl::OUStringBuffer aBuffer(15);
+ aBuffer.appendAscii("#");
+ aBuffer.append(aThousandSep);
+ aBuffer.appendAscii("##0");
+ aBuffer.append(aDecimalSep);
+ aBuffer.appendAscii("00 [$");
+ aBuffer.append(sCurrencySymbol);
+ aBuffer.appendAscii("]");
+ return xNumberFormats->addNew(aBuffer.makeStringAndClear(), aLocale);
+ }
+ }
+ }
+ }
+ }
+ return nKey;
+}
+
+sal_Bool ScXMLTableRowCellContext::IsMerged (const uno::Reference <table::XCellRange>& xCellRange, const sal_Int32 nCol, const sal_Int32 nRow,
+ table::CellRangeAddress& aCellAddress) const
+{
+ uno::Reference <table::XCellRange> xMergeCellRange = xCellRange->getCellRangeByPosition(nCol,nRow,nCol,nRow);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ {
+ uno::Reference<sheet::XSheetCellRange> xMergeSheetCellRange (xMergeCellRange, uno::UNO_QUERY);
+ uno::Reference<sheet::XSpreadsheet> xTable = xMergeSheetCellRange->getSpreadsheet();
+ uno::Reference<sheet::XSheetCellCursor> xMergeSheetCursor = xTable->createCursorByRange(xMergeSheetCellRange);
+ if (xMergeSheetCursor.is())
+ {
+ xMergeSheetCursor->collapseToMergedArea();
+ uno::Reference<sheet::XCellRangeAddressable> xMergeCellAddress (xMergeSheetCursor, uno::UNO_QUERY);
+ if (xMergeCellAddress.is())
+ {
+ aCellAddress = xMergeCellAddress->getRangeAddress();
+ if (aCellAddress.StartColumn == nCol && aCellAddress.EndColumn == nCol &&
+ aCellAddress.StartRow == nRow && aCellAddress.EndRow == nRow)
+ return sal_False;
+ else
+ return sal_True;
+ }
+ }
+ }
+ return sal_False;
+}
+
+void ScXMLTableRowCellContext::DoMerge(const com::sun::star::table::CellAddress& aCellPos,
+ const sal_Int32 nCols, const sal_Int32 nRows) const
+{
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( GetScImport().GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ table::CellRangeAddress aCellAddress;
+ uno::Any aTable = xIndex->getByIndex(aCellPos.Sheet);
+ uno::Reference<sheet::XSpreadsheet> xTable;
+ aTable>>=xTable;
+ uno::Reference<table::XCellRange> xCellRange ( xTable, uno::UNO_QUERY );
+ if ( xCellRange.is() )
+ {
+ if (IsMerged(xCellRange, aCellPos.Column, aCellPos.Row, aCellAddress))
+ {
+ //unmerge
+ uno::Reference <table::XCellRange> xMergeCellRange =
+ xCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
+ aCellAddress.EndColumn, aCellAddress.EndRow);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ xMergeable->merge(sal_False);
+ }
+
+ //merge
+ uno::Reference <table::XCellRange> xMergeCellRange =
+ xCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
+ aCellAddress.EndColumn + nCols, aCellAddress.EndRow + nRows);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ xMergeable->merge(sal_True);
+ }
+ }
+ }
+}
+
+void ScXMLTableRowCellContext::ParseFormula(OUString& sFormula, sal_Bool bIsFormula)
+{
+ OUStringBuffer sBuffer(sFormula.getLength());
+ sal_Int16 nCountQuotationMarks = 0;
+ sal_Int16 nCountBraces = 0;
+ sal_Unicode chPrevious = '=';
+ for (sal_Int32 i = 0; i < sFormula.getLength(); i++)
+ {
+ if (sFormula[i] == '"')
+ if (nCountQuotationMarks == 0)
+ nCountQuotationMarks++;
+ else
+ nCountQuotationMarks--;
+ if (sFormula[i] != '[' && sFormula[i] != ']')
+ {
+ if (sFormula[i] != '.' || (nCountBraces == 0 && bIsFormula) ||
+ !(chPrevious == '[' || chPrevious == ':' || chPrevious == ' ' || chPrevious == '='))
+ {
+ sBuffer.append(sFormula[i]);
+ }
+ }
+ else
+ if (nCountQuotationMarks == 0)
+ if (sFormula[i] == '[')
+ nCountBraces++;
+ else
+ nCountBraces--;
+ else
+ sBuffer.append(sFormula[i]);
+ chPrevious = sFormula[i];
+ }
+ sFormula = sBuffer.makeStringAndClear();
+}
+
+void ScXMLTableRowCellContext::SetCellProperties(const uno::Reference<table::XCellRange>& xCellRange,
+ const table::CellAddress& aCellAddress)
+{
+ ScXMLImport& rXMLImport = GetScImport();
+ sal_Int32 nBottom = aCellAddress.Row + nRepeatedRows - 1;
+ sal_Int32 nRight = aCellAddress.Column + nCellsRepeated - 1;
+ if (nBottom > MAXROW)
+ nBottom = MAXROW;
+ if (nRight > MAXCOL)
+ nRight = MAXCOL;
+ uno::Reference <table::XCellRange> xPropCellRange = xCellRange->getCellRangeByPosition(aCellAddress.Column, aCellAddress.Row,
+ nRight, nBottom);
+ if (xPropCellRange.is())
+ {
+ uno::Reference <beans::XPropertySet> xProperties (xPropCellRange, uno::UNO_QUERY);
+ if (xProperties.is())
+ {
+ XMLTableStylesContext *pStyles = (XMLTableStylesContext *)&rXMLImport.GetAutoStyles();
+ XMLTableStyleContext* pStyle = (XMLTableStyleContext *)pStyles->FindStyleChildContext(
+ XML_STYLE_FAMILY_TABLE_CELL, sStyleName, sal_True);
+ if (pStyle)
+ {
+ rtl::OUString sParentName = pStyle->GetParent();
+ uno::Any aStyleName;
+ aStyleName <<= sParentName;
+ xProperties->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_CELLSTYLE)), aStyleName);
+ pStyle->FillPropertySet(xProperties);
+ }
+ else
+ {
+ uno::Any aStyleName;
+ aStyleName <<= sStyleName;
+ xProperties->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_CELLSTYLE)), aStyleName);
+ }
+ }
+ }
+}
+
+void ScXMLTableRowCellContext::SetCellProperties(const uno::Reference<table::XCell>& xCell)
+{
+ ScXMLImport& rXMLImport = GetScImport();
+ uno::Reference <beans::XPropertySet> xProperties (xCell, uno::UNO_QUERY);
+ if (xProperties.is())
+ {
+ XMLTableStylesContext *pStyles = (XMLTableStylesContext *)&rXMLImport.GetAutoStyles();
+ XMLTableStyleContext* pStyle = (XMLTableStyleContext *)pStyles->FindStyleChildContext(
+ XML_STYLE_FAMILY_TABLE_CELL, sStyleName, sal_True);
+ if (pStyle)
+ {
+ rtl::OUString sParentName = pStyle->GetParent();
+ uno::Any aStyleName;
+ aStyleName <<= sParentName;
+ xProperties->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_CELLSTYLE)), aStyleName);
+ pStyle->FillPropertySet(xProperties);
+ }
+ else
+ {
+ uno::Any aStyleName;
+ aStyleName <<= sStyleName;
+ xProperties->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_CELLSTYLE)), aStyleName);
+ }
+ }
+}
+
+void ScXMLTableRowCellContext::SetAnnotation(const uno::Reference<table::XCell>& xCell)
+{
+ /*uno::Reference<sheet::XSheetAnnotationAnchor> xSheetAnnotationAnchor(xCell, uno::UNO_QUERY);
+ if (xSheetAnnotationAnchor.is())
+ {
+ uno::Reference <sheet::XSheetAnnotation> xSheetAnnotation = xSheetAnnotationAnchor->getAnnotation();
+ uno::Reference<text::XSimpleText> xSimpleText(xSheetAnnotation, uno::UNO_QUERY);
+ if (xSheetAnnotation.is() && xSimpleText.is())
+ {
+ xSimpleText->setString(aMyAnnotation.sText);
+ //xSheetAnnotation->setAuthor(aMyAnnotation.sAuthor);
+ //xSheetAnnotation->setDate();
+ xSheetAnnotation->setIsVisible(aMyAnnotation.bDisplay);
+ }
+ }*/
+ uno::Reference<sheet::XCellAddressable> xCellAddressable(xCell, uno::UNO_QUERY);
+ if (xCellAddressable.is())
+ {
+ table::CellAddress aCellAddress = xCellAddressable->getCellAddress();
+ ScModelObj* pDocObj = ScModelObj::getImplementation( GetScImport().GetModel() );
+ if ( pDocObj )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ if (pDoc)
+ {
+ double fDate;
+ GetScImport().GetMM100UnitConverter().convertDateTime(fDate, aMyAnnotation.sCreateDate);
+ SvNumberFormatter* pNumForm = pDoc->GetFormatTable();
+ sal_uInt32 nfIndex = pNumForm->GetFormatIndex(NF_DATE_SYS_DDMMYYYY, LANGUAGE_SYSTEM);
+ String sDate;
+ Color* pColor = NULL;
+ Color** ppColor = &pColor;
+ pNumForm->GetOutputString(fDate, nfIndex, sDate, ppColor);
+ ScPostIt aNote(String(aMyAnnotation.sText), sDate, String(aMyAnnotation.sAuthor));
+ aNote.SetShown(aMyAnnotation.bDisplay);
+ pDoc->SetNote(aCellAddress.Column, aCellAddress.Row, aCellAddress.Sheet, aNote);
+ }
+ }
+ }
+}
+
+void ScXMLTableRowCellContext::EndElement()
+{
+ if (bHasTextImport)
+ if( GetImport().GetTextImport()->GetCursor()->goLeft( 1, sal_True ) )
+ {
+ OUString sEmpty;
+ GetImport().GetTextImport()->GetText()->insertString(
+ GetImport().GetTextImport()->GetCursorAsRange(), sEmpty,
+ sal_True );
+ }
+ GetScImport().GetTextImport()->ResetCursor();
+ if (!bHasSubTable)
+ {
+ ScXMLImport& rXMLImport = GetScImport();
+ table::CellAddress aCellPos = rXMLImport.GetTables().GetRealCellPos();
+ if (aCellPos.Column > 0 && nRepeatedRows > 1)
+ aCellPos.Row -= (nRepeatedRows - 1);
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rXMLImport.GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ uno::Any aTable = xIndex->getByIndex(aCellPos.Sheet);
+ uno::Reference<sheet::XSpreadsheet> xTable;
+ aTable>>=xTable;
+ uno::Reference<table::XCellRange> xCellRange ( xTable, uno::UNO_QUERY );
+ uno::Reference <table::XCell> xTempCell = xCellRange->getCellByPosition(aCellPos.Column, aCellPos.Row);
+ uno::Reference <text::XText> xTempText (xTempCell, uno::UNO_QUERY);
+ if (xTempText.is())
+ sOUText=xTempText->getString();
+ if (bIsMerged)
+ DoMerge(aCellPos, nMergedCols - 1, nMergedRows - 1);
+ if ( !bIsFormula )
+ {
+ uno::Reference <table::XCell> xCell;
+ for (sal_Int32 i = 0; i < nCellsRepeated; i++)
+ {
+ if (i > 0)
+ rXMLImport.GetTables().AddColumn(sal_False);
+ if (!bIsEmpty)
+ {
+ for (sal_Int32 j = 0; j < nRepeatedRows; j++)
+ {
+ if ((aCellPos.Column + i == 0) && (j > 0))
+ rXMLImport.GetTables().AddRow();
+ xCell = xCellRange->getCellByPosition(aCellPos.Column + i, aCellPos.Row + j);
+ if ((!(bIsCovered) || (xCell->getType() == table::CellContentType_EMPTY)))
+ {
+ switch (nCellType)
+ {
+ case util::NumberFormat::TEXT:
+ {
+ uno::Reference <text::XText> xText (xCell, uno::UNO_QUERY);
+ if (xText.is())
+ {
+ if(sOUTextValue.getLength())
+ xText->setString(sOUTextValue);
+ else
+ if (i > 0)
+ xText->setString(sOUText);
+ }
+ }
+ break;
+ case util::NumberFormat::NUMBER:
+ case util::NumberFormat::PERCENT:
+ case util::NumberFormat::CURRENCY:
+ {
+ xCell->setValue(fValue);
+ }
+ break;
+ case util::NumberFormat::TIME:
+ {
+ rXMLImport.GetMM100UnitConverter().convertTime(fValue, sOUTimeValue);
+ xCell->setValue(fValue);
+ }
+ break;
+ case util::NumberFormat::DATETIME:
+ {
+ if (rXMLImport.GetMM100UnitConverter().setNullDate(rXMLImport.GetModel()))
+ {
+ rXMLImport.GetMM100UnitConverter().convertDateTime(fValue, sOUDateValue);
+ double fTempValue = SolarMath::ApproxFloor(fValue);
+ if ( SolarMath::ApproxEqual (fValue, fTempValue) )
+ {
+ nCellType = util::NumberFormat::DATE;
+ }
+ xCell->setValue(fValue);
+ }
+ }
+ break;
+ case util::NumberFormat::LOGICAL:
+ {
+ if ( 0 == sOUBooleanValue.compareToAscii(sXML_true) )
+ xCell->setValue(1.0);
+ else
+ xCell->setValue(0.0);
+ }
+ break;
+ default:
+ {
+ uno::Reference <text::XText> xText (xCell, uno::UNO_QUERY);
+ if (xText.is())
+ {
+ if (i > 0)
+ xText->setString(sOUText);
+ }
+ }
+ break;
+ }
+ }
+ if (bHasAnnotation)
+ SetAnnotation(xCell);
+ }
+ }
+ else
+ if ((i == 0) && (aCellPos.Column == 0))
+ for (sal_Int32 j = 1; j < nRepeatedRows; j++)
+ {
+ rXMLImport.GetTables().AddRow();
+ rXMLImport.GetTables().AddColumn(sal_False);
+ }
+ }
+ if (nCellsRepeated > 1 || nRepeatedRows > 1)
+ {
+ SetCellProperties(xCellRange, aCellPos);
+ SetType(xCellRange, aCellPos);
+ }
+ else
+ {
+ SetCellProperties(xTempCell);
+ SetType(xTempCell);
+ }
+ }
+ else
+ {
+ uno::Reference <table::XCell> xCell = xCellRange->getCellByPosition(aCellPos.Column , aCellPos.Row);
+ SetCellProperties(xCell);
+ ParseFormula(sOUFormula);
+ if (!bIsMatrix)
+ {
+ xCell->setFormula(sOUFormula);
+ }
+ else
+ {
+ if (nMatrixCols > 0 && nMatrixRows > 0)
+ {
+ uno::Reference <table::XCellRange> xMatrixCellRange =
+ xCellRange->getCellRangeByPosition(aCellPos.Column, aCellPos.Row,
+ aCellPos.Column + nMatrixCols - 1, aCellPos.Row + nMatrixRows - 1);
+ if (xMatrixCellRange.is())
+ {
+ uno::Reference <sheet::XArrayFormulaRange> xArrayFormulaRange(xMatrixCellRange, uno::UNO_QUERY);
+ if (xArrayFormulaRange.is())
+ {
+ xArrayFormulaRange->setArrayFormula(sOUFormula);
+ }
+ }
+ }
+ }
+ if (bHasAnnotation)
+ SetAnnotation(xCell);
+//2do: results of formula cells should be stored in XML and set upon reading
+ // No API implemented because this is the only place where needed ever, isn't it?
+ //! QAD HACK! be sure that getCellByPosition() really returned a ScCellObj
+ ScCellObj* pCellObj = (ScCellObj*) ScCellRangesBase::getImplementation( xCell );
+ if ( pCellObj )
+ {
+ if ( FALSE )
+ {
+//2do: make it real
+ BOOL bIsStringResult = TRUE;
+ if ( bIsStringResult )
+ pCellObj->SetFormulaResultString( sOUText );
+ else
+ pCellObj->SetFormulaResultDouble( fValue );
+ }
+ }
+ }
+ }
+ }
+ }
+ bIsMerged = sal_False;
+ bHasSubTable = sal_False;
+ nMergedCols = 1;
+ nMergedRows = 1;
+ nCellsRepeated = 1;
+}
diff --git a/sc/source/filter/xml/xmlcelli.hxx b/sc/source/filter/xml/xmlcelli.hxx
new file mode 100644
index 000000000000..cb4d2b761a46
--- /dev/null
+++ b/sc/source/filter/xml/xmlcelli.hxx
@@ -0,0 +1,173 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlcelli.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLCELLI_HXX
+#define SC_XMLCELLI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XCELL_HPP_
+#include <com/sun/star/table/XCell.hpp>
+#endif
+#include <tools/time.hxx>
+#include <com/sun/star/util/DateTime.hpp>
+#ifndef _SAL_TYPES_H_
+#include <sal/types.h>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XCELLRANGE_HPP_
+#include <com/sun/star/table/XCellRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLRANGEADDRESS_HPP_
+#include <com/sun/star/table/CellRangeAddress.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLADDRESS_HPP_
+#include <com/sun/star/table/CellAddress.hpp>
+#endif
+
+class ScXMLImport;
+
+struct ScMyAnnotation
+{
+ rtl::OUString sAuthor;
+ rtl::OUString sCreateDate;
+ rtl::OUString sText;
+ sal_Bool bDisplay;
+};
+
+class ScXMLTableRowCellContext : public SvXMLImportContext
+{
+ sal_Int32 nMergedRows, nMergedCols;
+ sal_Int32 nMatrixRows, nMatrixCols;
+ sal_Bool bIsMerged;
+ sal_Bool bIsMatrix;
+ sal_Bool bIsFormula;
+ sal_Bool bHasSubTable;
+ sal_Bool bIsCovered;
+ sal_Bool bHasAnnotation;
+ sal_Bool bIsEmpty;
+ sal_Bool bHasTextImport;
+ sal_Bool bIsFirstTextImport;
+ sal_Int32 nCellsRepeated;
+ sal_Int16 nCellType;
+ sal_Int32 nRepeatedRows;
+ double fValue;
+ rtl::OUString sOUText;
+ rtl::OUString sOUDateValue;
+ rtl::OUString sOUTimeValue;
+ rtl::OUString sOUBooleanValue;
+ rtl::OUString sOUTextValue;
+ rtl::OUString sOUFormula;
+ rtl::OUString sCurrencySymbol;
+ rtl::OUString sStyleName;
+ ScMyAnnotation aMyAnnotation;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+ sal_Int16 GetCellType(const sal_Int32 nNumberFormat, sal_Bool& bIsStandard);
+
+ void SetType(const com::sun::star::uno::Reference<com::sun::star::table::XCellRange>& xCellRange,
+ const com::sun::star::table::CellAddress& aCellAddress);
+ void SetType(const com::sun::star::uno::Reference<com::sun::star::table::XCell>& xCell);
+ sal_Int32 SetCurrencySymbol(sal_Int32 nKey);
+
+ sal_Int16 GetCellType(const rtl::OUString& sOUValue) const;
+
+ sal_Bool IsMerged (const com::sun::star::uno::Reference <com::sun::star::table::XCellRange>& xCellRange,
+ const sal_Int32 nCol, const sal_Int32 nRow,
+ com::sun::star::table::CellRangeAddress& aCellAddress) const;
+ void DoMerge(const com::sun::star::table::CellAddress& aCellPos,
+ const sal_Int32 nCols, const sal_Int32 nRows) const;
+
+ void SetCellProperties(const com::sun::star::uno::Reference<com::sun::star::table::XCellRange>& xCellRange,
+ const com::sun::star::table::CellAddress& aCellAddress);
+ void SetCellProperties(const com::sun::star::uno::Reference<com::sun::star::table::XCell>& xCell);
+
+public:
+
+ ScXMLTableRowCellContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ const sal_Bool bIsCovered, const sal_Int32 nRepeatedRows );
+
+ virtual ~ScXMLTableRowCellContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ void SetString(const rtl::OUString& sOUTempText) { sOUText = sOUTempText; }
+
+ static void ParseFormula(rtl::OUString& sFormula, sal_Bool bIsFormula = sal_True);
+ void SetAnnotation(const com::sun::star::uno::Reference<com::sun::star::table::XCell>& xCell);
+
+ virtual void EndElement();
+
+ void AddAnnotation(const ScMyAnnotation& aValue) { aMyAnnotation = aValue; bHasAnnotation = sal_True; }
+};
+
+#endif
diff --git a/sc/source/filter/xml/xmlcoli.cxx b/sc/source/filter/xml/xmlcoli.cxx
new file mode 100644
index 000000000000..45c57f20167e
--- /dev/null
+++ b/sc/source/filter/xml/xmlcoli.cxx
@@ -0,0 +1,239 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlcoli.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmlcoli.hxx"
+#include "xmlimprt.hxx"
+#include "global.hxx"
+#include "xmlstyli.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/nmspmap.hxx>
+#ifndef _XMLOFF_FAMILIES_HXX_
+#include <xmloff/families.hxx>
+#endif
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEETDOCUMENT_HPP_
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEET_HPP_
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XCOLUMNROWRANGE_HPP_
+#include <com/sun/star/table/XColumnRowRange.hpp>
+#endif
+
+#define SC_ISVISIBLE "IsVisible"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLTableColContext::ScXMLTableColContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ sVisibility(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_visible)))
+{
+ nColCount = 1;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetTableColAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_TABLE_COL_ATTR_REPEATED:
+ {
+ nColCount = sValue.toInt32();
+ }
+ break;
+ case XML_TOK_TABLE_COL_ATTR_STYLE_NAME:
+ {
+ sStyleName = sValue;
+ }
+ break;
+ case XML_TOK_TABLE_COL_ATTR_VISIBILITY:
+ {
+ sVisibility = sValue;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLTableColContext::~ScXMLTableColContext()
+{
+}
+
+SvXMLImportContext *ScXMLTableColContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+/*
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetTableRowElemTokenMap();
+ sal_Bool bHeader = sal_False;
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_TABLE_ROW_CELL:
+// if( IsInsertCellPossible() )
+ pContext = new ScXMLTableRowCellContext( GetScImport(), nPrefix,
+ rLName, xAttrList//,
+ //this
+ );
+ break;
+ case XML_TOK_TABLE_ROW_COVERED_CELL:
+// if( IsInsertCellPossible() )
+ pContext = new ScXMLTableRowCellContext( GetScImport(), nPrefix,
+ rLName, xAttrList//,
+ //this
+ );
+ break;
+ }*/
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLTableColContext::EndElement()
+{
+ ScXMLImport& rXMLImport = GetScImport();
+ sal_Int16 nSheet = rXMLImport.GetTables().GetCurrentSheet();
+ sal_Int32 nCurrentColumn = rXMLImport.GetTables().GetCurrentColumn();
+ uno::Reference <sheet::XSpreadsheetDocument> xSheetsDocument (rXMLImport.GetModel(), uno::UNO_QUERY);
+ if(xSheetsDocument.is())
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSheetsDocument->getSheets();
+ if (xSheets.is())
+ {
+ uno::Reference<container::XIndexAccess> xIndex(xSheets, uno::UNO_QUERY);
+ if (xIndex.is())
+ {
+ uno::Any aSheet = xIndex->getByIndex(nSheet);
+ uno::Reference<sheet::XSpreadsheet> xSheet;
+ if(aSheet >>= xSheet)
+ {
+ uno::Reference<table::XColumnRowRange> xColumnRowRange (xSheet, uno::UNO_QUERY);
+ if (xColumnRowRange.is())
+ {
+ uno::Reference<table::XTableColumns> xTableColumns = xColumnRowRange->getColumns();
+ if (xTableColumns.is())
+ {
+ for (sal_Int32 i = 0; i < nColCount; i++)
+ {
+ uno::Any aColumn = xTableColumns->getByIndex(i + nCurrentColumn);
+ uno::Reference<table::XCellRange> xTableColumn;
+ if (aColumn >>= xTableColumn)
+ {
+ uno::Reference <beans::XPropertySet> xColumnProperties(xTableColumn, uno::UNO_QUERY);
+ if (xColumnProperties.is())
+ {
+ XMLTableStylesContext *pStyles = (XMLTableStylesContext *)&rXMLImport.GetAutoStyles();
+ XMLTableStyleContext* pStyle = (XMLTableStyleContext *)pStyles->FindStyleChildContext(
+ XML_STYLE_FAMILY_TABLE_COLUMN, sStyleName, sal_True);
+ if (pStyle)
+ {
+ pStyle->FillPropertySet(xColumnProperties);
+ }
+ uno::Any aAny = xColumnProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ISVISIBLE)));
+ if (sVisibility.compareToAscii(sXML_visible) == 0)
+ {
+ sal_Bool bValue = sal_True;
+ aAny <<= bValue;
+ }
+ else
+ {
+ sal_Bool bValue = sal_False;
+ aAny <<= bValue;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ GetScImport().GetTables().AddColCount(nColCount);
+}
diff --git a/sc/source/filter/xml/xmlcoli.hxx b/sc/source/filter/xml/xmlcoli.hxx
new file mode 100644
index 000000000000..acc9b7ac2208
--- /dev/null
+++ b/sc/source/filter/xml/xmlcoli.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlcoli.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLCOLI_HXX
+#define SC_XMLCOLI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+
+class ScXMLImport;
+
+class ScXMLTableColContext : public SvXMLImportContext
+{
+ sal_Int32 nColCount;
+ rtl::OUString sStyleName;
+ rtl::OUString sVisibility;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLTableColContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual ~ScXMLTableColContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+#endif
diff --git a/sc/source/filter/xml/xmlconti.cxx b/sc/source/filter/xml/xmlconti.cxx
new file mode 100644
index 000000000000..6a22ab1977d9
--- /dev/null
+++ b/sc/source/filter/xml/xmlconti.cxx
@@ -0,0 +1,139 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlconti.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmlconti.hxx"
+#include "xmlimprt.hxx"
+#include "global.hxx"
+#include "document.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/xmlkywd.hxx>
+#include <xmloff/nmspmap.hxx>
+
+//------------------------------------------------------------------
+
+ScXMLContentContext::ScXMLContentContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLTableRowCellTokens aTempTableRowCellToken,
+ ScXMLTableRowCellContext* pTempScXMLTableRowCellContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pScXMLTableRowCellContext = pTempScXMLTableRowCellContext;
+ aTableRowCellToken = aTempTableRowCellToken;
+}
+
+ScXMLContentContext::~ScXMLContentContext()
+{
+}
+
+SvXMLImportContext *ScXMLContentContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+// const SvXMLTokenMap& rTokenMap = GetScImport().GetTableRowElemTokenMap();
+// BOOL bHeader = FALSE;
+// switch( rTokenMap.Get( nPrefix, rLName ) )
+// {
+// case XML_TOK_TABLE_ROW_CELL_P:
+// if( IsInsertTextPossible() )
+// pContext = new ScXMLContentContext( GetScImport(), nPrefix,
+// rLName, xAttrList//,
+// //this
+// );
+// break;
+// }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLContentContext::Characters( const ::rtl::OUString& rChars )
+{
+ sOUText += rChars;
+}
+
+void ScXMLContentContext::EndElement()
+{
+ switch (aTableRowCellToken)
+ {
+ case XML_TOK_TABLE_ROW_CELL_P :
+ {
+ pScXMLTableRowCellContext->SetString(sOUText);
+ break;
+ }
+ }
+}
diff --git a/sc/source/filter/xml/xmlconti.hxx b/sc/source/filter/xml/xmlconti.hxx
new file mode 100644
index 000000000000..1fe1a5de0164
--- /dev/null
+++ b/sc/source/filter/xml/xmlconti.hxx
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlconti.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLCONTI_HXX
+#define SC_XMLCONTI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+
+#include "xmlimprt.hxx"
+#include "xmlcelli.hxx"
+
+class ScXMLImport;
+
+class ScXMLContentContext : public SvXMLImportContext
+{
+ ScXMLTableRowCellContext* pScXMLTableRowCellContext;
+
+ ScXMLTableRowCellTokens aTableRowCellToken;
+ ::rtl::OUString sOUText;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLContentContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLTableRowCellTokens aTempTableRowCellToken,
+ ScXMLTableRowCellContext* aTempScXMLTableRowCellContext);
+
+ virtual ~ScXMLContentContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void Characters( const ::rtl::OUString& rChars );
+
+ virtual void EndElement();
+};
+
+#endif
diff --git a/sc/source/filter/xml/xmldpimp.cxx b/sc/source/filter/xml/xmldpimp.cxx
new file mode 100644
index 000000000000..c32be99b2613
--- /dev/null
+++ b/sc/source/filter/xml/xmldpimp.cxx
@@ -0,0 +1,1123 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmldpimp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmldpimp.hxx"
+#include "xmlimprt.hxx"
+#include "xmlfilti.hxx"
+#include "xmlsorti.hxx"
+#include "document.hxx"
+#include "docuno.hxx"
+#include "dpshttab.hxx"
+#include "dpsdbtab.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlkywd.hxx>
+
+#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLDataPilotTablesContext::ScXMLDataPilotTablesContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ // has no Attributes
+}
+
+ScXMLDataPilotTablesContext::~ScXMLDataPilotTablesContext()
+{
+}
+
+SvXMLImportContext *ScXMLDataPilotTablesContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotTablesElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_DATA_PILOT_TABLE :
+ {
+ pContext = new ScXMLDataPilotTableContext( GetScImport(), nPrefix,
+ rLName, xAttrList);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDataPilotTablesContext::EndElement()
+{
+}
+
+ScXMLDataPilotTableContext::ScXMLDataPilotTableContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ sDataPilotTableName(),
+ sApplicationData(),
+ sGrandTotal(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_both))),
+ bIsNative(sal_True),
+ bIgnoreEmptyRows(sal_False),
+ bIdentifyCategories(sal_False),
+ pDoc(NULL),
+ pDPObject(NULL),
+ pDPSave(NULL)
+{
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotTableAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_DATA_PILOT_TABLE_ATTR_NAME :
+ {
+ sDataPilotTableName = sValue;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_TABLE_ATTR_APPLICATION_DATA :
+ {
+ sApplicationData = sValue;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_TABLE_ATTR_GRAND_TOTAL :
+ {
+ sGrandTotal = sValue;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_TABLE_ATTR_IGNORE_EMPTY_ROWS :
+ {
+ if (sValue.compareToAscii(sXML_true) == 0)
+ bIgnoreEmptyRows = sal_True;
+ }
+ case XML_TOK_DATA_PILOT_TABLE_ATTR_IDENTIFY_CATEGORIES :
+ {
+ if (sValue.compareToAscii(sXML_true) == 0)
+ bIdentifyCategories = sal_True;
+ }
+ case XML_TOK_DATA_PILOT_TABLE_ATTR_TARGET_RANGE_ADDRESS :
+ {
+ ScXMLImport& rXMLImport = GetScImport();
+ ScModelObj* pDocObj = ScModelObj::getImplementation( rXMLImport.GetModel() );
+ if ( pDocObj )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ ScAddress aStartCellAddress;
+ ScAddress aEndCellAddress;
+ sal_Int16 i = 0;
+ while ((sValue[i] != ':') && (i < sValue.getLength()))
+ i++;
+ rtl::OUString sStartCellAddress = sValue.copy(0, i);
+ rtl::OUString sEndCellAddress = sValue.copy(i + 1);
+ aStartCellAddress.Parse(sStartCellAddress, pDoc);
+ aEndCellAddress.Parse(sEndCellAddress, pDoc);
+ aTargetRangeAddress = ScRange(aStartCellAddress, aEndCellAddress);
+ }
+ }
+ }
+ }
+ ScModelObj* pDocObj = ScModelObj::getImplementation( GetScImport().GetModel() );
+ if ( pDocObj )
+ {
+ pDoc = pDocObj->GetDocument();
+ if (pDoc)
+ {
+ pDPObject = new ScDPObject(pDoc);
+ pDPSave = new ScDPSaveData();
+ }
+ }
+}
+
+ScXMLDataPilotTableContext::~ScXMLDataPilotTableContext()
+{
+}
+
+SvXMLImportContext *ScXMLDataPilotTableContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotTableElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL :
+ {
+ pContext = new ScXMLDPSourceSQLContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ nSourceType = SQL;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE :
+ {
+ pContext = new ScXMLDPSourceTableContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ nSourceType = TABLE;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY :
+ {
+ pContext = new ScXMLDPSourceQueryContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ nSourceType = QUERY;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE :
+ {
+ pContext = new ScXMLSourceServiceContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ nSourceType = SERVICE;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE :
+ {
+ pContext = new ScXMLSourceCellRangeContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ nSourceType = CELLRANGE;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_TABLE_ELEM_DATA_PILOT_FIELD :
+ pContext = new ScXMLDataPilotFieldContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDataPilotTableContext::EndElement()
+{
+ pDPObject->SetName(sDataPilotTableName);
+ pDPObject->SetTag(sApplicationData);
+ pDPObject->SetOutRange(aTargetRangeAddress);
+ switch (nSourceType)
+ {
+ case SQL :
+ {
+ ScImportSourceDesc aImportDesc;
+ aImportDesc.aDBName = sDatabaseName;
+ aImportDesc.aObject = sSourceObject;
+ aImportDesc.nType = sheet::DataImportMode_SQL;
+ aImportDesc.bNative = bIsNative;
+ pDPObject->SetImportDesc(aImportDesc);
+ }
+ break;
+ case TABLE :
+ {
+ ScImportSourceDesc aImportDesc;
+ aImportDesc.aDBName = sDatabaseName;
+ aImportDesc.aObject = sSourceObject;
+ aImportDesc.nType = sheet::DataImportMode_TABLE;
+ pDPObject->SetImportDesc(aImportDesc);
+ }
+ break;
+ case QUERY :
+ {
+ ScImportSourceDesc aImportDesc;
+ aImportDesc.aDBName = sDatabaseName;
+ aImportDesc.aObject = sSourceObject;
+ aImportDesc.nType = sheet::DataImportMode_QUERY;
+ pDPObject->SetImportDesc(aImportDesc);
+ }
+ break;
+ case SERVICE :
+ {
+ ScDPServiceDesc aServiceDesk(sServiceName, sServiceSourceObject, sServiceSourceName,
+ sServiceUsername, sServicePassword);
+ pDPObject->SetServiceData(aServiceDesk);
+ }
+ break;
+ case CELLRANGE :
+ {
+ ScSheetSourceDesc aSheetDesc;
+ aSheetDesc.aSourceRange = aSourceCellRangeAddress;
+ aSheetDesc.aQueryParam = aSourceQueryParam;
+ pDPObject->SetSheetDesc(aSheetDesc);
+ }
+ break;
+ }
+ if (sGrandTotal.compareToAscii(sXML_both) == 0)
+ {
+ pDPSave->SetRowGrand(sal_True);
+ pDPSave->SetColumnGrand(sal_True);
+ }
+ else if (sGrandTotal.compareToAscii(sXML_row) == 0)
+ {
+ pDPSave->SetRowGrand(sal_True);
+ pDPSave->SetColumnGrand(sal_False);
+ }
+ else if (sGrandTotal.compareToAscii(sXML_column) == 0)
+ {
+ pDPSave->SetRowGrand(sal_False);
+ pDPSave->SetColumnGrand(sal_True);
+ }
+ else
+ {
+ pDPSave->SetRowGrand(sal_False);
+ pDPSave->SetColumnGrand(sal_False);
+ }
+ pDPSave->SetIgnoreEmptyRows(bIgnoreEmptyRows);
+ pDPSave->SetRepeatIfEmpty(bIdentifyCategories);
+ pDPObject->SetSaveData(*pDPSave);
+ ScDPCollection* pDPCollection = pDoc->GetDPCollection();
+ pDPObject->SetAlive(sal_True);
+ pDPCollection->Insert(pDPObject);
+}
+
+ScXMLDPSourceSQLContext::ScXMLDPSourceSQLContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pTempDataPilotTable) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDataPilotTable = pTempDataPilotTable;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceSQLAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SOURCE_SQL_ATTR_DATABASE_NAME :
+ {
+ pDataPilotTable->SetDatabaseName(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_SQL_ATTR_SQL_STATEMENT :
+ {
+ pDataPilotTable->SetSourceObject(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_SQL_ATTR_PARSE_SQL_STATEMENT :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_true)))
+ pDataPilotTable->SetNative(sal_False);
+ else
+ pDataPilotTable->SetNative(sal_True);
+ }
+ break;
+ }
+ }
+}
+
+ScXMLDPSourceSQLContext::~ScXMLDPSourceSQLContext()
+{
+}
+
+SvXMLImportContext *ScXMLDPSourceSQLContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDPSourceSQLContext::EndElement()
+{
+}
+
+ScXMLDPSourceTableContext::ScXMLDPSourceTableContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pTempDataPilotTable) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDataPilotTable = pTempDataPilotTable;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceTableAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SOURCE_TABLE_ATTR_DATABASE_NAME :
+ {
+ pDataPilotTable->SetDatabaseName(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_TABLE_ATTR_TABLE_NAME :
+ {
+ pDataPilotTable->SetSourceObject(sValue);
+ }
+ break;
+ }
+ }
+}
+
+ScXMLDPSourceTableContext::~ScXMLDPSourceTableContext()
+{
+}
+
+SvXMLImportContext *ScXMLDPSourceTableContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDPSourceTableContext::EndElement()
+{
+}
+
+ScXMLDPSourceQueryContext::ScXMLDPSourceQueryContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pTempDataPilotTable) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDataPilotTable = pTempDataPilotTable;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceQueryAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SOURCE_QUERY_ATTR_DATABASE_NAME :
+ {
+ pDataPilotTable->SetDatabaseName(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_QUERY_ATTR_QUERY_NAME :
+ {
+ pDataPilotTable->SetSourceObject(sValue);
+ }
+ break;
+ }
+ }
+}
+
+ScXMLDPSourceQueryContext::~ScXMLDPSourceQueryContext()
+{
+}
+
+SvXMLImportContext *ScXMLDPSourceQueryContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDPSourceQueryContext::EndElement()
+{
+}
+
+ScXMLSourceServiceContext::ScXMLSourceServiceContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pTempDataPilotTable) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDataPilotTable = pTempDataPilotTable;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotTableSourceServiceAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SOURCE_SERVICE_ATTR_NAME :
+ {
+ pDataPilotTable->SetServiceName(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_SERVICE_ATTR_SOURCE_NAME :
+ {
+ pDataPilotTable->SetServiceSourceName(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_SERVICE_ATTR_OBJECT_NAME :
+ {
+ pDataPilotTable->SetServiceSourceObject(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_SERVICE_ATTR_USERNAME :
+ {
+ pDataPilotTable->SetServiceUsername(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_SERVICE_ATTR_PASSWORD :
+ {
+ pDataPilotTable->SetServicePassword(sValue);
+ }
+ break;
+ }
+ }
+}
+
+ScXMLSourceServiceContext::~ScXMLSourceServiceContext()
+{
+}
+
+SvXMLImportContext *ScXMLSourceServiceContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSourceServiceContext::EndElement()
+{
+}
+
+ScXMLSourceCellRangeContext::ScXMLSourceCellRangeContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pTempDataPilotTable) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDataPilotTable = pTempDataPilotTable;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotTableSourceCellRangeAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SOURCE_CELL_RANGE_ATTR_CELL_RANGE_ADDRESS :
+ {
+ ScXMLImport& rXMLImport = GetScImport();
+ ScModelObj* pDocObj = ScModelObj::getImplementation( rXMLImport.GetModel() );
+ if ( pDocObj )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ ScAddress aStartCellAddress;
+ ScAddress aEndCellAddress;
+ sal_Int16 i = 0;
+ while ((sValue[i] != ':') && (i < sValue.getLength()))
+ i++;
+ rtl::OUString sStartCellAddress = sValue.copy(0, i);
+ rtl::OUString sEndCellAddress = sValue.copy(i + 1);
+ aStartCellAddress.Parse(sStartCellAddress, pDoc);
+ aEndCellAddress.Parse(sEndCellAddress, pDoc);
+ ScRange aSourceRangeAddress(aStartCellAddress, aEndCellAddress);
+ pDataPilotTable->SetSourceCellRangeAddress(aSourceRangeAddress);
+ }
+ }
+ break;
+ }
+ }
+}
+
+ScXMLSourceCellRangeContext::~ScXMLSourceCellRangeContext()
+{
+}
+
+SvXMLImportContext *ScXMLSourceCellRangeContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotTableSourceCellRangeElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_SOURCE_CELL_RANGE_ELEM_FILTER :
+ pContext = new ScXMLDPFilterContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotTable);
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSourceCellRangeContext::EndElement()
+{
+}
+
+ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pTempDataPilotTable) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ pDim(NULL)
+{
+ pDataPilotTable = pTempDataPilotTable;
+ rtl::OUString sName;
+ sal_Bool bHasName(sal_False);
+ sal_Bool bDataLayout(sal_False);
+ nUsedHierarchy = 1;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotFieldAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_DATA_PILOT_FIELD_ATTR_SOURCE_FIELD_NAME :
+ {
+ sName = sValue;
+ bHasName = sal_True;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_FIELD_ATTR_IS_DATA_LAYOUT_FIELD :
+ {
+ if (sValue.compareToAscii(sXML_true) == 0)
+ bDataLayout = sal_True;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION :
+ {
+ nFunction = GetFunction(sValue);
+ }
+ break;
+ case XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION :
+ {
+ nOrientation = GetOrientation(sValue);
+ }
+ break;
+ case XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY :
+ {
+ nUsedHierarchy = sValue.toInt32();
+ }
+ break;
+ }
+ }
+ if (bHasName)
+ pDim = new ScDPSaveDimension(String(sName), bDataLayout);
+}
+
+ScXMLDataPilotFieldContext::~ScXMLDataPilotFieldContext()
+{
+}
+
+SvXMLImportContext *ScXMLDataPilotFieldContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotFieldElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LEVEL :
+ pContext = new ScXMLDataPilotLevelContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+sal_Int16 ScXMLDataPilotFieldContext::GetFunction(const rtl::OUString& sFunction)
+{
+ if (sFunction.compareToAscii("auto") == 0)
+ return sheet::GeneralFunction_AUTO;
+ else if (sFunction.compareToAscii("average") == 0)
+ return sheet::GeneralFunction_AVERAGE;
+ else if (sFunction.compareToAscii("count") == 0)
+ return sheet::GeneralFunction_COUNT;
+ else if (sFunction.compareToAscii("countnums") == 0)
+ return sheet::GeneralFunction_COUNTNUMS;
+ else if (sFunction.compareToAscii("max") == 0)
+ return sheet::GeneralFunction_MAX;
+ else if (sFunction.compareToAscii("min") == 0)
+ return sheet::GeneralFunction_MIN;
+ else if (sFunction.compareToAscii("none") == 0)
+ return sheet::GeneralFunction_NONE;
+ else if (sFunction.compareToAscii("product") == 0)
+ return sheet::GeneralFunction_PRODUCT;
+ else if (sFunction.compareToAscii("stdev") == 0)
+ return sheet::GeneralFunction_STDEV;
+ else if (sFunction.compareToAscii("stdevp") == 0)
+ return sheet::GeneralFunction_STDEVP;
+ else if (sFunction.compareToAscii("sum") == 0)
+ return sheet::GeneralFunction_SUM;
+ else if (sFunction.compareToAscii("var") == 0)
+ return sheet::GeneralFunction_VAR;
+ else if (sFunction.compareToAscii("varp") == 0)
+ return sheet::GeneralFunction_VARP;
+ else
+ return 0;
+}
+
+sal_Int16 ScXMLDataPilotFieldContext::GetOrientation(const rtl::OUString& sOrientation)
+{
+ if (sOrientation.compareToAscii(sXML_row) == 0)
+ return sheet::DataPilotFieldOrientation_ROW;
+ else if (sOrientation.compareToAscii(sXML_column) == 0)
+ return sheet::DataPilotFieldOrientation_COLUMN;
+ else if (sOrientation.compareToAscii(sXML_data) == 0)
+ return sheet::DataPilotFieldOrientation_DATA;
+ else if (sOrientation.compareToAscii(sXML_page) == 0)
+ return sheet::DataPilotFieldOrientation_PAGE;
+ else if (sOrientation.compareToAscii(sXML_hidden) == 0)
+ return sheet::DataPilotFieldOrientation_HIDDEN;
+ else
+ return 0;
+}
+
+void ScXMLDataPilotFieldContext::EndElement()
+{
+ if (pDim)
+ {
+ pDim->SetUsedHierarchy(nUsedHierarchy);
+ pDim->SetFunction(nFunction);
+ pDim->SetOrientation(nOrientation);
+ pDataPilotTable->AddDimension(pDim);
+ }
+}
+
+ScXMLDataPilotLevelContext::ScXMLDataPilotLevelContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotFieldContext* pTempDataPilotField) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDataPilotField = pTempDataPilotField;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotLevelAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_DATA_PILOT_LEVEL_ATTR_DISPLAY_EMPTY :
+ {
+ if (sValue.compareToAscii(sXML_true) == 0)
+ pDataPilotField->SetShowEmpty(sal_True);
+ else if (sValue.compareToAscii(sXML_false) == 0)
+ pDataPilotField->SetShowEmpty(sal_False);
+ }
+ break;
+ }
+ }
+}
+
+ScXMLDataPilotLevelContext::~ScXMLDataPilotLevelContext()
+{
+}
+
+SvXMLImportContext *ScXMLDataPilotLevelContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotLevelElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_SUBTOTALS :
+ pContext = new ScXMLDataPilotSubTotalsContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
+ break;
+ case XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_MEMBERS :
+ pContext = new ScXMLDataPilotMembersContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDataPilotLevelContext::EndElement()
+{
+}
+
+ScXMLDataPilotSubTotalsContext::ScXMLDataPilotSubTotalsContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotFieldContext* pTempDataPilotField) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ pFunctions(NULL),
+ nFunctionCount(0)
+{
+ pDataPilotField = pTempDataPilotField;
+
+ // has no attributes
+}
+
+ScXMLDataPilotSubTotalsContext::~ScXMLDataPilotSubTotalsContext()
+{
+}
+
+SvXMLImportContext *ScXMLDataPilotSubTotalsContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotSubTotalsElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_DATA_PILOT_SUBTOTALS_ELEM_DATA_PILOT_SUBTOTAL :
+ pContext = new ScXMLDataPilotSubTotalContext(GetScImport(), nPrefix, rLName, xAttrList, this);
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDataPilotSubTotalsContext::EndElement()
+{
+ pDataPilotField->SetSubTotals(pFunctions, nFunctionCount);
+}
+
+void ScXMLDataPilotSubTotalsContext::AddFunction(sal_Int16 nFunction)
+{
+ if (nFunctionCount)
+ {
+ nFunctionCount++;
+ sal_uInt16* pTemp = new sal_uInt16[nFunctionCount];
+ for (sal_Int16 i = 0; i < nFunctionCount - 1; i++)
+ pTemp[i] = pFunctions[i];
+ pTemp[nFunctionCount - 1] = nFunction;
+ delete[] pFunctions;
+ pFunctions = pTemp;
+ }
+ else
+ {
+ nFunctionCount = 1;
+ pFunctions = new sal_uInt16[nFunctionCount];
+ pFunctions[0] = nFunction;
+ }
+}
+
+ScXMLDataPilotSubTotalContext::ScXMLDataPilotSubTotalContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotSubTotalsContext* pTempDataPilotSubTotals) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDataPilotSubTotals = pTempDataPilotSubTotals;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotSubTotalAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_FUNCTION :
+ {
+ pDataPilotSubTotals->AddFunction(pDataPilotSubTotals->GetDataPilotField()->GetFunction(sValue));
+ }
+ break;
+ }
+ }
+}
+
+ScXMLDataPilotSubTotalContext::~ScXMLDataPilotSubTotalContext()
+{
+}
+
+SvXMLImportContext *ScXMLDataPilotSubTotalContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDataPilotSubTotalContext::EndElement()
+{
+}
+
+ScXMLDataPilotMembersContext::ScXMLDataPilotMembersContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotFieldContext* pTempDataPilotField) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDataPilotField = pTempDataPilotField;
+
+ // has no attributes
+}
+
+ScXMLDataPilotMembersContext::~ScXMLDataPilotMembersContext()
+{
+}
+
+SvXMLImportContext *ScXMLDataPilotMembersContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDataPilotMembersElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_DATA_PILOT_MEMBERS_ELEM_DATA_PILOT_MEMBER :
+ pContext = new ScXMLDataPilotMemberContext(GetScImport(), nPrefix, rLName, xAttrList, pDataPilotField);
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDataPilotMembersContext::EndElement()
+{
+}
+
+ScXMLDataPilotMemberContext::ScXMLDataPilotMemberContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotFieldContext* pTempDataPilotField) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDataPilotField = pTempDataPilotField;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotMemberAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_DATA_PILOT_MEMBER_ATTR_NAME :
+ {
+ sName = sValue;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY :
+ {
+ if (sValue.compareToAscii(sXML_true) == 0)
+ bDisplay = sal_True;
+ else if (sValue.compareToAscii(sXML_false) == 0)
+ bDisplay = sal_False;
+ }
+ break;
+ case XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_DETAILS :
+ {
+ if (sValue.compareToAscii(sXML_true) == 0)
+ bDisplayDetails = sal_True;
+ else if (sValue.compareToAscii(sXML_false) == 0)
+ bDisplayDetails = sal_False;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLDataPilotMemberContext::~ScXMLDataPilotMemberContext()
+{
+}
+
+SvXMLImportContext *ScXMLDataPilotMemberContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDataPilotMemberContext::EndElement()
+{
+ if (sName.getLength())
+ {
+ ScDPSaveMember* pMember = new ScDPSaveMember(String(sName));
+ pMember->SetIsVisible(bDisplay);
+ pMember->SetShowDetails(bDisplayDetails);
+ pDataPilotField->AddMember(pMember);
+ }
+}
+
+
diff --git a/sc/source/filter/xml/xmldpimp.hxx b/sc/source/filter/xml/xmldpimp.hxx
new file mode 100644
index 000000000000..da43fe9b1a8f
--- /dev/null
+++ b/sc/source/filter/xml/xmldpimp.hxx
@@ -0,0 +1,476 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmldpimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLDPIMP_HXX
+#define SC_XMLDPIMP_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+
+#include "global.hxx"
+#include "dpobject.hxx"
+#include "dpsave.hxx"
+
+class ScXMLImport;
+
+enum ScMySourceType
+{
+ SQL,
+ TABLE,
+ QUERY,
+ SERVICE,
+ CELLRANGE
+};
+
+class ScXMLDataPilotTablesContext : public SvXMLImportContext
+{
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDataPilotTablesContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
+
+ virtual ~ScXMLDataPilotTablesContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLDataPilotTableContext : public SvXMLImportContext
+{
+ ScDocument* pDoc;
+ ScDPObject* pDPObject;
+ ScDPSaveData* pDPSave;
+ rtl::OUString sDataPilotTableName;
+ rtl::OUString sApplicationData;
+ rtl::OUString sGrandTotal;
+ rtl::OUString sDatabaseName;
+ rtl::OUString sSourceObject;
+ rtl::OUString sServiceName;
+ rtl::OUString sServiceSourceName;
+ rtl::OUString sServiceSourceObject;
+ rtl::OUString sServiceUsername;
+ rtl::OUString sServicePassword;
+ ScRange aSourceCellRangeAddress;
+ ScRange aTargetRangeAddress;
+ ScRange aFilterSourceRange;
+ ScAddress aFilterOutputPosition;
+ ScQueryParam aSourceQueryParam;
+ ScMySourceType nSourceType;
+ sal_Bool bIsNative;
+ sal_Bool bIgnoreEmptyRows;
+ sal_Bool bIdentifyCategories;
+ sal_Bool bUseRegularExpression;
+ sal_Bool bIsCaseSensitive;
+ sal_Bool bSkipDuplicates;
+ sal_Bool bFilterCopyOutputData;
+
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDataPilotTableContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
+
+ virtual ~ScXMLDataPilotTableContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+
+ void SetDatabaseName(const rtl::OUString& sValue) { sDatabaseName = sValue; }
+ void SetSourceObject(const rtl::OUString& sValue) { sSourceObject = sValue; }
+ void SetNative(const sal_Bool bValue) { bIsNative = bValue; }
+ void SetServiceName(const rtl::OUString& sValue) { sServiceName = sValue; }
+ void SetServiceSourceName(const rtl::OUString& sValue) { sServiceSourceName = sValue; }
+ void SetServiceSourceObject(const rtl::OUString& sValue) { sServiceSourceObject = sValue; }
+ void SetServiceUsername(const rtl::OUString& sValue) { sServiceUsername = sValue; }
+ void SetServicePassword(const rtl::OUString& sValue) { sServicePassword = sValue; }
+ void SetSourceCellRangeAddress(const ScRange& aValue) { aSourceCellRangeAddress = aValue; }
+ void SetSourceQueryParam(const ScQueryParam& aValue) { aSourceQueryParam = aValue; }
+ void SetFilterUseRegularExpressions(const sal_Bool bValue) { bUseRegularExpression = bValue; }
+ void SetFilterOutputPosition(const ScAddress& aValue) { aFilterOutputPosition = aValue; }
+ void SetFilterCopyOutputData(const sal_Bool bValue) { bFilterCopyOutputData = bValue; }
+ void SetFilterSourceRange(const ScRange& aValue) { aFilterSourceRange = aValue; }
+ void SetFilterIsCaseSensitive(const sal_Bool bValue) { bIsCaseSensitive = bValue; }
+ void SetFilterSkipDuplicates(const sal_Bool bValue) { bSkipDuplicates = bValue; }
+ void AddDimension(ScDPSaveDimension* pDim) { if (pDPSave) pDPSave->AddDimension(pDim); }
+};
+
+class ScXMLDPSourceSQLContext : public SvXMLImportContext
+{
+ ScXMLDataPilotTableContext* pDataPilotTable;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDPSourceSQLContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pDataPilotTable);
+
+ virtual ~ScXMLDPSourceSQLContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLDPSourceTableContext : public SvXMLImportContext
+{
+ ScXMLDataPilotTableContext* pDataPilotTable;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDPSourceTableContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pDataPilotTable);
+
+ virtual ~ScXMLDPSourceTableContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLDPSourceQueryContext : public SvXMLImportContext
+{
+ ScXMLDataPilotTableContext* pDataPilotTable;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDPSourceQueryContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pDataPilotTable);
+
+ virtual ~ScXMLDPSourceQueryContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLSourceServiceContext : public SvXMLImportContext
+{
+ ScXMLDataPilotTableContext* pDataPilotTable;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSourceServiceContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pDataPilotTable);
+
+ virtual ~ScXMLSourceServiceContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLSourceCellRangeContext : public SvXMLImportContext
+{
+ ScXMLDataPilotTableContext* pDataPilotTable;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSourceCellRangeContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pDataPilotTable);
+
+ virtual ~ScXMLSourceCellRangeContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLDataPilotFieldContext : public SvXMLImportContext
+{
+ ScXMLDataPilotTableContext* pDataPilotTable;
+ ScDPSaveDimension* pDim;
+
+ sal_Int16 nOrientation;
+ sal_Int32 nUsedHierarchy;
+ sal_Int16 nFunction;
+ sal_Bool bShowEmpty;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDataPilotFieldContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pDataPilotTable);
+
+ virtual ~ScXMLDataPilotFieldContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ sal_Int16 GetFunction(const rtl::OUString& sFunction);
+ sal_Int16 GetOrientation(const rtl::OUString& sOrientation);
+
+ virtual void EndElement();
+
+ void SetShowEmpty(const sal_Bool bValue) { if (pDim) pDim->SetShowEmpty(bValue); }
+ void SetSubTotals(const sal_uInt16* pFunctions, const sal_Int16 nCount) { if(pDim) pDim->SetSubTotals(nCount, pFunctions); }
+ void AddMember(ScDPSaveMember* pMember) { if (pDim) pDim->AddMember(pMember); }
+};
+
+class ScXMLDataPilotLevelContext : public SvXMLImportContext
+{
+ ScXMLDataPilotFieldContext* pDataPilotField;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDataPilotLevelContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotFieldContext* pDataPilotField);
+
+ virtual ~ScXMLDataPilotLevelContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLDataPilotSubTotalsContext : public SvXMLImportContext
+{
+ ScXMLDataPilotFieldContext* pDataPilotField;
+
+ sal_Int16 nFunctionCount;
+ sal_uInt16* pFunctions;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDataPilotFieldContext* GetDataPilotField() { return pDataPilotField; }
+
+ ScXMLDataPilotSubTotalsContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotFieldContext* pDataPilotField);
+
+ virtual ~ScXMLDataPilotSubTotalsContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+ void AddFunction(sal_Int16 nFunction);
+};
+
+class ScXMLDataPilotSubTotalContext : public SvXMLImportContext
+{
+ ScXMLDataPilotSubTotalsContext* pDataPilotSubTotals;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDataPilotSubTotalContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotSubTotalsContext* pDataPilotSubTotals);
+
+ virtual ~ScXMLDataPilotSubTotalContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLDataPilotMembersContext : public SvXMLImportContext
+{
+ ScXMLDataPilotFieldContext* pDataPilotField;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDataPilotMembersContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotFieldContext* pDataPilotField);
+
+ virtual ~ScXMLDataPilotMembersContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLDataPilotMemberContext : public SvXMLImportContext
+{
+ ScXMLDataPilotFieldContext* pDataPilotField;
+
+ rtl::OUString sName;
+ sal_Bool bDisplay;
+ sal_Bool bDisplayDetails;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDataPilotMemberContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotFieldContext* pDataPilotField);
+
+ virtual ~ScXMLDataPilotMemberContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+#endif
+
diff --git a/sc/source/filter/xml/xmldrani.cxx b/sc/source/filter/xml/xmldrani.cxx
new file mode 100644
index 000000000000..13a28027deb4
--- /dev/null
+++ b/sc/source/filter/xml/xmldrani.cxx
@@ -0,0 +1,964 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmldrani.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmldrani.hxx"
+#include "xmlimprt.hxx"
+#include "xmlfilti.hxx"
+#include "xmlsorti.hxx"
+#include "document.hxx"
+#include "globstr.hrc"
+#include "docuno.hxx"
+#include "dbcolect.hxx"
+#include "datauno.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlkywd.hxx>
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/sheet/XDatabaseRanges.hpp>
+#include <com/sun/star/sheet/XDatabaseRange.hpp>
+#include <com/sun/star/table/CellRangeAddress.hpp>
+
+#define SC_DATABASERANGES "DatabaseRanges"
+#define SC_KEEPFORMATS "KeepFormats"
+#define SC_MOVECELLS "MoveCells"
+#define SC_STRIPDATA "StripData"
+#define SC_DATABASENAME "DatabaseName"
+#define SC_SOURCEOBJECT "SourceObject"
+#define SC_SOURCETYPE "SourceType"
+#define SC_NATIVE "Native"
+#define SC_CONTAINSHEADER "ContainsHeader"
+#define SC_ORIENTATION "Orientation"
+#define SC_COPYOUTPUTDATA "CopyOutputData"
+#define SC_ISCASESENSITIVE "IsCaseSensitive"
+#define SC_OUTPUTPOSITION "OutputPosition"
+#define SC_SKIPDUPLICATES "SkipDuplicates"
+#define SC_USEREGULAREXPRESSIONS "UseRegularExpressions"
+#define SC_BINDFORMATSTOCONTENT "BindFormatstoContent"
+#define SC_ENABLEUSERSORTLIST "EnableUserSortList"
+#define SC_USERSORTLISTINDEX "UserSortListIndex"
+#define SC_USERLIST "UserList"
+#define SC_INSERTPAGEBREAKS "InsertPageBreaks"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLDatabaseRangesContext::ScXMLDatabaseRangesContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ // has no attributes
+}
+
+ScXMLDatabaseRangesContext::~ScXMLDatabaseRangesContext()
+{
+}
+
+SvXMLImportContext *ScXMLDatabaseRangesContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDatabaseRangesElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_DATABASE_RANGE :
+ {
+ pContext = new ScXMLDatabaseRangeContext( GetScImport(), nPrefix,
+ rLName, xAttrList);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDatabaseRangesContext::EndElement()
+{
+}
+
+ScXMLDatabaseRangeContext::ScXMLDatabaseRangeContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ bIsSelection(sal_False),
+ bKeepFormats(sal_False),
+ bMoveCells(sal_False),
+ bStripData(sal_False),
+ bOrientation(sal_False),
+ bContainsHeader(sal_True),
+ bAutoFilter(sal_False),
+ bFilterConditionSourceRange(sal_False),
+ bSubTotalsSortGroups(sal_False),
+ bSubTotalsEnabledUserList(sal_False),
+ bSubTotalsAscending(sal_True),
+ bNative(sal_True),
+ aSubTotalColumns(),
+ aSortSequence()
+{
+ nSourceType = sheet::DataImportMode_NONE;
+ String sUnbenannt = ScGlobal::GetRscString(STR_DB_NONAME);
+ rtl::OUString sOUUnbenannt (sUnbenannt);
+ sDatabaseRangeName = sOUUnbenannt;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_DATABASE_RANGE_ATTR_NAME :
+ {
+ sDatabaseRangeName = sValue;
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_ATTR_IS_SELECTION :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_true)))
+ bIsSelection = sal_True;
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_STYLES :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_true)))
+ bKeepFormats = sal_True;
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_SIZE :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_false)))
+ bMoveCells = sal_True;
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_ATTR_HAS_PERSISTENT_DATA :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_false)))
+ bStripData = sal_True;
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_ATTR_ORIENTATION :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_column)))
+ bOrientation = sal_True;
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_ATTR_CONTAINS_HEADER :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_false)))
+ bContainsHeader = sal_False;
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_ATTR_DISPLAY_FILTER_BUTTONS :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_true)))
+ bAutoFilter = sal_True;
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_ATTR_TARGET_RANGE_ADDRESS :
+ {
+ sRangeAddress = sValue;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLDatabaseRangeContext::~ScXMLDatabaseRangeContext()
+{
+}
+
+SvXMLImportContext *ScXMLDatabaseRangeContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDatabaseRangeElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_DATABASE_RANGE_SOURCE_SQL :
+ {
+ pContext = new ScXMLSourceSQLContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_SOURCE_TABLE :
+ {
+ pContext = new ScXMLSourceTableContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_SOURCE_QUERY :
+ {
+ pContext = new ScXMLSourceQueryContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ case XML_TOK_FILTER :
+ {
+ pContext = new ScXMLFilterContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ case XML_TOK_SORT :
+ {
+ pContext = new ScXMLSortContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ case XML_TOK_DATABASE_RANGE_SUBTOTAL_RULES :
+ {
+ pContext = new ScXMLSubTotalRulesContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDatabaseRangeContext::EndElement()
+{
+ ScXMLImport& rXMLImport = GetScImport();
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rXMLImport.GetModel(), uno::UNO_QUERY );
+ ScModelObj* pDocObj = ScModelObj::getImplementation( xSpreadDoc );
+ if ( pDocObj && xSpreadDoc.is() )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ uno::Reference <beans::XPropertySet> xPropertySet (xSpreadDoc, uno::UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ uno::Any aDatabaseRanges = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DATABASERANGES)));
+ uno::Reference <sheet::XDatabaseRanges> xDatabaseRanges;
+ if (aDatabaseRanges >>= xDatabaseRanges)
+ {
+ ScAddress aStartCellAddress;
+ ScAddress aEndCellAddress;
+ sal_Int16 i = 0;
+ while ((sRangeAddress[i] != ':') && (i < sRangeAddress.getLength()))
+ i++;
+ rtl::OUString sStartCellAddress = sRangeAddress.copy(0, i);
+ rtl::OUString sEndCellAddress = sRangeAddress.copy(i + 1);
+ aStartCellAddress.Parse(sStartCellAddress, pDoc);
+ aEndCellAddress.Parse(sEndCellAddress, pDoc);
+ table::CellRangeAddress aCellRangeAddress;
+ aCellRangeAddress.StartColumn = aStartCellAddress.Col();
+ aCellRangeAddress.EndColumn = aEndCellAddress.Col();
+ aCellRangeAddress.StartRow = aStartCellAddress.Row();
+ aCellRangeAddress.EndRow = aEndCellAddress.Row();
+ aCellRangeAddress.Sheet = aStartCellAddress.Tab();
+ xDatabaseRanges->addNewByName(sDatabaseRangeName, aCellRangeAddress);
+ uno::Any aDatabaseRange = xDatabaseRanges->getByName(sDatabaseRangeName);
+ uno::Reference <sheet::XDatabaseRange> xDatabaseRange;
+ if (aDatabaseRange >>= xDatabaseRange)
+ {
+ uno::Reference <beans::XPropertySet> xDatabaseRangePropertySet (xDatabaseRange, uno::UNO_QUERY);
+ if (xDatabaseRangePropertySet.is())
+ {
+ uno::Any aTempValue;
+ aTempValue <<= bKeepFormats;
+ xDatabaseRangePropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_KEEPFORMATS)), aTempValue);
+ aTempValue <<= bMoveCells;
+ xDatabaseRangePropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_MOVECELLS)), aTempValue);
+ aTempValue <<= bStripData;
+ xDatabaseRangePropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_STRIPDATA)), aTempValue);
+ }
+ uno::Sequence <beans::PropertyValue> aImportDescriptor = xDatabaseRange->getImportDescriptor();
+ sal_Int32 nImportProperties = aImportDescriptor.getLength();
+ for (sal_Int16 i = 0; i < nImportProperties; i++)
+ {
+ if (aImportDescriptor[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DATABASENAME)))
+ {
+ uno::Any aDatabaseName;
+ aDatabaseName <<= sDatabaseName;
+ aImportDescriptor[i].Value = aDatabaseName;
+ }
+ else if (aImportDescriptor[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SOURCEOBJECT)))
+ {
+ uno::Any aSourceObject;
+ aSourceObject <<= sSourceObject;
+ aImportDescriptor[i].Value = aSourceObject;
+ }
+ else if (aImportDescriptor[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SOURCETYPE)))
+ {
+ uno::Any aSourceType;
+ aSourceType <<= nSourceType;
+ aImportDescriptor[i].Value = aSourceType;
+ }
+ else if (aImportDescriptor[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NATIVE)))
+ {
+ uno::Any aNative;
+ aNative <<= bNative;
+ aImportDescriptor[i].Value = aNative;
+ }
+ }
+ ScDBCollection* pDBCollection = pDoc->GetDBCollection();
+ sal_uInt16 nIndex;
+ pDBCollection->SearchName(sDatabaseRangeName, nIndex);
+ ScDBData* pDBData = (*pDBCollection)[nIndex];
+ pDBData->SetImportSelection(bIsSelection);
+ pDBData->SetAutoFilter(bAutoFilter);
+ ScImportParam aImportParam;
+ ScImportDescriptor::FillImportParam(aImportParam, aImportDescriptor);
+ pDBData->SetImportParam(aImportParam);
+ ScSortParam aSortParam;
+ ScSortDescriptor::FillSortParam(aSortParam, aSortSequence);
+ pDBData->SetSortParam(aSortParam);
+ uno::Reference <sheet::XSheetFilterDescriptor> xSheetFilterDescriptor = xDatabaseRange->getFilterDescriptor();
+ if (xSheetFilterDescriptor.is())
+ {
+ uno::Reference <beans::XPropertySet> xFilterPropertySet (xSheetFilterDescriptor, uno::UNO_QUERY);
+ if (xFilterPropertySet.is())
+ {
+ uno::Any aTemp;
+ aTemp <<= bOrientation;
+ xFilterPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ORIENTATION)), aTemp);
+ aTemp <<= bContainsHeader;
+ xFilterPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_CONTAINSHEADER)), aTemp);
+ aTemp <<= bFilterCopyOutputData;
+ xFilterPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_COPYOUTPUTDATA)), aTemp);
+ aTemp <<= bFilterIsCaseSensitive;
+ xFilterPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ISCASESENSITIVE)), aTemp);
+ aTemp <<= bFilterSkipDuplicates;
+ xFilterPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SKIPDUPLICATES)), aTemp);
+ aTemp <<= bFilterUseRegularExpressions;
+ xFilterPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_USEREGULAREXPRESSIONS)), aTemp);
+ aTemp <<= aFilterOutputPosition;
+ xFilterPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_OUTPUTPOSITION)), aTemp);
+ if (bFilterConditionSourceRange)
+ {
+ ScRange aAdvSource;
+ aAdvSource.aStart.SetCol(aFilterConditionSourceRangeAddress.StartColumn);
+ aAdvSource.aStart.SetRow(aFilterConditionSourceRangeAddress.StartColumn);
+ aAdvSource.aStart.SetTab(aFilterConditionSourceRangeAddress.Sheet);
+ aAdvSource.aEnd.SetCol(aFilterConditionSourceRangeAddress.EndColumn);
+ aAdvSource.aEnd.SetRow(aFilterConditionSourceRangeAddress.EndRow);
+ aAdvSource.aEnd.SetTab(aFilterConditionSourceRangeAddress.Sheet);
+ pDBData->SetAdvancedQuerySource(&aAdvSource);
+ }
+ }
+ xSheetFilterDescriptor->setFilterFields(aFilterFields);
+ }
+ uno::Reference <sheet::XSubTotalDescriptor> xSubTotalDescriptor = xDatabaseRange->getSubTotalDescriptor();
+ if (xSubTotalDescriptor.is())
+ {
+ uno::Reference <beans::XPropertySet> xSubTotalPropertySet (xSubTotalDescriptor, uno::UNO_QUERY);
+ if( xSubTotalPropertySet.is())
+ {
+ uno::Any aTemp;
+ aTemp <<= bSubTotalsBindFormatsToContent;
+ xSubTotalPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_BINDFORMATSTOCONTENT)), aTemp);
+ aTemp <<= bSubTotalsEnabledUserList;
+ xSubTotalPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ENABLEUSERSORTLIST)), aTemp);
+ aTemp <<= nSubTotalsUserListIndex;
+ xSubTotalPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_USERSORTLISTINDEX)), aTemp);
+ aTemp <<= bSubTotalsInsertPageBreaks;
+ xSubTotalPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_INSERTPAGEBREAKS)), aTemp);
+ aTemp <<= bSubTotalsIsCaseSensitive;
+ xSubTotalPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ISCASESENSITIVE)), aTemp);
+ }
+ ScSubTotalParam aSubTotalParam;
+ aSubTotalParam.bDoSort = bSubTotalsSortGroups;
+ aSubTotalParam.bAscending = bSubTotalsAscending;
+ aSubTotalParam.bUserDef = bSubTotalsEnabledUserList;
+ aSubTotalParam.nUserIndex = nSubTotalsUserListIndex;
+ pDBData->SetSubTotalParam(aSubTotalParam);
+ xSubTotalDescriptor->addNew(aSubTotalColumns, nSubTotalRuleGroupFieldNumber);
+ }
+ }
+ }
+ }
+ }
+}
+
+ScXMLSourceSQLContext::ScXMLSourceSQLContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDatabaseRangeContext = pTempDatabaseRangeContext;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceSQLAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SOURCE_SQL_ATTR_DATABASE_NAME :
+ {
+ pDatabaseRangeContext->SetDatabaseName(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_SQL_ATTR_SQL_STATEMENT :
+ {
+ pDatabaseRangeContext->SetSourceObject(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_SQL_ATTR_PARSE_SQL_STATEMENT :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_true)))
+ pDatabaseRangeContext->SetNative(sal_False);
+ else
+ pDatabaseRangeContext->SetNative(sal_True);
+ }
+ break;
+ }
+ }
+ pDatabaseRangeContext->SetSourceType(sheet::DataImportMode_SQL);
+}
+
+ScXMLSourceSQLContext::~ScXMLSourceSQLContext()
+{
+}
+
+SvXMLImportContext *ScXMLSourceSQLContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSourceSQLContext::EndElement()
+{
+}
+
+ScXMLSourceTableContext::ScXMLSourceTableContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDatabaseRangeContext = pTempDatabaseRangeContext;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceTableAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SOURCE_TABLE_ATTR_DATABASE_NAME :
+ {
+ pDatabaseRangeContext->SetDatabaseName(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_TABLE_ATTR_TABLE_NAME :
+ {
+ pDatabaseRangeContext->SetSourceObject(sValue);
+ }
+ break;
+ }
+ }
+ pDatabaseRangeContext->SetSourceType(sheet::DataImportMode_TABLE);
+}
+
+ScXMLSourceTableContext::~ScXMLSourceTableContext()
+{
+}
+
+SvXMLImportContext *ScXMLSourceTableContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSourceTableContext::EndElement()
+{
+}
+
+ScXMLSourceQueryContext::ScXMLSourceQueryContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDatabaseRangeContext = pTempDatabaseRangeContext;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSourceQueryAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SOURCE_QUERY_ATTR_DATABASE_NAME :
+ {
+ pDatabaseRangeContext->SetDatabaseName(sValue);
+ }
+ break;
+ case XML_TOK_SOURCE_QUERY_ATTR_QUERY_NAME :
+ {
+ pDatabaseRangeContext->SetSourceObject(sValue);
+ }
+ break;
+ }
+ }
+ pDatabaseRangeContext->SetSourceType(sheet::DataImportMode_QUERY);
+}
+
+ScXMLSourceQueryContext::~ScXMLSourceQueryContext()
+{
+}
+
+SvXMLImportContext *ScXMLSourceQueryContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSourceQueryContext::EndElement()
+{
+}
+
+ScXMLSubTotalRulesContext::ScXMLSubTotalRulesContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDatabaseRangeContext = pTempDatabaseRangeContext;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDatabaseRangeSubTotalRulesAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SUBTOTAL_RULES_ATTR_BIND_STYLES_TO_CONTENT :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_true)))
+ pDatabaseRangeContext->SetSubTotalsBindFormatsToContent(sal_True);
+ else
+ pDatabaseRangeContext->SetSubTotalsBindFormatsToContent(sal_False);
+ }
+ break;
+ case XML_TOK_SUBTOTAL_RULES_ATTR_CASE_SENSITIVE :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_true)))
+ pDatabaseRangeContext->SetSubTotalsIsCaseSensitive(sal_True);
+ else
+ pDatabaseRangeContext->SetSubTotalsIsCaseSensitive(sal_False);
+ }
+ break;
+ case XML_TOK_SUBTOTAL_RULES_ATTR_PAGE_BREAKS_ON_GROUP_CHANGE :
+ {
+ if (sValue == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_true)))
+ pDatabaseRangeContext->SetSubTotalsInsertPageBreaks(sal_True);
+ else
+ pDatabaseRangeContext->SetSubTotalsInsertPageBreaks(sal_False);
+ }
+ break;
+ }
+ }
+}
+
+ScXMLSubTotalRulesContext::~ScXMLSubTotalRulesContext()
+{
+}
+
+SvXMLImportContext *ScXMLSubTotalRulesContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDatabaseRangeSubTotalRulesElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_SUBTOTAL_RULES_SORT_GROUPS :
+ {
+ pContext = new ScXMLSortGroupsContext( GetScImport(), nPrefix,
+ rLName, xAttrList, pDatabaseRangeContext);
+ }
+ break;
+ case XML_TOK_SUBTOTAL_RULES_SUBTOTAL_RULE :
+ {
+ pContext = new ScXMLSubTotalRuleContext( GetScImport(), nPrefix,
+ rLName, xAttrList, pDatabaseRangeContext);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSubTotalRulesContext::EndElement()
+{
+}
+
+ScXMLSortGroupsContext::ScXMLSortGroupsContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDatabaseRangeContext = pTempDatabaseRangeContext;
+ pDatabaseRangeContext->SetSubTotalsSortGroups(sal_True);
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetSubTotalRulesSortGroupsAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SORT_GROUPS_ATTR_DATA_TYPE :
+ {
+ if (sValue.getLength() > 8)
+ {
+ rtl::OUString sTemp = sValue.copy(0, 8);
+ if (sTemp.compareToAscii(SC_USERLIST) == 0)
+ {
+ pDatabaseRangeContext->SetSubTotalsEnabledUserList(sal_True);
+ sTemp = sValue.copy(8);
+ pDatabaseRangeContext->SetSubTotalsUserListIndex(sTemp.toInt32());
+ }
+ else
+ {
+ //if (sValue.compareToAscii(sXML_automatic) == 0)
+ //aSortField.FieldType = util::SortFieldType_AUTOMATIC;
+ // is not supported by StarOffice
+ }
+ }
+ else
+ {
+ //if (sValue.compareToAscii(sXML_text) == 0)
+ //aSortField.FieldType = util::SortFieldType_ALPHANUMERIC;
+ // is not supported by StarOffice
+ //else if (sValue.compareToAscii(sXML_number) == 0)
+ //aSortField.FieldType = util::SortFieldType_NUMERIC;
+ // is not supported by StarOffice
+ }
+ }
+ break;
+ case XML_TOK_SORT_GROUPS_ATTR_ORDER :
+ {
+ if (sValue.compareToAscii(sXML_ascending) == 0)
+ pDatabaseRangeContext->SetSubTotalsAscending(sal_True);
+ else
+ pDatabaseRangeContext->SetSubTotalsAscending(sal_False);
+ }
+ break;
+ }
+ }
+}
+
+ScXMLSortGroupsContext::~ScXMLSortGroupsContext()
+{
+}
+
+SvXMLImportContext *ScXMLSortGroupsContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSortGroupsContext::EndElement()
+{
+}
+
+ScXMLSubTotalRuleContext::ScXMLSubTotalRuleContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDatabaseRangeContext = pTempDatabaseRangeContext;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetSubTotalRulesSubTotalRuleAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SUBTOTAL_RULE_ATTR_GROUP_BY_FIELD_NUMBER :
+ {
+ pDatabaseRangeContext->SetSubTotalRuleGroupFieldNumber(sValue.toInt32());
+ }
+ break;
+ }
+ }
+}
+
+ScXMLSubTotalRuleContext::~ScXMLSubTotalRuleContext()
+{
+}
+
+SvXMLImportContext *ScXMLSubTotalRuleContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetSubTotalRulesSubTotalRuleElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_SUBTOTAL_RULE_SUBTOTAL_FIELD :
+ {
+ pContext = new ScXMLSubTotalFieldContext( GetScImport(), nPrefix,
+ rLName, xAttrList, pDatabaseRangeContext);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSubTotalRuleContext::EndElement()
+{
+}
+
+ScXMLSubTotalFieldContext::ScXMLSubTotalFieldContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDatabaseRangeContext = pTempDatabaseRangeContext;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetSubTotalRuleSubTotalFieldAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SUBTOTAL_FIELD_ATTR_FIELD_NUMBER :
+ {
+ sFieldNumber = sValue;
+ }
+ break;
+ case XML_TOK_SUBTOTAL_FIELD_ATTR_FUNCTION :
+ {
+ sFunction = sValue;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLSubTotalFieldContext::~ScXMLSubTotalFieldContext()
+{
+}
+
+SvXMLImportContext *ScXMLSubTotalFieldContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSubTotalFieldContext::EndElement()
+{
+ sheet::SubTotalColumn aSubTotalColumn;
+ aSubTotalColumn.Column = sFieldNumber.toInt32();
+ if (sFunction.compareToAscii("auto") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_AUTO;
+ else if (sFunction.compareToAscii("average") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_AVERAGE;
+ else if (sFunction.compareToAscii("count") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_COUNT;
+ else if (sFunction.compareToAscii("countnums") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_COUNTNUMS;
+ else if (sFunction.compareToAscii("max") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_MAX;
+ else if (sFunction.compareToAscii("min") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_MIN;
+ else if (sFunction.compareToAscii("none") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_NONE;
+ else if (sFunction.compareToAscii("product") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_PRODUCT;
+ else if (sFunction.compareToAscii("stdev") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_STDEV;
+ else if (sFunction.compareToAscii("stdevp") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_STDEVP;
+ else if (sFunction.compareToAscii("sum") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_SUM;
+ else if (sFunction.compareToAscii("var") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_VAR;
+ else if (sFunction.compareToAscii("varp") == 0)
+ aSubTotalColumn.Function = sheet::GeneralFunction_VARP;
+ pDatabaseRangeContext->AddSubTotalColumn(aSubTotalColumn);
+}
+
diff --git a/sc/source/filter/xml/xmldrani.hxx b/sc/source/filter/xml/xmldrani.hxx
new file mode 100644
index 000000000000..e31dbf47cd43
--- /dev/null
+++ b/sc/source/filter/xml/xmldrani.hxx
@@ -0,0 +1,371 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmldrani.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLDRANI_HXX
+#define SC_XMLDRANI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_DATAIMPORTMODE_HPP_
+#include <com/sun/star/sheet/DataImportMode.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_SUBTOTALCOLUMN_HPP_
+#include <com/sun/star/sheet/SubTotalColumn.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUE_HPP_
+#include <com/sun/star/beans/PropertyValue.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_TABLEFILTERFIELD_HPP_
+#include <com/sun/star/sheet/TableFilterField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLADDRESS_HPP_
+#include <com/sun/star/table/CellAddress.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLRANGEADDRESS_HPP_
+#include <com/sun/star/table/CellRangeAddress.hpp>
+#endif
+
+class ScXMLImport;
+
+class ScXMLDatabaseRangesContext : public SvXMLImportContext
+{
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDatabaseRangesContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
+
+ virtual ~ScXMLDatabaseRangesContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLDatabaseRangeContext : public SvXMLImportContext
+{
+ rtl::OUString sDatabaseRangeName;
+ rtl::OUString sRangeAddress;
+ rtl::OUString sDatabaseName;
+ rtl::OUString sSourceObject;
+ com::sun::star::uno::Sequence <com::sun::star::sheet::SubTotalColumn> aSubTotalColumns;
+ com::sun::star::uno::Sequence <com::sun::star::beans::PropertyValue> aSortSequence;
+ com::sun::star::uno::Sequence <com::sun::star::sheet::TableFilterField> aFilterFields;
+ com::sun::star::table::CellAddress aFilterOutputPosition;
+ com::sun::star::table::CellRangeAddress aFilterConditionSourceRangeAddress;
+ com::sun::star::sheet::DataImportMode nSourceType;
+ sal_Bool bNative;
+ sal_Bool bIsSelection;
+ sal_Bool bKeepFormats;
+ sal_Bool bMoveCells;
+ sal_Bool bStripData;
+ sal_Bool bOrientation;
+ sal_Bool bContainsHeader;
+ sal_Bool bAutoFilter;
+ sal_Bool bSubTotalsBindFormatsToContent;
+ sal_Bool bSubTotalsIsCaseSensitive;
+ sal_Bool bSubTotalsInsertPageBreaks;
+ sal_Bool bSubTotalsSortGroups;
+ sal_Bool bSubTotalsEnabledUserList;
+ sal_Bool bSubTotalsAscending;
+ sal_Int16 nSubTotalsUserListIndex;
+ sal_Int16 nSubTotalRuleGroupFieldNumber;
+ sal_Bool bFilterCopyOutputData;
+ sal_Bool bFilterIsCaseSensitive;
+ sal_Bool bFilterSkipDuplicates;
+ sal_Bool bFilterUseRegularExpressions;
+ sal_Bool bFilterConditionSourceRange;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDatabaseRangeContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
+
+ virtual ~ScXMLDatabaseRangeContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+
+ void SetDatabaseName(const rtl::OUString sTempDatabaseName) { sDatabaseName = sTempDatabaseName; }
+ void SetSourceObject(const rtl::OUString sTempSourceObject) { sSourceObject = sTempSourceObject; }
+ void SetSourceType(const com::sun::star::sheet::DataImportMode nTempSourceType) { nSourceType = nTempSourceType; }
+ void SetNative(const sal_Bool bTempNative) { bNative = bTempNative; }
+ void SetSubTotalsBindFormatsToContent(const sal_Bool bTemp ) { bSubTotalsBindFormatsToContent = bTemp; }
+ void SetSubTotalsIsCaseSensitive(const sal_Bool bTemp) { bSubTotalsIsCaseSensitive = bTemp; }
+ void SetSubTotalsInsertPageBreaks(const sal_Bool bTemp) { bSubTotalsInsertPageBreaks = bTemp; }
+ void SetSubTotalsEnabledUserList(const sal_Bool bTemp) { bSubTotalsEnabledUserList = bTemp; }
+ void SetSubTotalsUserListIndex(const sal_Int16 nTemp) { nSubTotalsUserListIndex = nTemp; }
+ void SetSubTotalsAscending(const sal_Bool bTemp) { bSubTotalsAscending = bTemp; }
+ void SetSubTotalsSortGroups(const sal_Bool bTemp) { bSubTotalsSortGroups = bTemp; }
+ void SetSubTotalRuleGroupFieldNumber(const sal_Int16 nTemp) { nSubTotalRuleGroupFieldNumber = nTemp; }
+ void AddSubTotalColumn(const com::sun::star::sheet::SubTotalColumn aSubTotalColumn)
+ { aSubTotalColumns.realloc(aSubTotalColumns.getLength() + 1); aSubTotalColumns[aSubTotalColumns.getLength() - 1] = aSubTotalColumn; }
+ void SetSortSequence(const com::sun::star::uno::Sequence <com::sun::star::beans::PropertyValue>& aTempSortSequence) { aSortSequence = aTempSortSequence; }
+ void SetFilterCopyOutputData(const sal_Bool bTemp) { bFilterCopyOutputData = bTemp; }
+ void SetFilterIsCaseSensitive(const sal_Bool bTemp) { bFilterIsCaseSensitive = bTemp; }
+ void SetFilterSkipDuplicates(const sal_Bool bTemp) { bFilterSkipDuplicates = bTemp; }
+ void SetFilterUseRegularExpressions(const sal_Bool bTemp) { bFilterUseRegularExpressions = bTemp; }
+ void SetFilterFields(const com::sun::star::uno::Sequence <com::sun::star::sheet::TableFilterField>& aTemp) { aFilterFields = aTemp; }
+ void SetFilterOutputPosition(const com::sun::star::table::CellAddress& aTemp) { aFilterOutputPosition = aTemp; }
+ void SetFilterConditionSourceRangeAddress(const com::sun::star::table::CellRangeAddress& aTemp) { aFilterConditionSourceRangeAddress = aTemp;
+ bFilterConditionSourceRange = sal_True; }
+};
+
+class ScXMLSourceSQLContext : public SvXMLImportContext
+{
+ ScXMLDatabaseRangeContext* pDatabaseRangeContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSourceSQLContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
+
+ virtual ~ScXMLSourceSQLContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLSourceTableContext : public SvXMLImportContext
+{
+ ScXMLDatabaseRangeContext* pDatabaseRangeContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSourceTableContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
+
+ virtual ~ScXMLSourceTableContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLSourceQueryContext : public SvXMLImportContext
+{
+ ScXMLDatabaseRangeContext* pDatabaseRangeContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSourceQueryContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
+
+ virtual ~ScXMLSourceQueryContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLSubTotalRulesContext : public SvXMLImportContext
+{
+ ScXMLDatabaseRangeContext* pDatabaseRangeContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSubTotalRulesContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
+
+ virtual ~ScXMLSubTotalRulesContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLSortGroupsContext : public SvXMLImportContext
+{
+ ScXMLDatabaseRangeContext* pDatabaseRangeContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSortGroupsContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
+
+ virtual ~ScXMLSortGroupsContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLSubTotalRuleContext : public SvXMLImportContext
+{
+ ScXMLDatabaseRangeContext* pDatabaseRangeContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSubTotalRuleContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
+
+ virtual ~ScXMLSubTotalRuleContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLSubTotalFieldContext : public SvXMLImportContext
+{
+ ScXMLDatabaseRangeContext* pDatabaseRangeContext;
+ rtl::OUString sFieldNumber;
+ rtl::OUString sFunction;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSubTotalFieldContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
+
+ virtual ~ScXMLSubTotalFieldContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+#endif
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
new file mode 100644
index 000000000000..a6fbab395204
--- /dev/null
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -0,0 +1,3825 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlexprt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlnmspe.hxx>
+#include <xmloff/xmlkywd.hxx>
+#include <xmloff/xmlmetae.hxx>
+#include <xmloff/xmlexppr.hxx>
+#include <xmloff/styleexp.hxx>
+#include <xmloff/families.hxx>
+#include <xmloff/xmluconv.hxx>
+#include <xmloff/numehelp.hxx>
+#ifndef _XMLOFF_XMLNUMFE_HXX
+#include <xmloff/xmlnumfe.hxx>
+#endif
+
+#include <tools/lang.hxx>
+#include <tools/solmath.hxx>
+#include <tools/date.hxx>
+#include <tools/intn.hxx>
+#include <svtools/zforlist.hxx>
+#include <sfx2/objsh.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <vector>
+
+#include <com/sun/star/document/XDocumentInfoSupplier.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/sheet/XSpreadsheets.hpp>
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#include <com/sun/star/sheet/XUsedAreaCursor.hpp>
+#include <com/sun/star/sheet/XCellRangeAddressable.hpp>
+#include <com/sun/star/sheet/XSheetCellRange.hpp>
+#include <com/sun/star/table/CellRangeAddress.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/table/CellContentType.hpp>
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <com/sun/star/util/NumberFormat.hpp>
+#include <com/sun/star/sheet/XNamedRanges.hpp>
+#include <com/sun/star/sheet/XNamedRange.hpp>
+#include <com/sun/star/sheet/XCellRangeReferrer.hpp>
+#include <com/sun/star/sheet/NamedRangeFlag.hpp>
+#include <com/sun/star/sheet/XDatabaseRanges.hpp>
+#include <com/sun/star/sheet/XDatabaseRange.hpp>
+#include <com/sun/star/sheet/XSheetFilterDescriptor.hpp>
+#include <com/sun/star/sheet/DataImportMode.hpp>
+#include <com/sun/star/util/SortField.hpp>
+#include <com/sun/star/sheet/XSubTotalField.hpp>
+#include <com/sun/star/style/XStyle.hpp>
+#include <com/sun/star/sheet/CellFlags.hpp>
+#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
+
+#include "cellsuno.hxx"
+#include "xmlexprt.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "scitems.hxx"
+#include "attrib.hxx"
+#include "docuno.hxx"
+#include "rangenam.hxx"
+#include "globstr.hrc"
+#include "dbcolect.hxx"
+#include "global.hxx"
+#include "dpobject.hxx"
+#include "dpsave.hxx"
+#include "dpshttab.hxx"
+#include "dpsdbtab.hxx"
+#include "dociter.hxx"
+#include "patattr.hxx"
+
+const sal_Int8 SC_MAXDIGITSCOUNT_TIME = 11;
+
+#define SC_NUMBERFORMAT "NumberFormat"
+#define SC_TYPE "Type"
+#define SC_CELLSTYLE "CellStyle"
+#define SC_NAMEDRANGES "NamedRanges"
+#define SC_DATABASERANGES "DatabaseRanges"
+#define SC_KEEPFORMATS "KeepFormats"
+#define SC_MOVECELLS "MoveCells"
+#define SC_STRIPDATA "StripData"
+#define SC_CONTAINSHEADER "ContainsHeader"
+#define SC_ORIENTATION "Orientation"
+#define SC_DATABASENAME "DatabaseName"
+#define SC_SOURCEOBJECT "SourceObject"
+#define SC_SOURCETYPE "SourceType"
+#define SC_NATIVE "Native"
+#define SC_BINDFORMATSTOCONTENT "BindFormatstoContent"
+#define SC_COPYOUTPUTDATA "CopyOutputData"
+#define SC_ISCASESENSITIVE "IsCaseSensitive"
+#define SC_ISUSERLISTENABLED "IsUserListEnabled"
+#define SC_OUTPUTPOSITION "OutputPosition"
+#define SC_USERLISTINDEX "UserListIndex"
+#define SC_SORTFIELDS "SortFields"
+#define SC_USERLIST "UserList"
+#define SC_INSERTPAGEBREAKS "InsertPageBreaks"
+#define SC_SORTASCENDING "SortAscending"
+#define SC_ENABLEUSERSORTLIST "EnableUserSortList"
+#define SC_USERSORTLISTINDEX "UserSortListIndex"
+#define SC_SKIPDUPLICATES "SkipDuplicates"
+#define SC_USEREGULAREXPRESSIONS "UseRegularExpressions"
+#define SC_STANDARDFORMAT "StandardFormat"
+#define SC_ISVISIBLE "IsVisible"
+#define SC_OPTIMALWIDTH "OptimalWidth"
+#define SC_OPTIMALHEIGHT "OptimalHeight"
+#define SC_ISFILTERED "IsFiltered"
+
+#define SC_DEFAULT_TABLE_COUNT 3
+
+using namespace rtl;
+using namespace com::sun::star;
+
+ // -----------------------------------------------------------------------
+
+ScMyRowFormatRange::ScMyRowFormatRange()
+ : nStartColumn(0),
+ nRepeatColumns(0),
+ nRepeatRows(0),
+ nIndex(-1),
+ bIsAutoStyle(sal_True)
+{
+}
+
+ScRowFormatRanges::ScRowFormatRanges()
+ : aRowFormatRanges()
+{
+}
+
+ScRowFormatRanges::~ScRowFormatRanges()
+{
+}
+
+void ScRowFormatRanges::Clear()
+{
+ aRowFormatRanges.clear();
+}
+
+void ScRowFormatRanges::AddRange(const ScMyRowFormatRange& aFormatRange)
+{
+ aRowFormatRanges.push_back(aFormatRange);
+}
+
+sal_Bool ScRowFormatRanges::GetNext(ScMyRowFormatRange& aFormatRange)
+{
+ ScMyRowFormatRangesVec::iterator aItr = aRowFormatRanges.begin();
+ if (aItr != aRowFormatRanges.end())
+ {
+ aFormatRange = (*aItr);
+ aRowFormatRanges.erase(aItr);
+ return sal_True;
+ }
+ return sal_False;
+}
+
+sal_Int32 ScRowFormatRanges::GetMaxRows()
+{
+ ScMyRowFormatRangesVec::iterator aItr = aRowFormatRanges.begin();
+ sal_Int32 nMaxRows = MAXROW + 1;
+ if (aItr != aRowFormatRanges.end())
+ while (aItr != aRowFormatRanges.end())
+ {
+ if ((*aItr).nRepeatRows < nMaxRows)
+ nMaxRows = (*aItr).nRepeatRows;
+ aItr++;
+ }
+ else
+ nMaxRows = 0;
+ return nMaxRows;
+}
+
+sal_Bool LessRowFormatRange (const ScMyRowFormatRange& aRange1, const ScMyRowFormatRange& aRange2)
+{
+ return (aRange1.nStartColumn < aRange2.nStartColumn);
+}
+
+void ScRowFormatRanges::Sort()
+{
+ std::sort(aRowFormatRanges.begin(), aRowFormatRanges.end(), LessRowFormatRange);
+}
+
+// ============================================================================
+ScMyFormatRange::ScMyFormatRange()
+ : nStyleNameIndex(-1),
+ bIsAutoStyle(sal_True)
+{
+}
+
+ScFormatRangeStyles::ScFormatRangeStyles()
+ : aTables(),
+ aStyleNames(),
+ aAutoStyleNames()
+{
+}
+
+ScFormatRangeStyles::~ScFormatRangeStyles()
+{
+ ScMyOUStringVec::iterator i = aStyleNames.begin();
+ while (i != aStyleNames.end())
+ {
+ delete *i;
+ i++;
+ }
+ ScMyFormatRangeVectorVec::iterator j = aTables.begin();
+ while (j != aTables.end())
+ {
+ delete *j;
+ j++;
+ }
+}
+
+void ScFormatRangeStyles::AddNewTable(const sal_Int16 nTable)
+{
+ sal_Int16 nSize = aTables.size() - 1;
+ if (nTable > nSize)
+ for (sal_Int16 i = nSize; i < nTable; i++)
+ {
+ ScMyFormatRangeAddresses* aRangeAddresses = new ScMyFormatRangeAddresses;
+ aTables.push_back(aRangeAddresses);
+ }
+}
+
+sal_Int32 ScFormatRangeStyles::AddStyleName(rtl::OUString* pString, const sal_Bool bIsAutoStyle)
+{
+ if (bIsAutoStyle)
+ {
+ aAutoStyleNames.push_back(pString);
+ return aAutoStyleNames.size() - 1;
+ }
+ else
+ {
+ sal_Int32 nCount = aStyleNames.size();
+ sal_Bool bFound(sal_False);
+ sal_Int32 i = nCount - 1;
+ while ((i >= 0) && (!bFound))
+ {
+ if (aStyleNames.at(i)->equals(*pString))
+ bFound = sal_True;
+ else
+ i--;
+ }
+ if (bFound)
+ return i;
+ else
+ {
+ aStyleNames.push_back(pString);
+ return aStyleNames.size() - 1;
+ }
+ }
+}
+
+sal_Int32 ScFormatRangeStyles::GetIndexOfStyleName(const rtl::OUString& rString, const rtl::OUString& rPrefix, sal_Bool& bIsAutoStyle)
+{
+ sal_Int16 nPrefixLength = rPrefix.getLength();
+ rtl::OUString sTemp = rString.copy(nPrefixLength);
+ sal_Int32 nIndex = sTemp.toInt32();
+ if (aAutoStyleNames.at(nIndex - 1)->equals(rString))
+ {
+ bIsAutoStyle = sal_True;
+ return nIndex - 1;
+ }
+ else
+ {
+ sal_Int32 i = 0;
+ sal_Bool bFound(sal_False);
+ while (!bFound && i < aStyleNames.size())
+ {
+ if (aStyleNames.at(i)->equals(rString))
+ bFound = sal_True;
+ else
+ i++;
+ }
+ if (bFound)
+ {
+ bIsAutoStyle = sal_False;
+ return i;
+ }
+ else
+ {
+ i = 0;
+ while (!bFound && i < aAutoStyleNames.size())
+ {
+ if (aAutoStyleNames.at(i)->equals(rString))
+ bFound = sal_True;
+ else
+ i++;
+ }
+ if (bFound)
+ {
+ bIsAutoStyle = sal_True;
+ return i;
+ }
+ else
+ return -1;
+ }
+ }
+}
+
+sal_Int32 ScFormatRangeStyles::GetStyleNameIndex(const sal_Int16 nTable, const sal_Int32 nColumn, const sal_Int32 nRow, sal_Bool& bIsAutoStyle)
+{
+ ScMyFormatRangeAddresses* pFormatRanges = aTables[nTable];
+ ScMyFormatRangeAddresses::iterator aItr = pFormatRanges->begin();
+ while (aItr != pFormatRanges->end())
+ {
+ if (((*aItr).aRangeAddress.StartColumn <= nColumn) &&
+ ((*aItr).aRangeAddress.EndColumn >= nColumn) &&
+ ((*aItr).aRangeAddress.StartRow <= nRow) &&
+ ((*aItr).aRangeAddress.EndRow >= nRow))
+ {
+ bIsAutoStyle = (*aItr).bIsAutoStyle;
+ return (*aItr).nStyleNameIndex;
+ }
+ else
+ {
+ if ((*aItr).aRangeAddress.EndRow < nRow)
+ aItr = pFormatRanges->erase(aItr);
+ else
+ aItr++;
+ }
+ }
+ return -1;
+}
+void ScFormatRangeStyles::GetFormatRanges(const sal_Int32 nStartColumn, const sal_Int32 nEndColumn, const sal_Int32 nRow,
+ const sal_Int16 nTable, ScRowFormatRanges& aFormatRanges)
+{
+ sal_Int32 nTotalColumns = nEndColumn - nStartColumn + 1;
+ ScMyFormatRangeAddresses* pFormatRanges = aTables[nTable];
+ ScMyFormatRangeAddresses::iterator aItr = pFormatRanges->begin();
+ sal_Int32 nColumns = 0;
+ while (aItr != pFormatRanges->end() && nColumns < nTotalColumns)
+ {
+ if (((*aItr).aRangeAddress.StartRow <= nRow) &&
+ ((*aItr).aRangeAddress.EndRow >= nRow))
+ {
+ if ((((*aItr).aRangeAddress.StartColumn <= nStartColumn) &&
+ ((*aItr).aRangeAddress.EndColumn >= nStartColumn)) ||
+ (((*aItr).aRangeAddress.StartColumn <= nEndColumn) &&
+ ((*aItr).aRangeAddress.EndColumn >= nEndColumn)) ||
+ (((*aItr).aRangeAddress.StartColumn >= nStartColumn) &&
+ ((*aItr).aRangeAddress.EndColumn <= nEndColumn)))
+ {
+ ScMyRowFormatRange aRange;
+ aRange.nIndex = (*aItr).nStyleNameIndex;
+ aRange.bIsAutoStyle = (*aItr).bIsAutoStyle;
+ if (((*aItr).aRangeAddress.StartColumn < nStartColumn) &&
+ ((*aItr).aRangeAddress.EndColumn >= nStartColumn))
+ {
+ if ((*aItr).aRangeAddress.EndColumn >= nEndColumn)
+ aRange.nRepeatColumns = nTotalColumns;
+ else
+ aRange.nRepeatColumns = (*aItr).aRangeAddress.EndColumn - nStartColumn + 1;
+ aRange.nStartColumn = nStartColumn;
+ }
+ else if (((*aItr).aRangeAddress.StartColumn >= nStartColumn) &&
+ ((*aItr).aRangeAddress.EndColumn <= nEndColumn))
+ {
+ aRange.nRepeatColumns = (*aItr).aRangeAddress.EndColumn - (*aItr).aRangeAddress.StartColumn + 1;
+ aRange.nStartColumn = (*aItr).aRangeAddress.StartColumn;
+ }
+ else if (((*aItr).aRangeAddress.StartColumn >= nStartColumn) &&
+ ((*aItr).aRangeAddress.StartColumn <= nEndColumn) &&
+ ((*aItr).aRangeAddress.EndColumn > nEndColumn))
+ {
+ aRange.nRepeatColumns = nEndColumn - (*aItr).aRangeAddress.StartColumn + 1;
+ aRange.nStartColumn = (*aItr).aRangeAddress.StartColumn;
+ }
+ aRange.nRepeatRows = (*aItr).aRangeAddress.EndRow - nRow + 1;
+ aFormatRanges.AddRange(aRange);
+ nColumns += aRange.nRepeatColumns;
+ }
+ aItr++;
+ }
+ else
+ if((*aItr).aRangeAddress.EndRow < nRow)
+ aItr = pFormatRanges->erase(aItr);
+ else
+ aItr++;
+ }
+ aFormatRanges.Sort();
+}
+
+void ScFormatRangeStyles::AddRangeStyleName(const table::CellRangeAddress aCellRangeAddress, const sal_Int32 nStringIndex, const sal_Bool bIsAutoStyle)
+{
+ ScMyFormatRange aFormatRange;
+ aFormatRange.aRangeAddress = aCellRangeAddress;
+ aFormatRange.nStyleNameIndex = nStringIndex;
+ aFormatRange.bIsAutoStyle = bIsAutoStyle;
+ ScMyFormatRangeAddresses* pFormatRanges = aTables[aCellRangeAddress.Sheet];
+ pFormatRanges->push_back(aFormatRange);
+}
+
+rtl::OUString* ScFormatRangeStyles::GetStyleName(const sal_Int16 nTable, const sal_Int32 nColumn, const sal_Int32 nRow)
+{
+ sal_Bool bIsAutoStyle;
+ sal_Int32 nIndex = GetStyleNameIndex(nTable, nColumn, nRow, bIsAutoStyle);
+ if (bIsAutoStyle)
+ return aAutoStyleNames.at(nIndex);
+ else
+ return aStyleNames.at(nIndex);
+}
+
+rtl::OUString* ScFormatRangeStyles::GetStyleNameByIndex(const sal_Int32 nIndex, const sal_Bool bIsAutoStyle)
+{
+ if (bIsAutoStyle)
+ return aAutoStyleNames[nIndex];
+ else
+ return aStyleNames[nIndex];
+}
+
+sal_Bool LessFormatRange(const ScMyFormatRange& aRange1, const ScMyFormatRange& aRange2)
+{
+ if (aRange1.aRangeAddress.StartRow < aRange2.aRangeAddress.StartRow)
+ return sal_True;
+ else
+ if (aRange1.aRangeAddress.StartRow == aRange2.aRangeAddress.StartRow)
+ if (aRange1.aRangeAddress.StartColumn < aRange2.aRangeAddress.StartColumn)
+ return sal_True;
+ else
+ return sal_False;
+ else
+ return sal_False;
+}
+
+void ScFormatRangeStyles::Sort()
+{
+ sal_Int16 nTables = aTables.size();
+ for (sal_Int16 i = 0; i < nTables; i++)
+ {
+ ScMyFormatRangeAddresses* aFormatRanges = aTables[i];
+ sal_Int32 nFormatRangesCount = aFormatRanges->size();
+ if (nFormatRangesCount > 1)
+ std::sort(aFormatRanges->begin(), aFormatRanges->end(), LessFormatRange);
+ }
+}
+
+//===========================================================================
+
+ScColumnRowStyles::ScColumnRowStyles()
+ : aTables(),
+ aStyleNames()
+{
+}
+
+ScColumnRowStyles::~ScColumnRowStyles()
+{
+ ScMyOUStringVec::iterator i = aStyleNames.begin();
+ while (i != aStyleNames.end())
+ {
+ delete *i;
+ i++;
+ }
+}
+
+void ScColumnRowStyles::AddNewTable(const sal_Int16 nTable, const sal_Int32 nFields)
+{
+ sal_Int16 nSize = aTables.size() - 1;
+ if (nTable > nSize)
+ for (sal_Int32 i = nSize; i < nTable; i++)
+ {
+ ScMysalInt32Vec aFieldsVec(nFields + 1, -1);
+ aTables.push_back(aFieldsVec);
+ }
+}
+
+sal_Int32 ScColumnRowStyles::AddStyleName(rtl::OUString* pString)
+{
+ aStyleNames.push_back(pString);
+ return aStyleNames.size() - 1;
+}
+
+sal_Int32 ScColumnRowStyles::GetIndexOfStyleName(const rtl::OUString& rString, const rtl::OUString& rPrefix)
+{
+ sal_Int16 nPrefixLength = rPrefix.getLength();
+ rtl::OUString sTemp = rString.copy(nPrefixLength);
+ sal_Int32 nIndex = sTemp.toInt32();
+ if (aStyleNames.at(nIndex - 1)->equals(rString))
+ return nIndex - 1;
+ else
+ {
+ sal_Int32 i = 0;
+ sal_Bool bFound(sal_False);
+ while (!bFound && i < aStyleNames.size())
+ {
+ if (aStyleNames.at(i)->equals(rString))
+ bFound = sal_True;
+ else
+ i++;
+ }
+ if (bFound)
+ return i;
+ else
+ return -1;
+ }
+}
+
+sal_Int32 ScColumnRowStyles::GetStyleNameIndex(const sal_Int16 nTable, const sal_Int32 nField)
+{
+ if (nField < aTables[nTable].size())
+ return aTables[nTable].at(nField);
+ else
+ return aTables[nTable].at(aTables[nTable].size() - 1);
+}
+
+void ScColumnRowStyles::AddFieldStyleName(const sal_Int16 nTable, const sal_Int32 nField, const sal_Int32 nStringIndex)
+{
+ aTables[nTable].at(nField) = nStringIndex;
+}
+
+rtl::OUString* ScColumnRowStyles::GetStyleName(const sal_Int16 nTable, const sal_Int32 nField)
+{
+ return aStyleNames[aTables[nTable].at(nField)];
+}
+
+rtl::OUString* ScColumnRowStyles::GetStyleNameByIndex(const sal_Int32 nIndex)
+{
+ return aStyleNames[nIndex];
+}
+
+//==============================================================================
+
+ScShapesContainer::ScShapesContainer()
+ : aDrawPages()
+{
+}
+
+ScShapesContainer::~ScShapesContainer()
+{
+}
+
+void ScShapesContainer::AddNewTable()
+{
+ ScMyShapes aShapes;
+ aDrawPages.push_back(aShapes);
+}
+
+void ScShapesContainer::AddNewShape(const sal_Int16 nTable, const ScMyShape& aShape)
+{
+ aDrawPages.at(nTable).push_back(aShape);
+}
+
+sal_Bool ScShapesContainer::HasShape(const sal_Int16 nTable, const sal_Int32 nColumn, const sal_Int32 nRow)
+{
+ sal_Int32 nShapes = aDrawPages.at(nTable).size();
+ sal_Int32 i = 0;
+ sal_Bool bFound(sal_False);
+ sal_Bool bExist(sal_True);
+ while (i < nShapes && !bFound && bExist)
+ {
+ if (aDrawPages[nTable][i].aAddress.Col() == nColumn &&
+ aDrawPages[nTable][i].aAddress.Row() == nRow)
+ bFound = sal_True;
+ else
+ {
+ if (aDrawPages[nTable][i].aAddress.Col() <= nColumn &&
+ aDrawPages[nTable][i].aAddress.Row() == nRow)
+ i++;
+ else
+ bExist = sal_False;
+ }
+ }
+ return bFound;
+}
+
+sal_Bool ScShapesContainer::GetNextShape(const sal_Int16 nTable, ScMyShape& aShape)
+{
+ ScMyShapes::iterator aItr = aDrawPages.at(nTable).begin();
+ if (aItr != aDrawPages[nTable].end())
+ {
+ aShape = *aItr;
+ aDrawPages[nTable].erase(aItr);
+ return sal_True;
+ }
+ return sal_False;
+}
+
+
+sal_Bool LessShape(const ScMyShape& aShape1, const ScMyShape& aShape2)
+{
+ if (aShape1.aAddress.Row() < aShape2.aAddress.Row())
+ return sal_True;
+ else
+ if (aShape1.aAddress.Row() == aShape2.aAddress.Row())
+ if (aShape1.aAddress.Col() < aShape1.aAddress.Col())
+ return sal_True;
+ else
+ return sal_False;
+ else
+ return sal_False;
+}
+
+void ScShapesContainer::Sort()
+{
+ sal_Int16 nTables = aDrawPages.size();
+ for (sal_Int16 i = 0; i < nTables; i++)
+ {
+ ScMyShapes aShapes = aDrawPages[i];
+ sal_Int32 nShapesCount = aShapes.size();
+ if (nShapesCount > 1)
+ std::sort(aShapes.begin(), aShapes.end(), LessShape);
+ }
+}
+
+//==============================================================================
+
+sal_Bool LessMyRange(const ScMyRange& aRange1, const ScMyRange& aRange2)
+{
+ if ((aRange1.aCellRange.StartColumn < aRange2.aCellRange.StartColumn) && (aRange1.aCellRange.StartRow == aRange2.aCellRange.StartRow))
+ return sal_True;
+ else
+ if (aRange1.aCellRange.StartRow != aRange2.aCellRange.StartRow)
+ if (aRange1.aCellRange.StartRow < aRange2.aCellRange.StartRow)
+ return sal_True;
+ else
+ return sal_False;
+ else
+ return sal_False;
+}
+
+ScMyMergedCells::ScMyMergedCells()
+ : aTables()
+{
+}
+
+ScMyMergedCells::~ScMyMergedCells()
+{
+}
+
+void ScMyMergedCells::AddNewTable()
+{
+ ScMyMergedRanges aMergedRanges;
+ aTables.push_back(aMergedRanges);
+}
+
+void ScMyMergedCells::AddRange(const sal_Int16 nTable, const com::sun::star::table::CellRangeAddress aMergedRange)
+{
+ sal_Int32 nRows = aMergedRange.EndRow - aMergedRange.StartRow;
+ sal_Int32 nFirstRow = aMergedRange.StartRow;
+ ScMyRange aRange;
+ aRange.bIsFirst = sal_True;
+ aRange.aCellRange = aMergedRange;
+ aRange.aCellRange.EndRow = nFirstRow;
+ aRange.nRows = nRows + 1;
+ aTables.at(nTable).push_back(aRange);
+ sal_Int32 i = 1;
+ while (i <= nRows)
+ {
+ aRange.bIsFirst = sal_False;
+ aRange.nRows = 0;
+ aRange.aCellRange = aMergedRange;
+ aRange.aCellRange.StartRow = nFirstRow + i;
+ aRange.aCellRange.EndRow = nFirstRow + i;
+ aTables[nTable].push_back(aRange);
+ i++;
+ }
+}
+
+sal_Bool ScMyMergedCells::GetNextMergedRange(const sal_Int16 nTable, ScMyRange& aMyRange)
+{
+ ScMyMergedRanges::iterator aItr = aTables.at(nTable).begin();
+ if (aItr != aTables[nTable].end())
+ {
+ aMyRange = (*aItr);
+ aTables[nTable].erase(aItr);
+ return sal_True;
+ }
+ return sal_False;
+}
+
+void ScMyMergedCells::SortAndRemoveDoublets()
+{
+ ScMyMergedRangesVec::iterator aItr = aTables.begin();
+ while (aItr != aTables.end())
+ {
+ std::sort((*aItr).begin(), (*aItr).end(), LessMyRange);
+ ScMyMergedRanges::iterator aItr2_old = (*aItr).begin();
+ ScMyMergedRanges::iterator aItr2 = aItr2_old;
+ while(aItr2 != (*aItr).end())
+ {
+ if (aItr2 != aItr2_old)
+ {
+ if (((*aItr2).aCellRange.StartColumn == (*aItr2_old).aCellRange.StartColumn) &&
+ ((*aItr2).aCellRange.StartRow == (*aItr2_old).aCellRange.StartRow))
+ aItr2 = (*aItr).erase(aItr2);
+ else
+ {
+ aItr2_old = aItr2;
+ aItr2++;
+ }
+ }
+ else
+ aItr2++;
+ }
+ aItr++;
+ }
+}
+
+//==============================================================================
+
+sal_Bool LessRange(const table::CellRangeAddress& aRange1, const table::CellRangeAddress& aRange2)
+{
+ if ((aRange1.StartColumn < aRange2.StartColumn) && (aRange1.StartRow == aRange2.StartRow))
+ return sal_True;
+ else
+ if (aRange1.StartRow != aRange2.StartRow)
+ if (aRange1.StartRow < aRange2.StartRow)
+ return sal_True;
+ else
+ return sal_False;
+ else
+ return sal_False;
+}
+
+ScMyEmptyDatabaseRanges::ScMyEmptyDatabaseRanges(const sal_Int16 nTables)
+ : aTables(nTables)
+{
+}
+
+ScMyEmptyDatabaseRanges::~ScMyEmptyDatabaseRanges()
+{
+}
+
+void ScMyEmptyDatabaseRanges::AddNewEmptyDatabaseRange(const com::sun::star::table::CellRangeAddress& aCellRange)
+{
+ sal_Int16 nTable = aCellRange.Sheet;
+ ScMyEmptyDatabaseRangesVec::iterator aItr = aTables.at(nTable).begin();
+ sal_Int32 nRows = aCellRange.EndRow - aCellRange.StartRow;
+ sal_Int32 nFirstRow = aCellRange.StartRow;
+ table::CellRangeAddress aRange;
+ aRange = aCellRange;
+ aRange.EndRow = nFirstRow;
+ aTables.at(nTable).push_back(aRange);
+ sal_Int32 i = 1;
+ while (i <= nRows)
+ {
+ aRange = aCellRange;
+ aRange.StartRow = nFirstRow + i;
+ aRange.EndRow = nFirstRow + i;
+ aTables[nTable].push_back(aRange);
+ i++;
+ }
+}
+
+sal_Bool ScMyEmptyDatabaseRanges::GetNextEmptyDatabaseRange(const sal_Int16 nTable, com::sun::star::table::CellRangeAddress& aCellRange)
+{
+ ScMyEmptyDatabaseRangesVec::iterator aItr = aTables.at(nTable).begin();
+ if (aItr != aTables[nTable].end())
+ {
+ aCellRange = (*aItr);
+ aTables[nTable].erase(aItr);
+ return sal_True;
+ }
+ return sal_False;
+}
+
+void ScMyEmptyDatabaseRanges::Sort()
+{
+ ScMyEmptyDatabaseRangesVecVec::iterator aItr = aTables.begin();
+ while (aItr != aTables.end())
+ {
+ std::sort((*aItr).begin(), (*aItr).end(), LessRange);
+ aItr++;
+ }
+}
+
+//==============================================================================
+
+void ScMyNotEmptyCellsIterator::HasAnnotation(ScMyCell& aCell)
+{
+ if (xTable.is())
+ {
+ uno::Reference<table::XCellRange> xCellRange(xTable, uno::UNO_QUERY);
+ if (xCellRange.is())
+ {
+ aCell.xCell = xCellRange->getCellByPosition(aCell.aCellAddress.Column, aCell.aCellAddress.Row);
+ if (aCell.xCell.is())
+ {
+ uno::Reference<sheet::XSheetAnnotationAnchor> xSheetAnnotationAnchor(aCell.xCell, uno::UNO_QUERY);
+ if (xSheetAnnotationAnchor.is())
+ {
+ uno::Reference <sheet::XSheetAnnotation> xSheetAnnotation = xSheetAnnotationAnchor->getAnnotation();
+ uno::Reference<text::XSimpleText> xSimpleText(xSheetAnnotation, uno::UNO_QUERY);
+ if (xSheetAnnotation.is() && xSimpleText.is())
+ {
+ rtl::OUString sText = xSimpleText->getString();
+ if (sText.getLength())
+ aCell.bHasAnnotation = sal_True;
+ }
+ }
+ }
+ }
+ }
+ aCell.bHasAnnotation = sal_False;
+}
+
+ScMyNotEmptyCellsIterator::ScMyNotEmptyCellsIterator(ScXMLExport& rTempXMLExport)
+ : rExport(rTempXMLExport),
+ nCurrentTable(-1),
+ bHasShapes(sal_False),
+ bHasShape(sal_False),
+ bHasEmptyDatabaseRanges(sal_False),
+ bIsEmptyDatabaseRange(sal_False),
+ bHasMergedCells(sal_False),
+ bIsMergedBase(sal_False),
+ bIsCovered(sal_False),
+ bHasAnnotation(sal_False),
+ bIsMatrixBase(sal_False),
+ bIsMatrixCovered(sal_False),
+ bShapeWasWritten(sal_True)
+{
+ pCellItr = NULL;
+}
+
+ScMyNotEmptyCellsIterator::~ScMyNotEmptyCellsIterator()
+{
+ if (pCellItr)
+ delete pCellItr;
+}
+
+void ScMyNotEmptyCellsIterator::SetShapes(ScShapesContainer* pTempShapes)
+{
+ pShapes = pTempShapes;
+}
+
+void ScMyNotEmptyCellsIterator::SetEmptyDatabaseRanges(ScMyEmptyDatabaseRanges* pTempEmptyDatabaseRanges)
+{
+ pEmptyDatabaseRanges = pTempEmptyDatabaseRanges;
+}
+
+void ScMyNotEmptyCellsIterator::SetMergedCells(ScMyMergedCells* pTempMergedCells)
+{
+ pMergedCells = pTempMergedCells;
+}
+
+void ScMyNotEmptyCellsIterator::SetCurrentTable(const sal_Int32 nTable)
+{
+ if (nCurrentTable != nTable)
+ {
+ nCurrentTable = nTable;
+ if (!pShapes->GetNextShape(nCurrentTable, aCurrentShape))
+ bHasShapes = sal_False;
+ else
+ bHasShapes = sal_True;
+ if (!pEmptyDatabaseRanges->GetNextEmptyDatabaseRange(nCurrentTable, aNextEmptyCells))
+ bHasEmptyDatabaseRanges = sal_False;
+ else
+ bHasEmptyDatabaseRanges = sal_True;
+ if (!pMergedCells->GetNextMergedRange(nCurrentTable, aNextMergedCells))
+ bHasMergedCells = sal_False;
+ else
+ bHasMergedCells = sal_True;
+ if (pCellItr)
+ delete pCellItr;
+ pCellItr = new ScHorizontalCellIterator(rExport.GetDocument(), nCurrentTable, 0, 0,
+ rExport.GetLastColumn(nCurrentTable), rExport.GetLastRow(nCurrentTable));
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rExport.GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ sal_Int32 nTableCount = xIndex->getCount();
+ if(nCurrentTable < nTableCount)
+ {
+ uno::Any aTable = xIndex->getByIndex(nCurrentTable);
+ aTable>>=xTable;
+ }
+ }
+ }
+ }
+}
+
+/*void ScMyNotEmptyCellsIterator::GetNextShape()
+{
+ if (!pShapes->GetNextShape(nCurrentTable, aCurrentShape))
+ bHasShapes = sal_False;
+ else
+ bHasShapes = sal_True;
+}*/
+
+sal_Bool ScMyNotEmptyCellsIterator::GetNext(ScMyCell& aCell)
+{
+ sal_Bool bFoundCell(sal_False);
+ sal_uInt32 nCellCol, nCellRow;
+ sal_uInt16 nTempCol, nTempRow;
+ table::CellRangeAddress aMergeRange;
+ if (pCellItr->ReturnNext(nTempCol, nTempRow))
+ {
+ nCellCol = nTempCol;
+ nCellRow = nTempRow;
+ }
+ else
+ {
+ nCellCol = MAXCOL + 1;
+ nCellRow = MAXROW + 1;
+ }
+ if (bHasMergedCells)
+ {
+ if (((nCellCol >= aNextMergedCells.aCellRange.StartColumn) &&
+ (nCellRow == aNextMergedCells.aCellRange.StartRow)) ||
+ (nCellRow > aNextMergedCells.aCellRange.StartRow))
+ {
+ if (nCellCol > aNextMergedCells.aCellRange.StartColumn)
+ {
+ nCellCol = aNextMergedCells.aCellRange.StartColumn;
+ }
+ if (nCellRow > aNextMergedCells.aCellRange.StartRow)
+ {
+ nCellRow = aNextMergedCells.aCellRange.StartRow;
+ nCellCol = aNextMergedCells.aCellRange.StartColumn;
+ }
+ if (aNextMergedCells.bIsFirst)
+ {
+ bIsMergedBase = sal_True;
+ bIsCovered = sal_False;
+ aMergeRange.StartColumn = nCellCol;
+ aMergeRange.EndColumn = aNextMergedCells.aCellRange.EndColumn;
+ aMergeRange.StartRow = nCellRow;
+ aMergeRange.EndRow = nCellRow + aNextMergedCells.nRows - 1;
+ }
+ else
+ {
+ bIsMergedBase = sal_False;
+ bIsCovered = sal_True;
+ }
+ }
+ else
+ {
+ bIsMergedBase = sal_False;
+ bIsCovered = sal_False;
+ }
+ }
+ else
+ {
+ bIsMergedBase = sal_False;
+ bIsCovered = sal_False;
+ }
+ if (bHasShapes && bShapeWasWritten)
+ {
+ if (((nCellCol >= aCurrentShape.aAddress.Col()) &&
+ (nCellRow == aCurrentShape.aAddress.Row())) ||
+ (nCellRow > aCurrentShape.aAddress.Row()))
+ {
+ bHasShape = sal_True;
+ bShapeWasWritten = sal_False;
+ if (nCellCol > aCurrentShape.aAddress.Col())
+ {
+ nCellCol = aCurrentShape.aAddress.Col();
+ bIsMergedBase = sal_False;
+ bIsCovered = sal_False;
+ }
+ if (nCellRow > aCurrentShape.aAddress.Row())
+ {
+ nCellRow = aCurrentShape.aAddress.Row();
+ nCellCol = aCurrentShape.aAddress.Col();
+ bIsMergedBase = sal_False;
+ bIsCovered = sal_False;
+ }
+ }
+ else
+ bHasShape = sal_False;
+ }
+ else
+ bHasShape = sal_False;
+ while (bHasEmptyDatabaseRanges &&
+ (((nCellCol > aNextEmptyCells.EndColumn) &&
+ (nCellRow == aNextEmptyCells.EndRow)) ||
+ (nCellRow > aNextEmptyCells.EndRow)))
+ if (!pEmptyDatabaseRanges->GetNextEmptyDatabaseRange(nCurrentTable, aNextEmptyCells))
+ bHasEmptyDatabaseRanges = sal_False;
+ else
+ bHasEmptyDatabaseRanges = sal_True;
+ if (bHasEmptyDatabaseRanges)
+ {
+ if ((nCellCol >= aNextEmptyCells.StartColumn) &&
+ (nCellCol <= aNextEmptyCells.EndColumn) &&
+ (nCellRow == aNextEmptyCells.StartRow))
+ bIsEmptyDatabaseRange = sal_True;
+ else
+ bIsEmptyDatabaseRange = sal_False;
+ }
+ else
+ bIsEmptyDatabaseRange = sal_False;
+ if (bIsEmptyDatabaseRange)
+ if (aNextEmptyCells.StartColumn + nCellCol < aNextEmptyCells.EndColumn)
+ aNextEmptyCells.StartColumn += nCellCol + 1;
+ else
+ bHasEmptyDatabaseRanges = pEmptyDatabaseRanges->GetNextEmptyDatabaseRange(nCurrentTable, aNextEmptyCells);
+ if(bIsMergedBase || bIsCovered)
+ if (aNextMergedCells.aCellRange.StartColumn < aNextMergedCells.aCellRange.EndColumn)
+ {
+ aNextMergedCells.aCellRange.StartColumn++;
+ aNextMergedCells.bIsFirst = sal_False;
+ }
+ else
+ bHasMergedCells = pMergedCells->GetNextMergedRange(nCurrentTable, aNextMergedCells);
+// if(bHasShape)
+// bHasShapes = pShapes->GetNextShape(nCurrentTable, aCurrentShape);
+ if (nCellCol < MAXCOL + 1 && nCellRow < MAXROW + 1)
+ {
+ bFoundCell = sal_True;
+ aCell.aCellAddress.Sheet = nCurrentTable;
+ aCell.aCellAddress.Column = nCellCol;
+ aCell.aCellAddress.Row = nCellRow;
+ aCell.bHasShape = bHasShape;
+ aCell.bIsMergedBase = bIsMergedBase;
+ aCell.bIsCovered = bIsCovered;
+ aCell.aMergeRange = aMergeRange;
+ aCell.bIsMatrixCovered = sal_False;
+ aCell.bIsMatrixBase = sal_False;
+ aCell.aShape = aCurrentShape;
+ if (xTable.is())
+ {
+ uno::Reference<table::XCellRange> xCellRange(xTable, uno::UNO_QUERY);
+ if (xCellRange.is())
+ {
+ if (rExport.IsMatrix(xCellRange, xTable, nCellCol, nCellRow, aCell.aMatrixRange, aCell.bIsMatrixBase))
+ aCell.bIsMatrixCovered = !aCell.bIsMatrixBase;
+ }
+ }
+ HasAnnotation(aCell);
+ aCurrentCell = aCell;
+ }
+ if ((nTempCol == nCellCol) && (nTempRow == nCellRow))
+ pCellItr->GetNext(nTempCol, nTempRow);
+ return bFoundCell;
+}
+
+//==============================================================================
+
+void ScXMLExport::SetLastColumn(const sal_Int32 nTable, const sal_Int32 nCol)
+{
+ if(nCol > nLastColumns[nTable]) nLastColumns[nTable] = nCol;
+}
+
+sal_Int32 ScXMLExport::GetLastColumn(const sal_Int32 nTable)
+{
+ return nLastColumns[nTable];
+}
+
+void ScXMLExport::SetLastRow(const sal_Int32 nTable, const sal_Int32 nRow)
+{
+ if(nRow > nLastRows[nTable]) nLastRows[nTable] = nRow;
+}
+
+sal_Int32 ScXMLExport::GetLastRow(const sal_Int32 nTable)
+{
+ return nLastRows[nTable];
+}
+
+
+sal_Int16 ScXMLExport::GetFieldUnit()
+{
+ com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> xProperties(
+ utl::getProcessServiceFactory()->createInstance(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sheet.GlobalSheetSettings" )) ),
+ com::sun::star::uno::UNO_QUERY);
+ if (xProperties.is())
+ {
+ com::sun::star::uno::Any aAny = xProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Metric")));
+ sal_Int16 nFieldUnit;
+ if (aAny >>= nFieldUnit)
+ return nFieldUnit;
+ }
+ return 0;
+}
+
+ScDocument* ScXMLExport::GetDocument()
+{
+ if (!pDoc)
+ {
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( xModel, uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ ScModelObj* pDocObj = ScModelObj::getImplementation( xSpreadDoc );
+ if ( pDocObj )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ if (pDoc)
+ {
+ return pDoc;
+ }
+ else
+ return NULL;
+ }
+ return NULL;
+
+ }
+ return NULL;
+ }
+ else
+ return pDoc;
+}
+
+ScXMLExport::ScXMLExport( const uno::Reference <frame::XModel>& xTempModel, const NAMESPACE_RTL(OUString)& rFileName,
+ const uno::Reference<xml::sax::XDocumentHandler>& rHandler,
+ sal_Bool bShowProgr ) :
+SvXMLExport( rFileName, rHandler, xTempModel, GetFieldUnit() ),
+ xModel(xTempModel),
+// rDoc(rD),
+// mpUnitConv(0),
+// pParaItemMapper( 0 ),
+// pTableItemMapper( 0 ),
+// pAutoStylePool( new SwXMLAutoStylePool ),
+// pListElements( 0 ),
+// pExportedLists( 0 ),
+// pTableLines( 0 ),
+// bExportWholeDoc( bExpWholeDoc ),
+// bExportFirstTableOnly( bExpFirstTableOnly ),
+ pDoc(NULL),
+ mbShowProgress( bShowProgr ),
+// pScAutoStylePool(new SvXMLAutoStylePoolP),
+ pScPropHdlFactory(0L),
+ pCellStylesPropertySetMapper(0L),
+ pPageStylesPropertySetMapper(0L),
+ pColumnStylesPropertySetMapper(0L),
+ pRowStylesPropertySetMapper(0L),
+ pTableStylesPropertySetMapper(0L),
+ nLastColumns(SC_DEFAULT_TABLE_COUNT, 0),
+ nLastRows(SC_DEFAULT_TABLE_COUNT, 0),
+ aColumnStyles(),
+ aRowStyles(),
+ aCellStyles(),
+ aShapesContainer(),
+ aMergedCells(),
+ xChartExportMapper(new ScExportMapper()),
+ nOpenRow(-1),
+ aRowFormatRanges(),
+ nCurrentTable(0),
+ aTableStyles(),
+ pCellsItr(NULL)
+{
+ pDoc = GetDocument();
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( xModel, uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ sal_Int32 nTableCount = xIndex->getCount();
+ if (nTableCount > SC_DEFAULT_TABLE_COUNT)
+ {
+ nLastColumns.resize(nTableCount, 0);
+ nLastRows.resize(nTableCount, 0);
+ }
+ }
+ }
+
+ pScPropHdlFactory = new XMLScPropHdlFactory;
+ if(pScPropHdlFactory)
+ {
+ // set lock to avoid deletion
+ pScPropHdlFactory->acquire();
+
+ // build one ref
+ const UniReference< XMLPropertyHandlerFactory > aFactoryRef = pScPropHdlFactory;
+
+ // construct PropertySetMapper
+ pCellStylesPropertySetMapper = new XMLCellStylesPropertySetMapper((XMLPropertyMapEntry*)aXMLScCellStylesProperties, aFactoryRef);
+ if(pCellStylesPropertySetMapper)
+ {
+ // set lock to avoid deletion
+ pCellStylesPropertySetMapper->acquire();
+ }
+ pPageStylesPropertySetMapper = new XMLPageStylesPropertySetMapper((XMLPropertyMapEntry*)aXMLScPageStylesProperties, aFactoryRef);
+ if(pPageStylesPropertySetMapper)
+ {
+ // set lock to avoid deletion
+ pPageStylesPropertySetMapper->acquire();
+ }
+ pColumnStylesPropertySetMapper = new XMLColumnStylesPropertySetMapper((XMLPropertyMapEntry*)aXMLScColumnStylesProperties, aFactoryRef);
+ if(pColumnStylesPropertySetMapper)
+ {
+ // set lock to avoid deletion
+ pColumnStylesPropertySetMapper->acquire();
+ }
+ pRowStylesPropertySetMapper = new XMLRowStylesPropertySetMapper((XMLPropertyMapEntry*)aXMLScRowStylesProperties, aFactoryRef);
+ if(pRowStylesPropertySetMapper)
+ {
+ // set lock to avoid deletion
+ pRowStylesPropertySetMapper->acquire();
+ }
+ pTableStylesPropertySetMapper = new XMLTableStylesPropertySetMapper((XMLPropertyMapEntry*)aXMLScTableStylesProperties, aFactoryRef);
+ if(pTableStylesPropertySetMapper)
+ {
+ // set lock to avoid deletion
+ pTableStylesPropertySetMapper->acquire();
+ }
+ }
+ GetAutoStylePool()->AddFamily(XML_STYLE_FAMILY_TABLE_CELL, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_CELL_STYLES_NAME)),
+ pCellStylesPropertySetMapper, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_CELL_STYLES_PREFIX)));
+ GetAutoStylePool()->AddFamily(XML_STYLE_FAMILY_TABLE_PAGE_STYLES, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_PAGE_STYLES_NAME)),
+ pPageStylesPropertySetMapper, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_PAGE_STYLES_PREFIX)));
+ GetAutoStylePool()->AddFamily(XML_STYLE_FAMILY_TABLE_COLUMN, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_COLUMN_STYLES_NAME)),
+ pColumnStylesPropertySetMapper, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_COLUMN_STYLES_PREFIX)));
+ GetAutoStylePool()->AddFamily(XML_STYLE_FAMILY_TABLE_ROW, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_ROW_STYLES_NAME)),
+ pRowStylesPropertySetMapper, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_ROW_STYLES_PREFIX)));
+ GetAutoStylePool()->AddFamily(XML_STYLE_FAMILY_TABLE_TABLE, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_TABLE_STYLES_NAME)),
+ pTableStylesPropertySetMapper, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_TABLE_STYLES_PREFIX)));
+}
+
+
+ScXMLExport::~ScXMLExport()
+{
+// delete pAutoStylePool;
+
+// if( bShowProgress )
+// ::EndProgress( pDoc->GetDocShell() );
+
+// _FinitItemExport();
+// _FinitNumRuleExport();
+ if (pScPropHdlFactory)
+ {
+ pScPropHdlFactory->release();
+ pScPropHdlFactory = 0L;
+ }
+ if (pCellStylesPropertySetMapper)
+ {
+ pCellStylesPropertySetMapper->release();
+ pCellStylesPropertySetMapper = 0L;
+ }
+ if (pPageStylesPropertySetMapper)
+ {
+ pPageStylesPropertySetMapper->release();
+ pPageStylesPropertySetMapper = 0L;
+ }
+ if (pColumnStylesPropertySetMapper)
+ {
+ pColumnStylesPropertySetMapper->release();
+ pColumnStylesPropertySetMapper = 0L;
+ }
+ if (pRowStylesPropertySetMapper)
+ {
+ pRowStylesPropertySetMapper->release();
+ pRowStylesPropertySetMapper = 0L;
+ }
+ if (pTableStylesPropertySetMapper)
+ {
+ pTableStylesPropertySetMapper->release();
+ pTableStylesPropertySetMapper = 0L;
+ }
+// if (pScAutoStylePool)
+// delete pScAutoStylePool;
+}
+
+table::CellRangeAddress ScXMLExport::GetEndAddress(uno::Reference<sheet::XSpreadsheet>& xTable,const sal_Int16 nTable)
+{
+ table::CellRangeAddress aCellAddress;
+ uno::Reference<sheet::XSheetCellCursor> xCursor = xTable->createCursor();
+ uno::Reference<sheet::XUsedAreaCursor> xUsedArea (xCursor, uno::UNO_QUERY);
+ uno::Reference<sheet::XCellRangeAddressable> xCellAddress (xCursor, uno::UNO_QUERY);
+ if (xUsedArea.is() && xCellAddress.is())
+ {
+ xUsedArea->gotoEndOfUsedArea(sal_True);
+ aCellAddress = xCellAddress->getRangeAddress();
+ }
+ return aCellAddress;
+}
+
+ScMyEmptyDatabaseRanges ScXMLExport::GetEmptyDatabaseRanges(const sal_Int16 nTableCount)
+{
+ ScMyEmptyDatabaseRanges aSkipRanges(nTableCount);
+ sal_Int32 nSkipRangesCount = 0;
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( xModel, uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference <beans::XPropertySet> xPropertySet (xSpreadDoc, uno::UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ uno::Any aDatabaseRanges = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DATABASERANGES)));
+ uno::Reference <sheet::XDatabaseRanges> xDatabaseRanges;
+ CheckAttrList();
+ if (aDatabaseRanges >>= xDatabaseRanges)
+ {
+ uno::Sequence <rtl::OUString> aRanges = xDatabaseRanges->getElementNames();
+ sal_Int32 nDatabaseRangesCount = aRanges.getLength();
+ for (sal_Int32 i = 0; i < nDatabaseRangesCount; i++)
+ {
+ rtl::OUString sDatabaseRangeName = aRanges[i];
+ uno::Any aDatabaseRange = xDatabaseRanges->getByName(sDatabaseRangeName);
+ uno::Reference <sheet::XDatabaseRange> xDatabaseRange;
+ if (aDatabaseRange >>= xDatabaseRange)
+ {
+ uno::Reference <beans::XPropertySet> xDatabaseRangePropertySet (xDatabaseRange, uno::UNO_QUERY);
+ if (xDatabaseRangePropertySet.is())
+ {
+ uno::Any aStripDataProperty = xDatabaseRangePropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_STRIPDATA)));
+ sal_Bool bStripData = sal_False;
+ if (aStripDataProperty >>= bStripData)
+ if (bStripData)
+ {
+ uno::Sequence <beans::PropertyValue> aImportProperties = xDatabaseRange->getImportDescriptor();
+ sal_Int32 nLength = aImportProperties.getLength();
+ sheet::DataImportMode nSourceType = sheet::DataImportMode_NONE;
+ for (sal_Int32 j = 0; j < nLength; j++)
+ if (aImportProperties[j].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SOURCETYPE)))
+ {
+ uno::Any aSourceType = aImportProperties[j].Value;
+ aSourceType >>= nSourceType;
+ }
+ if (nSourceType != sheet::DataImportMode_NONE)
+ aSkipRanges.AddNewEmptyDatabaseRange(xDatabaseRange->getDataArea());
+ }
+ }
+ }
+ }
+ if (nSkipRangesCount > 1)
+ aSkipRanges.Sort();
+ }
+ }
+ }
+ return aSkipRanges;
+}
+
+sal_Bool ScXMLExport::GetxCurrentShapes(uno::Reference<container::XIndexAccess>& xShapes)
+{
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xCurrentTable, uno::UNO_QUERY);
+ if (xDrawPageSupplier.is())
+ {
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ if (xDrawPage.is())
+ {
+ uno::Reference<container::XIndexAccess> xShapesIndex (xDrawPage, uno::UNO_QUERY);
+ if (xShapesIndex.is())
+ {
+ xShapes = xShapesIndex;
+ return sal_True;
+ }
+ }
+ }
+ return sal_False;
+}
+
+void ScXMLExport::ExportColumns(const sal_Int16 nTable)
+{
+ sal_Int32 nColsRepeated = 0;
+ rtl::OUString sParent;
+ sal_Int32 nIndex;
+ sal_Bool bPrevIsVisible = sal_True;
+ sal_Int32 nPrevIndex = -1;
+ uno::Reference<table::XColumnRowRange> xColumnRowRange (xCurrentTable, uno::UNO_QUERY);
+ if (xColumnRowRange.is())
+ {
+ uno::Reference<table::XTableColumns> xTableColumns = xColumnRowRange->getColumns();
+ if (xTableColumns.is())
+ {
+ for (sal_Int32 nColumn = 0; nColumn <= GetLastColumn(nTable); nColumn++)
+ {
+ CheckAttrList();
+ uno::Any aColumn = xTableColumns->getByIndex(nColumn);
+ uno::Reference<table::XCellRange> xTableColumn;
+ if (aColumn >>= xTableColumn)
+ {
+ uno::Reference <beans::XPropertySet> xColumnProperties(xTableColumn, uno::UNO_QUERY);
+ if (xColumnProperties.is())
+ {
+ nIndex = aColumnStyles.GetStyleNameIndex(nTable, nColumn);
+
+ uno::Any aAny = xColumnProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ISVISIBLE)));
+ sal_Bool bIsVisible(sal_True);
+ aAny >>= bIsVisible;
+ if (nColumn == 0)
+ {
+ bPrevIsVisible = bIsVisible;
+ nPrevIndex = nIndex;
+ }
+ if ((bIsVisible == bPrevIsVisible) && (nIndex == nPrevIndex))
+ {
+ nColsRepeated++;
+ }
+ else
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_style_name, *aColumnStyles.GetStyleNameByIndex(nPrevIndex));
+ if (!bPrevIsVisible)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_visibility, sXML_collapse);
+ if (nColsRepeated > 1)
+ {
+ OUString sOUEndCol = OUString::valueOf(static_cast <sal_Int32> (nColsRepeated));
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_columns_repeated, sOUEndCol);
+ }
+ SvXMLElementExport aElemR(*this, XML_NAMESPACE_TABLE, sXML_table_column, sal_True, sal_True);
+ bPrevIsVisible = bIsVisible;
+ nPrevIndex = nIndex;
+ nColsRepeated = 1;
+ }
+ }
+ }
+ }
+ CheckAttrList();
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_style_name, *aColumnStyles.GetStyleNameByIndex(nPrevIndex));
+ if (!bPrevIsVisible)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_visibility, sXML_collapse);
+ if (nColsRepeated > 1)
+ {
+ OUString sOUEndCol = OUString::valueOf(static_cast <sal_Int32> (nColsRepeated));
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_columns_repeated, sOUEndCol);
+ }
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, sXML_table_column, sal_True, sal_True);
+ }
+ }
+}
+
+void ScXMLExport::WriteRowContent()
+{
+ ScMyRowFormatRange aRange;
+ sal_Int32 nIndex = -1;
+ sal_Int32 nCols = 0;
+ sal_Bool bIsAutoStyle(sal_True);
+ sal_Bool bIsFirst(sal_True);
+ while (aRowFormatRanges.GetNext(aRange))
+ {
+ if (bIsFirst)
+ {
+ nIndex = aRange.nIndex;
+ bIsAutoStyle = aRange.bIsAutoStyle;
+ nCols = aRange.nRepeatColumns;
+ bIsFirst = sal_False;
+ }
+ else
+ {
+ if (aRange.nIndex == nIndex && aRange.bIsAutoStyle == bIsAutoStyle)
+ nCols += aRange.nRepeatColumns;
+ else
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_style_name, *aCellStyles.GetStyleNameByIndex(nIndex, bIsAutoStyle));
+ if (nCols > 1)
+ {
+ rtl::OUStringBuffer aBuf;
+ GetMM100UnitConverter().convertNumber(aBuf, nCols);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_columns_repeated, aBuf.makeStringAndClear());
+ }
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, sXML_table_cell, sal_True, sal_True);
+ nIndex = aRange.nIndex;
+ bIsAutoStyle = aRange.bIsAutoStyle;
+ nCols = aRange.nRepeatColumns;
+ }
+ }
+ }
+ if (!bIsFirst)
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_style_name, *aCellStyles.GetStyleNameByIndex(nIndex, bIsAutoStyle));
+ if (nCols > 1)
+ {
+ rtl::OUStringBuffer aBuf;
+ GetMM100UnitConverter().convertNumber(aBuf, nCols);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_columns_repeated, aBuf.makeStringAndClear());
+ }
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, sXML_table_cell, sal_True, sal_True);
+ }
+}
+
+void ScXMLExport::OpenNewRow(const sal_Int32 nIndex, const sal_Int8 nFlag, const sal_Int32 nEqualRows)
+{
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_style_name, *aRowStyles.GetStyleNameByIndex(nIndex));
+ if (nFlag)
+ if (nFlag & CR_HIDDEN)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_visibility, sXML_collapse);
+ else
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_visibility, sXML_filter);
+ if (nEqualRows > 1)
+ {
+ rtl::OUStringBuffer aBuf;
+ GetMM100UnitConverter().convertNumber(aBuf, nEqualRows);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_rows_repeated, aBuf.makeStringAndClear());
+ }
+ rtl::OUString aName = GetNamespaceMap().GetQNameByKey(XML_NAMESPACE_TABLE, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_table_row)));
+ GetDocHandler()->ignorableWhitespace(sWS);
+ GetDocHandler()->startElement( aName, GetXAttrList());
+ ClearAttrList();
+}
+
+void ScXMLExport::OpenAndCloseRow(const sal_Int32 nIndex, const sal_Int8 nFlag, const sal_Int32 nEqualRows)
+{
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_style_name, *aRowStyles.GetStyleNameByIndex(nIndex));
+ if (nFlag)
+ if (nFlag & CR_HIDDEN)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_visibility, sXML_collapse);
+ else
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_visibility, sXML_filter);
+ if (nEqualRows > 1)
+ {
+ rtl::OUStringBuffer aBuf;
+ GetMM100UnitConverter().convertNumber(aBuf, nEqualRows);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_rows_repeated, aBuf.makeStringAndClear());
+ }
+ SvXMLElementExport aElemR(*this, XML_NAMESPACE_TABLE, sXML_table_row, sal_True, sal_True);
+ WriteRowContent();
+ aRowFormatRanges.Clear();
+}
+
+void ScXMLExport::OpenRow(const sal_Int16 nTable, const sal_Int32 nStartRow, const sal_Int32 nRepeatRow)
+{
+ if (nRepeatRow > 1)
+ {
+ sal_Int32 nPrevIndex, nIndex;
+ sal_Int8 nPrevFlag, nFlag;
+ sal_Int32 nEqualRows = 1;
+ for (sal_Int32 nRow = nStartRow; nRow < nStartRow + nRepeatRow; nRow++)
+ {
+ if (nRow == nStartRow)
+ {
+ nPrevIndex = aRowStyles.GetStyleNameIndex(nTable, nRow);
+ nPrevFlag = (pDoc->GetRowFlags(nRow, nTable)) & (CR_HIDDEN | CR_FILTERED);
+ }
+ else
+ {
+ nIndex = aRowStyles.GetStyleNameIndex(nTable, nRow);
+ nFlag = (pDoc->GetRowFlags(nRow, nTable)) & (CR_HIDDEN | CR_FILTERED);
+ if (nIndex == nPrevIndex && nFlag == nPrevFlag)
+ nEqualRows++;
+ else
+ {
+ OpenAndCloseRow(nPrevIndex, nPrevFlag, nEqualRows);
+ nEqualRows = 1;
+ nPrevIndex = nIndex;
+ nPrevFlag = nFlag;
+ }
+ }
+ }
+ OpenNewRow(nPrevIndex, nPrevFlag, nEqualRows);
+ }
+ else
+ {
+ sal_Int32 nIndex = aRowStyles.GetStyleNameIndex(nTable, nStartRow);
+ sal_Int8 nFlag = (pDoc->GetRowFlags(nStartRow, nTable)) & (CR_HIDDEN | CR_FILTERED);
+ OpenNewRow(nIndex, nFlag, 1);
+ }
+ nOpenRow = nStartRow + nRepeatRow - 1;
+}
+
+void ScXMLExport::CloseRow()
+{
+ if (nOpenRow > -1)
+ {
+ rtl::OUString aName = GetNamespaceMap().GetQNameByKey(XML_NAMESPACE_TABLE, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_table_row)));
+ GetDocHandler()->ignorableWhitespace(sWS);
+ GetDocHandler()->endElement(aName);
+ }
+ nOpenRow = -1;
+}
+
+void ScXMLExport::ExportFormatRanges(const sal_Int32 nStartCol, const sal_Int32 nStartRow,
+ const sal_Int32 nEndCol, const sal_Int32 nEndRow, const sal_Int16 nSheet)
+{
+ aRowFormatRanges.Clear();
+ if (nStartRow == nEndRow)
+ {
+ aCellStyles.GetFormatRanges(nStartCol, nEndCol, nStartRow, nSheet, aRowFormatRanges);
+ if (nOpenRow == - 1)
+ OpenRow(nSheet, nStartRow, 1);
+ WriteRowContent();
+ aRowFormatRanges.Clear();
+ }
+ else
+ {
+ if (nOpenRow > -1)
+ {
+ aCellStyles.GetFormatRanges(nStartCol, GetLastColumn(nSheet), nStartRow, nSheet, aRowFormatRanges);
+ WriteRowContent();
+ CloseRow();
+ sal_Int32 nRows = 1;
+ sal_Int32 nTotalRows = nEndRow - nStartRow + 1 - 1;
+ while (nRows < nTotalRows)
+ {
+ aRowFormatRanges.Clear();
+ aCellStyles.GetFormatRanges(0, GetLastColumn(nSheet), nStartRow + nRows, nSheet, aRowFormatRanges);
+ sal_Int32 nMaxRows = aRowFormatRanges.GetMaxRows();
+ if (nMaxRows >= nTotalRows - nRows)
+ {
+ OpenRow(nSheet, nStartRow + nRows, nTotalRows - nRows);
+ nRows += nTotalRows - nRows;
+ }
+ else
+ {
+ OpenRow(nSheet, nStartRow + nRows, nMaxRows);
+ nRows += nMaxRows;
+ }
+ WriteRowContent();
+ CloseRow();
+ }
+ if (nTotalRows == 1)
+ CloseRow();
+ OpenRow(nSheet, nEndRow, 1);
+ aRowFormatRanges.Clear();
+ aCellStyles.GetFormatRanges(0, nEndCol, nEndRow, nSheet, aRowFormatRanges);
+ WriteRowContent();
+ }
+ else
+ {
+ sal_Int32 nRows = 0;
+ sal_Int32 nTotalRows = nEndRow - nStartRow + 1 - 1;
+ while (nRows < nTotalRows)
+ {
+ aRowFormatRanges.Clear();
+ aCellStyles.GetFormatRanges(0, GetLastColumn(nSheet), nStartRow + nRows, nSheet, aRowFormatRanges);
+ sal_Int32 nMaxRows = aRowFormatRanges.GetMaxRows();
+ if (nMaxRows >= nTotalRows - nRows)
+ {
+ OpenRow(nSheet, nStartRow + nRows, nTotalRows - nRows);
+ nRows += nTotalRows - nRows;
+ }
+ else
+ {
+ OpenRow(nSheet, nStartRow + nRows, nMaxRows);
+ nRows += nMaxRows;
+ }
+ WriteRowContent();
+ CloseRow();
+ }
+ OpenRow(nSheet, nEndRow, 1);
+ aRowFormatRanges.Clear();
+ aCellStyles.GetFormatRanges(0, nEndCol, nEndRow, nSheet, aRowFormatRanges);
+ WriteRowContent();
+ }
+ }
+}
+
+void ScXMLExport::_ExportContent()
+{
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( xModel, uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ sal_Int32 nTableCount = xIndex->getCount();
+ aCellStyles.Sort();
+ aShapesContainer.Sort();
+ aMergedCells.SortAndRemoveDoublets();
+ ScMyNotEmptyCellsIterator aCellsItr(*this);
+ pCellsItr = &aCellsItr;
+ aCellsItr.SetShapes(&aShapesContainer);
+ ScMyEmptyDatabaseRanges aEmptyRanges = GetEmptyDatabaseRanges(nTableCount);
+ aCellsItr.SetEmptyDatabaseRanges(&aEmptyRanges);
+ aCellsItr.SetMergedCells(&aMergedCells);
+ for (sal_Int32 nTable = 0; nTable < nTableCount; nTable++)
+ {
+ uno::Any aTable = xIndex->getByIndex(nTable);
+ uno::Reference<sheet::XSpreadsheet> xTable;
+ if (aTable>>=xTable)
+ {
+ xCurrentTable = xTable;
+ uno::Reference<container::XNamed> xName (xTable, uno::UNO_QUERY );
+ if ( xName.is() )
+ {
+ nCurrentTable = nTable;
+ OUString sOUTableName = xName->getName();
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_name, sOUTableName);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_style_name, aTableStyles[nTable]);
+ uno::Reference<util::XProtectable> xProtectable (xTable, uno::UNO_QUERY);
+ if (xProtectable.is())
+ if (xProtectable->isProtected())
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_use_cell_protection, sXML_true);
+ SvXMLElementExport aElemT(*this, XML_NAMESPACE_TABLE, sXML_table, sal_True, sal_True);
+ CheckAttrList();
+ table::CellRangeAddress aRange = GetEndAddress(xTable, nTable);
+ SetLastColumn(nTable, aRange.EndColumn);
+ SetLastRow(nTable, aRange.EndRow);
+ aCellsItr.SetCurrentTable(nTable);
+ GetxCurrentShapes(xCurrentShapes);
+ ExportColumns(nTable);
+ sal_Bool bIsFirst(sal_True);
+ sal_Int32 nEqualCells(0);
+ ScMyCell aCell;
+ ScMyCell aPrevCell;
+ while(aCellsItr.GetNext(aCell))
+ {
+ if (bIsFirst)
+ {
+ ExportFormatRanges(0, 0, aCell.aCellAddress.Column - 1, aCell.aCellAddress.Row, nTable);
+ aPrevCell = aCell;
+ bIsFirst = sal_False;
+ }
+ else
+ {
+ if ((aPrevCell.aCellAddress.Row == aCell.aCellAddress.Row) &&
+ (aPrevCell.aCellAddress.Column + nEqualCells + 1 == aCell.aCellAddress.Column))
+ {
+ if(IsCellEqual(aPrevCell, aCell))
+ nEqualCells++;
+ else
+ {
+ SetRepeatAttribute(nEqualCells);
+ WriteCell(aPrevCell);
+/* if (aPrevCell.bHasShape)
+ aCellsItr.GetNextShape();*/
+ nEqualCells = 0;
+ aPrevCell = aCell;
+ }
+ }
+ else
+ {
+ SetRepeatAttribute(nEqualCells);
+ WriteCell(aPrevCell);
+/* if (aPrevCell.bHasShape)
+ aCellsItr.GetNextShape();*/
+ ExportFormatRanges(aPrevCell.aCellAddress.Column + nEqualCells + 1, aPrevCell.aCellAddress.Row,
+ aCell.aCellAddress.Column - 1, aCell.aCellAddress.Row, nTable);
+ nEqualCells = 0;
+ aPrevCell = aCell;
+ }
+ }
+ }
+ if (!bIsFirst)
+ {
+ SetRepeatAttribute(nEqualCells);
+ WriteCell(aPrevCell);
+ ExportFormatRanges(aPrevCell.aCellAddress.Column + nEqualCells + 1, aPrevCell.aCellAddress.Row,
+ GetLastColumn(nTable), GetLastRow(nTable), nTable);
+ }
+ else
+ ExportFormatRanges(0, 0, GetLastColumn(nTable), GetLastRow(nTable), nTable);
+ CloseRow();
+ nEqualCells = 0;
+ }
+ }
+ }
+ }
+ WriteNamedExpressions(xSpreadDoc);
+ WriteDatabaseRanges(xSpreadDoc);
+ WriteDataPilots(xSpreadDoc);
+ }
+}
+
+void ScXMLExport::_ExportStyles( sal_Bool bUsed )
+{
+ uno::Reference <style::XStyleFamiliesSupplier> xStyleFamiliesSupplier (xModel, uno::UNO_QUERY);
+ if (xStyleFamiliesSupplier.is())
+ {
+ uno::Reference <container::XNameAccess> aStylesFamilies = xStyleFamiliesSupplier->getStyleFamilies();
+ if (aStylesFamilies.is())
+ {
+ uno::Any aStyleFamily = aStylesFamilies->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CellStyles")));
+ uno::Reference <container::XIndexAccess> aCellStyles;
+ if (aStyleFamily >>= aCellStyles)
+ {
+ sal_Int32 nCount = aCellStyles->getCount();
+ for (sal_Int32 i = 0; i < nCount; i++)
+ {
+ uno::Any aCellStyle = aCellStyles->getByIndex(i);
+ uno::Reference <beans::XPropertySet> xCellProperties;
+ if (aCellStyle >>= xCellProperties)
+ {
+ uno::Any aNumberFormat = xCellProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT)));
+ sal_Int32 nNumberFormat;
+ if (aNumberFormat >>= nNumberFormat)
+ {
+ addDataStyle(nNumberFormat);
+ }
+ }
+ }
+ }
+ }
+ }
+ exportDataStyles();
+
+ const UniReference< XMLPropertySetMapper > aCellStylesMapperRef = pCellStylesPropertySetMapper;
+ ScXMLExportPropertyMapper* aCellStylesExpPropMapper = new ScXMLExportPropertyMapper(aCellStylesMapperRef);
+ ScXMLStyleExport aStylesExp(*this, rtl::OUString(), GetAutoStylePool().get());
+ aStylesExp.exportStyleFamily(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CellStyles")),
+ XML_STYLE_FAMILY_TABLE_CELL_STYLES_NAME, aCellStylesExpPropMapper, FALSE, XML_STYLE_FAMILY_TABLE_CELL);
+
+ const UniReference< XMLPropertySetMapper > aPageStylesMapperRef = pPageStylesPropertySetMapper;
+ ScXMLExportPropertyMapper* aPageStylesExpPropMapper = new ScXMLExportPropertyMapper(aPageStylesMapperRef);
+ aStylesExp.exportStyleFamily(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PageStyles")),
+ XML_STYLE_FAMILY_TABLE_PAGE_STYLES_NAME, aPageStylesExpPropMapper, FALSE, XML_STYLE_FAMILY_TABLE_PAGE_STYLES);
+}
+
+void ScXMLExport::_ExportAutoStyles()
+{
+ rtl::OUString SC_SCOLUMNPREFIX(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_COLUMN_STYLES_PREFIX));
+ rtl::OUString SC_SROWPREFIX(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_ROW_STYLES_PREFIX));
+ rtl::OUString SC_SCELLPREFIX(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_CELL_STYLES_PREFIX));
+ GetChartExport()->setTableAddressMapper(xChartExportMapper);
+ GetAutoStylePool()->ClearEntries();
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( xModel, uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ sal_Int32 nTableCount = xIndex->getCount();
+ aCellStyles.AddNewTable(nTableCount - 1);
+ for (sal_Int32 nTable = 0; nTable < nTableCount; nTable++)
+ {
+ uno::Any aTable = xIndex->getByIndex(nTable);
+ uno::Reference<sheet::XSpreadsheet> xTable;
+ if (aTable>>=xTable)
+ {
+ aShapesContainer.AddNewTable();
+ uno::Reference<beans::XPropertySet> xTableProperties(xTable, uno::UNO_QUERY);
+ if (xTableProperties.is())
+ {
+ std::vector<XMLPropertyState> xPropStates = pTableStylesPropertySetMapper->Filter(xTableProperties);
+ if(xPropStates.size())
+ {
+ rtl::OUString sParent;
+ rtl::OUString sName = GetAutoStylePool()->Find(XML_STYLE_FAMILY_TABLE_TABLE, sParent, xPropStates);
+ if (!sName.len())
+ {
+ sName = GetAutoStylePool()->Add(XML_STYLE_FAMILY_TABLE_TABLE, sParent, xPropStates);
+ }
+ aTableStyles.push_back(sName);
+ }
+ }
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(xTable, uno::UNO_QUERY);
+ if (xDrawPageSupplier.is())
+ {
+ uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
+ if (xDrawPage.is())
+ {
+ uno::Reference<container::XIndexAccess> xShapesIndex (xDrawPage, uno::UNO_QUERY);
+ if (xShapesIndex.is())
+ {
+ sal_Int32 nShapesCount = xShapesIndex->getCount();
+ for (sal_Int32 nShape = 0; nShape < nShapesCount; nShape++)
+ {
+ uno::Any aShape = xShapesIndex->getByIndex(nShape);
+ uno::Reference<drawing::XShape> xShape;
+ if (aShape >>= xShape)
+ {
+ GetShapeExport()->collectShapeAutoStyles(xShape);
+ if (pDoc)
+ {
+ awt::Point aPoint = xShape->getPosition();
+ awt::Size aSize = xShape->getSize();
+ Rectangle aRectangle(aPoint.X, aPoint.Y, aPoint.X + aSize.Width, aPoint.Y + aSize.Height);
+ ScRange aRange = pDoc->GetRange(nTable, aRectangle);
+ ScMyShape aMyShape;
+ aMyShape.aAddress = aRange.aStart;
+ aMyShape.nIndex = nShape;
+ aShapesContainer.AddNewShape(nTable, aMyShape);
+ SetLastColumn(nTable, aRange.aStart.Col());
+ SetLastRow(nTable, aRange.aStart.Row());
+ }
+ }
+ }
+ }
+ }
+ }
+ uno::Reference<sheet::XCellFormatRangesSupplier> xCellFormatRanges ( xTable, uno::UNO_QUERY );
+ if ( xCellFormatRanges.is() )
+ {
+ uno::Reference<container::XIndexAccess> xFormatRangesIndex = xCellFormatRanges->getCellFormatRanges();
+ if (xFormatRangesIndex.is())
+ {
+ sal_Int32 nFormatRangesCount = xFormatRangesIndex->getCount();
+ for (sal_Int32 nFormatRange = 0; nFormatRange < nFormatRangesCount; nFormatRange++)
+ {
+ aMergedCells.AddNewTable();
+ uno::Any aFormatRange = xFormatRangesIndex->getByIndex(nFormatRange);
+ uno::Reference<table::XCellRange> xCellRange;
+ if (aFormatRange >>= xCellRange)
+ {
+ uno::Reference <beans::XPropertySet> xProperties (xCellRange, uno::UNO_QUERY);
+ if (xProperties.is())
+ {
+ uno::Any aNumberFormat = xProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT)));
+ sal_Int32 nNumberFormat;
+ if (aNumberFormat >>= nNumberFormat)
+ {
+ addDataStyle(nNumberFormat);
+ }
+ uno::Any aStyle = xProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_CELLSTYLE)));
+ rtl::OUString sStyleName;
+ if (aStyle >>= sStyleName)
+ {
+ std::vector< XMLPropertyState > xPropStates = pCellStylesPropertySetMapper->Filter( xProperties );
+ if (xPropStates.size())
+ {
+ sal_Int32 nIndex;
+ rtl::OUString sName = GetAutoStylePool()->Find(XML_STYLE_FAMILY_TABLE_CELL, sStyleName, xPropStates);
+ sal_Bool bIsAutoStyle = sal_True;
+ if (!sName.len())
+ {
+ sName = GetAutoStylePool()->Add(XML_STYLE_FAMILY_TABLE_CELL, sStyleName, xPropStates);
+ rtl::OUString* pTemp = new rtl::OUString(sName);
+ nIndex = aCellStyles.AddStyleName(pTemp);
+ }
+ else
+ nIndex = aCellStyles.GetIndexOfStyleName(sName, SC_SCELLPREFIX, bIsAutoStyle);
+ uno::Reference <sheet::XCellRangeAddressable> xCellRangeAddressable(xCellRange, uno::UNO_QUERY);
+ if (xCellRangeAddressable.is())
+ {
+ table::CellRangeAddress aRangeAddress = xCellRangeAddressable->getRangeAddress();
+ SetLastColumn(nTable, aRangeAddress.EndColumn);
+ SetLastRow(nTable, aRangeAddress.EndRow);
+ aCellStyles.AddRangeStyleName(aRangeAddress, nIndex, bIsAutoStyle);
+ }
+ uno::Reference<sheet::XSheetCellRange> xSheetCellRange(xCellRange, uno::UNO_QUERY);
+ if (xSheetCellRange.is())
+ {
+ uno::Reference<sheet::XSheetCellCursor> xCursor = xTable->createCursorByRange(xSheetCellRange);
+ if(xCursor.is())
+ {
+ uno::Reference<sheet::XCellRangeAddressable> xCellAddress (xCursor, uno::UNO_QUERY);
+ table::CellRangeAddress aCellAddress = xCellAddress->getRangeAddress();
+ xCursor->collapseToMergedArea();
+ table::CellRangeAddress aCellAddress2 = xCellAddress->getRangeAddress();
+ if (aCellAddress2.EndColumn > aCellAddress.EndColumn ||
+ aCellAddress2.EndRow > aCellAddress.EndRow)
+ {
+ SetLastColumn(nTable, aCellAddress2.EndColumn);
+ SetLastRow(nTable, aCellAddress2.EndRow);
+ aMergedCells.AddRange(nTable, aCellAddress2);
+ }
+ }
+ }
+ }
+ else
+ {
+ uno::Reference<sheet::XSheetCellRange> xSheetCellRange(xCellRange, uno::UNO_QUERY);
+ if (xSheetCellRange.is())
+ {
+ uno::Reference<sheet::XSheetCellCursor> xCursor = xTable->createCursorByRange(xSheetCellRange);
+ if(xCursor.is())
+ {
+ uno::Reference<sheet::XCellRangeAddressable> xCellAddress (xCursor, uno::UNO_QUERY);
+ table::CellRangeAddress aCellAddress = xCellAddress->getRangeAddress();
+ xCursor->collapseToMergedArea();
+ table::CellRangeAddress aCellAddress2 = xCellAddress->getRangeAddress();
+ if (aCellAddress2.EndColumn > aCellAddress.EndColumn ||
+ aCellAddress2.EndRow > aCellAddress.EndRow)
+ {
+ SetLastColumn(nTable, aCellAddress2.EndColumn);
+ SetLastRow(nTable, aCellAddress2.EndRow);
+ aMergedCells.AddRange(nTable, aCellAddress2);
+ }
+ rtl::OUString* pTemp = new rtl::OUString(sStyleName);
+ sal_Int32 nIndex = aCellStyles.AddStyleName(pTemp, sal_False);
+ aCellStyles.AddRangeStyleName(aCellAddress, nIndex, sal_False);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery (xTable, uno::UNO_QUERY);
+ uno::Reference<table::XColumnRowRange> xColumnRowRange (xTable, uno::UNO_QUERY);
+ if (xColumnRowRange.is())
+ {
+ if (pDoc)
+ {
+ uno::Reference<table::XTableColumns> xTableColumns = xColumnRowRange->getColumns();
+ if (xTableColumns.is())
+ {
+ sal_Int32 nColumns = pDoc->GetLastFlaggedCol(nTable);
+ SetLastColumn(nTable, nColumns);
+ table::CellRangeAddress aCellAddress = GetEndAddress(xTable, nTable);
+ if (aCellAddress.EndColumn > nColumns)
+ {
+ nColumns++;
+ aColumnStyles.AddNewTable(nTable, aCellAddress.EndColumn);
+ }
+ else
+ aColumnStyles.AddNewTable(nTable, nColumns);
+ for (sal_Int32 nColumn = 0; nColumn <= nColumns; nColumn++)
+ {
+ uno::Any aColumn = xTableColumns->getByIndex(nColumn);
+ uno::Reference<table::XCellRange> xTableColumn;
+ if (aColumn >>= xTableColumn)
+ {
+ uno::Reference <beans::XPropertySet> xColumnProperties(xTableColumn, uno::UNO_QUERY);
+ if (xColumnProperties.is())
+ {
+ std::vector<XMLPropertyState> xPropStates = pColumnStylesPropertySetMapper->Filter(xColumnProperties);
+ if(xPropStates.size())
+ {
+ sal_Int32 nIndex;
+ rtl::OUString sParent;
+ rtl::OUString sName = GetAutoStylePool()->Find(XML_STYLE_FAMILY_TABLE_COLUMN, sParent, xPropStates);
+ if (!sName.len())
+ {
+ sName = GetAutoStylePool()->Add(XML_STYLE_FAMILY_TABLE_COLUMN, sParent, xPropStates);
+ rtl::OUString* pTemp = new rtl::OUString(sName);
+ nIndex = aColumnStyles.AddStyleName(pTemp);
+ }
+ else
+ nIndex = aColumnStyles.GetIndexOfStyleName(sName, SC_SCOLUMNPREFIX);
+ aColumnStyles.AddFieldStyleName(nTable, nColumn, nIndex);
+ }
+ }
+ }
+ }
+ if (aCellAddress.EndColumn > nColumns)
+ {
+ sal_Int32 nIndex = aColumnStyles.GetStyleNameIndex(nTable, nColumns);
+ for (sal_Int32 i = nColumns + 1; i <= aCellAddress.EndColumn; i++)
+ aColumnStyles.AddFieldStyleName(nTable, i, nIndex);
+ }
+ }
+ uno::Reference<table::XTableRows> xTableRows = xColumnRowRange->getRows();
+ if (xTableRows.is())
+ {
+ sal_Int32 nRows = pDoc->GetLastFlaggedRow(nTable);
+ SetLastRow(nTable, nRows);
+ table::CellRangeAddress aCellAddress = GetEndAddress(xTable, nTable);
+ if (aCellAddress.EndRow > nRows)
+ {
+ nRows++;
+ aRowStyles.AddNewTable(nTable, aCellAddress.EndRow);
+ }
+ else
+ aRowStyles.AddNewTable(nTable, nRows);
+ for (sal_Int32 nRow = 0; nRow <= nRows; nRow++)
+ {
+ uno::Any aRow = xTableRows->getByIndex(nRow);
+ uno::Reference<table::XCellRange> xTableRow;
+ if (aRow >>= xTableRow)
+ {
+ uno::Reference <beans::XPropertySet> xRowProperties(xTableRow, uno::UNO_QUERY);
+ if(xRowProperties.is())
+ {
+ std::vector<XMLPropertyState> xPropStates = pRowStylesPropertySetMapper->Filter(xRowProperties);
+ if(xPropStates.size())
+ {
+ sal_Int32 nIndex;
+ rtl::OUString sParent;
+ rtl::OUString sName = GetAutoStylePool()->Find(XML_STYLE_FAMILY_TABLE_ROW, sParent, xPropStates);
+ if (!sName.len())
+ {
+ sName = GetAutoStylePool()->Add(XML_STYLE_FAMILY_TABLE_ROW, sParent, xPropStates);
+ rtl::OUString* pTemp = new rtl::OUString(sName);
+ nIndex = aRowStyles.AddStyleName(pTemp);
+ }
+ else
+ nIndex = aRowStyles.GetIndexOfStyleName(sName, SC_SROWPREFIX);
+ aRowStyles.AddFieldStyleName(nTable, nRow, nIndex);
+ }
+ }
+ }
+ }
+ if (aCellAddress.EndRow > nRows)
+ {
+ sal_Int32 nIndex = aRowStyles.GetStyleNameIndex(nTable, nRows);
+ for (sal_Int32 i = nRows + 1; i <= aCellAddress.EndRow; i++)
+ aRowStyles.AddFieldStyleName(nTable, i, nIndex);
+ }
+ }
+ }
+ }
+ if (xCellRangesQuery.is())
+ {
+ uno::Reference<sheet::XSheetCellRanges> xSheetCellRanges = xCellRangesQuery->queryContentCells(sheet::CellFlags::STRING);
+ if (xSheetCellRanges.is())
+ {
+ uno::Reference<container::XEnumerationAccess> xCellsAccess = xSheetCellRanges->getCells();
+ if (xCellsAccess.is())
+ {
+ uno::Reference<container::XEnumeration> xCells = xCellsAccess->createEnumeration();
+ if (xCells.is())
+ {
+ while (xCells->hasMoreElements())
+ {
+ uno::Any aCell = xCells->nextElement();
+ uno::Reference<table::XCell> xCell;
+ if (aCell >>= xCell)
+ {
+ if (IsEditCell(xCell))
+ {
+ uno::Reference<text::XText> xText(xCell, uno::UNO_QUERY);
+ if (xText.is())
+ {
+ GetTextParagraphExport()->collectTextAutoStyles(xText);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ const UniReference< XMLPropertySetMapper > aColumnStylesMapperRef = pColumnStylesPropertySetMapper;
+ ScXMLExportPropertyMapper* aColumnStylesExpPropMapper = new ScXMLExportPropertyMapper(aColumnStylesMapperRef);
+ GetAutoStylePool()->exportXML(XML_STYLE_FAMILY_TABLE_COLUMN,
+ *aColumnStylesExpPropMapper, GetDocHandler(), GetMM100UnitConverter(),
+ GetNamespaceMap());
+ const UniReference< XMLPropertySetMapper > aRowStylesMapperRef = pRowStylesPropertySetMapper;
+ ScXMLExportPropertyMapper* aRowStylesExpPropMapper = new ScXMLExportPropertyMapper(aRowStylesMapperRef);
+ GetAutoStylePool()->exportXML(XML_STYLE_FAMILY_TABLE_ROW,
+ *aRowStylesExpPropMapper, GetDocHandler(), GetMM100UnitConverter(),
+ GetNamespaceMap());
+ const UniReference< XMLPropertySetMapper > aTableStylesMapperRef = pTableStylesPropertySetMapper;
+ ScXMLExportPropertyMapper* aTableStylesExpPropMapper = new ScXMLExportPropertyMapper(aTableStylesMapperRef);
+ GetAutoStylePool()->exportXML(XML_STYLE_FAMILY_TABLE_TABLE,
+ *aTableStylesExpPropMapper, GetDocHandler(), GetMM100UnitConverter(),
+ GetNamespaceMap());
+ exportAutoDataStyles();
+ const UniReference< XMLPropertySetMapper > aCellStylesMapperRef = pCellStylesPropertySetMapper;
+ ScXMLExportPropertyMapper* aCellStylesExpPropMapper = new ScXMLExportPropertyMapper(aCellStylesMapperRef);
+ GetAutoStylePool()->exportXML(XML_STYLE_FAMILY_TABLE_CELL,
+ *aCellStylesExpPropMapper, GetDocHandler(), GetMM100UnitConverter(),
+ GetNamespaceMap());
+ GetTextParagraphExport()->exportTextAutoStyles();
+ GetShapeExport()->exportAutoStyles();
+ GetChartExport()->exportAutoStyles();
+ }
+ }
+}
+
+void ScXMLExport::_ExportMasterStyles()
+{
+}
+
+sal_Bool ScXMLExport::IsMerged (const uno::Reference <table::XCellRange>& xCellRange, const sal_Int32 nCol, const sal_Int32 nRow,
+ table::CellRangeAddress& aCellAddress) const
+{
+ uno::Reference <table::XCellRange> xMergeCellRange = xCellRange->getCellRangeByPosition(nCol,nRow,nCol,nRow);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ if (xMergeable->getIsMerged())
+ {
+ uno::Reference<sheet::XSheetCellRange> xMergeSheetCellRange (xMergeCellRange, uno::UNO_QUERY);
+ uno::Reference<sheet::XSpreadsheet> xTable = xMergeSheetCellRange->getSpreadsheet();
+ uno::Reference<sheet::XSheetCellCursor> xMergeSheetCursor = xTable->createCursorByRange(xMergeSheetCellRange);
+ if (xMergeSheetCursor.is())
+ {
+ xMergeSheetCursor->collapseToMergedArea();
+ uno::Reference<sheet::XCellRangeAddressable> xMergeCellAddress (xMergeSheetCursor, uno::UNO_QUERY);
+ if (xMergeCellAddress.is())
+ {
+ aCellAddress = xMergeCellAddress->getRangeAddress();
+ return sal_True;
+ }
+ }
+ }
+ return sal_False;
+}
+
+sal_Bool ScXMLExport::IsMatrix (const uno::Reference <table::XCellRange>& xCellRange,
+ const uno::Reference <sheet::XSpreadsheet>& xTable,
+ const sal_Int32 nCol, const sal_Int32 nRow,
+ table::CellRangeAddress& aCellAddress, sal_Bool& bIsFirst) const
+{
+ bIsFirst = sal_False;
+ uno::Reference <table::XCellRange> xMatrixCellRange = xCellRange->getCellRangeByPosition(nCol,nRow,nCol,nRow);
+ if (xMatrixCellRange.is())
+ {
+ uno::Reference<sheet::XSheetCellRange> xMatrixSheetCellRange (xMatrixCellRange, uno::UNO_QUERY);
+ if (xMatrixSheetCellRange.is())
+ {
+ uno::Reference<sheet::XSheetCellCursor> xMatrixSheetCursor = xTable->createCursorByRange(xMatrixSheetCellRange);
+ if (xMatrixSheetCursor.is())
+ {
+ xMatrixSheetCursor->collapseToCurrentArray();
+ uno::Reference<sheet::XCellRangeAddressable> xMatrixCellAddress (xMatrixSheetCursor, uno::UNO_QUERY);
+ if (xMatrixCellAddress.is())
+ {
+ aCellAddress = xMatrixCellAddress->getRangeAddress();
+ if ((aCellAddress.StartColumn == nCol && aCellAddress.StartRow == nRow) &&
+ (aCellAddress.EndColumn > nCol || aCellAddress.EndRow > nRow))
+ {
+ bIsFirst = sal_True;
+ return sal_True;
+ }
+ else if (aCellAddress.StartColumn != nCol || aCellAddress.StartRow != nRow ||
+ aCellAddress.EndColumn != nCol || aCellAddress.EndRow != nRow)
+ return sal_True;
+ }
+ }
+ }
+ }
+ return sal_False;
+}
+
+/*sal_Bool ScXMLExport::GetCell (const uno::Reference <table::XCellRange>& xCellRange,
+ const sal_Int32 nCol, const sal_Int32 nRow, uno::Reference <table::XCell>& xTempCell) const
+{
+ xTempCell = xCellRange->getCellByPosition(nCol, nRow);
+ return xTempCell.is();
+}*/
+
+sal_Bool ScXMLExport::GetCellText (const com::sun::star::uno::Reference <com::sun::star::table::XCell>& xCell,
+ rtl::OUString& sOUTemp) const
+{
+ uno::Reference <text::XText> xText (xCell, uno::UNO_QUERY);
+ if (xText.is())
+ {
+ sOUTemp = xText->getString();
+ return sal_True;
+ }
+ return sal_False;
+}
+
+sal_Int16 ScXMLExport::GetCellType(const sal_Int32 nNumberFormat, sal_Bool& bIsStandard)
+{
+ uno::Reference <util::XNumberFormatsSupplier> xNumberFormatsSupplier = GetNumberFormatsSupplier();
+ if (xNumberFormatsSupplier.is())
+ {
+ uno::Reference <util::XNumberFormats> xNumberFormats = xNumberFormatsSupplier->getNumberFormats();
+ if (xNumberFormats.is())
+ {
+ uno::Reference <beans::XPropertySet> xNumberPropertySet = xNumberFormats->getByKey(nNumberFormat);
+ uno::Any aIsStandardFormat = xNumberPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_STANDARDFORMAT)));
+ aIsStandardFormat >>= bIsStandard;
+ uno::Any aNumberFormat = xNumberPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_TYPE)));
+ sal_Int16 nNumberFormat;
+ if ( aNumberFormat >>= nNumberFormat )
+ {
+ return nNumberFormat;
+ }
+ }
+ }
+ return 0;
+}
+
+sal_Int32 ScXMLExport::GetCellNumberFormat(const com::sun::star::uno::Reference <com::sun::star::table::XCell>& xCell) const
+{
+/* uno::Reference <util::XNumberFormatsSupplier> xNumberFormatsSupplier = GetNumberFormatsSupplier();
+ if (xNumberFormatsSupplier.is())
+ {
+ uno::Reference <util::XNumberFormats> xNumberFormats = xNumberFormatsSupplier->getNumberFormats();
+ if (xNumberFormats.is())
+ {*/
+ uno::Reference <beans::XPropertySet> xPropertySet (xCell, uno::UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ uno::Any aNumberFormatPropertyKey = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT)));
+ sal_Int32 nNumberFormatPropertyKey;
+ if ( aNumberFormatPropertyKey>>=nNumberFormatPropertyKey )
+ {
+ return nNumberFormatPropertyKey;
+ }
+ }
+/* }
+ }*/
+ return 0;
+}
+
+sal_Bool ScXMLExport::GetCellStyleNameIndex(const ScMyCell& aCell, sal_Int32& nStyleNameIndex, sal_Bool& bIsAutoStyle)
+{
+// uno::Reference <beans::XPropertySet> xProperties (xCell, uno::UNO_QUERY);
+// if (xProperties.is())
+// {
+// uno::Any aStyle = xProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_CELLSTYLE)));
+// rtl::OUString sStyleName;
+// if (aStyle >>= sStyleName)
+// {
+ //std::vector< XMLPropertyState > xPropStates = pCellStylesPropertySetMapper->Filter( xProperties );
+ //rtl::OUString sName = GetAutoStylePool()->Find(XML_STYLE_FAMILY_TABLE_CELL, sStyleName, xPropStates);
+ sal_Int32 nIndex = aCellStyles.GetStyleNameIndex(aCell.aCellAddress.Sheet, aCell.aCellAddress.Column, aCell.aCellAddress.Row, bIsAutoStyle);
+ if (nIndex > -1)
+ {
+ nStyleNameIndex = nIndex;
+ return sal_True;
+ }
+ /*else
+ {
+ rtl::OUString* pTemp = new rtl::OUString(sStyleName);
+ nStyleNameIndex = aCellStyles.AddStyleName(pTemp, sal_False);
+ return sal_True;
+ }*/
+// }
+// }
+ return sal_False;
+}
+
+void ScXMLExport::WriteCell (const ScMyCell& aCell)
+{
+ sal_Int32 nIndex;
+ sal_Bool bIsAutoStyle;
+ if (GetCellStyleNameIndex(aCell, nIndex, bIsAutoStyle))
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_style_name, *aCellStyles.GetStyleNameByIndex(nIndex, bIsAutoStyle));
+ sal_Bool bIsMatrix(aCell.bIsMatrixBase || aCell.bIsMatrixCovered);
+ sal_Bool bIsFirstMatrixCell(aCell.bIsMatrixBase);
+ if (bIsFirstMatrixCell)
+ {
+ sal_Int32 nColumns = aCell.aMatrixRange.EndColumn - aCell.aMatrixRange.StartColumn + 1;
+ sal_Int32 nRows = aCell.aMatrixRange.EndRow - aCell.aMatrixRange.StartRow + 1;
+ rtl::OUStringBuffer sColumns;
+ rtl::OUStringBuffer sRows;
+ SvXMLUnitConverter::convertNumber(sColumns, nColumns);
+ SvXMLUnitConverter::convertNumber(sRows, nRows);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_matrix_columns_spanned, sColumns.makeStringAndClear());
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_matrix_rows_spanned, sRows.makeStringAndClear());
+ }
+ table::CellContentType xCellType = aCell.xCell->getType();
+ sal_Bool bIsEmpty = sal_False;
+ switch (xCellType)
+ {
+ case table::CellContentType_EMPTY :
+ {
+ bIsEmpty = sal_True;
+ }
+ break;
+ case table::CellContentType_VALUE :
+ {
+ XMLNumberFormatAttributesExportHelper::SetNumberFormatAttributes(
+ *this, GetCellNumberFormat(aCell.xCell), aCell.xCell->getValue(), XML_NAMESPACE_TABLE);
+ }
+ break;
+ case table::CellContentType_TEXT :
+ {
+ rtl::OUString sValue;
+ if (GetCellText(aCell.xCell, sValue))
+ XMLNumberFormatAttributesExportHelper::SetNumberFormatAttributes(
+ *this, aCell.xCell->getFormula(), sValue, XML_NAMESPACE_TABLE);
+ }
+ break;
+ case table::CellContentType_FORMULA :
+ {
+ String sFormula;
+ ScCellObj* pCellObj = (ScCellObj*) ScCellRangesBase::getImplementation( aCell.xCell );
+ if ( pCellObj )
+ {
+ ScBaseCell* pBaseCell = pCellObj->GetDocument()->GetCell(pCellObj->GetPosition());
+ ScFormulaCell* pFormulaCell = (ScFormulaCell*) pBaseCell;
+ if (pBaseCell && pBaseCell->GetCellType() == CELLTYPE_FORMULA)
+ {
+ if (!bIsMatrix || (bIsMatrix && bIsFirstMatrixCell))
+ {
+ pFormulaCell->GetEnglishFormula(sFormula, sal_True);
+ rtl::OUString sOUFormula(sFormula);
+ if (!bIsMatrix)
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_formula, sOUFormula);
+ else
+ {
+ rtl::OUString sMatrixFormula = sOUFormula.copy(1, sOUFormula.getLength() - 2);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_formula, sMatrixFormula);
+ }
+ }
+ if (pFormulaCell->IsValue())
+ {
+ sal_Bool bIsStandard = sal_True;
+ GetCellType(GetCellNumberFormat(aCell.xCell), bIsStandard);
+ if (bIsStandard)
+ {
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( xModel, uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ if (pDoc)
+ {
+ pFormulaCell->GetStandardFormat(*pDoc->GetFormatTable(), 0);
+ XMLNumberFormatAttributesExportHelper::SetNumberFormatAttributes(
+ *this, pFormulaCell->GetStandardFormat(*pDoc->GetFormatTable(), 0),
+ aCell.xCell->getValue(), XML_NAMESPACE_TABLE);
+ }
+ }
+ }
+ else
+ XMLNumberFormatAttributesExportHelper::SetNumberFormatAttributes(*this,
+ GetCellNumberFormat(aCell.xCell), aCell.xCell->getValue(), XML_NAMESPACE_TABLE);
+ }
+ else
+ {
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_value_type, sXML_string);
+ rtl::OUString sValue;
+ if (GetCellText(aCell.xCell, sValue))
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_string_value, sValue);
+ }
+ }
+ }
+ }
+ break;
+ }
+ if (aCell.bIsCovered)
+ {
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, sXML_covered_table_cell, sal_True, sal_True);
+ CheckAttrList();
+ if (aCell.bHasAnnotation)
+ WriteAnnotation(aCell.xCell);
+ {
+ if (!bIsEmpty)
+ {
+ if (IsEditCell(aCell.xCell))
+ {
+ uno::Reference<text::XText> xText(aCell.xCell, uno::UNO_QUERY);
+ if ( xText.is())
+ GetTextParagraphExport()->exportText(xText);
+ }
+ else
+ {
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TEXT, sXML_p, sal_True, sal_False);
+ OUString sOUText;
+ if (GetCellText(aCell.xCell, sOUText))
+ GetDocHandler()->characters(sOUText);
+ }
+ }
+ }
+ if (aCell.bHasShape)
+ WriteShapes(aCell.xCell, aCell);
+ }
+ else
+ {
+ if (aCell.bIsMergedBase)
+ {
+ sal_Int32 nColumns = aCell.aMergeRange.EndColumn - aCell.aMergeRange.StartColumn + 1;
+ sal_Int32 nRows = aCell.aMergeRange.EndRow - aCell.aMergeRange.StartRow + 1;
+ rtl::OUStringBuffer sColumns;
+ rtl::OUStringBuffer sRows;
+ SvXMLUnitConverter::convertNumber(sColumns, nColumns);
+ SvXMLUnitConverter::convertNumber(sRows, nRows);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_columns_spanned, sColumns.makeStringAndClear());
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_rows_spanned, sRows.makeStringAndClear());
+ }
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, sXML_table_cell, sal_True, sal_True);
+ CheckAttrList();
+ if (aCell.bHasAnnotation)
+ WriteAnnotation(aCell.xCell);
+ {
+ if (!bIsEmpty)
+ {
+ if (IsEditCell(aCell.xCell))
+ {
+ uno::Reference<text::XText> xText(aCell.xCell, uno::UNO_QUERY);
+ OUString sOUText = xText->getString();
+ if ( xText.is())
+ GetTextParagraphExport()->exportText(xText);
+ }
+ else
+ {
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TEXT, sXML_p, sal_True, sal_False);
+ rtl::OUString sOUText;
+ if (GetCellText(aCell.xCell, sOUText))
+ GetDocHandler()->characters(sOUText);
+ }
+ }
+ }
+ if (aCell.bHasShape)
+ WriteShapes(aCell.xCell, aCell);
+ }
+}
+
+void ScXMLExport::WriteShapes(const uno::Reference<table::XCell>& xCell, const ScMyCell& aCell)
+{
+ if (xCurrentShapes.is())
+ {
+ sal_Int32 nIndex = aCell.aShape.nIndex;
+ if (nIndex > -1)
+ {
+ if (pDoc)
+ {
+ ScMyShape aShape = aCell.aShape;
+ awt::Point aPoint;
+ Rectangle aRec = pDoc->GetMMRect(aCell.aCellAddress.Column, aCell.aCellAddress.Row,
+ aCell.aCellAddress.Column, aCell.aCellAddress.Row, aCell.aCellAddress.Sheet);
+ aPoint.X = aRec.Left();
+ aPoint.Y = aRec.Top();
+ awt::Point* pPoint = &aPoint;
+ while ((nIndex > -1) &&
+ (aShape.aAddress.Col() == aCell.aCellAddress.Column) &&
+ (aShape.aAddress.Row() == aCell.aCellAddress.Row) &&
+ (aShape.aAddress.Tab() == aCell.aCellAddress.Sheet))
+ {
+ uno::Any aAny = xCurrentShapes->getByIndex(nIndex);
+ uno::Reference<drawing::XShape> xShape;
+ if (aAny >>= xShape)
+ GetShapeExport()->exportShape(xShape/*, pPoint*/);
+ if (aShapesContainer.GetNextShape(aCell.aCellAddress.Sheet, aShape))
+ nIndex = aShape.nIndex;
+ else
+ nIndex = -1;
+ }
+ if (nIndex > -1)
+ pCellsItr->SetCurrentShape(aShape);
+ else
+ pCellsItr->SetHasShape(sal_False);
+ }
+ }
+ }
+}
+
+void ScXMLExport::WriteAnnotation(const uno::Reference<table::XCell>& xCell)
+{
+ uno::Reference<sheet::XSheetAnnotationAnchor> xSheetAnnotationAnchor(xCell, uno::UNO_QUERY);
+ if (xSheetAnnotationAnchor.is())
+ {
+ uno::Reference <sheet::XSheetAnnotation> xSheetAnnotation = xSheetAnnotationAnchor->getAnnotation();
+ uno::Reference<text::XSimpleText> xSimpleText(xSheetAnnotation, uno::UNO_QUERY);
+ if (xSheetAnnotation.is() && xSimpleText.is())
+ {
+ rtl::OUString sText = xSimpleText->getString();
+ if (sText.getLength())
+ {
+ AddAttribute(XML_NAMESPACE_OFFICE, sXML_author, xSheetAnnotation->getAuthor());
+ String aDate(xSheetAnnotation->getDate());
+ if (pDoc)
+ {
+ SvNumberFormatter* pNumForm = pDoc->GetFormatTable();
+ double fDate;
+ sal_uInt32 nfIndex = pNumForm->GetFormatIndex(NF_DATE_SYS_DDMMYYYY, LANGUAGE_SYSTEM);
+ if (pNumForm->IsNumberFormat(aDate, nfIndex, fDate))
+ {
+ rtl::OUStringBuffer sBuf;
+ GetMM100UnitConverter().convertDateTime(sBuf, fDate);
+ AddAttribute(XML_NAMESPACE_OFFICE, sXML_create_date, sBuf.makeStringAndClear());
+ }
+ }
+ if (!xSheetAnnotation->getIsVisible())
+ AddAttributeASCII(XML_NAMESPACE_OFFICE, sXML_display, sXML_false);
+ SvXMLElementExport aElemA(*this, XML_NAMESPACE_OFFICE, sXML_annotation, sal_True, sal_False);
+ GetDocHandler()->characters(sText);
+ }
+ }
+ CheckAttrList();
+ }
+}
+
+void ScXMLExport::SetRepeatAttribute (const sal_Int32 nEqualCellCount)
+{
+ if (nEqualCellCount > 0)
+ {
+ sal_Int32 nTemp = nEqualCellCount + 1;
+ OUString sOUEqualCellCount = OUString::valueOf(nTemp);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_number_columns_repeated, sOUEqualCellCount);
+ }
+}
+
+sal_Bool ScXMLExport::IsCellTypeEqual (const com::sun::star::uno::Reference <com::sun::star::table::XCell>& xCell1,
+ const com::sun::star::uno::Reference <com::sun::star::table::XCell>& xCell2) const
+{
+ return (xCell1->getType() == xCell2->getType());
+}
+
+sal_Bool ScXMLExport::IsEditCell(const com::sun::star::uno::Reference <com::sun::star::table::XCell>& xCell) const
+{
+ ScCellObj* pCellObj = (ScCellObj*) ScCellRangesBase::getImplementation( xCell );
+ if ( pCellObj )
+ {
+ ScBaseCell* pBaseCell = pCellObj->GetDocument()->GetCell(pCellObj->GetPosition());
+ if (pBaseCell)
+ {
+ if (pBaseCell->GetCellType() == CELLTYPE_EDIT)
+ return sal_True;
+ else
+ return sal_False;
+ }
+ }
+ return sal_True;
+}
+
+sal_Bool ScXMLExport::IsAnnotationEqual(const uno::Reference<table::XCell>& xCell1,
+ const uno::Reference<table::XCell>& xCell2)
+{
+ uno::Reference<sheet::XSheetAnnotationAnchor> xSheetAnnotationAnchor1(xCell1, uno::UNO_QUERY);
+ uno::Reference<sheet::XSheetAnnotationAnchor> xSheetAnnotationAnchor2(xCell2, uno::UNO_QUERY);
+ if (xSheetAnnotationAnchor1.is() && xSheetAnnotationAnchor2.is())
+ {
+ uno::Reference <sheet::XSheetAnnotation> xSheetAnnotation1 = xSheetAnnotationAnchor1->getAnnotation();
+ uno::Reference <sheet::XSheetAnnotation> xSheetAnnotation2 = xSheetAnnotationAnchor2->getAnnotation();
+ uno::Reference<text::XSimpleText> xSimpleText1(xSheetAnnotation1, uno::UNO_QUERY);
+ uno::Reference<text::XSimpleText> xSimpleText2(xSheetAnnotation2, uno::UNO_QUERY);
+ if (xSheetAnnotation1.is() && xSimpleText1.is() &&
+ xSheetAnnotation2.is() && xSimpleText2.is())
+ {
+ rtl::OUString sText1 = xSimpleText1->getString();
+ rtl::OUString sText2 = xSimpleText2->getString();
+ sal_Int32 nLength1 = sText1.getLength();
+ sal_Int32 nLength2 = sText2.getLength();
+ if (nLength1 && nLength2)
+ if (sText1 == sText2 &&
+ xSheetAnnotation1->getAuthor() == xSheetAnnotation2->getAuthor() &&
+ xSheetAnnotation1->getDate() == xSheetAnnotation2->getDate() &&
+ xSheetAnnotation1->getIsVisible() == xSheetAnnotation2->getIsVisible())
+ return sal_True;
+ else
+ return sal_False;
+ else
+ if (nLength1 || nLength2)
+ return sal_False;
+ else
+ return sal_True;
+ }
+ }
+ return sal_False;
+}
+
+sal_Bool ScXMLExport::IsCellEqual (const ScMyCell& aCell1, const ScMyCell& aCell2)
+{
+ sal_Bool bIsEqual = sal_False;
+ if( !aCell1.bIsMergedBase && !aCell2.bIsMergedBase &&
+ aCell1.bIsCovered == aCell2.bIsCovered &&
+ !aCell1.bIsMatrixBase && !aCell2.bIsMatrixBase &&
+ aCell1.bIsMatrixCovered == aCell2.bIsMatrixCovered &&
+ aCell1.bHasAnnotation == aCell2.bHasAnnotation &&
+ !aCell1.bHasShape && !aCell2.bHasShape)
+ {
+ if (!aCell1.bHasAnnotation || (aCell1.bHasAnnotation && IsAnnotationEqual(aCell1.xCell, aCell2.xCell)))
+ {
+ sal_Int32 nIndex1, nIndex2;
+ sal_Bool bIsAutoStyle1, bIsAutoStyle2;
+ if (GetCellStyleNameIndex(aCell1, nIndex1, bIsAutoStyle1) &&
+ GetCellStyleNameIndex(aCell2, nIndex2, bIsAutoStyle2))
+ {
+ if ((nIndex1 == nIndex2) && (bIsAutoStyle1 == bIsAutoStyle2) &&
+ IsCellTypeEqual(aCell1.xCell, aCell2.xCell))
+ {
+ table::CellContentType eCellType = aCell1.xCell->getType();
+ switch ( eCellType )
+ {
+ case table::CellContentType_EMPTY :
+ {
+ bIsEqual = sal_True;
+ }
+ break;
+ case table::CellContentType_VALUE :
+ {
+ double fCell1 = aCell1.xCell->getValue();
+ double fCell2 = aCell2.xCell->getValue();
+ bIsEqual = (fCell1 == fCell2);
+ }
+ break;
+ case table::CellContentType_TEXT :
+ {
+ if (IsEditCell(aCell1.xCell) || IsEditCell(aCell2.xCell))
+ bIsEqual = sal_False;
+ else
+ {
+ OUString sOUCell1, sOUCell2;
+ if (GetCellText(aCell1.xCell, sOUCell1) && GetCellText(aCell2.xCell, sOUCell2))
+ {
+ bIsEqual = (sOUCell1 == sOUCell2);
+ }
+ else
+ bIsEqual = sal_False;
+ }
+ }
+ break;
+ case table::CellContentType_FORMULA :
+ {
+ bIsEqual = sal_False;
+ }
+ break;
+ default :
+ {
+ bIsEqual = sal_False;
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ return bIsEqual;
+}
+
+void ScXMLExport::GetStringFromRange(const ScRange& aRange, rtl::OUString& rString) const
+{
+ ScAddress aStartAddress(aRange.aStart.Col(), aRange.aStart.Row(), aRange.aStart.Tab());
+ ScAddress aEndAddress(aRange.aEnd.Col(), aRange.aEnd.Row(), aRange.aEnd.Tab());
+ String sStartAddress;
+ String sEndAddress;
+ aStartAddress.Format(sStartAddress, SCA_VALID | SCA_TAB_3D, pDoc);
+ aEndAddress.Format(sEndAddress, SCA_VALID | SCA_TAB_3D, pDoc);
+ rtl::OUString sOUStartAddress(sStartAddress);
+ sOUStartAddress += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(":"));
+ rtl::OUString sOUEndAddress(sEndAddress);
+ sOUStartAddress += sOUEndAddress;
+ rString = sOUStartAddress;
+}
+
+void ScXMLExport::GetStringFromRange(const table::CellRangeAddress& aRange, rtl::OUString& rString) const
+{
+ ScAddress aStartAddress(aRange.StartColumn, aRange.StartRow, aRange.Sheet);
+ ScAddress aEndAddress(aRange.EndColumn, aRange.EndRow, aRange.Sheet);
+ String sStartAddress;
+ String sEndAddress;
+ aStartAddress.Format(sStartAddress, SCA_VALID | SCA_TAB_3D, pDoc);
+ aEndAddress.Format(sEndAddress, SCA_VALID | SCA_TAB_3D, pDoc);
+ rtl::OUString sOUStartAddress(sStartAddress);
+ sOUStartAddress += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(":"));
+ rtl::OUString sOUEndAddress(sEndAddress);
+ sOUStartAddress += sOUEndAddress;
+ rString = sOUStartAddress;
+}
+
+void ScXMLExport::GetStringOfFunction(const sal_Int32 nFunction, rtl::OUString& rString) const
+{
+ switch (nFunction)
+ {
+ case sheet::GeneralFunction_AUTO : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("auto")); break;
+ case sheet::GeneralFunction_AVERAGE : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("average")); break;
+ case sheet::GeneralFunction_COUNT : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("count")); break;
+ case sheet::GeneralFunction_COUNTNUMS : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("countnums")); break;
+ case sheet::GeneralFunction_MAX : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("max")); break;
+ case sheet::GeneralFunction_MIN : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("min")); break;
+ case sheet::GeneralFunction_NONE : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("none")); break;
+ case sheet::GeneralFunction_PRODUCT : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("product")); break;
+ case sheet::GeneralFunction_STDEV : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("stdev")); break;
+ case sheet::GeneralFunction_STDEVP : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("stdevp")); break;
+ case sheet::GeneralFunction_SUM : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sum")); break;
+ case sheet::GeneralFunction_VAR : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("var")); break;
+ case sheet::GeneralFunction_VARP : rString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("varp")); break;
+ }
+}
+
+void ScXMLExport::WriteNamedExpressions(const com::sun::star::uno::Reference <com::sun::star::sheet::XSpreadsheetDocument>& xSpreadDoc)
+{
+ uno::Reference <beans::XPropertySet> xPropertySet (xSpreadDoc, uno::UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ uno::Any aNamedRanges = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NAMEDRANGES)));
+ uno::Reference <sheet::XNamedRanges> xNamedRanges;
+ CheckAttrList();
+ if (aNamedRanges >>= xNamedRanges)
+ {
+ uno::Sequence <rtl::OUString> aRangesNames = xNamedRanges->getElementNames();
+ sal_Int32 nNamedRangesCount = aRangesNames.getLength();
+ if (nNamedRangesCount > 0)
+ {
+ if (pDoc)
+ {
+ ScRangeName* pNamedRanges = pDoc->GetRangeName();
+ SvXMLElementExport aElemNEs(*this, XML_NAMESPACE_TABLE, sXML_named_expressions, sal_True, sal_True);
+ for (sal_Int32 i = 0; i < nNamedRangesCount; i++)
+ {
+ CheckAttrList();
+ rtl::OUString sNamedRange = aRangesNames[i];
+ uno::Any aNamedRange = xNamedRanges->getByName(sNamedRange);
+ uno::Reference <sheet::XNamedRange> xNamedRange;
+ if (aNamedRange >>= xNamedRange)
+ {
+ uno::Reference <container::XNamed> xNamed (xNamedRange, uno::UNO_QUERY);
+ uno::Reference <sheet::XCellRangeReferrer> xCellRangeReferrer (xNamedRange, uno::UNO_QUERY);
+ if (xNamed.is() && xCellRangeReferrer.is())
+ {
+ rtl::OUString sOUName = xNamed->getName();
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_name, sOUName);
+ sal_uInt16 nRangeIndex;
+ String sName(sOUName);
+ pNamedRanges->SearchName(sName, nRangeIndex);
+ ScRangeData* pNamedRange = (*pNamedRanges)[nRangeIndex]; //should get directly and not with ScDocument
+ String sContent(xNamedRange->getContent());
+ pNamedRange->GetEnglishSymbol(sContent, sal_True);
+ rtl::OUString sOUTempContent(sContent);
+ uno::Reference <table::XCellRange> xCellRange = xCellRangeReferrer->getReferredCells();
+ table::CellAddress aCellAddress = xNamedRange->getReferencePosition();
+ ScAddress aBaseCellAddress(aCellAddress.Column, aCellAddress.Row, aCellAddress.Sheet);
+ String sBaseCellAddress;
+ aBaseCellAddress.Format(sBaseCellAddress, SCA_ABS_3D, pDoc);
+ rtl::OUString sOUBaseCellAddress(sBaseCellAddress);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_base_cell_address, sOUBaseCellAddress);
+ if(xCellRange.is())
+ {
+ rtl::OUString sOUContent = sOUTempContent.copy(1, sOUTempContent.getLength() - 2);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_cell_range_address, sOUContent);
+ sal_Int32 nRangeType = xNamedRange->getType();
+ rtl::OUStringBuffer sBufferRangeType;
+ if (nRangeType & sheet::NamedRangeFlag::COLUMN_HEADER == sheet::NamedRangeFlag::COLUMN_HEADER)
+ sBufferRangeType.appendAscii(sXML_repeat_column);
+ if (nRangeType & sheet::NamedRangeFlag::ROW_HEADER == sheet::NamedRangeFlag::ROW_HEADER)
+ {
+ if (sBufferRangeType.getLength() > 0)
+ sBufferRangeType.appendAscii(" ");
+ sBufferRangeType.appendAscii(sXML_repeat_row);
+ }
+ if (nRangeType & sheet::NamedRangeFlag::FILTER_CRITERIA == sheet::NamedRangeFlag::FILTER_CRITERIA)
+ {
+ if (sBufferRangeType.getLength() > 0)
+ sBufferRangeType.appendAscii(" ");
+ sBufferRangeType.appendAscii(sXML_filter);
+ }
+ if (nRangeType & sheet::NamedRangeFlag::PRINT_AREA == sheet::NamedRangeFlag::PRINT_AREA)
+ {
+ if (sBufferRangeType.getLength() > 0)
+ sBufferRangeType.appendAscii(" ");
+ sBufferRangeType.appendAscii(sXML_print_range);
+ }
+ rtl::OUString sRangeType = sBufferRangeType.makeStringAndClear();
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_range_usable_as, sRangeType);
+ SvXMLElementExport aElemNR(*this, XML_NAMESPACE_TABLE, sXML_named_range, sal_True, sal_True);
+ }
+ else
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_expression, sOUTempContent);
+ SvXMLElementExport aElemNE(*this, XML_NAMESPACE_TABLE, sXML_named_expression, sal_True, sal_True);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+void ScXMLExport::WriteImportDescriptor(const uno::Sequence <beans::PropertyValue> aImportDescriptor)
+{
+ sal_Int32 nProperties = aImportDescriptor.getLength();
+ rtl::OUString sDatabaseName;
+ rtl::OUString sSourceObject;
+ sheet::DataImportMode nSourceType;
+ sal_Bool bNative;
+ for (sal_Int16 i = 0; i < nProperties; i++)
+ {
+ if (aImportDescriptor[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DATABASENAME)))
+ {
+ uno::Any aDatabaseName = aImportDescriptor[i].Value;
+ aDatabaseName >>= sDatabaseName;
+ }
+ else if (aImportDescriptor[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SOURCEOBJECT)))
+ {
+ uno::Any aSourceObject = aImportDescriptor[i].Value;
+ aSourceObject >>= sSourceObject;
+ }
+ else if (aImportDescriptor[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SOURCETYPE)))
+ {
+ uno::Any aSourceType = aImportDescriptor[i].Value;
+ aSourceType >>= nSourceType;
+ }
+ else if (aImportDescriptor[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NATIVE)))
+ {
+ uno::Any aNative = aImportDescriptor[i].Value;
+ aNative >>= bNative;
+ }
+ }
+ switch (nSourceType)
+ {
+ case sheet::DataImportMode_NONE : break;
+ case sheet::DataImportMode_QUERY :
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_database_name, sDatabaseName);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_query_name, sSourceObject);
+ SvXMLElementExport aElemID(*this, XML_NAMESPACE_TABLE, sXML_database_source_query, sal_True, sal_True);
+ CheckAttrList();
+ }
+ break;
+ case sheet::DataImportMode_TABLE :
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_database_name, sDatabaseName);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_table_name, sSourceObject);
+ SvXMLElementExport aElemID(*this, XML_NAMESPACE_TABLE, sXML_database_source_table, sal_True, sal_True);
+ CheckAttrList();
+ }
+ break;
+ case sheet::DataImportMode_SQL :
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_database_name, sDatabaseName);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_sql_statement, sSourceObject);
+ if (!bNative)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_parse_sql_statement, sXML_true);
+ SvXMLElementExport aElemID(*this, XML_NAMESPACE_TABLE, sXML_database_source_sql, sal_True, sal_True);
+ CheckAttrList();
+ }
+ break;
+ }
+}
+
+rtl::OUString ScXMLExport::getOperatorXML(const sheet::FilterOperator aFilterOperator, const sal_Bool bUseRegularExpressions) const
+{
+ if (bUseRegularExpressions)
+ {
+ switch (aFilterOperator)
+ {
+ case sheet::FilterOperator_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_match));
+ break;
+ case sheet::FilterOperator_NOT_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_nomatch));
+ break;
+ }
+ }
+ else
+ {
+ switch (aFilterOperator)
+ {
+ case sheet::FilterOperator_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("="));
+ break;
+ case sheet::FilterOperator_NOT_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("!="));
+ break;
+ case sheet::FilterOperator_BOTTOM_PERCENT :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_bottom_percent));
+ break;
+ case sheet::FilterOperator_BOTTOM_VALUES :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_bottom_values));
+ break;
+ case sheet::FilterOperator_EMPTY :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_empty));
+ break;
+ case sheet::FilterOperator_GREATER :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(">"));
+ break;
+ case sheet::FilterOperator_GREATER_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(">="));
+ break;
+ case sheet::FilterOperator_LESS :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("<"));
+ break;
+ case sheet::FilterOperator_LESS_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("<="));
+ break;
+ case sheet::FilterOperator_NOT_EMPTY :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_noempty));
+ break;
+ case sheet::FilterOperator_TOP_PERCENT :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_top_percent));
+ break;
+ case sheet::FilterOperator_TOP_VALUES :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_top_values));
+ break;
+ }
+ }
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("="));
+}
+
+void ScXMLExport::WriteCondition(const sheet::TableFilterField& aFilterField, sal_Bool bIsCaseSensitive, sal_Bool bUseRegularExpressions)
+{
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_field_number, rtl::OUString::valueOf(aFilterField.Field));
+ if (bIsCaseSensitive)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_case_sensitive, sXML_true);
+ if (aFilterField.IsNumeric)
+ {
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_data_type, sXML_number);
+ rtl::OUStringBuffer sBuffer;
+ GetMM100UnitConverter().convertNumber(sBuffer, aFilterField.NumericValue);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_value, sBuffer.makeStringAndClear());
+ }
+ else
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_value, aFilterField.StringValue);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_operator, getOperatorXML(aFilterField.Operator, bUseRegularExpressions));
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, sXML_filter_condition, sal_True, sal_True);
+}
+
+void ScXMLExport::WriteFilterDescriptor(const uno::Reference <sheet::XSheetFilterDescriptor>& xSheetFilterDescriptor, const rtl::OUString sDatabaseRangeName)
+{
+ uno::Sequence <sheet::TableFilterField> aTableFilterFields = xSheetFilterDescriptor->getFilterFields();
+ sal_Int32 nTableFilterFields = aTableFilterFields.getLength();
+ if (nTableFilterFields > 0)
+ {
+ uno::Reference <beans::XPropertySet> xPropertySet (xSheetFilterDescriptor, uno::UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ sal_Bool bCopyOutputData;
+ uno::Any aCopyOutputData = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_COPYOUTPUTDATA)));
+ if (aCopyOutputData >>= bCopyOutputData)
+ if (bCopyOutputData)
+ {
+ table::CellAddress aOutputPosition;
+ uno::Any aTempOutputPosition = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_OUTPUTPOSITION)));
+ if (aTempOutputPosition >>= aOutputPosition)
+ {
+ ScAddress aTempCellAddress(aOutputPosition.Column, aOutputPosition.Row, aOutputPosition.Sheet);
+ String sCellAddress;
+ aTempCellAddress.Format(sCellAddress, SCA_VALID | SCA_TAB_3D, pDoc);
+ rtl::OUString sOUCellAddress(sCellAddress);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_target_range_address, sOUCellAddress);
+ }
+ }
+ ScDBCollection* pDBCollection = pDoc->GetDBCollection();
+ sal_uInt16 nIndex;
+ pDBCollection->SearchName(sDatabaseRangeName, nIndex);
+ ScDBData* pDBData = (*pDBCollection)[nIndex];
+ ScRange aAdvSource;
+ if (pDBData->GetAdvancedQuerySource(aAdvSource))
+ {
+ rtl::OUString sOUCellAddress;
+ GetStringFromRange(aAdvSource, sOUCellAddress);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_target_range_address, sOUCellAddress);
+ }
+
+ sal_Bool bSkipDuplicates;
+ uno::Any aSkipDuplicates = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SKIPDUPLICATES)));
+ if (aSkipDuplicates >>= bSkipDuplicates)
+ if (bSkipDuplicates)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_display_duplicates, sXML_false);
+ SvXMLElementExport aElemF(*this, XML_NAMESPACE_TABLE, sXML_filter, sal_True, sal_True);
+ CheckAttrList();
+ sal_Bool bIsCaseSensitive = sal_False;
+ uno::Any aIsCaseSensitive = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ISCASESENSITIVE)));
+ aIsCaseSensitive >>= bIsCaseSensitive;
+ sal_Bool bUseRegularExpressions = sal_False;
+ uno::Any aUseRegularExpressions = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_USEREGULAREXPRESSIONS)));
+ aUseRegularExpressions >>= bUseRegularExpressions;
+ sal_Bool bAnd = sal_False;
+ sal_Bool bOr = sal_False;
+ for (sal_Int32 i = 1; i < nTableFilterFields; i++)
+ {
+ if (aTableFilterFields[i].Connection == sheet::FilterConnection_AND)
+ bAnd = sal_True;
+ else
+ bOr = sal_True;
+ }
+ if (bOr && !bAnd)
+ {
+ SvXMLElementExport aElemOr(*this, XML_NAMESPACE_TABLE, sXML_filter_or, sal_True, sal_True);
+ for (i = 0; i < nTableFilterFields; i++)
+ {
+ WriteCondition(aTableFilterFields[i], bIsCaseSensitive, bUseRegularExpressions);
+ }
+ }
+ else if (bAnd && !bOr)
+ {
+ SvXMLElementExport aElemAnd(*this, XML_NAMESPACE_TABLE, sXML_filter_and, sal_True, sal_True);
+ for (i = 0; i < nTableFilterFields; i++)
+ {
+ WriteCondition(aTableFilterFields[i], bIsCaseSensitive, bUseRegularExpressions);
+ }
+ }
+ else if (nTableFilterFields == 1)
+ {
+ WriteCondition(aTableFilterFields[0], bIsCaseSensitive, bUseRegularExpressions);
+ }
+ else
+ {
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, sXML_filter_or, sal_True, sal_True);
+ sheet::TableFilterField aPrevFilterField = aTableFilterFields[0];
+ sheet::FilterConnection aConnection = aTableFilterFields[1].Connection;
+ sal_Bool bOpenAndElement;
+ rtl::OUString aName = GetNamespaceMap().GetQNameByKey(XML_NAMESPACE_TABLE, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_filter_and)));
+ if (aConnection == sheet::FilterConnection_AND)
+ {
+ GetDocHandler()->ignorableWhitespace(sWS);
+ GetDocHandler()->startElement( aName, GetXAttrList());
+ ClearAttrList();
+ bOpenAndElement = sal_True;
+ }
+ else
+ bOpenAndElement = sal_False;
+ for (i = 1; i < nTableFilterFields; i++)
+ {
+ if (aConnection != aTableFilterFields[i].Connection)
+ {
+ aConnection = aTableFilterFields[i].Connection;
+ if (aTableFilterFields[i].Connection == sheet::FilterConnection_AND)
+ {
+ GetDocHandler()->ignorableWhitespace(sWS);
+ GetDocHandler()->startElement( aName, GetXAttrList());
+ ClearAttrList();
+ bOpenAndElement = sal_True;
+ WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions);
+ aPrevFilterField = aTableFilterFields[i];
+ if (i == nTableFilterFields - 1)
+ {
+ WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions);
+ GetDocHandler()->ignorableWhitespace(sWS);
+ GetDocHandler()->endElement(aName);
+ bOpenAndElement = sal_False;
+ }
+ }
+ else
+ {
+ WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions);
+ aPrevFilterField = aTableFilterFields[i];
+ if (bOpenAndElement)
+ {
+ GetDocHandler()->ignorableWhitespace(sWS);
+ GetDocHandler()->endElement(aName);
+ bOpenAndElement = sal_False;
+ }
+ if (i == nTableFilterFields - 1)
+ {
+ WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions);
+ }
+ }
+ }
+ else
+ {
+ WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions);
+ aPrevFilterField = aTableFilterFields[i];
+ if (i == nTableFilterFields - 1)
+ WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions);
+ }
+ }
+ }
+ }
+ }
+}
+
+void ScXMLExport::WriteSortDescriptor(const uno::Sequence <beans::PropertyValue> aSortProperties)
+{
+ uno::Sequence <util::SortField> aSortFields;
+ sal_Bool bBindFormatsToContent = sal_True;
+ sal_Bool bCopyOutputData = sal_False;
+ sal_Bool bIsCaseSensitive = sal_False;
+ sal_Bool bIsUserListEnabled = sal_False;
+ table::CellAddress aOutputPosition;
+ sal_Int32 nUserListIndex;
+ sal_Int32 nProperties = aSortProperties.getLength();
+ for (sal_Int32 i = 0; i < nProperties; i++)
+ {
+ if (aSortProperties[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_BINDFORMATSTOCONTENT)))
+ {
+ uno::Any aBindFormatsToContent = aSortProperties[i].Value;
+ aBindFormatsToContent >>= bBindFormatsToContent;
+ }
+ else if (aSortProperties[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_COPYOUTPUTDATA)))
+ {
+ uno::Any aCopyOutputData = aSortProperties[i].Value;
+ aCopyOutputData >>= bCopyOutputData;
+ }
+ else if (aSortProperties[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ISCASESENSITIVE)))
+ {
+ uno::Any aIsCaseSensitive = aSortProperties[i].Value;
+ aIsCaseSensitive >>= bIsCaseSensitive;
+ }
+ else if (aSortProperties[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ISUSERLISTENABLED)))
+ {
+ uno::Any aIsUserListEnabled = aSortProperties[i].Value;
+ aIsUserListEnabled >>= bIsUserListEnabled;
+ }
+ else if (aSortProperties[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_OUTPUTPOSITION)))
+ {
+ uno::Any aTempOutputPosition = aSortProperties[i].Value;
+ aTempOutputPosition >>= aOutputPosition;
+ }
+ else if (aSortProperties[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_USERLISTINDEX)))
+ {
+ uno::Any aUserListIndex = aSortProperties[i].Value;
+ aUserListIndex >>= nUserListIndex;
+ }
+ else if (aSortProperties[i].Name == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SORTFIELDS)))
+ {
+ uno::Any aTempSortFields = aSortProperties[i].Value;
+ aTempSortFields >>= aSortFields;
+ }
+ }
+ sal_Int32 nSortFields = aSortFields.getLength();
+ if (nSortFields > 0)
+ {
+ if (!bBindFormatsToContent)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_bind_styles_to_content, sXML_false);
+ if (bCopyOutputData)
+ {
+ ScAddress aTempCellAddress(aOutputPosition.Column, aOutputPosition.Row, aOutputPosition.Sheet);
+ String sCellAddress;
+ aTempCellAddress.Format(sCellAddress, SCA_VALID | SCA_TAB_3D, pDoc);
+ rtl::OUString sOUCellAddress(sCellAddress);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_target_range_address, sOUCellAddress);
+ }
+ if (bIsCaseSensitive)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_case_sensitive, sXML_true);
+ SvXMLElementExport aElemS(*this, XML_NAMESPACE_TABLE, sXML_sort, sal_True, sal_True);
+ CheckAttrList();
+ for (i = 0; i < nSortFields; i++)
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_field_number, rtl::OUString::valueOf(aSortFields[i].Field));
+ if (!aSortFields[i].SortAscending)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_order, sXML_descending);
+ if (!bIsUserListEnabled)
+ {
+ switch (aSortFields[i].FieldType)
+ {
+ case util::SortFieldType_ALPHANUMERIC :
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_data_type, sXML_text);
+ break;
+ case util::SortFieldType_AUTOMATIC :
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_data_type, sXML_automatic);
+ break;
+ case util::SortFieldType_NUMERIC :
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_data_type, sXML_number);
+ break;
+ }
+ }
+ else
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_data_type, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_USERLIST)) + rtl::OUString::valueOf(nUserListIndex));
+ SvXMLElementExport aElemSb(*this, XML_NAMESPACE_TABLE, sXML_sort_by, sal_True, sal_True);
+ CheckAttrList();
+ }
+ }
+}
+
+void ScXMLExport::WriteSubTotalDescriptor(const com::sun::star::uno::Reference <com::sun::star::sheet::XSubTotalDescriptor> xSubTotalDescriptor, const rtl::OUString sDatabaseRangeName)
+{
+ uno::Reference <container::XIndexAccess> xIndexAccess (xSubTotalDescriptor, uno::UNO_QUERY);
+ if (xIndexAccess.is())
+ {
+ sal_Int32 nSubTotalFields = xIndexAccess->getCount();
+ if (nSubTotalFields > 0)
+ {
+ uno::Reference <beans::XPropertySet> xPropertySet (xSubTotalDescriptor, uno::UNO_QUERY);
+ sal_Bool bEnableUserSortList = sal_False;
+ sal_Bool bSortAscending = sal_True;
+ sal_Int32 nUserSortListIndex = 0;
+ if (xPropertySet.is())
+ {
+ sal_Bool bBindFormatsToContent;
+ uno::Any aBindFormatsToContent = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_BINDFORMATSTOCONTENT)));
+ if (aBindFormatsToContent >>= bBindFormatsToContent)
+ if (!bBindFormatsToContent)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_bind_styles_to_content, sXML_false);
+ sal_Bool bInsertPageBreaks;
+ uno::Any aInsertPageBreaks = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_INSERTPAGEBREAKS)));
+ if (aInsertPageBreaks >>= bInsertPageBreaks)
+ if (bInsertPageBreaks)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_page_breaks_on_group_change, sXML_true);
+ sal_Bool bIsCaseSensitive;
+ uno::Any aIsCaseSensitive = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ISCASESENSITIVE)));
+ if (aIsCaseSensitive >>= bIsCaseSensitive)
+ if (bIsCaseSensitive)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_case_sensitive, sXML_true);
+ uno::Any aSortAscending = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SORTASCENDING)));
+ aSortAscending >>= bSortAscending;
+ uno::Any aEnabledUserSortList = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ENABLEUSERSORTLIST)));
+ if (aEnabledUserSortList >>= bEnableUserSortList)
+ if (bEnableUserSortList)
+ {
+ uno::Any aUserSortListIndex = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_USERSORTLISTINDEX)));
+ aUserSortListIndex >>= nUserSortListIndex;
+ }
+ }
+ SvXMLElementExport aElemSTRs(*this, XML_NAMESPACE_TABLE, sXML_subtotal_rules, sal_True, sal_True);
+ CheckAttrList();
+ {
+ ScDBCollection* pDBCollection = pDoc->GetDBCollection();
+ sal_uInt16 nIndex;
+ pDBCollection->SearchName(sDatabaseRangeName, nIndex);
+ ScDBData* pDBData = (*pDBCollection)[nIndex];
+ ScSubTotalParam aSubTotalParam;
+ pDBData->GetSubTotalParam(aSubTotalParam);
+ if (aSubTotalParam.bDoSort)
+ {
+ if (!aSubTotalParam.bAscending)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_order, sXML_descending);
+ if (aSubTotalParam.bUserDef)
+ {
+ rtl::OUString sUserList = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_USERLIST));
+ sUserList += rtl::OUString::valueOf(aSubTotalParam.nUserIndex);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_data_type, sUserList);
+ }
+ SvXMLElementExport aElemSGs(*this, XML_NAMESPACE_TABLE, sXML_sort_groups, sal_True, sal_True);
+ CheckAttrList();
+ }
+ }
+ for (sal_Int32 i = 0; i < nSubTotalFields; i++)
+ {
+ uno::Reference <sheet::XSubTotalField> xSubTotalField;
+ uno::Any aSubTotalField = xIndexAccess->getByIndex(i);
+ if (aSubTotalField >>= xSubTotalField)
+ {
+ sal_Int32 nGroupColumn = xSubTotalField->getGroupColumn();
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_group_by_field_number, rtl::OUString::valueOf(nGroupColumn));
+ SvXMLElementExport aElemSTR(*this, XML_NAMESPACE_TABLE, sXML_subtotal_rule, sal_True, sal_True);
+ CheckAttrList();
+ uno::Sequence <sheet::SubTotalColumn> aSubTotalColumns = xSubTotalField->getSubTotalColumns();
+ sal_Int32 nSubTotalColumns = aSubTotalColumns.getLength();
+ for (sal_Int32 j = 0; j < nSubTotalColumns; j++)
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_field_number, rtl::OUString::valueOf(aSubTotalColumns[j].Column));
+ rtl::OUString sFunction;
+ GetStringOfFunction(aSubTotalColumns[j].Function, sFunction);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_function, sFunction);
+ SvXMLElementExport aElemSTF(*this, XML_NAMESPACE_TABLE, sXML_subtotal_field, sal_True, sal_True);
+ CheckAttrList();
+ }
+ }
+ }
+ }
+ }
+}
+
+void ScXMLExport::WriteDatabaseRanges(const com::sun::star::uno::Reference <com::sun::star::sheet::XSpreadsheetDocument>& xSpreadDoc)
+{
+ uno::Reference <beans::XPropertySet> xPropertySet (xSpreadDoc, uno::UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ uno::Any aDatabaseRanges = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DATABASERANGES)));
+ uno::Reference <sheet::XDatabaseRanges> xDatabaseRanges;
+ CheckAttrList();
+ if (aDatabaseRanges >>= xDatabaseRanges)
+ {
+ uno::Sequence <rtl::OUString> aRanges = xDatabaseRanges->getElementNames();
+ sal_Int32 nDatabaseRangesCount = aRanges.getLength();
+ if (nDatabaseRangesCount > 0)
+ {
+ SvXMLElementExport aElemDRs(*this, XML_NAMESPACE_TABLE, sXML_database_ranges, sal_True, sal_True);
+ for (sal_Int32 i = 0; i < nDatabaseRangesCount; i++)
+ {
+ rtl::OUString sDatabaseRangeName = aRanges[i];
+ uno::Any aDatabaseRange = xDatabaseRanges->getByName(sDatabaseRangeName);
+ uno::Reference <sheet::XDatabaseRange> xDatabaseRange;
+ if (aDatabaseRange >>= xDatabaseRange)
+ {
+ String sUnbenannt = ScGlobal::GetRscString(STR_DB_NONAME);
+ rtl::OUString sOUUnbenannt (sUnbenannt);
+ if (sOUUnbenannt != sDatabaseRangeName)
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_name, sDatabaseRangeName);
+ table::CellRangeAddress aRangeAddress = xDatabaseRange->getDataArea();
+ rtl::OUString sOUAddress;
+ GetStringFromRange(aRangeAddress, sOUAddress);
+ AddAttribute (XML_NAMESPACE_TABLE, sXML_target_range_address, sOUAddress);
+ ScDBCollection* pDBCollection = pDoc->GetDBCollection();
+ sal_uInt16 nIndex;
+ pDBCollection->SearchName(sDatabaseRangeName, nIndex);
+ ScDBData* pDBData = (*pDBCollection)[nIndex];
+ if (pDBData->HasImportSelection())
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_is_selection, sXML_true);
+ if (pDBData->HasAutoFilter())
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_display_filter_buttons, sXML_true);
+ uno::Reference <beans::XPropertySet> xPropertySetDatabaseRange (xDatabaseRange, uno::UNO_QUERY);
+ if (xPropertySetDatabaseRange.is())
+ {
+ uno::Any aKeepFormatsProperty = xPropertySetDatabaseRange->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_KEEPFORMATS)));
+ sal_Bool bKeepFormats = sal_False;
+ if (aKeepFormatsProperty >>= bKeepFormats)
+ if (bKeepFormats)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_on_update_keep_styles, sXML_true);
+ uno::Any aMoveCellsProperty = xPropertySetDatabaseRange->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_MOVECELLS)));
+ sal_Bool bMoveCells = sal_False;
+ if (aMoveCellsProperty >>= bMoveCells)
+ if (bMoveCells)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_on_update_keep_size, sXML_false);
+ uno::Any aStripDataProperty = xPropertySetDatabaseRange->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_STRIPDATA)));
+ sal_Bool bStripData = sal_False;
+ if (aStripDataProperty >>= bStripData)
+ if (bStripData)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_has_persistent_data, sXML_false);
+ }
+ uno::Reference <sheet::XSheetFilterDescriptor> xSheetFilterDescriptor = xDatabaseRange->getFilterDescriptor();
+ if (xSheetFilterDescriptor.is())
+ {
+ uno::Reference <beans::XPropertySet> xFilterProperties (xSheetFilterDescriptor, uno::UNO_QUERY);
+ if (xFilterProperties.is())
+ {
+ uno::Any aContainsHeaderProperty = xFilterProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_CONTAINSHEADER)));
+ sal_Bool bContainsHeader = sal_True;
+ if (aContainsHeaderProperty >>= bContainsHeader)
+ if (!bContainsHeader)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_contains_header, sXML_false);
+ uno::Any aOrientationProperty = xFilterProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ORIENTATION)));
+ sal_Bool bOrientation = sal_False;
+ if (aOrientationProperty >>= bOrientation)
+ if (bOrientation)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_orientation, sXML_column);
+ }
+ }
+ SvXMLElementExport aElemDR(*this, XML_NAMESPACE_TABLE, sXML_database_range, sal_True, sal_True);
+ CheckAttrList();
+ WriteImportDescriptor(xDatabaseRange->getImportDescriptor());
+ if (xSheetFilterDescriptor.is())
+ WriteFilterDescriptor(xSheetFilterDescriptor, sDatabaseRangeName);
+ WriteSortDescriptor(xDatabaseRange->getSortDescriptor());
+ WriteSubTotalDescriptor(xDatabaseRange->getSubTotalDescriptor(), sDatabaseRangeName);
+ }
+ }
+ }
+ }
+ }
+
+}
+
+rtl::OUString ScXMLExport::getDPOperatorXML(const ScQueryOp aFilterOperator, const sal_Bool bUseRegularExpressions,
+ const sal_Bool bIsString, const double dVal) const
+{
+ if (bUseRegularExpressions)
+ {
+ switch (aFilterOperator)
+ {
+ case SC_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_match));
+ break;
+ case SC_NOT_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_nomatch));
+ break;
+ }
+ }
+ else
+ {
+ switch (aFilterOperator)
+ {
+ case SC_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("="));
+ break;
+ case SC_NOT_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("!="));
+ break;
+ case SC_BOTPERC :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_bottom_percent));
+ break;
+ case SC_BOTVAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_bottom_values));
+ break;
+ case SC_GREATER :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(">"));
+ break;
+ case SC_GREATER_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(">="));
+ break;
+ case SC_LESS :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("<"));
+ break;
+ case SC_LESS_EQUAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("<="));
+ break;
+ case SC_TOPPERC :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_top_percent));
+ break;
+ case SC_TOPVAL :
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_top_values));
+ break;
+ default:
+ {
+ if (bIsString)
+ {
+ if (dVal == SC_EMPTYFIELDS)
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_empty));
+ else if (dVal == SC_NONEMPTYFIELDS)
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_noempty));
+ }
+ }
+ }
+ }
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("="));
+}
+
+void ScXMLExport::WriteDPCondition(const ScQueryEntry& aQueryEntry, sal_Bool bIsCaseSensitive, sal_Bool bUseRegularExpressions)
+{
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_field_number, rtl::OUString::valueOf(aQueryEntry.nField));
+ if (bIsCaseSensitive)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_case_sensitive, sXML_true);
+ if (aQueryEntry.bQueryByString)
+ {
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_data_type, sXML_number);
+ rtl::OUStringBuffer sBuffer;
+ GetMM100UnitConverter().convertNumber(sBuffer, aQueryEntry.nVal);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_value, sBuffer.makeStringAndClear());
+ }
+ else
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_value, rtl::OUString(*aQueryEntry.pStr));
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_operator, getDPOperatorXML(aQueryEntry.eOp, bUseRegularExpressions,
+ aQueryEntry.bQueryByString, aQueryEntry.nVal));
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, sXML_filter_condition, sal_True, sal_True);
+}
+
+void ScXMLExport::WriteDPFilter(const ScQueryParam& aQueryParam)
+{
+ sal_Int16 nQueryEntryCount = aQueryParam.GetEntryCount();
+ if (nQueryEntryCount > 0)
+ {
+ sal_Bool bAnd(sal_False);
+ sal_Bool bOr(sal_False);
+ sal_Bool bHasEntries(sal_True);
+ sal_Int16 nEntries(0);
+ for (sal_Int32 j = 1; (j < nQueryEntryCount) && bHasEntries; j++)
+ {
+ ScQueryEntry aEntry = aQueryParam.GetEntry(j);
+ if (aEntry.bDoQuery)
+ {
+ nEntries++;
+ if (aEntry.eConnect == SC_AND)
+ bAnd = sal_True;
+ else
+ bOr = sal_True;
+ }
+ else
+ bHasEntries = sal_False;
+ }
+ nQueryEntryCount = nEntries;
+ if (nQueryEntryCount)
+ {
+ if (!aQueryParam.bInplace)
+ {
+ ScAddress aTargetAddress(aQueryParam.nDestCol, aQueryParam.nDestRow, aQueryParam.nDestTab);
+ String sTargetAddress;
+ aTargetAddress.Format(sTargetAddress, SCA_VALID | SCA_TAB_3D, pDoc);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_target_range_address, rtl::OUString(sTargetAddress));
+ }
+ if(!((aQueryParam.nCol1 == aQueryParam.nCol2) && (aQueryParam.nRow1 == aQueryParam.nRow2) && (aQueryParam.nCol1 == aQueryParam.nRow1)
+ && (aQueryParam.nCol1 == 0) && (aQueryParam.nTab == USHRT_MAX)))
+ {
+ ScRange aConditionRange(aQueryParam.nCol1, aQueryParam.nRow1, aQueryParam.nTab,
+ aQueryParam.nCol2, aQueryParam.nRow2, aQueryParam.nTab);
+ rtl::OUString sConditionRange;
+ GetStringFromRange(aConditionRange, sConditionRange);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_condition_source_range_address, sConditionRange);
+ }
+ if (!aQueryParam.bDuplicate)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_display_duplicates, sXML_false);
+ SvXMLElementExport aElemDPF(*this, XML_NAMESPACE_TABLE, sXML_filter, sal_True, sal_True);
+ CheckAttrList();
+ if (bOr && !bAnd)
+ {
+ SvXMLElementExport aElemOr(*this, XML_NAMESPACE_TABLE, sXML_filter_or, sal_True, sal_True);
+ for (j = 0; j < nQueryEntryCount; j++)
+ {
+ WriteDPCondition(aQueryParam.GetEntry(j), aQueryParam.bCaseSens, aQueryParam.bRegExp);
+ }
+ }
+ else if (bAnd && !bOr)
+ {
+ SvXMLElementExport aElemAnd(*this, XML_NAMESPACE_TABLE, sXML_filter_and, sal_True, sal_True);
+ for (j = 0; j < nQueryEntryCount; j++)
+ {
+ WriteDPCondition(aQueryParam.GetEntry(j), aQueryParam.bCaseSens, aQueryParam.bRegExp);
+ }
+ }
+ else if (nQueryEntryCount == 1)
+ {
+ WriteDPCondition(aQueryParam.GetEntry(0), aQueryParam.bCaseSens, aQueryParam.bRegExp);
+ }
+ else
+ {
+ SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, sXML_filter_or, sal_True, sal_True);
+ ScQueryEntry aPrevFilterField = aQueryParam.GetEntry(0);
+ ScQueryConnect aConnection = aQueryParam.GetEntry(1).eConnect;
+ sal_Bool bOpenAndElement;
+ rtl::OUString aName = GetNamespaceMap().GetQNameByKey(XML_NAMESPACE_TABLE, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_filter_and)));
+ if (aConnection == SC_AND)
+ {
+ GetDocHandler()->ignorableWhitespace(sWS);
+ GetDocHandler()->startElement( aName, GetXAttrList());
+ ClearAttrList();
+ bOpenAndElement = sal_True;
+ }
+ else
+ bOpenAndElement = sal_False;
+ for (j = 1; j < nQueryEntryCount; j++)
+ {
+ if (aConnection != aQueryParam.GetEntry(j).eConnect)
+ {
+ aConnection = aQueryParam.GetEntry(j).eConnect;
+ if (aQueryParam.GetEntry(j).eConnect == SC_AND)
+ {
+ GetDocHandler()->ignorableWhitespace(sWS);
+ GetDocHandler()->startElement( aName, GetXAttrList());
+ ClearAttrList();
+ bOpenAndElement = sal_True;
+ WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.bRegExp);
+ aPrevFilterField = aQueryParam.GetEntry(j);
+ if (j == nQueryEntryCount - 1)
+ {
+ WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.bRegExp);
+ GetDocHandler()->ignorableWhitespace(sWS);
+ GetDocHandler()->endElement(aName);
+ bOpenAndElement = sal_False;
+ }
+ }
+ else
+ {
+ WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.bRegExp);
+ aPrevFilterField = aQueryParam.GetEntry(j);
+ if (bOpenAndElement)
+ {
+ GetDocHandler()->ignorableWhitespace(sWS);
+ GetDocHandler()->endElement(aName);
+ bOpenAndElement = sal_False;
+ }
+ if (j == nQueryEntryCount - 1)
+ {
+ WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.bRegExp);
+ }
+ }
+ }
+ else
+ {
+ WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.bRegExp);
+ aPrevFilterField = aQueryParam.GetEntry(j);
+ if (j == nQueryEntryCount - 1)
+ WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.bRegExp);
+ }
+ }
+ }
+ }
+ }
+}
+
+void ScXMLExport::WriteDataPilots(const uno::Reference <sheet::XSpreadsheetDocument>& xSpreadDoc)
+{
+ if (pDoc)
+ {
+ ScDPCollection* pDPs = pDoc->GetDPCollection();
+ if (pDPs)
+ {
+ sal_Int16 nDPCount = pDPs->GetCount();
+ if (nDPCount > 0)
+ {
+ SvXMLElementExport aElemDPs(*this, XML_NAMESPACE_TABLE, sXML_data_pilot_tables, sal_True, sal_True);
+ CheckAttrList();
+ for (sal_Int16 i = 0; i < nDPCount; i++)
+ {
+ ScDPSaveData* pDPSave = (*pDPs)[i]->GetSaveData();
+ if (pDPSave)
+ {
+ ScRange aOutRange = (*pDPs)[i]->GetOutRange();
+ rtl::OUString sTargetRangeAddress;
+ GetStringFromRange(aOutRange, sTargetRangeAddress);
+ ScDocAttrIterator aAttrItr(pDoc, aOutRange.aStart.Tab(),
+ aOutRange.aStart.Col(), aOutRange.aStart.Row(),
+ aOutRange.aEnd.Col(), aOutRange.aEnd.Row());
+ sal_uInt16 nCol, nRow1, nRow2;
+ String sButtonList;
+ const ScPatternAttr* pAttr = aAttrItr.GetNext(nCol, nRow1, nRow2);
+ while (pAttr)
+ {
+ ScMergeFlagAttr& rItem = (ScMergeFlagAttr&)pAttr->GetItem(ATTR_MERGE_FLAG);
+ if (rItem.HasButton())
+ {
+ for (sal_Int32 nButtonRow = nRow1; nButtonRow <= nRow2; nButtonRow++)
+ {
+ ScAddress aButtonAddr(nCol, nButtonRow, aOutRange.aStart.Tab());
+ String sButtonAddr;
+ aButtonAddr.Format(sButtonAddr, SCA_VALID | SCA_TAB_3D, pDoc);
+ if (sButtonList.Len())
+ sButtonList += ' ';
+ sButtonList += sButtonAddr;
+ }
+ }
+ pAttr = aAttrItr.GetNext(nCol, nRow1, nRow2);
+ }
+ rtl::OUString sOUButtonList(sButtonList);
+ rtl::OUString sName((*pDPs)[i]->GetName());
+ rtl::OUString sApplicationData((*pDPs)[i]->GetTag());
+ sal_Bool bRowGrand = pDPSave->GetRowGrand();
+ sal_Bool bColumnGrand = pDPSave->GetColumnGrand();
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_name, sName);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_application_data, sApplicationData);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_target_range_address, sTargetRangeAddress);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_buttons, sOUButtonList);
+ if (!(bRowGrand && bColumnGrand))
+ {
+ if (bRowGrand)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_grand_total, sXML_row);
+ else if (bColumnGrand)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_grand_total, sXML_column);
+ else
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_grand_total, sXML_none);
+ }
+ if (pDPSave->GetIgnoreEmptyRows())
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_ignore_empty_rows, sXML_true);
+ if (pDPSave->GetRepeatIfEmpty())
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_identify_categories, sXML_true);
+ SvXMLElementExport aElemDP(*this, XML_NAMESPACE_TABLE, sXML_data_pilot_table, sal_True, sal_True);
+ CheckAttrList();
+ if ((*pDPs)[i]->IsSheetData())
+ {
+ const ScSheetSourceDesc* pSheetSource = (*pDPs)[i]->GetSheetDesc();
+ rtl::OUString sCellRangeAddress;
+ GetStringFromRange(pSheetSource->aSourceRange, sCellRangeAddress);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_cell_range_address, sCellRangeAddress);
+ SvXMLElementExport aElemSCR(*this, XML_NAMESPACE_TABLE, sXML_source_cell_range, sal_True, sal_True);
+ CheckAttrList();
+ WriteDPFilter(pSheetSource->aQueryParam);
+ }
+ else if ((*pDPs)[i]->IsImportData())
+ {
+ const ScImportSourceDesc* pImpSource = (*pDPs)[i]->GetImportSourceDesc();
+ switch (pImpSource->nType)
+ {
+ case sheet::DataImportMode_NONE : break;
+ case sheet::DataImportMode_QUERY :
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_database_name, rtl::OUString(pImpSource->aDBName));
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_query_name, rtl::OUString(pImpSource->aObject));
+ SvXMLElementExport aElemID(*this, XML_NAMESPACE_TABLE, sXML_database_source_query, sal_True, sal_True);
+ CheckAttrList();
+ }
+ break;
+ case sheet::DataImportMode_TABLE :
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_database_name, rtl::OUString(pImpSource->aDBName));
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_table_name, rtl::OUString(pImpSource->aObject));
+ SvXMLElementExport aElemID(*this, XML_NAMESPACE_TABLE, sXML_database_source_table, sal_True, sal_True);
+ CheckAttrList();
+ }
+ break;
+ case sheet::DataImportMode_SQL :
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_database_name, rtl::OUString(pImpSource->aDBName));
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_sql_statement, rtl::OUString(pImpSource->aObject));
+ if (!pImpSource->bNative)
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_parse_sql_statement, sXML_true);
+ SvXMLElementExport aElemID(*this, XML_NAMESPACE_TABLE, sXML_database_source_sql, sal_True, sal_True);
+ CheckAttrList();
+ }
+ break;
+ }
+ }
+ else if ((*pDPs)[i]->IsServiceData())
+ {
+ const ScDPServiceDesc* pServSource = (*pDPs)[i]->GetDPServiceDesc();
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_name, rtl::OUString(pServSource->aServiceName));
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_source_name, rtl::OUString(pServSource->aParSource));
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_object_name, rtl::OUString(pServSource->aParName));
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_username, rtl::OUString(pServSource->aParUser));
+ // How to write the Passwort? We must know, whether the passwort shoulb be written encrypted and how or not
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_passwort, rtl::OUString(pServSource->aParPass));
+ SvXMLElementExport aElemSD(*this, XML_NAMESPACE_TABLE, sXML_source_service, sal_True, sal_True);
+ CheckAttrList();
+ }
+ List aDimensions = pDPSave->GetDimensions();
+ sal_Int32 nDimCount = aDimensions.Count();
+ for (sal_Int32 nDim = 0; nDim < nDimCount; nDim++)
+ {
+ ScDPSaveDimension* pDim = (ScDPSaveDimension*)aDimensions.GetObject(nDim);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_source_field_name, rtl::OUString(pDim->GetName()));
+ if (pDim->IsDataLayout())
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_is_data_layout_field, sXML_true);
+ switch (pDim->GetOrientation())
+ {
+ case sheet::DataPilotFieldOrientation_COLUMN :
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_orientation, sXML_column); break;
+ case sheet::DataPilotFieldOrientation_DATA :
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_orientation, sXML_data); break;
+ case sheet::DataPilotFieldOrientation_HIDDEN :
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_orientation, sXML_hidden); break;
+ case sheet::DataPilotFieldOrientation_PAGE :
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_orientation, sXML_page); break;
+ case sheet::DataPilotFieldOrientation_ROW :
+ AddAttributeASCII(XML_NAMESPACE_TABLE, sXML_orientation, sXML_row); break;
+ }
+ if (pDim->GetUsedHierarchy() != 1)
+ {
+ rtl::OUStringBuffer sBuffer;
+ SvXMLUnitConverter::convertNumber(sBuffer, pDim->GetUsedHierarchy());
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_used_hierarchy, sBuffer.makeStringAndClear());
+ }
+ rtl::OUString sFunction;
+ GetStringOfFunction(pDim->GetFunction(), sFunction);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_function, sFunction);
+ SvXMLElementExport aElemDPF(*this, XML_NAMESPACE_TABLE, sXML_data_pilot_field, sal_True, sal_True);
+ CheckAttrList();
+ {
+ rtl::OUStringBuffer sBuffer;
+ SvXMLUnitConverter::convertBool(sBuffer, pDim->GetShowEmpty());
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_display_empty, sBuffer.makeStringAndClear());
+ SvXMLElementExport aElemDPL(*this, XML_NAMESPACE_TABLE, sXML_data_pilot_level, sal_True, sal_True);
+ CheckAttrList();
+ sal_Int32 nSubTotalCount = pDim->GetSubTotalsCount();
+ if (nSubTotalCount > 0)
+ {
+ SvXMLElementExport aElemSTs(*this, XML_NAMESPACE_TABLE, sXML_data_pilot_subtotals, sal_True, sal_True);
+ CheckAttrList();
+ for (sal_Int32 nSubTotal = 0; nSubTotal < nSubTotalCount; nSubTotal++)
+ {
+ rtl::OUString sFunction;
+ GetStringOfFunction(pDim->GetSubTotalFunc(nSubTotal), sFunction);
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_function, sFunction);
+ SvXMLElementExport aElemST(*this, XML_NAMESPACE_TABLE, sXML_data_pilot_subtotal, sal_True, sal_True);
+ }
+ }
+ List aMembers = pDim->GetMembers();
+ sal_Int32 nMemberCount = aMembers.Count();
+ if (nMemberCount > 0)
+ {
+ SvXMLElementExport aElemDPMs(*this, XML_NAMESPACE_TABLE, sXML_data_pilot_members, sal_True, sal_True);
+ CheckAttrList();
+ for (sal_Int32 nMember = 0; nMember < nMemberCount; nMember++)
+ {
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_name, rtl::OUString(((ScDPSaveMember*)aMembers.GetObject(nMember))->GetName()));
+ rtl::OUStringBuffer sBuffer;
+ SvXMLUnitConverter::convertBool(sBuffer, ((ScDPSaveMember*)aMembers.GetObject(nMember))->GetIsVisible());
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_display, sBuffer.makeStringAndClear());
+ SvXMLUnitConverter::convertBool(sBuffer, ((ScDPSaveMember*)aMembers.GetObject(nMember))->GetShowDetails());
+ AddAttribute(XML_NAMESPACE_TABLE, sXML_display_details, sBuffer.makeStringAndClear());
+ SvXMLElementExport aElemDPM(*this, XML_NAMESPACE_TABLE, sXML_data_pilot_member, sal_True, sal_True);
+ CheckAttrList();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+SvXMLAutoStylePoolP* ScXMLExport::CreateAutoStylePool()
+{
+ return new ScXMLAutoStylePoolP(*this);
+}
diff --git a/sc/source/filter/xml/xmlexprt.hxx b/sc/source/filter/xml/xmlexprt.hxx
new file mode 100644
index 000000000000..79e78da14171
--- /dev/null
+++ b/sc/source/filter/xml/xmlexprt.hxx
@@ -0,0 +1,468 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlexprt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_XMLEXPRT_HXX
+#define SC_XMLEXPRT_HXX
+
+#ifndef _XMLOFF_XMLEXP_HXX
+#include <xmloff/xmlexp.hxx>
+#endif
+
+#ifndef _ZFORLIST_HXX
+#include <svtools/zforlist.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLASTPLP_HXX
+#include <xmloff/xmlaustp.hxx>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEETDOCUMENT_HPP_
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEET_HPP_
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XMERGEABLE_HPP_
+#include <com/sun/star/util/XMergeable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XCELLRANGE_HPP_
+#include <com/sun/star/table/XCellRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLRANGEADDRESS_HPP_
+#include <com/sun/star/table/CellRangeAddress.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLADDRESS_HPP_
+#include <com/sun/star/table/CellAddress.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XCELL_HPP_
+#include <com/sun/star/table/XCell.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_DATE_HPP_
+#include <com/sun/star/util/Date.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETFILTERDESCRIPTOR_HPP_
+#include <com/sun/star/sheet/XSheetFilterDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSUBTOTALDESCRIPTOR_HPP_
+#include <com/sun/star/sheet/XSubTotalDescriptor.hpp>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+
+#ifndef _XMLSTYLE_HXX
+#include "xmlstyle.hxx"
+#endif
+#ifndef SC_XMLMAPCH_HXX_
+#include "xmlmapch.hxx"
+#endif
+
+#include "global.hxx"
+
+class SvXMLExportItemMapper;
+class SfxPoolItem;
+class SfxItemSet;
+class OUStrings_Impl;
+class OUStringsSort_Impl;
+class SvXMLNumFmtExport;
+class ScDocument;
+class ScRange;
+class ScHorizontalCellIterator;
+struct ScQueryEntry;
+struct ScQueryParam;
+
+struct ScMyRowFormatRange
+{
+ sal_Int32 nStartColumn;
+ sal_Int32 nRepeatColumns;
+ sal_Int32 nRepeatRows;
+ sal_Int32 nIndex;
+ sal_Bool bIsAutoStyle;
+
+ ScMyRowFormatRange();
+};
+
+typedef std::vector<ScMyRowFormatRange> ScMyRowFormatRangesVec;
+
+class ScRowFormatRanges
+{
+ ScMyRowFormatRangesVec aRowFormatRanges;
+
+public:
+ ScRowFormatRanges();
+ ~ScRowFormatRanges();
+
+ void Clear();
+ void AddRange(const ScMyRowFormatRange& aFormatRange);
+ sal_Bool GetNext(ScMyRowFormatRange& aFormatRange);
+ sal_Int32 GetMaxRows();
+ void Sort();
+};
+
+typedef std::vector<rtl::OUString*> ScMyOUStringVec;
+
+struct ScMyFormatRange
+{
+ com::sun::star::table::CellRangeAddress aRangeAddress;
+ sal_Int32 nStyleNameIndex;
+ sal_Bool bIsAutoStyle;
+
+ ScMyFormatRange();
+};
+
+typedef std::vector<ScMyFormatRange> ScMyFormatRangeAddresses;
+typedef std::vector<ScMyFormatRangeAddresses*> ScMyFormatRangeVectorVec;
+
+class ScFormatRangeStyles
+{
+ ScMyFormatRangeVectorVec aTables;
+ ScMyOUStringVec aStyleNames;
+ ScMyOUStringVec aAutoStyleNames;
+
+public:
+ ScFormatRangeStyles();
+ ~ScFormatRangeStyles();
+
+ void AddNewTable(const sal_Int16 nTable);
+ sal_Int32 AddStyleName(rtl::OUString* pString, const sal_Bool bIsAutoStyle = sal_True);
+ sal_Int32 GetIndexOfStyleName(const rtl::OUString& rString, const rtl::OUString& rPrefix, sal_Bool& bIsAutoStyle);
+ sal_Int32 GetStyleNameIndex(const sal_Int16 nTable, const sal_Int32 nColumn, const sal_Int32 nRow, sal_Bool& bIsAutoStyle);
+ void GetFormatRanges(const sal_Int32 nStartColumn, const sal_Int32 nEndColumn, const sal_Int32 nRow,
+ const sal_Int16 nTable, ScRowFormatRanges& aFormatRanges);
+ void AddRangeStyleName(const com::sun::star::table::CellRangeAddress aCellRangeAddress, const sal_Int32 nStringIndex, const sal_Bool bIsAutoStyle);
+ rtl::OUString* GetStyleName(const sal_Int16 nTable, const sal_Int32 nColumn, const sal_Int32 nRow);
+ rtl::OUString* GetStyleNameByIndex(const sal_Int32 nIndex, const sal_Bool bIsAutoStyle);
+ void Sort();
+};
+
+typedef std::vector<sal_Int32> ScMysalInt32Vec;
+typedef std::vector<ScMysalInt32Vec> ScMyVectorVec;
+
+class ScColumnRowStyles
+{
+ ScMyVectorVec aTables;
+ ScMyOUStringVec aStyleNames;
+
+public:
+ ScColumnRowStyles();
+ ~ScColumnRowStyles();
+
+ void AddNewTable(const sal_Int16 nTable, const sal_Int32 nFields);
+ sal_Int32 AddStyleName(rtl::OUString* pString);
+ sal_Int32 GetIndexOfStyleName(const rtl::OUString& rString, const rtl::OUString& rPrefix);
+ sal_Int32 GetStyleNameIndex(const sal_Int16 nTable, const sal_Int32 nField);
+ void AddFieldStyleName(const sal_Int16 nTable, const sal_Int32 nField, const sal_Int32 nStringIndex);
+ rtl::OUString* GetStyleName(const sal_Int16 nTable, const sal_Int32 nField);
+ rtl::OUString* GetStyleNameByIndex(const sal_Int32 nIndex);
+};
+
+struct ScMyShape
+{
+ ScAddress aAddress;
+ sal_Int32 nIndex;
+};
+
+typedef std::vector<ScMyShape> ScMyShapes;
+typedef std::vector<ScMyShapes> ScMyShapesVector;
+
+class ScShapesContainer
+{
+ ScMyShapesVector aDrawPages;
+public:
+ ScShapesContainer();
+ ~ScShapesContainer();
+ void AddNewTable();
+ void AddNewShape(const sal_Int16 nTable, const ScMyShape& aShape);
+ sal_Bool HasShape(const sal_Int16 nTable, const sal_Int32 nColumn, const sal_Int32 nRow);
+ sal_Bool GetNextShape(const sal_Int16 nTable, ScMyShape& aShape);
+ void Sort();
+};
+
+struct ScMyRange
+{
+ com::sun::star::table::CellRangeAddress aCellRange;
+ sal_Int32 nRows;
+ sal_Bool bIsFirst;
+};
+
+typedef std::vector<ScMyRange> ScMyMergedRanges;
+typedef std::vector<ScMyMergedRanges> ScMyMergedRangesVec;
+
+class ScMyMergedCells
+{
+ ScMyMergedRangesVec aTables;
+public:
+ ScMyMergedCells();
+ ~ScMyMergedCells();
+ void AddNewTable();
+ void AddRange(const sal_Int16 nTable, const com::sun::star::table::CellRangeAddress aMergedRange);
+ sal_Bool GetNextMergedRange(const sal_Int16 nTable, ScMyRange& aMyRange);
+ void SortAndRemoveDoublets();
+};
+
+typedef std::vector<com::sun::star::table::CellRangeAddress> ScMyEmptyDatabaseRangesVec;
+typedef std::vector<ScMyEmptyDatabaseRangesVec> ScMyEmptyDatabaseRangesVecVec;
+
+class ScMyEmptyDatabaseRanges
+{
+ ScMyEmptyDatabaseRangesVecVec aTables;
+public:
+ ScMyEmptyDatabaseRanges(const sal_Int16 nTables);
+ ~ScMyEmptyDatabaseRanges();
+ void AddNewEmptyDatabaseRange(const com::sun::star::table::CellRangeAddress& aCellRangeAddress);
+ sal_Bool GetNextEmptyDatabaseRange(const sal_Int16 nTable, com::sun::star::table::CellRangeAddress& aCellRange);
+ void Sort();
+};
+
+struct ScMyCell
+{
+ com::sun::star::uno::Reference<com::sun::star::table::XCell> xCell;
+ com::sun::star::table::CellAddress aCellAddress;
+ com::sun::star::table::CellRangeAddress aMatrixRange;
+ com::sun::star::table::CellRangeAddress aMergeRange;
+ ScMyShape aShape;
+ sal_Bool bHasShape;
+ sal_Bool bIsMergedBase;
+ sal_Bool bIsCovered;
+ sal_Bool bHasAnnotation;
+ sal_Bool bIsMatrixBase;
+ sal_Bool bIsMatrixCovered;
+};
+
+class ScMyNotEmptyCellsIterator;
+
+class ScXMLExport : public SvXMLExport
+{
+ ScDocument* pDoc;
+ com::sun::star::uno::Reference <com::sun::star::frame::XModel> xModel;
+ com::sun::star::uno::Reference <com::sun::star::util::XStringMapping> xChartExportMapper;
+ com::sun::star::uno::Reference <com::sun::star::sheet::XSpreadsheet> xCurrentTable;
+ com::sun::star::uno::Reference <com::sun::star::container::XIndexAccess> xCurrentShapes;
+
+// ULONG nDateKey;
+// ULONG nTimeKey;
+// ULONG nDateTimeKey;
+
+// SvXMLExportItemMapper *pParaItemMapper;
+// SvXMLExportItemMapper *pTableItemMapper;
+
+// SvXMLAutoStylePoolP *pScAutoStylePool;
+ XMLScPropHdlFactory *pScPropHdlFactory;
+ XMLCellStylesPropertySetMapper *pCellStylesPropertySetMapper;
+ XMLPageStylesPropertySetMapper *pPageStylesPropertySetMapper;
+ XMLColumnStylesPropertySetMapper *pColumnStylesPropertySetMapper;
+ XMLRowStylesPropertySetMapper *pRowStylesPropertySetMapper;
+ XMLTableStylesPropertySetMapper *pTableStylesPropertySetMapper;
+ ScColumnRowStyles aColumnStyles;
+ ScColumnRowStyles aRowStyles;
+ ScFormatRangeStyles aCellStyles;
+ ScShapesContainer aShapesContainer;
+ ScMyMergedCells aMergedCells;
+ ScRowFormatRanges aRowFormatRanges;
+ std::vector<rtl::OUString> aTableStyles;
+
+ sal_Bool mbShowProgress : 1;
+ sal_Int32 nOpenRow;
+ sal_Int16 nCurrentTable;
+ std::vector<sal_Int32> nLastColumns;
+ std::vector<sal_Int32> nLastRows;
+
+ ScMyNotEmptyCellsIterator* pCellsItr;
+
+ virtual void _ExportStyles( sal_Bool bUsed );
+ virtual void _ExportAutoStyles();
+ virtual void _ExportMasterStyles();
+ virtual void _ExportContent();
+
+ void SetLastColumn(const sal_Int32 nTable, const sal_Int32 nCol);// { if(nCol > nLastColumns[nTable]) nLastColumns[nTable] = nCol; }
+ void SetLastRow(const sal_Int32 nTable, const sal_Int32 nRow);// { if(nRow > nLastRows[nTable]) nLastRows[nTable] = nRow; }
+
+ com::sun::star::table::CellRangeAddress GetEndAddress(com::sun::star::uno::Reference<com::sun::star::sheet::XSpreadsheet>& xTable,
+ const sal_Int16 nTable);
+ ScMyEmptyDatabaseRanges GetEmptyDatabaseRanges(const sal_Int16 nTableCount);
+ sal_Bool GetxCurrentShapes(com::sun::star::uno::Reference<com::sun::star::container::XIndexAccess>& xShapes);
+ void ExportColumns(const sal_Int16 nTable);
+ void ExportFormatRanges(const sal_Int32 nStartCol, const sal_Int32 nStartRow,
+ const sal_Int32 nEndCol, const sal_Int32 nEndRow, const sal_Int16 nSheet);
+ void WriteRowContent();
+ void OpenNewRow(const sal_Int32 nIndex, const sal_Int8 nFlag, const sal_Int32 nEmptyRows);
+ void OpenAndCloseRow(const sal_Int32 nIndex, const sal_Int8 nFlag, const sal_Int32 nEmptyRows);
+ void OpenRow(const sal_Int16 nTable, const sal_Int32 nStartRow, const sal_Int32 nRepeatRow);
+ void CloseRow();
+
+ sal_Bool IsMerged (const com::sun::star::uno::Reference <com::sun::star::table::XCellRange>& xCellRange,
+ const sal_Int32 nCol, const sal_Int32 nRow,
+ com::sun::star::table::CellRangeAddress& aCellAddress) const;
+
+// sal_Bool GetCell (const com::sun::star::uno::Reference <com::sun::star::table::XCellRange>& xCellRange,
+// const sal_Int32 nCol, const sal_Int32 nRow, com::sun::star::uno::Reference <com::sun::star::table::XCell>& xTempCell) const;
+ sal_Bool GetCellText (const com::sun::star::uno::Reference <com::sun::star::table::XCell>& xCell,
+ rtl::OUString& sOUTemp) const;
+ sal_Int16 GetCellType(const sal_Int32 nNumberFormat, sal_Bool& bIsStandard);
+ sal_Int32 GetCellNumberFormat(const com::sun::star::uno::Reference <com::sun::star::table::XCell>& xCell) const;
+ sal_Bool GetCellStyleNameIndex(const ScMyCell& aCell, sal_Int32& nStyleNameIndex, sal_Bool& bIsAutoStyle);
+
+ void WriteCell (const ScMyCell& aCell);
+ void WriteShapes(const com::sun::star::uno::Reference<com::sun::star::table::XCell>& xCell, const ScMyCell& aCell);
+ void WriteAnnotation(const com::sun::star::uno::Reference<com::sun::star::table::XCell>& xCell);
+ void SetRepeatAttribute (const sal_Int32 nEqualCellCount);
+
+ sal_Bool IsCellTypeEqual (const com::sun::star::uno::Reference <com::sun::star::table::XCell>& xCell1,
+ const com::sun::star::uno::Reference <com::sun::star::table::XCell>& xCell2) const;
+ sal_Bool IsEditCell(const com::sun::star::uno::Reference <com::sun::star::table::XCell>& xCell) const;
+ sal_Bool IsAnnotationEqual(const com::sun::star::uno::Reference<com::sun::star::table::XCell>& xCell1,
+ const com::sun::star::uno::Reference<com::sun::star::table::XCell>& xCell2);
+ sal_Bool IsCellEqual (const ScMyCell& aCell1, const ScMyCell& aCell2);
+ void GetStringFromRange(const ScRange& aRange, rtl::OUString& rString) const;
+ void GetStringFromRange(const com::sun::star::table::CellRangeAddress& aRange, rtl::OUString& rString) const;
+ void GetStringOfFunction(const sal_Int32 nFunction, rtl::OUString& rString) const;
+ void WriteNamedExpressions(const com::sun::star::uno::Reference <com::sun::star::sheet::XSpreadsheetDocument>& xSpreadDoc);
+ void WriteImportDescriptor(const com::sun::star::uno::Sequence <com::sun::star::beans::PropertyValue> aImportDescriptor);
+ rtl::OUString getOperatorXML(const com::sun::star::sheet::FilterOperator aFilterOperator, const sal_Bool bUseRegularExpressions) const;
+ void WriteCondition(const com::sun::star::sheet::TableFilterField& aFilterField, sal_Bool bIsCaseSensitive, sal_Bool bUseRegularExpressions);
+ void WriteFilterDescriptor(const com::sun::star::uno::Reference <com::sun::star::sheet::XSheetFilterDescriptor>& xSheetFilterDescriptor, const rtl::OUString sDatabaseRangeName);
+ void WriteSortDescriptor(const com::sun::star::uno::Sequence <com::sun::star::beans::PropertyValue> aSortProperties);
+ void WriteSubTotalDescriptor(const com::sun::star::uno::Reference <com::sun::star::sheet::XSubTotalDescriptor> xSubTotalDescriptor, const rtl::OUString sDatabaseRangeName);
+ void WriteDatabaseRanges(const com::sun::star::uno::Reference <com::sun::star::sheet::XSpreadsheetDocument>& xSpreadDoc);
+ rtl::OUString getDPOperatorXML(const ScQueryOp aFilterOperator, const sal_Bool bUseRegularExpressions,
+ const sal_Bool bIsString, const double dVal) const;
+ void WriteDPCondition(const ScQueryEntry& aQueryEntry, sal_Bool bIsCaseSensitive, sal_Bool bUseRegularExpressions);
+ void WriteDPFilter(const ScQueryParam& aQueryParam);
+ void WriteDataPilots(const com::sun::star::uno::Reference <com::sun::star::sheet::XSpreadsheetDocument>& xSpreaDoc);
+protected:
+ virtual SvXMLAutoStylePoolP* CreateAutoStylePool();
+public:
+ ScXMLExport( const com::sun::star::uno::Reference <com::sun::star::frame::XModel>& xTempModel, const ::rtl::OUString& rFileName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XDocumentHandler>& rHandler,
+ sal_Bool bShowProgr );
+ virtual ~ScXMLExport();
+
+ com::sun::star::uno::Reference <com::sun::star::frame::XModel>& GetXModel() { return xModel; }
+ const com::sun::star::uno::Reference <com::sun::star::frame::XModel>& GetXModel() const { return xModel; }
+
+ static sal_Int16 GetFieldUnit();
+ ScDocument* GetDocument();
+ sal_Int32 GetLastColumn(const sal_Int32 nTable);// { return nLastColumns[nTable]; }
+ sal_Int32 GetLastRow(const sal_Int32 nTable);// { return nLastRows[nTable]; }
+ sal_Bool IsMatrix (const com::sun::star::uno::Reference <com::sun::star::table::XCellRange>& xCellRange,
+ const com::sun::star::uno::Reference <com::sun::star::sheet::XSpreadsheet>& xTable,
+ const sal_Int32 nCol, const sal_Int32 nRow,
+ com::sun::star::table::CellRangeAddress& aCellAddress, sal_Bool& bIsFirst) const;
+
+ XMLCellStylesPropertySetMapper* GetCellStylesPropertySetMapper() { return pCellStylesPropertySetMapper; }
+
+// SvXMLExportItemMapper& GetParaItemMapper() { return *pParaItemMapper; }
+// SvXMLExportItemMapper& GetTableItemMapper() { return *pTableItemMapper; }
+// SwXMLAutoStylePool& GetAutoStylePool() { return *pAutoStylePool; }
+};
+
+class ScMyNotEmptyCellsIterator
+{
+ ScShapesContainer* pShapes;
+ ScMyEmptyDatabaseRanges* pEmptyDatabaseRanges;
+ ScMyMergedCells* pMergedCells;
+ com::sun::star::uno::Reference<com::sun::star::sheet::XSpreadsheet> xTable;
+
+ ScXMLExport& rExport;
+ ScHorizontalCellIterator* pCellItr;
+
+ ScMyCell aCurrentCell;
+ ScMyShape aCurrentShape;
+ ScMyRange aNextMergedCells;
+ com::sun::star::table::CellRangeAddress aNextEmptyCells;
+ sal_Int16 nCurrentTable;
+
+ sal_Bool bHasShapes; // Current Table has shapes
+ sal_Bool bHasShape; // Current Cell has shapes
+ sal_Bool bShapeWasWritten;
+ sal_Bool bHasEmptyDatabaseRanges; // Current Table has empty DatabaseRanges
+ sal_Bool bIsEmptyDatabaseRange; // Current Cell is in a empty Database Range
+ sal_Bool bHasMergedCells; // Current Table has merged Cells
+ sal_Bool bIsMergedBase; // Current Cell is the left top edge of merged Cells
+ sal_Bool bIsCovered; // Current Cell is covered by a merged Cell
+ sal_Bool bHasAnnotation; // Current Cell has Annotation
+ sal_Bool bIsMatrixBase; // Current Cell is the left top edge of a matrix Cell
+ sal_Bool bIsMatrixCovered; // Current Cell is in a Matrix but not the left top edge of a matrix
+
+ void HasAnnotation(ScMyCell& aCell);
+public:
+ ScMyNotEmptyCellsIterator(ScXMLExport& rExport);
+ ~ScMyNotEmptyCellsIterator();
+
+ void SetShapes(ScShapesContainer* pTempShapes);
+// void GetNextShape();
+ void SetEmptyDatabaseRanges(ScMyEmptyDatabaseRanges* pTempEmptyDatabaseRanges);
+ void SetMergedCells(ScMyMergedCells* pTempMergedCells);
+ void SetCurrentTable(const sal_Int32 nTable);
+ void SetCurrentShape(const ScMyShape& aShape) { aCurrentShape = aShape; bHasShape = sal_True; bHasShapes = sal_True; bShapeWasWritten = sal_True; }
+ void SetHasShape(const sal_Bool bValue) { bHasShape = bValue; bHasShapes = bValue; bShapeWasWritten = sal_True; }
+
+ sal_Bool GetNext(ScMyCell& aCell);
+};
+
+#endif
+
diff --git a/sc/source/filter/xml/xmlfilti.cxx b/sc/source/filter/xml/xmlfilti.cxx
new file mode 100644
index 000000000000..a5936dc76af6
--- /dev/null
+++ b/sc/source/filter/xml/xmlfilti.cxx
@@ -0,0 +1,855 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlfilti.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmlfilti.hxx"
+#include "xmlimprt.hxx"
+#include "docuno.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlkywd.hxx>
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLFilterContext::ScXMLFilterContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
+ bSkipDuplicates(sal_False),
+ bUseRegularExpressions(sal_False),
+ bConnectionOr(sal_True),
+ bNextConnectionOr(sal_True),
+ bCopyOutputData(sal_False),
+ bConditionSourceRange(sal_False),
+ aFilterFields(),
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDatabaseRangeContext = pTempDatabaseRangeContext;
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetFilterAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_FILTER_ATTR_TARGET_RANGE_ADDRESS :
+ {
+ ScXMLImport& rXMLImport = GetScImport();
+ ScModelObj* pDocObj = ScModelObj::getImplementation( rXMLImport.GetModel() );
+ if ( pDocObj )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ ScAddress aStartCellAddress;
+ //ScAddress aEndCellAddress;
+ sal_Int16 i = 0;
+ while ((sValue[i] != ':') && (i < sValue.getLength()))
+ i++;
+ rtl::OUString sStartCellAddress = sValue.copy(0, i);
+ //rtl::OUString sEndCellAddress = sRangeAddress.copy(i + 1);
+ aStartCellAddress.Parse(sStartCellAddress, pDoc);
+ //aEndCellAddress.Parse(sEndCellAddress, pDoc);
+ aOutputPosition.Column = aStartCellAddress.Col();
+ aOutputPosition.Row = aStartCellAddress.Row();
+ aOutputPosition.Sheet = aStartCellAddress.Tab();
+ bCopyOutputData = sal_True;
+ }
+ }
+ break;
+ case XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS :
+ {
+ ScXMLImport& rXMLImport = GetScImport();
+ ScModelObj* pDocObj = ScModelObj::getImplementation( rXMLImport.GetModel() );
+ if ( pDocObj )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ ScAddress aStartCellAddress;
+ ScAddress aEndCellAddress;
+ sal_Int16 i = 0;
+ while ((sValue[i] != ':') && (i < sValue.getLength()))
+ i++;
+ rtl::OUString sStartCellAddress = sValue.copy(0, i);
+ rtl::OUString sEndCellAddress = sValue.copy(i + 1);
+ aStartCellAddress.Parse(sStartCellAddress, pDoc);
+ aEndCellAddress.Parse(sEndCellAddress, pDoc);
+ aConditionSourceRangeAddress.StartColumn = aStartCellAddress.Col();
+ aConditionSourceRangeAddress.StartRow = aStartCellAddress.Row();
+ aConditionSourceRangeAddress.Sheet = aStartCellAddress.Tab();
+ aConditionSourceRangeAddress.EndColumn = aEndCellAddress.Col();
+ aConditionSourceRangeAddress.EndRow = aEndCellAddress.Row();
+ bConditionSourceRange = sal_True;
+ }
+
+ }
+ break;
+ case XML_TOK_FILTER_ATTR_CONDITION_SOURCE :
+ {
+ // not supported by StarOffice
+ }
+ break;
+ case XML_TOK_FILTER_ATTR_DISPLAY_DUPLICATES :
+ {
+ if (sValue.compareToAscii(sXML_false) == 0)
+ bSkipDuplicates = sal_True;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLFilterContext::~ScXMLFilterContext()
+{
+}
+
+SvXMLImportContext *ScXMLFilterContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetFilterElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_FILTER_AND:
+ {
+ pContext = new ScXMLAndContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ case XML_TOK_FILTER_OR:
+ {
+ pContext = new ScXMLOrContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ case XML_TOK_FILTER_CONDITION:
+ {
+ pContext = new ScXMLConditionContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLFilterContext::EndElement()
+{
+ pDatabaseRangeContext->SetFilterUseRegularExpressions(bUseRegularExpressions);
+ if (bCopyOutputData)
+ {
+ pDatabaseRangeContext->SetFilterOutputPosition(aOutputPosition);
+ pDatabaseRangeContext->SetFilterCopyOutputData(bCopyOutputData);
+ }
+ else
+ pDatabaseRangeContext->SetFilterCopyOutputData(sal_False);
+ pDatabaseRangeContext->SetFilterIsCaseSensitive(bIsCaseSensitive);
+ pDatabaseRangeContext->SetFilterSkipDuplicates(bSkipDuplicates);
+ pDatabaseRangeContext->SetFilterFields(aFilterFields);
+ if (bConditionSourceRange)
+ pDatabaseRangeContext->SetFilterConditionSourceRangeAddress(aConditionSourceRangeAddress);
+}
+
+ScXMLAndContext::ScXMLAndContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLFilterContext* pTempFilterContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pFilterContext = pTempFilterContext;
+ pFilterContext->OpenConnection(sal_False);
+}
+
+ScXMLAndContext::~ScXMLAndContext()
+{
+}
+
+SvXMLImportContext *ScXMLAndContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetFilterElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_FILTER_OR:
+ {
+ // not supported in StarOffice
+ }
+ break;
+ case XML_TOK_FILTER_CONDITION:
+ {
+ pContext = new ScXMLConditionContext( GetScImport(), nPrefix,
+ rLName, xAttrList, pFilterContext);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLAndContext::EndElement()
+{
+ pFilterContext->CloseConnection();
+}
+
+ScXMLOrContext::ScXMLOrContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLFilterContext* pTempFilterContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pFilterContext = pTempFilterContext;
+ pFilterContext->OpenConnection(sal_True);
+}
+
+ScXMLOrContext::~ScXMLOrContext()
+{
+}
+
+SvXMLImportContext *ScXMLOrContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetFilterElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_FILTER_AND:
+ {
+ pContext = new ScXMLAndContext( GetScImport(), nPrefix,
+ rLName, xAttrList, pFilterContext);
+ }
+ break;
+ case XML_TOK_FILTER_CONDITION:
+ {
+ pContext = new ScXMLConditionContext( GetScImport(), nPrefix,
+ rLName, xAttrList, pFilterContext);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLOrContext::EndElement()
+{
+ pFilterContext->CloseConnection();
+}
+
+ScXMLConditionContext::ScXMLConditionContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLFilterContext* pTempFilterContext) :
+ bIsCaseSensitive(sal_False),
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pFilterContext = pTempFilterContext;
+ sDataType = rtl::OUString::createFromAscii(sXML_text);
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetFilterConditionAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_CONDITION_ATTR_FIELD_NUMBER :
+ {
+ nField = sValue.toInt32();
+ }
+ break;
+ case XML_TOK_CONDITION_ATTR_CASE_SENSITIVE :
+ {
+ if (sValue.compareToAscii(sXML_true) == 0)
+ bIsCaseSensitive = sal_True;
+ }
+ break;
+ case XML_TOK_CONDITION_ATTR_DATA_TYPE :
+ {
+ sDataType = sValue;
+ }
+ break;
+ case XML_TOK_CONDITION_ATTR_VALUE :
+ {
+ sConditionValue = sValue;
+ }
+ break;
+ case XML_TOK_CONDITION_ATTR_OPERATOR :
+ {
+ sOperator = sValue;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLConditionContext::~ScXMLConditionContext()
+{
+}
+
+SvXMLImportContext *ScXMLConditionContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLConditionContext::getOperatorXML(const rtl::OUString sTempOperator, sheet::FilterOperator& aFilterOperator, sal_Bool& bUseRegularExpressions) const
+{
+ bUseRegularExpressions = sal_False;
+ if (sTempOperator.compareToAscii(sXML_match) == 0)
+ {
+ bUseRegularExpressions = sal_True;
+ aFilterOperator = sheet::FilterOperator_EQUAL;
+ }
+ else if (sTempOperator.compareToAscii(sXML_nomatch) == 0)
+ {
+ bUseRegularExpressions = sal_True;
+ aFilterOperator = sheet::FilterOperator_NOT_EQUAL;
+ }
+ else if (sTempOperator.compareToAscii("=") == 0)
+ aFilterOperator = sheet::FilterOperator_EQUAL;
+ else if (sTempOperator.compareToAscii("!=") == 0)
+ aFilterOperator = sheet::FilterOperator_NOT_EQUAL;
+ else if (sTempOperator.compareToAscii(sXML_bottom_percent) == 0)
+ aFilterOperator = sheet::FilterOperator_BOTTOM_PERCENT;
+ else if (sTempOperator.compareToAscii(sXML_bottom_values) == 0)
+ aFilterOperator = sheet::FilterOperator_BOTTOM_VALUES;
+ else if (sTempOperator.compareToAscii(sXML_empty) == 0)
+ aFilterOperator = sheet::FilterOperator_EMPTY;
+ else if (sTempOperator.compareToAscii(">") == 0)
+ aFilterOperator = sheet::FilterOperator_GREATER;
+ else if (sTempOperator.compareToAscii(">=") == 0)
+ aFilterOperator = sheet::FilterOperator_GREATER_EQUAL;
+ else if (sTempOperator.compareToAscii("<") == 0)
+ aFilterOperator = sheet::FilterOperator_LESS;
+ else if (sTempOperator.compareToAscii("<=") == 0)
+ aFilterOperator = sheet::FilterOperator_LESS_EQUAL;
+ else if (sTempOperator.compareToAscii(sXML_noempty) == 0)
+ aFilterOperator = sheet::FilterOperator_NOT_EMPTY;
+ else if (sTempOperator.compareToAscii(sXML_top_percent) == 0)
+ aFilterOperator = sheet::FilterOperator_TOP_PERCENT;
+ else if (sTempOperator.compareToAscii(sXML_top_values) == 0)
+ aFilterOperator = sheet::FilterOperator_TOP_VALUES;
+}
+
+void ScXMLConditionContext::EndElement()
+{
+ sheet::TableFilterField aFilterField;
+ if (pFilterContext->GetConnection())
+ aFilterField.Connection = sheet::FilterConnection_OR;
+ else
+ aFilterField.Connection = sheet::FilterConnection_AND;
+ pFilterContext->SetIsCaseSensitive(bIsCaseSensitive);
+ sal_Bool bUseRegularExpressions;
+ getOperatorXML(sOperator, aFilterField.Operator, bUseRegularExpressions);
+ pFilterContext->SetUseRegularExpressions(bUseRegularExpressions);
+ aFilterField.Field = nField;
+ if (sDataType.compareToAscii(sXML_number) == 0)
+ {
+ aFilterField.NumericValue = sConditionValue.toDouble();
+ aFilterField.IsNumeric = sal_True;
+ }
+ else
+ {
+ aFilterField.StringValue = sConditionValue;
+ aFilterField.IsNumeric = sal_False;
+ }
+ pFilterContext->AddFilterField(aFilterField);
+}
+
+//==========================================================================
+
+ScXMLDPFilterContext::ScXMLDPFilterContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pTempDataPilotTableContext) :
+ bSkipDuplicates(sal_False),
+ bUseRegularExpressions(sal_False),
+ bConnectionOr(sal_True),
+ bNextConnectionOr(sal_True),
+ bCopyOutputData(sal_False),
+ bConditionSourceRange(sal_False),
+ aFilterFields(),
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDataPilotTable = pTempDataPilotTableContext;
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetFilterAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_FILTER_ATTR_TARGET_RANGE_ADDRESS :
+ {
+ ScXMLImport& rXMLImport = GetScImport();
+ ScModelObj* pDocObj = ScModelObj::getImplementation( rXMLImport.GetModel() );
+ if ( pDocObj )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ //ScAddress aEndCellAddress;
+ sal_Int16 i = 0;
+ while ((sValue[i] != ':') && (i < sValue.getLength()))
+ i++;
+ rtl::OUString sStartCellAddress = sValue.copy(0, i);
+ //rtl::OUString sEndCellAddress = sRangeAddress.copy(i + 1);
+ aOutputPosition.Parse(sStartCellAddress, pDoc);
+ //aEndCellAddress.Parse(sEndCellAddress, pDoc);
+ bCopyOutputData = sal_True;
+ }
+ }
+ break;
+ case XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS :
+ {
+ ScXMLImport& rXMLImport = GetScImport();
+ ScModelObj* pDocObj = ScModelObj::getImplementation( rXMLImport.GetModel() );
+ if ( pDocObj )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ ScAddress aStartCellAddress;
+ ScAddress aEndCellAddress;
+ sal_Int16 i = 0;
+ while ((sValue[i] != ':') && (i < sValue.getLength()))
+ i++;
+ rtl::OUString sStartCellAddress = sValue.copy(0, i);
+ rtl::OUString sEndCellAddress = sValue.copy(i + 1);
+ aStartCellAddress.Parse(sStartCellAddress, pDoc);
+ aEndCellAddress.Parse(sEndCellAddress, pDoc);
+ aConditionSourceRangeAddress = ScRange(aStartCellAddress, aEndCellAddress);
+ bConditionSourceRange = sal_True;
+ }
+ }
+ break;
+ case XML_TOK_FILTER_ATTR_CONDITION_SOURCE :
+ {
+ // not supported by StarOffice
+ }
+ break;
+ case XML_TOK_FILTER_ATTR_DISPLAY_DUPLICATES :
+ {
+ if (sValue.compareToAscii(sXML_false) == 0)
+ bSkipDuplicates = sal_True;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLDPFilterContext::~ScXMLDPFilterContext()
+{
+}
+
+SvXMLImportContext *ScXMLDPFilterContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetFilterElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_FILTER_AND:
+ {
+ pContext = new ScXMLDPAndContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ case XML_TOK_FILTER_OR:
+ {
+ pContext = new ScXMLDPOrContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ case XML_TOK_FILTER_CONDITION:
+ {
+ pContext = new ScXMLDPConditionContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDPFilterContext::EndElement()
+{
+ pDataPilotTable->SetFilterUseRegularExpressions(bUseRegularExpressions);
+ if (bCopyOutputData)
+ {
+ pDataPilotTable->SetFilterOutputPosition(aOutputPosition);
+ pDataPilotTable->SetFilterCopyOutputData(bCopyOutputData);
+ }
+ else
+ pDataPilotTable->SetFilterCopyOutputData(sal_False);
+ pDataPilotTable->SetFilterIsCaseSensitive(bIsCaseSensitive);
+ pDataPilotTable->SetFilterSkipDuplicates(bSkipDuplicates);
+ pDataPilotTable->SetSourceQueryParam(aFilterFields);
+ if (bConditionSourceRange)
+ pDataPilotTable->SetFilterSourceRange(aConditionSourceRangeAddress);
+}
+
+ScXMLDPAndContext::ScXMLDPAndContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDPFilterContext* pTempFilterContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pFilterContext = pTempFilterContext;
+ pFilterContext->OpenConnection(sal_False);
+}
+
+ScXMLDPAndContext::~ScXMLDPAndContext()
+{
+}
+
+SvXMLImportContext *ScXMLDPAndContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetFilterElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_FILTER_OR:
+ {
+ // not supported in StarOffice
+ }
+ break;
+ case XML_TOK_FILTER_CONDITION:
+ {
+ pContext = new ScXMLDPConditionContext( GetScImport(), nPrefix,
+ rLName, xAttrList, pFilterContext);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDPAndContext::EndElement()
+{
+ pFilterContext->CloseConnection();
+}
+
+ScXMLDPOrContext::ScXMLDPOrContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDPFilterContext* pTempFilterContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pFilterContext = pTempFilterContext;
+ pFilterContext->OpenConnection(sal_True);
+}
+
+ScXMLDPOrContext::~ScXMLDPOrContext()
+{
+}
+
+SvXMLImportContext *ScXMLDPOrContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetFilterElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_FILTER_AND:
+ {
+ pContext = new ScXMLDPAndContext( GetScImport(), nPrefix,
+ rLName, xAttrList, pFilterContext);
+ }
+ break;
+ case XML_TOK_FILTER_CONDITION:
+ {
+ pContext = new ScXMLDPConditionContext( GetScImport(), nPrefix,
+ rLName, xAttrList, pFilterContext);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDPOrContext::EndElement()
+{
+ pFilterContext->CloseConnection();
+}
+
+ScXMLDPConditionContext::ScXMLDPConditionContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDPFilterContext* pTempFilterContext) :
+ bIsCaseSensitive(sal_False),
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pFilterContext = pTempFilterContext;
+ sDataType = rtl::OUString::createFromAscii(sXML_text);
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetFilterConditionAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_CONDITION_ATTR_FIELD_NUMBER :
+ {
+ nField = sValue.toInt32();
+ }
+ break;
+ case XML_TOK_CONDITION_ATTR_CASE_SENSITIVE :
+ {
+ if (sValue.compareToAscii(sXML_true) == 0)
+ bIsCaseSensitive = sal_True;
+ }
+ break;
+ case XML_TOK_CONDITION_ATTR_DATA_TYPE :
+ {
+ sDataType = sValue;
+ }
+ break;
+ case XML_TOK_CONDITION_ATTR_VALUE :
+ {
+ sConditionValue = sValue;
+ }
+ break;
+ case XML_TOK_CONDITION_ATTR_OPERATOR :
+ {
+ sOperator = sValue;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLDPConditionContext::~ScXMLDPConditionContext()
+{
+}
+
+SvXMLImportContext *ScXMLDPConditionContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLDPConditionContext::getOperatorXML(const rtl::OUString sTempOperator, ScQueryOp& aFilterOperator, sal_Bool& bUseRegularExpressions,
+ double& dVal) const
+{
+ bUseRegularExpressions = sal_False;
+ if (sTempOperator.compareToAscii(sXML_match) == 0)
+ {
+ bUseRegularExpressions = sal_True;
+ aFilterOperator = SC_EQUAL;
+ }
+ else if (sTempOperator.compareToAscii(sXML_nomatch) == 0)
+ {
+ bUseRegularExpressions = sal_True;
+ aFilterOperator = SC_NOT_EQUAL;
+ }
+ else if (sTempOperator.compareToAscii("=") == 0)
+ aFilterOperator = SC_EQUAL;
+ else if (sTempOperator.compareToAscii("!=") == 0)
+ aFilterOperator = SC_NOT_EQUAL;
+ else if (sTempOperator.compareToAscii(sXML_bottom_percent) == 0)
+ aFilterOperator = SC_BOTPERC;
+ else if (sTempOperator.compareToAscii(sXML_bottom_values) == 0)
+ aFilterOperator = SC_BOTVAL;
+ else if (sTempOperator.compareToAscii(sXML_empty) == 0)
+ dVal = SC_EMPTYFIELDS;
+ else if (sTempOperator.compareToAscii(">") == 0)
+ aFilterOperator = SC_GREATER;
+ else if (sTempOperator.compareToAscii(">=") == 0)
+ aFilterOperator = SC_GREATER_EQUAL;
+ else if (sTempOperator.compareToAscii("<") == 0)
+ aFilterOperator = SC_LESS;
+ else if (sTempOperator.compareToAscii("<=") == 0)
+ aFilterOperator = SC_LESS_EQUAL;
+ else if (sTempOperator.compareToAscii(sXML_noempty) == 0)
+ dVal = SC_NONEMPTYFIELDS;
+ else if (sTempOperator.compareToAscii(sXML_top_percent) == 0)
+ aFilterOperator = SC_TOPPERC;
+ else if (sTempOperator.compareToAscii(sXML_top_values) == 0)
+ aFilterOperator = SC_TOPVAL;
+}
+
+void ScXMLDPConditionContext::EndElement()
+{
+ ScQueryEntry aFilterField;
+ if (pFilterContext->GetConnection())
+ aFilterField.eConnect = SC_OR;
+ else
+ aFilterField.eConnect = SC_AND;
+ pFilterContext->SetIsCaseSensitive(bIsCaseSensitive);
+ sal_Bool bUseRegularExpressions;
+ double dVal;
+ getOperatorXML(sOperator, aFilterField.eOp, bUseRegularExpressions, dVal);
+ pFilterContext->SetUseRegularExpressions(bUseRegularExpressions);
+ aFilterField.nField = nField;
+ if (sDataType.compareToAscii(sXML_number) == 0)
+ {
+ aFilterField.nVal = sConditionValue.toDouble();
+ aFilterField.bQueryByString = sal_False;
+ }
+ else
+ {
+ aFilterField.pStr = new String(sConditionValue);
+ aFilterField.bQueryByString = sal_True;
+ aFilterField.nVal = dVal;
+ }
+ pFilterContext->AddFilterField(aFilterField);
+}
+
+
+
diff --git a/sc/source/filter/xml/xmlfilti.hxx b/sc/source/filter/xml/xmlfilti.hxx
new file mode 100644
index 000000000000..ec5f93655ca6
--- /dev/null
+++ b/sc/source/filter/xml/xmlfilti.hxx
@@ -0,0 +1,357 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlfilti.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:15 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLFILTI_HXX
+#define SC_XMLFILTI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLADDRESS_HPP_
+#include <com/sun/star/table/CellAddress.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLRANGEADDRESS_HPP_
+#include <com/sun/star/table/CellRangeAddress.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_FILTEROPERATOR_HPP_
+#include <com/sun/star/sheet/FilterOperator.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_TABLEFILTERFIELD_HPP_
+#include <com/sun/star/sheet/TableFilterField.hpp>
+#endif
+#ifndef _STACK_HXX
+#include <tools/stack.hxx>
+#endif
+
+#include "xmldrani.hxx"
+#include "xmldpimp.hxx"
+
+class ScXMLImport;
+
+class ScXMLFilterContext : public SvXMLImportContext
+{
+ ScXMLDatabaseRangeContext* pDatabaseRangeContext;
+
+ com::sun::star::uno::Sequence <com::sun::star::sheet::TableFilterField> aFilterFields;
+ com::sun::star::table::CellAddress aOutputPosition;
+ com::sun::star::table::CellRangeAddress aConditionSourceRangeAddress;
+ sal_Int16 nUserListIndex;
+ sal_Bool bSkipDuplicates;
+ sal_Bool bCopyOutputData;
+ sal_Bool bUseRegularExpressions;
+ sal_Bool bIsCaseSensitive;
+ sal_Bool bEnabledUserList;
+ sal_Bool bConnectionOr;
+ sal_Bool bNextConnectionOr;
+ sal_Bool bConditionSourceRange;
+ Stack aConnectionOrStack;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLFilterContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
+
+ virtual ~ScXMLFilterContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+
+ void SetIsCaseSensitive(const sal_Bool bTemp) { bIsCaseSensitive = bTemp; }
+ void SetUseRegularExpressions(const sal_Bool bTemp) { if (!bUseRegularExpressions) bUseRegularExpressions = sal_True;}
+ void OpenConnection(const sal_Bool bTemp) { sal_Bool* pTemp = new sal_Bool; *pTemp = bConnectionOr;
+ bConnectionOr = bNextConnectionOr; bNextConnectionOr = bTemp;
+ aConnectionOrStack.Push(pTemp);}
+ void CloseConnection() { sal_Bool* pTemp = static_cast <sal_Bool*> (aConnectionOrStack.Pop()); bConnectionOr = *pTemp; bNextConnectionOr = *pTemp; delete pTemp;}
+ sal_Bool GetConnection() { sal_Bool bTemp = bConnectionOr; bConnectionOr = bNextConnectionOr; return bTemp; }
+ void AddFilterField (const com::sun::star::sheet::TableFilterField aFilterField) { aFilterFields.realloc(aFilterFields.getLength() + 1);
+ aFilterFields[aFilterFields.getLength() - 1] = aFilterField; }
+};
+
+class ScXMLAndContext : public SvXMLImportContext
+{
+ ScXMLFilterContext* pFilterContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLAndContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLFilterContext* pTempFilterContext);
+
+ virtual ~ScXMLAndContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLOrContext : public SvXMLImportContext
+{
+ ScXMLFilterContext* pFilterContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLOrContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLFilterContext* pTempFilterContext);
+
+ virtual ~ScXMLOrContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLConditionContext : public SvXMLImportContext
+{
+ ScXMLFilterContext* pFilterContext;
+
+ rtl::OUString sDataType;
+ rtl::OUString sConditionValue;
+ rtl::OUString sOperator;
+ sal_Int32 nField;
+ sal_Bool bIsCaseSensitive;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLConditionContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLFilterContext* pTempFilterContext);
+
+ virtual ~ScXMLConditionContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ void getOperatorXML(const rtl::OUString sTempOperator, com::sun::star::sheet::FilterOperator& aFilterOperator, sal_Bool& bUseRegularExpressions) const;
+ virtual void EndElement();
+};
+
+// Datapilot (Core)
+
+class ScXMLDPFilterContext : public SvXMLImportContext
+{
+ ScXMLDataPilotTableContext* pDataPilotTable;
+
+ ScQueryParam aFilterFields;
+ ScAddress aOutputPosition;
+ ScRange aConditionSourceRangeAddress;
+ sal_Int16 nUserListIndex;
+ sal_Bool bSkipDuplicates;
+ sal_Bool bCopyOutputData;
+ sal_Bool bUseRegularExpressions;
+ sal_Bool bIsCaseSensitive;
+ sal_Bool bEnabledUserList;
+ sal_Bool bConnectionOr;
+ sal_Bool bNextConnectionOr;
+ sal_Bool bConditionSourceRange;
+ Stack aConnectionOrStack;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDPFilterContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDataPilotTableContext* pTempDataPilotTableContext);
+
+ virtual ~ScXMLDPFilterContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+
+ void SetIsCaseSensitive(const sal_Bool bTemp) { bIsCaseSensitive = bTemp; }
+ void SetUseRegularExpressions(const sal_Bool bTemp) { if (!bUseRegularExpressions) bUseRegularExpressions = sal_True;}
+ void OpenConnection(const sal_Bool bTemp) { sal_Bool* pTemp = new sal_Bool; *pTemp = bConnectionOr;
+ bConnectionOr = bNextConnectionOr; bNextConnectionOr = bTemp;
+ aConnectionOrStack.Push(pTemp);}
+ void CloseConnection() { sal_Bool* pTemp = static_cast <sal_Bool*> (aConnectionOrStack.Pop()); bConnectionOr = *pTemp; bNextConnectionOr = *pTemp; delete pTemp;}
+ sal_Bool GetConnection() { sal_Bool bTemp = bConnectionOr; bConnectionOr = bNextConnectionOr; return bTemp; }
+ void AddFilterField (const ScQueryEntry& aFilterField) { aFilterFields.Resize(aFilterFields.GetEntryCount() + 1);
+ ScQueryEntry aEntry = aFilterFields.GetEntry(aFilterFields.GetEntryCount() - 1);
+ aEntry = aFilterField; }
+};
+
+class ScXMLDPAndContext : public SvXMLImportContext
+{
+ ScXMLDPFilterContext* pFilterContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDPAndContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDPFilterContext* pTempFilterContext);
+
+ virtual ~ScXMLDPAndContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLDPOrContext : public SvXMLImportContext
+{
+ ScXMLDPFilterContext* pFilterContext;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDPOrContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDPFilterContext* pTempFilterContext);
+
+ virtual ~ScXMLDPOrContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLDPConditionContext : public SvXMLImportContext
+{
+ ScXMLDPFilterContext* pFilterContext;
+
+ rtl::OUString sDataType;
+ rtl::OUString sConditionValue;
+ rtl::OUString sOperator;
+ sal_Int32 nField;
+ sal_Bool bIsCaseSensitive;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDPConditionContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDPFilterContext* pTempFilterContext);
+
+ virtual ~ScXMLDPConditionContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ void getOperatorXML(const rtl::OUString sTempOperator, ScQueryOp& aFilterOperator, sal_Bool& bUseRegularExpressions,
+ double& dVal) const;
+ virtual void EndElement();
+};
+
+#endif
diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx
new file mode 100644
index 000000000000..cb2be31152b0
--- /dev/null
+++ b/sc/source/filter/xml/xmlimprt.cxx
@@ -0,0 +1,1197 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlimprt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlnmspe.hxx>
+#include <xmloff/i18nmap.hxx>
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/xmlkywd.hxx>
+#include <xmloff/xmlictxt.hxx>
+#include <xmloff/xmlmetai.hxx>
+#include <sfx2/objsh.hxx>
+#ifndef _XMLOFF_XMLNUMFI_HXX
+#include <xmloff/xmlnumfi.hxx>
+#endif
+
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/document/XDocumentInfoSupplier.hpp>
+
+#include "xmlimprt.hxx"
+#include "document.hxx"
+#include "xmlbodyi.hxx"
+#include "xmlstyli.hxx"
+
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCELLRANGE_HPP_
+#include <com/sun/star/sheet/XSheetCellRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGEADDRESSABLE_HPP_
+#include <com/sun/star/sheet/XCellRangeAddressable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEETDOCUMENT_HPP_
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XMERGEABLE_HPP_
+#include <com/sun/star/util/XMergeable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_CELLINSERTMODE_HPP_
+#include <com/sun/star/sheet/CellInsertMode.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGEMOVEMENT_HPP_
+#include <com/sun/star/sheet/XCellRangeMovement.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DOCUMENT_XACTIONLOCKABLE_HPP_
+#include <com/sun/star/document/XActionLockable.hpp>
+#endif
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+
+using namespace com::sun::star;
+
+//----------------------------------------------------------------------------
+
+sal_Char __READONLY_DATA sXML_np__text[] = "text";
+sal_Char __READONLY_DATA sXML_np__table[] = "table";
+
+//----------------------------------------------------------------------------
+
+static __FAR_DATA SvXMLTokenMapEntry aDocTokenMap[] =
+{
+ { XML_NAMESPACE_OFFICE, sXML_styles, XML_TOK_DOC_STYLES },
+ { XML_NAMESPACE_OFFICE, sXML_automatic_styles, XML_TOK_DOC_AUTOSTYLES },
+ { XML_NAMESPACE_OFFICE, sXML_use_styles, XML_TOK_DOC_USESTYLES },
+ { XML_NAMESPACE_OFFICE, sXML_meta, XML_TOK_DOC_META },
+ { XML_NAMESPACE_OFFICE, sXML_body, XML_TOK_DOC_BODY },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aStylesTokenMap[] =
+{
+ { XML_NAMESPACE_STYLE, sXML_style, XML_TOK_STYLES_STYLE },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aStylesAttrTokenMap[] =
+{
+ { XML_NAMESPACE_STYLE, sXML_name, XML_TOK_STYLES_STYLE_NAME },
+ { XML_NAMESPACE_STYLE, sXML_family, XML_TOK_STYLES_STYLE_FAMILY },
+ { XML_NAMESPACE_STYLE, sXML_parent_style_name, XML_TOK_STYLES_STYLE_PARENT_STYLE_NAME },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aStyleTokenMap[] =
+{
+ { XML_NAMESPACE_STYLE, sXML_properties, XML_TOK_STYLE_PROPERTIES },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aBodyTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_table, XML_TOK_BODY_TABLE },
+ { XML_NAMESPACE_TABLE, sXML_named_expressions, XML_TOK_BODY_NAMED_EXPRESSIONS },
+ { XML_NAMESPACE_TABLE, sXML_database_ranges, XML_TOK_BODY_DATABASE_RANGES },
+ { XML_NAMESPACE_TABLE, sXML_database_range, XML_TOK_BODY_DATABASE_RANGE },
+ { XML_NAMESPACE_TABLE, sXML_data_pilot_tables, XML_TOK_BODY_DATA_PILOT_TABLES },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTableTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_table_header_columns, XML_TOK_TABLE_HEADER_COLS },
+ { XML_NAMESPACE_TABLE, sXML_table_columns, XML_TOK_TABLE_COLS },
+ { XML_NAMESPACE_TABLE, sXML_table_column, XML_TOK_TABLE_COL },
+ { XML_NAMESPACE_TABLE, sXML_table_header_rows, XML_TOK_TABLE_HEADER_ROWS },
+ { XML_NAMESPACE_TABLE, sXML_table_rows, XML_TOK_TABLE_ROWS },
+ { XML_NAMESPACE_TABLE, sXML_table_row, XML_TOK_TABLE_ROW },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aNamedExpressionsTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_named_range, XML_TOK_NAMED_EXPRESSIONS_NAMED_RANGE },
+ { XML_NAMESPACE_TABLE, sXML_named_expression, XML_TOK_NAMED_EXPRESSIONS_NAMED_EXPRESSION },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aNamedRangeAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_name, XML_TOK_NAMED_RANGE_ATTR_NAME },
+ { XML_NAMESPACE_TABLE, sXML_cell_range_address, XML_TOK_NAMED_RANGE_ATTR_CELL_RANGE_ADDRESS },
+ { XML_NAMESPACE_TABLE, sXML_base_cell_address, XML_TOK_NAMED_RANGE_ATTR_BASE_CELL_ADDRESS },
+ { XML_NAMESPACE_TABLE, sXML_range_usable_as, XML_TOK_NAMED_RANGE_ATTR_RANGE_USABLE_AS },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aNamedExpressionAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_name, XML_TOK_NAMED_EXPRESSION_ATTR_NAME },
+ { XML_NAMESPACE_TABLE, sXML_base_cell_address, XML_TOK_NAMED_EXPRESSION_ATTR_BASE_CELL_ADDRESS },
+ { XML_NAMESPACE_TABLE, sXML_expression, XML_TOK_NAMED_EXPRESSION_ATTR_EXPRESSION },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangesTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_database_range, XML_TOK_DATABASE_RANGE },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_database_source_sql, XML_TOK_DATABASE_RANGE_SOURCE_SQL },
+ { XML_NAMESPACE_TABLE, sXML_database_source_table, XML_TOK_DATABASE_RANGE_SOURCE_TABLE },
+ { XML_NAMESPACE_TABLE, sXML_database_source_query, XML_TOK_DATABASE_RANGE_SOURCE_QUERY },
+ { XML_NAMESPACE_TABLE, sXML_filter, XML_TOK_FILTER },
+ { XML_NAMESPACE_TABLE, sXML_sort, XML_TOK_SORT },
+ { XML_NAMESPACE_TABLE, sXML_subtotal_rules, XML_TOK_DATABASE_RANGE_SUBTOTAL_RULES },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_name, XML_TOK_DATABASE_RANGE_ATTR_NAME },
+ { XML_NAMESPACE_TABLE, sXML_is_selection, XML_TOK_DATABASE_RANGE_ATTR_IS_SELECTION },
+ { XML_NAMESPACE_TABLE, sXML_on_update_keep_styles, XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_STYLES },
+ { XML_NAMESPACE_TABLE, sXML_on_update_keep_size, XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_SIZE },
+ { XML_NAMESPACE_TABLE, sXML_has_persistent_data, XML_TOK_DATABASE_RANGE_ATTR_HAS_PERSISTENT_DATA },
+ { XML_NAMESPACE_TABLE, sXML_orientation, XML_TOK_DATABASE_RANGE_ATTR_ORIENTATION },
+ { XML_NAMESPACE_TABLE, sXML_contains_header, XML_TOK_DATABASE_RANGE_ATTR_CONTAINS_HEADER },
+ { XML_NAMESPACE_TABLE, sXML_display_filter_buttons, XML_TOK_DATABASE_RANGE_ATTR_DISPLAY_FILTER_BUTTONS },
+ { XML_NAMESPACE_TABLE, sXML_target_range_address, XML_TOK_DATABASE_RANGE_ATTR_TARGET_RANGE_ADDRESS },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeSourceSQLAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_database_name, XML_TOK_SOURCE_SQL_ATTR_DATABASE_NAME },
+ { XML_NAMESPACE_TABLE, sXML_sql_statement, XML_TOK_SOURCE_SQL_ATTR_SQL_STATEMENT },
+ { XML_NAMESPACE_TABLE, sXML_parse_sql_statement, XML_TOK_SOURCE_SQL_ATTR_PARSE_SQL_STATEMENT },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeSourceTableAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_database_name, XML_TOK_SOURCE_TABLE_ATTR_DATABASE_NAME },
+ { XML_NAMESPACE_TABLE, sXML_table_name, XML_TOK_SOURCE_TABLE_ATTR_TABLE_NAME },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeSourceQueryAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_database_name, XML_TOK_SOURCE_QUERY_ATTR_DATABASE_NAME },
+ { XML_NAMESPACE_TABLE, sXML_query_name, XML_TOK_SOURCE_QUERY_ATTR_QUERY_NAME },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aFilterTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_filter_and, XML_TOK_FILTER_AND },
+ { XML_NAMESPACE_TABLE, sXML_filter_or, XML_TOK_FILTER_OR },
+ { XML_NAMESPACE_TABLE, sXML_filter_condition, XML_TOK_FILTER_CONDITION },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aFilterAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_target_range_address, XML_TOK_FILTER_ATTR_TARGET_RANGE_ADDRESS },
+ { XML_NAMESPACE_TABLE, sXML_condition_source_range_address, XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS },
+ { XML_NAMESPACE_TABLE, sXML_condition_source, XML_TOK_FILTER_ATTR_CONDITION_SOURCE },
+ { XML_NAMESPACE_TABLE, sXML_display_duplicates, XML_TOK_FILTER_ATTR_DISPLAY_DUPLICATES },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aFilterConditionAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_field_number, XML_TOK_CONDITION_ATTR_FIELD_NUMBER },
+ { XML_NAMESPACE_TABLE, sXML_case_sensitive, XML_TOK_CONDITION_ATTR_CASE_SENSITIVE },
+ { XML_NAMESPACE_TABLE, sXML_data_type, XML_TOK_CONDITION_ATTR_DATA_TYPE },
+ { XML_NAMESPACE_TABLE, sXML_value, XML_TOK_CONDITION_ATTR_VALUE },
+ { XML_NAMESPACE_TABLE, sXML_operator, XML_TOK_CONDITION_ATTR_OPERATOR },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aSortTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_sort_by, XML_TOK_SORT_SORT_BY },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aSortAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_bind_styles_to_content, XML_TOK_SORT_ATTR_BIND_STYLES_TO_CONTENT },
+ { XML_NAMESPACE_TABLE, sXML_target_range_address, XML_TOK_SORT_ATTR_TARGET_RANGE_ADDRESS },
+ { XML_NAMESPACE_TABLE, sXML_case_sensitive, XML_TOK_SORT_ATTR_CASE_SENSITIVE },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aSortSortByAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_field_number, XML_TOK_SORT_BY_ATTR_FIELD_NUMBER },
+ { XML_NAMESPACE_TABLE, sXML_data_type, XML_TOK_SORT_BY_ATTR_DATA_TYPE },
+ { XML_NAMESPACE_TABLE, sXML_order, XML_TOK_SORT_BY_ATTR_ORDER },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeSubTotalRulesTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_sort_groups, XML_TOK_SUBTOTAL_RULES_SORT_GROUPS },
+ { XML_NAMESPACE_TABLE, sXML_subtotal_rule, XML_TOK_SUBTOTAL_RULES_SUBTOTAL_RULE },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeSubTotalRulesAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_bind_styles_to_content, XML_TOK_SUBTOTAL_RULES_ATTR_BIND_STYLES_TO_CONTENT },
+ { XML_NAMESPACE_TABLE, sXML_case_sensitive, XML_TOK_SUBTOTAL_RULES_ATTR_CASE_SENSITIVE },
+ { XML_NAMESPACE_TABLE, sXML_page_breaks_on_group_change, XML_TOK_SUBTOTAL_RULES_ATTR_PAGE_BREAKS_ON_GROUP_CHANGE },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aSubTotalRulesSortGroupsAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_data_type, XML_TOK_SORT_GROUPS_ATTR_DATA_TYPE },
+ { XML_NAMESPACE_TABLE, sXML_order, XML_TOK_SORT_GROUPS_ATTR_ORDER },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aSubTotalRulesSubTotalRuleTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_subtotal_field, XML_TOK_SUBTOTAL_RULE_SUBTOTAL_FIELD },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aSubTotalRulesSubTotalRuleAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_group_by_field_number, XML_TOK_SUBTOTAL_RULE_ATTR_GROUP_BY_FIELD_NUMBER },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aSubTotalRuleSubTotalFieldAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_field_number, XML_TOK_SUBTOTAL_FIELD_ATTR_FIELD_NUMBER },
+ { XML_NAMESPACE_TABLE, sXML_function, XML_TOK_SUBTOTAL_FIELD_ATTR_FUNCTION },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotTablesElemTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_data_pilot_table, XML_TOK_DATA_PILOT_TABLE },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotTableAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_name, XML_TOK_DATA_PILOT_TABLE_ATTR_NAME },
+ { XML_NAMESPACE_TABLE, sXML_application_data, XML_TOK_DATA_PILOT_TABLE_ATTR_APPLICATION_DATA },
+ { XML_NAMESPACE_TABLE, sXML_grand_total, XML_TOK_DATA_PILOT_TABLE_ATTR_GRAND_TOTAL },
+ { XML_NAMESPACE_TABLE, sXML_ignore_empty_rows, XML_TOK_DATA_PILOT_TABLE_ATTR_IGNORE_EMPTY_ROWS },
+ { XML_NAMESPACE_TABLE, sXML_identify_categories, XML_TOK_DATA_PILOT_TABLE_ATTR_IDENTIFY_CATEGORIES },
+ { XML_NAMESPACE_TABLE, sXML_target_range_address, XML_TOK_DATA_PILOT_TABLE_ATTR_TARGET_RANGE_ADDRESS },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotTableElemTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_database_source_sql, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL },
+ { XML_NAMESPACE_TABLE, sXML_database_source_table, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE },
+ { XML_NAMESPACE_TABLE, sXML_database_source_query, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY },
+ { XML_NAMESPACE_TABLE, sXML_source_service, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE },
+ { XML_NAMESPACE_TABLE, sXML_source_cell_range, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE },
+ { XML_NAMESPACE_TABLE, sXML_data_pilot_field, XML_TOK_DATA_PILOT_TABLE_ELEM_DATA_PILOT_FIELD },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotTableSourceServiceAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_name, XML_TOK_SOURCE_SERVICE_ATTR_NAME },
+ { XML_NAMESPACE_TABLE, sXML_source_name, XML_TOK_SOURCE_SERVICE_ATTR_SOURCE_NAME },
+ { XML_NAMESPACE_TABLE, sXML_object_name, XML_TOK_SOURCE_SERVICE_ATTR_OBJECT_NAME },
+ { XML_NAMESPACE_TABLE, sXML_username, XML_TOK_SOURCE_SERVICE_ATTR_USERNAME },
+ { XML_NAMESPACE_TABLE, sXML_passwort, XML_TOK_SOURCE_SERVICE_ATTR_PASSWORD },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotTableSourceCellRangeAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_cell_range_address, XML_TOK_SOURCE_CELL_RANGE_ATTR_CELL_RANGE_ADDRESS},
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotTableSourceCellRangeElemTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_filter, XML_TOK_SOURCE_CELL_RANGE_ELEM_FILTER},
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotFieldAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_source_field_name, XML_TOK_DATA_PILOT_FIELD_ATTR_SOURCE_FIELD_NAME },
+ { XML_NAMESPACE_TABLE, sXML_is_data_layout_field, XML_TOK_DATA_PILOT_FIELD_ATTR_IS_DATA_LAYOUT_FIELD },
+ { XML_NAMESPACE_TABLE, sXML_function, XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION },
+ { XML_NAMESPACE_TABLE, sXML_orientation, XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION },
+ { XML_NAMESPACE_TABLE, sXML_used_hierarchy, XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotFieldElemTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_data_pilot_level, XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LEVEL },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotLevelAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_display_empty, XML_TOK_DATA_PILOT_LEVEL_ATTR_DISPLAY_EMPTY },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotLevelElemTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_data_pilot_subtotals, XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_SUBTOTALS },
+ { XML_NAMESPACE_TABLE, sXML_data_pilot_members, XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_MEMBERS },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotSubTotalsElemTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_data_pilot_subtotal, XML_TOK_DATA_PILOT_SUBTOTALS_ELEM_DATA_PILOT_SUBTOTAL },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotSubTotalAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_function, XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_FUNCTION },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotMembersElemTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_data_pilot_member, XML_TOK_DATA_PILOT_MEMBERS_ELEM_DATA_PILOT_MEMBER },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aDataPilotMemberAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_name, XML_TOK_DATA_PILOT_MEMBER_ATTR_NAME },
+ { XML_NAMESPACE_TABLE, sXML_display, XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY },
+ { XML_NAMESPACE_TABLE, sXML_display_details, XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_DETAILS },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTableRowTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_table_cell, XML_TOK_TABLE_ROW_CELL },
+ { XML_NAMESPACE_TABLE, sXML_covered_table_cell, XML_TOK_TABLE_ROW_COVERED_CELL },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTableRowCellTokenMap[] =
+{
+ { XML_NAMESPACE_TEXT, sXML_p, XML_TOK_TABLE_ROW_CELL_P },
+ { XML_NAMESPACE_TABLE, sXML_sub_table, XML_TOK_TABLE_ROW_CELL_SUBTABLE },
+ { XML_NAMESPACE_OFFICE, sXML_annotation, XML_TOK_TABLE_ROW_CELL_ANNOTATION },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTableAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_name, XML_TOK_TABLE_NAME },
+ { XML_NAMESPACE_TABLE, sXML_style_name, XML_TOK_TABLE_STYLE_NAME },
+ { XML_NAMESPACE_TABLE, sXML_use_cell_protection, XML_TOK_TABLE_PROTECTION },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTableColAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_style_name, XML_TOK_TABLE_COL_ATTR_STYLE_NAME },
+ { XML_NAMESPACE_TABLE, sXML_number_columns_repeated, XML_TOK_TABLE_COL_ATTR_REPEATED },
+ { XML_NAMESPACE_TABLE, sXML_visibility, XML_TOK_TABLE_COL_ATTR_VISIBILITY },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTableRowAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_style_name, XML_TOK_TABLE_ROW_ATTR_STYLE_NAME },
+ { XML_NAMESPACE_TABLE, sXML_visibility, XML_TOK_TABLE_ROW_ATTR_VISIBILITY },
+ { XML_NAMESPACE_TABLE, sXML_number_rows_repeated, XML_TOK_TABLE_ROW_ATTR_REPEATED },
+// { XML_NAMESPACE_TABLE, sXML_use_optimal_height, XML_TOK_TABLE_ROW_ATTR_USE_OPTIMAL_HEIGHT },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTableRowCellAttrTokenMap[] =
+{
+ { XML_NAMESPACE_TABLE, sXML_style_name, XML_TOK_TABLE_ROW_CELL_ATTR_STYLE_NAME },
+ { XML_NAMESPACE_TABLE, sXML_number_rows_spanned, XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_ROWS },
+ { XML_NAMESPACE_TABLE, sXML_number_columns_spanned, XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_COLS },
+ { XML_NAMESPACE_TABLE, sXML_number_matrix_columns_spanned, XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_COLS },
+ { XML_NAMESPACE_TABLE, sXML_number_matrix_rows_spanned, XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_ROWS },
+ { XML_NAMESPACE_TABLE, sXML_number_columns_repeated, XML_TOK_TABLE_ROW_CELL_ATTR_REPEATED },
+ { XML_NAMESPACE_TABLE, sXML_value_type, XML_TOK_TABLE_ROW_CELL_ATTR_VALUE_TYPE },
+ { XML_NAMESPACE_TABLE, sXML_value, XML_TOK_TABLE_ROW_CELL_ATTR_VALUE },
+ { XML_NAMESPACE_TABLE, sXML_date_value, XML_TOK_TABLE_ROW_CELL_ATTR_DATE_VALUE },
+ { XML_NAMESPACE_TABLE, sXML_time_value, XML_TOK_TABLE_ROW_CELL_ATTR_TIME_VALUE },
+ { XML_NAMESPACE_TABLE, sXML_string_value, XML_TOK_TABLE_ROW_CELL_ATTR_STRING_VALUE },
+ { XML_NAMESPACE_TABLE, sXML_boolean_value, XML_TOK_TABLE_ROW_CELL_ATTR_BOOLEAN_VALUE },
+ { XML_NAMESPACE_TABLE, sXML_formula, XML_TOK_TABLE_ROW_CELL_ATTR_FORMULA },
+ { XML_NAMESPACE_TABLE, sXML_currency, XML_TOK_TABLE_ROW_CELL_ATTR_CURRENCY },
+ XML_TOKEN_MAP_END
+};
+
+static __FAR_DATA SvXMLTokenMapEntry aTableAnnotationAttrTokenMap[] =
+{
+ { XML_NAMESPACE_OFFICE, sXML_author, XML_TOK_TABLE_ANNOTATION_ATTR_AUTHOR },
+ { XML_NAMESPACE_OFFICE, sXML_create_date, XML_TOK_TABLE_ANNOTATION_ATTR_CREATE_DATE },
+ { XML_NAMESPACE_OFFICE, sXML_display, XML_TOK_TABLE_ANNOTATION_ATTR_DISPLAY },
+ XML_TOKEN_MAP_END
+};
+
+class ScXMLDocContext_Impl : public SvXMLImportContext
+{
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLDocContext_Impl( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const OUString& rLName,
+ const uno::Reference<xml::sax::XAttributeList>& xAttrList );
+ virtual ~ScXMLDocContext_Impl();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const rtl::OUString& rLocalName,
+ const uno::Reference<xml::sax::XAttributeList>& xAttrList );
+};
+
+ScXMLDocContext_Impl::ScXMLDocContext_Impl( ScXMLImport& rImport, USHORT nPrfx,
+ const OUString& rLName,
+ const uno::Reference<xml::sax::XAttributeList>& xAttrList ) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+
+}
+
+ScXMLDocContext_Impl::~ScXMLDocContext_Impl()
+{
+}
+
+SvXMLImportContext *ScXMLDocContext_Impl::CreateChildContext( USHORT nPrefix,
+ const rtl::OUString& rLocalName,
+ const uno::Reference<xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetDocElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLocalName ) )
+ {
+ case XML_TOK_DOC_STYLES:
+ pContext = GetScImport().CreateStylesContext( rLocalName, xAttrList, sal_False);
+ break;
+ case XML_TOK_DOC_AUTOSTYLES:
+ pContext = GetScImport().CreateStylesContext( rLocalName, xAttrList, sal_True);
+ break;
+// case XML_TOK_DOC_USESTYLES:
+// pContext = GetScImport().CreateUseStylesContext( rLocalName,
+// xAttrList );
+ break;
+ case XML_TOK_DOC_META:
+ pContext = GetScImport().CreateMetaContext( rLocalName );
+ break;
+ case XML_TOK_DOC_BODY:
+ pContext = GetScImport().CreateBodyContext( rLocalName );
+ break;
+ }
+
+ if(!pContext)
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
+
+ return pContext;
+}
+
+//----------------------------------------------------------------------------
+
+const SvXMLTokenMap& ScXMLImport::GetDocElemTokenMap()
+{
+ if( !pDocElemTokenMap )
+ pDocElemTokenMap = new SvXMLTokenMap( aDocTokenMap );
+
+ return *pDocElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetStylesElemTokenMap()
+{
+ if( !pStylesElemTokenMap )
+ pStylesElemTokenMap = new SvXMLTokenMap( aStylesTokenMap );
+
+ return *pStylesElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetStylesAttrTokenMap()
+{
+ if( !pStylesAttrTokenMap )
+ pStylesAttrTokenMap = new SvXMLTokenMap( aStylesAttrTokenMap );
+
+ return *pStylesAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetStyleElemTokenMap()
+{
+ if( !pStyleElemTokenMap )
+ pStyleElemTokenMap = new SvXMLTokenMap( aStyleTokenMap );
+
+ return *pStyleElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetBodyElemTokenMap()
+{
+ if( !pBodyElemTokenMap )
+ pBodyElemTokenMap = new SvXMLTokenMap( aBodyTokenMap );
+ return *pBodyElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetTableElemTokenMap()
+{
+ if( !pTableElemTokenMap )
+ pTableElemTokenMap = new SvXMLTokenMap( aTableTokenMap );
+ return *pTableElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetNamedExpressionsElemTokenMap()
+{
+ if( !pNamedExpressionsElemTokenMap )
+ pNamedExpressionsElemTokenMap = new SvXMLTokenMap( aNamedExpressionsTokenMap );
+ return *pNamedExpressionsElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetNamedRangeAttrTokenMap()
+{
+ if( !pNamedRangeAttrTokenMap )
+ pNamedRangeAttrTokenMap = new SvXMLTokenMap( aNamedRangeAttrTokenMap );
+ return *pNamedRangeAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetNamedExpressionAttrTokenMap()
+{
+ if( !pNamedExpressionAttrTokenMap )
+ pNamedExpressionAttrTokenMap = new SvXMLTokenMap( aNamedExpressionAttrTokenMap );
+ return *pNamedExpressionAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDatabaseRangesElemTokenMap()
+{
+ if( !pDatabaseRangesElemTokenMap )
+ pDatabaseRangesElemTokenMap = new SvXMLTokenMap( aDatabaseRangesTokenMap );
+ return *pDatabaseRangesElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeElemTokenMap()
+{
+ if( !pDatabaseRangeElemTokenMap )
+ pDatabaseRangeElemTokenMap = new SvXMLTokenMap( aDatabaseRangeTokenMap );
+ return *pDatabaseRangeElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeAttrTokenMap()
+{
+ if( !pDatabaseRangeAttrTokenMap )
+ pDatabaseRangeAttrTokenMap = new SvXMLTokenMap( aDatabaseRangeAttrTokenMap );
+ return *pDatabaseRangeAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSourceSQLAttrTokenMap()
+{
+ if( !pDatabaseRangeSourceSQLAttrTokenMap )
+ pDatabaseRangeSourceSQLAttrTokenMap = new SvXMLTokenMap( aDatabaseRangeSourceSQLAttrTokenMap );
+ return *pDatabaseRangeSourceSQLAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSourceTableAttrTokenMap()
+{
+ if( !pDatabaseRangeSourceTableAttrTokenMap )
+ pDatabaseRangeSourceTableAttrTokenMap = new SvXMLTokenMap( aDatabaseRangeSourceTableAttrTokenMap );
+ return *pDatabaseRangeSourceTableAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSourceQueryAttrTokenMap()
+{
+ if( !pDatabaseRangeSourceQueryAttrTokenMap )
+ pDatabaseRangeSourceQueryAttrTokenMap = new SvXMLTokenMap( aDatabaseRangeSourceQueryAttrTokenMap );
+ return *pDatabaseRangeSourceQueryAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetFilterElemTokenMap()
+{
+ if( !pFilterElemTokenMap )
+ pFilterElemTokenMap = new SvXMLTokenMap( aFilterTokenMap );
+ return *pFilterElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetFilterAttrTokenMap()
+{
+ if( !pFilterAttrTokenMap )
+ pFilterAttrTokenMap = new SvXMLTokenMap( aFilterAttrTokenMap );
+ return *pFilterAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetFilterConditionAttrTokenMap()
+{
+ if( !pFilterConditionAttrTokenMap )
+ pFilterConditionAttrTokenMap = new SvXMLTokenMap( aFilterConditionAttrTokenMap );
+ return *pFilterConditionAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetSortElemTokenMap()
+{
+ if( !pSortElemTokenMap )
+ pSortElemTokenMap = new SvXMLTokenMap( aSortTokenMap );
+ return *pSortElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetSortAttrTokenMap()
+{
+ if( !pSortAttrTokenMap )
+ pSortAttrTokenMap = new SvXMLTokenMap( aSortAttrTokenMap );
+ return *pSortAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetSortSortByAttrTokenMap()
+{
+ if( !pSortSortByAttrTokenMap )
+ pSortSortByAttrTokenMap = new SvXMLTokenMap( aSortSortByAttrTokenMap );
+ return *pSortSortByAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSubTotalRulesElemTokenMap()
+{
+ if( !pDatabaseRangeSubTotalRulesElemTokenMap )
+ pDatabaseRangeSubTotalRulesElemTokenMap = new SvXMLTokenMap( aDatabaseRangeSubTotalRulesTokenMap );
+ return *pDatabaseRangeSubTotalRulesElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSubTotalRulesAttrTokenMap()
+{
+ if( !pDatabaseRangeSubTotalRulesAttrTokenMap )
+ pDatabaseRangeSubTotalRulesAttrTokenMap = new SvXMLTokenMap( aDatabaseRangeSubTotalRulesAttrTokenMap );
+ return *pDatabaseRangeSubTotalRulesAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetSubTotalRulesSortGroupsAttrTokenMap()
+{
+ if( !pSubTotalRulesSortGroupsAttrTokenMap )
+ pSubTotalRulesSortGroupsAttrTokenMap = new SvXMLTokenMap( aSubTotalRulesSortGroupsAttrTokenMap );
+ return *pSubTotalRulesSortGroupsAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetSubTotalRulesSubTotalRuleElemTokenMap()
+{
+ if( !pSubTotalRulesSubTotalRuleElemTokenMap )
+ pSubTotalRulesSubTotalRuleElemTokenMap = new SvXMLTokenMap( aSubTotalRulesSubTotalRuleTokenMap );
+ return *pSubTotalRulesSubTotalRuleElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetSubTotalRulesSubTotalRuleAttrTokenMap()
+{
+ if( !pSubTotalRulesSubTotalRuleAttrTokenMap )
+ pSubTotalRulesSubTotalRuleAttrTokenMap = new SvXMLTokenMap( aSubTotalRulesSubTotalRuleAttrTokenMap );
+ return *pSubTotalRulesSubTotalRuleAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetSubTotalRuleSubTotalFieldAttrTokenMap()
+{
+ if( !pSubTotalRuleSubTotalFieldAttrTokenMap )
+ pSubTotalRuleSubTotalFieldAttrTokenMap = new SvXMLTokenMap( aSubTotalRuleSubTotalFieldAttrTokenMap );
+ return *pSubTotalRuleSubTotalFieldAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotTablesElemTokenMap()
+{
+ if( !pDataPilotTablesElemTokenMap )
+ pDataPilotTablesElemTokenMap = new SvXMLTokenMap( aDataPilotTablesElemTokenMap );
+ return *pDataPilotTablesElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotTableAttrTokenMap()
+{
+ if( !pDataPilotTableAttrTokenMap )
+ pDataPilotTableAttrTokenMap = new SvXMLTokenMap( aDataPilotTableAttrTokenMap );
+ return *pDataPilotTableAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotTableElemTokenMap()
+{
+ if( !pDataPilotTableElemTokenMap )
+ pDataPilotTableElemTokenMap = new SvXMLTokenMap( aDataPilotTableElemTokenMap );
+ return *pDataPilotTableElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotTableSourceServiceAttrTokenMap()
+{
+ if( !pDataPilotTableSourceServiceAttrTokenMap )
+ pDataPilotTableSourceServiceAttrTokenMap = new SvXMLTokenMap( aDataPilotTableSourceServiceAttrTokenMap );
+ return *pDataPilotTableSourceServiceAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotTableSourceCellRangeAttrTokenMap()
+{
+ if( !pDataPilotTableSourceCellRangeAttrTokenMap )
+ pDataPilotTableSourceCellRangeAttrTokenMap = new SvXMLTokenMap( aDataPilotTableSourceCellRangeAttrTokenMap );
+ return *pDataPilotTableSourceCellRangeAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotTableSourceCellRangeElemTokenMap()
+{
+ if( !pDataPilotTableSourceCellRangeElemTokenMap )
+ pDataPilotTableSourceCellRangeElemTokenMap = new SvXMLTokenMap( aDataPilotTableSourceCellRangeElemTokenMap );
+ return *pDataPilotTableSourceCellRangeElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotFieldAttrTokenMap()
+{
+ if( !pDataPilotFieldAttrTokenMap )
+ pDataPilotFieldAttrTokenMap = new SvXMLTokenMap( aDataPilotFieldAttrTokenMap );
+ return *pDataPilotFieldAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotFieldElemTokenMap()
+{
+ if( !pDataPilotFieldElemTokenMap )
+ pDataPilotFieldElemTokenMap = new SvXMLTokenMap( aDataPilotFieldElemTokenMap );
+ return *pDataPilotFieldElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotLevelAttrTokenMap()
+{
+ if( !pDataPilotLevelAttrTokenMap )
+ pDataPilotLevelAttrTokenMap = new SvXMLTokenMap( aDataPilotLevelAttrTokenMap );
+ return *pDataPilotLevelAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotLevelElemTokenMap()
+{
+ if( !pDataPilotLevelElemTokenMap )
+ pDataPilotLevelElemTokenMap = new SvXMLTokenMap( aDataPilotLevelElemTokenMap );
+ return *pDataPilotLevelElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotSubTotalsElemTokenMap()
+{
+ if( !pDataPilotSubTotalsElemTokenMap )
+ pDataPilotSubTotalsElemTokenMap = new SvXMLTokenMap( aDataPilotSubTotalsElemTokenMap );
+ return *pDataPilotSubTotalsElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotSubTotalAttrTokenMap()
+{
+ if( !pDataPilotSubTotalAttrTokenMap )
+ pDataPilotSubTotalAttrTokenMap = new SvXMLTokenMap( aDataPilotSubTotalAttrTokenMap );
+ return *pDataPilotSubTotalAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotMembersElemTokenMap()
+{
+ if( !pDataPilotMembersElemTokenMap )
+ pDataPilotMembersElemTokenMap = new SvXMLTokenMap( aDataPilotMembersElemTokenMap );
+ return *pDataPilotMembersElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetDataPilotMemberAttrTokenMap()
+{
+ if( !pDataPilotMemberAttrTokenMap )
+ pDataPilotMemberAttrTokenMap = new SvXMLTokenMap( aDataPilotMemberAttrTokenMap );
+ return *pDataPilotMemberAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetTableRowElemTokenMap()
+{
+ if( !pTableRowElemTokenMap )
+ pTableRowElemTokenMap = new SvXMLTokenMap( aTableRowTokenMap );
+ return *pTableRowElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetTableRowCellElemTokenMap()
+{
+ if( !pTableRowCellElemTokenMap )
+ pTableRowCellElemTokenMap = new SvXMLTokenMap( aTableRowCellTokenMap );
+ return *pTableRowCellElemTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetTableAttrTokenMap()
+{
+ if( !pTableAttrTokenMap )
+ pTableAttrTokenMap = new SvXMLTokenMap( aTableAttrTokenMap );
+ return *pTableAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetTableColAttrTokenMap()
+{
+ if( !pTableColAttrTokenMap )
+ pTableColAttrTokenMap = new SvXMLTokenMap( aTableColAttrTokenMap );
+ return *pTableColAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetTableRowAttrTokenMap()
+{
+ if( !pTableRowAttrTokenMap )
+ pTableRowAttrTokenMap = new SvXMLTokenMap( aTableRowAttrTokenMap );
+ return *pTableRowAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetTableRowCellAttrTokenMap()
+{
+ if( !pTableRowCellAttrTokenMap )
+ pTableRowCellAttrTokenMap = new SvXMLTokenMap( aTableRowCellAttrTokenMap );
+ return *pTableRowCellAttrTokenMap;
+}
+
+const SvXMLTokenMap& ScXMLImport::GetTableAnnotationAttrTokenMap()
+{
+ if( !pTableAnnotationAttrTokenMap )
+ pTableAnnotationAttrTokenMap = new SvXMLTokenMap( aTableAnnotationAttrTokenMap );
+ return *pTableAnnotationAttrTokenMap;
+}
+
+SvXMLImportContext *ScXMLImport::CreateContext( USHORT nPrefix,
+ const OUString& rLocalName,
+ const uno::Reference<xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( XML_NAMESPACE_OFFICE==nPrefix &&
+ 0 == rLocalName.compareToAscii( sXML_document ) )
+ pContext = new ScXMLDocContext_Impl( *this, nPrefix, rLocalName,
+ xAttrList );
+ else
+ pContext = SvXMLImport::CreateContext( nPrefix, rLocalName, xAttrList );
+
+ return pContext;
+}
+
+ScXMLImport::ScXMLImport( com::sun::star::uno::Reference <com::sun::star::frame::XModel> xTempModel, sal_Bool bLDoc, sal_uInt16 nStyleFamMask ) :
+ SvXMLImport( xTempModel ),
+ bLoadDoc( bLDoc ),
+ nStyleFamilyMask( nStyleFamMask ),
+// rDoc( rD ),
+// pI18NMap( new SvI18NMap ),
+ pDocElemTokenMap( 0 ),
+ pStylesElemTokenMap( 0 ),
+ pStylesAttrTokenMap( 0 ),
+ pStyleElemTokenMap( 0 ),
+ pBodyElemTokenMap( 0 ),
+ pTableElemTokenMap( 0 ),
+ pNamedExpressionsElemTokenMap( 0 ),
+ pNamedRangeAttrTokenMap( 0 ),
+ pNamedExpressionAttrTokenMap( 0 ),
+ pDatabaseRangesElemTokenMap( 0 ),
+ pDatabaseRangeElemTokenMap( 0 ),
+ pDatabaseRangeAttrTokenMap( 0 ),
+ pDatabaseRangeSourceSQLAttrTokenMap( 0 ),
+ pDatabaseRangeSourceTableAttrTokenMap( 0 ),
+ pDatabaseRangeSourceQueryAttrTokenMap( 0 ),
+ pFilterElemTokenMap( 0 ),
+ pFilterAttrTokenMap( 0 ),
+ pFilterConditionAttrTokenMap( 0 ),
+ pSortElemTokenMap( 0 ),
+ pSortAttrTokenMap( 0 ),
+ pSortSortByAttrTokenMap( 0 ),
+ pDatabaseRangeSubTotalRulesElemTokenMap( 0 ),
+ pDatabaseRangeSubTotalRulesAttrTokenMap( 0 ),
+ pSubTotalRulesSortGroupsAttrTokenMap( 0 ),
+ pSubTotalRulesSubTotalRuleElemTokenMap( 0 ),
+ pSubTotalRulesSubTotalRuleAttrTokenMap( 0 ),
+ pSubTotalRuleSubTotalFieldAttrTokenMap( 0 ),
+ pDataPilotTablesElemTokenMap( 0 ),
+ pDataPilotTableAttrTokenMap( 0 ),
+ pDataPilotTableElemTokenMap( 0 ),
+ pDataPilotTableSourceServiceAttrTokenMap( 0 ),
+ pDataPilotTableSourceCellRangeElemTokenMap( 0 ),
+ pDataPilotTableSourceCellRangeAttrTokenMap( 0 ),
+ pDataPilotFieldAttrTokenMap( 0 ),
+ pDataPilotFieldElemTokenMap( 0 ),
+ pDataPilotLevelAttrTokenMap( 0 ),
+ pDataPilotLevelElemTokenMap( 0 ),
+ pDataPilotSubTotalsElemTokenMap( 0 ),
+ pDataPilotSubTotalAttrTokenMap( 0 ),
+ pDataPilotMembersElemTokenMap( 0 ),
+ pDataPilotMemberAttrTokenMap( 0 ),
+ pTableRowElemTokenMap( 0 ),
+ pTableRowCellElemTokenMap( 0 ),
+ pTableAttrTokenMap( 0 ),
+ pTableColAttrTokenMap( 0 ),
+ pTableRowAttrTokenMap( 0 ),
+ pTableRowCellAttrTokenMap( 0 ),
+ pTableAnnotationAttrTokenMap( 0 ),
+ aTables(*this),
+ aMyNamedExpressions(),
+// pScAutoStylePool(new SvXMLAutoStylePoolP),
+ pScPropHdlFactory(0L),
+ pCellStylesPropertySetMapper(0L),
+ pPageStylesPropertySetMapper(0L),
+ pColumnStylesPropertySetMapper(0L),
+ pRowStylesPropertySetMapper(0L),
+ pTableStylesPropertySetMapper(0L),
+ sSC_float(RTL_CONSTASCII_USTRINGPARAM(sXML_float)),
+ sSC_time(RTL_CONSTASCII_USTRINGPARAM(sXML_time)),
+ sSC_date(RTL_CONSTASCII_USTRINGPARAM(sXML_date)),
+ sSC_percentage(RTL_CONSTASCII_USTRINGPARAM(sXML_percentage)),
+ sSC_currency(RTL_CONSTASCII_USTRINGPARAM(sXML_currency)),
+ sSC_string(RTL_CONSTASCII_USTRINGPARAM(sXML_string)),
+ sSC_boolean(RTL_CONSTASCII_USTRINGPARAM(sXML_boolean))
+
+// pParaItemMapper( 0 ),
+{
+ /*GetNamespaceMap().AddAtIndex( XML_NAMESPACE_TEXT, sXML_np__text,
+ sXML_n_text, XML_NAMESPACE_TEXT );
+ GetNamespaceMap().AddAtIndex( XML_NAMESPACE_TABLE, sXML_np__table,
+ sXML_n_table, XML_NAMESPACE_TABLE );*/
+
+ pScPropHdlFactory = new XMLScPropHdlFactory;
+ if(pScPropHdlFactory)
+ {
+ // set lock to avoid deletion
+ pScPropHdlFactory->acquire();
+
+ // build one ref
+ const UniReference< XMLPropertyHandlerFactory > aFactoryRef = pScPropHdlFactory;
+
+ // construct PropertySetMapper
+ pCellStylesPropertySetMapper = new XMLCellStylesPropertySetMapper((XMLPropertyMapEntry*)aXMLScCellStylesProperties, aFactoryRef);
+ if(pCellStylesPropertySetMapper)
+ {
+ // set lock to avoid deletion
+ pCellStylesPropertySetMapper->acquire();
+ }
+ pPageStylesPropertySetMapper = new XMLPageStylesPropertySetMapper((XMLPropertyMapEntry*)aXMLScPageStylesProperties, aFactoryRef);
+ if(pPageStylesPropertySetMapper)
+ {
+ // set lock to avoid deletion
+ pPageStylesPropertySetMapper->acquire();
+ }
+ pColumnStylesPropertySetMapper = new XMLColumnStylesPropertySetMapper((XMLPropertyMapEntry*)aXMLScColumnStylesProperties, aFactoryRef);
+ if(pColumnStylesPropertySetMapper)
+ {
+ // set lock to avoid deletion
+ pColumnStylesPropertySetMapper->acquire();
+ }
+ pRowStylesPropertySetMapper = new XMLRowStylesPropertySetMapper((XMLPropertyMapEntry*)aXMLScRowStylesProperties, aFactoryRef);
+ if(pRowStylesPropertySetMapper)
+ {
+ // set lock to avoid deletion
+ pRowStylesPropertySetMapper->acquire();
+ }
+ pTableStylesPropertySetMapper = new XMLTableStylesPropertySetMapper((XMLPropertyMapEntry*)aXMLScTableStylesProperties, aFactoryRef);
+ if(pTableStylesPropertySetMapper)
+ {
+ // set lock to avoid deletion
+ pTableStylesPropertySetMapper->acquire();
+ }
+ }
+ uno::Reference<document::XActionLockable> xActionLockable(xTempModel, uno::UNO_QUERY);
+ if (xActionLockable.is())
+ xActionLockable->addActionLock();
+}
+
+ScXMLImport::~ScXMLImport()
+{
+// RemoveUnusedNumRules();
+
+// delete pI18NMap;
+ delete pDocElemTokenMap;
+ delete pStylesElemTokenMap;
+ delete pStylesAttrTokenMap;
+ delete pStyleElemTokenMap;
+ delete pBodyElemTokenMap;
+ delete pTableElemTokenMap;
+ delete pNamedExpressionsElemTokenMap;
+ delete pNamedRangeAttrTokenMap;
+ delete pNamedExpressionAttrTokenMap;
+ delete pDatabaseRangesElemTokenMap;
+ delete pDatabaseRangeElemTokenMap;
+ delete pDatabaseRangeAttrTokenMap;
+ delete pDatabaseRangeSourceSQLAttrTokenMap;
+ delete pDatabaseRangeSourceTableAttrTokenMap;
+ delete pDatabaseRangeSourceQueryAttrTokenMap;
+ delete pFilterElemTokenMap;
+ delete pFilterAttrTokenMap;
+ delete pFilterConditionAttrTokenMap;
+ delete pSortElemTokenMap;
+ delete pSortAttrTokenMap;
+ delete pSortSortByAttrTokenMap;
+ delete pDatabaseRangeSubTotalRulesElemTokenMap;
+ delete pDatabaseRangeSubTotalRulesAttrTokenMap;
+ delete pSubTotalRulesSortGroupsAttrTokenMap;
+ delete pSubTotalRulesSubTotalRuleElemTokenMap;
+ delete pSubTotalRulesSubTotalRuleAttrTokenMap;
+ delete pSubTotalRuleSubTotalFieldAttrTokenMap;
+ delete pDataPilotTablesElemTokenMap;
+ delete pDataPilotTableAttrTokenMap;
+ delete pDataPilotTableElemTokenMap;
+ delete pDataPilotTableSourceServiceAttrTokenMap;
+ delete pDataPilotTableSourceCellRangeAttrTokenMap;
+ delete pDataPilotTableSourceCellRangeElemTokenMap;
+ delete pDataPilotFieldAttrTokenMap;
+ delete pDataPilotFieldElemTokenMap;
+ delete pDataPilotLevelAttrTokenMap;
+ delete pDataPilotLevelElemTokenMap;
+ delete pDataPilotSubTotalsElemTokenMap;
+ delete pDataPilotSubTotalAttrTokenMap;
+ delete pDataPilotMembersElemTokenMap;
+ delete pDataPilotMemberAttrTokenMap;
+ delete pTableRowElemTokenMap;
+ delete pTableRowCellElemTokenMap;
+ delete pTableAttrTokenMap;
+ delete pTableColAttrTokenMap;
+ delete pTableRowAttrTokenMap;
+ delete pTableRowCellAttrTokenMap;
+ delete pTableAnnotationAttrTokenMap;
+
+ if (pScPropHdlFactory)
+ {
+ pScPropHdlFactory->release();
+ pScPropHdlFactory = 0L;
+ }
+ if (pCellStylesPropertySetMapper)
+ {
+ pCellStylesPropertySetMapper->release();
+ pCellStylesPropertySetMapper = 0L;
+ }
+ if (pPageStylesPropertySetMapper)
+ {
+ pPageStylesPropertySetMapper->release();
+ pPageStylesPropertySetMapper = 0L;
+ }
+ if (pColumnStylesPropertySetMapper)
+ {
+ pColumnStylesPropertySetMapper->release();
+ pColumnStylesPropertySetMapper = 0L;
+ }
+ if (pRowStylesPropertySetMapper)
+ {
+ pRowStylesPropertySetMapper->release();
+ pRowStylesPropertySetMapper = 0L;
+ }
+ if (pTableStylesPropertySetMapper)
+ {
+ pTableStylesPropertySetMapper->release();
+ pTableStylesPropertySetMapper = 0L;
+ }
+// if (pScAutoStylePool)
+// delete pScAutoStylePool;
+ uno::Reference<document::XActionLockable> xActionLockable(GetModel(), uno::UNO_QUERY);
+ if (xActionLockable.is())
+ xActionLockable->removeActionLock();
+}
+
+// ---------------------------------------------------------------------
+
+SvXMLImportContext *ScXMLImport::CreateStylesContext(const NAMESPACE_RTL(OUString)& rLocalName,
+ const uno::Reference<xml::sax::XAttributeList>& xAttrList, sal_Bool bIsAutoStyle )
+{
+ SvXMLImportContext *pContext = NULL;
+ if (!pContext)
+ {
+ pContext = new XMLTableStylesContext(*this, XML_NAMESPACE_OFFICE, rLocalName, xAttrList);
+ if (bIsAutoStyle)
+ xAutoStyles = pContext;
+ else
+ xStyles = pContext;
+ }
+ return pContext;
+}
+
+SvXMLImportContext *ScXMLImport::CreateBodyContext(const NAMESPACE_RTL(OUString)& rLocalName)
+{
+ ((XMLTableStylesContext *)&xStyles)->CopyStylesToDoc(sal_True);
+ GetShapeImport()->SetAutoStylesContext((XMLTableStylesContext *)&xAutoStyles);
+
+ SvXMLImportContext *pContext = 0;
+ pContext = new ScXMLBodyContext(*this, XML_NAMESPACE_OFFICE, rLocalName);
+ return pContext;
+}
+
+SvXMLImportContext *ScXMLImport::CreateMetaContext(
+ const OUString& rLocalName )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !IsStylesOnlyMode() )
+ {
+ pContext = new SfxXMLMetaContext( *this,
+ XML_NAMESPACE_OFFICE, rLocalName,
+ GetModel() );
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( *this, XML_NAMESPACE_OFFICE,
+ rLocalName );
+
+ return pContext;
+}
diff --git a/sc/source/filter/xml/xmlimprt.hxx b/sc/source/filter/xml/xmlimprt.hxx
new file mode 100644
index 000000000000..609410458176
--- /dev/null
+++ b/sc/source/filter/xml/xmlimprt.hxx
@@ -0,0 +1,654 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlimprt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_XMLIMPRT_HXX
+#define SC_XMLIMPRT_HXX
+
+#ifndef _RSCSFX_HXX
+#include <rsc/rscsfx.hxx>
+#endif
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+#ifndef _XMLOFF_XMLTKMAP_HXX
+#include <xmloff/xmltkmap.hxx>
+#endif
+#ifndef _XMLOFF_XMLASTPLP_HXX
+#include <xmloff/xmlaustp.hxx>
+#endif
+#ifndef _XMLOFF_XMLSTYLE_HXX
+#include <xmloff/xmlstyle.hxx>
+#endif
+#include <com/sun/star/frame/XModel.hpp>
+#include <tools/time.hxx>
+#include <com/sun/star/util/DateTime.hpp>
+#include <vector>
+#include "xmlsubti.hxx"
+#include "global.hxx"
+#ifndef _XMLSTYLE_HXX
+#include "xmlstyle.hxx"
+#endif
+
+#ifdef _USE_NAMESPACE
+using namespace rtl;
+#endif
+
+enum ScXMLDocTokens
+{
+ XML_TOK_DOC_STYLES,
+ XML_TOK_DOC_AUTOSTYLES,
+ XML_TOK_DOC_USESTYLES,
+ XML_TOK_DOC_META,
+ XML_TOK_DOC_BODY,
+ XML_TOK_OFFICE_END=XML_TOK_UNKNOWN
+};
+
+enum ScXMLStylesTokens
+{
+ XML_TOK_STYLES_STYLE
+};
+
+enum ScXMLStylesAttrTokens
+{
+ XML_TOK_STYLES_STYLE_NAME,
+ XML_TOK_STYLES_STYLE_FAMILY,
+ XML_TOK_STYLES_STYLE_PARENT_STYLE_NAME
+};
+
+enum ScXMLStyleTokens
+{
+ XML_TOK_STYLE_PROPERTIES
+};
+
+enum ScXMLBodyTokens
+{
+ XML_TOK_BODY_TABLE,
+ XML_TOK_BODY_NAMED_EXPRESSIONS,
+ XML_TOK_BODY_DATABASE_RANGES,
+ XML_TOK_BODY_DATABASE_RANGE,
+ XML_TOK_BODY_DATA_PILOT_TABLES
+};
+
+enum ScXMLTableTokens
+{
+ XML_TOK_TABLE_HEADER_COLS,
+ XML_TOK_TABLE_COLS,
+ XML_TOK_TABLE_COL,
+ XML_TOK_TABLE_HEADER_ROWS,
+ XML_TOK_TABLE_ROWS,
+ XML_TOK_TABLE_ROW
+};
+
+enum ScXMLNamedExpressionsTokens
+{
+ XML_TOK_NAMED_EXPRESSIONS_NAMED_RANGE,
+ XML_TOK_NAMED_EXPRESSIONS_NAMED_EXPRESSION
+};
+
+enum ScXMLNamedRangeAttrTokens
+{
+ XML_TOK_NAMED_RANGE_ATTR_NAME,
+ XML_TOK_NAMED_RANGE_ATTR_CELL_RANGE_ADDRESS,
+ XML_TOK_NAMED_RANGE_ATTR_BASE_CELL_ADDRESS,
+ XML_TOK_NAMED_RANGE_ATTR_RANGE_USABLE_AS
+};
+
+enum ScXMLNamedExpressionAttrTokens
+{
+ XML_TOK_NAMED_EXPRESSION_ATTR_NAME,
+ XML_TOK_NAMED_EXPRESSION_ATTR_BASE_CELL_ADDRESS,
+ XML_TOK_NAMED_EXPRESSION_ATTR_EXPRESSION
+};
+
+enum ScXMLDatabaseRangesTokens
+{
+ XML_TOK_DATABASE_RANGE
+};
+
+enum ScXMLDatabaseRangeTokens
+{
+ XML_TOK_DATABASE_RANGE_SOURCE_SQL,
+ XML_TOK_DATABASE_RANGE_SOURCE_TABLE,
+ XML_TOK_DATABASE_RANGE_SOURCE_QUERY,
+ XML_TOK_FILTER,
+ XML_TOK_SORT,
+ XML_TOK_DATABASE_RANGE_SUBTOTAL_RULES
+};
+
+enum ScXMLDatabaseRangeAttrTokens
+{
+ XML_TOK_DATABASE_RANGE_ATTR_NAME,
+ XML_TOK_DATABASE_RANGE_ATTR_IS_SELECTION,
+ XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_STYLES,
+ XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_SIZE,
+ XML_TOK_DATABASE_RANGE_ATTR_HAS_PERSISTENT_DATA,
+ XML_TOK_DATABASE_RANGE_ATTR_ORIENTATION,
+ XML_TOK_DATABASE_RANGE_ATTR_CONTAINS_HEADER,
+ XML_TOK_DATABASE_RANGE_ATTR_DISPLAY_FILTER_BUTTONS,
+ XML_TOK_DATABASE_RANGE_ATTR_TARGET_RANGE_ADDRESS
+};
+
+enum ScXMLDatabaseRangeSourceSQLAttrTokens
+{
+ XML_TOK_SOURCE_SQL_ATTR_DATABASE_NAME,
+ XML_TOK_SOURCE_SQL_ATTR_SQL_STATEMENT,
+ XML_TOK_SOURCE_SQL_ATTR_PARSE_SQL_STATEMENT
+};
+
+enum ScXMLDatabaseRangeSourceTableAttrTokens
+{
+ XML_TOK_SOURCE_TABLE_ATTR_DATABASE_NAME,
+ XML_TOK_SOURCE_TABLE_ATTR_TABLE_NAME
+};
+
+enum ScXMLDatabaseRangeSourceQueryAttrTokens
+{
+ XML_TOK_SOURCE_QUERY_ATTR_DATABASE_NAME,
+ XML_TOK_SOURCE_QUERY_ATTR_QUERY_NAME
+};
+
+enum ScXMLFilterTokens
+{
+ XML_TOK_FILTER_AND,
+ XML_TOK_FILTER_OR,
+ XML_TOK_FILTER_CONDITION
+};
+
+enum ScXMLFilterAttrTokens
+{
+ XML_TOK_FILTER_ATTR_TARGET_RANGE_ADDRESS,
+ XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS,
+ XML_TOK_FILTER_ATTR_CONDITION_SOURCE,
+ XML_TOK_FILTER_ATTR_DISPLAY_DUPLICATES
+};
+
+enum ScXMLFilterConditionAttrTokens
+{
+ XML_TOK_CONDITION_ATTR_FIELD_NUMBER,
+ XML_TOK_CONDITION_ATTR_CASE_SENSITIVE,
+ XML_TOK_CONDITION_ATTR_DATA_TYPE,
+ XML_TOK_CONDITION_ATTR_VALUE,
+ XML_TOK_CONDITION_ATTR_OPERATOR
+};
+
+enum ScXMLSortTokens
+{
+ XML_TOK_SORT_SORT_BY
+};
+
+enum ScXMLSortAttrTokens
+{
+ XML_TOK_SORT_ATTR_BIND_STYLES_TO_CONTENT,
+ XML_TOK_SORT_ATTR_TARGET_RANGE_ADDRESS,
+ XML_TOK_SORT_ATTR_CASE_SENSITIVE
+};
+
+enum ScXMLSortSortByAttrTokens
+{
+ XML_TOK_SORT_BY_ATTR_FIELD_NUMBER,
+ XML_TOK_SORT_BY_ATTR_DATA_TYPE,
+ XML_TOK_SORT_BY_ATTR_ORDER
+};
+
+enum ScXMLDatabaseRangeSubTotalRulesTokens
+{
+ XML_TOK_SUBTOTAL_RULES_SORT_GROUPS,
+ XML_TOK_SUBTOTAL_RULES_SUBTOTAL_RULE
+};
+
+enum ScXMLDatabaseRangeSubTotalRulesAttrTokens
+{
+ XML_TOK_SUBTOTAL_RULES_ATTR_BIND_STYLES_TO_CONTENT,
+ XML_TOK_SUBTOTAL_RULES_ATTR_CASE_SENSITIVE,
+ XML_TOK_SUBTOTAL_RULES_ATTR_PAGE_BREAKS_ON_GROUP_CHANGE
+};
+
+enum ScXMLSubTotalRulesSortGroupsAttrTokens
+{
+ XML_TOK_SORT_GROUPS_ATTR_DATA_TYPE,
+ XML_TOK_SORT_GROUPS_ATTR_ORDER
+};
+
+enum ScXMLSubTotalRulesSubTotalRuleTokens
+{
+ XML_TOK_SUBTOTAL_RULE_SUBTOTAL_FIELD
+};
+
+enum ScXMLSubTotalRulesSubTotalRuleAttrTokens
+{
+ XML_TOK_SUBTOTAL_RULE_ATTR_GROUP_BY_FIELD_NUMBER
+};
+
+enum ScXMLSubTotalRuleSubTotalField
+{
+ XML_TOK_SUBTOTAL_FIELD_ATTR_FIELD_NUMBER,
+ XML_TOK_SUBTOTAL_FIELD_ATTR_FUNCTION
+};
+
+enum ScXMLDataPilotTablesElemTokens
+{
+ XML_TOK_DATA_PILOT_TABLE
+};
+
+enum ScXMLDataPilotTableAttrTokens
+{
+ XML_TOK_DATA_PILOT_TABLE_ATTR_NAME,
+ XML_TOK_DATA_PILOT_TABLE_ATTR_APPLICATION_DATA,
+ XML_TOK_DATA_PILOT_TABLE_ATTR_GRAND_TOTAL,
+ XML_TOK_DATA_PILOT_TABLE_ATTR_IGNORE_EMPTY_ROWS,
+ XML_TOK_DATA_PILOT_TABLE_ATTR_IDENTIFY_CATEGORIES,
+ XML_TOK_DATA_PILOT_TABLE_ATTR_TARGET_RANGE_ADDRESS
+};
+
+enum ScXMLDataPilotTableElemTokens
+{
+ XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL,
+ XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE,
+ XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY,
+ XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE,
+ XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE,
+ XML_TOK_DATA_PILOT_TABLE_ELEM_DATA_PILOT_FIELD
+};
+
+enum ScXMLDataPilotTableSourceServiceAttrTokens
+{
+ XML_TOK_SOURCE_SERVICE_ATTR_NAME,
+ XML_TOK_SOURCE_SERVICE_ATTR_SOURCE_NAME,
+ XML_TOK_SOURCE_SERVICE_ATTR_OBJECT_NAME,
+ XML_TOK_SOURCE_SERVICE_ATTR_USERNAME,
+ XML_TOK_SOURCE_SERVICE_ATTR_PASSWORD
+};
+
+enum ScXMLDataPilotTableSourceCellRangeElemTokens
+{
+ XML_TOK_SOURCE_CELL_RANGE_ELEM_FILTER
+};
+
+enum ScXMLDataPilotTableSourceCellRangeAttrTokens
+{
+ XML_TOK_SOURCE_CELL_RANGE_ATTR_CELL_RANGE_ADDRESS
+};
+
+enum ScXMLDataPilotFieldAttrTokens
+{
+ XML_TOK_DATA_PILOT_FIELD_ATTR_SOURCE_FIELD_NAME,
+ XML_TOK_DATA_PILOT_FIELD_ATTR_IS_DATA_LAYOUT_FIELD,
+ XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION,
+ XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION,
+ XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY
+};
+
+enum ScXMLDataPilotFieldElemTokens
+{
+ XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LEVEL
+};
+
+enum ScXMLDataPilotLevelAttrTokens
+{
+ XML_TOK_DATA_PILOT_LEVEL_ATTR_DISPLAY_EMPTY
+};
+
+enum ScXMLDataPilotLevelElemTokens
+{
+ XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_SUBTOTALS,
+ XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_MEMBERS
+};
+
+enum ScXMLDataPilotSubTotalsElemTokens
+{
+ XML_TOK_DATA_PILOT_SUBTOTALS_ELEM_DATA_PILOT_SUBTOTAL
+};
+
+enum ScXMLDataPilotSubTotalAttrTokens
+{
+ XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_FUNCTION
+};
+
+enum ScXMLDataPilotMembersElemTokens
+{
+ XML_TOK_DATA_PILOT_MEMBERS_ELEM_DATA_PILOT_MEMBER
+};
+
+enum ScXMLDataPilotMemberAttrTokens
+{
+ XML_TOK_DATA_PILOT_MEMBER_ATTR_NAME,
+ XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY,
+ XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_DETAILS
+};
+
+enum ScXMLTableRowTokens
+{
+ XML_TOK_TABLE_ROW_CELL,
+ XML_TOK_TABLE_ROW_COVERED_CELL
+};
+
+enum ScXMLTableRowCellTokens
+{
+ XML_TOK_TABLE_ROW_CELL_P,
+ XML_TOK_TABLE_ROW_CELL_SUBTABLE,
+ XML_TOK_TABLE_ROW_CELL_ANNOTATION
+};
+
+enum ScXMLTableAttrTokens
+{
+ XML_TOK_TABLE_NAME,
+ XML_TOK_TABLE_STYLE_NAME,
+ XML_TOK_TABLE_PROTECTION
+};
+
+enum ScXMLTableColAttrTokens
+{
+ XML_TOK_TABLE_COL_ATTR_STYLE_NAME,
+ XML_TOK_TABLE_COL_ATTR_REPEATED,
+ XML_TOK_TABLE_COL_ATTR_VISIBILITY
+};
+
+enum ScXMLTableRowAttrTokens
+{
+ XML_TOK_TABLE_ROW_ATTR_STYLE_NAME,
+ XML_TOK_TABLE_ROW_ATTR_VISIBILITY,
+ XML_TOK_TABLE_ROW_ATTR_REPEATED
+// XML_TOK_TABLE_ROW_ATTR_USE_OPTIMAL_HEIGHT
+};
+
+enum ScXMLTableRowCellAttrTokens
+{
+ XML_TOK_TABLE_ROW_CELL_ATTR_STYLE_NAME,
+ XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_ROWS,
+ XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_COLS,
+ XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_COLS,
+ XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_ROWS,
+ XML_TOK_TABLE_ROW_CELL_ATTR_REPEATED,
+ XML_TOK_TABLE_ROW_CELL_ATTR_VALUE_TYPE,
+ XML_TOK_TABLE_ROW_CELL_ATTR_VALUE,
+ XML_TOK_TABLE_ROW_CELL_ATTR_DATE_VALUE,
+ XML_TOK_TABLE_ROW_CELL_ATTR_TIME_VALUE,
+ XML_TOK_TABLE_ROW_CELL_ATTR_STRING_VALUE,
+ XML_TOK_TABLE_ROW_CELL_ATTR_BOOLEAN_VALUE,
+ XML_TOK_TABLE_ROW_CELL_ATTR_FORMULA,
+ XML_TOK_TABLE_ROW_CELL_ATTR_CURRENCY
+};
+
+enum ScXMLAnnotationAttrTokens
+{
+ XML_TOK_TABLE_ANNOTATION_ATTR_AUTHOR,
+ XML_TOK_TABLE_ANNOTATION_ATTR_CREATE_DATE,
+ XML_TOK_TABLE_ANNOTATION_ATTR_DISPLAY
+};
+
+class SvI18NMap;
+class SvXMLTokenMap;
+//class SvXMLImportItemMapper;
+class SvXMLStyleContext;
+class SfxItemSet;
+class SvXMLNumFmtHelper;
+//class ScDocument;
+
+struct tScMyCellRange
+{
+ sal_Int16 Sheet;
+ sal_Int32 StartColumn, EndColumn;
+ sal_Int32 StartRow, EndRow;
+};
+
+struct ScMyNamedExpression
+{
+ sal_Bool bIsExpression;
+ rtl::OUString sName;
+ rtl::OUString sContent;
+ rtl::OUString sBaseCellAddress;
+ rtl::OUString sRangeType;
+};
+
+typedef std::list<const ScMyNamedExpression*> ScMyNamedExpressions;
+
+class ScXMLImport: public SvXMLImport
+{
+// ScDocument& rDoc;
+
+// SvXMLAutoStylePoolP *pScAutoStylePool;
+ XMLScPropHdlFactory *pScPropHdlFactory;
+ XMLCellStylesPropertySetMapper *pCellStylesPropertySetMapper;
+ XMLPageStylesPropertySetMapper *pPageStylesPropertySetMapper;
+ XMLColumnStylesPropertySetMapper *pColumnStylesPropertySetMapper;
+ XMLRowStylesPropertySetMapper *pRowStylesPropertySetMapper;
+ XMLTableStylesPropertySetMapper *pTableStylesPropertySetMapper;
+ SvXMLImportContextRef xStyles;
+ SvXMLImportContextRef xAutoStyles;
+
+// SvXMLImportItemMapper *pParaItemMapper;// paragraph item import
+// SvI18NMap *pI18NMap; // name mapping for I18N
+ SvXMLTokenMap *pDocElemTokenMap;
+ SvXMLTokenMap *pStylesElemTokenMap;
+ SvXMLTokenMap *pStylesAttrTokenMap;
+ SvXMLTokenMap *pStyleElemTokenMap;
+ SvXMLTokenMap *pBodyElemTokenMap;
+ SvXMLTokenMap *pTableElemTokenMap;
+ SvXMLTokenMap *pNamedExpressionsElemTokenMap;
+ SvXMLTokenMap *pNamedRangeAttrTokenMap;
+ SvXMLTokenMap *pNamedExpressionAttrTokenMap;
+ SvXMLTokenMap *pDatabaseRangesElemTokenMap;
+ SvXMLTokenMap *pDatabaseRangeElemTokenMap;
+ SvXMLTokenMap *pDatabaseRangeAttrTokenMap;
+ SvXMLTokenMap *pDatabaseRangeSourceSQLAttrTokenMap;
+ SvXMLTokenMap *pDatabaseRangeSourceTableAttrTokenMap;
+ SvXMLTokenMap *pDatabaseRangeSourceQueryAttrTokenMap;
+ SvXMLTokenMap *pFilterElemTokenMap;
+ SvXMLTokenMap *pFilterAttrTokenMap;
+ SvXMLTokenMap *pFilterConditionAttrTokenMap;
+ SvXMLTokenMap *pSortElemTokenMap;
+ SvXMLTokenMap *pSortAttrTokenMap;
+ SvXMLTokenMap *pSortSortByAttrTokenMap;
+ SvXMLTokenMap *pDatabaseRangeSubTotalRulesElemTokenMap;
+ SvXMLTokenMap *pDatabaseRangeSubTotalRulesAttrTokenMap;
+ SvXMLTokenMap *pSubTotalRulesSortGroupsAttrTokenMap;
+ SvXMLTokenMap *pSubTotalRulesSubTotalRuleElemTokenMap;
+ SvXMLTokenMap *pSubTotalRulesSubTotalRuleAttrTokenMap;
+ SvXMLTokenMap *pSubTotalRuleSubTotalFieldAttrTokenMap;
+ SvXMLTokenMap *pDataPilotTablesElemTokenMap;
+ SvXMLTokenMap *pDataPilotTableAttrTokenMap;
+ SvXMLTokenMap *pDataPilotTableElemTokenMap;
+ SvXMLTokenMap *pDataPilotTableSourceServiceAttrTokenMap;
+ SvXMLTokenMap *pDataPilotTableSourceCellRangeElemTokenMap;
+ SvXMLTokenMap *pDataPilotTableSourceCellRangeAttrTokenMap;
+ SvXMLTokenMap *pDataPilotFieldAttrTokenMap;
+ SvXMLTokenMap *pDataPilotFieldElemTokenMap;
+ SvXMLTokenMap *pDataPilotLevelAttrTokenMap;
+ SvXMLTokenMap *pDataPilotLevelElemTokenMap;
+ SvXMLTokenMap *pDataPilotSubTotalsElemTokenMap;
+ SvXMLTokenMap *pDataPilotSubTotalAttrTokenMap;
+ SvXMLTokenMap *pDataPilotMembersElemTokenMap;
+ SvXMLTokenMap *pDataPilotMemberAttrTokenMap;
+ SvXMLTokenMap *pTableRowElemTokenMap;
+ SvXMLTokenMap *pTableRowCellElemTokenMap;
+ SvXMLTokenMap *pTableAttrTokenMap;
+ SvXMLTokenMap *pTableColAttrTokenMap;
+ SvXMLTokenMap *pTableRowAttrTokenMap;
+ SvXMLTokenMap *pTableRowCellAttrTokenMap;
+ SvXMLTokenMap *pTableAnnotationAttrTokenMap;
+
+ sal_uInt16 nStyleFamilyMask;// Mask of styles to load
+ sal_Bool bLoadDoc : 1; // Load doc or styles only
+
+ ScMyTables aTables;
+
+ ScMyNamedExpressions aMyNamedExpressions;
+
+protected:
+
+ // This method is called after the namespace map has been updated, but
+ // before a context for the current element has been pushed.
+ virtual SvXMLImportContext *CreateContext(USHORT nPrefix,
+ const ::rtl::OUString& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+public:
+ rtl::OUString sSC_float;
+ rtl::OUString sSC_time;
+ rtl::OUString sSC_date;
+ rtl::OUString sSC_percentage;
+ rtl::OUString sSC_currency;
+ rtl::OUString sSC_string;
+ rtl::OUString sSC_boolean;
+
+ ScXMLImport( com::sun::star::uno::Reference <com::sun::star::frame::XModel> xTempModel, sal_Bool bLoadDoc,
+ sal_uInt16 nStyleFamMask );
+ ~ScXMLImport();
+
+ // namespace office
+ SvXMLImportContext *CreateMetaContext(
+ const NAMESPACE_RTL(OUString)& rLocalName );
+ SvXMLImportContext *CreateStylesContext(const NAMESPACE_RTL(OUString)& rLocalName,
+ const com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList>& xAttrList, sal_Bool bAutoStyles );
+// SvXMLImportContext *CreateUseStylesContext(const NAMESPACE_RTL(OUString)& rLocalName ,
+// const ::com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList>& xAttrList);
+ SvXMLImportContext *CreateBodyContext(
+ const NAMESPACE_RTL(OUString)& rLocalName );
+
+// ScDocument& GetDoc() { return rDoc; }
+// const ScDocument& GetDoc() const { return rDoc; }
+
+ ScMyTables& GetTables() { return aTables; }
+
+ sal_uInt16 GetStyleFamilyMask() const { return nStyleFamilyMask; }
+ sal_Bool IsStylesOnlyMode() const { return !bLoadDoc; }
+
+// SvI18NMap& GetI18NMap() { return *pI18NMap; }
+
+// inline const SvXMLImportItemMapper& GetParaItemMapper() const;
+// SvXMLImportContext *CreateParaItemImportContext( USHORT nPrefix,
+// const NAMESPACE_RTL(OUString)& rLocalName,
+// const ::com::sun::star::uno::Reference<
+// ::com::sun::star::xml::sax::XAttributeList& xAttrList,
+// SfxItemSet& rItemSet );
+
+ XMLCellStylesPropertySetMapper* GetCellStylesPropertySetMapper() const { return pCellStylesPropertySetMapper; }
+ XMLPageStylesPropertySetMapper* GetPageStylesPropertySetMapper() const { return pPageStylesPropertySetMapper; }
+ XMLColumnStylesPropertySetMapper* GetColumnStylesPropertySetMapper() const { return pColumnStylesPropertySetMapper; }
+ XMLRowStylesPropertySetMapper* GetRowStylesPropertySetMapper() const { return pRowStylesPropertySetMapper; }
+ XMLTableStylesPropertySetMapper* GetTableStylesPropertySetMapper() const { return pTableStylesPropertySetMapper; }
+ SvXMLImportContextRef GetAutoStyles() const { return xAutoStyles; }
+ SvXMLImportContextRef GetStyles() const { return xStyles; }
+
+ const SvXMLTokenMap& GetDocElemTokenMap();
+ const SvXMLTokenMap& GetStylesElemTokenMap();
+ const SvXMLTokenMap& GetStylesAttrTokenMap();
+ const SvXMLTokenMap& GetStyleElemTokenMap();
+ const SvXMLTokenMap& GetBodyElemTokenMap();
+ const SvXMLTokenMap& GetTableElemTokenMap();
+ const SvXMLTokenMap& GetNamedExpressionsElemTokenMap();
+ const SvXMLTokenMap& GetNamedRangeAttrTokenMap();
+ const SvXMLTokenMap& GetNamedExpressionAttrTokenMap();
+ const SvXMLTokenMap& GetDatabaseRangesElemTokenMap();
+ const SvXMLTokenMap& GetDatabaseRangeElemTokenMap();
+ const SvXMLTokenMap& GetDatabaseRangeAttrTokenMap();
+ const SvXMLTokenMap& GetDatabaseRangeSourceSQLAttrTokenMap();
+ const SvXMLTokenMap& GetDatabaseRangeSourceTableAttrTokenMap();
+ const SvXMLTokenMap& GetDatabaseRangeSourceQueryAttrTokenMap();
+ const SvXMLTokenMap& GetFilterElemTokenMap();
+ const SvXMLTokenMap& GetFilterAttrTokenMap();
+ const SvXMLTokenMap& GetFilterConditionAttrTokenMap();
+ const SvXMLTokenMap& GetSortElemTokenMap();
+ const SvXMLTokenMap& GetSortAttrTokenMap();
+ const SvXMLTokenMap& GetSortSortByAttrTokenMap();
+ const SvXMLTokenMap& GetDatabaseRangeSubTotalRulesElemTokenMap();
+ const SvXMLTokenMap& GetDatabaseRangeSubTotalRulesAttrTokenMap();
+ const SvXMLTokenMap& GetSubTotalRulesSortGroupsAttrTokenMap();
+ const SvXMLTokenMap& GetSubTotalRulesSubTotalRuleElemTokenMap();
+ const SvXMLTokenMap& GetSubTotalRulesSubTotalRuleAttrTokenMap();
+ const SvXMLTokenMap& GetSubTotalRuleSubTotalFieldAttrTokenMap();
+ const SvXMLTokenMap& GetDataPilotTablesElemTokenMap();
+ const SvXMLTokenMap& GetDataPilotTableAttrTokenMap();
+ const SvXMLTokenMap& GetDataPilotTableElemTokenMap();
+ const SvXMLTokenMap& GetDataPilotTableSourceServiceAttrTokenMap();
+ const SvXMLTokenMap& GetDataPilotTableSourceCellRangeElemTokenMap();
+ const SvXMLTokenMap& GetDataPilotTableSourceCellRangeAttrTokenMap();
+ const SvXMLTokenMap& GetDataPilotFieldAttrTokenMap();
+ const SvXMLTokenMap& GetDataPilotFieldElemTokenMap();
+ const SvXMLTokenMap& GetDataPilotLevelAttrTokenMap();
+ const SvXMLTokenMap& GetDataPilotLevelElemTokenMap();
+ const SvXMLTokenMap& GetDataPilotSubTotalsElemTokenMap();
+ const SvXMLTokenMap& GetDataPilotSubTotalAttrTokenMap();
+ const SvXMLTokenMap& GetDataPilotMembersElemTokenMap();
+ const SvXMLTokenMap& GetDataPilotMemberAttrTokenMap();
+ const SvXMLTokenMap& GetTableRowElemTokenMap();
+ const SvXMLTokenMap& GetTableRowCellElemTokenMap();
+ const SvXMLTokenMap& GetTableAttrTokenMap();
+ const SvXMLTokenMap& GetTableColAttrTokenMap();
+ const SvXMLTokenMap& GetTableRowAttrTokenMap();
+ const SvXMLTokenMap& GetTableRowCellAttrTokenMap();
+ const SvXMLTokenMap& GetTableAnnotationAttrTokenMap();
+// const SvXMLTokenMap& GetTextPElemTokenMap();
+// const SvXMLTokenMap& GetTextPAttrTokenMap();
+// const SvXMLTokenMap& GetStyleStylesElemTokenMap();
+// const SvXMLTokenMap& GetTextListBlockAttrTokenMap();
+// const SvXMLTokenMap& GetTextListBlockElemTokenMap();
+
+ void AddNamedExpression(const ScMyNamedExpression* pMyNamedExpression) { aMyNamedExpressions.insert(aMyNamedExpressions.end(), pMyNamedExpression); }
+ ScMyNamedExpressions* GetNamedExpressions() { return &aMyNamedExpressions; }
+};
+
+#endif
+
diff --git a/sc/source/filter/xml/xmlnexpi.cxx b/sc/source/filter/xml/xmlnexpi.cxx
new file mode 100644
index 000000000000..4c068e5d5e1d
--- /dev/null
+++ b/sc/source/filter/xml/xmlnexpi.cxx
@@ -0,0 +1,356 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlnexpi.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+#include <rtl/ustrbuf.hxx>
+
+#include "xmlnexpi.hxx"
+#include "xmlimprt.hxx"
+#include "xmlcelli.hxx"
+#include "docuno.hxx"
+#include "global.hxx"
+//#include "document.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/nmspmap.hxx>
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/sheet/XNamedRanges.hpp>
+#include <com/sun/star/sheet/NamedRangeFlag.hpp>
+
+#define SC_NAMEDRANGES "NamedRanges"
+#define SC_REPEAT_COLUMN "repeat-column"
+#define SC_REPEAT_ROW "repeat-row"
+#define SC_FILTER "filter"
+#define SC_PRINT_RANGE "print-range"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLNamedExpressionsContext::ScXMLNamedExpressionsContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+/* sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetNamedRangeAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ }
+ }*/
+}
+
+ScXMLNamedExpressionsContext::~ScXMLNamedExpressionsContext()
+{
+}
+
+SvXMLImportContext *ScXMLNamedExpressionsContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetNamedExpressionsElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_NAMED_EXPRESSIONS_NAMED_RANGE:
+ pContext = new ScXMLNamedRangeContext( GetScImport(), nPrefix,
+ rLName, xAttrList//,
+ //this
+ );
+ break;
+ case XML_TOK_NAMED_EXPRESSIONS_NAMED_EXPRESSION:
+ pContext = new ScXMLNamedExpressionContext( GetScImport(), nPrefix,
+ rLName, xAttrList//,
+ //this
+ );
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+sal_Int32 ScXMLNamedExpressionsContext::GetRangeType(const rtl::OUString sRangeType) const
+{
+ sal_Int32 nRangeType = 0;
+ rtl::OUStringBuffer sBuffer;
+ sal_Int16 i = 0;
+ while (i <= sRangeType.getLength())
+ {
+ if ((sRangeType[i] == ' ') || (i == sRangeType.getLength()))
+ {
+ rtl::OUString sTemp = sBuffer.makeStringAndClear();
+ if (sTemp.compareToAscii(SC_REPEAT_COLUMN) == 0)
+ nRangeType |= sheet::NamedRangeFlag::COLUMN_HEADER;
+ else if (sTemp.compareToAscii(SC_REPEAT_ROW) == 0)
+ nRangeType |= sheet::NamedRangeFlag::ROW_HEADER;
+ else if (sTemp.compareToAscii(SC_FILTER) == 0)
+ nRangeType |= sheet::NamedRangeFlag::FILTER_CRITERIA;
+ else if (sTemp.compareToAscii(SC_PRINT_RANGE) == 0)
+ nRangeType |= sheet::NamedRangeFlag::PRINT_AREA;
+ }
+ else if (i < sRangeType.getLength())
+ sBuffer.append(sRangeType[i]);
+ i++;
+ }
+ return nRangeType;
+}
+
+void ScXMLNamedExpressionsContext::EndElement()
+{
+ ScXMLImport& rXMLImport = GetScImport();
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rXMLImport.GetModel(), uno::UNO_QUERY );
+ ScModelObj* pDocObj = ScModelObj::getImplementation( xSpreadDoc );
+ if ( pDocObj && xSpreadDoc.is() )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ uno::Reference <beans::XPropertySet> xPropertySet (xSpreadDoc, uno::UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ uno::Any aNamedRanges = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NAMEDRANGES)));
+ uno::Reference <sheet::XNamedRanges> xNamedRanges;
+ if (aNamedRanges >>= xNamedRanges)
+ {
+ ScMyNamedExpressions* pNamedExpressions = rXMLImport.GetNamedExpressions();
+ ScMyNamedExpressions::const_iterator i = pNamedExpressions->begin();
+ table::CellAddress aCellAddress;
+ ScAddress aBaseCellAddress;
+ rtl::OUString sTempContent;
+ while (i != pNamedExpressions->end())
+ {
+ aBaseCellAddress.Parse((*i)->sBaseCellAddress, pDoc);
+ aCellAddress.Column = aBaseCellAddress.Col();
+ aCellAddress.Row = aBaseCellAddress.Row();
+ aCellAddress.Sheet = aBaseCellAddress.Tab();
+ sTempContent = (*i)->sContent;
+ ScXMLTableRowCellContext::ParseFormula(sTempContent, (*i)->bIsExpression);
+ xNamedRanges->addNewByName((*i)->sName, sTempContent, aCellAddress, GetRangeType((*i)->sRangeType));
+ delete *i;
+ i++;
+ }
+ }
+ }
+ }
+}
+
+ScXMLNamedRangeContext::ScXMLNamedRangeContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ ScMyNamedExpression* pNamedExpression = new ScMyNamedExpression;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetNamedRangeAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_NAMED_RANGE_ATTR_NAME :
+ {
+ pNamedExpression->sName = sValue;
+ }
+ break;
+ case XML_TOK_NAMED_RANGE_ATTR_CELL_RANGE_ADDRESS :
+ {
+ pNamedExpression->sContent = sValue;
+ }
+ break;
+ case XML_TOK_NAMED_RANGE_ATTR_BASE_CELL_ADDRESS :
+ {
+ pNamedExpression->sBaseCellAddress = sValue;
+ }
+ break;
+ case XML_TOK_NAMED_RANGE_ATTR_RANGE_USABLE_AS :
+ {
+ pNamedExpression->sRangeType = sValue;
+ }
+ break;
+ }
+ }
+ pNamedExpression->bIsExpression = sal_False;
+ GetScImport().AddNamedExpression(pNamedExpression);
+}
+
+ScXMLNamedRangeContext::~ScXMLNamedRangeContext()
+{
+}
+
+SvXMLImportContext *ScXMLNamedRangeContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+/* const SvXMLTokenMap& rTokenMap = GetScImport().GetTableElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ }*/
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLNamedRangeContext::EndElement()
+{
+}
+
+ScXMLNamedExpressionContext::ScXMLNamedExpressionContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ ScMyNamedExpression* pNamedExpression = new ScMyNamedExpression;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetNamedExpressionAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_NAMED_EXPRESSION_ATTR_NAME :
+ {
+ pNamedExpression->sName = sValue;
+ }
+ break;
+ case XML_TOK_NAMED_EXPRESSION_ATTR_EXPRESSION :
+ {
+ pNamedExpression->sContent = sValue;
+ }
+ break;
+ case XML_TOK_NAMED_EXPRESSION_ATTR_BASE_CELL_ADDRESS :
+ {
+ pNamedExpression->sBaseCellAddress = sValue;
+ }
+ break;
+ }
+ }
+ pNamedExpression->bIsExpression = sal_True;
+ GetScImport().AddNamedExpression(pNamedExpression);
+}
+
+ScXMLNamedExpressionContext::~ScXMLNamedExpressionContext()
+{
+}
+
+SvXMLImportContext *ScXMLNamedExpressionContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+/* const SvXMLTokenMap& rTokenMap = GetScImport().GetTableElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ }*/
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLNamedExpressionContext::EndElement()
+{
+}
+
diff --git a/sc/source/filter/xml/xmlnexpi.hxx b/sc/source/filter/xml/xmlnexpi.hxx
new file mode 100644
index 000000000000..43881f9e3e9c
--- /dev/null
+++ b/sc/source/filter/xml/xmlnexpi.hxx
@@ -0,0 +1,141 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlnexpi.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLNEXPI_HXX
+#define SC_XMLNEXPI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+
+class ScXMLImport;
+
+class ScXMLNamedExpressionsContext : public SvXMLImportContext
+{
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLNamedExpressionsContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
+
+ virtual ~ScXMLNamedExpressionsContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ sal_Int32 GetRangeType(const rtl::OUString sRangeType) const;
+ virtual void EndElement();
+};
+
+class ScXMLNamedRangeContext : public SvXMLImportContext
+{
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLNamedRangeContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
+
+ virtual ~ScXMLNamedRangeContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+class ScXMLNamedExpressionContext : public SvXMLImportContext
+{
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLNamedExpressionContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList);
+
+ virtual ~ScXMLNamedExpressionContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+#endif
diff --git a/sc/source/filter/xml/xmlrowi.cxx b/sc/source/filter/xml/xmlrowi.cxx
new file mode 100644
index 000000000000..5e5e9f486757
--- /dev/null
+++ b/sc/source/filter/xml/xmlrowi.cxx
@@ -0,0 +1,269 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlrowi.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmlrowi.hxx"
+#include "xmlimprt.hxx"
+#include "xmlcelli.hxx"
+#include "global.hxx"
+#include "xmlstyli.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/nmspmap.hxx>
+#ifndef _XMLOFF_FAMILIES_HXX_
+#include <xmloff/families.hxx>
+#endif
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEETDOCUMENT_HPP_
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEET_HPP_
+#include <com/sun/star/sheet/XSpreadsheet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XCOLUMNROWRANGE_HPP_
+#include <com/sun/star/table/XColumnRowRange.hpp>
+#endif
+
+#include <com/sun/star/table/CellAddress.hpp>
+
+#define SC_ISVISIBLE "IsVisible"
+#define SC_OPTIMALHEIGHT "OptimalHeight"
+#define SC_ISFILTERED "IsFiltered"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLTableRowContext::ScXMLTableRowContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ sVisibility(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_visible))),
+ nRepeatedRows(1)
+// sOptimalHeight(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_false)))
+{
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetTableRowAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_TABLE_ROW_ATTR_STYLE_NAME:
+ {
+ sStyleName = sValue;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_ATTR_VISIBILITY:
+ {
+ sVisibility = sValue;
+ }
+ break;
+ case XML_TOK_TABLE_ROW_ATTR_REPEATED:
+ {
+ nRepeatedRows = sValue.toInt32();
+ }
+ break;
+ /*case XML_TOK_TABLE_ROW_ATTR_USE_OPTIMAL_HEIGHT:
+ {
+ sOptimalHeight = sValue;
+ }
+ break;*/
+ }
+ }
+ GetScImport().GetTables().AddRow();
+}
+
+ScXMLTableRowContext::~ScXMLTableRowContext()
+{
+}
+
+SvXMLImportContext *ScXMLTableRowContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetTableRowElemTokenMap();
+ sal_Bool bHeader = sal_False;
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_TABLE_ROW_CELL:
+// if( IsInsertCellPossible() )
+ pContext = new ScXMLTableRowCellContext( GetScImport(), nPrefix,
+ rLName, xAttrList, sal_False, nRepeatedRows
+ //this
+ );
+ break;
+ case XML_TOK_TABLE_ROW_COVERED_CELL:
+// if( IsInsertCellPossible() )
+ pContext = new ScXMLTableRowCellContext( GetScImport(), nPrefix,
+ rLName, xAttrList, sal_True, nRepeatedRows
+ //this
+ );
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLTableRowContext::EndElement()
+{
+ ScXMLImport& rXMLImport = GetScImport();
+ sal_Int16 nSheet = rXMLImport.GetTables().GetCurrentSheet();
+ sal_Int32 nCurrentRow = rXMLImport.GetTables().GetCurrentRow();
+ uno::Reference <sheet::XSpreadsheetDocument> xSheetsDocument (rXMLImport.GetModel(), uno::UNO_QUERY);
+ if(xSheetsDocument.is())
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSheetsDocument->getSheets();
+ if (xSheets.is())
+ {
+ uno::Reference<container::XIndexAccess> xIndex(xSheets, uno::UNO_QUERY);
+ if (xIndex.is())
+ {
+ uno::Any aSheet = xIndex->getByIndex(nSheet);
+ uno::Reference<sheet::XSpreadsheet> xSheet;
+ if(aSheet >>= xSheet)
+ {
+ uno::Reference<table::XColumnRowRange> xColumnRowRange (xSheet, uno::UNO_QUERY);
+ if (xColumnRowRange.is())
+ {
+ uno::Reference<table::XTableRows> xTableRows = xColumnRowRange->getRows();
+ if (xTableRows.is())
+ {
+ uno::Any aRow = xTableRows->getByIndex(nCurrentRow);
+ uno::Reference<table::XCellRange> xTableRow;
+ if (aRow >>= xTableRow)
+ {
+ uno::Reference <beans::XPropertySet> xRowProperties(xTableRow, uno::UNO_QUERY);
+ if (xRowProperties.is())
+ {
+ XMLTableStylesContext *pStyles = (XMLTableStylesContext *)&rXMLImport.GetAutoStyles();
+ XMLTableStyleContext* pStyle = (XMLTableStyleContext *)pStyles->FindStyleChildContext(
+ XML_STYLE_FAMILY_TABLE_ROW, sStyleName, sal_True);
+ if (pStyle)
+ {
+ pStyle->FillPropertySet(xRowProperties);
+ }
+ uno::Any aVisibleAny = xRowProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ISVISIBLE)));
+ uno::Any aFilteredAny = xRowProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ISFILTERED)));
+ if (sVisibility.compareToAscii(sXML_collapse) == 0)
+ {
+ sal_Bool bValue = sal_False;
+ aVisibleAny <<= bValue;
+ aFilteredAny <<= bValue;
+ }
+ else if (sVisibility.compareToAscii(sXML_filter) == 0)
+ {
+ sal_Bool bValue = sal_False;
+ aVisibleAny <<= bValue;
+ bValue = sal_True;
+ aFilteredAny <<= bValue;
+ }
+ else
+ {
+ sal_Bool bValue = sal_True;
+ aVisibleAny <<= bValue;
+ bValue = sal_False;
+ aFilteredAny <<= bValue;
+ }
+ /*uno::Any aAny = xRowProperties->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_OPTIMALHEIGHT)));
+ if (sOptimalHeight.compareToAscii(sXML_true) != 0)
+ {
+ sal_Bool bValue = sal_False;
+ aAny <<= bValue;
+ }
+ else
+ {
+ sal_Bool bValue = sal_True;
+ aAny <<= bValue;
+ }*/
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/sc/source/filter/xml/xmlrowi.hxx b/sc/source/filter/xml/xmlrowi.hxx
new file mode 100644
index 000000000000..bb1355e7049d
--- /dev/null
+++ b/sc/source/filter/xml/xmlrowi.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlrowi.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLROWI_HXX
+#define SC_XMLROWI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+
+class ScXMLImport;
+
+class ScXMLTableRowContext : public SvXMLImportContext
+{
+ rtl::OUString sStyleName;
+ rtl::OUString sVisibility;
+ sal_Int32 nRepeatedRows;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLTableRowContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual ~ScXMLTableRowContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+#endif
diff --git a/sc/source/filter/xml/xmlsorti.cxx b/sc/source/filter/xml/xmlsorti.cxx
new file mode 100644
index 000000000000..cde66b92f0f0
--- /dev/null
+++ b/sc/source/filter/xml/xmlsorti.cxx
@@ -0,0 +1,320 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlsorti.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmlsorti.hxx"
+#include "xmlimprt.hxx"
+#include "docuno.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlkywd.hxx>
+
+#define SC_USERLIST "UserList"
+#define SC_BINDFORMATSTOCONTENT "BindFormatstoContent"
+#define SC_COPYOUTPUTDATA "CopyOutputData"
+#define SC_ISCASESENSITIVE "IsCaseSensitive"
+#define SC_ISUSERLISTENABLED "IsUserListEnabled"
+#define SC_OUTPUTPOSITION "OutputPosition"
+#define SC_USERLISTINDEX "UserListIndex"
+#define SC_SORTFIELDS "SortFields"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLSortContext::ScXMLSortContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
+ bEnabledUserList(sal_False),
+ bBindFormatsToContent(sal_True),
+ bIsCaseSensitive(sal_False),
+ bCopyOutputData(sal_False),
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ pDatabaseRangeContext = pTempDatabaseRangeContext;
+ nUserListIndex = 0;
+
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetSortAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SORT_ATTR_BIND_STYLES_TO_CONTENT :
+ {
+ if (sValue.compareToAscii(sXML_false) == 0)
+ bBindFormatsToContent = sal_False;
+ }
+ break;
+ case XML_TOK_SORT_ATTR_TARGET_RANGE_ADDRESS :
+ {
+ ScXMLImport& rXMLImport = GetScImport();
+ ScModelObj* pDocObj = ScModelObj::getImplementation( rXMLImport.GetModel() );
+ if ( pDocObj )
+ {
+ ScDocument* pDoc = pDocObj->GetDocument();
+ ScAddress aStartCellAddress;
+ //ScAddress aEndCellAddress;
+ sal_Int16 i = 0;
+ while ((sValue[i] != ':') && (i < sValue.getLength()))
+ i++;
+ rtl::OUString sStartCellAddress = sValue.copy(0, i);
+ //rtl::OUString sEndCellAddress = sRangeAddress.copy(i + 1);
+ aStartCellAddress.Parse(sStartCellAddress, pDoc);
+ //aEndCellAddress.Parse(sEndCellAddress, pDoc);
+ aOutputPosition.Column = aStartCellAddress.Col();
+ aOutputPosition.Row = aStartCellAddress.Row();
+ aOutputPosition.Sheet = aStartCellAddress.Tab();
+ bCopyOutputData = sal_True;
+ }
+ }
+ break;
+ case XML_TOK_SORT_ATTR_CASE_SENSITIVE :
+ {
+ if (sValue.compareToAscii(sXML_false) == 0)
+ bIsCaseSensitive = sal_False;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLSortContext::~ScXMLSortContext()
+{
+}
+
+SvXMLImportContext *ScXMLSortContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetSortElemTokenMap();
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+ case XML_TOK_SORT_SORT_BY :
+ {
+ pContext = new ScXMLSortByContext( GetScImport(), nPrefix,
+ rLName, xAttrList, this);
+ }
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSortContext::EndElement()
+{
+ uno::Sequence <beans::PropertyValue> aSortDescriptor(7);
+ uno::Any aTemp;
+ beans::PropertyValue aPropertyValue;
+ aTemp <<= bBindFormatsToContent;
+ aPropertyValue.Name = rtl::OUString::createFromAscii(SC_BINDFORMATSTOCONTENT);
+ aPropertyValue.Value = aTemp;
+ aSortDescriptor[0] = aPropertyValue;
+ aTemp <<= bCopyOutputData;
+ aPropertyValue.Name = rtl::OUString::createFromAscii(SC_COPYOUTPUTDATA);
+ aPropertyValue.Value = aTemp;
+ aSortDescriptor[1] = aPropertyValue;
+ aTemp <<= bIsCaseSensitive;
+ aPropertyValue.Name = rtl::OUString::createFromAscii(SC_ISCASESENSITIVE);
+ aPropertyValue.Value = aTemp;
+ aSortDescriptor[2] = aPropertyValue;
+ aTemp <<= bEnabledUserList;
+ aPropertyValue.Name = rtl::OUString::createFromAscii(SC_ISUSERLISTENABLED);
+ aPropertyValue.Value = aTemp;
+ aSortDescriptor[3] = aPropertyValue;
+ aTemp <<= nUserListIndex;
+ aPropertyValue.Name = rtl::OUString::createFromAscii(SC_USERLISTINDEX);
+ aPropertyValue.Value = aTemp;
+ aSortDescriptor[4] = aPropertyValue;
+ aTemp <<= aOutputPosition;
+ aPropertyValue.Name = rtl::OUString::createFromAscii(SC_OUTPUTPOSITION);
+ aPropertyValue.Value = aTemp;
+ aSortDescriptor[5] = aPropertyValue;
+ aTemp <<= aSortFields;
+ aPropertyValue.Name = rtl::OUString::createFromAscii(SC_SORTFIELDS);
+ aPropertyValue.Value = aTemp;
+ aSortDescriptor[6] = aPropertyValue;
+ pDatabaseRangeContext->SetSortSequence(aSortDescriptor);
+}
+
+void ScXMLSortContext::AddSortField(const rtl::OUString& sFieldNumber, const rtl::OUString& sDataType, const rtl::OUString& sOrder)
+{
+ util::SortField aSortField;
+ aSortField.Field = sFieldNumber.toInt32();
+ if (sOrder.compareToAscii(sXML_ascending) == 0)
+ aSortField.SortAscending = sal_True;
+ else
+ aSortField.SortAscending = sal_False;
+ if (sDataType.getLength() > 8)
+ {
+ rtl::OUString sTemp = sDataType.copy(0, 8);
+ if (sTemp.compareToAscii(SC_USERLIST) == 0)
+ {
+ bEnabledUserList = sal_True;
+ sTemp = sDataType.copy(8);
+ nUserListIndex = sTemp.toInt32();
+ }
+ else
+ {
+ if (sDataType.compareToAscii(sXML_automatic) == 0)
+ aSortField.FieldType = util::SortFieldType_AUTOMATIC;
+ }
+ }
+ else
+ {
+ if (sDataType.compareToAscii(sXML_text) == 0)
+ aSortField.FieldType = util::SortFieldType_ALPHANUMERIC;
+ else if (sDataType.compareToAscii(sXML_number) == 0)
+ aSortField.FieldType = util::SortFieldType_NUMERIC;
+ }
+ aSortFields.realloc(aSortFields.getLength() + 1);
+ aSortFields[aSortFields.getLength() - 1] = aSortField;
+}
+
+ScXMLSortByContext::ScXMLSortByContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLSortContext* pTempSortContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ sOrder = rtl::OUString::createFromAscii(sXML_ascending);
+ sDataType = rtl::OUString::createFromAscii(sXML_automatic);
+ pSortContext = pTempSortContext;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetSortSortByAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_SORT_BY_ATTR_FIELD_NUMBER :
+ {
+ sFieldNumber = sValue;
+ }
+ break;
+ case XML_TOK_SORT_BY_ATTR_DATA_TYPE :
+ {
+ sDataType = sValue;
+ }
+ break;
+ case XML_TOK_SORT_BY_ATTR_ORDER :
+ {
+ sOrder = sValue;
+ }
+ break;
+ }
+ }
+}
+
+ScXMLSortByContext::~ScXMLSortByContext()
+{
+}
+
+SvXMLImportContext *ScXMLSortByContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLSortByContext::EndElement()
+{
+ pSortContext->AddSortField(sFieldNumber, sDataType, sOrder);
+}
+
diff --git a/sc/source/filter/xml/xmlsorti.hxx b/sc/source/filter/xml/xmlsorti.hxx
new file mode 100644
index 000000000000..d1d91a75197d
--- /dev/null
+++ b/sc/source/filter/xml/xmlsorti.hxx
@@ -0,0 +1,145 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlsorti.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLSORTI_HXX
+#define SC_XMLSORTI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_SORTFIELD_HPP_
+#include <com/sun/star/util/SortField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLADDRESS_HPP_
+#include <com/sun/star/table/CellAddress.hpp>
+#endif
+
+#include "xmldrani.hxx"
+
+class ScXMLImport;
+
+class ScXMLSortContext : public SvXMLImportContext
+{
+ ScXMLDatabaseRangeContext* pDatabaseRangeContext;
+
+ com::sun::star::uno::Sequence <com::sun::star::util::SortField> aSortFields;
+ com::sun::star::table::CellAddress aOutputPosition;
+ sal_Bool bCopyOutputData;
+ sal_Bool bBindFormatsToContent;
+ sal_Bool bIsCaseSensitive;
+ sal_Bool bEnabledUserList;
+ sal_Int16 nUserListIndex;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSortContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLDatabaseRangeContext* pTempDatabaseRangeContext);
+
+ virtual ~ScXMLSortContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+
+ void AddSortField(const rtl::OUString& sFieldNumber, const rtl::OUString& sDataType, const rtl::OUString& sOrder);
+};
+
+class ScXMLSortByContext : public SvXMLImportContext
+{
+ ScXMLSortContext* pSortContext;
+
+ rtl::OUString sFieldNumber;
+ rtl::OUString sDataType;
+ rtl::OUString sOrder;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLSortByContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ ScXMLSortContext* pTempSortContext);
+
+ virtual ~ScXMLSortByContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+#endif
diff --git a/sc/source/filter/xml/xmlstyle.cxx b/sc/source/filter/xml/xmlstyle.cxx
new file mode 100644
index 000000000000..debf10a65c7d
--- /dev/null
+++ b/sc/source/filter/xml/xmlstyle.cxx
@@ -0,0 +1,1566 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlstyle.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _XMLSTYLE_HXX
+#include "xmlstyle.hxx"
+#endif
+#include "xmlexprt.hxx"
+#include "xmlimprt.hxx"
+
+/*#ifndef _PROPIMP0_HXX
+#include "propimp0.hxx"
+#endif*/
+
+#include <xmloff/xmlnmspe.hxx>
+#include <xmloff/xmlkywd.hxx>
+#include <xmloff/xmluconv.hxx>
+#include <xmloff/xmltypes.hxx>
+#include <xmloff/families.hxx>
+#ifndef _XMLOFF_XMLNUMFE_HXX
+#include <xmloff/xmlnumfe.hxx>
+#endif
+#ifndef _XMLOFF_XMLNUMFI_HXX
+#include <xmloff/xmlnumfi.hxx>
+#endif
+#ifndef _XMLOFF_NMSPMAP_HXX
+#include <xmloff/nmspmap.hxx>
+#endif
+#ifndef _XMLOFF_ATTRLIST_HXX
+#include <xmloff/attrlist.hxx>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_CELLPROTECTION_HPP_
+#include <com/sun/star/util/CellProtection.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLORIENTATION_HPP_
+#include <com/sun/star/table/CellOrientation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLVERTJUSTIFY_HPP_
+#include <com/sun/star/table/CellVertJustify.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLHORIJUSTIFY_HPP_
+#include <com/sun/star/table/CellHoriJustify.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_TABLEBORDER_HPP_
+#include <com/sun/star/table/TableBorder.hpp>
+#endif
+
+#include <rtl/ustrbuf.hxx>
+
+#ifdef _USE_NAMESPACE
+using namespace com::sun::star;
+#endif
+
+const XMLPropertyMapEntry aXMLScCellStylesProperties[] =
+{
+ { "CellBackColor", XML_NAMESPACE_FO, sXML_background_color, XML_SC_TYPE_CELLBACKCOLOR|MID_FLAG_MULTI_PROPERTY, CTF_CELLBACKCOLOR },
+ { "CellProtection", XML_NAMESPACE_STYLE, sXML_cell_protect, XML_SC_TYPE_CELLPROTECTION|MID_FLAG_MERGE_PROPERTY, 0 },
+ { "CellProtection", XML_NAMESPACE_STYLE, sXML_print_content, XML_SC_TYPE_PRINTCONTENT|MID_FLAG_MERGE_PROPERTY, 0 },
+ { "NumberFormat", XML_NAMESPACE_STYLE, sXML_data_style_name, XML_TYPE_NUMBER|MID_FLAG_SPECIAL_ITEM, CTF_NUMBERFORMAT},
+ { "HoriJustify", XML_NAMESPACE_FO, sXML_text_align, XML_SC_TYPE_HORIJUSTIFY|MID_FLAG_MERGE_PROPERTY, 0 },
+ { "HoriJustify", XML_NAMESPACE_STYLE, sXML_text_align_source, XML_SC_TYPE_HORIJUSTIFYSOURCE|MID_FLAG_MERGE_PROPERTY, 0 },
+// { "HoriJustify", XML_NAMESPACE_FO, sXML_text_align, XML_SC_TYPE_HORIJUSTIFY|MID_FLAG_MULTI_PROPERTY, CTF_HORIJUSTIFY },
+// { "HoriJustify", XML_NAMESPACE_STYLE, sXML_text_align_source, XML_SC_TYPE_HORIJUSTIFYSOURCE|MID_FLAG_MULTI_PROPERTY, CTF_HORIJUSTIFY_SOURCE },
+ { "IsCellBackgroundTransparent", XML_NAMESPACE_FO, sXML_background_color, XML_SC_TYPE_ISCELLBACKGROUNDTRANSPARENT|MID_FLAG_MULTI_PROPERTY, CTF_ISCELLBACKGROUNDTRANSPARENT },
+// { "IsTextWrapped", XML_NAMESPACE_STYLE, sXML_text_outline, XML_TYPE_BOOL, 0 },
+ { "Orientation", XML_NAMESPACE_FO, sXML_direction, XML_SC_TYPE_ORIENTATION, 0 },
+ { "ParaIndent", XML_NAMESPACE_FO, sXML_margin_left, XML_TYPE_MEASURE, 0 },
+ { "ParaBottomMargin", XML_NAMESPACE_FO, sXML_padding, XML_TYPE_MEASURE, CTF_ALLPADDING },
+ { "ParaBottomMargin", XML_NAMESPACE_FO, sXML_padding_bottom, XML_TYPE_MEASURE, CTF_BOTTOMPADDING },
+ { "ParaLeftMargin", XML_NAMESPACE_FO, sXML_padding_left, XML_TYPE_MEASURE, CTF_LEFTPADDING },
+ { "ParaRightMargin", XML_NAMESPACE_FO, sXML_padding_right, XML_TYPE_MEASURE, CTF_RIGHTPADDING },
+ { "ParaTopMargin", XML_NAMESPACE_FO, sXML_padding_top, XML_TYPE_MEASURE, CTF_TOPPADDING },
+ { "RotateAngle", XML_NAMESPACE_STYLE, sXML_rotation_angle, XML_SC_TYPE_ROTATEANGLE, 0 },
+ { "RotateReference", XML_NAMESPACE_STYLE, sXML_rotation_align, XML_SC_TYPE_ROTATEREFERENCE, 0},
+ { "ShadowFormat", XML_NAMESPACE_STYLE, sXML_shadow, XML_TYPE_TEXT_SHADOW, 0 },
+ { "LeftBorder", XML_NAMESPACE_FO, sXML_border, XML_TYPE_BORDER, CTF_ALLBORDER },
+ { "LeftBorder", XML_NAMESPACE_FO, sXML_border_left, XML_TYPE_BORDER, CTF_LEFTBORDER },
+ { "RightBorder", XML_NAMESPACE_FO, sXML_border_right, XML_TYPE_BORDER, CTF_RIGHTBORDER },
+ { "TopBorder", XML_NAMESPACE_FO, sXML_border_top, XML_TYPE_BORDER, CTF_TOPBORDER },
+ { "BottomBorder", XML_NAMESPACE_FO, sXML_border_bottom, XML_TYPE_BORDER, CTF_BOTTOMBORDER },
+ { "LeftBorder", XML_NAMESPACE_STYLE, sXML_border_line_width, XML_TYPE_BORDER_WIDTH, CTF_ALLBORDERWIDTH },
+ { "LeftBorder", XML_NAMESPACE_STYLE, sXML_border_line_width_left, XML_TYPE_BORDER_WIDTH, CTF_LEFTBORDERWIDTH },
+ { "RightBorder", XML_NAMESPACE_STYLE, sXML_border_line_width_right, XML_TYPE_BORDER_WIDTH, CTF_RIGHTBORDERWIDTH },
+ { "TopBorder", XML_NAMESPACE_STYLE, sXML_border_line_width_top, XML_TYPE_BORDER_WIDTH, CTF_TOPBORDERWIDTH },
+ { "BottomBorder", XML_NAMESPACE_STYLE, sXML_border_line_width_bottom, XML_TYPE_BORDER_WIDTH, CTF_BOTTOMBORDERWIDTH },
+ { "VertJustify", XML_NAMESPACE_FO, sXML_vertical_align, XML_SC_TYPE_VERTJUSTIFY, 0},
+
+// CharacterProperties
+ { "CharAutoKerning", XML_NAMESPACE_STYLE, sXML_letter_kerning, XML_TYPE_BOOL, 0 },
+ { "CharBackColor", XML_NAMESPACE_FO, sXML_text_background_color, XML_TYPE_COLOR, 0 },
+ { "CharCaseMap", XML_NAMESPACE_FO, sXML_font_variant, XML_TYPE_TEXT_CASEMAP_VAR, 0 },
+ { "CharCaseMap", XML_NAMESPACE_FO, sXML_text_transform, XML_TYPE_TEXT_CASEMAP, 0 },
+ { "CharColor", XML_NAMESPACE_FO, sXML_color, XML_TYPE_COLOR, 0 },
+ { "CharContoured", XML_NAMESPACE_STYLE, sXML_text_outline, XML_TYPE_BOOL, 0 },
+ { "CharCrossedOut", XML_NAMESPACE_STYLE, sXML_text_crossing_out, XML_TYPE_TEXT_BOOLCROSSEDOUT, 0 },
+// { "CharEscapement", XML_NAMESPACE_STYLE, sXML_text_position, XML_TYPE_TEXT_ESCAPEMENT|MID_FLAG_MERGE_ATTRIBUTE, 0 },
+// { "CharEscapementHeight", XML_NAMESPACE_STYLE, sXML_text_position, XML_TYPE_TEXT_ESCAPEMENT_HEIGHT|MID_FLAG_MERGE_ATTRIBUTE, 0 },
+ { "CharFlash", XML_NAMESPACE_STYLE, sXML_text_blinking, XML_TYPE_BOOL, 0},
+ { "CharFontName",XML_NAMESPACE_FO, sXML_font_family, XML_TYPE_TEXT_FONTFAMILYNAME, 0 },
+// { "CharFontType", ...},
+ { "CharFontStyleName", XML_NAMESPACE_STYLE, sXML_font_style_name, XML_TYPE_STRING, 0 },
+ { "CharFontFamily", XML_NAMESPACE_STYLE, sXML_font_family_generic, XML_TYPE_TEXT_FONTFAMILY, 0 },
+ { "CharFontPitch", XML_NAMESPACE_STYLE, sXML_font_pitch, XML_TYPE_TEXT_FONTPITCH, 0 },
+ { "CharFontCharSet", XML_NAMESPACE_STYLE, sXML_font_charset, XML_TYPE_TEXT_FONTENCODING, 0 },
+ { "CharHeight", XML_NAMESPACE_FO, sXML_font_size, XML_TYPE_CHAR_HEIGHT, 0 },
+ { "CharKeepTogether", XML_NAMESPACE_FO, sXML_keep_with_next, XML_TYPE_BOOL, 0 },
+ { "CharKerning", XML_NAMESPACE_FO, sXML_letter_spacing, XML_TYPE_TEXT_KERNING, 0 },
+ { "CharLocale", XML_NAMESPACE_FO, sXML_language, XML_TYPE_CHAR_LANGUAGE|MID_FLAG_MERGE_PROPERTY, 0 },
+ { "CharLocale", XML_NAMESPACE_FO, sXML_country, XML_TYPE_CHAR_COUNTRY|MID_FLAG_MERGE_PROPERTY, 0 },
+// { "CharNoLineBreak, ...},
+ { "CharPosture",XML_NAMESPACE_FO, sXML_font_style, XML_TYPE_TEXT_POSTURE, 0 },
+ { "CharShadowed",XML_NAMESPACE_FO, sXML_text_shadow, XML_TYPE_TEXT_SHADOWED, 0 },
+// { "CharStyle", ... },
+// { "CharBackTransparent", ... },
+ { "CharUnderline", XML_NAMESPACE_STYLE, sXML_text_underline, XML_TYPE_TEXT_UNDERLINE, 0 },
+ { "CharWeight", XML_NAMESPACE_FO, sXML_font_weight, XML_TYPE_TEXT_WEIGHT, 0 },
+ { "CharWordMode", XML_NAMESPACE_STYLE, sXML_score_spaces, XML_TYPE_NBOOL, 0 },
+ { 0L }
+};
+
+const XMLPropertyMapEntry aXMLScPageStylesProperties[] =
+{
+ { "BackgroundColor", XML_NAMESPACE_FO, sXML_background_color, XML_SC_TYPE_CELLBACKCOLOR|MID_FLAG_MULTI_PROPERTY, CTF_BACKGROUNDCOLOR },
+ { 0L }
+};
+
+const XMLPropertyMapEntry aXMLScColumnStylesProperties[] =
+{
+ { "Width", XML_NAMESPACE_STYLE, sXML_column_width, XML_TYPE_MEASURE, 0 },
+ { "IsManualPageBreak", XML_NAMESPACE_FO, sXML_break_before, XML_SC_TYPE_BREAKBEFORE, 0},
+// { "OptimalWidth", XML_NAMESPACE_STYLE, sXML_use_optimal_column_width, XML_TYPE_BOOL, 0},
+ { 0L }
+};
+
+const XMLPropertyMapEntry aXMLScRowStylesProperties[] =
+{
+ { "Height", XML_NAMESPACE_STYLE, sXML_row_height, XML_TYPE_MEASURE, 0 },
+ { "IsManualPageBreak", XML_NAMESPACE_FO, sXML_break_before, XML_SC_TYPE_BREAKBEFORE, 0},
+ { "OptimalHeight", XML_NAMESPACE_STYLE, sXML_use_optimal_row_height, XML_TYPE_BOOL, 0},
+ { 0L }
+};
+
+const XMLPropertyMapEntry aXMLScTableStylesProperties[] =
+{
+ { "IsVisible", XML_NAMESPACE_TABLE, sXML_display, XML_TYPE_BOOL, 0 },
+ { "PageStyle", XML_NAMESPACE_TABLE, sXML_page_style_name, XML_TYPE_STRING, 0 },
+ { 0L }
+};
+
+ScXMLExportPropertyMapper::ScXMLExportPropertyMapper(
+ const UniReference< XMLPropertySetMapper >& rMapper )
+ : SvXMLExportPropertyMapper(rMapper)
+{
+}
+ScXMLExportPropertyMapper::~ScXMLExportPropertyMapper()
+{
+}
+
+/** this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
+void ScXMLExportPropertyMapper::handleSpecialItem(
+ SvXMLAttributeList& rAttrList,
+ const XMLPropertyState& rProperty,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap ) const
+{
+ // the SpecialItem NumberFormat must not be handled by this method
+}
+
+void ScXMLAutoStylePoolP::exportStyleAttributes(
+ SvXMLAttributeList& rAttrList,
+ sal_Int32 nFamily,
+ const ::std::vector< XMLPropertyState >& rProperties,
+ const SvXMLExportPropertyMapper& rPropExp,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap) const
+{
+ if (nFamily == XML_STYLE_FAMILY_TABLE_CELL)
+ {
+ sal_Bool bNotFound = sal_True;
+ ::std::vector< XMLPropertyState >::const_iterator i = rProperties.begin();
+ for (i; (i != rProperties.end()) && bNotFound; i++)
+ {
+ sal_Int16 nContextID = rScXMLExport.GetCellStylesPropertySetMapper()->GetEntryContextId(i->mnIndex);
+ switch (nContextID)
+ {
+ case CTF_NUMBERFORMAT :
+ {
+ sal_Int32 nNumberFormat;
+ if (i->maValue >>= nNumberFormat)
+ {
+ rtl::OUString sAttrValue = rScXMLExport.getDataStyleName(nNumberFormat);
+ if (sAttrValue.len())
+ {
+ rtl::OUString sAttrName = rNamespaceMap.GetQNameByKey( XML_NAMESPACE_STYLE, OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_data_style_name)));
+ rtl::OUString sCDATA( RTL_CONSTASCII_USTRINGPARAM(sXML_CDATA ) );
+ rAttrList.AddAttribute( sAttrName, sCDATA, sAttrValue );
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+}
+
+ScXMLAutoStylePoolP::ScXMLAutoStylePoolP(ScXMLExport& rTempScXMLExport):
+ SvXMLAutoStylePoolP(),
+ rScXMLExport(rTempScXMLExport)
+{
+}
+
+ScXMLAutoStylePoolP::~ScXMLAutoStylePoolP()
+{
+}
+
+
+void ScXMLStyleExport::exportStyleAttributes(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::style::XStyle > & rStyle )
+{
+ uno::Reference< beans::XPropertySet > xPropSet( rStyle, uno::UNO_QUERY );
+ uno::Reference< beans::XPropertySetInfo > xPropSetInfo =
+ xPropSet->getPropertySetInfo();
+ if( xPropSetInfo->hasPropertyByName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NumberFormat")) ) )
+ {
+ uno::Any aAny = xPropSet->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NumberFormat")) );
+ sal_Int32 nNumberFormat;
+ if (aAny >>= nNumberFormat)
+ {
+ rtl::OUString sDataStyleName = GetExport().getDataStyleName(nNumberFormat);
+ GetExport().AddAttribute( XML_NAMESPACE_STYLE, sXML_data_style_name,
+ sDataStyleName );
+
+ }
+ }
+}
+
+ScXMLStyleExport::ScXMLStyleExport(
+ SvXMLExport& rExp,
+ const ::rtl::OUString& rPoolStyleName,
+ SvXMLAutoStylePoolP *pAutoStyleP )
+ : XMLStyleExport(rExp, rPoolStyleName, pAutoStyleP)
+{
+}
+
+ScXMLStyleExport::~ScXMLStyleExport()
+{
+}
+
+/*XMLScPropHdlFactory::XMLScPropHdlFactory(const ScXMLExport* pScTempXMLExport)
+ : XMLPropertyHandlerFactory(),
+ pScXMLExport(pScTempXMLExport),
+ bIsExport(sal_True)
+{
+}
+
+XMLScPropHdlFactory::XMLScPropHdlFactory(const ScXMLImport* pScTempXMLImport)
+ : XMLPropertyHandlerFactory(),
+ pScXMLImport(pScTempXMLImport),
+ bIsExport(sal_False)
+{
+}*/
+
+XMLScPropHdlFactory::XMLScPropHdlFactory()
+ : XMLPropertyHandlerFactory()
+{
+}
+
+XMLScPropHdlFactory::~XMLScPropHdlFactory()
+{
+}
+
+const XMLPropertyHandler* XMLScPropHdlFactory::GetPropertyHandler( sal_Int32 nType ) const
+{
+ nType &= MID_FLAG_MASK;
+
+ XMLPropertyHandler* pHdl = (XMLPropertyHandler*)XMLPropertyHandlerFactory::GetPropertyHandler( nType );
+ if(!pHdl)
+ {
+ switch(nType)
+ {
+ case XML_SC_TYPE_CELLBACKCOLOR:
+ {
+ pHdl = new XmlScPropHdl_CellBackColor;
+ }
+ break;
+ case XML_SC_TYPE_CELLPROTECTION :
+ {
+ pHdl = new XmlScPropHdl_CellProtection;
+ }
+ break;
+ case XML_SC_TYPE_PRINTCONTENT :
+ {
+ pHdl = new XmlScPropHdl_PrintContent;
+ }
+ break;
+ /* case XML_SC_TYPE_NUMBERFORMAT :
+ {
+ if (bIsExport)
+ pHdl = new XmlScPropHdl_NumberFormat(pScXMLExport);
+ else
+ pHdl = new XmlScPropHdl_NumberFormat(pScXMLImport);
+ }
+ break;*/
+ case XML_SC_TYPE_HORIJUSTIFY :
+ {
+ pHdl = new XmlScPropHdl_HoriJustify;
+ }
+ break;
+ case XML_SC_TYPE_HORIJUSTIFYSOURCE :
+ {
+ pHdl = new XmlScPropHdl_HoriJustifySource;
+ }
+ break;
+ case XML_SC_TYPE_ISCELLBACKGROUNDTRANSPARENT :
+ {
+ pHdl = new XmlScPropHdl_IsCellBackgroundTransparent;
+ }
+ break;
+ case XML_SC_TYPE_ORIENTATION :
+ {
+ pHdl = new XmlScPropHdl_Orientation;
+ }
+ break;
+ case XML_SC_TYPE_ROTATEANGLE :
+ {
+ pHdl = new XmlScPropHdl_RotateAngle;
+ }
+ break;
+ case XML_SC_TYPE_ROTATEREFERENCE :
+ {
+ pHdl = new XmlScPropHdl_RotateReference;
+ }
+ break;
+ case XML_SC_TYPE_VERTJUSTIFY :
+ {
+ pHdl = new XmlScPropHdl_VertJustify;
+ }
+ break;
+ case XML_SC_TYPE_BREAKBEFORE :
+ {
+ pHdl = new XmlScPropHdl_BreakBefore;
+ }
+ break;
+ }
+
+ if(pHdl)
+ PutHdlCache(nType, pHdl);
+ }
+
+ return pHdl;
+}
+
+void XMLCellStylesPropertySetMapper::ContextFilter(
+ ::std::vector< XMLPropertyState >& rProperties,
+ uno::Reference< beans::XPropertySet > rPropSet ) const
+{
+ XMLPropertyState* pCellBackColor = NULL;
+ XMLPropertyState* pIsCellBackgroundTransparent = NULL;
+
+ XMLPropertyState* pPadding = NULL;
+ XMLPropertyState* pPadding_Bottom = NULL;
+ XMLPropertyState* pPadding_Left = NULL;
+ XMLPropertyState* pPadding_Right = NULL;
+ XMLPropertyState* pPadding_Top = NULL;
+
+ XMLPropertyState* pBorder = NULL;
+ XMLPropertyState* pBorder_Bottom = NULL;
+ XMLPropertyState* pBorder_Left = NULL;
+ XMLPropertyState* pBorder_Right = NULL;
+ XMLPropertyState* pBorder_Top = NULL;
+
+ XMLPropertyState* pAllBorderWidthState = NULL;
+ XMLPropertyState* pLeftBorderWidthState = NULL;
+ XMLPropertyState* pRightBorderWidthState = NULL;
+ XMLPropertyState* pTopBorderWidthState = NULL;
+ XMLPropertyState* pBottomBorderWidthState = NULL;
+
+ for( ::std::vector< XMLPropertyState >::iterator propertie = rProperties.begin();
+ propertie != rProperties.end();
+ propertie++ )
+ {
+ switch( GetEntryContextId( propertie->mnIndex ) )
+ {
+ case CTF_CELLBACKCOLOR: pCellBackColor = propertie; break;
+ case CTF_ISCELLBACKGROUNDTRANSPARENT: pIsCellBackgroundTransparent = propertie; break;
+ case CTF_ALLPADDING: pPadding = propertie; break;
+ case CTF_BOTTOMPADDING: pPadding_Bottom = propertie; break;
+ case CTF_LEFTPADDING: pPadding_Left = propertie; break;
+ case CTF_RIGHTPADDING: pPadding_Right = propertie; break;
+ case CTF_TOPPADDING: pPadding_Top = propertie; break;
+ case CTF_ALLBORDER: pBorder = propertie; break;
+ case CTF_LEFTBORDER: pBorder_Left = propertie; break;
+ case CTF_RIGHTBORDER: pBorder_Right = propertie; break;
+ case CTF_BOTTOMBORDER: pBorder_Bottom = propertie; break;
+ case CTF_TOPBORDER: pBorder_Top = propertie; break;
+ case CTF_ALLBORDERWIDTH: pAllBorderWidthState = propertie; break;
+ case CTF_LEFTBORDERWIDTH: pLeftBorderWidthState = propertie; break;
+ case CTF_RIGHTBORDERWIDTH: pRightBorderWidthState = propertie; break;
+ case CTF_TOPBORDERWIDTH: pTopBorderWidthState = propertie; break;
+ case CTF_BOTTOMBORDERWIDTH: pBottomBorderWidthState = propertie; break;
+ }
+ }
+
+ if( pCellBackColor && pIsCellBackgroundTransparent )
+ {
+ sal_Bool bTemp;
+ if(pIsCellBackgroundTransparent->maValue >>= bTemp)
+ {
+ if( bTemp )
+ {
+ pCellBackColor->mnIndex = -1;
+ pCellBackColor->maValue.clear();
+ }
+ else
+ {
+ pIsCellBackgroundTransparent->mnIndex = -1;
+ pIsCellBackgroundTransparent->maValue.clear();
+ }
+ }
+ }
+ if (pPadding && pPadding_Bottom && pPadding_Left && pPadding_Right && pPadding_Top)
+ {
+ sal_Int32 nBottom, nTop, nLeft, nRight;
+ if ((pPadding_Bottom->maValue >>= nBottom) &&
+ (pPadding_Left->maValue >>= nLeft) &&
+ (pPadding_Right->maValue >>= nRight) &&
+ (pPadding_Top->maValue >>= nTop))
+ {
+ if ((nBottom == nTop) && (nLeft == nRight) && (nTop == nLeft))
+ {
+ pPadding_Bottom->mnIndex = -1;
+ pPadding_Bottom->maValue.clear();
+ pPadding_Left->mnIndex = -1;
+ pPadding_Left->maValue.clear();
+ pPadding_Right->mnIndex = -1;
+ pPadding_Right->maValue.clear();
+ pPadding_Top->mnIndex = -1;
+ pPadding_Top->maValue.clear();
+ }
+ else
+ {
+ pPadding->mnIndex = -1;
+ pPadding->maValue.clear();
+ }
+ }
+ }
+ if( pBorder )
+ {
+ if( pBorder_Left && pBorder_Right && pBorder_Top && pBorder_Bottom )
+ {
+ table::BorderLine aLeft, aRight, aTop, aBottom;
+
+ pBorder_Left->maValue >>= aLeft;
+ pBorder_Right->maValue >>= aRight;
+ pBorder_Top->maValue >>= aTop;
+ pBorder_Bottom->maValue >>= aBottom;
+ if( aLeft.Color == aRight.Color && aLeft.InnerLineWidth == aRight.InnerLineWidth &&
+ aLeft.OuterLineWidth == aRight.OuterLineWidth && aLeft.LineDistance == aRight.LineDistance &&
+ aLeft.Color == aTop.Color && aLeft.InnerLineWidth == aTop.InnerLineWidth &&
+ aLeft.OuterLineWidth == aTop.OuterLineWidth && aLeft.LineDistance == aTop.LineDistance &&
+ aLeft.Color == aBottom.Color && aLeft.InnerLineWidth == aBottom.InnerLineWidth &&
+ aLeft.OuterLineWidth == aBottom.OuterLineWidth && aLeft.LineDistance == aBottom.LineDistance )
+ {
+ pBorder_Left->mnIndex = -1;
+ pBorder_Left->maValue.clear();
+ pBorder_Right->mnIndex = -1;
+ pBorder_Right->maValue.clear();
+ pBorder_Top->mnIndex = -1;
+ pBorder_Top->maValue.clear();
+ pBorder_Bottom->mnIndex = -1;
+ pBorder_Bottom->maValue.clear();
+ }
+ else
+ {
+ pBorder->mnIndex = -1;
+ pBorder->maValue.clear();
+ }
+ }
+ else
+ {
+ pBorder->mnIndex = -1;
+ pBorder->maValue.clear();
+ }
+ }
+ if( pAllBorderWidthState )
+ {
+ if( pLeftBorderWidthState && pRightBorderWidthState && pTopBorderWidthState && pBottomBorderWidthState )
+ {
+ table::BorderLine aLeft, aRight, aTop, aBottom;
+
+ pLeftBorderWidthState->maValue >>= aLeft;
+ pRightBorderWidthState->maValue >>= aRight;
+ pTopBorderWidthState->maValue >>= aTop;
+ pBottomBorderWidthState->maValue >>= aBottom;
+ if( aLeft.Color == aRight.Color && aLeft.InnerLineWidth == aRight.InnerLineWidth &&
+ aLeft.OuterLineWidth == aRight.OuterLineWidth && aLeft.LineDistance == aRight.LineDistance &&
+ aLeft.Color == aTop.Color && aLeft.InnerLineWidth == aTop.InnerLineWidth &&
+ aLeft.OuterLineWidth == aTop.OuterLineWidth && aLeft.LineDistance == aTop.LineDistance &&
+ aLeft.Color == aBottom.Color && aLeft.InnerLineWidth == aBottom.InnerLineWidth &&
+ aLeft.OuterLineWidth == aBottom.OuterLineWidth && aLeft.LineDistance == aBottom.LineDistance )
+ {
+ pLeftBorderWidthState->mnIndex = -1;
+ pLeftBorderWidthState->maValue.clear();
+ pRightBorderWidthState->mnIndex = -1;
+ pRightBorderWidthState->maValue.clear();
+ pTopBorderWidthState->mnIndex = -1;
+ pTopBorderWidthState->maValue.clear();
+ pBottomBorderWidthState->mnIndex = -1;
+ pBottomBorderWidthState->maValue.clear();
+ }
+ else
+ {
+ pAllBorderWidthState->mnIndex = -1;
+ pAllBorderWidthState->maValue.clear();
+ }
+ }
+ else
+ {
+ pAllBorderWidthState->mnIndex = -1;
+ pAllBorderWidthState->maValue.clear();
+ }
+ }
+}
+
+XMLCellStylesPropertySetMapper::XMLCellStylesPropertySetMapper(const XMLPropertyMapEntry* pEntries,
+ const UniReference< XMLPropertyHandlerFactory >& rFactory) :
+ XMLPropertySetMapper( pEntries, rFactory )
+{
+}
+
+XMLCellStylesPropertySetMapper::~XMLCellStylesPropertySetMapper()
+{
+}
+
+void XMLPageStylesPropertySetMapper::ContextFilter(
+ ::std::vector< XMLPropertyState >& rProperties,
+ uno::Reference< beans::XPropertySet > rPropSet ) const
+{
+}
+
+XMLPageStylesPropertySetMapper::XMLPageStylesPropertySetMapper(const XMLPropertyMapEntry* pEntries,
+ const UniReference< XMLPropertyHandlerFactory >& rFactory) :
+ XMLPropertySetMapper( pEntries, rFactory )
+{
+}
+
+XMLPageStylesPropertySetMapper::~XMLPageStylesPropertySetMapper()
+{
+}
+
+void XMLColumnStylesPropertySetMapper::ContextFilter(
+ ::std::vector< XMLPropertyState >& rProperties,
+ uno::Reference< beans::XPropertySet > rPropSet ) const
+{
+}
+
+XMLColumnStylesPropertySetMapper::XMLColumnStylesPropertySetMapper(const XMLPropertyMapEntry* pEntries,
+ const UniReference< XMLPropertyHandlerFactory >& rFactory) :
+ XMLPropertySetMapper( pEntries, rFactory )
+{
+}
+
+XMLColumnStylesPropertySetMapper::~XMLColumnStylesPropertySetMapper()
+{
+}
+
+void XMLRowStylesPropertySetMapper::ContextFilter(
+ ::std::vector< XMLPropertyState >& rProperties,
+ uno::Reference< beans::XPropertySet > rPropSet ) const
+{
+}
+
+XMLRowStylesPropertySetMapper::XMLRowStylesPropertySetMapper(const XMLPropertyMapEntry* pEntries,
+ const UniReference< XMLPropertyHandlerFactory >& rFactory) :
+ XMLPropertySetMapper( pEntries, rFactory )
+{
+}
+
+XMLRowStylesPropertySetMapper::~XMLRowStylesPropertySetMapper()
+{
+}
+
+void XMLTableStylesPropertySetMapper::ContextFilter(
+ ::std::vector< XMLPropertyState >& rProperties,
+ uno::Reference< beans::XPropertySet > rPropSet ) const
+{
+}
+
+XMLTableStylesPropertySetMapper::XMLTableStylesPropertySetMapper(const XMLPropertyMapEntry* pEntries,
+ const UniReference< XMLPropertyHandlerFactory >& rFactory) :
+ XMLPropertySetMapper( pEntries, rFactory )
+{
+}
+
+XMLTableStylesPropertySetMapper::~XMLTableStylesPropertySetMapper()
+{
+}
+
+XmlScPropHdl_CellBackColor::~XmlScPropHdl_CellBackColor()
+{
+}
+
+sal_Bool XmlScPropHdl_CellBackColor::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ sal_Int32 aCellBackColor1, aCellBackColor2;
+
+ if((r1 >>= aCellBackColor1) && (r2 >>= aCellBackColor2))
+ return (aCellBackColor1 == aCellBackColor2);
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_CellBackColor::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ Color aColor;
+ if (rUnitConverter.convertColor(aColor, rStrImpValue))
+ {
+ sal_uInt32 nValue = aColor.GetColor();
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_CellBackColor::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Int32 nVal;
+ sal_Bool bRetval(sal_False);
+
+ if(rValue >>= nVal)
+ {
+ Color aColor(nVal);
+ rtl::OUStringBuffer sValue;
+ rUnitConverter.convertColor(sValue, aColor);
+ rStrExpValue = sValue.makeStringAndClear();
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+XmlScPropHdl_CellProtection::~XmlScPropHdl_CellProtection()
+{
+}
+
+sal_Bool XmlScPropHdl_CellProtection::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ util::CellProtection aCellProtection1, aCellProtection2;
+
+ if((r1 >>= aCellProtection1) && (r2 >>= aCellProtection2))
+ {
+ return ((aCellProtection1.IsHidden == aCellProtection2.IsHidden) &&
+ (aCellProtection1.IsLocked == aCellProtection2.IsLocked) &&
+ (aCellProtection1.IsFormulaHidden == aCellProtection2.IsFormulaHidden));
+ }
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_CellProtection::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ util::CellProtection aCellProtection;
+ sal_Bool bDefault = sal_False;
+ if (!rValue.hasValue())
+ {
+ aCellProtection.IsHidden = sal_False;
+ aCellProtection.IsLocked = sal_True;
+ aCellProtection.IsFormulaHidden = sal_False;
+ aCellProtection.IsPrintHidden = sal_False;
+ bDefault = sal_True;
+ }
+ if ((rValue >>= aCellProtection) || bDefault)
+ {
+ if (rStrImpValue.compareToAscii(sXML_none) != 0)
+ {
+ if (rStrImpValue.compareToAscii(sXML_hidden_and_protected) != 0)
+ {
+ if (rStrImpValue.compareToAscii(sXML_protected) != 0)
+ {
+ if (rStrImpValue.compareToAscii(sXML_formula_hidden) != 0)
+ {
+ sal_Int16 i = 0;
+ while (i < rStrImpValue.getLength() && rStrImpValue[i] != ' ')
+ i++;
+ rtl::OUString sFirst = rStrImpValue.copy(0, i);
+ rtl::OUString sSecond = rStrImpValue.copy(i + 1);
+ aCellProtection.IsFormulaHidden = sal_False;
+ aCellProtection.IsHidden = sal_False;
+ aCellProtection.IsLocked = sal_False;
+ if ((sFirst.compareToAscii(sXML_protected) == 0) || (sSecond.compareToAscii(sXML_protected) == 0))
+ aCellProtection.IsLocked = sal_True;
+ if ((sFirst.compareToAscii(sXML_formula_hidden) == 0) || (sSecond.compareToAscii(sXML_formula_hidden) == 0))
+ aCellProtection.IsFormulaHidden = sal_True;
+ rValue <<= aCellProtection;
+ bRetval = sal_True;
+ }
+ else
+ {
+ aCellProtection.IsFormulaHidden = sal_True;
+ aCellProtection.IsHidden = sal_False;
+ aCellProtection.IsLocked = sal_False;
+ rValue <<= aCellProtection;
+ bRetval = sal_True;
+ }
+ }
+ else
+ {
+ aCellProtection.IsFormulaHidden = sal_False;
+ aCellProtection.IsHidden = sal_False;
+ aCellProtection.IsLocked = sal_True;
+ rValue <<= aCellProtection;
+ bRetval = sal_True;
+ }
+ }
+ else
+ {
+ aCellProtection.IsFormulaHidden = sal_True;
+ aCellProtection.IsHidden = sal_True;
+ aCellProtection.IsLocked = sal_True;
+ rValue <<= aCellProtection;
+ bRetval = sal_True;
+ }
+ }
+ else
+ {
+ aCellProtection.IsFormulaHidden = sal_False;
+ aCellProtection.IsHidden = sal_False;
+ aCellProtection.IsLocked = sal_False;
+ rValue <<= aCellProtection;
+ bRetval = sal_True;
+ }
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_CellProtection::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+ util::CellProtection aCellProtection;
+
+ if(rValue >>= aCellProtection)
+ {
+ if (!(aCellProtection.IsFormulaHidden || aCellProtection.IsHidden || aCellProtection.IsLocked))
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_none));
+ bRetval = sal_True;
+ }
+ else if (aCellProtection.IsHidden && aCellProtection.IsLocked)
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_hidden_and_protected));
+ bRetval = sal_True;
+ }
+ else if (aCellProtection.IsLocked && !(aCellProtection.IsFormulaHidden || aCellProtection.IsHidden))
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_protected));
+ bRetval = sal_True;
+ }
+ else if (aCellProtection.IsFormulaHidden && !(aCellProtection.IsLocked || aCellProtection.IsHidden))
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_formula_hidden));
+ bRetval = sal_True;
+ }
+ else if (aCellProtection.IsFormulaHidden && aCellProtection.IsLocked)
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_protected));
+ rStrExpValue += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" "));
+ rStrExpValue += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_formula_hidden));
+ bRetval = sal_True;
+ }
+ }
+
+ return bRetval;
+}
+
+XmlScPropHdl_PrintContent::~XmlScPropHdl_PrintContent()
+{
+}
+
+sal_Bool XmlScPropHdl_PrintContent::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ util::CellProtection aCellProtection1, aCellProtection2;
+
+ if((r1 >>= aCellProtection1) && (r2 >>= aCellProtection2))
+ {
+ return (aCellProtection1.IsPrintHidden == aCellProtection2.IsPrintHidden);
+ }
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_PrintContent::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+ util::CellProtection aCellProtection;
+ sal_Bool bDefault = sal_False;
+ if (!rValue.hasValue())
+ {
+ aCellProtection.IsHidden = sal_False;
+ aCellProtection.IsLocked = sal_True;
+ aCellProtection.IsFormulaHidden = sal_False;
+ aCellProtection.IsPrintHidden = sal_False;
+ bDefault = sal_True;
+ }
+ if ((rValue >>= aCellProtection) || bDefault)
+ {
+ sal_Bool bValue;
+ if (rUnitConverter.convertBool(bValue, rStrImpValue))
+ {
+ aCellProtection.IsPrintHidden = !bValue;
+ rValue <<= aCellProtection;
+ bRetval = sal_True;
+ }
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_PrintContent::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ util::CellProtection aCellProtection;
+ if(rValue >>= aCellProtection)
+ {
+ rtl::OUStringBuffer sValue;
+ rUnitConverter.convertBool(sValue, !aCellProtection.IsPrintHidden);
+ rStrExpValue = sValue.makeStringAndClear();
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+/*XmlScPropHdl_NumberFormat::XmlScPropHdl_NumberFormat(const ScXMLExport* pScTempXMLExport)
+{
+ pScXMLExport = pScTempXMLExport;
+}
+
+XmlScPropHdl_NumberFormat::XmlScPropHdl_NumberFormat(const ScXMLImport* pScTempXMLImport)
+{
+ pScXMLImport = pScTempXMLImport;
+}
+
+XmlScPropHdl_NumberFormat::~XmlScPropHdl_NumberFormat()
+{
+}
+
+sal_Bool XmlScPropHdl_NumberFormat::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ sal_Int32 aNumberFormat1, aNumberFormat2;
+
+ if((r1 >>= aNumberFormat1) && (r2 >>= aNumberFormat2))
+ {
+ return (aNumberFormat1 == aNumberFormat2);
+ }
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_NumberFormat::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ sal_Int32 nNumberFormat = pScXMLImport->GetNumImport()->GetKeyForName(rStrImpValue);
+ if (nNumberFormat >= 0)
+ {
+ rValue <<= nNumberFormat;
+ bRetval = sal_True;
+ }
+ else
+ bRetval = sal_False;
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_NumberFormat::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ sal_Int32 nNumberFormat;
+ if (rValue >>= nNumberFormat)
+ {
+ rStrExpValue = pScXMLExport->GetNumExport()->GetStyleName(nNumberFormat);
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}*/
+
+XmlScPropHdl_HoriJustify::~XmlScPropHdl_HoriJustify()
+{
+}
+
+sal_Bool XmlScPropHdl_HoriJustify::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ table::CellHoriJustify aHoriJustify1, aHoriJustify2;
+
+ if((r1 >>= aHoriJustify1) && (r2 >>= aHoriJustify2))
+ return (aHoriJustify1 == aHoriJustify2);
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_HoriJustify::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ table::CellHoriJustify nValue;
+ if (rStrImpValue.compareToAscii(sXML_start) == 0)
+ {
+ nValue = table::CellHoriJustify_LEFT;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_end) == 0)
+ {
+ nValue = table::CellHoriJustify_RIGHT;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_center) == 0)
+ {
+ nValue = table::CellHoriJustify_CENTER;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_justify) == 0)
+ {
+ nValue = table::CellHoriJustify_BLOCK;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_HoriJustify::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ table::CellHoriJustify nVal;
+ sal_Bool bRetval(sal_False);
+
+ if(rValue >>= nVal)
+ {
+ switch (nVal)
+ {
+ case table::CellHoriJustify_LEFT:
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_start));
+ bRetval = sal_True;
+ }
+ break;
+ case table::CellHoriJustify_RIGHT:
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_end));
+ bRetval = sal_True;
+ }
+ break;
+ case table::CellHoriJustify_CENTER:
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_center));
+ bRetval = sal_True;
+ }
+ break;
+ case table::CellHoriJustify_BLOCK:
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_justify));
+ bRetval = sal_True;
+ }
+ break;
+ }
+ }
+
+ return bRetval;
+}
+
+XmlScPropHdl_HoriJustifySource::~XmlScPropHdl_HoriJustifySource()
+{
+}
+
+sal_Bool XmlScPropHdl_HoriJustifySource::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ table::CellHoriJustify aHoriJustify1, aHoriJustify2;
+
+ if((r1 >>= aHoriJustify1) && (r2 >>= aHoriJustify2))
+ return (aHoriJustify1 == aHoriJustify2);
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_HoriJustifySource::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ if (rStrImpValue.compareToAscii(sXML_fix) == 0)
+ {
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_value_type) == 0)
+ {
+ table::CellHoriJustify nValue = table::CellHoriJustify_STANDARD;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_HoriJustifySource::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ table::CellHoriJustify nVal;
+ sal_Bool bRetval(sal_False);
+
+ if(rValue >>= nVal)
+ {
+ if (nVal == table::CellHoriJustify_STANDARD)
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_value_type));
+ bRetval = sal_True;
+ }
+ else
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_fix));
+ bRetval = sal_True;
+ }
+ }
+
+ return bRetval;
+}
+
+XmlScPropHdl_IsCellBackgroundTransparent::~XmlScPropHdl_IsCellBackgroundTransparent()
+{
+}
+
+sal_Bool XmlScPropHdl_IsCellBackgroundTransparent::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ sal_Bool bIsTransparent1, bIsTransparent2;
+
+ if((r1 >>= bIsTransparent1) && (r2 >>= bIsTransparent2))
+ return (bIsTransparent1 == bIsTransparent2);
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_IsCellBackgroundTransparent::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ if (rStrImpValue.compareToAscii(sXML_transparent) == 0)
+ {
+ sal_Bool bTemp = sal_True;
+ rValue <<= bTemp;
+ bRetval = sal_True;
+ }
+ else
+ {
+ sal_Bool bTemp = sal_False;
+ rValue <<= bTemp;
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_IsCellBackgroundTransparent::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ sal_Bool bTemp;
+ if(rValue >>= bTemp)
+ {
+ if (bTemp)
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_transparent));
+ bRetval = sal_True;
+ }
+ }
+
+ return bRetval;
+}
+
+XmlScPropHdl_Orientation::~XmlScPropHdl_Orientation()
+{
+}
+
+sal_Bool XmlScPropHdl_Orientation::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ table::CellOrientation aOrientation1, aOrientation2;
+
+ if((r1 >>= aOrientation1) && (r2 >>= aOrientation2))
+ return (aOrientation1 == aOrientation2);
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_Orientation::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ table::CellOrientation nValue;
+ if (rStrImpValue.compareToAscii(sXML_ltr) == 0)
+ {
+ nValue = table::CellOrientation_STANDARD;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_ttb) == 0)
+ {
+ nValue = table::CellOrientation_STACKED;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_Orientation::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ table::CellOrientation nVal;
+ sal_Bool bRetval(sal_False);
+
+ if(rValue >>= nVal)
+ {
+ switch (nVal)
+ {
+ case table::CellOrientation_STACKED :
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_ttb));
+ bRetval = sal_True;
+ }
+ break;
+ default:
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_ltr));
+ bRetval = sal_True;
+ }
+ break;
+ }
+ }
+
+ return bRetval;
+}
+
+XmlScPropHdl_RotateAngle::~XmlScPropHdl_RotateAngle()
+{
+}
+
+sal_Bool XmlScPropHdl_RotateAngle::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ sal_Int32 aAngle1, aAngle2;
+
+ if((r1 >>= aAngle1) && (r2 >>= aAngle2))
+ return (aAngle1 == aAngle2);
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_RotateAngle::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ sal_Int32 nValue;
+ if (rUnitConverter.convertNumber(nValue, rStrImpValue))
+ {
+ nValue *= 100;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_RotateAngle::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Int32 nVal;
+ sal_Bool bRetval(sal_False);
+
+ if(rValue >>= nVal)
+ {
+ rtl::OUStringBuffer sValue;
+ rUnitConverter.convertNumber(sValue, sal_Int32(nVal / 100));
+ rStrExpValue = sValue.makeStringAndClear();
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+XmlScPropHdl_RotateReference::~XmlScPropHdl_RotateReference()
+{
+}
+
+sal_Bool XmlScPropHdl_RotateReference::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ table::CellVertJustify aReference1, aReference2;
+
+ if((r1 >>= aReference1) && (r2 >>= aReference2))
+ return (aReference1 == aReference2);
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_RotateReference::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ table::CellVertJustify nValue;
+ if (rStrImpValue.compareToAscii(sXML_none) == 0)
+ {
+ nValue = table::CellVertJustify_STANDARD;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_bottom) == 0)
+ {
+ nValue = table::CellVertJustify_BOTTOM;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_top) == 0)
+ {
+ nValue = table::CellVertJustify_TOP;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_center) == 0)
+ {
+ nValue = table::CellVertJustify_CENTER;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_RotateReference::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ table::CellVertJustify nVal;
+ sal_Bool bRetval(sal_False);
+
+ if(rValue >>= nVal)
+ {
+ switch (nVal)
+ {
+ case table::CellVertJustify_BOTTOM :
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_bottom));
+ bRetval = sal_True;
+ }
+ break;
+ case table::CellVertJustify_CENTER :
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_center));
+ bRetval = sal_True;
+ }
+ break;
+ case table::CellVertJustify_STANDARD :
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_none));
+ bRetval = sal_True;
+ }
+ break;
+ case table::CellVertJustify_TOP :
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_top));
+ bRetval = sal_True;
+ }
+ break;
+ }
+ }
+
+ return bRetval;
+}
+
+XmlScPropHdl_VertJustify::~XmlScPropHdl_VertJustify()
+{
+}
+
+sal_Bool XmlScPropHdl_VertJustify::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ table::CellVertJustify aReference1, aReference2;
+
+ if((r1 >>= aReference1) && (r2 >>= aReference2))
+ return (aReference1 == aReference2);
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_VertJustify::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ table::CellVertJustify nValue;
+ if (rStrImpValue.compareToAscii(sXML_automatic) == 0)
+ {
+ nValue = table::CellVertJustify_STANDARD;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_bottom) == 0)
+ {
+ nValue = table::CellVertJustify_BOTTOM;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_top) == 0)
+ {
+ nValue = table::CellVertJustify_TOP;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_middle) == 0)
+ {
+ nValue = table::CellVertJustify_CENTER;
+ rValue <<= nValue;
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_VertJustify::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ table::CellVertJustify nVal;
+ sal_Bool bRetval(sal_False);
+
+ if(rValue >>= nVal)
+ {
+ switch (nVal)
+ {
+ case table::CellVertJustify_BOTTOM :
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_bottom));
+ bRetval = sal_True;
+ }
+ break;
+ case table::CellVertJustify_CENTER :
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_middle));
+ bRetval = sal_True;
+ }
+ break;
+ case table::CellVertJustify_STANDARD :
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_automatic));
+ bRetval = sal_True;
+ }
+ break;
+ case table::CellVertJustify_TOP :
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_top));
+ bRetval = sal_True;
+ }
+ break;
+ }
+ }
+
+ return bRetval;
+}
+
+XmlScPropHdl_BreakBefore::~XmlScPropHdl_BreakBefore()
+{
+}
+
+sal_Bool XmlScPropHdl_BreakBefore::equals(
+ const ::com::sun::star::uno::Any& r1,
+ const ::com::sun::star::uno::Any& r2 ) const
+{
+ sal_Bool aBreak1, aBreak2;
+
+ if((r1 >>= aBreak1) && (r2 >>= aBreak2))
+ return (aBreak1 == aBreak2);
+ return sal_False;
+}
+
+sal_Bool XmlScPropHdl_BreakBefore::importXML(
+ const ::rtl::OUString& rStrImpValue,
+ ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bRetval(sal_False);
+
+ sal_Bool bValue;
+ if (rStrImpValue.compareToAscii(sXML_auto) == 0)
+ {
+ bValue = sal_False;
+ rValue <<= bValue;
+ bRetval = sal_True;
+ }
+ else if (rStrImpValue.compareToAscii(sXML_page) == 0)
+ {
+ bValue = sal_True;
+ rValue <<= bValue;
+ bRetval = sal_True;
+ }
+
+ return bRetval;
+}
+
+sal_Bool XmlScPropHdl_BreakBefore::exportXML(
+ ::rtl::OUString& rStrExpValue,
+ const ::com::sun::star::uno::Any& rValue,
+ const SvXMLUnitConverter& rUnitConverter ) const
+{
+ sal_Bool bVal;
+ sal_Bool bRetval(sal_False);
+
+ if(rValue >>= bVal)
+ {
+ if (bVal)
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_page));
+ bRetval = sal_True;
+ }
+ else
+ {
+ rStrExpValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sXML_auto));
+ bRetval = sal_True;
+ }
+ }
+
+ return bRetval;
+}
+
diff --git a/sc/source/filter/xml/xmlstyle.hxx b/sc/source/filter/xml/xmlstyle.hxx
new file mode 100644
index 000000000000..b422239ff015
--- /dev/null
+++ b/sc/source/filter/xml/xmlstyle.hxx
@@ -0,0 +1,387 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlstyle.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _XMLSTYLE_HXX
+#define _XMLSTYLE_HXX
+
+#ifndef _XMLOFF_PROPMAPPINGTYPES_HXX
+#include <xmloff/maptype.hxx>
+#endif
+#ifndef _XMLOFF_XMLASTPLP_HXX
+#include <xmloff/xmlaustp.hxx>
+#endif
+#ifndef _XMLOFF_XMLTYPES_HXX
+#include <xmloff/xmltypes.hxx>
+#endif
+#ifndef _XMLOFF_PROPERTYSETMAPPER_HXX
+#include <xmloff/xmlprmap.hxx>
+#endif
+#ifndef _XMLOFF_PROPERTYHANDLERFACTORY_HXX
+#include <xmloff/prhdlfac.hxx>
+#endif
+#ifndef _XMLOFF_STYLEEXP_HXX_
+#include <xmloff/styleexp.hxx>
+#endif
+#ifndef _XMLOFF_XMLEXPPR_HXX
+#include <xmloff/xmlexppr.hxx>
+#endif
+
+#ifdef _USE_NAMESPACE
+using namespace rtl;
+#endif
+
+extern const XMLPropertyMapEntry aXMLScCellStylesProperties[];
+extern const XMLPropertyMapEntry aXMLScPageStylesProperties[];
+extern const XMLPropertyMapEntry aXMLScColumnStylesProperties[];
+extern const XMLPropertyMapEntry aXMLScRowStylesProperties[];
+extern const XMLPropertyMapEntry aXMLScTableStylesProperties[];
+
+//CellStyles
+#define XML_SC_TYPE_CELLBACKCOLOR (XML_SC_TYPES_START + 0)
+#define XML_SC_TYPE_CELLPROTECTION (XML_SC_TYPES_START + 1)
+#define XML_SC_TYPE_PRINTCONTENT (XML_SC_TYPES_START + 2)
+#define XML_SC_TYPE_HORIJUSTIFY (XML_SC_TYPES_START + 3)
+#define XML_SC_TYPE_HORIJUSTIFYSOURCE (XML_SC_TYPES_START + 4)
+#define XML_SC_TYPE_ISCELLBACKGROUNDTRANSPARENT (XML_SC_TYPES_START + 5)
+#define XML_SC_TYPE_ORIENTATION (XML_SC_TYPES_START + 6)
+#define XML_SC_TYPE_ROTATEANGLE (XML_SC_TYPES_START + 7)
+#define XML_SC_TYPE_ROTATEREFERENCE (XML_SC_TYPES_START + 8)
+#define XML_SC_TYPE_BORDERLEFT (XML_SC_TYPES_START + 9)
+#define XML_SC_TYPE_BORDERRIGHT (XML_SC_TYPES_START + 10)
+#define XML_SC_TYPE_BORDERTOP (XML_SC_TYPES_START + 11)
+#define XML_SC_TYPE_BORDERBOTTOM (XML_SC_TYPES_START + 12)
+#define XML_SC_TYPE_VERTJUSTIFY (XML_SC_TYPES_START + 13)
+//#define XML_SC_TYPE_NUMBERFORMAT (XML_SC_TYPES_START + 14)
+
+#define CTF_CELLBACKCOLOR 1
+#define CTF_ISCELLBACKGROUNDTRANSPARENT 2
+#define CTF_HORIJUSTIFY 3
+#define CTF_HORIJUSTIFY_SOURCE 4
+#define CTF_ALLPADDING 5
+#define CTF_BOTTOMPADDING 6
+#define CTF_LEFTPADDING 7
+#define CTF_RIGHTPADDING 8
+#define CTF_TOPPADDING 9
+#define CTF_ALLBORDER 10
+#define CTF_LEFTBORDER 11
+#define CTF_RIGHTBORDER 12
+#define CTF_TOPBORDER 13
+#define CTF_BOTTOMBORDER 14
+#define CTF_ALLBORDERWIDTH 15
+#define CTF_LEFTBORDERWIDTH 16
+#define CTF_RIGHTBORDERWIDTH 17
+#define CTF_TOPBORDERWIDTH 18
+#define CTF_BOTTOMBORDERWIDTH 19
+#define CTF_NUMBERFORMAT 20
+
+//PageStyles
+#define CTF_BACKGROUNDCOLOR 50
+
+//ColumnStyles
+#define XML_SC_TYPE_BREAKBEFORE (XML_SC_TYPES_START + 50)
+
+class ScXMLExport;
+class ScXMLImport;
+
+class ScXMLExportPropertyMapper : public SvXMLExportPropertyMapper
+{
+public:
+ ScXMLExportPropertyMapper(
+ const UniReference< XMLPropertySetMapper >& rMapper );
+ virtual ~ScXMLExportPropertyMapper();
+
+ /** this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
+ virtual void handleSpecialItem(
+ SvXMLAttributeList& rAttrList,
+ const XMLPropertyState& rProperty,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap ) const;
+};
+
+class ScXMLAutoStylePoolP : public SvXMLAutoStylePoolP
+{
+ ScXMLExport& rScXMLExport;
+
+ virtual void exportStyleAttributes(
+ SvXMLAttributeList& rAttrList,
+ sal_Int32 nFamily,
+ const ::std::vector< XMLPropertyState >& rProperties,
+ const SvXMLExportPropertyMapper& rPropExp,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap) const;
+public:
+ ScXMLAutoStylePoolP(ScXMLExport& rScXMLExport);
+ virtual ~ScXMLAutoStylePoolP();
+};
+
+class ScXMLStyleExport : public XMLStyleExport
+{
+ virtual void exportStyleAttributes(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::style::XStyle > & rStyle );
+public:
+ ScXMLStyleExport(
+ SvXMLExport& rExp,
+ const ::rtl::OUString& rPoolStyleName,
+ SvXMLAutoStylePoolP *pAutoStyleP=0 );
+ virtual ~ScXMLStyleExport();
+};
+
+class XMLScPropHdlFactory : public XMLPropertyHandlerFactory
+{
+/* const ScXMLExport* pScXMLExport;
+ const ScXMLImport* pScXMLImport;
+ sal_Bool bIsExport;*/
+public:
+ /*XMLScPropHdlFactory(const ScXMLExport* pScXMLExport);
+ XMLScPropHdlFactory(const ScXMLImport* pScXMLImport);*/
+ XMLScPropHdlFactory();
+ virtual ~XMLScPropHdlFactory();
+ virtual const XMLPropertyHandler* GetPropertyHandler( sal_Int32 nType ) const;
+};
+
+class XMLCellStylesPropertySetMapper : public XMLPropertySetMapper
+{
+protected:
+ /** Application-specific filter. By default do nothing. */
+ virtual void ContextFilter(
+ ::std::vector< XMLPropertyState >& rProperties,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet > rPropSet ) const;
+public:
+
+ XMLCellStylesPropertySetMapper(const XMLPropertyMapEntry* pEntries,
+ const UniReference< XMLPropertyHandlerFactory >& rFactory);
+ virtual ~XMLCellStylesPropertySetMapper();
+};
+
+class XMLPageStylesPropertySetMapper : public XMLPropertySetMapper
+{
+protected:
+ /** Application-specific filter. By default do nothing. */
+ virtual void ContextFilter(
+ ::std::vector< XMLPropertyState >& rProperties,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet > rPropSet ) const;
+public:
+
+ XMLPageStylesPropertySetMapper(const XMLPropertyMapEntry* pEntries,
+ const UniReference< XMLPropertyHandlerFactory >& rFactory);
+ virtual ~XMLPageStylesPropertySetMapper();
+};
+
+class XMLColumnStylesPropertySetMapper : public XMLPropertySetMapper
+{
+protected:
+ /** Application-specific filter. By default do nothing. */
+ virtual void ContextFilter(
+ ::std::vector< XMLPropertyState >& rProperties,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet > rPropSet ) const;
+public:
+
+ XMLColumnStylesPropertySetMapper(const XMLPropertyMapEntry* pEntries,
+ const UniReference< XMLPropertyHandlerFactory >& rFactory);
+ virtual ~XMLColumnStylesPropertySetMapper();
+};
+
+class XMLRowStylesPropertySetMapper : public XMLPropertySetMapper
+{
+protected:
+ /** Application-specific filter. By default do nothing. */
+ virtual void ContextFilter(
+ ::std::vector< XMLPropertyState >& rProperties,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet > rPropSet ) const;
+public:
+
+ XMLRowStylesPropertySetMapper(const XMLPropertyMapEntry* pEntries,
+ const UniReference< XMLPropertyHandlerFactory >& rFactory);
+ virtual ~XMLRowStylesPropertySetMapper();
+};
+
+class XMLTableStylesPropertySetMapper : public XMLPropertySetMapper
+{
+protected:
+ /** Application-specific filter. By default do nothing. */
+ virtual void ContextFilter(
+ ::std::vector< XMLPropertyState >& rProperties,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet > rPropSet ) const;
+public:
+
+ XMLTableStylesPropertySetMapper(const XMLPropertyMapEntry* pEntries,
+ const UniReference< XMLPropertyHandlerFactory >& rFactory);
+ virtual ~XMLTableStylesPropertySetMapper();
+};
+
+class XmlScPropHdl_CellBackColor : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_CellBackColor();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+
+class XmlScPropHdl_CellProtection : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_CellProtection();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+
+class XmlScPropHdl_PrintContent : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_PrintContent();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+
+/*class XmlScPropHdl_NumberFormat : public XMLPropertyHandler
+{
+ const ScXMLExport* pScXMLExport;
+ const ScXMLImport* pScXMLImport;
+public:
+ XmlScPropHdl_NumberFormat(const ScXMLExport* pScXMLExport);
+ XmlScPropHdl_NumberFormat(const ScXMLImport* pScXMLImport);
+ virtual ~XmlScPropHdl_NumberFormat();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};*/
+
+class XmlScPropHdl_HoriJustify : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_HoriJustify();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+
+class XmlScPropHdl_HoriJustifySource : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_HoriJustifySource();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+
+class XmlScPropHdl_IsCellBackgroundTransparent : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_IsCellBackgroundTransparent();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+
+class XmlScPropHdl_Orientation : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_Orientation();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+
+class XmlScPropHdl_RotateAngle : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_RotateAngle();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+
+class XmlScPropHdl_RotateReference : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_RotateReference();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+
+class XmlScPropHdl_VertJustify : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_VertJustify();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+
+class XmlScPropHdl_BreakBefore : public XMLPropertyHandler
+{
+public:
+ virtual ~XmlScPropHdl_BreakBefore();
+ virtual sal_Bool equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const;
+ virtual sal_Bool importXML( const ::rtl::OUString& rStrImpValue, ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+ virtual sal_Bool exportXML( ::rtl::OUString& rStrExpValue, const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& rUnitConverter ) const;
+};
+#endif
diff --git a/sc/source/filter/xml/xmlstyli.cxx b/sc/source/filter/xml/xmlstyli.cxx
new file mode 100644
index 000000000000..86e185615a8a
--- /dev/null
+++ b/sc/source/filter/xml/xmlstyli.cxx
@@ -0,0 +1,543 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlstyli.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _XMLSTYLI_HXX
+#include "xmlstyli.hxx"
+#endif
+#ifndef _XMLOFF_NMSPMAP_HXX
+#include <xmloff/nmspmap.hxx>
+#endif
+#ifndef _XMLOFF_XMLNMSPE_HXX
+#include <xmloff/xmlnmspe.hxx>
+#endif
+#ifndef _XMLOFF_XMLKYWD_HXX
+#include <xmloff/xmlkywd.hxx>
+#endif
+#ifndef _XMLOFF_XMLIMPPR_HXX
+#include <xmloff/xmlimppr.hxx>
+#endif
+#ifndef _XMLOFF_FAMILIES_HXX_
+#include <xmloff/families.hxx>
+#endif
+#ifndef _XMLOFF_XMLNUMFI_HXX
+#include <xmloff/xmlnumfi.hxx>
+#endif
+#ifndef _COM_SUN_STAR_STYLE_XSTYLEFAMILIESSUPPLIER_HPP_
+#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
+#include <com/sun/star/container/XNameContainer.hpp>
+#endif
+#ifndef _XMLOFF_XMLPROPERTYSETCONTEXT_HXX
+#include <xmloff/xmlprcon.hxx>
+#endif
+#ifndef _XMLOFF_XMLUCONV_HXX
+#include <xmloff/xmluconv.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+
+#define SC_NUMBERFORMAT "NumberFormat"
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::com::sun::star::style;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::container;
+//using namespace ::com::sun::star::text;
+
+ScXMLImportPropertyMapper::ScXMLImportPropertyMapper(
+ const UniReference< XMLPropertySetMapper >& rMapper ) :
+ SvXMLImportPropertyMapper( rMapper )
+{
+}
+
+ScXMLImportPropertyMapper::~ScXMLImportPropertyMapper()
+{
+}
+
+/*sal_Bool ScXMLImportPropertyMapper::handleSpecialItem(
+ XMLPropertyState& rProperty,
+ ::std::vector< XMLPropertyState >& rProperties,
+ const ::rtl::OUString& rValue,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap ) const
+{
+ return sal_True;
+}*/
+
+/*sal_Bool ScXMLImportPropertyMapper::handleNoItem(
+ sal_Int32 nIndex,
+ ::std::vector< XMLPropertyState >& rProperties,
+ const ::rtl::OUString& rValue,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap ) const
+{
+ return sal_True;
+}*/
+
+void ScXMLImportPropertyMapper::finished(::std::vector< XMLPropertyState >& rProperties ) const
+{
+ SvXMLImportPropertyMapper::finished(rProperties);
+ XMLPropertyState* pAllPaddingProperty = NULL;
+ XMLPropertyState* pAllBorderProperty = NULL;
+ XMLPropertyState* pAllBorderWidthProperty = NULL;
+ ::std::vector< XMLPropertyState >::const_iterator i = rProperties.begin();
+ for (i; i != rProperties.end(); i++)
+ {
+ sal_Int16 nContextID = getPropertySetMapper()->GetEntryContextId(i->mnIndex);
+ switch (nContextID)
+ {
+ case CTF_ALLPADDING :
+ {
+ pAllPaddingProperty = new XMLPropertyState(i->mnIndex, i->maValue);
+ }
+ break;
+ case CTF_ALLBORDER :
+ {
+ pAllBorderProperty = new XMLPropertyState(i->mnIndex, i->maValue);
+ }
+ break;
+ case CTF_ALLBORDERWIDTH :
+ {
+ pAllBorderWidthProperty = new XMLPropertyState(i->mnIndex, i->maValue);
+ }
+ break;
+ }
+ }
+ if (pAllPaddingProperty)
+ {
+ sal_Int32 nIndex = pAllPaddingProperty->mnIndex + 2;
+ XMLPropertyState aNewProperty (nIndex, pAllPaddingProperty->maValue);
+ for (sal_Int16 j = 0; j < 3; j++)
+ {
+ aNewProperty.mnIndex = nIndex++;
+ rProperties.push_back(aNewProperty);
+ }
+ }
+ if (pAllBorderProperty)
+ {
+ sal_Int32 nIndex = pAllBorderProperty->mnIndex + 2;
+ XMLPropertyState aNewProperty (nIndex, pAllBorderProperty->maValue);
+ for (sal_Int16 j = 0; j < 3; j++)
+ {
+ aNewProperty.mnIndex = nIndex++;
+ rProperties.push_back(aNewProperty);
+ }
+ }
+ if (pAllBorderWidthProperty)
+ {
+ sal_Int32 nIndex = pAllBorderWidthProperty->mnIndex + 2;
+ XMLPropertyState aNewProperty (nIndex, pAllBorderWidthProperty->maValue);
+ for (sal_Int16 j = 0; j < 3; j++)
+ {
+ aNewProperty.mnIndex = nIndex++;
+ rProperties.push_back(aNewProperty);
+ }
+ }
+}
+
+void XMLTableStyleContext::SetAttribute( sal_uInt16 nPrefixKey,
+ const OUString& rLocalName,
+ const OUString& rValue )
+{
+ // TODO: use a map here
+ if( rLocalName.compareToAscii( sXML_data_style_name ) == 0 )
+ {
+ sDataStyleName = rValue;
+ }
+ else
+ {
+ XMLPropStyleContext::SetAttribute( nPrefixKey, rLocalName, rValue );
+ }
+}
+
+TYPEINIT1( XMLTableStyleContext, XMLPropStyleContext );
+
+XMLTableStyleContext::XMLTableStyleContext( ScXMLImport& rImport,
+ sal_uInt16 nPrfx, const OUString& rLName,
+ const Reference< XAttributeList > & xAttrList,
+ SvXMLStylesContext& rStyles ) :
+ XMLPropStyleContext( rImport, nPrfx, rLName, xAttrList, rStyles ),
+ sNumberFormat(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NumberFormat"))),
+ sDataStyleName(),
+ pStyles(&rStyles)
+{
+}
+
+XMLTableStyleContext::~XMLTableStyleContext()
+{
+}
+
+SvXMLImportContext *XMLTableStyleContext::CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const Reference< XAttributeList > & xAttrList )
+{
+ SvXMLImportContext *pContext = XMLPropStyleContext::CreateChildContext( nPrefix, rLocalName,
+ xAttrList );
+
+ return pContext;
+}
+
+void XMLTableStyleContext::FillPropertySet(
+ const Reference< XPropertySet > & rPropSet )
+{
+ XMLPropStyleContext::FillPropertySet(rPropSet);
+ if (sDataStyleName.len())
+ {
+ SvXMLNumFormatContext* pStyle = (SvXMLNumFormatContext *)pStyles->FindStyleChildContext(
+ XML_STYLE_FAMILY_DATA_STYLE, sDataStyleName, sal_True);
+ if (!pStyle)
+ {
+ XMLTableStylesContext* pMyStyles = (XMLTableStylesContext *)&GetScImport().GetStyles();
+ pStyle = (SvXMLNumFormatContext *)pMyStyles->
+ FindStyleChildContext(XML_STYLE_FAMILY_DATA_STYLE, sDataStyleName, sal_True);
+ }
+ if (pStyle)
+ {
+ uno::Any aNumberFormat;
+ sal_Int32 nNumberFormat = pStyle->GetKey();
+ aNumberFormat <<= nNumberFormat;
+ rPropSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NUMBERFORMAT)), aNumberFormat);
+ }
+ }
+}
+
+void XMLTableStyleContext::CreateAndInsert( sal_Bool bOverwrite )
+{
+ XMLPropStyleContext::CreateAndInsert( bOverwrite );
+}
+
+void XMLTableStyleContext::CreateAndInsertLate( sal_Bool bOverwrite )
+{
+ XMLPropStyleContext::CreateAndInsertLate( bOverwrite );
+}
+
+void XMLTableStyleContext::Finish( sal_Bool bOverwrite )
+{
+ XMLPropStyleContext::Finish( bOverwrite );
+ Reference < XStyle > xStyle = GetStyle();
+ if( !xStyle.is() )
+ return;
+
+ Reference < XPropertySet > xPropSet( xStyle, UNO_QUERY );
+ Reference< XPropertySetInfo > xPropSetInfo =
+ xPropSet->getPropertySetInfo();
+ if( (xPropSetInfo->hasPropertyByName( sNumberFormat )) && sDataStyleName.len() )
+ {
+ Any aAny;
+ SvXMLNumFormatContext* pStyle = (SvXMLNumFormatContext *)pStyles->FindStyleChildContext(
+ XML_STYLE_FAMILY_DATA_STYLE, sDataStyleName, sal_False);
+ if (pStyle)
+ {
+ sal_Int32 nNumberFormat = pStyle->GetKey();
+ aAny <<= nNumberFormat;
+ xPropSet->setPropertyValue( sNumberFormat, aAny );
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------
+
+SvXMLStyleContext *XMLTableStylesContext::CreateStyleStyleChildContext(
+ sal_uInt16 nFamily, sal_uInt16 nPrefix, const OUString& rLocalName,
+ const Reference< xml::sax::XAttributeList > & xAttrList )
+{
+ SvXMLStyleContext *pStyle = SvXMLStylesContext::CreateStyleStyleChildContext( nFamily, nPrefix,
+ rLocalName,
+ xAttrList );
+ if (!pStyle)
+ {
+ switch( nFamily )
+ {
+ case XML_STYLE_FAMILY_TABLE_CELL:
+ case XML_STYLE_FAMILY_TABLE_PAGE_STYLES:
+ case XML_STYLE_FAMILY_TABLE_COLUMN:
+ case XML_STYLE_FAMILY_TABLE_ROW:
+ case XML_STYLE_FAMILY_TABLE_TABLE:
+ pStyle = new XMLTableStyleContext( GetScImport(), nPrefix, rLocalName,
+ xAttrList, *this );
+ break;
+ }
+ }
+
+ return pStyle;
+}
+
+XMLTableStylesContext::XMLTableStylesContext( SvXMLImport& rImport,
+ sal_uInt16 nPrfx ,
+ const OUString& rLName ,
+ const Reference< XAttributeList > & xAttrList ) :
+ SvXMLStylesContext( rImport, nPrfx, rLName, xAttrList ),
+ sCellStyleServiceName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.style.CellStyle" ) )),
+ sPageStyleServiceName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.style.PageStyle" ) )),
+ sColumnStyleServiceName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( XML_STYLE_FAMILY_TABLE_COLUMN_STYLES_NAME ))),
+ sRowStyleServiceName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( XML_STYLE_FAMILY_TABLE_ROW_STYLES_NAME ))),
+ sTableStyleServiceName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( XML_STYLE_FAMILY_TABLE_TABLE_STYLES_NAME )))
+{
+}
+
+XMLTableStylesContext::~XMLTableStylesContext()
+{
+}
+
+void XMLTableStylesContext::EndElement()
+{
+ SvXMLStylesContext::EndElement();
+ GetImport().GetTextImport()->SetAutoStyles( this );
+}
+
+UniReference < SvXMLImportPropertyMapper >
+ XMLTableStylesContext::GetImportPropertyMapper(
+ sal_uInt16 nFamily ) const
+{
+ UniReference < SvXMLImportPropertyMapper > xMapper =
+ SvXMLStylesContext::GetImportPropertyMapper(nFamily);
+
+ if (!xMapper.is())
+ {
+ switch( nFamily )
+ {
+ case XML_STYLE_FAMILY_TABLE_CELL:
+ {
+ if( !xCellImpPropMapper.is() )
+ {
+ XMLCellStylesPropertySetMapper *pPropMapper = GetScImport().GetCellStylesPropertySetMapper();
+ ((XMLTableStylesContext *)this)->xCellImpPropMapper =
+ new ScXMLImportPropertyMapper( pPropMapper );
+ }
+ xMapper = xCellImpPropMapper;
+ }
+ break;
+ case XML_STYLE_FAMILY_TABLE_PAGE_STYLES:
+ {
+ if( !xPageImpPropMapper.is() )
+ {
+ XMLPageStylesPropertySetMapper *pPropMapper = GetScImport().GetPageStylesPropertySetMapper();
+ ((XMLTableStylesContext *)this)->xPageImpPropMapper =
+ new ScXMLImportPropertyMapper( pPropMapper );
+ }
+ xMapper = xPageImpPropMapper;
+ }
+ break;
+ case XML_STYLE_FAMILY_TABLE_COLUMN:
+ {
+ if( !xColumnImpPropMapper.is() )
+ {
+ XMLColumnStylesPropertySetMapper *pPropMapper = GetScImport().GetColumnStylesPropertySetMapper();
+ ((XMLTableStylesContext *)this)->xColumnImpPropMapper =
+ new ScXMLImportPropertyMapper( pPropMapper );
+ }
+ xMapper = xColumnImpPropMapper;
+ }
+ break;
+ case XML_STYLE_FAMILY_TABLE_ROW:
+ {
+ if( !xRowImpPropMapper.is() )
+ {
+ XMLRowStylesPropertySetMapper *pPropMapper = GetScImport().GetRowStylesPropertySetMapper();
+ ((XMLTableStylesContext *)this)->xRowImpPropMapper =
+ new ScXMLImportPropertyMapper( pPropMapper );
+ }
+ xMapper = xRowImpPropMapper;
+ }
+ break;
+ case XML_STYLE_FAMILY_TABLE_TABLE:
+ {
+ if( !xTableImpPropMapper.is() )
+ {
+ XMLTableStylesPropertySetMapper *pPropMapper = GetScImport().GetTableStylesPropertySetMapper();
+ ((XMLTableStylesContext *)this)->xTableImpPropMapper =
+ new ScXMLImportPropertyMapper( pPropMapper );
+ }
+ xMapper = xTableImpPropMapper;
+ }
+ break;
+ }
+ }
+
+ return xMapper;
+}
+
+Reference < XNameContainer >
+ XMLTableStylesContext::GetStylesContainer( sal_uInt16 nFamily ) const
+{
+ Reference < XNameContainer > xStyles = SvXMLStylesContext::GetStylesContainer(nFamily);
+ if (!xStyles.is())
+ {
+ OUString sName;
+ switch( nFamily )
+ {
+ case XML_STYLE_FAMILY_TABLE_TABLE:
+ {
+ if( xTableStyles.is() )
+ xStyles = xTableStyles;
+ else
+ sName =
+ OUString( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "TableStyles" ) ));
+ }
+ break;
+ case XML_STYLE_FAMILY_TABLE_CELL:
+ {
+ if( xCellStyles.is() )
+ xStyles = xCellStyles;
+ else
+ sName =
+ OUString( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "CellStyles" ) ));
+ }
+ break;
+ case XML_STYLE_FAMILY_TABLE_PAGE_STYLES:
+ {
+ if( xPageStyles.is() )
+ xStyles = xPageStyles;
+ else
+ sName =
+ OUString( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "PageStyles" ) ));
+ }
+ break;
+ case XML_STYLE_FAMILY_TABLE_COLUMN:
+ {
+ if( xColumnStyles.is() )
+ xStyles = xColumnStyles;
+ else
+ sName =
+ OUString( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ColumnStyles" ) ));
+ }
+ break;
+ case XML_STYLE_FAMILY_TABLE_ROW:
+ {
+ if( xRowStyles.is() )
+ xStyles = xRowStyles;
+ else
+ sName =
+ OUString( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "RowStyles" ) ));
+ }
+ break;
+ }
+ if( !xStyles.is() && sName.getLength() )
+ {
+ Reference< XStyleFamiliesSupplier > xFamiliesSupp(
+ GetScImport().GetModel(), UNO_QUERY );
+ if (xFamiliesSupp.is())
+ {
+ Reference< XNameAccess > xFamilies = xFamiliesSupp->getStyleFamilies();
+ Any aAny = xFamilies->getByName( sName );
+
+ xStyles = *(Reference<XNameContainer>*)aAny.getValue();
+ switch( nFamily )
+ {
+ case XML_STYLE_FAMILY_TABLE_TABLE:
+ ((XMLTableStylesContext *)this)->xTableStyles = xStyles;
+ break;
+ case XML_STYLE_FAMILY_TABLE_CELL:
+ ((XMLTableStylesContext *)this)->xCellStyles = xStyles;
+ break;
+ case XML_STYLE_FAMILY_TABLE_PAGE_STYLES:
+ ((XMLTableStylesContext *)this)->xPageStyles = xStyles;
+ break;
+ case XML_STYLE_FAMILY_TABLE_COLUMN:
+ ((XMLTableStylesContext *)this)->xColumnStyles = xStyles;
+ case XML_STYLE_FAMILY_TABLE_ROW:
+ ((XMLTableStylesContext *)this)->xRowStyles = xStyles;
+ }
+ }
+ }
+ }
+
+ return xStyles;
+}
+
+OUString XMLTableStylesContext::GetServiceName( sal_uInt16 nFamily ) const
+{
+ rtl::OUString sServiceName = SvXMLStylesContext::GetServiceName(nFamily);
+ if (!sServiceName.len())
+ {
+ switch( nFamily )
+ {
+ case XML_STYLE_FAMILY_TABLE_PAGE_STYLES:
+ sServiceName = sPageStyleServiceName;
+ break;
+ case XML_STYLE_FAMILY_TABLE_COLUMN:
+ sServiceName = sColumnStyleServiceName;
+ break;
+ case XML_STYLE_FAMILY_TABLE_ROW:
+ sServiceName = sRowStyleServiceName;
+ break;
+ case XML_STYLE_FAMILY_TABLE_CELL:
+ sServiceName = sCellStyleServiceName;
+ break;
+ case XML_STYLE_FAMILY_TABLE_TABLE:
+ sServiceName = sTableStyleServiceName;
+ break;
+ }
+ }
+ return sServiceName;
+}
+
+
+
diff --git a/sc/source/filter/xml/xmlstyli.hxx b/sc/source/filter/xml/xmlstyli.hxx
new file mode 100644
index 000000000000..df2715e6b506
--- /dev/null
+++ b/sc/source/filter/xml/xmlstyli.hxx
@@ -0,0 +1,209 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlstyli.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _XMLSTYLI_HXX
+#define _XMLSTYLI_HXX
+
+#include <rtl/ustring>
+#include <vector>
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+#ifndef _XMLOFF_PROPMAPPINGTYPES_HXX
+#include <xmloff/maptype.hxx>
+#endif
+#ifndef _XMLOFF_PRSTYLEI_HXX_
+#include <xmloff/prstylei.hxx>
+#endif
+#ifndef _XMLOFF_XMLIMPPR_HXX
+#include <xmloff/xmlimppr.hxx>
+#endif
+#include "xmlimprt.hxx"
+
+class ScXMLImportPropertyMapper : public SvXMLImportPropertyMapper
+{
+protected:
+
+public:
+
+ ScXMLImportPropertyMapper(
+ const UniReference< XMLPropertySetMapper >& rMapper );
+ virtual ~ScXMLImportPropertyMapper();
+
+ /** this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_IMPORT flag set */
+/* virtual sal_Bool handleSpecialItem(
+ XMLPropertyState& rProperty,
+ ::std::vector< XMLPropertyState >& rProperties,
+ const ::rtl::OUString& rValue,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap ) const;*/
+
+ /** this method is called for every item that has the MID_FLAG_NO_ITEM_IMPORT flag set */
+/* virtual sal_Bool handleNoItem(
+ sal_Int32 nIndex,
+ ::std::vector< XMLPropertyState >& rProperties,
+ const ::rtl::OUString& rValue,
+ const SvXMLUnitConverter& rUnitConverter,
+ const SvXMLNamespaceMap& rNamespaceMap ) const;*/
+
+ /** This method is called when all attributes have been processed. It may be used to remove items that are incomplete */
+ virtual void finished(
+ ::std::vector< XMLPropertyState >& rProperties ) const;
+};
+
+
+class XMLTableStyleContext : public XMLPropStyleContext
+{
+ ::rtl::OUString sDataStyleName;
+ const rtl::OUString sNumberFormat;
+ SvXMLStylesContext* pStyles;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+protected:
+
+ virtual void SetAttribute( sal_uInt16 nPrefixKey,
+ const ::rtl::OUString& rLocalName,
+ const ::rtl::OUString& rValue );
+
+public:
+
+ TYPEINFO();
+
+ XMLTableStyleContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
+ const ::rtl::OUString& rLName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList,
+ SvXMLStylesContext& rStyles );
+ virtual ~XMLTableStyleContext();
+
+ virtual SvXMLImportContext *CreateChildContext(
+ sal_uInt16 nPrefix,
+ const ::rtl::OUString& rLocalName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList );
+
+ void FillPropertySet(const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet > & rPropSet );
+
+ virtual void CreateAndInsert( sal_Bool bOverwrite );
+ virtual void CreateAndInsertLate( sal_Bool bOverwrite );
+ virtual void Finish( sal_Bool bOverwrite );
+};
+
+class XMLTableStylesContext : public SvXMLStylesContext
+{
+ ::com::sun::star::uno::Reference <
+ ::com::sun::star::container::XNameContainer > xCellStyles;
+ ::com::sun::star::uno::Reference <
+ ::com::sun::star::container::XNameContainer > xPageStyles;
+ ::com::sun::star::uno::Reference <
+ ::com::sun::star::container::XNameContainer > xColumnStyles;
+ ::com::sun::star::uno::Reference <
+ ::com::sun::star::container::XNameContainer > xRowStyles;
+ ::com::sun::star::uno::Reference <
+ ::com::sun::star::container::XNameContainer > xTableStyles;
+ const ::rtl::OUString sCellStyleServiceName;
+ const ::rtl::OUString sPageStyleServiceName;
+ const ::rtl::OUString sColumnStyleServiceName;
+ const ::rtl::OUString sRowStyleServiceName;
+ const ::rtl::OUString sTableStyleServiceName;
+
+ UniReference < SvXMLImportPropertyMapper > xCellImpPropMapper;
+ UniReference < SvXMLImportPropertyMapper > xPageImpPropMapper;
+ UniReference < SvXMLImportPropertyMapper > xColumnImpPropMapper;
+ UniReference < SvXMLImportPropertyMapper > xRowImpPropMapper;
+ UniReference < SvXMLImportPropertyMapper > xTableImpPropMapper;
+
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+protected:
+
+ // Create a style context.
+ virtual SvXMLStyleContext *CreateStyleStyleChildContext(
+ sal_uInt16 nFamily,
+ sal_uInt16 nPrefix,
+ const ::rtl::OUString& rLocalName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList );
+
+// virtual SvXMLImportPropertyMapper *GetImpPropMapper();
+
+public:
+
+ XMLTableStylesContext( SvXMLImport& rImport, sal_uInt16 nPrfx ,
+ const ::rtl::OUString& rLName ,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList );
+ virtual ~XMLTableStylesContext();
+
+ virtual void EndElement();
+
+ virtual UniReference < SvXMLImportPropertyMapper > GetImportPropertyMapper(
+ sal_uInt16 nFamily ) const;
+ virtual ::com::sun::star::uno::Reference <
+ ::com::sun::star::container::XNameContainer >
+ GetStylesContainer( sal_uInt16 nFamily ) const;
+ virtual ::rtl::OUString GetServiceName( sal_uInt16 nFamily ) const;
+};
+
+
+#endif
diff --git a/sc/source/filter/xml/xmlsubti.cxx b/sc/source/filter/xml/xmlsubti.cxx
new file mode 100644
index 000000000000..b024794923ea
--- /dev/null
+++ b/sc/source/filter/xml/xmlsubti.cxx
@@ -0,0 +1,699 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlsubti.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmlsubti.hxx"
+#include "global.hxx"
+#include "xmlstyli.hxx"
+#include "xmlimprt.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/nmspmap.hxx>
+
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSPREADSHEETDOCUMENT_HPP_
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XMERGEABLE_HPP_
+#include <com/sun/star/util/XMergeable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XSHEETCELLRANGE_HPP_
+#include <com/sun/star/sheet/XSheetCellRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGEADDRESSABLE_HPP_
+#include <com/sun/star/sheet/XCellRangeAddressable.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_CELLINSERTMODE_HPP_
+#include <com/sun/star/sheet/CellInsertMode.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_XCELLRANGEMOVEMENT_HPP_
+#include <com/sun/star/sheet/XCellRangeMovement.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMED_HPP_
+#include <com/sun/star/container/XNamed.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XPROTECTABLE_HPP_
+#include <com/sun/star/util/XProtectable.hpp>
+#endif
+
+//------------------------------------------------------------------
+
+using namespace com::sun::star;
+
+ScMyTableData::ScMyTableData(sal_Int16 nSheet, sal_Int32 nCol, sal_Int32 nRow)
+ : nColsPerCol(nDefaultColCount, 1),
+ nRealCols(nDefaultColCount + 1, 0),
+ nRowsPerRow(nDefaultRowCount, 1),
+ nRealRows(nDefaultRowCount + 1, 0),
+ nChangedCols()
+{
+ aTableCellPos.Sheet = nSheet;
+ aTableCellPos.Column = nCol;
+ aTableCellPos.Row = nRow;
+
+ for (sal_Int32 i = 0; i < 3; i++)
+ nRealCols[i] = i;
+ for (i = 0; i < 3; i++)
+ nRealRows[i] = i;
+
+ nSpannedCols = 1;
+ nColCount = 0;
+ nSubTableSpanned = 1;
+}
+
+ScMyTableData::~ScMyTableData()
+{
+}
+
+void ScMyTableData::AddRow()
+{
+ aTableCellPos.Row++;
+ if (aTableCellPos.Row >= nRowsPerRow.size())
+ {
+ nRowsPerRow.resize(nRowsPerRow.size() + nDefaultRowCount, 1);
+ nRealRows.resize(nRowsPerRow.size() + nDefaultRowCount + 1, 0);
+ }
+ nRealRows[aTableCellPos.Row + 1] = nRealRows[aTableCellPos.Row] + nRowsPerRow[aTableCellPos.Row];
+}
+
+void ScMyTableData::AddColumn()
+{
+ aTableCellPos.Column++;
+ if (aTableCellPos.Column >= nColsPerCol.size())
+ {
+ nColsPerCol.resize(nColsPerCol.size() + nDefaultColCount, 1);
+ nRealCols.resize(nColsPerCol.size() + nDefaultColCount + 1, 0);
+ }
+ nRealCols[aTableCellPos.Column + 1] = nRealCols[aTableCellPos.Column] + nColsPerCol[aTableCellPos.Column];
+}
+
+sal_Int32 ScMyTableData::FindNextCol(const sal_Int32 nIndex) const
+{
+ sal_Int32 i = nIndex;
+ while(nRealCols[i] < 0)
+ i++;
+ return nRealCols[i];
+}
+
+sal_Int32 ScMyTableData::GetRealCols(const sal_Int32 nIndex, const sal_Bool bIsNormal) const
+{
+ return (nIndex < 0) ? 0 : nRealCols[nIndex];
+}
+
+sal_Int32 ScMyTableData::GetChangedCols(const sal_Int32 nFromIndex, const sal_Int32 nToIndex) const
+{
+ ScMysalIntList::const_iterator i = nChangedCols.begin();
+ while ((i != nChangedCols.end()) && ((*i < nToIndex) && !(*i >= nFromIndex)))
+ i++;
+ if (i == nChangedCols.end())
+ return -1;
+ else
+ if ((*i >= nFromIndex) && (*i < nToIndex))
+ return *i;
+ else
+ return -1;
+}
+
+void ScMyTableData::SetChangedCols(const sal_Int32 nValue)
+{
+ ScMysalIntList::iterator i = nChangedCols.begin();
+ while ((i != nChangedCols.end()) && (*i < nValue))
+ {
+ sal_Int32 nTemp = *i;
+ i++;
+ }
+ if ((i == nChangedCols.end()) || (*i != nValue))
+ nChangedCols.insert(i, nValue);
+}
+
+/*******************************************************************************************************************************/
+
+ScMyTables::ScMyTables(ScXMLImport& rTempImport)
+ : rImport(rTempImport)
+{
+ nTableCount = 0;
+ nCurrentSheet = -1;
+ aTableVec.resize(nDefaultTabCount, NULL);
+}
+
+ScMyTables::~ScMyTables()
+{
+ ScMyTableData* aTable;
+ while (nTableCount > 0)
+ {
+ aTable = aTableVec[nTableCount - 1];
+ delete aTable;
+ aTableVec[nTableCount - 1] = NULL;
+ nTableCount--;
+ }
+}
+
+void ScMyTables::NewSheet(const rtl::OUString& sTableName, const rtl::OUString& sStyleName, const sal_Bool bTempProtection)
+{
+ ScMyTableData* aTable;
+ while (nTableCount > 0)
+ {
+ aTable = aTableVec[nTableCount - 1];
+ delete aTable;
+ aTableVec[nTableCount - 1] = NULL;
+ nTableCount--;
+ }
+ nCurrentSheet++;
+
+ bProtection = bTempProtection;
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rImport.GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference <sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ if (xSheets.is())
+ {
+ if (nCurrentSheet > 0)
+ {
+ xSheets->insertNewByName(sTableName, nCurrentSheet);
+ }
+ uno::Reference <container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ uno::Any aSheet = xIndex->getByIndex(nCurrentSheet);
+ uno::Reference <sheet::XSpreadsheet> xSheet;
+ if ( aSheet >>= xSheet )
+ {
+ if (!(nCurrentSheet > 0))
+ {
+ uno::Reference < container::XNamed > xNamed(xSheet, uno::UNO_QUERY );
+ if ( xNamed.is() )
+ xNamed->setName(sTableName);
+ }
+ uno::Reference <beans::XPropertySet> xProperties(xSheet, uno::UNO_QUERY);
+ if (xProperties.is())
+ {
+ XMLTableStylesContext *pStyles = (XMLTableStylesContext *)&rImport.GetAutoStyles();
+ XMLTableStyleContext* pStyle = (XMLTableStyleContext *)pStyles->FindStyleChildContext(
+ XML_STYLE_FAMILY_TABLE_TABLE, sStyleName, sal_True);
+ if (pStyle)
+ {
+ pStyle->FillPropertySet(xProperties);
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+ NewTable(1);
+}
+
+sal_Bool ScMyTables::IsMerged (const uno::Reference <table::XCellRange>& xCellRange, const sal_Int32 nCol, const sal_Int32 nRow,
+ table::CellRangeAddress& aCellAddress) const
+{
+ uno::Reference <table::XCellRange> xMergeCellRange = xCellRange->getCellRangeByPosition(nCol,nRow,nCol,nRow);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ {
+ uno::Reference<sheet::XSheetCellRange> xMergeSheetCellRange (xMergeCellRange, uno::UNO_QUERY);
+ uno::Reference<sheet::XSpreadsheet> xTable = xMergeSheetCellRange->getSpreadsheet();
+ uno::Reference<sheet::XSheetCellCursor> xMergeSheetCursor = xTable->createCursorByRange(xMergeSheetCellRange);
+ if (xMergeSheetCursor.is())
+ {
+ xMergeSheetCursor->collapseToMergedArea();
+ uno::Reference<sheet::XCellRangeAddressable> xMergeCellAddress (xMergeSheetCursor, uno::UNO_QUERY);
+ if (xMergeCellAddress.is())
+ {
+ aCellAddress = xMergeCellAddress->getRangeAddress();
+ if (aCellAddress.StartColumn == nCol && aCellAddress.EndColumn == nCol &&
+ aCellAddress.StartRow == nRow && aCellAddress.EndRow == nRow)
+ return sal_False;
+ else
+ return sal_True;
+ }
+ }
+ }
+ return sal_False;
+}
+
+void ScMyTables::UnMerge()
+{
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rImport.GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ table::CellRangeAddress aCellAddress;
+ uno::Any aTable = xIndex->getByIndex(nCurrentSheet);
+ uno::Reference<sheet::XSpreadsheet> xTable;
+ aTable>>=xTable;
+ uno::Reference<table::XCellRange> xCellRange ( xTable, uno::UNO_QUERY );
+ if ( xCellRange.is() )
+ {
+ if (IsMerged(xCellRange, GetRealCellPos().Column, GetRealCellPos().Row, aCellAddress))
+ {
+ //unmerge
+ uno::Reference <table::XCellRange> xMergeCellRange =
+ xCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
+ aCellAddress.EndColumn, aCellAddress.EndRow);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ xMergeable->merge(sal_False);
+ }
+ }
+ }
+ }
+}
+
+void ScMyTables::DoMerge(sal_Int32 nCount)
+{
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rImport.GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ table::CellRangeAddress aCellAddress;
+ uno::Any aTable = xIndex->getByIndex(nCurrentSheet);
+ uno::Reference<sheet::XSpreadsheet> xTable;
+ aTable>>=xTable;
+ uno::Reference<table::XCellRange> xCellRange ( xTable, uno::UNO_QUERY );
+ if ( xCellRange.is() )
+ {
+ if (IsMerged(xCellRange, GetRealCellPos().Column, GetRealCellPos().Row, aCellAddress))
+ {
+ //unmerge
+ uno::Reference <table::XCellRange> xMergeCellRange =
+ xCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
+ aCellAddress.EndColumn, aCellAddress.EndRow);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ xMergeable->merge(sal_False);
+ }
+
+ //merge
+ uno::Reference <table::XCellRange> xMergeCellRange;
+ if (nCount == -1)
+ xMergeCellRange =
+ xCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
+ aCellAddress.EndColumn
+ + aTableVec[nTableCount - 1]->GetColsPerCol(aTableVec[nTableCount - 1]->GetColumn()) - 1,
+ aCellAddress.EndRow
+ + aTableVec[nTableCount - 1]->GetRowsPerRow(aTableVec[nTableCount - 1]->GetRow()) - 1);
+ else
+ xMergeCellRange =
+ xCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
+ aCellAddress.StartColumn
+ + nCount - 1,
+ aCellAddress.EndRow);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ xMergeable->merge(sal_True);
+ }
+ }
+ }
+}
+
+void ScMyTables::InsertRow()
+{
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rImport.GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ table::CellRangeAddress aCellAddress;
+ uno::Any aTable = xIndex->getByIndex(nCurrentSheet);
+ uno::Reference<sheet::XSpreadsheet> xTable;
+ aTable>>=xTable;
+ uno::Reference<table::XCellRange> xCellRange ( xTable, uno::UNO_QUERY );
+ if ( xCellRange.is() )
+ {
+ for (sal_Int32 j = 0; j < GetRealCellPos().Column - aTableVec[nTableCount - 1]->GetColumn() - 1; j++)
+ {
+ if (IsMerged(xCellRange, j, GetRealCellPos().Row - 1, aCellAddress))
+ {
+ //unmerge
+ uno::Reference <table::XCellRange> xMergeCellRange =
+ xCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
+ aCellAddress.EndColumn, aCellAddress.EndRow);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ xMergeable->merge(sal_False);
+ }
+
+ //merge
+ uno::Reference <table::XCellRange> xMergeCellRange =
+ xCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
+ aCellAddress.EndColumn, aCellAddress.EndRow + 1);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ xMergeable->merge(sal_True);
+ j += aCellAddress.EndColumn - aCellAddress.StartColumn;
+ }
+ }
+ }
+ }
+}
+
+void ScMyTables::NewRow()
+{
+ if (nTableCount > 1)
+ if (aTableVec[nTableCount - 1]->GetRealRows(aTableVec[nTableCount - 1]->GetRow()) >
+ aTableVec[nTableCount - 2]->GetRowsPerRow(aTableVec[nTableCount - 2]->GetRow()) - 1)
+ {
+ if (GetRealCellPos().Column > 0)
+ InsertRow();
+ for (sal_Int16 i = nTableCount - 1; i > 0; i--)
+ {
+ sal_Int32 nRow = aTableVec[i - 1]->GetRow();
+ aTableVec[i - 1]->SetRowsPerRow(nRow,
+ aTableVec[i - 1]->GetRowsPerRow(nRow) + 1);
+ aTableVec[i - 1]->SetRealRows(nRow + 1,
+ aTableVec[i - 1]->GetRealRows(nRow)
+ + aTableVec[i - 1]->GetRowsPerRow(nRow));
+ }
+ }
+}
+
+void ScMyTables::AddRow()
+{
+ aTableVec[nTableCount - 1]->AddRow();
+ aTableVec[nTableCount - 1]->SetFirstColumn();
+ sal_Int32 nRow = aTableVec[nTableCount - 1]->GetRow();
+ if (nRow > 0)
+ NewRow();
+ aTableVec[nTableCount - 1]->SetRealRows(nRow + 1,
+ aTableVec[nTableCount - 1]->GetRealRows(nRow)
+ + aTableVec[nTableCount - 1]->GetRowsPerRow(nRow));
+}
+
+void ScMyTables::CloseRow()
+{
+ sal_Int32 nToMerge;
+ sal_Int32 nSpannedCols = aTableVec[nTableCount - 1]->GetSpannedCols();
+ sal_Int32 nColCount = aTableVec[nTableCount - 1]->GetColCount();
+ sal_Int32 nCol = aTableVec[nTableCount - 1]->GetColumn();
+ sal_Int32 nColsPerCol = aTableVec[nTableCount - 1]->GetColsPerCol(nCol);
+ if (nSpannedCols > nColCount)
+ nToMerge = aTableVec[nTableCount - 1]->GetChangedCols(nCol, nCol + nColsPerCol + nSpannedCols - nColCount);
+ else
+ nToMerge = aTableVec[nTableCount - 1]->GetChangedCols(nCol, nCol + nColsPerCol);
+ if ((nToMerge > nCol) && (aTableVec[nTableCount - 1]->GetSubTableSpanned() == 1))
+ DoMerge(nColsPerCol + aTableVec[nTableCount - 1]->GetColsPerCol(nToMerge) - 1);
+}
+
+
+void ScMyTables::InsertColumn()
+{
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rImport.GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ table::CellRangeAddress aCellAddress;
+ uno::Any aTable = xIndex->getByIndex(nCurrentSheet);
+ uno::Reference<sheet::XSpreadsheet> xTable;
+ aTable>>=xTable;
+ uno::Reference<table::XCellRange> xCellRange ( xTable, uno::UNO_QUERY );
+ if ( xCellRange.is() )
+ {
+ for (sal_Int32 j = 0; j <= GetRealCellPos().Row - aTableVec[nTableCount - 1]->GetRow() - 1; j++)
+ {
+ table::CellRangeAddress aTempCellAddress;
+ if (IsMerged(xCellRange, GetRealCellPos().Column - 1, j, aCellAddress))
+ {
+ //unmerge
+ uno::Reference <table::XCellRange> xMergeCellRange =
+ xCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
+ aCellAddress.EndColumn, aCellAddress.EndRow);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ xMergeable->merge(sal_False);
+ aTempCellAddress = aCellAddress;
+ aTempCellAddress.StartColumn = aTempCellAddress.EndColumn + 1;
+ aTempCellAddress.EndColumn = aTempCellAddress.StartColumn;
+ }
+ else
+ {
+ aTempCellAddress = aCellAddress;
+ aTempCellAddress.StartColumn += 1;
+ aTempCellAddress.EndColumn = aTempCellAddress.StartColumn;
+ }
+
+ //insert Cell
+ sheet::CellInsertMode aCellInsertMode = sheet::CellInsertMode_RIGHT;
+ uno::Reference <sheet::XCellRangeMovement> xCellRangeMovement (xTable, uno::UNO_QUERY);
+ xCellRangeMovement->insertCells(aTempCellAddress, aCellInsertMode);
+
+ //merge
+ uno::Reference <table::XCellRange> xMergeCellRange =
+ xCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow,
+ aCellAddress.EndColumn + 1, aCellAddress.EndRow);
+ uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY);
+ if (xMergeable.is())
+ xMergeable->merge(sal_True);
+ j += aCellAddress.EndRow - aCellAddress.StartRow;
+ }
+ }
+ }
+ }
+}
+
+void ScMyTables::NewColumn(sal_Bool bIsCovered)
+{
+ if (!bIsCovered)
+ {
+ sal_Int32 nColCount = aTableVec[nTableCount - 1]->GetColCount();
+ sal_Int32 nSpannedCols = aTableVec[nTableCount - 1]->GetSpannedCols();
+ if ( (nSpannedCols > nColCount) &&
+ (aTableVec[nTableCount - 1]->GetRow() == 0) &&
+ (aTableVec[nTableCount - 1]->GetColumn() == 0) )
+ {
+ if (nColCount > 0)
+ {
+ sal_Int32 FirstColsSpanned = nSpannedCols / nColCount;
+ sal_Int32 LastColSpanned = FirstColsSpanned
+ + (nSpannedCols % nColCount);
+ for (sal_Int32 i = 0; i < nColCount - 1; i++)
+ {
+ aTableVec[nTableCount - 1]->SetColsPerCol(i, FirstColsSpanned);
+ aTableVec[nTableCount - 1]->SetRealCols(i + 1,
+ aTableVec[nTableCount - 1]->GetRealCols(i)
+ + FirstColsSpanned);
+ }
+ aTableVec[nTableCount - 1]->SetColsPerCol(nColCount - 1, LastColSpanned);
+ aTableVec[nTableCount - 1]->SetRealCols(nColCount - 1 + 1,
+ aTableVec[nTableCount - 1]->GetRealCols(nColCount - 1)
+ + LastColSpanned);
+ }
+ }
+ sal_Int32 nTemp = aTableVec[nTableCount - 1]->GetRealCols(aTableVec[nTableCount - 1]->GetColumn());
+ if (aTableVec[nTableCount - 1]->GetRealCols(aTableVec[nTableCount - 1]->GetColumn()) > nSpannedCols - 1)
+ {
+ if ( aTableVec[nTableCount - 1]->GetRow() == 0)
+ {
+ InsertColumn();
+ for (sal_Int16 i = nTableCount - 1; i > 0; i--)
+ {
+ sal_Int32 nColPos = aTableVec[i - 1]->GetColumn() +
+ aTableVec[i]->GetSpannedCols() - 1;
+ aTableVec[i - 1]->SetColsPerCol(nColPos,
+ aTableVec[i - 1]->GetColsPerCol(nColPos) +
+ aTableVec[nTableCount - 1]->GetColsPerCol(aTableVec[nTableCount - 1]->GetColumn()));
+ aTableVec[i - 1]->SetRealCols(nColPos + 1,
+ aTableVec[i - 1]->GetRealCols(nColPos)
+ + aTableVec[i - 1]->GetColsPerCol(nColPos));
+ aTableVec[i - 1]->SetChangedCols(nColPos);
+ }
+ }
+ }
+ }
+}
+
+void ScMyTables::AddColumn(sal_Bool bIsCovered)
+{
+ aTableVec[nTableCount - 1]->AddColumn();
+ if (aTableVec[nTableCount - 1]->GetSubTableSpanned() > 1)
+ aTableVec[nTableCount - 1]->SetSubTableSpanned(aTableVec[nTableCount - 1]->GetSubTableSpanned() - 1);
+ else
+ {
+ NewColumn(bIsCovered);
+ // if (!bIsCovered)
+ aTableVec[nTableCount - 1]->SetRealCols(aTableVec[nTableCount - 1]->GetColumn() + 1,
+ aTableVec[nTableCount - 1]->GetRealCols(aTableVec[nTableCount - 1]->GetColumn())
+ + aTableVec[nTableCount - 1]->GetColsPerCol(aTableVec[nTableCount - 1]->GetColumn()));
+ if ((!bIsCovered) || (bIsCovered &&
+ (aTableVec[nTableCount - 1]->GetColsPerCol(aTableVec[nTableCount - 1]->GetColumn()) > 1)))
+ {
+ if ((aTableVec[nTableCount - 1]->GetRowsPerRow(aTableVec[nTableCount - 1]->GetRow()) > 1) ||
+ (aTableVec[nTableCount - 1]->GetColsPerCol(aTableVec[nTableCount - 1]->GetColumn()) > 1))
+ DoMerge();
+ }
+ }
+}
+
+void ScMyTables::NewTable(sal_Int32 nTempSpannedCols)
+{
+ nTableCount++;
+ if (nTableCount >= aTableVec.size())
+ aTableVec.resize(aTableVec.size() + nDefaultTabCount);
+ ScMyTableData* aTable = new ScMyTableData(nCurrentSheet);
+ if (nTableCount > 1)
+ {
+ sal_Int32 nCol = aTableVec[nTableCount - 2]->GetColumn();
+ sal_Int32 nColCount = aTableVec[nTableCount - 2]->GetColCount();
+ sal_Int32 nColsPerCol = aTableVec[nTableCount - 2]->GetColsPerCol(nCol);
+ sal_Int32 nSpannedCols = aTableVec[nTableCount - 2]->GetSpannedCols();
+ sal_Int32 nTemp = nSpannedCols - nColCount;
+ sal_Int32 nTemp2 = nCol - (nColCount - 1);
+ if ((nTemp > 0) && (nTemp2 == 0))
+ nTempSpannedCols *= (nTemp + 1);
+ else
+ if (nColsPerCol > 1)
+ nTempSpannedCols *= nColsPerCol;
+
+ sal_Int32 nToMerge;
+ if (nSpannedCols > nColCount)
+ nToMerge = aTableVec[nTableCount - 2]->GetChangedCols(nCol, nCol + nColsPerCol + nSpannedCols - nColCount);
+ else
+ nToMerge = aTableVec[nTableCount - 2]->GetChangedCols(nCol, nCol + nColsPerCol);
+ if (nToMerge > nCol)
+ nTempSpannedCols += nToMerge;
+ }
+ aTable->SetSpannedCols(nTempSpannedCols);
+ aTableVec[nTableCount - 1] = aTable;
+ if (nTableCount > 1)
+ {
+ aTableVec[nTableCount - 2]->SetSubTableSpanned(aTable->GetSpannedCols());
+ UnMerge();
+ }
+}
+
+void ScMyTables::DeleteTable()
+{
+ if (nTableCount > 0)
+ {
+ ScMyTableData* aTable = aTableVec[nTableCount - 1];
+ delete aTable;
+ aTableVec[nTableCount - 1] = NULL;
+ nTableCount--;
+ }
+ if (bProtection)
+ {
+ uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rImport.GetModel(), uno::UNO_QUERY );
+ if ( xSpreadDoc.is() )
+ {
+ uno::Reference <sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
+ if (xSheets.is())
+ {
+ uno::Reference <container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
+ if ( xIndex.is() )
+ {
+ uno::Any aSheet = xIndex->getByIndex(nCurrentSheet);
+ uno::Reference <sheet::XSpreadsheet> xSheet;
+ if ( aSheet >>= xSheet )
+ {
+ uno::Reference <util::XProtectable> xProtectable(xSheet, uno::UNO_QUERY);
+ if (xProtectable.is())
+ {
+ rtl::OUString sKey;
+ xProtectable->protect(sKey);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+table::CellAddress ScMyTables::GetRealCellPos()
+{
+ sal_Int32 nRow, nCol;
+ nRow = 0;
+ nCol = 0;
+ for (sal_Int32 i = 1; i <= nTableCount; i++)
+ {
+ nCol += aTableVec[i - 1]->GetRealCols(aTableVec[i - 1]->GetColumn());
+ nRow += aTableVec[i - 1]->GetRealRows(aTableVec[i - 1]->GetRow());
+ }
+ aRealCellPos.Row = nRow;
+ aRealCellPos.Column = nCol;
+ aRealCellPos.Sheet = nCurrentSheet;
+ return aRealCellPos;
+}
+
+void ScMyTables::AddColCount(sal_Int32 nTempColCount)
+{
+ aTableVec[nTableCount - 1]->SetColCount(aTableVec[nTableCount - 1]->GetColCount() + nTempColCount);
+}
+
diff --git a/sc/source/filter/xml/xmlsubti.hxx b/sc/source/filter/xml/xmlsubti.hxx
new file mode 100644
index 000000000000..86bf645ae4f9
--- /dev/null
+++ b/sc/source/filter/xml/xmlsubti.hxx
@@ -0,0 +1,173 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlsubti.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLSUBTI_HXX
+#define SC_XMLSUBTI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_TABLE_CELLADDRESS_HPP_
+#include <com/sun/star/table/CellAddress.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_XCELLRANGE_HPP_
+#include <com/sun/star/table/XCellRange.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLRANGEADDRESS_HPP_
+#include <com/sun/star/table/CellRangeAddress.hpp>
+#endif
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#include <vector>
+#include <list>
+
+class ScXMLImport;
+
+const nDefaultRowCount = 20;
+const nDefaultColCount = 20;
+const nDefaultTabCount = 10;
+
+typedef std::vector<sal_Int32> ScMysalIntVec;
+typedef std::list<sal_Int32> ScMysalIntList;
+
+class ScMyTableData
+{
+private:
+ com::sun::star::table::CellAddress aTableCellPos;
+ ScMysalIntVec nColsPerCol;
+ ScMysalIntVec nRealCols;
+ ScMysalIntVec nRowsPerRow;
+ ScMysalIntVec nRealRows;
+ sal_Int32 nSpannedCols;
+ sal_Int32 nColCount;
+ sal_Int32 nSubTableSpanned;
+ ScMysalIntList nChangedCols;
+public:
+ ScMyTableData(sal_Int16 nSheet = -1, sal_Int32 nCol = -1, sal_Int32 nRow = -1);
+ ~ScMyTableData();
+ com::sun::star::table::CellAddress GetCellPos() const { return aTableCellPos; }
+ sal_Int32 GetRow() const { return aTableCellPos.Row; }
+ sal_Int32 GetColumn() const { return aTableCellPos.Column; }
+ void AddRow();
+ void AddColumn();
+ void SetFirstColumn() { aTableCellPos.Column = -1; }
+ sal_Int32 FindNextCol(const sal_Int32 nIndex) const;
+ sal_Int32 GetColsPerCol(const sal_Int32 nIndex) const { return nColsPerCol[nIndex]; }
+ void SetColsPerCol(const sal_Int32 nIndex, sal_Int32 nValue = 1) { nColsPerCol[nIndex] = nValue; }
+ sal_Int32 GetRealCols(const sal_Int32 nIndex, const sal_Bool bIsNormal = sal_True) const;
+ void SetRealCols(const sal_Int32 nIndex, const sal_Int32 nValue) { nRealCols[nIndex] = nValue; }
+ sal_Int32 GetRowsPerRow(const sal_Int32 nIndex) const { return nRowsPerRow[nIndex]; }
+ void SetRowsPerRow(const sal_Int32 nIndex, const sal_Int32 nValue = 1) { nRowsPerRow[nIndex] = nValue; }
+ sal_Int32 GetRealRows(const sal_Int32 nIndex) const { return nIndex < 0 ? 0 : nRealRows[nIndex]; }
+ void SetRealRows(const sal_Int32 nIndex, const sal_Int32 nValue) { nRealRows[nIndex] = nValue; }
+ sal_Int32 GetSpannedCols() const { return nSpannedCols; }
+ void SetSpannedCols(const sal_Int32 nTempSpannedCols) { nSpannedCols = nTempSpannedCols; }
+ sal_Int32 GetColCount() const { return nColCount; }
+ void SetColCount(const sal_Int32 nTempColCount) { nColCount = nTempColCount; }
+ sal_Int32 GetSubTableSpanned() const { return nSubTableSpanned; }
+ void SetSubTableSpanned(const sal_Int32 nValue) { nSubTableSpanned = nValue; }
+ sal_Int32 GetChangedCols(const sal_Int32 nFromIndex, const sal_Int32 nToIndex) const;
+ void SetChangedCols(const sal_Int32 nValue);
+};
+
+//*******************************************************************************************************************************
+
+class ScMyTables
+{
+private:
+ ScXMLImport& rImport;
+
+ std::vector<ScMyTableData*> aTableVec;
+ sal_Int16 nTableCount;
+ sal_Int16 nCurrentSheet;
+ com::sun::star::table::CellAddress aRealCellPos;
+ sal_Bool bProtection;
+
+ sal_Bool IsMerged (const com::sun::star::uno::Reference <com::sun::star::table::XCellRange>& xCellRange,
+ const sal_Int32 nCol, const sal_Int32 nRow,
+ com::sun::star::table::CellRangeAddress& aCellAddress) const;
+ void UnMerge();
+ void DoMerge(sal_Int32 nCount = -1);
+ void InsertRow();
+ void NewRow();
+ void InsertColumn();
+ void NewColumn(sal_Bool bIsCovered);
+public:
+ ScMyTables(ScXMLImport& rImport);
+ ~ScMyTables();
+ void NewSheet(const rtl::OUString& sTableName, const rtl::OUString& sStyleName, const sal_Bool bProtection);
+ void AddRow();
+ void CloseRow();
+ void AddColumn(sal_Bool bIsCovered);
+ void NewTable(sal_Int32 nTempSpannedCols);
+ void DeleteTable();
+ com::sun::star::table::CellAddress GetRealCellPos();
+ void AddColCount(sal_Int32 nTempColCount);
+ sal_Int16 GetCurrentSheet() const { return nCurrentSheet; }
+ sal_Int32 GetCurrentColumn() const { return aTableVec[nTableCount - 1]->GetColCount(); }
+ sal_Int32 GetCurrentRow() const { return aTableVec[nTableCount - 1]->GetRow(); }
+};
+
+#endif
diff --git a/sc/source/filter/xml/xmltabi.cxx b/sc/source/filter/xml/xmltabi.cxx
new file mode 100644
index 000000000000..54d2987a9897
--- /dev/null
+++ b/sc/source/filter/xml/xmltabi.cxx
@@ -0,0 +1,187 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmltabi.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "xmltabi.hxx"
+#include "xmlimprt.hxx"
+#include "xmlrowi.hxx"
+#include "xmlcoli.hxx"
+#include "document.hxx"
+
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/nmspmap.hxx>
+#include <xmloff/xmlkywd.hxx>
+
+#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
+#include <com/sun/star/sheet/XSpreadsheets.hpp>
+#include <com/sun/star/table/CellAddress.hpp>
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+ScXMLTableContext::ScXMLTableContext( ScXMLImport& rImport,
+ USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ const sal_Bool bTempIsSubTable,
+ const sal_Int32 nSpannedCols) :
+ SvXMLImportContext( rImport, nPrfx, rLName )
+{
+ if (!bTempIsSubTable)
+ {
+ sal_Bool bProtection(sal_False);
+ rtl::OUString sName;
+ rtl::OUString sStyleName;
+ sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
+ for( sal_Int16 i=0; i < nAttrCount; i++ )
+ {
+ rtl::OUString sAttrName = xAttrList->getNameByIndex( i );
+ rtl::OUString aLocalName;
+ USHORT nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
+ sAttrName, &aLocalName );
+ rtl::OUString sValue = xAttrList->getValueByIndex( i );
+
+ const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetTableAttrTokenMap();
+
+ switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
+ {
+ case XML_TOK_TABLE_NAME:
+ sName = sValue;
+ break;
+ case XML_TOK_TABLE_STYLE_NAME:
+ sStyleName = sValue;
+ break;
+ case XML_TOK_TABLE_PROTECTION:
+ if (sValue.compareToAscii(sXML_true) == 0)
+ bProtection = sal_True;
+ break;
+ }
+ }
+ GetScImport().GetTables().NewSheet(sName, sStyleName, bProtection);
+ }
+ else
+ {
+ GetScImport().GetTables().NewTable(nSpannedCols);
+ }
+}
+
+ScXMLTableContext::~ScXMLTableContext()
+{
+}
+
+SvXMLImportContext *ScXMLTableContext::CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
+{
+ SvXMLImportContext *pContext = 0;
+
+ const SvXMLTokenMap& rTokenMap = GetScImport().GetTableElemTokenMap();
+ sal_Bool bHeader = sal_False;
+ switch( rTokenMap.Get( nPrefix, rLName ) )
+ {
+// case XML_TOK_TABLE_HEADER_COLS:
+// bHeader = TRUE;
+// case XML_TOK_TABLE_COLS:
+// pContext = new ScXMLTableColsContext( GetScImport(), nPrefix,
+// rLName, xAttrList,
+// this, bHeader );
+// break;
+ case XML_TOK_TABLE_COL:
+// if( IsInsertColPossible() )
+ pContext = new ScXMLTableColContext( GetScImport(), nPrefix,
+ rLName, xAttrList );
+ break;
+// case XML_TOK_TABLE_HEADER_ROWS:
+// bHeader = TRUE;
+// case XML_TOK_TABLE_ROWS:
+// pContext = new ScXMLTableRowsContext( GetScImport(), nPrefix,
+// rLName, xAttrList,
+// this, bHeader );
+// break;
+ case XML_TOK_TABLE_ROW:
+// if( IsInsertRowPossible() )
+ pContext = new ScXMLTableRowContext( GetScImport(), nPrefix,
+ rLName, xAttrList//,
+ //this
+ );
+ break;
+ }
+
+ if( !pContext )
+ pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
+
+ return pContext;
+}
+
+void ScXMLTableContext::EndElement()
+{
+ GetScImport().GetTables().DeleteTable();
+}
diff --git a/sc/source/filter/xml/xmltabi.hxx b/sc/source/filter/xml/xmltabi.hxx
new file mode 100644
index 000000000000..5d6f0bd9e27c
--- /dev/null
+++ b/sc/source/filter/xml/xmltabi.hxx
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmltabi.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_XMLTABI_HXX
+#define SC_XMLTABI_HXX
+
+#ifndef _XMLOFF_XMLICTXT_HXX
+#include <xmloff/xmlictxt.hxx>
+#endif
+
+#ifndef _XMLOFF_XMLIMP_HXX
+#include <xmloff/xmlimp.hxx>
+#endif
+
+class ScXMLImport;
+
+class ScXMLTableContext : public SvXMLImportContext
+{
+ const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); }
+ ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); }
+
+public:
+
+ ScXMLTableContext( ScXMLImport& rImport, USHORT nPrfx,
+ const NAMESPACE_RTL(OUString)& rLName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
+ const sal_Bool bTempIsSubTable = sal_False,
+ const sal_Int32 nSpannedCols = 0);
+
+ virtual ~ScXMLTableContext();
+
+ virtual SvXMLImportContext *CreateChildContext( USHORT nPrefix,
+ const NAMESPACE_RTL(OUString)& rLocalName,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::xml::sax::XAttributeList>& xAttrList );
+
+ virtual void EndElement();
+};
+
+#endif
diff --git a/sc/source/filter/xml/xmlwrap.cxx b/sc/source/filter/xml/xmlwrap.cxx
new file mode 100644
index 000000000000..fa80b995f833
--- /dev/null
+++ b/sc/source/filter/xml/xmlwrap.cxx
@@ -0,0 +1,283 @@
+/*************************************************************************
+ *
+ * $RCSfile: xmlwrap.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "filt_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <rsc/rscsfx.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/objsh.hxx>
+#include <tools/debug.hxx>
+#include <vos/xception.hxx>
+#include <unotools/processfactory.hxx>
+#include <xmloff/xmlkywd.hxx>
+
+#include <com/sun/star/xml/sax/XErrorHandler.hpp>
+#include <com/sun/star/xml/sax/XEntityResolver.hpp>
+#include <com/sun/star/xml/sax/InputSource.hpp>
+#include <com/sun/star/xml/sax/XDTDHandler.hpp>
+#include <com/sun/star/xml/sax/XParser.hpp>
+#include <com/sun/star/io/XActiveDataSource.hpp>
+#include <com/sun/star/io/XActiveDataControl.hpp>
+#include <com/sun/star/document/XDocumentInfoSupplier.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+
+#include "document.hxx"
+#include "xmlwrap.hxx"
+#include "xmlimprt.hxx"
+#include "xmlexprt.hxx"
+
+using namespace com::sun::star;
+
+// -----------------------------------------------------------------------
+
+ScXMLImportWrapper::ScXMLImportWrapper(ScDocument& rD, SfxMedium& rM) :
+ rDoc(rD),
+ rMedium(rM)
+{
+}
+
+sal_Bool ScXMLImportWrapper::Import()
+{
+ uno::Reference<lang::XMultiServiceFactory> xServiceFactory =
+ utl::getProcessServiceFactory();
+ DBG_ASSERT( xServiceFactory.is(), "got no service manager" );
+ if( !xServiceFactory.is() )
+ return sal_False;
+
+ // Get data source ...
+ uno::Reference<io::XActiveDataSource> xSource = rMedium.GetDataSource();
+ DBG_ASSERT( xSource.is(), "got no data source from medium" );
+
+ if( !xSource.is() )
+ {
+// // If we didn't get a data source from a medium, we have to create
+// // one.
+// uno::Reference<uno::XInterface> xFactory =
+// xServiceFactory->createInstance(
+// L"com.sun.star.frame.DataSourceFactory" );
+// if( xFactory.is() )
+// {
+// XMultiServiceFactoryRef xMFactory( xFactory, uno::UNO_QUERY );
+// if( xMFactory.is() )
+// {
+// UString sURL( mrMedium.GetName() );
+// Sequence<UsrAny> aArgs(1);
+// UsrAny* pArgs = aArgs.getArray();
+// pArgs->setString( sURL );
+//
+// uno::Reference<uno::XInterface> xSrc = xMFactory->createInstanceWithArguments(
+// sURL, aArgs );
+// if( xSrc.is() )
+// xSrc->queryInterface( XActiveDataSource::getSmartUik(),
+// xSource );
+// }
+// }
+ }
+
+ // get data source
+ DBG_ASSERT( xSource.is(), "data source missing" );
+ if( !xSource.is() )
+ return sal_False;
+
+ // get parser
+ uno::Reference<uno::XInterface> xXMLParser =
+ xServiceFactory->createInstance(
+ OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.xml.sax.Parser" )) );
+ DBG_ASSERT( xXMLParser.is(), "com.sun.star.xml.sax.Parser service missing" );
+ if( !xXMLParser.is() )
+ return sal_False;
+
+ // get a pipe for connecting the data source to the parser
+ uno::Reference<uno::XInterface> xPipe =
+ xServiceFactory->createInstance(
+ OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.io.Pipe" )) );
+ DBG_ASSERT( xPipe.is(), "com.sun.star.io.Pipe service missing" );
+ if( !xPipe.is() )
+ return sal_False;
+
+ sal_uInt16 nStyleFamilyMask(0);
+// USHORT nStyleFamilyMask = SFX_STYLE_FAMILY_ALL;
+ sal_Bool bLoadDoc(sal_True);
+// BOOL bInsert;
+// if( aOpt.IsFmtsOnly() )
+// {
+// bLoadDoc = FALSE;
+// bInsert = aOpt.IsMerge();
+// nStyleFamilyMask = 0U;
+// if( aOpt.IsFrmFmts() )
+// nStyleFamilyMask |= SFX_STYLE_FAMILY_FRAME;
+// if( aOpt.IsPageDescs() )
+// nStyleFamilyMask |= SFX_STYLE_FAMILY_PAGE;
+// if( aOpt.IsTxtFmts() )
+// nStyleFamilyMask |= (SFX_STYLE_FAMILY_CHAR|SFX_STYLE_FAMILY_PARA);
+// if( aOpt.IsNumRules() )
+// nStyleFamilyMask |= SFX_STYLE_FAMILY_PSEUDO;
+// }
+// else
+// {
+// bLoadDoc = TRUE;
+// bInsert = bInsertMode;
+// nStyleFamilyMask = SFX_STYLE_FAMILY_ALL;
+// }
+// aOpt.ResetAllFmtsOnly();
+
+ // get filter
+ SfxObjectShell* pObjSh = rDoc.GetDocumentShell();
+ if ( pObjSh )
+ {
+ uno::Reference<frame::XModel> xModel = pObjSh->GetModel();
+
+ uno::Reference<xml::sax::XDocumentHandler> xFilter = new ScXMLImport(
+ xModel, bLoadDoc, nStyleFamilyMask);
+
+ // connect pipe's output stream to the data source
+ uno::Reference<io::XOutputStream> xPipeOutput( xPipe, uno::UNO_QUERY );
+ xSource->setOutputStream( xPipeOutput );
+
+ // connect pipe's input stream to the parser
+ xml::sax::InputSource aParserInput;
+ uno::Reference<io::XInputStream> xPipeInput( xPipe, uno::UNO_QUERY );
+ aParserInput.aInputStream = xPipeInput;
+ aParserInput.sSystemId = OUString(rMedium.GetName());
+
+ // connect parser and filter
+ uno::Reference<xml::sax::XParser> xParser( xXMLParser, uno::UNO_QUERY );
+ xParser->setDocumentHandler( xFilter );
+
+ // parse
+ uno::Reference<io::XActiveDataControl> xSourceControl( xSource, uno::UNO_QUERY );
+ xSourceControl->start();
+ sal_Bool bRetval(sal_True);
+
+ try
+ {
+ xParser->parseStream( aParserInput );
+ }
+ catch( xml::sax::SAXParseException e )
+ {
+ bRetval = sal_False;
+ }
+ catch( xml::sax::SAXException e )
+ {
+ bRetval = sal_False;
+ }
+ catch( io::IOException e )
+ {
+ bRetval = sal_False;
+ }
+
+ return bRetval;
+ }
+ return sal_False;
+}
+
+sal_Bool ScXMLImportWrapper::Export()
+{
+ uno::Reference<lang::XMultiServiceFactory> xServiceFactory =
+ utl::getProcessServiceFactory();
+ DBG_ASSERT( xServiceFactory.is(), "got no service manager" );
+ if( !xServiceFactory.is() )
+ return sal_False;
+
+ uno::Reference<uno::XInterface> xWriter =
+ xServiceFactory->createInstance(
+ OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.xml.sax.Writer" )) );
+ DBG_ASSERT( xWriter.is(), "com.sun.star.xml.sax.Writer service missing" );
+ if(!xWriter.is())
+ return sal_False;
+
+ uno::Reference<io::XOutputStream> xOut = rMedium.GetDataSink();
+ uno::Reference<io::XActiveDataSource> xSrc( xWriter, uno::UNO_QUERY );
+ xSrc->setOutputStream( xOut );
+
+ uno::Reference<xml::sax::XDocumentHandler> xHandler( xWriter, uno::UNO_QUERY );
+
+ OUString sFileName = rMedium.GetName();
+ SfxObjectShell* pObjSh = rDoc.GetDocumentShell();
+ if ( pObjSh )
+ {
+ pObjSh->UpdateDocInfoForSave(); // update information
+
+ LanguageType eDocLang = rDoc.GetLanguage();
+ uno::Reference<frame::XModel> xModel = pObjSh->GetModel();
+
+ ScXMLExport *pExp = new ScXMLExport( xModel, sFileName, xHandler, sal_False );
+
+ sal_Bool bRet = (0 == pExp->exportDoc( sXML_spreadsheet ));
+
+ delete pExp;
+
+ return bRet;
+ }
+
+ // later: give string descriptor as parameter for doc type
+
+ return sal_False;
+}
+
+
+
diff --git a/sc/source/ui/app/client.cxx b/sc/source/ui/app/client.cxx
new file mode 100644
index 000000000000..2d41381e4f1b
--- /dev/null
+++ b/sc/source/ui/app/client.cxx
@@ -0,0 +1,785 @@
+/*************************************************************************
+ *
+ * $RCSfile: client.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+#define _STATUS_HXX
+#define _SVTCTRL3_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX ***
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX ***
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX ***
+//#define _SVTREEBOX_HXX ***
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+//#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+#define _SFX_BINDINGS_HXX
+#define _SFXDISPATCH_HXX //???
+//#define _SFXMSG_HXX ***
+//#define _SFXOBJFACE_HXX ***
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+//sfxdoc.hxx
+//#define _SFXDOC_HXX
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+#define _SFX_DOCFILT_HACK_HXX
+#define _SFX_FCONTNR_HXX
+#define _SFXDOCFILE_HXX
+//#define _SFXFRAME_HXX
+//#define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+#define _SFX_INTERNO_HXX
+#define _FSETOBJSH_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//inet
+#define _INETINDP_HXX
+#define _INETIMP_HXX
+#define _INETWRAP_HXX
+#define _INETKEEP_HXX
+//#define _PLUGMGR_HXX
+#ifdef WIN
+#define _URLOBJ_HXX
+#define _INETSESS_HXX
+#define _INETMAIN_HXX
+#define _INET_HXX
+#endif
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include "segmentc.hxx"
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#ifndef _SFX_OBJSH_HXX //autogen
+#include <sfx2/objsh.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+
+//#include <socore.hxx>
+//#include <soipenv.hxx>
+/*
+#ifndef _SOREF_HXX
+#include <soref.hxx>
+#endif
+*/
+#include <sot/sotref.hxx>
+#include <so3/ipobj.hxx>
+#include <so3/persist.hxx>
+#include <so3/embobj.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdview.hxx>
+#include <svx/svdograf.hxx>
+#include <sim2/simdll.hxx>
+
+
+/*
+#include <svdmodel.hxx>
+#include <svdrwetc.hxx>
+#include <svdrwobj.hxx>
+#include <svdrwobx.hxx>
+#include <svdpage.hxx>
+#include <svdrview.hxx>
+#include <simdll.hxx>
+*/
+#include "client.hxx"
+#include "tabvwsh.hxx"
+#include "document.hxx"
+
+SEG_EOFGLOBALS()
+
+//------------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(client_01)
+
+ScClient::ScClient( ScTabViewShell* pViewShell, Window* pDraw, SdrModel* pSdrModel ) :
+ SfxInPlaceClient( pViewShell, pDraw ),
+ pModel( pSdrModel ),
+ pGrafEdit( 0 )
+{
+}
+
+#pragma SEG_FUNCDEF(client_02)
+
+__EXPORT ScClient::~ScClient()
+{
+}
+
+#pragma SEG_FUNCDEF(client_05)
+
+SdrOle2Obj* ScClient::GetDrawObj()
+{
+ SvEmbeddedObject* pMyObj = GetEmbedObj();
+ SvInfoObject* pInfoObj = GetViewShell()->GetViewFrame()->GetObjectShell()->Find( pMyObj );
+ SdrOle2Obj* pOle2Obj = NULL;
+// String aName = pMyObj->GetName()->GetName();
+
+ String aName;
+
+ if ( pInfoObj )
+ aName = pInfoObj->GetObjName();
+ else
+ DBG_ERROR( "IP-Object not found :-/" );
+
+ USHORT nPages = pModel->GetPageCount();
+ for (USHORT nPNr=0; nPNr<nPages && !pOle2Obj; nPNr++)
+ {
+ SdrPage* pPage = pModel->GetPage(nPNr);
+ SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject && !pOle2Obj)
+ {
+ if ( pObject->GetObjIdentifier() == OBJ_OLE2 )
+ {
+ if ( ((SdrOle2Obj*)pObject)->GetName() == aName )
+ pOle2Obj = (SdrOle2Obj*)pObject;
+ }
+ pObject = aIter.Next();
+ }
+ }
+ return pOle2Obj;
+}
+
+#pragma SEG_FUNCDEF(client_03)
+
+void __EXPORT ScClient::RequestObjAreaPixel( const Rectangle& rObjRect )
+{
+ SfxViewShell* pSfxViewSh = GetViewShell();
+ ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, pSfxViewSh );
+ if (!pViewSh)
+ {
+ DBG_ERROR("RequestObjAreaPixel: das ist nicht meine ViewShell");
+ SfxInPlaceClient::RequestObjAreaPixel( rObjRect );
+ return;
+ }
+
+ // Position anpassen
+
+ Rectangle aRect = rObjRect;
+ Window* pWin = pViewSh->GetActiveWin();
+ Rectangle aLogicRect( pWin->PixelToLogic( aRect.TopLeft() ),
+ pWin->PixelToLogic( aRect.GetSize() ) );
+
+ BOOL bChange = FALSE;
+ USHORT nTab = pViewSh->GetViewData()->GetTabNo();
+ SdrPage* pPage = pModel->GetPage(nTab);
+ if (pPage)
+ {
+ Size aSize = pPage->GetSize();
+ if (aLogicRect.Right() >= aSize.Width()) // rechts
+ {
+ long nDiff = aLogicRect.Right() - aSize.Width() + 1;
+ aLogicRect.Left() -= nDiff;
+ aLogicRect.Right() -= nDiff;
+ bChange = TRUE;
+ }
+ if (aLogicRect.Bottom() >= aSize.Height()) // unten
+ {
+ long nDiff = aLogicRect.Bottom() - aSize.Height() + 1;
+ aLogicRect.Top() -= nDiff;
+ aLogicRect.Bottom() -= nDiff;
+ bChange = TRUE;
+ }
+ }
+ else
+ DBG_ERROR("RequestObjAreaPixel: Page ist weg");
+
+ if (aLogicRect.Left() < 0) // links
+ {
+ aLogicRect.Right() -= aLogicRect.Left();
+ aLogicRect.Left() = 0;
+ bChange = TRUE;
+ }
+ if (aLogicRect.Top() < 0) // oben
+ {
+ aLogicRect.Bottom() -= aLogicRect.Top();
+ aLogicRect.Top() = 0;
+ bChange = TRUE;
+ }
+
+ // wieder in Pixel umrechnen
+
+ if (bChange)
+ aRect = Rectangle( pWin->LogicToPixel( aLogicRect.TopLeft() ),
+ pWin->LogicToPixel( aLogicRect.GetSize() ) );
+
+ // Basisklasse
+
+ SfxInPlaceClient::RequestObjAreaPixel( aRect );
+
+ // Position und Groesse ins Dokument uebernehmen
+
+ SdrOle2Obj* pDrawObj = GetDrawObj();
+ if (pDrawObj)
+ {
+ // das ist schon das skalierte Rechteck (wie im Draw-Model)
+
+ Rectangle aOld = pDrawObj->GetLogicRect();
+ if ( aLogicRect != aOld )
+ {
+ // #56590# Rundungsfehler vermeiden - nur, wenn mindestens 1 Pixel Unterschied
+ // (getrennt fuer Position und Groesse)
+
+ Size aOnePixel = pWin->PixelToLogic( Size(1,1) );
+ Size aLogicSize = aLogicRect.GetSize();
+ Rectangle aNew = aOld;
+ Size aNewSize = aNew.GetSize();
+
+ if ( Abs( aLogicRect.Left() - aOld.Left() ) >= aOnePixel.Width() )
+ aNew.SetPos( Point( aLogicRect.Left(), aNew.Top() ) );
+ if ( Abs( aLogicRect.Top() - aOld.Top() ) >= aOnePixel.Height() )
+ aNew.SetPos( Point( aNew.Left(), aLogicRect.Top() ) );
+
+ if ( Abs( aLogicSize.Width() - aNewSize.Width() ) >= aOnePixel.Width() )
+ aNewSize.Width() = aLogicSize.Width();
+ if ( Abs( aLogicSize.Height() - aNewSize.Height() ) >= aOnePixel.Height() )
+ aNewSize.Height() = aLogicSize.Height();
+ aNew.SetSize( aNewSize );
+
+ if ( aNew != aOld ) // veraendert nur, wenn mindestens 1 Pixel
+ pDrawObj->SetLogicRect( aNew );
+ }
+ }
+
+ //
+ // evtl. scrollen, um Objekt sichtbar zu halten
+ //
+
+ if (pDrawObj)
+ pViewSh->ScrollToObject( pDrawObj );
+}
+
+#pragma SEG_FUNCDEF(client_04)
+
+void __EXPORT ScClient::ViewChanged( USHORT nAspect )
+{
+ SfxInPlaceClient::ViewChanged( nAspect );
+
+ SvEmbeddedObject* pObj = GetEmbedObj();
+ Rectangle aObjVisArea = OutputDevice::LogicToLogic( pObj->GetVisArea(),
+ pObj->GetMapUnit(), MAP_100TH_MM );
+ Size aVisSize = aObjVisArea.GetSize();
+
+ // Groesse ins Dokument uebernehmen
+
+ SdrOle2Obj* pDrawObj = GetDrawObj();
+ if (pDrawObj)
+ {
+ Rectangle aLogicRect = pDrawObj->GetLogicRect();
+
+// SvClientData* pClientData = GetEnv();
+ SvClientData* pClientData = GetClientData();
+ if (pClientData)
+ {
+ Fraction aFractX = pClientData->GetScaleWidth();
+ Fraction aFractY = pClientData->GetScaleHeight();
+ aFractX *= aVisSize.Width();
+ aFractY *= aVisSize.Height();
+ aVisSize = Size( (long) aFractX, (long) aFractY ); // skaliert fuer Draw-Model
+
+ // pClientData->SetObjArea vor pDrawObj->SetLogicRect, damit keine
+ // falschen Skalierungen ausgerechnet werden:
+
+ Rectangle aObjArea = aLogicRect;
+ aObjArea.SetSize( aObjVisArea.GetSize() ); // Dokument-Groesse vom Server
+ pClientData->SetObjArea( aObjArea );
+ }
+
+ // Groesse im Draw-Model setzen, dabei wird Scale neu eingestellt
+
+ if ( aLogicRect.GetSize() != aVisSize )
+ {
+ aLogicRect.SetSize( aVisSize );
+ pDrawObj->SetLogicRect( aLogicRect );
+ }
+ }
+}
+
+#pragma SEG_FUNCDEF(client_08)
+
+void __EXPORT ScClient::MakeViewData()
+{
+ SfxInPlaceClient::MakeViewData();
+
+ SvClientData* pClientData = GetClientData();
+ SdrOle2Obj* pDrawObj = GetDrawObj();
+ if (pClientData && pDrawObj)
+ {
+ // Groesse und Scale wie in tabvwshb
+
+ Rectangle aRect = pDrawObj->GetLogicRect();
+ Size aDrawSize = aRect.GetSize();
+ Size aOleSize = GetEmbedObj()->GetVisArea().GetSize();
+
+ // sichtbarer Ausschnitt wird nur inplace veraendert!
+ aRect.SetSize( aOleSize );
+ pClientData->SetObjArea( aRect );
+
+ Fraction aScaleWidth (aDrawSize.Width(), aOleSize.Width() );
+ Fraction aScaleHeight(aDrawSize.Height(), aOleSize.Height() );
+ aScaleWidth.ReduceInaccurate(10); // kompatibel zum SdrOle2Obj
+ aScaleHeight.ReduceInaccurate(10);
+ pClientData->SetSizeScale(aScaleWidth,aScaleHeight);
+ }
+}
+
+#pragma SEG_FUNCDEF(client_06)
+
+void __EXPORT ScClient::MakeVisible()
+{
+ SdrOle2Obj* pDrawObj = GetDrawObj();
+ if (pDrawObj)
+ {
+ SfxViewShell* pSfxViewSh = GetViewShell();
+ ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, pSfxViewSh );
+ if (pViewSh)
+ pViewSh->ScrollToObject( pDrawObj );
+ }
+}
+
+#pragma SEG_FUNCDEF(client_0a)
+
+// Mit Optimierung gibt es Abstuerze beim Deaktivieren von Grafik-Image-Objekten
+
+#ifdef WNT
+#pragma optimize ( "", off )
+#endif
+
+void lcl_ReplaceObject( SdrOle2Obj* pGrafOle, SdrGrafObj* pGrafObj,
+ SfxViewShell* pSfxViewSh )
+{
+ // das Ole-Objekt wieder durch das Grafikobjekt ersetzen
+
+ ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, pSfxViewSh );
+ if (pViewSh)
+ {
+ SdrView* pSdrView = pViewSh->GetSdrView();
+ SdrPageView* pPV = pSdrView->GetPageViewPvNum(0);
+
+ if ( pGrafOle )
+ {
+ SvInPlaceObjectRef aIPObj = pGrafOle->GetObjRef();
+ Rectangle aRect = pGrafOle->GetLogicRect();
+
+ // #41302# ReplaceObject ohne zu markieren, weil's aus dem
+ // MarkListHasChanged heraus gerufen wird
+ pSdrView->ReplaceObject( pGrafOle, *pPV, pGrafObj, FALSE );
+ pSdrView->EndUndo();
+ pGrafObj->SetLogicRect(aRect);
+ pGrafObj->SetGraphic(SimDLL::GetGraphic(aIPObj));
+ }
+ else // zwischendurch geloescht ?
+ {
+ DBG_ERROR("Grafik-Ole-Objekt ist weg");
+
+ pSdrView->EndUndo(); // damit das Undo nicht offen bleibt
+ //! anderen Text fuer Undo setzen ???
+ }
+ }
+}
+
+#ifdef WNT
+#pragma optimize ( "", on )
+#endif
+
+#pragma SEG_FUNCDEF(client_09)
+
+void __EXPORT ScClient::UIActivate( BOOL bActivate )
+{
+ SvInPlaceClientRef aIPClient( this ); // nicht aus versehen zwischendrin loeschen
+
+ SfxInPlaceClient::UIActivate(bActivate);
+
+ if ( !bActivate && pGrafEdit ) // wurde eine Grafik bearbeitet?
+ {
+ SdrOle2Obj* pGrafOle = GetDrawObj();
+ SdrGrafObj* pGrafObj = pGrafEdit;
+ pGrafEdit = NULL; // vor lcl_ReplaceObject
+
+ lcl_ReplaceObject( pGrafOle, pGrafObj, GetViewShell() );
+ }
+
+ if ( !bActivate ) // Chart-Daten-Hervorhebung aufheben
+ {
+ SfxViewShell* pSfxViewSh = GetViewShell();
+ ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, pSfxViewSh );
+ if (pViewSh)
+ {
+ pViewSh->ClearHighlightRanges();
+
+ // Move an der ViewShell soll eigentlich vom Sfx gerufen werden, wenn sich
+ // das Frame-Window wegen unterschiedlicher Toolboxen o.ae. verschiebt
+ // (um nicht aus Versehen z.B. Zeichenobjekte zu verschieben, #56515#).
+ // Dieser Mechanismus funktioniert aber momentan nicht, darum hier der Aufruf
+ // per Hand (im Move wird verglichen, ob die Position wirklich geaendert ist).
+ pViewSh->ForceMove();
+ }
+ }
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.44 2000/09/17 14:08:53 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.43 2000/08/31 16:38:17 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.42 2000/02/11 12:21:23 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.41 1999/04/19 17:04:18 NN
+ #65014# Objekte/Charts koennen auch gruppiert vorkommen
+
+
+ Rev 1.40 19 Apr 1999 19:04:18 NN
+ #65014# Objekte/Charts koennen auch gruppiert vorkommen
+
+ Rev 1.39 26 Mar 1999 18:12:16 HJS
+ sim ist tot
+
+ Rev 1.38 03 Mar 1999 18:08:40 NN
+ #62107# GetDrawObj: Name vom SdrOle2Obj statt vom IPObj
+
+ Rev 1.37 27 Nov 1998 11:30:16 NN
+ #41302#/#56515# ReplaceObject ohne bMark, ForceMove beim Deaktivieren
+
+ Rev 1.36 16 Oct 1998 21:09:12 NN
+ #57916# ClearHighlightRanges beim Deaktivieren
+
+ Rev 1.35 13 Oct 1998 16:00:34 NN
+ #56590# RequestObjAreaPixel: Rundungsfehler bei SetLogicRect vermeiden
+
+ Rev 1.34 05 Dec 1997 20:08:20 ANK
+ Includes geaendert
+
+ Rev 1.33 04 Sep 1997 20:29:48 RG
+ change header
+
+ Rev 1.32 29 Apr 1997 17:25:50 HJS
+ includes/defines
+
+ Rev 1.31 10 Jan 1997 13:45:44 NN
+ lcl_ReplaceObject ohne Optimierung
+
+ Rev 1.30 04 Dec 1996 14:50:04 NN
+ Image-Objekt wieder durch Grafik ersetzen jetzt in UIActivate
+
+ Rev 1.29 25 Oct 1996 11:39:28 TRI
+ socore.hxx
+
+ Rev 1.28 23 Aug 1996 11:31:40 NF
+ clooks
+
+ Rev 1.27 22 Aug 1996 10:58:20 NF
+ clooks
+
+ Rev 1.26 15 Aug 1996 20:24:50 HJS
+ define raus
+
+ Rev 1.25 15 Aug 1996 19:12:32 HJS
+ clooks
+
+ Rev 1.24 12 Aug 1996 11:37:04 NF
+ clooks
+
+ Rev 1.23 06 Aug 1996 09:10:54 NF
+ clooks
+
+ Rev 1.22 01 Aug 1996 14:24:08 NF
+ clooks
+
+ Rev 1.21 03 Jul 1996 14:51:32 NN
+ ScrollToObject an der View statt DoScroll
+
+ Rev 1.20 30 May 1996 14:53:24 NF
+ CLOOKS ... !
+
+ Rev 1.19 18 Apr 1996 17:15:24 NN
+ 313: MakeViewData
+
+ Rev 1.18 18 Apr 1996 15:43:32 NN
+ 313: MakeVisible
+
+ Rev 1.17 27 Mar 1996 14:58:04 NN
+ RequestObjAreaPixel: Bereich auf Seite anpassen, Scrollen wenn noetig
+
+ Rev 1.16 21 Mar 1996 11:43:18 ER
+ SV311 soref changes
+
+ Rev 1.15 14 Mar 1996 14:42:30 NN
+ #25327# ViewChanged: erst SetObjArea, dann SetLogicRect (wegen Scale)
+
+ Rev 1.14 29 Feb 1996 18:59:40 NF
+ CLOOKS
+
+ Rev 1.13 23 Feb 1996 12:18:40 NF
+ CLOOKS
+
+ Rev 1.12 16 Feb 1996 14:48:10 MO
+ 306er SO2-Aenderungen
+
+ Rev 1.11 26 Jan 1996 09:57:10 NN
+ RequestObjAreaPixel: statt PixelToLogic mit Rechteck
+ Position und Groesse getrennt umrechnen
+
+ Rev 1.10 22 Jan 1996 16:24:02 NN
+ #24481# Scale beruecksichtigen
+
+ Rev 1.9 18 Nov 1995 18:21:34 NN
+ pDrawObject nicht mehr merken, stattdessen suchen
+
+ Rev 1.8 08 Nov 1995 13:04:04 MO
+ 301-Aenderungen
+
+ Rev 1.7 26 Sep 1995 18:10:40 JN
+ DrawObject merken
+
+ Rev 1.6 14 Sep 1995 12:01:44 NN
+ soipenv.hxx
+
+ Rev 1.5 06 Sep 1995 09:44:10 NN
+ bei ViewChanged Position behalten
+
+ Rev 1.4 04 Sep 1995 14:09:00 NN
+ SetObjArea am Environment statt SetObjSize (2.55)
+
+ Rev 1.3 09 Aug 1995 13:12:02 NN
+ bGrafEdit-Flag
+
+ Rev 1.2 31 Jul 1995 10:26:44 NN
+ Container Anpassung in RequestObjAreaPixel
+
+ Rev 1.1 13 Jul 1995 13:10:38 NN
+ SdrOle2Obj als Member fuer Groessenaenderungen
+
+ Rev 1.0 13 Jul 1995 12:19:30 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
new file mode 100644
index 000000000000..e89e2afaace0
--- /dev/null
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -0,0 +1,3011 @@
+/*************************************************************************
+ *
+ * $RCSfile: inputhdl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/algitem.hxx>
+#include <svx/adjitem.hxx>
+#include <svx/colritem.hxx>
+#include <svx/editobj.hxx>
+#include <svx/editstat.hxx>
+#include <svx/editview.hxx>
+#include <svx/escpitem.hxx>
+#include <svx/langitem.hxx>
+#include <svx/svxacorr.hxx>
+#include <svx/wghtitem.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/docfile.hxx>
+#include <offmgr/app.hxx>
+#include <svtools/zforlist.hxx>
+#include <vcl/sound.hxx>
+#include <vcl/system.hxx>
+
+#ifndef _SV_HELP_HXX //autogen
+#include <vcl/help.hxx>
+#endif
+
+#ifndef _SV_CURSOR_HXX //autogen
+#include <vcl/cursor.hxx>
+#endif
+
+
+#include "inputwin.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+//#include "appmain.hxx"
+#include "scmod.hxx"
+#include "uiitems.hxx"
+#include "global.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "patattr.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "docpool.hxx"
+#include "editutil.hxx"
+#include "collect.hxx"
+#include "appoptio.hxx"
+#include "docoptio.hxx"
+#include "validat.hxx"
+#include "userlist.hxx"
+#include "rfindlst.hxx"
+#include "inputopt.hxx"
+#include "cell.hxx" // fuer Formel-Preview
+#include "compiler.hxx" // fuer Formel-Preview
+
+#define _INPUTHDL_CXX
+#include "inputhdl.hxx"
+
+// max. Ranges im RangeFinder
+#define RANGEFIND_MAX 32
+
+// STATIC DATA -----------------------------------------------------------
+
+BOOL ScInputHandler::bOptLoaded = FALSE; // App-Optionen ausgewertet
+BOOL ScInputHandler::bAutoComplete = FALSE; // wird in KeyInput gesetzt
+
+// delimiters (in addition to ScEditUtil) needed for range finder:
+// only characters that are allowed in formulas next to references
+// and the quotation mark (so string constants can be skipped)
+
+static const sal_Char __FAR_DATA pMinDelimiters[] = " !\"";
+
+extern USHORT nEditAdjust; //! Member an ViewData
+
+//==================================================================
+
+void ScInputHandler::InitRangeFinder( const String& rFormula )
+{
+ DeleteRangeFinder();
+
+ if ( !pActiveViewSh || !SC_MOD()->GetInputOptions().GetRangeFinder() )
+ return;
+ ScDocShell* pDocSh = pActiveViewSh->GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+
+// String aDelimiters = pEngine->GetWordDelimiters();
+ String aDelimiters = ScEditUtil::ModifyDelimiters(
+ String::CreateFromAscii( pMinDelimiters ) );
+
+ xub_StrLen nColon = aDelimiters.Search(':');
+ if ( nColon != STRING_NOTFOUND )
+ aDelimiters.Erase( nColon, 1 ); // Delimiter ohne Doppelpunkt
+ xub_StrLen nDot = aDelimiters.Search('.');
+ if ( nDot != STRING_NOTFOUND )
+ aDelimiters.Erase( nDot, 1 ); // Delimiter ohne Punkt
+
+ const sal_Unicode* pChar = rFormula.GetBuffer();
+ xub_StrLen nLen = rFormula.Len();
+ xub_StrLen nPos = 0;
+ xub_StrLen nStart = 0;
+ USHORT nCount = 0;
+ ScRange aRange;
+ while ( nPos < nLen && nCount < RANGEFIND_MAX )
+ {
+ // Trenner ueberlesen
+ while ( nPos<nLen && ScGlobal::UnicodeStrChr( aDelimiters.GetBuffer(), pChar[nPos] ) )
+ {
+ if ( pChar[nPos] == '"' ) // String
+ {
+ ++nPos;
+ while (nPos<nLen && pChar[nPos] != '"') // bis zum Ende ueberlesen
+ ++nPos;
+ }
+ ++nPos; // Trennzeichen oder schliessender Quote
+ }
+
+ // Text zwischen Trennern
+ nStart = nPos;
+ while ( nPos<nLen && !ScGlobal::UnicodeStrChr( aDelimiters.GetBuffer(), pChar[nPos] ) )
+ ++nPos;
+
+ if ( nPos > nStart )
+ {
+ String aTest = rFormula.Copy( nStart, nPos-nStart );
+ USHORT nFlags = aRange.ParseAny( aTest, pDoc );
+ if ( nFlags & SCA_VALID )
+ {
+ // Tabelle setzen, wenn nicht angegeben
+ if ( (nFlags & SCA_TAB_3D) == 0 )
+ aRange.aStart.SetTab( pActiveViewSh->GetViewData()->GetTabNo() );
+ if ( (nFlags & SCA_TAB2_3D) == 0 )
+ aRange.aEnd.SetTab( aRange.aStart.Tab() );
+
+ if (!nCount)
+ {
+ pEngine->SetUpdateMode( FALSE );
+ pRangeFindList = new ScRangeFindList( pDocSh->GetTitle() );
+ }
+
+ ScRangeFindData* pNew = new ScRangeFindData( aRange, nFlags, nStart, nPos );
+ pRangeFindList->Insert( pNew );
+
+ ESelection aSel( 0, nStart, 0, nPos );
+ SfxItemSet aSet( pEngine->GetEmptyItemSet() );
+ aSet.Put( SvxColorItem( Color( ScRangeFindList::GetColorName( nCount ) ),
+ EE_CHAR_COLOR ) );
+ pEngine->QuickSetAttribs( aSet, aSel );
+ ++nCount;
+ }
+ }
+
+ // letzten Trenner nicht ueberlesen, koennte ja ein Quote sein (?)
+ }
+
+ if (nCount)
+ {
+ pEngine->SetUpdateMode( TRUE );
+
+ pDocSh->Broadcast( SfxSimpleHint( SC_HINT_SHOWRANGEFINDER ) );
+ }
+}
+
+void lcl_Replace( EditView* pView, const String& rNewStr, const ESelection& rOldSel )
+{
+ if ( pView )
+ {
+ ESelection aOldSel = pView->GetSelection();
+ if (aOldSel.HasRange())
+ pView->SetSelection( ESelection( aOldSel.nEndPara, aOldSel.nEndPos,
+ aOldSel.nEndPara, aOldSel.nEndPos ) );
+
+ EditEngine* pEngine = pView->GetEditEngine();
+ pEngine->QuickInsertText( rNewStr, rOldSel );
+
+ // Dummy-InsertText fuer Update und Paint
+ // dafuer muss oben die Selektion aufgehoben werden (vor QuickInsertText)
+ pView->InsertText( EMPTY_STRING, FALSE );
+
+ xub_StrLen nLen = pEngine->GetTextLen(0);
+ ESelection aSel( 0, nLen, 0, nLen );
+ pView->SetSelection( aSel ); // Cursor ans Ende
+ }
+}
+
+void ScInputHandler::UpdateRange( USHORT nIndex, const ScRange& rNew )
+{
+ ScTabViewShell* pDocView = pRefViewSh ? pRefViewSh : pActiveViewSh;
+ if ( pDocView && pRangeFindList && nIndex < pRangeFindList->Count() )
+ {
+ ScRangeFindData* pData = pRangeFindList->GetObject( nIndex );
+ xub_StrLen nOldStart = pData->nSelStart;
+ xub_StrLen nOldEnd = pData->nSelEnd;
+
+ ScRange aJustified = rNew;
+ aJustified.Justify(); // Ref in der Formel immer richtigherum anzeigen
+ String aNewStr;
+ aJustified.Format( aNewStr, pData->nFlags, pDocView->GetViewData()->GetDocument() );
+ ESelection aOldSel( 0, nOldStart, 0, nOldEnd );
+
+ lcl_Replace( pTopView, aNewStr, aOldSel );
+ lcl_Replace( pTableView, aNewStr, aOldSel );
+
+ bInRangeUpdate = TRUE;
+ DataChanged();
+ bInRangeUpdate = FALSE;
+
+ long nDiff = aNewStr.Len() - (long)(nOldEnd-nOldStart);
+
+ pData->aRef = rNew;
+ pData->nSelEnd = (xub_StrLen)(pData->nSelEnd + nDiff);
+
+ USHORT nCount = (USHORT) pRangeFindList->Count();
+ for (USHORT i=nIndex+1; i<nCount; i++)
+ {
+ ScRangeFindData* pNext = pRangeFindList->GetObject( i );
+ pNext->nSelStart = (xub_StrLen)(pNext->nSelStart + nDiff);
+ pNext->nSelEnd = (xub_StrLen)(pNext->nSelEnd + nDiff);
+ }
+ }
+ else
+ DBG_ERROR("UpdateRange: da fehlt was");
+}
+
+void ScInputHandler::DeleteRangeFinder()
+{
+ ScTabViewShell* pPaintView = pRefViewSh ? pRefViewSh : pActiveViewSh;
+ if ( pRangeFindList && pPaintView )
+ {
+ ScDocShell* pDocSh = pActiveViewSh->GetViewData()->GetDocShell();
+ pRangeFindList->SetHidden(TRUE);
+ pDocSh->Broadcast( SfxSimpleHint( SC_HINT_SHOWRANGEFINDER ) ); // wegnehmen
+ DELETEZ(pRangeFindList);
+ }
+}
+
+//==================================================================
+
+inline String GetEditText(EditEngine* pEng)
+{
+ return ScEditUtil::GetSpaceDelimitedString(*pEng);
+}
+
+void lcl_RemoveTabs(String& rStr)
+{
+ xub_StrLen nPos;
+ while ( (nPos=rStr.Search('\t')) != STRING_NOTFOUND )
+ rStr.SetChar( nPos, ' ' );
+}
+
+void lcl_RemoveLineEnd(String& rStr)
+{
+ rStr.ConvertLineEnd(LINEEND_LF);
+ xub_StrLen nPos;
+ while ( (nPos=rStr.Search('\n')) != STRING_NOTFOUND )
+ rStr.SetChar( nPos, ' ' );
+}
+
+//==================================================================
+
+ScInputHandler::ScInputHandler()
+ : eMode( SC_INPUT_NONE ),
+ bModified( FALSE ),
+ bFormulaMode( FALSE ),
+ bSelIsRef( FALSE ),
+ bInRangeUpdate( FALSE ),
+ pInputWin( NULL ),
+ pRefViewSh( NULL ),
+ pLastPattern( NULL ),
+ pLastState( NULL ),
+ bLastIsSymbol( FALSE ),
+ bProtected( FALSE ),
+ bTextValid( TRUE ),
+ bCellHasPercentFormat( FALSE ),
+ nValidation( 0 ),
+ nAttrAdjust( SVX_HOR_JUSTIFY_STANDARD ),
+ aScaleX( 1,1 ),
+ aScaleY( 1,1 ),
+ pTopView( NULL ),
+ pTableView( NULL ),
+ pEngine( NULL ),
+ pEditDefaults( NULL ),
+ pDelayTimer( NULL ),
+ pColumnData( NULL ),
+ pFormulaData( NULL ),
+ nTipVisible( 0 ),
+ nAutoPos( SCPOS_INVALID ),
+ bUseTab( FALSE ),
+ nFormSelStart( 0 ),
+ nFormSelEnd( 0 ),
+ nAutoPar( 0 ),
+ pRangeFindList( NULL ),
+ bParenthesisShown( FALSE ),
+ bCreatingFuncView( FALSE ),
+ bInEnterHandler( FALSE )
+{
+ pActiveViewSh = PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+
+ // Bindings (nur noch fuer Invalidate benutzt) werden bei Bedarf aktuell geholt
+}
+
+__EXPORT ScInputHandler::~ScInputHandler()
+{
+ // Wenn dies der Applikations-InputHandler ist, wird der dtor erst nach SfxApplication::Main
+ // gerufen, darf sich also auf keine Sfx-Funktionen mehr verlassen
+
+ if ( !SFX_APP()->IsDowning() ) // inplace
+ EnterHandler(); // Eingabe noch abschliessen
+
+ if (SC_MOD()->GetRefInputHdl()==this)
+ SC_MOD()->SetRefInputHdl(NULL);
+
+ delete pRangeFindList;
+ delete pEditDefaults;
+ delete pEngine;
+ delete pLastState;
+ delete pDelayTimer;
+ delete pColumnData;
+ delete pFormulaData;
+}
+
+void ScInputHandler::SetRefScale( const Fraction& rX, const Fraction& rY )
+{
+ if ( rX != aScaleX || rY != aScaleY )
+ {
+ aScaleX = rX;
+ aScaleY = rY;
+ if (pEngine)
+ {
+ MapMode aMode( MAP_100TH_MM, Point(), aScaleX, aScaleY );
+ pEngine->SetRefMapMode( aMode );
+ }
+ }
+}
+
+void ScInputHandler::ImplCreateEditEngine()
+{
+ if ( !pEngine )
+ {
+ if ( pActiveViewSh )
+ {
+ const ScDocument* pDoc = pActiveViewSh->GetViewData()->GetDocShell()->GetDocument();
+ pEngine = new ScFieldEditEngine( pDoc->GetEnginePool(), pDoc->GetEditPool() );
+ }
+ else
+ pEngine = new ScFieldEditEngine( EditEngine::CreatePool(), NULL, TRUE );
+ pEngine->SetWordDelimiters( ScEditUtil::ModifyDelimiters( pEngine->GetWordDelimiters() ) );
+ MapMode aMode( MAP_100TH_MM, Point(), aScaleX, aScaleY );
+ pEngine->SetRefMapMode( aMode );
+ pEngine->SetPaperSize( Size( 1000,300 ) );
+ pEditDefaults = new SfxItemSet( pEngine->GetEmptyItemSet() );
+
+ pEngine->SetControlWord( pEngine->GetControlWord() | EE_CNTRL_AUTOCORRECT );
+ }
+}
+
+void ScInputHandler::UpdateAutoCorrFlag()
+{
+ ULONG nCntrl = pEngine->GetControlWord();
+ ULONG nOld = nCntrl;
+
+ // don't use pLastPattern here (may be invalid because of AutoStyle)
+
+ BOOL bDisable = bLastIsSymbol || bFormulaMode;
+ if ( bDisable )
+ nCntrl &= ~EE_CNTRL_AUTOCORRECT;
+ else
+ nCntrl |= EE_CNTRL_AUTOCORRECT;
+
+ if ( nCntrl != nOld )
+ pEngine->SetControlWord(nCntrl);
+}
+
+void ScInputHandler::UpdateSpellSettings( BOOL bFromStartTab )
+{
+ if ( pActiveViewSh )
+ {
+ ScViewData* pViewData = pActiveViewSh->GetViewData();
+ BOOL bOnlineSpell = pViewData->GetDocument()->GetDocOptions().IsAutoSpell();
+ BOOL bHideSpell = pViewData->GetOptions().IsHideAutoSpell();
+
+ // language must be set before spelling is started
+
+ USHORT nLanguage;
+ if ( pLastPattern )
+ nLanguage = ((const SvxLanguageItem&)
+ pLastPattern->GetItem(ATTR_FONT_LANGUAGE)).GetValue();
+ else if ( pActiveViewSh )
+ nLanguage = pActiveViewSh->GetViewData()->GetDocShell()->GetDocument()->GetLanguage();
+ else
+ nLanguage = LANGUAGE_SYSTEM;
+ if ( nLanguage == LANGUAGE_SYSTEM )
+ nLanguage = System::GetLanguage(); // never use SYSTEM for spelling
+ pEngine->SetDefaultLanguage( nLanguage );
+
+ // if called for changed options, update flags only if already editing
+ // if called from StartTable, always update flags
+
+ if ( bFromStartTab || eMode != SC_INPUT_NONE )
+ {
+ ULONG nCntrl = pEngine->GetControlWord();
+ ULONG nOld = nCntrl;
+ if( bHideSpell )
+ nCntrl |= EE_CNTRL_NOREDLINES;
+ else
+ nCntrl &= ~EE_CNTRL_NOREDLINES;
+ if( bOnlineSpell )
+ nCntrl |= EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ // kein AutoCorrect auf Symbol-Font (EditEngine wertet Default nicht aus)
+ if ( pLastPattern && pLastPattern->IsSymbolFont() )
+ nCntrl &= ~EE_CNTRL_AUTOCORRECT;
+ else
+ nCntrl |= EE_CNTRL_AUTOCORRECT;
+ if ( nCntrl != nOld )
+ pEngine->SetControlWord(nCntrl);
+ }
+
+ // language is set separately, so the speller is needed only if online
+ // spelling is active
+
+ if ( bOnlineSpell )
+ pEngine->SetSpeller( OFF_APP()->GetSpellChecker() );
+ }
+}
+
+//
+// Funktionen/Bereichsnamen etc. als Tip-Hilfe
+//
+
+#define SC_STRTYPE_FUNCTIONS 1
+// die anderen Typen sind in ScDocument::GetFormulaEntries festgelegt
+
+void ScInputHandler::GetFormulaData()
+{
+ if ( pActiveViewSh )
+ {
+ ScDocument* pDoc = pActiveViewSh->GetViewData()->GetDocShell()->GetDocument();
+
+ if ( pFormulaData )
+ pFormulaData->FreeAll();
+ else
+ pFormulaData = new TypedStrCollection;
+
+ // MRU-Funktionen aus dem Funktions-Autopiloten
+ // wie in ScPosWnd::FillFunctions (inputwin.cxx)
+
+ const ScAppOptions& rOpt = SC_MOD()->GetAppOptions();
+ USHORT nMRUCount = rOpt.GetLRUFuncListCount();
+ const USHORT* pMRUList = rOpt.GetLRUFuncList();
+ if (pMRUList)
+ {
+ const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList();
+ ULONG nListCount = pFuncList->GetCount();
+ ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
+ for (USHORT i=0; i<nMRUCount; i++)
+ {
+ USHORT nId = pMRUList[i];
+ for (ULONG j=0; j<nListCount; j++)
+ {
+ const ScFuncDesc* pDesc = pFuncList->GetFunction( j );
+ if ( pDesc->nFIndex == nId && pDesc->pFuncName )
+ {
+ String aEntry = *pDesc->pFuncName;
+ aEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "()" ));
+ TypedStrData* pData = new TypedStrData( aEntry, 0.0, SC_STRTYPE_FUNCTIONS );
+ if (!pFormulaData->Insert(pData))
+ delete pData;
+ break; // nicht weitersuchen
+ }
+ }
+ }
+ }
+
+ pDoc->GetFormulaEntries( *pFormulaData );
+ }
+}
+
+void ScInputHandler::HideTip()
+{
+ if ( nTipVisible )
+ {
+ Help::HideTip( nTipVisible );
+ nTipVisible = 0;
+ }
+ aManualTip.Erase();
+}
+
+void ScInputHandler::ShowTip( const String& rText )
+{
+ // aManualTip muss hinterher von aussen gesetzt werden
+ HideTip();
+
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if (pActiveView)
+ {
+ Point aPos;
+ Window* pWin = pActiveView->GetWindow();
+ Cursor* pCur = pActiveView->GetCursor();
+ if (pCur)
+ aPos = pWin->LogicToPixel( pCur->GetPos() );
+ aPos = pWin->OutputToScreenPixel( aPos );
+ Rectangle aRect( aPos, aPos );
+
+ USHORT nAlign = QUICKHELP_LEFT|QUICKHELP_BOTTOM;
+ nTipVisible = Help::ShowTip(pWin, aRect, rText, nAlign);
+ }
+}
+
+void ScInputHandler::UseFormulaData()
+{
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+
+ // Formeln duerfen nur 1 Absatz haben
+ if ( pActiveView && pFormulaData && pEngine->GetParagraphCount() == 1 )
+ {
+ String aTotal = pEngine->GetText( (USHORT) 0 );
+ ESelection aSel = pActiveView->GetSelection();
+ aSel.Adjust();
+
+ // #59348# Durch Differenzen zwischen Tabelle und Eingabezeile
+ // (z.B. Clipboard mit Zeilenumbruechen) kann es sein, dass die Selektion
+ // nicht mehr zur EditEngine passt. Dann halt kommentarlos abbrechen:
+
+ if ( aSel.nEndPos > aTotal.Len() )
+ return;
+
+ // steht der Cursor am Ende eines Wortes?
+
+ if ( aSel.nEndPos > 0 && (
+ aSel.nEndPos == aTotal.Len() ||
+ pEngine->GetWordDelimiters().Search( aTotal.GetChar(aSel.nEndPos) ) != STRING_NOTFOUND ) )
+ {
+ String aText = pEngine->GetWord( 0, aSel.nEndPos-1 );
+ if (aText.Len())
+ {
+ String aNew;
+ nAutoPos = SCPOS_INVALID; // nix
+ if ( pFormulaData->FindText( aText, aNew, nAutoPos, FALSE ) )
+ {
+ ShowTip( aNew ); // als QuickHelp anzeigen
+ aAutoSearch = aText; // zum Weitersuchen - nAutoPos ist gesetzt
+ }
+ }
+ }
+ }
+}
+
+void ScInputHandler::NextFormulaEntry( BOOL bBack )
+{
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if ( pActiveView && pFormulaData )
+ {
+ String aNew;
+ if ( pFormulaData->FindText( aAutoSearch, aNew, nAutoPos, bBack ) )
+ ShowTip( aNew ); // als QuickHelp anzeigen
+ }
+
+ // bei Tab wird vorher immer HideCursor gerufen
+
+ if (pActiveView)
+ pActiveView->ShowCursor();
+}
+
+void lcl_CompleteFunction( EditView* pView, const String& rInsert, BOOL& rParInserted )
+{
+ if (pView)
+ {
+ ESelection aSel = pView->GetSelection();
+ --aSel.nStartPos;
+ --aSel.nEndPos;
+ pView->SetSelection(aSel);
+ pView->SelectCurrentWord();
+
+ String aInsStr = rInsert;
+ xub_StrLen nInsLen = aInsStr.Len();
+ BOOL bDoParen = ( nInsLen > 1 && aInsStr.GetChar(nInsLen-2) == '('
+ && aInsStr.GetChar(nInsLen-1) == ')' );
+ if ( bDoParen )
+ {
+ // Klammern hinter Funktionsnamen nicht einfuegen, wenn direkt dahinter
+ // schon eine Klammer steht (z.B. wenn der Funktionsname geaendert wurde,
+ // #39393#).
+
+ ESelection aWordSel = pView->GetSelection();
+ String aOld = pView->GetEditEngine()->GetText((USHORT)0);
+ sal_Unicode cNext = aOld.GetChar(aWordSel.nEndPos);
+ if ( cNext == '(' )
+ {
+ bDoParen = FALSE;
+ aInsStr.Erase( nInsLen - 2 ); // Klammern weglassen
+ }
+ }
+
+ pView->InsertText( aInsStr, FALSE );
+
+ if ( bDoParen ) // Cursor zwischen die Klammern setzen
+ {
+ aSel = pView->GetSelection();
+ --aSel.nStartPos;
+ --aSel.nEndPos;
+ pView->SetSelection(aSel);
+
+ rParInserted = TRUE;
+ }
+ }
+}
+
+void ScInputHandler::PasteFunctionData()
+{
+ if ( pFormulaData && nAutoPos != SCPOS_INVALID )
+ {
+ TypedStrData* pData = (*pFormulaData)[nAutoPos];
+ if (pData)
+ {
+ String aInsert = pData->GetString();
+ BOOL bParInserted = FALSE;
+
+ DataChanging(); // kann nicht neu sein
+ lcl_CompleteFunction( pTopView, aInsert, bParInserted );
+ lcl_CompleteFunction( pTableView, aInsert, bParInserted );
+ DataChanged();
+
+ if (bParInserted)
+ AutoParAdded();
+ }
+ }
+
+ HideTip();
+
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if (pActiveView)
+ pActiveView->ShowCursor();
+}
+
+//
+// Selektion berechnen und als Tip-Hilfe anzeigen
+//
+
+String lcl_Calculate( const String& rFormula, ScDocument* pDoc, const ScAddress &rPos )
+{
+ //! mit ScFormulaDlg::CalcValue zusammenfassen und ans Dokument verschieben !!!!
+ //! (Anfuehrungszeichen bei Strings werden nur hier eingefuegt)
+
+ String aValue;
+
+ if (rFormula.Len())
+ {
+ ScFormulaCell* pCell = new ScFormulaCell( pDoc, rPos, rFormula );
+
+ // #35521# HACK! um bei ColRowNames kein #REF! zu bekommen,
+ // wenn ein Name eigentlich als Bereich in die Gesamt-Formel
+ // eingefuegt wird, bei der Einzeldarstellung aber als
+ // single-Zellbezug interpretiert wird
+ BOOL bColRowName = pCell->HasColRowName();
+ if ( bColRowName )
+ {
+ // ColRowName im RPN-Code?
+ if ( pCell->GetCode()->GetCodeLen() <= 1 )
+ { // ==1: einzelner ist als Parameter immer Bereich
+ // ==0: es waere vielleicht einer, wenn..
+ String aBraced( '(' );
+ aBraced += rFormula;
+ aBraced += ')';
+ delete pCell;
+ pCell = new ScFormulaCell( pDoc, rPos, aBraced );
+ }
+ else
+ bColRowName = FALSE;
+ }
+
+ USHORT nErrCode = pCell->GetErrCode();
+ if ( nErrCode == 0 )
+ {
+ SvNumberFormatter& aFormatter = *(pDoc->GetFormatTable());
+ Color* pColor;
+ if ( pCell->IsValue() )
+ {
+ double n = pCell->GetValue();
+ ULONG nFormat = aFormatter.GetStandardFormat( n, 0,
+ pCell->GetFormatType(), ScGlobal::eLnge );
+ aFormatter.GetInputLineString( n, nFormat, aValue );
+ //! display OutputString but insert InputLineString
+ }
+ else
+ {
+ String aStr;
+
+ pCell->GetString( aStr );
+ ULONG nFormat = aFormatter.GetStandardFormat(
+ pCell->GetFormatType(), ScGlobal::eLnge);
+ aFormatter.GetOutputString( aStr, nFormat,
+ aValue, &pColor );
+
+ aValue.Insert('"',0); // in Anfuehrungszeichen
+ aValue+='"';
+ //! Anfuehrungszeichen im String escapen ????
+ }
+
+ ScRange aTestRange;
+ if ( bColRowName || (aTestRange.Parse(rFormula) & SCA_VALID) )
+ aValue.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " ..." )); // Bereich
+ }
+ else
+ aValue = ScGlobal::GetErrorString(nErrCode);
+ delete pCell;
+ }
+
+ return aValue;
+}
+
+void ScInputHandler::FormulaPreview()
+{
+ String aValue;
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if ( pActiveView && pActiveViewSh )
+ {
+ String aPart = pActiveView->GetSelected();
+ if (!aPart.Len())
+ aPart = pEngine->GetText((USHORT)0);
+ ScDocument* pDoc = pActiveViewSh->GetViewData()->GetDocShell()->GetDocument();
+ aValue = lcl_Calculate( aPart, pDoc, aCursorPos );
+ }
+
+ if (aValue.Len())
+ {
+ ShowTip( aValue ); // als QuickHelp anzeigen
+ aManualTip = aValue; // nach ShowTip setzen
+ nAutoPos = SCPOS_INVALID; // Formel-Autocomplete aufheben
+ }
+}
+
+void ScInputHandler::PasteManualTip()
+{
+ // drei Punkte am Ende -> Bereichsreferenz -> nicht einfuegen
+ // (wenn wir mal Matrix-Konstanten haben, kann das geaendert werden)
+
+ xub_StrLen nTipLen = aManualTip.Len();
+ if ( nTipLen && ( nTipLen < 3 || !aManualTip.Copy( nTipLen-3 ).EqualsAscii("...") ) )
+ {
+ DataChanging(); // kann nicht neu sein
+
+ String aInsert = aManualTip;
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if (!pActiveView->HasSelection())
+ {
+ // nichts selektiert -> alles selektieren
+ xub_StrLen nOldLen = pEngine->GetTextLen(0);
+ ESelection aAllSel( 0, 0, 0, nOldLen );
+ if ( pTopView )
+ pTopView->SetSelection( aAllSel );
+ if ( pTableView )
+ pTableView->SetSelection( aAllSel );
+ }
+
+ ESelection aSel = pActiveView->GetSelection();
+ aSel.Adjust();
+ DBG_ASSERT( !aSel.nStartPara && !aSel.nEndPara, "Zuviele Absaetze in Formel" );
+ if ( !aSel.nStartPos ) // Selektion ab Anfang?
+ {
+ if ( aSel.nEndPos == pEngine->GetTextLen(0) )
+ {
+ // alles selektiert -> Anfuehrungszeichen weglassen
+ if ( aInsert.GetChar(0) == '"' )
+ aInsert.Erase(0,1);
+ xub_StrLen nInsLen = aInsert.Len();
+ if ( nInsLen && aInsert.GetChar(nInsLen-1) == '"' )
+ aInsert.Erase( nInsLen-1 );
+ }
+ else if ( aSel.nEndPos )
+ {
+ // nicht alles selektiert -> Gleichheitszeichen nicht ueberschreiben
+ //! doppelte Gleichheitszeichen auch ???
+
+ aSel.nStartPos = 1;
+ if ( pTopView )
+ pTopView->SetSelection( aSel );
+ if ( pTableView )
+ pTableView->SetSelection( aSel );
+ }
+ }
+ if ( pTopView )
+ pTopView->InsertText( aInsert, TRUE );
+ if ( pTableView )
+ pTableView->InsertText( aInsert, TRUE );
+
+ DataChanged();
+ }
+
+ HideTip();
+}
+
+void ScInputHandler::ResetAutoPar()
+{
+ nAutoPar = 0;
+}
+
+void ScInputHandler::AutoParAdded()
+{
+ ++nAutoPar; // closing parenthesis can be overwritten
+}
+
+BOOL ScInputHandler::CursorAtClosingPar()
+{
+ // test if the cursor is before a closing parenthesis
+
+ // selection from SetReference has been removed before
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if ( pActiveView && !pActiveView->HasSelection() && bFormulaMode )
+ {
+ ESelection aSel = pActiveView->GetSelection();
+ xub_StrLen nPos = aSel.nStartPos;
+ String aFormula = pEngine->GetText((USHORT)0);
+ if ( nPos < aFormula.Len() && aFormula.GetChar(nPos) == ')' )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void ScInputHandler::SkipClosingPar()
+{
+ // this is called when a ')' is typed and the cursor is before a ')'
+ // that can be overwritten -> just set the cursor behind the ')'
+
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if (pActiveView)
+ {
+ ESelection aSel = pActiveView->GetSelection();
+ ++aSel.nStartPos;
+ ++aSel.nEndPos;
+
+ // this is in a formula (only one paragraph), so the selection
+ // can be used directly for the TopView
+
+ if ( pTopView )
+ pTopView->SetSelection( aSel );
+ if ( pTableView )
+ pTableView->SetSelection( aSel );
+ }
+
+ DBG_ASSERT(nAutoPar, "SkipClosingPar: count is wrong");
+ --nAutoPar;
+}
+
+//
+// Auto-Eingabe
+//
+
+void ScInputHandler::GetColData()
+{
+ if ( pActiveViewSh )
+ {
+ ScDocument* pDoc = pActiveViewSh->GetViewData()->GetDocShell()->GetDocument();
+
+ if ( pColumnData )
+ pColumnData->FreeAll();
+ else
+ pColumnData = new TypedStrCollection;
+
+ pDoc->GetDataEntries( aCursorPos.Col(), aCursorPos.Row(), aCursorPos.Tab(),
+ *pColumnData, TRUE );
+ }
+}
+
+void ScInputHandler::UseColData() // beim Tippen
+{
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if ( pActiveView && pColumnData )
+ {
+ // nur anpassen, wenn Cursor am Ende steht
+
+ ESelection aSel = pActiveView->GetSelection();
+ aSel.Adjust();
+
+ USHORT nParCnt = pEngine->GetParagraphCount();
+ if ( aSel.nEndPara+1 == nParCnt )
+ {
+ xub_StrLen nParLen = pEngine->GetTextLen( aSel.nEndPara );
+ if ( aSel.nEndPos == nParLen )
+ {
+ String aText = GetEditText(pEngine);
+ if (aText.Len())
+ {
+ String aNew;
+ nAutoPos = SCPOS_INVALID; // nix
+ if ( pColumnData->FindText( aText, aNew, nAutoPos, FALSE ) )
+ {
+ // #45434# durch dBase Import etc. koennen Umbrueche im String sein,
+ // das wuerde hier mehrere Absaetze ergeben -> nicht gut
+ //! GetExactMatch funktioniert dann auch nicht
+ lcl_RemoveLineEnd( aNew );
+
+ // Absaetze beibehalten, nur den Rest anfügen
+ //! genaue Ersetzung im EnterHandler !!!
+
+ // ein Space zwischen Absaetzen:
+ ULONG nEdLen = pEngine->GetTextLen() + nParCnt - 1;
+ String aIns = aNew.Copy( (xub_StrLen)nEdLen );
+
+ // Selektion muss "verkehrtherum" sein, damit der Cursor hinter
+ // dem eingegebenen Zeichen steht:
+ pActiveView->InsertText( aIns, FALSE );
+ pActiveView->SetSelection( ESelection(
+ aSel.nEndPara, aSel.nEndPos + aIns.Len(),
+ aSel.nEndPara, aSel.nEndPos ) );
+
+ aAutoSearch = aText; // zum Weitersuchen - nAutoPos ist gesetzt
+
+ if ( aText.Len() == aNew.Len() )
+ {
+ // Wenn der eingegebene Text gefunden wurde, TAB nur dann
+ // verschlucken, wenn noch etwas kommt
+
+ String aDummy;
+ USHORT nNextPos = nAutoPos;
+ bUseTab = pColumnData->FindText( aText, aDummy, nNextPos, FALSE );
+ }
+ else
+ bUseTab = TRUE;
+ }
+ }
+ }
+ }
+ }
+}
+
+void ScInputHandler::NextAutoEntry( BOOL bBack )
+{
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if ( pActiveView && pColumnData )
+ {
+ if ( nAutoPos != SCPOS_INVALID && aAutoSearch.Len() )
+ {
+ // stimmt die Selektion noch? (kann per Maus geaendert sein)
+
+ ESelection aSel = pActiveView->GetSelection();
+ aSel.Adjust();
+ USHORT nParCnt = pEngine->GetParagraphCount();
+ if ( aSel.nEndPara+1 == nParCnt && aSel.nStartPara == aSel.nEndPara )
+ {
+ String aText = GetEditText(pEngine);
+ xub_StrLen nSelLen = aSel.nEndPos - aSel.nStartPos;
+ xub_StrLen nParLen = pEngine->GetTextLen( aSel.nEndPara );
+ if ( aSel.nEndPos == nParLen && aText.Len() == aAutoSearch.Len() + nSelLen )
+ {
+ String aNew;
+ if ( pColumnData->FindText( aAutoSearch, aNew, nAutoPos, bBack ) )
+ {
+ lcl_RemoveLineEnd( aNew );
+ String aIns = aNew.Copy( aAutoSearch.Len() );
+ pActiveView->DeleteSelected();
+ pActiveView->InsertText( aIns, FALSE );
+ pActiveView->SetSelection( ESelection(
+ aSel.nEndPara, aSel.nStartPos + aIns.Len(),
+ aSel.nEndPara, aSel.nStartPos ) );
+ }
+ else
+ {
+ // mehr gibts nicht
+
+ Sound::Beep();
+ }
+ }
+ }
+ }
+ }
+
+ // bei Tab wird vorher immer HideCursor gerufen
+
+ if (pActiveView)
+ pActiveView->ShowCursor();
+}
+
+//
+// Klammern hervorheben
+//
+
+xub_StrLen lcl_MatchParenthesis( const String& rStr, xub_StrLen nPos )
+{
+ int nDir;
+ sal_Unicode c1, c2;
+ c1 = rStr.GetChar( nPos );
+ switch ( c1 )
+ {
+ case '(' :
+ c2 = ')';
+ nDir = 1;
+ break;
+ case ')' :
+ c2 = '(';
+ nDir = -1;
+ break;
+ case '<' :
+ c2 = '>';
+ nDir = 1;
+ break;
+ case '>' :
+ c2 = '<';
+ nDir = -1;
+ break;
+ case '{' :
+ c2 = '}';
+ nDir = 1;
+ break;
+ case '}' :
+ c2 = '{';
+ nDir = -1;
+ break;
+ case '[' :
+ c2 = ']';
+ nDir = 1;
+ break;
+ case ']' :
+ c2 = '[';
+ nDir = -1;
+ break;
+ default:
+ nDir = 0;
+ }
+ if ( !nDir )
+ return STRING_NOTFOUND;
+ xub_StrLen nLen = rStr.Len();
+ const sal_Unicode* p0 = rStr.GetBuffer();
+ register const sal_Unicode* p;
+ const sal_Unicode* p1;
+ USHORT nQuotes = 0;
+ if ( nPos < nLen / 2 )
+ {
+ p = p0;
+ p1 = p0 + nPos;
+ }
+ else
+ {
+ p = p0 + nPos;
+ p1 = p0 + nLen;
+ }
+ while ( p < p1 )
+ {
+ if ( *p++ == '\"' )
+ nQuotes++;
+ }
+ // ungerade Anzahl Quotes: wir befinden uns in einem String
+ BOOL bLookInString = ((nQuotes % 2) != 0);
+ BOOL bInString = bLookInString;
+ p = p0 + nPos;
+ p1 = (nDir < 0 ? p0 : p0 + nLen) ;
+ USHORT nLevel = 1;
+ while ( p != p1 && nLevel )
+ {
+ p += nDir;
+ if ( *p == '\"' )
+ {
+ bInString = !bInString;
+ if ( bLookInString && !bInString )
+ p = p1; // das war's dann
+ }
+ else if ( bInString == bLookInString )
+ {
+ if ( *p == c1 )
+ nLevel++;
+ else if ( *p == c2 )
+ nLevel--;
+ }
+ }
+ if ( nLevel )
+ return STRING_NOTFOUND;
+ return (xub_StrLen) (p - p0);
+}
+
+void ScInputHandler::UpdateParenthesis()
+{
+ // Klammern suchen
+
+ //! Klammer-Hervorhebung einzeln abschaltbar ????
+
+ BOOL bFound = FALSE;
+ if ( bFormulaMode && eMode != SC_INPUT_TOP )
+ {
+ if ( pTableView && !pTableView->HasSelection() ) // Selektion ist immer unten
+ {
+ ESelection aSel = pTableView->GetSelection();
+ if (aSel.nStartPos)
+ {
+ // Das Zeichen links vom Cursor wird angeschaut
+
+ xub_StrLen nPos = aSel.nStartPos - 1;
+ String aFormula = pEngine->GetText((USHORT)0);
+ sal_Unicode c = aFormula.GetChar(nPos);
+ if ( c == '(' || c == ')' )
+ {
+ xub_StrLen nOther = lcl_MatchParenthesis( aFormula, nPos );
+ if ( nOther != STRING_NOTFOUND )
+ {
+ SfxItemSet aSet( pEngine->GetEmptyItemSet() );
+ aSet.Put( SvxWeightItem( WEIGHT_BOLD, EE_CHAR_WEIGHT ) );
+ //! Unterscheidung, wenn die Zelle schon fett ist !!!!
+
+ if (bParenthesisShown)
+ {
+ // alte Hervorhebung wegnehmen
+ USHORT nCount = pEngine->GetParagraphCount();
+ for (USHORT i=0; i<nCount; i++)
+ pEngine->QuickRemoveCharAttribs( i, EE_CHAR_WEIGHT );
+ }
+
+ ESelection aSelThis( 0,nPos, 0,nPos+1 );
+ pEngine->QuickSetAttribs( aSet, aSelThis );
+ ESelection aSelOther( 0,nOther, 0,nOther+1 );
+ pEngine->QuickSetAttribs( aSet, aSelOther );
+
+ // Dummy-InsertText fuer Update und Paint (Selektion ist leer)
+ pTableView->InsertText( EMPTY_STRING, FALSE );
+
+ bFound = TRUE;
+ }
+ }
+ }
+
+ // mark parenthesis right of cursor if it will be overwritten (nAutoPar)
+ // with different color (COL_LIGHTBLUE) ??
+ }
+ }
+
+ // alte Hervorhebung wegnehmen, wenn keine neue gesetzt
+
+ if ( bParenthesisShown && !bFound && pTableView )
+ {
+ USHORT nCount = pEngine->GetParagraphCount();
+ for (USHORT i=0; i<nCount; i++)
+ pTableView->RemoveCharAttribs( i, EE_CHAR_WEIGHT );
+ }
+
+ bParenthesisShown = bFound;
+}
+
+void ScInputHandler::ViewShellGone(ScTabViewShell* pViewSh) // wird synchron aufgerufen!
+{
+ if ( pViewSh == pActiveViewSh )
+ {
+ delete pLastState;
+ pLastState = NULL;
+ pLastPattern = NULL;
+ }
+
+ if ( pViewSh == pRefViewSh )
+ {
+ //! Die Eingabe kommt aus dem EnterHandler nicht mehr an
+ // Trotzdem wird immerhin der Editmodus beendet
+
+ EnterHandler();
+ bFormulaMode = FALSE;
+ pRefViewSh = NULL;
+ SFX_APP()->Broadcast( SfxSimpleHint( FID_REFMODECHANGED ) );
+ SC_MOD()->SetRefInputHdl(NULL);
+ if (pInputWin)
+ pInputWin->SetFormulaMode(FALSE);
+ UpdateAutoCorrFlag();
+ }
+
+ pActiveViewSh = PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+
+ if ( pActiveViewSh && pActiveViewSh == pViewSh )
+ {
+ DBG_ERROR("pActiveViewSh weg");
+ pActiveViewSh = NULL;
+ }
+}
+
+void ScInputHandler::UpdateActiveView()
+{
+ ImplCreateEditEngine();
+ Window* pShellWin = pActiveViewSh ? pActiveViewSh->GetActiveWin() : NULL;
+
+ USHORT nCount = pEngine->GetViewCount();
+ if (nCount > 0)
+ {
+ pTableView = pEngine->GetView(0);
+ for (USHORT i=1; i<nCount; i++)
+ {
+ EditView* pThis = pEngine->GetView(i);
+ Window* pWin = pThis->GetWindow();
+ if ( pWin==pShellWin || pWin->HasFocus() )
+ pTableView = pThis;
+ }
+ }
+ else
+ pTableView = NULL;
+
+ if (pInputWin)
+ pTopView = pInputWin->GetEditView();
+ else
+ pTopView = NULL;
+}
+
+void ScInputHandler::ActivateInputWindow( const String& rText,
+ const ESelection& rSel )
+{
+ if ( pInputWin )
+ if ( !pInputWin->IsActive() )
+ pTopView = pInputWin->ActivateEdit( rText, rSel );
+}
+
+EditView* ScInputHandler::GetActiveView()
+{
+ UpdateActiveView();
+ return pTopView ? pTopView : pTableView;
+}
+
+void ScInputHandler::ForgetLastPattern()
+{
+ pLastPattern = NULL;
+ if ( !pLastState && pActiveViewSh )
+ pActiveViewSh->UpdateInputHandler( TRUE ); // Status neu holen
+ else
+ NotifyChange( pLastState, TRUE );
+}
+
+void ScInputHandler::UpdateAdjust( sal_Unicode cTyped )
+{
+ SvxAdjust eSvxAdjust;
+ switch (nAttrAdjust)
+ {
+ case SVX_HOR_JUSTIFY_STANDARD:
+ {
+ BOOL bNumber = FALSE;
+ if (cTyped) // neu angefangen
+ bNumber = (cTyped>='0' && cTyped<='9'); // nur Ziffern sind Zahlen
+ else if ( pActiveViewSh )
+ {
+ ScDocument* pDoc = pActiveViewSh->GetViewData()->GetDocShell()->GetDocument();
+ bNumber = ( pDoc->GetCellType( aCursorPos ) == CELLTYPE_VALUE );
+ }
+ eSvxAdjust = bNumber ? SVX_ADJUST_RIGHT : SVX_ADJUST_LEFT;
+ }
+ break;
+ case SVX_HOR_JUSTIFY_BLOCK:
+ eSvxAdjust = SVX_ADJUST_BLOCK;
+ break;
+ case SVX_HOR_JUSTIFY_CENTER:
+ eSvxAdjust = SVX_ADJUST_CENTER;
+ break;
+ case SVX_HOR_JUSTIFY_RIGHT:
+ eSvxAdjust = SVX_ADJUST_RIGHT;
+ break;
+ default: // SVX_HOR_JUSTIFY_LEFT
+ eSvxAdjust = SVX_ADJUST_LEFT;
+ break;
+ }
+
+ pEditDefaults->Put( SvxAdjustItem( eSvxAdjust, EE_PARA_JUST ) );
+ pEngine->SetDefaults( *pEditDefaults );
+
+ nEditAdjust = eSvxAdjust; //! an ViewData setzen oder beim PostEditView
+}
+
+void ScInputHandler::RemoveAdjust()
+{
+
+ // harte Ausrichtungs-Attribute loeschen
+
+ BOOL bUndo = pEngine->IsUndoEnabled();
+ if ( bUndo )
+ pEngine->EnableUndo( FALSE );
+ BOOL bChange = FALSE;
+ USHORT nCount = pEngine->GetParagraphCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ const SfxItemSet& rOld = pEngine->GetParaAttribs( i );
+ if ( rOld.GetItemState( EE_PARA_JUST ) == SFX_ITEM_SET )
+ {
+ SfxItemSet aNew( rOld );
+ aNew.ClearItem( EE_PARA_JUST );
+ pEngine->SetParaAttribs( i, aNew );
+ bChange = TRUE;
+ }
+ }
+ if ( bUndo )
+ pEngine->EnableUndo( TRUE );
+
+ // ER 31.08.00 Only called in EnterHandler, don't change view anymore.
+#if 0
+ if (bChange)
+ {
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ pActiveView->ShowCursor( FALSE, TRUE );
+ }
+#endif
+}
+
+void ScInputHandler::RemoveRangeFinder()
+{
+ // pRangeFindList und Farben loeschen
+
+ pEngine->SetUpdateMode(FALSE);
+ USHORT nCount = pEngine->GetParagraphCount(); // koennte gerade neu eingefuegt worden sein
+ for (USHORT i=0; i<nCount; i++)
+ pEngine->QuickRemoveCharAttribs( i, EE_CHAR_COLOR );
+ pEngine->SetUpdateMode(TRUE);
+
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ pActiveView->ShowCursor( FALSE, TRUE );
+
+ DeleteRangeFinder(); // loescht die Liste und die Markierungen auf der Tabelle
+}
+
+BOOL ScInputHandler::StartTable( sal_Unicode cTyped ) // TRUE = neu angelegt
+{
+ BOOL bNewTable = FALSE;
+
+ if (!bModified && aCursorPos.Col()<=MAXCOL)
+ {
+ if (pActiveViewSh)
+ {
+ ImplCreateEditEngine();
+ UpdateActiveView();
+ SyncViews();
+
+ ScDocument* pDoc = pActiveViewSh->GetViewData()->GetDocShell()->GetDocument();
+ if ( pDoc->IsSelectionOrBlockEditable( aCursorPos.Tab(),
+ aCursorPos.Col(),aCursorPos.Row(),
+ aCursorPos.Col(),aCursorPos.Row(),
+ pActiveViewSh->GetViewData()->GetMarkData() ) )
+ {
+ // Attribute in EditEngine uebernehmen
+
+ const ScPatternAttr* pPattern = pDoc->GetPattern( aCursorPos.Col(),
+ aCursorPos.Row(),
+ aCursorPos.Tab() );
+ if (pPattern != pLastPattern)
+ {
+ // Prozent-Format?
+
+ const SfxItemSet& rAttrSet = pPattern->GetItemSet();
+ const SfxPoolItem* pItem;
+
+ if ( SFX_ITEM_SET == rAttrSet.GetItemState( ATTR_VALUE_FORMAT, TRUE, &pItem ) )
+ {
+ ULONG nFormat = ((const SfxUInt32Item*)pItem)->GetValue();
+ bCellHasPercentFormat = ( NUMBERFORMAT_PERCENT ==
+ pDoc->GetFormatTable()->GetType( nFormat ) );
+ }
+ else
+ bCellHasPercentFormat = FALSE; // Default: kein Prozent
+
+ // Gueltigkeit angegeben?
+
+ if ( SFX_ITEM_SET == rAttrSet.GetItemState( ATTR_VALIDDATA, TRUE, &pItem ) )
+ nValidation = ((const SfxUInt32Item*)pItem)->GetValue();
+ else
+ nValidation = 0;
+
+ // EditEngine Defaults
+
+ // Hier auf keinen Fall SetParaAttribs, weil die EditEngine evtl.
+ // schon gefuellt ist (bei Edit-Zellen).
+ // SetParaAttribs wuerde dann den Inhalt aendern
+
+ //! ER 30.08.00 The SetDefaults is now (since MUST/src602
+ //! EditEngine changes) implemented as a SetParaAttribs.
+ //! Any problems?
+
+ pPattern->FillEditItemSet( pEditDefaults );
+ pEngine->SetDefaults( *pEditDefaults );
+ pLastPattern = pPattern;
+ bLastIsSymbol = pPattern->IsSymbolFont();
+
+ // Ausrichtung
+
+ nAttrAdjust = ((const SvxHorJustifyItem&)pPattern->
+ GetItem(ATTR_HOR_JUSTIFY)).GetValue();
+ }
+
+ // UpdateSpellSettings enables online spelling if needed
+ // -> also call if attributes are unchanged
+
+ UpdateSpellSettings( TRUE ); // uses pLastPattern
+
+ // Edit-Engine fuellen
+
+ String aStr;
+ if (bTextValid)
+ {
+ pEngine->SetText(aCurrentText);
+ aStr = aCurrentText;
+ bTextValid = FALSE;
+ aCurrentText.Erase();
+ }
+ else
+ aStr = GetEditText(pEngine);
+
+ if (aStr.Len() > 3 && // Matrix-Formel ?
+ aStr.GetChar(0) == '{' &&
+ aStr.GetChar(1) == '=' &&
+ aStr.GetChar(aStr.Len()-1) == '}')
+ {
+ aStr.Erase(0,1);
+ aStr.Erase(aStr.Len()-1,1);
+ pEngine->SetText(aStr);
+ if ( pInputWin )
+ pInputWin->SetTextString(aStr);
+ }
+
+ UpdateAdjust( cTyped );
+
+ if ( bAutoComplete )
+ GetColData();
+
+ if ( aStr.GetChar(0) == '=' && !cTyped && !bCreatingFuncView )
+ InitRangeFinder(aStr); // Formel wird editiert -> RangeFinder
+
+ bNewTable = TRUE; // -> PostEditView-Aufruf
+ }
+ else
+ {
+ bProtected = TRUE;
+ eMode = SC_INPUT_NONE;
+ if (pInputWin)
+ pInputWin->StopEditEngine();
+ UpdateFormulaMode();
+ if (pActiveViewSh)
+ {
+ pActiveViewSh->GetActiveWin()->GrabFocus();
+ pActiveViewSh->ErrorMessage(STR_PROTECTIONERR);
+ }
+ }
+ }
+
+ if (!bProtected && pInputWin)
+ pInputWin->SetOkCancelMode();
+ }
+
+ return bNewTable;
+}
+
+void lcl_SetTopSelection( EditView* pEditView, ESelection& rSel )
+{
+ DBG_ASSERT( rSel.nStartPara==0 && rSel.nEndPara==0, "SetTopSelection: Para != 0" );
+
+ EditEngine* pEngine = pEditView->GetEditEngine();
+ USHORT nCount = pEngine->GetParagraphCount();
+ if (nCount > 1)
+ {
+ xub_StrLen nParLen = pEngine->GetTextLen(rSel.nStartPara);
+ while (rSel.nStartPos > nParLen && rSel.nStartPara+1 < nCount)
+ {
+ rSel.nStartPos -= nParLen + 1; // incl. Leerzeichen vom Umbruch
+ nParLen = pEngine->GetTextLen(++rSel.nStartPara);
+ }
+
+ nParLen = pEngine->GetTextLen(rSel.nEndPara);
+ while (rSel.nEndPos > nParLen && rSel.nEndPara+1 < nCount)
+ {
+ rSel.nEndPos -= nParLen + 1; // incl. Leerzeichen vom Umbruch
+ nParLen = pEngine->GetTextLen(++rSel.nEndPara);
+ }
+ }
+
+ ESelection aSel = pEditView->GetSelection();
+
+ if ( rSel.nStartPara != aSel.nStartPara || rSel.nEndPara != aSel.nEndPara
+ || rSel.nStartPos != aSel.nStartPos || rSel.nEndPos != aSel.nEndPos )
+ pEditView->SetSelection( rSel );
+}
+
+void ScInputHandler::SyncViews( EditView* pSourceView )
+{
+ ESelection aSel;
+
+ if (pSourceView)
+ {
+ aSel = pSourceView->GetSelection();
+ if (pTopView && pTopView != pSourceView)
+ pTopView->SetSelection( aSel );
+ if (pTableView && pTableView != pSourceView)
+ lcl_SetTopSelection( pTableView, aSel );
+ }
+ else if (pTopView && pTableView)
+ {
+ aSel = pTopView->GetSelection();
+ lcl_SetTopSelection( pTableView, aSel );
+ }
+}
+
+void ScInputHandler::SetAllUpdateMode( BOOL bUpdate )
+{
+ ImplCreateEditEngine();
+ pEngine->SetUpdateMode( bUpdate );
+}
+
+BOOL ScInputHandler::DataChanging( sal_Unicode cTyped ) // TRUE = IP-View neu angelegt
+{
+ if ( eMode == SC_INPUT_NONE )
+ return StartTable( cTyped );
+ else
+ return FALSE;
+}
+
+void ScInputHandler::DataChanged()
+{
+ ImplCreateEditEngine();
+
+ if (eMode==SC_INPUT_NONE)
+ eMode = SC_INPUT_TYPE;
+
+ bModified = TRUE;
+ bSelIsRef = FALSE;
+
+ if ( pRangeFindList && !bInRangeUpdate )
+ RemoveRangeFinder(); // Attribute und Markierung loeschen
+
+ UpdateParenthesis(); // Hervorhebung der Klammern neu
+
+ // ER 31.08.00 New SetDefaults sets ParaAttribs, don't clear them away ...
+// RemoveAdjust(); // #40255# harte Ausrichtungs-Attribute loeschen
+
+ if (eMode==SC_INPUT_TYPE || eMode==SC_INPUT_TABLE)
+ {
+ String aText = GetEditText(pEngine);
+ lcl_RemoveTabs(aText);
+
+ if ( pInputWin )
+ pInputWin->SetTextString(aText);
+ }
+
+ // wenn der Cursor vor dem Absatzende steht, werden Teile rechts rausgeschoben
+ // (unabhaengig von eMode) -> View anpassen!
+ // wenn der Cursor am Ende steht, reicht der Status-Handler an der ViewData
+
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if (pActiveView && pActiveViewSh)
+ {
+ BOOL bNeedGrow = ( nEditAdjust != SVX_ADJUST_LEFT ); // rechtsbuendig immer
+ if (!bNeedGrow)
+ {
+ // Cursor vor dem Ende?
+ ESelection aSel = pActiveView->GetSelection();
+ aSel.Adjust();
+ bNeedGrow = ( aSel.nEndPos != pEngine->GetTextLen(aSel.nEndPara) );
+ }
+ if (bNeedGrow)
+ {
+ // Inplace-View anpassen
+ pActiveViewSh->GetViewData()->EditGrowY();
+ pActiveViewSh->GetViewData()->EditGrowX();
+ }
+ }
+
+ UpdateFormulaMode();
+ bTextValid = FALSE; // Aenderungen sind nur in der Edit-Engine
+}
+
+void ScInputHandler::UpdateFormulaMode()
+{
+ SfxApplication* pSfxApp = SFX_APP();
+
+ if ( pEngine->GetParagraphCount()==1 && pEngine->GetText((USHORT)0).GetChar(0) == '='
+ && !bProtected )
+ {
+ if (!bFormulaMode)
+ {
+ bFormulaMode = TRUE;
+ pRefViewSh = pActiveViewSh;
+ pSfxApp->Broadcast( SfxSimpleHint( FID_REFMODECHANGED ) );
+ SC_MOD()->SetRefInputHdl(this);
+ if (pInputWin)
+ pInputWin->SetFormulaMode(TRUE);
+
+ if ( bAutoComplete )
+ GetFormulaData();
+
+ UpdateParenthesis();
+ UpdateAutoCorrFlag();
+ }
+ }
+ else // ausschalten
+ {
+ if (bFormulaMode)
+ {
+ ShowRefFrame();
+ bFormulaMode = FALSE;
+ pRefViewSh = NULL;
+ pSfxApp->Broadcast( SfxSimpleHint( FID_REFMODECHANGED ) );
+ SC_MOD()->SetRefInputHdl(NULL);
+ if (pInputWin)
+ pInputWin->SetFormulaMode(FALSE);
+ UpdateAutoCorrFlag();
+ }
+ }
+}
+
+void ScInputHandler::ShowRefFrame()
+{
+ pActiveViewSh = PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ if ( pRefViewSh && pRefViewSh != pActiveViewSh )
+ {
+ BOOL bFound = FALSE;
+ SfxViewFrame* pRefFrame = pRefViewSh->GetViewFrame();
+ SfxViewFrame* pOneFrame = SfxViewFrame::GetFirst();
+ while ( pOneFrame && !bFound )
+ {
+ if ( pOneFrame == pRefFrame )
+ bFound = TRUE;
+ pOneFrame = SfxViewFrame::GetNext( *pOneFrame );
+ }
+
+ if (bFound)
+ {
+ // Hier wird sich darauf verlassen, dass Activate synchron funktioniert
+ // (dabei wird pActiveViewSh umgesetzt)
+
+ pRefViewSh->SetActive(); // Appear und SetViewFrame
+
+ // pLastState wird im NotifyChange aus dem Activate richtig gesetzt
+ }
+ else
+ DBG_ERROR("ViewFrame fuer Referenzeingabe ist nicht mehr da");
+ }
+}
+
+void ScInputHandler::RemoveSelection()
+{
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if (!pActiveView)
+ return;
+
+ ESelection aSel = pActiveView->GetSelection();
+ aSel.nStartPara = aSel.nEndPara;
+ aSel.nStartPos = aSel.nEndPos;
+ if (pTableView)
+ pTableView->SetSelection( aSel );
+ if (pTopView)
+ pTopView->SetSelection( aSel );
+}
+
+void ScInputHandler::InvalidateAttribs()
+{
+ SfxBindings& rBindings = SFX_APP()->GetBindings();
+
+ rBindings.Invalidate( SID_ATTR_CHAR_FONT );
+ rBindings.Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
+ rBindings.Invalidate( SID_ATTR_CHAR_COLOR );
+
+ rBindings.Invalidate( SID_ATTR_CHAR_WEIGHT );
+ rBindings.Invalidate( SID_ATTR_CHAR_POSTURE );
+ rBindings.Invalidate( SID_ATTR_CHAR_UNDERLINE );
+ rBindings.Invalidate( SID_ULINE_VAL_NONE );
+ rBindings.Invalidate( SID_ULINE_VAL_SINGLE );
+ rBindings.Invalidate( SID_ULINE_VAL_DOUBLE );
+ rBindings.Invalidate( SID_ULINE_VAL_DOTTED );
+
+ rBindings.Invalidate( SID_HYPERLINK_GETLINK );
+}
+
+
+//
+// --------------- public Methoden --------------------------------------------
+//
+
+void ScInputHandler::SetMode( ScInputMode eNewMode )
+{
+ if ( eMode == eNewMode )
+ return;
+
+ ImplCreateEditEngine();
+
+ if (bProtected)
+ {
+ eMode = SC_INPUT_NONE;
+ if (pInputWin)
+ pInputWin->StopEditEngine();
+ if (pActiveViewSh)
+ pActiveViewSh->GetActiveWin()->GrabFocus();
+ return;
+ }
+
+ ScInputMode eOldMode = eMode;
+ eMode = eNewMode;
+ if (eOldMode == SC_INPUT_TOP && eNewMode != eOldMode && pInputWin)
+ pInputWin->StopEditEngine();
+
+ if (eMode==SC_INPUT_TOP || eMode==SC_INPUT_TABLE)
+ {
+ if (!bModified)
+ {
+ if (StartTable(0)) // 0 = im Dokument schauen, ob Zahl oder Text
+ {
+ if (pActiveViewSh)
+ pActiveViewSh->GetViewData()->GetDocShell()->PostEditView( pEngine, aCursorPos );
+ }
+// bModified = TRUE; //???
+ }
+
+ USHORT nPara = pEngine->GetParagraphCount()-1;
+ xub_StrLen nLen = pEngine->GetText(nPara).Len();
+ USHORT nCount = pEngine->GetViewCount();
+
+ for (USHORT i=0; i<nCount; i++)
+ {
+ if ( eMode == SC_INPUT_TABLE && eOldMode == SC_INPUT_TOP )
+ {
+ // Selektion bleibt
+ }
+ else
+ {
+ pEngine->GetView(i)->
+ SetSelection( ESelection( nPara, nLen, nPara, nLen ) );
+ }
+ pEngine->GetView(i)->ShowCursor(FALSE);
+ }
+ }
+
+ UpdateActiveView();
+ if (eMode==SC_INPUT_TABLE || eMode==SC_INPUT_TYPE)
+ {
+ if (pTableView)
+ pTableView->SetEditEngineUpdateMode(TRUE);
+ }
+ else
+ {
+ if (pTopView)
+ pTopView->SetEditEngineUpdateMode(TRUE);
+ }
+
+ if (eNewMode != eOldMode)
+ UpdateFormulaMode();
+}
+
+//----------------------------------------------------------------------------------------
+
+// lcl_IsNumber - TRUE, wenn nur Ziffern (dann keine Autokorrektur)
+
+BOOL lcl_IsNumber(const String& rString)
+{
+ xub_StrLen nLen = rString.Len();
+ for (xub_StrLen i=0; i<nLen; i++)
+ {
+ sal_Unicode c = rString.GetChar(i);
+ if ( c < '0' || c > '9' )
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void ScInputHandler::EnterHandler( BYTE nBlockMode )
+{
+ // #62806# Bei Makro-Aufrufen fuer Gueltigkeit kann Tod und Teufel passieren,
+ // darum dafuer sorgen, dass EnterHandler nicht verschachtelt gerufen wird:
+
+ if (bInEnterHandler) return;
+ bInEnterHandler = TRUE;
+
+ ImplCreateEditEngine();
+
+ BOOL bMatrix = ( nBlockMode == SC_ENTER_MATRIX );
+
+ SfxApplication* pSfxApp = SFX_APP();
+ EditTextObject* pObject = NULL;
+ ScPatternAttr* pCellAttrs = NULL;
+ BOOL bAttrib = FALSE; // Formatierung vorhanden ?
+ BOOL bCellAttr = FALSE; // alles gleich formatiert ?
+ BOOL bForget = FALSE; // wegen Gueltigkeit streichen ?
+
+ String aString = GetEditText(pEngine);
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ if (bModified && pActiveView && aString.Len() && !lcl_IsNumber(aString))
+ {
+ if (pTopView)
+ pTopView->CompleteAutoCorrect(); // #59759# CompleteAutoCorrect fuer beide Views
+ if (pTableView)
+ pTableView->CompleteAutoCorrect();
+ aString = GetEditText(pEngine);
+ }
+ lcl_RemoveTabs(aString);
+
+ // Test, ob zulaessig (immer mit einfachem String)
+
+ if ( bModified && nValidation && pActiveViewSh )
+ {
+ ScDocument* pDoc = pActiveViewSh->GetViewData()->GetDocument();
+ const ScValidationData* pData = pDoc->GetValidationEntry( nValidation );
+ if (pData && pData->HasErrMsg())
+ {
+ const ScPatternAttr* pPattern = pLastPattern;
+ if (!pPattern)
+ {
+ DBG_ERROR("kein Pattern !??!");
+ pPattern = pDoc->GetPattern( aCursorPos.Col(), aCursorPos.Row(),
+ aCursorPos.Tab() );
+ }
+ BOOL bOk = pData->IsDataValid( aString, *pPattern, aCursorPos );
+
+ if (!bOk)
+ {
+ if ( pActiveViewSh ) // falls aus MouseButtonDown gekommen
+ pActiveViewSh->StopMarking(); // (die InfoBox verschluckt das MouseButtonUp)
+
+ //! es gibt noch Probleme, wenn die Eingabe durch Aktivieren einer
+ //! anderen View ausgeloest wurde
+
+ Window* pParent = Application::GetDefDialogParent();
+ if ( pData->DoError( pParent, aString, aCursorPos ) )
+ bForget = TRUE; // Eingabe nicht uebernehmen
+ }
+ }
+ }
+
+ pEngine->CompleteOnlineSpelling();
+ BOOL bSpellErrors = !bFormulaMode && pEngine->HasOnlineSpellErrors();
+ if ( bSpellErrors )
+ {
+ // Test, ob Zahl, dann Fehler ignorieren
+ }
+
+ if ( bModified && !bForget ) // was wird eingeben (Text/Objekt) ?
+ {
+ RemoveAdjust(); // clear adjustment ParaAttribs
+
+ if ( bSpellErrors || pEngine->GetParagraphCount() > 1 )
+ bAttrib = TRUE;
+ else
+ {
+ // auch bei einzelnem Zeichen, um Zell-Attribute zu finden
+
+ SfxItemSet aSet = pEngine->GetAttribs( ESelection(0,0,0,aString.Len()) );
+
+ const SfxPoolItem* pItem = NULL;
+ for (USHORT nId = EE_CHAR_START; nId <= EE_CHAR_END && !bAttrib; nId++)
+ {
+ SfxItemState eState = aSet.GetItemState( nId, FALSE, &pItem );
+ if (eState == SFX_ITEM_DONTCARE)
+ bAttrib = TRUE;
+ else if (eState == SFX_ITEM_SET)
+ {
+ if ( nId == EE_CHAR_ESCAPEMENT ) // Hoch-/Tiefstellen immer ueber EE
+ {
+ if ( (SvxEscapement)((const SvxEscapementItem*)pItem)->GetEnumValue()
+ != SVX_ESCAPEMENT_OFF )
+ bAttrib = TRUE;
+ }
+ else
+ if (!bCellAttr)
+ if ( *pItem != pEditDefaults->Get(nId) )
+ bCellAttr = TRUE;
+ }
+ }
+
+ // Feldbefehle enthalten?
+
+ SfxItemState eFieldState = aSet.GetItemState( EE_FEATURE_FIELD, FALSE );
+ if ( eFieldState == SFX_ITEM_DONTCARE || eFieldState == SFX_ITEM_SET )
+ bAttrib = TRUE;
+
+ // not converted characters?
+
+ SfxItemState eConvState = aSet.GetItemState( EE_FEATURE_NOTCONV, FALSE );
+ if ( eConvState == SFX_ITEM_DONTCARE || eConvState == SFX_ITEM_SET )
+ bAttrib = TRUE;
+
+ // Formeln immer als Formeln erkennen (#38309#)
+ // (der Test vorher ist trotzdem noetig wegen Zell-Attributen)
+
+ if ( bAttrib && bFormulaMode )
+ bAttrib = FALSE;
+
+ if (bCellAttr && !bAttrib && !bMatrix && pActiveViewSh)
+ {
+ ScDocument* pDoc = pActiveViewSh->GetViewData()->GetDocument();
+ pCellAttrs = new ScPatternAttr( pDoc->GetPool() );
+ pCellAttrs->GetFromEditItemSet( &aSet );
+ }
+ }
+
+ if (bMatrix)
+ bAttrib = FALSE;
+
+ if (bAttrib)
+ {
+ ULONG nCtrl = pEngine->GetControlWord();
+ ULONG nWantBig = bSpellErrors ? EE_CNTRL_ALLOWBIGOBJS : 0;
+ if ( ( nCtrl & EE_CNTRL_ALLOWBIGOBJS ) != nWantBig )
+ pEngine->SetControlWord( (nCtrl & ~EE_CNTRL_ALLOWBIGOBJS) | nWantBig );
+ pObject = pEngine->CreateTextObject();
+ }
+ else if (bAutoComplete) // Gross-/Kleinschreibung anpassen
+ {
+ if (pColumnData)
+ pColumnData->GetExactMatch( aString );
+
+ //! effizienter in der Liste suchen (ScUserList, nur einmal ToUpper)
+
+ USHORT nIndex;
+ ScUserListData* pData = ScGlobal::GetUserList()->GetData(aString);
+ if ( pData && pData->GetSubIndex( aString, nIndex ) )
+ aString = pData->GetSubStr( nIndex );
+ }
+ }
+
+ // don't rely on ShowRefFrame switching the active view synchronously
+ // execute the function directly on the correct view's bindings instead
+ // pRefViewSh is reset in ShowRefFrame - get pointer before ShowRefFrame call
+ ScTabViewShell* pExecuteSh = pRefViewSh ? pRefViewSh : pActiveViewSh;
+
+ if (bFormulaMode)
+ {
+ ShowRefFrame();
+
+ if (pExecuteSh)
+ pExecuteSh->SetTabNo(aCursorPos.Tab());
+
+ bFormulaMode = FALSE;
+ pSfxApp->Broadcast( SfxSimpleHint( FID_REFMODECHANGED ) );
+ SC_MOD()->SetRefInputHdl(NULL);
+ if (pInputWin)
+ pInputWin->SetFormulaMode(FALSE);
+ UpdateAutoCorrFlag();
+ }
+ pRefViewSh = NULL; // auch ohne FormulaMode wegen Funktions-AP
+ DeleteRangeFinder();
+ ResetAutoPar();
+
+ BOOL bOldMod = bModified;
+
+ bModified = FALSE;
+ bSelIsRef = FALSE;
+ eMode = SC_INPUT_NONE;
+ if (pInputWin)
+ pInputWin->StopEditEngine();
+
+ if (bOldMod && !bProtected && !bForget)
+ {
+ // keine typographische Anfuehrungszeichen in Formeln
+
+ if ( aString.GetChar(0) == '=' )
+ {
+ SvxAutoCorrect* pAuto = OFF_APP()->GetAutoCorrect();
+ if ( pAuto )
+ {
+ const International& rIntl = Application::GetAppInternational();
+
+ sal_Unicode cReplace = pAuto->GetStartDoubleQuote();
+ if( !cReplace )
+ cReplace = rIntl.GetDoubleQuotationMarkStartChar();
+ if ( cReplace != '"' )
+ aString.SearchAndReplaceAll( cReplace, '"' );
+
+ cReplace = pAuto->GetEndDoubleQuote();
+ if( !cReplace )
+ cReplace = rIntl.GetDoubleQuotationMarkEndChar();
+ if ( cReplace != '"' )
+ aString.SearchAndReplaceAll( cReplace, '"' );
+
+ cReplace = pAuto->GetStartSingleQuote();
+ if( !cReplace )
+ cReplace = rIntl.GetQuotationMarkStartChar();
+ if ( cReplace != '\'' )
+ aString.SearchAndReplaceAll( cReplace, '\'' );
+
+ cReplace = pAuto->GetEndSingleQuote();
+ if( !cReplace )
+ cReplace = rIntl.GetQuotationMarkEndChar();
+ if ( cReplace != '\'' )
+ aString.SearchAndReplaceAll( cReplace, '\'' );
+ }
+ }
+
+ pSfxApp->Broadcast( SfxSimpleHint( FID_KILLEDITVIEW_NOPAINT ) );
+
+ if ( pExecuteSh )
+ {
+ SfxBindings& rBindings = pExecuteSh->GetViewFrame()->GetBindings();
+
+ USHORT nId = FID_INPUTLINE_ENTER;
+ if ( nBlockMode == SC_ENTER_BLOCK )
+ nId = FID_INPUTLINE_BLOCK;
+ else if ( nBlockMode == SC_ENTER_MATRIX )
+ nId = FID_INPUTLINE_MATRIX;
+
+ ScInputStatusItem aItem( FID_INPUTLINE_STATUS,
+ aCursorPos, aCursorPos, aCursorPos,
+ aString, pObject );
+ const SfxPoolItem* aArgs[2];
+ aArgs[0] = &aItem;
+ aArgs[1] = NULL;
+ rBindings.Execute( nId, aArgs );
+ }
+
+ delete pLastState; // pLastState enthaelt noch den alten Text
+ pLastState = NULL;
+ }
+ else
+ pSfxApp->Broadcast( SfxSimpleHint( FID_KILLEDITVIEW ) );
+
+ if ( bOldMod && pExecuteSh && pCellAttrs && !bForget )
+ {
+ // mit Eingabe zusammenfassen ?
+ pExecuteSh->ApplySelectionPattern( *pCellAttrs, TRUE, TRUE );
+ pExecuteSh->AdjustBlockHeight();
+ }
+
+ delete pCellAttrs;
+ delete pObject;
+
+ HideTip();
+
+ nFormSelStart = nFormSelEnd = 0;
+ aFormText.Erase();
+
+ bInEnterHandler = FALSE;
+}
+
+void ScInputHandler::CancelHandler()
+{
+ ImplCreateEditEngine();
+
+ bModified = FALSE;
+
+ // don't rely on ShowRefFrame switching the active view synchronously
+ // execute the function directly on the correct view's bindings instead
+ // pRefViewSh is reset in ShowRefFrame - get pointer before ShowRefFrame call
+ ScTabViewShell* pExecuteSh = pRefViewSh ? pRefViewSh : pActiveViewSh;
+
+ if (bFormulaMode)
+ {
+ ShowRefFrame();
+ if (pExecuteSh)
+ pExecuteSh->SetTabNo(aCursorPos.Tab());
+ bFormulaMode = FALSE;
+ SFX_APP()->Broadcast( SfxSimpleHint( FID_REFMODECHANGED ) );
+ SC_MOD()->SetRefInputHdl(NULL);
+ if (pInputWin)
+ pInputWin->SetFormulaMode(FALSE);
+ UpdateAutoCorrFlag();
+ }
+ pRefViewSh = NULL; // auch ohne FormulaMode wegen Funktions-AP
+ DeleteRangeFinder();
+ ResetAutoPar();
+
+ eMode = SC_INPUT_NONE;
+ if (pInputWin)
+ pInputWin->StopEditEngine();
+ if (pExecuteSh)
+ pExecuteSh->StopEditShell();
+
+ aCursorPos.Set(MAXCOL+1,0,0); // Flag, dass ungueltig
+ pEngine->SetText(String());
+
+ if ( !pLastState && pExecuteSh )
+ pExecuteSh->UpdateInputHandler( TRUE ); // Status neu holen
+ else
+ NotifyChange( pLastState, TRUE );
+
+ nFormSelStart = nFormSelEnd = 0;
+ aFormText.Erase();
+}
+
+BOOL ScInputHandler::IsModalMode( SfxObjectShell* pDocSh )
+{
+ // Referenzen auf unbenanntes Dokument gehen nicht
+
+ return bFormulaMode && pRefViewSh
+ && pRefViewSh->GetViewData()->GetDocument()->GetDocumentShell() != pDocSh
+ && !pDocSh->HasName();
+}
+
+void ScInputHandler::AddRefEntry()
+{
+ UpdateActiveView();
+ if (!pTableView && !pTopView)
+ return; // z.B. FillMode
+
+ DataChanging(); // kann nicht neu sein
+
+ RemoveSelection();
+ if (pTableView)
+ pTableView->InsertText( ';', FALSE );
+ if (pTopView)
+ pTopView->InsertText( ';', FALSE );
+
+ DataChanged();
+}
+
+void ScInputHandler::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ HideTip();
+
+ BOOL bOtherDoc = ( pRefViewSh &&
+ pRefViewSh->GetViewData()->GetDocument() != pDoc );
+ if (bOtherDoc)
+ if (!pDoc->GetDocumentShell()->HasName())
+ {
+ // Referenzen auf unbenanntes Dokument gehen nicht
+ // (SetReference sollte dann auch nicht gerufen werden)
+
+ return;
+ }
+
+ UpdateActiveView();
+ if (!pTableView && !pTopView)
+ return; // z.B. FillMode
+
+ // nie das "=" ueberschreiben!
+ EditView* pActiveView = pTopView ? pTopView : pTableView;
+ ESelection aSel = pActiveView->GetSelection();
+ aSel.Adjust();
+ if ( aSel.nStartPara == 0 && aSel.nStartPos == 0 )
+ return;
+
+ DataChanging(); // kann nicht neu sein
+
+ // Selektion umdrehen, falls rueckwaerts (noetig ???)
+
+ if (pTableView)
+ {
+ ESelection aSel = pTableView->GetSelection();
+ if (aSel.nStartPos > aSel.nEndPos && aSel.nStartPara == aSel.nEndPara)
+ {
+ aSel.Adjust();
+ pTableView->SetSelection(aSel);
+ }
+ }
+ if (pTopView)
+ {
+ ESelection aSel = pTopView->GetSelection();
+ if (aSel.nStartPos > aSel.nEndPos && aSel.nStartPara == aSel.nEndPara)
+ {
+ aSel.Adjust();
+ pTopView->SetSelection(aSel);
+ }
+ }
+
+ // String aus Referenz erzeugen
+
+ String aRefStr;
+ if (bOtherDoc)
+ {
+ // Referenz auf anderes Dokument
+
+ DBG_ASSERT(rRef.aStart.Tab()==rRef.aEnd.Tab(), "nStartTab!=nEndTab");
+
+ String aTmp;
+ rRef.Format( aTmp, SCA_VALID|SCA_TAB_3D, pDoc ); // immer 3d
+
+ SfxObjectShell* pObjSh = pDoc->GetDocumentShell();
+ String aFileName = pObjSh->GetMedium()->GetName();
+
+ aRefStr = '\'';
+ aRefStr += aFileName;
+ aRefStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "'#" ));
+ aRefStr += aTmp;
+ }
+ else
+ {
+ if ( ( rRef.aStart.Tab() != aCursorPos.Tab() ||
+ rRef.aStart.Tab() != rRef.aEnd.Tab() ) && pDoc )
+ rRef.Format( aRefStr, SCA_VALID|SCA_TAB_3D, pDoc );
+ else
+ rRef.Format( aRefStr, SCA_VALID );
+ }
+
+ if (pTableView || pTopView)
+ {
+ if (pTableView)
+ pTableView->InsertText( aRefStr, TRUE );
+ if (pTopView)
+ pTopView->InsertText( aRefStr, TRUE );
+
+ DataChanged();
+ }
+
+ bSelIsRef = TRUE;
+}
+
+void ScInputHandler::InsertFunction( const String& rFuncName, BOOL bAddPar )
+{
+ if ( eMode == SC_INPUT_NONE )
+ {
+ DBG_ERROR("InsertFunction, nicht im Eingabemodus");
+ return;
+ }
+
+ UpdateActiveView();
+ if (!pTableView && !pTopView)
+ return; // z.B. FillMode
+
+ DataChanging(); // kann nicht neu sein
+
+ String aText = rFuncName;
+ if (bAddPar)
+ aText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "()" ));
+
+ if (pTableView)
+ {
+ pTableView->InsertText( aText, FALSE );
+ if (bAddPar)
+ {
+ ESelection aSel = pTableView->GetSelection();
+ --aSel.nStartPos;
+ --aSel.nEndPos;
+ pTableView->SetSelection(aSel);
+ }
+ }
+ if (pTopView)
+ {
+ pTopView->InsertText( aText, FALSE );
+ if (bAddPar)
+ {
+ ESelection aSel = pTopView->GetSelection();
+ --aSel.nStartPos;
+ --aSel.nEndPos;
+ pTopView->SetSelection(aSel);
+ }
+ }
+
+ DataChanged();
+
+ if (bAddPar)
+ AutoParAdded();
+}
+
+void ScInputHandler::ClearText()
+{
+ if ( eMode == SC_INPUT_NONE )
+ {
+ DBG_ERROR("ClearText, nicht im Eingabemodus");
+ return;
+ }
+
+ UpdateActiveView();
+ if (!pTableView && !pTopView)
+ return; // z.B. FillMode
+
+ DataChanging(); // darf nicht neu sein
+
+ String aEmpty;
+ if (pTableView)
+ {
+ pTableView->GetEditEngine()->SetText( aEmpty );
+ pTableView->SetSelection( ESelection(0,0, 0,0) );
+ }
+ if (pTopView)
+ {
+ pTopView->GetEditEngine()->SetText( aEmpty );
+ pTopView->SetSelection( ESelection(0,0, 0,0) );
+ }
+
+ DataChanged();
+}
+
+BOOL ScInputHandler::KeyInput( const KeyEvent& rKEvt, BOOL bStartEdit /* = FALSE */ )
+{
+ if (!bOptLoaded)
+ {
+ bAutoComplete = SC_MOD()->GetAppOptions().GetAutoComplete();
+ bOptLoaded = TRUE;
+ }
+
+ KeyCode aCode = rKEvt.GetKeyCode();
+ USHORT nModi = aCode.GetModifier();
+ BOOL bShift = aCode.IsShift();
+ BOOL bControl = aCode.IsMod1();
+ BOOL bAlt = aCode.IsMod2();
+ USHORT nCode = aCode.GetCode();
+ sal_Unicode nChar = rKEvt.GetCharCode();
+
+ // Alt-Return wird gebraucht, alle anderen Alt's und Ctrl-Tab nicht:
+#ifndef MAC
+ if (( bAlt && !bControl && nCode != KEY_RETURN ) ||
+ ( bControl && aCode.GetCode() == KEY_TAB ))
+ return FALSE;
+#endif
+ // auf'm Mac nicht, sonst werden druckbare Zeichen unterdrueckt
+
+ BOOL bInputLine = ( eMode==SC_INPUT_TOP );
+
+ BOOL bUsed = FALSE;
+ BOOL bSkip = FALSE;
+ BOOL bDoEnter = FALSE;
+
+ switch ( nCode )
+ {
+ case KEY_RETURN:
+ if (bControl && !bShift && !bInputLine)
+ bDoEnter = TRUE;
+ else if ( nModi == 0 && nTipVisible && pFormulaData && nAutoPos != SCPOS_INVALID )
+ {
+ PasteFunctionData();
+ bUsed = TRUE;
+ }
+ else if ( nModi == 0 && nTipVisible && aManualTip.Len() )
+ {
+ PasteManualTip();
+ bUsed = TRUE;
+ }
+ else
+ {
+ BYTE nMode = SC_ENTER_NORMAL;
+ if ( bShift && bControl )
+ nMode = SC_ENTER_MATRIX;
+ else if ( bAlt )
+ nMode = SC_ENTER_BLOCK;
+ EnterHandler( nMode );
+
+ if (pActiveViewSh)
+ pActiveViewSh->MoveCursorEnter( bShift && !bControl );
+
+ bUsed = TRUE;
+ }
+ break;
+ case KEY_TAB:
+ if (!bControl && !bAlt)
+ {
+ if ( pFormulaData && nTipVisible && nAutoPos != SCPOS_INVALID )
+ {
+ // blaettern
+
+ NextFormulaEntry( bShift );
+ }
+ else if ( pColumnData && bUseTab && nAutoPos != SCPOS_INVALID )
+ {
+ // in den Eintraegen der AutoEingabe blaettern
+
+ NextAutoEntry( bShift );
+ }
+ else
+ {
+ EnterHandler();
+
+ // TabKeyInput gibt auf manchen Rechnern unter W95 Stackueberlaeufe,
+ // darum direkter Aufruf:
+ if (pActiveViewSh)
+ pActiveViewSh->FindNextUnprot( bShift );
+ }
+ bUsed = TRUE;
+ }
+ break;
+ case KEY_ESCAPE:
+ if ( nTipVisible )
+ {
+ HideTip();
+ bUsed = TRUE;
+ }
+ else if (eMode != SC_INPUT_NONE)
+ {
+ CancelHandler();
+ bUsed = TRUE;
+ }
+ else
+ bSkip = TRUE;
+ break;
+ case KEY_F2:
+ if ( !bShift && !bControl && !bAlt && eMode == SC_INPUT_TABLE )
+ {
+ eMode = SC_INPUT_TYPE;
+ bUsed = TRUE;
+ }
+ break;
+ }
+
+ // Cursortasten nur ausfuehren, wenn schon im Edit-Modus
+ // z.B. wegen Shift-Ctrl-PageDn (ist nicht als Accelerator definiert)
+
+ BOOL bCursorKey = EditEngine::DoesKeyMoveCursor(rKEvt);
+ BOOL bInsKey = ( nCode == KEY_INSERT && !nModi ); // Insert wie Cursortasten behandeln
+ if ( !bUsed && !bSkip && ( bDoEnter || EditEngine::DoesKeyChangeText(rKEvt) ||
+ ( eMode != SC_INPUT_NONE && ( bCursorKey || bInsKey ) ) ) )
+ {
+ HideTip();
+
+ if (bSelIsRef)
+ {
+ RemoveSelection();
+ bSelIsRef = FALSE;
+ }
+
+ UpdateActiveView();
+ BOOL bNewView = DataChanging( nChar );
+
+ if (bProtected) // Zelle geschuetzt?
+ bUsed = TRUE; // Key-Event nicht weiterleiten
+ else // Aenderungen erlaubt
+ {
+ if (bNewView ) // neu anlegen
+ {
+ if (pActiveViewSh)
+ pActiveViewSh->GetViewData()->GetDocShell()->PostEditView( pEngine, aCursorPos );
+ UpdateActiveView();
+ if (eMode==SC_INPUT_NONE)
+ if (pTableView || pTopView)
+ {
+ String aStrLoP;
+
+ if ( bStartEdit && bCellHasPercentFormat && nChar >= '0' && nChar <= '9' )
+ aStrLoP = '%';
+
+ if (pTableView)
+ {
+ pTableView->GetEditEngine()->SetText( aStrLoP );
+ pTableView->SetSelection( ESelection(0,0, 0,0) );
+ }
+ if (pTopView)
+ {
+ pTopView->GetEditEngine()->SetText( aStrLoP );
+ pTopView->SetSelection( ESelection(0,0, 0,0) );
+ }
+ }
+ SyncViews();
+ }
+
+ if (pTableView || pTopView)
+ {
+// pActiveView->SetEditEngineUpdateMode(TRUE); //! gibt Muell !!!!
+
+ if (bDoEnter)
+ {
+ if (pTableView)
+ if( pTableView->PostKeyEvent( KeyEvent( CHAR_CR, KeyCode(KEY_RETURN) ) ) )
+ bUsed = TRUE;
+ if (pTopView)
+ if( pTopView->PostKeyEvent( KeyEvent( CHAR_CR, KeyCode(KEY_RETURN) ) ) )
+ bUsed = TRUE;
+ }
+ else if ( nAutoPar && nChar == ')' && CursorAtClosingPar() )
+ {
+ SkipClosingPar();
+ bUsed = TRUE;
+ }
+ else
+ {
+ if (pTableView)
+ if ( pTableView->PostKeyEvent( rKEvt ) )
+ bUsed = TRUE;
+ if (pTopView)
+ if ( pTopView->PostKeyEvent( rKEvt ) )
+ bUsed = TRUE;
+ }
+
+ // Auto-Eingabe:
+
+ if ( bUsed && bAutoComplete )
+ {
+ bUseTab = FALSE;
+ nAutoPos = SCPOS_INVALID; // nicht weitersuchen
+ if ( nChar && nChar != 8 && nChar != 127 ) // nicht BS und Delete
+ {
+ if (bFormulaMode)
+ UseFormulaData();
+ else
+ UseColData();
+ }
+ }
+
+ // when the selection is changed manually or an opening parenthesis
+ // is typed, stop overwriting parentheses
+ if ( bUsed && ( nChar == '(' || bCursorKey ) )
+ ResetAutoPar();
+
+ if ( KEY_INSERT == nCode )
+ SFX_APP()->GetBindings().Invalidate( SID_ATTR_INSERT );
+ }
+
+ DataChanged(); // ruft auch UpdateParenthesis()
+ InvalidateAttribs(); //! in DataChanged ?
+ }
+ }
+
+ if (pTopView && eMode != SC_INPUT_NONE)
+ SyncViews();
+
+ return bUsed;
+}
+
+void ScInputHandler::NotifyChange( const ScInputHdlState* pState,
+ BOOL bForce )
+{
+ // #62806# Wenn der Aufruf aus einem Makro-Aufruf im EnterHandler kommt,
+ // gleich abbrechen und nicht den Status durcheinander bringen
+ if (bInEnterHandler)
+ return;
+
+ BOOL bRepeat = (pState == pLastState);
+ if (!bRepeat && pState && pLastState)
+ bRepeat = (*pState == *pLastState);
+ if (bRepeat && !bForce)
+ return;
+
+ if ( pState && !pLastState ) // wieder enablen
+ bForce = TRUE;
+
+ BOOL bHadObject = pLastState && pLastState->GetEditData();
+
+ //! Before EditEngine gets eventually created (so it gets the right pools)
+ pActiveViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+
+ ImplCreateEditEngine();
+
+ if ( pState != pLastState )
+ {
+ delete pLastState;
+ pLastState = pState ? new ScInputHdlState( *pState ) : NULL;
+ }
+
+ if ( pState && pActiveViewSh )
+ {
+ ScModule* pScMod = SC_MOD();
+
+ if ( pState )
+ {
+ BOOL bIgnore = FALSE;
+
+ // hier auch fremde Referenzeingabe beruecksichtigen (z.B. Funktions-AP),
+ // FormEditData falls gerade von der Hilfe auf Calc umgeschaltet wird:
+
+ if ( !bFormulaMode && !pScMod->IsFormulaMode() && !pScMod->GetFormEditData() )
+ {
+ if ( bModified )
+ {
+ if (pState->GetPos() != aCursorPos)
+ {
+ if (!bProtected)
+ EnterHandler();
+ }
+ else
+ bIgnore = TRUE;
+ }
+
+ if ( !bIgnore /* || bRepeat */ )
+ {
+ const ScAddress& rSPos = pState->GetStartPos();
+ const ScAddress& rEPos = pState->GetEndPos();
+ const EditTextObject* pData = pState->GetEditData();
+ String aString = pState->GetString();
+ BOOL bTxtMod = FALSE;
+
+ aCursorPos = pState->GetPos();
+
+ if ( pData /* || bRepeat */ )
+ bTxtMod = TRUE;
+ else if ( bHadObject )
+ bTxtMod = TRUE;
+ else if ( bTextValid )
+ bTxtMod = ( aString != aCurrentText );
+ else
+ bTxtMod = ( aString != GetEditText(pEngine) );
+
+ if ( bTxtMod || bForce )
+ {
+ if (pData)
+ {
+ pEngine->SetText( *pData );
+ aString = GetEditText(pEngine);
+ lcl_RemoveTabs(aString);
+ bTextValid = FALSE;
+ aCurrentText.Erase();
+ }
+ else
+ {
+ aCurrentText = aString;
+ bTextValid = TRUE; //! erst nur als String merken
+ }
+
+ if ( pInputWin )
+ pInputWin->SetTextString(aString);
+ }
+
+ if ( pInputWin ) // Bereichsanzeige
+ {
+ String aPosStr;
+
+ // Ist der Bereich ein Name?
+ //! per Timer suchen ???
+
+ if ( pActiveViewSh )
+ pActiveViewSh->GetViewData()->GetDocument()->
+ GetRangeAtBlock( ScRange( rSPos, rEPos ), &aPosStr );
+
+ if ( !aPosStr.Len() ) // kein Name -> formatieren
+ {
+ if ( rSPos != rEPos )
+ {
+ String aStr;
+ rSPos.Format( aPosStr, SCA_VALID );
+ aPosStr += ':';
+ rEPos.Format( aStr, SCA_VALID );
+ aPosStr += aStr;
+ }
+ else
+ aCursorPos.Format( aPosStr, SCA_VALID );
+ }
+
+ pInputWin->SetPosString(aPosStr);
+ pInputWin->SetSumAssignMode();
+ }
+
+ SFX_APP()->Broadcast( SfxSimpleHint( FID_KILLEDITVIEW ) );
+
+ // As long as the content is not edited, turn off online spelling.
+ // Online spelling is turned back on in StartTable, after setting
+ // the right language from cell attributes.
+
+ ULONG nCntrl = pEngine->GetControlWord();
+ if ( nCntrl & EE_CNTRL_ONLINESPELLING )
+ pEngine->SetControlWord( nCntrl & ~EE_CNTRL_ONLINESPELLING );
+
+ bModified = FALSE;
+ bSelIsRef = FALSE;
+ bProtected = FALSE;
+ }
+ }
+ }
+
+// bProtected = FALSE;
+
+ if ( pInputWin)
+ {
+ if(!pScMod->IsFormulaMode()&& !pScMod->IsRefDialogOpen()) //BugID 54702
+ { //Wenn RefDialog offen, dann nicht enablen
+ if ( !pInputWin->IsEnabled())
+ {
+ pInputWin->Enable();
+ if(pDelayTimer )
+ {
+ DELETEZ( pDelayTimer );
+ }
+ }
+ }
+ else if(pScMod->IsRefDialogOpen())
+ { // Da jedes Dokument eigenes InputWin hat, sollte
+ if ( !pDelayTimer ) // nochmals Timer gestartet werden, da sonst Ein-
+ { // gabezeile evt. noch aktiv ist.
+ pDelayTimer = new Timer;
+ pDelayTimer->SetTimeout( 500 ); // 100ms Verzoegerung
+ pDelayTimer->SetTimeoutHdl( LINK( this, ScInputHandler, DelayTimer ) );
+ pDelayTimer->Start();
+ }
+ }
+ }
+ }
+ else // !pState || !pActiveViewSh
+ {
+ if ( !pDelayTimer )
+ {
+ pDelayTimer = new Timer;
+ pDelayTimer->SetTimeout( 500 ); // 100ms Verzoegerung
+ pDelayTimer->SetTimeoutHdl( LINK( this, ScInputHandler, DelayTimer ) );
+ pDelayTimer->Start();
+ }
+ }
+
+ HideTip();
+}
+void ScInputHandler::ResetDelayTimer()
+{
+ if(pDelayTimer!=NULL)
+ {
+ DELETEZ( pDelayTimer );
+
+ if ( pInputWin)
+ {
+ pInputWin->Enable();
+ }
+ }
+}
+
+IMPL_LINK( ScInputHandler, DelayTimer, Timer*, pTimer )
+{
+ if ( pTimer == pDelayTimer )
+ {
+ DELETEZ( pDelayTimer );
+
+ if ( NULL == pLastState || SC_MOD()->IsFormulaMode() || SC_MOD()->IsRefDialogOpen())
+ {
+ //! new method at ScModule to query if function autopilot is open
+
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if ( pViewFrm && pViewFrm->GetChildWindow( SID_OPENDLG_FUNCTION ) )
+ {
+ if ( pInputWin)
+ {
+ pInputWin->EnableButtons( FALSE );
+ pInputWin->Disable();
+ }
+ }
+ else if ( !bFormulaMode ) // #39210# Formel auch z.B. bei Hilfe behalten
+ {
+ pActiveViewSh = NULL;
+ pEngine->SetText( EMPTY_STRING );
+ if ( pInputWin )
+ {
+ pInputWin->SetPosString( EMPTY_STRING );
+ pInputWin->SetTextString( EMPTY_STRING );
+ pInputWin->Disable();
+ }
+ }
+ }
+ }
+ return 0;
+}
+
+void ScInputHandler::InputSelection( EditView* pView )
+{
+ SyncViews( pView );
+
+ UpdateParenthesis(); // Selektion geaendert -> Klammer-Hervorhebung neu
+
+ // when the selection is changed manually, stop overwriting parentheses
+ ResetAutoPar();
+}
+
+void ScInputHandler::InputChanged( EditView* pView )
+{
+ ESelection aSelection = pView->GetSelection();
+
+ UpdateActiveView();
+
+ BOOL bNewView = DataChanging(); //! kann das hier ueberhaupt sein?
+ aCurrentText = pView->GetEditEngine()->GetText(); // auch den String merken
+ pEngine->SetText( aCurrentText );
+ DataChanged();
+ bTextValid = TRUE; // wird in DataChanged auf FALSE gesetzt
+
+ if ( bNewView )
+ if ( pActiveViewSh )
+ pActiveViewSh->GetViewData()->GetDocShell()->PostEditView( pEngine, aCursorPos );
+
+ SyncViews( pView );
+}
+
+const String& ScInputHandler::GetEditString()
+{
+ if (pEngine)
+ {
+ aCurrentText = pEngine->GetText(); // immer neu aus Engine
+ bTextValid = TRUE;
+ }
+
+ return aCurrentText;
+}
+
+Size ScInputHandler::GetTextSize()
+{
+ Size aSize;
+ if ( pEngine )
+ aSize = Size( pEngine->CalcTextWidth(), pEngine->GetTextHeight() );
+
+ return aSize;
+}
+
+BOOL ScInputHandler::GetTextAndFields( ScEditEngineDefaulter& rDestEngine )
+{
+ BOOL bRet = FALSE;
+ if (pEngine)
+ {
+ // Feldbefehle enthalten?
+
+ USHORT nParCnt = pEngine->GetParagraphCount();
+ SfxItemSet aSet = pEngine->GetAttribs( ESelection(0,0,nParCnt,0) );
+ SfxItemState eFieldState = aSet.GetItemState( EE_FEATURE_FIELD, FALSE );
+ if ( eFieldState == SFX_ITEM_DONTCARE || eFieldState == SFX_ITEM_SET )
+ {
+ // Inhalt kopieren
+
+ EditTextObject* pObj = pEngine->CreateTextObject();
+ rDestEngine.SetText(*pObj);
+ delete pObj;
+
+ // Attribute loeschen
+
+ for (USHORT i=0; i<nParCnt; i++)
+ rDestEngine.QuickRemoveCharAttribs( i );
+
+ // Absaetze zusammenfassen
+
+ while ( nParCnt > 1 )
+ {
+ xub_StrLen nLen = rDestEngine.GetTextLen( (USHORT)0 );
+ ESelection aSel( 0,nLen, 1,0 );
+ rDestEngine.QuickInsertText( ' ', aSel ); // Umbruch durch Space ersetzen
+ --nParCnt;
+ }
+
+ bRet = TRUE;
+ }
+ }
+ return bRet;
+}
+
+
+//------------------------------------------------------------------------
+// Methoden fuer FunktionsAutopiloten:
+// InputGetSelection, InputSetSelection, InputReplaceSelection, InputGetFormulaStr
+//------------------------------------------------------------------------
+
+void ScInputHandler::InputGetSelection( xub_StrLen& rStart, xub_StrLen& rEnd )
+{
+ rStart = nFormSelStart;
+ rEnd = nFormSelEnd;
+}
+
+//------------------------------------------------------------------------
+
+EditView* ScInputHandler::GetFuncEditView()
+{
+ UpdateActiveView(); // wegen pTableView
+
+ EditView* pView = NULL;
+ if ( pInputWin )
+ {
+ pInputWin->MakeDialogEditView();
+ pView = pInputWin->GetEditView();
+ }
+ else
+ {
+ if ( eMode != SC_INPUT_TABLE )
+ {
+ bCreatingFuncView = TRUE; // RangeFinder nicht anzeigen
+ SetMode( SC_INPUT_TABLE );
+ bCreatingFuncView = FALSE;
+ if ( pTableView )
+ pTableView->GetEditEngine()->SetText( EMPTY_STRING );
+ }
+ pView = pTableView;
+ }
+
+ return pView;
+}
+
+//------------------------------------------------------------------------
+
+void ScInputHandler::InputSetSelection( xub_StrLen nStart, xub_StrLen nEnd )
+{
+ if ( nStart <= nEnd )
+ {
+ nFormSelStart = nStart;
+ nFormSelEnd = nEnd;
+ }
+ else
+ {
+ nFormSelEnd = nStart;
+ nFormSelStart = nEnd;
+ }
+
+ EditView* pView = GetFuncEditView();
+ if (pView)
+ pView->SetSelection( ESelection(0,nStart, 0,nEnd) );
+
+ bModified = TRUE;
+}
+
+//------------------------------------------------------------------------
+
+void ScInputHandler::InputReplaceSelection( const String& rStr )
+{
+ if (!pRefViewSh)
+ pRefViewSh = pActiveViewSh;
+
+ DBG_ASSERT(nFormSelEnd>=nFormSelStart,"Selektion kaputt...");
+
+ xub_StrLen nOldLen = nFormSelEnd-nFormSelStart;
+ xub_StrLen nNewLen = rStr.Len();
+ if (nOldLen)
+ aFormText.Erase( nFormSelStart, nOldLen );
+ if (nNewLen)
+ aFormText.Insert( rStr, nFormSelStart );
+ nFormSelEnd = nFormSelStart + nNewLen;
+
+ EditView* pView = GetFuncEditView();
+ if (pView)
+ {
+ pView->SetEditEngineUpdateMode( FALSE );
+// pView->InsertText( rStr, TRUE );
+ pView->GetEditEngine()->SetText( aFormText );
+ pView->SetSelection( ESelection(0,nFormSelStart, 0,nFormSelEnd) );
+ pView->SetEditEngineUpdateMode( TRUE );
+ }
+ bModified = TRUE;
+}
+
+//------------------------------------------------------------------------
+
+String ScInputHandler::InputGetFormulaStr()
+{
+ return aFormText; //! eigene Membervariable?
+}
+
+//========================================================================
+// ScInputHdlState
+//========================================================================
+
+ScInputHdlState::ScInputHdlState( const ScAddress& rCurPos,
+ const ScAddress& rStartPos,
+ const ScAddress& rEndPos,
+ const String& rString,
+ const EditTextObject* pData )
+ : aCursorPos ( rCurPos ),
+ aStartPos ( rStartPos ),
+ aEndPos ( rEndPos ),
+ aString ( rString ),
+ pEditData ( pData ? pData->Clone() : NULL )
+{
+}
+
+//------------------------------------------------------------------------
+
+ScInputHdlState::ScInputHdlState( const ScInputHdlState& rCpy )
+ : pEditData ( NULL )
+{
+ *this = rCpy;
+}
+
+//------------------------------------------------------------------------
+
+ScInputHdlState::~ScInputHdlState()
+{
+ delete pEditData;
+}
+
+//------------------------------------------------------------------------
+
+int ScInputHdlState::operator==( const ScInputHdlState& r ) const
+{
+ return ( (aStartPos == r.aStartPos)
+ && (aEndPos == r.aEndPos)
+ && (aCursorPos == r.aCursorPos)
+ && (aString == r.aString)
+ && ScGlobal::EETextObjEqual( pEditData, r.pEditData ) );
+}
+
+//------------------------------------------------------------------------
+
+ScInputHdlState& ScInputHdlState::operator=( const ScInputHdlState& r )
+{
+ delete pEditData;
+
+ aCursorPos = r.aCursorPos;
+ aStartPos = r.aStartPos;
+ aEndPos = r.aEndPos;
+ aString = r.aString;
+ pEditData = r.pEditData ? r.pEditData->Clone() : NULL;
+
+ return *this;
+}
+
+
+
+
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
new file mode 100644
index 000000000000..7398b264a2f2
--- /dev/null
+++ b/sc/source/ui/app/inputwin.cxx
@@ -0,0 +1,1348 @@
+/*************************************************************************
+ *
+ * $RCSfile: inputwin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/editview.hxx>
+#include <svx/editstat.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/event.hxx>
+#include <sfx2/imgmgr.hxx>
+#include <offmgr/app.hxx>
+#include <vcl/system.hxx>
+#include <stdlib.h> // qsort
+#include <svx/eeitem.hxx>
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+
+#include "inputwin.hxx"
+#include "scmod.hxx"
+#include "uiitems.hxx"
+#include "global.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "editutil.hxx"
+#include "inputhdl.hxx"
+#include "tabvwsh.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "appoptio.hxx"
+#include "rangenam.hxx"
+#include "compiler.hrc"
+
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+
+
+
+#define TEXT_STARTPOS 3
+#define THESIZE 1000000 //!!! langt... :-)
+#define TBX_WINDOW_HEIGHT 22 // in Pixeln - fuer alle Systeme gleich?
+
+#if defined OS2 || defined MAC
+#define INPUTWIN_APPFONT
+#else
+#undef INPUTWIN_APPFONT
+#endif
+
+#ifdef INPUTWIN_APPFONT
+// Unter OS/2 wird die Fontgroesse vom App-Font genommen
+#else
+#define TEXT_FONT_HEIGHT 180 // 9pt
+#endif
+
+// STATIC DATA -----------------------------------------------------------
+
+//==================================================================
+// class ScInputWindowWrapper
+//==================================================================
+
+SFX_IMPL_CHILDWINDOW(ScInputWindowWrapper,FID_INPUTLINE_STATUS)
+
+ScInputWindowWrapper::ScInputWindowWrapper( Window* pParent,
+ USHORT nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo )
+ : SfxChildWindow( pParent, nId )
+{
+ ScInputWindow* pWin=new ScInputWindow( pParent );
+ pWindow = pWin;
+
+ pWin->Show();
+
+ pWin->SetSizePixel( pWin->CalcWindowSizePixel() );
+
+ eChildAlignment = SFX_ALIGN_LOWESTTOP;
+ pBindings->Invalidate( FID_TOGGLEINPUTLINE );
+}
+
+// GetInfo fliegt wieder raus, wenn es ein SFX_IMPL_TOOLBOX gibt !!!!
+
+SfxChildWinInfo __EXPORT ScInputWindowWrapper::GetInfo() const
+{
+ SfxChildWinInfo aInfo = SfxChildWindow::GetInfo();
+ return aInfo;
+}
+
+//==================================================================
+
+#define IMAGE(id) pImgMgr->SeekImage(id,pScMod)
+
+//==================================================================
+// class ScInputWindow
+//==================================================================
+
+ScInputWindow::ScInputWindow( Window* pParent ) :
+#ifdef OS2
+// #37192# ohne WB_CLIPCHILDREN wg. os/2 Paintproblem
+ ToolBox ( pParent, WinBits(WB_BORDER|WB_3DLOOK) ),
+#else
+// mit WB_CLIPCHILDREN, sonst Flicker
+ ToolBox ( pParent, WinBits(WB_BORDER|WB_3DLOOK|WB_CLIPCHILDREN) ),
+#endif
+ aWndPos ( this ),
+ aTextWindow ( this ),
+ aTextOk ( ScResId( SCSTR_QHELP_BTNOK ) ), // nicht immer neu aus Resource
+ aTextCancel ( ScResId( SCSTR_QHELP_BTNCANCEL ) ),
+ aTextSum ( ScResId( SCSTR_QHELP_BTNSUM ) ),
+ aTextEqual ( ScResId( SCSTR_QHELP_BTNEQUAL ) ),
+ bIsOkCancelMode ( FALSE ),
+ pInputHdl ( NULL )
+{
+ SfxImageManager* pImgMgr = SFX_IMAGEMANAGER();
+ ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ ScModule* pScMod = SC_MOD();
+
+ // Positionsfenster, 3 Buttons, Eingabefenster
+ InsertWindow ( 1, &aWndPos, 0, 0 );
+ InsertSeparator ( 1 );
+ InsertItem ( SID_INPUT_FUNCTION, IMAGE( SID_INPUT_FUNCTION ), 0, 2 );
+ InsertItem ( SID_INPUT_SUM, IMAGE( SID_INPUT_SUM ), 0, 3 );
+ InsertItem ( SID_INPUT_EQUAL, IMAGE( SID_INPUT_EQUAL ), 0, 4 );
+ InsertSeparator ( 5 );
+ InsertWindow ( 7, &aTextWindow, 0, 6 );
+
+ aWndPos .SetQuickHelpText( ScResId( SCSTR_QHELP_POSWND ) );
+ aWndPos .SetHelpId ( HID_INSWIN_POS );
+ aTextWindow.SetQuickHelpText( ScResId( SCSTR_QHELP_INPUTWND ) );
+ aTextWindow.SetHelpId ( HID_INSWIN_INPUT );
+
+ // kein SetHelpText, die Hilfetexte kommen aus der Hilfe
+
+ SetItemText ( SID_INPUT_FUNCTION, ScResId( SCSTR_QHELP_BTNCALC ) );
+ SetHelpId ( SID_INPUT_FUNCTION, HID_INSWIN_CALC );
+
+ SetItemText ( SID_INPUT_SUM, aTextSum );
+ SetHelpId ( SID_INPUT_SUM, HID_INSWIN_SUMME );
+
+ SetItemText ( SID_INPUT_EQUAL, aTextEqual );
+ SetHelpId ( SID_INPUT_EQUAL, HID_INSWIN_FUNC );
+
+ SetHelpId( HID_SC_INPUTWIN ); // fuer die ganze Eingabezeile
+
+ aWndPos .Show();
+ aTextWindow .Show();
+
+ pInputHdl = SC_MOD()->GetInputHdl();
+ if (pInputHdl)
+ pInputHdl->SetInputWindow( this );
+
+ if ( pInputHdl && pInputHdl->GetFormString().Len() )
+ {
+ // Umschalten waehrend der Funktionsautopilot aktiv ist
+ // -> Inhalt des Funktionsautopiloten wieder anzeigen
+ //! auch Selektion (am InputHdl gemerkt) wieder anzeigen
+
+ aTextWindow.SetTextString( pInputHdl->GetFormString() );
+ }
+ else if ( pInputHdl && pInputHdl->IsInputMode() )
+ {
+ // wenn waehrend des Editierens die Eingabezeile weg war
+ // (Editieren einer Formel, dann umschalten zu fremdem Dokument/Hilfe),
+ // wieder den gerade editierten Text aus dem InputHandler anzeigen
+
+ aTextWindow.SetTextString( pInputHdl->GetEditString() ); // Text anzeigen
+ if ( pInputHdl->IsTopMode() )
+ pInputHdl->SetMode( SC_INPUT_TABLE ); // Focus kommt eh nach unten
+ }
+ else if ( pViewSh )
+ pViewSh->UpdateInputHandler( TRUE ); // unbedingtes Update
+
+ pImgMgr->RegisterToolBox( this, SC_MOD() );
+}
+
+__EXPORT ScInputWindow::~ScInputWindow()
+{
+ BOOL bDown = ( ScGlobal::pScInternational == NULL ); // schon nach Clear?
+
+ // if any view's input handler has a pointer to this input window, reset it
+ // (may be several ones, #74522#)
+ // member pInputHdl is not used here
+
+ if ( !bDown )
+ {
+ TypeId aScType = TYPE(ScTabViewShell);
+ SfxViewShell* pSh = SfxViewShell::GetFirst( &aScType );
+ while ( pSh )
+ {
+ ScInputHandler* pHdl = ((ScTabViewShell*)pSh)->GetInputHandler();
+ if ( pHdl && pHdl->GetInputWindow() == this )
+ pHdl->SetInputWindow( NULL );
+ pSh = SfxViewShell::GetNext( *pSh, &aScType );
+ }
+ }
+
+ SFX_IMAGEMANAGER()->ReleaseToolBox( this );
+}
+
+void ScInputWindow::SetInputHandler( ScInputHandler* pNew )
+{
+ // wird im Activate der View gerufen...
+
+ DBG_ASSERT(pNew,"SetInputHandler: NULL");
+ if ( pNew != pInputHdl )
+ {
+ // Bei Reload (letzte Version) ist pInputHdl der Input-Handler der alten,
+ // geloeschten ViewShell, darum hier auf keinen Fall anfassen!
+
+ pInputHdl = pNew;
+ if (pInputHdl)
+ pInputHdl->SetInputWindow( this );
+ }
+}
+
+void __EXPORT ScInputWindow::Select()
+{
+ ScModule* pScMod = SC_MOD();
+ ToolBox::Select();
+
+ switch ( GetCurItemId() )
+ {
+ case SID_INPUT_FUNCTION:
+ {
+ //! new method at ScModule to query if function autopilot is open
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if ( pViewFrm && !pViewFrm->GetChildWindow( SID_OPENDLG_FUNCTION ) )
+ {
+ SFX_DISPATCHER().Execute( SID_OPENDLG_FUNCTION,
+ SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD );
+
+ // die Toolbox wird sowieso disabled, also braucht auch nicht umgeschaltet
+ // zu werden, egal ob's geklappt hat oder nicht
+// SetOkCancelMode();
+ }
+ }
+ break;
+
+ case SID_INPUT_CANCEL:
+ pScMod->InputCancelHandler();
+ SetSumAssignMode();
+ break;
+
+ case SID_INPUT_OK:
+ pScMod->InputEnterHandler();
+ SetSumAssignMode();
+ aTextWindow.Invalidate(); // sonst bleibt Selektion stehen
+ break;
+
+ case SID_INPUT_SUM:
+ {
+ ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ if ( pViewSh )
+ {
+ ScMarkData& rMark = pViewSh->GetViewData()->GetMarkData();
+
+ ScRangeList* pRangeList = new ScRangeList;
+ BOOL bDataFound = pViewSh->GetAutoSumArea( *pRangeList );
+
+ if ((rMark.IsMarked() || rMark.IsMultiMarked()) && bDataFound)
+ {
+ pViewSh->EnterAutoSum( *pRangeList ); // Block mit Summen fuellen
+ }
+ else // nur in Eingabezeile einfuegen
+ {
+ String aFormula = '=';
+ ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
+ ScFuncDesc* pDesc = pFuncMgr->Get( SC_OPCODE_SUM );
+ if ( pDesc && pDesc->pFuncName )
+ {
+ aFormula += *pDesc->pFuncName;
+ aFormula.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "()" ));
+ }
+
+ ScDocument* pDoc = pViewSh->GetViewData()->GetDocument();
+ xub_StrLen nPos = aFormula.Len() - 1;
+ String aRef;
+ pRangeList->Format( aRef, SCA_VALID, pDoc );
+ aFormula.Insert( aRef, nPos );
+
+ SetFuncString( aFormula );
+
+ if ( bDataFound && pScMod->IsEditMode() )
+ {
+ ScInputHandler* pHdl = pScMod->GetInputHdl( pViewSh );
+ if ( pHdl )
+ {
+ pHdl->InitRangeFinder( aFormula );
+
+ //! SetSelection am InputHandler ???
+ //! bSelIsRef setzen ???
+ xub_StrLen nOpen = aFormula.Search('(');
+ xub_StrLen nLen = aFormula.Len();
+ if ( nOpen != STRING_NOTFOUND && nLen > nOpen )
+ {
+ ESelection aSel(0,nOpen+1,0,nLen-1);
+ EditView* pTableView = pHdl->GetTableView();
+ if (pTableView)
+ pTableView->SetSelection(aSel);
+ EditView* pTopView = pHdl->GetTopView();
+ if (pTopView)
+ pTopView->SetSelection(aSel);
+ }
+ }
+ }
+ }
+ delete pRangeList;
+ }
+ }
+ break;
+
+ case SID_INPUT_EQUAL:
+ {
+ aTextWindow.StartEditEngine();
+ if ( pScMod->IsEditMode() ) // nicht, wenn z.B. geschuetzt
+ {
+ aTextWindow.GrabFocus();
+ aTextWindow.SetTextString( '=' );
+
+ EditView* pView = aTextWindow.GetEditView();
+ if (pView)
+ {
+ pView->SetSelection( ESelection(0,1, 0,1) );
+ pScMod->InputChanged(pView);
+ SetOkCancelMode();
+ pView->SetEditEngineUpdateMode(TRUE);
+ }
+ }
+ break;
+ }
+ }
+}
+
+void __EXPORT ScInputWindow::Resize()
+{
+ ToolBox::Resize();
+
+ long nWidth = GetSizePixel().Width();
+ long nLeft = aTextWindow.GetPosPixel().X();
+ Size aSize = aTextWindow.GetSizePixel();
+
+ aSize.Width() = Max( ((long)(nWidth - nLeft - 5)), (long)0 );
+ aTextWindow.SetSizePixel( aSize );
+ aTextWindow.Invalidate();
+}
+
+void ScInputWindow::SetFuncString( const String& rString, BOOL bDoEdit )
+{
+ //! new method at ScModule to query if function autopilot is open
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ EnableButtons( pViewFrm && !pViewFrm->GetChildWindow( SID_OPENDLG_FUNCTION ) );
+ aTextWindow.StartEditEngine();
+
+ ScModule* pScMod = SC_MOD();
+ if ( pScMod->IsEditMode() )
+ {
+ aTextWindow.GrabFocus();
+ aTextWindow.SetTextString( rString );
+ EditView* pView = aTextWindow.GetEditView();
+ if (pView)
+ {
+ xub_StrLen nLen = rString.Len();
+
+ if ( nLen > 0 )
+ {
+ nLen--;
+ pView->SetSelection( ESelection( 0, nLen, 0, nLen ) );
+ }
+
+ pScMod->InputChanged(pView);
+ if ( bDoEdit )
+ SetOkCancelMode(); // nicht, wenn gleich hinterher Enter/Cancel
+
+ pView->SetEditEngineUpdateMode(TRUE);
+ }
+ }
+}
+
+void ScInputWindow::SetPosString( const String& rStr )
+{
+ aWndPos.SetPos( rStr );
+}
+
+void ScInputWindow::SetTextString( const String& rString )
+{
+ if (rString.Len() <= 32767)
+ aTextWindow.SetTextString(rString);
+ else
+ {
+ String aNew = rString;
+ aNew.Erase(32767);
+ aTextWindow.SetTextString(aNew);
+ }
+}
+
+const String& ScInputWindow::GetTextString()
+{
+ return aTextWindow.GetTextString();
+}
+
+void ScInputWindow::SetOkCancelMode()
+{
+ //! new method at ScModule to query if function autopilot is open
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ EnableButtons( pViewFrm && !pViewFrm->GetChildWindow( SID_OPENDLG_FUNCTION ) );
+
+ ScModule* pScMod = SC_MOD();
+ SfxImageManager* pImgMgr = SFX_IMAGEMANAGER();
+ if (!bIsOkCancelMode)
+ {
+ RemoveItem( 3 ); // SID_INPUT_SUM und SID_INPUT_EQUAL entfernen
+ RemoveItem( 3 );
+ InsertItem( SID_INPUT_CANCEL, IMAGE( SID_INPUT_CANCEL ), 0, 3 );
+ InsertItem( SID_INPUT_OK, IMAGE( SID_INPUT_OK ), 0, 4 );
+ SetItemText ( SID_INPUT_CANCEL, aTextCancel );
+ SetHelpId ( SID_INPUT_CANCEL, HID_INSWIN_CANCEL );
+ SetItemText ( SID_INPUT_OK, aTextOk );
+ SetHelpId ( SID_INPUT_OK, HID_INSWIN_OK );
+ bIsOkCancelMode = TRUE;
+ }
+}
+
+void ScInputWindow::SetSumAssignMode()
+{
+ //! new method at ScModule to query if function autopilot is open
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ EnableButtons( pViewFrm && !pViewFrm->GetChildWindow( SID_OPENDLG_FUNCTION ) );
+
+ ScModule* pScMod = SC_MOD();
+ SfxImageManager* pImgMgr = SFX_IMAGEMANAGER();
+ if (bIsOkCancelMode)
+ {
+ // SID_INPUT_CANCEL, und SID_INPUT_OK entfernen
+ RemoveItem( 3 );
+ RemoveItem( 3 );
+ InsertItem( SID_INPUT_SUM, IMAGE( SID_INPUT_SUM ), 0, 3 );
+ InsertItem( SID_INPUT_EQUAL, IMAGE( SID_INPUT_EQUAL ), 0, 4 );
+ SetItemText ( SID_INPUT_SUM, aTextSum );
+ SetHelpId ( SID_INPUT_SUM, HID_INSWIN_SUMME );
+ SetItemText ( SID_INPUT_EQUAL, aTextEqual );
+ SetHelpId ( SID_INPUT_EQUAL, HID_INSWIN_FUNC );
+ bIsOkCancelMode = FALSE;
+
+ SetFormulaMode(FALSE); // kein editieren -> keine Formel
+ }
+}
+
+void ScInputWindow::SetFormulaMode( BOOL bSet )
+{
+ aWndPos.SetFormulaMode(bSet);
+ aTextWindow.SetFormulaMode(bSet);
+}
+
+void __EXPORT ScInputWindow::SetText( const String& rString )
+{
+ ToolBox::SetText(rString);
+}
+
+String __EXPORT ScInputWindow::GetText() const
+{
+ return ToolBox::GetText();
+}
+
+
+EditView* ScInputWindow::ActivateEdit( const String& rText,
+ const ESelection& rSel )
+{
+ if ( !aTextWindow.IsActive() )
+ {
+ aTextWindow.StartEditEngine();
+ aTextWindow.GrabFocus();
+ aTextWindow.SetTextString( rText );
+ aTextWindow.GetEditView()->SetSelection( rSel );
+ }
+
+ return aTextWindow.GetEditView();
+}
+
+BOOL ScInputWindow::IsActive()
+{
+ return aTextWindow.IsActive();
+}
+
+EditView* ScInputWindow::GetEditView()
+{
+ return aTextWindow.GetEditView();
+}
+
+void ScInputWindow::MakeDialogEditView()
+{
+ aTextWindow.MakeDialogEditView();
+}
+
+void ScInputWindow::StopEditEngine()
+{
+ aTextWindow.StopEditEngine();
+}
+
+void ScInputWindow::TextGrabFocus()
+{
+ aTextWindow.GrabFocus();
+}
+
+void ScInputWindow::TextInvalidate()
+{
+ aTextWindow.Invalidate();
+}
+
+void ScInputWindow::PosGrabFocus()
+{
+ aWndPos.GrabFocus();
+}
+
+void ScInputWindow::EnableButtons( BOOL bEnable )
+{
+ EnableItem( SID_INPUT_FUNCTION, bEnable );
+ EnableItem( bIsOkCancelMode ? SID_INPUT_CANCEL : SID_INPUT_SUM, bEnable );
+ EnableItem( bIsOkCancelMode ? SID_INPUT_OK : SID_INPUT_EQUAL, bEnable );
+// Invalidate();
+}
+
+void ScInputWindow::StateChanged( StateChangedType nType )
+{
+ ToolBox::StateChanged( nType );
+
+ if ( nType == STATE_CHANGE_INITSHOW ) Resize();
+}
+//========================================================================
+// Eingabefenster
+//========================================================================
+
+ScTextWnd::ScTextWnd( Window* pParent )
+ : Window ( pParent, WinBits(WB_HIDE | WB_BORDER) ),
+ pEditEngine ( NULL ),
+ pEditView ( NULL ),
+ bIsInsertMode( TRUE ),
+ bFormulaMode ( FALSE )
+{
+ // Unter OS/2 sieht alles andere als der App-Font bei kleinen Aufloesungen
+ // voellig daneben aus. Unter Windows kann der App-Font z.B. die typographischen
+ // Anfuehrungszeichen nicht darstellen, darum hier die Unterscheidung:
+#ifdef INPUTWIN_APPFONT
+ Font aAppFont = GetFont();
+ aTextFont = aAppFont;
+ aTextFont.SetSize( PixelToLogic( aAppFont.GetSize(), MAP_TWIP ) ); // AppFont ist in Pixeln
+#else
+ aTextFont = System::GetStandardFont( STDFONT_SWISS );
+ aTextFont.SetSize( Size(0,TEXT_FONT_HEIGHT) );
+#endif
+
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+
+ Color aBgColor= rStyleSettings.GetWindowColor();
+ Color aTxtColor= rStyleSettings.GetWindowTextColor();
+
+ aTextFont.SetTransparent ( TRUE );
+ aTextFont.SetFillColor ( aBgColor );
+ //aTextFont.SetColor ( COL_FIELDTEXT );
+ aTextFont.SetColor (aTxtColor);
+ aTextFont.SetWeight ( WEIGHT_NORMAL );
+
+ SetSizePixel ( Size(1,TBX_WINDOW_HEIGHT) );
+ SetBackground ( aBgColor );
+ SetLineColor ( COL_BLACK );
+ SetMapMode ( MAP_TWIP );
+ SetPointer ( POINTER_TEXT );
+}
+
+__EXPORT ScTextWnd::~ScTextWnd()
+{
+ delete pEditView;
+ delete pEditEngine;
+}
+
+void __EXPORT ScTextWnd::Paint( const Rectangle& rRec )
+{
+ if (pEditView)
+ pEditView->Paint( rRec );
+ else
+ {
+ SetFont( aTextFont );
+
+ long nDiff = GetOutputSizePixel().Height()
+ - LogicToPixel( Size( 0, GetTextHeight() ) ).Height();
+// if (nDiff<2) nDiff=2; // mind. 1 Pixel
+
+ //! Clipping am rechten Rand?
+ DrawText( PixelToLogic( Point( TEXT_STARTPOS, nDiff/2 ) ), aString );
+ }
+}
+
+void __EXPORT ScTextWnd::Resize()
+{
+ if (pEditView)
+ {
+ Size aSize = GetOutputSizePixel();
+ long nDiff = aSize.Height()
+ - LogicToPixel( Size( 0, GetTextHeight() ) ).Height();
+
+#ifdef OS2_DOCH_NICHT
+ nDiff-=2; // wird durch 2 geteilt
+ // passt sonst nicht zur normalen Textausgabe
+#endif
+
+ aSize.Width() -= 4;
+
+ pEditView->SetOutputArea(
+ PixelToLogic( Rectangle( Point( TEXT_STARTPOS, (nDiff > 0) ? nDiff/2 : 1 ),
+ aSize ) ) );
+ }
+}
+
+void __EXPORT ScTextWnd::MouseMove( const MouseEvent& rMEvt )
+{
+ if (pEditView)
+ pEditView->MouseMove( rMEvt );
+}
+
+void __EXPORT ScTextWnd::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if (!HasFocus())
+ {
+ StartEditEngine();
+ if ( SC_MOD()->IsEditMode() )
+ GrabFocus();
+ }
+
+ if (pEditView)
+ {
+ pEditView->SetEditEngineUpdateMode( TRUE );
+ pEditView->MouseButtonDown( rMEvt );
+ }
+}
+
+void __EXPORT ScTextWnd::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ if (pEditView)
+ if (pEditView->MouseButtonUp( rMEvt ))
+ SC_MOD()->InputSelection( pEditView );
+}
+
+void __EXPORT ScTextWnd::Command( const CommandEvent& rCEvt )
+{
+ USHORT nCommand = rCEvt.GetCommand();
+ if ( pEditView /* && ( nCommand == COMMAND_STARTDRAG || nCommand == COMMAND_VOICE ) */ )
+ {
+ ScModule* pScMod = SC_MOD();
+ ScTabViewShell* pStartViewSh = ScTabViewShell::GetActiveViewShell();
+
+ if ( nCommand == COMMAND_STARTEXTTEXTINPUT )
+ {
+ SfxItemSet* pSet = new SfxItemSet( pEditView->GetEditEngine()->GetEmptyItemSet() );
+ Font aFont = GetSettings().GetStyleSettings().GetAppFont();
+ pSet->Put( SvxFontItem( aFont.GetFamily(), aFont.GetName(), EMPTY_STRING,
+ aFont.GetPitch(), aFont.GetCharSet(), EE_CHAR_FONTINFO ) );
+ ((ScEditEngineDefaulter*)pEditView->GetEditEngine())->SetDefaults( pSet );
+ }
+
+ // #63263# verhindern, dass die EditView beim View-Umschalten wegkommt
+ pScMod->SetInEditCommand( TRUE );
+ pEditView->Command( rCEvt );
+ pScMod->SetInEditCommand( FALSE );
+
+ // #48929# COMMAND_STARTDRAG heiss noch lange nicht, dass der Inhalt geaendert wurde
+ // darum in dem Fall kein InputChanged
+ //! erkennen, ob mit Move gedraggt wurde, oder Drag&Move irgendwie verbieten
+
+ if ( nCommand == COMMAND_STARTDRAG )
+ {
+ // ist auf eine andere View gedraggt worden?
+ ScTabViewShell* pEndViewSh = ScTabViewShell::GetActiveViewShell();
+ if ( pEndViewSh != pStartViewSh && pStartViewSh != NULL )
+ {
+ ScViewData* pViewData = pStartViewSh->GetViewData();
+ ScInputHandler* pHdl = pScMod->GetInputHdl( pStartViewSh );
+ if ( pHdl && pViewData->HasEditView( pViewData->GetActivePart() ) )
+ {
+ pHdl->CancelHandler();
+ pViewData->GetView()->ShowCursor(); // fehlt bei KillEditView, weil nicht aktiv
+ }
+ }
+ }
+ else
+ SC_MOD()->InputChanged( pEditView );
+ }
+ else
+ Window::Command(rCEvt); // sonst soll sich die Basisklasse drum kuemmern...
+}
+
+void __EXPORT ScTextWnd::KeyInput(const KeyEvent& rKEvt)
+{
+ if (!SC_MOD()->InputKeyEvent( rKEvt ))
+ {
+ BOOL bUsed = FALSE;
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if ( pViewSh )
+ bUsed = pViewSh->SfxKeyInput(rKEvt); // nur Acceleratoren, keine Eingabe
+ if (!bUsed)
+ Window::KeyInput( rKEvt );
+ }
+}
+
+void __EXPORT ScTextWnd::GetFocus()
+{
+}
+
+void __EXPORT ScTextWnd::LoseFocus()
+{
+}
+
+String __EXPORT ScTextWnd::GetText() const
+{
+ // ueberladen, um per Testtool an den Text heranzukommen
+
+ if ( pEditEngine )
+ return pEditEngine->GetText();
+ else
+ return GetTextString();
+}
+
+void ScTextWnd::SetFormulaMode( BOOL bSet )
+{
+ if ( bSet != bFormulaMode )
+ {
+ bFormulaMode = bSet;
+ UpdateAutoCorrFlag();
+ }
+}
+
+void ScTextWnd::UpdateAutoCorrFlag()
+{
+ if ( pEditEngine )
+ {
+ ULONG nControl = pEditEngine->GetControlWord();
+ ULONG nOld = nControl;
+ if ( bFormulaMode )
+ nControl &= ~EE_CNTRL_AUTOCORRECT; // keine Autokorrektur in Formeln
+ else
+ nControl |= EE_CNTRL_AUTOCORRECT; // sonst schon
+ if ( nControl != nOld )
+ pEditEngine->SetControlWord( nControl );
+ }
+}
+
+void ScTextWnd::StartEditEngine()
+{
+ // #31147# Bei "eigener Modalitaet" (Doc-modale Dialoge) nicht aktivieren
+ SfxObjectShell* pObjSh = SfxObjectShell::Current();
+ if ( pObjSh && pObjSh->IsInModalMode() )
+ return;
+
+ if ( !pEditView || !pEditEngine )
+ {
+ ScFieldEditEngine* pNew;
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if ( pViewSh )
+ {
+ const ScDocument* pDoc = pViewSh->GetViewData()->GetDocument();
+ pNew = new ScFieldEditEngine( pDoc->GetEnginePool(), pDoc->GetEditPool() );
+ }
+ else
+ pNew = new ScFieldEditEngine( EditEngine::CreatePool(), NULL, TRUE );
+ pNew->SetExecuteURL( FALSE );
+ pEditEngine = pNew;
+
+ pEditEngine->SetUpdateMode( FALSE );
+ pEditEngine->SetPaperSize( Size( THESIZE, 300 ) ); //!!! size
+ pEditEngine->SetWordDelimiters(
+ ScEditUtil::ModifyDelimiters( pEditEngine->GetWordDelimiters() ) );
+
+ UpdateAutoCorrFlag();
+
+ {
+ SfxItemSet* pSet = new SfxItemSet( pEditEngine->GetEmptyItemSet() );
+ pEditEngine->SetFontInfoInItemSet( *pSet, aTextFont );
+ pEditEngine->SetDefaults( pSet );
+ }
+
+ // #57254# Wenn in der Zelle URL-Felder enthalten sind, muessen die auch in
+ // die Eingabezeile uebernommen werden, weil sonst die Positionen nicht stimmen.
+
+ BOOL bFilled = FALSE;
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl();
+ if ( pHdl ) //! Testen, ob's der richtige InputHdl ist?
+ bFilled = pHdl->GetTextAndFields( *pEditEngine );
+
+ pEditEngine->SetUpdateMode( TRUE );
+
+ // aString ist die Wahrheit...
+ if ( bFilled && pEditEngine->GetText() == aString )
+ Invalidate(); // Repaint fuer (hinterlegte) Felder
+ else
+ pEditEngine->SetText(aString); // dann wenigstens den richtigen Text
+
+ pEditView = new EditView( pEditEngine, this );
+ pEditView->SetInsertMode(bIsInsertMode);
+
+ // Text aus Clipboard wird als ASCII einzeilig uebernommen
+ ULONG n = pEditView->GetControlWord();
+ pEditView->SetControlWord( n | EV_CNTRL_SINGLELINEPASTE );
+
+ pEditEngine->InsertView( pEditView, EE_APPEND );
+
+ Resize();
+ }
+
+ SC_MOD()->SetInputMode( SC_INPUT_TOP );
+ SFX_BINDINGS().Invalidate( SID_ATTR_INSERT );
+}
+
+void ScTextWnd::StopEditEngine()
+{
+ if (pEditView)
+ {
+ ScModule* pScMod = SC_MOD();
+
+ pScMod->InputSelection( pEditView );
+ aString = pEditEngine->GetText();
+ bIsInsertMode = pEditView->IsInsertMode();
+ BOOL bSelection = pEditView->HasSelection();
+ DELETEZ(pEditView);
+ DELETEZ(pEditEngine);
+
+ if (pScMod->IsEditMode())
+ pScMod->SetInputMode(SC_INPUT_TABLE);
+
+ SFX_BINDINGS().Invalidate( SID_ATTR_INSERT );
+
+ if (bSelection)
+ Invalidate(); // damit Selektion nicht stehenbleibt
+ }
+}
+
+void ScTextWnd::SetTextString( const String& rNewString )
+{
+ if ( rNewString != aString )
+ {
+ // Position der Aenderung suchen, nur Rest painten
+
+ long nInvPos = 0;
+ long nStartPos = 0;
+ long nYPos = 0;
+ long nTextSize = 0;
+
+ if (!pEditEngine)
+ {
+ xub_StrLen nDifPos;
+ if (rNewString.Len() > aString.Len())
+ nDifPos = rNewString.Match(aString);
+ else
+ nDifPos = aString.Match(rNewString);
+
+ long nSize1 = GetTextWidth(aString);
+ long nSize2 = GetTextWidth(rNewString);
+ if ( nSize1>0 && nSize2>0 )
+ nTextSize = Max( nSize1, nSize2 );
+ else
+ nTextSize = GetOutputSize().Width(); // Ueberlauf
+
+ if (nDifPos == STRING_MATCH)
+ nDifPos = 0;
+
+ // -1 wegen Rundung und "A"
+ Point aLogicStart = PixelToLogic(Point(TEXT_STARTPOS-1,0));
+ nStartPos = aLogicStart.X();
+ nInvPos = nStartPos;
+ if (nDifPos)
+ nInvPos += GetTextWidth(aString,0,nDifPos);
+
+ USHORT nFlags = 0;
+ if ( nDifPos == aString.Len() ) // only new characters appended
+ nFlags = INVALIDATE_NOERASE; // then background is already clear
+
+ Invalidate( Rectangle( nInvPos, 0,
+ nStartPos+nTextSize, GetOutputSize().Height()-1 ),
+ nFlags );
+ }
+ else
+ {
+ pEditEngine->SetText(rNewString);
+ }
+
+ aString = rNewString;
+ }
+}
+
+const String& ScTextWnd::GetTextString() const
+{
+ return aString;
+}
+
+BOOL ScTextWnd::IsActive()
+{
+ return HasFocus();
+}
+
+EditView* ScTextWnd::GetEditView()
+{
+ return pEditView;
+}
+
+void ScTextWnd::MakeDialogEditView()
+{
+ if ( pEditView ) return;
+
+ ScFieldEditEngine* pNew;
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if ( pViewSh )
+ {
+ const ScDocument* pDoc = pViewSh->GetViewData()->GetDocument();
+ pNew = new ScFieldEditEngine( pDoc->GetEnginePool(), pDoc->GetEditPool() );
+ }
+ else
+ pNew = new ScFieldEditEngine( EditEngine::CreatePool(), NULL, TRUE );
+ pNew->SetExecuteURL( FALSE );
+ pEditEngine = pNew;
+
+ pEditEngine->SetUpdateMode( FALSE );
+ pEditEngine->SetWordDelimiters( pEditEngine->GetWordDelimiters() += '=' );
+ pEditEngine->SetPaperSize( Size( THESIZE, 300 ) );
+
+ SfxItemSet* pSet = new SfxItemSet( pEditEngine->GetEmptyItemSet() );
+ pEditEngine->SetFontInfoInItemSet( *pSet, aTextFont );
+ pEditEngine->SetDefaults( pSet );
+ pEditEngine->SetUpdateMode( TRUE );
+
+ pEditView = new EditView( pEditEngine, this );
+ pEditEngine->InsertView( pEditView, EE_APPEND );
+
+ Resize();
+}
+
+void ScTextWnd::ImplInitSettings()
+{
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+
+ Color aBgColor= rStyleSettings.GetWindowColor();
+ Color aTxtColor= rStyleSettings.GetWindowTextColor();
+
+ aTextFont.SetFillColor ( aBgColor );
+ aTextFont.SetColor (aTxtColor);
+ SetBackground ( aBgColor );
+ Invalidate();
+}
+// -----------------------------------------------------------------------
+
+void ScTextWnd::DataChanged( const DataChangedEvent& rDCEvt )
+{
+ if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
+ (rDCEvt.GetFlags() & SETTINGS_STYLE) )
+ {
+ ImplInitSettings();
+ Invalidate();
+ }
+ else
+ Window::DataChanged( rDCEvt );
+}
+
+
+//========================================================================
+// Positionsfenster
+//========================================================================
+
+ScPosWnd::ScPosWnd( Window* pParent ) :
+ ComboBox ( pParent, WinBits(WB_HIDE | WB_DROPDOWN) ),
+ pAccel ( NULL ),
+ bFormulaMode( FALSE )
+{
+ Size aSize( GetTextWidth( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("GW99999:GW99999")) ),
+ GetTextHeight() );
+ aSize.Width() += 25; // ??
+ aSize.Height() = CalcWindowSizePixel(11); // Funktionen: 10 MRU + "andere..."
+ SetSizePixel( aSize );
+
+ FillRangeNames();
+
+ StartListening( *SFX_APP() ); // fuer Navigator-Bereichsnamen-Updates
+}
+
+__EXPORT ScPosWnd::~ScPosWnd()
+{
+ EndListening( *SFX_APP() );
+
+ delete pAccel;
+}
+
+void ScPosWnd::SetFormulaMode( BOOL bSet )
+{
+ if ( bSet != bFormulaMode )
+ {
+ bFormulaMode = bSet;
+
+ if ( bSet )
+ FillFunctions();
+ else
+ FillRangeNames();
+ }
+}
+
+void ScPosWnd::SetPos( const String& rPosStr )
+{
+ if ( aPosStr != rPosStr )
+ {
+ aPosStr = rPosStr;
+ SetText(aPosStr);
+ }
+}
+
+void ScPosWnd::FillRangeNames()
+{
+ Clear();
+
+ SfxObjectShell* pObjSh = SfxObjectShell::Current();
+ if ( pObjSh && pObjSh->ISA(ScDocShell) )
+ {
+ ScDocument* pDoc = ((ScDocShell*)pObjSh)->GetDocument();
+
+ // per Hand sortieren, weil Funktionen nicht sortiert werden:
+
+ ScRangeName* pRangeNames = pDoc->GetRangeName();
+ USHORT nCount = pRangeNames->GetCount();
+ if ( nCount > 0 )
+ {
+ USHORT nValidCount = 0;
+ ScRange aDummy;
+ USHORT i;
+ for ( i=0; i<nCount; i++ )
+ {
+ ScRangeData* pData = (*pRangeNames)[i];
+ if (pData->IsReference(aDummy))
+ nValidCount++;
+ }
+ if ( nValidCount )
+ {
+ ScRangeData** ppSortArray = new ScRangeData* [ nValidCount ];
+ USHORT j;
+ for ( i=0, j=0; i<nCount; i++ )
+ {
+ ScRangeData* pData = (*pRangeNames)[i];
+ if (pData->IsReference(aDummy))
+ ppSortArray[j++] = pData;
+ }
+#ifndef ICC
+ qsort( (void*)ppSortArray, nValidCount, sizeof(ScRangeData*),
+ &ScRangeData::QsortNameCompare );
+#else
+ qsort( (void*)ppSortArray, nValidCount, sizeof(ScRangeData*),
+ ICCQsortNameCompare );
+#endif
+ for ( j=0; j<nValidCount; j++ )
+ InsertEntry( ppSortArray[j]->GetName() );
+ delete [] ppSortArray;
+ }
+ }
+ }
+ SetText(aPosStr);
+}
+
+void ScPosWnd::FillFunctions()
+{
+ Clear();
+
+ String aFirstName;
+ const ScAppOptions& rOpt = SC_MOD()->GetAppOptions();
+ USHORT nMRUCount = rOpt.GetLRUFuncListCount();
+ const USHORT* pMRUList = rOpt.GetLRUFuncList();
+ if (pMRUList)
+ {
+ const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList();
+ ULONG nListCount = pFuncList->GetCount();
+ ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
+ for (USHORT i=0; i<nMRUCount; i++)
+ {
+ USHORT nId = pMRUList[i];
+ for (ULONG j=0; j<nListCount; j++)
+ {
+ const ScFuncDesc* pDesc = pFuncList->GetFunction( j );
+ if ( pDesc->nFIndex == nId && pDesc->pFuncName )
+ {
+ InsertEntry( *pDesc->pFuncName );
+ if (!aFirstName.Len())
+ aFirstName = *pDesc->pFuncName;
+ break; // nicht weitersuchen
+ }
+ }
+ }
+ }
+
+ //! Eintrag "Andere..." fuer Funktions-Autopilot wieder aufnehmen,
+ //! wenn der Funktions-Autopilot mit dem bisher eingegebenen Text arbeiten kann!
+
+// InsertEntry( ScGlobal::GetRscString(STR_FUNCTIONLIST_MORE) );
+
+ SetText(aFirstName);
+}
+
+void __EXPORT ScPosWnd::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType )
+{
+ if ( !bFormulaMode )
+ {
+ // muss die Liste der Bereichsnamen updgedated werden?
+
+ if ( rHint.ISA(SfxSimpleHint) )
+ {
+ ULONG nHintId = ((SfxSimpleHint&)rHint).GetId();
+ if ( nHintId == SC_HINT_AREAS_CHANGED || nHintId == SC_HINT_NAVIGATOR_UPDATEALL)
+ FillRangeNames();
+ }
+ else if ( rHint.ISA(SfxEventHint) )
+ {
+ ULONG nEventId = ((SfxEventHint&)rHint).GetEventId();
+ if ( nEventId == SFX_EVENT_ACTIVATEDOC )
+ FillRangeNames();
+ }
+ }
+}
+
+void __EXPORT ScPosWnd::Select()
+{
+ ComboBox::Select(); // in VCL gibt GetText() erst danach den ausgewaehlten Eintrag
+
+ if (!IsTravelSelect())
+ DoEnter();
+}
+
+void ScPosWnd::DoEnter()
+{
+ String aText = GetText();
+ if ( aText.Len() )
+ {
+ if ( bFormulaMode )
+ {
+ ScModule* pScMod = SC_MOD();
+ if ( aText == ScGlobal::GetRscString(STR_FUNCTIONLIST_MORE) )
+ {
+ // Funktions-Autopilot
+ //! mit dem bisher eingegebenen Text weiterarbeiten !!!
+
+ //! new method at ScModule to query if function autopilot is open
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if ( pViewFrm && !pViewFrm->GetChildWindow( SID_OPENDLG_FUNCTION ) )
+ SFX_DISPATCHER().Execute( SID_OPENDLG_FUNCTION,
+ SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD );
+ }
+ else
+ {
+ ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ ScInputHandler* pHdl = pScMod->GetInputHdl( pViewSh );
+ if (pHdl)
+ pHdl->InsertFunction( aText );
+ }
+ }
+ else
+ {
+ // Position (Zelle oder Namen) setzen
+ SfxStringItem aPosItem( SID_CURRENTCELL, aText );
+ SfxBoolItem aUnmarkItem( FN_PARAM_1, TRUE ); // Selektion aufheben
+ SFX_DISPATCHER().Execute( SID_CURRENTCELL,
+ SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
+ &aPosItem, &aUnmarkItem, 0L );
+
+ //! Fehler erkennen und meckern
+ }
+ }
+ else
+ SetText( aPosStr );
+
+ ReleaseFocus_Impl();
+}
+
+#ifdef VCL
+
+long __EXPORT ScPosWnd::Notify( NotifyEvent& rNEvt )
+{
+ // VCL geht ohne Acceleratoren - AccelSelectHdl kann demnaechst raus
+
+ ComboBox::Notify( rNEvt );
+ long nHandled = 0;
+
+ if ( rNEvt.GetType() == EVENT_KEYUP )
+ {
+ const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
+
+ switch ( pKEvt->GetKeyCode().GetCode() )
+ {
+ case KEY_RETURN:
+ DoEnter();
+ nHandled = 1;
+ break;
+
+ case KEY_ESCAPE:
+ if (!bFormulaMode)
+ SetText( aPosStr );
+ ReleaseFocus_Impl();
+ nHandled = 1;
+ break;
+ }
+ }
+ return nHandled;
+}
+
+#else
+
+void __EXPORT ScPosWnd::GetFocus()
+{
+ DBG_ASSERT( !pAccel, "Accelerator not deleted!" );
+ pAccel = new Accelerator;
+ pAccel->InsertItem( 1, KeyCode( KEY_RETURN ) );
+ pAccel->InsertItem( 2, KeyCode( KEY_ESCAPE ) );
+ pAccel->PushSelectHdl( LINK( this, ScPosWnd, AccelSelectHdl ) );
+
+ Application::InsertAccel( pAccel, ACCEL_ALWAYS );
+}
+
+void __EXPORT ScPosWnd::LoseFocus()
+{
+ DBG_ASSERT( pAccel, "Accelerator not found!" );
+ Application::RemoveAccel( pAccel );
+ delete pAccel;
+ pAccel = NULL;
+}
+
+#endif
+
+IMPL_LINK( ScPosWnd, AccelSelectHdl, Accelerator *, pAccel )
+{
+ if ( !pAccel )
+ return 0;
+
+ switch ( pAccel->GetCurKeyCode().GetCode() )
+ {
+ case KEY_RETURN:
+ DoEnter();
+ break;
+
+ case KEY_ESCAPE:
+ if (!bFormulaMode)
+ SetText( aPosStr );
+ ReleaseFocus_Impl();
+ break;
+
+ default:
+ break;
+ }
+ return TRUE;
+}
+
+void ScPosWnd::ReleaseFocus_Impl()
+{
+ SfxViewShell* pCurSh = SfxViewShell::Current();
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl( PTR_CAST( ScTabViewShell, pCurSh ) );
+ if ( pHdl && pHdl->IsTopMode() )
+ {
+ // Focus wieder in die Eingabezeile?
+
+ ScInputWindow* pInputWin = pHdl->GetInputWindow();
+ if (pInputWin)
+ {
+ pInputWin->TextGrabFocus();
+ return;
+ }
+ }
+
+ // Focus auf die aktive View
+
+ if ( pCurSh )
+ {
+ Window* pShellWnd = pCurSh->GetWindow();
+
+ if ( pShellWnd )
+ pShellWnd->GrabFocus();
+ }
+}
+
+
+
+
+
+
diff --git a/sc/source/ui/app/makefile.mk b/sc/source/ui/app/makefile.mk
new file mode 100644
index 000000000000..4c08d75ebee6
--- /dev/null
+++ b/sc/source/ui/app/makefile.mk
@@ -0,0 +1,136 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=app
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..$/pch$/ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+OBJFILES = \
+ $(OBJ)$/sclib.obj \
+
+SLOFILES = \
+ $(SLO)$/scmod.obj \
+ $(SLO)$/scmod2.obj \
+ $(SLO)$/scdll.obj \
+ $(SLO)$/typemap.obj \
+ $(SLO)$/dataobj.obj \
+ $(SLO)$/dataobj2.obj \
+ $(SLO)$/dataobj3.obj \
+ $(SLO)$/inputhdl.obj \
+ $(SLO)$/inputwin.obj \
+ $(SLO)$/rfindlst.obj \
+ $(SLO)$/uiitems.obj \
+ $(SLO)$/msgpool.obj \
+ $(SLO)$/client.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/scmod2.obj
+
+LIB3TARGET=$(SLB)$/ysclib.lib
+LIB3OBJFILES=$(SLO)$/sclib.obj
+
+# --- Targets -------------------------------------------------------
+
+.IF "$(depend)" == ""
+
+
+ALL: \
+ $(INCCOM)$/scdll0.hxx\
+ ALLTAR
+
+$(INCCOM)$/scdll0.hxx: makefile.mk
+.IF "$(GUI)"=="OS2"
+ echo #define DLL_NAME "sc$(UPD)$(DLLPOSTFIX)" >$@
+.ELSE
+.IF "$(GUI)"=="MAC"
+ echo "$(HASHMARK)define DLL_NAME ¶"sc$(UPD)$(DLLPOSTFIX).dll¶"" > $@
+.ELSE
+.IF "$(GUI)"=="UNX"
+ echo #define DLL_NAME \"libsc$(UPD)$(DLLPOSTFIX)$(DLLPOST)\" >$@
+.ELSE
+ echo #define DLL_NAME "sc$(UPD)$(DLLPOSTFIX)$(DLLPOST)" >$@
+.ENDIF
+.ENDIF
+.ENDIF
+.ENDIF
+
+.INCLUDE : target.mk
+
+$(SRS)$/app.srs: $(SOLARINCDIR)$/svx$/globlmn.hrc
+
diff --git a/sc/source/ui/app/msgpool.cxx b/sc/source/ui/app/msgpool.cxx
new file mode 100644
index 000000000000..d00face575be
--- /dev/null
+++ b/sc/source/ui/app/msgpool.cxx
@@ -0,0 +1,158 @@
+/*************************************************************************
+ *
+ * $RCSfile: msgpool.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "scitems.hxx"
+#include <svx/dialogs.hrc>
+
+#include "sc.hrc"
+#include "docpool.hxx"
+#include "msgpool.hxx"
+
+//------------------------------------------------------------------------
+
+static SfxItemInfo __READONLY_DATA aMsgItemInfos[] =
+{
+ { 0, SFX_ITEM_POOLABLE }, // SCITEM_STRING
+ { 0, SFX_ITEM_POOLABLE }, // SCITEM_SEARCHDATA - nicht mehr benutzt !!!
+ { SID_SORT, SFX_ITEM_POOLABLE }, // SCITEM_SORTDATA
+ { SID_QUERY, SFX_ITEM_POOLABLE }, // SCITEM_QUERYDATA
+ { SID_SUBTOTALS, SFX_ITEM_POOLABLE }, // SCITEM_SUBTDATA
+ { SID_CONSOLIDATE, SFX_ITEM_POOLABLE }, // SCITEM_CONSOLIDATEDATA
+ { SID_PIVOT_TABLE, SFX_ITEM_POOLABLE }, // SCITEM_PIVOTDATA
+ { SID_SOLVE, SFX_ITEM_POOLABLE }, // SCITEM_SOLVEDATA
+ { SID_SCUSERLISTS, SFX_ITEM_POOLABLE }, // SCITEM_USERLIST
+ { SID_PRINTER_NOTFOUND_WARN, SFX_ITEM_POOLABLE } // SCITEM_PRINTWARN
+};
+
+//------------------------------------------------------------------------
+
+ScMessagePool::ScMessagePool()
+ : SfxItemPool ( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScMessagePool")),
+ MSGPOOL_START, MSGPOOL_END,
+ aMsgItemInfos, NULL ),
+ //
+ aGlobalStringItem ( SfxStringItem ( SCITEM_STRING, String() ) ),
+ aGlobalSearchItem ( SvxSearchItem ( SCITEM_SEARCHDATA ) ),
+ aGlobalSortItem ( ScSortItem ( SCITEM_SORTDATA, NULL ) ),
+ aGlobalQueryItem ( ScQueryItem ( SCITEM_QUERYDATA, NULL, NULL ) ),
+ aGlobalSubTotalItem ( ScSubTotalItem ( SCITEM_SUBTDATA, NULL, NULL ) ),
+ aGlobalConsolidateItem ( ScConsolidateItem ( SCITEM_CONSOLIDATEDATA, NULL ) ),
+ aGlobalPivotItem ( ScPivotItem ( SCITEM_PIVOTDATA, NULL, NULL, FALSE ) ),
+ aGlobalSolveItem ( ScSolveItem ( SCITEM_SOLVEDATA, NULL ) ),
+ aGlobalUserListItem ( ScUserListItem ( SCITEM_USERLIST ) ),
+ //
+ aPrintWarnItem ( SfxBoolItem ( SCITEM_PRINTWARN, FALSE ) )
+{
+ ppPoolDefaults = new SfxPoolItem*[MSGPOOL_END - MSGPOOL_START + 1];
+
+ ppPoolDefaults[SCITEM_STRING - MSGPOOL_START] = &aGlobalStringItem;
+ ppPoolDefaults[SCITEM_SEARCHDATA - MSGPOOL_START] = &aGlobalSearchItem;
+ ppPoolDefaults[SCITEM_SORTDATA - MSGPOOL_START] = &aGlobalSortItem;
+ ppPoolDefaults[SCITEM_QUERYDATA - MSGPOOL_START] = &aGlobalQueryItem;
+ ppPoolDefaults[SCITEM_SUBTDATA - MSGPOOL_START] = &aGlobalSubTotalItem;
+ ppPoolDefaults[SCITEM_CONSOLIDATEDATA - MSGPOOL_START] = &aGlobalConsolidateItem;
+ ppPoolDefaults[SCITEM_PIVOTDATA - MSGPOOL_START] = &aGlobalPivotItem;
+ ppPoolDefaults[SCITEM_SOLVEDATA - MSGPOOL_START] = &aGlobalSolveItem;
+ ppPoolDefaults[SCITEM_USERLIST - MSGPOOL_START] = &aGlobalUserListItem;
+ ppPoolDefaults[SCITEM_PRINTWARN - MSGPOOL_START] = &aPrintWarnItem;
+
+ SetDefaults( ppPoolDefaults );
+
+ pDocPool = new ScDocumentPool;
+
+ SetSecondaryPool( pDocPool );
+}
+
+
+__EXPORT ScMessagePool::~ScMessagePool()
+{
+ Delete();
+ SetSecondaryPool( NULL ); // before deleting defaults (accesses defaults)
+
+ for ( USHORT i=0; i <= MSGPOOL_END-MSGPOOL_START; i++ )
+ SetRef( *ppPoolDefaults[i], 0 );
+
+ delete[] ppPoolDefaults;
+
+ delete pDocPool;
+}
+
+
+SfxMapUnit __EXPORT ScMessagePool::GetMetric( USHORT nWhich ) const
+{
+ // eigene Attribute: Twips, alles andere 1/100 mm
+
+ if ( nWhich >= ATTR_STARTINDEX && nWhich <= ATTR_ENDINDEX )
+ return SFX_MAPUNIT_TWIP;
+ else
+ return SFX_MAPUNIT_100TH_MM;
+}
+
+
+
+
+
diff --git a/sc/source/ui/app/rfindlst.cxx b/sc/source/ui/app/rfindlst.cxx
new file mode 100644
index 000000000000..9517ff82a4fc
--- /dev/null
+++ b/sc/source/ui/app/rfindlst.cxx
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * $RCSfile: rfindlst.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+#include "rfindlst.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+#define SC_RANGECOLORS 8
+
+static ColorData aColNames[SC_RANGECOLORS] =
+ { COL_LIGHTBLUE, COL_LIGHTRED, COL_LIGHTMAGENTA, COL_GREEN,
+ COL_BLUE, COL_RED, COL_MAGENTA, COL_BROWN };
+
+SEG_EOFGLOBALS()
+
+//==================================================================
+
+ScRangeFindList::ScRangeFindList(const String& rName) :
+ aDocName( rName ),
+ bHidden( FALSE )
+{
+}
+
+ScRangeFindList::~ScRangeFindList()
+{
+ void* pEntry = aEntries.First();
+ while ( pEntry )
+ {
+ delete (ScRangeFindData*) aEntries.Remove( pEntry );
+ pEntry = aEntries.Next();
+ }
+}
+
+ColorData ScRangeFindList::GetColorName( USHORT nIndex ) // static
+{
+ return aColNames[nIndex % SC_RANGECOLORS];
+}
+
+//==================================================================
+
+
+
+
diff --git a/sc/source/ui/app/scdll.cxx b/sc/source/ui/app/scdll.cxx
new file mode 100644
index 000000000000..4ae38aa5192c
--- /dev/null
+++ b/sc/source/ui/app/scdll.cxx
@@ -0,0 +1,523 @@
+/*************************************************************************
+ *
+ * $RCSfile: scdll.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+#ifndef _BTBXCTL_HXX //autogen
+#include <basctl/btbxctl.hxx>
+#endif
+#ifndef _TBXCTL_HXX //autogen
+#include <svx/tbxctl.hxx>
+#endif
+
+#include <segmentc.hxx>
+#include "scitems.hxx" // fuer tbxctrls etc.
+#include "scmod.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "cfgids.hxx"
+
+//! die Registrierung wird wegen CLOOKs in ein eigenes File wandern muessen...
+
+// Interface-Registrierung
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+#include "prevwsh.hxx"
+#include "drawsh.hxx"
+#include "drformsh.hxx"
+#include "drtxtob.hxx"
+#include "editsh.hxx"
+#include "pivotsh.hxx"
+#include "auditsh.hxx"
+#include "cellsh.hxx"
+#include "oleobjsh.hxx"
+#include "chartsh.hxx"
+#include "graphsh.hxx"
+#include "pgbrksh.hxx"
+
+#include "docpool.hxx"
+#include "appoptio.hxx"
+
+// Controls
+
+#include <svx/tbxalign.hxx>
+#include <svx/fillctrl.hxx>
+#include <svx/linectrl.hxx>
+#include <svx/tbcontrl.hxx>
+#include <svx/selctrl.hxx>
+#include <svx/insctrl.hxx>
+#include <svx/zoomctrl.hxx>
+#include <svx/flditem.hxx>
+#include <svx/modctrl.hxx>
+#include <svx/pszctrl.hxx>
+#include <svx/fntctl.hxx>
+#include <svx/fntszctl.hxx>
+
+#include "tbinsert.hxx"
+/*
+#include <basicsh.hxx> // TbxControls
+#include <tbxctrls.hxx>
+#include <tbxctl.hxx>
+#include <stbctrls.hxx>
+#include <mnuctrls.hxx>
+*/
+// Child-Windows
+#include "reffact.hxx"
+#include "navipi.hxx"
+#include "inputwin.hxx"
+#include <svx/fontwork.hxx>
+#include <svx/srchdlg.hxx>
+#include <offmgr/hyprlink.hxx>
+#include <svx/imapdlg.hxx>
+
+#include "editutil.hxx"
+#include <svx/svdfield.hxx> // SdrRegisterFieldClasses
+
+#include "dwfunctr.hxx"
+#include "acredlin.hxx"
+
+
+SEG_EOFGLOBALS()
+
+//------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(scdll_01)
+
+ScResId::ScResId( USHORT nId ) :
+ ResId( nId, SC_MOD()->GetResMgr() )
+{
+}
+
+//------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(scdll_02)
+
+void ScDLL::Init()
+{
+ // called directly after loading the DLL
+ // do whatever you want, you may use Sxx-DLL too
+
+ ScDocumentPool::InitVersionMaps(); // wird im ScModule ctor gebraucht
+
+ // the ScModule must be created
+ ScModuleDummy **ppShlPtr = (ScModuleDummy**) GetAppData(SHL_CALC);
+#ifndef SO3
+ SvFactory *pFact = (*ppShlPtr)->pScDocShellFactory;
+#else
+ SvFactory *pFact = (SvFactory*)(*ppShlPtr)->pScDocShellFactory;
+#endif
+ ScLibSignalFunc pFunc = (*ppShlPtr)->pSignalFunc;
+ delete (*ppShlPtr);
+ ScModule* pMod = new ScModule((SfxObjectFactory*)pFact);
+ (*ppShlPtr) = pMod;
+ (*ppShlPtr)->pScDocShellFactory = pFact;
+ (*ppShlPtr)->pSignalFunc = pFunc;
+
+ ScGlobal::Init(); // erst wenn der ResManager initialisiert ist
+ // erst nach ScGlobal::Init duerfen die App-Optionen
+ // initialisiert werden
+
+ // register your view-factories here
+
+ ScTabViewShell ::RegisterFactory(1);
+ ScPreviewShell ::RegisterFactory(2);
+
+ // register your shell-interfaces here
+
+ ScModule ::RegisterInterface(pMod);
+ ScDocShell ::RegisterInterface(pMod);
+ ScTabViewShell ::RegisterInterface(pMod);
+ ScPreviewShell ::RegisterInterface(pMod);
+ ScDrawShell ::RegisterInterface(pMod);
+ ScDrawFormShell ::RegisterInterface(pMod);
+ ScDrawTextObjectBar ::RegisterInterface(pMod);
+ ScEditShell ::RegisterInterface(pMod);
+ ScPivotShell ::RegisterInterface(pMod);
+ ScAuditingShell ::RegisterInterface(pMod);
+ ScFormatShell ::RegisterInterface(pMod);
+ ScCellShell ::RegisterInterface(pMod);
+ ScOleObjectShell ::RegisterInterface(pMod);
+ ScChartShell ::RegisterInterface(pMod);
+ ScGraphicShell ::RegisterInterface(pMod);
+ ScPageBreakShell ::RegisterInterface(pMod);
+
+
+
+ // register your controllers here
+
+ ScDocShell::Factory().RegisterMenuBar( ScResId(SCCFG_MENUBAR) );
+ ScDocShell::Factory().RegisterPluginMenuBar( ScResId(SCCFG_PLUGINMENU) );
+ ScDocShell::Factory().RegisterAccel( ScResId(SCCFG_ACCELERATOR) );
+
+ // eigene Controller
+ ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSERT, pMod);
+ ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSCELLS, pMod);
+ ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSOBJ, pMod);
+
+ // Svx-Toolbox-Controller
+ SvxTbxCtlDraw ::RegisterControl(SID_INSERT_DRAW, pMod);
+ SvxTbxCtlAlign ::RegisterControl(SID_OBJECT_ALIGN, pMod);
+ SvxFillToolBoxControl ::RegisterControl(0, pMod);
+ SvxLineStyleToolBoxControl ::RegisterControl(0, pMod);
+ SvxLineWidthToolBoxControl ::RegisterControl(0, pMod);
+ SvxLineColorToolBoxControl ::RegisterControl(0, pMod);
+ SvxLineEndToolBoxControl ::RegisterControl(SID_ATTR_LINEEND_STYLE, pMod);
+ SvxStyleToolBoxControl ::RegisterControl(SID_STYLE_APPLY, pMod);
+ SvxFontNameToolBoxControl ::RegisterControl(SID_ATTR_CHAR_FONT, pMod);
+ SvxFontHeightToolBoxControl ::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod);
+ SvxFontColorToolBoxControl ::RegisterControl(SID_ATTR_CHAR_COLOR, pMod);
+ SvxColorToolBoxControl ::RegisterControl(SID_BACKGROUND_COLOR, pMod);
+ SvxFrameToolBoxControl ::RegisterControl(SID_ATTR_BORDER, pMod);
+ SvxFrameLineStyleToolBoxControl ::RegisterControl(SID_FRAME_LINESTYLE, pMod);
+ SvxFrameLineColorToolBoxControl ::RegisterControl(SID_FRAME_LINECOLOR, pMod);
+ TbxControls ::RegisterControl(SID_CHOOSE_CONTROLS, pMod);
+
+ // Svx-StatusBar-Controller
+ SvxInsertStatusBarControl ::RegisterControl(SID_ATTR_INSERT, pMod);
+ SvxSelectionModeControl ::RegisterControl(SID_STATUS_SELMODE, pMod);
+ SvxZoomStatusBarControl ::RegisterControl(SID_ATTR_ZOOM, pMod);
+ SvxModifyControl ::RegisterControl(SID_DOC_MODIFIED, pMod);
+ SvxPosSizeStatusBarControl ::RegisterControl(SID_ATTR_SIZE, pMod);
+
+ // Svx-Menue-Controller
+ SvxFontMenuControl ::RegisterControl(SID_ATTR_CHAR_FONT, pMod);
+ SvxFontSizeMenuControl ::RegisterControl(SID_ATTR_CHAR_FONTHEIGHT, pMod);
+
+ // Child-Windows
+
+ // Hack: Eingabezeile mit 42 registrieren, damit sie im PlugIn immer sichtbar ist
+ ScInputWindowWrapper ::RegisterChildWindow(42, pMod, SFX_CHILDWIN_TASK);
+ ScNavigatorDialogWrapper ::RegisterChildWindowContext(pMod);
+ ScSolverDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScNameDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScPivotLayoutWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScTabOpDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScFilterDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScSpecialFilterDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScDbNameDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScConsolidateDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScChartDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScPrintAreasDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScCondFormatDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScColRowNameRangesDlgWrapper::RegisterChildWindow(FALSE, pMod);
+ ScFormulaDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+
+ // First docking Window for Calc
+ ScFunctionChildWindow ::RegisterChildWindow(FALSE, pMod);
+
+ // Redlining- Window
+ ScAcceptChgDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScSimpleRefDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ ScHighlightChgDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+
+
+ SvxFontWorkChildWindow ::RegisterChildWindow(FALSE, pMod);
+ SvxHyperlinkDlgWrapper ::RegisterChildWindow(FALSE, pMod);
+ SvxIMapDlgChildWindow ::RegisterChildWindow(FALSE, pMod);
+
+ // Edit-Engine-Felder, soweit nicht schon in OfficeApplication::Init
+
+ SvClassManager& rClassManager = SvxFieldItem::GetClassManager();
+// rClassManager.SV_CLASS_REGISTER( SvxURLField );
+// rClassManager.SV_CLASS_REGISTER( SvxDateField );
+// rClassManager.SV_CLASS_REGISTER( SvxPageField );
+ rClassManager.SV_CLASS_REGISTER( SvxPagesField );
+// rClassManager.SV_CLASS_REGISTER( SvxTimeField );
+ rClassManager.SV_CLASS_REGISTER( SvxFileField );
+// rClassManager.SV_CLASS_REGISTER( SvxExtFileField );
+ rClassManager.SV_CLASS_REGISTER( SvxTableField );
+
+ SdrRegisterFieldClasses(); // SvDraw-Felder registrieren
+
+ pMod->PutItem( SfxUInt16Item( SID_ATTR_METRIC, pMod->GetAppOptions().GetAppMetric() ) );
+
+ // StarOne Services are now handled in the registry
+}
+
+#pragma SEG_FUNCDEF(scdll_03)
+
+void ScDLL::Exit()
+{
+ // called directly befor unloading the DLL
+ // do whatever you want, Sxx-DLL is accessible
+
+ // the SxxModule must be destroyed
+ ScModuleDummy **ppShlPtr = (ScModuleDummy**) GetAppData(SHL_CALC);
+ delete (*ppShlPtr);
+ (*ppShlPtr) = NULL;
+
+ // auf keinen Fall ein neues ScModuleDummy anlegen, weil dessen vtable sonst
+ // in der DLL waere und das Loeschen im LibExit schiefgehen wuerde
+
+ // ScGlobal::Clear ist schon im Module-dtor
+}
+
+//------------------------------------------------------------------
+// Statusbar
+//------------------------------------------------------------------
+
+#define TEXT_WIDTH(s) rStatusBar.GetTextWidth((s))
+
+#pragma SEG_FUNCDEF(scdll_04)
+
+void ScDLL::FillStatusBar(StatusBar &rStatusBar)
+{
+ // Dokumentposition (Tabelle x / y)
+ rStatusBar.InsertItem( SID_STATUS_DOCPOS,
+ TEXT_WIDTH( String().Fill( 10, 'X' ) ),
+ SIB_LEFT|SIB_AUTOSIZE );
+
+ // Seitenvorlage
+ rStatusBar.InsertItem( SID_STATUS_PAGESTYLE,
+ TEXT_WIDTH( String().Fill( 15, 'X' ) ),
+ SIB_LEFT|SIB_AUTOSIZE );
+
+ // Ma"sstab
+ rStatusBar.InsertItem( SID_ATTR_ZOOM,
+ SvxZoomStatusBarControl::GetDefItemWidth(rStatusBar),
+ SIB_CENTER );
+
+ // Einfuege-/Ueberschreibmodus
+ rStatusBar.InsertItem( SID_ATTR_INSERT,
+ SvxInsertStatusBarControl::GetDefItemWidth(rStatusBar),
+ SIB_CENTER );
+
+ // Selektionsmodus
+ rStatusBar.InsertItem( SID_STATUS_SELMODE,
+ SvxSelectionModeControl::GetDefItemWidth(rStatusBar),
+ SIB_CENTER );
+
+ // Dokument geaendert
+ rStatusBar.InsertItem( SID_DOC_MODIFIED,
+ SvxModifyControl::GetDefItemWidth(rStatusBar));
+
+ // Mail
+ rStatusBar.InsertItem( SID_MAIL_NOTIFY,
+ TEXT_WIDTH( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Mail")) ),
+ SIB_CENTER );
+
+ // den aktuellen Kontext anzeigen Uhrzeit / FramePos / TabellenInfo / Errors
+ rStatusBar.InsertItem( SID_ATTR_SIZE,
+ SvxPosSizeStatusBarControl::GetDefItemWidth(rStatusBar),
+ SIB_AUTOSIZE|SIB_LEFT|SIB_USERDRAW);
+}
+
+#undef TEXT_WIDTH
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.47 2000/09/17 14:08:54 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.46 2000/09/04 13:50:01 tbe
+ basicide, isetbrw, si, vcdlged from svx to basctl
+
+ Revision 1.45 2000/08/31 16:38:18 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.44 2000/08/03 19:02:30 nn
+ pluginmenu
+
+ Revision 1.43 2000/04/17 13:26:28 nn
+ unicode changes
+
+ Revision 1.42 1999/06/28 13:30:46 NN
+ #67287# StarOne services no longer registered here
+
+
+ Rev 1.41 28 Jun 1999 15:30:46 NN
+ #67287# StarOne services no longer registered here
+
+ Rev 1.40 02 Jun 1999 21:38:20 ANK
+ #66547# SubShells
+
+ Rev 1.39 16 Mar 1999 14:17:08 NN
+ #62845# GlobalSettings unter richtigem Service-Namen registrieren
+
+ Rev 1.38 04 Mar 1999 21:14:50 NN
+ #62191# kein unsigned mehr
+
+ Rev 1.37 22 Feb 1999 20:52:34 ANK
+ #47158# Erweiterungen fuer neue DrawForm-Shell
+
+ Rev 1.36 02 Feb 1999 20:23:22 NN
+ #53308# TF_ONE51: AutoFormate wiederbelebt
+
+ Rev 1.35 26 Jan 1999 14:42:32 NN
+ #53308# TF_ONE51-includes
+
+ Rev 1.34 18 Dec 1998 16:11:54 NN
+ #53308# TF_ONE51 Umstellung
+
+ Rev 1.33 15 Dec 1998 15:57:42 ANK
+ #60209# Anwenden der neuen statische Methode GetDefItemWidth bei StatusbarControls
+
+ Rev 1.32 03 Dec 1998 20:02:28 ANK
+ #58683# Groesse hat wieder sib_autosize
+
+ Rev 1.31 02 Nov 1998 16:53:10 ANK
+ #58683# Statusbar-Eintrag 'Groesse' jetzt veraenderbar in der Breite
+
+ Rev 1.30 23 Oct 1998 12:31:58 NN
+ #58244# Registrierung von ein paar EditEngine-Feldern ist schon in der Ofa
+
+ Rev 1.29 02 Oct 1998 14:10:22 NN
+ #53308# Services fuer StarOne registrieren
+
+ Rev 1.28 11 Sep 1998 14:23:02 ER
+ #42680# Feldbefehle erweitert fuer Titel/Pfad/Dateiname
+
+ Rev 1.27 14 Apr 1998 17:32:44 MBA
+ Eingabezeile innerhalb der Task
+
+ Rev 1.26 09 Apr 1998 22:12:52 ANK
+ Redlining Erweiterungen
+
+ Rev 1.25 13 Mar 1998 13:51:58 ANK
+ Erweiterungen
+
+ Rev 1.24 08 Mar 1998 20:37:22 ANK
+ Redlining Dialog
+
+ Rev 1.23 10 Feb 1998 15:24:44 TJ
+ inlude wg. internal compiler error
+
+ Rev 1.22 06 Feb 1998 14:15:52 HJS
+ includes
+
+ Rev 1.21 23 Jan 1998 19:02:34 NN
+ include
+
+ Rev 1.20 05 Dec 1997 20:06:30 ANK
+ Includes geaendert
+
+ Rev 1.19 25 Nov 1997 11:32:26 TJ
+ includes
+
+ Rev 1.18 14 Oct 1997 19:53:52 ANK
+ Neue Funktionsbox
+
+ Rev 1.17 06 Aug 1997 15:41:58 TRI
+ VCL: Anpassungen
+
+ Rev 1.16 30 Jun 1997 12:28:14 NN
+ Feldbefehle nach Svx verschoben
+
+ Rev 1.15 04 Jun 1997 12:53:04 ER
+ 363 MUSS: SIDs
+
+ Rev 1.14 23 May 1997 20:26:38 NN
+ RegisterChildWindow fuer ScFormulaDlgWrapper
+
+ Rev 1.13 21 Apr 1997 18:28:50 NN
+ im ScDLL::Exit kein ScGlobal::Clear
+
+ Rev 1.12 18 Apr 1997 13:09:28 NN
+ im Exit kein ScModuleDummy anlegen
+
+ Rev 1.11 25 Mar 1997 10:43:04 NN
+ #37851# SvxURLField schon in der OffApp registriert
+
+ Rev 1.10 08 Feb 1997 19:07:48 NN
+ Zeichenfunktionen und Ausrichtung sind jetzt Svx-Controller
+
+ Rev 1.9 28 Jan 1997 10:00:06 NN
+ PutItem(SID_ATTR_METRIC) am Module
+
+ Rev 1.8 20 Dec 1996 15:54:32 NN
+ #34679# Menue und Accelerator mit Config-IDs
+
+ Rev 1.7 13 Dec 1996 18:59:50 NN
+ SvxSearchDialogWrapper nicht mehr registrieren
+
+ Rev 1.6 24 Nov 1996 15:23:48 NN
+ ScGlobal::Clear rufen
+
+ Rev 1.5 22 Nov 1996 11:55:02 ER
+ #33275# signal() Wrapper an der App wg. BLC-Dummbatz
+
+ Rev 1.4 18 Nov 1996 18:59:00 ER
+ new: ScColRowNameRangesDlg
+
+ Rev 1.3 14 Nov 1996 22:01:10 NN
+ RegisterChildWindowContext fuer Navigator
+
+ Rev 1.2 14 Nov 1996 14:18:52 NN
+ vor dem Anlegen des ScModule nur die VersionMaps initialisieren
+
+ Rev 1.1 06 Nov 1996 14:18:34 NN
+ ScModule mit ObjectFactory vom ModuleDummy konstruieren
+
+ Rev 1.0 05 Nov 1996 14:33:12 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx
new file mode 100644
index 000000000000..3e5cd3596b77
--- /dev/null
+++ b/sc/source/ui/app/scmod.cxx
@@ -0,0 +1,1920 @@
+/*************************************************************************
+ *
+ * $RCSfile: scmod.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+#include <svx/flditem.hxx>
+#include <svx/outliner.hxx>
+#include <basic/sbstar.hxx>
+
+#include <offmgr/hyprlink.hxx>
+#include <offmgr/osplcfg.hxx>
+#include <svtools/ehdl.hxx>
+#include <vcl/status.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/macrconf.hxx>
+#include <svx/langitem.hxx>
+
+#ifdef ONE_LINGU
+#else
+#include <offmgr/osplcfg.hxx>
+#endif
+
+#include <svtools/whiter.hxx>
+#include <offmgr/app.hxx>
+#include <svx/selctrl.hxx>
+#include <svx/insctrl.hxx>
+#include <svx/zoomctrl.hxx>
+#include <svx/modctrl.hxx>
+#include <svx/pszctrl.hxx>
+#include <vcl/msgbox.hxx>
+#include <offmgr/ofaids.hrc>
+#include <svtools/inethist.hxx>
+#include <vcl/waitobj.hxx>
+
+#define ITEMID_SPELLCHECK 0
+
+#include "scmod.hxx"
+#include "global.hxx"
+#include "viewopti.hxx"
+#include "docoptio.hxx"
+#include "appoptio.hxx"
+#include "inputopt.hxx"
+#include "navicfg.hxx"
+#include "optdlg.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "drwlayer.hxx"
+#include "uiitems.hxx"
+#include "sc.hrc"
+#include "cfgids.hxx"
+#include "inputhdl.hxx"
+#include "inputwin.hxx"
+#include "msgpool.hxx"
+#include "scresid.hxx"
+#include "anyrefdg.hxx"
+#include "teamdlg.hxx"
+#include "dwfunctr.hxx"
+#include "formdata.hxx"
+#include "tpview.hxx"
+#include "tpusrlst.hxx"
+#include "tpcalc.hxx"
+#include "opredlin.hxx"
+#include "optload.hxx"
+
+#define ScModule
+#include "scslots.hxx"
+
+#define SC_IDLE_MIN 150
+#define SC_IDLE_MAX 3000
+#define SC_IDLE_STEP 75
+#define SC_IDLE_COUNT 50
+
+static USHORT nIdleCount = 0;
+
+//------------------------------------------------------------------
+
+SFX_IMPL_INTERFACE( ScModule, SfxShell, ScResId(RID_APPTITLE) )
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_APPLICATION|SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_CLIENT,
+ ScResId(RID_OBJECTBAR_APP) );
+ SFX_STATUSBAR_REGISTRATION( ScResId(SCCFG_STATUSBAR) ); // nur ID wichtig
+ SFX_CHILDWINDOW_REGISTRATION( SvxHyperlinkDlgWrapper::GetChildWindowId() );
+}
+
+//------------------------------------------------------------------
+
+ScModule::ScModule( SfxObjectFactory* pFact ) :
+ ScModuleDummy( SFX_APP()->CreateResManager( "sc" ), FALSE, pFact ),
+ bIsWaterCan( FALSE ),
+ bDragWasIntern( FALSE ),
+ bIsInEditCommand( FALSE ),
+ pRefInputHandler( NULL ),
+ pViewCfg( NULL ),
+ pDocCfg( NULL ),
+ pAppCfg( NULL ),
+ pInputCfg( NULL ),
+ pNavipiCfg( NULL ),
+ pTeamDlg( NULL ),
+ nCurRefDlgId( 0 ),
+ pErrorHdl( NULL ),
+ pSvxErrorHdl( NULL ),
+ pMessagePool( NULL ),
+ pFormEditData( NULL )
+{
+ // im ctor ist der ResManager (DLL-Daten) noch nicht initialisiert!
+
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("StarCalc"))); // fuer Basic
+
+ ResetDragObject();
+
+ // InputHandler braucht nicht mehr angelegt zu werden
+
+ // ErrorHandler anlegen - war in Init()
+ // zwischen OfficeApplication::Init und ScGlobal::Init
+// pSvxErrorHdl = new SvxErrorHandler();
+ pErrorHdl = new SfxErrorHandler( RID_ERRHDLSC,
+ ERRCODE_AREA_SC,
+ ERRCODE_AREA_APP2-1,
+ GetResMgr() );
+
+ aSpellTimer.SetTimeout(10);
+ aSpellTimer.SetTimeoutHdl( LINK( this, ScModule, SpellTimerHdl ) );
+ aIdleTimer.SetTimeout(SC_IDLE_MIN);
+ aIdleTimer.SetTimeoutHdl( LINK( this, ScModule, IdleHandler ) );
+ aIdleTimer.Start();
+
+ pMessagePool = new ScMessagePool;
+ pMessagePool->FreezeIdRanges();
+ SetPool( pMessagePool );
+ ScGlobal::InitTextHeight( pMessagePool );
+
+ StartListening( *SFX_APP() ); // for SFX_HINT_DEINITIALIZING
+}
+
+ScModule::~ScModule()
+{
+ // InputHandler braucht nicht mehr geloescht zu werden (gibt keinen an der App mehr)
+
+ DELETEZ( pMessagePool );
+
+ DELETEZ( pFormEditData );
+
+ delete pErrorHdl;
+// delete pSvxErrorHdl;
+
+ ScGlobal::Clear(); // ruft auch ScDocumentPool::DeleteVersionMaps();
+
+ DeleteCfg(); // wurde mal aus Exit() gerufen
+}
+
+//------------------------------------------------------------------
+
+void ScModule::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA(SfxSimpleHint) &&
+ ((SfxSimpleHint&)rHint).GetId() == SFX_HINT_DEINITIALIZING )
+ {
+ // ConfigItems must be removed before ConfigManager
+ DeleteCfg();
+ }
+}
+
+//------------------------------------------------------------------
+
+void ScModule::DeleteCfg()
+{
+ DELETEZ( pViewCfg ); // Speichern passiert vor Exit() automatisch
+ DELETEZ( pDocCfg );
+ DELETEZ( pAppCfg );
+ DELETEZ( pInputCfg );
+ DELETEZ( pNavipiCfg );
+}
+
+//------------------------------------------------------------------
+
+SfxModule* ScModule::Load()
+{
+ return this; // ist schon geladen
+}
+
+SfxModule* ScModuleDummy::Load()
+{
+ return NULL; // Dummy zum Linken der DLL, wird nicht gerufen
+}
+
+//------------------------------------------------------------------
+
+#define TEXT_WIDTH(s) rStatusBar.GetTextWidth((s))
+
+void ScModule::FillStatusBar(StatusBar& rStatusBar)
+{
+ // Dokumentposition (Tabelle x / y)
+ rStatusBar.InsertItem( SID_STATUS_DOCPOS,
+ TEXT_WIDTH( String().Fill( 10, 'X' ) ),
+ SIB_LEFT|SIB_AUTOSIZE );
+ rStatusBar.SetHelpId( SID_STATUS_DOCPOS, SID_STATUS_DOCPOS );
+
+ // Seitenvorlage
+ rStatusBar.InsertItem( SID_STATUS_PAGESTYLE,
+ TEXT_WIDTH( String().Fill( 15, 'X' ) ),
+ SIB_LEFT|SIB_AUTOSIZE );
+ rStatusBar.SetHelpId( SID_STATUS_PAGESTYLE, SID_STATUS_PAGESTYLE );
+
+ // Ma"sstab
+ rStatusBar.InsertItem( SID_ATTR_ZOOM,
+ SvxZoomStatusBarControl::GetDefItemWidth(rStatusBar),
+ SIB_CENTER );
+ rStatusBar.SetHelpId( SID_ATTR_ZOOM, SID_ATTR_ZOOM );
+
+ // Einfuege-/Ueberschreibmodus
+ rStatusBar.InsertItem( SID_ATTR_INSERT,
+ SvxInsertStatusBarControl::GetDefItemWidth(rStatusBar),
+ SIB_CENTER );
+ rStatusBar.SetHelpId( SID_ATTR_INSERT, SID_ATTR_INSERT );
+
+ // Selektionsmodus
+ rStatusBar.InsertItem( SID_STATUS_SELMODE,
+ SvxSelectionModeControl::GetDefItemWidth(rStatusBar),
+ SIB_CENTER );
+ rStatusBar.SetHelpId( SID_STATUS_SELMODE, SID_STATUS_SELMODE );
+
+ // Dokument geaendert
+ rStatusBar.InsertItem( SID_DOC_MODIFIED,
+ SvxModifyControl::GetDefItemWidth(rStatusBar));
+
+ rStatusBar.SetHelpId( SID_DOC_MODIFIED, SID_DOC_MODIFIED );
+
+ // den aktuellen Kontext anzeigen Uhrzeit / FramePos / TabellenInfo / Errors
+ rStatusBar.InsertItem( SID_ATTR_SIZE,
+ SvxPosSizeStatusBarControl::GetDefItemWidth(rStatusBar),
+ SIB_AUTOSIZE|SIB_LEFT|SIB_USERDRAW);
+ rStatusBar.SetHelpId( SID_ATTR_SIZE, SID_ATTR_SIZE );
+}
+
+#undef TEXT_WIDTH
+
+//------------------------------------------------------------------
+//
+// von der Applikation verschoben:
+//
+//------------------------------------------------------------------
+
+void ScModule::Execute( SfxRequest& rReq )
+{
+ SfxBindings& rBindings = SFX_BINDINGS();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+
+ switch ( nSlot )
+ {
+ case SID_CHOOSE_DESIGN:
+ {
+ String aMacroName =
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Template.Samples.ShowStyles"));
+ SfxApplication* pApp = SFX_APP();
+ pApp->EnterBasicCall();
+ pApp->GetMacroConfig()->Call( NULL, aMacroName, pApp->GetBasicManager() );
+ pApp->LeaveBasicCall();
+ }
+ break;
+ case SID_EURO_CONVERTER:
+ {
+ String aMacroName =
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Euro.ConvertRun.Main"));
+ SfxApplication* pApp = SFX_APP();
+ pApp->EnterBasicCall();
+ pApp->GetMacroConfig()->Call( NULL, aMacroName, pApp->GetBasicManager() );
+ pApp->LeaveBasicCall();
+ }
+ break;
+ case SID_SC_EDITOPTIONS:
+ {
+ if ( pReqArgs != NULL )
+ {
+ ModifyOptions( *pReqArgs );
+ }
+ else if ( pReqArgs == NULL )
+ {
+ GetAppOptions(); // -> AppOptionen initialisieren
+
+ SfxItemSet* pDlgSet = CreateItemSet( nSlot );
+
+ //---------------------------------------------------------
+
+ // Der Parent muss hier auf jeden Fall stimmen, weil sonst
+ // SfxViewShell::Current in SetOptions die falsche ViewShell gibt.
+
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,
+ SfxViewShell::Current());
+ Window* pWin = pViewSh ?
+ pViewSh->GetDialogParent() :
+ Application::GetDefDialogParent();
+ ScOptionsDlg* pDlg = new ScOptionsDlg(
+ SFX_APP()->GetViewFrame(),
+ pWin, pDlgSet );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+
+ if ( pOutSet )
+ {
+ ApplyItemSet( nSlot, *pOutSet );
+ rReq.Done( *pOutSet, FALSE );
+ }
+ }
+ delete pDlg;
+ delete pDlgSet;
+ }
+ }
+ break;
+
+ case SID_AUTOSPELL_CHECK:
+ {
+ BOOL bSet;
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && SFX_ITEM_SET == pReqArgs->GetItemState( nSlot, TRUE, &pItem ) )
+ bSet = ((const SfxBoolItem*)pItem)->GetValue();
+ else
+ { // Toggle
+ ScDocShell* pDocSh = PTR_CAST(ScDocShell, SfxObjectShell::Current());
+ if ( pDocSh )
+ bSet = !pDocSh->GetDocument()->GetDocOptions().IsAutoSpell();
+ else
+ bSet = !GetDocOptions().IsAutoSpell();
+ }
+
+ SfxItemSet aSet( GetPool(), SID_AUTOSPELL_CHECK, SID_AUTOSPELL_CHECK );
+ aSet.Put( SfxBoolItem( SID_AUTOSPELL_CHECK, bSet ) );
+ ModifyOptions( aSet );
+ rReq.Done();
+ }
+ break;
+
+ case SID_AUTOSPELL_MARKOFF:
+ {
+ BOOL bSet;
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && SFX_ITEM_SET == pReqArgs->GetItemState( nSlot, TRUE, &pItem ) )
+ bSet = ((const SfxBoolItem*)pItem)->GetValue();
+ else
+ { // Toggle
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ ScDocShell* pDocSh = PTR_CAST(ScDocShell, SfxObjectShell::Current());
+ if ( pViewSh )
+ bSet = !pViewSh->GetViewData()->GetOptions().IsHideAutoSpell();
+ else if ( pDocSh )
+ bSet = !pDocSh->GetDocument()->GetViewOptions().IsHideAutoSpell();
+ else
+ bSet = !GetViewOptions().IsHideAutoSpell();
+ }
+
+ SfxItemSet aSet( GetPool(), SID_AUTOSPELL_MARKOFF, SID_AUTOSPELL_MARKOFF );
+ aSet.Put( SfxBoolItem( SID_AUTOSPELL_MARKOFF, bSet ) );
+ ModifyOptions( aSet );
+ rReq.Done();
+ }
+ break;
+
+ case SID_ATTR_METRIC:
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && SFX_ITEM_SET == pReqArgs->GetItemState( nSlot, TRUE, &pItem ) )
+ {
+ FieldUnit eUnit = (FieldUnit)((const SfxUInt16Item*)pItem)->GetValue();
+ switch( eUnit )
+ {
+ case FUNIT_MM: // nur die Einheiten, die auch im Dialog stehen
+ case FUNIT_CM:
+ case FUNIT_INCH:
+ case FUNIT_PICA:
+ case FUNIT_POINT:
+ {
+ PutItem( *pItem );
+ ScAppOptions aNewOpts( GetAppOptions() );
+ aNewOpts.SetAppMetric( eUnit );
+ SetAppOptions( aNewOpts );
+ rReq.Done();
+ }
+ break;
+ }
+ }
+ }
+ break;
+
+ case FID_AUTOCOMPLETE:
+ {
+ ScAppOptions aNewOpts( GetAppOptions() );
+ BOOL bNew = !aNewOpts.GetAutoComplete();
+ aNewOpts.SetAutoComplete( bNew );
+ SetAppOptions( aNewOpts );
+ ScInputHandler::SetAutoComplete( bNew );
+ rBindings.Invalidate( FID_AUTOCOMPLETE );
+ rReq.Done();
+ }
+ break;
+
+ case SID_DETECTIVE_AUTO:
+ {
+ ScAppOptions aNewOpts( GetAppOptions() );
+ BOOL bNew = !aNewOpts.GetDetectiveAuto();
+ aNewOpts.SetDetectiveAuto( bNew );
+ SetAppOptions( aNewOpts );
+ rBindings.Invalidate( SID_DETECTIVE_AUTO );
+ rReq.Done();
+ }
+ break;
+
+ case SID_PSZ_FUNCTION:
+ if (pReqArgs)
+ {
+ const SfxUInt16Item& rItem = (const SfxUInt16Item&)pReqArgs->Get(SID_PSZ_FUNCTION);
+ DBG_ASSERT(rItem.ISA(SfxUInt16Item),"falscher Parameter");
+
+ ScAppOptions aNewOpts( GetAppOptions() );
+ aNewOpts.SetStatusFunc( rItem.GetValue() );
+ SetAppOptions( aNewOpts );
+
+ rBindings.Invalidate( SID_TABLE_CELL );
+ rBindings.Update( SID_TABLE_CELL ); // sofort
+
+ rBindings.Invalidate( SID_PSZ_FUNCTION );
+ rBindings.Update( SID_PSZ_FUNCTION );
+ // falls Menue gleich wieder aufgeklappt wird
+ }
+ break;
+
+ case SID_ATTR_LANGUAGE :
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && SFX_ITEM_SET == pReqArgs->GetItemState( nSlot, TRUE, &pItem ) )
+ {
+ ScDocShell* pDocSh = PTR_CAST(ScDocShell, SfxObjectShell::Current());
+ ScDocument* pDoc = pDocSh ? pDocSh->GetDocument() : NULL;
+ if ( pDoc )
+ {
+ LanguageType eLang = ((SvxLanguageItem*)pItem)->GetLanguage();
+ if ( pDoc->GetLanguage() != eLang )
+ {
+ pDoc->SetLanguage( eLang );
+
+ ScInputHandler* pInputHandler = GetInputHdl();
+ if ( pInputHandler )
+ pInputHandler->UpdateSpellSettings(); // EditEngine-Flags
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ if ( pViewSh )
+ pViewSh->UpdateDrawTextOutliner(); // EditEngine-Flags
+ }
+ }
+ }
+ }
+ break;
+
+ case FID_FOCUS_POSWND:
+ {
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ {
+ ScInputWindow* pWin = pHdl->GetInputWindow();
+ if (pWin)
+ pWin->PosGrabFocus();
+ }
+ rReq.Done();
+ }
+ break;
+
+ default:
+ DBG_ERROR( "ScApplication: Unknown Message." );
+ break;
+ }
+}
+
+void ScModule::GetState( SfxItemSet& rSet )
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case FID_AUTOCOMPLETE:
+ rSet.Put( SfxBoolItem( nWhich, GetAppOptions().GetAutoComplete() ) );
+ break;
+ case SID_DETECTIVE_AUTO:
+ rSet.Put( SfxBoolItem( nWhich, GetAppOptions().GetDetectiveAuto() ) );
+ break;
+ case SID_PSZ_FUNCTION:
+ rSet.Put( SfxUInt16Item( nWhich, GetAppOptions().GetStatusFunc() ) );
+ break;
+ case SID_ATTR_METRIC:
+ rSet.Put( SfxUInt16Item( nWhich, GetAppOptions().GetAppMetric() ) );
+ break;
+ case SID_AUTOSPELL_CHECK:
+ {
+ BOOL bAuto;
+ ScDocShell* pDocSh = PTR_CAST(ScDocShell, SfxObjectShell::Current());
+ if ( pDocSh )
+ bAuto = pDocSh->GetDocument()->GetDocOptions().IsAutoSpell();
+ else
+#ifdef ONE_LINGU
+ {
+ USHORT nDummyLang;
+ BOOL bDummy;
+ GetSpellSettings( nDummyLang, bAuto, bDummy );
+ }
+#else
+ bAuto = OFF_APP()->GetSpellChecker()->IsAutoSpell();
+#endif
+ rSet.Put( SfxBoolItem( nWhich, bAuto ) );
+ }
+ break;
+ case SID_AUTOSPELL_MARKOFF:
+ {
+ BOOL bHide;
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ ScDocShell* pDocSh = PTR_CAST(ScDocShell, SfxObjectShell::Current());
+ if ( pViewSh )
+ bHide = pViewSh->GetViewData()->GetOptions().IsHideAutoSpell();
+ else if ( pDocSh )
+ bHide = pDocSh->GetDocument()->GetViewOptions().IsHideAutoSpell();
+ else
+#ifdef ONE_LINGU
+ {
+ USHORT nDummyLang;
+ BOOL bDummy;
+ GetSpellSettings( nDummyLang, bDummy, bHide );
+ }
+#else
+ bHide = OFF_APP()->GetSpellChecker()->IsHideSpell();
+#endif
+ rSet.Put( SfxBoolItem( nWhich, bHide ) );
+ }
+ break;
+ case SID_ATTR_LANGUAGE :
+ {
+ ScDocShell* pDocSh = PTR_CAST(ScDocShell, SfxObjectShell::Current());
+ ScDocument* pDoc = pDocSh ? pDocSh->GetDocument() : NULL;
+ if ( pDoc )
+ rSet.Put( SvxLanguageItem( pDoc->GetLanguage(), nWhich ) );
+ }
+ break;
+
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+//------------------------------------------------------------------
+
+void ScModule::SetDragObject( const ScMarkData& rMarkData,const ScRange& rRange,
+ USHORT nHandleX, USHORT nHandleY, ScDocument* pDoc, USHORT nFlags )
+{
+ aDragData.aMarkData = rMarkData;
+ USHORT nStartX = rRange.aStart.Col();
+ USHORT nStartY = rRange.aStart.Row();
+ aDragData.nStartX = nStartX;
+ aDragData.nStartY = nStartY;
+ aDragData.nTabNo = rRange.aStart.Tab();
+ aDragData.nSizeX = rRange.aEnd.Col() - nStartX + 1;
+ aDragData.nSizeY = rRange.aEnd.Row() - nStartY + 1;
+ aDragData.nHandleX = nHandleX;
+ aDragData.nHandleY = nHandleY;
+ aDragData.pDoc = pDoc;
+ aDragData.nFlags = nFlags;
+
+ aDragData.pSdrModel = NULL;
+ aDragData.pSdrView = NULL;
+ aDragData.aLinkDoc.Erase();
+ aDragData.aLinkTable.Erase();
+ aDragData.aLinkArea.Erase();
+
+ aDragData.pJumpLocalDoc = NULL;
+ aDragData.aJumpTarget.Erase();
+ aDragData.aJumpText.Erase();
+}
+
+void ScModule::ResetDragObject()
+{
+ SetDragObject(ScMarkData(),ScRange(),0,0,0,0 );
+
+ bDragWasIntern = FALSE;
+}
+
+void ScModule::SetDragObject( SdrModel* pModel, SdrView* pView, USHORT nFlags )
+{
+ SetDragObject(ScMarkData(),ScRange(),0,0,0,0 );
+
+ aDragData.pSdrModel = pModel;
+ aDragData.pSdrView = pView;
+ aDragData.nFlags = nFlags;
+}
+
+void ScModule::SetDragLink( const String& rDoc, const String& rTab, const String& rArea )
+{
+ SetDragObject(ScMarkData(),ScRange(),0,0,0,0 );
+
+ aDragData.aLinkDoc = rDoc;
+ aDragData.aLinkTable = rTab;
+ aDragData.aLinkArea = rArea;
+}
+
+void ScModule::SetDragJump( ScDocument* pLocalDoc, const String& rTarget, const String& rText )
+{
+ SetDragObject( ScMarkData(),ScRange(),0,0,0,0 );
+
+ aDragData.pJumpLocalDoc = pLocalDoc;
+ aDragData.aJumpTarget = rTarget;
+ aDragData.aJumpText = rText;
+}
+
+//------------------------------------------------------------------
+
+void ScModule::InitFormEditData()
+{
+ pFormEditData = new ScFormEditData;
+}
+
+void ScModule::ClearFormEditData()
+{
+ DELETEZ( pFormEditData );
+}
+
+//------------------------------------------------------------------
+
+void ScModule::SetViewOptions( const ScViewOptions& rOpt )
+{
+ if ( !pViewCfg )
+ pViewCfg = new ScViewCfg;
+
+ pViewCfg->SetOptions( rOpt );
+}
+
+const ScViewOptions& ScModule::GetViewOptions()
+{
+ if ( !pViewCfg )
+ pViewCfg = new ScViewCfg;
+
+ return *pViewCfg;
+}
+
+void ScModule::SetDocOptions( const ScDocOptions& rOpt )
+{
+ if ( !pDocCfg )
+ pDocCfg = new ScDocCfg;
+
+ *(ScDocOptions*)pDocCfg = rOpt;
+ pDocCfg->SetDefault( FALSE );
+ pDocCfg->StoreConfig();
+}
+
+const ScDocOptions& ScModule::GetDocOptions()
+{
+ if ( !pDocCfg )
+ {
+ pDocCfg = new ScDocCfg;
+ pDocCfg->Initialize();
+ }
+
+ return *pDocCfg;
+}
+
+#ifndef LRU_MAX
+#define LRU_MAX 10
+#endif
+
+void ScModule::InsertEntryToLRUList(USHORT nFIndex)
+{
+ if(nFIndex != 0)
+ {
+ const ScAppOptions& rAppOpt = GetAppOptions();
+ USHORT nLRUFuncCount = Min( rAppOpt.GetLRUFuncListCount(), (USHORT)LRU_MAX );
+ USHORT* pLRUListIds = rAppOpt.GetLRUFuncList();
+
+ USHORT aIdxList[LRU_MAX];
+ USHORT n = 0;
+ BOOL bFound = FALSE;
+
+ while ((n < LRU_MAX) && n<nLRUFuncCount) // alte Liste abklappern
+ {
+ if (!bFound && (pLRUListIds[n]== nFIndex))
+ bFound = TRUE; // erster! Treffer
+ else if (bFound)
+ aIdxList[n ] = pLRUListIds[n]; // hinter Treffer kopieren
+ else if ((n+1) < LRU_MAX)
+ aIdxList[n+1] = pLRUListIds[n]; // vor Treffer verschieben
+ n++;
+ }
+ if (!bFound && (n < LRU_MAX)) // Eintrag nicht gefunden?
+ n++; // einen mehr
+ aIdxList[0] = nFIndex; // Current on Top
+
+ ScAppOptions aNewOpts(rAppOpt); // an App melden
+ aNewOpts.SetLRUFuncList(aIdxList, n);
+ SetAppOptions(aNewOpts);
+
+ RecentFunctionsChanged();
+ }
+}
+
+void ScModule::RecentFunctionsChanged()
+{
+ // update function list window
+ USHORT nFuncListID = ScFunctionChildWindow::GetChildWindowId();
+
+ //! notify all views
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if ( pViewFrm && pViewFrm->HasChildWindow(nFuncListID) )
+ {
+ ScFunctionChildWindow* pWnd =(ScFunctionChildWindow*)pViewFrm->GetChildWindow( nFuncListID );
+
+ ScFunctionDockWin* pFuncList=(ScFunctionDockWin*)pWnd->GetWindow();
+
+ pFuncList->InitLRUList();
+ }
+}
+
+void ScModule::SetAppOptions( const ScAppOptions& rOpt )
+{
+ if ( !pAppCfg )
+ pAppCfg = new ScAppCfg;
+
+ *(ScAppOptions*)pAppCfg = rOpt;
+ pAppCfg->SetDefault( FALSE );
+}
+
+void global_InitAppOptions()
+{
+ SC_MOD()->GetAppOptions();
+}
+
+const ScAppOptions& ScModule::GetAppOptions()
+{
+ if ( !pAppCfg )
+ {
+ pAppCfg = new ScAppCfg;
+ pAppCfg->Initialize();
+ }
+
+ return *pAppCfg;
+}
+
+void ScModule::SetInputOptions( const ScInputOptions& rOpt )
+{
+ if ( !pInputCfg )
+ pInputCfg = new ScInputCfg;
+
+ pInputCfg->SetOptions( rOpt );
+}
+
+const ScInputOptions& ScModule::GetInputOptions()
+{
+ if ( !pInputCfg )
+ pInputCfg = new ScInputCfg;
+
+ return *pInputCfg;
+}
+
+ScNavipiCfg& ScModule::GetNavipiCfg()
+{
+ if ( !pNavipiCfg )
+ {
+ pNavipiCfg = new ScNavipiCfg;
+ pNavipiCfg->Initialize();
+ }
+
+ return *pNavipiCfg;
+}
+
+//------------------------------------------------------------------
+//
+// Optionen
+//
+//------------------------------------------------------------------
+
+//
+// ModifyOptions - Items aus Calc-Options-Dialog
+// und SID_AUTOSPELL_CHECK / SID_AUTOSPELL_MARKOFF
+//
+
+#define IS_AVAILABLE(w,item) (SFX_ITEM_SET==rOptSet.GetItemState((w),TRUE,&item))
+
+void ScModule::ModifyOptions( const SfxItemSet& rOptSet )
+{
+#ifdef ONE_LINGU
+ USHORT nOldSpellLang;
+ BOOL bOldAutoSpell, bOldHideAuto;
+ GetSpellSettings( nOldSpellLang, bOldAutoSpell, bOldHideAuto );
+#else
+ OfaCfgSpellCheck* pSpellCfg = OFF_APP()->GetSpellChecker();
+ DBG_ASSERT( pSpellCfg, "SpellChecker not initialised :-(" );
+#endif
+
+ if (!pAppCfg)
+ GetAppOptions();
+ DBG_ASSERT( pAppCfg, "AppOptions not initialised :-(" );
+
+ if (!pInputCfg)
+ GetInputOptions();
+ DBG_ASSERT( pInputCfg, "InputOptions not initialised :-(" );
+
+ //--------------------------------------------------------------
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ ScDocShell* pDocSh = PTR_CAST(ScDocShell, SfxObjectShell::Current());
+ ScDocument* pDoc = pDocSh ? pDocSh->GetDocument() : NULL;
+ const SfxPoolItem* pItem = NULL;
+ BOOL bRepaint = FALSE;
+ BOOL bUpdateMarks = FALSE;
+ BOOL bCalcAll = FALSE;
+ BOOL bSaveSpellCheck = FALSE;
+ BOOL bSaveAppOptions = FALSE;
+ BOOL bSaveInputOptions = FALSE;
+
+ //--------------------------------------------------------------------------
+
+ // OFF_APP()->SetOptions( rOptSet );
+
+ // Linguistik nicht mehr
+
+ if ( IS_AVAILABLE(SID_ATTR_METRIC,pItem) )
+ {
+ PutItem( *pItem );
+ pAppCfg->SetAppMetric( (FieldUnit)((const SfxUInt16Item*)pItem)->GetValue() );
+ bSaveAppOptions = TRUE;
+ }
+
+ if ( IS_AVAILABLE(SCITEM_USERLIST,pItem) )
+ {
+ ScGlobal::SetUserList( ((const ScUserListItem*)pItem)->GetUserList() );
+ bSaveAppOptions = TRUE;
+ }
+
+ //============================================
+ // ViewOptions
+ //============================================
+
+ if ( IS_AVAILABLE(SID_SCVIEWOPTIONS,pItem) )
+ {
+ const ScViewOptions& rNewOpt = ((const ScTpViewItem*)pItem)->GetViewOptions();
+
+ if ( pViewSh )
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ const ScViewOptions& rOldOpt = pViewData->GetOptions();
+
+ BOOL bAnchorList = ( rOldOpt.GetOption( VOPT_ANCHOR ) !=
+ rNewOpt.GetOption( VOPT_ANCHOR ) );
+
+ if ( rOldOpt != rNewOpt )
+ {
+ pViewData->SetOptions( rNewOpt ); // veraendert rOldOpt
+ pViewData->GetDocument()->SetViewOptions( rNewOpt );
+ pDocSh->SetDocumentModified();
+ bRepaint = TRUE;
+ }
+ if ( bAnchorList )
+ pViewSh->UpdateAnchorHandles();
+ }
+ SetViewOptions( rNewOpt );
+ rBindings.Invalidate(SID_HELPLINES_MOVE);
+ }
+
+ //============================================
+ // GridOptions, Auswertung nach ViewOptions,
+ // da GridOptions Member der ViewOptions ist!
+ //============================================
+
+ if ( IS_AVAILABLE(SID_ATTR_GRID_OPTIONS,pItem) )
+ {
+ ScGridOptions aNewGridOpt( (const SvxOptionsGrid&)((const SvxGridItem&)*pItem) );
+
+ if ( pViewSh )
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ ScViewOptions aNewViewOpt( pViewData->GetOptions() );
+ const ScGridOptions& rOldGridOpt = aNewViewOpt.GetGridOptions();
+
+ if ( rOldGridOpt != aNewGridOpt )
+ {
+ aNewViewOpt.SetGridOptions( aNewGridOpt );
+ pViewData->SetOptions( aNewViewOpt );
+ pViewData->GetDocument()->SetViewOptions( aNewViewOpt );
+ pDocSh->SetDocumentModified();
+ bRepaint = TRUE;
+ }
+ }
+ ScViewOptions aNewViewOpt ( GetViewOptions() );
+ aNewViewOpt.SetGridOptions( aNewGridOpt );
+ SetViewOptions( aNewViewOpt );
+ rBindings.Invalidate(SID_GRID_VISIBLE);
+ rBindings.Invalidate(SID_GRID_USE);
+ }
+
+ //
+ // AutoSpell ausblenden auch nach den ViewOptions
+ //
+
+ if ( IS_AVAILABLE(SID_AUTOSPELL_MARKOFF,pItem) ) // an View-Options
+ {
+ BOOL bHideAutoSpell = ((const SfxBoolItem*)pItem)->GetValue();
+
+ if (pViewSh)
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ ScViewOptions aNewOpt = pViewData->GetOptions();
+ if ( aNewOpt.IsHideAutoSpell() != bHideAutoSpell )
+ {
+ aNewOpt.SetHideAutoSpell( bHideAutoSpell );
+ pViewData->SetOptions( aNewOpt );
+ bRepaint = TRUE;
+ }
+ ScViewOptions aDocView = pDoc->GetViewOptions(); // auch am Dokument
+ if ( aDocView.IsHideAutoSpell() != bHideAutoSpell )
+ {
+ aDocView.SetHideAutoSpell( bHideAutoSpell );
+ pDoc->SetViewOptions( aDocView );
+ pDocSh->SetDocumentModified();
+ }
+ }
+#ifdef ONE_LINGU
+ if ( bOldHideAuto != bHideAutoSpell )
+ {
+ SetHideAutoProperty( bHideAutoSpell );
+ bSaveSpellCheck = TRUE;
+ }
+#else
+ if ( pSpellCfg->IsHideSpell() != bHideAutoSpell ) // Applikation immer
+ {
+ pSpellCfg->SetHideSpell( bHideAutoSpell );
+ bSaveSpellCheck = TRUE;
+ }
+#endif
+ ScInputHandler* pInputHandler = GetInputHdl();
+ if ( pInputHandler )
+ pInputHandler->UpdateSpellSettings(); // EditEngine-Flags
+ if ( pViewSh )
+ pViewSh->UpdateDrawTextOutliner(); // EditEngine-Flags
+ }
+
+ //============================================
+ // DocOptions
+ //============================================
+
+ if ( IS_AVAILABLE(SID_SCDOCOPTIONS,pItem) )
+ {
+ const ScDocOptions& rNewOpt = ((const ScTpCalcItem*)pItem)->GetDocOptions();
+
+ if ( pDoc )
+ {
+ const ScDocOptions& rOldOpt = pDoc->GetDocOptions();
+
+ bRepaint = ( bRepaint || ( rOldOpt != rNewOpt ) );
+ bCalcAll = bRepaint &&
+ ( rOldOpt.IsIter() != rNewOpt.IsIter()
+ || rOldOpt.GetIterCount() != rNewOpt.GetIterCount()
+ || rOldOpt.GetIterEps() != rNewOpt.GetIterEps()
+ || rOldOpt.IsIgnoreCase() != rNewOpt.IsIgnoreCase()
+ || rOldOpt.IsCalcAsShown() != rNewOpt.IsCalcAsShown()
+ || (rNewOpt.IsCalcAsShown() &&
+ rOldOpt.GetStdPrecision() != rNewOpt.GetStdPrecision())
+ || rOldOpt.IsMatchWholeCell() != rNewOpt.IsMatchWholeCell()
+ || rOldOpt.GetYear2000() != rNewOpt.GetYear2000()
+ );
+ pDoc->SetDocOptions( rNewOpt );
+ pDocSh->SetDocumentModified();
+ }
+ SetDocOptions( rNewOpt );
+ }
+
+ // nach den eigentlichen DocOptions auch noch die TabDistance setzen
+ if ( IS_AVAILABLE(SID_ATTR_DEFTABSTOP,pItem) )
+ {
+ USHORT nTabDist = ((SfxUInt16Item*)pItem)->GetValue();
+ ScDocOptions aOpt(GetDocOptions());
+ aOpt.SetTabDistance(nTabDist);
+ SetDocOptions( aOpt );
+
+ if ( pDoc )
+ {
+ ScDocOptions aOpt(pDoc->GetDocOptions());
+ aOpt.SetTabDistance(nTabDist);
+ pDoc->SetDocOptions( aOpt );
+ pDocSh->SetDocumentModified();
+ if(pDoc->GetDrawLayer())
+ pDoc->GetDrawLayer()->SetDefaultTabulator(nTabDist);
+ }
+ }
+
+ // AutoSpell nach den Doc-Options (weil Member)
+
+ if ( IS_AVAILABLE(SID_AUTOSPELL_CHECK,pItem) ) // an Doc-Options
+ {
+ BOOL bDoAutoSpell = ((const SfxBoolItem*)pItem)->GetValue();
+
+ if (pDoc)
+ {
+ ScDocOptions aNewOpt = pDoc->GetDocOptions();
+ if ( aNewOpt.IsAutoSpell() != bDoAutoSpell )
+ {
+ aNewOpt.SetAutoSpell( bDoAutoSpell );
+ pDoc->SetDocOptions( aNewOpt );
+
+ if (bDoAutoSpell)
+ pDoc->SetOnlineSpellPos( ScAddress(0,0,0) ); // vorne anfangen
+ else
+ {
+ WaitObject aWait( pDocSh->GetDialogParent() );
+ pDoc->RemoveAutoSpellObj(); // Edit-Text-Objekte wieder zurueckwandeln
+ }
+
+ pDocSh->SetDocumentModified();
+
+ bRepaint = TRUE; // weil HideAutoSpell evtl. ungueltig
+ //! alle Views painten ???
+ }
+ }
+
+#ifdef ONE_LINGU
+ if ( bOldAutoSpell != bDoAutoSpell )
+ {
+ SetAutoSpellProperty( bDoAutoSpell );
+ bSaveSpellCheck = TRUE;
+ }
+#else
+ if ( pSpellCfg->IsAutoSpell() != bDoAutoSpell ) // Applikation immer
+ {
+ pSpellCfg->SetAutoSpell( bDoAutoSpell );
+ bSaveSpellCheck = TRUE;
+ }
+#endif
+ if ( pDocSh )
+ pDocSh->PostPaintGridAll(); // wegen Markierungen
+ ScInputHandler* pInputHandler = GetInputHdl();
+ if ( pInputHandler )
+ pInputHandler->UpdateSpellSettings(); // EditEngine-Flags
+ if ( pViewSh )
+ pViewSh->UpdateDrawTextOutliner(); // EditEngine-Flags
+
+ rBindings.Invalidate( SID_AUTOSPELL_CHECK );
+ }
+
+ //============================================
+ // InputOptions
+ //============================================
+
+ if ( IS_AVAILABLE(SID_SC_INPUT_SELECTIONPOS,pItem) )
+ {
+ pInputCfg->SetMoveDir( ((const SfxUInt16Item*)pItem)->GetValue() );
+ bSaveInputOptions = TRUE;
+ }
+ if ( IS_AVAILABLE(SID_SC_INPUT_SELECTION,pItem) )
+ {
+ pInputCfg->SetMoveSelection( ((const SfxBoolItem*)pItem)->GetValue() );
+ bSaveInputOptions = TRUE;
+ }
+ if ( IS_AVAILABLE(SID_SC_INPUT_EDITMODE,pItem) )
+ {
+ pInputCfg->SetEnterEdit( ((const SfxBoolItem*)pItem)->GetValue() );
+ bSaveInputOptions = TRUE;
+ }
+ if ( IS_AVAILABLE(SID_SC_INPUT_FMT_EXPAND,pItem) )
+ {
+ pInputCfg->SetExtendFormat( ((const SfxBoolItem*)pItem)->GetValue() );
+ bSaveInputOptions = TRUE;
+ }
+ if ( IS_AVAILABLE(SID_SC_INPUT_RANGEFINDER,pItem) )
+ {
+ pInputCfg->SetRangeFinder( ((const SfxBoolItem*)pItem)->GetValue() );
+ bSaveInputOptions = TRUE;
+ }
+ if ( IS_AVAILABLE(SID_SC_INPUT_REF_EXPAND,pItem) )
+ {
+ pInputCfg->SetExpandRefs( ((const SfxBoolItem*)pItem)->GetValue() );
+ bSaveInputOptions = TRUE;
+ }
+ if ( IS_AVAILABLE(SID_SC_INPUT_MARK_HEADER,pItem) )
+ {
+ pInputCfg->SetMarkHeader( ((const SfxBoolItem*)pItem)->GetValue() );
+ bSaveInputOptions = TRUE;
+ bUpdateMarks = TRUE;
+ }
+
+ //----------------------------------------------------------
+
+#ifdef ONE_LINGU
+// if ( bSaveSpellCheck )
+// {
+ // currently LinguProperties are saved only at program exit.
+ // if a save method becomes available, it should be called here.
+// }
+#else
+ if ( bSaveSpellCheck )
+ {
+ pSpellCfg->SetDefault( FALSE );
+ pSpellCfg->StoreConfig();
+ }
+#endif
+
+ if ( bSaveAppOptions )
+ {
+ pAppCfg->SetDefault( FALSE );
+ }
+
+ if ( bSaveInputOptions )
+ pInputCfg->OptionsChanged();
+
+ // Neuberechnung anstossen?
+
+ if ( pDoc && bCalcAll )
+ {
+ WaitObject aWait( pDocSh->GetDialogParent() );
+ pDoc->CalcAll();
+ pViewSh->UpdateCharts( TRUE );
+ rBindings.Invalidate( SID_ATTR_SIZE ); //SvxPosSize-StatusControl-Update
+ }
+
+ if ( pViewSh && bUpdateMarks )
+ pViewSh->UpdateAutoFillMark();
+
+ // View neuzeichnen?
+
+ if ( pViewSh && bRepaint )
+ {
+ pViewSh->UpdateFixPos();
+ pViewSh->PaintGrid();
+ pViewSh->PaintTop();
+ pViewSh->PaintLeft();
+ pViewSh->PaintExtras();
+ pViewSh->InvalidateBorder();
+ rBindings.Invalidate( FID_TOGGLEHEADERS ); // -> Checks im Menue
+ rBindings.Invalidate( FID_TOGGLESYNTAX );
+ }
+}
+
+#undef IS_AVAILABLE
+
+//------------------------------------------------------------------
+//
+// Input-Handler
+//
+//------------------------------------------------------------------
+
+ScInputHandler* ScModule::GetInputHdl( ScTabViewShell* pViewSh )
+{
+ if ( pRefInputHandler )
+ return pRefInputHandler;
+
+ ScInputHandler* pHdl = NULL;
+ if ( !pViewSh )
+ pViewSh = PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ if ( pViewSh )
+ pHdl = pViewSh->GetInputHandler(); // Viewshell hat jetzt immer einen
+
+ // #57989# wenn keine ViewShell uebergeben oder aktiv, kann NULL herauskommen
+ DBG_ASSERT( pHdl || !pViewSh, "GetInputHdl: kein InputHandler gefunden" );
+ return pHdl;
+}
+
+void ScModule::ViewShellChanged()
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ ScTabViewShell* pShell = ScTabViewShell::GetActiveViewShell();
+ if ( pShell && pHdl )
+ pShell->UpdateInputHandler();
+}
+
+void ScModule::SetInputMode( ScInputMode eMode )
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->SetMode( eMode );
+}
+
+BOOL ScModule::IsEditMode()
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ return pHdl && pHdl->IsEditMode();
+}
+
+BOOL ScModule::IsInputMode()
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ return pHdl && pHdl->IsInputMode();
+}
+
+BOOL ScModule::InputKeyEvent( const KeyEvent& rKEvt, BOOL bStartEdit )
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ return ( pHdl ? pHdl->KeyInput( rKEvt, bStartEdit ) : FALSE );
+}
+
+void ScModule::InputEnterHandler( BYTE nBlockMode )
+{
+ if ( !SFX_APP()->IsDowning() ) // nicht beim Programmende
+ {
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->EnterHandler( nBlockMode );
+ }
+}
+
+void ScModule::InputCancelHandler()
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->CancelHandler();
+}
+
+void ScModule::InputSelection( EditView* pView )
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->InputSelection( pView );
+}
+
+void ScModule::InputChanged( EditView* pView )
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->InputChanged( pView );
+}
+
+void ScModule::SetInputWindow( ScInputWindow* pWin )
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ if ( pHdl )
+ pHdl->SetInputWindow( pWin );
+}
+
+void ScModule::ViewShellGone( ScTabViewShell* pViewSh )
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->ViewShellGone( pViewSh );
+
+ // Team dialog is opened with the window from a view as parent
+ // -> close it if any view is closed
+ if (pTeamDlg)
+ pTeamDlg->Close(); // resets variable pTeamDlg
+}
+
+void ScModule::SetRefInputHdl( ScInputHandler* pNew )
+{
+ pRefInputHandler = pNew;
+}
+
+ScInputHandler* ScModule::GetRefInputHdl()
+{
+ return pRefInputHandler;
+}
+
+//------------------------------------------------------------------------
+// Olk's Krempel:
+
+void ScModule::InputGetSelection( xub_StrLen& rStart, xub_StrLen& rEnd )
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->InputGetSelection( rStart, rEnd );
+}
+
+void ScModule::InputSetSelection( xub_StrLen nStart, xub_StrLen nEnd )
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->InputSetSelection( nStart, nEnd );
+}
+
+void ScModule::InputReplaceSelection( const String& rStr )
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->InputReplaceSelection( rStr );
+}
+
+String ScModule::InputGetFormulaStr()
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ String aStr;
+ if ( pHdl )
+ aStr = pHdl->InputGetFormulaStr();
+ return aStr;
+}
+
+void ScModule::ActivateInputWindow( const String* pStrFormula, BOOL bMatrix )
+{
+ ScInputHandler* pHdl = GetInputHdl();
+ if ( pHdl )
+ {
+ ScInputWindow* pWin = pHdl->GetInputWindow();
+ if ( pStrFormula )
+ {
+ // Formel uebernehmen
+ if ( pWin )
+ {
+ pWin->SetFuncString( *pStrFormula, FALSE );
+ // SetSumAssignMode wegen FALSE nicht noetig
+ }
+ BYTE nMode = bMatrix ? SC_ENTER_MATRIX : SC_ENTER_NORMAL;
+ pHdl->EnterHandler( nMode );
+
+ // ohne Invalidate bleibt die Selektion stehen, wenn die Formel unveraendert ist
+ if (pWin)
+ pWin->TextInvalidate();
+ }
+ else
+ {
+ // Abbrechen
+ if ( pWin )
+ {
+ pWin->SetFuncString( EMPTY_STRING, FALSE );
+ // SetSumAssignMode wegen FALSE nicht noetig
+ }
+ pHdl->CancelHandler();
+ }
+ }
+}
+
+//------------------------------------------------------------------
+//
+// Referenz - Dialoge
+//
+//------------------------------------------------------------------
+
+void ScModule::CloseDialogs()
+{
+ if( nCurRefDlgId )
+ SetRefDialog( nCurRefDlgId, FALSE );
+}
+
+void ScModule::SetRefDialog( USHORT nId, BOOL bVis )
+{
+ //! move reference dialog handling to view
+ //! (only keep function autopilot here for references to other documents)
+
+ if(nCurRefDlgId==0 || (nId==nCurRefDlgId && !bVis))
+ {
+ SFX_BINDINGS().Update(); // sonst kommt der Sfx beim LockDispatcher durcheinander
+
+ nCurRefDlgId = bVis ? nId : 0 ; // vor SetChildWindow
+
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if ( pViewFrm )
+ pViewFrm->SetChildWindow( nId, bVis );
+
+ SfxApplication* pSfxApp = SFX_APP();
+ pSfxApp->Broadcast( SfxSimpleHint( FID_REFMODECHANGED ) );
+ }
+}
+
+void ScModule::OpenTeamDlg()
+{
+ if ( !pTeamDlg )
+ {
+ // team dialog needs an existing parent window
+ // -> use window from active view (dialog is closed in ViewShellGone)
+
+ ScTabViewShell* pShell = ScTabViewShell::GetActiveViewShell();
+ if (pShell)
+ pTeamDlg = new ScTeamDlg( pShell->GetActiveWin() );
+ }
+ else
+ pTeamDlg->Center();
+}
+
+BOOL ScModule::IsModalMode(SfxObjectShell* pDocSh)
+{
+ //! move reference dialog handling to view
+ //! (only keep function autopilot here for references to other documents)
+
+ BOOL bIsModal = FALSE;
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+
+ if ( nCurRefDlgId && pViewFrm )
+ {
+ SfxChildWindow* pChildWnd = pViewFrm->GetChildWindow( nCurRefDlgId );
+ if ( pChildWnd )
+ {
+ ScAnyRefDlg* pRefDlg = (ScAnyRefDlg*)pChildWnd->GetWindow();
+ bIsModal = pRefDlg->IsVisible() &&
+ !( pRefDlg->IsRefInputMode() && pRefDlg->IsDocAllowed(pDocSh) );
+ }
+ else
+ {
+ // in 592 and above, the dialog isn't visible in other views
+
+ //! find the dialog even if it was opened for a different view
+ //! (allow input for function ap from different document!)
+ //! also modify IsTableLocked, IsRefDialogOpen
+ //! until then, always disable input:
+ bIsModal = TRUE;
+ }
+
+ // pChildWnd kann 0 sein, wenn der Dialog nach dem Umschalten
+ // von einer anderen Shell noch nicht erzeugt wurde (z.B. in GetFocus)
+ }
+ else if (pDocSh)
+ {
+ ScInputHandler* pHdl = GetInputHdl();
+ if ( pHdl )
+ bIsModal = pHdl->IsModalMode(pDocSh);
+ }
+
+ return bIsModal;
+}
+
+BOOL ScModule::IsTableLocked()
+{
+ //! move reference dialog handling to view
+ //! (only keep function autopilot here for references to other documents)
+
+ BOOL bLocked = FALSE;
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+
+ // bisher nur bei ScAnyRefDlg
+
+ if ( nCurRefDlgId && pViewFrm )
+ {
+ SfxChildWindow* pChildWnd = pViewFrm->GetChildWindow( nCurRefDlgId );
+ if ( pChildWnd )
+ bLocked = ((ScAnyRefDlg*)pChildWnd->GetWindow())->IsTableLocked();
+ else
+ bLocked = TRUE; // for other views, see IsModalMode
+ }
+
+ return bLocked;
+}
+
+BOOL ScModule::IsRefDialogOpen()
+{
+ //! move reference dialog handling to view
+ //! (only keep function autopilot here for references to other documents)
+
+ BOOL bIsOpen = FALSE;
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+
+ if ( nCurRefDlgId && pViewFrm )
+ {
+ SfxChildWindow* pChildWnd = pViewFrm->GetChildWindow( nCurRefDlgId );
+ if ( pChildWnd )
+ bIsOpen = ((ScAnyRefDlg*)pChildWnd->GetWindow())->IsVisible();
+ else
+ bIsOpen = TRUE; // for other views, see IsModalMode
+ }
+
+ return bIsOpen;
+}
+
+BOOL ScModule::IsFormulaMode()
+{
+ //! move reference dialog handling to view
+ //! (only keep function autopilot here for references to other documents)
+
+ BOOL bIsFormula = FALSE;
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+
+ if ( nCurRefDlgId && pViewFrm )
+ {
+ SfxChildWindow* pChildWnd = pViewFrm->GetChildWindow( nCurRefDlgId );
+ if ( pChildWnd )
+ {
+ ScAnyRefDlg* pRefDlg = (ScAnyRefDlg*)pChildWnd->GetWindow();
+ bIsFormula = pRefDlg->IsVisible() && pRefDlg->IsRefInputMode();
+ }
+ }
+ else
+ {
+ ScInputHandler* pHdl = GetInputHdl();
+ if ( pHdl )
+ bIsFormula = pHdl->IsFormulaMode();
+ }
+
+ if (bIsInEditCommand)
+ bIsFormula = TRUE;
+
+ return bIsFormula;
+}
+
+void lcl_MarkedTabs( const ScMarkData& rMark, USHORT& rStartTab, USHORT& rEndTab )
+{
+ if (rMark.GetSelectCount() > 1)
+ {
+ BOOL bFirst = TRUE;
+ for (USHORT i=0; i<=MAXTAB; i++)
+ if (rMark.GetTableSelect(i))
+ {
+ if (bFirst)
+ rStartTab = i;
+ rEndTab = i;
+ bFirst = FALSE;
+ }
+ }
+}
+
+void ScModule::SetReference( const ScRange& rRef, ScDocument* pDoc,
+ const ScMarkData* pMarkData )
+{
+ //! move reference dialog handling to view
+ //! (only keep function autopilot here for references to other documents)
+
+ // in Ref-Dialogen wird hiermit auch das Zoom-In ausgeloest,
+ // wenn Start und Ende der Ref unterschiedlich sind
+
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+
+ ScRange aNew = rRef;
+ aNew.Justify(); // immer "richtig herum"
+
+ if( nCurRefDlgId && pViewFrm )
+ {
+ SfxChildWindow* pChildWnd = pViewFrm->GetChildWindow( nCurRefDlgId );
+ DBG_ASSERT( pChildWnd, "NoChildWin" );
+ if ( pChildWnd )
+ {
+ if ( nCurRefDlgId == SID_OPENDLG_CONSOLIDATE && pMarkData )
+ {
+ USHORT nStartTab = aNew.aStart.Tab();
+ USHORT nEndTab = aNew.aEnd.Tab();
+ lcl_MarkedTabs( *pMarkData, nStartTab, nEndTab );
+ aNew.aStart.SetTab(nStartTab);
+ aNew.aEnd.SetTab(nEndTab);
+ }
+
+ ScAnyRefDlg* pRefDlg = (ScAnyRefDlg*)pChildWnd->GetWindow();
+ pRefDlg->SetReference( aNew, pDoc );
+ }
+ }
+ else
+ {
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->SetReference( aNew, pDoc );
+ else
+ DBG_ERROR("SetReference ohne Empfaenger");
+ }
+}
+
+void ScModule::AddRefEntry() // "Mehrfachselektion"
+{
+ //! move reference dialog handling to view
+ //! (only keep function autopilot here for references to other documents)
+
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if ( nCurRefDlgId && pViewFrm )
+ {
+ SfxChildWindow* pChildWnd = pViewFrm->GetChildWindow( nCurRefDlgId );
+ DBG_ASSERT( pChildWnd, "NoChildWin" );
+ if ( pChildWnd )
+ {
+ ScAnyRefDlg* pRefDlg = (ScAnyRefDlg*)pChildWnd->GetWindow();
+ pRefDlg->AddRefEntry();
+ }
+ }
+ else
+ {
+ ScInputHandler* pHdl = GetInputHdl();
+ if (pHdl)
+ pHdl->AddRefEntry();
+ }
+}
+
+void ScModule::EndReference()
+{
+ //! move reference dialog handling to view
+ //! (only keep function autopilot here for references to other documents)
+
+ // in Ref-Dialogen wird hiermit auch das Zoom-In wieder aufgehoben
+
+ //! ShowRefFrame am InputHdl, wenn der Funktions-AP offen ist ???
+
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if ( nCurRefDlgId && pViewFrm )
+ {
+ SfxChildWindow* pChildWnd = pViewFrm->GetChildWindow( nCurRefDlgId );
+ DBG_ASSERT( pChildWnd, "NoChildWin" );
+ if ( pChildWnd )
+ {
+ ScAnyRefDlg* pRefDlg = (ScAnyRefDlg*)pChildWnd->GetWindow();
+ pRefDlg->SetActive();
+ }
+ }
+}
+
+//------------------------------------------------------------------
+//
+// Idle / Online-Spelling
+//
+//------------------------------------------------------------------
+
+void ScModule::AnythingChanged()
+{
+ ULONG nOldTime = aIdleTimer.GetTimeout();
+ if ( nOldTime != SC_IDLE_MIN )
+ aIdleTimer.SetTimeout( SC_IDLE_MIN );
+
+ nIdleCount = 0;
+}
+
+void lcl_CheckNeedsRepaint( ScDocShell* pDocShell )
+{
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocShell );
+ while ( pFrame )
+ {
+ SfxViewShell* p = pFrame->GetViewShell();
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,p);
+ if ( pViewSh )
+ pViewSh->CheckNeedsRepaint();
+ pFrame = SfxViewFrame::GetNext( *pFrame, pDocShell );
+ }
+}
+
+IMPL_LINK( ScModule, IdleHandler, Timer*, pTimer )
+{
+ if ( Application::AnyInput( INPUT_MOUSEANDKEYBOARD ) )
+ {
+ aIdleTimer.Start(); // Timeout unveraendert
+ return 0;
+ }
+
+ BOOL bMore = FALSE;
+ ScDocShell* pDocSh = PTR_CAST( ScDocShell, SfxObjectShell::Current() );
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ if ( pDoc->IsLoadingDone() )
+ {
+ BOOL bLinks = pDoc->IdleCheckLinks();
+ BOOL bWidth = pDoc->IdleCalcTextWidth();
+ BOOL bSpell = pDoc->ContinueOnlineSpelling();
+ if ( bSpell )
+ aSpellTimer.Start(); // da ist noch was
+
+ bMore = bLinks || bWidth || bSpell; // ueberhaupt noch was?
+
+ // While calculating a Basic formula, a paint event may have occured,
+ // so check the bNeedsRepaint flags for this document's views
+ if (bWidth)
+ lcl_CheckNeedsRepaint( pDocSh );
+ }
+ }
+
+ ULONG nOldTime = aIdleTimer.GetTimeout();
+ ULONG nNewTime = nOldTime;
+ if ( bMore )
+ {
+ nNewTime = SC_IDLE_MIN;
+ nIdleCount = 0;
+ }
+ else
+ {
+ // SC_IDLE_COUNT mal mit initialem Timeout, dann hochzaehlen
+
+ if ( nIdleCount < SC_IDLE_COUNT )
+ ++nIdleCount;
+ else
+ {
+ nNewTime += SC_IDLE_STEP;
+ if ( nNewTime > SC_IDLE_MAX )
+ nNewTime = SC_IDLE_MAX;
+ }
+ }
+ if ( nNewTime != nOldTime )
+ aIdleTimer.SetTimeout( nNewTime );
+
+ aIdleTimer.Start();
+ return 0;
+}
+
+IMPL_LINK( ScModule, SpellTimerHdl, Timer*, pTimer )
+{
+ if ( Application::AnyInput( INPUT_KEYBOARD ) )
+ {
+ aSpellTimer.Start();
+ return 0; // dann spaeter wieder...
+ }
+
+ ScDocShell* pDocSh = PTR_CAST( ScDocShell, SfxObjectShell::Current() );
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ if ( pDoc->ContinueOnlineSpelling() )
+ aSpellTimer.Start();
+ }
+ return 0;
+}
+
+ //virtuelle Methoden fuer den Optionendialog
+SfxItemSet* ScModule::CreateItemSet( USHORT nId )
+{
+ SfxItemSet* pRet = 0;
+ if(SID_SC_EDITOPTIONS == nId)
+ {
+ pRet = new SfxItemSet( GetPool(),
+ // TP_CALC:
+ SID_SCDOCOPTIONS, SID_SCDOCOPTIONS,
+ // TP_VIEW:
+ SID_SCVIEWOPTIONS, SID_SCVIEWOPTIONS,
+ // TP_INPUT:
+ SID_SC_INPUT_SELECTION,SID_SC_INPUT_MARK_HEADER,
+ // TP_USERLISTS:
+ SCITEM_USERLIST, SCITEM_USERLIST,
+ // TP_PRINT:
+ SID_SCPRINTOPTIONS, SID_SCPRINTOPTIONS,
+ // TP_GRID:
+ SID_ATTR_GRID_OPTIONS, SID_ATTR_GRID_OPTIONS,
+ //
+ SID_ATTR_METRIC, SID_ATTR_METRIC,
+ SID_ATTR_DEFTABSTOP, SID_ATTR_DEFTABSTOP,
+ 0 );
+
+ ScDocShell* pDocSh = PTR_CAST(ScDocShell,
+ SfxObjectShell::Current());
+ ScDocOptions aCalcOpt = pDocSh
+ ? pDocSh->GetDocument()->GetDocOptions()
+ : GetDocOptions();
+
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,
+ SfxViewShell::Current());
+ ScViewOptions aViewOpt = pViewSh
+ ? pViewSh->GetViewData()->GetOptions()
+ : GetViewOptions();
+
+ ScUserListItem aULItem( SCITEM_USERLIST );
+ ScUserList* pUL = ScGlobal::GetUserList();
+
+ // OFF_APP()->GetOptions( aSet );
+
+ pRet->Put( SfxUInt16Item( SID_ATTR_METRIC,
+ GetAppOptions().GetAppMetric() ) );
+
+ // TP_CALC
+ pRet->Put( SfxUInt16Item( SID_ATTR_DEFTABSTOP,
+ aCalcOpt.GetTabDistance()));
+ pRet->Put( ScTpCalcItem( SID_SCDOCOPTIONS, aCalcOpt ) );
+
+ // TP_VIEW
+ pRet->Put( ScTpViewItem( SID_SCVIEWOPTIONS, aViewOpt ) );
+
+ // TP_INPUT
+ const ScInputOptions& rInpOpt = GetInputOptions();
+ pRet->Put( SfxUInt16Item( SID_SC_INPUT_SELECTIONPOS,
+ rInpOpt.GetMoveDir() ) );
+ pRet->Put( SfxBoolItem( SID_SC_INPUT_SELECTION,
+ rInpOpt.GetMoveSelection() ) );
+ pRet->Put( SfxBoolItem( SID_SC_INPUT_EDITMODE,
+ rInpOpt.GetEnterEdit() ) );
+ pRet->Put( SfxBoolItem( SID_SC_INPUT_FMT_EXPAND,
+ rInpOpt.GetExtendFormat() ) );
+ pRet->Put( SfxBoolItem( SID_SC_INPUT_RANGEFINDER,
+ rInpOpt.GetRangeFinder() ) );
+ pRet->Put( SfxBoolItem( SID_SC_INPUT_REF_EXPAND,
+ rInpOpt.GetExpandRefs() ) );
+ pRet->Put( SfxBoolItem( SID_SC_INPUT_MARK_HEADER,
+ rInpOpt.GetMarkHeader() ) );
+
+ // TP_GRID
+ SvxGridItem* pSvxGridItem = aViewOpt.CreateGridItem();
+ pRet->Put( *pSvxGridItem );
+ delete pSvxGridItem;
+
+ // TP_USERLISTS
+ if ( pUL )
+ aULItem.SetUserList( *pUL );
+ pRet->Put( aULItem );
+
+ }
+ return pRet;
+}
+
+void ScModule::ApplyItemSet( USHORT nId, const SfxItemSet& rSet )
+{
+ if(SID_SC_EDITOPTIONS == nId)
+ {
+ ModifyOptions( rSet );
+ }
+}
+
+SfxTabPage* ScModule::CreateTabPage( USHORT nId, Window* pParent, const SfxItemSet& rSet )
+{
+ SfxTabPage* pRet = 0;
+ switch(nId)
+ {
+ case SID_SC_TP_LAYOUT: pRet = ScTpLayoutOptions::Create(pParent, rSet); break;
+ case SID_SC_TP_CONTENT: pRet = ScTpContentOptions::Create(pParent, rSet); break;
+ case SID_SC_TP_INPUT: pRet = ScTpInputOptions::Create(pParent, rSet); break;
+ case SID_SC_TP_GRID: pRet = SvxGridTabPage::Create(pParent, rSet); break;
+ case SID_SC_TP_USERLISTS: pRet = ScTpUserLists::Create(pParent, rSet); break;
+ case SID_SC_TP_CALC: pRet = ScTpCalcOptions::Create(pParent, rSet); break;
+ case SID_SC_TP_CHANGES: pRet = ScRedlineOptionsTabPage::Create(pParent, rSet); break;
+ case SID_SC_TP_MISC: pRet = ScLoadOptPage::Create(pParent, rSet); break;
+ }
+ DBG_ASSERT(pRet, "Id unbekannt")
+ return pRet;
+}
+
+//------------------------------------------------------------------
+
+IMPL_LINK( ScModule, CalcFieldValueHdl, EditFieldInfo*, pInfo )
+{
+ //! mit ScFieldEditEngine zusammenfassen !!!
+
+ if (pInfo)
+ {
+ const SvxFieldItem& rField = pInfo->GetField();
+ const SvxFieldData* pField = rField.GetField();
+
+ if (pField && pField->ISA(SvxURLField))
+ {
+ /******************************************************************
+ * URL-Field
+ ******************************************************************/
+
+ const SvxURLField* pURLField = (const SvxURLField*) pField;
+ String aURL = pURLField->GetURL();
+
+ switch ( pURLField->GetFormat() )
+ {
+ case SVXURLFORMAT_APPDEFAULT: //!!! einstellbar an App???
+ case SVXURLFORMAT_REPR:
+ {
+ pInfo->SetRepresentation( pURLField->GetRepresentation() );
+ }
+ break;
+
+ case SVXURLFORMAT_URL:
+ {
+ pInfo->SetRepresentation( aURL );
+ }
+ break;
+ }
+
+ if ( INetURLHistory::GetOrCreate()->QueryUrl( aURL ) )
+ pInfo->SetTxtColor( Color(COL_LIGHTRED) );
+ else
+ pInfo->SetTxtColor( Color(COL_LIGHTBLUE) );
+ }
+ else
+ {
+ DBG_ERROR("unbekannter Feldbefehl");
+ pInfo->SetRepresentation(String('?'));
+ }
+ }
+
+ return 0;
+}
+
+
+
+
diff --git a/sc/source/ui/app/scmod2.cxx b/sc/source/ui/app/scmod2.cxx
new file mode 100644
index 000000000000..01699ef29966
--- /dev/null
+++ b/sc/source/ui/app/scmod2.cxx
@@ -0,0 +1,212 @@
+/*************************************************************************
+ *
+ * $RCSfile: scmod2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#ifdef ONE_LINGU
+
+#include <unotools/processfactory.hxx>
+#include <vos/xception.hxx>
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/linguistic/XThesaurus.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+
+using namespace com::sun::star;
+
+#include "scmod.hxx"
+#include "convuno.hxx"
+
+//------------------------------------------------------------------
+
+#define SERVICE_LINGUPROP "com.sun.star.linguistic.LinguProperties"
+#define SERVICE_THESAURUS "com.sun.star.linguistic.Thesaurus"
+
+#define LINGUPROP_DEFAULTLANG "DefaultLanguage"
+#define LINGUPROP_AUTOSPELL "IsSpellAuto"
+#define LINGUPROP_HIDEAUTO "IsSpellHide"
+
+//------------------------------------------------------------------
+
+// static
+void ScModule::GetSpellSettings( USHORT& rDefLang, BOOL& rAutoSpell, BOOL& rHideAuto )
+{
+ // GetLinguConfig is no longer needed, LinguProperties load themselves
+
+ rDefLang = LANGUAGE_SYSTEM;
+ rAutoSpell = rHideAuto = FALSE;
+
+ TRY
+ {
+ uno::Reference< lang::XMultiServiceFactory > xManager = utl::getProcessServiceFactory();
+ uno::Reference< beans::XPropertySet > xProp( xManager->createInstance(
+ rtl::OUString::createFromAscii( SERVICE_LINGUPROP ) ),
+ uno::UNO_QUERY );
+ if ( xProp.is() )
+ {
+ uno::Any aAny = xProp->getPropertyValue(
+ rtl::OUString::createFromAscii( LINGUPROP_DEFAULTLANG ) );
+ aAny >>= rDefLang;
+ aAny = xProp->getPropertyValue(
+ rtl::OUString::createFromAscii( LINGUPROP_AUTOSPELL ) );
+ aAny >>= rAutoSpell;
+ aAny = xProp->getPropertyValue(
+ rtl::OUString::createFromAscii( LINGUPROP_HIDEAUTO ) );
+ aAny >>= rHideAuto;
+ }
+ }
+ CATCH_ALL()
+ {
+ DBG_ERROR("Error in LinguProperties");
+ }
+ END_CATCH
+}
+
+// static
+void ScModule::SetAutoSpellProperty( BOOL bSet )
+{
+ // config item must be loaded/stored from outside
+ TRY
+ {
+ uno::Reference< lang::XMultiServiceFactory > xManager = utl::getProcessServiceFactory();
+ uno::Reference< beans::XPropertySet > xProp( xManager->createInstance(
+ rtl::OUString::createFromAscii( SERVICE_LINGUPROP ) ),
+ uno::UNO_QUERY );
+ if ( xProp.is() )
+ {
+ uno::Any aAny;
+ aAny <<= bSet;
+ xProp->setPropertyValue( rtl::OUString::createFromAscii( LINGUPROP_AUTOSPELL ), aAny );
+ }
+ }
+ CATCH_ALL()
+ {
+ DBG_ERROR("Error in LinguProperties");
+ }
+ END_CATCH
+}
+
+// static
+void ScModule::SetHideAutoProperty( BOOL bSet )
+{
+ // config item must be loaded/stored from outside
+ TRY
+ {
+ uno::Reference< lang::XMultiServiceFactory > xManager = utl::getProcessServiceFactory();
+ uno::Reference< beans::XPropertySet > xProp( xManager->createInstance(
+ rtl::OUString::createFromAscii( SERVICE_LINGUPROP ) ),
+ uno::UNO_QUERY );
+ if ( xProp.is() )
+ {
+ uno::Any aAny;
+ aAny <<= bSet;
+ xProp->setPropertyValue( rtl::OUString::createFromAscii( LINGUPROP_HIDEAUTO ), aAny );
+ }
+ }
+ CATCH_ALL()
+ {
+ DBG_ERROR("Error in LinguProperties");
+ }
+ END_CATCH
+}
+
+
+// static
+BOOL ScModule::HasThesaurusLanguage( USHORT nLang )
+{
+ if ( nLang == LANGUAGE_NONE )
+ return FALSE;
+
+ lang::Locale aLocale;
+ ScUnoConversion::FillLocale( aLocale, nLang );
+
+ BOOL bHasLang = FALSE;
+ TRY
+ {
+ uno::Reference< lang::XMultiServiceFactory > xManager = utl::getProcessServiceFactory();
+ uno::Reference< linguistic::XThesaurus > xThes( xManager->createInstance(
+ rtl::OUString::createFromAscii( SERVICE_THESAURUS ) ),
+ uno::UNO_QUERY );
+ if ( xThes.is() )
+ bHasLang = xThes->hasLocale( aLocale );
+ }
+ CATCH_ALL()
+ {
+ DBG_ERROR("Error in Thesaurus");
+ }
+ END_CATCH
+
+ return bHasLang;
+}
+
+
+#endif // ONE_LINGU
+
+
+
+
diff --git a/sc/source/ui/app/template.cxx b/sc/source/ui/app/template.cxx
new file mode 100644
index 000000000000..58a3a6ca9539
--- /dev/null
+++ b/sc/source/ui/app/template.cxx
@@ -0,0 +1,160 @@
+/*************************************************************************
+ *
+ * $RCSfile: template.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+#include "template.hxx"
+
+SEG_EOFGLOBALS()
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(template_01)
+
+ScTemplateDlg::ScTemplateDlg(Window * pParent, USHORT nAppResource) :
+// SfxTemplateDlg( pParent, nAppResource )
+ SfxTemplateDialog( pParent )
+{
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(template_07)
+
+__EXPORT ScTemplateDlg::~ScTemplateDlg()
+{
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(template_02)
+
+BOOL ScTemplateDlg::New(String &rNewName)
+{
+ return TRUE;
+}
+
+#pragma SEG_FUNCDEF(template_03)
+
+void ScTemplateDlg::Edit(const String &)
+{
+}
+
+#pragma SEG_FUNCDEF(template_04)
+
+BOOL ScTemplateDlg::Delete(const String &)
+{
+ return TRUE;
+}
+
+#pragma SEG_FUNCDEF(template_05)
+
+void ScTemplateDlg::InvalidateTemplates()
+{
+}
+
+#pragma SEG_FUNCDEF(template_06)
+
+void ScTemplateDlg::ToggleApplyTemplate()
+{
+}
+
+
+// STATIC DATA -----------------------------------------------------------
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.7 2000/09/17 14:08:54 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.6 2000/08/31 16:38:18 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.5 1995/01/30 21:25:46 MO
+ + Dtor implementiert
+
+
+ Rev 1.4 30 Jan 1995 22:25:46 MO
+ + Dtor implementiert
+
+ Rev 1.3 17 Jan 1995 17:02:22 TRI
+ Pragmas zur Segmentierung eingebaut
+
+ Rev 1.2 06 Dec 1994 11:26:22 MO
+ SfxTemplateDlg -> SfxTemplateDialog
+
+ Rev 1.1 09 Nov 1994 19:54:18 NN
+ SfxTemplateDlg Konstruktor angepasst
+
+ Rev 1.0 08 Nov 1994 16:42:30 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/app/typemap.cxx b/sc/source/ui/app/typemap.cxx
new file mode 100644
index 000000000000..964379c7665e
--- /dev/null
+++ b/sc/source/ui/app/typemap.cxx
@@ -0,0 +1,257 @@
+/*************************************************************************
+ *
+ * $RCSfile: typemap.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <segmentc.hxx>
+
+#pragma hdrstop
+
+#include <svx/svxids.hrc>
+//#include <svx/hlnkitem.hxx>
+#include "scitems.hxx"
+
+#define ITEMID_ADJUST 0
+#define ITEMID_CASEMAP 0
+#define ITEMID_DBTYPE 0
+#define ITEMID_LINESPACE 0
+#define ITEMID_INTERLINESPACE 0
+#define ITEMID_BREAK 0
+#define ITEMID_NUMTYPE 0
+#define ITEMID_SHADOWLOCATION 0
+#define ITEMID_PAGE 0
+#define ITEMID_PAGEMODEL 0
+#define ITEMID_ORPHANS 0
+#define ITEMID_KERNING 0
+#define ITEMID_POSTITDATE 0
+#define ITEMID_TEXT 0
+#define ITEMID_AUTHOR 0
+#define ITEMID_DATE 0
+#define ITEMID_SIZE 0
+#define ITEMID_HYPHENZONE 0
+#define ITEMID_FMTSPLIT 0
+#define ITEMID_FMTKEEP 0
+#define ITEMID_FMTBREAK 0
+#define ITEMID_AUTOKERN 0
+#define ITEMID_LONGLRSPACE 0
+#define ITEMID_LONGULSPACE 0
+#define ITEMID_WIDOWS 0
+
+
+#include <sfx2/msg.hxx>
+#include <svtools/stritem.hxx>
+#include <sfx2/objitem.hxx>
+#include <svx/fontitem.hxx>
+#include <svx/hlnkitem.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/postattr.hxx>
+#include <svx/postitem.hxx>
+#include <sfx2/tplpitem.hxx>
+#include <svx/zoomitem.hxx>
+#include <svx/brshitem.hxx>
+#include <svx/wghtitem.hxx>
+#include <svx/fhgtitem.hxx>
+#include <svx/colritem.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/bolnitem.hxx>
+#include <svtools/ptitem.hxx>
+#include <svx/sizeitem.hxx>
+#include <svx/algitem.hxx>
+#include <svx/udlnitem.hxx>
+#include <svx/xlnstit.hxx>
+#include <svx/xlnedit.hxx>
+#include <svx/xfillit0.hxx>
+#include <svx/xflclit.hxx>
+#include <svx/xgrad.hxx>
+#include <svx/xflgrit.hxx>
+#include <svx/xflhtit.hxx>
+#include <svx/xbtmpit.hxx>
+#include <svx/xlineit0.hxx>
+#include <svx/xlndsit.hxx>
+#include <svx/xlnwtit.hxx>
+#include <svx/xlnclit.hxx>
+#include <svx/xtextit0.hxx>
+#include <svx/xftadit.hxx>
+#include <svx/xftdiit.hxx>
+#include <svx/xftstit.hxx>
+#include <svx/xftmrit.hxx>
+#include <svx/xftouit.hxx>
+#include <svx/xftshit.hxx>
+#include <svx/xftshcit.hxx>
+#include <svx/xftshxy.hxx>
+#include <svx/xftsfit.hxx>
+#include <svx/langitem.hxx>
+
+#include "attrib.hxx"
+
+#define CharSetItem SfxUInt16Item
+#define FontFamilyItem SfxUInt16Item
+#define FontPitchItem SfxUInt16Item
+#define FontAlignItem SfxUInt16Item
+#define FontWeightItem SfxUInt16Item
+#define FontUnderlineItem SfxUInt16Item
+#define FontStrikeoutItem SfxUInt16Item
+#define FontItalicItem SfxUInt16Item
+#define SvxShadowedItem SfxUInt16Item
+#define SvxContourItem SfxUInt16Item
+#define SvxCrossedOutItem SfxUInt16Item
+#define SvxDbTypeItem SfxUInt16Item
+#define SvxLineSpaceItem SfxUInt16Item
+#define SvxInterLineSpaceItem SfxUInt16Item
+#define SvxBreakItem SfxUInt16Item
+#define BrushStyleItem SfxUInt16Item
+#define SvxNumTypeItem SfxUInt16Item
+#define SvxShadowLocationItem SfxUInt16Item
+#define SvxDbTypeItem SfxUInt16Item
+#define SvxChooseControlEnumItem SfxUInt16Item
+#define SvxDrawToolEnumItem SfxUInt16Item
+
+//#define SvxChooseControlItem SfxUInt16Item
+//#define SvxDrawToolItem SfxUInt16Item
+#define SvxDrawToolItem SfxEnumItem
+#define SvxDrawAlignItem SfxEnumItem
+#define SvxChooseControlItem SfxEnumItem
+
+#define SvxCellHorJustifyEnumItem SfxUInt16Item
+#define SvxCellVerJustifyEnumItem SfxUInt16Item
+#define SvxCellOrientationEnumItem SfxUInt16Item
+#define SvxLanguage SfxUInt16Item
+
+#pragma code_seg("SCSTATICS")
+
+#define SFX_TYPEMAP
+#include "scslots.hxx"
+
+#pragma code_seg()
+
+SEG_EOFGLOBALS()
+
+
+/*************************************************************************
+
+ Source Code Control System - Update
+
+ $Log: not supported by cvs2svn $
+ Revision 1.18 2000/09/17 14:08:54 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.17 2000/08/31 16:38:18 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.16 1999/09/24 16:01:52 nn
+ hlnkitem.hxx moved to svx
+
+ Revision 1.15 1998/02/06 13:15:50 HJS
+ includes
+
+
+ Rev 1.14 06 Feb 1998 14:15:50 HJS
+ includes
+
+ Rev 1.13 05 Dec 1997 20:07:56 ANK
+ Includes geaendert
+
+ Rev 1.12 03 Dec 1997 14:27:06 HJS
+ includes
+
+ Rev 1.11 05 Aug 1997 15:10:24 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.10 02 May 1997 17:38:10 NF
+ includes...
+
+ Rev 1.9 18 Feb 1997 17:02:30 NN
+ dbcoll
+
+ Rev 1.8 01 Nov 1996 06:25:52 MH
+ chg: includes, defines
+
+ Rev 1.7 20 Sep 1996 11:02:36 NN
+ SCSTATICS Segment fuer statische Konstruktoren
+
+ Rev 1.6 13 Feb 1996 16:21:06 JN
+ Include fuer SvxAddressItem
+
+ Rev 1.5 26 Jan 1996 09:37:40 JN
+ Auch eigene Typen includen
+
+ Rev 1.4 19 Dec 1995 11:55:52 MD
+ ...
+
+ Rev 1.3 11 Dec 1995 18:41:00 MO
+ Text-Items hinzugefuegt
+
+ Rev 1.2 07 Dec 1995 17:11:12 MO
+ SvxDrawAlignItem
+
+ Rev 1.1 04 Dec 1995 14:22:22 JN
+ Zwischenstand fuer Updater
+
+ Rev 1.0 28 Nov 1995 19:04:06 MO
+ Initial revision.
+
+ Rev 1.0 28 Nov 1995 09:49:20 JN
+ Umstellung auf 303a
+
+ Initial revision.
+
+*************************************************************************/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/app/uiitems.cxx b/sc/source/ui/app/uiitems.cxx
new file mode 100644
index 000000000000..b2f345a1f4fe
--- /dev/null
+++ b/sc/source/ui/app/uiitems.cxx
@@ -0,0 +1,927 @@
+/*************************************************************************
+ *
+ * $RCSfile: uiitems.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <svx/editobj.hxx>
+
+#include "userlist.hxx"
+#include "uiitems.hxx"
+#include "dpsave.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+TYPEINIT1(ScInputStatusItem, SfxPoolItem);
+TYPEINIT1(ScSortItem, SfxPoolItem);
+TYPEINIT1(ScQueryItem, SfxPoolItem);
+TYPEINIT1(ScSubTotalItem, SfxPoolItem);
+TYPEINIT1(ScUserListItem, SfxPoolItem);
+TYPEINIT1(ScConsolidateItem, SfxPoolItem);
+TYPEINIT1(ScPivotItem, SfxPoolItem);
+TYPEINIT1(ScSolveItem, SfxPoolItem);
+TYPEINIT1(ScTabOpItem, SfxPoolItem);
+TYPEINIT1(ScCondFrmtItem, SfxPoolItem);
+
+TYPEINIT1(ScTablesHint, SfxHint);
+TYPEINIT1(ScEditViewHint, SfxHint);
+TYPEINIT1(ScIndexHint, SfxHint);
+
+// -----------------------------------------------------------------------
+// ScInputStatusItem - Status-Update fuer Eingabezeile
+// -----------------------------------------------------------------------
+
+ScInputStatusItem::ScInputStatusItem( USHORT nWhich,
+ USHORT nTab,
+ USHORT nCol, USHORT nRow,
+ USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow,
+ const String& rString, const EditTextObject* pData )
+
+ : SfxPoolItem ( nWhich ),
+ aCursorPos ( nCol, nRow, nTab ),
+ aStartPos ( nStartCol, nStartRow, nTab ),
+ aEndPos ( nEndCol, nEndRow, nTab ),
+ aString ( rString ),
+ pEditData ( pData ? pData->Clone() : NULL )
+{
+}
+
+ScInputStatusItem::ScInputStatusItem( USHORT nWhich,
+ const ScAddress& rCurPos,
+ const ScAddress& rStartPos,
+ const ScAddress& rEndPos,
+ const String& rString,
+ const EditTextObject* pData )
+ : SfxPoolItem ( nWhich ),
+ aCursorPos ( rCurPos ),
+ aStartPos ( rStartPos ),
+ aEndPos ( rEndPos ),
+ aString ( rString ),
+ pEditData ( pData ? pData->Clone() : NULL )
+{
+}
+
+ScInputStatusItem::ScInputStatusItem( const ScInputStatusItem& rItem )
+ : SfxPoolItem ( rItem ),
+ aCursorPos ( rItem.aCursorPos ),
+ aStartPos ( rItem.aStartPos ),
+ aEndPos ( rItem.aEndPos ),
+ aString ( rItem.aString ),
+ pEditData ( rItem.pEditData ? rItem.pEditData->Clone() : NULL )
+{
+}
+
+__EXPORT ScInputStatusItem::~ScInputStatusItem()
+{
+ delete pEditData;
+}
+
+String __EXPORT ScInputStatusItem::GetValueText() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("InputStatus"));
+}
+
+int __EXPORT ScInputStatusItem::operator==( const SfxPoolItem& rItem ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
+
+ return ( (aStartPos == ((ScInputStatusItem&)rItem).aStartPos)
+ && (aEndPos == ((ScInputStatusItem&)rItem).aEndPos)
+ && (aCursorPos == ((ScInputStatusItem&)rItem).aCursorPos)
+ && (aString == ((ScInputStatusItem&)rItem).aString) );
+ //! Edit-Daten vergleichen!
+}
+
+SfxPoolItem* __EXPORT ScInputStatusItem::Clone( SfxItemPool * ) const
+{
+ return new ScInputStatusItem( *this );
+}
+
+//
+// ScPaintHint ist nach schints.cxx verschoben
+//
+
+// -----------------------------------------------------------------------
+// ScTablesHint - Views anpassen, wenn Tabellen eingefuegt / geloescht
+// -----------------------------------------------------------------------
+
+ScTablesHint::ScTablesHint(USHORT nNewId, USHORT nTable1, USHORT nTable2) :
+ nId( nNewId ),
+ nTab1( nTable1 ),
+ nTab2( nTable2 )
+{
+}
+
+ScTablesHint::~ScTablesHint()
+{
+}
+
+
+// -----------------------------------------------------------------------
+// ScIndexHint
+// -----------------------------------------------------------------------
+
+ScIndexHint::ScIndexHint(USHORT nNewId, USHORT nIdx) :
+ nId( nNewId ),
+ nIndex( nIdx )
+{
+}
+
+ScIndexHint::~ScIndexHint()
+{
+}
+
+
+// -----------------------------------------------------------------------
+// ScEditViewHint - neue EditView fuer Cursorposition anlegen
+// -----------------------------------------------------------------------
+
+ScEditViewHint::ScEditViewHint() :
+ aCursorPos( 0,0,0 ),
+ pEditEngine( NULL )
+{
+}
+
+ScEditViewHint::ScEditViewHint( ScEditEngineDefaulter* pEngine, const ScAddress& rCurPos ) :
+ aCursorPos( rCurPos ),
+ pEditEngine( pEngine )
+{
+}
+
+ScEditViewHint::~ScEditViewHint()
+{
+}
+
+// -----------------------------------------------------------------------
+// ScSortItem - Daten fuer den Sortierdialog
+// -----------------------------------------------------------------------
+
+ScSortItem::ScSortItem( USHORT nWhich,
+ ScViewData* ptrViewData,
+ const ScSortParam* pSortData ) :
+ SfxPoolItem ( nWhich ),
+ pViewData ( ptrViewData )
+{
+ if ( pSortData ) theSortData = *pSortData;
+}
+
+//------------------------------------------------------------------------
+
+ScSortItem::ScSortItem( USHORT nWhich,
+ const ScSortParam* pSortData ) :
+ SfxPoolItem ( nWhich ),
+ pViewData ( NULL )
+{
+ if ( pSortData ) theSortData = *pSortData;
+}
+
+//------------------------------------------------------------------------
+
+ScSortItem::ScSortItem( const ScSortItem& rItem ) :
+ SfxPoolItem ( rItem ),
+ pViewData ( rItem.pViewData ),
+ theSortData ( rItem.theSortData )
+{
+}
+
+__EXPORT ScSortItem::~ScSortItem()
+{
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT ScSortItem::GetValueText() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("SortItem"));
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScSortItem::operator==( const SfxPoolItem& rItem ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
+
+ const ScSortItem& rOther = (const ScSortItem&)rItem;
+
+ return ( (pViewData == rOther.pViewData)
+ && (theSortData == rOther.theSortData) );
+}
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT ScSortItem::Clone( SfxItemPool * ) const
+{
+ return new ScSortItem( *this );
+}
+
+// -----------------------------------------------------------------------
+// ScQueryItem - Daten fuer den Filterdialog
+// -----------------------------------------------------------------------
+
+ScQueryItem::ScQueryItem( USHORT nWhich,
+ ScViewData* ptrViewData,
+ const ScQueryParam* pQueryData ) :
+ SfxPoolItem ( nWhich ),
+ bIsAdvanced ( FALSE ),
+ pViewData ( ptrViewData )
+{
+ if ( pQueryData ) theQueryData = *pQueryData;
+}
+
+//------------------------------------------------------------------------
+
+ScQueryItem::ScQueryItem( USHORT nWhich,
+ const ScQueryParam* pQueryData ) :
+ SfxPoolItem ( nWhich ),
+ bIsAdvanced ( FALSE ),
+ pViewData ( NULL )
+{
+ if ( pQueryData ) theQueryData = *pQueryData;
+}
+
+//------------------------------------------------------------------------
+
+ScQueryItem::ScQueryItem( const ScQueryItem& rItem ) :
+ SfxPoolItem ( rItem ),
+ bIsAdvanced ( rItem.bIsAdvanced ),
+ aAdvSource ( rItem.aAdvSource ),
+ pViewData ( rItem.pViewData ),
+ theQueryData( rItem.theQueryData )
+{
+}
+
+__EXPORT ScQueryItem::~ScQueryItem()
+{
+}
+
+//------------------------------------------------------------------------
+
+void ScQueryItem::SetAdvancedQuerySource(const ScRange* pSource)
+{
+ if (pSource)
+ {
+ aAdvSource = *pSource;
+ bIsAdvanced = TRUE;
+ }
+ else
+ bIsAdvanced = FALSE;
+}
+
+BOOL ScQueryItem::GetAdvancedQuerySource(ScRange& rSource) const
+{
+ rSource = aAdvSource;
+ return bIsAdvanced;
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT ScQueryItem::GetValueText() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("QueryItem"));
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScQueryItem::operator==( const SfxPoolItem& rItem ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
+
+ const ScQueryItem& rQueryItem = (const ScQueryItem&)rItem;
+
+ return ( (pViewData == rQueryItem.pViewData)
+ && (bIsAdvanced == rQueryItem.bIsAdvanced)
+ && (aAdvSource == rQueryItem.aAdvSource)
+ && (theQueryData == rQueryItem.theQueryData) );
+}
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT ScQueryItem::Clone( SfxItemPool * ) const
+{
+ return new ScQueryItem( *this );
+}
+
+// -----------------------------------------------------------------------
+// ScSubTotalItem - Daten fuer den Zwischenergebnisdialog
+// -----------------------------------------------------------------------
+
+ScSubTotalItem::ScSubTotalItem( USHORT nWhich,
+ ScViewData* ptrViewData,
+ const ScSubTotalParam* pSubTotalData ) :
+ SfxPoolItem ( nWhich ),
+ pViewData ( ptrViewData )
+{
+ if ( pSubTotalData ) theSubTotalData = *pSubTotalData;
+}
+
+//------------------------------------------------------------------------
+
+ScSubTotalItem::ScSubTotalItem( USHORT nWhich,
+ const ScSubTotalParam* pSubTotalData ) :
+ SfxPoolItem ( nWhich ),
+ pViewData ( NULL )
+{
+ if ( pSubTotalData ) theSubTotalData = *pSubTotalData;
+}
+
+//------------------------------------------------------------------------
+
+ScSubTotalItem::ScSubTotalItem( const ScSubTotalItem& rItem ) :
+ SfxPoolItem ( rItem ),
+ pViewData ( rItem.pViewData ),
+ theSubTotalData ( rItem.theSubTotalData )
+{
+}
+
+__EXPORT ScSubTotalItem::~ScSubTotalItem()
+{
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT ScSubTotalItem::GetValueText() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("SubTotalItem"));
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScSubTotalItem::operator==( const SfxPoolItem& rItem ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
+
+ const ScSubTotalItem& rSTItem = (const ScSubTotalItem&)rItem;
+
+ return ( (pViewData == rSTItem.pViewData)
+ && (theSubTotalData == rSTItem.theSubTotalData) );
+}
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT ScSubTotalItem::Clone( SfxItemPool * ) const
+{
+ return new ScSubTotalItem( *this );
+}
+
+// -----------------------------------------------------------------------
+// ScUserListItem - Transporter fuer den Benutzerlisten-TabPage
+// -----------------------------------------------------------------------
+
+ScUserListItem::ScUserListItem( USHORT nWhich )
+ : SfxPoolItem ( nWhich ),
+ pUserList ( NULL )
+{
+}
+
+//------------------------------------------------------------------------
+
+ScUserListItem::ScUserListItem( const ScUserListItem& rItem )
+ : SfxPoolItem ( rItem )
+{
+ if ( rItem.pUserList )
+ pUserList = new ScUserList( *(rItem.pUserList) );
+ else
+ pUserList = NULL;
+}
+
+__EXPORT ScUserListItem::~ScUserListItem()
+{
+ delete pUserList;
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT ScUserListItem::GetValueText() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScUserListItem"));
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScUserListItem::operator==( const SfxPoolItem& rItem ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
+
+ const ScUserListItem& r = (const ScUserListItem&)rItem;
+ BOOL bEqual = FALSE;
+
+ if ( !pUserList || !(r.pUserList) )
+ bEqual = ( !pUserList && !(r.pUserList) );
+ else
+ bEqual = ( *pUserList == *(r.pUserList) );
+
+ return bEqual;
+}
+
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT ScUserListItem::Clone( SfxItemPool * ) const
+{
+ return new ScUserListItem( *this );
+}
+
+//------------------------------------------------------------------------
+
+void ScUserListItem::SetUserList( const ScUserList& rUserList )
+{
+ delete pUserList;
+ pUserList = new ScUserList( rUserList );
+}
+
+// -----------------------------------------------------------------------
+// ScConsolidateItem - Daten fuer den Konsolidieren-Dialog
+// -----------------------------------------------------------------------
+
+ScConsolidateItem::ScConsolidateItem(
+ USHORT nWhich,
+ const ScConsolidateParam* pConsolidateData ) :
+ SfxPoolItem ( nWhich )
+{
+ if ( pConsolidateData ) theConsData = *pConsolidateData;
+}
+
+//------------------------------------------------------------------------
+
+ScConsolidateItem::ScConsolidateItem( const ScConsolidateItem& rItem ) :
+ SfxPoolItem ( rItem ),
+ theConsData ( rItem.theConsData )
+{
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScConsolidateItem::~ScConsolidateItem()
+{
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT ScConsolidateItem::GetValueText() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScConsolidateItem"));
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScConsolidateItem::operator==( const SfxPoolItem& rItem ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
+
+ const ScConsolidateItem& rCItem = (const ScConsolidateItem&)rItem;
+
+ return ( theConsData == rCItem.theConsData);
+}
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT ScConsolidateItem::Clone( SfxItemPool * ) const
+{
+ return new ScConsolidateItem( *this );
+}
+
+
+// -----------------------------------------------------------------------
+// ScPivotItem - Daten fuer den Pivot-Dialog
+// -----------------------------------------------------------------------
+
+ScPivotItem::ScPivotItem( USHORT nWhich, const ScDPSaveData* pData,
+ const ScRange* pRange, BOOL bNew ) :
+ SfxPoolItem ( nWhich )
+{
+ // pSaveData must always exist
+ if ( pData )
+ pSaveData = new ScDPSaveData(*pData);
+ else
+ pSaveData = new ScDPSaveData;
+ if ( pRange ) aDestRange = *pRange;
+ bNewSheet = bNew;
+}
+
+//------------------------------------------------------------------------
+
+ScPivotItem::ScPivotItem( const ScPivotItem& rItem ) :
+ SfxPoolItem ( rItem ),
+ aDestRange ( rItem.aDestRange ),
+ bNewSheet ( rItem.bNewSheet )
+{
+ DBG_ASSERT(rItem.pSaveData, "pSaveData");
+ pSaveData = new ScDPSaveData(*rItem.pSaveData);
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScPivotItem::~ScPivotItem()
+{
+ delete pSaveData;
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT ScPivotItem::GetValueText() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScPivotItem"));
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScPivotItem::operator==( const SfxPoolItem& rItem ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
+
+ const ScPivotItem& rPItem = (const ScPivotItem&)rItem;
+ DBG_ASSERT( pSaveData && rPItem.pSaveData, "pSaveData" );
+ return ( *pSaveData == *rPItem.pSaveData &&
+ aDestRange == rPItem.aDestRange &&
+ bNewSheet == rPItem.bNewSheet );
+}
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT ScPivotItem::Clone( SfxItemPool * ) const
+{
+ return new ScPivotItem( *this );
+}
+
+
+// -----------------------------------------------------------------------
+// ScSolveItem - Daten fuer den Solver-Dialog
+// -----------------------------------------------------------------------
+
+ScSolveItem::ScSolveItem( USHORT nWhich,
+ const ScSolveParam* pSolveData )
+ : SfxPoolItem ( nWhich )
+{
+ if ( pSolveData ) theSolveData = *pSolveData;
+}
+
+//------------------------------------------------------------------------
+
+ScSolveItem::ScSolveItem( const ScSolveItem& rItem )
+ : SfxPoolItem ( rItem ),
+ theSolveData ( rItem.theSolveData )
+{
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScSolveItem::~ScSolveItem()
+{
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT ScSolveItem::GetValueText() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScSolveItem"));
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScSolveItem::operator==( const SfxPoolItem& rItem ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
+
+ const ScSolveItem& rPItem = (const ScSolveItem&)rItem;
+
+ return ( theSolveData == rPItem.theSolveData );
+}
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT ScSolveItem::Clone( SfxItemPool * ) const
+{
+ return new ScSolveItem( *this );
+}
+
+// -----------------------------------------------------------------------
+// ScTabOpItem - Daten fuer den TabOp-Dialog
+// -----------------------------------------------------------------------
+
+ScTabOpItem::ScTabOpItem( USHORT nWhich,
+ const ScTabOpParam* pTabOpData )
+ : SfxPoolItem ( nWhich )
+{
+ if ( pTabOpData ) theTabOpData = *pTabOpData;
+}
+
+//------------------------------------------------------------------------
+
+ScTabOpItem::ScTabOpItem( const ScTabOpItem& rItem )
+ : SfxPoolItem ( rItem ),
+ theTabOpData ( rItem.theTabOpData )
+{
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScTabOpItem::~ScTabOpItem()
+{
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT ScTabOpItem::GetValueText() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScTabOpItem"));
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScTabOpItem::operator==( const SfxPoolItem& rItem ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
+
+ const ScTabOpItem& rPItem = (const ScTabOpItem&)rItem;
+
+ return ( theTabOpData == rPItem.theTabOpData );
+}
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT ScTabOpItem::Clone( SfxItemPool * ) const
+{
+ return new ScTabOpItem( *this );
+}
+
+
+// -----------------------------------------------------------------------
+// ScCondFrmtItem - Daten fuer den Dialog bedingte Formatierung
+// -----------------------------------------------------------------------
+
+ScCondFrmtItem::ScCondFrmtItem( USHORT nWhich,
+//! const ScConditionalFormat* pCondFrmt )
+ const ScConditionalFormat& rCondFrmt )
+ : SfxPoolItem ( nWhich ),
+ theCondFrmtData ( rCondFrmt ) //!
+{
+//! if ( pCondFrmt ) theCondFrmtData = *pCondFrmt;
+}
+
+//------------------------------------------------------------------------
+
+ScCondFrmtItem::ScCondFrmtItem( const ScCondFrmtItem& rItem )
+ : SfxPoolItem ( rItem ),
+ theCondFrmtData ( rItem.theCondFrmtData )
+{
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScCondFrmtItem::~ScCondFrmtItem()
+{
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT ScCondFrmtItem::GetValueText() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScCondFrmtItem"));
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScCondFrmtItem::operator==( const SfxPoolItem& rItem ) const
+{
+ DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
+
+ const ScCondFrmtItem& rPItem = (const ScCondFrmtItem&)rItem;
+
+ return ( theCondFrmtData == rPItem.theCondFrmtData );
+}
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT ScCondFrmtItem::Clone( SfxItemPool * ) const
+{
+ return new ScCondFrmtItem( *this );
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.50 2000/09/17 14:08:54 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.49 2000/08/31 16:38:18 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.48 2000/08/27 18:18:18 er
+ MUST/602: EditEngine
+
+ Revision 1.47 2000/06/06 17:35:07 nn
+ ScQueryItem: advanced filter source range
+
+ Revision 1.46 2000/04/17 13:26:28 nn
+ unicode changes
+
+ Revision 1.45 2000/03/03 20:14:06 nn
+ PivotItem: SaveData as pointer
+
+ Revision 1.44 1999/10/25 17:19:33 nn
+ ScPivotItem changed
+
+ Revision 1.43 1997/12/05 19:07:44 ANK
+ Includes geaendert
+
+
+ Rev 1.42 05 Dec 1997 20:07:44 ANK
+ Includes geaendert
+
+ Rev 1.41 09 Jun 1997 12:00:26 NN
+ ScIndexHint
+
+ Rev 1.40 16 Oct 1996 16:15:32 RJ
+ Item fuer bedingte Fomatierung
+
+ Rev 1.39 25 Sep 1996 12:50:40 NN
+ ScPaintHint nach hints verschoben
+
+ Rev 1.38 15 Aug 1996 15:28:24 NN
+ tabvwsh.hxx raus
+
+ Rev 1.37 04 Jul 1996 16:51:52 NN
+ ScTablesHint mit 2.Tabelle fuer Copy/Move
+
+ Rev 1.36 15 Mar 1996 14:29:08 NN
+ ScTablesHint
+
+ Rev 1.35 27 Nov 1995 09:27:12 MO
+ Pos-Item entfernt
+
+ Rev 1.34 24 Nov 1995 17:08:32 MO
+ ScTripel durch ScAddress ersetzt
+
+ Rev 1.33 30 Jun 1995 10:57:58 STE
+ Typeinit fuer ScTabOpItem dazu
+
+ Rev 1.32 29 Jun 1995 12:35:16 STE
+ tabop dazu
+
+ Rev 1.31 23 Jun 1995 14:50:40 MO
+ ViewOptionsItem entfernt
+
+ Rev 1.30 02 Jun 1995 16:32:48 MO
+ ScViewOptionsItem
+
+ Rev 1.29 21 May 1995 18:06:32 MO
+ Zusaetzlich CursorPos
+
+ Rev 1.28 21 May 1995 13:55:34 MO
+ aus aPos wird aEndPos, zusaetzlich aStartPos
+
+ Rev 1.27 20 May 1995 16:04:38 MO
+ ScUserListItem: Listen kopieren
+
+ Rev 1.26 12 May 1995 10:58:44 MO
+ Items fuer Seitenformat nach attrib
+
+ Rev 1.25 10 May 1995 20:13:04 MO
+ Bugfix: ==-Operatoren, Ctor von UserListItem
+
+ Rev 1.24 08 May 1995 20:49:48 MO
+ Seitendialog
+
+ Rev 1.23 19 Apr 1995 16:30:56 MO
+ ScSolveItem
+
+ Rev 1.22 24 Mar 1995 13:06:36 TRI
+ Segmentierung
+
+ Rev 1.21 24 Mar 1995 13:05:26 TRI
+ Segmentierung
+
+ Rev 1.20 22 Mar 1995 19:31:14 NN
+ EditData am InputStatusIten
+
+ Rev 1.19 20 Mar 1995 16:38:04 MO
+ + Pivot-Item
+
+ Rev 1.18 01 Mar 1995 19:00:52 MO
+ + ScConsolidateItem
+
+ Rev 1.17 01 Feb 1995 11:20:30 MO
+ * __EXORT -> __EXPORT
+
+
+ Rev 1.16 31 Jan 1995 14:44:26 TRI
+ __EXPORT vor virtuelle Funktion eingebaut
+
+ Rev 1.15 29 Jan 1995 20:20:08 MO
+ UserListItem
+
+ Rev 1.14 24 Jan 1995 14:57:14 MO
+ ScSortItem an ScSortParam angepasst
+
+ Rev 1.13 19 Jan 1995 11:26:50 MO
+ ScSubTotalItem
+
+ Rev 1.12 17 Jan 1995 17:02:14 TRI
+ Pragmas zur Segmentierung eingebaut
+
+ Rev 1.11 12 Jan 1995 14:34:04 MO
+ Zusaetzliche Konstruktoren fuer Query/Sort-Item fuer Rueckgabe aus
+ dem Dialog.
+
+ Rev 1.10 10 Jan 1995 16:14:36 MO
+ ScSortItem um Kopier-Position und Header-Flag erweitert
+
+ Rev 1.9 09 Jan 1995 11:13:44 MO
+ ScSortItem: ScSortParam als Member
+ ScQueryItem: wie ScSortItem
+
+ Rev 1.8 21 Dec 1994 12:15:02 MO
+ SortItem
+
+ Rev 1.7 19 Dec 1994 16:23:36 MO
+ ScSortItem mit FeldNamensliste
+
+ Rev 1.6 07 Nov 1994 14:39:32 MM
+ Clone() angepasst
+
+ Rev 1.5 26 Oct 1994 12:30:56 NN
+ neue Precompiled Header-Methode
+
+ Rev 1.4 17 Oct 1994 18:34:12 NN
+ Edit-Engine
+
+ Rev 1.3 06 Oct 1994 13:58:16 NN
+ Eingabezeile / Referenzeingabe
+
+ Rev 1.2 04 Oct 1994 16:07:04 NN
+ Hints statt Requests
+
+ Rev 1.1 22 Sep 1994 17:37:48 NN
+ Bildschirm-Update
+
+ Rev 1.0 14 Sep 1994 12:26:44 NN
+ Bloecke markieren und attributieren
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/app/wtcdummy.cxx b/sc/source/ui/app/wtcdummy.cxx
new file mode 100644
index 000000000000..474611c6889a
--- /dev/null
+++ b/sc/source/ui/app/wtcdummy.cxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * $RCSfile: wtcdummy.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <tlgen.hxx>
+
+class SdbColumns
+{
+ public:
+ SdbColumns();
+ ~SdbColumns();
+};
+
+SdbColumns::SdbColumns()
+{
+ DBG_ERROR("WATCOM Hack failed !");
+}
+
+SdbColumns::~SdbColumns()
+{
+ DBG_ERROR("WATCOM Hack failed !");
+}
+
+class SdbRow
+{
+ public:
+ SdbRow();
+ ~SdbRow();
+};
+
+SdbRow::SdbRow()
+{
+ DBG_ERROR("WATCOM Hack failed !");
+}
+
+SdbRow::~SdbRow()
+{
+ DBG_ERROR("WATCOM Hack failed !");
+}
diff --git a/sc/source/ui/attrdlg/attrdlg.cxx b/sc/source/ui/attrdlg/attrdlg.cxx
new file mode 100644
index 000000000000..f27667686b44
--- /dev/null
+++ b/sc/source/ui/attrdlg/attrdlg.cxx
@@ -0,0 +1,297 @@
+/*************************************************************************
+ *
+ * $RCSfile: attrdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include "scitems.hxx"
+#include <segmentc.hxx>
+
+#include <sfx2/objsh.hxx>
+#include <svx/numfmt.hxx>
+#include <sfx2/tabdlg.hxx>
+#include <svx/chardlg.hxx>
+#include <svx/align.hxx>
+#include <svx/border.hxx>
+#include <svx/backgrnd.hxx>
+/*
+#include <sbx.hxx>
+#include <sfxdoc.hxx>
+
+#include <dialogs.hrc>
+#include <numfmt.hxx>
+#include <chardlg.hxx>
+#include <border.hxx>
+#include <backgrnd.hxx>
+//#include <dialogs.hxx>
+*/
+#endif
+
+
+//#include <align.hxx> // SvxAlignmentTabPage
+
+#include "tabpages.hxx"
+#include "attrdlg.hxx"
+#include "scresid.hxx"
+#include "attrdlg.hrc"
+
+#pragma hdrstop
+
+SEG_EOFGLOBALS()
+//==================================================================
+#pragma SEG_FUNCDEF(attrdlg_01)
+
+ScAttrDlg::ScAttrDlg( SfxViewFrame* pFrame,
+ Window* pParent,
+ const SfxItemSet* pCellAttrs )
+
+ : SfxTabDialog( pFrame,
+ pParent,
+ ScResId( RID_SCDLG_ATTR ),
+ pCellAttrs )
+{
+ AddTabPage( TP_NUMBER, SvxNumberFormatTabPage::Create, 0 );
+ AddTabPage( TP_FONT, SvxCharStdPage::Create, 0 );
+ AddTabPage( TP_ALIGNMENT, SvxAlignmentTabPage::Create, 0 );
+ AddTabPage( TP_BORDER, SvxBorderTabPage::Create, 0 );
+ AddTabPage( TP_BACKGROUND, SvxBackgroundTabPage::Create, 0 );
+ AddTabPage( TP_PROTECTION, ScTabPageProtection::Create, 0 );
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(attrdlg_02)
+
+__EXPORT ScAttrDlg::~ScAttrDlg()
+{
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(attrdlg_03)
+
+void __EXPORT ScAttrDlg::PageCreated( USHORT nPageId, SfxTabPage& rTabPage )
+{
+ SfxObjectShell* pDocSh = SfxObjectShell::Current();
+
+ switch ( nPageId )
+ {
+ case TP_NUMBER:
+ {
+ SvxNumberFormatTabPage& rNumPage = (SvxNumberFormatTabPage&)rTabPage;
+
+ rNumPage.SetOkHdl( LINK( this, ScAttrDlg, OkHandler ) );
+ }
+ break;
+
+ case TP_FONT:
+ {
+ const SfxPoolItem* pInfoItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
+
+ DBG_ASSERT( pInfoItem, "FontListItem not found :-(" );
+
+ ((SvxCharStdPage&)rTabPage).
+ SetFontList( *((const SvxFontListItem*)pInfoItem) );
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(attrdlg_04)
+
+IMPL_LINK( ScAttrDlg, OkHandler, void*, EMPTYARG )
+{
+ ((Link&)GetOKButton().GetClickHdl()).Call( NULL );
+
+ return NULL;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.42 2000/09/17 14:08:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.41 2000/08/31 16:38:19 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.40 1997/12/05 19:05:04 ANK
+ Includes geaendert
+
+
+ Rev 1.39 05 Dec 1997 20:05:04 ANK
+ Includes geaendert
+
+ Rev 1.38 02 Oct 1997 18:30:18 ANK
+ Geaendert fuer SfxItem bei NumDialog
+
+ Rev 1.37 29 Oct 1996 14:04:36 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.36 23 Jan 1996 11:52:54 MO
+ neuer Link
+
+ Rev 1.35 08 Nov 1995 14:31:32 TRI
+ 301 Anpassung
+
+ Rev 1.34 04 Oct 1995 18:59:32 MO
+ 257-Aenderung wieder entfernt
+
+ Rev 1.32 24 Aug 1995 17:07:40 HJS
+ header umstellung
+
+ Rev 1.31 23 Aug 1995 15:57:12 MI
+ SfxDocumentShell zu SfxObjectShell)
+
+ Rev 1.30 19 Jul 1995 12:33:16 MO
+ Ok-Handler an NumberPage uebergeben => Beenden des Dialoges ueber DoppelClick
+ (BugId: 15805)
+ Benoetigt Svx-Nachzieher
+
+ Rev 1.29 15 Jun 1995 09:27:30 TRI
+ EXPORT
+
+ Rev 1.28 18 May 1995 14:12:40 MO
+ Alignment: ScTabPage-> SvxTabPage, ScAttrs -> SvxItems
+
+ Rev 1.27 17 May 1995 13:52:20 MO
+ ViewFrame-Ctor
+
+ Rev 1.26 19 Feb 1995 19:01:40 TRI
+ sfxdoc.hxx included
+
+ Rev 1.25 16 Feb 1995 17:51:48 MO
+ * DocShell-Member nicht noetig
+ -
+
+ Rev 1.24 05 Feb 1995 12:14:42 MO
+ New logfile T:/sc/source/ui/attrdlg/temp.__v
+ Enter description of workfile.
+
+ Rev 1.23 30 Jan 1995 12:22:54 TRI
+ sbx.hxx include eingebaut
+
+ Rev 1.22 27 Jan 1995 10:14:28 MO
+ SvxNumberTabPage eingebaut
+
+ Rev 1.21 26 Jan 1995 17:58:34 TRI
+ __EXPORT bei virtuellen Methoden eingebaut
+
+ Rev 1.20 22 Jan 1995 15:09:12 SC
+ 2.37 Anpassung
+
+ Rev 1.19 18 Jan 1995 13:07:42 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.18 14 Dec 1994 13:50:32 MO
+ Globale ResIds jetzt in sc.hrc
+
+ Rev 1.17 13 Dec 1994 17:09:36 MO
+ Dialog bekommt wieder eine SfxMap (SfxWhichMap nur fuer SfxTabDlg gedacht)
+
+ Rev 1.16 07 Dec 1994 09:54:40 MO
+ SfxMap -> SfxWhichMap (Sfx 233.b)
+
+ Rev 1.15 21 Nov 1994 15:30:24 MO
+
+ Rev 1.13 10 Nov 1994 14:28:52 MO
+ PCHs
+
+ Rev 1.12 09 Nov 1994 18:05:56 MO
+ SvxBackground-Page
+
+ Rev 1.11 06 Oct 1994 11:43:38 MO
+ Anpassungen an Sfx 228g
+
+ Rev 1.9 04 Oct 1994 15:56:26 MO
+ Umstellung auf allgemeine Sfx-Loesung
+
+ Rev 1.8 27 Sep 1994 16:10:40 MO
+
+ Rev 1.7 20 Sep 1994 19:53:38 MO
+ No change.
+
+ Rev 1.6 19 Sep 1994 13:18:14 MO
+
+ Rev 1.5 14 Sep 1994 12:13:48 MO
+ Attribute werden nicht mehr aktiv vom Dialog geliefert, sondern
+ muessen ueber GetCurAttrs() erfragt werden.
+ Als Parameter wird jetzt SfxSetItem erwartet.
+
+ Rev 1.4 09 Sep 1994 12:56:16 MO
+ Hintergrund- und Zeichenseiten rudimentaer implementiert
+
+ Rev 1.3 06 Sep 1994 16:54:24 MO
+ Hintergrund-TabPage rudimentaer implementiert
+
+ Rev 1.2 01 Sep 1994 12:46:00 MO
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/attrdlg/condfrmt.cxx b/sc/source/ui/attrdlg/condfrmt.cxx
new file mode 100644
index 000000000000..fa53fe479c58
--- /dev/null
+++ b/sc/source/ui/attrdlg/condfrmt.cxx
@@ -0,0 +1,867 @@
+/*************************************************************************
+ *
+ * $RCSfile: condfrmt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+
+#include "tabvwsh.hxx"
+#include "reffact.hxx"
+#include "conditio.hxx"
+#include "stlpool.hxx"
+#include "uiitems.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+
+#include "condfrmt.hrc"
+#include "globstr.hrc"
+
+#define _CONDFRMT_CXX
+#include "condfrmt.hxx"
+#undef _CONDFRMT_CXX
+
+
+SEG_EOFGLOBALS()
+
+
+//============================================================================
+// class ScConditionalFormat
+
+//----------------------------------------------------------------------------
+// Konstruktor
+#pragma SEG_FUNCDEF(condfrmt_01)
+
+ScConditionalFormatDlg::ScConditionalFormatDlg(
+ SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScDocument* pCurDoc,
+ const ScConditionalFormat* pCurrentFormat )
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_CONDFORMAT ),
+
+ pDoc ( pCurDoc ),
+
+ aCbxCond1 ( this, ScResId( CBX_COND1 ) ),
+ aLbCond11 ( this, ScResId( LB_COND1_1 ) ),
+ aLbCond12 ( this, ScResId( LB_COND1_2 ) ),
+ aEdtCond11 ( this, ScResId( EDT_COND1_1 ) ),
+ aRbCond11 ( this, ScResId( RB_COND1_1 ), &aEdtCond11 ),
+ aFtCond1And ( this, ScResId( FT_COND1_AND ) ),
+ aEdtCond12 ( this, ScResId( EDT_COND1_2 ) ),
+ aRbCond12 ( this, ScResId( RB_COND1_2 ), &aEdtCond12 ),
+ aFtCond1Template ( this, ScResId( FT_COND1_TEMPLATE ) ),
+ aLbCond1Template ( this, ScResId( LB_COND1_TEMPLATE ) ),
+
+ aCbxCond2 ( this, ScResId( CBX_COND2 ) ),
+ aLbCond21 ( this, ScResId( LB_COND2_1 ) ),
+ aLbCond22 ( this, ScResId( LB_COND2_2 ) ),
+ aEdtCond21 ( this, ScResId( EDT_COND2_1 ) ),
+ aRbCond21 ( this, ScResId( RB_COND2_1 ), &aEdtCond21 ),
+ aFtCond2And ( this, ScResId( FT_COND2_AND ) ),
+ aEdtCond22 ( this, ScResId( EDT_COND2_2 ) ),
+ aRbCond22 ( this, ScResId( RB_COND2_2 ), &aEdtCond22 ),
+ aFtCond2Template ( this, ScResId( FT_COND2_TEMPLATE ) ),
+ aLbCond2Template ( this, ScResId( LB_COND2_TEMPLATE ) ),
+
+ aCbxCond3 ( this, ScResId( CBX_COND3 ) ),
+ aLbCond31 ( this, ScResId( LB_COND3_1 ) ),
+ aLbCond32 ( this, ScResId( LB_COND3_2 ) ),
+ aEdtCond31 ( this, ScResId( EDT_COND3_1 ) ),
+ aRbCond31 ( this, ScResId( RB_COND3_1 ), &aEdtCond31 ),
+ aFtCond3And ( this, ScResId( FT_COND3_AND ) ),
+ aEdtCond32 ( this, ScResId( EDT_COND3_2 ) ),
+ aRbCond32 ( this, ScResId( RB_COND3_2 ), &aEdtCond32 ),
+ aFtCond3Template ( this, ScResId( FT_COND3_TEMPLATE ) ),
+ aLbCond3Template ( this, ScResId( LB_COND3_TEMPLATE ) ),
+
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ pEdActive ( NULL ),
+ bDlgLostFocus ( FALSE )
+{
+ Point aPos;
+ String aName;
+ SfxStyleSheetBase* pStyle;
+
+ FreeResource();
+
+ // Handler setzen
+ aCbxCond1.SetClickHdl ( LINK( this, ScConditionalFormatDlg, ClickCond1Hdl ) );
+ aLbCond11.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond11Hdl ) );
+ aLbCond12.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond12Hdl ) );
+
+ aCbxCond2.SetClickHdl ( LINK( this, ScConditionalFormatDlg, ClickCond2Hdl ) );
+ aLbCond21.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond21Hdl ) );
+ aLbCond22.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond22Hdl ) );
+
+ aCbxCond3.SetClickHdl ( LINK( this, ScConditionalFormatDlg, ClickCond3Hdl ) );
+ aLbCond31.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond31Hdl ) );
+ aLbCond32.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond32Hdl ) );
+
+ aBtnOk.SetClickHdl ( LINK( this, ScConditionalFormatDlg, BtnHdl ) );
+//? aBtnCancel.SetClickHdl( LINK( this, ScConditionalFormatDlg, BtnHdl ) );
+
+ aEdtCond11.SetGetFocusHdl ( LINK( this, ScConditionalFormatDlg, EdGetFocusHdl ) );
+ aEdtCond12.SetGetFocusHdl ( LINK( this, ScConditionalFormatDlg, EdGetFocusHdl ) );
+ aEdtCond21.SetGetFocusHdl ( LINK( this, ScConditionalFormatDlg, EdGetFocusHdl ) );
+ aEdtCond22.SetGetFocusHdl ( LINK( this, ScConditionalFormatDlg, EdGetFocusHdl ) );
+ aEdtCond31.SetGetFocusHdl ( LINK( this, ScConditionalFormatDlg, EdGetFocusHdl ) );
+ aEdtCond32.SetGetFocusHdl ( LINK( this, ScConditionalFormatDlg, EdGetFocusHdl ) );
+ aEdtCond11.SetLoseFocusHdl ( LINK( this, ScConditionalFormatDlg, EdLoseFocusHdl ) );
+ aEdtCond12.SetLoseFocusHdl ( LINK( this, ScConditionalFormatDlg, EdLoseFocusHdl ) );
+ aEdtCond21.SetLoseFocusHdl ( LINK( this, ScConditionalFormatDlg, EdLoseFocusHdl ) );
+ aEdtCond22.SetLoseFocusHdl ( LINK( this, ScConditionalFormatDlg, EdLoseFocusHdl ) );
+ aEdtCond31.SetLoseFocusHdl ( LINK( this, ScConditionalFormatDlg, EdLoseFocusHdl ) );
+ aEdtCond32.SetLoseFocusHdl ( LINK( this, ScConditionalFormatDlg, EdLoseFocusHdl ) );
+
+ // Condition 1
+ aCond1Pos1 = aLbCond12.GetPosPixel(); // Position Edit ohne Listbox
+ aCond1Pos2 = aEdtCond11.GetPosPixel(); // Position Edit mit Listbox
+ aRBtn1Pos1 = aRbCond11.GetPosPixel();
+ aRBtn1Pos2 = aRbCond12.GetPosPixel();
+ aPos = aEdtCond12.GetPosPixel();
+ aPos.X() += aEdtCond12.GetSizePixel().Width(); // rechter Rand
+ aCond1Size3 = aEdtCond11.GetSizePixel();
+ aCond1Size2 = Size( aPos.X() - aCond1Pos2.X(), aCond1Size3.Height() );
+ aCond1Size1 = Size( aPos.X() - aCond1Pos1.X(), aCond1Size3.Height() );
+
+ aCbxCond1.Check();
+ aLbCond11.SelectEntryPos( 0 );
+ aLbCond12.SelectEntryPos( 0 );
+
+ // Condition 2
+ aCond2Pos1 = aLbCond22.GetPosPixel(); // Position Edit ohne Listbox
+ aCond2Pos2 = aEdtCond21.GetPosPixel(); // Position Edit mit Listbox
+ aRBtn2Pos1 = aRbCond21.GetPosPixel();
+ aRBtn2Pos2 = aRbCond22.GetPosPixel();
+ aPos = aEdtCond22.GetPosPixel();
+ aPos.X() += aEdtCond22.GetSizePixel().Width(); // rechter Rand
+ aCond2Size3 = aEdtCond21.GetSizePixel();
+ aCond2Size2 = Size( aPos.X() - aCond2Pos2.X(), aCond2Size3.Height() );
+ aCond2Size1 = Size( aPos.X() - aCond2Pos1.X(), aCond2Size3.Height() );
+
+ aCbxCond2.Check( FALSE );
+ aLbCond21.SelectEntryPos( 0 );
+ aLbCond22.SelectEntryPos( 0 );
+
+ // Condition 3
+ aCond3Pos1 = aLbCond32.GetPosPixel(); // Position Edit ohne Listbox
+ aCond3Pos2 = aEdtCond31.GetPosPixel(); // Position Edit mit Listbox
+ aRBtn3Pos1 = aRbCond31.GetPosPixel();
+ aRBtn3Pos2 = aRbCond32.GetPosPixel();
+ aPos = aEdtCond32.GetPosPixel();
+ aPos.X() += aEdtCond32.GetSizePixel().Width(); // rechter Rand
+ aCond3Size3 = aEdtCond31.GetSizePixel();
+ aCond3Size2 = Size( aPos.X() - aCond3Pos2.X(), aCond3Size3.Height() );
+ aCond3Size1 = Size( aPos.X() - aCond3Pos1.X(), aCond3Size3.Height() );
+
+ aCbxCond3.Check( FALSE );
+ aLbCond31.SelectEntryPos( 0 );
+ aLbCond32.SelectEntryPos( 0 );
+
+ // Vorlagen aus pDoc holen
+ SfxStyleSheetIterator aStyleIter( pDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
+ for ( pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
+ {
+ aName = pStyle->GetName();
+ aLbCond1Template.InsertEntry( aName );
+ aLbCond2Template.InsertEntry( aName );
+ aLbCond3Template.InsertEntry( aName );
+ }
+
+ // Vorlagen eintragen
+//! pStyle = pDoc->GetSelectionStyle( /* ??? const ScMarkData& rMark ??? */ );
+ pStyle = NULL; //!
+ if (pStyle)
+ aName = pStyle->GetName();
+ else
+ aName = ScGlobal::GetRscString(STR_STYLENAME_STANDARD);
+ aLbCond1Template.SelectEntry( aName );
+ aLbCond2Template.SelectEntry( aName );
+ aLbCond3Template.SelectEntry( aName );
+
+ ScAddress aCurPos;
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ ScViewData* pData = pViewShell->GetViewData();
+ aCurPos = ScAddress( pData->GetCurX(), pData->GetCurY(), pData->GetTabNo() );
+ }
+
+ // Inhalt aus ConditionalFormat holen
+ if ( pCurrentFormat )
+ {
+ const ScCondFormatEntry* pEntry;
+ if ( pCurrentFormat->Count() > 0 )
+ {
+ pEntry= pCurrentFormat->GetEntry( 0 );
+ aEdtCond11.SetText( pEntry->GetExpression( aCurPos, 0 ) );
+ aLbCond1Template.SelectEntry( pEntry->GetStyle() );
+
+ ScConditionMode eMode = pEntry->GetOperation();
+ if ( eMode == SC_COND_DIRECT ) // via Formel
+ {
+ aLbCond11.SelectEntryPos( 1 );
+ ChangeCond11Hdl( NULL );
+ }
+ else if ( eMode == SC_COND_NONE ) // ???
+ ;
+ else // via Werte
+ {
+ aLbCond12.SelectEntryPos( eMode );
+ if ( ( eMode == SC_COND_BETWEEN ) || ( eMode == SC_COND_NOTBETWEEN ) )
+ aEdtCond12.SetText( pEntry->GetExpression( aCurPos, 1 ) );
+ }
+ }
+
+
+ if ( pCurrentFormat->Count() > 1 )
+ {
+ aCbxCond2.Check( TRUE );
+ pEntry= pCurrentFormat->GetEntry( 1 );
+ aEdtCond21.SetText( pEntry->GetExpression( aCurPos, 0 ) );
+ aLbCond2Template.SelectEntry( pEntry->GetStyle() );
+
+ ScConditionMode eMode = pEntry->GetOperation();
+ if ( eMode == SC_COND_DIRECT ) // via Formel
+ {
+ aLbCond21.SelectEntryPos( 1 );
+ ChangeCond21Hdl( NULL );
+ }
+ else if ( eMode == SC_COND_NONE ) // ???
+ ;
+ else // via Werte
+ {
+ aLbCond22.SelectEntryPos( eMode );
+ if ( ( eMode == SC_COND_BETWEEN ) || ( eMode == SC_COND_NOTBETWEEN ) )
+ aEdtCond22.SetText( pEntry->GetExpression( aCurPos, 1 ) );
+ }
+ }
+
+ if ( pCurrentFormat->Count() > 2 )
+ {
+ aCbxCond3.Check( TRUE );
+ pEntry= pCurrentFormat->GetEntry( 2 );
+ aEdtCond31.SetText( pEntry->GetExpression( aCurPos, 0 ) );
+ aLbCond3Template.SelectEntry( pEntry->GetStyle() );
+
+ ScConditionMode eMode = pEntry->GetOperation();
+ if ( eMode == SC_COND_DIRECT ) // via Formel
+ {
+ aLbCond31.SelectEntryPos( 1 );
+ ChangeCond31Hdl( NULL );
+ }
+ else if ( eMode == SC_COND_NONE ) // ???
+ ;
+ else // via Werte
+ {
+ aLbCond32.SelectEntryPos( eMode );
+ if ( ( eMode == SC_COND_BETWEEN ) || ( eMode == SC_COND_NOTBETWEEN ) )
+ aEdtCond32.SetText( pEntry->GetExpression( aCurPos, 1 ) );
+ }
+ }
+ }
+
+ ClickCond1Hdl( NULL );
+ ClickCond2Hdl( NULL );
+ ClickCond3Hdl( NULL );
+
+ ChangeCond12Hdl( NULL );
+ ChangeCond22Hdl( NULL );
+ ChangeCond32Hdl( NULL );
+
+ aEdtCond11.GrabFocus();
+ pEdActive = &aEdtCond11;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable(); // Ref-Feld hat Focus
+// SFX_APPWINDOW->Disable();
+}
+
+
+//----------------------------------------------------------------------------
+// Destruktor
+#pragma SEG_FUNCDEF(condfrmt_0d)
+
+__EXPORT ScConditionalFormatDlg::~ScConditionalFormatDlg()
+{
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(condfrmt_0e)
+
+void ScConditionalFormatDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( pEdActive )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart(pEdActive);
+
+ String aStr;
+ rRef.Format( aStr, SCR_ABS_3D, pDoc );
+ String aVal( pEdActive->GetText() );
+ Selection aSel( pEdActive->GetSelection() );
+ aVal.Erase( (xub_StrLen)aSel.Min(), (xub_StrLen)aSel.Len() );
+ aVal.Insert( aStr, (xub_StrLen)aSel.Min() );
+ Selection aNewSel( aSel.Min(), aSel.Min()+aStr.Len() );
+ pEdActive->SetRefString( aVal );
+ pEdActive->SetSelection( aNewSel );
+// pEdActive->SetModifyFlag();
+ }
+}
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(condfrmt_15)
+
+void ScConditionalFormatDlg::AddRefEntry()
+{
+ if ( pEdActive )
+ {
+ String aVal = pEdActive->GetText();
+ aVal += ';';
+ pEdActive->SetText(aVal);
+
+ xub_StrLen nLen = aVal.Len();
+ pEdActive->SetSelection( Selection( nLen, nLen ) );
+// pEdActive->SetModifyFlag();
+ }
+}
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(condfrmt_0f)
+
+BOOL ScConditionalFormatDlg::IsRefInputMode()
+{
+ return (pEdActive != NULL);
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(condfrmt_10)
+
+void ScConditionalFormatDlg::SetActive()
+{
+ if ( bDlgLostFocus )
+ {
+ bDlgLostFocus = FALSE;
+ pEdActive->GrabFocus();
+ }
+ else
+ GrabFocus();
+
+ RefInputDone();
+}
+
+
+//----------------------------------------------------------------------------
+// Holt die ausgewaehlte bedingte Formatierung ab
+#pragma SEG_FUNCDEF(condfrmt_11)
+
+void ScConditionalFormatDlg::GetConditionalFormat( ScConditionalFormat& rCndFmt )
+{
+ ScConditionMode eOper;
+ String sExpr1;
+ String sExpr2;
+ String sStyle;
+ ScAddress aCurPos;
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ ScViewData* pData = pViewShell->GetViewData();
+ aCurPos = ScAddress( pData->GetCurX(), pData->GetCurY(), pData->GetTabNo() );
+ }
+
+ if ( aCbxCond1.IsChecked() )
+ {
+ if ( aLbCond11.GetSelectEntryPos() == 1 ) // via Formel
+ eOper = SC_COND_DIRECT;
+ else
+ eOper = (ScConditionMode)aLbCond12.GetSelectEntryPos();
+ sExpr1 = aEdtCond11.GetText();
+ sExpr2 = aEdtCond12.GetText();
+ sStyle = aLbCond1Template.GetSelectEntry();
+ ScCondFormatEntry aNewEntry( eOper, sExpr1, sExpr2, pDoc, aCurPos, sStyle );
+ rCndFmt.AddEntry( aNewEntry );
+ }
+
+ if ( aCbxCond2.IsChecked() )
+ {
+ if ( aLbCond21.GetSelectEntryPos() == 1 ) // via Formel???
+ eOper = SC_COND_DIRECT;
+ else
+ eOper = (ScConditionMode)aLbCond22.GetSelectEntryPos();
+ sExpr1 = aEdtCond21.GetText();
+ sExpr2 = aEdtCond22.GetText();
+ sStyle = aLbCond2Template.GetSelectEntry();
+ ScCondFormatEntry aNewEntry( eOper, sExpr1, sExpr2, pDoc, aCurPos, sStyle );
+ rCndFmt.AddEntry( aNewEntry );
+ }
+
+ if ( aCbxCond3.IsChecked() )
+ {
+ if ( aLbCond31.GetSelectEntryPos() == 1 ) // via Formel???
+ eOper = SC_COND_DIRECT;
+ else
+ eOper = (ScConditionMode)aLbCond32.GetSelectEntryPos();
+ sExpr1 = aEdtCond31.GetText();
+ sExpr2 = aEdtCond32.GetText();
+ sStyle = aLbCond3Template.GetSelectEntry();
+ ScCondFormatEntry aNewEntry( eOper, sExpr1, sExpr2, pDoc, aCurPos, sStyle );
+ rCndFmt.AddEntry( aNewEntry );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+// Zerstoert den Dialog
+#pragma SEG_FUNCDEF(condfrmt_03)
+
+BOOL ScConditionalFormatDlg::Close()
+{
+ return DoClose( ScCondFormatDlgWrapper::GetChildWindowId() );
+}
+
+
+//----------------------------------------------------------------------------
+// Handler:
+
+//----------------------------------------------------------------------------
+// Enabled/Disabled Condition1-Controls
+#pragma SEG_FUNCDEF(condfrmt_04)
+
+IMPL_LINK( ScConditionalFormatDlg, ClickCond1Hdl, void *, EMPTYARG )
+{
+ BOOL bChecked = aCbxCond1.IsChecked();
+
+ aLbCond11.Enable( bChecked );
+ aLbCond12.Enable( bChecked );
+ aEdtCond11.Enable( bChecked );
+ aRbCond11.Enable( bChecked );
+ aFtCond1And.Enable( bChecked );
+ aEdtCond12.Enable( bChecked );
+ aRbCond12.Enable( bChecked );
+ aFtCond1Template.Enable( bChecked );
+ aLbCond1Template.Enable( bChecked );
+
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+// Zellwert/Formel
+#pragma SEG_FUNCDEF(condfrmt_05)
+
+IMPL_LINK( ScConditionalFormatDlg, ChangeCond11Hdl, void *, EMPTYARG )
+{
+ USHORT nPos = aLbCond11.GetSelectEntryPos();
+
+ if( nPos == 0 ) // Zellwert
+ {
+ aLbCond12.Show();
+ aEdtCond11.SetPosPixel( aCond1Pos2 );
+ }
+ else // Formel
+ {
+ aLbCond12.Hide();
+ aFtCond1And.Hide();
+ aEdtCond12.Hide();
+ aRbCond12.Hide();
+ aRbCond11.SetPosPixel( aRBtn1Pos2 );
+ aEdtCond11.SetPosSizePixel( aCond1Pos1, aCond1Size1 );
+ }
+
+ ChangeCond12Hdl( NULL );
+
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+// zwischen, gleich, groesser, ...
+#pragma SEG_FUNCDEF(condfrmt_06)
+
+IMPL_LINK( ScConditionalFormatDlg, ChangeCond12Hdl, void *, EMPTYARG )
+{
+ if( aLbCond12.IsVisible() )
+ {
+ USHORT nPos = aLbCond12.GetSelectEntryPos();
+
+ if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen
+ {
+ aEdtCond11.SetSizePixel( aCond1Size3 );
+ aRbCond11.SetPosPixel( aRBtn1Pos1 );
+ aFtCond1And.Show();
+ aEdtCond12.Show();
+ aRbCond12.Show();
+ }
+ else // gleich, n. gleich ...
+ {
+ aEdtCond12.Hide();
+ aRbCond12.Hide();
+ aFtCond1And.Hide();
+ aRbCond11.SetPosPixel( aRBtn1Pos2 );
+ aEdtCond11.SetSizePixel( aCond1Size2 );
+ }
+ }
+
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+// Enabled/Disabled Condition2-Controls
+#pragma SEG_FUNCDEF(condfrmt_07)
+
+IMPL_LINK( ScConditionalFormatDlg, ClickCond2Hdl, void *, EMPTYARG )
+{
+ BOOL bChecked = aCbxCond2.IsChecked();
+
+ aLbCond21.Enable( bChecked );
+ aLbCond22.Enable( bChecked );
+ aEdtCond21.Enable( bChecked );
+ aRbCond21.Enable( bChecked );
+ aFtCond2And.Enable( bChecked );
+ aEdtCond22.Enable( bChecked );
+ aRbCond22.Enable( bChecked );
+ aFtCond2Template.Enable( bChecked );
+ aLbCond2Template.Enable( bChecked );
+
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+// Zellwert/Formel
+#pragma SEG_FUNCDEF(condfrmt_08)
+
+IMPL_LINK( ScConditionalFormatDlg, ChangeCond21Hdl, void *, EMPTYARG )
+{
+ USHORT nPos = aLbCond21.GetSelectEntryPos();
+
+ if( nPos == 0 ) // Zellwert
+ {
+ aLbCond22.Show();
+ aEdtCond21.SetPosPixel( aCond2Pos2 );
+ }
+ else // Formel
+ {
+ aLbCond22.Hide();
+ aFtCond2And.Hide();
+ aEdtCond22.Hide();
+ aRbCond22.Hide();
+ aRbCond21.SetPosPixel( aRBtn2Pos2 );
+ aEdtCond21.SetPosSizePixel( aCond2Pos1, aCond2Size1 );
+ }
+
+ ChangeCond22Hdl( NULL );
+
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+// zwischen, gleich, groesser, ...
+#pragma SEG_FUNCDEF(condfrmt_09)
+
+IMPL_LINK( ScConditionalFormatDlg, ChangeCond22Hdl, void *, EMPTYARG )
+{
+ if( aLbCond22.IsVisible() )
+ {
+ USHORT nPos = aLbCond22.GetSelectEntryPos();
+
+ if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen
+ {
+ aEdtCond21.SetSizePixel( aCond2Size3 );
+ aRbCond21.SetPosPixel( aRBtn2Pos1 );
+ aFtCond2And.Show();
+ aEdtCond22.Show();
+ aRbCond22.Show();
+ }
+ else // gleich, n. gleich ...
+ {
+ aEdtCond22.Hide();
+ aRbCond22.Hide();
+ aFtCond2And.Hide();
+ aRbCond21.SetPosPixel( aRBtn2Pos2 );
+ aEdtCond21.SetSizePixel( aCond2Size2 );
+ }
+ }
+
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+// Enabled/Disabled Condition3-Controls
+#pragma SEG_FUNCDEF(condfrmt_0a)
+
+IMPL_LINK( ScConditionalFormatDlg, ClickCond3Hdl, void *, EMPTYARG )
+{
+ BOOL bChecked = aCbxCond3.IsChecked();
+
+ aLbCond31.Enable( bChecked );
+ aLbCond32.Enable( bChecked );
+ aEdtCond31.Enable( bChecked );
+ aRbCond31.Enable( bChecked );
+ aFtCond3And.Enable( bChecked );
+ aEdtCond32.Enable( bChecked );
+ aRbCond32.Enable( bChecked );
+ aFtCond3Template.Enable( bChecked );
+ aLbCond3Template.Enable( bChecked );
+
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+// Zellwert/Formel
+#pragma SEG_FUNCDEF(condfrmt_0b)
+
+IMPL_LINK( ScConditionalFormatDlg, ChangeCond31Hdl, void *, EMPTYARG )
+{
+ USHORT nPos = aLbCond31.GetSelectEntryPos();
+
+ if( nPos == 0 ) // Zellwert
+ {
+ aLbCond32.Show();
+ aEdtCond31.SetPosPixel( aCond3Pos2 );
+ }
+ else // Formel
+ {
+ aLbCond32.Hide();
+ aFtCond3And.Hide();
+ aEdtCond32.Hide();
+ aRbCond32.Hide();
+ aRbCond31.SetPosPixel( aRBtn3Pos2 );
+ aEdtCond31.SetPosSizePixel( aCond3Pos1, aCond3Size1 );
+ }
+
+ ChangeCond32Hdl( NULL );
+
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+// zwischen, gleich, groesser, ...
+#pragma SEG_FUNCDEF(condfrmt_0c)
+
+IMPL_LINK( ScConditionalFormatDlg, ChangeCond32Hdl, void *, EMPTYARG )
+{
+ if( aLbCond32.IsVisible() )
+ {
+ USHORT nPos = aLbCond32.GetSelectEntryPos();
+
+ if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen
+ {
+ aEdtCond31.SetSizePixel( aCond3Size3 );
+ aRbCond31.SetPosPixel( aRBtn3Pos1 );
+ aFtCond3And.Show();
+ aEdtCond32.Show();
+ aRbCond32.Show();
+ }
+ else // gleich, n. gleich ...
+ {
+ aEdtCond32.Hide();
+ aRbCond32.Hide();
+ aFtCond3And.Hide();
+ aRbCond31.SetPosPixel( aRBtn3Pos2 );
+ aEdtCond31.SetSizePixel( aCond3Size2 );
+ }
+ }
+
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(condfrmt_12)
+
+IMPL_LINK( ScConditionalFormatDlg, EdGetFocusHdl, ScRefEdit*, pEd )
+{
+ pEdActive = pEd;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+ pEd->SetSelection( Selection(0,SELECTION_MAX) );
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(condfrmt_13)
+
+IMPL_LINK( ScConditionalFormatDlg, EdLoseFocusHdl, ScRefEdit*, pEd )
+{
+ bDlgLostFocus = !IsActive();
+ return( 0L );
+}
+
+
+//----------------------------------------------------------------------------
+// [OK], [Cancel]
+#pragma SEG_FUNCDEF(condfrmt_14)
+
+IMPL_LINK( ScConditionalFormatDlg, BtnHdl, PushButton*, pBtn )
+{
+ if ( pBtn == &aBtnOk )
+ {
+ ScConditionalFormat aCondFrmt( 0, pDoc );
+ GetConditionalFormat( aCondFrmt );
+ ScCondFrmtItem aOutItem( FID_CONDITIONAL_FORMAT, aCondFrmt );
+
+ SFX_APP()->LockDispatcher( FALSE );
+ SwitchToDocument();
+ SFX_DISPATCHER().Execute( FID_CONDITIONAL_FORMAT,
+ SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aOutItem, 0L, 0L );
+ Close();
+ }
+ else if ( pBtn == &aBtnCancel )
+ Close();
+
+ return( 0L );
+}
+
+
+/*****************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.20 2000/09/17 14:08:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.19 2000/08/31 16:38:19 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.18 2000/04/17 13:29:42 nn
+ unicode changes
+
+ Revision 1.17 2000/01/17 19:23:39 nn
+ #67336# SwitchToDocument
+
+ Revision 1.16 1999/06/09 16:08:20 NN
+ Sfx-appwin removed
+
+
+ Rev 1.15 09 Jun 1999 18:08:20 NN
+ Sfx-appwin removed
+
+ Rev 1.14 26 May 1999 14:29:02 NN
+ #66123# Name fuer Standard-Vorlage kommt aus Resource
+
+ Rev 1.13 10 Dec 1998 20:40:42 ANK
+ #51738# Umstellung auf ScRefEdit zum Anzeigen von Referenzen
+
+ Rev 1.12 06 Aug 1998 21:20:52 ANK
+ #54702# Enablen/Disablen der Applikation nur noch in ScAnyRefDlg
+
+ Rev 1.11 16 Sep 1997 19:37:48 NN
+ #42538# bedingte Formatierung/Gueltigkeit mit relativen Referenzen
+
+ Rev 1.10 04 Sep 1997 20:32:54 RG
+ change header
+
+ Rev 1.9 03 Sep 1997 15:11:14 RG
+ change header
+
+ Rev 1.8 28 Nov 1996 18:49:40 NN
+ mehrfache und 3D-Referenzen zulassen
+
+ Rev 1.7 13 Nov 1996 20:12:04 NN
+ #33143# AutoHide nur bei Bereichsreferenz
+
+ Rev 1.6 05 Nov 1996 21:15:46 NN
+ #32969# Focus initial auf ersten Wert
+
+ Rev 1.5 05 Nov 1996 14:51:10 NN
+ ScApplication gibts nicht mehr
+
+ Rev 1.4 01 Nov 1996 06:30:38 MH
+ chg: includes, defines
+
+ Rev 1.3 29 Oct 1996 14:04:36 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.2 22 Oct 1996 17:58:14 RJ
+ Buttons fuer Referenzeingabe
+
+ Rev 1.1 16 Oct 1996 16:33:16 RJ
+ Dialog fuer bedingte Formatierung mit Leben gefuellt
+
+ Rev 1.0 14 Oct 1996 15:09:42 SOH
+ Initial revision.
+
+
+*****************************************************************************/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/attrdlg/makefile.mk b/sc/source/ui/attrdlg/makefile.mk
new file mode 100644
index 000000000000..b20ea01be2ad
--- /dev/null
+++ b/sc/source/ui/attrdlg/makefile.mk
@@ -0,0 +1,95 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=attrdlg
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = attrdlg.cxx \
+ tabpages.cxx \
+ condfrmt.cxx
+
+SLOFILES = $(SLO)$/attrdlg.obj \
+ $(SLO)$/tabpages.obj \
+ $(SLO)$/condfrmt.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/attrdlg/tabpages.cxx b/sc/source/ui/attrdlg/tabpages.cxx
new file mode 100644
index 000000000000..331982fefdec
--- /dev/null
+++ b/sc/source/ui/attrdlg/tabpages.cxx
@@ -0,0 +1,518 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabpages.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+#include "global.hxx"
+#include "document.hxx"
+#include "attrib.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+
+#include "attrdlg.hrc"
+#include "tabpages.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+static USHORT pProtectionRanges[] =
+{
+ SID_SCATTR_PROTECTION,
+ SID_SCATTR_PROTECTION,
+ 0
+};
+
+SEG_EOFGLOBALS()
+
+//========================================================================
+// Zellschutz-Tabpage:
+//========================================================================
+#pragma SEG_FUNCDEF(tabpages_18)
+
+ScTabPageProtection::ScTabPageProtection( Window* pParent,
+ const SfxItemSet& rCoreAttrs )
+ : SfxTabPage ( pParent,
+ ScResId( RID_SCPAGE_PROTECTION ),
+ rCoreAttrs ),
+ //
+ aBtnProtect ( this, ScResId( BTN_PROTECTED ) ),
+ aBtnHideCell ( this, ScResId( BTN_HIDE_ALL ) ),
+ aBtnHideFormula ( this, ScResId( BTN_HIDE_FORMULAR ) ),
+ aTxtHint ( this, ScResId( FT_HINT ) ),
+ aGbProtect ( this, ScResId( GB_PROTECTION ) ),
+ aBtnHidePrint ( this, ScResId( BTN_HIDE_PRINT ) ),
+ aTxtHint2 ( this, ScResId( FT_HINT2 ) ),
+ aGbPrint ( this, ScResId( GB_PRINT ) )
+{
+ // diese Page braucht ExchangeSupport
+ SetExchangeSupport();
+
+ // States werden in Reset gesetzt
+ bTriEnabled = bDontCare = bProtect = bHideForm = bHideCell = bHidePrint = FALSE;
+
+ aBtnProtect.SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
+ aBtnHideCell.SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
+ aBtnHideFormula.SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
+ aBtnHidePrint.SetClickHdl( LINK( this, ScTabPageProtection, ButtonClickHdl ) );
+
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tabpages_19)
+
+__EXPORT ScTabPageProtection::~ScTabPageProtection()
+{
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tabpages_20)
+
+USHORT* __EXPORT ScTabPageProtection::GetRanges()
+{
+ return pProtectionRanges;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tabpages_1a)
+
+SfxTabPage* __EXPORT ScTabPageProtection::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new ScTabPageProtection( pParent, rAttrSet ) );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tabpages_1c)
+
+void __EXPORT ScTabPageProtection::Reset( const SfxItemSet& rCoreAttrs )
+{
+ // Variablen initialisieren
+
+ USHORT nWhich = GetWhich( SID_SCATTR_PROTECTION );
+ const ScProtectionAttr* pProtAttr = NULL;
+ SfxItemState eItemState = rCoreAttrs.GetItemState( nWhich, FALSE,
+ (const SfxPoolItem**)&pProtAttr );
+
+ // handelt es sich um ein Default-Item?
+ if ( eItemState == SFX_ITEM_DEFAULT )
+ pProtAttr = (const ScProtectionAttr*)&(rCoreAttrs.Get(nWhich));
+ // bei SFX_ITEM_DONTCARE auf 0 lassen
+
+ bTriEnabled = ( pProtAttr == NULL ); // TriState, wenn DontCare
+ bDontCare = bTriEnabled;
+ if (bTriEnabled)
+ {
+ // Defaults, die erscheinen wenn ein TriState weggeklickt wird:
+ // (weil alles zusammen ein Attribut ist, kann auch nur alles zusammen
+ // auf DontCare stehen - #38543#)
+ bProtect = TRUE;
+ bHideForm = bHideCell = bHidePrint = FALSE;
+ }
+ else
+ {
+ bProtect = pProtAttr->GetProtection();
+ bHideCell = pProtAttr->GetHideCell();
+ bHideForm = pProtAttr->GetHideFormula();
+ bHidePrint = pProtAttr->GetHidePrint();
+ }
+
+ // Controls initialisieren
+
+ aBtnProtect .EnableTriState( bTriEnabled );
+ aBtnHideCell .EnableTriState( bTriEnabled );
+ aBtnHideFormula .EnableTriState( bTriEnabled );
+ aBtnHidePrint .EnableTriState( bTriEnabled );
+
+ UpdateButtons();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tabpages_1b)
+
+BOOL __EXPORT ScTabPageProtection::FillItemSet( SfxItemSet& rCoreAttrs )
+{
+ BOOL bAttrsChanged = FALSE;
+ USHORT nWhich = GetWhich( SID_SCATTR_PROTECTION );
+ const SfxPoolItem* pOldItem = GetOldItem( rCoreAttrs, SID_SCATTR_PROTECTION );
+ const SfxItemSet& rOldSet = GetItemSet();
+ SfxItemState eItemState = rOldSet.GetItemState( nWhich, FALSE );
+ ScProtectionAttr aProtAttr;
+
+ if ( !bDontCare )
+ {
+ aProtAttr.SetProtection( bProtect );
+ aProtAttr.SetHideCell( bHideCell );
+ aProtAttr.SetHideFormula( bHideForm );
+ aProtAttr.SetHidePrint( bHidePrint );
+
+ if ( bTriEnabled )
+ bAttrsChanged = TRUE; // DontCare -> richtiger Wert
+ else
+ bAttrsChanged = !pOldItem || !( aProtAttr == *(const ScProtectionAttr*)pOldItem );
+ }
+
+ //--------------------------------------------------
+
+ if ( bAttrsChanged )
+ rCoreAttrs.Put( aProtAttr );
+ else if ( eItemState == SFX_ITEM_DEFAULT )
+ rCoreAttrs.ClearItem( nWhich );
+
+ return bAttrsChanged;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tabpages_22)
+
+int __EXPORT ScTabPageProtection::DeactivatePage( SfxItemSet* pSet )
+{
+ if ( pSet )
+ FillItemSet( *pSet );
+
+ return LEAVE_PAGE;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tabpages_1d)
+
+IMPL_LINK( ScTabPageProtection, ButtonClickHdl, TriStateBox*, pBox )
+{
+ TriState eState = pBox->GetState();
+ if ( eState == STATE_DONTKNOW )
+ bDontCare = TRUE; // alles zusammen auf DontCare
+ else
+ {
+ bDontCare = FALSE; // DontCare ueberall aus
+ BOOL bOn = ( eState == STATE_CHECK ); // ausgewaehlter Wert
+
+ if ( pBox == &aBtnProtect )
+ bProtect = bOn;
+ else if ( pBox == &aBtnHideCell )
+ bHideCell = bOn;
+ else if ( pBox == &aBtnHideFormula )
+ bHideForm = bOn;
+ else if ( pBox == &aBtnHidePrint )
+ bHidePrint = bOn;
+ else
+ DBG_ERRORFILE("falscher Button");
+ }
+
+ UpdateButtons(); // TriState und Enable-Logik
+
+ return 0;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tabpages_23)
+
+void ScTabPageProtection::UpdateButtons()
+{
+ if ( bDontCare )
+ {
+ aBtnProtect.SetState( STATE_DONTKNOW );
+ aBtnHideCell.SetState( STATE_DONTKNOW );
+ aBtnHideFormula.SetState( STATE_DONTKNOW );
+ aBtnHidePrint.SetState( STATE_DONTKNOW );
+ }
+ else
+ {
+ aBtnProtect.SetState( bProtect ? STATE_CHECK : STATE_NOCHECK );
+ aBtnHideCell.SetState( bHideCell ? STATE_CHECK : STATE_NOCHECK );
+ aBtnHideFormula.SetState( bHideForm ? STATE_CHECK : STATE_NOCHECK );
+ aBtnHidePrint.SetState( bHidePrint ? STATE_CHECK : STATE_NOCHECK );
+ }
+
+ BOOL bEnable = ( aBtnHideCell.GetState() != STATE_CHECK );
+ {
+ aBtnProtect.Enable( bEnable );
+ aBtnHideFormula.Enable( bEnable );
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.73 2000/09/17 14:08:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.72 2000/08/31 16:38:19 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.71 1997/12/05 19:05:16 ANK
+ Includes geaendert
+
+
+ Rev 1.70 05 Dec 1997 20:05:16 ANK
+ Includes geaendert
+
+ Rev 1.69 08 Apr 1997 18:53:42 NN
+ #38543# DontCare fuer alle Flags zusammen ein/aus
+
+ Rev 1.68 29 Oct 1996 14:04:38 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.67 23 Jan 1996 11:53:46 MO
+ GetOldItem() fuer Standard-Button
+
+ Rev 1.66 04 Dec 1995 10:09:28 MO
+ neuer Link
+
+ Rev 1.65 28 Nov 1995 19:02:40 MO
+ 303a: HasExchangeSupport entfernt
+
+ Rev 1.64 08 Nov 1995 13:04:38 MO
+ 301-Aenderungen
+
+ Rev 1.63 12 Sep 1995 10:56:14 MO
+ FixedText jetzt FixedInfo
+
+ Rev 1.62 01 Aug 1995 20:23:04 MO
+ Reset-Enable/Disable korrigiert
+
+ Rev 1.61 28 Jul 1995 11:40:34 MO
+ FillItemSet korrigiert
+
+ Rev 1.60 24 Jul 1995 14:00:58 MO
+ EXPORT
+
+ Rev 1.59 05 Jul 1995 22:24:42 MO
+ ExchangeSupport
+
+ Rev 1.58 30 Jun 1995 17:56:00 HJS
+ exports fuer create
+
+ Rev 1.57 22 May 1995 17:33:12 MO
+ Schuetzen/Ausgabe Gruppen
+
+ Rev 1.56 22 May 1995 13:03:40 MO
+ InfoText in BoldLight
+
+ Rev 1.55 18 May 1995 14:13:24 MO
+ Alignment Seite entfernt
+
+ Rev 1.54 21 Apr 1995 18:48:40 MO
+ ImageButtons
+
+ Rev 1.53 15 Mar 1995 11:41:20 NN
+ SaveValue-Aufruf am TriState-Button bei Alignment::Reset
+
+ Rev 1.52 13 Mar 1995 16:27:08 MO
+ * x10-Korrektur fuer MetricFields entfernt
+
+ Rev 1.51 23 Feb 1995 08:27:44 KH
+ Wer braucht "\" in Funktionsaufrufen ?
+
+ Rev 1.50 07 Feb 1995 09:21:00 MO
+ * Fix beim Normalize der Metrikfeldwerte bis CL es in SV fixed.
+
+ Rev 1.49 04 Feb 1995 13:58:02 MO
+ * Reset()-Handler aufgeraeumt
+ * Suche, ob Einstellungen verloren gehen (noch nicht beendet!)
+
+ Rev 1.48 27 Jan 1995 13:06:54 TRI
+ __EXPORT bei virtuellen Methoden eingebaut
+
+ Rev 1.47 27 Jan 1995 10:29:08 MO
+ * NumberFormat-Seite entfernt (jetzt Svx-Page)
+ + GetRanges()-Methode
+
+ Rev 1.46 22 Jan 1995 15:09:14 SC
+ 2.37 Anpassung
+
+ Rev 1.45 19 Jan 1995 15:19:24 TRI
+ __EXPORT vor verschiedene LinkHandler gesetzt
+
+ Rev 1.44 18 Jan 1995 13:07:42 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.43 18 Jan 1995 09:56:48 MO
+ Bedingte Auswertung in ScTabPageNumber::Reset() durch if-else ersetzt
+
+ Rev 1.42 10 Jan 1995 11:37:46 MO
+ Erste verallgemeinerungs-faehige Version der Zahlenformat-Page.
+ ScNumberInfoItem ersetzt ScDocumentItem und ScCellItem.
+ Core wird nicht mehr ueber das Dokument aktualisiert,
+ sondern die zu aktualisierenden Daten werden ueber das InfoItem
+ wieder in den Set gesteckt.
+
+ Rev 1.41 22 Dec 1994 15:52:20 MO
+ switches haben jetzt alle ein default (Mac-Compiler)
+
+ Rev 1.40 21 Dec 1994 17:56:50 MO
+ SVX_ORIENTATION_STACKED aktiviert
+
+ Rev 1.39 14 Dec 1994 13:50:30 MO
+ Globale ResIds jetzt in sc.hrc
+
+ Rev 1.38 07 Dec 1994 09:54:08 MO
+ SfxMap -> SfxWhichMap (Sfx 233.b)
+
+ Rev 1.37 21 Nov 1994 15:56:38 MO
+ FontTabpage entfernt
+
+ Rev 1.36 10 Nov 1994 20:45:02 MO
+ EditHdl-Aufruf nur mit Edit-Objekt
+ 0 = UpdateOptions nicht ausfuehren
+
+ Rev 1.35 10 Nov 1994 17:24:52 MO
+ Zahlenformate nur bei Aenderungen schreiben
+
+ Rev 1.34 09 Nov 1994 17:55:34 MO
+
+ Rev 1.33 09 Nov 1994 11:16:04 MO
+ Options-Update aus Format-String
+
+ Rev 1.32 09 Nov 1994 09:27:18 MO
+ Zeilenumbruch-Attribut wird jetzt wieder geschrieben
+
+ Rev 1.31 08 Nov 1994 19:44:00 MO
+
+ Rev 1.30 07 Nov 1994 19:17:18 MO
+
+ Rev 1.28 07 Nov 1994 09:30:22 MO
+ Zahlenformat in Arbeit
+
+ Rev 1.27 03 Nov 1994 15:14:12 MO
+ Fehler beim Init behoben
+
+ Rev 1.26 02 Nov 1994 21:13:48 MO
+ Zahlenformatseite ohne Hinzufuegen/Entfernen
+
+ Rev 1.25 27 Oct 1994 14:35:04 MO
+ Attribute in die Core und umgekehrt
+
+ Rev 1.24 27 Oct 1994 10:47:32 MO
+ Attribute aus der Core lesen
+
+ Rev 1.23 25 Oct 1994 11:46:16 MO
+ Umrandungs-Vorgaben eingeaut
+
+ Rev 1.22 21 Oct 1994 17:03:30 MO
+ Neuen FrameSelektor eingebaut
+
+ Rev 1.21 19 Oct 1994 10:59:54 MO
+ Voreinstellungen und Schatten anwaehlbar
+
+ Rev 1.20 17 Oct 1994 17:31:46 MO
+
+ Rev 1.19 17 Oct 1994 13:23:56 MO
+ Neuer FrameSelektor
+
+ Rev 1.18 14 Oct 1994 09:26:44 MO
+ 'Reanpassung' SV229
+
+ Rev 1.17 13 Oct 1994 12:05:24 MO
+ FramSelector in Umrandungs-Seite eingebaut
+
+ Rev 1.16 12 Oct 1994 18:14:12 NN
+ MarginAttr-Werte als Twips interpretiert
+
+ Rev 1.15 06 Oct 1994 11:43:52 MO
+ Anpassungen an Sfx 228g
+
+ Rev 1.14 05 Oct 1994 19:59:34 MO
+ BitmapRadioButtons fuer Ausrichtungs-Seite
+
+ Rev 1.13 05 Oct 1994 12:23:44 MO
+ Sfx-Anpassungen (228f)
+
+ Rev 1.12 04 Oct 1994 15:56:58 MO
+ Umstellung auf allgemeine Sfx-Loesung
+
+ Rev 1.11 27 Sep 1994 16:10:58 MO
+
+ Rev 1.9 22 Sep 1994 15:31:26 MO
+ Neuer Zahlenformat-Entwurf
+
+ Rev 1.8 20 Sep 1994 19:53:46 MO
+ No change.
+
+ Rev 1.7 20 Sep 1994 11:33:00 MO
+ aFont-Problem gefixed
+
+ Rev 1.6 19 Sep 1994 13:18:20 MO
+
+ Rev 1.5 14 Sep 1994 12:18:22 MO
+
+ Rev 1.4 13 Sep 1994 16:31:00 MO
+ Zellschutzseite implementiert
+
+ Rev 1.3 12 Sep 1994 10:05:20 MO
+ Fontdialog arbeitet mit Fonthoehe in Twips
+
+ Rev 1.2 09 Sep 1994 12:57:00 MO
+ Hintergrund- und Zeichenseiten rudimentaer implementiert
+
+ Rev 1.0 01 Sep 1994 12:45:24 MO
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/cctrl/cbuttonw.cxx b/sc/source/ui/cctrl/cbuttonw.cxx
new file mode 100644
index 000000000000..17421faaac34
--- /dev/null
+++ b/sc/source/ui/cctrl/cbuttonw.cxx
@@ -0,0 +1,204 @@
+/*************************************************************************
+ *
+ * $RCSfile: cbuttonw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <tools/svwin.h>
+#include <vcl/window.hxx>
+#include <vcl/decoview.hxx>
+
+#include "cbutton.hxx"
+
+
+//========================================================================
+// class ScDDComboBoxButton
+//========================================================================
+
+ScDDComboBoxButton::ScDDComboBoxButton( Window* pOutputDevice )
+ : pOut( pOutputDevice )
+{
+ SetOptSizePixel();
+}
+
+// -------------------------------------------------------------------------
+
+__EXPORT ScDDComboBoxButton::~ScDDComboBoxButton()
+{
+}
+
+// -------------------------------------------------------------------------
+
+void ScDDComboBoxButton::SetOptSizePixel()
+{
+ aBtnSize = pOut->LogicToPixel( Size(0,11), MAP_APPFONT );
+ //aBtnSize.Width() = GetSystemMetrics( SM_CXVSCROLL ) - 1; // Win SDK-Funktion
+ aBtnSize.Width() = pOut->GetSettings().GetStyleSettings().GetScrollBarSize();
+}
+
+// -------------------------------------------------------------------------
+
+void ScDDComboBoxButton::Draw( const Point& rAt,
+ const Size& rSize,
+ const Color& rArrowCol,
+ BOOL bBtnIn /* = FALSE */ )
+{
+ // save old state
+ BOOL bHadFill = pOut->IsFillColor();
+ Color aOldFill = pOut->GetFillColor();
+ BOOL bHadLine = pOut->IsLineColor();
+ Color aOldLine = pOut->GetLineColor();
+ BOOL bOldEnable = pOut->IsMapModeEnabled();
+
+ Size aLogPix( 1, 1 );
+ Rectangle aBtnRect( rAt, rSize );
+ Rectangle aInnerRect = aBtnRect;
+
+ pOut->EnableMapMode( FALSE );
+
+ DecorationView aDecoView( pOut);
+
+ USHORT nButtonStyle = BUTTON_DRAW_DEFAULT;
+ if( bBtnIn ) // gedrueckt?
+ {
+ nButtonStyle = BUTTON_DRAW_PRESSED;
+ }
+
+ aInnerRect=aDecoView.DrawButton( aBtnRect, nButtonStyle );
+
+
+ aInnerRect.Left() += 1;
+ aInnerRect.Top() += 1;
+ aInnerRect.Right() -= 1;
+ aInnerRect.Bottom() -= 1;
+
+ Size aInnerSize = aInnerRect.GetSize();
+ Point aInnerCenter = aInnerRect.Center();
+
+ aInnerRect.Top() = aInnerCenter.Y() - (aInnerSize.Width()>>1);
+ aInnerRect.Bottom()= aInnerCenter.Y() + (aInnerSize.Width()>>1);
+
+ ImpDrawArrow( aInnerRect, rArrowCol );
+
+
+ // restore old state
+ pOut->EnableMapMode( bOldEnable );
+ if (bHadLine)
+ pOut->SetLineColor(aOldLine);
+ else
+ pOut->SetLineColor();
+ if (bHadFill)
+ pOut->SetFillColor(aOldFill);
+ else
+ pOut->SetFillColor();
+}
+
+//------------------------------------------------------------------------
+
+void ScDDComboBoxButton::ImpDrawArrow( const Rectangle& rRect,
+ const Color& rColor )
+{
+ // no need to save old line and fill color here (is restored after the call)
+
+ Rectangle aPixRect = rRect;
+ Point aCenter = aPixRect.Center();
+ Size aSize = aPixRect.GetSize();
+
+ Size aSize3;
+ aSize3.Width() = aSize.Width() >> 1;
+ aSize3.Height() = aSize.Height() >> 1;
+
+ Size aSize4;
+ aSize4.Width() = aSize.Width() >> 2;
+ aSize4.Height() = aSize.Height() >> 2;
+
+ Rectangle aTempRect = aPixRect;
+
+ pOut->SetFillColor( rColor );
+ pOut->SetLineColor( rColor );
+
+ aTempRect.Left() = aCenter.X() - aSize4.Width();
+ aTempRect.Right() = aCenter.X() + aSize4.Width();
+ aTempRect.Top() = aCenter.Y() - aSize3.Height();
+ aTempRect.Bottom() = aCenter.Y() - 1;
+
+ pOut->DrawRect( aTempRect );
+
+ Point aPos1( aCenter.X()-aSize3.Width(), aCenter.Y() );
+ Point aPos2( aCenter.X()+aSize3.Width(), aCenter.Y() );
+ while( aPos1.X() <= aPos2.X() )
+ {
+ pOut->DrawLine( aPos1, aPos2 );
+ aPos1.X()++; aPos2.X()--;
+ aPos1.Y()++; aPos2.Y()++;
+ }
+
+ pOut->DrawLine( Point( aCenter.X() - aSize3.Width(), aPos1.Y()+1 ),
+ Point( aCenter.X() + aSize3.Width(), aPos1.Y()+1 ) );
+}
+
+
+
+
+
diff --git a/sc/source/ui/cctrl/makefile.mk b/sc/source/ui/cctrl/makefile.mk
new file mode 100644
index 000000000000..3a9011a54000
--- /dev/null
+++ b/sc/source/ui/cctrl/makefile.mk
@@ -0,0 +1,96 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=cctrl
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..$/pch$/ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ popmenu.cxx \
+ tbinsert.cxx\
+ cbuttonw.cxx
+
+SLOFILES = \
+ $(SLO)$/popmenu.obj \
+ $(SLO)$/tbinsert.obj \
+ $(SLO)$/cbuttonw.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/sc/source/ui/cctrl/popmenu.cxx b/sc/source/ui/cctrl/popmenu.cxx
new file mode 100644
index 000000000000..773a8c3f28ef
--- /dev/null
+++ b/sc/source/ui/cctrl/popmenu.cxx
@@ -0,0 +1,115 @@
+/*************************************************************************
+ *
+ * $RCSfile: popmenu.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "popmenu.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
+//------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(popmenu_01)
+
+void __EXPORT ScPopupMenu::Select()
+{
+ nSel = GetCurItemId();
+ bHit = TRUE;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.4 2000/09/17 14:08:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.3 2000/08/31 16:38:19 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.2 1996/07/31 18:58:38 NN
+ bHit setzen
+
+
+ Rev 1.1 31 Jul 1996 20:58:38 NN
+ bHit setzen
+
+ Rev 1.0 27 Jun 1996 12:41:58 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/cctrl/tbinsert.cxx b/sc/source/ui/cctrl/tbinsert.cxx
new file mode 100644
index 000000000000..2564bad672d2
--- /dev/null
+++ b/sc/source/ui/cctrl/tbinsert.cxx
@@ -0,0 +1,322 @@
+/*************************************************************************
+ *
+ * $RCSfile: tbinsert.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#include <string> // HACK: prevent conflict between STLPORT and Workshop headers
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <tools/shl.hxx>
+#include <svtools/intitem.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/dispatch.hxx>
+
+#include "tbinsert.hxx"
+#include "tbinsert.hrc"
+#include "global.hxx"
+#include "scmod.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+
+// STATIC DATA -----------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
+SFX_IMPL_TOOLBOX_CONTROL( ScTbxInsertCtrl, SfxUInt16Item);
+
+//------------------------------------------------------------------
+//
+// ToolBox - Controller
+//
+//------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(tbinsert_01)
+
+ScTbxInsertCtrl::ScTbxInsertCtrl( USHORT nId, ToolBox& rTbx, SfxBindings& rBind ) :
+ SfxToolBoxControl( nId, rTbx, rBind ),
+ nLastSlotId(0)
+{
+}
+
+#pragma SEG_FUNCDEF(tbinsert_02)
+
+__EXPORT ScTbxInsertCtrl::~ScTbxInsertCtrl()
+{
+}
+
+#pragma SEG_FUNCDEF(tbinsert_03)
+
+void __EXPORT ScTbxInsertCtrl::StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState )
+{
+ GetToolBox().EnableItem( GetId(), (GetItemState(pState) != SFX_ITEM_DISABLED) );
+
+ if( eState == SFX_ITEM_AVAILABLE )
+ {
+ const SfxUInt16Item* pItem = PTR_CAST( SfxUInt16Item, pState );
+ if(pItem)
+ {
+ nLastSlotId = pItem->GetValue();
+ USHORT nImageId = nLastSlotId ? nLastSlotId : GetId();
+ Image aImage = SFX_IMAGEMANAGER()->GetImage( nImageId, SC_MOD() );
+ GetToolBox().SetItemImage(GetId(), aImage);
+ }
+ }
+}
+
+#pragma SEG_FUNCDEF(tbinsert_04)
+
+SfxPopupWindow* __EXPORT ScTbxInsertCtrl::CreatePopupWindow()
+{
+ USHORT nWinResId, nTbxResId;
+ USHORT nSlotId = GetId();
+ if (nSlotId == SID_TBXCTL_INSERT)
+ {
+ nWinResId = RID_TBXCTL_INSERT;
+ nTbxResId = RID_TOOLBOX_INSERT;
+ }
+ else if (nSlotId == SID_TBXCTL_INSCELLS)
+ {
+ nWinResId = RID_TBXCTL_INSCELLS;
+ nTbxResId = RID_TOOLBOX_INSCELLS;
+ }
+ else /* SID_TBXCTL_INSOBJ */
+ {
+ nWinResId = RID_TBXCTL_INSOBJ;
+ nTbxResId = RID_TOOLBOX_INSOBJ;
+ }
+
+ WindowAlign eNewAlign = ( GetToolBox().IsHorizontal() ) ? WINDOWALIGN_LEFT : WINDOWALIGN_TOP;
+ ScTbxInsertPopup *pWin = new ScTbxInsertPopup( nSlotId, eNewAlign,
+ ScResId(nWinResId), ScResId(nTbxResId), GetBindings() );
+ pWin->StartPopupMode(&GetToolBox(), TRUE);
+ pWin->StartSelection();
+ pWin->Show();
+ return pWin;
+}
+
+#pragma SEG_FUNCDEF(tbinsert_05)
+
+SfxPopupWindowType __EXPORT ScTbxInsertCtrl::GetPopupWindowType() const
+{
+ return nLastSlotId ? SFX_POPUPWINDOW_ONTIMEOUT : SFX_POPUPWINDOW_ONCLICK;
+}
+
+#pragma SEG_FUNCDEF(tbinsert_06)
+
+void __EXPORT ScTbxInsertCtrl::Select( BOOL bMod1 )
+{
+ if (nLastSlotId)
+ SFX_DISPATCHER().Execute(nLastSlotId);
+}
+
+//------------------------------------------------------------------
+//
+// Popup - Window
+//
+//------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(tbinsert_07)
+
+ScTbxInsertPopup::ScTbxInsertPopup( USHORT nId, WindowAlign eNewAlign,
+ const ResId& rRIdWin, const ResId& rRIdTbx,
+ SfxBindings& rBindings ) :
+ SfxPopupWindow ( nId, rRIdWin, rBindings),
+ aTbx ( this, GetBindings(), rRIdTbx ),
+ aRIdWinTemp(rRIdWin),
+ aRIdTbxTemp(rRIdTbx)
+{
+ aTbx.UseDefault();
+ FreeResource();
+
+ aTbx.GetToolBox().SetAlign( eNewAlign );
+ if (eNewAlign == WINDOWALIGN_LEFT || eNewAlign == WINDOWALIGN_RIGHT)
+ SetText( EMPTY_STRING );
+
+ Size aSize = aTbx.CalcWindowSizePixel();
+ aTbx.SetPosSizePixel( Point(), aSize );
+ SetOutputSizePixel( aSize );
+ aTbx.GetToolBox().SetSelectHdl( LINK(this, ScTbxInsertPopup, TbxSelectHdl));
+ aTbxClickHdl = aTbx.GetToolBox().GetClickHdl();
+ aTbx.GetToolBox().SetClickHdl( LINK(this, ScTbxInsertPopup, TbxClickHdl));
+}
+
+#pragma SEG_FUNCDEF(tbinsert_08)
+
+ScTbxInsertPopup::~ScTbxInsertPopup()
+{
+}
+
+#pragma SEG_FUNCDEF(tbinsert_09)
+
+SfxPopupWindow* __EXPORT ScTbxInsertPopup::Clone() const
+{
+ return new ScTbxInsertPopup( GetId(), aTbx.GetToolBox().GetAlign(),
+ aRIdWinTemp, aRIdTbxTemp,
+ (SfxBindings&) GetBindings() );
+}
+
+#pragma SEG_FUNCDEF(tbinsert_0a)
+
+void ScTbxInsertPopup::StartSelection()
+{
+ aTbx.GetToolBox().StartSelection();
+}
+
+#pragma SEG_FUNCDEF(tbinsert_0b)
+
+IMPL_LINK(ScTbxInsertPopup, TbxSelectHdl, ToolBox*, pBox)
+{
+ EndPopupMode();
+
+ USHORT nLastSlotId = pBox->GetCurItemId();
+ SfxUInt16Item aItem( GetId(), nLastSlotId );
+ SFX_DISPATCHER().Execute( GetId(), SFX_CALLMODE_SYNCHRON, &aItem, 0L );
+ SFX_DISPATCHER().Execute( nLastSlotId, SFX_CALLMODE_ASYNCHRON );
+ return 0;
+}
+
+#pragma SEG_FUNCDEF(tbinsert_0c)
+
+IMPL_LINK(ScTbxInsertPopup, TbxClickHdl, ToolBox*, pBox)
+{
+ USHORT nLastSlotId = pBox->GetCurItemId();
+ SfxUInt16Item aItem( GetId(), nLastSlotId );
+ SFX_DISPATCHER().Execute( GetId(), SFX_CALLMODE_SYNCHRON, &aItem, 0L );
+ if(aTbxClickHdl.IsSet())
+ aTbxClickHdl.Call(pBox);
+ return 0;
+}
+
+void __EXPORT ScTbxInsertPopup::PopupModeEnd()
+{
+ aTbx.GetToolBox().EndSelection();
+ SfxPopupWindow::PopupModeEnd();
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.15 2000/09/17 14:08:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.14 2000/08/31 16:38:19 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.13 2000/05/24 17:40:43 er
+ NOOLDSV
+
+ Revision 1.12 2000/05/23 13:07:55 hr
+ prevent conflict between STLPORT and Workshop
+
+ Revision 1.11 1999/04/07 11:52:12 ANK
+ #64357# Asynchron die Slots ausfuehren
+
+
+ Rev 1.10 07 Apr 1999 13:52:12 ANK
+ #64357# Asynchron die Slots ausfuehren
+
+ Rev 1.9 24 Jul 1998 16:05:20 NN
+ #51812# bei GetImage am ImageManager das Module angeben
+
+ Rev 1.8 10 Mar 1998 14:42:54 NN
+ ToolBoxManager mit GetBindings() statt rBindings initialisieren
+
+ Rev 1.7 05 Dec 1997 20:03:38 ANK
+ Includes geaendert
+
+ Rev 1.6 19 Sep 1997 12:12:20 NN
+ EndPopupMode / EndSelection rufen
+
+ Rev 1.5 23 Mar 1997 22:40:06 NN
+ Alignment im ctor des PopupWindow uebergeben
+
+ Rev 1.4 23 Mar 1997 17:52:28 NN
+ Clone nicht mit altem ToolBoxControl (sonst GPF nach Praesentation)
+
+ Rev 1.3 14 Nov 1996 09:46:10 NF
+ includes...
+
+ Rev 1.2 29 Oct 1996 14:04:50 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.1 21 Oct 1996 15:32:20 NN
+ Ausrichtung mit IsHorizontal statt eAlign abfragen
+
+ Rev 1.0 16 Oct 1996 16:48:30 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/dbgui/asciiopt.cxx b/sc/source/ui/dbgui/asciiopt.cxx
new file mode 100644
index 000000000000..f3cfd10a5aeb
--- /dev/null
+++ b/sc/source/ui/dbgui/asciiopt.cxx
@@ -0,0 +1,1404 @@
+/*************************************************************************
+ *
+ * $RCSfile: asciiopt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include "segmentc.hxx"
+#endif
+
+#include "global.hxx"
+#include "scresid.hxx"
+#include "impex.hxx"
+#include "asciiopt.hxx"
+#include "asciiopt.hrc"
+
+#include <vcl/system.hxx>
+
+
+//------------------------------------------------------------------------
+
+#define ASCIIDLG_MAXFIELDS 256
+
+#ifdef WIN
+ #define ASCIIDLG_MAXROWS 10000
+#else
+ #define ASCIIDLG_MAXROWS 32000
+#endif
+
+ // da max. 5 Decimalstellen
+#define ASCIIDLG_1COL_SIZE 5
+#define ASCIIDLG_LASTCOL_SIZE 10000
+
+static const sal_Char __FAR_DATA pStrFix[] = "FIX";
+static const sal_Char __FAR_DATA pStrMrg[] = "MRG";
+
+// Liste der CharSet-Werte passend zum String SCSTR_CHARSET_USER
+
+static CharSet eCharSetList[] =
+ { RTL_TEXTENCODING_MS_1252, // "Ansi"
+ RTL_TEXTENCODING_APPLE_ROMAN, // "Mac"
+ RTL_TEXTENCODING_IBM_850, // "IBMPC"
+ RTL_TEXTENCODING_IBM_437, // "IBMPC (437)"
+ RTL_TEXTENCODING_IBM_850, // "IBMPC (850)"
+ RTL_TEXTENCODING_IBM_860, // "IBMPC (860)"
+ RTL_TEXTENCODING_IBM_861, // "IBMPC (861)"
+ RTL_TEXTENCODING_IBM_863, // "IBMPC (863)"
+ RTL_TEXTENCODING_IBM_865, // "IBMPC (865)"
+ RTL_TEXTENCODING_DONTKNOW }; // "System" (handled in GetCharSetFromList)
+
+
+// Liste der Spaltentypen passend zum String SCSTR_COLUMN_USER
+
+static BYTE nColTypeList[] =
+ { SC_COL_STANDARD, SC_COL_TEXT, SC_COL_DMY, SC_COL_MDY, SC_COL_YMD,
+ SC_COL_ENGLISH, SC_COL_SKIP };
+
+
+SEG_EOFGLOBALS()
+
+#pragma SEG_FUNCDEF(asciiopt_07)
+
+String lcl_GetCharsetString(CharSet eCharSet) //! nach global oder so verschieben
+{
+ const sal_Char* pChar;
+ switch (eCharSet)
+ {
+ case RTL_TEXTENCODING_MS_1252: pChar = "ANSI"; break;
+ case RTL_TEXTENCODING_APPLE_ROMAN: pChar = "MAC"; break;
+ // IBMPC == IBMPC_850
+ case RTL_TEXTENCODING_IBM_437: pChar = "IBMPC_437"; break;
+ case RTL_TEXTENCODING_IBM_850: pChar = "IBMPC_850"; break;
+ case RTL_TEXTENCODING_IBM_860: pChar = "IBMPC_860"; break;
+ case RTL_TEXTENCODING_IBM_861: pChar = "IBMPC_861"; break;
+ case RTL_TEXTENCODING_IBM_863: pChar = "IBMPC_863"; break;
+ case RTL_TEXTENCODING_IBM_865: pChar = "IBMPC_865"; break;
+ default: pChar = "SYSTEM"; break;
+ }
+ return String::CreateFromAscii(pChar);
+}
+
+CharSet lcl_GetCharSetFromList( USHORT nPos )
+{
+ CharSet eRet = eCharSetList[nPos];
+ if (eRet == RTL_TEXTENCODING_DONTKNOW)
+ eRet = gsl_getSystemTextEncoding();
+ return eRet;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(asciiopt_01)
+
+ScAsciiOptions::ScAsciiOptions() :
+ bFixedLen ( FALSE ),
+ aFieldSeps ( ';' ),
+ bMergeFieldSeps ( FALSE ),
+ cTextSep ( 34 ),
+ eCharSet ( gsl_getSystemTextEncoding() ),
+ nStartRow ( 1 ),
+ nInfoCount ( 0 ),
+ pColStart ( NULL ),
+ pColFormat ( NULL )
+{
+}
+
+#pragma SEG_FUNCDEF(asciiopt_02)
+
+ScAsciiOptions::ScAsciiOptions(const ScAsciiOptions& rOpt) :
+ bFixedLen ( rOpt.bFixedLen ),
+ aFieldSeps ( rOpt.aFieldSeps ),
+ bMergeFieldSeps ( rOpt.bMergeFieldSeps ),
+ cTextSep ( rOpt.cTextSep ),
+ eCharSet ( rOpt.eCharSet ),
+ nStartRow ( rOpt.nStartRow ),
+ nInfoCount ( rOpt.nInfoCount )
+{
+ if (nInfoCount)
+ {
+ pColStart = new xub_StrLen[nInfoCount];
+ pColFormat = new BYTE[nInfoCount];
+ for (USHORT i=0; i<nInfoCount; i++)
+ {
+ pColStart[i] = rOpt.pColStart[i];
+ pColFormat[i] = rOpt.pColFormat[i];
+ }
+ }
+ else
+ {
+ pColStart = NULL;
+ pColFormat = NULL;
+ }
+}
+
+#pragma SEG_FUNCDEF(asciiopt_03)
+
+ScAsciiOptions::~ScAsciiOptions()
+{
+ delete[] pColStart;
+ delete[] pColFormat;
+}
+
+#pragma SEG_FUNCDEF(asciiopt_0a)
+
+void ScAsciiOptions::SetColInfo( USHORT nCount, const xub_StrLen* pStart, const BYTE* pFormat )
+{
+ delete[] pColStart;
+ delete[] pColFormat;
+
+ nInfoCount = nCount;
+
+ if (nInfoCount)
+ {
+ pColStart = new xub_StrLen[nInfoCount];
+ pColFormat = new BYTE[nInfoCount];
+ for (USHORT i=0; i<nInfoCount; i++)
+ {
+ pColStart[i] = pStart[i];
+ pColFormat[i] = pFormat[i];
+ }
+ }
+ else
+ {
+ pColStart = NULL;
+ pColFormat = NULL;
+ }
+}
+
+#pragma SEG_FUNCDEF(asciiopt_04)
+
+ScAsciiOptions& ScAsciiOptions::operator=( const ScAsciiOptions& rCpy )
+{
+ SetColInfo( rCpy.nInfoCount, rCpy.pColStart, rCpy.pColFormat );
+
+ bFixedLen = rCpy.bFixedLen;
+ aFieldSeps = rCpy.aFieldSeps;
+ bMergeFieldSeps = rCpy.bMergeFieldSeps;
+ cTextSep = rCpy.cTextSep;
+ eCharSet = rCpy.eCharSet;
+ nStartRow = rCpy.nStartRow;
+
+ return *this;
+}
+
+#pragma SEG_FUNCDEF(asciiopt_08)
+
+BOOL ScAsciiOptions::operator==( const ScAsciiOptions& rCmp ) const
+{
+ if ( bFixedLen == rCmp.bFixedLen &&
+ aFieldSeps == rCmp.aFieldSeps &&
+ bMergeFieldSeps == rCmp.bMergeFieldSeps &&
+ cTextSep == rCmp.cTextSep &&
+ eCharSet == rCmp.eCharSet &&
+ nStartRow == rCmp.nStartRow &&
+ nInfoCount == rCmp.nInfoCount )
+ {
+ DBG_ASSERT( !nInfoCount || (pColStart && pColFormat && rCmp.pColStart && rCmp.pColFormat),
+ "0-Zeiger in ScAsciiOptions" );
+ for (USHORT i=0; i<nInfoCount; i++)
+ if ( pColStart[i] != rCmp.pColStart[i] ||
+ pColFormat[i] != rCmp.pColFormat[i] )
+ return FALSE;
+
+ return TRUE;
+ }
+ return FALSE;
+}
+
+//
+// Der Options-String darf kein Semikolon mehr enthalten (wegen Pickliste)
+// darum ab Version 336 Komma stattdessen
+//
+
+#pragma SEG_FUNCDEF(asciiopt_05)
+
+void ScAsciiOptions::ReadFromString( const String& rString )
+{
+ xub_StrLen nCount = rString.GetTokenCount(',');
+ String aToken;
+ xub_StrLen nSub;
+ xub_StrLen i;
+
+ //
+ // Feld-Trenner
+ //
+
+ if ( nCount >= 1 )
+ {
+ bFixedLen = bMergeFieldSeps = FALSE;
+ aFieldSeps.Erase();
+
+ aToken = rString.GetToken(0,',');
+ if ( aToken.EqualsAscii(pStrFix) )
+ bFixedLen = TRUE;
+ nSub = aToken.GetTokenCount('/');
+ for ( i=0; i<nSub; i++ )
+ {
+ String aCode = aToken.GetToken( i, '/' );
+ if ( aCode.EqualsAscii(pStrMrg) )
+ bMergeFieldSeps = TRUE;
+ else
+ {
+ sal_Int32 nVal = aCode.ToInt32();
+ if ( nVal )
+ aFieldSeps += (sal_Unicode) nVal;
+ }
+ }
+ }
+
+ //
+ // Text-Trenner
+ //
+
+ if ( nCount >= 2 )
+ {
+ aToken = rString.GetToken(1,',');
+ sal_Int32 nVal = aToken.ToInt32();
+ cTextSep = (sal_Unicode) nVal;
+ }
+
+ //
+ // Zeichensatz
+ //
+
+ if ( nCount >= 3 )
+ {
+ aToken = rString.GetToken(2,',');
+ eCharSet = GetCharsetValue( aToken );
+ }
+
+ //
+ // Startzeile
+ //
+
+ if ( nCount >= 4 )
+ {
+ aToken = rString.GetToken(3,',');
+ nStartRow = aToken.ToInt32();
+ }
+
+ //
+ // Spalten-Infos
+ //
+
+ if ( nCount >= 5 )
+ {
+ delete[] pColStart;
+ delete[] pColFormat;
+
+ aToken = rString.GetToken(4,',');
+ nSub = aToken.GetTokenCount('/');
+ nInfoCount = nSub / 2;
+ if (nInfoCount)
+ {
+ pColStart = new xub_StrLen[nInfoCount];
+ pColFormat = new BYTE[nInfoCount];
+ for (USHORT nInfo=0; nInfo<nInfoCount; nInfo++)
+ {
+ pColStart[nInfo] = (xub_StrLen) aToken.GetToken( 2*nInfo, '/' ).ToInt32();
+ pColFormat[nInfo] = (BYTE) aToken.GetToken( 2*nInfo+1, '/' ).ToInt32();
+ }
+ }
+ else
+ {
+ pColStart = NULL;
+ pColFormat = NULL;
+ }
+ }
+}
+
+#pragma SEG_FUNCDEF(asciiopt_06)
+
+String ScAsciiOptions::WriteToString() const
+{
+ String aOutStr;
+
+ //
+ // Feld-Trenner
+ //
+
+ if ( bFixedLen )
+ aOutStr.AppendAscii(pStrFix);
+ else if ( !aFieldSeps.Len() )
+ aOutStr += '0';
+ else
+ {
+ xub_StrLen nLen = aFieldSeps.Len();
+ for (xub_StrLen i=0; i<nLen; i++)
+ {
+ if (i)
+ aOutStr += '/';
+ aOutStr += String::CreateFromInt32(aFieldSeps.GetChar(i));
+ }
+ if ( bMergeFieldSeps )
+ {
+ aOutStr += '/';
+ aOutStr.AppendAscii(pStrMrg);
+ }
+ }
+
+ aOutStr += ','; // Token-Ende
+
+ //
+ // Text-Trenner
+ //
+
+ aOutStr += String::CreateFromInt32(cTextSep);
+ aOutStr += ','; // Token-Ende
+
+ //
+ // Zeichensatz
+ //
+
+ aOutStr += lcl_GetCharsetString( eCharSet );
+ aOutStr += ','; // Token-Ende
+
+ //
+ // Startzeile
+ //
+
+ aOutStr += String::CreateFromInt32(nStartRow);
+ aOutStr += ','; // Token-Ende
+
+ //
+ // Spalten-Infos
+ //
+
+ DBG_ASSERT( !nInfoCount || (pColStart && pColFormat), "0-Zeiger in ScAsciiOptions" );
+ for (USHORT nInfo=0; nInfo<nInfoCount; nInfo++)
+ {
+ if (nInfo)
+ aOutStr += '/';
+ aOutStr += String::CreateFromInt32(pColStart[nInfo]);
+ aOutStr += '/';
+ aOutStr += String::CreateFromInt32(pColFormat[nInfo]);
+ }
+
+ return aOutStr;
+}
+
+#if 0
+// Code, um die Spalten-Liste aus einem Excel-kompatiblen String zu erzeugen:
+// (im Moment nicht benutzt)
+#pragma SEG_FUNCDEF(asciiopt_09)
+
+void ScAsciiOptions::InterpretColumnList( const String& rString )
+{
+ // Eingabe ist 1-basiert, pColStart fuer FixedLen ist 0-basiert
+
+ // Kommas durch Semikolon ersetzen
+
+ String aSemiStr = rString;
+ USHORT nPos = 0;
+ do
+ nPos = aSemiStr.SearchAndReplace( ',', ';', nPos );
+ while ( nPos != STRING_NOTFOUND );
+
+ // Eintraege sortieren
+
+ USHORT nCount = aSemiStr.GetTokenCount();
+ USHORT* pTemp = new USHORT[nCount+1];
+ pTemp[0] = 1; // erste Spalte faengt immer bei 1 an
+ USHORT nFound = 1;
+ USHORT i,j;
+ for (i=0; i<nCount; i++)
+ {
+ USHORT nVal = (USHORT) aSemiStr.GetToken(i);
+ if (nVal)
+ {
+ BOOL bThere = FALSE;
+ nPos = 0;
+ for (j=0; j<nFound; j++)
+ {
+ if ( pTemp[j] == nVal )
+ bThere = TRUE;
+ else if ( pTemp[j] < nVal )
+ nPos = j+1;
+ }
+ if ( !bThere )
+ {
+ if ( nPos < nFound )
+ memmove( &pTemp[nPos+1], &pTemp[nPos], (nFound-nPos)*sizeof(USHORT) );
+ pTemp[nPos] = nVal;
+ ++nFound;
+ }
+ }
+ }
+
+ // Eintraege uebernehmen
+
+ delete[] pColStart;
+ delete[] pColFormat;
+ nInfoCount = nFound;
+ if (nInfoCount)
+ {
+ pColStart = new USHORT[nInfoCount];
+ pColFormat = new BYTE[nInfoCount];
+ for (i=0; i<nInfoCount; i++)
+ {
+ pColStart[i] = pTemp[i] - 1;
+ pColFormat[i] = SC_COL_STANDARD;
+ }
+ }
+ else
+ {
+ pColStart = NULL;
+ pColFormat = NULL;
+ }
+
+ bFixedLen = TRUE; // sonst macht's keinen Sinn
+
+ // aufraeumen
+
+ delete[] pTemp;
+}
+#endif
+
+//------------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(asciiopt_0b)
+
+void lcl_FillCombo( ComboBox& rCombo, const String& rList, sal_Unicode cSelect )
+{
+ xub_StrLen i;
+ xub_StrLen nCount = rList.GetTokenCount('\t');
+ for ( i=0; i<nCount; i+=2 )
+ rCombo.InsertEntry( rList.GetToken(i,'\t') );
+
+ if ( cSelect )
+ {
+ String aStr;
+ for ( i=0; i<nCount; i+=2 )
+ if ( (sal_Unicode)rList.GetToken(i+1,'\t').ToInt32() == cSelect )
+ aStr = rList.GetToken(i,'\t');
+ if (!aStr.Len())
+ aStr = cSelect; // Ascii
+
+ rCombo.SetText(aStr);
+ }
+}
+
+#pragma SEG_FUNCDEF(asciiopt_0c)
+
+sal_Unicode lcl_CharFromCombo( ComboBox& rCombo, const String& rList )
+{
+ sal_Unicode c = 0;
+ String aStr = rCombo.GetText();
+ if ( aStr.Len() )
+ {
+ xub_StrLen nCount = rList.GetTokenCount('\t');
+ for ( xub_StrLen i=0; i<nCount; i+=2 )
+ if ( ScGlobal::pScInternational->CompareEqual(
+ aStr, rList.GetToken(i,'\t'), INTN_COMPARE_IGNORECASE ) )
+ {
+ c = (sal_Unicode)rList.GetToken(i+1,'\t').ToInt32();
+ }
+ if (!c)
+ c = (sal_Unicode) aStr.ToInt32(); // Ascii
+ }
+ return c;
+}
+
+#pragma SEG_FUNCDEF(asciiopt_0d)
+
+ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName,
+ SvStream* pInStream, sal_Unicode cSep ) :
+ ModalDialog ( pParent, ScResId( RID_SCDLG_ASCII ) ),
+ aRbFixed ( this, ScResId( RB_FIXED ) ),
+ aRbSeparated( this, ScResId( RB_SEPARATED ) ),
+
+ aCkbTab ( this, ScResId( CKB_TAB ) ),
+ aCkbSemicolon(this, ScResId( CKB_SEMICOLON ) ),
+ aCkbComma ( this, ScResId( CKB_COMMA ) ),
+ aCkbSpace ( this, ScResId( CKB_SPACE ) ),
+ aCkbOther ( this, ScResId( CKB_OTHER ) ),
+ aEdOther ( this, ScResId( ED_OTHER ) ),
+
+ aFtRow ( this, ScResId( FT_AT_ROW ) ),
+ aNfRow ( this, ScResId( NF_AT_ROW ) ),
+
+ aTableBox ( this, ScResId( CTR_TABLE ) ),
+ aFtCharSet ( this, ScResId( FT_CHARSET ) ),
+ aLbCharSet ( this, ScResId( LB_CHARSET ) ),
+ aGbSepOpt ( this, ScResId( GB_SEPOPT ) ),
+ aFtTextSep ( this, ScResId( FT_TEXTSEP ) ),
+ aCbTextSep ( this, ScResId( CB_TEXTSEP ) ),
+ aGbFieldOpt ( this, ScResId( GB_FIELDOPT ) ),
+ aCkbAsOnce ( this, ScResId( CB_ASONCE) ),
+ aFtType ( this, ScResId( FT_TYPE ) ),
+ aLbType ( this, ScResId( LB_TYPE1 ) ),
+ aScrollbar ( this, ScResId( SB_COLUMN ) ),
+ aVScroll ( this, ScResId( SB_ROW ) ),
+ aGbWidth ( this, ScResId( GB_WIDTH ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aStringCol ( ScResId( STR_COL ) ),
+ aStringTo ( ScResId( STR_TO ) ),
+ aCharSetUser( ScResId( SCSTR_CHARSET_USER ) ),
+ aColumnUser ( ScResId( SCSTR_COLUMN_USER ) ),
+ aFldSepList ( ScResId( SCSTR_FIELDSEP ) ),
+ aTextSepList( ScResId( SCSTR_TEXTSEP ) )
+{
+ String aName = GetText();
+ aName.AppendAscii(RTL_CONSTASCII_STRINGPARAM(" - ["));
+ aName += aDatName;
+ aName += ']';
+ SetText( aName );
+
+ FreeResource();
+ bVFlag=FALSE;
+ String aSizeString = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("00000"));
+ Font aTBFont=System::GetStandardFont( STDFONT_FIXED );
+ Size aTBSize=aTableBox.GetFont().GetSize();
+ aTBSize.Width()=aTBFont.GetSize().Width();
+ aTBFont.SetSize(aTBSize);
+ aTableBox.SetFont(aTBFont);
+
+ pDatStream=pInStream;
+ aTableBox.InsertCol(0,2);
+ aTableBox.InsertRow(0,4);
+
+ aTableBox.SetNumOfCharsForCol(0,aSizeString.Len());
+
+ switch(cSep)
+ {
+ case '\t' :aCkbTab .Check();break;
+ case ';' :aCkbSemicolon .Check();break;
+ case ',' :aCkbComma .Check();break;
+ case ' ' :aCkbSpace .Check();break;
+ default :aCkbOther .Check();
+ aEdOther.SetText(cSep);
+ break;
+ }
+
+ nArrayEndPos=0;
+ USHORT nField;
+ if(pDatStream!=NULL)
+ {
+ pRowPosArray=new ULONG[ASCIIDLG_MAXROWS+2];
+ if(pRowPosArray!=NULL)
+ {
+ ULONG *pPtrRowPos=pRowPosArray;
+ for(nField=0;nField<ASCIIDLG_MAXROWS;nField++)
+ {
+ *pPtrRowPos++=0;
+ }
+ }
+ pDatStream->SetBufferSize(ASCIIDLG_MAXROWS);
+ pDatStream->SetStreamCharSet( gsl_getSystemTextEncoding() ); //!???
+ pDatStream->Seek( 0 );
+ for ( USHORT j=0; j < SC_ASCIIOPT_PREVIEW_LINES; j++ )
+ {
+ pRowPosArray[nArrayEndPos++]=pDatStream->Tell();
+ if(!pDatStream->ReadLine( aPreviewLine[j] ))
+ {
+ bVFlag=TRUE;
+ aVScroll.SetPageSize( aTableBox.GetYMaxVisChars()-1);
+ aVScroll.SetThumbPos(0);
+ aVScroll.SetRange( Range( 0, j) );
+ aVScroll.SetVisibleSize(j);
+ break;
+ }
+ }
+ }
+ nScrollPos = 0;
+ nUsedCols = 0;
+ pEndValues = new USHORT[ASCIIDLG_MAXFIELDS];
+ pFlags = new BYTE[ASCIIDLG_MAXFIELDS];
+ for (nField=0; nField<ASCIIDLG_MAXFIELDS; nField++)
+ {
+ pEndValues[nField] = 0;
+ pFlags[nField] = SC_COL_STANDARD;
+ }
+
+ lcl_FillCombo( aCbTextSep, aTextSepList, 34 ); // Default "
+
+ Link aVarSepLink=LINK( this, ScImportAsciiDlg, VarSepHdl );
+ aCbTextSep.SetSelectHdl( aVarSepLink);
+ aCbTextSep.SetModifyHdl( aVarSepLink);
+
+ aCkbTab.SetClickHdl( aVarSepLink);
+ aCkbSemicolon.SetClickHdl(aVarSepLink);
+ aCkbComma.SetClickHdl( aVarSepLink);
+ aCkbAsOnce.SetClickHdl( aVarSepLink);
+ aCkbSpace.SetClickHdl( aVarSepLink);
+ aCkbOther.SetClickHdl( aVarSepLink);
+ aEdOther.SetModifyHdl( aVarSepLink);
+
+ aTableBox.SetSelectionHdl(LINK( this, ScImportAsciiDlg, SelectHdl ));
+
+ // Zeichensatz - Listbox
+
+ xub_StrLen nCount = aCharSetUser.GetTokenCount();
+ xub_StrLen i;
+ for (i=0; i<nCount; i++)
+ aLbCharSet.InsertEntry(aCharSetUser.GetToken(i));
+ aLbCharSet.SelectEntryPos( nCount - 1 ); // "System" ganz hinten
+ GetCharSet();
+ aLbCharSet.SetSelectHdl( LINK( this, ScImportAsciiDlg, CharSetHdl ) );
+
+ // Spaltentyp - Listboxen
+
+ ListBox* pType =&aLbType;
+ nCount = aColumnUser.GetTokenCount();
+ for (i=0; i<nCount; i++)
+ {
+ String aToken = aColumnUser.GetToken(i);
+ pType->InsertEntry(aToken);
+ aTableBox.InsertContextEntry(100+i,aToken);
+ }
+ pType->SetSelectHdl( LINK( this, ScImportAsciiDlg, ColTypeHdl ) );
+ aTableBox.SetModifyColHdl(LINK( this, ScImportAsciiDlg, ColTypeHdl ) );
+
+ aScrollbar.SetRange( Range( 0, ASCIIDLG_MAXFIELDS ) ); // initial getrennt
+ aScrollbar.SetPageSize( aTableBox.GetXMaxVisChars() );
+ //aScrollbar.SetVisibleSize( 3 );
+ aScrollbar.SetScrollHdl( LINK( this, ScImportAsciiDlg, ScrollHdl ) );
+
+ if(!bVFlag)
+ {
+ aVScroll.SetRange( Range( 0, ASCIIDLG_MAXROWS ) ); // initial getrennt
+ aVScroll.SetPageSize( aTableBox.GetYMaxVisChars()-2 );
+ aVScroll.SetVisibleSize(aTableBox.GetYMaxVisChars()-1);
+ }
+ aVScroll.SetScrollHdl( LINK( this, ScImportAsciiDlg, ScrollHdl ) );
+ aRbSeparated.SetClickHdl( LINK( this, ScImportAsciiDlg, VarFixHdl ) );
+ aRbFixed.SetClickHdl( LINK( this, ScImportAsciiDlg, VarFixHdl ) );
+
+ CheckScrollPos();
+ CheckColTypes(FALSE);
+ CheckValues();
+ CheckDisable();
+ VarFixHdl(&aRbFixed);
+}
+
+#pragma SEG_FUNCDEF(asciiopt_0e)
+
+ScImportAsciiDlg::~ScImportAsciiDlg()
+{
+ delete[] pEndValues;
+ delete[] pFlags;
+ delete[] pRowPosArray;
+
+}
+
+#pragma SEG_FUNCDEF(asciiopt_0f)
+
+IMPL_LINK( ScImportAsciiDlg, VarFixHdl, void *, pCtr )
+{
+ if((RadioButton *)pCtr==&aRbFixed ||(RadioButton *)pCtr==&aRbSeparated )
+ {
+ aTableBox.ClearTable();
+ aTableBox.InsertRow(0,4);
+ aTableBox.InsertCol(0,2);
+ aTableBox.SetNumOfCharsForCol(0,ASCIIDLG_1COL_SIZE);
+ for (int i=0; i<ASCIIDLG_MAXFIELDS; i++)
+ {
+ pFlags[i] = SC_COL_STANDARD;
+ }
+ aLbType.SelectEntryPos(0);
+ CheckValues();
+ CheckScrollRange();
+ ScrollHdl(&aScrollbar);
+ CheckDisable();
+ aTableBox.SetSelectedCol(1);
+ }
+ else
+ {
+ CheckValues();
+ CheckScrollRange();
+ ScrollHdl(&aScrollbar);
+ CheckDisable();
+ }
+ return 0;
+}
+
+IMPL_LINK( ScImportAsciiDlg, VarSepHdl, void*, pCtr )
+{
+ if (!aRbFixed.IsChecked())
+ {
+ aTableBox.ClearTable();
+ aTableBox.InsertRow(0,4);
+ aTableBox.InsertCol(0,2);
+ aTableBox.SetNumOfCharsForCol(0,5); // da max. 5 Decimalstellen
+ if((Edit *)pCtr==&aEdOther)
+ {
+ aCkbOther.Check((aEdOther.GetText().Len()>0));
+ }
+
+ DelimitedPreview(); // Preview mit neuen Einstellungen
+ CheckScrollRange();
+ ScrollHdl(&aScrollbar);
+ }
+ return 0;
+}
+
+#pragma SEG_FUNCDEF(asciiopt_10)
+
+IMPL_LINK( ScImportAsciiDlg, ScrollHdl, void*, pScroll )
+{
+ if((ScrollBar *)pScroll==&aScrollbar)
+ {
+ long nNew = aScrollbar.GetThumbPos();
+ if ( nNew >= 0)
+ {
+ nScrollPos = (USHORT) nNew;
+
+ CheckScrollPos();
+ CheckColTypes(FALSE);
+ CheckValues();
+ String aSizeString('W');
+ aTableBox.SetXTablePos((short)(nNew *
+ aTableBox.GetTextWidth(aSizeString)));
+ }
+ }
+ else if((ScrollBar *)pScroll==&aVScroll)
+ {
+ BOOL bVFlag1=bVFlag;
+ if(pDatStream !=NULL && pRowPosArray!=NULL) UpdateVertical();
+ if(bVFlag!=bVFlag1) UpdateVertical();
+ CheckScrollPos();
+ CheckColTypes(FALSE);
+ CheckValues();
+ CheckScrollRange();
+ //CheckDisable();
+ }
+ return 0;
+}
+
+#pragma SEG_FUNCDEF(asciiopt_11)
+
+IMPL_LINK( ScImportAsciiDlg, CharSetHdl, void*, EMPTY_ARG )
+{
+ if ( aLbCharSet.GetSelectEntryCount() == 1 )
+ {
+ USHORT nSel = aLbCharSet.GetSelectEntryPos();
+ eCharSet = lcl_GetCharSetFromList(nSel);
+
+ CheckValues(); // Preview anpassen
+ }
+
+ return 0;
+}
+
+#pragma SEG_FUNCDEF(asciiopt_12)
+
+IMPL_LINK( ScImportAsciiDlg, ColTypeHdl, void*, pCtr )
+{
+ CheckColTypes( TRUE, pCtr);
+
+ return 0;
+}
+
+#pragma SEG_FUNCDEF(asciiopt_13)
+
+IMPL_LINK( ScImportAsciiDlg, SelectHdl, ScTableWithRuler*, pModified )
+{
+ long nPos=aTableBox.GetSelectedCol();
+
+ if(aTableBox.GetSelectedCol()>0)
+ {
+
+ if ( nPos-1 < ASCIIDLG_MAXFIELDS )
+ {
+ BYTE nType = pFlags[nPos-1];
+ USHORT nCount = sizeof(nColTypeList) / sizeof(BYTE);
+ USHORT nPos1 = nCount-1;
+ for (USHORT j=0; j<nCount; j++)
+ if ( nColTypeList[j] == nType )
+ nPos1 = j;
+ aLbType.SelectEntryPos(nPos1);
+ }
+ }
+ return 0;
+}
+
+void ScImportAsciiDlg::CheckScrollRange()
+{
+ USHORT nScrollEnd = nUsedCols + 1;
+ if ( nScrollEnd < 3 )
+ nScrollEnd = 3;
+ String aSizeString('W');
+
+ long nMaxSize=aTableBox.GetXMaxTableSize();
+
+ xub_StrLen nNumOfChars=aTableBox.GetNumOfCharsForCol(0);
+ if(nMaxSize<0) nMaxSize=0;
+ aScrollbar.SetRange(Range(0,nNumOfChars+nMaxSize/aTableBox.GetTextWidth(aSizeString)));
+ aScrollbar.SetPageSize((long)(aTableBox.GetXMaxVisChars()-nNumOfChars));
+ aScrollbar.SetVisibleSize((long)(aTableBox.GetXMaxVisChars()-nNumOfChars));
+
+ if(aScrollbar.GetThumbPos()>nMaxSize)
+ {
+ aScrollbar.SetThumbPos(0);
+ }
+}
+
+#pragma SEG_FUNCDEF(asciiopt_14)
+
+void ScImportAsciiDlg::CheckValues( BOOL bReadVal, USHORT nEditField )
+{
+// String aSizeString = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("999"));
+ USHORT i;
+
+ if ( !aRbFixed.IsChecked() )
+ {
+ DelimitedPreview(); // nur Preview anpassen
+ return;
+ }
+
+ aTableBox.RulerEnabled();
+ // Dialog anpassen
+ USHORT nNumOfCols=aTableBox.GetNumberOfCols();
+ xub_StrLen nVal = 0;
+ USHORT nRowNum=aVScroll.GetThumbPos()+1;
+ String aField;
+
+ for ( USHORT j=0; j < SC_ASCIIOPT_PREVIEW_LINES; j++ )
+ {
+ aField = String::CreateFromInt32( nRowNum++ );
+
+ String aPreviewConv( aPreviewLine[j], eCharSet );
+ aTableBox.SetDataAtRowCol(j+1,0,aField);
+ //aTableBox.SetNumOfCharsForCol(0,aField.Len()+2);
+
+ String aPrevStr;
+
+ if(nNumOfCols>2) nVal= 0;
+ xub_StrLen nPrevious = 0;
+ for (i=0; i<nNumOfCols-1; i++)
+ {
+ USHORT nPos = i+1;
+ if ( nPos < ASCIIDLG_MAXFIELDS )
+ {
+ if(nNumOfCols<=2)
+ {
+ if( nVal < aPreviewConv.Len())
+ {
+ nVal=aPreviewConv.Len();
+ if(nVal<aTableBox.GetXMaxVisChars()-ASCIIDLG_1COL_SIZE)
+ nVal=aTableBox.GetXMaxVisChars();
+ }
+ }
+ else
+ {
+ nVal += aTableBox.GetNumOfCharsForCol(nPos);
+ }
+
+ String aStart = String::CreateFromInt32(nPrevious);
+ aStart += ' ';
+ aStart += aStringTo;
+ if(i+1<nNumOfCols-1)
+ {
+ aPrevStr = aPreviewConv.Copy( nPrevious, nVal-nPrevious );
+ aTableBox.SetNumOfCharsForCol(i+1, nVal-nPrevious );
+ }
+ else
+ {
+ aPrevStr = aPreviewConv.Copy(nPrevious);
+ if(aPrevStr.Len()>aTableBox.GetNumOfCharsForCol(i+1))
+ {
+ aTableBox.SetNumOfCharsForCol(i+1, aPrevStr.Len());
+ }
+ }
+ aTableBox.SetDataAtRowCol(j+1,i+1,aPrevStr);
+ nPrevious += aTableBox.GetNumOfCharsForCol(nPos);
+ }
+ }
+ }
+ aTableBox.SetNumOfCharsForCol(0,aField.Len()+2);
+ nNumOfCols=aTableBox.GetNumberOfCols();
+ for (i=0; i<nNumOfCols-1; i++)
+ {
+ if ( i < ASCIIDLG_MAXFIELDS )
+ {
+ BYTE nType = pFlags[i];
+ USHORT nCount = sizeof(nColTypeList) / sizeof(BYTE);
+ USHORT nPos1 = nCount-1;
+ for (USHORT j=0; j<nCount; j++)
+ if ( nColTypeList[j] == nType )
+ nPos1 = j;
+ aTableBox.SetDataAtRowCol(0,i+1,aLbType.GetEntry(nPos1));
+ }
+ }
+}
+
+void ScImportAsciiDlg::DelimitedPreview()
+{
+ aTableBox.RulerEnabled(FALSE);
+ String aSeps;
+ if(aCkbTab.IsChecked()) aSeps+='\t';
+ if(aCkbSemicolon.IsChecked()) aSeps+=';';
+ if(aCkbComma.IsChecked()) aSeps+=',';
+ if(aCkbSpace.IsChecked()) aSeps+=' ';
+ if(aCkbOther.IsChecked())
+ {
+ aSeps+=aEdOther.GetText().GetChar(0);
+ }
+ BOOL bMerge = FALSE;
+ if(aCkbAsOnce.IsChecked()) bMerge=TRUE;
+
+ sal_Unicode cTextSep = lcl_CharFromCombo( aCbTextSep, aTextSepList );
+
+ // Preview-String von vorne her aufteilen...
+ USHORT nPos,nMaxCol;
+ xub_StrLen nMaxWidth[ASCIIDLG_MAXFIELDS];
+ int i;
+ for (i=0; i<ASCIIDLG_MAXFIELDS; i++)
+ {
+ nMaxWidth[i]=5;
+ }
+ nMaxCol=0;
+ USHORT nRowNum=aVScroll.GetThumbPos()+1;
+ USHORT nNumOfCols=aTableBox.GetNumberOfCols();
+ String aField;
+
+ const sal_Unicode* pSeps = aSeps.GetBuffer();
+ for ( USHORT j=0; j < SC_ASCIIOPT_PREVIEW_LINES; j++ )
+ {
+ String aPreviewConv( aPreviewLine[j], eCharSet );
+
+ const sal_Unicode* p = aPreviewConv.GetBuffer();
+ String aPrevStr;
+ aField = String::CreateFromInt32( nRowNum++ );
+ aTableBox.SetDataAtRowCol(j+1,0,aField);
+ //aTableBox.SetNumOfCharsForCol(0,aField.Len()+2);
+
+ BOOL bCont = TRUE;
+ for (nPos=0; nPos < ASCIIDLG_MAXFIELDS && bCont; nPos++)
+ {
+ if ( *p )
+ {
+ p = ScImportExport::ScanNextFieldFromString( p, aField, cTextSep, pSeps, bMerge );
+ if ( !*p && aField.Len() && (ScGlobal::UnicodeStrChr( pSeps, *(p-1) ) == NULL) )
+ bCont = FALSE; // letztes Feld, mit Inhalt
+ }
+ else
+ {
+ bCont = FALSE; // letztes Feld, ohne Inhalt
+ aField.Erase();
+ }
+
+ if(nMaxWidth[nPos+1]<aField.Len())
+ nMaxWidth[nPos+1]=aField.Len();
+
+ aTableBox.SetDataAtRowCol(j+1,nPos+1,aField);
+ }
+ if(nMaxCol<nPos+1) nMaxCol=nPos+1;
+ aField.Erase();
+ for(;nPos<nNumOfCols-1;nPos++)
+ aTableBox.SetDataAtRowCol(j+1,nPos+1,aField);
+ }
+ aField = String::CreateFromInt32( nRowNum-1 );
+ aTableBox.SetNumOfCharsForCol(0,aField.Len()+2);
+
+ if(nMaxCol<nNumOfCols)
+ aTableBox.DeleteCol(nMaxCol,nNumOfCols-nMaxCol);
+
+ for (i=1; i<nMaxCol; i++)
+ {
+ aTableBox.SetNumOfCharsForCol(i,nMaxWidth[i]);
+ }
+
+ for (i=0; i<nMaxCol-1; i++)
+ {
+ if ( i < ASCIIDLG_MAXFIELDS )
+ {
+ BYTE nType = pFlags[i];
+ USHORT nCount = sizeof(nColTypeList) / sizeof(BYTE);
+ USHORT nPos1 = nCount-1;
+ for (USHORT j=0; j<nCount; j++)
+ if ( nColTypeList[j] == nType )
+ nPos1 = j;
+ aTableBox.SetDataAtRowCol(0,i+1,aLbType.GetEntry(nPos1));
+ }
+ }
+}
+
+#pragma SEG_FUNCDEF(asciiopt_15)
+
+void ScImportAsciiDlg::CheckScrollPos()
+{
+ /*
+ FixedText* pTitle[3] = { &aFtCol1, &aFtCol2, &aFtCol3 };
+
+ for (USHORT i=0; i<3; i++)
+ {
+ String aStr = aStringCol;
+ aStr += ' ';
+ aStr += ( nScrollPos + i + 1 );
+ pTitle[i]->SetText(aStr);
+ }
+ */
+}
+
+void ScImportAsciiDlg::UpdateVertical()
+{
+ ByteString aString;
+ ULONG nRows=0;
+ ULONG nNew=0;
+ double fNew;
+ if(!bVFlag && aVScroll.GetType()==SCROLL_DRAG)
+ {
+ bVFlag=TRUE;
+ pDatStream->Seek(0);
+
+ ULONG *pPtrRowPos=pRowPosArray;
+ *pPtrRowPos++=0;
+ SetPointer(Pointer(POINTER_WAIT));
+ while(pDatStream->ReadLine(aString))
+ {
+ nRows++;
+
+ if(nRows>ASCIIDLG_MAXROWS) break;
+
+ *pPtrRowPos++=pDatStream->Tell();
+ }
+ fNew=((double) (aVScroll.GetThumbPos())*nRows)/ASCIIDLG_MAXROWS;
+ nNew =(ULONG) fNew;
+ aVScroll.SetPageSize( aTableBox.GetYMaxVisChars()-1);
+ aVScroll.SetThumbPos(nNew);
+ aVScroll.SetRange( Range( 0, nRows) );
+ SetPointer(Pointer(POINTER_ARROW));
+ }
+
+ nNew=aVScroll.GetThumbPos();
+
+ if(bVFlag || nNew<=nArrayEndPos) pDatStream->Seek(pRowPosArray[nNew]);
+
+
+ for ( USHORT j=0; j < SC_ASCIIOPT_PREVIEW_LINES; j++ )
+ {
+ if(!bVFlag && nNew+j>=nArrayEndPos)
+ {
+ pRowPosArray[nNew+j]=pDatStream->Tell();
+ nArrayEndPos=(USHORT) nNew+j;
+ }
+ if(!pDatStream->ReadLine( aPreviewLine[j] )&& !bVFlag)
+ {
+ bVFlag=TRUE;
+ aVScroll.SetPageSize( aTableBox.GetYMaxVisChars()-1);
+ aVScroll.SetThumbPos(nNew-1);
+ aVScroll.SetRange( Range( 0, nArrayEndPos) );
+ }
+ }
+}
+
+
+#pragma SEG_FUNCDEF(asciiopt_16)
+
+void ScImportAsciiDlg::CheckColTypes(BOOL bReadVal,void *pCtr)
+{
+ USHORT i, nPos;
+ BYTE nType = SC_COL_STANDARD;
+
+ if((ScTableWithRuler*) pCtr== &aTableBox)
+ {
+ USHORT nNumOfCols=aTableBox.GetNumberOfCols();
+ for (i=1; i<nNumOfCols; i++)
+ {
+ nPos =i-1;
+ if ( nPos < ASCIIDLG_MAXFIELDS )
+ {
+ String aString=aTableBox.GetDataAtRowCol(0,i);
+ USHORT nSel = aLbType.GetEntryPos(aString);
+ nType = nColTypeList[nSel];
+ pFlags[nPos] = nType;
+ }
+ }
+ }
+ else
+ {
+ nPos = aTableBox.GetSelectedCol()-1;
+ if ( nPos < ASCIIDLG_MAXFIELDS )
+ {
+ if ( aLbType.GetSelectEntryCount() == 1 )
+ {
+ USHORT nSel = aLbType.GetSelectEntryPos();
+ nType = nColTypeList[nSel];
+ aTableBox.SetDataAtRowCol(0,nPos+1,aLbType.GetSelectEntry());
+ aTableBox.Update();
+ }
+ pFlags[nPos] = nType;
+ }
+ }
+}
+
+#pragma SEG_FUNCDEF(asciiopt_17)
+
+void lcl_DoEnable( Window& rWin, BOOL bEnable )
+{
+ if (bEnable)
+ rWin.Enable();
+ else
+ rWin.Disable();
+ rWin.Invalidate();
+ rWin.Update();
+
+}
+
+#pragma SEG_FUNCDEF(asciiopt_18)
+
+void ScImportAsciiDlg::CheckDisable()
+{
+ BOOL bFix = aRbFixed.IsChecked();
+
+ BOOL bVar = !bFix;
+ lcl_DoEnable( aCkbTab, bVar );
+ lcl_DoEnable( aCkbSemicolon,bVar );
+ lcl_DoEnable( aCkbComma, bVar );
+ lcl_DoEnable( aCkbSpace, bVar );
+ lcl_DoEnable( aCkbOther, bVar );
+ lcl_DoEnable( aEdOther, bVar );
+ lcl_DoEnable( aCkbAsOnce, bVar );
+ lcl_DoEnable( aFtTextSep, bVar );
+ lcl_DoEnable( aCbTextSep, bVar );
+}
+
+#pragma SEG_FUNCDEF(asciiopt_19)
+
+void ScImportAsciiDlg::GetCharSet()
+{
+ String aUser = aLbCharSet.GetSelectEntry();
+ xub_StrLen nPos = 0;
+ xub_StrLen nCount = aCharSetUser.GetTokenCount();
+ for (xub_StrLen i=0; i<nCount; i++)
+ if ( ScGlobal::pScInternational->CompareEqual(
+ aUser, aCharSetUser.GetToken(i), INTN_COMPARE_IGNORECASE ) )
+ {
+ nPos = i;
+ }
+ eCharSet = lcl_GetCharSetFromList(nPos);
+}
+
+#pragma SEG_FUNCDEF(asciiopt_1a)
+
+void ScImportAsciiDlg::GetOptions( ScAsciiOptions& rOpt )
+{
+ BOOL bFix = aRbFixed.IsChecked();
+
+ rOpt.SetCharSet( eCharSet );
+ rOpt.SetFixedLen( bFix );
+ USHORT nRow=(USHORT)aNfRow.GetText().ToInt32();
+
+ rOpt.SetStartRow(nRow);
+
+ if ( bFix )
+ {
+ nUsedCols=aTableBox.GetNumberOfCols();
+ xub_StrLen* pOptStart = new xub_StrLen[ nUsedCols+1 ];
+ BYTE* pOptType = new BYTE[ nUsedCols+1 ];
+ USHORT nCount = 0;
+ xub_StrLen nLastEnd = 0;
+ xub_StrLen nStart = 0;
+ xub_StrLen nEnd = 0;
+ for (USHORT i=1; i<nUsedCols; i++)
+ {
+ nEnd+=aTableBox.GetNumOfCharsForCol(i);
+ if ( nEnd > nStart )
+ {
+ pOptStart[nCount] = nStart;
+ pOptType[nCount] = pFlags[i-1];
+ ++nCount;
+ nLastEnd = nEnd;
+ }
+ nStart +=aTableBox.GetNumOfCharsForCol(i);
+ }
+ pOptStart[nCount] = ASCIIDLG_LASTCOL_SIZE;//fuer den Rest
+ //pOptStart[nCount] = nLastEnd; // den Rest ueberspringen
+ pOptType[nCount] = SC_COL_SKIP;
+ ++nCount;
+
+ rOpt.SetColInfo( nCount, pOptStart, pOptType );
+ delete[] pOptStart;
+ delete[] pOptType;
+ }
+ else
+ {
+ sal_Unicode cTextSep = lcl_CharFromCombo( aCbTextSep, aTextSepList );
+
+
+ String aSeps;
+ if(aCkbTab.IsChecked()) aSeps+='\t';
+ if(aCkbSemicolon.IsChecked()) aSeps+=';';
+ if(aCkbComma.IsChecked()) aSeps+=',';
+ if(aCkbSpace.IsChecked()) aSeps+=' ';
+ if(aCkbOther.IsChecked())
+ {
+ aSeps+=aEdOther.GetText().GetChar(0);
+ }
+ rOpt.SetMergeSeps(aCkbAsOnce.IsChecked());
+ rOpt.SetFieldSeps( aSeps );
+ rOpt.SetTextSep( cTextSep );
+
+ // Spaltentypen
+
+ xub_StrLen* pColNum = new xub_StrLen[ASCIIDLG_MAXFIELDS];
+ BYTE* pColType = new BYTE[ASCIIDLG_MAXFIELDS];
+
+ USHORT nCount = 0;
+ for (USHORT i=0; i<ASCIIDLG_MAXFIELDS; i++)
+ if (pFlags[i] != SC_COL_STANDARD)
+ {
+ pColNum[nCount] = i+1; // 1-based
+ pColType[nCount] = pFlags[i];
+ ++nCount;
+ }
+
+ rOpt.SetColInfo( nCount, pColNum, pColType );
+
+ delete[] pColType;
+ delete[] pColNum;
+ }
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.25 2000/09/17 14:08:55 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.24 2000/08/31 16:38:19 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.23 2000/05/22 18:05:11 nn
+ DelimitedPreview: right Field len
+
+ Revision 1.22 2000/05/19 18:35:33 nn
+ CreateFromInt32
+
+ Revision 1.21 2000/04/28 18:55:41 nn
+ include
+
+ Revision 1.20 2000/04/14 17:38:02 nn
+ unicode changes
+
+ Revision 1.19 2000/02/11 12:22:37 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.18 1998/12/02 10:17:56 ANK
+ #59981# Horizontale Begrenzung aufgehoben
+
+
+ Rev 1.17 02 Dec 1998 11:17:56 ANK
+ #59981# Horizontale Begrenzung aufgehoben
+
+ Rev 1.16 19 Nov 1998 11:48:30 ER
+ #59519# hmblgrmbl.. BSE und Alzheimer
+
+ Rev 1.15 16 Nov 1998 20:51:54 ER
+ #59519# DelimitedPreview: letzte Spalte auch anzeigen wenn gerade leer
+
+ Rev 1.14 26 Aug 1998 17:11:36 ANK
+ #55355# Positionierung nach Umschalten
+
+ Rev 1.13 04 Jul 1998 19:57:22 ER
+ opt: ScanNextFieldFromString mit const char* statt const String&
+
+ Rev 1.12 23 Jun 1998 22:59:32 NN
+ US-Englisch in Typ-Liste
+
+ Rev 1.11 08 Jan 1998 16:19:38 ANK
+ Flackern des Focus beseitigt
+
+ Rev 1.10 18 Dec 1997 15:38:40 ANK
+ VScroll- Verhalten geaendert
+
+ Rev 1.9 16 Dec 1997 12:09:56 ANK
+ Anfangszeile geaendert
+
+ Rev 1.8 11 Dec 1997 17:24:22 ANK
+ Erweiterungen fuer Tabellen-Control
+
+ Rev 1.7 04 Dec 1997 17:20:58 ANK
+ neue Controls
+
+ Rev 1.6 15 Jul 1997 17:20:50 ER
+ #41637# 3 Zeilen Preview im Ascii-Import Dialog
+
+ Rev 1.5 07 Jul 1997 17:18:26 NN
+ #41318# Spaltentyp/Preview auch bei Import mit Feldtrennern
+
+ Rev 1.4 26 Mar 1997 13:05:28 NN
+ ModifyHdl: Anpassung der benutzten Spalten richtig
+
+ Rev 1.3 29 Oct 1996 14:02:40 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.2 16 Sep 1996 20:05:00 NN
+ kein Semikolon in Options-String
+
+ Rev 1.1 05 Jun 1996 15:50:32 NN
+ ImportAsciiDlg
+
+ Rev 1.0 31 May 1996 19:30:02 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/dbgui/asciiopt.hrc b/sc/source/ui/dbgui/asciiopt.hrc
new file mode 100644
index 000000000000..caefbba9e6f5
--- /dev/null
+++ b/sc/source/ui/dbgui/asciiopt.hrc
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * $RCSfile: asciiopt.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#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 GB_SEPOPT 5
+#define FT_FIELDSEP 6
+#define CB_FIELDSEP 7
+#define FT_TEXTSEP 8
+#define CB_TEXTSEP 9
+#define GB_FIELDOPT 10
+#define FT_WIDTH 11
+#define FT_TYPE 12
+#define FT_PREVIEW 13
+#define FT_COL1 14
+#define FT_COL2 15
+#define FT_COL3 16
+#define FT_START1 17
+#define FT_START2 18
+#define FT_START3 19
+#define NF_END1 20
+#define NF_END2 21
+#define NF_END3 22
+#define LB_TYPE1 23
+#define LB_TYPE2 24
+#define LB_TYPE3 25
+#define FT_PREVIEW1 26
+#define FT_PREVIEW2 27
+#define FT_PREVIEW3 28
+#define SB_COLUMN 29
+#define GB_WIDTH 30
+#define BTN_OK 31
+#define BTN_CANCEL 32
+#define BTN_HELP 33
+#define STR_COL 34
+#define STR_TO 35
+#define SB_ROW 36
+#define CTR_TABLE 42
+#define CTR_RULER 43
+#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_NAME 57
+#define FT_FILE 58
+#define FT_AT_ROW 59
+#define NF_AT_ROW 60
+#define CB_ASONCE 90
diff --git a/sc/source/ui/dbgui/asciiopt.src b/sc/source/ui/dbgui/asciiopt.src
new file mode 100644
index 000000000000..48d5bc37a338
--- /dev/null
+++ b/sc/source/ui/dbgui/asciiopt.src
@@ -0,0 +1,652 @@
+/*************************************************************************
+ *
+ * $RCSfile: asciiopt.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "asciiopt.hrc"
+
+ModalDialog RID_SCDLG_ASCII
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 321 , 225 ) ;
+ Text = "Textimport" ;
+ Text [ ENGLISH ] = "Text import" ;
+ Text [ DANISH ] = "Tekstimport" ;
+ Text [ ENGLISH_US ] = "Text Import" ;
+ Text [ SPANISH ] = "Importar texto" ;
+ Text [ FRENCH ] = "Import de texte" ;
+ Text [ ITALIAN ] = "Importazione testo" ;
+ Text [ DUTCH ] = "Tekstimport" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Textimport" ;
+ Text [ SWEDISH ] = "Textimport" ;
+ Text [ PORTUGUESE ] = "Importar texto" ;
+ Moveable = TRUE ;
+ GroupBox GB_WIDTH
+ {
+ Pos = MAP_APPFONT ( 6 , 113 ) ;
+ Size = MAP_APPFONT ( 255 , 110 ) ;
+ Text = "Felder" ;
+ Text [ ENGLISH ] = "Field width" ;
+ Text [ DANISH ] = "Felter" ;
+ Text [ ENGLISH_US ] = "Fields" ;
+ Text [ SPANISH ] = "Campos" ;
+ Text [ FRENCH ] = "Champs" ;
+ Text [ ITALIAN ] = "Campi" ;
+ Text [ DUTCH ] = "Velden" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Feldbreite" ;
+ Text [ SWEDISH ] = "Fält" ;
+ Text [ PORTUGUESE ] = "Campos" ;
+ Text[ chinese_simplified ] = "×Ö¶Î";
+ Text[ russian ] = "Ïîëÿ";
+ Text[ polish ] = "Pola";
+ Text[ japanese ] = "̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "Äæ¦ì";
+ Text[ arabic ] = "ÍÞæá";
+ Text[ dutch ] = "Velden";
+ Text[ chinese_simplified ] = "×Ö¶Î";
+ Text[ greek ] = "Ðåäßá";
+ Text[ korean ] = "Çʵå";
+ Text[ turkish ] = "Alan";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_TYPE
+ {
+ Pos = MAP_APPFONT ( 148 , 124 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "T~yp" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ DANISH ] = "Type" ;
+ Text [ ENGLISH_US ] = "T~ype" ;
+ Text [ SPANISH ] = "T~ipo" ;
+ Text [ FRENCH ] = "Type" ;
+ Text [ ITALIAN ] = "Tipo" ;
+ Text [ DUTCH ] = "T~ype" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Typ" ;
+ Text [ SWEDISH ] = "T~yp" ;
+ Text [ PORTUGUESE ] = "Tipo" ;
+ Text[ chinese_simplified ] = "ÀàÐÍ(~Y)";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "À²Ìß(~Y)";
+ Text[ chinese_traditional ] = "Ãþ«¬(~Y)";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "T~ype";
+ Text[ chinese_simplified ] = "ÀàÐÍ(~Y)";
+ Text[ greek ] = "Ôý~ðïò";
+ Text[ korean ] = "ÇüÅÂ(~Y)";
+ Text[ turkish ] = "T~ip";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_TYPE1
+ {
+ Pos = MAP_APPFONT ( 190 , 121 ) ;
+ Size = MAP_APPFONT ( 57 , 68 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ GroupBox GB_SEPOPT
+ {
+ Pos = MAP_APPFONT ( 6 , 35 ) ;
+ Size = MAP_APPFONT ( 255 , 75 ) ;
+ Text = "Trennoptionen" ;
+ Text [ ENGLISH ] = "Field separation" ;
+ Text [ DANISH ] = "Separatorindstillinger" ;
+ Text [ ENGLISH_US ] = "Separator options" ;
+ Text [ SPANISH ] = "Opciones de separación" ;
+ Text [ FRENCH ] = "Options séparateur" ;
+ Text [ ITALIAN ] = "Opzioni di sillabazione" ;
+ Text [ DUTCH ] = "Afscheidingsopties" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Trennoptionen" ;
+ Text [ SWEDISH ] = "Delningsalternativ" ;
+ Text [ PORTUGUESE ] = "Opções de separação" ;
+ Text[ chinese_simplified ] = "·Ö¸ôÑ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû ðàçäåëèòåëÿ";
+ Text[ polish ] = "Opcje separatora";
+ Text[ japanese ] = "‹æØ‚è‚̵Ìß¼®Ý";
+ Text[ chinese_traditional ] = "¤À¹j¿ï¶µ";
+ Text[ arabic ] = "ÎÕÇÆÕ ÇáÝÕá";
+ Text[ dutch ] = "Afscheidingsopties";
+ Text[ chinese_simplified ] = "·Ö¸ôÑ¡Ïî";
+ Text[ greek ] = "ÅðéëïãÝò äéá÷ùñéóôéêïý";
+ Text[ korean ] = "±¸ºÐÀÚ ¿É¼Ç";
+ Text[ turkish ] = "Ayýrma iþa. seçenekleri";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_FIXED
+ {
+ Pos = MAP_APPFONT ( 12 , 46 ) ;
+ Size = MAP_APPFONT ( 62 , 10 ) ;
+ Text = "~Feste Breite" ;
+ Text [ ENGLISH ] = "Fixed width" ;
+ Text [ DANISH ] = "Fast bredde" ;
+ Text [ ENGLISH_US ] = "~Fixed width" ;
+ Text [ SPANISH ] = "Ancho ~fijo" ;
+ Text [ FRENCH ] = "Largeur fixe" ;
+ Text [ ITALIAN ] = "Larghezza fissa" ;
+ Text [ DUTCH ] = "~Vaste breedte" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Feste Breite" ;
+ Text [ SWEDISH ] = "~Fast bredd" ;
+ Text [ PORTUGUESE ] = "Largura fixa" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¹Ì¶¨µÄ¿í¶È(~F)";
+ Text[ russian ] = "Ôèêñ. øèðèíà";
+ Text[ polish ] = "Sta³a szerokoœæ";
+ Text[ japanese ] = "ŒÅ’è•(~F)";
+ Text[ chinese_traditional ] = "©T©wªº¼e«×(~F)";
+ Text[ arabic ] = "ÚÑÖ ËÇÈÊ";
+ Text[ dutch ] = "~Vaste breedte";
+ Text[ chinese_simplified ] = "¹Ì¶¨µÄ¿í¶È(~F)";
+ Text[ greek ] = "Óôáèåñü ðëÜôïò";
+ Text[ korean ] = "°íÁ¤µÈ ³Êºñ(~F)";
+ Text[ turkish ] = "~Sabit geniþlik";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_SEPARATED
+ {
+ Pos = MAP_APPFONT ( 12 , 58 ) ;
+ Size = MAP_APPFONT ( 62 , 10 ) ;
+ Text = "~Getrennt" ;
+ Text [ ENGLISH ] = "Separated" ;
+ Text [ DANISH ] = "Delt" ;
+ Text [ ENGLISH_US ] = "~Separated by" ;
+ Text [ SPANISH ] = "~Separado" ;
+ Text [ FRENCH ] = "Séparé" ;
+ Text [ ITALIAN ] = "Separato" ;
+ Text [ DUTCH ] = "~Gescheiden" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Getrennt" ;
+ Text [ SWEDISH ] = "Delad" ;
+ Text [ PORTUGUESE ] = "Separado" ;
+ TabStop = TRUE ;
+ Check = TRUE ;
+ Text[ chinese_simplified ] = "·Ö¸ô(~B)";
+ Text[ russian ] = "Ðàçäåëüíî";
+ Text[ polish ] = "Rozdzielony";
+ Text[ japanese ] = "•ª‚¯‚é(~B)";
+ Text[ chinese_traditional ] = "¤À¹j(~B)";
+ Text[ arabic ] = "ãÝÕæá";
+ Text[ dutch ] = "~Gescheiden";
+ Text[ chinese_simplified ] = "·Ö¸ô(~B)";
+ Text[ greek ] = "Äéá÷ùñéæüìåíá";
+ Text[ korean ] = "·Î ³ª´©±â(~S)";
+ Text[ turkish ] = "~Ayrý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_CHARSET
+ {
+ Pos = MAP_APPFONT ( 139 , 14 ) ;
+ Size = MAP_APPFONT ( 46 , 10 ) ;
+ Text = "Z~eichensatz" ;
+ Text [ ENGLISH ] = "Charset" ;
+ Text [ DANISH ] = "Tegnsæt" ;
+ Text [ ENGLISH_US ] = "C~haracter set" ;
+ Text [ SPANISH ] = "Juego de caracteres" ;
+ Text [ FRENCH ] = "Jeu de caractères" ;
+ Text [ ITALIAN ] = "Ti~po di carattere" ;
+ Text [ DUTCH ] = "~Tekenreeks" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Zeichensatz" ;
+ Text [ SWEDISH ] = "~Teckenuppsättning" ;
+ Text [ PORTUGUESE ] = "Tabela de caracteres" ;
+ Text[ chinese_simplified ] = "×ÖÌå(~H)";
+ Text[ russian ] = "Íàáîð çíàêîâ";
+ Text[ polish ] = "Zbiór znaków";
+ Text[ japanese ] = "•¶Žš—ñ(~H)";
+ Text[ chinese_traditional ] = "¦r«¬(~H)";
+ Text[ arabic ] = "ãÌãæÚÉ ÃÍÑÝ";
+ Text[ dutch ] = "~Tekenreeks";
+ Text[ chinese_simplified ] = "×ÖÌå(~H)";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "Ó~åô ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ ¼¼Æ®(~H)";
+ Text[ turkish ] = "~Karakter kümesi";
+ };
+ ListBox LB_CHARSET
+ {
+ Pos = MAP_APPFONT ( 186 , 13 ) ;
+ Size = MAP_APPFONT ( 65 , 61 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ GroupBox GB_FIELDOPT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 255 , 29 ) ;
+ Text = "Import" ;
+ Text [ ENGLISH ] = "Import" ;
+ Text [ english_us ] = "Import" ;
+ Text [ portuguese_brazilian ] = "Feldoptionen" ;
+ Text [ swedish ] = "Import" ;
+ Text [ danish ] = "Import" ;
+ Text [ italian ] = "Importa" ;
+ Text [ spanish ] = "Importación" ;
+ Text [ french ] = "Import" ;
+ Text [ dutch ] = "Import" ;
+ Text [ portuguese ] = "Importar" ;
+ Text[ chinese_simplified ] = "ÊäÈë";
+ Text[ russian ] = "Èìïîðò";
+ Text[ polish ] = "Import";
+ Text[ japanese ] = "²ÝÎß°Ä";
+ Text[ chinese_traditional ] = "¿é¤J";
+ Text[ arabic ] = "ÇÓÊíÑÇÏ";
+ Text[ dutch ] = "Import";
+ Text[ chinese_simplified ] = "ÊäÈë";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "°¡Á®¿À±â";
+ Text[ turkish ] = "Ýçe aktar";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_TEXTSEP
+ {
+ Pos = MAP_APPFONT ( 176 , 95 ) ;
+ Size = MAP_APPFONT ( 46 , 10 ) ;
+ Text = "Te~xttrenner" ;
+ Text [ ENGLISH ] = "Text Separator" ;
+ Text [ DANISH ] = "Tekstseparator" ;
+ Text [ ENGLISH_US ] = "Te~xt delimiter" ;
+ Text [ SPANISH ] = "Separador de te~xto" ;
+ Text [ FRENCH ] = "Séparateur de texte" ;
+ Text [ ITALIAN ] = "Separ. di testo" ;
+ Text [ DUTCH ] = "T~ekstafscheiding" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Texttrenner" ;
+ Text [ SWEDISH ] = "Te~xtavgränsare" ;
+ Text [ PORTUGUESE ] = "Separadores de texto" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö·Ö¸ô·û(~X)";
+ Text[ russian ] = "Ðàçäåëèòåëü òåêñòà";
+ Text[ polish ] = "Separator tekstu";
+ Text[ japanese ] = "÷½Ä‚Ì‹æØ‚è‹L†(~X)";
+ Text[ chinese_traditional ] = "¤å¦r¤À¹j²Å(~X)";
+ Text[ arabic ] = "ÝÇÕá ÇáäÕ";
+ Text[ dutch ] = "T~ekstafscheiding";
+ Text[ chinese_simplified ] = "ÎÄ×Ö·Ö¸ô·û(~X)";
+ Text[ greek ] = "Äéá÷ùñéóôéêü êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ±¸ºÐ ±âÈ£(~X)";
+ Text[ turkish ] = "Me~tin ayýrma iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox CB_TEXTSEP
+ {
+ Pos = MAP_APPFONT ( 222 , 93 ) ;
+ Size = MAP_APPFONT ( 25 , 94 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 267 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 267 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 267 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ String STR_COL
+ {
+ Text = "Spalte" ;
+ Text [ ENGLISH ] = "Column" ;
+ Text [ DANISH ] = "Kolonne" ;
+ Text [ ENGLISH_US ] = "Column" ;
+ Text [ SPANISH ] = "Columna" ;
+ Text [ FRENCH ] = "Colonne" ;
+ Text [ ITALIAN ] = "Colonna" ;
+ Text [ DUTCH ] = "Kolom" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Spalte" ;
+ Text [ SWEDISH ] = "Kolumn" ;
+ Text [ PORTUGUESE ] = "Coluna" ;
+ Text[ chinese_simplified ] = "ÁÐ";
+ Text[ russian ] = "Êîëîíêà";
+ Text[ polish ] = "Kolumna";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÚãæÏ";
+ Text[ dutch ] = "Kolom";
+ Text[ chinese_simplified ] = "ÁÐ";
+ Text[ greek ] = "ÓôÞëç";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TO
+ {
+ Text = "bis" ;
+ Text [ ENGLISH ] = "to" ;
+ Text [ DANISH ] = "til" ;
+ Text [ ENGLISH_US ] = "to" ;
+ Text [ SPANISH ] = "hasta" ;
+ Text [ FRENCH ] = "à" ;
+ Text [ ITALIAN ] = "fino a" ;
+ Text [ DUTCH ] = "tot" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "bis" ;
+ Text [ SWEDISH ] = "till" ;
+ Text [ PORTUGUESE ] = "até" ;
+ Text[ chinese_simplified ] = "ÖÁ";
+ Text[ russian ] = "äî";
+ Text[ polish ] = "do";
+ Text[ japanese ] = "I‚è‚Ìs";
+ Text[ chinese_traditional ] = "¦Ü";
+ Text[ arabic ] = "ÍÊì";
+ Text[ dutch ] = "tot";
+ Text[ chinese_simplified ] = "ÖÁ";
+ Text[ greek ] = "Ýùò";
+ Text[ korean ] = "¿¡";
+ Text[ turkish ] = "son";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CKB_TAB
+ {
+ Pos = MAP_APPFONT ( 30 , 69 ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "~Tabulator" ;
+ Text [ ENGLISH ] = "Tab" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Tab" ;
+ Text [ portuguese_brazilian ] = "~Tabulator" ;
+ Text [ swedish ] = "Tabu~lator" ;
+ Text [ danish ] = "Tabulator" ;
+ Text [ italian ] = "~Tabulazione" ;
+ Text [ spanish ] = "~Tabulación" ;
+ Text [ french ] = "~Tabulation" ;
+ Text [ dutch ] = "~Tabulator" ;
+ Text [ portuguese ] = "~Tabulação" ;
+ Text[ chinese_simplified ] = "ÖƱí·û(~T)";
+ Text[ russian ] = "Òàáóëÿòîð";
+ Text[ polish ] = "Tabulator";
+ Text[ japanese ] = "ÀÌÞ(~T)";
+ Text[ chinese_traditional ] = "»sªí²Å(~T)";
+ Text[ arabic ] = "ÚáÇãÉ ÌÏæáÉ";
+ Text[ dutch ] = "~Tabulator";
+ Text[ chinese_simplified ] = "ÖƱí·û(~T)";
+ Text[ greek ] = "ÓôçëïèÝôçò";
+ Text[ korean ] = "ÅÇ(~T)";
+ Text[ turkish ] = "~Sekme";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CKB_SEMICOLON
+ {
+ Pos = MAP_APPFONT ( 30 , 80 ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "~Semikolon" ;
+ Text [ ENGLISH ] = "Semicolon" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "S~emicolon" ;
+ Text [ portuguese_brazilian ] = "~Semikolon" ;
+ Text [ swedish ] = "~Semikolon" ;
+ Text [ danish ] = "Semikolon" ;
+ Text [ italian ] = "~Punto e virgola" ;
+ Text [ spanish ] = "~Punto y coma" ;
+ Text [ french ] = "~Point-virgule" ;
+ Text [ dutch ] = "~Puntkomma" ;
+ Text [ portuguese ] = "~Ponto e vírgula" ;
+ Text[ chinese_simplified ] = "·ÖºÅ(~S)";
+ Text[ russian ] = "Òî÷êà ñ çàïÿòîé";
+ Text[ polish ] = "Œrednik";
+ Text[ japanese ] = "¾ÐºÛÝ(~S)";
+ Text[ chinese_traditional ] = "¤À¸¹(~S)";
+ Text[ arabic ] = "ÝÇÕáÉ ãäÞæØÉ";
+ Text[ dutch ] = "~Puntkomma";
+ Text[ chinese_simplified ] = "·ÖºÅ(~S)";
+ Text[ greek ] = "¢íù ôåëåßá";
+ Text[ korean ] = "¼¼¹ÌÄÝ·Ð(~E)";
+ Text[ turkish ] = "~Noktalý virgül";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CKB_COMMA
+ {
+ Pos = MAP_APPFONT ( 109 , 69 ) ;
+ Size = MAP_APPFONT ( 62 , 10 ) ;
+ Text = "~Komma" ;
+ Text [ ENGLISH ] = "Tab" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Comma" ;
+ Text [ portuguese_brazilian ] = "~Komma" ;
+ Text [ swedish ] = "~Komma" ;
+ Text [ danish ] = "Komma" ;
+ Text [ italian ] = "~Virgola" ;
+ Text [ spanish ] = "Co~ma" ;
+ Text [ french ] = "~Virgule" ;
+ Text [ dutch ] = "~Komma" ;
+ Text [ portuguese ] = "~Vírgula" ;
+ Text[ chinese_simplified ] = "¶ººÅ(~C)";
+ Text[ russian ] = "Çàïÿòàÿ";
+ Text[ polish ] = "Przecin~ek";
+ Text[ japanese ] = "ºÝÏ(~C)";
+ Text[ chinese_traditional ] = "³r¸¹(~C)";
+ Text[ arabic ] = "ÝÇÕáÉ";
+ Text[ dutch ] = "~Komma";
+ Text[ chinese_simplified ] = "¶ººÅ(~C)";
+ Text[ greek ] = "Êüììá";
+ Text[ korean ] = "ÄÞ¸¶(~C)";
+ Text[ turkish ] = "~Virgül";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CKB_SPACE
+ {
+ Pos = MAP_APPFONT ( 109 , 80 ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "~Leerzeichen" ;
+ Text [ ENGLISH ] = "Space" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "S~pace" ;
+ Text [ portuguese_brazilian ] = "~Leerzeichen" ;
+ Text [ swedish ] = "~Blanksteg" ;
+ Text [ danish ] = "Mellemrum" ;
+ Text [ italian ] = "~Spazio" ;
+ Text [ spanish ] = "~Espacio" ;
+ Text [ french ] = "~Espace" ;
+ Text [ dutch ] = "~Spatie" ;
+ Text [ portuguese ] = "~Espaço" ;
+ Text[ chinese_simplified ] = "¿Õ¸ñ(~P)";
+ Text[ russian ] = "Ïðîáåë";
+ Text[ polish ] = "Spacja";
+ Text[ japanese ] = "½Íß°½(~P)";
+ Text[ chinese_traditional ] = "ªÅ®æ(~P)";
+ Text[ arabic ] = "ÍÑÝ ãÓÇÝÉ";
+ Text[ dutch ] = "~Spatie";
+ Text[ chinese_simplified ] = "¿Õ¸ñ(~P)";
+ Text[ greek ] = "Êåíü";
+ Text[ korean ] = "°ø¹é(~P)";
+ Text[ turkish ] = "B~oþluk";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CKB_OTHER
+ {
+ Pos = MAP_APPFONT ( 180 , 69 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Andere" ;
+ Text [ ENGLISH ] = "Other" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Other" ;
+ Text [ portuguese_brazilian ] = "~Andere" ;
+ Text [ swedish ] = "~Andra" ;
+ Text [ danish ] = "~Andre" ;
+ Text [ italian ] = "~Altri" ;
+ Text [ spanish ] = "~Otros" ;
+ Text [ french ] = "~Autres" ;
+ Text [ dutch ] = "~Andere" ;
+ Text [ portuguese ] = "~Outros" ;
+ Text[ chinese_simplified ] = "ÆäËû(~O)";
+ Text[ russian ] = "Äðóãèå";
+ Text[ polish ] = "Inne";
+ Text[ japanese ] = "‚»‚Ì‘¼(~O)";
+ Text[ chinese_traditional ] = "¨ä¥L(~O)";
+ Text[ arabic ] = "ÛíÑ Ðáß";
+ Text[ dutch ] = "~Andere";
+ Text[ chinese_simplified ] = "ÆäËû(~O)";
+ Text[ greek ] = "¢ëëá";
+ Text[ korean ] = "±âŸ(~O)";
+ Text[ turkish ] = "~Diðer";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_OTHER
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 222 , 68 ) ;
+ Size = MAP_APPFONT ( 14 , 10 ) ;
+ TabStop = TRUE ;
+ MaxTextLength = 1 ;
+ };
+ FixedText FT_AT_ROW
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 43 , 10 ) ;
+ Text = "Ab ~Zeile" ;
+ Text [ ENGLISH ] = "At Row" ;
+ Text [ english_us ] = "From ro~w" ;
+ Text [ portuguese_brazilian ] = "Ab ~Zeile" ;
+ Text [ swedish ] = "Från ~rad" ;
+ Text [ danish ] = "Fra række" ;
+ Text [ italian ] = "Dalla ~riga" ;
+ Text [ spanish ] = "A partir de ~línea" ;
+ Text [ french ] = "A partir de la ~ligne" ;
+ Text [ dutch ] = "Vanaf ~rij" ;
+ Text [ portuguese ] = "A partir da ~linha" ;
+ Text[ chinese_simplified ] = "¿ªÊ¼µÄÐÐÊý(~W)";
+ Text[ russian ] = "Ñî ñòðîêè";
+ Text[ polish ] = "Od wiersza";
+ Text[ japanese ] = "Žn‚ß‚Ìs(~W)";
+ Text[ chinese_traditional ] = "¶}©lªº¦C¼Æ(~W)";
+ Text[ arabic ] = "ÈÏÇíÉ ãä ÇáÕÝ";
+ Text[ dutch ] = "Vanaf ~rij";
+ Text[ chinese_simplified ] = "¿ªÊ¼µÄÐÐÊý(~W)";
+ Text[ greek ] = "Áðü ãñáììÞ";
+ Text[ korean ] = "ÇàÀ¸·Î ºÎÅÍ(~W)";
+ Text[ turkish ] = "Ýlk sa~týr";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField NF_AT_ROW
+ {
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 56 , 13 ) ;
+ Size = MAP_APPFONT ( 25 , 12 ) ;
+ TabStop = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 32000 ;
+ };
+ Control CTR_TABLE
+ {
+ HelpId = HID_SC_ASCII_TABCTR ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 141 ) ;
+ Size = MAP_APPFONT ( 235 , 68 ) ;
+ };
+ ScrollBar SB_COLUMN
+ {
+ Pos = MAP_APPFONT ( 12 , 210 ) ;
+ Size = MAP_APPFONT ( 235 , 9 ) ;
+ HScroll = TRUE ;
+ };
+ ScrollBar SB_ROW
+ {
+ Pos = MAP_APPFONT ( 247 , 150 ) ;
+ Size = MAP_APPFONT ( 10 , 59 ) ;
+ VScroll = TRUE ;
+ };
+ CheckBox CB_ASONCE
+ {
+ Pos = MAP_APPFONT ( 30 , 95 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ Text = "Fel~dtrenner zusammenfassen" ;
+ Text [ ENGLISH ] = "Treat delimiters as one" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Compressed ~display" ;
+ Text [ portuguese_brazilian ] = "Fel~dtrenner zusammenfassen" ;
+ Text [ swedish ] = "Sammanfatta f~ältdelare" ;
+ Text [ danish ] = "Kombiner feltseparatorer" ;
+ Text [ italian ] = "Raggruppa i separatori di campo" ;
+ Text [ spanish ] = "Reagrupar los ~separadores de campo" ;
+ Text [ french ] = "~Regrouper séparateurs de champ" ;
+ Text [ dutch ] = "Vel~dscheidingstekens samenvatten" ;
+ Text [ portuguese ] = "Agrupar ~separadores de campos" ;
+ Text[ chinese_simplified ] = "ѹËõÏÔʾ(~D)";
+ Text[ russian ] = "Îáúåäèíèòü ðàçäåëèòåëè ïîëÿ";
+ Text[ polish ] = "Kompresuj separatory pola";
+ Text[ japanese ] = "̨°ÙÄÞ‹æØ‚è‚ÌŒ‹‡(~D)";
+ Text[ chinese_traditional ] = "À£ÁYÅã¥Ü(~D)";
+ Text[ arabic ] = "Öã ÝæÇÕá ÇáÍÞæá";
+ Text[ dutch ] = "Vel~dscheidingstekens samenvatten";
+ Text[ chinese_simplified ] = "ѹËõÏÔʾ(~D)";
+ Text[ greek ] = "Óýíïøç äéá÷ùñéóôéêþí ðåäßùí";
+ Text[ korean ] = "Çʵ屸ºÐ¼± ¾ÐÃà(~D)";
+ Text[ turkish ] = "Ay~ýrma iþaretlerini özetle";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "ÊäÈëÎÄ×Ö";
+ Text[ russian ] = "Èìïîðò òåêñòà";
+ Text[ polish ] = "Import tekstu";
+ Text[ japanese ] = "÷½Ä‚̲ÝÎß°Ä";
+ Text[ chinese_traditional ] = "¿é¤J¤å¦r";
+ Text[ arabic ] = "ÇÓÊíÑÇÏ äÕ";
+ Text[ dutch ] = "Tekstimport";
+ Text[ chinese_simplified ] = "ÊäÈëÎÄ×Ö";
+ Text[ greek ] = "ÅéóáãùãÞ êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® °¡Á®¿À±â";
+ Text[ turkish ] = "Ýçe aktar (metin)";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/dbgui/consdlg.cxx b/sc/source/ui/dbgui/consdlg.cxx
new file mode 100644
index 000000000000..9a4b3d3caea7
--- /dev/null
+++ b/sc/source/ui/dbgui/consdlg.cxx
@@ -0,0 +1,693 @@
+/*************************************************************************
+ *
+ * $RCSfile: consdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes ---------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+#include <sfx2/dispatch.hxx>
+
+
+// INCLUDE -------------------------------------------------------------------
+
+#include "tabvwsh.hxx"
+#include "uiitems.hxx"
+#include "dbcolect.hxx"
+#include "rangenam.hxx"
+#include "rangeutl.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+//#include "tabvwsh.hxx"
+//#include "viewdata.hxx"
+#include "scresid.hxx"
+
+#include "globstr.hrc"
+#include "consdlg.hrc"
+
+#define _CONSDLG_CXX
+#include "consdlg.hxx"
+#undef _CONSDLG_CXX
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+
+#define INFOBOX(id) InfoBox(this, ScGlobal::GetRscString(id)).Execute()
+
+SEG_EOFGLOBALS()
+
+
+//============================================================================
+// class ScAreaData
+
+class ScAreaData
+{
+public:
+ ScAreaData() {}
+ ~ScAreaData() {}
+
+ void Set( const String& rName, const String& rArea, BOOL bDb )
+ {
+ aStrName = rName;
+ aStrArea = rArea;
+ bIsDbArea = bDb;
+ }
+
+ String aStrName;
+ String aStrArea;
+ BOOL bIsDbArea;
+};
+
+
+//============================================================================
+// class ScConsolidateDialog
+
+
+ScConsolidateDlg::ScConsolidateDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ const SfxItemSet& rArgSet )
+
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_CONSOLIDATE ),
+ //
+ aFtFunc ( this, ScResId( FT_FUNC ) ),
+ aLbFunc ( this, ScResId( LB_FUNC ) ),
+
+ aFtConsAreas ( this, ScResId( FT_CONSAREAS ) ),
+ aLbConsAreas ( this, ScResId( LB_CONSAREAS ) ),
+
+ aFtDataArea ( this, ScResId( FT_DATA_AREA ) ),
+ aLbDataArea ( this, ScResId( LB_DATA_AREA ) ),
+ aEdDataArea ( this, ScResId( ED_DATA_AREA ) ),
+ aRbDataArea ( this, ScResId( RB_DATA_AREA ), &aEdDataArea ),
+
+ aFtDestArea ( this, ScResId( FT_DEST_AREA ) ),
+ aLbDestArea ( this, ScResId( LB_DEST_AREA ) ),
+ aEdDestArea ( this, ScResId( ED_DEST_AREA ) ),
+ aRbDestArea ( this, ScResId( RB_DEST_AREA ), &aEdDestArea ),
+
+ aBtnByRow ( this, ScResId( BTN_BYROW ) ),
+ aBtnByCol ( this, ScResId( BTN_BYCOL) ),
+
+ aGbConsBy ( this, ScResId( GB_CONSBY ) ),
+ aBtnRefs ( this, ScResId( BTN_REFS ) ),
+
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnMore ( this, ScResId( BTN_MORE ) ),
+ aBtnAdd ( this, ScResId( BTN_ADD ) ),
+ aBtnRemove ( this, ScResId( BTN_REMOVE ) ),
+
+ aStrUndefined ( ScResId( SCSTR_UNDEFINED ) ),
+ //
+ nWhichCons ( rArgSet.GetPool()->GetWhich( SID_CONSOLIDATE ) ),
+ theConsData ( ((const ScConsolidateItem&)
+ rArgSet.Get( rArgSet.GetPool()->
+ GetWhich( SID_CONSOLIDATE ) )
+ ).GetData() ),
+
+ pViewData ( ((ScTabViewShell*)SfxViewShell::Current())->
+ GetViewData() ),
+ pDoc ( ((ScTabViewShell*)SfxViewShell::Current())->
+ GetViewData()->GetDocument() ),
+ pRangeUtil ( new ScRangeUtil ),
+ pAreaData ( NULL ),
+ nAreaDataCount ( 0 ),
+ pRefInputEdit ( &aEdDataArea )
+{
+ Init();
+ FreeResource();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScConsolidateDlg::~ScConsolidateDlg()
+{
+ delete [] pAreaData;
+ delete pRangeUtil;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScConsolidateDlg::Init()
+{
+ DBG_ASSERT( pViewData && pDoc && pRangeUtil, "Error in Ctor" );
+
+ ScArea aArea;
+ String aStr;
+ USHORT i=0;
+
+ aEdDataArea .SetGetFocusHdl( LINK( this, ScConsolidateDlg, GetFocusHdl ) );
+ aEdDestArea .SetGetFocusHdl( LINK( this, ScConsolidateDlg, GetFocusHdl ) );
+ aLbDataArea .SetGetFocusHdl( LINK( this, ScConsolidateDlg, GetFocusHdl ) );
+ aLbDestArea .SetGetFocusHdl( LINK( this, ScConsolidateDlg, GetFocusHdl ) );
+ aEdDataArea .SetModifyHdl ( LINK( this, ScConsolidateDlg, ModifyHdl ) );
+ aEdDestArea .SetModifyHdl ( LINK( this, ScConsolidateDlg, ModifyHdl ) );
+ aLbConsAreas.SetSelectHdl ( LINK( this, ScConsolidateDlg, SelectHdl ) );
+ aLbDataArea .SetSelectHdl ( LINK( this, ScConsolidateDlg, SelectHdl ) );
+ aLbDestArea .SetSelectHdl ( LINK( this, ScConsolidateDlg, SelectHdl ) );
+ aBtnOk .SetClickHdl ( LINK( this, ScConsolidateDlg, OkHdl ) );
+ aBtnCancel .SetClickHdl ( LINK( this, ScConsolidateDlg, ClickHdl ) );
+ aBtnAdd .SetClickHdl ( LINK( this, ScConsolidateDlg, ClickHdl ) );
+ aBtnRemove .SetClickHdl ( LINK( this, ScConsolidateDlg, ClickHdl ) );
+
+ aBtnMore.AddWindow( &aGbConsBy );
+ aBtnMore.AddWindow( &aBtnByRow );
+ aBtnMore.AddWindow( &aBtnByCol );
+ aBtnMore.AddWindow( &aBtnRefs );
+
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+
+ aBtnByRow.Check( theConsData.bByRow );
+ aBtnByCol.Check( theConsData.bByCol );
+ aBtnRefs .Check( theConsData.bReferenceData );
+
+ aLbFunc.SelectEntryPos( FuncToLbPos( theConsData.eFunction ) );
+
+ // Einlesen der Konsolidierungsbereiche
+ aLbConsAreas.Clear();
+ for ( i=0; i<theConsData.nDataAreaCount; i++ )
+ {
+ aArea = *(theConsData.ppDataAreas[i] );
+ if ( aArea.nTab < pDoc->GetTableCount() )
+ {
+ pRangeUtil->MakeAreaString( aArea, aStr, pDoc );
+ aLbConsAreas.InsertEntry( aStr );
+ }
+ }
+
+ if ( theConsData.nTab < pDoc->GetTableCount() )
+ aEdDestArea.SetText( ScRefTripel( theConsData.nCol,
+ theConsData.nRow,
+ theConsData.nTab,
+ FALSE, FALSE, FALSE ).
+ GetRefString( pDoc, MAXTAB+1 ) );
+ else
+ aEdDestArea.SetText( EMPTY_STRING );
+
+ //----------------------------------------------------------
+
+ /*
+ * Aus den RangeNames und Datenbankbereichen werden sich
+ * in der Hilfsklasse ScAreaData die Bereichsnamen gemerkt,
+ * die in den ListBoxen erscheinen.
+ */
+
+ ScRangeName* pRangeNames = pDoc->GetRangeName();
+ ScDBCollection* pDbNames = pDoc->GetDBCollection();
+ const USHORT nRangeCount = pRangeNames ? pRangeNames->GetCount() : 0;
+ const USHORT nDbCount = pDbNames ? pDbNames ->GetCount() : 0;
+
+ nAreaDataCount = nRangeCount+nDbCount;
+ pAreaData = NULL;
+
+ if ( nAreaDataCount > 0 )
+ {
+ pAreaData = new ScAreaData[nAreaDataCount];
+
+ String aStrName;
+ String aStrArea;
+ USHORT nAt = 0;
+ ScRange aRange;
+ ScAreaNameIterator aIter( pDoc );
+ while ( aIter.Next( aStrName, aRange ) )
+ {
+ aRange.Format( aStrArea, SCA_ABS_3D, pDoc );
+ pAreaData[nAt++].Set( aStrName, aStrArea, aIter.WasDBName() );
+ }
+ }
+
+ FillAreaLists();
+ ModifyHdl( &aEdDestArea );
+ aLbDataArea.SelectEntryPos( 0 );
+ aEdDataArea.SetText( EMPTY_STRING );
+ aEdDataArea.GrabFocus();
+
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+}
+
+
+//----------------------------------------------------------------------------
+void ScConsolidateDlg::FillAreaLists()
+{
+ aLbDataArea.Clear();
+ aLbDestArea.Clear();
+ aLbDataArea.InsertEntry( aStrUndefined );
+ aLbDestArea.InsertEntry( aStrUndefined );
+
+ if ( pRangeUtil && pAreaData && (nAreaDataCount > 0) )
+ {
+ String aString;
+
+ for ( USHORT i=0;
+ (i<nAreaDataCount) && (pAreaData[i].aStrName.Len()>0);
+ i++ )
+ {
+ aLbDataArea.InsertEntry( pAreaData[i].aStrName, i+1 );
+
+// if ( !pAreaData[i].bIsDbArea )
+ aLbDestArea.InsertEntry( pAreaData[i].aStrName, i+1 );
+ }
+ }
+}
+
+
+//----------------------------------------------------------------------------
+// Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als
+// neue Selektion im Referenz-Fenster angezeigt wird.
+
+
+void ScConsolidateDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( pRefInputEdit )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart( pRefInputEdit );
+
+ String aStr;
+ USHORT nFmt = SCR_ABS_3D; //!!! nCurTab fehlt noch
+
+ if ( rRef.aStart.Tab() != rRef.aEnd.Tab() )
+ nFmt |= SCA_TAB2_3D;
+
+ if ( pRefInputEdit == &aEdDataArea)
+ rRef.Format( aStr, nFmt, pDoc );
+ else if ( pRefInputEdit == &aEdDestArea )
+ rRef.aStart.Format( aStr, nFmt, pDoc );
+
+ pRefInputEdit->SetRefString( aStr );
+ }
+
+ ModifyHdl( pRefInputEdit );
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScConsolidateDlg::Close()
+{
+ return DoClose( ScConsolidateDlgWrapper::GetChildWindowId() );
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScConsolidateDlg::SetActive()
+{
+ if ( bDlgLostFocus )
+ {
+ bDlgLostFocus = FALSE;
+
+ if ( pRefInputEdit )
+ {
+ pRefInputEdit->GrabFocus();
+ ModifyHdl( pRefInputEdit );
+ }
+ }
+ else
+ GrabFocus();
+
+ RefInputDone();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScConsolidateDlg::Deactivate()
+{
+ bDlgLostFocus = TRUE;
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScConsolidateDlg::VerifyEdit( ScRefEdit* pEd )
+{
+ if ( !pRangeUtil || !pDoc || !pViewData ||
+ ((pEd != &aEdDataArea) && (pEd != &aEdDestArea)) )
+ return FALSE;
+
+ USHORT nTab = pViewData->GetTabNo();
+ BOOL bEditOk = FALSE;
+ String theCompleteStr;
+
+ if ( pEd == &aEdDataArea )
+ {
+ bEditOk = pRangeUtil->IsAbsArea( pEd->GetText(), pDoc,
+ nTab, &theCompleteStr );
+ }
+ else if ( pEd == &aEdDestArea )
+ {
+ String aPosStr;
+
+ pRangeUtil->CutPosString( pEd->GetText(), aPosStr );
+ bEditOk = pRangeUtil->IsAbsPos( aPosStr, pDoc,
+ nTab, &theCompleteStr );
+ }
+
+ if ( bEditOk )
+ pEd->SetText( theCompleteStr );
+
+ return bEditOk;
+}
+
+
+//----------------------------------------------------------------------------
+// Handler:
+// ========
+
+IMPL_LINK( ScConsolidateDlg, GetFocusHdl, Control*, pCtr )
+{
+ if ( pCtr ==(Control*)&aEdDataArea ||
+ pCtr ==(Control*)&aEdDestArea)
+ {
+ pRefInputEdit = (ScRefEdit*)pCtr;
+ }
+ else if(pCtr ==(Control*)&aLbDataArea )
+ {
+ pRefInputEdit = &aEdDataArea;
+ }
+ else if(pCtr ==(Control*)&aLbDestArea )
+ {
+ pRefInputEdit = &aEdDestArea;
+ }
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScConsolidateDlg, OkHdl, void*, p )
+{
+ USHORT nDataAreaCount = aLbConsAreas.GetEntryCount();
+
+ if ( nDataAreaCount > 0 )
+ {
+ ScRefTripel aDestTripel;
+ USHORT nTab = pViewData->GetTabNo();
+ String aDestPosStr( aEdDestArea.GetText() );
+
+ if ( pRangeUtil->IsAbsPos( aDestPosStr, pDoc, nTab, NULL, &aDestTripel ) )
+ {
+ ScConsolidateParam theOutParam( theConsData );
+ ScArea** ppDataAreas = new ScArea*[nDataAreaCount];
+ ScArea* pArea;
+ USHORT i=0;
+
+ for ( i=0; i<nDataAreaCount; i++ )
+ {
+ pArea = new ScArea;
+ pRangeUtil->MakeArea( aLbConsAreas.GetEntry( i ),
+ *pArea, pDoc, nTab );
+ ppDataAreas[i] = pArea;
+ }
+
+ theOutParam.nCol = aDestTripel.GetCol();
+ theOutParam.nRow = aDestTripel.GetRow();
+ theOutParam.nTab = aDestTripel.GetTab();
+ theOutParam.eFunction = LbPosToFunc( aLbFunc.GetSelectEntryPos() );
+ theOutParam.bByCol = aBtnByCol.IsChecked();
+ theOutParam.bByRow = aBtnByRow.IsChecked();
+ theOutParam.bReferenceData = aBtnRefs.IsChecked();
+ theOutParam.SetAreas( ppDataAreas, nDataAreaCount );
+
+ for ( i=0; i<nDataAreaCount; i++ )
+ delete ppDataAreas[i];
+ delete [] ppDataAreas;
+
+ ScConsolidateItem aOutItem( nWhichCons, &theOutParam );
+
+ SFX_APP()->LockDispatcher( FALSE );
+ SwitchToDocument();
+ SFX_DISPATCHER().Execute( SID_CONSOLIDATE, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aOutItem, 0L, 0L );
+ Close();
+ }
+ else
+ {
+ INFOBOX( STR_INVALID_TABREF );
+ aEdDestArea.GrabFocus();
+ }
+ }
+ else
+ Close(); // keine Datenbereiche definiert -> Cancel
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScConsolidateDlg, ClickHdl, PushButton*, pBtn )
+{
+ if ( pBtn == &aBtnCancel )
+ Close();
+ else if ( pBtn == &aBtnAdd )
+ {
+ if ( aEdDataArea.GetText().Len() > 0 )
+ {
+ String aNewEntry( aEdDataArea.GetText() );
+ ScArea** ppAreas = NULL;
+ USHORT nAreaCount = 0;
+
+ if ( pRangeUtil->IsAbsTabArea( aNewEntry, pDoc, &ppAreas, &nAreaCount ) )
+ {
+ // IsAbsTabArea() legt ein Array von ScArea-Zeigern an,
+ // welche ebenfalls dynamisch erzeugt wurden.
+ // Diese Objekte muessen hier abgeraeumt werden.
+
+ for ( USHORT i=0; i<nAreaCount; i++ )
+ {
+ String aNewArea;
+
+ if ( ppAreas[i] )
+ {
+ pRangeUtil->MakeAreaString( *(ppAreas[i]),
+ aNewArea,
+ pDoc );
+
+ if ( aLbConsAreas.GetEntryPos( aNewArea )
+ == LISTBOX_ENTRY_NOTFOUND )
+ {
+ aLbConsAreas.InsertEntry( aNewArea );
+ }
+ delete ppAreas[i];
+ }
+ }
+ delete [] ppAreas;
+ }
+ else if ( VerifyEdit( &aEdDataArea ) )
+ {
+ String aNewArea( aEdDataArea.GetText() );
+
+ if ( aLbConsAreas.GetEntryPos( aNewArea ) == LISTBOX_ENTRY_NOTFOUND )
+ aLbConsAreas.InsertEntry( aNewArea );
+ else
+ INFOBOX( STR_AREA_ALREADY_INSERTED );
+ }
+ else
+ {
+ INFOBOX( STR_INVALID_TABREF );
+ aEdDataArea.GrabFocus();
+ }
+ }
+ }
+ else if ( pBtn == &aBtnRemove )
+ {
+ while ( aLbConsAreas.GetSelectEntryCount() )
+ aLbConsAreas.RemoveEntry( aLbConsAreas.GetSelectEntryPos() );
+ aBtnRemove.Disable();
+ }
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScConsolidateDlg, SelectHdl, ListBox*, pLb )
+{
+ if ( pLb == &aLbConsAreas )
+ {
+ if ( aLbConsAreas.GetSelectEntryCount() > 0 )
+ aBtnRemove.Enable();
+ else
+ aBtnRemove.Disable();
+ }
+ else if ( (pLb == &aLbDataArea) || (pLb == &aLbDestArea) )
+ {
+ Edit* pEd = (pLb == &aLbDataArea) ? &aEdDataArea : &aEdDestArea;
+ USHORT nSelPos = pLb->GetSelectEntryPos();
+
+ if ( pRangeUtil
+ && (nSelPos > 0)
+ && (nAreaDataCount > 0)
+ && (pAreaData != NULL) )
+ {
+ if ( nSelPos <= nAreaDataCount )
+ {
+ String aString( pAreaData[nSelPos-1].aStrArea );
+
+ if ( pLb == &aLbDestArea )
+ pRangeUtil->CutPosString( aString, aString );
+
+ pEd->SetText( aString );
+
+ if ( pEd == &aEdDataArea )
+ aBtnAdd.Enable();
+ }
+ }
+ else
+ {
+ pEd->SetText( EMPTY_STRING );
+ if ( pEd == &aEdDataArea )
+ aBtnAdd.Enable();
+ }
+ }
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScConsolidateDlg, ModifyHdl, ScRefEdit*, pEd )
+{
+ if ( pEd == &aEdDataArea )
+ {
+ String aAreaStr( pEd->GetText() );
+ if ( aAreaStr.Len() > 0 )
+ {
+ aBtnAdd.Enable();
+ }
+ else
+ aBtnAdd.Disable();
+ }
+ else if ( pEd == &aEdDestArea )
+ {
+ aLbDestArea.SelectEntryPos(0);
+ }
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+// Verallgemeinern!!! :
+// Resource der ListBox und diese beiden Umrechnungsmethoden gibt es
+// auch noch in tpsubt bzw. ueberall, wo StarCalc-Funktionen
+// auswaehlbar sind.
+
+ScSubTotalFunc ScConsolidateDlg::LbPosToFunc( USHORT nPos )
+{
+ switch ( nPos )
+ {
+ case 2: return SUBTOTAL_FUNC_AVE;
+ case 6: return SUBTOTAL_FUNC_CNT;
+ case 1: return SUBTOTAL_FUNC_CNT2;
+ case 3: return SUBTOTAL_FUNC_MAX;
+ case 4: return SUBTOTAL_FUNC_MIN;
+ case 5: return SUBTOTAL_FUNC_PROD;
+ case 7: return SUBTOTAL_FUNC_STD;
+ case 8: return SUBTOTAL_FUNC_STDP;
+ case 9: return SUBTOTAL_FUNC_VAR;
+ case 10: return SUBTOTAL_FUNC_VARP;
+ case 0:
+ default:
+ return SUBTOTAL_FUNC_SUM;
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+USHORT ScConsolidateDlg::FuncToLbPos( ScSubTotalFunc eFunc )
+{
+ switch ( eFunc )
+ {
+ case SUBTOTAL_FUNC_AVE: return 2;
+ case SUBTOTAL_FUNC_CNT: return 6;
+ case SUBTOTAL_FUNC_CNT2: return 1;
+ case SUBTOTAL_FUNC_MAX: return 3;
+ case SUBTOTAL_FUNC_MIN: return 4;
+ case SUBTOTAL_FUNC_PROD: return 5;
+ case SUBTOTAL_FUNC_STD: return 7;
+ case SUBTOTAL_FUNC_STDP: return 8;
+ case SUBTOTAL_FUNC_VAR: return 9;
+ case SUBTOTAL_FUNC_VARP: return 10;
+ case SUBTOTAL_FUNC_NONE:
+ case SUBTOTAL_FUNC_SUM:
+ default:
+ return 0;
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/dbgui/consdlg.hrc b/sc/source/ui/dbgui/consdlg.hrc
new file mode 100644
index 000000000000..2350cca5c975
--- /dev/null
+++ b/sc/source/ui/dbgui/consdlg.hrc
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * $RCSfile: consdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define BTN_MORE 1
+
+#define BTN_ADD 1
+#define BTN_REMOVE 2
+
+#define FT_FUNC 1
+#define LB_FUNC 1
+
+#define FT_CONSAREAS 2
+#define LB_CONSAREAS 2
+
+#define FT_DATA_AREA 3
+#define LB_DATA_AREA 3
+#define ED_DATA_AREA 3
+#define RB_DATA_AREA 3
+
+#define FT_DEST_AREA 4
+#define LB_DEST_AREA 4
+#define ED_DEST_AREA 4
+#define RB_DEST_AREA 4
+
+#define BTN_BYROW 1
+#define BTN_BYCOL 2
+#define BTN_REFS 3
+#define GB_CONSBY 1
+
diff --git a/sc/source/ui/dbgui/consdlg.src b/sc/source/ui/dbgui/consdlg.src
new file mode 100644
index 000000000000..3f0eb500e0a0
--- /dev/null
+++ b/sc/source/ui/dbgui/consdlg.src
@@ -0,0 +1,848 @@
+/*************************************************************************
+ *
+ * $RCSfile: consdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "consdlg.hrc"
+ModelessDialog RID_SCDLG_CONSOLIDATE
+{
+ OutputSize = TRUE ;
+ HelpId = SID_OPENDLG_CONSOLIDATE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 280 , 154 ) ;
+ Text = "Konsolidieren" ;
+ Text [ ENGLISH ] = "Consolidate" ;
+ Text [ norwegian ] = "Konsolider" ;
+ Text [ italian ] = "Consolida" ;
+ Text [ portuguese_brazilian ] = "Consolidar" ;
+ Text [ portuguese ] = "Consolidar" ;
+ Text [ finnish ] = "Kokoa" ;
+ Text [ danish ] = "Konsolider" ;
+ Text [ french ] = "Consolider" ;
+ Text [ swedish ] = "Konsolidera" ;
+ Text [ dutch ] = "Consolideren" ;
+ Text [ spanish ] = "Consolidar" ;
+ Text [ english_us ] = "Consolidate" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ ListBox LB_FUNC
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 15 ) ;
+ Size = MAP_APPFONT ( 209 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 7 : Anzahl (nur Zahlen)*/
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Somma" ; Default ; > ;
+ < "Numero" ; Default ; > ;
+ < "Media" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Prodotto" ; Default ; > ;
+ < "Numero (solo numeri)" ; Default ; > ;
+ < "DevSt (campione)" ; Default ; > ;
+ < "DevStP (popolazione)" ; Default ; > ;
+ < "Varianza (campione)" ; Default ; > ;
+ < "VarP (popolazione)" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl2 (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "VarP" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Total" ; Default ; > ;
+ < "Contar" ; Default ; > ;
+ < "Valor médio" ; Default ; > ;
+ < "Máx." ; Default ; > ;
+ < "Min." ; Default ; > ;
+ < "Produto" ; Default ; > ;
+ < "Contar (só números)" ; Default ; > ;
+ < "DesvPad (amostra)" ; Default ; > ;
+ < "DesvPadN (população)" ; Default ; > ;
+ < "Variância (amostra)" ; Default ; > ;
+ < "Variância P (população)" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Sum" ; Default ; > ;
+ < "Antal" ; Default ; > ;
+ < "Middel" ; Default ; > ;
+ < "Maks" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Antal (kun tal)" ; Default ; > ;
+ < "Stdafv (stikprøve)" ; Default ; > ;
+ < "StdafvP (population)" ; Default ; > ;
+ < "Varians (stikprøve)" ; Default ; > ;
+ < "VariansP (population)" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "Total" ; Default ; > ;
+ < "Nombre" ; Default ; > ;
+ < "Moyenne" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produit" ; Default ; > ;
+ < "Nombre (uniquement les nombres)" ; Default ; > ;
+ < "Ecartype (échantillon)" ; Default ; > ;
+ < "EcarTypeP (population)" ; Default ; > ;
+ < "Variance (échantillon)" ; Default ; > ;
+ < "VarianceP (population)" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Summa" ; Default ; > ;
+ < "Antal" ; Default ; > ;
+ < "Medelvärde" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Antal (endast tal)" ; Default ; > ;
+ < "StdAv (stickprov)" ; Default ; > ;
+ < "StdAvP (population)" ; Default ; > ;
+ < "Varians (stickprov)" ; Default ; > ;
+ < "VariansP (population)" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Som" ; Default ; > ;
+ < "Aantal" ; Default ; > ;
+ < "Gemiddelde waarde" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "Aantal (alleen getallen)" ; Default ; > ;
+ < "StAfw (steekproef)" ; Default ; > ;
+ < "StAfwN (populatie)" ; Default ; > ;
+ < "Variantie (steekproef)" ; Default ; > ;
+ < "Variantie (populatie)" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Suma" ; Default ; > ;
+ < "Cantidad" ; Default ; > ;
+ < "Promedio" ; Default ; > ;
+ < "Máx" ; Default ; > ;
+ < "Mín" ; Default ; > ;
+ < "Producto" ; Default ; > ;
+ < "Cantidad (solo números)" ; Default ; > ;
+ < "DesvEst (Muestra)" ; Default ; > ;
+ < "DesvEstP (Población)" ; Default ; > ;
+ < "Varianza (Muestra)" ; Default ; > ;
+ < "VarP (Población)" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Sum" ; Default ; > ;
+ < "Count" ; Default ; > ;
+ < "Average" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "Count (numbers only)" ; Default ; > ;
+ < "StDev (sample)" ; Default ; > ;
+ < "StDevP (population)" ; Default ; > ;
+ < "Var (sample)" ; Default ; > ;
+ < "VarP (population)" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "×ܼÆ" ; Default ; > ;
+ < "¼ÆÊý" ; Default ; > ;
+ < "ƽ¾ùÊý" ; Default ; > ;
+ < "×î´ó" ; Default ; > ;
+ < "×îС" ; Default ; > ;
+ < "³Ë»ý" ; Default ; > ;
+ < "¼ÆÊý(Ö»ÊÇÊý×Ö)" ; Default ; > ;
+ < "±ê׼ƫ²î(³éÑù)" ; Default ; > ;
+ < "±ê׼ƫ²î(È«²¿»ùÊý)" ; Default ; > ;
+ < "·½²î(³éÑù)" ; Default ; > ;
+ < "·½²î(È«²¿»ùÊý)" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ñóììà" ; Default ; > ;
+ < "Êîëè÷åñòâî" ; Default ; > ;
+ < "Ñðåäíåå çíà÷åíèå" ; Default ; > ;
+ < "Ìàêñèìóì" ; Default ; > ;
+ < "Ìèíèìóì" ; Default ; > ;
+ < "Ïðîèçâåäåíèå" ; Default ; > ;
+ < "Êîëè÷åñòâî (òîëüêî ÷èñåë)" ; Default ; > ;
+ < "Ñìåùåííîå îòêëîíåíèå (Îáðàçåö)" ; Default ; > ;
+ < "Íåñìåùåííîå îòêëîíåíèå (Ñîâîêóïíîñòü)" ; Default ; > ;
+ < "Ñìåùåííàÿ äèñïåðñèÿ (Îáðàçåö)" ; Default ; > ;
+ < "Íåñìåùåííàÿ äèñïåðñèÿ (Ñîâîêóïíîñòü)" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Suma" ; Default ; > ;
+ < "Liczba" ; Default ; > ;
+ < "Œrednia wartoœæ" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Iloczyn" ; Default ; > ;
+ < "IloϾ (tylko liczby)" ; Default ; > ;
+ < "Odchylenie standardowe (Próbka)" ; Default ; > ;
+ < "Odch.standard. (populacja)" ; Default ; > ;
+ < "Wariancja (Próbka)" ; Default ; > ;
+ < "Wariancje (ZbiorowoϾ generalna)" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‡Œv" ; Default ; > ;
+ < "‘”" ; Default ; > ;
+ < "•½‹Ï’l" ; Default ; > ;
+ < "Å‘å’l" ; Default ; > ;
+ < "Ŭ’l" ; Default ; > ;
+ < "Ï" ; Default ; > ;
+ < "‘”(”’l‚Ì‚Ý)" ; Default ; > ;
+ < "StDev(•W–{)" ; Default ; > ;
+ < "StDevP•W€•Î·(•êW’c)" ; Default ; > ;
+ < "•ªŽU(•W–{)" ; Default ; > ;
+ < "•ªŽU(•êW’c)" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "Á`­p" ; Default ; > ;
+ < "­p¼Æ" ; Default ; > ;
+ < "¥­§¡¼Æ" ; Default ; > ;
+ < "³Ì¤j" ; Default ; > ;
+ < "³Ì¤p" ; Default ; > ;
+ < "­¼¿n" ; Default ; > ;
+ < "­p¼Æ(¥u¬O¼Æ¦r)" ; Default ; > ;
+ < "¼Ð·Ç°¾®t(©â¼Ë)" ; Default ; > ;
+ < "¼Ð·Ç°¾®t(¥þ³¡°ò¼Æ)" ; Default ; > ;
+ < "¤è®t(©â¼Ë)" ; Default ; > ;
+ < "¤è®t(¥þ³¡°ò¼Æ)" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "Sum" ; Default ; > ;
+ < "Count" ; Default ; > ;
+ < "Average" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "Count (ÇáÃÑÞÇã ÝÞØ)" ; Default ; > ;
+ < "StDev (򒊃)" ; Default ; > ;
+ < "StDevP (ÇáãÌÊãÚ)" ; Default ; > ;
+ < "VAR (򒊃)" ; Default ; > ;
+ < "VARP (ÇáãÌÊãÚ)" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "¢èñïéóìá" ; Default ; > ;
+ < "Áñéèìüò" ; Default ; > ;
+ < "ÌÝóç ôéìÞ" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "ÐëÞèïò (ìüíï áñéèìïß)" ; Default ; > ;
+ < "StDev (Äåßãìá)" ; Default ; > ;
+ < "StDevP (Ðëçèõóìïý)" ; Default ; > ;
+ < "Var (Äåßãìá)" ; Default ; > ;
+ < "VarP (Ðëçèõóìïý)" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "ÇÕ°è" ; Default ; > ;
+ < "Ä«¿îÆ®" ; Default ; > ;
+ < "Æò±Õ" ; Default ; > ;
+ < "ÃÖ´ë" ; Default ; > ;
+ < "ÃÖ¼Ò" ; Default ; > ;
+ < "Á¦Ç°" ; Default ; > ;
+ < "Ä«¿îÆ® (¹øÈ£¸¸)" ; Default ; > ;
+ < "StDev (»ùÇÃ)" ; Default ; > ;
+ < "Ç¥ÁØ ÆíÂ÷ (¸ðÁý´Ü)" ; Default ; > ;
+ < "Ç¥ÁØÆíÂ÷ (»ùÇÃ)" ; Default ; > ;
+ < "ºÐ»ê(¸ðÁý´Ü)" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Toplam" ; Default ; > ;
+ < "Sayý" ; Default ; > ;
+ < "Ortalama deðer" ; Default ; > ;
+ < "Azami" ; Default ; > ;
+ < "Asgari" ; Default ; > ;
+ < "Çarpým sonucu" ; Default ; > ;
+ < "Count (yalnýzca sayý)" ; Default ; > ;
+ < "StDev (sample)" ; Default ; > ;
+ < "StDevP (population)" ; Default ; > ;
+ < "Var (örneði)" ; Default ; > ;
+ < "VarP (population)" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ Edit ED_DATA_AREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 111 , 106 ) ;
+ Size = MAP_APPFONT ( 90 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ Edit ED_DEST_AREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 111 , 136 ) ;
+ Size = MAP_APPFONT ( 90 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_DATA_AREA
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 203 , 106 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = TRUE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "×îС/×î´ó";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageButton RB_DEST_AREA
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 203 , 136 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = TRUE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "×îС/×î´ó";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ListBox LB_DATA_AREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 106 ) ;
+ Size = MAP_APPFONT ( 100 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox LB_DEST_AREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 136 ) ;
+ Size = MAP_APPFONT ( 100 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ MultiListBox LB_CONSAREAS
+ {
+ SimpleMode = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 45 ) ;
+ Size = MAP_APPFONT ( 209 , 43 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_FUNC
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 86 , 10 ) ;
+ Text = "Be~rechnungsvorschrift" ;
+ Text [ ENGLISH ] = "Fun~ction" ;
+ Text [ norwegian ] = "Fu~nksjon" ;
+ Text [ italian ] = "Fun~zione" ;
+ Text [ portuguese_brazilian ] = "Fun~ção" ;
+ Text [ portuguese ] = "Regra de ~cálculo" ;
+ Text [ finnish ] = "~Funktio" ;
+ Text [ danish ] = "Beregningsfunktion" ;
+ Text [ french ] = "~Fonction" ;
+ Text [ swedish ] = "Be~räkningsregler" ;
+ Text [ dutch ] = "Be~rekeningsvoorschrift" ;
+ Text [ spanish ] = "~Instrucción de cálculo" ;
+ Text [ english_us ] = "~Function" ;
+ Text[ chinese_simplified ] = "º¯Êý(~F)";
+ Text[ russian ] = "Èíñòðóêöèÿ ïî âû÷èñëåíèÿì";
+ Text[ polish ] = "Instrukcja obliczania";
+ Text[ japanese ] = "ŒvŽZ•û–@(~F)";
+ Text[ chinese_traditional ] = "¨ç¼Æ(~F)";
+ Text[ arabic ] = "ÇáÏÇáÉ";
+ Text[ greek ] = "Êáíüíáò õðïëïãéóìïý";
+ Text[ korean ] = "±â´É(~F)";
+ Text[ turkish ] = "Fonksi~yon";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_CONSAREAS
+ {
+ Pos = MAP_APPFONT ( 6 , 33 ) ;
+ Size = MAP_APPFONT ( 91 , 10 ) ;
+ Text = "~Konsolidierungsbereiche" ;
+ Text [ ENGLISH ] = "Consoli~dation areas" ;
+ Text [ norwegian ] = "Konsoli~derings områder" ;
+ Text [ italian ] = "Aree di consolidamento" ;
+ Text [ portuguese_brazilian ] = "Áreas de consoli~dação" ;
+ Text [ portuguese ] = "Áreas de consoli~dação" ;
+ Text [ finnish ] = "~Kokoamisalueet" ;
+ Text [ danish ] = "Konsolideringsområder" ;
+ Text [ french ] = "Plages de ~consolidation" ;
+ Text [ swedish ] = "~Konsolideringsområden" ;
+ Text [ dutch ] = "~Consolideringsbereik" ;
+ Text [ spanish ] = "~Áreas de consolidación" ;
+ Text [ english_us ] = "~Consolidation areas" ;
+ Text[ chinese_simplified ] = "ºÏ²¢¼ÆËãÇøÓò(~C)";
+ Text[ russian ] = "Îáëàñòè êîíñîëèäàöèè";
+ Text[ polish ] = "Obszary konsolidacji";
+ Text[ japanese ] = "“‡”͈Í(~C)";
+ Text[ chinese_traditional ] = "¦X¨Ö­pºâ°Ï°ì(~C)";
+ Text[ arabic ] = "äØÇÞÇÊ ÇáÏãÌ";
+ Text[ greek ] = "Ðå~ñéï÷Ýò åíïðïßçóçò";
+ Text[ korean ] = "ÅëÇÕ ¿µ¿ª(~C)";
+ Text[ turkish ] = "Bir~leþtirme alanlarý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DATA_AREA
+ {
+ Pos = MAP_APPFONT ( 6 , 94 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "Quelldaten~bereich" ;
+ Text [ ENGLISH ] = "~Source data area" ;
+ Text [ norwegian ] = "~Kildedataområder" ;
+ Text [ italian ] = "Area dati di sorgente" ;
+ Text [ portuguese_brazilian ] = "~Área de origem dos dados" ;
+ Text [ portuguese ] = "~Área dos dados fonte" ;
+ Text [ finnish ] = "Läh~detietoalue" ;
+ Text [ danish ] = "Kildedataområde" ;
+ Text [ french ] = "~Plage de données source" ;
+ Text [ swedish ] = "Källdata~område" ;
+ Text [ dutch ] = "~Brongegevensbereik" ;
+ Text [ spanish ] = "~Área de datos fuente" ;
+ Text [ english_us ] = "~Source data area" ;
+ Text[ chinese_simplified ] = "Ô´Êý¾ÝÇøÓò(~S)";
+ Text[ russian ] = "Îáëàñòü èñõîäíûõ äàííûõ";
+ Text[ polish ] = "Obszar danych Ÿród³a";
+ Text[ japanese ] = "¿°½ÃÞ°À”͈Í(~S)";
+ Text[ chinese_traditional ] = "·½¸ê®Æ°Ï°ì(~S)";
+ Text[ arabic ] = "äØÇÞ ÈíÇäÇÊ ÇáãÕÏÑ";
+ Text[ greek ] = "Ðåñéï÷Þ ðñïÝëåõóçò äåäïìÝíùí";
+ Text[ korean ] = "¼Ò½º µ¥ÀÌÅÍ ¿µ¿ª(~S)";
+ Text[ turkish ] = "Kaynak veri a~lanlarý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DEST_AREA
+ {
+ Pos = MAP_APPFONT ( 6 , 124 ) ;
+ Size = MAP_APPFONT ( 120 , 10 ) ;
+ Text = "Er~gebnis ausgeben ab" ;
+ Text [ ENGLISH ] = "Result a~t" ;
+ Text [ norwegian ] = "Resultat ~ved" ;
+ Text [ italian ] = "Risultato a partire da" ;
+ Text [ portuguese_brazilian ] = "Resultado a~t" ;
+ Text [ portuguese ] = "~Resultado a partir de" ;
+ Text [ finnish ] = "Tulosten k~ohde" ;
+ Text [ danish ] = "Resultat-output fra" ;
+ Text [ french ] = "~Résultat à partir de" ;
+ Text [ swedish ] = "Resul~tat vid" ;
+ Text [ dutch ] = "Re~sultaat weergeven vanaf" ;
+ Text [ spanish ] = "Re~sultado a partir de" ;
+ Text [ english_us ] = "Copy results ~to" ;
+ Text[ chinese_simplified ] = "¸´Öƽá¹ûµ½(~T)";
+ Text[ russian ] = "Íà÷àòü ñ";
+ Text[ polish ] = "Kopiuj wynik od";
+ Text[ japanese ] = "Œ‹‰Ê“\\‚è•t‚¯æ(~T)";
+ Text[ chinese_traditional ] = "½Æ»sµ²ªG¨ì(~T)";
+ Text[ arabic ] = "äÓÎ ÇáäÊÇÆÌ Åáì";
+ Text[ greek ] = "ÅìöÜíéóç áðïôåëåóìÜôùí áðü";
+ Text[ korean ] = "¿¡ °á°ú¸¦ º¹»ç(~T)";
+ Text[ turkish ] = "Sonuc~un gösterileceði yer";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_BYROW
+ {
+ Pos = MAP_APPFONT ( 14 , 165 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "Ze~ilenbeschriftung" ;
+ Text [ ENGLISH ] = "by ro~ws" ;
+ Text [ norwegian ] = "etter ra~der" ;
+ Text [ italian ] = "Dicitura righe" ;
+ Text [ portuguese_brazilian ] = "por fi~leiras" ;
+ Text [ portuguese ] = "Legenda para ~linhas" ;
+ Text [ finnish ] = "~Riveittäin" ;
+ Text [ danish ] = "Rækkeetiketter" ;
+ Text [ french ] = "É~tiquette de lignes" ;
+ Text [ swedish ] = "Ra~detikett" ;
+ Text [ dutch ] = "~Rijkoppen" ;
+ Text [ spanish ] = "Etiqueta ~de filas" ;
+ Text [ english_us ] = "~Row labels" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÐÐÊý¾Ý±êÖ¾(~R)";
+ Text[ russian ] = "íàçâàíèþ ñòðîê";
+ Text[ polish ] = "~nag³ówków wierszy";
+ Text[ japanese ] = "¶’[—ñ(~R)";
+ Text[ chinese_traditional ] = "¦C¼ÐÃD(~R)";
+ Text[ arabic ] = "ÚäÇæíä ÇáÕÝæÝ";
+ Text[ greek ] = "ÅðéãñáöÞ ãñáììÞò";
+ Text[ korean ] = "Çà ¶óº§(~R)";
+ Text[ turkish ] = "Sa~týr etiketleri";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_BYCOL
+ {
+ Pos = MAP_APPFONT ( 14 , 178 ) ;
+ Size = MAP_APPFONT ( 74 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? S~paltenköpfen : S~paltenk÷pfen */
+ Text = "S~paltenköpfen" ;
+ Text [ ENGLISH ] = "by colum~ns" ;
+ Text [ norwegian ] = "etter kolonn~er" ;
+ Text [ italian ] = "~Intestazioni colonne" ;
+ Text [ portuguese_brazilian ] = "por colu~nas" ;
+ Text [ portuguese ] = "~Cabeçalhos de colunas" ;
+ Text [ finnish ] = "~Sarakkeittain" ;
+ Text [ danish ] = "Kolonneoverskrifter" ;
+ Text [ french ] = "En-têtes de ~colonnes" ;
+ Text [ swedish ] = "Kolum~nhuvuden" ;
+ Text [ dutch ] = "~Kolomkoppen" ;
+ Text [ spanish ] = "Títulos de ~columnas" ;
+ Text [ english_us ] = "C~olumn headers" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÁбêÌâ(~H)";
+ Text[ russian ] = "íàçâàíèþ ñòîëáöîâ";
+ Text[ polish ] = "na~g³ówków kolumn";
+ Text[ japanese ] = "ã’[s(~H)";
+ Text[ chinese_traditional ] = "Äæ¼ÐÃD(~H)";
+ Text[ arabic ] = "ÑÄæÓ ÇáÃÚãÏÉ";
+ Text[ greek ] = "Êåöáëßäåò óôçëþí";
+ Text[ korean ] = "¿­ ¸Ó¸´±Û(~O)";
+ Text[ turkish ] = "S~ütun baþlýklarý";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_CONSBY
+ {
+ Pos = MAP_APPFONT ( 6 , 154 ) ;
+ Size = MAP_APPFONT ( 100 , 40 ) ;
+ Text = "Konsolidieren nach" ;
+ Text [ ENGLISH ] = "Consolidate by" ;
+ Text [ norwegian ] = "Konsolidere ved " ;
+ Text [ italian ] = "Consolida per" ;
+ Text [ portuguese_brazilian ] = "Consolidar por" ;
+ Text [ portuguese ] = "Consolidar por" ;
+ Text [ finnish ] = "Kokoamistapa" ;
+ Text [ danish ] = "Konsolider efter" ;
+ Text [ french ] = "Consolider par" ;
+ Text [ swedish ] = "Konsolidera efter" ;
+ Text [ dutch ] = "Consolideren naar" ;
+ Text [ spanish ] = "Consolidar según" ;
+ Text [ english_us ] = "Consolidate by" ;
+ Text[ chinese_simplified ] = "ºÏ²¢°´";
+ Text[ russian ] = "Êîíñîëèäèðîâàòü ïî";
+ Text[ polish ] = "Konsoliduj wed³ug";
+ Text[ japanese ] = "“‡‚ÌŠî€";
+ Text[ chinese_traditional ] = "¦X¨Ö«ö·Ó";
+ Text[ arabic ] = "ÏãÌ Åáì";
+ Text[ greek ] = "Åíïðïßçóç ùò ðñïò";
+ Text[ korean ] = "·Î ÅëÇÕ";
+ Text[ turkish ] = "Birleþtirme ölçütü";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_REFS
+ {
+ Pos = MAP_APPFONT ( 111 , 157 ) ;
+ Size = MAP_APPFONT ( 104 , 10 ) ;
+ Text = "Mit Quelldaten ~verbinden" ;
+ Text [ ENGLISH ] = "Re~ference source data" ;
+ Text [ norwegian ] = "Re~feranse kildedata" ;
+ Text [ italian ] = "Collega con dati origine" ;
+ Text [ portuguese_brazilian ] = "Dados da fonte de re~ferência" ;
+ Text [ portuguese ] = "~Ligar aos dados da fonte" ;
+ Text [ finnish ] = "~Viittaus lähdetietoihin" ;
+ Text [ danish ] = "Opret kæde til kildedata" ;
+ Text [ french ] = "~Lier aux données source" ;
+ Text [ swedish ] = "R~eferensdata" ;
+ Text [ dutch ] = "~Met brongegevens verbinden" ;
+ Text [ spanish ] = "~Vincular con datos fuente" ;
+ Text [ english_us ] = "~Link to source data" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ºÍÔ´Êý¾ÝÁ¬½Ó(~L)";
+ Text[ russian ] = "Ñâÿçàòü ñ èñõîäíûìè äàííûìè";
+ Text[ polish ] = "Utwórz ³¹cze z danymi Ÿród³a";
+ Text[ japanese ] = "“‡Œ³ÃÞ°À‚ÆØݸ‚·‚é(~L)";
+ Text[ chinese_traditional ] = "©M·½¸ê®Æ³sµ²(~L)";
+ Text[ arabic ] = "ÑÈØ ÈÈíÇäÇÊ ÇáãÕÏÑ";
+ Text[ greek ] = "Óýíäåóç ìå äåäïìÝíá ðñïÝëåõóçò";
+ Text[ korean ] = "¼Ò½º µ¥ÀÌÅÍ¿¡ ¿¬°á(~L)";
+ Text[ turkish ] = "Kaynak verilerine ~baðla";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 222 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 222 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 222 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MoreButton BTN_MORE
+ {
+ Pos = MAP_APPFONT ( 223 , 135 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ /*
+ Text = "~Zusätze";
+ Text[ ENGLISH ] = "~More";
+ Text[norwegian] = "~Mer";
+ Text[italian] = "~Altro";
+ Text[portuguese_brazilian] = "~Mais";
+ Text[portuguese] = "~Mais";
+ Text[finnish] = "~Enemmän";
+ Text[danish] = "~Flere";
+ Text[french] = " S~uite";
+ Text[swedish] = "~Fler";
+ Text[dutch] = "~Overige";
+ Text[spanish] = "~Más";
+ Text[english_us] = "~More";
+ */
+ TabStop = TRUE ;
+ MapUnit = MAP_APPFONT ;
+ Delta = 45 ;
+ };
+ PushButton BTN_REMOVE
+ {
+ Pos = MAP_APPFONT ( 223 , 74 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen : ~L÷schen */
+ Text = "~Löschen" ;
+ Text [ ENGLISH ] = "~Remove" ;
+ Text [ norwegian ] = "~Fjern" ;
+ Text [ italian ] = "~Elimina" ;
+ Text [ portuguese_brazilian ] = "~Remover" ;
+ Text [ portuguese ] = "E~liminar" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "~Wissen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Delete" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ɾ³ý(~D)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~D)";
+ Text[ chinese_traditional ] = "§R°£(~D)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦(~D)";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BTN_ADD
+ {
+ Pos = MAP_APPFONT ( 223 , 105 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Hinzufügen : ~Hinzuf³gen */
+ Text = "Hinzu~fügen" ;
+ Text [ ENGLISH ] = "~Add" ;
+ Text [ norwegian ] = "Leg~g til" ;
+ Text [ italian ] = "A~ggiungi" ;
+ Text [ portuguese_brazilian ] = "~Acrescentar" ;
+ Text [ portuguese ] = "~Adicionar" ;
+ Text [ finnish ] = "~Lisää" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "~Ajouter" ;
+ Text [ swedish ] = "~Lägg till" ;
+ Text [ dutch ] = "Toe~voegen" ;
+ Text [ spanish ] = "~Añadir" ;
+ Text [ english_us ] = "~Add" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÐÂÔö(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "’ljÁ(~A)";
+ Text[ chinese_traditional ] = "·s¼W(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ";
+ Text[ greek ] = "Ðñïó~èÞêç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "ºÏ²¢¼ÆËã";
+ Text[ russian ] = "Êîíñîëèäèðîâàòü";
+ Text[ polish ] = "Konsoliduj";
+ Text[ japanese ] = "“‡";
+ Text[ chinese_traditional ] = "¦X¨Ö­pºâ";
+ Text[ arabic ] = "ÏãÌ";
+ Text[ greek ] = "Åíïðïßçóç";
+ Text[ korean ] = "ÅëÇÕ";
+ Text[ turkish ] = "Birleþtir";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/dbgui/dapidata.cxx b/sc/source/ui/dbgui/dapidata.cxx
new file mode 100644
index 000000000000..67d63d3cf38c
--- /dev/null
+++ b/sc/source/ui/dbgui/dapidata.cxx
@@ -0,0 +1,250 @@
+/*************************************************************************
+ *
+ * $RCSfile: dapidata.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <tools/debug.hxx>
+#include <vcl/waitobj.hxx>
+#include <unotools/processfactory.hxx>
+#include <vos/xception.hxx>
+
+#include <com/sun/star/data/XDatabaseFavorites.hpp>
+#include <com/sun/star/data/XDatabaseEngine.hpp>
+#include <com/sun/star/data/XDatabaseWorkspace.hpp>
+#include <com/sun/star/data/XDatabase.hpp>
+#include <com/sun/star/sheet/DataImportMode.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+
+using namespace com::sun::star;
+
+#include "dapidata.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "dapitype.hrc"
+#include "dpsdbtab.hxx" // ScImportSourceDesc
+
+//-------------------------------------------------------------------------
+
+#define DP_SERVICE_DBENGINE "com.sun.star.data.DatabaseEngine"
+
+// entries in the "type" ListBox
+#define DP_TYPELIST_TABLE 0
+#define DP_TYPELIST_QUERY 1
+#define DP_TYPELIST_SQL 2
+#define DP_TYPELIST_SQLNAT 3
+
+//-------------------------------------------------------------------------
+
+ScDataPilotDatabaseDlg::ScDataPilotDatabaseDlg( Window* pParent ) :
+ ModalDialog ( pParent, ScResId( RID_SCDLG_DAPIDATA ) ),
+ //
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aFtDatabase ( this, ScResId( FT_DATABASE ) ),
+ aLbDatabase ( this, ScResId( LB_DATABASE ) ),
+ aFtObject ( this, ScResId( FT_OBJECT ) ),
+ aCbObject ( this, ScResId( CB_OBJECT ) ),
+ aFtType ( this, ScResId( FT_OBJTYPE ) ),
+ aLbType ( this, ScResId( LB_OBJTYPE ) ),
+ aGbFrame ( this, ScResId( GB_FRAME ) )
+{
+ FreeResource();
+
+ WaitObject aWait( this ); // initializing the database service the first time takes a while
+
+ TRY
+ {
+ // get database names
+
+ uno::Reference<data::XDatabaseFavorites> xFavorites(
+ utl::getProcessServiceFactory()->createInstance(
+ rtl::OUString::createFromAscii( DP_SERVICE_DBENGINE ) ),
+ uno::UNO_QUERY);
+ if (xFavorites.is())
+ {
+ uno::Sequence<beans::PropertyValue> aFavorites = xFavorites->getFavorites();
+ long nCount = aFavorites.getLength();
+ const beans::PropertyValue* pArray = aFavorites.getConstArray();
+ for (long nPos = 0; nPos < nCount; nPos++)
+ {
+ String aName = pArray[nPos].Name;
+ aLbDatabase.InsertEntry( aName );
+ }
+ }
+ }
+ CATCH_ALL()
+ {
+ DBG_ERROR("exception in database");
+ }
+ END_CATCH
+
+ aLbDatabase.SelectEntryPos( 0 );
+ aLbType.SelectEntryPos( 0 );
+
+ FillObjects();
+
+ aLbDatabase.SetSelectHdl( LINK( this, ScDataPilotDatabaseDlg, SelectHdl ) );
+ aLbType.SetSelectHdl( LINK( this, ScDataPilotDatabaseDlg, SelectHdl ) );
+}
+
+ScDataPilotDatabaseDlg::~ScDataPilotDatabaseDlg()
+{
+}
+
+void ScDataPilotDatabaseDlg::GetValues( ScImportSourceDesc& rDesc )
+{
+ USHORT nSelect = aLbType.GetSelectEntryPos();
+
+ rDesc.aDBName = aLbDatabase.GetSelectEntry();
+ rDesc.aObject = aCbObject.GetText();
+
+ if ( !rDesc.aDBName.Len() || !rDesc.aObject.Len() )
+ rDesc.nType = sheet::DataImportMode_NONE;
+ else if ( nSelect == DP_TYPELIST_TABLE )
+ rDesc.nType = sheet::DataImportMode_TABLE;
+ else if ( nSelect == DP_TYPELIST_QUERY )
+ rDesc.nType = sheet::DataImportMode_QUERY;
+ else
+ rDesc.nType = sheet::DataImportMode_SQL;
+
+ rDesc.bNative = ( nSelect == DP_TYPELIST_SQLNAT );
+}
+
+IMPL_LINK( ScDataPilotDatabaseDlg, SelectHdl, ListBox*, pLb )
+{
+ FillObjects();
+ return 0;
+}
+
+void ScDataPilotDatabaseDlg::FillObjects()
+{
+ aCbObject.Clear();
+
+ String aDatabaseName = aLbDatabase.GetSelectEntry();
+ if (!aDatabaseName.Len())
+ return;
+
+ USHORT nSelect = aLbType.GetSelectEntryPos();
+ if ( nSelect > DP_TYPELIST_QUERY )
+ return; // only tables and queries
+
+ TRY
+ {
+ uno::Reference<data::XDatabaseEngine> xEngine(
+ utl::getProcessServiceFactory()->createInstance(
+ rtl::OUString::createFromAscii( DP_SERVICE_DBENGINE ) ),
+ uno::UNO_QUERY);
+ if ( !xEngine.is() ) return;
+
+ // read default workspace (like in FmFormView::CreateFieldControl)
+
+ uno::Reference<container::XIndexAccess> xWsps( xEngine->getWorkspaces(), uno::UNO_QUERY );
+ if ( !xWsps.is() ) return;
+ uno::Any aElement( xWsps->getByIndex(0) );
+ uno::Reference<data::XDatabaseWorkspace> xWorkspace;
+ aElement >>= xWorkspace;
+
+ uno::Reference<data::XDatabase> xDatabase = xWorkspace->open( aDatabaseName );
+ uno::Reference<container::XNameAccess> xAccess;
+ if ( nSelect == DP_TYPELIST_TABLE )
+ {
+ // get all tables
+ uno::Reference<data::XDatabaseConnection> xConnection( xDatabase, uno::UNO_QUERY );
+ if ( !xConnection.is() ) return;
+ xAccess = uno::Reference<container::XNameAccess>( xConnection->getTables(), uno::UNO_QUERY );
+ }
+ else
+ {
+ // get all queries
+ xAccess = uno::Reference<container::XNameAccess>( xDatabase->getQueries(), uno::UNO_QUERY );
+ }
+ if( !xAccess.is() ) return;
+
+ // fill list
+
+ uno::Sequence<rtl::OUString> aSeq = xAccess->getElementNames();
+ long nCount = aSeq.getLength();
+ const rtl::OUString* pArray = aSeq.getConstArray();
+ for( long nPos=0; nPos<nCount; nPos++ )
+ {
+ String aName = pArray[nPos];
+ aCbObject.InsertEntry( aName );
+ }
+ }
+ CATCH_ALL()
+ {
+ // #71604# this may happen if an invalid database is selected -> no DBG_ERROR
+ DBG_WARNING("exception in database");
+ }
+ END_CATCH
+}
+
+
+
+
diff --git a/sc/source/ui/dbgui/dapitype.cxx b/sc/source/ui/dbgui/dapitype.cxx
new file mode 100644
index 000000000000..2d1bad9059e2
--- /dev/null
+++ b/sc/source/ui/dbgui/dapitype.cxx
@@ -0,0 +1,180 @@
+/*************************************************************************
+ *
+ * $RCSfile: dapitype.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "dapitype.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "dapitype.hrc"
+
+using namespace com::sun::star;
+
+//-------------------------------------------------------------------------
+
+ScDataPilotSourceTypeDlg::ScDataPilotSourceTypeDlg( Window* pParent, BOOL bEnableExternal ) :
+ ModalDialog ( pParent, ScResId( RID_SCDLG_DAPITYPE ) ),
+ //
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnSelection ( this, ScResId( BTN_SELECTION ) ),
+ aBtnDatabase ( this, ScResId( BTN_DATABASE ) ),
+ aBtnExternal ( this, ScResId( BTN_EXTERNAL ) ),
+ aGbFrame ( this, ScResId( GB_FRAME ) )
+{
+ if (!bEnableExternal)
+ aBtnExternal.Disable();
+
+ aBtnSelection.Check();
+
+ FreeResource();
+}
+
+ScDataPilotSourceTypeDlg::~ScDataPilotSourceTypeDlg()
+{
+}
+
+BOOL ScDataPilotSourceTypeDlg::IsSelection() const
+{
+ return aBtnSelection.IsChecked();
+}
+
+BOOL ScDataPilotSourceTypeDlg::IsDatabase() const
+{
+ return aBtnDatabase.IsChecked();
+}
+
+BOOL ScDataPilotSourceTypeDlg::IsExternal() const
+{
+ return aBtnExternal.IsChecked();
+}
+
+//-------------------------------------------------------------------------
+
+ScDataPilotServiceDlg::ScDataPilotServiceDlg( Window* pParent,
+ const uno::Sequence<rtl::OUString>& rServices ) :
+ ModalDialog ( pParent, ScResId( RID_SCDLG_DAPISERVICE ) ),
+ //
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aFtService ( this, ScResId( FT_SERVICE ) ),
+ aLbService ( this, ScResId( LB_SERVICE ) ),
+ aFtSource ( this, ScResId( FT_SOURCE ) ),
+ aEdSource ( this, ScResId( ED_SOURCE ) ),
+ aFtName ( this, ScResId( FT_NAME ) ),
+ aEdName ( this, ScResId( ED_NAME ) ),
+ aFtUser ( this, ScResId( FT_USER ) ),
+ aEdUser ( this, ScResId( ED_USER ) ),
+ aFtPasswd ( this, ScResId( FT_PASSWD ) ),
+ aEdPasswd ( this, ScResId( ED_PASSWD ) ),
+ aGbFrame ( this, ScResId( GB_FRAME ) )
+{
+ long nCount = rServices.getLength();
+ const rtl::OUString* pArray = rServices.getConstArray();
+ for (long i=0; i<nCount; i++)
+ {
+ String aName = pArray[i];
+ aLbService.InsertEntry( aName );
+ }
+ aLbService.SelectEntryPos( 0 );
+
+ FreeResource();
+}
+
+ScDataPilotServiceDlg::~ScDataPilotServiceDlg()
+{
+}
+
+String ScDataPilotServiceDlg::GetServiceName() const
+{
+ return aLbService.GetSelectEntry();
+}
+
+String ScDataPilotServiceDlg::GetParSource() const
+{
+ return aEdSource.GetText();
+}
+
+String ScDataPilotServiceDlg::GetParName() const
+{
+ return aEdName.GetText();
+}
+
+String ScDataPilotServiceDlg::GetParUser() const
+{
+ return aEdUser.GetText();
+}
+
+String ScDataPilotServiceDlg::GetParPass() const
+{
+ return aEdPasswd.GetText();
+}
+
+
+
diff --git a/sc/source/ui/dbgui/dapitype.hrc b/sc/source/ui/dbgui/dapitype.hrc
new file mode 100644
index 000000000000..938b7426976f
--- /dev/null
+++ b/sc/source/ui/dbgui/dapitype.hrc
@@ -0,0 +1,87 @@
+/*************************************************************************
+ *
+ * $RCSfile: dapitype.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_HELP 3
+#define BTN_SELECTION 4
+#define BTN_DATABASE 5
+#define BTN_EXTERNAL 6
+#define GB_FRAME 7
+
+#define FT_SERVICE 8
+#define LB_SERVICE 9
+#define FT_SOURCE 10
+#define ED_SOURCE 11
+#define FT_NAME 12
+#define ED_NAME 13
+#define FT_USER 14
+#define ED_USER 15
+#define FT_PASSWD 16
+#define ED_PASSWD 17
+
+#define FT_DATABASE 18
+#define LB_DATABASE 19
+#define FT_OBJECT 20
+#define CB_OBJECT 21
+#define FT_OBJTYPE 22
+#define LB_OBJTYPE 23
+
diff --git a/sc/source/ui/dbgui/dapitype.src b/sc/source/ui/dbgui/dapitype.src
new file mode 100644
index 000000000000..78113aea378b
--- /dev/null
+++ b/sc/source/ui/dbgui/dapitype.src
@@ -0,0 +1,803 @@
+/*************************************************************************
+ *
+ * $RCSfile: dapitype.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+#include "dapitype.hrc"
+
+
+ModalDialog RID_SCDLG_DAPITYPE
+{
+ OutputSize = TRUE ;
+ HelpId = HID_DATAPILOT_TYPE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 191 , 75 ) ;
+ Text = "Quelle auswählen" ;
+ Text [ ENGLISH ] = "Select source" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 135 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 135 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 135 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ RadioButton BTN_SELECTION
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ Text = "~Aktuelle Selektion" ;
+ Text [ ENGLISH ] = "Current selection" ;
+ TabStop = TRUE ;
+ Text[ english_us ] = "~Current selection";
+ Text[ portuguese ] = "Selecção ~activa";
+ Text[ russian ] = "~Òåêóùåå âûäåëåíèå";
+ Text[ greek ] = "ÔñÝ÷ïõóá åðéëïãÞ";
+ Text[ dutch ] = "~Actuele selectie";
+ Text[ french ] = "Sélection ~active";
+ Text[ spanish ] = "Selección a~ctual";
+ Text[ italian ] = "Selezione ~attuale";
+ Text[ danish ] = "Aktuel markering";
+ Text[ swedish ] = "Aktuell markering";
+ Text[ polish ] = "~Aktualna selekcja";
+ Text[ portuguese_brazilian ] = "Current selection";
+ Text[ japanese ] = "Œ»Ý‚Ì‘I‘ð(~C)";
+ Text[ korean ] = "ÇöÀç ¼±ÅÃ(~C)";
+ Text[ chinese_simplified ] = "µ±Ç°µÄÑ¡Ôñ(~C)";
+ Text[ chinese_traditional ] = "·í«eªº¿ï¤¤(~C)";
+ Text[ arabic ] = "ÇáÊÍÏíÏ ÇáÍÇáí";
+ Text[ turkish ] = "~Yürürlükteki seçim";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DATABASE
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ Text = "~In StarOffice angemeldete Datenquelle" ;
+ Text [ ENGLISH ] = "Database source" ;
+ TabStop = TRUE ;
+ Text[ english_us ] = "~Data source registered in StarOffice";
+ Text[ portuguese ] = "~Fonte de dados ligada ao StarOffice";
+ Text[ russian ] = "~Èñòî÷íèê äàííûõ, çàðåã. â StarOffice";
+ Text[ greek ] = "Óôï StarOffice äçëùìÝíï áñ÷åßï ðñïÝëåõóçò äåäïìÝíùí";
+ Text[ dutch ] = "~In StarOffice aangemelde gegevensbron";
+ Text[ french ] = "Source de données sous StarOffice";
+ Text[ spanish ] = "F~uente de datos registrada en StarOffice";
+ Text[ italian ] = "Sorgente dati registrata ~in StarOffice";
+ Text[ danish ] = "Datakilde som er registreret i StarOffice";
+ Text[ swedish ] = "Datakälla som är registrerad i StarOffice";
+ Text[ polish ] = "Zarejestr. ~w StarOffice Ÿród³o danych";
+ Text[ portuguese_brazilian ] = "Database source";
+ Text[ japanese ] = "StarOffice‚É“o˜^‚³‚ꂽÃÞ°À¿°½(~I)";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ¼Ò½º(~D)";
+ Text[ chinese_simplified ] = "ÔÚ StarOffice ÖеǼǵÄÊý¾ÝÔ´(~I)";
+ Text[ chinese_traditional ] = "StarOffice ¤w¸gµn°Oªº¼ÆÕu·½(~I)";
+ Text[ arabic ] = "ãÕÏÑ ÇáÈíÇäÇÊ ÇáãÓÌá Ýí StarOffice";
+ Text[ turkish ] = "~StarOffice'de kayýtlý veri kaynaðý";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_EXTERNAL
+ {
+ Pos = MAP_APPFONT ( 12 , 40 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ Text = "~Externe Quelle/Schnittstelle" ;
+ Text [ ENGLISH ] = "External source/interface" ;
+ TabStop = TRUE ;
+ Text[ english_us ] = "~External source/interface";
+ Text[ portuguese ] = "F~onte externa/interface";
+ Text[ russian ] = "~Âíåøíèé èñòî÷íèê/èíòåðôåéñ";
+ Text[ greek ] = "Åîùôåñéêü áñ÷åßï ðñïÝëåõóçò/Äéáóýíäåóç";
+ Text[ dutch ] = "~Externe bron/interface";
+ Text[ french ] = "Source/interface ~externe";
+ Text[ spanish ] = "~Fuente externa/Interfaz";
+ Text[ italian ] = "Sorgente ~esterna/interfaccia";
+ Text[ danish ] = "Ekstern kilde/grænseflade";
+ Text[ swedish ] = "Extern källa/gränssnitt";
+ Text[ polish ] = "~Zewnêtrzne(y) Ÿród³o/interfejs";
+ Text[ portuguese_brazilian ] = "External source/interface";
+ Text[ japanese ] = "ŠO•”¿°½/²ÝÀ°Ìª²½(~E)";
+ Text[ korean ] = "¿ÜºÎ ¼Ò½º/ÀÎÅÍ ÆäÀ̽º(~E)";
+ Text[ chinese_simplified ] = "ÍⲿԴ/½çÃæ(~E)";
+ Text[ chinese_traditional ] = "¥~¨Ó¼ÆÕu·½/¬É­±";
+ Text[ arabic ] = "ãÕÏÑ ÎÇÑÌí/æÇÌåÉ ÎÇÑÌíÉ";
+ Text[ turkish ] = "~Dýþ kaynak/arabirim";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_FRAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 123 , 69 ) ;
+ Text = "Auswahl" ;
+ Text [ ENGLISH ] = "Select" ;
+ Text[ english_us ] = "Selection";
+ Text[ portuguese ] = "Selecção";
+ Text[ russian ] = "Âûáîð";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ dutch ] = "Selectie";
+ Text[ french ] = "Sélection";
+ Text[ spanish ] = "Selección";
+ Text[ italian ] = "Selezione";
+ Text[ danish ] = "Udvalg";
+ Text[ swedish ] = "Urval";
+ Text[ polish ] = "Wybór";
+ Text[ portuguese_brazilian ] = "Select";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ turkish ] = "Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ english_us ] = "Select Source";
+ Text[ portuguese ] = "Seleccionar fonte";
+ Text[ russian ] = "Âûáîð èñòî÷íèêà";
+ Text[ greek ] = "ÅðéëïãÞ ðñïÝëåõóçò";
+ Text[ dutch ] = "Bron selecteren";
+ Text[ french ] = "Sélection de la source";
+ Text[ spanish ] = "Seleccionar fuente";
+ Text[ italian ] = "Seleziona sorgente";
+ Text[ danish ] = "Vælg kilde";
+ Text[ swedish ] = "Välj ut källa";
+ Text[ polish ] = "Wybierz Ÿród³o";
+ Text[ portuguese_brazilian ] = "Select source";
+ Text[ japanese ] = "¿°½‚Ì‘I‘ð";
+ Text[ korean ] = "¼Ò½º ¼±ÅÃ";
+ Text[ chinese_simplified ] = "Ñ¡ÔñÔ´";
+ Text[ chinese_traditional ] = "¿ï¾Ü¼ÆÕu·½";
+ Text[ arabic ] = "ÊÍÏíÏ ãÕÏÑ";
+ Text[ turkish ] = "Kaynak seç";
+ Text[ language_user1 ] = " ";
+};
+
+
+//------------------------------------------------------------------------
+
+
+ModalDialog RID_SCDLG_DAPISERVICE
+{
+ OutputSize = TRUE ;
+ HelpId = HID_DATAPILOT_SERVICE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 241 , 95 ) ;
+ Text = "Externe Datenquelle" ;
+ Text [ ENGLISH ] = "External source" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 185 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 185 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 185 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_SERVICE
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Service" ;
+ Text [ ENGLISH ] = "Service" ;
+ Text[ english_us ] = "~Service";
+ Text[ portuguese ] = "~Serviço";
+ Text[ russian ] = "Ñåðâèñ";
+ Text[ greek ] = "Õðçñåóßá";
+ Text[ dutch ] = "~Service";
+ Text[ french ] = "~Service";
+ Text[ spanish ] = "~Servicio";
+ Text[ italian ] = "~Servizio";
+ Text[ danish ] = "Service";
+ Text[ swedish ] = "Service";
+ Text[ polish ] = "Serwis";
+ Text[ portuguese_brazilian ] = "Service";
+ Text[ japanese ] = "»°ËÞ½(~S)";
+ Text[ korean ] = "¼­ºñ½º(~S)";
+ Text[ chinese_simplified ] = "·þÎñ(~S)";
+ Text[ chinese_traditional ] = "¦øªA(~S)";
+ Text[ arabic ] = "ÎÏãÉ";
+ Text[ turkish ] = "~Hizmet";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_SERVICE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 12 ) ;
+ Size = MAP_APPFONT ( 116 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_SOURCE
+ {
+ Pos = MAP_APPFONT ( 12 , 29 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Quelle" ;
+ Text [ ENGLISH ] = "Source" ;
+ Text[ english_us ] = "So~urce";
+ Text[ portuguese ] = "~Fonte";
+ Text[ russian ] = "Èñòî÷íèê";
+ Text[ greek ] = "ÐñïÝëåõóç";
+ Text[ dutch ] = "~Bron";
+ Text[ french ] = "~Source";
+ Text[ spanish ] = "~Fuente";
+ Text[ italian ] = "Sorgente";
+ Text[ danish ] = "Kilde";
+ Text[ swedish ] = "Källa";
+ Text[ polish ] = "ród³o";
+ Text[ portuguese_brazilian ] = "Source";
+ Text[ japanese ] = "¿°½(~U)";
+ Text[ korean ] = "¼Ò½º(~U)";
+ Text[ chinese_simplified ] = "Ô´(~U)";
+ Text[ chinese_traditional ] = "¼ÆÕu·½(~U)";
+ Text[ arabic ] = "ÇáãÕÏÑ";
+ Text[ turkish ] = "~Kaynak";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_SOURCE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 28 ) ;
+ Size = MAP_APPFONT ( 116 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 44 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Name" ;
+ Text [ ENGLISH ] = "Name" ;
+ Text[ english_us ] = "~Name";
+ Text[ portuguese ] = "~Nome";
+ Text[ russian ] = "Èìÿ";
+ Text[ greek ] = "¼íïìá";
+ Text[ dutch ] = "~Naam";
+ Text[ french ] = "~Nom";
+ Text[ spanish ] = "~Nombre";
+ Text[ italian ] = "~Nome";
+ Text[ danish ] = "Navn";
+ Text[ swedish ] = "Namn";
+ Text[ polish ] = "Nazwa";
+ Text[ portuguese_brazilian ] = "Name";
+ Text[ japanese ] = "–¼‘O(~N)";
+ Text[ korean ] = "À̸§(~N)";
+ Text[ chinese_simplified ] = "Ãû³Æ(~N)";
+ Text[ chinese_traditional ] = "¦WºÙ(~N)";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ turkish ] = "~Ad";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_NAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 43 ) ;
+ Size = MAP_APPFONT ( 116 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_USER
+ {
+ Pos = MAP_APPFONT ( 12 , 59 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Benutzer" ;
+ Text [ ENGLISH ] = "User" ;
+ Text[ english_us ] = "Us~er";
+ Text[ portuguese ] = "~Utilizador";
+ Text[ russian ] = "Ïîëüçîâàòåëü";
+ Text[ greek ] = "×ñÞóôçò";
+ Text[ dutch ] = "~Gebruiker";
+ Text[ french ] = "~Utilisateur";
+ Text[ spanish ] = "Usuar~io";
+ Text[ italian ] = "Utente";
+ Text[ danish ] = "Bruger";
+ Text[ swedish ] = "Användare";
+ Text[ polish ] = "U¿ytkownik";
+ Text[ portuguese_brazilian ] = "User";
+ Text[ japanese ] = "Õ°»Þ°(~E)";
+ Text[ korean ] = "»ç¿ëÀÚ(~E)";
+ Text[ chinese_simplified ] = "ʹÓÃÕß(~E)";
+ Text[ chinese_traditional ] = "¨Ï¥ÎªÌ(~E)";
+ Text[ arabic ] = "ÇáãÓÊÎÏã";
+ Text[ turkish ] = "~Kullanýcý";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_USER
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 58 ) ;
+ Size = MAP_APPFONT ( 116 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_PASSWD
+ {
+ Pos = MAP_APPFONT ( 12 , 74 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Kennwort" ;
+ Text [ ENGLISH ] = "Password" ;
+ Text[ english_us ] = "~Password";
+ Text[ portuguese ] = "~Senha";
+ Text[ russian ] = "Ïàðîëü";
+ Text[ greek ] = "Êùäéêüò ðñüóâáóçò";
+ Text[ dutch ] = "~Wachtwoord";
+ Text[ french ] = "~Mot de passe";
+ Text[ spanish ] = "~Contraseña";
+ Text[ italian ] = "Password";
+ Text[ danish ] = "Adgangskode";
+ Text[ swedish ] = "Lösenord";
+ Text[ polish ] = "Has³o";
+ Text[ portuguese_brazilian ] = "Password";
+ Text[ japanese ] = "Ê߽ܰÄÞ(~P)";
+ Text[ korean ] = "Æнº¿öµå(~P)";
+ Text[ chinese_simplified ] = "¿ÚÁî(~P)";
+ Text[ chinese_traditional ] = "±K½X(~P)";
+ Text[ arabic ] = "ßáãÉ ÇáÓÑ";
+ Text[ turkish ] = "~Þifre";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_PASSWD
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 73 ) ;
+ Size = MAP_APPFONT ( 116 , 12 ) ;
+ TabStop = TRUE ;
+ PassWord = TRUE ;
+ };
+ GroupBox GB_FRAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 173 , 89 ) ;
+ Text = "Auswahl" ;
+ Text [ ENGLISH ] = "Select" ;
+ Text[ english_us ] = "Selection";
+ Text[ portuguese ] = "Selecção";
+ Text[ russian ] = "Âûáîð";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ dutch ] = "Selectie";
+ Text[ french ] = "Sélection";
+ Text[ spanish ] = "Selección";
+ Text[ italian ] = "Selezione";
+ Text[ danish ] = "Udvalg";
+ Text[ swedish ] = "Urval";
+ Text[ polish ] = "Wybór";
+ Text[ portuguese_brazilian ] = "Select";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ turkish ] = "Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ english_us ] = "External Source";
+ Text[ portuguese ] = "Fonte de dados externa";
+ Text[ russian ] = "Âíåøíèé èñòî÷íèê äàííûõ";
+ Text[ greek ] = "Åîùôåñéêü áñ÷åßï ðñïÝëåõóçò";
+ Text[ dutch ] = "Externe bron";
+ Text[ french ] = "Source de données externe";
+ Text[ spanish ] = "Fuente de datos externa";
+ Text[ italian ] = "Sorgente dati esterna";
+ Text[ danish ] = "Ekstern datakilde";
+ Text[ swedish ] = "Extern datakälla";
+ Text[ polish ] = "Zewnêtrzne Ÿród³o danych";
+ Text[ portuguese_brazilian ] = "External source";
+ Text[ japanese ] = "ŠO•”ÃÞ°À¿°½";
+ Text[ korean ] = "¿ÜºÎ ¼Ò½º";
+ Text[ chinese_simplified ] = "ÍⲿÊý¾ÝÔ´";
+ Text[ chinese_traditional ] = "¥~¨Ó¼ÆÕu·½";
+ Text[ arabic ] = "ãÕÏÑ ÈíÇäÇÊ ÎÇÑÌí";
+ Text[ turkish ] = "Dýþ veri kaynaðý";
+ Text[ language_user1 ] = " ";
+};
+
+
+//------------------------------------------------------------------------
+
+
+ModalDialog RID_SCDLG_DAPIDATA
+{
+ OutputSize = TRUE ;
+ HelpId = HID_DATAPILOT_DATABASE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 241 , 75 ) ;
+ Text = "Datenquelle auswählen" ;
+ Text [ ENGLISH ] = "Select data source" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 185 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 185 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 185 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+
+ FixedText FT_DATABASE
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Datenbank" ;
+ Text [ ENGLISH ] = "Database" ;
+ Text[ english_us ] = "~Database";
+ Text[ portuguese ] = "~Base de dados";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ dutch ] = "~Database";
+ Text[ french ] = "~Base de données";
+ Text[ spanish ] = "~Base de datos";
+ Text[ italian ] = "~Database";
+ Text[ danish ] = "Database";
+ Text[ swedish ] = "Databas";
+ Text[ polish ] = "Baza danych";
+ Text[ portuguese_brazilian ] = "Database";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½(~D)";
+ Text[ korean ] = "µ¥ÀÌÅÍ º£À̽º(~D)";
+ Text[ chinese_simplified ] = "Êý¾Ý¿â(~D)";
+ Text[ chinese_traditional ] = "¸ê®Æ®w(~D)";
+ Text[ arabic ] = "ÞÇÚÏÉ ÈíÇäÇÊ";
+ Text[ turkish ] = "~Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DATABASE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 12 ) ;
+ Size = MAP_APPFONT ( 116 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+
+ FixedText FT_OBJECT
+ {
+ Pos = MAP_APPFONT ( 12 , 29 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Daten~quelle" ;
+ Text [ ENGLISH ] = "Data source" ;
+ Text[ english_us ] = "Data so~urce";
+ Text[ portuguese ] = "Fonte de ~dados";
+ Text[ russian ] = "Èñòî÷íèê äàííûõ";
+ Text[ greek ] = "ÐñïÝëåõóç äåäïìÝíùí";
+ Text[ dutch ] = "~Gegevensbron";
+ Text[ french ] = "~Source de données";
+ Text[ spanish ] = "Fuente de d~atos";
+ Text[ italian ] = "Sorgente dati";
+ Text[ danish ] = "Datakilde";
+ Text[ swedish ] = "Datakälla";
+ Text[ polish ] = "ród³o danych";
+ Text[ portuguese_brazilian ] = "Data source";
+ Text[ japanese ] = "ÃÞ°À¿°½(~U)";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¼Ò½º(~U)";
+ Text[ chinese_simplified ] = "Êý¾ÝÔ´(~U)";
+ Text[ chinese_traditional ] = "¼ÆÕu·½(~U)";
+ Text[ arabic ] = "ãÕÏÑ ÇáÈíÇäÇÊ";
+ Text[ turkish ] = "Veri ka~ynaðý";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox CB_OBJECT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 27 ) ;
+ Size = MAP_APPFONT ( 116 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+
+ FixedText FT_OBJTYPE
+ {
+ Pos = MAP_APPFONT ( 12 , 44 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Art" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text[ english_us ] = "~Type";
+ Text[ portuguese ] = "~Tipo";
+ Text[ russian ] = "Òèï";
+ Text[ greek ] = "Ôýðïò";
+ Text[ dutch ] = "~Type";
+ Text[ french ] = "~Type";
+ Text[ spanish ] = "~Tipo";
+ Text[ italian ] = "Tipo";
+ Text[ danish ] = "Type";
+ Text[ swedish ] = "Typ";
+ Text[ polish ] = "Typ";
+ Text[ portuguese_brazilian ] = "Type";
+ Text[ japanese ] = "À²Ìß(~T)";
+ Text[ korean ] = "ŸÀÔ(~T)";
+ Text[ chinese_simplified ] = "ÀàÐÍ(~T)";
+ Text[ chinese_traditional ] = "Ãþ«¬(~T)";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ turkish ] = "~Tür";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_OBJTYPE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 42 ) ;
+ Size = MAP_APPFONT ( 116 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Tabelle" ; Default ; > ;
+ < "Abfrage" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Table" ; Default ; > ;
+ < "Query" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Sheet" ; Default ; > ;
+ < "Query" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Tabela" ; Default ; > ;
+ < "Consulta" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Òàáëèöà" ; Default ; > ;
+ < "Çàïðîñ" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "Ðßíáêáò" ; Default ; > ;
+ < "Åñþôçìá" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Werkblad" ; Default ; > ;
+ < "Query" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "Table" ; Default ; > ;
+ < "Requête" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [natif]" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Tabla" ; Default ; > ;
+ < "Consulta" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Tabella" ; Default ; > ;
+ < "Ricerca" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [native]" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Tabel" ; Default ; > ;
+ < "Forespørgsel" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [native]" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Tabell" ; Default ; > ;
+ < "Sökning" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Tabela" ; Default ; > ;
+ < "Kwerenda" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Tabelle" ; Default ; > ;
+ < "Abfrage" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "ðÌÞÙ" ; Default ; > ;
+ < "¸´Ø°" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "½ÃÆ®" ; Default ; > ;
+ < "ÁúÀÇ" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "¹¤×÷±í" ; Default ; > ;
+ < "²éѯ" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "ªí®æ" ; Default ; > ;
+ < "¬d¸ß" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÇáÌÏæá" ; Default ; > ;
+ < "ÇÓÊÝÓÇÑ" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Tablo" ; Default ; > ;
+ < "Sorgu" ; Default ; > ;
+ < "Sql" ; Default ; > ;
+ < "Sql [Native]" ; Default ; > ;
+ };
+ };
+
+ GroupBox GB_FRAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 173 , 69 ) ;
+ Text = "Auswahl" ;
+ Text [ ENGLISH ] = "Select" ;
+ Text[ english_us ] = "Selection";
+ Text[ portuguese ] = "Selecção";
+ Text[ russian ] = "Âûáîð";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ dutch ] = "Selectie";
+ Text[ french ] = "Sélection";
+ Text[ spanish ] = "Selección";
+ Text[ italian ] = "Selezione";
+ Text[ danish ] = "Udvalg";
+ Text[ swedish ] = "Urval";
+ Text[ polish ] = "Wybór";
+ Text[ portuguese_brazilian ] = "Select";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ turkish ] = "Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ english_us ] = "Select Data Source";
+ Text[ portuguese ] = "Seleccionar fonte de dados";
+ Text[ russian ] = "Âûáðàòü èñòî÷íèê äàííûõ";
+ Text[ greek ] = "ÅðéëïãÞ ðñïÝëåõóçò äåäïìÝíùí";
+ Text[ dutch ] = "Gegevensbron selecteren";
+ Text[ french ] = "Sélection de la source de données";
+ Text[ spanish ] = "Seleccionar fuente de datos";
+ Text[ italian ] = "Seleziona sorgente dati";
+ Text[ danish ] = "Vælg datakilde";
+ Text[ swedish ] = "Välj ut datakälla";
+ Text[ polish ] = "Wybierz Ÿród³o danych";
+ Text[ portuguese_brazilian ] = "Select data source";
+ Text[ japanese ] = "ÃÞ°À¿°½‚Ì‘I‘ð";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¼Ò½º ¼±ÅÃ";
+ Text[ chinese_simplified ] = "Ñ¡ÔñÊý¾ÝÔ´";
+ Text[ chinese_traditional ] = "¿ï¾Ü¼ÆÕu·½";
+ Text[ arabic ] = "ÊÍÏíÏ ãÕÏÑ ÇáÈíÇäÇÊ";
+ Text[ turkish ] = "Veri kaynaðý seç";
+ Text[ language_user1 ] = " ";
+};
+
+
diff --git a/sc/source/ui/dbgui/dbnamdlg.cxx b/sc/source/ui/dbgui/dbnamdlg.cxx
new file mode 100644
index 000000000000..b8223a0ed7bf
--- /dev/null
+++ b/sc/source/ui/dbgui/dbnamdlg.cxx
@@ -0,0 +1,957 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbnamdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes ---------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE -------------------------------------------------------------------
+
+#include <vcl/msgbox.hxx>
+
+#include "reffact.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+#include "globstr.hrc"
+#include "dbnamdlg.hrc"
+#include "rangenam.hxx" // IsNameValid
+
+#define _DBNAMDLG_CXX
+#include "dbnamdlg.hxx"
+#undef _DBNAMDLG_CXX
+
+
+//============================================================================
+
+#define ABS_SREF SCA_VALID \
+ | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
+#define ABS_DREF ABS_SREF \
+ | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE
+#define ABS_SREF3D ABS_SREF | SCA_TAB_3D
+#define ABS_DREF3D ABS_DREF | SCA_TAB_3D
+
+//----------------------------------------------------------------------------
+
+class DBSaveData;
+
+static DBSaveData* pSaveObj = NULL;
+
+#define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute()
+#define QUERYBOX(m) QueryBox(this,WinBits(WB_YES_NO|WB_DEF_YES),m).Execute()
+
+SEG_EOFGLOBALS()
+
+
+//============================================================================
+// class DBSaveData
+
+class DBSaveData
+{
+public:
+ DBSaveData( Edit& rEd, CheckBox& rHdr, CheckBox& rSize, CheckBox& rFmt,
+ CheckBox& rStrip, ScRange& rArea )
+ : bHeader(FALSE), bSize(FALSE), bFormat(FALSE), bDirty(FALSE),
+ rEdAssign(rEd),
+ rBtnHeader(rHdr), rBtnSize(rSize), rBtnFormat(rFmt), rBtnStrip(rStrip),
+ rCurArea(rArea) {}
+
+ void Clear();
+ void Save();
+ void Restore();
+
+private:
+ Edit& rEdAssign;
+ CheckBox& rBtnHeader;
+ CheckBox& rBtnSize;
+ CheckBox& rBtnFormat;
+ CheckBox& rBtnStrip;
+ ScRange& rCurArea;
+ String aStr;
+ ScRange aArea;
+ BOOL bHeader:1;
+ BOOL bSize:1;
+ BOOL bFormat:1;
+ BOOL bStrip:1;
+ BOOL bDirty:1;
+};
+
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_0f)
+
+void DBSaveData::Clear()
+{
+ aStr.Erase();
+ aArea = ScRange();
+ bHeader = bSize = bFormat = bStrip = bDirty = FALSE;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_10)
+
+void DBSaveData::Save()
+{
+ aArea = rCurArea;
+ aStr = rEdAssign.GetText();
+ bHeader = rBtnHeader.IsChecked();
+ bSize = rBtnSize.IsChecked();
+ bFormat = rBtnFormat.IsChecked();
+ bStrip = rBtnStrip.IsChecked();
+ bDirty = TRUE;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_11)
+
+void DBSaveData::Restore()
+{
+ if ( bDirty )
+ {
+ rCurArea = aArea;
+ rEdAssign.SetText( aStr );
+ rBtnHeader.Check ( bHeader );
+ rBtnSize.Check ( bSize );
+ rBtnFormat.Check ( bFormat );
+ rBtnStrip.Check ( bStrip );
+ bDirty = FALSE;
+ }
+}
+
+
+//============================================================================
+// class ScDbNameDlg
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_01)
+
+ScDbNameDlg::ScDbNameDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData )
+
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_DBNAMES ),
+ //
+ aGbName ( this, ScResId( GB_NAME ) ),
+ aEdName ( this, ScResId( ED_NAME ) ),
+
+ aGbAssign ( this, ScResId( GB_ASSIGN ) ),
+ aEdAssign ( this, ScResId( ED_DBAREA ) ),
+ aRbAssign ( this, ScResId( RB_DBAREA ), &aEdAssign ),
+ aGbOptions ( this, ScResId( GB_OPTIONS ) ),
+ aBtnHeader ( this, ScResId( BTN_HEADER ) ),
+ aBtnDoSize ( this, ScResId( BTN_SIZE ) ),
+ aBtnKeepFmt ( this, ScResId( BTN_FORMAT ) ),
+ aBtnStripData ( this, ScResId( BTN_STRIPDATA ) ),
+ aFTSource ( this, ScResId( FT_SOURCE ) ),
+ aFTOperations ( this, ScResId( FT_OPERATIONS ) ),
+
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnAdd ( this, ScResId( BTN_ADD ) ),
+ aBtnRemove ( this, ScResId( BTN_REMOVE ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnMore ( this, ScResId( BTN_MORE ) ),
+
+ aStrAdd ( ScResId( STR_ADD ) ),
+ aStrModify ( ScResId( STR_MODIFY ) ),
+ aStrNoName ( ScGlobal::GetRscString(STR_DB_NONAME) ),
+ aStrInvalid ( ScResId( STR_DB_INVALID ) ),
+ //
+ pViewData ( ptrViewData ),
+ pDoc ( ptrViewData->GetDocument() ),
+ aLocalDbCol ( *(pDoc->GetDBCollection()) ),
+ bRefInputMode ( FALSE )
+{
+ // damit die Strings in der Resource bei den FixedTexten bleiben koennen:
+ aStrSource = aFTSource.GetText();
+ aStrOperations = aFTOperations.GetText();
+
+ pSaveObj = new DBSaveData( aEdAssign, aBtnHeader,
+ aBtnDoSize, aBtnKeepFmt, aBtnStripData, theCurArea );
+ Init();
+ FreeResource();
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_02)
+
+__EXPORT ScDbNameDlg::~ScDbNameDlg()
+{
+ DELETEZ( pSaveObj );
+
+ ScRange* pEntry = (ScRange*)aRemoveList.First();
+ while ( pEntry )
+ {
+ delete aRemoveList.Remove( pEntry );
+ pEntry = (ScRange*)aRemoveList.Next();
+ }
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_03)
+
+void ScDbNameDlg::Init()
+{
+ aBtnHeader.Check( TRUE ); // Default: mit Spaltenkoepfen
+
+ aBtnMore.AddWindow( &aGbOptions );
+ aBtnMore.AddWindow( &aBtnHeader );
+ aBtnMore.AddWindow( &aBtnDoSize );
+ aBtnMore.AddWindow( &aBtnKeepFmt );
+ aBtnMore.AddWindow( &aBtnStripData );
+ aBtnMore.AddWindow( &aFTSource );
+ aBtnMore.AddWindow( &aFTOperations );
+
+ String theAreaStr;
+ USHORT nStartCol = 0;
+ USHORT nStartRow = 0;
+ USHORT nStartTab = 0;
+ USHORT nEndCol = 0;
+ USHORT nEndRow = 0;
+ USHORT nEndTab = 0;
+
+ aBtnOk.SetClickHdl ( LINK( this, ScDbNameDlg, OkBtnHdl ) );
+ aBtnCancel.SetClickHdl ( LINK( this, ScDbNameDlg, CancelBtnHdl ) );
+ aBtnAdd.SetClickHdl ( LINK( this, ScDbNameDlg, AddBtnHdl ) );
+ aBtnRemove.SetClickHdl ( LINK( this, ScDbNameDlg, RemoveBtnHdl ) );
+ aEdName.SetModifyHdl ( LINK( this, ScDbNameDlg, NameModifyHdl ) );
+ aEdAssign.SetModifyHdl ( LINK( this, ScDbNameDlg, AssModifyHdl ) );
+ UpdateNames();
+
+ if ( pViewData && pDoc )
+ {
+ ScDBCollection* pDBColl = pDoc->GetDBCollection();
+ ScDBData* pDBData = NULL;
+
+ pViewData->GetSimpleArea( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab );
+
+ theCurArea = ScRange( ScAddress( nStartCol, nStartRow, nStartTab ),
+ ScAddress( nEndCol, nEndRow, nEndTab ) );
+
+ theCurArea.Format( theAreaStr, ABS_DREF3D, pDoc );
+
+ if ( pDBColl )
+ {
+ // Feststellen, ob definierter DB-Bereich markiert wurde:
+ pDBData = pDBColl->GetDBAtCursor( nStartCol, nStartRow, nStartTab, TRUE );
+ if ( pDBData )
+ {
+ String theDbName;
+ ScAddress& rStart = theCurArea.aStart;
+ ScAddress& rEnd = theCurArea.aEnd;
+ USHORT nCol1, nCol2, nRow1, nRow2, nTab;
+
+ pDBData->GetArea( nTab, nCol1, nRow1, nCol2, nRow2 );
+
+ if ( (rStart.Tab() == nTab)
+ && (rStart.Col() == nCol1) && (rStart.Row() == nRow1)
+ && (rEnd.Col() == nCol2) && (rEnd.Row() == nRow2 ) )
+ {
+ pDBData->GetName( theDbName );
+ if ( theDbName != aStrNoName )
+ aEdName.SetText( theDbName );
+ else
+ aEdName.SetText( EMPTY_STRING );
+ aBtnHeader.Check( pDBData->HasHeader() );
+ aBtnDoSize.Check( pDBData->IsDoSize() );
+ aBtnKeepFmt.Check( pDBData->IsKeepFmt() );
+ aBtnStripData.Check( pDBData->IsStripData() );
+ SetInfoStrings( pDBData );
+ }
+ }
+ }
+ }
+
+ aEdAssign.SetText( theAreaStr );
+ aEdName.GrabFocus();
+ bSaved=TRUE;
+ pSaveObj->Save();
+ NameModifyHdl( 0 );
+}
+
+#pragma SEG_FUNCDEF(dbnamdlg_14)
+
+void ScDbNameDlg::SetInfoStrings( const ScDBData* pDBData )
+{
+ String aSource = aStrSource;
+ if (pDBData)
+ {
+ aSource += ' ';
+ aSource += pDBData->GetSourceString();
+ }
+ aFTSource.SetText( aSource );
+
+ String aOper = aStrOperations;
+ if (pDBData)
+ {
+ aOper += ' ';
+ aOper += pDBData->GetOperations();
+ }
+ aFTOperations.SetText( aOper );
+}
+
+//----------------------------------------------------------------------------
+// Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als
+// neue Selektion im Referenz-Fenster angezeigt wird.
+#pragma SEG_FUNCDEF(dbnamdlg_04)
+
+void ScDbNameDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( aEdAssign.IsEnabled() )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart( &aEdAssign );
+
+ theCurArea = rRef;
+
+ String aRefStr;
+ theCurArea.Format( aRefStr, ABS_DREF3D, pDoc );
+ aEdAssign.SetRefString( aRefStr );
+ aBtnHeader.Enable();
+ aBtnDoSize.Enable();
+ aBtnKeepFmt.Enable();
+ aBtnStripData.Enable();
+ aFTSource.Enable();
+ aFTOperations.Enable();
+ aBtnAdd.Enable();
+ bSaved=TRUE;
+ pSaveObj->Save();
+ }
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_05)
+
+BOOL __EXPORT ScDbNameDlg::Close()
+{
+ return DoClose( ScDbNameDlgWrapper::GetChildWindowId() );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_06)
+
+void ScDbNameDlg::SetActive()
+{
+ aEdAssign.GrabFocus();
+
+ // kein NameModifyHdl, weil sonst Bereiche nicht geaendert werden koennen
+ // (nach dem Aufziehen der Referenz wuerde der alte Inhalt wieder angezeigt)
+ // (der ausgewaehlte DB-Name hat sich auch nicht veraendert)
+
+ RefInputDone();
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_07)
+
+void ScDbNameDlg::UpdateNames()
+{
+ USHORT nNameCount = aLocalDbCol.GetCount();
+
+ aEdName.SetUpdateMode( FALSE );
+ //-----------------------------------------------------------
+ aEdName.Clear();
+ aEdAssign.SetText( EMPTY_STRING );
+
+ if ( nNameCount > 0 )
+ {
+ ScDBData* pDbData = NULL;
+ String aString;
+
+ for ( USHORT i=0; i<nNameCount; i++ )
+ {
+ pDbData = (ScDBData*)(aLocalDbCol.At( i ));
+ if ( pDbData )
+ {
+ pDbData->GetName( aString );
+ if ( aString != aStrNoName )
+ aEdName.InsertEntry( aString );
+ }
+ }
+ }
+ else
+ {
+ aBtnAdd.SetText( aStrAdd );
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ }
+ //-----------------------------------------------------------
+ aEdName.SetUpdateMode( TRUE );
+ aEdName.Invalidate();
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_0e)
+
+void ScDbNameDlg::UpdateDBData( const String& rStrName )
+{
+ String theArea;
+ USHORT nAt;
+ ScDBData* pData;
+
+ aLocalDbCol.SearchName( rStrName, nAt );
+ pData = (ScDBData*)(aLocalDbCol.At( nAt ));
+
+ if ( pData )
+ {
+ USHORT nColStart = 0;
+ USHORT nRowStart = 0;
+ USHORT nColEnd = 0;
+ USHORT nRowEnd = 0;
+ USHORT nTab = 0;
+
+ pData->GetArea( nTab, nColStart, nRowStart, nColEnd, nRowEnd );
+ theCurArea = ScRange( ScAddress( nColStart, nRowStart, nTab ),
+ ScAddress( nColEnd, nRowEnd, nTab ) );
+ theCurArea.Format( theArea, ABS_DREF3D, pDoc );
+ aEdAssign.SetText( theArea );
+ aBtnAdd.SetText( aStrModify );
+ aBtnHeader.Check( pData->HasHeader() );
+ aBtnDoSize.Check( pData->IsDoSize() );
+ aBtnKeepFmt.Check( pData->IsKeepFmt() );
+ aBtnStripData.Check( pData->IsStripData() );
+ SetInfoStrings( pData );
+ }
+
+ aBtnAdd.SetText( aStrModify );
+ aBtnAdd.Enable();
+ aBtnRemove.Enable();
+ aBtnHeader.Enable();
+ aBtnDoSize.Enable();
+ aBtnKeepFmt.Enable();
+ aBtnStripData.Enable();
+ aFTSource.Enable();
+ aFTOperations.Enable();
+}
+
+//------------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(dbnamdlg_12)
+
+BOOL ScDbNameDlg::IsRefInputMode() const
+{
+ return bRefInputMode;
+}
+
+//------------------------------------------------------------------------
+// Handler:
+// ========
+#pragma SEG_FUNCDEF(dbnamdlg_08)
+
+IMPL_LINK( ScDbNameDlg, OkBtnHdl, void *, EMPTYARG )
+{
+ AddBtnHdl( 0 );
+
+ // Der View die Aenderungen und die Remove-Liste uebergeben:
+ // beide werden nur als Referenz uebergeben, so dass an dieser
+ // Stelle keine Speicherleichen entstehen koennen:
+ if ( pViewData )
+ pViewData->GetView()->
+ NotifyCloseDbNameDlg( aLocalDbCol, aRemoveList );
+
+ Close();
+ return 0;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_0d)
+
+IMPL_LINK_INLINE_START( ScDbNameDlg, CancelBtnHdl, void *, EMPTYARG )
+{
+ Close();
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScDbNameDlg, CancelBtnHdl, void *, EMPTYARG )
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_09)
+
+IMPL_LINK( ScDbNameDlg, AddBtnHdl, void *, EMPTYARG )
+{
+ String aNewName = aEdName.GetText();
+ String aNewArea = aEdAssign.GetText();
+
+ aNewName.EraseLeadingChars( ' ' );
+ aNewName.EraseTrailingChars( ' ' );
+
+ if ( aNewName.Len() > 0 && aNewArea.Len() > 0 )
+ {
+ if ( ScRangeData::IsNameValid( aNewName, pDoc ) )
+ {
+ // weil jetzt editiert werden kann, muss erst geparst werden
+ ScRange aTmpRange;
+ String aText = aEdAssign.GetText();
+ if ( aTmpRange.ParseAny( aText, pDoc ) & SCA_VALID )
+ {
+ theCurArea = aTmpRange;
+ ScAddress aStart = theCurArea.aStart;
+ ScAddress aEnd = theCurArea.aEnd;
+
+ ScDBData* pOldEntry = NULL;
+ USHORT nFoundAt = 0;
+ if ( aLocalDbCol.SearchName( aNewName, nFoundAt ) )
+ pOldEntry = aLocalDbCol[nFoundAt];
+ if (pOldEntry)
+ {
+ // Bereich veraendern
+
+ pOldEntry->MoveTo( aStart.Tab(), aStart.Col(), aStart.Row(),
+ aEnd.Col(), aEnd.Row() );
+ pOldEntry->SetByRow( TRUE );
+ pOldEntry->SetHeader( aBtnHeader.IsChecked() );
+ pOldEntry->SetDoSize( aBtnDoSize.IsChecked() );
+ pOldEntry->SetKeepFmt( aBtnKeepFmt.IsChecked() );
+ pOldEntry->SetStripData( aBtnStripData.IsChecked() );
+ }
+ else
+ {
+ // neuen Bereich einfuegen
+
+ ScDBData* pNewEntry = new ScDBData( aNewName, aStart.Tab(),
+ aStart.Col(), aStart.Row(),
+ aEnd.Col(), aEnd.Row(),
+ TRUE, aBtnHeader.IsChecked() );
+ pNewEntry->SetDoSize( aBtnDoSize.IsChecked() );
+ pNewEntry->SetKeepFmt( aBtnKeepFmt.IsChecked() );
+ pNewEntry->SetStripData( aBtnStripData.IsChecked() );
+
+ if ( !aLocalDbCol.Insert( pNewEntry ) )
+ delete pNewEntry;
+ }
+
+ UpdateNames();
+
+ aEdName.SetText( EMPTY_STRING );
+ aEdName.GrabFocus();
+ aBtnAdd.SetText( aStrAdd );
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ aEdAssign.SetText( EMPTY_STRING );
+ aBtnHeader.Check( TRUE ); // Default: mit Spaltenkoepfen
+ aBtnDoSize.Check( FALSE );
+ aBtnKeepFmt.Check( FALSE );
+ aBtnStripData.Check( FALSE );
+ SetInfoStrings( NULL ); // leer
+ theCurArea = ScRange();
+ bSaved=TRUE;
+ pSaveObj->Save();
+ NameModifyHdl( 0 );
+ }
+ else
+ {
+ ERRORBOX( aStrInvalid );
+ aEdAssign.SetSelection( Selection( 0, SELECTION_MAX ) );
+ aEdAssign.GrabFocus();
+ }
+ }
+ else
+ {
+ ERRORBOX( ScGlobal::GetRscString(STR_INVALIDNAME) );
+ aEdName.SetSelection( Selection( 0, SELECTION_MAX ) );
+ aEdName.GrabFocus();
+ }
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_0a)
+
+IMPL_LINK( ScDbNameDlg, RemoveBtnHdl, void *, EMPTYARG )
+{
+ USHORT nRemoveAt = 0;
+ const String aStrEntry = aEdName.GetText();
+
+ if ( aLocalDbCol.SearchName( aStrEntry, nRemoveAt ) )
+ {
+ String aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY );
+ String aMsg = aStrDelMsg.GetToken( 0, '#' );
+
+ aMsg += aStrEntry;
+ aMsg += aStrDelMsg.GetToken( 1, '#' );
+
+ if ( RET_YES == QUERYBOX(aMsg) )
+ {
+ ScDBData* pEntry = (ScDBData*)aLocalDbCol.At(nRemoveAt);
+
+ if ( pEntry )
+ {
+ USHORT nTab, nColStart, nRowStart, nColEnd, nRowEnd;
+ pEntry->GetArea( nTab, nColStart, nRowStart, nColEnd, nRowEnd );
+ aRemoveList.Insert(
+ new ScRange( ScAddress( nColStart, nRowStart, nTab ),
+ ScAddress( nColEnd, nRowEnd, nTab ) ) );
+ }
+ aLocalDbCol.AtFree( nRemoveAt );
+
+ UpdateNames();
+
+ aEdName.SetText( EMPTY_STRING );
+ aEdName.GrabFocus();
+ aBtnAdd.SetText( aStrAdd );
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ aEdAssign.SetText( EMPTY_STRING );
+ theCurArea = ScRange();
+ aBtnHeader.Check( TRUE ); // Default: mit Spaltenkoepfen
+ aBtnDoSize.Check( FALSE );
+ aBtnKeepFmt.Check( FALSE );
+ aBtnStripData.Check( FALSE );
+ SetInfoStrings( NULL ); // leer
+ bSaved=FALSE;
+ pSaveObj->Restore();
+ NameModifyHdl( 0 );
+ }
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_0c)
+
+IMPL_LINK( ScDbNameDlg, NameModifyHdl, void *, EMPTYARG )
+{
+ String theName = aEdName.GetText();
+ BOOL bNameFound = (COMBOBOX_ENTRY_NOTFOUND
+ != aEdName.GetEntryPos( theName ));
+
+ if ( theName.Len() == 0 )
+ {
+ if ( aBtnAdd.GetText() != aStrAdd )
+ aBtnAdd.SetText( aStrAdd );
+ aBtnAdd .Disable();
+ aBtnRemove .Disable();
+ aGbAssign .Disable();
+ aBtnHeader .Disable();
+ aBtnDoSize .Disable();
+ aBtnKeepFmt .Disable();
+ aBtnStripData.Disable();
+ aFTSource .Disable();
+ aFTOperations.Disable();
+ aEdAssign .Disable();
+ aRbAssign .Disable();
+ //bSaved=FALSE;
+ //pSaveObj->Restore();
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+ bRefInputMode = FALSE;
+ }
+ else
+ {
+ if ( bNameFound )
+ {
+ if ( aBtnAdd.GetText() != aStrModify )
+ aBtnAdd.SetText( aStrModify );
+
+ if(!bSaved)
+ {
+ bSaved=TRUE;
+ pSaveObj->Save();
+ }
+ UpdateDBData( theName );
+ }
+ else
+ {
+ if ( aBtnAdd.GetText() != aStrAdd )
+ aBtnAdd.SetText( aStrAdd );
+
+ bSaved=FALSE;
+ pSaveObj->Restore();
+
+ if ( aEdAssign.GetText().Len() > 0 )
+ {
+ aBtnAdd.Enable();
+ aBtnHeader.Enable();
+ aBtnDoSize.Enable();
+ aBtnKeepFmt.Enable();
+ aBtnStripData.Enable();
+ aFTSource.Enable();
+ aFTOperations.Enable();
+ }
+ else
+ {
+ aBtnAdd.Disable();
+ aBtnHeader.Disable();
+ aBtnDoSize.Disable();
+ aBtnKeepFmt.Disable();
+ aBtnStripData.Disable();
+ aFTSource.Disable();
+ aFTOperations.Disable();
+ }
+ aBtnRemove.Disable();
+ }
+
+ aGbAssign.Enable();
+ aEdAssign.Enable();
+ aRbAssign.Enable();
+
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+ bRefInputMode = TRUE;
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(dbnamdlg_13)
+
+IMPL_LINK( ScDbNameDlg, AssModifyHdl, void *, EMPTYARG )
+{
+ // hier parsen fuer Save() etc.
+
+ ScRange aTmpRange;
+ String aText = aEdAssign.GetText();
+ if ( aTmpRange.ParseAny( aText, pDoc ) & SCA_VALID )
+ theCurArea = aTmpRange;
+
+ return 0;
+}
+
+/*----------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.54 2000/09/17 14:08:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.53 2000/08/31 16:38:20 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.52 2000/02/11 12:22:54 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.51 1999/06/09 16:09:04 NN
+ Sfx-appwin removed
+
+
+ Rev 1.50 09 Jun 1999 18:09:04 NN
+ Sfx-appwin removed
+
+ Rev 1.49 10 Dec 1998 20:09:18 ANK
+ #51738# Umstellung auf ScRefEdit zum Anzeigen von Referenzen
+
+ Rev 1.48 12 Aug 1998 19:47:34 ANK
+ #54702# IsRefInputMode ueberarbeitet
+
+ Rev 1.47 06 Aug 1998 21:19:48 ANK
+ #54702# Enablen/Disablen der Applikation nur noch in ScAnyRefDlg
+
+ Rev 1.46 01 Jul 1998 15:00:12 ANK
+ MUSS-Aenderung wg. Autocomplete
+
+ Rev 1.45 15 Mar 1998 14:23:20 NN
+ App-Fenster disablen mit bChild=FALSE
+
+ Rev 1.44 05 Dec 1997 19:56:22 ANK
+ Includes geaendert
+
+ Rev 1.43 03 Sep 1997 15:23:42 RG
+ change header
+
+ Rev 1.42 12 Jun 1997 13:16:18 NN
+ #40646# STR_DB_NONAME statt SCSTR_NONAME fuer DB-Bereiche
+
+ Rev 1.41 04 Mar 1997 18:47:48 NN
+ 37186# nur gueltige Namen (wie Bereichsnamen) zulassen
+
+ Rev 1.40 23 Feb 1997 22:49:22 NN
+ Button 'Importierte Daten nicht speichern'
+
+ Rev 1.39 13 Feb 1997 22:46:16 NN
+ neue Optionen einstellbar
+
+ Rev 1.38 17 Jan 1997 15:10:44 NN
+ #35110# Bereich kann auch im Edit eingegeben werden
+
+ Rev 1.37 18 Dec 1996 14:22:32 ER
+ AddBtnHdl: Index eines geaenderten Bereiches erhalten
+
+ Rev 1.36 13 Nov 1996 20:11:16 NN
+ #33143# AutoHide nur bei Bereichsreferenz
+
+ Rev 1.35 29 Oct 1996 14:03:34 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.34 22 Oct 1996 15:29:58 RJ
+ Buttons fuer Referenzeingabe
+
+ Rev 1.33 08 Oct 1996 15:00:02 RJ
+ Einklappen des Fensters bei Referenzeingabe
+
+ Rev 1.32 15 Aug 1996 12:20:26 NN
+ #30362# SetReference: ggf. Add-Button enablen
+
+ Rev 1.31 18 Jul 1996 16:51:54 NN
+ Parameter bStartOnly bei IsDBAtCursor
+
+ Rev 1.30 10 Jun 1996 16:28:48 NN
+ #28513# Restore statt Save im RemoveButtonHdl
+
+ Rev 1.29 07 Jun 1996 14:23:42 NN
+ #28451# kein NameModifyHdl in SetActive
+
+ Rev 1.28 05 Jun 1996 19:19:00 NN
+ kein Show im ctor (Position wird von aussen gesetzt)
+
+ Rev 1.27 26 Apr 1996 12:02:40 NN
+ SfxModelessDialog statt ModelessDialog
+
+ Rev 1.26 25 Apr 1996 18:08:34 NN
+ SetReference aufgeteilt in SetReference und AddRefEntry
+
+ Rev 1.25 29 Jan 1996 15:12:22 MO
+ neuer Link
+
+ Rev 1.24 27 Nov 1995 16:39:50 MO
+ RangeUtil/Area/Tripel gegen Address/Range ersetzt
+
+ Rev 1.23 14 Nov 1995 18:05:36 MO
+ Disable-Enable-Logik, DBName ueberpruefen
+
+ Rev 1.22 09 Nov 1995 10:20:14 JN
+ weitere Verbesseungen Modeless Dialoge
+
+ Rev 1.21 08 Nov 1995 13:05:48 MO
+ 301-Aenderungen
+
+ Rev 1.20 08 Nov 1995 10:45:48 JN
+ Umstellung auf SfxChildWindow
+
+ Rev 1.19 26 Oct 1995 11:29:44 MO
+ Nachfrage beim Loeschen von Eintraegen
+
+ Rev 1.18 14 Sep 1995 12:37:24 MO
+ FixedInfos
+
+ Rev 1.17 31 Jul 1995 08:58:00 MO
+ CancelBtnHdl
+
+ Rev 1.16 25 Apr 1995 17:01:30 MO
+ Knopfflackern beseitigt
+
+ Rev 1.15 20 Apr 1995 10:34:06 MO
+ Show() im Ctor
+
+ Rev 1.14 18 Apr 1995 16:55:00 MO
+ Flackern bei SetText() an Buttons unterbunden
+
+ Rev 1.13 24 Mar 1995 15:37:50 MO
+ Mauseingabe von Referenzen korrigiert
+
+ Rev 1.12 29 Jan 1995 13:17:42 NN
+ include dbfunc statt tabview
+
+ Rev 1.11 27 Jan 1995 18:39:50 MO
+ __EXECUTE durch __EXPORT ersetzt
+
+ Rev 1.10 26 Jan 1995 18:28:00 TRI
+ __EXPORT bei virtuellen Methoden eingebaut
+
+ Rev 1.9 23 Jan 1995 16:44:34 MO
+ * unbenannt-DB-Bereich wird ignoriert
+ * NotifyClose nicht mehr im Close() sondern im Ok-Handler
+ damit ist wieder Abbrechen moeglich
+
+ Rev 1.8 19 Jan 1995 17:12:14 TRI
+ __EXPORT vor verschiedene LinkHandler gesetzt
+
+ Rev 1.7 19 Jan 1995 11:36:20 MO
+ Uebergabe der Veraenderungen an die View in der Close()-Methode.
+ Dabei werden nur Referenzen weitergereicht, so dass im Dialog
+ keine Speicherleichen entstehen.
+
+ Rev 1.6 18 Jan 1995 13:56:26 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.5 12 Jan 1995 14:45:56 MO
+ * Verwendung von ScRangeUtil
+ * Enable/Disable-Logik ueberarbeitet
+ * Erkennung von DB-Bereichen
+
+ Rev 1.4 04 Jan 1995 19:28:00 MO
+ Verwendung von DbUiUtil
+
+ Rev 1.3 04 Jan 1995 13:09:46 MO
+ Hinzufuegen/Loeschen-Knoepfe: Enable/Diable-Fehler beseitigt
+
+ Rev 1.2 23 Dec 1994 12:26:52 MO
+ Bereichseingabe nur noch mit der Maus moeglich
+
+ Rev 1.1 23 Dec 1994 09:27:58 MO
+ Korrigierte Version. Zusammen mit namedlg und den
+ Collections auf einen lauffaehhigen Stand gebracht.
+
+----------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/expftext.cxx b/sc/source/ui/dbgui/expftext.cxx
new file mode 100644
index 000000000000..1781dc24e23c
--- /dev/null
+++ b/sc/source/ui/dbgui/expftext.cxx
@@ -0,0 +1,152 @@
+/*************************************************************************
+ *
+ * $RCSfile: expftext.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "expftext.hxx"
+#include <vcl/help.hxx>
+
+/*************************************************************************
+#* Member: ScExpandedFixedText Datum:18.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScExpandedFixedText
+#*
+#* Funktion: Konstruktor der Klasse ScExpandedFixedText
+#*
+#* Input: Parent- Window, Fenster-Attribute
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+ScExpandedFixedText::ScExpandedFixedText( Window* pParent,
+ WinBits nWinStyle) :
+
+ FixedText( pParent, nWinStyle )
+{
+
+}
+
+/*************************************************************************
+#* Member: ScExpandedFixedText Datum:18.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: MD_Test
+#*
+#* Funktion: Konstruktor der Klasse SvxCtrDial
+#*
+#* Input: Parent- Window, Resource ID
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+ScExpandedFixedText::ScExpandedFixedText( Window* pParent,
+ const ResId& rResId) :
+ FixedText( pParent, rResId )
+{
+
+}
+
+/*************************************************************************
+#* Member: RequestHelp Datum:18.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScExpandedFixedText
+#*
+#* Funktion: Die Methode wird gerufen, um Hilfe fuer das Fenster
+#* anzuzeigen. Zeigt das Fenster einen gekuerzten Text
+#* an, so wird selbiger in voller Laenge angezeigt.
+#*
+#* Input: HelpEvent
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScExpandedFixedText::RequestHelp(const HelpEvent& rEvt)
+{
+ String aTxtStr = GetText();
+ long nTxtWidth = GetTextWidth(aTxtStr);
+ if ( ( rEvt.GetMode() & HELPMODE_QUICK ) == HELPMODE_QUICK &&
+ nTxtWidth > GetSizePixel().Width())
+ {
+ Point aShowPoint = OutputToScreenPixel(Point(0,0));
+ long nTxtHeight = GetTextHeight();
+
+ Help::ShowQuickHelp( this,
+ Rectangle( aShowPoint, Size(nTxtWidth,nTxtHeight) ), aTxtStr,
+ QUICKHELP_TOP|QUICKHELP_LEFT );
+ }
+ else
+ {
+ FixedText::RequestHelp( rEvt );
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/dbgui/fieldwnd.cxx b/sc/source/ui/dbgui/fieldwnd.cxx
new file mode 100644
index 000000000000..490d7626bfc3
--- /dev/null
+++ b/sc/source/ui/dbgui/fieldwnd.cxx
@@ -0,0 +1,614 @@
+/*************************************************************************
+ *
+ * $RCSfile: fieldwnd.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <vcl/virdev.hxx>
+#include <segmentc.hxx>
+#endif
+
+#include "fieldwnd.hxx"
+#include "pvlaydlg.hxx"
+#include "pvglob.hxx"
+
+SEG_EOFGLOBALS()
+
+//========================================================================
+#pragma SEG_FUNCDEF(fieldwnd_01)
+
+FieldWindow::FieldWindow( ScPivotLayoutDlg* pDialog, const ResId& rResId,
+ FieldType eType )
+ : Window ( pDialog, rResId ),
+ pDlg ( pDialog ),
+ eFieldType ( eType ),
+ nFieldSize ( (eType != TYPE_SELECT) ? MAX_FIELDS : PAGE_SIZE ),
+ nFieldCount ( 0 ),
+ aCenterPos ( 0,0 )
+{
+ aWndRect = Rectangle( GetPosPixel(), GetSizePixel() );
+ aFieldArr = new String*[nFieldSize];
+
+ for ( USHORT i=0; i<nFieldSize; i++ )
+ aFieldArr[i] = NULL;
+
+ if ( eFieldType != TYPE_SELECT )
+ {
+ Size aWinSize( GetSizePixel() );
+ Size aTextSize( GetTextWidth( GetText() ), GetTextHeight() );
+
+ aCenterPos = Point( (aWinSize.Width() - aTextSize.Width())/2,
+ (aWinSize.Height() - aTextSize.Height())/2 );
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_02)
+
+__EXPORT FieldWindow::~FieldWindow()
+{
+ for ( USHORT i=0; i<nFieldCount; i++ )
+ delete aFieldArr[i];
+ delete [] aFieldArr;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_05)
+
+void __EXPORT FieldWindow::Paint( const Rectangle& rRect )
+{
+ DoPaint( rRect );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_09)
+
+void __EXPORT FieldWindow::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if ( rMEvt.IsLeft() )
+ {
+ USHORT nIndex = 0;
+
+ if ( GetFieldIndex( rMEvt.GetPosPixel(), nIndex ) )
+ {
+ if ( rMEvt.GetClicks() == 1 )
+ {
+ const Pointer* pPtr =
+ pDlg->NotifyMouseButtonDown( eFieldType, nIndex );
+
+ CaptureMouse();
+
+ if ( *pPtr != GetPointer() )
+ SetPointer( *pPtr );
+ }
+ else
+ pDlg->NotifyDoubleClick( eFieldType, nIndex );
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_10)
+
+void __EXPORT FieldWindow::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ if ( rMEvt.IsLeft() )
+ {
+ if ( rMEvt.GetClicks() == 1 )
+ {
+ pDlg->NotifyMouseButtonUp(
+ OutputToScreenPixel( rMEvt.GetPosPixel() ) );
+ SetPointer( Pointer( POINTER_ARROW ) );
+ }
+
+ if ( IsMouseCaptured() )
+ ReleaseMouse();
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_0a)
+
+void __EXPORT FieldWindow::MouseMove( const MouseEvent& rMEvt )
+{
+ if ( IsMouseCaptured() )
+ {
+ const Pointer* pPtr =
+ pDlg->NotifyMouseMove( OutputToScreenPixel( rMEvt.GetPosPixel() ) );
+ if ( *pPtr != GetPointer() )
+ SetPointer( *pPtr );
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_03)
+
+void FieldWindow::Redraw()
+{
+ DoPaint( Rectangle( Point(), GetSizePixel() ) );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_04)
+
+void FieldWindow::DoPaint( const Rectangle& rRect )
+{
+ Point aPos0;
+ VirtualDevice aVirDev;
+ Size aSize( GetSizePixel() );
+ Font aFont( GetFont() ); // Font vom Window
+
+ aFont.SetTransparent( TRUE );
+ aVirDev.SetFont( aFont );
+ aVirDev.SetOutputSizePixel ( aSize );
+
+ if ( eFieldType != TYPE_SELECT )
+ {
+ aVirDev.SetLineColor( Color( COL_BLACK ) );
+ aVirDev.SetFillColor( Color( COL_WHITE ) );
+ aVirDev.DrawRect( Rectangle( aPos0, aSize ) );
+
+ aVirDev.DrawText( aCenterPos, GetText() );
+ }
+ else
+ {
+ aVirDev.SetLineColor();
+ aVirDev.SetFillColor( GetBackground().GetColor() );
+ aVirDev.DrawRect( Rectangle( aPos0, aSize ) );
+ }
+
+ switch ( eFieldType )
+ {
+ case TYPE_ROW:
+ {
+ Rectangle aRect( aPos0, Size( OWIDTH, OHEIGHT ) );
+
+ for ( USHORT i=0; i<nFieldCount; i++ )
+ {
+ if ( aFieldArr[i] )
+ {
+ aRect.SetPos( Point( 0,OHEIGHT*i ) );
+ DrawField( aVirDev, aRect, *(aFieldArr[i]) );
+ }
+ }
+ }
+ break;
+
+ case TYPE_COL:
+ {
+ Rectangle aRect( aPos0, Size( OWIDTH, OHEIGHT ) );
+ USHORT nX = 0;
+ USHORT nY = 0;
+
+ for ( USHORT i=0; i<nFieldCount; i++ )
+ {
+ if ( aFieldArr[i] )
+ {
+ if ( i==4 ) { nY = 1; nX = 0; }
+ aRect.SetPos( Point( OWIDTH*nX, OHEIGHT*nY ) );
+ DrawField( aVirDev, aRect, *(aFieldArr[i]) );
+ nX++;
+ }
+ }
+ }
+ break;
+
+ case TYPE_DATA:
+ {
+ Rectangle aRect( aPos0, Size( GetSizePixel().Width(), OHEIGHT ) );
+
+ for ( USHORT i=0; i<nFieldCount; i++ )
+ {
+ if ( aFieldArr[i] )
+ {
+ aRect.SetPos( Point( 0, OHEIGHT*i ) );
+ DrawField( aVirDev, aRect, *(aFieldArr[i]) );
+ }
+ }
+ }
+ break;
+
+ case TYPE_SELECT:
+ {
+ Rectangle aRect( aPos0, Size( OWIDTH, OHEIGHT ) );
+ USHORT nXOff = OWIDTH + SSPACE;
+
+ for ( USHORT i=0; i<nFieldCount; i++ )
+ {
+ if ( aFieldArr[i] )
+ {
+ aRect.SetPos(
+ Point( (i>7 ? nXOff : 0),
+ ((i%MAX_FIELDS)
+ *(OHEIGHT
+ + ( (i!=0)&&(i!=MAX_FIELDS)
+ ? SSPACE : 0 )))
+ ));
+
+ DrawField( aVirDev, aRect, *(aFieldArr[i]) );
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ DrawBitmap( aPos0, aVirDev.GetBitmap( aPos0, aSize ) );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_11)
+
+void FieldWindow::DrawField( OutputDevice& rDev,
+ const Rectangle& rRect,
+ const String& rStr )
+{
+ VirtualDevice aVirDev( rDev );
+ Size aDevSize( rRect.GetSize() );
+ USHORT nWidth = (USHORT)aDevSize.Width();
+ USHORT nHeight = (USHORT)aDevSize.Height();
+ USHORT nLabelWidth = (USHORT)rDev.GetTextWidth(rStr);
+ USHORT nLabelHeight = (USHORT)rDev.GetTextHeight();
+ Point topLeft ( 1, 1 );
+ Point topRight ( nWidth-2, 1 );
+ Point botLeft ( 1, nHeight-2 );
+ Point botRight ( nWidth-2, nHeight-2 );
+ Point aLabelPos( ((nWidth>nLabelWidth+2) ?(nWidth-nLabelWidth)/2 :2),
+ ((nHeight>nLabelHeight+2) ?(nHeight-nLabelHeight)/2 :2) );
+
+ aVirDev.SetOutputSizePixel ( aDevSize );
+ aVirDev.SetFont ( rDev.GetFont() );
+ aVirDev.SetFillColor( GetBackground().GetColor() );
+ aVirDev.SetLineColor( Color( COL_BLACK ) );
+
+ aVirDev.DrawRect( Rectangle( Point(), aDevSize ) ); // 1 Pixel Umrandung
+ aVirDev.DrawText( aLabelPos, rStr ); // der Text
+ aVirDev.SetLineColor( Color( COL_WHITE ) ); // 3D-Rahmen
+ aVirDev.DrawLine( topLeft, topRight );
+ aVirDev.DrawLine( topLeft, botLeft );
+ aVirDev.SetLineColor( Color( COL_GRAY ) );
+ aVirDev.DrawLine( botLeft, botRight );
+ aVirDev.DrawLine( topRight, botRight );
+ //--------------------------------------------------------------------
+ rDev.DrawBitmap( rRect.TopLeft(), aVirDev.GetBitmap( Point(), aDevSize ) );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_06)
+
+BOOL FieldWindow::GetInsertIndex( const Point& rInsertPos, USHORT& rIndex )
+{
+ BOOL bIndexFound = FALSE;
+
+ if ( eFieldType != TYPE_SELECT )
+ {
+ bIndexFound = GetFieldIndex( rInsertPos, rIndex );
+ if ( rIndex > nFieldCount-1 )
+ rIndex = nFieldCount-1;
+ }
+
+ return bIndexFound;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_07)
+
+BOOL FieldWindow::GetFirstEmptySlot( USHORT& rIndex )
+{
+ if ( nFieldCount == nFieldSize )
+ return FALSE;
+
+ USHORT i=0;
+ while ( (i<nFieldCount) && (aFieldArr[i]!=NULL) )
+ i++;
+
+ if ( aFieldArr[i] == NULL )
+ {
+ rIndex = i;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_08)
+
+BOOL FieldWindow::GetFieldIndex( const Point& rPos, USHORT& rIndex )
+{
+ BOOL bOk = FALSE;
+ USHORT nX = (USHORT)rPos.X();
+ USHORT nY = (USHORT)rPos.Y();
+
+ switch ( eFieldType )
+ {
+ case TYPE_ROW:
+ case TYPE_DATA:
+ {
+ rIndex = nY / OHEIGHT;
+ bOk = ( rIndex < nFieldCount );
+ }
+ break;
+
+ case TYPE_COL:
+ {
+ USHORT nRow = nY / OHEIGHT;
+ USHORT nCol = nX / OWIDTH;
+ rIndex = nCol+(nRow*4);
+ bOk = ( rIndex < nFieldCount );
+ }
+ break;
+
+ case TYPE_SELECT:
+ {
+ USHORT nCol = nX / (OWIDTH+SSPACE);
+ USHORT nXDiff = nX - (nCol*(OWIDTH+SSPACE));
+
+ if ( nXDiff < OWIDTH )
+ {
+ USHORT nRow = nY / (OHEIGHT+SSPACE);
+ USHORT nYDiff = nY - (nRow*(OHEIGHT+SSPACE));
+
+ if ( nYDiff < OHEIGHT )
+ {
+ rIndex = (nCol*MAX_FIELDS)+nRow;
+ bOk = ( rIndex < nFieldCount );
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return bOk;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_0b)
+
+void FieldWindow::AddField( const String& rStr, USHORT nIndex )
+{
+ if ( nIndex < nFieldSize )
+ {
+ if ( aFieldArr[nIndex] == NULL )
+ {
+ aFieldArr[nIndex] = new String( rStr );
+ nFieldCount++;
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_0c)
+
+BOOL FieldWindow::AddField( const String& rStr,
+ const Point& rAt,
+ USHORT& rAddedAt )
+{
+ if ( (eFieldType == TYPE_SELECT) || (nFieldCount == MAX_FIELDS) )
+ return FALSE;
+
+ USHORT nFirstEmpty = 0;
+
+ if ( GetFirstEmptySlot( nFirstEmpty ) )
+ {
+ USHORT nIndex = 0;
+ GetFieldIndex( rAt, nIndex);
+
+ if ( nFirstEmpty < nIndex )
+ nIndex = nFirstEmpty;
+
+ if ( aFieldArr[nIndex] == NULL )
+ {
+ nFieldCount++;
+ aFieldArr[nIndex] = new String( rStr );
+ }
+ else
+ {
+ nFieldCount++;
+ for ( USHORT i=nFieldCount-1; i>nIndex; i-- )
+ aFieldArr[i] = aFieldArr[i-1];
+ aFieldArr[nIndex] = new String( rStr );
+ }
+ Redraw();
+ rAddedAt = nIndex;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_0d)
+
+void FieldWindow::DelField( USHORT nFieldIndex )
+{
+ if ( nFieldIndex < nFieldCount )
+ {
+ if ( nFieldIndex == nFieldCount-1 )
+ {
+ delete aFieldArr[nFieldIndex];
+ aFieldArr[nFieldIndex] = NULL;
+ nFieldCount--;
+ }
+ else
+ {
+ delete aFieldArr[nFieldIndex];
+ nFieldCount--;
+
+ for ( USHORT i=nFieldIndex; i<nFieldCount; i++ )
+ aFieldArr[i] = aFieldArr[i+1];
+
+ aFieldArr[nFieldCount] = NULL;
+ }
+ Redraw();
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_0e)
+
+void FieldWindow::ClearFields()
+{
+ if ( eFieldType == TYPE_SELECT )
+ {
+ for ( USHORT i=0; i<nFieldCount; i++ )
+ {
+ delete aFieldArr[i];
+ aFieldArr[i] = NULL;
+ }
+ nFieldCount = 0;
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(fieldwnd_0f)
+
+void FieldWindow::SetText( const String& rStr, USHORT nIndex )
+{
+ if ( nIndex < nFieldCount )
+ {
+ *(aFieldArr[nIndex]) = rStr;
+ Redraw();
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.21 2000/09/17 14:08:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.20 2000/08/31 16:38:20 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.19 2000/04/28 18:07:21 nn
+ old sv calls removed
+
+ Revision 1.18 2000/04/14 17:38:02 nn
+ unicode changes
+
+ Revision 1.17 2000/02/11 12:23:20 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.16 1999/09/20 09:28:52 hr
+ #65293#: ColorEnums
+
+ Revision 1.15 1999/09/13 18:26:29 ank
+ MUSS: COL_3DFACE etc.
+
+ Revision 1.14 1998/03/27 16:33:42 NN
+ #48899# DoPaint: Font fuer VDev vom Window nehmen
+
+
+ Rev 1.13 27 Mar 1998 17:33:42 NN
+ #48899# DoPaint: Font fuer VDev vom Window nehmen
+
+ Rev 1.12 05 Dec 1997 19:56:38 ANK
+ Includes geaendert
+
+ Rev 1.11 20 Sep 1996 10:58:16 NN
+ statischen Point aPos0 raus
+
+ Rev 1.10 08 Nov 1995 13:05:48 MO
+ 301-Aenderungen
+
+ Rev 1.9 15 Sep 1995 14:41:24 MO
+ GetFieldIndex()-Ergebins war nicht immer korrekt
+
+ Rev 1.8 04 Aug 1995 16:07:24 MO
+ Maus-Handling umgebaut (BugId: 16928)
+
+ Rev 1.7 24 Jul 1995 14:06:26 MO
+ EXPORT
+
+ Rev 1.6 15 Jun 1995 11:57:00 TRI
+ EXPORTS
+
+ Rev 1.5 15 Jun 1995 08:31:34 TRI
+ EXPORT
+
+ Rev 1.4 29 May 1995 16:55:56 MO
+ COL_3DFACE -> GetBackgroundBrush()
+
+ Rev 1.3 20 Apr 1995 23:24:28 MO
+ SetText
+
+ Rev 1.2 24 Mar 1995 13:16:24 TRI
+ Segmentierung
+
+ Rev 1.1 22 Mar 1995 13:46:04 TRI
+ sfxitems.hxx included
+
+ Rev 1.0 22 Mar 1995 10:48:30 MO
+ Initial revision.
+
+------------------------------------------------------------------------ */
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx
new file mode 100644
index 000000000000..26457c001b4c
--- /dev/null
+++ b/sc/source/ui/dbgui/filtdlg.cxx
@@ -0,0 +1,1162 @@
+/*************************************************************************
+ *
+ * $RCSfile: filtdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes ---------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE -------------------------------------------------------------------
+#include <rangelst.hxx>
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+
+#ifndef _SV_WAITOBJ_HXX //autogen
+#include <vcl/waitobj.hxx>
+#endif
+
+#include "uiitems.hxx"
+#include "dbcolect.hxx"
+#include "reffact.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+
+#include "foptmgr.hxx"
+
+#include "globstr.hrc"
+#include "filter.hrc"
+
+#define _FILTDLG_CXX
+#include "filtdlg.hxx"
+#undef _FILTDLG_CXX
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+// DEFINE --------------------------------------------------------------------
+
+#define ERRORBOX(rid) ErrorBox( this, WinBits( WB_OK|WB_DEF_OK), \
+ ScGlobal::GetRscString(rid) ).Execute()
+
+SEG_EOFGLOBALS()
+
+
+//============================================================================
+// class ScFilterDlg
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_01)
+
+ScFilterDlg::ScFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ const SfxItemSet& rArgSet )
+
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_FILTER ),
+ //
+ _INIT_COMMON_FILTER_RSCOBJS
+ aFtConnect ( this, ScResId( FT_OP ) ),
+ aFtField ( this, ScResId( FT_FIELD ) ),
+ aFtCond ( this, ScResId( FT_COND ) ),
+ aFtVal ( this, ScResId( FT_VAL ) ),
+ aLbField1 ( this, ScResId( LB_FIELD1 ) ),
+ aLbField2 ( this, ScResId( LB_FIELD2 ) ),
+ aLbField3 ( this, ScResId( LB_FIELD3 ) ),
+ aLbConnect1 ( this, ScResId( LB_OP1 ) ),
+ aLbConnect2 ( this, ScResId( LB_OP2 ) ),
+ aLbCond1 ( this, ScResId( LB_COND1 ) ),
+ aLbCond2 ( this, ScResId( LB_COND2 ) ),
+ aLbCond3 ( this, ScResId( LB_COND3 ) ),
+ aEdVal1 ( this, ScResId( ED_VAL1 ) ),
+ aEdVal2 ( this, ScResId( ED_VAL2 ) ),
+ aEdVal3 ( this, ScResId( ED_VAL3 ) ),
+ aGbCriteria ( this, ScResId( GB_CRITERIA ) ),
+ aStrEmpty ( ScResId( SCSTR_EMPTY ) ),
+ aStrNotEmpty ( ScResId( SCSTR_NOTEMPTY ) ),
+ aStrRow ( ScResId( SCSTR_ROW ) ),
+ aStrColumn ( ScResId( SCSTR_COLUMN ) ),
+ //
+ nWhichQuery ( rArgSet.GetPool()->GetWhich( SID_QUERY ) ),
+ theQueryData ( ((const ScQueryItem&)
+ rArgSet.Get( nWhichQuery )).GetQueryData() ),
+ nFieldCount ( 0 ),
+ pOutItem ( NULL ),
+ pOptionsMgr ( NULL ),
+ pViewData ( NULL ),
+ pDoc ( NULL ),
+ pTimer ( NULL ),
+ bRefInputMode ( FALSE ),
+ nSrcTab ( 0 )
+{
+ for (USHORT i=0; i<=MAXCOL; i++)
+ pEntryLists[i] = NULL;
+
+ Init( rArgSet );
+ FreeResource();
+
+ // Hack: RefInput-Kontrolle
+ pTimer = new Timer;
+ pTimer->SetTimeout( 50 ); // 50ms warten
+ pTimer->SetTimeoutHdl( LINK( this, ScFilterDlg, TimeOutHdl ) );
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_02)
+
+__EXPORT ScFilterDlg::~ScFilterDlg()
+{
+ for (USHORT i=0; i<=MAXCOL; i++)
+ delete pEntryLists[i];
+
+ delete pOptionsMgr;
+ delete pOutItem;
+
+ // Hack: RefInput-Kontrolle
+ pTimer->Stop();
+ delete pTimer;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_03)
+
+void __EXPORT ScFilterDlg::Init( const SfxItemSet& rArgSet )
+{
+ const ScQueryItem& rQueryItem = (const ScQueryItem&)
+ rArgSet.Get( nWhichQuery );
+
+ aBtnOk.SetClickHdl ( LINK( this, ScFilterDlg, EndDlgHdl ) );
+ aBtnCancel.SetClickHdl ( LINK( this, ScFilterDlg, EndDlgHdl ) );
+ aBtnMore.SetClickHdl ( LINK( this, ScFilterDlg, MoreClickHdl ) );
+ aBtnHeader.SetClickHdl ( LINK( this, ScFilterDlg, CheckBoxHdl ) );
+ aBtnCase.SetClickHdl ( LINK( this, ScFilterDlg, CheckBoxHdl ) );
+ //
+ aLbField1.SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) );
+ aLbField2.SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) );
+ aLbField3.SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) );
+ aLbConnect1.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
+ aLbConnect2.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
+
+ pViewData = rQueryItem.GetViewData();
+ pDoc = pViewData ? pViewData->GetDocument() : NULL;
+ nSrcTab = pViewData ? pViewData->GetTabNo() : NULL;
+
+ // fuer leichteren Zugriff:
+ aFieldLbArr [0] = &aLbField1;
+ aFieldLbArr [1] = &aLbField2;
+ aFieldLbArr [2] = &aLbField3;
+ aValueEdArr [0] = &aEdVal1;
+ aValueEdArr [1] = &aEdVal2;
+ aValueEdArr [2] = &aEdVal3;
+ aCondLbArr [0] = &aLbCond1;
+ aCondLbArr [1] = &aLbCond2;
+ aCondLbArr [2] = &aLbCond3;
+
+ // Optionen initialisieren lassen:
+
+ pOptionsMgr = new ScFilterOptionsMgr(
+ this,
+ pViewData,
+ theQueryData,
+ aBtnMore,
+ aBtnCase,
+ aBtnRegExp,
+ aBtnHeader,
+ aBtnUnique,
+ aBtnCopyResult,
+ aBtnDestPers,
+ aLbCopyArea,
+ aEdCopyArea,
+ aRbCopyArea,
+ aFtDbAreaLabel,
+ aFtDbArea,
+ aGbOptions,
+ aStrNoName,
+ aStrUndefined );
+
+ // Feldlisten einlesen und Eintraege selektieren:
+
+ FillFieldLists();
+
+ for ( USHORT i=0; i<3; i++ )
+ {
+ String aValStr;
+ USHORT nCondPos = 0;
+ USHORT nFieldSelPos = 0;
+
+ ScQueryEntry& rEntry = theQueryData.GetEntry(i);
+ if ( rEntry.bDoQuery )
+ {
+ nCondPos = (USHORT)rEntry.eOp;
+ nFieldSelPos = GetFieldSelPos( rEntry.nField );
+
+ if ( rEntry.nVal == SC_EMPTYFIELDS )
+ {
+ aValStr = aStrEmpty;
+ aCondLbArr[i]->Disable();
+ }
+ else if ( rEntry.nVal == SC_NONEMPTYFIELDS )
+ {
+ aValStr = aStrNotEmpty;
+ aCondLbArr[i]->Disable();
+ }
+ else
+ aValStr = *rEntry.pStr;
+ }
+ else if ( i == 0 )
+ nFieldSelPos = GetFieldSelPos( pViewData->GetCurX() );
+
+ aFieldLbArr[i]->SelectEntryPos( nFieldSelPos );
+ aCondLbArr [i]->SelectEntryPos( nCondPos );
+ aValueEdArr[i]->SetText( aValStr );
+ aValueEdArr[i]->SetModifyHdl( LINK( this, ScFilterDlg, ValModifyHdl ) );
+ UpdateValueList( i+1 );
+ }
+
+ // Disable/Enable Logik:
+
+ (aLbField1.GetSelectEntryPos() != 0)
+ && (aLbField2.GetSelectEntryPos() != 0)
+ ? aLbConnect1.SelectEntryPos( (USHORT)theQueryData.GetEntry(1).eConnect )
+ : aLbConnect1.SetNoSelection();
+
+ (aLbField2.GetSelectEntryPos() != 0)
+ && (aLbField3.GetSelectEntryPos() != 0)
+ ? aLbConnect2.SelectEntryPos( (USHORT)theQueryData.GetEntry(2).eConnect )
+ : aLbConnect2.SetNoSelection();
+
+ if ( aLbField1.GetSelectEntryPos() == 0 )
+ {
+ aLbConnect1.Disable();
+ aLbField2.Disable();
+ aLbCond2.Disable();
+ aEdVal2.Disable();
+ }
+ else if ( aLbConnect1.GetSelectEntryCount() == 0 )
+ {
+ aLbField2.Disable();
+ aLbCond2.Disable();
+ aEdVal2.Disable();
+ }
+
+ if ( aLbField2.GetSelectEntryPos() == 0 )
+ {
+ aLbConnect2.Disable();
+ aLbField3.Disable();
+ aLbCond3.Disable();
+ aEdVal3.Disable();
+ }
+ else if ( aLbConnect2.GetSelectEntryCount() == 0 )
+ {
+ aLbField3.Disable();
+ aLbCond3.Disable();
+ aEdVal3.Disable();
+ }
+
+ if(pDoc!=NULL &&
+ pDoc->GetChangeTrack()!=NULL) aBtnCopyResult.Disable();
+ // Modal-Modus einschalten
+// SFX_APP()->LockDispatcher( TRUE );
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+// SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_04)
+
+BOOL __EXPORT ScFilterDlg::Close()
+{
+ return DoClose( ScFilterDlgWrapper::GetChildWindowId() );
+}
+
+
+//----------------------------------------------------------------------------
+// Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als
+// neue Selektion im Referenz-Edit angezeigt wird.
+
+#pragma SEG_FUNCDEF(filtdlg_05)
+
+void ScFilterDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( bRefInputMode ) // Nur moeglich, wenn im Referenz-Editmodus
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart( &aEdCopyArea );
+ String aRefStr;
+ rRef.aStart.Format( aRefStr, SCA_ABS_3D, pDoc );
+ aEdCopyArea.SetRefString( aRefStr );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_06)
+
+void ScFilterDlg::SetActive()
+{
+ if ( bRefInputMode )
+ {
+ aEdCopyArea.GrabFocus();
+ if ( aEdCopyArea.GetModifyHdl().IsSet() )
+ ((Link&)aEdCopyArea.GetModifyHdl()).Call( &aEdCopyArea );
+ }
+ else
+ GrabFocus();
+
+ RefInputDone();
+}
+
+//----------------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(filtdlg_07)
+
+void ScFilterDlg::FillFieldLists()
+{
+ aLbField1.Clear();
+ aLbField2.Clear();
+ aLbField3.Clear();
+ aLbField1.InsertEntry( aStrNone, 0 );
+ aLbField2.InsertEntry( aStrNone, 0 );
+ aLbField3.InsertEntry( aStrNone, 0 );
+
+ if ( pDoc )
+ {
+ String aFieldName;
+ USHORT nTab = nSrcTab;
+ USHORT nFirstCol = theQueryData.nCol1;
+ USHORT nFirstRow = theQueryData.nRow1;
+ USHORT nMaxCol = theQueryData.nCol2;
+ USHORT col = 0;
+ USHORT i=1;
+
+ for ( col=nFirstCol; col<=nMaxCol; col++ )
+ {
+ pDoc->GetString( col, nFirstRow, nTab, aFieldName );
+ if ( !aBtnHeader.IsChecked() || (aFieldName.Len() == 0) )
+ {
+ aFieldName = aStrColumn;
+ aFieldName += ' ';
+ if ( col < 26 )
+ aFieldName += (sal_Unicode)( 'A' + col );
+ else
+ {
+ aFieldName += (sal_Unicode)( 'A' + ( col / 26 ) - 1 );
+ aFieldName += (sal_Unicode)( 'A' + ( col % 26 ) );
+ }
+ }
+ aLbField1.InsertEntry( aFieldName, i );
+ aLbField2.InsertEntry( aFieldName, i );
+ aLbField3.InsertEntry( aFieldName, i );
+ i++;
+ }
+ nFieldCount = i;
+ }
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_08)
+
+void ScFilterDlg::UpdateValueList( USHORT nList )
+{
+ if ( pDoc && nList>0 && nList<=3 )
+ {
+ ComboBox* pValList = aValueEdArr[nList-1];
+ USHORT nFieldSelPos = aFieldLbArr[nList-1]->GetSelectEntryPos();
+ USHORT nListPos = 0;
+ String aCurValue = pValList->GetText();
+
+ pValList->Clear();
+ pValList->InsertEntry( aStrNotEmpty, 0 );
+ pValList->InsertEntry( aStrEmpty, 1 );
+ nListPos = 2;
+
+ if ( nFieldSelPos )
+ {
+ WaitObject aWaiter( this ); // auch wenn nur die ListBox gefuellt wird
+
+ USHORT nColumn = theQueryData.nCol1 + nFieldSelPos - 1;
+ if (!pEntryLists[nColumn])
+ {
+ USHORT nTab = nSrcTab;
+ USHORT nFirstRow = theQueryData.nRow1;
+ USHORT nLastRow = theQueryData.nRow2;
+
+ // erstmal ohne die erste Zeile
+
+ pEntryLists[nColumn] = new TypedStrCollection( 128, 128 );
+ pEntryLists[nColumn]->SetCaseSensitive( aBtnCase.IsChecked() );
+ pDoc->GetFilterEntriesArea( nColumn, nFirstRow+1, nLastRow,
+ nTab, *pEntryLists[nColumn] );
+
+ // Eintrag fuer die erste Zeile
+ //! Eintrag (pHdrEntry) ohne Collection erzeugen?
+
+ nHeaderPos[nColumn] = USHRT_MAX;
+ TypedStrCollection aHdrColl( 1, 1 );
+ pDoc->GetFilterEntriesArea( nColumn, nFirstRow, nFirstRow,
+ nTab, aHdrColl );
+ TypedStrData* pHdrEntry = aHdrColl[0];
+ if ( pHdrEntry )
+ {
+ TypedStrData* pNewEntry = new TypedStrData(*pHdrEntry);
+ if ( pEntryLists[nColumn]->Insert( pNewEntry ) )
+ {
+ nHeaderPos[nColumn] = pEntryLists[nColumn]->IndexOf( pNewEntry );
+ DBG_ASSERT( nHeaderPos[nColumn] != USHRT_MAX,
+ "Header-Eintrag nicht wiedergefunden" );
+ }
+ else
+ delete pNewEntry; // war schon drin
+ }
+ }
+
+ TypedStrCollection* pColl = pEntryLists[nColumn];
+ USHORT nValueCount = pColl->GetCount();
+ if ( nValueCount > 0 )
+ {
+ for ( USHORT i=0; i<nValueCount; i++ )
+ {
+ pValList->InsertEntry( (*pColl)[i]->GetString(), nListPos );
+ nListPos++;
+ }
+ }
+ }
+ pValList->SetText( aCurValue );
+ }
+
+ UpdateHdrInValueList( nList );
+}
+
+#pragma SEG_FUNCDEF(filtdlg_13)
+
+void ScFilterDlg::UpdateHdrInValueList( USHORT nList )
+{
+ //! GetText / SetText ??
+
+ if ( pDoc && nList>0 && nList<=3 )
+ {
+ USHORT nFieldSelPos = aFieldLbArr[nList-1]->GetSelectEntryPos();
+ if ( nFieldSelPos )
+ {
+ USHORT nColumn = theQueryData.nCol1 + nFieldSelPos - 1;
+ if ( pEntryLists[nColumn] )
+ {
+ USHORT nPos = nHeaderPos[nColumn];
+ if ( nPos != USHRT_MAX )
+ {
+ ComboBox* pValList = aValueEdArr[nList-1];
+ USHORT nListPos = nPos + 2; // nach "leer" und "nicht leer"
+
+ TypedStrData* pHdrEntry = (*pEntryLists[nColumn])[nPos];
+ if ( pHdrEntry )
+ {
+ String aHdrStr = pHdrEntry->GetString();
+ BOOL bWasThere = ( pValList->GetEntry(nListPos) == aHdrStr );
+ BOOL bInclude = !aBtnHeader.IsChecked();
+
+ if (bInclude) // Eintrag aufnehmen
+ {
+ if (!bWasThere)
+ pValList->InsertEntry(aHdrStr, nListPos);
+ }
+ else // Eintrag weglassen
+ {
+ if (bWasThere)
+ pValList->RemoveEntry(nListPos);
+ }
+ }
+ else
+ DBG_ERROR("Eintag in Liste nicht gefunden");
+ }
+ }
+ else
+ DBG_ERROR("Spalte noch nicht initialisiert");
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_10)
+
+void ScFilterDlg::ClearValueList( USHORT nList )
+{
+ if ( nList>0 && nList<=3 )
+ {
+ ComboBox* pValList = aValueEdArr[nList-1];
+ pValList->Clear();
+ pValList->InsertEntry( aStrNotEmpty, 0 );
+ pValList->InsertEntry( aStrEmpty, 1 );
+ pValList->SetText( EMPTY_STRING );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_09)
+
+USHORT ScFilterDlg::GetFieldSelPos( USHORT nField )
+{
+ if ( nField >= theQueryData.nCol1 && nField <= theQueryData.nCol2 )
+ return nField - theQueryData.nCol1 + 1;
+ else
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_0a)
+
+ScQueryItem* ScFilterDlg::GetOutputItem()
+{
+ ScAddress theCopyPos;
+ ScQueryParam theParam( theQueryData );
+ USHORT nConnect1 = aLbConnect1.GetSelectEntryPos();
+ USHORT nConnect2 = aLbConnect2.GetSelectEntryPos();
+ BOOL bCopyPosOk;
+
+ if ( aBtnCopyResult.IsChecked() )
+ {
+ String theCopyStr( aEdCopyArea.GetText() );
+ xub_StrLen nColonPos = theCopyStr.Search( ':' );
+
+ if ( STRING_NOTFOUND != nColonPos )
+ theCopyStr.Erase( nColonPos );
+
+ USHORT nResult = theCopyPos.Parse( theCopyStr, pDoc );
+ bCopyPosOk = ( SCA_VALID == (nResult & SCA_VALID) );
+ }
+
+ for ( USHORT i=0; i<3; i++ )
+ {
+ USHORT nField = aFieldLbArr[i]->GetSelectEntryPos();
+ ScQueryOp eOp = (ScQueryOp)aCondLbArr[i]->GetSelectEntryPos();
+
+ BOOL bDoThis = (aFieldLbArr[i]->GetSelectEntryPos() != 0);
+ theParam.GetEntry(i).bDoQuery = bDoThis;
+
+ if ( bDoThis )
+ {
+ ScQueryEntry& rEntry = theParam.GetEntry(i);
+
+ String aStrVal( aValueEdArr[i]->GetText() );
+
+ /*
+ * Dialog liefert die ausgezeichneten Feldwerte "leer"/"nicht leer"
+ * als Konstanten in nVal in Verbindung mit dem Schalter
+ * bQueryByString auf FALSE.
+ */
+ if ( aStrVal == aStrEmpty )
+ {
+ rEntry.pStr->Erase();
+ rEntry.nVal = SC_EMPTYFIELDS;
+ rEntry.bQueryByString = FALSE;
+ }
+ else if ( aStrVal == aStrNotEmpty )
+ {
+ rEntry.pStr->Erase();
+ rEntry.nVal = SC_NONEMPTYFIELDS;
+ rEntry.bQueryByString = FALSE;
+ }
+ else
+ {
+ *rEntry.pStr = aStrVal;
+ rEntry.nVal = 0;
+ rEntry.bQueryByString = TRUE;
+ }
+
+ rEntry.nField = nField ? ( theQueryData.nCol1 + nField - 1 ) : 0;
+ rEntry.eOp = eOp;
+ }
+ }
+
+ theParam.GetEntry(1).eConnect = (nConnect1 != LISTBOX_ENTRY_NOTFOUND)
+ ? (ScQueryConnect)nConnect1
+ : SC_AND;
+ theParam.GetEntry(2).eConnect = (nConnect2 != LISTBOX_ENTRY_NOTFOUND)
+ ? (ScQueryConnect)nConnect2
+ : SC_AND;
+
+ if ( aBtnCopyResult.IsChecked() && bCopyPosOk )
+ {
+ theParam.bInplace = FALSE;
+ theParam.nDestTab = theCopyPos.Tab();
+ theParam.nDestCol = theCopyPos.Col();
+ theParam.nDestRow = theCopyPos.Row();
+ }
+ else
+ {
+ theParam.bInplace = TRUE;
+ theParam.nDestTab = 0;
+ theParam.nDestCol = 0;
+ theParam.nDestRow = 0;
+ }
+
+ theParam.bHasHeader = aBtnHeader.IsChecked();
+ theParam.bByRow = TRUE;
+ theParam.bDuplicate = !aBtnUnique.IsChecked();
+ theParam.bCaseSens = aBtnCase.IsChecked();
+ theParam.bRegExp = aBtnRegExp.IsChecked();
+ theParam.bDestPers = aBtnDestPers.IsChecked();
+
+ // nur die drei eingestellten - alles andere zuruecksetzen
+
+ USHORT nEC = theParam.GetEntryCount();
+ for (i=3; i<nEC; i++) // alles ueber 3
+ theParam.GetEntry(i).bDoQuery = FALSE; // zuruecksetzen
+
+ DELETEZ( pOutItem );
+ pOutItem = new ScQueryItem( nWhichQuery, &theParam );
+
+ return pOutItem;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_11)
+
+BOOL ScFilterDlg::IsRefInputMode() const
+{
+ return bRefInputMode;
+}
+
+
+//----------------------------------------------------------------------------
+// Handler:
+// ========
+#pragma SEG_FUNCDEF(filtdlg_0b)
+
+IMPL_LINK( ScFilterDlg, EndDlgHdl, Button*, pBtn )
+{
+ if ( pBtn == &aBtnOk )
+ {
+ BOOL bAreaInputOk = TRUE;
+
+ if ( aBtnCopyResult.IsChecked() )
+ {
+ if ( !pOptionsMgr->VerifyPosStr( aEdCopyArea.GetText() ) )
+ {
+ if ( !aBtnMore.GetState() )
+ aBtnMore.SetState( TRUE );
+
+ ERRORBOX( STR_INVALID_TABREF );
+ aEdCopyArea.GrabFocus();
+ bAreaInputOk = FALSE;
+ }
+ }
+
+ if ( bAreaInputOk )
+ {
+ SFX_APP()->LockDispatcher( FALSE );
+ SwitchToDocument();
+ SFX_DISPATCHER().Execute( FID_FILTER_OK, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ GetOutputItem(), 0L, 0L );
+ Close();
+ }
+ }
+ else if ( pBtn == &aBtnCancel )
+ {
+ Close();
+ }
+
+ return NULL;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_0c)
+
+IMPL_LINK( ScFilterDlg, MoreClickHdl, MoreButton*, pBtn )
+{
+ if ( aBtnMore.GetState() )
+ pTimer->Start();
+ else
+ {
+ pTimer->Stop();
+ bRefInputMode = FALSE;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+ }
+ return NULL;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_0d)
+
+IMPL_LINK( ScFilterDlg, TimeOutHdl, Timer*, _pTimer )
+{
+ // alle 50ms nachschauen, ob RefInputMode noch stimmt
+
+ if ( _pTimer == pTimer && IsActive() )
+ {
+ if ( aEdCopyArea.HasFocus() )
+ {
+ if ( !bRefInputMode )
+ {
+ bRefInputMode = TRUE;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable(); // Mauseingabe im Tabellenfenster zulassen
+ }
+ }
+ else
+ {
+ if ( bRefInputMode )
+ {
+ bRefInputMode = FALSE;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+ }
+ }
+ }
+
+ if ( aBtnMore.GetState() )
+ pTimer->Start();
+
+ return NULL;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_0e)
+
+IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox*, pLb )
+{
+ /*
+ * Behandlung der Enable/Disable-Logik,
+ * abhaengig davon, welche ListBox angefasst wurde:
+ */
+
+ if ( pLb == &aLbConnect1 )
+ {
+ if ( !aLbField2.IsEnabled() )
+ {
+ aLbField2.Enable();
+ aLbCond2.Enable();
+ aEdVal2.Enable();
+ }
+ }
+ else if ( pLb == &aLbConnect2 )
+ {
+ if ( !aLbField3.IsEnabled() )
+ {
+ aLbField3.Enable();
+ aLbCond3.Enable();
+ aEdVal3.Enable();
+ }
+ }
+ else if ( pLb == &aLbField1 )
+ {
+ if ( aLbField1.GetSelectEntryPos() == 0 )
+ {
+ aLbConnect1.SetNoSelection();
+ aLbConnect2.SetNoSelection();
+ aLbField2.SelectEntryPos( 0 );
+ aLbField3.SelectEntryPos( 0 );
+ aLbCond2.SelectEntryPos( 0 );
+ aLbCond3.SelectEntryPos( 0 );
+ ClearValueList( 1 );
+ ClearValueList( 2 );
+ ClearValueList( 3 );
+
+ aLbConnect1.Disable();
+ aLbConnect2.Disable();
+ aLbField2.Disable();
+ aLbField3.Disable();
+ aLbCond2.Disable();
+ aLbCond3.Disable();
+ aEdVal2.Disable();
+ aEdVal3.Disable();
+ }
+ else
+ {
+ UpdateValueList( 1 );
+ if ( !aLbConnect1.IsEnabled() )
+ {
+ aLbConnect1.Enable();
+ }
+ }
+ }
+ else if ( pLb == &aLbField2 )
+ {
+ if ( aLbField2.GetSelectEntryPos() == 0 )
+ {
+ aLbConnect2.SetNoSelection();
+ aLbField3.SelectEntryPos( 0 );
+ aLbCond3.SelectEntryPos( 0 );
+ ClearValueList( 2 );
+ ClearValueList( 3 );
+
+ aLbConnect2.Disable();
+ aLbField3.Disable();
+ aLbCond3.Disable();
+ aEdVal3.Disable();
+ }
+ else
+ {
+ UpdateValueList( 2 );
+ if ( !aLbConnect2.IsEnabled() )
+ {
+ aLbConnect2.Enable();
+ }
+ }
+ }
+ else if ( pLb == &aLbField3 )
+ {
+ ( aLbField3.GetSelectEntryPos() == 0 )
+ ? ClearValueList( 3 )
+ : UpdateValueList( 3 );
+ }
+
+ return NULL;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_0f)
+
+IMPL_LINK( ScFilterDlg, CheckBoxHdl, CheckBox*, pBox )
+{
+ // Spaltenkoepfe:
+ // FeldListen: Spaltexx <-> Spaltenkopf-String
+ // WertListen: Spaltenkopf-Wert entfaellt.
+ // Gross-/Kleinschreibung:
+ // WertListen: komplett neu
+
+ if ( pBox == &aBtnHeader ) // Feldlisten und Wertlisten
+ {
+ USHORT nCurSel1 = aLbField1.GetSelectEntryPos();
+ USHORT nCurSel2 = aLbField2.GetSelectEntryPos();
+ USHORT nCurSel3 = aLbField3.GetSelectEntryPos();
+ FillFieldLists();
+ aLbField1.SelectEntryPos( nCurSel1 );
+ aLbField2.SelectEntryPos( nCurSel2 );
+ aLbField3.SelectEntryPos( nCurSel3 );
+
+ UpdateHdrInValueList( 1 );
+ UpdateHdrInValueList( 2 );
+ UpdateHdrInValueList( 3 );
+ }
+
+ if ( pBox == &aBtnCase ) // Wertlisten komplett
+ {
+ for (USHORT i=0; i<=MAXCOL; i++)
+ DELETEZ( pEntryLists[i] );
+
+ UpdateValueList( 1 ); // aktueller Text wird gemerkt
+ UpdateValueList( 2 );
+ UpdateValueList( 3 );
+ }
+
+ return NULL;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(filtdlg_12)
+
+IMPL_LINK( ScFilterDlg, ValModifyHdl, ComboBox*, pEd )
+{
+ if ( pEd )
+ {
+ String aStrVal = pEd->GetText();
+ ListBox* pLb = &aLbCond1;
+
+ if ( pEd == &aEdVal2 ) pLb = &aLbCond2;
+ else if ( pEd == &aEdVal3 ) pLb = &aLbCond3;
+
+ // wenn einer der Sonderwerte leer/nicht-leer
+ // gewaehlt wird, so macht nur der =-Operator Sinn:
+
+ if ( aStrEmpty == aStrVal || aStrNotEmpty == aStrVal )
+ {
+ pLb->SelectEntry( '=' );
+ pLb->Disable();
+ }
+ else
+ pLb->Enable();
+ }
+
+ return NULL;
+}
+
+
+/*----------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.65 2000/09/17 14:08:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.64 2000/08/31 16:38:20 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.63 2000/05/25 10:20:06 er
+ NOOLDSV
+
+ Revision 1.62 2000/04/14 17:38:02 nn
+ unicode changes
+
+ Revision 1.61 2000/02/11 12:23:25 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.60 2000/01/17 19:21:28 nn
+ #67336# SwitchToDocument
+
+ Revision 1.59 1999/06/09 16:09:04 NN
+ Sfx-appwin removed
+
+
+ Rev 1.58 09 Jun 1999 18:09:04 NN
+ Sfx-appwin removed
+
+ Rev 1.57 10 Dec 1998 20:09:18 ANK
+ #51738# Umstellung auf ScRefEdit zum Anzeigen von Referenzen
+
+ Rev 1.56 14 Sep 1998 20:58:06 ANK
+ #55978# Ausgabebereich disablen bei Redlining
+
+ Rev 1.55 02 Sep 1998 12:48:32 TJ
+ include
+
+ Rev 1.54 12 Aug 1998 19:47:32 ANK
+ #54702# IsRefInputMode ueberarbeitet
+
+ Rev 1.53 06 Aug 1998 21:18:30 ANK
+ #54702# Enablen/Disablen der Applikation nur noch in ScAnyRefDlg
+
+ Rev 1.52 15 Mar 1998 14:22:18 NN
+ #48339# App-Fenster disablen mit bChild=FALSE
+
+ Rev 1.51 02 Dec 1997 13:08:12 TJ
+ include
+
+ Rev 1.50 30 Sep 1997 13:07:42 TJ
+ include
+
+ Rev 1.49 03 Sep 1997 15:18:20 RG
+ change header
+
+ Rev 1.48 15 Feb 1997 17:36:26 NN
+ Checkbox 'persistent' fuer Ausgabe-Bereich
+
+ Rev 1.47 14 Feb 1997 19:14:28 ER
+ aktuelle Spalte nur im ersten Eintrag
+
+ Rev 1.46 14 Feb 1997 12:59:30 ER
+ selektierte Spalte statt ersetm leeren Feldnamen
+
+ Rev 1.45 06 Dec 1996 14:11:46 NN
+ #33824# Header umschalten: nur betroffenen Eintrag loeschen/einfuegen
+
+ Rev 1.44 29 Nov 1996 18:57:30 NN
+ Gross-/Kleinschreibung auch in Werte-Liste
+
+ Rev 1.43 27 Nov 1996 14:18:08 NN
+ #31076# Entry-Listen pro Spalte nur einmal holen
+
+ Rev 1.42 15 Nov 1996 17:22:44 NN
+ #33345# Spaltenkoepfe-Button auswerten
+
+ Rev 1.41 13 Nov 1996 20:11:16 NN
+ #33143# AutoHide nur bei Bereichsreferenz
+
+ Rev 1.40 13 Nov 1996 11:33:20 NN
+ ScQueryParam mit dynamischen Eintraegen
+
+ Rev 1.39 05 Nov 1996 14:49:58 NN
+ ScApplication gibts nicht mehr
+
+ Rev 1.38 29 Oct 1996 14:03:36 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.37 22 Oct 1996 15:32:02 RJ
+ Buttons fuer Referenzeingabe
+
+ Rev 1.36 04 Oct 1996 17:22:46 RJ
+ Einklappen des Fensters bei Referenzeingabe
+
+ Rev 1.35 27 Jun 1996 11:49:28 NN
+ Dispatcher::Execute Umstellung
+
+ Rev 1.34 05 Jun 1996 19:19:10 NN
+ kein Show im ctor (Position wird von aussen gesetzt)
+
+ Rev 1.33 26 Apr 1996 12:02:40 NN
+ SfxModelessDialog statt ModelessDialog
+
+ Rev 1.32 25 Apr 1996 18:08:36 NN
+ SetReference aufgeteilt in SetReference und AddRefEntry
+
+ Rev 1.31 18 Jan 1996 11:44:42 MO
+ #24232# leer/nicht-leer-Behandlung, neuer Link
+
+ Rev 1.30 27 Nov 1995 13:42:12 MO
+ RangeUtil/Area/Tripel gegen Address/Range ersetzt
+
+ Rev 1.29 09 Nov 1995 10:20:12 JN
+ weitere Verbesseungen Modeless Dialoge
+
+ Rev 1.28 08 Nov 1995 13:05:48 MO
+ 301-Aenderungen
+
+ Rev 1.27 08 Nov 1995 10:45:48 JN
+ Umstellung auf SfxChildWindow
+
+ Rev 1.26 26 Oct 1995 11:34:24 MO
+ Default-Button-Bit bei Error/MessBoxen
+
+ Rev 1.25 18 Sep 1995 10:07:48 MO
+ bRefInput-Kontrolle ueber Timer
+
+ Rev 1.24 14 Jul 1995 13:55:18 MO
+ 3. ValueList im Init fuellen (BugId: 15364)
+
+ Rev 1.23 12 Jul 1995 16:57:48 MO
+ TypedStrColloction fuer Wertklisten
+
+ Rev 1.22 07 Jul 1995 17:36:36 MO
+ Bugfix: Auswertung Connect-Parameter
+
+ Rev 1.21 08 Jun 1995 16:22:06 MO
+ leer/nicht-leer Filter
+
+ Rev 1.20 25 Apr 1995 11:40:08 MO
+ leer/nicht-leer Feldwerte
+
+ Rev 1.19 24 Apr 1995 12:49:46 MO
+ Dispatcher Unlock vor Execute
+
+ Rev 1.18 18 Apr 1995 10:02:34 MO
+ Referenzeingabe mit Maus ueberarbeitet
+
+ Rev 1.17 02 Mar 1995 16:20:20 MO
+ InfoBoxen mit Rsc-Strings
+
+ Rev 1.16 26 Feb 1995 10:26:58 TRI
+ basicide.hxx included
+
+ Rev 1.15 22 Feb 1995 17:07:20 MO
+ * Fehler bei der Rueckgabe der Verknuefungsoperationen behoben
+
+
+ Rev 1.14 08 Feb 1995 12:55:02 MO
+ * Dispatcher-Execute: 0L angehaengt (sonst uneindeutig)
+
+ Rev 1.13 03 Feb 1995 12:43:02 MO
+ * Ctor: Show()
+
+
+ Rev 1.12 27 Jan 1995 16:14:44 MO
+ * Umstellung aus Slot-IDs
+
+ Rev 1.11 26 Jan 1995 19:00:18 TRI
+ __EXPORT bei virtuellen Methoden eingebaut
+
+ Rev 1.10 25 Jan 1995 18:53:56 MO
+ * Auswertung der Connect-ListBoxen korrigiert
+
+ Rev 1.9 25 Jan 1995 12:39:00 MO
+ * Einzelne Zellposition als Kopierziel (SetReferenz und Ueberpruefungen)
+
+ Rev 1.8 19 Jan 1995 16:47:48 TRI
+ __EXPORT vor verschiedene LinkHandler gesetzt
+
+ Rev 1.7 18 Jan 1995 13:56:26 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.6 17 Jan 1995 11:57:34 MO
+ CheckBoxHdl fuer aBtnHeader wieder aktiviert
+
+ Rev 1.5 16 Jan 1995 14:24:54 MO
+ Fehlerbehandlung bei ungueltigen Bereichsnamen im EndDlg-Handler
+
+ Rev 1.4 13 Jan 1995 17:30:34 MO
+ Special-Dialog ausgegliedert
+
+ Rev 1.3 13 Jan 1995 10:22:14 MO
+ fuer Spezialdialog verwendbare Resource-Handler nach foptmgr verschoben
+
+ Rev 1.2 12 Jan 1995 14:49:52 MO
+ * Erkennung von DB-Bereichen
+ * Gegenseitige Aktualisierung der CopyArea-ListBox/Edit
+ * Einlesen von RangeNames mit RT_ABSAREA
+
+
+ Rev 1.1 09 Jan 1995 11:14:52 MO
+ Parameter werden jetzt per SfxItem (ScQueryItem) uebergeben,
+ bzw. mit GetOutputItemSet() zurueckgegeben.
+
+ Rev 1.0 05 Jan 1995 12:44:12 MO
+ Initial revision.
+
+----------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/foptmgr.cxx b/sc/source/ui/dbgui/foptmgr.cxx
new file mode 100644
index 000000000000..6d90bb45eec5
--- /dev/null
+++ b/sc/source/ui/dbgui/foptmgr.cxx
@@ -0,0 +1,471 @@
+/*************************************************************************
+ *
+ * $RCSfile: foptmgr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes ---------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE -------------------------------------------------------------------
+
+#include <vcl/morebtn.hxx>
+#include <svtools/stdctrl.hxx>
+
+#include "anyrefdg.hxx"
+#include "rangeutl.hxx"
+#include "dbcolect.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+
+#define _FOPTMGR_CXX
+#include "foptmgr.hxx"
+#undef _FOPTMGR_CXX
+
+SEG_EOFGLOBALS()
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(foptmgr_01)
+
+ScFilterOptionsMgr::ScFilterOptionsMgr(
+ Dialog* ptrDlg,
+ ScViewData* ptrViewData,
+ const ScQueryParam& refQueryData,
+ MoreButton& refBtnMore,
+ CheckBox& refBtnCase,
+ CheckBox& refBtnRegExp,
+ CheckBox& refBtnHeader,
+ CheckBox& refBtnUnique,
+ CheckBox& refBtnCopyResult,
+ CheckBox& refBtnDestPers,
+ ListBox& refLbCopyArea,
+ Edit& refEdCopyArea,
+ ScRefButton& refRbCopyArea,
+ FixedText& refFtDbAreaLabel,
+ FixedInfo& refFtDbArea,
+ GroupBox& refGbOptions,
+ const String& refStrNoName,
+ const String& refStrUndefined )
+
+ : pDlg ( ptrDlg ),
+ pViewData ( ptrViewData ),
+ pDoc ( ptrViewData ? ptrViewData->GetDocument() : NULL ),
+ rQueryData ( refQueryData ),
+ rBtnMore ( refBtnMore ),
+ rBtnCase ( refBtnCase ),
+ rBtnRegExp ( refBtnRegExp ),
+ rBtnHeader ( refBtnHeader ),
+ rBtnUnique ( refBtnUnique ),
+ rBtnCopyResult ( refBtnCopyResult ),
+ rBtnDestPers ( refBtnDestPers ),
+ rLbCopyPos ( refLbCopyArea ),
+ rEdCopyPos ( refEdCopyArea ),
+ rRbCopyPos ( refRbCopyArea ),
+ rFtDbAreaLabel ( refFtDbAreaLabel ),
+ rFtDbArea ( refFtDbArea ),
+ rGbOptions ( refGbOptions ),
+ rStrNoName ( refStrNoName ),
+ rStrUndefined ( refStrUndefined )
+{
+ Init();
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(foptmgr_02)
+
+ScFilterOptionsMgr::~ScFilterOptionsMgr()
+{
+ USHORT nEntries = rLbCopyPos.GetEntryCount();
+ USHORT i;
+
+ for ( i=2; i<nEntries; i++ )
+ delete (String*)rLbCopyPos.GetEntryData( i );
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(foptmgr_03)
+
+void ScFilterOptionsMgr::Init()
+{
+ DBG_ASSERT( pViewData && pDoc, "Init failed :-/" );
+
+ rLbCopyPos.SetSelectHdl ( LINK( this, ScFilterOptionsMgr, LbPosSelHdl ) );
+ rEdCopyPos.SetModifyHdl ( LINK( this, ScFilterOptionsMgr, EdPosModifyHdl ) );
+ rBtnCopyResult.SetClickHdl( LINK( this, ScFilterOptionsMgr, BtnCopyResultHdl ) );
+
+ rBtnMore.AddWindow( &rBtnCase );
+ rBtnMore.AddWindow( &rBtnRegExp );
+ rBtnMore.AddWindow( &rBtnHeader );
+ rBtnMore.AddWindow( &rBtnUnique );
+ rBtnMore.AddWindow( &rBtnCopyResult );
+ rBtnMore.AddWindow( &rBtnDestPers );
+ rBtnMore.AddWindow( &rLbCopyPos );
+ rBtnMore.AddWindow( &rEdCopyPos );
+ rBtnMore.AddWindow( &rRbCopyPos );
+ rBtnMore.AddWindow( &rFtDbAreaLabel );
+ rBtnMore.AddWindow( &rFtDbArea );
+ rBtnMore.AddWindow( &rGbOptions );
+
+ rBtnCase .Check( rQueryData.bCaseSens );
+ rBtnHeader .Check( rQueryData.bHasHeader );
+ rBtnRegExp .Check( rQueryData.bRegExp );
+ rBtnUnique .Check( !rQueryData.bDuplicate );
+
+ if ( pViewData && pDoc )
+ {
+ String theAreaStr;
+ ScRange theCurArea ( ScAddress( rQueryData.nCol1,
+ rQueryData.nRow1,
+ pViewData->GetTabNo() ),
+ ScAddress( rQueryData.nCol2,
+ rQueryData.nRow2,
+ pViewData->GetTabNo() ) );
+ ScDBCollection* pDBColl = pDoc->GetDBCollection();
+ String theDbArea;
+ String theDbName = rStrNoName;
+
+ theCurArea.Format( theAreaStr, SCR_ABS_3D, pDoc );
+
+ // Zielbereichsliste fuellen
+
+ rLbCopyPos.Clear();
+ rLbCopyPos.InsertEntry( rStrUndefined, 0 );
+
+ ScAreaNameIterator aIter( pDoc );
+ String aName;
+ ScRange aRange;
+ String aRefStr;
+ while ( aIter.Next( aName, aRange ) )
+ {
+ USHORT nInsert = rLbCopyPos.InsertEntry( aName );
+
+ aRange.aStart.Format( aRefStr, SCA_ABS_3D, pDoc );
+ rLbCopyPos.SetEntryData( nInsert, new String( aRefStr ) );
+ }
+
+ rBtnDestPers.Check( TRUE ); // beim Aufruf immer an
+ rLbCopyPos.SelectEntryPos( 0 );
+ rEdCopyPos.SetText( EMPTY_STRING );
+
+ /*
+ * Ueberpruefen, ob es sich bei dem uebergebenen
+ * Bereich um einen Datenbankbereich handelt:
+ */
+
+ theDbArea = theAreaStr;
+
+ if ( pDBColl )
+ {
+ ScAddress& rStart = theCurArea.aStart;
+ ScAddress& rEnd = theCurArea.aEnd;
+ ScDBData* pDBData = pDBColl->GetDBAtArea( rStart.Tab(),
+ rStart.Col(), rStart.Row(),
+ rEnd.Col(), rEnd.Row() );
+ if ( pDBData )
+ {
+ rBtnHeader.Check( pDBData->HasHeader() );
+ pDBData->GetName( theDbName );
+
+ if ( theDbName != rStrNoName )
+ {
+ rBtnHeader.Disable();
+ }
+ }
+ }
+
+ theDbArea.AppendAscii(RTL_CONSTASCII_STRINGPARAM(" ("));
+ theDbArea += theDbName;
+ theDbArea += ')';
+ rFtDbArea.SetText( theDbArea );
+
+ //------------------------------------------------------
+ // Kopierposition:
+
+ if ( !rQueryData.bInplace )
+ {
+ String aString;
+
+ ScAddress( rQueryData.nDestCol,
+ rQueryData.nDestRow,
+ rQueryData.nDestTab
+ ).Format( aString, SCA_ABS_3D, pDoc );
+
+ rBtnCopyResult.Check( TRUE );
+ rEdCopyPos.SetText( aString );
+ EdPosModifyHdl( &rEdCopyPos );
+ rLbCopyPos.Enable();
+ rEdCopyPos.Enable();
+ rRbCopyPos.Enable();
+ rBtnDestPers.Enable();
+ }
+ else
+ {
+ rBtnCopyResult.Check( FALSE );
+ rEdCopyPos.SetText( EMPTY_STRING );
+ rLbCopyPos.Disable();
+ rEdCopyPos.Disable();
+ rRbCopyPos.Disable();
+ rBtnDestPers.Disable();
+ }
+ }
+ else
+ rEdCopyPos.SetText( EMPTY_STRING );
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(foptmgr_05)
+
+BOOL ScFilterOptionsMgr::VerifyPosStr( const String& rPosStr ) const
+{
+ String aPosStr( rPosStr );
+ xub_StrLen nColonPos = aPosStr.Search( ':' );
+
+ if ( STRING_NOTFOUND != nColonPos )
+ aPosStr.Erase( nColonPos );
+
+ USHORT nResult = ScAddress().Parse( aPosStr, pDoc );
+
+ return ( SCA_VALID == (nResult & SCA_VALID) );
+}
+
+
+//----------------------------------------------------------------------------
+// Handler:
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(foptmgr_06)
+
+IMPL_LINK( ScFilterOptionsMgr, LbPosSelHdl, ListBox*, pLb )
+{
+ if ( pLb == &rLbCopyPos )
+ {
+ String aString;
+ USHORT nSelPos = rLbCopyPos.GetSelectEntryPos();
+
+ if ( nSelPos > 0 )
+ aString = *(String*)rLbCopyPos.GetEntryData( nSelPos );
+
+ rEdCopyPos.SetText( aString );
+ }
+
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(foptmgr_07)
+
+IMPL_LINK( ScFilterOptionsMgr, EdPosModifyHdl, Edit*, pEd )
+{
+ if ( pEd == &rEdCopyPos )
+ {
+ String theCurPosStr = pEd->GetText();
+ USHORT nResult = ScAddress().Parse( theCurPosStr, pDoc );
+
+ if ( SCA_VALID == (nResult & SCA_VALID) )
+ {
+ String* pStr = NULL;
+ BOOL bFound = FALSE;
+ USHORT i = 0;
+ USHORT nCount = rLbCopyPos.GetEntryCount();
+
+ for ( i=2; i<nCount && !bFound; i++ )
+ {
+ pStr = (String*)rLbCopyPos.GetEntryData( i );
+ bFound = (theCurPosStr == *pStr);
+ }
+
+ if ( bFound )
+ rLbCopyPos.SelectEntryPos( --i );
+ else
+ rLbCopyPos.SelectEntryPos( 0 );
+ }
+ else
+ rLbCopyPos.SelectEntryPos( 0 );
+ }
+
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(foptmgr_08)
+
+IMPL_LINK( ScFilterOptionsMgr, BtnCopyResultHdl, CheckBox*, pBox )
+{
+ if ( pBox == &rBtnCopyResult )
+ {
+ if ( pBox->IsChecked() )
+ {
+ rBtnDestPers.Enable();
+ rLbCopyPos.Enable();
+ rEdCopyPos.Enable();
+ rRbCopyPos.Enable();
+ rEdCopyPos.GrabFocus();
+ }
+ else
+ {
+ rBtnDestPers.Disable();
+ rLbCopyPos.Disable();
+ rEdCopyPos.Disable();
+ rRbCopyPos.Disable();
+ }
+ }
+
+ return 0;
+}
+
+
+/*----------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.24 2000/09/17 14:08:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.23 2000/08/31 16:38:20 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.22 2000/04/14 17:38:02 nn
+ unicode changes
+
+ Revision 1.21 2000/02/11 12:23:37 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.20 1997/12/05 18:54:58 ANK
+ Includes geaendert
+
+
+ Rev 1.19 05 Dec 1997 19:54:58 ANK
+ Includes geaendert
+
+ Rev 1.18 12 Aug 1997 10:58:26 TRI
+ VCL: includes
+
+ Rev 1.17 15 Feb 1997 17:36:34 NN
+ Checkbox 'persistent' fuer Ausgabe-Bereich
+
+ Rev 1.16 22 Oct 1996 15:32:10 RJ
+ Buttons fuer Referenzeingabe
+
+ Rev 1.15 18 Jul 1996 16:52:48 NN
+ DB-Bereiche als Ziel, ScAreaNameIterator benutzen
+
+ Rev 1.14 18 Jan 1996 11:45:00 MO
+ neuer Link
+
+ Rev 1.13 06 Dec 1995 12:41:56 MO
+ Aufbau der Zielbereichsliste korrigiert (BugId: 22986)
+
+ Rev 1.12 27 Nov 1995 13:42:12 MO
+ RangeUtil/Area/Tripel gegen Address/Range ersetzt
+
+ Rev 1.11 08 Nov 1995 13:05:48 MO
+ 301-Aenderungen
+
+ Rev 1.10 14 Sep 1995 13:05:08 MO
+ FixedInfos
+
+ Rev 1.9 28 Apr 1995 09:44:58 MO
+ RT_ABSPOS
+
+ Rev 1.8 18 Apr 1995 10:03:36 MO
+ FixedText fuer TabBereich mit Light-Font
+
+ Rev 1.7 26 Jan 1995 15:45:30 MO
+ Click auf Kopieren-CheckBox gibt dem entsprechenden Edit den Focus
+
+ Rev 1.6 25 Jan 1995 12:56:14 MO
+ * Kopierbereich ist jetzt nur noch Kopierposition
+ * Auswertung der Kopierposition im Init()
+ * VerifyAreaName() heisst jetzt VerifyPosStr()
+
+ Rev 1.5 19 Jan 1995 16:52:26 TRI
+ __EXPORT vor verschiedene LinkHandler gesetzt
+
+ Rev 1.4 18 Jan 1995 13:56:26 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.3 17 Jan 1995 12:00:34 MO
+ 'unbenannt'-DB-Bereich wird erkannt
+
+ Rev 1.2 16 Jan 1995 14:23:46 MO
+ * Bereichsnamenueberpruefung jetzt mit VerifyAreaName()
+
+ Rev 1.1 13 Jan 1995 17:30:54 MO
+ VerifyAreaEdit bekommt jetzt Edit uebergeben
+
+ Rev 1.0 13 Jan 1995 10:23:52 MO
+ Initial revision.
+
+----------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/imoptdlg.cxx b/sc/source/ui/dbgui/imoptdlg.cxx
new file mode 100644
index 000000000000..e213412b4796
--- /dev/null
+++ b/sc/source/ui/dbgui/imoptdlg.cxx
@@ -0,0 +1,418 @@
+/*************************************************************************
+ *
+ * $RCSfile: imoptdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+#include "imoptdlg.hxx"
+#include "scresid.hxx"
+#include "imoptdlg.hrc"
+
+SEG_EOFGLOBALS()
+
+//========================================================================
+// ScDelimiterTable
+//========================================================================
+
+class ScDelimiterTable
+{
+public:
+ ScDelimiterTable( const String& rDelTab )
+ : theDelTab ( rDelTab ),
+ cSep ( '\t' ),
+ nCount ( rDelTab.GetTokenCount('\t') ),
+ nIter ( 0 )
+ {}
+
+ USHORT GetCode( const String& rDelimiter ) const;
+ String GetDelimiter( USHORT nCode ) const;
+
+ String FirstDel() { nIter = 0; return theDelTab.GetToken( nIter, cSep ); }
+ String NextDel() { nIter +=2; return theDelTab.GetToken( nIter, cSep ); }
+
+private:
+ const String theDelTab;
+ const sal_Unicode cSep;
+ const xub_StrLen nCount;
+ xub_StrLen nIter;
+};
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(imoptdlg_02)
+
+USHORT ScDelimiterTable::GetCode( const String& rDel ) const
+{
+ USHORT nCode = 0;
+ xub_StrLen i = 0;
+
+ if ( nCount >= 2 )
+ {
+ while ( i<nCount )
+ {
+ if ( rDel == theDelTab.GetToken( i, cSep ) )
+ {
+ nCode = (USHORT)theDelTab.GetToken( i+1, cSep ).ToInt32();
+ i = nCount;
+ }
+ else
+ i += 2;
+ }
+ }
+
+ return nCode;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(imoptdlg_03)
+
+String ScDelimiterTable::GetDelimiter( USHORT nCode ) const
+{
+ String aStrDel;
+ xub_StrLen i = 0;
+
+ if ( nCount >= 2 )
+ {
+ while ( i<nCount )
+ {
+ if ( nCode == (USHORT)theDelTab.GetToken( i+1, cSep ).ToInt32() )
+ {
+ aStrDel = theDelTab.GetToken( i, cSep );
+ i = nCount;
+ }
+ else
+ i += 2;
+ }
+ }
+
+ return aStrDel;
+}
+
+//========================================================================
+// ScImportOptionsDlg
+//========================================================================
+#pragma SEG_FUNCDEF(imoptdlg_04)
+
+ScImportOptionsDlg::ScImportOptionsDlg( Window* pParent,
+ BOOL bAsciiImport,
+ const ScImportOptions* pOptions,
+ const String* pStrTitle )
+
+ : ModalDialog ( pParent, ScResId( RID_SCDLG_IMPORTOPT ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aFtFieldSep ( this, ScResId( FT_FIELDSEP ) ),
+ aEdFieldSep ( this, ScResId( ED_FIELDSEP ) ),
+ aFtTextSep ( this, ScResId( FT_TEXTSEP ) ),
+ aEdTextSep ( this, ScResId( ED_TEXTSEP ) ),
+ aFtFont ( this, ScResId( FT_FONT ) ),
+ aLbFont ( this, ScResId( bAsciiImport ? DDLB_FONT : LB_FONT ) ),
+ aGbFieldOpt ( this, ScResId( GB_FIELDOPT ) ),
+
+ aCharKeyList( ScResId( STR_CHARSETKEYS ) )
+{
+ // im Ctor-Initializer nicht moeglich (MSC kann das nicht):
+ pFieldSepTab = new ScDelimiterTable( String(ScResId(SCSTR_FIELDSEP)) );
+ pTextSepTab = new ScDelimiterTable( String(ScResId(SCSTR_TEXTSEP)) );
+
+ String aStr = pFieldSepTab->FirstDel();
+ USHORT nCode;
+
+ while ( aStr.Len() > 0 )
+ {
+ aEdFieldSep.InsertEntry( aStr );
+ aStr = pFieldSepTab->NextDel();
+ }
+
+ aStr = pTextSepTab->FirstDel();
+
+ while ( aStr.Len() > 0 )
+ {
+ aEdTextSep.InsertEntry( aStr );
+ aStr = pTextSepTab->NextDel();
+ }
+
+ aLbFont.SelectEntryPos( aLbFont.GetEntryCount()-1 );
+ aEdFieldSep.SetText( aEdFieldSep.GetEntry(0) );
+ aEdTextSep.SetText( aEdTextSep.GetEntry(0) );
+
+ if ( pOptions )
+ aLbFont.SelectEntry( pOptions->aStrFont );
+
+ if ( !bAsciiImport )
+ {
+ aGbFieldOpt.SetText( aFtFont.GetText() );
+ aFtFieldSep.Hide();
+ aFtTextSep .Hide();
+ aFtFont .Hide();
+ aEdFieldSep.Hide();
+ aEdTextSep .Hide();
+ aLbFont.GrabFocus();
+ }
+ else
+ {
+ if ( pOptions )
+ {
+ nCode = pOptions->nFieldSepCode;
+ aStr = pFieldSepTab->GetDelimiter( nCode );
+
+ if ( !aStr.Len() )
+ aEdFieldSep.SetText( String((sal_Unicode)nCode) );
+ else
+ aEdFieldSep.SetText( aStr );
+
+ nCode = pOptions->nTextSepCode;
+ aStr = pTextSepTab->GetDelimiter( nCode );
+
+ if ( !aStr.Len() )
+ aEdTextSep.SetText( String((sal_Unicode)nCode) );
+ else
+ aEdTextSep.SetText( aStr );
+ }
+ }
+
+ // optionaler Titel:
+ if ( pStrTitle )
+ SetText( *pStrTitle );
+
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(imoptdlg_05)
+
+__EXPORT ScImportOptionsDlg::~ScImportOptionsDlg()
+{
+ delete pFieldSepTab;
+ delete pTextSepTab;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(imoptdlg_06)
+
+void ScImportOptionsDlg::GetImportOptions( ScImportOptions& rOptions ) const
+{
+ USHORT nKeyIdx = aLbFont.GetEntryCount()-1;
+
+ if ( aLbFont.GetSelectEntryCount() != 0 )
+ nKeyIdx = aLbFont.GetSelectEntryPos();
+
+ rOptions.aStrFont = aCharKeyList.GetToken( nKeyIdx );
+ rOptions.eCharSet = (CharSet)((long)aLbFont.GetEntryData( nKeyIdx ));
+
+ if ( aFtFieldSep.IsEnabled() )
+ {
+ rOptions.nFieldSepCode = GetCodeFromCombo( aEdFieldSep );
+ rOptions.nTextSepCode = GetCodeFromCombo( aEdTextSep );
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(imoptdlg_07)
+
+USHORT ScImportOptionsDlg::GetCodeFromCombo( const ComboBox& rEd ) const
+{
+ ScDelimiterTable* pTab;
+ String aStr( rEd.GetText() );
+ USHORT nCode;
+
+ if ( &rEd == &aEdTextSep )
+ pTab = pTextSepTab;
+ else
+ pTab = pFieldSepTab;
+
+ if ( !aStr.Len() )
+ {
+ nCode = 0; // kein Trennzeichen
+ }
+ else
+ {
+ nCode = pTab->GetCode( aStr );
+
+ if ( nCode == 0 )
+ nCode = (USHORT)aStr.GetChar(0);
+ }
+
+ return nCode;
+}
+
+//------------------------------------------------------------------------
+// Der Options-String darf kein Semikolon mehr enthalten (wegen Pickliste)
+// darum ab Version 336 Komma stattdessen
+
+#pragma SEG_FUNCDEF(imoptdlg_08)
+
+ScImportOptions::ScImportOptions( const String& rStr )
+{
+ if ( rStr.GetTokenCount(',') >= 3 )
+ {
+ nFieldSepCode = (USHORT) rStr.GetToken(0,',').ToInt32();
+ nTextSepCode = (USHORT) rStr.GetToken(1,',').ToInt32();
+ aStrFont = rStr.GetToken(2,',');
+ eCharSet = GetCharsetValue(aStrFont);
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(imoptdlg_0a)
+
+String ScImportOptions::BuildString() const
+{
+ String aResult;
+
+ aResult += String::CreateFromInt32(nFieldSepCode);
+ aResult += ',';
+ aResult += String::CreateFromInt32(nTextSepCode);
+ aResult += ',';
+ aResult += aStrFont;
+
+ return aResult;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(imoptdlg_09)
+
+String ScImportOptions::BuildParaString( const String& rTyp, const String& rDsn ) const
+{
+ String aResult;
+
+ aResult.AppendAscii(RTL_CONSTASCII_STRINGPARAM("Typ="));
+ aResult += rTyp;
+ aResult.AppendAscii(RTL_CONSTASCII_STRINGPARAM(";Dsn="));
+ aResult += rDsn;
+ aResult.AppendAscii(RTL_CONSTASCII_STRINGPARAM(";Charset="));
+ aResult += aStrFont;
+ aResult.AppendAscii(RTL_CONSTASCII_STRINGPARAM(";del="));
+ aResult += (sal_Unicode)nFieldSepCode;
+ aResult.AppendAscii(RTL_CONSTASCII_STRINGPARAM(";strdel="));
+ aResult += (sal_Unicode)nTextSepCode;
+ aResult.AppendAscii(RTL_CONSTASCII_STRINGPARAM(";deleted;HDR;"));
+
+ return aResult;
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.16 2000/09/17 14:08:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.15 2000/08/31 16:38:20 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.14 2000/04/14 17:38:03 nn
+ unicode changes
+
+ Revision 1.13 1997/12/05 18:55:10 ANK
+ Includes geaendert
+
+
+ Rev 1.12 05 Dec 1997 19:55:10 ANK
+ Includes geaendert
+
+ Rev 1.11 29 Oct 1996 14:03:36 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.10 16 Sep 1996 20:05:00 NN
+ kein Semikolon in Options-String
+
+ Rev 1.9 05 Jun 1996 15:49:34 NN
+ STR_FIELD/TEXTSEP jetzt SCSTR...
+
+ Rev 1.8 15 Jan 1996 11:45:20 NN
+ #24293# String mit Ascii-Codes, #24246# leere Trenner erlauben
+
+ Rev 1.7 07 Dec 1995 17:22:32 MO
+ Cancel wieder aktiviert, GrabFocus auf Lb im Non-ASCII Modus
+
+ Rev 1.6 06 Dec 1995 14:11:48 MO
+ bei nicht-ASCII-Import nur FontListBox (BugId: 21193)
+
+ Rev 1.5 19 Nov 1995 11:54:46 OG
+ pragma korrigiert
+
+ Rev 1.4 15 Nov 1995 16:44:08 JN
+ Optimierungen
+
+ Rev 1.3 16 Oct 1995 19:19:38 JN
+ richtigen Zeichensatz ausgeben
+
+ Rev 1.2 28 Jul 1995 10:27:32 MO
+ Feldtrenner-Delimiter auf TAB geandert
+
+ Rev 1.1 28 Jul 1995 09:33:46 MO
+ Dialog-Titel als optionalen Parameter
+
+ Rev 1.0 20 Jul 1995 15:33:24 MO
+ Initial revision.
+
+------------------------------------------------------------------------ */
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/imoptdlg.hrc b/sc/source/ui/dbgui/imoptdlg.hrc
new file mode 100644
index 000000000000..5dfc2e3f4152
--- /dev/null
+++ b/sc/source/ui/dbgui/imoptdlg.hrc
@@ -0,0 +1,77 @@
+/*************************************************************************
+ *
+ * $RCSfile: imoptdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc"
+
+//#define RID_SCDLG_IMPORTOPT 2256
+
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_HELP 3
+#define FT_FIELDSEP 4
+#define ED_FIELDSEP 5
+#define FT_TEXTSEP 6
+#define ED_TEXTSEP 7
+#define FT_FONT 8
+#define DDLB_FONT 9
+#define LB_FONT 10
+#define GB_FIELDOPT 11
+#define STR_CHARSETKEYS 14
+
diff --git a/sc/source/ui/dbgui/imoptdlg.src b/sc/source/ui/dbgui/imoptdlg.src
new file mode 100644
index 000000000000..9abf45f71ba1
--- /dev/null
+++ b/sc/source/ui/dbgui/imoptdlg.src
@@ -0,0 +1,279 @@
+/*************************************************************************
+ *
+ * $RCSfile: imoptdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include "imoptdlg.hrc"
+
+//! modify CharSet handling like in asciiopt
+
+#define FONTLISTBOX \
+ Border = TRUE; \
+ StringList = { \
+ < "Ansi"; 1; >; \
+ < "Mac"; 2; >; \
+ < "IBMPC"; 4; >; \
+ < "IBMPC (437)"; 3; >; \
+ < "IBMPC (850)"; 4; >; \
+ < "IBMPC (860)"; 5; >; \
+ < "IBMPC (861)"; 6; >; \
+ < "IBMPC (863)"; 7; >; \
+ < "IBMPC (865)"; 8; >; \
+ < "System"; 9; >; \
+ };
+
+
+ModalDialog RID_SCDLG_IMPORTOPT
+{
+ HelpId = HID_SC_INPORTOPT ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 196 , 77 ) ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ Text = "Datei Importieren" ;
+ Text [ ENGLISH ] = "Import File" ;
+ Text [ norwegian ] = "Import File" ;
+ Text [ italian ] = "Importa file" ;
+ Text [ portuguese_brazilian ] = "Import File" ;
+ Text [ portuguese ] = "Importar ficheiro" ;
+ Text [ french ] = "Import de fichier" ;
+ Text [ dutch ] = "Bestand importeren" ;
+ Text [ spanish ] = "Importar archivo" ;
+ Text [ danish ] = "Importer fil" ;
+ Text [ swedish ] = "Importera fil" ;
+ Text [ finnish ] = "Import File" ;
+ Text [ english_us ] = "Import File" ;
+ FixedText FT_FIELDSEP
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "~Feldtrenner" ;
+ Text [ ENGLISH ] = "~Field delimiter" ;
+ Text [ norwegian ] = "~Field delimiter" ;
+ Text [ italian ] = "Separatore di campo" ;
+ Text [ portuguese_brazilian ] = "~Field delimiter" ;
+ Text [ portuguese ] = "Separador de ~campo" ;
+ Text [ french ] = "~Séparateur de champ" ;
+ Text [ dutch ] = "~Veldbegrenzing" ;
+ Text [ spanish ] = "Separador de campos" ;
+ Text [ danish ] = "Feltseparator" ;
+ Text [ swedish ] = "~Fältdelare" ;
+ Text [ finnish ] = "~Field delimiter" ;
+ Text [ english_us ] = "~Field delimiter" ;
+ Text[ chinese_simplified ] = "×ֶηָô·û(~F)";
+ Text[ russian ] = "Ðàçäåëèòåëü ïîëÿ";
+ Text[ polish ] = "Ogranicznik pola";
+ Text[ japanese ] = "̨°ÙÄÞ‚Ì‹æØ‚è‹L†(~F)";
+ Text[ chinese_traditional ] = "Äæ¦ì¤À¹j²Å(~F)";
+ Text[ arabic ] = "ÝÇÕá ÇáÍÞá";
+ Text[ greek ] = "Äéá÷ùñéóôéêü ðåäßùí";
+ Text[ korean ] = "ÇÊµå ±¸ºÐ ±âÈ£(~F)";
+ Text[ turkish ] = "~Ayýrma iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox ED_FIELDSEP
+ {
+ Pos = MAP_APPFONT ( 70 , 14 ) ;
+ Size = MAP_APPFONT ( 60 , 60 ) ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_TEXTSEP
+ {
+ Pos = MAP_APPFONT ( 12 , 35 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "~Texttrenner" ;
+ Text [ ENGLISH ] = "~Text delimiter" ;
+ Text [ norwegian ] = "~Text delimiter" ;
+ Text [ italian ] = "Separatore di ~testo" ;
+ Text [ portuguese_brazilian ] = "~Text delimiter" ;
+ Text [ portuguese ] = "Delimitador de ~texto" ;
+ Text [ french ] = "Séparateur de ~texte" ;
+ Text [ dutch ] = "~Tekstbegrenzing" ;
+ Text [ spanish ] = "S~eparador de texto" ;
+ Text [ danish ] = "Tekstseparator" ;
+ Text [ swedish ] = "~Textavgränsare" ;
+ Text [ finnish ] = "~Text delimiter" ;
+ Text [ english_us ] = "~Text delimiter" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö·Ö¸ô·û(~T)";
+ Text[ russian ] = "Ðàçäåëèòåëü òåêñòà";
+ Text[ polish ] = "Ogranicznik tekstu";
+ Text[ japanese ] = "÷½Ä‚Ì‹æØ‚è‹L†(~T)";
+ Text[ chinese_traditional ] = "¤å¦r¤À¹j²Å(~T)";
+ Text[ arabic ] = "ÝÇÕá ÇáäÕ";
+ Text[ greek ] = "Äéá÷ùñéóôéêü êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ±¸ºÐ ±âÈ£(~T)";
+ Text[ turkish ] = "~Metin ayýrma iþa.";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox ED_TEXTSEP
+ {
+ Pos = MAP_APPFONT ( 70 , 33 ) ;
+ Size = MAP_APPFONT ( 60 , 60 ) ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_FONT
+ {
+ Pos = MAP_APPFONT ( 12 , 53 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "~Zeichensatz" ;
+ Text [ ENGLISH ] = "F~ont" ;
+ Text [ norwegian ] = "F~ont" ;
+ Text [ italian ] = "~Tipo di carattere" ;
+ Text [ portuguese_brazilian ] = "F~onte" ;
+ Text [ portuguese ] = "~Conjunto de caracteres" ;
+ Text [ french ] = "~Jeu de caractères" ;
+ Text [ dutch ] = "~Tekenset" ;
+ Text [ spanish ] = "J~uego de caracteres" ;
+ Text [ danish ] = "Tegnsæt" ;
+ Text [ swedish ] = "~Teckenuppsättning" ;
+ Text [ finnish ] = "F~ont" ;
+ Text [ english_us ] = "~Character set" ;
+ Text[ chinese_simplified ] = "×ÖÌå(~C)";
+ Text[ russian ] = "Íàáîð ñèìâîëîâ";
+ Text[ polish ] = "Zbiór znaków";
+ Text[ japanese ] = "•¶Žš—ñ(~C)";
+ Text[ chinese_traditional ] = "¦r«¬(~C)";
+ Text[ arabic ] = "ãÌãæÚÉ ÃÍÑÝ";
+ Text[ greek ] = "~Óåô ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ ¼¼Æ®(~C)";
+ Text[ turkish ] = "~Karakter kümesi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox DDLB_FONT
+ {
+ FONTLISTBOX
+ DropDown = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 51 ) ;
+ Size = MAP_APPFONT ( 60 , 81 ) ;
+ };
+ ListBox LB_FONT
+ {
+ FONTLISTBOX
+ DropDown = FALSE ;
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 119 , 50 ) ;
+ };
+ GroupBox GB_FIELDOPT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 130 , 68 ) ;
+ Text = "Feld Optionen" ;
+ Text [ ENGLISH ] = "Field Options" ;
+ Text [ norwegian ] = "Field Options" ;
+ Text [ italian ] = "Opzioni campo" ;
+ Text [ portuguese_brazilian ] = "Opções de Campo" ;
+ Text [ portuguese ] = "Opções de campo" ;
+ Text [ french ] = "Options de champ" ;
+ Text [ dutch ] = "Veldopties" ;
+ Text [ spanish ] = "Opciones de campo" ;
+ Text [ danish ] = "Feltindstillinger" ;
+ Text [ swedish ] = "Fältalternativ" ;
+ Text [ finnish ] = "Field Options" ;
+ Text [ english_us ] = "Field options" ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÑ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû ïîëÿ";
+ Text[ polish ] = "Opcje pola";
+ Text[ japanese ] = "̨°ÙÄÞµÌß¼®Ý";
+ Text[ chinese_traditional ] = "Äæ¦ì¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ ÇáÍÞá";
+ Text[ greek ] = "ÅðéëïãÝò ðåäßïõ";
+ Text[ korean ] = "ÇÊµå ¿É¼Ç";
+ Text[ turkish ] = "Alan seçenekleri";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 142 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 142 , 24 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 142 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ String STR_CHARSETKEYS // DO NOT TRANSLATE
+ // DO NOT TRANSLATE
+ // DO NOT TRANSLATE
+ // DO NOT TRANSLATE
+ // DO NOT TRANSLATE
+ // DO NOT TRANSLATE
+ {
+ // DO NOT TRANSLATE
+ Text = "ANSI;MAC;IBMPC;IBMPC_437;IBMPC_850;IBMPC_860;IBMPC_861;IBMPC_863;IBMPC_865;SYSTEM" ;
+ };
+ Text[ chinese_simplified ] = "ÊäÈëÎļþ";
+ Text[ russian ] = "Èìïîðò ôàéëà";
+ Text[ polish ] = "Importuj plik";
+ Text[ japanese ] = "̧²Ù‚̲ÝÎß°Ä";
+ Text[ chinese_traditional ] = "¿é¤JÀÉ®×";
+ Text[ arabic ] = "ÇÓÊíÑÇÏ ãáÝ";
+ Text[ greek ] = "ÅéóáãùãÞ áñ÷åßïõ";
+ Text[ korean ] = "ÆÄÀÏ °¡Á®¿À±â";
+ Text[ turkish ] = "Dosyayý içe aktar";
+ Text[ language_user1 ] = " ";
+};
+
diff --git a/sc/source/ui/dbgui/makefile.mk b/sc/source/ui/dbgui/makefile.mk
new file mode 100644
index 000000000000..bd9d5c78f13e
--- /dev/null
+++ b/sc/source/ui/dbgui/makefile.mk
@@ -0,0 +1,127 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=dbgui
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES = \
+ $(SLO)$/sortdlg.obj \
+ $(SLO)$/tpsort.obj \
+ $(SLO)$/filtdlg.obj \
+ $(SLO)$/sfiltdlg.obj \
+ $(SLO)$/foptmgr.obj \
+ $(SLO)$/pfiltdlg.obj \
+ $(SLO)$/dbnamdlg.obj \
+ $(SLO)$/expftext.obj \
+ $(SLO)$/subtdlg.obj \
+ $(SLO)$/tpsubt.obj \
+ $(SLO)$/fieldwnd.obj \
+ $(SLO)$/pvlaydlg.obj \
+ $(SLO)$/pvfundlg.obj \
+ $(SLO)$/dapitype.obj \
+ $(SLO)$/dapidata.obj \
+ $(SLO)$/consdlg.obj \
+ $(SLO)$/scendlg.obj \
+ $(SLO)$/imoptdlg.obj \
+ $(SLO)$/validate.obj \
+ $(SLO)$/datagrid.obj \
+ $(SLO)$/ruler.obj \
+ $(SLO)$/tabrul.obj \
+ $(SLO)$/asciiopt.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/dapidata.obj
+
+SRCFILES = \
+ pivot.src \
+ pvfundlg.src \
+ dapitype.src \
+ consdlg.src \
+ scendlg.src \
+ imoptdlg.src \
+ validate.src \
+ asciiopt.src \
+ outline.src
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
diff --git a/sc/source/ui/dbgui/outline.src b/sc/source/ui/dbgui/outline.src
new file mode 100644
index 000000000000..fe117f872be4
--- /dev/null
+++ b/sc/source/ui/dbgui/outline.src
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * $RCSfile: outline.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+#include <basctl/basicide.hrc>
+
+
+
+// Imageliste hier, damit sie nicht in ui.src beim Zusammenbauen der
+// "echten" Imagelisten stoert
+
+ImageList RID_OUTLINEBITMAPS
+{
+ ImageBitmap = Bitmap { File = "outline.bmp" ; };
+ IdList = { 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 ; 10 ; };
+ IdCount = { 10 ; };
+};
+
+
+
diff --git a/sc/source/ui/dbgui/pfiltdlg.cxx b/sc/source/ui/dbgui/pfiltdlg.cxx
new file mode 100644
index 000000000000..d992be47ec22
--- /dev/null
+++ b/sc/source/ui/dbgui/pfiltdlg.cxx
@@ -0,0 +1,782 @@
+/*************************************************************************
+ *
+ * $RCSfile: pfiltdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <vcl/waitobj.hxx>
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "uiitems.hxx"
+#include "global.hxx"
+#include "dbcolect.hxx"
+#include "scresid.hxx"
+
+#include "sc.hrc"
+#include "filter.hrc"
+#include "globstr.hrc"
+
+#define _PFILTDLG_CXX
+#include "pfiltdlg.hxx"
+#undef _PFILTDLG_CXX
+
+SEG_EOFGLOBALS()
+
+//==================================================================
+#pragma SEG_FUNCDEF(pfiltdlg_01)
+
+ScPivotFilterDlg::ScPivotFilterDlg( Window* pParent,
+ const SfxItemSet& rArgSet,
+ USHORT nSourceTab )
+
+ : ModalDialog ( pParent, ScResId( RID_SCDLG_PIVOTFILTER ) ),
+ //
+ aBtnCase ( this, ScResId( BTN_CASE ) ),
+ aBtnRegExp ( this, ScResId( BTN_REGEXP ) ),
+ aBtnUnique ( this, ScResId( BTN_UNIQUE ) ),
+ aFtDbAreaLabel ( this, ScResId( FT_DBAREA_LABEL ) ),
+ aFtDbArea ( this, ScResId( FT_DBAREA ) ),
+ aGbOptions ( this, ScResId( GB_OPTIONS ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnMore ( this, ScResId( BTN_MORE ) ),
+ aStrNoName ( ScGlobal::GetRscString(STR_DB_NONAME) ),
+ aStrNone ( ScResId( SCSTR_NONE ) ),
+ aStrUndefined ( ScResId( SCSTR_UNDEFINED ) ),
+ aFtConnect ( this, ScResId( FT_OP ) ),
+ aFtField ( this, ScResId( FT_FIELD ) ),
+ aFtCond ( this, ScResId( FT_COND ) ),
+ aFtVal ( this, ScResId( FT_VAL ) ),
+ aLbField1 ( this, ScResId( LB_FIELD1 ) ),
+ aLbField2 ( this, ScResId( LB_FIELD2 ) ),
+ aLbField3 ( this, ScResId( LB_FIELD3 ) ),
+ aLbConnect1 ( this, ScResId( LB_OP1 ) ),
+ aLbConnect2 ( this, ScResId( LB_OP2 ) ),
+ aLbCond1 ( this, ScResId( LB_COND1 ) ),
+ aLbCond2 ( this, ScResId( LB_COND2 ) ),
+ aLbCond3 ( this, ScResId( LB_COND3 ) ),
+ aEdVal1 ( this, ScResId( ED_VAL1 ) ),
+ aEdVal2 ( this, ScResId( ED_VAL2 ) ),
+ aEdVal3 ( this, ScResId( ED_VAL3 ) ),
+ aGbCriteria ( this, ScResId( GB_CRITERIA ) ),
+ aStrEmpty ( ScResId( SCSTR_EMPTY ) ),
+ aStrNotEmpty ( ScResId( SCSTR_NOTEMPTY ) ),
+ aStrRow ( ScResId( SCSTR_ROW ) ),
+ aStrColumn ( ScResId( SCSTR_COLUMN ) ),
+ //
+ nWhichQuery ( rArgSet.GetPool()->GetWhich( SID_QUERY ) ),
+ theQueryData ( ((const ScQueryItem&)
+ rArgSet.Get( nWhichQuery )).GetQueryData() ),
+ nFieldCount ( 0 ),
+ pOutItem ( NULL ),
+ pViewData ( NULL ),
+ pDoc ( NULL ),
+ nSrcTab ( nSourceTab ) // ist nicht im QueryParam
+{
+ for (USHORT i=0; i<=MAXCOL; i++)
+ pEntryLists[i] = NULL;
+
+ Init( rArgSet );
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pfiltdlg_02)
+
+__EXPORT ScPivotFilterDlg::~ScPivotFilterDlg()
+{
+ for (USHORT i=0; i<=MAXCOL; i++)
+ delete pEntryLists[i];
+
+ if ( pOutItem )
+ delete pOutItem;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pfiltdlg_03)
+
+void __EXPORT ScPivotFilterDlg::Init( const SfxItemSet& rArgSet )
+{
+ const ScQueryItem& rQueryItem = (const ScQueryItem&)
+ rArgSet.Get( nWhichQuery );
+
+ aBtnCase.SetClickHdl ( LINK( this, ScPivotFilterDlg, CheckBoxHdl ) );
+
+ aLbField1.SetSelectHdl ( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
+ aLbField2.SetSelectHdl ( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
+ aLbField3.SetSelectHdl ( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
+ aLbConnect1.SetSelectHdl( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
+ aLbConnect2.SetSelectHdl( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
+
+ aBtnMore.AddWindow( &aBtnCase );
+ aBtnMore.AddWindow( &aBtnRegExp );
+ aBtnMore.AddWindow( &aBtnUnique );
+ aBtnMore.AddWindow( &aFtDbAreaLabel );
+ aBtnMore.AddWindow( &aFtDbArea );
+ aBtnMore.AddWindow( &aGbOptions );
+
+ aBtnCase .Check( theQueryData.bCaseSens );
+ aBtnRegExp .Check( theQueryData.bRegExp );
+ aBtnUnique .Check( !theQueryData.bDuplicate );
+
+ pViewData = rQueryItem.GetViewData();
+ pDoc = pViewData ? pViewData->GetDocument() : NULL;
+
+ // fuer leichteren Zugriff:
+ aFieldLbArr [0] = &aLbField1;
+ aFieldLbArr [1] = &aLbField2;
+ aFieldLbArr [2] = &aLbField3;
+ aValueEdArr [0] = &aEdVal1;
+ aValueEdArr [1] = &aEdVal2;
+ aValueEdArr [2] = &aEdVal3;
+ aCondLbArr [0] = &aLbCond1;
+ aCondLbArr [1] = &aLbCond2;
+ aCondLbArr [2] = &aLbCond3;
+
+ if ( pViewData && pDoc )
+ {
+ ScRangeName* pRangeNames = pDoc->GetRangeName();
+ String theAreaStr;
+ ScRange theCurArea ( ScAddress( theQueryData.nCol1,
+ theQueryData.nRow1,
+ nSrcTab ),
+ ScAddress( theQueryData.nCol2,
+ theQueryData.nRow2,
+ nSrcTab ) );
+ ScDBCollection* pDBColl = pDoc->GetDBCollection();
+ String theDbArea;
+ String theDbName = aStrNoName;
+
+ /*
+ * Ueberpruefen, ob es sich bei dem uebergebenen
+ * Bereich um einen Datenbankbereich handelt:
+ */
+
+ theCurArea.Format( theAreaStr, SCR_ABS_3D, pDoc );
+
+ if ( pDBColl )
+ {
+ ScAddress& rStart = theCurArea.aStart;
+ ScAddress& rEnd = theCurArea.aEnd;
+ ScDBData* pDBData = pDBColl->GetDBAtArea( rStart.Tab(),
+ rStart.Col(), rStart.Row(),
+ rEnd.Col(), rEnd.Row() );
+ if ( pDBData )
+ pDBData->GetName( theDbName );
+ }
+
+ theDbArea.AppendAscii(RTL_CONSTASCII_STRINGPARAM(" ("));
+ theDbArea += theDbName;
+ theDbArea += ')';
+ aFtDbArea.SetText( theDbArea );
+ }
+ else
+ {
+ aFtDbArea.SetText( EMPTY_STRING );
+ }
+
+ // Feldlisten einlesen und Eintraege selektieren:
+
+ FillFieldLists();
+
+ for ( USHORT i=0; i<3; i++ )
+ {
+ if ( theQueryData.GetEntry(i).bDoQuery )
+ {
+ ScQueryEntry& rEntry = theQueryData.GetEntry(i);
+
+ String aValStr = *rEntry.pStr;
+ USHORT nCondPos = (USHORT)rEntry.eOp;
+ USHORT nFieldSelPos = GetFieldSelPos( rEntry.nField );
+
+ aFieldLbArr[i]->SelectEntryPos( nFieldSelPos );
+ aCondLbArr [i]->SelectEntryPos( nCondPos );
+ UpdateValueList( i+1 );
+ aValueEdArr[i]->SetText( aValStr );
+ }
+ else
+ {
+ aFieldLbArr[i]->SelectEntryPos( 0 ); // "keiner" selektieren
+ aCondLbArr [i]->SelectEntryPos( 0 ); // "=" selektieren
+ UpdateValueList( i );
+ aValueEdArr[i]->SetText( EMPTY_STRING );
+ }
+ aValueEdArr[i]->SetModifyHdl( LINK( this, ScPivotFilterDlg, ValModifyHdl ) );
+ }
+
+ // Disable/Enable Logik:
+
+ (aLbField1.GetSelectEntryPos() != 0)
+ && (aLbField2.GetSelectEntryPos() != 0)
+ ? aLbConnect1.SelectEntryPos( (USHORT)theQueryData.GetEntry(1).eConnect )
+ : aLbConnect1.SetNoSelection();
+
+ (aLbField2.GetSelectEntryPos() != 0)
+ && (aLbField3.GetSelectEntryPos() != 0)
+ ? aLbConnect2.SelectEntryPos( (USHORT)theQueryData.GetEntry(2).eConnect )
+ : aLbConnect2.SetNoSelection();
+
+ if ( aLbField1.GetSelectEntryPos() == 0 )
+ {
+ aLbConnect1.Disable();
+ aLbField2.Disable();
+ aLbCond2.Disable();
+ aEdVal2.Disable();
+ }
+ else if ( aLbConnect1.GetSelectEntryCount() == 0 )
+ {
+ aLbField2.Disable();
+ aLbCond2.Disable();
+ aEdVal2.Disable();
+ }
+
+ if ( aLbField2.GetSelectEntryPos() == 0 )
+ {
+ aLbConnect2.Disable();
+ aLbField3.Disable();
+ aLbCond3.Disable();
+ aEdVal3.Disable();
+ }
+ else if ( aLbConnect2.GetSelectEntryCount() == 0 )
+ {
+ aLbField3.Disable();
+ aLbCond3.Disable();
+ aEdVal3.Disable();
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pfiltdlg_04)
+
+void ScPivotFilterDlg::FillFieldLists()
+{
+ aLbField1.Clear();
+ aLbField2.Clear();
+ aLbField3.Clear();
+ aLbField1.InsertEntry( aStrNone, 0 );
+ aLbField2.InsertEntry( aStrNone, 0 );
+ aLbField3.InsertEntry( aStrNone, 0 );
+
+ if ( pDoc )
+ {
+ String aFieldName;
+ USHORT nTab = nSrcTab;
+ USHORT nFirstCol = theQueryData.nCol1;
+ USHORT nFirstRow = theQueryData.nRow1;
+ USHORT nMaxCol = theQueryData.nCol2;
+ USHORT col = 0;
+ USHORT i=1;
+
+ for ( col=nFirstCol; col<=nMaxCol; col++ )
+ {
+ pDoc->GetString( col, nFirstRow, nTab, aFieldName );
+ if ( aFieldName.Len() == 0 )
+ {
+ aFieldName = aStrColumn;
+ aFieldName += ' ';
+ if ( col < 26 )
+ aFieldName += (sal_Unicode)( 'A' + col );
+ else
+ {
+ aFieldName += (sal_Unicode)( 'A' + ( col / 26 ) - 1 );
+ aFieldName += (sal_Unicode)( 'A' + ( col % 26 ) );
+ }
+ }
+ aLbField1.InsertEntry( aFieldName, i );
+ aLbField2.InsertEntry( aFieldName, i );
+ aLbField3.InsertEntry( aFieldName, i );
+ i++;
+ }
+ nFieldCount = i;
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pfiltdlg_05)
+
+void ScPivotFilterDlg::UpdateValueList( USHORT nList )
+{
+ if ( pDoc && nList>0 && nList<=3 )
+ {
+ ComboBox* pValList = aValueEdArr[nList-1];
+ USHORT nFieldSelPos = aFieldLbArr[nList-1]->GetSelectEntryPos();
+ USHORT nListPos = 0;
+ String aCurValue = pValList->GetText();
+
+ pValList->Clear();
+ pValList->InsertEntry( aStrNotEmpty, 0 );
+ pValList->InsertEntry( aStrEmpty, 1 );
+ nListPos = 2;
+
+ if ( pDoc && nFieldSelPos )
+ {
+ USHORT nColumn = theQueryData.nCol1 + nFieldSelPos - 1;
+ if (!pEntryLists[nColumn])
+ {
+ WaitObject aWaiter( this );
+
+ USHORT nTab = nSrcTab;
+ USHORT nFirstRow = theQueryData.nRow1;
+ USHORT nLastRow = theQueryData.nRow2;
+ nFirstRow++;
+
+ pEntryLists[nColumn] = new TypedStrCollection( 128, 128 );
+ pEntryLists[nColumn]->SetCaseSensitive( aBtnCase.IsChecked() );
+ pDoc->GetFilterEntriesArea( nColumn, nFirstRow, nLastRow,
+ nTab, *pEntryLists[nColumn] );
+ }
+
+ TypedStrCollection* pColl = pEntryLists[nColumn];
+ USHORT nValueCount = pColl->GetCount();
+ if ( nValueCount > 0 )
+ {
+ for ( USHORT i=0; i<nValueCount; i++ )
+ {
+ pValList->InsertEntry( (*pColl)[i]->GetString(), nListPos );
+ nListPos++;
+ }
+ }
+ }
+ pValList->SetText( aCurValue );
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pfiltdlg_06)
+
+void ScPivotFilterDlg::ClearValueList( USHORT nList )
+{
+ if ( nList>0 && nList<=3 )
+ {
+ ComboBox* pValList = aValueEdArr[nList-1];
+ pValList->Clear();
+ pValList->InsertEntry( aStrNotEmpty, 0 );
+ pValList->InsertEntry( aStrEmpty, 1 );
+ pValList->SetText( EMPTY_STRING );
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pfiltdlg_07)
+
+USHORT ScPivotFilterDlg::GetFieldSelPos( USHORT nField )
+{
+ if ( nField >= theQueryData.nCol1 && nField <= theQueryData.nCol2 )
+ return nField - theQueryData.nCol1 + 1;
+ else
+ return 0;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pfiltdlg_08)
+
+const ScQueryItem& ScPivotFilterDlg::GetOutputItem()
+{
+ ScQueryParam theParam( theQueryData );
+ USHORT nConnect1 = aLbConnect1.GetSelectEntryPos();
+ USHORT nConnect2 = aLbConnect2.GetSelectEntryPos();
+
+ for ( USHORT i=0; i<3; i++ )
+ {
+ USHORT nField = aFieldLbArr[i]->GetSelectEntryPos();
+ ScQueryOp eOp = (ScQueryOp)aCondLbArr[i]->GetSelectEntryPos();
+
+ BOOL bDoThis = (aFieldLbArr[i]->GetSelectEntryPos() != 0);
+ theParam.GetEntry(i).bDoQuery = bDoThis;
+
+ if ( bDoThis )
+ {
+ ScQueryEntry& rEntry = theParam.GetEntry(i);
+
+ String aStrVal( aValueEdArr[i]->GetText() );
+
+ /*
+ * Dialog liefert die ausgezeichneten Feldwerte "leer"/"nicht leer"
+ * als Konstanten in nVal in Verbindung mit dem Schalter
+ * bQueryByString auf FALSE.
+ */
+ if ( aStrVal == aStrEmpty )
+ {
+ *rEntry.pStr = EMPTY_STRING;
+ rEntry.nVal = SC_EMPTYFIELDS;
+ rEntry.bQueryByString = FALSE;
+ }
+ else if ( aStrVal == aStrNotEmpty )
+ {
+ *rEntry.pStr = EMPTY_STRING;
+ rEntry.nVal = SC_NONEMPTYFIELDS;
+ rEntry.bQueryByString = FALSE;
+ }
+ else
+ {
+ *rEntry.pStr = aStrVal;
+ rEntry.nVal = 0;
+ rEntry.bQueryByString = TRUE;
+ }
+
+ rEntry.nField = nField ? ( theQueryData.nCol1 + nField - 1 ) : 0;
+ rEntry.eOp = eOp;
+ }
+ }
+
+ theParam.GetEntry(1).eConnect = (nConnect1 != LISTBOX_ENTRY_NOTFOUND)
+ ? (ScQueryConnect)nConnect1
+ : SC_AND;
+ theParam.GetEntry(2).eConnect = (nConnect2 != LISTBOX_ENTRY_NOTFOUND)
+ ? (ScQueryConnect)nConnect2
+ : SC_AND;
+
+ theParam.bInplace = FALSE;
+ theParam.nDestTab = 0; // Woher kommen diese Werte?
+ theParam.nDestCol = 0;
+ theParam.nDestRow = 0;
+
+ theParam.bDuplicate = !aBtnUnique.IsChecked();
+ theParam.bCaseSens = aBtnCase.IsChecked();
+ theParam.bRegExp = aBtnRegExp.IsChecked();
+
+ if ( pOutItem ) DELETEZ( pOutItem );
+ pOutItem = new ScQueryItem( nWhichQuery, &theParam );
+
+ return *pOutItem;
+}
+
+//------------------------------------------------------------------------
+// Handler:
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pfiltdlg_09)
+
+IMPL_LINK( ScPivotFilterDlg, LbSelectHdl, ListBox*, pLb )
+{
+ /*
+ * Behandlung der Enable/Disable-Logik,
+ * abhaengig davon, welche ListBox angefasst wurde:
+ */
+
+ if ( pLb == &aLbConnect1 )
+ {
+ if ( !aLbField2.IsEnabled() )
+ {
+ aLbField2.Enable();
+ aLbCond2.Enable();
+ aEdVal2.Enable();
+ }
+ }
+ else if ( pLb == &aLbConnect2 )
+ {
+ if ( !aLbField3.IsEnabled() )
+ {
+ aLbField3.Enable();
+ aLbCond3.Enable();
+ aEdVal3.Enable();
+ }
+ }
+ else if ( pLb == &aLbField1 )
+ {
+ if ( aLbField1.GetSelectEntryPos() == 0 )
+ {
+ aLbConnect1.SetNoSelection();
+ aLbConnect2.SetNoSelection();
+ aLbField2.SelectEntryPos( 0 );
+ aLbField3.SelectEntryPos( 0 );
+ aLbCond2.SelectEntryPos( 0 );
+ aLbCond3.SelectEntryPos( 0 );
+ ClearValueList( 1 );
+ ClearValueList( 2 );
+ ClearValueList( 3 );
+
+ aLbConnect1.Disable();
+ aLbConnect2.Disable();
+ aLbField2.Disable();
+ aLbField3.Disable();
+ aLbCond2.Disable();
+ aLbCond3.Disable();
+ aEdVal2.Disable();
+ aEdVal3.Disable();
+ }
+ else
+ {
+ UpdateValueList( 1 );
+ if ( !aLbConnect1.IsEnabled() )
+ {
+ aLbConnect1.Enable();
+ }
+ }
+ }
+ else if ( pLb == &aLbField2 )
+ {
+ if ( aLbField2.GetSelectEntryPos() == 0 )
+ {
+ aLbConnect2.SetNoSelection();
+ aLbField3.SelectEntryPos( 0 );
+ aLbCond3.SelectEntryPos( 0 );
+ ClearValueList( 2 );
+ ClearValueList( 3 );
+
+ aLbConnect2.Disable();
+ aLbField3.Disable();
+ aLbCond3.Disable();
+ aEdVal3.Disable();
+ }
+ else
+ {
+ UpdateValueList( 2 );
+ if ( !aLbConnect2.IsEnabled() )
+ {
+ aLbConnect2.Enable();
+ }
+ }
+ }
+ else if ( pLb == &aLbField3 )
+ {
+ ( aLbField3.GetSelectEntryPos() == 0 )
+ ? ClearValueList( 3 )
+ : UpdateValueList( 3 );
+ }
+
+ return NULL;
+}
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pfiltdlg_0b)
+
+IMPL_LINK( ScPivotFilterDlg, CheckBoxHdl, CheckBox*, pBox )
+{
+ // bei Gross-/Kleinschreibung die Werte-Listen aktualisieren
+
+ if ( pBox == &aBtnCase ) // Wertlisten
+ {
+ for (USHORT i=0; i<=MAXCOL; i++)
+ DELETEZ( pEntryLists[i] );
+
+ String aCurVal1 = aEdVal1.GetText();
+ String aCurVal2 = aEdVal2.GetText();
+ String aCurVal3 = aEdVal3.GetText();
+ UpdateValueList( 1 );
+ UpdateValueList( 2 );
+ UpdateValueList( 3 );
+ aEdVal1.SetText( aCurVal1 );
+ aEdVal2.SetText( aCurVal2 );
+ aEdVal3.SetText( aCurVal3 );
+ }
+
+ return NULL;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pfiltdlg_0a)
+
+IMPL_LINK( ScPivotFilterDlg, ValModifyHdl, ComboBox*, pEd )
+{
+ if ( pEd )
+ {
+ String aStrVal = pEd->GetText();
+ ListBox* pLb = &aLbCond1;
+
+ if ( pEd == &aEdVal2 ) pLb = &aLbCond2;
+ else if ( pEd == &aEdVal3 ) pLb = &aLbCond3;
+
+ // wenn einer der Sonderwerte leer/nicht-leer
+ // gewaehlt wird, so macht nur der =-Operator Sinn:
+
+ if ( aStrEmpty == aStrVal || aStrNotEmpty == aStrVal )
+ {
+ pLb->SelectEntry( '=' );
+ pLb->Disable();
+ }
+ else
+ pLb->Enable();
+ }
+
+ return NULL;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.20 2000/09/17 14:08:56 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.19 2000/08/31 16:38:20 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.18 2000/05/25 10:20:06 er
+ NOOLDSV
+
+ Revision 1.17 2000/04/14 17:38:03 nn
+ unicode changes
+
+ Revision 1.16 2000/02/11 12:23:42 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.15 1997/12/05 18:56:52 ANK
+ Includes geaendert
+
+
+ Rev 1.14 05 Dec 1997 19:56:52 ANK
+ Includes geaendert
+
+ Rev 1.13 12 Jun 1997 13:16:54 NN
+ #40646# STR_DB_NONAME statt SCSTR_NONAME fuer DB-Bereiche
+
+ Rev 1.12 29 Nov 1996 18:57:42 NN
+ Gross-/Kleinschreibung auch in Werte-Liste
+
+ Rev 1.11 27 Nov 1996 14:18:10 NN
+ #31076# Entry-Listen pro Spalte nur einmal holen
+
+ Rev 1.10 13 Nov 1996 11:33:20 NN
+ ScQueryParam mit dynamischen Eintraegen
+
+ Rev 1.9 29 Oct 1996 14:03:36 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.8 18 Jul 1996 11:21:08 NN
+ Quell-Tabelle merken
+
+ Rev 1.7 18 Jan 1996 11:44:30 MO
+ #24232# leer/nicht-leer-Behandlung, neuer Link
+
+ Rev 1.6 27 Nov 1995 13:42:12 MO
+ RangeUtil/Area/Tripel gegen Address/Range ersetzt
+
+ Rev 1.5 08 Nov 1995 13:05:48 MO
+ 301-Aenderungen
+
+ Rev 1.4 14 Jul 1995 13:55:28 MO
+ 3. ValueList im Init fuellen (BugId: 15364)
+
+ Rev 1.3 12 Jul 1995 17:40:30 MO
+ GetFilterEntries: mit TypedStrCollection
+
+ Rev 1.2 25 Apr 1995 11:39:56 MO
+ leer/nicht-leer Feldwerte
+
+ Rev 1.1 24 Mar 1995 13:19:06 TRI
+ Segmentierung
+
+ Rev 1.0 22 Feb 1995 19:13:08 MO
+ Initial revision.
+
+ Rev 1.14 08 Feb 1995 12:55:02 MO
+ * Dispatcher-Execute: 0L angehaengt (sonst uneindeutig)
+
+ Rev 1.13 03 Feb 1995 12:43:02 MO
+ * Ctor: Show()
+
+
+ Rev 1.12 27 Jan 1995 16:14:44 MO
+ * Umstellung aus Slot-IDs
+
+ Rev 1.11 26 Jan 1995 19:00:18 TRI
+ __EXPORT bei virtuellen Methoden eingebaut
+
+ Rev 1.10 25 Jan 1995 18:53:56 MO
+ * Auswertung der Connect-ListBoxen korrigiert
+
+ Rev 1.9 25 Jan 1995 12:39:00 MO
+ * Einzelne Zellposition als Kopierziel (SetReferenz und Ueberpruefungen)
+
+ Rev 1.8 19 Jan 1995 16:47:48 TRI
+ __EXPORT vor verschiedene LinkHandler gesetzt
+
+ Rev 1.7 18 Jan 1995 13:56:26 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.6 17 Jan 1995 11:57:34 MO
+ CheckBoxHdl fuer aBtnHeader wieder aktiviert
+
+ Rev 1.5 16 Jan 1995 14:24:54 MO
+ Fehlerbehandlung bei ungueltigen Bereichsnamen im EndDlg-Handler
+
+ Rev 1.4 13 Jan 1995 17:30:34 MO
+ Special-Dialog ausgegliedert
+
+ Rev 1.3 13 Jan 1995 10:22:14 MO
+ fuer Spezialdialog verwendbare Resource-Handler nach foptmgr verschoben
+
+ Rev 1.2 12 Jan 1995 14:49:52 MO
+ * Erkennung von DB-Bereichen
+ * Gegenseitige Aktualisierung der CopyArea-ListBox/Edit
+ * Einlesen von RangeNames mit RT_ABSAREA
+
+
+ Rev 1.1 09 Jan 1995 11:14:52 MO
+ Parameter werden jetzt per SfxItem (ScQueryItem) uebergeben,
+ bzw. mit GetOutputItemSet() zurueckgegeben.
+
+ Rev 1.0 05 Jan 1995 12:44:12 MO
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/pivot.hrc b/sc/source/ui/dbgui/pivot.hrc
new file mode 100644
index 000000000000..99afec6744d6
--- /dev/null
+++ b/sc/source/ui/dbgui/pivot.hrc
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * $RCSfile: pivot.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc" // ->RID_SCDLG_PIVOT_LAYOUT
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define BTN_MORE 1
+
+#define GB_LAYOUT 1
+#define WND_HSCROLL 1
+
+#define WND_COL 10
+#define WND_ROW 11
+#define WND_DATA 12
+#define WND_SELECT 13
+#define WND_FIELD 14
+
+#define PTR_FIELD 1
+#define FT_INFO 1
+
+#define GB_OUTPUT 2
+#define FT_OUTAREA 2
+#define LB_OUTAREA 1
+#define ED_OUTAREA 1
+#define RB_OUTAREA 1
+#define BTN_IGNEMPTYROWS 3
+#define BTN_DETECTCAT 4
+#define BTN_TOTALCOL 5
+#define BTN_TOTALROW 6
+
+#define PIVOTSTR_SUM 1
+#define PIVOTSTR_COUNT 2
+#define PIVOTSTR_AVG 3
+#define PIVOTSTR_MAX 4
+#define PIVOTSTR_MIN 5
+#define PIVOTSTR_PROD 6
+#define PIVOTSTR_COUNT2 7
+#define PIVOTSTR_DEV 8
+#define PIVOTSTR_DEV2 9
+#define PIVOTSTR_VAR 10
+#define PIVOTSTR_VAR2 11
+
diff --git a/sc/source/ui/dbgui/pivot.src b/sc/source/ui/dbgui/pivot.src
new file mode 100644
index 000000000000..df4cc8bc5144
--- /dev/null
+++ b/sc/source/ui/dbgui/pivot.src
@@ -0,0 +1,786 @@
+/*************************************************************************
+ *
+ * $RCSfile: pivot.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include "pivot.hrc"
+
+ModelessDialog RID_SCDLG_PIVOT_LAYOUT
+{
+ OutputSize = TRUE ;
+ HelpId = SID_OPENDLG_PIVOTTABLE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 320 , 143 ) ;
+ Text = "Datenpilot" ;
+ Text [ ENGLISH ] = "Data Pilot" ;
+ Text [ norwegian ] = "Data Pilot" ;
+ Text [ italian ] = "DataPilot" ;
+ Text [ portuguese_brazilian ] = "Data Pilot" ;
+ Text [ portuguese ] = "Piloto de dados" ;
+ Text [ english_us ] = "DataPilot" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ Window WND_ROW
+ {
+ Pos = MAP_APPFONT ( 9 , 32 ) ;
+ Size = MAP_APPFONT ( 34 , 80 ) ;
+ Text = "ZEILE" ;
+ Text [ ENGLISH ] = "ROW" ;
+ Text [ norwegian ] = "RAD" ;
+ Text [ italian ] = "RIGA" ;
+ Text [ portuguese_brazilian ] = "FILEIRA" ;
+ Text [ portuguese ] = "LINHA" ;
+ Text [ finnish ] = "RIVI" ;
+ Text [ danish ] = "RÆKKE" ;
+ Text [ french ] = "LIGNE" ;
+ Text [ swedish ] = "RAD" ;
+ Text [ dutch ] = "RIJ" ;
+ Text [ spanish ] = "FILA" ;
+ Text [ english_us ] = "ROW" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "ÑÒÐÎÊÀ";
+ Text[ polish ] = "LINIA";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ROW";
+ Text[ greek ] = "ÃÑÁÌÌÇ";
+ Text[ korean ] = "Çà";
+ Text[ turkish ] = "SATIR";
+ Text[ language_user1 ] = " ";
+ };
+ Window WND_COL
+ {
+ Pos = MAP_APPFONT ( 43 , 12 ) ;
+ Size = MAP_APPFONT ( 136 , 20 ) ;
+ Text = "SPALTE" ;
+ Text [ ENGLISH ] = "COLUMN" ;
+ Text [ norwegian ] = "KOLONNE" ;
+ Text [ italian ] = "Colonna" ;
+ Text [ portuguese_brazilian ] = "COLUNA" ;
+ Text [ portuguese ] = "COLUNA" ;
+ Text [ finnish ] = "SARAKE" ;
+ Text [ danish ] = "KOLONNE" ;
+ Text [ french ] = "COLONNE" ;
+ Text [ swedish ] = "KOLUMN" ;
+ Text [ dutch ] = "KOLOM" ;
+ Text [ spanish ] = "COLUMNA" ;
+ Text [ english_us ] = "COLUMN" ;
+ Text[ chinese_simplified ] = "ÁÐ";
+ Text[ russian ] = "ÑÒÎËÁÅÖ";
+ Text[ polish ] = "KOLUMNA";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "COLUMN";
+ Text[ greek ] = "ÓÔÇËÇ";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "SÜTUN";
+ Text[ language_user1 ] = " ";
+ };
+ Window WND_DATA
+ {
+ Pos = MAP_APPFONT ( 43 , 32 ) ;
+ Size = MAP_APPFONT ( 136 , 80 ) ;
+ Text = "DATEN" ;
+ Text [ ENGLISH ] = "DATA" ;
+ Text [ norwegian ] = "DATA" ;
+ Text [ italian ] = "DATI" ;
+ Text [ portuguese_brazilian ] = "DADOS" ;
+ Text [ portuguese ] = "DADOS" ;
+ Text [ finnish ] = "TIEDOT" ;
+ Text [ danish ] = "DATA" ;
+ Text [ french ] = "DONNEES" ;
+ Text [ swedish ] = "DATA" ;
+ Text [ dutch ] = "DATA" ;
+ Text [ spanish ] = "DATOS" ;
+ Text [ english_us ] = "DATA" ;
+ Text[ chinese_simplified ] = "Êý¾Ý";
+ Text[ russian ] = "ÄÀÍÍÛÅ";
+ Text[ polish ] = "DANE";
+ Text[ japanese ] = "ÃÞ°À";
+ Text[ chinese_traditional ] = "¸ê®Æ";
+ Text[ arabic ] = "DATA";
+ Text[ greek ] = "DATA";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "VERÝ";
+ Text[ language_user1 ] = " ";
+ };
+ Window WND_SELECT
+ {
+ Pos = MAP_APPFONT ( 186 , 12 ) ;
+ Size = MAP_APPFONT ( 70 , 100 ) ;
+ };
+ ScrollBar WND_HSCROLL
+ {
+ Pos = MAP_APPFONT ( 186 , 117 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ HScroll = TRUE ;
+ };
+ FixedText FT_INFO
+ {
+ Pos = MAP_APPFONT ( 9 , 117 ) ;
+ Size = MAP_APPFONT ( 171 , 18 ) ;
+ WordBreak = TRUE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ziehen Sie die Felder auf der rechten Seite mit der Maus in die gewünschten Bereiche. : Ziehen Sie die Felder auf der rechten Seite mit der Maus in die gew³nschten Bereiche. */
+ Text = "Ziehen Sie die Felder auf der rechten Seite mit der Maus in die gewünschten Bereiche." ;
+ Text [ ENGLISH ] = "Drag the fields from the right into the desired area using the mouse." ;
+ Text [ norwegian ] = "Dra feltene fra høyre og inn I det ønskede området ved å bruke musen." ;
+ Text [ italian ] = "Trascinate i campi da destra nell'area desiderata usando il mouse." ;
+ Text [ portuguese_brazilian ] = "Arraste os campos da direita para a área desejada usando o mouse." ;
+ Text [ portuguese ] = "Com o rato arraste os campos da direita para as áreas desejadas." ;
+ Text [ finnish ] = "Vedä hiirellä kenttiä oikealta haluamallesi alueelle." ;
+ Text [ danish ] = "Træk felterne på højre side til de ønskede områder ved hjælp af musen." ;
+ Text [ french ] = "Faites glisser les champs de droite vers leur plage de destination à l'aide de la souris." ;
+ Text [ swedish ] = "Dra fälten på den högra sidan till önskade områden med musen." ;
+ Text [ dutch ] = "Sleep de velden aan de rechterzijde met de muis naar het gewenste bereik." ;
+ Text [ spanish ] = "Arrastre los campos de la página derecha hacia el área deseada." ;
+ Text [ english_us ] = "Drag the fields from the right into the desired position." ;
+ Text[ chinese_simplified ] = "Çë½èÖúÊó±ê½«ÓÒÒ³ÖеÄ×Ö¶ÎÍÏÀ­µ½Ï£ÍûµÄÇøÓò¡£";
+ Text[ russian ] = "Ñ ïîìîùüþ ìûøè ïåðåòÿíèòå ïîëå ñ ïðàâîé ñòîðîíû â æåëàåìóþ îáëàñòü.";
+ Text[ polish ] = "Przesuñ pola z prawej strony za pomoc¹ myszy do ¿¹danego obszaru.";
+ Text[ japanese ] = "‰E‘¤‚É‚ ‚ę́°ÙÄÞÎÞÀÝ‚ðŠó–]‚̗̈æ‚ÉÄÞׯ¸Þ‚µ‚ĉº‚³‚¢B";
+ Text[ chinese_traditional ] = "½Ð±z¨Ï¥Î·Æ¹«Áä±NÄæ¦ì©ì©Ô¨ì¥k­¶ªº¥ô·N¤@­Ó°Ï°ì¡C";
+ Text[ arabic ] = "ÇÓÍÈ ÇáÍÞæá ãä ÇáÕÝÍÉ Çáíãäì ÈæÇÓØÉ ÇáãÇæÓ Åáì ÇáãäÇØÞ ÇáÊí ÊÑÛÈ ÝíåÇ.";
+ Text[ greek ] = "Óýñåôå ìå ôï ðïíôßêé ôá ðåäßá ôçò äåîéÜò óåëßäáò óôéò ðåñéï÷Ýò ðïõ åðéèõìåßôå.";
+ Text[ korean ] = "¿À¸¥ÂÊ¿¡¼­ºÎÅÍ ¿øÇÏ´Â À§Ä¡·Î ÇÊµå µå·¡±×";
+ Text[ turkish ] = "Saðdaki alanlarý fare ile istenen konuma sürükleyin.";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_LAYOUT
+ {
+ Pos = MAP_APPFONT ( 3 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Layout" ;
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 270 , 6 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 270 , 23 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 270 , 43 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MoreButton BTN_MORE
+ {
+ Pos = MAP_APPFONT ( 270 , 124 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ /*
+ Text = "~Zusätze";
+ Text[ ENGLISH ] = "~More";
+ Text[norwegian] = "~Mer";
+ Text[italian] = "~Altro";
+ Text[portuguese_brazilian] = "~Mais";
+ Text[portuguese] = "~Mais";
+ Text[finnish] = "~Enemmän";
+ Text[danish] = "~Flere";
+ Text[french] = " S~uite";
+ Text[swedish] = "~Fler";
+ Text[dutch] = "~Overige";
+ Text[spanish] = "~Más";
+ Text[english_us] = "~More";
+ */
+ TabStop = TRUE ;
+ MapUnit = MAP_APPFONT ;
+ Delta = 59 ;
+ };
+ Window WND_FIELD
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 186 , 12 ) ;
+ Size = MAP_APPFONT ( 34 , 10 ) ;
+ Text = "Field" ;
+ };
+ GroupBox GB_OUTPUT
+ {
+ Pos = MAP_APPFONT ( 3 , 142 ) ;
+ Size = MAP_APPFONT ( 260 , 56 ) ;
+ Text = "Ergebnis" ;
+ Text [ ENGLISH ] = "Result" ;
+ Text [ norwegian ] = "Resultat" ;
+ Text [ italian ] = "Risultato" ;
+ Text [ portuguese_brazilian ] = "Resultado" ;
+ Text [ portuguese ] = "Resultado" ;
+ Text [ finnish ] = "Tulos" ;
+ Text [ danish ] = "Resultat" ;
+ Text [ french ] = "Résultat" ;
+ Text [ swedish ] = "Resultat" ;
+ Text [ dutch ] = "Resultaat" ;
+ Text [ spanish ] = "Resultado" ;
+ Text [ english_us ] = "Result" ;
+ Hide = TRUE ;
+ Text[ chinese_simplified ] = "½á¹û";
+ Text[ russian ] = "Ðåçóëüòàò";
+ Text[ polish ] = "Wynik";
+ Text[ japanese ] = "Œ‹‰Ê";
+ Text[ chinese_traditional ] = "µ²ªG";
+ Text[ arabic ] = "ÇáäÊíÌÉ";
+ Text[ greek ] = "ÁðïôÝëåóìá";
+ Text[ korean ] = "°á°ú";
+ Text[ turkish ] = "Sonuç";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_OUTAREA
+ {
+ Pos = MAP_APPFONT ( 9 , 153 ) ;
+ Size = MAP_APPFONT ( 43 , 10 ) ;
+ Text = "Ausgabe ab" ;
+ Text [ ENGLISH ] = "Output from" ;
+ Text [ norwegian ] = "Utgående fra " ;
+ Text [ italian ] = "Risultato da" ;
+ Text [ portuguese_brazilian ] = "Saída de" ;
+ Text [ portuguese ] = "Saída de" ;
+ Text [ finnish ] = "Tulosten lähde" ;
+ Text [ danish ] = "Output fra" ;
+ Text [ french ] = "Plage de destination" ;
+ Text [ swedish ] = "Utdata från" ;
+ Text [ dutch ] = "Uitvoer van" ;
+ Text [ spanish ] = "Resultado en" ;
+ Text [ english_us ] = "Results to" ;
+ Hide = TRUE ;
+ Text[ chinese_simplified ] = "½á¹ûÏÔʾµ½";
+ Text[ russian ] = "Íà÷àòü ñ";
+ Text[ polish ] = "Obszar docelowy tabeli od";
+ Text[ japanese ] = "Œ‹‰Ê“\\‚è•t‚¯æ";
+ Text[ chinese_traditional ] = "µ²ªGÅã¥Ü¨ì";
+ Text[ arabic ] = "ÇáäÊÇÆÌ Åáì";
+ Text[ greek ] = "ÅîáãùãÞ áðü";
+ Text[ korean ] = "°á°ú";
+ Text[ turkish ] = "Çýktý baþl.";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_OUTAREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 152 ) ;
+ Size = MAP_APPFONT ( 90 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Hide = TRUE ;
+ };
+ Edit ED_OUTAREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 150 , 152 ) ;
+ Size = MAP_APPFONT ( 92 , 12 ) ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ };
+ ImageButton RB_OUTAREA
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 244 , 152 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ CheckBox BTN_IGNEMPTYROWS
+ {
+ Pos = MAP_APPFONT ( 9 , 168 ) ;
+ Size = MAP_APPFONT ( 85 , 10 ) ;
+ Text = "Leerzeilen ~ignorieren" ;
+ Text [ ENGLISH ] = "~Ignore empty rows" ;
+ Text [ norwegian ] = "~Ignorer tomme rader " ;
+ Text [ italian ] = "~Ignorare le righe vuote" ;
+ Text [ portuguese_brazilian ] = "~Ignorar fileiras vazias" ;
+ Text [ portuguese ] = "~Ignorar linhas vazias" ;
+ Text [ finnish ] = "~Ohita tyhjät rivit" ;
+ Text [ danish ] = "Ignorer tomme rækker" ;
+ Text [ french ] = "~Ignorer les lignes vides" ;
+ Text [ swedish ] = "~Ignorera tomma rader" ;
+ Text [ dutch ] = "~Lege rijen negeren" ;
+ Text [ spanish ] = "~Ignorar filas vacías" ;
+ Text [ english_us ] = "Ignore ~empty rows" ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text[ chinese_simplified ] = "ºöÂÔ¿ÕÐÐ(~E)";
+ Text[ russian ] = "Ïðîïóñê ïóñòûõ ñòðîê";
+ Text[ polish ] = "Zignoruj spacje";
+ Text[ japanese ] = "‹ó”’s‚𖳎‹‚·‚é(~E)";
+ Text[ chinese_traditional ] = "©¿²¤ªÅ¦C(~E)";
+ Text[ arabic ] = "ÊÌÇåá ÇáÕÝæÝ ÇáÝÇÑÛÉ";
+ Text[ greek ] = "ÐáñÜâëåøç êåíþí ãñáììþí";
+ Text[ korean ] = "ºó Çà ¹«½Ã(~E)";
+ Text[ turkish ] = "Boþ satýrlarý ~yok say";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_DETECTCAT
+ {
+ Pos = MAP_APPFONT ( 97 , 168 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "~Kategorieerkennung" ;
+ Text [ ENGLISH ] = "~Detect Categories" ;
+ Text [ norwegian ] = "~Finn Kategorier " ;
+ Text [ italian ] = "~Individuare categorie" ;
+ Text [ portuguese_brazilian ] = "~Detectar Categorias" ;
+ Text [ portuguese ] = "~Indicar categorias" ;
+ Text [ finnish ] = "~Tunnista ryhmät" ;
+ Text [ danish ] = "Identificer kategorier" ;
+ Text [ french ] = "~Identifier les catégories" ;
+ Text [ swedish ] = "Identifiera k~ategorier" ;
+ Text [ dutch ] = "~Categorieën opsporen" ;
+ Text [ spanish ] = "I~dentificar categorías" ;
+ Text [ english_us ] = "~Identify categories" ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text[ chinese_simplified ] = "ʶ±ð·ÖÀà(~I)";
+ Text[ russian ] = "Ðàñïîçíàíèå êàòåãîðèé";
+ Text[ polish ] = "Identyfikacja kategorii";
+ Text[ japanese ] = "•ª—Þ€–Ú‚Ì”FŽ¯(~I)";
+ Text[ chinese_traditional ] = "ÃѧO¤ÀÃþ(~I)";
+ Text[ arabic ] = "ÊÚÑíÝ ÇáÝÆÉ";
+ Text[ greek ] = "Áíáãíþñéóç êáôçãïñéþí";
+ Text[ korean ] = "ºÐ·ù Ç׸ñ È®ÀÎ(~I)";
+ Text[ turkish ] = "~Kategoriyi tanýmla";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_TOTALCOL
+ {
+ Pos = MAP_APPFONT ( 9 , 181 ) ;
+ Size = MAP_APPFONT ( 85 , 10 ) ;
+ Text = "Gesamtergebnis-~Spalten" ;
+ Text [ ENGLISH ] = "Add total ~colunms" ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text [ english_us ] = "Total ~columns" ;
+ Text [ portuguese ] = "Soma total - ~colunas" ;
+ Text [ swedish ] = "Totalresultat ~kolumner" ;
+ Text [ danish ] = "Total kolonner" ;
+ Text [ italian ] = "Risultato complessivo ~colonne" ;
+ Text [ spanish ] = "~Columnas de totales" ;
+ Text [ french ] = "Total - ~colonnes" ;
+ Text [ dutch ] = "Saldo ~kolommen" ;
+ Text [ portuguese_brazilian ] = "Gesamtergebnis-~Spalten" ;
+ Text[ chinese_simplified ] = "×ܼÆÁÐ(~C)";
+ Text[ russian ] = "Âñåãî ñòîëáöîâ";
+ Text[ polish ] = "~Podsumowanie kolumn";
+ Text[ japanese ] = "—ñ‚Ì‘Œv(~C)";
+ Text[ chinese_traditional ] = "Á`­pÄæ(~C)";
+ Text[ arabic ] = "ÃÚãÏÉ ÇáãÌãæÚ";
+ Text[ greek ] = "Óõíïëéêü Üèñïéóìá óôçëþí";
+ Text[ korean ] = "Àüü ¿­(~C)";
+ Text[ turkish ] = "Sütun ~toplamý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_TOTALROW
+ {
+ Pos = MAP_APPFONT ( 97 , 181 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "~Gesamtergebnis-Zeilen" ;
+ Text [ ENGLISH ] = "Add total ~rows" ;
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Text [ english_us ] = "~Total rows" ;
+ Text [ portuguese ] = "Soma ~total - linhas" ;
+ Text [ swedish ] = "Totalresultat ~rader" ;
+ Text [ danish ] = "Total rækker" ;
+ Text [ italian ] = "Risultato c~omplessivo righe" ;
+ Text [ spanish ] = "~Filas de totales" ;
+ Text [ french ] = "Total - ~lignes" ;
+ Text [ dutch ] = "~Saldo rijen" ;
+ Text [ portuguese_brazilian ] = "~Gesamtergebnis-Zeilen" ;
+ Text[ chinese_simplified ] = "×Ü¼Æ - ÐÐ(~R)";
+ Text[ russian ] = "Âñåãî ñòðîê";
+ Text[ polish ] = "Podsumowanie liczby linijek";
+ Text[ japanese ] = "s‚Ì‘Œv(~R)";
+ Text[ chinese_traditional ] = "Á`­p¦C(~R)";
+ Text[ arabic ] = "ÕÝæÝ ÇáãÌãæÚ";
+ Text[ greek ] = "Óõíïëéêü Üèñïéóìá ãñáììþí";
+ Text[ korean ] = "Àüü Çà(~T)";
+ Text[ turkish ] = "Satýr t~oplamý";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_SUM
+ {
+ Text = "Summe - " ;
+ Text [ ENGLISH ] = "Sum - " ;
+ Text [ norwegian ] = "Sum - " ;
+ Text [ italian ] = "Somma - " ;
+ Text [ portuguese_brazilian ] = "Soma - " ;
+ Text [ portuguese ] = "Soma - " ;
+ Text [ finnish ] = "Summa - " ;
+ Text [ danish ] = "Sum - " ;
+ Text [ french ] = "Somme - " ;
+ Text [ swedish ] = "Summa - " ;
+ Text [ dutch ] = "Som - " ;
+ Text [ spanish ] = "Total - " ;
+ Text [ english_us ] = "Sum - " ;
+ Text[ chinese_simplified ] = "×Ü¼Æ - ";
+ Text[ russian ] = "Ñóììà - ";
+ Text[ polish ] = "Suma - ";
+ Text[ japanese ] = "‡Œv - ";
+ Text[ chinese_traditional ] = "Á`­p - ";
+ Text[ arabic ] = "- Sum";
+ Text[ greek ] = "Sum - ";
+ Text[ korean ] = "ÇÕ°è - ";
+ Text[ turkish ] = "Toplam - ";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_COUNT
+ {
+ Text = "Anzahl - " ;
+ Text [ ENGLISH ] = "Count - " ;
+ Text [ norwegian ] = "Antall - " ;
+ Text [ italian ] = "Numero - " ;
+ Text [ portuguese_brazilian ] = "Contagem - " ;
+ Text [ portuguese ] = "Contar - " ;
+ Text [ finnish ] = "Määrä - " ;
+ Text [ danish ] = "Antal - " ;
+ Text [ french ] = "Nombre - " ;
+ Text [ swedish ] = "Antal - " ;
+ Text [ dutch ] = "Aantal - " ;
+ Text [ spanish ] = "Cantidad - " ;
+ Text [ english_us ] = "Count - " ;
+ Text[ chinese_simplified ] = "ÊýÄ¿ - ";
+ Text[ russian ] = "Êîëè÷åñòâî - ";
+ Text[ polish ] = "Liczba - ";
+ Text[ japanese ] = "‘” - ";
+ Text[ chinese_traditional ] = "¼Æ¥Ø - ";
+ Text[ arabic ] = "- Count";
+ Text[ greek ] = "ÐëÞèïò - ";
+ Text[ korean ] = "Ä«¿îÆ® - ";
+ Text[ turkish ] = "Adet Sayýsý - ";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_AVG
+ {
+ Text = "Mittelwert - " ;
+ Text [ ENGLISH ] = "Average - " ;
+ Text [ norwegian ] = "Gjennomsnitt - " ;
+ Text [ italian ] = "Media - " ;
+ Text [ portuguese_brazilian ] = "Média - " ;
+ Text [ portuguese ] = "Média - " ;
+ Text [ finnish ] = "Keskiarvo - " ;
+ Text [ danish ] = "Middel - " ;
+ Text [ french ] = "Moyenne - " ;
+ Text [ swedish ] = "Medel - " ;
+ Text [ dutch ] = "Gemiddelde - " ;
+ Text [ spanish ] = "Media - " ;
+ Text [ english_us ] = "Mean - " ;
+ Text[ chinese_simplified ] = "ÖмäÖµ - ";
+ Text[ russian ] = "Ñðåäíåå çíà÷åíèå - ";
+ Text[ polish ] = "Œrednia wartoœæ - ";
+ Text[ japanese ] = "•½‹Ï’l- ";
+ Text[ chinese_traditional ] = "¤¤¶¡­È - ";
+ Text[ arabic ] = "Ü Average";
+ Text[ greek ] = "ÌÝóç ôéìÞ - ";
+ Text[ korean ] = "ÀÇ¹Ì - ";
+ Text[ turkish ] = "Ortalama - ";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_MAX
+ {
+ Text = "Max - " ;
+ Text [ ENGLISH ] = "Max - " ;
+ Text [ norwegian ] = "Maks - " ;
+ Text [ italian ] = "Max - " ;
+ Text [ portuguese_brazilian ] = "Max - " ;
+ Text [ portuguese ] = "Máx - " ;
+ Text [ finnish ] = "Suurin - " ;
+ Text [ danish ] = "Maks - " ;
+ Text [ french ] = "Max - " ;
+ Text [ swedish ] = "Max - " ;
+ Text [ dutch ] = "Max - " ;
+ Text [ spanish ] = "Máx - " ;
+ Text [ english_us ] = "Max - " ;
+ Text[ chinese_simplified ] = "×î´ó - ";
+ Text[ russian ] = "Ìàêñèìóì - ";
+ Text[ polish ] = "Max - ";
+ Text[ japanese ] = "Å‘å’l- ";
+ Text[ chinese_traditional ] = "³Ì¤j - ";
+ Text[ arabic ] = "- Max";
+ Text[ greek ] = "Max - ";
+ Text[ korean ] = "ÃÖ´ë - ";
+ Text[ turkish ] = "Max - ";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_MIN
+ {
+ Text = "Min - " ;
+ Text [ ENGLISH ] = "Min - " ;
+ Text [ norwegian ] = "Min - " ;
+ Text [ italian ] = "Min - " ;
+ Text [ portuguese_brazilian ] = "Min - " ;
+ Text [ portuguese ] = "Mín - " ;
+ Text [ finnish ] = "Pienin - " ;
+ Text [ danish ] = "Min - " ;
+ Text [ french ] = "Min - " ;
+ Text [ swedish ] = "Min - " ;
+ Text [ dutch ] = "Min - " ;
+ Text [ spanish ] = "Mín - " ;
+ Text [ english_us ] = "Min - " ;
+ Text[ chinese_simplified ] = "×îС - ";
+ Text[ russian ] = "Ìèíèìóì - ";
+ Text[ polish ] = "Min - ";
+ Text[ japanese ] = "Ŭ’l- ";
+ Text[ chinese_traditional ] = "³Ì¤p - ";
+ Text[ arabic ] = "- Min";
+ Text[ greek ] = "Min - ";
+ Text[ korean ] = "ÃÖ¼Ò - ";
+ Text[ turkish ] = "Min - ";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_PROD
+ {
+ Text = "Produkt - " ;
+ Text [ ENGLISH ] = "Product - " ;
+ Text [ norwegian ] = "Produkt - " ;
+ Text [ italian ] = "Prodotto - " ;
+ Text [ portuguese_brazilian ] = "Produto - " ;
+ Text [ portuguese ] = "Produto - " ;
+ Text [ finnish ] = "Tulo - " ;
+ Text [ danish ] = "Produkt - " ;
+ Text [ french ] = "Produit - " ;
+ Text [ swedish ] = "Produkt - " ;
+ Text [ dutch ] = "Product - " ;
+ Text [ spanish ] = "Producto - " ;
+ Text [ english_us ] = "Product - " ;
+ Text[ chinese_simplified ] = "³Ë»ý- ";
+ Text[ russian ] = "Ïðîèçâåäåíèå - ";
+ Text[ polish ] = "Produkt - ";
+ Text[ japanese ] = "Ï- ";
+ Text[ chinese_traditional ] = "­¼¿n- ";
+ Text[ arabic ] = "- Product";
+ Text[ greek ] = "Product - ";
+ Text[ korean ] = "Á¦Ç° - ";
+ Text[ turkish ] = "Çarpým - ";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_COUNT2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Anzahl - : Anzahl2 - */
+ Text = "Anzahl - " ;
+ Text [ ENGLISH ] = "Count - " ;
+ Text [ norwegian ] = "Antall2 - " ;
+ Text [ italian ] = "Cont - " ;
+ Text [ portuguese_brazilian ] = "Contagem - " ;
+ Text [ portuguese ] = "Contar - " ;
+ Text [ finnish ] = "Määrä2 - " ;
+ Text [ danish ] = "Antal - " ;
+ Text [ french ] = "Nombre - " ;
+ Text [ swedish ] = "Antal - " ;
+ Text [ dutch ] = "Aantal - " ;
+ Text [ spanish ] = "Cantidad - " ;
+ Text [ english_us ] = "Count - " ;
+ Text[ chinese_simplified ] = "ÊýÄ¿ - ";
+ Text[ russian ] = "Êîëè÷åñòâî - ";
+ Text[ polish ] = "Liczba - ";
+ Text[ japanese ] = "‘” - ";
+ Text[ chinese_traditional ] = "¼Æ¥Ø - ";
+ Text[ arabic ] = "- Count";
+ Text[ greek ] = "ÐëÞèïò - ";
+ Text[ korean ] = "Ä«¿îÆ® - ";
+ Text[ turkish ] = "Adet sayýsý - ";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_DEV
+ {
+ Text = "StAbw - " ;
+ Text [ ENGLISH ] = "Dev - " ;
+ Text [ norwegian ] = "Avv - " ;
+ Text [ italian ] = "Dev - " ;
+ Text [ portuguese_brazilian ] = "Dev - " ;
+ Text [ portuguese ] = "DesvP - " ;
+ Text [ finnish ] = "Hajonta - " ;
+ Text [ danish ] = "Stdafv - " ;
+ Text [ french ] = "Ecartype - " ;
+ Text [ swedish ] = "StdAv - " ;
+ Text [ dutch ] = "StAfw - " ;
+ Text [ spanish ] = "DevNorm - " ;
+ Text [ english_us ] = "StDev - " ;
+ Text[ chinese_simplified ] = "±ê׼ƫ²î(³éÑù) - ";
+ Text[ russian ] = "Ñìåùåííîå îòêëîíåíèå - ";
+ Text[ polish ] = "Odch.std ";
+ Text[ japanese ] = "StDev - ";
+ Text[ chinese_traditional ] = "¼Ð·Ç°¾®t(©â¼Ë) - ";
+ Text[ arabic ] = "- StDev";
+ Text[ greek ] = "StDev - ";
+ Text[ korean ] = "StDev - ";
+ Text[ turkish ] = "StDev - ";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_DEV2
+ {
+ Text = "StAbwN - " ;
+ Text [ ENGLISH ] = "Dev2 - " ;
+ Text [ norwegian ] = "Avv2 - " ;
+ Text [ italian ] = "DevP - " ;
+ Text [ portuguese_brazilian ] = "DevP - " ;
+ Text [ portuguese ] = "DesvPadP - " ;
+ Text [ finnish ] = "Hajonta2 - " ;
+ Text [ danish ] = "StdafvP - " ;
+ Text [ french ] = "EcarTypeP - " ;
+ Text [ swedish ] = "StdAvP - " ;
+ Text [ dutch ] = "StAfwP - " ;
+ Text [ spanish ] = "DevNormP - " ;
+ Text [ english_us ] = "StDevP - " ;
+ Text[ chinese_simplified ] = "±ê׼ƫ²î(È«²¿»ùÊý) - ";
+ Text[ russian ] = "Íåñìåùåííîå îòêëîíåíèå - ";
+ Text[ polish ] = "Odch.stdc ";
+ Text[ japanese ] = "StDevP - ";
+ Text[ chinese_traditional ] = "¼Ð·Ç°¾®t(¥þ³¡°ò¼Æ) - ";
+ Text[ arabic ] = "- StDevP";
+ Text[ greek ] = "StDevP - ";
+ Text[ korean ] = "StDevP - ";
+ Text[ turkish ] = "StDevP - ";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_VAR
+ {
+ Text = "Varianz - " ;
+ Text [ ENGLISH ] = "Var - " ;
+ Text [ norwegian ] = " Var - " ;
+ Text [ italian ] = "Var - " ;
+ Text [ portuguese_brazilian ] = "Var - " ;
+ Text [ portuguese ] = "Variância - " ;
+ Text [ finnish ] = "Varianssi - " ;
+ Text [ danish ] = "Varians - " ;
+ Text [ french ] = "Var - " ;
+ Text [ swedish ] = "Varians - " ;
+ Text [ dutch ] = "Variantie - " ;
+ Text [ spanish ] = "Var - " ;
+ Text [ english_us ] = "Var - " ;
+ Text[ chinese_simplified ] = "·½²î- ";
+ Text[ russian ] = "Ñìåùåííàÿ äèñïåðñèÿ - ";
+ Text[ polish ] = "Wariancja - ";
+ Text[ japanese ] = "•ªŽU - ";
+ Text[ chinese_traditional ] = "¤è®t- ";
+ Text[ arabic ] = "- VAR";
+ Text[ greek ] = "Var - ";
+ Text[ korean ] = "º¯¼ö - ";
+ Text[ turkish ] = "Var - ";
+ Text[ language_user1 ] = " ";
+ };
+ String PIVOTSTR_VAR2
+ {
+ Text = "Varianzen - " ;
+ Text [ ENGLISH ] = "Var2 - " ;
+ Text [ norwegian ] = " Var2 - " ;
+ Text [ italian ] = "Var2 - " ;
+ Text [ portuguese_brazilian ] = "Var2 - " ;
+ Text [ portuguese ] = "Variâncias - " ;
+ Text [ finnish ] = "Varianssi2 - " ;
+ Text [ danish ] = "VariansP - " ;
+ Text [ french ] = "VarP - " ;
+ Text [ swedish ] = "VariansP - " ;
+ Text [ dutch ] = "Varianties - " ;
+ Text [ spanish ] = "Var2 - " ;
+ Text [ english_us ] = "VarP - " ;
+ Text[ chinese_simplified ] = "·½²î - ";
+ Text[ russian ] = "Íåñìåùåííàÿ äèñïåðñèÿ - ";
+ Text[ polish ] = "Wariancje - ";
+ Text[ japanese ] = "•ªŽU - ";
+ Text[ chinese_traditional ] = "¤è®t - ";
+ Text[ arabic ] = "- VARP";
+ Text[ greek ] = "VarP - ";
+ Text[ korean ] = "º¯¼ö - ";
+ Text[ turkish ] = "VarP - ";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ danish ] = "DataPilot";
+ Text[ french ] = "DataPilote";
+ Text[ swedish ] = "Datapilot";
+ Text[ dutch ] = "DataPiloot";
+ Text[ spanish ] = "Piloto de datos";
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí";
+ Text[ russian ] = "Ñâîäíàÿ òàáëèöà";
+ Text[ polish ] = "Pilot danych";
+ Text[ japanese ] = "ÃÞ°À Êß²Û¯Ä";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z";
+ Text[ arabic ] = "ãÑÔÏ ÇáÈíÇäÇÊ";
+ Text [ spanish ] = "Piloto de datos" ;
+ Text [ french ] = "DataPilote" ;
+ Text [ dutch ] = "DataPiloot" ;
+ Text [ swedish ] = "Datapilot" ;
+ Text [ danish ] = "DataPilot" ;
+ Text[ greek ] = "Ðéëüôïò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ";
+ Text[ turkish ] = "Veri pilotu";
+ Text[ language_user1 ] = " ";
+};
+
diff --git a/sc/source/ui/dbgui/pvfundlg.cxx b/sc/source/ui/dbgui/pvfundlg.cxx
new file mode 100644
index 000000000000..4bbcfa13bd78
--- /dev/null
+++ b/sc/source/ui/dbgui/pvfundlg.cxx
@@ -0,0 +1,356 @@
+/*************************************************************************
+ *
+ * $RCSfile: pvfundlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <vcl/msgbox.hxx>
+#include <segmentc.hxx>
+#endif
+
+#include "scresid.hxx"
+#include "pivot.hxx"
+#include "pvfundlg.hrc"
+#include "pvfundlg.hxx"
+
+SEG_EOFGLOBALS()
+
+//========================================================================
+#pragma SEG_FUNCDEF(pvfundlg_01)
+
+ScPivotFunctionDlg::ScPivotFunctionDlg( Window* pParent,
+ BOOL bSubTotalFunc,
+ const String& rName,
+ USHORT nFunctions,
+ BOOL bIsShowAll )
+
+ : ModalDialog ( pParent, ScResId( RID_SCDLG_PIVOTSUBT ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnNone ( this, ScResId( BTN_NONE ) ),
+ aBtnAuto ( this, ScResId( BTN_AUTO ) ),
+ aBtnUser ( this, ScResId( BTN_USER ) ),
+ aGbFunc ( this, ScResId( GB_FUNC ) ),
+ aCbShowAll ( this, ScResId( CB_SHOWALL ) ),
+ aFtNameLabel( this, ScResId( FT_NAMELABEL ) ),
+ aFtName ( this, ScResId( FT_NAME ) ),
+ aLbFunc ( this, ScResId( LB_FUNC ) ),
+ nFuncMask ( nFunctions )
+{
+ aFtName.SetText( rName );
+ SetUI( bSubTotalFunc );
+ InitFuncLb( nFunctions );
+ if ( bSubTotalFunc ) // hidden in SetUI otherwise
+ aCbShowAll.Check( bIsShowAll );
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pvfundlg_02)
+
+__EXPORT ScPivotFunctionDlg::~ScPivotFunctionDlg()
+{
+ USHORT nEntryCount = aLbFunc.GetEntryCount();
+
+ for ( USHORT i=0; i<nEntryCount; i++ )
+ {
+ delete (USHORT*)aLbFunc.GetEntryData( i );
+ aLbFunc.SetEntryData( i, NULL );
+ }
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScPivotFunctionDlg::GetShowAll() const
+{
+ return aCbShowAll.IsChecked();
+}
+
+//------------------------------------------------------------------------
+
+#define FUNC_SET(f) ( (nFunctions & (f)) == (f) )
+
+#pragma SEG_FUNCDEF(pvfundlg_03)
+
+void ScPivotFunctionDlg::InitFuncLb( USHORT nFunctions )
+{
+ aLbFunc.SetEntryData( 0, new USHORT(PIVOT_FUNC_SUM) );
+ aLbFunc.SetEntryData( 1, new USHORT(PIVOT_FUNC_COUNT) );
+ aLbFunc.SetEntryData( 2, new USHORT(PIVOT_FUNC_AVERAGE) );
+ aLbFunc.SetEntryData( 3, new USHORT(PIVOT_FUNC_MAX) );
+ aLbFunc.SetEntryData( 4, new USHORT(PIVOT_FUNC_MIN) );
+ aLbFunc.SetEntryData( 5, new USHORT(PIVOT_FUNC_PRODUCT) );
+ aLbFunc.SetEntryData( 6, new USHORT(PIVOT_FUNC_COUNT_NUM) );
+ aLbFunc.SetEntryData( 7, new USHORT(PIVOT_FUNC_STD_DEV) );
+ aLbFunc.SetEntryData( 8, new USHORT(PIVOT_FUNC_STD_DEVP) );
+ aLbFunc.SetEntryData( 9, new USHORT(PIVOT_FUNC_STD_VAR) );
+ aLbFunc.SetEntryData( 10, new USHORT(PIVOT_FUNC_STD_VARP) );
+
+ if ( nFunctions == PIVOT_FUNC_NONE
+ || nFunctions == PIVOT_FUNC_AUTO )
+ {
+ aLbFunc.SetNoSelection();
+ }
+ else
+ {
+ aLbFunc.SelectEntryPos( 0, FUNC_SET( PIVOT_FUNC_SUM ) );
+ aLbFunc.SelectEntryPos( 1, FUNC_SET( PIVOT_FUNC_COUNT ) );
+ aLbFunc.SelectEntryPos( 2, FUNC_SET( PIVOT_FUNC_AVERAGE ) );
+ aLbFunc.SelectEntryPos( 3, FUNC_SET( PIVOT_FUNC_MAX ) );
+ aLbFunc.SelectEntryPos( 4, FUNC_SET( PIVOT_FUNC_MIN ) );
+ aLbFunc.SelectEntryPos( 5, FUNC_SET( PIVOT_FUNC_PRODUCT ) );
+ aLbFunc.SelectEntryPos( 6, FUNC_SET( PIVOT_FUNC_COUNT_NUM ) );
+ aLbFunc.SelectEntryPos( 7, FUNC_SET( PIVOT_FUNC_STD_DEV ) );
+ aLbFunc.SelectEntryPos( 8, FUNC_SET( PIVOT_FUNC_STD_DEVP ) );
+ aLbFunc.SelectEntryPos( 9, FUNC_SET( PIVOT_FUNC_STD_VAR ) );
+ aLbFunc.SelectEntryPos( 10, FUNC_SET( PIVOT_FUNC_STD_VARP ) );
+ }
+ aLbFunc.SetDoubleClickHdl( LINK( this, ScPivotFunctionDlg, DblClickHdl ) );
+}
+
+#undef FUNC_SET
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pvfundlg_05)
+
+void ScPivotFunctionDlg::SetUI( BOOL bSubTotals )
+{
+ aBtnOk.SetClickHdl ( LINK( this, ScPivotFunctionDlg, ClickHdl ) );
+
+ if ( bSubTotals )
+ {
+ aGbFunc.SetText( ScResId( STR_SUBTOTALS ) );
+
+ aBtnNone.SetClickHdl ( LINK( this, ScPivotFunctionDlg, RadioClickHdl ) );
+ aBtnAuto.SetClickHdl ( LINK( this, ScPivotFunctionDlg, RadioClickHdl ) );
+ aBtnUser.SetClickHdl ( LINK( this, ScPivotFunctionDlg, RadioClickHdl ) );
+
+ if ( nFuncMask == PIVOT_FUNC_NONE )
+ {
+ aBtnNone.Check( nFuncMask == PIVOT_FUNC_NONE );
+ aLbFunc.Disable();
+ }
+ else if ( nFuncMask == PIVOT_FUNC_AUTO )
+ {
+ aBtnAuto.Check();
+ aLbFunc.Disable();
+ }
+ else
+ {
+ aBtnUser.Check();
+ aLbFunc.Enable();
+ }
+ }
+ else
+ {
+ aGbFunc.SetText( ScResId( STR_DATAFUNC ) );
+
+ Size aSize( aGbFunc.GetSizePixel() );
+ Point aPos1( aFtNameLabel.GetPosPixel() );
+ Point aPos2( aFtName.GetPosPixel() );
+ long nYDiff = aBtnUser.GetPosPixel().Y()
+ - aBtnNone.GetPosPixel().Y()
+ + aBtnNone.GetSizePixel().Height()
+ + LogicToPixel( Point(5,0), MAP_APPFONT ).X();
+
+ aSize.Height() -= nYDiff;
+ aPos1.Y() -= nYDiff;
+ aPos2.Y() -= nYDiff;
+
+ aGbFunc .SetSizePixel( aSize );
+ aLbFunc .SetPosPixel( aBtnNone.GetPosPixel() );
+ aFtNameLabel.SetPosPixel( aPos1 );
+ aFtName .SetPosPixel( aPos2 );
+
+ aLbFunc.Enable();
+ aBtnNone.Hide();
+ aBtnAuto.Hide();
+ aBtnUser.Hide();
+ aBtnUser.Check();
+
+ aCbShowAll.Disable();
+ aCbShowAll.Hide();
+
+ aSize = GetSizePixel();
+ aSize.Height() -= nYDiff;
+ SetSizePixel( aSize );
+ }
+}
+
+//------------------------------------------------------------------------
+// Handler:
+#pragma SEG_FUNCDEF(pvfundlg_04)
+
+IMPL_LINK( ScPivotFunctionDlg, RadioClickHdl, RadioButton *, pBtn )
+{
+ if ( pBtn == &aBtnNone || pBtn == &aBtnAuto )
+ {
+ aLbFunc.Disable();
+ }
+ else if ( pBtn == &aBtnUser )
+ {
+ aLbFunc.Enable();
+ }
+ return 0;
+}
+
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pvfundlg_07)
+
+IMPL_LINK_INLINE_START( ScPivotFunctionDlg, DblClickHdl, MultiListBox *, EMPTYARG )
+{
+ ClickHdl( &aBtnOk );
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScPivotFunctionDlg, DblClickHdl, MultiListBox *, EMPTYARG )
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pvfundlg_06)
+
+IMPL_LINK( ScPivotFunctionDlg, ClickHdl, PushButton *, pBtn )
+{
+ if ( pBtn == &aBtnOk )
+ {
+ if ( aBtnNone.IsChecked() )
+ nFuncMask = PIVOT_FUNC_NONE;
+ else if ( aBtnAuto.IsChecked() )
+ nFuncMask = PIVOT_FUNC_AUTO;
+ else if ( aBtnUser.IsChecked() )
+ {
+ USHORT nPos = 0;
+ USHORT nSelCount = aLbFunc.GetSelectEntryCount();
+
+ nFuncMask = PIVOT_FUNC_NONE;
+
+ for ( USHORT i=0; i<nSelCount; i++ )
+ {
+ nPos = aLbFunc.GetSelectEntryPos( i );
+ nFuncMask = ( nFuncMask | *((USHORT*)aLbFunc.GetEntryData( nPos )) );
+ }
+ }
+
+ EndDialog( RET_OK );
+ }
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.15 2000/09/17 14:08:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.14 2000/08/31 16:38:20 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.13 2000/02/11 12:23:45 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.12 1999/11/02 08:47:39 nn
+ show all
+
+ Revision 1.11 1997/12/05 18:55:36 ANK
+ Includes geaendert
+
+
+ Rev 1.10 05 Dec 1997 19:55:36 ANK
+ Includes geaendert
+
+ Rev 1.9 29 Oct 1996 14:03:54 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.8 29 Jan 1996 15:12:26 MO
+ neuer Link
+
+ Rev 1.7 08 Nov 1995 13:05:48 MO
+ 301-Aenderungen
+
+ Rev 1.6 20 Sep 1995 14:18:52 MO
+ DoubleClick-Handler (BugId: 19541)
+
+ Rev 1.5 14 Sep 1995 13:05:08 MO
+ FixedInfos
+
+ Rev 1.4 24 Jul 1995 14:09:08 MO
+ EXPORT
+
+ Rev 1.3 05 May 1995 18:16:42 MO
+ Funktionen fuer Data
+
+ Rev 1.2 02 May 1995 18:45:42 MO
+ Teilergebnis/Datenfunktionen
+
+ Rev 1.1 26 Apr 1995 17:44:10 MO
+ Teilergebnisse/Datenfunktion
+
+ Rev 1.0 26 Apr 1995 16:43:26 MO
+ Dialog fuer Pivotfeldfunktionen
+
+------------------------------------------------------------------------ */
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/pvfundlg.hrc b/sc/source/ui/dbgui/pvfundlg.hrc
new file mode 100644
index 000000000000..e92f74130a6e
--- /dev/null
+++ b/sc/source/ui/dbgui/pvfundlg.hrc
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * $RCSfile: pvfundlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc"
+
+//#define RID_SCDLG_PIVOTSUBT 256
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+
+#define BTN_NONE 1
+#define BTN_AUTO 2
+#define BTN_USER 3
+#define LB_FUNC 1
+#define GB_FUNC 1
+
+#define FT_FUNC 1
+#define FT_NAMELABEL 2
+#define FT_NAME 3
+
+#define CB_SHOWALL 1
+
+#define STR_SUBTOTALS 1
+#define STR_DATAFUNC 2
+
+
diff --git a/sc/source/ui/dbgui/pvfundlg.src b/sc/source/ui/dbgui/pvfundlg.src
new file mode 100644
index 000000000000..5caff89cff03
--- /dev/null
+++ b/sc/source/ui/dbgui/pvfundlg.src
@@ -0,0 +1,651 @@
+/*************************************************************************
+ *
+ * $RCSfile: pvfundlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "pvfundlg.hrc"
+ModalDialog RID_SCDLG_PIVOTSUBT
+{
+ OutputSize = TRUE ;
+ HelpId = HID_SC_PIVOTSUBT ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 220 , 188 ) ;
+ Text = "Datenfeld" ;
+ Text [ ENGLISH ] = "Data Field" ;
+ Text [ norwegian ] = "Data Field" ;
+ Text [ italian ] = "Campo di dati" ;
+ Text [ portuguese_brazilian ] = "Data Field" ;
+ Text [ portuguese ] = "Campo de dados" ;
+ Text [ english_us ] = "Data Field" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ Hide = TRUE ;
+ RadioButton BTN_NONE
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Keine" ;
+ Text [ ENGLISH ] = "~None" ;
+ Text [ norwegian ] = "~Ingen " ;
+ Text [ italian ] = "~Nessuna" ;
+ Text [ portuguese_brazilian ] = "~Nenhum" ;
+ Text [ portuguese ] = "~Nenhum" ;
+ Text [ finnish ] = "~Ei ole" ;
+ Text [ danish ] = "Ingen" ;
+ Text [ french ] = "~Aucun(e)" ;
+ Text [ swedish ] = "~Inga" ;
+ Text [ dutch ] = "~Geen" ;
+ Text [ spanish ] = "~Ningún" ;
+ Text [ english_us ] = "~None" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÎÞ(~N)";
+ Text[ russian ] = "áåç";
+ Text[ polish ] = "Brak";
+ Text[ japanese ] = "‚È‚µ(~N)";
+ Text[ chinese_traditional ] = "µL(~N)";
+ Text[ arabic ] = "ÈÏæä";
+ Text[ greek ] = "ÊáíÝíá";
+ Text[ korean ] = "¾øÀ½(~N)";
+ Text[ turkish ] = "~Yok";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_AUTO
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Automatisch" ;
+ Text [ ENGLISH ] = "~Auto" ;
+ Text [ norwegian ] = "~Auto" ;
+ Text [ italian ] = "~Automatico" ;
+ Text [ portuguese_brazilian ] = "~Auto" ;
+ Text [ portuguese ] = "~Automaticamente" ;
+ Text [ finnish ] = "~Automaattinen" ;
+ Text [ danish ] = "Automatisk" ;
+ Text [ french ] = "~Automatique" ;
+ Text [ swedish ] = "~Automatisk" ;
+ Text [ dutch ] = "~Automatisch" ;
+ Text [ spanish ] = "~Automático" ;
+ Text [ english_us ] = "~Automatic" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×Ô¶¯(~A)";
+ Text[ russian ] = "Àâòîìàòè÷åñêè";
+ Text[ polish ] = "Automatycznie";
+ Text[ japanese ] = "Ž©“®(~A)";
+ Text[ chinese_traditional ] = "¦Û°Ê(~A)";
+ Text[ arabic ] = "ÊáÞÇÆí";
+ Text[ greek ] = "Áõôüìáôá";
+ Text[ korean ] = "ÀÚµ¿(~A)";
+ Text[ turkish ] = "~Otomatik";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_USER
+ {
+ Pos = MAP_APPFONT ( 12 , 40 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Benutzerdefiniert" ;
+ Text [ ENGLISH ] = "~Userdefined" ;
+ Text [ norwegian ] = "~Brukerdefinert " ;
+ Text [ italian ] = "Definito dall'utente" ;
+ Text [ portuguese_brazilian ] = "~Definido pelo usuário" ;
+ Text [ portuguese ] = "Definido pelo ~utilizador" ;
+ Text [ finnish ] = "~Käyttäjän" ;
+ Text [ danish ] = "Brugerdefineret" ;
+ Text [ french ] = "Défini par l'~utilisateur" ;
+ Text [ swedish ] = "~Användardefinierade" ;
+ Text [ dutch ] = "Ge~bruikergedefinieerd" ;
+ Text [ spanish ] = "Definido por el ~usuario" ;
+ Text [ english_us ] = "~User-defined" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ʹÓÃÕß×ÔÉè(~U)";
+ Text[ russian ] = "Çàäàíî ïîëüçîâàòåëåì";
+ Text[ polish ] = "Zdefinowany przez u¿ytkownika";
+ Text[ japanese ] = "Õ°»Þ°’è‹`(~U)";
+ Text[ chinese_traditional ] = "¦Û³](~U)";
+ Text[ arabic ] = "ãÚÑÝ ãä ÞÈá ÇáãÓÊÎÏã";
+ Text[ greek ] = "Ïñéæüìåíï áðü ôïí ÷ñÞóôç";
+ Text[ korean ] = "»ç¿ëÀÚ Á¤ÀÇ(~U)";
+ Text[ turkish ] = "~Kullanýcý tanýmlý";
+ Text[ language_user1 ] = " ";
+ };
+ MultiListBox LB_FUNC
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 56 ) ;
+ Size = MAP_APPFONT ( 140 , 90 ) ;
+ TabStop = TRUE ;
+ AutoHScroll = TRUE ;
+ StringList =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 7 : Anzahl (nur Zahlen)*/
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 9 : StAbwN (Grundgesamtheit)*/
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Somma" ; Default ; > ;
+ < "Numero" ; Default ; > ;
+ < "Media" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Prodotto" ; Default ; > ;
+ < "Numero (solo numeri)" ; Default ; > ;
+ < "DevSt (campione)" ; Default ; > ;
+ < "DevStP (popolazione)" ; Default ; > ;
+ < "Varianza (campione)" ; Default ; > ;
+ < "VarP (popolazione)" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl2 (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN(Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "VarP" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Total" ; Default ; > ;
+ < "Contar" ; Default ; > ;
+ < "Valor médio" ; Default ; > ;
+ < "Máx." ; Default ; > ;
+ < "Min." ; Default ; > ;
+ < "Produto" ; Default ; > ;
+ < "Contar (só números)" ; Default ; > ;
+ < "DesvPad (amostra)" ; Default ; > ;
+ < "DesvPadN (população)" ; Default ; > ;
+ < "Variância (amostra)" ; Default ; > ;
+ < "Variância P (população)" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Sum" ; Default ; > ;
+ < "Antal" ; Default ; > ;
+ < "Middel" ; Default ; > ;
+ < "Maks" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Antal (kun tal)" ; Default ; > ;
+ < "Stdafv (stikprøve)" ; Default ; > ;
+ < "StdafvP (population)" ; Default ; > ;
+ < "Varians (stikprøve)" ; Default ; > ;
+ < "VariansP (population)" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "Total" ; Default ; > ;
+ < "Nombre" ; Default ; > ;
+ < "Moyenne" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produit" ; Default ; > ;
+ < "Nombre (uniquement les nombres)" ; Default ; > ;
+ < "Ecartype (échantillon)" ; Default ; > ;
+ < "EcarTypeP (population)" ; Default ; > ;
+ < "Variance (échantillon)" ; Default ; > ;
+ < "VarP (population)" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Summa" ; Default ; > ;
+ < "Antal" ; Default ; > ;
+ < "Medelvärde" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Antal (endast tal)" ; Default ; > ;
+ < "StdAv (stickprov)" ; Default ; > ;
+ < "StdAvP(population)" ; Default ; > ;
+ < "Varians (stickprov)" ; Default ; > ;
+ < "VariansP (population)" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Som" ; Default ; > ;
+ < "Aantal" ; Default ; > ;
+ < "Gemiddelde waarde" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "Aantal (alleen getallen)" ; Default ; > ;
+ < "StAfw (steekproef)" ; Default ; > ;
+ < "StAfwN (populatie)" ; Default ; > ;
+ < "Variantie (steekproef)" ; Default ; > ;
+ < "VarP (steekproef)" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Suma" ; Default ; > ;
+ < "Cantidad" ; Default ; > ;
+ < "Promedio" ; Default ; > ;
+ < "Máx" ; Default ; > ;
+ < "Mín" ; Default ; > ;
+ < "Producto" ; Default ; > ;
+ < "Cantidad2 (solo números)" ; Default ; > ;
+ < "DesvEst (Muestra)" ; Default ; > ;
+ < "DesvEstP (Población)" ; Default ; > ;
+ < "Varianza (Muestra)" ; Default ; > ;
+ < "Varianzas (Población)" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Sum" ; Default ; > ;
+ < "Count" ; Default ; > ;
+ < "Average" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "Count (Numbers only)" ; Default ; > ;
+ < "StDev (Sample)" ; Default ; > ;
+ < "StDevP (Population)" ; Default ; > ;
+ < "Var (Sample)" ; Default ; > ;
+ < "VarP (Population)" ; Default ; > ;
+ };
+ SimpleMode = TRUE ;
+ StringList [ chinese_simplified ] =
+ {
+ < "×ܼÆ" ; Default ; > ;
+ < "¼ÆÊý" ; Default ; > ;
+ < "ƽ¾ùÖµ" ; Default ; > ;
+ < "×î´ó" ; Default ; > ;
+ < "×îС" ; Default ; > ;
+ < "³Ë»ý" ; Default ; > ;
+ < "¼ÆÊý(Ö»Êý×Ö)" ; Default ; > ;
+ < "±ê׼ƫ²î(³éÑù)" ; Default ; > ;
+ < "±ê׼ƫ²î(È«²¿»ùÊý)" ; Default ; > ;
+ < "·½²î(³éÑù)" ; Default ; > ;
+ < "·½²î(È«²¿»ùÊý)" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ñóììà" ; Default ; > ;
+ < "Êîëè÷åñòâî" ; Default ; > ;
+ < "Ñðåäíåå çíà÷åíèå" ; Default ; > ;
+ < "Ìàêñèìóì" ; Default ; > ;
+ < "Ìèíèìóì" ; Default ; > ;
+ < "Ïðîèçâåäåíèå" ; Default ; > ;
+ < "Êîëè÷åñòâî (òîëüêî ÷èñåë)" ; Default ; > ;
+ < "Ñìåùåííîå îòêëîíåíèå (Îáðàçåö)" ; Default ; > ;
+ < "Íåñìåùåííîå îòêëîíåíèå (Ñîâîêóïíîñòü)" ; Default ; > ;
+ < "Ñìåùåííàÿ äèñïåðñèÿ (Îáðàçåö)" ; Default ; > ;
+ < "Íåñìåùåííàÿ äèñïåðñèÿ (Ñîâîêóïíîñòü)" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Suma" ; Default ; > ;
+ < "IloϾ" ; Default ; > ;
+ < "Œrednia wartoœæ" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Iloczyn" ; Default ; > ;
+ < "IloϾ (tylko liczby)" ; Default ; > ;
+ < "Odchylenie standardowe (Próbka)" ; Default ; > ;
+ < "Odch.stdc (populacja)" ; Default ; > ;
+ < "Wariancja (Próbka)" ; Default ; > ;
+ < "Wariancja (ZbiorowoϾ generalna)" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‡Œv" ; Default ; > ;
+ < "‘”" ; Default ; > ;
+ < "•½‹Ï’l" ; Default ; > ;
+ < "Å‘å’l" ; Default ; > ;
+ < "Ŭ’l" ; Default ; > ;
+ < "Ï" ; Default ; > ;
+ < "‘”(”’l‚Ì‚Ý)" ; Default ; > ;
+ < "StDev(•W–{)" ; Default ; > ;
+ < "StDevP(•êW’c)" ; Default ; > ;
+ < "•ªŽU(•W–{)" ; Default ; > ;
+ < "•ªŽU(•êW’c)" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "Á`­p" ; Default ; > ;
+ < "­p¼Æ" ; Default ; > ;
+ < "¥­§¡­È" ; Default ; > ;
+ < "³Ì¤j" ; Default ; > ;
+ < "³Ì¤p" ; Default ; > ;
+ < "­¼¿n" ; Default ; > ;
+ < "­p¼Æ(¥u¼Æ¦r)" ; Default ; > ;
+ < "¼Ð·Ç°¾®t(©â¼Ë)" ; Default ; > ;
+ < "¼Ð·Ç°¾®t(¥þ³¡°ò¼Æ)" ; Default ; > ;
+ < "¤è®t(©â¼Ë)" ; Default ; > ;
+ < "¤è®t(¥þ³¡°ò¼Æ)" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "Sum" ; Default ; > ;
+ < "Count" ; Default ; > ;
+ < "Average" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "Count (ÃÑÞÇã ÝÞØ)" ; Default ; > ;
+ < "StDev (򒊃)" ; Default ; > ;
+ < "StDevP (ÇáãÌÊãÚ)" ; Default ; > ;
+ < "VAR (򊒃)" ; Default ; > ;
+ < "VarP (ÇáãÌÊãÚ)" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "¢èñïéóìá" ; Default ; > ;
+ < "Áñéèìüò" ; Default ; > ;
+ < "ÌÝóç ôéìÞ" ; Default ; > ;
+ < "Ìåã." ; Default ; > ;
+ < "Åëá÷." ; Default ; > ;
+ < "Ãéíüìåíï" ; Default ; > ;
+ < "ÐëÞèïò (ìüíï áñéèìïß)" ; Default ; > ;
+ < "StDev (Äåßãìá)" ; Default ; > ;
+ < "StDevP (Ðëçèõóìïý)" ; Default ; > ;
+ < "Var (Äåßãìá)" ; Default ; > ;
+ < "VarP (Ðëçèõóìïý)" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "ÇÕ°è" ; Default ; > ;
+ < "Ä«¿îÆ®" ; Default ; > ;
+ < "Æò±Õ" ; Default ; > ;
+ < "ÃÖ´ë" ; Default ; > ;
+ < "ÃÖ¼Ò" ; Default ; > ;
+ < "Á¦Ç°" ; Default ; > ;
+ < "Ä«¿îÆ® (¹øÈ£¸¸)" ; Default ; > ;
+ < "StDev (»ùÇÃ)" ; Default ; > ;
+ < "Ç¥ÁØ ÆíÂ÷ (¸ðÁý´Ü)" ; Default ; > ;
+ < "Ç¥ÁØ ÆíÂ÷(»ùÇÃ)" ; Default ; > ;
+ < "ºÐ»ê (¸ðÁý´Ü)" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Toplam" ; Default ; > ;
+ < "Count" ; Default ; > ;
+ < "Ortalama deðer" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Çarpým" ; Default ; > ;
+ < "Count (yalnýzca sayý)" ; Default ; > ;
+ < "StDev (sample)" ; Default ; > ;
+ < "StAbwN (population)" ; Default ; > ;
+ < "Var (sample)" ; Default ; > ;
+ < "VarP (population)" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ GroupBox GB_FUNC
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 152 , 150 ) ;
+ };
+ CheckBox CB_SHOWALL
+ {
+ Pos = MAP_APPFONT ( 6 , 159 ) ;
+ Size = MAP_APPFONT ( 152 , 10 ) ;
+ Text = "~Elemente ohne Daten anzeigen" ;
+ Text [ ENGLISH ] = "Show elements without data" ;
+ TabStop = TRUE ;
+ Text[ english_us ] = "Show ~elements without data";
+ Text[ portuguese ] = "Mostrar ~elementos sem data";
+ Text[ russian ] = "Ïîêàçàòü ýëåìåíòû áåç äàííûõ";
+ Text[ greek ] = "ÅìöÜíéóç óôïé÷åßùí äß÷ùò äåäïìÝíá";
+ Text[ dutch ] = "~Elementen weergeven zonder gegevens";
+ Text[ french ] = "Afficher les ~éléments sans données";
+ Text[ spanish ] = "~Mostrar elementos sin datos";
+ Text[ italian ] = "Mostra ~elementi senza dati";
+ Text[ danish ] = "Vis elementer uden data";
+ Text[ swedish ] = "Visa objekt utan data";
+ Text[ polish ] = "Poka¿ elementy bez danych";
+ Text[ portuguese_brazilian ] = "Show elements without data";
+ Text[ japanese ] = "—v‘f‚ðÃÞ°À‚È‚µ‚Å•\\Ž¦(~E)";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¾øÀÌ ¿ä¼Ò º¸±â(~E)";
+ Text[ chinese_simplified ] = "ÏÔʾ²»º¬Êý¾ÝµÄÌõÄ¿(~E)";
+ Text[ chinese_traditional ] = "Åã¥ÜµL¼ÆÕuªº³æ¤¸(~E)";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÚäÇÕÑ ÈÏæä ÈíÇäÇÊ";
+ Text[ turkish ] = "~Ögeleri veriler olmadan görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_NAMELABEL
+ {
+ Pos = MAP_APPFONT ( 6 , 174 ) ;
+ Size = MAP_APPFONT ( 25 , 10 ) ;
+ Text = "Name:" ;
+ Text [ ENGLISH ] = "Name:" ;
+ Text [ norwegian ] = "Navn:" ;
+ Text [ italian ] = "Nome:" ;
+ Text [ portuguese_brazilian ] = "Nome:" ;
+ Text [ portuguese ] = "Nome:" ;
+ Text [ finnish ] = "Nimi:" ;
+ Text [ danish ] = "Navn:" ;
+ Text [ french ] = "Nom :" ;
+ Text [ swedish ] = "Namn:" ;
+ Text [ dutch ] = "Naam:" ;
+ Text [ spanish ] = "Nombre:" ;
+ Text [ english_us ] = "Name:" ;
+ Text[ chinese_simplified ] = "Ãû³Æ£º";
+ Text[ russian ] = "Èìÿ:";
+ Text[ polish ] = "Nazwa:";
+ Text[ japanese ] = "–¼‘O:";
+ Text[ chinese_traditional ] = "¦WºÙ¡G";
+ Text[ arabic ] = "ÇáÇÓã:";
+ Text[ greek ] = "¼íïìá:";
+ Text[ korean ] = "À̸§:";
+ Text[ turkish ] = "Ad:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 32 , 174 ) ;
+ Size = MAP_APPFONT ( 125 , 10 ) ;
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 164 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 164 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 164 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ String STR_SUBTOTALS
+ {
+ Text = "Teilergebnisse" ;
+ Text [ ENGLISH ] = "Sub Totals" ;
+ Text [ norwegian ] = "Sum" ;
+ Text [ italian ] = "Subtotali" ;
+ Text [ portuguese_brazilian ] = "Sub Totais" ;
+ Text [ portuguese ] = "Subtotais" ;
+ Text [ finnish ] = "Välisummat" ;
+ Text [ danish ] = "Subtotaler" ;
+ Text [ french ] = "Sous-totaux" ;
+ Text [ swedish ] = "Delresultat" ;
+ Text [ dutch ] = "Subtotalen" ;
+ Text [ spanish ] = "Subtotales" ;
+ Text [ english_us ] = "Subtotals" ;
+ Text[ chinese_simplified ] = "·ÖÀà»ã×Ü";
+ Text[ russian ] = "Ïðîìåæóòî÷íûå èòîãè";
+ Text[ polish ] = "Sumy poœrednie";
+ Text[ japanese ] = "¬Œv";
+ Text[ chinese_traditional ] = "¤p­p";
+ Text[ arabic ] = "Subtotals";
+ Text[ greek ] = "ÌåñéêÜ áèñïßóìáôá";
+ Text[ korean ] = "¼Ò°è";
+ Text[ turkish ] = "Ara toplam";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DATAFUNC
+ {
+ Text = "Funktion" ;
+ Text [ ENGLISH ] = "Function" ;
+ Text [ norwegian ] = "Funksjon" ;
+ Text [ italian ] = "Funzione" ;
+ Text [ portuguese_brazilian ] = "Função" ;
+ Text [ portuguese ] = "Função" ;
+ Text [ finnish ] = "Funktio" ;
+ Text [ danish ] = "Funktion" ;
+ Text [ french ] = "Fonction" ;
+ Text [ swedish ] = "Funktion" ;
+ Text [ dutch ] = "Functie" ;
+ Text [ spanish ] = "Función" ;
+ Text [ english_us ] = "Function" ;
+ Text[ chinese_simplified ] = "º¯Êý";
+ Text[ russian ] = "Ôóíêöèÿ";
+ Text[ polish ] = "Funkcja";
+ Text[ japanese ] = "ŠÖ”";
+ Text[ chinese_traditional ] = "¨ç¼Æ";
+ Text[ arabic ] = "Function";
+ Text[ greek ] = "ÓõíÜñôçóç";
+ Text[ korean ] = "ÇÔ¼ö";
+ Text[ turkish ] = "Fonksiyon";
+ Text[ language_user1 ] = " ";
+ };
+ Text [ spanish ] = "Campo de datos" ;
+ Text [ french ] = "Champ de données" ;
+ Text [ dutch ] = "Gegevensveld" ;
+ Text [ swedish ] = "Datafält" ;
+ Text [ danish ] = "Datafelt" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÀ¸";
+ Text[ russian ] = "Ïîëå äàííûõ";
+ Text[ polish ] = "Pole danych";
+ Text[ japanese ] = "ÃÞ°Ą̀°ÙÄÞ";
+ Text[ chinese_traditional ] = "¸ê®ÆÄæ";
+ Text[ arabic ] = "ÍÞá ÈíÇäÇÊ";
+ Text[ greek ] = "Ðåäßï äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ Çʵå";
+ Text[ turkish ] = "Veri alaný";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/dbgui/pvglob.hxx b/sc/source/ui/dbgui/pvglob.hxx
new file mode 100644
index 000000000000..f63cc58f0bd9
--- /dev/null
+++ b/sc/source/ui/dbgui/pvglob.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * $RCSfile: pvglob.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PVGLOB_HXX
+#define SC_PVGLOB_HXX
+
+//-------------------------------------------------------------------
+
+class PivotGlobal
+{
+public:
+ static USHORT nObjHeight;
+ static USHORT nObjWidth;
+ static USHORT nSelSpace;
+};
+
+
+#endif // SC_PVGLOB_HXX
diff --git a/sc/source/ui/dbgui/pvlaydlg.cxx b/sc/source/ui/dbgui/pvlaydlg.cxx
new file mode 100644
index 000000000000..434dda2bdb9a
--- /dev/null
+++ b/sc/source/ui/dbgui/pvlaydlg.cxx
@@ -0,0 +1,1368 @@
+/*************************************************************************
+ *
+ * $RCSfile: pvlaydlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#include <sfx2/dispatch.hxx>
+#include <vcl/msgbox.hxx>
+
+#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
+
+#define _PVLAYDLG_CXX
+#include "pvlaydlg.hxx"
+#undef _PVLAYDLG_CXX
+
+#include "uiitems.hxx"
+#include "rangeutl.hxx"
+#include "document.hxx"
+#include "viewdata.hxx"
+#include "tabvwsh.hxx"
+#include "reffact.hxx"
+#include "scresid.hxx"
+#include "pivot.hxx"
+#include "pvglob.hxx"
+#include "pvfundlg.hxx"
+#include "globstr.hrc"
+#include "pivot.hrc"
+#include "dpobject.hxx"
+#include "dpsave.hxx"
+#include "scmod.hxx"
+
+using namespace com::sun::star;
+
+//----------------------------------------------------------------------------
+
+#define FSTR(index) *(aFuncNameArr[index-1])
+#define STD_FORMAT SCA_VALID | SCA_TAB_3D \
+ | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
+
+USHORT PivotGlobal::nObjHeight = 0; // werden aus der Dialog-Resource geholt
+USHORT PivotGlobal::nObjWidth = 0;
+USHORT PivotGlobal::nSelSpace = 4;
+
+
+//============================================================================
+// struct FuncData
+
+struct FuncData
+{
+ FuncData( short col, USHORT funcs = PIVOT_FUNC_SUM )
+ : nCol(col), nFuncMask(funcs) {}
+ FuncData( const FuncData& rCpy )
+ : nCol(rCpy.nCol), nFuncMask(rCpy.nFuncMask) {}
+
+ FuncData& operator=( const FuncData& r )
+ { nCol=r.nCol; nFuncMask=r.nFuncMask; return *this; }
+
+ BOOL operator==( const FuncData& r )
+ { return ( (nCol==r.nCol)&&(nFuncMask==r.nFuncMask) ); }
+
+ short nCol;
+ USHORT nFuncMask;
+};
+
+
+//============================================================================
+// class ScPivotLayoutDialog
+
+//----------------------------------------------------------------------------
+
+ScPivotLayoutDlg::ScPivotLayoutDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ const ScDPObject* pDPObject )
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_PIVOT_LAYOUT ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnMore ( this, ScResId( BTN_MORE ) ),
+
+ aFtInfo ( this, ScResId( FT_INFO ) ),
+ aBtnIgnEmptyRows( this, ScResId( BTN_IGNEMPTYROWS ) ),
+ aBtnDetectCat ( this, ScResId( BTN_DETECTCAT ) ),
+ aBtnTotalCol ( this, ScResId( BTN_TOTALCOL ) ),
+ aBtnTotalRow ( this, ScResId( BTN_TOTALROW ) ),
+
+ aLbOutPos ( this, ScResId( LB_OUTAREA ) ),
+ aFtOutArea ( this, ScResId( FT_OUTAREA ) ),
+ aEdOutPos ( this, ScResId( ED_OUTAREA ) ),
+ aRbOutPos ( this, ScResId( RB_OUTAREA ), &aEdOutPos ),
+ aGbAreas ( this, ScResId( GB_OUTPUT ) ),
+
+ aWndRow ( this, ScResId( WND_ROW ), TYPE_ROW ),
+ aWndCol ( this, ScResId( WND_COL ), TYPE_COL ),
+ aWndData ( this, ScResId( WND_DATA ), TYPE_DATA ),
+ aWndSelect ( this, ScResId( WND_SELECT ), TYPE_SELECT ),
+
+ aPtrArrow ( POINTER_ARROW ),
+ aPtrField ( POINTER_PIVOT_FIELD ),
+ aPtrCol ( POINTER_PIVOT_COL ),
+ aPtrRow ( POINTER_PIVOT_ROW ),
+
+ aSlider ( this, ScResId( WND_HSCROLL ) ),
+ aGbLayout ( this, ScResId( GB_LAYOUT ) ),
+ aStrUndefined ( ScResId( SCSTR_UNDEFINED ) ),
+ aStrNewTable ( ScResId( SCSTR_NEWTABLE ) ),
+
+ bIsDrag ( FALSE ),
+ nLabelCount ( 0 ),
+ aLabelDataArr ( NULL ),
+ nOffset ( 0 ),
+ //
+ pDlgDPObject ( NULL ),
+ pViewData ( ((ScTabViewShell*)SfxViewShell::Current())->
+ GetViewData() ),
+ pDoc ( ((ScTabViewShell*)SfxViewShell::Current())->
+ GetViewData()->GetDocument() ),
+ bRefInputMode ( FALSE )
+{
+ if ( pDPObject )
+ {
+ pDlgDPObject = new ScDPObject( *pDPObject );
+ pDlgDPObject->SetAlive( TRUE ); // needed to get structure information
+ pDlgDPObject->FillOldParam( thePivotData, FALSE );
+ pDlgDPObject->FillLabelData( thePivotData, bShowAll, MAX_LABELS );
+ }
+
+ Init();
+ FreeResource();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScPivotLayoutDlg::~ScPivotLayoutDlg()
+{
+ USHORT nEntries = aLbOutPos.GetEntryCount();
+ USHORT i;
+
+ for ( i=2; i<nEntries; i++ )
+ delete (String*)aLbOutPos.GetEntryData( i );
+
+ for ( i=0; i<nLabelCount; i++ )
+ delete aLabelDataArr[i];
+ delete [] aLabelDataArr;
+
+ for ( i=0; i<FUNC_COUNT; i++ )
+ delete aFuncNameArr[i];
+ for ( i=0; (i<MAX_LABELS); i++ )
+ delete aSelectArr[i];
+
+ for ( i=0; (i<MAX_FIELDS); i++ )
+ {
+ delete aColArr [i];
+ delete aRowArr [i];
+ delete aDataArr [i];
+ }
+
+ delete pDlgDPObject;
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScPivotLayoutDlg::Init()
+{
+ DBG_ASSERT( pViewData && pDoc,
+ "Ctor-Initialisierung fehlgeschlagen!" );
+
+ USHORT i=0;
+
+ for ( i=0; i<FUNC_COUNT; i++ )
+ aFuncNameArr[i] = new String( ScResId( i+1 ) );
+
+ aBtnMore.AddWindow( &aFtOutArea );
+ aBtnMore.AddWindow( &aLbOutPos );
+ aBtnMore.AddWindow( &aEdOutPos );
+ aBtnMore.AddWindow( &aBtnIgnEmptyRows );
+ aBtnMore.AddWindow( &aBtnDetectCat );
+ aBtnMore.AddWindow( &aBtnTotalCol );
+ aBtnMore.AddWindow( &aBtnTotalRow );
+ aBtnMore.AddWindow( &aGbAreas );
+ aBtnMore.SetClickHdl( LINK( this, ScPivotLayoutDlg, MoreClickHdl ) );
+
+ {
+ Size aSize( Window( this, ScResId( WND_FIELD ) ).GetSizePixel() );
+ OHEIGHT = (USHORT)aSize.Height();
+ OWIDTH = (USHORT)aSize.Width();
+ }
+ CalcWndSizes();
+
+ for ( i=0; i<MAX_LABELS; i++ )
+ aSelectArr[i] = NULL;
+
+ for ( i=0; i<MAX_FIELDS; i++ )
+ {
+ aColArr[i] = NULL;
+ aRowArr[i] = NULL;
+ aDataArr[i] = NULL;
+ }
+
+ InitWndSelect( thePivotData.ppLabelArr, thePivotData.nLabels );
+ InitWnd( thePivotData.aColArr, thePivotData.nColCount, TYPE_COL );
+ InitWnd( thePivotData.aRowArr, thePivotData.nRowCount, TYPE_ROW );
+ InitWnd( thePivotData.aDataArr, thePivotData.nDataCount, TYPE_DATA );
+
+ if ( thePivotData.nLabels > PAGE_SIZE )
+ {
+ Size aSize( aSlider.GetSizePixel() );
+ Point aPos( aSlider.GetPosPixel() );
+
+ aPos.X() = aWndSelect.GetPosPixel().X();
+ aSize.Width() = aWndSelect.GetSizePixel().Width();
+ aSlider.SetPosSizePixel( aPos, aSize );
+ aSlider.SetEndScrollHdl( LINK( this, ScPivotLayoutDlg, ScrollHdl ) );
+ aSlider.SetPageSize( PAGE_SIZE );
+ aSlider.SetVisibleSize( LINE_SIZE );
+ aSlider.SetLineSize( LINE_SIZE );
+ aSlider.SetRange( Range( 0, (thePivotData.nLabels/LINE_SIZE)*LINE_SIZE
+ + ((thePivotData.nLabels%LINE_SIZE)
+ ? LINE_SIZE
+ : 0) ) );
+ aSlider.Show();
+ }
+ else
+ aSlider.Hide();
+
+ // Ein-/Ausgabebereiche: ----------------------------------------------
+
+ aLbOutPos .SetSelectHdl( LINK( this, ScPivotLayoutDlg, SelAreaHdl ) );
+ aEdOutPos .SetModifyHdl( LINK( this, ScPivotLayoutDlg, EdModifyHdl ) );
+ aBtnOk .SetClickHdl ( LINK( this, ScPivotLayoutDlg, OkHdl ) );
+ aBtnCancel.SetClickHdl ( LINK( this, ScPivotLayoutDlg, CancelHdl ) );
+
+ if ( pViewData && pDoc )
+ {
+ /*
+ * Aus den RangeNames des Dokumentes werden nun die
+ * in einem Zeiger-Array gemerkt, bei denen es sich
+ * um sinnvolle Bereiche handelt
+ */
+
+ aLbOutPos.Clear();
+ aLbOutPos.InsertEntry( aStrUndefined, 0 );
+ aLbOutPos.InsertEntry( aStrNewTable, 1 );
+
+ ScAreaNameIterator aIter( pDoc );
+ String aName;
+ ScRange aRange;
+ String aRefStr;
+ while ( aIter.Next( aName, aRange ) )
+ {
+ if ( !aIter.WasDBName() ) // hier keine DB-Bereiche !
+ {
+ USHORT nInsert = aLbOutPos.InsertEntry( aName );
+
+ aRange.aStart.Format( aRefStr, SCA_ABS_3D, pDoc );
+ aLbOutPos.SetEntryData( nInsert, new String( aRefStr ) );
+ }
+ }
+ }
+
+ if ( thePivotData.nTab != MAXTAB+1 )
+ {
+ String aStr;
+ ScAddress( thePivotData.nCol,
+ thePivotData.nRow,
+ thePivotData.nTab ).Format( aStr, STD_FORMAT, pDoc );
+ aEdOutPos.SetText( aStr );
+ EdModifyHdl(0);
+ }
+ else
+ {
+ aLbOutPos.SelectEntryPos( aLbOutPos.GetEntryCount()-1 );
+ SelAreaHdl(NULL);
+ }
+
+ aBtnIgnEmptyRows.Check( thePivotData.bIgnoreEmptyRows );
+ aBtnDetectCat .Check( thePivotData.bDetectCategories );
+ aBtnTotalCol .Check( thePivotData.bMakeTotalCol );
+ aBtnTotalRow .Check( thePivotData.bMakeTotalRow );
+
+// SFX_APP()->LockDispatcher( TRUE ); // Modal-Modus einschalten
+
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScPivotLayoutDlg::Close()
+{
+ return DoClose( ScPivotLayoutWrapper::GetChildWindowId() );
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::InitWndSelect( LabelData** ppLabelArr,
+ USHORT nLabels )
+{
+ if ( ppLabelArr )
+ {
+ USHORT nLast;
+ nLabelCount = (nLabels > MAX_LABELS) ? MAX_LABELS : nLabels;
+ nLast = (nLabelCount > PAGE_SIZE) ? PAGE_SIZE-1 : nLabelCount-1;
+ aLabelDataArr = new LabelData*[nLabelCount];
+
+ for ( USHORT i=0; (i<nLabelCount); i++ )
+ {
+ aLabelDataArr[i] = new LabelData( *ppLabelArr[i] );
+
+ if ( i <= nLast )
+ {
+ aWndSelect.AddField( *(aLabelDataArr[i]->pStrColName), i );
+ aSelectArr[i] = new FuncData( aLabelDataArr[i]->nCol,
+ aLabelDataArr[i]->nFuncMask );
+ }
+ }
+ aWndSelect.Redraw();
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::InitWnd( PivotField* pArr,
+ USHORT nCount,
+ FieldType eType )
+{
+ if ( pArr && (eType != TYPE_SELECT) )
+ {
+ FuncData** pInitArr = NULL;
+ FieldWindow* pInitWnd = NULL;
+ BOOL bDataArr = FALSE;
+
+ switch ( eType )
+ {
+ case TYPE_COL:
+ pInitArr = aColArr;
+ pInitWnd = &aWndCol;
+ break;
+
+ case TYPE_ROW:
+ pInitArr = aRowArr;
+ pInitWnd = &aWndRow;
+ break;
+
+ case TYPE_DATA:
+ pInitArr = aDataArr;
+ pInitWnd = &aWndData;
+ bDataArr = TRUE;
+ break;
+ default:
+ break;
+ }
+
+ if ( pInitArr && pInitWnd )
+ {
+ USHORT j=0;
+ for ( USHORT i=0; (i<nCount); i++ )
+ {
+ USHORT nCol = pArr[i].nCol;
+ USHORT nMask = pArr[i].nFuncMask;
+
+ if ( nCol != PIVOT_DATA_FIELD )
+ {
+ pInitArr[j] = new FuncData( nCol, nMask );
+
+ if ( !bDataArr )
+ {
+ pInitWnd->AddField( GetLabelString( nCol ), j );
+ }
+ else
+ {
+ LabelData* pData = GetLabelData( nCol );
+ DBG_ASSERT( pData, "LabelData not found" );
+ if (pData)
+ {
+ String aStr( GetFuncString( pInitArr[j]->nFuncMask,
+ pData->bIsValue ) );
+
+ aStr += GetLabelString( nCol );
+ pInitWnd->AddField( aStr, j );
+ }
+ }
+ j += 1;
+ }
+ }
+ pInitWnd->Redraw();
+ }
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::AddField( FieldType eToType,
+ const Point& rAtPos )
+{
+ FuncData fData( *(aSelectArr[nDnDFromIndex]) );
+ USHORT nAt = 0;
+ FieldWindow* toWnd = NULL;
+ FieldWindow* rmWnd = NULL;
+ FuncData** toArr = NULL;
+ FuncData** rmArr = NULL;
+ BOOL bDataArr = FALSE;
+
+ switch ( eToType )
+ {
+ case TYPE_COL:
+ toWnd = &aWndCol;
+ rmWnd = &aWndRow;
+ toArr = aColArr;
+ rmArr = aRowArr;
+ break;
+
+ case TYPE_ROW:
+ toWnd = &aWndRow;
+ rmWnd = &aWndCol;
+ toArr = aRowArr;
+ rmArr = aColArr;
+ break;
+
+ case TYPE_DATA:
+ toWnd = &aWndData;
+ rmWnd = NULL;
+ toArr = aDataArr;
+ rmArr = NULL;
+ bDataArr = TRUE;
+ break;
+ }
+
+ if ( (toArr[MAX_FIELDS-1] == NULL)
+ && (!Contains( toArr, fData.nCol, nAt )) )
+ {
+ // ggF. in anderem Fenster entfernen
+ if ( rmArr )
+ {
+ if ( Contains( rmArr, fData.nCol, nAt ) )
+ {
+ rmWnd->DelField( nAt );
+ Remove( rmArr, nAt );
+ }
+ }
+
+ LabelData* pData = aLabelDataArr[nDnDFromIndex+nOffset];
+ USHORT nAddedAt = 0;
+
+ if ( !bDataArr )
+ {
+ if ( toWnd->AddField( *(pData->pStrColName),
+ DlgPos2WndPos( rAtPos, *toWnd ),
+ nAddedAt ) )
+ {
+ Insert( toArr, fData, nAddedAt );
+ }
+ }
+ else
+ {
+ USHORT nMask = fData.nFuncMask;
+ String aStr( GetFuncString( nMask, pData->bIsValue ) );
+
+ aStr += *(pData->pStrColName);
+
+ if ( toWnd->AddField( aStr,
+ DlgPos2WndPos( rAtPos, *toWnd ),
+ nAddedAt ) )
+ {
+ fData.nFuncMask = nMask;
+ Insert( toArr, fData, nAddedAt );
+ }
+ }
+
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::MoveField( FieldType eFromType,
+ FieldType eToType,
+ const Point& rAtPos )
+{
+ if ( eFromType != eToType )
+ {
+ FieldWindow* fromWnd = NULL;
+ FieldWindow* toWnd = NULL;
+ FieldWindow* rmWnd = NULL;
+ FuncData** fromArr = NULL;
+ FuncData** toArr = NULL;
+ FuncData** rmArr = NULL;
+ USHORT nAt = 0;
+ BOOL bDataArr = FALSE;
+
+ switch ( eFromType )
+ {
+ case TYPE_COL:
+ fromWnd = &aWndCol;
+ fromArr = aColArr;
+ break;
+
+ case TYPE_ROW:
+ fromWnd = &aWndRow;
+ fromArr = aRowArr;
+ break;
+
+ case TYPE_DATA:
+ fromWnd = &aWndData;
+ fromArr = aDataArr;
+ break;
+ }
+
+ switch ( eToType )
+ {
+ case TYPE_COL:
+ toWnd = &aWndCol;
+ toArr = aColArr;
+ rmWnd = &aWndRow;
+ rmArr = aRowArr;
+ break;
+
+ case TYPE_ROW:
+ toWnd = &aWndRow;
+ toArr = aRowArr;
+ rmWnd = &aWndCol;
+ rmArr = aColArr;
+ break;
+
+ case TYPE_DATA:
+ toWnd = &aWndData;
+ toArr = aDataArr;
+ bDataArr = TRUE;
+ break;
+ }
+
+ if ( fromArr && toArr && fromWnd && toWnd )
+ {
+ FuncData fData( *(fromArr[nDnDFromIndex]) );
+
+ if ( Contains( fromArr, fData.nCol, nAt ) )
+ {
+ fromWnd->DelField( nAt );
+ Remove( fromArr, nAt );
+
+ if ( (toArr[MAX_FIELDS-1] == NULL)
+ && (!Contains( toArr, fData.nCol, nAt )) )
+ {
+ USHORT nAddedAt = 0;
+ if ( !bDataArr )
+ {
+ // ggF. in anderem Fenster entfernen
+ if ( rmArr )
+ {
+ if ( Contains( rmArr, fData.nCol, nAt ) )
+ {
+ rmWnd->DelField( nAt );
+ Remove( rmArr, nAt );
+ }
+ }
+
+ if ( toWnd->AddField( GetLabelString( fData.nCol ),
+ DlgPos2WndPos( rAtPos, *toWnd ),
+ nAddedAt ) )
+ {
+ Insert( toArr, fData, nAddedAt );
+ }
+ }
+ else
+ {
+ String aStr;
+ USHORT nMask = fData.nFuncMask;
+ aStr = GetFuncString( nMask );
+ aStr += GetLabelString( fData.nCol );
+
+ if ( toWnd->AddField( aStr,
+ DlgPos2WndPos( rAtPos, *toWnd ),
+ nAddedAt ) )
+ {
+ fData.nFuncMask = nMask;
+ Insert( toArr, fData, nAddedAt );
+ }
+ }
+ }
+ }
+ }
+ }
+ else // -> eFromType == eToType
+ {
+ FieldWindow* theWnd = NULL;
+ FuncData** theArr = NULL;
+ USHORT nAt = 0;
+ USHORT nToIndex = 0;
+ Point aToPos;
+ BOOL bDataArr = FALSE;
+
+ switch ( eFromType )
+ {
+ case TYPE_COL:
+ theWnd = &aWndCol;
+ theArr = aColArr;
+ break;
+
+ case TYPE_ROW:
+ theWnd = &aWndRow;
+ theArr = aRowArr;
+ break;
+
+ case TYPE_DATA:
+ theWnd = &aWndData;
+ theArr = aDataArr;
+ bDataArr = TRUE;
+ break;
+ }
+
+ FuncData fData( *(theArr[nDnDFromIndex]) );
+
+ if ( Contains( theArr, fData.nCol, nAt ) )
+ {
+ aToPos = DlgPos2WndPos( rAtPos, *theWnd );
+ theWnd->GetInsertIndex( aToPos, nToIndex );
+
+ if ( nToIndex != nAt )
+ {
+ USHORT nAddedAt = 0;
+
+ theWnd->DelField( nAt );
+ Remove( theArr, nAt );
+
+ if ( !bDataArr )
+ {
+ if ( theWnd->AddField( GetLabelString( fData.nCol ),
+ aToPos,
+ nAddedAt ) )
+ {
+ Insert( theArr, fData, nAddedAt );
+ }
+ }
+ else
+ {
+ String aStr;
+ USHORT nMask = fData.nFuncMask;
+ aStr = GetFuncString( nMask );
+ aStr += GetLabelString( fData.nCol );
+
+ if ( theWnd->AddField( aStr,
+ DlgPos2WndPos( rAtPos, *theWnd ),
+ nAddedAt ) )
+ {
+ fData.nFuncMask = nMask;
+ Insert( theArr, fData, nAddedAt );
+ }
+ }
+ }
+ }
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::NotifyMouseButtonUp( const Point& rAt )
+{
+ if ( bIsDrag )
+ {
+ bIsDrag = FALSE;
+
+ FieldType eDnDToType;
+ Point aPos = ScreenToOutputPixel( rAt );
+ BOOL bDel = FALSE;
+
+ if ( aRectCol.IsInside( aPos ) )
+ {
+ eDnDToType = TYPE_COL;
+ bDel = FALSE;
+ }
+ else if ( aRectRow.IsInside( aPos ) )
+ {
+ eDnDToType = TYPE_ROW;
+ bDel = FALSE;
+ }
+ else if ( aRectData.IsInside( aPos ) )
+ {
+ eDnDToType = TYPE_DATA;
+ bDel = FALSE;
+ }
+ else if ( aRectSelect.IsInside( aPos ) )
+ {
+ eDnDToType = TYPE_SELECT;
+ bDel = TRUE;
+ }
+ else
+ bDel = TRUE;
+
+ if ( !bDel )
+ {
+ if ( eDnDFromType == TYPE_SELECT )
+ {
+ AddField( eDnDToType, aPos );
+ }
+ else
+ {
+ MoveField( eDnDFromType, eDnDToType, aPos );
+ }
+ }
+ else // Loeschen von Feldern
+ {
+ switch ( eDnDFromType )
+ {
+ case TYPE_COL:
+ aWndCol.DelField( nDnDFromIndex );
+ Remove( aColArr, nDnDFromIndex );
+ break;
+
+ case TYPE_ROW:
+ aWndRow.DelField( nDnDFromIndex );
+ Remove( aRowArr, nDnDFromIndex );
+ break;
+
+ case TYPE_DATA:
+ aWndData.DelField( nDnDFromIndex );
+ Remove( aDataArr, nDnDFromIndex );
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+const Pointer* ScPivotLayoutDlg::NotifyMouseMove( const Point& rAt )
+{
+ Pointer* pPtr = &aPtrArrow;
+
+ if ( bIsDrag )
+ {
+ Point aPos = ScreenToOutputPixel( rAt );
+
+ if ( aRectCol.IsInside( aPos ) )
+ pPtr = &aPtrCol;
+ else if ( aRectRow.IsInside( aPos ) )
+ pPtr = &aPtrRow;
+ else
+ pPtr = &aPtrField;
+ }
+
+ return pPtr;
+}
+
+
+//----------------------------------------------------------------------------
+
+const Pointer* ScPivotLayoutDlg::NotifyMouseButtonDown( FieldType eType,
+ USHORT nFieldIndex )
+{
+ Pointer* pPtr = &aPtrField;
+
+ bIsDrag = TRUE;
+ eDnDFromType = eType;
+ nDnDFromIndex = nFieldIndex;
+
+ if ( eType == TYPE_COL )
+ pPtr = &aPtrCol;
+ else if ( eType == TYPE_ROW )
+ pPtr = &aPtrRow;
+
+ return pPtr;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::NotifyDoubleClick( FieldType eType,
+ USHORT nFieldIndex )
+{
+ FuncData** pArr = NULL;
+
+ switch ( eType )
+ {
+ case TYPE_COL: pArr = aColArr; break;
+ case TYPE_ROW: pArr = aRowArr; break;
+ case TYPE_DATA: pArr = aDataArr; break;
+ case TYPE_SELECT:
+ default:
+ pArr = NULL;
+ break;
+ }
+
+ if ( pArr )
+ {
+ USHORT nArrPos = 0;
+ LabelData* pData = GetLabelData( pArr[nFieldIndex]->nCol, &nArrPos );
+ if ( pData )
+ {
+ String aFieldName = *(pData->pStrColName);
+ BOOL bOldShowAll = bShowAll[nArrPos];
+
+ ScPivotFunctionDlg* pDlg =
+ new ScPivotFunctionDlg( this,
+ eType != TYPE_DATA,
+ aFieldName,
+ pArr[nFieldIndex]->nFuncMask,
+ bOldShowAll );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ pArr[nFieldIndex]->nFuncMask
+ = pData->nFuncMask
+ = pDlg->GetFuncMask();
+
+ if ( eType == TYPE_DATA )
+ {
+ String aStr;
+ aStr = GetFuncString ( aDataArr[nFieldIndex]->nFuncMask );
+ aStr += GetLabelString( aDataArr[nFieldIndex]->nCol );
+ aWndData.SetText( aStr, nFieldIndex );
+ }
+ else
+ {
+ BOOL bNewShowAll = pDlg->GetShowAll();
+ if (bNewShowAll != bOldShowAll)
+ {
+ //! remember which were changed?
+ bShowAll[nArrPos] = bNewShowAll;
+ }
+ }
+ }
+ delete pDlg;
+ }
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScPivotLayoutDlg::Contains( FuncData** pArr, short nCol, USHORT& nAt )
+{
+ if ( !pArr )
+ return FALSE;
+
+ BOOL bFound = FALSE;
+ USHORT i = 0;
+
+ while ( (i<MAX_FIELDS) && (pArr[i] != NULL) && !bFound )
+ {
+ bFound = (pArr[i]->nCol == nCol);
+ if ( bFound )
+ nAt = i;
+ i++;
+ }
+
+ return bFound;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::Remove( FuncData** pArr, USHORT nAt )
+{
+ if ( !pArr || (nAt>MAX_FIELDS-1) )
+ return;
+
+ DELETEZ( pArr[nAt] );
+
+ if ( (nAt != MAX_FIELDS-1) && (pArr[nAt+1] != NULL) )
+ {
+ USHORT i=nAt;
+ while ( i<MAX_FIELDS )
+ {
+ pArr[i] = pArr[i+1];
+ i++;
+ }
+ pArr[MAX_FIELDS-1] = NULL;
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::Insert( FuncData** pArr,
+ const FuncData& rFData,
+ USHORT nAt )
+{
+ if ( !pArr || (nAt>MAX_FIELDS-1) )
+ return;
+
+ if ( pArr[nAt] == NULL )
+ {
+ pArr[nAt] = new FuncData( rFData );
+ }
+ else
+ {
+ if ( pArr[MAX_FIELDS-1] == NULL ) // mind. ein Slot frei?
+ {
+ for ( USHORT i=MAX_FIELDS-1; i>nAt; i-- )
+ pArr[i] = pArr[i-1];
+ pArr[nAt] = new FuncData( rFData );
+ }
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+LabelData* ScPivotLayoutDlg::GetLabelData( short nCol, USHORT* pPos )
+{
+ LabelData* pData = NULL;
+ BOOL bFound = FALSE;
+
+ if ( aLabelDataArr )
+ {
+ for ( USHORT i=0; (i<nLabelCount) && !bFound; i++ )
+ {
+ bFound = (aLabelDataArr[i]->nCol == nCol);
+ if ( bFound )
+ {
+ pData = aLabelDataArr[i];
+ if (pPos)
+ *pPos = i;
+ }
+ }
+ }
+
+ return pData;
+}
+
+
+//----------------------------------------------------------------------------
+
+String ScPivotLayoutDlg::GetLabelString( short nCol )
+{
+ LabelData* pData = GetLabelData( nCol );
+ DBG_ASSERT( pData, "LabelData not found" );
+ if (pData && pData->pStrColName)
+ return *pData->pStrColName;
+
+ return String();
+}
+
+
+//----------------------------------------------------------------------------
+
+String ScPivotLayoutDlg::GetFuncString( USHORT& rFuncMask, BOOL bIsValue )
+{
+ String aStr;
+
+ if ( rFuncMask == PIVOT_FUNC_NONE
+ || rFuncMask == PIVOT_FUNC_AUTO )
+ {
+ if ( bIsValue )
+ {
+ aStr = FSTR(PIVOTSTR_SUM);
+ rFuncMask = PIVOT_FUNC_SUM;
+ }
+ else
+ {
+ aStr = FSTR(PIVOTSTR_COUNT);
+ rFuncMask = PIVOT_FUNC_COUNT;
+ }
+ }
+ else if ( rFuncMask == PIVOT_FUNC_SUM ) aStr = FSTR(PIVOTSTR_SUM);
+ else if ( rFuncMask == PIVOT_FUNC_COUNT ) aStr = FSTR(PIVOTSTR_COUNT);
+ else if ( rFuncMask == PIVOT_FUNC_AVERAGE ) aStr = FSTR(PIVOTSTR_AVG);
+ else if ( rFuncMask == PIVOT_FUNC_MAX ) aStr = FSTR(PIVOTSTR_MAX);
+ else if ( rFuncMask == PIVOT_FUNC_MIN ) aStr = FSTR(PIVOTSTR_MIN);
+ else if ( rFuncMask == PIVOT_FUNC_PRODUCT ) aStr = FSTR(PIVOTSTR_PROD);
+ else if ( rFuncMask == PIVOT_FUNC_COUNT_NUM ) aStr = FSTR(PIVOTSTR_COUNT2);
+ else if ( rFuncMask == PIVOT_FUNC_STD_DEV ) aStr = FSTR(PIVOTSTR_DEV);
+ else if ( rFuncMask == PIVOT_FUNC_STD_DEVP ) aStr = FSTR(PIVOTSTR_DEV2);
+ else if ( rFuncMask == PIVOT_FUNC_STD_VAR ) aStr = FSTR(PIVOTSTR_VAR);
+ else if ( rFuncMask == PIVOT_FUNC_STD_VARP ) aStr = FSTR(PIVOTSTR_VAR2);
+ else
+ {
+ aStr = ScGlobal::GetRscString( STR_TABLE_ERGEBNIS );
+ aStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " - " ));
+ }
+
+ return aStr;
+}
+
+
+//----------------------------------------------------------------------------
+
+Point ScPivotLayoutDlg::DlgPos2WndPos( const Point& rPt, Window& rWnd )
+{
+ Point aWndPt( rPt );
+ aWndPt.X() = rPt.X()-rWnd.GetPosPixel().X();
+ aWndPt.Y() = rPt.Y()-rWnd.GetPosPixel().Y();
+
+ return aWndPt;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::CalcWndSizes()
+{
+ aWndRow.SetSizePixel ( Size( OWIDTH, MAX_FIELDS*OHEIGHT ) );
+ aWndCol.SetPosSizePixel ( aWndRow.GetPosPixel()
+ + Point( OWIDTH, -2*(short)OHEIGHT ),
+ Size( 4*OWIDTH, 2*OHEIGHT ) );
+ aWndData.SetPosSizePixel ( aWndRow.GetPosPixel()
+ + Point( OWIDTH, 0 ),
+ Size( 4*OWIDTH, MAX_FIELDS*OHEIGHT ) );
+ aWndSelect.SetSizePixel ( Size( (2*OWIDTH)+SSPACE,
+ (MAX_FIELDS*OHEIGHT)
+ +((MAX_FIELDS-1)*SSPACE) ) );
+ aSlider.SetSizePixel ( Size( aWndSelect.GetSizePixel().Width(),
+ aSlider.GetSizePixel().Height() ) );
+
+ aRectRow = Rectangle( aWndRow.GetPosPixel(), aWndRow.GetSizePixel() );
+ aRectCol = Rectangle( aWndCol.GetPosPixel(), aWndCol.GetSizePixel() );
+ aRectData = Rectangle( aWndData.GetPosPixel(), aWndData.GetSizePixel() );
+ aRectSelect = Rectangle( aWndSelect.GetPosPixel(), aWndSelect.GetSizePixel() );
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScPivotLayoutDlg::GetPivotArrays( PivotField* pColArr,
+ PivotField* pRowArr,
+ PivotField* pDataArr,
+ USHORT& rColCount,
+ USHORT& rRowCount,
+ USHORT& rDataCount )
+{
+ BOOL bFit = TRUE;
+ USHORT i=0;
+
+ for ( i=0; (i<MAX_FIELDS) && (aDataArr[i] != NULL ); i++ )
+ {
+ pDataArr[i].nCol = aDataArr[i]->nCol;
+ pDataArr[i].nFuncMask = aDataArr[i]->nFuncMask;
+ }
+ rDataCount = i;
+
+ for ( i=0; (i<MAX_FIELDS) && (aColArr[i] != NULL ); i++ )
+ {
+ pColArr[i].nCol = aColArr[i]->nCol;
+ pColArr[i].nFuncMask = aColArr[i]->nFuncMask;
+ }
+ rColCount = i;
+
+ for ( i=0; (i<MAX_FIELDS) && (aRowArr[i] != NULL ); i++ )
+ {
+ pRowArr[i].nCol = aRowArr[i]->nCol;
+ pRowArr[i].nFuncMask = aRowArr[i]->nFuncMask;
+ }
+ rRowCount = i;
+
+ if ( rRowCount < MAX_FIELDS )
+ pRowArr[rRowCount++].nCol = PIVOT_DATA_FIELD;
+ else if ( rColCount < MAX_FIELDS )
+ pColArr[rColCount++].nCol = PIVOT_DATA_FIELD;
+ else
+ bFit = FALSE; // kein Platz fuer Datenfeld
+
+ return bFit;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( bRefInputMode )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart( &aEdOutPos );
+/*
+ ScAddress aAdr( nStartCol, nStartRow, nStartTab );
+ aAdr.PutInOrder( ScAddress( nEndCol, nEndRow, nEndTab ) );
+*/
+ String aRefStr;
+ rRef.aStart.Format( aRefStr, STD_FORMAT, pDoc );
+ aEdOutPos.SetRefString( aRefStr );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPivotLayoutDlg::SetActive()
+{
+ if ( bRefInputMode )
+ {
+ aEdOutPos.GrabFocus();
+ EdModifyHdl( NULL );
+ }
+ else
+ {
+ GrabFocus();
+ }
+
+ RefInputDone();
+}
+
+//----------------------------------------------------------------------------
+// Handler:
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScPivotLayoutDlg, OkHdl, OKButton *, EMPTYARG )
+{
+ String aOutPosStr( aEdOutPos.GetText() );
+ ScAddress aAdrDest;
+ BOOL bToNewTable = (aLbOutPos.GetSelectEntryPos() == 1);
+ USHORT nResult = !bToNewTable ? aAdrDest.Parse( aOutPosStr, pDoc ) : 0;
+
+ if ( bToNewTable
+ || ( (aOutPosStr.Len() > 0) && (SCA_VALID == (nResult & SCA_VALID)) ) )
+ {
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+
+ ScPivotParam theOutParam;
+ PivotFieldArr aColArr;
+ PivotFieldArr aRowArr;
+ PivotFieldArr aDataArr;
+ USHORT nColCount;
+ USHORT nRowCount;
+ USHORT nDataCount;
+
+ BOOL bFit = GetPivotArrays( aColArr, aRowArr, aDataArr,
+ nColCount, nRowCount, nDataCount );
+ if ( bFit && pDlgDPObject )
+ {
+ ScRange aOutRange( aAdrDest ); // bToNewTable is passed separately
+
+ ScDPSaveData aSaveData;
+ aSaveData.SetIgnoreEmptyRows( aBtnIgnEmptyRows.IsChecked() );
+ aSaveData.SetRepeatIfEmpty( aBtnDetectCat.IsChecked() );
+ aSaveData.SetColumnGrand( aBtnTotalCol.IsChecked() );
+ aSaveData.SetRowGrand( aBtnTotalRow.IsChecked() );
+
+ uno::Reference<sheet::XDimensionsSupplier> xSource = pDlgDPObject->GetSource();
+
+ ScDPObject::ConvertOrientation( aSaveData, aColArr, nColCount,
+ sheet::DataPilotFieldOrientation_COLUMN, NULL, 0, 0, xSource, FALSE );
+ ScDPObject::ConvertOrientation( aSaveData, aRowArr, nRowCount,
+ sheet::DataPilotFieldOrientation_ROW, NULL, 0, 0, xSource, FALSE );
+ ScDPObject::ConvertOrientation( aSaveData, aDataArr, nDataCount,
+ sheet::DataPilotFieldOrientation_DATA, NULL, 0, 0, xSource, FALSE,
+ aColArr, nColCount, aRowArr, nRowCount );
+
+ // "show all" property
+ //! init from pDlgDPObject, set only changed values
+ for ( USHORT i=0; i<nLabelCount; i++ )
+ if ( aLabelDataArr && aLabelDataArr[i]->pStrColName )
+ {
+ ScDPSaveDimension* pDim =
+ aSaveData.GetExistingDimensionByName( *aLabelDataArr[i]->pStrColName );
+ if (pDim)
+ pDim->SetShowEmpty( bShowAll[i] );
+ }
+
+ USHORT nWhichPivot = SC_MOD()->GetPool().GetWhich( SID_PIVOT_TABLE );
+ ScPivotItem aOutItem( nWhichPivot, &aSaveData, &aOutRange, bToNewTable );
+
+ bRefInputMode = FALSE; // to allow deselecting when switching sheets
+
+ SFX_APP()->LockDispatcher( FALSE );
+ SwitchToDocument();
+ SFX_DISPATCHER().Execute( SID_PIVOT_TABLE, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aOutItem, 0L, 0L );
+ Close();
+ }
+ else
+ {
+ ErrorBox( this, WinBits( WB_OK | WB_DEF_OK ),
+ ScGlobal::GetRscString( STR_PIVOT_ERROR )
+ ).Execute();
+ }
+ }
+ else
+ {
+ if ( !aBtnMore.GetState() )
+ aBtnMore.SetState( TRUE );
+
+ ErrorBox( this, WinBits( WB_OK | WB_DEF_OK ),
+ ScGlobal::GetRscString( STR_INVALID_TABREF )
+ ).Execute();
+ aEdOutPos.GrabFocus();
+ }
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+IMPL_LINK_INLINE_START( ScPivotLayoutDlg, CancelHdl, CancelButton *, EMPTYARG )
+{
+ Close();
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScPivotLayoutDlg, CancelHdl, CancelButton *, EMPTYARG )
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScPivotLayoutDlg, MoreClickHdl, MoreButton *, pBtn )
+{
+ if ( aBtnMore.GetState() )
+ {
+ bRefInputMode = TRUE;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+ aEdOutPos.Enable();
+ aEdOutPos.GrabFocus();
+ }
+ else
+ {
+ bRefInputMode = FALSE;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+ }
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScPivotLayoutDlg, EdModifyHdl, Edit *, EMPTYARG )
+{
+ String theCurPosStr = aEdOutPos.GetText();
+ USHORT nResult = ScAddress().Parse( theCurPosStr, pDoc );
+
+ if ( SCA_VALID == (nResult & SCA_VALID) )
+ {
+ String* pStr = NULL;
+ BOOL bFound = FALSE;
+ USHORT i = 0;
+ USHORT nCount = aLbOutPos.GetEntryCount();
+
+ for ( i=2; i<nCount && !bFound; i++ )
+ {
+ pStr = (String*)aLbOutPos.GetEntryData( i );
+ bFound = (theCurPosStr == *pStr);
+ }
+
+ if ( bFound )
+ aLbOutPos.SelectEntryPos( --i );
+ else
+ aLbOutPos.SelectEntryPos( 0 );
+ }
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScPivotLayoutDlg, SelAreaHdl, ListBox *, EMPTYARG )
+{
+ String aString;
+ USHORT nSelPos = aLbOutPos.GetSelectEntryPos();
+
+ if ( nSelPos > 1 )
+ {
+ aString = *(String*)aLbOutPos.GetEntryData( nSelPos );
+ }
+ else if ( nSelPos == aLbOutPos.GetEntryCount()-1 ) // auf neue Tabelle?
+ {
+ aEdOutPos.Disable();
+ }
+ else
+ aEdOutPos.Enable();
+
+ aEdOutPos.SetText( aString );
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScPivotLayoutDlg, ScrollHdl, ScrollBar *, EMPTYARG )
+{
+ nOffset = (USHORT)aSlider.GetThumbPos();
+
+ LabelData* pData = NULL;
+ USHORT nFields = (nLabelCount-nOffset > PAGE_SIZE)
+ ? PAGE_SIZE
+ : nLabelCount-nOffset;
+
+ aWndSelect.ClearFields();
+
+ USHORT i=0;
+ for ( i=0; i<nFields; i++ )
+ {
+ pData = aLabelDataArr[nOffset+i];
+ aWndSelect.AddField( *(pData->pStrColName), i );
+ if ( aSelectArr[i] )
+ *(aSelectArr[i]) = FuncData( pData->nCol, pData->nFuncMask );
+ else
+ aSelectArr[i] = new FuncData( pData->nCol, pData->nFuncMask );
+ }
+ for ( ; i<MAX_LABELS; i++ )
+ DELETEZ( aSelectArr[i] );
+
+ aWndSelect.Redraw();
+ return 0;
+}
+
+
+
diff --git a/sc/source/ui/dbgui/scendlg.cxx b/sc/source/ui/dbgui/scendlg.cxx
new file mode 100644
index 000000000000..e63dd567edf8
--- /dev/null
+++ b/sc/source/ui/dbgui/scendlg.cxx
@@ -0,0 +1,342 @@
+/*************************************************************************
+ *
+ * $RCSfile: scendlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "scitems.hxx"
+#include <svx/drawitem.hxx>
+#include <svx/xtable.hxx>
+#include <sfx2/inimgr.hxx>
+#include <sfx2/objsh.hxx>
+#include <svtools/iniman.hxx>
+#include <vcl/msgbox.hxx>
+#include <segmentc.hxx>
+
+#include "global.hxx"
+#include "globstr.hrc"
+#include "tabvwsh.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+#include "scendlg.hrc"
+#include "scendlg.hxx"
+
+SEG_EOFGLOBALS()
+
+//========================================================================
+#pragma SEG_FUNCDEF(scendlg_01)
+
+ScNewScenarioDlg::ScNewScenarioDlg( Window* pParent, const String& rName, BOOL bEdit )
+
+ : ModalDialog ( pParent, ScResId( RID_SCDLG_NEWSCENARIO ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aEdName ( this, ScResId( ED_NAME ) ),
+ aEdComment ( this, ScResId( ED_COMMENT ) ),
+ aCbShowFrame ( this, ResId( CB_SHOWFRAME ) ),
+ aLbColor ( this, ResId( LB_COLOR ) ),
+ //aCbPrintFrame ( this, ResId( CB_PRINTFRAME ) ),
+ aCbTwoWay ( this, ResId( CB_TWOWAY ) ),
+ //aCbAttrib ( this, ResId( CB_ATTRIB ) ),
+ //aCbValue ( this, ResId( CB_VALUE ) ),
+ aCbCopyAll ( this, ResId( CB_COPYALL ) ),
+ aGbName ( this, ResId( GB_NAME )),
+ aGbComment ( this, ResId( GB_COMMENT ) ),
+ aGbOptions ( this, ResId( GB_OPTIONS ) ),
+ aDefScenarioName( rName ),
+ bIsEdit ( bEdit )
+{
+ if (bIsEdit)
+ SetText(String(ResId(STR_EDIT)));
+
+ SfxObjectShell* pDocSh = SfxObjectShell::Current();
+ if ( pDocSh )
+ {
+ const SfxPoolItem* pItem = pDocSh->GetItem( ITEMID_COLOR_TABLE );
+ if ( pItem )
+ {
+ XColorTable* pColorTable = ((SvxColorTableItem*)pItem)->GetColorTable();
+ if (pColorTable)
+ {
+ aLbColor.SetUpdateMode( FALSE );
+ long nCount = pColorTable->Count();
+ for ( long n=0; n<nCount; n++ )
+ {
+ XColorEntry* pEntry = pColorTable->Get(n);
+ aLbColor.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
+ }
+ aLbColor.SetUpdateMode( TRUE );
+ }
+ }
+ }
+
+ String aComment( ScResId( STR_CREATEDBY ) );
+
+ aComment += ' ';
+ aComment += SFX_INIMANAGER()->Get( SFX_KEY_USER_NAME );
+ aComment.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ", " ));
+ aComment += String( ScResId( STR_ON ) );
+ aComment += ' ';
+ aComment += ScGlobal::pScInternational->GetDate( Date() );
+ aComment.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ", " ));
+ aComment += ScGlobal::pScInternational->GetTime( Time() );
+
+ aEdComment .SetText( aComment );
+ aEdName .SetText( rName );
+ aBtnOk .SetClickHdl( LINK( this, ScNewScenarioDlg, OkHdl ) );
+
+ FreeResource();
+
+ aLbColor.SelectEntry( Color( COL_LIGHTGRAY ) );
+ aCbShowFrame.Check(TRUE);
+ //aCbPrintFrame.Check(TRUE);
+ aCbTwoWay.Check(TRUE);
+ //aCbAttrib.Check(FALSE);
+ //aCbValue.Check(FALSE);
+ aCbCopyAll.Check(FALSE);
+
+ if (bIsEdit)
+ aCbCopyAll.Enable(FALSE);
+
+ //! die drei funktionieren noch nicht...
+ /*
+ aCbPrintFrame.Enable(FALSE);
+ aCbAttrib.Enable(FALSE);
+ aCbValue.Enable(FALSE);
+ */
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(scendlg_03)
+
+__EXPORT ScNewScenarioDlg::~ScNewScenarioDlg()
+{
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(scendlg_02)
+
+void ScNewScenarioDlg::GetScenarioData( String& rName, String& rComment,
+ Color& rColor, USHORT& rFlags ) const
+{
+ rComment = aEdComment.GetText();
+ rName = aEdName.GetText();
+
+ if ( rName.Len() == 0 )
+ rName = aDefScenarioName;
+
+ rColor = aLbColor.GetSelectEntryColor();
+ USHORT nBits = 0;
+ if (aCbShowFrame.IsChecked())
+ nBits |= SC_SCENARIO_SHOWFRAME;
+ /*
+ if (aCbPrintFrame.IsChecked())
+ nBits |= SC_SCENARIO_PRINTFRAME;
+ */
+ if (aCbTwoWay.IsChecked())
+ nBits |= SC_SCENARIO_TWOWAY;
+ /*
+ if (aCbAttrib.IsChecked())
+ nBits |= SC_SCENARIO_ATTRIB;
+ if (aCbValue.IsChecked())
+ nBits |= SC_SCENARIO_VALUE;
+ */
+ if (aCbCopyAll.IsChecked())
+ nBits |= SC_SCENARIO_COPYALL;
+ rFlags = nBits;
+}
+
+void ScNewScenarioDlg::SetScenarioData( const String& rName, const String& rComment,
+ const Color& rColor, USHORT nFlags )
+{
+ aEdComment.SetText(rComment);
+ aEdName.SetText(rName);
+ aLbColor.SelectEntry(rColor);
+
+ aCbShowFrame.Check ( (nFlags & SC_SCENARIO_SHOWFRAME) != 0 );
+ //aCbPrintFrame.Check( (nFlags & SC_SCENARIO_PRINTFRAME) != 0 );
+ aCbTwoWay.Check ( (nFlags & SC_SCENARIO_TWOWAY) != 0 );
+ //aCbAttrib.Check ( (nFlags & SC_SCENARIO_ATTRIB) != 0 );
+ //aCbValue.Check ( (nFlags & SC_SCENARIO_VALUE) != 0 );
+ // CopyAll nicht
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(scendlg_04)
+
+IMPL_LINK( ScNewScenarioDlg, OkHdl, OKButton *, EMPTYARG )
+{
+ String aName ( aEdName.GetText() );
+ ScDocument* pDoc = ((ScTabViewShell*)SfxViewShell::Current())->
+ GetViewData()->GetDocument();
+
+ aName.EraseLeadingChars( ' ' );
+ aName.EraseTrailingChars( ' ' );
+ aEdName.SetText( aName );
+
+ if ( !pDoc->ValidTabName( aName ) )
+ {
+ InfoBox( this, ScGlobal::GetRscString( STR_INVALIDTABNAME ) ).
+ Execute();
+ aEdName.GrabFocus();
+ }
+ else if ( !bIsEdit && !pDoc->ValidNewTabName( aName ) )
+ {
+ InfoBox( this, ScGlobal::GetRscString( STR_NEWTABNAMENOTUNIQUE ) ).
+ Execute();
+ aEdName.GrabFocus();
+ }
+ else
+ EndDialog( RET_OK );
+ return 0;
+
+ //! beim Editieren testen, ob eine andere Tabelle den Namen hat!
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.24 2000/09/17 14:08:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.23 2000/08/31 16:38:20 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.22 2000/04/14 17:38:03 nn
+ unicode changes
+
+ Revision 1.21 2000/02/11 12:24:00 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.20 1998/03/16 18:23:02 ANK
+ Neues Outfit
+
+
+ Rev 1.19 16 Mar 1998 19:23:02 ANK
+ Neues Outfit
+
+ Rev 1.18 10 Mar 1998 22:05:40 NN
+ Controls fuer neue Einstellungen
+
+ Rev 1.17 08 Mar 1998 21:16:20 NN
+ Szenario-Einstellungen
+
+ Rev 1.16 05 Dec 1997 19:56:10 ANK
+ Includes geaendert
+
+ Rev 1.15 29 Oct 1996 14:03:56 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.14 22 Mar 1996 12:06:16 ER
+ GetUserName --> Get SFX_KEY_USER_NAME
+
+ Rev 1.13 29 Jan 1996 15:12:30 MO
+ neuer Link
+
+ Rev 1.12 08 Nov 1995 13:06:24 MO
+ 301-Aenderungen
+
+ Rev 1.11 26 Jul 1995 08:11:52 STE
+ Compilefehler behoben
+
+ Rev 1.10 25 Jul 1995 19:15:58 HJS
+ GetAppInternational => pInternational
+
+ Rev 1.9 24 Jul 1995 14:11:52 MO
+ EXPORT
+
+ Rev 1.8 04 May 1995 08:16:28 TRI
+ pApp -> Application::
+
+ Rev 1.7 27 Apr 1995 15:35:48 MO
+ Fehlermeldung, wenn TabName ungueltig
+
+ Rev 1.6 27 Apr 1995 10:01:16 MO
+ Leerzeichn im Namen durch '_' ersetzen
+
+ Rev 1.5 31 Mar 1995 10:16:24 MO
+ Ueberpruefung auf doppelte Tabellennamen
+
+ Rev 1.4 29 Mar 1995 16:39:40 MO
+ Defautlname im Ctor
+
+ Rev 1.3 28 Mar 1995 17:29:18 MO
+ Benutzername ueber Sfx-Inimanager
+
+ Rev 1.2 24 Mar 1995 13:27:14 TRI
+ Segmentierung
+
+ Rev 1.1 21 Mar 1995 14:09:44 TRI
+ sfx.hxx included
+
+ Rev 1.0 20 Mar 1995 16:46:08 MO
+ Dialog zum Anlegen eines Szenarios
+
+------------------------------------------------------------------------ */
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/dbgui/scendlg.hrc b/sc/source/ui/dbgui/scendlg.hrc
new file mode 100644
index 000000000000..eaaff7d20c79
--- /dev/null
+++ b/sc/source/ui/dbgui/scendlg.hrc
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: scendlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc"
+//#define RID_SCDLG_NEWSCENARIO 256
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define FT_NAME 1
+#define ED_NAME 1
+#define FT_COMMENT 2
+#define ED_COMMENT 2
+#define STR_CREATEDBY 1
+
+#ifdef STR_ON
+#undef STR_ON
+#endif
+#ifdef STR_EDIT
+#undef STR_EDIT
+#endif
+
+#define STR_ON 2
+#define CB_SHOWFRAME 3
+#define LB_COLOR 4
+#define CB_PRINTFRAME 5
+#define CB_TWOWAY 6
+#define CB_ATTRIB 7
+#define CB_VALUE 8
+#define CB_COPYALL 9
+#define STR_EDIT 10
+#define GB_NAME 1
+#define GB_COMMENT 2
+#define GB_OPTIONS 3
diff --git a/sc/source/ui/dbgui/scendlg.src b/sc/source/ui/dbgui/scendlg.src
new file mode 100644
index 000000000000..3b34eb61cc45
--- /dev/null
+++ b/sc/source/ui/dbgui/scendlg.src
@@ -0,0 +1,450 @@
+/*************************************************************************
+ *
+ * $RCSfile: scendlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include "scendlg.hrc"
+ModalDialog RID_SCDLG_NEWSCENARIO
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 247 , 199 ) ;
+ Text = "Szenario anlegen" ;
+ Text [ ENGLISH ] = "Create Scenario" ;
+ Text [ NORWEGIAN ] = "Lag Scenario" ;
+ Text [ DANISH ] = "Opret scenarie" ;
+ Text [ ENGLISH_US ] = "Create Scenario" ;
+ Text [ SPANISH ] = "Crear escenario" ;
+ Text [ FINNISH ] = "Luo hahmotelma" ;
+ Text [ FRENCH ] = "Création d'un scénario" ;
+ Text [ ITALIAN ] = "Crea scenario" ;
+ Text [ DUTCH ] = "Scenario maken" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Criar Cenário" ;
+ Text [ SWEDISH ] = "Skapa scenario" ;
+ Text [ PORTUGUESE ] = "Criar cenário" ;
+ Moveable = TRUE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 191 , 11 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 191 , 29 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 191 , 48 ) ;
+ Size = MAP_APPFONT ( 50 , 15 ) ;
+ TabStop = TRUE ;
+ };
+ MultiLineEdit ED_COMMENT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 20 , 54 ) ;
+ Size = MAP_APPFONT ( 156 , 46 ) ;
+ TabStop = TRUE ;
+ MaxTextLength = 512 ;
+ VScroll = TRUE ;
+ };
+ Edit ED_NAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 20 , 18 ) ;
+ Size = MAP_APPFONT ( 156 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ CheckBox CB_SHOWFRAME
+ {
+ Pos = MAP_APPFONT ( 12 , 126 ) ;
+ Size = MAP_APPFONT ( 83 , 10 ) ;
+ Text = "Rahmen anzeigen in" ;
+ Text [ ENGLISH ] = "Display frame" ;
+ Text [ english_us ] = "Display border in" ;
+ Text [ portuguese_brazilian ] = "Rahmen anzeigen in" ;
+ Text [ swedish ] = "Visa ram i" ;
+ Text [ danish ] = "Vis ramme i" ;
+ Text [ italian ] = "Mostra cornice in" ;
+ Text [ spanish ] = "Mostrar borde en" ;
+ Text [ french ] = "Afficher cadre dans" ;
+ Text [ dutch ] = "Kader weergeven in" ;
+ Text [ portuguese ] = "Mostrar moldura em" ;
+ Text[ chinese_simplified ] = "ÏÔʾ±ß¿ò";
+ Text[ russian ] = "Ïîêàçàòü ðàìêè â öâåòå";
+ Text[ polish ] = "Poka¿ ramkê w k~olorze";
+ Text[ japanese ] = "˜g‚ð•\\Ž¦";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "Åã¥ÜÃä®Ø";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÅØÇÑ ÈÇááæä";
+ Text[ greek ] = "ÅìöÜíéóç ðëáéóßïõ óôï";
+ Text[ korean ] = "°æ°è¼± Ç¥½Ã";
+ Text[ turkish ] = "Çerçeve rengi";
+ };
+ ListBox LB_COLOR
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 51 , 138 ) ;
+ Size = MAP_APPFONT ( 126 , 86 ) ;
+ DropDown = TRUE ;
+ DDExtraWidth = TRUE ;
+ };
+ CheckBox CB_PRINTFRAME
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 121 , 243 ) ;
+ Size = MAP_APPFONT ( 83 , 10 ) ;
+ Text = "Rahmen drucken" ;
+ Text [ ENGLISH ] = "Print frame" ;
+ Text [ english_us ] = "Print border" ;
+ Text [ portuguese_brazilian ] = "Rahmen drucken" ;
+ Text [ swedish ] = "Skriv ut ram" ;
+ Text [ danish ] = "Udskriv ramme" ;
+ Text [ italian ] = "Stampa cornice" ;
+ Text [ spanish ] = "Imprimir borde" ;
+ Text [ french ] = "Imprimer le cadre" ;
+ Text [ dutch ] = "Kader afdrukken" ;
+ Text [ portuguese ] = "Imprimir moldura" ;
+ Text[ chinese_simplified ] = "´òÓ¡±ß¿ò";
+ Text[ russian ] = "Ïå÷àòü ðàìîê";
+ Text[ polish ] = "Drukuj ramkê";
+ Text[ japanese ] = "˜g‚̈óü";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¦C¦LÃä®Ø";
+ Text[ arabic ] = "ØÈÇÚÉ ÅØÇÑ";
+ Text[ greek ] = "Åêôýðùóç ðëáéóßïõ";
+ Text[ korean ] = "°æ°è¼± Àμâ";
+ Text[ turkish ] = "Çerçeveyi yazdýr";
+ };
+ CheckBox CB_TWOWAY
+ {
+ Pos = MAP_APPFONT ( 12 , 157 ) ;
+ Size = MAP_APPFONT (160 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zurückkopieren : Zur³ckkopieren */
+ Text = "Zurückkopieren" ;
+ Text [ ENGLISH ] = "Copy back" ;
+ Text [ english_us ] = "Copy back" ;
+ Text [ portuguese_brazilian ] = "Zur³ckkopieren" ;
+ Text [ swedish ] = "Kopiera tillbaka" ;
+ Text [ danish ] = "Kopier tilbage" ;
+ Text [ italian ] = "Ricopia all'indietro" ;
+ Text [ spanish ] = "Actualizar escenario con valores modificados" ;
+ Text [ french ] = "Recopier" ;
+ Text [ dutch ] = "Terugkopiëren" ;
+ Text [ portuguese ] = "Actualizar cenário com os valores da folha modificados" ;
+ Text[ chinese_simplified ] = "¸üй¤×÷±í·½°¸";
+ Text[ russian ] = "Îáðàòíîå êîïèðîâàíèå";
+ Text[ polish ] = "Kopiuj z powrotem";
+ Text[ japanese ] = "Œ³‚Ì’l‚É–ß‚·";
+ Text[ chinese_traditional ] = "§ó·s¤u§@ªí¤è®×";
+ Text[ arabic ] = "ÅÚÇÏÉ ÇáäÓÎ";
+ Text[ greek ] = "ÁíôéãñáöÞ ðßóù";
+ Text[ korean ] = "µÚ·Î º¹»ç";
+ Text[ turkish ] = "Geri kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_ATTRIB
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 20 , 243 ) ;
+ Size = MAP_APPFONT ( 83 , 10 ) ;
+ Text = "Attribute" ;
+ Text [ ENGLISH ] = "Atributes" ;
+ Text [ english_us ] = "Attributes" ;
+ Text [ portuguese_brazilian ] = "Attribute" ;
+ Text [ swedish ] = "Attribut" ;
+ Text [ danish ] = "Attributter" ;
+ Text [ italian ] = "Attributi" ;
+ Text [ spanish ] = "Atributos" ;
+ Text [ french ] = "Attributs" ;
+ Text [ dutch ] = "Attributen" ;
+ Text [ portuguese ] = "Atributos" ;
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ russian ] = "Àòðèáóòû";
+ Text[ polish ] = "Atrybuty";
+ Text[ japanese ] = "‘®«";
+ Text[ chinese_traditional ] = "ÄÝ©Ê";
+ Text[ arabic ] = "ÇáÓãÇÊ";
+ Text[ greek ] = "Éäéüôçôåò";
+ Text[ korean ] = "¼Ó¼º";
+ Text[ turkish ] = "Öznitelik";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_VALUE
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 230 , 243 ) ;
+ Size = MAP_APPFONT ( 83 , 10 ) ;
+ Text = "Nur Werte kopieren" ;
+ Text [ ENGLISH ] = "Copy values only" ;
+ Text [ english_us ] = "Copy values only" ;
+ Text [ portuguese_brazilian ] = "Nur Werte kopieren" ;
+ Text [ swedish ] = "Kopiera endast värden" ;
+ Text [ danish ] = "Kopier kun værdier" ;
+ Text [ italian ] = "Copia solo i valori" ;
+ Text [ spanish ] = "Copiar solo valores" ;
+ Text [ french ] = "Ne copier que les valeurs" ;
+ Text [ dutch ] = "Alleen waarden kopiëren" ;
+ Text [ portuguese ] = "Copiar só valores" ;
+ Text[ chinese_simplified ] = "Ö»¸´ÖÆÊýÖµ";
+ Text[ russian ] = "Êîïèðîâàòü òîëüêî çíà÷åíèÿ";
+ Text[ polish ] = "Kopiuj tylko wartoœci";
+ Text[ japanese ] = "”’l‚̂ݺËß°";
+ Text[ chinese_traditional ] = "¥u½Æ»s¼Æ­È";
+ Text[ arabic ] = "äÓÎ ÇáÞíã ÝÞØ";
+ Text[ greek ] = "ÁíôéãñáöÞ ìüíï ôùí ôéìþí";
+ Text[ korean ] = "°ª¸¸ º¹»ç";
+ Text[ turkish ] = "Yalnýzca deðerleri kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_COPYALL
+ {
+ Pos = MAP_APPFONT ( 12 , 170 ) ;
+ Size = MAP_APPFONT ( 95 , 10 ) ;
+ Text = "Ganze Tabelle kopieren" ;
+ Text [ ENGLISH ] = "Copy entire sheet" ;
+ Text [ english_us ] = "Copy entire sheet" ;
+ Text [ portuguese_brazilian ] = "Ganze Tabelle kopieren" ;
+ Text [ swedish ] = "Kopiera hel tabell" ;
+ Text [ danish ] = "Kopier hele arket" ;
+ Text [ italian ] = "Copia intera tabella" ;
+ Text [ spanish ] = "Copiar toda la hoja" ;
+ Text [ french ] = "Copier la feuille entière" ;
+ Text [ dutch ] = "Hele tabel kopiëren" ;
+ Text [ portuguese ] = "Copiar tabela inteira" ;
+ Text[ chinese_simplified ] = "¸´ÖÆÕû¸ö¹¤×÷±í";
+ Text[ russian ] = "Êîïèðîâàòü âñþ òàáëèöó";
+ Text[ polish ] = "Kopiuj ca³¹ tabelê";
+ Text[ japanese ] = "•\\‘S‘Ì‚ðºËß°";
+ Text[ chinese_traditional ] = "½Æ»s¾ã­Ó¤u§@ªí";
+ Text[ arabic ] = "äÓÎ ßá ÇáÌÏæá";
+ Text[ greek ] = "ÁíôéãñáöÞ ïëüêëçñïõ ðßíáêá";
+ Text[ korean ] = "Àüü ½ÃÆ® º¹»ç";
+ Text[ turkish ] = "Tablonun tümünü kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_EDIT
+ {
+ Text = "Szenario bearbeiten" ;
+ Text [ ENGLISH ] = "Edit Scenario" ;
+ Text [ portuguese ] = "Editar Cenário" ;
+ Text [ english_us ] = "Edit Scenario" ;
+ Text [ portuguese_brazilian ] = "Szenario bearbeiten" ;
+ Text [ swedish ] = "Bearbeta scenario" ;
+ Text [ danish ] = "Rediger scenarie" ;
+ Text [ italian ] = "Modifica scenario" ;
+ Text [ spanish ] = "Editar escenario" ;
+ Text [ french ] = "Modifier scénario" ;
+ Text [ dutch ] = "Scenario bewerken" ;
+ Text[ chinese_simplified ] = "±à¼­·½°¸";
+ Text[ russian ] = "Ïðàâêà ñöåíàðèÿ";
+ Text[ polish ] = "Edytuj scenariusz";
+ Text[ japanese ] = "¼Åص‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è¤è®×";
+ Text[ arabic ] = "ÊÍÑíÑ ÇáÓíäÇÑíæ";
+ Text[ greek ] = "Åðåîåñãáóßá óåíáñßïõ";
+ Text[ korean ] = "½Ã³ª¸®¿À ÆíÁý";
+ Text[ turkish ] = "Senaryoyu düzenle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CREATEDBY
+ {
+ Text = "Angelegt von" ;
+ Text [ ENGLISH ] = "Created by" ;
+ Text [ NORWEGIAN ] = "Laget av" ;
+ Text [ DANISH ] = "Oprettet af" ;
+ Text [ ENGLISH_US ] = "Created by" ;
+ Text [ SPANISH ] = "Creado por" ;
+ Text [ FINNISH ] = "Tekijõ" ;
+ Text [ FRENCH ] = "Créé par" ;
+ Text [ ITALIAN ] = "Creato da" ;
+ Text [ DUTCH ] = "Gemaakt door" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Criado por" ;
+ Text [ SWEDISH ] = "Skapat av" ;
+ Text [ PORTUGUESE ] = "Criado por" ;
+ Text[ chinese_simplified ] = "×÷Õß";
+ Text[ russian ] = "Ñîçäàíî";
+ Text[ polish ] = "Utworzony przez";
+ Text[ japanese ] = "쬎Ò";
+ Text[ chinese_traditional ] = "§@ªÌ";
+ Text[ arabic ] = "ÃäÔà ÇáÓíäÇÑíæ";
+ Text[ greek ] = "ÄçìéïõñãÞèçêå áðü";
+ Text[ korean ] = "·Î ¸¸µé±â";
+ Text[ turkish ] = "Yazan";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ON
+ {
+ Text = "am" ;
+ Text [ ENGLISH ] = "on" ;
+ Text [ NORWEGIAN ] = "pÕ" ;
+ Text [ DANISH ] = "den" ;
+ Text [ ENGLISH_US ] = "on" ;
+ Text [ SPANISH ] = "en" ;
+ Text [ FINNISH ] = "on" ;
+ Text [ FRENCH ] = "le" ;
+ Text [ ITALIAN ] = "il" ;
+ Text [ DUTCH ] = "op" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "em" ;
+ Text [ SWEDISH ] = "den" ;
+ Text [ PORTUGUESE ] = "em" ;
+ Text[ chinese_simplified ] = "ÈÕÆÚ£º";
+ Text[ russian ] = "â";
+ Text[ polish ] = "dnia";
+ Text[ japanese ] = "“ú•t";
+ Text[ chinese_traditional ] = "¤é´Á¡G";
+ Text[ arabic ] = "ÈÊÇÑíÎ";
+ Text[ greek ] = "ôéò";
+ Text[ korean ] = "À§Ä¡";
+ Text[ turkish ] = "tarih:";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_NAME
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 180 , 30 ) ;
+ Text = "Name des Szenarios" ;
+ Text [ ENGLISH ] = "Szenario Name" ;
+ Text [ ENGLISH_US ] = "Name of scenario";
+ Text[ italian ] = "Nome dello scenario";
+ Text[ portuguese_brazilian ] = "Name des Szenarios";
+ Text[ portuguese ] = "Nome do cenário";
+ Text[ danish ] = "Scenariets navn";
+ Text[ french ] = "Nom du scénario";
+ Text[ swedish ] = "Namn på scenariot";
+ Text[ dutch ] = "Naam van het scenario";
+ Text[ spanish ] = "Nombre del escenario";
+ Text[ chinese_simplified ] = "·½°¸Ãû³Æ";
+ Text[ russian ] = "Íàçâàíèå ñöåíàðèÿ";
+ Text[ polish ] = "Nazwa scenariusza";
+ Text[ japanese ] = "¼Åص–¼";
+ Text[ chinese_traditional ] = "¤ÀªRÂÅ¥»ªº¦WºÙ";
+ Text[ arabic ] = "ÇÓã ÇáÓíäÇÑíæ";
+ Text[ greek ] = "¼íïìá óåíáñßïõ";
+ Text[ korean ] = "½Ã³ª¸®¿À À̸§";
+ Text[ turkish ] = "Senaryonun adý";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_COMMENT
+ {
+ Pos = MAP_APPFONT ( 7 , 42 ) ;
+ Size = MAP_APPFONT ( 180 , 64 ) ;
+ Text = "Kommentar" ;
+ Text [ ENGLISH ] = "Comment" ;
+ Text [ ENGLISH_US ] = "Comment";
+ Text[ italian ] = "Commento";
+ Text[ portuguese_brazilian ] = "Kommentar";
+ Text[ portuguese ] = "Comentário";
+ Text[ danish ] = "Kommentar";
+ Text[ french ] = "Commentaire";
+ Text[ swedish ] = "Kommentar";
+ Text[ dutch ] = "Commentaar";
+ Text[ spanish ] = "Comentario";
+ Text[ chinese_simplified ] = "×¢½â";
+ Text[ russian ] = "Êîììåíòàðèé";
+ Text[ polish ] = "Komentarz";
+ Text[ japanese ] = "ºÒÝÄ";
+ Text[ chinese_traditional ] = "ª`¸Ñ";
+ Text[ arabic ] = "ÇáÊÚáíÞ";
+ Text[ greek ] = "Ó÷üëéï";
+ Text[ korean ] = "¸Þ¸ð";
+ Text[ turkish ] = "Açýklama";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_OPTIONS
+ {
+ Pos = MAP_APPFONT ( 6 , 114 ) ;
+ Size = MAP_APPFONT ( 180 , 73 ) ;
+ Text = "Einstellungen" ;
+ Text [ ENGLISH ] = "Additional settings" ;
+ Text [ ENGLISH_US ] = "Settings";
+ Text[ italian ] = "Impostazioni";
+ Text[ portuguese_brazilian ] = "Einstellungen";
+ Text[ portuguese ] = "Predefinições";
+ Text[ danish ] = "Indstillinger";
+ Text[ french ] = "Paramètres";
+ Text[ swedish ] = "Inställningar";
+ Text[ dutch ] = "Instellingen";
+ Text[ spanish ] = "Configuración";
+ Text[ chinese_simplified ] = "É趨";
+ Text[ russian ] = "Íàñòðîéêè";
+ Text[ polish ] = "Ustawienia";
+ Text[ japanese ] = "Ý’è";
+ Text[ chinese_traditional ] = "³]©w";
+ Text[ arabic ] = "ÅÚÏÇÏÇÊ";
+ Text[ greek ] = "Ñõèìßóåéò";
+ Text[ korean ] = "¼³Á¤";
+ Text[ turkish ] = "Ayarlar";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "½¨Á¢·½°¸";
+ Text[ russian ] = "Ñîçäàòü ñöåíàðèé";
+ Text[ polish ] = "Utwórz scenariusz";
+ Text[ japanese ] = "¼Åص‚Ìì¬";
+ Text[ chinese_traditional ] = "«Ø¥ß¤è®×";
+ Text[ arabic ] = "ÅäÔÇÁ ÓíäÇÑíæ";
+ Text[ greek ] = "Äçìéïõñãßá óåíáñßïõ";
+ Text[ korean ] = "½Ã³ª¸®¿À ¸¸µé±â";
+ Text[ turkish ] = "Senaryo oluþtur";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/dbgui/sfiltdlg.cxx b/sc/source/ui/dbgui/sfiltdlg.cxx
new file mode 100644
index 000000000000..e46cb14975ad
--- /dev/null
+++ b/sc/source/ui/dbgui/sfiltdlg.cxx
@@ -0,0 +1,743 @@
+/*************************************************************************
+ *
+ * $RCSfile: sfiltdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes ---------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE -------------------------------------------------------------------
+
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+
+#include "uiitems.hxx"
+#include "rangenam.hxx"
+#include "dbcolect.hxx"
+#include "reffact.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+
+#include "foptmgr.hxx"
+
+#include "globstr.hrc"
+#include "filter.hrc"
+
+#define _SFILTDLG_CXX
+#include "filtdlg.hxx"
+#undef _SFILTDLG_CXX
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+// DEFINE --------------------------------------------------------------------
+
+#define ERRORBOX(rid) ErrorBox( this, WinBits( WB_OK|WB_DEF_OK),\
+ ScGlobal::GetRscString(rid) ).Execute()
+
+SEG_EOFGLOBALS()
+
+
+//============================================================================
+// class ScSpecialFilterDialog
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(sfiltdlg_01)
+
+ScSpecialFilterDlg::ScSpecialFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ const SfxItemSet& rArgSet )
+
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_SPEC_FILTER ),
+ //
+ _INIT_COMMON_FILTER_RSCOBJS
+ //
+ aLbFilterArea ( this, ScResId( LB_CRITERIA_AREA ) ),
+ aFtFilterArea ( this, ScResId( FT_CRITERIA_AREA ) ),
+ aEdFilterArea ( this, ScResId( ED_CRITERIA_AREA ) ),
+ aRbFilterArea ( this, ScResId( RB_CRITERIA_AREA ), &aEdFilterArea ),
+ //
+ nWhichQuery ( rArgSet.GetPool()->GetWhich( SID_QUERY ) ),
+ theQueryData ( ((const ScQueryItem&)
+ rArgSet.Get( nWhichQuery )).GetQueryData() ),
+ pOutItem ( NULL ),
+ pOptionsMgr ( NULL ),
+ pViewData ( NULL ),
+ pDoc ( NULL ),
+ pRefInputEdit ( NULL ),
+ bRefInputMode ( FALSE ),
+ pTimer ( NULL )
+{
+ Init( rArgSet );
+ aEdFilterArea.GrabFocus();
+
+ FreeResource();
+
+ // Hack: RefInput-Kontrolle
+ pTimer = new Timer;
+ pTimer->SetTimeout( 50 ); // 50ms warten
+ pTimer->SetTimeoutHdl( LINK( this, ScSpecialFilterDlg, TimeOutHdl ) );
+ pTimer->Start();
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(sfiltdlg_02)
+
+__EXPORT ScSpecialFilterDlg::~ScSpecialFilterDlg()
+{
+ USHORT nEntries = aLbFilterArea.GetEntryCount();
+ USHORT i;
+
+ for ( i=1; i<nEntries; i++ )
+ delete (String*)aLbFilterArea.GetEntryData( i );
+
+ delete pOptionsMgr;
+
+ if ( pOutItem )
+ delete pOutItem;
+
+ // Hack: RefInput-Kontrolle
+ pTimer->Stop();
+ delete pTimer;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(sfiltdlg_03)
+
+void __EXPORT ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet )
+{
+ const ScQueryItem& rQueryItem = (const ScQueryItem&)
+ rArgSet.Get( nWhichQuery );
+
+ aBtnOk.SetClickHdl ( LINK( this, ScSpecialFilterDlg, EndDlgHdl ) );
+ aBtnCancel.SetClickHdl ( LINK( this, ScSpecialFilterDlg, EndDlgHdl ) );
+ aLbFilterArea.SetSelectHdl ( LINK( this, ScSpecialFilterDlg, FilterAreaSelHdl ) );
+ aEdFilterArea.SetModifyHdl ( LINK( this, ScSpecialFilterDlg, FilterAreaModHdl ) );
+
+ pViewData = rQueryItem.GetViewData();
+ pDoc = pViewData ? pViewData->GetDocument() : NULL;
+
+ aEdFilterArea.SetText( EMPTY_STRING ); // may be overwritten below
+
+ if ( pViewData && pDoc )
+ {
+ if(pDoc->GetChangeTrack()!=NULL) aBtnCopyResult.Disable();
+
+ ScRangeName* pRangeNames = pDoc->GetRangeName();
+ const USHORT nCount = pRangeNames ? pRangeNames->GetCount() : 0;
+
+ /*
+ * Aus den RangeNames des Dokumentes werden nun die
+ * gemerkt, bei denen es sich um Filter-Bereiche handelt
+ */
+
+ aLbFilterArea.Clear();
+ aLbFilterArea.InsertEntry( aStrUndefined, 0 );
+
+ if ( nCount > 0 )
+ {
+ String aString;
+ ScRangeData* pData = NULL;
+ USHORT nInsert = 0;
+
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ pData = (ScRangeData*)(pRangeNames->At( i ));
+ if ( pData )
+ {
+ if ( pData->HasType( RT_CRITERIA ) )
+ {
+ pData->GetName( aString );
+ nInsert = aLbFilterArea.InsertEntry( aString );
+ pData->GetSymbol( aString );
+ aLbFilterArea.SetEntryData( nInsert,
+ new String( aString ) );
+ }
+ }
+ }
+ }
+
+ // is there a stored source range?
+
+ ScRange aAdvSource;
+ if (rQueryItem.GetAdvancedQuerySource(aAdvSource))
+ {
+ String aRefStr;
+ aAdvSource.Format( aRefStr, SCR_ABS_3D, pDoc );
+ aEdFilterArea.SetRefString( aRefStr );
+ }
+ }
+
+ aLbFilterArea.SelectEntryPos( 0 );
+
+ // Optionen initialisieren lassen:
+
+ pOptionsMgr = new ScFilterOptionsMgr(
+ this,
+ pViewData,
+ theQueryData,
+ aBtnMore,
+ aBtnCase,
+ aBtnRegExp,
+ aBtnHeader,
+ aBtnUnique,
+ aBtnCopyResult,
+ aBtnDestPers,
+ aLbCopyArea,
+ aEdCopyArea,
+ aRbCopyArea,
+ aFtDbAreaLabel,
+ aFtDbArea,
+ aGbOptions,
+ aStrNoName,
+ aStrUndefined );
+
+ // #35206# Spezialfilter braucht immer Spaltenkoepfe
+ aBtnHeader.Check(TRUE);
+ aBtnHeader.Disable();
+
+ // Modal-Modus einschalten
+// SFX_APP()->LockDispatcher( TRUE );
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(sfiltdlg_04)
+
+BOOL __EXPORT ScSpecialFilterDlg::Close()
+{
+ return DoClose( ScSpecialFilterDlgWrapper::GetChildWindowId() );
+}
+
+
+//----------------------------------------------------------------------------
+// Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als
+// neue Selektion im Referenz-Edit angezeigt wird.
+
+#pragma SEG_FUNCDEF(sfiltdlg_05)
+
+void ScSpecialFilterDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( bRefInputMode && pRefInputEdit ) // Nur moeglich, wenn im Referenz-Editmodus
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart( pRefInputEdit );
+
+ String aRefStr;
+
+ if ( pRefInputEdit == &aEdCopyArea)
+ rRef.aStart.Format( aRefStr, SCA_ABS_3D, pDoc );
+ else if ( pRefInputEdit == &aEdFilterArea)
+ rRef.Format( aRefStr, SCR_ABS_3D, pDoc );
+
+ pRefInputEdit->SetRefString( aRefStr );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(sfiltdlg_06)
+
+void ScSpecialFilterDlg::SetActive()
+{
+ if ( bRefInputMode )
+ {
+ if ( pRefInputEdit == &aEdCopyArea )
+ {
+ aEdCopyArea.GrabFocus();
+ if ( aEdCopyArea.GetModifyHdl().IsSet() )
+ ((Link&)aEdCopyArea.GetModifyHdl()).Call( &aEdCopyArea );
+ }
+ else if ( pRefInputEdit == &aEdFilterArea )
+ {
+ aEdFilterArea.GrabFocus();
+ FilterAreaModHdl( &aEdFilterArea );
+ }
+ }
+ else
+ GrabFocus();
+
+ RefInputDone();
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(sfiltdlg_08)
+
+ScQueryItem* ScSpecialFilterDlg::GetOutputItem( const ScQueryParam& rParam,
+ const ScRange& rSource )
+{
+ if ( pOutItem ) DELETEZ( pOutItem );
+ pOutItem = new ScQueryItem( nWhichQuery, &rParam );
+ pOutItem->SetAdvancedQuerySource( &rSource );
+
+ return pOutItem;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(sfiltdlg_0e)
+
+BOOL ScSpecialFilterDlg::IsRefInputMode() const
+{
+ return bRefInputMode;
+}
+
+
+//----------------------------------------------------------------------------
+// Handler:
+// ========
+#pragma SEG_FUNCDEF(sfiltdlg_09)
+
+IMPL_LINK( ScSpecialFilterDlg, EndDlgHdl, Button*, pBtn )
+{
+ DBG_ASSERT( pDoc && pViewData, "Document or ViewData not found. :-/" );
+
+ if ( (pBtn == &aBtnOk) && pDoc && pViewData )
+ {
+ String theCopyStr( aEdCopyArea.GetText() );
+ String theAreaStr( aEdFilterArea.GetText() );
+ ScQueryParam theOutParam( theQueryData );
+ ScAddress theAdrCopy;
+ BOOL bEditInputOk = TRUE;
+ BOOL bQueryOk = FALSE;
+ USHORT nCurTab = pViewData->GetTabNo();
+ ScRange theFilterArea;
+
+ if ( aBtnCopyResult.IsChecked() )
+ {
+ xub_StrLen nColonPos = theCopyStr.Search( ':' );
+
+ if ( STRING_NOTFOUND != nColonPos )
+ theCopyStr.Erase( nColonPos );
+
+ USHORT nResult = theAdrCopy.Parse( theCopyStr, pDoc );
+
+ if ( SCA_VALID != (nResult & SCA_VALID) )
+ {
+ if ( !aBtnMore.GetState() )
+ aBtnMore.SetState( TRUE );
+
+ ERRORBOX( STR_INVALID_TABREF );
+ aEdCopyArea.GrabFocus();
+ bEditInputOk = FALSE;
+ }
+ }
+
+ if ( bEditInputOk )
+ {
+ USHORT nResult = ScRange().Parse( theAreaStr, pDoc );
+
+ if ( SCA_VALID != (nResult & SCA_VALID) )
+ {
+ ERRORBOX( STR_INVALID_TABREF );
+ aEdFilterArea.GrabFocus();
+ bEditInputOk = FALSE;
+ }
+ }
+
+ if ( bEditInputOk )
+ {
+ /*
+ * Alle Edit-Felder enthalten gueltige Bereiche.
+ * Nun wird versucht aus dem Filterbereich
+ * ein ScQueryParam zu erzeugen:
+ */
+
+ USHORT nResult = theFilterArea.Parse( theAreaStr, pDoc );
+
+ if ( SCA_VALID == (nResult & SCA_VALID) )
+ {
+ ScAddress& rStart = theFilterArea.aStart;
+ ScAddress& rEnd = theFilterArea.aEnd;
+
+ if ( aBtnCopyResult.IsChecked() )
+ {
+ theOutParam.bInplace = FALSE;
+ theOutParam.nDestTab = theAdrCopy.Tab();
+ theOutParam.nDestCol = theAdrCopy.Col();
+ theOutParam.nDestRow = theAdrCopy.Row();
+ }
+ else
+ {
+ theOutParam.bInplace = TRUE;
+ theOutParam.nDestTab =
+ theOutParam.nDestCol =
+ theOutParam.nDestRow = 0;
+ }
+
+ theOutParam.bHasHeader = aBtnHeader.IsChecked();
+ theOutParam.bByRow = TRUE;
+ theOutParam.bCaseSens = aBtnCase.IsChecked();
+ theOutParam.bRegExp = aBtnRegExp.IsChecked();
+ theOutParam.bDuplicate = !aBtnUnique.IsChecked();
+ theOutParam.bDestPers = aBtnDestPers.IsChecked();
+
+ bQueryOk =
+ pDoc->CreateQueryParam( rStart.Col(),
+ rStart.Row(),
+ rEnd.Col(),
+ rEnd.Row(),
+ rStart.Tab(),
+ theOutParam );
+
+ // an der DB-Collection koennen nur MAXQUERY Filter-Eintraege
+ // gespeichert werden
+
+ if ( bQueryOk && theOutParam.GetEntryCount() > MAXQUERY &&
+ theOutParam.GetEntry(MAXQUERY).bDoQuery )
+ {
+ bQueryOk = FALSE; // zu viele
+ //! andere Fehlermeldung ??
+ }
+ }
+ }
+
+ if ( bQueryOk )
+ {
+ SFX_APP()->LockDispatcher( FALSE );
+ SwitchToDocument();
+ SFX_DISPATCHER().Execute( FID_FILTER_OK, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ GetOutputItem( theOutParam, theFilterArea ), 0L, 0L );
+ Close();
+ }
+ else
+ {
+ ERRORBOX( STR_INVALID_QUERYAREA );
+ aEdFilterArea.GrabFocus();
+ }
+ }
+ else if ( pBtn == &aBtnCancel )
+ {
+ Close();
+ }
+
+ return NULL;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(sfiltdlg_0b)
+
+IMPL_LINK( ScSpecialFilterDlg, TimeOutHdl, Timer*, _pTimer )
+{
+ // alle 50ms nachschauen, ob RefInputMode noch stimmt
+
+ if ( _pTimer == pTimer && IsActive() )
+ {
+ if ( aEdCopyArea.HasFocus() || aEdFilterArea.HasFocus() )
+ {
+ pRefInputEdit = aEdCopyArea.HasFocus()
+ ? &aEdCopyArea
+ : &aEdFilterArea;
+
+ if ( !bRefInputMode )
+ {
+
+ bRefInputMode = TRUE;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable(); // Mauseingabe im Tabellenfenster zulassen
+ }
+ }
+ else
+ {
+ if ( bRefInputMode )
+ {
+ pRefInputEdit = NULL;
+ bRefInputMode = FALSE;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+ }
+ }
+ }
+
+ pTimer->Start();
+
+ return NULL;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(sfiltdlg_0c)
+
+IMPL_LINK( ScSpecialFilterDlg, FilterAreaSelHdl, ListBox*, pLb )
+{
+ if ( pLb == &aLbFilterArea )
+ {
+ String aString;
+ USHORT nSelPos = aLbFilterArea.GetSelectEntryPos();
+
+ if ( nSelPos > 0 )
+ aString = *(String*)aLbFilterArea.GetEntryData( nSelPos );
+
+ aEdFilterArea.SetText( aString );
+ }
+
+ return NULL;
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(sfiltdlg_0d)
+
+IMPL_LINK( ScSpecialFilterDlg, FilterAreaModHdl, ScRefEdit*, pEd )
+{
+ if ( pEd == &aEdFilterArea )
+ {
+ if ( pDoc && pViewData )
+ {
+ String theCurAreaStr = pEd->GetText();
+ USHORT nResult = ScRange().Parse( theCurAreaStr, pDoc );
+
+ if ( SCA_VALID == (nResult & SCA_VALID) )
+ {
+ String* pStr = NULL;
+ BOOL bFound = FALSE;
+ USHORT i = 0;
+ USHORT nCount = aLbFilterArea.GetEntryCount();
+
+ for ( i=1; i<nCount && !bFound; i++ )
+ {
+ pStr = (String*)aLbFilterArea.GetEntryData( i );
+ bFound = (theCurAreaStr == *pStr);
+ }
+
+ if ( bFound )
+ aLbFilterArea.SelectEntryPos( --i );
+ else
+ aLbFilterArea.SelectEntryPos( 0 );
+ }
+ }
+ else
+ aLbFilterArea.SelectEntryPos( 0 );
+ }
+
+ return NULL;
+}
+
+
+/*----------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.47 2000/09/17 14:08:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.46 2000/08/31 16:38:21 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.45 2000/06/06 17:37:28 nn
+ SpecialFilterDlg: source range in item
+
+ Revision 1.44 2000/04/14 17:38:03 nn
+ unicode changes
+
+ Revision 1.43 2000/01/17 19:21:36 nn
+ #67336# SwitchToDocument
+
+ Revision 1.42 1999/06/09 16:09:04 NN
+ Sfx-appwin removed
+
+
+ Rev 1.41 09 Jun 1999 18:09:04 NN
+ Sfx-appwin removed
+
+ Rev 1.40 10 Dec 1998 20:16:40 ANK
+ #51738# Umstellung auf ScRefEdit zum Anzeigen von Referenzen
+
+ Rev 1.39 14 Sep 1998 20:58:06 ANK
+ #55978# Ausgabebereich disablen bei Redlining
+
+ Rev 1.38 12 Aug 1998 19:47:34 ANK
+ #54702# IsRefInputMode ueberarbeitet
+
+ Rev 1.37 06 Aug 1998 21:18:30 ANK
+ #54702# Enablen/Disablen der Applikation nur noch in ScAnyRefDlg
+
+ Rev 1.36 15 Mar 1998 14:23:32 NN
+ App-Fenster disablen mit bChild=FALSE
+
+ Rev 1.35 30 Sep 1997 13:08:58 TJ
+ include
+
+ Rev 1.34 03 Sep 1997 15:18:54 RG
+ change header
+
+ Rev 1.33 11 Apr 1997 15:50:42 NN
+ #35206# Spaltenkoepfe fuer Spezialfilter disabled
+
+ Rev 1.32 15 Feb 1997 17:36:30 NN
+ Checkbox 'persistent' fuer Ausgabe-Bereich
+
+ Rev 1.31 13 Nov 1996 20:11:26 NN
+ #33143# AutoHide nur bei Bereichsreferenz
+
+ Rev 1.30 13 Nov 1996 11:33:22 NN
+ ScQueryParam mit dynamischen Eintraegen
+
+ Rev 1.29 05 Nov 1996 14:50:16 NN
+ ScApplication gibts nicht mehr
+
+ Rev 1.28 29 Oct 1996 14:03:56 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.27 22 Oct 1996 15:32:18 RJ
+ Buttons fuer Referenzeingabe
+
+ Rev 1.26 04 Oct 1996 17:23:12 RJ
+ Einklappen des Fensters bei Referenzeingabe
+
+ Rev 1.25 27 Jun 1996 11:49:30 NN
+ Dispatcher::Execute Umstellung
+
+ Rev 1.24 05 Jun 1996 19:19:30 NN
+ kein Show im ctor (Position wird von aussen gesetzt)
+
+ Rev 1.23 26 Apr 1996 12:02:42 NN
+ SfxModelessDialog statt ModelessDialog
+
+ Rev 1.22 26 Apr 1996 10:52:40 NN
+ neues SetReference auch fuer SpecialFilterDlg
+
+ Rev 1.21 18 Jan 1996 11:45:32 MO
+ unbennant-Eintrag wieder sichtbar, neuer Link
+
+ Rev 1.20 27 Nov 1995 13:42:12 MO
+ RangeUtil/Area/Tripel gegen Address/Range ersetzt
+
+ Rev 1.19 09 Nov 1995 10:20:12 JN
+ weitere Verbesseungen Modeless Dialoge
+
+ Rev 1.18 08 Nov 1995 13:06:24 MO
+ 301-Aenderungen
+
+ Rev 1.17 08 Nov 1995 10:45:46 JN
+ Umstellung auf SfxChildWindow
+
+ Rev 1.16 18 Sep 1995 10:07:54 MO
+ bRefInput-Kontrolle ueber Timer
+
+ Rev 1.15 24 Jul 1995 14:13:28 MO
+ EXPORT
+
+ Rev 1.14 24 Apr 1995 12:49:36 MO
+ Dispatcher Unlock vor Execute
+
+ Rev 1.13 18 Apr 1995 10:02:48 MO
+ Referenzeingabe mit Maus ueberarbeitet
+
+ Rev 1.12 02 Mar 1995 16:20:26 MO
+ InfoBoxen mit Rsc-Strings
+
+ Rev 1.11 08 Feb 1995 12:56:10 MO
+ * Dispatcher-Execute: 0L angehaengt (sonst uneindeutig)
+
+ Rev 1.10 08 Feb 1995 10:27:26 MO
+ * Mac-Anpassungen
+
+
+ Rev 1.9 03 Feb 1995 12:42:44 MO
+ * Ctor: Show
+
+ Rev 1.8 27 Jan 1995 16:15:54 MO
+ * Umstellung auf Slot-IDs
+
+ Rev 1.7 26 Jan 1995 19:02:40 TRI
+ __EXPORT bei virtuellen Methoden eingebaut
+
+ Rev 1.6 25 Jan 1995 18:54:26 MO
+ * Mauseingabe von Bereichen im Filter-Edit wieder moeglich
+
+ Rev 1.5 25 Jan 1995 12:55:50 MO
+ * Einzelne Zellposition als Kopierziel (SetReferenz und Ueberpruefungen)
+
+ Rev 1.4 19 Jan 1995 17:08:02 TRI
+ __EXPORT vor verschiedene LinkHandler gesetzt
+
+ Rev 1.3 18 Jan 1995 13:56:26 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.2 17 Jan 1995 11:59:40 MO
+ Erzeugen des OutPut-Items in EndDlgHdl/GetOutputItem
+
+ Rev 1.1 16 Jan 1995 14:26:14 MO
+ Einlesen von Filterbereichsnamen mit Selektion/Modify
+ Fehlerbehandlung von ungueltigen Bereichsnamen im EndDlg-Handler
+
+ Rev 1.0 13 Jan 1995 17:32:24 MO
+ Initial revision.
+
+----------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/sortdlg.cxx b/sc/source/ui/dbgui/sortdlg.cxx
new file mode 100644
index 000000000000..f894fa206c71
--- /dev/null
+++ b/sc/source/ui/dbgui/sortdlg.cxx
@@ -0,0 +1,150 @@
+/*************************************************************************
+ *
+ * $RCSfile: sortdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+#include "tpsort.hxx"
+#include "sortdlg.hxx"
+#include "scresid.hxx"
+#include "sortdlg.hrc"
+
+#pragma hdrstop
+
+SEG_EOFGLOBALS()
+
+//==================================================================
+#pragma SEG_FUNCDEF(sortdlg_01)
+
+ScSortDlg::ScSortDlg( Window* pParent,
+ const SfxItemSet* pArgSet ) :
+ SfxTabDialog( pParent,
+ ScResId( RID_SCDLG_SORT ),
+ pArgSet ),
+ bIsHeaders ( FALSE ),
+ bIsByRows ( FALSE )
+
+{
+ AddTabPage( TP_FIELDS, ScTabPageSortFields::Create, 0 );
+ AddTabPage( TP_OPTIONS, ScTabPageSortOptions::Create, 0 );
+ FreeResource();
+}
+
+#pragma SEG_FUNCDEF(sortdlg_02)
+
+__EXPORT ScSortDlg::~ScSortDlg()
+{
+}
+
+// -----------------------------------------------------------------------
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.11 2000/09/17 14:08:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.10 2000/08/31 16:38:21 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.9 1996/10/29 13:04:12 NN
+ ueberall ScResId statt ResId
+
+
+ Rev 1.8 29 Oct 1996 14:04:12 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.7 27 Jan 1995 12:37:44 TRI
+ __EXPORT bei virtuellen Methoden eingebaut
+
+ Rev 1.6 25 Jan 1995 18:23:28 MO
+ tpsort.hxx-include
+
+ Rev 1.5 24 Jan 1995 21:04:08 MO
+ TP_FIELDS/TP_OPTIONS anstatt Res-Ids der Pages
+
+ Rev 1.4 22 Jan 1995 15:10:12 SC
+ 2.37 Anpassung
+
+ Rev 1.3 18 Jan 1995 13:56:24 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.2 21 Dec 1994 18:17:52 MO
+ Dialog fungiert als Vermittler zwischen den beiden TabPages.
+ -> zusaetzliche Datenmember+Zugriffsfunktionen
+
+ Rev 1.1 14 Dec 1994 13:51:58 MO
+ Globale ResIds jetzt in sc.hrc
+
+ Rev 1.0 13 Dec 1994 20:51:10 MO
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/subtdlg.cxx b/sc/source/ui/dbgui/subtdlg.cxx
new file mode 100644
index 000000000000..bc1717495e9d
--- /dev/null
+++ b/sc/source/ui/dbgui/subtdlg.cxx
@@ -0,0 +1,152 @@
+/*************************************************************************
+ *
+ * $RCSfile: subtdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include "segmentc.hxx"
+#endif
+
+#include "tpsubt.hxx"
+#include "scresid.hxx"
+#include "subtdlg.hxx"
+#include "subtdlg.hrc"
+
+#pragma hdrstop
+
+SEG_EOFGLOBALS()
+//==================================================================
+#pragma SEG_FUNCDEF(subtdlg_01)
+
+ScSubTotalDlg::ScSubTotalDlg( Window* pParent,
+ const SfxItemSet* pArgSet ) :
+ SfxTabDialog( pParent,
+ ScResId( RID_SCDLG_SUBTOTALS ),
+ pArgSet ),
+ aBtnRemove ( this, ScResId( BTN_REMOVE ) )
+{
+ AddTabPage( PAGE_GROUP1, ScTpSubTotalGroup1::Create, 0 );
+ AddTabPage( PAGE_GROUP2, ScTpSubTotalGroup2::Create, 0 );
+ AddTabPage( PAGE_GROUP3, ScTpSubTotalGroup3::Create, 0 );
+ AddTabPage( PAGE_OPTIONS, ScTpSubTotalOptions::Create, 0 );
+ aBtnRemove.SetClickHdl( LINK( this, ScSubTotalDlg, RemoveHdl ) );
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(subtdlg_02)
+
+IMPL_LINK_INLINE_START( ScSubTotalDlg, RemoveHdl, PushButton *, pBtn )
+{
+ if ( pBtn == &aBtnRemove )
+ {
+ EndDialog( SCRET_REMOVE );
+ }
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScSubTotalDlg, RemoveHdl, PushButton *, pBtn )
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.10 2000/09/17 14:08:57 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.9 2000/08/31 16:38:21 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.8 1996/10/29 13:04:12 NN
+ ueberall ScResId statt ResId
+
+
+ Rev 1.7 29 Oct 1996 14:04:12 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.6 29 Jan 1996 15:12:28 MO
+ neuer Link
+
+ Rev 1.5 08 Nov 1995 13:06:24 MO
+ 301-Aenderungen
+
+ Rev 1.4 31 Jan 1995 16:46:32 TRI
+ Pragmas zur Segmentierung eingebaut
+
+ Rev 1.3 25 Jan 1995 18:28:16 MO
+ tpsubt.hxx-include
+
+ Rev 1.2 22 Jan 1995 15:10:14 SC
+ 2.37 Anpassung
+
+ Rev 1.1 20 Jan 1995 18:33:24 MO
+ Gruppen-TabPages 2 und 3 hinzugefuegt
+ Remove-Button als Exit-Button mit Return-Wert SCRET_REMOVE
+
+ Rev 1.0 19 Jan 1995 11:42:04 MO
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/tpsort.cxx b/sc/source/ui/dbgui/tpsort.cxx
new file mode 100644
index 000000000000..d44150b16893
--- /dev/null
+++ b/sc/source/ui/dbgui/tpsort.cxx
@@ -0,0 +1,1159 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpsort.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <vcl/msgbox.hxx>
+#include <segmentc.hxx>
+#endif
+
+#include "scitems.hxx"
+#include "uiitems.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "global.hxx"
+#include "dbcolect.hxx"
+#include "userlist.hxx"
+#include "rangeutl.hxx"
+#include "scresid.hxx"
+#include "sc.hrc" // -> Slot IDs
+#include "globstr.hrc"
+
+#include "sortdlg.hxx"
+#include "sortdlg.hrc"
+
+#define _TPSORT_CXX
+#include "tpsort.hxx"
+#undef _TPSORT_CXX
+
+// STATIC DATA -----------------------------------------------------------
+
+static USHORT pSortRanges[] =
+{
+ SID_SORT,
+ SID_SORT,
+ 0
+};
+
+SEG_EOFGLOBALS()
+
+// -----------------------------------------------------------------------
+
+/*
+ * Da sich Einstellungen auf der zweiten TabPage (Optionen) auf
+ * die erste TabPage auswirken, muss es die Moeglichkeit geben,
+ * dies der jeweils anderen Seite mitzuteilen.
+ *
+ * Im Moment wird dieses Problem ueber zwei Datenmember des TabDialoges
+ * geloest. Wird eine Seite Aktiviert/Deaktiviert, so gleicht sie diese
+ * Datenmember mit dem eigenen Zustand ab (->Activate()/Deactivate()).
+ *
+ * 31.01.95:
+ * Die Klasse SfxTabPage bietet mittlerweile ein Verfahren an:
+ *
+ * virtual BOOL HasExchangeSupport() const; -> return TRUE;
+ * virtual void ActivatePage(const SfxItemSet &);
+ * virtual int DeactivatePage(SfxItemSet * = 0);
+ *
+ * muss noch geaendert werden!
+ */
+
+//========================================================================
+//========================================================================
+// Sortierkriterien-Tabpage:
+#pragma SEG_FUNCDEF(tpsort_01)
+
+ScTabPageSortFields::ScTabPageSortFields( Window* pParent,
+ const SfxItemSet& rArgSet )
+
+ : SfxTabPage ( pParent,
+ ScResId( RID_SCPAGE_SORT_FIELDS ),
+ rArgSet ),
+ //
+ aLbSort1 ( this, ScResId( LB_SORT1 ) ),
+ aBtnUp1 ( this, ScResId( BTN_UP1 ) ),
+ aBtnDown1 ( this, ScResId( BTN_DOWN1 ) ),
+ aGbSort1 ( this, ScResId( GB_SORT1 ) ),
+ //
+ aLbSort2 ( this, ScResId( LB_SORT2 ) ),
+ aBtnUp2 ( this, ScResId( BTN_UP2 ) ),
+ aBtnDown2 ( this, ScResId( BTN_DOWN2 ) ),
+ aGbSort2 ( this, ScResId( GB_SORT2 ) ),
+ //
+ aLbSort3 ( this, ScResId( LB_SORT3 ) ),
+ aBtnUp3 ( this, ScResId( BTN_UP3 ) ),
+ aBtnDown3 ( this, ScResId( BTN_DOWN3 ) ),
+ aGbSort3 ( this, ScResId( GB_SORT3 ) ),
+ aStrUndefined ( ScResId( SCSTR_UNDEFINED ) ),
+ aStrColumn ( ScResId( SCSTR_COLUMN ) ),
+ aStrRow ( ScResId( SCSTR_ROW ) ),
+ //
+ pDlg ( (ScSortDlg*)(GetParent()->GetParent()) ),
+ nWhichSort ( rArgSet.GetPool()->GetWhich( SID_SORT ) ),
+ rSortData ( ((const ScSortItem&)
+ rArgSet.Get( nWhichSort )).
+ GetSortData() ),
+ bHasHeader ( FALSE ),
+ bSortByRows ( FALSE ),
+ nFieldCount ( 0 ),
+ pViewData ( NULL )
+{
+ Init();
+ FreeResource();
+ SetExchangeSupport();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_1e)
+
+__EXPORT ScTabPageSortFields::~ScTabPageSortFields()
+{
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_02)
+
+void ScTabPageSortFields::Init()
+{
+ const ScSortItem& rSortItem = (const ScSortItem&)
+ GetItemSet().Get( nWhichSort );
+
+ pViewData = rSortItem.GetViewData();
+
+ DBG_ASSERT( pViewData, "ViewData not found!" );
+
+ nFieldArr[0] = nFirstCol = nFirstRow = 0;
+
+ aLbSort1.SetSelectHdl( LINK( this, ScTabPageSortFields, SelectHdl ) );
+ aLbSort2.SetSelectHdl( LINK( this, ScTabPageSortFields, SelectHdl ) );
+ aLbSort3.SetSelectHdl( LINK( this, ScTabPageSortFields, SelectHdl ) );
+ aLbSort1.Clear();
+ aLbSort2.Clear();
+ aLbSort3.Clear();
+
+ aSortLbArr[0] = &aLbSort1;
+ aSortLbArr[1] = &aLbSort2;
+ aSortLbArr[2] = &aLbSort3;
+ aDirBtnArr[0][0] = &aBtnUp1;
+ aDirBtnArr[0][1] = &aBtnDown1;
+ aDirBtnArr[1][0] = &aBtnUp2;
+ aDirBtnArr[1][1] = &aBtnDown2;
+ aDirBtnArr[2][0] = &aBtnUp3;
+ aDirBtnArr[2][1] = &aBtnDown3;
+ aGbArr[0] = &aGbSort1;
+ aGbArr[1] = &aGbSort2;
+ aGbArr[2] = &aGbSort3;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_1c)
+
+USHORT* __EXPORT ScTabPageSortFields::GetRanges()
+{
+ return pSortRanges;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_03)
+
+SfxTabPage* __EXPORT ScTabPageSortFields::Create( Window* pParent,
+ const SfxItemSet& rArgSet )
+{
+ return ( new ScTabPageSortFields( pParent, rArgSet ) );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_04)
+
+void __EXPORT ScTabPageSortFields::Reset( const SfxItemSet& rArgSet )
+{
+ bSortByRows = rSortData.bByRow;
+ bHasHeader = rSortData.bHasHeader;
+
+ if ( aLbSort1.GetEntryCount() == 0 )
+ FillFieldLists();
+
+ // Selektieren der ListBoxen:
+
+ if ( rSortData.bDoSort[0] )
+ {
+ for ( USHORT i=0; i<3; i++ )
+ {
+ if ( rSortData.bDoSort[i] )
+ {
+ aSortLbArr[i]->SelectEntryPos(
+ GetFieldSelPos( rSortData.nField[i] ) );
+
+ (rSortData.bAscending[i])
+ ? aDirBtnArr[i][0]->Check() // Up
+ : aDirBtnArr[i][1]->Check(); // Down
+ }
+ else
+ {
+ aSortLbArr[i]->SelectEntryPos( 0 ); // "keiner" selektieren
+ aDirBtnArr[i][0]->Check(); // Up
+ }
+ }
+
+ EnableField( 1 );
+ EnableField( 2 );
+ EnableField( 3 );
+ if ( aLbSort1.GetSelectEntryPos() == 0 )
+ DisableField( 2 );
+ if ( aLbSort2.GetSelectEntryPos() == 0 )
+ DisableField( 3 );
+ }
+ else
+ {
+ aLbSort1.SelectEntryPos( 1 );
+ aLbSort2.SelectEntryPos( 0 );
+ aLbSort3.SelectEntryPos( 0 );
+ aBtnUp1.Check();
+ aBtnUp2.Check();
+ aBtnUp3.Check();
+ EnableField ( 1 );
+ EnableField ( 2 );
+ DisableField( 3 );
+ }
+
+ if ( pDlg )
+ {
+ pDlg->SetByRows ( bSortByRows );
+ pDlg->SetHeaders( bHasHeader );
+ }
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_05)
+
+BOOL __EXPORT ScTabPageSortFields::FillItemSet( SfxItemSet& rArgSet )
+{
+ ScSortParam theSortData = rSortData;
+ if (pDlg)
+ {
+ const SfxItemSet* pExample = pDlg->GetExampleSet();
+ const SfxPoolItem* pItem;
+ if ( pExample && pExample->GetItemState( nWhichSort, TRUE, &pItem ) == SFX_ITEM_SET )
+ theSortData = ((const ScSortItem*)pItem)->GetSortData();
+ }
+
+ USHORT nSort1Pos = aLbSort1.GetSelectEntryPos();
+ USHORT nSort2Pos = aLbSort2.GetSelectEntryPos();
+ USHORT nSort3Pos = aLbSort3.GetSelectEntryPos();
+
+ DBG_ASSERT( (nSort1Pos <= SC_MAXFIELDS)
+ && (nSort2Pos <= SC_MAXFIELDS)
+ && (nSort3Pos <= SC_MAXFIELDS),
+ "Array-Range Fehler!" );
+
+ if ( nSort1Pos == LISTBOX_ENTRY_NOTFOUND ) nSort1Pos = 0;
+ if ( nSort2Pos == LISTBOX_ENTRY_NOTFOUND ) nSort2Pos = 0;
+ if ( nSort3Pos == LISTBOX_ENTRY_NOTFOUND ) nSort3Pos = 0;
+
+ if ( nSort1Pos > 0 )
+ {
+ theSortData.bDoSort[0] = (nSort1Pos > 0);
+ theSortData.bDoSort[1] = (nSort2Pos > 0);
+ theSortData.bDoSort[2] = (nSort3Pos > 0);
+
+ // wenn auf Optionen-Seite "OK" gewaehlt wurde und
+ // dabei die Sortierrichtung umgestellt wurde, so
+ // wird das erste Feld der jeweiligen Richtung als
+ // Sortierkriterium gewaehlt (steht in nFieldArr[0]):
+ if ( bSortByRows != pDlg->GetByRows() )
+ {
+ theSortData.nField[0] =
+ theSortData.nField[1] =
+ theSortData.nField[2] = ( bSortByRows ? nFirstRow : nFirstCol );
+ }
+ else
+ {
+ theSortData.nField[0] = nFieldArr[nSort1Pos];
+ theSortData.nField[1] = nFieldArr[nSort2Pos];
+ theSortData.nField[2] = nFieldArr[nSort3Pos];
+ }
+
+ theSortData.bAscending[0] = aBtnUp1.IsChecked();
+ theSortData.bAscending[1] = aBtnUp2.IsChecked();
+ theSortData.bAscending[2] = aBtnUp3.IsChecked();
+ // bHasHeader ist in ScTabPageSortOptions::FillItemSet, wo es hingehoert
+ }
+ else
+ {
+ theSortData.bDoSort[0] =
+ theSortData.bDoSort[1] =
+ theSortData.bDoSort[2] = FALSE;
+ }
+
+ rArgSet.Put( ScSortItem( SCITEM_SORTDATA, NULL, &theSortData ) );
+
+ return TRUE;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_06)
+
+// fuer Datenaustausch ohne Dialog-Umweg: (! noch zu tun !)
+// void ScTabPageSortFields::ActivatePage( const SfxItemSet& rSet )
+
+void __EXPORT ScTabPageSortFields::ActivatePage()
+{
+ if ( pDlg )
+ {
+ if ( bHasHeader != pDlg->GetHeaders()
+ || bSortByRows != pDlg->GetByRows() )
+ {
+ USHORT nCurSel1 = aLbSort1.GetSelectEntryPos();
+ USHORT nCurSel2 = aLbSort2.GetSelectEntryPos();
+ USHORT nCurSel3 = aLbSort3.GetSelectEntryPos();
+
+ bHasHeader = pDlg->GetHeaders();
+ bSortByRows = pDlg->GetByRows();
+ FillFieldLists();
+ aLbSort1.SelectEntryPos( nCurSel1 );
+ aLbSort2.SelectEntryPos( nCurSel2 );
+ aLbSort3.SelectEntryPos( nCurSel3 );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_07)
+
+int __EXPORT ScTabPageSortFields::DeactivatePage( SfxItemSet* pSet )
+{
+ if ( pDlg )
+ {
+ if ( bHasHeader != pDlg->GetHeaders() )
+ pDlg->SetHeaders( bHasHeader );
+
+ if ( bSortByRows != pDlg->GetByRows() )
+ pDlg->SetByRows( bSortByRows );
+ }
+
+ if ( pSet )
+ FillItemSet( *pSet );
+
+ return SfxTabPage::LEAVE_PAGE;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_08)
+
+void ScTabPageSortFields::DisableField( USHORT nField )
+{
+ nField--;
+
+ if ( nField>=0 && nField<=2 )
+ {
+ aSortLbArr[nField] ->Disable();
+ aDirBtnArr[nField][0]->Disable();
+ aDirBtnArr[nField][1]->Disable();
+ aGbArr[nField] ->Disable();
+ }
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_09)
+
+void ScTabPageSortFields::EnableField( USHORT nField )
+{
+ nField--;
+
+ if ( nField>=0 && nField<=2 )
+ {
+ aSortLbArr[nField] ->Enable();
+ aDirBtnArr[nField][0]->Enable();
+ aDirBtnArr[nField][1]->Enable();
+ aGbArr[nField] ->Enable();
+ }
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_0a)
+
+void ScTabPageSortFields::FillFieldLists()
+{
+ if ( pViewData )
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+
+ if ( pDoc )
+ {
+ aLbSort1.Clear();
+ aLbSort2.Clear();
+ aLbSort3.Clear();
+ aLbSort1.InsertEntry( aStrUndefined, 0 );
+ aLbSort2.InsertEntry( aStrUndefined, 0 );
+ aLbSort3.InsertEntry( aStrUndefined, 0 );
+
+ USHORT nFirstCol = rSortData.nCol1;
+ USHORT nFirstRow = rSortData.nRow1;
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT i = 1;
+
+ if ( bSortByRows )
+ {
+ String aFieldName;
+ USHORT nMaxCol = rSortData.nCol2;
+ USHORT col;
+
+ for ( col=nFirstCol; col<=nMaxCol && i<SC_MAXFIELDS; col++ )
+ {
+ pDoc->GetString( col, nFirstRow, nTab, aFieldName );
+ if ( !bHasHeader || (aFieldName.Len() == 0) )
+ {
+ aFieldName = aStrColumn;
+ aFieldName += ' ';
+ aFieldName += ColToAlpha( col );
+ }
+ nFieldArr[i] = col;
+ aLbSort1.InsertEntry( aFieldName, i );
+ aLbSort2.InsertEntry( aFieldName, i );
+ aLbSort3.InsertEntry( aFieldName, i );
+ i++;
+ }
+ }
+ else
+ {
+ String aFieldName;
+ USHORT nMaxRow = rSortData.nRow2;
+ USHORT row;
+
+ for ( row=nFirstRow; row<=nMaxRow && i<SC_MAXFIELDS; row++ )
+ {
+ pDoc->GetString( nFirstCol, row, nTab, aFieldName );
+ if ( !bHasHeader || (aFieldName.Len() == 0) )
+ {
+ aFieldName = aStrRow;
+ aFieldName += ' ';
+ aFieldName += String::CreateFromInt32( row+1 );
+ }
+ nFieldArr[i] = row;
+ aLbSort1.InsertEntry( aFieldName, i );
+ aLbSort2.InsertEntry( aFieldName, i );
+ aLbSort3.InsertEntry( aFieldName, i );
+ i++;
+ }
+ }
+ nFieldCount = i;
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_19)
+
+USHORT ScTabPageSortFields::GetFieldSelPos( USHORT nField )
+{
+ USHORT nFieldPos = 0;
+ BOOL bFound = FALSE;
+
+ for ( USHORT n=1; n<nFieldCount && !bFound; n++ )
+ {
+ if ( nFieldArr[n] == nField )
+ {
+ nFieldPos = n;
+ bFound = TRUE;
+ }
+ }
+
+ return nFieldPos;
+}
+
+// -----------------------------------------------------------------------
+// Handler:
+//---------
+#pragma SEG_FUNCDEF(tpsort_0b)
+
+IMPL_LINK( ScTabPageSortFields, SelectHdl, ListBox *, pLb )
+{
+ String aSelEntry = pLb->GetSelectEntry();
+
+ if ( pLb == &aLbSort1 )
+ {
+ if ( aSelEntry == aStrUndefined )
+ {
+ aLbSort2.SelectEntryPos( 0 );
+ aLbSort3.SelectEntryPos( 0 );
+
+ if ( aGbSort2.IsEnabled() )
+ DisableField( 2 );
+
+ if ( aGbSort3.IsEnabled() )
+ DisableField( 3 );
+ }
+ else
+ {
+ if ( !aGbSort2.IsEnabled() )
+ EnableField( 2 );
+ }
+ }
+ else if ( pLb == &aLbSort2 )
+ {
+ if ( aSelEntry == aStrUndefined )
+ {
+ aLbSort3.SelectEntryPos( 0 );
+ if ( aGbSort3.IsEnabled() )
+ DisableField( 3 );
+ }
+ else
+ {
+ if ( !aGbSort3.IsEnabled() )
+ EnableField( 3 );
+ }
+ }
+ return 0;
+}
+
+//========================================================================
+// Sortieroptionen-Tabpage:
+//========================================================================
+#pragma SEG_FUNCDEF(tpsort_0c)
+
+ScTabPageSortOptions::ScTabPageSortOptions( Window* pParent,
+ const SfxItemSet& rArgSet )
+
+ : SfxTabPage ( pParent,
+ ScResId( RID_SCPAGE_SORT_OPTIONS ),
+ rArgSet ),
+ //
+ aBtnCase ( this, ScResId( BTN_CASESENSITIVE ) ),
+ aBtnHeader ( this, ScResId( BTN_LABEL ) ),
+ aBtnFormats ( this, ScResId( BTN_FORMATS ) ),
+ aBtnCopyResult ( this, ScResId( BTN_COPYRESULT ) ),
+ aLbSortUser ( this, ScResId( LB_SORT_USER ) ),
+ aBtnSortUser ( this, ScResId( BTN_SORT_USER ) ),
+ aLbOutPos ( this, ScResId( LB_OUTAREA ) ),
+ aEdOutPos ( this, ScResId( ED_OUTAREA ) ),
+ aBtnTopDown ( this, ScResId( BTN_TOP_DOWN ) ),
+ aBtnLeftRight ( this, ScResId( BTN_LEFT_RIGHT ) ),
+ aGbDirection ( this, ScResId( GB_DIRECTION ) ),
+ aFtAreaLabel ( this, ScResId( FT_AREA_LABEL ) ),
+ aFtArea ( this, ScResId( FT_AREA ) ),
+ //
+ aStrColLabel ( ScResId( STR_COL_LABEL ) ),
+ aStrRowLabel ( ScResId( STR_ROW_LABEL ) ),
+ aStrUndefined ( ScResId( SCSTR_UNDEFINED ) ),
+ aStrNoName ( ScGlobal::GetRscString(STR_DB_NONAME) ),
+ //
+ pDlg ( (ScSortDlg*)(GetParent()->GetParent()) ),
+ nWhichSort ( rArgSet.GetPool()->GetWhich( SID_SORT ) ),
+ rSortData ( ((const ScSortItem&)
+ rArgSet.Get( nWhichSort )).GetSortData() ),
+ pViewData ( NULL ),
+ pDoc ( NULL )
+{
+ Init();
+ FreeResource();
+ SetExchangeSupport();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_0d)
+
+__EXPORT ScTabPageSortOptions::~ScTabPageSortOptions()
+{
+ USHORT nEntries = aLbOutPos.GetEntryCount();
+
+ for ( USHORT i=1; i<nEntries; i++ )
+ delete (String*)aLbOutPos.GetEntryData( i );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_0e)
+
+void ScTabPageSortOptions::Init()
+{
+ const ScSortItem& rSortItem = (const ScSortItem&)
+ GetItemSet().Get( nWhichSort );
+
+ aLbOutPos.SetSelectHdl ( LINK( this, ScTabPageSortOptions, SelOutPosHdl ) );
+ aBtnCopyResult.SetClickHdl( LINK( this, ScTabPageSortOptions, EnableHdl ) );
+ aBtnSortUser.SetClickHdl ( LINK( this, ScTabPageSortOptions, EnableHdl ) );
+ aBtnTopDown.SetClickHdl ( LINK( this, ScTabPageSortOptions, SortDirHdl ) );
+ aBtnLeftRight.SetClickHdl ( LINK( this, ScTabPageSortOptions, SortDirHdl ) );
+
+ pViewData = rSortItem.GetViewData();
+ pDoc = pViewData ? pViewData->GetDocument() : NULL;
+
+ DBG_ASSERT( pViewData, "ViewData not found! :-/" );
+
+ if ( pViewData && pDoc )
+ {
+ String theArea;
+ ScDBCollection* pDBColl = pDoc->GetDBCollection();
+ String theDbArea;
+ String theDbName = aStrNoName;
+ const USHORT nCurTab = pViewData->GetTabNo();
+
+ aLbOutPos.Clear();
+ aLbOutPos.InsertEntry( aStrUndefined, 0 );
+ aLbOutPos.Disable();
+
+ ScAreaNameIterator aIter( pDoc );
+ String aName;
+ ScRange aRange;
+ String aRefStr;
+ while ( aIter.Next( aName, aRange ) )
+ {
+ USHORT nInsert = aLbOutPos.InsertEntry( aName );
+
+ aRange.aStart.Format( aRefStr, SCA_ABS_3D, pDoc );
+ aLbOutPos.SetEntryData( nInsert, new String( aRefStr ) );
+ }
+
+ aLbOutPos.SelectEntryPos( 0 );
+ aEdOutPos.SetText( EMPTY_STRING );
+
+ /*
+ * Ueberpruefen, ob es sich bei dem uebergebenen
+ * Bereich um einen Datenbankbereich handelt:
+ */
+
+ ScAddress aScAddress( rSortData.nCol1, rSortData.nRow1, nCurTab );
+ ScRange( aScAddress,
+ ScAddress( rSortData.nCol2, rSortData.nRow2, nCurTab )
+ ).Format( theArea, SCR_ABS, pDoc );
+
+ if ( pDBColl )
+ {
+ ScDBData* pDBData
+ = pDBColl->GetDBAtArea( nCurTab,
+ rSortData.nCol1, rSortData.nRow1,
+ rSortData.nCol2, rSortData.nRow2 );
+ if ( pDBData )
+ {
+ pDBData->GetName( theDbName );
+ aBtnHeader.Check( pDBData->HasHeader() );
+ }
+ }
+
+ theArea.AppendAscii(RTL_CONSTASCII_STRINGPARAM(" ("));
+ theArea += theDbName;
+ theArea += ')';
+
+ aFtArea.SetText( theArea );
+ aBtnHeader.SetText( aStrColLabel );
+ }
+
+ FillUserSortListBox();
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_1d)
+
+USHORT* __EXPORT ScTabPageSortOptions::GetRanges()
+{
+ return pSortRanges;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_0f)
+
+SfxTabPage* __EXPORT ScTabPageSortOptions::Create(
+ Window* pParent,
+ const SfxItemSet& rArgSet )
+{
+ return ( new ScTabPageSortOptions( pParent, rArgSet ) );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_10)
+
+void __EXPORT ScTabPageSortOptions::Reset( const SfxItemSet& rArgSet )
+{
+ if ( rSortData.bUserDef )
+ {
+ aBtnSortUser.Check( TRUE );
+ aLbSortUser.Enable();
+ aLbSortUser.SelectEntryPos( rSortData.nUserIndex );
+ }
+ else
+ {
+ aBtnSortUser.Check( FALSE );
+ aLbSortUser.Disable();
+ aLbSortUser.SelectEntryPos( 0 );
+ }
+
+ aBtnCase.Check ( rSortData.bCaseSens );
+ aBtnFormats.Check ( rSortData.bIncludePattern );
+ aBtnHeader.Check ( rSortData.bHasHeader );
+
+ if ( rSortData.bByRow )
+ {
+ aBtnTopDown.Check();
+ aBtnHeader.SetText( aStrColLabel );
+ }
+ else
+ {
+ aBtnLeftRight.Check();
+ aBtnHeader.SetText( aStrRowLabel );
+ }
+
+ if ( pDoc && !rSortData.bInplace )
+ {
+ String aStr;
+ USHORT nFormat = (rSortData.nDestTab != pViewData->GetTabNo())
+ ? SCR_ABS_3D
+ : SCR_ABS;
+
+ theOutPos.Set( rSortData.nDestCol,
+ rSortData.nDestRow,
+ rSortData.nDestTab );
+
+ theOutPos.Format( aStr, nFormat, pDoc );
+ aBtnCopyResult.Check();
+ aLbOutPos.Enable();
+ aEdOutPos.Enable();
+ aEdOutPos.SetText( aStr );
+ EdOutPosModHdl( &aEdOutPos );
+ aEdOutPos.GrabFocus();
+ aEdOutPos.SetSelection( Selection( 0, SELECTION_MAX ) );
+ }
+ else
+ {
+ aBtnCopyResult.Check( FALSE );
+ aLbOutPos.Disable();
+ aEdOutPos.Disable();
+ aEdOutPos.SetText( EMPTY_STRING );
+ }
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_11)
+
+BOOL __EXPORT ScTabPageSortOptions::FillItemSet( SfxItemSet& rArgSet )
+{
+ ScSortParam theSortData = rSortData;
+ if (pDlg)
+ {
+ const SfxItemSet* pExample = pDlg->GetExampleSet();
+ const SfxPoolItem* pItem;
+ if ( pExample && pExample->GetItemState( nWhichSort, TRUE, &pItem ) == SFX_ITEM_SET )
+ theSortData = ((const ScSortItem*)pItem)->GetSortData();
+ }
+
+ theSortData.bByRow = aBtnTopDown.IsChecked();
+ theSortData.bHasHeader = aBtnHeader.IsChecked();
+ theSortData.bCaseSens = aBtnCase.IsChecked();
+ theSortData.bIncludePattern = aBtnFormats.IsChecked();
+ theSortData.bInplace = !aBtnCopyResult.IsChecked();
+ theSortData.nDestCol = theOutPos.Col();
+ theSortData.nDestRow = theOutPos.Row();
+ theSortData.nDestTab = theOutPos.Tab();
+ theSortData.bUserDef = aBtnSortUser.IsChecked();
+ theSortData.nUserIndex = (aBtnSortUser.IsChecked())
+ ? aLbSortUser.GetSelectEntryPos()
+ : 0;
+
+ rArgSet.Put( ScSortItem( SCITEM_SORTDATA, &theSortData ) );
+
+ return TRUE;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_12)
+
+// fuer Datenaustausch ohne Dialog-Umweg: (! noch zu tun !)
+// void ScTabPageSortOptions::ActivatePage( const SfxItemSet& rSet )
+void __EXPORT ScTabPageSortOptions::ActivatePage()
+{
+ if ( pDlg )
+ {
+ if ( aBtnHeader.IsChecked() != pDlg->GetHeaders() )
+ {
+ aBtnHeader.Check( pDlg->GetHeaders() );
+ }
+
+ if ( aBtnTopDown.IsChecked() != pDlg->GetByRows() )
+ {
+ aBtnTopDown.Check( pDlg->GetByRows() );
+ aBtnLeftRight.Check( !pDlg->GetByRows() );
+ }
+
+ aBtnHeader.SetText( (pDlg->GetByRows())
+ ? aStrColLabel
+ : aStrRowLabel );
+ }
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_13)
+
+int __EXPORT ScTabPageSortOptions::DeactivatePage( SfxItemSet* pSet )
+{
+ BOOL bPosInputOk = TRUE;
+
+ if ( aBtnCopyResult.IsChecked() )
+ {
+ String thePosStr = aEdOutPos.GetText();
+ ScAddress thePos;
+ xub_StrLen nColonPos = thePosStr.Search( ':' );
+
+ if ( STRING_NOTFOUND != nColonPos )
+ thePosStr.Erase( nColonPos );
+
+ USHORT nResult = thePos.Parse( thePosStr, pDoc );
+
+ bPosInputOk = ( SCA_VALID == (nResult & SCA_VALID) );
+
+ if ( !bPosInputOk )
+ {
+ ErrorBox( this, WinBits( WB_OK | WB_DEF_OK ),
+ ScGlobal::GetRscString( STR_INVALID_TABREF )
+ ).Execute();
+ aEdOutPos.GrabFocus();
+ aEdOutPos.SetSelection( Selection( 0, SELECTION_MAX ) );
+ theOutPos.Set(0,0,0);
+ }
+ else
+ {
+ aEdOutPos.SetText( thePosStr );
+ theOutPos = thePos;
+ }
+ }
+
+ if ( pDlg && bPosInputOk )
+ {
+ pDlg->SetHeaders( aBtnHeader.IsChecked() );
+ pDlg->SetByRows ( aBtnTopDown.IsChecked() );
+ }
+
+ if ( pSet && bPosInputOk )
+ FillItemSet( *pSet );
+
+ return bPosInputOk ? SfxTabPage::LEAVE_PAGE : SfxTabPage::KEEP_PAGE;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_14)
+
+void ScTabPageSortOptions::FillUserSortListBox()
+{
+ ScUserList* pUserLists = ScGlobal::GetUserList();
+
+ aLbSortUser.Clear();
+ if ( pUserLists )
+ {
+ USHORT nCount = pUserLists->GetCount();
+ if ( nCount > 0 )
+ for ( USHORT i=0; i<nCount; i++ )
+ aLbSortUser.InsertEntry( (*pUserLists)[i]->GetString() );
+ }
+}
+
+// -----------------------------------------------------------------------
+// Handler:
+#pragma SEG_FUNCDEF(tpsort_15)
+
+IMPL_LINK( ScTabPageSortOptions, EnableHdl, CheckBox *, pBox )
+{
+ if ( pBox == &aBtnCopyResult )
+ {
+ if ( pBox->IsChecked() )
+ {
+ aLbOutPos.Enable();
+ aEdOutPos.Enable();
+ aEdOutPos.GrabFocus();
+ }
+ else
+ {
+ aLbOutPos.Disable();
+ aEdOutPos.Disable();
+ }
+ }
+ else if ( pBox == &aBtnSortUser )
+ {
+ if ( pBox->IsChecked() )
+ {
+ aLbSortUser.Enable();
+ aLbSortUser.GrabFocus();
+ }
+ else
+ aLbSortUser.Disable();
+ }
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_16)
+
+IMPL_LINK( ScTabPageSortOptions, SelOutPosHdl, ListBox *, pLb )
+{
+ if ( pLb == &aLbOutPos )
+ {
+ String aString;
+ USHORT nSelPos = aLbOutPos.GetSelectEntryPos();
+
+ if ( nSelPos > 0 )
+ aString = *(String*)aLbOutPos.GetEntryData( nSelPos );
+
+ aEdOutPos.SetText( aString );
+ }
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_17)
+
+IMPL_LINK( ScTabPageSortOptions, SortDirHdl, RadioButton *, pBtn )
+{
+ if ( pBtn == &aBtnTopDown )
+ {
+ aBtnHeader.SetText( aStrColLabel );
+ }
+ else if ( pBtn == &aBtnLeftRight )
+ {
+ aBtnHeader.SetText( aStrRowLabel );
+ }
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsort_1b)
+
+void __EXPORT ScTabPageSortOptions::EdOutPosModHdl( Edit* pEd )
+{
+ if ( pEd == &aEdOutPos )
+ {
+ String theCurPosStr = aEdOutPos.GetText();
+ USHORT nResult = ScAddress().Parse( theCurPosStr, pDoc );
+
+ if ( SCA_VALID == (nResult & SCA_VALID) )
+ {
+ String* pStr = NULL;
+ BOOL bFound = FALSE;
+ USHORT i = 0;
+ USHORT nCount = aLbOutPos.GetEntryCount();
+
+ for ( i=2; i<nCount && !bFound; i++ )
+ {
+ pStr = (String*)aLbOutPos.GetEntryData( i );
+ bFound = (theCurPosStr == *pStr);
+ }
+
+ if ( bFound )
+ aLbOutPos.SelectEntryPos( --i );
+ else
+ aLbOutPos.SelectEntryPos( 0 );
+ }
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.44 2000/09/17 14:08:58 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.43 2000/08/31 16:38:21 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.42 2000/05/23 13:41:40 nn
+ FillFieldLists: CreateFromInt32
+
+ Revision 1.41 2000/04/14 17:38:03 nn
+ unicode changes
+
+ Revision 1.40 2000/02/24 16:09:52 hr
+ #43447# gcc needs temporary
+
+ Revision 1.39 2000/02/11 12:24:13 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.38 1999/05/28 16:05:24 NN
+ #66447# MAXFIELDS ist fuer Feldanzahl, nicht Spaltennummer
+
+
+ Rev 1.37 28 May 1999 18:05:24 NN
+ #66447# MAXFIELDS ist fuer Feldanzahl, nicht Spaltennummer
+
+ Rev 1.36 05 Dec 1997 19:54:20 ANK
+ Includes geaendert
+
+ Rev 1.35 12 Jun 1997 13:17:16 NN
+ #40646# STR_DB_NONAME statt SCSTR_NONAME fuer DB-Bereiche
+
+ Rev 1.34 05 Feb 1997 21:29:10 NN
+ SfxTabPage Umstellung: FillItemSet bekommt leeren Set
+
+ Rev 1.33 22 Jan 1997 17:09:44 NN
+ #35176# Header-Flag im FillItemSet der OptionsPage, alter Param als Default
+
+ Rev 1.32 29 Oct 1996 14:04:12 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.31 18 Jul 1996 16:52:48 NN
+ DB-Bereiche als Ziel, ScAreaNameIterator benutzen
+
+ Rev 1.30 29 Jan 1996 15:12:34 MO
+ neuer Link
+
+ Rev 1.29 17 Dec 1995 12:47:42 MD
+ Semikolon in Zeile 822 entfernt
+
+ Rev 1.28 28 Nov 1995 10:32:54 MO
+ Tripel/Area durch Address/Range ersetzt
+
+ Rev 1.27 08 Nov 1995 13:06:24 MO
+ 301-Aenderungen
+
+ Rev 1.26 14 Sep 1995 12:43:12 MO
+ FixedInfos
+
+ Rev 1.25 24 Jul 1995 14:15:54 MO
+ EXPORT
+
+ Rev 1.24 04 Jul 1995 18:29:00 MO
+ __EXPORTs
+
+ Rev 1.23 30 Jun 1995 17:50:12 HJS
+ exports fuer create
+
+ Rev 1.22 18 Apr 1995 10:04:12 MO
+ FixedText fuer TabBereich mit Light-Font
+
+ Rev 1.21 02 Mar 1995 16:20:36 MO
+ InfoBoxen mit Rsc-Strings
+
+ Rev 1.20 05 Feb 1995 12:17:48 MO
+ * Reset() aus den Ctors entfernt
+
+
+ Rev 1.19 01 Feb 1995 09:32:20 MO
+ * __EXPORT vor Destruktoren
+
+
+ Rev 1.18 31 Jan 1995 11:55:36 MO
+ * User-Listen einlesen/auswerten
+ * Activate()-Handler wird nun wieder gerufen
+
+ Rev 1.17 27 Jan 1995 16:16:32 MO
+ * Umstellung auf Slot-IDs
+ * GetRanges()-Methode
+
+ Rev 1.16 25 Jan 1995 13:42:52 MO
+ Umbenennung tp_* tp*
+
+ Rev 1.15 25 Jan 1995 12:59:16 MO
+ * Kopierziel kann wie in den Filterdialogen ueber eine ListBox
+ ausgewaehlt werden.
+ * Auswertung der Zielposition im Reset()
+
+ Rev 1.14 22 Jan 1995 19:38:42 NN
+ Position des DB-Bereichs im Output-Item initialisieren
+
+ Rev 1.13 22 Jan 1995 15:10:14 SC
+ 2.37 Anpassung
+
+ Rev 1.12 19 Jan 1995 16:40:10 TRI
+ __EXPORT vor verschiedene LinkHandler gesetzt
+
+ Rev 1.11 18 Jan 1995 13:56:24 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.10 13 Jan 1995 10:26:06 MO
+ Erkennen von DB-Bereichen in uebergebener Selektion
+ Ueberpruefung von eingegebenem Kopierbereich
+
+ Rev 1.9 12 Jan 1995 14:48:00 MO
+ * Verwendung von ScRangeUtil
+
+ Rev 1.8 10 Jan 1995 16:43:38 MO
+ ScSortParam mit Arrays
+
+ Rev 1.7 09 Jan 1995 11:16:16 MO
+ Umstellung auf ScSortItem mit ScSortParam als Member
+
+ Rev 1.6 05 Jan 1995 16:14:50 MO
+ Sortierfeld-Selektion bleibt jetzt erhalten, wenn auf Options-Page
+ zwischen Zeilen-/Spalten-weise sortieren bzw. Koepfe/nicht-Koepfe
+ umgeschaltet wird.
+
+ Rev 1.5 04 Jan 1995 19:28:40 MO
+ Verwendung von DbUiUtil
+
+ Rev 1.4 04 Jan 1995 13:10:38 MO
+ Reset(): Enable des zweiten Sortierkriteriums korrigiert
+
+ Rev 1.3 21 Dec 1994 18:16:12 MO
+ Feld- und Optionenseiten teilen sich ihre Aenderungen ueber
+ den TabDialog mit (Sortierrichtung und Koepfe ja/nein)
+
+ Rev 1.2 21 Dec 1994 12:16:24 MO
+ vorlaeufige Version
+
+ Rev 1.1 14 Dec 1994 13:51:58 MO
+ Globale ResIds jetzt in sc.hrc
+
+ Rev 1.0 13 Dec 1994 20:51:12 MO
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/tpsubt.cxx b/sc/source/ui/dbgui/tpsubt.cxx
new file mode 100644
index 000000000000..ac5e6e55df72
--- /dev/null
+++ b/sc/source/ui/dbgui/tpsubt.cxx
@@ -0,0 +1,910 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpsubt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:54 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <vcl/system.hxx>
+#include <segmentc.hxx>
+#endif
+
+//#include <checklbx.hxx>
+
+#include "scitems.hxx"
+#include "uiitems.hxx"
+#include "global.hxx"
+#include "userlist.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+#include "sc.hrc" // -> Slot IDs
+
+#include "subtdlg.hxx"
+#include "subtdlg.hrc"
+#include "tpsubt.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+static USHORT pSubTotalsRanges[] =
+{
+ SID_SUBTOTALS,
+ SID_SUBTOTALS,
+ 0
+};
+
+SEG_EOFGLOBALS()
+
+
+//========================================================================
+// Zwischenergebnisgruppen-Tabpage:
+#pragma SEG_FUNCDEF(tpsubt_01)
+
+ScTpSubTotalGroup::ScTpSubTotalGroup( Window* pParent, USHORT nResId,
+ const SfxItemSet& rArgSet )
+ : SfxTabPage ( pParent,
+ ScResId( nResId ),
+ rArgSet ),
+ //
+ aLbGroup ( this, ScResId( LB_GROUP ) ),
+ aLbColumns ( this, ScResId( WND_COLUMNS ) ),
+ aLbFunctions ( this, ScResId( LB_FUNCTIONS ) ),
+ aFtGroup ( this, ScResId( FT_GROUP ) ),
+ aFtColumns ( this, ScResId( FT_COLUMNS ) ),
+ aFtFunctions ( this, ScResId( FT_FUNCTIONS ) ),
+ aStrNone ( ScResId( SCSTR_NONE ) ),
+ aStrColumn ( ScResId( SCSTR_COLUMN ) ),
+ //
+ nWhichSubTotals ( rArgSet.GetPool()->GetWhich( SID_SUBTOTALS ) ),
+ rSubTotalData ( ((const ScSubTotalItem&)
+ rArgSet.Get( nWhichSubTotals )).
+ GetSubTotalData() ),
+ nFieldCount ( 0 ),
+ pViewData ( NULL ),
+ pDoc ( NULL )
+{
+ aLbColumns.SetFont( System::GetStandardFont( STDFONT_APP ) );
+ aLbColumns.SetSelectionMode( SINGLE_SELECTION );
+ aLbColumns.SetDragDropMode( SV_DRAGDROP_NONE );
+ aLbColumns.SetSpaceBetweenEntries( 0 );
+ aLbColumns.Show();
+
+ Init ();
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_02)
+
+__EXPORT ScTpSubTotalGroup::~ScTpSubTotalGroup()
+{
+ USHORT nCount = (USHORT)aLbColumns.GetEntryCount();
+
+ if ( nCount > 0 )
+ {
+ USHORT* pData = NULL;
+
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ pData = (USHORT*)(aLbColumns.GetEntryData( i ));
+ DBG_ASSERT( pData, "EntryData not found" );
+
+ delete pData;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_03)
+
+void ScTpSubTotalGroup::Init()
+{
+ const ScSubTotalItem& rSubTotalItem = (const ScSubTotalItem&)
+ GetItemSet().Get( nWhichSubTotals );
+
+ pViewData = rSubTotalItem.GetViewData();
+ pDoc = ( pViewData ) ? pViewData->GetDocument() : NULL;
+
+ DBG_ASSERT( pViewData && pDoc, "ViewData or Document not found :-(" );
+
+ aLbGroup.SetSelectHdl ( LINK( this, ScTpSubTotalGroup, SelectHdl ) );
+ aLbColumns.SetSelectHdl ( LINK( this, ScTpSubTotalGroup, SelectHdl ) );
+ aLbColumns.SetCheckButtonHdl ( LINK( this, ScTpSubTotalGroup, CheckHdl ) );
+ aLbFunctions.SetSelectHdl ( LINK( this, ScTpSubTotalGroup, SelectHdl ) );
+
+ nFieldArr[0] = 0;
+ FillListBoxes();
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_1d)
+
+USHORT* __EXPORT ScTpSubTotalGroup::GetRanges()
+{
+ return pSubTotalsRanges;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_04)
+
+BOOL ScTpSubTotalGroup::DoReset( USHORT nGroupNo,
+ const SfxItemSet& rArgSet )
+{
+ USHORT nGroupIdx = 0;
+
+ DBG_ASSERT( (nGroupNo<=3) && (nGroupNo>0), "Invalid group" );
+
+ if ( (nGroupNo > 3) || (nGroupNo == 0) )
+ return FALSE;
+ else
+ nGroupIdx = nGroupNo-1;
+
+ //----------------------------------------------------------
+
+ ScSubTotalParam theSubTotalData( ((const ScSubTotalItem&)
+ rArgSet.Get( nWhichSubTotals )).
+ GetSubTotalData() );
+
+ if ( theSubTotalData.bGroupActive[nGroupIdx] )
+ {
+ USHORT nField = theSubTotalData.nField[nGroupIdx];
+ USHORT nSubTotals = theSubTotalData.nSubTotals[nGroupIdx];
+ USHORT* pSubTotals = theSubTotalData.pSubTotals[nGroupIdx];
+ ScSubTotalFunc* pFunctions = theSubTotalData.pFunctions[nGroupIdx];
+
+ aLbGroup.SelectEntryPos( GetFieldSelPos( nField )+1 );
+
+ for ( USHORT i=0; i<nSubTotals; i++ )
+ {
+ USHORT nCheckPos = GetFieldSelPos( pSubTotals[i] );
+ USHORT* pFunction = (USHORT*)aLbColumns.GetEntryData( nCheckPos );
+
+ aLbColumns.CheckEntryPos( nCheckPos );
+ *pFunction = FuncToLbPos( pFunctions[i] );
+ aLbFunctions.SelectEntryPos( *pFunction );
+ }
+ }
+ else
+ {
+ aLbGroup.SelectEntryPos( (nGroupNo == 1) ? 1 : 0 );
+ aLbColumns.SelectEntryPos( 0 );
+ aLbFunctions.SelectEntryPos( 0 );
+ }
+
+ return TRUE;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_05)
+
+BOOL ScTpSubTotalGroup::DoFillItemSet( USHORT nGroupNo,
+ SfxItemSet& rArgSet )
+{
+ USHORT nGroupIdx = 0;
+
+ DBG_ASSERT( (nGroupNo<=3) && (nGroupNo>0), "Invalid group" );
+ DBG_ASSERT( (aLbGroup.GetEntryCount() > 0)
+ && (aLbColumns.GetEntryCount() > 0)
+ && (aLbFunctions.GetEntryCount() > 0),
+ "Non-initialized Lists" );
+
+
+ if ( (nGroupNo > 3) || (nGroupNo == 0)
+ || (aLbGroup.GetEntryCount() == 0)
+ || (aLbColumns.GetEntryCount() == 0)
+ || (aLbFunctions.GetEntryCount() == 0)
+ )
+ return FALSE;
+ else
+ nGroupIdx = nGroupNo-1;
+
+ //----------------------------------------------------------
+
+ ScSubTotalParam theSubTotalData; // auslesen, wenn schon teilweise gefuellt
+ SfxTabDialog* pDlg = GetTabDialog();
+ if ( pDlg )
+ {
+ const SfxItemSet* pExample = pDlg->GetExampleSet();
+ const SfxPoolItem* pItem;
+ if ( pExample && pExample->GetItemState( nWhichSubTotals, TRUE, &pItem ) == SFX_ITEM_SET )
+ theSubTotalData = ((const ScSubTotalItem*)pItem)->GetSubTotalData();
+ }
+
+ ScSubTotalFunc* pFunctions = NULL;
+ USHORT* pSubTotals = NULL;
+ USHORT nGroup = aLbGroup.GetSelectEntryPos();
+ USHORT nEntryCount = (USHORT)aLbColumns.GetEntryCount();
+ USHORT nCheckCount = aLbColumns.GetCheckedEntryCount();
+
+ theSubTotalData.nCol1 = rSubTotalData.nCol1;
+ theSubTotalData.nRow1 = rSubTotalData.nRow1;
+ theSubTotalData.nCol2 = rSubTotalData.nCol2;
+ theSubTotalData.nRow2 = rSubTotalData.nRow2;
+ theSubTotalData.bGroupActive[nGroupIdx] = (nGroup != 0);
+ theSubTotalData.nField[nGroupIdx] = (nGroup != 0)
+ ? nFieldArr[nGroup-1]
+ : 0;
+
+ if ( nEntryCount>0 && nCheckCount>0 && nGroup!=0 )
+ {
+ USHORT nFunction = 0;
+
+ pSubTotals = new USHORT [nCheckCount];
+ pFunctions = new ScSubTotalFunc [nCheckCount];
+
+ for ( USHORT i=0, nCheck=0; i<nEntryCount; i++ )
+ {
+ if ( aLbColumns.IsChecked( i ) )
+ {
+ DBG_ASSERT( nCheck <= nCheckCount,
+ "Range error :-(" );
+ nFunction = *((USHORT*)aLbColumns.GetEntryData( i ));
+ pSubTotals[nCheck] = nFieldArr[i];
+ pFunctions[nCheck] = LbPosToFunc( nFunction );
+ nCheck++;
+ }
+ }
+ theSubTotalData.SetSubTotals( nGroupNo, // Gruppen-Nr.
+ pSubTotals,
+ pFunctions,
+ nCheckCount ); // Anzahl der Array-Elemente
+
+ }
+
+ rArgSet.Put( ScSubTotalItem( SCITEM_SUBTDATA, &theSubTotalData ) );
+
+ if ( pSubTotals ) delete pSubTotals;
+ if ( pFunctions ) delete pFunctions;
+
+ return TRUE;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_06)
+
+void ScTpSubTotalGroup::FillListBoxes()
+{
+ DBG_ASSERT( pViewData && pDoc, "ViewData or Document not found :-/" );
+
+ if ( pViewData && pDoc )
+ {
+ USHORT nFirstCol = rSubTotalData.nCol1;
+ USHORT nFirstRow = rSubTotalData.nRow1;
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nMaxCol = rSubTotalData.nCol2;
+ USHORT col;
+ USHORT i=0;
+ String aFieldName;
+
+ aLbGroup.Clear();
+ aLbColumns.Clear();
+ aLbGroup.InsertEntry( aStrNone, 0 );
+
+ i=0;
+ for ( col=nFirstCol; col<=nMaxCol && i<SC_MAXFIELDS; col++ )
+ {
+ pDoc->GetString( col, nFirstRow, nTab, aFieldName );
+ if ( aFieldName.Len() == 0 )
+ {
+ aFieldName = aStrColumn;
+ aFieldName += ' ';
+ if ( col < 26 )
+ aFieldName += (sal_Unicode)( 'A' + col );
+ else
+ {
+ aFieldName += (sal_Unicode)( 'A' + ( col / 26 ) - 1 );
+ aFieldName += (sal_Unicode)( 'A' + ( col % 26 ) );
+ }
+ }
+ nFieldArr[i] = col;
+ aLbGroup.InsertEntry( aFieldName, i+1 );
+ aLbColumns.InsertEntry( aFieldName, i );
+ aLbColumns.SetEntryData( i, new USHORT(0) );
+ i++;
+ }
+ // Nachtraegliche "Konstanteninitialisierung":
+ (USHORT&)nFieldCount = i;
+ }
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_18)
+
+USHORT ScTpSubTotalGroup::GetFieldSelPos( USHORT nField )
+{
+ USHORT nFieldPos = 0;
+ BOOL bFound = FALSE;
+
+ for ( USHORT n=0; n<nFieldCount && !bFound; n++ )
+ {
+ if ( nFieldArr[n] == nField )
+ {
+ nFieldPos = n;
+ bFound = TRUE;
+ }
+ }
+
+ return nFieldPos;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_19)
+
+ScSubTotalFunc ScTpSubTotalGroup::LbPosToFunc( USHORT nPos )
+{
+ switch ( nPos )
+ {
+// case 0: return SUBTOTAL_FUNC_NONE;
+ case 2: return SUBTOTAL_FUNC_AVE;
+ case 6: return SUBTOTAL_FUNC_CNT;
+ case 1: return SUBTOTAL_FUNC_CNT2;
+ case 3: return SUBTOTAL_FUNC_MAX;
+ case 4: return SUBTOTAL_FUNC_MIN;
+ case 5: return SUBTOTAL_FUNC_PROD;
+ case 7: return SUBTOTAL_FUNC_STD;
+ case 8: return SUBTOTAL_FUNC_STDP;
+ case 0: return SUBTOTAL_FUNC_SUM;
+ case 9: return SUBTOTAL_FUNC_VAR;
+ case 10: return SUBTOTAL_FUNC_VARP;
+ default:
+ DBG_ERROR( "ScTpSubTotalGroup::LbPosToFunc" );
+ return SUBTOTAL_FUNC_NONE;
+ }
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_1a)
+
+USHORT ScTpSubTotalGroup::FuncToLbPos( ScSubTotalFunc eFunc )
+{
+ switch ( eFunc )
+ {
+// case SUBTOTAL_FUNC_NONE: return 0;
+ case SUBTOTAL_FUNC_AVE: return 2;
+ case SUBTOTAL_FUNC_CNT: return 6;
+ case SUBTOTAL_FUNC_CNT2: return 1;
+ case SUBTOTAL_FUNC_MAX: return 3;
+ case SUBTOTAL_FUNC_MIN: return 4;
+ case SUBTOTAL_FUNC_PROD: return 5;
+ case SUBTOTAL_FUNC_STD: return 7;
+ case SUBTOTAL_FUNC_STDP: return 8;
+ case SUBTOTAL_FUNC_SUM: return 0;
+ case SUBTOTAL_FUNC_VAR: return 9;
+ case SUBTOTAL_FUNC_VARP: return 10;
+ default:
+ DBG_ERROR( "ScTpSubTotalGroup::FuncToLbPos" );
+ return 0;
+ }
+}
+
+// -----------------------------------------------------------------------
+// Handler:
+//---------
+#pragma SEG_FUNCDEF(tpsubt_07)
+
+IMPL_LINK( ScTpSubTotalGroup, SelectHdl, ListBox *, pLb )
+{
+ if ( (aLbColumns.GetEntryCount() > 0)
+ && (aLbColumns.GetSelectionCount() > 0) )
+ {
+ USHORT nFunction = aLbFunctions.GetSelectEntryPos();
+ USHORT nColumn = aLbColumns.GetSelectEntryPos();
+ USHORT* pFunction = (USHORT*)aLbColumns.GetEntryData( nColumn );
+
+ DBG_ASSERT( pFunction, "EntryData nicht gefunden!" );
+ if ( !pFunction )
+ return 0;
+
+ if ( ((SvxCheckListBox*)pLb) == &aLbColumns )
+ {
+ aLbFunctions.SelectEntryPos( *pFunction );
+ }
+ else if ( pLb == &aLbFunctions )
+ {
+ *pFunction = nFunction;
+// aLbColumns.CheckEntryPos( nColumn, (nFunction != 0) );//XXX
+ aLbColumns.CheckEntryPos( nColumn, TRUE );
+ }
+ }
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_20)
+
+IMPL_LINK( ScTpSubTotalGroup, CheckHdl, ListBox *, pLb )
+{
+ if ( ((SvxCheckListBox*)pLb) == &aLbColumns )
+ {
+ SvLBoxEntry* pEntry = aLbColumns.GetHdlEntry();
+
+ if ( pEntry )
+ {
+ aLbColumns.SelectEntryPos( (USHORT)aLbColumns.GetModel()->GetAbsPos( pEntry ) );
+ SelectHdl( pLb );
+ }
+ }
+ return 0;
+}
+
+//========================================================================
+// Abgeleitete Gruppen-TabPages:
+#pragma SEG_FUNCDEF(tpsubt_08)
+
+SfxTabPage* __EXPORT ScTpSubTotalGroup1::Create( Window* pParent,
+ const SfxItemSet& rArgSet )
+ { return ( new ScTpSubTotalGroup1( pParent, rArgSet ) ); }
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_09)
+
+SfxTabPage* __EXPORT ScTpSubTotalGroup2::Create( Window* pParent,
+ const SfxItemSet& rArgSet )
+ { return ( new ScTpSubTotalGroup2( pParent, rArgSet ) ); }
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_0a)
+
+SfxTabPage* __EXPORT ScTpSubTotalGroup3::Create( Window* pParent,
+ const SfxItemSet& rArgSet )
+ { return ( new ScTpSubTotalGroup3( pParent, rArgSet ) ); }
+
+// -----------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(tpsubt_21)
+
+ScTpSubTotalGroup1::ScTpSubTotalGroup1( Window* pParent, const SfxItemSet& rArgSet ) :
+ ScTpSubTotalGroup( pParent, RID_SCPAGE_SUBT_GROUP1, rArgSet )
+{}
+
+#pragma SEG_FUNCDEF(tpsubt_22)
+
+ScTpSubTotalGroup2::ScTpSubTotalGroup2( Window* pParent, const SfxItemSet& rArgSet ) :
+ ScTpSubTotalGroup( pParent, RID_SCPAGE_SUBT_GROUP2, rArgSet )
+{}
+
+#pragma SEG_FUNCDEF(tpsubt_23)
+
+ScTpSubTotalGroup3::ScTpSubTotalGroup3( Window* pParent, const SfxItemSet& rArgSet ) :
+ ScTpSubTotalGroup( pParent, RID_SCPAGE_SUBT_GROUP3, rArgSet )
+{}
+
+// -----------------------------------------------------------------------
+
+
+#define RESET(i) (ScTpSubTotalGroup::DoReset( (i), rArgSet ))
+
+#pragma SEG_FUNCDEF(tpsubt_0b)
+
+void __EXPORT ScTpSubTotalGroup1::Reset( const SfxItemSet& rArgSet ) { RESET(1); }
+
+#pragma SEG_FUNCDEF(tpsubt_1b)
+
+void __EXPORT ScTpSubTotalGroup2::Reset( const SfxItemSet& rArgSet ) { RESET(2); }
+
+#pragma SEG_FUNCDEF(tpsubt_1c)
+
+void __EXPORT ScTpSubTotalGroup3::Reset( const SfxItemSet& rArgSet ) { RESET(3); }
+
+#undef RESET
+
+// -----------------------------------------------------------------------
+
+#define FILLSET(i) (ScTpSubTotalGroup::DoFillItemSet( (i), rArgSet ))
+
+#pragma SEG_FUNCDEF(tpsubt_0c)
+
+BOOL __EXPORT ScTpSubTotalGroup1::FillItemSet( SfxItemSet& rArgSet ) { return FILLSET(1); }
+
+#pragma SEG_FUNCDEF(tpsubt_0d)
+
+BOOL __EXPORT ScTpSubTotalGroup2::FillItemSet( SfxItemSet& rArgSet ) { return FILLSET(2); }
+
+#pragma SEG_FUNCDEF(tpsubt_0e)
+
+BOOL __EXPORT ScTpSubTotalGroup3::FillItemSet( SfxItemSet& rArgSet ) { return FILLSET(3); }
+
+#undef FILL
+
+//========================================================================
+// Optionen-Tabpage:
+#pragma SEG_FUNCDEF(tpsubt_0f)
+
+ScTpSubTotalOptions::ScTpSubTotalOptions( Window* pParent,
+ const SfxItemSet& rArgSet )
+
+ : SfxTabPage ( pParent,
+ ScResId( RID_SCPAGE_SUBT_OPTIONS ),
+ rArgSet ),
+ //
+ aBtnPagebreak ( this, ScResId( BTN_PAGEBREAK ) ),
+ aBtnCase ( this, ScResId( BTN_CASE ) ),
+ aBtnSort ( this, ScResId( BTN_SORT ) ),
+ aBtnFormats ( this, ScResId( BTN_FORMATS ) ),
+ aBtnUserDef ( this, ScResId( BTN_USERDEF ) ),
+ aLbUserDef ( this, ScResId( LB_USERDEF ) ),
+ aBtnAscending ( this, ScResId( BTN_ASCENDING ) ),
+ aBtnDescending ( this, ScResId( BTN_DESCENDING ) ),
+ aGbOptions ( this, ScResId( GB_OPTIONS ) ),
+ //
+ nWhichSubTotals ( rArgSet.GetPool()->GetWhich( SID_SUBTOTALS ) ),
+ rSubTotalData ( ((const ScSubTotalItem&)
+ rArgSet.Get( nWhichSubTotals )).
+ GetSubTotalData() ),
+ pViewData ( NULL ),
+ pDoc ( NULL )
+{
+ Init();
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_10)
+
+__EXPORT ScTpSubTotalOptions::~ScTpSubTotalOptions()
+{
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_11)
+
+void ScTpSubTotalOptions::Init()
+{
+ const ScSubTotalItem& rSubTotalItem = (const ScSubTotalItem&)
+ GetItemSet().Get( nWhichSubTotals );
+
+ pViewData = rSubTotalItem.GetViewData();
+ pDoc = ( pViewData ) ? pViewData->GetDocument() : NULL;
+
+ DBG_ASSERT( pViewData && pDoc, "ViewData oder Document nicht gefunden!" );
+
+ aBtnSort.SetClickHdl ( LINK( this, ScTpSubTotalOptions, CheckHdl ) );
+ aBtnUserDef.SetClickHdl ( LINK( this, ScTpSubTotalOptions, CheckHdl ) );
+
+ FillUserSortListBox();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_12)
+
+SfxTabPage* __EXPORT ScTpSubTotalOptions::Create( Window* pParent,
+ const SfxItemSet& rArgSet )
+{
+ return ( new ScTpSubTotalOptions( pParent, rArgSet ) );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_13)
+
+void __EXPORT ScTpSubTotalOptions::Reset( const SfxItemSet& rArgSet )
+{
+ aBtnPagebreak.Check ( rSubTotalData.bPagebreak );
+ aBtnCase.Check ( rSubTotalData.bCaseSens );
+ aBtnFormats.Check ( rSubTotalData.bIncludePattern );
+ aBtnSort.Check ( rSubTotalData.bDoSort );
+ aBtnAscending.Check ( rSubTotalData.bAscending );
+ aBtnDescending.Check( !rSubTotalData.bAscending );
+
+ if ( rSubTotalData.bUserDef )
+ {
+ aBtnUserDef.Check( TRUE );
+ aLbUserDef.Enable();
+ aLbUserDef.SelectEntryPos( rSubTotalData.nUserIndex );
+ }
+ else
+ {
+ aBtnUserDef.Check( FALSE );
+ aLbUserDef.Disable();
+ aLbUserDef.SelectEntryPos( 0 );
+ }
+
+ CheckHdl( &aBtnSort );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_14)
+
+BOOL __EXPORT ScTpSubTotalOptions::FillItemSet( SfxItemSet& rArgSet )
+{
+ ScSubTotalParam theSubTotalData; // auslesen, wenn schon teilweise gefuellt
+ SfxTabDialog* pDlg = GetTabDialog();
+ if ( pDlg )
+ {
+ const SfxItemSet* pExample = pDlg->GetExampleSet();
+ const SfxPoolItem* pItem;
+ if ( pExample && pExample->GetItemState( nWhichSubTotals, TRUE, &pItem ) == SFX_ITEM_SET )
+ theSubTotalData = ((const ScSubTotalItem*)pItem)->GetSubTotalData();
+ }
+
+ theSubTotalData.bPagebreak = aBtnPagebreak.IsChecked();
+ theSubTotalData.bReplace = TRUE;
+ theSubTotalData.bCaseSens = aBtnCase.IsChecked();
+ theSubTotalData.bIncludePattern = aBtnFormats.IsChecked();
+ theSubTotalData.bDoSort = aBtnSort.IsChecked();
+ theSubTotalData.bAscending = aBtnAscending.IsChecked();
+ theSubTotalData.bUserDef = aBtnUserDef.IsChecked();
+ theSubTotalData.nUserIndex = (aBtnUserDef.IsChecked())
+ ? aLbUserDef.GetSelectEntryPos()
+ : 0;
+
+ rArgSet.Put( ScSubTotalItem( nWhichSubTotals, &theSubTotalData ) );
+
+ return TRUE;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpsubt_15)
+
+void ScTpSubTotalOptions::FillUserSortListBox()
+{
+ ScUserList* pUserLists = ScGlobal::GetUserList();
+
+ aLbUserDef.Clear();
+ if ( pUserLists )
+ {
+ USHORT nCount = pUserLists->GetCount();
+ if ( nCount > 0 )
+ for ( USHORT i=0; i<nCount; i++ )
+ aLbUserDef.InsertEntry( (*pUserLists)[i]->GetString() );
+ }
+}
+
+// -----------------------------------------------------------------------
+// Handler:
+#pragma SEG_FUNCDEF(tpsubt_16)
+
+IMPL_LINK( ScTpSubTotalOptions, CheckHdl, CheckBox *, pBox )
+{
+ if ( pBox == &aBtnSort )
+ {
+ if ( aBtnSort.IsChecked() )
+ {
+ aGbOptions .Enable();
+ aBtnFormats .Enable();
+ aBtnUserDef .Enable();
+ aBtnAscending .Enable();
+ aBtnDescending .Enable();
+
+ if ( aBtnUserDef.IsChecked() )
+ aLbUserDef.Enable();
+ }
+ else
+ {
+ aGbOptions .Disable();
+ aBtnFormats .Disable();
+ aBtnUserDef .Disable();
+ aBtnAscending .Disable();
+ aBtnDescending .Disable();
+ aLbUserDef .Disable();
+ }
+ }
+ else if ( pBox == &aBtnUserDef )
+ {
+ if ( aBtnUserDef.IsChecked() )
+ {
+ aLbUserDef.Enable();
+ aLbUserDef.GrabFocus();
+ }
+ else
+ aLbUserDef.Disable();
+ }
+
+ return 0;
+}
+
+#pragma SEG_FUNCDEF(tpsubt_17)
+
+__EXPORT ScTpSubTotalGroup1::~ScTpSubTotalGroup1()
+{
+}
+
+#pragma SEG_FUNCDEF(tpsubt_1e)
+
+__EXPORT ScTpSubTotalGroup2::~ScTpSubTotalGroup2()
+{
+}
+
+#pragma SEG_FUNCDEF(tpsubt_1f)
+
+__EXPORT ScTpSubTotalGroup3::~ScTpSubTotalGroup3()
+{
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.41 2000/09/17 14:08:59 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.40 2000/08/31 16:38:21 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.39 2000/04/14 17:38:03 nn
+ unicode changes
+
+ Revision 1.38 2000/02/11 12:24:18 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.37 1999/05/28 16:05:24 NN
+ #66447# MAXFIELDS ist fuer Feldanzahl, nicht Spaltennummer
+
+
+ Rev 1.36 28 May 1999 18:05:24 NN
+ #66447# MAXFIELDS ist fuer Feldanzahl, nicht Spaltennummer
+
+ Rev 1.35 17 Dec 1997 19:49:54 ER
+ #46215# NULL-Pointer abfangen (aus nem Paint den SelectHandler gerufen?!?)
+
+ Rev 1.34 05 Dec 1997 20:02:36 ANK
+ Includes geaendert
+
+ Rev 1.33 05 Feb 1997 21:29:32 NN
+ SfxTabPage Umstellung: FillItemSet bekommt leeren Set
+
+ Rev 1.32 07 Nov 1996 19:51:58 NN
+ eigene RIDs fuer die unterschiedlichen Pages
+
+ Rev 1.31 29 Oct 1996 14:04:12 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.30 23 May 1996 09:00:50 TRI
+ GetAbsPos jetzt uber GetModel aufgerufen
+
+ Rev 1.29 29 Jan 1996 15:12:36 MO
+ neuer Link
+
+ Rev 1.28 14 Nov 1995 11:30:10 MO
+ SvxCheckListBox verwenden
+
+ Rev 1.27 08 Nov 1995 13:06:24 MO
+ 301-Aenderungen
+
+ Rev 1.26 25 Sep 1995 14:16:48 JN
+ Funktion _Keine_ entfernt
+
+ Rev 1.25 13 Sep 1995 12:27:58 MO
+ Funktionszuordnung bei einem Feld-Eintrag (BugIId: 18867)
+
+ Rev 1.24 08 Sep 1995 14:42:44 MO
+ Replace CheckBox entfernt (BugId: 18821)
+
+ Rev 1.23 04 Sep 1995 12:00:28 MO
+ GetStandardFont() statt GetAppFont()
+
+ Rev 1.22 24 Aug 1995 17:38:52 HJS
+ DRAGDROP_NONE => SV_DRAGDROP_NONE
+
+ Rev 1.21 24 Jul 1995 14:17:14 MO
+ EXPORT
+
+ Rev 1.20 18 Jul 1995 14:08:30 MO
+ CheckEntry impliziert SelectEntry an TreeListBox
+
+ Rev 1.19 04 Jul 1995 18:28:46 MO
+ __EXPORTs
+
+ Rev 1.18 30 Jun 1995 17:50:10 HJS
+ exports fuer create
+
+ Rev 1.17 04 May 1995 08:16:10 TRI
+ pApp -> Application::
+
+ Rev 1.16 07 Apr 1995 17:58:40 MO
+ Erste Seite Selektiert erste Spaltenueberschrift in Gruppen-ListBox
+
+ Rev 1.15 24 Mar 1995 13:29:02 TRI
+ Segmentierung
+
+ Rev 1.14 07 Mar 1995 16:46:54 MO
+ * Enanble/Disable-Fehler auf der Optionen-Seite beseitigt
+
+ Rev 1.13 21 Feb 1995 03:31:08 NN
+ Absturz ausgebaut
+
+ Rev 1.12 05 Feb 1995 12:17:00 MO
+ * Reset() aus den Ctord entfernt
+
+ Rev 1.11 31 Jan 1995 13:40:36 TRI
+ __EXPORT vor virtuelle Funktion eingebaut
+
+ Rev 1.10 31 Jan 1995 11:56:34 MO
+ * User-Listen einlesen/auswerten
+
+ Rev 1.9 30 Jan 1995 16:40:50 MO
+ Funktions-enum-Zuordnung korrigiert
+
+ Rev 1.8 27 Jan 1995 16:16:08 MO
+ * Umstellung auf Slot-IDs
+ * GetRanges()-Methode
+
+ Rev 1.7 26 Jan 1995 14:09:48 MO
+ * Auswertung des Param-structs in den Gruppen-Pages (eigene Reset()-Metoden)
+
+ Rev 1.6 25 Jan 1995 13:49:32 MO
+ Segmentierungspragmas eingefuegt
+
+ Rev 1.5 25 Jan 1995 13:42:02 MO
+ Umbenennung tp_* tp*
+
+ Rev 1.4 25 Jan 1995 13:28:26 MO
+ Check in der TreeListBox, wenn Funktion selektiert wird
+ (funktioniert noch nicht so richtig (TreeListBox?))
+
+ Rev 1.3 22 Jan 1995 19:38:44 NN
+ Position des DB-Bereichs im Output-Item initialisieren
+
+ Rev 1.2 22 Jan 1995 15:10:14 SC
+ 2.37 Anpassung
+
+ Rev 1.1 20 Jan 1995 18:34:02 MO
+ Gruppen-TabPages 2 und 3
+
+ Rev 1.0 19 Jan 1995 11:42:20 MO
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/dbgui/validate.cxx b/sc/source/ui/dbgui/validate.cxx
new file mode 100644
index 000000000000..1d8508cc1ff0
--- /dev/null
+++ b/sc/source/ui/dbgui/validate.cxx
@@ -0,0 +1,590 @@
+/*************************************************************************
+ *
+ * $RCSfile: validate.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <svtools/aeitem.hxx>
+#include <svtools/stritem.hxx>
+#include <svtools/eitem.hxx>
+#include <vcl/svapp.hxx>
+#include <basic/sbmeth.hxx>
+#include <segmentc.hxx>
+#include <basctl/basobj.hxx>
+#include <basic/sbstar.hxx>
+#include <basic/sbmod.hxx>
+#endif
+
+#include "scresid.hxx"
+#include "sc.hrc" // -> Slot IDs
+
+#include "validat.hxx"
+
+#include "validate.hrc"
+
+#define _VALIDATE_CXX
+#include "validate.hxx"
+#undef _VALIDATE_CXX
+
+// STATIC DATA -----------------------------------------------------------
+
+static USHORT pValueRanges[] =
+{
+ FID_VALID_MODE, FID_VALID_ERRTEXT,
+ 0
+};
+
+static USHORT pHelpRanges[] =
+{
+ FID_VALIDATION,
+ FID_VALIDATION,
+ 0
+};
+
+static USHORT pErrorRanges[] =
+{
+ FID_VALIDATION,
+ FID_VALIDATION,
+ 0
+};
+
+SEG_EOFGLOBALS()
+
+//==================================================================
+#pragma SEG_FUNCDEF(validate_01)
+
+ScValidationDlg::ScValidationDlg( Window* pParent,
+ const SfxItemSet* pArgSet ) :
+ SfxTabDialog( pParent,
+ ScResId( TAB_DLG_VALIDATION ),
+ pArgSet )
+{
+ AddTabPage( TP_VALIDATION_VALUES, ScTPValidationValue::Create, 0 );
+ AddTabPage( TP_VALIDATION_INPUTHELP, ScTPValidationHelp::Create, 0 );
+ AddTabPage( TP_VALIDATION_ERROR, ScTPValidationError::Create, 0 );
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(validate_02)
+
+__EXPORT ScValidationDlg::~ScValidationDlg()
+{
+}
+
+//========================================================================
+//========================================================================
+// Werte-Tabpage:
+#pragma SEG_FUNCDEF(validate_03)
+
+ScTPValidationValue::ScTPValidationValue( Window* pParent,
+ const SfxItemSet& rArgSet )
+
+ : SfxTabPage ( pParent,
+ ScResId( TP_VALIDATION_VALUES ),
+ rArgSet ),
+ aFtAllow ( this, ScResId( FT_ALLOW ) ),
+ aLbAllow ( this, ScResId( LB_ALLOW ) ),
+ aTsbAllow ( this, ScResId( TSB_ALLOW_BLANKS ) ),
+ aFtValue ( this, ScResId( FT_VALUE ) ),
+ aLbValue ( this, ScResId( LB_VALUE ) ),
+ aFtMin ( this, ScResId( FT_MIN ) ),
+ aEdtMin ( this, ScResId( EDT_MIN ) ),
+ aFtMax ( this, ScResId( FT_MAX ) ),
+ aEdtMax ( this, ScResId( EDT_MAX ) ),
+ aGrpValues ( this, ScResId( GRP_VALUES ) ),
+
+ aStrMin ( ScResId( SCSTR_MINIMUM ) ),
+ aStrMax ( ScResId( SCSTR_MAXIMUM ) ),
+ aStrValue ( ScResId( SCSTR_VALUE ) ),
+
+ rSet ( rArgSet )
+{
+ Init();
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_04)
+
+__EXPORT ScTPValidationValue::~ScTPValidationValue()
+{
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_05)
+
+void ScTPValidationValue::Init()
+{
+ aLbAllow.SetSelectHdl( LINK( this, ScTPValidationValue, SelectAllowHdl ) );
+ aLbValue.SetSelectHdl( LINK( this, ScTPValidationValue, SelectValueHdl ) );
+
+ aLbAllow.SelectEntryPos( 0 );
+ aTsbAllow.EnableTriState( FALSE );
+ aLbValue.SelectEntryPos( 0 );
+
+ SelectAllowHdl( NULL );
+ SelectValueHdl( NULL );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_06)
+
+USHORT* __EXPORT ScTPValidationValue::GetRanges()
+{
+ return pValueRanges;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_07)
+
+SfxTabPage* __EXPORT ScTPValidationValue::Create( Window* pParent,
+ const SfxItemSet& rArgSet )
+{
+ return ( new ScTPValidationValue( pParent, rArgSet ) );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_08)
+
+void __EXPORT ScTPValidationValue::Reset( const SfxItemSet& rArgSet )
+{
+ const SfxPoolItem* pItem;
+
+ if ( rArgSet.GetItemState( FID_VALID_MODE, TRUE, &pItem ) == SFX_ITEM_SET )
+ aLbAllow.SelectEntryPos( ((const SfxAllEnumItem*)pItem)->GetValue() );
+ if ( rArgSet.GetItemState( FID_VALID_CONDMODE, TRUE, &pItem ) == SFX_ITEM_SET )
+ aLbValue.SelectEntryPos( ((const SfxAllEnumItem*)pItem)->GetValue() );
+ if ( rArgSet.GetItemState( FID_VALID_VALUE1, TRUE, &pItem ) == SFX_ITEM_SET )
+ aEdtMin.SetText( ((const SfxStringItem*)pItem)->GetValue() );
+ if ( rArgSet.GetItemState( FID_VALID_VALUE2, TRUE, &pItem ) == SFX_ITEM_SET )
+ aEdtMax.SetText( ((const SfxStringItem*)pItem)->GetValue() );
+ if ( rArgSet.GetItemState( FID_VALID_BLANK, TRUE, &pItem ) == SFX_ITEM_SET )
+ aTsbAllow.SetState( ((const SfxBoolItem*)pItem)->GetValue() ? STATE_CHECK : STATE_NOCHECK );
+ else
+ aTsbAllow.SetState( STATE_CHECK ); // default an
+
+ SelectAllowHdl( NULL );
+ SelectValueHdl( NULL );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_09)
+
+BOOL __EXPORT ScTPValidationValue::FillItemSet( SfxItemSet& rArgSet )
+{
+ rArgSet.Put( SfxAllEnumItem( FID_VALID_MODE, aLbAllow.GetSelectEntryPos() ) );
+ rArgSet.Put( SfxAllEnumItem( FID_VALID_CONDMODE, aLbValue.GetSelectEntryPos() ) );
+ rArgSet.Put( SfxStringItem( FID_VALID_VALUE1, aEdtMin.GetText() ) );
+ rArgSet.Put( SfxStringItem( FID_VALID_VALUE2, aEdtMax.GetText() ) );
+ rArgSet.Put( SfxBoolItem( FID_VALID_BLANK, aTsbAllow.GetState() == STATE_CHECK ) );
+
+ return TRUE;
+}
+
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_0a)
+
+IMPL_LINK( ScTPValidationValue, SelectAllowHdl, ListBox *, pLb )
+{
+ BOOL bEnable = aLbAllow.GetSelectEntryPos() != 0;
+
+ aTsbAllow.Enable( bEnable ); // Leerzellen
+ aFtValue.Enable( bEnable );
+ aLbValue.Enable( bEnable );
+ aFtMin.Enable( bEnable );
+ aEdtMin.Enable( bEnable );
+ aFtMax.Enable( bEnable );
+ aEdtMax.Enable( bEnable );
+
+ return( 0L );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_0b)
+
+IMPL_LINK( ScTPValidationValue, SelectValueHdl, ListBox *, pLb )
+{
+ USHORT nPos = aLbValue.GetSelectEntryPos();
+ BOOL bShow = FALSE;
+
+ switch( nPos )
+ {
+ case 0: // ==
+ case 5: // !=
+ aFtMin.SetText( aStrValue );
+ break;
+
+ case 1: // <
+ case 3: // <=
+ aFtMin.SetText( aStrMax );
+ break;
+
+ case 6: // zwischen
+ case 7: // n. zwischen
+ bShow = TRUE;
+ case 2: // >
+ case 4: // >=
+ aFtMin.SetText( aStrMin );
+ break;
+
+ default:
+ DBG_ERROR( "Wert ist nicht im Bereich der Stringlist!" );
+ break;
+ }
+
+ bShow ? aFtMax.Show() : aFtMax.Hide();
+ bShow ? aEdtMax.Show() : aEdtMax.Hide();
+
+ return( 0L );
+}
+
+//========================================================================
+//========================================================================
+// Werte-Tabpage:
+#pragma SEG_FUNCDEF(validate_0c)
+
+ScTPValidationHelp::ScTPValidationHelp( Window* pParent,
+ const SfxItemSet& rArgSet )
+
+ : SfxTabPage ( pParent,
+ ScResId( TP_VALIDATION_INPUTHELP ),
+ rArgSet ),
+ aTsbHelp ( this, ScResId( TSB_HELP ) ),
+ aFtTitle ( this, ScResId( FT_TITLE ) ),
+ aEdtTitle ( this, ScResId( EDT_TITLE ) ),
+ aFtInputHelp ( this, ScResId( FT_INPUTHELP ) ),
+ aEdInputHelp ( this, ScResId( EDT_INPUTHELP ) ),
+ aGrpContent ( this, ScResId( GRP_CONTENT ) ),
+
+ rSet ( rArgSet )
+{
+ Init();
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_0d)
+
+__EXPORT ScTPValidationHelp::~ScTPValidationHelp()
+{
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_0e)
+
+void ScTPValidationHelp::Init()
+{
+ //aLb.SetSelectHdl( LINK( this, ScTPValidationHelp, SelectHdl ) );
+
+ aTsbHelp.EnableTriState( FALSE );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_0f)
+
+USHORT* __EXPORT ScTPValidationHelp::GetRanges()
+{
+ return pValueRanges;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_10)
+
+SfxTabPage* __EXPORT ScTPValidationHelp::Create( Window* pParent,
+ const SfxItemSet& rArgSet )
+{
+ return ( new ScTPValidationHelp( pParent, rArgSet ) );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_11)
+
+void __EXPORT ScTPValidationHelp::Reset( const SfxItemSet& rArgSet )
+{
+ const SfxPoolItem* pItem;
+
+ if ( rArgSet.GetItemState( FID_VALID_SHOWHELP, TRUE, &pItem ) == SFX_ITEM_SET )
+ aTsbHelp.SetState( ((const SfxBoolItem*)pItem)->GetValue() ? STATE_CHECK : STATE_NOCHECK );
+ if ( rArgSet.GetItemState( FID_VALID_HELPTITLE, TRUE, &pItem ) == SFX_ITEM_SET )
+ aEdtTitle.SetText( ((const SfxStringItem*)pItem)->GetValue() );
+ if ( rArgSet.GetItemState( FID_VALID_HELPTEXT, TRUE, &pItem ) == SFX_ITEM_SET )
+ aEdInputHelp.SetText( ((const SfxStringItem*)pItem)->GetValue() );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_12)
+
+BOOL __EXPORT ScTPValidationHelp::FillItemSet( SfxItemSet& rArgSet )
+{
+ rArgSet.Put( SfxBoolItem( FID_VALID_SHOWHELP, aTsbHelp.GetState() == STATE_CHECK ) );
+ rArgSet.Put( SfxStringItem( FID_VALID_HELPTITLE, aEdtTitle.GetText() ) );
+ rArgSet.Put( SfxStringItem( FID_VALID_HELPTEXT, aEdInputHelp.GetText() ) );
+
+ return TRUE;
+}
+
+
+
+//========================================================================
+//========================================================================
+// Werte-Tabpage:
+#pragma SEG_FUNCDEF(validate_13)
+
+ScTPValidationError::ScTPValidationError( Window* pParent,
+ const SfxItemSet& rArgSet )
+
+ : SfxTabPage ( pParent,
+ ScResId( TP_VALIDATION_ERROR ),
+ rArgSet ),
+ aTsbShow ( this, ScResId( TSB_SHOW ) ),
+ aFtAction ( this, ScResId( FT_ACTION ) ),
+ aLbAction ( this, ScResId( LB_ACTION ) ),
+ aBtnSearch ( this, ScResId( BTN_SEARCH ) ),
+ aFtTitle ( this, ScResId( FT_TITLE ) ),
+ aEdtTitle ( this, ScResId( EDT_TITLE ) ),
+ aFtError ( this, ScResId( FT_ERROR ) ),
+ aEdError ( this, ScResId( EDT_ERROR ) ),
+ aGrpContent ( this, ScResId( GRP_CONTENT ) ),
+
+ rSet ( rArgSet )
+{
+ Init();
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_14)
+
+__EXPORT ScTPValidationError::~ScTPValidationError()
+{
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_15)
+
+void ScTPValidationError::Init()
+{
+ aLbAction.SetSelectHdl( LINK( this, ScTPValidationError, SelectActionHdl ) );
+ aBtnSearch.SetClickHdl( LINK( this, ScTPValidationError, ClickSearchHdl ) );
+
+ aLbAction.SelectEntryPos( 0 );
+ aTsbShow.EnableTriState( FALSE );
+
+ SelectActionHdl( NULL );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_16)
+
+USHORT* __EXPORT ScTPValidationError::GetRanges()
+{
+ return pValueRanges;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_17)
+
+SfxTabPage* __EXPORT ScTPValidationError::Create( Window* pParent,
+ const SfxItemSet& rArgSet )
+{
+ return ( new ScTPValidationError( pParent, rArgSet ) );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_18)
+
+void __EXPORT ScTPValidationError::Reset( const SfxItemSet& rArgSet )
+{
+ const SfxPoolItem* pItem;
+
+ if ( rArgSet.GetItemState( FID_VALID_SHOWERR, TRUE, &pItem ) == SFX_ITEM_SET )
+ aTsbShow.SetState( ((const SfxBoolItem*)pItem)->GetValue() ? STATE_CHECK : STATE_NOCHECK );
+ if ( rArgSet.GetItemState( FID_VALID_ERRSTYLE, TRUE, &pItem ) == SFX_ITEM_SET )
+ aLbAction.SelectEntryPos( ((const SfxAllEnumItem*)pItem)->GetValue() );
+ if ( rArgSet.GetItemState( FID_VALID_ERRTITLE, TRUE, &pItem ) == SFX_ITEM_SET )
+ aEdtTitle.SetText( ((const SfxStringItem*)pItem)->GetValue() );
+ if ( rArgSet.GetItemState( FID_VALID_ERRTEXT, TRUE, &pItem ) == SFX_ITEM_SET )
+ aEdError.SetText( ((const SfxStringItem*)pItem)->GetValue() );
+
+ SelectActionHdl( NULL );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_19)
+
+BOOL __EXPORT ScTPValidationError::FillItemSet( SfxItemSet& rArgSet )
+{
+ rArgSet.Put( SfxBoolItem( FID_VALID_SHOWERR, aTsbShow.GetState() == STATE_CHECK ) );
+ rArgSet.Put( SfxAllEnumItem( FID_VALID_ERRSTYLE, aLbAction.GetSelectEntryPos() ) );
+ rArgSet.Put( SfxStringItem( FID_VALID_ERRTITLE, aEdtTitle.GetText() ) );
+ rArgSet.Put( SfxStringItem( FID_VALID_ERRTEXT, aEdError.GetText() ) );
+
+ return TRUE;
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_1a)
+
+IMPL_LINK( ScTPValidationError, SelectActionHdl, ListBox *, pLb )
+{
+ ScValidErrorStyle eStyle = (ScValidErrorStyle) aLbAction.GetSelectEntryPos();
+ BOOL bMacro = ( eStyle == SC_VALERR_MACRO );
+
+ aBtnSearch.Enable( bMacro );
+ aFtError.Enable( !bMacro );
+ aEdError.Enable( !bMacro );
+
+ return( 0L );
+}
+
+// -----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(validate_1b)
+
+IMPL_LINK( ScTPValidationError, ClickSearchHdl, PushButton*, pBtn )
+{
+ Window* pOld = Application::GetDefDialogParent();
+ Application::SetDefDialogParent( this );
+ SbMethod* pMethod = BasicIDE::ChooseMacro(FALSE, TRUE);
+ Application::SetDefDialogParent( pOld );
+
+ if (pMethod)
+ {
+ SbModule* pModule = pMethod->GetModule();
+ SbxObject* pObject = pModule->GetParent();
+ DBG_ASSERT(pObject->IsA(TYPE(StarBASIC)), "Kein Basic gefunden!");
+
+ String aMacro = pMethod->GetName();
+
+ // zusammengesetzter Name aus Modul etc. erst, wenn er auch
+ // zum Ausfuehren wieder aufgeloest werden kann
+#if 0
+ aMacro += '.';
+ aMacro += pModule->GetName();
+ aMacro += '.';
+ aMacro += pObject->GetName();
+ aMacro += '.';
+ if (pObject->GetParent())
+ {
+ // Dokumentenbasic
+ aMacro += pObject->GetParent()->GetName();
+ }
+ else
+ {
+ // Applikationsbasic
+ aMacro += SFX_APP()->GetName();
+ }
+ // aMacro liegt nun in folgender Form vor:
+ // "Macroname.Modulname.Libname.Dokumentname" oder
+ // "Macroname.Modulname.Libname.Applikationsname"
+#endif
+
+ aEdtTitle.SetText( aMacro );
+ }
+
+ return( 0L );
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.9 2000/09/17 14:08:59 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.8 2000/09/04 13:52:08 tbe
+ basicide, isetbrw, si, vcdlged from svx to basctl
+
+ Revision 1.7 2000/08/31 16:38:21 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.6 2000/05/25 10:20:06 er
+ NOOLDSV
+
+ Revision 1.5 2000/02/11 12:24:23 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.4 1997/12/05 18:54:46 ANK
+ Includes geaendert
+
+
+ Rev 1.3 05 Dec 1997 19:54:46 ANK
+ Includes geaendert
+
+ Rev 1.2 16 Dec 1996 20:14:32 NN
+ Leerzellen default an, ggf.disablen, SetDefModalDialogParent
+
+ Rev 1.1 16 Dec 1996 16:57:30 NN
+ Items rein/raus
+
+ Rev 1.0 13 Dec 1996 09:35:24 SOH
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/dbgui/validate.src b/sc/source/ui/dbgui/validate.src
new file mode 100644
index 000000000000..fc240cc05dff
--- /dev/null
+++ b/sc/source/ui/dbgui/validate.src
@@ -0,0 +1,1288 @@
+/*************************************************************************
+ *
+ * $RCSfile: validate.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include "validate.hrc"
+
+
+TabDialog TAB_DLG_VALIDATION
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 289 , 176 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Gültigkeit : G³ltigkeit */
+ Text = "Gültigkeit" ;
+ Text [ ENGLISH ] = "Validation" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_VALIDATION_VALUES ;
+ Text = "Werte" ;
+ Text [ ENGLISH ] = "Values" ;
+ PageResID = TP_VALIDATION_VALUES ;
+ Text [ english_us ] = "Values" ;
+ Text [ swedish ] = "Värden" ;
+ Text [ danish ] = "Værdier" ;
+ Text [ italian ] = "Valori" ;
+ Text [ spanish ] = "Valores" ;
+ Text [ french ] = "Valeurs" ;
+ Text [ dutch ] = "Waarden" ;
+ Text [ portuguese ] = "Valores" ;
+ Text [ portuguese_brazilian ] = "Werte" ;
+ Text[ chinese_simplified ] = "ÊýÖµ";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "Wartoœci";
+ Text[ japanese ] = "Ý’è";
+ Text[ chinese_traditional ] = "¼Æ­È";
+ Text[ arabic ] = "ÇáÞíã";
+ Text[ greek ] = "ÔéìÝò";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðerler";
+ };
+ PageItem
+ {
+ Identifier = TP_VALIDATION_INPUTHELP ;
+ Text = "Eingabehilfe" ;
+ Text [ ENGLISH ] = "Input help" ;
+ PageResID = TP_VALIDATION_INPUTHELP ;
+ Text [ english_us ] = "Input Help" ;
+ Text [ swedish ] = "Inmatningshjälp" ;
+ Text [ danish ] = "Inputhjælp" ;
+ Text [ italian ] = "Aiuto per la digitazione" ;
+ Text [ spanish ] = "Ayuda de entrada" ;
+ Text [ french ] = "Aide à la saisie" ;
+ Text [ dutch ] = "Invoerhulp" ;
+ Text [ portuguese ] = "Ajuda de entrada" ;
+ Text [ portuguese_brazilian ] = "Eingabehilfe" ;
+ Text[ chinese_simplified ] = "ÊäÈë°ïÖú";
+ Text[ russian ] = "Ïîìîùü ââîäà";
+ Text[ polish ] = "Pomoc przy wprow.";
+ Text[ japanese ] = "“ü—ÍŽžÒ¯¾°¼Þ";
+ Text[ chinese_traditional ] = "¿é¤JÀ°§U";
+ Text[ arabic ] = "ãÓÇÚÏÉ ÇáÅÏÎÇá";
+ Text[ greek ] = "ÂïÞèåéá åéóáãùãÞò";
+ Text[ korean ] = "µµ¿ò¸» »ðÀÔ";
+ Text[ turkish ] = "Giriþ yardýmý";
+ };
+ PageItem
+ {
+ Identifier = TP_VALIDATION_ERROR ;
+ Text = "Fehlermeldung" ;
+ Text [ ENGLISH ] = "Error message" ;
+ PageResID = TP_VALIDATION_ERROR ;
+ Text [ english_us ] = "Error Alert" ;
+ Text [ swedish ] = "Felmeddelande" ;
+ Text [ danish ] = "Fejlmelding" ;
+ Text [ italian ] = "Messaggio di errore" ;
+ Text [ spanish ] = "Mensaje de error" ;
+ Text [ french ] = "Message d'erreur" ;
+ Text [ dutch ] = "Foutmelding" ;
+ Text [ portuguese ] = "Mensagem de erro" ;
+ Text [ portuguese_brazilian ] = "Fehlermeldung" ;
+ Text[ chinese_simplified ] = "´íÎ󱨸æ";
+ Text[ russian ] = "Ñîîáùåíèå îá îøèáêå";
+ Text[ polish ] = "Komunikat o b³êdzie";
+ Text[ japanese ] = "´×°Ò¯¾°¼Þ";
+ Text[ chinese_traditional ] = "¿ù»~³ø§i";
+ Text[ arabic ] = "ÑÓÇáÉ ÎØÃ";
+ Text[ greek ] = "ÌÞíõìá óöÜëìáôïò";
+ Text[ korean ] = "¿À·ù °æ°í";
+ Text[ turkish ] = "Hata iletisi";
+ };
+ };
+ };
+ Text [ english_us ] = "Validity" ;
+ Text [ swedish ] = "Validitet" ;
+ Text [ danish ] = "Validitet" ;
+ Text [ italian ] = "Validità" ;
+ Text [ spanish ] = "Validez" ;
+ Text [ french ] = "Validité" ;
+ Text [ dutch ] = "Geldigheid" ;
+ Text [ portuguese ] = "Validade" ;
+ Text [ portuguese_brazilian ] = "Gültigkeit" ;
+ Text[ chinese_simplified ] = "ÓÐЧÐÔ";
+ Text[ russian ] = "Ïðîâåðêà";
+ Text[ polish ] = "Wa¿noœæ";
+ Text[ japanese ] = "ÃÞ°À‚Ì“ü—Í‹K‘¥";
+ Text[ chinese_traditional ] = "¦³®Ä";
+ Text[ arabic ] = "ÇáÕáÇÍíÉ";
+ Text[ greek ] = "Éó÷ýò";
+ Text[ korean ] = "À¯È¿¼º";
+ Text[ turkish ] = "Geçerlilik";
+};
+
+TabPage TP_VALIDATION_VALUES
+{
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Werte" ;
+ Text [ ENGLISH ] = "Values" ;
+ FixedText FT_ALLOW
+ {
+ Pos = MAP_APPFONT ( 12 , 20 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Zulassen" ;
+ Text [ ENGLISH ] = "~Allow" ;
+ Text [ dutch ] = "~Toestaan" ;
+ Text [ english_us ] = "~Allow" ;
+ Text [ swedish ] = "T~illåt" ;
+ Text [ danish ] = "Tillad" ;
+ Text [ italian ] = "Permetti" ;
+ Text [ spanish ] = "Per~mitir" ;
+ Text [ french ] = "~Autoriser" ;
+ Text [ portuguese_brazilian ] = "~Zulassen" ;
+ Text [ portuguese ] = "~Permitir" ;
+ Text[ chinese_simplified ] = "ÔÊÐí(~A)";
+ Text[ russian ] = "Ðàçðåøèòü";
+ Text[ polish ] = "Pozwól";
+ Text[ japanese ] = "“ü—Í’l‚ÌŽí—Þ(~A)";
+ Text[ chinese_traditional ] = "®e³\\(~A)";
+ Text[ arabic ] = "ÓãÇÍ";
+ Text[ greek ] = "Íá åðéôñáðåß";
+ Text[ korean ] = "Çã¿ë(~A)";
+ Text[ turkish ] = "~Geçerli";
+ };
+ ListBox LB_ALLOW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 18 ) ;
+ Size = MAP_APPFONT ( 91 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ // Reihenfolge entspricht enum ScValidationMode
+ StringList =
+ {
+ < "Jeden Wert" ; Default ; > ;
+ < "Ganze Zahl" ; Default ; > ;
+ < "Dezimal" ; Default ; > ;
+ < "Datum" ; Default ; > ;
+ < "Zeit" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 6 : Textlänge*/
+ < "Textlänge" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Jeden Wert" ; Default ; > ;
+ < "Ganze Zahl" ; Default ; > ;
+ < "Dezimal" ; Default ; > ;
+ < "Datum" ; Default ; > ;
+ < "Zeit" ; Default ; > ;
+ < "Textlänge" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Todos os valores" ; Default ; > ;
+ < "Números inteiros" ; Default ; > ;
+ < "Decimal" ; Default ; > ;
+ < "Data" ; Default ; > ;
+ < "Hora" ; Default ; > ;
+ < "Comprimento do texto" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "All values" ; Default ; > ;
+ < "Whole Numbers" ; Default ; > ;
+ < "Decimal" ; Default ; > ;
+ < "Date" ; Default ; > ;
+ < "Time" ; Default ; > ;
+ < "Text Length" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Jeden Wert" ; Default ; > ;
+ < "Ganze Zahl" ; Default ; > ;
+ < "Dezimal" ; Default ; > ;
+ < "Datum" ; Default ; > ;
+ < "Zeit" ; Default ; > ;
+ < "Textlänge" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Varje värde" ; Default ; > ;
+ < "Heltal" ; Default ; > ;
+ < "Decimal" ; Default ; > ;
+ < "Datum" ; Default ; > ;
+ < "Tid" ; Default ; > ;
+ < "Textlängd" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Vilkårlig værdi" ; Default ; > ;
+ < "Helt tal" ; Default ; > ;
+ < "Decimal" ; Default ; > ;
+ < "Dato" ; Default ; > ;
+ < "Tid" ; Default ; > ;
+ < "Tekstlængde" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Ogni valore" ; Default ; > ;
+ < "Numero intero" ; Default ; > ;
+ < "Decimale" ; Default ; > ;
+ < "Data" ; Default ; > ;
+ < "Orario" ; Default ; > ;
+ < "Lunghezza testo" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Cada valor" ; Default ; > ;
+ < "Entero" ; Default ; > ;
+ < "Decimal" ; Default ; > ;
+ < "Fecha" ; Default ; > ;
+ < "Hora" ; Default ; > ;
+ < "Longitud del texto" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Toutes les valeurs" ; Default ; > ;
+ < "Nombre entier" ; Default ; > ;
+ < "Nombre décimal" ; Default ; > ;
+ < "Date" ; Default ; > ;
+ < "Heure" ; Default ; > ;
+ < "Longueur du texte" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Iedere waarde" ; Default ; > ;
+ < "Geheel getal" ; Default ; > ;
+ < "Decimaal" ; Default ; > ;
+ < "Datum" ; Default ; > ;
+ < "Tijd" ; Default ; > ;
+ < "Tekstlengte" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ËùÓеÄÊýÖµ" ; Default ; > ;
+ < "ÕûÊý" ; Default ; > ;
+ < "Ê®½øÖÆ" ; Default ; > ;
+ < "ÈÕÆÚ" ; Default ; > ;
+ < "ʱ¼ä" ; Default ; > ;
+ < "ÎÄ×Ö³¤¶È" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Âñå çíà÷åíèÿ" ; Default ; > ;
+ < "Öåëîå ÷èñëî" ; Default ; > ;
+ < "Äðîáü" ; Default ; > ;
+ < "Äàòà" ; Default ; > ;
+ < "Âðåìÿ" ; Default ; > ;
+ < "Äëèíà òåêñòà" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Ka¿d¹ wartoœæ" ; Default ; > ;
+ < "Liczba ca³kowita" ; Default ; > ;
+ < "Dziesiêtny" ; Default ; > ;
+ < "Data" ; Default ; > ;
+ < "Czas" ; Default ; > ;
+ < "D³ugoœæ tekstu" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚·‚ׂĂ̒l" ; Default ; > ;
+ < "®”" ; Default ; > ;
+ < "¬”“_”" ; Default ; > ;
+ < "“ú•t" ; Default ; > ;
+ < "Žž" ; Default ; > ;
+ < "÷½Ä‚Ì’·‚³" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "©Ò¦³ªº¼Æ­È" ; Default ; > ;
+ < "¾ã¼Æ" ; Default ; > ;
+ < "¤Q¶i¨î" ; Default ; > ;
+ < "¤é´Á" ; Default ; > ;
+ < "®É¶¡" ; Default ; > ;
+ < "¥»¤åªø«×" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ßá ÇáÞíã" ; Default ; > ;
+ < "ÃÑÞÇã ßÇãáÉ" ; Default ; > ;
+ < "ÚÔÑíÉ" ; Default ; > ;
+ < "ÇáÊÇÑíÎ" ; Default ; > ;
+ < "ÇáæÞÊ" ; Default ; > ;
+ < "Øæá ÇáäÕ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "¼ëåò ôéò ôéìÝò" ; Default ; > ;
+ < "ÁêÝñáéïé áñéèìïß" ; Default ; > ;
+ < "Äåêáäéêü" ; Default ; > ;
+ < "Çìåñïìçíßá" ; Default ; > ;
+ < "¿ñá" ; Default ; > ;
+ < "ÌÞêïò êåéìÝíïõ" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¸ðµç °ª" ; Default ; > ;
+ < "Àüü ¹øÈ£" ; Default ; > ;
+ < "¼Ò¼ö" ; Default ; > ;
+ < "ÀÏÀÚ" ; Default ; > ;
+ < "½Ã°£" ; Default ; > ;
+ < "ÅؽºÆ® ±æÀÌ" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < "Jeden Wert" ; Default ; > ;
+ < "Ganze Zahl" ; Default ; > ;
+ < "Dezimal" ; Default ; > ;
+ < "Datum" ; Default ; > ;
+ < "Zeit" ; Default ; > ;
+ < "Textlänge" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Her deðer" ; Default ; > ;
+ < "Tamsayý" ; Default ; > ;
+ < "Ondalýk" ; Default ; > ;
+ < "Tarih" ; Default ; > ;
+ < "Saat" ; Default ; > ;
+ < "Metin uzunluðu" ; Default ; > ;
+ };
+ };
+ FixedText FT_VALUE
+ {
+ Pos = MAP_APPFONT ( 12 , 62 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Daten" ;
+ Text [ ENGLISH ] = "~Data" ;
+ Text [ english_us ] = "~Data" ;
+ Text [ swedish ] = "~Data" ;
+ Text [ danish ] = "Data" ;
+ Text [ italian ] = "~Dati" ;
+ Text [ spanish ] = "~Datos" ;
+ Text [ french ] = "~Données" ;
+ Text [ dutch ] = "~Gegevens" ;
+ Text [ portuguese ] = "~Dados" ;
+ Text [ portuguese_brazilian ] = "~Daten" ;
+ Text[ chinese_simplified ] = "Êý¾Ý(~D)";
+ Text[ russian ] = "Äàííûå";
+ Text[ polish ] = "Dane";
+ Text[ japanese ] = "ÃÞ°À(~D)";
+ Text[ chinese_traditional ] = "¸ê®Æ(~D)";
+ Text[ arabic ] = "ÈíÇäÇÊ";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ(~D)";
+ Text[ turkish ] = "~Veriler";
+ };
+ ListBox LB_VALUE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 60 ) ;
+ Size = MAP_APPFONT ( 91 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ // Reihenfolge entspricht enum ScConditionMode
+ StringList =
+ {
+ < "gleich" ; Default ; > ;
+ < "kleiner als" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 3 : größer als*/
+ < "größer als" ; Default ; > ;
+ < "kleiner oder gleich" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 5 : größer oder gleich*/
+ < "größer oder gleich" ; Default ; > ;
+ < "ungleich" ; Default ; > ;
+ < "zwischen" ; Default ; > ;
+ < "nicht zwischen" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "gleich" ; Default ; > ;
+ < "kleiner als" ; Default ; > ;
+ < "größer als" ; Default ; > ;
+ < "kleiner oder gleich" ; Default ; > ;
+ < "größer oder gleich" ; Default ; > ;
+ < "ungleich" ; Default ; > ;
+ < "zwischen" ; Default ; > ;
+ < "nicht zwischen" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "equal" ; Default ; > ;
+ < "less than" ; Default ; > ;
+ < "greater than" ; Default ; > ;
+ < "less than or equal" ; Default ; > ;
+ < "greater or equal" ; Default ; > ;
+ < "not equal" ; Default ; > ;
+ < "between" ; Default ; > ;
+ < "not between" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "gleich" ; Default ; > ;
+ < "kleiner als" ; Default ; > ;
+ < "größer als" ; Default ; > ;
+ < "kleiner oder gleich" ; Default ; > ;
+ < "größer oder gleich" ; Default ; > ;
+ < "ungleich" ; Default ; > ;
+ < "zwischen" ; Default ; > ;
+ < "nicht zwischen" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "lika med" ; Default ; > ;
+ < "mindre än" ; Default ; > ;
+ < "större än" ; Default ; > ;
+ < "mindre än eller lika med" ; Default ; > ;
+ < "större än eller lika med" ; Default ; > ;
+ < "inte lika med" ; Default ; > ;
+ < "mellan" ; Default ; > ;
+ < "inte mellan" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "lig med" ; Default ; > ;
+ < "mindre end" ; Default ; > ;
+ < "større end" ; Default ; > ;
+ < "mindre end eller lig med" ; Default ; > ;
+ < "større end eller lig med" ; Default ; > ;
+ < "forskellig fra" ; Default ; > ;
+ < "mellem" ; Default ; > ;
+ < "ikke mellem" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "uguale" ; Default ; > ;
+ < "più piccolo di" ; Default ; > ;
+ < "maggiore di" ; Default ; > ;
+ < "inferiore o uguale" ; Default ; > ;
+ < "maggiore o uguale" ; Default ; > ;
+ < "diverso" ; Default ; > ;
+ < "tra" ; Default ; > ;
+ < "non tra" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "igual" ; Default ; > ;
+ < "menor que" ; Default ; > ;
+ < "mayor que" ; Default ; > ;
+ < "menor o igual que" ; Default ; > ;
+ < "mayor o igual que" ; Default ; > ;
+ < "distinto de" ; Default ; > ;
+ < "entre" ; Default ; > ;
+ < "no entre" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "égal à" ; Default ; > ;
+ < "inférieur à" ; Default ; > ;
+ < "supérieure à" ; Default ; > ;
+ < "inférieur ou égal à" ; Default ; > ;
+ < "supérieure ou égale à" ; Default ; > ;
+ < "différent de" ; Default ; > ;
+ < "entre" ; Default ; > ;
+ < "non compris entre" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "gelijk aan" ; Default ; > ;
+ < "kleiner dan" ; Default ; > ;
+ < "groter dan" ; Default ; > ;
+ < "kleiner dan of gelijk aan" ; Default ; > ;
+ < "groter dan of gelijk aan" ; Default ; > ;
+ < "niet gelijk aan" ; Default ; > ;
+ < "tussen" ; Default ; > ;
+ < "niet tussen" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "igual" ; Default ; > ;
+ < "menor" ; Default ; > ;
+ < "maior" ; Default ; > ;
+ < "menor ou igual a" ; Default ; > ;
+ < "maior ou igual a" ; Default ; > ;
+ < "desigual" ; Default ; > ;
+ < "entre" ; Default ; > ;
+ < "não entre" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "µÈÓÚ" ; Default ; > ;
+ < "СÓÚ" ; Default ; > ;
+ < "´óÓÚ" ; Default ; > ;
+ < "СÓÚ»òµÈÓÚ" ; Default ; > ;
+ < "´óÓÚ»òµÈÓÚ" ; Default ; > ;
+ < "²»µÈÓÚ" ; Default ; > ;
+ < "ÔÚÖ®¼ä" ; Default ; > ;
+ < "²»ÔÚÖ®¼ä" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "ðàâíî" ; Default ; > ;
+ < "ìåíüøå ÷åì" ; Default ; > ;
+ < "áîëüøå ÷åì" ; Default ; > ;
+ < "ìåíüøå èëè ðàâíî" ; Default ; > ;
+ < "áîëüøå èëè ðàâíî" ; Default ; > ;
+ < "íåðàâíî" ; Default ; > ;
+ < "ìåæäó" ; Default ; > ;
+ < "âíå" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "równy" ; Default ; > ;
+ < "mniejszy ni¿" ; Default ; > ;
+ < "wiêkszy ni¿" ; Default ; > ;
+ < "mniejszy lub równy" ; Default ; > ;
+ < "wiêkszy lub równy" ; Default ; > ;
+ < "nie równy" ; Default ; > ;
+ < "miêdzy" ; Default ; > ;
+ < "nie miêdzy" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "ŽŸ‚Ì’l‚É“™‚µ‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚æ‚謂³‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚æ‚è‘å‚«‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’lˆÈ‰º" ; Default ; > ;
+ < "ŽŸ‚Ì’lˆÈã" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚É“™‚µ‚­‚È‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚ÌŠÔ" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚ÌŠÔ‚Å‚È‚¢" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "µ¥©ó" ; Default ; > ;
+ < "¤p©ó" ; Default ; > ;
+ < "¤j©ó" ; Default ; > ;
+ < "¤p©ó©Îµ¥©ó" ; Default ; > ;
+ < "¤j©ó©Îµ¥©ó" ; Default ; > ;
+ < "¤£µ¥©ó" ; Default ; > ;
+ < "¦b¤§¶¡" ; Default ; > ;
+ < "¤£¦b¤§¶¡" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "íÓÇæí" ; Default ; > ;
+ < "ÃÞá ãä" ; Default ; > ;
+ < "ÃßÈÑ ãä" ; Default ; > ;
+ < "ÃÕÛÑ ãä Ãæ íÓÇæí" ; Default ; > ;
+ < "ÃßÈÑ ãä Ãæ íÓÇæí" ; Default ; > ;
+ < "ÛíÑ ãÊÓÇæí" ; Default ; > ;
+ < "Èíä" ; Default ; > ;
+ < "áíÓ Èíä" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ºóïí" ; Default ; > ;
+ < "ìéêñüôåñï áðü" ; Default ; > ;
+ < "ìåãáëýôåñï áðü" ; Default ; > ;
+ < "ìéêñüôåñï Þ ßóï" ; Default ; > ;
+ < "ìåãáëýôåñï Þ ßóï" ; Default ; > ;
+ < "ÄéÜöïñï" ; Default ; > ;
+ < "ìåôáîý" ; Default ; > ;
+ < "ü÷é ìåôáîý" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "µ¿µî" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ¹Ì¸¸ÀÓ" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ÃÊ°úÀÓ" ; Default ; > ;
+ < "ÀÌÇÏ" ; Default ; > ;
+ < "ÀÌ»ó" ; Default ; > ;
+ < "´ÙÀ½°ú °°Áö ¾ÊÀ½" ; Default ; > ;
+ < "´ÙÀ½ÀÇ »çÀÌÀÓ" ; Default ; > ;
+ < "»çÀÌ°¡ ¾Æ´Ñ" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < "gleich" ; Default ; > ;
+ < "kleiner als" ; Default ; > ;
+ < "größer als" ; Default ; > ;
+ < "kleiner oder gleich" ; Default ; > ;
+ < "größer oder gleich" ; Default ; > ;
+ < "ungleich" ; Default ; > ;
+ < "zwischen" ; Default ; > ;
+ < "nicht zwischen" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "eþittir" ; Default ; > ;
+ < "küçüktür" ; Default ; > ;
+ < "büyüktür" ; Default ; > ;
+ < "küçük ya da eþittir" ; Default ; > ;
+ < "büyük ya da eþittir" ; Default ; > ;
+ < "eþit deðil" ; Default ; > ;
+ < "arada" ; Default ; > ;
+ < "arada deðil" ; Default ; > ;
+ };
+ };
+ FixedText FT_MIN
+ {
+ Pos = MAP_APPFONT ( 12 , 90 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Minimum" ;
+ Text [ ENGLISH ] = "~Minimum" ;
+ Text [ english_us ] = "~Minimum" ;
+ Text [ swedish ] = "~Minimum" ;
+ Text [ danish ] = "Minimum" ;
+ Text [ italian ] = "~Minimo" ;
+ Text [ spanish ] = "~Mínimo" ;
+ Text [ french ] = "~Minimum" ;
+ Text [ dutch ] = "~Minimum" ;
+ Text [ portuguese ] = "~Mínimo" ;
+ Text [ portuguese_brazilian ] = "~Minimum" ;
+ Text[ chinese_simplified ] = "×îС(~M)";
+ Text[ russian ] = "Ìèíèìóì";
+ Text[ polish ] = "Minimum";
+ Text[ japanese ] = "Ŭ’l(~M)";
+ Text[ chinese_traditional ] = "³Ì¤p(~M)";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÞÕì";
+ Text[ greek ] = "ÅëÜ÷éóôï";
+ Text[ korean ] = "ÃÖ¼Ò(~M)";
+ Text[ turkish ] = "A~sgari";
+ };
+ Edit EDT_MIN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 88 ) ;
+ Size = MAP_APPFONT ( 160 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_MAX
+ {
+ Pos = MAP_APPFONT ( 12 , 106 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "M~aximum" ;
+ Text [ ENGLISH ] = "Ma~ximum" ;
+ Text [ english_us ] = "Ma~ximum" ;
+ Text [ swedish ] = "M~aximum" ;
+ Text [ danish ] = "Maksimum" ;
+ Text [ italian ] = "M~assimo" ;
+ Text [ spanish ] = "M~áximo" ;
+ Text [ french ] = "M~aximum" ;
+ Text [ dutch ] = "M~aximum" ;
+ Text [ portuguese ] = "M~áximo" ;
+ Text [ portuguese_brazilian ] = "M~aximum" ;
+ Text[ chinese_simplified ] = "×î´óÖµ(~X)";
+ Text[ russian ] = "Ìàêñèìóì";
+ Text[ polish ] = "Maksimum";
+ Text[ japanese ] = "Å‘å’l(~X)";
+ Text[ chinese_traditional ] = "³Ì¤j(~X)";
+ Text[ arabic ] = "ÇáÃÞÕì";
+ Text[ greek ] = "ÌÝãéóôï";
+ Text[ korean ] = "ÃÖ´ë(~X)";
+ Text[ turkish ] = "A~zami";
+ };
+ Edit EDT_MAX
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 104 ) ;
+ Size = MAP_APPFONT ( 160 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ TriStateBox TSB_ALLOW_BLANKS
+ {
+ Pos = MAP_APPFONT ( 80 , 36 ) ;
+ Size = MAP_APPFONT ( 99 , 12 ) ;
+ Text = "~Leerzellen zulassen" ;
+ Text [ ENGLISH ] = "Allow ~blanks" ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "~Lege cellen toestaan" ;
+ Text [ english_us ] = "Allow ~blanks" ;
+ Text [ swedish ] = "Tillåt tomma ce~ller" ;
+ Text [ danish ] = "Ignorer tomme" ;
+ Text [ italian ] = "Permetti celle vuote" ;
+ Text [ spanish ] = "~Permitir celdas vacías" ;
+ Text [ french ] = "Autoriser ~cellules vides" ;
+ Text [ portuguese_brazilian ] = "~Leerzellen zulassen" ;
+ Text [ portuguese ] = "~Permitir células vazias" ;
+ Text[ chinese_simplified ] = "ÔÊÐí¿Õµ¥Ôª¸ñ(~B)";
+ Text[ russian ] = "Ïðîïóñê ïóñòûõ ÿ÷ååê";
+ Text[ polish ] = "Dopuœæ puste komórki";
+ Text[ japanese ] = "‹ó”’¾Ù‚ð‹–‚·(~B)";
+ Text[ chinese_traditional ] = "®e³\\ªÅ®æ(~B)";
+ Text[ arabic ] = "ÇáÓãÇÍ ÈÇáÎáÇíÇ ÇáÝÇÑÛÉ";
+ Text[ greek ] = "Íá åðéôñáðïýí êåíÜ êåëéÜ";
+ Text[ korean ] = "ºí·©Å© ¹«½Ã(~B)";
+ Text[ turkish ] = "~Boþ hücre geçerli";
+ };
+ GroupBox GRP_VALUES
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 126 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Gültigkeitskriterien : G³ltigkeitskriterien */
+ Text = "Gültigkeitskriterien" ;
+ Text [ ENGLISH ] = "Validation settings" ;
+ Text [ english_us ] = "Validity criteria" ;
+ Text [ swedish ] = "Validitetskriterier" ;
+ Text [ danish ] = "Validitetskriterier" ;
+ Text [ italian ] = "Criteri di validità" ;
+ Text [ spanish ] = "Criterios de validez" ;
+ Text [ french ] = "Critères de validité" ;
+ Text [ dutch ] = "Geldigheidscriteria" ;
+ Text [ portuguese ] = "Critérios de validade" ;
+ Text [ portuguese_brazilian ] = "Gültigkeitskriterien" ;
+ Text[ chinese_simplified ] = "ÓÐЧ±ê×¼";
+ Text[ russian ] = "Óñëîâèÿ ïðîâåðêè";
+ Text[ polish ] = "Kryteria wa¿noœci";
+ Text[ japanese ] = "ðŒ‚ÌÝ’è";
+ Text[ chinese_traditional ] = "¦³®Ä¼Ð·Ç";
+ Text[ arabic ] = "ãÚÇííÑ ÇáÕáÇÍíÉ";
+ Text[ greek ] = "ÊñéôÞñéï éó÷ýïò";
+ Text[ korean ] = "À¯È¿¼º ±âÁØ";
+ Text[ turkish ] = "Geçerlilik ölçütleri";
+ };
+ Text [ dutch ] = "Waarden" ;
+ Text [ english_us ] = "Values" ;
+ Text [ swedish ] = "Värden" ;
+ Text [ danish ] = "Værdier" ;
+ Text [ italian ] = "Valori" ;
+ Text [ spanish ] = "Valores" ;
+ Text [ french ] = "Valeurs" ;
+ Text [ portuguese_brazilian ] = "Werte" ;
+ Text [ portuguese ] = "Valores" ;
+ Text[ chinese_simplified ] = "ÊýÖµ";
+ Text[ russian ] = "Çíà÷åíèÿ";
+ Text[ polish ] = "Wartoœci";
+ Text[ japanese ] = "Ý’è";
+ Text[ chinese_traditional ] = "¼Æ­È";
+ Text[ arabic ] = "ÇáÞíã";
+ Text[ greek ] = "ÔéìÝò";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðerler";
+};
+
+TabPage TP_VALIDATION_INPUTHELP
+{
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Eingabehilfe" ;
+ TriStateBox TSB_HELP
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 248 , 12 ) ;
+ Text = "E~ingabehilfen bei Selektion einer Zelle anbieten" ;
+ Text [ ENGLISH ] = "~Show input help when cell is selected" ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "I~nvoerhulp bij selectie van een cel aanbieden" ;
+ Text [ english_us ] = "~Show input help when cell is selected" ;
+ Text [ swedish ] = "Erbjud ~inmatningshjälp vid markering av en cell" ;
+ Text [ danish ] = "Tilbyd inputhjælp ved markering af en celle" ;
+ Text [ italian ] = "Offri aiuti per la digitazione nella cella" ;
+ Text [ spanish ] = "~Mostrar Ayuda de entrada al seleccionar una celda" ;
+ Text [ french ] = "~Aide à la saisie lors de la sélection de cellules" ;
+ Text [ portuguese_brazilian ] = "E~ingabehilfen bei Selektion einer Zelle anbieten" ;
+ Text [ portuguese ] = "~Mostrar ajuda de digitação quando seleccionar célula" ;
+ Text[ chinese_simplified ] = "ÔÚÑ¡¶¨µ¥Ôª¸ñʱÏÔʾÊäÈë°ïÖú(~S)";
+ Text[ russian ] = "Ïðåäëàãàòü ïîìîùü ââîäà ïðè âûäåëåíèè ÿ÷åéêè";
+ Text[ polish ] = "Z~aproponuj pomoc przy wprowadzaniu w przypadku zaznaczonej komórki";
+ Text[ japanese ] = "¾Ù‚Ì‘I‘ðŽž‚ÉÒ¯¾°¼Þ‚ð•\\Ž¦‚·‚é(~S)";
+ Text[ chinese_traditional ] = "¦b¿ï¨úÀx¦s®æ®ÉÅã¥Ü¿é¤J»¡©ú(~S)";
+ Text[ arabic ] = "ÅÙåÇÑ ãÓÇÚÏÉ ÇáÅÏÎÇá ÚäÏ ÊÍÏíÏ ÇáÎáíÉ";
+ Text[ greek ] = "ÅìöÜíéóç âïÞèåéáò åéóáãùãÞò êáôÜ ôçí åðéëïãÞ åíüò êåëéïý";
+ Text[ korean ] = "¼¿ÀÌ ¼±ÅõǾîÁ³À» ¶§ µµ¿ò¸» »ðÀÔ º¸±â(~S)";
+ Text[ turkish ] = "Hücre se~çildiðinde giriþ yardýmý öner";
+ };
+ GroupBox GRP_CONTENT
+ {
+ Pos = MAP_APPFONT ( 6 , 20 ) ;
+ Size = MAP_APPFONT ( 248 , 109 ) ;
+ Text = "Inhalt" ;
+ Text [ ENGLISH ] = "Content" ;
+ Text [ english_us ] = "Contents" ;
+ Text [ swedish ] = "Innehåll" ;
+ Text [ danish ] = "Indhold" ;
+ Text [ italian ] = "Contenuto" ;
+ Text [ spanish ] = "Contenido" ;
+ Text [ french ] = "Contenu" ;
+ Text [ dutch ] = "Inhoud" ;
+ Text [ portuguese ] = "Conteúdo" ;
+ Text [ portuguese_brazilian ] = "Inhalt" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ russian ] = "Ñîäåðæèìîå";
+ Text[ polish ] = "ZawartoϾ";
+ Text[ japanese ] = "“à—e";
+ Text[ chinese_traditional ] = "¤º®e";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ korean ] = "³»¿ë";
+ Text[ turkish ] = "Ýçerik";
+ };
+ FixedText FT_TITLE
+ {
+ Pos = MAP_APPFONT ( 12 , 33 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Titel" ;
+ Text [ ENGLISH ] = "~Title" ;
+ Text [ english_us ] = "~Title" ;
+ Text [ swedish ] = "~Titel" ;
+ Text [ danish ] = "Titel" ;
+ Text [ italian ] = "~Titolo" ;
+ Text [ spanish ] = "~Título" ;
+ Text [ french ] = "~Titre" ;
+ Text [ dutch ] = "~Titel" ;
+ Text [ portuguese ] = "~Título" ;
+ Text [ portuguese_brazilian ] = "~Titel" ;
+ Text[ chinese_simplified ] = "±êÌâ(~T)";
+ Text[ russian ] = "Çàãîëîâîê";
+ Text[ polish ] = "Tytu³";
+ Text[ japanese ] = "À²ÄÙ(~T)";
+ Text[ chinese_traditional ] = "¼ÐÃD(~T)";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ greek ] = "~Ôßôëïò";
+ Text[ korean ] = "Á¦¸ñ(~T)";
+ Text[ turkish ] = "~Baþlýk";
+ };
+ FixedText FT_INPUTHELP
+ {
+ Pos = MAP_APPFONT ( 12 , 48 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Eingabehilfe" ;
+ Text [ ENGLISH ] = "~Input help" ;
+ Text [ dutch ] = "~Invoerhulp" ;
+ Text [ english_us ] = "~Input help" ;
+ Text [ swedish ] = "~Inmatningshjälp" ;
+ Text [ danish ] = "Inputhjælp" ;
+ Text [ italian ] = "Aiuto per la digitazione" ;
+ Text [ spanish ] = "Ayuda de ~entrada" ;
+ Text [ french ] = "~Aide à la saisie" ;
+ Text [ portuguese_brazilian ] = "~Eingabehilfe" ;
+ Text [ portuguese ] = "~Ajuda de entradas" ;
+ Text[ chinese_simplified ] = "ÊäÈë°ïÖú(~I)";
+ Text[ russian ] = "Ïîìîùü ââîäà";
+ Text[ polish ] = "Pomoc przy wprow.";
+ Text[ japanese ] = "“ü—ÍŽžÒ¯¾°¼Þ(~I)";
+ Text[ chinese_traditional ] = "¿é¤JÀ°§U(~I)";
+ Text[ arabic ] = "ãÓÇÚÏÉ ÇáÅÏÎÇá";
+ Text[ greek ] = "ÂïÞèåéá åéóáãùãÞò";
+ Text[ korean ] = "µµ¿ò¸» »ðÀÔ(~I)";
+ Text[ turkish ] = "~Giriþ yardýmý";
+ };
+ Edit EDT_TITLE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 32 ) ;
+ Size = MAP_APPFONT ( 166 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ MultiLineEdit EDT_INPUTHELP
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 48 ) ;
+ Size = MAP_APPFONT ( 166 , 74 ) ;
+ TabStop = TRUE ;
+ VScroll = TRUE ;
+ IgnoreTab = TRUE ;
+ };
+};
+
+TabPage TP_VALIDATION_ERROR
+{
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Fehlermeldung" ;
+ Text [ ENGLISH ] = "Error message" ;
+ GroupBox GRP_CONTENT
+ {
+ Pos = MAP_APPFONT ( 6 , 20 ) ;
+ Size = MAP_APPFONT ( 248 , 109 ) ;
+ Text = "Inhalt" ;
+ Text [ ENGLISH ] = "Content" ;
+ Text [ english_us ] = "Contents" ;
+ Text [ swedish ] = "Innehåll" ;
+ Text [ danish ] = "Indhold" ;
+ Text [ italian ] = "Contenuto" ;
+ Text [ spanish ] = "Contenido" ;
+ Text [ french ] = "Contenu" ;
+ Text [ dutch ] = "Inhoud" ;
+ Text [ portuguese ] = "Conteúdo" ;
+ Text [ portuguese_brazilian ] = "Inhalt" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ russian ] = "Ñîäåðæèìîå";
+ Text[ polish ] = "ZawartoϾ";
+ Text[ japanese ] = "“à—e";
+ Text[ chinese_traditional ] = "¤º®e";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ korean ] = "³»¿ë";
+ Text[ turkish ] = "Ýçerik";
+ };
+ TriStateBox TSB_SHOW
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 248 , 12 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Fehlermeldung bei Eingabe ungültiger Werte anzeigen : ~Fehlermeldung bei Eingabe ung³ltiger Werte anzeigen */
+ Text = "~Fehlermeldung bei Eingabe ungültiger Werte anzeigen" ;
+ Text [ ENGLISH ] = "Show error ~message after invalid values are entered" ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "Fout~melding bij invoer van ongeldige gegevens weergeven" ;
+ Text [ english_us ] = "Show error ~message when invalid values are entered" ;
+ Text [ swedish ] = "Visa ~felmeddelande när ogiltiga värden matas in" ;
+ Text [ danish ] = "Vis fejlmelding ved input af ugyldige værdier" ;
+ Text [ italian ] = "~Mostra messaggio di errore se si digitano dei valori non validi" ;
+ Text [ spanish ] = "Mostrar mensaje de ~error al entrar valores incorrectos" ;
+ Text [ french ] = "Afficher un ~message d'erreur en cas de saisie de valeurs incorrectes" ;
+ Text [ portuguese_brazilian ] = "~Fehlermeldung bei Eingabe ungültiger Werte anzeigen" ;
+ Text [ portuguese ] = "~Mostrar mensagem de erro na entrada de valores incorrectos." ;
+ Text[ chinese_simplified ] = "ÊäÈëÎÞЧÊýֵʱÏÔʾ´íÎ󱨸æ(~M)";
+ Text[ russian ] = "Âûäàâàòü ñîîáùåíèå îá îøèáêå ïðè ââîäå íåäîïóñòèìûõ çíà÷åíèé";
+ Text[ polish ] = "Poka¿ ko~munikat o b³êdzie przy wpisywaniu nieprawid³owych wartoœci";
+ Text[ japanese ] = "—LŒø‚Å‚È‚¢’l‚ð“ü—Í‚µ‚½Û‚É´×°Ò¯¾°¼Þ‚ð•\\Ž¦(~M)";
+ Text[ chinese_traditional ] = "¦b¿é¤JµL®Ä¼Æ­È®ÉÅã¥Ü¿ù»~³ø§i(~M)";
+ Text[ arabic ] = "ÅÙåÇÑ ÑÓÇáÉ ÎØà ÚäÏ ÅÏÎÇá Þíã ÛíÑ ÕÇáÍÉ";
+ Text[ greek ] = "ÅìöÜíéóç ìçíýìáôïò óöÜëìáôïò óå ðåñßðôùóç åéóáãùãÞò ìç Ýãêõñùí ôéìþí";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº °ª ÀԷ½à ¿À·ù ¸Þ¼¼Áö º¸À̱â(~M)";
+ Text[ turkish ] = "~Geçersiz deðer girildiðinde hata iletisi görüntüle";
+ };
+ MultiLineEdit EDT_ERROR
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 61 ) ;
+ Size = MAP_APPFONT ( 166 , 61 ) ;
+ TabStop = TRUE ;
+ VScroll = TRUE ;
+ IgnoreTab = TRUE ;
+ };
+ Edit EDT_TITLE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 47 ) ;
+ Size = MAP_APPFONT ( 166 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_ERROR
+ {
+ Pos = MAP_APPFONT ( 12 , 61 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Fehlermeldung" ;
+ Text [ ENGLISH ] = "~Error message" ;
+ Text [ english_us ] = "~Error message" ;
+ Text [ swedish ] = "~Felmeddelande" ;
+ Text [ danish ] = "Fejlmelding" ;
+ Text [ italian ] = "Messaggio di errore" ;
+ Text [ spanish ] = "~Mensaje de error" ;
+ Text [ french ] = "~Message d'erreur" ;
+ Text [ dutch ] = "~Foutmelding" ;
+ Text [ portuguese ] = "~Mensagem de erro" ;
+ Text [ portuguese_brazilian ] = "~Fehlermeldung" ;
+ Text[ chinese_simplified ] = "´íÎ󱨸æ(~E)";
+ Text[ russian ] = "Ñîîáùåíèå îá îøèáêå";
+ Text[ polish ] = "Komunikat o b³êdzie";
+ Text[ japanese ] = "´×°Ò¯¾°¼Þ(~E)";
+ Text[ chinese_traditional ] = "¿ù»~³ø§i(~E)";
+ Text[ arabic ] = "ÑÓÇáÉ ÎØÃ";
+ Text[ greek ] = "ÌÞíõìá óöÜëìáôïò";
+ Text[ korean ] = "¿À·ù ¸Þ¼¼Áö(~E)";
+ Text[ turkish ] = "~Hata iletisi";
+ };
+ FixedText FT_TITLE
+ {
+ Pos = MAP_APPFONT ( 12 , 48 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Titel" ;
+ Text [ ENGLISH ] = "~Title" ;
+ Text [ english_us ] = "~Title" ;
+ Text [ swedish ] = "~Titel" ;
+ Text [ danish ] = "Titel" ;
+ Text [ italian ] = "~Titolo" ;
+ Text [ spanish ] = "~Título" ;
+ Text [ french ] = "~Titre" ;
+ Text [ dutch ] = "~Titel" ;
+ Text [ portuguese ] = "~Título" ;
+ Text [ portuguese_brazilian ] = "~Titel" ;
+ Text[ chinese_simplified ] = "±êÌâ(~T)";
+ Text[ russian ] = "Çàãîëîâîê";
+ Text[ polish ] = "Tytu³";
+ Text[ japanese ] = "À²ÄÙ(~T)";
+ Text[ chinese_traditional ] = "¼ÐÃD(~T)";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ greek ] = "~Ôßôëïò";
+ Text[ korean ] = "Á¦¸ñ(~T)";
+ Text[ turkish ] = "~Baþlýk";
+ };
+ FixedText FT_ACTION
+ {
+ Pos = MAP_APPFONT ( 12 , 33 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Aktion" ;
+ Text [ ENGLISH ] = "~Action" ;
+ Text [ english_us ] = "~Action" ;
+ Text [ swedish ] = "~Åtgärd" ;
+ Text [ danish ] = "Handling" ;
+ Text [ italian ] = "Oper~azione" ;
+ Text [ spanish ] = "~Acción" ;
+ Text [ french ] = "~Action" ;
+ Text [ dutch ] = "~Activiteit" ;
+ Text [ portuguese ] = "~Acção" ;
+ Text [ portuguese_brazilian ] = "~Aktion" ;
+ Text[ chinese_simplified ] = "²Ù×÷(~A)";
+ Text[ russian ] = "Äåéñòâèå";
+ Text[ polish ] = "Akcja";
+ Text[ japanese ] = "±¸¼®Ý(~A)";
+ Text[ chinese_traditional ] = "¾Þ§@(~A)";
+ Text[ arabic ] = "ÅÌÑÇÁ";
+ Text[ greek ] = "~ÅíÝñãåéá";
+ Text[ korean ] = "µ¿ÀÛ(~A)";
+ Text[ turkish ] = "~Ýþlem";
+ };
+ ListBox LB_ACTION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 80 , 30 ) ;
+ Size = MAP_APPFONT ( 102 , 76 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ // Reihenfolge entspricht enum ScValidErrorStyle
+ StringList =
+ {
+ < "Stopp" ; Default ; > ;
+ < "Warnung" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Makro" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Stop" ; Default ; > ;
+ < "Warnung" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Makro" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Stop" ; Default ; > ;
+ < "Aviso" ; Default ; > ;
+ < "Informação" ; Default ; > ;
+ < "Macro" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "Stop" ; Default ; > ;
+ < "Warning" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Macro" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Stop" ; Default ; > ;
+ < "Warnung" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Makro" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Stopp" ; Default ; > ;
+ < "Varning" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Makro" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Stop" ; Default ; > ;
+ < "Advarsel" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Makro" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Stop" ; Default ; > ;
+ < "Avviso" ; Default ; > ;
+ < "Informazione" ; Default ; > ;
+ < "Macro" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "Stop" ; Default ; > ;
+ < "Advertencia" ; Default ; > ;
+ < "Información" ; Default ; > ;
+ < "Macro" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Stop" ; Default ; > ;
+ < "Avertissement" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Macro" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Stop" ; Default ; > ;
+ < "Waarschuwing" ; Default ; > ;
+ < "Informatie" ; Default ; > ;
+ < "Macro" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÔÝÍ£" ; Default ; > ;
+ < "¾¯¸æ" ; Default ; > ;
+ < "ÐÅÏ¢" ; Default ; > ;
+ < "ºê" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ñòîï" ; Default ; > ;
+ < "Ïðåäóïðåæäåíèå" ; Default ; > ;
+ < "Èíôîðìàöèÿ" ; Default ; > ;
+ < "Ìàêðîñ" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Zatrzymaj" ; Default ; > ;
+ < "Ostrze¿enie" ; Default ; > ;
+ < "Informacja" ; Default ; > ;
+ < "Makro" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "’†Ž~" ; Default ; > ;
+ < "Œx" ; Default ; > ;
+ < "²ÝÌ«Ò°¼®Ý" ; Default ; > ;
+ < "ϸÛ" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¼È°±" ; Default ; > ;
+ < "ĵ§i" ; Default ; > ;
+ < "¸ê°T" ; Default ; > ;
+ < "¥¨¶°" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÅíÞÇÝ" ; Default ; > ;
+ < "ÊÍÐíÑ" ; Default ; > ;
+ < "ãÚáæãÉ" ; Default ; > ;
+ < "ãÇßÑæ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÄéáêïðÞ" ; Default ; > ;
+ < "Ðñïåéäïðïßçóç" ; Default ; > ;
+ < "Ðëçñïöïñßåò" ; Default ; > ;
+ < "ÌáêñïåíôïëÞ" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "ÁßÁö" ; Default ; > ;
+ < "°æ°í" ; Default ; > ;
+ < "Á¤º¸" ; Default ; > ;
+ < "¸ÅÅ©·Î" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < "Stopp" ; Default ; > ;
+ < "Warnung" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Makro" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Dur" ; Default ; > ;
+ < "Uyarý" ; Default ; > ;
+ < "Bilgi" ; Default ; > ;
+ < "Makro" ; Default ; > ;
+ };
+ };
+ PushButton BTN_SEARCH
+ {
+ Pos = MAP_APPFONT ( 186 , 30 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ Text = "~Durchsuchen..." ;
+ Text [ ENGLISH ] = "~Search..." ;
+ TabStop = TRUE ;
+ Text [ dutch ] = "~Bladeren..." ;
+ Text [ english_us ] = "~Browse..." ;
+ Text [ swedish ] = "~Genomsök..." ;
+ Text [ danish ] = "Gennemse..." ;
+ Text [ italian ] = "~Sfoglia..." ;
+ Text [ spanish ] = "E~xaminar..." ;
+ Text [ french ] = "~Parcourir..." ;
+ Text [ portuguese_brazilian ] = "~Durchsuchen..." ;
+ Text [ portuguese ] = "~Pesquisar..." ;
+ Text[ chinese_simplified ] = "ä¯ÀÀ(~B)...";
+ Text[ russian ] = "Îáçîð...";
+ Text[ polish ] = "Przegl¹~daj...";
+ Text[ japanese ] = "ŒŸõ(~B)...";
+ Text[ chinese_traditional ] = "ÂsÄý(~B)...";
+ Text[ arabic ] = "ÇÓÊÚÑÇÖ...";
+ Text[ greek ] = "ÁíáæÞôçóç...";
+ Text[ korean ] = "ã¾Æº¸±â(~B)...";
+ Text[ turkish ] = "~Tara...";
+ };
+ Text [ dutch ] = "Foutmelding" ;
+ Text [ english_us ] = "Error Alert" ;
+ Text [ swedish ] = "Felmeddelande" ;
+ Text [ danish ] = "Fejlmelding" ;
+ Text [ italian ] = "Messaggio di errore" ;
+ Text [ spanish ] = "Mensaje de error" ;
+ Text [ french ] = "Message d'erreur" ;
+ Text [ portuguese_brazilian ] = "Fehlermeldung" ;
+ Text [ portuguese ] = "Mensagem de erro" ;
+ Text[ chinese_simplified ] = "´íÎ󱨸æ";
+ Text[ russian ] = "Ñîîáùåíèå îá îøèáêå";
+ Text[ polish ] = "Komunikat o b³êdzie";
+ Text[ japanese ] = "´×°Ò¯¾°¼Þ";
+ Text[ chinese_traditional ] = "¿ù»~³ø§i";
+ Text[ arabic ] = "ÑÓÇáÉ ÎØÃ";
+ Text[ greek ] = "ÌÞíõìá óöÜëìáôïò";
+ Text[ korean ] = "¿À·ù °æ°í";
+ Text[ turkish ] = "Hata iletisi";
+};
+
diff --git a/sc/source/ui/docshell/arealink.cxx b/sc/source/ui/docshell/arealink.cxx
new file mode 100644
index 000000000000..bb0b47ec4354
--- /dev/null
+++ b/sc/source/ui/docshell/arealink.cxx
@@ -0,0 +1,442 @@
+/*************************************************************************
+ *
+ * $RCSfile: arealink.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------
+
+#include <sfx2/app.hxx>
+#include <sfx2/docfile.hxx>
+#include <svx/linkmgr.hxx>
+#include <svtools/stritem.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "arealink.hxx"
+
+#include "tablink.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "rangenam.hxx"
+#include "dbcolect.hxx"
+#include "undoblk.hxx"
+#include "globstr.hrc"
+#include "markdata.hxx"
+#include "hints.hxx"
+
+#include "attrib.hxx" // raus, wenn ResetAttrib am Dokument
+#include "patattr.hxx" // raus, wenn ResetAttrib am Dokument
+#include "docpool.hxx" // raus, wenn ResetAttrib am Dokument
+
+TYPEINIT1(ScAreaLink,SvBaseLink);
+
+//------------------------------------------------------------------------
+
+ScAreaLink::ScAreaLink( SfxObjectShell* pShell, const String& rFile,
+ const String& rFilter, const String& rOpt,
+ const String& rArea, const ScRange& rDest ) :
+ SvBaseLink (LINKUPDATE_ONCALL,FORMAT_FILE),
+ pDocShell ((ScDocShell*)pShell),
+ aFileName (rFile),
+ aFilterName (rFilter),
+ aOptions (rOpt),
+ aSourceArea (rArea),
+ aDestArea (rDest),
+ bAddUndo (TRUE),
+ bInCreate (FALSE),
+ bDoInsert (TRUE)
+{
+ DBG_ASSERT(pShell->ISA(ScDocShell), "ScAreaLink mit falscher ObjectShell");
+}
+
+__EXPORT ScAreaLink::~ScAreaLink()
+{
+ // Verbindung aufheben
+}
+
+BOOL __EXPORT ScAreaLink::Edit(Window* pParent)
+{
+ // DefModalDialogParent setzen, weil evtl. aus der DocShell beim ConvertFrom
+ // ein Optionen-Dialog kommt...
+
+ Window* pOldParent = Application::GetDefDialogParent();
+ if (pParent)
+ Application::SetDefDialogParent(pParent);
+
+ BOOL bRet = SvBaseLink::Edit(pParent);
+
+ Application::SetDefDialogParent(pOldParent);
+
+ return bRet;
+}
+
+void __EXPORT ScAreaLink::DataChanged(SvData& rData)
+{
+ // bei bInCreate nichts tun, damit Update gerufen werden kann, um den Status im
+ // LinkManager zu setzen, ohne die Daten im Dokument zu aendern
+
+ if (bInCreate)
+ return;
+
+ SvxLinkManager* pLinkManager=pDocShell->GetDocument()->GetLinkManager();
+ if (pLinkManager!=NULL)
+ {
+ String aFile;
+ String aFilter;
+ String aArea;
+ pLinkManager->GetDisplayNames(*this,0,&aFile,&aArea,&aFilter);
+
+ // aus dem Dialog kommt der Filtername mit Applikation davor
+ //! soll das so sein ??!?!
+ String aAppPrefix = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( STRING_SCAPP ));
+ aAppPrefix.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " ));
+ xub_StrLen nPreLen = aAppPrefix.Len();
+ if ( aFilter.Copy(0,nPreLen) == aAppPrefix )
+ aFilter.Erase(0,nPreLen);
+
+ Refresh(aFile,aFilter,aArea);
+ }
+}
+
+void __EXPORT ScAreaLink::Closed()
+{
+ // Verknuepfung loeschen: Undo
+
+ if (bAddUndo)
+ {
+ pDocShell->GetUndoManager()->AddUndoAction( new ScUndoRemoveAreaLink( pDocShell,
+ aFileName, aFilterName, aOptions,
+ aSourceArea, aDestArea ) );
+
+ bAddUndo = FALSE; // nur einmal
+ }
+
+ SvBaseLink::Closed();
+}
+
+void ScAreaLink::SetDestArea(const ScRange& rNew)
+{
+ aDestArea = rNew; // fuer Undo
+}
+
+void ScAreaLink::SetSource(const String& rDoc, const String& rFlt, const String& rOpt,
+ const String& rArea)
+{
+ aFileName = rDoc;
+ aFilterName = rFlt;
+ aOptions = rOpt;
+ aSourceArea = rArea;
+}
+
+BOOL ScAreaLink::IsEqual( const String& rFile, const String& rFilter, const String& rOpt,
+ const String& rSource, const ScRange& rDest ) const
+{
+ return aFileName == rFile && aFilterName == rFilter && aOptions == rOpt &&
+ aSourceArea == rSource && aDestArea == rDest;
+}
+
+// ausfuehren:
+
+BOOL ScAreaLink::Refresh( const String& rNewFile, const String& rNewFilter,
+ const String& rNewArea )
+{
+ // Dokument laden - wie TabLink
+
+ if (!rNewFile.Len() || !rNewFilter.Len())
+ return FALSE;
+
+ String aNewUrl( ScGlobal::GetAbsDocName( rNewFile, pDocShell ) );
+ BOOL bNewUrlName = (aNewUrl != aFileName);
+
+ const SfxFilter* pFilter = SFX_APP()->GetFilter( pDocShell->GetFactory(), rNewFilter );
+ if (!pFilter)
+ return FALSE;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->SetInLinkUpdate( TRUE );
+
+ // wenn neuer Filter ausgewaehlt wurde, Optionen vergessen
+ if ( rNewFilter != aFilterName )
+ aOptions.Erase();
+
+ // ItemSet immer anlegen, damit die DocShell die Optionen setzen kann
+ SfxItemSet* pSet = new SfxAllItemSet( SFX_APP()->GetPool() );
+ if ( aOptions.Len() )
+ pSet->Put( SfxStringItem( SID_FILE_FILTEROPTIONS, aOptions ) );
+
+ SfxMedium* pMed = new SfxMedium(aNewUrl, STREAM_STD_READ, FALSE, TRUE, pFilter);
+
+ ScDocShell* pSrcShell = new ScDocShell(SFX_CREATE_MODE_INTERNAL);
+ SvEmbeddedObjectRef aRef = pSrcShell;
+ pSrcShell->DoLoad(pMed);
+
+ // Optionen koennten gesetzt worden sein
+ String aNewOpt = ScDocumentLoader::GetOptions(*pMed);
+ if (!aNewOpt.Len())
+ aNewOpt = aOptions;
+
+ // Bereich suchen
+
+ BOOL bFound = FALSE;
+ ScRange aSourceRange;
+ ScDocument* pSrcDoc = pSrcShell->GetDocument();
+ ScRangeName* pNames = pSrcDoc->GetRangeName();
+ USHORT nPos;
+ if (pNames) // benannte Bereiche
+ {
+ if (pNames->SearchName( rNewArea, nPos ))
+ if ( (*pNames)[nPos]->IsReference( aSourceRange ) )
+ bFound = TRUE;
+ }
+ if (!bFound) // Datenbankbereiche
+ {
+ ScDBCollection* pDBColl = pSrcDoc->GetDBCollection();
+ if (pDBColl)
+ if (pDBColl->SearchName( rNewArea, nPos ))
+ {
+ USHORT nTab,nCol1,nRow1,nCol2,nRow2;
+ (*pDBColl)[nPos]->GetArea(nTab,nCol1,nRow1,nCol2,nRow2);
+ aSourceRange = ScRange( nCol1,nRow1,nTab, nCol2,nRow2,nTab );
+ bFound = TRUE;
+ }
+ }
+ if (!bFound) // direct reference (range or cell)
+ {
+ if ( aSourceRange.ParseAny( rNewArea, pSrcDoc ) & SCA_VALID )
+ bFound = TRUE;
+ }
+
+ // alte Daten loeschen / neue kopieren
+
+ ScAddress aDestPos = aDestArea.aStart;
+ USHORT nDestTab = aDestPos.Tab();
+ ScRange aOldRange = aDestArea;
+ ScRange aNewRange = aDestArea; // alter Bereich, wenn Datei nicht gefunden o.ae.
+ if (bFound)
+ aNewRange.aEnd = ScAddress(
+ aSourceRange.aEnd.Col() - aSourceRange.aStart.Col() + aDestPos.Col(),
+ aSourceRange.aEnd.Row() - aSourceRange.aStart.Row() + aDestPos.Row(),
+ nDestTab );
+
+
+ BOOL bCanDo = pDoc->CanFitBlock( aOldRange, aNewRange ); //! nach bDoInsert unterscheiden
+ if (bCanDo)
+ {
+ ScDocShellModificator aModificator( *pDocShell );
+
+ USHORT nStartX = aDestPos.Col();
+ USHORT nStartY = aDestPos.Row();
+ USHORT nOldEndX = aOldRange.aEnd.Col();
+ USHORT nOldEndY = aOldRange.aEnd.Row();
+ USHORT nNewEndX = aNewRange.aEnd.Col();
+ USHORT nNewEndY = aNewRange.aEnd.Row();
+ ScRange aMaxRange( aDestPos,
+ ScAddress(Max(nOldEndX,nNewEndX), Max(nOldEndY,nNewEndY), nDestTab) );
+
+ // Undo initialisieren
+
+ ScDocument* pUndoDoc = NULL;
+ ScDocument* pRedoDoc = NULL;
+ if ( bAddUndo )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ if ( bDoInsert )
+ {
+ if ( nNewEndX != nOldEndX || nNewEndY != nOldEndY ) // Bereich veraendert?
+ {
+ pUndoDoc->InitUndo( pDoc, 0, pDoc->GetTableCount()-1 );
+ pDoc->CopyToDocument( 0,0,0,MAXCOL,MAXROW,MAXTAB,
+ IDF_FORMULA, FALSE, pUndoDoc ); // alle Formeln
+ }
+ else
+ pUndoDoc->InitUndo( pDoc, nDestTab, nDestTab ); // nur Zieltabelle
+ pDoc->CopyToDocument( aOldRange, IDF_ALL, FALSE, pUndoDoc );
+ }
+ else // ohne Einfuegen
+ {
+ pUndoDoc->InitUndo( pDoc, nDestTab, nDestTab ); // nur Zieltabelle
+ pDoc->CopyToDocument( aMaxRange, IDF_ALL, FALSE, pUndoDoc );
+ }
+ }
+
+ // Zellen einfuegen / loeschen
+ // DeleteAreaTab loescht auch MERGE_FLAG Attribute
+
+ if (bDoInsert)
+ pDoc->FitBlock( aOldRange, aNewRange ); // incl. loeschen
+ else
+ pDoc->DeleteAreaTab( aMaxRange, IDF_ALL );
+
+ // Daten kopieren
+
+ if (bFound)
+ {
+ USHORT nSrcTab = aSourceRange.aStart.Tab();
+ ScMarkData aSourceMark;
+ aSourceMark.SelectOneTable( nSrcTab ); // selektieren fuer CopyToClip
+ aSourceMark.SetMarkArea( aSourceRange );
+
+ ScDocument* pClipDoc = new ScDocument( SCDOCMODE_CLIP );
+ pSrcDoc->CopyToClip( aSourceRange.aStart.Col(),aSourceRange.aStart.Row(),
+ aSourceRange.aEnd.Col(),aSourceRange.aEnd.Row(),
+ FALSE, pClipDoc, FALSE, &aSourceMark );
+
+ if ( pClipDoc->HasAttrib( 0,0,nSrcTab, MAXCOL,MAXROW,nSrcTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ) )
+ {
+ //! ResetAttrib am Dokument !!!
+
+ ScPatternAttr aPattern( pSrcDoc->GetPool() );
+ aPattern.GetItemSet().Put( ScMergeAttr() ); // Defaults
+ aPattern.GetItemSet().Put( ScMergeFlagAttr() );
+ pClipDoc->ApplyPatternAreaTab( 0,0, MAXCOL,MAXROW, nSrcTab, aPattern );
+ }
+
+ ScMarkData aDestMark;
+ aDestMark.SelectOneTable( nDestTab );
+ aDestMark.SetMarkArea( aNewRange );
+ pDoc->CopyFromClip( aNewRange, aDestMark, IDF_ALL, NULL, pClipDoc, FALSE );
+ }
+ else
+ {
+ String aErr = ScGlobal::GetRscString(STR_LINKERROR);
+ pDoc->SetString( aDestPos.Col(), aDestPos.Row(), aDestPos.Tab(), aErr );
+ }
+
+ // Undo eintragen
+
+ if ( bAddUndo )
+ {
+ pRedoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRedoDoc->InitUndo( pDoc, nDestTab, nDestTab );
+ pDoc->CopyToDocument( aNewRange, IDF_ALL, FALSE, pRedoDoc );
+
+ pDocShell->GetUndoManager()->AddUndoAction(
+ new ScUndoUpdateAreaLink( pDocShell,
+ aFileName, aFilterName, aOptions,
+ aSourceArea, aOldRange,
+ aNewUrl, rNewFilter, aNewOpt,
+ rNewArea, aNewRange,
+ pUndoDoc, pRedoDoc, bDoInsert ) );
+ }
+
+ // neue Einstellungen merken
+
+ if ( bNewUrlName )
+ aFileName = aNewUrl;
+ if ( rNewFilter != aFilterName )
+ aFilterName = rNewFilter;
+ if ( rNewArea != aSourceArea )
+ aSourceArea = rNewArea;
+ if ( aNewOpt != aOptions )
+ aOptions = aNewOpt;
+
+ if ( aNewRange != aDestArea )
+ aDestArea = aNewRange;
+
+ USHORT nPaintEndX = Max( aOldRange.aEnd.Col(), aNewRange.aEnd.Col() );
+ USHORT nPaintEndY = Max( aOldRange.aEnd.Row(), aNewRange.aEnd.Row() );
+
+ if ( aOldRange.aEnd.Col() != aNewRange.aEnd.Col() )
+ nPaintEndX = MAXCOL;
+ if ( aOldRange.aEnd.Row() != aNewRange.aEnd.Row() )
+ nPaintEndY = MAXROW;
+
+ pDocShell->PostPaint( aDestPos.Col(),aDestPos.Row(),nDestTab,
+ nPaintEndX,nPaintEndY,nDestTab, PAINT_GRID );
+ aModificator.SetDocumentModified();
+ }
+ else
+ {
+ // CanFitBlock FALSE -> Probleme mit zusammengefassten Zellen
+ // oder Tabellengrenze erreicht!
+ //! Zellschutz ???
+
+ //! Link-Dialog muss Default-Parent setzen
+ // "kann keine Zeilen einfuegen"
+ InfoBox aBox( Application::GetDefDialogParent(),
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_2 ) );
+ aBox.Execute();
+ }
+
+ // aufraeumen
+
+ aRef->DoClose();
+
+ pDoc->SetInLinkUpdate( FALSE );
+
+ if (bCanDo)
+ {
+ // notify Uno objects (for XRefreshListener)
+ //! also notify Uno objects if file name was changed!
+ ScLinkRefreshedHint aHint;
+ aHint.SetAreaLink( aDestPos );
+ pDoc->BroadcastUno( aHint );
+ }
+
+ return bCanDo;
+}
+
+
+
diff --git a/sc/source/ui/docshell/autostyl.cxx b/sc/source/ui/docshell/autostyl.cxx
new file mode 100644
index 000000000000..29fab8619ebd
--- /dev/null
+++ b/sc/source/ui/docshell/autostyl.cxx
@@ -0,0 +1,284 @@
+/*************************************************************************
+ *
+ * $RCSfile: autostyl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <time.h>
+#include "autostyl.hxx"
+
+#include "docsh.hxx"
+#include "attrib.hxx"
+#include "sc.hrc"
+
+//==================================================================
+
+struct ScAutoStyleInitData
+{
+ ScRange aRange;
+ String aStyle1;
+ ULONG nTimeout;
+ String aStyle2;
+
+ ScAutoStyleInitData( const ScRange& rR, const String& rSt1, ULONG nT, const String& rSt2 ) :
+ aRange(rR), aStyle1(rSt1), nTimeout(nT), aStyle2(rSt2) {}
+};
+
+struct ScAutoStyleData
+{
+ ULONG nTimeout;
+ ScRange aRange;
+ String aStyle;
+
+ ScAutoStyleData( ULONG nT, const ScRange& rR, const String& rT ) :
+ nTimeout(nT), aRange(rR), aStyle(rT) {}
+};
+
+//==================================================================
+
+inline ULONG TimeNow() // Sekunden
+{
+ return (ULONG) time(0);
+}
+
+//==================================================================
+
+ScAutoStyleList::ScAutoStyleList(ScDocShell* pShell) :
+ pDocSh( pShell )
+{
+ aTimer.SetTimeoutHdl( LINK( this, ScAutoStyleList, TimerHdl ) );
+ aInitTimer.SetTimeoutHdl( LINK( this, ScAutoStyleList, InitHdl ) );
+ aInitTimer.SetTimeout( 0 );
+}
+
+ScAutoStyleList::~ScAutoStyleList()
+{
+ ULONG i;
+ ULONG nCount = aEntries.Count();
+ for (i=0; i<nCount; i++)
+ delete (ScAutoStyleData*) aEntries.GetObject(i);
+ nCount = aInitials.Count();
+ for (i=0; i<nCount; i++)
+ delete (ScAutoStyleInitData*) aInitials.GetObject(i);
+}
+
+//==================================================================
+
+// initial short delay (asynchronous call)
+
+void ScAutoStyleList::AddInitial( const ScRange& rRange, const String& rStyle1,
+ ULONG nTimeout, const String& rStyle2 )
+{
+ ScAutoStyleInitData* pNew =
+ new ScAutoStyleInitData( rRange, rStyle1, nTimeout, rStyle2 );
+ aInitials.Insert( pNew, aInitials.Count() );
+ aInitTimer.Start();
+}
+
+IMPL_LINK( ScAutoStyleList, InitHdl, Timer*, pTimer )
+{
+ DBG_ASSERT( pTimer == &aInitTimer, "wrong timer" );
+
+ ULONG nCount = aInitials.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScAutoStyleInitData* pData = (ScAutoStyleInitData*) aInitials.GetObject(i);
+
+ // apply first style immediately
+ pDocSh->DoAutoStyle( pData->aRange, pData->aStyle1 );
+
+ // add second style to list
+ if ( pData->nTimeout )
+ AddEntry( pData->nTimeout, pData->aRange, pData->aStyle2 );
+
+ delete pData;
+ }
+ aInitials.Clear();
+
+ return 0;
+}
+
+//==================================================================
+
+void ScAutoStyleList::AddEntry( ULONG nTimeout, const ScRange& rRange, const String& rStyle )
+{
+ aTimer.Stop();
+ ULONG nNow = TimeNow();
+
+ // alten Eintrag loeschen
+
+ ULONG nCount = aEntries.Count();
+ ULONG i;
+ for (i=0; i<nCount; i++)
+ {
+ ScAutoStyleData* pData = (ScAutoStyleData*) aEntries.GetObject(i);
+ if (pData->aRange == rRange)
+ {
+ delete pData;
+ aEntries.Remove(i);
+ --nCount;
+ break; // nicht weitersuchen - es kann nur einen geben
+ }
+ }
+
+ // Timeouts von allen Eintraegen anpassen
+
+ if (nCount && nNow != nTimerStart)
+ {
+ DBG_ASSERT(nNow>nTimerStart, "Zeit laeuft rueckwaerts?");
+ AdjustEntries((nNow-nTimerStart)*1000);
+ }
+
+ // Einfuege-Position suchen
+
+ ULONG nPos = LIST_APPEND;
+ BOOL bFound = FALSE;
+ for (i=0; i<nCount && nPos == LIST_APPEND; i++)
+ if (nTimeout <= ((ScAutoStyleData*) aEntries.GetObject(i))->nTimeout)
+ nPos = i;
+
+ ScAutoStyleData* pNew = new ScAutoStyleData( nTimeout, rRange, rStyle );
+ aEntries.Insert( pNew, nPos );
+
+ // abgelaufene ausfuehren, Timer neu starten
+
+ ExecuteEntries();
+ StartTimer(nNow);
+}
+
+void ScAutoStyleList::AdjustEntries( ULONG nDiff ) // Millisekunden
+{
+ ULONG nCount = aEntries.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScAutoStyleData* pData = (ScAutoStyleData*) aEntries.GetObject(i);
+ if ( pData->nTimeout <= nDiff )
+ pData->nTimeout = 0; // abgelaufen
+ else
+ pData->nTimeout -= nDiff; // weiterzaehlen
+ }
+}
+
+void ScAutoStyleList::ExecuteEntries()
+{
+ ScAutoStyleData* pData;
+ while ((pData = (ScAutoStyleData*) aEntries.GetObject(0)) && pData->nTimeout == 0)
+ {
+ pDocSh->DoAutoStyle( pData->aRange, pData->aStyle ); //! oder Request ???
+
+ delete pData;
+ aEntries.Remove((ULONG)0);
+ }
+}
+
+void ScAutoStyleList::ExecuteAllNow()
+{
+ aTimer.Stop();
+
+ ULONG nCount = aEntries.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScAutoStyleData* pData = (ScAutoStyleData*) aEntries.GetObject(i);
+
+ pDocSh->DoAutoStyle( pData->aRange, pData->aStyle ); //! oder Request ???
+
+ delete pData;
+ }
+ aEntries.Clear();
+}
+
+void ScAutoStyleList::StartTimer( ULONG nNow ) // Sekunden
+{
+ // ersten Eintrag mit Timeout != 0 suchen
+
+ ULONG nPos = 0;
+ ScAutoStyleData* pData;
+ while ( (pData = (ScAutoStyleData*) aEntries.GetObject(nPos)) && pData->nTimeout == 0 )
+ ++nPos;
+
+ if (pData)
+ {
+ aTimer.SetTimeout( pData->nTimeout );
+ aTimer.Start();
+ }
+ nTimerStart = nNow;
+}
+
+IMPL_LINK( ScAutoStyleList, TimerHdl, Timer*, pTimer )
+{
+ DBG_ASSERT( pTimer == &aTimer, "falscher Timer" );
+
+ ULONG nNow = TimeNow();
+ AdjustEntries(aTimer.GetTimeout()); // eingestellte Wartezeit
+ ExecuteEntries();
+ StartTimer(nNow);
+
+ return 0;
+}
+
+
+
+
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
new file mode 100644
index 000000000000..0d2cf0bcc7ae
--- /dev/null
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -0,0 +1,1342 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbdocfun.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sfx2/app.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/waitobj.hxx>
+
+#include "dbdocfun.hxx"
+#include "sc.hrc"
+#include "dbcolect.hxx"
+#include "undodat.hxx"
+#include "docsh.hxx"
+#include "docfunc.hxx"
+#include "globstr.hrc"
+#include "tabvwsh.hxx"
+#include "patattr.hxx"
+#include "rangenam.hxx"
+#include "olinetab.hxx"
+#include "dpobject.hxx"
+
+// -----------------------------------------------------------------
+
+BOOL ScDBDocFunc::AddDBRange( const String& rName, const ScRange& rRange, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDBCollection* pDocColl = pDoc->GetDBCollection();
+
+ ScDBCollection* pUndoColl = new ScDBCollection( *pDocColl );
+
+ ScDBData* pNew = new ScDBData( rName, rRange.aStart.Tab(),
+ rRange.aStart.Col(), rRange.aStart.Row(),
+ rRange.aEnd.Col(), rRange.aEnd.Row() );
+
+ pDoc->CompileDBFormula( TRUE ); // CreateFormulaString
+ BOOL bOk = pDocColl->Insert( pNew );
+ pDoc->CompileDBFormula( FALSE ); // CompileFormulaString
+ if (!bOk)
+ {
+ delete pNew;
+ delete pUndoColl;
+ return FALSE;
+ }
+
+ ScDBCollection* pRedoColl = new ScDBCollection( *pDocColl );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDBData( &rDocShell, pUndoColl, pRedoColl ) );
+
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_DBAREAS_CHANGED ) );
+ return TRUE;
+}
+
+BOOL ScDBDocFunc::DeleteDBRange( const String& rName, BOOL bApi )
+{
+ BOOL bDone = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDBCollection* pDocColl = pDoc->GetDBCollection();
+
+ USHORT nPos = 0;
+ if (pDocColl->SearchName( rName, nPos ))
+ {
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDBCollection* pUndoColl = new ScDBCollection( *pDocColl );
+
+ pDoc->CompileDBFormula( TRUE ); // CreateFormulaString
+ pDocColl->AtFree( nPos );
+ pDoc->CompileDBFormula( FALSE ); // CompileFormulaString
+
+ ScDBCollection* pRedoColl = new ScDBCollection( *pDocColl );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDBData( &rDocShell, pUndoColl, pRedoColl ) );
+
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_DBAREAS_CHANGED ) );
+ bDone = TRUE;
+ }
+
+ return bDone;
+}
+
+BOOL ScDBDocFunc::RenameDBRange( const String& rOld, const String& rNew, BOOL bApi )
+{
+ BOOL bDone = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDBCollection* pDocColl = pDoc->GetDBCollection();
+
+ USHORT nPos = 0;
+ USHORT nDummy = 0;
+ if ( pDocColl->SearchName( rOld, nPos ) &&
+ !pDocColl->SearchName( rNew, nDummy ) )
+ {
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDBData* pData = (*pDocColl)[nPos];
+ ScDBData* pNewData = new ScDBData(*pData);
+ pNewData->SetName(rNew);
+
+ ScDBCollection* pUndoColl = new ScDBCollection( *pDocColl );
+
+ pDoc->CompileDBFormula( TRUE ); // CreateFormulaString
+ pDocColl->AtFree( nPos );
+ BOOL bInserted = pDocColl->Insert( pNewData );
+ if (!bInserted) // Fehler -> alten Zustand wiederherstellen
+ {
+ delete pNewData;
+ pDoc->SetDBCollection( pUndoColl ); // gehoert dann dem Dokument
+ }
+ pDoc->CompileDBFormula( FALSE ); // CompileFormulaString
+
+ if (bInserted) // Einfuegen hat geklappt
+ {
+ ScDBCollection* pRedoColl = new ScDBCollection( *pDocColl );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDBData( &rDocShell, pUndoColl, pRedoColl ) );
+
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_DBAREAS_CHANGED ) );
+ bDone = TRUE;
+ }
+ }
+
+ return bDone;
+}
+
+BOOL ScDBDocFunc::ModifyDBData( const ScDBData& rNewData, BOOL bApi )
+{
+ BOOL bDone = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDBCollection* pDocColl = pDoc->GetDBCollection();
+
+ USHORT nPos = 0;
+ if (pDocColl->SearchName( rNewData.GetName(), nPos ))
+ {
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDBData* pData = (*pDocColl)[nPos];
+
+ ScRange aOldRange, aNewRange;
+ pData->GetArea(aOldRange);
+ rNewData.GetArea(aNewRange);
+ BOOL bAreaChanged = ( aOldRange != aNewRange ); // dann muss neu compiliert werden
+
+ ScDBCollection* pUndoColl = new ScDBCollection( *pDocColl );
+
+ *pData = rNewData;
+ if (bAreaChanged)
+ pDoc->CompileDBFormula();
+
+ ScDBCollection* pRedoColl = new ScDBCollection( *pDocColl );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDBData( &rDocShell, pUndoColl, pRedoColl ) );
+
+ aModificator.SetDocumentModified();
+ bDone = TRUE;
+ }
+
+ return bDone;
+}
+
+// -----------------------------------------------------------------
+
+BOOL ScDBDocFunc::RepeatDB( const String& rDBName, BOOL bRecord, BOOL bApi )
+{
+ //! auch fuer ScDBFunc::RepeatDB benutzen!
+
+ BOOL bDone = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDBCollection* pColl = pDoc->GetDBCollection();
+ USHORT nIndex;
+ if ( pColl && pColl->SearchName( rDBName, nIndex ) )
+ {
+ ScDBData* pDBData = (*pColl)[nIndex];
+
+ ScQueryParam aQueryParam;
+ pDBData->GetQueryParam( aQueryParam );
+ BOOL bQuery = aQueryParam.GetEntry(0).bDoQuery;
+
+ ScSortParam aSortParam;
+ pDBData->GetSortParam( aSortParam );
+ BOOL bSort = aSortParam.bDoSort[0];
+
+ ScSubTotalParam aSubTotalParam;
+ pDBData->GetSubTotalParam( aSubTotalParam );
+ BOOL bSubTotal = aSubTotalParam.bGroupActive[0] && !aSubTotalParam.bRemoveOnly;
+
+ if ( bQuery || bSort || bSubTotal )
+ {
+ BOOL bQuerySize = FALSE;
+ ScRange aOldQuery;
+ ScRange aNewQuery;
+ if (bQuery && !aQueryParam.bInplace)
+ {
+ ScDBData* pDest = pDoc->GetDBAtCursor( aQueryParam.nDestCol, aQueryParam.nDestRow,
+ aQueryParam.nDestTab, TRUE );
+ if (pDest && pDest->IsDoSize())
+ {
+ pDest->GetArea( aOldQuery );
+ bQuerySize = TRUE;
+ }
+ }
+
+ USHORT nTab;
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ pDBData->GetArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow );
+
+ //! Undo nur benoetigte Daten ?
+
+ ScDocument* pUndoDoc = NULL;
+ ScOutlineTable* pUndoTab = NULL;
+ ScRangeName* pUndoRange = NULL;
+ ScDBCollection* pUndoDB = NULL;
+
+ if (bRecord)
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (pTable)
+ {
+ pUndoTab = new ScOutlineTable( *pTable );
+
+ USHORT nOutStartCol; // Zeilen/Spaltenstatus
+ USHORT nOutStartRow;
+ USHORT nOutEndCol;
+ USHORT nOutEndRow;
+ pTable->GetColArray()->GetRange( nOutStartCol, nOutEndCol );
+ pTable->GetRowArray()->GetRange( nOutStartRow, nOutEndRow );
+
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ pDoc->CopyToDocument( nOutStartCol, 0, nTab, nOutEndCol, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ pDoc->CopyToDocument( 0, nOutStartRow, nTab, MAXCOL, nOutEndRow, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+ else
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, TRUE );
+
+ // Datenbereich sichern - incl. Filter-Ergebnis
+ pDoc->CopyToDocument( 0,nStartRow,nTab, MAXCOL,nEndRow,nTab, IDF_ALL, FALSE, pUndoDoc );
+
+ // alle Formeln wegen Referenzen
+ pDoc->CopyToDocument( 0,0,0, MAXCOL,MAXROW,nTabCount-1, IDF_FORMULA, FALSE, pUndoDoc );
+
+ // DB- und andere Bereiche
+ ScRangeName* pDocRange = pDoc->GetRangeName();
+ if (pDocRange->GetCount())
+ pUndoRange = new ScRangeName( *pDocRange );
+ ScDBCollection* pDocDB = pDoc->GetDBCollection();
+ if (pDocDB->GetCount())
+ pUndoDB = new ScDBCollection( *pDocDB );
+ }
+
+ if (bSort && bSubTotal)
+ {
+ // Sortieren ohne SubTotals
+
+ aSubTotalParam.bRemoveOnly = TRUE; // wird unten wieder zurueckgesetzt
+ DoSubTotals( nTab, aSubTotalParam, NULL, FALSE, bApi );
+ }
+
+ if (bSort)
+ {
+ pDBData->GetSortParam( aSortParam ); // Bereich kann sich geaendert haben
+ Sort( nTab, aSortParam, FALSE, FALSE, bApi );
+ }
+ if (bQuery)
+ {
+ pDBData->GetQueryParam( aQueryParam ); // Bereich kann sich geaendert haben
+ ScRange aAdvSource;
+ if (pDBData->GetAdvancedQuerySource(aAdvSource))
+ Query( nTab, aQueryParam, &aAdvSource, FALSE, bApi );
+ else
+ Query( nTab, aQueryParam, NULL, FALSE, bApi );
+
+ // bei nicht-inplace kann die Tabelle umgestellt worden sein
+// if ( !aQueryParam.bInplace && aQueryParam.nDestTab != nTab )
+// SetTabNo( nTab );
+ }
+ if (bSubTotal)
+ {
+ pDBData->GetSubTotalParam( aSubTotalParam ); // Bereich kann sich geaendert haben
+ aSubTotalParam.bRemoveOnly = FALSE;
+ DoSubTotals( nTab, aSubTotalParam, NULL, FALSE, bApi );
+ }
+
+ if (bRecord)
+ {
+ USHORT nDummy;
+ USHORT nNewEndRow;
+ pDBData->GetArea( nDummy, nDummy,nDummy, nDummy,nNewEndRow );
+
+ const ScRange* pOld = NULL;
+ const ScRange* pNew = NULL;
+ if (bQuerySize)
+ {
+ ScDBData* pDest = pDoc->GetDBAtCursor( aQueryParam.nDestCol, aQueryParam.nDestRow,
+ aQueryParam.nDestTab, TRUE );
+ if (pDest)
+ {
+ pDest->GetArea( aNewQuery );
+ pOld = &aOldQuery;
+ pNew = &aNewQuery;
+ }
+ }
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoRepeatDB( &rDocShell, nTab,
+ nStartCol, nStartRow, nEndCol, nEndRow,
+ nNewEndRow,
+ //nCurX, nCurY,
+ nStartCol, nStartRow,
+ pUndoDoc, pUndoTab,
+ pUndoRange, pUndoDB,
+ pOld, pNew ) );
+ }
+
+ rDocShell.PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab,
+ PAINT_GRID | PAINT_LEFT | PAINT_TOP | PAINT_SIZE );
+ bDone = TRUE;
+ }
+ else if (!bApi) // "Keine Operationen auszufuehren"
+ rDocShell.ErrorMessage(STR_MSSG_REPEATDB_0);
+ }
+
+ return bDone;
+}
+
+// -----------------------------------------------------------------
+
+BOOL ScDBDocFunc::Sort( USHORT nTab, const ScSortParam& rSortParam,
+ BOOL bRecord, BOOL bPaint, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nSrcTab = nTab;
+
+ ScDBData* pDBData = pDoc->GetDBAtArea( nTab, rSortParam.nCol1, rSortParam.nRow1,
+ rSortParam.nCol2, rSortParam.nRow2 );
+ if (!pDBData)
+ {
+ DBG_ERROR( "Sort: keine DBData" );
+ return FALSE;
+ }
+
+ ScDBData* pDestData = NULL;
+ ScRange aOldDest;
+ BOOL bCopy = !rSortParam.bInplace;
+ if ( bCopy && rSortParam.nDestCol == rSortParam.nCol1 &&
+ rSortParam.nDestRow == rSortParam.nRow1 && rSortParam.nDestTab == nTab )
+ bCopy = FALSE;
+ ScSortParam aLocalParam( rSortParam );
+ if ( bCopy )
+ {
+ aLocalParam.MoveToDest();
+ nTab = rSortParam.nDestTab;
+ pDestData = pDoc->GetDBAtCursor( rSortParam.nDestCol, rSortParam.nDestRow,
+ rSortParam.nDestTab, TRUE );
+ if (pDestData)
+ pDestData->GetArea(aOldDest);
+ }
+
+ if (!pDoc->IsBlockEditable(nTab, aLocalParam.nCol1,aLocalParam.nRow1,
+ aLocalParam.nCol2,aLocalParam.nRow2))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ if ( aLocalParam.bIncludePattern && pDoc->HasAttrib(
+ aLocalParam.nCol1, aLocalParam.nRow1, nTab,
+ aLocalParam.nCol2, aLocalParam.nRow2, nTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ) )
+ {
+ // Merge-Attribute wuerden beim Sortieren durcheinanderkommen
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_SORT_ERR_MERGED);
+ return FALSE;
+ }
+
+
+ // ausfuehren
+
+ WaitObject aWait( rDocShell.GetDialogParent() );
+
+ BOOL bRepeatQuery = FALSE; // bestehenden Filter wiederholen?
+ ScQueryParam aQueryParam;
+ pDBData->GetQueryParam( aQueryParam );
+ if ( aQueryParam.GetEntry(0).bDoQuery )
+ bRepeatQuery = TRUE;
+
+ if (bRepeatQuery && bCopy)
+ {
+ if ( aQueryParam.bInplace ||
+ aQueryParam.nDestCol != rSortParam.nDestCol ||
+ aQueryParam.nDestRow != rSortParam.nDestRow ||
+ aQueryParam.nDestTab != rSortParam.nDestTab ) // Query auf selben Zielbereich?
+ bRepeatQuery = FALSE;
+ }
+
+ if ( bRecord )
+ {
+ // Referenzen ausserhalb des Bereichs werden nicht veraendert !
+
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ // Zeilenhoehen immer (wegen automatischer Anpassung)
+ //! auf ScBlockUndo umstellen
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, TRUE );
+ pDoc->CopyToDocument( aLocalParam.nCol1, aLocalParam.nRow1, nTab,
+ aLocalParam.nCol2, aLocalParam.nRow2, nTab,
+ IDF_ALL, FALSE, pUndoDoc );
+
+ const ScRange* pR = 0;
+ if (pDestData)
+ {
+ pDoc->CopyToDocument( aOldDest, IDF_ALL, FALSE, pUndoDoc );
+ pR = &aOldDest;
+ }
+
+ // Zeilenhoehen immer (wegen automatischer Anpassung)
+ //! auf ScBlockUndo umstellen
+// if (bRepeatQuery)
+ pDoc->CopyToDocument( 0, aLocalParam.nRow1, nTab, MAXCOL, aLocalParam.nRow2, nTab,
+ IDF_NONE, FALSE, pUndoDoc );
+
+ ScDBCollection* pUndoDB = NULL;
+ ScDBCollection* pDocDB = pDoc->GetDBCollection();
+ if (pDocDB->GetCount())
+ pUndoDB = new ScDBCollection( *pDocDB );
+
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoSort( &rDocShell, nTab,
+ rSortParam, bRepeatQuery, pUndoDoc, pUndoDB, pR ) );
+ }
+
+ if ( bCopy )
+ {
+ if (pDestData)
+ pDoc->DeleteAreaTab(aOldDest, IDF_CONTENTS); // Zielbereich vorher loeschen
+
+ ScRange aSource( rSortParam.nCol1,rSortParam.nRow1,nSrcTab,
+ rSortParam.nCol2,rSortParam.nRow2,nSrcTab );
+ ScAddress aDest( rSortParam.nDestCol, rSortParam.nDestRow, rSortParam.nDestTab );
+
+ rDocShell.GetDocFunc().MoveBlock( aSource, aDest, FALSE, FALSE, FALSE, TRUE );
+ }
+ pDoc->Sort( nTab, aLocalParam, bRepeatQuery );
+
+ BOOL bSave = TRUE;
+ if (bCopy)
+ {
+ ScSortParam aOldSortParam;
+ pDBData->GetSortParam( aOldSortParam );
+ if ( aOldSortParam.bDoSort[0] && aOldSortParam.bInplace ) // Inplace-Sortierung gemerkt?
+ {
+ bSave = FALSE;
+ aOldSortParam.nDestCol = rSortParam.nDestCol;
+ aOldSortParam.nDestRow = rSortParam.nDestRow;
+ aOldSortParam.nDestTab = rSortParam.nDestTab;
+ pDBData->SetSortParam( aOldSortParam ); // dann nur DestPos merken
+ }
+ }
+ if (bSave) // Parameter merken
+ {
+ pDBData->SetSortParam( rSortParam );
+ pDBData->SetHeader( rSortParam.bHasHeader ); //! ???
+ pDBData->SetByRow( rSortParam.bByRow ); //! ???
+ }
+
+ if (bCopy) // neuen DB-Bereich merken
+ {
+ // Tabelle umschalten von aussen (View)
+ //! SetCursor ??!?!
+
+ ScRange aDestPos( aLocalParam.nCol1, aLocalParam.nRow1, nTab,
+ aLocalParam.nCol2, aLocalParam.nRow2, nTab );
+ ScDBData* pNewData;
+ if (pDestData)
+ pNewData = pDestData; // Bereich vorhanden -> anpassen
+ else // Bereich ab Cursor/Markierung wird angelegt
+ pNewData = rDocShell.GetDBData(aDestPos, SC_DB_MAKE, TRUE );
+ if (pNewData)
+ {
+ pNewData->SetArea( nTab,
+ aLocalParam.nCol1,aLocalParam.nRow1,
+ aLocalParam.nCol2,aLocalParam.nRow2 );
+ pNewData->SetSortParam( aLocalParam );
+ pNewData->SetHeader( aLocalParam.bHasHeader ); //! ???
+ pNewData->SetByRow( aLocalParam.bByRow );
+ }
+ else
+ DBG_ERROR("Zielbereich nicht da");
+ }
+
+ ScRange aDirtyRange( aLocalParam.nCol1, aLocalParam.nRow1, nTab,
+ aLocalParam.nCol2, aLocalParam.nRow2, nTab );
+ pDoc->SetDirty( aDirtyRange );
+
+ if (bPaint)
+ {
+ USHORT nPaint = PAINT_GRID;
+ USHORT nStartX = aLocalParam.nCol1;
+ USHORT nStartY = aLocalParam.nRow1;
+ USHORT nEndX = aLocalParam.nCol2;
+ USHORT nEndY = aLocalParam.nRow2;
+ if ( bRepeatQuery )
+ {
+ nPaint |= PAINT_LEFT;
+ nStartX = 0;
+ nEndX = MAXCOL;
+ }
+ if (pDestData)
+ {
+ if ( nEndX < aOldDest.aEnd.Col() )
+ nEndX = aOldDest.aEnd.Col();
+ if ( nEndY < aOldDest.aEnd.Row() )
+ nEndY = aOldDest.aEnd.Row();
+ }
+ rDocShell.PostPaint( nStartX, nStartY, nTab, nEndX, nEndY, nTab, nPaint );
+ }
+
+// AdjustRowHeight( aLocalParam.nRow1, aLocalParam.nRow2, bPaint );
+ rDocShell.AdjustRowHeight( aLocalParam.nRow1, aLocalParam.nRow2, nTab );
+
+ aModificator.SetDocumentModified();
+
+ return TRUE;
+}
+
+// -----------------------------------------------------------------
+
+BOOL ScDBDocFunc::Query( USHORT nTab, const ScQueryParam& rQueryParam,
+ const ScRange* pAdvSource, BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDBData* pDBData = pDoc->GetDBAtArea( nTab, rQueryParam.nCol1, rQueryParam.nRow1,
+ rQueryParam.nCol2, rQueryParam.nRow2 );
+ if (!pDBData)
+ {
+ DBG_ERROR( "Query: keine DBData" );
+ return FALSE;
+ }
+
+ // Wechsel von Inplace auf nicht-Inplace, dann erst Inplace aufheben:
+ // (nur, wenn im Dialog "Persistent" ausgewaehlt ist)
+
+ if ( !rQueryParam.bInplace && pDBData->HasQueryParam() && rQueryParam.bDestPers )
+ {
+ ScQueryParam aOldQuery;
+ pDBData->GetQueryParam(aOldQuery);
+ if (aOldQuery.bInplace)
+ {
+ // alte Filterung aufheben
+
+ USHORT nEC = aOldQuery.GetEntryCount();
+ for (USHORT i=0; i<nEC; i++)
+ aOldQuery.GetEntry(i).bDoQuery = FALSE;
+ aOldQuery.bDuplicate = TRUE;
+ Query( nTab, aOldQuery, NULL, bRecord, bApi );
+ }
+ }
+
+ ScQueryParam aLocalParam( rQueryParam ); // fuer Paint / Zielbereich
+ BOOL bCopy = !rQueryParam.bInplace; // kopiert wird in Table::Query
+ ScDBData* pDestData = NULL; // Bereich, in den kopiert wird
+ BOOL bDoSize = FALSE; // Zielgroesse anpassen (einf./loeschen)
+ USHORT nFormulaCols = 0; // nur bei bDoSize
+ BOOL bKeepFmt = FALSE;
+ ScRange aOldDest;
+ ScRange aDestTotal;
+ if ( bCopy && rQueryParam.nDestCol == rQueryParam.nCol1 &&
+ rQueryParam.nDestRow == rQueryParam.nRow1 && rQueryParam.nDestTab == nTab )
+ bCopy = FALSE;
+ USHORT nDestTab = nTab;
+ if ( bCopy )
+ {
+ aLocalParam.MoveToDest();
+ nDestTab = rQueryParam.nDestTab;
+
+ if (!pDoc->IsBlockEditable(nDestTab, aLocalParam.nCol1,aLocalParam.nRow1,
+ aLocalParam.nCol2,aLocalParam.nRow2))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ pDestData = pDoc->GetDBAtCursor( rQueryParam.nDestCol, rQueryParam.nDestRow,
+ rQueryParam.nDestTab, TRUE );
+ if (pDestData)
+ {
+ pDestData->GetArea( aOldDest );
+ aDestTotal=ScRange( rQueryParam.nDestCol,
+ rQueryParam.nDestRow,
+ nDestTab,
+ rQueryParam.nDestCol + rQueryParam.nCol2 - rQueryParam.nCol1,
+ rQueryParam.nDestRow + rQueryParam.nRow2 - rQueryParam.nRow1,
+ nDestTab );
+
+ bDoSize = pDestData->IsDoSize();
+ // Test, ob Formeln aufgefuellt werden muessen (nFormulaCols):
+ if ( bDoSize && aOldDest.aEnd.Col() == aDestTotal.aEnd.Col() )
+ {
+ USHORT nTestCol = aOldDest.aEnd.Col() + 1; // neben dem Bereich
+ USHORT nTestRow = rQueryParam.nDestRow +
+ ( aLocalParam.bHasHeader ? 1 : 0 );
+ while ( nTestCol <= MAXCOL &&
+ pDoc->GetCellType(ScAddress( nTestCol, nTestRow, nTab )) == CELLTYPE_FORMULA )
+ ++nTestCol, ++nFormulaCols;
+ }
+
+ bKeepFmt = pDestData->IsKeepFmt();
+ if ( bDoSize && !pDoc->CanFitBlock( aOldDest, aDestTotal ) )
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_MSSG_DOSUBTOTALS_2); // kann keine Zeilen einfuegen
+ return FALSE;
+ }
+ }
+ }
+
+ // ausfuehren
+
+ WaitObject aWait( rDocShell.GetDialogParent() );
+
+ BOOL bKeepSub = FALSE; // bestehende Teilergebnisse wiederholen?
+ ScSubTotalParam aSubTotalParam;
+ if (rQueryParam.GetEntry(0).bDoQuery) // nicht beim Aufheben
+ {
+ pDBData->GetSubTotalParam( aSubTotalParam ); // Teilergebnisse vorhanden?
+
+ if ( aSubTotalParam.bGroupActive[0] && !aSubTotalParam.bRemoveOnly )
+ bKeepSub = TRUE;
+ }
+
+ if ( bRecord )
+ {
+ const ScRange* pOld = 0;
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ if (bCopy)
+ {
+ pUndoDoc->InitUndo( pDoc, nDestTab, nDestTab, FALSE, TRUE );
+ pDoc->CopyToDocument( aLocalParam.nCol1, aLocalParam.nRow1, nDestTab,
+ aLocalParam.nCol2, aLocalParam.nRow2, nDestTab,
+ IDF_ALL, FALSE, pUndoDoc );
+ // Attribute sichern, falls beim Filtern mitkopiert
+
+ if (pDestData)
+ {
+ pDoc->CopyToDocument( aOldDest, IDF_ALL, FALSE, pUndoDoc );
+ pOld = &aOldDest;
+ }
+ }
+ else
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, TRUE );
+ pDoc->CopyToDocument( 0, rQueryParam.nRow1, nTab, MAXCOL, rQueryParam.nRow2, nTab,
+ IDF_NONE, FALSE, pUndoDoc );
+ }
+
+ ScDBCollection* pUndoDB = NULL;
+ ScDBCollection* pDocDB = pDoc->GetDBCollection();
+ if (pDocDB->GetCount())
+ pUndoDB = new ScDBCollection( *pDocDB );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoQuery( &rDocShell, nTab, rQueryParam, pUndoDoc, pUndoDB,
+ pOld, bDoSize, pAdvSource ) );
+ }
+
+ ScDocument* pAttribDoc = NULL;
+ ScRange aAttribRange;
+ if (pDestData) // Zielbereich loeschen
+ {
+ if ( bKeepFmt )
+ {
+ // kleinere der End-Spalten, Header+1 Zeile
+ aAttribRange = aOldDest;
+ if ( aAttribRange.aEnd.Col() > aDestTotal.aEnd.Col() )
+ aAttribRange.aEnd.SetCol( aDestTotal.aEnd.Col() );
+ aAttribRange.aEnd.SetRow( aAttribRange.aStart.Row() +
+ ( aLocalParam.bHasHeader ? 1 : 0 ) );
+
+ // auch fuer aufgefuellte Formeln
+ aAttribRange.aEnd.SetCol( aAttribRange.aEnd.Col() + nFormulaCols );
+
+ pAttribDoc = new ScDocument( SCDOCMODE_UNDO );
+ pAttribDoc->InitUndo( pDoc, nDestTab, nDestTab, FALSE, TRUE );
+ pDoc->CopyToDocument( aAttribRange, IDF_ATTRIB, FALSE, pAttribDoc );
+ }
+
+ if ( bDoSize )
+ pDoc->FitBlock( aOldDest, aDestTotal );
+ else
+ pDoc->DeleteAreaTab(aOldDest, IDF_ALL); // einfach loeschen
+ }
+
+ // Filtern am Dokument ausfuehren
+ USHORT nCount = pDoc->Query( nTab, rQueryParam, bKeepSub );
+ if (bCopy)
+ {
+ aLocalParam.nRow2 = aLocalParam.nRow1 + nCount;
+ if (!aLocalParam.bHasHeader && nCount)
+ --aLocalParam.nRow2;
+
+ if ( bDoSize )
+ {
+ // auf wirklichen Ergebnis-Bereich anpassen
+ // (das hier ist immer eine Verkleinerung)
+
+ ScRange aNewDest( aLocalParam.nCol1, aLocalParam.nRow1, nDestTab,
+ aLocalParam.nCol2, aLocalParam.nRow2, nDestTab );
+ pDoc->FitBlock( aDestTotal, aNewDest, FALSE ); // FALSE - nicht loeschen
+
+ if ( nFormulaCols )
+ {
+ // Formeln ausfuellen
+ //! Undo (Query und Repeat) !!!
+
+ ScRange aNewForm( aLocalParam.nCol2+1, aLocalParam.nRow1, nDestTab,
+ aLocalParam.nCol2+nFormulaCols, aLocalParam.nRow2, nDestTab );
+ ScRange aOldForm = aNewForm;
+ aOldForm.aEnd.SetRow( aOldDest.aEnd.Row() );
+ pDoc->FitBlock( aOldForm, aNewForm, FALSE );
+
+ ScMarkData aMark;
+ aMark.SelectOneTable(nDestTab);
+ USHORT nFStartY = aLocalParam.nRow1 + ( aLocalParam.bHasHeader ? 1 : 0 );
+ pDoc->Fill( aLocalParam.nCol2+1, nFStartY,
+ aLocalParam.nCol2+nFormulaCols, nFStartY, aMark,
+ aLocalParam.nRow2 - nFStartY,
+ FILL_TO_BOTTOM, FILL_SIMPLE );
+ }
+ }
+
+ if ( pAttribDoc ) // gemerkte Attribute zurueckkopieren
+ {
+ // Header
+ if (aLocalParam.bHasHeader)
+ {
+ ScRange aHdrRange = aAttribRange;
+ aHdrRange.aEnd.SetRow( aHdrRange.aStart.Row() );
+ pAttribDoc->CopyToDocument( aHdrRange, IDF_ATTRIB, FALSE, pDoc );
+ }
+
+ // Daten
+ USHORT nAttrEndCol = aAttribRange.aEnd.Col();
+ USHORT nAttrRow = aAttribRange.aStart.Row() + ( aLocalParam.bHasHeader ? 1 : 0 );
+ for (USHORT nCol = aAttribRange.aStart.Col(); nCol<=nAttrEndCol; nCol++)
+ {
+ const ScPatternAttr* pSrcPattern = pAttribDoc->GetPattern(
+ nCol, nAttrRow, nDestTab );
+ DBG_ASSERT(pSrcPattern,"Pattern ist 0");
+ if (pSrcPattern)
+ pDoc->ApplyPatternAreaTab( nCol, nAttrRow, nCol, aLocalParam.nRow2,
+ nDestTab, *pSrcPattern );
+ const ScStyleSheet* pStyle = pSrcPattern->GetStyleSheet();
+ if (pStyle)
+ pDoc->ApplyStyleAreaTab( nCol, nAttrRow, nCol, aLocalParam.nRow2,
+ nDestTab, *pStyle );
+ }
+
+ delete pAttribDoc;
+ }
+ }
+
+ // speichern: Inplace immer, sonst je nach Einstellung
+ // alter Inplace-Filter ist ggf. schon aufgehoben
+
+ BOOL bSave = rQueryParam.bInplace || rQueryParam.bDestPers;
+ if (bSave) // merken
+ {
+ pDBData->SetQueryParam( rQueryParam );
+ pDBData->SetHeader( rQueryParam.bHasHeader ); //! ???
+ pDBData->SetAdvancedQuerySource( pAdvSource ); // after SetQueryParam
+ }
+
+ if (bCopy) // neuen DB-Bereich merken
+ {
+ // selektieren wird hinterher von aussen (dbfunc)
+ // momentan ueber DB-Bereich an der Zielposition, darum muss dort
+ // auf jeden Fall ein Bereich angelegt werden.
+
+ ScDBData* pNewData;
+ if (pDestData)
+ pNewData = pDestData; // Bereich vorhanden -> anpassen (immer!)
+ else // Bereich anlegen
+ pNewData = rDocShell.GetDBData(
+ ScRange( aLocalParam.nCol1, aLocalParam.nRow1, nDestTab,
+ aLocalParam.nCol2, aLocalParam.nRow2, nDestTab ),
+ SC_DB_MAKE, TRUE );
+
+ if (pNewData)
+ {
+ pNewData->SetArea( nDestTab, aLocalParam.nCol1, aLocalParam.nRow1,
+ aLocalParam.nCol2, aLocalParam.nRow2 );
+
+ // Query-Param wird am Ziel nicht mehr eingestellt, fuehrt nur zu Verwirrung
+ // und Verwechslung mit dem Query-Param am Quellbereich (#37187#)
+ }
+ else
+ DBG_ERROR("Zielbereich nicht da");
+ }
+
+ if (!bCopy)
+ pDoc->UpdatePageBreaks( nTab );
+
+ ScRange aDirtyRange( aLocalParam.nCol1, aLocalParam.nRow1, nDestTab,
+ aLocalParam.nCol2, aLocalParam.nRow2, nDestTab );
+ pDoc->SetDirty( aDirtyRange );
+
+ if (bCopy)
+ {
+ USHORT nEndX = aLocalParam.nCol2;
+ USHORT nEndY = aLocalParam.nRow2;
+ if (pDestData)
+ {
+ if ( aOldDest.aEnd.Col() > nEndX )
+ nEndX = aOldDest.aEnd.Col();
+ if ( aOldDest.aEnd.Row() > nEndY )
+ nEndY = aOldDest.aEnd.Row();
+ }
+ if (bDoSize)
+ nEndY = MAXROW;
+ rDocShell.PostPaint( aLocalParam.nCol1, aLocalParam.nRow1, nDestTab,
+ nEndX, nEndY, nDestTab, PAINT_GRID );
+ }
+ else
+ rDocShell.PostPaint( 0, rQueryParam.nRow1, nTab, MAXCOL, MAXROW, nTab,
+ PAINT_GRID | PAINT_LEFT );
+ aModificator.SetDocumentModified();
+
+ return TRUE;
+}
+
+// -----------------------------------------------------------------
+
+BOOL ScDBDocFunc::DoSubTotals( USHORT nTab, const ScSubTotalParam& rParam,
+ const ScSortParam* pForceNewSort, BOOL bRecord, BOOL bApi )
+{
+ //! auch fuer ScDBFunc::DoSubTotals benutzen!
+ // dann bleibt aussen:
+ // - neuen Bereich (aus DBData) markieren
+ // - SelectionChanged (?)
+
+ BOOL bDo = !rParam.bRemoveOnly; // FALSE = nur loeschen
+ BOOL bRet = FALSE;
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDBData* pDBData = pDoc->GetDBAtArea( nTab, rParam.nCol1, rParam.nRow1,
+ rParam.nCol2, rParam.nRow2 );
+ if (!pDBData)
+ {
+ DBG_ERROR( "SubTotals: keine DBData" );
+ return FALSE;
+ }
+
+ if (!pDoc->IsBlockEditable( nTab, 0,rParam.nRow1+1, MAXCOL,MAXROW ))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ if (pDoc->HasAttrib( rParam.nCol1, rParam.nRow1+1, nTab,
+ rParam.nCol2, rParam.nRow2, nTab, HASATTR_MERGED | HASATTR_OVERLAPPED ))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_MSSG_INSERTCELLS_0); // nicht in zusammengefasste einfuegen
+ return FALSE;
+ }
+
+ BOOL bOk = TRUE;
+ BOOL bDelete = FALSE;
+ if (rParam.bReplace)
+ if (pDoc->TestRemoveSubTotals( nTab, rParam ))
+ {
+ bDelete = TRUE;
+ bOk = ( MessBox( rDocShell.GetDialogParent(), WinBits(WB_YES_NO | WB_DEF_YES),
+ // "StarCalc" "Daten loeschen?"
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_0 ),
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_1 ) ).Execute()
+ == RET_YES );
+ }
+
+ if (bOk)
+ {
+ WaitObject aWait( rDocShell.GetDialogParent() );
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScSubTotalParam aNewParam( rParam ); // Bereichsende wird veraendert
+ ScDocument* pUndoDoc = NULL;
+ ScOutlineTable* pUndoTab = NULL;
+ ScRangeName* pUndoRange = NULL;
+ ScDBCollection* pUndoDB = NULL;
+ USHORT nTabCount = 0; // fuer Referenz-Undo
+
+ if (bRecord) // alte Daten sichern
+ {
+ BOOL bOldFilter = bDo && rParam.bDoSort;
+
+ nTabCount = pDoc->GetTableCount();
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (pTable)
+ {
+ pUndoTab = new ScOutlineTable( *pTable );
+
+ USHORT nOutStartCol; // Zeilen/Spaltenstatus
+ USHORT nOutStartRow;
+ USHORT nOutEndCol;
+ USHORT nOutEndRow;
+ pTable->GetColArray()->GetRange( nOutStartCol, nOutEndCol );
+ pTable->GetRowArray()->GetRange( nOutStartRow, nOutEndRow );
+
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ pDoc->CopyToDocument( nOutStartCol, 0, nTab, nOutEndCol, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ pDoc->CopyToDocument( 0, nOutStartRow, nTab, MAXCOL, nOutEndRow, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+ else
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, bOldFilter );
+
+ // Datenbereich sichern - incl. Filter-Ergebnis
+ pDoc->CopyToDocument( 0,rParam.nRow1+1,nTab, MAXCOL,rParam.nRow2,nTab,
+ IDF_ALL, FALSE, pUndoDoc );
+
+ // alle Formeln wegen Referenzen
+ pDoc->CopyToDocument( 0,0,0, MAXCOL,MAXROW,nTabCount-1,
+ IDF_FORMULA, FALSE, pUndoDoc );
+
+ // DB- und andere Bereiche
+ ScRangeName* pDocRange = pDoc->GetRangeName();
+ if (pDocRange->GetCount())
+ pUndoRange = new ScRangeName( *pDocRange );
+ ScDBCollection* pDocDB = pDoc->GetDBCollection();
+ if (pDocDB->GetCount())
+ pUndoDB = new ScDBCollection( *pDocDB );
+ }
+
+// pDoc->SetOutlineTable( nTab, NULL );
+ ScOutlineTable* pOut = pDoc->GetOutlineTable( nTab );
+ if (pOut)
+ pOut->GetRowArray()->RemoveAll(); // nur Zeilen-Outlines loeschen
+
+ if (rParam.bReplace)
+ pDoc->RemoveSubTotals( nTab, aNewParam );
+ BOOL bSuccess = TRUE;
+ if (bDo)
+ {
+ // Sortieren
+ if ( rParam.bDoSort || pForceNewSort )
+ {
+ pDBData->SetArea( nTab, aNewParam.nCol1,aNewParam.nRow1, aNewParam.nCol2,aNewParam.nRow2 );
+
+ // Teilergebnis-Felder vor die Sortierung setzen
+ // (doppelte werden weggelassen, kann darum auch wieder aufgerufen werden)
+
+ ScSortParam aOldSort;
+ pDBData->GetSortParam( aOldSort );
+ ScSortParam aSortParam( aNewParam, pForceNewSort ? *pForceNewSort : aOldSort );
+ Sort( nTab, aSortParam, FALSE, FALSE, bApi );
+ }
+
+ bSuccess = pDoc->DoSubTotals( nTab, aNewParam );
+ }
+ ScRange aDirtyRange( aNewParam.nCol1, aNewParam.nRow1, nTab,
+ aNewParam.nCol2, aNewParam.nRow2, nTab );
+ pDoc->SetDirty( aDirtyRange );
+
+ if (bRecord)
+ {
+// ScDBData* pUndoDBData = pDBData ? new ScDBData( *pDBData ) : NULL;
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoSubTotals( &rDocShell, nTab,
+ rParam, aNewParam.nRow2,
+ pUndoDoc, pUndoTab, // pUndoDBData,
+ pUndoRange, pUndoDB ) );
+ }
+
+ if (!bSuccess)
+ {
+ // "Kann keine Zeilen einfuegen"
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_MSSG_DOSUBTOTALS_2);
+ }
+
+ // merken
+ pDBData->SetSubTotalParam( aNewParam );
+ pDBData->SetArea( nTab, aNewParam.nCol1,aNewParam.nRow1, aNewParam.nCol2,aNewParam.nRow2 );
+ pDoc->CompileDBFormula();
+
+ rDocShell.PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab,
+ PAINT_GRID | PAINT_LEFT | PAINT_TOP | PAINT_SIZE );
+ aModificator.SetDocumentModified();
+
+ bRet = bSuccess;
+ }
+ return bRet;
+}
+
+//==================================================================
+
+BOOL lcl_BlockEditable( ScDocument* pDoc, const ScRange& rRange )
+{
+ return pDoc->IsBlockEditable( rRange.aStart.Tab(),
+ rRange.aStart.Col(), rRange.aStart.Row(),
+ rRange.aEnd.Col(), rRange.aEnd.Row() );
+}
+
+BOOL ScDBDocFunc::DataPilotUpdate( ScDPObject* pOldObj, const ScDPObject* pNewObj,
+ BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+ WaitObject aWait( rDocShell.GetDialogParent() );
+
+ BOOL bDone = FALSE;
+ BOOL bUndoSelf = FALSE;
+ USHORT nErrId = 0;
+
+ ScDocument* pOldUndoDoc = NULL;
+ ScDocument* pNewUndoDoc = NULL;
+ ScDPObject* pUndoDPObj = NULL;
+ if ( bRecord && pOldObj )
+ pUndoDPObj = new ScDPObject( *pOldObj ); // copy old settings for undo
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if ( rDocShell.IsReadOnly() || pDoc->GetChangeTrack() )
+ {
+ // not recorded -> disallow
+ //! different error messages?
+
+ nErrId = STR_PROTECTIONERR;
+ }
+ if ( pOldObj && !nErrId )
+ {
+ ScRange aOldOut = pOldObj->GetOutRange();
+ if ( !lcl_BlockEditable( pDoc, aOldOut ) )
+ nErrId = STR_PROTECTIONERR;
+ }
+ if ( pNewObj && !nErrId )
+ {
+ // at least one cell at the output position must be editable
+ // -> check in advance
+ // (start of output range in pNewObj is valid)
+
+ ScRange aNewStart( pNewObj->GetOutRange().aStart );
+ if ( !lcl_BlockEditable( pDoc, aNewStart ) )
+ nErrId = STR_PROTECTIONERR;
+ }
+
+ ScDPObject* pDestObj = NULL;
+ if ( !nErrId )
+ {
+ if ( pOldObj && !pNewObj )
+ {
+ // delete table
+
+ ScRange aRange = pOldObj->GetOutRange();
+ USHORT nTab = aRange.aStart.Tab();
+
+ if ( bRecord )
+ {
+ pOldUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pOldUndoDoc->InitUndo( pDoc, nTab, nTab );
+ pDoc->CopyToDocument( aRange, IDF_ALL, FALSE, pOldUndoDoc );
+ }
+
+ pDoc->DeleteAreaTab( aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(),
+ nTab, IDF_ALL );
+
+ pDoc->GetDPCollection()->Free( pOldObj ); // object is deleted here
+
+ rDocShell.PostPaintGridAll(); //! only necessary parts
+ rDocShell.PostPaint( aRange.aStart.Col(), aRange.aStart.Row(), nTab,
+ aRange.aEnd.Col(), aRange.aEnd.Row(), nTab,
+ PAINT_GRID );
+ bDone = TRUE;
+ }
+ else if ( pNewObj )
+ {
+ if ( pOldObj )
+ {
+ if ( bRecord )
+ {
+ ScRange aRange = pOldObj->GetOutRange();
+ USHORT nTab = aRange.aStart.Tab();
+ pOldUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pOldUndoDoc->InitUndo( pDoc, nTab, nTab );
+ pDoc->CopyToDocument( aRange, IDF_ALL, FALSE, pOldUndoDoc );
+ }
+
+ if ( pNewObj == pOldObj )
+ {
+ // refresh only - no settings modified
+ }
+ else
+ {
+ pNewObj->WriteSourceDataTo( *pOldObj ); // copy source data
+
+ ScDPSaveData* pData = pNewObj->GetSaveData();
+ DBG_ASSERT( pData, "no SaveData from living DPObject" );
+ if ( pData )
+ pOldObj->SetSaveData( *pData ); // copy SaveData
+ }
+
+ pDestObj = pOldObj;
+ }
+ else
+ {
+ // output range must be set at pNewObj
+
+ pDestObj = new ScDPObject( *pNewObj );
+ pDestObj->SetAlive(TRUE);
+ if ( !pDoc->GetDPCollection()->Insert(pDestObj) )
+ {
+ DBG_ERROR("cannot insert DPObject");
+ DELETEZ( pDestObj );
+ }
+ }
+ if ( pDestObj )
+ {
+ pDestObj->InvalidateData(); // before getting the new output area
+
+ // make sure the table has a name (not set by dialog)
+ if ( !pDestObj->GetName().Len() )
+ pDestObj->SetName( pDoc->GetDPCollection()->CreateNewName() );
+
+ ScRange aNewOut = pDestObj->GetNewOutputRange();
+ if ( !lcl_BlockEditable( pDoc, aNewOut ) )
+ {
+ // destination area isn't editable
+ //! reverse everything done so far, don't proceed
+
+ // quick solution: proceed to end, use undo action
+ // to reverse everything:
+ DBG_ASSERT( bRecord, "DataPilotUpdate: can't undo" );
+ bUndoSelf = TRUE;
+ nErrId = STR_PROTECTIONERR;
+ }
+
+ if ( bRecord )
+ {
+ USHORT nTab = aNewOut.aStart.Tab();
+ pNewUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pNewUndoDoc->InitUndo( pDoc, nTab, nTab );
+ pDoc->CopyToDocument( aNewOut, IDF_ALL, FALSE, pNewUndoDoc );
+ }
+
+ //! test for overlap with other data pilot tables
+
+ //! test if output area is empty and query before overwriting
+
+ pDestObj->Output();
+
+ rDocShell.PostPaintGridAll(); //! only necessary parts
+ bDone = TRUE;
+ }
+ }
+ // else nothing (no old, no new)
+ }
+
+ if ( bRecord && bDone )
+ {
+ SfxUndoAction* pAction = new ScUndoDataPilot( &rDocShell,
+ pOldUndoDoc, pNewUndoDoc, pUndoDPObj, pDestObj );
+ pOldUndoDoc = NULL;
+ pNewUndoDoc = NULL; // pointers are used in undo action
+ // pUndoDPObj is copied
+
+ if (bUndoSelf)
+ {
+ // use undo action to restore original state
+ //! prevent setting the document modified? (ScDocShellModificator)
+
+ pAction->Undo();
+ delete pAction;
+ bDone = FALSE;
+ }
+ else
+ rDocShell.GetUndoManager()->AddUndoAction( pAction );
+ }
+
+ delete pOldUndoDoc; // if not used for undo
+ delete pNewUndoDoc;
+ delete pUndoDPObj;
+
+ if (bDone)
+ aModificator.SetDocumentModified();
+
+ if ( nErrId && !bApi )
+ rDocShell.ErrorMessage( nErrId );
+
+ return bDone;
+}
+
+//==================================================================
+//
+// Datenbank-Import...
+
+void ScDBDocFunc::UpdateImport( const String& rTarget, const String& rDBName,
+ const String& rTableName, const String& rStatement,
+ BOOL bNative, BYTE nType,
+ const SbaSelectionList* pSelection )
+{
+ // Target ist jetzt einfach der Bereichsname
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDBCollection& rDBColl = *pDoc->GetDBCollection();
+ ScDBData* pData;
+ ScImportParam aImportParam;
+ BOOL bFound = FALSE;
+ USHORT nCount = rDBColl.GetCount();
+ for (USHORT i=0; i<nCount && !bFound; i++)
+ {
+ pData = rDBColl[i];
+ if (pData->GetName() == rTarget)
+ bFound = TRUE;
+ }
+ if (!bFound)
+ {
+ InfoBox aInfoBox(rDocShell.GetDialogParent(),
+ ScGlobal::GetRscString( STR_TARGETNOTFOUND ) );
+ aInfoBox.Execute();
+ return;
+ }
+
+ USHORT nTab;
+ USHORT nDummy;
+ pData->GetArea( nTab, nDummy,nDummy,nDummy,nDummy );
+ pData->GetImportParam( aImportParam );
+
+ BOOL bSql = ( rStatement.Len() != 0 );
+
+ aImportParam.aDBName = rDBName;
+ aImportParam.bSql = bSql;
+ aImportParam.aStatement = bSql ? rStatement : rTableName;
+ aImportParam.bNative = bNative;
+ aImportParam.nType = nType;
+ aImportParam.bImport = TRUE;
+ BOOL bContinue = DoImport( nTab, aImportParam, pSelection, TRUE );
+
+ // DB-Operationen wiederholen
+
+ ScTabViewShell* pViewSh = rDocShell.GetBestViewShell();
+ if (pViewSh)
+ {
+ ScRange aRange;
+ pData->GetArea(aRange);
+ pViewSh->MarkRange(aRange); // selektieren
+
+ if ( bContinue ) // #41905# Fehler beim Import -> Abbruch
+ {
+ // interne Operationen, wenn welche gespeichert
+
+ if ( pData->HasQueryParam() || pData->HasSortParam() || pData->HasSubTotalParam() )
+ pViewSh->RepeatDB();
+
+ // Pivottabellen die den Bereich als Quelldaten haben
+
+ rDocShell.RefreshPivotTables(aRange);
+ }
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/docshell/dbdocimp.cxx b/sc/source/ui/docshell/dbdocimp.cxx
new file mode 100644
index 000000000000..ae6ea5ec48f1
--- /dev/null
+++ b/sc/source/ui/docshell/dbdocimp.cxx
@@ -0,0 +1,716 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbdocimp.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------
+
+#include <unotools/processfactory.hxx>
+#include <vcl/msgbox.hxx>
+#include <sdb/sdbstat.hxx> // DBObject enum values
+#include <tools/debug.hxx>
+#include <svtools/zforlist.hxx>
+#include <offmgr/sbaitems.hxx> // SbaSelectionList
+
+#include <com/sun/star/sdb/CommandType.hpp>
+#include <com/sun/star/sdbc/XRow.hpp>
+#include <com/sun/star/sdbc/XRowSet.hpp>
+#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
+#include <com/sun/star/sdbc/DataType.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+
+#include "dbdocfun.hxx"
+#include "docsh.hxx"
+#include "globstr.hrc"
+#include "scerrors.hxx"
+#include "cell.hxx"
+#include "compiler.hxx"
+#include "dbcolect.hxx"
+#include "markdata.hxx"
+#include "undodat.hxx"
+#include "progress.hxx"
+#include "patattr.hxx"
+#include "docpool.hxx"
+#include "attrib.hxx"
+
+using namespace com::sun::star;
+
+#define SC_SERVICE_ROWSET "com.sun.star.sdb.RowSet"
+
+//! move to a header file?
+#define SC_DBPROP_DATASOURCENAME "DataSourceName"
+#define SC_DBPROP_COMMAND "Command"
+#define SC_DBPROP_COMMANDTYPE "CommandType"
+
+#define D_TIMEFACTOR 86400.0
+
+// -----------------------------------------------------------------
+
+void lcl_PutData( ScDocument* pDoc, USHORT nCol, USHORT nRow, USHORT nTab,
+ const uno::Reference<sdbc::XRow>& xRow, long nRowPos,
+ long nType, BOOL bCurrency )
+{
+ String aString;
+ double nVal = 0.0;
+ BOOL bValue = FALSE;
+ BOOL bEmptyFlag = FALSE;
+ BOOL bError = FALSE;
+ ULONG nFormatIndex = 0;
+
+ //! wasNull calls only if null value was found?
+
+ try
+ {
+ switch ( nType )
+ {
+ case sdbc::DataType::BIT:
+ //! use language from doc (here, date/time and currency)?
+ nFormatIndex = pDoc->GetFormatTable()->GetStandardFormat(
+ NUMBERFORMAT_LOGICAL, ScGlobal::eLnge );
+ nVal = (xRow->getBoolean(nRowPos) ? 1 : 0);
+ bEmptyFlag = ( nVal == 0.0 ) && xRow->wasNull();
+ bValue = TRUE;
+ 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?
+ nVal = xRow->getDouble(nRowPos);
+ bEmptyFlag = ( nVal == 0.0 ) && xRow->wasNull();
+ bValue = TRUE;
+ break;
+
+ case sdbc::DataType::CHAR:
+ case sdbc::DataType::VARCHAR:
+ case sdbc::DataType::LONGVARCHAR:
+ aString = xRow->getString(nRowPos);
+ bEmptyFlag = ( aString.Len() == 0 ) && xRow->wasNull();
+ break;
+
+ case sdbc::DataType::DATE:
+ {
+ SvNumberFormatter* pFormTable = pDoc->GetFormatTable();
+ nFormatIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_DATE, ScGlobal::eLnge );
+
+ util::Date aDate = xRow->getDate(nRowPos);
+ nVal = Date( aDate.Day, aDate.Month, aDate.Year ) -
+ *pFormTable->GetNullDate();
+ bEmptyFlag = xRow->wasNull();
+ bValue = TRUE;
+ }
+ break;
+
+ case sdbc::DataType::TIME:
+ {
+ SvNumberFormatter* pFormTable = pDoc->GetFormatTable();
+ nFormatIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_TIME, ScGlobal::eLnge );
+
+ util::Time aTime = xRow->getTime(nRowPos);
+ nVal = ( aTime.Hours * 3600 + aTime.Minutes * 60 +
+ aTime.Seconds + aTime.HundredthSeconds / 100.0 ) / D_TIMEFACTOR;
+ bEmptyFlag = xRow->wasNull();
+ bValue = TRUE;
+ }
+ break;
+
+ case sdbc::DataType::TIMESTAMP:
+ {
+ SvNumberFormatter* pFormTable = pDoc->GetFormatTable();
+ nFormatIndex = pFormTable->GetStandardFormat(
+ NUMBERFORMAT_DATETIME, ScGlobal::eLnge );
+
+ util::DateTime aStamp = xRow->getTimestamp(nRowPos);
+ nVal = ( Date( aStamp.Day, aStamp.Month, aStamp.Year ) -
+ *pFormTable->GetNullDate() ) +
+ ( aStamp.Hours * 3600 + aStamp.Minutes * 60 +
+ aStamp.Seconds + aStamp.HundredthSeconds / 100.0 ) / D_TIMEFACTOR;
+ bEmptyFlag = xRow->wasNull();
+ bValue = TRUE;
+ }
+ break;
+
+ case sdbc::DataType::SQLNULL:
+ bEmptyFlag = TRUE;
+ break;
+
+ case sdbc::DataType::BINARY:
+ case sdbc::DataType::VARBINARY:
+ case sdbc::DataType::LONGVARBINARY:
+ default:
+ bError = TRUE; // unknown type
+ }
+ }
+ catch ( uno::Exception& )
+ {
+ bError = TRUE;
+ }
+
+ if ( bValue && bCurrency )
+ nFormatIndex = pDoc->GetFormatTable()->GetStandardFormat(
+ NUMBERFORMAT_CURRENCY, ScGlobal::eLnge );
+
+ ScBaseCell* pCell;
+ if (bEmptyFlag)
+ {
+ pCell = NULL;
+ pDoc->PutCell( nCol, nRow, nTab, pCell );
+ }
+ else if (bError)
+ {
+ pDoc->SetError( nCol, nRow, nTab, NOVALUE );
+ }
+ else if (bValue)
+ {
+ pCell = new ScValueCell( nVal );
+ if (nFormatIndex == 0)
+ pDoc->PutCell( nCol, nRow, nTab, pCell );
+ else
+ pDoc->PutCell( nCol, nRow, nTab, pCell, nFormatIndex );
+ }
+ else
+ {
+ pCell = ScBaseCell::CreateTextCell( aString, pDoc );
+// if ( pSimpleFlag && pCell->GetCellType() == CELLTYPE_EDIT )
+// *pSimpleFlag = FALSE;
+ pDoc->PutCell( nCol, nRow, nTab, pCell );
+ }
+}
+
+// -----------------------------------------------------------------
+
+BOOL ScDBDocFunc::DoImport( USHORT nTab, const ScImportParam& rParam,
+ const SbaSelectionList* pSelection,
+ BOOL bRecord, BOOL bAddrInsert )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDBData* pDBData = 0;
+ if ( !bAddrInsert )
+ {
+ pDBData = pDoc->GetDBAtArea( nTab, rParam.nCol1, rParam.nRow1,
+ rParam.nCol2, rParam.nRow2 );
+ if (!pDBData)
+ {
+ DBG_ERROR( "DoImport: no DBData" );
+ return FALSE;
+ }
+ }
+
+ Window* pWaitWin = rDocShell.GetDialogParent();
+ if (pWaitWin)
+ pWaitWin->EnterWait();
+ ScDocShellModificator aModificator( rDocShell );
+
+ BOOL bSuccess = FALSE;
+ BOOL bApi = FALSE; //! pass as argument
+ BOOL bTruncated = FALSE; // for warning
+ USHORT nErrStringId = 0;
+ String aErrorMessage;
+
+ USHORT nCol = rParam.nCol1;
+ USHORT nRow = rParam.nRow1;
+ USHORT nEndCol = nCol; // end of resulting database area
+ USHORT nEndRow = nRow;
+ long i;
+
+ BOOL bDoSelection = FALSE;
+ BOOL bRealSelection = FALSE; // TRUE if not everything is selected
+ ULONG nListPos = 0;
+ ULONG nRowsRead = 0;
+ ULONG nListCount = 0;
+
+ // -1 is special
+ if ( pSelection && pSelection->Count() && (long)pSelection->GetObject(0) != -1L )
+ {
+ bDoSelection = TRUE;
+ nListCount = pSelection->Count();
+ }
+
+ // ImportDoc - also used for Redo
+ ScDocument* pImportDoc = new ScDocument( SCDOCMODE_UNDO );
+ pImportDoc->InitUndo( pDoc, nTab, nTab );
+ ScColumn::bDoubleAlloc = TRUE;
+
+ //
+ // get data from database into import document
+ //
+
+ try
+ {
+ // progress bar
+ // only text (title is still needed, for the cancel button)
+ ScProgress aProgress( &rDocShell, ScGlobal::GetRscString(STR_UNDO_IMPORTDATA), 0 );
+ USHORT nInserted = 0;
+
+ uno::Reference<sdbc::XRowSet> xRowSet(
+ utl::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
+ //
+
+ sal_Int32 nType = rParam.bSql ? sdb::CommandType::COMMAND :
+ ( (rParam.nType == dbQuery) ? sdb::CommandType::QUERY :
+ sdb::CommandType::TABLE );
+ uno::Any aAny;
+
+ aAny <<= rtl::OUString( rParam.aDBName );
+ xRowProp->setPropertyValue(
+ rtl::OUString::createFromAscii(SC_DBPROP_DATASOURCENAME), aAny );
+
+ aAny <<= rtl::OUString( rParam.aStatement );
+ xRowProp->setPropertyValue(
+ rtl::OUString::createFromAscii(SC_DBPROP_COMMAND), aAny );
+
+ aAny <<= nType;
+ xRowProp->setPropertyValue(
+ rtl::OUString::createFromAscii(SC_DBPROP_COMMANDTYPE), aAny );
+
+ xRowSet->execute();
+
+ //
+ // get column descriptions
+ //
+
+ long nColCount = 0;
+ uno::Reference<sdbc::XResultSetMetaData> xMeta;
+ uno::Reference<sdbc::XResultSetMetaDataSupplier> xMetaSupp( xRowSet, uno::UNO_QUERY );
+ if ( xMetaSupp.is() )
+ xMeta = xMetaSupp->getMetaData();
+ if ( xMeta.is() )
+ nColCount = xMeta->getColumnCount(); // this is the number of real columns
+
+ if ( rParam.nCol1 + nColCount - 1 > MAXCOL )
+ {
+ nColCount = 0;
+ //! error message
+ }
+
+ uno::Reference<sdbc::XRow> xRow( xRowSet, uno::UNO_QUERY );
+ if ( nColCount > 0 && xRow.is() )
+ {
+ nEndCol = (USHORT)( rParam.nCol1 + nColCount - 1 );
+
+ uno::Sequence<sal_Int32> aColTypes( nColCount ); // column types
+ uno::Sequence<sal_Bool> aColCurr( nColCount ); // currency flag is not in types
+ sal_Int32* pTypeArr = aColTypes.getArray();
+ sal_Bool* pCurrArr = aColCurr.getArray();
+ for (i=0; i<nColCount; i++)
+ {
+ pTypeArr[i] = xMeta->getColumnType( i+1 );
+ pCurrArr[i] = xMeta->isCurrency( i+1 );
+ }
+
+ if ( !bAddrInsert ) // read column names
+ {
+ nCol = rParam.nCol1;
+ for (i=0; i<nColCount; i++)
+ {
+ pImportDoc->SetString( nCol, nRow, nTab,
+ xMeta->getColumnLabel( i+1 ) );
+ ++nCol;
+ }
+ ++nRow;
+ }
+
+ BOOL bEnd = FALSE;
+ while ( !bEnd && xRowSet->next() )
+ {
+ // skip rows that are not selected
+
+ if (bDoSelection)
+ {
+ if (nListPos < nListCount)
+ {
+ ULONG nNextRow = (ULONG) pSelection->GetObject(nListPos);
+ while (nRowsRead+1 < nNextRow && !bEnd)
+ {
+ bRealSelection = TRUE;
+ if ( !xRowSet->next() )
+ bEnd = TRUE;
+ ++nRowsRead;
+ }
+ ++nListPos;
+ }
+ else
+ {
+ bRealSelection = TRUE; // more data available but not used
+ bEnd = TRUE;
+ }
+ }
+
+ if ( nRow <= MAXROW )
+ {
+ nCol = rParam.nCol1;
+ for (i=0; i<nColCount; i++)
+ {
+ lcl_PutData( pImportDoc, nCol, nRow, nTab,
+ xRow, i+1, pTypeArr[i], pCurrArr[i] );
+ ++nCol;
+ }
+ nEndRow = nRow;
+ ++nRow;
+
+ // progress bar
+
+ ++nInserted;
+ if (!(nInserted & 15))
+ {
+ String aPict = ScGlobal::GetRscString( STR_PROGRESS_IMPORT );
+ String aText = aPict.GetToken(0,'#');
+ aText += String::CreateFromInt32( nInserted );
+ aText += aPict.GetToken(1,'#');
+
+ if (!aProgress.SetStateText( 0, aText )) // stopped by user?
+ {
+ bEnd = TRUE;
+ bSuccess = FALSE;
+ nErrStringId = STR_DATABASE_ABORTED;
+ }
+ }
+ }
+ else // past the end of the spreadsheet
+ {
+ bEnd = TRUE; // don't continue
+ bTruncated = TRUE; // warning flag
+ }
+ }
+
+ bSuccess = TRUE;
+ }
+
+ }
+ }
+ catch ( sdbc::SQLException& rError )
+ {
+ aErrorMessage = rError.Message;
+ }
+ catch ( uno::Exception& )
+ {
+ DBG_ERROR("Unexpected exception in database");
+ }
+
+ ScColumn::bDoubleAlloc = FALSE;
+ pImportDoc->DoColResize( nTab, rParam.nCol1,nEndCol, 0 );
+
+ //
+ // test for cell protection
+ //
+
+ BOOL bKeepFormat = !bAddrInsert && pDBData->IsKeepFmt();
+ BOOL bMoveCells = !bAddrInsert && pDBData->IsDoSize();
+ USHORT nFormulaCols = 0; // columns to be filled with formulas
+ if (bMoveCells && nEndCol == rParam.nCol2)
+ {
+ // if column count changes, formulas would become invalid anyway
+ // -> only set nFormulaCols for unchanged column count
+
+ USHORT nTestCol = rParam.nCol2 + 1; // right of the data
+ USHORT nTestRow = rParam.nRow1 + 1; // below the title row
+ while ( nTestCol <= MAXCOL &&
+ pDoc->GetCellType(ScAddress( nTestCol, nTestRow, nTab )) == CELLTYPE_FORMULA )
+ ++nTestCol, ++nFormulaCols;
+ }
+
+ if (bSuccess)
+ {
+ // old and new range editable?
+ if ( !pDoc->IsBlockEditable(nTab, rParam.nCol1,rParam.nRow1,rParam.nCol2,rParam.nRow2) ||
+ !pDoc->IsBlockEditable(nTab, rParam.nCol1,rParam.nRow1,nEndCol,nEndRow) )
+ {
+ nErrStringId = STR_PROTECTIONERR;
+ bSuccess = FALSE;
+ }
+ }
+
+ if ( bSuccess && bMoveCells )
+ {
+ ScRange aOld( rParam.nCol1, rParam.nRow1, nTab,
+ rParam.nCol2+nFormulaCols, rParam.nRow2, nTab );
+ ScRange aNew( rParam.nCol1, rParam.nRow1, nTab,
+ nEndCol+nFormulaCols, nEndRow, nTab );
+ if (!pDoc->CanFitBlock( aOld, aNew ))
+ {
+ nErrStringId = STR_MSSG_DOSUBTOTALS_2; // can't insert cells
+ bSuccess = FALSE;
+ }
+ }
+
+ //
+ // copy data from import doc into real document
+ //
+
+ if ( bSuccess )
+ {
+ if (bKeepFormat)
+ {
+ // keep formatting of title and first data row from the document
+ // CopyToDocument also copies styles, Apply... needs separate calls
+
+ USHORT nMinEndCol = Min( rParam.nCol2, nEndCol ); // not too much
+ nMinEndCol += nFormulaCols; // only if column count unchanged
+ pImportDoc->DeleteAreaTab( 0,0, MAXCOL,MAXROW, nTab, IDF_ATTRIB );
+ pDoc->CopyToDocument( rParam.nCol1, rParam.nRow1, nTab,
+ nMinEndCol, rParam.nRow1, nTab,
+ IDF_ATTRIB, FALSE, pImportDoc );
+
+ USHORT nDataStartRow = rParam.nRow1+1;
+ for (USHORT nCopyCol=rParam.nCol1; nCopyCol<=nMinEndCol; nCopyCol++)
+ {
+ const ScPatternAttr* pSrcPattern = pDoc->GetPattern(
+ nCopyCol, nDataStartRow, nTab );
+ pImportDoc->ApplyPatternAreaTab( nCopyCol, nDataStartRow, nCopyCol, nEndRow,
+ nTab, *pSrcPattern );
+ const ScStyleSheet* pStyle = pSrcPattern->GetStyleSheet();
+ if (pStyle)
+ pImportDoc->ApplyStyleAreaTab( nCopyCol, nDataStartRow, nCopyCol, nEndRow,
+ nTab, *pStyle );
+ }
+ }
+
+ // don't set cell protection attribute if table is protected
+ if (pDoc->IsTabProtected(nTab))
+ {
+ ScPatternAttr aPattern(pImportDoc->GetPool());
+ aPattern.GetItemSet().Put( ScProtectionAttr( FALSE,FALSE,FALSE,FALSE ) );
+ pImportDoc->ApplyPatternAreaTab( 0,0,MAXCOL,MAXROW, nTab, aPattern );
+ }
+
+ //
+ // copy old data for undo
+ //
+
+ USHORT nUndoEndCol = Max( nEndCol, rParam.nCol2 ); // rParam = old end
+ USHORT nUndoEndRow = Max( nEndRow, rParam.nRow2 );
+
+ ScDocument* pUndoDoc = NULL;
+ ScDBData* pUndoDBData = NULL;
+ if ( bRecord )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+
+ if ( !bAddrInsert )
+ pUndoDBData = new ScDBData( *pDBData );
+ }
+
+ ScMarkData aNewMark;
+ aNewMark.SelectOneTable( nTab );
+
+ if (bRecord)
+ {
+ // nFormulaCols is set only if column count is unchanged
+ pDoc->CopyToDocument( rParam.nCol1, rParam.nRow1, nTab,
+ nEndCol+nFormulaCols, nEndRow, nTab,
+ IDF_ALL, FALSE, pUndoDoc );
+ if ( rParam.nCol2 > nEndCol )
+ pDoc->CopyToDocument( nEndCol+1, rParam.nRow1, nTab,
+ nUndoEndCol, nUndoEndRow, nTab,
+ IDF_ALL, FALSE, pUndoDoc );
+ if ( rParam.nRow2 > nEndRow )
+ pDoc->CopyToDocument( rParam.nCol1, nEndRow+1, nTab,
+ nUndoEndCol+nFormulaCols, nUndoEndRow, nTab,
+ IDF_ALL, FALSE, pUndoDoc );
+ }
+
+ //
+ // move new data
+ //
+
+ if (bMoveCells)
+ {
+ // clear only the range without the formulas,
+ // so the formula title and first row are preserved
+
+ ScRange aDelRange( rParam.nCol1, rParam.nRow1, nTab,
+ rParam.nCol2, rParam.nRow2, nTab );
+ pDoc->DeleteAreaTab( aDelRange, IDF_ALL ); // ohne die Formeln
+
+ ScRange aOld( rParam.nCol1, rParam.nRow1, nTab,
+ rParam.nCol2+nFormulaCols, rParam.nRow2, nTab );
+ ScRange aNew( rParam.nCol1, rParam.nRow1, nTab,
+ nEndCol+nFormulaCols, nEndRow, nTab );
+ pDoc->FitBlock( aOld, aNew, FALSE ); // Formeln nicht loeschen
+ }
+ else if ( nEndCol < rParam.nCol2 ) // DeleteArea calls PutInOrder
+ pDoc->DeleteArea( nEndCol+1, rParam.nRow1, rParam.nCol2, rParam.nRow2,
+ aNewMark, IDF_CONTENTS );
+
+ // CopyToDocument doesn't remove contents
+ pDoc->DeleteAreaTab( rParam.nCol1, rParam.nRow1, nEndCol, nEndRow, nTab, IDF_CONTENTS );
+
+ // #41216# remove each column from ImportDoc after copying to reduce memory usage
+ BOOL bOldAutoCalc = pDoc->GetAutoCalc();
+ pDoc->SetAutoCalc( FALSE ); // outside of the loop
+ for (USHORT nCopyCol = rParam.nCol1; nCopyCol <= nEndCol; nCopyCol++)
+ {
+ pImportDoc->CopyToDocument( nCopyCol, rParam.nRow1, nTab, nCopyCol, nEndRow, nTab,
+ IDF_ALL, FALSE, pDoc );
+ pImportDoc->DeleteAreaTab( nCopyCol, rParam.nRow1, nCopyCol, nEndRow, nTab, IDF_CONTENTS );
+ pImportDoc->DoColResize( nTab, nCopyCol, nCopyCol, 0 );
+ }
+ pDoc->SetAutoCalc( bOldAutoCalc );
+
+ if (nFormulaCols) // copy formulas
+ {
+ if (bKeepFormat) // formats for formulas
+ pImportDoc->CopyToDocument( nEndCol+1, rParam.nRow1, nTab,
+ nEndCol+nFormulaCols, nEndRow, nTab,
+ IDF_ATTRIB, FALSE, pDoc );
+ // fill formulas
+ ScMarkData aMark;
+ aMark.SelectOneTable(nTab);
+ pDoc->Fill( nEndCol+1, rParam.nRow1+1, nEndCol+nFormulaCols, rParam.nRow1+1,
+ aMark, nEndRow-rParam.nRow1-1, FILL_TO_BOTTOM, FILL_SIMPLE );
+ }
+
+ // if new range is smaller, clear old contents
+
+ if (!bMoveCells) // move has happened above
+ {
+ if ( rParam.nCol2 > nEndCol )
+ pDoc->DeleteArea( nEndCol+1, rParam.nRow1, rParam.nCol2, rParam.nRow2,
+ aNewMark, IDF_CONTENTS );
+ if ( rParam.nRow2 > nEndRow )
+ pDoc->DeleteArea( rParam.nCol1, nEndRow+1, rParam.nCol2, rParam.nRow2,
+ aNewMark, IDF_CONTENTS );
+ }
+
+ if( !bAddrInsert ) // update database range
+ {
+ pDBData->SetImportParam( rParam );
+ pDBData->SetHeader( TRUE );
+ pDBData->SetByRow( TRUE );
+ pDBData->SetArea( nTab, rParam.nCol1,rParam.nRow1, nEndCol,nEndRow );
+ pDBData->SetImportSelection( bRealSelection );
+ pDoc->CompileDBFormula();
+ }
+
+ if (bRecord)
+ {
+ ScDocument* pRedoDoc = pImportDoc;
+ pImportDoc = NULL;
+
+ if (nFormulaCols) // include filled formulas for redo
+ pDoc->CopyToDocument( rParam.nCol1, rParam.nRow1, nTab,
+ nEndCol+nFormulaCols, nEndRow, nTab,
+ IDF_ALL, FALSE, pRedoDoc );
+
+ ScDBData* pRedoDBData = pDBData ? new ScDBData( *pDBData ) : NULL;
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoImportData( &rDocShell, nTab,
+ rParam, nUndoEndCol, nUndoEndRow,
+ nFormulaCols,
+ pUndoDoc, pRedoDoc, pUndoDBData, pRedoDBData ) );
+ }
+
+ pDoc->SetDirty();
+ rDocShell.PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID );
+ aModificator.SetDocumentModified();
+
+ if (pWaitWin)
+ pWaitWin->LeaveWait();
+
+ if ( bTruncated && !bApi ) // show warning
+ ErrorHandler::HandleError(SCWARN_IMPORT_RANGE_OVERFLOW);
+ }
+ else if ( !bApi )
+ {
+ if (pWaitWin)
+ pWaitWin->LeaveWait();
+
+ if (!aErrorMessage.Len())
+ {
+ if (!nErrStringId)
+ nErrStringId = STR_MSSG_IMPORTDATA_0;
+ aErrorMessage = ScGlobal::GetRscString( nErrStringId );
+ }
+ InfoBox aInfoBox( rDocShell.GetDialogParent(), aErrorMessage );
+ aInfoBox.Execute();
+ }
+
+ delete pImportDoc;
+
+ return bSuccess;
+}
+
+
+
+
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
new file mode 100644
index 000000000000..e90dcd17588c
--- /dev/null
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -0,0 +1,3499 @@
+/*************************************************************************
+ *
+ * $RCSfile: docfunc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/editobj.hxx>
+#include <svx/eeitem.hxx>
+#include <svx/linkmgr.hxx>
+#include <svx/svdundo.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/printer.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/sound.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/waitobj.hxx>
+#include <svtools/zforlist.hxx>
+
+#include "docfunc.hxx"
+
+#include "sc.hrc"
+
+#include "arealink.hxx"
+#include "attrib.hxx"
+#include "autoform.hxx"
+#include "cell.hxx"
+#include "detdata.hxx"
+#include "detfunc.hxx"
+#include "docpool.hxx"
+#include "docsh.hxx"
+#include "drwlayer.hxx"
+#include "editutil.hxx"
+#include "globstr.hrc"
+#include "namecrea.hxx" // NAME_TOP etc.
+#include "olinetab.hxx"
+#include "patattr.hxx"
+#include "rangenam.hxx"
+#include "rangeutl.hxx"
+#include "refundo.hxx"
+#include "scresid.hxx"
+#include "stlpool.hxx"
+#include "stlsheet.hxx"
+#include "tablink.hxx"
+#include "tabvwsh.hxx"
+#include "uiitems.hxx"
+#include "undoblk.hxx"
+#include "undocell.hxx"
+#include "undodraw.hxx"
+#include "undotab.hxx"
+#include "waitoff.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+//========================================================================
+
+IMPL_LINK( ScDocFunc, NotifyDrawUndo, SfxUndoAction*, pUndoAction )
+{
+ rDocShell.GetUndoManager()->AddUndoAction( new ScUndoDraw( pUndoAction, &rDocShell ) );
+ rDocShell.SetDrawModified();
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+// Zeile ueber dem Range painten (fuer Linien nach AdjustRowHeight)
+
+void lcl_PaintAbove( ScDocShell& rDocShell, const ScRange& rRange )
+{
+ USHORT nRow = rRange.aStart.Row();
+ if ( nRow > 0 )
+ {
+ USHORT nTab = rRange.aStart.Tab(); //! alle?
+ --nRow;
+ rDocShell.PostPaint( ScRange(0,nRow,nTab, MAXCOL,nRow,nTab), PAINT_GRID );
+ }
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::AdjustRowHeight( const ScRange& rRange, BOOL bPaint )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if ( pDoc->IsImportingXML() )
+ {
+ // for XML import, all row heights are updated together after importing
+ return FALSE;
+ }
+
+//! OutputDevice* pDev = rDocShell.GetPrinter();
+ VirtualDevice aVDev;
+ OutputDevice* pDev = &aVDev; // aus Kompatibilitaetsgruenden...
+
+ if (!pDev)
+ {
+ DBG_ERROR("kein Printer !??!?");
+ return FALSE;
+ }
+
+ USHORT nTab = rRange.aStart.Tab();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nEndRow = rRange.aEnd.Row();
+
+ Fraction aOne(1,1);
+
+ MapMode aOldMap = pDev->GetMapMode();
+ pDev->SetMapMode( MAP_PIXEL ); // wichtig fuer GetNeededSize
+ Point aPix1000 = pDev->LogicToPixel( Point(1000,1000), MAP_TWIP );
+ double nPPTX = aPix1000.X() / 1000.0;
+ double nPPTY = aPix1000.Y() / 1000.0;
+
+ nPPTX /= rDocShell.GetOutputFactor(); // noetig fuer Bildschirm/VDev
+
+ BOOL bChanged = pDoc->SetOptimalHeight( nStartRow, nEndRow, nTab, 0, pDev,
+ nPPTX, nPPTY, aOne, aOne, FALSE );
+
+ pDev->SetMapMode( aOldMap ); //! noetig ???
+
+ if ( bPaint && bChanged )
+ rDocShell.PostPaint( 0, nStartRow, nTab, MAXCOL, MAXROW, nTab,
+ PAINT_GRID | PAINT_LEFT );
+
+ return bChanged;
+}
+
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::DetectiveAddPred(const ScAddress& rPos)
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ rDocShell.MakeDrawLayer();
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ USHORT nCol = rPos.Col();
+ USHORT nRow = rPos.Row();
+ USHORT nTab = rPos.Tab();
+
+ pModel->BeginCalcUndo();
+ BOOL bDone = ScDetectiveFunc( pDoc,nTab ).ShowPred( nCol, nRow );
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (bDone)
+ {
+ ScDetOpData aOperation( ScAddress(nCol,nRow,nTab), SCDETOP_ADDPRED );
+ pDoc->AddDetectiveOperation( aOperation );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDetective( &rDocShell, pUndo, &aOperation ) );
+ aModificator.SetDocumentModified();
+ SFX_BINDINGS().Invalidate( SID_DETECTIVE_REFRESH );
+ }
+ else
+ delete pUndo;
+
+ return bDone;
+}
+
+BOOL ScDocFunc::DetectiveDelPred(const ScAddress& rPos)
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ if (!pModel)
+ return FALSE;
+
+ ScDocShellModificator aModificator( rDocShell );
+
+ USHORT nCol = rPos.Col();
+ USHORT nRow = rPos.Row();
+ USHORT nTab = rPos.Tab();
+
+ pModel->BeginCalcUndo();
+ BOOL bDone = ScDetectiveFunc( pDoc,nTab ).DeletePred( nCol, nRow );
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (bDone)
+ {
+ ScDetOpData aOperation( ScAddress(nCol,nRow,nTab), SCDETOP_DELPRED );
+ pDoc->AddDetectiveOperation( aOperation );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDetective( &rDocShell, pUndo, &aOperation ) );
+ aModificator.SetDocumentModified();
+ SFX_BINDINGS().Invalidate( SID_DETECTIVE_REFRESH );
+ }
+ else
+ delete pUndo;
+
+ return bDone;
+}
+
+BOOL ScDocFunc::DetectiveAddSucc(const ScAddress& rPos)
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ rDocShell.MakeDrawLayer();
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ USHORT nCol = rPos.Col();
+ USHORT nRow = rPos.Row();
+ USHORT nTab = rPos.Tab();
+
+ pModel->BeginCalcUndo();
+ BOOL bDone = ScDetectiveFunc( pDoc,nTab ).ShowSucc( nCol, nRow );
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (bDone)
+ {
+ ScDetOpData aOperation( ScAddress(nCol,nRow,nTab), SCDETOP_ADDSUCC );
+ pDoc->AddDetectiveOperation( aOperation );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDetective( &rDocShell, pUndo, &aOperation ) );
+ aModificator.SetDocumentModified();
+ SFX_BINDINGS().Invalidate( SID_DETECTIVE_REFRESH );
+ }
+ else
+ delete pUndo;
+
+ return bDone;
+}
+
+BOOL ScDocFunc::DetectiveDelSucc(const ScAddress& rPos)
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ if (!pModel)
+ return FALSE;
+
+ ScDocShellModificator aModificator( rDocShell );
+
+ USHORT nCol = rPos.Col();
+ USHORT nRow = rPos.Row();
+ USHORT nTab = rPos.Tab();
+
+ pModel->BeginCalcUndo();
+ BOOL bDone = ScDetectiveFunc( pDoc,nTab ).DeleteSucc( nCol, nRow );
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (bDone)
+ {
+ ScDetOpData aOperation( ScAddress(nCol,nRow,nTab), SCDETOP_DELSUCC );
+ pDoc->AddDetectiveOperation( aOperation );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDetective( &rDocShell, pUndo, &aOperation ) );
+ aModificator.SetDocumentModified();
+ SFX_BINDINGS().Invalidate( SID_DETECTIVE_REFRESH );
+ }
+ else
+ delete pUndo;
+
+ return bDone;
+}
+
+BOOL ScDocFunc::DetectiveAddError(const ScAddress& rPos)
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ rDocShell.MakeDrawLayer();
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ USHORT nCol = rPos.Col();
+ USHORT nRow = rPos.Row();
+ USHORT nTab = rPos.Tab();
+
+ pModel->BeginCalcUndo();
+ BOOL bDone = ScDetectiveFunc( pDoc,nTab ).ShowError( nCol, nRow );
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (bDone)
+ {
+ ScDetOpData aOperation( ScAddress(nCol,nRow,nTab), SCDETOP_ADDERROR );
+ pDoc->AddDetectiveOperation( aOperation );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDetective( &rDocShell, pUndo, &aOperation ) );
+ aModificator.SetDocumentModified();
+ SFX_BINDINGS().Invalidate( SID_DETECTIVE_REFRESH );
+ }
+ else
+ delete pUndo;
+
+ return bDone;
+}
+
+BOOL ScDocFunc::DetectiveMarkInvalid(USHORT nTab)
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ rDocShell.MakeDrawLayer();
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+
+ Window* pWaitWin = rDocShell.GetDialogParent();
+ if (pWaitWin)
+ pWaitWin->EnterWait();
+ pModel->BeginCalcUndo();
+ BOOL bOverflow;
+ BOOL bDone = ScDetectiveFunc( pDoc,nTab ).MarkInvalid( bOverflow );
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (pWaitWin)
+ pWaitWin->LeaveWait();
+ if (bDone)
+ {
+ if (pUndo)
+ {
+ pUndo->SetComment( ScGlobal::GetRscString( STR_UNDO_DETINVALID ) );
+ rDocShell.GetUndoManager()->AddUndoAction( pUndo );
+ }
+ aModificator.SetDocumentModified();
+ if ( bOverflow )
+ {
+ InfoBox( NULL,
+ ScGlobal::GetRscString( STR_DETINVALID_OVERFLOW ) ).Execute();
+ }
+ }
+ else
+ delete pUndo;
+
+ return bDone;
+}
+
+BOOL ScDocFunc::DetectiveDelAll(USHORT nTab)
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ if (!pModel)
+ return FALSE;
+
+ ScDocShellModificator aModificator( rDocShell );
+
+ pModel->BeginCalcUndo();
+ BOOL bDone = ScDetectiveFunc( pDoc,nTab ).DeleteAll( SC_DET_DETECTIVE );
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (bDone)
+ {
+ ScDetOpList* pOldList = pDoc->GetDetOpList();
+ ScDetOpList* pUndoList = pOldList ? new ScDetOpList(*pOldList) : NULL;
+
+ pDoc->ClearDetectiveOperations();
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDetective( &rDocShell, pUndo, NULL, pUndoList ) );
+ aModificator.SetDocumentModified();
+ SFX_BINDINGS().Invalidate( SID_DETECTIVE_REFRESH );
+ }
+ else
+ delete pUndo;
+
+ return bDone;
+}
+
+BOOL ScDocFunc::DetectiveRefresh( BOOL bAutomatic )
+{
+ BOOL bDone = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScDetOpList* pList = pDoc->GetDetOpList();
+ if ( pList && pList->Count() )
+ {
+ rDocShell.MakeDrawLayer();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ pModel->BeginCalcUndo();
+
+ // Loeschen auf allen Tabellen
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ ScDetectiveFunc( pDoc,nTab ).DeleteAll( SC_DET_DETECTIVE );
+
+ // Wiederholen
+
+ USHORT nCount = pList->Count();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScDetOpData* pData = (*pList)[i];
+ if (pData)
+ {
+ ScAddress aPos = pData->GetPos();
+ ScDetectiveFunc aFunc( pDoc, aPos.Tab() );
+ USHORT nCol = aPos.Col();
+ USHORT nRow = aPos.Row();
+ switch (pData->GetOperation())
+ {
+ case SCDETOP_ADDSUCC:
+ aFunc.ShowSucc( nCol, nRow );
+ break;
+ case SCDETOP_DELSUCC:
+ aFunc.DeleteSucc( nCol, nRow );
+ break;
+ case SCDETOP_ADDPRED:
+ aFunc.ShowPred( nCol, nRow );
+ break;
+ case SCDETOP_DELPRED:
+ aFunc.DeletePred( nCol, nRow );
+ break;
+ case SCDETOP_ADDERROR:
+ aFunc.ShowError( nCol, nRow );
+ break;
+ default:
+ DBG_ERROR("falsche Op bei DetectiveRefresh");
+ }
+ }
+ }
+
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (pUndo)
+ {
+ pUndo->SetComment( ScGlobal::GetRscString( STR_UNDO_DETREFRESH ) );
+ // wenn automatisch, an letzte Aktion anhaengen
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDraw( pUndo, &rDocShell ),
+ bAutomatic );
+ }
+ rDocShell.SetDrawModified();
+ bDone = TRUE;
+ }
+ return bDone;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::DeleteContents( const ScMarkData& rMark, USHORT nFlags,
+ BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ if ( !rMark.IsMarked() && !rMark.IsMultiMarked() )
+ {
+ DBG_ERROR("ScDocFunc::DeleteContents ohne Markierung");
+ return FALSE;
+ }
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if (!pDoc->IsSelectionEditable(rMark))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ ScRange aMarkRange;
+ BOOL bSimple = FALSE;
+
+ ScMarkData aMultiMark = rMark;
+ aMultiMark.SetMarking(FALSE); // fuer MarkToMulti
+
+ ScDocument* pUndoDoc = NULL;
+ BOOL bMulti = !bSimple && aMultiMark.IsMultiMarked();
+ if (!bSimple)
+ {
+ aMultiMark.MarkToMulti();
+ aMultiMark.GetMultiMarkArea( aMarkRange );
+ }
+ ScRange aExtendedRange(aMarkRange);
+ if (!bSimple)
+ {
+ if ( pDoc->ExtendMerge( aExtendedRange, TRUE ) )
+ bMulti = FALSE;
+ }
+
+ // keine Objekte auf geschuetzten Tabellen
+ BOOL bObjects = FALSE;
+ if ( nFlags & IDF_OBJECTS )
+ {
+ bObjects = TRUE;
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if (aMultiMark.GetTableSelect(nTab) && pDoc->IsTabProtected(nTab))
+ bObjects = FALSE;
+ }
+
+ USHORT nExtFlags = 0; // Linien interessieren nur, wenn Attribute
+ if ( nFlags & IDF_ATTRIB ) // geloescht werden
+ if (pDoc->HasAttrib( aMarkRange, HASATTR_PAINTEXT ))
+ nExtFlags |= SC_PF_LINES;
+
+ // Reihenfolge:
+ // 1) BeginDrawUndo
+ // 2) Objekte loeschen (DrawUndo wird gefuellt)
+ // 3) Inhalte fuer Undo kopieren und Undo-Aktion anlegen
+ // 4) Inhalte loeschen
+
+ if (bObjects)
+ {
+ if (bRecord)
+ pDoc->BeginDrawUndo();
+
+ if (bMulti)
+ pDoc->DeleteObjectsInSelection( aMultiMark );
+ else
+ pDoc->DeleteObjectsInArea( aMarkRange.aStart.Col(), aMarkRange.aStart.Row(),
+ aMarkRange.aEnd.Col(), aMarkRange.aEnd.Row(),
+ aMultiMark );
+ }
+
+ if ( bRecord )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, aMarkRange.aStart.Tab(), aMarkRange.aEnd.Tab() );
+
+ // bei "Format/Standard" alle Attribute kopieren, weil CopyToDocument
+ // nur mit IDF_HARDATTR zu langsam ist:
+ USHORT nUndoDocFlags = nFlags;
+ if (nFlags & IDF_ATTRIB)
+ nUndoDocFlags |= IDF_ATTRIB;
+ if (nFlags & IDF_EDITATTR) // Edit-Engine-Attribute
+ nUndoDocFlags |= IDF_STRING; // -> Zellen werden geaendert
+ if (nFlags & IDF_NOTE)
+ nUndoDocFlags |= IDF_CONTENTS; // #68795# copy all cells with their notes
+ pDoc->CopyToDocument( aExtendedRange, nUndoDocFlags, bMulti, pUndoDoc, &aMultiMark );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDeleteContents( &rDocShell, aMultiMark, aExtendedRange,
+ pUndoDoc, bMulti, nFlags, bObjects ) );
+ }
+
+//! HideAllCursors(); // falls Zusammenfassung aufgehoben wird
+ if (bSimple)
+ pDoc->DeleteArea( aMarkRange.aStart.Col(), aMarkRange.aStart.Row(),
+ aMarkRange.aEnd.Col(), aMarkRange.aEnd.Row(),
+ aMultiMark, nFlags );
+ else
+ {
+ pDoc->DeleteSelection( nFlags, aMultiMark );
+ aMultiMark.MarkToSimple();
+ }
+
+ if (!AdjustRowHeight( aExtendedRange ))
+ rDocShell.PostPaint( aExtendedRange, PAINT_GRID, nExtFlags );
+ else if (nExtFlags & SC_PF_LINES)
+ lcl_PaintAbove( rDocShell, aExtendedRange ); // fuer Linien ueber dem Bereich
+
+// rDocShell.UpdateOle(GetViewData()); //! an der View?
+ aModificator.SetDocumentModified();
+//! CellContentChanged();
+//! ShowAllCursors();
+
+#if 0
+ //! muss an der View bleiben !!!!
+ if ( nFlags & IDF_ATTRIB )
+ {
+ if ( nFlags & IDF_CONTENTS )
+ ForgetFormatArea();
+ else
+ StartFormatArea(); // Attribute loeschen ist auch Attributierung
+ }
+#endif
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::SetNormalString( const ScAddress& rPos, const String& rText, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if (!pDoc->IsBlockEditable( rPos.Tab(), rPos.Col(),rPos.Row(), rPos.Col(),rPos.Row() ))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ USHORT* pTabs = new USHORT[1];
+ pTabs[0] = rPos.Tab();
+ ScBaseCell** ppOldCells = new ScBaseCell*[1];
+ ScBaseCell* pDocCell = pDoc->GetCell( rPos );
+ BOOL bEditDeleted = (pDocCell && pDocCell->GetCellType() == CELLTYPE_EDIT);
+ ppOldCells[0] = pDocCell ? pDocCell->Clone(pDoc) : NULL;
+
+ BOOL* pHasFormat = new BOOL[1];
+ ULONG* pOldFormats = new ULONG[1];
+ const SfxPoolItem* pItem;
+ const ScPatternAttr* pPattern = pDoc->GetPattern( rPos.Col(),rPos.Row(),rPos.Tab() );
+ if ( SFX_ITEM_SET == pPattern->GetItemSet().GetItemState(
+ ATTR_VALUE_FORMAT,FALSE,&pItem) )
+ {
+ pHasFormat[0] = TRUE;
+ pOldFormats[0] = ((const SfxUInt32Item*)pItem)->GetValue();
+ }
+ else
+ pHasFormat[0] = FALSE;
+
+ pDoc->SetString( rPos.Col(), rPos.Row(), rPos.Tab(), rText );
+
+ // wegen ChangeTracking darf UndoAction erst nach SetString angelegt werden
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoEnterData( &rDocShell, rPos.Col(),rPos.Row(),rPos.Tab(), 1,pTabs,
+ ppOldCells, pHasFormat, pOldFormats, rText, NULL ) );
+
+ if ( bEditDeleted || pDoc->HasAttrib( ScRange(rPos), HASATTR_NEEDHEIGHT ) )
+ AdjustRowHeight( ScRange(rPos) );
+
+ rDocShell.PostPaintCell( rPos.Col(), rPos.Row(), rPos.Tab() );
+ aModificator.SetDocumentModified();
+
+ return TRUE;
+}
+
+BOOL ScDocFunc::PutCell( const ScAddress& rPos, ScBaseCell* pNewCell, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if (!pDoc->IsBlockEditable( rPos.Tab(), rPos.Col(),rPos.Row(), rPos.Col(),rPos.Row() ))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ pNewCell->Delete();
+ return FALSE;
+ }
+
+ BOOL bEditCell = ( pNewCell->GetCellType() == CELLTYPE_EDIT );
+ ScBaseCell* pDocCell = pDoc->GetCell( rPos );
+ BOOL bEditDeleted = (pDocCell && pDocCell->GetCellType() == CELLTYPE_EDIT);
+ BOOL bHeight = ( bEditDeleted || bEditCell ||
+ pDoc->HasAttrib( ScRange(rPos), HASATTR_NEEDHEIGHT ) );
+ ScBaseCell* pUndoCell = pDocCell ? pDocCell->Clone(pDoc) : NULL;
+ ScBaseCell* pRedoCell = pNewCell ? pNewCell->Clone(pDoc) : NULL;
+
+ pDoc->PutCell( rPos, pNewCell );
+
+ // wegen ChangeTracking darf UndoAction erst nach PutCell angelegt werden
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoPutCell( &rDocShell, rPos, pUndoCell, pRedoCell, bHeight ) );
+
+ if (bHeight)
+ AdjustRowHeight( ScRange(rPos) );
+
+ rDocShell.PostPaintCell( rPos.Col(), rPos.Row(), rPos.Tab() );
+ aModificator.SetDocumentModified();
+
+ return TRUE;
+}
+
+BOOL ScDocFunc::PutData( const ScAddress& rPos, EditEngine& rEngine, BOOL bInterpret, BOOL bApi )
+{
+ // PutData ruft PutCell oder SetNormalString
+
+ // harte Ausrichtungs-Attribute aus der EditEngine loeschen
+ USHORT nCount = rEngine.GetParagraphCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ const SfxItemSet& rOld = rEngine.GetParaAttribs( i );
+ if ( rOld.GetItemState( EE_PARA_JUST ) == SFX_ITEM_SET )
+ {
+ SfxItemSet aNew( rOld );
+ aNew.ClearItem( EE_PARA_JUST );
+ rEngine.SetParaAttribs( i, aNew );
+ }
+ }
+
+ BOOL bRet = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScEditAttrTester aTester( &rEngine );
+ BOOL bEditCell = aTester.NeedsObject();
+ if ( bEditCell )
+ {
+ EditTextObject* pData = rEngine.CreateTextObject();
+ bRet = PutCell( rPos,
+ new ScEditCell( pData, pDoc, rEngine.GetEditTextObjectPool() ),
+ bApi );
+ delete pData;
+ }
+ else
+ {
+ String aText = rEngine.GetText();
+ if (bInterpret)
+ bRet = SetNormalString( rPos, aText, bApi );
+ else
+ bRet = PutCell( rPos, new ScStringCell( aText ), bApi );
+ }
+
+ if ( bRet && aTester.NeedsCellAttr() )
+ {
+ const SfxItemSet& rEditAttr = aTester.GetAttribs();
+ ScPatternAttr aPattern( pDoc->GetPool() );
+ aPattern.GetFromEditItemSet( &rEditAttr );
+ aPattern.DeleteUnchanged( pDoc->GetPattern( rPos.Col(), rPos.Row(), rPos.Tab() ) );
+ if ( aPattern.GetItemSet().Count() > 0 )
+ {
+ ScMarkData aMark;
+ aMark.SelectTable( rPos.Tab(), TRUE );
+ aMark.SetMarkArea( ScRange( rPos ) );
+ ApplyAttributes( aMark, aPattern, TRUE, bApi );
+ }
+ }
+
+ return bRet;
+}
+
+
+ScTokenArray* lcl_ScDocFunc_CreateTokenArrayXML( const String& rText )
+{
+ ScTokenArray* pCode = new ScTokenArray;
+ xub_StrLen nPos = 0;
+ while ( nPos < rText.Len() )
+ {
+ xub_StrLen nChars = Min( rText.Len() - nPos, MAXSTRLEN-1 );
+ String aTmpStr( rText.Copy( nPos, nChars ) );
+ pCode->AddString( aTmpStr.GetBuffer() );
+ nPos += nChars;
+ }
+ return pCode;
+}
+
+
+BOOL ScDocFunc::SetCellText( const ScAddress& rPos, const String& rText,
+ BOOL bInterpret, BOOL bEnglish, BOOL bApi )
+{
+ // SetCellText ruft PutCell oder SetNormalString
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScBaseCell* pNewCell = NULL;
+ if ( bInterpret )
+ {
+ if ( bEnglish )
+ {
+ if ( rText.Len() > 1 && rText.GetChar(0) == '=' )
+ {
+ ScTokenArray* pCode;
+ if ( pDoc->IsImportingXML() )
+ { // temporary formula string as string tokens
+ pCode = lcl_ScDocFunc_CreateTokenArrayXML( rText );
+ }
+ else
+ {
+ ScCompiler aComp( pDoc, rPos );
+ aComp.SetCompileEnglish( TRUE );
+ pCode = aComp.CompileString( rText );
+ }
+ pNewCell = new ScFormulaCell( pDoc, rPos, pCode, 0 );
+ delete pCode; // Zell-ctor hat das TokenArray kopiert
+ }
+ else // (nur) auf englisches Zahlformat testen
+ {
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ ULONG nEnglish = pFormatter->GetStandardIndex(LANGUAGE_ENGLISH_US);
+ double fVal;
+ if ( pFormatter->IsNumberFormat( rText, nEnglish, fVal ) )
+ pNewCell = new ScValueCell( fVal );
+ else
+ pNewCell = ScBaseCell::CreateTextCell( rText, pDoc );
+
+ // das (englische) Zahlformat wird nicht gesetzt
+ //! passendes lokales Format suchen und setzen???
+ }
+ }
+ // sonst Null behalten -> SetString mit lokalen Formeln/Zahlformat
+ }
+ else if ( rText.Len() )
+ pNewCell = ScBaseCell::CreateTextCell( rText, pDoc ); // immer Text
+
+ if (pNewCell)
+ return PutCell( rPos, pNewCell, bApi );
+ else
+ return SetNormalString( rPos, rText, bApi );
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::SetNoteText( const ScAddress& rPos, const String& rText, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if (!pDoc->IsBlockEditable( rPos.Tab(), rPos.Col(),rPos.Row(), rPos.Col(),rPos.Row() ))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ String aNewText = rText;
+ aNewText.ConvertLineEnd(); //! ist das noetig ???
+
+ ScPostIt aNote;
+ pDoc->GetNote( rPos.Col(), rPos.Row(), rPos.Tab(), aNote );
+ aNote.AutoSetText( aNewText ); // setzt auch Author und Date
+ pDoc->SetNote( rPos.Col(), rPos.Row(), rPos.Tab(), aNote );
+
+ if ( aNote.IsShown() )
+ {
+ // Zeichenobjekt updaten
+ //! bei gelocktem Paint auch erst spaeter !!!
+
+ ScDetectiveFunc aDetFunc( pDoc, rPos.Tab() );
+ aDetFunc.HideComment( rPos.Col(), rPos.Row() );
+ aDetFunc.ShowComment( rPos.Col(), rPos.Row(), FALSE ); // FALSE: nur wenn gefunden
+ }
+
+ //! Undo !!!
+
+ rDocShell.PostPaintCell( rPos.Col(), rPos.Row(), rPos.Tab() );
+ aModificator.SetDocumentModified();
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::ApplyAttributes( const ScMarkData& rMark, const ScPatternAttr& rPattern,
+ BOOL bRecord, BOOL bApi )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if ( bRecord && pDoc->IsImportingXML() )
+ bRecord = FALSE;
+
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ if ( !pDoc->IsSelectionEditable( rMark, &bOnlyNotBecauseOfMatrix )
+ && !bOnlyNotBecauseOfMatrix )
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ ScDocShellModificator aModificator( rDocShell );
+
+ //! Umrandung
+
+ ScRange aMultiRange;
+ BOOL bMulti = rMark.IsMultiMarked();
+ if ( bMulti )
+ rMark.GetMultiMarkArea( aMultiRange );
+ else
+ rMark.GetMarkArea( aMultiRange );
+
+ if ( bRecord )
+ {
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, aMultiRange.aStart.Tab(), aMultiRange.aEnd.Tab() );
+ pDoc->CopyToDocument( aMultiRange, IDF_ATTRIB, bMulti, pUndoDoc, &rMark );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoSelectionAttr(
+ &rDocShell, rMark,
+ aMultiRange.aStart.Col(), aMultiRange.aStart.Row(), aMultiRange.aStart.Tab(),
+ aMultiRange.aEnd.Col(), aMultiRange.aEnd.Row(), aMultiRange.aEnd.Tab(),
+ pUndoDoc, bMulti, &rPattern ) );
+ }
+
+ BOOL bPaintExt = pDoc->HasAttrib( aMultiRange, HASATTR_PAINTEXT );
+ pDoc->ApplySelectionPattern( rPattern, rMark );
+
+ if (!bPaintExt)
+ bPaintExt = pDoc->HasAttrib( aMultiRange, HASATTR_PAINTEXT );
+ USHORT nExtFlags = bPaintExt ? SC_PF_LINES : 0;
+ if (!AdjustRowHeight( aMultiRange ))
+ rDocShell.PostPaint( aMultiRange, PAINT_GRID, nExtFlags );
+ else if (nExtFlags & SC_PF_LINES)
+ lcl_PaintAbove( rDocShell, aMultiRange ); // fuer Linien ueber dem Bereich
+
+ aModificator.SetDocumentModified();
+
+ return TRUE;
+}
+
+
+BOOL ScDocFunc::ApplyStyle( const ScMarkData& rMark, const String& rStyleName,
+ BOOL bRecord, BOOL bApi )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if ( bRecord && pDoc->IsImportingXML() )
+ bRecord = FALSE;
+
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ if ( !pDoc->IsSelectionEditable( rMark, &bOnlyNotBecauseOfMatrix )
+ && !bOnlyNotBecauseOfMatrix )
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ ScStyleSheet* pStyleSheet = (ScStyleSheet*) pDoc->GetStyleSheetPool()->Find(
+ rStyleName, SFX_STYLE_FAMILY_PARA );
+ if (!pStyleSheet)
+ return FALSE;
+
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScRange aMultiRange;
+ BOOL bMulti = rMark.IsMultiMarked();
+ if ( bMulti )
+ rMark.GetMultiMarkArea( aMultiRange );
+ else
+ rMark.GetMarkArea( aMultiRange );
+
+ if ( bRecord )
+ {
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ USHORT nStartTab = aMultiRange.aStart.Tab();
+ USHORT nTabCount = pDoc->GetTableCount();
+ pUndoDoc->InitUndo( pDoc, nStartTab, nStartTab );
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nStartTab && rMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i );
+
+ ScRange aCopyRange = aMultiRange;
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+ pDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, bMulti, pUndoDoc, &rMark );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoSelectionStyle(
+ &rDocShell, rMark, aMultiRange, rStyleName, pUndoDoc ) );
+
+ }
+
+// BOOL bPaintExt = pDoc->HasAttrib( aMultiRange, HASATTR_PAINTEXT );
+// pDoc->ApplySelectionPattern( rPattern, rMark );
+
+ pDoc->ApplySelectionStyle( (ScStyleSheet&)*pStyleSheet, rMark );
+
+// if (!bPaintExt)
+// bPaintExt = pDoc->HasAttrib( aMultiRange, HASATTR_PAINTEXT );
+// USHORT nExtFlags = bPaintExt ? SC_PF_LINES : 0;
+ USHORT nExtFlags = 0;
+ if (!AdjustRowHeight( aMultiRange ))
+ rDocShell.PostPaint( aMultiRange, PAINT_GRID, nExtFlags );
+ else if (nExtFlags & SC_PF_LINES)
+ lcl_PaintAbove( rDocShell, aMultiRange ); // fuer Linien ueber dem Bereich
+
+ aModificator.SetDocumentModified();
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::InsertCells( const ScRange& rRange, InsCellCmd eCmd,
+ BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nStartTab = rRange.aStart.Tab();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nEndTab = rRange.aEnd.Tab();
+
+ if ( nStartRow > MAXROW || nEndRow > MAXROW )
+ {
+ DBG_ERROR("invalid row in InsertCells");
+ return FALSE;
+ }
+
+ USHORT nTab = nStartTab;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nPaintStartX = nStartCol;
+ USHORT nPaintStartY = nStartRow;
+ USHORT nPaintEndX = nEndCol;
+ USHORT nPaintEndY = nEndRow;
+ USHORT nPaintFlags = PAINT_GRID;
+ BOOL bSuccess;
+
+ // zugehoerige Szenarien auch anpassen
+ if ( !pDoc->IsScenario(nEndTab) )
+ while ( nEndTab+1 < nTabCount && pDoc->IsScenario(nEndTab+1) )
+ ++nEndTab;
+
+ // Test zusammengefasste
+
+ USHORT nMergeTestStartX = nStartCol;
+ USHORT nMergeTestStartY = nStartRow;
+ USHORT nMergeTestEndX = nEndCol;
+ USHORT nMergeTestEndY = nEndRow;
+
+ if (eCmd==INS_INSROWS)
+ {
+ nMergeTestStartX = 0;
+ nMergeTestEndX = MAXCOL;
+ }
+ if (eCmd==INS_INSCOLS)
+ {
+ nMergeTestStartY = 0;
+ nMergeTestEndY = MAXROW;
+ }
+ if (eCmd==INS_CELLSDOWN)
+ nMergeTestEndY = MAXROW;
+ if (eCmd==INS_CELLSRIGHT)
+ nMergeTestEndX = MAXCOL;
+
+ BOOL bCanDo = TRUE;
+ BOOL bNeedRefresh = FALSE;
+
+ USHORT nEditTestEndX = (eCmd==INS_INSCOLS) ? MAXCOL : nMergeTestEndX;
+ USHORT nEditTestEndY = (eCmd==INS_INSROWS) ? MAXROW : nMergeTestEndY;
+ if (!pDoc->IsBlockEditable( nTab, nMergeTestStartX,nMergeTestStartY,
+ nEditTestEndX,nEditTestEndY ))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ if (pDoc->HasAttrib( nMergeTestStartX,nMergeTestStartY,nTab,
+ nMergeTestEndX,nMergeTestEndY,nTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ))
+ {
+ if (eCmd==INS_CELLSRIGHT)
+ bNeedRefresh = TRUE;
+
+ USHORT nMergeStartX = nMergeTestStartX;
+ USHORT nMergeStartY = nMergeTestStartY;
+ USHORT nMergeEndX = nMergeTestEndX;
+ USHORT nMergeEndY = nMergeTestEndY;
+
+ pDoc->ExtendMerge( nMergeStartX, nMergeStartY, nMergeEndX, nMergeEndY, nTab );
+ pDoc->ExtendOverlapped( nMergeStartX, nMergeStartY, nMergeEndX, nMergeEndY, nTab );
+ if ( nMergeStartX != nMergeTestStartX || nMergeStartY != nMergeTestStartY ||
+ nMergeEndX != nMergeTestEndX || nMergeEndY != nMergeTestEndY )
+ bCanDo = FALSE;
+
+ //! ? nur Start testen ?
+
+ if (!bCanDo)
+ if ( eCmd==INS_INSCOLS || eCmd==INS_INSROWS )
+ if ( nMergeStartX == nMergeTestStartX && nMergeStartY == nMergeTestStartY )
+ {
+ bCanDo = TRUE;
+// bNeedRefresh = TRUE;
+ }
+ }
+
+ if (!bCanDo)
+ {
+ //! auf Verschieben (Drag&Drop) zurueckfuehren !!!
+ // "Kann nicht in zusammengefasste Bereiche einfuegen"
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_MSSG_INSERTCELLS_0);
+ return FALSE;
+ }
+
+ //
+ // ausfuehren
+ //
+
+ WaitObject aWait( rDocShell.GetDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference
+
+ ScDocument* pRefUndoDoc = NULL;
+ ScRefUndoData* pUndoData = NULL;
+ if ( bRecord )
+ {
+ pRefUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRefUndoDoc->InitUndo( pDoc, 0, nTabCount-1, FALSE, FALSE );
+
+ // alle Formeln wegen Referenzen
+ //! stattdessen bei InsertRow uebergeben
+ pDoc->CopyToDocument( 0,0,0, MAXCOL,MAXROW,MAXTAB, IDF_FORMULA,FALSE,pRefUndoDoc );
+
+ pUndoData = new ScRefUndoData( pDoc );
+
+ pDoc->BeginDrawUndo();
+ }
+
+ switch (eCmd)
+ {
+ case INS_CELLSDOWN:
+ bSuccess = pDoc->InsertRow( nStartCol,nStartTab, nEndCol,nEndTab,
+ nStartRow, nEndRow-nStartRow+1 );
+ nPaintEndY = MAXROW;
+ break;
+ case INS_INSROWS:
+ bSuccess = pDoc->InsertRow( 0,nStartTab, MAXCOL,nEndTab,
+ nStartRow, nEndRow-nStartRow+1 );
+ nPaintStartX = 0;
+ nPaintEndX = MAXCOL;
+ nPaintEndY = MAXROW;
+ nPaintFlags |= PAINT_LEFT;
+ break;
+ case INS_CELLSRIGHT:
+ bSuccess = pDoc->InsertCol( nStartRow,nStartTab, nEndRow,nEndTab,
+ nStartCol, nEndCol-nStartCol+1 );
+ nPaintEndX = MAXCOL;
+ break;
+ case INS_INSCOLS:
+ bSuccess = pDoc->InsertCol( 0,nStartTab, MAXROW,nEndTab,
+ nStartCol, nEndCol-nStartCol+1 );
+ nPaintStartY = 0;
+ nPaintEndY = MAXROW;
+ nPaintEndX = MAXCOL;
+ nPaintFlags |= PAINT_TOP;
+ break;
+ default:
+ DBG_ERROR("Falscher Code beim Einfuegen");
+ bSuccess = FALSE;
+ break;
+ }
+
+ if ( bSuccess )
+ {
+ if ( bRecord )
+ {
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoInsertCells( &rDocShell, ScRange(
+ nStartCol,nStartRow,nStartTab,
+ nEndCol,nEndRow,nEndTab ),
+ eCmd, pRefUndoDoc, pUndoData ) );
+ }
+
+ if (bNeedRefresh)
+ pDoc->ExtendMerge( nMergeTestStartX,nMergeTestStartY,
+ nMergeTestEndX,nMergeTestEndY, nTab, TRUE );
+ else
+ pDoc->RefreshAutoFilter( nMergeTestStartX,nMergeTestStartY,
+ nMergeTestEndX,nMergeTestEndY, nTab);
+
+ if ( eCmd == INS_INSROWS || eCmd == INS_INSCOLS )
+ pDoc->UpdatePageBreaks( nTab );
+
+ USHORT nExtFlags = 0;
+ if (pDoc->HasAttrib( nPaintStartX,nPaintStartY,nTab,
+ nPaintEndX,nPaintEndY,nTab, HASATTR_PAINTEXT ))
+ nExtFlags |= SC_PF_LINES;
+
+ // ganze Zeilen einfuegen: nur neue Zeilen anpassen
+ BOOL bAdjusted = ( eCmd == INS_INSROWS ) ?
+ AdjustRowHeight(ScRange(0,nStartRow,nStartTab, MAXCOL,nEndRow,nEndTab)) :
+ AdjustRowHeight(ScRange(0,nPaintStartY,nStartTab, MAXCOL,nPaintEndY,nEndTab));
+ if (bAdjusted)
+ {
+ // paint only what is not done by AdjustRowHeight
+ if (nPaintFlags & PAINT_TOP)
+ rDocShell.PostPaint( nPaintStartX, nPaintStartY, nStartTab,
+ nPaintEndX, nPaintEndY, nEndTab, PAINT_TOP );
+ }
+ else
+ rDocShell.PostPaint( nPaintStartX, nPaintStartY, nStartTab,
+ nPaintEndX, nPaintEndY, nEndTab,
+ nPaintFlags, nExtFlags);
+ aModificator.SetDocumentModified();
+
+//! pDocSh->UpdateOle(GetViewData()); // muss an der View bleiben
+//! CellContentChanged(); // muss an der View bleiben
+ }
+ else
+ {
+ delete pRefUndoDoc;
+ delete pUndoData;
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_INSERT_FULL); // Spalte/Zeile voll
+ }
+ return bSuccess;
+}
+
+BOOL ScDocFunc::DeleteCells( const ScRange& rRange, DelCellCmd eCmd, BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nStartTab = rRange.aStart.Tab();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nEndTab = rRange.aEnd.Tab();
+
+ if ( nStartRow > MAXROW || nEndRow > MAXROW )
+ {
+ DBG_ERROR("invalid row in DeleteCells");
+ return FALSE;
+ }
+
+ USHORT nTab = nStartTab;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nPaintStartX = nStartCol;
+ USHORT nPaintStartY = nStartRow;
+ USHORT nPaintEndX = nEndCol;
+ USHORT nPaintEndY = nEndRow;
+ USHORT nPaintFlags = PAINT_GRID;
+
+ // zugehoerige Szenarien auch anpassen
+ if ( !pDoc->IsScenario(nEndTab) )
+ while ( nEndTab+1 < nTabCount && pDoc->IsScenario(nEndTab+1) )
+ ++nEndTab;
+
+ USHORT nUndoStartX = nStartCol;
+ USHORT nUndoStartY = nStartRow;
+ USHORT nUndoEndX = nEndCol;
+ USHORT nUndoEndY = nEndRow;
+
+ if (eCmd==DEL_DELROWS)
+ {
+ nUndoStartX = 0;
+ nUndoEndX = MAXCOL;
+ }
+ if (eCmd==DEL_DELCOLS)
+ {
+ nUndoStartY = 0;
+ nUndoEndY = MAXROW;
+ }
+
+ USHORT nDelEndX = nUndoEndX;
+ if (eCmd==DEL_CELLSLEFT||eCmd==DEL_DELCOLS) nDelEndX = MAXCOL;
+ USHORT nDelEndY = nUndoEndY;
+ if (eCmd==DEL_CELLSUP||eCmd==DEL_DELROWS) nDelEndY = MAXROW;
+
+ // Test Zellschutz
+
+ USHORT nEditTestEndX = nUndoEndX;
+ if ( eCmd==DEL_DELCOLS || eCmd==DEL_CELLSLEFT ) nEditTestEndX = MAXCOL;
+ USHORT nEditTestEndY = nUndoEndX;
+ if ( eCmd==DEL_DELROWS || eCmd==DEL_CELLSUP ) nEditTestEndY = MAXROW;
+ if (!pDoc->IsBlockEditable( nTab, nUndoStartX,nUndoStartY,nEditTestEndX,nEditTestEndY ))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ // Test zusammengefasste
+
+ USHORT nMergeTestEndX = (eCmd==DEL_CELLSLEFT) ? MAXCOL : nUndoEndX;
+ USHORT nMergeTestEndY = (eCmd==DEL_CELLSUP) ? MAXROW : nUndoEndY;
+ BOOL bCanDo = TRUE;
+ BOOL bNeedRefresh = FALSE;
+
+ if (pDoc->HasAttrib( nUndoStartX,nUndoStartY,nTab, nMergeTestEndX,nMergeTestEndY,nTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ))
+ {
+ if (eCmd==DEL_CELLSLEFT)
+ bNeedRefresh = TRUE;
+
+ USHORT nMergeStartX = nUndoStartX;
+ USHORT nMergeStartY = nUndoStartY;
+ USHORT nMergeEndX = nMergeTestEndX;
+ USHORT nMergeEndY = nMergeTestEndY;
+
+ pDoc->ExtendMerge( nMergeStartX, nMergeStartY, nMergeEndX, nMergeEndY, nTab );
+ pDoc->ExtendOverlapped( nMergeStartX, nMergeStartY, nMergeEndX, nMergeEndY, nTab );
+ if ( nMergeStartX != nUndoStartX || nMergeStartY != nUndoStartY ||
+ nMergeEndX != nMergeTestEndX || nMergeEndY != nMergeTestEndY )
+ bCanDo = FALSE;
+
+ // ganze Zeilen/Spalten: Testen, ob Merge komplett geloescht werden kann
+
+ if (!bCanDo)
+ if ( eCmd==DEL_DELCOLS || eCmd==DEL_DELROWS )
+ if ( nMergeStartX == nUndoStartX && nMergeStartY == nUndoStartY )
+ {
+ bCanDo = TRUE;
+ bNeedRefresh = TRUE;
+ }
+ }
+
+ if (!bCanDo)
+ {
+ //! auf Verschieben (Drag&Drop) zurueckfuehren !!!
+ // "Kann nicht aus zusammengefassten Bereichen loeschen"
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_MSSG_DELETECELLS_0);
+ return FALSE;
+ }
+
+ //
+ // ausfuehren
+ //
+
+ WaitObject aWait( rDocShell.GetDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference
+
+ ScDocument* pUndoDoc = NULL;
+ ScDocument* pRefUndoDoc = NULL;
+ ScRefUndoData* pUndoData = NULL;
+ if ( bRecord )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nEndTab,
+ (eCmd==DEL_DELCOLS), (eCmd==DEL_DELROWS) );
+ pDoc->CopyToDocument( nUndoStartX, nUndoStartY, nStartTab, nDelEndX, nDelEndY, nEndTab,
+ IDF_ALL, FALSE, pUndoDoc );
+ pRefUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRefUndoDoc->InitUndo( pDoc, 0, nTabCount-1, FALSE, FALSE );
+
+ pUndoData = new ScRefUndoData( pDoc );
+
+ pDoc->BeginDrawUndo();
+ }
+
+ USHORT nExtFlags = 0;
+ if (pDoc->HasAttrib( nStartCol,nStartRow,nTab, nEndCol,nEndRow,nTab, HASATTR_PAINTEXT ))
+ nExtFlags |= SC_PF_LINES;
+
+ BOOL bUndoOutline = FALSE;
+ switch (eCmd)
+ {
+ case DEL_CELLSUP:
+ pDoc->DeleteRow( nStartCol, nStartTab, nEndCol, nEndTab,
+ nStartRow, nEndRow-nStartRow+1, pRefUndoDoc );
+ nPaintEndY = MAXROW;
+ break;
+ case DEL_DELROWS:
+ pDoc->DeleteRow( 0, nStartTab, MAXCOL, nEndTab,
+ nStartRow, nEndRow-nStartRow+1, pRefUndoDoc, &bUndoOutline );
+ nPaintStartX = 0;
+ nPaintEndX = MAXCOL;
+ nPaintEndY = MAXROW;
+ nPaintFlags |= PAINT_LEFT;
+ break;
+ case DEL_CELLSLEFT:
+ pDoc->DeleteCol( nStartRow, nStartTab, nEndRow, nEndTab,
+ nStartCol, nEndCol-nStartCol+1, pRefUndoDoc );
+ nPaintEndX = MAXCOL;
+ break;
+ case DEL_DELCOLS:
+ pDoc->DeleteCol( 0, nStartTab, MAXROW, nEndTab,
+ nStartCol, nEndCol-nStartCol+1, pRefUndoDoc, &bUndoOutline );
+ nPaintStartY = 0;
+ nPaintEndY = MAXROW;
+ nPaintEndX = MAXCOL;
+ nPaintFlags |= PAINT_TOP;
+ break;
+ default:
+ DBG_ERROR("Falscher Code beim Loeschen");
+ break;
+ }
+
+ //! Test, ob Outline in Groesse geaendert
+
+ if ( bRecord )
+ {
+ for (USHORT i=nStartTab; i<=nEndTab; i++)
+ pRefUndoDoc->DeleteAreaTab(nUndoStartX,nUndoStartY,nDelEndX,nDelEndY,i,
+ IDF_ALL);
+
+ // alle Tabellen anlegen, damit Formeln kopiert werden koennen:
+ pUndoDoc->AddUndoTab( 0, nTabCount-1, FALSE, FALSE );
+
+ // kopieren mit bColRowFlags=FALSE (#54194#)
+ pRefUndoDoc->CopyToDocument(0,0,0,MAXCOL,MAXROW,MAXTAB,IDF_FORMULA,FALSE,pUndoDoc,NULL,FALSE);
+ delete pRefUndoDoc;
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDeleteCells( &rDocShell, ScRange(
+ nStartCol,nStartRow,nStartTab,
+ nEndCol,nEndRow,nEndTab ),
+ eCmd, pUndoDoc, pUndoData ) );
+ }
+
+ if (bNeedRefresh)
+ {
+ if ( eCmd==DEL_DELCOLS || eCmd==DEL_DELROWS )
+ {
+ if (eCmd==DEL_DELCOLS) nMergeTestEndX = MAXCOL;
+ if (eCmd==DEL_DELROWS) nMergeTestEndY = MAXROW;
+ ScPatternAttr aPattern( pDoc->GetPool() );
+ aPattern.GetItemSet().Put( ScMergeFlagAttr() );
+
+ ScMarkData aMark; // nur fuer Tabellen
+ for (USHORT i=nStartTab; i<=nEndTab; i++)
+ aMark.SelectTable( i, TRUE );
+ pDoc->ApplyPatternArea( nUndoStartX, nUndoStartY, nMergeTestEndX, nMergeTestEndY,
+ aMark, aPattern );
+ }
+ pDoc->ExtendMerge( nUndoStartX, nUndoStartY, nMergeTestEndX, nMergeTestEndY, nTab, TRUE );
+ }
+
+ if ( eCmd == DEL_DELCOLS || eCmd == DEL_DELROWS )
+ pDoc->UpdatePageBreaks( nTab );
+
+ if (pDoc->HasAttrib( nPaintStartX,nPaintStartY,nTab,
+ nPaintEndX,nPaintEndY,nTab, HASATTR_PAINTEXT ))
+ nExtFlags |= SC_PF_LINES;
+
+ // ganze Zeilen loeschen: nichts anpassen
+ if ( eCmd == DEL_DELROWS ||
+ !AdjustRowHeight(ScRange(0,nPaintStartY,nStartTab, MAXCOL,nPaintEndY,nEndTab)) )
+ rDocShell.PostPaint( nPaintStartX, nPaintStartY, nStartTab,
+ nPaintEndX, nPaintEndY, nEndTab,
+ nPaintFlags, nExtFlags );
+ else
+ {
+ // paint only what is not done by AdjustRowHeight
+ if (nExtFlags & SC_PF_LINES)
+ lcl_PaintAbove( rDocShell, ScRange( nPaintStartX, nPaintStartY, nStartTab,
+ nPaintEndX, nPaintEndY, nEndTab) );
+ if (nPaintFlags & PAINT_TOP)
+ rDocShell.PostPaint( nPaintStartX, nPaintStartY, nStartTab,
+ nPaintEndX, nPaintEndY, nEndTab, PAINT_TOP );
+ }
+ aModificator.SetDocumentModified();
+
+//! pDocSh->UpdateOle(GetViewData()); // muss an der View bleiben
+//! CellContentChanged(); // muss an der View bleiben
+
+ return TRUE;
+}
+
+BOOL ScDocFunc::MoveBlock( const ScRange& rSource, const ScAddress& rDestPos,
+ BOOL bCut, BOOL bRecord, BOOL bPaint, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ USHORT nStartCol = rSource.aStart.Col();
+ USHORT nStartRow = rSource.aStart.Row();
+ USHORT nStartTab = rSource.aStart.Tab();
+ USHORT nEndCol = rSource.aEnd.Col();
+ USHORT nEndRow = rSource.aEnd.Row();
+ USHORT nEndTab = rSource.aEnd.Tab();
+ USHORT nDestCol = rDestPos.Col();
+ USHORT nDestRow = rDestPos.Row();
+ USHORT nDestTab = rDestPos.Tab();
+
+ if ( nStartRow > MAXROW || nEndRow > MAXROW || nDestRow > MAXROW )
+ {
+ DBG_ERROR("invalid row in MoveBlock");
+ return FALSE;
+ }
+
+ // zugehoerige Szenarien auch anpassen - nur wenn innerhalb einer Tabelle verschoben wird!
+ BOOL bScenariosAdded = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ if ( nDestTab == nStartTab && !pDoc->IsScenario(nEndTab) )
+ while ( nEndTab+1 < nTabCount && pDoc->IsScenario(nEndTab+1) )
+ {
+ ++nEndTab;
+ bScenariosAdded = TRUE;
+ }
+
+ USHORT nSrcTabCount = nEndTab-nStartTab+1;
+ USHORT nDestEndTab = nDestTab+nSrcTabCount-1;
+ USHORT nTab;
+
+ ScDocument* pClipDoc = new ScDocument( SCDOCMODE_CLIP );
+
+ ScMarkData aSourceMark;
+ for (nTab=nStartTab; nTab<=nEndTab; nTab++)
+ aSourceMark.SelectTable( nTab, TRUE ); // Source selektieren
+ aSourceMark.SetMarkArea( rSource );
+
+ pDoc->CopyToClip( nStartCol, nStartRow, nEndCol, nEndRow, bCut, pClipDoc,
+ FALSE, &aSourceMark, bScenariosAdded );
+
+ USHORT nOldEndCol = nEndCol;
+ USHORT nOldEndRow = nEndRow;
+ BOOL bClipOver = FALSE;
+ for (nTab=nStartTab; nTab<=nEndTab; nTab++)
+ {
+ USHORT nTmpEndCol = nOldEndCol;
+ USHORT nTmpEndRow = nOldEndRow;
+ if (pDoc->ExtendMerge( nStartCol, nStartRow, nTmpEndCol, nTmpEndRow, nTab ))
+ bClipOver = TRUE;
+ if ( nTmpEndCol > nEndCol ) nEndCol = nTmpEndCol;
+ if ( nTmpEndRow > nEndRow ) nEndRow = nTmpEndRow;
+ }
+
+ USHORT nDestEndCol = nDestCol + ( nOldEndCol-nStartCol );
+ USHORT nDestEndRow = nDestRow + ( nOldEndRow-nStartRow );
+
+ USHORT nUndoEndCol = nDestCol + ( nEndCol-nStartCol ); // erweitert im Zielblock
+ USHORT nUndoEndRow = nDestRow + ( nEndRow-nStartRow );
+
+ if (nUndoEndCol>MAXCOL || nUndoEndRow>MAXROW)
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PASTE_FULL);
+ delete pClipDoc;
+ return FALSE;
+ }
+
+ // Test auf Zellschutz
+
+ BOOL bOk = TRUE;
+ for (nTab=nDestTab; nTab<=nDestEndTab && bOk; nTab++)
+ bOk = pDoc->IsBlockEditable( nTab, nDestCol,nDestRow, nUndoEndCol,nUndoEndRow );
+ if (bCut)
+ for (nTab=nStartTab; nTab<=nEndTab && bOk; nTab++)
+ bOk = pDoc->IsBlockEditable( nTab, nStartCol,nStartRow, nEndCol,nEndRow );
+
+ if (!bOk)
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ delete pClipDoc;
+ return FALSE;
+ }
+
+ // Test auf zusammengefasste - beim Verschieben erst nach dem Loeschen
+
+ if (bClipOver && !bCut)
+ if (pDoc->HasAttrib( nDestCol,nDestRow,nDestTab, nUndoEndCol,nUndoEndRow,nDestEndTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ))
+ { // "Zusammenfassen nicht verschachteln !"
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_MSSG_MOVEBLOCKTO_0);
+ delete pClipDoc;
+ return FALSE;
+ }
+
+ // Linien drin? (fuer Paint)
+
+ BOOL bSourceLines = pDoc->HasAttrib( nStartCol,nStartRow,nStartTab,
+ nEndCol,nEndRow,nEndTab, HASATTR_PAINTEXT );
+ BOOL bDestLines = pDoc->HasAttrib( nDestCol,nDestRow,nDestTab,
+ nDestEndCol,nDestEndRow,nDestEndTab, HASATTR_PAINTEXT );
+
+ //
+ // ausfuehren
+ //
+
+ ScDocument* pUndoDoc = NULL;
+ ScDocument* pRefUndoDoc = NULL;
+ ScRefUndoData* pUndoData = NULL;
+ if (bRecord)
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nEndTab, FALSE, FALSE );
+
+ if (bCut)
+ {
+ pDoc->CopyToDocument( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab,
+ IDF_ALL, FALSE, pUndoDoc );
+ pRefUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRefUndoDoc->InitUndo( pDoc, 0, nTabCount-1, FALSE, FALSE );
+ }
+
+ if ( nDestTab != nStartTab )
+ pUndoDoc->AddUndoTab( nDestTab, nDestEndTab, FALSE, FALSE );
+ pDoc->CopyToDocument( nDestCol, nDestRow, nDestTab,
+ nDestEndCol, nDestEndRow, nDestEndTab,
+ IDF_ALL, FALSE, pUndoDoc );
+
+ pUndoData = new ScRefUndoData( pDoc );
+
+ pDoc->BeginDrawUndo();
+ }
+
+ BOOL bSourceHeight = FALSE; // Hoehen angepasst?
+ if (bCut)
+ {
+ for (nTab=nStartTab; nTab<=nEndTab; nTab++)
+ pDoc->DeleteAreaTab( nStartCol,nStartRow, nOldEndCol,nOldEndRow, nTab, IDF_ALL );
+//!!! pDoc->DeleteAreaTab( nStartCol,nStartRow, nEndCol,nEndRow, nStartTab, IDF_ALL );
+
+ // Test auf zusammengefasste
+
+ if (bClipOver)
+ if (pDoc->HasAttrib( nDestCol,nDestRow,nDestTab,
+ nUndoEndCol,nUndoEndRow,nDestEndTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ))
+ {
+ pDoc->CopyFromClip( rSource, aSourceMark, IDF_ALL, pRefUndoDoc, pClipDoc );
+ for (nTab=nStartTab; nTab<=nEndTab; nTab++)
+ {
+ USHORT nTmpEndCol = nEndCol;
+ USHORT nTmpEndRow = nEndRow;
+ pDoc->ExtendMerge( nStartCol, nStartRow, nTmpEndCol, nTmpEndRow, nTab, TRUE );
+ }
+
+ // Fehlermeldung erst nach dem Wiederherstellen des Inhalts
+ if (!bApi) // "Zusammenfassen nicht verschachteln !"
+ rDocShell.ErrorMessage(STR_MSSG_MOVEBLOCKTO_0);
+
+ delete pUndoDoc;
+ delete pRefUndoDoc;
+ delete pUndoData;
+ delete pClipDoc;
+ return FALSE;
+ }
+
+ bSourceHeight = AdjustRowHeight( rSource, FALSE );
+ }
+
+ ScRange aPasteDest( nDestCol, nDestRow, nDestTab, nDestEndCol, nDestEndRow, nDestEndTab );
+
+ ScMarkData aDestMark;
+ for (nTab=nDestTab; nTab<=nDestEndTab; nTab++)
+ aDestMark.SelectTable( nTab, TRUE ); // Destination selektieren
+ aDestMark.SetMarkArea( aPasteDest );
+
+ //! markierte Tabellen bei CopyFromClip uebergeben !!!!!
+ pDoc->CopyFromClip( aPasteDest, aDestMark, IDF_ALL, pRefUndoDoc, pClipDoc );
+
+ VirtualDevice aVirtDev;
+ BOOL bDestHeight = AdjustRowHeight(
+ ScRange( 0,nDestRow,nDestTab, MAXCOL,nDestEndRow,nDestEndTab ),
+ FALSE );
+
+ if (bRecord)
+ {
+ if (pRefUndoDoc)
+ {
+ // alle Tabellen anlegen, damit Formeln kopiert werden koennen:
+ pUndoDoc->AddUndoTab( 0, nTabCount-1, FALSE, FALSE );
+
+ pRefUndoDoc->DeleteArea( nDestCol, nDestRow, nDestEndCol, nDestEndRow, aSourceMark, IDF_ALL );
+ // kopieren mit bColRowFlags=FALSE (#54194#)
+ pRefUndoDoc->CopyToDocument( 0, 0, 0, MAXCOL, MAXROW, MAXTAB,
+ IDF_FORMULA, FALSE, pUndoDoc, NULL, FALSE );
+ delete pRefUndoDoc;
+ }
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDragDrop( &rDocShell, ScRange(
+ nStartCol, nStartRow, nStartTab,
+ nOldEndCol, nOldEndRow, nEndTab ),
+ ScAddress( nDestCol, nDestRow, nDestTab ),
+ bCut, pUndoDoc, pUndoData, bScenariosAdded ) );
+ }
+
+ USHORT nDestPaintEndCol = nDestEndCol;
+ USHORT nDestPaintEndRow = nDestEndRow;
+ for (nTab=nDestTab; nTab<=nDestEndTab; nTab++)
+ {
+ USHORT nTmpEndCol = nDestEndCol;
+ USHORT nTmpEndRow = nDestEndRow;
+ pDoc->ExtendMerge( nDestCol, nDestRow, nTmpEndCol, nTmpEndRow, nTab, TRUE );
+ if (nTmpEndCol > nDestPaintEndCol) nDestPaintEndCol = nTmpEndCol;
+ if (nTmpEndRow > nDestPaintEndRow) nDestPaintEndRow = nTmpEndRow;
+ }
+
+ if (bCut)
+ for (nTab=nStartTab; nTab<=nEndTab; nTab++)
+ pDoc->RefreshAutoFilter( nStartCol, nStartRow, nEndCol, nEndRow, nTab );
+
+ if (bPaint)
+ {
+ // Zielbereich:
+
+ USHORT nPaintStartX = nDestCol;
+ USHORT nPaintStartY = nDestRow;
+ USHORT nPaintEndX = nDestPaintEndCol;
+ USHORT nPaintEndY = nDestPaintEndRow;
+ USHORT nFlags = PAINT_GRID;
+ USHORT nExt = 0;
+ if ( bSourceLines || bDestLines )
+ nExt |= SC_PF_LINES;
+
+ if ( nStartRow==0 && nEndRow==MAXROW ) // Breiten mitkopiert?
+ {
+ nPaintEndX = MAXCOL;
+ nPaintStartY = 0;
+ nPaintEndY = MAXROW;
+ nFlags |= PAINT_TOP;
+ }
+ if ( bDestHeight )
+ {
+ nPaintEndY = MAXROW;
+ nPaintStartX = 0;
+ nPaintEndX = MAXCOL;
+ nFlags |= PAINT_LEFT;
+ }
+ if ( bScenariosAdded )
+ {
+ nPaintStartX = nPaintStartY = 0;
+ nPaintEndX = MAXCOL;
+ nPaintEndY = MAXROW;
+ }
+
+ rDocShell.PostPaint( nPaintStartX,nPaintStartY,nDestTab,
+ nPaintEndX,nPaintEndY,nDestEndTab, nFlags, nExt );
+
+ if ( bCut )
+ {
+ // Quellbereich:
+
+ nPaintStartX = nStartCol;
+ nPaintStartY = nStartRow;
+ nPaintEndX = nEndCol;
+ nPaintEndY = nEndRow;
+ nFlags = PAINT_GRID;
+ nExt = 0;
+ if ( bSourceLines )
+ nExt |= SC_PF_LINES;
+
+ if ( bSourceHeight )
+ {
+ nPaintEndY = MAXROW;
+ nPaintStartX = 0;
+ nPaintEndX = MAXCOL;
+ nFlags |= PAINT_LEFT;
+ }
+ if ( bScenariosAdded )
+ {
+ nPaintStartX = nPaintStartY = 0;
+ nPaintEndX = MAXCOL;
+ nPaintEndY = MAXROW;
+ }
+
+ rDocShell.PostPaint( nPaintStartX,nPaintStartY,nStartTab,
+ nPaintEndX,nPaintEndY,nEndTab, nFlags, nExt );
+ }
+ }
+
+ aModificator.SetDocumentModified();
+
+ delete pClipDoc;
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::InsertTable( USHORT nTab, const String& rName, BOOL bRecord, BOOL bApi )
+{
+ BOOL bSuccess = FALSE;
+ WaitObject aWait( rDocShell.GetDialogParent() );
+
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if (bRecord)
+ pDoc->BeginDrawUndo(); // InsertTab erzeugt ein SdrUndoNewPage
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ BOOL bAppend = ( nTab >= nTabCount );
+ if ( bAppend )
+ nTab = nTabCount; // wichtig fuer Undo
+
+ if (pDoc->InsertTab( nTab, rName ))
+ {
+ if (bRecord)
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoInsertTab( &rDocShell, nTab, bAppend, rName));
+ // Views updaten:
+ rDocShell.Broadcast( ScTablesHint( SC_TAB_INSERTED, nTab ) );
+
+ rDocShell.PostPaintExtras();
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ bSuccess = TRUE;
+ }
+ else if (!bApi)
+ rDocShell.ErrorMessage(STR_TABINSERT_ERROR);
+
+ return bSuccess;
+}
+
+BOOL ScDocFunc::DeleteTable( USHORT nTab, BOOL bRecord, BOOL bApi )
+{
+ WaitObject aWait( rDocShell.GetDialogParent() );
+
+ ScDocShellModificator aModificator( rDocShell );
+
+ BOOL bSuccess = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ BOOL bWasLinked = pDoc->IsLinked(nTab);
+ ScDocument* pUndoDoc = NULL;
+ ScRefUndoData* pUndoData = NULL;
+ if (bRecord)
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ USHORT nCount = pDoc->GetTableCount();
+
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE ); // nur nTab mit Flags
+ pUndoDoc->AddUndoTab( 0, nCount-1 ); // alle Tabs fuer Referenzen
+
+ pDoc->CopyToDocument(0,0,nTab, MAXCOL,MAXROW,nTab, IDF_ALL,FALSE, pUndoDoc );
+ String aOldName;
+ pDoc->GetName( nTab, aOldName );
+ pUndoDoc->RenameTab( nTab, aOldName, FALSE );
+ if (bWasLinked)
+ pUndoDoc->SetLink( nTab, pDoc->GetLinkMode(nTab), pDoc->GetLinkDoc(nTab),
+ pDoc->GetLinkFlt(nTab), pDoc->GetLinkOpt(nTab),
+ pDoc->GetLinkTab(nTab) );
+
+ if ( pDoc->IsScenario(nTab) )
+ {
+ pUndoDoc->SetScenario( nTab, TRUE );
+ String aComment;
+ Color aColor;
+ USHORT nScenFlags;
+ pDoc->GetScenarioData( nTab, aComment, aColor, nScenFlags );
+ pUndoDoc->SetScenarioData( nTab, aComment, aColor, nScenFlags );
+ BOOL bActive = pDoc->IsActiveScenario( nTab );
+ pUndoDoc->SetActiveScenario( nTab, bActive );
+ }
+
+ // Drawing-Layer muss sein Undo selbst in der Hand behalten !!!
+ pDoc->BeginDrawUndo(); // DeleteTab erzeugt ein SdrUndoDelPage
+
+ pUndoData = new ScRefUndoData( pDoc );
+ }
+
+ if (pDoc->DeleteTab( nTab, pUndoDoc ))
+ {
+ if (bRecord)
+ {
+ SvUShorts theTabs;
+ theTabs.Insert(nTab,theTabs.Count());
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDeleteTab( &rDocShell, theTabs, pUndoDoc, pUndoData ));
+ }
+ // Views updaten:
+ rDocShell.Broadcast( ScTablesHint( SC_TAB_DELETED, nTab ) );
+
+ if (bWasLinked)
+ {
+ rDocShell.UpdateLinks(); // Link-Manager updaten
+ SFX_BINDINGS().Invalidate(SID_LINKS);
+ }
+
+ rDocShell.PostPaintExtras();
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ bSuccess = TRUE;
+ }
+ else
+ {
+ delete pUndoDoc;
+ delete pUndoData;
+ }
+ return bSuccess;
+}
+
+BOOL ScDocFunc::SetTableVisible( USHORT nTab, BOOL bVisible, BOOL bApi )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if ( pDoc->IsVisible( nTab ) == bVisible )
+ return TRUE; // nichts zu tun - ok
+
+ if ( !pDoc->IsDocEditable() )
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ ScDocShellModificator aModificator( rDocShell );
+
+ if ( !bVisible )
+ {
+ // nicht alle Tabellen ausblenden
+
+ USHORT nVisCount = 0;
+ USHORT nCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nCount; i++)
+ if (pDoc->IsVisible(i))
+ ++nVisCount;
+
+ if (nVisCount <= 1)
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR); //! eigene Meldung?
+ return FALSE;
+ }
+ }
+
+ pDoc->SetVisible( nTab, bVisible );
+ rDocShell.GetUndoManager()->AddUndoAction( new ScUndoShowHideTab( &rDocShell, nTab, bVisible ) );
+
+ // Views updaten:
+ if (!bVisible)
+ rDocShell.Broadcast( ScTablesHint( SC_TAB_HIDDEN, nTab ) );
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ rDocShell.PostPaint(0,0,0,MAXCOL,MAXROW,MAXTAB, PAINT_EXTRAS);
+ aModificator.SetDocumentModified();
+
+ return TRUE;
+}
+
+BOOL ScDocFunc::RenameTable( USHORT nTab, const String& rName, BOOL bRecord, BOOL bApi )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if ( !pDoc->IsDocEditable() )
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ ScDocShellModificator aModificator( rDocShell );
+
+ BOOL bSuccess = FALSE;
+ String sOldName;
+ pDoc->GetName(nTab, sOldName);
+ if (pDoc->RenameTab( nTab, rName ))
+ {
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoRenameTab( &rDocShell, nTab, sOldName, rName));
+ rDocShell.PostPaintExtras();
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+
+ bSuccess = TRUE;
+ }
+ return bSuccess;
+}
+
+//------------------------------------------------------------------------
+
+//! SetWidthOrHeight - noch doppelt zu ViewFunc !!!!!!
+//! Probleme:
+//! - Optimale Hoehe fuer Edit-Zellen ist unterschiedlich zwischen Drucker und Bildschirm
+//! - Optimale Breite braucht Selektion, um evtl. nur selektierte Zellen zu beruecksichtigen
+
+USHORT lcl_GetOptimalColWidth( ScDocShell& rDocShell, USHORT nCol, USHORT nTab, BOOL bFormula )
+{
+ USHORT nTwips = 0;
+
+//! OutputDevice* pDev = rDocShell.GetPrinter();
+ VirtualDevice aVDev;
+ OutputDevice* pDev = &aVDev; // aus Kompatibilitaetsgruenden...
+
+ if (pDev)
+ {
+ ScDocument* pDoc = rDocShell.GetDocument();
+ Fraction aOne(1,1);
+ MapMode aOldMap = pDev->GetMapMode();
+ pDev->SetMapMode( MAP_PIXEL ); // wichtig fuer GetNeededSize
+ Point aPix1000 = pDev->LogicToPixel( Point(1000,1000), MAP_TWIP );
+ double nPPTX = aPix1000.X() / 1000.0;
+ double nPPTY = aPix1000.Y() / 1000.0;
+ nTwips = pDoc->GetOptimalColWidth( nCol, nTab, pDev, nPPTX, nPPTY, aOne, aOne,
+ bFormula, NULL );
+ pDev->SetMapMode( aOldMap ); //! noetig ???
+ }
+ return nTwips;
+}
+
+BOOL ScDocFunc::SetWidthOrHeight( BOOL bWidth, USHORT nRangeCnt, USHORT* pRanges, USHORT nTab,
+ ScSizeMode eMode, USHORT nSizeTwips,
+ BOOL bRecord, BOOL bApi )
+{
+ if (!nRangeCnt)
+ return TRUE;
+
+ if ( rDocShell.IsReadOnly() )
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR); //! eigene Meldung?
+ return FALSE;
+ }
+
+ BOOL bSuccess = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nStart = pRanges[0];
+ USHORT nEnd = pRanges[2*nRangeCnt-1];
+
+ BOOL bFormula = FALSE;
+ if ( eMode == SC_SIZE_OPTIMAL )
+ {
+ //! Option "Formeln anzeigen" - woher nehmen?
+ }
+
+ ScDocument* pUndoDoc = NULL;
+ ScOutlineTable* pUndoTab = NULL;
+ USHORT* pUndoRanges = NULL;
+
+ if ( bRecord )
+ {
+ pDoc->BeginDrawUndo(); // Drawing Updates
+
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ if (bWidth)
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, FALSE );
+ pDoc->CopyToDocument( nStart, 0, nTab, nEnd, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+ else
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, TRUE );
+ pDoc->CopyToDocument( 0, nStart, nTab, MAXCOL, nEnd, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+
+ pUndoRanges = new USHORT[ 2*nRangeCnt ];
+ memmove( pUndoRanges, pRanges, 2*nRangeCnt*sizeof(USHORT) );
+
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (pTable)
+ pUndoTab = new ScOutlineTable( *pTable );
+ }
+
+ BOOL bShow = nSizeTwips > 0 || eMode != SC_SIZE_DIRECT;
+ BOOL bOutline = FALSE;
+
+ pDoc->IncSizeRecalcLevel( nTab ); // nicht fuer jede Spalte einzeln
+ for (USHORT nRangeNo=0; nRangeNo<nRangeCnt; nRangeNo++)
+ {
+ USHORT nStartNo = *(pRanges++);
+ USHORT nEndNo = *(pRanges++);
+
+ if ( !bWidth ) // Hoehen immer blockweise
+ {
+ if ( eMode==SC_SIZE_OPTIMAL || eMode==SC_SIZE_VISOPT )
+ {
+ BOOL bAll = ( eMode==SC_SIZE_OPTIMAL );
+ if (!bAll)
+ {
+ // fuer alle eingeblendeten CR_MANUALSIZE loeschen,
+ // dann SetOptimalHeight mit bShrink = FALSE
+ for (USHORT nRow=nStartNo; nRow<=nEndNo; nRow++)
+ {
+ BYTE nOld = pDoc->GetRowFlags(nRow,nTab);
+ if ( (nOld & CR_HIDDEN) == 0 && ( nOld & CR_MANUALSIZE ) )
+ pDoc->SetRowFlags( nRow, nTab, nOld & ~CR_MANUALSIZE );
+ }
+ }
+
+//! OutputDevice* pDev = rDocShell.GetPrinter();
+ VirtualDevice aVDev;
+ OutputDevice* pDev = &aVDev; // aus Kompatibilitaetsgruenden...
+
+ if (pDev)
+ {
+ Fraction aOne(1,1);
+ MapMode aOldMap = pDev->GetMapMode();
+ pDev->SetMapMode( MAP_PIXEL ); // wichtig fuer GetNeededSize
+ Point aPix1000 = pDev->LogicToPixel( Point(1000,1000), MAP_TWIP );
+ double nPPTX = aPix1000.X() / 1000.0;
+ double nPPTY = aPix1000.Y() / 1000.0;
+ pDoc->SetOptimalHeight( nStartNo, nEndNo, nTab, 0, pDev,
+ nPPTX, nPPTY, aOne, aOne, bAll );
+ pDev->SetMapMode( aOldMap ); //! noetig ???
+ }
+
+ if (bAll)
+ pDoc->ShowRows( nStartNo, nEndNo, nTab, TRUE );
+
+ // Manual-Flag wird bei bAll=TRUE schon in SetOptimalHeight gesetzt
+ // (an bei Extra-Height, sonst aus).
+ }
+ else if ( eMode==SC_SIZE_DIRECT )
+ {
+ if (nSizeTwips)
+ pDoc->SetRowHeightRange( nStartNo, nEndNo, nTab, nSizeTwips );
+ pDoc->ShowRows( nStartNo, nEndNo, nTab, nSizeTwips != 0 );
+ pDoc->SetManualHeight( nStartNo, nEndNo, nTab, TRUE ); // Manual-Flag
+ }
+ else if ( eMode==SC_SIZE_SHOW )
+ {
+ pDoc->ShowRows( nStartNo, nEndNo, nTab, TRUE );
+ }
+ }
+ else // Spaltenbreiten
+ {
+ for (USHORT nCol=nStartNo; nCol<=nEndNo; nCol++)
+ {
+ if ( eMode != SC_SIZE_VISOPT ||
+ (pDoc->GetColFlags( nCol, nTab ) & CR_HIDDEN) == 0 )
+ {
+ USHORT nThisSize = nSizeTwips;
+
+ if ( eMode==SC_SIZE_OPTIMAL || eMode==SC_SIZE_VISOPT )
+ nThisSize = nSizeTwips +
+ lcl_GetOptimalColWidth( rDocShell, nCol, nTab, bFormula );
+ if ( nThisSize )
+ pDoc->SetColWidth( nCol, nTab, nThisSize );
+
+ pDoc->ShowCol( nCol, nTab, bShow );
+ }
+ }
+ }
+
+ // Outline anpassen
+
+ if (bWidth)
+ bOutline = bOutline || pDoc->UpdateOutlineCol( nStartNo, nEndNo, nTab, bShow );
+ else
+ bOutline = bOutline || pDoc->UpdateOutlineRow( nStartNo, nEndNo, nTab, bShow );
+ }
+ pDoc->DecSizeRecalcLevel( nTab ); // nicht fuer jede Spalte einzeln
+
+ if (!bOutline)
+ DELETEZ(pUndoTab);
+
+ if (bRecord)
+ {
+ ScMarkData aMark;
+ aMark.SelectOneTable( nTab );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoWidthOrHeight( &rDocShell, aMark,
+ nStart, nTab, nEnd, nTab,
+ pUndoDoc, nRangeCnt, pUndoRanges,
+ pUndoTab, eMode, nSizeTwips, bWidth ) );
+ }
+
+ pDoc->UpdatePageBreaks( nTab );
+
+
+ //! Test !!!!!!!
+ rDocShell.PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PAINT_ALL);
+ //! Test !!!!!!!
+
+ return bSuccess;
+}
+
+
+BOOL ScDocFunc::InsertPageBreak( BOOL bColumn, const ScAddress& rPos,
+ BOOL bRecord, BOOL bSetModified, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nTab = rPos.Tab();
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ USHORT nPos = bColumn ? rPos.Col() : rPos.Row();
+ if (nPos == 0)
+ return FALSE; // erste Spalte / Zeile
+
+ BYTE nFlags = bColumn ? pDoc->GetColFlags( nPos, nTab ) : pDoc->GetRowFlags( nPos, nTab );
+ if (nFlags & CR_MANUALBREAK)
+ return TRUE; // Umbruch schon gesetzt
+
+ if (bRecord)
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoPageBreak( &rDocShell, rPos.Col(), rPos.Row(), nTab, bColumn, TRUE ) );
+
+ nFlags |= CR_MANUALBREAK;
+ if (bColumn)
+ pDoc->SetColFlags( nPos, nTab, nFlags );
+ else
+ pDoc->SetRowFlags( nPos, nTab, nFlags );
+ pDoc->UpdatePageBreaks( nTab );
+
+ if (bColumn)
+ {
+ rDocShell.PostPaint( nPos-1, 0, nTab, MAXCOL, MAXROW, nTab, PAINT_GRID );
+ rBindings.Invalidate( FID_INS_COLBRK );
+ rBindings.Invalidate( FID_DEL_COLBRK );
+ }
+ else
+ {
+ rDocShell.PostPaint( 0, nPos-1, nTab, MAXCOL, MAXROW, nTab, PAINT_GRID );
+ rBindings.Invalidate( FID_INS_ROWBRK );
+ rBindings.Invalidate( FID_DEL_ROWBRK );
+ }
+ rBindings.Invalidate( FID_DEL_MANUALBREAKS );
+
+ if (bSetModified)
+ aModificator.SetDocumentModified();
+
+ return TRUE;
+}
+
+BOOL ScDocFunc::RemovePageBreak( BOOL bColumn, const ScAddress& rPos,
+ BOOL bRecord, BOOL bSetModified, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nTab = rPos.Tab();
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ USHORT nPos = bColumn ? rPos.Col() : rPos.Row();
+ BYTE nFlags = bColumn ? pDoc->GetColFlags( nPos, nTab ) : pDoc->GetRowFlags( nPos, nTab );
+ if ((nFlags & CR_MANUALBREAK)==0)
+ return FALSE; // kein Umbruch gesetzt
+
+ if (bRecord)
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoPageBreak( &rDocShell, rPos.Col(), rPos.Row(), nTab, bColumn, FALSE ) );
+
+ nFlags &= ~CR_MANUALBREAK;
+ if (bColumn)
+ pDoc->SetColFlags( nPos, nTab, nFlags );
+ else
+ pDoc->SetRowFlags( nPos, nTab, nFlags );
+ pDoc->UpdatePageBreaks( nTab );
+
+ if (bColumn)
+ {
+ rDocShell.PostPaint( nPos-1, 0, nTab, MAXCOL, MAXROW, nTab, PAINT_GRID );
+ rBindings.Invalidate( FID_INS_COLBRK );
+ rBindings.Invalidate( FID_DEL_COLBRK );
+ }
+ else
+ {
+ rDocShell.PostPaint( 0, nPos-1, nTab, MAXCOL, MAXROW, nTab, PAINT_GRID );
+ rBindings.Invalidate( FID_INS_ROWBRK );
+ rBindings.Invalidate( FID_DEL_ROWBRK );
+ }
+ rBindings.Invalidate( FID_DEL_MANUALBREAKS );
+
+ if (bSetModified)
+ aModificator.SetDocumentModified();
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+
+BOOL lcl_ValidPassword( ScDocument* pDoc, USHORT nTab,
+ const String& rPassword, String* pReturnOld = NULL )
+{
+ String aOldPassword;
+ if ( nTab == TABLEID_DOC )
+ {
+ if (pDoc->IsDocProtected())
+ aOldPassword = pDoc->GetDocPassword();
+ }
+ else
+ {
+ if (pDoc->IsTabProtected(nTab))
+ aOldPassword = pDoc->GetTabPassword(nTab);
+ }
+
+ if (pReturnOld)
+ *pReturnOld = aOldPassword;
+
+ return ( aOldPassword.Len() == 0 || aOldPassword == rPassword );
+}
+
+BOOL ScDocFunc::Protect( USHORT nTab, const String& rPassword, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ BOOL bOk = lcl_ValidPassword( pDoc, nTab, rPassword );
+
+ if ( bOk )
+ {
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoProtect( &rDocShell, nTab, TRUE, rPassword ) );
+
+ if ( nTab == TABLEID_DOC )
+ pDoc->SetDocProtection( TRUE, rPassword );
+ else
+ pDoc->SetTabProtection( nTab, TRUE, rPassword );
+
+ rDocShell.PostPaintGridAll();
+ aModificator.SetDocumentModified();
+ }
+ else if (!bApi)
+ {
+ // different password was set before
+
+//! rDocShell.ErrorMessage(...);
+
+ InfoBox aBox( rDocShell.GetDialogParent(), String( ScResId( SCSTR_WRONGPASSWORD ) ) );
+ aBox.Execute();
+ }
+
+ return bOk;
+}
+
+BOOL ScDocFunc::Unprotect( USHORT nTab, const String& rPassword, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ String aOldPassword;
+ BOOL bOk = lcl_ValidPassword( pDoc, nTab, rPassword, &aOldPassword );
+
+ if ( bOk )
+ {
+ if ( nTab == TABLEID_DOC )
+ pDoc->SetDocProtection( FALSE, String() );
+ else
+ pDoc->SetTabProtection( nTab, FALSE, String() );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoProtect( &rDocShell, nTab, FALSE, aOldPassword ) );
+
+ rDocShell.PostPaintGridAll();
+ aModificator.SetDocumentModified();
+ }
+ else if (!bApi)
+ {
+//! rDocShell.ErrorMessage(...);
+
+ InfoBox aBox( rDocShell.GetDialogParent(), String( ScResId( SCSTR_WRONGPASSWORD ) ) );
+ aBox.Execute();
+ }
+
+ return bOk;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::ClearItems( const ScMarkData& rMark, const USHORT* pWhich, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if (!pDoc->IsSelectionEditable(rMark))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ ScRange aMarkRange;
+ rMark.GetMultiMarkArea( aMarkRange );
+
+// if (bRecord)
+ {
+ USHORT nStartTab = aMarkRange.aStart.Tab();
+ USHORT nEndTab = aMarkRange.aEnd.Tab();
+
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nEndTab );
+ pDoc->CopyToDocument( aMarkRange, IDF_ATTRIB, TRUE, pUndoDoc, (ScMarkData*)&rMark );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoClearItems( &rDocShell, rMark, pUndoDoc, pWhich ) );
+ }
+
+ pDoc->ClearSelectionItems( pWhich, rMark );
+
+ rDocShell.PostPaint( aMarkRange, PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+ aModificator.SetDocumentModified();
+
+ //! Bindings-Invalidate etc.?
+
+ return TRUE;
+}
+
+BOOL ScDocFunc::ChangeIndent( const ScMarkData& rMark, BOOL bIncrement, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if (!pDoc->IsSelectionEditable(rMark))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ ScRange aMarkRange;
+ rMark.GetMultiMarkArea( aMarkRange );
+
+// if (bRecord)
+ {
+ USHORT nStartTab = aMarkRange.aStart.Tab();
+ USHORT nTabCount = pDoc->GetTableCount();
+
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nStartTab );
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nStartTab && rMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i );
+
+ ScRange aCopyRange = aMarkRange;
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+ pDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, TRUE, pUndoDoc, (ScMarkData*)&rMark );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoIndent( &rDocShell, rMark, pUndoDoc, bIncrement ) );
+ }
+
+ pDoc->ChangeSelectionIndent( bIncrement, rMark );
+
+ rDocShell.PostPaint( aMarkRange, PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+ aModificator.SetDocumentModified();
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_ALIGNLEFT ); // ChangeIndent setzt auf links
+ rBindings.Invalidate( SID_ALIGNRIGHT );
+ rBindings.Invalidate( SID_ALIGNBLOCK );
+ rBindings.Invalidate( SID_ALIGNCENTERHOR );
+
+ return TRUE;
+}
+
+BOOL ScDocFunc::AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
+ USHORT nFormatNo, BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ BOOL bSuccess = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nStartTab = rRange.aStart.Tab();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nEndTab = rRange.aEnd.Tab();
+
+ ScMarkData aMark;
+ if (pTabMark)
+ aMark = *pTabMark;
+ else
+ {
+ for (USHORT nTab=nStartTab; nTab<=nEndTab; nTab++)
+ aMark.SelectTable( nTab, TRUE );
+ }
+
+ ScAutoFormat* pAutoFormat = ScGlobal::GetAutoFormat();
+ if ( pAutoFormat && nFormatNo < pAutoFormat->GetCount() &&
+ pDoc->IsSelectedBlockEditable( nStartCol,nStartRow, nEndCol,nEndRow, aMark ) )
+ {
+ WaitObject aWait( rDocShell.GetDialogParent() );
+
+ BOOL bSize = (*pAutoFormat)[nFormatNo]->GetIncludeWidthHeight();
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ ScDocument* pUndoDoc = NULL;
+ if ( bRecord )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nStartTab, bSize, bSize );
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nStartTab && aMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i, bSize, bSize );
+
+ ScRange aCopyRange = rRange;
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aStart.SetTab(nTabCount-1);
+ pDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, FALSE, pUndoDoc, &aMark );
+ if (bSize)
+ {
+ pDoc->CopyToDocument( nStartCol,0,0, nEndCol,MAXROW,nTabCount-1,
+ IDF_NONE, FALSE, pUndoDoc, &aMark );
+ pDoc->CopyToDocument( 0,nStartRow,0, MAXCOL,nEndRow,nTabCount-1,
+ IDF_NONE, FALSE, pUndoDoc, &aMark );
+ }
+ pDoc->BeginDrawUndo();
+ }
+
+ pDoc->AutoFormat( nStartCol, nStartRow, nEndCol, nEndRow, nFormatNo, aMark );
+
+ if (bSize)
+ {
+/* USHORT nCols[2];
+ nCols[0] = nStartCol;
+ nCols[1] = nEndCol;
+ USHORT nRows[2];
+ nRows[0] = nStartRow;
+ nRows[1] = nEndRow;
+*/
+ USHORT nCols[2] = { nStartCol, nEndCol };
+ USHORT nRows[2] = { nStartRow, nEndRow };
+
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if (aMark.GetTableSelect(nTab))
+ {
+ SetWidthOrHeight( TRUE, 1,nCols, nTab, SC_SIZE_VISOPT, STD_EXTRA_WIDTH, FALSE, TRUE );
+ SetWidthOrHeight( FALSE,1,nRows, nTab, SC_SIZE_VISOPT, 0, FALSE, FALSE );
+ rDocShell.PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab,
+ PAINT_GRID | PAINT_LEFT | PAINT_TOP );
+ }
+ }
+ else
+ {
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if (aMark.GetTableSelect(nTab))
+ {
+ BOOL bAdj = AdjustRowHeight( ScRange(nStartCol, nStartRow, nTab,
+ nEndCol, nEndRow, nTab), FALSE );
+ if (bAdj)
+ rDocShell.PostPaint( 0,nStartRow,nTab, MAXCOL,MAXROW,nTab,
+ PAINT_GRID | PAINT_LEFT );
+ else
+ rDocShell.PostPaint( nStartCol, nStartRow, nTab,
+ nEndCol, nEndRow, nTab, PAINT_GRID );
+ }
+ }
+
+ if ( bRecord ) // Draw-Undo erst jetzt verfuegbar
+ {
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoAutoFormat( &rDocShell, rRange, pUndoDoc, aMark, bSize, nFormatNo ) );
+ }
+
+ aModificator.SetDocumentModified();
+ }
+ else if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+
+ return bSuccess;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::EnterMatrix( const ScRange& rRange, const ScMarkData* pTabMark,
+ const String& rString, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ BOOL bSuccess = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nStartTab = rRange.aStart.Tab();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nEndTab = rRange.aEnd.Tab();
+
+ ScMarkData aMark;
+ if (pTabMark)
+ aMark = *pTabMark;
+ else
+ {
+ for (USHORT nTab=nStartTab; nTab<=nEndTab; nTab++)
+ aMark.SelectTable( nTab, TRUE );
+ }
+
+ if ( pDoc->IsSelectedBlockEditable( nStartCol,nStartRow, nEndCol,nEndRow, aMark ) )
+ {
+ WaitObject aWait( rDocShell.GetDialogParent() );
+
+ ScDocument* pUndoDoc;
+// if (bRecord) // immer
+ {
+ //! auch bei Undo selektierte Tabellen beruecksichtigen
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nEndTab );
+ pDoc->CopyToDocument( rRange, IDF_ALL, FALSE, pUndoDoc );
+ }
+
+ if ( pDoc->IsImportingXML() )
+ {
+ ScTokenArray* pCode = lcl_ScDocFunc_CreateTokenArrayXML( rString );
+ pDoc->InsertMatrixFormula(nStartCol,nStartRow,nEndCol,nEndRow,aMark,EMPTY_STRING,pCode);
+ delete pCode;
+ }
+ else
+ pDoc->InsertMatrixFormula(nStartCol,nStartRow,nEndCol,nEndRow,aMark,rString);
+
+// if (bRecord) // immer
+ {
+ //! auch bei Undo selektierte Tabellen beruecksichtigen
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoEnterMatrix( &rDocShell, rRange, pUndoDoc, rString ) );
+ }
+
+ // Err522 beim Paint von DDE-Formeln werden jetzt beim Interpretieren abgefangen
+ rDocShell.PostPaint( nStartCol,nStartRow,nStartTab,nEndCol,nEndRow,nEndTab, PAINT_GRID );
+ aModificator.SetDocumentModified();
+
+ bSuccess = TRUE;
+ }
+ else if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+
+ return bSuccess;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::TabOp( const ScRange& rRange, const ScMarkData* pTabMark,
+ const ScTabOpParam& rParam, BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ BOOL bSuccess = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nStartTab = rRange.aStart.Tab();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nEndTab = rRange.aEnd.Tab();
+
+ ScMarkData aMark;
+ if (pTabMark)
+ aMark = *pTabMark;
+ else
+ {
+ for (USHORT nTab=nStartTab; nTab<=nEndTab; nTab++)
+ aMark.SelectTable( nTab, TRUE );
+ }
+
+ if ( pDoc->IsSelectedBlockEditable( nStartCol,nStartRow, nEndCol,nEndRow, aMark ) )
+ {
+ WaitObject aWait( rDocShell.GetDialogParent() );
+ pDoc->SetDirty( rRange );
+ if ( bRecord )
+ {
+ //! auch bei Undo selektierte Tabellen beruecksichtigen
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nEndTab );
+ pDoc->CopyToDocument( rRange, IDF_ALL, FALSE, pUndoDoc );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoTabOp( &rDocShell,
+ nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab, pUndoDoc,
+ rParam.aRefFormulaCell,
+ rParam.aRefFormulaEnd,
+ rParam.aRefRowCell,
+ rParam.aRefColCell,
+ rParam.nMode) );
+ }
+ pDoc->InsertTableOp(rParam, nStartCol, nStartRow, nEndCol, nEndRow, aMark);
+ rDocShell.PostPaintGridAll();
+ aModificator.SetDocumentModified();
+ bSuccess = TRUE;
+ }
+ else if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+
+ return bSuccess;
+}
+
+//------------------------------------------------------------------------
+
+inline ScDirection DirFromFillDir( FillDir eDir )
+{
+ if (eDir==FILL_TO_BOTTOM)
+ return DIR_BOTTOM;
+ else if (eDir==FILL_TO_RIGHT)
+ return DIR_RIGHT;
+ else if (eDir==FILL_TO_TOP)
+ return DIR_TOP;
+ else // if (eDir==FILL_TO_LEFT)
+ return DIR_LEFT;
+}
+
+BOOL ScDocFunc::FillSimple( const ScRange& rRange, const ScMarkData* pTabMark,
+ FillDir eDir, BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ BOOL bSuccess = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nStartTab = rRange.aStart.Tab();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nEndTab = rRange.aEnd.Tab();
+
+ ScMarkData aMark;
+ if (pTabMark)
+ aMark = *pTabMark;
+ else
+ {
+ for (USHORT nTab=nStartTab; nTab<=nEndTab; nTab++)
+ aMark.SelectTable( nTab, TRUE );
+ }
+
+ if ( pDoc->IsSelectedBlockEditable( nStartCol,nStartRow, nEndCol,nEndRow, aMark ) )
+ {
+ WaitObject aWait( rDocShell.GetDialogParent() );
+
+ ScRange aSourceArea = rRange;
+ ScRange aDestArea = rRange;
+
+ USHORT nCount;
+ switch (eDir)
+ {
+ case FILL_TO_BOTTOM:
+ nCount = aSourceArea.aEnd.Row()-aSourceArea.aStart.Row();
+ aSourceArea.aEnd.SetRow( aSourceArea.aStart.Row() );
+ break;
+ case FILL_TO_RIGHT:
+ nCount = aSourceArea.aEnd.Col()-aSourceArea.aStart.Col();
+ aSourceArea.aEnd.SetCol( aSourceArea.aStart.Col() );
+ break;
+ case FILL_TO_TOP:
+ nCount = aSourceArea.aEnd.Row()-aSourceArea.aStart.Row();
+ aSourceArea.aStart.SetRow( aSourceArea.aEnd.Row() );
+ break;
+ case FILL_TO_LEFT:
+ nCount = aSourceArea.aEnd.Col()-aSourceArea.aStart.Col();
+ aSourceArea.aStart.SetCol( aSourceArea.aEnd.Col() );
+ break;
+ }
+
+ ScDocument* pUndoDoc = NULL;
+ if ( bRecord )
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nStartTab = aDestArea.aStart.Tab();
+
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nStartTab );
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nStartTab && aMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i );
+
+ ScRange aCopyRange = aDestArea;
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+ pDoc->CopyToDocument( aCopyRange, IDF_ALL, FALSE, pUndoDoc, &aMark );
+ pDoc->BeginDrawUndo();
+ }
+
+ pDoc->Fill( aSourceArea.aStart.Col(), aSourceArea.aStart.Row(),
+ aSourceArea.aEnd.Col(), aSourceArea.aEnd.Row(), aMark,
+ nCount, eDir, FILL_SIMPLE );
+ AdjustRowHeight(rRange);
+
+ if ( bRecord ) // Draw-Undo erst jetzt verfuegbar
+ {
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoAutoFill( &rDocShell, aDestArea, aSourceArea, pUndoDoc, aMark,
+ eDir, FILL_SIMPLE, FILL_DAY, MAXDOUBLE, 1.0, 1e307,
+ pDoc->GetRangeName()->GetSharedMaxIndex()+1 ) );
+ }
+
+ rDocShell.PostPaintGridAll();
+// rDocShell.PostPaintDataChanged();
+ aModificator.SetDocumentModified();
+
+ bSuccess = TRUE;
+ }
+ else if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+
+ return bSuccess;
+}
+
+BOOL ScDocFunc::FillSeries( const ScRange& rRange, const ScMarkData* pTabMark,
+ FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd,
+ double fStart, double fStep, double fMax,
+ BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ BOOL bSuccess = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nStartTab = rRange.aStart.Tab();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nEndTab = rRange.aEnd.Tab();
+
+ ScMarkData aMark;
+ if (pTabMark)
+ aMark = *pTabMark;
+ else
+ {
+ for (USHORT nTab=nStartTab; nTab<=nEndTab; nTab++)
+ aMark.SelectTable( nTab, TRUE );
+ }
+
+ if ( pDoc->IsSelectedBlockEditable( nStartCol,nStartRow, nEndCol,nEndRow, aMark ) )
+ {
+ WaitObject aWait( rDocShell.GetDialogParent() );
+
+ ScRange aSourceArea = rRange;
+ ScRange aDestArea = rRange;
+
+ USHORT nCount = pDoc->GetEmptyLinesInBlock(
+ aSourceArea.aStart.Col(), aSourceArea.aStart.Row(), aSourceArea.aStart.Tab(),
+ aSourceArea.aEnd.Col(), aSourceArea.aEnd.Row(), aSourceArea.aEnd.Tab(),
+ DirFromFillDir(eDir) );
+
+ // #27665# mindestens eine Zeile/Spalte als Quellbereich behalten:
+ USHORT nTotLines = ( eDir == FILL_TO_BOTTOM || eDir == FILL_TO_TOP ) ?
+ ( aSourceArea.aEnd.Row() - aSourceArea.aStart.Row() + 1 ) :
+ ( aSourceArea.aEnd.Col() - aSourceArea.aStart.Col() + 1 );
+ if ( nCount >= nTotLines )
+ nCount = nTotLines - 1;
+
+ switch (eDir)
+ {
+ case FILL_TO_BOTTOM:
+ aSourceArea.aEnd.SetRow( aSourceArea.aEnd.Row() - nCount );
+ break;
+ case FILL_TO_RIGHT:
+ aSourceArea.aEnd.SetCol( aSourceArea.aEnd.Col() - nCount );
+ break;
+ case FILL_TO_TOP:
+ aSourceArea.aStart.SetRow( aSourceArea.aStart.Row() + nCount );
+ break;
+ case FILL_TO_LEFT:
+ aSourceArea.aStart.SetCol( aSourceArea.aStart.Col() + nCount );
+ break;
+ }
+
+ ScDocument* pUndoDoc = NULL;
+ if ( bRecord )
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nStartTab = aDestArea.aStart.Tab();
+
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nStartTab );
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nStartTab && aMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i );
+
+ pDoc->CopyToDocument(
+ aDestArea.aStart.Col(), aDestArea.aStart.Row(), 0,
+ aDestArea.aEnd.Col(), aDestArea.aEnd.Row(), nTabCount-1,
+ IDF_ALL, FALSE, pUndoDoc, &aMark );
+ pDoc->BeginDrawUndo();
+ }
+
+ if (aDestArea.aStart.Col() <= aDestArea.aEnd.Col() &&
+ aDestArea.aStart.Row() <= aDestArea.aEnd.Row())
+ {
+ if ( fStart != MAXDOUBLE )
+ {
+ USHORT nValX = (eDir == FILL_TO_LEFT) ? aDestArea.aEnd.Col() : aDestArea.aStart.Col();
+ USHORT nValY = (eDir == FILL_TO_TOP ) ? aDestArea.aEnd.Row() : aDestArea.aStart.Row();
+ USHORT nTab = aDestArea.aStart.Tab();
+ pDoc->SetValue( nValX, nValY, nTab, fStart );
+ }
+ pDoc->Fill( aSourceArea.aStart.Col(), aSourceArea.aStart.Row(),
+ aSourceArea.aEnd.Col(), aSourceArea.aEnd.Row(), aMark,
+ nCount, eDir, eCmd, eDateCmd, fStep, fMax );
+ AdjustRowHeight(rRange);
+
+ rDocShell.PostPaintGridAll();
+// rDocShell.PostPaintDataChanged();
+ aModificator.SetDocumentModified();
+ }
+
+ if ( bRecord ) // Draw-Undo erst jetzt verfuegbar
+ {
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoAutoFill( &rDocShell, aDestArea, aSourceArea, pUndoDoc, aMark,
+ eDir, eCmd, eDateCmd, fStart, fStep, fMax,
+ pDoc->GetRangeName()->GetSharedMaxIndex()+1 ) );
+ }
+
+ bSuccess = TRUE;
+ }
+ else if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+
+ return bSuccess;
+}
+
+BOOL ScDocFunc::FillAuto( ScRange& rRange, const ScMarkData* pTabMark,
+ FillDir eDir, USHORT nCount, BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nStartTab = rRange.aStart.Tab();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nEndTab = rRange.aEnd.Tab();
+
+ ScMarkData aMark;
+ if (pTabMark)
+ aMark = *pTabMark;
+ else
+ {
+ for (USHORT nTab=nStartTab; nTab<=nEndTab; nTab++)
+ aMark.SelectTable( nTab, TRUE );
+ }
+
+ ScRange aSourceArea = rRange;
+ ScRange aDestArea = rRange;
+
+ FillCmd eCmd = FILL_AUTO;
+ FillDateCmd eDateCmd = FILL_DAY;
+ double fStep = 1.0;
+ double fMax = MAXDOUBLE;
+
+ switch (eDir)
+ {
+ case FILL_TO_BOTTOM:
+ aDestArea.aEnd.SetRow( aSourceArea.aEnd.Row() + nCount );
+ break;
+ case FILL_TO_TOP:
+ if (nCount > aSourceArea.aStart.Row())
+ {
+ DBG_ERROR("FillAuto: Row < 0");
+ nCount = aSourceArea.aStart.Row();
+ }
+ aDestArea.aStart.SetRow( aSourceArea.aStart.Row() - nCount );
+ break;
+ case FILL_TO_RIGHT:
+ aDestArea.aEnd.SetCol( aSourceArea.aEnd.Col() + nCount );
+ break;
+ case FILL_TO_LEFT:
+ if (nCount > aSourceArea.aStart.Col())
+ {
+ DBG_ERROR("FillAuto: Col < 0");
+ nCount = aSourceArea.aStart.Col();
+ }
+ aDestArea.aStart.SetCol( aSourceArea.aStart.Col() - nCount );
+ break;
+ default:
+ DBG_ERROR("Falsche Richtung bei FillAuto");
+ break;
+ }
+
+ // Zellschutz testen
+ //! Quellbereich darf geschuetzt sein !!!
+ //! aber kein Matrixfragment enthalten !!!
+
+ if ( !pDoc->IsBlockEditable(aDestArea.aStart.Tab(),
+ aDestArea.aStart.Col(), aDestArea.aStart.Row(),
+ aDestArea.aEnd.Col(), aDestArea.aEnd.Row())
+ || pDoc->HasSelectedBlockMatrixFragment( nStartCol, nStartRow,
+ nEndCol, nEndRow, aMark ) )
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ WaitObject aWait( rDocShell.GetDialogParent() );
+
+ ScDocument* pUndoDoc = NULL;
+ if ( bRecord )
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nStartTab = aDestArea.aStart.Tab();
+
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nStartTab );
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nStartTab && aMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i );
+
+ pDoc->CopyToDocument(
+ aDestArea.aStart.Col(), aDestArea.aStart.Row(), 0,
+ aDestArea.aEnd.Col(), aDestArea.aEnd.Row(), nTabCount-1,
+ IDF_ALL, FALSE, pUndoDoc, &aMark );
+ pDoc->BeginDrawUndo();
+ }
+
+ pDoc->Fill( aSourceArea.aStart.Col(), aSourceArea.aStart.Row(),
+ aSourceArea.aEnd.Col(), aSourceArea.aEnd.Row(), aMark,
+ nCount, eDir, eCmd, eDateCmd, fStep, fMax );
+
+ AdjustRowHeight(aDestArea);
+
+ if ( bRecord ) // Draw-Undo erst jetzt verfuegbar
+ {
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoAutoFill( &rDocShell, aDestArea, aSourceArea, pUndoDoc, aMark,
+ eDir, eCmd, eDateCmd, MAXDOUBLE, fStep, fMax,
+ pDoc->GetRangeName()->GetSharedMaxIndex()+1 ) );
+ }
+
+ rDocShell.PostPaintGridAll();
+// rDocShell.PostPaintDataChanged();
+ aModificator.SetDocumentModified();
+
+ rRange = aDestArea; // Zielbereich zurueckgeben (zum Markieren)
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::MergeCells( const ScRange& rRange, BOOL bContents, BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nTab = rRange.aStart.Tab();
+
+ if (!pDoc->IsBlockEditable( nTab, nStartCol, nStartRow, nEndCol, nEndRow ))
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ if ( nStartCol == nEndCol && nStartRow == nEndRow )
+ {
+ // nichts zu tun
+ return TRUE;
+ }
+
+ if ( pDoc->HasAttrib( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ) )
+ {
+ // "Zusammenfassen nicht verschachteln !"
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_MSSG_MERGECELLS_0);
+ return FALSE;
+ }
+
+ BOOL bNeedContents = bContents &&
+ ( !pDoc->IsBlockEmpty( nTab, nStartCol,nStartRow+1, nStartCol,nEndRow ) ||
+ !pDoc->IsBlockEmpty( nTab, nStartCol+1,nStartRow, nEndCol,nEndRow ) );
+
+ if (bRecord)
+ {
+ ScDocument* pUndoDoc = NULL;
+ if (bNeedContents && bContents)
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+ pDoc->CopyToDocument( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab,
+ IDF_ALL, FALSE, pUndoDoc );
+ }
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoMerge( &rDocShell,
+ nStartCol, nStartRow, nTab,
+ nEndCol, nEndRow, nTab, TRUE, pUndoDoc ) );
+ }
+
+ if (bNeedContents && bContents)
+ pDoc->DoMergeContents( nTab, nStartCol,nStartRow, nEndCol,nEndRow );
+ pDoc->DoMerge( nTab, nStartCol,nStartRow, nEndCol,nEndRow );
+
+ if ( !AdjustRowHeight( ScRange( 0,nStartRow,nTab, MAXCOL,nEndRow,nTab ) ) )
+ rDocShell.PostPaint( nStartCol, nStartRow, nTab,
+ nEndCol, nEndRow, nTab, PAINT_GRID );
+ if (bNeedContents && bContents)
+ pDoc->SetDirty( rRange );
+ aModificator.SetDocumentModified();
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( FID_MERGE_ON );
+ rBindings.Invalidate( FID_MERGE_OFF );
+
+ return TRUE;
+}
+
+BOOL ScDocFunc::UnmergeCells( const ScRange& rRange, BOOL bRecord, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nTab = rRange.aStart.Tab();
+
+ if ( pDoc->HasAttrib( rRange, HASATTR_MERGED ) )
+ {
+ ScRange aExtended = rRange;
+ pDoc->ExtendMerge( aExtended );
+ ScRange aRefresh = aExtended;
+ pDoc->ExtendOverlapped( aRefresh );
+
+ if (bRecord)
+ {
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+ pDoc->CopyToDocument( aExtended, IDF_ATTRIB, FALSE, pUndoDoc );
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoRemoveMerge( &rDocShell, rRange, pUndoDoc ) );
+ }
+
+ const SfxPoolItem& rDefAttr = pDoc->GetPool()->GetDefaultItem( ATTR_MERGE );
+ ScPatternAttr aPattern( pDoc->GetPool() );
+ aPattern.GetItemSet().Put( rDefAttr );
+ pDoc->ApplyPatternAreaTab( rRange.aStart.Col(), rRange.aStart.Row(),
+ rRange.aEnd.Col(), rRange.aEnd.Row(), nTab,
+ aPattern );
+
+ pDoc->RemoveFlagsTab( aExtended.aStart.Col(), aExtended.aStart.Row(),
+ aExtended.aEnd.Col(), aExtended.aEnd.Row(), nTab,
+ SC_MF_HOR | SC_MF_VER );
+
+ pDoc->ExtendMerge( aRefresh, TRUE, FALSE );
+
+ if ( !AdjustRowHeight( aExtended ) )
+ rDocShell.PostPaint( aExtended, PAINT_GRID );
+ aModificator.SetDocumentModified();
+ }
+ else if (!bApi)
+ Sound::Beep(); //! FALSE zurueck???
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::SetNote( const ScAddress& rPos, const ScPostIt& rNote, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ BOOL bDone = FALSE;
+ USHORT nCol = rPos.Col();
+ USHORT nRow = rPos.Row();
+ USHORT nTab = rPos.Tab();
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if (pDoc->IsBlockEditable( nTab, nCol,nRow, nCol,nRow ))
+ {
+ ScPostIt aOld;
+ pDoc->GetNote( nCol, nRow, nTab, aOld );
+ pDoc->SetNote( nCol, nRow, nTab, rNote );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoEditNote( &rDocShell, rPos, aOld, rNote ) );
+
+ rDocShell.PostPaintCell( nCol, nRow, nTab );
+ aModificator.SetDocumentModified();
+ bDone = TRUE;
+ }
+ else if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+
+ return bDone;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::ModifyRangeNames( const ScRangeName& rNewRanges, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+
+ ScRangeName* pOld = pDoc->GetRangeName();
+ ScRangeName* pUndoRanges = new ScRangeName(*pOld);
+ ScRangeName* pRedoRanges = new ScRangeName(rNewRanges);
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoRangeNames( &rDocShell, pUndoRanges, pRedoRanges ) );
+
+ pDoc->CompileNameFormula( TRUE ); // CreateFormulaString
+ pDoc->SetRangeName( new ScRangeName( rNewRanges ) );
+ pDoc->CompileNameFormula( FALSE ); // CompileFormulaString
+
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREAS_CHANGED ) );
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+
+void ScDocFunc::CreateOneName( ScRangeName& rList,
+ USHORT nPosX, USHORT nPosY, USHORT nTab,
+ USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ BOOL& rCancel, BOOL bApi )
+{
+ if (rCancel)
+ return;
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if (!pDoc->HasValueData( nPosX, nPosY, nTab ))
+ {
+ String aName;
+ pDoc->GetString( nPosX, nPosY, nTab, aName );
+ ScRangeData::MakeValidName(aName);
+ if (aName.Len())
+ {
+ String aContent;
+ ScRangeUtil().MakeAreaString( ScArea( nTab,nX1,nY1,nX2,nY2 ),
+ aContent, pDoc, FALSE );
+
+ ScRangeName* pList = pDoc->GetRangeName();
+
+ BOOL bInsert = FALSE;
+ USHORT nOldPos;
+ if (rList.SearchName( aName, nOldPos )) // vorhanden ?
+ {
+ ScRangeData* pOld = rList[nOldPos];
+ String aOldStr;
+ pOld->GetSymbol( aOldStr );
+ if (aOldStr != aContent)
+ {
+ if (bApi)
+ bInsert = TRUE; // per API nicht nachfragen
+ else
+ {
+ String aTemplate = ScGlobal::GetRscString( STR_CREATENAME_REPLACE );
+
+ String aMessage = aTemplate.GetToken( 0, '#' );
+ aMessage += aName;
+ aMessage += aTemplate.GetToken( 1, '#' );
+
+ short nResult = QueryBox( rDocShell.GetDialogParent(),
+ WinBits(WB_YES_NO_CANCEL | WB_DEF_YES),
+ aMessage ).Execute();
+ if ( nResult == RET_YES )
+ {
+ rList.AtFree(nOldPos);
+ bInsert = TRUE;
+ }
+ else if ( nResult == RET_CANCEL )
+ rCancel = TRUE;
+ }
+ }
+ }
+ else
+ bInsert = TRUE;
+
+ if (bInsert)
+ {
+ ScRangeData* pData = new ScRangeData( pDoc, aName, aContent, nPosX, nPosY, nTab );
+ if (!rList.Insert(pData))
+ {
+ DBG_ERROR("nanu?");
+ delete pData;
+ }
+ }
+ }
+ }
+}
+
+BOOL ScDocFunc::CreateNames( const ScRange& rRange, USHORT nFlags, BOOL bApi )
+{
+ if (!nFlags)
+ return FALSE; // war nix
+
+ ScDocShellModificator aModificator( rDocShell );
+
+ BOOL bDone = FALSE;
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nTab = rRange.aStart.Tab();
+ DBG_ASSERT(rRange.aEnd.Tab() == nTab, "CreateNames: mehrere Tabellen geht nicht");
+
+ BOOL bValid = TRUE;
+ if ( nFlags & ( NAME_TOP | NAME_BOTTOM ) )
+ if ( nStartRow == nEndRow )
+ bValid = FALSE;
+ if ( nFlags & ( NAME_LEFT | NAME_RIGHT ) )
+ if ( nStartCol == nEndCol )
+ bValid = FALSE;
+
+ if (bValid)
+ {
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScRangeName* pNames = pDoc->GetRangeName();
+ if (!pNames)
+ return FALSE; // soll nicht sein
+ ScRangeName aNewRanges( *pNames );
+
+ BOOL bTop = ( ( nFlags & NAME_TOP ) != 0 );
+ BOOL bLeft = ( ( nFlags & NAME_LEFT ) != 0 );
+ BOOL bBottom = ( ( nFlags & NAME_BOTTOM ) != 0 );
+ BOOL bRight = ( ( nFlags & NAME_RIGHT ) != 0 );
+
+ USHORT nContX1 = nStartCol;
+ USHORT nContY1 = nStartRow;
+ USHORT nContX2 = nEndCol;
+ USHORT nContY2 = nEndRow;
+
+ if ( bTop )
+ ++nContY1;
+ if ( bLeft )
+ ++nContX1;
+ if ( bBottom )
+ --nContY2;
+ if ( bRight )
+ --nContX2;
+
+ BOOL bCancel = FALSE;
+ USHORT i;
+
+ if ( bTop )
+ for (i=nContX1; i<=nContX2; i++)
+ CreateOneName( aNewRanges, i,nStartRow,nTab, i,nContY1,i,nContY2, bCancel, bApi );
+ if ( bLeft )
+ for (i=nContY1; i<=nContY2; i++)
+ CreateOneName( aNewRanges, nStartCol,i,nTab, nContX1,i,nContX2,i, bCancel, bApi );
+ if ( bBottom )
+ for (i=nContX1; i<=nContX2; i++)
+ CreateOneName( aNewRanges, i,nEndRow,nTab, i,nContY1,i,nContY2, bCancel, bApi );
+ if ( bRight )
+ for (i=nContY1; i<=nContY2; i++)
+ CreateOneName( aNewRanges, nEndCol,i,nTab, nContX1,i,nContX2,i, bCancel, bApi );
+
+ if ( bTop && bLeft )
+ CreateOneName( aNewRanges, nStartCol,nStartRow,nTab, nContX1,nContY1,nContX2,nContY2, bCancel, bApi );
+ if ( bTop && bRight )
+ CreateOneName( aNewRanges, nEndCol,nStartRow,nTab, nContX1,nContY1,nContX2,nContY2, bCancel, bApi );
+ if ( bBottom && bLeft )
+ CreateOneName( aNewRanges, nStartCol,nEndRow,nTab, nContX1,nContY1,nContX2,nContY2, bCancel, bApi );
+ if ( bBottom && bRight )
+ CreateOneName( aNewRanges, nEndCol,nEndRow,nTab, nContX1,nContY1,nContX2,nContY2, bCancel, bApi );
+
+ bDone = ModifyRangeNames( aNewRanges, bApi );
+
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREAS_CHANGED ) );
+ }
+
+ return bDone;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::InsertNameList( const ScAddress& rStartPos, BOOL bApi )
+{
+ ScDocShellModificator aModificator( rDocShell );
+
+ const BOOL bRecord=TRUE;
+
+ BOOL bDone = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nTab = rStartPos.Tab();
+ ScDocument* pUndoDoc = NULL;
+
+ ScRangeName* pList = pDoc->GetRangeName();
+ USHORT nCount = pList->GetCount();
+ USHORT nValidCount = 0;
+ USHORT i;
+ for (i=0; i<nCount; i++)
+ {
+ ScRangeData* pData = (*pList)[i];
+ if ( !pData->HasType( RT_DATABASE ) && !pData->HasType( RT_SHARED ) )
+ ++nValidCount;
+ }
+
+ if (nValidCount)
+ {
+ USHORT nStartCol = rStartPos.Col();
+ USHORT nStartRow = rStartPos.Row();
+ USHORT nEndCol = nStartCol + 1;
+ USHORT nEndRow = nStartRow + nValidCount - 1;
+
+ if (pDoc->IsBlockEditable( nTab, nStartCol,nStartRow, nEndCol,nEndRow ))
+ {
+ if (bRecord)
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+ pDoc->CopyToDocument( nStartCol,nStartRow,nTab, nEndCol,nEndRow,nTab,
+ IDF_ALL, FALSE, pUndoDoc );
+
+ pDoc->BeginDrawUndo(); // wegen Hoehenanpassung
+ }
+
+ ScRangeData** ppSortArray = new ScRangeData* [ nValidCount ];
+ USHORT j = 0;
+ for (i=0; i<nCount; i++)
+ {
+ ScRangeData* pData = (*pList)[i];
+ if ( !pData->HasType( RT_DATABASE ) && !pData->HasType( RT_SHARED ) )
+ ppSortArray[j++] = pData;
+ }
+#ifndef ICC
+ qsort( (void*)ppSortArray, nValidCount, sizeof(ScRangeData*),
+ &ScRangeData::QsortNameCompare );
+#else
+ qsort( (void*)ppSortArray, nValidCount, sizeof(ScRangeData*),
+ ICCQsortNameCompare );
+#endif
+ String aName;
+ String aContent;
+ String aFormula;
+ USHORT nOutRow = nStartRow;
+ for (j=0; j<nValidCount; j++)
+ {
+ ScRangeData* pData = ppSortArray[j];
+ pData->GetName(aName);
+ // relative Referenzen Excel-konform auf die linke Spalte anpassen:
+ pData->UpdateSymbol(aContent, ScAddress( nStartCol, nOutRow, nTab ));
+ aFormula = '=';
+ aFormula += aContent;
+ pDoc->PutCell( nStartCol,nOutRow,nTab, new ScStringCell( aName ) );
+ pDoc->PutCell( nEndCol ,nOutRow,nTab, new ScStringCell( aFormula ) );
+ ++nOutRow;
+ }
+
+ delete [] ppSortArray;
+
+ if (bRecord)
+ {
+ ScDocument* pRedoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRedoDoc->InitUndo( pDoc, nTab, nTab );
+ pDoc->CopyToDocument( nStartCol,nStartRow,nTab, nEndCol,nEndRow,nTab,
+ IDF_ALL, FALSE, pRedoDoc );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoListNames( &rDocShell,
+ ScRange( nStartCol,nStartRow,nTab, nEndCol,nEndRow,nTab ),
+ pUndoDoc, pRedoDoc ) );
+ }
+
+ if (!AdjustRowHeight(ScRange(0,nStartRow,nTab,MAXCOL,nEndRow,nTab)))
+ rDocShell.PostPaint( nStartCol,nStartRow,nTab, nEndCol,nEndRow,nTab, PAINT_GRID );
+//! rDocShell.UpdateOle(GetViewData());
+ aModificator.SetDocumentModified();
+ bDone = TRUE;
+ }
+ else if (!bApi)
+ rDocShell.ErrorMessage(STR_PROTECTIONERR);
+ }
+ return bDone;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::ResizeMatrix( const ScRange& rOldRange, const ScAddress& rNewEnd, BOOL bApi )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ USHORT nStartCol = rOldRange.aStart.Col();
+ USHORT nStartRow = rOldRange.aStart.Row();
+ USHORT nNewEndCol = rNewEnd.Col();
+ USHORT nNewEndRow = rNewEnd.Row();
+ USHORT nTab = rOldRange.aStart.Tab();
+
+ BOOL bRet = FALSE;
+
+ String aFormula;
+ pDoc->GetFormula( nStartCol, nStartRow, nTab, aFormula );
+ if ( aFormula.GetChar(0) == '{' && aFormula.GetChar(aFormula.Len()-1) == '}' )
+ {
+ String aUndo = ScGlobal::GetRscString( STR_UNDO_RESIZEMATRIX );
+ rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo );
+
+ aFormula.Erase(0,1);
+ aFormula.Erase(aFormula.Len()-1,1);
+
+ ScMarkData aMark;
+ aMark.SetMarkArea( rOldRange );
+ aMark.SelectTable( nTab, TRUE );
+ ScRange aNewRange( rOldRange.aStart, rNewEnd );
+
+ if ( DeleteContents( aMark, IDF_CONTENTS, TRUE, bApi ) )
+ {
+ bRet = EnterMatrix( aNewRange, &aMark, aFormula, bApi );
+ if (!bRet)
+ {
+ // versuchen, alten Zustand wiederherzustellen
+ EnterMatrix( rOldRange, &aMark, aFormula, bApi );
+ }
+ }
+
+ rDocShell.GetUndoManager()->LeaveListAction();
+ }
+
+ return bRet;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScDocFunc::InsertAreaLink( const String& rFile, const String& rFilter,
+ const String& rOptions, const String& rSource,
+ const ScRange& rDestRange, BOOL bFitBlock, BOOL bApi )
+{
+ //! auch fuer ScViewFunc::InsertAreaLink benutzen!
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+
+ String aFilterName = rFilter;
+ String aNewOptions = rOptions;
+ if (!aFilterName.Len())
+ ScDocumentLoader::GetFilterName( rFile, aFilterName, aNewOptions );
+
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+
+ ScAreaLink* pLink = new ScAreaLink( &rDocShell, rFile, aFilterName,
+ aNewOptions, rSource, rDestRange );
+ pLinkManager->InsertFileLink( *pLink, OBJECT_CLIENT_FILE, rFile, &aFilterName, &rSource );
+
+ // Undo fuer den leeren Link
+
+ rDocShell.GetUndoManager()->AddUndoAction( new ScUndoInsertAreaLink( &rDocShell,
+ rFile, aFilterName, aNewOptions,
+ rSource, rDestRange ) );
+
+ // Update hat sein eigenes Undo
+
+ pLink->SetDoInsert(bFitBlock); // beim ersten Update ggf. nichts einfuegen
+ pLink->Update(); // kein SetInCreate -> Update ausfuehren
+ pLink->SetDoInsert(TRUE); // Default = TRUE
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_LINKS );
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
+
+ return TRUE;
+}
+
+
+
+
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
new file mode 100644
index 000000000000..fd109b57162c
--- /dev/null
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -0,0 +1,2748 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+
+#include "scitems.hxx"
+
+#include <sdb/sdbcol.hxx>
+#include <sdb/sdbconn.hxx>
+#include <sdb/sdbtab.hxx>
+
+#include <sfx2/sfx.hrc>
+#include <sfx2/app.hxx>
+#include <sfx2/topfrm.hxx>
+#include <vcl/exchange.hxx>
+#include <offmgr/app.hxx>
+#include <svx/srchitem.hxx>
+#include <svtools/zforlist.hxx>
+#include <svtools/sfxecode.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/docfilt.hxx>
+#include <sfx2/evntconf.hxx>
+#include <svtools/stritem.hxx>
+#include <vcl/msgbox.hxx>
+#include <tools/stream.hxx>
+#include <tools/string.hxx>
+#include <vcl/virdev.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dinfdlg.hxx>
+#include <svtools/ctrltool.hxx>
+#include <so3/clsids.hxx>
+#include <svtools/converter.hxx>
+#include <offmgr/fltrcfg.hxx>
+#include <svx/svxmsbas.hxx>
+#include <vcl/waitobj.hxx>
+#include <unotools/charclass.hxx>
+
+#include <sot/formats.hxx>
+#define SOT_FORMATSTR_ID_STARCALC_30 SOT_FORMATSTR_ID_STARCALC
+
+#include <offmgr/sbaobj.hxx>
+
+#ifndef SO2_DECL_SVSTORAGESTREAM_DEFINED
+#define SO2_DECL_SVSTORAGESTREAM_DEFINED
+SO2_DECL_REF(SvStorageStream)
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "docoptio.hxx" // fuer SbaSdbExport
+#include "cell.hxx" // fuer SbaSdbExport
+
+#include "global.hxx"
+#include "filter.hxx"
+#include "scmod.hxx"
+#include "dbdocfun.hxx"
+#include "tabvwsh.hxx"
+#include "docfunc.hxx"
+#include "imoptdlg.hxx"
+#include "impex.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "printfun.hxx"
+#include "tpstat.hxx"
+#include "scerrors.hxx"
+#include "brdcst.hxx"
+#include "stlpool.hxx"
+#include "autostyl.hxx"
+#include "attrib.hxx"
+#include "asciiopt.hxx"
+#include "waitoff.hxx"
+#include "docpool.hxx" // LoadCompleted
+#include "progress.hxx"
+#include "pntlock.hxx"
+#include "collect.hxx"
+#include "docuno.hxx"
+#include "appoptio.hxx"
+#include "detdata.hxx"
+#include "printfun.hxx" // ScJobSetup
+#include "dociter.hxx"
+#include "cellform.hxx"
+#include "chartlis.hxx"
+#include "hints.hxx"
+#include "xmlwrap.hxx"
+
+#include "docsh.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+// Stream-Namen im Storage
+
+const sal_Char __FAR_DATA ScDocShell::pStarCalcDoc[] = STRING_SCSTREAM; // "StarCalcDocument"
+const sal_Char __FAR_DATA ScDocShell::pStyleName[] = "SfxStyleSheets";
+
+// Filter-Namen (wie in sclib.cxx)
+
+static const sal_Char __FAR_DATA pFilterSc50[] = "StarCalc 5.0";
+//static const sal_Char __FAR_DATA pFilterSc50Temp[] = "StarCalc 5.0 Vorlage/Template";
+static const sal_Char __FAR_DATA pFilterSc40[] = "StarCalc 4.0";
+//static const sal_Char __FAR_DATA pFilterSc40Temp[] = "StarCalc 4.0 Vorlage/Template";
+static const sal_Char __FAR_DATA pFilterSc30[] = "StarCalc 3.0";
+//static const sal_Char __FAR_DATA pFilterSc30Temp[] = "StarCalc 3.0 Vorlage/Template";
+static const sal_Char __FAR_DATA pFilterSc10[] = "StarCalc 1.0";
+static const sal_Char __FAR_DATA pFilterXML[] = "StarOffice XML (Calc)";
+static const sal_Char __FAR_DATA pFilterAscii[] = "Text - txt - csv (StarCalc)";
+static const sal_Char __FAR_DATA pFilterLotus[] = "Lotus";
+static const sal_Char __FAR_DATA pFilterExcel4[] = "MS Excel 4.0";
+static const sal_Char __FAR_DATA pFilterEx4Temp[] = "MS Excel 4.0 Vorlage/Template";
+static const sal_Char __FAR_DATA pFilterExcel5[] = "MS Excel 5.0/95";
+static const sal_Char __FAR_DATA pFilterEx5Temp[] = "MS Excel 5.0/95 Vorlage/Template";
+static const sal_Char __FAR_DATA pFilterExcel95[] = "MS Excel 95";
+static const sal_Char __FAR_DATA pFilterEx95Temp[] = "MS Excel 95 Vorlage/Template";
+static const sal_Char __FAR_DATA pFilterExcel97[] = "MS Excel 97";
+static const sal_Char __FAR_DATA pFilterEx97Temp[] = "MS Excel 97 Vorlage/Template";
+static const sal_Char __FAR_DATA pFilterDBase[] = "dBase";
+static const sal_Char __FAR_DATA pFilterDif[] = "DIF";
+static const sal_Char __FAR_DATA pFilterSylk[] = "SYLK";
+static const sal_Char __FAR_DATA pFilterHtml[] = "HTML (StarCalc)";
+static const sal_Char __FAR_DATA pFilterRtf[] = "Rich Text Format (StarCalc)";
+
+//----------------------------------------------------------------------
+
+#define ScDocShell
+#include "scslots.hxx"
+
+
+SFX_IMPL_INTERFACE(ScDocShell,SfxObjectShell, ScResId(SCSTR_DOCSHELL))
+{}
+
+// GlobalName der aktuellen Version:
+SFX_IMPL_OBJECTFACTORY_DLL(ScDocShell, SFXOBJECTSHELL_STD_NORMAL,
+ SvGlobalName(SO3_SC_CLASSID), Sc)
+
+TYPEINIT1( ScDocShell, SfxObjectShell ); // SfxInPlaceObject: kein Type-Info ?
+
+//------------------------------------------------------------------
+
+void __EXPORT ScDocShell::FillClass( SvGlobalName* pClassName,
+ ULONG* pFormat,
+ String* pAppName,
+ String* pFullTypeName,
+ String* pShortTypeName,
+ long nFileFormat ) const
+{
+ SfxInPlaceObject::FillClass( pClassName, pFormat, pAppName,
+ pFullTypeName, pShortTypeName, nFileFormat );
+
+ if ( nFileFormat == SOFFICE_FILEFORMAT_31 )
+ {
+ *pClassName = SvGlobalName( SO3_SC_CLASSID_30 );
+ *pFormat = SOT_FORMATSTR_ID_STARCALC_30;
+ *pAppName = String( ScResId( SCSTR_30_APPLICATION ) );
+ *pFullTypeName = String( ScResId( SCSTR_30_LONG_DOCNAME ) );
+ *pShortTypeName = String( ScResId( SCSTR_SHORT_SCDOC_NAME ) );
+ }
+ else if ( nFileFormat == SOFFICE_FILEFORMAT_40 )
+ {
+ *pClassName = SvGlobalName( SO3_SC_CLASSID_40 );
+ *pFormat = SOT_FORMATSTR_ID_STARCALC_40;
+ *pAppName = String( ScResId( SCSTR_40_APPLICATION ) );
+ *pFullTypeName = String( ScResId( SCSTR_40_LONG_DOCNAME ) );
+ *pShortTypeName = String( ScResId( SCSTR_SHORT_SCDOC_NAME ) );
+ }
+ else if ( nFileFormat == SOFFICE_FILEFORMAT_NOW )
+ {
+ *pFullTypeName = String( ScResId( SCSTR_LONG_SCDOC_NAME ) );
+ *pShortTypeName = String( ScResId( SCSTR_SHORT_SCDOC_NAME ) );
+ }
+ else
+ DBG_ERROR("wat fuer ne Version?");
+}
+
+//------------------------------------------------------------------
+
+void __EXPORT ScDocShell::FillRegInfo( SvEmbeddedRegistryInfo* pInfo )
+{
+ SfxInPlaceObject::FillRegInfo( pInfo );
+
+ pInfo->aObjName = String::CreateFromAscii(pStarCalcDoc);
+ pInfo->nMajorVers = 5;
+ pInfo->nMinorVers = 0;
+ pInfo->aHumanShortTypeName = String( ScResId( SCSTR_HUMAN_SCDOC_NAME ) );
+
+ //! nIconResId nur, wenn Desktop?
+
+ pInfo->nIconResId = REG_ICON_RESID_CALC;
+
+ // nShell und aExt sind schon gefuellt
+}
+
+//------------------------------------------------------------------
+
+void ScDocShell::DoEnterHandler()
+{
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if (pViewSh)
+ if (pViewSh->GetViewData()->GetDocShell() == this)
+ SC_MOD()->InputEnterHandler();
+}
+
+//------------------------------------------------------------------
+
+USHORT ScDocShell::GetSaveTab()
+{
+ USHORT nTab = 0;
+ ScTabViewShell* pSh = GetBestViewShell();
+ if (pSh)
+ {
+ const ScMarkData& rMark = pSh->GetViewData()->GetMarkData();
+ for ( nTab = 0; nTab <= MAXTAB; nTab++ ) // erste markierte Tabelle
+ if ( rMark.GetTableSelect( nTab ) )
+ break;
+ }
+ return nTab;
+}
+
+//------------------------------------------------------------------
+
+inline IsAsciiDigit( sal_Unicode c )
+{
+ return 0x31 <= c && c <= 0x39;
+}
+
+inline IsAsciiAlpha( sal_Unicode c )
+{
+ return (0x41 <= c && c <= 0x5a) || (0x61 <= c && c <= 0x7a);
+}
+
+
+ULONG ScDocShell::SbaSdbExport( BOOL& bHasMemo, const String& rParStr,
+ const String& aFileName )
+{
+
+ ULONG nErr = eERR_OK;
+ bHasMemo = FALSE;
+ SbaObject* pSbaObject = ((OfficeApplication*)SFX_APP())->GetSbaObject();
+ DBG_ASSERT( pSbaObject, "pSbaObject==NULL" );
+ SdbConnectionRef xConnect = pSbaObject->OpenConnection( rParStr );
+
+ if ( !xConnect.Is() || !xConnect->Status().IsSuccessful() )
+ return SCERR_EXPORT_CONNECT;
+
+ SdbTableRef xTable = xConnect->CreateTable( aFileName ); // Erzeugen der Tabellenstruktur
+ if ( !xTable.Is() )
+ return SCERR_EXPORT_CURSOR;
+
+ SdbColumnsRef xTblCol = xTable->Columns(); // leere Struktur holen
+
+ USHORT nFirstCol, nFirstRow, nLastCol, nLastRow, nCol, nRow;
+
+ USHORT nTab = GetSaveTab();
+ aDocument.GetDataStart( nTab, nFirstCol, nFirstRow );
+ aDocument.GetCellArea( nTab, nLastCol, nLastRow );
+ ScProgress aProgress( this, ScGlobal::GetRscString( STR_SAVE_DOC ),
+ nLastRow - nFirstRow );
+ SvNumberFormatter* pNumFmt = aDocument.GetFormatTable();
+ String aFieldName, aString, aOutString;
+ SdbDatabaseType eDbType;
+ xub_StrLen nFieldLen;
+ USHORT nPrecision;
+ BOOL bTypeDefined, bPrecDefined;
+ StrCollection aFieldNamesCollection;
+ BOOL bHasFieldNames = TRUE;
+ for ( nCol = nFirstCol; nCol <= nLastCol && bHasFieldNames; nCol++ )
+ { // nur Strings in erster Zeile => sind Feldnamen
+ if ( !aDocument.HasStringData( nCol, nFirstRow, nTab ) )
+ bHasFieldNames = FALSE;
+ }
+ USHORT nFirstDataRow = ( bHasFieldNames ? nFirstRow + 1 : nFirstRow );
+ for ( nCol = nFirstCol; nCol <= nLastCol; nCol++ )
+ {
+ bTypeDefined = FALSE;
+ bPrecDefined = FALSE;
+ nFieldLen = 0;
+ nPrecision = 0;
+ // Feldname[,Type[,Width[,Prec]]]
+ // Typ etc.: L; D; C[,W]; N[,W[,P]]
+ if ( bHasFieldNames )
+ {
+ aDocument.GetString( nCol, nFirstRow, nTab, aString );
+ aString.ToUpperAscii();
+ xub_StrLen nToken = aString.GetTokenCount( ',' );
+ if ( nToken > 1 )
+ {
+ aFieldName = aString.GetToken( 0, ',' );
+ aString.EraseAllChars( ' ' );
+ switch ( aString.GetToken( 1, ',' ).GetChar(0) )
+ {
+ case 'L' :
+ eDbType = SDB_DBTYPE_BOOLEAN;
+ nFieldLen = 1;
+ bTypeDefined = TRUE;
+ bPrecDefined = TRUE;
+ break;
+ case 'D' :
+ eDbType = SDB_DBTYPE_DATE;
+ nFieldLen = 8;
+ bTypeDefined = TRUE;
+ bPrecDefined = TRUE;
+ break;
+ case 'M' :
+ eDbType = SDB_DBTYPE_LONGVARCHAR;
+ nFieldLen = 10;
+ bTypeDefined = TRUE;
+ bPrecDefined = TRUE;
+ bHasMemo = TRUE;
+ break;
+ case 'C' :
+ eDbType = SDB_DBTYPE_VARCHAR;
+ bTypeDefined = TRUE;
+ bPrecDefined = TRUE;
+ break;
+ case 'N' :
+ eDbType = SDB_DBTYPE_DECIMAL;
+ bTypeDefined = TRUE;
+ break;
+ }
+ if ( bTypeDefined && !nFieldLen && nToken > 2 )
+ {
+ nFieldLen = aString.GetToken( 2, ',' ).ToInt32();
+ if ( !bPrecDefined && nToken > 3 )
+ {
+ String aTmp( aString.GetToken( 3, ',' ) );
+ if ( CharClass::isAsciiNumeric(aTmp) )
+ {
+ nPrecision = aTmp.ToInt32();
+ bPrecDefined = TRUE;
+ }
+ }
+ }
+ }
+ else
+ aFieldName = aString;
+
+ // Feldnamen pruefen und ggbf. gueltigen Feldnamen erzeugen.
+ // Erstes Zeichen muss Buchstabe sein,
+ // weitere nur alphanumerisch und Unterstrich erlaubt,
+ // "_DBASELOCK" ist reserviert (obsolet weil erstes Zeichen kein Buchstabe),
+ // keine doppelten Namen.
+ if ( !IsAsciiAlpha( aFieldName.GetChar(0) ) )
+ aFieldName.Insert( 'N', 0 );
+ String aTmpStr;
+ sal_Unicode c;
+ for ( const sal_Unicode* p = aFieldName.GetBuffer(); c = *p; p++ )
+ {
+ if ( IsAsciiAlpha( c ) || IsAsciiDigit( c ) || c == '_' )
+ aTmpStr += c;
+ else
+ aTmpStr += '_';
+ }
+ aFieldName = aTmpStr;
+ if ( aFieldName.Len() > 10 )
+ aFieldName.Erase( 10 );
+ StrData* pStrData = new StrData( aFieldName );
+ if ( !aFieldNamesCollection.Insert( pStrData ) )
+ { // doppelter Feldname, numerisch erweitern
+ USHORT nSub = 1;
+ String aFixPart( aFieldName );
+ do
+ {
+ ++nSub;
+ String aVarPart = String::CreateFromInt32( nSub );
+ if ( aFixPart.Len() + aVarPart.Len() > 10 )
+ aFixPart.Erase( 10 - aVarPart.Len() );
+ aFieldName = aFixPart;
+ aFieldName += aVarPart;
+ pStrData->SetString( aFieldName );
+ } while ( !aFieldNamesCollection.Insert( pStrData ) );
+ }
+ }
+ else
+ {
+ aFieldName = 'N';
+ aFieldName += String::CreateFromInt32(nCol+1);
+ }
+
+ if ( !bTypeDefined )
+ { // Feldtyp
+ ScBaseCell* pCell;
+ aDocument.GetCell( nCol, nFirstDataRow, nTab, pCell );
+ if ( !pCell || pCell->HasStringData() )
+ eDbType = SDB_DBTYPE_VARCHAR;
+ else
+ {
+ ULONG nFormat;
+ aDocument.GetNumberFormat( nCol, nFirstDataRow, nTab, nFormat );
+ if ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA
+ && ((nFormat % SV_COUNTRY_LANGUAGE_OFFSET) == 0) )
+ {
+ nFormat = ScGlobal::GetStandardFormat(
+ ((ScFormulaCell*)pCell)->GetValue(), *pNumFmt, nFormat,
+ ((ScFormulaCell*)pCell)->GetFormatType() );
+ }
+ switch ( pNumFmt->GetType( nFormat ) )
+ {
+ case NUMBERFORMAT_LOGICAL :
+ eDbType = SDB_DBTYPE_BOOLEAN;
+ nFieldLen = 1;
+ break;
+ case NUMBERFORMAT_DATE :
+ eDbType = SDB_DBTYPE_DATE;
+ nFieldLen = 8;
+ break;
+ case NUMBERFORMAT_TIME :
+ case NUMBERFORMAT_DATETIME :
+ eDbType = SDB_DBTYPE_VARCHAR;
+ break;
+ default:
+ eDbType = SDB_DBTYPE_DECIMAL;
+ }
+ }
+ }
+ BOOL bSdbLenAdjusted = FALSE;
+ BOOL bSdbLenBad = FALSE;
+ // Feldlaenge
+ if ( eDbType == SDB_DBTYPE_VARCHAR && !nFieldLen )
+ { // maximale Feldbreite bestimmen
+ nFieldLen = aDocument.GetMaxStringLen( nTab, nCol, nFirstDataRow,
+ nLastRow );
+ if ( nFieldLen == 0 )
+ nFieldLen = 1;
+ }
+ else if ( eDbType == SDB_DBTYPE_DECIMAL )
+ { // maximale Feldbreite und Nachkommastellen bestimmen
+ xub_StrLen nLen;
+ USHORT nPrec;
+ nLen = aDocument.GetMaxNumberStringLen( nPrec, nTab, nCol,
+ nFirstDataRow, nLastRow );
+ // dBaseIII Limit Nachkommastellen: 15
+ if ( nPrecision > 15 )
+ nPrecision = 15;
+ if ( nPrec > 15 )
+ nPrec = 15;
+ if ( bPrecDefined && nPrecision != nPrec )
+ { // Laenge auf vorgegebene Nachkommastellen anpassen
+ if ( nPrecision )
+ nLen += nPrecision - nPrec;
+ else
+ nLen -= nPrec+1; // auch den . mit raus
+ }
+ if ( nLen > nFieldLen )
+ nFieldLen = nLen;
+ if ( !bPrecDefined )
+ nPrecision = nPrec;
+ if ( nFieldLen == 0 )
+ nFieldLen = 1;
+ else if ( nFieldLen > 19 )
+ nFieldLen = 19; // dBaseIII Limit Feldlaenge numerisch: 19
+ if ( nPrecision && nFieldLen < nPrecision + 2 )
+ nFieldLen = nPrecision + 2; // 0. muss mit reinpassen
+ // 538 MUST: Sdb internal representation adds 2 to the field length!
+ // To give the user what he wants we must substract it here.
+ //! CAVEAT! There is no way to define a numeric field with a length
+ //! of 1 and no decimals!
+ if ( nFieldLen == 1 && nPrecision == 0 )
+ bSdbLenBad = TRUE;
+ nFieldLen = SvDbaseConverter::ConvertPrecisionToOdbc( nFieldLen, nPrecision );
+ bSdbLenAdjusted = TRUE;
+ }
+ if ( nFieldLen > 254 )
+ {
+ if ( eDbType == SDB_DBTYPE_VARCHAR )
+ { // zu lang fuer normales Textfeld => Memofeld
+ eDbType = SDB_DBTYPE_LONGVARCHAR;
+ nFieldLen = 10;
+ bHasMemo = TRUE;
+ }
+ else
+ nFieldLen = 254; // dumm gelaufen..
+ }
+ xTblCol->AddColumn( xConnect->CreateColumn(
+ aFieldName, // feld name (max 10 Zeichen)
+ eDbType, // typ
+ nFieldLen, // feldlaenge
+ nPrecision)); // Nachkommastellen
+ // undo change to field length, reflect reality
+ if ( bSdbLenAdjusted )
+ {
+ nFieldLen = SvDbaseConverter::ConvertPrecisionToDbase( nFieldLen, nPrecision );
+ if ( bSdbLenBad && nFieldLen == 1 )
+ nFieldLen = 2; // THIS is reality
+ }
+ if ( bTypeDefined )
+ { // Angabe anpassen und ausgeben
+ aOutString = aFieldName;
+ switch ( eDbType )
+ {
+ case SDB_DBTYPE_BOOLEAN :
+ aOutString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ",L" ));
+ break;
+ case SDB_DBTYPE_DATE :
+ aOutString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ",D" ));
+ break;
+ case SDB_DBTYPE_LONGVARCHAR :
+ aOutString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ",M" ));
+ break;
+ case SDB_DBTYPE_VARCHAR :
+ aOutString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ",C," ));
+ aOutString += String::CreateFromInt32( nFieldLen );
+ break;
+ case SDB_DBTYPE_DECIMAL :
+ aOutString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ",N," ));
+ aOutString += String::CreateFromInt32( nFieldLen );
+ aOutString += ',';
+ aOutString += String::CreateFromInt32( nPrecision );
+ break;
+ }
+ if ( !aOutString.EqualsIgnoreCaseAscii( aString ) )
+ {
+ aDocument.SetString( nCol, nFirstRow, nTab, aOutString );
+ PostPaint( nCol, nFirstRow, nTab, nCol, nFirstRow, nTab, PAINT_GRID );
+ }
+ }
+ }
+ xTable->Update();
+
+ if ( xTable->Status().IsError() )
+ nErr = SCERR_EXPORT_CURSOR;
+ else
+ {
+ SdbCursorRef xCur = xConnect->CreateCursor( SDB_KEYSET, SDB_APPENDONLY );
+ SdbCursor* pCur = &xCur;
+ DBG_ASSERT( pCur, "Cursor" );
+ pCur->Open( aFileName, TRUE );
+
+ if ( !pCur->Status().IsError() )
+ {
+ USHORT nIdx;
+ double fVal;
+ Date aDate;
+ SvNumberFormatter& rFormatter = *aDocument.GetFormatTable();
+ ScFieldEditEngine aEditEngine( aDocument.GetEditPool() );
+ for ( nRow = nFirstDataRow; nRow <= nLastRow; nRow++ )
+ {
+ pCur->AppendRow();
+ for ( nCol = nFirstCol, nIdx = 1; nCol <= nLastCol; nCol++, nIdx++ )
+ {
+ ODbVariantRef xVar = (*pCur->GetRow())[nIdx];
+ const SdbColumn* pCol = xTblCol->Column( nIdx );
+ SdbDatabaseType eType = pCol->GetType();
+ switch ( eType )
+ {
+ case SDB_DBTYPE_LONGVARCHAR :
+ {
+ ScBaseCell* pCell;
+ aDocument.GetCell( nCol, nRow, nTab, pCell );
+ if ( pCell && pCell->GetCellType() != CELLTYPE_NOTE )
+ {
+ if ( pCell->GetCellType() == CELLTYPE_EDIT )
+ { // #60761# Paragraphs erhalten
+ aEditEngine.SetText( *((ScEditCell*)pCell)->GetData() );
+ aString = aEditEngine.GetText( LINEEND_CRLF );
+ }
+ else
+ {
+ ULONG nFormat;
+ Color* pColor;
+ aDocument.GetNumberFormat( nCol, nRow, nTab, nFormat );
+ ScCellFormat::GetString( pCell, nFormat, aString, &pColor, rFormatter );
+ }
+ xVar->setString( aString );
+ }
+ else
+ xVar->setVoid();
+ }
+ break;
+ case SDB_DBTYPE_VARCHAR :
+ aDocument.GetString( nCol, nRow, nTab, aString );
+ xVar->setString( aString );
+ if ( nErr == eERR_OK && pCol->GetLength() < aString.Len() )
+ nErr = SCWARN_EXPORT_DATALOST;
+ break;
+ case SDB_DBTYPE_DATE :
+ {
+ aDocument.GetValue( nCol, nRow, nTab, fVal );
+ // #39274# zwischen 0 Wert und 0 kein Wert unterscheiden
+ BOOL bIsNull = (fVal == 0.0);
+ if ( bIsNull )
+ bIsNull = !aDocument.HasValueData( nCol, nRow, nTab );
+ if ( bIsNull )
+ {
+ xVar->setVoid(); // sonst Basic-NullDate
+ if ( nErr == eERR_OK &&
+ aDocument.HasStringData( nCol, nRow, nTab ) )
+ nErr = SCWARN_EXPORT_DATALOST;
+ }
+ else
+ {
+ // unser NullDate: 30.12.1899 / 1.1.1900 / 1.1.1904
+ aDate = *(pNumFmt->GetNullDate());
+ aDate += (long)fVal;
+ // Basic NullDate: 30.12.1899
+ //pVar->PutDate( (double)( aDate - Date(30,12,1899) ) );
+ xVar->setDate( aDate );
+ }
+ }
+ break;
+ case SDB_DBTYPE_BOOLEAN :
+ case SDB_DBTYPE_DECIMAL :
+ {
+ aDocument.GetValue( nCol, nRow, nTab, fVal );
+ if ( fVal == 0.0 && nErr == eERR_OK &&
+ aDocument.HasStringData( nCol, nRow, nTab ) )
+ nErr = SCWARN_EXPORT_DATALOST;
+ xVar->setDouble( fVal );
+ }
+ break;
+ default:
+ DBG_ERROR( "ScDocShell::SbaSdbExport: unknown FieldType" );
+ if ( nErr == eERR_OK )
+ nErr = SCWARN_EXPORT_DATALOST;
+ aDocument.GetValue( nCol, nRow, nTab, fVal );
+ xVar->setDouble( fVal );
+ }
+ }
+ pCur->UpdateRow();
+ if ( pCur->Status().IsError() )
+ { // #63824# aussagekraeftige Fehlermeldung
+ //! 2do: was ist bei Call aus Basic? generelles Problem..
+ String aMsg;
+ ScRange aRange( nFirstCol, nRow, nTab, nLastCol, nRow, nTab );
+ aRange.Format( aMsg, (SCA_VALID | SCA_TAB_3D), &aDocument );
+ aMsg += '\n';
+ const SdbStatus& rStat = pCur->Status();
+ aMsg += rStat.ErrorMessage();
+ aMsg.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "\n\n" ));
+ aMsg += rStat.ErrorInfo();
+ // STR_MSSG_DOSUBTOTALS_0 == "StarCalc"
+ BOOL bOk = MessBox( GetDialogParent(),
+ WinBits( WB_OK_CANCEL | WB_DEF_OK ),
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_0 ),
+ aMsg ).Execute();
+ if ( bOk )
+ {
+ nErr = SCWARN_EXPORT_DATALOST;
+ // Wenigstens schreiben, was geht,
+ // SdbCursor UpdateRow schreibt bei Ueberlaeufen nichts.
+ // Leider laesst sich nicht feststellen, welche Spalte
+ // den Fehler ausgeloest hat.
+ //! 2do: Sdb sollte hier einen Spaltenwert liefern
+ USHORT nCol, nIdx;
+ for ( nCol = nFirstCol, nIdx = 1; nCol <= nLastCol; nCol++, nIdx++ )
+ {
+ switch ( xTblCol->Column( nIdx )->GetType() )
+ {
+ case SDB_DBTYPE_DECIMAL :
+ //pCur->Variable( nIdx )->PutNull();
+ (*pCur->GetRow())[nIdx]->setVoid();
+ break;
+ }
+ }
+ pCur->UpdateRow();
+ if ( pCur->Status().IsError() )
+ { // Letzter Versuch: eine leere Zeile
+ for ( nCol = nFirstCol, nIdx = 1; nCol <= nLastCol; nCol++, nIdx++ )
+ {
+ //pCur->Variable( nIdx )->PutNull();
+ (*pCur->GetRow())[nIdx]->setVoid();
+ }
+ pCur->UpdateRow();
+ if ( pCur->Status().IsError() )
+ { // da geht anscheinend gar nichts mehr
+ nErr = SCERR_EXPORT_DATA;
+ break; // for ( nRow ... )
+ }
+ }
+ }
+ else
+ {
+ nErr = SCERR_EXPORT_DATA;
+ break;
+ }
+ }
+ if ( !aProgress.SetStateOnPercent( nRow - nFirstRow ) )
+ { // UserBreak
+ nErr = SCERR_EXPORT_DATA;
+ break;
+ }
+ }
+ }
+ else
+ nErr = SCERR_EXPORT_CURSOR;
+ pCur->Close();
+ }
+
+ return nErr;
+}
+
+
+BOOL ScDocShell::LoadCalc( SvStorage* pStor ) // StarCalc 3 oder 4 Datei
+{
+ SfxEventConfiguration* pConf = SFX_APP()->GetEventConfig();
+ BOOL bWarningEnabled = pConf && pConf->IsWarningForced();
+ if (bWarningEnabled)
+ aDocument.SetMacroCallMode(SC_MACROCALL_ASK); // ask before executing
+
+ BOOL bRet = TRUE;
+
+ SvStorageStreamRef aPoolStm = pStor->OpenStream( String::CreateFromAscii(pStyleName), STREAM_STD_READ );
+ SvStorageStreamRef aDocStm = pStor->OpenStream( String::CreateFromAscii(pStarCalcDoc), STREAM_STD_READ );
+ ULONG nPoolErr = aPoolStm->GetError();
+ ULONG nDocErr = aDocStm->GetError();
+
+ ScProgress* pProgress = NULL;
+ if ( eShellMode == SFX_CREATE_MODE_STANDARD && !nDocErr )
+ {
+ ULONG nCurPos = aDocStm->Tell();
+ ULONG nEndPos = aDocStm->Seek( STREAM_SEEK_TO_END );
+ aDocStm->Seek( nCurPos );
+ ULONG nRange = nEndPos - nCurPos;
+ pProgress = new ScProgress( this, ScGlobal::GetRscString(STR_LOAD_DOC), nRange );
+ }
+
+ if ( nPoolErr == ERRCODE_IO_NOTEXISTS && nDocErr == ERRCODE_IO_NOTEXISTS )
+ {
+ // leerer Storage = leeres Dokument -> wie InitNew
+
+ aDocument.MakeTable(0);
+ Size aSize( (long) ( STD_COL_WIDTH * HMM_PER_TWIPS * OLE_STD_CELLS_X ),
+ (long) ( ScGlobal::nStdRowHeight * HMM_PER_TWIPS * OLE_STD_CELLS_Y ) );
+ // hier muss auch der Start angepasst werden
+ SetVisAreaOrSize( Rectangle( Point(), aSize ), TRUE );
+ aDocument.GetStyleSheetPool()->CreateStandardStyles();
+ aDocument.UpdStlShtPtrsFrmNms();
+ }
+ else if ( !nPoolErr && !nDocErr )
+ {
+ aPoolStm->SetVersion(pStor->GetVersion());
+ aDocStm->SetVersion(pStor->GetVersion());
+
+ aDocument.Clear(); // keine Referenzen auf Pool behalten!
+
+ RemoveItem( SID_ATTR_CHAR_FONTLIST );
+ RemoveItem( ITEMID_COLOR_TABLE );
+ RemoveItem( ITEMID_GRADIENT_LIST );
+ RemoveItem( ITEMID_HATCH_LIST );
+ RemoveItem( ITEMID_BITMAP_LIST );
+ RemoveItem( ITEMID_DASH_LIST );
+ RemoveItem( ITEMID_LINEEND_LIST );
+
+ aDocument.LoadPool( *aPoolStm, FALSE ); // FALSE: RefCounts nicht laden
+ bRet = (aPoolStm->GetError() == 0);
+
+ if ( !bRet )
+ {
+ pStor->SetError( aPoolStm->GetError() );
+ DBG_ERROR( "Fehler im Pool-Stream" );
+ }
+ else if (eShellMode != SFX_CREATE_MODE_ORGANIZER)
+ {
+ // ViewOptions are not completely stored (to avoid warnings),
+ // so must be initialized from global settings.
+ //! This can be removed if a new file format loads all ViewOptions !!!
+
+ aDocument.SetViewOptions( SC_MOD()->GetViewOptions() );
+
+ ULONG nErrCode = aPoolStm->GetErrorCode();
+ const ByteString aStrKey = pStor->GetKey();
+ const BOOL bKeySet = (aStrKey.Len() > 0);
+
+ if ( bKeySet )
+ aDocStm->SetKey( aStrKey ); // Passwort setzen
+
+ bRet = aDocument.Load( *aDocStm, pProgress );
+
+ if ( !bRet && bKeySet ) // Passwort falsch
+ {
+ SetError( ERRCODE_SFX_WRONGPASSWORD );
+ pStor->SetError( ERRCODE_SFX_WRONGPASSWORD );
+ }
+
+ if ( aDocStm->GetError() )
+ {
+ // Zeile-8192-Meldung braucht nur zu kommen, wenn die Zeilen
+ // beschraenkt sind, sonst ist "falsches Format" besser
+#ifdef SC_LIMIT_ROWS
+ if ( aDocument.HasLostData() ) // zuviele Zeilen?
+ pStor->SetError( SCERR_IMPORT_8K_LIMIT );
+ else
+#endif
+ pStor->SetError( aDocStm->GetError() );
+ bRet = FALSE;
+ DBG_ERROR( "Fehler im Document-Stream" );
+ }
+ else
+ {
+ if ( !(nErrCode & ERRCODE_WARNING_MASK) )
+ nErrCode = aDocStm->GetErrorCode();
+ if ( nErrCode & ERRCODE_WARNING_MASK )
+ SetError( nErrCode );
+ }
+
+ if (bRet)
+ {
+ aDocument.UpdateFontCharSet();
+
+ UpdateLinks(); // verknuepfte Tabellen in Link-Manager
+ RemoveUnknownObjects(); // unbekannte Ole-Objekte loeschen
+ }
+ }
+ else // SFX_CREATE_MODE_ORGANIZER
+ {
+ // UpdateStdNames is called from ScDocument::Load, but is also needed
+ // if only the styles are loaded!
+ ScStyleSheetPool* pStylePool = aDocument.GetStyleSheetPool();
+ if (pStylePool)
+ pStylePool->UpdateStdNames(); // correct style names for different languages
+ }
+
+ if (bRet)
+ aDocument.GetPool()->MyLoadCompleted();
+ }
+ else
+ {
+ DBG_ERROR( "Stream-Fehler");
+ bRet = FALSE;
+ }
+
+ if (!aDocument.HasTable(0))
+ aDocument.MakeTable(0);
+
+ if (eShellMode == SFX_CREATE_MODE_EMBEDDED)
+ {
+ USHORT nVisTab = aDocument.GetVisibleTab();
+ BOOL bHasVis = aDocument.HasTable(nVisTab);
+ if ( SfxInPlaceObject::GetVisArea().IsEmpty() || !bHasVis )
+ {
+ if (!bHasVis)
+ {
+ nVisTab = 0;
+ aDocument.SetVisibleTab(nVisTab);
+ }
+ USHORT nStartCol,nStartRow;
+ aDocument.GetDataStart( nVisTab, nStartCol, nStartRow );
+ USHORT nEndCol,nEndRow;
+ aDocument.GetPrintArea( nVisTab, nEndCol, nEndRow );
+ if (nStartCol>nEndCol)
+ nStartCol = nEndCol;
+ if (nStartRow>nEndRow)
+ nStartRow = nEndRow;
+ // hier muss auch der Start angepasst werden
+ SetVisAreaOrSize( aDocument.GetMMRect( nStartCol,nStartRow, nEndCol,nEndRow, nVisTab ),
+ TRUE );
+ }
+ }
+
+ delete pProgress;
+
+ if ( eShellMode == SFX_CREATE_MODE_STANDARD && bRet )
+ {
+ if ( bWarningEnabled )
+ {
+ // If the document contains macro calls, ask now
+ // otherwise set to ALLOWED (for entering new formulas).
+ // (If document is loaded invisibly, ASK state is kept)
+
+ if ( aDocument.HasMacroCallsAfterLoad() )
+ aDocument.CheckMacroWarn();
+ else
+ aDocument.SetMacroCallMode(SC_MACROCALL_ALLOWED);
+ }
+ }
+
+ return bRet;
+}
+
+
+BOOL ScDocShell::SaveCalc( SvStorage* pStor ) // Calc 3 oder 4 Datei
+{
+ BOOL bRet = TRUE;
+
+ ScProgress* pProgress = NULL;
+ if ( eShellMode == SFX_CREATE_MODE_STANDARD )
+ {
+ ULONG nRange = aDocument.GetWeightedCount() + 1;
+ pProgress = new ScProgress( this, ScGlobal::GetRscString(STR_SAVE_DOC), nRange );
+ }
+
+ SvStorageStreamRef aPoolStm = pStor->OpenStream( String::CreateFromAscii(pStyleName) );
+ if( !aPoolStm->GetError() )
+ {
+ aPoolStm->SetVersion(pStor->GetVersion());
+ aPoolStm->SetSize(0);
+ bRet = aDocument.SavePool( *aPoolStm );
+ }
+ else
+ {
+ DBG_ERROR( "Stream Error" );
+ bRet = FALSE;
+ }
+
+ if ( bRet && eShellMode != SFX_CREATE_MODE_ORGANIZER )
+ {
+ SvStorageStreamRef aDocStm = pStor->OpenStream( String::CreateFromAscii(pStarCalcDoc) );
+ if( !aDocStm->GetError() )
+ {
+ aDocStm->SetVersion(pStor->GetVersion());
+ aDocStm->SetKey(pStor->GetKey()); // Passwort setzen
+ aDocStm->SetSize(0);
+ bRet = aDocument.Save( *aDocStm, pProgress );
+ if ( !bRet )
+ DBG_ERROR( "Fehler beim Speichern" );
+
+ if ( aDocument.HasLostData() )
+ {
+ // Warnung, dass nicht alles gespeichert wurde
+
+ if (!pStor->GetError())
+ pStor->SetError(SCWARN_EXPORT_MAXROW);
+ }
+ else if ( aDocStm->GetErrorCode() && !pStor->GetErrorCode() )
+ pStor->SetError(aDocStm->GetErrorCode());
+ else if ( OFF_APP()->GetFilterOptions()->IsLoadExcelBasicStorage() )
+ {
+ // #75497# warning if MS VBA macros are lost
+ // GetSaveWarningOfMSVBAStorage checks if sub-storage with VBA macros is present
+ // (only possible when editing Excel documents -- storage is not copied to
+ // StarCalc files)
+ ULONG nVBAWarn = SvxImportMSVBasic::GetSaveWarningOfMSVBAStorage( *this );
+ if ( nVBAWarn && !pStor->GetErrorCode() )
+ pStor->SetError( nVBAWarn );
+ }
+ }
+ else
+ {
+ DBG_ERROR( "Stream Error" );
+ bRet = FALSE;
+ }
+ }
+
+ delete pProgress;
+
+ return bRet;
+}
+
+
+BOOL __EXPORT ScDocShell::Load( SvStorage* pStor )
+{
+ DBG_ASSERT( pStor, "Nanu... Load ohne Storage?" );
+ // wait cursor is handled with progress bar
+
+ GetUndoManager()->Clear();
+
+ BOOL bRet = SfxInPlaceObject::Load( pStor );
+ if( bRet )
+ bRet = LoadCalc( pStor );
+
+ if (!bRet && !pStor->GetError())
+ pStor->SetError( SVSTREAM_FILEFORMAT_ERROR );
+
+ InitItems();
+ CalcOutputFactor();
+
+ // #73762# invalidate eventually temporary table areas
+ if ( bRet )
+ aDocument.InvalidateTableArea();
+
+ bIsEmpty = FALSE;
+ FinishedLoading( SFX_LOADED_MAINDOCUMENT | SFX_LOADED_IMAGES );
+ return bRet;
+}
+
+
+void __EXPORT ScDocShell::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType )
+{
+ if (rHint.ISA(SfxSimpleHint)) // ohne Parameter
+ {
+ ULONG nSlot = ((const SfxSimpleHint&)rHint).GetId();
+ switch ( nSlot )
+ {
+ case SFX_HINT_TITLECHANGED:
+ aDocument.SetName( SfxShell::GetName() );
+ // RegisterNewTargetNames gibts nicht mehr
+ SFX_APP()->Broadcast(SfxSimpleHint( SC_HINT_DOCNAME_CHANGED )); // Navigator
+ break;
+ }
+ }
+ else if (rHint.ISA(SfxStyleSheetHint)) // Vorlagen geaendert
+ NotifyStyle((const SfxStyleSheetHint&) rHint);
+ else if (rHint.ISA(ScAutoStyleHint))
+ {
+ //! direct call for AutoStyles
+
+ // this is called synchronously from ScInterpreter::ScStyle,
+ // modifying the document must be asynchronous
+ // (handled by AddInitial)
+
+ ScAutoStyleHint& rStlHint = (ScAutoStyleHint&)rHint;
+ ScRange aRange = rStlHint.GetRange();
+ String aName1 = rStlHint.GetStyle1();
+ String aName2 = rStlHint.GetStyle2();
+ UINT32 nTimeout = rStlHint.GetTimeout();
+
+ if (!pAutoStyleList)
+ pAutoStyleList = new ScAutoStyleList(this);
+ pAutoStyleList->AddInitial( aRange, aName1, nTimeout, aName2 );
+ }
+}
+
+ // Inhalte fuer Organizer laden
+
+
+BOOL __EXPORT ScDocShell::LoadFrom( SvStorage* pStor )
+{
+ DBG_ASSERT( pStor, "Nanu... LoadFrom ohne Storage?" );
+
+ WaitObject aWait( GetDialogParent() );
+
+ BOOL bRet = FALSE;
+ SvStorageStreamRef aPoolStm = pStor->OpenStream( String::CreateFromAscii(pStyleName), STREAM_STD_READ );
+ if ( !aPoolStm->GetError() )
+ {
+ aPoolStm->SetVersion(pStor->GetVersion());
+
+ aDocument.Clear(); // keine Referenzen auf Pool behalten!
+ RemoveItem( SID_ATTR_CHAR_FONTLIST );
+ RemoveItem( ITEMID_COLOR_TABLE );
+ RemoveItem( ITEMID_GRADIENT_LIST );
+ RemoveItem( ITEMID_HATCH_LIST );
+ RemoveItem( ITEMID_BITMAP_LIST );
+ RemoveItem( ITEMID_DASH_LIST );
+ RemoveItem( ITEMID_LINEEND_LIST );
+
+ aDocument.LoadPool( *aPoolStm, TRUE ); // TRUE: RefCounts aus Datei laden
+ bRet = (aPoolStm->GetError() == 0);
+ if ( !bRet )
+ DBG_ERROR( "Fehler im Pool-Stream" );
+
+ // UpdateStdNames is called from ScDocument::Load, but is also needed
+ // if only the styles are loaded!
+ ScStyleSheetPool* pStylePool = aDocument.GetStyleSheetPool();
+ if (pStylePool)
+ pStylePool->UpdateStdNames(); // correct style names for different languages
+
+ // Hier auf keinen Fall LoadCompleted, weil ohne Laden der Tabellen die RefCounts
+ // nicht hochgezaehlt wurden.
+ // Die Items wuerden dann geloescht, und beim Speichern wuerde Muell herauskommen.
+ // Darum die Ref-Counts aus der Datei laden (TRUE bei LoadPool).
+ // (Bug #37635#)
+
+ InitItems();
+ // CalcOutputFactor interessiert hier nicht
+ }
+
+ SfxObjectShell::LoadFrom( pStor );
+
+ return bRet;
+}
+
+
+BOOL __EXPORT ScDocShell::ConvertFrom( SfxMedium& rMedium )
+{
+ BOOL bRet = FALSE; // FALSE heisst Benutzerabbruch !!
+ // bei Fehler: Fehler am Stream setzen!!
+
+ GetUndoManager()->Clear();
+
+ // ob nach dem Import optimale Spaltenbreiten gesetzt werden sollen
+ BOOL bSetColWidths = FALSE;
+ BOOL bSetSimpleTextColWidths = FALSE;
+ BOOL bSimpleColWidth[MAXCOL+1];
+ memset( bSimpleColWidth, 1, (MAXCOL+1) * sizeof(BOOL) );
+ ScRange aColWidthRange;
+ // ob nach dem Import optimale Zeilenhoehen gesetzt werden sollen
+ BOOL bSetRowHeights = FALSE;
+
+ aConvFilterName.Erase(); //@ #BugId 54198
+
+ // Alle Filter brauchen die komplette Datei am Stueck (nicht asynchron),
+ // darum vorher per CreateFileStream dafuer sorgen, dass die komplette
+ // Datei uebertragen wird.
+ rMedium.GetPhysicalName(); //! CreateFileStream direkt rufen, wenn verfuegbar
+
+ const SfxFilter* pFilter = rMedium.GetFilter();
+ if (pFilter)
+ {
+ String aFltName = pFilter->GetFilterName();
+
+ aConvFilterName=aFltName; //@ #BugId 54198
+
+ BOOL bCalc3 = ( aFltName.EqualsAscii(pFilterSc30) );
+ BOOL bCalc4 = ( aFltName.EqualsAscii(pFilterSc40) );
+ if (!bCalc3 && !bCalc4)
+ aDocument.SetInsertingFromOtherDoc( TRUE );
+
+ if (bCalc3 || bCalc4) // Calc3/4 - "Import"
+ {
+ // wait cursor is handled with progress bar
+ SvStorage* pStor = rMedium.GetStorage();
+ if ( pStor )
+ {
+ bRet = SfxInPlaceObject::Load( pStor );
+ if( bRet )
+ bRet = LoadCalc( pStor );
+ if (!bRet && !pStor->GetError())
+ pStor->SetError( SVSTREAM_FILEFORMAT_ERROR );
+ }
+ else
+ DBG_ERROR("Calc3/4: kein Storage");
+ }
+ else if (aFltName.EqualsAscii(pFilterXML))
+ {
+ // prevent unnecessary broadcasts and updates
+ ScDocShellModificator aModificator( *this );
+
+ aDocument.SetImportingXML( TRUE );
+ SvStream* pInStream = rMedium.GetInStream();
+ if (pInStream)
+ pInStream->Seek( 0 );
+
+ ScXMLImportWrapper aImport( aDocument, rMedium );
+ bRet = aImport.Import();
+ if ( bRet )
+ {
+ // don't prevent establishing of listeners anymore
+ aDocument.SetInsertingFromOtherDoc( FALSE );
+ aDocument.CompileXML();
+ }
+ aDocument.SetImportingXML( FALSE );
+
+ bSetRowHeights = TRUE; // row height update is disabled during XML import
+ }
+ else if (aFltName.EqualsAscii(pFilterSc10))
+ {
+ SvStream* pStream = rMedium.GetInStream();
+ if (pStream)
+ {
+ FltError eError = ScImportStarCalc10( *pStream, &aDocument );
+ if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+ }
+ else
+ bRet = TRUE;
+ }
+ }
+ else if (aFltName.EqualsAscii(pFilterLotus))
+ {
+// SvStream* pStream = rMedium.GetInStream();
+// if (pStream)
+ {
+ FltError eError;
+ String sCharSet;
+ String sItStr;
+ SfxItemSet* pSet = rMedium.GetItemSet();
+ const SfxPoolItem* pItem;
+ if ( pSet && SFX_ITEM_SET ==
+ pSet->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) )
+ {
+ sItStr = ((const SfxStringItem*)pItem)->GetValue();
+ }
+
+ if (sItStr.Len() == 0)
+ {
+ String aTitle = ScGlobal::GetRscString( STR_IMPORT_LOTUS );
+ sCharSet = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "IBMPC (437)" ));
+ ScImportOptions aOptions(59, 34, sCharSet);
+ ScImportOptionsDlg* pDlg =
+ new ScImportOptionsDlg( NULL, FALSE, &aOptions, &aTitle );
+ int nDlgRet;
+ { // WarteCursor aus und wieder einschalten
+ ScWaitCursorOff aWait( GetDialogParent() );
+ nDlgRet = pDlg->Execute();
+ }
+ if ( RET_OK == nDlgRet )
+ {
+ pDlg->GetImportOptions( aOptions );
+ sCharSet = aOptions.aStrFont;
+ SfxItemSet* pItemSet = rMedium.GetItemSet();
+ if (pItemSet)
+ pItemSet->Put(SfxStringItem(SID_FILE_FILTEROPTIONS, sCharSet));
+// eError = ScImportLotus123( *pStream, &aDocument,
+// GetCharsetValue(sCharSet));
+ ScColumn::bDoubleAlloc = TRUE;
+ eError = ScImportLotus123( rMedium, &aDocument,
+ GetCharsetValue(sCharSet));
+ ScColumn::bDoubleAlloc = FALSE;
+ if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+
+ if( ( eError & ERRCODE_WARNING_MASK ) == ERRCODE_WARNING_MASK )
+ bRet = TRUE;
+ }
+ else
+ bRet = TRUE;
+ }
+ else
+ {
+ // ConvertFrom lautlos abbrechen
+ SetError( ERRCODE_IO_ABORT );
+ bRet = FALSE;
+ }
+
+ delete pDlg;
+ }
+ else
+ {
+ sCharSet = sItStr;
+// eError = ScImportLotus123( *pStream, &aDocument,
+// GetCharsetValue(sCharSet));
+ ScColumn::bDoubleAlloc = TRUE;
+ eError = ScImportLotus123( rMedium, &aDocument,
+ GetCharsetValue(sCharSet));
+ ScColumn::bDoubleAlloc = FALSE;
+ if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+
+ if( ( eError & ERRCODE_WARNING_MASK ) == ERRCODE_WARNING_MASK )
+ bRet = TRUE;
+ }
+ else
+ bRet = TRUE;
+ }
+// rMedium.CloseInStream();
+ }
+ }
+ else if ( aFltName.EqualsAscii(pFilterExcel4) || aFltName.EqualsAscii(pFilterExcel5) ||
+ aFltName.EqualsAscii(pFilterExcel95) || aFltName.EqualsAscii(pFilterExcel97) ||
+ aFltName.EqualsAscii(pFilterEx4Temp) || aFltName.EqualsAscii(pFilterEx5Temp) ||
+ aFltName.EqualsAscii(pFilterEx95Temp) || aFltName.EqualsAscii(pFilterEx97Temp) )
+ {
+ EXCIMPFORMAT eFormat = EIF_AUTO;
+ if ( aFltName.EqualsAscii(pFilterExcel4) || aFltName.EqualsAscii(pFilterEx4Temp) )
+ eFormat = EIF_BIFF_LE4;
+ else if ( aFltName.EqualsAscii(pFilterExcel5) || aFltName.EqualsAscii(pFilterExcel95) ||
+ aFltName.EqualsAscii(pFilterEx5Temp) || aFltName.EqualsAscii(pFilterEx95Temp) )
+ eFormat = EIF_BIFF5;
+ else if ( aFltName.EqualsAscii(pFilterExcel97) || aFltName.EqualsAscii(pFilterEx97Temp) )
+ eFormat = EIF_BIFF8;
+
+ MakeDrawLayer(); //! im Filter
+ ScColumn::bDoubleAlloc = TRUE;
+ FltError eError = ScImportExcel( rMedium, &aDocument, eFormat );
+ ScColumn::bDoubleAlloc = FALSE;
+ aDocument.UpdateFontCharSet();
+ if ( aDocument.IsChartListenerCollectionNeedsUpdate() )
+ aDocument.UpdateChartListenerCollection(); //! fuer alle Importe?
+
+ // #75299# all graphics objects must have names
+ aDocument.EnsureGraphicNames();
+
+ if (eError == SCWARN_IMPORT_RANGE_OVERFLOW)
+ {
+ if (!GetError())
+ SetError(eError);
+ bRet = TRUE;
+ }
+ else if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+ }
+ else
+ bRet = TRUE;
+
+ bSetRowHeights = TRUE; // #75357# optimal row heights must be updated
+ }
+ else if (aFltName.EqualsAscii(pFilterAscii))
+ {
+ SfxItemSet* pSet = rMedium.GetItemSet();
+ const SfxPoolItem* pItem;
+ ScAsciiOptions aOptions;
+ BOOL bOptInit = FALSE;
+
+ if ( pSet && SFX_ITEM_SET ==
+ pSet->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) )
+ {
+ aOptions.ReadFromString( ((const SfxStringItem*)pItem)->GetValue() );
+ bOptInit = TRUE;
+ }
+
+ if ( !bOptInit )
+ {
+ String aExt = rMedium.GetURLObject().getExtension();
+ String aPrivDatName = rMedium.GetURLObject().getName();
+ sal_Unicode cAsciiDel;
+ if (aExt.EqualsIgnoreCaseAscii("CSV"))
+ cAsciiDel = ',';
+ else
+ cAsciiDel = '\t';
+
+ SvStream* pInStream = rMedium.GetInStream();
+ if (pInStream)
+ {
+ ScImportAsciiDlg* pDlg = new ScImportAsciiDlg(
+ NULL,aPrivDatName,
+ pInStream, cAsciiDel );
+ int nDlgRet;
+ { // WarteCursor aus und wieder einschalten
+ ScWaitCursorOff aWait( GetDialogParent() );
+ nDlgRet = pDlg->Execute();
+ }
+ if ( nDlgRet == RET_OK )
+ {
+ pDlg->GetOptions( aOptions );
+
+ SfxItemSet* pItemSet = rMedium.GetItemSet();
+ if (pItemSet)
+ pItemSet->Put(SfxStringItem(SID_FILE_FILTEROPTIONS, aOptions.WriteToString() ));
+
+ bOptInit = TRUE;
+ }
+ else
+ {
+ // ConvertFrom lautlos abbrechen
+ SetError( ERRCODE_IO_ABORT );
+ bRet = FALSE;
+ }
+
+ delete pDlg;
+ }
+ else
+ DBG_ERROR( "No Stream" );
+ }
+
+ if( bOptInit ) // Jetzt gesetzt ?
+ {
+ FltError eError = eERR_OK;
+ BOOL bOverflow = FALSE;
+
+ if( ! rMedium.IsStorage() )
+ {
+ ScImportExport aImpEx( &aDocument );
+ aImpEx.SetExtOptions( aOptions );
+
+ SvStream* pInStream = rMedium.GetInStream();
+ if (pInStream)
+ {
+ pInStream->SetStreamCharSet( aOptions.GetCharSet() );
+ pInStream->Seek( 0 );
+ bRet = aImpEx.ImportStream( *pInStream );
+ eError = bRet ? eERR_OK : SCERR_IMPORT_CONNECT;
+ aDocument.StartAllListeners();
+ aDocument.SetDirty();
+ bOverflow = aImpEx.IsOverflow();
+ }
+ else
+ DBG_ERROR( "No Stream" );
+ }
+
+ if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+ }
+ else if ( bOverflow )
+ {
+ if (!GetError())
+ SetError(SCWARN_IMPORT_RANGE_OVERFLOW);
+ }
+ bSetColWidths = TRUE;
+ bSetSimpleTextColWidths = TRUE;
+ }
+ }
+ else if (aFltName.EqualsAscii(pFilterDBase))
+ {
+ String sCharSet;
+ String sItStr;
+ SfxItemSet* pSet = rMedium.GetItemSet();
+ const SfxPoolItem* pItem;
+ if ( pSet && SFX_ITEM_SET ==
+ pSet->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) )
+ {
+ sItStr = ((const SfxStringItem*)pItem)->GetValue();
+ }
+ if (sItStr.Len() == 0)
+ {
+ String aTitle = ScGlobal::GetRscString(STR_IMPORT_DBF);
+ sCharSet = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "IBMPC" ));
+ ScImportOptions aOptions;
+ aOptions.aStrFont = sCharSet;
+ aOptions.eCharSet = GetCharsetValue( sCharSet );
+ ScImportOptionsDlg* pDlg =
+ new ScImportOptionsDlg( NULL, FALSE, &aOptions, &aTitle );
+ int nDlgRet;
+ { // WarteCursor aus und wieder einschalten
+ ScWaitCursorOff aWait( GetDialogParent() );
+ nDlgRet = pDlg->Execute();
+ }
+ if ( nDlgRet == RET_OK )
+ {
+ pDlg->GetImportOptions( aOptions );
+ sCharSet = aOptions.aStrFont;
+ SfxItemSet* pItemSet = rMedium.GetItemSet();
+ if (pItemSet)
+ pItemSet->Put(SfxStringItem(SID_FILE_FILTEROPTIONS, sCharSet));
+ String aBaseName = rMedium.GetURLObject().getBase();
+ String aParString = String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "Typ=DBF;Dsn=" ));
+ aParString += rMedium.GetPhysicalName(); // Sdb kann keine URLs !!!
+ aParString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";Charset=" ));
+ aParString += sCharSet;
+ aParString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";deleted;HDR;" ));
+ ULONG eError = SbaSdbImport( aBaseName, aParString, TRUE, bSimpleColWidth );
+ if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+ bRet = ( eError == SCWARN_IMPORT_RANGE_OVERFLOW );
+ }
+ else
+ bRet = TRUE;
+ }
+ else
+ {
+ // ConvertFrom lautlos abbrechen
+ SetError( ERRCODE_IO_ABORT );
+ bRet = FALSE;
+ }
+
+ delete pDlg;
+ }
+ else
+ {
+ sCharSet = sItStr;
+ String aBaseName = rMedium.GetURLObject().getBase();
+ String aParString = String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "Typ=DBF;Dsn=" ));
+ aParString += rMedium.GetPhysicalName(); // Sdb kann keine URLs !!!
+ aParString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";Charset=" ));
+ aParString += sCharSet;
+ aParString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";deleted;HDR" ));
+ ULONG eError = SbaSdbImport( aBaseName, aParString, TRUE, bSimpleColWidth );
+ if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+ bRet = ( eError == SCWARN_IMPORT_RANGE_OVERFLOW );
+ }
+ else
+ bRet = TRUE;
+ }
+ aColWidthRange.aStart.SetRow( 1 ); // Spaltenheader nicht
+ bSetColWidths = TRUE;
+ bSetSimpleTextColWidths = TRUE;
+ // Memo-Felder fuehren zu einem bSimpleColWidth[nCol]==FALSE
+ for ( USHORT nCol=0; nCol <= MAXCOL && !bSetRowHeights; nCol++ )
+ {
+ if ( !bSimpleColWidth[nCol] )
+ bSetRowHeights = TRUE;
+ }
+ }
+ else if (aFltName.EqualsAscii(pFilterDif))
+ {
+ SvStream* pStream = rMedium.GetInStream();
+ if (pStream)
+ {
+ FltError eError;
+ String sCharSet;
+ String sItStr;
+ SfxItemSet* pSet = rMedium.GetItemSet();
+ const SfxPoolItem* pItem;
+ if ( pSet && SFX_ITEM_SET ==
+ pSet->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) )
+ {
+ sItStr = ((const SfxStringItem*)pItem)->GetValue();
+ }
+
+ if (sItStr.Len() == 0)
+ {
+ String aTitle = ScGlobal::GetRscString( STR_IMPORT_DIF );
+ sCharSet = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "ANSI" ));
+ ScImportOptions aOptions(59, 34, sCharSet);
+ ScImportOptionsDlg* pDlg =
+ new ScImportOptionsDlg( NULL, FALSE, &aOptions, &aTitle );
+ int nDlgRet;
+ { // WarteCursor aus und wieder einschalten
+ ScWaitCursorOff aWait( GetDialogParent() );
+ nDlgRet = pDlg->Execute();
+ }
+ if ( RET_OK == nDlgRet )
+ {
+ pDlg->GetImportOptions( aOptions );
+ sCharSet = aOptions.aStrFont;
+ SfxItemSet* pItemSet = rMedium.GetItemSet();
+ if (pItemSet)
+ pItemSet->Put(SfxStringItem(SID_FILE_FILTEROPTIONS, sCharSet));
+ eError = ScImportDif( *pStream, &aDocument, ScAddress(0,0,0),
+ GetCharsetValue(sCharSet));
+ if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+
+ if( ( eError & ERRCODE_WARNING_MASK ) == ERRCODE_WARNING_MASK )
+ bRet = TRUE;
+ }
+ else
+ bRet = TRUE;
+ }
+ else
+ {
+ // ConvertFrom lautlos abbrechen
+ SetError( ERRCODE_IO_ABORT );
+ bRet = FALSE;
+ }
+
+ delete pDlg;
+ }
+ else
+ {
+ sCharSet = sItStr;
+ eError = ScImportDif( *pStream, &aDocument, ScAddress(0,0,0),
+ GetCharsetValue(sCharSet));
+ if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+
+ if( ( eError & ERRCODE_WARNING_MASK ) == ERRCODE_WARNING_MASK )
+ bRet = TRUE;
+ }
+ else
+ bRet = TRUE;
+ }
+ rMedium.CloseInStream();
+ }
+ bSetColWidths = TRUE;
+ bSetSimpleTextColWidths = TRUE;
+ }
+ else if (aFltName.EqualsAscii(pFilterSylk))
+ {
+ FltError eError = SCERR_IMPORT_UNKNOWN;
+ if( !rMedium.IsStorage() )
+ {
+ ScImportExport aImpEx( &aDocument );
+
+ SvStream* pInStream = rMedium.GetInStream();
+ if (pInStream)
+ {
+ pInStream->Seek( 0 );
+ bRet = aImpEx.ImportStream( *pInStream, SOT_FORMATSTR_ID_SYLK );
+ eError = bRet ? eERR_OK : SCERR_IMPORT_UNKNOWN;
+ aDocument.StartAllListeners();
+ aDocument.SetDirty();
+ }
+ else
+ DBG_ERROR( "No Stream" );
+ }
+
+ if ( eError != eERR_OK && !GetError() )
+ SetError(eError);
+ bSetColWidths = TRUE;
+ bSetSimpleTextColWidths = TRUE;
+ }
+ else if (aFltName.EqualsAscii(pFilterRtf))
+ {
+ FltError eError = SCERR_IMPORT_UNKNOWN;
+ if( !rMedium.IsStorage() )
+ {
+ SvStream* pInStream = rMedium.GetInStream();
+ if (pInStream)
+ {
+ pInStream->Seek( 0 );
+ ScRange aRange;
+ eError = ScImportRTF( *pInStream, &aDocument, aRange );
+ if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+
+ if( ( eError & ERRCODE_WARNING_MASK ) == ERRCODE_WARNING_MASK )
+ bRet = TRUE;
+ }
+ else
+ bRet = TRUE;
+ aDocument.StartAllListeners();
+ aDocument.SetDirty();
+ bSetColWidths = TRUE;
+ bSetRowHeights = TRUE;
+ }
+ else
+ DBG_ERROR( "No Stream" );
+ }
+
+ if ( eError != eERR_OK && !GetError() )
+ SetError(eError);
+ }
+ else if (aFltName.EqualsAscii(pFilterHtml))
+ {
+ FltError eError = SCERR_IMPORT_UNKNOWN;
+ if( !rMedium.IsStorage() )
+ {
+ SvStream* pInStream = rMedium.GetInStream();
+ if (pInStream)
+ {
+ pInStream->Seek( 0 );
+ ScRange aRange;
+ // HTML macht eigenes ColWidth/RowHeight
+ CalcOutputFactor();
+ eError = ScImportHTML( *pInStream, &aDocument, aRange,
+ GetOutputFactor() );
+ if (eError != eERR_OK)
+ {
+ if (!GetError())
+ SetError(eError);
+
+ if( ( eError & ERRCODE_WARNING_MASK ) == ERRCODE_WARNING_MASK )
+ bRet = TRUE;
+ }
+ else
+ bRet = TRUE;
+ aDocument.StartAllListeners();
+ aDocument.SetDirty();
+ }
+ else
+ DBG_ERROR( "No Stream" );
+ }
+
+ if ( eError != eERR_OK && !GetError() )
+ SetError(eError);
+ }
+ else
+ {
+ if (!GetError())
+ SetError(SCERR_IMPORT_NI);
+ }
+
+ if (!bCalc3)
+ aDocument.SetInsertingFromOtherDoc( FALSE );
+ }
+ else
+ DBG_ERROR("Kein Filter bei ConvertFrom");
+
+ InitItems();
+ CalcOutputFactor();
+ if ( bRet && (bSetColWidths || bSetRowHeights) )
+ { // Spaltenbreiten/Zeilenhoehen anpassen, Basis 100% Zoom
+ Fraction aZoom( 1, 1 );
+ double nPPTX = ScGlobal::nScreenPPTX * (double) aZoom
+ / GetOutputFactor(); // Faktor ist Drucker zu Bildschirm
+ double nPPTY = ScGlobal::nScreenPPTY * (double) aZoom;
+ VirtualDevice aVirtDev;
+ // all sheets (for Excel import)
+ USHORT nTabCount = aDocument.GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ {
+ USHORT nEndCol, nEndRow;
+ aDocument.GetCellArea( nTab, nEndCol, nEndRow );
+ aColWidthRange.aEnd.SetCol( nEndCol );
+ aColWidthRange.aEnd.SetRow( nEndRow );
+ ScMarkData aMark;
+ aMark.SetMarkArea( aColWidthRange );
+ aMark.MarkToMulti();
+ // Reihenfolge erst Breite dann Hoehe ist wichtig (vergl. hund.rtf)
+ if ( bSetColWidths )
+ {
+ for ( USHORT nCol=0; nCol <= nEndCol; nCol++ )
+ {
+ USHORT nWidth = aDocument.GetOptimalColWidth(
+ nCol, nTab, &aVirtDev, nPPTX, nPPTY, aZoom, aZoom, FALSE, &aMark,
+ (bSetSimpleTextColWidths && bSimpleColWidth[nCol]) );
+ aDocument.SetColWidth( nCol, nTab,
+ nWidth + (USHORT)ScGlobal::nLastColWidthExtra );
+ }
+ }
+ if ( bSetRowHeights )
+ {
+ // nExtra must be 0
+ aDocument.SetOptimalHeight( 0, nEndRow, nTab, 0, &aVirtDev,
+ nPPTX, nPPTY, aZoom, aZoom, FALSE );
+ }
+ }
+ }
+ FinishedLoading( SFX_LOADED_MAINDOCUMENT | SFX_LOADED_IMAGES );
+
+ // #73762# invalidate eventually temporary table areas
+ if ( bRet )
+ aDocument.InvalidateTableArea();
+
+ bIsEmpty = FALSE;
+
+ return bRet;
+}
+
+
+void __EXPORT ScDocShell::HandsOff()
+{
+ SfxInPlaceObject::HandsOff();
+}
+
+
+BOOL __EXPORT ScDocShell::Save()
+{
+ // DoEnterHandler hier nicht (wegen AutoSave), ist im ExecuteSave
+
+ ScChartListenerCollection* pCharts = aDocument.GetChartListenerCollection();
+ if (pCharts)
+ pCharts->UpdateDirtyCharts(); // Charts, die noch upgedated werden muessen
+ if (pAutoStyleList)
+ pAutoStyleList->ExecuteAllNow(); // Vorlagen-Timeouts jetzt ausfuehren
+ if (eShellMode == SFX_CREATE_MODE_STANDARD)
+ SvInPlaceObject::SetVisArea( Rectangle() ); // normal bearbeitet -> keine VisArea
+
+ // #77577# save additionally XML in storage
+ if ( GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
+ AddXMLAsZipToTheStorage( *GetStorage() );
+
+ // wait cursor is handled with progress bar
+ BOOL bRet = SfxInPlaceObject::Save();
+ if( bRet )
+ bRet = SaveCalc( GetStorage() );
+ return bRet;
+}
+
+
+BOOL __EXPORT ScDocShell::SaveAs( SvStorage* pStor )
+{
+ // DoEnterHandler hier nicht (wegen AutoSave), ist im ExecuteSave
+
+ ScChartListenerCollection* pCharts = aDocument.GetChartListenerCollection();
+ if (pCharts)
+ pCharts->UpdateDirtyCharts(); // Charts, die noch upgedated werden muessen
+ if (pAutoStyleList)
+ pAutoStyleList->ExecuteAllNow(); // Vorlagen-Timeouts jetzt ausfuehren
+ if (eShellMode == SFX_CREATE_MODE_STANDARD)
+ SvInPlaceObject::SetVisArea( Rectangle() ); // normal bearbeitet -> keine VisArea
+
+ DBG_ASSERT( pStor, "Nanu... SaveAs ohne Storage?" );
+
+ // #77577# save additionally XML in storage
+ if ( GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
+ AddXMLAsZipToTheStorage( *pStor );
+
+ // wait cursor is handled with progress bar
+ BOOL bRet = SfxInPlaceObject::SaveAs( pStor );
+ if( bRet )
+ bRet = SaveCalc( pStor );
+
+ return bRet;
+}
+
+
+BOOL __EXPORT ScDocShell::IsInformationLost()
+{
+/*
+ const SfxFilter *pFilt = GetMedium()->GetFilter();
+ BOOL bRet = pFilt && pFilt->IsAlienFormat() && bNoInformLost;
+ if (bNoInformLost) // nur einmal!!
+ bNoInformLost = FALSE;
+ return bRet;
+*/
+ //!!! bei Gelegenheit ein korrekte eigene Behandlung einbauen
+
+ return SfxObjectShell::IsInformationLost();
+}
+
+
+void ScDocShell::AsciiSave( SvStream& rStream, sal_Unicode cDelim, sal_Unicode cStrDelim,
+ CharSet eCharSet)
+{
+ // could be UTF8 => ByteString, not sal_Char
+ ByteString aDelim( cDelim, eCharSet );
+
+ USHORT nStartCol = 0;
+ USHORT nStartRow = 0;
+ USHORT nTab = GetSaveTab();
+ USHORT nEndCol, nEndRow;
+ aDocument.GetCellArea( nTab, nEndCol, nEndRow );
+
+ ScProgress aProgress( this, ScGlobal::GetRscString( STR_SAVE_DOC ), nEndRow );
+
+ String aString;
+ ByteString aEmptyLine; // fuer WriteLine mit ConvertEndl
+
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ const ScViewOptions& rOpt = (pViewSh)
+ ? pViewSh->GetViewData()->GetOptions()
+ : aDocument.GetViewOptions();
+ BOOL bShowFormulas = rOpt.GetOption( VOPT_FORMULAS );
+ BOOL bTabProtect = aDocument.IsTabProtected( nTab );
+
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nNextCol = nStartCol;
+ USHORT nNextRow = nStartRow;
+ USHORT nEmptyCol, nEmptyRow;
+ SvNumberFormatter& rFormatter = *aDocument.GetFormatTable();
+
+ ScHorizontalCellIterator aIter( &aDocument, nTab, nStartCol, nStartRow,
+ nEndCol, nEndRow );
+ ScBaseCell* pCell;
+ while ( pCell = aIter.GetNext( nCol, nRow ) )
+ {
+ BOOL bProgress = FALSE; // nur bei Zeilenwechsel
+ if ( nNextRow < nRow )
+ { // leere Zeilen oder/und leere Spalten bis zum Ende der Zeile
+ bProgress = TRUE;
+ if(cDelim!=0) //@ BugId 55355
+ for ( nEmptyCol = nNextCol; nEmptyCol < nEndCol; nEmptyCol++ )
+ { // restliche Spalten der letzten Zeile
+ rStream.Write( aDelim.GetBuffer(), aDelim.Len() );
+ }
+
+ rStream.WriteLine( aEmptyLine ); // ConvertEndl
+ nNextRow++;
+ for ( nEmptyRow = nNextRow; nEmptyRow < nRow; nEmptyRow++ )
+ { // ganze leere Zeilen
+ if(cDelim!=0) //@ BugId 55355
+ for ( nEmptyCol = nStartCol; nEmptyCol < nEndCol; nEmptyCol++ )
+ {
+ rStream.Write( aDelim.GetBuffer(), aDelim.Len() );
+ }
+ rStream.WriteLine( aEmptyLine ); // ConvertEndl
+ }
+ if(cDelim!=0) //@ BugId 55355
+ for ( nEmptyCol = nStartCol; nEmptyCol < nCol; nEmptyCol++ )
+ { // leere Spalten am Anfang der Zeile
+ rStream.Write( aDelim.GetBuffer(), aDelim.Len() );
+ }
+ nNextRow = nRow;
+ }
+ else if ( nNextCol < nCol )
+ { // leere Spalten in gleicher Zeile
+ if(cDelim!=0) //@ BugId 55355
+ for ( nEmptyCol = nNextCol; nEmptyCol < nCol; nEmptyCol++ )
+ { // dazwischen liegende Spalten
+ rStream.Write( aDelim.GetBuffer(), aDelim.Len() );
+ }
+ }
+ if ( nCol == nEndCol )
+ {
+ bProgress = TRUE;
+ nNextCol = nStartCol;
+ nNextRow = nRow + 1;
+ }
+ else
+ nNextCol = nCol + 1;
+
+ CellType eType = pCell->GetCellType();
+ if ( bTabProtect )
+ {
+ const ScProtectionAttr* pProtAttr =
+ (const ScProtectionAttr*) aDocument.GetAttr(
+ nCol, nRow, nTab, ATTR_PROTECTION );
+ if ( pProtAttr->GetHideCell() ||
+ ( eType == CELLTYPE_FORMULA && bShowFormulas &&
+ pProtAttr->GetHideFormula() ) )
+ eType = CELLTYPE_NONE; // ausblenden
+ }
+ BOOL bString;
+ switch ( eType )
+ {
+ case CELLTYPE_NOTE:
+ case CELLTYPE_NONE:
+ aString.Erase();
+ bString = FALSE;
+ break;
+ case CELLTYPE_FORMULA :
+ {
+ USHORT nErrCode;
+ if ( bShowFormulas )
+ {
+ ((ScFormulaCell*)pCell)->GetFormula( aString );
+ bString = TRUE;
+ }
+ else if ( nErrCode = ((ScFormulaCell*)pCell)->GetErrCode() )
+ {
+ aString = ScGlobal::GetErrorString( nErrCode );
+ bString = TRUE;
+ }
+ else if ( ((ScFormulaCell*)pCell)->IsValue() )
+ {
+ ULONG nFormat;
+ aDocument.GetNumberFormat( nCol, nRow, nTab, nFormat );
+ ScCellFormat::GetInputString( pCell, nFormat, aString, rFormatter );
+ bString = FALSE;
+ }
+ else
+ {
+ ((ScFormulaCell*)pCell)->GetString( aString );
+ bString = TRUE;
+ }
+ }
+ break;
+ case CELLTYPE_STRING :
+ ((ScStringCell*)pCell)->GetString( aString );
+ bString = TRUE;
+ break;
+ case CELLTYPE_EDIT :
+ ((ScEditCell*)pCell)->GetString( aString );
+ bString = TRUE;
+ break;
+ case CELLTYPE_VALUE :
+ {
+ ULONG nFormat;
+ aDocument.GetNumberFormat( nCol, nRow, nTab, nFormat );
+ ScCellFormat::GetInputString( pCell, nFormat, aString, rFormatter );
+ bString = FALSE;
+ }
+ break;
+ default:
+ DBG_ERROR( "ScDocShell::AsciiSave: unknown CellType" );
+ aString.Erase();
+ bString = FALSE;
+ }
+
+ if ( bString )
+ {
+ if(cStrDelim!=0) //@ BugId 55355
+ {
+ xub_StrLen nPos = aString.Search( cStrDelim );
+ while (nPos != STRING_NOTFOUND)
+ {
+ aString.Insert(cStrDelim, nPos);
+ nPos = aString.Search(cStrDelim, nPos+2);
+ }
+ }
+ if(cStrDelim!=0) //@ BugId 55355
+ {
+ aString.Insert( cStrDelim, 0 );
+ aString += cStrDelim;
+ }
+ ByteString aByteStr( aString, eCharSet );
+ rStream.Write( aByteStr.GetBuffer(), aByteStr.Len() );
+ }
+ else
+ {
+ ByteString aByteStr( aString, eCharSet );
+ rStream.Write( aByteStr.GetBuffer(), aByteStr.Len() );
+ }
+
+ if( nCol < nEndCol )
+ {
+ if(cDelim!=0) //@ BugId 55355
+ rStream.Write( aDelim.GetBuffer(), aDelim.Len() );
+ }
+ else
+ rStream.WriteLine( aEmptyLine ); // ConvertEndl
+
+ if ( bProgress )
+ aProgress.SetStateOnPercent( nRow );
+ }
+
+ // was noch gewuenscht ist leer rausschreiben
+ if ( nNextRow <= nEndRow )
+ {
+ if(cDelim!=0) //@ BugId 55355
+ for ( nEmptyCol = nNextCol; nEmptyCol < nEndCol; nEmptyCol++ )
+ { // restliche Spalten der letzten Zeile
+ rStream.Write( aDelim.GetBuffer(), aDelim.Len() );
+ }
+ rStream.WriteLine( aEmptyLine ); // ConvertEndl
+ nNextRow++;
+ }
+ for ( nEmptyRow = nNextRow; nEmptyRow <= nEndRow; nEmptyRow++ )
+ { // ganze leere Zeilen
+ if(cDelim!=0) //@ BugId 55355
+ for ( nEmptyCol = nStartCol; nEmptyCol < nEndCol; nEmptyCol++ )
+ {
+ rStream.Write( aDelim.GetBuffer(), aDelim.Len() );
+ }
+ rStream.WriteLine( aEmptyLine ); // ConvertEndl
+ }
+}
+
+
+BOOL __EXPORT ScDocShell::ConvertTo( SfxMedium &rMed )
+{
+ DoEnterHandler(); // nicht abgeschlossene Zelle beenden
+ if (pAutoStyleList)
+ pAutoStyleList->ExecuteAllNow(); // Vorlagen-Timeouts jetzt ausfuehren
+ if (eShellMode == SFX_CREATE_MODE_STANDARD)
+ SvInPlaceObject::SetVisArea( Rectangle() ); // normal bearbeitet -> keine VisArea
+
+
+ DBG_ASSERT( rMed.GetFilter(), "Filter == 0" );
+
+ BOOL bRet = FALSE;
+ String aFltName = rMed.GetFilter()->GetFilterName();
+
+/*
+ if (aFltName.EqualsAscii(pFilterLotus))
+ {
+ SvStream* pStream = rMed.GetOutStream();
+ if (pStream)
+ {
+ FltError eError = ScExportLotus123( *pStream, &aDocument, ExpWK1,
+ CHARSET_IBMPC_437 );
+ bRet = eError == eERR_OK;
+ }
+ }
+ else
+*/
+ if ( aFltName.EqualsAscii(pFilterSc30) || aFltName.EqualsAscii(pFilterSc40) )
+ {
+ // Calc3/4 - "Export"
+ //! wird nicht gerufen (geht ueber Save/SaveAs) - wird das noch gebraucht ???????
+
+ DBG_ERROR("ConvertTo fuer altes Calc gibt's noch...");
+ SvStorage* pStor = rMed.GetStorage();
+ if ( pStor )
+ {
+ // wait cursor is handled with progress bar
+ bRet = SfxInPlaceObject::SaveAs( pStor );
+ if( bRet )
+ bRet = SaveCalc( pStor );
+
+ String aShortTypeName = String( ScResId(SCSTR_SHORT_SCDOC_NAME) ); // "Dokument"
+ if ( aFltName.EqualsAscii(pFilterSc30) )
+ {
+ // Ole-Geraffel auf 3.0-Werte setzen:
+ SvGlobalName aName( SO3_SC_CLASSID_30 );
+ UINT32 nClip = SOT_FORMATSTR_ID_STARCALC_30;
+ pStor->SetClass( aName, nClip, aShortTypeName );
+ }
+ else
+ {
+ // Ole-Geraffel auf 4.0-Werte setzen:
+ SvGlobalName aName( SO3_SC_CLASSID_40 );
+ UINT32 nClip = SOT_FORMATSTR_ID_STARCALC_40;
+ pStor->SetClass( aName, nClip, aShortTypeName );
+ }
+ }
+ }
+ else if (aFltName.EqualsAscii(pFilterXML))
+ {
+ ScXMLImportWrapper aImport( aDocument, rMed );
+ bRet = aImport.Export();
+ }
+ else if (aFltName.EqualsAscii(pFilterExcel5) || aFltName.EqualsAscii(pFilterExcel95) ||
+ aFltName.EqualsAscii(pFilterExcel97) || aFltName.EqualsAscii(pFilterEx5Temp) ||
+ aFltName.EqualsAscii(pFilterEx95Temp) || aFltName.EqualsAscii(pFilterEx97Temp))
+ {
+ WaitObject aWait( GetDialogParent() );
+ BOOL bFake97 = ( aFltName.EqualsAscii(pFilterExcel97) || aFltName.EqualsAscii(pFilterEx97Temp) );
+ FltError eError = ScExportExcel5( rMed, &aDocument, bFake97, RTL_TEXTENCODING_MS_1252 );
+
+ if (eError && !GetError())
+ SetError(eError);
+
+ if( ( eError & ERRCODE_WARNING_MASK ) == ERRCODE_WARNING_MASK )
+ bRet = TRUE;
+ else
+ bRet = eError == eERR_OK;
+ }
+ else if (aFltName.EqualsAscii(pFilterAscii))
+ {
+ SvStream* pStream = rMed.GetOutStream();
+ if (pStream)
+ {
+ String sCharSet;
+ sal_Unicode cAsciiDel;
+ sal_Unicode cStrDel;
+ String sItStr;
+ SfxItemSet* pSet = rMed.GetItemSet();
+
+ BOOL bShowDlg=FALSE;
+ BOOL bCancel=FALSE;
+
+ const SfxPoolItem* pDlgItem;
+ if (pSet&& SFX_ITEM_SET ==
+ pSet->GetItemState( SID_USE_FILTEROPTIONS, TRUE, &pDlgItem ) )
+ {
+ bShowDlg=((const SfxBoolItem*)pDlgItem)->GetValue();
+ }
+
+ const SfxPoolItem* pItem;
+ if ( pSet && SFX_ITEM_SET ==
+ pSet->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) )
+ {
+ sItStr = ((const SfxStringItem*)pItem)->GetValue();
+ }
+ if (sItStr.Len() == 0 || bShowDlg)
+ {
+ if (aDocument.GetTableCount() > 1)
+ if (!rMed.GetError())
+ rMed.SetError(SCWARN_EXPORT_ASCII);
+ sCharSet = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "SYSTEM" ));
+ cStrDel = '"';
+ String aExt = rMed.GetName().Copy(rMed.GetName().Len()-3, 3);
+ if (aExt.EqualsIgnoreCaseAscii("CSV"))
+ cAsciiDel = ',';
+ else
+ cAsciiDel = '\t';
+ ScImportOptions aOptions((USHORT)cAsciiDel, (USHORT)cStrDel, sCharSet);
+ String aTitle = ScGlobal::GetRscString( STR_EXPORT_ASCII );
+ ScImportOptionsDlg* pDlg =
+ new ScImportOptionsDlg( NULL, TRUE, &aOptions, &aTitle );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ WaitObject aWait( GetDialogParent() );
+ pDlg->GetImportOptions( aOptions );
+ cAsciiDel = (sal_Unicode) aOptions.nFieldSepCode;
+ cStrDel = (sal_Unicode) aOptions.nTextSepCode;
+ sCharSet = aOptions.aStrFont;
+ sItStr = aOptions.BuildString();
+ SfxItemSet* pItemSet = rMed.GetItemSet();
+ if (pItemSet)
+ pItemSet->Put(SfxStringItem(SID_FILE_FILTEROPTIONS, sItStr));
+ AsciiSave( *pStream, cAsciiDel, cStrDel,
+ GetCharsetValue(sCharSet));
+ }
+ else
+ {
+ bCancel = TRUE;
+ SetError( ERRCODE_IO_ABORT );
+ }
+ delete pDlg;
+ }
+ else
+ {
+ WaitObject aWait( GetDialogParent() );
+ ScImportOptions aOptions( sItStr );
+ cAsciiDel = (sal_Unicode)aOptions.nFieldSepCode;
+ cStrDel = (sal_Unicode)aOptions.nTextSepCode;
+ sCharSet = aOptions.aStrFont;
+ AsciiSave( *pStream, cAsciiDel, cStrDel, GetCharsetValue(sCharSet));
+ }
+ bRet = !bCancel;
+ }
+ }
+ else if (aFltName.EqualsAscii(pFilterDBase))
+ {
+ BOOL bCancel = FALSE;
+ String sCharSet;
+ SfxItemSet* pSet = rMed.GetItemSet();
+ const SfxPoolItem* pItem;
+ if ( pSet && SFX_ITEM_SET ==
+ pSet->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) )
+ {
+ sCharSet = ((const SfxStringItem*)pItem)->GetValue();
+
+ if ( pSet->GetItemState( SID_USE_FILTEROPTIONS, TRUE, &pItem ) == SFX_ITEM_SET &&
+ ((const SfxBoolItem*)pItem)->GetValue() )
+ {
+ sCharSet.Erase(); // "edit options" - forget old
+ }
+ }
+ if (sCharSet.Len() == 0)
+ {
+ sCharSet = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "IBMPC" ));
+ ScImportOptions aOptions(59, 34, sCharSet);
+ String aTitle = ScGlobal::GetRscString( STR_EXPORT_DBF );
+ ScImportOptionsDlg* pDlg =
+ new ScImportOptionsDlg( NULL, FALSE, &aOptions, &aTitle );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ pDlg->GetImportOptions( aOptions );
+ sCharSet = aOptions.aStrFont;
+ SfxItemSet* pItemSet = rMed.GetItemSet();
+ if (pItemSet)
+ pItemSet->Put(SfxStringItem(SID_FILE_FILTEROPTIONS, sCharSet));
+ }
+ else
+ bCancel = TRUE;
+ delete pDlg;
+ }
+
+ if ( bCancel )
+ {
+ SetError( ERRCODE_IO_ABORT );
+ }
+ else
+ {
+ WaitObject aWait( GetDialogParent() );
+ String aParString = String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( "Typ=DBF;Dsn=" ));
+ DirEntry aTmpFile( rMed.GetPhysicalName() );
+ // Sdb kann keine URLs !!!
+ // nur Pfad fuer OpenPrivateConnection!
+ aParString += aTmpFile.GetPath().GetFull();
+ // die Extension braucht's auch noch..
+ aParString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";Ext=" ));
+ aParString += aTmpFile.GetExtension();
+ // Dateiname mit vollem Pfad ist laenger als 8 Zeichen...
+ aParString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";NOFILENAMELIMIT=1" ));
+ aParString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";Charset=" ));
+ aParString += sCharSet;
+// HACK damit Sba geoffnetes TempFile ueberschreiben kann
+ rMed.CloseOutStream();
+ BOOL bHasMemo = FALSE;
+ ULONG eError = SbaSdbExport( bHasMemo, aParString, aTmpFile.GetBase() );
+ if ( eError != eERR_OK && (eError & ERRCODE_WARNING_MASK) )
+ {
+ if ( !rMed.GetError() )
+ rMed.SetError( eError );
+ eError = eERR_OK;
+ }
+ else if ( aDocument.GetTableCount() > 1 && !rMed.GetError() )
+ rMed.SetError( SCWARN_EXPORT_ASCII );
+ if ( bHasMemo )
+ aTmpFile.SetExtension( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("dbt")) );
+ if ( eError != eERR_OK )
+ {
+ if (!GetError())
+ SetError(eError);
+ if ( bHasMemo && aTmpFile.Exists() )
+ aTmpFile.Kill();
+ }
+ else
+ {
+ bRet = TRUE;
+ if ( bHasMemo )
+ {
+ SfxStringItem* pNameItem =
+ (SfxStringItem*) rMed.GetItemSet()->GetItem( SID_FILE_NAME );
+ DirEntry aDbtFile( pNameItem->GetValue() );
+ aDbtFile.SetExtension( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("dbt")) );
+ if ( aDbtFile.Exists() && aDbtFile.Kill() )
+ bRet = FALSE;
+ if ( bRet && aTmpFile.MoveTo( aDbtFile ) )
+ bRet = FALSE;
+ if ( !bRet )
+ {
+ if ( aTmpFile.Exists() )
+ aTmpFile.Kill();
+ if ( !GetError() )
+ SetError( SCERR_EXPORT_DATA );
+ }
+ }
+ }
+ }
+ }
+ else if (aFltName.EqualsAscii(pFilterDif))
+ {
+ SvStream* pStream = rMed.GetOutStream();
+ if (pStream)
+ {
+ BOOL bCancel = FALSE;
+ String sCharSet;
+ String sItStr;
+ SfxItemSet* pSet = rMed.GetItemSet();
+ const SfxPoolItem* pItem;
+ if ( pSet && SFX_ITEM_SET ==
+ pSet->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) )
+ {
+ sItStr = ((const SfxStringItem*)pItem)->GetValue();
+ }
+ if (sItStr.Len() == 0)
+ {
+ if (aDocument.GetTableCount() > 1)
+ if (!rMed.GetError())
+ rMed.SetError(SCWARN_EXPORT_ASCII);
+
+ sCharSet = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "ANSI" ));
+ ScImportOptions aOptions(59, 34, sCharSet);
+ String aTitle = ScGlobal::GetRscString( STR_EXPORT_DIF );
+ ScImportOptionsDlg* pDlg =
+ new ScImportOptionsDlg( NULL, FALSE, &aOptions, &aTitle );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ WaitObject aWait( GetDialogParent() );
+ pDlg->GetImportOptions( aOptions );
+ sCharSet = aOptions.aStrFont;
+ SfxItemSet* pItemSet = rMed.GetItemSet();
+ if (pItemSet)
+ pItemSet->Put(SfxStringItem(SID_FILE_FILTEROPTIONS, sCharSet));
+ USHORT nTab = GetSaveTab();
+ ScExportDif( *pStream, &aDocument, ScAddress(0,0,nTab), GetCharsetValue(sCharSet) );
+ }
+ else
+ {
+ bCancel = TRUE;
+ SetError( ERRCODE_IO_ABORT );
+ }
+ delete pDlg;
+ }
+ else
+ {
+ WaitObject aWait( GetDialogParent() );
+ sCharSet = sItStr;
+ ScExportDif( *pStream, &aDocument, ScAddress(0,0,0), GetCharsetValue(sCharSet) );
+ }
+ bRet = !bCancel;
+ }
+ }
+ else if (aFltName.EqualsAscii(pFilterSylk))
+ {
+ SvStream* pStream = rMed.GetOutStream();
+ if ( pStream )
+ {
+ WaitObject aWait( GetDialogParent() );
+
+ // Formeln mit exportieren?
+
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ const ScViewOptions& rOpt = (pViewSh)
+ ? pViewSh->GetViewData()->GetOptions()
+ : aDocument.GetViewOptions();
+ BOOL bShowFormulas = rOpt.GetOption( VOPT_FORMULAS );
+
+ USHORT nEndCol, nEndRow;
+ aDocument.GetCellArea( 0, nEndCol, nEndRow );
+ ScRange aRange( 0,0,0, nEndCol,nEndRow,0 );
+
+ ScImportExport aImExport( &aDocument, aRange );
+ aImExport.SetFormulas(bShowFormulas);
+ bRet = aImExport.ExportStream( *pStream, SOT_FORMATSTR_ID_SYLK );
+ }
+ }
+ else if (aFltName.EqualsAscii(pFilterHtml))
+ {
+ SvStream* pStream = rMed.GetOutStream();
+ if ( pStream )
+ {
+ WaitObject aWait( GetDialogParent() );
+ ScImportExport aImExport( &aDocument );
+ aImExport.SetStreamPath( rMed.GetName() );
+ bRet = aImExport.ExportStream( *pStream, SOT_FORMATSTR_ID_HTML );
+ }
+ }
+ else
+ {
+ if (GetError())
+ SetError(SCERR_IMPORT_NI);
+ }
+ return bRet;
+}
+
+
+BOOL __EXPORT ScDocShell::SaveCompleted( SvStorage * pStor )
+{
+ return SfxInPlaceObject::SaveCompleted( pStor );
+}
+
+
+BOOL __EXPORT ScDocShell::DoSaveCompleted( SfxMedium * pNewStor )
+{
+ BOOL bRet = SfxObjectShell::DoSaveCompleted( pNewStor );
+
+ // SC_HINT_DOC_SAVED fuer Wechsel ReadOnly -> Read/Write
+ Broadcast( SfxSimpleHint( SC_HINT_DOC_SAVED ) );
+ return bRet;
+}
+
+
+USHORT __EXPORT ScDocShell::PrepareClose( BOOL bUI, BOOL bForBrowsing )
+{
+ if(SC_MOD()->GetCurRefDlgId()>0)
+ {
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( this, TYPE(SfxTopViewFrame) );
+ if( pFrame )
+ {
+ SfxViewShell* p = pFrame->GetViewShell();
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,p);
+ if(pViewSh!=NULL)
+ {
+ Window *pWin=pViewSh->GetWindow();
+ if(pWin!=NULL) pWin->GrabFocus();
+ }
+ }
+
+ return FALSE;
+ }
+ if ( aDocument.IsInLinkUpdate() || aDocument.IsInInterpreter() )
+ {
+ ErrorMessage(STR_CLOSE_ERROR_LINK);
+ return FALSE;
+ }
+
+ DoEnterHandler();
+
+ USHORT nRet = SfxObjectShell::PrepareClose( bUI, bForBrowsing );
+ if (nRet == TRUE) // TRUE = schliessen
+ aDocument.DisableIdle(TRUE); // nicht mehr drin rumpfuschen !!!
+
+ return nRet;
+}
+
+void ScDocShell::PrepareReload()
+{
+ SfxObjectShell::PrepareReload(); // tut nichts?
+
+ // Das Disconnect von DDE-Links kann Reschedule ausloesen.
+ // Wenn die DDE-Links erst im Dokument-dtor geloescht werden, kann beim Reload
+ // aus diesem Reschedule das DDE-Link-Update fuer das neue Dokument ausgeloest
+ // werden. Dabei verklemmt sicht dann irgendwas.
+ // -> Beim Reload die DDE-Links des alten Dokuments vorher disconnecten
+
+ aDocument.DisconnectDdeLinks();
+}
+
+
+String ScDocShell::GetOwnFilterName() // static
+{
+ return String::CreateFromAscii(pFilterSc50);
+}
+
+BOOL ScDocShell::HasAutomaticTableName( const String& rFilter ) // static
+{
+ // TRUE for those filters that keep the default table name
+ // (which is language specific)
+
+ return rFilter.EqualsAscii( pFilterAscii )
+ || rFilter.EqualsAscii( pFilterLotus )
+ || rFilter.EqualsAscii( pFilterExcel4 )
+ || rFilter.EqualsAscii( pFilterEx4Temp )
+ || rFilter.EqualsAscii( pFilterDBase )
+ || rFilter.EqualsAscii( pFilterDif )
+ || rFilter.EqualsAscii( pFilterSylk )
+ || rFilter.EqualsAscii( pFilterHtml )
+ || rFilter.EqualsAscii( pFilterRtf );
+}
+
+//==================================================================
+
+#define __SCDOCSHELL_INIT \
+ aDocument ( SCDOCMODE_DOCUMENT, this ), \
+ pUndoManager ( NULL ), \
+ pFontList ( NULL ), \
+ bHeaderOn ( TRUE ), \
+ bFooterOn ( TRUE ), \
+ pDocHelper ( NULL ), \
+ pAutoStyleList ( NULL ), \
+ pOldJobSetup ( NULL ), \
+ pPaintLockData ( NULL ), \
+ nPrtToScreenFactor( 1.0 ), \
+ bIsEmpty ( TRUE ), \
+ bIsInUndo ( FALSE ), \
+ bDocumentModifiedPending( FALSE )
+
+//------------------------------------------------------------------
+
+ScDocShell::ScDocShell( const ScDocShell& rShell )
+ : SfxObjectShell( rShell.GetCreateMode() ),
+ aDdeTextFmt(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("TEXT"))),
+ bNoInformLost( TRUE ),
+ __SCDOCSHELL_INIT
+{
+ SetPool( &SC_MOD()->GetPool() );
+
+ SetShell(this);
+ eShellMode = rShell.eShellMode;
+ bIsInplace = rShell.bIsInplace;
+
+ pDocFunc = new ScDocFunc(*this);
+
+ // SetBaseModel needs exception handling
+ ScModelObj::CreateAndSet( this );
+
+ StartListening(*this);
+ SfxStyleSheetPool* pStlPool = aDocument.GetStyleSheetPool();
+ if (pStlPool)
+ StartListening(*pStlPool);
+
+ GetPageOnFromPageStyleSet( NULL, 0, bHeaderOn, bFooterOn );
+ SetHelpId( HID_SCSHELL_DOCSH );
+
+ // InitItems und CalcOutputFactor werden jetzt nach bei Load/ConvertFrom/InitNew gerufen
+}
+
+//------------------------------------------------------------------
+
+ScDocShell::ScDocShell( SfxObjectCreateMode eMode )
+ : SfxObjectShell( eMode ),
+ aDdeTextFmt(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("TEXT"))),
+ bNoInformLost( TRUE ),
+ __SCDOCSHELL_INIT
+{
+ SetPool( &SC_MOD()->GetPool() );
+
+ SetShell(this);
+ eShellMode = eMode;
+ bIsInplace = (eShellMode == SFX_CREATE_MODE_EMBEDDED);
+ // wird zurueckgesetzt, wenn nicht inplace
+
+ pDocFunc = new ScDocFunc(*this);
+
+ // SetBaseModel needs exception handling
+ ScModelObj::CreateAndSet( this );
+
+ StartListening(*this);
+ SfxStyleSheetPool* pStlPool = aDocument.GetStyleSheetPool();
+ if (pStlPool)
+ StartListening(*pStlPool);
+ SetHelpId( HID_SCSHELL_DOCSH );
+
+ // InitItems und CalcOutputFactor werden jetzt nach bei Load/ConvertFrom/InitNew gerufen
+}
+
+//------------------------------------------------------------------
+
+__EXPORT ScDocShell::~ScDocShell()
+{
+ ResetDrawObjectShell(); // #55570# falls der Drawing-Layer noch versucht, darauf zuzugreifen
+
+ SfxStyleSheetPool* pStlPool = aDocument.GetStyleSheetPool();
+ if (pStlPool)
+ EndListening(*pStlPool);
+ EndListening(*this);
+
+ delete pAutoStyleList;
+
+ SfxApplication *pSfxApp = SFX_APP();
+ if ( pSfxApp->GetDdeService() ) // DDE vor Dokument loeschen
+ pSfxApp->RemoveDdeTopic( this );
+
+ delete pDocFunc;
+ delete pUndoManager;
+ delete pFontList;
+
+ delete pPaintLockData;
+
+ delete pOldJobSetup; // gesetzt nur bei Fehler in StartJob()
+}
+
+//------------------------------------------------------------------
+
+SfxUndoManager* __EXPORT ScDocShell::GetUndoManager()
+{
+ if (!pUndoManager)
+ pUndoManager = new SfxUndoManager;
+ return pUndoManager;
+}
+
+void ScDocShell::SetModified( BOOL bModified )
+{
+ SfxInPlaceObject::SetModified( bModified );
+ Broadcast( SfxSimpleHint( SFX_HINT_DOCCHANGED ) );
+}
+
+
+void ScDocShell::SetDocumentModified( BOOL bIsModified /* = TRUE */ )
+{
+ // BroadcastUno muss auch mit pPaintLockData sofort passieren
+ //! auch bei SetDrawModified, wenn Drawing angebunden ist
+ //! dann eigener Hint???
+
+ if (bIsModified)
+ aDocument.BroadcastUno( SfxSimpleHint( SFX_HINT_DATACHANGED ) );
+
+ if ( pPaintLockData && bIsModified )
+ {
+ pPaintLockData->SetModified(); // spaeter...
+ return;
+ }
+
+ SetDrawModified( bIsModified );
+
+ if ( bIsModified )
+ {
+ if ( aDocument.IsAutoCalcShellDisabled() )
+ SetDocumentModifiedPending( TRUE );
+ else
+ {
+ SetDocumentModifiedPending( FALSE );
+ aDocument.InvalidateTableArea();
+ aDocument.Broadcast( SC_HINT_DATACHANGED, BCA_BRDCST_ALWAYS, NULL );
+ if ( aDocument.IsForcedFormulaPending() && aDocument.GetAutoCalc() )
+ aDocument.CalcFormulaTree( TRUE );
+ PostDataChanged();
+
+ // automatisches Detektiv-Update
+
+ if ( aDocument.IsDetectiveDirty() )
+ {
+ aDocument.SetDetectiveDirty(FALSE); // bei jedem Modified
+
+ ScDetOpList* pList = aDocument.GetDetOpList();
+ if ( pList && pList->Count() && !IsInUndo() &&
+ SC_MOD()->GetAppOptions().GetDetectiveAuto() )
+ {
+ GetDocFunc().DetectiveRefresh(TRUE); // TRUE = automatisch erzeugt
+ }
+ }
+ }
+ }
+}
+
+// SetDrawModified - ohne Formel-Update
+// (Drawing muss auch beim normalen SetDocumentModified upgedated werden,
+// z.B. bei Tabelle loeschen etc.)
+
+void ScDocShell::SetDrawModified( BOOL bIsModified /* = TRUE */ )
+{
+ BOOL bUpdate = ( bIsModified != IsModified() );
+
+ SetModified( bIsModified );
+
+ if (bUpdate)
+ {
+ SFX_BINDINGS().Invalidate( SID_SAVEDOC );
+ SFX_BINDINGS().Invalidate( SID_DOC_MODIFIED );
+ }
+
+ if (bIsModified)
+ {
+ if ( aDocument.IsChartListenerCollectionNeedsUpdate() )
+ {
+ aDocument.UpdateChartListenerCollection();
+ SFX_APP()->Broadcast(SfxSimpleHint( SC_HINT_DRAW_CHANGED )); // Navigator
+ }
+ SC_MOD()->AnythingChanged();
+ }
+}
+
+void ScDocShell::SetInUndo(BOOL bSet)
+{
+ bIsInUndo = bSet;
+}
+
+
+void ScDocShell::GetDocStat( ScDocStat& rDocStat )
+{
+ SfxPrinter* pPrinter = GetPrinter();
+
+ aDocument.GetDocStat( rDocStat );
+ rDocStat.nPageCount = 0;
+
+ if ( pPrinter )
+ for ( USHORT i=0; i<rDocStat.nTableCount; i++ )
+ rDocStat.nPageCount +=
+ (USHORT) ScPrintFunc( this, pPrinter, i ).GetTotalPages();
+}
+
+
+SfxDocumentInfoDialog* __EXPORT ScDocShell::CreateDocumentInfoDialog(
+ Window *pParent, const SfxItemSet &rSet )
+{
+ SfxDocumentInfoDialog* pDlg = new SfxDocumentInfoDialog( pParent, rSet );
+ ScDocShell* pDocSh = PTR_CAST(ScDocShell,SfxObjectShell::Current());
+
+ //nur mit Statistik, wenn dieses Doc auch angezeigt wird, nicht
+ //aus dem Doc-Manager
+
+ if( pDocSh == this )
+ pDlg->AddTabPage( 42,
+ ScGlobal::GetRscString( STR_DOC_STAT ),
+ ScDocStatPage::Create,
+ NULL );
+
+ return pDlg;
+}
+
+Window* ScDocShell::GetDialogParent()
+{
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if ( pViewSh )
+ return pViewSh->GetDialogParent();
+ else
+ return Application::GetDefDialogParent();
+}
+
+
+// --- ScDocShellModificator ------------------------------------------
+
+ScDocShellModificator::ScDocShellModificator( ScDocShell& rDS ) :
+ rDocShell( rDS )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ bAutoCalcShellDisabled = pDoc->IsAutoCalcShellDisabled();
+ bIdleDisabled = pDoc->IsIdleDisabled();
+ pDoc->SetAutoCalcShellDisabled( TRUE );
+ pDoc->DisableIdle( TRUE );
+}
+
+
+ScDocShellModificator::~ScDocShellModificator()
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ pDoc->SetAutoCalcShellDisabled( bAutoCalcShellDisabled );
+ if ( !bAutoCalcShellDisabled && rDocShell.IsDocumentModifiedPending() )
+ rDocShell.SetDocumentModified(); // der letzte macht das Licht aus
+ pDoc->DisableIdle( bIdleDisabled );
+}
+
+
+void ScDocShellModificator::SetDocumentModified()
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ if ( !pDoc->IsImportingXML() )
+ {
+ // AutoCalcShellDisabled temporaer restaurieren
+ BOOL bDisabled = pDoc->IsAutoCalcShellDisabled();
+ pDoc->SetAutoCalcShellDisabled( bAutoCalcShellDisabled );
+ rDocShell.SetDocumentModified();
+ pDoc->SetAutoCalcShellDisabled( bDisabled );
+ }
+ else
+ {
+ // uno broadcast is necessary for api to work
+ // -> must also be done during xml import
+ pDoc->BroadcastUno( SfxSimpleHint( SFX_HINT_DATACHANGED ) );
+ }
+}
+
+
diff --git a/sc/source/ui/docshell/docsh2.cxx b/sc/source/ui/docshell/docsh2.cxx
new file mode 100644
index 000000000000..717e413a0f74
--- /dev/null
+++ b/sc/source/ui/docshell/docsh2.cxx
@@ -0,0 +1,516 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+#define _DYNARY_HXX
+#define _SVMEMPOOL_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+#ifdef WIN
+#define _MENU_HXX
+#endif
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+#define _TABBAR_HXX
+#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+//#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX
+//#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX
+//#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX
+//#define _SFXDOCTDLG_HXX
+//#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX //*
+#define _SFXDOCMAN_HXX
+#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS //*
+//#define _SDR_NOVIEWS //*
+
+#define SI_NOITEMS //*
+//#define SI_NODRW ***
+#define _SI_NOSBXCONTROLS
+#define _VCATTR_HXX //*
+#define _VCONT_HXX
+//#define _VCSBX_HXX ***
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX ***
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX //*
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#ifndef _SVDPAGE_HXX //autogen
+#include <svx/svdpage.hxx>
+#endif
+
+#pragma hdrstop
+
+
+#include "scitems.hxx"
+#include <tools/gen.hxx>
+#include <sfx2/interno.hxx>
+#include <so3/svstor.hxx>
+#include <svtools/ctrltool.hxx>
+#include <svx/flstitem.hxx>
+#include <svx/drawitem.hxx>
+#include <sfx2/printer.hxx>
+#include <svtools/smplhint.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdoole2.hxx>
+#include <vcl/svapp.hxx>
+
+
+
+// INCLUDE ---------------------------------------------------------------
+/*
+#include <svdrwetc.hxx>
+#include <svdrwobx.hxx>
+#include <sostor.hxx>
+*/
+#include "drwlayer.hxx"
+#include "stlpool.hxx"
+#include "docsh.hxx"
+#include "docfunc.hxx"
+#include "sc.hrc"
+
+//------------------------------------------------------------------
+
+BOOL __EXPORT ScDocShell::InitNew( SvStorage * pStor )
+{
+ BOOL bRet = SfxInPlaceObject::InitNew( pStor );
+
+ aDocument.MakeTable(0);
+ // zusaetzliche Tabellen werden von der ersten View angelegt,
+ // wenn bIsEmpty dann noch TRUE ist
+
+ if ( !pStor )
+ pStor = GetStorage();
+
+ if( bRet )
+ {
+ Size aSize( (long) ( STD_COL_WIDTH * HMM_PER_TWIPS * OLE_STD_CELLS_X ),
+ (long) ( ScGlobal::nStdRowHeight * HMM_PER_TWIPS * OLE_STD_CELLS_Y ) );
+ // hier muss auch der Start angepasst werden
+ SetVisAreaOrSize( Rectangle( Point(), aSize ), TRUE );
+ }
+
+ aDocument.GetStyleSheetPool()->CreateStandardStyles();
+ aDocument.UpdStlShtPtrsFrmNms();
+ InitOptions(); // CLOOK
+
+ // SetDocumentModified ist in Load/InitNew nicht mehr erlaubt!
+
+ InitItems();
+ CalcOutputFactor();
+
+ return bRet;
+}
+
+//------------------------------------------------------------------
+
+BOOL ScDocShell::IsEmpty() const
+{
+ return bIsEmpty;
+}
+
+
+void ScDocShell::ResetEmpty()
+{
+ bIsEmpty = FALSE;
+}
+
+//------------------------------------------------------------------
+
+void ScDocShell::InitItems()
+{
+ // AllItemSet fuer Controller mit benoetigten Items fuellen:
+
+ if ( pFontList )
+ delete pFontList;
+
+ // Druck-Optionen werden beim Drucken und evtl. in GetPrinter gesetzt
+
+ pFontList = new FontList( GetPrinter(), Application::GetDefaultDevice() );
+ PutItem( SvxFontListItem( pFontList, SID_ATTR_CHAR_FONTLIST ) );
+
+ ScDrawLayer* pDrawLayer = aDocument.GetDrawLayer();
+ if (pDrawLayer)
+ {
+ PutItem( SvxColorTableItem ( pDrawLayer->GetColorTable() ) );
+ PutItem( SvxGradientListItem( pDrawLayer->GetGradientList() ) );
+ PutItem( SvxHatchListItem ( pDrawLayer->GetHatchList() ) );
+ PutItem( SvxBitmapListItem ( pDrawLayer->GetBitmapList() ) );
+ PutItem( SvxDashListItem ( pDrawLayer->GetDashList() ) );
+ PutItem( SvxLineEndListItem ( pDrawLayer->GetLineEndList() ) );
+
+ // andere Anpassungen nach dem Anlegen des DrawLayers
+
+ pDrawLayer->SetNotifyUndoActionHdl( LINK( pDocFunc, ScDocFunc, NotifyDrawUndo ) );
+
+ //if (SfxObjectShell::HasSbxObject())
+ pDrawLayer->UpdateBasic(); // DocShell-Basic in DrawPages setzen
+ }
+ else
+ {
+ // ColorTable wegen Farben fuer Tabelle
+
+ PutItem( SvxColorTableItem( aDocument.GetColorTable() ) );
+ }
+}
+
+//------------------------------------------------------------------
+
+void ScDocShell::ResetDrawObjectShell()
+{
+ ScDrawLayer* pDrawLayer = aDocument.GetDrawLayer();
+ if (pDrawLayer)
+ pDrawLayer->SetObjectShell( NULL );
+}
+
+//------------------------------------------------------------------
+
+void __EXPORT ScDocShell::Activate()
+{
+}
+
+
+void __EXPORT ScDocShell::Deactivate()
+{
+}
+
+//------------------------------------------------------------------
+
+
+ScDrawLayer* ScDocShell::MakeDrawLayer()
+{
+ ScDrawLayer* pDrawLayer = aDocument.GetDrawLayer();
+ if (!pDrawLayer)
+ {
+ aDocument.InitDrawLayer(this);
+ pDrawLayer = aDocument.GetDrawLayer();
+ InitItems(); // incl. Undo und Basic
+ Broadcast( SfxSimpleHint( SC_HINT_DRWLAYER_NEW ) );
+ }
+ return pDrawLayer;
+}
+
+//------------------------------------------------------------------
+
+
+void ScDocShell::RemoveUnknownObjects()
+{
+ // OLE-Objekte loeschen, wenn kein Drawing-Objekt dazu existiert
+ // Loeschen wie in SvPersist::CleanUp
+
+ ScDrawLayer* pDrawLayer = aDocument.GetDrawLayer();
+ const SvInfoObjectMemberList* pChildList = GetObjectList();
+
+ if( pChildList && pChildList->Count() )
+ {
+ for( ULONG i=0; i<pChildList->Count(); )
+ {
+ SvInfoObjectRef pEle = pChildList->GetObject(i);
+ String aObjName = pEle->GetObjName();
+ BOOL bFound = FALSE;
+ if ( pDrawLayer )
+ {
+ USHORT nTabCount = pDrawLayer->GetPageCount();
+ for (USHORT nTab=0; nTab<nTabCount && !bFound; nTab++)
+ {
+ SdrPage* pPage = pDrawLayer->GetPage(nTab);
+ DBG_ASSERT(pPage,"Page ?");
+ if (pPage)
+ {
+ SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject && !bFound)
+ {
+ if ( pObject->ISA(SdrOle2Obj) && pObject->GetName() == aObjName )
+ bFound = TRUE;
+ pObject = aIter.Next();
+ }
+ }
+ }
+ }
+
+ if (!bFound)
+ {
+ DBG_ASSERT(pEle->GetRefCount()==2, "Loeschen von referenziertem Storage");
+ String aStorName(pEle->GetStorageName());
+ SvPersist::Remove(pEle);
+ GetStorage()->Remove(aStorName);
+ }
+ else
+ i++;
+ }
+ }
+}
+
+
diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx
new file mode 100644
index 000000000000..6594b0e063ca
--- /dev/null
+++ b/sc/source/ui/docshell/docsh3.cxx
@@ -0,0 +1,902 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include "rangelst.hxx"
+#include <svx/flstitem.hxx>
+#include <svx/pageitem.hxx>
+#include <svx/paperinf.hxx>
+#include <svx/postattr.hxx>
+//#include <svx/postdlg.hxx>
+#include <svx/sizeitem.hxx>
+#include <offmgr/app.hxx>
+
+#ifdef ONE_LINGU
+#else
+#include <offmgr/osplcfg.hxx>
+#endif
+
+#include <sfx2/misccfg.hxx>
+#include <sfx2/printer.hxx>
+#include <svtools/ctrltool.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "docsh.hxx"
+#include "scmod.hxx"
+#include "tabvwsh.hxx"
+#include "viewdata.hxx"
+#include "docpool.hxx"
+#include "stlpool.hxx"
+#include "patattr.hxx"
+#include "uiitems.hxx"
+#include "hints.hxx"
+#include "docoptio.hxx"
+#include "viewopti.hxx"
+#include "pntlock.hxx"
+#include "chgtrack.hxx"
+#include "docfunc.hxx"
+#include "cell.hxx"
+#include "chgviset.hxx"
+#include "progress.hxx"
+#include "redcom.hxx"
+#include "sc.hrc"
+
+//------------------------------------------------------------------
+
+//
+// Redraw - Benachrichtigungen
+//
+
+
+void ScDocShell::PostEditView( ScEditEngineDefaulter* pEditEngine, const ScAddress& rCursorPos )
+{
+// Broadcast( ScEditViewHint( pEditEngine, rCursorPos ) );
+
+ // Test: nur aktive ViewShell
+
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if (pViewSh && pViewSh->GetViewData()->GetDocShell() == this)
+ {
+ ScEditViewHint aHint( pEditEngine, rCursorPos );
+ pViewSh->Notify( *this, aHint );
+ }
+}
+
+void ScDocShell::PostDataChanged()
+{
+ Broadcast( SfxSimpleHint( FID_DATACHANGED ) );
+ aDocument.ResetChanged( ScRange(0,0,0,MAXCOL,MAXROW,MAXTAB) );
+
+ SFX_APP()->Broadcast(SfxSimpleHint( FID_ANYDATACHANGED )); // Navigator
+ //! Navigator direkt benachrichtigen!
+}
+
+void ScDocShell::PostPaint( USHORT nStartCol, USHORT nStartRow, USHORT nStartTab,
+ USHORT nEndCol, USHORT nEndRow, USHORT nEndTab, USHORT nPart,
+ USHORT nExtFlags )
+{
+ if (nStartCol > MAXCOL) nStartCol = MAXCOL;
+ if (nStartRow > MAXROW) nStartRow = MAXROW;
+ if (nEndCol > MAXCOL) nEndCol = MAXCOL;
+ if (nEndRow > MAXROW) nEndRow = MAXROW;
+
+ if ( pPaintLockData )
+ {
+ //! nExtFlags ???
+ pPaintLockData->AddRange( ScRange( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab ), nPart );
+ return;
+ }
+
+
+ if (nExtFlags & SC_PF_LINES) // Platz fuer Linien berücksichtigen
+ {
+ //! Abfrage auf versteckte Spalten/Zeilen!
+ if (nStartCol>0) --nStartCol;
+ if (nEndCol<MAXCOL) ++nEndCol;
+ if (nStartRow>0) --nStartRow;
+ if (nEndRow<MAXROW) ++nEndRow;
+ }
+
+ // um zusammengefasste erweitern
+ if (nExtFlags & SC_PF_TESTMERGE)
+ aDocument.ExtendMerge( nStartCol, nStartRow, nEndCol, nEndRow, nStartTab );
+
+ if ( nStartCol != 0 || nEndCol != MAXCOL ) // gedreht -> ganze Zeilen
+ {
+ if ( aDocument.HasAttrib( 0,nStartRow,nStartTab,
+ MAXCOL,nEndRow,nEndTab, HASATTR_ROTATE ) )
+ {
+ nStartCol = 0;
+ nEndCol = MAXCOL;
+ }
+ }
+
+ Broadcast( ScPaintHint( ScRange( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab ), nPart ) );
+
+ if ( nPart & PAINT_GRID )
+ aDocument.ResetChanged( ScRange(nStartCol,nStartRow,nStartTab,nEndCol,nEndRow,nEndTab) );
+}
+
+void ScDocShell::PostPaint( const ScRange& rRange, USHORT nPart, USHORT nExtFlags )
+{
+ PostPaint( rRange.aStart.Col(), rRange.aStart.Row(), rRange.aStart.Tab(),
+ rRange.aEnd.Col(), rRange.aEnd.Row(), rRange.aEnd.Tab(),
+ nPart, nExtFlags );
+}
+
+void ScDocShell::PostPaintGridAll()
+{
+ PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID );
+}
+
+void ScDocShell::PostPaintCell( USHORT nCol, USHORT nRow, USHORT nTab )
+{
+ PostPaint( nCol,nRow,nTab, nCol,nRow,nTab, PAINT_GRID, SC_PF_TESTMERGE );
+}
+
+void ScDocShell::PostPaintExtras()
+{
+ PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_EXTRAS );
+}
+
+//------------------------------------------------------------------
+
+USHORT ScDocShell::GetLockCount() const
+{
+ if (pPaintLockData)
+ return pPaintLockData->GetLevel() + 1; // erster Lock setzt Level auf 0
+ else
+ return 0;
+}
+
+void ScDocShell::SetLockCount(USHORT nNew)
+{
+ if (nNew) // setzen
+ {
+ if ( !pPaintLockData )
+ pPaintLockData = new ScPaintLockData(0); //! Modus...
+ pPaintLockData->SetLevel(nNew-1);
+ }
+ else if (pPaintLockData) // loeschen
+ {
+ pPaintLockData->SetLevel(0); // bei Unlock sofort ausfuehren
+ UnlockPaint(); // jetzt
+ }
+}
+
+void ScDocShell::LockPaint()
+{
+ if ( pPaintLockData )
+ pPaintLockData->IncLevel();
+ else
+ pPaintLockData = new ScPaintLockData(0); //! Modus...
+}
+
+void ScDocShell::UnlockPaint()
+{
+ if ( pPaintLockData )
+ {
+ if ( pPaintLockData->GetLevel() )
+ pPaintLockData->DecLevel();
+ else
+ {
+ // Paint jetzt ausfuehren
+
+ ScPaintLockData* pPaint = pPaintLockData;
+ pPaintLockData = NULL; // nicht weitersammeln
+
+ ScRangeListRef xRangeList = pPaint->GetRangeList();
+ if (xRangeList)
+ {
+ USHORT nParts = pPaint->GetParts();
+ ULONG nCount = xRangeList->Count();
+ for ( ULONG i=0; i<nCount; i++ )
+ {
+ //! nExtFlags ???
+ ScRange aRange = *xRangeList->GetObject(i);
+ PostPaint( aRange.aStart.Col(), aRange.aStart.Row(), aRange.aStart.Tab(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(), aRange.aEnd.Tab(),
+ nParts );
+ }
+ }
+
+ if ( pPaint->GetModified() )
+ SetDocumentModified();
+
+ delete pPaint;
+ }
+ }
+ else
+ DBG_ERROR("UnlockPaint ohne LockPaint");
+}
+
+//------------------------------------------------------------------
+
+void ScDocShell::SetInplace( BOOL bInplace )
+{
+ if (bIsInplace != bInplace)
+ {
+ bIsInplace = bInplace;
+ CalcOutputFactor();
+ }
+}
+
+void ScDocShell::CalcOutputFactor()
+{
+ if (bIsInplace)
+ {
+ nPrtToScreenFactor = 1.0; // passt sonst nicht zur inaktiven Darstellung
+ return;
+ }
+
+ String aTestString = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890123456789" ));
+ long nPrinterWidth = 0;
+ long nWindowWidth = 0;
+ const ScPatternAttr* pPattern = (const ScPatternAttr*)&aDocument.GetPool()->
+ GetDefaultItem(ATTR_PATTERN);
+
+ Font aDefFont;
+ Printer* pPrinter = GetPrinter();
+ if (pPrinter)
+ {
+ MapMode aOldMode = pPrinter->GetMapMode();
+ Font aOldFont = pPrinter->GetFont();
+
+ pPrinter->SetMapMode(MAP_PIXEL);
+ pPattern->GetFont(aDefFont, pPrinter);
+ pPrinter->SetFont(aDefFont);
+ nPrinterWidth = pPrinter->PixelToLogic( Size( pPrinter->GetTextWidth(aTestString), 0 ),
+ MAP_100TH_MM ).Width();
+ pPrinter->SetFont(aOldFont);
+ pPrinter->SetMapMode(aOldMode);
+ }
+ else
+ DBG_ERROR("kein Drucker ?!?!?");
+
+ VirtualDevice aVirtWindow( *Application::GetDefaultDevice() );
+ aVirtWindow.SetMapMode(MAP_PIXEL);
+ pPattern->GetFont(aDefFont, &aVirtWindow);
+ aVirtWindow.SetFont(aDefFont);
+ nWindowWidth = aVirtWindow.GetTextWidth(aTestString);
+ nWindowWidth = (long) ( nWindowWidth / ScGlobal::nScreenPPTX * HMM_PER_TWIPS );
+
+ if (nPrinterWidth && nWindowWidth)
+ nPrtToScreenFactor = nPrinterWidth / (double) nWindowWidth;
+ else
+ {
+ DBG_ERROR("GetTextSize gibt 0 ??");
+ nPrtToScreenFactor = 1.0;
+ }
+}
+
+double ScDocShell::GetOutputFactor() const
+{
+ return nPrtToScreenFactor;
+}
+
+//---------------------------------------------------------------------
+
+void ScDocShell::InitOptions() // Fortsetzung von InitNew (CLOOKs)
+{
+ // Einstellungen aus dem SpellCheckCfg kommen in Doc- und ViewOptions
+
+#ifdef ONE_LINGU
+ USHORT nDefLang;
+ BOOL bAutoSpell, bHideAuto;
+ ScModule::GetSpellSettings( nDefLang, bAutoSpell, bHideAuto );
+#else
+ OfaCfgSpellCheck* pSpellCheckCfg = OFF_APP()->GetSpellChecker();
+#endif
+ ScModule* pScMod = SC_MOD();
+
+ ScDocOptions aDocOpt = pScMod->GetDocOptions();
+ ScViewOptions aViewOpt = pScMod->GetViewOptions();
+#ifdef ONE_LINGU
+ aDocOpt.SetAutoSpell( bAutoSpell );
+ aViewOpt.SetHideAutoSpell( bHideAuto );
+#else
+ aDocOpt.SetAutoSpell( pSpellCheckCfg->IsAutoSpell() );
+ aViewOpt.SetHideAutoSpell( pSpellCheckCfg->IsHideSpell() );
+#endif
+
+ // zweistellige Jahreszahleneingabe aus Extras->Optionen->Allgemein->Sonstiges
+ aDocOpt.SetYear2000( SFX_APP()->GetMiscConfig()->GetYear2000() );
+
+ aDocument.SetDocOptions( aDocOpt );
+ aDocument.SetViewOptions( aViewOpt );
+
+ // Druck-Optionen werden jetzt direkt vor dem Drucken gesetzt
+
+#ifdef ONE_LINGU
+ aDocument.SetLanguage( (LanguageType) nDefLang );
+#else
+ aDocument.SetLanguage( (LanguageType) pSpellCheckCfg->GetDefaultLanguage() );
+#endif
+}
+
+//---------------------------------------------------------------------
+
+Printer* ScDocShell::GetDocumentPrinter() // fuer OLE
+{
+ return aDocument.GetPrinter();
+}
+
+SfxPrinter* ScDocShell::GetPrinter()
+{
+ return aDocument.GetPrinter();
+}
+
+void ScDocShell::UpdateFontList()
+{
+ delete pFontList;
+ pFontList = new FontList( GetPrinter(), Application::GetDefaultDevice() );
+ SvxFontListItem aFontListItem( pFontList, SID_ATTR_CHAR_FONTLIST );
+ PutItem( aFontListItem );
+
+ CalcOutputFactor();
+}
+
+USHORT ScDocShell::SetPrinter( SfxPrinter* pNewPrinter, USHORT nDiffFlags )
+{
+ if (nDiffFlags & SFX_PRINTER_PRINTER)
+ {
+ if ( aDocument.GetPrinter() != pNewPrinter )
+ {
+ aDocument.SetPrinter( pNewPrinter );
+ aDocument.SetPrintOptions();
+
+ delete pFontList;
+ pFontList = new FontList( pNewPrinter, Application::GetDefaultDevice() );
+ SvxFontListItem aFontListItem( pFontList, SID_ATTR_CHAR_FONTLIST );
+ PutItem( aFontListItem );
+
+ CalcOutputFactor();
+ }
+ }
+ else if (nDiffFlags & SFX_PRINTER_JOBSETUP)
+ {
+ SfxPrinter* pOldPrinter = aDocument.GetPrinter();
+ if (pOldPrinter)
+ pOldPrinter->SetJobSetup( pNewPrinter->GetJobSetup() );
+ }
+
+ if (nDiffFlags & SFX_PRINTER_OPTIONS)
+ {
+ aDocument.SetPrintOptions(); //! aus neuem Printer ???
+ }
+
+ if (nDiffFlags & (SFX_PRINTER_CHG_ORIENTATION | SFX_PRINTER_CHG_SIZE))
+ {
+ String aStyle = aDocument.GetPageStyle( GetCurTab() );
+ ScStyleSheetPool* pStPl = aDocument.GetStyleSheetPool();
+ SfxStyleSheet* pStyleSheet = (SfxStyleSheet*)pStPl->Find(aStyle, SFX_STYLE_FAMILY_PAGE);
+ if (pStyleSheet)
+ {
+ SfxItemSet& rSet = pStyleSheet->GetItemSet();
+
+ if (nDiffFlags & SFX_PRINTER_CHG_ORIENTATION)
+ {
+ const SvxPageItem& rOldItem = (const SvxPageItem&)rSet.Get(ATTR_PAGE);
+ BOOL bWasLand = rOldItem.IsLandscape();
+ BOOL bNewLand = ( pNewPrinter->GetOrientation() == ORIENTATION_LANDSCAPE );
+ if (bNewLand != bWasLand)
+ {
+ SvxPageItem aNewItem( rOldItem );
+ aNewItem.SetLandscape( bNewLand );
+ rSet.Put( aNewItem );
+
+ // Groesse umdrehen
+ Size aOldSize = ((const SvxSizeItem&)rSet.Get(ATTR_PAGE_SIZE)).GetSize();
+ Size aNewSize(aOldSize.Height(),aOldSize.Width());
+ SvxSizeItem aNewSItem(ATTR_PAGE_SIZE,aNewSize);
+ rSet.Put( aNewSItem );
+ }
+ }
+ if (nDiffFlags & SFX_PRINTER_CHG_SIZE)
+ {
+ SvxSizeItem aPaperSizeItem( ATTR_PAGE_SIZE, SvxPaperInfo::GetPaperSize(pNewPrinter) );
+ rSet.Put( aPaperSizeItem );
+ }
+ }
+ }
+
+ PostPaint(0,0,0,MAXCOL,MAXROW,MAXTAB,PAINT_ALL);
+
+ return 0;
+}
+
+//---------------------------------------------------------------------
+
+ScChangeAction* ScDocShell::GetChangeAction( const ScAddress& rPos )
+{
+ ScChangeTrack* pTrack = GetDocument()->GetChangeTrack();
+ if (!pTrack)
+ return NULL;
+
+ USHORT nTab = rPos.Tab();
+
+ const ScChangeAction* pFound = NULL;
+ const ScChangeAction* pFoundContent = NULL;
+ const ScChangeAction* pFoundMove = NULL;
+ long nModified = 0;
+ const ScChangeAction* pAction = pTrack->GetFirst();
+ while (pAction)
+ {
+ ScChangeActionType eType = pAction->GetType();
+ //! ScViewUtil::IsActionShown( *pAction, *pSettings, *pDoc )...
+ if ( pAction->IsVisible() && eType != SC_CAT_DELETE_TABS )
+ {
+ const ScBigRange& rBig = pAction->GetBigRange();
+ if ( rBig.aStart.Tab() == nTab )
+ {
+ ScRange aRange = rBig.MakeRange();
+
+ if ( eType == SC_CAT_DELETE_ROWS )
+ aRange.aEnd.SetRow( aRange.aStart.Row() );
+ else if ( eType == SC_CAT_DELETE_COLS )
+ aRange.aEnd.SetCol( aRange.aStart.Col() );
+
+ if ( aRange.In( rPos ) )
+ {
+ pFound = pAction; // der letzte gewinnt
+ switch ( pAction->GetType() )
+ {
+ case SC_CAT_CONTENT :
+ pFoundContent = pAction;
+ break;
+ case SC_CAT_MOVE :
+ pFoundMove = pAction;
+ break;
+ }
+ ++nModified;
+ }
+ }
+ if ( pAction->GetType() == SC_CAT_MOVE )
+ {
+ ScRange aRange =
+ ((const ScChangeActionMove*)pAction)->
+ GetFromRange().MakeRange();
+ if ( aRange.In( rPos ) )
+ {
+ pFound = pAction;
+ ++nModified;
+ }
+ }
+ }
+ pAction = pAction->GetNext();
+ }
+
+ return (ScChangeAction*)pFound;
+}
+
+void ScDocShell::SetChangeComment( ScChangeAction* pAction, const String& rComment )
+{
+ if (pAction)
+ {
+ pAction->SetComment( rComment );
+ //! Undo ???
+ SetDocumentModified();
+
+ // Dialog-Notify
+ ScChangeTrack* pTrack = GetDocument()->GetChangeTrack();
+ if (pTrack)
+ {
+ ULONG nNumber = pAction->GetActionNumber();
+ pTrack->NotifyModified( SC_CTM_CHANGE, nNumber, nNumber );
+ }
+ }
+}
+
+void ScDocShell::ExecuteChangeCommentDialog( ScChangeAction* pAction, Window* pParent,BOOL bPrevNext)
+{
+ if (!pAction) return; // ohne Aktion ist nichts..
+
+ String aComment = pAction->GetComment();
+ String aAuthor = pAction->GetUser();
+
+ International* pIntl = ScGlobal::pScInternational;
+ DateTime aDT = pAction->GetDateTime();
+ String aDate = pIntl->GetDate( aDT );
+ aDate += ' ';
+ aDate += pIntl->GetTime( aDT, FALSE, FALSE );
+
+ SfxItemSet aSet( GetPool(),
+ SID_ATTR_POSTIT_AUTHOR, SID_ATTR_POSTIT_AUTHOR,
+ SID_ATTR_POSTIT_DATE, SID_ATTR_POSTIT_DATE,
+ SID_ATTR_POSTIT_TEXT, SID_ATTR_POSTIT_TEXT,
+ 0 );
+
+ aSet.Put( SvxPostItTextItem ( aComment, SID_ATTR_POSTIT_TEXT ) );
+ aSet.Put( SvxPostItAuthorItem( aAuthor, SID_ATTR_POSTIT_AUTHOR ) );
+ aSet.Put( SvxPostItDateItem ( aDate, SID_ATTR_POSTIT_DATE ) );
+
+ ScRedComDialog* pDlg = new ScRedComDialog( pParent, aSet,this,pAction,bPrevNext);
+
+ pDlg->Execute();
+
+ delete pDlg;
+}
+
+//---------------------------------------------------------------------
+
+void ScDocShell::CompareDocument( ScDocument& rOtherDoc )
+{
+ ScChangeTrack* pTrack = aDocument.GetChangeTrack();
+ if ( pTrack && pTrack->GetFirst() )
+ {
+ //! Changes vorhanden -> Nachfrage ob geloescht werden soll
+ }
+
+ aDocument.EndChangeTracking();
+ aDocument.StartChangeTracking();
+
+ aDocument.CompareDocument( rOtherDoc );
+
+ PostPaintGridAll();
+ SetDocumentModified();
+}
+
+//---------------------------------------------------------------------
+//
+// Merge (Aenderungen zusammenfuehren)
+//
+//---------------------------------------------------------------------
+
+BOOL lcl_Equal( const ScChangeAction* pA, const ScChangeAction* pB )
+{
+ return pA && pB &&
+ pA->GetUser() == pB->GetUser() &&
+ pA->GetType() == pB->GetType() &&
+ pA->GetActionNumber() == pB->GetActionNumber() &&
+ pA->GetDateTimeUTC() == pB->GetDateTimeUTC();
+ // State nicht vergleichen, falls eine alte Aenderung akzeptiert wurde
+}
+
+void ScDocShell::MergeDocument( ScDocument& rOtherDoc )
+{
+ ScTabViewShell* pViewSh = GetBestViewShell(); //! Funktionen an die DocShell
+ if (!pViewSh)
+ return;
+
+ ScChangeTrack* pSourceTrack = rOtherDoc.GetChangeTrack();
+ if (!pSourceTrack)
+ return; //! nichts zu tun - Fehlermeldung?
+
+ ScChangeTrack* pThisTrack = aDocument.GetChangeTrack();
+ if ( !pThisTrack )
+ { // anschalten
+ aDocument.StartChangeTracking();
+ pThisTrack = aDocument.GetChangeTrack();
+ DBG_ASSERT(pThisTrack,"ChangeTracking nicht angeschaltet?");
+ // #51138# visuelles RedLining einschalten
+ ScChangeViewSettings aChangeViewSet;
+ aChangeViewSet.SetShowChanges(TRUE);
+ aDocument.SetChangeViewSettings(aChangeViewSet);
+ }
+
+
+ // gemeinsame Ausgangsposition suchen
+ ULONG nFirstNewNumber = 0;
+ const ScChangeAction* pSourceAction = pSourceTrack->GetFirst();
+ const ScChangeAction* pThisAction = pThisTrack->GetFirst();
+ while ( lcl_Equal( pSourceAction, pThisAction ) ) // gleiche Aktionen ueberspringen
+ {
+ nFirstNewNumber = pSourceAction->GetActionNumber() + 1;
+ pSourceAction = pSourceAction->GetNext();
+ pThisAction = pThisAction->GetNext();
+ }
+ // pSourceAction und pThisAction zeigen jetzt auf die ersten "eigenen" Aktionen
+ // Die gemeinsamen Aktionen davor interessieren ueberhaupt nicht
+
+ //! Abfrage, ob die Dokumente vor dem Change-Tracking gleich waren !!!
+
+
+ const ScChangeAction* pFirstMergeAction = pSourceAction;
+ // MergeChangeData aus den folgenden Aktionen erzeugen
+ ULONG nNewActionCount = 0;
+ const ScChangeAction* pCount = pSourceAction;
+ while ( pCount )
+ {
+ if ( !ScChangeTrack::MergeIgnore( *pCount, nFirstNewNumber ) )
+ ++nNewActionCount;
+ pCount = pCount->GetNext();
+ }
+ if (!nNewActionCount)
+ return; //! nichts zu tun - Fehlermeldung?
+ // ab hier kein return mehr
+
+ ScProgress aProgress( this,
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("...")),
+ nNewActionCount );
+
+ ULONG nLastMergeAction = pSourceTrack->GetLast()->GetActionNumber();
+ // UpdateReference-Undo, gueltige Referenzen fuer den letzten gemeinsamen Zustand
+ pSourceTrack->MergePrepare( (ScChangeAction*) pFirstMergeAction );
+
+ // MergeChangeData an alle noch folgenden Aktionen in diesem Dokument anpassen
+ // -> Referenzen gueltig fuer dieses Dokument
+ while ( pThisAction )
+ {
+ ScChangeActionType eType = pThisAction->GetType();
+ switch ( eType )
+ {
+ case SC_CAT_INSERT_COLS :
+ case SC_CAT_INSERT_ROWS :
+ case SC_CAT_INSERT_TABS :
+ pSourceTrack->AppendInsert( pThisAction->GetBigRange().MakeRange() );
+ break;
+ case SC_CAT_DELETE_COLS :
+ case SC_CAT_DELETE_ROWS :
+ case SC_CAT_DELETE_TABS :
+ {
+ const ScChangeActionDel* pDel = (const ScChangeActionDel*) pThisAction;
+ if ( pDel->IsTopDelete() && !pDel->IsTabDeleteCol() )
+ { // deleted Table enthaelt deleted Cols, die nicht
+ ULONG nStart, nEnd;
+ pSourceTrack->AppendDeleteRange(
+ pDel->GetOverAllRange().MakeRange(), NULL, nStart, nEnd );
+ }
+ }
+ break;
+ case SC_CAT_MOVE :
+ {
+ const ScChangeActionMove* pMove = (const ScChangeActionMove*) pThisAction;
+ pSourceTrack->AppendMove( pMove->GetFromRange().MakeRange(),
+ pMove->GetBigRange().MakeRange(), NULL );
+ }
+ break;
+ }
+ pThisAction = pThisAction->GetNext();
+ }
+
+
+ // MergeChangeData in das aktuelle Dokument uebernehmen
+ BOOL bHasRejected = FALSE;
+ String aOldUser = pThisTrack->GetUser();
+ pThisTrack->SetUseFixDateTime( TRUE );
+ ScMarkData& rMarkData = pViewSh->GetViewData()->GetMarkData();
+ ScMarkData aOldMarkData( rMarkData );
+ pSourceAction = pFirstMergeAction;
+ while ( pSourceAction && pSourceAction->GetActionNumber() <= nLastMergeAction )
+ {
+ if ( !ScChangeTrack::MergeIgnore( *pSourceAction, nFirstNewNumber ) )
+ {
+ ScChangeActionType eSourceType = pSourceAction->GetType();
+ if ( pSourceAction->IsDeletedIn() )
+ {
+ //! muss hier noch festgestellt werden, ob wirklich in
+ //! _diesem_ Dokument geloescht?
+
+ // liegt in einem Bereich, der in diesem Dokument geloescht wurde
+ // -> wird weggelassen
+ //! ??? Loesch-Aktion rueckgaengig machen ???
+ //! ??? Aktion irgendwo anders speichern ???
+#ifndef PRODUCT
+ String aValue;
+ if ( eSourceType == SC_CAT_CONTENT )
+ ((const ScChangeActionContent*)pSourceAction)->GetNewString( aValue );
+ ByteString aError( aValue, gsl_getSystemTextEncoding() );
+ aError += " weggelassen";
+ DBG_ERROR( aError.GetBuffer() );
+#endif
+ }
+ else
+ {
+ //! Datum/Autor/Kommentar der Source-Aktion uebernehmen!
+
+ pThisTrack->SetUser( pSourceAction->GetUser() );
+ pThisTrack->SetFixDateTimeUTC( pSourceAction->GetDateTimeUTC() );
+ ULONG nNextAction = pThisTrack->GetActionMax() + 1;
+
+ ULONG nReject = pSourceAction->GetRejectAction();
+ if (nReject)
+ {
+ // alte Aktion (aus den gemeinsamen) ablehnen
+ ScChangeAction* pOldAction = pThisTrack->GetAction( nReject );
+ if (pOldAction && pOldAction->GetState() == SC_CAS_VIRGIN)
+ {
+ //! was passiert bei Aktionen, die in diesem Dokument accepted worden sind???
+ //! Fehlermeldung oder was???
+ //! oder Reject-Aenderung normal ausfuehren
+
+ pThisTrack->Reject(pOldAction);
+ bHasRejected = TRUE; // fuer Paint
+ }
+ }
+ else
+ {
+ // normal ausfuehren
+ ScRange aSourceRange = pSourceAction->GetBigRange().MakeRange();
+ rMarkData.SelectOneTable( aSourceRange.aStart.Tab() );
+ switch ( eSourceType )
+ {
+ case SC_CAT_CONTENT:
+ {
+ //! Test, ob es ganz unten im Dokument war, dann automatisches
+ //! Zeilen-Einfuegen ???
+
+ DBG_ASSERT( aSourceRange.aStart == aSourceRange.aEnd, "huch?" );
+ ScAddress aPos = aSourceRange.aStart;
+ String aValue;
+ ((const ScChangeActionContent*)pSourceAction)->GetNewString( aValue );
+ BYTE eMatrix = MM_NONE;
+ const ScBaseCell* pCell = ((const ScChangeActionContent*)pSourceAction)->GetNewCell();
+ if ( pCell->GetCellType() == CELLTYPE_FORMULA )
+ eMatrix = ((const ScFormulaCell*)pCell)->GetMatrixFlag();
+ switch ( eMatrix )
+ {
+ case MM_NONE :
+ pViewSh->EnterData( aPos.Col(), aPos.Row(), aPos.Tab(), aValue );
+ break;
+ case MM_FORMULA :
+ {
+ USHORT nCols, nRows;
+ ((const ScFormulaCell*)pCell)->GetMatColsRows( nCols, nRows );
+ aSourceRange.aEnd.SetCol( aPos.Col() + nCols - 1 );
+ aSourceRange.aEnd.SetRow( aPos.Row() + nRows - 1 );
+ aValue.Erase( 0, 1 );
+ aValue.Erase( aValue.Len()-1, 1 );
+ GetDocFunc().EnterMatrix( aSourceRange, NULL, aValue, FALSE );
+ }
+ break;
+ case MM_REFERENCE : // do nothing
+ break;
+ case MM_FAKE :
+ DBG_WARNING( "MergeDocument: MatrixFlag MM_FAKE" );
+ pViewSh->EnterData( aPos.Col(), aPos.Row(), aPos.Tab(), aValue );
+ break;
+ default:
+ DBG_ERROR( "MergeDocument: unknown MatrixFlag" );
+ }
+ }
+ break;
+ case SC_CAT_INSERT_TABS :
+ {
+ String aName;
+ aDocument.CreateValidTabName( aName );
+ GetDocFunc().InsertTable( aSourceRange.aStart.Tab(), aName, TRUE, FALSE );
+ }
+ break;
+ case SC_CAT_INSERT_ROWS:
+ GetDocFunc().InsertCells( aSourceRange, INS_INSROWS, TRUE, FALSE );
+ break;
+ case SC_CAT_INSERT_COLS:
+ GetDocFunc().InsertCells( aSourceRange, INS_INSCOLS, TRUE, FALSE );
+ break;
+ case SC_CAT_DELETE_TABS :
+ GetDocFunc().DeleteTable( aSourceRange.aStart.Tab(), TRUE, FALSE );
+ break;
+ case SC_CAT_DELETE_ROWS:
+ {
+ const ScChangeActionDel* pDel = (const ScChangeActionDel*) pSourceAction;
+ if ( pDel->IsTopDelete() )
+ {
+ aSourceRange = pDel->GetOverAllRange().MakeRange();
+ GetDocFunc().DeleteCells( aSourceRange, DEL_DELROWS, TRUE, FALSE );
+ }
+ }
+ break;
+ case SC_CAT_DELETE_COLS:
+ {
+ const ScChangeActionDel* pDel = (const ScChangeActionDel*) pSourceAction;
+ if ( pDel->IsTopDelete() && !pDel->IsTabDeleteCol() )
+ { // deleted Table enthaelt deleted Cols, die nicht
+ aSourceRange = pDel->GetOverAllRange().MakeRange();
+ GetDocFunc().DeleteCells( aSourceRange, DEL_DELCOLS, TRUE, FALSE );
+ }
+ }
+ break;
+ case SC_CAT_MOVE :
+ {
+ const ScChangeActionMove* pMove = (const ScChangeActionMove*) pSourceAction;
+ ScRange aFromRange( pMove->GetFromRange().MakeRange() );
+ GetDocFunc().MoveBlock( aFromRange,
+ aSourceRange.aStart, TRUE, TRUE, FALSE, FALSE );
+ }
+ break;
+ }
+ }
+ const String& rComment = pSourceAction->GetComment();
+ if ( rComment.Len() )
+ {
+ ScChangeAction* pAct = pThisTrack->GetLast();
+ if ( pAct && pAct->GetActionNumber() >= nNextAction )
+ pAct->SetComment( rComment );
+#ifndef PRODUCT
+ else
+ DBG_ERROR( "MergeDocument: wohin mit dem Kommentar?!?" );
+#endif
+ }
+
+ // Referenzen anpassen
+ pSourceTrack->MergeOwn( (ScChangeAction*) pSourceAction, nFirstNewNumber );
+ }
+ aProgress.SetStateCountDown( --nNewActionCount );
+ }
+ pSourceAction = pSourceAction->GetNext();
+ }
+ rMarkData = aOldMarkData;
+ pThisTrack->SetUser(aOldUser);
+ pThisTrack->SetUseFixDateTime( FALSE );
+
+ pSourceTrack->Clear(); //! der ist jetzt verhunzt
+
+ if (bHasRejected)
+ PostPaintGridAll(); // Reject() paintet nicht selber
+}
+
+
+
+
+
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
new file mode 100644
index 000000000000..0e06c13ebea1
--- /dev/null
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -0,0 +1,2004 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+// INCLUDE ---------------------------------------------------------------
+#if STLPORT_VERSION>=321
+#include <math.h> // prevent conflict between exception and std::exception
+#endif
+
+#include <sdb/sdbenv.hxx>
+#include "scitems.hxx"
+#include <sfx2/bindings.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/docfilt.hxx>
+#include <svtools/ehdl.hxx>
+#include <svtools/sbxcore.hxx>
+#include <sfx2/printer.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/sfxecode.hxx>
+#include <sfx2/topfrm.hxx>
+#include <offmgr/ofaitem.hxx>
+#include <offmgr/sbaitems.hxx>
+#include <sot/formats.hxx>
+#include <sdb/sdbstat.hxx>
+#include <svtools/printdlg.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/waitobj.hxx>
+#include <tools/multisel.hxx>
+#include <svx/drawitem.hxx>
+#include <svx/fmview.hxx>
+#include <svx/pageitem.hxx>
+#include <sch/schdll.hxx>
+#ifndef _SVX_FMSHELL_HXX //autogen
+#include <svx/fmshell.hxx>
+#endif
+
+
+#include "docsh.hxx"
+#include "docfunc.hxx"
+#include "sc.hrc"
+#include "stlsheet.hxx"
+#include "stlpool.hxx"
+#include "appoptio.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "styledlg.hxx"
+#include "hfedtdlg.hxx"
+#include "dbdocfun.hxx"
+#include "printfun.hxx" // DrawToDev
+#include "viewdata.hxx"
+#include "tabvwsh.hxx"
+#include "dataobj.hxx"
+#include "impex.hxx"
+#include "attrib.hxx"
+#include "corodlg.hxx"
+#include "undodat.hxx"
+#include "autostyl.hxx"
+#include "undocell.hxx"
+#include "undotab.hxx"
+#include "inputhdl.hxx"
+#include "dbcolect.hxx"
+#include "servobj.hxx"
+#include "rangenam.hxx"
+#include "scmod.hxx"
+#include "scendlg.hxx"
+#include "chgviset.hxx"
+#include "reffact.hxx"
+#include "chartlis.hxx"
+#include "waitoff.hxx"
+#include "tablink.hxx" // ScDocumentLoader statics
+#include "drwlayer.hxx"
+#include "docoptio.hxx"
+#include "undostyl.hxx"
+
+//------------------------------------------------------------------
+
+#define IS_SHARE_HEADER(set) \
+ ((SfxBoolItem&) \
+ ((SvxSetItem&)(set).Get(ATTR_PAGE_HEADERSET)).GetItemSet(). \
+ Get(ATTR_PAGE_SHARED)).GetValue()
+
+#define IS_SHARE_FOOTER(set) \
+ ((SfxBoolItem&) \
+ ((SvxSetItem&)(set).Get(ATTR_PAGE_FOOTERSET)).GetItemSet(). \
+ Get(ATTR_PAGE_SHARED)).GetValue()
+
+#define IS_AVAILABLE(WhichId,ppItem) \
+ (pReqArgs->GetItemState((WhichId), TRUE, ppItem ) == SFX_ITEM_SET)
+
+#define SC_PREVIEW_SIZE_X 10000
+#define SC_PREVIEW_SIZE_Y 12400
+
+
+//------------------------------------------------------------------
+
+Window* lcl_GetDialogParent()
+{
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ return pViewSh ? pViewSh->GetDialogParent() : Application::GetDefDialogParent();
+}
+
+//------------------------------------------------------------------
+
+BOOL ScDocShell::GetTabParam( const SfxItemSet* pArgs, USHORT nId, USHORT& rTab )
+{
+ BOOL bOk = TRUE;
+ rTab = 0; // zur Sicherheit...
+
+ const SfxPoolItem* pTabItem;
+ if ( pArgs && pArgs->GetItemState( nId, TRUE, &pTabItem ) == SFX_ITEM_SET )
+ {
+ // Parameter sind 1-based !!!
+ USHORT nItemTab = ((const SfxUInt16Item*)pTabItem)->GetValue();
+ USHORT nTabCount = aDocument.GetTableCount();
+ if (nItemTab>0 && nItemTab<=nTabCount)
+ rTab = nItemTab-1;
+ else
+ bOk = FALSE;
+ }
+ else // nichts angegeben -> sichtbare
+ {
+ ScTabViewShell* pVisibleSh = GetBestViewShell();
+ if ( pVisibleSh )
+ rTab = pVisibleSh->GetViewData()->GetTabNo();
+ else
+ bOk = FALSE;
+ }
+
+ return bOk;
+}
+
+//------------------------------------------------------------------
+
+void ScDocShell::Execute( SfxRequest& rReq )
+{
+ // SID_SC_RANGE (Range),
+ // SID_SC_CELLTEXT (CellText),
+ // SID_SC_CELLS (Cells) - removed (old Basic)
+
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ USHORT nSlot = rReq.GetSlot();
+ switch ( nSlot )
+ {
+ case SID_SC_SETTEXT:
+ {
+ const SfxPoolItem* pColItem;
+ const SfxPoolItem* pRowItem;
+ const SfxPoolItem* pTabItem;
+ const SfxPoolItem* pTextItem;
+ if( pReqArgs && IS_AVAILABLE( FN_PARAM_1, &pColItem ) &&
+ IS_AVAILABLE( FN_PARAM_2, &pRowItem ) &&
+ IS_AVAILABLE( FN_PARAM_3, &pTabItem ) &&
+ IS_AVAILABLE( SID_SC_SETTEXT, &pTextItem ) )
+ {
+ // Parameter sind 1-based !!!
+ USHORT nCol = ((SfxUInt16Item*)pColItem)->GetValue() - 1;
+ USHORT nRow = ((SfxUInt16Item*)pRowItem)->GetValue() - 1;
+ USHORT nTab = ((SfxUInt16Item*)pTabItem)->GetValue() - 1;
+
+ USHORT nTabCount = aDocument.GetTableCount();
+ if ( nCol <= MAXCOL && nRow <= MAXROW && nTab < nTabCount )
+ {
+ if ( aDocument.IsBlockEditable( nTab, nCol,nRow, nCol, nRow ) )
+ {
+ String aVal = ((const SfxStringItem*)pTextItem)->GetValue();
+ aDocument.SetString( nCol, nRow, nTab, aVal );
+
+ PostPaintCell( nCol, nRow, nTab );
+ SetDocumentModified();
+
+ rReq.Done();
+ break;
+ }
+ else // geschuetzte Zelle
+ {
+ SbxBase::SetError( SbxERR_BAD_PARAMETER ); //! welchen Fehler ?
+ break;
+ }
+ }
+ }
+ SbxBase::SetError( SbxERR_NO_OBJECT );
+ }
+ break;
+
+
+ // SID_SBA_QRY_CHANGETARGET gibts nicht mehr - auch in idl raus
+
+ case SID_SBA_IMPORT:
+ {
+ if (pReqArgs)
+ {
+ const sal_Unicode cSbaSep = 11; // Trennzeichen
+
+ const SfxPoolItem* pItem;
+ String sSbaData, sTarget;
+ if ( pReqArgs->GetItemState( nSlot, TRUE, &pItem ) == SFX_ITEM_SET )
+ sSbaData = ((const SfxStringItem*)pItem)->GetValue();
+ if ( pReqArgs->GetItemState( FN_PARAM_1, TRUE, &pItem ) == SFX_ITEM_SET )
+ sTarget = ((const SfxStringItem*)pItem)->GetValue();
+
+ BOOL bIsNewArea = TRUE; // Default TRUE (keine Nachfrage)
+ if ( pReqArgs->GetItemState( FN_PARAM_2, TRUE, &pItem ) == SFX_ITEM_SET )
+ bIsNewArea = ((const SfxBoolItem*)pItem)->GetValue();
+
+ String sDBName = sSbaData.GetToken(0,cSbaSep); // Datenbankname
+ String sDBTable = sSbaData.GetToken(1,cSbaSep); // Tabellen- oder Query-Name
+ String sTabFlag = sSbaData.GetToken(2,cSbaSep);
+ String sDBSql = sSbaData.GetToken(3,cSbaSep); // SQL im Klartext
+
+ BYTE nType = dbTable; // "0" oder "1"
+ if ( sTabFlag.EqualsAscii("0") ) // "0" = Query, "1" = Table (Default)
+ nType = dbQuery;
+
+ SbaSelectionListRef pSelectionList = new SbaSelectionList;
+ xub_StrLen nCount = sSbaData.GetTokenCount(cSbaSep);
+
+ for (xub_StrLen i = 4; i < nCount; i++)
+ {
+ String aSelItem = sSbaData.GetToken(i,cSbaSep);
+ if (aSelItem.Len())
+ {
+ void *pPtr = (void*)aSelItem.ToInt32();
+ pSelectionList->Insert( pPtr, LIST_APPEND );
+ }
+ }
+
+ // bei Bedarf neuen Datenbankbereich anlegen
+ BOOL bMakeArea = FALSE;
+ if (bIsNewArea)
+ {
+ ScDBCollection* pDBColl = aDocument.GetDBCollection();
+ USHORT nDummy;
+ if ( !pDBColl || !pDBColl->SearchName( sTarget, nDummy ) )
+ {
+ ScAddress aPos;
+ if ( aPos.Parse( sTarget, &aDocument ) & SCA_VALID )
+ {
+ bMakeArea = TRUE;
+ String aStrImport = ScGlobal::GetRscString( STR_UNDO_IMPORTDATA );
+ GetUndoManager()->EnterListAction( aStrImport, aStrImport );
+
+ ScDBData* pDBData = GetDBData( ScRange(aPos), SC_DB_IMPORT, FALSE );
+ DBG_ASSERT(pDBData, "kann DB-Daten nicht anlegen");
+ sTarget = pDBData->GetName();
+ }
+ }
+ }
+
+ // nachfragen, bevor alter DB-Bereich ueberschrieben wird
+ BOOL bDo = TRUE;
+ if (!bIsNewArea)
+ {
+ String aTemplate = ScGlobal::GetRscString( STR_IMPORT_REPLACE );
+ String aMessage = aTemplate.GetToken( 0, '#' );
+ aMessage += sTarget;
+ aMessage += aTemplate.GetToken( 1, '#' );
+
+ QueryBox aBox( 0, WinBits(WB_YES_NO | WB_DEF_YES), aMessage );
+ bDo = ( aBox.Execute() == RET_YES );
+ }
+
+ if (bDo)
+ {
+ ScDBDocFunc(*this).
+ UpdateImport( sTarget, sDBName, sDBTable, sDBSql,
+ TRUE, nType, pSelectionList );
+ rReq.Done();
+
+ // UpdateImport aktualisiert auch die internen Operationen
+ }
+ else
+ rReq.Ignore();
+
+ if ( bMakeArea )
+ GetUndoManager()->LeaveListAction();
+ }
+ else
+ DBG_ERROR( "arguments expected" );
+ }
+ break;
+
+ case SID_CHART_SOURCE:
+ case SID_CHART_ADDSOURCE:
+ if (pReqArgs)
+ {
+ ScDocument* pDoc = GetDocument();
+ const SfxPoolItem* pItem;
+ String aChartName, aRangeName;
+
+ ScRange aSingleRange;
+ ScRangeListRef aRangeListRef;
+ BOOL bMultiRange = FALSE;
+
+ BOOL bColHeaders = TRUE;
+ BOOL bRowHeaders = TRUE;
+ BOOL bColInit = FALSE;
+ BOOL bRowInit = FALSE;
+ BOOL bAddRange = (nSlot == SID_CHART_ADDSOURCE);
+
+ if( IS_AVAILABLE( SID_CHART_NAME, &pItem ) )
+ aChartName = ((const SfxStringItem*)pItem)->GetValue();
+
+ if( IS_AVAILABLE( SID_CHART_SOURCE, &pItem ) )
+ aRangeName = ((const SfxStringItem*)pItem)->GetValue();
+
+ if( IS_AVAILABLE( FN_PARAM_1, &pItem ) )
+ {
+ bColHeaders = ((const SfxBoolItem*)pItem)->GetValue();
+ bColInit = TRUE;
+ }
+ if( IS_AVAILABLE( FN_PARAM_2, &pItem ) )
+ {
+ bRowHeaders = ((const SfxBoolItem*)pItem)->GetValue();
+ bRowInit = TRUE;
+ }
+
+ BOOL bValid = ( aSingleRange.ParseAny( aRangeName, pDoc ) & SCA_VALID ) != 0;
+ if (!bValid)
+ {
+ aRangeListRef = new ScRangeList;
+ aRangeListRef->Parse( aRangeName, pDoc );
+ if ( aRangeListRef->Count() )
+ {
+ bMultiRange = TRUE;
+ aSingleRange = *aRangeListRef->GetObject(0); // fuer Header
+ bValid = TRUE;
+ }
+ else
+ aRangeListRef.Clear();
+ }
+
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if (pViewSh && bValid && aChartName.Len() != 0 )
+ {
+ Window* pParent = pViewSh->GetDialogParent();
+ Window* pDataWin = pViewSh->GetActiveWin();
+
+ USHORT nCol1 = aSingleRange.aStart.Col();
+ USHORT nRow1 = aSingleRange.aStart.Row();
+ USHORT nCol2 = aSingleRange.aEnd.Col();
+ USHORT nRow2 = aSingleRange.aEnd.Row();
+ USHORT nTab = aSingleRange.aStart.Tab();
+
+ //! immer oder gar nicht begrenzen ???
+ if (!bMultiRange)
+ aDocument.LimitChartArea( nTab, nCol1,nRow1, nCol2,nRow2 );
+
+ // Dialog fuer Spalten/Zeilenkoepfe
+ BOOL bOk = TRUE;
+ if ( !bAddRange && ( !bColInit || !bRowInit ) )
+ {
+ // Spalten/Zeilenkoepfe testen wie in chartarr
+ USHORT i;
+ if (!bColInit)
+ for (i=nCol1; i<=nCol2 && bColHeaders; i++)
+ if (aDocument.HasValueData( i, nRow1, nTab ))
+ bColHeaders = FALSE;
+ if (!bRowInit)
+ for (i=nRow1; i<=nRow2 && bRowHeaders; i++)
+ if (aDocument.HasValueData( nCol1, i, nTab ))
+ bRowHeaders = FALSE;
+
+ ScColRowLabelDlg aDlg( pParent, bRowHeaders, bColHeaders );
+ if ( aDlg.Execute() == RET_OK )
+ {
+ bColHeaders = aDlg.IsRow(); // Spaltenkoepfe = 1. Zeile
+ bRowHeaders = aDlg.IsCol();
+
+ rReq.AppendItem(SfxBoolItem(FN_PARAM_1, bColHeaders));
+ rReq.AppendItem(SfxBoolItem(FN_PARAM_2, bRowHeaders));
+ }
+ else
+ bOk = FALSE;
+ }
+
+ if (bOk) // ausfuehren
+ {
+ if (bMultiRange)
+ {
+ GetUndoManager()->AddUndoAction(
+ new ScUndoChartData( this, aChartName, aRangeListRef,
+ bColHeaders, bRowHeaders, bAddRange ) );
+ aDocument.UpdateChartArea( aChartName, aRangeListRef,
+ bColHeaders, bRowHeaders, bAddRange,
+ pDataWin );
+ }
+ else
+ {
+ ScRange aNewRange( nCol1,nRow1,nTab, nCol2,nRow2,nTab );
+ GetUndoManager()->AddUndoAction(
+ new ScUndoChartData( this, aChartName, aNewRange,
+ bColHeaders, bRowHeaders, bAddRange ) );
+ aDocument.UpdateChartArea( aChartName, aNewRange,
+ bColHeaders, bRowHeaders, bAddRange,
+ pDataWin );
+ }
+ }
+ }
+ else
+ DBG_ERROR("UpdateChartArea: keine ViewShell oder falsche Daten");
+ rReq.Done();
+ }
+ else
+ DBG_ERROR("SID_CHART_SOURCE ohne Argumente");
+ break;
+
+ case FID_AUTO_CALC:
+ {
+ BOOL bNewVal;
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && SFX_ITEM_SET == pReqArgs->GetItemState( nSlot, TRUE, &pItem ) )
+ bNewVal = ((const SfxBoolItem*)pItem)->GetValue();
+ else
+ bNewVal = !aDocument.GetAutoCalc(); // Toggle fuer Menue
+ aDocument.SetAutoCalc( bNewVal );
+ SetDocumentModified();
+ rBindings.Invalidate( FID_AUTO_CALC );
+// rBindings.Invalidate( FID_RECALC ); // jetzt immer enabled
+ rReq.Done();
+ }
+ break;
+ case FID_RECALC:
+ DoRecalc( rReq.IsAPI() );
+ rReq.Done();
+ break;
+ case FID_HARD_RECALC:
+ DoHardRecalc( rReq.IsAPI() );
+ rReq.Done();
+ break;
+ case SID_UPDATETABLINKS:
+ {
+ ScDocument* pDoc = GetDocument();
+
+ ScLkUpdMode nSet=pDoc->GetLinkMode();
+
+ USHORT nDlgRet=RET_NO;
+ if(nSet==LM_UNKNOWN)
+ {
+ ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
+ nSet=aAppOptions.GetLinkMode();
+ }
+
+ if(nSet==LM_ON_DEMAND)
+ {
+ QueryBox aBox( lcl_GetDialogParent(), WinBits(WB_YES_NO | WB_DEF_YES),
+ ScGlobal::GetRscString(STR_RELOAD_TABLES) );
+
+ nDlgRet=aBox.Execute();
+ }
+
+ if (nDlgRet == RET_YES || nSet==LM_ALWAYS)
+ {
+ ReloadTabLinks();
+ aDocument.UpdateDdeLinks();
+ aDocument.UpdateAreaLinks();
+
+ //! Test, ob Fehler
+ rReq.Done();
+ }
+ else
+ rReq.Ignore();
+ }
+ break;
+
+ case SID_REIMPORT_AFTER_LOAD:
+ {
+ // wird nach dem Laden aufgerufen, wenn DB-Bereiche mit
+ // weggelassenen Daten enthalten sind
+
+ BOOL bDone = FALSE;
+ ScRange aRange;
+ ScDBCollection* pDBColl = aDocument.GetDBCollection();
+ ScTabViewShell* pViewSh = GetBestViewShell();
+ DBG_ASSERT(pViewSh,"SID_REIMPORT_AFTER_LOAD: keine View");
+ if (pViewSh && pDBColl)
+ {
+ QueryBox aBox( lcl_GetDialogParent(), WinBits(WB_YES_NO | WB_DEF_YES),
+ ScGlobal::GetRscString(STR_REIMPORT_AFTER_LOAD) );
+ if (aBox.Execute() == RET_YES)
+ {
+ for (USHORT i=0; i<pDBColl->GetCount(); i++)
+ {
+ ScDBData* pDBData = (*pDBColl)[i];
+ if ( pDBData->IsStripData() &&
+ pDBData->HasImportParam() && !pDBData->HasImportSelection() )
+ {
+ pDBData->GetArea(aRange);
+ pViewSh->MarkRange(aRange);
+
+ // Import und interne Operationen wie SID_REFRESH_DBAREA
+ // (Abfrage auf Import hier nicht noetig)
+
+ ScImportParam aImportParam;
+ pDBData->GetImportParam( aImportParam );
+ BOOL bContinue = pViewSh->ImportData( aImportParam );
+ pDBData->SetImportParam( aImportParam );
+
+ // markieren (Groesse kann sich geaendert haben)
+ pDBData->GetArea(aRange);
+ pViewSh->MarkRange(aRange);
+
+ if ( bContinue ) // #41905# Fehler beim Import -> Abbruch
+ {
+ // interne Operationen, wenn welche gespeichert
+
+ if ( pDBData->HasQueryParam() || pDBData->HasSortParam() ||
+ pDBData->HasSubTotalParam() )
+ pViewSh->RepeatDB();
+
+ // Pivottabellen die den Bereich als Quelldaten haben
+
+ RefreshPivotTables(aRange);
+ }
+ }
+ }
+ bDone = TRUE;
+ }
+ }
+
+ if ( !bDone && pDBColl )
+ {
+ // wenn nicht, dann aber die abhaengigen Formeln updaten
+ //! auch fuer einzelne Bereiche, die nicht aktualisiert werden koennen
+
+ aDocument.CalcAll(); //! nur die abhaengigen
+ PostDataChanged();
+ }
+
+ if (bDone)
+ rReq.Done();
+ else
+ rReq.Ignore();
+ }
+ break;
+
+
+ case SID_AUTO_STYLE:
+ DBG_ERROR("use ScAutoStyleHint instead of SID_AUTO_STYLE");
+ break;
+
+ case SID_GET_COLORTABLE:
+ {
+ // passende ColorTable ist per PutItem gesetzt worden
+ SvxColorTableItem* pColItem = (SvxColorTableItem*)GetItem(SID_COLOR_TABLE);
+ XColorTable* pTable = pColItem->GetColorTable();
+ rReq.SetReturnValue(OfaPtrItem(SID_GET_COLORTABLE, pTable));
+ }
+ break;
+
+ case FID_CHG_RECORD:
+ {
+ ScDocument* pDoc = GetDocument();
+ if(pDoc!=NULL)
+ {
+ if(pDoc->GetChangeTrack()!=NULL)
+ {
+ WarningBox aBox( lcl_GetDialogParent(), WinBits(WB_YES_NO | WB_DEF_NO),
+ ScGlobal::GetRscString( STR_END_REDLINING ) );
+
+ if(aBox.Execute()==RET_YES)
+ {
+ pDoc->EndChangeTracking();
+ PostPaintGridAll();
+ }
+ }
+ else
+ {
+ pDoc->StartChangeTracking();
+ ScChangeViewSettings aChangeViewSet;
+ aChangeViewSet.SetShowChanges(TRUE);
+ pDoc->SetChangeViewSettings(aChangeViewSet);
+ }
+
+ // update "accept changes" dialog
+ //! notify all views
+
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if ( pViewFrm && pViewFrm->HasChildWindow(FID_CHG_ACCEPT) )
+ {
+ SfxChildWindow* pChild = pViewFrm->GetChildWindow(FID_CHG_ACCEPT);
+ if (pChild)
+ {
+ ((ScAcceptChgDlgWrapper*)pChild)->ReInitDlg();
+ }
+ }
+ // Slots invalidieren
+ rBindings.InvalidateAll(FALSE);
+ }
+ }
+ break;
+
+ case SID_DOCUMENT_MERGE:
+ case SID_DOCUMENT_COMPARE:
+ {
+ //! bei COMPARE eine Warnung, dass alte Changes verlorengehen ??!?!?
+
+ SfxApplication* pApp = SFX_APP();
+ const SfxPoolItem* pItem;
+ SfxMedium* pMed = NULL;
+ if ( pReqArgs &&
+ pReqArgs->GetItemState( SID_FILE_NAME, TRUE, &pItem ) == SFX_ITEM_SET &&
+ pItem->ISA(SfxStringItem) )
+ {
+ String aFileName = ((const SfxStringItem*)pItem)->GetValue();
+
+ String aFilterName;
+ if ( pReqArgs->GetItemState( SID_FILTER_NAME, TRUE, &pItem ) == SFX_ITEM_SET &&
+ pItem->ISA(SfxStringItem) )
+ {
+ aFilterName = ((const SfxStringItem*)pItem)->GetValue();
+ }
+ String aOptions;
+ if ( pReqArgs->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) == SFX_ITEM_SET &&
+ pItem->ISA(SfxStringItem) )
+ {
+ aOptions = ((const SfxStringItem*)pItem)->GetValue();
+ }
+ short nVersion = 0;
+ if ( pReqArgs->GetItemState( SID_VERSION, TRUE, &pItem ) == SFX_ITEM_SET &&
+ pItem->ISA(SfxInt16Item) )
+ {
+ nVersion = ((const SfxInt16Item*)pItem)->GetValue();
+ }
+
+ // kein Filter angegeben -> Detection
+ if ( !aFilterName.Len() )
+ ScDocumentLoader::GetFilterName( aFileName, aFilterName, aOptions );
+
+ const SfxFilter* pFilter = pApp->GetFilter( ScDocShell::Factory(), aFilterName );
+ SfxItemSet* pSet = new SfxAllItemSet( pApp->GetPool() );
+ if ( aOptions.Len() )
+ pSet->Put( SfxStringItem( SID_FILE_FILTEROPTIONS, aOptions ) );
+ if ( nVersion != 0 )
+ pSet->Put( SfxInt16Item( SID_VERSION, nVersion ) );
+ pMed = new SfxMedium( aFileName, STREAM_STD_READ, FALSE, TRUE, pFilter, pSet );
+ }
+ else
+ {
+ pMed = pApp->InsertDocumentDialog( 0, ScDocShell::Factory() );
+ if ( pMed )
+ {
+ // kompletten Request zum Aufzeichnen zusammenbasteln
+ rReq.AppendItem( SfxStringItem( SID_FILE_NAME, pMed->GetName() ) );
+ if ( nSlot == SID_DOCUMENT_COMPARE )
+ {
+ // Filter und Options nur bei Compare
+ if (pMed->GetFilter())
+ rReq.AppendItem( SfxStringItem( SID_FILTER_NAME,
+ pMed->GetFilter()->GetFilterName() ) );
+ String aOptions = ScDocumentLoader::GetOptions(*pMed);
+ if (aOptions.Len())
+ rReq.AppendItem( SfxStringItem( SID_FILE_FILTEROPTIONS, aOptions ) );
+ }
+ SfxItemSet* pSet = pMed->GetItemSet();
+ if ( pSet &&
+ pSet->GetItemState( SID_VERSION, TRUE, &pItem ) == SFX_ITEM_SET &&
+ pItem->ISA(SfxInt16Item) )
+ {
+ rReq.AppendItem( *pItem );
+ }
+ }
+ }
+
+ if ( pMed ) // nun wirklich ausfuehren...
+ {
+ SfxErrorContext aEc( ERRCTX_SFX_OPENDOC, pMed->GetName() );
+
+ ScDocShell* pOtherDocSh = new ScDocShell;
+ SvEmbeddedObjectRef aDocShTablesRef = pOtherDocSh;
+ pOtherDocSh->DoLoad( pMed );
+ ULONG nErr = pOtherDocSh->GetErrorCode();
+ if (nErr)
+ ErrorHandler::HandleError( nErr ); // auch Warnings
+
+ if ( !pOtherDocSh->GetError() ) // nur Errors
+ {
+ BOOL bHadTrack = ( aDocument.GetChangeTrack() != NULL );
+
+ if ( nSlot == SID_DOCUMENT_COMPARE )
+ CompareDocument( *pOtherDocSh->GetDocument() );
+ else
+ MergeDocument( *pOtherDocSh->GetDocument() );
+
+ // show "accept changes" dialog
+ //! get view for this document!
+
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if (pViewFrm)
+ pViewFrm->ShowChildWindow(ScAcceptChgDlgWrapper::GetChildWindowId(),TRUE); //@51669
+ SFX_BINDINGS().Invalidate(FID_CHG_ACCEPT);
+
+ rReq.SetReturnValue( SfxInt32Item( nSlot, 0 ) ); //! ???????
+ rReq.Done();
+
+ if (!bHadTrack) // neu eingeschaltet -> auch anzeigen
+ {
+ ScChangeViewSettings* pOldSet = aDocument.GetChangeViewSettings();
+ if ( !pOldSet || !pOldSet->ShowChanges() )
+ {
+ ScChangeViewSettings aChangeViewSet;
+ aChangeViewSet.SetShowChanges(TRUE);
+ aDocument.SetChangeViewSettings(aChangeViewSet);
+ }
+ }
+ }
+ pOtherDocSh->DoClose(); // delete passiert mit der Ref
+ }
+ }
+ break;
+
+ case SID_DELETE_SCENARIO:
+ if (pReqArgs)
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs->GetItemState( nSlot, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ if ( pItem->ISA(SfxStringItem) )
+ {
+ String aName = ((const SfxStringItem*)pItem)->GetValue();
+ USHORT nTab;
+ if (aDocument.GetTable( aName, nTab ))
+ {
+ // DeleteTable von viewfunc nach docfunc verschieben!
+
+ ScTabViewShell* pSh = GetBestViewShell();
+ if ( pSh )
+ {
+ //! SetTabNo in DeleteTable weglassen?
+ USHORT nDispTab = pSh->GetViewData()->GetTabNo();
+ pSh->DeleteTable( nTab );
+ pSh->SetTabNo(nDispTab);
+ rReq.Done();
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ case SID_EDIT_SCENARIO:
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs->GetItemState( nSlot, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ if ( pItem->ISA(SfxStringItem) )
+ {
+ String aName = ((const SfxStringItem*)pItem)->GetValue();
+ USHORT nTab;
+ if (aDocument.GetTable( aName, nTab ))
+ {
+ if (aDocument.IsScenario(nTab))
+ {
+ String aComment;
+ Color aColor;
+ USHORT nFlags;
+ aDocument.GetScenarioData( nTab, aComment, aColor, nFlags );
+
+ //! anderen Titel am Dialog setzen
+ ScNewScenarioDlg* pNewDlg =
+ new ScNewScenarioDlg( lcl_GetDialogParent(), aName, TRUE );
+ pNewDlg->SetScenarioData( aName, aComment, aColor, nFlags );
+ if ( pNewDlg->Execute() == RET_OK )
+ {
+ pNewDlg->GetScenarioData( aName, aComment, aColor, nFlags );
+ ModifyScenario( nTab, aName, aComment, aColor, nFlags );
+ rReq.Done();
+ }
+ delete pNewDlg;
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ case SID_ATTR_YEAR2000 :
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs->GetItemState( nSlot, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ if ( pItem->ISA(SfxUInt16Item) )
+ {
+ UINT16 nY2k = ((SfxUInt16Item*)pItem)->GetValue();
+ // immer an den DocOptions setzen, damit das auch fuer SO50
+ // gespeichert wird (und alle Abfragen bisher auch darauf laufen).
+ // SetDocOptions propagiert das an den NumberFormatter
+ ScDocOptions aDocOpt( aDocument.GetDocOptions() );
+ aDocOpt.SetYear2000( nY2k );
+ aDocument.SetDocOptions( aDocOpt );
+ // die FormShell soll es mitbekommen
+ ScTabViewShell* pSh = GetBestViewShell();
+ if ( pSh )
+ {
+ FmFormShell* pFSh = pSh->GetFormShell();
+ if ( pFSh )
+ pFSh->SetY2KState( nY2k );
+ }
+ }
+ }
+ }
+ break;
+
+ default:
+ {
+ // kleiner (?) Hack -> forward der Slots an TabViewShell
+ ScTabViewShell* pSh = GetBestViewShell();
+ if ( pSh )
+ pSh->Execute( rReq );
+ else
+ SbxBase::SetError( SbxERR_NO_ACTIVE_OBJECT );
+ }
+ }
+}
+
+//------------------------------------------------------------------
+
+void ScDocShell::DoRecalc( BOOL bApi )
+{
+ BOOL bDone = FALSE;
+ ScTabViewShell* pSh = GetBestViewShell();
+ if ( pSh )
+ {
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl(pSh);
+ if ( pHdl && pHdl->IsInputMode() && pHdl->IsFormulaMode() && !bApi )
+ {
+ pHdl->FormulaPreview(); // Teilergebnis als QuickHelp
+ bDone = TRUE;
+ }
+ else
+ {
+ pSh->UpdateInputLine(); // InputEnterHandler
+ pSh->UpdateInputHandler();
+ }
+ }
+ if (!bDone) // sonst Dokument neu berechnen
+ {
+ WaitObject aWaitObj( GetDialogParent() );
+ aDocument.CalcFormulaTree();
+ if ( pSh )
+ pSh->UpdateCharts(TRUE);
+
+ // #47939# Wenn es Charts gibt, dann alles painten, damit nicht
+ // PostDataChanged und die Charts nacheinander kommen und Teile
+ // doppelt gepainted werden.
+
+ ScChartListenerCollection* pCharts = aDocument.GetChartListenerCollection();
+ if ( pCharts && pCharts->GetCount() )
+ PostPaintGridAll();
+ else
+ PostDataChanged();
+ }
+}
+
+void ScDocShell::DoHardRecalc( BOOL bApi )
+{
+ WaitObject aWaitObj( GetDialogParent() );
+ ScTabViewShell* pSh = GetBestViewShell();
+ if ( pSh )
+ {
+ pSh->UpdateInputLine(); // InputEnterHandler
+ pSh->UpdateInputHandler();
+ }
+ aDocument.CalcAll();
+ GetDocFunc().DetectiveRefresh(); // erzeugt eigenes Undo
+ if ( pSh )
+ pSh->UpdateCharts(TRUE);
+ PostPaintGridAll();
+}
+
+//------------------------------------------------------------------
+
+void ScDocShell::DoAutoStyle( const ScRange& rRange, const String& rStyle )
+{
+ ScStyleSheetPool* pStylePool = aDocument.GetStyleSheetPool();
+ ScStyleSheet* pStyleSheet =
+ pStylePool->FindCaseIns( rStyle, SFX_STYLE_FAMILY_PARA );
+ if (!pStyleSheet)
+ pStyleSheet = (ScStyleSheet*)
+ pStylePool->Find( ScGlobal::GetRscString(STR_STYLENAME_STANDARD), SFX_STYLE_FAMILY_PARA );
+ if (pStyleSheet)
+ {
+ DBG_ASSERT(rRange.aStart.Tab() == rRange.aEnd.Tab(),
+ "DoAutoStyle mit mehreren Tabellen");
+ USHORT nTab = rRange.aStart.Tab();
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ aDocument.ApplyStyleAreaTab( nStartCol, nStartRow, nEndCol, nEndRow, nTab, *pStyleSheet );
+ aDocument.ExtendMerge( nStartCol, nStartRow, nEndCol, nEndRow, nTab );
+ PostPaint( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab, PAINT_GRID );
+ }
+}
+
+//------------------------------------------------------------------
+
+void ScDocShell::NotifyStyle( const SfxStyleSheetHint& rHint )
+{
+ USHORT nId = rHint.GetHint();
+ const SfxStyleSheetBase* pStyle = rHint.GetStyleSheet();
+ if (!pStyle)
+ return;
+
+ if ( pStyle->GetFamily() == SFX_STYLE_FAMILY_PAGE )
+ {
+ if ( nId == SFX_STYLESHEET_MODIFIED )
+ {
+ ScDocShellModificator aModificator( *this );
+
+ String aNewName = pStyle->GetName();
+ String aOldName = aNewName;
+ BOOL bExtended = rHint.ISA(SfxStyleSheetHintExtended); // Name geaendert?
+ if (bExtended)
+ aOldName = ((SfxStyleSheetHintExtended&)rHint).GetOldName();
+
+ if ( aNewName != aOldName )
+ aDocument.RenamePageStyleInUse( aOldName, aNewName );
+
+ USHORT nTabCount = aDocument.GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if (aDocument.GetPageStyle(nTab) == aNewName) // schon auf neu angepasst
+ {
+ aDocument.PageStyleModified( nTab, aNewName );
+ ScPrintFunc aPrintFunc( this, GetPrinter(), nTab );
+ aPrintFunc.UpdatePages();
+ }
+
+ aModificator.SetDocumentModified();
+
+ if (bExtended)
+ {
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_STATUS_PAGESTYLE );
+ rBindings.Invalidate( SID_STYLE_FAMILY4 );
+ rBindings.Invalidate( FID_RESET_PRINTZOOM );
+ }
+ }
+ }
+
+ // alles andere geht ueber Slots...
+}
+
+// wie in printfun.cxx
+#define ZOOM_MIN 10
+
+void ScDocShell::SetPrintZoom( USHORT nTab, USHORT nScale, USHORT nPages )
+{
+ String aStyleName = aDocument.GetPageStyle( nTab );
+ ScStyleSheetPool* pStylePool = aDocument.GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find( aStyleName, SFX_STYLE_FAMILY_PAGE );
+ DBG_ASSERT( pStyleSheet, "PageStyle not found" );
+ if ( pStyleSheet )
+ {
+ ScDocShellModificator aModificator( *this );
+
+ SfxItemSet& rSet = pStyleSheet->GetItemSet();
+ USHORT nOldScale = ((const SfxUInt16Item&)rSet.Get(ATTR_PAGE_SCALE)).GetValue();
+ USHORT nOldPages = ((const SfxUInt16Item&)rSet.Get(ATTR_PAGE_SCALETOPAGES)).GetValue();
+ GetUndoManager()->AddUndoAction( new ScUndoPrintZoom(
+ this, nTab, nOldScale, nOldPages, nScale, nPages ) );
+
+ rSet.Put( SfxUInt16Item( ATTR_PAGE_SCALE, nScale ) );
+ rSet.Put( SfxUInt16Item( ATTR_PAGE_SCALETOPAGES, nPages ) );
+
+ ScPrintFunc aPrintFunc( this, GetPrinter(), nTab );
+ aPrintFunc.UpdatePages();
+ aModificator.SetDocumentModified();
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( FID_RESET_PRINTZOOM );
+ }
+}
+
+BOOL ScDocShell::AdjustPrintZoom( const ScRange& rRange )
+{
+ BOOL bChange = FALSE;
+ USHORT nTab = rRange.aStart.Tab();
+
+ String aStyleName = aDocument.GetPageStyle( nTab );
+ ScStyleSheetPool* pStylePool = aDocument.GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find( aStyleName, SFX_STYLE_FAMILY_PAGE );
+ DBG_ASSERT( pStyleSheet, "PageStyle not found" );
+ if ( pStyleSheet )
+ {
+ SfxItemSet& rSet = pStyleSheet->GetItemSet();
+ BOOL bHeaders = ((const SfxBoolItem&)rSet.Get(ATTR_PAGE_HEADERS)).GetValue();
+ USHORT nOldScale = ((const SfxUInt16Item&)rSet.Get(ATTR_PAGE_SCALE)).GetValue();
+ USHORT nOldPages = ((const SfxUInt16Item&)rSet.Get(ATTR_PAGE_SCALETOPAGES)).GetValue();
+ const ScRange* pRepeatCol = aDocument.GetRepeatColRange( nTab );
+ const ScRange* pRepeatRow = aDocument.GetRepeatRowRange( nTab );
+
+ // benoetigte Skalierung fuer Selektion ausrechnen
+
+ USHORT nNewScale = nOldScale;
+ USHORT i;
+
+ long nBlkTwipsX = 0;
+ if (bHeaders)
+ nBlkTwipsX += PRINT_HEADER_WIDTH;
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nEndCol = rRange.aEnd.Col();
+ if ( pRepeatCol && nStartCol >= pRepeatCol->aStart.Col() )
+ {
+ for ( i=pRepeatCol->aStart.Col(); i<=pRepeatCol->aEnd.Col(); i++ )
+ nBlkTwipsX += aDocument.GetColWidth( i, nTab );
+ if ( nStartCol <= pRepeatCol->aEnd.Col() )
+ nStartCol = pRepeatCol->aEnd.Col() + 1;
+ }
+ for ( i=nStartCol; i<=nEndCol; i++ )
+ nBlkTwipsX += aDocument.GetColWidth( i, nTab );
+
+ long nBlkTwipsY = 0;
+ if (bHeaders)
+ nBlkTwipsY += PRINT_HEADER_HEIGHT;
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nEndRow = rRange.aEnd.Row();
+ if ( pRepeatRow && nStartRow >= pRepeatRow->aStart.Row() )
+ {
+ for ( i=pRepeatRow->aStart.Row(); i<=pRepeatRow->aEnd.Row(); i++ )
+ nBlkTwipsY += aDocument.FastGetRowHeight( i, nTab );
+ if ( nStartRow <= pRepeatRow->aEnd.Row() )
+ nStartRow = pRepeatRow->aEnd.Row() + 1;
+ }
+ for ( i=nStartRow; i<=nEndRow; i++ )
+ nBlkTwipsY += aDocument.FastGetRowHeight( i, nTab );
+
+ Size aPhysPage;
+ long nHdr, nFtr;
+ ScPrintFunc aOldPrFunc( this, GetPrinter(), nTab );
+ aOldPrFunc.GetScaleData( aPhysPage, nHdr, nFtr );
+ nBlkTwipsY += nHdr + nFtr;
+
+ long nNeeded = Min( aPhysPage.Width() * 100 / nBlkTwipsX,
+ aPhysPage.Height() * 100 / nBlkTwipsY );
+ if ( nNeeded < ZOOM_MIN )
+ nNeeded = ZOOM_MIN; // Begrenzung
+ if ( nNeeded < (long) nNewScale )
+ nNewScale = (USHORT) nNeeded;
+
+ bChange = ( nNewScale != nOldScale || nOldPages != 0 );
+ if ( bChange )
+ SetPrintZoom( nTab, nNewScale, 0 );
+ }
+ return bChange;
+}
+
+void ScDocShell::PageStyleModified( const String& rStyleName, BOOL bApi )
+{
+ ScDocShellModificator aModificator( *this );
+
+ BOOL bWarn = FALSE;
+
+ USHORT nTabCount = aDocument.GetTableCount();
+ USHORT nUseTab = MAXTAB+1;
+ for (USHORT nTab=0; nTab<nTabCount && nUseTab>MAXTAB; nTab++)
+ if ( aDocument.GetPageStyle(nTab) == rStyleName &&
+ ( !bApi || aDocument.GetPageSize(nTab).Width() ) )
+ nUseTab = nTab;
+ // bei bApi nur, wenn Umbrueche schon angezeigt
+
+ if (nUseTab<=MAXTAB) // nicht verwendet -> nichts zu tun
+ {
+ ScPrintFunc aPrintFunc( this, GetPrinter(), nUseTab ); //! ohne CountPages auskommen
+ if (!aPrintFunc.UpdatePages()) // setzt Umbrueche auf allen Tabs
+ bWarn = TRUE;
+
+ if (bWarn && !bApi)
+ {
+ ScWaitCursorOff aWaitOff( GetDialogParent() );
+ InfoBox aInfoBox(GetDialogParent(),
+ ScGlobal::GetRscString(STR_PRINT_INVALID_AREA));
+ aInfoBox.Execute();
+ }
+ }
+
+ aModificator.SetDocumentModified();
+
+ SFX_BINDINGS().Invalidate( FID_RESET_PRINTZOOM );
+}
+
+void ScDocShell::ExecutePageStyle( SfxViewShell& rCaller,
+ SfxRequest& rReq,
+ USHORT nCurTab )
+{
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+
+ switch ( rReq.GetSlot() )
+ {
+ case SID_STATUS_PAGESTYLE: // Click auf StatusBar-Control
+ case SID_FORMATPAGE:
+ {
+ if ( pReqArgs != NULL )
+ {
+ }
+ else if ( pReqArgs == NULL )
+ {
+ String aOldName = aDocument.GetPageStyle( nCurTab );
+ ScStyleSheetPool* pStylePool = aDocument.GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet
+ = pStylePool->Find( aOldName, SFX_STYLE_FAMILY_PAGE );
+
+ DBG_ASSERT( pStyleSheet, "PageStyle not found! :-/" );
+
+ if ( pStyleSheet )
+ {
+ ScStyleSaveData aOldData;
+ aOldData.InitFromStyle( pStyleSheet );
+
+ SfxItemSet& rStyleSet = pStyleSheet->GetItemSet();
+
+ ScStyleDlg* pDlg = new ScStyleDlg( lcl_GetDialogParent(),
+ *pStyleSheet,
+ RID_SCDLG_STYLES_PAGE );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+
+ WaitObject aWait( GetDialogParent() );
+
+ String aNewName = pStyleSheet->GetName();
+ if ( aNewName != aOldName &&
+ aDocument.RenamePageStyleInUse( aOldName, aNewName ) )
+ {
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_STATUS_PAGESTYLE );
+ rBindings.Invalidate( FID_RESET_PRINTZOOM );
+ }
+
+ if ( pOutSet )
+ aDocument.ModifyStyleSheet( *pStyleSheet, *pOutSet );
+
+ // merken fuer GetState():
+ GetPageOnFromPageStyleSet( &rStyleSet, nCurTab, bHeaderOn, bFooterOn );
+ rCaller.GetViewFrame()->GetBindings().Invalidate( SID_HFEDIT );
+
+ ScStyleSaveData aNewData;
+ aNewData.InitFromStyle( pStyleSheet );
+ GetUndoManager()->AddUndoAction(
+ new ScUndoModifyStyle( this, SFX_STYLE_FAMILY_PAGE,
+ aOldData, aNewData ) );
+
+ PageStyleModified( aNewName, FALSE );
+ rReq.Done();
+ }
+ delete pDlg;
+
+ rStyleSet.ClearItem( ATTR_PAGE_PAPERTRAY );
+ }
+ }
+ }
+ break;
+
+ case SID_HFEDIT:
+ {
+ if ( pReqArgs != NULL )
+ {
+ }
+ else if ( pReqArgs == NULL )
+ {
+ String aStr( aDocument.GetPageStyle( nCurTab ) );
+
+ ScStyleSheetPool* pStylePool
+ = aDocument.GetStyleSheetPool();
+
+ SfxStyleSheetBase* pStyleSheet
+ = pStylePool->Find( aStr, SFX_STYLE_FAMILY_PAGE );
+
+ DBG_ASSERT( pStyleSheet, "PageStyle not found! :-/" );
+
+ if ( pStyleSheet )
+ {
+ SfxItemSet& rStyleSet = pStyleSheet->GetItemSet();
+
+ SvxPageUsage eUsage =
+ SvxPageUsage( ((const SvxPageItem&)
+ rStyleSet.Get( ATTR_PAGE )).
+ GetPageUsage() );
+ BOOL bShareHeader = IS_SHARE_HEADER(rStyleSet);
+ BOOL bShareFooter = IS_SHARE_FOOTER(rStyleSet);
+ USHORT nResId = 0;
+
+ switch ( eUsage )
+ {
+ case SVX_PAGE_LEFT:
+ case SVX_PAGE_RIGHT:
+ {
+ if ( bHeaderOn && bFooterOn )
+ nResId = RID_SCDLG_HFEDIT;
+ else if ( SVX_PAGE_RIGHT == eUsage )
+ {
+ if ( !bHeaderOn && bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_RIGHTFOOTER;
+ else if ( bHeaderOn && !bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_RIGHTHEADER;
+ }
+ else
+ {
+ // #69193a# respect "shared" setting
+ if ( !bHeaderOn && bFooterOn )
+ nResId = bShareFooter ?
+ RID_SCDLG_HFEDIT_RIGHTFOOTER :
+ RID_SCDLG_HFEDIT_LEFTFOOTER;
+ else if ( bHeaderOn && !bFooterOn )
+ nResId = bShareHeader ?
+ RID_SCDLG_HFEDIT_RIGHTHEADER :
+ RID_SCDLG_HFEDIT_LEFTHEADER;
+ }
+ }
+ break;
+
+ case SVX_PAGE_MIRROR:
+ case SVX_PAGE_ALL:
+ default:
+ {
+ if ( !bShareHeader && !bShareFooter )
+ {
+ if ( bHeaderOn && bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_ALL;
+ else if ( !bHeaderOn && bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_FOOTER;
+ else if ( bHeaderOn && !bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_HEADER;
+ }
+ else if ( bShareHeader && bShareFooter )
+ {
+ if ( bHeaderOn && bFooterOn )
+ nResId = RID_SCDLG_HFEDIT;
+ else
+ {
+ if ( !bHeaderOn && bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_RIGHTFOOTER;
+ else if ( bHeaderOn && !bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_RIGHTHEADER;
+ }
+ }
+ else if ( !bShareHeader && bShareFooter )
+ {
+ if ( bHeaderOn && bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_SFTR;
+ else if ( !bHeaderOn && bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_RIGHTFOOTER;
+ else if ( bHeaderOn && !bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_HEADER;
+ }
+ else if ( bShareHeader && !bShareFooter )
+ {
+ if ( bHeaderOn && bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_SHDR;
+ else if ( !bHeaderOn && bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_FOOTER;
+ else if ( bHeaderOn && !bFooterOn )
+ nResId = RID_SCDLG_HFEDIT_RIGHTHEADER;
+ }
+ }
+ }
+
+ ScHFEditDlg* pDlg
+ = new ScHFEditDlg( SFX_APP()->GetViewFrame(),
+ lcl_GetDialogParent(),
+ rStyleSet,
+ aStr,
+ nResId );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+
+ if ( pOutSet )
+ aDocument.ModifyStyleSheet( *pStyleSheet, *pOutSet );
+
+ SetDocumentModified();
+ rReq.Done();
+ }
+ delete pDlg;
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void ScDocShell::GetStatePageStyle( SfxViewShell& rCaller,
+ SfxItemSet& rSet,
+ USHORT nCurTab )
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch (nWhich)
+ {
+ case SID_STATUS_PAGESTYLE:
+ rSet.Put( SfxStringItem( nWhich, aDocument.GetPageStyle( nCurTab ) ) );
+ break;
+
+ case SID_HFEDIT:
+ {
+ String aStr = aDocument.GetPageStyle( nCurTab );
+ ScStyleSheetPool* pStylePool = aDocument.GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find( aStr, SFX_STYLE_FAMILY_PAGE );
+
+ DBG_ASSERT( pStyleSheet, "PageStyle not found! :-/" );
+
+ if ( pStyleSheet )
+ {
+ SfxItemSet& rStyleSet = pStyleSheet->GetItemSet();
+
+ GetPageOnFromPageStyleSet( &rStyleSet, nCurTab, bHeaderOn, bFooterOn );
+
+ if ( !bHeaderOn && !bFooterOn )
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+}
+
+void ScDocShell::PreparePrint( PrintDialog* pPrintDialog, ScMarkData* pMarkData )
+{
+ SfxPrinter* pPrinter = GetPrinter();
+ if ( !pPrinter ) return;
+
+ delete pOldJobSetup; // gesetzt nur bei Fehler in StartJob()
+ pOldJobSetup = new ScJobSetup( pPrinter ); // Einstellungen merken
+
+ // Einstellungen fuer die erste gedruckte Seite muessen hier (vor StartJob) gesetzt werden
+ //! Selection etc. mit Print() zusammenfassen !!!
+ //! Seiten nur einmal zaehlen
+
+ BOOL bAllTabs = TRUE;
+ USHORT nTabCount = aDocument.GetTableCount();
+ USHORT nTab;
+ long nTotalPages = 0; // alle Seiten
+ long aPageArr[MAXTAB+1]; // Seiten pro Tabelle
+ for ( nTab=0; nTab<nTabCount; nTab++ ) // nPages und nTotalPages ermitteln
+ {
+ ScPrintFunc aPrintFunc( this, pPrinter, nTab );
+ long nThisTab = aPrintFunc.GetTotalPages();
+ aPageArr[nTab] = nThisTab;
+ nTotalPages += nThisTab;
+ }
+
+ MultiSelection aPageRanges; // zu druckende Seiten
+ aPageRanges.SetTotalRange( Range( 0, RANGE_MAX ) );
+ aPageRanges.Select( Range(1,nTotalPages) );
+ PrintDialogRange eDlgOption = pPrintDialog ? pPrintDialog->GetCheckedRange() : PRINTDIALOG_ALL;
+ switch ( eDlgOption )
+ {
+ case PRINTDIALOG_RANGE:
+ aPageRanges = MultiSelection( pPrintDialog->GetRangeText() );
+ break;
+
+ case PRINTDIALOG_SELECTION:
+ // pMarkedRange interessiert hier nicht
+ bAllTabs = FALSE;
+ break;
+ }
+
+ if (!bAllTabs) // Gesamt-Seitenzahl bei Selektion
+ {
+ nTotalPages = 0;
+ for (nTab=0; nTab<nTabCount; nTab++)
+ if ( !pMarkData || pMarkData->GetTableSelect(nTab) )
+ nTotalPages += aPageArr[nTab];
+ aPageRanges.Select( Range(1,nTotalPages) );
+ }
+
+ BOOL bFound = FALSE; // erste Seite gefunden
+ long nTabStart = 0;
+ for ( nTab=0; nTab<nTabCount && !bFound; nTab++ )
+ {
+ if ( bAllTabs || !pMarkData || pMarkData->GetTableSelect( nTab ) )
+ {
+ ScPrintFunc aPrintFunc( this, pPrinter, nTab );
+
+ long nNext = nTabStart + aPageArr[nTab];
+ BOOL bSelected = FALSE;
+ for (long nP=nTabStart+1; nP<=nNext; nP++) // 1-basiert
+ if (aPageRanges.IsSelected( nP )) // eine Seite von dieser Tabelle selektiert?
+ bSelected = TRUE;
+
+ if (bSelected)
+ {
+ aPrintFunc.ApplyPrintSettings(); // dann Settings fuer diese Tabelle
+ bFound = TRUE;
+ }
+ nTabStart = nNext;
+ }
+ }
+}
+
+void ScDocShell::Print( SfxProgress& rProgress, PrintDialog* pPrintDialog,
+ ScMarkData* pMarkData, BOOL bForceSelected )
+{
+ SfxPrinter* pPrinter = GetPrinter();
+ if ( !pPrinter ) return;
+
+ PrintDialogRange eDlgOption = PRINTDIALOG_ALL;
+ if ( bForceSelected )
+ eDlgOption = PRINTDIALOG_SELECTION;
+
+ ScRange* pMarkedRange = NULL;
+
+ BOOL bAllTabs = TRUE;
+ USHORT nTabCount = aDocument.GetTableCount();
+ USHORT nTab;
+ long nTotalPages = 0; // alle Seiten
+ long aPageArr[MAXTAB+1]; // Seiten pro Tabelle
+ for ( nTab=0; nTab<nTabCount; nTab++ ) // nPages und nTotalPages ermitteln
+ {
+ ScPrintFunc aPrintFunc( this, pPrinter, nTab );
+ long nThisTab = aPrintFunc.GetTotalPages();
+ aPageArr[nTab] = nThisTab;
+ nTotalPages += nThisTab;
+ }
+
+ MultiSelection aPageRanges; // zu druckende Seiten
+ aPageRanges.SetTotalRange( Range( 0, RANGE_MAX ) );
+ aPageRanges.Select( Range(1,nTotalPages) );
+ if ( pPrintDialog )
+ eDlgOption = pPrintDialog->GetCheckedRange();
+ switch ( eDlgOption )
+ {
+ case PRINTDIALOG_RANGE:
+ aPageRanges = MultiSelection( pPrintDialog->GetRangeText() );
+ break;
+
+ case PRINTDIALOG_SELECTION:
+ if ( pMarkData && ( pMarkData->IsMarked() || pMarkData->IsMultiMarked() ) )
+ {
+ pMarkData->MarkToMulti();
+ pMarkedRange = new ScRange;
+ pMarkData->GetMultiMarkArea( *pMarkedRange );
+ pMarkData->MarkToSimple();
+ }
+ bAllTabs = FALSE;
+ break;
+
+ //case PRINTDIALOG_ALL:
+ //default:
+ }
+
+ if (!bAllTabs) // Gesamt-Seitenzahl bei Selektion
+ {
+ nTotalPages = 0;
+ for (nTab=0; nTab<nTabCount; nTab++)
+ if ( !pMarkData || pMarkData->GetTableSelect(nTab) )
+ nTotalPages += aPageArr[nTab];
+ aPageRanges.Select( Range(1,nTotalPages) );
+ }
+
+ USHORT nCollateCopies = 1;
+ if ( pPrintDialog && pPrintDialog->IsCollateEnabled() && pPrintDialog->IsCollateChecked() )
+ nCollateCopies = pPrintDialog->GetCopyCount();
+
+ for ( USHORT n=0; n<nCollateCopies; n++ )
+ {
+ long nTabStart = 0;
+ long nDisplayStart = 0;
+ long nAttrPage = 1;
+
+ for ( nTab=0; nTab<nTabCount; nTab++ )
+ {
+ if ( bAllTabs || !pMarkData || pMarkData->GetTableSelect( nTab ) )
+ {
+ FmFormView* pDrawView = NULL;
+ Rectangle aFull( 0, 0, LONG_MAX, LONG_MAX );
+ if ( aDocument.HasControl( nTab, aFull ) )
+ {
+ ScDrawLayer* pModel = aDocument.GetDrawLayer(); // ist nicht NULL
+ pDrawView = new FmFormView( pModel, pPrinter );
+ pDrawView->ShowPagePgNum( nTab, Point() );
+ pDrawView->SetPrintPreview( TRUE );
+ }
+
+ ScPrintFunc aPrintFunc( this, pPrinter, nTab, nAttrPage, nTotalPages, pMarkedRange );
+ aPrintFunc.SetDrawView( pDrawView );
+ aPrintFunc.DoPrint( aPageRanges, nTabStart, nDisplayStart, &rProgress );
+
+ nTabStart += aPageArr[nTab];
+ if ( aDocument.NeedPageResetAfterTab(nTab) )
+ nDisplayStart = 0;
+ else
+ nDisplayStart += aPageArr[nTab];
+ nAttrPage = aPrintFunc.GetFirstPageNo(); // behalten oder aus Vorlage
+
+ delete pDrawView;
+ }
+ }
+ }
+
+ delete pMarkedRange;
+
+ if (pOldJobSetup)
+ {
+ pPrinter->SetOrientation( pOldJobSetup->eOrientation );
+ pPrinter->SetPaperBin ( pOldJobSetup->nPaperBin );
+ pPrinter->SetPaper ( pOldJobSetup->ePaper );
+
+ if ( PAPER_USER == pOldJobSetup->ePaper )
+ {
+ pPrinter->SetMapMode( pOldJobSetup->aUserMapMode );
+ pPrinter->SetPaperSizeUser( pOldJobSetup->aUserSize );
+ }
+
+ delete pOldJobSetup;
+ pOldJobSetup = NULL;
+ }
+
+ PostPaintGridAll(); //! nur wenn geaendert
+}
+
+void ScDocShell::GetState( SfxItemSet &rSet )
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch (nWhich)
+ {
+ case FID_AUTO_CALC:
+ if ( (BOOL) aDocument.GetHardRecalcState() )
+ rSet.DisableItem( nWhich );
+ else
+ rSet.Put( SfxBoolItem( nWhich, aDocument.GetAutoCalc() ) );
+ break;
+
+ case FID_CHG_RECORD:
+ {
+ ScDocument* pDoc = GetDocument();
+ if(pDoc->GetChangeTrack()!=NULL)
+ rSet.Put( SfxBoolItem( nWhich, TRUE));
+ else
+ rSet.Put( SfxBoolItem( nWhich, FALSE));
+ }
+ break;
+
+ // Wenn eine Formel editiert wird, muss FID_RECALC auf jeden Fall enabled sein.
+ // Recalc fuer das Doc war mal wegen #29898# disabled, wenn AutoCalc an war,
+ // ist jetzt wegen #41540# aber auch immer enabled.
+// case FID_RECALC:
+// if ( aDocument.GetAutoCalc() )
+// rSet.DisableItem( nWhich );
+// break;
+
+ case SID_TABLES_COUNT:
+ rSet.Put( SfxUInt16Item( nWhich, aDocument.GetTableCount() ) );
+ break;
+
+ case SID_ATTR_YEAR2000 :
+ rSet.Put( SfxUInt16Item( nWhich,
+ aDocument.GetDocOptions().GetYear2000() ) );
+ break;
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+}
+
+void ScDocShell::GetSbxState( SfxItemSet &rSet )
+{
+ // SID_SC_SELECTION (Selection),
+ // SID_SC_ACTIVECELL (ActiveCell),
+ // SID_SC_ACTIVETAB (ActiveTable),
+ // SID_TABLES_GET (Tables),
+ // SID_PIVOT_GET (DataPilotTables) - removed (old Basic)
+
+ //
+ // Wenn hier Slots von der View-Shell executed werden, muss auch der
+ // GetState weitergeleitet werden!
+ //
+
+ ScTabViewShell* pVisibleSh = GetBestViewShell(); // sichtbare View
+ if ( pVisibleSh )
+ pVisibleSh->GetState( rSet );
+}
+
+void __EXPORT ScDocShell::Draw( OutputDevice* pDev, const JobSetup & rSetup, USHORT nAspect )
+{
+// bIsOle = TRUE; // jetzt ueber den CreateMode
+
+ USHORT nVisTab = aDocument.GetVisibleTab();
+ if (!aDocument.HasTable(nVisTab))
+ return;
+
+ if ( nAspect == ASPECT_THUMBNAIL )
+ {
+ Rectangle aBoundRect = GetVisArea( ASPECT_THUMBNAIL );
+ ScViewData aTmpData( this, NULL );
+ aTmpData.SetTabNo(nVisTab);
+ aDocument.SnapVisArea( aBoundRect );
+ aTmpData.SetScreen( aBoundRect );
+ ScPrintFunc::DrawToDev( &aDocument, pDev, 1.0, aBoundRect, &aTmpData, TRUE );
+ }
+ else
+ {
+ Rectangle aBoundRect = SfxInPlaceObject::GetVisArea();
+ ScViewData aTmpData( this, NULL );
+ aTmpData.SetTabNo(nVisTab);
+ aDocument.SnapVisArea( aBoundRect );
+ aTmpData.SetScreen( aBoundRect );
+ ScPrintFunc::DrawToDev( &aDocument, pDev, 1.0, aBoundRect, &aTmpData, TRUE );
+ }
+}
+
+Rectangle __EXPORT ScDocShell::GetVisArea( USHORT nAspect ) const
+{
+ if ( eShellMode == SFX_CREATE_MODE_ORGANIZER )
+ {
+ // ohne Inhalte wissen wir auch nicht, wie gross die Inhalte sind
+ // leeres Rechteck zurueckgeben, das wird dann nach dem Laden berechnet
+ return Rectangle();
+ }
+
+ if( nAspect == ASPECT_THUMBNAIL )
+ {
+// Rectangle aArea( 0,0, 3175,3175 ); // 120x120 Pixel in 1:1
+ Rectangle aArea( 0,0, SC_PREVIEW_SIZE_X,SC_PREVIEW_SIZE_Y );
+ aDocument.SnapVisArea( aArea );
+ return aArea;
+ }
+ else if( nAspect == ASPECT_CONTENT && eShellMode != SFX_CREATE_MODE_EMBEDDED )
+ {
+ // Visarea holen wie nach Load
+
+ USHORT nVisTab = aDocument.GetVisibleTab();
+ if (!aDocument.HasTable(nVisTab))
+ {
+ nVisTab = 0;
+ ((ScDocShell*)this)->aDocument.SetVisibleTab(nVisTab);
+ }
+ USHORT nStartCol,nStartRow;
+ aDocument.GetDataStart( nVisTab, nStartCol, nStartRow );
+ USHORT nEndCol,nEndRow;
+ aDocument.GetPrintArea( nVisTab, nEndCol, nEndRow );
+ if (nStartCol>nEndCol)
+ nStartCol = nEndCol;
+ if (nStartRow>nEndRow)
+ nStartRow = nEndRow;
+ Rectangle aNewArea = ((ScDocument&)aDocument)
+ .GetMMRect( nStartCol,nStartRow, nEndCol,nEndRow, nVisTab );
+ ((ScDocShell*)this)->SvEmbeddedObject::SetVisArea( aNewArea );
+ return aNewArea;
+ }
+ else
+ return SfxInPlaceObject::GetVisArea( nAspect );
+}
+
+SvDataMemberObjectRef __EXPORT ScDocShell::CreateSnapshot()
+{
+ ScDocShell* pNewSh = new ScDocShell;
+ SvEmbeddedObjectRef aDocShellRef = pNewSh;
+ pNewSh->DoInitNew(NULL);
+ pNewSh->ResetEmpty();
+ ScDocument* pDestDoc = pNewSh->GetDocument();
+ pDestDoc->RenameTab( 0,
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("______42_____")),
+ FALSE );
+
+ // Kopieren (wie in ScDataObject::GetCalcData):
+ // - Tabellen
+ // - Seitenvorlage
+
+ if (aDocument.GetDrawLayer())
+ pNewSh->MakeDrawLayer();
+
+ ScStyleSheetPool* pStylePool = aDocument.GetStyleSheetPool();
+ ScStyleSheetPool* pDestPool = pDestDoc->GetStyleSheetPool();
+
+ USHORT nCount = aDocument.GetTableCount();
+ for (USHORT nTab=0; nTab<nCount; nTab++)
+ {
+ pDestDoc->MakeTable( nTab );
+ pDestDoc->TransferTab( &aDocument, nTab, nTab ); // nicht einfuegen
+ String aStyleName = aDocument.GetPageStyle( nTab );
+ // CopyStyleFrom kopiert SetItems mit richtigem Pool
+ pDestPool->CopyStyleFrom( pStylePool, aStyleName, SFX_STYLE_FAMILY_PAGE );
+ }
+
+ pDestDoc->DeleteTab( nCount ); // vorher kann die einzige Tab nicht geloescht werden
+
+ aDocument.CopyDdeLinks( pDestDoc ); // Werte von DDE-Links kopieren
+
+ pDestDoc->SetViewOptions( aDocument.GetViewOptions() );
+
+ pDestDoc->SetVisibleTab( aDocument.GetVisibleTab() );
+ // hier muss auch der Start angepasst werden
+ pNewSh->SetVisAreaOrSize( SfxInPlaceObject::GetVisArea(), TRUE );
+
+ return new ScDataObject( pNewSh );
+}
+
+void ScDocShell::GetPageOnFromPageStyleSet( const SfxItemSet* pStyleSet,
+ USHORT nCurTab,
+ BOOL& rbHeader,
+ BOOL& rbFooter )
+{
+ if ( !pStyleSet )
+ {
+ ScStyleSheetPool* pStylePool = aDocument.GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->
+ Find( aDocument.GetPageStyle( nCurTab ),
+ SFX_STYLE_FAMILY_PAGE );
+
+ DBG_ASSERT( pStyleSheet, "PageStyle not found! :-/" );
+
+ if ( pStyleSheet )
+ pStyleSet = &pStyleSheet->GetItemSet();
+ else
+ rbHeader = rbFooter = FALSE;
+ }
+
+ DBG_ASSERT( pStyleSet, "PageStyle-Set not found! :-(" );
+
+ //--------------------------------------------------------------------
+
+ const SvxSetItem* pSetItem = NULL;
+ const SfxItemSet* pSet = NULL;
+
+ pSetItem = (const SvxSetItem*) &pStyleSet->Get( ATTR_PAGE_HEADERSET );
+ pSet = &pSetItem->GetItemSet();
+ rbHeader = ((const SfxBoolItem&)pSet->Get(ATTR_PAGE_ON)).GetValue();
+
+ pSetItem = (const SvxSetItem*) &pStyleSet->Get( ATTR_PAGE_FOOTERSET );
+ pSet = &pSetItem->GetItemSet();
+ rbFooter = ((const SfxBoolItem&)pSet->Get(ATTR_PAGE_ON)).GetValue();
+}
+
+long __EXPORT ScDocShell::DdeGetData( const String& rItem, SvData& rData )
+{
+ if( rData.GetFormat() == FORMAT_STRING )
+ {
+ if( rItem.EqualsIgnoreCaseAscii( "Format" ) )
+ {
+ ByteString aFmtByte( aDdeTextFmt, gsl_getSystemTextEncoding() );
+ rData.SetData( (void*) aFmtByte.GetBuffer(), aFmtByte.Len() + 1 );
+ return 1;
+ }
+ ScImportExport aObj( &aDocument, rItem );
+ if ( !aObj.IsRef() )
+ return 0; // ungueltiger Bereich
+
+ if( aDdeTextFmt.GetChar(0) == 'F' )
+ aObj.SetFormulas( TRUE );
+ if( aDdeTextFmt.EqualsAscii( "SYLK" ) || aDdeTextFmt.EqualsAscii( "FSYLK" ) )
+ {
+ ByteString aData;
+ if( aObj.ExportByteString( aData, gsl_getSystemTextEncoding(), SOT_FORMATSTR_ID_SYLK ) )
+ {
+ rData.SetData( (void*) aData.GetBuffer(), aData.Len() + 1 );
+ return 1;
+ }
+ else
+ return 0;
+ }
+ if( aDdeTextFmt.EqualsAscii( "CSV" ) || aDdeTextFmt.EqualsAscii( "FCSV" ) )
+ aObj.SetSeparator( ',' );
+ return aObj.ExportData( rData ) ? 1 : 0;
+ }
+
+ ScImportExport aObj( &aDocument, rItem );
+ if( aObj.IsRef() )
+ return aObj.ExportData( rData ) ? 1 : 0;
+ else
+ return 0;
+}
+
+long __EXPORT ScDocShell::DdeSetData( const String& rItem, const SvData& rData )
+{
+ SvData* p = (SvData*) &rData;
+
+ if( rData.GetFormat() == FORMAT_STRING )
+ {
+ if( rItem.EqualsIgnoreCaseAscii( "Format" ) )
+ {
+ p->GetData( aDdeTextFmt );
+ aDdeTextFmt.ToUpperAscii();
+ return 1;
+ }
+ ScImportExport aObj( &aDocument, rItem );
+ if( aDdeTextFmt.GetChar(0) == 'F' )
+ aObj.SetFormulas( TRUE );
+ if( aDdeTextFmt.EqualsAscii( "SYLK" ) || aDdeTextFmt.EqualsAscii( "FSYLK" ) )
+ {
+ String aData;
+ p->GetData( aData );
+ return aObj.ImportString( aData, SOT_FORMATSTR_ID_SYLK ) ? 1 : 0;
+ }
+ if( aDdeTextFmt.EqualsAscii( "CSV" ) || aDdeTextFmt.EqualsAscii( "FCSV" ) )
+ aObj.SetSeparator( ',' );
+ return aObj.ImportData( *p ) ? 1 : 0;
+ }
+ ScImportExport aObj( &aDocument, rItem );
+ if( aObj.IsRef() )
+ return aObj.ImportData( *p ) ? 1 : 0;
+ else
+ return 0;
+}
+
+SvPseudoObject* __EXPORT ScDocShell::DdeCreateHotLink( const String& rItem )
+{
+ // only check for valid item string - range is parsed again in ScServerObject ctor
+
+ // named range?
+ String aPos = rItem;
+ ScRangeName* pRange = aDocument.GetRangeName();
+ if( pRange )
+ {
+ USHORT nPos;
+ if( pRange->SearchName( aPos, nPos ) )
+ {
+ ScRangeData* pData = (*pRange)[ nPos ];
+ if( pData->HasType( RT_REFAREA )
+ || pData->HasType( RT_ABSAREA )
+ || pData->HasType( RT_ABSPOS ) )
+ pData->GetSymbol( aPos ); // continue with the name's contents
+ }
+ }
+ ScRange aRange;
+ BOOL bValid = ( ( aRange.Parse( aPos, &aDocument ) & SCA_VALID ) ||
+ ( aRange.aStart.Parse( aPos, &aDocument ) & SCA_VALID ) );
+
+ ScServerObject* pObj = NULL; // NULL = error
+ if ( bValid )
+ pObj = new ScServerObject( this, rItem );
+
+ // GetLinkManager()->InsertServer() is in the ScServerObject ctor
+
+ return pObj;
+}
+
+//------------------------------------------------------------------
+
+ScViewData* ScDocShell::GetViewData()
+{
+ SfxViewShell* pCur = SfxViewShell::Current();
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,pCur);
+ return pViewSh ? pViewSh->GetViewData() : NULL;
+}
+
+//------------------------------------------------------------------
+
+USHORT ScDocShell::GetCurTab()
+{
+ //! this must be made non-static and use a ViewShell from this document!
+
+ ScViewData* pViewData = GetViewData();
+
+ return pViewData ? pViewData->GetTabNo() : 0;
+}
+
+ScTabViewShell* ScDocShell::GetBestViewShell()
+{
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ // falsches Doc?
+ if( pViewSh && pViewSh->GetViewData()->GetDocShell() != this )
+ pViewSh = NULL;
+ if( !pViewSh )
+ {
+ // 1. ViewShell suchen
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( this, TYPE(SfxTopViewFrame) );
+ if( pFrame )
+ {
+ SfxViewShell* p = pFrame->GetViewShell();
+ pViewSh = PTR_CAST(ScTabViewShell,p);
+ }
+ }
+ return pViewSh;
+}
+
+
+//------------------------------------------------------------------
+
+ScDocShell* ScDocShell::GetShellByNum( USHORT nDocNo ) // static
+{
+ ScDocShell* pFound = NULL;
+ SfxObjectShell* pShell = SfxObjectShell::GetFirst();
+ USHORT nShellCnt = 0;
+
+ while ( pShell && !pFound )
+ {
+ if ( pShell->Type() == TYPE(ScDocShell) )
+ {
+ if ( nShellCnt == nDocNo )
+ pFound = (ScDocShell*) pShell;
+ else
+ ++nShellCnt;
+ }
+ pShell = SfxObjectShell::GetNext( *pShell );
+ }
+
+ return pFound;
+}
+
+//------------------------------------------------------------------
+
+IMPL_LINK( ScDocShell, ChartSelectionHdl, ChartSelectionInfo*, pInfo )
+{
+ if (!pInfo)
+ return 0;
+
+ // die View suchen, auf der das Objekt aktiv ist
+
+ SfxViewFrame *pFrame = SfxViewFrame::GetFirst( this );
+ while (pFrame)
+ {
+ SfxViewShell* pSh = pFrame->GetViewShell();
+ if (pSh && pSh->ISA(ScTabViewShell))
+ {
+ ScTabViewShell* pViewSh = (ScTabViewShell*)pSh;
+ SfxInPlaceClient* pClient = pViewSh->GetIPClient();
+ if ( pClient && pClient->IsInPlaceActive() )
+ {
+ SvInPlaceObjectRef xIPObj = pClient->GetIPObj();
+ if (xIPObj.Is())
+ {
+ SchMemChart* pMemChart = SchDLL::GetChartData(xIPObj);
+ if (pMemChart)
+ return pViewSh->DoChartSelection( *pInfo, *pMemChart );
+ }
+ }
+ }
+ pFrame = SfxViewFrame::GetNext( *pFrame, this );
+ }
+
+ return 0;
+}
+
+
+
diff --git a/sc/source/ui/docshell/docsh5.cxx b/sc/source/ui/docshell/docsh5.cxx
new file mode 100644
index 000000000000..739f3553e8bc
--- /dev/null
+++ b/sc/source/ui/docshell/docsh5.cxx
@@ -0,0 +1,941 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh5.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#define _BASEDLGS_HXX
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+//#define _COLOR_HXX
+//#define _CTRLBOX_HXX
+//#define _CTRLTOOL_HXX
+#define _DIALOGS_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+//#define _FIELD_HXX
+#define _FILDLG_HXX
+//#define _FILTER_HXX
+#define _FONTDLG_HXX
+#define _FRM3D_HXX
+//#define _GRAPH_HXX
+//#define _GDIMTF_HXX
+#define _INTRO_HXX
+#define _ISETBWR_HXX
+#define _NO_SVRTF_PARSER_HXX
+//#define _MDIFRM_HXX
+#define _MACRODLG_HXX
+#define _MODALDLG_HXX
+#define _MOREBUTTON_HXX
+//#define _MAPMOD_HXX
+#define _OUTLINER_HXX
+//#define _PAL_HXX
+#define _PASSWD_HXX
+//#define _PRNDLG_HXX //
+#define _POLY_HXX
+#define _PVRWIN_HXX
+#define _QUEUE_HXX
+#define _RULER_HXX
+#define _SCRWIN_HXX
+//#define _SELENG_HXX
+#define _SETBRW_HXX
+//#define _SOUND_HXX
+#define _STACK_HXX
+//#define _STATUS_HXX ***
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _SYSDLG_HXX
+//#define _TAB_HXX
+#define _TABBAR_HXX
+//#define _TREELIST_HXX
+//#define _VALUESET_HXX
+#define _VCBRW_HXX
+#define _VCTRLS_HXX
+//#define _VCATTR_HXX
+#define _VCSBX_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+//#define _VIEWFAC_HXX
+
+
+#define _SFX_PRNMON_HXX
+#define _SFX_RESMGR_HXX
+//#define _SFX_SAVEOPT_HXX
+#define _SFX_TEMPLDLG_HXX
+//#define _SFXAPP_HXX
+#define _SFXBASIC_HXX
+//#define _SFXCTRLITEM_HXX
+//#define _SFXDISPATCH_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXMNUMGR_HXX
+//#define _SFXMSG_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+//#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXTBXMGR_HXX
+#define _SFX_TEMPLDLG_HXX
+
+#define _SI_DLL_HXX
+#define _SIDLL_HXX
+#define _SI_NOITEMS
+#define _SI_NOOTHERFORMS
+#define _SI_NOSBXCONTROLS
+#define _SINOSBXCONTROLS
+#define _SI_NODRW
+#define _SI_NOCONTROL
+
+#define _SV_NOXSOUND
+#define _SVDATTR_HXX
+#define _SVDETC_HXX
+#define _SVDIO_HXX
+#define _SVDRAG_HXX
+#define _SVDLAYER_HXX
+#define _SVDXOUT_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+#include "scitems.hxx"
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/waitobj.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/bindings.hxx>
+#include <svtools/smplhint.hxx>
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "docsh.hxx"
+#include "global.hxx"
+#include "globstr.hrc"
+#include "undodat.hxx"
+#include "undotab.hxx"
+#include "undoblk.hxx"
+//#include "pivot.hxx"
+#include "dpobject.hxx"
+#include "dpshttab.hxx"
+#include "dbdocfun.hxx"
+#include "consoli.hxx"
+#include "dbcolect.hxx"
+#include "olinetab.hxx"
+#include "patattr.hxx"
+#include "attrib.hxx"
+#include "docpool.hxx"
+#include "uiitems.hxx"
+#include "sc.hrc"
+#include "waitoff.hxx"
+
+// ---------------------------------------------------------------------------
+
+//
+// ehemalige viewfunc/dbfunc Methoden
+//
+
+void ScDocShell::ErrorMessage( USHORT nGlobStrId )
+{
+ //! StopMarking an der (aktiven) View?
+
+ Window* pParent = GetDialogParent();
+ ScWaitCursorOff aWaitOff( pParent );
+ BOOL bFocus = pParent && pParent->HasFocus();
+
+ if(nGlobStrId==STR_PROTECTIONERR)
+ {
+ if(IsReadOnly())
+ {
+ nGlobStrId=STR_READONLYERR;
+ }
+ }
+
+ InfoBox aBox( pParent, ScGlobal::GetRscString( nGlobStrId ) );
+ aBox.Execute();
+ if (bFocus)
+ pParent->GrabFocus();
+}
+
+void ScDocShell::DBAreaDeleted( USHORT nTab, USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 )
+{
+ ScDocShellModificator aModificator( *this );
+ aDocument.RemoveFlagsTab( nX1, nY1, nX2, nY1, nTab, SC_MF_AUTO );
+ PostPaint( nX1, nY1, nTab, nX2, nY1, nTab, PAINT_GRID );
+ aModificator.SetDocumentModified();
+}
+
+ScDBData* lcl_GetDBNearCursor( ScDBCollection* pColl, USHORT nCol, USHORT nRow, USHORT nTab )
+{
+ //! nach document/dbcolect verschieben
+
+ if (!pColl)
+ return NULL;
+
+ ScDBData* pNoNameData = NULL;
+ ScDBData* pNearData = NULL;
+ USHORT nCount = pColl->GetCount();
+ String aNoName = ScGlobal::GetRscString( STR_DB_NONAME );
+ USHORT nAreaTab, nStartCol, nStartRow, nEndCol, nEndRow;
+ for (USHORT i = 0; i < nCount; i++)
+ {
+ ScDBData* pDB = (*pColl)[i];
+ pDB->GetArea( nAreaTab, nStartCol, nStartRow, nEndCol, nEndRow );
+ if ( nTab == nAreaTab && nCol+1 >= nStartCol && nCol <= nEndCol+1 &&
+ nRow+1 >= nStartRow && nRow <= nEndRow+1 )
+ {
+ if ( pDB->GetName() == aNoName )
+ pNoNameData = pDB;
+ else if ( nCol < nStartCol || nCol > nEndCol || nRow < nStartRow || nRow > nEndRow )
+ {
+ if (!pNearData)
+ pNearData = pDB; // ersten angrenzenden Bereich merken
+ }
+ else
+ return pDB; // nicht "unbenannt" und Cursor steht wirklich drin
+ }
+ }
+ if (pNearData)
+ return pNearData; // angrenzender, wenn nichts direkt getroffen
+ return pNoNameData; // "unbenannt" nur zurueck, wenn sonst nichts gefunden
+}
+
+ScDBData* ScDocShell::GetDBData( const ScRange& rMarked, ScGetDBMode eMode, BOOL bForceMark )
+{
+ USHORT nCol = rMarked.aStart.Col();
+ USHORT nRow = rMarked.aStart.Row();
+ USHORT nTab = rMarked.aStart.Tab();
+
+ USHORT nStartCol = nCol;
+ USHORT nStartRow = nRow;
+ USHORT nStartTab = nTab;
+ USHORT nEndCol = rMarked.aEnd.Col();
+ USHORT nEndRow = rMarked.aEnd.Row();
+ USHORT nEndTab = rMarked.aEnd.Tab();
+
+ // Wegen #49655# nicht einfach GetDBAtCursor: Der zusammenhaengende Datenbereich
+ // fuer "unbenannt" (GetDataArea) kann neben dem Cursor legen, also muss auch ein
+ // benannter DB-Bereich dort gesucht werden.
+
+ ScDBData* pData = aDocument.GetDBAtArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow );
+ if (!pData)
+ pData = lcl_GetDBNearCursor( aDocument.GetDBCollection(), nCol, nRow, nTab );
+
+ BOOL bSelected = ( bForceMark || rMarked.aStart != rMarked.aEnd );
+
+ BOOL bUseThis = FALSE;
+ if (pData)
+ {
+ // Bereich nehmen, wenn nichts anderes markiert
+
+ USHORT nDummy;
+ USHORT nOldCol1;
+ USHORT nOldRow1;
+ USHORT nOldCol2;
+ USHORT nOldRow2;
+ pData->GetArea( nDummy, nOldCol1,nOldRow1, nOldCol2,nOldRow2 );
+ BOOL bIsNoName = ( pData->GetName() == ScGlobal::GetRscString( STR_DB_NONAME ) );
+
+ if (!bSelected)
+ {
+ bUseThis = TRUE;
+ if ( bIsNoName && eMode == SC_DB_MAKE )
+ {
+ // wenn nichts markiert, "unbenannt" auf zusammenhaengenden Bereich anpassen
+ nStartCol = nCol;
+ nStartRow = nRow;
+ nEndCol = nStartCol;
+ nEndRow = nStartRow;
+ aDocument.GetDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow, FALSE );
+ if ( nOldCol1 != nStartCol || nOldCol2 != nEndCol || nOldRow1 != nStartRow )
+ bUseThis = FALSE; // passt gar nicht
+ else if ( nOldRow2 != nEndRow )
+ {
+ // Bereich auf neue End-Zeile erweitern
+ pData->SetArea( nTab, nOldCol1,nOldRow1, nOldCol2,nEndRow );
+ }
+ }
+ }
+ else
+ {
+ if ( nOldCol1 == nStartCol && nOldRow1 == nStartRow &&
+ nOldCol2 == nEndCol && nOldRow2 == nEndRow ) // genau markiert?
+ bUseThis = TRUE;
+ else
+ bUseThis = FALSE; // immer Markierung nehmen (Bug 11964)
+ }
+
+ // fuer Import nie "unbenannt" nehmen
+
+ if ( bUseThis && eMode == SC_DB_IMPORT && bIsNoName )
+ bUseThis = FALSE;
+ }
+
+ if ( bUseThis )
+ {
+ pData->GetArea( nStartTab, nStartCol,nStartRow, nEndCol,nEndRow );
+ nEndTab = nStartTab;
+ }
+ else if ( eMode == SC_DB_OLD )
+ {
+ pData = NULL; // nichts gefunden
+ nStartCol = nEndCol = nCol;
+ nStartRow = nEndRow = nRow;
+ nStartTab = nEndTab = nTab;
+// bMark = FALSE; // nichts zu markieren
+ }
+ else
+ {
+ if ( bSelected )
+ {
+// bMark = FALSE;
+ }
+ else
+ { // zusammenhaengender Bereich
+ nStartCol = nCol;
+ nStartRow = nRow;
+ nEndCol = nStartCol;
+ nEndRow = nStartRow;
+ aDocument.GetDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow, FALSE );
+ }
+
+ BOOL bHasHeader = aDocument.HasColHeader( nStartCol,nStartRow, nEndCol,nEndRow, nTab );
+
+ ScDBData* pNoNameData;
+ USHORT nNoNameIndex;
+ ScDBCollection* pColl = aDocument.GetDBCollection();
+ if ( eMode != SC_DB_IMPORT &&
+ pColl->SearchName( ScGlobal::GetRscString( STR_DB_NONAME ), nNoNameIndex ) )
+ {
+ pNoNameData = (*pColl)[nNoNameIndex];
+
+ USHORT nOldX1; // alten Bereich sauber wegnehmen
+ USHORT nOldY1; //! (UNDO ???)
+ USHORT nOldX2;
+ USHORT nOldY2;
+ USHORT nOldTab;
+ pNoNameData->GetArea( nOldTab, nOldX1, nOldY1, nOldX2, nOldY2 );
+ DBAreaDeleted( nOldTab, nOldX1, nOldY1, nOldX2, nOldY2 );
+
+ pNoNameData->SetSortParam( ScSortParam() ); // Parameter zuruecksetzen
+ pNoNameData->SetQueryParam( ScQueryParam() );
+ pNoNameData->SetSubTotalParam( ScSubTotalParam() );
+
+ pNoNameData->SetArea( nTab, nStartCol,nStartRow, nEndCol,nEndRow ); // neu setzen
+ pNoNameData->SetByRow( TRUE );
+ pNoNameData->SetHeader( bHasHeader );
+ pNoNameData->SetAutoFilter( FALSE );
+ }
+ else
+ {
+ ScDBCollection* pUndoColl = NULL;
+
+ String aNewName;
+ if (eMode==SC_DB_IMPORT)
+ {
+ aDocument.CompileDBFormula( TRUE ); // CreateFormulaString
+ pUndoColl = new ScDBCollection( *pColl ); // Undo fuer Import1-Bereich
+
+ String aImport = ScGlobal::GetRscString( STR_DBNAME_IMPORT );
+ long nCount = 0;
+ USHORT nDummy;
+ do
+ {
+ ++nCount;
+ aNewName = aImport;
+ aNewName += String::CreateFromInt32( nCount );
+ }
+ while (pColl->SearchName( aNewName, nDummy ));
+ }
+ else
+ aNewName = ScGlobal::GetRscString( STR_DB_NONAME );
+ pNoNameData = new ScDBData( aNewName, nTab,
+ nStartCol,nStartRow, nEndCol,nEndRow,
+ TRUE, bHasHeader );
+ pColl->Insert( pNoNameData );
+
+ if ( pUndoColl )
+ {
+ aDocument.CompileDBFormula( FALSE ); // CompileFormulaString
+
+ ScDBCollection* pRedoColl = new ScDBCollection( *pColl );
+ GetUndoManager()->AddUndoAction( new ScUndoDBData( this, pUndoColl, pRedoColl ) );
+ }
+
+ // neuen Bereich am Sba anmelden nicht mehr noetig
+
+ // "Import1" etc am Navigator bekanntmachen
+ if (eMode==SC_DB_IMPORT)
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_DBAREAS_CHANGED ) );
+ }
+ pData = pNoNameData;
+ }
+
+// if (bMark)
+// MarkRange( ScRange( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab ), FALSE );
+
+ return pData;
+}
+
+
+ // Hoehen anpassen
+ //! mit docfunc zusammenfassen
+
+BOOL ScDocShell::AdjustRowHeight( USHORT nStartRow, USHORT nEndRow, USHORT nTab )
+{
+ VirtualDevice aVDev;
+ Point aLogic = aVDev.LogicToPixel( Point(1000,1000), MAP_TWIP );
+ double nPPTX = aLogic.X() / 1000.0;
+ double nPPTY = aLogic.Y() / 1000.0;
+ nPPTX /= GetOutputFactor(); // noetig fuer Bildschirm/VDev
+ Fraction aZoom(1,1);
+ BOOL bChange = aDocument.SetOptimalHeight( nStartRow,nEndRow, nTab, 0, &aVDev,
+ nPPTX,nPPTY, aZoom,aZoom, FALSE );
+ if (bChange)
+ PostPaint( 0,nStartRow,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID|PAINT_LEFT );
+
+ return bChange;
+}
+
+void ScDocShell::PivotUpdate( ScPivot* pOldPivot, ScPivot* pNewPivot, BOOL bRecord, BOOL bApi )
+{
+ DBG_ERRORFILE("PivotUpdate is obsolete!");
+}
+
+void ScDocShell::RefreshPivotTables( const ScRange& rSource )
+{
+ //! rename to RefreshDataPilotTables?
+
+ ScDPCollection* pColl = aDocument.GetDPCollection();
+ if ( pColl )
+ {
+ // DataPilotUpdate doesn't modify the collection order like PivotUpdate did,
+ // so a simple loop can be used.
+
+ USHORT nCount = pColl->GetCount();
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ ScDPObject* pOld = (*pColl)[i];
+ if ( pOld )
+ {
+ const ScSheetSourceDesc* pSheetDesc = pOld->GetSheetDesc();
+ if ( pSheetDesc && pSheetDesc->aSourceRange.Intersects( rSource ) )
+ {
+ ScDPObject* pNew = new ScDPObject( *pOld );
+ ScDBDocFunc aFunc( *this );
+ aFunc.DataPilotUpdate( pOld, pNew, TRUE, FALSE );
+ delete pNew; // DataPilotUpdate copies settings from "new" object
+ }
+ }
+ }
+ }
+}
+
+String lcl_GetAreaName( ScDocument* pDoc, ScArea* pArea )
+{
+ String aName;
+ BOOL bOk = FALSE;
+ ScDBData* pData = pDoc->GetDBAtArea( pArea->nTab, pArea->nColStart, pArea->nRowStart,
+ pArea->nColEnd, pArea->nRowEnd );
+ if (pData)
+ {
+ pData->GetName( aName );
+ if ( aName != ScGlobal::GetRscString( STR_DB_NONAME ) )
+ bOk = TRUE;
+ }
+
+ if (!bOk)
+ pDoc->GetName( pArea->nTab, aName );
+
+ return aName;
+}
+
+void ScDocShell::DoConsolidate( const ScConsolidateParam& rParam, BOOL bRecord )
+{
+ ScConsData aData;
+
+ USHORT nPos;
+ USHORT nColSize = 0;
+ USHORT nRowSize = 0;
+ BOOL bErr = FALSE;
+ for (nPos=0; nPos<rParam.nDataAreaCount; nPos++)
+ {
+ ScArea* pArea = rParam.ppDataAreas[nPos];
+ nColSize = Max( nColSize, USHORT( pArea->nColEnd - pArea->nColStart + 1 ) );
+ nRowSize = Max( nRowSize, USHORT( pArea->nRowEnd - pArea->nRowStart + 1 ) );
+
+ // Test, ob Quelldaten verschoben wuerden
+ if (rParam.bReferenceData)
+ if (pArea->nTab == rParam.nTab && pArea->nRowEnd >= rParam.nRow)
+ bErr = TRUE;
+ }
+
+ if (bErr)
+ {
+ InfoBox aBox( GetDialogParent(),
+ ScGlobal::GetRscString( STR_CONSOLIDATE_ERR1 ) );
+ aBox.Execute();
+ return;
+ }
+
+ // ausfuehren
+
+ WaitObject aWait( GetDialogParent() );
+ ScDocShellModificator aModificator( *this );
+
+ ScRange aOldDest;
+ ScDBData* pDestData = aDocument.GetDBAtCursor( rParam.nCol, rParam.nRow, rParam.nTab, TRUE );
+ if (pDestData)
+ pDestData->GetArea(aOldDest);
+
+ aData.SetSize( nColSize, nRowSize );
+ aData.SetFlags( rParam.eFunction, rParam.bByCol, rParam.bByRow, rParam.bReferenceData );
+ if ( rParam.bByCol || rParam.bByRow )
+ for (nPos=0; nPos<rParam.nDataAreaCount; nPos++)
+ {
+ ScArea* pArea = rParam.ppDataAreas[nPos];
+ aData.AddFields( &aDocument, pArea->nTab, pArea->nColStart, pArea->nRowStart,
+ pArea->nColEnd, pArea->nRowEnd );
+ }
+ aData.DoneFields();
+ for (nPos=0; nPos<rParam.nDataAreaCount; nPos++)
+ {
+ ScArea* pArea = rParam.ppDataAreas[nPos];
+ aData.AddData( &aDocument, pArea->nTab, pArea->nColStart, pArea->nRowStart,
+ pArea->nColEnd, pArea->nRowEnd );
+ aData.AddName( lcl_GetAreaName(&aDocument,pArea) );
+ }
+
+ aData.GetSize( nColSize, nRowSize );
+ if (bRecord && nColSize && nRowSize)
+ {
+ ScDBData* pUndoData = pDestData ? new ScDBData(*pDestData) : NULL;
+
+ USHORT nDestTab = rParam.nTab;
+ ScArea aDestArea( rParam.nTab, rParam.nCol, rParam.nRow,
+ rParam.nCol+nColSize-1, rParam.nRow+nRowSize-1 );
+ if (rParam.bByCol) ++aDestArea.nColEnd;
+ if (rParam.bByRow) ++aDestArea.nRowEnd;
+
+ if (rParam.bReferenceData)
+ {
+ USHORT nTabCount = aDocument.GetTableCount();
+ USHORT nInsertCount = aData.GetInsertCount();
+
+ // alte Outlines
+ ScOutlineTable* pTable = aDocument.GetOutlineTable( nDestTab );
+ ScOutlineTable* pUndoTab = pTable ? new ScOutlineTable( *pTable ) : NULL;
+
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( &aDocument, 0, nTabCount-1, FALSE, TRUE );
+
+ // Zeilenstatus
+ aDocument.CopyToDocument( 0,0,nDestTab, MAXCOL,MAXROW,nDestTab,
+ IDF_NONE, FALSE, pUndoDoc );
+
+ // alle Formeln
+ aDocument.CopyToDocument( 0,0,0, MAXCOL,MAXROW,nTabCount-1,
+ IDF_FORMULA, FALSE, pUndoDoc );
+
+ // komplette Ausgangszeilen
+ aDocument.CopyToDocument( 0,aDestArea.nRowStart,nDestTab,
+ MAXCOL,aDestArea.nRowEnd,nDestTab,
+ IDF_ALL, FALSE, pUndoDoc );
+
+ // alten Ausgabebereich
+ if (pDestData)
+ aDocument.CopyToDocument( aOldDest, IDF_ALL, FALSE, pUndoDoc );
+
+ GetUndoManager()->AddUndoAction(
+ new ScUndoConsolidate( this, aDestArea, rParam, pUndoDoc,
+ TRUE, nInsertCount, pUndoTab, pUndoData ) );
+ }
+ else
+ {
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( &aDocument, aDestArea.nTab, aDestArea.nTab );
+
+ aDocument.CopyToDocument( aDestArea.nColStart, aDestArea.nRowStart, aDestArea.nTab,
+ aDestArea.nColEnd, aDestArea.nRowEnd, aDestArea.nTab,
+ IDF_ALL, FALSE, pUndoDoc );
+
+ // alten Ausgabebereich
+ if (pDestData)
+ aDocument.CopyToDocument( aOldDest, IDF_ALL, FALSE, pUndoDoc );
+
+ GetUndoManager()->AddUndoAction(
+ new ScUndoConsolidate( this, aDestArea, rParam, pUndoDoc,
+ FALSE, 0, NULL, pUndoData ) );
+ }
+ }
+
+ if (pDestData) // Zielbereich loeschen / anpassen
+ {
+ aDocument.DeleteAreaTab(aOldDest, IDF_CONTENTS);
+ pDestData->SetArea( rParam.nTab, rParam.nCol, rParam.nRow,
+ rParam.nCol + nColSize - 1, rParam.nRow + nRowSize - 1 );
+ pDestData->SetHeader( rParam.bByRow );
+ }
+
+ aData.OutputToDocument( &aDocument, rParam.nCol, rParam.nRow, rParam.nTab );
+
+ USHORT nPaintStartCol = rParam.nCol;
+ USHORT nPaintStartRow = rParam.nRow;
+ USHORT nPaintEndCol = nPaintStartCol + nColSize - 1;
+ USHORT nPaintEndRow = nPaintStartRow + nRowSize - 1;
+ USHORT nPaintFlags = PAINT_GRID;
+ if (rParam.bByCol)
+ ++nPaintEndRow;
+ if (rParam.bByRow)
+ ++nPaintEndCol;
+ if (rParam.bReferenceData)
+ {
+ nPaintStartCol = 0;
+ nPaintEndCol = MAXCOL;
+ nPaintEndRow = MAXROW;
+ nPaintFlags |= PAINT_LEFT | PAINT_SIZE;
+ }
+ if (pDestData)
+ {
+ if ( aOldDest.aEnd.Col() > nPaintEndCol )
+ nPaintEndCol = aOldDest.aEnd.Col();
+ if ( aOldDest.aEnd.Row() > nPaintEndRow )
+ nPaintEndRow = aOldDest.aEnd.Row();
+ }
+ PostPaint( nPaintStartCol, nPaintStartRow, rParam.nTab,
+ nPaintEndCol, nPaintEndRow, rParam.nTab, nPaintFlags );
+ aModificator.SetDocumentModified();
+}
+
+void ScDocShell::UseScenario( USHORT nTab, const String& rName, BOOL bRecord )
+{
+ if (!aDocument.IsScenario(nTab))
+ {
+ USHORT nTabCount = aDocument.GetTableCount();
+ USHORT nSrcTab = USHRT_MAX;
+ USHORT nEndTab = nTab;
+ String aCompare;
+ while ( nEndTab+1 < nTabCount && aDocument.IsScenario(nEndTab+1) )
+ {
+ ++nEndTab;
+ if (nSrcTab > MAXTAB) // noch auf der Suche nach dem Szenario?
+ {
+ aDocument.GetName( nEndTab, aCompare );
+ if (aCompare == rName)
+ nSrcTab = nEndTab; // gefunden
+ }
+ }
+ if (nSrcTab <= MAXTAB)
+ {
+ if ( aDocument.TestCopyScenario( nSrcTab, nTab ) ) // Zellschutz testen
+ {
+ ScDocShellModificator aModificator( *this );
+ ScMarkData aScenMark;
+ aDocument.MarkScenario( nSrcTab, nTab, aScenMark );
+ ScRange aMultiRange;
+ aScenMark.GetMultiMarkArea( aMultiRange );
+ USHORT nStartCol = aMultiRange.aStart.Col();
+ USHORT nStartRow = aMultiRange.aStart.Row();
+ USHORT nEndCol = aMultiRange.aEnd.Col();
+ USHORT nEndRow = aMultiRange.aEnd.Row();
+
+ if (bRecord)
+ {
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( &aDocument, nTab,nEndTab ); // auch alle Szenarien
+ // angezeigte Tabelle:
+ aDocument.CopyToDocument( nStartCol,nStartRow,nTab,
+ nEndCol,nEndRow,nTab, IDF_ALL,TRUE, pUndoDoc, &aScenMark );
+ // Szenarien
+ for (USHORT i=nTab+1; i<=nEndTab; i++)
+ {
+ pUndoDoc->SetScenario( i, TRUE );
+ String aComment;
+ Color aColor;
+ USHORT nScenFlags;
+ aDocument.GetScenarioData( i, aComment, aColor, nScenFlags );
+ pUndoDoc->SetScenarioData( i, aComment, aColor, nScenFlags );
+ BOOL bActive = aDocument.IsActiveScenario( i );
+ pUndoDoc->SetActiveScenario( i, bActive );
+ // Bei Zurueckkopier-Szenarios auch Inhalte
+ if ( nScenFlags & SC_SCENARIO_TWOWAY )
+ aDocument.CopyToDocument( 0,0,i, MAXCOL,MAXROW,i,
+ IDF_ALL,FALSE, pUndoDoc );
+ }
+
+ GetUndoManager()->AddUndoAction(
+ new ScUndoUseScenario( this, aScenMark,
+ ScArea( nTab,nStartCol,nStartRow,nEndCol,nEndRow ),
+ pUndoDoc, rName ) );
+ }
+
+ aDocument.CopyScenario( nSrcTab, nTab );
+ aDocument.SetDirty();
+
+ // alles painten, weil in anderen Bereichen das aktive Szenario
+ // geaendert sein kann
+ //! nur, wenn sichtbare Rahmen vorhanden?
+ PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID );
+ aModificator.SetDocumentModified();
+ }
+ else
+ {
+ InfoBox aBox(GetDialogParent(),
+ ScGlobal::GetRscString( STR_PROTECTIONERR ) );
+ aBox.Execute();
+ }
+ }
+ else
+ {
+ InfoBox aBox(GetDialogParent(),
+ ScGlobal::GetRscString( STR_SCENARIO_NOTFOUND ) );
+ aBox.Execute();
+ }
+ }
+ else
+ DBG_ERROR( "UseScenario auf Szenario-Blatt" );
+}
+
+void ScDocShell::ModifyScenario( USHORT nTab, const String& rName, const String& rComment,
+ const Color& rColor, USHORT nFlags )
+{
+ // Undo
+ String aOldName;
+ aDocument.GetName( nTab, aOldName );
+ String aOldComment;
+ Color aOldColor;
+ USHORT nOldFlags;
+ aDocument.GetScenarioData( nTab, aOldComment, aOldColor, nOldFlags );
+ GetUndoManager()->AddUndoAction(
+ new ScUndoScenarioFlags( this, nTab,
+ aOldName, rName, aOldComment, rComment,
+ aOldColor, rColor, nOldFlags, nFlags ) );
+
+ // ausfuehren
+ ScDocShellModificator aModificator( *this );
+ aDocument.RenameTab( nTab, rName );
+ aDocument.SetScenarioData( nTab, rComment, rColor, nFlags );
+ PostPaintGridAll();
+ aModificator.SetDocumentModified();
+
+ if ( rName != aOldName )
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+
+ SFX_BINDINGS().Invalidate( SID_SELECT_SCENARIO );
+}
+
+USHORT ScDocShell::MakeScenario( USHORT nTab, const String& rName, const String& rComment,
+ const Color& rColor, USHORT nFlags,
+ ScMarkData& rMark, BOOL bRecord )
+{
+ rMark.MarkToMulti();
+ if (rMark.IsMultiMarked())
+ {
+ USHORT nNewTab = nTab + 1;
+ while (aDocument.IsScenario(nNewTab))
+ ++nNewTab;
+
+ BOOL bCopyAll = ( (nFlags & SC_SCENARIO_COPYALL) != 0 );
+ const ScMarkData* pCopyMark = NULL;
+ if (!bCopyAll)
+ pCopyMark = &rMark;
+
+ ScDocShellModificator aModificator( *this );
+
+ if (aDocument.CopyTab( nTab, nNewTab, pCopyMark ))
+ {
+ if (bRecord)
+ {
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( &aDocument, nTab,nTab );
+ GetUndoManager()->AddUndoAction(
+ new ScUndoMakeScenario( this, nTab, nNewTab, pUndoDoc,
+ rName, rComment, rColor, nFlags, rMark ));
+ }
+
+ aDocument.RenameTab( nNewTab, rName, FALSE ); // ohne Formel-Update
+ aDocument.SetScenario( nNewTab, TRUE );
+ aDocument.SetScenarioData( nNewTab, rComment, rColor, nFlags );
+
+ ScMarkData aDestMark = rMark;
+ aDestMark.SelectOneTable( nNewTab );
+
+ //! auf Filter / Buttons / Merging testen !
+
+ ScPatternAttr aProtPattern( aDocument.GetPool() );
+ aProtPattern.GetItemSet().Put( ScProtectionAttr( TRUE ) );
+ aDocument.ApplyPatternAreaTab( 0,0, MAXCOL,MAXROW, nNewTab, aProtPattern );
+
+ ScPatternAttr aPattern( aDocument.GetPool() );
+ aPattern.GetItemSet().Put( ScMergeFlagAttr( SC_MF_SCENARIO ) );
+ aPattern.GetItemSet().Put( ScProtectionAttr( TRUE ) );
+ aDocument.ApplySelectionPattern( aPattern, aDestMark );
+
+ if (!bCopyAll)
+ aDocument.SetVisible( nNewTab, FALSE );
+
+ // dies ist dann das aktive Szenario
+ aDocument.CopyScenario( nNewTab, nTab, TRUE ); // TRUE - nicht aus Szenario kopieren
+
+ if (nFlags & SC_SCENARIO_SHOWFRAME)
+ PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID ); // Rahmen painten
+ PostPaintExtras(); // Tabellenreiter
+ aModificator.SetDocumentModified();
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+
+ return nNewTab;
+ }
+ }
+ return nTab;
+}
+
+BOOL ScDocShell::MoveTable( USHORT nSrcTab, USHORT nDestTab, BOOL bCopy, BOOL bRecord )
+{
+ ScDocShellModificator aModificator( *this );
+
+ if (bCopy)
+ {
+ if (bRecord)
+ aDocument.BeginDrawUndo(); // drawing layer must do its own undo actions
+
+ if (!aDocument.CopyTab( nSrcTab, nDestTab ))
+ {
+ //! EndDrawUndo?
+ return FALSE;
+ }
+ else if (bRecord)
+ {
+ SvUShorts aSrcList;
+ SvUShorts aDestList;
+ aSrcList.Insert(nSrcTab,0);
+ aDestList.Insert(nDestTab,0);
+ GetUndoManager()->AddUndoAction(
+ new ScUndoCopyTab( this, aSrcList, aDestList ) );
+ }
+
+ Broadcast( ScTablesHint( SC_TAB_COPIED, nSrcTab, nDestTab ) );
+ }
+ else
+ {
+ if ( aDocument.GetChangeTrack() )
+ return FALSE;
+
+ if ( nSrcTab<nDestTab && nDestTab!=SC_TAB_APPEND )
+ nDestTab--;
+
+ if ( nSrcTab == nDestTab )
+ {
+ //! allow only for api calls?
+ return TRUE; // nothing to do, but valid
+ }
+
+ if (!aDocument.MoveTab( nSrcTab, nDestTab ))
+ return FALSE;
+ else if (bRecord)
+ {
+ SvUShorts aSrcList;
+ SvUShorts aDestList;
+ aSrcList.Insert(nSrcTab,0);
+ aDestList.Insert(nDestTab,0);
+ GetUndoManager()->AddUndoAction(
+ new ScUndoMoveTab( this, aSrcList, aDestList ) );
+ }
+
+ Broadcast( ScTablesHint( SC_TAB_MOVED, nSrcTab, nDestTab ) );
+ }
+
+ PostPaintGridAll();
+ PostPaintExtras();
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+
+ return TRUE;
+}
+
+
+
diff --git a/sc/source/ui/docshell/docsh6.cxx b/sc/source/ui/docshell/docsh6.cxx
new file mode 100644
index 000000000000..24103630c66c
--- /dev/null
+++ b/sc/source/ui/docshell/docsh6.cxx
@@ -0,0 +1,622 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh6.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+//#define _BASEDLGS_HXX ***
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+//#define _COLOR_HXX
+//#define _CTRLBOX_HXX
+//#define _CTRLTOOL_HXX
+#define _DIALOGS_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+//#define _FIELD_HXX
+#define _FILDLG_HXX
+//#define _FILTER_HXX
+#define _FONTDLG_HXX
+#define _FRM3D_HXX
+//#define _GRAPH_HXX
+//#define _GDIMTF_HXX
+#define _INTRO_HXX
+#define _ISETBWR_HXX
+#define _NO_SVRTF_PARSER_HXX
+//#define _MDIFRM_HXX
+#define _MACRODLG_HXX
+#define _MODALDLG_HXX
+#define _MOREBUTTON_HXX
+//#define _MAPMOD_HXX
+#define _OUTLINER_HXX
+//#define _PAL_HXX
+#define _PASSWD_HXX
+//#define _PRNDLG_HXX //
+#define _POLY_HXX
+#define _PVRWIN_HXX
+#define _QUEUE_HXX
+#define _RULER_HXX
+#define _SCRWIN_HXX
+//#define _SELENG_HXX
+#define _SETBRW_HXX
+//#define _SOUND_HXX
+#define _STACK_HXX
+//#define _STATUS_HXX ***
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _SYSDLG_HXX
+//#define _TAB_HXX
+#define _TABBAR_HXX
+//#define _TREELIST_HXX
+//#define _VALUESET_HXX
+#define _VCBRW_HXX
+#define _VCTRLS_HXX
+//#define _VCATTR_HXX
+#define _VCSBX_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+//#define _VIEWFAC_HXX
+
+
+#define _SFX_PRNMON_HXX
+#define _SFX_RESMGR_HXX
+//#define _SFX_SAVEOPT_HXX
+#define _SFX_TEMPLDLG_HXX
+//#define _SFXAPP_HXX
+#define _SFXBASIC_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXDISPATCH_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXMNUMGR_HXX
+//#define _SFXMSG_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+//#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXTBXMGR_HXX
+#define _SFX_TEMPLDLG_HXX
+
+#define _SI_DLL_HXX
+#define _SIDLL_HXX
+#define _SI_NOITEMS
+#define _SI_NOOTHERFORMS
+#define _SI_NOSBXCONTROLS
+#define _SINOSBXCONTROLS
+#define _SI_NODRW
+#define _SI_NOCONTROL
+
+#define _SV_NOXSOUND
+#define _SVDATTR_HXX
+#define _SVDETC_HXX
+#define _SVDIO_HXX
+#define _SVDRAG_HXX
+#define _SVDLAYER_HXX
+#define _SVDXOUT_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <so3/ipenv.hxx>
+#include "scitems.hxx"
+
+#include <so3/ipenv.hxx>
+#include <svx/pageitem.hxx>
+#include <vcl/virdev.hxx>
+#include <svx/linkmgr.hxx>
+
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+//#include <svxlink.hxx>
+
+#include "docsh.hxx"
+
+#include "stlsheet.hxx"
+#include "stlpool.hxx"
+#include "global.hxx"
+#include "viewdata.hxx"
+#include "tabvwsh.hxx"
+#include "tablink.hxx"
+#include "collect.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+//----------------------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
+//
+// Ole
+//
+
+#pragma SEG_FUNCDEF(docsh6_01)
+
+String ScDocShell::CreateObjectName( const String& rPrefix )
+{
+ String aStr( rPrefix );
+ USHORT i = 1;
+ aStr += String::CreateFromInt32( i );
+ while( Find( aStr ) )
+ {
+ i++;
+ aStr = rPrefix;
+ aStr += String::CreateFromInt32( i );
+ }
+ return aStr;
+}
+
+#pragma SEG_FUNCDEF(docsh6_02)
+
+void __EXPORT ScDocShell::SetVisArea( const Rectangle & rVisArea )
+{
+ // wenn von aussen gerufen, nur Groesse anpassen
+ // (linke obere Ecke bleibt unveraendert),
+ // weil sonst beim Verschieben des Objekts durch Pixel-Rundungsfehler
+ // manchmal ungewollt der Ausschnitt verschoben wird
+
+ SetVisAreaOrSize( rVisArea, FALSE );
+}
+
+void ScDocShell::SetVisAreaOrSize( const Rectangle& rVisArea, BOOL bModifyStart )
+{
+ Rectangle aArea = rVisArea;
+ if (!bModifyStart)
+ aArea.SetPos( SfxInPlaceObject::GetVisArea().TopLeft() );
+
+ // hier Position anpassen!
+
+ aDocument.SnapVisArea( aArea );
+
+ SvInPlaceEnvironment* pEnv = GetIPEnv();
+ if (pEnv)
+ {
+ Window* pWin = pEnv->GetEditWin();
+ pEnv->MakeScale( aArea.GetSize(), MAP_100TH_MM,
+ pWin->LogicToPixel( aArea.GetSize() ) );
+ }
+
+ SvInPlaceObject::SetVisArea( aArea );
+
+ if (bIsInplace) // Zoom in der InPlace View einstellen
+ {
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if (pViewSh)
+ {
+ if (pViewSh->GetViewData()->GetDocShell() == this)
+ pViewSh->UpdateOleZoom();
+ }
+ else
+ DataChanged( SvDataType() ); // fuer Zuppeln wenn nicht IP-aktiv
+ }
+
+ if (aDocument.IsEmbedded())
+ {
+ ScTripel aOldStart,aOldEnd;
+ aDocument.GetEmbedded(aOldStart,aOldEnd);
+ aDocument.SetEmbedded( aArea );
+ ScTripel aNewStart,aNewEnd;
+ aDocument.GetEmbedded(aNewStart,aNewEnd);
+ if (aNewStart!=aOldStart || aNewEnd!=aOldEnd)
+ PostPaint(0,0,0,MAXCOL,MAXROW,MAXTAB,PAINT_GRID);
+
+ ViewChanged( ASPECT_CONTENT ); // auch im Container anzeigen
+ }
+}
+
+#pragma SEG_FUNCDEF(docsh6_03)
+
+BOOL ScDocShell::IsOle()
+{
+ return (eShellMode == SFX_CREATE_MODE_EMBEDDED);
+}
+
+#pragma SEG_FUNCDEF(docsh6_04)
+
+void ScDocShell::UpdateOle( const ScViewData* pViewData, BOOL bSnapSize )
+{
+ // wenn's gar nicht Ole ist, kann man sich die Berechnungen sparen
+ // (VisArea wird dann beim Save wieder zurueckgesetzt)
+
+ if (eShellMode == SFX_CREATE_MODE_STANDARD)
+ return;
+
+ DBG_ASSERT(pViewData,"pViewData==0 bei ScDocShell::UpdateOle");
+
+ Rectangle aOldArea = SfxInPlaceObject::GetVisArea();
+ Rectangle aNewArea = aOldArea;
+
+ BOOL bChange = FALSE;
+ BOOL bEmbedded = aDocument.IsEmbedded();
+ if (bEmbedded)
+ aNewArea = aDocument.GetEmbeddedRect();
+ else
+ {
+ USHORT nX = pViewData->GetPosX(SC_SPLIT_LEFT);
+ USHORT nY = pViewData->GetPosY(SC_SPLIT_BOTTOM);
+ Point aStart = aDocument.GetMMRect( nX,nY, nX,nY, 0 ).TopLeft();
+ aNewArea.SetPos(aStart);
+ if (bSnapSize)
+ aDocument.SnapVisArea(aNewArea);
+
+ if ( pViewData->GetTabNo() != aDocument.GetVisibleTab() )
+ {
+ aDocument.SetVisibleTab( pViewData->GetTabNo() );
+ bChange = TRUE;
+ }
+ }
+
+ if (aNewArea != aOldArea)
+ {
+ SetVisAreaOrSize( aNewArea, TRUE ); // hier muss auch der Start angepasst werden
+ bChange = TRUE;
+ }
+
+ if (bChange)
+ DataChanged( SvDataType() ); //! passiert auch bei SetModified
+}
+
+//
+// Style-Krempel fuer Organizer etc.
+//
+
+#pragma SEG_FUNCDEF(docsh6_05)
+
+SfxStyleSheetBasePool* __EXPORT ScDocShell::GetStyleSheetPool()
+{
+ return (SfxStyleSheetBasePool*)aDocument.GetStyleSheetPool();
+}
+
+
+#pragma SEG_FUNCDEF(docsh6_07)
+
+// nach dem Laden von Vorlagen aus einem anderen Dokment (LoadStyles, Insert)
+// muessen die SetItems (ATTR_PAGE_HEADERSET, ATTR_PAGE_FOOTERSET) auf den richtigen
+// Pool umgesetzt werden, bevor der Quell-Pool geloescht wird.
+
+void lcl_AdjustPool( SfxStyleSheetBasePool* pStylePool )
+{
+ pStylePool->SetSearchMask(SFX_STYLE_FAMILY_PAGE, 0xffff);
+ SfxStyleSheetBase *pStyle = pStylePool->First();
+ while ( pStyle )
+ {
+ SfxItemSet& rStyleSet = pStyle->GetItemSet();
+
+ const SfxPoolItem* pItem;
+ if (rStyleSet.GetItemState(ATTR_PAGE_HEADERSET,FALSE,&pItem) == SFX_ITEM_SET)
+ {
+ SfxItemSet& rSrcSet = ((SvxSetItem*)pItem)->GetItemSet();
+ SfxItemSet* pDestSet = new SfxItemSet(*rStyleSet.GetPool(),rSrcSet.GetRanges());
+ pDestSet->Put(rSrcSet);
+ rStyleSet.Put(SvxSetItem(ATTR_PAGE_HEADERSET,pDestSet));
+ }
+ if (rStyleSet.GetItemState(ATTR_PAGE_FOOTERSET,FALSE,&pItem) == SFX_ITEM_SET)
+ {
+ SfxItemSet& rSrcSet = ((SvxSetItem*)pItem)->GetItemSet();
+ SfxItemSet* pDestSet = new SfxItemSet(*rStyleSet.GetPool(),rSrcSet.GetRanges());
+ pDestSet->Put(rSrcSet);
+ rStyleSet.Put(SvxSetItem(ATTR_PAGE_FOOTERSET,pDestSet));
+ }
+
+ pStyle = pStylePool->Next();
+ }
+}
+
+#pragma SEG_FUNCDEF(docsh6_08)
+
+void __EXPORT ScDocShell::LoadStyles( SfxObjectShell &rSource )
+{
+ aDocument.StylesToNames();
+
+ SfxObjectShell::LoadStyles(rSource);
+ lcl_AdjustPool( GetStyleSheetPool() ); // SetItems anpassen
+
+ aDocument.UpdStlShtPtrsFrmNms();
+
+ // Hoehen anpassen
+
+ VirtualDevice aVDev;
+ Point aLogic = aVDev.LogicToPixel( Point(1000,1000), MAP_TWIP );
+ double nPPTX = aLogic.X() / 1000.0;
+ double nPPTY = aLogic.Y() / 1000.0;
+ Fraction aZoom(1,1);
+ USHORT nTabCnt = aDocument.GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCnt; nTab++)
+ aDocument.SetOptimalHeight( 0,MAXROW, nTab,0, &aVDev, nPPTX,nPPTY, aZoom,aZoom, FALSE );
+
+ // Paint
+
+ PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID | PAINT_LEFT );
+}
+
+#pragma SEG_FUNCDEF(docsh6_0b)
+
+BOOL __EXPORT ScDocShell::Insert( SfxObjectShell &rSource,
+ USHORT nSourceIdx1, USHORT nSourceIdx2, USHORT nSourceIdx3,
+ USHORT &nIdx1, USHORT &nIdx2, USHORT &nIdx3, USHORT &rIdxDeleted )
+{
+ BOOL bRet = SfxObjectShell::Insert( rSource, nSourceIdx1, nSourceIdx2, nSourceIdx3,
+ nIdx1, nIdx2, nIdx3, rIdxDeleted );
+ if (bRet)
+ lcl_AdjustPool( GetStyleSheetPool() ); // SetItems anpassen
+
+ return bRet;
+}
+
+#pragma SEG_FUNCDEF(docsh6_09)
+
+void ScDocShell::UpdateLinks()
+{
+ SvxLinkManager* pLinkManager = aDocument.GetLinkManager();
+ USHORT nCount;
+ USHORT i;
+ StrCollection aNames;
+
+ // nicht mehr benutzte Links raus
+
+ nCount = pLinkManager->GetLinks().Count();
+ for (i=nCount; i>0; )
+ {
+ --i;
+ SvBaseLink* pBase = *pLinkManager->GetLinks()[i];
+ if (pBase->ISA(ScTableLink))
+ {
+ ScTableLink* pTabLink = (ScTableLink*)pBase;
+ if (pTabLink->IsUsed())
+ {
+ StrData* pData = new StrData(pTabLink->GetFileName());
+ if (!aNames.Insert(pData))
+ delete pData;
+ }
+ else // nicht mehr benutzt -> loeschen
+ {
+ pTabLink->SetAddUndo(TRUE);
+ pLinkManager->Remove(i);
+ }
+ }
+ }
+
+
+ // neue Links eintragen
+
+ nCount = aDocument.GetTableCount();
+ for (i=0; i<nCount; i++)
+ if (aDocument.IsLinked(i))
+ {
+ String aDocName = aDocument.GetLinkDoc(i);
+ String aFltName = aDocument.GetLinkFlt(i);
+ String aOptions = aDocument.GetLinkOpt(i);
+ BOOL bThere = FALSE;
+ for (USHORT j=0; j<i && !bThere; j++) // im Dokument mehrfach?
+ if (aDocument.IsLinked(j)
+ && aDocument.GetLinkDoc(j) == aDocName
+ && aDocument.GetLinkFlt(j) == aFltName
+ && aDocument.GetLinkOpt(j) == aOptions)
+ bThere = TRUE;
+
+ if (!bThere) // schon als Filter eingetragen?
+ {
+ StrData* pData = new StrData(aDocName);
+ if (!aNames.Insert(pData))
+ {
+ delete pData;
+ bThere = TRUE;
+ }
+ }
+ if (!bThere)
+ {
+ ScTableLink* pLink = new ScTableLink( this, aDocName, aFltName, aOptions );
+ pLink->SetInCreate( TRUE );
+ pLinkManager->InsertFileLink( *pLink, OBJECT_CLIENT_FILE, aDocName, &aFltName );
+ pLink->Update();
+ pLink->SetInCreate( FALSE );
+ }
+ }
+}
+
+#pragma SEG_FUNCDEF(docsh6_0a)
+
+BOOL ScDocShell::ReloadTabLinks()
+{
+ SvxLinkManager* pLinkManager = aDocument.GetLinkManager();
+
+ BOOL bAny = FALSE;
+ USHORT nCount = pLinkManager->GetLinks().Count();
+ for (USHORT i=0; i<nCount; i++ )
+ {
+ SvBaseLink* pBase = *pLinkManager->GetLinks()[i];
+ if (pBase->ISA(ScTableLink))
+ {
+ ScTableLink* pTabLink = (ScTableLink*)pBase;
+// pTabLink->SetAddUndo(FALSE); //! Undo's zusammenfassen
+ pTabLink->SetPaint(FALSE); // Paint nur einmal am Ende
+ pTabLink->Update();
+ pTabLink->SetPaint(TRUE);
+// pTabLink->SetAddUndo(TRUE);
+ bAny = TRUE;
+ }
+ }
+
+ if ( bAny )
+ {
+ // Paint nur einmal
+ PostPaint( ScRange(0,0,0,MAXCOL,MAXROW,MAXTAB),
+ PAINT_GRID | PAINT_TOP | PAINT_LEFT );
+
+ SetDocumentModified();
+ }
+
+ return TRUE; //! Fehler erkennen
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.25 2000/09/17 14:09:00 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.24 2000/08/31 16:38:22 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.23 2000/04/20 16:51:18 nn
+ unicode changes
+
+ Revision 1.22 2000/02/11 12:25:25 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.21 1998/08/06 08:37:38 TJ
+ include
+
+
+ Rev 1.20 06 Aug 1998 10:37:38 TJ
+ include
+
+ Rev 1.19 11 Jun 1998 11:24:18 NN
+ wenn VisArea von aussen gesetzt, Position beibehalten
+
+ Rev 1.18 27 Jan 1998 12:42:26 TJ
+ include
+
+ Rev 1.17 05 Dec 1997 19:51:28 ANK
+ Includes geaendert
+
+ Rev 1.16 22 Sep 1997 18:08:40 NN
+ #44070# ReloadTabLinks: nur 1x Paint
+
+ Rev 1.15 10 Sep 1997 21:16:32 NN
+ IsOle: Abfrage per CreateMode
+
+ Rev 1.14 17 Sep 1996 16:10:38 NN
+ Bei Link auch Filter-Options speichern
+
+ Rev 1.13 09 Aug 1996 20:36:06 NN
+ Svx-Includes aus scitems.hxx raus
+
+ Rev 1.12 08 Aug 1996 11:03:30 NF
+ includes...
+
+ Rev 1.11 22 Apr 1996 14:57:30 NN
+ UpdateOle: SetVisArea immer wenn geaendert
+
+ Rev 1.10 20 Mar 1996 14:24:50 NN
+ Zoom fuer X und Y getrennt (wegen OLE)
+
+ Rev 1.9 09 Mar 1996 18:18:56 NN
+ bei Insert und LoadStyles hinterher die Pools anpassen
+
+ Rev 1.8 06 Mar 1996 19:17:22 NN
+ ReloadTabLinks
+
+ Rev 1.7 05 Mar 1996 19:52:32 NN
+ UpdateOle: auch SetVisibleTab
+
+ Rev 1.6 01 Mar 1996 17:04:54 NN
+ UpdateLinks: unbenutzte Links loeschen
+
+ Rev 1.5 27 Feb 1996 15:01:46 NN
+ UpdateLinks
+
+ Rev 1.4 09 Jan 1996 19:25:54 NN
+ bei SetVisArea das Embedded-Rechteck (tuerkiser Rahmen) updaten
+
+ Rev 1.3 10 Dec 1995 15:20:50 TRI
+ define entfernt
+
+ Rev 1.2 23 Nov 1995 16:11:02 NN
+ DataChanged bei SetVisArea
+
+ Rev 1.1 21 Nov 1995 15:49:14 TLX
+ Insert wandert in den SFX
+
+ Rev 1.0 17 Nov 1995 15:45:44 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
diff --git a/sc/source/ui/docshell/docsh7.cxx b/sc/source/ui/docshell/docsh7.cxx
new file mode 100644
index 000000000000..fc0837c981e5
--- /dev/null
+++ b/sc/source/ui/docshell/docsh7.cxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh7.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------
+
+#include "docsh.hxx"
+
+//------------------------------------------------------------------
+
+void ScDocShell::GetDrawObjState( SfxItemSet &rSet )
+{
+ // SID_SC_ACTIVEOBJECT (SelectedObject) - removed (old Basic)
+}
+
+
+
diff --git a/sc/source/ui/docshell/docsh8.cxx b/sc/source/ui/docshell/docsh8.cxx
new file mode 100644
index 000000000000..044f9ca8e945
--- /dev/null
+++ b/sc/source/ui/docshell/docsh8.cxx
@@ -0,0 +1,245 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh8.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#if defined(OS2) && defined(BLC)
+// ohne -vi- verhaspelt sich der Dummbatz bei SdbCursor::Variable() inlining
+#pragma option -vi-
+#endif
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sdb/sdbcol.hxx>
+#include <sdb/sdbconn.hxx>
+#include <sdb/sdbcurs.hxx>
+#include <tools/list.hxx>
+#include "scitems.hxx"
+#include <offmgr/sba.hrc>
+#include <offmgr/sbaobj.hxx>
+#include <offmgr/app.hxx>
+#include <svtools/zforlist.hxx>
+#include <vcl/virdev.hxx>
+#include <svtools/converter.hxx>
+
+#include "scerrors.hxx"
+#include "docsh.hxx"
+#include "filter.hxx"
+#include "cell.hxx"
+#include "progress.hxx"
+#include "globstr.hrc"
+
+// STATIC DATA -----------------------------------------------------------
+
+ULONG ScDocShell::SbaSdbImport(const String& rName, const String& rParStr,
+ BOOL bHeader, BOOL bSimpleColWidth[MAXCOL+1] )
+{
+ ULONG nErr = eERR_OK;
+ SbaObject* pSbaObject = ((OfficeApplication*)SFX_APP())->GetSbaObject();
+ DBG_ASSERT( pSbaObject, "pSbaObject==NULL" );
+ SdbConnectionRef xConnect = pSbaObject->OpenConnection(rParStr);
+
+ if( !xConnect.Is() )
+ nErr = SCERR_IMPORT_CONNECT;
+ else
+ {
+ USHORT nCol = 0;
+ USHORT nRow = 0;
+ UINT16 nCount;
+ UINT16 i;
+ //! fuer den RowCount einen extra Cursor anlegen
+ SdbCursorRef xCount = xConnect->CreateCursor( SDB_SNAPSHOT, SDB_READONLY | SDB_FORWARDONLY );
+ // laut Ocke soll das per SQL am schnellsten sein
+ String aSel = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(
+ "SELECT COUNT ( * ) FROM \"" ));
+ aSel += rName;
+ aSel += '"';
+ xCount->Open( aSel, FALSE );
+
+// ULONG nRowCount = ( xCount->Status().IsError() ? 1 :
+// xCount->Variable(1)->GetLong() );
+
+ ULONG nRowCount = ( xCount->Status().IsError() ? 1 :
+ (*xCount->GetRow())[1]->toINT32() );
+
+ xCount->Close();
+ SdbCursorRef xCur = xConnect->CreateCursor( SDB_SNAPSHOT, SDB_READONLY | SDB_FORWARDONLY );
+ SdbCursor* pCursor = &xCur;
+ DBG_ASSERT( pCursor, "Cursor" );
+ pCursor->Open( rName, TRUE );
+
+ if ( !pCursor->Status().IsError() )
+ {
+ if ( nRowCount > MAXROW + 1 )
+ nRowCount = MAXROW + 1;
+ ScProgress aProgress( this, ScGlobal::GetRscString( STR_LOAD_DOC ),
+ nRowCount );
+
+ const SdbColumnsRef pColumns = pCursor->GetColumns();
+ nCount = pColumns->Count();
+ if ( nCount > (bHeader ? 1 : 0) )
+ aDocument.DoColResize( 0, 0, nCount - (bHeader ? 2 : 1),
+ (bHeader ? nRowCount + 1 : nRowCount) );
+
+ // Spaltenkoepfe
+ SdbDatabaseType* pType = new SdbDatabaseType[nCount+1];
+ if (nCount < 2)
+ {
+ DBG_ERROR( "ScDocShell::dBaseImport: Keine Spalten!" );
+ }
+ else if ( nCount > MAXCOL+1 )
+ nErr = SCWARN_IMPORT_RANGE_OVERFLOW; // Warnung ausgeben
+
+ String aStr;
+ for (i=1; i<nCount; i++) // 0 = Bookmark
+ {
+ const SdbColumn* pCol = pColumns->Column(i);
+ aStr = pCol->GetName();
+ switch ( pType[i] = pCol->GetType() )
+ {
+ case SDB_DBTYPE_BOOLEAN :
+ aStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ",L" ));
+ break;
+ case SDB_DBTYPE_DATE :
+ aStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ",D" ));
+ break;
+ case SDB_DBTYPE_LONGVARCHAR :
+ aStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ",M" ));
+ break;
+ case SDB_DBTYPE_VARCHAR :
+ aStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ",C," ));
+ aStr += String::CreateFromInt32( pCol->GetLength() );
+ break;
+ case SDB_DBTYPE_DECIMAL :
+ aStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ",N," ));
+ aStr += String::CreateFromInt32(
+ SvDbaseConverter::ConvertPrecisionToDbase(
+ pCol->GetLength(), pCol->GetScale() ) );
+ aStr += ',';
+ aStr += String::CreateFromInt32( pCol->GetScale() );
+ break;
+ }
+ if ( bHeader )
+ {
+ aDocument.SetString( nCol, nRow, 0, aStr );
+ ++nCol;
+ }
+ }
+ if ( bHeader )
+ ++nRow; // Daten
+
+ //! pass standard format keys to PutVariable?
+#if 0
+ SvNumberFormatter* pFormatter = aDocument.GetFormatTable();
+ ULONG nFormatBool = pFormatter->
+ GetStandardFormat( NUMBERFORMAT_LOGICAL, ScGlobal::eLnge );
+ ULONG nFormatDate = pFormatter->
+ GetStandardFormat( NUMBERFORMAT_DATE, ScGlobal::eLnge );
+
+ Date* pScDate = pFormatter->GetNullDate();
+ Date aRefDate(30,12,1899);
+// Date aRefDate(3,1,1900);
+ double nDateDiff;
+ if ( pScDate && ! (*pScDate == aRefDate) )
+ nDateDiff = (double)(aRefDate - *pScDate);
+ else
+ nDateDiff = 0;
+#endif
+
+ pCursor->First();
+ while (pCursor->IsInRange())
+ {
+ if ( nRow > MAXROW )
+ {
+ nErr = SCWARN_IMPORT_RANGE_OVERFLOW; // Warnung ausgeben
+ break;
+ }
+
+ nCol = 0;
+ for (i=1; i<nCount; i++) // 0 = Bookmark
+ {
+ // All data is in ODbVariant objects and handled in PutVariable
+ // (including bSimpleColWidth)
+
+ BOOL* pSimple = (i <= MAXCOL+1) ? (&bSimpleColWidth[i-1]) : NULL;
+ ODbVariantRef xVar = (*pCursor->GetRow())[i];
+ aDocument.PutVariable( nCol, nRow, 0, xVar.getBodyPtr(), pType[i], pSimple );
+
+ ++nCol;
+ }
+ ++nRow;
+ pCursor->Next();
+ aProgress.SetStateOnPercent( nRow );
+ }
+ delete [] pType;
+ }
+ else
+ nErr = SCERR_IMPORT_CURSOR;
+ pCursor->Close();
+ }
+ return nErr;
+}
+
+
diff --git a/sc/source/ui/docshell/hiranges.cxx b/sc/source/ui/docshell/hiranges.cxx
new file mode 100644
index 000000000000..86405885a303
--- /dev/null
+++ b/sc/source/ui/docshell/hiranges.cxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * $RCSfile: hiranges.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "hiranges.hxx"
+
+//==================================================================
+
+ScHighlightRanges::ScHighlightRanges()
+{
+}
+
+ScHighlightRanges::~ScHighlightRanges()
+{
+ void* pEntry = aEntries.First();
+ while ( pEntry )
+ {
+ delete (ScHighlightEntry*) aEntries.Remove( pEntry );
+ pEntry = aEntries.Next();
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
new file mode 100644
index 000000000000..f14d481848a5
--- /dev/null
+++ b/sc/source/ui/docshell/impex.cxx
@@ -0,0 +1,1460 @@
+/*************************************************************************
+ *
+ * $RCSfile: impex.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+class StarBASIC;
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include "sc.hrc"
+#define GLOBALOVERFLOW
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <stdio.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+#include <tools/list.hxx>
+#include <tools/string.hxx>
+#include <tools/solmath.hxx>
+#include <svtools/htmlout.hxx>
+#include <svtools/zforlist.hxx>
+#include <sot/formats.hxx>
+#include <sfx2/mieclip.hxx>
+#include <unotools/charclass.hxx>
+
+#include "global.hxx"
+#include "docsh.hxx"
+#include "undoblk.hxx"
+#include "rangenam.hxx"
+#include "viewdata.hxx"
+#include "tabvwsh.hxx"
+#include "filter.hxx"
+#include "asciiopt.hxx"
+#include "cell.hxx"
+#include "rtfimp.hxx"
+#include "htmlimp.hxx"
+#include "docoptio.hxx"
+#include "progress.hxx"
+
+#include "impex.hxx"
+
+#include "globstr.hrc"
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#ifndef _SV_EXCHANGE_HXX //autogen
+#include <vcl/exchange.hxx>
+#endif
+
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+
+//========================================================================
+
+
+// Gesamtdokument ohne Undo
+
+
+ScImportExport::ScImportExport( ScDocument* p )
+ : pDoc( p ), pDocSh( PTR_CAST(ScDocShell,p->GetDocumentShell()) ),
+ nSizeLimit( 0 ), bSingle( TRUE ), bAll( TRUE ), bUndo( FALSE ),
+ cSep( '\t' ), cStr( '"' ), bFormulas( FALSE ), bOverflow( FALSE )
+{
+ pUndoDoc = NULL;
+ pExtOptions = NULL;
+}
+
+// Insert am Punkt ohne Bereichschecks
+
+
+ScImportExport::ScImportExport( ScDocument* p, const ScAddress& rPt )
+ : pDoc( p ), pDocSh( PTR_CAST(ScDocShell,p->GetDocumentShell()) ),
+ aRange( rPt ),
+ nSizeLimit( 0 ), bSingle( TRUE ), bAll( FALSE ), bUndo( BOOL( pDocSh != NULL ) ),
+ cSep( '\t' ), cStr( '"' ), bFormulas( FALSE ), bOverflow( FALSE )
+{
+ pUndoDoc = NULL;
+ pExtOptions = NULL;
+}
+
+
+// ctor with a range is only used for export
+//! ctor with a string (and bSingle=TRUE) is also used for DdeSetData
+
+ScImportExport::ScImportExport( ScDocument* p, const ScRange& r )
+ : pDoc( p ), pDocSh( PTR_CAST(ScDocShell,p->GetDocumentShell()) ),
+ aRange( r ),
+ nSizeLimit( 0 ), bSingle( FALSE ), bAll( FALSE ), bUndo( BOOL( pDocSh != NULL ) ),
+ cSep( '\t' ), cStr( '"' ), bFormulas( FALSE ), bOverflow( FALSE )
+{
+ pUndoDoc = NULL;
+ pExtOptions = NULL;
+ // Zur Zeit nur in einer Tabelle!
+ aRange.aEnd.SetTab( aRange.aStart.Tab() );
+}
+
+// String auswerten: Entweder Bereich, Punkt oder Gesamtdoc (bei Fehler)
+// Falls eine View existiert, wird die TabNo der View entnommen!
+
+
+ScImportExport::ScImportExport( ScDocument* p, const String& rPos )
+ : pDoc( p ), pDocSh( PTR_CAST(ScDocShell,p->GetDocumentShell()) ),
+ nSizeLimit( 0 ), bSingle( TRUE ), bAll( FALSE ), bUndo( BOOL( pDocSh != NULL ) ),
+ cSep( '\t' ), cStr( '"' ), bFormulas( FALSE ), bOverflow( FALSE )
+{
+ pUndoDoc = NULL;
+ pExtOptions = NULL;
+
+ USHORT nTab = ScDocShell::GetCurTab();
+ aRange.aStart.SetTab( nTab );
+ String aPos( rPos );
+ // Benannter Bereich?
+ ScRangeName* pRange = pDoc->GetRangeName();
+ if( pRange )
+ {
+ USHORT nPos;
+ if( pRange->SearchName( aPos, nPos ) )
+ {
+ ScRangeData* pData = (*pRange)[ nPos ];
+ if( pData->HasType( RT_REFAREA )
+ || pData->HasType( RT_ABSAREA )
+ || pData->HasType( RT_ABSPOS ) )
+ pData->GetSymbol( aPos ); // mit dem Inhalt weitertesten
+ }
+ }
+ // Bereich?
+ if( aRange.Parse( aPos, pDoc ) & SCA_VALID )
+ bSingle = FALSE;
+ // Zelle?
+ else if( aRange.aStart.Parse( aPos, pDoc ) & SCA_VALID )
+ aRange.aEnd = aRange.aStart;
+ else
+ bAll = TRUE;
+}
+
+
+ScImportExport::~ScImportExport()
+{
+ delete pUndoDoc;
+ delete pExtOptions;
+}
+
+
+void ScImportExport::SetExtOptions( const ScAsciiOptions& rOpt )
+{
+ if ( pExtOptions )
+ *pExtOptions = rOpt;
+ else
+ pExtOptions = new ScAsciiOptions( rOpt );
+
+ // "normale" Optionen uebernehmen
+
+ cSep = rOpt.GetFieldSeps().GetChar(0);
+ cStr = rOpt.GetTextSep();
+}
+
+
+BOOL ScImportExport::IsFormatSupported( SvDataObject* pObj )
+{
+ return BOOL( pObj->HasFormat( FORMAT_STRING )
+ || pObj->HasFormat( SOT_FORMATSTR_ID_SYLK )
+ || pObj->HasFormat( SOT_FORMATSTR_ID_LINK )
+ || pObj->HasFormat( SOT_FORMATSTR_ID_HTML )
+ || pObj->HasFormat( SOT_FORMATSTR_ID_HTML_SIMPLE )
+ || pObj->HasFormat( SOT_FORMATSTR_ID_DIF ) );
+}
+
+
+BOOL ScImportExport::IsFormatSupported( ULONG nFormat )
+{
+ return BOOL( nFormat == FORMAT_STRING
+ || nFormat == SOT_FORMATSTR_ID_SYLK
+ || nFormat == SOT_FORMATSTR_ID_LINK
+ || nFormat == SOT_FORMATSTR_ID_HTML
+ || nFormat == SOT_FORMATSTR_ID_HTML_SIMPLE
+ || nFormat == SOT_FORMATSTR_ID_DIF );
+}
+
+
+void ScImportExport::AddFormats( SvDataTypeList* pList )
+{
+ pList->Insert( SvDataType( SOT_FORMATSTR_ID_HTML, MEDIUM_MEMORY ), LIST_APPEND );
+ pList->Insert( SvDataType( SOT_FORMATSTR_ID_SYLK, MEDIUM_MEMORY ), LIST_APPEND );
+ pList->Insert( SvDataType( SOT_FORMATSTR_ID_LINK, MEDIUM_MEMORY ), LIST_APPEND );
+ pList->Insert( SvDataType( SOT_FORMATSTR_ID_DIF, MEDIUM_MEMORY ), LIST_APPEND );
+ pList->Insert( SvDataType( FORMAT_STRING, MEDIUM_MEMORY ), LIST_APPEND );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+// Vorbereitung fuer Undo: Undo-Dokument erzeugen
+
+
+BOOL ScImportExport::StartPaste()
+{
+ if ( !bAll && !pDoc->IsBlockEditable
+ ( aRange.aStart.Tab(), aRange.aStart.Col(),aRange.aStart.Row(),
+ aRange.aEnd.Col(),aRange.aEnd.Row() ) )
+ {
+ InfoBox aInfoBox(Application::GetDefDialogParent(),
+ ScGlobal::GetRscString( STR_PROTECTIONERR ) );
+ aInfoBox.Execute();
+ return FALSE;
+ }
+ if( bUndo && pDocSh )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, aRange.aStart.Tab(), aRange.aEnd.Tab() );
+ pDoc->CopyToDocument( aRange, IDF_ALL, FALSE, pUndoDoc );
+ }
+ return TRUE;
+}
+
+// Nachbereitung Insert: Undo/Redo-Aktionen erzeugen, Invalidate/Repaint
+
+
+void ScImportExport::EndPaste()
+{
+ BOOL bHeight = pDocSh && pDocSh->AdjustRowHeight(
+ aRange.aStart.Row(), aRange.aEnd.Row(), aRange.aStart.Tab() );
+
+ if( pUndoDoc )
+ {
+ ScDocument* pRedoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRedoDoc->InitUndo( pDoc, aRange.aStart.Tab(), aRange.aEnd.Tab() );
+ pDoc->CopyToDocument( aRange, IDF_ALL, FALSE, pRedoDoc );
+ ScMarkData aDestMark;
+ aDestMark.SelectOneTable( aRange.aStart.Tab() );
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoPaste( pDocSh,
+ aRange.aStart.Col(), aRange.aStart.Row(), aRange.aStart.Tab(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(), aRange.aEnd.Tab(), aDestMark,
+ pUndoDoc, pRedoDoc, IDF_ALL, NULL,NULL,NULL,NULL ) );
+ }
+ pUndoDoc = NULL;
+ if( pDocSh )
+ {
+ if (!bHeight)
+ pDocSh->PostPaint( aRange, PAINT_GRID ); // AdjustRowHeight paintet evtl. selber
+ pDocSh->SetDocumentModified();
+ }
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if ( pViewSh )
+ pViewSh->UpdateInputHandler();
+
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+
+BOOL ScImportExport::ImportData( SvData& rData )
+{
+ ULONG nFmt = rData.GetFormat();
+ if ( nFmt == SOT_FORMATSTR_ID_HTML_SIMPLE )
+ {
+ MSE40HTMLClipFormatObj aMSE40ClpObj;
+ if ( aMSE40ClpObj.GetData( rData ) )
+ {
+ SvStream* pStream = aMSE40ClpObj.GetStream();
+ return ImportStream( *pStream, nFmt );
+ }
+ return FALSE;
+ }
+ else
+ {
+ void* pMem;
+ ULONG nSize = rData.GetMinMemorySize();
+ rData.GetData( &pMem, TRANSFER_REFERENCE );
+ if( nFmt == FORMAT_STRING
+ || nFmt == FORMAT_RTF
+ || nFmt == SOT_FORMATSTR_ID_SYLK
+ || nFmt == SOT_FORMATSTR_ID_HTML
+ || nFmt == SOT_FORMATSTR_ID_DIF )
+ {
+ //! String? Unicode??
+
+ // Stringende ermitteln!
+ sal_Char* pBegin = (sal_Char*) pMem;
+ sal_Char* pEnd = (sal_Char*) pMem + nSize;
+
+ nSize = 0;
+ while( pBegin != pEnd && *pBegin != '\0' )
+ pBegin++, nSize++;
+ // #72909# MT says only STRING has to be zero-terminated
+ DBG_ASSERT( pBegin != pEnd || nFmt != FORMAT_STRING, "non zero-terminated String" )
+ }
+ SvMemoryStream aStrm( pMem, nSize, STREAM_READ );
+ return ImportStream( aStrm, nFmt );
+ }
+}
+
+
+BOOL ScImportExport::ExportData( SvData& rData )
+{
+ SvMemoryStream aStrm;
+ if( ExportStream( aStrm, rData.GetFormat() ) )
+ {
+ aStrm << (BYTE) 0;
+ rData.SetData( (void*)aStrm.GetData(), aStrm.Tell() );
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+// static
+inline void ScImportExport::SetNoEndianSwap( SvStream& rStrm )
+{
+#ifdef __BIGENDIAN
+ rStrm.SetNumberFormatInt( NUMBERFORMAT_INT_BIGENDIAN );
+#else
+ rStrm.SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+#endif
+}
+
+
+BOOL ScImportExport::ImportString( const String& rText, ULONG nFmt )
+{
+ switch ( nFmt )
+ {
+ // formats supporting unicode
+ case FORMAT_STRING :
+ {
+ SvMemoryStream aStrm( (void*)rText.GetBuffer(), rText.Len() * sizeof(sal_Unicode), STREAM_READ );
+ aStrm.SetStreamCharSet( RTL_TEXTENCODING_UNICODE );
+ SetNoEndianSwap( aStrm ); //! no swapping in memory
+ return ImportStream( aStrm, nFmt );
+ // ImportStream must handle RTL_TEXTENCODING_UNICODE
+ }
+ break;
+ default:
+ {
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+ ByteString aTmp( rText, eEnc );
+ SvMemoryStream aStrm( (void*)aTmp.GetBuffer(), aTmp.Len() * sizeof(sal_Char), STREAM_READ );
+ aStrm.SetStreamCharSet( eEnc );
+ SetNoEndianSwap( aStrm ); //! no swapping in memory
+ return ImportStream( aStrm, nFmt );
+ }
+ }
+}
+
+
+BOOL ScImportExport::ExportString( String& rText, ULONG nFmt )
+{
+ DBG_ASSERT( nFmt == FORMAT_STRING, "ScImportExport::ExportString: Unicode not supported for other formats than FORMAT_STRING" );
+ if ( nFmt != FORMAT_STRING )
+ {
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+ ByteString aTmp;
+ BOOL bOk = ExportByteString( aTmp, eEnc, nFmt );
+ rText = UniString( aTmp, eEnc );
+ return bOk;
+ }
+ if (!nSizeLimit)
+ nSizeLimit = STRING_MAXLEN;
+
+ SvMemoryStream aStrm;
+ aStrm.SetStreamCharSet( RTL_TEXTENCODING_UNICODE );
+ SetNoEndianSwap( aStrm ); //! no swapping in memory
+ if( ExportStream( aStrm, nFmt ) )
+ {
+ aStrm << (sal_Unicode) 0;
+ aStrm.Seek( STREAM_SEEK_TO_END );
+ // Sicherheits-Check:
+ if( aStrm.Tell() <= (ULONG) STRING_MAXLEN )
+ {
+ rText = (const sal_Unicode*) aStrm.GetData();
+ return TRUE;
+ }
+ }
+ rText.Erase();
+ return FALSE;
+
+ // ExportStream must handle RTL_TEXTENCODING_UNICODE
+}
+
+
+BOOL ScImportExport::ExportByteString( ByteString& rText, rtl_TextEncoding eEnc, ULONG nFmt )
+{
+ DBG_ASSERT( eEnc != RTL_TEXTENCODING_UNICODE, "ScImportExport::ExportByteString: Unicode not supported" );
+ if ( eEnc == RTL_TEXTENCODING_UNICODE )
+ eEnc = gsl_getSystemTextEncoding();
+
+ if (!nSizeLimit)
+ nSizeLimit = STRING_MAXLEN;
+
+ SvMemoryStream aStrm;
+ aStrm.SetStreamCharSet( eEnc );
+ SetNoEndianSwap( aStrm ); //! no swapping in memory
+ if( ExportStream( aStrm, nFmt ) )
+ {
+ aStrm << (sal_Char) 0;
+ aStrm.Seek( STREAM_SEEK_TO_END );
+ // Sicherheits-Check:
+ if( aStrm.Tell() <= (ULONG) STRING_MAXLEN )
+ {
+ rText = (const sal_Char*) aStrm.GetData();
+ return TRUE;
+ }
+ }
+ rText.Erase();
+ return FALSE;
+}
+
+
+BOOL ScImportExport::ImportStream( SvStream& rStrm, ULONG nFmt )
+{
+ if( nFmt == FORMAT_STRING )
+ {
+ if( ExtText2Doc( rStrm ) ) // pExtOptions auswerten
+ return TRUE;
+ }
+ if( nFmt == SOT_FORMATSTR_ID_SYLK )
+ {
+ if( Sylk2Doc( rStrm ) )
+ return TRUE;
+ }
+ if( nFmt == SOT_FORMATSTR_ID_DIF )
+ {
+ if( Dif2Doc( rStrm ) )
+ return TRUE;
+ }
+ if( nFmt == FORMAT_RTF )
+ {
+ if( RTF2Doc( rStrm ) )
+ return TRUE;
+ }
+ if( nFmt == SOT_FORMATSTR_ID_LINK )
+ return TRUE; // Link-Import?
+ if ( nFmt == SOT_FORMATSTR_ID_HTML )
+ {
+ if( HTML2Doc( rStrm ) )
+ return TRUE;
+ }
+ if ( nFmt == SOT_FORMATSTR_ID_HTML_SIMPLE )
+ {
+ if( HTML2Doc( rStrm ) )
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+BOOL ScImportExport::ExportStream( SvStream& rStrm, ULONG nFmt )
+{
+ if( nFmt == FORMAT_STRING )
+ {
+ if( Doc2Text( rStrm ) )
+ return TRUE;
+ }
+ if( nFmt == SOT_FORMATSTR_ID_SYLK )
+ {
+ if( Doc2Sylk( rStrm ) )
+ return TRUE;
+ }
+ if( nFmt == SOT_FORMATSTR_ID_DIF )
+ {
+ if( Doc2Dif( rStrm ) )
+ return TRUE;
+ }
+ if( nFmt == SOT_FORMATSTR_ID_LINK && !bAll )
+ {
+ String aDocName;
+ if ( pDoc->IsClipboard() )
+ aDocName = ScGlobal::GetClipDocName();
+ else
+ {
+ SfxObjectShell* pShell = pDoc->GetDocumentShell();
+ if (pShell)
+ aDocName = pShell->GetTitle( SFX_TITLE_FULLNAME );
+ }
+
+ DBG_ASSERT( aDocName.Len(), "ClipBoard document has no name! :-/" );
+ if( aDocName.Len() )
+ {
+ String aRefName;
+ USHORT nFlags = SCA_VALID | SCA_TAB_3D;
+ if( bSingle )
+ aRange.aStart.Format( aRefName, nFlags, pDoc );
+ else
+ {
+ if( aRange.aStart.Tab() != aRange.aEnd.Tab() )
+ nFlags |= SCA_TAB2_3D;
+ aRange.Format( aRefName, nFlags, pDoc );
+ }
+ String aAppName = Application::GetAppName();
+
+ WriteUnicodeOrByteString( rStrm, aAppName, TRUE );
+ WriteUnicodeOrByteString( rStrm, aDocName, TRUE );
+ WriteUnicodeOrByteString( rStrm, aRefName, TRUE );
+ if ( rStrm.GetStreamCharSet() == RTL_TEXTENCODING_UNICODE )
+ rStrm << sal_Unicode(0);
+ else
+ rStrm << sal_Char(0);
+ return BOOL( rStrm.GetError() == SVSTREAM_OK );
+ }
+ }
+ if( nFmt == SOT_FORMATSTR_ID_HTML )
+ {
+ if( Doc2HTML( rStrm ) )
+ return TRUE;
+ }
+ if( nFmt == FORMAT_RTF )
+ {
+ if( Doc2RTF( rStrm ) )
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+//static
+void ScImportExport::WriteUnicodeOrByteString( SvStream& rStrm, const String& rString, BOOL bZero )
+{
+ rtl_TextEncoding eEnc = rStrm.GetStreamCharSet();
+ if ( eEnc == RTL_TEXTENCODING_UNICODE )
+ {
+ if ( !IsEndianSwap( rStrm ) )
+ rStrm.Write( rString.GetBuffer(), rString.Len() * sizeof(sal_Unicode) );
+ else
+ {
+ const sal_Unicode* p = rString.GetBuffer();
+ const sal_Unicode* const pStop = p + rString.Len();
+ while ( p < pStop )
+ {
+ rStrm << *p;
+ }
+ }
+ if ( bZero )
+ rStrm << sal_Unicode(0);
+ }
+ else
+ {
+ ByteString aByteStr( rString, eEnc );
+ rStrm << aByteStr.GetBuffer();
+ if ( bZero )
+ rStrm << sal_Char(0);
+ }
+}
+
+
+// static
+void ScImportExport::WriteUnicodeOrByteEndl( SvStream& rStrm )
+{
+ if ( rStrm.GetStreamCharSet() == RTL_TEXTENCODING_UNICODE )
+ { // same as endl() but unicode
+ switch ( rStrm.GetLineDelimiter() )
+ {
+ case LINEEND_CR :
+ rStrm << sal_Unicode(_CR);
+ break;
+ case LINEEND_LF :
+ rStrm << sal_Unicode(_LF);
+ break;
+ default:
+ rStrm << sal_Unicode(_CR) << sal_Unicode(_LF);
+ }
+ }
+ else
+ endl( rStrm );
+}
+
+
+enum DoubledQuoteMode
+{
+ DQM_KEEP, // both are taken
+ DQM_ESCAPE, // escaped quote, one is taken, one ignored
+ DQM_CONCAT, // first is end, next is start, both ignored => strings combined
+ DQM_SEPARATE // end one string and begin next
+};
+
+const sal_Unicode* lcl_ScanString( const sal_Unicode* p, String& rString,
+ sal_Unicode cStr, DoubledQuoteMode eMode )
+{
+ p++; //! jump over opening quote
+ BOOL bCont;
+ do
+ {
+ bCont = FALSE;
+ const sal_Unicode* p0 = p;
+ for( ;; )
+ {
+ if( !*p )
+ break;
+ if( *p == cStr )
+ {
+ if ( *++p != cStr )
+ break;
+ // doubled quote char
+ switch ( eMode )
+ {
+ case DQM_KEEP :
+ p++; // both for us (not breaking for-loop)
+ break;
+ case DQM_ESCAPE :
+ p++; // one for us (breaking for-loop)
+ bCont = TRUE; // and more
+ break;
+ case DQM_CONCAT :
+ if ( p0+1 < p )
+ rString.Append( p0, (p-1) - p0 ); // first part
+ p0 = ++p; // text of next part starts here
+ break;
+ case DQM_SEPARATE :
+ // positioned on next opening quote
+ break;
+ }
+ if ( eMode == DQM_ESCAPE || eMode == DQM_SEPARATE )
+ break;
+ }
+ else
+ p++;
+ }
+ if ( p0 < p )
+ rString.Append( p0, ((*p || *(p-1) == cStr) ? p-1 : p) - p0 );
+ } while ( bCont );
+ return p;
+}
+
+
+void lcl_WriteString( SvStream& rStrm, String& rString, sal_Unicode cStr )
+{
+ xub_StrLen n = 0;
+ while( ( n = rString.Search( cStr, n ) ) != STRING_NOTFOUND )
+ {
+ rString.Insert( cStr, n );
+ n += 2;
+ }
+
+ rString.Insert( cStr, 0 );
+ rString.Append( cStr );
+
+ ScImportExport::WriteUnicodeOrByteString( rStrm, rString );
+}
+
+inline void lcl_WriteSimpleString( SvStream& rStrm, const String& rString )
+{
+ ScImportExport::WriteUnicodeOrByteString( rStrm, rString );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+
+BOOL ScImportExport::Text2Doc( SvStream& rStrm )
+{
+ BOOL bOk = TRUE;
+
+ USHORT nStartCol = aRange.aStart.Col();
+ USHORT nStartRow = aRange.aStart.Row();
+ USHORT nEndCol = aRange.aEnd.Col();
+ USHORT nEndRow = aRange.aEnd.Row();
+ ULONG nOldPos = rStrm.Tell();
+ BOOL bData = BOOL( !bSingle );
+ if( !bSingle)
+ bOk = StartPaste();
+
+ while( bOk )
+ {
+ ByteString aByteLine;
+ String aLine, aCell;
+ USHORT nRow = nStartRow;
+ rStrm.Seek( nOldPos );
+ for( ;; )
+ {
+ //! allow unicode
+ rStrm.ReadLine( aByteLine );
+ aLine = String( aByteLine, rStrm.GetStreamCharSet() );
+ if( rStrm.IsEof() )
+ break;
+ USHORT nCol = nStartCol;
+ const sal_Unicode* p = aLine.GetBuffer();
+ while( *p )
+ {
+ aCell.Erase();
+ if( *p == cStr )
+ {
+ p = lcl_ScanString( p, aCell, cStr, DQM_KEEP );
+ while( *p && *p != cSep )
+ p++;
+ if( *p )
+ p++;
+ }
+ else
+ {
+ const sal_Unicode* q = p;
+ while( *p && *p != cSep )
+ p++;
+ aCell.Assign( q, p - q );
+ if( *p )
+ p++;
+ }
+ if (nCol<=MAXCOL && nRow<=MAXROW )
+ {
+ if( bSingle )
+ {
+ if (nCol>nEndCol) nEndCol = nCol;
+ if (nRow>nEndRow) nEndRow = nRow;
+ }
+ if( bData && nCol <= nEndCol && nRow <= nEndRow )
+ pDoc->SetString( nCol, nRow, aRange.aStart.Tab(), aCell );
+ }
+ else // zuviele Spalten/Zeilen
+ bOverflow = TRUE; // beim Import Warnung ausgeben
+ ++nCol;
+ }
+ ++nRow;
+ }
+
+ if( !bData )
+ {
+ aRange.aEnd.SetCol( nEndCol );
+ aRange.aEnd.SetRow( nEndRow );
+ bOk = StartPaste();
+ bData = TRUE;
+ }
+ else
+ break;
+ }
+
+ EndPaste();
+ return bOk;
+}
+
+ //
+ // erweiterter Ascii-Import
+ //
+
+
+void lcl_PutString( ScDocument* pDoc, USHORT nCol, USHORT nRow, USHORT nTab,
+ const String& rStr, BYTE nColFormat, const International& rInter,
+ const International* pSecondInt )
+{
+ if ( nColFormat == SC_COL_SKIP || !rStr.Len() || nCol > MAXCOL || nRow > MAXROW )
+ return;
+
+ if ( nColFormat == SC_COL_TEXT )
+ {
+ pDoc->PutCell( nCol, nRow, nTab, new ScStringCell( rStr ) );
+ return;
+ }
+
+ if ( nColFormat == SC_COL_ENGLISH )
+ {
+ //! SetString mit Extra-Flag ???
+
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ ULONG nEnglish = pFormatter->GetStandardIndex(LANGUAGE_ENGLISH_US);
+ double fVal;
+ if ( pFormatter->IsNumberFormat( rStr, nEnglish, fVal ) )
+ {
+ // Zahlformat wird nicht auf englisch gesetzt
+ pDoc->SetValue( nCol, nRow, nTab, fVal );
+ return;
+ }
+ // sonst weiter mit SetString
+ }
+ else if ( nColFormat != SC_COL_STANDARD ) // Datumsformate
+ {
+ // nach genau drei Teilen suchen
+
+ xub_StrLen nLen = rStr.Len();
+ xub_StrLen nStart[3];
+ xub_StrLen nEnd[3];
+ USHORT nFound = 0;
+ BOOL bInNum = FALSE;
+ for ( xub_StrLen nPos=0; nPos<nLen; nPos++ )
+ {
+ if ( ScGlobal::pCharClass->isLetterNumeric( rStr, nPos ) )
+ {
+ if (!bInNum)
+ {
+ if ( nFound >= 3 )
+ break; // zuviele Teile
+ bInNum = TRUE;
+ nStart[nFound] = nPos;
+ ++nFound;
+ }
+ nEnd[nFound-1] = nPos;
+ }
+ else
+ bInNum = FALSE;
+ }
+ if ( nFound == 3 ) // genau 3 Teile ?
+ {
+ USHORT nDP, nMP, nYP;
+ switch ( nColFormat )
+ {
+ case SC_COL_YMD: nDP = 2; nMP = 1; nYP = 0; break;
+ case SC_COL_MDY: nDP = 1; nMP = 0; nYP = 2; break;
+ case SC_COL_DMY:
+ default: nDP = 0; nMP = 1; nYP = 2; break;
+ }
+ USHORT nDay = (USHORT) rStr.Copy( nStart[nDP], nEnd[nDP]+1-nStart[nDP] ).ToInt32();
+ USHORT nYear = (USHORT) rStr.Copy( nStart[nYP], nEnd[nYP]+1-nStart[nYP] ).ToInt32();
+ String aMStr = rStr.Copy( nStart[nMP], nEnd[nMP]+1-nStart[nMP] );
+ USHORT nMonth = (USHORT) aMStr.ToInt32();
+ if (!nMonth)
+ {
+ USHORT i;
+ // first test all month names from local international
+ for (i=1; i<=12 && !nMonth; i++)
+ if ( rInter.CompareEqual( aMStr, rInter.GetMonthText(i), INTN_COMPARE_IGNORECASE ) ||
+ rInter.CompareEqual( aMStr, rInter.GetAbbrevMonthText(i), INTN_COMPARE_IGNORECASE ) )
+ nMonth = i;
+ // if none found, then test english month names
+ if ( !nMonth && pSecondInt )
+ for (i=1; i<=12 && !nMonth; i++)
+ if ( pSecondInt->CompareEqual( aMStr, pSecondInt->GetMonthText(i), INTN_COMPARE_IGNORECASE ) ||
+ pSecondInt->CompareEqual( aMStr, pSecondInt->GetAbbrevMonthText(i), INTN_COMPARE_IGNORECASE ) )
+ nMonth = i;
+ }
+
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ if ( nYear < 100 )
+ nYear = pFormatter->ExpandTwoDigitYear( nYear );
+
+ if ( nDay && nMonth && nDay<=31 && nMonth<=12 )
+ {
+ Date aDate( nDay, nMonth, nYear );
+ Date aNullDate = *pFormatter->GetNullDate();
+ double nValue = aDate - aNullDate;
+ long nFormat = pFormatter->GetStandardFormat( NUMBERFORMAT_DATE, pDoc->GetLanguage() );
+
+ pDoc->PutCell( nCol, nRow, nTab, new ScValueCell(nValue), nFormat, FALSE );
+
+ return; // Erfolg
+ }
+ }
+ }
+
+ // Standard oder Datum nicht erkannt -> SetString
+
+ pDoc->SetString( nCol, nRow, nTab, rStr );
+}
+
+
+String lcl_GetFixed( const String& rLine, xub_StrLen nStart, xub_StrLen nNext )
+{
+ xub_StrLen nLen = rLine.Len();
+ if (nNext > nLen)
+ nNext = nLen;
+ if ( nNext <= nStart )
+ return EMPTY_STRING;
+
+ const sal_Unicode* pStr = rLine.GetBuffer();
+
+ xub_StrLen nSpace = nNext;
+ while ( nSpace > nStart && pStr[nSpace-1] == ' ' )
+ --nSpace;
+
+ return rLine.Copy( nStart, nSpace-nStart );
+}
+
+
+BOOL ScImportExport::ExtText2Doc( SvStream& rStrm )
+{
+ if (!pExtOptions)
+ return Text2Doc( rStrm );
+
+ ULONG nOldPos = rStrm.Tell();
+ rStrm.Seek( STREAM_SEEK_TO_END );
+ ScProgress aProgress( pDocSh, ScGlobal::GetRscString( STR_LOAD_DOC ), rStrm.Tell() - nOldPos );
+ rStrm.Seek( nOldPos );
+
+ BOOL bOld = ScColumn::bDoubleAlloc;
+ ScColumn::bDoubleAlloc = TRUE;
+
+ DBG_ASSERT( !bUndo, "ExtText2Doc mit Undo noch nicht implementiert!" );
+ USHORT nStartCol = aRange.aStart.Col();
+ USHORT nStartRow = aRange.aStart.Row();
+ USHORT nTab = aRange.aStart.Tab();
+
+ BOOL bFixed = pExtOptions->IsFixedLen();
+ const sal_Unicode* pSeps = pExtOptions->GetFieldSeps().GetBuffer();
+ BOOL bMerge = pExtOptions->IsMergeSeps();
+ USHORT nInfoCount = pExtOptions->GetInfoCount();
+ const xub_StrLen* pColStart = pExtOptions->GetColStart();
+ const BYTE* pColFormat = pExtOptions->GetColFormat();
+ long nSkipLines = pExtOptions->GetStartRow();
+
+ LanguageType eDocLang = pDoc->GetLanguage();
+ International aInter( eDocLang ); // fuer Datums-Erkennung
+ International* pEnglish = NULL;
+ if ( eDocLang != LANGUAGE_ENGLISH_US )
+ pEnglish = new International( LANGUAGE_ENGLISH_US ); // for English month names
+
+ ByteString aByteLine;
+ String aLine, aCell;
+ USHORT i;
+ USHORT nRow = nStartRow;
+
+ while(--nSkipLines>0)
+ {
+ //! allow unicode
+ rStrm.ReadLine( aByteLine ); // content is ignored
+ if ( rStrm.IsEof() )
+ break;
+ }
+ for( ;; )
+ {
+ //! allow unicode
+ rStrm.ReadLine( aByteLine );
+ aLine = String( aByteLine, rStrm.GetStreamCharSet() );
+ if ( rStrm.IsEof() )
+ break;
+
+ xub_StrLen nLineLen = aLine.Len();
+ USHORT nCol = nStartCol;
+ if ( bFixed ) // Feste Satzlaenge
+ {
+ for ( i=0; i<nInfoCount; i++ )
+ {
+ if ( pColFormat[i] != SC_COL_SKIP ) // sonst auch nCol nicht hochzaehlen
+ {
+ xub_StrLen nStart = pColStart[i];
+ xub_StrLen nNext = ( i+1 < nInfoCount ) ? pColStart[i+1] : nLineLen;
+ aCell = lcl_GetFixed( aLine, nStart, nNext );
+ lcl_PutString( pDoc, nCol, nRow, nTab, aCell, pColFormat[i], aInter, pEnglish );
+ ++nCol;
+ }
+ }
+ }
+ else // Nach Trennzeichen suchen
+ {
+ USHORT nSourceCol = 0;
+ USHORT nInfoStart = 0;
+ const sal_Unicode* p = aLine.GetBuffer();
+ while (*p)
+ {
+ p = ScImportExport::ScanNextFieldFromString( p, aCell, cStr, pSeps, bMerge );
+
+ BYTE nFmt = SC_COL_STANDARD;
+ for ( i=nInfoStart; i<nInfoCount; i++ )
+ {
+ if ( pColStart[i] == nSourceCol + 1 ) // pColStart ist 1-basiert
+ {
+ nFmt = pColFormat[i];
+ nInfoStart = i + 1; // ColInfos sind in Reihenfolge
+ break; // for
+ }
+ }
+ if ( nFmt != SC_COL_SKIP )
+ {
+ lcl_PutString( pDoc, nCol, nRow, nTab, aCell, nFmt, aInter, pEnglish );
+ ++nCol;
+ }
+
+ ++nSourceCol;
+ }
+ }
+
+ aProgress.SetStateOnPercent( rStrm.Tell() - nOldPos );
+ ++nRow;
+ if ( nRow > MAXROW )
+ {
+ bOverflow = TRUE; // beim Import Warnung ausgeben
+ break;
+ }
+ }
+
+ ScColumn::bDoubleAlloc = bOld;
+ pDoc->DoColResize( nTab, 0, MAXCOL, 0 );
+
+ delete pEnglish;
+
+ return TRUE;
+}
+
+
+// static
+const sal_Unicode* ScImportExport::ScanNextFieldFromString( const sal_Unicode* p,
+ String& rField, sal_Unicode cStr, const sal_Unicode* pSeps, BOOL bMergeSeps )
+{
+ rField.Erase();
+ if ( *p == cStr ) // String in Anfuehrungszeichen
+ {
+ p = lcl_ScanString( p, rField, cStr, DQM_ESCAPE );
+ while ( *p && !ScGlobal::UnicodeStrChr( pSeps, *p ) )
+ p++;
+ if( *p )
+ p++;
+ }
+ else // bis zum Trennzeichen
+ {
+ const sal_Unicode* p0 = p;
+ while ( *p && !ScGlobal::UnicodeStrChr( pSeps, *p ) )
+ p++;
+ rField.Append( p0, p - p0 );
+ if( *p )
+ p++;
+ }
+ if ( bMergeSeps ) // folgende Trennzeichen ueberspringen
+ {
+ while ( *p && ScGlobal::UnicodeStrChr( pSeps, *p ) )
+ p++;
+ }
+ return p;
+}
+
+ //
+ //
+ //
+
+
+BOOL ScImportExport::Doc2Text( SvStream& rStrm )
+{
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nStartCol = aRange.aStart.Col();
+ USHORT nStartRow = aRange.aStart.Row();
+ USHORT nEndCol = aRange.aEnd.Col();
+ USHORT nEndRow = aRange.aEnd.Row();
+ String aCell;
+
+ for (nRow = nStartRow; nRow <= nEndRow; nRow++)
+ {
+ for (nCol = nStartCol; nCol <= nEndCol; nCol++)
+ {
+ CellType eType;
+ pDoc->GetCellType( nCol, nRow, aRange.aStart.Tab(), eType );
+ switch (eType)
+ {
+ case CELLTYPE_FORMULA:
+ {
+ if (bFormulas)
+ {
+ pDoc->GetFormula( nCol, nRow, aRange.aStart.Tab(), aCell, TRUE );
+ if( aCell.Search( cSep ) != STRING_NOTFOUND )
+ lcl_WriteString( rStrm, aCell, cStr );
+ else
+ lcl_WriteSimpleString( rStrm, aCell );
+ }
+ else
+ {
+ pDoc->GetString( nCol, nRow, aRange.aStart.Tab(), aCell );
+ if( aCell.Search( cSep ) != STRING_NOTFOUND )
+ lcl_WriteString( rStrm, aCell, cStr );
+ else
+ lcl_WriteSimpleString( rStrm, aCell );
+ }
+ }
+ break;
+ case CELLTYPE_VALUE:
+ {
+ pDoc->GetString( nCol, nRow, aRange.aStart.Tab(), aCell );
+ lcl_WriteSimpleString( rStrm, aCell );
+ }
+ break;
+ case CELLTYPE_NOTE:
+ case CELLTYPE_NONE:
+ break;
+ default:
+ {
+ pDoc->GetString( nCol, nRow, aRange.aStart.Tab(), aCell );
+ if( aCell.Search( cSep ) != STRING_NOTFOUND )
+ lcl_WriteString( rStrm, aCell, cStr );
+ else
+ lcl_WriteSimpleString( rStrm, aCell );
+ }
+ }
+ if( nCol < nEndCol )
+ lcl_WriteSimpleString( rStrm, String(cSep) );
+ }
+// if( nRow < nEndRow )
+ WriteUnicodeOrByteEndl( rStrm );
+ if( rStrm.GetError() != SVSTREAM_OK )
+ break;
+ if( nSizeLimit && rStrm.Tell() > nSizeLimit )
+ break;
+ }
+
+ return BOOL( rStrm.GetError() == SVSTREAM_OK );
+}
+
+
+BOOL ScImportExport::Sylk2Doc( SvStream& rStrm )
+{
+ BOOL bOk = TRUE;
+ BOOL bMyDoc = FALSE;
+
+ International aEnglishInt( LANGUAGE_ENGLISH_US ); // for StringToDouble
+
+ USHORT nStartCol = aRange.aStart.Col();
+ USHORT nStartRow = aRange.aStart.Row();
+ USHORT nEndCol = aRange.aEnd.Col();
+ USHORT nEndRow = aRange.aEnd.Row();
+ ULONG nOldPos = rStrm.Tell();
+ BOOL bData = BOOL( !bSingle );
+
+ if( !bSingle)
+ bOk = StartPaste();
+
+ while( bOk )
+ {
+ String aLine;
+ String aCell;
+ ByteString aByteLine;
+ USHORT nCol = nStartCol;
+ USHORT nRow = nStartRow;
+ rStrm.Seek( nOldPos );
+ for( ;; )
+ {
+ //! allow unicode
+ rStrm.ReadLine( aByteLine );
+ aLine = String( aByteLine, rStrm.GetStreamCharSet() );
+ if( rStrm.IsEof() )
+ break;
+ const sal_Unicode* p = aLine.GetBuffer();
+ sal_Unicode cTag = *p++;
+ if( cTag == 'I' && *p == 'D' )
+ {
+ aLine.Erase( 0, 4 );
+ bMyDoc = aLine.EqualsAscii( "SCALC3" );
+ }
+ else if( cTag == 'E' ) // Ende
+ break;
+ else if( cTag == 'C' || cTag == 'F' ) // in F kann die Position gesetzt werden
+ {
+ if( *p++ != ';' )
+ return FALSE;
+ while( *p )
+ {
+ sal_Unicode ch = *p++;
+ ch = ScGlobal::ToUpperAlpha( ch );
+ switch( ch )
+ {
+ case 'X':
+ nCol = String( p ).ToInt32() + nStartCol - 1;
+ break;
+ case 'Y':
+ nRow = String( p ).ToInt32() + nStartRow - 1;
+ break;
+ case 'K':
+ if( cTag != 'C' ) // nur bei 'C'
+ break;
+ if( !bSingle &&
+ ( nCol < nStartCol || nCol > nEndCol
+ || nRow < nStartRow || nRow > nEndRow
+ || nCol > MAXCOL || nRow > MAXROW ) )
+ break;
+ if( !bData )
+ {
+ if( nRow > nEndRow )
+ nEndRow = nRow;
+ if( nCol > nEndCol )
+ nEndCol = nCol;
+ break;
+ }
+ if( *p == '"' )
+ {
+ String aText;
+ p = lcl_ScanString( p, aText, '"', DQM_KEEP );
+ pDoc->SetString( nCol, nRow, aRange.aStart.Tab(), aText );
+ }
+ else
+ {
+ int nErr;
+ double fVal = SolarMath::StringToDouble( p, aEnglishInt, nErr );
+ pDoc->SetValue( nCol, nRow, aRange.aStart.Tab(), fVal );
+ }
+ break;
+ case 'E':
+ if( !bMyDoc || !bData )
+ break;
+ if( *p == '"' )
+ {
+ String aText;
+ p = lcl_ScanString( p, aText, '"', DQM_KEEP );
+ aText.Insert( '=', 0 );
+ pDoc->SetString( nCol, nRow, aRange.aStart.Tab(), aText );
+ }
+ else
+ {
+ sal_Unicode* q = (sal_Unicode*) p;
+ while( *q && *q != ';' )
+ q++;
+ *q = 0;
+ String aText( '=' );
+ aText += p;
+ *q = ';'; p = q;
+ pDoc->SetString( nCol, nRow, aRange.aStart.Tab(), aText );
+ }
+ break;
+ }
+ while( *p && *p != ';' )
+ p++;
+ if( *p )
+ p++;
+ }
+ }
+ }
+ if( !bData )
+ {
+ aRange.aEnd.SetCol( nEndCol );
+ aRange.aEnd.SetRow( nEndRow );
+ bOk = StartPaste();
+ bData = TRUE;
+ }
+ else
+ break;
+ }
+
+ EndPaste();
+ return bOk;
+}
+
+
+BOOL ScImportExport::Doc2Sylk( SvStream& rStrm )
+{
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nStartCol = aRange.aStart.Col();
+ USHORT nStartRow = aRange.aStart.Row();
+ USHORT nEndCol = aRange.aEnd.Col();
+ USHORT nEndRow = aRange.aEnd.Row();
+ String aCellStr;
+ String aValStr;
+ lcl_WriteSimpleString( rStrm,
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "ID;PSCALC3" )) );
+ WriteUnicodeOrByteEndl( rStrm );
+
+ for (nRow = nStartRow; nRow <= nEndRow; nRow++)
+ {
+ for (nCol = nStartCol; nCol <= nEndCol; nCol++)
+ {
+ String aBufStr;
+ CellType eType;
+ double nVal;
+ BOOL bForm = FALSE;
+ USHORT r = nRow - nStartRow + 1;
+ USHORT c = nCol - nStartCol + 1;
+ pDoc->GetCellType( nCol, nRow, aRange.aStart.Tab(), eType );
+ switch( eType )
+ {
+ case CELLTYPE_FORMULA:
+ bForm = bFormulas;
+ if( pDoc->HasValueData( nCol, nRow, aRange.aStart.Tab()) )
+ goto hasvalue;
+ else
+ goto hasstring;
+
+ case CELLTYPE_VALUE:
+ hasvalue:
+ pDoc->GetValue( nCol, nRow, aRange.aStart.Tab(), nVal );
+ //sprintf( cBuf, "C;X%d;Y%d;K%lg", c, r, nVal );
+
+ aValStr.Erase();
+ SolarMath::DoubleToString( aValStr, nVal, 'A', INT_MAX, '.', TRUE );
+
+ aBufStr.AssignAscii(RTL_CONSTASCII_STRINGPARAM( "C;X" ));
+ aBufStr += String::CreateFromInt32( c );
+ aBufStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";Y" ));
+ aBufStr += String::CreateFromInt32( r );
+ aBufStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";K" ));
+ aBufStr += aValStr;
+ lcl_WriteSimpleString( rStrm, aBufStr );
+ goto checkformula;
+
+ case CELLTYPE_STRING:
+ case CELLTYPE_EDIT:
+ hasstring:
+ pDoc->GetString( nCol, nRow, aRange.aStart.Tab(), aCellStr );
+ //sprintf( cBuf, "C;X%d;Y%d;K", c, r );
+
+ aBufStr.AssignAscii(RTL_CONSTASCII_STRINGPARAM( "C;X" ));
+ aBufStr += String::CreateFromInt32( c );
+ aBufStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";Y" ));
+ aBufStr += String::CreateFromInt32( r );
+ aBufStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";K" ));
+ lcl_WriteSimpleString( rStrm, aBufStr );
+ lcl_WriteString( rStrm, aCellStr, '"' );
+
+ checkformula:
+ if( bForm )
+ {
+ pDoc->GetFormula( nCol, nRow, aRange.aStart.Tab(), aCellStr, TRUE );
+ if (aCellStr.GetChar(0) == '=')
+ aCellStr.Erase(0,1);
+ lcl_WriteSimpleString( rStrm,
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( ";E" )) );
+ if( aCellStr.Search( ';' ) != STRING_NOTFOUND )
+ lcl_WriteString( rStrm, aCellStr, '"' );
+ else
+ lcl_WriteSimpleString( rStrm, aCellStr );
+ }
+ WriteUnicodeOrByteEndl( rStrm );
+ break;
+ }
+ }
+ }
+ lcl_WriteSimpleString( rStrm, String( 'E' ) );
+ WriteUnicodeOrByteEndl( rStrm );
+ return BOOL( rStrm.GetError() == SVSTREAM_OK );
+}
+
+
+BOOL ScImportExport::Doc2HTML( SvStream& rStrm )
+{
+ // CharSet is ignored in ScExportHTML
+ ScExportHTML( rStrm, pDoc, aRange, RTL_TEXTENCODING_DONTKNOW, bAll, aStreamPath );
+ return BOOL( rStrm.GetError() == SVSTREAM_OK );
+}
+
+BOOL ScImportExport::Doc2RTF( SvStream& rStrm )
+{
+ // CharSet is ignored in ScExportRTF
+ ScExportRTF( rStrm, pDoc, aRange, RTL_TEXTENCODING_DONTKNOW );
+ return BOOL( rStrm.GetError() == SVSTREAM_OK );
+}
+
+
+BOOL ScImportExport::Doc2Dif( SvStream& rStrm )
+{
+ ScExportDif( rStrm, pDoc, aRange, gsl_getSystemTextEncoding() );
+ return TRUE;
+}
+
+
+BOOL ScImportExport::Dif2Doc( SvStream& rStrm )
+{
+ USHORT nTab = aRange.aStart.Tab();
+ ScDocument* pImportDoc = new ScDocument( SCDOCMODE_UNDO );
+ pImportDoc->InitUndo( pDoc, nTab, nTab );
+
+ ScImportDif( rStrm, pImportDoc, aRange.aStart, gsl_getSystemTextEncoding() );
+
+ USHORT nEndCol, nEndRow;
+ pImportDoc->GetCellArea( nTab, nEndCol, nEndRow );
+ aRange.aEnd = ScAddress( nEndCol, nEndRow, nTab );
+
+ BOOL bOk = StartPaste();
+ if (bOk)
+ {
+ USHORT nFlags = IDF_ALL & ~IDF_STYLES;
+ pDoc->DeleteAreaTab( aRange, nFlags );
+ pImportDoc->CopyToDocument( aRange, nFlags, FALSE, pDoc );
+ EndPaste();
+ }
+
+ delete pImportDoc;
+
+ return bOk;
+}
+
+
+BOOL ScImportExport::RTF2Doc( SvStream& rStrm )
+{
+ ScRTFImport aImp( pDoc, aRange );
+ aImp.Read( rStrm );
+ aRange = aImp.GetRange();
+
+ BOOL bOk = StartPaste();
+ if (bOk)
+ {
+ USHORT nFlags = IDF_ALL & ~IDF_STYLES;
+ pDoc->DeleteAreaTab( aRange, nFlags );
+ aImp.WriteToDocument();
+ EndPaste();
+ }
+
+ return bOk;
+}
+
+
+BOOL ScImportExport::HTML2Doc( SvStream& rStrm )
+{
+ ScHTMLImport aImp( pDoc, aRange );
+ aImp.Read( rStrm );
+ aRange = aImp.GetRange();
+
+ BOOL bOk = StartPaste();
+ if (bOk)
+ {
+ // ScHTMLImport may call ScDocument::InitDrawLayer, resulting in
+ // a DrawLayer but no DrawView -> create DrawLayer and View here
+ if (pDocSh)
+ pDocSh->MakeDrawLayer();
+
+ USHORT nFlags = IDF_ALL & ~IDF_STYLES;
+ pDoc->DeleteAreaTab( aRange, nFlags );
+ aImp.WriteToDocument();
+ EndPaste();
+ }
+
+ return bOk;
+}
+
+
diff --git a/sc/source/ui/docshell/makefile.mk b/sc/source/ui/docshell/makefile.mk
new file mode 100644
index 000000000000..0ec3b23dfbfa
--- /dev/null
+++ b/sc/source/ui/docshell/makefile.mk
@@ -0,0 +1,141 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=docshell
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ docsh.cxx \
+ docsh2.cxx \
+ docsh3.cxx \
+ docsh4.cxx \
+ docsh5.cxx \
+ docsh6.cxx \
+ docsh7.cxx \
+ docsh8.cxx \
+ tablink.cxx \
+ arealink.cxx \
+ dbdocfun.cxx \
+ dbdocimp.cxx \
+ impex.cxx \
+ docfunc.cxx \
+ olinefun.cxx \
+ servobj.cxx \
+ tpstat.cxx \
+ autostyl.cxx \
+ pagedata.cxx \
+ hiranges.cxx \
+ pntlock.cxx
+
+
+SLOFILES = \
+ $(SLO)$/docsh.obj \
+ $(SLO)$/docsh2.obj \
+ $(SLO)$/docsh3.obj \
+ $(SLO)$/docsh4.obj \
+ $(SLO)$/docsh5.obj \
+ $(SLO)$/docsh6.obj \
+ $(SLO)$/docsh7.obj \
+ $(SLO)$/docsh8.obj \
+ $(SLO)$/tablink.obj \
+ $(SLO)$/arealink.obj \
+ $(SLO)$/dbdocfun.obj \
+ $(SLO)$/dbdocimp.obj \
+ $(SLO)$/impex.obj \
+ $(SLO)$/docfunc.obj \
+ $(SLO)$/olinefun.obj \
+ $(SLO)$/servobj.obj \
+ $(SLO)$/tpstat.obj \
+ $(SLO)$/autostyl.obj \
+ $(SLO)$/pagedata.obj \
+ $(SLO)$/hiranges.obj \
+ $(SLO)$/pntlock.obj
+
+
+EXCEPTIONSFILES= \
+ $(SLO)$/dbdocimp.obj
+
+
+SRCFILES = tpstat.src
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/docshell/olinefun.cxx b/sc/source/ui/docshell/olinefun.cxx
new file mode 100644
index 000000000000..4a76585bc605
--- /dev/null
+++ b/sc/source/ui/docshell/olinefun.cxx
@@ -0,0 +1,764 @@
+/*************************************************************************
+ *
+ * $RCSfile: olinefun.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <vcl/sound.hxx>
+
+#include "olinefun.hxx"
+
+#include "docsh.hxx"
+#include "olinetab.hxx"
+#include "undodat.hxx"
+#include "globstr.hrc"
+
+
+//========================================================================
+
+void lcl_InvalidateOutliner(); //! in dbfunc3 - hierher verschieben!!!
+
+//------------------------------------------------------------------------
+
+//! PaintWidthHeight zur DocShell verschieben?
+
+void lcl_PaintWidthHeight( ScDocShell& rDocShell, USHORT nTab,
+ BOOL bColumns, USHORT nStart, USHORT nEnd )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+
+ USHORT nParts = PAINT_GRID;
+ USHORT nStartCol = 0;
+ USHORT nStartRow = 0;
+ USHORT nEndCol = MAXCOL; // fuer Test auf Merge
+ USHORT nEndRow = MAXROW;
+ if ( bColumns )
+ {
+ nParts |= PAINT_TOP;
+ nStartCol = nStart;
+ nEndCol = nEnd;
+ }
+ else
+ {
+ nParts |= PAINT_LEFT;
+ nStartRow = nStart;
+ nEndRow = nEnd;
+ }
+ if (pDoc->HasAttrib( nStartCol,nStartRow,nTab, nEndCol,nEndRow,nTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ))
+ {
+ nStartCol = 0;
+ nStartRow = 0;
+ }
+ rDocShell.PostPaint( nStartCol,nStartRow,nTab, MAXCOL,MAXROW,nTab, nParts );
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScOutlineDocFunc::MakeOutline( const ScRange& rRange, BOOL bColumns, BOOL bRecord, BOOL bApi )
+{
+ BOOL bSuccess = FALSE;
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nTab = rRange.aStart.Tab();
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab, TRUE );
+ ScOutlineTable* pUndoTab = NULL;
+
+ if (bRecord)
+ pUndoTab = new ScOutlineTable( *pTable );
+
+ ScOutlineArray* pArray = bColumns ? pTable->GetColArray() : pTable->GetRowArray();
+
+ BOOL bRes;
+ BOOL bSize = FALSE;
+ if ( bColumns )
+ bRes = pArray->Insert( nStartCol, nEndCol, bSize );
+ else
+ bRes = pArray->Insert( nStartRow, nEndRow, bSize );
+
+ if ( bRes )
+ {
+ if (bRecord)
+ {
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoMakeOutline( &rDocShell,
+ nStartCol,nStartRow,nTab,nEndCol,nEndRow,nTab,
+ pUndoTab, bColumns, TRUE ) );
+ }
+
+ USHORT nParts = 0; // Datenbereich nicht geaendert
+ if ( bColumns )
+ nParts |= PAINT_TOP;
+ else
+ nParts |= PAINT_LEFT;
+ if ( bSize )
+ nParts |= PAINT_SIZE;
+
+ rDocShell.PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, nParts );
+ rDocShell.SetDocumentModified();
+ lcl_InvalidateOutliner();
+ bSuccess = TRUE;
+ }
+ else
+ {
+ if (!bApi)
+ rDocShell.ErrorMessage(STR_MSSG_MAKEOUTLINE_0); // "Gruppierung nicht moeglich"
+ delete pUndoTab;
+ }
+
+ return bSuccess;
+}
+
+BOOL ScOutlineDocFunc::RemoveOutline( const ScRange& rRange, BOOL bColumns, BOOL bRecord, BOOL bApi )
+{
+ BOOL bDone = FALSE;
+
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nTab = rRange.aStart.Tab();
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (pTable)
+ {
+ ScOutlineTable* pUndoTab = NULL;
+ if (bRecord)
+ pUndoTab = new ScOutlineTable( *pTable );
+
+ ScOutlineArray* pArray = bColumns ? pTable->GetColArray() : pTable->GetRowArray();
+
+ BOOL bRes;
+ BOOL bSize = FALSE;
+ if ( bColumns )
+ bRes = pArray->Remove( nStartCol, nEndCol, bSize );
+ else
+ bRes = pArray->Remove( nStartRow, nEndRow, bSize );
+
+ if ( bRes )
+ {
+ if (bRecord)
+ {
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoMakeOutline( &rDocShell,
+ nStartCol,nStartRow,nTab, nEndCol,nEndRow,nTab,
+ pUndoTab, bColumns, FALSE ) );
+ }
+
+ USHORT nParts = 0; // Datenbereich nicht geaendert
+ if ( bColumns )
+ nParts |= PAINT_TOP;
+ else
+ nParts |= PAINT_LEFT;
+ if ( bSize )
+ nParts |= PAINT_SIZE;
+
+ rDocShell.PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, nParts );
+ rDocShell.SetDocumentModified();
+ bDone = TRUE;
+ lcl_InvalidateOutliner();
+
+ // es wird nicht wieder eingeblendet -> kein UpdatePageBreaks
+ }
+ else
+ delete pUndoTab;
+ }
+
+ if (!bDone && !bApi)
+ rDocShell.ErrorMessage(STR_MSSG_REMOVEOUTLINE_0); // "Aufheben nicht moeglich"
+
+ return bDone;
+}
+
+BOOL ScOutlineDocFunc::RemoveAllOutlines( USHORT nTab, BOOL bRecord, BOOL bApi )
+{
+ BOOL bSuccess = FALSE;
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (pTable)
+ {
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ pTable->GetColArray()->GetRange( nStartCol, nEndCol );
+ pTable->GetRowArray()->GetRange( nStartRow, nEndRow );
+
+ if (bRecord)
+ {
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ pDoc->CopyToDocument( nStartCol, 0, nTab, nEndCol, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ pDoc->CopyToDocument( 0, nStartRow, nTab, MAXCOL, nEndRow, nTab, IDF_NONE, FALSE, pUndoDoc );
+
+ ScOutlineTable* pUndoTab = new ScOutlineTable( *pTable );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoRemoveAllOutlines( &rDocShell,
+ nStartCol, nStartRow, nTab,
+ nEndCol, nEndRow, nTab,
+ pUndoDoc, pUndoTab ) );
+ }
+
+ SelectLevel( nTab, TRUE, pTable->GetColArray()->GetDepth(), FALSE, FALSE, bApi );
+ SelectLevel( nTab, FALSE, pTable->GetRowArray()->GetDepth(), FALSE, FALSE, bApi );
+ pDoc->SetOutlineTable( nTab, NULL );
+
+ pDoc->UpdatePageBreaks( nTab );
+
+ rDocShell.PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab,
+ PAINT_GRID | PAINT_LEFT | PAINT_TOP | PAINT_SIZE );
+ rDocShell.SetDocumentModified();
+ lcl_InvalidateOutliner();
+ bSuccess = TRUE;
+ }
+ else if (!bApi)
+ Sound::Beep();
+
+ return bSuccess;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScOutlineDocFunc::AutoOutline( const ScRange& rRange, BOOL bRecord, BOOL bApi )
+{
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nTab = rRange.aStart.Tab();
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+
+ ScDocument* pUndoDoc = NULL;
+ ScOutlineTable* pUndoTab = NULL;
+
+ if ( pTable )
+ {
+ if ( bRecord )
+ {
+ pUndoTab = new ScOutlineTable( *pTable );
+
+ USHORT nOutStartCol;
+ USHORT nOutStartRow;
+ USHORT nOutEndCol;
+ USHORT nOutEndRow;
+ pTable->GetColArray()->GetRange( nOutStartCol, nOutEndCol );
+ pTable->GetRowArray()->GetRange( nOutStartRow, nOutEndRow );
+
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ pDoc->CopyToDocument( nOutStartCol, 0, nTab, nOutEndCol, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ pDoc->CopyToDocument( 0, nOutStartRow, nTab, MAXCOL, nOutEndRow, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+
+ // einblenden
+ SelectLevel( nTab, TRUE, pTable->GetColArray()->GetDepth(), FALSE, FALSE, bApi );
+ SelectLevel( nTab, FALSE, pTable->GetRowArray()->GetDepth(), FALSE, FALSE, bApi );
+ pDoc->SetOutlineTable( nTab, NULL );
+ }
+
+ pDoc->DoAutoOutline( nStartCol,nStartRow, nEndCol,nEndRow, nTab );
+
+ if (bRecord)
+ {
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoAutoOutline( &rDocShell,
+ nStartCol, nStartRow, nTab,
+ nEndCol, nEndRow, nTab,
+ pUndoDoc, pUndoTab ) );
+ }
+
+ rDocShell.PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_LEFT | PAINT_TOP | PAINT_SIZE );
+ rDocShell.SetDocumentModified();
+ lcl_InvalidateOutliner();
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScOutlineDocFunc::SelectLevel( USHORT nTab, BOOL bColumns, USHORT nLevel,
+ BOOL bRecord, BOOL bPaint, BOOL bApi )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab ); // ist schon da
+ if (!pTable)
+ return FALSE;
+ ScOutlineArray* pArray = bColumns ? pTable->GetColArray() : pTable->GetRowArray();
+ if (!pArray)
+ return FALSE;
+
+ USHORT nStart;
+ USHORT nEnd;
+ pArray->GetRange( nStart, nEnd );
+
+ if ( bRecord )
+ {
+ ScOutlineTable* pUndoTab = new ScOutlineTable( *pTable );
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ if (bColumns)
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, FALSE );
+ pDoc->CopyToDocument( nStart, 0, nTab, nEnd, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+ else
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, TRUE );
+ pDoc->CopyToDocument( 0, nStart, nTab, MAXCOL, nEnd, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoOutlineLevel( &rDocShell,
+ nStart, nEnd, nTab, //! start und end berechnen
+ pUndoDoc, pUndoTab,
+ bColumns, nLevel ) );
+ }
+
+ ScSubOutlineIterator aIter( pArray ); // alle Eintraege
+ ScOutlineEntry* pEntry;
+ while ((pEntry=aIter.GetNext()) != NULL)
+ {
+ USHORT nThisLevel = aIter.LastLevel();
+ BOOL bShow = (nThisLevel < nLevel);
+ if (bShow) // einblenden
+ {
+ pEntry->SetHidden( FALSE );
+ pEntry->SetVisible( TRUE );
+ }
+ else if ( nThisLevel == nLevel ) // ausblenden
+ {
+ pEntry->SetHidden( TRUE );
+ pEntry->SetVisible( TRUE );
+ }
+ else // verdeckt
+ {
+ pEntry->SetVisible( FALSE );
+ }
+
+ USHORT nThisStart = pEntry->GetStart();
+ USHORT nThisEnd = pEntry->GetEnd();
+ for (USHORT i=nThisStart; i<=nThisEnd; i++)
+ {
+ if ( bColumns )
+ pDoc->ShowCol( i, nTab, bShow );
+ else
+ if ( !bShow || !pDoc->IsFiltered( i,nTab ) )
+ pDoc->ShowRow( i, nTab, bShow );
+ }
+ }
+
+ pDoc->UpdatePageBreaks( nTab );
+
+ if (bPaint)
+ lcl_PaintWidthHeight( rDocShell, nTab, bColumns, nStart, nEnd );
+
+ rDocShell.SetDocumentModified();
+ lcl_InvalidateOutliner();
+
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScOutlineDocFunc::ShowMarkedOutlines( const ScRange& rRange, BOOL bRecord, BOOL bApi )
+{
+ BOOL bDone = FALSE;
+
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nTab = rRange.aStart.Tab();
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+
+ if (pTable)
+ {
+ ScOutlineArray* pArray;
+ ScOutlineEntry* pEntry;
+ USHORT nStart;
+ USHORT nEnd;
+ USHORT nMin;
+ USHORT nMax;
+ USHORT i;
+
+ if ( bRecord )
+ {
+ ScOutlineTable* pUndoTab = new ScOutlineTable( *pTable );
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ pDoc->CopyToDocument( nStartCol, 0, nTab, nEndCol, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ pDoc->CopyToDocument( 0, nStartRow, nTab, MAXCOL, nEndRow, nTab, IDF_NONE, FALSE, pUndoDoc );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoOutlineBlock( &rDocShell,
+ nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab,
+ pUndoDoc, pUndoTab, TRUE ) );
+ }
+
+ // Spalten
+
+ nMin=MAXCOL;
+ nMax=0;
+ pArray = pTable->GetColArray();
+ ScSubOutlineIterator aColIter( pArray );
+ while ((pEntry=aColIter.GetNext()) != NULL)
+ {
+ nStart = pEntry->GetStart();
+ nEnd = pEntry->GetEnd();
+ if ( nStart>=nStartCol && nEnd<=nEndCol )
+ {
+ pEntry->SetHidden( FALSE );
+ pEntry->SetVisible( TRUE );
+ if (nStart<nMin) nMin=nStart;
+ if (nEnd>nMax) nMax=nEnd;
+ }
+ }
+ for ( i=nMin; i<=nMax; i++ )
+ pDoc->ShowCol( i, nTab, TRUE );
+
+ // Zeilen
+
+ nMin=MAXROW;
+ nMax=0;
+ pArray = pTable->GetRowArray();
+ ScSubOutlineIterator aRowIter( pArray );
+ while ((pEntry=aRowIter.GetNext()) != NULL)
+ {
+ nStart = pEntry->GetStart();
+ nEnd = pEntry->GetEnd();
+ if ( nStart>=nStartRow && nEnd<=nEndRow )
+ {
+ pEntry->SetHidden( FALSE );
+ pEntry->SetVisible( TRUE );
+ if (nStart<nMin) nMin=nStart;
+ if (nEnd>nMax) nMax=nEnd;
+ }
+ }
+ for ( i=nMin; i<=nMax; i++ )
+ if ( !pDoc->IsFiltered( i,nTab ) ) // weggefilterte nicht einblenden
+ pDoc->ShowRow( i, nTab, TRUE );
+
+ pDoc->UpdatePageBreaks( nTab );
+
+ rDocShell.PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID | PAINT_LEFT | PAINT_TOP );
+
+ rDocShell.SetDocumentModified();
+ bDone = TRUE;
+
+ lcl_InvalidateOutliner();
+ }
+
+ if (!bDone && !bApi)
+ Sound::Beep();
+
+ return bDone;
+}
+
+BOOL ScOutlineDocFunc::HideMarkedOutlines( const ScRange& rRange, BOOL bRecord, BOOL bApi )
+{
+ BOOL bDone = FALSE;
+
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nStartRow = rRange.aStart.Row();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nEndRow = rRange.aEnd.Row();
+ USHORT nTab = rRange.aStart.Tab();
+
+ ScDocument* pDoc = rDocShell.GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+
+ if (pTable)
+ {
+ ScOutlineEntry* pEntry;
+ USHORT nColLevel;
+ USHORT nRowLevel;
+ USHORT nCount;
+ USHORT nStart;
+ USHORT nEnd;
+ USHORT i;
+
+ USHORT nEffStartCol = nStartCol;
+ USHORT nEffEndCol = nEndCol;
+ ScOutlineArray* pColArray = pTable->GetColArray();
+ pColArray->FindTouchedLevel( nStartCol, nEndCol, nColLevel );
+ pColArray->ExtendBlock( nColLevel, nEffStartCol, nEffEndCol );
+ USHORT nEffStartRow = nStartRow;
+ USHORT nEffEndRow = nEndRow;
+ ScOutlineArray* pRowArray = pTable->GetRowArray();
+ pRowArray->FindTouchedLevel( nStartRow, nEndRow, nRowLevel );
+ pRowArray->ExtendBlock( nRowLevel, nEffStartRow, nEffEndRow );
+
+ if ( bRecord )
+ {
+ ScOutlineTable* pUndoTab = new ScOutlineTable( *pTable );
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ pDoc->CopyToDocument( nEffStartCol, 0, nTab, nEffEndCol, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ pDoc->CopyToDocument( 0, nEffStartRow, nTab, MAXCOL, nEffEndRow, nTab, IDF_NONE, FALSE, pUndoDoc );
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoOutlineBlock( &rDocShell,
+ nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab,
+ pUndoDoc, pUndoTab, FALSE ) );
+ }
+
+ // Spalten
+
+ nCount = pColArray->GetCount(nColLevel);
+ for ( i=0; i<nCount; i++ )
+ {
+ pEntry = pColArray->GetEntry(nColLevel,i);
+ nStart = pEntry->GetStart();
+ nEnd = pEntry->GetEnd();
+
+ if ( nStartCol<=nEnd && nEndCol>=nStart )
+ HideOutline( nTab, TRUE, nColLevel, i, FALSE, FALSE, bApi );
+ }
+
+ // Zeilen
+
+ nCount = pRowArray->GetCount(nRowLevel);
+ for ( i=0; i<nCount; i++ )
+ {
+ pEntry = pRowArray->GetEntry(nRowLevel,i);
+ nStart = pEntry->GetStart();
+ nEnd = pEntry->GetEnd();
+
+ if ( nStartRow<=nEnd && nEndRow>=nStart )
+ HideOutline( nTab, FALSE, nRowLevel, i, FALSE, FALSE, bApi );
+ }
+
+ pDoc->UpdatePageBreaks( nTab );
+
+ rDocShell.PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID | PAINT_LEFT | PAINT_TOP );
+
+ rDocShell.SetDocumentModified();
+ bDone = TRUE;
+
+ lcl_InvalidateOutliner();
+ }
+
+ if (!bDone && !bApi)
+ Sound::Beep();
+
+ return bDone;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScOutlineDocFunc::ShowOutline( USHORT nTab, BOOL bColumns, USHORT nLevel, USHORT nEntry,
+ BOOL bRecord, BOOL bPaint, BOOL bApi )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ ScOutlineArray* pArray = bColumns ? pTable->GetColArray() : pTable->GetRowArray();
+ ScOutlineEntry* pEntry = pArray->GetEntry( nLevel, nEntry );
+ USHORT nStart = pEntry->GetStart();
+ USHORT nEnd = pEntry->GetEnd();
+
+ if ( bRecord )
+ {
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ if (bColumns)
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, FALSE );
+ pDoc->CopyToDocument( nStart, 0, nTab, nEnd, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+ else
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, TRUE );
+ pDoc->CopyToDocument( 0, nStart, nTab, MAXCOL, nEnd, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDoOutline( &rDocShell,
+ nStart, nEnd, nTab, pUndoDoc, //! start und end berechnen
+ bColumns, nLevel, nEntry, TRUE ) );
+ }
+
+//! HideCursor();
+
+ pEntry->SetHidden(FALSE);
+ USHORT i;
+ for ( i = nStart; i <= nEnd; i++ )
+ {
+ if ( bColumns )
+ pDoc->ShowCol( i, nTab, TRUE );
+ else
+ if ( !pDoc->IsFiltered( i,nTab ) ) // weggefilterte nicht einblenden
+ pDoc->ShowRow( i, nTab, TRUE );
+ }
+
+ ScSubOutlineIterator aIter( pArray, nLevel, nEntry );
+ while ((pEntry=aIter.GetNext()) != NULL)
+ {
+ if ( pEntry->IsHidden() )
+ {
+ USHORT nSubStart = pEntry->GetStart();
+ USHORT nSubEnd = pEntry->GetEnd();
+ for ( i = nSubStart; i <= nSubEnd; i++ )
+ {
+ if ( bColumns )
+ pDoc->ShowCol( i, nTab, FALSE );
+ else
+ pDoc->ShowRow( i, nTab, FALSE );
+ }
+ }
+ }
+
+ pArray->SetVisibleBelow( nLevel, nEntry, TRUE, TRUE );
+
+ pDoc->UpdatePageBreaks( nTab );
+
+ if (bPaint)
+ lcl_PaintWidthHeight( rDocShell, nTab, bColumns, nStart, nEnd );
+
+//! ShowCursor();
+ rDocShell.SetDocumentModified();
+
+//! if (bPaint)
+//! UpdateScrollBars();
+
+ lcl_InvalidateOutliner();
+
+ return TRUE; //! immer ???
+}
+
+BOOL ScOutlineDocFunc::HideOutline( USHORT nTab, BOOL bColumns, USHORT nLevel, USHORT nEntry,
+ BOOL bRecord, BOOL bPaint, BOOL bApi )
+{
+ ScDocument* pDoc = rDocShell.GetDocument();
+
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ ScOutlineArray* pArray = bColumns ? pTable->GetColArray() : pTable->GetRowArray();
+ ScOutlineEntry* pEntry = pArray->GetEntry( nLevel, nEntry );
+ USHORT nStart = pEntry->GetStart();
+ USHORT nEnd = pEntry->GetEnd();
+
+ if ( bRecord )
+ {
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ if (bColumns)
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, FALSE );
+ pDoc->CopyToDocument( nStart, 0, nTab, nEnd, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+ else
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, TRUE );
+ pDoc->CopyToDocument( 0, nStart, nTab, MAXCOL, nEnd, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+
+ rDocShell.GetUndoManager()->AddUndoAction(
+ new ScUndoDoOutline( &rDocShell,
+ nStart, nEnd, nTab, pUndoDoc,
+ bColumns, nLevel, nEntry, FALSE ) );
+ }
+
+//! HideCursor();
+
+ pEntry->SetHidden(TRUE);
+ USHORT i;
+ for ( i = nStart; i <= nEnd; i++ )
+ {
+ if ( bColumns )
+ pDoc->ShowCol( i, nTab, FALSE );
+ else
+ pDoc->ShowRow( i, nTab, FALSE );
+ }
+
+ pArray->SetVisibleBelow( nLevel, nEntry, FALSE );
+
+ pDoc->UpdatePageBreaks( nTab );
+
+ if (bPaint)
+ lcl_PaintWidthHeight( rDocShell, nTab, bColumns, nStart, nEnd );
+
+//! ShowCursor();
+ rDocShell.SetDocumentModified();
+
+//! if (bPaint)
+//! UpdateScrollBars();
+
+ lcl_InvalidateOutliner();
+
+ return TRUE; //! immer ???
+}
+
+
+
+
+
diff --git a/sc/source/ui/docshell/pagedata.cxx b/sc/source/ui/docshell/pagedata.cxx
new file mode 100644
index 000000000000..c0a3b6e99101
--- /dev/null
+++ b/sc/source/ui/docshell/pagedata.cxx
@@ -0,0 +1,180 @@
+/*************************************************************************
+ *
+ * $RCSfile: pagedata.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#include <string.h>
+
+#ifndef _DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include "segmentc.hxx"
+#endif
+
+#include "pagedata.hxx"
+
+//============================================================================
+
+ScPrintRangeData::ScPrintRangeData()
+{
+ nPagesX = nPagesY = 0;
+ pPageEndX = pPageEndY = NULL;
+ bTopDown = bAutomatic = TRUE;
+ nFirstPage = 1;
+}
+
+ScPrintRangeData::~ScPrintRangeData()
+{
+ delete[] pPageEndX;
+ delete[] pPageEndY;
+}
+
+void ScPrintRangeData::SetPagesX( USHORT nCount, const USHORT* pData )
+{
+ delete[] pPageEndX;
+ if ( nCount )
+ {
+ pPageEndX = new USHORT[nCount];
+ memcpy( pPageEndX, pData, nCount * sizeof(USHORT) );
+ }
+ else
+ pPageEndX = NULL;
+ nPagesX = nCount;
+}
+
+void ScPrintRangeData::SetPagesY( USHORT nCount, const USHORT* pData )
+{
+ delete[] pPageEndY;
+ if ( nCount )
+ {
+ pPageEndY = new USHORT[nCount];
+ memcpy( pPageEndY, pData, nCount * sizeof(USHORT) );
+ }
+ else
+ pPageEndY = NULL;
+ nPagesY = nCount;
+}
+
+//============================================================================
+
+ScPageBreakData::ScPageBreakData(USHORT nMax)
+{
+ nUsed = 0;
+ if (nMax)
+ pData = new ScPrintRangeData[nMax];
+ else
+ pData = NULL;
+ nAlloc = nMax;
+}
+
+ScPageBreakData::~ScPageBreakData()
+{
+ delete[] pData;
+}
+
+ScPrintRangeData& ScPageBreakData::GetData(USHORT nPos)
+{
+ DBG_ASSERT(nPos < nAlloc, "ScPageBreakData::GetData bumm");
+
+ if ( nPos >= nUsed )
+ {
+ DBG_ASSERT(nPos == nUsed, "ScPageBreakData::GetData falsche Reihenfolge");
+ nUsed = nPos+1;
+ }
+
+ return pData[nPos];
+}
+
+BOOL ScPageBreakData::IsEqual( const ScPageBreakData& rOther ) const
+{
+ if ( nUsed != rOther.nUsed )
+ return FALSE;
+
+ for (USHORT i=0; i<nUsed; i++)
+ if ( pData[i].GetPrintRange() != rOther.pData[i].GetPrintRange() )
+ return FALSE;
+
+ //! ScPrintRangeData komplett vergleichen ??
+
+ return TRUE;
+}
+
+void ScPageBreakData::AddPages()
+{
+ if ( nUsed > 1 )
+ {
+ long nPage = pData[0].GetFirstPage();
+ for (USHORT i=0; i+1<nUsed; i++)
+ {
+ nPage += ((long)pData[i].GetPagesX())*pData[i].GetPagesY();
+ pData[i+1].SetFirstPage( nPage );
+ }
+ }
+}
+
+
+
diff --git a/sc/source/ui/docshell/pntlock.cxx b/sc/source/ui/docshell/pntlock.cxx
new file mode 100644
index 000000000000..c8e9262e4a17
--- /dev/null
+++ b/sc/source/ui/docshell/pntlock.cxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * $RCSfile: pntlock.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "pntlock.hxx"
+
+//------------------------------------------------------------------------
+
+ScPaintLockData::ScPaintLockData(USHORT nNewMode) :
+ nMode( nNewMode ),
+ nParts( 0 ),
+ nLevel( 0 ),
+ bModified( FALSE )
+{
+}
+
+ScPaintLockData::~ScPaintLockData()
+{
+}
+
+void ScPaintLockData::AddRange( const ScRange& rRange, USHORT nP )
+{
+ if (!xRangeList.Is())
+ xRangeList = new ScRangeList;
+
+ xRangeList->Join( rRange );
+ nParts |= nP;
+}
+
+
+
+
diff --git a/sc/source/ui/docshell/servobj.cxx b/sc/source/ui/docshell/servobj.cxx
new file mode 100644
index 000000000000..f2a8912caaba
--- /dev/null
+++ b/sc/source/ui/docshell/servobj.cxx
@@ -0,0 +1,285 @@
+/*************************************************************************
+ *
+ * $RCSfile: servobj.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <sot/formats.hxx>
+#include <sfx2/app.hxx>
+#include <svx/linkmgr.hxx>
+#include "servobj.hxx"
+#include "docsh.hxx"
+#include "impex.hxx"
+#include "brdcst.hxx"
+#include "rangenam.hxx"
+#include "sc.hrc" // SC_HINT_AREAS_CHANGED
+
+// -----------------------------------------------------------------------
+
+BOOL lcl_FillRangeFromName( ScRange& rRange, ScDocShell* pDocSh, const String& rName )
+{
+ if (pDocSh)
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScRangeName* pNames = pDoc->GetRangeName();
+ if (pNames)
+ {
+ USHORT nPos;
+ if( pNames->SearchName( rName, nPos ) )
+ {
+ ScRangeData* pData = (*pNames)[ nPos ];
+ if ( pData->IsReference( rRange ) )
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+ScServerObject::ScServerObject( ScDocShell* pShell, const String& rItem ) :
+ pDocSh( pShell ),
+ bRefreshListener( FALSE )
+{
+ // parse item string
+
+ if ( lcl_FillRangeFromName( aRange, pDocSh, rItem ) )
+ {
+ aItemStr = rItem; // must be parsed again on ref update
+ }
+ else
+ {
+ // parse ref
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = pDocSh->GetCurTab();
+ aRange.aStart.SetTab( nTab );
+
+ if ( aRange.Parse( rItem, pDoc ) & SCA_VALID )
+ {
+ // area reference
+ }
+ else if ( aRange.aStart.Parse( rItem, pDoc ) & SCA_VALID )
+ {
+ // cell reference
+ aRange.aEnd = aRange.aStart;
+ }
+ else
+ {
+ DBG_ERROR("ScServerObject: invalid item");
+ }
+ }
+
+ pDocSh->GetDocument()->GetLinkManager()->InsertServer( this );
+ pDocSh->GetDocument()->StartListeningArea( aRange, this );
+
+ StartListening(*pDocSh); // um mitzubekommen, wenn die DocShell geloescht wird
+ StartListening(*SFX_APP()); // for SC_HINT_AREAS_CHANGED
+}
+
+__EXPORT ScServerObject::~ScServerObject()
+{
+ Clear();
+}
+
+void ScServerObject::Clear()
+{
+ if (pDocSh)
+ {
+ ScDocShell* pTemp = pDocSh;
+ pDocSh = NULL;
+
+ pTemp->GetDocument()->EndListeningArea( aRange, this );
+ pTemp->GetDocument()->GetLinkManager()->RemoveServer( this );
+ EndListening(*pTemp);
+ EndListening(*SFX_APP());
+ }
+}
+
+BOOL __EXPORT ScServerObject::GetData( SvData* pData ) // wie ScDocShell::DdeGetData
+{
+ if (!pDocSh)
+ return FALSE;
+
+ // named ranges may have changed -> update aRange
+ if ( aItemStr.Len() )
+ {
+ ScRange aNew;
+ if ( lcl_FillRangeFromName( aNew, pDocSh, aItemStr ) && aNew != aRange )
+ {
+ aRange = aNew;
+ bRefreshListener = TRUE;
+ }
+ }
+
+ if ( bRefreshListener )
+ {
+ // refresh the listeners now (this is called from a timer)
+
+ EndListeningAll();
+ pDocSh->GetDocument()->StartListeningArea( aRange, this );
+ StartListening(*pDocSh);
+ StartListening(*SFX_APP());
+ bRefreshListener = FALSE;
+ }
+
+ String aDdeTextFmt = pDocSh->GetDdeTextFmt();
+ ScDocument* pDoc = pDocSh->GetDocument();
+
+ if( pData->GetFormat() == FORMAT_STRING )
+ {
+ ScImportExport aObj( pDoc, aRange );
+ if( aDdeTextFmt.GetChar(0) == 'F' )
+ aObj.SetFormulas( TRUE );
+ if( aDdeTextFmt.EqualsAscii( "SYLK" ) || aDdeTextFmt.EqualsAscii( "FSYLK" ) )
+ {
+ String aData;
+ if( aObj.ExportString( aData, SOT_FORMATSTR_ID_SYLK ) )
+ {
+ ByteString aByteData( aData, gsl_getSystemTextEncoding() );
+ pData->SetData( (void*) aByteData.GetBuffer(), aByteData.Len() + 1 );
+ return 1;
+ }
+ else
+ return 0;
+ }
+ if( aDdeTextFmt.EqualsAscii( "CSV" ) || aDdeTextFmt.EqualsAscii( "FCSV" ) )
+ aObj.SetSeparator( ',' );
+ return aObj.ExportData( *pData ) ? 1 : 0;
+ }
+ ScImportExport aObj( pDoc, aRange );
+ if( aObj.IsRef() )
+ return aObj.ExportData( *pData ) ? 1 : 0;
+ else
+ return 0;
+}
+
+BOOL __EXPORT ScServerObject::SetData( SvData& )
+{
+ // erstmal nicht
+ return FALSE;
+}
+
+void __EXPORT ScServerObject::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType )
+{
+ BOOL bDataChanged = FALSE;
+
+ if (rBC.ISA(ScDocShell))
+ {
+ // from DocShell, only SFX_HINT_DYING is interesting
+ if ( rHint.ISA(SfxSimpleHint) && ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ Clear();
+ }
+ else if (rBC.ISA(SfxApplication))
+ {
+ if ( aItemStr.Len() && rHint.ISA(SfxSimpleHint) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SC_HINT_AREAS_CHANGED )
+ {
+ // check if named range was modified
+ ScRange aNew;
+ if ( lcl_FillRangeFromName( aNew, pDocSh, aItemStr ) && aNew != aRange )
+ bDataChanged = TRUE;
+ }
+ }
+ else
+ {
+ // must be from Area broadcasters
+
+ const ScHint* pScHint = PTR_CAST( ScHint, &rHint );
+ if( pScHint && (pScHint->GetId() & (SC_HINT_DATACHANGED | SC_HINT_DYING)) )
+ bDataChanged = TRUE;
+ else if (rHint.ISA(ScAreaChangedHint)) // position of broadcaster changed
+ {
+ ScRange aNewRange = ((const ScAreaChangedHint&)rHint).GetRange();
+ if ( aRange != aNewRange )
+ {
+ bRefreshListener = TRUE;
+ bDataChanged = TRUE;
+ }
+ }
+ else if (rHint.ISA(SfxSimpleHint))
+ {
+ USHORT nId = ((const SfxSimpleHint&)rHint).GetId();
+ if (nId == SFX_HINT_DYING)
+ {
+ // If the range is being deleted, listening must be restarted
+ // after the deletion is complete (done in GetData)
+ bRefreshListener = TRUE;
+ bDataChanged = TRUE;
+ }
+ }
+ }
+
+ if ( bDataChanged && GetSelectorCount() )
+ {
+ SvData aSvData;
+ DataChanged( aSvData );
+ }
+}
+
+
+
+
+
diff --git a/sc/source/ui/docshell/tablink.cxx b/sc/source/ui/docshell/tablink.cxx
new file mode 100644
index 000000000000..bbf806d9e745
--- /dev/null
+++ b/sc/source/ui/docshell/tablink.cxx
@@ -0,0 +1,496 @@
+/*************************************************************************
+ *
+ * $RCSfile: tablink.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef WNT
+#pragma optimize("",off)
+#endif
+
+//------------------------------------------------------------------
+
+#ifdef PCH
+#include "core_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------
+
+#include <sfx2/app.hxx>
+#include <svtools/itemset.hxx>
+#include <svtools/stritem.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/docfilt.hxx>
+#include <sfx2/fcontnr.hxx>
+#include <svx/linkmgr.hxx>
+#include <tools/urlobj.hxx>
+
+#include "tablink.hxx"
+
+#include "scextopt.hxx"
+#include "table.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "globstr.hrc"
+#include "undoblk.hxx"
+#include "undotab.hxx"
+#include "global.hxx"
+#include "hints.hxx"
+
+TYPEINIT1(ScTableLink,SvBaseLink);
+
+//------------------------------------------------------------------------
+
+ScTableLink::ScTableLink(ScDocShell* pDocSh, const String& rFile,
+ const String& rFilter, const String& rOpt):
+ SvBaseLink(LINKUPDATE_ONCALL,FORMAT_FILE),
+ pDocShell(pDocSh),
+ aFileName(rFile),
+ aFilterName(rFilter),
+ aOptions(rOpt),
+ bInCreate( FALSE ),
+ bAddUndo( TRUE ),
+ bDoPaint( TRUE )
+{
+}
+
+ScTableLink::ScTableLink(SfxObjectShell* pShell, const String& rFile,
+ const String& rFilter, const String& rOpt):
+ SvBaseLink(LINKUPDATE_ONCALL,FORMAT_FILE),
+ pDocShell((ScDocShell*)pShell),
+ aFileName(rFile),
+ aFilterName(rFilter),
+ aOptions(rOpt),
+ bInCreate( FALSE ),
+ bAddUndo( TRUE ),
+ bDoPaint( TRUE )
+{
+}
+
+__EXPORT ScTableLink::~ScTableLink()
+{
+ // Verbindung aufheben
+
+ String aEmpty;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nCount; nTab++)
+ if (pDoc->IsLinked(nTab) && pDoc->GetLinkDoc(nTab)==aFileName)
+ pDoc->SetLink( nTab, SC_LINK_NONE, aEmpty, aEmpty, aEmpty, aEmpty );
+}
+
+BOOL __EXPORT ScTableLink::Edit(Window* pParent)
+{
+ // DefModalDialogParent setzen, weil evtl. aus der DocShell beim ConvertFrom
+ // ein Optionen-Dialog kommt...
+
+ Window* pOldParent = Application::GetDefDialogParent();
+ if (pParent)
+ Application::SetDefDialogParent(pParent);
+
+ BOOL bRet = SvBaseLink::Edit(pParent);
+
+ Application::SetDefDialogParent(pOldParent);
+
+ return bRet;
+}
+
+void __EXPORT ScTableLink::DataChanged(SvData& rData)
+{
+ SvxLinkManager* pLinkManager=pDocShell->GetDocument()->GetLinkManager();
+ if (pLinkManager!=NULL)
+ {
+ String aFile;
+ String aFilter;
+ pLinkManager->GetDisplayNames(*this,0,&aFile,NULL,&aFilter);
+
+ // aus dem Dialog kommt der Filtername mit Applikation davor
+ //! soll das so sein ??!?!
+ String aAppPrefix = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( STRING_SCAPP ));
+ aAppPrefix.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " ));
+ xub_StrLen nPreLen = aAppPrefix.Len();
+ if ( aFilter.Copy(0,nPreLen) == aAppPrefix )
+ aFilter.Erase(0,nPreLen);
+
+ if (!bInCreate)
+ Refresh(aFile,aFilter); // nicht doppelt laden!
+ }
+}
+
+void __EXPORT ScTableLink::Closed()
+{
+ // Verknuepfung loeschen: Undo
+
+ if (bAddUndo)
+ {
+ pDocShell->GetUndoManager()->AddUndoAction(
+ new ScUndoRemoveLink( pDocShell, aFileName ) );
+
+ bAddUndo = FALSE; // nur einmal
+ }
+
+ // Verbindung wird im dtor aufgehoben
+
+ SvBaseLink::Closed();
+}
+
+BOOL ScTableLink::IsUsed() const
+{
+ return pDocShell->GetDocument()->HasLink( aFileName, aFilterName, aOptions );
+}
+
+BOOL ScTableLink::Refresh(const String& rNewFile, const String& rNewFilter,
+ const String* pNewOptions)
+{
+ // Dokument laden
+
+ if (!rNewFile.Len() || !rNewFilter.Len())
+ return FALSE;
+
+ String aNewUrl( ScGlobal::GetAbsDocName( rNewFile, pDocShell ) );
+ BOOL bNewUrlName = (aNewUrl != aFileName);
+
+ const SfxFilter* pFilter = SFX_APP()->GetFilter( pDocShell->GetFactory(), rNewFilter );
+ if (!pFilter)
+ return FALSE;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->SetInLinkUpdate( TRUE );
+
+ // wenn neuer Filter ausgewaehlt wurde, Optionen vergessen
+ if ( rNewFilter != aFilterName )
+ aOptions.Erase();
+ if ( pNewOptions ) // Optionen hart angegeben?
+ aOptions = *pNewOptions;
+
+ // ItemSet immer anlegen, damit die DocShell die Optionen setzen kann
+ SfxItemSet* pSet = new SfxAllItemSet( SFX_APP()->GetPool() );
+ if ( aOptions.Len() )
+ pSet->Put( SfxStringItem( SID_FILE_FILTEROPTIONS, aOptions ) );
+
+ SfxMedium* pMed = new SfxMedium(aNewUrl, STREAM_STD_READ, FALSE, TRUE, pFilter, pSet);
+
+ ScDocShell* pSrcShell = new ScDocShell(SFX_CREATE_MODE_INTERNAL);
+ SvEmbeddedObjectRef aRef = pSrcShell;
+ pSrcShell->DoLoad(pMed);
+
+ // Optionen koennten gesetzt worden sein
+ String aNewOpt = ScDocumentLoader::GetOptions(*pMed);
+ if (!aNewOpt.Len())
+ aNewOpt = aOptions;
+
+ // Undo...
+
+ ScDocument* pUndoDoc = NULL;
+ BOOL bFirst = TRUE;
+ if (bAddUndo)
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+
+ // Tabellen kopieren
+
+ ScDocShellModificator aModificator( *pDocShell );
+
+ BOOL bNotFound = FALSE;
+ ScDocument* pSrcDoc = pSrcShell->GetDocument();
+
+ // #74835# from text filters that don't set the table name,
+ // use the one table regardless of link table name
+ BOOL bAutoTab = (pSrcDoc->GetTableCount() == 1) &&
+ ScDocShell::HasAutomaticTableName( rNewFilter );
+
+ USHORT nCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nCount; nTab++)
+ {
+ BYTE nMode = pDoc->GetLinkMode(nTab);
+ if (nMode && pDoc->GetLinkDoc(nTab)==aFileName)
+ {
+ String aTabName = pDoc->GetLinkTab(nTab);
+
+ // Undo
+
+ if (bAddUndo)
+ {
+ if (bFirst)
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ else
+ pUndoDoc->AddUndoTab( nTab, nTab, TRUE, TRUE );
+ bFirst = FALSE;
+ ScRange aRange(0,0,nTab,MAXCOL,MAXROW,nTab);
+ pDoc->CopyToDocument(aRange, IDF_ALL, FALSE, pUndoDoc);
+ pUndoDoc->TransferDrawPage( pDoc, nTab, nTab );
+ pUndoDoc->SetLink( nTab, nMode, aFileName, aFilterName, aOptions, aTabName );
+ }
+
+ // Tabellenname einer ExtDocRef anpassen
+
+ if ( bNewUrlName && nMode == SC_LINK_VALUE )
+ {
+ String aName;
+ pDoc->GetName( nTab, aName );
+ if ( ScGlobal::pScInternational->CompareEqual(
+ ScGlobal::GetDocTabName( aFileName, aTabName ), aName,
+ INTN_COMPARE_IGNORECASE ) )
+ {
+ pDoc->RenameTab( nTab,
+ ScGlobal::GetDocTabName( aNewUrl, aTabName ),
+ FALSE, TRUE ); // kein RefUpdate, kein ValidTabName
+ }
+ }
+
+ // kopieren
+
+ USHORT nSrcTab = 0;
+ BOOL bFound = TRUE; // kein Tab-Name angegeben: immer die erste
+ if ( aTabName.Len() && !bAutoTab )
+ bFound = pSrcDoc->GetTable( aTabName, nSrcTab );
+ if (bFound)
+ pDoc->TransferTab( pSrcDoc, nSrcTab, nTab, FALSE, // nicht neu einfuegen
+ (nMode == SC_LINK_VALUE) ); // nur Werte?
+ else
+ {
+ pDoc->DeleteAreaTab( 0,0,MAXCOL,MAXROW, nTab, IDF_ALL );
+// pDoc->ClearDrawPage(nTab);
+ // Fehler eintragen
+ pDoc->SetString( 0,0,nTab, ScGlobal::GetRscString(STR_LINKERROR) );
+ pDoc->SetString( 0,1,nTab, ScGlobal::GetRscString(STR_LINKERRORFILE) );
+ pDoc->SetString( 1,1,nTab, aNewUrl );
+ pDoc->SetString( 0,2,nTab, ScGlobal::GetRscString(STR_LINKERRORTAB) );
+ pDoc->SetString( 1,2,nTab, aTabName );
+
+ bNotFound = TRUE;
+ }
+
+ if ( bNewUrlName || rNewFilter != aFilterName || aNewOpt != aOptions || pNewOptions )
+ pDoc->SetLink( nTab, nMode, aNewUrl, rNewFilter, aNewOpt, aTabName );
+ }
+ }
+
+ // neue Einstellungen merken
+
+ if ( bNewUrlName )
+ aFileName = aNewUrl;
+ if ( rNewFilter != aFilterName )
+ aFilterName = rNewFilter;
+ if ( aNewOpt != aOptions )
+ aOptions = aNewOpt;
+
+ // aufraeumen
+
+// pSrcShell->DoClose();
+ aRef->DoClose();
+
+ // Undo
+
+ if (bAddUndo)
+ pDocShell->GetUndoManager()->AddUndoAction(
+ new ScUndoRefreshLink( pDocShell, pUndoDoc ) );
+
+ // Paint (koennen mehrere Tabellen sein)
+
+ if (bDoPaint)
+ {
+ pDocShell->PostPaint( ScRange(0,0,0,MAXCOL,MAXROW,MAXTAB),
+ PAINT_GRID | PAINT_TOP | PAINT_LEFT );
+ aModificator.SetDocumentModified();
+ }
+
+ if (bNotFound)
+ {
+ //! Fehler ausgeben ?
+ }
+
+ pDoc->SetInLinkUpdate( FALSE );
+
+ // notify Uno objects (for XRefreshListener)
+ //! also notify Uno objects if file name was changed!
+ ScLinkRefreshedHint aHint;
+ aHint.SetSheetLink( aFileName );
+ pDoc->BroadcastUno( aHint );
+
+ return TRUE;
+}
+
+// === ScDocumentLoader ==================================================
+
+String ScDocumentLoader::GetOptions( SfxMedium& rMedium ) // static
+{
+ SfxItemSet* pSet = rMedium.GetItemSet();
+ const SfxPoolItem* pItem;
+ if ( pSet && SFX_ITEM_SET == pSet->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) )
+ return ((const SfxStringItem*)pItem)->GetValue();
+
+ return EMPTY_STRING;
+}
+
+void ScDocumentLoader::GetFilterName( const String& rFileName,
+ String& rFilter, String& rOptions ) // static
+{
+ TypeId aScType = TYPE(ScDocShell);
+ SfxObjectShell* pDocSh = SfxObjectShell::GetFirst( &aScType );
+ while ( pDocSh )
+ {
+ if ( pDocSh->HasName() )
+ {
+ SfxMedium* pMed = pDocSh->GetMedium();
+ if ( rFileName == pMed->GetName() )
+ {
+ rFilter = pMed->GetFilter()->GetFilterName();
+ rOptions = GetOptions(*pMed);
+ return;
+ }
+ }
+ pDocSh = SfxObjectShell::GetNext( *pDocSh, &aScType );
+ }
+
+ // Filter-Detection
+
+ const SfxFilter* pSfxFilter = NULL;
+ SfxMedium* pMedium = new SfxMedium( rFileName, STREAM_STD_READ, FALSE, TRUE );
+ if ( pMedium->GetError() == ERRCODE_NONE )
+ {
+ SfxFilterMatcher aMatcher( ScDocShell::Factory().GetFilterContainer() );
+ aMatcher.GuessFilter( *pMedium, &pSfxFilter );
+ }
+
+ if ( pSfxFilter )
+ rFilter = pSfxFilter->GetFilterName();
+ else
+ rFilter = ScDocShell::GetOwnFilterName(); // sonst Calc-Datei
+
+ delete pMedium;
+}
+
+ScDocumentLoader::ScDocumentLoader( const String& rFileName,
+ String& rFilterName, String& rOptions,
+ UINT32 nRekCnt ) :
+ pDocShell(0),
+ pMedium(0)
+{
+ if ( !rFilterName.Len() )
+ GetFilterName( rFileName, rFilterName, rOptions );
+
+ const SfxFilter* pFilter = SFX_APP()->GetFilter(
+ ScDocShell::Factory(), rFilterName );
+
+ // ItemSet immer anlegen, damit die DocShell die Optionen setzen kann
+ SfxItemSet* pSet = new SfxAllItemSet( SFX_APP()->GetPool() );
+ if ( rOptions.Len() )
+ pSet->Put( SfxStringItem( SID_FILE_FILTEROPTIONS, rOptions ) );
+
+ pMedium = new SfxMedium( rFileName, STREAM_STD_READ, FALSE, TRUE, pFilter, pSet );
+ if ( pMedium->GetError() != ERRCODE_NONE )
+ return ;
+
+ pDocShell = new ScDocShell( SFX_CREATE_MODE_INTERNAL );
+ aRef = pDocShell;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ if( pDoc )
+ {
+ ScExtDocOptions* pExtDocOpt = pDoc->GetExtDocOptions();
+ if( !pExtDocOpt )
+ {
+ pExtDocOpt = new ScExtDocOptions;
+ pDoc->SetExtDocOptions( pExtDocOpt );
+ }
+ pExtDocOpt->nLinkCnt = nRekCnt;
+ }
+
+ pDocShell->DoLoad( pMedium );
+
+ String aNew = GetOptions(*pMedium); // Optionen werden beim Laden per Dialog gesetzt
+ if (aNew.Len() && aNew != rOptions)
+ rOptions = aNew;
+}
+
+ScDocumentLoader::~ScDocumentLoader()
+{
+/* if ( pDocShell )
+ pDocShell->DoClose();
+*/
+ if ( aRef.Is() )
+ aRef->DoClose();
+ else if ( pMedium )
+ delete pMedium;
+}
+
+ScDocument* ScDocumentLoader::GetDocument()
+{
+ return pDocShell ? pDocShell->GetDocument() : 0;
+}
+
+BOOL ScDocumentLoader::IsError() const
+{
+ if ( pDocShell && pMedium )
+ return pMedium->GetError() != ERRCODE_NONE;
+ else
+ return TRUE;
+}
+
+String ScDocumentLoader::GetTitle() const
+{
+ if ( pDocShell )
+ return pDocShell->GetTitle();
+ else
+ return EMPTY_STRING;
+}
+
+
+
diff --git a/sc/source/ui/docshell/tpstat.cxx b/sc/source/ui/docshell/tpstat.cxx
new file mode 100644
index 000000000000..d6d08eca934d
--- /dev/null
+++ b/sc/source/ui/docshell/tpstat.cxx
@@ -0,0 +1,134 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpstat.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "document.hxx"
+#include "docsh.hxx"
+#include "scresid.hxx"
+#include "tpstat.hrc"
+
+#include "tpstat.hxx"
+
+
+//========================================================================
+// Dokumentinfo-Tabpage:
+//========================================================================
+
+SfxTabPage* __EXPORT ScDocStatPage::Create( Window *pParent, const SfxItemSet& rSet )
+{
+ return new ScDocStatPage( pParent, rSet );
+}
+
+//------------------------------------------------------------------------
+
+ScDocStatPage::ScDocStatPage( Window *pParent, const SfxItemSet& rSet )
+ : SfxTabPage( pParent, ScResId(RID_SCPAGE_STAT), rSet ),
+ aFtTablesLbl ( this, ScResId( FT_TABLES_LBL ) ),
+ aFtTables ( this, ScResId( FT_TABLES ) ),
+ aFtCellsLbl ( this, ScResId( FT_CELLS_LBL ) ),
+ aFtCells ( this, ScResId( FT_CELLS ) ),
+ aFtPagesLbl ( this, ScResId( FT_PAGES_LBL ) ),
+ aFtPages ( this, ScResId( FT_PAGES ) ),
+ aGbInfo ( this, ScResId( GB_INFO ) )
+{
+ ScDocShell* pDocSh = PTR_CAST( ScDocShell, SfxObjectShell::Current() );
+ ScDocStat aDocStat;
+
+ if ( pDocSh )
+ pDocSh->GetDocStat( aDocStat );
+
+ String aInfo = aGbInfo.GetText();
+ aInfo += aDocStat.aDocName;
+ aGbInfo .SetText( aInfo );
+ aFtTables .SetText( String::CreateFromInt32( aDocStat.nTableCount ) );
+ aFtCells .SetText( String::CreateFromInt32( aDocStat.nCellCount ) );
+ aFtPages .SetText( String::CreateFromInt32( aDocStat.nPageCount ) );
+
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScDocStatPage::~ScDocStatPage()
+{
+}
+
+//------------------------------------------------------------------------
+
+BOOL __EXPORT ScDocStatPage::FillItemSet( SfxItemSet& rSet )
+{
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ScDocStatPage::Reset( const SfxItemSet& rSet )
+{
+}
+
+
+
+
diff --git a/sc/source/ui/docshell/tpstat.hrc b/sc/source/ui/docshell/tpstat.hrc
new file mode 100644
index 000000000000..c0a7b1ce6b37
--- /dev/null
+++ b/sc/source/ui/docshell/tpstat.hrc
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpstat.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc"
+
+#define FT_TABLES 1
+#define FT_TABLES_LBL 2
+#define FT_CELLS 3
+#define FT_CELLS_LBL 4
+#define FT_PAGES 5
+#define FT_PAGES_LBL 6
+
+#define GB_INFO 1
diff --git a/sc/source/ui/docshell/tpstat.src b/sc/source/ui/docshell/tpstat.src
new file mode 100644
index 000000000000..825d84b33f0e
--- /dev/null
+++ b/sc/source/ui/docshell/tpstat.src
@@ -0,0 +1,203 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpstat.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "tpstat.hrc"
+TabPage RID_SCPAGE_STAT
+{
+ // HelpID = HID_DOC_STAT;
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ FixedText FT_TABLES_LBL
+ {
+ Pos = MAP_APPFONT ( 18 , 26 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Anzahl Tabellen:" ;
+ Text [ ENGLISH ] = "Number of tables:" ;
+ Text [ norwegian ] = "Number of tables:" ;
+ Text [ italian ] = "Numero di tabelle:" ;
+ Text [ portuguese_brazilian ] = "Número de tabelas:" ;
+ Text [ portuguese ] = "Número de tabelas:" ;
+ Text [ finnish ] = "Taulukoita:" ;
+ Text [ danish ] = "Antal tabeller:" ;
+ Text [ french ] = "Nombre de feuilles :" ;
+ Text [ swedish ] = "Antal tabeller:" ;
+ Text [ dutch ] = "Aantal werkbladen:" ;
+ Text [ spanish ] = "Núm. de hojas:" ;
+ Text [ english_us ] = "Number of sheets:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "¹¤×÷±íÊýÄ¿:";
+ Text[ russian ] = "Êîëè÷åñòâî òàáëèö:";
+ Text[ polish ] = "Liczba tabel:";
+ Text[ japanese ] = "•\\‚Ì”:";
+ Text[ chinese_traditional ] = "¤u§@ªí¼Æ¥Ø¡G";
+ Text[ arabic ] = "ÚÏÏ ÇáÌÏÇæá:";
+ Text[ dutch ] = "Aantal werkbladen:";
+ Text[ chinese_simplified ] = "¹¤×÷±íÊýÄ¿:";
+ Text[ greek ] = "Áñéèìüò ðéíÜêùí:";
+ Text[ korean ] = "½ÃÆ® ¼ö:";
+ Text[ turkish ] = "Tablo sayýsý:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_TABLES
+ {
+ Pos = MAP_APPFONT ( 114 , 26 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_CELLS_LBL
+ {
+ Pos = MAP_APPFONT ( 18 , 38 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Anzahl Zellen:" ;
+ Text [ ENGLISH ] = "Number of cells:" ;
+ Text [ english_us ] = "Number of cells:" ;
+ Left = TRUE ;
+ Text [ italian ] = "Numero di celle:" ;
+ Text [ spanish ] = "Cantidad de celdas:" ;
+ Text [ french ] = "Nombre de cellules :" ;
+ Text [ dutch ] = "Aantal cellen:" ;
+ Text [ swedish ] = "Antal celler:" ;
+ Text [ danish ] = "Antal celler:" ;
+ Text [ portuguese ] = "Número de células:" ;
+ Text [ portuguese_brazilian ] = "Anzahl Zellen:" ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñµÄÊýÄ¿£º";
+ Text[ russian ] = "Êîëè÷åñòâî ÿ÷ååê:";
+ Text[ polish ] = "Liczba komórek:";
+ Text[ japanese ] = "¾Ù‚Ì”F";
+ Text[ chinese_traditional ] = "Àx¦s®æªº¼Æ¥Ø¡G";
+ Text[ arabic ] = "ÚÏÏ ÇáÎáÇíÇ:";
+ Text[ dutch ] = "Aantal cellen:";
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñµÄÊýÄ¿£º";
+ Text[ greek ] = "Áñéèìüò êåëéþí:";
+ Text[ korean ] = "¼¿ °³¼ö:";
+ Text[ turkish ] = "Hücre sayýsý:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_CELLS
+ {
+ Pos = MAP_APPFONT ( 114 , 38 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ };
+ FixedText FT_PAGES_LBL
+ {
+ Pos = MAP_APPFONT ( 18 , 50 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Anzahl Seiten:" ;
+ Text [ ENGLISH ] = "Number of pages:" ;
+ Text [ english_us ] = "Number of pages:" ;
+ Left = TRUE ;
+ Text [ italian ] = "Numero di pagine:" ;
+ Text [ spanish ] = "Cantidad de páginas:" ;
+ Text [ french ] = "Nombre de pages :" ;
+ Text [ dutch ] = "Aantal pagina´s:" ;
+ Text [ swedish ] = "Antal sidor:" ;
+ Text [ danish ] = "Antal sider:" ;
+ Text [ portuguese_brazilian ] = "Anzahl Seiten:" ;
+ Text [ portuguese ] = "Número de páginas:" ;
+ Text[ chinese_simplified ] = "Ò³Êý£º";
+ Text[ russian ] = "Êîëè÷åñòâî ñòðàíèö:";
+ Text[ polish ] = "Liczba stron:";
+ Text[ japanese ] = "Íß°¼Þ‘”:";
+ Text[ chinese_traditional ] = "­¶¼Æ¡G";
+ Text[ arabic ] = "ÚÏÏ ÇáÕÝÍÇÊ:";
+ Text[ dutch ] = "Aantal pagina´s:";
+ Text[ chinese_simplified ] = "Ò³Êý£º";
+ Text[ greek ] = "Áñéèìüò óåëéäþí:";
+ Text[ korean ] = "ÆäÀÌÁö °³¼ö:";
+ Text[ turkish ] = "Sayfa sayýsý:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_PAGES
+ {
+ Pos = MAP_APPFONT ( 114 , 50 ) ;
+ Size = MAP_APPFONT ( 27 , 10 ) ;
+ Left = TRUE ;
+ };
+ GroupBox GB_INFO
+ {
+ Pos = MAP_APPFONT ( 6 , 4 ) ;
+ Size = MAP_APPFONT ( 246 , 124 ) ;
+ Text = "Dokument: " ;
+ Text [ ENGLISH ] = "Document: " ;
+ Text [ english_us ] = "Document: " ;
+ Text [ dutch ] = "Document: " ;
+ Text [ italian ] = "Documento: " ;
+ Text [ spanish ] = "Documento: " ;
+ Text [ french ] = "Document : " ;
+ Text [ swedish ] = "Dokument: " ;
+ Text [ danish ] = "Dokument: " ;
+ Text [ portuguese_brazilian ] = "Dokument: " ;
+ Text [ portuguese ] = "Documento: " ;
+ Text[ chinese_simplified ] = "Îĵµ£º ";
+ Text[ russian ] = "Äîêóìåíò: ";
+ Text[ polish ] = "Dokument: ";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ: ";
+ Text[ chinese_traditional ] = "¤å¥ó¡G ";
+ Text[ arabic ] = "ÇáãÓÊäÏ: ";
+ Text[ dutch ] = "Document: ";
+ Text[ chinese_simplified ] = "Îĵµ£º ";
+ Text[ greek ] = "¸ããñáöï: ";
+ Text[ korean ] = "¹®¼­: ";
+ Text[ turkish ] = "Belge: ";
+ Text[ language_user1 ] = " ";
+ };
+};
diff --git a/sc/source/ui/drawfunc/chartsh.cxx b/sc/source/ui/drawfunc/chartsh.cxx
new file mode 100644
index 000000000000..fa606c6507de
--- /dev/null
+++ b/sc/source/ui/drawfunc/chartsh.cxx
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * $RCSfile: chartsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+#include <svx/eeitem.hxx>
+#include <svx/fontwork.hxx>
+#include <svx/labdlg.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/tabarea.hxx>
+#include <svx/tabline.hxx>
+#include <svx/textanim.hxx>
+#include <svx/transfrm.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+#include <segmentc.hxx>
+
+#include "chartsh.hxx"
+#include "drwlayer.hxx"
+#include "sc.hrc"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "docpool.hxx"
+#include "drawview.hxx"
+#include "scresid.hxx"
+
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+
+#define ScChartShell
+#include "scslots.hxx"
+
+
+SFX_IMPL_INTERFACE(ScChartShell, ScDrawShell, ScResId(SCSTR_CHARTSHELL) )
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT|SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
+ ScResId(RID_DRAW_OBJECTBAR) );
+ SFX_POPUPMENU_REGISTRATION( ScResId(RID_POPUP_CHART) );
+ SFX_OBJECTMENU_REGISTRATION( SID_OBJECTMENU0, ScResId(RID_OBJECTMENU_DRAW) );
+}
+
+TYPEINIT1( ScChartShell, ScDrawShell );
+
+ScChartShell::ScChartShell(ScViewData* pData) :
+ ScDrawShell(pData)
+{
+ SetHelpId(HID_SCSHELL_CHARTSH);
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ChartObject")));
+}
+
+ScChartShell::~ScChartShell()
+{
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx
new file mode 100644
index 000000000000..c3e4a1f8ebb5
--- /dev/null
+++ b/sc/source/ui/drawfunc/drawsh.cxx
@@ -0,0 +1,843 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX ***
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX ***
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX
+//#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX
+//#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+//#define _SFXTBXCTRL_HXX ***
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX
+//#define _SFXDOCTDLG_HXX
+//#define _SFX_TEMPLDLG_HXX
+//#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX ***
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+//#define _SFX_WHITER_HXX ***
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+//#define _SIDLL_HXX
+
+//------------------------------------------------------------------
+
+#include <svx/eeitem.hxx>
+#include <svx/fontwork.hxx>
+#include <svx/labdlg.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/tabarea.hxx>
+#include <svx/tabline.hxx>
+#include <svx/textanim.hxx>
+#include <svx/transfrm.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+#include <segmentc.hxx>
+
+#include "drawsh.hxx"
+#include "drwlayer.hxx"
+#include "sc.hrc"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "docpool.hxx"
+#include "drawview.hxx"
+#include "scresid.hxx"
+
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+
+#define ScDrawShell
+#include "scslots.hxx"
+
+//------------------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
+#pragma SEG_SEGCLASS(SFXMACROS_SEG,STARTWORK_CODE)
+
+TYPEINIT1( ScDrawShell, SfxShell );
+
+SFX_IMPL_INTERFACE(ScDrawShell, SfxShell, ScResId(SCSTR_DRAWSHELL) )
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT|SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
+ ScResId(RID_DRAW_OBJECTBAR) );
+ SFX_POPUPMENU_REGISTRATION( ScResId(RID_POPUP_DRAW) );
+ SFX_OBJECTMENU_REGISTRATION( SID_OBJECTMENU0, ScResId(RID_OBJECTMENU_DRAW) );
+ SFX_CHILDWINDOW_REGISTRATION( SvxFontWorkChildWindow::GetChildWindowId() );
+}
+
+
+// abschalten der nicht erwuenschten Acceleratoren:
+
+#pragma SEG_FUNCDEF(drawsh_09)
+
+void ScDrawShell::StateDisableItems( SfxItemSet &rSet )
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+
+ while (nWhich)
+ {
+ rSet.DisableItem( nWhich );
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+#pragma SEG_FUNCDEF(drawsh_05)
+
+void ScDrawShell::ExecDrawAttr( SfxRequest& rReq )
+{
+ USHORT nSlot = rReq.GetSlot();
+ Window* pWin = pViewData->GetActiveWin();
+ Window* pDlgParent = pViewData->GetDialogParent();
+// SfxViewFrame* pViewFrame = SfxViewShell::Current()->GetViewFrame(); //!!! koennte knallen
+ ScDrawView* pView = pViewData->GetScDrawView();
+ SdrModel* pDoc = pViewData->GetDocument()->GetDrawLayer();
+
+ switch ( nSlot )
+ {
+ case SID_TEXT_STANDARD: // Harte Textattributierung loeschen
+ {
+ SfxItemSet aEmptyAttr(GetPool(), EE_ITEMS_START, EE_ITEMS_END);
+ pView->SetAttributes(aEmptyAttr, TRUE);
+ }
+ break;
+
+ case SID_ATTR_LINE_STYLE:
+ case SID_ATTR_LINEEND_STYLE:
+ case SID_ATTR_LINE_DASH:
+ case SID_ATTR_LINE_WIDTH:
+ case SID_ATTR_LINE_COLOR:
+ case SID_ATTR_FILL_STYLE:
+ case SID_ATTR_FILL_COLOR:
+ case SID_ATTR_FILL_GRADIENT:
+ case SID_ATTR_FILL_HATCH:
+ case SID_ATTR_FILL_BITMAP:
+ {
+ // Wenn ToolBar vertikal :
+ if ( !rReq.GetArgs() )
+ {
+ switch ( nSlot )
+ {
+ case SID_ATTR_LINE_STYLE:
+ case SID_ATTR_LINE_DASH:
+ case SID_ATTR_LINE_WIDTH:
+ case SID_ATTR_LINE_COLOR:
+ ExecuteLineDlg( rReq );
+ break;
+
+ case SID_ATTR_FILL_STYLE:
+ case SID_ATTR_FILL_COLOR:
+ case SID_ATTR_FILL_GRADIENT:
+ case SID_ATTR_FILL_HATCH:
+ case SID_ATTR_FILL_BITMAP:
+ ExecuteAreaDlg( rReq );
+ break;
+
+ default:
+ break;
+ }
+
+ //=====
+ return;
+ //=====
+ }
+
+ if( pView->HasMarkedObj() )
+ pView->SetAttrToMarked( *rReq.GetArgs(), FALSE );
+ else
+ pView->SetDefaultAttr( *rReq.GetArgs(), FALSE);
+ pView->InvalidateAttribs();
+ }
+ break;
+
+ case SID_ATTRIBUTES_LINE:
+ ExecuteLineDlg( rReq );
+ break;
+
+ case SID_ATTRIBUTES_AREA:
+ ExecuteAreaDlg( rReq );
+ break;
+
+ case SID_DRAWTEXT_ATTR_DLG:
+ ExecuteTextAttrDlg( rReq );
+ break;
+
+ case SID_ATTR_TRANSFORM:
+ {
+ if ( pView->HasMarkedObj() )
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ if( !pArgs )
+ {
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+ if( rMarkList.GetMark(0) != 0 )
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+ if( pObj->GetObjIdentifier() == OBJ_CAPTION )
+ {
+ // --------- Itemset fuer Caption --------
+ SfxItemSet aNewAttr(pDoc->GetItemPool());
+ pView->GetAttributes(aNewAttr);
+ // --------- Itemset fuer Groesse und Position --------
+ SfxItemSet aNewGeoAttr(pView->GetGeoAttrFromMarked());
+
+ SvxCaptionTabDialog* pDlg = new SvxCaptionTabDialog(pWin, pView);
+
+ const USHORT* pRange = pDlg->GetInputRanges( *aNewAttr.GetPool() );
+ SfxItemSet aCombSet( *aNewAttr.GetPool(), pRange );
+ aCombSet.Put( aNewAttr );
+ aCombSet.Put( aNewGeoAttr );
+ pDlg->SetInputSet( &aCombSet );
+
+ if (pDlg->Execute() == RET_OK)
+ {
+ rReq.Done(*(pDlg->GetOutputItemSet()));
+ pView->SetAttributes(*pDlg->GetOutputItemSet());
+ pView->SetGeoAttrToMarked(*pDlg->GetOutputItemSet());
+ }
+
+ delete pDlg;
+ }
+ else
+ {
+ SfxItemSet aNewAttr(pView->GetGeoAttrFromMarked());
+ SvxTransformTabDialog* pDlg = new SvxTransformTabDialog(pWin, &aNewAttr, pView);
+
+ if (pDlg->Execute() == RET_OK)
+ {
+ rReq.Done(*(pDlg->GetOutputItemSet()));
+ pView->SetGeoAttrToMarked(*pDlg->GetOutputItemSet());
+ }
+ delete pDlg;
+ }
+ }
+
+
+ }
+ else
+ pView->SetGeoAttrToMarked( *pArgs );
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+#pragma SEG_FUNCDEF(drawsh_06)
+
+void ScDrawShell::ExecuteLineDlg( SfxRequest& rReq, USHORT nTabPage )
+{
+ ScDrawView* pView = pViewData->GetScDrawView();
+ BOOL bHasMarked = pView->HasMarkedObj();
+ const SdrObject* pObj = NULL;
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+
+ if( rMarkList.GetMarkCount() == 1 )
+ pObj = rMarkList.GetMark(0)->GetObj();
+
+ SfxItemSet aNewAttr( pView->GetDefaultAttr() );
+ if( bHasMarked )
+ pView->MergeAttrFromMarked( aNewAttr, FALSE );
+
+ SvxLineTabDialog* pDlg
+ = new SvxLineTabDialog( pViewData->GetDialogParent(),
+ &aNewAttr,
+ pViewData->GetDocument()->GetDrawLayer(),
+ pObj,
+ bHasMarked );
+
+ if ( nTabPage != 0xffff )
+ pDlg->SetCurPageId( nTabPage );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ if( bHasMarked )
+ pView->SetAttrToMarked( *pDlg->GetOutputItemSet(), FALSE );
+ else
+ pView->SetDefaultAttr( *pDlg->GetOutputItemSet(), FALSE );
+
+ pView->InvalidateAttribs();
+ rReq.Done();
+ }
+
+ delete pDlg;
+}
+
+#pragma SEG_FUNCDEF(drawsh_07)
+
+void ScDrawShell::ExecuteAreaDlg( SfxRequest& rReq, USHORT nTabPage )
+{
+ ScDrawView* pView = pViewData->GetScDrawView();
+ BOOL bHasMarked = pView->HasMarkedObj();
+
+ SfxItemSet aNewAttr( pView->GetDefaultAttr() );
+ if( bHasMarked )
+ pView->MergeAttrFromMarked( aNewAttr, FALSE );
+
+ SvxAreaTabDialog* pDlg
+ = new SvxAreaTabDialog( pViewData->GetDialogParent(),
+ &aNewAttr,
+ pViewData->GetDocument()->GetDrawLayer(),
+ pView );
+
+ if ( nTabPage != 0xffff )
+ pDlg->SetCurPageId( nTabPage );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ if( bHasMarked )
+ pView->SetAttrToMarked( *pDlg->GetOutputItemSet(), FALSE );
+ else
+ pView->SetDefaultAttr( *pDlg->GetOutputItemSet(), FALSE );
+
+ pView->InvalidateAttribs();
+ rReq.Done();
+ }
+
+ delete pDlg;
+}
+
+#pragma SEG_FUNCDEF(drawsh_08)
+
+void ScDrawShell::ExecuteTextAttrDlg( SfxRequest& rReq, USHORT nTabPage )
+{
+ ScDrawView* pView = pViewData->GetScDrawView();
+ BOOL bHasMarked = pView->HasMarkedObj();
+ SfxItemSet aNewAttr ( pView->GetDefaultAttr() );
+
+ if( bHasMarked )
+ pView->MergeAttrFromMarked( aNewAttr, FALSE );
+
+ SvxTextTabDialog* pDlg =
+ new SvxTextTabDialog( pViewData->GetDialogParent(), &aNewAttr , pView);
+
+ USHORT nResult = pDlg->Execute();
+
+ if ( RET_OK == nResult )
+ {
+ if ( bHasMarked )
+ pView->SetAttributes( *pDlg->GetOutputItemSet() );
+ else
+ pView->SetDefaultAttr( *pDlg->GetOutputItemSet(), FALSE );
+
+ rReq.Done();
+ }
+ delete( pDlg );
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.70 2000/09/17 14:09:01 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.69 2000/08/31 16:38:23 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.68 2000/05/09 18:30:02 nn
+ use IMPL_INTERFACE macro without IDL
+
+ Revision 1.67 2000/02/11 12:25:38 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.66 1999/06/22 08:55:54 NN
+ pass ItemSet to GetAttributes
+
+
+ Rev 1.65 22 Jun 1999 10:55:54 NN
+ pass ItemSet to GetAttributes
+
+ Rev 1.64 22 Feb 1999 20:49:50 ANK
+ #47158# Erweiterungen fuer neue DrawForm-Shell
+
+ Rev 1.63 12 Jan 1998 14:06:46 TJ
+ include
+
+ Rev 1.62 05 Dec 1997 19:31:10 NN
+ Includes
+
+ Rev 1.61 04 Sep 1997 14:30:38 RG
+ change header
+
+ Rev 1.60 27 Aug 1997 13:41:54 TRI
+ VCL includes
+
+ Rev 1.59 05 Aug 1997 15:21:44 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.58 14 Apr 1997 13:05:16 HJS
+ includes
+
+ Rev 1.57 04 Apr 1997 16:27:02 TRI
+ includes
+
+ Rev 1.56 23 Jan 1997 15:37:02 NN
+ beim SvxAreaTabDialog die View uebergeben
+
+ Rev 1.55 08 Jan 1997 20:50:12 HJS
+ forward
+
+ Rev 1.54 15 Nov 1996 17:55:46 NN
+ SvxTextTabDialog aufrufen
+
+ Rev 1.53 08 Nov 1996 08:43:00 NF
+ includes...
+
+ Rev 1.52 29 Oct 1996 14:05:14 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.51 21 Oct 1996 15:36:18 NN
+ include tbxalign war ueberfluessig
+
+ Rev 1.50 22 Aug 1996 15:39:42 NF
+ clooks
+
+ Rev 1.49 09 Aug 1996 20:37:12 NN
+ Svx-Includes aus scitems.hxx raus
+
+ Rev 1.48 22 May 1996 14:52:46 NN
+ GetDrawView -> GetScDrawView
+
+ Rev 1.47 10 Apr 1996 09:31:42 NF
+ sv.hxx als ertes includen
+
+ Rev 1.46 22 Mar 1996 14:03:20 MH
+ add: include sfxiiter.hxx
+
+ Rev 1.45 07 Mar 1996 12:27:38 NF
+ Zuviele defines
+
+ Rev 1.44 13 Feb 1996 08:26:50 TRI
+ CLOOKS
+
+ Rev 1.43 23 Jan 1996 23:43:50 HJS
+ anpassung fuer die nicht-b
+
+ Rev 1.42 18 Dec 1995 14:18:42 MO
+ Visibility-Flags auf Server gesetzt
+
+ Rev 1.41 12 Dec 1995 18:58:44 MO
+ Disable-Methode fuer div. Acceleratoren
+
+ Rev 1.40 12 Dec 1995 17:41:40 MO
+ Standard-Textattribute setzen
+
+ Rev 1.39 11 Dec 1995 18:42:58 MO
+ ExecuteTextAttrDlg
+
+ Rev 1.37 10 Dec 1995 15:51:54 TRI
+ define entfernt
+
+ Rev 1.36 30 Nov 1995 20:09:40 MO
+ Linienenden-Control Execute
+
+ Rev 1.35 28 Nov 1995 21:43:52 MO
+ include-Reihenfolge geandert
+
+ Rev 1.34 10 Nov 1995 18:36:30 NN
+ static -> lcl
+
+ Rev 1.33 26 Oct 1995 14:24:20 JN
+ richtigen Dialog bei Legende aufrufen
+
+ Rev 1.32 06 Oct 1995 08:05:46 NN
+ 300: Parameter bOnlyHardAttr bei MergeAttrFromMarked
+
+ Rev 1.31 10 Aug 1995 00:36:10 HJS
+ svundo muss da sein
+
+ Rev 1.30 07 Aug 1995 13:04:22 MO
+ 253b: Transform-Dialog Aufrufparameter
+
+ Rev 1.29 03 Aug 1995 13:22:26 MO
+ FontWork-ChildWindow Register
+
+ Rev 1.28 21 Jul 1995 10:06:14 NN
+ InvalidateAttribs beim direkten Setzen von Attributen
+
+ Rev 1.27 20 Jul 1995 18:37:38 MO
+ BugFix: vertikale Anordnung der ObjBar (BugId: 16227)
+
+ Rev 1.26 08 Jul 1995 19:14:00 HJS
+ ein define zuviel
+
+ Rev 1.25 06 Jul 1995 22:11:12 HJS
+ ein #define zuviel
+
+ Rev 1.24 04 Jul 1995 11:57:40 MO
+ Parameterkorrektur fuer LineDlg
+
+ Rev 1.23 20 Jun 1995 16:23:46 NN
+ nochmal Segmentierung
+
+ Rev 1.22 13 Jun 1995 18:30:40 MO
+ seg-pragmas korrigiert
+
+ Rev 1.21 13 Jun 1995 14:43:30 MO
+ spezielles Segmentierungs-pragma
+
+ Rev 1.20 07 Jun 1995 10:09:00 MO
+ SFX_OBJECTBAR_OBJECT
+
+ Rev 1.19 07 Jun 1995 08:43:22 MO
+ SvxIds fuer DrawUI
+
+ Rev 1.18 23 May 1995 14:46:04 MO
+ Aufruf Transform-Dialog angepasst
+
+ Rev 1.17 10 May 1995 14:44:36 TRI
+
+ Rev 1.16 04 May 1995 09:28:36 TRI
+ SvxAreaTabPage: geanderte Paramteranzahl
+
+ Rev 1.15 05 Apr 1995 18:16:34 NN
+ tabvwsh-include raus (Funktionen nach viewdata)
+
+ Rev 1.14 04 Apr 1995 18:14:20 TRI
+ Out of Keys
+
+ Rev 1.13 30 Mar 1995 18:31:12 TRI
+ Out of Keys
+
+ Rev 1.12 27 Mar 1995 17:44:54 TRI
+ Out of Keys - Aufteilung
+
+ Rev 1.11 21 Mar 1995 11:12:18 MO
+ 242-Aenderungen
+
+ Rev 1.10 15 Mar 1995 12:59:28 NN
+ MarkAll
+
+ Rev 1.9 03 Mar 1995 22:59:16 NN
+ 2.41 Anpassung
+
+ Rev 1.8 27 Feb 1995 13:25:36 SC
+ * syntax-Fehler korrigiert
+
+
+ Rev 1.7 27 Feb 1995 08:53:52 NN
+ Anordnung
+
+ Rev 1.6 25 Feb 1995 20:18:46 NN
+ Alignment-Funktionen
+
+ Rev 1.5 17 Feb 1995 18:59:50 NN
+ Paste mit Fenster
+
+ Rev 1.4 15 Feb 1995 02:00:44 NN
+ Cut/Copy/Paste
+
+ Rev 1.3 14 Feb 1995 19:55:38 NN
+ ObjectMenue (disabled)
+
+ Rev 1.2 13 Feb 1995 20:59:58 NN
+ Popup Menue
+
+ Rev 1.1 12 Feb 1995 21:42:34 NN
+ Drawing Objektleiste
+
+ Rev 1.0 01 Feb 1995 18:21:42 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/drawfunc/drawsh2.cxx b/sc/source/ui/drawfunc/drawsh2.cxx
new file mode 100644
index 000000000000..3261c17370d2
--- /dev/null
+++ b/sc/source/ui/drawfunc/drawsh2.cxx
@@ -0,0 +1,568 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawsh2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:55 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+//#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+#ifdef WIN
+#define _MENU_HXX
+#endif
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX ***
+#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+//#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+//#define _SFXPTITEM_HXX ***
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+//#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+//svdraw.hxx
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+
+#define _SDR_NOEXTDEV // ExtOutputDevice
+//#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+//#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+#define _SDR_NOTEXTOBJ // SdrTextObj
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+#define _SDR_NOOLE2OBJ // SdrOle2Obj
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/sizeitem.hxx>
+#include <svx/svdpagv.hxx>
+#include <svx/xdef.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <svtools/ptitem.hxx>
+#include <svtools/whiter.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdouno.hxx>
+
+#include "drawsh.hxx"
+#include "drawview.hxx"
+#include "viewdata.hxx"
+#include "sc.hrc"
+#include "tabvwsh.hxx"
+
+USHORT ScGetFontWorkId(); // in drtxtob
+
+//------------------------------------------------------------------
+
+ScDrawShell::ScDrawShell( ScViewData* pData ) :
+ SfxShell(pData->GetViewShell()),
+ pViewData( pData )
+{
+ SetPool( &pViewData->GetScDrawView()->GetModel()->GetItemPool() );
+ SetUndoManager( pViewData->GetSfxDocShell()->GetUndoManager() );
+ SetHelpId( HID_SCSHELL_DRAWSH );
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Drawing")));
+}
+
+ScDrawShell::~ScDrawShell()
+{
+}
+
+void ScDrawShell::GetState( SfxItemSet& rSet ) // Zustaende / Toggles
+{
+ ScDrawView* pView = pViewData->GetScDrawView();
+ SdrDragMode eMode = pView->GetDragMode();
+
+ rSet.Put( SfxBoolItem( SID_OBJECT_ROTATE, eMode == SDRDRAG_ROTATE ) );
+ rSet.Put( SfxBoolItem( SID_OBJECT_MIRROR, eMode == SDRDRAG_MIRROR ) );
+ rSet.Put( SfxBoolItem( SID_BEZIER_EDIT, !pView->IsFrameDragSingles() ) );
+
+ USHORT nFWId = ScGetFontWorkId();
+ SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
+ rSet.Put(SfxBoolItem(SID_FONTWORK, pViewFrm->HasChildWindow(nFWId)));
+
+ switch( pView->GetAnchor() )
+ {
+ case SCA_PAGE:
+ rSet.Put( SfxBoolItem( SID_ANCHOR_PAGE, TRUE ) );
+ rSet.Put( SfxBoolItem( SID_ANCHOR_CELL, FALSE ) );
+ break;
+
+ case SCA_CELL:
+ rSet.Put( SfxBoolItem( SID_ANCHOR_PAGE, FALSE ) );
+ rSet.Put( SfxBoolItem( SID_ANCHOR_CELL, TRUE ) );
+ break;
+
+ default:
+ rSet.Put( SfxBoolItem( SID_ANCHOR_PAGE, FALSE ) );
+ rSet.Put( SfxBoolItem( SID_ANCHOR_CELL, FALSE ) );
+ break;
+ }
+}
+
+void ScDrawShell::GetDrawFuncState( SfxItemSet& rSet ) // Funktionen disablen
+{
+ ScDrawView* pView = pViewData->GetScDrawView();
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+ ULONG nMarkCount = rMarkList.GetMarkCount();
+
+ if ( nMarkCount <= 1 || !pView->IsGroupPossible() )
+ rSet.DisableItem( SID_GROUP );
+ if ( nMarkCount == 0 || !pView->IsUnGroupPossible() )
+ rSet.DisableItem( SID_UNGROUP );
+ if ( nMarkCount != 1 || !pView->IsGroupEnterPossible() )
+ rSet.DisableItem( SID_ENTER_GROUP );
+ if ( !pView->IsGroupEntered() )
+ rSet.DisableItem( SID_LEAVE_GROUP );
+
+ if (!pView->IsMirrorAllowed(TRUE,TRUE))
+ {
+ rSet.DisableItem( SID_MIRROR_HORIZONTAL );
+ rSet.DisableItem( SID_MIRROR_VERTICAL );
+ }
+
+ if ( nMarkCount <= 1 ) // nichts oder nur ein Objekt selektiert
+ {
+ // Ausrichtung
+ rSet.DisableItem( SID_OBJECT_ALIGN_LEFT ); // keine Ausrichtung an der Seite
+ rSet.DisableItem( SID_OBJECT_ALIGN_CENTER );
+ rSet.DisableItem( SID_OBJECT_ALIGN_RIGHT );
+ rSet.DisableItem( SID_OBJECT_ALIGN_UP );
+ rSet.DisableItem( SID_OBJECT_ALIGN_MIDDLE );
+ rSet.DisableItem( SID_OBJECT_ALIGN_DOWN );
+ }
+
+ if ( !nMarkCount || pView->HasMarkedControl() )
+ {
+ // Layer von Controls darf nicht veraendert werden
+ rSet.DisableItem( SID_OBJECT_HEAVEN );
+ rSet.DisableItem( SID_OBJECT_HELL );
+ }
+ else
+ {
+ if(AreAllObjectsOnLayer(SC_LAYER_FRONT,rMarkList))
+ {
+ rSet.DisableItem( SID_OBJECT_HEAVEN );
+ }
+ else if(AreAllObjectsOnLayer(SC_LAYER_BACK,rMarkList))
+ {
+ rSet.DisableItem( SID_OBJECT_HELL );
+ }
+ }
+
+
+ if ( !nMarkCount ) // nichts selektiert
+ {
+ // Anordnung
+ rSet.DisableItem( SID_FRAME_UP );
+ rSet.DisableItem( SID_FRAME_DOWN );
+ rSet.DisableItem( SID_FRAME_TO_TOP );
+ rSet.DisableItem( SID_FRAME_TO_BOTTOM );
+ // Clipboard / loeschen
+ rSet.DisableItem( SID_DELETE );
+ rSet.DisableItem( SID_DELETE_CONTENTS );
+ rSet.DisableItem( SID_CUT );
+ rSet.DisableItem( SID_COPY );
+ // sonstiges
+ rSet.DisableItem( SID_ANCHOR_TOGGLE );
+ rSet.DisableItem( SID_ORIGINALSIZE );
+ rSet.DisableItem( SID_ATTR_TRANSFORM );
+ }
+}
+
+//
+// Attribute fuer Drawing-Objekte
+//
+
+void ScDrawShell::GetDrawAttrState( SfxItemSet& rSet )
+{
+ Point aMousePos = pViewData->GetMousePosPixel();
+ Window* pWindow = pViewData->GetActiveWin();
+ ScDrawView* pDrView = pViewData->GetScDrawView();
+ Point aPos = pWindow->PixelToLogic(aMousePos);
+ BOOL bHasMarked = pDrView->HasMarkedObj();
+
+ if( bHasMarked )
+ {
+ rSet.Put( pDrView->GetAttrFromMarked(FALSE) );
+
+ // Wenn die View selektierte Objekte besitzt, muessen entspr. Items
+ // von SFX_ITEM_DEFAULT (_ON) auf SFX_ITEM_DISABLED geaendert werden
+
+ SfxWhichIter aIter( rSet, XATTR_LINE_FIRST, XATTR_FILL_LAST );
+ USHORT nWhich = aIter.FirstWhich();
+ while( nWhich )
+ {
+ if( SFX_ITEM_DEFAULT == rSet.GetItemState( nWhich ) )
+ rSet.DisableItem( nWhich );
+
+ nWhich = aIter.NextWhich();
+ }
+ }
+ else
+ rSet.Put( pDrView->GetDefaultAttr() );
+
+ // Position- und Groesse-Items
+ if ( pDrView->IsAction() )
+ {
+ Rectangle aRect;
+ pDrView->TakeActionRect( aRect );
+
+ if ( aRect.IsEmpty() )
+ rSet.Put( SfxPointItem(SID_ATTR_POSITION, aPos) );
+ else
+ {
+ pDrView->GetPageViewPvNum(0)->LogicToPagePos(aRect);
+ rSet.Put( SfxPointItem( SID_ATTR_POSITION, aRect.TopLeft() ) );
+ rSet.Put( SvxSizeItem( SID_ATTR_SIZE,
+ Size( aRect.Right() - aRect.Left(),
+ aRect.Bottom() - aRect.Top() ) ) );
+ }
+ }
+ else
+ {
+ rSet.Put( SfxPointItem(SID_ATTR_POSITION, aPos) );
+
+ if ( bHasMarked )
+ {
+ Rectangle aRect = pDrView->GetAllMarkedRect();
+ pDrView->GetPageViewPvNum(0)->LogicToPagePos(aRect);
+ rSet.Put( SvxSizeItem( SID_ATTR_SIZE,
+ Size( aRect.Right() - aRect.Left(),
+ aRect.Bottom() - aRect.Top()) ) );
+ }
+ else
+ rSet.Put( SvxSizeItem( SID_ATTR_SIZE, Size( 0, 0 ) ) );
+ }
+
+}
+
+void ScDrawShell::GetAttrFuncState(SfxItemSet &rSet)
+{
+ // Dialoge fuer Draw-Attribute disablen, wenn noetig
+
+ ScDrawView* pDrView = pViewData->GetScDrawView();
+ SfxItemSet aViewSet = pDrView->GetAttrFromMarked(FALSE);
+
+ if ( aViewSet.GetItemState( XATTR_LINESTYLE ) == SFX_ITEM_DEFAULT )
+ {
+ rSet.DisableItem( SID_ATTRIBUTES_LINE );
+ rSet.DisableItem( SID_ATTR_LINEEND_STYLE ); // Tbx-Controller
+ }
+
+ if ( aViewSet.GetItemState( XATTR_FILLSTYLE ) == SFX_ITEM_DEFAULT )
+ rSet.DisableItem( SID_ATTRIBUTES_AREA );
+}
+
+BOOL ScDrawShell::AreAllObjectsOnLayer(USHORT nLayerNo,const SdrMarkList& rMark)
+{
+ BOOL bResult=TRUE;
+ ULONG nCount = rMark.GetMarkCount();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ SdrObject* pObj = rMark.GetMark(i)->GetObj();
+ if ( !pObj->ISA(SdrUnoObj) )
+ {
+ if(nLayerNo!=pObj->GetLayer())
+ {
+ bResult=FALSE;
+ break;
+ }
+ }
+ }
+ return bResult;
+}
+
+
diff --git a/sc/source/ui/drawfunc/drawsh4.cxx b/sc/source/ui/drawfunc/drawsh4.cxx
new file mode 100644
index 000000000000..1d878d03004d
--- /dev/null
+++ b/sc/source/ui/drawfunc/drawsh4.cxx
@@ -0,0 +1,423 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawsh4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#if defined WIN
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX ***
+//#define _LINK_HXX ***
+//#define _ERRCODE_HXX ***
+//#define _GEN_HXX ***
+//#define _FRACT_HXX ***
+//#define _STRING_HXX ***
+//#define _MTF_HXX ***
+//#define _CONTNR_HXX ***
+//#define _LIST_HXX ***
+//#define _TABLE_HXX ***
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX ***
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX ***
+//#define _DEBUG_HXX ***
+//#define _DATE_HXX ***
+//#define _TIME_HXX ***
+//#define _DATETIME_HXX ***
+//#define _INTN_HXX ***
+//#define _WLDCRD_HXX ***
+//#define _FSYS_HXX ***
+//#define _STREAM_HXX ***
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+
+//SV
+#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX ***
+//#define _PAL_HXX ***
+//#define _BITMAP_HXX ***
+//#define _GDIOBJ_HXX ***
+//#define _POINTR_HXX ***
+//#define _ICON_HXX ***
+//#define _IMAGE_HXX ***
+//#define _KEYCOD_HXX ***
+//#define _EVENT_HXX ***
+#define _HELP_HXX
+//#define _APP_HXX ***
+//#define _MDIAPP_HXX ***
+//#define _TIMER_HXX ***
+//#define _METRIC_HXX ***
+//#define _REGION_HXX ***
+//#define _OUTDEV_HXX ***
+//#define _SYSTEM_HXX ***
+//#define _VIRDEV_HXX ***
+//#define _JOBSET_HXX ***
+//#define _PRINT_HXX ***
+//#define _WINDOW_HXX ***
+//#define _SYSWIN_HXX ***
+//#define _WRKWIN_HXX ***
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX ***
+//#define _DOCKWIN_HXX ***
+//#define _CTRL_HXX ***
+//#define _SCRBAR_HXX ***
+//#define _BUTTON_HXX ***
+#define _IMAGEBTN_HXX
+//#define _FIXED_HXX ***
+//#define _GROUP_HXX ***
+//#define _EDIT_HXX ***
+//#define _COMBOBOX_HXX ***
+//#define _LSTBOX_HXX ***
+//#define _SELENG_HXX ***
+#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX ***
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX ***
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX ***
+//#define _MSGBOX_HXX ***
+//#define _SYSDLG_HXX ***
+#define _FILDLG_HXX
+//#define _PRNDLG_HXX ***
+#define _COLDLG_HXX
+#define _TABDLG_HXX
+#define _MENU_HXX
+//#define _GDIMTF_HXX ***
+//#define _POLY_HXX ***
+//#define _ACCEL_HXX ***
+//#define _GRAPH_HXX ***
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+#define _TABBAR_HXX
+//#define _VALUESET_HXX ***
+#define _STDMENU_HXX
+#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX ***
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//svdraw.hxx
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+#define _SDR_NOXOUTDEV
+#define _SDR_NOITEMS
+
+
+
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+
+#define _SDR_NOEXTDEV // ExtOutputDevice
+//#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+#define _SDR_NOTEXTOBJ // SdrTextObj
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+#define _SDR_NOOLE2OBJ // SdrOle2Obj
+
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX
+//#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX //*
+#define _SFXDOCTDLG_HXX //*
+#define _SFX_TEMPLDLG_HXX //*
+#define _SFXNEW_HXX //*
+#define _SFXDOCMAN_HXX
+
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX ***
+//#define _SFXCTRLITEM_HXX ***
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+
+
+// sfxdoc.hxx:
+//#define _SFXDOCINF_HXX ***
+#define _SFXVIEWFRM_HXX
+#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+#define _SFXDOCFILE_HXX
+#define _VIEWFAC_HXX
+//#define _SFXVIEWSH_HXX ***
+#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+#define _SFX_INTERNO_HXX
+
+#define _SIDLL_HXX
+#define _SI_NODRW_HXX
+#define _SI_NOITEMS_HXX
+#define _SI_NOCONTROL_HXX
+#define _SI_NOOTHERFORMS_HXX
+#define _SI_NOSBXCONTROLS_HXX
+#define _VCBRW_HXX
+#define _VCTRLS_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+
+// drawlayer
+//#define _SVDLAYER_HXX ***
+//#define _SVDATTR_HXX ***
+#define _SVDIO_HXX
+#define _SVBOXITM_HXX
+#define _SVDEC_HXX
+#define _SVDXOUT_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+//inet
+#define _INETINDP_HXX
+#define _INETIMP_HXX
+#define _INETWRAP_HXX
+#define _INETKEEP_HXX
+#define _PLUGMGR_HXX
+//#define _URLOBJ_HXX ***
+
+#define SFX_NOCLOOKS
+#endif
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/drawitem.hxx>
+#include <svx/fontwork.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/xdef.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/viewfrm.hxx>
+
+#include "drawsh.hxx"
+#include "drawview.hxx"
+#include "viewdata.hxx"
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+
+
+//------------------------------------------------------------------
+
+void ScDrawShell::GetFormTextState(SfxItemSet& rSet)
+{
+ const SdrObject* pObj = NULL;
+ SvxFontWorkDialog* pDlg = NULL;
+ ScDrawView* pDrView = pViewData->GetScDrawView();
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+ USHORT nId = SvxFontWorkChildWindow::GetChildWindowId();
+
+ SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
+ if ( pViewFrm->HasChildWindow(nId) )
+ pDlg = (SvxFontWorkDialog*)(pViewFrm->GetChildWindow(nId)->GetWindow());
+
+ if ( rMarkList.GetMarkCount() == 1 )
+ pObj = rMarkList.GetMark(0)->GetObj();
+
+ if ( pObj == NULL || !pObj->ISA(SdrTextObj) ||
+ !((SdrTextObj*) pObj)->HasText() )
+ {
+ if ( pDlg )
+ pDlg->SetActive(FALSE);
+
+ rSet.DisableItem(XATTR_FORMTXTSTYLE);
+ rSet.DisableItem(XATTR_FORMTXTADJUST);
+ rSet.DisableItem(XATTR_FORMTXTDISTANCE);
+ rSet.DisableItem(XATTR_FORMTXTSTART);
+ rSet.DisableItem(XATTR_FORMTXTMIRROR);
+ rSet.DisableItem(XATTR_FORMTXTSTDFORM);
+ rSet.DisableItem(XATTR_FORMTXTHIDEFORM);
+ rSet.DisableItem(XATTR_FORMTXTOUTLINE);
+ rSet.DisableItem(XATTR_FORMTXTSHADOW);
+ rSet.DisableItem(XATTR_FORMTXTSHDWCOLOR);
+ rSet.DisableItem(XATTR_FORMTXTSHDWXVAL);
+ rSet.DisableItem(XATTR_FORMTXTSHDWYVAL);
+ }
+ else
+ {
+ if ( pDlg )
+ {
+ SfxObjectShell* pDocSh = SfxObjectShell::Current();
+
+ if ( pDocSh )
+ {
+ const SfxPoolItem* pItem = pDocSh->GetItem( ITEMID_COLOR_TABLE );
+ XColorTable* pColorTable = NULL;
+
+ if ( pItem )
+ pColorTable = ((SvxColorTableItem*)pItem)->GetColorTable();
+
+ pDlg->SetActive();
+
+ if ( pColorTable )
+ pDlg->SetColorTable( pColorTable );
+ else
+ { DBG_ERROR( "ColorList not found :-/" ); }
+ }
+ }
+ SfxItemSet aViewAttr(pDrView->GetModel()->GetItemPool());
+ pDrView->GetAttributes(aViewAttr);
+ rSet.Set(aViewAttr);
+ }
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/drawsh5.cxx b/sc/source/ui/drawfunc/drawsh5.cxx
new file mode 100644
index 000000000000..cdd58e3bc616
--- /dev/null
+++ b/sc/source/ui/drawfunc/drawsh5.cxx
@@ -0,0 +1,255 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawsh5.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <sfx2/request.hxx>
+#include <tools/urlobj.hxx>
+#include <svx/fmglob.hxx>
+#include <svx/hlnkitem.hxx>
+#include <svx/svdouno.hxx>
+
+#include <com/sun/star/form/FormButtonType.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#include <com/sun/star/awt/XControlModel.hpp>
+
+#include "drawsh.hxx"
+#include "drawview.hxx"
+#include "viewdata.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------
+
+void ScDrawShell::GetHLinkState( SfxItemSet& rSet ) // Hyperlink
+{
+ ScDrawView* pView = pViewData->GetScDrawView();
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+ ULONG nMarkCount = rMarkList.GetMarkCount();
+
+ // Hyperlink
+
+ SvxHyperlinkItem aHLinkItem;
+
+ if ( nMarkCount == 1 ) // URL-Button markiert ?
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+ SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, pObj);
+ if (pUnoCtrl && FmFormInventor == pUnoCtrl->GetObjInventor())
+ {
+ uno::Reference<awt::XControlModel> xControlModel = pUnoCtrl->GetUnoControlModel();
+ DBG_ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
+ if( !xControlModel.is() )
+ return;
+
+ uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY );
+ uno::Reference< beans::XPropertySetInfo > xInfo = xPropSet->getPropertySetInfo();
+
+ rtl::OUString sPropButtonType = rtl::OUString::createFromAscii( "ButtonType" );
+ rtl::OUString sPropTargetURL = rtl::OUString::createFromAscii( "TargetURL" );
+ rtl::OUString sPropTargetFrame = rtl::OUString::createFromAscii( "TargetFrame" );
+ rtl::OUString sPropLabel = rtl::OUString::createFromAscii( "Label" );
+
+ if(xInfo->hasPropertyByName( sPropButtonType ))
+ {
+ uno::Any aAny = xPropSet->getPropertyValue( sPropButtonType );
+ form::FormButtonType eTmp;
+ if ( (aAny >>= eTmp) && eTmp == form::FormButtonType_URL )
+ {
+ rtl::OUString sTmp;
+ // Label
+ if(xInfo->hasPropertyByName( sPropLabel ))
+ {
+ aAny = xPropSet->getPropertyValue( sPropLabel );
+ if ( (aAny >>= sTmp) && sTmp.len() )
+ {
+ aHLinkItem.SetName(sTmp);
+ }
+ }
+ // URL
+ if(xInfo->hasPropertyByName( sPropTargetURL ))
+ {
+ aAny = xPropSet->getPropertyValue( sPropTargetURL );
+ if ( (aAny >>= sTmp) && sTmp.len() )
+ {
+ aHLinkItem.SetURL(sTmp);
+ }
+ }
+ // Target
+ if(xInfo->hasPropertyByName( sPropTargetFrame ))
+ {
+ aAny = xPropSet->getPropertyValue( sPropTargetFrame );
+ if ( (aAny >>= sTmp) && sTmp.len() )
+ {
+ aHLinkItem.SetTargetFrame(sTmp);
+ }
+ }
+ aHLinkItem.SetInsertMode(HLINK_BUTTON);
+ }
+ }
+ }
+ }
+
+ rSet.Put(aHLinkItem);
+}
+
+void ScDrawShell::ExecuteHLink( SfxRequest& rReq )
+{
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+
+ USHORT nSlot = rReq.GetSlot();
+ switch ( nSlot )
+ {
+ case SID_HYPERLINK_SETLINK:
+ if( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs->GetItemState( SID_HYPERLINK_SETLINK, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ const SvxHyperlinkItem* pHyper = (const SvxHyperlinkItem*) pItem;
+ const String& rName = pHyper->GetName();
+ const String& rURL = pHyper->GetURL();
+ const String& rTarget = pHyper->GetTargetFrame();
+ SvxLinkInsertMode eMode = pHyper->GetInsertMode();
+
+ BOOL bDone = FALSE;
+ if ( eMode == HLINK_DEFAULT || eMode == HLINK_BUTTON )
+ {
+ ScDrawView* pView = pViewData->GetScDrawView();
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+ if ( rMarkList.GetMarkCount() == 1 )
+ {
+ SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, rMarkList.GetMark(0)->GetObj());
+ if (pUnoCtrl && FmFormInventor == pUnoCtrl->GetObjInventor())
+ {
+ uno::Reference<awt::XControlModel> xControlModel =
+ pUnoCtrl->GetUnoControlModel();
+ DBG_ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
+ if( !xControlModel.is() )
+ return;
+
+ uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY );
+ uno::Reference< beans::XPropertySetInfo > xInfo = xPropSet->getPropertySetInfo();
+
+ rtl::OUString sPropTargetURL =
+ rtl::OUString::createFromAscii( "TargetURL" );
+
+ // Darf man eine URL an dem Objekt setzen?
+ if (xInfo->hasPropertyByName( sPropTargetURL ))
+ {
+ // Ja!
+
+ rtl::OUString sPropButtonType =
+ rtl::OUString::createFromAscii( "ButtonType" );
+ rtl::OUString sPropTargetFrame =
+ rtl::OUString::createFromAscii( "TargetFrame" );
+ rtl::OUString sPropLabel =
+ rtl::OUString::createFromAscii( "Label" );
+
+ uno::Any aAny;
+ aAny <<= rtl::OUString(rName);
+ xPropSet->setPropertyValue( sPropLabel, aAny );
+
+ aAny <<= rtl::OUString(INetURLObject::RelToAbs(rURL));
+ xPropSet->setPropertyValue( sPropTargetURL, aAny );
+
+ if( rTarget.Len() )
+ {
+ aAny <<= rtl::OUString(rTarget);
+ xPropSet->setPropertyValue( sPropTargetFrame, aAny );
+ }
+
+ form::FormButtonType eButtonType = form::FormButtonType_URL;
+ aAny <<= eButtonType;
+ xPropSet->setPropertyValue( sPropButtonType, aAny );
+
+ //! Undo ???
+ pViewData->GetDocShell()->SetDocumentModified();
+ bDone = TRUE;
+ }
+ }
+ }
+ }
+
+ if (!bDone)
+ pViewData->GetViewShell()->
+ InsertURL( rName, rURL, rTarget, (USHORT) eMode );
+
+ // InsertURL an der ViewShell schaltet bei "Text" die DrawShell ab !!!
+ }
+ }
+ break;
+ default:
+ DBG_ERROR("falscher Slot");
+ }
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/drformsh.cxx b/sc/source/ui/drawfunc/drformsh.cxx
new file mode 100644
index 000000000000..9e5848814089
--- /dev/null
+++ b/sc/source/ui/drawfunc/drformsh.cxx
@@ -0,0 +1,367 @@
+/*************************************************************************
+ *
+ * $RCSfile: drformsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX ***
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX ***
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX
+//#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX
+//#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+//#define _SFXTBXCTRL_HXX ***
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX
+//#define _SFXDOCTDLG_HXX
+//#define _SFX_TEMPLDLG_HXX
+//#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX ***
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+//#define _SFX_WHITER_HXX ***
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+//#define _SIDLL_HXX
+
+//------------------------------------------------------------------
+
+#include <svx/eeitem.hxx>
+#include <svx/fontwork.hxx>
+#include <svx/labdlg.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/tabarea.hxx>
+#include <svx/tabline.hxx>
+#include <svx/textanim.hxx>
+#include <svx/transfrm.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+#include <segmentc.hxx>
+
+#include "drformsh.hxx"
+#include "drwlayer.hxx"
+#include "sc.hrc"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "docpool.hxx"
+#include "drawview.hxx"
+#include "scresid.hxx"
+
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+
+#define ScDrawFormShell
+#include "scslots.hxx"
+
+
+SFX_IMPL_INTERFACE(ScDrawFormShell, ScDrawShell, ScResId(SCSTR_DRAWFORMSHELL) )
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT|SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
+ ScResId(RID_OBJECTBAR_DRAWFORM) );
+ SFX_POPUPMENU_REGISTRATION( ScResId(RID_POPUP_DRAWFORM) );
+ SFX_OBJECTMENU_REGISTRATION( SID_OBJECTMENU0, ScResId(RID_OBJECTMENU_DRAWFORM) );
+}
+
+TYPEINIT1( ScDrawFormShell, ScDrawShell );
+
+ScDrawFormShell::ScDrawFormShell(ScViewData* pData) :
+ ScDrawShell(pData)
+{
+ SetHelpId(HID_SCSHELL_DRAWFORMSH);
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("DrawForm")));
+}
+
+ScDrawFormShell::~ScDrawFormShell()
+{
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/drformsh.src b/sc/source/ui/drawfunc/drformsh.src
new file mode 100644
index 000000000000..d005612b087f
--- /dev/null
+++ b/sc/source/ui/drawfunc/drformsh.src
@@ -0,0 +1,563 @@
+/*************************************************************************
+ *
+ * $RCSfile: drformsh.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+#include "submenu.hrc"
+#include <offmgr/offmenu.hrc>
+ //
+ // Defines -------------------------------------------------------------------------------
+ //
+#define MN_LAYER\
+ ToolBoxItem\
+ {\
+ Identifier = SID_FRAME_TO_TOP ; \
+ HelpID = SID_FRAME_TO_TOP ; \
+ };\
+ ToolBoxItem\
+ {\
+ Identifier = SID_FRAME_TO_BOTTOM ; \
+ HelpID = SID_FRAME_TO_BOTTOM ; \
+ };
+
+#define MN_ARRANGESUB \
+ MenuItem\
+ {\
+ Identifier = SUBMENU_OBJARRANGE ; \
+ HelpID = HID_SCMENU_OBJARRANGE ; \
+ Text = "~Anordnung" ; \
+ Text [ ENGLISH ] = "Arrange" ; \
+ Text [ norwegian ] = "Arrange" ; \
+ Text [ italian ] = "~Disponi" ; \
+ Text [ portuguese_brazilian ] = "Organizar" ; \
+ Text [ portuguese ] = "~Disposição" ; \
+ Text [ finnish ] = "Järjestä" ; \
+ Text [ danish ] = "Pl~acering" ; \
+ Text [ french ] = "~Disposition" ; \
+ Text [ swedish ] = "~Placering" ; \
+ Text [ dutch ] = "~Positie" ; \
+ Text [ spanish ] = "~Posición" ; \
+ Text [ english_us ] = "~Arrange" ; \
+ SubMenu = Menu\
+ {\
+ ItemList = \
+ {\
+ MenuItem\
+ {\
+ ITEM_FORMAT_FRAME_TO_TOP\
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_FRAME_UP ; \
+ HelpId = SID_FRAME_UP ; \
+ /* ### ACHTUNG: Neuer Text in Resource? W~eiter nach vorn : Weiter nach vorn */\
+ Text = "W~eiter nach vorn" ; \
+ Text [ ENGLISH ] = "Bring Forward" ; \
+ Text [ norwegian ] = "Flytt Framover" ; \
+ Text [ italian ] = "Porta più ~avanti" ; \
+ Text [ portuguese_brazilian ] = "Tazer Para Frente" ; \
+ Text [ portuguese ] = "~Trazer para a frente" ; \
+ Text [ finnish ] = "Yksi eteen" ; \
+ Text [ danish ] = "F~lyt fremad" ; \
+ Text [ french ] = "V~ers l'avant" ; \
+ Text [ swedish ] = "Flytta l~ängre fram" ; \
+ Text [ dutch ] = "Naar ~voren" ; \
+ Text [ spanish ] = "Traer más a~delante" ; \
+ Text [ english_us ] = "Bring ~Forward" ; \
+ Text[ chinese_simplified ] = "ÔÙÇ°ÖÃ(~F)";\
+ Text[ russian ] = "Ïåðåìåñòèòü ~âïåðåä";\
+ Text[ polish ] = "Przesuñ do przodu";\
+ Text[ japanese ] = "‘O–Ê‚ÖˆÚ“®(~F)";\
+ Text[ greek ] = "Ì~åôáöïñÜ Ýíá åðßðåäï åìðñüò";\
+ Text[ korean ] = "¾ÕÀ¸·Î °¡Á®¿À±â(~ F)";\
+ Text[ chinese_traditional ] = "¦A«e¸m(~F)";\
+ Text[ arabic ] = "ÅÍÖÇÑ ÃãÇãÇð";\
+ Text[ turkish ] = "~Bir öne getir";\
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_FRAME_DOWN ; \
+ HelpId = SID_FRAME_DOWN ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Weiter ~nach hinten : Weiter nach hinten */\
+ Text = "Weiter ~nach hinten" ; \
+ Text [ ENGLISH ] = "Send Backward" ; \
+ Text [ norwegian ] = "Send Bakover" ; \
+ Text [ italian ] = "Porta più i~ndietro" ; \
+ Text [ portuguese_brazilian ] = "Enviar Para o Fundo" ; \
+ Text [ portuguese ] = "Enviar para o ~fundo" ; \
+ Text [ finnish ] = "Yksi taakse" ; \
+ Text [ danish ] = "Flyt bag~ud" ; \
+ Text [ french ] = "~Vers l'arrière" ; \
+ Text [ swedish ] = "Flytta lä~ngre bak" ; \
+ Text [ dutch ] = "Naar ~achteren" ; \
+ Text [ spanish ] = "Enviar hacia a~trás" ; \
+ Text [ english_us ] = "Send Back~ward" ; \
+ Text[ chinese_simplified ] = "ÔÙºóÖÃ(~W)";\
+ Text[ russian ] = "Ïåðåìåñòèòü ~íàçàä";\
+ Text[ polish ] = "Przesuñ do ty³u";\
+ Text[ japanese ] = "”w–ʂɈړ®(~W)";\
+ Text[ greek ] = "~ÌåôáöïñÜ ðßóù";\
+ Text[ korean ] = "µÚ·Î º¸³»±â(~W)";\
+ Text[ chinese_traditional ] = "¦A«á¸m(~W)";\
+ Text[ arabic ] = "ÅÑÓÇá ÎáÝÇð";\
+ Text[ turkish ] = "Bir alta gönder";\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_FRAME_TO_BOTTOM\
+ };\
+ MenuItem { Separator = TRUE ; }; \
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_HEAVEN\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_HELL\
+ };\
+ };\
+ };\
+ Text[ chinese_simplified ] = "ÅÅÐò(~A)";\
+ Text[ russian ] = "Ð~àñïîëîæåíèå";\
+ Text[ polish ] = "~Rozmieszczenie";\
+ Text[ japanese ] = "®—ñ(~A)";\
+ Text[ greek ] = "ÄéÜô~áîç";\
+ Text[ korean ] = "Á¤·Ä(~A)";\
+ Text[ chinese_traditional ] = "±Æ§Ç(~A)";\
+ Text[ arabic ] = "ÊÑÊíÈ~";\
+ Text[ turkish ] = "Düzen";\
+ };
+
+#define MN_ANCHORSUB \
+ MenuItem\
+ {\
+ Identifier = SUBMENU_ANCHOR ; \
+ HelpID = HID_SCMENU_ANCHOR ; \
+ Text = "~Verankerung" ; \
+ Text [ ENGLISH ] = "Anchor" ; \
+ Text [ english_us ] = "An~chor" ; \
+ Text [ italian ] = "Anco~raggio" ; \
+ Text [ spanish ] = "~Anclaje" ; \
+ Text [ french ] = "~Ancrage" ; \
+ Text [ dutch ] = "~Verankering" ; \
+ SubMenu = Menu\
+ {\
+ ItemList = \
+ {\
+ MenuItem\
+ {\
+ Identifier = SID_ANCHOR_PAGE ; \
+ HelpId = SID_ANCHOR_PAGE ; \
+ Text = "An der ~Seite" ; \
+ Text [ ENGLISH ] = "To the ~page" ; \
+ Text [ dutch ] = "Aan ~pagina" ; \
+ Text [ english_us ] = "To P~age" ; \
+ Text [ italian ] = "Alla ~pagina" ; \
+ Text [ spanish ] = "A la ~página" ; \
+ Text [ french ] = "À la ~page" ; \
+ Text [ swedish ] = "Vid ~sidan" ; \
+ Text [ danish ] = "Til ~siden" ; \
+ Text [ portuguese_brazilian ] = "An der ~Seite" ; \
+ Text [ portuguese ] = "~Na página" ; \
+ Text[ chinese_simplified ] = "ÔÚÒ³ÃæÉÏ(~A)";\
+ Text[ russian ] = "~Ê ñòðàíèöå";\
+ Text[ polish ] = "~Na stronie";\
+ Text[ japanese ] = "Íß°¼Þ‚É(~A)";\
+ Text[ greek ] = "~Óôç óåëßäá";\
+ Text[ korean ] = "ÆäÀÌÁö¿¡¼­(~A)";\
+ Text[ chinese_traditional ] = "¦b­¶­±¤W(~A)";\
+ Text[ arabic ] = "Úáì ÇáÕÝÍÉ";\
+ Text[ turkish ] = "Sayfa";\
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_ANCHOR_CELL ; \
+ HelpId = SID_ANCHOR_CELL ; \
+ Text = "An der ~Zelle" ; \
+ Text [ ENGLISH ] = "To the ~cell" ; \
+ Text [ dutch ] = "Aan ~cel" ; \
+ Text [ english_us ] = "To ~Cell" ; \
+ Text [ italian ] = "Alla ~cella" ; \
+ Text [ spanish ] = "A la ~celda" ; \
+ Text [ french ] = "À la ~cellule" ; \
+ Text [ swedish ] = "Vid ~cellen" ; \
+ Text [ danish ] = "Til cellen" ; \
+ Text [ portuguese ] = "~Na célula" ; \
+ Text [ portuguese_brazilian ] = "An der ~Zelle" ; \
+ Text[ chinese_simplified ] = "ÔÚµ¥Ôª¸ñÉÏ(~C)";\
+ Text[ russian ] = "Ê ÿ÷åéêå";\
+ Text[ polish ] = "Przy komórce";\
+ Text[ japanese ] = "¾Ù‚É(~C)";\
+ Text[ greek ] = "Óôï ~êåëß";\
+ Text[ korean ] = "¼¿ ¿¡¼­(~C)";\
+ Text[ chinese_traditional ] = "¦bÀx¦s®æ¤W(~C)";\
+ Text[ arabic ] = "Úáì ÇáÎáíÉ";\
+ Text[ turkish ] = "Hücre";\
+ };\
+ };\
+ };\
+ Text [ swedish ] = "~Förankring" ; \
+ Text [ danish ] = "~Forankring" ; \
+ Text [ portuguese ] = "~Âncora" ; \
+ Text [ portuguese_brazilian ] = "~Verankerung" ; \
+ Text[ chinese_simplified ] = "Ëø¶¨(~C)";\
+ Text[ russian ] = "~Ïðèâÿçêà";\
+ Text[ polish ] = "~Zakotwiczenie";\
+ Text[ japanese ] = "±Ý¶°(~C)";\
+ Text[ greek ] = "Áãêýñ~ùóç";\
+ Text[ korean ] = "°íÁ¤(~C)";\
+ Text[ chinese_traditional ] = "Âê©w(~C)";\
+ Text[ arabic ] = "~ÅÑÓÇÁ";\
+ Text[ turkish ] = "~Sabitleyici";\
+ };
+
+#define MN_ALIGNSUB \
+ MenuItem\
+ {\
+ Identifier = SID_OBJECT_ALIGN ; \
+ HelpId = SID_OBJECT_ALIGN ; \
+ Text = "Aus~richtung" ; \
+ Text [ ENGLISH ] = "Ali~gnment" ; \
+ Text [ norwegian ] = "Ali~gnment" ; \
+ Text [ italian ] = "~Allineamento" ; \
+ Text [ portuguese_brazilian ] = "Ali~nhamento" ; \
+ Text [ portuguese ] = "Ali~nhamento" ; \
+ Text [ finnish ] = "~Tasaus" ; \
+ Text [ danish ] = "~Justering" ; \
+ Text [ french ] = "~Alignement" ; \
+ Text [ swedish ] = "Juste~ring" ; \
+ Text [ dutch ] = "~Uitlijning" ; \
+ Text [ spanish ] = "Ali~neación" ; \
+ Text [ english_us ] = "A~lignment" ; \
+ SubMenu = Menu\
+ {\
+ ItemList = \
+ {\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_LEFT\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_CENTER\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_RIGHT\
+ };\
+ MenuItem\
+ {\
+ Separator = TRUE ; \
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_UP\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_MIDDLE\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_DOWN\
+ };\
+ };\
+ };\
+ Text[ chinese_simplified ] = "¶ÔÆë(~L)";\
+ Text[ russian ] = "~Âûðàâíèâàíèå";\
+ Text[ polish ] = "~Wyrównanie";\
+ Text[ japanese ] = "”z’u(~L)";\
+ Text[ greek ] = "Ó~ôïß÷éóç";\
+ Text[ korean ] = "¸ÂÃã(~L)";\
+ Text[ chinese_traditional ] = "¹ï»ô(~L)";\
+ Text[ arabic ] = "~ãÍÇÐÇÉ";\
+ Text[ turkish ] = "Hi~zalama";\
+ };
+
+
+ //
+ // ------------------------------------------------------------------------------
+ //
+ //
+ // Objekt-Leisten
+ //
+String RID_OBJECTBAR_DRAWFORM
+{
+ Text = "Kontrollfeldleiste" ;
+ Text [ English ] = "Control bar" ;
+ Text [ portuguese ] = "Barra de controlos" ;
+ Text [ english_us ] = "Controls Toolbar" ;
+ Text [ portuguese_brazilian ] = "Kontrollfeldleiste" ;
+ Text [ swedish ] = "Kontrollfältlist" ;
+ Text [ danish ] = "Kontrolelementlinje" ;
+ Text [ italian ] = "Barra dei campi di controllo" ;
+ Text [ spanish ] = "Barra de campos de control" ;
+ Text [ french ] = "Barre de contrôles" ;
+ Text [ dutch ] = "Controlebalk" ;
+ Text[ chinese_simplified ] = "¿ØÖÆ×Ö¶ÎÀ¸";
+ Text[ russian ] = "Ïàíåëü ýëåìåíòîâ óïðàâëåíèÿ";
+ Text[ polish ] = "Pasek formantów";
+ Text[ japanese ] = "ºÝÄ۰٠°ÙÊÞ°";
+ Text[ chinese_traditional ] = "±±¨î¶µ¦C";
+ Text[ arabic ] = "ÔÑíØ ÚäÇÕÑ ÇáÊÍßã";
+ Text[ dutch ] = "Controlebalk";
+ Text[ chinese_simplified ] = "¿ØÖÆ×Ö¶ÎÀ¸";
+ Text[ greek ] = "ÃñáììÞ ðåäßùí åëÝã÷ïõ";
+ Text[ korean ] = "ÄÁÆ®·Ñ µµ±¸¸ðÀ½";
+ Text[ turkish ] = "Komut alaný çubuðu";
+};
+
+ToolBox RID_OBJECTBAR_DRAWFORM
+{
+ HelpID = RID_OBJECTBAR_DRAWFORM;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ LineSpacing = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Customize = TRUE ;
+ MenuStrings = TRUE ;
+ Hide = TRUE ;
+ Scroll = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_ANCHOR_TOGGLE ;
+ HelpId = SID_ANCHOR_TOGGLE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_TRANSFORM ;
+ HelpID = SID_ATTR_TRANSFORM ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FM_CTL_PROPERTIES ;
+ HelpID = SID_FM_CTL_PROPERTIES ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FM_PROPERTIES ;
+ HelpID = SID_FM_PROPERTIES ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FM_SHOW_FMEXPLORER ;
+ HelpID = SID_FM_SHOW_FMEXPLORER ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FM_TAB_DIALOG ;
+ HelpID = SID_FM_TAB_DIALOG ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FM_ADD_FIELD ;
+ HelpID = SID_FM_ADD_FIELD ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FM_DESIGN_MODE ;
+ HelpID = SID_FM_DESIGN_MODE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ MN_LAYER
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_GROUP ;
+ HelpID = SID_GROUP ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_UNGROUP ;
+ HelpID = SID_UNGROUP ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ENTER_GROUP ;
+ HelpID = SID_ENTER_GROUP ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_LEAVE_GROUP ;
+ HelpID = SID_LEAVE_GROUP ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_GRID_VISIBLE;
+ HelpID = SID_GRID_VISIBLE;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_GRID_USE;
+ HelpID = SID_GRID_USE;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_HELPLINES_MOVE;
+ HelpID = SID_HELPLINES_MOVE;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_OBJECT_ALIGN ;
+ HelpID = SID_OBJECT_ALIGN ;
+ DropDown = TRUE ;
+ };
+ };
+};
+ //
+ // Objekt-Menue, Draw
+ //
+
+Menu RID_OBJECTMENU_DRAWFORM
+{
+ ItemList =
+ {
+ MenuItem { ITEM_FORMAT_ATTR_TRANSFORM };
+ MenuItem { ITEM_FORM_CONTROL_PROPERTIES };
+ MenuItem { ITEM_FORM_PROPERTIES };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MN_ARRANGESUB
+ MN_ALIGNSUB
+ MN_ANCHORSUB
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ ITEM_GROUP_MENU
+ };
+};
+ //
+ // Popup-Menues ---------------------------------------------------------------------
+ //
+String RID_POPUP_DRAWFORM
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Popup-Menü für Zeichenobjekte : Popup-Men³ f³r Zeichenobjekte */
+ Text = "Popup-Menü für Formularobjekte" ;
+ Text [ ENGLISH ] = "Toolbar for form objects" ;
+ Text[ english_us ] = "Popup menu for form objects";
+ Text[ portuguese ] = "Menu instantâneo para objectos de formulário";
+ Text[ russian ] = "Âñïëûâàþùåå ìåíþ äëÿ îáúåêòîâ ôîðìóëÿðà";
+ Text[ dutch ] = "Popup-menu voor formulierobjecten";
+ Text[ french ] = "Menu Pop-Up pour les objets de formulaire";
+ Text[ spanish ] = "Menú emergente para objetos de formulario";
+ Text[ italian ] = "Menu popup degli oggetti per formulario";
+ Text[ danish ] = "Popup-menu for formularobjekter";
+ Text[ swedish ] = "Popup-meny för formulärobjekt";
+ Text[ polish ] = "Menu podrêczne dla obiektów formularzy";
+ Text[ portuguese_brazilian ] = "Toolbar for form objects";
+ Text[ japanese ] = "Ì«°ÑµÌÞ¼Þª¸Ä—pÎ߯Ìß±¯ÌßÒÆ­°";
+ Text[ chinese_simplified ] = "±íµ¥¶ÔÏóµÄµ¯³öʽ²Ëµ¥";
+ Text[ chinese_traditional ] = "ªí®æª«¥óªº§ÖÅã¥\\¯àªí";
+ Text[ arabic ] = "ÞÇÆãÉ ãäÈËÞÉ áßÇÆäÇÊ ÇáÇÓÊãÇÑÉ";
+ Text[ dutch ] = "Popup-menu voor formulierobjecten";
+ Text[ chinese_simplified ] = "±íµ¥¶ÔÏóµÄµ¯³öʽ²Ëµ¥";
+ Text[ greek ] = "Áíáäõüìåíï ìåíïý ãéá áíôéêåßìåíá öüñìáò";
+ Text[ korean ] = "¾ç½Ä°³Ã¼ Æ˾÷ ¸Þ´º";
+ Text[ turkish ] = "Form nesneleri için popup mönü";
+};
+ //
+ // Popup-Menue fuer (Uno-) Controls
+ //
+Menu RID_POPUP_DRAWFORM
+{
+ ItemList =
+ {
+ MenuItem { ITEM_FORMAT_ATTR_TRANSFORM };
+ MenuItem { ITEM_FORM_CONTROL_PROPERTIES };
+ MenuItem { ITEM_FORM_PROPERTIES };
+ MenuItem { ITEM_REPLACE_CONTROL };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MN_ARRANGESUB
+ MN_ALIGNSUB
+ MN_ANCHORSUB
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ ITEM_GROUP_MENU
+ };
+};
diff --git a/sc/source/ui/drawfunc/drtxtob.cxx b/sc/source/ui/drawfunc/drtxtob.cxx
new file mode 100644
index 000000000000..05cc2eee739e
--- /dev/null
+++ b/sc/source/ui/drawfunc/drtxtob.cxx
@@ -0,0 +1,876 @@
+/*************************************************************************
+ *
+ * $RCSfile: drtxtob.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+// T
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+
+//SV
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+#define _TABBAR_HXX
+#define _VALUESET_HXX
+#define _STDMENU_HXX
+#define _STDCTRL_HXX
+// #define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+
+
+//svdraw.hxx
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+
+#define _SDR_NOEXTDEV // ExtOutputDevice
+//#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+//#define _SDR_NOTEXTOBJ // SdrTextObj
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+//#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+//#define _SDR_NOOLE2OBJ // SdrOle2Obj
+
+
+// si.hxx:
+//#define _SI_HXX
+#define _SIDLL_HXX
+
+#define SI_NOITEMS
+//#define SI_NODRW
+#define SI_NOOTHERFORMS
+#define SI_NOSBXCONTROLS
+#define SI_NOCONTROL
+#define _VCATTR_HXX
+#define _VCONT_HXX
+#define _VCTRLS_HXX
+//#define _VCSBX_HXX
+//#define _VCDRWOBJ_HXX
+#define _VCBRW_HXX
+
+//-------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include "eetext.hxx"
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <svx/adjitem.hxx>
+#include <svx/cntritem.hxx>
+#include <svx/crsditem.hxx>
+#include <svx/editeng.hxx>
+#include <svx/escpitem.hxx>
+#include <svx/flditem.hxx>
+#include <svx/fontitem.hxx>
+#include <svx/hlnkitem.hxx>
+#include <svx/lspcitem.hxx>
+#include <svx/svdoutl.hxx>
+#include <svx/postitem.hxx>
+#include <svx/shdditem.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/textanim.hxx>
+#include <svx/udlnitem.hxx>
+#include <svx/wghtitem.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "drtxtob.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "drwlayer.hxx"
+#include "drawview.hxx"
+#include "viewutil.hxx"
+#include "scresid.hxx"
+#include "tabvwsh.hxx"
+
+#define ScDrawTextObjectBar
+#include "scslots.hxx"
+
+SFX_IMPL_INTERFACE( ScDrawTextObjectBar, SfxShell, ScResId(SCSTR_DRAWTEXTSHELL) )
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT|SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
+ ScResId(RID_TEXT_TOOLBOX) );
+ SFX_POPUPMENU_REGISTRATION( ScResId(RID_POPUP_DRAWTEXT) );
+ SFX_OBJECTMENU_REGISTRATION( SID_OBJECTMENU0, ScResId(RID_OBJECTMENU_DRAWTEXT) );
+ SFX_CHILDWINDOW_REGISTRATION( ScGetFontWorkId() );
+}
+
+TYPEINIT1( ScDrawTextObjectBar, SfxShell );
+
+
+
+// abschalten der nicht erwuenschten Acceleratoren:
+
+void ScDrawTextObjectBar::StateDisableItems( SfxItemSet &rSet )
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+
+ while (nWhich)
+ {
+ rSet.DisableItem( nWhich );
+ nWhich = aIter.NextWhich();
+ }
+}
+
+ScDrawTextObjectBar::ScDrawTextObjectBar(ScViewData* pData) :
+ SfxShell(pData->GetViewShell()),
+ pViewData(pData)
+{
+ SetPool( pViewData->GetScDrawView()->GetDefaultAttr().GetPool() );
+
+ // UndoManager wird beim Umschalten in den Edit-Modus umgesetzt...
+ SetUndoManager( pViewData->GetSfxDocShell()->GetUndoManager() );
+
+ SetHelpId( HID_SCSHELL_DRTXTOB );
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("DrawText")));
+}
+
+__EXPORT ScDrawTextObjectBar::~ScDrawTextObjectBar()
+{
+}
+
+//========================================================================
+//
+// Funktionen
+//
+//========================================================================
+
+void __EXPORT ScDrawTextObjectBar::Execute( SfxRequest &rReq )
+{
+ SdrView* pView = pViewData->GetScDrawView();
+ OutlinerView* pOutView = pView->GetTextEditOutlinerView();
+ Outliner* pOutliner = pView->GetTextEditOutliner();
+
+ if (!pOutView || !pOutliner)
+ {
+ ExecuteGlobal( rReq ); // auf ganze Objekte
+ return;
+ }
+
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ switch ( rReq.GetSlot() )
+ {
+ case SID_COPY:
+ pOutView->Copy();
+ break;
+
+ case SID_CUT:
+ pOutView->Cut();
+ break;
+
+ case SID_PASTE:
+ pOutView->PasteSpecial();
+ break;
+
+ case FID_PASTE_CONTENTS:
+ {
+ ExecutePasteContents( rReq );
+/*
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (pClipObj.Is())
+ {
+ SvPasteObjectDialog* pDlg = new SvPasteObjectDialog;
+ pDlg->Insert( FORMAT_STRING, ResId( SCSTR_CLIP_STRING ) );
+ pDlg->Insert( FORMAT_RTF, ResId( SCSTR_CLIP_RTF ) );
+ ULONG nFormat = pDlg->Execute( Application::GetAppWindow(), pClipObj );
+ if (nFormat == FORMAT_STRING)
+ pOutView->Paste();
+ else
+ pOutView->PasteSpecial();
+ delete pDlg;
+ }
+*/
+ }
+ break;
+
+ case SID_SELECTALL:
+ {
+ ULONG nCount = pOutliner->GetParagraphCount();
+ ESelection aSel( 0,0,(USHORT)nCount,0 );
+ pOutView->SetSelection( aSel );
+ }
+ break;
+
+ case SID_CHARMAP:
+ {
+ const SvxFontItem& rItem = (const SvxFontItem&)
+ pOutView->GetAttribs().Get(EE_CHAR_FONTINFO);
+
+ String aString;
+ SvxFontItem aNewItem( EE_CHAR_FONTINFO );
+
+ if (ScViewUtil::ExecuteCharMap( rItem, aNewItem, aString ))
+ {
+ SfxItemSet aSet( pOutliner->GetEmptyItemSet() );
+ aSet.Put( aNewItem );
+ // SetAttribs an der View selektiert ein Wort, wenn nichts selektiert ist
+ pOutView->GetOutliner()->QuickSetAttribs( aSet, pOutView->GetSelection() );
+ pOutView->InsertText(aString);
+ }
+
+ Invalidate( SID_ATTR_CHAR_FONT );
+ }
+ break;
+
+ case SID_HYPERLINK_SETLINK:
+ if( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs->GetItemState( SID_HYPERLINK_SETLINK, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ const SvxHyperlinkItem* pHyper = (const SvxHyperlinkItem*) pItem;
+ const String& rName = pHyper->GetName();
+ const String& rURL = pHyper->GetURL();
+ const String& rTarget = pHyper->GetTargetFrame();
+ SvxLinkInsertMode eMode = pHyper->GetInsertMode();
+
+ BOOL bDone = FALSE;
+ if ( pOutView && ( eMode == HLINK_DEFAULT || eMode == HLINK_FIELD ) )
+ {
+ const SvxFieldItem* pFieldItem = pOutView->GetFieldAtSelection();
+ if (pFieldItem)
+ {
+ const SvxFieldData* pField = pFieldItem->GetField();
+ if ( pField && pField->ISA(SvxURLField) )
+ {
+ // altes Feld selektieren
+
+ ESelection aSel = pOutView->GetSelection();
+ aSel.Adjust();
+ aSel.nEndPara = aSel.nStartPara;
+ aSel.nEndPos = aSel.nStartPos + 1;
+ pOutView->SetSelection( aSel );
+ }
+ }
+
+ // neues Feld einfuegen
+
+ SvxURLField aURLField( rURL, rName, SVXURLFORMAT_REPR );
+ aURLField.SetTargetFrame( rTarget );
+ SvxFieldItem aURLItem( aURLField );
+ pOutView->InsertField( aURLItem );
+
+ // select new field
+
+ ESelection aSel = pOutView->GetSelection();
+ if ( aSel.nStartPos == aSel.nEndPos && aSel.nStartPos > 0 )
+ {
+ // Cursor is behind the inserted field -> extend selection to the left
+
+ --aSel.nStartPos;
+ pOutView->SetSelection( aSel );
+ }
+
+ bDone = TRUE;
+ }
+
+ if (!bDone)
+ ExecuteGlobal( rReq ); // normal an der View
+
+ // InsertURL an der ViewShell schaltet bei "Text" die DrawShell ab !!!
+ }
+ }
+ break;
+ }
+}
+
+void __EXPORT ScDrawTextObjectBar::GetState( SfxItemSet& rSet )
+{
+ if (IsNoteEdit())
+ {
+ // Funktionen, die bei Notizen disabled sind:
+
+ rSet.DisableItem( SID_TEXT_STANDARD );
+ rSet.DisableItem( SID_DRAWTEXT_ATTR_DLG );
+
+ SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
+ if(!pViewFrm->HasChildWindow(SID_FONTWORK))
+ rSet.DisableItem( SID_FONTWORK );
+ }
+
+ if ( rSet.GetItemState( SID_HYPERLINK_GETLINK ) != SFX_ITEM_UNKNOWN )
+ {
+ SvxHyperlinkItem aHLinkItem;
+ SdrView* pView = pViewData->GetScDrawView();
+ OutlinerView* pOutView = pView->GetTextEditOutlinerView();
+ if ( pOutView )
+ {
+ BOOL bField = FALSE;
+ const SvxFieldItem* pFieldItem = pOutView->GetFieldAtSelection();
+ if (pFieldItem)
+ {
+ const SvxFieldData* pField = pFieldItem->GetField();
+ if ( pField && pField->ISA(SvxURLField) )
+ {
+ const SvxURLField* pURLField = (const SvxURLField*) pField;
+ aHLinkItem.SetName( pURLField->GetRepresentation() );
+ aHLinkItem.SetURL( pURLField->GetURL() );
+ aHLinkItem.SetTargetFrame( pURLField->GetTargetFrame() );
+ bField = TRUE;
+ }
+ }
+ if (!bField)
+ {
+ // use selected text as name for urls
+ String sReturn = pOutView->GetSelected();
+ sReturn.Erase(255);
+ sReturn.EraseTrailingChars();
+ aHLinkItem.SetName(sReturn);
+ }
+ }
+ rSet.Put(aHLinkItem);
+ }
+}
+
+void __EXPORT ScDrawTextObjectBar::GetClipState( SfxItemSet& rSet )
+{
+ SdrView* pView = pViewData->GetScDrawView();
+ if ( !pView->GetTextEditOutlinerView() )
+ {
+ GetGlobalClipState( rSet );
+ return;
+ }
+
+ BOOL bPaste = HasPasteContents();
+/*
+ BOOL bPaste = FALSE;
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (pClipObj.Is())
+ {
+ const SvDataTypeList& rTypeLst = pClipObj->GetTypeList();
+
+ if( rTypeLst.Get( FORMAT_STRING ) || rTypeLst.Get( FORMAT_RTF ) )
+ bPaste = TRUE;
+ }
+*/
+
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ while (nWhich)
+ {
+ switch (nWhich)
+ {
+ case SID_PASTE:
+ case FID_PASTE_CONTENTS:
+ if( !bPaste )
+ rSet.DisableItem( nWhich );
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+//========================================================================
+//
+// Attribute
+//
+//========================================================================
+
+void __EXPORT ScDrawTextObjectBar::ExecuteToggle( SfxRequest &rReq )
+{
+ // Unterstreichung
+
+ SdrView* pView = pViewData->GetScDrawView();
+
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+
+ SfxItemSet aSet( pView->GetDefaultAttr() );
+
+ SfxItemSet aViewAttr(pView->GetModel()->GetItemPool());
+ pView->GetAttributes(aViewAttr);
+
+ // Unterstreichung
+ FontUnderline eOld = ((const SvxUnderlineItem&) aViewAttr.
+ Get(EE_CHAR_UNDERLINE)).GetUnderline();
+ FontUnderline eNew = eOld;
+ switch (nSlot)
+ {
+ case SID_ULINE_VAL_NONE:
+ eNew = UNDERLINE_NONE;
+ break;
+ case SID_ULINE_VAL_SINGLE:
+ eNew = ( eOld == UNDERLINE_SINGLE ) ? UNDERLINE_NONE : UNDERLINE_SINGLE;
+ break;
+ case SID_ULINE_VAL_DOUBLE:
+ eNew = ( eOld == UNDERLINE_DOUBLE ) ? UNDERLINE_NONE : UNDERLINE_DOUBLE;
+ break;
+ case SID_ULINE_VAL_DOTTED:
+ eNew = ( eOld == UNDERLINE_DOTTED ) ? UNDERLINE_NONE : UNDERLINE_DOTTED;
+ break;
+ default:
+ break;
+ }
+ aSet.Put( SvxUnderlineItem( eNew, EE_CHAR_UNDERLINE ) );
+
+ pView->SetAttributes( aSet );
+ rReq.Done();
+ pViewData->GetScDrawView()->InvalidateDrawTextAttrs();
+}
+
+void lcl_RemoveFields( OutlinerView& rOutView )
+{
+ //! Outliner should have RemoveFields with a selection
+
+ Outliner* pOutliner = rOutView.GetOutliner();
+ if (!pOutliner) return;
+
+ ESelection aOldSel = rOutView.GetSelection();
+ ESelection aSel = aOldSel;
+ aSel.Adjust();
+ xub_StrLen nNewEnd = aSel.nEndPos;
+
+ BOOL bUpdate = pOutliner->GetUpdateMode();
+ BOOL bChanged = FALSE;
+
+ //! GetPortions and GetAttribs should be const!
+ EditEngine& rEditEng = (EditEngine&)pOutliner->GetEditEngine();
+
+ ULONG nParCount = pOutliner->GetParagraphCount();
+ for (ULONG nPar=0; nPar<nParCount; nPar++)
+ if ( nPar >= aSel.nStartPara && nPar <= aSel.nEndPara )
+ {
+ SvUShorts aPortions;
+ rEditEng.GetPortions( nPar, aPortions );
+ //! GetPortions should use xub_StrLen instead of USHORT
+
+ for ( USHORT nPos = aPortions.Count(); nPos; )
+ {
+ --nPos;
+ USHORT nEnd = aPortions.GetObject( nPos );
+ USHORT nStart = nPos ? aPortions.GetObject( nPos - 1 ) : 0;
+ // fields are single characters
+ if ( nEnd == nStart+1 &&
+ ( nPar > aSel.nStartPara || nStart >= aSel.nStartPos ) &&
+ ( nPar < aSel.nEndPara || nEnd <= aSel.nEndPos ) )
+ {
+ ESelection aFieldSel( nPar, nStart, nPar, nEnd );
+ SfxItemSet aSet = rEditEng.GetAttribs( aFieldSel );
+ if ( aSet.GetItemState( EE_FEATURE_FIELD ) == SFX_ITEM_ON )
+ {
+ if (!bChanged)
+ {
+ if (bUpdate)
+ pOutliner->SetUpdateMode( FALSE );
+ String aName = ScGlobal::GetRscString( STR_UNDO_DELETECONTENTS );
+ pOutliner->GetUndoManager().EnterListAction( aName, aName );
+ bChanged = TRUE;
+ }
+
+ String aFieldText = rEditEng.GetText( aFieldSel );
+ pOutliner->QuickInsertText( aFieldText, aFieldSel );
+ if ( nPar == aSel.nEndPara )
+ {
+ nNewEnd += aFieldText.Len();
+ --nNewEnd;
+ }
+ }
+ }
+ }
+ }
+
+ if (bUpdate && bChanged)
+ {
+ pOutliner->GetUndoManager().LeaveListAction();
+ pOutliner->SetUpdateMode( TRUE );
+ }
+
+ if ( aOldSel.IsEqual( aSel ) ) // aSel is adjusted
+ aOldSel.nEndPos = nNewEnd;
+ else
+ aOldSel.nStartPos = nNewEnd; // if aOldSel is backwards
+ rOutView.SetSelection( aOldSel );
+}
+
+void __EXPORT ScDrawTextObjectBar::ExecuteAttr( SfxRequest &rReq )
+{
+ SdrView* pView = pViewData->GetScDrawView();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ if ( !pArgs )
+ {
+ SfxItemSet aEditAttr(pView->GetModel()->GetItemPool());
+ pView->GetAttributes(aEditAttr);
+ SfxItemSet aNewAttr( *aEditAttr.GetPool(), aEditAttr.GetRanges() );
+ BOOL bDone = TRUE;
+
+ switch ( rReq.GetSlot() )
+ {
+ case SID_TEXT_STANDARD: // Harte Textattributierung loeschen
+ {
+ OutlinerView* pOutView = pView->IsTextEdit() ?
+ pView->GetTextEditOutlinerView() : NULL;
+ if ( pOutView )
+ pOutView->Paint( Rectangle() );
+
+ SfxItemSet aEmptyAttr( *aEditAttr.GetPool(), EE_ITEMS_START, EE_ITEMS_END );
+ pView->SetAttributes( aEmptyAttr, TRUE );
+
+ if ( pOutView )
+ {
+ lcl_RemoveFields( *pOutView );
+ pOutView->ShowCursor();
+ }
+
+ rReq.Done( aEmptyAttr );
+ pViewData->GetScDrawView()->InvalidateDrawTextAttrs();
+ bDone = FALSE; // bereits hier passiert
+ }
+ break;
+
+ case SID_CHAR_DLG: // Dialog-Button
+ case SID_ATTR_CHAR_FONT: // Controller nicht angezeigt
+ case SID_ATTR_CHAR_FONTHEIGHT:
+ bDone = ExecuteCharDlg( aEditAttr, aNewAttr );
+ break;
+
+ case SID_PARA_DLG:
+ bDone = ExecuteParaDlg( aEditAttr, aNewAttr );
+ break;
+
+ case SID_ATTR_CHAR_WEIGHT:
+ aNewAttr.Put( (const SvxWeightItem&)aEditAttr.Get( EE_CHAR_WEIGHT ) );
+ break;
+
+ case SID_ATTR_CHAR_POSTURE:
+ aNewAttr.Put( (const SvxPostureItem&)aEditAttr.Get( EE_CHAR_ITALIC ) );
+ break;
+
+ case SID_ATTR_CHAR_UNDERLINE:
+ aNewAttr.Put( (const SvxUnderlineItem&)aEditAttr.Get( EE_CHAR_UNDERLINE ) );
+ break;
+
+ case SID_ATTR_CHAR_CONTOUR:
+ aNewAttr.Put( (const SvxContourItem&)aEditAttr.Get( EE_CHAR_OUTLINE ) );
+ break;
+
+ case SID_ATTR_CHAR_SHADOWED:
+ aNewAttr.Put( (const SvxShadowedItem&)aEditAttr.Get( EE_CHAR_SHADOW ) );
+ break;
+
+ case SID_ATTR_CHAR_STRIKEOUT:
+ aNewAttr.Put( (const SvxCrossedOutItem&)aEditAttr.Get( EE_CHAR_STRIKEOUT ) );
+ break;
+
+ case SID_ATTR_PARA_ADJUST_LEFT:
+ aNewAttr.Put( SvxAdjustItem( SVX_ADJUST_LEFT, EE_PARA_JUST ) );
+ break;
+
+ case SID_ATTR_PARA_ADJUST_CENTER:
+ aNewAttr.Put( SvxAdjustItem( SVX_ADJUST_CENTER, EE_PARA_JUST ) );
+ break;
+
+ case SID_ATTR_PARA_ADJUST_RIGHT:
+ aNewAttr.Put( SvxAdjustItem( SVX_ADJUST_RIGHT, EE_PARA_JUST ) );
+ break;
+
+ case SID_ATTR_PARA_ADJUST_BLOCK:
+ aNewAttr.Put( SvxAdjustItem( SVX_ADJUST_BLOCK, EE_PARA_JUST ) );
+ break;
+
+ case SID_ATTR_PARA_LINESPACE_10:
+ {
+ SvxLineSpacingItem aItem( SVX_LINESPACE_ONE_LINE, EE_PARA_SBL );
+ aItem.SetPropLineSpace( 100 );
+ aNewAttr.Put( aItem );
+ }
+ break;
+
+ case SID_ATTR_PARA_LINESPACE_15:
+ {
+ SvxLineSpacingItem aItem( SVX_LINESPACE_ONE_POINT_FIVE_LINES, EE_PARA_SBL );
+ aItem.SetPropLineSpace( 150 );
+ aNewAttr.Put( aItem );
+ }
+ break;
+
+ case SID_ATTR_PARA_LINESPACE_20:
+ {
+ SvxLineSpacingItem aItem( SVX_LINESPACE_TWO_LINES, EE_PARA_SBL );
+ aItem.SetPropLineSpace( 200 );
+ aNewAttr.Put( aItem );
+ }
+ break;
+
+ case SID_SET_SUPER_SCRIPT:
+ {
+ SvxEscapementItem aItem(EE_CHAR_ESCAPEMENT);
+ SvxEscapement eEsc = (SvxEscapement) ( (const SvxEscapementItem&)
+ aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
+
+ if( eEsc == SVX_ESCAPEMENT_SUPERSCRIPT )
+ aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
+ else
+ aItem.SetEscapement( SVX_ESCAPEMENT_SUPERSCRIPT );
+ aNewAttr.Put( aItem );
+ }
+ break;
+ case SID_SET_SUB_SCRIPT:
+ {
+ SvxEscapementItem aItem(EE_CHAR_ESCAPEMENT);
+ SvxEscapement eEsc = (SvxEscapement) ( (const SvxEscapementItem&)
+ aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
+
+ if( eEsc == SVX_ESCAPEMENT_SUBSCRIPT )
+ aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
+ else
+ aItem.SetEscapement( SVX_ESCAPEMENT_SUBSCRIPT );
+ aNewAttr.Put( aItem );
+ }
+ break;
+
+ case SID_DRAWTEXT_ATTR_DLG:
+ {
+ SvxTextTabDialog* pDlg =
+ new SvxTextTabDialog( pViewData->GetDialogParent(),
+ &aEditAttr,
+ pView );
+
+ bDone = ( RET_OK == pDlg->Execute() );
+
+ if ( bDone )
+ aNewAttr.Put( *pDlg->GetOutputItemSet() );
+
+ delete pDlg;
+ }
+ break;
+ }
+
+ if ( bDone ) // wurden Attribute geaendert?
+ {
+ rReq.Done( aNewAttr );
+ pArgs = rReq.GetArgs();
+ }
+ }
+
+ if ( pArgs )
+ {
+ pView->SetAttributes( *pArgs );
+ pViewData->GetScDrawView()->InvalidateDrawTextAttrs();
+ }
+}
+
+void __EXPORT ScDrawTextObjectBar::GetAttrState( SfxItemSet& rDestSet )
+{
+ if ( IsNoteEdit() )
+ {
+ // Notizen haben keine Text-Attribute !!!
+ SfxWhichIter aIter(rDestSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ rDestSet.DisableItem( nWhich );
+ nWhich = aIter.NextWhich();
+ }
+ return;
+ }
+
+
+ SdrView* pView = pViewData->GetScDrawView();
+ SfxItemSet aAttrSet(pView->GetModel()->GetItemPool());
+ pView->GetAttributes(aAttrSet);
+
+ // direkte Attribute
+
+ rDestSet.Put( aAttrSet );
+
+ // Ausrichtung
+
+ SvxAdjust eAdj = ((const SvxAdjustItem&)aAttrSet.Get(EE_PARA_JUST)).GetAdjust();
+ switch( eAdj )
+ {
+ case SVX_ADJUST_LEFT:
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT, TRUE ) );
+ break;
+ case SVX_ADJUST_CENTER:
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER, TRUE ) );
+ break;
+ case SVX_ADJUST_RIGHT:
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT, TRUE ) );
+ break;
+ case SVX_ADJUST_BLOCK:
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK, TRUE ) );
+ break;
+ }
+
+ // Zeilenabstand
+
+ USHORT nLineSpace = (USHORT)
+ ((const SvxLineSpacingItem&)aAttrSet.
+ Get( EE_PARA_SBL )).GetPropLineSpace();
+ switch( nLineSpace )
+ {
+ case 100:
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_10, TRUE ) );
+ break;
+ case 150:
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_15, TRUE ) );
+ break;
+ case 200:
+ rDestSet.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_20, TRUE ) );
+ break;
+ }
+
+ // hoch-/tiefgestellt
+
+ SvxEscapement eEsc = (SvxEscapement) ( (const SvxEscapementItem&)
+ aAttrSet.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
+ if( eEsc == SVX_ESCAPEMENT_SUPERSCRIPT )
+ rDestSet.Put( SfxBoolItem( SID_SET_SUPER_SCRIPT, TRUE ) );
+ else if( eEsc == SVX_ESCAPEMENT_SUBSCRIPT )
+ rDestSet.Put( SfxBoolItem( SID_SET_SUB_SCRIPT, TRUE ) );
+
+ // Unterstreichung
+
+ SfxItemState eState = aAttrSet.GetItemState( EE_CHAR_UNDERLINE, TRUE );
+ if ( eState == SFX_ITEM_DONTCARE )
+ {
+ rDestSet.InvalidateItem( SID_ULINE_VAL_NONE );
+ rDestSet.InvalidateItem( SID_ULINE_VAL_SINGLE );
+ rDestSet.InvalidateItem( SID_ULINE_VAL_DOUBLE );
+ rDestSet.InvalidateItem( SID_ULINE_VAL_DOTTED );
+ }
+ else
+ {
+ FontUnderline eUnderline = ((const SvxUnderlineItem&)
+ aAttrSet.Get(EE_CHAR_UNDERLINE)).GetUnderline();
+ USHORT nId = SID_ULINE_VAL_NONE;
+ switch (eUnderline)
+ {
+ case UNDERLINE_SINGLE: nId = SID_ULINE_VAL_SINGLE; break;
+ case UNDERLINE_DOUBLE: nId = SID_ULINE_VAL_DOUBLE; break;
+ case UNDERLINE_DOTTED: nId = SID_ULINE_VAL_DOTTED; break;
+ default:
+ break;
+ }
+ rDestSet.Put( SfxBoolItem( nId, TRUE ) );
+ }
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/drtxtob1.cxx b/sc/source/ui/drawfunc/drtxtob1.cxx
new file mode 100644
index 000000000000..4f4bb209262d
--- /dev/null
+++ b/sc/source/ui/drawfunc/drtxtob1.cxx
@@ -0,0 +1,475 @@
+/*************************************************************************
+ *
+ * $RCSfile: drtxtob1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+//#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX ***
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+#define _SFXMSG_HXX
+#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+#define _MDIFRM_HXX
+//#define _SFX_IPFRM_HXX ***
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+//#define _SFXRECTITEM_HXX ***
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+//#define _SFX_WHITER_HXX ***
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+//#define _SFXRNGITEM_HXX ***
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+// svdraw.hxx
+#define _SDR_NOITEMS
+#define _SVDXOUT_HXX
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+#define _SDR_NOEXTDEV // ExtOutputDevice
+//#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+#define _SDR_NOTEXTOBJ // SdrTextObj //*
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+#define _SDR_NOOLE2OBJ // SdrOle2Obj
+
+//-------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include "eetext.hxx"
+#include <svx/brkitem.hxx>
+#include <svx/eeitem.hxx>
+#include <svx/hyznitem.hxx>
+#include <svx/orphitem.hxx>
+#include <svx/outliner.hxx>
+#include <svx/spltitem.hxx>
+#include <svx/widwitem.hxx>
+#include <so3/dtrans.hxx>
+#include <so3/pastedlg.hxx>
+#include <sot/exchange.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "sc.hrc"
+#include "drtxtob.hxx"
+#include "drawview.hxx"
+#include "viewdata.hxx"
+#include "textdlgs.hxx"
+#include "scresid.hxx"
+
+
+//------------------------------------------------------------------------
+
+BOOL ScDrawTextObjectBar::ExecuteCharDlg( const SfxItemSet& rArgs,
+ SfxItemSet& rOutSet )
+{
+ ScCharDlg* pDlg = new ScCharDlg( pViewData->GetDialogParent(),
+ &rArgs,
+ pViewData->GetSfxDocShell() );
+
+ BOOL bRet = ( pDlg->Execute() == RET_OK );
+
+ if ( bRet )
+ {
+ const SfxItemSet* pNewAttrs = pDlg->GetOutputItemSet();
+ if ( pNewAttrs )
+ rOutSet.Put( *pNewAttrs );
+ }
+ delete pDlg;
+
+ return bRet;
+}
+
+BOOL ScDrawTextObjectBar::ExecuteParaDlg( const SfxItemSet& rArgs,
+ SfxItemSet& rOutSet )
+{
+ SfxItemPool* pPool = rArgs.GetPool();
+ SfxItemSet aNewAttr( *pPool,
+ EE_ITEMS_START, EE_ITEMS_END,
+ SID_ATTR_PARA_HYPHENZONE, SID_ATTR_PARA_HYPHENZONE,
+ SID_ATTR_PARA_PAGEBREAK, SID_ATTR_PARA_PAGEBREAK,
+ SID_ATTR_PARA_SPLIT, SID_ATTR_PARA_SPLIT,
+ SID_ATTR_PARA_WIDOWS, SID_ATTR_PARA_WIDOWS,
+ SID_ATTR_PARA_ORPHANS, SID_ATTR_PARA_ORPHANS,
+ 0 );
+ aNewAttr.Put( rArgs );
+
+ // Die Werte sind erst einmal uebernommen worden, um den Dialog anzuzeigen.
+ // Muss natuerlich noch geaendert werden
+ // aNewAttr.Put( SvxParaDlgLimitsItem( 567 * 50, 5670) );
+
+ aNewAttr.Put( SvxHyphenZoneItem() );
+ aNewAttr.Put( SvxFmtBreakItem() );
+ aNewAttr.Put( SvxFmtSplitItem() );
+ aNewAttr.Put( SvxWidowsItem() );
+ aNewAttr.Put( SvxOrphansItem() );
+
+ ScParagraphDlg* pDlg = new ScParagraphDlg( pViewData->GetDialogParent(),
+ &aNewAttr );
+
+ BOOL bRet = ( pDlg->Execute() == RET_OK );
+
+ if ( bRet )
+ {
+ const SfxItemSet* pNewAttrs = pDlg->GetOutputItemSet();
+ if ( pNewAttrs )
+ rOutSet.Put( *pNewAttrs );
+ }
+ delete pDlg;
+
+ return bRet;
+}
+
+void ScDrawTextObjectBar::ExecutePasteContents( SfxRequest &rReq )
+{
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (pClipObj.Is())
+ {
+ SdrView* pView = pViewData->GetScDrawView();
+ OutlinerView* pOutView = pView->GetTextEditOutlinerView();
+ SvPasteObjectDialog* pDlg = new SvPasteObjectDialog;
+
+ pDlg->Insert( FORMAT_STRING, ScResId( SCSTR_CLIP_STRING ) );
+ pDlg->Insert( FORMAT_RTF, ScResId( SCSTR_CLIP_RTF ) );
+
+ ULONG nFormat = pDlg->Execute( pViewData->GetDialogParent(), pClipObj );
+
+ //! test if outliner view is still valid
+
+ if (nFormat == FORMAT_STRING)
+ pOutView->Paste();
+ else
+ pOutView->PasteSpecial();
+ delete pDlg;
+ }
+}
+
+BOOL ScDrawTextObjectBar::HasPasteContents()
+{
+ BOOL bResult = FALSE;
+
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (pClipObj.Is())
+ {
+ const SvDataTypeList& rTypeLst = pClipObj->GetTypeList();
+
+ if( rTypeLst.Get( FORMAT_STRING ) || rTypeLst.Get( FORMAT_RTF ) )
+ bResult = TRUE;
+ }
+
+ return bResult;
+}
+
+
+
+
+
diff --git a/sc/source/ui/drawfunc/drtxtob2.cxx b/sc/source/ui/drawfunc/drtxtob2.cxx
new file mode 100644
index 000000000000..5bacc55a6a06
--- /dev/null
+++ b/sc/source/ui/drawfunc/drtxtob2.cxx
@@ -0,0 +1,597 @@
+/*************************************************************************
+ *
+ * $RCSfile: drtxtob2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+//#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX ***
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+#define _SFXMSG_HXX
+#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+#define _MDIFRM_HXX
+//#define _SFX_IPFRM_HXX ***
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX ***
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+//#define _SFXRECTITEM_HXX ***
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+//#define _SFX_WHITER_HXX ***
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+//#define _SFXRNGITEM_HXX ***
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+// svdraw.hxx
+#define _SDR_NOITEMS
+#define _SVDXOUT_HXX
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+#define _SDR_NOEXTDEV // ExtOutputDevice
+//#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+#define _SDR_NOTEXTOBJ // SdrTextObj //*
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+#define _SDR_NOOLE2OBJ // SdrOle2Obj
+
+//-------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/drawitem.hxx>
+#include <svx/fontwork.hxx>
+#include <svx/svdocapt.hxx>
+#include <svx/xtextit.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/request.hxx>
+#include <sot/formats.hxx>
+
+#include "sc.hrc"
+#include "drtxtob.hxx"
+#include "viewdata.hxx"
+#include "drawview.hxx"
+#include "tabvwsh.hxx"
+#include "impex.hxx"
+#include "docsh.hxx"
+
+//------------------------------------------------------------------------
+
+USHORT ScGetFontWorkId()
+{
+ return SvxFontWorkChildWindow::GetChildWindowId();
+}
+
+BOOL ScDrawTextObjectBar::IsNoteEdit()
+{
+ ScTabView* pTabView = pViewData->GetView();
+ SdrView* pSdrView = pTabView->GetSdrView();
+ SdrObject* pObject = pSdrView->GetTextEditObject();
+ return ( pObject && pObject->GetLayer() == SC_LAYER_INTERN && pObject->ISA( SdrCaptionObj ) );
+}
+
+// wenn kein Text editiert wird, Funktionen wie in drawsh
+
+void __EXPORT ScDrawTextObjectBar::ExecuteGlobal( SfxRequest &rReq )
+{
+ ScTabView* pTabView = pViewData->GetView();
+ ScDrawView* pView = pTabView->GetScDrawView();
+
+ switch ( rReq.GetSlot() )
+ {
+ case SID_COPY:
+ pView->DoCopy();
+ break;
+
+ case SID_CUT:
+ pView->DoCut();
+ if (!pTabView->IsDrawSelMode())
+ pViewData->GetViewShell()->SetDrawShell( FALSE );
+ break;
+
+ case SID_PASTE:
+ case FID_PASTE_CONTENTS:
+ case SID_HYPERLINK_SETLINK:
+ pViewData->GetViewShell()->ExecuteSlot( rReq );
+ break;
+
+ case SID_SELECTALL:
+ pView->MarkAll();
+ break;
+ }
+}
+
+void ScDrawTextObjectBar::GetGlobalClipState( SfxItemSet& rSet )
+{
+ //pViewData->GetViewShell()->GetClipState( rSet );
+
+ ScTabViewShell* pTabViewShell = pViewData->GetViewShell();
+
+ BOOL bDisable = TRUE;
+
+// SID_PASTE
+// FID_PASTE_CONTENTS
+
+ if ( ScGlobal::IsClipCaptured() || ScGlobal::IsClipDraw() )
+ bDisable = FALSE;
+ else
+ {
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (pClipObj.Is())
+ {
+ const SvDataTypeList& rTypeLst = pClipObj->GetTypeList();
+
+ if( rTypeLst.Get( FORMAT_BITMAP ) ||
+ rTypeLst.Get( FORMAT_GDIMETAFILE ) ||
+ rTypeLst.Get( SOT_FORMATSTR_ID_SVXB ) ||
+ rTypeLst.Get( FORMAT_PRIVATE ) ||
+ rTypeLst.Get( FORMAT_RTF ) ||
+ rTypeLst.Get( SOT_FORMATSTR_ID_EMBED_SOURCE ) ||
+ rTypeLst.Get( SOT_FORMATSTR_ID_LINK_SOURCE ) ||
+ rTypeLst.Get( SOT_FORMATSTR_ID_EMBED_SOURCE_OLE ) ||
+ rTypeLst.Get( SOT_FORMATSTR_ID_LINK_SOURCE_OLE ) ||
+ ScImportExport::IsFormatSupported( pClipObj ) )
+ bDisable = FALSE;
+ }
+ }
+
+ // Zellschutz / Multiselektion
+
+ if (!bDisable)
+ {
+ USHORT nCol = pViewData->GetCurX();
+ USHORT nRow = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pViewData->GetDocShell()->GetDocument();
+ if (!pDoc->IsBlockEditable( nTab, nCol,nRow, nCol,nRow ))
+ bDisable = TRUE;
+ ScMarkData& rMark = pViewData->GetMarkData();
+ if (rMark.IsMultiMarked())
+ bDisable = TRUE;
+ }
+
+ if (bDisable)
+ {
+ rSet.DisableItem( SID_PASTE );
+ rSet.DisableItem( FID_PASTE_CONTENTS );
+ }
+
+ return;
+}
+
+void __EXPORT ScDrawTextObjectBar::ExecuteExtra( SfxRequest &rReq )
+{
+ ScTabView* pTabView = pViewData->GetView();
+ ScDrawView* pView = pTabView->GetScDrawView();
+
+ switch ( rReq.GetSlot() )
+ {
+ case SID_FONTWORK:
+ {
+ USHORT nId = SvxFontWorkChildWindow::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
+
+ if ( rReq.GetArgs() )
+ pViewFrm->SetChildWindow( nId,
+ ((const SfxBoolItem&)
+ (rReq.GetArgs()->Get(SID_FONTWORK))).
+ GetValue() );
+ else
+ pViewFrm->ToggleChildWindow( nId );
+
+ SFX_BINDINGS().Invalidate( SID_FONTWORK );
+ rReq.Done();
+ }
+ break;
+ }
+}
+
+void ScDrawTextObjectBar::ExecFormText(SfxRequest& rReq)
+{
+ ScTabView* pTabView = pViewData->GetView();
+ ScDrawView* pDrView = pTabView->GetScDrawView();
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+
+ if ( rMarkList.GetMarkCount() == 1 && rReq.GetArgs() )
+ {
+ const SfxItemSet& rSet = *rReq.GetArgs();
+ const SfxPoolItem* pItem;
+
+ if ( pDrView->IsTextEdit() )
+ pDrView->ScEndTextEdit();
+
+ if ( SFX_ITEM_SET ==
+ rSet.GetItemState(XATTR_FORMTXTSTDFORM, TRUE, &pItem)
+ && XFTFORM_NONE !=
+ ((const XFormTextStdFormItem*) pItem)->GetValue() )
+ {
+
+ USHORT nId = SvxFontWorkChildWindow::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
+ SvxFontWorkDialog* pDlg = (SvxFontWorkDialog*)
+ (pViewFrm->
+ GetChildWindow(nId)->GetWindow());
+
+ pDlg->CreateStdFormObj(*pDrView, *pDrView->GetPageViewPvNum(0),
+ rSet, *rMarkList.GetMark(0)->GetObj(),
+ ((const XFormTextStdFormItem*) pItem)->
+ GetValue());
+ }
+ else
+ pDrView->SetAttributes(rSet);
+ }
+}
+
+void ScDrawTextObjectBar::GetFormTextState(SfxItemSet& rSet)
+{
+ const SdrObject* pObj = NULL;
+ SvxFontWorkDialog* pDlg = NULL;
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+ USHORT nId = SvxFontWorkChildWindow::GetChildWindowId();
+
+ SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
+ if ( pViewFrm->HasChildWindow(nId) )
+ pDlg = (SvxFontWorkDialog*)(pViewFrm->GetChildWindow(nId)->GetWindow());
+
+ if ( rMarkList.GetMarkCount() == 1 )
+ pObj = rMarkList.GetMark(0)->GetObj();
+
+ if ( pObj == NULL || !pObj->ISA(SdrTextObj) ||
+ !((SdrTextObj*) pObj)->HasText() )
+ {
+ if ( pDlg )
+ pDlg->SetActive(FALSE);
+
+ rSet.DisableItem(XATTR_FORMTXTSTYLE);
+ rSet.DisableItem(XATTR_FORMTXTADJUST);
+ rSet.DisableItem(XATTR_FORMTXTDISTANCE);
+ rSet.DisableItem(XATTR_FORMTXTSTART);
+ rSet.DisableItem(XATTR_FORMTXTMIRROR);
+ rSet.DisableItem(XATTR_FORMTXTSTDFORM);
+ rSet.DisableItem(XATTR_FORMTXTHIDEFORM);
+ rSet.DisableItem(XATTR_FORMTXTOUTLINE);
+ rSet.DisableItem(XATTR_FORMTXTSHADOW);
+ rSet.DisableItem(XATTR_FORMTXTSHDWCOLOR);
+ rSet.DisableItem(XATTR_FORMTXTSHDWXVAL);
+ rSet.DisableItem(XATTR_FORMTXTSHDWYVAL);
+ }
+ else
+ {
+ if ( pDlg )
+ {
+ SfxObjectShell* pDocSh = SfxObjectShell::Current();
+
+ if ( pDocSh )
+ {
+ const SfxPoolItem* pItem = pDocSh->GetItem( ITEMID_COLOR_TABLE );
+ XColorTable* pColorTable = NULL;
+
+ if ( pItem )
+ pColorTable = ((SvxColorTableItem*)pItem)->GetColorTable();
+
+ pDlg->SetActive();
+
+ if ( pColorTable )
+ pDlg->SetColorTable( pColorTable );
+ else
+ { DBG_ERROR( "ColorList not found :-/" ); }
+ }
+ }
+ SfxItemSet aViewAttr(pDrView->GetModel()->GetItemPool());
+ pDrView->GetAttributes(aViewAttr);
+ rSet.Set(aViewAttr);
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/drawfunc/fuconarc.cxx b/sc/source/ui/drawfunc/fuconarc.cxx
new file mode 100644
index 000000000000..723ab8986b61
--- /dev/null
+++ b/sc/source/ui/drawfunc/fuconarc.cxx
@@ -0,0 +1,411 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuconarc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+#define _TABBAR_HXX
+#define _VALUESET_HXX
+#define _STDMENU_HXX
+#define _STDCTRL_HXX
+#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+
+#define _BASE_DLGS_HXX
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+//#define _FILDLG_HXX
+#define _FILTER_HXX
+#define _FONTDLG_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXH
+#define _XOUTX_HXX
+//#define _XPOOL_HXX
+#define _XTABLE_HXX
+
+
+//#define _SVDLAYER_HXX
+//#define _SVDATTR_HXX
+#define _SVDIO_HXX
+#define _SVBOXITM_HXX
+#define _SVDEC_HXX
+#define _SVDXOUT_HXX
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+#define _SDR_NOUNDO
+#define _SDR_NOXOUTDEV
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+#define _SVTABBX_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+//------------------------------------------------------------------------
+
+#ifndef _SVDOBJ_HXX
+#include <svx/svdobj.hxx>
+#endif
+
+#include <svx/svdview.hxx>
+
+#include "fuconarc.hxx"
+#include "sc.hrc"
+#include "tabvwsh.hxx"
+
+
+//------------------------------------------------------------------------
+
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+FuConstArc::FuConstArc( ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq )
+ : FuConstruct( pViewSh, pWin, pView, pDoc, rReq )
+{
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+FuConstArc::~FuConstArc()
+{
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstArc::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ BOOL bReturn = FuConstruct::MouseButtonDown( rMEvt );
+
+ if ( rMEvt.IsLeft() && !pView->IsAction() )
+ {
+ Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+ pWindow->CaptureMouse();
+ pView->BegCreateObj( aPnt );
+ bReturn = TRUE;
+ }
+ return bReturn;
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstArc::MouseMove( const MouseEvent& rMEvt )
+{
+ return FuConstruct::MouseMove(rMEvt);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstArc::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ BOOL bReturn = FALSE;
+
+ if ( pView->IsCreateObj() && rMEvt.IsLeft() )
+ {
+ // Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+ pView->EndCreateObj( SDRCREATE_NEXTPOINT );
+ bReturn = TRUE;
+ }
+/*
+ else if ( pView->IsCreateObj() && rMEvt.IsRight() )
+ {
+ // Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+ pView->EndCreateObj( SDRCREATE_FORCEEND );
+ bReturn = TRUE;
+ }
+*/
+ return (FuConstruct::MouseButtonUp(rMEvt) || bReturn);
+}
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstArc::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FuConstruct::KeyInput(rKEvt);
+ return(bReturn);
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void FuConstArc::Activate()
+{
+ SdrObjKind aObjKind;
+
+ switch (aSfxRequest.GetSlot() )
+ {
+ case SID_DRAW_ARC:
+ aNewPointer = Pointer( POINTER_DRAW_ARC );
+ aObjKind = OBJ_CARC;
+ break;
+
+ case SID_DRAW_PIE:
+ aNewPointer = Pointer( POINTER_DRAW_PIE );
+ aObjKind = OBJ_SECT;
+ break;
+
+ case SID_DRAW_CIRCLECUT:
+ aNewPointer = Pointer( POINTER_DRAW_CIRCLECUT );
+ aObjKind = OBJ_CCUT;
+ break;
+
+ default:
+ aNewPointer = Pointer( POINTER_CROSS );
+ aObjKind = OBJ_CARC;
+ break;
+ }
+
+ pView->SetCurrentObj( aObjKind );
+
+ aOldPointer = pWindow->GetPointer();
+ pViewShell->SetActivePointer( aNewPointer );
+
+ FuDraw::Activate();
+}
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+void FuConstArc::Deactivate()
+{
+ FuDraw::Deactivate();
+ pViewShell->SetActivePointer( aOldPointer );
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/fuconpol.cxx b/sc/source/ui/drawfunc/fuconpol.cxx
new file mode 100644
index 000000000000..d3a3685dca05
--- /dev/null
+++ b/sc/source/ui/drawfunc/fuconpol.cxx
@@ -0,0 +1,384 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuconpol.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+//------------------------------------------------------------------------
+
+#include <svx/svdview.hxx>
+#ifndef _SVDOBJ_HXX
+#include <svx/svdobj.hxx>
+#endif
+
+#include "fuconpol.hxx"
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+
+// Pixelabstand zum Schliessen von Freihand-Zeichnungen
+
+#ifndef CLOSE_PIXDIST
+#define CLOSE_PIXDIST 5
+#endif
+
+//------------------------------------------------------------------------
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+FuConstPolygon::FuConstPolygon(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq)
+ : FuConstruct(pViewSh, pWin, pView, pDoc, rReq)
+{
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+FuConstPolygon::~FuConstPolygon()
+{
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstPolygon::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FuConstruct::MouseButtonDown(rMEvt);
+
+ SdrViewEvent aVEvt;
+ SdrHitKind eHit = pView->PickAnything(rMEvt, SDRMOUSEBUTTONDOWN, aVEvt);
+ if (aVEvt.eEvent == SDREVENT_BEGTEXTEDIT)
+ {
+ // Texteingabe hier nicht zulassen
+ aVEvt.eEvent = SDREVENT_BEGDRAGOBJ;
+ pView->EnableExtendedMouseEventDispatcher(FALSE);
+ }
+ else
+ {
+ pView->EnableExtendedMouseEventDispatcher(TRUE);
+ }
+
+ if ( pView->MouseButtonDown(rMEvt, pWindow) )
+ bReturn = TRUE;
+
+ return bReturn;
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstPolygon::MouseMove(const MouseEvent& rMEvt)
+{
+ pView->MouseMove(rMEvt, pWindow);
+ BOOL bReturn = FuConstruct::MouseMove(rMEvt);
+ return bReturn;
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstPolygon::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+ BOOL bSimple = FALSE;
+
+ SdrViewEvent aVEvt;
+ SdrHitKind eHit = pView->PickAnything(rMEvt, SDRMOUSEBUTTONUP, aVEvt);
+
+ pView->MouseButtonUp(rMEvt, pWindow);
+
+ if (aVEvt.eEvent == SDREVENT_ENDCREATE)
+ {
+ bReturn = TRUE;
+ bSimple = TRUE; // Doppelklick nicht weiterreichen
+ }
+
+ BOOL bParent;
+ if (bSimple)
+ bParent = FuConstruct::SimpleMouseButtonUp(rMEvt);
+ else
+ bParent = FuConstruct::MouseButtonUp(rMEvt);
+
+ return (bParent || bReturn);
+}
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstPolygon::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FuConstruct::KeyInput(rKEvt);
+
+ return(bReturn);
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void FuConstPolygon::Activate()
+{
+ pView->EnableExtendedMouseEventDispatcher(TRUE);
+
+ SdrObjKind eKind;
+
+ switch (GetSlotID())
+ {
+ case SID_DRAW_POLYGON_NOFILL:
+ case SID_DRAW_XPOLYGON_NOFILL:
+ {
+ eKind = OBJ_PLIN;
+ }
+ break;
+
+ case SID_DRAW_POLYGON:
+ case SID_DRAW_XPOLYGON:
+ {
+ eKind = OBJ_POLY;
+ }
+ break;
+
+ case SID_DRAW_BEZIER_NOFILL:
+ {
+ eKind = OBJ_PATHLINE;
+ }
+ break;
+
+ case SID_DRAW_BEZIER_FILL:
+ {
+ eKind = OBJ_PATHFILL;
+ }
+ break;
+
+ case SID_DRAW_FREELINE_NOFILL:
+ {
+ eKind = OBJ_FREELINE;
+ }
+ break;
+
+ case SID_DRAW_FREELINE:
+ {
+ eKind = OBJ_FREEFILL;
+ }
+ break;
+
+ default:
+ {
+ eKind = OBJ_PATHLINE;
+ }
+ break;
+ }
+
+ pView->SetCurrentObj(eKind);
+
+ pView->SetEditMode(SDREDITMODE_CREATE);
+
+ FuConstruct::Activate();
+
+ aNewPointer = Pointer( POINTER_DRAW_POLYGON );
+ aOldPointer = pWindow->GetPointer();
+ pViewShell->SetActivePointer( aNewPointer );
+}
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+void FuConstPolygon::Deactivate()
+{
+ pView->SetEditMode(SDREDITMODE_EDIT);
+
+ pView->EnableExtendedMouseEventDispatcher(FALSE);
+
+ FuConstruct::Deactivate();
+
+ pViewShell->SetActivePointer( aOldPointer );
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/fuconrec.cxx b/sc/source/ui/drawfunc/fuconrec.cxx
new file mode 100644
index 000000000000..f73015301af8
--- /dev/null
+++ b/sc/source/ui/drawfunc/fuconrec.cxx
@@ -0,0 +1,415 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuconrec.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+#define _TABBAR_HXX
+#define _VALUESET_HXX
+#define _STDMENU_HXX
+#define _STDCTRL_HXX
+#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+
+#define _BASE_DLGS_HXX
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+//#define _FILDLG_HXX ***
+#define _FILTER_HXX
+#define _FONTDLG_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXH
+#define _XOUTX_HXX
+//#define _XPOOL_HXX
+#define _XTABLE_HXX
+
+
+//#define _SVDLAYER_HXX
+//#define _SVDATTR_HXX
+#define _SVDIO_HXX
+#define _SVBOXITM_HXX
+#define _SVDEC_HXX
+#define _SVDXOUT_HXX
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+#define _SDR_NOUNDO
+#define _SDR_NOXOUTDEV
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS ***
+
+#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+#define _SVTABBX_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+//------------------------------------------------------------------------
+
+#include <svx/svdview.hxx>
+#include <svx/svdobj.hxx>
+
+#include "fuconrec.hxx"
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+
+
+//------------------------------------------------------------------------
+
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+FuConstRectangle::FuConstRectangle(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq)
+ : FuConstruct(pViewSh, pWin, pView, pDoc, rReq)
+{
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+FuConstRectangle::~FuConstRectangle()
+{
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstRectangle::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FuConstruct::MouseButtonDown(rMEvt);
+
+ if ( rMEvt.IsLeft() && !pView->IsAction() )
+ {
+ Point aPos( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+
+ pWindow->CaptureMouse();
+
+ if ( pView->GetCurrentObjIdentifier() == OBJ_CAPTION )
+ {
+ Size aCaptionSize ( 2268, 1134 ); // 4x2cm
+
+ bReturn = pView->BegCreateCaptionObj( aPos, aCaptionSize );
+
+ // wie stellt man den Font ein, mit dem geschrieben wird
+ }
+ else
+ bReturn = pView->BegCreateObj(aPos);
+ }
+ return bReturn;
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstRectangle::MouseMove(const MouseEvent& rMEvt)
+{
+ return FuConstruct::MouseMove(rMEvt);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstRectangle::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+
+ if ( pView->IsCreateObj() && rMEvt.IsLeft() )
+ {
+ Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+ pView->EndCreateObj(SDRCREATE_FORCEEND);
+ bReturn = TRUE;
+ }
+ return (FuConstruct::MouseButtonUp(rMEvt) || bReturn);
+}
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstRectangle::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FuConstruct::KeyInput(rKEvt);
+ return(bReturn);
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void FuConstRectangle::Activate()
+{
+ SdrObjKind aObjKind;
+
+ switch (aSfxRequest.GetSlot() )
+ {
+ case SID_DRAW_LINE:
+ aNewPointer = Pointer( POINTER_DRAW_LINE );
+ aObjKind = OBJ_LINE;
+ break;
+
+ case SID_DRAW_RECT:
+ aNewPointer = Pointer( POINTER_DRAW_RECT );
+ aObjKind = OBJ_RECT;
+ break;
+
+ case SID_DRAW_ELLIPSE:
+ aNewPointer = Pointer( POINTER_DRAW_ELLIPSE );
+ aObjKind = OBJ_CIRC;
+ break;
+
+ case SID_DRAW_CAPTION:
+ aNewPointer = Pointer( POINTER_DRAW_CAPTION );
+ aObjKind = OBJ_CAPTION;
+ break;
+
+ default:
+ aNewPointer = Pointer( POINTER_CROSS );
+ aObjKind = OBJ_RECT;
+ break;
+ }
+
+ pView->SetCurrentObj(aObjKind);
+
+ aOldPointer = pWindow->GetPointer();
+ pViewShell->SetActivePointer( aNewPointer );
+
+ FuConstruct::Activate();
+}
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+void FuConstRectangle::Deactivate()
+{
+ FuConstruct::Deactivate();
+ pViewShell->SetActivePointer( aOldPointer );
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/fuconstr.cxx b/sc/source/ui/drawfunc/fuconstr.cxx
new file mode 100644
index 000000000000..5a92e8b22864
--- /dev/null
+++ b/sc/source/ui/drawfunc/fuconstr.cxx
@@ -0,0 +1,518 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuconstr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+
+//SV
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX ***
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX ***
+//#define _SVTREEBOX_HXX ***
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+//#define _SFXDOCINF_HXX ***
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX ***
+//#define _SFXOBJFACE_HXX ***
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//------------------------------------------------------------------------
+
+#include <svx/outliner.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdouno.hxx>
+#include <svx/svdview.hxx>
+#include <sfx2/dispatch.hxx>
+
+#include "fuconstr.hxx"
+#include "fudraw.hxx"
+#include "tabvwsh.hxx"
+#include "futext.hxx"
+#include "sc.hrc"
+
+// Maximal erlaubte Mausbewegung um noch Drag&Drop zu starten
+//! fusel,fuconstr,futext - zusammenfassen!
+#define SC_MAXDRAGMOVE 3
+
+//------------------------------------------------------------------------
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+FuConstruct::FuConstruct(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq) :
+ FuDraw(pViewSh, pWin, pView, pDoc, rReq)
+{
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+FuConstruct::~FuConstruct()
+{
+}
+
+BYTE FuConstruct::Command(const CommandEvent& rCEvt)
+{
+ // special code for non-VCL OS2/UNX removed
+
+ return FuDraw::Command( rCEvt );
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstruct::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FuDraw::MouseButtonDown(rMEvt);
+
+ if ( pView->IsAction() )
+ {
+ if ( rMEvt.IsRight() )
+ pView->BckAction();
+ return TRUE;
+ }
+
+ aDragTimer.Start();
+
+ aMDPos = pWindow->PixelToLogic( rMEvt.GetPosPixel() );
+
+ if ( rMEvt.IsLeft() )
+ {
+ pWindow->CaptureMouse();
+
+ SdrHdl* pHdl = pView->HitHandle(aMDPos, *pWindow);
+
+ if ( pHdl != NULL || pView->IsMarkedHit(aMDPos) )
+ {
+ pView->BegDragObj(aMDPos, (OutputDevice*) NULL, pHdl, 1);
+ bReturn = TRUE;
+ }
+ else if ( pView->HasMarkedObj() )
+ {
+ pView->UnmarkAll();
+ bReturn = TRUE;
+ }
+ }
+
+ bIsInDragMode = FALSE;
+
+ return bReturn;
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstruct::MouseMove(const MouseEvent& rMEvt)
+{
+ FuDraw::MouseMove(rMEvt);
+
+ if (aDragTimer.IsActive() )
+ {
+ Point aOldPixel = pWindow->LogicToPixel( aMDPos );
+ Point aNewPixel = rMEvt.GetPosPixel();
+ if ( Abs( aOldPixel.X() - aNewPixel.X() ) > SC_MAXDRAGMOVE ||
+ Abs( aOldPixel.Y() - aNewPixel.Y() ) > SC_MAXDRAGMOVE )
+ aDragTimer.Stop();
+ }
+
+ Point aPix(rMEvt.GetPosPixel());
+ Point aPnt( pWindow->PixelToLogic(aPix) );
+
+ if ( pView->IsAction() )
+ {
+ ForceScroll(aPix);
+ pView->MovAction(aPnt);
+ }
+ else
+ {
+ SdrHdl* pHdl=pView->HitHandle(aPnt, *pWindow);
+
+ if ( pHdl != NULL )
+ {
+ pViewShell->SetActivePointer(pHdl->GetPointer());
+ }
+ else if ( pView->IsMarkedHit(aPnt) )
+ {
+ pViewShell->SetActivePointer(Pointer(POINTER_MOVE));
+ }
+ else
+ {
+ pViewShell->SetActivePointer( aNewPointer );
+ }
+ }
+ return TRUE;
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstruct::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = SimpleMouseButtonUp( rMEvt );
+
+ // Doppelklick auf Textobjekt? (->fusel)
+
+ USHORT nClicks = rMEvt.GetClicks();
+ if ( nClicks == 2 && rMEvt.IsLeft() )
+ {
+ if ( pView->HasMarkedObj() )
+ {
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+ if (rMarkList.GetMarkCount() == 1)
+ {
+ SdrMark* pMark = rMarkList.GetMark(0);
+ SdrObject* pObj = pMark->GetObj();
+
+ // #49458# bei Uno-Controls nicht in Textmodus
+ if ( pObj->ISA(SdrTextObj) && !pObj->ISA(SdrUnoObj) )
+ {
+ SFX_DISPATCHER().Execute(SID_DRAW_TEXT, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+
+ // jetzt den erzeugten FuText holen und in den EditModus setzen
+ FuPoor* pPoor = pViewShell->GetViewData()->GetView()->GetDrawFuncPtr();
+ if ( pPoor && pPoor->GetSlotID() == SID_DRAW_TEXT ) // hat keine RTTI
+ {
+ FuText* pText = (FuText*)pPoor;
+ Point aMousePixel = rMEvt.GetPosPixel();
+ pText->SetInEditMode( pObj, &aMousePixel );
+ }
+ bReturn = TRUE;
+ }
+ }
+ }
+ }
+
+ FuDraw::MouseButtonUp(rMEvt);
+
+ return bReturn;
+}
+
+// SimpleMouseButtonUp - ohne Test auf Doppelklick
+
+BOOL FuConstruct::SimpleMouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = TRUE;
+
+ if (aDragTimer.IsActive() )
+ {
+ aDragTimer.Stop();
+ }
+
+ Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+
+ if ( pView->IsDragObj() )
+ pView->EndDragObj( rMEvt.IsMod1() );
+
+ else if ( pView->IsMarkObj() )
+ pView->EndMarkObj();
+
+ else bReturn = FALSE;
+
+ if ( !pView->IsAction() )
+ {
+ pWindow->ReleaseMouse();
+
+ if ( !pView->HasMarkedObj() && rMEvt.GetClicks() < 2 )
+ {
+ pView->MarkObj(aPnt, -2, FALSE, rMEvt.IsMod1());
+
+ if ( pView->HasMarkedObj() )
+ SFX_DISPATCHER().Execute(SID_OBJECT_SELECT, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+ else
+ SFX_DISPATCHER().Execute(aSfxRequest.GetSlot(), SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+ }
+ }
+
+ return bReturn;
+}
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstruct::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FALSE;
+
+ switch ( rKEvt.GetKeyCode().GetCode() )
+ {
+ case KEY_ESCAPE:
+ if ( pView->IsAction() )
+ {
+ pView->BrkAction();
+ pWindow->ReleaseMouse();
+ bReturn = TRUE;
+ }
+ else // Zeichenmodus beenden
+ {
+ SFX_DISPATCHER().Execute(aSfxRequest.GetSlot(), SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+ }
+ break;
+
+ case KEY_DELETE:
+ pView->DeleteMarked();
+ bReturn = TRUE;
+ break;
+ }
+
+ if ( !bReturn )
+ {
+ bReturn = FuDraw::KeyInput(rKEvt);
+ }
+
+ return(bReturn);
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void FuConstruct::Activate()
+{
+ FuDraw::Activate();
+}
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+void FuConstruct::Deactivate()
+{
+ FuDraw::Deactivate();
+}
+
+
+
+
diff --git a/sc/source/ui/drawfunc/fuconuno.cxx b/sc/source/ui/drawfunc/fuconuno.cxx
new file mode 100644
index 000000000000..85e9caa37105
--- /dev/null
+++ b/sc/source/ui/drawfunc/fuconuno.cxx
@@ -0,0 +1,489 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuconuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX ***
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX ***
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+//******************************+++
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX ***
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX ***
+//#define _SVTREEBOX_HXX ***
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+
+//************************
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+#define _SFX_BINDINGS_HXX //???
+#define _SFXDISPATCH_HXX //???
+//#define _SFXMSG_HXX ***
+//#define _SFXOBJFACE_HXX ***
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX ***
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX ***
+//#define _SFXDOCTDLG_HXX ***
+//#define _SFX_TEMPLDLG_HXX ***
+//#define _SFXNEW_HXX ***
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX ***
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+#define _SFXSTYLE_HXX //???
+
+
+
+//************************
+
+
+
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX ***
+//#define _LINK_HXX ***
+//#define _ERRCODE_HXX ***
+//#define _GEN_HXX ***
+//#define _FRACT_HXX ***
+//#define _STRING_HXX ***
+//#define _MTF_HXX ***
+//#define _CONTNR_HXX ***
+//#define _LIST_HXX ***
+//#define _TABLE_HXX ***
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX ***
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX ***
+//#define _DEBUG_HXX ***
+//#define _DATE_HXX ***
+//#define _TIME_HXX ***
+//#define _DATETIME_HXX ***
+//#define _INTN_HXX ***
+//#define _WLDCRD_HXX ***
+//#define _FSYS_HXX ***
+//#define _STREAM_HXX ***
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+#ifdef WIN
+#define _SVDOUKWN_HXX
+#define _SVDORECT_HXX
+#define _SVDCAPT_HXX
+#define _SVDOCIRC_HXX
+#define _SVDOEDGE_HXX
+#define _SVDOGRAF_HXX
+#define _SVDRAW_HXX
+#define _SVDOGRP_HXX
+#define _SVDOMEAS_HXX
+#define _SVDOOLE2_HXX
+#define _SVDOPAGE_HXX
+#define _SVDOPATH_HXX
+
+#endif
+
+#define SI_DLL_HXX
+#define SIDLL_HXX
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define SI_NOOTHERFORMS
+#define SI_NOSBXCONTROLS
+#define SINOSBXCONTROLS
+#define SI_NOCONTROL
+
+//------------------------------------------------------------------------
+
+#include <svx/svdview.hxx>
+//#include <svx/vcsbxdef.hxx>
+
+#include "fuconuno.hxx"
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+
+//------------------------------------------------------------------------
+
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+FuConstUnoControl::FuConstUnoControl(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq)
+ : FuConstruct(pViewSh, pWin, pView, pDoc, rReq)
+{
+ SFX_REQUEST_ARG( rReq, pInventorItem, SfxUInt32Item, SID_FM_CONTROL_INVENTOR, FALSE );
+ SFX_REQUEST_ARG( rReq, pIdentifierItem, SfxUInt16Item, SID_FM_CONTROL_IDENTIFIER, FALSE );
+ if( pInventorItem )
+ nInventor = pInventorItem->GetValue();
+ if( pIdentifierItem )
+ nIdentifier = pIdentifierItem->GetValue();
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+FuConstUnoControl::~FuConstUnoControl()
+{
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstUnoControl::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FuConstruct::MouseButtonDown(rMEvt);
+
+ if ( rMEvt.IsLeft() && !pView->IsAction() )
+ {
+ Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+ pWindow->CaptureMouse();
+ pView->BegCreateObj(aPnt);
+ bReturn = TRUE;
+ }
+ return bReturn;
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstUnoControl::MouseMove(const MouseEvent& rMEvt)
+{
+ return FuConstruct::MouseMove(rMEvt);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstUnoControl::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+
+ if ( pView->IsCreateObj() && rMEvt.IsLeft() )
+ {
+ Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+ pView->EndCreateObj(SDRCREATE_FORCEEND);
+ bReturn = TRUE;
+ }
+ return (FuConstruct::MouseButtonUp(rMEvt) || bReturn);
+}
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuConstUnoControl::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FuConstruct::KeyInput(rKEvt);
+ return(bReturn);
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void FuConstUnoControl::Activate()
+{
+ pView->SetCurrentObj( nIdentifier, nInventor );
+
+ aNewPointer = Pointer( POINTER_DRAW_RECT );
+ aOldPointer = pWindow->GetPointer();
+ pViewShell->SetActivePointer( aNewPointer );
+
+ SdrLayer* pLayer = pView->GetModel()->GetLayerAdmin().GetLayerPerID(SC_LAYER_CONTROLS);
+ if (pLayer)
+ pView->SetActiveLayer( pLayer->GetName() );
+
+ FuConstruct::Activate();
+}
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+void FuConstUnoControl::Deactivate()
+{
+ FuConstruct::Deactivate();
+
+ SdrLayer* pLayer = pView->GetModel()->GetLayerAdmin().GetLayerPerID(SC_LAYER_FRONT);
+ if (pLayer)
+ pView->SetActiveLayer( pLayer->GetName() );
+
+ pViewShell->SetActivePointer( aOldPointer );
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/fudraw.cxx b/sc/source/ui/drawfunc/fudraw.cxx
new file mode 100644
index 000000000000..46c6d5f3f35c
--- /dev/null
+++ b/sc/source/ui/drawfunc/fudraw.cxx
@@ -0,0 +1,403 @@
+/*************************************************************************
+ *
+ * $RCSfile: fudraw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <svx/svdobj.hxx>
+#include <svx/svdview.hxx>
+#include <sfx2/dispatch.hxx>
+
+#include "sc.hrc"
+#include "fudraw.hxx"
+#include "tabvwsh.hxx"
+#include "drwlayer.hxx"
+#include "scresid.hxx"
+
+
+/*************************************************************************
+|*
+|* Basisklasse fuer alle Drawmodul-spezifischen Funktionen
+|*
+\************************************************************************/
+
+FuDraw::FuDraw(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq) :
+ FuPoor (pViewSh, pWin, pView, pDoc, rReq),
+ aNewPointer ( POINTER_ARROW ),
+ aOldPointer ( POINTER_ARROW )
+{
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+FuDraw::~FuDraw()
+{
+}
+
+/*************************************************************************
+|*
+|* Modifier-Tasten auswerten
+|*
+\************************************************************************/
+
+void FuDraw::DoModifiers(const MouseEvent& rMEvt)
+{
+ // Shift = Ortho und AngleSnap
+ // Control = Snap (Toggle)
+ // Alt = zentrisch
+
+ BOOL bShift = rMEvt.IsShift();
+ BOOL bCtrl = rMEvt.IsMod1();
+ BOOL bAlt = rMEvt.IsMod2();
+
+ ScViewData* pViewData = pViewShell->GetViewData();
+ const ScViewOptions& rOpt = pViewData->GetOptions();
+ const ScGridOptions& rGrid = rOpt.GetGridOptions();
+ BOOL bGridOpt = rGrid.GetUseGridSnap();
+
+ BOOL bOrtho = bShift;
+ BOOL bAngleSnap = bShift;
+ BOOL bGridSnap = ( bGridOpt != bCtrl ); // andere Snap's nicht unterstuetzt
+ BOOL bCenter = bAlt;
+
+ if (pView->IsOrtho() != bOrtho)
+ pView->SetOrtho(bOrtho);
+ if (pView->IsAngleSnapEnabled() != bAngleSnap)
+ pView->SetAngleSnapEnabled(bAngleSnap);
+
+/* Control fuer Snap beisst sich beim Verschieben mit "kopieren" !!!
+
+ if (pView->IsGridSnap() != bGridSnap)
+ pView->SetGridSnap(bGridSnap);
+ if (pView->IsSnapEnabled() != bGridSnap)
+ pView->SetSnapEnabled(bGridSnap);
+*/
+ if (pView->IsCreate1stPointAsCenter() != bCenter)
+ pView->SetCreate1stPointAsCenter(bCenter);
+ if (pView->IsResizeAtCenter() != bCenter)
+ pView->SetResizeAtCenter(bCenter);
+}
+
+void FuDraw::ResetModifiers()
+{
+ ScViewData* pViewData = pViewShell->GetViewData();
+ const ScViewOptions& rOpt = pViewData->GetOptions();
+ const ScGridOptions& rGrid = rOpt.GetGridOptions();
+ BOOL bGridOpt = rGrid.GetUseGridSnap();
+
+ if (pView->IsOrtho())
+ pView->SetOrtho(FALSE);
+ if (pView->IsAngleSnapEnabled())
+ pView->SetAngleSnapEnabled(FALSE);
+
+ if (pView->IsGridSnap() != bGridOpt)
+ pView->SetGridSnap(bGridOpt);
+ if (pView->IsSnapEnabled() != bGridOpt)
+ pView->SetSnapEnabled(bGridOpt);
+
+ if (pView->IsCreate1stPointAsCenter())
+ pView->SetCreate1stPointAsCenter(FALSE);
+ if (pView->IsResizeAtCenter())
+ pView->SetResizeAtCenter(FALSE);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuDraw::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ DoModifiers( rMEvt );
+ return FALSE;
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuDraw::MouseMove(const MouseEvent& rMEvt)
+{
+ DoModifiers( rMEvt );
+ return FALSE;
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuDraw::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ ResetModifiers();
+ return FALSE;
+}
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuDraw::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FALSE;
+
+ switch ( rKEvt.GetKeyCode().GetCode() )
+ {
+ case KEY_ESCAPE:
+
+ /* 18.12.95: TextShell beibehalten nicht mehr gewuenscht...
+ *
+ * if ( pView->IsAction() )
+ * {
+ * pView->BrkAction();
+ * pWindow->ReleaseMouse();
+ * bReturn = TRUE;
+ * }
+ * else if ( pView->IsTextEdit() )
+ * {
+ * pView->EndTextEdit();
+ * pView->SetCreateMode();
+ * pViewShell->GetScDrawView()->InvalidateDrawTextAttrs();
+ * bReturn = TRUE;
+ * }
+ * else
+ */
+
+ if ( pViewShell->IsDrawTextShell() || aSfxRequest.GetSlot() == SID_DRAW_NOTEEDIT )
+ {
+ // in normale Draw-Shell, wenn Objekt selektiert, sonst Zeichnen aus
+ SFX_DISPATCHER().Execute(aSfxRequest.GetSlot(), SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+ bReturn = TRUE;
+ }
+ else if ( pViewShell->IsDrawSelMode() )
+ {
+ pView->UnmarkAll();
+ SFX_DISPATCHER().Execute(SID_OBJECT_SELECT, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+ bReturn = TRUE;
+ }
+ else if ( pView->HasMarkedObj() )
+ {
+ pView->UnmarkAll();
+ // Beim Bezier-Editieren ist jetzt wieder das Objekt selektiert
+ if (!pView->HasMarkedObj())
+ pViewShell->SetDrawShell( FALSE );
+ bReturn = TRUE;
+ }
+ break;
+
+ case KEY_DELETE: //! ueber Accelerator
+ pView->DeleteMarked();
+ bReturn = TRUE;
+ break;
+ }
+
+ if (!bReturn)
+ {
+ bReturn = FuPoor::KeyInput(rKEvt);
+ }
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* Vor dem Scrollen Selektionsdarstellung ausblenden
+|*
+\************************************************************************/
+
+void FuDraw::ScrollStart()
+{
+// HideShownXor in Gridwin
+}
+
+/*************************************************************************
+|*
+|* Nach dem Scrollen Selektionsdarstellung wieder anzeigen
+|*
+\************************************************************************/
+
+void FuDraw::ScrollEnd()
+{
+// ShowShownXor in Gridwin
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void FuDraw::Activate()
+{
+ FuPoor::Activate();
+}
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+void FuDraw::Deactivate()
+{
+ FuPoor::Deactivate();
+}
+
+/*************************************************************************
+|*
+|* Maus-Pointer umschalten
+|*
+\************************************************************************/
+
+BOOL lcl_UrlHit( SdrView* pView, const Point& rPosPixel, Window* pWindow )
+{
+ SdrViewEvent aVEvt;
+ MouseEvent aMEvt( rPosPixel, 1, 0, MOUSE_LEFT );
+ SdrHitKind eHit = pView->PickAnything( aMEvt, SDRMOUSEBUTTONDOWN, aVEvt );
+
+ if ( eHit != SDRHIT_NONE && aVEvt.pObj != NULL )
+ {
+ if ( ScDrawLayer::GetIMapInfo( aVEvt.pObj ) && ScDrawLayer::GetHitIMapObject(
+ aVEvt.pObj, pWindow->PixelToLogic(rPosPixel), *pWindow ) )
+ return TRUE;
+
+ if ( aVEvt.eEvent == SDREVENT_EXECUTEURL )
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void FuDraw::ForcePointer(const MouseEvent* pMEvt)
+{
+ if ( !pView->IsAction() )
+ {
+#ifdef VCL
+ Point aPosPixel = pWindow->GetPointerPosPixel();
+#else
+ Point aPosPixel = pWindow->ScreenToOutputPixel( Pointer::GetPosPixel() );
+#endif
+ BOOL bAlt = pMEvt && pMEvt->IsMod2();
+ Point aPnt = pWindow->PixelToLogic( aPosPixel );
+ SdrHdl* pHdl = pView->HitHandle(aPnt, *pWindow);
+ SdrObject* pObj;
+ SdrPageView* pPV;
+
+ if ( pView->IsTextEdit() )
+ {
+ pViewShell->SetActivePointer(Pointer(POINTER_TEXT)); // kann nicht sein ?
+ }
+ else if ( pHdl )
+ {
+ pViewShell->SetActivePointer(
+ pView->GetPreferedPointer( aPnt, pWindow ) );
+ }
+ else if ( pView->IsMarkedHit(aPnt) )
+ {
+ pViewShell->SetActivePointer( Pointer(POINTER_MOVE) );
+ }
+ else if ( !bAlt && ( !pMEvt || !pMEvt->GetButtons() )
+ && lcl_UrlHit( pView, aPosPixel, pWindow ) )
+ {
+ // kann mit ALT unterdrueckt werden
+ pWindow->SetPointer( Pointer( POINTER_REFHAND ) ); // Text-URL / ImageMap
+ }
+ else if ( !bAlt && pView->PickObj(aPnt, pObj, pPV, SDRSEARCH_PICKMACRO) )
+ {
+ // kann mit ALT unterdrueckt werden
+ SdrObjMacroHitRec aHitRec; //! muss da noch irgendwas gesetzt werden ????
+ pViewShell->SetActivePointer( pObj->GetMacroPointer(aHitRec) );
+ }
+ else if ( IsDetectiveHit( aPnt ) )
+#ifdef VCL
+ pViewShell->SetActivePointer( Pointer( POINTER_DETECTIVE ) );
+#else
+ pViewShell->SetActivePointer( ScResId( RID_SCPTR_DETECTIVE ) );
+#endif
+ else
+ pViewShell->SetActivePointer( aNewPointer ); //! in Gridwin?
+ }
+}
+
+
+
+
+
diff --git a/sc/source/ui/drawfunc/fuins1.cxx b/sc/source/ui/drawfunc/fuins1.cxx
new file mode 100644
index 000000000000..18889198e8b1
--- /dev/null
+++ b/sc/source/ui/drawfunc/fuins1.cxx
@@ -0,0 +1,355 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuins1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <svx/impgrf.hxx>
+#include <svx/svdograf.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdpagv.hxx>
+#include <svx/svdview.hxx>
+#include <svtools/filter.hxx>
+#include <svtools/stritem.hxx>
+#include <vcl/msgbox.hxx>
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+
+#include "fuinsert.hxx"
+#include "tabvwsh.hxx"
+#include "drwlayer.hxx"
+#include "drawview.hxx"
+#include "scresid.hxx"
+#include "progress.hxx"
+#include "sc.hrc"
+
+
+
+//========================================================================
+// class ImportProgress
+//
+// Bemerkung:
+// Diese Klasse stellt lediglich den Handler fuer den ImportProgress des
+// Grafikfilters bereit.
+//========================================================================
+
+class ImportProgress
+{
+public:
+ ImportProgress( GraphicFilter& rFilter );
+ ~ImportProgress();
+
+ DECL_LINK( Update, GraphicFilter* );
+
+private:
+ ScProgress aProgress;
+};
+
+//------------------------------------------------------------------------
+
+ImportProgress::ImportProgress( GraphicFilter& rFilter )
+ : aProgress( NULL, // SfxViewFrame*, NULL == alle Docs locken
+ String( ScResId(STR_INSERTGRAPHIC) ),
+ 100 )
+{
+ rFilter.SetUpdatePercentHdl( LINK( this, ImportProgress, Update) );
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ImportProgress::~ImportProgress()
+{
+ aProgress.SetState( 100 );
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ImportProgress, Update, GraphicFilter*, pGraphicFilter )
+{
+ aProgress.SetState( pGraphicFilter->GetPercent() );
+ return 0;
+}
+
+
+//------------------------------------------------------------------------
+
+void LimitSizeOnDrawPage( Size& rSize, Point& rPos, const Size& rPage )
+{
+ if ( !rPage.Width() || !rPage.Height() )
+ return;
+
+ if ( rSize.Width() > rPage.Width() || rSize.Height() > rPage.Height() )
+ {
+ double fX = rPage.Width() / (double) rSize.Width();
+ double fY = rPage.Height() / (double) rSize.Height();
+
+ if ( fX < fY )
+ {
+ rSize.Width() = rPage.Width();
+ rSize.Height() = (long) ( rSize.Height() * fX );
+ }
+ else
+ {
+ rSize.Height() = rPage.Height();
+ rSize.Width() = (long) ( rSize.Width() * fY );
+ }
+
+ if (!rSize.Width())
+ rSize.Width() = 1;
+ if (!rSize.Height())
+ rSize.Height() = 1;
+ }
+
+ if ( rPos.X() + rSize.Width() > rPage.Width() )
+ rPos.X() = rPage.Width() - rSize.Width();
+ if ( rPos.Y() + rSize.Height() > rPage.Height() )
+ rPos.Y() = rPage.Height() - rSize.Height();
+}
+
+/*************************************************************************
+|*
+|* FuInsertGraphic::Konstruktor
+|*
+\************************************************************************/
+
+#ifdef WNT
+#pragma optimize("",off)
+#endif
+
+FuInsertGraphic::FuInsertGraphic( ScTabViewShell* pViewSh,
+ Window* pWin,
+ SdrView* pView,
+ SdrModel* pDoc,
+ SfxRequest& rReq )
+ : FuPoor(pViewSh, pWin, pView, pDoc, rReq)
+{
+ SvxImportGraphicDialog* pDlg = NULL;
+ Graphic aImportGraphic;
+ String aPath;
+ String aFilterName;
+ BOOL bError = FALSE;
+ BOOL bAsLink = FALSE;
+ Graphic* pInsGraphic = NULL;
+
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem;
+ if ( pArgs && pArgs->GetItemState( SID_INSERT_GRAPHIC, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ DBG_ASSERT( pItem->ISA(SfxStringItem), "falsches Item" );
+ aPath = ((const SfxStringItem*) pItem)->GetValue();
+
+ if ( pArgs->GetItemState( FN_PARAM_FILTER, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ DBG_ASSERT( pItem->ISA(SfxStringItem), "falsches Item" );
+ aFilterName = ((const SfxStringItem*) pItem)->GetValue();
+ }
+ if ( pArgs->GetItemState( FN_PARAM_1, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ DBG_ASSERT( pItem->ISA(SfxBoolItem), "falsches Item" );
+ bAsLink = ((const SfxBoolItem*) pItem)->GetValue();
+ }
+
+ if ( GRFILTER_OK == ::LoadGraphic( aPath, aFilterName, aImportGraphic ) )
+ pInsGraphic = &aImportGraphic;
+ else
+ bError = TRUE;
+ }
+
+ if ( !pInsGraphic && !bError ) // noch keine geladen -> Dialog
+ {
+ pDlg = new SvxImportGraphicDialog( pWindow,
+ String( ScResId(STR_INSERTGRAPHIC) ),
+ ENABLE_STANDARD | ENABLE_LINK );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ aPath = pDlg->GetPath();
+ aFilterName = pDlg->GetCurFilter();
+ bAsLink = pDlg->AsLink();
+ pInsGraphic = pDlg->GetGraphic(); // per Preview schon geladen?
+
+ if ( !pInsGraphic )
+ {
+ // Grafik laden, wenn Dialog es nicht bereits getan hat
+
+ GraphicFilter& rFilter = pDlg->GetFilter();
+ ImportProgress aImportProgress( rFilter );
+ INetURLObject aURL;
+ aURL.SetSmartURL( aPath );
+ USHORT nError = rFilter.ImportGraphic( aImportGraphic, aURL );
+ if ( nError == GRFILTER_OK )
+ pInsGraphic = &aImportGraphic;
+ else
+ {
+ //! merge error strings with Writer and Impress!!!
+ USHORT nRes = 0;
+ switch ( nError )
+ {
+ case GRFILTER_OPENERROR: nRes = SCSTR_GRFILTER_OPENERROR; break;
+ case GRFILTER_IOERROR: nRes = SCSTR_GRFILTER_IOERROR; break;
+ case GRFILTER_FORMATERROR: nRes = SCSTR_GRFILTER_FORMATERROR; break;
+ case GRFILTER_VERSIONERROR: nRes = SCSTR_GRFILTER_VERSIONERROR; break;
+ case GRFILTER_FILTERERROR: nRes = SCSTR_GRFILTER_FILTERERROR; break;
+ case GRFILTER_TOOBIG: nRes = SCSTR_GRFILTER_TOOBIG; break;
+ }
+ if ( nRes )
+ {
+ InfoBox aInfoBox( pWindow, String(ScResId(nRes)) );
+ aInfoBox.Execute();
+ }
+ }
+ }
+
+ rReq.AppendItem( SfxStringItem( SID_INSERT_GRAPHIC, aPath ) );
+ rReq.AppendItem( SfxStringItem( FN_PARAM_FILTER, aFilterName ) );
+ rReq.AppendItem( SfxBoolItem( FN_PARAM_1, bAsLink ) );
+ }
+ }
+
+ if ( pInsGraphic ) // irgendwo eine Grafik gefunden -> einfuegen
+ {
+ // #74778# set the size so the graphic has its original pixel size
+ // at 100% view scale (as in SetMarkedOriginalSize),
+ // instead of respecting the current view scale
+
+ ScDrawView* pDrawView = pViewSh->GetScDrawView();
+ MapMode aSourceMap = pInsGraphic->GetPrefMapMode();
+ MapMode aDestMap( MAP_100TH_MM );
+ if ( aSourceMap.GetMapUnit() == MAP_PIXEL && pDrawView )
+ {
+ Fraction aScaleX, aScaleY;
+ pDrawView->CalcNormScale( aScaleX, aScaleY );
+ aDestMap.SetScaleX(aScaleX);
+ aDestMap.SetScaleY(aScaleY);
+ }
+ Size aLogicSize = pWindow->LogicToLogic(
+ pInsGraphic->GetPrefSize(), &aSourceMap, &aDestMap );
+
+ // Groesse begrenzen
+
+ SdrPageView* pPV = pView->GetPageViewPvNum(0);
+ SdrPage* pPage = pPV->GetPage();
+ Point aInsertPos = pViewSh->GetInsertPos();
+ LimitSizeOnDrawPage( aLogicSize, aInsertPos, pPage->GetSize() );
+
+ Rectangle aRect ( aInsertPos, aLogicSize );
+
+ SdrGrafObj* pObj = new SdrGrafObj( *pInsGraphic, aRect );
+
+ if ( bAsLink )
+ pObj->SetGraphicLink( aPath, aFilterName );
+
+ // #49961# Pfad wird nicht mehr als Name der Grafik gesetzt
+
+ ScDrawLayer* pLayer = (ScDrawLayer*) pView->GetModel();
+ String aName = pLayer->GetNewGraphicName(); // "Grafik x"
+ pObj->SetName(aName);
+
+ pView->InsertObject( pObj, *pPV );
+
+ rReq.Done();
+ }
+
+ rReq.SetReturnValue( SfxBoolItem( rReq.GetSlot(), pInsGraphic != NULL ) );
+
+ delete pDlg; // Dialog erst am Ende loeschen
+}
+
+/*************************************************************************
+|*
+|* FuInsertGraphic::Destruktor
+|*
+\************************************************************************/
+
+FuInsertGraphic::~FuInsertGraphic()
+{
+}
+
+/*************************************************************************
+|*
+|* FuInsertGraphic::Function aktivieren
+|*
+\************************************************************************/
+
+void FuInsertGraphic::Activate()
+{
+ FuPoor::Activate();
+}
+
+/*************************************************************************
+|*
+|* FuInsertGraphic::Function deaktivieren
+|*
+\************************************************************************/
+
+void FuInsertGraphic::Deactivate()
+{
+ FuPoor::Deactivate();
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx
new file mode 100644
index 000000000000..7ffa794b6f7f
--- /dev/null
+++ b/sc/source/ui/drawfunc/fuins2.cxx
@@ -0,0 +1,692 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuins2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <sfx2/frameobj.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <svtools/stritem.hxx>
+#include <so3/insdlg.hxx>
+#include <so3/svstor.hxx>
+#include <so3/plugin.hxx>
+#include <sch/schdll.hxx>
+#include <sch/memchrt.hxx>
+#include <sch/schdll0.hxx>
+#include <sim2/simdll0.hxx>
+#include <starmath/smdll0.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdview.hxx>
+#include <svx/pfiledlg.hxx>
+#include <tools/urlobj.hxx>
+#include <vcl/msgbox.hxx>
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+
+#include "fuinsert.hxx"
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+#include "chartarr.hxx"
+#include "docsh.hxx"
+#include "document.hxx"
+#include "undotab.hxx"
+#include "chartlis.hxx"
+#include "uiitems.hxx"
+#include "globstr.hrc"
+
+extern SdrObject* pSkipPaintObj; // output.cxx - dieses Objekt nicht zeichnen
+
+//------------------------------------------------------------------------
+
+#define IS_AVAILABLE(WhichId,ppItem) \
+ (pReqArgs->GetItemState((WhichId), TRUE, ppItem ) == SFX_ITEM_SET)
+
+void lcl_ChartInit( SvInPlaceObjectRef aIPObj, ScViewData* pViewData, Window* pWin )
+{
+ USHORT nCol1 = 0;
+ USHORT nRow1 = 0;
+ USHORT nTab1 = 0;
+ USHORT nCol2 = 0;
+ USHORT nRow2 = 0;
+ USHORT nTab2 = 0;
+
+ ScMarkData& rMark = pViewData->GetMarkData();
+ if ( !rMark.IsMarked() )
+ pViewData->GetView()->MarkDataArea( TRUE );
+
+ if ( pViewData->GetSimpleArea( nCol1,nRow1,nTab1, nCol2,nRow2,nTab2 ) )
+ {
+ PutInOrder( nCol1, nCol2 );
+ PutInOrder( nRow1, nRow2 );
+ if ( nCol2>nCol1 || nRow2>nRow1 )
+ {
+ String aChartName;
+ SvInfoObject* pInfoObj = pViewData->GetDocShell()->Find( aIPObj );
+ if ( pInfoObj )
+ aChartName = pInfoObj->GetObjName();
+ else
+ DBG_ERROR( "IP-Object not found :-/" );
+
+ ScDocument* pDoc = pViewData->GetDocument();
+ pDoc->LimitChartArea( nTab1, nCol1,nRow1, nCol2,nRow2 );
+
+ // Chart-Collection gibt's nicht mehr
+
+ ScRange aRange( nCol1,nRow1,nTab1, nCol2,nRow2,nTab1 );
+ ScChartListener* pCL = new ScChartListener( aChartName, pDoc, aRange );
+ pDoc->GetChartListenerCollection()->Insert( pCL );
+ pCL->StartListeningTo();
+
+ ScChartArray aParam( pDoc, nTab1, nCol1,nRow1, nCol2,nRow2, String() );
+ SchMemChart* pMemChart = aParam.CreateMemChart();
+ SchDLL::Update( aIPObj, pMemChart, pWin );
+ delete pMemChart;
+ }
+ }
+}
+
+#ifdef WNT
+#pragma optimize("",off)
+#endif
+
+void lcl_ChartInit2( SvInPlaceObjectRef aIPObj, ScViewData* pViewData, Window* pWin,
+ const SfxItemSet* pReqArgs, const String& rChartName )
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+
+ const SfxPoolItem* pItem;
+ BOOL bRowHeader = TRUE;
+ BOOL bColHeader = TRUE;
+
+ if( IS_AVAILABLE( SID_ATTR_ROWHEADERS, &pItem ) )
+ bRowHeader = ((const SfxBoolItem*)pItem)->GetValue();
+
+ if( IS_AVAILABLE( SID_ATTR_COLHEADERS, &pItem ) )
+ bColHeader = ((const SfxBoolItem*)pItem)->GetValue();
+
+ SchMemChart* pMemChart;
+ ScChartListener* pChartListener;
+ BOOL bMulti;
+ if ( IS_AVAILABLE( FN_PARAM_5, &pItem ) )
+ {
+ String aStr( ((const SfxStringItem*)pItem)->GetValue() );
+ ScRangeListRef aRangeListRef( new ScRangeList() );
+ aRangeListRef->Parse( aStr, pDoc );
+
+ if ( aRangeListRef->Count() )
+ {
+ ScChartArray aParam( pDoc, aRangeListRef, String() );
+ aParam.SetHeaders( bColHeader, bRowHeader );
+ pMemChart = aParam.CreateMemChart();
+
+ pChartListener = new ScChartListener( rChartName, pDoc, aRangeListRef );
+ bMulti = TRUE;
+ }
+ else
+ bMulti = FALSE;
+ }
+ else
+ bMulti = FALSE;
+ if ( !bMulti )
+ {
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+ USHORT nColStart = aMarkRange.aStart.Col();
+ USHORT nRowStart = aMarkRange.aStart.Row();
+ USHORT nColEnd = aMarkRange.aEnd.Col();
+ USHORT nRowEnd = aMarkRange.aEnd.Row();
+ USHORT nTab = aMarkRange.aStart.Tab();
+
+ pDoc->LimitChartArea( nTab, nColStart, nRowStart, nColEnd, nRowEnd );
+
+ // Chart-Collection gibt's nicht mehr
+
+ ScChartArray aParam( pDoc, nTab, nColStart, nRowStart, nColEnd, nRowEnd, String() );
+ aParam.SetHeaders( bColHeader, bRowHeader );
+ pMemChart = aParam.CreateMemChart();
+
+ pChartListener = new ScChartListener( rChartName, pDoc,
+ ScRange( nColStart, nRowStart, nTab, nColEnd, nRowEnd, nTab ) );
+ }
+ pDoc->GetChartListenerCollection()->Insert( pChartListener );
+ pChartListener->StartListeningTo();
+ SchDLL::Update( aIPObj, pMemChart, *pReqArgs, pWin );
+ delete pMemChart;
+}
+
+#ifdef WNT
+#pragma optimize("",on)
+#endif
+
+/*************************************************************************
+|*
+|* FuInsertOLE::Konstruktor
+|*
+\************************************************************************/
+
+FuInsertOLE::FuInsertOLE(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq)
+ : FuPoor(pViewSh, pWin, pView, pDoc, rReq)
+{
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+
+ //! hier DLL's initalisieren, damit die Factories existieren?
+
+ SvInPlaceObjectRef aIPObj;
+ SvStorageRef aStor = new SvStorage( String() );
+ BOOL bIsFromFile = FALSE;
+
+ USHORT nSlot = rReq.GetSlot();
+ if (nSlot == SID_INSERT_FLOATINGFRAME)
+ {
+ SfxInsertFloatingFrameDialog aDlg( pWin );
+// aDlg.SetHelpId(nSlot);
+ aIPObj = aDlg.Execute( aStor );
+
+ // damit DrawShell eingeschaltet wird (Objekt aktivieren ist unnoetig):
+ bIsFromFile = TRUE;
+ }
+#ifdef SO3
+ else if (nSlot == SID_INSERT_SIMAGE)
+ {
+ if ( SFX_APP()->HasFeature(SFX_FEATURE_SIMAGE) )
+ aIPObj = &((SvFactory*)SvInPlaceObject::ClassFactory())->CreateAndInit(
+ *SIM_MOD()->pSimDrawDocShellFactory,
+ aStor );
+ }
+ else if (nSlot == SID_INSERT_SMATH)
+ {
+ if ( SFX_APP()->HasFeature(SFX_FEATURE_SMATH) )
+ aIPObj = &((SvFactory*)SvInPlaceObject::ClassFactory())->CreateAndInit(
+// *OFF_APP()->GetSmDLL()->pSmDocShellFactory,
+ *SM_MOD()->pSmDocShellFactory,
+ aStor );
+ }
+#else
+ else if (nSlot == SID_INSERT_SIMAGE)
+ {
+ if ( SFX_APP()->HasFeature(SFX_FEATURE_SIMAGE) )
+ aIPObj = &SvInPlaceObject::ClassFactory()->CreateAndInit(
+ *SIM_MOD()->pSimDrawDocShellFactory,
+ aStor );
+ }
+ else if (nSlot == SID_INSERT_SMATH)
+ {
+ if ( SFX_APP()->HasFeature(SFX_FEATURE_SMATH) )
+ aIPObj = &SvInPlaceObject::ClassFactory()->CreateAndInit(
+// *OFF_APP()->GetSmDLL()->pSmDocShellFactory,
+ *SM_MOD()->pSmDocShellFactory,
+ aStor );
+ }
+#endif
+ else if (nSlot == SID_INSERT_PLUGIN)
+ {
+ SvInsertPlugInDialog aDlg;
+ aDlg.SetHelpId(nSlot);
+ aIPObj = aDlg.Execute( pWin, aStor );
+ bIsFromFile = TRUE; // nicht aktivieren
+ }
+ else if (nSlot == SID_INSERT_SOUND || nSlot == SID_INSERT_VIDEO)
+ {
+ // create special filedialog for plugins
+ SvxPluginFileDlg aPluginFileDialog(pWin, nSlot);
+
+ // open filedlg
+ if (RET_OK == aPluginFileDialog.Execute())
+ {
+ // get URL
+ String aStrURL(aPluginFileDialog.GetPath());
+ aStrURL = URIHelper::SmartRelToAbs( aStrURL );
+
+ INetURLObject aURL;
+ aURL.SetSmartProtocol( INET_PROT_FILE );
+
+ if ( aURL.SetURL( aStrURL ) )
+ {
+ // create plugin, initialize, etc.
+ SvFactory * pPlugIn = SvFactory::GetDefaultPlugInFactory();
+ SvStorageRef aStor = new SvStorage( EMPTY_STRING, STREAM_STD_READWRITE );
+ SvPlugInObjectRef xObj = &pPlugIn->CreateAndInit( *pPlugIn, aStor );
+ xObj->SetPlugInMode( (USHORT)PLUGIN_EMBEDED );
+ xObj->SetURL( aURL );
+ aIPObj = (SvInPlaceObject*)&xObj;
+ }
+ else
+ {
+ //! error message
+ //! can this happen???
+ }
+ }
+ }
+ else if (nSlot == SID_INSERT_APPLET)
+ {
+ SvInsertAppletDialog aDlg;
+ aDlg.SetHelpId(nSlot);
+ aIPObj = aDlg.Execute( pWin, aStor );
+ bIsFromFile = TRUE; // nicht aktivieren
+ }
+ else // SID_INSERT_OBJECT
+ {
+ SvInsertOleObjectDialog aDlg;
+ aDlg.SetHelpId(nSlot);
+ SvObjectServerList aServerLst;
+ aDlg.FillObjectServerList(&aServerLst);
+ aServerLst.Remove( *ScDocShell::ClassFactory() ); // Starcalc nicht anzeigen
+ aIPObj = aDlg.Execute(pWin, aStor, &aServerLst );
+ bIsFromFile = !aDlg.IsCreateNew();
+ }
+
+ // SvInsertObjectDialog (alles in einem Dialog) wird nicht mehr benutzt
+
+ if( aIPObj.Is() )
+ {
+ pView->UnmarkAll();
+
+ SvEmbeddedInfoObject* pInfoObj = pViewSh->GetViewFrame()->GetObjectShell()->
+ InsertObject(aIPObj, String());
+ if ( !pInfoObj )
+ pViewSh->ErrorMessage( STR_ERR_INSERTOBJ );
+ else
+ {
+ String aName = pInfoObj->GetObjName();
+
+ // aSize immer in 1/100mm, egal was das Ole-Objekt hat
+
+ Size aSize = aIPObj->GetVisArea().GetSize();
+ if (aSize.Height() == 0 || aSize.Width() == 0)
+ {
+ aSize.Width() = 5000;
+ aSize.Height() = 5000;
+ Size aObjSize = Window::LogicToLogic( aSize,
+ MapMode( MAP_100TH_MM ), MapMode( aIPObj->GetMapUnit() ) );
+ aIPObj->SetVisAreaSize(aObjSize);
+
+ // re-convert aSize to 1/100th mm to avoid rounding errors in comparison below
+ aSize = Window::LogicToLogic( aObjSize,
+ MapMode( aIPObj->GetMapUnit() ), MapMode( MAP_100TH_MM ) );
+ }
+ else
+ aSize = Window::LogicToLogic( aSize,
+ MapMode( aIPObj->GetMapUnit() ), MapMode( MAP_100TH_MM ) );
+
+ // Chart initialisieren ?
+
+ if ( SFX_APP()->HasFeature(SFX_FEATURE_SCHART) &&
+ aIPObj->GetClassName() == *SCH_MOD()->pSchChartDocShellFactory )
+ lcl_ChartInit( aIPObj, pViewSh->GetViewData(), pWin );
+
+ Point aPnt = pViewSh->GetInsertPos();
+ Rectangle aRect (aPnt, aSize);
+ SdrOle2Obj* pObj = new SdrOle2Obj(aIPObj, aName, aRect);
+
+ // Dieses Objekt nicht vor dem Aktivieren zeichnen
+ // (in MarkListHasChanged kommt ein Update)
+ if (!bIsFromFile)
+ pSkipPaintObj = pObj;
+
+ SdrPageView* pPV = pView->GetPageViewPvNum(0);
+ pView->InsertObject(pObj, *pPV);
+ pObj->SetOleLink(pInfoObj);
+
+ // #73279# Math objects change their object size during InsertObject.
+ // New size must be set in SdrObject, or a wrong scale will be set at
+ // ActivateObject.
+
+ Size aNewSize = Window::LogicToLogic( aIPObj->GetVisArea().GetSize(),
+ MapMode( aIPObj->GetMapUnit() ), MapMode( MAP_100TH_MM ) );
+ if ( aNewSize != aSize )
+ {
+ aRect.SetSize( aNewSize );
+ pObj->SetLogicRect( aRect );
+ }
+
+ if ( !rReq.IsAPI() )
+ {
+ // XXX Activate aus Makro ist toedlich !!! ???
+ if (bIsFromFile)
+ {
+ // #45012# Objekt ist selektiert, also Draw-Shell aktivieren
+ pViewShell->SetDrawShell( TRUE );
+ }
+ else
+ {
+ pViewShell->ActivateObject( (SdrOle2Obj*) pObj, SVVERB_SHOW );
+ pSkipPaintObj = NULL;
+ }
+ }
+ }
+ }
+}
+
+/*************************************************************************
+|*
+|* FuInsertOLE::Destruktor
+|*
+\************************************************************************/
+
+FuInsertOLE::~FuInsertOLE()
+{
+}
+
+/*************************************************************************
+|*
+|* FuInsertOLE::Function aktivieren
+|*
+\************************************************************************/
+
+void FuInsertOLE::Activate()
+{
+ FuPoor::Activate();
+}
+
+/*************************************************************************
+|*
+|* FuInsertOLE::Function deaktivieren
+|*
+\************************************************************************/
+
+void FuInsertOLE::Deactivate()
+{
+ FuPoor::Deactivate();
+}
+
+/*************************************************************************
+|*
+|* FuInsertChart::Konstruktor
+|*
+\************************************************************************/
+
+FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq)
+ : FuPoor(pViewSh, pWin, pView, pDoc, rReq)
+{
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+
+ SvStorageRef aStor = new SvStorage( String() );
+ SvInPlaceObjectRef aIPObj;
+ if ( SFX_APP()->HasFeature(SFX_FEATURE_SCHART) )
+ aIPObj = &((SvFactory*)SvInPlaceObject::ClassFactory())->CreateAndInit(
+ *SCH_MOD()->pSchChartDocShellFactory,
+ aStor );
+
+ if( aIPObj.Is() )
+ {
+ pView->UnmarkAll();
+
+ SvEmbeddedInfoObject* pInfoObj = pViewSh->GetViewFrame()->GetObjectShell()->
+ InsertObject(aIPObj, String());
+ if ( !pInfoObj )
+ pViewSh->ErrorMessage( STR_ERR_INSERTOBJ );
+ else
+ {
+ String aName = pInfoObj->GetObjName();
+
+ ScRangeListRef aDummy;
+ Rectangle aMarkDest;
+ USHORT nMarkTab;
+ BOOL bDrawRect = pViewShell->GetChartArea( aDummy, aMarkDest, nMarkTab );
+
+ // Objekt-Groesse
+
+ Size aSize = aIPObj->GetVisArea().GetSize();
+ BOOL bSizeCh = FALSE;
+ if (bDrawRect && !aMarkDest.IsEmpty())
+ {
+ aSize = aMarkDest.GetSize();
+ bSizeCh = TRUE;
+ }
+ if (aSize.Height() <= 0 || aSize.Width() <= 0)
+ {
+ aSize.Width() = 5000;
+ aSize.Height() = 5000;
+ bSizeCh = TRUE;
+ }
+ if (bSizeCh)
+ {
+ aSize = Window::LogicToLogic( aSize, MapMode( MAP_100TH_MM ), MapMode( aIPObj->GetMapUnit() ) );
+ aIPObj->SetVisAreaSize(aSize);
+ }
+
+ ScViewData* pData = pViewSh->GetViewData();
+ ScDocShell* pScDocSh = pData->GetDocShell();
+ ScDocument* pScDoc = pScDocSh->GetDocument();
+
+ if( pReqArgs )
+ {
+ lcl_ChartInit2( aIPObj, pData, pWin, pReqArgs, aName );
+ const SfxPoolItem* pItem;
+ UINT16 nToTable = 0;
+
+ if( IS_AVAILABLE( FN_PARAM_4, &pItem ) )
+ {
+ if ( pItem->ISA( SfxUInt16Item ) )
+ nToTable = ((const SfxUInt16Item*)pItem)->GetValue();
+ else if ( pItem->ISA( SfxBoolItem ) )
+ {
+ // #46033# in der idl fuer Basic steht FN_PARAM_4 als SfxBoolItem
+ // -> wenn gesetzt, neue Tabelle, sonst aktuelle Tabelle
+
+ if ( ((const SfxBoolItem*)pItem)->GetValue() )
+ nToTable = pScDoc->GetTableCount();
+ else
+ nToTable = pData->GetTabNo();
+ }
+ }
+ else
+ {
+ if (bDrawRect)
+ nToTable = nMarkTab;
+ rReq.AppendItem( SfxUInt16Item( FN_PARAM_4, nToTable ) );
+ }
+
+ // auf neue Tabelle ausgeben?
+ if ( nToTable == pScDoc->GetTableCount() )
+ {
+ // dann los...
+ String aTabName;
+ USHORT nNewTab = pScDoc->GetTableCount();
+
+ pScDoc->CreateValidTabName( aTabName );
+
+ if ( pScDoc->InsertTab( nNewTab, aTabName ) )
+ {
+ BOOL bAppend = TRUE;
+
+ pScDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoInsertTab( pScDocSh, nNewTab,
+ bAppend, aTabName ) );
+
+ pScDocSh->Broadcast( ScTablesHint( SC_TAB_INSERTED, nNewTab ) );
+ pViewSh->SetTabNo( nNewTab, TRUE );
+ pScDocSh->PostPaintExtras(); //! erst hinterher ???
+ }
+ else
+ {
+ DBG_ERROR( "Could not create new table :-/" );
+ }
+ }
+ else if ( nToTable != pData->GetTabNo() )
+ {
+ pViewSh->SetTabNo( nToTable, TRUE );
+ }
+ }
+ else
+ lcl_ChartInit( aIPObj, pData, pWin );
+
+ // Objekt-Position
+
+ Point aStart;
+ if ( bDrawRect )
+ aStart = aMarkDest.TopLeft(); // per Hand markiert
+ else
+ {
+ USHORT nC0, nR0, nT0, nC1, nR1, nT1;
+ if( pData->GetSimpleArea( nC0, nR0, nT0, nC1, nR1, nT1 )
+ && ( nT0 == nT1 ) )
+ {
+ // Einfache Selektion in der gleichen Tabelle:
+ // Positionieren 1/2 Spalte rechts
+ // und 1 1/2 Zeilen unterhalb des Starts
+ ScDocument* pScDoc = pData->GetDocument();
+ ULONG x = 0, y = 0;
+ for( USHORT i = 0; i <= nC1; i++ )
+ x += pScDoc->GetColWidth( i, nT0 );
+ while( ++i <= MAXCOL )
+ {
+ USHORT n = pScDoc->GetColWidth( i, nT0 );
+ if( n )
+ {
+ x += n / 2; break;
+ }
+ }
+ for( i = 0; i <= nR0; i++ )
+ y += pScDoc->FastGetRowHeight( i, nT0 );
+ while( ++i <= MAXROW )
+ {
+ USHORT n = pScDoc->FastGetRowHeight( i, nT0 );
+ if( n )
+ {
+ y += n / 2; break;
+ }
+ }
+ // Das ganze von Twips nach 1/100 mm
+ x = (ULONG) ((double) x * HMM_PER_TWIPS);
+ y = (ULONG) ((double) y * HMM_PER_TWIPS);
+ aStart = Point( x, y );
+ }
+ else
+ aStart = pViewSh->GetInsertPos();
+ }
+
+ Rectangle aRect (aStart, aSize);
+ SdrOle2Obj* pObj = new SdrOle2Obj(aIPObj, aName, aRect);
+
+ // Dieses Objekt nicht vor dem Aktivieren zeichnen
+ // (in MarkListHasChanged kommt ein Update)
+ pSkipPaintObj = pObj;
+
+ SdrPageView* pPV = pView->GetPageViewPvNum(0);
+ pView->InsertObject(pObj, *pPV);
+ pObj->SetOleLink(pInfoObj);
+
+ // Dies veranlaesst Chart zum sofortigen Update
+ SvData aEmpty;
+
+ aIPObj->SendDataChanged( aEmpty );
+ aIPObj->SendViewChanged();
+
+ if (!rReq.IsAPI())
+ {
+ // XXX Activate aus Makro ist toedlich !!! ???
+ pViewShell->ActivateObject( (SdrOle2Obj*) pObj, SVVERB_SHOW );
+ }
+
+ pSkipPaintObj = NULL;
+ }
+ }
+
+ pViewShell->ResetChartArea(); // Einstellungen nur einmal auslesen
+}
+
+/*************************************************************************
+|*
+|* FuInsertChart::Destruktor
+|*
+\************************************************************************/
+
+FuInsertChart::~FuInsertChart()
+{
+}
+
+/*************************************************************************
+|*
+|* FuInsertChart::Function aktivieren
+|*
+\************************************************************************/
+
+void FuInsertChart::Activate()
+{
+ FuPoor::Activate();
+}
+
+/*************************************************************************
+|*
+|* FuInsertChart::Function deaktivieren
+|*
+\************************************************************************/
+
+void FuInsertChart::Deactivate()
+{
+ FuPoor::Deactivate();
+}
+
+
diff --git a/sc/source/ui/drawfunc/fumark.cxx b/sc/source/ui/drawfunc/fumark.cxx
new file mode 100644
index 000000000000..5e479f535865
--- /dev/null
+++ b/sc/source/ui/drawfunc/fumark.cxx
@@ -0,0 +1,325 @@
+/*************************************************************************
+ *
+ * $RCSfile: fumark.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <svx/svdview.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/viewfrm.hxx>
+
+#include "fumark.hxx"
+#include "sc.hrc"
+#include "tabvwsh.hxx"
+#include "scmod.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+
+//------------------------------------------------------------------
+
+/*************************************************************************
+|*
+|* Funktion zum Aufziehen eines Rechtecks
+|*
+\************************************************************************/
+
+FuMarkRect::FuMarkRect(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq) :
+ FuPoor(pViewSh, pWin, pView, pDoc, rReq),
+ bVisible(FALSE),
+ bStartDrag(FALSE)
+{
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+FuMarkRect::~FuMarkRect()
+{
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+BOOL FuMarkRect::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ pWindow->CaptureMouse();
+ pView->UnmarkAll(); // der Einheitlichkeit halber und wegen #50558#
+ bStartDrag = TRUE;
+
+ aBeginPos = pWindow->PixelToLogic( rMEvt.GetPosPixel() );
+ aZoomRect = Rectangle( aBeginPos, Size() );
+ return TRUE;
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+BOOL FuMarkRect::MouseMove(const MouseEvent& rMEvt)
+{
+ if ( bStartDrag )
+ {
+ if ( bVisible )
+ pViewShell->DrawMarkRect(aZoomRect);
+ Point aPixPos= rMEvt.GetPosPixel();
+ ForceScroll(aPixPos);
+
+ Point aEndPos = pWindow->PixelToLogic(aPixPos);
+ Rectangle aRect(aBeginPos, aEndPos);
+ aZoomRect = aRect;
+ aZoomRect.Justify();
+ pViewShell->DrawMarkRect(aZoomRect);
+ bVisible = TRUE;
+ }
+
+ ForcePointer(&rMEvt);
+
+ return bStartDrag;
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+BOOL FuMarkRect::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ if ( bVisible )
+ {
+ // Hide ZoomRect
+ pViewShell->DrawMarkRect(aZoomRect);
+ bVisible = FALSE;
+ }
+
+ Size aZoomSizePixel = pWindow->LogicToPixel(aZoomRect).GetSize();
+
+ USHORT nMinMove = pView->GetMinMoveDistancePixel();
+ if ( aZoomSizePixel.Width() < nMinMove || aZoomSizePixel.Height() < nMinMove )
+ {
+ // Klick auf der Stelle
+
+ aZoomRect.SetSize(Size()); // dann ganz leer
+ }
+
+ bStartDrag = FALSE;
+ pWindow->ReleaseMouse();
+
+ SFX_DISPATCHER().Execute(aSfxRequest.GetSlot(), SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD);
+
+ // Daten an der View merken
+
+ pViewShell->SetChartArea( aSourceRange, aZoomRect );
+
+ // Chart-Dialog starten:
+
+ USHORT nId = ScChartDlgWrapper::GetChildWindowId();
+ SfxChildWindow* pWnd = pViewShell->GetViewFrame()->GetChildWindow( nId );
+ SC_MOD()->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+
+ return TRUE;
+}
+
+/*************************************************************************
+|*
+|* Command-event
+|*
+\************************************************************************/
+
+BYTE FuMarkRect::Command(const CommandEvent& rCEvt)
+{
+ if ( COMMAND_STARTDRAG == rCEvt.GetCommand() )
+ {
+ // #29877# nicht anfangen, auf der Tabelle rumzudraggen,
+ // aber Maus-Status nicht zuruecksetzen
+ return SC_CMD_IGNORE;
+ }
+ else
+ return FuPoor::Command(rCEvt);
+}
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL FuMarkRect::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FALSE;
+
+ switch ( rKEvt.GetKeyCode().GetCode() )
+ {
+ case KEY_ESCAPE:
+ // beenden
+ SFX_DISPATCHER().Execute(aSfxRequest.GetSlot(), SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+ bReturn = TRUE;
+ break;
+ }
+
+ if (!bReturn)
+ {
+ bReturn = FuPoor::KeyInput(rKEvt);
+ }
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* Vor dem Scrollen Selektionsdarstellung ausblenden
+|*
+\************************************************************************/
+
+void FuMarkRect::ScrollStart()
+{
+}
+
+/*************************************************************************
+|*
+|* Nach dem Scrollen Selektionsdarstellung wieder anzeigen
+|*
+\************************************************************************/
+
+void FuMarkRect::ScrollEnd()
+{
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void FuMarkRect::Activate()
+{
+ FuPoor::Activate();
+
+ // Markierung merken, bevor evtl. Tabelle umgeschaltet wird
+
+ ScViewData* pViewData = pViewShell->GetViewData();
+ ScMarkData& rMark = pViewData->GetMarkData();
+
+ if ( !rMark.IsMultiMarked() && !rMark.IsMarked() )
+ pViewShell->MarkDataArea( TRUE );
+
+ pViewData->GetMultiArea( aSourceRange ); // Mehrfachselektion erlaubt
+
+// pViewShell->Unmark();
+
+ ForcePointer(NULL);
+}
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+void FuMarkRect::Deactivate()
+{
+ FuPoor::Deactivate();
+
+ if (bVisible)
+ {
+ // Hide ZoomRect
+ pViewShell->DrawMarkRect(aZoomRect);
+ bVisible = FALSE;
+ bStartDrag = FALSE;
+ }
+}
+
+/*************************************************************************
+|*
+|* Maus-Pointer umschalten
+|*
+\************************************************************************/
+
+void FuMarkRect::ForcePointer(const MouseEvent* pMEvt)
+{
+#ifdef VCL
+ pViewShell->SetActivePointer( Pointer( POINTER_CHART ) );
+#else
+ pViewShell->SetActivePointer( ScResId( RID_SCPTR_CHART ) );
+#endif
+}
+
+
+
+
diff --git a/sc/source/ui/drawfunc/fupoor.cxx b/sc/source/ui/drawfunc/fupoor.cxx
new file mode 100644
index 000000000000..859a58c02caa
--- /dev/null
+++ b/sc/source/ui/drawfunc/fupoor.cxx
@@ -0,0 +1,550 @@
+/*************************************************************************
+ *
+ * $RCSfile: fupoor.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX ***
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX ***
+//#define _MSGBOX_HXX ***
+//#define _SYSDLG_HXX ***
+//#define _PRNDLG_HXX ***
+#define _COLDLG_HXX
+#define _TABDLG_HXX
+//#define _GDIMTF_HXX ***
+//#define _POLY_HXX ***
+#ifdef WIN
+#define _ACCEL_HXX
+#endif
+//#define _GRAPH_HXX ***
+#define _SOUND_HXX
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+#define _TABBAR_HXX
+#define _VALUESET_HXX
+#define _STDMENU_HXX
+#define _STDCTRL_HXX
+#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX ***
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX ***
+//#define _SVTREEBOX_HXX ***
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX ***
+//#define _SFX_PRINTER_HXX ***
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+// #define _SFXDOCINF_HXX ***
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX ***
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX ***
+//#define _SFXAPP_HXX ***
+//#define _SFX_BINDINGS_HXX ***
+#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX ***
+//#define _SFXOBJFACE_HXX ***
+//#define _SFXREQUEST_HXX ***
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX ***
+#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX ***
+//#define _SFX_CLIENTSH_HXX ***
+//#define _SFXDOCINF_HXX ***
+//#define _SFX_OBJFAC_HXX ***
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//#define _VIEWFAC_HXX ***
+#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX ***
+#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+#define _SFX_INTERNO_HXX
+
+
+//svdraw.hxx
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+//#define _SDR_NOUNDO
+#define _SDR_NOXOUTDEV
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//------------------------------------------------------------------------
+
+#include <svx/outliner.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdpagv.hxx>
+
+#include "fupoor.hxx"
+#include "tabvwsh.hxx"
+#include "drawview.hxx"
+#include "detfunc.hxx"
+
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+FuPoor::FuPoor(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq) :
+ pViewShell(pViewSh),
+ pWindow(pWin),
+ pView(pView),
+ pDrDoc(pDoc),
+ aSfxRequest(rReq),
+ pDialog(NULL),
+ bIsInDragMode(FALSE)
+{
+ aScrollTimer.SetTimeoutHdl( LINK(this, FuPoor, ScrollHdl) );
+ aScrollTimer.SetTimeout(SELENG_AUTOREPEAT_INTERVAL);
+
+ aDragTimer.SetTimeoutHdl( LINK(this, FuPoor, DragTimerHdl) );
+ aDragTimer.SetTimeout(SELENG_DRAGDROP_TIMEOUT);
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+FuPoor::~FuPoor()
+{
+ aDragTimer.Stop();
+ aScrollTimer.Stop();
+
+ if (pDialog)
+ delete pDialog;
+}
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void FuPoor::Activate()
+{
+ if (pDialog)
+ {
+ pDialog->Show();
+ }
+}
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+void FuPoor::Deactivate()
+{
+ aDragTimer.Stop();
+ aScrollTimer.Stop();
+
+ if (pDialog)
+ {
+ pDialog->Hide();
+ }
+}
+
+/*************************************************************************
+|*
+|* Scrollen bei Erreichen des Fensterrandes; wird von
+|* MouseMove aufgerufen
+|*
+\************************************************************************/
+
+void FuPoor::ForceScroll(const Point& aPixPos)
+{
+ aScrollTimer.Stop();
+
+ Size aSize = pWindow->GetSizePixel();
+ short dx = 0, dy = 0;
+
+ if ( aPixPos.X() <= 0 ) dx = -1;
+ if ( aPixPos.X() >= aSize.Width() ) dx = 1;
+ if ( aPixPos.Y() <= 0 ) dy = -1;
+ if ( aPixPos.Y() >= aSize.Height() ) dy = 1;
+
+ ScViewData* pViewData = pViewShell->GetViewData();
+ ScSplitPos eWhich = pViewData->GetActivePart();
+ if ( dx > 0 && pViewData->GetHSplitMode() == SC_SPLIT_FIX && WhichH(eWhich) == SC_SPLIT_LEFT )
+ {
+ pViewShell->ActivatePart( ( eWhich == SC_SPLIT_TOPLEFT ) ?
+ SC_SPLIT_TOPRIGHT : SC_SPLIT_BOTTOMRIGHT );
+ dx = 0;
+ }
+ if ( dy > 0 && pViewData->GetVSplitMode() == SC_SPLIT_FIX && WhichV(eWhich) == SC_SPLIT_TOP )
+ {
+ pViewShell->ActivatePart( ( eWhich == SC_SPLIT_TOPLEFT ) ?
+ SC_SPLIT_BOTTOMLEFT : SC_SPLIT_BOTTOMRIGHT );
+ dy = 0;
+ }
+
+ if ( dx != 0 || dy != 0 )
+ {
+ ScrollStart(); // Scrollaktion in abgeleiteter Klasse
+ pViewShell->ScrollLines(2*dx, 4*dy);
+ ScrollEnd();
+ aScrollTimer.Start();
+ }
+}
+
+/*************************************************************************
+|*
+|* Timer-Handler fuer Fensterscrolling
+|*
+\************************************************************************/
+
+IMPL_LINK_INLINE_START( FuPoor, ScrollHdl, Timer *, pTimer )
+{
+#ifdef VCL
+ Point aPosPixel = pWindow->GetPointerPosPixel();
+#else
+ Point aPosPixel = pWindow->ScreenToOutputPixel( Pointer::GetPosPixel() );
+#endif
+ MouseMove(MouseEvent(aPosPixel));
+ return 0;
+}
+IMPL_LINK_INLINE_END( FuPoor, ScrollHdl, Timer *, pTimer )
+
+/*************************************************************************
+|*
+|* String in Applikations-Statuszeile ausgeben
+|*
+\************************************************************************/
+
+// WriteStatus gibt's nicht mehr
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL FuPoor::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FALSE;
+
+ return(bReturn);
+}
+
+BYTE FuPoor::Command(const CommandEvent& rCEvt)
+{
+ if ( COMMAND_STARTDRAG == rCEvt.GetCommand() )
+ {
+ //!!! sollte Joe eigentlich machen:
+ // nur, wenn im Outliner was selektiert ist, darf
+ // Command TRUE zurueckliefern:
+
+ OutlinerView* pOutView = pView->GetTextEditOutlinerView();
+
+ if ( pOutView )
+ return pOutView->HasSelection() ? pView->Command(rCEvt,pWindow) : SC_CMD_NONE;
+ else
+ return pView->Command(rCEvt,pWindow);
+ }
+ else
+ return pView->Command(rCEvt,pWindow);
+}
+
+/*************************************************************************
+|*
+|* Cut object to clipboard
+|*
+\************************************************************************/
+
+void FuPoor::DoCut()
+{
+ if (pView)
+ {
+//! pView->DoCut(pWindow);
+ }
+}
+
+/*************************************************************************
+|*
+|* Copy object to clipboard
+|*
+\************************************************************************/
+
+void FuPoor::DoCopy()
+{
+ if (pView)
+ {
+//! pView->DoCopy(pWindow);
+ }
+}
+
+/*************************************************************************
+|*
+|* Paste object from clipboard
+|*
+\************************************************************************/
+
+void FuPoor::DoPaste()
+{
+ if (pView)
+ {
+//! pView->DoPaste(pWindow);
+ }
+}
+
+/*************************************************************************
+|*
+|* Timer-Handler fuer Drag&Drop
+|*
+\************************************************************************/
+
+IMPL_LINK( FuPoor, DragTimerHdl, Timer *, EMPTYARG )
+{
+ // ExecuteDrag (und das damit verbundene Reschedule) direkt aus dem Timer
+ // aufzurufen, bringt die VCL-Timer-Verwaltung durcheinander, wenn dabei
+ // (z.B. im Drop) wieder ein Timer gestartet wird (z.B. ComeBack-Timer der
+ // DrawView fuer Solid Handles / ModelHasChanged) - der neue Timer laeuft
+ // dann um die Dauer des Drag&Drop zu spaet ab.
+ // Darum Drag&Drop aus eigenem Event:
+
+ Application::PostUserEvent( LINK( this, FuPoor, DragHdl ) );
+ return 0;
+}
+
+IMPL_LINK( FuPoor, DragHdl, void *, EMPTYARG )
+{
+ SdrHdl* pHdl = pView->HitHandle(aMDPos, *pWindow);
+
+ if ( pHdl==NULL && pView->IsMarkedHit(aMDPos) )
+ {
+ pWindow->ReleaseMouse();
+ bIsInDragMode = TRUE;
+
+// pView->BeginDrag(pWindow, aMDPos);
+ pViewShell->GetScDrawView()->BeginDrag(pWindow, aMDPos);
+ }
+ return 0;
+}
+
+
+// Detektiv-Linie
+
+BOOL FuPoor::IsDetectiveHit( const Point& rLogicPos )
+{
+ SdrPageView* pPV = pView->GetPageViewPvNum(0);
+ if (!pPV)
+ return FALSE;
+
+ BOOL bFound = FALSE;
+ SdrObjListIter aIter( *pPV->GetObjList(), IM_FLAT );
+ SdrObject* pObject = aIter.Next();
+ while (pObject && !bFound)
+ {
+ if (ScDetectiveFunc::IsNonAlienArrow( pObject ))
+ {
+ USHORT nHitLog = (USHORT) pWindow->PixelToLogic(
+ Size(pView->GetHitTolerancePixel(),0)).Width();
+ if ( pObject->IsHit( rLogicPos, nHitLog ) )
+ bFound = TRUE;
+ }
+
+ pObject = aIter.Next();
+ }
+ return bFound;
+}
+
+void FuPoor::StopDragTimer()
+{
+ if (aDragTimer.IsActive() )
+ aDragTimer.Stop();
+}
+
+
+
+
diff --git a/sc/source/ui/drawfunc/fusel.cxx b/sc/source/ui/drawfunc/fusel.cxx
new file mode 100644
index 000000000000..ca9488fe9c78
--- /dev/null
+++ b/sc/source/ui/drawfunc/fusel.cxx
@@ -0,0 +1,538 @@
+/*************************************************************************
+ *
+ * $RCSfile: fusel.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <svx/flditem.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdotext.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/ipfrm.hxx>
+#include <so3/ipobj.hxx>
+#include <svtools/imapobj.hxx>
+#include <svx/svdview.hxx>
+#include <svx/svdouno.hxx>
+#include <svx/svdpagv.hxx>
+
+
+
+#include "fusel.hxx"
+#include "sc.hrc"
+#include "fudraw.hxx"
+#include "futext.hxx"
+#include "tabvwsh.hxx"
+#include "drawpage.hxx"
+#include "globstr.hrc"
+#include "drwlayer.hxx"
+
+// -----------------------------------------------------------------------
+
+// Maximal erlaubte Mausbewegung um noch Drag&Drop zu starten
+//! fusel,fuconstr,futext - zusammenfassen!
+#define SC_MAXDRAGMOVE 3
+
+// -----------------------------------------------------------------------
+
+#ifdef WNT
+#pragma optimize ( "", off )
+#endif
+
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+FuSelection::FuSelection(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq ) :
+ FuDraw(pViewSh, pWin, pView, pDoc, rReq),
+ bVCAction(FALSE)
+{
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+FuSelection::~FuSelection()
+{
+}
+
+BYTE FuSelection::Command(const CommandEvent& rCEvt)
+{
+ // special code for non-VCL OS2/UNX removed
+
+ return FuDraw::Command( rCEvt );
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuSelection::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ if ( pView->IsAction() )
+ {
+ if ( rMEvt.IsRight() )
+ pView->BckAction();
+ return TRUE;
+ }
+
+ bVCAction = FALSE;
+ bIsInDragMode = FALSE; // irgendwo muss es ja zurueckgesetzt werden (#50033#)
+
+ BOOL bReturn = FuDraw::MouseButtonDown(rMEvt);
+
+ aMDPos = pWindow->PixelToLogic( rMEvt.GetPosPixel() );
+
+ if ( rMEvt.IsLeft() )
+ {
+ SdrHdl* pHdl = pView->HitHandle(aMDPos, *pWindow);
+ SdrObject* pObj;
+ SdrPageView* pPV;
+
+ if ( pHdl!=NULL || pView->IsMarkedHit(aMDPos) )
+ {
+ aDragTimer.Start();
+ pView->BegDragObj(aMDPos, (OutputDevice*) NULL, pHdl);
+ bReturn = TRUE;
+ }
+ else
+ {
+ BOOL bAlt = rMEvt.IsMod2();
+ if ( !bAlt && pView->PickObj(aMDPos, pObj, pPV, SDRSEARCH_PICKMACRO) )
+ {
+ pView->BegMacroObj(aMDPos, pObj, pPV, pWindow);
+ bReturn = TRUE;
+ }
+ else
+ {
+ // URL / ImageMap
+
+ SdrViewEvent aVEvt;
+ if ( !bAlt &&
+ pView->PickAnything( rMEvt, SDRMOUSEBUTTONDOWN, aVEvt ) != SDRHIT_NONE &&
+ aVEvt.pObj != NULL )
+ {
+ if ( ScDrawLayer::GetIMapInfo( aVEvt.pObj ) ) // ImageMap
+ {
+ const IMapObject* pIMapObj =
+ ScDrawLayer::GetHitIMapObject( aVEvt.pObj, aMDPos, *pWindow );
+ if ( pIMapObj && pIMapObj->GetURL().Len() )
+ {
+ ScGlobal::OpenURL( pIMapObj->GetURL(), pIMapObj->GetTarget() );
+
+ pViewShell->FakeButtonUp( pViewShell->GetViewData()->GetActivePart() );
+ return TRUE; // kein CaptureMouse etc.
+ }
+ }
+ if ( aVEvt.eEvent == SDREVENT_EXECUTEURL && aVEvt.pURLField ) // URL
+ {
+ ScGlobal::OpenURL( aVEvt.pURLField->GetURL(),
+ aVEvt.pURLField->GetTargetFrame() );
+
+ pViewShell->FakeButtonUp( pViewShell->GetViewData()->GetActivePart() );
+ return TRUE; // kein CaptureMouse etc.
+ }
+ }
+
+ // Markieren
+
+ if ( !rMEvt.IsShift() )
+ pView->UnmarkAll();
+
+ if ( pView->MarkObj(aMDPos, -2, FALSE, rMEvt.IsMod1()) )
+ {
+ //*********************************************************
+ //Objekt verschieben
+ //********************************************************
+ if (pView->IsMarkedHit(aMDPos))
+ {
+ aDragTimer.Start();
+ pHdl=pView->HitHandle(aMDPos, *pWindow);
+ pView->BegDragObj(aMDPos, (OutputDevice*) NULL, pHdl);
+ bReturn = TRUE;
+ }
+ else // Objekt am Rand getroffen
+ if (pViewShell->IsDrawSelMode())
+ bReturn = TRUE;
+ }
+ else
+ {
+ // nichts getroffen
+
+ if (pViewShell->IsDrawSelMode())
+ {
+ //*********************************************************
+ //Objekt selektieren
+ //********************************************************
+ pView->BegMarkObj(aMDPos, (OutputDevice*) NULL);
+ bReturn = TRUE;
+ }
+ }
+ }
+ }
+
+ if ( !bReturn )
+ bReturn = TestComment( pView->GetPageViewPvNum(0), aMDPos );
+ }
+
+ if (!bIsInDragMode)
+ {
+ if (!bVCAction) // VC rufen selber CaptureMouse
+ pWindow->CaptureMouse();
+ ForcePointer(&rMEvt);
+ }
+
+ return bReturn;
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuSelection::MouseMove(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FuDraw::MouseMove(rMEvt);
+
+ if (aDragTimer.IsActive() )
+ {
+ Point aOldPixel = pWindow->LogicToPixel( aMDPos );
+ Point aNewPixel = rMEvt.GetPosPixel();
+ if ( Abs( aOldPixel.X() - aNewPixel.X() ) > SC_MAXDRAGMOVE ||
+ Abs( aOldPixel.Y() - aNewPixel.Y() ) > SC_MAXDRAGMOVE )
+ aDragTimer.Stop();
+ }
+
+ if ( pView->IsAction() )
+ {
+ Point aPix(rMEvt.GetPosPixel());
+ Point aPnt(pWindow->PixelToLogic(aPix));
+
+ ForceScroll(aPix);
+ pView->MovAction(aPnt);
+ bReturn = TRUE;
+ }
+
+ // Ein VCControl ist aktiv
+ // Event an den Manager weiterleiten
+ if( bVCAction )
+ {
+ // GetSbxForm gibts nicht mehr - Basic-Controls sind tot
+ //SdrPageView* pPgView = pView->GetPageViewPvNum(0);
+ //ScDrawPage* pPage = (ScDrawPage*)pPgView->GetPage();
+ //VCSbxForm* pForm = (VCSbxForm*)(SbxObject*)(pPage->GetSbxForm());
+ //((VCManager*)(pForm->GetVCContainer()))->
+ // MouseMove( pWindow, rMEvt );
+ bReturn = TRUE;
+ }
+
+ ForcePointer(&rMEvt);
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuSelection::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FuDraw::MouseButtonUp(rMEvt);
+// BOOL bOle = pViewShell->GetViewData()->IsOle();
+ BOOL bOle = pViewShell->GetViewFrame()->ISA(SfxInPlaceFrame);
+
+ if (aDragTimer.IsActive() )
+ {
+ aDragTimer.Stop();
+ }
+
+ Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+
+ if ( rMEvt.IsLeft() )
+ {
+ if ( pView->IsDragObj() )
+ {
+ /******************************************************************
+ * Objekt wurde verschoben
+ ******************************************************************/
+ pView->EndDragObj( rMEvt.IsMod1() );
+ pView->ForceMarkedToAnotherPage();
+ bReturn = TRUE;
+ }
+ else if (pView->IsAction() )
+ {
+ pView->EndAction();
+ if ( pView->HasMarkedObj() )
+ bReturn = TRUE;
+ }
+ }
+
+/*
+ if ( pView->IsObjEdit() )
+ {
+ BOOL bShowCursor = TRUE;
+//! pOutlinerView = pView->GetOutlinerView(pWindow, bShowCursor);
+ bReturn = TRUE;
+ }
+*/
+ /**************************************************************************
+ * Ggf. OLE-Objekt beruecksichtigen
+ **************************************************************************/
+ SfxInPlaceClient* pIPClient = pViewShell->GetIPClient();
+
+ if (pIPClient)
+ {
+ if ( pIPClient->IsInPlaceActive() )
+ {
+ pIPClient->GetProtocol().Reset2Open();
+// SFX_APP()->SetDispatcher(pViewShell->GetViewFrame()->GetDispatcher() );
+ SFX_APP()->SetViewFrame(pViewShell->GetViewFrame()); // 242.a: ???
+ }
+ }
+
+ USHORT nClicks = rMEvt.GetClicks();
+ if ( nClicks == 2 && rMEvt.IsLeft() )
+ {
+ if ( pView->HasMarkedObj() )
+ {
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+ if (rMarkList.GetMarkCount() == 1)
+ {
+ SdrMark* pMark = rMarkList.GetMark(0);
+ SdrObject* pObj = pMark->GetObj();
+
+ // #43984# aktivieren nur, wenn die Maus auch (noch) ueber dem
+ // selektierten Objekt steht
+
+ SdrViewEvent aVEvt;
+ SdrHitKind eHit = pView->PickAnything( rMEvt, SDRMOUSEBUTTONDOWN, aVEvt );
+ if ( eHit != SDRHIT_NONE && aVEvt.pObj == pObj )
+ {
+ UINT16 nSdrObjKind = pObj->GetObjIdentifier();
+
+ //
+ // OLE: aktivieren
+ //
+
+ if (nSdrObjKind == OBJ_OLE2)
+ {
+ if (!bOle)
+ {
+ SvInPlaceObjectRef aIPObj = ((SdrOle2Obj*) pObj)->GetObjRef();
+ if (aIPObj.Is())
+ {
+ pView->HideMarkHdl(NULL);
+ pViewShell->ActivateObject( (SdrOle2Obj*) pObj, 0 );
+ }
+ }
+ }
+
+ //
+ // Text: editieren
+ // #49458# nicht bei Uno-Controls
+ //
+ else if ( pObj->ISA(SdrTextObj) && !pObj->ISA(SdrUnoObj) )
+ {
+ SFX_DISPATCHER().Execute(SID_DRAW_TEXT, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD);
+
+ // jetzt den erzeugten FuText holen und in den EditModus setzen
+ FuPoor* pPoor = pViewShell->GetViewData()->GetView()->GetDrawFuncPtr();
+ if ( pPoor && pPoor->GetSlotID() == SID_DRAW_TEXT ) // hat keine RTTI
+ {
+ FuText* pText = (FuText*)pPoor;
+ Point aMousePixel = rMEvt.GetPosPixel();
+ pText->SetInEditMode( pObj, &aMousePixel );
+ }
+ bReturn = TRUE;
+ }
+ }
+ }
+ }
+ else if ( TestDetective( pView->GetPageViewPvNum(0), aPnt ) )
+ bReturn = TRUE;
+ }
+
+ // Ein VCControl ist aktiv
+ // Event an den Manager weiterleiten
+ if( bVCAction )
+ {
+ // GetSbxForm gibts nicht mehr - Basic-Controls sind tot
+ //SdrPageView* pPgView = pView->GetPageViewPvNum(0);
+ //ScDrawPage* pPage = (ScDrawPage*)pPgView->GetPage();
+ //VCSbxForm* pForm = (VCSbxForm*)(SbxObject*)(pPage->GetSbxForm());
+ //((VCManager*)(pForm->GetVCContainer()))->
+ // MouseButtonUp( pWindow, rMEvt );
+ pView->ShowMarkHdl( pWindow );
+ bVCAction = FALSE;
+ bReturn = TRUE;
+ }
+
+ ForcePointer(&rMEvt);
+
+ pWindow->ReleaseMouse();
+
+ // Command-Handler fuer Kontext-Menue kommt erst nach MouseButtonUp,
+ // darum hier die harte IsLeft-Abfrage
+ if ( !bReturn && rMEvt.IsLeft() )
+ if (pViewShell->IsDrawSelMode())
+ SFX_DISPATCHER().Execute(SID_OBJECT_SELECT, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL FuSelection::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FALSE;
+
+ if (!bReturn)
+ {
+ bReturn = FuDraw::KeyInput(rKEvt);
+ }
+
+ return(bReturn);
+}
+
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void FuSelection::Activate()
+{
+/*
+ SdrDragMode eMode;
+ switch (aSfxRequest.GetSlot() )
+ {
+ case SID_OBJECT_SELECT:
+ eMode = SDRDRAG_MOVE;
+ break;
+ case SID_OBJECT_ROTATE:
+ eMode = SDRDRAG_ROTATE;
+ break;
+ case SID_OBJECT_MIRROR:
+ eMode = SDRDRAG_MIRROR;
+ break;
+ }
+ pView->SetDragMode(eMode);
+*/
+ FuDraw::Activate();
+}
+
+
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+void FuSelection::Deactivate()
+{
+ /**************************************************************************
+ * Hide Cursor
+ **************************************************************************/
+ BOOL bShowCursor = FALSE;
+//! pOutlinerView = pView->GetOutlinerView(pWindow, bShowCursor);
+
+// pView->SetDragMode(SDRDRAG_MOVE);
+ FuDraw::Deactivate();
+}
+
+
+#ifdef WNT
+#pragma optimize ( "", on )
+#endif
+
+
+
+
+
diff --git a/sc/source/ui/drawfunc/fusel2.cxx b/sc/source/ui/drawfunc/fusel2.cxx
new file mode 100644
index 000000000000..f9c7f5897f33
--- /dev/null
+++ b/sc/source/ui/drawfunc/fusel2.cxx
@@ -0,0 +1,417 @@
+/*************************************************************************
+ *
+ * $RCSfile: fusel2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX ***
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX ***
+//#define _SFXDOCTDLG_HXX ***
+//#define _SFX_TEMPLDLG_HXX ***
+//#define _SFXNEW_HXX ***
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+#define _XTABLE_HXX //???
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS //???
+//#define _SDR_NOVIEWS ***
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+//#define _SIDLL_HXX ***
+
+
+
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svditer.hxx>
+#include <svx/svdocapt.hxx>
+#include <svx/svdpagv.hxx>
+#include <sfx2/dispatch.hxx>
+#include <svx/svdview.hxx>
+
+#include "fusel.hxx"
+#include "tabvwsh.hxx"
+#include "document.hxx"
+#include "detfunc.hxx"
+#include "futext.hxx"
+#include "sc.hrc"
+
+// -----------------------------------------------------------------------
+
+inline long Diff( const Point& rP1, const Point& rP2 )
+{
+ long nX = rP1.X() - rP2.X();
+ if (nX<0) nX = -nX;
+ long nY = rP1.Y() - rP2.Y();
+ if (nY<0) nY = -nY;
+ return nX+nY;
+}
+
+BOOL FuSelection::TestDetective( SdrPageView* pPV, const Point& rPos )
+{
+ if (!pPV)
+ return FALSE;
+
+ BOOL bFound = FALSE;
+ SdrObjListIter aIter( *pPV->GetObjList(), IM_FLAT );
+ SdrObject* pObject = aIter.Next();
+ while (pObject && !bFound)
+ {
+ if (ScDetectiveFunc::IsNonAlienArrow( pObject ))
+ {
+ USHORT nHitLog = (USHORT) pWindow->PixelToLogic(
+ Size(pView->GetHitTolerancePixel(),0)).Width();
+ if ( pObject->IsHit( rPos, nHitLog ) )
+ {
+ ScViewData* pViewData = pViewShell->GetViewData();
+ ScSplitPos ePos = pViewShell->FindWindow( pWindow );
+ Point aLineStart = pObject->GetPoint(0);
+ Point aLineEnd = pObject->GetPoint(1);
+ Point aPixel = pWindow->LogicToPixel( aLineStart );
+ short nStartCol;
+ short nStartRow;
+ pViewData->GetPosFromPixel( aPixel.X(), aPixel.Y(), ePos, nStartCol, nStartRow );
+ aPixel = pWindow->LogicToPixel( aLineEnd );
+ short nEndCol;
+ short nEndRow;
+ pViewData->GetPosFromPixel( aPixel.X(), aPixel.Y(), ePos, nEndCol, nEndRow );
+ short nCurX = (short) pViewData->GetCurX();
+ short nCurY = (short) pViewData->GetCurY();
+ BOOL bStart = ( Diff( rPos,aLineStart ) > Diff( rPos,aLineEnd ) );
+ if ( nCurX == nStartCol && nCurY == nStartRow )
+ bStart = FALSE;
+ else if ( nCurX == nEndCol && nCurY == nEndRow )
+ bStart = TRUE;
+
+ short nDifX;
+ short nDifY;
+ if ( bStart )
+ {
+ nDifX = nStartCol - nCurX;
+ nDifY = nStartRow - nCurY;
+ }
+ else
+ {
+ nDifX = nEndCol - nCurX;
+ nDifY = nEndRow - nCurY;
+ }
+ pViewShell->MoveCursorRel( nDifX, nDifY, SC_FOLLOW_JUMP, FALSE );
+
+ bFound = TRUE;
+ }
+ }
+
+ pObject = aIter.Next();
+ }
+ return bFound;
+}
+
+BOOL FuSelection::TestComment( SdrPageView* pPV, const Point& rPos )
+{
+ if (!pPV)
+ return FALSE;
+
+ BOOL bFound = FALSE;
+ SdrObjListIter aIter( *pPV->GetObjList(), IM_FLAT );
+ SdrObject* pObject = aIter.Next();
+ while (pObject && !bFound)
+ {
+ if ( pObject->GetLayer()==SC_LAYER_INTERN && pObject->ISA(SdrCaptionObj)
+ && pObject->GetLogicRect().IsInside( rPos ) )
+ {
+// SdrHdl* pHdl = pView->HitHandle( rPos, *pWindow );
+// BOOL bDrag = pView->BegDragObj( rPos, NULL, pHdl );
+
+ SFX_DISPATCHER().Execute(SID_DRAW_NOTEEDIT, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD);
+ // jetzt den erzeugten FuText holen und in den EditModus setzen
+ FuPoor* pPoor = pViewShell->GetViewData()->GetView()->GetDrawFuncPtr();
+ if ( pPoor && pPoor->GetSlotID() == SID_DRAW_NOTEEDIT ) // hat keine RTTI
+ {
+ FuText* pText = (FuText*)pPoor;
+ Point aPixel = pWindow->LogicToPixel( rPos );
+ pText->SetInEditMode( pObject, &aPixel );
+ }
+
+ bFound = TRUE;
+ }
+
+ pObject = aIter.Next();
+ }
+
+ return bFound;
+}
+
+//==================================================================
+
+
+
+
diff --git a/sc/source/ui/drawfunc/futext.cxx b/sc/source/ui/drawfunc/futext.cxx
new file mode 100644
index 000000000000..2f1bc5c4b079
--- /dev/null
+++ b/sc/source/ui/drawfunc/futext.cxx
@@ -0,0 +1,1001 @@
+/*************************************************************************
+ *
+ * $RCSfile: futext.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+#define _STATUS_HXX
+#define _SVTCTRL3_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX ***
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX ***
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX
+//#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX
+//#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX
+//#define _SFXDOCTDLG_HXX
+//#define _SFX_TEMPLDLG_HXX
+//#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX **
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX ***
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX ***
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+//------------------------------------------------------------------
+
+#include <svx/svddef.hxx>
+#include <svx/svdoutl.hxx>
+#include <svx/sdtaaitm.hxx>
+#include <svx/sdtacitm.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdview.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <svx/svxids.hrc>
+
+#include "futext.hxx"
+#include "drwlayer.hxx"
+#include "sc.hrc"
+#include "tabvwsh.hxx"
+
+// Maximal erlaubte Mausbewegung um noch Drag&Drop zu starten
+//! fusel,fuconstr,futext - zusammenfassen!
+#define SC_MAXDRAGMOVE 3
+
+//------------------------------------------------------------------
+
+void lcl_InvalidateAttribs()
+{
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ rBindings.Invalidate( SID_ATTR_CHAR_WEIGHT );
+ rBindings.Invalidate( SID_ATTR_CHAR_POSTURE );
+ rBindings.Invalidate( SID_ATTR_CHAR_UNDERLINE );
+ rBindings.Invalidate( SID_ULINE_VAL_NONE );
+ rBindings.Invalidate( SID_ULINE_VAL_SINGLE );
+ rBindings.Invalidate( SID_ULINE_VAL_DOUBLE );
+ rBindings.Invalidate( SID_ULINE_VAL_DOTTED );
+ rBindings.Invalidate( SID_ATTR_CHAR_COLOR );
+ rBindings.Invalidate( SID_ATTR_CHAR_FONT );
+ rBindings.Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
+ rBindings.Invalidate( SID_ATTR_PARA_ADJUST_LEFT );
+ rBindings.Invalidate( SID_ATTR_PARA_ADJUST_CENTER );
+ rBindings.Invalidate( SID_ATTR_PARA_ADJUST_RIGHT );
+ rBindings.Invalidate( SID_ATTR_PARA_ADJUST_BLOCK );
+ rBindings.Invalidate( SID_ATTR_PARA_LINESPACE_10 );
+ rBindings.Invalidate( SID_ATTR_PARA_LINESPACE_15 );
+ rBindings.Invalidate( SID_ATTR_PARA_LINESPACE_20 );
+ rBindings.Invalidate( SID_SET_SUPER_SCRIPT );
+ rBindings.Invalidate( SID_SET_SUB_SCRIPT );
+ rBindings.Invalidate( SID_HYPERLINK_GETLINK );
+}
+
+/*************************************************************************
+|*
+|* Basisklasse fuer Textfunktionen
+|*
+\************************************************************************/
+
+FuText::FuText(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq) :
+ FuConstruct(pViewSh, pWin, pView, pDoc, rReq),
+ pTextObj(NULL)
+{
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+FuText::~FuText()
+{
+// StopEditMode(); // in Deactivate !
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuText::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+
+ if ( pView->MouseButtonDown(rMEvt, pWindow) )
+ return (TRUE); // Event von der SdrView ausgewertet
+
+ if ( pView->IsTextEdit() )
+ {
+ StopEditMode(); // Danebengeklickt, Ende mit Edit
+ pView->SetCreateMode();
+ }
+
+ aMDPos = pWindow->PixelToLogic( rMEvt.GetPosPixel() );
+
+ if ( rMEvt.IsLeft() )
+ {
+ SdrHdl* pHdl = pView->HitHandle(aMDPos, *pWindow);
+
+ ULONG nHdlNum = pView->GetHdlNum(pHdl);
+
+ if (pHdl != NULL)
+ {
+ if (pView->HasMarkablePoints() && pView->IsPointMarkable(*pHdl))
+ {
+ BOOL bPointMarked=pView->IsPointMarked(*pHdl);
+
+ if ( rMEvt.IsShift() )
+ {
+ if (!bPointMarked)
+ {
+ pView->MarkPoint(*pHdl);
+ }
+ else
+ {
+ pView->UnmarkPoint(*pHdl);
+ }
+ }
+ else
+ {
+ if (!bPointMarked)
+ {
+ pView->UnmarkAllPoints();
+ pView->MarkPoint(*pHdl);
+ }
+ }
+ pHdl=pView->GetHdl(nHdlNum);
+ }
+ }
+
+ SdrObject* pObj;
+ SdrPageView* pPV;
+
+ if ( pHdl != NULL || pView->IsMarkedHit(aMDPos) )
+ {
+ if (pHdl == NULL &&
+// pView->TakeTextEditObject(aMDPos, pObj, pPV) )
+ pView->PickObj(aMDPos, pObj, pPV, SDRSEARCH_PICKTEXTEDIT) )
+ {
+ SdrOutliner* pO = MakeOutliner();
+ //!?? ohne uebergebenen Outliner stimmen die Defaults nicht ???!?
+ if ( pView->BegTextEdit(pObj, pPV, pWindow, (FASTBOOL)TRUE, pO) )
+ {
+ // EditEngine-UndoManager anmelden
+ pViewShell->SetDrawTextUndo( &pO->GetUndoManager() );
+
+ OutlinerView* pOLV = pView->GetTextEditOutlinerView();
+ if ( pOLV->MouseButtonDown(rMEvt) )
+ return (TRUE); // Event an den Outliner
+ }
+ }
+ else
+ {
+ aDragTimer.Start();
+ pView->BegDragObj(aMDPos, (OutputDevice*) NULL, pHdl);
+ }
+ }
+ else
+ {
+ BOOL bMacro = FALSE;
+
+// if (bMacro && pView->TakeMacroObject(aMDPos,pObj,pPV))
+ if (bMacro && pView->PickObj(aMDPos, pObj, pPV, SDRSEARCH_PICKMACRO) )
+
+ {
+ pView->BegMacroObj(aMDPos,pObj,pPV,pWindow);
+ }
+ else
+ {
+ if (pView->IsEditMode())
+ {
+ BOOL bPointMode=pView->HasMarkablePoints();
+
+ if (!rMEvt.IsShift())
+ {
+ if (bPointMode)
+ {
+ pView->UnmarkAllPoints();
+ }
+ else
+ {
+ pView->UnmarkAll();
+ }
+
+ pView->SetDragMode(SDRDRAG_MOVE);
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_OBJECT_ROTATE );
+ rBindings.Invalidate( SID_OBJECT_MIRROR );
+ pHdl=pView->GetHdl(nHdlNum);
+ }
+
+ if ( pView->MarkObj(aMDPos, -2, FALSE, rMEvt.IsMod1()) )
+ {
+ aDragTimer.Start();
+
+ pHdl=pView->HitHandle(aMDPos,*pWindow);
+
+ if (pHdl!=NULL)
+ {
+ pView->MarkPoint(*pHdl);
+ pHdl=pView->GetHdl(nHdlNum);
+ }
+
+ pView->BegDragObj(aMDPos, (OutputDevice*) NULL, pHdl);
+ }
+ else
+ {
+ if (bPointMode)
+ {
+ pView->BegMarkPoints(aMDPos, (OutputDevice*) NULL);
+ }
+ else
+ {
+ pView->BegMarkObj(aMDPos, (OutputDevice*) NULL);
+ }
+ }
+ }
+ else if (aSfxRequest.GetSlot() == SID_DRAW_NOTEEDIT )
+ {
+ // Notizen editieren -> keine neuen Textobjekte erzeugen,
+ // stattdessen Textmodus verlassen
+
+ SFX_DISPATCHER().Execute(aSfxRequest.GetSlot(), SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+ }
+ else
+ {
+ /**********************************************************
+ * Objekt erzeugen
+ **********************************************************/
+ pView->BegCreateObj(aMDPos, (OutputDevice*) NULL);
+ }
+ }
+ }
+ }
+
+ if (!bIsInDragMode)
+ {
+ pWindow->CaptureMouse();
+// ForcePointer(&rMEvt);
+ lcl_InvalidateAttribs();
+ }
+
+ pViewShell->SetActivePointer(pView->GetPreferedPointer(
+ pWindow->PixelToLogic(rMEvt.GetPosPixel()), pWindow ));
+
+// return (bReturn);
+ return TRUE;
+}
+
+/*************************************************************************
+|*
+|* MouseMove-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuText::MouseMove(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+
+// pViewShell->SetActivePointer(aNewPointer);
+
+ pViewShell->SetActivePointer(pView->GetPreferedPointer(
+ pWindow->PixelToLogic(rMEvt.GetPosPixel()), pWindow ));
+
+ if (aDragTimer.IsActive() )
+ {
+ Point aOldPixel = pWindow->LogicToPixel( aMDPos );
+ Point aNewPixel = rMEvt.GetPosPixel();
+ if ( Abs( aOldPixel.X() - aNewPixel.X() ) > SC_MAXDRAGMOVE ||
+ Abs( aOldPixel.Y() - aNewPixel.Y() ) > SC_MAXDRAGMOVE )
+ aDragTimer.Stop();
+ }
+
+ if ( pView->MouseMove(rMEvt, pWindow) )
+ return (TRUE); // Event von der SdrView ausgewertet
+
+ if ( pView->IsAction() )
+ {
+/* aNewPointer = Pointer(POINTER_TEXT);
+ pViewShell->SetActivePointer(aNewPointer);
+*/
+ Point aPix(rMEvt.GetPosPixel());
+ Point aPnt(pWindow->PixelToLogic(aPix));
+
+ ForceScroll(aPix);
+ pView->MovAction(aPnt);
+ }
+
+// ForcePointer(&rMEvt);
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-event
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuText::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bReturn = FALSE;
+
+ if (aDragTimer.IsActive() )
+ {
+ aDragTimer.Stop();
+ }
+
+ lcl_InvalidateAttribs();
+
+ Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
+
+ if ( pView->MouseButtonUp(rMEvt, pWindow) )
+ return (TRUE); // Event von der SdrView ausgewertet
+
+ if ( pView->IsDragObj() )
+ {
+ pView->EndDragObj( rMEvt.IsShift() );
+ pView->ForceMarkedToAnotherPage();
+ }
+ else if ( pView->IsCreateObj() )
+ {
+ if (rMEvt.IsLeft())
+ {
+ pView->EndCreateObj(SDRCREATE_FORCEEND);
+ if (aSfxRequest.GetSlot() == SID_DRAW_TEXT_MARQUEE)
+ {
+ // Lauftext-Objekt erzeugen?
+
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+ if (rMarkList.GetMark(0))
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+
+ // die fuer das Scrollen benoetigten Attribute setzen
+ SfxItemSet aItemSet( pDrDoc->GetItemPool(),
+ SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST);
+
+ aItemSet.Put( SdrTextAutoGrowWidthItem( FALSE ) );
+ aItemSet.Put( SdrTextAutoGrowHeightItem( FALSE ) );
+ aItemSet.Put( SdrTextAniKindItem( SDRTEXTANI_SLIDE ) );
+ aItemSet.Put( SdrTextAniDirectionItem( SDRTEXTANI_LEFT ) );
+ aItemSet.Put( SdrTextAniCountItem( 1 ) );
+ aItemSet.Put( SdrTextAniAmountItem(
+ (INT16)pWindow->PixelToLogic(Size(2,1)).Width()) );
+ pObj->SetAttributes(aItemSet, FALSE);
+ }
+ }
+ SetInEditMode();
+
+ // Modus verlassen bei einzelnem Klick
+ // (-> fuconstr)
+
+ if ( !pView->HasMarkedObj() )
+ {
+ pView->MarkObj(aPnt, -2, FALSE, rMEvt.IsMod1());
+
+ if ( pView->HasMarkedObj() )
+ SFX_DISPATCHER().Execute(SID_OBJECT_SELECT, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+ else
+ SFX_DISPATCHER().Execute(aSfxRequest.GetSlot(), SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+ }
+ }
+ }
+ else if ( pView->IsAction() )
+ {
+ pView->EndAction();
+ }
+
+/* aNewPointer = Pointer(POINTER_TEXT);
+ pViewShell->SetActivePointer(aNewPointer);
+*/
+ ForcePointer(&rMEvt);
+ pWindow->ReleaseMouse();
+
+ if ( !pView->HasMarkedObj() )
+ {
+ SdrObject* pObj;
+ SdrPageView* pPV;
+
+ if ( pView->PickObj(aPnt, pObj, pPV) )
+ {
+ if ( pView->MarkObj(aPnt, -2, FALSE, rMEvt.IsMod1()) )
+ {
+ UINT16 nSdrObjKind = pObj->GetObjIdentifier();
+
+ if (nSdrObjKind != OBJ_TEXT &&
+ nSdrObjKind != OBJ_TITLETEXT &&
+ nSdrObjKind != OBJ_OUTLINETEXT &&
+ ! pObj->ISA(SdrTextObj) )
+ {
+// SFX_DISPATCHER().Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
+ }
+ }
+ }
+ }
+
+ return (bReturn);
+}
+
+/*************************************************************************
+|*
+|* Maus-Pointer umschalten
+|*
+\************************************************************************/
+
+void FuText::ForcePointer(const MouseEvent* pMEvt)
+{
+ pViewShell->SetActivePointer( aNewPointer );
+
+/*
+ if ( !pView->IsAction() )
+ {
+ Point aPnt(pWindow->PixelToLogic( pWindow->ScreenToOutputPixel(
+ Pointer::GetPosPixel() ) ) );
+ SdrHdl* pHdl=pView->HitHandle(aPnt, *pWindow);
+
+ if (pHdl!=NULL)
+ {
+ pViewShell->SetActivePointer(pHdl->GetPointer() );
+ }
+ else
+ {
+ SdrObject* pObj;
+ SdrPageView* pPV;
+
+ if ( pView->IsMarkedHit(aPnt) )
+ {
+ if ( pView->TakeTextEditObject(aPnt, pObj, pPV) )
+ {
+ pViewShell->SetActivePointer(Pointer(POINTER_TEXT));
+ }
+ else
+ {
+ pViewShell->SetActivePointer(Pointer(POINTER_MOVE));
+ }
+ }
+ else
+ {
+// if ( pView->TakeMacroObject(aPnt, pObj, pPV) )
+ if ( pView->PickObj(aPnt, pObj, pPV, SDRSEARCH_PICKMACRO) )
+ {
+ pViewShell->SetActivePointer( pObj->GetMacroPointer() );
+ }
+ else
+ {
+ pViewShell->SetActivePointer( aNewPointer );
+ }
+ }
+ }
+ }
+*/
+}
+
+
+
+/*************************************************************************
+|*
+|* Tastaturereignisse bearbeiten
+|*
+|* Wird ein KeyEvent bearbeitet, so ist der Return-Wert TRUE, andernfalls
+|* FALSE.
+|*
+\************************************************************************/
+
+BOOL __EXPORT FuText::KeyInput(const KeyEvent& rKEvt)
+{
+ BOOL bReturn = FALSE;
+
+ if ( pView->KeyInput(rKEvt, pWindow) )
+ {
+ bReturn = TRUE;
+ lcl_InvalidateAttribs();
+ }
+ else
+ {
+ bReturn = FuDraw::KeyInput(rKEvt);
+ }
+
+ return (bReturn);
+}
+
+
+
+/*************************************************************************
+|*
+|* Function aktivieren
+|*
+\************************************************************************/
+
+void FuText::Activate()
+{
+ pView->SetDragMode(SDRDRAG_MOVE);
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_OBJECT_ROTATE );
+ rBindings.Invalidate( SID_OBJECT_MIRROR );
+
+// Sofort in den Edit Mode setzen
+// SetInEditMode();
+
+// if (!pTextObj)
+ {
+ /**********************************************************************
+ * Kein Textobjekt im EditMode, daher CreateMode setzen
+ **********************************************************************/
+ USHORT nObj = OBJ_TEXT;
+
+/* UINT16 nIdent;
+ UINT32 nInvent;
+ pView->TakeCurrentObj(nIdent, nInvent);
+*/
+ pView->SetCurrentObj(nObj);
+
+ pView->SetCreateMode();
+ }
+
+ aNewPointer = Pointer(POINTER_TEXT);
+// aNewPointer = Pointer(POINTER_CROSS); //! ???
+
+ aOldPointer = pWindow->GetPointer();
+ pViewShell->SetActivePointer( aNewPointer );
+
+ FuConstruct::Activate();
+}
+
+
+/*************************************************************************
+|*
+|* Function deaktivieren
+|*
+\************************************************************************/
+
+void FuText::Deactivate()
+{
+ FuConstruct::Deactivate();
+ pViewShell->SetActivePointer( aOldPointer );
+ StopEditMode();
+}
+
+
+/*************************************************************************
+|*
+|* Selektion hat sich geaendert
+|*
+\************************************************************************/
+
+void FuText::SelectionHasChanged()
+{
+ pView->SetDragMode(SDRDRAG_MOVE);
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_OBJECT_ROTATE );
+ rBindings.Invalidate( SID_OBJECT_MIRROR );
+
+ pTextObj = NULL;
+
+ if ( pView->HasMarkedObj() )
+ {
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+
+ if (rMarkList.GetMarkCount() == 1)
+ {
+ SdrMark* pMark = rMarkList.GetMark(0);
+ SdrObject* pObj = pMark->GetObj();
+
+ UINT16 nSdrObjKind = pObj->GetObjIdentifier();
+
+ if (nSdrObjKind == OBJ_TEXT ||
+ nSdrObjKind == OBJ_TITLETEXT ||
+ nSdrObjKind == OBJ_OUTLINETEXT /* ||
+ pObj->ISA(SdrTextObj) */ )
+ {
+ pTextObj = (SdrTextObj*) pObj;
+ }
+ }
+ }
+
+ if (!pTextObj)
+ {
+ /**********************************************************************
+ * Kein Textobjekt im EditMode, daher CreateMode setzen
+ **********************************************************************/
+ USHORT nObj = OBJ_TEXT;
+ UINT16 nIdent;
+ UINT32 nInvent;
+ pView->TakeCurrentObj(nIdent, nInvent);
+
+// if (! pView->IsEditMode() )
+// {
+// if (nIdent == OBJ_TEXT)
+// {
+// nObj = OBJ_TEXT;
+// }
+// else if (nIdent == OBJ_OUTLINETEXT)
+// {
+// nObj = OBJ_OUTLINETEXT;
+// }
+// else if (nIdent == OBJ_TITLETEXT)
+// {
+// nObj = OBJ_TITLETEXT;
+// }
+// }
+
+ pView->SetCurrentObj(nObj);
+
+ pView->SetCreateMode();
+ }
+}
+
+/*************************************************************************
+|*
+|* Objekt in Edit-Mode setzen
+|*
+\************************************************************************/
+
+void FuText::SetInEditMode(SdrObject* pObj, const Point* pMousePixel)
+{
+ // pObj != NULL, wenn ein spezielles (nicht markiertes) Objekt editiert werden soll
+ // (-> Legendenobjekt von Notizen)
+ // wenn pObj == NULL, markiertes Objekt nehmen
+
+ SdrLayer* pLockLayer = NULL;
+ if ( pObj && pObj->GetLayer() == SC_LAYER_INTERN )
+ {
+ // auf gelocktem Layer kann nicht editiert werden, darum den Layer
+ // temporaer auf nicht gelockt setzen
+
+ pLockLayer = pDrDoc->GetLayerAdmin().GetLayerPerID(SC_LAYER_INTERN);
+ if (pLockLayer)
+ pView->SetLayerLocked( pLockLayer->GetName(), FALSE );
+ }
+
+ if ( !pObj && pView->HasMarkedObj() )
+ {
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+ if (rMarkList.GetMarkCount() == 1)
+ {
+ SdrMark* pMark = rMarkList.GetMark(0);
+ pObj = pMark->GetObj();
+ }
+ }
+
+ pTextObj = NULL;
+
+ if ( pObj )
+ {
+ UINT16 nSdrObjKind = pObj->GetObjIdentifier();
+
+ if (nSdrObjKind == OBJ_TEXT ||
+ nSdrObjKind == OBJ_TITLETEXT ||
+ nSdrObjKind == OBJ_OUTLINETEXT ||
+ pObj->ISA(SdrTextObj))
+ {
+ SdrPageView* pPV = pView->GetPageViewPvNum(0);
+ Rectangle aRect = pObj->GetLogicRect();
+ Point aPnt = aRect.Center();
+
+ if ( pObj->HasTextEdit() )
+ {
+ SdrOutliner* pO = MakeOutliner();
+ //!?? ohne uebergebenen Outliner stimmen die Defaults nicht ???!?
+ if ( pView->BegTextEdit(pObj, pPV, pWindow, (FASTBOOL)TRUE, pO) )
+ {
+ // EditEngine-UndoManager anmelden
+ pViewShell->SetDrawTextUndo( &pO->GetUndoManager() );
+
+ pTextObj = (SdrTextObj*) pObj;
+ pView->SetEditMode();
+
+ // ggf. Text-Cursor an Klickposition setzen
+ if (pMousePixel)
+ {
+ OutlinerView* pOLV = pView->GetTextEditOutlinerView();
+ if (pOLV)
+ {
+ MouseEvent aEditEvt( *pMousePixel, 1, MOUSE_SYNTHETIC, MOUSE_LEFT, 0 );
+ pOLV->MouseButtonDown(aEditEvt);
+ pOLV->MouseButtonUp(aEditEvt);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (pLockLayer)
+ pView->SetLayerLocked( pLockLayer->GetName(), TRUE );
+}
+
+
+
+
diff --git a/sc/source/ui/drawfunc/futext2.cxx b/sc/source/ui/drawfunc/futext2.cxx
new file mode 100644
index 000000000000..e78b10ca383e
--- /dev/null
+++ b/sc/source/ui/drawfunc/futext2.cxx
@@ -0,0 +1,340 @@
+/*************************************************************************
+ *
+ * $RCSfile: futext2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+#define _STATUS_HXX
+#define _SVTCTRL3_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX ***
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX ***
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX
+//#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX
+//#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX
+//#define _SFXDOCTDLG_HXX
+//#define _SFX_TEMPLDLG_HXX
+//#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX **
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+//#define _ARGS_HXX ***
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX ***
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX ***
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+//------------------------------------------------------------------------
+
+#include <svx/svdoutl.hxx>
+#include <svx/svdetc.hxx>
+
+#include "futext.hxx"
+#include "tabvwsh.hxx"
+
+//------------------------------------------------------------------------
+
+SdrOutliner* FuText::MakeOutliner()
+{
+ ScViewData* pViewData = pViewShell->GetViewData();
+ SdrOutliner* pOutl = SdrMakeOutliner(OUTLINERMODE_OUTLINEOBJECT, pDrDoc);
+
+ pViewData->UpdateOutlinerFlags(*pOutl);
+
+ // Die EditEngine benutzt beim RTF Export (Clipboard / Drag&Drop)
+ // den MapMode des RefDevices, um die Fontgroesse zu setzen
+
+ OutputDevice* pRef = pOutl->GetRefDevice(); // das sollte der Drucker sein
+ if (pRef && pRef != pWindow)
+ pRef->SetMapMode( MapMode(MAP_100TH_MM) );
+
+ return pOutl;
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/futext3.cxx b/sc/source/ui/drawfunc/futext3.cxx
new file mode 100644
index 000000000000..0c58ccbef886
--- /dev/null
+++ b/sc/source/ui/drawfunc/futext3.cxx
@@ -0,0 +1,427 @@
+/*************************************************************************
+ *
+ * $RCSfile: futext3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+//#define _CURSOR_HXX ***
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+#define _STATUS_HXX
+#define _SVTCTRL3_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX ***
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX ***
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX
+//#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+#define _SFXINIMGR_HXX //???
+//#define _SFXCFGITEM_HXX ***
+#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX ***
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+#define _SFX_BINDINGS_HXX
+#define _SFXDISPATCH_HXX
+#define _SFXMSG_HXX
+#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX ***
+#define _SFXMACRO_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX ***
+#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX ***
+//#define _SFX_CLIENTSH_HXX ***
+#define _SFXDOCINF_HXX
+#define _SFX_DOCFILT_HXX
+#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX ***
+#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX ***
+#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX **
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+//#define _ARGS_HXX ***
+//#define _SFXPOOLITEM_HXX ***
+//#define _SFXINTITEM_HXX ***
+//#define _SFXENUMITEM_HXX ***
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX ***
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX ***
+//#define _SFXITEMSET_HXX ***
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+#define _SFXSLSTITM_HXX
+#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX ***
+//#define _XPOLY_HXX ***
+//deefine _XATTR_HXX ***
+#define _XOUTX_HXX
+//#define _XPOOL_HXX ***
+#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS
+#define _SDR_NOVIEWS
+
+#define SI_NOITEMS
+#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX ***
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX ***
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+//------------------------------------------------------------------------
+
+#include <svx/editeng.hxx>
+#include <svx/outlobj.hxx>
+#include <svx/svdocapt.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdundo.hxx>
+#include <svx/svdview.hxx>
+#include <vcl/cursor.hxx>
+#include <sfx2/objsh.hxx>
+
+#include "global.hxx"
+#include "drwlayer.hxx"
+#include "userdat.hxx"
+#include "tabvwsh.hxx" // oder GetDocument irgendwo
+#include "document.hxx"
+#include "editutil.hxx"
+#include "futext.hxx"
+#include "globstr.hrc"
+
+//------------------------------------------------------------------------
+
+// ------------------------------------------------------------------------------------
+// Editieren von Notiz-Legendenobjekten muss immer ueber StopEditMode beendet werden,
+// damit die Aenderungen ins Dokument uebernommen werden!
+// (Fontwork-Execute in drawsh und drtxtob passiert nicht fuer Legendenobjekte)
+// ------------------------------------------------------------------------------------
+
+void FuText::StopEditMode()
+{
+ BOOL bComment = FALSE;
+ ScAddress aTabPos;
+
+ SdrObject* pObject = pView->GetTextEditObject();
+ if ( pObject && pObject->GetLayer()==SC_LAYER_INTERN && pObject->ISA(SdrCaptionObj) )
+ {
+ ScDrawObjData* pData = ScDrawLayer::GetObjData( pObject );
+ if( pData )
+ {
+ aTabPos = pData->aStt;
+ bComment = TRUE;
+ }
+ }
+
+ ScDocument* pDoc = pViewShell->GetViewData()->GetDocument();
+
+ SfxObjectShell* pObjSh = pViewShell->GetViewData()->GetSfxDocShell();
+ SfxUndoManager* pUndoMan = pObjSh->GetUndoManager();
+ if ( bComment )
+ {
+ // einblenden, editieren, ausblenden, Notiz aendern zusammen in eine ListAction
+
+ String aUndoStr = ScGlobal::GetRscString( STR_UNDO_EDITNOTE );
+ pUndoMan->EnterListAction( aUndoStr, aUndoStr );
+
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ SdrUndoGroup* pShowUndo = pModel->GetCalcUndo();
+ if (pShowUndo)
+ pUndoMan->AddUndoAction( pShowUndo );
+ }
+
+ SdrEndTextEditKind eResult = pView->EndTextEdit();
+ pViewShell->SetDrawTextUndo(NULL); // oder ScEndTextEdit (mit drawview.hxx)
+
+ Cursor* pCur = pWindow->GetCursor();
+ if (pCur && pCur->IsVisible())
+ pCur->Hide();
+
+ if ( bComment )
+ {
+ ScPostIt aNote;
+ BOOL bWas = pDoc->GetNote( aTabPos.Col(), aTabPos.Row(), aTabPos.Tab(), aNote );
+
+ // ignorieren nur, wenn Text unveraendert und Notiz dauerhaft angezeigt
+ // wenn nicht angezeigt, muss mindestens das Objekt weg (#43155#)
+
+ if ( eResult != SDRENDTEXTEDIT_UNCHANGED || !bWas || !aNote.IsShown() )
+ {
+ String aNewText; //! formatierten Text behalten ???
+ if ( eResult != SDRENDTEXTEDIT_DELETED )
+ {
+ OutlinerParaObject* pParaObj = pObject->GetOutlinerParaObject();
+ if ( pParaObj )
+ {
+ ScFieldEditEngine aEngine( pDoc->GetEnginePool() );
+ aEngine.SetText( pParaObj->GetTextObject() );
+ aNewText = aEngine.GetText( LINEEND_LF );
+ aNewText.ConvertLineEnd();
+ }
+ }
+ aNote.AutoSetText( aNewText ); // setzt auch Author und Date
+
+ BOOL bRemove = ( !aNote.IsShown() || !aNewText.Len() || !bWas );
+ if ( bRemove )
+ aNote.SetShown( FALSE );
+// pDoc->SetNote( aTabPos.Col(), aTabPos.Row(), aTabPos.Tab(), aNote );
+ pViewShell->SetNote( aTabPos.Col(), aTabPos.Row(), aTabPos.Tab(), aNote ); // mit Undo
+
+ if ( bRemove && eResult != SDRENDTEXTEDIT_DELETED ) // Legenden-Objekt loeschen ?
+ {
+ SdrPage* pPage = pDrDoc->GetPage( aTabPos.Tab() );
+// ER 28.04.97 19:12 laut JOE ist hier RecalcObjOrdNums unnoetig
+// pPage->RecalcObjOrdNums();
+ pDrDoc->AddUndo( new SdrUndoRemoveObj( *pObject ) );
+ pPage->RemoveObject( pObject->GetOrdNum() );
+ // #39351# RemoveObject loescht nicht (analog zu anderen Containern)
+ // trotzden kein "delete pObject" mehr, das Objekt gehoert jetzt dem Undo
+ }
+ }
+
+ pUndoMan->LeaveListAction();
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/drawfunc/graphsh.cxx b/sc/source/ui/drawfunc/graphsh.cxx
new file mode 100644
index 000000000000..a5045ef42c15
--- /dev/null
+++ b/sc/source/ui/drawfunc/graphsh.cxx
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: graphsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <svx/eeitem.hxx>
+#include <svx/fontwork.hxx>
+#include <svx/labdlg.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/tabarea.hxx>
+#include <svx/tabline.hxx>
+#include <svx/textanim.hxx>
+#include <svx/transfrm.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+#include <segmentc.hxx>
+
+#include "graphsh.hxx"
+#include "drwlayer.hxx"
+#include "sc.hrc"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "docpool.hxx"
+#include "drawview.hxx"
+#include "scresid.hxx"
+
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+
+#define ScGraphicShell
+#include "scslots.hxx"
+
+
+SFX_IMPL_INTERFACE(ScGraphicShell, ScDrawShell, ScResId(SCSTR_GRAPHICSHELL) )
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT|SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
+ ScResId(RID_DRAW_OBJECTBAR) );
+ SFX_POPUPMENU_REGISTRATION( ScResId(RID_POPUP_GRAPHIC) );
+ SFX_OBJECTMENU_REGISTRATION( SID_OBJECTMENU0, ScResId(RID_OBJECTMENU_DRAW) );
+}
+
+TYPEINIT1( ScGraphicShell, ScDrawShell );
+
+ScGraphicShell::ScGraphicShell(ScViewData* pData) :
+ ScDrawShell(pData)
+{
+ SetHelpId(HID_SCSHELL_GRAPHIC);
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("GraphicObject")));
+}
+
+ScGraphicShell::~ScGraphicShell()
+{
+}
+
+
+
diff --git a/sc/source/ui/drawfunc/makefile.mk b/sc/source/ui/drawfunc/makefile.mk
new file mode 100644
index 000000000000..655f06e1c512
--- /dev/null
+++ b/sc/source/ui/drawfunc/makefile.mk
@@ -0,0 +1,158 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=drawfunc
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..$/pch$/ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ fupoor.cxx \
+ fumark.cxx \
+ fudraw.cxx \
+ fusel.cxx \
+ fusel2.cxx \
+ fuconstr.cxx \
+ fuconrec.cxx \
+ fuconarc.cxx \
+ fuconctl.cxx \
+ fuconuno.cxx \
+ fuconpol.cxx \
+ fuins1.cxx \
+ fuins2.cxx \
+ futext.cxx \
+ futext2.cxx \
+ futext3.cxx \
+ drawsh.cxx \
+ drawsh1.cxx \
+ drawsh2.cxx \
+ drawsh3.cxx \
+ drawsh4.cxx \
+ drawsh5.cxx \
+ drtxtob.cxx \
+ drtxtob1.cxx \
+ drtxtob2.cxx \
+ drformsh.cxx \
+ oleobjsh.cxx \
+ chartsh.cxx \
+ graphsh.cxx \
+
+
+SRCFILES = \
+ objdraw.src\
+ drformsh.src
+
+SLOFILES = \
+ $(SLO)$/fupoor.obj \
+ $(SLO)$/fumark.obj \
+ $(SLO)$/fudraw.obj \
+ $(SLO)$/fusel.obj \
+ $(SLO)$/fusel2.obj \
+ $(SLO)$/fuconstr.obj \
+ $(SLO)$/fuconrec.obj \
+ $(SLO)$/fuconarc.obj \
+ $(SLO)$/fuconctl.obj \
+ $(SLO)$/fuconuno.obj \
+ $(SLO)$/fuconpol.obj \
+ $(SLO)$/fuins1.obj \
+ $(SLO)$/fuins2.obj \
+ $(SLO)$/futext.obj \
+ $(SLO)$/futext2.obj \
+ $(SLO)$/futext3.obj \
+ $(SLO)$/drawsh.obj \
+ $(SLO)$/drawsh1.obj \
+ $(SLO)$/drawsh2.obj \
+ $(SLO)$/drawsh3.obj \
+ $(SLO)$/drawsh4.obj \
+ $(SLO)$/drawsh5.obj \
+ $(SLO)$/drtxtob.obj \
+ $(SLO)$/drtxtob1.obj \
+ $(SLO)$/drtxtob2.obj \
+ $(SLO)$/drformsh.obj \
+ $(SLO)$/oleobjsh.obj \
+ $(SLO)$/chartsh.obj \
+ $(SLO)$/graphsh.obj
+
+
+NOOPTFILES=\
+ $(SLO)$/fusel.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/drawfunc/objdraw.src b/sc/source/ui/drawfunc/objdraw.src
new file mode 100644
index 000000000000..af1165a6d501
--- /dev/null
+++ b/sc/source/ui/drawfunc/objdraw.src
@@ -0,0 +1,1441 @@
+/*************************************************************************
+ *
+ * $RCSfile: objdraw.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+#include "submenu.hrc"
+#include <offmgr/offmenu.hrc>
+ //
+ // Defines -------------------------------------------------------------------------------
+ //
+#define MN_RESET\
+ MenuItem\
+ {\
+ Identifier = SID_TEXT_STANDARD ; \
+ HelpID = SID_TEXT_STANDARD ; \
+ Text = "Standar~d" ; \
+ Text [ ENGLISH ] = "Standar~d" ; \
+ Text [ dutch ] = "Standaar~d" ; \
+ Text [ english_us ] = "~Default" ; \
+ Text [ italian ] = "Standar~d" ; \
+ Text [ spanish ] = "~Predeterminado" ; \
+ Text [ french ] = "Par d~éfaut" ; \
+ Text [ swedish ] = "Standar~d" ; \
+ Text [ danish ] = "Standar~d" ; \
+ Text [ portuguese ] = "~Padrão" ; \
+ Text [ portuguese_brazilian ] = "Standar~d" ; \
+ Text[ chinese_simplified ] = "±ê×¼(~D)";\
+ Text[ russian ] = "~Ñòàíäàðò";\
+ Text[ polish ] = "~Standard";\
+ Text[ japanese ] = "•W€(~D)";\
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";\
+ Text[ arabic ] = "~ÞíÇÓí";\
+ Text[ greek ] = "~ÐñïåðéëïãÞ";\
+ Text[ korean ] = "±âº»°ª(~D)";\
+ Text[ turkish ] = "Standar~t";\
+ Text[ language_user1 ] = " ";\
+ };
+
+ // Font (SID_ATTR_CHAR_FONT) und Groesse (SID_ATTR_CHAR_FONTHEIGHT) duerfen nicht im
+ // Formatmenue auftauchen, weil die Controller im ExeEnv sonst im Container angelegt werden
+#define MN_TEXT_ATTR\
+ MenuItem\
+ {\
+ Identifier = RID_MN_FORMAT_STYLE ; \
+ HelpID = RID_MN_FORMAT_STYLE ; \
+ Text = "Sti~l" ; \
+ Text [ English ] = "St~yle" ; \
+ Text [ norwegian ] = "M~al" ; \
+ Text [ italian ] = "St~ile" ; \
+ Text [ portuguese_brazilian ] = "Es~tilo" ; \
+ Text [ portuguese ] = "Estil~o" ; \
+ Text [ finnish ] = "~Tyyli" ; \
+ Text [ danish ] = "Typografi" ; \
+ Text [ french ] = "St~yle" ; \
+ Text [ swedish ] = "Sti~l" ; \
+ Text [ dutch ] = "~Opmaak" ; \
+ Text [ spanish ] = "Est~ilo" ; \
+ Text [ english_us ] = "~Style" ; \
+ SubMenu = Menu\
+ {\
+ ItemList = \
+ {\
+ MenuItem\
+ {\
+ ITEM_FORMAT_ATTR_CHAR_WEIGHT\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_ATTR_CHAR_POSTURE\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_ATTR_CHAR_UNDERLINE\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_ATTR_CHAR_STRIKEOUT\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_ATTR_CHAR_SHADOWED\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_ATTR_CHAR_CONTOUR\
+ };\
+ MenuItem\
+ {\
+ Separator = TRUE ; \
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_SET_SUPER_SCRIPT ; \
+ HelpID = SID_SET_SUPER_SCRIPT ; \
+ Text = "~Hochstellen" ; \
+ Text [ English ] = "Su~perscript" ; \
+ Text [ norwegian ] = "Su~perskript" ; \
+ Text [ italian ] = "Apice" ; \
+ Text [ portuguese_brazilian ] = "So~brescrito" ; \
+ Text [ portuguese ] = "~Superior à linha" ; \
+ Text [ finnish ] = "~Yläindeksi" ; \
+ Text [ danish ] = "Hævet" ; \
+ Text [ french ] = "~Exposant" ; \
+ Text [ swedish ] = "~Upphöjt" ; \
+ Text [ dutch ] = "Su~perscript" ; \
+ Text [ spanish ] = "Superín~dice" ; \
+ Text [ english_us ] = "~Superscript" ; \
+ Text[ chinese_simplified ] = "Éϱê(~S)";\
+ Text[ russian ] = "Âåðõíèé ðåãèñòð";\
+ Text[ polish ] = "Indeks górny";\
+ Text[ japanese ] = "ã•t‚«(~S)";\
+ Text[ chinese_traditional ] = "¤W¼Ð(~S)";\
+ Text[ arabic ] = "ãÑÊÝÚ";\
+ Text[ greek ] = "ÅêèÝô~çò";\
+ Text[ korean ] = "À§ ÷ÀÚ(~S)";\
+ Text[ turkish ] = "~Üst simge";\
+ Text[ language_user1 ] = " ";\
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_SET_SUB_SCRIPT ; \
+ HelpID = SID_SET_SUB_SCRIPT ; \
+ Text = "~Tiefstellen" ; \
+ Text [ English ] = "Su~bscript" ; \
+ Text [ norwegian ] = "Su~bskript" ; \
+ Text [ italian ] = "Pedice" ; \
+ Text [ portuguese_brazilian ] = "Su~bscrito" ; \
+ Text [ portuguese ] = "~Inferior à linha" ; \
+ Text [ finnish ] = "~Alaindeksi" ; \
+ Text [ danish ] = "Sænket" ; \
+ Text [ french ] = "~Indice inférieur" ; \
+ Text [ swedish ] = "~Nedsänkt" ; \
+ Text [ dutch ] = "Su~bscript" ; \
+ Text [ spanish ] = "Su~bíndice" ; \
+ Text [ english_us ] = "S~ubscript" ; \
+ Text[ chinese_simplified ] = "챐(~U)";\
+ Text[ russian ] = "Íèæíèé ðåãèñòð";\
+ Text[ polish ] = "Indeks dolny";\
+ Text[ japanese ] = "‰º•t‚«(~U)";\
+ Text[ chinese_traditional ] = "¤U¼Ð(~U)";\
+ Text[ arabic ] = "ãäÎÝÖ";\
+ Text[ greek ] = "Äåßê~ôçò";\
+ Text[ korean ] = "¾Æ·¡Ã·ÀÚ(~U)";\
+ Text[ turkish ] = "~Alt simge";\
+ Text[ language_user1 ] = " ";\
+ };\
+ };\
+ };\
+ Text[ chinese_simplified ] = "ʽÑù(~S)";\
+ Text[ russian ] = "Ñòèëü";\
+ Text[ polish ] = "Styl";\
+ Text[ japanese ] = "½À²Ù(~S)";\
+ Text[ chinese_traditional ] = "¼Ë¦¡(~S)";\
+ Text[ arabic ] = "äãØ";\
+ Text[ greek ] = "Óôõ~ë";\
+ Text[ korean ] = "½ºÅ¸ÀÏ(~S)";\
+ Text[ turkish ] = "Bi~çim";\
+ Text[ language_user1 ] = " ";\
+ };\
+ MenuItem\
+ {\
+ Identifier = RID_MN_FORMAT_ALGN ; \
+ HelpID = RID_MN_FORMAT_ALGN ; \
+ Text = "~Ausrichtung" ; \
+ Text [ English ] = "~Alignment" ; \
+ Text [ norwegian ] = "~Justering" ; \
+ Text [ italian ] = "~Allineamento" ; \
+ Text [ portuguese_brazilian ] = "~Alinhamento" ; \
+ Text [ portuguese ] = "~Alinhamento" ; \
+ Text [ finnish ] = "~Tasaus" ; \
+ Text [ danish ] = "Justering" ; \
+ Text [ french ] = "~Alignement" ; \
+ Text [ swedish ] = "~Justering" ; \
+ Text [ dutch ] = "~Uitlijning" ; \
+ Text [ spanish ] = "~Alineación" ; \
+ Text [ english_us ] = "~Alignment" ; \
+ RadioCheck = TRUE ; \
+ SubMenu = Menu\
+ {\
+ ItemList = \
+ {\
+ MenuItem\
+ {\
+ ITEM_FORMAT_ATTR_PARA_ADJUST_LEFT\
+ RadioCheck = TRUE ; \
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_ATTR_PARA_ADJUST_RIGHT\
+ RadioCheck = TRUE ; \
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_ATTR_PARA_ADJUST_CENTER\
+ RadioCheck = TRUE ; \
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_ATTR_PARA_ADJUST_BLOCK ; \
+ HelpID = SID_ATTR_PARA_ADJUST_BLOCK ; \
+ RadioCheck = TRUE ; \
+ Text = "~Blocksatz" ; \
+ Text [ English ] = "~Justified" ; \
+ Text [ norwegian ] = "~Stillt inn" ; \
+ Text [ italian ] = "~Giustificato" ; \
+ Text [ portuguese_brazilian ] = "~Justificado" ; \
+ Text [ portuguese ] = "~Justificado" ; \
+ Text [ finnish ] = "~Reunat" ; \
+ Text [ danish ] = "~Lige margener" ; \
+ Text [ french ] = "~Justifié" ; \
+ Text [ swedish ] = "~Marginaljusterad" ; \
+ Text [ dutch ] = "~Uitgevuld" ; \
+ Text [ spanish ] = "~Justificado" ; \
+ Text [ english_us ] = "~Justified" ; \
+ Text[ chinese_simplified ] = "×óÓÒ¶ÔÆë(~J)";\
+ Text[ russian ] = "Ïî øèðèíå";\
+ Text[ polish ] = "Wyjustuj";\
+ Text[ japanese ] = "‹Ï“™Š„•t(~J)";\
+ Text[ chinese_traditional ] = "¥ª¥k¹ï»ô(~J)";\
+ Text[ arabic ] = "ÖÈØ";\
+ Text[ greek ] = "~ÐëÞñçò óôïß÷éóç";\
+ Text[ korean ] = "¾çÂÊ ¸ÂÃã(~J)";\
+ Text[ turkish ] = "~Ýki yana yasla";\
+ Text[ language_user1 ] = " ";\
+ };\
+ };\
+ };\
+ Text[ chinese_simplified ] = "¶ÔÆë(~A)";\
+ Text[ russian ] = "Âûðàâíèâàíèå";\
+ Text[ polish ] = "Wyrównanie";\
+ Text[ japanese ] = "”z’u(~A)";\
+ Text[ chinese_traditional ] = "¹ï»ô(~A)";\
+ Text[ arabic ] = "ãÍÇÐÇÉ";\
+ Text[ greek ] = "~Óôïß÷éóç";\
+ Text[ korean ] = "¸ÂÃã(~A)";\
+ Text[ turkish ] = "~Hizalama";\
+ Text[ language_user1 ] = " ";\
+ };\
+ MenuItem\
+ {\
+ Identifier = RID_MN_FORMAT_LINESPACE ; \
+ HelpID = RID_MN_FORMAT_LINESPACE ; \
+ Text = "~Zeilenabstand" ; \
+ Text [ English ] = "~Line Spacing" ; \
+ Text [ norwegian ] = "~Linjeavstand" ; \
+ Text [ italian ] = "Interli~nea" ; \
+ Text [ portuguese_brazilian ] = "~Espaçamento de linha" ; \
+ Text [ portuguese ] = "~Entrelinhas" ; \
+ Text [ finnish ] = "~Riviväli" ; \
+ Text [ danish ] = "~Linjeafstand" ; \
+ Text [ french ] = "Inter~ligne" ; \
+ Text [ swedish ] = "~Radavstånd" ; \
+ Text [ dutch ] = "~Regelafstand" ; \
+ Text [ spanish ] = "Inter~lineado" ; \
+ Text [ english_us ] = "~Line Spacing" ; \
+ _MenuItemFlags = MIB_RADIOCHECK ; \
+ SubMenu = Menu\
+ {\
+ ItemList = \
+ {\
+ MenuItem\
+ {\
+ ITEM_FORMAT_PARA_LINESPACE_10\
+ RadioCheck = TRUE ; \
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_PARA_LINESPACE_15\
+ RadioCheck = TRUE ; \
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_PARA_LINESPACE_20\
+ RadioCheck = TRUE ; \
+ };\
+ };\
+ };\
+ Text[ chinese_simplified ] = "Ðоà(~L)";\
+ Text[ russian ] = "ìåæäóñòðî÷íûé";\
+ Text[ polish ] = "Odstêp wierszy";\
+ Text[ japanese ] = "sŠÔ(~L)";\
+ Text[ chinese_traditional ] = "¦C¶¡¹j(~L)";\
+ Text[ arabic ] = "ÊÈÇÚÏ ÇáÃÓØÑ";\
+ Text[ greek ] = "ÄéÜóôé~÷ï";\
+ Text[ korean ] = "ÁÙ ¶ç¿ì±â(~L)";\
+ Text[ turkish ] = "~Satýr aralýðý";\
+ Text[ language_user1 ] = " ";\
+ };
+
+#define MN_DRWTXT \
+ MenuItem\
+ {\
+ ITEM_FORMAT_CHAR_DLG\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_PARA_DLG\
+ };
+
+#define MN_DRWTXTATTR \
+ MenuItem\
+ {\
+ Identifier = SID_DRAWTEXT_ATTR_DLG ; \
+ HelpID = SID_DRAWTEXT_ATTR_DLG ; \
+ Text = "~Text..." ; \
+ Text [ ENGLISH ] = "Te~xt..." ; \
+ Text [ english_us ] = "Te~xt..." ; \
+ Text [ italian ] = "~Testo..." ; \
+ Text [ spanish ] = "Te~xto..." ; \
+ Text [ french ] = "Te~xte..." ; \
+ Text [ dutch ] = "Te~kst..." ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Textattribute für die selektierten Textobjekte festlegen : Textattribute f³r die selektierten Textobjekte festlegen */\
+ Text [ swedish ] = "~Text..." ; \
+ Text [ danish ] = "~Tekst..." ; \
+ Text [ portuguese ] = "Te~xto..." ; \
+ Text [ portuguese_brazilian ] = "Te~xt..." ; \
+ Text[ chinese_simplified ] = "ÎÄ×Ö(~X)...";\
+ Text[ russian ] = "~Òåêñò...";\
+ Text[ polish ] = "~Tekst...";\
+ Text[ japanese ] = "÷½Ä(~X)...";\
+ Text[ chinese_traditional ] = "¤å¦r(~X)...";\
+ Text[ arabic ] = "~äÕ...";\
+ Text[ greek ] = "~Êåßìåíï...";\
+ Text[ korean ] = "ÅؽºÆ®(~X)...";\
+ Text[ turkish ] = "~Metin...";\
+ Text[ language_user1 ] = " ";\
+ };
+
+#define MN_ORIGINALSIZE \
+ MenuItem\
+ {\
+ Identifier = SID_ORIGINALSIZE ; \
+ HelpId = SID_ORIGINALSIZE ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Originalgröße : Originalgr÷˜e */\
+ Text = "Original~größe" ; \
+ Text [ ENGLISH ] = "Real Size" ; \
+ Text [ norwegian ] = "Real Size" ; \
+ Text [ italian ] = "Dimensione ori~ginale" ; \
+ Text [ portuguese_brazilian ] = "Tamanho real" ; \
+ Text [ portuguese ] = "Tamanho original" ; \
+ Text [ finnish ] = "Todellinen koko" ; \
+ Text [ danish ] = "Oprindelig størrelse" ; \
+ Text [ french ] = "Taille d'origine" ; \
+ Text [ swedish ] = "Ori~ginalstorlek" ; \
+ Text [ dutch ] = "Originele ~grootte" ; \
+ Text [ spanish ] = "Ta~maño original" ; \
+ Text [ english_us ] = "~Original Size" ; \
+ Text[ chinese_simplified ] = "Ô­¼þ´óС(~O)";\
+ Text[ russian ] = "Èñõîäíûé ðàçìåð";\
+ Text[ polish ] = "Rozmiar oryginalny";\
+ Text[ japanese ] = "µØ¼ÞÅÙ »²½Þ(~O)";\
+ Text[ chinese_traditional ] = "­ì¥ó¤j¤p(~O)";\
+ Text[ arabic ] = "ÇáÍÌã ÇáÃÕáí";\
+ Text[ greek ] = "Áñ÷éêü ìÝ~ãåèïò";\
+ Text[ korean ] = "¿ø·¡ Å©±â(~O)";\
+ Text[ turkish ] = "Gerçek ~boyut";\
+ Text[ language_user1 ] = " ";\
+ };
+
+#define MN_MIRRORSUB \
+ MenuItem\
+ {\
+ Identifier = SUBMENU_OBJMIRROR ; \
+ HelpID = HID_SCMENU_OBJMIRROR ; \
+ Text = "Sp~iegeln" ; \
+ Text [ ENGLISH ] = "~Mirror" ; \
+ Text [ norwegian ] = "~Mirror" ; \
+ Text [ italian ] = "Ri~specchia" ; \
+ Text [ portuguese_brazilian ] = "~Espelho" ; \
+ Text [ portuguese ] = "~Reflectir" ; \
+ Text [ finnish ] = "P~eilaa" ; \
+ Text [ danish ] = "Spejl~vend" ; \
+ Text [ french ] = "~Refléter" ; \
+ Text [ swedish ] = "Sp~egla" ; \
+ Text [ dutch ] = "~Spiegelen" ; \
+ Text [ spanish ] = "~Reflejar" ; \
+ Text [ english_us ] = "~Flip" ; \
+ SubMenu = Menu\
+ {\
+ ItemList = \
+ {\
+ MenuItem\
+ {\
+ Identifier = SID_MIRROR_VERTICAL ; \
+ HelpId = SID_MIRROR_VERTICAL ; \
+ Text = "~Vertikal" ; \
+ Text [ ENGLISH ] = "~Vertical" ; \
+ Text [ norwegian ] = "~Vertikal" ; \
+ Text [ italian ] = "~Verticale" ; \
+ Text [ portuguese_brazilian ] = "~Vertical" ; \
+ Text [ portuguese ] = "~Vertical" ; \
+ Text [ finnish ] = "~Rinnakkain" ; \
+ Text [ danish ] = "~Lodret" ; \
+ Text [ french ] = "~Verticalement" ; \
+ Text [ swedish ] = "~Vertikalt" ; \
+ Text [ dutch ] = "~Verticaal" ; \
+ Text [ spanish ] = "~Vertical" ; \
+ Text [ english_us ] = "~Vertically" ; \
+ Text[ chinese_simplified ] = "´¹Ö±·½Ïò(~V)";\
+ Text[ russian ] = "~Ïî âåðòèêàëè";\
+ Text[ polish ] = "~W pionie";\
+ Text[ japanese ] = "¶‰E(~V)";\
+ Text[ chinese_traditional ] = "««ª½¤è¦V(~V)";\
+ Text[ arabic ] = "ÑÃÓí~";\
+ Text[ greek ] = "Êáôáêüñõ~öá";\
+ Text[ korean ] = "¼öÁ÷(~V)";\
+ Text[ turkish ] = "~Dikey";\
+ Text[ language_user1 ] = " ";\
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_MIRROR_HORIZONTAL ; \
+ HelpId = SID_MIRROR_HORIZONTAL ; \
+ Text = "~Horizontal" ; \
+ Text [ ENGLISH ] = "~Horizontal" ; \
+ Text [ norwegian ] = "~Horisontal" ; \
+ Text [ italian ] = "Orizzontale" ; \
+ Text [ portuguese_brazilian ] = "~Horizontal" ; \
+ Text [ portuguese ] = "~Horizontal" ; \
+ Text [ finnish ] = "~Allekkain" ; \
+ Text [ danish ] = "~Vandret" ; \
+ Text [ french ] = "H~orizontale" ; \
+ Text [ swedish ] = "~Horisontellt" ; \
+ Text [ dutch ] = "~Horizontaal" ; \
+ Text [ spanish ] = "~Horizontal" ; \
+ Text [ english_us ] = "~Horizontal" ; \
+ Text[ chinese_simplified ] = "ˮƽ·½Ïò(~H)";\
+ Text[ russian ] = "Ïî ãîðèçîíòàëè";\
+ Text[ polish ] = "W pionie";\
+ Text[ japanese ] = "…•½(~H)";\
+ Text[ chinese_traditional ] = "¤ô¥­¤è¦V(~H)";\
+ Text[ arabic ] = "ÃÝÞí";\
+ Text[ greek ] = "Ïñé~æüíôéá";\
+ Text[ korean ] = "¼öÆò(~H)";\
+ Text[ turkish ] = "~Yatay";\
+ Text[ language_user1 ] = " ";\
+ };\
+ };\
+ };\
+ Text[ chinese_simplified ] = "·´Ó³(~F)";\
+ Text[ russian ] = "~Îòîáðàæåíèå";\
+ Text[ polish ] = "~Przerzuæ";\
+ Text[ japanese ] = "”½“](~F)";\
+ Text[ chinese_traditional ] = "¤Ï¬M(~F)";\
+ Text[ arabic ] = "ÇäÚßÇ~Ó";\
+ Text[ greek ] = "Êáôüðôñ~éóç";\
+ Text[ korean ] = "´ëĪ(~F)";\
+ Text[ turkish ] = "~Yansýt";\
+ Text[ language_user1 ] = " ";\
+ };
+
+#define MN_ARRANGESUB \
+ MenuItem\
+ {\
+ Identifier = SUBMENU_OBJARRANGE ; \
+ HelpID = HID_SCMENU_OBJARRANGE ; \
+ Text = "~Anordnung" ; \
+ Text [ ENGLISH ] = "Arrange" ; \
+ Text [ norwegian ] = "Arrange" ; \
+ Text [ italian ] = "~Disponi" ; \
+ Text [ portuguese_brazilian ] = "Organizar" ; \
+ Text [ portuguese ] = "~Dispoção" ; \
+ Text [ finnish ] = "Järjestä" ; \
+ Text [ danish ] = "Pl~acering" ; \
+ Text [ french ] = "~Disposition" ; \
+ Text [ swedish ] = "Pl~acering" ; \
+ Text [ dutch ] = "~Positie" ; \
+ Text [ spanish ] = "~Posición" ; \
+ Text [ english_us ] = "~Arrange" ; \
+ SubMenu = Menu\
+ {\
+ ItemList = \
+ {\
+ MenuItem\
+ {\
+ ITEM_FORMAT_FRAME_TO_TOP\
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_FRAME_UP ; \
+ HelpId = SID_FRAME_UP ; \
+ /* ### ACHTUNG: Neuer Text in Resource? W~eiter nach vorn : Weiter nach vorn */\
+ Text = "W~eiter nach vorn" ; \
+ Text [ ENGLISH ] = "Bring Forward" ; \
+ Text [ norwegian ] = "Flytt Framover" ; \
+ Text [ italian ] = "Porta più ~avanti" ; \
+ Text [ portuguese_brazilian ] = "Tazer Para Frente" ; \
+ Text [ portuguese ] = "~Trazer para a frente" ; \
+ Text [ finnish ] = "Yksi eteen" ; \
+ Text [ danish ] = "F~lyt fremad" ; \
+ Text [ french ] = "V~ers l'avant" ; \
+ Text [ swedish ] = "Flytta l~ängre fram" ; \
+ Text [ dutch ] = "Verder naar ~voren" ; \
+ Text [ spanish ] = "Traer más a~delante" ; \
+ Text [ english_us ] = "Bring ~Forward" ; \
+ Text[ chinese_simplified ] = "ÔÙÇ°ÖÃ(~F)";\
+ Text[ russian ] = "Ïåðåìåñòèòü ~âïåðåä";\
+ Text[ polish ] = "Przesuñ do przodu";\
+ Text[ japanese ] = "‘O–Ê‚ÖˆÚ“®(~F)";\
+ Text[ chinese_traditional ] = "¦A«e¸m(~F)";\
+ Text[ arabic ] = "ÅÍÖÇÑ ÃãÇãÇð";\
+ Text[ greek ] = "Ì~åôáöïñÜ Ýíá åðßðåäï åìðñüò";\
+ Text[ korean ] = "¾ÕÀ¸·Î °¡Á®¿À±â(~ F)";\
+ Text[ turkish ] = "B~ir öne getir";\
+ Text[ language_user1 ] = " ";\
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_FRAME_DOWN ; \
+ HelpId = SID_FRAME_DOWN ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Weiter ~nach hinten : Weiter nach hinten */\
+ Text = "Weiter ~nach hinten" ; \
+ Text [ ENGLISH ] = "Send Backward" ; \
+ Text [ norwegian ] = "Send Bakover" ; \
+ Text [ italian ] = "Porta più indietro" ; \
+ Text [ portuguese_brazilian ] = "Enviar Para o Fundo" ; \
+ Text [ portuguese ] = "Enviar para o ~fundo" ; \
+ Text [ finnish ] = "Yksi taakse" ; \
+ Text [ danish ] = "Flyt bag~ud" ; \
+ Text [ french ] = "~Vers l'arrière" ; \
+ Text [ swedish ] = "Flytta lä~ngre bak" ; \
+ Text [ dutch ] = "Verder naar ~achteren" ; \
+ Text [ spanish ] = "Enviar hacia a~trás" ; \
+ Text [ english_us ] = "Send Back~ward" ; \
+ Text[ chinese_simplified ] = "ÔÙºóÖÃ(~W)";\
+ Text[ russian ] = "Ïåðåìåñòèòü ~íàçàä";\
+ Text[ polish ] = "Przesuñ do ty³u";\
+ Text[ japanese ] = "”w–ʂɈړ®(~W)";\
+ Text[ chinese_traditional ] = "¦A«á¸m(~W)";\
+ Text[ arabic ] = "ÅÑÓÇá ÎáÝÇð";\
+ Text[ greek ] = "~ÌåôáöïñÜ ðßóù";\
+ Text[ korean ] = "µÚ·Î º¸³»±â(~W)";\
+ Text[ turkish ] = "Bir ~geri gönder";\
+ Text[ language_user1 ] = " ";\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_FRAME_TO_BOTTOM\
+ };\
+ MenuItem { Separator = TRUE ; }; \
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_HEAVEN\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_HELL\
+ };\
+ };\
+ };\
+ Text[ chinese_simplified ] = "ÅÅÐò(~A)";\
+ Text[ russian ] = "Ð~àñïîëîæåíèå";\
+ Text[ polish ] = "~Rozmieszczenie";\
+ Text[ japanese ] = "®—ñ(~A)";\
+ Text[ chinese_traditional ] = "±Æ§Ç(~A)";\
+ Text[ arabic ] = "ÊÑÊíÈ~";\
+ Text[ greek ] = "ÄéÜô~áîç";\
+ Text[ korean ] = "Á¤·Ä(~A)";\
+ Text[ turkish ] = "~Hizalama";\
+ Text[ language_user1 ] = " ";\
+ };
+
+#define MN_ANCHORSUB \
+ MenuItem\
+ {\
+ Identifier = SUBMENU_ANCHOR ; \
+ HelpID = HID_SCMENU_ANCHOR ; \
+ Text = "~Verankerung" ; \
+ Text [ ENGLISH ] = "Anchor" ; \
+ Text [ english_us ] = "An~chor" ; \
+ Text [ italian ] = "Anco~raggio" ; \
+ Text [ spanish ] = "~Anclaje" ; \
+ Text [ french ] = "~Ancrage" ; \
+ Text [ dutch ] = "~Verankering" ; \
+ SubMenu = Menu\
+ {\
+ ItemList = \
+ {\
+ MenuItem\
+ {\
+ Identifier = SID_ANCHOR_PAGE ; \
+ HelpId = SID_ANCHOR_PAGE ; \
+ Text = "An der ~Seite" ; \
+ Text [ ENGLISH ] = "To the ~page" ; \
+ Text [ dutch ] = "Aan ~pagina" ; \
+ Text [ english_us ] = "To P~age" ; \
+ Text [ italian ] = "Alla ~pagina" ; \
+ Text [ spanish ] = "A la ~página" ; \
+ Text [ french ] = "À la ~page" ; \
+ Text [ swedish ] = "Vid ~sidan" ; \
+ Text [ danish ] = "Til ~siden" ; \
+ Text [ portuguese_brazilian ] = "An der ~Seite" ; \
+ Text [ portuguese ] = "~Na página" ; \
+ Text[ chinese_simplified ] = "ÔÚÒ³ÃæÉÏ(~A)";\
+ Text[ russian ] = "~Ê ñòðàíèöå";\
+ Text[ polish ] = "~Na stronie";\
+ Text[ japanese ] = "Íß°¼Þ‚Ö(~A)";\
+ Text[ chinese_traditional ] = "¦b­¶­±¤W(~A)";\
+ Text[ arabic ] = "Úáì Çá~ÕÝÍÉ";\
+ Text[ greek ] = "~Óôç óåëßäá";\
+ Text[ korean ] = "ÆäÀÌÁö·Î(~A)";\
+ Text[ turkish ] = "Sayfa~da";\
+ Text[ language_user1 ] = " ";\
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_ANCHOR_CELL ; \
+ HelpId = SID_ANCHOR_CELL ; \
+ Text = "An der ~Zelle" ; \
+ Text [ ENGLISH ] = "To the ~cell" ; \
+ Text [ dutch ] = "Aan ~cel" ; \
+ Text [ english_us ] = "To ~Cell" ; \
+ Text [ italian ] = "Alla ~cella" ; \
+ Text [ spanish ] = "A la ~celda" ; \
+ Text [ french ] = "À la ~cellule" ; \
+ Text [ swedish ] = "Vid ~cellen" ; \
+ Text [ danish ] = "Til cellen" ; \
+ Text [ portuguese ] = "~Célula" ; \
+ Text [ portuguese_brazilian ] = "An der ~Zelle" ; \
+ Text[ chinese_simplified ] = "ÔÚµ¥Ôª¸ñÉÏ(~C)";\
+ Text[ russian ] = "Ê ÿ÷åéêå";\
+ Text[ polish ] = "Przy komórce";\
+ Text[ japanese ] = "¾Ù‚É(~C)";\
+ Text[ chinese_traditional ] = "¦bÀx¦s®æ¤W(~C)";\
+ Text[ arabic ] = "ÎáíÉ";\
+ Text[ greek ] = "Óôï ~êåëß";\
+ Text[ korean ] = "¼¿ ·Î(~C)";\
+ Text[ turkish ] = "Hücre~de";\
+ Text[ language_user1 ] = " ";\
+ };\
+ };\
+ };\
+ Text [ swedish ] = "~Förankring" ; \
+ Text [ danish ] = "~Forankring" ; \
+ Text [ portuguese ] = "~Âncora para" ; \
+ Text [ portuguese_brazilian ] = "~Verankerung" ; \
+ Text[ chinese_simplified ] = "Ëø¶¨(~C)";\
+ Text[ russian ] = "~Ïðèâÿçêà";\
+ Text[ polish ] = "~Zakotwiczenie";\
+ Text[ japanese ] = "±Ý¶°(~C)";\
+ Text[ chinese_traditional ] = "Âê©w(~C)";\
+ Text[ arabic ] = "~ÅÑÓÇÁ";\
+ Text[ greek ] = "Áãêýñ~ùóç";\
+ Text[ korean ] = "°íÁ¤(~C)";\
+ Text[ turkish ] = "Sa~bitleyici";\
+ Text[ language_user1 ] = " ";\
+ };
+
+#define MN_ALIGNSUB \
+ MenuItem\
+ {\
+ Identifier = SID_OBJECT_ALIGN ; \
+ HelpId = SID_OBJECT_ALIGN ; \
+ Text = "Aus~richtung" ; \
+ Text [ ENGLISH ] = "Ali~gnment" ; \
+ Text [ norwegian ] = "Ali~gnment" ; \
+ Text [ italian ] = "~Allineamento" ; \
+ Text [ portuguese_brazilian ] = "Ali~nhamento" ; \
+ Text [ portuguese ] = "Ali~nhamento" ; \
+ Text [ finnish ] = "~Tasaus" ; \
+ Text [ danish ] = "~Justering" ; \
+ Text [ french ] = "~Alignement" ; \
+ Text [ swedish ] = "Juste~ring" ; \
+ Text [ dutch ] = "~Uitlijning" ; \
+ Text [ spanish ] = "Ali~neación" ; \
+ Text [ english_us ] = "A~lignment" ; \
+ SubMenu = Menu\
+ {\
+ ItemList = \
+ {\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_LEFT\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_CENTER\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_RIGHT\
+ };\
+ MenuItem\
+ {\
+ Separator = TRUE ; \
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_UP\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_MIDDLE\
+ };\
+ MenuItem\
+ {\
+ ITEM_FORMAT_OBJECT_ALIGN_DOWN\
+ };\
+ };\
+ };\
+ Text[ chinese_simplified ] = "¶ÔÆë(~L)";\
+ Text[ russian ] = "~Âûðàâíèâàíèå";\
+ Text[ polish ] = "~Wyrównanie";\
+ Text[ japanese ] = "”z’u(~L)";\
+ Text[ chinese_traditional ] = "¹ï»ô(~L)";\
+ Text[ arabic ] = "~ãÍÇÐÇÉ";\
+ Text[ greek ] = "Ó~ôïß÷éóç";\
+ Text[ korean ] = "¸ÂÃã(~L)";\
+ Text[ turkish ] = "Hiz~alama";\
+ Text[ language_user1 ] = " ";\
+ };
+
+ //
+ // ------------------------------------------------------------------------------
+ //
+ //
+ // Objekt-Leisten
+ //
+String RID_DRAW_OBJECTBAR
+{
+ Text = "Zeichenobjektleiste" ;
+ Text [ ENGLISH ] = "Toolbar for drawing objects" ;
+ Text [ norwegian ] = "Verktøylinje for tegneobjekter " ;
+ Text [ italian ] = "Barra degli oggetti per disegno" ;
+ Text [ portuguese_brazilian ] = "Barra de Ferramentas para desenhar objetos" ;
+ Text [ portuguese ] = "Barra de objectos de desenho" ;
+ Text [ finnish ] = "Piirto-objektien työkalurivi" ;
+ Text [ danish ] = "Værktøjslinje for tegneobjekter" ;
+ Text [ french ] = "Barre d'objets de dessin" ;
+ Text [ swedish ] = "Ritobjektslist" ;
+ Text [ dutch ] = "Werkbalk voor tekenobjecten" ;
+ Text [ spanish ] = "Barra de objetos de dibujo" ;
+ Text [ english_us ] = "Drawing Object Bar" ;
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏóÀ¸";
+ Text[ russian ] = "Ïàíåëü ãðàôè÷åñêèõ îáúåêòîâ";
+ Text[ polish ] = "Pasek obiektów rysunkowych";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸ÄÊÞ°";
+ Text[ chinese_traditional ] = "ø¹Ïª«¥ó¤u¨ã¦C";
+ Text[ arabic ] = "ÔÑíØ ÇáßÇÆäÇÊ ÇáÑÓæãíÉ";
+ Text[ greek ] = "ÃñáììÞ ó÷åäßáóçò áíôéêåéìÝíùí";
+ Text[ korean ] = "±×¸®±â °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Çizim nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_DRAW_OBJECTBAR
+{
+ HelpId = HID_SC_TOOLBOX_DRAW ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ Customize = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ LineSpacing = TRUE ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ MenuStrings = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_BEZIER_EDIT ;
+ HelpID = SID_BEZIER_EDIT ;
+
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ // Linien
+ ToolBoxItem
+ {
+ Identifier = SID_ATTRIBUTES_LINE ;
+ HelpId = SID_ATTRIBUTES_LINE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_LINEEND_STYLE ;
+ HelpID = SID_ATTR_LINEEND_STYLE ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_LINE_STYLE ;
+ HelpId = SID_ATTR_LINE_STYLE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_LINE_WIDTH ;
+ HelpId = SID_ATTR_LINE_WIDTH ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_LINE_COLOR ;
+ HelpId = SID_ATTR_LINE_COLOR ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ATTRIBUTES_AREA ;
+ HelpId = SID_ATTRIBUTES_AREA ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_FILL_STYLE ;
+ HelpId = SID_ATTR_FILL_STYLE ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ // Rest
+ ToolBoxItem
+ {
+ Identifier = SID_OBJECT_ROTATE ;
+ HelpId = SID_OBJECT_ROTATE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ANCHOR_TOGGLE ;
+ HelpId = SID_ANCHOR_TOGGLE ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_FRAME_TO_TOP ;
+ HelpId = SID_FRAME_TO_TOP ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FRAME_TO_BOTTOM ;
+ HelpId = SID_FRAME_TO_BOTTOM ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_OBJECT_HEAVEN ;
+ HelpID = SID_OBJECT_HEAVEN ;
+
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_OBJECT_HELL ;
+ HelpID = SID_OBJECT_HELL ;
+
+ };
+
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+
+ ToolBoxItem
+ {
+ Identifier = SID_GRID_VISIBLE;
+ HelpID = SID_GRID_VISIBLE;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_GRID_USE;
+ HelpID = SID_GRID_USE;
+ Hide = TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_HELPLINES_MOVE;
+ HelpID = SID_HELPLINES_MOVE;
+ Hide = TRUE;
+ };
+
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_OBJECT_ALIGN ;
+ HelpId = SID_OBJECT_ALIGN ;
+ };
+ };
+ Scroll = TRUE ;
+};
+ //
+ // Text-Toolbox
+ //
+String RID_TEXT_TOOLBOX
+{
+ Text = "Textobjektleiste" ;
+ Text [ ENGLISH ] = "Toolbar for text objects" ;
+ Text [ norwegian ] = "Verktøylinje for tekstobjekter" ;
+ Text [ italian ] = "Barra degli oggetti di testo" ;
+ Text [ portuguese_brazilian ] = "Barra de ferramentas para objetos de texto" ;
+ Text [ portuguese ] = "Barra de objectos de texto" ;
+ Text [ finnish ] = "Tekstiobjektien työkalurivi" ;
+ Text [ danish ] = "Værktøjslinje for tekstobjekter" ;
+ Text [ french ] = "Barre d'objets de texte" ;
+ Text [ swedish ] = "Textobjektlist" ;
+ Text [ dutch ] = "Werkbalk voor tekstobjecten" ;
+ Text [ spanish ] = "Barra de objetos de texto" ;
+ Text [ english_us ] = "Text Object Bar" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö¶ÔÏ󹤾ßÀ¸";
+ Text[ russian ] = "Ïàíåëü îáúåêòîâ òåêñòà";
+ Text[ polish ] = "Pasek obiektów tekstowych";
+ Text[ japanese ] = "÷½ÄµÌÞ¼Þª¸Ä ÊÞ°";
+ Text[ chinese_traditional ] = "¤å¦rª«¥ó¤u¨ã¦C";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ ÇáäÕ";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Metin nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+ToolBox RID_TEXT_TOOLBOX
+{
+ HelpId = HID_SC_TOOLBOX_DRTEXT ;
+ LineSpacing = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ Scroll = TRUE ;
+ Customize = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 0 , 0 ) ;
+ Align = BOXALIGN_TOP ;
+ MenuStrings = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_FONT ;
+ HelpId = SID_ATTR_CHAR_FONT ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_FONTHEIGHT ;
+ HelpId = SID_ATTR_CHAR_FONTHEIGHT ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_WEIGHT ;
+ HelpId = SID_ATTR_CHAR_WEIGHT ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_POSTURE ;
+ HelpId = SID_ATTR_CHAR_POSTURE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_UNDERLINE ;
+ HelpId = SID_ATTR_CHAR_UNDERLINE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ULINE_VAL_DOUBLE;
+ HelpId = SID_ULINE_VAL_DOUBLE;
+ AutoCheck = TRUE ;
+ Hide=TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_COLOR ;
+ HelpId = SID_ATTR_CHAR_COLOR ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_PARA_LINESPACE_10 ;
+ HelpId = SID_ATTR_PARA_LINESPACE_10 ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_PARA_LINESPACE_15 ;
+ HelpId = SID_ATTR_PARA_LINESPACE_15 ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_PARA_LINESPACE_20 ;
+ HelpId = SID_ATTR_PARA_LINESPACE_20 ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_PARA_ADJUST_LEFT ;
+ HelpId = SID_ATTR_PARA_ADJUST_LEFT ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_PARA_ADJUST_CENTER ;
+ HelpId = SID_ATTR_PARA_ADJUST_CENTER ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_PARA_ADJUST_RIGHT ;
+ HelpId = SID_ATTR_PARA_ADJUST_RIGHT ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_PARA_ADJUST_BLOCK ;
+ HelpId = SID_ATTR_PARA_ADJUST_BLOCK ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_SET_SUPER_SCRIPT ;
+ HelpID = SID_SET_SUPER_SCRIPT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_SET_SUB_SCRIPT ;
+ HelpID = SID_SET_SUB_SCRIPT ;
+ };
+ //---------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //---------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_CHAR_DLG ;
+ HelpID = SID_CHAR_DLG ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_PARA_DLG ;
+ HelpID = SID_PARA_DLG ;
+ };
+ };
+};
+ //
+ // Objekt-Menue, Draw
+ //
+Menu RID_OBJECTMENU_DRAW
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ ITEM_FORMAT_ATTRIBUTES_LINE
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_ATTRIBUTES_AREA
+ };
+ MN_DRWTXTATTR
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_TRANSFORM
+ };
+ MenuItem
+ {
+ ITEM_FORM_CONTROL_PROPERTIES
+ };
+ MenuItem
+ {
+ ITEM_FORM_PROPERTIES
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MN_MIRRORSUB
+ MN_ARRANGESUB
+ MN_ALIGNSUB
+ MN_ANCHORSUB
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ ITEM_FORMAT_BEZIER_EDIT
+ RadioCheck = FALSE ;
+ AutoCheck = TRUE ;
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_FONTWORK
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ ITEM_GROUP_MENU
+ };
+};
+ //
+ // Menu Text
+ //
+Menu RID_OBJECTMENU_DRAWTEXT
+{
+ ItemList =
+ {
+ MN_RESET
+ MenuItem { Separator = TRUE ; };
+ MN_TEXT_ATTR
+ MenuItem { Separator = TRUE ; };
+ MN_DRWTXT
+ MenuItem { Separator = TRUE ; };
+ MN_DRWTXTATTR
+ MenuItem
+ {
+ ITEM_FORMAT_FONTWORK
+ };
+ };
+};
+ //
+ // Popup-Menues ---------------------------------------------------------------------
+ //
+String RID_POPUP_DRAW
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Popup-Menü für Zeichenobjekte : Popup-Men³ f³r Zeichenobjekte */
+ Text = "Popup-Menü für Zeichenobjekte" ;
+ Text [ ENGLISH ] = "Toolbar for drawing objects" ;
+ Text [ norwegian ] = "Verktøylinje for tegneobjekter " ;
+ Text [ italian ] = "Barra degli strumenti per disegnare gli oggetti" ;
+ Text [ portuguese_brazilian ] = "Barra de Ferramentas para desenhar objetos" ;
+ Text [ portuguese ] = "Menu instantâneo para objectos de desenho" ;
+ Text [ french ] = "Menu Pop-Up pour les objets de dessin" ;
+ Text [ dutch ] = "PopUp-menu voor tekenobjecten" ;
+ Text [ spanish ] = "Menú emergente para objetos de dibujo" ;
+ Text [ danish ] = "Popup-menu for tegneobjekter" ;
+ Text [ swedish ] = "Popup-meny för ritobjekt" ;
+ Text [ finnish ] = "Toolbar for drawing objects" ;
+ Text [ english_us ] = "Pop-up menu for drawing objects" ;
+ Text[ chinese_simplified ] = "»æͼµ¯³öʽ²Ëµ¥";
+ Text[ russian ] = "Âñïëûâàþùåå ìåíþ äëÿ ãðàôè÷åñêèõ îáúåêòîâ";
+ Text[ polish ] = "Menu podrêczne dla obiektów rysunkowych";
+ Text[ japanese ] = "Î߯Ìß±¯ÌßÒÆ­° •`‰æ°ÙÎÞ¯¸½";
+ Text[ chinese_traditional ] = "ø¹Ï§ÖÅã¥\\¯àªí";
+ Text[ arabic ] = "ÞÇÆãÉ ãäÈËÞÉ ááßÇÆäÇÊ ÇáÑÓæãíÉ";
+ Text[ greek ] = "Áíáäõüìåíï ìåíïý ãéá áíôéêåßìåíá ó÷åäßáóçò";
+ Text[ korean ] = "±×¸®±â °³Ã¼¸¦ À§ÇÑ Æ˾÷ ¸Þ´º";
+ Text[ turkish ] = "Çizim nesneleri için açýlan mönü";
+ Text[ language_user1 ] = " ";
+};
+ //
+ // Popup-Menue fuer (allgemeine) Zeichenobjekte
+ //
+Menu RID_POPUP_DRAW
+{
+ ItemList =
+ {
+ MenuItem { ITEM_FORMAT_ATTRIBUTES_LINE };
+ MenuItem { ITEM_FORMAT_ATTRIBUTES_AREA };
+ MN_DRWTXTATTR // Text...
+ MenuItem { ITEM_FORMAT_ATTR_TRANSFORM };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MN_MIRRORSUB
+ MN_ARRANGESUB
+ MN_ALIGNSUB
+ MN_ANCHORSUB
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ ITEM_FORMAT_BEZIER_EDIT
+ RadioCheck = FALSE ;
+ AutoCheck = TRUE ;
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_FONTWORK
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ ITEM_GROUP_MENU
+ };
+};
+
+ //
+ // Popup-Menue fuer (Uno-) Controls
+ //
+
+Menu RID_POPUP_CONTROL
+{
+ ItemList =
+ {
+ MenuItem { ITEM_FORMAT_ATTR_TRANSFORM };
+ MenuItem { ITEM_FORM_CONTROL_PROPERTIES };
+ MenuItem { ITEM_FORM_PROPERTIES };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MN_ARRANGESUB
+ MN_ALIGNSUB
+ MN_ANCHORSUB
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ ITEM_GROUP_MENU
+ };
+};
+
+ //
+ // Grafik
+ //
+
+Menu RID_POPUP_GRAPHIC
+{
+ ItemList =
+ {
+ MN_DRWTXTATTR
+ MenuItem { ITEM_FORMAT_ATTR_TRANSFORM };
+ MN_ORIGINALSIZE
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MN_MIRRORSUB
+ MN_ARRANGESUB
+ MN_ALIGNSUB
+ MN_ANCHORSUB
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ ITEM_GROUP_MENU
+ };
+};
+
+ //
+ // Ole-Objekt
+ //
+
+Menu RID_POPUP_OLE
+{
+ ItemList =
+ {
+ MenuItem { ITEM_FORMAT_ATTR_TRANSFORM };
+ MN_ORIGINALSIZE
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MN_ARRANGESUB
+ MN_ALIGNSUB
+ MN_ANCHORSUB
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ ITEM_GROUP_MENU
+ };
+};
+
+ //
+ // Charts
+ //
+
+Menu RID_POPUP_CHART
+{
+ ItemList =
+ {
+ MenuItem { ITEM_FORMAT_ATTR_TRANSFORM };
+ MN_ORIGINALSIZE
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MN_ARRANGESUB
+ MN_ALIGNSUB
+ MN_ANCHORSUB
+ MenuItem
+ {
+ Identifier = SID_OPENDLG_MODCHART ;
+ HelpId = SID_OPENDLG_MODCHART ;
+ /* ### ACHTUNG: Neuer Text in Resource? Datenbereich ändern... : Datenbereich õndern... */
+ Text = "~Datenbereich ändern..." ;
+ Text [ ENGLISH ] = "Change data area..." ;
+ Text [ english_us ] = "~Modify Data Range..." ;
+ Text [ italian ] = "Cambia area dati..." ;
+ Text [ spanish ] = "Modificar área de ~datos..." ;
+ Text [ french ] = "M~odifier la plage de données..." ;
+ Text [ dutch ] = "~Gegevensbereik veranderen..." ;
+ Text [ swedish ] = "Ändra ~dataområde..." ;
+ Text [ danish ] = "Rediger dataområde..." ;
+ Text [ portuguese_brazilian ] = "Datenbereich ändern..." ;
+ Text [ portuguese ] = "~Modificar área de dados..." ;
+ Text[ chinese_simplified ] = "¸ü¸ÄÊý¾ÝÇøÓò(~M)...";
+ Text[ russian ] = "Èçìåíèòü îáëàñòü äàííûõ...";
+ Text[ polish ] = "Zmieñ obszar danych..";
+ Text[ japanese ] = "ÃÞ°À—̈æ‚Ì•ÏX(~M)...";
+ Text[ chinese_traditional ] = "­×§ï¸ê®Æ°Ï°ì(~M)...";
+ Text[ arabic ] = "...ÊÚÏíá äØÇÞ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÁëëáãÞ ðåñéï÷Þò ~äåäïìÝíùí...";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¿µ¿ª ¼öÁ¤(~M)...";
+ Text[ turkish ] = "~Veri alanýný deðiþtir...";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ ITEM_GROUP_MENU
+ };
+};
+
+ //
+ // PopUpDraw Text
+ //
+
+String RID_POPUP_DRAWTEXT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Popup-Menü für Text-Objekte : Popup-Men³ f³r Text-Objekte */
+ Text = "Popup-Menü für Text-Objekte" ;
+ Text [ English ] = "Popup menu for text objects" ;
+ Text [ english_us ] = "Pop-up menu for text objects" ;
+ Text [ italian ] = "Menu popup per gli oggetti di testo" ;
+ Text [ spanish ] = "Menú emergente para objetos de texto" ;
+ Text [ french ] = "Menu Pop-Up pour les objets de texte" ;
+ Text [ dutch ] = "PopUp-menu voor tekstobjecten" ;
+ Text [ swedish ] = "Popup-meny för textobjekt" ;
+ Text [ danish ] = "Popup-menu for tekstobjekter" ;
+ Text [ portuguese_brazilian ] = "Popup-Menü für Text-Objekte" ;
+ Text [ portuguese ] = "Menu instantâneo para objectos de texto" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö¶ÔÏóµÄµ¯³öʽ²Ëµ¥";
+ Text[ russian ] = "Âñïëûâàþùåå ìåíþ äëÿ îáúåêòîâ òåêñòà";
+ Text[ polish ] = "Menu podrêczne dla obiektów tekstowych";
+ Text[ japanese ] = "Î߯Ìß±¯ÌßÒÆ­° ÷½Ä µÌÞ¼Þª¸Ä—p";
+ Text[ chinese_traditional ] = "¤å¦rª«¥ó§ÖÅã¥\\¯àªí";
+ Text[ arabic ] = "ÞÇÆãÉ ãäÈËÞÉ ááßÇÆäÇÊ ÇáäÕíÉ";
+ Text[ greek ] = "Áíáäõüìåíï ìåíïý ãéá áíôêåßìåíá êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® °³Ã¼¸¦ À§ÇÑ Æ˾÷ ¸Þ´º";
+ Text[ turkish ] = "Metin nesneleri için açýlan mönü";
+ Text[ language_user1 ] = " ";
+};
+
+Menu RID_POPUP_DRAWTEXT
+{
+ ItemList =
+ {
+ MN_RESET
+ MenuItem { Separator = TRUE ; };
+ MN_DRWTXTATTR
+ MenuItem { Separator = TRUE ; };
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_CHAR_FONT
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_CHAR_FONTHEIGHT
+ };
+ // Stil, Ausrichtung, Zeilenabstand
+ MN_TEXT_ATTR
+ MenuItem { Separator = TRUE ; };
+ // Zeichen, Absatz
+ MN_DRWTXT
+ };
+};
+
+
diff --git a/sc/source/ui/drawfunc/oleobjsh.cxx b/sc/source/ui/drawfunc/oleobjsh.cxx
new file mode 100644
index 000000000000..a94f3218ac18
--- /dev/null
+++ b/sc/source/ui/drawfunc/oleobjsh.cxx
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: oleobjsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <svx/eeitem.hxx>
+#include <svx/fontwork.hxx>
+#include <svx/labdlg.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/tabarea.hxx>
+#include <svx/tabline.hxx>
+#include <svx/textanim.hxx>
+#include <svx/transfrm.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+#include <segmentc.hxx>
+
+#include "oleobjsh.hxx"
+#include "drwlayer.hxx"
+#include "sc.hrc"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "docpool.hxx"
+#include "drawview.hxx"
+#include "scresid.hxx"
+
+#ifndef _SVDOBJ_HXX //autogen
+#include <svx/svdobj.hxx>
+#endif
+
+#define ScOleObjectShell
+#include "scslots.hxx"
+
+
+SFX_IMPL_INTERFACE(ScOleObjectShell, ScDrawShell, ScResId(SCSTR_OLEOBJECTSHELL) )
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT|SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
+ ScResId(RID_DRAW_OBJECTBAR) );
+ SFX_POPUPMENU_REGISTRATION( ScResId(RID_POPUP_OLE) );
+ SFX_OBJECTMENU_REGISTRATION( SID_OBJECTMENU0, ScResId(RID_OBJECTMENU_DRAW) );
+}
+
+TYPEINIT1( ScOleObjectShell, ScDrawShell );
+
+ScOleObjectShell::ScOleObjectShell(ScViewData* pData) :
+ ScDrawShell(pData)
+{
+ SetHelpId(HID_SCSHELL_OLEOBEJCTSH);
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("OleObject")));
+}
+
+ScOleObjectShell::~ScOleObjectShell()
+{
+}
+
+
+
diff --git a/sc/source/ui/formdlg/dwfunctr.cxx b/sc/source/ui/formdlg/dwfunctr.cxx
new file mode 100644
index 000000000000..3cc49f15e11c
--- /dev/null
+++ b/sc/source/ui/formdlg/dwfunctr.cxx
@@ -0,0 +1,1212 @@
+/*************************************************************************
+ *
+ * $RCSfile: dwfunctr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/editview.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/viewsh.hxx>
+
+#include "sc.hrc"
+#include "global.hxx" // ScAddress
+#include "scresid.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "scmod.hxx"
+#include "inputhdl.hxx"
+#include "tabvwsh.hxx"
+#include "appoptio.hxx"
+#include "compiler.hxx"
+
+#include "dwfunctr.hrc"
+#include "dwfunctr.hxx"
+
+// -----------------------------------------------------------------------
+
+#define ARG_SEPERATOR String("; ")
+SFX_IMPL_DOCKINGWINDOW( ScFunctionChildWindow, FID_FUNCTION_BOX )
+
+/*************************************************************************
+#* Member: ScFunctionChildWindow Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionChildWindow
+#*
+#* Funktion: Konstruktor der Klasse ScFunctionChildWindow
+#* Ableitung vom SfxChildWindow als "Behaelter" fuer
+#* Funktions- Fenster in Clac
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+__EXPORT ScFunctionChildWindow::ScFunctionChildWindow( Window* pParent,
+ USHORT nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo ) :
+ SfxChildWindow( pParent, nId )
+{
+ ScFunctionDockWin* pWin = new ScFunctionDockWin( pBindings, this,
+ pParent, ScResId( FID_FUNCTION_BOX ) );
+ pWindow = pWin;
+
+ eChildAlignment = SFX_ALIGN_RIGHT;
+
+ pWin->Initialize( pInfo );
+}
+
+/*************************************************************************
+#* Member: ScFunctionDockWin Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Konstruktor der Klasse ScFunctionDockWin
+#*
+#* Input: Sfx- Verknuepfungen, Fenster, Resource
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+ScFunctionDockWin::ScFunctionDockWin( SfxBindings* pBindings,
+ SfxChildWindow *pCW, Window* pParent, const ResId& rResId ) :
+
+ SfxDockingWindow( pBindings, pCW, pParent, rResId ),
+ aCatBox ( this, ResId( CB_CAT ) ),
+ aDDFuncList ( this, ResId( DDLB_FUNC ) ),
+ aFuncList ( this, ResId( LB_FUNC ) ),
+ aInsertButton ( this, ResId( IMB_INSERT ) ),
+ aFiFuncDesc ( this, ResId( FI_FUNCDESC ) ),
+ aPrivatSplit ( this, ResId( FT_SPLIT ),SC_SPLIT_VERT),
+ aOldSize (0,0)
+{
+ FreeResource();
+ InitLRUList();
+ SetStyle(GetStyle()|WB_CLIPCHILDREN);
+
+ aTimer.SetTimeout(200);
+ aTimer.SetTimeoutHdl(LINK( this, ScFunctionDockWin, TimerHdl));
+
+ eSfxNewAlignment=GetAlignment();
+ eSfxOldAlignment=eSfxNewAlignment;
+ aFiFuncDesc.SetUpdateMode(TRUE);
+ pAllFuncList=&aFuncList;
+ aDDFuncList.Disable();
+ aDDFuncList.Hide();
+ nArgs=0;
+ nDockMode=0;
+ bSizeFlag=FALSE;
+ aCatBox.SetDropDownLineCount(9);
+ Font aFont=aFiFuncDesc.GetFont();
+ aFont.SetColor(Color(COL_BLACK));
+ aFiFuncDesc.SetFont(aFont);
+ aFiFuncDesc.SetBackground( GetBackground() ); //! never transparent?
+//? SetBackground();
+
+ Link aLink=LINK( this, ScFunctionDockWin, SelHdl);
+ aCatBox.SetSelectHdl(aLink);
+ aFuncList.SetSelectHdl(aLink);
+ aDDFuncList.SetSelectHdl(aLink);
+
+ Link a2Link=LINK( this, ScFunctionDockWin, SetSelectionHdl);
+ aFuncList.SetDoubleClickHdl(a2Link);
+ aDDFuncList.SetSelectHdl(aLink);
+ aInsertButton.SetClickHdl(a2Link);
+
+ Link a3Link=LINK( this, ScFunctionDockWin, SetSplitHdl);
+ aPrivatSplit.SetCtrModifiedHdl(a3Link);
+ StartListening( *pBindings, TRUE );
+
+ Point aTopLeft=aCatBox.GetPosPixel();
+ //String aString=aCatBox.GetEntry( 0)+String("www");
+ String aString=String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ww"));
+ Size aTxtSize( aFiFuncDesc.GetTextWidth(aString), aFiFuncDesc.GetTextHeight() );
+ nMinWidth=aTxtSize.Width()+aTopLeft.X()
+ +2*aFuncList.GetPosPixel().X();
+ nMinHeight=19*aTxtSize.Height();
+ aCatBox.SelectEntryPos(0);
+
+ Range aYRange(3*aTxtSize.Height()+aFuncList.GetPosPixel().Y(),
+ GetOutputSizePixel().Height()-2*aTxtSize.Height());
+ aPrivatSplit.SetYRange(aYRange);
+ SelHdl(&aCatBox);
+ bInit=TRUE;
+}
+
+/*************************************************************************
+#* Member: ScFunctionDockWin Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Destruktor der Klasse ScFunctionDockWin
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+__EXPORT ScFunctionDockWin::~ScFunctionDockWin()
+{
+ EndListening( SFX_BINDINGS() );
+}
+
+/*************************************************************************
+#* Member: UpdateFunctionList Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Aktualisiert die Liste der Funktionen ab-
+#* haengig von der eingestellten Kategorie.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::InitLRUList()
+{
+ const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
+ USHORT nLRUFuncCount = Min( rAppOpt.GetLRUFuncListCount(), (USHORT)LRU_MAX );
+ USHORT* pLRUListIds = rAppOpt.GetLRUFuncList();
+
+ USHORT i;
+ for ( i=0; i<LRU_MAX; i++ )
+ aLRUList[i] = NULL;
+
+ if ( pLRUListIds )
+ {
+ ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
+ for ( i=0; i<nLRUFuncCount; i++ )
+ aLRUList[i] = pFuncMgr->Get( pLRUListIds[i] );
+ }
+
+ USHORT nSelPos = aCatBox.GetSelectEntryPos();
+
+ if(nSelPos == 0)
+ UpdateFunctionList();
+}
+
+/*************************************************************************
+#* Member: UpdateFunctionList Datum:10.12.99
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Aktualisiert die Liste der zuletzt verwendeten Funktionen.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::UpdateLRUList()
+{
+ if (pFuncDesc && pFuncDesc->nFIndex!=0)
+ {
+ ScModule* pScMod = SC_MOD();
+ pScMod->InsertEntryToLRUList(pFuncDesc->nFIndex);
+ }
+}
+
+
+/*************************************************************************
+#* Member: SetSize Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Groesse fuer die einzelnen Controls einzustellen.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::SetSize()
+{
+ USHORT nSelEntry=0;
+ SfxChildAlignment aChildAlign=eSfxOldAlignment;//GetAlignment();
+ short nNewDockMode;
+ switch(aChildAlign)
+ {
+ case SFX_ALIGN_HIGHESTTOP:
+ case SFX_ALIGN_TOP:
+ case SFX_ALIGN_LOWESTTOP:
+ case SFX_ALIGN_LOWESTBOTTOM:
+ case SFX_ALIGN_BOTTOM:
+ case SFX_ALIGN_TOOLBOXTOP:
+ case SFX_ALIGN_TOOLBOXBOTTOM:
+
+
+ nNewDockMode=1;
+ if(nDockMode!=nNewDockMode)
+ {
+ nDockMode=nNewDockMode;
+ nSelEntry=aFuncList.GetSelectEntryPos();
+ aFuncList.Clear();
+ aFiFuncDesc.SetPosPixel(aFuncList.GetPosPixel());
+ aDDFuncList.Enable();
+ aDDFuncList.Show();
+ aPrivatSplit.Disable();
+ aPrivatSplit.Hide();
+ aFuncList.Disable();
+ aFuncList.Hide();
+ pAllFuncList=&aDDFuncList;
+ SelHdl(&aCatBox);
+ aDDFuncList.SelectEntryPos(nSelEntry);
+ }
+ break;
+
+ default: nNewDockMode=0;
+ if(nDockMode!=nNewDockMode)
+ {
+ nDockMode=nNewDockMode;
+ nSelEntry=aDDFuncList.GetSelectEntryPos();
+ aDDFuncList.Clear();
+ aDDFuncList.Disable();
+ aDDFuncList.Hide();
+ aPrivatSplit.Enable();
+ aPrivatSplit.Show();
+ aFuncList.Enable();
+ aFuncList.Show();
+ pAllFuncList=&aFuncList;
+ SelHdl(&aCatBox);
+ aFuncList.SelectEntryPos(nSelEntry);
+ }
+ break;
+ }
+
+ if(nDockMode==0)
+ {
+ SetLeftRightSize();
+ }
+ else
+ {
+ SetTopBottonSize();
+ }
+}
+/*************************************************************************
+#* Member: SetLeftRightSize Datum:15.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Groesse fuer die einzelnen Controls einstellen,
+#* wenn Links oder Rechts angedockt wird.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::SetLeftRightSize()
+{
+ if(bSizeFlag==FALSE)
+ {
+ bSizeFlag=TRUE;
+
+ Size aDiffSize=GetSizePixel();
+ Size aNewSize=GetOutputSizePixel();
+ aDiffSize.Width()-=aNewSize.Width();
+ aDiffSize.Height()-=aNewSize.Height();
+
+ //@ SetUpdateMode( FALSE);
+
+ String aString = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ww"));
+
+ Size aTxtSize( aFuncList.GetTextWidth(aString), aFuncList.GetTextHeight() );
+
+ Range aYRange(3*aTxtSize.Height()+aFuncList.GetPosPixel().Y(),
+ GetOutputSizePixel().Height()-2*aTxtSize.Height());
+ aPrivatSplit.SetYRange(aYRange);
+
+
+ if(aOldSize.Width()!=aNewSize.Width())
+ SetMyWidthLeRi(aNewSize);
+
+ if(aOldSize.Height()!=aNewSize.Height())
+ SetMyHeightLeRi(aNewSize);
+
+ aOldSize=aNewSize;
+ aNewSize.Width()+=aDiffSize.Width();
+ aNewSize.Height()+=aDiffSize.Height();
+ //SetSizePixel(aNewSize);
+ //@ SetUpdateMode( TRUE);
+ bSizeFlag=FALSE;
+ }
+
+}
+/*************************************************************************
+#* Member: SetTopBottonSize Datum:15.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Groesse fuer die einzelnen Controls einzustellen.
+#* wenn oben oder unten angedockt wird.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::SetTopBottonSize()
+{
+ if(bSizeFlag==FALSE)
+ {
+ bSizeFlag=TRUE;
+ Size aDiffSize=GetSizePixel();
+ Size aNewSize=GetOutputSizePixel();
+ aDiffSize.Width()-=aNewSize.Width();
+ aDiffSize.Height()-=aNewSize.Height();
+
+ SetMyWidthToBo(aNewSize);
+ SetMyHeightToBo(aNewSize);
+
+ aNewSize.Width()+=aDiffSize.Width();
+ aNewSize.Height()+=aDiffSize.Height();
+ //SetSizePixel(aNewSize);
+ //@ SetUpdateMode( TRUE);
+ bSizeFlag=FALSE;
+ }
+}
+
+/*************************************************************************
+#* Member: SetMyWidthLeRi Datum:15.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Breite fuer die einzelnen Controls und
+#* das Fenster einstellen,wenn Li oder Re
+#*
+#* Input: neue Fenstergroesse
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::SetMyWidthLeRi(Size &aNewSize)
+{
+ if((ULONG)aNewSize.Width()<nMinWidth) aNewSize.Width()=nMinWidth;
+
+ Size aCDSize=aCatBox.GetSizePixel();
+ Size aFLSize=aFuncList.GetSizePixel();
+ Size aSplitterSize=aPrivatSplit.GetSizePixel();
+ Size aFDSize=aFiFuncDesc.GetSizePixel();
+
+ Point aCDTopLeft=aCatBox.GetPosPixel();
+ Point aFLTopLeft=aFuncList.GetPosPixel();
+ Point aSplitterTopLeft=aPrivatSplit.GetPosPixel();
+ Point aFDTopLeft=aFiFuncDesc.GetPosPixel();
+
+ aCDSize.Width()=aNewSize.Width()-aCDTopLeft.X()-aFLTopLeft.X();
+ aFLSize.Width()=aNewSize.Width()-2*aFLTopLeft.X();
+ aFDSize.Width()=aFLSize.Width();
+ aSplitterSize.Width()=aFLSize.Width();
+
+ aCatBox.SetSizePixel(aCDSize);
+ aFuncList.SetSizePixel(aFLSize);
+ aPrivatSplit.SetSizePixel(aSplitterSize);
+ aFiFuncDesc.SetSizePixel(aFDSize);
+}
+
+/*************************************************************************
+#* Member: SetHeight Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Hoehe fuer die einzelnen Controls und
+#* das Fenster einstellen bei Li oder Re
+#*
+#* Input: neue Fenstergroesse
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::SetMyHeightLeRi(Size &aNewSize)
+{
+ if((ULONG)aNewSize.Height()<nMinHeight) aNewSize.Height()=nMinHeight;
+
+ Size aFLSize=aFuncList.GetSizePixel();
+ Size aSplitterSize=aPrivatSplit.GetSizePixel();
+ Size aFDSize=aFiFuncDesc.GetSizePixel();
+
+ Point aFLTopLeft=aFuncList.GetPosPixel();
+ Point aSplitterTopLeft=aPrivatSplit.GetPosPixel();
+ Point aFDTopLeft=aFiFuncDesc.GetPosPixel();
+
+ long nTxtHeight = aFuncList.GetTextHeight();
+
+ short nY=(short)(3*nTxtHeight+
+ aFuncList.GetPosPixel().Y()+aSplitterSize.Height());
+
+ aFDTopLeft.Y()=aNewSize.Height()-aFDSize.Height()-4;
+ if(nY>aFDTopLeft.Y())
+ {
+ aFDSize.Height()-=nY-aFDTopLeft.Y();
+ aFDTopLeft.Y()=nY;
+ }
+ aSplitterTopLeft.Y()=aFDTopLeft.Y()-aSplitterSize.Height()-1;
+ aFLSize.Height()=aSplitterTopLeft.Y()-aFLTopLeft.Y()-1;
+
+ aFuncList.SetSizePixel(aFLSize);
+ aPrivatSplit.SetPosPixel(aSplitterTopLeft);
+ aFiFuncDesc.SetPosPixel(aFDTopLeft);
+ aFiFuncDesc.SetSizePixel(aFDSize);
+
+}
+
+/*************************************************************************
+#* Member: SetMyWidthToBo Datum:16.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Breite fuer die einzelnen Controls und
+#* das Fenster einstellen, wenn oben oder
+#* unten angedockt werden soll.
+#*
+#* Input: neue Fenstergroesse
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::SetMyWidthToBo(Size &aNewSize)
+{
+ if((ULONG)aNewSize.Width()<nMinWidth) aNewSize.Width()=nMinWidth;
+
+ Size aCDSize=aCatBox.GetSizePixel();
+ Size aDdFLSize=aDDFuncList.GetSizePixel();
+ Size aFDSize=aFiFuncDesc.GetSizePixel();
+
+ Point aCDTopLeft=aCatBox.GetPosPixel();
+ Point aDdFLTopLeft=aDDFuncList.GetPosPixel();
+ Point aFDTopLeft=aFiFuncDesc.GetPosPixel();
+
+ aCDSize.Width()=aDdFLTopLeft.X()-aFDTopLeft.X()-aCDTopLeft.X();
+ aDdFLTopLeft.X()=aCDSize.Width()+aCDTopLeft.X()+aFDTopLeft.X();
+
+ aDdFLSize.Width()=aNewSize.Width()-aDdFLTopLeft.X()-aFDTopLeft.X();
+
+ aFDSize.Width()=aNewSize.Width()-2*aFDTopLeft.X();
+
+ aDDFuncList.SetPosPixel(aDdFLTopLeft);
+ aDDFuncList.SetSizePixel(aDdFLSize);
+ aCatBox.SetSizePixel(aCDSize);
+ aFiFuncDesc.SetSizePixel(aFDSize);
+}
+
+/*************************************************************************
+#* Member: SetHeight Datum:16.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Hoehe fuer die einzelnen Controls und
+#* das Fenster einstellen, wenn oben oder
+#* unten angedockt werden soll.
+#*
+#* Input: neue Fenstergroesse
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::SetMyHeightToBo(Size &aNewSize)
+{
+ if((ULONG)aNewSize.Height()<nMinHeight) aNewSize.Height()=nMinHeight;
+
+ Size aFDSize=aFiFuncDesc.GetSizePixel();
+
+ Point aFDTopLeft=aFiFuncDesc.GetPosPixel();
+ Point aCBTopLeft=aCatBox.GetPosPixel();
+ aFDSize.Height()=aNewSize.Height()-aFDTopLeft.Y()-aCBTopLeft.Y();
+ aFiFuncDesc.SetSizePixel(aFDSize);
+
+}
+
+/*************************************************************************
+#* Member: SetDescription Datum:13.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Erklaerungstext fuer die Funktion einstellen.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::SetDescription()
+{
+ aFiFuncDesc.SetText( EMPTY_STRING );
+ ScFuncDesc* pDesc =
+ (ScFuncDesc*)pAllFuncList->GetEntryData(
+ pAllFuncList->GetSelectEntryPos() );
+ if (pDesc)
+ {
+ String aString=pAllFuncList->GetSelectEntry();
+ if(nDockMode==0)
+ {
+ aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ":\n\n" ));
+ }
+ else
+ {
+ aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " ));
+ }
+
+ String a2String=pDesc->GetSignature();
+ xub_StrLen aStrtPos=a2String.Search('(');
+ xub_StrLen aEndPos=a2String.Search(')');
+ a2String.Erase(aEndPos-1);
+ a2String.Erase(0,aStrtPos+1);
+ a2String.EraseLeadingChars();
+ aString+=a2String;
+
+ if(nDockMode==0)
+ {
+ aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "\n\n" ));
+ }
+ else
+ {
+ aString += '\n';
+ }
+
+ aString+=*(pDesc->pFuncDesc);
+
+ aFiFuncDesc.SetText(aString);
+ aFiFuncDesc.StateChanged(STATE_CHANGE_TEXT);
+ aFiFuncDesc.Invalidate();
+ aFiFuncDesc.Update();
+
+ }
+ }
+
+/*************************************************************************
+#* Member: Resizing Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Ueberladene Funktion um die Groesse der
+#* einzelnen Controls einzustellen.
+#*
+#* Input: neue Groesse
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void __EXPORT ScFunctionDockWin::Resizing( Size& rNewSize )
+{
+ if((ULONG)rNewSize.Width()<nMinWidth) rNewSize.Width()=nMinWidth;
+ if((ULONG)rNewSize.Height()<nMinHeight) rNewSize.Height()=nMinHeight;
+
+}
+
+/*************************************************************************
+#* Member: Close Datum:07.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Schliessen des Fensters
+#*
+#* Input: ---
+#*
+#* Output: TRUE
+#*
+#************************************************************************/
+
+BOOL __EXPORT ScFunctionDockWin::Close()
+{
+ SfxBoolItem aItem( FID_FUNCTION_BOX, FALSE );
+
+ SFX_DISPATCHER().Execute( FID_FUNCTION_BOX, SFX_CALLMODE_ASYNCHRON |
+ SFX_CALLMODE_RECORD, &aItem, 0L );
+
+ SfxDockingWindow::Close();
+
+ return( TRUE );
+}
+
+
+/*************************************************************************
+#* Member: CheckAlignment Datum:16.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Ueberprueft den Andockmodus und stellt die
+#* Groessen dementsprechend ein.
+#*
+#* Input: Das neue Alignment
+#*
+#* Output: Das uebergebene Alignment
+#*
+#************************************************************************/
+SfxChildAlignment __EXPORT ScFunctionDockWin::CheckAlignment(SfxChildAlignment abla,
+ SfxChildAlignment aChildAlign)
+{
+ String aString = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ww"));
+ Size aTxtSize( aFiFuncDesc.GetTextWidth(aString), aFiFuncDesc.GetTextHeight() );
+ if(!bInit)
+ {
+ eSfxOldAlignment=eSfxNewAlignment;
+ eSfxNewAlignment=aChildAlign;
+ }
+ else
+ {
+ bInit=FALSE;
+ eSfxOldAlignment=aChildAlign;
+ eSfxNewAlignment=aChildAlign;
+ }
+
+ switch(eSfxOldAlignment)
+ {
+ case SFX_ALIGN_HIGHESTTOP:
+ case SFX_ALIGN_TOP:
+ case SFX_ALIGN_LOWESTTOP:
+ case SFX_ALIGN_LOWESTBOTTOM:
+ case SFX_ALIGN_BOTTOM:
+ case SFX_ALIGN_TOOLBOXTOP:
+ case SFX_ALIGN_TOOLBOXBOTTOM:
+
+ nMinWidth= 0;/*aDDFuncList.GetPosPixel().X()+
+ 10*aTxtSize.Width()+
+ aFuncList.GetPosPixel().X();*/
+ nMinHeight=0;
+
+ break;
+
+ case SFX_ALIGN_NOALIGNMENT:
+
+ aString = aCatBox.GetEntry(0);
+ aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM("www"));
+ aTxtSize = Size( aFiFuncDesc.GetTextWidth(aString),
+ aFiFuncDesc.GetTextHeight() );
+
+ default: Point aTopLeft=aCatBox.GetPosPixel();
+ nMinWidth=aTxtSize.Width()+aTopLeft.X()
+ +2*aFuncList.GetPosPixel().X();
+ nMinHeight=19*aTxtSize.Height();
+ //aCatBox.SelectEntryPos(0);
+
+ break;
+ }
+
+ return aChildAlign;
+}
+/*************************************************************************
+#* Member: Close Datum:07.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Aenderungen erkennen
+#*
+#* Input: ---
+#*
+#* Output: TRUE
+#*
+#************************************************************************/
+void ScFunctionDockWin::SFX_NOTIFY( SfxBroadcaster& rBC,
+ const TypeId& rBCType,
+ const SfxHint& rHint,
+ const TypeId& rHintType )
+{
+ const SfxPoolItemHint *pPoolItemHint = PTR_CAST(SfxPoolItemHint, &rHint);
+ /*
+ if ( pPoolItemHint
+ && ( pPoolItemHint->GetObject()->ISA( SvxColorTableItem ) ) )
+ {
+ // Die Liste der Farben hat sich geaendert
+ pColorTable = ( (SvxColorTableItem*) pPoolItemHint->GetObject() )->GetColorTable();
+ FillValueSet();
+ }
+ */
+}
+
+
+/*************************************************************************
+#* Member: Resize Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Ueberladene Funktion um die Groesse der
+#* einzelnen Controls einzustellen.
+#*
+#* Input: neue Groesse
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void __EXPORT ScFunctionDockWin::Resize()
+{
+ if ( !IsFloatingMode() ||
+ !GetFloatingWindow()->IsRollUp() )
+ {
+ Size aQSize=GetOutputSizePixel();
+ Resizing( aQSize);
+ SetSize();
+ }
+ SfxDockingWindow::Resize();
+}
+
+/*************************************************************************
+#* Member: UpdateFunctionList Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Aktualisiert die Liste der Funktionen ab-
+#* haengig von der eingestellten Kategorie.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::UpdateFunctionList()
+{
+ USHORT nSelPos = aCatBox.GetSelectEntryPos();
+ USHORT nCategory = ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
+ ? (nSelPos-1) : 0;
+
+ pAllFuncList->Clear();
+ pAllFuncList->SetUpdateMode( FALSE );
+
+ if ( nSelPos > 0 )
+ {
+ ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
+
+ ScFuncDesc* pDesc = pFuncMgr->First( nCategory );
+ while ( pDesc )
+ {
+ pAllFuncList->SetEntryData(
+ pAllFuncList->InsertEntry( *(pDesc->pFuncName) ),
+ pDesc );
+ pDesc = pFuncMgr->Next();
+ }
+ }
+ else // LRU-Liste
+ {
+ for ( USHORT i=0; i<LRU_MAX && aLRUList[i]; i++ )
+ {
+ ScFuncDesc* pDesc = aLRUList[i];
+ pAllFuncList->SetEntryData(
+ pAllFuncList->InsertEntry( *(pDesc->pFuncName) ),
+ pDesc );
+ }
+ }
+
+
+ //------------------------------------------------------
+ pAllFuncList->SetUpdateMode( TRUE );
+
+ if ( pAllFuncList->GetEntryCount() > 0 )
+ {
+ pAllFuncList->Enable();
+ pAllFuncList->SelectEntryPos( 0 );
+ }
+ else
+ {
+ pAllFuncList->Disable();
+ }
+}
+
+/*************************************************************************
+#* Member: DoEnter Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Eingabe ins Dokument uebernehmen. Wird aufgerufen
+#* nach betaetigen der Uebernehmen- Schaltflaeche
+#* oder einem Doppelklick in die Funktionsliste.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScFunctionDockWin::DoEnter(BOOL bOk) //@@ ???
+{
+ String aFirstArgStr;
+ String aParaStr;
+ String aArgStr;
+ USHORT rStart=0;
+ USHORT rEnd=0;
+ String aString=pAllFuncList->GetSelectEntry();
+ SfxViewShell* pCurSh = SfxViewShell::Current();
+ nArgs=0;
+
+ if(aString.Len()>0)
+ {
+
+ ScModule* pScMod = SC_MOD();
+ ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, pCurSh);
+ ScInputHandler* pHdl = pScMod->GetInputHdl( pViewSh );
+ if(!pScMod->IsEditMode())
+ {
+ pScMod->SetInputMode(SC_INPUT_TABLE);
+ aString = '=';
+ aString += pAllFuncList->GetSelectEntry();
+ if (pHdl)
+ pHdl->ClearText();
+ }
+ ScFuncDesc* pDesc =
+ (ScFuncDesc*)pAllFuncList->GetEntryData(
+ pAllFuncList->GetSelectEntryPos() );
+ if (pDesc)
+ {
+ pFuncDesc=pDesc;
+ UpdateLRUList();
+ nArgs = pDesc->nArgCount;
+ if(nArgs>0)
+ {
+ aFirstArgStr = *(pDesc->aDefArgNames[0]);
+ aFirstArgStr.EraseAllChars();
+ aArgStr = aFirstArgStr;
+ if ( nArgs != VAR_ARGS )
+ { // keine VarArgs oder Fix plus VarArgs, aber nicht nur VarArgs
+ String aArgSep = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "; " ));
+ USHORT nFix = ( nArgs < VAR_ARGS ? nArgs : nArgs - VAR_ARGS + 1 );
+ for ( USHORT nArg = 1;
+ nArg < nFix && !pDesc->aDefArgOpt[nArg]; nArg++ )
+ {
+ aArgStr += aArgSep;
+ aArgStr += *(pDesc->aDefArgNames[nArg]);
+ }
+ }
+ }
+ }
+ if (pHdl)
+ {
+ if(pHdl->GetEditString().Len()==0)
+ {
+ aString = '=';
+ aString += pAllFuncList->GetSelectEntry();
+ }
+ EditView *pEdView=pHdl->GetActiveView();
+ if(pEdView!=NULL) // @ Wegen Absturz bei Namen festlegen
+ {
+ if(nArgs>0)
+ {
+ pHdl->InsertFunction(aString);
+ pEdView->InsertText(aArgStr,TRUE);
+ ESelection aESel=pEdView->GetSelection();
+ aESel.nEndPos=aESel.nStartPos+aFirstArgStr.Len();
+ pEdView->SetSelection(aESel);
+ pHdl->DataChanged();
+ }
+ else
+ {
+ aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "()" ));
+ pEdView->InsertText(aString,FALSE);
+ pHdl->DataChanged();
+ }
+ }
+ }
+ InitLRUList();
+ }
+ if ( pCurSh )
+ {
+ Window* pShellWnd = pCurSh->GetWindow();
+
+ if ( pShellWnd )
+ pShellWnd->GrabFocus();
+ }
+
+
+}
+
+
+
+/*************************************************************************
+#* Handle: SelHdl Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Bei einer Aenderung der Kategorie wird die
+#* die Liste der Funktionen aktualisiert.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScFunctionDockWin, SelHdl, ListBox*, pLb )
+{
+ if ( pLb == &aCatBox)
+ {
+ UpdateFunctionList();
+ SetDescription();
+ }
+
+ if ( pLb == &aFuncList||pLb == &aDDFuncList)
+ {
+ SetDescription();
+ }
+
+
+ //SetSize();
+ return 0;
+}
+
+/*************************************************************************
+#* Handle: SelHdl Datum:06.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Bei einer Aenderung der Kategorie wird die
+#* die Liste der Funktionen aktualisiert.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScFunctionDockWin, SetSelectionHdl, void*, pCtrl )
+{
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+
+ if ((ImageButton *)pCtrl == &aInsertButton ||
+ (ListBox *)pCtrl == &aFuncList)
+ {
+ DoEnter(TRUE); // Uebernimmt die Eingabe
+ }
+ //...
+
+ return 0;
+}
+
+/*************************************************************************
+#* Handle: SetSplitHdl Datum:13.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScFunctionDockWin
+#*
+#* Funktion: Bei einer Aenderung des Split- Controls werden die
+#* einzelnen Controls an die neue Groesse angepasst.
+#*
+#* Input: Zeiger auf Control
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScFunctionDockWin, SetSplitHdl, ScPrivatSplit*, pCtrl )
+{
+ if (pCtrl == &aPrivatSplit)
+ {
+ short nDeltaY=aPrivatSplit.GetDeltaY();
+ Size aFLSize=aFuncList.GetSizePixel();
+ Size aFDSize=aFiFuncDesc.GetSizePixel();
+ Point aFDTopLeft=aFiFuncDesc.GetPosPixel();
+
+ aFLSize.Height()+=nDeltaY;
+ aFDSize.Height()-=nDeltaY;
+ aFDTopLeft.Y()+=nDeltaY;
+ aFuncList.SetSizePixel(aFLSize);
+ aFiFuncDesc.SetPosPixel(aFDTopLeft);
+ aFiFuncDesc.SetSizePixel(aFDSize);
+ /*
+ aFuncList.Invalidate();
+ aFuncList.Update();
+ aFiFuncDesc.Invalidate();
+ aFiFuncDesc.Update();
+ */
+ }
+ //...
+
+ return 0;
+}
+
+void ScFunctionDockWin::ToggleFloatingMode()
+{
+ aSplitterInitPos = Point();
+ SfxDockingWindow::ToggleFloatingMode();
+
+ eSfxNewAlignment=GetAlignment();
+ eSfxOldAlignment=eSfxNewAlignment;
+
+ aOldSize.Height()=0;
+ aOldSize.Width()=0;
+ aTimer.Start();
+}
+
+IMPL_LINK( ScFunctionDockWin, TimerHdl, Timer*, pTi)
+{
+ CheckAlignment(eSfxOldAlignment,eSfxNewAlignment);
+ SetSize();
+ return 0;
+}
+
+void ScFunctionDockWin::Initialize(SfxChildWinInfo *pInfo)
+{
+ String aStr;
+ if(pInfo!=NULL)
+ {
+ if ( pInfo->aExtraString.Len() )
+ {
+ xub_StrLen nPos = pInfo->aExtraString.Search(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScFuncList:")));
+
+ // Versuche, den Alignment-String "ALIGN:(...)" einzulesen; wenn
+ // er nicht vorhanden ist, liegt eine "altere Version vor
+ if ( nPos != STRING_NOTFOUND )
+ {
+ xub_StrLen n1 = pInfo->aExtraString.Search('(', nPos);
+ if ( n1 != STRING_NOTFOUND )
+ {
+ xub_StrLen n2 = pInfo->aExtraString.Search(')', n1);
+ if ( n2 != STRING_NOTFOUND )
+ {
+ // Alignment-String herausschneiden
+ aStr = pInfo->aExtraString.Copy(nPos, n2 - nPos + 1);
+ pInfo->aExtraString.Erase(nPos, n2 - nPos + 1);
+ aStr.Erase(0, n1-nPos+1);
+ }
+ }
+ }
+ }
+ }
+ SfxDockingWindow::Initialize(pInfo);
+
+ if ( aStr.Len())
+ {
+ aSplitterInitPos=aPrivatSplit.GetPosPixel();
+
+ aSplitterInitPos.Y()=(USHORT) aStr.ToInt32();
+ xub_StrLen n1 = aStr.Search(';');
+ aStr.Erase(0, n1+1);
+ USHORT nSelPos=aStr.ToInt32();
+ aCatBox.SelectEntryPos(nSelPos);
+ SelHdl(&aCatBox);
+ StateChanged(STATE_CHANGE_VISIBLE);
+
+ }
+}
+
+//-------------------------------------------------------------------------
+
+void ScFunctionDockWin::FillInfo(SfxChildWinInfo& rInfo) const
+{
+ SfxDockingWindow::FillInfo(rInfo);
+ Point aPoint=aPrivatSplit.GetPosPixel();
+ rInfo.aExtraString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "ScFuncList:(" ));
+ rInfo.aExtraString += String::CreateFromInt32(aPoint.Y());
+ rInfo.aExtraString += ';';
+ rInfo.aExtraString += String::CreateFromInt32(aCatBox.GetSelectEntryPos());
+ rInfo.aExtraString += ')';
+}
+
+void ScFunctionDockWin::StateChanged( StateChangedType nStateChange )
+{
+ SfxDockingWindow::StateChanged( nStateChange );
+
+ if(nStateChange == STATE_CHANGE_VISIBLE)
+ {
+ if(IsVisible() && aPrivatSplit.IsEnabled() &&
+ aSplitterInitPos != Point())
+ {
+ aPrivatSplit.MoveSplitTo(aSplitterInitPos);
+ }
+ }
+}
+
+
diff --git a/sc/source/ui/formdlg/dwfunctr.hrc b/sc/source/ui/formdlg/dwfunctr.hrc
new file mode 100644
index 000000000000..0d2126ceba58
--- /dev/null
+++ b/sc/source/ui/formdlg/dwfunctr.hrc
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * $RCSfile: dwfunctr.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#define CB_CAT 1
+#define LB_FUNC 2
+#define DDLB_FUNC 3
+#define IMB_INSERT 1
+#define FI_FUNCDESC 1
+#define FT_SPLIT 2
+
+
+// ********************************************************************** EOF
+
diff --git a/sc/source/ui/formdlg/dwfunctr.src b/sc/source/ui/formdlg/dwfunctr.src
new file mode 100644
index 000000000000..2269a1779ea7
--- /dev/null
+++ b/sc/source/ui/formdlg/dwfunctr.src
@@ -0,0 +1,600 @@
+/*************************************************************************
+ *
+ * $RCSfile: dwfunctr.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+ // include ---------------------------------------------------------------
+#include "sc.hrc"
+#include "dwfunctr.hrc"
+ // pragma ----------------------------------------------------------------
+
+ // RID_SVXDLG_CALCFUNC --------------------------------------------------
+DockingWindow FID_FUNCTION_BOX
+{
+ Border = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Sizeable = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ Dockable = TRUE ;
+ EnableResizing = TRUE ;
+ Size = MAP_APPFONT ( 130 , 160 ) ;
+ Text = "Funktionen" ;
+ Text [ ENGLISH ] = "Functions" ;
+ HelpId = HID_FUNCTION_BOX ;
+ ListBox CB_CAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 20 , 4 ) ;
+ Size = MAP_APPFONT ( 56 , 80 ) ;
+ DropDown = TRUE ;
+ AutoSize = TRUE ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ AutoHScroll = TRUE ;
+ StringList =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ // ### ACHTUNG: Neuer Eintrag in Liste? 13 : Add In
+ < "Add In" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Last used" ; Default ; > ;
+ < "All" ; Default ; > ;
+ < "Database" ; Default ; > ;
+ < "Date&Time" ; Default ; > ;
+ < "Financial" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logical" ; Default ; > ;
+ < "Mathematical" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistical" ; Default ; > ;
+ < "Spreadsheet" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add-In" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Usate più di recente" ; Default ; > ;
+ < "Tutte" ; Default ; > ;
+ < "Database" ; Default ; > ;
+ < "Data&Orario" ; Default ; > ;
+ < "Finanziaria" ; Default ; > ;
+ < "Informazione" ; Default ; > ;
+ < "Logica" ; Default ; > ;
+ < "Matematica" ; Default ; > ;
+ < "Matrice" ; Default ; > ;
+ < "Statistica" ; Default ; > ;
+ < "Tabella" ; Default ; > ;
+ < "Testo" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ // < "Definite dall'utente"; Default; >;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ // < "Definido pelo usuário"; Default; >;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Usado por último" ; Default ; > ;
+ < "Tudo" ; Default ; > ;
+ < "Base de dados" ; Default ; > ;
+ < "Data & Hora" ; Default ; > ;
+ < "Finanças" ; Default ; > ;
+ < "Informação" ; Default ; > ;
+ < "Lógico" ; Default ; > ;
+ < "Matemático" ; Default ; > ;
+ < "Matriz" ; Default ; > ;
+ < "Estatística" ; Default ; > ;
+ < "Folha de cálculo" ; Default ; > ;
+ < "Texto" ; Default ; > ;
+ < "Adicionar" ; Default ; > ;
+ // < "Definido pelo utilizador"; Default; >;
+ };
+ StringList [ finnish ] =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ // < "Käyttäjän"; Default; >;
+ };
+ StringList [ danish ] =
+ {
+ < "Senest anvendt" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Database" ; Default ; > ;
+ < "Dato og klokkeslæt" ; Default ; > ;
+ < "Finans" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisk" ; Default ; > ;
+ < "Matematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Regneark" ; Default ; > ;
+ < "Tekst" ; Default ; > ;
+ < "Add-In" ; Default ; > ;
+ // < "Brugerdefineret"; Default; >;
+ };
+ StringList [ french ] =
+ {
+ < "Les dernières utilisées" ; Default ; > ;
+ < "Toutes" ; Default ; > ;
+ < "Base de données" ; Default ; > ;
+ < "Date&Heure" ; Default ; > ;
+ < "Finances" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logique" ; Default ; > ;
+ < "Mathématique" ; Default ; > ;
+ < "Matrice" ; Default ; > ;
+ < "Statistique" ; Default ; > ;
+ < "Classeur" ; Default ; > ;
+ < "Texte" ; Default ; > ;
+ < "Add-In" ; Default ; > ;
+ // < "Défini par l'utilisateur"; Default; >;
+ };
+ StringList [ swedish ] =
+ {
+ < "Senast använd" ; Default ; > ;
+ < "Alla" ; Default ; > ;
+ < "Databas" ; Default ; > ;
+ < "Datum&Tid" ; Default ; > ;
+ < "Finans" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisk" ; Default ; > ;
+ < "Matematik" ; Default ; > ;
+ < "Matris" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabell" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add-In" ; Default ; > ;
+ // < "Användardefinierad"; Default; >;
+ };
+ StringList [ dutch ] =
+ {
+ < "Als laatste gebruikt" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Database" ; Default ; > ;
+ < "Datum&Tijd" ; Default ; > ;
+ < "Financieel" ; Default ; > ;
+ < "Informatie" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Wiskundig" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistiek" ; Default ; > ;
+ < "Werkblad" ; Default ; > ;
+ < "Tekst" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ // < "Gebruiker-gedefinieerd"; Default; >;
+ };
+ StringList [ spanish ] =
+ {
+ < "Última utilización" ; Default ; > ;
+ < "Todas" ; Default ; > ;
+ < "Base de datos" ; Default ; > ;
+ < "Fecha&Hora" ; Default ; > ;
+ < "Finanzas" ; Default ; > ;
+ < "Información" ; Default ; > ;
+ < "Lógico" ; Default ; > ;
+ < "Matemáticas" ; Default ; > ;
+ < "Matriz" ; Default ; > ;
+ < "Estadística" ; Default ; > ;
+ < "Hoja de cálculo" ; Default ; > ;
+ < "Texto" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ // < "Definido por el usuario"; Default; >;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÉÏÒ»´ÎʹÓõÄ" ; Default ; > ;
+ < "È«²¿" ; Default ; > ;
+ < "Êý¾Ý¿â" ; Default ; > ;
+ < "ÈÕÆÚºÍʱ¼ä" ; Default ; > ;
+ < "²ÆÎñ" ; Default ; > ;
+ < "ÐÅÏ¢" ; Default ; > ;
+ < "Âß¼­" ; Default ; > ;
+ < "Êýѧ" ; Default ; > ;
+ < "¾ØÕó" ; Default ; > ;
+ < "ͳ¼Æ" ; Default ; > ;
+ < "¹¤×÷±í" ; Default ; > ;
+ < "ÎÄ×Ö" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ïðèìåíåíî ïîñëåäíèì" ; Default ; > ;
+ < "Âñå" ; Default ; > ;
+ < "Áàçà äàííûõ" ; Default ; > ;
+ < "Äàòà è âðåìÿ" ; Default ; > ;
+ < "Ôèíàíñîâûå" ; Default ; > ;
+ < "Èíôîðìàöèÿ" ; Default ; > ;
+ < "Ëîãè÷åñêèå" ; Default ; > ;
+ < "Ìàòåìàòè÷åñêèå" ; Default ; > ;
+ < "Ìàòðèöà" ; Default ; > ;
+ < "Ñòàòèñòè÷åñêèå" ; Default ; > ;
+ < "Òàáëèöà" ; Default ; > ;
+ < "Òåêñò" ; Default ; > ;
+ < "Íàäñòðîéêà" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Ostatnio u¿yte" ; Default ; > ;
+ < "Wszystkie" ; Default ; > ;
+ < "Baza danych" ; Default ; > ;
+ < "Data&Godzina" ; Default ; > ;
+ < "Finanse" ; Default ; > ;
+ < "Informacja" ; Default ; > ;
+ < "Logiczne" ; Default ; > ;
+ < "Matematyka" ; Default ; > ;
+ < "Macierz" ; Default ; > ;
+ < "Statystyka" ; Default ; > ;
+ < "Arkusz kalkulacyjny" ; Default ; > ;
+ < "Tekst" ; Default ; > ;
+ < "Dodatki" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "ŋߎg—p‚µ‚½ŠÖ”" ; Default ; > ;
+ < "‚·‚ׂÄ" ; Default ; > ;
+ < "ÃÞ°ÀÍÞ°½" ; Default ; > ;
+ < "“ú•t&Žž" ; Default ; > ;
+ < "à–±" ; Default ; > ;
+ < "î•ñ" ; Default ; > ;
+ < "˜_—" ; Default ; > ;
+ < "”Šw" ; Default ; > ;
+ < "ÏÄظ½" ; Default ; > ;
+ < "“Œv" ; Default ; > ;
+ < "•\\ŒvŽZ" ; Default ; > ;
+ < "•¶Žš" ; Default ; > ;
+ < "±ÄÞ²Ý" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¤W¤@¦¸¨Ï¥Îªº" ; Default ; > ;
+ < "¥þ³¡" ; Default ; > ;
+ < "¸ê®Æ®w" ; Default ; > ;
+ < "¤é´Á©M®É¶¡" ; Default ; > ;
+ < "°]°È" ; Default ; > ;
+ < "¸ê°T" ; Default ; > ;
+ < "ÅÞ¿è" ; Default ; > ;
+ < "¼Æ¾Ç" ; Default ; > ;
+ < "¯x°}" ; Default ; > ;
+ < "²Î­p" ; Default ; > ;
+ < "¤u§@ªí" ; Default ; > ;
+ < "¤å¦r" ; Default ; > ;
+ < "Add-In" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÞÇÆãÉ ÇáÏÇáÇÊ ÇáãÓÊÎÏãÉ ÃÎíÑÇð" ; Default ; > ;
+ < "Çáßá" ; Default ; > ;
+ < "ÞÇÚÏÉ ÇáÈíÇäÇÊ" ; Default ; > ;
+ < "ÇáÊÇÑíÎ æÇáæÞÊ" ; Default ; > ;
+ < "ãÇáíÉ" ; Default ; > ;
+ < "ãÚáæãÉ" ; Default ; > ;
+ < "ãäØÞíÉ" ; Default ; > ;
+ < "ÑíÇÖíÇÊ" ; Default ; > ;
+ < "ãÕÝæÝÉ" ; Default ; > ;
+ < "ÅÍÕÇÁ" ; Default ; > ;
+ < "ÌÏæá" ; Default ; > ;
+ < "äÕ" ; Default ; > ;
+ < "ÅÖÇÝÉ" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Als laatste gebruikt" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Database" ; Default ; > ;
+ < "Datum&Tijd" ; Default ; > ;
+ < "Financieel" ; Default ; > ;
+ < "Informatie" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Wiskundig" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistiek" ; Default ; > ;
+ < "Werkblad" ; Default ; > ;
+ < "Tekst" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÉÏÒ»´ÎʹÓõÄ" ; Default ; > ;
+ < "È«²¿" ; Default ; > ;
+ < "Êý¾Ý¿â" ; Default ; > ;
+ < "ÈÕÆÚºÍʱ¼ä" ; Default ; > ;
+ < "²ÆÎñ" ; Default ; > ;
+ < "ÐÅÏ¢" ; Default ; > ;
+ < "Âß¼­" ; Default ; > ;
+ < "Êýѧ" ; Default ; > ;
+ < "¾ØÕó" ; Default ; > ;
+ < "ͳ¼Æ" ; Default ; > ;
+ < "¹¤×÷±í" ; Default ; > ;
+ < "ÎÄ×Ö" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "Ôåëåõôáßá ÷ñçóéìïðïéçìÝíï" ; Default ; > ;
+ < "¼ëá" ; Default ; > ;
+ < "ÂÜóç äåäïìÝíùí" ; Default ; > ;
+ < "Çìåñïìçíßá êáé ¿ñá" ; Default ; > ;
+ < "ÏéêïíïìéêÜ" ; Default ; > ;
+ < "Ðëçñïöïñßåò" ; Default ; > ;
+ < "ËïãéêÜ" ; Default ; > ;
+ < "ÌáèçìáôéêÜ" ; Default ; > ;
+ < "ÌÞôñá" ; Default ; > ;
+ < "ÓôáôéóôéêÜ" ; Default ; > ;
+ < "Ðßíáêáò" ; Default ; > ;
+ < "Êåßìåíï" ; Default ; > ;
+ < "ÐñïóèÞêç" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¸¶Áö¸· »ç¿ë" ; Default ; > ;
+ < "Àüü" ; Default ; > ;
+ < "µ¥ÀÌÅͺ£À̽º" ; Default ; > ;
+ < "ÀÏÀÚ&½Ã°£" ; Default ; > ;
+ < "ȸ°èÀÇ" ; Default ; > ;
+ < "Á¤º¸" ; Default ; > ;
+ < "³í¸®ÀûÀÎ" ; Default ; > ;
+ < "¼öÇÐÀûÀÎ" ; Default ; > ;
+ < "Çà·Ä" ; Default ; > ;
+ < "Åë°è" ; Default ; > ;
+ < "½ºÇÁ·¹µå ½ÃÆ®" ; Default ; > ;
+ < "ÅؽºÆ®" ; Default ; > ;
+ < "Ãß°¡" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Son kullaným" ; Default ; > ;
+ < "Tümü" ; Default ; > ;
+ < "Vertabaný" ; Default ; > ;
+ < "Tarih&Saat" ; Default ; > ;
+ < "Finans" ; Default ; > ;
+ < "Bilgi" ; Default ; > ;
+ < "Mantýk" ; Default ; > ;
+ < "Matematik" ; Default ; > ;
+ < "Matris" ; Default ; > ;
+ < "Ýstatistik" ; Default ; > ;
+ < "Tablo" ; Default ; > ;
+ < "Metin" ; Default ; > ;
+ < "Ekle" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ListBox DDLB_FUNC
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 103 , 4 ) ;
+ Size = MAP_APPFONT ( 56 , 80 ) ;
+ Hide = TRUE ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ ListBox LB_FUNC
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 19 ) ;
+ Size = MAP_APPFONT ( 72 , 90 ) ;
+ TabStop = TRUE ;
+ AutoHScroll = TRUE ;
+ };
+ FixedText FI_FUNCDESC
+ {
+ WordBreak = TRUE ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 115 ) ;
+ Size = MAP_APPFONT ( 72 , 40 ) ;
+ };
+ Control FT_SPLIT
+ {
+ Pos = MAP_APPFONT ( 3 , 110 ) ;
+ Size = MAP_APPFONT ( 72 , 3 ) ;
+ };
+ ImageButton IMB_INSERT
+ {
+ Pos = MAP_APPFONT ( 3 , 4 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = TRUE ;
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap
+ {
+ File = "fx.bmp" ;
+ };
+
+ MaskColor = Color
+ {
+ Red = 0xC000 ;
+ Green = 0xC000 ;
+ Blue = 0xC000 ;
+ };
+
+ };
+ DefButton = TRUE ;
+ QuickHelpText = "Funktion in Rechenblatt einfügen" ;
+ QuickHelpText [ English ] = "Insert function into the spreedsheet." ;
+ QuickHelpText [ english_us ] = "Insert Function into calculation sheet" ;
+ QuickHelpText [ portuguese_brazilian ] = "Funktion in Rechenblatt einfügen" ;
+ QuickHelpText [ swedish ] = "Infoga funktion i beräkningsark" ;
+ QuickHelpText [ danish ] = "Indsæt funktion i regneark" ;
+ QuickHelpText [ italian ] = "Inserisci funzione nel foglio di calcolo" ;
+ QuickHelpText [ spanish ] = "Insertar la función en la hoja de cálculo" ;
+ QuickHelpText [ french ] = "Insérer une fonction dans la feuille de calcul" ;
+ QuickHelpText [ dutch ] = "Functie invoegen in werkblad" ;
+ QuickHelpText [ portuguese ] = "Insere função na folha de cálculo" ;
+ QuickHelpText[ russian ] = "Âñòàâèòü ôóíêöèþ â ëèñò";
+ QuickHelpText[ polish ] = "Wstaw funkcjê do arkusza";
+ QuickHelpText[ japanese ] = "•\\‚ÉŠÖ”‚ð‘}“ü";
+ QuickHelpText[ chinese_simplified ] = "²åÈ뺯Êý";
+ QuickHelpText[ chinese_traditional ] = "´¡¤J¨ç¼Æ";
+ QuickHelpText[ arabic ] = "ÅÏÑÇÌ ÏÇáÉ";
+ QuickHelpText[ dutch ] = "Functie invoegen in werkblad";
+ QuickHelpText[ chinese_simplified ] = "²åÈ뺯Êý";
+ QuickHelpText[ greek ] = "ÅéóáãùãÞ óõíÜñôçóçò óå õðïëïãéóôéêü öýëëï";
+ QuickHelpText[ korean ] = "Insert Function";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "Functions" ;
+ Text [ portuguese_brazilian ] = "Funktionen" ;
+ Text [ swedish ] = "Funktioner" ;
+ Text [ danish ] = "Funktioner" ;
+ Text [ italian ] = "Funzioni" ;
+ Text [ spanish ] = "Funciones" ;
+ Text [ french ] = "Fonctions" ;
+ Text [ dutch ] = "Functies" ;
+ Text [ portuguese ] = "Funções" ;
+ Text[ chinese_simplified ] = "º¯Êý";
+ Text[ russian ] = "Ôóíêöèè";
+ Text[ polish ] = "Funkcje";
+ Text[ japanese ] = "ŠÖ”";
+ Text[ chinese_traditional ] = "¨ç¼Æ";
+ Text[ arabic ] = "ÇáÏÇáÇÊ";
+ Text[ dutch ] = "Functies";
+ Text[ chinese_simplified ] = "º¯Êý";
+ Text[ greek ] = "ÓõíáñôÞóåéò";
+ Text[ korean ] = "ÇÔ¼ö";
+ Text[ turkish ] = "Fonksiyon";
+ Text[ language_user1 ] = " ";
+};
+ // ********************************************************************** EOF
diff --git a/sc/source/ui/formdlg/formdata.cxx b/sc/source/ui/formdlg/formdata.cxx
new file mode 100644
index 000000000000..b473988e1c89
--- /dev/null
+++ b/sc/source/ui/formdlg/formdata.cxx
@@ -0,0 +1,147 @@
+/*************************************************************************
+ *
+ * $RCSfile: formdata.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include "segmentc.hxx"
+#endif
+#ifndef _DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+
+#include "formdata.hxx"
+
+//============================================================================
+
+ScFormEditData::ScFormEditData()
+{
+ Reset();
+}
+
+ScFormEditData::~ScFormEditData()
+{
+ delete pParent;
+}
+
+ScFormEditData::ScFormEditData( const ScFormEditData& r )
+{
+ *this = r;
+}
+
+void ScFormEditData::Reset()
+{
+ pParent = NULL;
+ nMode = 0;
+ nFStart = 0;
+ nCatSel = 1; //! oder 0 (zuletzt benutzte)
+ nFuncSel = 0;
+ nOffset = 0;
+ nEdFocus = 0;
+ bMatrix =FALSE;
+ nUniqueId=0;
+ aSelection.Min()=0;
+ aSelection.Max()=0;
+ aUndoStr.Erase();
+}
+
+const ScFormEditData& ScFormEditData::operator=( const ScFormEditData& r )
+{
+ pParent = r.pParent;
+ nMode = r.nMode;
+ nFStart = r.nFStart;
+ nCatSel = r.nCatSel;
+ nFuncSel = r.nFuncSel;
+ nOffset = r.nOffset;
+ nEdFocus = r.nEdFocus;
+ aUndoStr = r.aUndoStr;
+ bMatrix = r.bMatrix ;
+ nUniqueId = r.nUniqueId;
+ aSelection = r.aSelection;
+ return *this;
+}
+
+void ScFormEditData::SaveValues()
+{
+ ScFormEditData* pTemp = new ScFormEditData(*this);
+
+ Reset();
+ pParent = pTemp;
+}
+
+void ScFormEditData::RestoreValues()
+{
+ ScFormEditData* pTemp = pParent;
+ DBG_ASSERT(pTemp,"RestoreValues ohne Parent");
+ if (pTemp)
+ {
+ *this = *pTemp;
+ pTemp->pParent = NULL; // sonst wird der auch geloescht!
+ delete pTemp;
+ }
+}
+
+
+
diff --git a/sc/source/ui/formdlg/formdlgs.hrc b/sc/source/ui/formdlg/formdlgs.hrc
new file mode 100644
index 000000000000..ec54bd437760
--- /dev/null
+++ b/sc/source/ui/formdlg/formdlgs.hrc
@@ -0,0 +1,114 @@
+/*************************************************************************
+ *
+ * $RCSfile: formdlgs.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // -> RID_SCDLG_FORMULA
+
+
+
+#define FT_RESULT 1
+#define WND_RESULT 2
+#define FT_EDITNAME 3
+#define STR_TITLE1 4
+#define STR_TITLE2 5
+#define BTN_HELP 6
+#define BTN_CANCEL 7
+#define BTN_BACKWARD 8
+#define BTN_FORWARD 9
+#define BTN_END 10
+#define BTN_MATRIX 11
+#define FT_FUNCNAME 12
+#define FT_FUNCDESC 13
+#define FT_HEADLINE 14
+#define GB_EDIT 15
+#define FT_FORMULA 16
+#define ED_FORMULA 17
+#define TC_FUNCTION 18
+#define ED_REF 19
+#define RB_REF 20
+#define FT_FORMULA_RESULT 21
+#define WND_FORMULA_RESULT 22
+// Fuer Tabpage
+#define TP_FUNCTION 1
+#define TP_STRUCT 2
+
+// Funktions-Tabpage
+#define FT_FUNCTION 1
+#define FT_CATEGORY 2
+#define LB_CATEGORY 3
+#define LB_FUNCTION 4
+#define IB_FUNCTION 5
+
+
+// Struktur-Tabpage
+#define FT_STRUCT 1
+#define TLB_STRUCT 2
+
+// Bitmaps
+#define BMP_STR_CLOSE 1
+#define BMP_STR_OPEN 2
+#define BMP_STR_END 3
+#define BMP_STR_ERROR 4
+
+// Texte
+#define STR_STRUCT_ERR1 1
+#define STR_STRUCT_ERR2 2
+
+
diff --git a/sc/source/ui/formdlg/formdlgs.src b/sc/source/ui/formdlg/formdlgs.src
new file mode 100644
index 000000000000..96ec6dc639c9
--- /dev/null
+++ b/sc/source/ui/formdlg/formdlgs.src
@@ -0,0 +1,1099 @@
+/*************************************************************************
+ *
+ * $RCSfile: formdlgs.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "formdlgs.hrc"
+ //---------------------------------------------------------------------------
+TabPage RID_SCTAB_FUNCTION
+{
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 96 , 180 ) ;
+ // Titel wird dynamisch gesetzt (s.u.)
+ // 1. Seite
+ ImageButton IB_FUNCTION
+ {
+ Hide = TRUE ;
+ //@new
+ QuickHelpText = "Funktion übernehmen" ;
+ QuickHelpText [ ENGLISH ] = "set function" ;
+ Pos = MAP_APPFONT ( 81 , 33 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = TRUE ;
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap
+ {
+ File = "sc06300.bmp" ;
+ };
+ };
+ QuickHelpText [ english_us ] = "Apply Function" ;
+ QuickHelpText [ portuguese_brazilian ] = "Funktion übernehmen" ;
+ QuickHelpText [ swedish ] = "Överta funktion" ;
+ QuickHelpText [ danish ] = "Anvend funktion" ;
+ QuickHelpText [ italian ] = "Applica funzione" ;
+ QuickHelpText [ spanish ] = "Aplicar función" ;
+ QuickHelpText [ french ] = "Adopter la fonction" ;
+ QuickHelpText [ dutch ] = "Functie overnemen" ;
+ QuickHelpText [ portuguese ] = "Aplicar função" ;
+ QuickHelpText[ russian ] = "Ïðèìåíèòü ôóíêöèþ";
+ QuickHelpText[ polish ] = "Zastosuj funkcjê";
+ QuickHelpText[ japanese ] = "ŠÖ”‚Ì“K—p";
+ QuickHelpText[ chinese_simplified ] = "½ÓÊܺ¯Êý";
+ QuickHelpText[ chinese_traditional ] = "±µ¦¬¨ç¼Æ";
+ QuickHelpText[ arabic ] = "ÊØÈíÞ ÇáÏÇáÉ";
+ QuickHelpText[ greek ] = "ÅöáñìïãÞ óõíÜñôçóçò";
+ QuickHelpText[ korean ] = "Apply Function";
+ };
+ ListBox LB_CATEGORY
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 18 ) ;
+ Size = MAP_APPFONT ( 90 , 112 ) ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ // ### ACHTUNG: Neuer Eintrag in Liste? 13 : Add In
+ < "Add In" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Last used" ; Default ; > ;
+ < "All" ; Default ; > ;
+ < "Database" ; Default ; > ;
+ < "Date&Time" ; Default ; > ;
+ < "Financial" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logical" ; Default ; > ;
+ < "Mathematical" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistical" ; Default ; > ;
+ < "Spreadsheet" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add-In" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Usate più di recente" ; Default ; > ;
+ < "Tutte" ; Default ; > ;
+ < "Database" ; Default ; > ;
+ < "Data&Orario" ; Default ; > ;
+ < "Finanziaria" ; Default ; > ;
+ < "Informazione" ; Default ; > ;
+ < "Logica" ; Default ; > ;
+ < "Matematica" ; Default ; > ;
+ < "Matrice" ; Default ; > ;
+ < "Statistica" ; Default ; > ;
+ < "Tabella" ; Default ; > ;
+ < "Testo" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ // < "Definite dall'utente"; Default; >;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ // < "Definido pelo usuário"; Default; >;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Última utilização" ; Default ; > ;
+ < "Tudo" ; Default ; > ;
+ < "Base de dados" ; Default ; > ;
+ < "Data&Hora" ; Default ; > ;
+ < "Finanças" ; Default ; > ;
+ < "Informação" ; Default ; > ;
+ < "Lógico" ; Default ; > ;
+ < "Matemático" ; Default ; > ;
+ < "Matriz" ; Default ; > ;
+ < "Estatística" ; Default ; > ;
+ < "Folha de cálculo" ; Default ; > ;
+ < "Texto" ; Default ; > ;
+ < "Adicionar" ; Default ; > ;
+ // < "Definido pelo utilizador"; Default; >;
+ };
+ StringList [ finnish ] =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ // < "Käyttäjän"; Default; >;
+ };
+ StringList [ danish ] =
+ {
+ < "Senest anvendt" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Database" ; Default ; > ;
+ < "Dato og klokkeslæt" ; Default ; > ;
+ < "Finans" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisk" ; Default ; > ;
+ < "Matematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Regneark" ; Default ; > ;
+ < "Tekst" ; Default ; > ;
+ < "Add-In" ; Default ; > ;
+ // < "Brugerdefineret"; Default; >;
+ };
+ StringList [ french ] =
+ {
+ < "Les dernières utilisées" ; Default ; > ;
+ < "Toutes" ; Default ; > ;
+ < "Base de données" ; Default ; > ;
+ < "Date&Heure" ; Default ; > ;
+ < "Finances" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logique" ; Default ; > ;
+ < "Mathématique" ; Default ; > ;
+ < "Matrice" ; Default ; > ;
+ < "Statistique" ; Default ; > ;
+ < "Classeur" ; Default ; > ;
+ < "Texte" ; Default ; > ;
+ < "Add-In" ; Default ; > ;
+ // < "Défini par l'utilisateur"; Default; >;
+ };
+ StringList [ swedish ] =
+ {
+ < "Senast använd" ; Default ; > ;
+ < "Alla" ; Default ; > ;
+ < "Databas" ; Default ; > ;
+ < "Datum&Tid" ; Default ; > ;
+ < "Finans" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisk" ; Default ; > ;
+ < "Matematik" ; Default ; > ;
+ < "Matris" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabell" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add-In" ; Default ; > ;
+ // < "Användardefinierad"; Default; >;
+ };
+ StringList [ dutch ] =
+ {
+ < "Als laatste gebruikt" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Database" ; Default ; > ;
+ < "Datum&Tijd" ; Default ; > ;
+ < "Financieel" ; Default ; > ;
+ < "Informatie" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Wiskunde" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistiek" ; Default ; > ;
+ < "Werkblad" ; Default ; > ;
+ < "Tekst" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ // < "Gebruiker-gedefinieerd"; Default; >;
+ };
+ StringList [ spanish ] =
+ {
+ < "Última utilización" ; Default ; > ;
+ < "Todas" ; Default ; > ;
+ < "Base de datos" ; Default ; > ;
+ < "Fecha&Hora" ; Default ; > ;
+ < "Finanzas" ; Default ; > ;
+ < "Información" ; Default ; > ;
+ < "Lógico" ; Default ; > ;
+ < "Matemáticas" ; Default ; > ;
+ < "Matriz" ; Default ; > ;
+ < "Estadística" ; Default ; > ;
+ < "Hoja de cálculo" ; Default ; > ;
+ < "Texto" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ // < "Definido por el usuario"; Default; >;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÉÏÒ»´ÎʹÓõÄ" ; Default ; > ;
+ < "È«²¿" ; Default ; > ;
+ < "Êý¾Ý¿â" ; Default ; > ;
+ < "ÈÕÆÚºÍʱ¼ä" ; Default ; > ;
+ < "²ÆÎñ" ; Default ; > ;
+ < "ÐÅÏ¢" ; Default ; > ;
+ < "Âß¼­" ; Default ; > ;
+ < "Êýѧ" ; Default ; > ;
+ < "¾ØÕó" ; Default ; > ;
+ < "ͳ¼Æ" ; Default ; > ;
+ < "¹¤×÷±í" ; Default ; > ;
+ < "ÎÄ×Ö" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ïðèìåíåíî ïîñëåäíèì" ; Default ; > ;
+ < "Âñå" ; Default ; > ;
+ < "Áàçà äàííûõ" ; Default ; > ;
+ < "Äàòà&Âðåìÿ" ; Default ; > ;
+ < "Ôèíàíñîâûå" ; Default ; > ;
+ < "Èíôîðìàöèÿ" ; Default ; > ;
+ < "Ëîãè÷åñêèå" ; Default ; > ;
+ < "Ìàòåìàòè÷åñêèå" ; Default ; > ;
+ < "Ìàòðèöà" ; Default ; > ;
+ < "Ñòàòèñòè÷åñêèå" ; Default ; > ;
+ < "Òàáëèöà" ; Default ; > ;
+ < "Òåêñò" ; Default ; > ;
+ < "Íàäñòðîéêè" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Ostatnio u¿yte" ; Default ; > ;
+ < "Wszystkie" ; Default ; > ;
+ < "Baza danych" ; Default ; > ;
+ < "Data&Godzina" ; Default ; > ;
+ < "Finanse" ; Default ; > ;
+ < "Informacja" ; Default ; > ;
+ < "Logiczne" ; Default ; > ;
+ < "Matematyka" ; Default ; > ;
+ < "Macierz" ; Default ; > ;
+ < "Statystyka" ; Default ; > ;
+ < "Arkusz kalkulacyjny" ; Default ; > ;
+ < "Tekst" ; Default ; > ;
+ < "Dodatki" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "ŋߎg—p‚µ‚½ŠÖ”" ; Default ; > ;
+ < "‚·‚ׂÄ" ; Default ; > ;
+ < "ÃÞ°ÀÍÞ°½" ; Default ; > ;
+ < "“ú•t&Žž" ; Default ; > ;
+ < "à–±" ; Default ; > ;
+ < "î•ñ" ; Default ; > ;
+ < "˜_—" ; Default ; > ;
+ < "”Šw" ; Default ; > ;
+ < "ÏÄظ½" ; Default ; > ;
+ < "“Œv" ; Default ; > ;
+ < "•\\ŒvŽZ" ; Default ; > ;
+ < "•¶Žš" ; Default ; > ;
+ < "±ÄÞ²Ý" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¤W¤@¦¸¨Ï¥Îªº" ; Default ; > ;
+ < "¥þ³¡" ; Default ; > ;
+ < "¸ê®Æ®w" ; Default ; > ;
+ < "¤é´Á©M®É¶¡" ; Default ; > ;
+ < "°]°È" ; Default ; > ;
+ < "¸ê°T" ; Default ; > ;
+ < "ÅÞ¿è" ; Default ; > ;
+ < "¼Æ¾Ç" ; Default ; > ;
+ < "¯x°}" ; Default ; > ;
+ < "²Î­p" ; Default ; > ;
+ < "¤u§@ªí" ; Default ; > ;
+ < "¤å¦r" ; Default ; > ;
+ < "Add-In" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÞÇÆãÉ ÇáÏÇáÇÊ ÇáãÓÊÎÏãÉ ÃÎíÑÇð" ; Default ; > ;
+ < "Çáßá" ; Default ; > ;
+ < "ÞÇÚÏÉ ÈíÇäÇÊ" ; Default ; > ;
+ < "ÇáÊÇÑíÎ æÇáæÞÊ" ; Default ; > ;
+ < "ãÇáíÉ" ; Default ; > ;
+ < "ãÚáæãÉ" ; Default ; > ;
+ < "ãäØÞíÉ" ; Default ; > ;
+ < "ÑíÇÖíÇÊ" ; Default ; > ;
+ < "ãÕÝæÝÉ" ; Default ; > ;
+ < "ÅÍÕÇÁ" ; Default ; > ;
+ < "ÌÏæá" ; Default ; > ;
+ < "äÕ" ; Default ; > ;
+ < "ÅÖÇÝÉ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "Ôåëåõôáßá ÷ñçóéìïðïéçìÝíï" ; Default ; > ;
+ < "¼ëá" ; Default ; > ;
+ < "ÂÜóç äåäïìÝíùí" ; Default ; > ;
+ < "Çìåñïìçíßá êáé ¿ñá" ; Default ; > ;
+ < "ÏéêïíïìéêÜ" ; Default ; > ;
+ < "Ðëçñïöïñßåò" ; Default ; > ;
+ < "ËïãéêÜ" ; Default ; > ;
+ < "ÌáèçìáôéêÜ" ; Default ; > ;
+ < "ÌÞôñá" ; Default ; > ;
+ < "ÓôáôéóôéêÜ" ; Default ; > ;
+ < "Ðßíáêáò" ; Default ; > ;
+ < "Êåßìåíï" ; Default ; > ;
+ < "ÐñïóèÞêç" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¸¶Áö¸· »ç¿ëµÈ" ; Default ; > ;
+ < "Àüü" ; Default ; > ;
+ < "µ¥ÀÌÅͺ£À̽º" ; Default ; > ;
+ < "ÀÏÀÚ&½Ã°£" ; Default ; > ;
+ < "ȸ°èÀÇ" ; Default ; > ;
+ < "Á¤º¸" ; Default ; > ;
+ < "³í¸®ÀûÀÎ" ; Default ; > ;
+ < "¼öÇÐÀûÀÎ" ; Default ; > ;
+ < "Çà·Ä" ; Default ; > ;
+ < "Åë°è" ; Default ; > ;
+ < "½ºÇÁ·¹µå ½ÃÆ®" ; Default ; > ;
+ < "ÅؽºÆ®" ; Default ; > ;
+ < "Ãß°¡" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Son kullaným" ; Default ; > ;
+ < "Tümü" ; Default ; > ;
+ < "Veritabaný" ; Default ; > ;
+ < "Tarih&Saat" ; Default ; > ;
+ < "Finans" ; Default ; > ;
+ < "Bilgi" ; Default ; > ;
+ < "Mantýk" ; Default ; > ;
+ < "Matematik" ; Default ; > ;
+ < "Matris" ; Default ; > ;
+ < "Ýstatistik" ; Default ; > ;
+ < "Tablo" ; Default ; > ;
+ < "Metin" ; Default ; > ;
+ < "Ekle" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < "Zuletzt verwendet" ; Default ; > ;
+ < "Alle" ; Default ; > ;
+ < "Datenbank" ; Default ; > ;
+ < "Datum&Zeit" ; Default ; > ;
+ < "Finanz" ; Default ; > ;
+ < "Information" ; Default ; > ;
+ < "Logisch" ; Default ; > ;
+ < "Mathematik" ; Default ; > ;
+ < "Matrix" ; Default ; > ;
+ < "Statistik" ; Default ; > ;
+ < "Tabelle" ; Default ; > ;
+ < "Text" ; Default ; > ;
+ < "Add In" ; Default ; > ;
+ };
+ };
+ ListBox LB_FUNCTION
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 48 ) ;
+ Size = MAP_APPFONT ( 90 , 127 ) ;
+ // Sort = TRUE;
+ };
+ FixedText FT_CATEGORY
+ {
+ Pos = MAP_APPFONT ( 3 , 6 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Kategorie" ;
+ Text [ ENGLISH ] = "~Category" ;
+ Text [ norwegian ] = "~Category" ;
+ Text [ italian ] = "~Categoria" ;
+ Text [ portuguese_brazilian ] = "~Categoria" ;
+ Text [ portuguese ] = "~Categoria" ;
+ Text [ finnish ] = "~Ryhmä" ;
+ Text [ danish ] = "Kategori" ;
+ Text [ french ] = "~Catégorie" ;
+ Text [ swedish ] = "~Kategori" ;
+ Text [ dutch ] = "~Categorie" ;
+ Text [ spanish ] = "Ca~tegoría" ;
+ Text [ english_us ] = "~Category" ;
+ Text[ chinese_simplified ] = "·ÖÀà(~C)";
+ Text[ russian ] = "Êàòåãîðèÿ";
+ Text[ polish ] = "Kategoria";
+ Text[ japanese ] = "•ª—Þ€–Ú(~C)";
+ Text[ chinese_traditional ] = "¤ÀÃþ(~C)";
+ Text[ arabic ] = "ÇáÝÆÉ";
+ Text[ greek ] = "Êáôçãïñßá";
+ Text[ korean ] = "ºÐ·ù Ç׸ñ(~C)";
+ Text[ turkish ] = "~Kategori";
+ };
+ FixedText FT_FUNCTION
+ {
+ Pos = MAP_APPFONT ( 3 , 38 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Funktion" ;
+ Text [ ENGLISH ] = "~Function" ;
+ Text [ norwegian ] = "~Function" ;
+ Text [ italian ] = "~Funzione" ;
+ Text [ portuguese_brazilian ] = "~Função" ;
+ Text [ portuguese ] = "~Função" ;
+ Text [ finnish ] = "~Funktio" ;
+ Text [ danish ] = "Funktion" ;
+ Text [ french ] = "~Fonction" ;
+ Text [ swedish ] = "~Funktion" ;
+ Text [ dutch ] = "~Functie" ;
+ Text [ spanish ] = "~Función" ;
+ Text [ english_us ] = "~Function" ;
+ Text[ chinese_simplified ] = "º¯Êý(~F)";
+ Text[ russian ] = "Ôóíêöèÿ";
+ Text[ polish ] = "Funkcja";
+ Text[ japanese ] = "ŠÖ”(~F)";
+ Text[ chinese_traditional ] = "¨ç¼Æ(~F)";
+ Text[ arabic ] = "ÇáÏÇáÉ";
+ Text[ greek ] = "ÓõíÜñôçóç";
+ Text[ korean ] = "ÇÔ¼ö(~F)";
+ Text[ turkish ] = "~Fonksiyon";
+ };
+};
+TabPage RID_SCTAB_STRUCT
+{
+ Hide = TRUE ;
+ Size = MAP_APPFONT ( 96 , 180 ) ;
+ // Titel wird dynamisch gesetzt (s.u.)
+ // 1. Seite
+ Control TLB_STRUCT
+ {
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 18 ) ;
+ Size = MAP_APPFONT ( 90 , 157 ) ;
+ HelpId = HID_SC_FAP_STRUCT ;
+ };
+ FixedText FT_STRUCT
+ {
+ Pos = MAP_APPFONT ( 3 , 6 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "~Struktur" ;
+ Text [ ENGLISH ] = "Structure" ;
+ Text [ portuguese ] = "~Estrutura" ;
+ Text [ english_us ] = "~Structure" ;
+ Text [ portuguese_brazilian ] = "~Struktur" ;
+ Text [ swedish ] = "~Struktur" ;
+ Text [ danish ] = "Struktur" ;
+ Text [ italian ] = "~Struttura" ;
+ Text [ spanish ] = "~Estructura" ;
+ Text [ french ] = "~Structure" ;
+ Text [ dutch ] = "~Structuur" ;
+ Text[ chinese_simplified ] = "½á¹¹(~S)";
+ Text[ russian ] = "Ñòðóêòóðà";
+ Text[ polish ] = "Struktura";
+ Text[ japanese ] = "\\¬(~S)";
+ Text[ chinese_traditional ] = "µ²ºc(~S)";
+ Text[ arabic ] = "ÇáÈäíÉ";
+ Text[ greek ] = "ÄïìÞ";
+ Text[ korean ] = "±¸Á¶(~S)";
+ Text[ turkish ] = "~Yapý";
+ };
+ Bitmap BMP_STR_CLOSE
+ {
+ File = "dir-clos.bmp" ;
+ };
+ Bitmap BMP_STR_OPEN
+ {
+ File = "dir-open.bmp" ;
+ };
+ Bitmap BMP_STR_END
+ {
+ File = "basobj2.bmp" ;
+ };
+ Bitmap BMP_STR_ERROR
+ {
+ File = "basbrk.bmp" ;
+ };
+ String STR_STRUCT_ERR1
+ {
+ Text = "=?" ;
+ Text [ ENGLISH ] = "=?" ;
+ Text [ english_us ] = "=?" ;
+ Text [ portuguese_brazilian ] = "=?" ;
+ Text [ swedish ] = "=?" ;
+ Text [ danish ] = "=?" ;
+ Text [ italian ] = "=?" ;
+ Text [ spanish ] = "=?" ;
+ Text [ french ] = "=?" ;
+ Text [ dutch ] = "=?" ;
+ Text [ portuguese ] = "=?" ;
+ Text[ chinese_simplified ] = "=?";
+ Text[ russian ] = "=?";
+ Text[ polish ] = "=?";
+ Text[ japanese ] = "=?";
+ Text[ chinese_traditional ] = "=?";
+ Text[ arabic ] = "?=";
+ Text[ greek ] = "=?";
+ Text[ korean ] = "=?";
+ Text[ turkish ] = "=?";
+ };
+ String STR_STRUCT_ERR2
+ {
+ Text = "Fehler" ;
+ Text [ ENGLISH ] = "Error" ;
+ Text [ english_us ] = "Error" ;
+ Text [ portuguese_brazilian ] = "Fehler" ;
+ Text [ swedish ] = "Fel" ;
+ Text [ danish ] = "Fejl" ;
+ Text [ italian ] = "Errore" ;
+ Text [ spanish ] = "Error" ;
+ Text [ french ] = "Erreur" ;
+ Text [ dutch ] = "Fout" ;
+ Text [ portuguese ] = "Erro" ;
+ Text[ chinese_simplified ] = "´íÎó";
+ Text[ russian ] = "Îøèáêà";
+ Text[ polish ] = "B³¹d";
+ Text[ japanese ] = "´×°";
+ Text[ chinese_traditional ] = "¿ù»~";
+ Text[ arabic ] = "ÎØÃ";
+ Text[ greek ] = "ÓöÜëìá";
+ Text[ korean ] = "¿À·ù";
+ Text[ turkish ] = "Hata";
+ };
+};
+ModelessDialog RID_SCDLG_FORMULA
+{
+ OutputSize = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 321 , 228 ) ;
+ HelpId = HID_SCDLG_FORMULA ;
+ Moveable = TRUE ;
+ // Titel wird dynamisch gesetzt (s.u.)
+ TabControl TC_FUNCTION
+ {
+ Pos = MAP_APPFONT ( 6 , 5 ) ;
+ Size = MAP_APPFONT ( 102 , 199 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_FUNCTION ;
+ Text = "Funktionen" ;
+ Text [ ENGLISH ] = "Functions" ;
+ Text [ portuguese ] = "Funções" ;
+ Text [ english_us ] = "Functions" ;
+ Text [ portuguese_brazilian ] = "Funktionen" ;
+ Text [ swedish ] = "Funktioner" ;
+ Text [ danish ] = "Funktioner" ;
+ Text [ italian ] = "Funzioni" ;
+ Text [ spanish ] = "Funciones" ;
+ Text [ french ] = "Fonctions" ;
+ Text [ dutch ] = "Functies" ;
+ Text[ chinese_simplified ] = "º¯Êý";
+ Text[ russian ] = "Ôóíêöèè";
+ Text[ polish ] = "Funkcje";
+ Text[ japanese ] = "ŠÖ”";
+ Text[ chinese_traditional ] = "¨ç¼Æ";
+ Text[ arabic ] = "ÇáÏÇáÇÊ";
+ Text[ greek ] = "ÓõíáñôÞóåéò";
+ Text[ korean ] = "ÇÔ¼ö";
+ Text[ turkish ] = "Fonksiyon";
+ };
+ PageItem
+ {
+ Identifier = TP_STRUCT ;
+ Text = "Struktur" ;
+ Text [ ENGLISH ] = "Structur" ;
+ Text [ english_us ] = "Structure" ;
+ Text [ portuguese_brazilian ] = "Struktur" ;
+ Text [ swedish ] = "Struktur" ;
+ Text [ danish ] = "Struktur" ;
+ Text [ italian ] = "Struttura" ;
+ Text [ spanish ] = "Estructura" ;
+ Text [ french ] = "Structure" ;
+ Text [ dutch ] = "Structuur" ;
+ Text [ portuguese ] = "Estrutura" ;
+ Text[ chinese_simplified ] = "½á¹¹";
+ Text[ russian ] = "Ñòðóêòóðà";
+ Text[ polish ] = "Struktura";
+ Text[ japanese ] = "\\¬";
+ Text[ chinese_traditional ] = "µ²ºc";
+ Text[ arabic ] = "ÇáÈäíÉ";
+ Text[ greek ] = "ÄïìÞ";
+ Text[ korean ] = "±¸Á¶";
+ Text[ turkish ] = "Yapý";
+ };
+ };
+ };
+ FixedText FT_HEADLINE
+ {
+ Pos = MAP_APPFONT ( 115 , 24 ) ;
+ Size = MAP_APPFONT ( 194 , 20 ) ;
+ WordBreak = TRUE ;
+ };
+ FixedText FT_FUNCNAME
+ {
+ Pos = MAP_APPFONT ( 115 , 50 ) ;
+ Size = MAP_APPFONT ( 194 , 12 ) ;
+ WordBreak = TRUE ;
+ };
+ FixedText FT_FUNCDESC
+ {
+ Pos = MAP_APPFONT ( 115 , 66 ) ;
+ Size = MAP_APPFONT ( 194 , 60 ) ;
+ WordBreak = TRUE ;
+ };
+ // 2. Seite
+ FixedText FT_EDITNAME
+ {
+ Pos = MAP_APPFONT ( 113 , 6 ) ;
+ Size = MAP_APPFONT ( 83 , 10 ) ;
+ };
+ GroupBox GB_EDIT
+ {
+ Pos = MAP_APPFONT ( 112 , 18 ) ;
+ Size = MAP_APPFONT ( 203 , 128 ) ;
+ };
+ FixedText FT_FORMULA
+ {
+ Pos = MAP_APPFONT ( 112 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ WordBreak = TRUE ;
+ Text = "F~ormel" ;
+ Text [ ENGLISH ] = " F~ormula" ;
+ Text [ english_us ] = "For~mula" ;
+ Text [ portuguese_brazilian ] = "Formel" ;
+ Text [ swedish ] = "F~ormel" ;
+ Text [ danish ] = "Formel" ;
+ Text [ italian ] = "Formula" ;
+ Text [ spanish ] = "~Fórmula" ;
+ Text [ french ] = "Formule" ;
+ Text [ dutch ] = "F~ormule" ;
+ Text [ portuguese ] = "Fó~rmula" ;
+ Text[ chinese_simplified ] = "¹«Ê½(~M)";
+ Text[ russian ] = "Ôîðìóëà";
+ Text[ polish ] = "Formu³a";
+ Text[ japanese ] = "”Ž®(~M)";
+ Text[ chinese_traditional ] = "¤½¦¡(~M)";
+ Text[ arabic ] = "ÕíÛÉ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "¼ö½Ä(~M)";
+ Text[ turkish ] = "F~ormül";
+ };
+ Control ED_FORMULA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 112 , 161 ) ;
+ Size = MAP_APPFONT ( 203 , 43 ) ;
+ //TabStop = TRUE ;
+ HelpId = HID_SC_FAP_FORMULA ;
+ };
+ /*
+ PushButton BTN_BACKWARD
+ {
+ // Disable = FALSE ;
+ Pos = MAP_APPFONT ( 283 , 147 ) ;
+ Size = MAP_APPFONT ( 15 , 12 ) ;
+ TabStop = TRUE ;
+ // ### ACHTUNG: Neuer Text in Resource? << ~Zurück : << ~Zur³ck
+ Text = "<<" ;
+ Text [ ENGLISH ] = "<<" ;
+ Text [ norwegian ] = "<< ~Backward" ;
+ Text [ italian ] = "<< ~Indietro" ;
+ Text [ portuguese_brazilian ] = "<< ~Para Trás" ;
+ Text [ portuguese ] = "<< ~Anterior" ;
+ Text [ finnish ] = "<< ~Taakse" ;
+ Text [ danish ] = "<< ~Tilbage" ;
+ Text [ french ] = "<< ~Précédent" ;
+ Text [ swedish ] = "<< ~Tillbaka" ;
+ Text [ dutch ] = "<< Vor~ige" ;
+ Text [ spanish ] = "<< ~Regresar" ;
+ Text [ english_us ] = "<< ~Back" ;
+ };
+ PushButton BTN_FORWARD
+ {
+ Pos = MAP_APPFONT ( 300, 147 ) ;
+ Size = MAP_APPFONT ( 15 , 12 ) ;
+ TabStop = TRUE ;
+ Text = ">>" ;
+ Text [ ENGLISH ] = ">>" ;
+ Text [ norwegian ] = "For~ward >>" ;
+ Text [ italian ] = "Avanti >>" ;
+ Text [ portuguese_brazilian ] = "Para~ Frente >>" ;
+ Text [ portuguese ] = "~Seguinte >>" ;
+ Text [ finnish ] = "~Eteen >>" ;
+ Text [ danish ] = "~Næste>>" ;
+ Text [ french ] = "~Suivant >>" ;
+ Text [ swedish ] = "~Framåt >>" ;
+ Text [ dutch ] = "~Volgende >>" ;
+ Text [ spanish ] = "~Continuar >>" ;
+ Text [ english_us ] = "~Next >>" ;
+ };
+
+*/
+ FixedText FT_RESULT
+ {
+ Pos = MAP_APPFONT ( 198 , 6 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "Teilergebnis" ;
+ Text [ ENGLISH ] = "Part result" ;
+ Right = TRUE ;
+ Text [ english_us ] = "Function result" ;
+ Text [ portuguese_brazilian ] = "Resultado" ;
+ Text [ swedish ] = "Delresultat" ;
+ Text [ danish ] = "Delresultat" ;
+ Text [ italian ] = "Subtotale" ;
+ Text [ spanish ] = "Subtotal" ;
+ Text [ french ] = "Résultat partiel" ;
+ Text [ dutch ] = "Tussenresultaat" ;
+ Text [ portuguese ] = "Resultado de função" ;
+ Text[ chinese_simplified ] = "µ¥Ïî¼ÆËã½á¹û";
+ Text[ russian ] = "Ïðîìåæóòî÷íûé èòîã";
+ Text[ polish ] = "Suma poœrednia";
+ Text[ japanese ] = "”Ž®‚ÌŒ‹‰Ê";
+ Text[ chinese_traditional ] = "³æ¶µ­pºâµ²ªG";
+ Text[ arabic ] = "ÇáäÊíÌÉ ÇáÌÒÆíÉ";
+ Text[ greek ] = "ÁðïôÝëåóìá ëåéôïõñãßáò";
+ Text[ korean ] = "ÇÔ¼ö °á°ú";
+ Text[ turkish ] = "Ara sonuç";
+ };
+ Window WND_RESULT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 255 , 4 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ };
+ FixedText FT_FORMULA_RESULT
+ {
+ Pos = MAP_APPFONT ( 217 , 149 ) ;
+ Size = MAP_APPFONT ( 35 , 10 ) ;
+ Text = "Ergebnis" ;
+ Text [ ENGLISH ] = "Result" ;
+ Text [ norwegian ] = "Resultat" ;
+ Text [ italian ] = "Risultato" ;
+ Text [ portuguese_brazilian ] = "Resultado" ;
+ Text [ portuguese ] = "Resultado" ;
+ Text [ finnish ] = "Tulos" ;
+ Text [ danish ] = "Resultat" ;
+ Text [ french ] = "Résultat" ;
+ Text [ swedish ] = "Resultat" ;
+ Text [ dutch ] = "Resultaat" ;
+ Text [ spanish ] = "Resultado" ;
+ Text [ english_us ] = "Result" ;
+ Right = TRUE ;
+ Text[ chinese_simplified ] = "½á¹û";
+ Text[ russian ] = "Ðåçóëüòàò";
+ Text[ polish ] = "Wynik";
+ Text[ japanese ] = "Œ‹‰Ê";
+ Text[ chinese_traditional ] = "µ²ªG";
+ Text[ arabic ] = "ÇáäÊíÌÉ";
+ Text[ greek ] = "ÁðïôÝëåóìá";
+ Text[ korean ] = "°á°ú";
+ Text[ turkish ] = "Sonuç";
+ };
+ Window WND_FORMULA_RESULT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 255 , 147 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ };
+ // gemeinsam
+ CheckBox BTN_MATRIX
+ {
+ Pos = MAP_APPFONT ( 6 , 208 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "Matri~x" ;
+ Text [ ENGLISH ] = "Matri~x" ;
+ Text [ norwegian ] = "Matri~x" ;
+ Text [ italian ] = "Matrice" ;
+ Text [ portuguese_brazilian ] = "Matri~x" ;
+ Text [ portuguese ] = "Matri~z" ;
+ Text [ ENGLISH_US ] = "~Matrix" ;
+ Text [ dutch ] = "Matri~x" ;
+ Text [ swedish ] = "~Matris" ;
+ Text [ danish ] = "Matrix" ;
+ Text [ spanish ] = "Matri~z" ;
+ Text [ french ] = "~Matrice" ;
+ Text[ chinese_simplified ] = "¾ØÕó(~X)";
+ Text[ russian ] = "Ìàòðèöà";
+ Text[ polish ] = "Macierz";
+ Text[ japanese ] = "ÏÄظ½(~X)";
+ Text[ chinese_traditional ] = "¯x°}(~X)";
+ Text[ arabic ] = "ãÕÝæÝÉ";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä(~M)";
+ Text[ turkish ] = "Matri~s";
+ };
+ Edit ED_REF
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 76 , 205 ) ;
+ Size = MAP_APPFONT ( 66 , 12 ) ;
+ };
+ ImageButton RB_REF
+ {
+ QuickHelpText = "Vergrößern" ;
+ QuickHelpText [ ENGLISH ] = "Expand" ;
+ Pos = MAP_APPFONT ( 144 , 205 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Maximize" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern/Vergrößern" ;
+ QuickHelpText [ swedish ] = "Förstora" ;
+ QuickHelpText [ danish ] = "Forstør" ;
+ QuickHelpText [ italian ] = "Zoom avanti" ;
+ QuickHelpText [ spanish ] = "Aumentar" ;
+ QuickHelpText [ french ] = "Agrandir" ;
+ QuickHelpText [ dutch ] = "Vergroten" ;
+ QuickHelpText [ portuguese ] = "Aproximar" ;
+ QuickHelpText[ russian ] = "Óâåëè÷èòü";
+ QuickHelpText[ polish ] = "Powiêksz";
+ QuickHelpText[ japanese ] = "Šg‘å";
+ QuickHelpText[ chinese_simplified ] = "×î´ó»¯";
+ QuickHelpText[ chinese_traditional ] = "©ñ¤j";
+ QuickHelpText[ arabic ] = "ÊßÈíÑ";
+ QuickHelpText[ greek ] = "ÌåãÝèõíóç";
+ QuickHelpText[ korean ] = "Maximize";
+ };
+ /*
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 170, 208) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 219 , 208 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ OKButton BTN_END
+ {
+ Pos = MAP_APPFONT ( 270 , 208 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+
+*/
+ //
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 72 , 208 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 121 , 208 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton BTN_BACKWARD
+ {
+ // Disable = FALSE ;
+ Pos = MAP_APPFONT ( 171 , 208 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ Text = "<< ~Zurück" ;
+ Text [ ENGLISH ] = "<< ~Backward" ;
+ Text [ norwegian ] = "<< ~Backward" ;
+ Text [ italian ] = "<< Indietro" ;
+ Text [ portuguese_brazilian ] = "<< ~Para Trás" ;
+ Text [ portuguese ] = "<<~Anterior" ;
+ Text [ finnish ] = "<< ~Taakse" ;
+ Text [ danish ] = "<< Tilbage" ;
+ Text [ french ] = "<< ~Précédent" ;
+ Text [ swedish ] = "<< ~Tillbaka" ;
+ Text [ dutch ] = "<< ~Vorige" ;
+ Text [ spanish ] = "<< ~Regresar" ;
+ Text [ english_us ] = "<< ~Back" ;
+ Text[ chinese_simplified ] = "<< ·µ»Ø(~B)";
+ Text[ russian ] = "<< ~Íàçàä";
+ Text[ polish ] = "<< Wstecz";
+ Text[ japanese ] = "<< –ß‚é(~B)";
+ Text[ chinese_traditional ] = "<< ªð¦^(~B)";
+ Text[ arabic ] = ">> ÇáÓÇÈÞ";
+ Text[ greek ] = "<< Ðßóù";
+ Text[ korean ] = "<<µÚ·Î(~B)";
+ Text[ turkish ] = "<< ~Geri";
+ };
+ PushButton BTN_FORWARD
+ {
+ Pos = MAP_APPFONT ( 219 , 208 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ Text = "~Weiter >>" ;
+ Text [ ENGLISH ] = "For~ward >>" ;
+ Text [ norwegian ] = "For~ward >>" ;
+ Text [ italian ] = ">> ~Avanti" ;
+ Text [ portuguese_brazilian ] = "Para~ Frente >>" ;
+ Text [ portuguese ] = ">>~Seguinte" ;
+ Text [ finnish ] = "~Eteen >>" ;
+ Text [ danish ] = "Næste >>" ;
+ Text [ french ] = ">> ~Suivant" ;
+ Text [ swedish ] = "~Nästa >>" ;
+ Text [ dutch ] = "~Volgende >>" ;
+ Text [ spanish ] = "~Siguiente >>" ;
+ Text [ english_us ] = "~Next >>" ;
+ Text[ chinese_simplified ] = "¼ÌÐø(~N)";
+ Text[ russian ] = "~Äàëåå >>";
+ Text[ polish ] = "Dalej >>";
+ Text[ japanese ] = "ŽŸ‚Ö >>(~N)";
+ Text[ chinese_traditional ] = "Ä~Äò >>";
+ Text[ arabic ] = "ÇáÊÇáí <<";
+ Text[ greek ] = "Åðüìåíï >>";
+ Text[ korean ] = "¾ÕÀ¸·Î >>(~N)";
+ Text[ turkish ] = "~Ýleri >>";
+ };
+ OKButton BTN_END
+ {
+ Pos = MAP_APPFONT ( 270 , 208 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ //
+ String STR_TITLE1
+ {
+ Text = "Funktionsautopilot" ;
+ Text [ ENGLISH ] = "Function Auto-Pilot" ;
+ Text [ norwegian ] = "Function Auto-Pilot" ;
+ Text [ italian ] = "Pilota automatico di funzione" ;
+ Text [ portuguese_brazilian ] = "Função Piloto Automático - Paso 1 de 2" ;
+ Text [ portuguese ] = "Função AutoPiloto" ;
+ Text [ finnish ] = "AutoPilot-toiminto" ;
+ Text [ danish ] = "FunktionsAutoPilot" ;
+ Text [ french ] = "AutoPilote de fonctions" ;
+ Text [ swedish ] = "Funktionsautopilot" ;
+ Text [ dutch ] = "Functie-AutoPiloot" ;
+ Text [ spanish ] = "AutoPiloto de funciones" ;
+ Text [ english_us ] = "AutoPilot: Functions" ;
+ Text[ chinese_simplified ] = "º¯Êý×Ô¶¯ÖúÀí";
+ Text[ russian ] = "Àâòîïèëîò ôóíêöèè";
+ Text[ polish ] = "AutoPilot funkcji";
+ Text[ japanese ] = "ŠÖ”µ°ÄÊß²Û¯Ä";
+ Text[ chinese_traditional ] = "¨ç¼Æ¦Û°Ê§U²z";
+ Text[ arabic ] = "ÇáãÑÔÏ ÇáÂáí ááÏÇáÇÊ";
+ Text[ greek ] = "AutoPilot óõíÜñôçóçò";
+ Text[ korean ] = "ÀÚµ¿ ÆÄÀÏ·µ ±â´É";
+ Text[ turkish ] = "Fonksiyon oto pilotu";
+ };
+ String STR_TITLE2
+ {
+ Text = "Funktionsautopilot -" ;
+ Text [ ENGLISH ] = "Function Auto-Pilot -" ;
+ Text [ norwegian ] = "Function Auto-Pilot -" ;
+ Text [ italian ] = "Pilota automatico di funzione" ;
+ Text [ portuguese_brazilian ] = "Função Piloto Automático - Paso 2 de 2" ;
+ Text [ portuguese ] = "Função AutoPiloto -" ;
+ Text [ finnish ] = "AutoPilot-toiminto -" ;
+ Text [ danish ] = "FunktionsAutoPilot -" ;
+ Text [ french ] = "AutoPilote de fonctions -" ;
+ Text [ swedish ] = "Funktionsautopilot - " ;
+ Text [ dutch ] = "Functie-AutoPiloot -" ;
+ Text [ spanish ] = "AutoPiloto de funciones - " ;
+ Text [ english_us ] = "AutoPilot: Functions -" ;
+ Text[ chinese_simplified ] = "º¯Êý×Ô¶¯ÖúÀí -";
+ Text[ russian ] = "Àâòîïèëîò ôóíêöèè -";
+ Text[ polish ] = "AutoPilot funkcji -";
+ Text[ japanese ] = "ŠÖ”µ°ÄÊß²Û¯Ä-";
+ Text[ chinese_traditional ] = "¨ç¼Æ¦Û°Ê§U²z -";
+ Text[ arabic ] = "ÇáãÑÔÏ ÇáÂáí ááÏÇáÇÊ -";
+ Text[ greek ] = "AutoPilot óõíÜñôçóçò - ";
+ Text[ korean ] = "ÀÚµ¿ ÆÄÀÏ·µ ±â´É -";
+ Text[ turkish ] = "Fonksiyon oto pilotu -";
+ };
+};
diff --git a/sc/source/ui/formdlg/formula.cxx b/sc/source/ui/formdlg/formula.cxx
new file mode 100644
index 000000000000..8b6816f8b506
--- /dev/null
+++ b/sc/source/ui/formdlg/formula.cxx
@@ -0,0 +1,2092 @@
+/*************************************************************************
+ *
+ * $RCSfile: formula.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/dispatch.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/objsh.hxx>
+#include <svtools/zforlist.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/topfrm.hxx>
+#include <vcl/svapp.hxx>
+#include <unotools/charclass.hxx>
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+
+#include "formula.hxx"
+#include "formdlgs.hrc"
+#include "formdata.hxx"
+#include "globstr.hrc"
+#include "scresid.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "scmod.hxx"
+#include "inputhdl.hxx"
+#include "tabvwsh.hxx"
+#include "appoptio.hxx"
+#include "docsh.hxx"
+
+//============================================================================
+
+ScDocument* ScFormulaDlg::pDoc = NULL;
+ScAddress ScFormulaDlg::aCursorPos;
+
+
+
+inline void ShowHide( Window& rWin, BOOL bShow )
+{
+ if (bShow)
+ rWin.Show();
+ else
+ rWin.Hide();
+}
+
+// --------------------------------------------------------------------------
+// Initialisierung / gemeinsame Funktionen fuer Dialog
+// --------------------------------------------------------------------------
+
+ScFormulaDlg::ScFormulaDlg( SfxBindings* pB, SfxChildWindow* pCW,
+ Window* pParent, ScViewData* pViewData ) :
+ ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_FORMULA ),
+ //
+ aTabCtrl ( this, ScResId( TC_FUNCTION ) ),
+ aGbEdit ( this, ScResId( GB_EDIT ) ),
+ aScParaWin ( this, aGbEdit.GetPosPixel()),
+ aFtHeadLine ( this, ScResId( FT_HEADLINE ) ),
+ aFtFuncName ( this, ScResId( FT_FUNCNAME ) ),
+ aFtFuncDesc ( this, ScResId( FT_FUNCDESC ) ),
+ //
+ aFtEditName ( this, ScResId( FT_EDITNAME ) ),
+ aFtResult ( this, ScResId( FT_RESULT ) ),
+ aWndResult ( this, ScResId( WND_RESULT ) ),
+
+ aFtFormula ( this, ScResId( FT_FORMULA ) ),
+ aMEFormula ( this, ScResId( ED_FORMULA ) ),
+ //
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnBackward ( this, ScResId( BTN_BACKWARD ) ),
+ aBtnForward ( this, ScResId( BTN_FORWARD ) ),
+ aBtnMatrix ( this, ScResId( BTN_MATRIX ) ),
+ aBtnEnd ( this, ScResId( BTN_END ) ),
+ aEdRef ( this, ScResId( ED_REF) ),
+ aRefBtn ( this, ScResId( RB_REF),&aEdRef ),
+ aFtFormResult ( this, ScResId( FT_FORMULA_RESULT)),
+ aWndFormResult ( this, ScResId( WND_FORMULA_RESULT)),
+ //
+ aTitle1 ( ScResId( STR_TITLE1 ) ), // lokale Resource
+ aTitle2 ( ScResId( STR_TITLE2 ) ), // lokale Resource
+ aTxtEnd ( ScResId( SCSTR_END ) ), // globale Resource
+ aTxtOk ( aBtnEnd.GetText() ),
+ //
+ nActivWinId (0),
+ bIsShutDown (FALSE),
+ nEdFocus (0),
+ nArgs (0),
+ bUserMatrixFlag (FALSE),
+ pArgArr (NULL),
+ pFuncDesc (NULL),
+ pScTokA (NULL),
+ pTheRefEdit (NULL),
+ pMEdit (NULL)
+{
+ FreeResource();
+ SetText(aTitle1);
+
+ aEdRef.Hide();
+ aRefBtn.Hide();
+
+ pMEdit=aMEFormula.GetEdit();
+ bEditFlag=FALSE;
+ bStructUpdate=TRUE;
+ Point aPos=aGbEdit.GetPosPixel();
+ aScParaWin.SetPosPixel(aPos);
+ aScParaWin.SetArgModifiedHdl(LINK( this, ScFormulaDlg, ModifyHdl ) );
+ aScParaWin.SetFxHdl(LINK( this, ScFormulaDlg, FxHdl ) );
+
+ pScFuncPage= new ScFuncPage( &aTabCtrl);
+ pScStructPage= new ScStructPage( &aTabCtrl);
+ pScFuncPage->Hide();
+ pScStructPage->Hide();
+ aTabCtrl.SetTabPage( TP_FUNCTION, pScFuncPage);
+ aTabCtrl.SetTabPage( TP_STRUCT, pScStructPage);
+
+ nOldHelp = GetHelpId(); // HelpId aus Resource immer fuer "Seite 1"
+ nOldUnique = GetUniqueId();
+
+ aBtnMatrix.SetClickHdl(LINK( this, ScFormulaDlg, MatrixHdl ) );
+ aBtnCancel .SetClickHdl( LINK( this, ScFormulaDlg, BtnHdl ) );
+ aBtnEnd .SetClickHdl( LINK( this, ScFormulaDlg, BtnHdl ) );
+ aBtnForward .SetClickHdl( LINK( this, ScFormulaDlg, BtnHdl ) );
+ aBtnBackward.SetClickHdl( LINK( this, ScFormulaDlg, BtnHdl ) );
+
+ pScFuncPage->SetDoubleClickHdl( LINK( this, ScFormulaDlg, DblClkHdl ) );
+ pScFuncPage->SetSelectHdl( LINK( this, ScFormulaDlg, FuncSelHdl) );
+ pScStructPage->SetSelectionHdl( LINK( this, ScFormulaDlg, StructSelHdl ) );
+ pMEdit->SetModifyHdl( LINK( this, ScFormulaDlg, FormulaHdl ) );
+ aMEFormula .SetSelChangedHdl( LINK( this, ScFormulaDlg, FormulaCursorHdl ) );
+
+ aFntLight = aFtFormula.GetFont();
+ aFntLight.SetTransparent( TRUE );
+ aFntBold = aFntLight;
+ aFntBold.SetWeight( WEIGHT_BOLD );
+
+ aScParaWin.SetArgumentFonts(aFntBold,aFntLight);
+
+ aFntBold.SetColor(Color(COL_BLUE));
+ aFntLight.SetColor(Color(COL_BLUE));
+
+ aFtHeadLine.SetFont(aFntBold);
+ aFtFuncName.SetFont(aFntLight);
+ aFtFuncDesc.SetFont(aFntLight);
+
+ ScModule* pScMod = SC_MOD();
+
+ ScInputHandler* pInputHdl = pScMod->GetInputHdl();
+ if ( pInputHdl )
+ pInputHdl->NotifyChange( NULL );
+
+
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ String rStrExp;
+ if (pData)
+ {
+ // Daten schon vorhanden -> Zustand wiederherstellen (nach Umschalten)
+ // pDoc und aCursorPos nicht neu initialisieren
+ //pDoc = pViewData->GetDocument();
+ if(IsInputHdl(pData->GetInputHandler()))
+ {
+ pScMod->SetRefInputHdl(pData->GetInputHandler());
+ }
+ else
+ {
+ PtrTabViewShell pTabViewShell;
+ pInputHdl=GetNextInputHandler(pData->GetDocShell(),&pTabViewShell);
+
+ if(pInputHdl==NULL) //DocShell hat keinen InputHandler mehr,
+ { //hat der Anwender halt Pech gehabt.
+ aBtnEnd.Disable();
+ pInputHdl=pScMod->GetInputHdl();
+ }
+ else
+ {
+ pInputHdl->SetRefViewShell(pTabViewShell);
+ }
+ pScMod->SetRefInputHdl(pInputHdl);
+ pData->SetInputHandler(pInputHdl);
+ }
+
+ String aOldFormula(pScMod->InputGetFormulaStr());
+ pScMod->InputSetSelection( 0, aOldFormula.Len());
+
+ rStrExp=pData->GetUndoStr();
+ pScMod->InputReplaceSelection(rStrExp);
+ pMEdit->SetText(rStrExp);
+ xub_StrLen nPos=pData->GetFStart();
+ pMEdit->SetSelection( pData->GetSelection());
+
+ pCell = new ScFormulaCell( pDoc, aCursorPos, rStrExp );
+ pComp=new ScCompiler( pDoc, aCursorPos );
+ pComp->SetCompileForFAP(TRUE);
+ UpdateTokenArray(pMEdit->GetText());
+ FormulaCursorHdl(&aMEFormula);
+ CalcStruct(rStrExp);
+ if(pData->GetMode()==SC_FORMDLG_FORMULA)
+ aTabCtrl.SetCurPageId(TP_FUNCTION);
+ else
+ aTabCtrl.SetCurPageId(TP_STRUCT);
+ aBtnMatrix.Check(pData->GetMatrixFlag());
+ aTimer.SetTimeout(200);
+ aTimer.SetTimeoutHdl(LINK( this, ScFormulaDlg, UpdateFocusHdl));
+ aTimer.Start();
+
+ // Jetzt nochmals zurueckschalten, da evtl. neues Doc geoeffnet wurde!
+ pScMod->SetRefInputHdl(NULL);
+ }
+ else
+ {
+ //Nun wird es Zeit den Inputhandler festzulegen
+ pScMod->SetRefInputHdl(pScMod->GetInputHdl());
+
+ pDoc = pViewData->GetDocument();
+ USHORT nCol = pViewData->GetCurX();
+ USHORT nRow = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ aCursorPos = ScAddress( nCol, nRow, nTab );
+
+ pScMod->InitFormEditData(); // neu anlegen
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ pData->SetInputHandler(pScMod->GetInputHdl());
+ pData->SetDocShell(pViewData->GetDocShell());
+
+ DBG_ASSERT(pData,"FormEditData ist nicht da");
+
+ ScFormulaDlgMode eMode = SC_FORMDLG_FORMULA; // Default...
+
+ // Formel vorhanden? Dann editieren
+
+ String aFormula;
+ pDoc->GetFormula( nCol, nRow, nTab, aFormula );
+ BOOL bEdit = ( aFormula.Len() > 1 );
+ BOOL bMatrix = FALSE;
+ if ( bEdit )
+ {
+ pMEdit->GrabFocus();
+ xub_StrLen nLen = aFormula.Len();
+ bMatrix = nLen > 3 // Matrix-Formel ?
+ && aFormula.GetChar(0) == '{'
+ && aFormula.GetChar(1) == '='
+ && aFormula.GetChar(nLen-1) == '}';
+ if ( bMatrix )
+ {
+ aFormula.Erase( 0, 1 );
+ aFormula.Erase( aFormula.Len()-1, 1);
+ aBtnMatrix.Check( bMatrix );
+ aBtnMatrix.Disable();
+ }
+
+ // #40892# auch Formeln mit Fehlern koennen editiert werden
+ // (ob ueberhaupt gueltige Funktionen enthalten sind, wird bei
+ // ScFormulaUtil::GetNextFunc getestet)
+#if 0
+ // Test auf Fehler (ohne Interpretieren, also nur Compiler-Fehler)
+ ScFormulaCell aCell( pDoc, aCursorPos, aFormula);
+ BOOL bAutoCalc = pDoc->GetAutoCalc();
+ pDoc->SetAutoCalc( FALSE ); // Interpretieren fuer GetErrCode abstellen
+ USHORT nErrCode = aCell.GetErrCode();
+ pDoc->SetAutoCalc( bAutoCalc );
+ bEdit = ( nErrCode == 0 );
+#endif
+ }
+
+ if ( bEdit )
+ {
+ aTabCtrl.SetCurPageId(TP_STRUCT);
+
+ xub_StrLen nFStart = 0;
+ xub_StrLen nFEnd = 0;
+ if ( ScFormulaUtil::GetNextFunc( aFormula, FALSE, nFStart, &nFEnd) )
+ {
+ pScMod->InputReplaceSelection( aFormula );
+ pScMod->InputSetSelection( nFStart, nFEnd );
+ if(!bEditFlag)
+ pMEdit->SetText(pScMod->InputGetFormulaStr());
+ xub_StrLen PrivStart, PrivEnd;
+ pScMod->InputGetSelection( PrivStart, PrivEnd);
+ pMEdit->SetSelection( Selection(PrivStart, PrivEnd));
+ pMEdit->Invalidate();
+ HighlightFunctionParas(pMEdit->GetSelected());
+ eMode = SC_FORMDLG_EDIT;
+
+ pData->SetFStart(nFStart );
+ aBtnMatrix.Check( bMatrix );
+ }
+ else
+ bEdit = FALSE;
+ }
+
+ if ( !bEdit )
+ {
+ String aNewFormula = '=';
+ if(aFormula.Len()>0)
+ {
+ if ( aFormula.GetChar(0) == '=' )
+ aNewFormula=aFormula;
+ }
+ pScMod->InputReplaceSelection( aNewFormula );
+ pScMod->InputSetSelection( 1, aNewFormula.Len()+1 );
+ if(!bEditFlag)
+ pMEdit->SetText(pScMod->InputGetFormulaStr());
+ xub_StrLen PrivStart, PrivEnd;
+ pScMod->InputGetSelection( PrivStart, PrivEnd);
+ if(!bEditFlag)
+ pMEdit->SetSelection( Selection(PrivStart, PrivEnd));
+
+ pData->SetFStart( 1 ); // hinter dem "="
+ }
+
+ pData->SetMode( (USHORT) eMode );
+ rStrExp=pMEdit->GetText();
+ pCell = new ScFormulaCell( pDoc, aCursorPos, rStrExp );
+ pComp=new ScCompiler( pDoc, aCursorPos );
+ pComp->SetCompileForFAP(TRUE);
+ CalcStruct(rStrExp);
+ FillDialog();
+ //aBtnForward.Enable(TRUE); //@New
+ FuncSelHdl(NULL);
+
+ }
+
+//? Application::GetAppWindow()->Invalidate();
+}
+
+__EXPORT ScFormulaDlg::~ScFormulaDlg()
+{
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+
+ if (pData) // wird nicht ueber Close zerstoert;
+ {
+ //Referenz Inputhandler zuruecksetzen
+
+ pScMod->SetRefInputHdl(NULL);
+
+ if(aTimer.IsActive())
+ {
+ aTimer.SetTimeoutHdl(Link());
+ aTimer.Stop();
+ }
+ bIsShutDown=TRUE;// Setzen, damit PreNotify keinen GetFocus speichert.
+
+ pData->SetFStart((xub_StrLen)pMEdit->GetSelection().Min());
+ pData->SetSelection(pMEdit->GetSelection());
+
+ if(aTabCtrl.GetCurPageId()==TP_FUNCTION)
+ pData->SetMode( (USHORT) SC_FORMDLG_FORMULA );
+ else
+ pData->SetMode( (USHORT) SC_FORMDLG_EDIT );
+ pData->SetUndoStr(pMEdit->GetText());
+ pData->SetMatrixFlag(aBtnMatrix.IsChecked());
+ }
+
+ aTabCtrl.RemovePage(TP_FUNCTION);
+ aTabCtrl.RemovePage(TP_STRUCT);
+
+ delete pComp;
+ delete pCell;
+ delete pScStructPage;
+ delete pScFuncPage;
+ DeleteArgs();
+}
+
+BOOL ScFormulaDlg::IsInputHdl(ScInputHandler* pHdl)
+{
+ BOOL bAlive = FALSE;
+
+ // gehoert der InputHandler zu irgendeiner ViewShell ?
+
+ TypeId aScType = TYPE(ScTabViewShell);
+ SfxViewShell* pSh = SfxViewShell::GetFirst( &aScType );
+ while ( pSh && !bAlive )
+ {
+ if (((ScTabViewShell*)pSh)->GetInputHandler() == pHdl)
+ bAlive = TRUE;
+ pSh = SfxViewShell::GetNext( *pSh, &aScType );
+ }
+
+ return bAlive;
+
+}
+
+ScInputHandler* ScFormulaDlg::GetNextInputHandler(ScDocShell* pDocShell,PtrTabViewShell* ppViewSh)
+{
+ ScInputHandler* pHdl=NULL;
+
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocShell, TYPE(SfxTopViewFrame) );
+ while( pFrame && pHdl==NULL)
+ {
+ SfxViewShell* p = pFrame->GetViewShell();
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,p);
+ if(pViewSh!=NULL)
+ {
+ Window *pWin=pViewSh->GetWindow();
+ pHdl=pViewSh->GetInputHandler();
+ if(ppViewSh!=NULL) *ppViewSh=pViewSh;
+ }
+ pFrame = SfxViewFrame::GetNext(*pFrame,pDocShell, TYPE(SfxTopViewFrame) );
+ }
+
+
+ return pHdl;
+}
+
+
+
+void ScFormulaDlg::FillDialog(BOOL nFlag)
+{
+ if(nFlag) FillControls();
+ FillListboxes();
+
+ String aStrResult;
+
+ ScModule* pScMod = SC_MOD();
+ if ( CalcValue(pScMod->InputGetFormulaStr(), aStrResult ) )
+ aWndFormResult.SetValue( aStrResult );
+ else
+ {
+ aStrResult.Erase();
+ aWndFormResult.SetValue( aStrResult );
+ }
+
+}
+
+void ScFormulaDlg::FillListboxes()
+{
+ // Umschalten zwischen den "Seiten"
+
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+
+ String aNewTitle;
+ // 1. Seite: Funktion auswaehlen
+
+ if(pFuncDesc)
+ {
+ if(pScFuncPage->GetCategory()!=pFuncDesc->nCategory+1)
+ pScFuncPage->SetCategory(pFuncDesc->nCategory+1);
+
+ USHORT nPos=pScFuncPage->GetFuncPos(pFuncDesc);
+
+ pScFuncPage->SetFunction(nPos);
+ }
+ else if (pData)
+ {
+ pScFuncPage->SetCategory(pData->GetCatSel() );
+ pScFuncPage->SetFunction( pData->GetFuncSel() );
+ }
+ FuncSelHdl(NULL);
+
+ // ResizeArgArr jetzt schon in UpdateFunctionDesc
+
+ //pScFuncPage->GetFunctionPtr()->GrabFocus();
+
+ SFX_APP()->LockDispatcher( TRUE ); // Modal-Modus einschalten
+
+ /*
+ aBtnBackward.Enable(FALSE);
+ aBtnForward.Enable(TRUE);
+ */
+ aNewTitle = aTitle1;
+
+ // HelpId fuer 1. Seite ist die aus der Resource
+ SetHelpId( nOldHelp );
+ SetUniqueId( nOldUnique );
+
+}
+void ScFormulaDlg::FillControls()
+{
+ // Umschalten zwischen den "Seiten"
+
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ if (!pData) return;
+
+ String aNewTitle;
+ // 2. Seite oder Editieren: ausgewaehlte Funktion anzeigen
+
+ xub_StrLen nFStart = pData->GetFStart();
+ String aFormula = pScMod->InputGetFormulaStr();
+ xub_StrLen nNextFStart = nFStart;
+ xub_StrLen nNextFEnd = 0;
+
+ aFormula.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " )" ));
+ DeleteArgs();
+ ScFuncDesc* pOldFuncDesc=pFuncDesc;
+ BOOL bTestFlag=FALSE;
+
+ if ( ScFormulaUtil::GetNextFunc( aFormula, FALSE,
+ nNextFStart, &nNextFEnd, &pFuncDesc, &pArgArr ) )
+ {
+ bTestFlag=(pOldFuncDesc!=pFuncDesc);
+ if(bTestFlag)
+ {
+ aFtHeadLine.Hide();
+ aFtFuncName.Hide();
+ aFtFuncDesc.Hide();
+ aScParaWin.SetFunctionDesc(pFuncDesc);
+ if(pFuncDesc->pFuncName)
+ aFtEditName.SetText( *(pFuncDesc->pFuncName) );
+ else
+ aFtEditName.SetText( EMPTY_STRING);
+
+ }
+
+ xub_StrLen nOldStart, nOldEnd;
+ pScMod->InputGetSelection( nOldStart, nOldEnd );
+ if ( nOldStart != nNextFStart || nOldEnd != nNextFEnd )
+ {
+ pScMod->InputSetSelection( nNextFStart, nNextFEnd );
+ }
+ aFuncSel.Min()=nNextFStart;
+ aFuncSel.Max()=nNextFEnd;
+
+ if(!bEditFlag)
+ pMEdit->SetText(pScMod->InputGetFormulaStr());
+ xub_StrLen PrivStart, PrivEnd;
+ pScMod->InputGetSelection( PrivStart, PrivEnd);
+ if(!bEditFlag)
+ pMEdit->SetSelection( Selection(PrivStart, PrivEnd));
+
+ nArgs = pFuncDesc->nArgCount;
+ USHORT nOffset = pData->GetOffset();
+ nEdFocus = pData->GetEdFocus();
+
+ // Verkettung der Edit's fuer Focus-Kontrolle
+
+ if(bTestFlag) aScParaWin.SetArgCount(nArgs,nOffset);
+ USHORT nActiv=0;
+ xub_StrLen nArgPos=ScFormulaUtil::GetArgStart( aFormula, nFStart, 0 );
+ xub_StrLen nEditPos=(xub_StrLen) pMEdit->GetSelection().Min();
+ BOOL bFlag=FALSE;
+
+ for(USHORT i=0;i<nArgs;i++)
+ {
+ xub_StrLen nLength=(pArgArr[i])->Len()+1;
+ aScParaWin.SetArgument(i,*(pArgArr[i]));
+ if(nArgPos<=nEditPos && nEditPos<nArgPos+nLength)
+ {
+ nActiv=i;
+ bFlag=TRUE;
+ }
+ nArgPos+=nLength;
+ }
+ aScParaWin.UpdateParas();
+
+ if(bFlag)
+ {
+ aScParaWin.SetActiveLine(nActiv);
+ }
+
+ //aScParaWin.SetEdFocus( nEdFocus );
+ UpdateValues();
+ }
+ else
+ {
+ aFtEditName.SetText(EMPTY_STRING);
+ }
+ // Test, ob vorne/hinten noch mehr Funktionen sind
+
+ xub_StrLen nTempStart = ScFormulaUtil::GetArgStart( aFormula, nFStart, 0 );
+ BOOL bNext = ScFormulaUtil::GetNextFunc( aFormula, FALSE, nTempStart );
+ nTempStart=(xub_StrLen)pMEdit->GetSelection().Min();
+ pData->SetFStart(nTempStart);
+ BOOL bPrev = ScFormulaUtil::GetNextFunc( aFormula, TRUE, nTempStart );
+ aBtnBackward.Enable(bPrev);
+ aBtnForward.Enable(bNext);
+}
+
+void ScFormulaDlg::ClearAllParas()
+{
+ DeleteArgs();
+ pFuncDesc=NULL;
+ aScParaWin.ClearAll();
+ aWndResult.SetValue(EMPTY_STRING);
+ aFtEditName.SetText(EMPTY_STRING);
+ FuncSelHdl(NULL);
+
+ if(pScFuncPage->IsVisible())
+ {
+ aBtnForward.Enable(TRUE); //@new
+ aFtHeadLine.Show();
+ aFtFuncName.Show();
+ aFtFuncDesc.Show();
+ aFtHeadLine.ToTop();
+ aFtFuncName.ToTop();
+ aFtFuncDesc.ToTop();
+ }
+}
+
+void ScFormulaDlg::DeleteArgs()
+{
+ if ( pArgArr )
+ {
+ for ( USHORT i=0; i<nArgs; i++ )
+ delete pArgArr[i];
+ delete [] pArgArr;
+ }
+
+ pArgArr = NULL;
+ nArgs = 0;
+}
+
+BOOL __EXPORT ScFormulaDlg::Close()
+{
+ DoEnter(FALSE);
+ return TRUE;
+}
+
+void ScFormulaDlg::DoEnter(BOOL bOk)
+{
+ // Eingabe ins Dokument uebernehmen oder abbrechen
+
+ ScModule* pScMod = SC_MOD();
+
+ if ( bOk)
+ {
+ // ggf. Dummy-Argumente entfernen
+ String aInputFormula=pScMod->InputGetFormulaStr();
+ String aString=RepairFormula(pMEdit->GetText());
+ pScMod->InputSetSelection(0, aInputFormula.Len());
+ pScMod->InputReplaceSelection(aString);
+ }
+
+ // auf das Dokument zurueckschalten
+ // (noetig, weil ein fremdes oben sein kann - #34222#)
+ ScInputHandler* pHdl = pScMod->GetInputHdl();
+ if ( pHdl )
+ {
+ pHdl->ViewShellGone(NULL); // -> aktive View neu holen
+ pHdl->ShowRefFrame();
+ }
+
+ // aktuelle Tabelle ggF. restaurieren (wg. Maus-RefInput)
+ ScTabViewShell* pScViewShell = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ if ( pScViewShell )
+ {
+ ScViewData* pVD=pScViewShell->GetViewData();
+ USHORT nExecTab = aCursorPos.Tab();
+ if ( nExecTab != pVD->GetTabNo() )
+ pScViewShell->SetTabNo( nExecTab );
+
+ USHORT nRow=aCursorPos.Row();
+ USHORT nCol=aCursorPos.Col();
+
+ if(pVD->GetCurX()!=nRow || pVD->GetCurY()!=nCol)
+ pScViewShell->SetCursor(nCol,nRow);
+ }
+
+ SfxBoolItem aRetItem( SID_DLG_RETOK, bOk );
+ SfxBoolItem aMatItem( SID_DLG_MATRIX, aBtnMatrix.IsChecked() );
+ SfxStringItem aStrItem( SCITEM_STRING, pScMod->InputGetFormulaStr() );
+
+ // Wenn durch Dokument-Umschalterei die Eingabezeile weg war/ist,
+ // ist der String leer. Dann nicht die alte Formel loeschen.
+ if ( !aStrItem.GetValue().Len() )
+ aRetItem.SetValue( FALSE ); // FALSE = Cancel
+
+ SFX_APP()->LockDispatcher( FALSE ); // Modal-Modus ausschalten
+
+ pDoc = NULL;
+
+ //Referenz Inputhandler zuruecksetzen
+
+ pScMod->SetRefInputHdl(NULL);
+
+
+ // Enable() der Eingabezeile erzwingen:
+ if ( pScViewShell )
+ pScViewShell->UpdateInputHandler();
+ SFX_DISPATCHER().Execute( SID_INS_FUNCTION,
+ SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD,
+ &aRetItem, &aStrItem, &aMatItem, 0L );
+
+ // Daten loeschen
+ pScMod->ClearFormEditData(); // pData wird ungueltig!
+
+ /*
+
+ ScInputHandler* pInputHdl = pScMod->GetInputHdl();
+ if ( pInputHdl )
+ pInputHdl->NotifyChange( NULL );
+
+ */
+ // Dialog schliessen
+ DoClose( ScFormulaDlgWrapper::GetChildWindowId() );
+}
+
+IMPL_LINK( ScFormulaDlg, BtnHdl, PushButton*, pBtn )
+{
+ if ( pBtn == &aBtnCancel )
+ {
+ DoEnter(FALSE); // schliesst den Dialog
+ }
+ else if ( pBtn == &aBtnEnd )
+ {
+ DoEnter(TRUE); // schliesst den Dialog
+ }
+ else if ( pBtn == &aBtnForward )
+ {
+ //@pMEdit->GrabFocus(); // Damit die Selektion auch angezeigt wird.
+ ScFuncDesc* pDesc =pScFuncPage->GetFuncDesc(
+ pScFuncPage->GetFunction() );
+
+ if(pDesc==pFuncDesc || !pScFuncPage->IsVisible())
+ EditNextFunc( TRUE );
+ else
+ {
+ DblClkHdl(pScFuncPage); //new
+ aBtnForward.Enable(FALSE); //new
+ }
+ //@EditNextFunc( TRUE );
+ }
+ else if ( pBtn == &aBtnBackward )
+ {
+ bEditFlag=FALSE;
+ aBtnForward.Enable(TRUE);
+ EditNextFunc( FALSE );
+ aMEFormula.Invalidate();
+ aMEFormula.Update();
+ }
+ //...
+
+ return 0;
+}
+
+
+// --------------------------------------------------------------------------
+// Funktionen fuer 1. Seite
+// --------------------------------------------------------------------------
+
+void ScFormulaDlg::ResizeArgArr( ScFuncDesc* pNewFunc )
+{
+ if ( pFuncDesc != pNewFunc )
+ {
+ DeleteArgs();
+
+ if ( pNewFunc )
+ {
+ nArgs = pNewFunc->nArgCount;
+ if ( nArgs > 0 )
+ {
+ pArgArr = new String*[nArgs];
+ for ( USHORT i=0; i<nArgs; i++ )
+ pArgArr[i] = new String;
+ }
+ }
+
+ pFuncDesc = pNewFunc;
+ }
+}
+
+void ScFormulaDlg::UpdateFunctionDesc()
+{
+ ScModule* pScMod = SC_MOD();
+
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ if (!pData) return;
+ USHORT nCat = pScFuncPage->GetCategory();
+ if ( nCat == LISTBOX_ENTRY_NOTFOUND ) nCat = 0;
+ pData->SetCatSel( nCat );
+ USHORT nFunc = pScFuncPage->GetFunction();
+ if ( nFunc == LISTBOX_ENTRY_NOTFOUND ) nFunc = 0;
+ pData->SetFuncSel( nFunc );
+
+ if ( (pScFuncPage->GetFunctionEntryCount() > 0)
+ && (pScFuncPage->GetFunction() != LISTBOX_ENTRY_NOTFOUND) )
+ {
+ ScFuncDesc* pDesc =pScFuncPage->GetFuncDesc(
+ pScFuncPage->GetFunction() );
+ if (pDesc)
+ {
+ String aSig = pDesc->GetSignature();
+
+ aFtFuncName.SetText( aSig );
+ if(pDesc->pFuncDesc)
+ aFtFuncDesc.SetText( *(pDesc->pFuncDesc) );
+ else
+ aFtFuncDesc.SetText(EMPTY_STRING );
+ ResizeArgArr( pDesc );
+
+ if ( pArgArr && pArgArr[0] && pArgArr[0]->Len() ) // noch Argumente da?
+ aSig = pDesc->GetFormulaString( pArgArr ); // fuer Eingabezeile
+ //@ pScMod->InputReplaceSelection( aSig );
+ }
+ }
+ else
+ {
+ aFtFuncName.SetText( EMPTY_STRING );
+ aFtFuncDesc.SetText( EMPTY_STRING );
+
+ //ResizeArgArr( NULL );
+ pScMod->InputReplaceSelection( EMPTY_STRING );
+ }
+}
+
+// Handler fuer Listboxen
+
+IMPL_LINK( ScFormulaDlg, DblClkHdl, ScFuncPage*, pLb )
+{
+ ScModule* pScMod = SC_MOD();
+
+ USHORT nCat = pScFuncPage->GetCategory();
+ USHORT nFunc = pScFuncPage->GetFunction();
+
+ // ex-UpdateLRUList
+ ScFuncDesc* pDesc = pScFuncPage->GetFuncDesc(nFunc);
+ if (pDesc && pDesc->nFIndex!=0)
+ pScMod->InsertEntryToLRUList(pDesc->nFIndex);
+
+ String aFuncName=pScFuncPage->GetSelFunctionName();
+ aFuncName.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "()" ));
+ pScMod->InputReplaceSelection(aFuncName);
+ pMEdit->ReplaceSelected(aFuncName);
+
+ Selection aSel=pMEdit->GetSelection();
+ aSel.Max()=aSel.Max()-1;
+ pMEdit->SetSelection(aSel);
+
+ FormulaHdl(pMEdit);
+
+ aSel.Min()=aSel.Max();
+ pMEdit->SetSelection(aSel);
+
+ if(nArgs==0)
+ {
+ BtnHdl(&aBtnBackward);
+ }
+
+ aScParaWin.SetEdFocus(0);
+ aBtnForward.Enable(FALSE); //@New
+
+ return 0;
+}
+
+// --------------------------------------------------------------------------
+// Funktionen fuer rechte Seite
+// --------------------------------------------------------------------------
+
+void ScFormulaDlg::EditThisFunc(xub_StrLen nFStart)
+{
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ if (!pData) return;
+
+ String aFormula = pScMod->InputGetFormulaStr();
+
+ if(nFStart==NOT_FOUND)
+ {
+ nFStart = pData->GetFStart();
+ }
+ else
+ {
+ pData->SetFStart(nFStart);
+ }
+
+ xub_StrLen nNextFStart = nFStart;
+ xub_StrLen nNextFEnd = 0;
+
+ BOOL bFound;
+
+ //@bFound = ScFormulaUtil::GetNextFunc( aFormula, FALSE, nNextFStart, &nNextFEnd, &pFuncDesc );
+
+ bFound = ScFormulaUtil::GetNextFunc( aFormula, FALSE, nNextFStart, &nNextFEnd);
+ if ( bFound )
+ {
+ xub_StrLen nFEnd;
+
+ // Selektion merken und neue setzen
+ pScMod->InputGetSelection( nFStart, nFEnd );
+ pScMod->InputSetSelection( nNextFStart, nNextFEnd );
+ if(!bEditFlag)
+ pMEdit->SetText(pScMod->InputGetFormulaStr());
+
+ xub_StrLen PrivStart, PrivEnd;
+ pScMod->InputGetSelection( PrivStart, PrivEnd);
+ if(!bEditFlag)
+ pMEdit->SetSelection( Selection(PrivStart, PrivEnd));
+
+ pData->SetFStart( nNextFStart );
+ pData->SetOffset( 0 );
+ pData->SetEdFocus( 0 );
+
+ HighlightFunctionParas(aFormula.Copy(PrivStart, PrivEnd-PrivStart));
+ FillDialog();
+ }
+ else
+ {
+ ClearAllParas();
+ /*
+ aScParaWin.ClearAll();
+ aWndResult.SetValue(EMPTY_STRING);
+ aFtEditName.SetText(EMPTY_STRING);
+ */
+ }
+}
+
+void ScFormulaDlg::EditNextFunc( BOOL bForward, xub_StrLen nFStart )
+{
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ if (!pData) return;
+
+ String aFormula = pScMod->InputGetFormulaStr();
+
+ if(nFStart==NOT_FOUND)
+ {
+ nFStart = pData->GetFStart();
+ }
+ else
+ {
+ pData->SetFStart(nFStart);
+ }
+
+ xub_StrLen nNextFStart = 0;
+ xub_StrLen nNextFEnd = 0;
+
+ BOOL bFound;
+ if ( bForward )
+ {
+ nNextFStart = ScFormulaUtil::GetArgStart( aFormula, nFStart, 0 );
+ //@bFound = ScFormulaUtil::GetNextFunc( aFormula, FALSE, nNextFStart, &nNextFEnd, &pFuncDesc );
+ bFound = ScFormulaUtil::GetNextFunc( aFormula, FALSE, nNextFStart, &nNextFEnd);
+ }
+ else
+ {
+ nNextFStart = nFStart;
+ //@bFound = ScFormulaUtil::GetNextFunc( aFormula, TRUE, nNextFStart, &nNextFEnd, &pFuncDesc );
+ bFound = ScFormulaUtil::GetNextFunc( aFormula, TRUE, nNextFStart, &nNextFEnd);
+ }
+
+ if ( bFound )
+ {
+ xub_StrLen nFEnd;
+
+ // Selektion merken und neue setzen
+ pScMod->InputGetSelection( nFStart, nFEnd );
+ pScMod->InputSetSelection( nNextFStart, nNextFEnd );
+ if(!bEditFlag)
+ pMEdit->SetText(pScMod->InputGetFormulaStr());
+
+ xub_StrLen PrivStart, PrivEnd;
+ pScMod->InputGetSelection( PrivStart, PrivEnd);
+ if(!bEditFlag)
+ pMEdit->SetSelection( Selection(PrivStart, PrivEnd));
+
+ pData->SetFStart( nNextFStart );
+ pData->SetOffset( 0 );
+ pData->SetEdFocus( 0 );
+
+ FillDialog();
+ }
+}
+
+void ScFormulaDlg::EditFuncParas(xub_StrLen nEditPos)
+{
+ if(pFuncDesc!=NULL)
+ {
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ if (!pData) return;
+
+ String aFormula = pScMod->InputGetFormulaStr();
+ aFormula +=')';
+ xub_StrLen nFStart = pData->GetFStart();
+
+ DeleteArgs();
+
+ nArgs = pFuncDesc->nArgCount;
+
+ xub_StrLen nArgPos=ScFormulaUtil::GetArgStart( aFormula, nFStart, 0 );
+ pArgArr = ScFormulaUtil::GetArgStrings( aFormula, nFStart, pFuncDesc->nArgCount );
+
+ USHORT nActiv=aScParaWin.GetSliderPos();
+ BOOL bFlag=FALSE;
+ for(USHORT i=0;i<nArgs;i++)
+ {
+ xub_StrLen nLength=(pArgArr[i])->Len();
+ aScParaWin.SetArgument(i,*(pArgArr[i]));
+ if(nArgPos<=nEditPos && nEditPos<nArgPos+nLength)
+ {
+ nActiv=i;
+ bFlag=TRUE;
+ }
+ nArgPos+=nLength+1;
+ }
+
+ if(bFlag)
+ {
+ aScParaWin.SetSliderPos(nActiv);
+ }
+
+ aScParaWin.UpdateParas();
+ UpdateValues();
+ }
+
+}
+
+
+IMPL_LINK( ScFormulaDlg, ScrollHdl, ScParaWin*, pBar )
+{
+ USHORT i = 0;
+
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ if (!pData) return 0;
+ USHORT nOffset = aScParaWin.GetSliderPos();
+ pData->SetOffset( nOffset );
+
+ aScParaWin.UpdateParas();
+
+ UpdateValues();
+
+ return 0;
+}
+
+BOOL ScFormulaDlg::CalcValue( const String& rStrExp, String& rStrResult )
+{
+ BOOL bResult = TRUE;
+
+ if ( rStrExp.Len() > 0 )
+ {
+ // nur, wenn keine Tastatureingabe mehr anliegt, den Wert berechnen:
+
+ if ( !Application::AnyInput( INPUT_KEYBOARD ) )
+ {
+ ScFormulaCell* pFCell = new ScFormulaCell( pDoc, aCursorPos, rStrExp );
+
+ ScCompiler* pCompi=new ScCompiler( pDoc, aCursorPos, *(pFCell->GetCode()));
+
+ // #35521# HACK! um bei ColRowNames kein #REF! zu bekommen,
+ // wenn ein Name eigentlich als Bereich in die Gesamt-Formel
+ // eingefuegt wird, bei der Einzeldarstellung aber als
+ // single-Zellbezug interpretiert wird
+ BOOL bColRowName = pCell->HasColRowName();
+ if ( bColRowName )
+ {
+ // ColRowName im RPN-Code?
+ if ( pCell->GetCode()->GetCodeLen() <= 1 )
+ { // ==1: einzelner ist als Parameter immer Bereich
+ // ==0: es waere vielleicht einer, wenn..
+ String aBraced( '(' );
+ aBraced += rStrExp;
+ aBraced += ')';
+ delete pFCell;
+ pFCell = new ScFormulaCell( pDoc, aCursorPos, aBraced );
+ }
+ else
+ bColRowName = FALSE;
+ }
+
+ USHORT nErrCode = pFCell->GetErrCode();
+ if ( nErrCode == 0 )
+ {
+ SvNumberFormatter& aFormatter = *(pDoc->GetFormatTable());
+ Color* pColor;
+ if ( pFCell->IsValue() )
+ {
+ double n = pFCell->GetValue();
+ ULONG nFormat = aFormatter.GetStandardFormat( n, 0,
+ pFCell->GetFormatType(), ScGlobal::eLnge );
+ aFormatter.GetOutputString( n, nFormat,
+ rStrResult, &pColor );
+ }
+ else
+ {
+ String aStr;
+
+ pFCell->GetString( aStr );
+ ULONG nFormat = aFormatter.GetStandardFormat(
+ pFCell->GetFormatType(), ScGlobal::eLnge);
+ aFormatter.GetOutputString( aStr, nFormat,
+ rStrResult, &pColor );
+ }
+
+ ScRange aTestRange;
+ if ( bColRowName || (aTestRange.Parse(rStrExp) & SCA_VALID) )
+ rStrResult.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " ..." ));
+ // Bereich
+ }
+ else
+ rStrResult += ScGlobal::GetErrorString(nErrCode);
+
+ if(!bUserMatrixFlag && pFCell->GetMatrixFlag())
+ {
+ aBtnMatrix.Check();
+ }
+
+ delete pFCell;
+ delete pCompi;
+ }
+ else
+ bResult = FALSE;
+ }
+
+ return bResult;
+}
+
+void ScFormulaDlg::UpdateValues()
+{
+ ScModule* pScMod = SC_MOD();
+ String aStrResult;
+
+ if ( CalcValue( pFuncDesc->GetFormulaString( pArgArr ), aStrResult ) )
+ aWndResult.SetValue( aStrResult );
+
+ aStrResult.Erase();
+ if ( CalcValue(pScMod->InputGetFormulaStr(), aStrResult ) )
+ aWndFormResult.SetValue( aStrResult );
+ else
+ {
+ aStrResult.Erase();
+ aWndFormResult.SetValue( aStrResult );
+ }
+ CalcStruct(pMEdit->GetText());
+}
+
+void ScFormulaDlg::SaveArg( USHORT nEd )
+{
+ if (nEd<nArgs)
+ {
+ USHORT i;
+ for(i=0;i<=nEd;i++)
+ {
+ if(pArgArr[i]->Len()==0)
+ *(pArgArr[i]) = ' ';
+ }
+ if(aScParaWin.GetArgument(nEd).Len()!=0)
+ *(pArgArr[nEd]) = aScParaWin.GetArgument(nEd);
+
+ USHORT nClearPos=nEd+1;
+ for(i=nEd+1;i<nArgs;i++)
+ {
+ if(aScParaWin.GetArgument(i).Len()!=0)
+ {
+ nClearPos=i+1;
+ }
+ }
+
+ for(i=nClearPos;i<nArgs;i++)
+ {
+ *(pArgArr[i]) = EMPTY_STRING;
+ }
+ }
+}
+
+IMPL_LINK( ScFormulaDlg, FxHdl, ScParaWin*, pPtr )
+{
+ if(pPtr==&aScParaWin)
+ {
+ aBtnForward.Enable(TRUE); //@ Damit eine neue Fkt eingegeben werden kann.
+ aTabCtrl.SetCurPageId(TP_FUNCTION);
+ ScModule* pScMod = SC_MOD();
+ String aUndoStr = pScMod->InputGetFormulaStr(); // bevor unten ein ";" eingefuegt wird
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ if (!pData) return 0;
+
+ BOOL bEmpty = FALSE;
+ USHORT nArgNo = aScParaWin.GetActiveLine();
+ nEdFocus=nArgNo;
+
+ SaveArg(nArgNo);
+ UpdateSelection();
+
+ xub_StrLen nFormulaStrPos = pData->GetFStart();
+
+ String aFormula = pScMod->InputGetFormulaStr();
+ xub_StrLen n1 = ScFormulaUtil::GetArgStart( aFormula, nFormulaStrPos, nEdFocus+pData->GetOffset() );
+ xub_StrLen n2 = ScFormulaUtil::GetFunctionEnd( aFormula, n1 );
+
+
+
+ pData->SetEdFocus( nEdFocus );
+ pData->SaveValues();
+ pData->SetMode( (USHORT) SC_FORMDLG_FORMULA );
+ pData->SetFStart( n1 );
+ pData->SetUndoStr( aUndoStr );
+ ClearAllParas();
+
+ FillDialog(FALSE);
+ pScFuncPage->SetFocus(); //Da Parawin nicht mehr sichtbar
+ }
+ return 0;
+}
+
+IMPL_LINK( ScFormulaDlg, ModifyHdl, ScParaWin*, pPtr )
+{
+ if(pPtr==&aScParaWin)
+ {
+ SaveArg(aScParaWin.GetActiveLine());
+ UpdateValues();
+
+ UpdateSelection();
+ CalcStruct(pMEdit->GetText());
+ }
+ return 0;
+}
+
+IMPL_LINK( ScFormulaDlg, FormulaHdl, MultiLineEdit*, pEd )
+{
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ if (!pData) return 0;
+ xub_StrLen nFStart = pData->GetFStart();
+
+ bEditFlag=TRUE;
+ String aInputFormula=pScMod->InputGetFormulaStr();
+ String aString=pMEdit->GetText();
+
+ Selection aSel =pMEdit->GetSelection();
+ xub_StrLen nTest=0;
+
+ if(aString.Len()==0) //falls alles geloescht wurde
+ {
+ aString +='=';
+ pMEdit->SetText(aString);
+ aSel .Min()=1;
+ aSel .Max()=1;
+ pMEdit->SetSelection(aSel);
+ }
+ else if(aString.GetChar(nTest)!='=') //falls ersetzt wurde;
+ {
+ aString.Insert( (sal_Unicode)'=', 0 );
+ pMEdit->SetText(aString);
+ aSel .Min()+=1;
+ aSel .Max()+=1;
+ pMEdit->SetSelection(aSel);
+ }
+
+
+ pScMod->InputSetSelection(0, aInputFormula.Len());
+ pScMod->InputReplaceSelection(aString);
+ pScMod->InputSetSelection((xub_StrLen)aSel.Min(),(xub_StrLen)aSel.Max());
+
+ xub_StrLen nPos=(xub_StrLen)aSel.Min()-1;
+
+ String aStrResult;
+
+ if ( CalcValue(pScMod->InputGetFormulaStr(), aStrResult ) )
+ aWndFormResult.SetValue( aStrResult );
+ else
+ {
+ aStrResult.Erase();
+ aWndFormResult.SetValue( aStrResult );
+ }
+ CalcStruct(aString);
+
+ nPos=GetFunctionPos(nPos);
+
+ if(nPos<aSel.Min()-1)
+ {
+ xub_StrLen nPos1=aString.Search('(',nPos);
+ EditNextFunc( FALSE, nPos1);
+ }
+ else
+ {
+ ClearAllParas();
+ /*
+ aScParaWin.ClearAll();
+ aWndResult.SetValue(EMPTY_STRING);
+ aFtEditName.SetText(EMPTY_STRING);
+ */
+ }
+
+ pScMod->InputSetSelection((xub_StrLen)aSel.Min(),(xub_StrLen)aSel.Max());
+ bEditFlag=FALSE;
+ return 0;
+}
+
+IMPL_LINK( ScFormulaDlg, FormulaCursorHdl, ScEditBox*, pEd )
+{
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+ if (!pData) return 0;
+ xub_StrLen nFStart = pData->GetFStart();
+
+ bEditFlag=TRUE;
+
+ String aInputFormula=pScMod->InputGetFormulaStr();
+ String aString=pMEdit->GetText();
+
+ Selection aSel =pMEdit->GetSelection();
+ pScMod->InputSetSelection((xub_StrLen)aSel.Min(),(xub_StrLen)aSel.Max());
+
+
+ if(aSel.Min()==0)
+ {
+ aSel.Min()=1;
+ pMEdit->SetSelection(aSel);
+ }
+
+ if(aSel.Min()!=aString.Len())
+ {
+
+ xub_StrLen nPos=(xub_StrLen)aSel.Min();
+
+ nFStart=GetFunctionPos(nPos-1);
+
+ if(nFStart<nPos)
+ {
+ xub_StrLen nPos1=ScFormulaUtil::GetFunctionEnd(aString,nFStart);
+
+ if(nPos1>nPos || nPos1==STRING_NOTFOUND)
+ {
+ EditThisFunc(nFStart);
+ }
+ else
+ {
+ xub_StrLen n=nPos;
+ short nCount=1;
+ while(n>0)
+ {
+ if(aString.GetChar(n)==')')
+ nCount++;
+ else if(aString.GetChar(n)=='(')
+ nCount--;
+ if(nCount==0) break;
+ n--;
+ }
+ if(nCount==0)
+ {
+ nFStart=ScFormulaUtil::GetFunctionStart(aString,n,TRUE);
+ EditThisFunc(nFStart);
+ }
+ else
+ {
+ ClearAllParas();
+ }
+ }
+ }
+ else
+ {
+ ClearAllParas();
+ }
+ }
+ pScMod->InputSetSelection((xub_StrLen)aSel.Min(),(xub_StrLen)aSel.Max());
+
+ bEditFlag=FALSE;
+ return 0;
+}
+
+void ScFormulaDlg::UpdateSelection()
+{
+ ScModule* pScMod = SC_MOD();
+
+ pScMod->InputSetSelection((xub_StrLen)aFuncSel.Min(),(xub_StrLen)aFuncSel.Max());
+
+ pScMod->InputReplaceSelection( pFuncDesc->GetFormulaString( pArgArr ) );
+ pMEdit->SetText(pScMod->InputGetFormulaStr());
+ xub_StrLen PrivStart, PrivEnd;
+ pScMod->InputGetSelection( PrivStart, PrivEnd);
+ aFuncSel.Min()=PrivStart;
+ aFuncSel.Max()=PrivEnd;
+
+ nArgs = pFuncDesc->nArgCount;
+
+ String aFormula=pMEdit->GetText();
+ xub_StrLen nArgPos=ScFormulaUtil::GetArgStart( aFormula,PrivStart,0);
+
+ USHORT nPos=aScParaWin.GetActiveLine();
+
+ BOOL bFlag=FALSE;
+ for(USHORT i=0;i<nPos;i++)
+ {
+ xub_StrLen nTmpLength=(pArgArr[i])->Len();
+ nArgPos+=nTmpLength+1;
+ }
+ xub_StrLen nLength=(pArgArr[nPos])->Len();
+
+ Selection aSel(nArgPos,nArgPos+nLength);
+ pScMod->InputSetSelection(nArgPos,nArgPos+nLength);
+ pMEdit->SetSelection(aSel);
+}
+
+// virtuelle Methoden von ScAnyRefDlg:
+void ScFormulaDlg::RefInputStart( ScRefEdit* pEdit, ScRefButton* pButton)
+{
+ aEdRef.Show();
+ pTheRefEdit=pEdit;
+ pTheRefButton=pButton;
+ if(pTheRefEdit!=NULL)
+ {
+ aEdRef.SetRefString(pTheRefEdit->GetText());
+ aEdRef.SetSelection(pTheRefEdit->GetSelection());
+ aEdRef.SetHelpId(pTheRefEdit->GetHelpId());
+ aEdRef.SetUniqueId(pTheRefEdit->GetUniqueId());
+
+ if(pButton!=NULL)
+ {
+ aRefBtn.Show();
+ ScAnyRefDlg::RefInputStart(&aEdRef,&aRefBtn);
+ aRefBtn.SetEndImage();
+ }
+ else
+ {
+ aRefBtn.Hide();
+ ScAnyRefDlg::RefInputStart(&aEdRef);
+ }
+
+ String aStr=aTitle2;
+ aStr+=String(' ');
+ aStr+=aFtEditName.GetText();
+
+ if(aScParaWin.GetActiveLine()>0)
+ {
+ aStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "(...; " ));
+ }
+ else
+ {
+ aStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "( " ));
+ }
+
+ aStr += aScParaWin.GetActiveArgName();
+ if(nArgs>1)
+ aStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ";...)" ));
+ else
+ aStr += ')';
+ SetText(aStr);
+ }
+ else
+ {
+ if(pButton!=NULL)
+ {
+ aRefBtn.Show();
+ ScAnyRefDlg::RefInputStart(&aEdRef,&aRefBtn);
+ }
+ else
+ {
+ aRefBtn.Hide();
+ ScAnyRefDlg::RefInputStart(&aEdRef);
+ }
+ }
+}
+
+void ScFormulaDlg::RefInputDone( BOOL bForced)
+{
+ ScAnyRefDlg::RefInputDone(bForced);
+ if(bForced || !aRefBtn.IsVisible())
+ {
+ aEdRef.Hide();
+ aRefBtn.Hide();
+ if(pTheRefEdit!=NULL)
+ {
+ pTheRefEdit->SetRefString(aEdRef.GetText());
+ pTheRefEdit->GrabFocus();
+
+ if(pTheRefButton!=NULL)
+ pTheRefButton->SetStartImage();
+
+ aRefBtn.SetStartImage();
+ USHORT nPrivActiv=aScParaWin.GetActiveLine();
+ aScParaWin.SetArgument(nPrivActiv,aEdRef.GetText());
+ ModifyHdl(&aScParaWin);
+ pTheRefEdit=NULL;
+ }
+ SetText(aTitle1);
+ }
+}
+
+void ScFormulaDlg::SetReference( const ScRange& rRef, ScDocument* pRefDoc )
+{
+ if (nArgs > 0 )
+ {
+ aScParaWin.SetRefMode(TRUE);
+
+ Edit* pEd = aScParaWin.GetActiveEdit();
+ Selection theSel;
+ String aStrEd;
+ if(pEd!=NULL && pTheRefEdit==NULL)
+ {
+ theSel=pEd->GetSelection();
+ aStrEd=pEd->GetText();
+ aEdRef.SetRefString(aStrEd);
+ aEdRef.SetSelection( theSel );
+ }
+ else
+ {
+ theSel=aEdRef.GetSelection();
+ aStrEd=aEdRef.GetText();
+ }
+ String aRefStr;
+
+ if ( rRef.aStart != rRef.aEnd && pTheRefEdit==NULL)
+ {
+ RefInputStart(aScParaWin.GetActiveEdit());
+ }
+
+ BOOL bOtherDoc = ( pRefDoc != pDoc && pRefDoc->GetDocumentShell()->HasName() );
+ if ( bOtherDoc )
+ {
+ // Referenz auf anderes Dokument - wie inputhdl.cxx
+
+ DBG_ASSERT(rRef.aStart.Tab()==rRef.aEnd.Tab(), "nStartTab!=nEndTab");
+
+ String aTmp;
+ rRef.Format( aTmp, SCA_VALID|SCA_TAB_3D, pRefDoc ); // immer 3d
+
+ SfxObjectShell* pObjSh = pRefDoc->GetDocumentShell();
+ String aFileName = pObjSh->GetMedium()->GetName();
+
+ aRefStr = '\'';
+ aRefStr += aFileName;
+ aRefStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "'#" ));
+ aRefStr += aTmp;
+ }
+ else
+ {
+ USHORT nFmt = ( rRef.aStart.Tab() == aCursorPos.Tab() )
+ ? SCA_VALID
+ : SCA_VALID | SCA_TAB_3D;
+ rRef.Format( aRefStr, nFmt, pRefDoc );
+ }
+
+ aEdRef.ReplaceSelected( aRefStr );
+ theSel.Max() = theSel.Min() + aRefStr.Len();
+ aEdRef.SetSelection( theSel );
+
+ //-------------------------------------
+ // Manuelles Update der Ergebnisfelder:
+ //-------------------------------------
+ USHORT nPrivActiv=aScParaWin.GetActiveLine();
+ aScParaWin.SetArgument(nPrivActiv,aEdRef.GetText());
+ aScParaWin.UpdateParas();
+
+ if(pEd!=NULL) pEd->SetSelection( theSel );
+
+ aScParaWin.SetRefMode(FALSE);
+ }
+}
+
+BOOL ScFormulaDlg::IsRefInputMode() const
+{
+ BOOL bRef = (nArgs > 0)&& (pDoc!=NULL);
+ return bRef;
+}
+
+BOOL ScFormulaDlg::IsDocAllowed(SfxObjectShell* pDocSh) const
+{
+ // not allowed: different from this doc, and no name
+ // pDocSh is always a ScDocShell
+ if ( pDocSh && ((ScDocShell*)pDocSh)->GetDocument() != pDoc && !pDocSh->HasName() )
+ return FALSE;
+
+ return TRUE; // everything else is allowed
+}
+
+void ScFormulaDlg::SetActive()
+{
+ if(nArgs > 0)
+ {
+ RefInputDone();
+ Edit* pEd = aScParaWin.GetActiveEdit();
+ if(pEd!=NULL)
+ {
+ Selection theSel=aEdRef.GetSelection();
+ // Edit may have the focus -> call ModifyHdl in addition
+ // to what's happening in GetFocus
+ pEd->GetModifyHdl().Call(pEd);
+ pEd->GrabFocus();
+ pEd->SetSelection(theSel);
+ }
+ }
+}
+
+void ScFormulaDlg::MakeTree(SvLBoxEntry* pParent,ScToken* pScToken,long Count,
+ ScTokenArray* pScTokA,ScCompiler* pComp)
+{
+ if(pScToken!=NULL && Count>0)
+ {
+ String aResult;
+ long nParas=pScToken->GetParamCount();
+ OpCode eOp = pScToken->GetOpCode();
+
+ if(nParas>0)
+ {
+ pComp->CreateStringFromToken( aResult,pScToken);
+
+ SvLBoxEntry* pEntry;
+
+ String aTest=pScStructPage->GetEntryText(pParent);
+
+ if(aTest==aResult &&
+ (eOp==ocAdd || eOp==ocMul ||
+ eOp==ocAmpersand))
+ {
+ pEntry=pParent;
+ }
+ else
+ {
+ if(eOp==ocBad)
+ {
+ pEntry=pScStructPage->InsertEntry(aResult,pParent,STRUCT_ERROR,0,pScToken);
+ }
+ else
+ {
+ pEntry=pScStructPage->InsertEntry(aResult,pParent,STRUCT_FOLDER,0,pScToken);
+ }
+ }
+
+ MakeTree(pEntry,pScTokA->PrevRPN(),nParas,pScTokA,pComp);
+ --Count;
+ pScTokA->NextRPN();
+ MakeTree(pParent,pScTokA->PrevRPN(),Count,pScTokA,pComp);
+ }
+ else
+ {
+ pComp->CreateStringFromToken( aResult,pScToken);
+
+ if(eOp==ocBad)
+ {
+ pScStructPage->InsertEntry(aResult,pParent,STRUCT_ERROR,0,pScToken);
+ }
+ else
+ {
+ pScStructPage->InsertEntry(aResult,pParent,STRUCT_END,0,pScToken);
+ }
+ --Count;
+ MakeTree(pParent,pScTokA->PrevRPN(),Count,pScTokA,pComp);
+ }
+ }
+}
+
+
+void ScFormulaDlg::UpdateTokenArray( const String& rStrExp)
+{
+ if(pScTokA!=NULL) delete pScTokA;
+ pScTokA=pComp->CompileString(rStrExp);
+ pComp->CompileTokenArray();
+}
+
+xub_StrLen ScFormulaDlg::GetFunctionPos(xub_StrLen nPos)
+{
+ xub_StrLen nTokPos=1;
+ xub_StrLen nOldTokPos=1;
+ xub_StrLen nFuncPos=STRING_NOTFOUND; //@ Testweise
+ xub_StrLen nPrevFuncPos=1;
+ short nBracketCount=0;
+ BOOL bFlag=FALSE;
+ String aFormString=pMEdit->GetText();
+ xub_StrLen nTheEnd=aFormString.Len();
+ ScGlobal::pCharClass->toUpper( aFormString );
+ if(pScTokA!=NULL)
+ {
+ ScToken* pToken=pScTokA->First();
+ while(pToken!=NULL)
+ {
+ String aString;
+ OpCode eOp = pToken->GetOpCode();
+ pComp->CreateStringFromToken( aString,pToken);
+ ScToken* pNextToken=pScTokA->Next();
+
+ if(!bUserMatrixFlag && pToken->IsMatrixFunction())
+ {
+ aBtnMatrix.Check();
+ }
+
+ if(eOp==ocPush || eOp==ocSpaces)
+ {
+ xub_StrLen n1=aFormString.Search(';',nTokPos);
+ xub_StrLen n2=aFormString.Search(')',nTokPos);
+ xub_StrLen nXXX=nTokPos;
+ if(n1<n2)
+ {
+ nTokPos=n1;
+ }
+ else
+ {
+ nTokPos=n2;
+ }
+ if(pNextToken!=NULL)
+ {
+ String a2String;
+ pComp->CreateStringFromToken( a2String,pNextToken);
+ xub_StrLen n3=aFormString.Search(a2String,nXXX);
+
+ if(n3<nTokPos)
+ nTokPos=n3;
+ }
+ }
+ else
+ {
+ nTokPos+=aString.Len();
+ }
+
+ if(eOp==ocOpen)
+ {
+ nBracketCount++;
+ bFlag=TRUE;
+ }
+ else if(eOp==ocClose)
+ {
+ nBracketCount--;
+ bFlag=FALSE;
+ nFuncPos=nPrevFuncPos;
+ }
+
+ if((pToken->IsFunction()|| ocArcTan2<=eOp) && ocSpaces!=eOp)
+ {
+ nPrevFuncPos=nFuncPos;
+ nFuncPos=nOldTokPos;
+ }
+
+ if(nOldTokPos<=nPos && nPos<nTokPos)
+ {
+ if(!(pToken->IsFunction()|| ocArcTan2<=eOp))
+ {
+ if(nBracketCount<1)
+ {
+ nFuncPos=pMEdit->GetText().Len();
+ }
+ else if(!bFlag)
+ {
+ nFuncPos=nPrevFuncPos;
+ }
+ }
+ break;
+ }
+
+ pToken=pNextToken;
+ nOldTokPos=nTokPos;
+ }
+ }
+
+ return nFuncPos;
+}
+
+BOOL ScFormulaDlg::CalcStruct( const String& rStrExp)
+{
+ BOOL bResult = TRUE;
+ xub_StrLen nLength=rStrExp.Len();
+
+ if ( rStrExp.Len() > 0 && aOldFormula!=rStrExp && bStructUpdate)
+ {
+ // nur, wenn keine Tastatureingabe mehr anliegt, den Wert berechnen:
+
+ if ( !Application::AnyInput( INPUT_KEYBOARD ) )
+ {
+ pScStructPage->ClearStruct();
+
+ String aString=rStrExp;
+ if(rStrExp.GetChar(nLength-1)=='(')
+ {
+ aString.Erase((xub_StrLen)(nLength-1));
+ }
+
+ aString.EraseAllChars('\n');
+ String aStrResult;
+
+ if ( CalcValue(aString, aStrResult ) )
+ aWndFormResult.SetValue( aStrResult );
+
+ UpdateTokenArray(aString);
+
+ ScToken* pScToken=pScTokA->LastRPN();
+
+ if(pScToken!=NULL)
+ {
+ MakeTree(NULL,pScToken,1,pScTokA,pComp);
+ }
+ aOldFormula=rStrExp;
+ if(rStrExp.GetChar(nLength-1)=='(')
+ UpdateTokenArray(rStrExp);
+ }
+ else
+ bResult = FALSE;
+ }
+ return bResult;
+}
+
+IMPL_LINK( ScFormulaDlg, StructSelHdl, ScStructPage*, pStruP )
+{
+ bStructUpdate=FALSE;
+ if(pScStructPage->IsVisible()) aBtnForward.Enable(FALSE); //@New
+
+ if(pScStructPage==pStruP)
+ {
+ ScToken* pSelToken=pScStructPage->GetSelectedToken();
+ xub_StrLen nTokPos=1;
+
+ if(pScTokA!=NULL)
+ {
+ ScToken* pToken=pScTokA->First();
+
+ while(pToken!=NULL)
+ {
+ String aString;
+ if(pToken==pSelToken) break;
+ pComp->CreateStringFromToken( aString,pToken);
+ nTokPos+=aString.Len();
+ pToken=pScTokA->Next();
+ }
+ EditThisFunc(nTokPos);
+ }
+
+ if(pSelToken!=NULL)
+ {
+ String aStr;
+ pComp->CreateStringFromToken( aStr,pSelToken);
+ String aEntryTxt=pScStructPage->GetSelectedEntryText();
+
+ if(aEntryTxt!=aStr)
+ ShowReference(aEntryTxt);
+ }
+
+ }
+ bStructUpdate=TRUE;
+ return 0;
+}
+
+ULONG ScFormulaDlg::FindFocusWin(Window *pWin)
+{
+ ULONG nUniqueId=0;
+ if(pWin->HasFocus())
+ {
+ nUniqueId=pWin->GetUniqueId();
+ if(nUniqueId==0)
+ {
+ Window* pParent=pWin->GetParent();
+ while(pParent!=NULL)
+ {
+ nUniqueId=pParent->GetUniqueId();
+
+ if(nUniqueId!=0) break;
+
+ pParent=pParent->GetParent();
+ }
+ }
+ }
+ else
+ {
+ USHORT nCount=pWin->GetChildCount();
+
+ for(USHORT i=0;i<nCount;i++)
+ {
+ Window* pChild=pWin->GetChild(i);
+ nUniqueId=FindFocusWin(pChild);
+ if(nUniqueId>0) break;
+ }
+ }
+ return nUniqueId;
+}
+
+void ScFormulaDlg::SetFocusWin(Window *pWin,ULONG nUniqueId)
+{
+ if(pWin->GetUniqueId()==nUniqueId)
+ {
+ pWin->GrabFocus();
+ }
+ else
+ {
+ USHORT nCount=pWin->GetChildCount();
+
+ for(USHORT i=0;i<nCount;i++)
+ {
+ Window* pChild=pWin->GetChild(i);
+ SetFocusWin(pChild,nUniqueId);
+ }
+ }
+}
+
+IMPL_LINK( ScFormulaDlg, MatrixHdl, CheckBox *, pCb)
+{
+ bUserMatrixFlag=TRUE;
+ return 0;
+}
+
+IMPL_LINK( ScFormulaDlg, FuncSelHdl, ScFuncPage*, pLb )
+{
+ USHORT nCat = pScFuncPage->GetCategory();
+ if ( nCat == LISTBOX_ENTRY_NOTFOUND ) nCat = 0;
+ USHORT nFunc = pScFuncPage->GetFunction();
+ if ( nFunc == LISTBOX_ENTRY_NOTFOUND ) nFunc = 0;
+
+ if ( (pScFuncPage->GetFunctionEntryCount() > 0)
+ && (pScFuncPage->GetFunction() != LISTBOX_ENTRY_NOTFOUND) )
+ {
+ ScFuncDesc* pDesc =pScFuncPage->GetFuncDesc(
+ pScFuncPage->GetFunction() );
+
+ if(pDesc!=pFuncDesc) aBtnForward.Enable(TRUE); //new
+
+ if (pDesc)
+ {
+ String aSig = pDesc->GetSignature();
+ if(pDesc->pFuncName)
+ aFtHeadLine.SetText( *(pDesc->pFuncName) );
+ else
+ aFtHeadLine.SetText( EMPTY_STRING);
+ aFtFuncName.SetText( aSig );
+ if(pDesc->pFuncDesc)
+ aFtFuncDesc.SetText( *(pDesc->pFuncDesc) );
+ else
+ aFtFuncDesc.SetText( EMPTY_STRING);
+ }
+ }
+ else
+ {
+ aFtHeadLine.SetText( EMPTY_STRING );
+ aFtFuncName.SetText( EMPTY_STRING );
+ aFtFuncDesc.SetText( EMPTY_STRING );
+ }
+ return 0;
+}
+
+IMPL_LINK( ScFormulaDlg, UpdateFocusHdl, Timer*, pTi)
+{
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+
+ if (pData) // wird nicht ueber Close zerstoert;
+ {
+ pScMod->SetRefInputHdl(pData->GetInputHandler());
+ ULONG nUniqueId=pData->GetUniqueId();
+ SetFocusWin((Window *)this,nUniqueId);
+ }
+ return 0;
+}
+
+long ScFormulaDlg::PreNotify( NotifyEvent& rNEvt )
+{
+ USHORT nSwitch=rNEvt.GetType();
+ if(nSwitch==EVENT_GETFOCUS && !bIsShutDown)
+ {
+ Window* pWin=rNEvt.GetWindow();
+ if(pWin!=NULL)
+ {
+ nActivWinId=pWin->GetUniqueId();
+ if(nActivWinId==0)
+ {
+ Window* pParent=pWin->GetParent();
+ while(pParent!=NULL)
+ {
+ nActivWinId=pParent->GetUniqueId();
+
+ if(nActivWinId!=0) break;
+
+ pParent=pParent->GetParent();
+ }
+ }
+ if(nActivWinId!=0)
+ {
+ ScModule* pScMod = SC_MOD();
+ ScFormEditData* pData = pScMod->GetFormEditData();
+
+ if (pData && !aTimer.IsActive()) // wird nicht ueber Close zerstoert;
+ {
+ pData->SetUniqueId(nActivWinId);
+ }
+ }
+ }
+ }
+ return ScAnyRefDlg::PreNotify(rNEvt);
+}
+
+String ScFormulaDlg::RepairFormula(const String& aFormula)
+{
+ String aResult('=');
+ String aString2;
+ BOOL bSep=FALSE;
+
+ ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
+
+ UpdateTokenArray(aFormula);
+
+ if(pScTokA!=NULL)
+ {
+ ScToken* pToken=pScTokA->First();
+ while(pToken!=NULL)
+ {
+ String aString;
+ OpCode eOp = pToken->GetOpCode();
+ pComp->CreateStringFromToken( aString,pToken);
+ ScToken* pNextToken=pScTokA->Next();
+
+ if(eOp==ocSep)
+ {
+ bSep=TRUE;
+ //aResult+=aString2;
+ aString2+=aString;
+ }
+ else if(eOp==ocClose &&bSep)
+ {
+ aString2.Erase();
+ bSep=FALSE;
+ aResult+=aString;
+ }
+ else if(eOp!=ocSpaces)
+ {
+ if(bSep)
+ {
+ aResult+=aString2;
+ aString2.Erase();
+ bSep=FALSE;
+ }
+ aResult+=aString;
+ }
+
+ ScFuncDesc* pDesc= pFuncMgr->Get(aString);
+
+ SaveLRUEntry(pDesc); //! is this necessary?? (EnterData updates the list)
+
+ pToken=pNextToken;
+ }
+
+ }
+
+ return aResult;
+}
+
+void ScFormulaDlg::HighlightFunctionParas(const String& aFormula)
+{
+ ShowReference(aFormula);
+}
+
+void ScFormulaDlg::SaveLRUEntry(ScFuncDesc* pFuncDesc)
+{
+ if (pFuncDesc && pFuncDesc->nFIndex!=0)
+ {
+ ScModule* pScMod = SC_MOD();
+ pScMod->InsertEntryToLRUList(pFuncDesc->nFIndex);
+ }
+}
+
+
+
diff --git a/sc/source/ui/formdlg/funcpage.cxx b/sc/source/ui/formdlg/funcpage.cxx
new file mode 100644
index 000000000000..51539fec5224
--- /dev/null
+++ b/sc/source/ui/formdlg/funcpage.cxx
@@ -0,0 +1,291 @@
+/*************************************************************************
+ *
+ * $RCSfile: funcpage.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/dispatch.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/objsh.hxx>
+#include <svtools/zforlist.hxx>
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+
+#include "funcpage.hxx"
+#include "formdlgs.hrc"
+#include "formdata.hxx"
+#include "globstr.hrc"
+#include "scresid.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "scmod.hxx"
+#include "inputhdl.hxx"
+#include "tabvwsh.hxx"
+#include "appoptio.hxx"
+
+//============================================================================
+
+ScListBox::ScListBox( Window* pParent, WinBits nWinStyle):
+ ListBox(pParent,nWinStyle)
+{}
+
+ScListBox::ScListBox( Window* pParent, const ResId& rResId ):
+ ListBox(pParent,rResId)
+{}
+
+void ScListBox::KeyInput( const KeyEvent& rKEvt )
+{
+ KeyEvent aKEvt=rKEvt;
+ //ListBox::KeyInput(rKEvt);
+
+ if(aKEvt.GetCharCode()==' ')
+ DoubleClick();
+}
+
+long ScListBox::PreNotify( NotifyEvent& rNEvt )
+{
+ NotifyEvent aNotifyEvt=rNEvt;
+
+ long nResult=ListBox::PreNotify(rNEvt);
+
+ USHORT nSwitch=aNotifyEvt.GetType();
+ if(nSwitch==EVENT_KEYINPUT)
+ {
+ KeyInput(*aNotifyEvt.GetKeyEvent());
+ }
+ return nResult;
+}
+
+
+
+//============================================================================
+
+inline USHORT Lb2Cat( USHORT nLbPos )
+{
+ // Kategorie 0 == LRU, sonst Categories == LbPos-1
+ if ( nLbPos > 0 )
+ nLbPos -= 1;
+
+ return nLbPos;
+}
+
+//============================================================================
+
+ScFuncPage::ScFuncPage(Window* pParent):
+ TabPage(pParent,ScResId(RID_SCTAB_FUNCTION)),
+ //
+ aFtCategory ( this, ScResId( FT_CATEGORY ) ),
+ aLbCategory ( this, ScResId( LB_CATEGORY ) ),
+ aFtFunction ( this, ScResId( FT_FUNCTION ) ),
+ aLbFunction ( this, ScResId( LB_FUNCTION ) ),
+ aIBFunction ( this, ScResId( IB_FUNCTION ) )
+{
+ FreeResource();
+ InitLRUList();
+ aLbCategory.SelectEntryPos(1);
+ UpdateFunctionList();
+ aLbCategory.SetSelectHdl( LINK( this, ScFuncPage, SelHdl ) );
+ aLbFunction.SetSelectHdl( LINK( this, ScFuncPage, SelHdl ) );
+ aLbFunction.SetDoubleClickHdl( LINK( this, ScFuncPage, DblClkHdl ) );
+ aIBFunction.SetClickHdl( LINK( this, ScFuncPage, DblClkHdl ) );
+}
+
+void ScFuncPage::UpdateFunctionList()
+{
+ USHORT nSelPos = aLbCategory.GetSelectEntryPos();
+ USHORT nCategory = ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
+ ? Lb2Cat( nSelPos ) : 0;
+
+ aLbFunction.Clear();
+ aLbFunction.SetUpdateMode( FALSE );
+ //------------------------------------------------------
+
+ if ( nSelPos > 0 )
+ {
+ ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
+
+ ScFuncDesc* pDesc = pFuncMgr->First( nCategory );
+ while ( pDesc )
+ {
+ aLbFunction.SetEntryData(
+ aLbFunction.InsertEntry(*(pDesc->pFuncName) ),pDesc );
+ pDesc = pFuncMgr->Next();
+ }
+ }
+ else // LRU-Liste
+ {
+ for ( USHORT i=0; i<LRU_MAX && aLRUList[i]; i++ )
+ {
+ ScFuncDesc* pDesc = aLRUList[i];
+ aLbFunction.SetEntryData(
+ aLbFunction.InsertEntry( *(pDesc->pFuncName) ),pDesc );
+ }
+ }
+
+ //------------------------------------------------------
+ aLbFunction.SetUpdateMode( TRUE );
+ aLbFunction.SelectEntryPos(0);
+
+ if(IsVisible()) SelHdl(&aLbFunction);
+}
+
+IMPL_LINK( ScFuncPage, SelHdl, ListBox*, pLb )
+{
+ if(pLb==&aLbFunction)
+ {
+ aSelectionLink.Call(this);
+ }
+ else
+ {
+ UpdateFunctionList();
+ }
+ return 0;
+}
+
+IMPL_LINK( ScFuncPage, DblClkHdl, ListBox*, pLb )
+{
+ aDoubleClickLink.Call(this);
+ return 0;
+}
+
+void ScFuncPage::SetCategory(USHORT nCat)
+{
+ aLbCategory.SelectEntryPos(nCat);
+ UpdateFunctionList();
+}
+
+void ScFuncPage::SetFunction(USHORT nFunc)
+{
+ aLbFunction.SelectEntryPos(nFunc);
+}
+
+void ScFuncPage::SetFocus()
+{
+ aLbFunction.GrabFocus();
+}
+
+USHORT ScFuncPage::GetCategory()
+{
+ return aLbCategory.GetSelectEntryPos();
+}
+
+USHORT ScFuncPage::GetFunction()
+{
+ return aLbFunction.GetSelectEntryPos();
+}
+
+USHORT ScFuncPage::GetFunctionEntryCount()
+{
+ return aLbFunction.GetSelectEntryCount();
+}
+
+ScFuncDesc* ScFuncPage::GetFuncDesc( USHORT nPos ) const
+{
+ // nicht schoen, aber hoffentlich selten
+ return (ScFuncDesc*) aLbFunction.GetEntryData(nPos);
+}
+
+USHORT ScFuncPage::GetFuncPos(ScFuncDesc* pFuncDesc)
+{
+ if(pFuncDesc!=NULL && pFuncDesc->pFuncName!=NULL)
+ {
+ return aLbFunction.GetEntryPos(*(pFuncDesc->pFuncName));
+ }
+ else
+ {
+ return LISTBOX_ENTRY_NOTFOUND;
+ }
+}
+String ScFuncPage::GetSelFunctionName() const
+{
+ return aLbFunction.GetSelectEntry();
+}
+
+void ScFuncPage::InitLRUList()
+{
+ const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
+ USHORT nLRUFuncCount = Min( rAppOpt.GetLRUFuncListCount(), (USHORT)LRU_MAX );
+ USHORT* pLRUListIds = rAppOpt.GetLRUFuncList();
+
+ USHORT i;
+ for ( i=0; i<LRU_MAX; i++ )
+ aLRUList[i] = NULL;
+
+ if ( pLRUListIds )
+ {
+ ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
+ for ( i=0; i<nLRUFuncCount; i++ )
+ aLRUList[i] = pFuncMgr->Get( pLRUListIds[i] );
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/formdlg/funcutl.cxx b/sc/source/ui/formdlg/funcutl.cxx
new file mode 100644
index 000000000000..afa93f7c5dd2
--- /dev/null
+++ b/sc/source/ui/formdlg/funcutl.cxx
@@ -0,0 +1,952 @@
+/*************************************************************************
+ *
+ * $RCSfile: funcutl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#include <vcl/sound.hxx>
+#include <vcl/svapp.hxx>
+
+#include "funcutl.hxx"
+
+
+//============================================================================
+// class ValWnd
+//----------------------------------------------------------------------------
+
+ValWnd::ValWnd( Window* pParent, const ResId& rId ) : Window( pParent, rId )
+{
+ Font aFnt( GetFont() );
+ aFnt.SetTransparent( TRUE );
+ aFnt.SetWeight( WEIGHT_LIGHT );
+ if ( pParent->IsBackground() )
+ {
+ Wallpaper aBack = pParent->GetBackground();
+ SetFillColor( aBack.GetColor() );
+ SetBackground( aBack );
+ aFnt.SetFillColor( aBack.GetColor() );
+ }
+ else
+ {
+ SetFillColor();
+ SetBackground();
+ }
+ SetFont( aFnt );
+ SetLineColor();
+
+ Size aSzWnd = GetOutputSizePixel();
+ long nHeight = GetTextHeight();
+ long nDiff = aSzWnd.Height()-nHeight;
+
+ aRectOut = Rectangle( Point( 1, ( nDiff<2 ) ? 1 : nDiff/2),
+ Size ( aSzWnd.Width()-2, nHeight ) );
+ SetClipRegion( Region( aRectOut ) );
+}
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ValWnd::Paint( const Rectangle& )
+{
+ DrawText( aRectOut.TopLeft(), aStrValue );
+}
+
+//----------------------------------------------------------------------------
+
+void ValWnd::SetValue( const String& rStrVal )
+{
+ if ( aStrValue != rStrVal )
+ {
+ aStrValue = rStrVal;
+ DrawRect( aRectOut ); // alten Text loeschen
+ Paint( aRectOut ); // und neu malen
+ }
+}
+
+//============================================================================
+// class ArgEdit
+//----------------------------------------------------------------------------
+
+ArgEdit::ArgEdit( Window* pParent, WinBits nWinStyle )
+ : ScRefEdit( pParent, nWinStyle ),
+ pSlider ( NULL ),
+ pEdPrev ( NULL ),
+ pEdNext ( NULL ),
+ nArgs ( 0 )
+{
+}
+
+//----------------------------------------------------------------------------
+
+ArgEdit::ArgEdit( Window* pParent, const ResId& rResId )
+ : ScRefEdit( pParent, rResId ),
+ pEdPrev ( NULL ),
+ pEdNext ( NULL ),
+ pSlider ( NULL ),
+ nArgs ( 0 )
+{
+}
+
+//----------------------------------------------------------------------------
+
+void ArgEdit::Init( ArgEdit* pPrevEdit, ArgEdit* pNextEdit,
+ ScrollBar& rArgSlider, USHORT nArgCount )
+{
+ pEdPrev = pPrevEdit;
+ pEdNext = pNextEdit;
+ pSlider = &rArgSlider;
+ nArgs = nArgCount;
+}
+
+//----------------------------------------------------------------------------
+
+// Cursorsteuerung fuer EditFelder im Argument-Dialog
+
+void __EXPORT ArgEdit::KeyInput( const KeyEvent& rKEvt )
+{
+ KeyCode aCode = rKEvt.GetKeyCode();
+ BOOL bUp = (aCode.GetCode() == KEY_UP);
+ BOOL bDown = (aCode.GetCode() == KEY_DOWN);
+ ArgEdit* pEd = NULL;
+
+ if ( pSlider
+ && ( !aCode.IsShift() && !aCode.IsMod1() && !aCode.IsMod2() )
+ && ( bUp || bDown ) )
+ {
+ if ( nArgs > 1 )
+ {
+ long nThumb = pSlider->GetThumbPos();
+ BOOL bDoScroll = FALSE;
+ BOOL bChangeFocus = FALSE;
+
+ if ( bDown )
+ {
+ if ( nArgs > 4 )
+ {
+ if ( !pEdNext )
+ {
+ nThumb++;
+ bDoScroll = ( nThumb+3 < (long)nArgs );
+ }
+ else
+ {
+ pEd = pEdNext;
+ bChangeFocus = TRUE;
+ }
+ }
+ else if ( pEdNext )
+ {
+ pEd = pEdNext;
+ bChangeFocus = TRUE;
+ }
+ }
+ else // if ( bUp )
+ {
+ if ( nArgs > 4 )
+ {
+ if ( !pEdPrev )
+ {
+ nThumb--;
+ bDoScroll = ( nThumb >= 0 );
+ }
+ else
+ {
+ pEd = pEdPrev;
+ bChangeFocus = TRUE;
+ }
+ }
+ else if ( pEdPrev )
+ {
+ pEd = pEdPrev;
+ bChangeFocus = TRUE;
+ }
+ }
+
+ if ( bDoScroll )
+ {
+ pSlider->SetThumbPos( nThumb );
+ ((Link&)pSlider->GetEndScrollHdl()).Call( pSlider );
+ }
+ else if ( bChangeFocus )
+ {
+ pEd->GrabFocus();
+ }
+ else
+ Sound::Beep();
+ }
+ else
+ Sound::Beep();
+ }
+ else
+ Edit::KeyInput( rKEvt );
+}
+
+
+
+
+/*************************************************************************
+#* Member: ArgInput Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Konstruktor der Klasse ArgInput
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+ArgInput::ArgInput()
+{
+ pFtArg=NULL;
+ pBtnFx=NULL;
+ pEdArg=NULL;
+ pRefBtn=NULL;
+}
+
+/*************************************************************************
+#* Member: InitArgInput Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Initialisiert die Pointer der Klasse
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ArgInput::InitArgInput(FixedText* pftArg,
+ ImageButton* pbtnFx,
+ ArgEdit* pedArg,
+ ScRefButton* prefBtn)
+{
+ pFtArg =pftArg;
+ pBtnFx =pbtnFx;
+ pEdArg =pedArg;
+ pRefBtn=prefBtn;
+
+ if(pBtnFx!=NULL)
+ {
+ pBtnFx->SetClickHdl ( LINK( this, ArgInput, FxBtnClickHdl ) );
+ pBtnFx->SetGetFocusHdl( LINK( this, ArgInput, FxBtnFocusHdl ) );
+ }
+ if(pRefBtn!=NULL)
+ {
+ pRefBtn->SetClickHdl ( LINK( this, ArgInput, RefBtnClickHdl ) );
+ pRefBtn->SetGetFocusHdl( LINK( this, ArgInput, RefBtnFocusHdl ) );
+ }
+ if(pEdArg!=NULL)
+ {
+ pEdArg->SetGetFocusHdl ( LINK( this, ArgInput, EdFocusHdl ) );
+ pEdArg->SetModifyHdl ( LINK( this, ArgInput, EdModifyHdl ) );
+ }
+
+}
+
+/*************************************************************************
+#* Member: SetArgName Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Setzt den Namen fuer das Argument
+#*
+#* Input: String
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::SetArgName(const String &aArg)
+{
+ if(pFtArg !=NULL) pFtArg->SetText(aArg );
+}
+
+/*************************************************************************
+#* Member: GetArgName Datum:06.02.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Liefert den Namen fuer das Argument zurueck
+#*
+#* Input: String
+#*
+#* Output: ---
+#*
+#************************************************************************/
+String ArgInput::GetArgName()
+{
+ String aPrivArgName;
+ if(pFtArg !=NULL)
+ aPrivArgName=pFtArg->GetText();
+
+ return aPrivArgName;
+}
+
+
+/*************************************************************************
+#* Member: SetArgName Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Setzt den Namen fuer das Argument
+#*
+#* Input: String
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::SetArgNameFont (const Font &aFont)
+{
+ if(pFtArg !=NULL) pFtArg->SetFont(aFont);
+}
+
+/*************************************************************************
+#* Member: SetArgSelection Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Stellt die Selection fuer die EditBox ein.
+#*
+#* Input: String
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::SetArgSelection (const Selection& rSel )
+{
+ if(pEdArg !=NULL) pEdArg ->SetSelection(rSel );
+}
+
+/*************************************************************************
+#* Member: SetArgSelection Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Liefert die Selection fuer die EditBox zurueck.
+#*
+#* Input: String
+#*
+#* Output: ---
+#*
+#************************************************************************/
+Selection ArgInput::GetArgSelection ()
+{
+ Selection aSel;
+ if(pEdArg !=NULL) aSel=pEdArg ->GetSelection();
+ return aSel;
+}
+
+/*************************************************************************
+#* Member: SetArgSelection Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Ersetzt die Selection in der EditBox.
+#*
+#* Input: String
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::ReplaceSelOfArg(const String& rStr )
+{
+ if(pEdArg !=NULL) pEdArg ->ReplaceSelected(rStr );
+}
+
+
+
+/*************************************************************************
+#* Member: SetArgVal Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Setzt den Wert fuer das Argument
+#*
+#* Input: String
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::SetArgVal(const String &aVal)
+{
+ if(pEdArg !=NULL)
+ {
+ pEdArg ->SetRefString(aVal );
+ }
+}
+
+/*************************************************************************
+#* Member: SetArgName Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Liefert den Wert fuer das Argument
+#*
+#* Input: ---
+#*
+#* Output: String
+#*
+#************************************************************************/
+String ArgInput::GetArgVal()
+{
+ String aResult;
+ if(pEdArg!=NULL)
+ {
+ aResult=pEdArg->GetText();
+ }
+ return aResult;
+}
+
+/*************************************************************************
+#* Member: SetArgName Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Versteckt die Controls
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::Hide()
+{
+ if ( pFtArg && pBtnFx && pEdArg && pRefBtn)
+ {
+ pFtArg->Hide();
+ pBtnFx->Hide();
+ pEdArg->Hide();
+ pRefBtn->Hide();
+ }
+}
+
+/*************************************************************************
+#* Member: SetArgName Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Zaubert die Controls wieder hervor.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::Show()
+{
+ if ( pFtArg && pBtnFx && pEdArg && pRefBtn)
+ {
+ pFtArg->Show();
+ pBtnFx->Show();
+ pEdArg->Show();
+ pRefBtn->Show();
+ }
+}
+
+/*************************************************************************
+#* Member: FxClick Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Gibt den Event weiter.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::FxClick()
+{
+ aFxClickLink.Call(this);
+}
+
+/*************************************************************************
+#* Member: RefClick Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Gibt den Event weiter.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::RefClick()
+{
+ aRefClickLink.Call(this);
+}
+
+/*************************************************************************
+#* Member: FxFocus Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Gibt den Event weiter.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::FxFocus()
+{
+ aFxFocusLink.Call(this);
+}
+
+/*************************************************************************
+#* Member: RefFocus Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Gibt den Event weiter.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::RefFocus()
+{
+ aRefFocusLink.Call(this);
+}
+
+/*************************************************************************
+#* Member: EdFocus Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Gibt den Event weiter.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::EdFocus()
+{
+ aEdFocusLink.Call(this);
+}
+
+/*************************************************************************
+#* Member: EdModify Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Gibt den Event weiter.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ArgInput::EdModify()
+{
+ aEdModifyLink.Call(this);
+}
+
+/*************************************************************************
+#* Handle: FxBtnHdl Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Handle fuer Fx-Button Click-Event.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+IMPL_LINK( ArgInput, FxBtnClickHdl, ImageButton*, pBtn )
+{
+ if(pBtn==pBtnFx) FxClick();
+
+ return 0;
+}
+
+/*************************************************************************
+#* Handle: RefBtnClickHdl Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Handle fuer Fx-Button Click-Event.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+IMPL_LINK( ArgInput, RefBtnClickHdl,ScRefButton*, pBtn )
+{
+ if(pRefBtn==pBtn) RefClick();
+
+ return 0;
+}
+
+/*************************************************************************
+#* Handle: FxBtnFocusHdl Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Handle fuer Fx-Button Focus-Event.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+IMPL_LINK( ArgInput, FxBtnFocusHdl, ImageButton*, pBtn )
+{
+ if(pBtn==pBtnFx) FxFocus();
+
+ return 0;
+}
+
+/*************************************************************************
+#* Handle: RefBtnFocusHdl Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Handle fuer Fx-Button Focus-Event.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+IMPL_LINK( ArgInput, RefBtnFocusHdl,ScRefButton*, pBtn )
+{
+ if(pRefBtn==pBtn) RefFocus();
+
+ return 0;
+}
+
+/*************************************************************************
+#* Handle: EdFocusHdl Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Handle fuer Fx-Button Focus-Event.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+IMPL_LINK( ArgInput, EdFocusHdl, ArgEdit*, pEd )
+{
+ if(pEd==pEdArg) EdFocus();
+
+ return 0;
+}
+
+/*************************************************************************
+#* Handle: RefBtnClickHdl Datum:13.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ArgInput
+#*
+#* Funktion: Handle fuer Fx-Button Focus-Event.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+IMPL_LINK( ArgInput, EdModifyHdl,ArgEdit*, pEd )
+{
+ if(pEd==pEdArg) EdModify();
+
+ return 0;
+}
+
+/*************************************************************************
+#* Member: ScEditBox Datum:20.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScEditBox
+#*
+#* Funktion: Konstruktor der Klasse ArgInput
+#*
+#* Input: Parent, Window-Style
+#*
+#* Output: ---
+#*
+#************************************************************************/
+ScEditBox::ScEditBox( Window* pParent,WinBits nWinStyle)
+ :Control(pParent,nWinStyle|WB_DIALOGCONTROL)
+{
+ pMEdit=new MultiLineEdit(this,WB_LEFT | WB_VSCROLL | nWinStyle & WB_TABSTOP|
+ WB_NOBORDER | WB_NOHIDESELECTION |WB_IGNORETAB);
+
+ pMEdit->Show();
+ aOldSel=pMEdit->GetSelection();
+}
+
+/*************************************************************************
+#* Member: ScEditBox Datum:20.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScEditBox
+#*
+#* Funktion: Konstruktor der Klasse ArgInput
+#*
+#* Input: Parent, Resource
+#*
+#* Output: ---
+#*
+#************************************************************************/
+ScEditBox::ScEditBox( Window* pParent, const ResId& rResId )
+ :Control(pParent,rResId),
+ bMouseFlag(FALSE)
+{
+ WinBits nStyle=GetStyle();
+ SetStyle( nStyle| WB_DIALOGCONTROL);
+
+ pMEdit=new MultiLineEdit(this,WB_LEFT | WB_VSCROLL | nStyle & WB_TABSTOP|
+ WB_NOBORDER | WB_NOHIDESELECTION | WB_IGNORETAB);
+ pMEdit->Show();
+ aOldSel=pMEdit->GetSelection();
+ Resize();
+ WinBits nWinStyle=GetStyle() | WB_DIALOGCONTROL;
+ SetStyle(nWinStyle);
+}
+
+ScEditBox::~ScEditBox()
+{
+ MultiLineEdit* pTheEdit=pMEdit;
+ pMEdit->Disable();
+ pMEdit=NULL;
+ delete pTheEdit;
+}
+/*************************************************************************
+#* Member: ScEditBox Datum:20.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScEditBox
+#*
+#* Funktion: Wenn sich die Selektion geaendert hat, so wird
+#* diese Funktion aufgerufen.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ScEditBox::SelectionChanged()
+{
+ aSelChangedLink.Call(this);
+}
+
+/*************************************************************************
+#* Member: ScEditBox Datum:20.05.98
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScEditBox
+#*
+#* Funktion: Wenn sich die Groesse geaendert hat, so muss
+#* auch der MultiLineEdit angepasst werden..
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ScEditBox::Resize()
+{
+ Size aSize=GetOutputSizePixel();
+ if(pMEdit!=NULL) pMEdit->SetOutputSizePixel(aSize);
+}
+
+/*************************************************************************
+#* Member: GetFocus Datum:26.05.98
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScEditBox
+#*
+#* Funktion: Wenn der Control aktiviert wird, so wird
+#* die Selection aufgehoben und der Cursor ans
+#* Ende gesetzt.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ScEditBox::GetFocus()
+{
+ if(pMEdit!=NULL)
+ {
+ pMEdit->GrabFocus();
+ }
+}
+
+
+
+/*************************************************************************
+#* Member: ScEditBox Datum:20.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScEditBox
+#*
+#* Funktion: Wenn ein Event ausgeloest wird, so wird diese Routine
+#* zuerst aufgerufen und ein PostUserEvent verschickt.
+#*
+#* Input: Notify-Event
+#*
+#* Output: ---
+#*
+#************************************************************************/
+long ScEditBox::PreNotify( NotifyEvent& rNEvt )
+{
+ long nResult=TRUE;
+
+ if(pMEdit==NULL) return nResult;
+
+ USHORT nSwitch=rNEvt.GetType();
+ if(nSwitch==EVENT_KEYINPUT)// || nSwitch==EVENT_KEYUP)
+ {
+ const KeyCode& aKeyCode=rNEvt.GetKeyEvent()->GetKeyCode();
+ USHORT nKey=aKeyCode.GetCode();
+ if(nKey==KEY_RETURN && !aKeyCode.IsShift() || nKey==KEY_TAB)
+ {
+ nResult=GetParent()->Notify(rNEvt);
+ }
+ else
+ {
+ nResult=Control::PreNotify(rNEvt);
+ Application::PostUserEvent( LINK( this, ScEditBox, ChangedHdl ) );
+ }
+
+ }
+ else
+ {
+ nResult=Control::PreNotify(rNEvt);
+
+ if(nSwitch==EVENT_MOUSEBUTTONDOWN || nSwitch==EVENT_KEYINPUT)
+ {
+ bMouseFlag=TRUE;
+ Application::PostUserEvent( LINK( this, ScEditBox, ChangedHdl ) );
+ }
+ }
+ return nResult;
+}
+
+/*************************************************************************
+#* Member: ScEditBox Datum:21.01.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScEditBox
+#*
+#* Funktion: Wenn ein Event ausgeloest wurde, so wird diese Routine
+#* zuerst aufgerufen.
+#*
+#* Input: Key-Event
+#*
+#* Output: ---
+#*
+#************************************************************************/
+IMPL_LINK( ScEditBox, ChangedHdl, ScEditBox*, pEd )
+{
+ if(pMEdit!=NULL)
+ {
+ Selection aNewSel=pMEdit->GetSelection();
+
+ if(aNewSel.Min()!=aOldSel.Min() || aNewSel.Max()!=aOldSel.Max())
+ {
+ SelectionChanged();
+ aOldSel=aNewSel;
+ }
+ }
+ return 0;
+}
+
+
+
diff --git a/sc/source/ui/formdlg/makefile.mk b/sc/source/ui/formdlg/makefile.mk
new file mode 100644
index 000000000000..963606b781c3
--- /dev/null
+++ b/sc/source/ui/formdlg/makefile.mk
@@ -0,0 +1,112 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=formdlgs
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ funcutl.cxx \
+ parawin.cxx \
+ structpg.cxx \
+ funcpage.cxx \
+ formula.cxx \
+ formdata.cxx \
+ privsplt.cxx \
+ dwfunctr.cxx
+
+SLOFILES = \
+ $(SLO)$/funcutl.obj \
+ $(SLO)$/parawin.obj \
+ $(SLO)$/structpg.obj \
+ $(SLO)$/funcpage.obj \
+ $(SLO)$/formula.obj \
+ $(SLO)$/formdata.obj \
+ $(SLO)$/privsplt.obj \
+ $(SLO)$/dwfunctr.obj
+
+SRCFILES = \
+ parawin.src \
+ formdlgs.src \
+ dwfunctr.src
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/formdlg/parawin.cxx b/sc/source/ui/formdlg/parawin.cxx
new file mode 100644
index 000000000000..d07111ad1b85
--- /dev/null
+++ b/sc/source/ui/formdlg/parawin.cxx
@@ -0,0 +1,622 @@
+/*************************************************************************
+ *
+ * $RCSfile: parawin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/dispatch.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/objsh.hxx>
+#include <svtools/zforlist.hxx>
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+
+#include "parawin.hxx"
+#include "parawin.hrc"
+#include "formdata.hxx"
+#include "globstr.hrc"
+#include "scresid.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "scmod.hxx"
+#include "inputhdl.hxx"
+#include "tabvwsh.hxx"
+#include "appoptio.hxx"
+#include "compiler.hxx"
+
+//============================================================================
+
+ScParaWin::ScParaWin(ScAnyRefDlg* pParent,Point aPos):
+ TabPage (pParent,ScResId(RID_SCTAB_PARAMETER)),
+ aFtEditDesc ( this, ScResId( FT_EDITDESC ) ),
+ aFtArgName ( this, ScResId( FT_PARNAME ) ),
+ aFtArgDesc ( this, ScResId( FT_PARDESC ) ),
+
+ aBtnFx1 ( this, ScResId( BTN_FX1 ) ),
+ aFtArg1 ( this, ScResId( FT_ARG1 ) ),
+ aEdArg1 ( this, ScResId( ED_ARG1 ) ),
+ aRefBtn1 ( this, ScResId( RB_ARG1 ) ),
+ aBtnFx2 ( this, ScResId( BTN_FX2 ) ),
+ aFtArg2 ( this, ScResId( FT_ARG2 ) ),
+ aEdArg2 ( this, ScResId( ED_ARG2 ) ),
+ aRefBtn2 ( this, ScResId( RB_ARG2 ) ),
+ aBtnFx3 ( this, ScResId( BTN_FX3 ) ),
+ aFtArg3 ( this, ScResId( FT_ARG3 ) ),
+ aEdArg3 ( this, ScResId( ED_ARG3 ) ),
+ aRefBtn3 ( this, ScResId( RB_ARG3 ) ),
+ aBtnFx4 ( this, ScResId( BTN_FX4 ) ),
+ aFtArg4 ( this, ScResId( FT_ARG4 ) ),
+ aEdArg4 ( this, ScResId( ED_ARG4 ) ),
+ aRefBtn4 ( this, ScResId( RB_ARG4 ) ),
+ aSlider ( this, ScResId( WND_SLIDER ) ),
+ bRefMode (FALSE),
+ pFuncDesc ( NULL)
+{
+ FreeResource();
+ aDefaultString=aFtEditDesc.GetText();
+ pMyParent=pParent;
+ SetPosPixel(aPos);
+ nEdFocus=NOT_FOUND;
+ nActiveLine=0;
+ aSlider.SetEndScrollHdl( LINK( this, ScParaWin, ScrollHdl ) );
+ aSlider.SetScrollHdl( LINK( this, ScParaWin, ScrollHdl ) );
+
+ InitArgInput( 0, aFtArg1, aBtnFx1, aEdArg1, aRefBtn1);
+ InitArgInput( 1, aFtArg2, aBtnFx2, aEdArg2, aRefBtn2);
+ InitArgInput( 2, aFtArg3, aBtnFx3, aEdArg3, aRefBtn3);
+ InitArgInput( 3, aFtArg4, aBtnFx4, aEdArg4, aRefBtn4);
+ ClearAll();
+}
+
+void ScParaWin::UpdateArgDesc( USHORT nArg )
+{
+ if (nArg==NOT_FOUND) return;
+
+ if ( nArgs > 4 )
+ nArg += GetSliderPos();
+ //@ nArg += (USHORT)aSlider.GetThumbPos();
+
+ if ( (nArgs > 0) && (nArg<nArgs) )
+ {
+ String aArgDesc;
+ String aArgName;
+
+ SetArgumentDesc( EMPTY_STRING );
+ SetArgumentText( EMPTY_STRING );
+
+ if ( nArgs < VAR_ARGS )
+ {
+ aArgDesc = *(pFuncDesc->aDefArgDescs[nArg]);
+ aArgName = *(pFuncDesc->aDefArgNames[nArg]);
+ aArgName += ScGlobal::GetRscString( (pFuncDesc->aDefArgOpt[nArg]) ?
+ STR_OPTIONAL : STR_REQUIRED );
+ }
+ else
+ {
+ USHORT nFix = nArgs - VAR_ARGS;
+ USHORT nPos = ( nArg < nFix ? nArg : nFix );
+ aArgDesc = *(pFuncDesc->aDefArgDescs[nPos]);
+ aArgName = *(pFuncDesc->aDefArgNames[nPos]);
+ if ( nArg >= nFix )
+ aArgName += String::CreateFromInt32(nArg-nFix+1);
+ aArgName += ScGlobal::GetRscString(
+ (nArg > nFix || pFuncDesc->aDefArgOpt[nPos]) ?
+ STR_OPTIONAL : STR_REQUIRED );
+ }
+
+ SetArgumentDesc(aArgDesc);
+ SetArgumentText(aArgName);
+ }
+}
+
+void ScParaWin::UpdateArgInput( USHORT nOffset, USHORT i )
+{
+ USHORT nArg = nOffset + i;
+ if ( nArgs < VAR_ARGS)
+ {
+ if(nArg<nArgs)
+ {
+ SetArgNameFont (i,(pFuncDesc->aDefArgOpt[nArg])
+ ? aFntLight : aFntBold );
+ SetArgName (i,*(pFuncDesc->aDefArgNames[nArg]));
+ }
+ }
+ else
+ {
+ USHORT nFix = nArgs - VAR_ARGS;
+ USHORT nPos = ( nArg < nFix ? nArg : nFix );
+ SetArgNameFont( i, (nArg > nFix || pFuncDesc->aDefArgOpt[nPos]) ?
+ aFntLight : aFntBold );
+ if ( nArg >= nFix )
+ {
+ String aArgName( *(pFuncDesc->aDefArgNames[nPos]) );
+ aArgName += String::CreateFromInt32(nArg-nFix+1);
+ SetArgName( i, aArgName );
+ }
+ else
+ SetArgName( i, *(pFuncDesc->aDefArgNames[nPos]) );
+ }
+ if(nArg<nArgs) SetArgVal(i,*(aParaArray[nArg]));
+ //@ aArgInput[i].SetArgVal( *(pArgArr[nOffset+i]) );
+
+}
+
+ScParaWin::~ScParaWin()
+{
+ DelParaArray();
+}
+
+USHORT ScParaWin::GetActiveLine()
+{
+ return nActiveLine;
+}
+
+void ScParaWin::SetActiveLine(USHORT no)
+{
+ if(no<nArgs)
+ {
+ long nOffset = GetSliderPos();
+ nActiveLine=no;
+ long nNewEdPos=(long)nActiveLine-nOffset;
+ if(nNewEdPos<0 || nNewEdPos>3)
+ {
+ nOffset+=nNewEdPos;
+ SetSliderPos((USHORT) nOffset);
+ nOffset=GetSliderPos();
+ }
+ nEdFocus=no-(USHORT)nOffset;
+ UpdateArgDesc( nEdFocus );
+ }
+}
+
+ScRefEdit* ScParaWin::GetActiveEdit()
+{
+ if(nArgs>0 && nEdFocus!=NOT_FOUND)
+ {
+ return aArgInput[nEdFocus].GetArgEdPtr();
+ }
+ else
+ {
+ return NULL;
+ }
+}
+
+
+String ScParaWin::GetArgument(USHORT no)
+{
+ String aStr;
+ if(no<aParaArray.Count())
+ {
+ aStr=*aParaArray[no];
+ if(no==nActiveLine && aStr.Len()==0)
+ aStr+=' ';
+ }
+ return aStr;
+}
+
+String ScParaWin::GetActiveArgName()
+{
+ String aStr;
+ if(nArgs>0 && nEdFocus!=NOT_FOUND)
+ {
+ aStr=aArgInput[nEdFocus].GetArgName();
+ }
+ return aStr;
+}
+
+
+void ScParaWin::SetArgument(USHORT no, const String& aString)
+{
+ if(no<aParaArray.Count())
+ {
+ *aParaArray[no]=aString;
+ aParaArray[no]->EraseLeadingChars();
+ }
+}
+
+void ScParaWin::DelParaArray()
+{
+ for(int i=0;i<aParaArray.Count();i++)
+ {
+ String* pStr=aParaArray[i];
+ delete pStr;
+ }
+ aParaArray.Remove(0,aParaArray.Count());
+
+}
+
+void ScParaWin::SetArgumentFonts(const Font&aBoldFont,const Font&aLightFont)
+{
+ aFntBold=aBoldFont;
+ aFntLight=aLightFont;
+}
+
+void ScParaWin::SetFunctionDesc(ScFuncDesc* pFDesc)
+{
+ pFuncDesc=pFDesc;
+
+ SetArgumentDesc( EMPTY_STRING );
+ SetArgumentText( EMPTY_STRING );
+ SetEditDesc( EMPTY_STRING );
+ nArgs=0;
+ if ( pFuncDesc!=NULL)
+ {
+ if(pFuncDesc->pFuncDesc != NULL)
+ {
+ SetEditDesc(*(pFuncDesc->pFuncDesc));
+ }
+ else
+ {
+ SetEditDesc(aDefaultString);
+ }
+ long nHelpId = pFuncDesc->nHelpId;
+ nArgs=pFuncDesc->nArgCount;
+ aSlider.Hide();
+ SetHelpId( nHelpId );
+ aEdArg1.SetHelpId( nHelpId );
+ aEdArg2.SetHelpId( nHelpId );
+ aEdArg3.SetHelpId( nHelpId );
+ aEdArg4.SetHelpId( nHelpId );
+
+ // Unique-IDs muessen gleich bleiben fuer Automatisierung
+ SetUniqueId( HID_SC_FAP_PAGE );
+ aEdArg1.SetUniqueId( HID_SC_FAP_EDIT1 );
+ aEdArg2.SetUniqueId( HID_SC_FAP_EDIT2 );
+ aEdArg3.SetUniqueId( HID_SC_FAP_EDIT3 );
+ aEdArg4.SetUniqueId( HID_SC_FAP_EDIT4 );
+ SetActiveLine(0);
+ }
+ else
+ {
+ nActiveLine=0;
+ }
+
+}
+
+void ScParaWin::SetArgumentText(const String& aText)
+{
+ aFtArgName.SetText(aText);
+}
+
+void ScParaWin::SetArgumentDesc(const String& aText)
+{
+ aFtArgDesc.SetText(aText);
+}
+
+void ScParaWin::SetEditDesc(const String& aText)
+{
+ aFtEditDesc.SetText(aText);
+}
+
+void ScParaWin::SetArgName(USHORT no,const String& aText)
+{
+ aArgInput[no].SetArgName(aText);
+}
+
+void ScParaWin::SetArgNameFont(USHORT no,const Font& aFont)
+{
+ aArgInput[no].SetArgNameFont(aFont);
+}
+
+void ScParaWin::SetArgVal(USHORT no,const String& aText)
+{
+ aArgInput[no].SetArgVal(aText);
+}
+
+void ScParaWin::HideParaLine(USHORT no)
+{
+ aArgInput[no].Hide();
+}
+
+void ScParaWin::ShowParaLine(USHORT no)
+{
+ aArgInput[no].Show();
+}
+
+void ScParaWin::SetEdFocus(USHORT no)
+{
+ UpdateArgDesc(no);
+ if(no<4 && no<aParaArray.Count())
+ aArgInput[no].GetArgEdPtr()->GrabFocus();
+}
+
+
+void ScParaWin::InitArgInput( USHORT nPos, FixedText& rFtArg, ImageButton& rBtnFx,
+ ArgEdit& rEdArg, ScRefButton& rRefBtn)
+{
+
+ rRefBtn.SetReferences(pMyParent,&rEdArg);
+ rEdArg.SetRefDialog(pMyParent);
+
+ aArgInput[nPos].InitArgInput (&rFtArg,&rBtnFx,&rEdArg,&rRefBtn);
+
+ aArgInput[nPos].Hide();
+
+ aArgInput[nPos].SetFxClickHdl ( LINK( this, ScParaWin, GetFxHdl ) );
+ aArgInput[nPos].SetFxFocusHdl ( LINK( this, ScParaWin, GetFxFocusHdl ) );
+ aArgInput[nPos].SetEdFocusHdl ( LINK( this, ScParaWin, GetEdFocusHdl ) );
+ aArgInput[nPos].SetEdModifyHdl ( LINK( this, ScParaWin, ModifyHdl ) );
+}
+
+void ScParaWin::ClearAll()
+{
+ SetFunctionDesc(NULL);
+ SetArgCount(0,0);
+}
+
+void ScParaWin::SetArgCount(USHORT Count, USHORT nOffset)
+{
+ DelParaArray();
+ aSlider.SetThumbPos(0);
+ nArgs=Count;
+ int i;
+ for(i=0;i<nArgs;i++)
+ aParaArray.Insert( new String, aParaArray.Count() );
+
+ if ( nArgs > 0 )
+ {
+ for ( i=0; i<4 && i<nArgs; i++ )
+ {
+ String aString;
+ aArgInput[i].SetArgVal(aString);
+ aArgInput[i].GetArgEdPtr()->Init(
+ (i==0) ? (ArgEdit *)NULL : aArgInput[i-1].GetArgEdPtr(),
+ (i==3 || i==nArgs-1) ? (ArgEdit *)NULL : aArgInput[i+1].GetArgEdPtr(),
+ aSlider, nArgs );
+ }
+ }
+
+ if ( nArgs < 5 )
+ {
+ aSlider.Hide();
+ }
+ else
+ {
+ //aSlider.SetEndScrollHdl( LINK( this, ScFormulaDlg, ScrollHdl ) );
+ aSlider.SetPageSize( 4 );
+ aSlider.SetVisibleSize( 4 );
+ aSlider.SetLineSize( 1 );
+ aSlider.SetRange( Range( 0, nArgs ) );
+ aSlider.SetThumbPos( nOffset );
+ aSlider.Show();
+ }
+
+ UpdateParas();
+}
+
+void ScParaWin::UpdateParas()
+{
+ USHORT i;
+ USHORT nOffset = GetSliderPos();
+
+ if ( nArgs > 0 )
+ {
+ for ( i=0; (i<nArgs) && (i<4); i++ )
+ {
+ UpdateArgInput( nOffset, i );
+ ShowParaLine(i);
+ }
+ }
+
+ for ( i=nArgs; i<4; i++ ) HideParaLine(i);
+}
+
+
+USHORT ScParaWin::GetSliderPos()
+{
+ return (USHORT) aSlider.GetThumbPos();
+}
+
+void ScParaWin::SetSliderPos(USHORT nSliderPos)
+{
+ USHORT nOffset = GetSliderPos();
+
+ if(aSlider.IsVisible() && nOffset!=nSliderPos)
+ {
+ aSlider.SetThumbPos(nSliderPos);
+ for ( int i=0; i<4; i++ )
+ {
+ UpdateArgInput( nSliderPos, i );
+ }
+ }
+}
+
+void ScParaWin::SliderMoved()
+{
+ USHORT nOffset = GetSliderPos();
+
+ for ( int i=0; i<4; i++ )
+ {
+ UpdateArgInput( nOffset, i );
+ }
+ if(nEdFocus!=NOT_FOUND)
+ {
+ UpdateArgDesc( nEdFocus );
+ aArgInput[nEdFocus].SetArgSelection(Selection(0,SELECTION_MAX ));
+ nActiveLine=nEdFocus+nOffset;
+ ArgumentModified();
+ }
+ aScrollLink.Call(this);
+}
+
+void ScParaWin::ArgumentModified()
+{
+ aArgModifiedLink.Call(this);
+}
+
+void ScParaWin::FxClick()
+{
+ aFxLink.Call(this);
+}
+
+
+IMPL_LINK( ScParaWin, GetFxHdl, ArgInput*, pPtr )
+{
+ USHORT nOffset = GetSliderPos();
+ nEdFocus=NOT_FOUND;
+ for ( USHORT nPos=0; nPos<5;nPos++)
+ {
+ if(pPtr == &aArgInput[nPos])
+ {
+ nEdFocus=nPos;
+ break;
+ }
+ }
+
+ if(nEdFocus!=NOT_FOUND)
+ {
+ aArgInput[nEdFocus].SetArgSelection(Selection(0,SELECTION_MAX ));
+ nActiveLine=nEdFocus+nOffset;
+ FxClick();
+ }
+ return 0;
+}
+
+IMPL_LINK( ScParaWin, GetFxFocusHdl, ArgInput*, pPtr )
+{
+ USHORT nOffset = GetSliderPos();
+ nEdFocus=NOT_FOUND;
+ for ( USHORT nPos=0; nPos<5;nPos++)
+ {
+ if(pPtr == &aArgInput[nPos])
+ {
+ nEdFocus=nPos;
+ break;
+ }
+ }
+
+ if(nEdFocus!=NOT_FOUND)
+ {
+ aArgInput[nEdFocus].SetArgSelection(Selection(0,SELECTION_MAX ));
+ UpdateArgDesc( nEdFocus );
+ nActiveLine=nEdFocus+nOffset;
+ }
+ return 0;
+}
+
+
+
+IMPL_LINK( ScParaWin, GetEdFocusHdl, ArgInput*, pPtr )
+{
+ USHORT nOffset = GetSliderPos();
+ nEdFocus=NOT_FOUND;
+ for ( USHORT nPos=0; nPos<5;nPos++)
+ {
+ if(pPtr == &aArgInput[nPos])
+ {
+ nEdFocus=nPos;
+ break;
+ }
+ }
+
+ if(nEdFocus!=NOT_FOUND)
+ {
+ aArgInput[nEdFocus].SetArgSelection(Selection(0,SELECTION_MAX ));
+ UpdateArgDesc( nEdFocus );
+ nActiveLine=nEdFocus+nOffset;
+ ArgumentModified();
+ }
+
+ return 0;
+}
+
+
+IMPL_LINK( ScParaWin, ScrollHdl, ScrollBar*, pBar )
+{
+ SliderMoved();
+
+ return 0;
+}
+
+IMPL_LINK( ScParaWin, ModifyHdl, ArgInput*, pPtr )
+{
+ USHORT nOffset = GetSliderPos();
+ nEdFocus=NOT_FOUND;
+ for ( USHORT nPos=0; nPos<5;nPos++)
+ {
+ if(pPtr == &aArgInput[nPos])
+ {
+ nEdFocus=nPos;
+ break;
+ }
+ }
+ if(nEdFocus!=NOT_FOUND)
+ {
+ *(aParaArray[nEdFocus+nOffset])=aArgInput[nEdFocus].GetArgVal();
+ UpdateArgDesc( nEdFocus);
+ nActiveLine=nEdFocus+nOffset;
+ }
+
+ ArgumentModified();
+ return 0;
+}
+
+
+
diff --git a/sc/source/ui/formdlg/parawin.hrc b/sc/source/ui/formdlg/parawin.hrc
new file mode 100644
index 000000000000..5c7da9c12b65
--- /dev/null
+++ b/sc/source/ui/formdlg/parawin.hrc
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: parawin.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // -> RID_SCTAB_PARAMETER
+
+// #define RID_SCTAB_PARAMETER 256
+
+#define FT_PARNAME 1
+#define FT_PARDESC 2
+#define FT_EDITDESC 3
+#define FT_ARG1 4
+#define FT_ARG2 5
+#define FT_ARG3 6
+#define FT_ARG4 7
+#define BTN_FX1 8
+#define BTN_FX2 9
+#define BTN_FX3 10
+#define BTN_FX4 11
+#define ED_ARG1 12
+#define ED_ARG2 13
+#define ED_ARG3 14
+#define ED_ARG4 15
+#define RB_ARG1 16
+#define RB_ARG2 17
+#define RB_ARG3 18
+#define RB_ARG4 19
+#define WND_SLIDER 20
+
diff --git a/sc/source/ui/formdlg/parawin.src b/sc/source/ui/formdlg/parawin.src
new file mode 100644
index 000000000000..3b5638c5632e
--- /dev/null
+++ b/sc/source/ui/formdlg/parawin.src
@@ -0,0 +1,244 @@
+/*************************************************************************
+ *
+ * $RCSfile: parawin.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+ //============================================================================
+ // StarView Resource file for StarCalc Para- Window
+ //
+ // (C) 1994-98 StarDivision GmbH, Hamburg, Germany
+ //
+ // $Workfile: parawin.src $
+ // $Author: hr $
+ // $Date: 2000-09-18 16:44:57 $
+ // $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/source/ui/formdlg/parawin.srv $
+ //----------------------------------------------------------------------------
+
+
+
+#include "parawin.hrc"
+
+ //---------------------------------------------------------------------------
+
+#define FT_ARGBLOCK( y ) \
+ Pos = MAP_APPFONT (6 , y ) ; \
+ Size = MAP_APPFONT ( 74 , 10 ) ; \
+ Right = TRUE ;
+
+#define FXBUTTONBLOCK( y ) \
+ Pos = MAP_APPFONT (83 , y ) ; \
+ Size = MAP_APPFONT ( 12 , 12 ) ; \
+ TabStop = TRUE ; \
+ ButtonImage = Image\
+ {\
+ ImageBitmap = Bitmap\
+ {\
+ File = "fx.bmp" ; \
+ };\
+ MaskColor = Color\
+ {\
+ Red = 0xC000 ; \
+ Green = 0xC000 ; \
+ Blue = 0xC000 ; \
+ };\
+ };
+
+#define ED_ARGBLOCK( y ) \
+ Border = TRUE; \
+ Pos = MAP_APPFONT( 98, y ); \
+ Size = MAP_APPFONT( 66, 12 ); \
+ TabStop = TRUE;
+
+#define RB_ARGBLOCK( y ) \
+ QuickHelpText = "Verkleinern" ; \
+ QuickHelpText [ ENGLISH ] = "Shrink" ; \
+ Pos = MAP_APPFONT ( 166 , y ) ; \
+ Size = MAP_APPFONT ( 12 , 12 ) ; \
+ TabStop = FALSE ; \
+ QuickHelpText[ english_us ] = "Shrink"; \
+ QuickHelpText[ portuguese ] = "Shrink"; \
+ QuickHelpText[ russian ] = "Óìåíüøèòü"; \
+ QuickHelpText[ dutch ] = "Verkleinen"; \
+ QuickHelpText[ french ] = "Réduire"; \
+ QuickHelpText[ spanish ] = "Reducir"; \
+ QuickHelpText[ italian ] = "Zoom indietro"; \
+ QuickHelpText[ danish ] = "Formindsk"; \
+ QuickHelpText[ swedish ] = "Förminska"; \
+ QuickHelpText[ polish ] = "Pomniejsz"; \
+ QuickHelpText[ portuguese_brazilian ] = "Shrink"; \
+ QuickHelpText[ japanese ] = "k¬"; \
+ QuickHelpText[ chinese_simplified ] = "ËõС"; \
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p"; \
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ"; \
+ QuickHelpText[ greek ] = "Óìßêñõíóç"; \
+ QuickHelpText[ korean ] = "Shrink"; \
+ QuickHelpText[ language_user1 ] = " ";
+
+ //---------------------------------------------------------------------------
+
+ // jetzt alles zusammen
+
+TabPage RID_SCTAB_PARAMETER
+{
+ Border = FALSE;
+ Size = MAP_APPFONT( 203, 128 );
+ DialogControl = TRUE;
+ SVLook = TRUE;
+
+ FixedText FT_EDITDESC
+ {
+ Pos = MAP_APPFONT (3 , 6 ) ;
+ Size = MAP_APPFONT ( 198 , 20 ) ;
+ WordBreak = TRUE ;
+ Text = "Unbekannte Funktion" ;
+ Text [ ENGLISH ] = "Unknown function." ;
+ Text[ english_us ] = "Function not known";
+ Text[ portuguese ] = "Função desconhecida";
+ Text[ russian ] = "Íåèçâåñòíàÿ ôóíêöèÿ";
+ Text[ greek ] = "¢ãíùóôç óõíÜñôçóç";
+ Text[ dutch ] = "Onbekende functie";
+ Text[ french ] = "Fonction inconnue";
+ Text[ spanish ] = "Función desconocida";
+ Text[ italian ] = "Funzione sconosciuta";
+ Text[ danish ] = "Ukendt funktion";
+ Text[ swedish ] = "Okänd funktion";
+ Text[ polish ] = "Nieznana funkcja.";
+ Text[ portuguese_brazilian ] = "Unknown function.";
+ Text[ japanese ] = "•s–¾‚ÈŠÖ”";
+ Text[ korean ] = "¾Ë¼ö ¾ø´Â ÇÔ¼ö";
+ Text[ chinese_simplified ] = "²»Ã÷µÄº¯Êý";
+ Text[ chinese_traditional ] = "¤£©úªº¨ç¼Æ";
+ Text[ arabic ] = "ÏÇáÉ ÛíÑ ãÚÑæÝÉ";
+ Text[ turkish ] = "Bilinmeyen iþlev";
+ };
+
+ FixedText FT_PARNAME
+ {
+ Pos = MAP_APPFONT ( 3, 29) ;
+ Size = MAP_APPFONT ( 198 , 10 ) ;
+ };
+ FixedText FT_PARDESC
+ {
+ Pos = MAP_APPFONT ( 3, 42 ) ;
+ Size = MAP_APPFONT ( 198 , 20 ) ;
+ WordBreak = TRUE ;
+ };
+
+ FixedText FT_ARG1 { FT_ARGBLOCK ( 66 ) };
+ FixedText FT_ARG2 { FT_ARGBLOCK ( 81 ) };
+ FixedText FT_ARG3 { FT_ARGBLOCK ( 96 ) };
+ FixedText FT_ARG4 { FT_ARGBLOCK ( 111 ) };
+
+ ImageButton BTN_FX1
+ {
+ HelpId=HID_SC_FAP_BTN_FX1;
+ FXBUTTONBLOCK ( 64 )
+ };
+ ImageButton BTN_FX2
+ {
+ HelpId=HID_SC_FAP_BTN_FX2;
+ FXBUTTONBLOCK ( 79 )
+ };
+
+ ImageButton BTN_FX3
+ {
+ HelpId=HID_SC_FAP_BTN_FX3;
+ FXBUTTONBLOCK ( 94 )
+ };
+ ImageButton BTN_FX4
+ {
+ HelpId=HID_SC_FAP_BTN_FX4;
+ FXBUTTONBLOCK ( 109 )
+ };
+ Edit ED_ARG1 { ED_ARGBLOCK ( 64 ) };
+ Edit ED_ARG2 { ED_ARGBLOCK ( 79 ) };
+ Edit ED_ARG3 { ED_ARGBLOCK ( 94 ) };
+ Edit ED_ARG4 { ED_ARGBLOCK ( 109 ) };
+
+ ImageButton RB_ARG1
+ {
+ HelpId=HID_SC_FAP_BTN_REF1;
+ RB_ARGBLOCK ( 64 )
+ };
+
+ ImageButton RB_ARG2
+ {
+ HelpId=HID_SC_FAP_BTN_REF2;
+ RB_ARGBLOCK ( 79 )
+ };
+ ImageButton RB_ARG3
+ {
+ HelpId=HID_SC_FAP_BTN_REF3;
+ RB_ARGBLOCK ( 94 )
+ };
+ ImageButton RB_ARG4
+ {
+ HelpId=HID_SC_FAP_BTN_REF4;
+ RB_ARGBLOCK ( 109 )
+ };
+
+ ScrollBar WND_SLIDER
+ {
+ Pos = MAP_APPFONT ( 183, 63 ) ;
+ Size = MAP_APPFONT ( 10 , 59 ) ;
+ VScroll = TRUE ;
+ };
+};
+
+
diff --git a/sc/source/ui/formdlg/privsplt.cxx b/sc/source/ui/formdlg/privsplt.cxx
new file mode 100644
index 000000000000..b0fdb815faf0
--- /dev/null
+++ b/sc/source/ui/formdlg/privsplt.cxx
@@ -0,0 +1,475 @@
+/*************************************************************************
+ *
+ * $RCSfile: privsplt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "privsplt.hxx"
+
+/*************************************************************************
+#* Member: ScPrivatSplit Datum:13.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: MD_Test
+#*
+#* Funktion: Konstruktor der Klasse ScPrivatSplit
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+ScPrivatSplit::ScPrivatSplit( Window* pParent, const ResId& rResId,
+ SC_SPLIT_DIRECTION eSplit):
+ Control( pParent, rResId )
+{
+ Point aPos=GetPosPixel();
+ nOldX=(short)aPos.X();
+ nOldY=(short)aPos.Y();
+ nNewX=(short)aPos.X();
+ nNewY=(short)aPos.Y();
+ eScSplit=eSplit;
+ aXMovingRange.Min()=nNewX;
+ aXMovingRange.Max()=nNewX;
+ aYMovingRange.Min()=nNewY;
+ aYMovingRange.Max()=nNewY;
+
+ aWinPointer=GetPointer();
+
+ aMovingFlag=FALSE;
+ if(eScSplit==SC_SPLIT_HORZ)
+ {
+ aWinPointer=Pointer(POINTER_HSPLIT);
+ }
+ else
+ {
+ aWinPointer=Pointer(POINTER_VSPLIT);
+ }
+ SetPointer(aWinPointer);
+}
+
+
+/*************************************************************************
+#* Member: MouseButtonDown Datum:13.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScPrivatSplit
+#*
+#* Funktion: Reagiert auf einen einzelnen Mouse-Event. Nach Aufruf
+#* werden alle Mauseingaben an dieses Control weitergeleitet.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScPrivatSplit::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ Point aPos=LogicToPixel(rMEvt.GetPosPixel());
+
+ nOldX=(short)aPos.X();
+ nOldY=(short)aPos.Y();
+
+ CaptureMouse();
+}
+
+/*************************************************************************
+#* Member: MouseButtonUp Datum:13.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScPrivatSplit
+#*
+#* Funktion: Ende einer Benutzeraktion mit der Maus. Es werden
+#* die aktuelle Maus- Koordinaten ermittelt und fuer
+#* die Verschiebung des Fensters verwendet.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScPrivatSplit::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ ReleaseMouse();
+
+ Point aPos=LogicToPixel(rMEvt.GetPosPixel());
+ Point a2Pos=GetPosPixel();
+ Point a3Pos=a2Pos;
+
+ if(eScSplit==SC_SPLIT_HORZ)
+ {
+ nNewX=(short)aPos.X();
+ nDeltaX=nNewX-nOldX;
+ a2Pos.X()+=nDeltaX;
+ if(a2Pos.X()<aXMovingRange.Min())
+ {
+ nDeltaX=(short)(aXMovingRange.Min()-a3Pos.X());
+ a2Pos.X()=aXMovingRange.Min();
+ }
+ else if(a2Pos.X()>aXMovingRange.Max())
+ {
+ nDeltaX=(short)(aXMovingRange.Max()-a3Pos.X());
+ a2Pos.X()=aXMovingRange.Max();
+ }
+ }
+ else
+ {
+ nNewY=(short)aPos.Y();
+ nDeltaY=nNewY-nOldY;
+ a2Pos.Y()+=nDeltaY;
+ if(a2Pos.Y()<aYMovingRange.Min())
+ {
+ nDeltaY=(short)(aYMovingRange.Min()-a3Pos.Y());
+ a2Pos.Y()=aYMovingRange.Min();
+ }
+ else if(a2Pos.Y()>aYMovingRange.Max())
+ {
+ nDeltaY=(short)(aYMovingRange.Max()-a3Pos.Y());
+ a2Pos.Y()=aYMovingRange.Max();
+ }
+ }
+ SetPosPixel(a2Pos);
+ Invalidate();
+ Update();
+ CtrModified();
+}
+
+/*************************************************************************
+#* Member: MouseMove Datum:13.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScPrivatSplit
+#*
+#* Funktion: Reagiert kontinuierlich auf Mausbewegungen. Es werden
+#* die aktuelle Maus- Koordinaten ermittelt und fuer
+#* die Verschiebung des Fensters verwendet.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScPrivatSplit::MouseMove( const MouseEvent& rMEvt )
+{
+ Point aPos=LogicToPixel(rMEvt.GetPosPixel());
+ Point a2Pos=GetPosPixel();
+ Point a3Pos=a2Pos;
+ if(rMEvt.IsLeft())
+ {
+ if(eScSplit==SC_SPLIT_HORZ)
+ {
+ nNewX=(short)aPos.X();
+ nDeltaX=nNewX-nOldX;
+ a2Pos.X()+=nDeltaX;
+
+ if(a2Pos.X()<aXMovingRange.Min())
+ {
+ nDeltaX=(short)(aXMovingRange.Min()-a3Pos.X());
+ a2Pos.X()=aXMovingRange.Min();
+ }
+ else if(a2Pos.X()>aXMovingRange.Max())
+ {
+ nDeltaX=(short)(aXMovingRange.Max()-a3Pos.X());
+ a2Pos.X()=aXMovingRange.Max();
+ }
+ }
+ else
+ {
+ nNewY=(short)aPos.Y();
+ nDeltaY=nNewY-nOldY;
+ a2Pos.Y()+=nDeltaY;
+ if(a2Pos.Y()<aYMovingRange.Min())
+ {
+ nDeltaY=(short)(aYMovingRange.Min()-a3Pos.Y());
+ a2Pos.Y()=aYMovingRange.Min();
+ }
+ else if(a2Pos.Y()>aYMovingRange.Max())
+ {
+ nDeltaY=(short)(aYMovingRange.Max()-a3Pos.Y());
+ a2Pos.Y()=aYMovingRange.Max();
+ }
+ }
+
+ SetPosPixel(a2Pos);
+
+ CtrModified();
+ Invalidate();
+ Update();
+ }
+}
+
+/*************************************************************************
+#* Member: SetXRange Datum:14.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScPrivatSplit
+#*
+#* Funktion: Setzt den Range fuer die X- Verschiebung
+#*
+#* Input: neuer Bereich
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ScPrivatSplit::SetXRange(Range cRgeX)
+{
+ aXMovingRange=cRgeX;
+}
+
+/*************************************************************************
+#* Member: SetYRange Datum:14.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScPrivatSplit
+#*
+#* Funktion: Setzt den Range fuer die Y- Verschiebung
+#*
+#* Input: neuer Bereich
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ScPrivatSplit::SetYRange(Range cRgeY)
+{
+ aYMovingRange=cRgeY;
+}
+
+
+
+/*************************************************************************
+#* Member: GetDeltaY Datum:13.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScPrivatSplit
+#*
+#* Funktion: Liefert die relative x-Verschiebung zurueck
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+short ScPrivatSplit::GetDeltaX()
+{
+ return nDeltaX;
+}
+
+/*************************************************************************
+#* Member: GetDeltaY Datum:13.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScPrivatSplit
+#*
+#* Funktion: Liefert die relative y-Verschiebung zurueck
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+short ScPrivatSplit::GetDeltaY()
+{
+ return nDeltaY;
+}
+
+/*************************************************************************
+#* Member: CtrModified Datum:13.10.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScPrivatSplit
+#*
+#* Funktion: Teilt einem installierten Handler mit, dass
+#* eine Veraenderung eingetreten ist.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+void ScPrivatSplit::CtrModified()
+{
+ aCtrModifiedLink.Call( this );
+}
+
+void ScPrivatSplit::MoveSplitTo(Point aPos)
+{
+ Point a2Pos=GetPosPixel();
+ nOldX=(short)a2Pos.X();
+ nOldY=(short)a2Pos.Y();
+ Point a3Pos=a2Pos;
+
+ if(eScSplit==SC_SPLIT_HORZ)
+ {
+ nNewX=(short)aPos.X();
+ nDeltaX=nNewX-nOldX;
+ a2Pos.X()+=nDeltaX;
+ if(a2Pos.X()<aXMovingRange.Min())
+ {
+ nDeltaX=(short)(aXMovingRange.Min()-a3Pos.X());
+ a2Pos.X()=aXMovingRange.Min();
+ }
+ else if(a2Pos.X()>aXMovingRange.Max())
+ {
+ nDeltaX=(short)(aXMovingRange.Max()-a3Pos.X());
+ a2Pos.X()=aXMovingRange.Max();
+ }
+ }
+ else
+ {
+ nNewY=(short)aPos.Y();
+ nDeltaY=nNewY-nOldY;
+ a2Pos.Y()+=nDeltaY;
+ if(a2Pos.Y()<aYMovingRange.Min())
+ {
+ nDeltaY=(short)(aYMovingRange.Min()-a3Pos.Y());
+ a2Pos.Y()=aYMovingRange.Min();
+ }
+ else if(a2Pos.Y()>aYMovingRange.Max())
+ {
+ nDeltaY=(short)(aYMovingRange.Max()-a3Pos.Y());
+ a2Pos.Y()=aYMovingRange.Max();
+ }
+ }
+ SetPosPixel(a2Pos);
+ Invalidate();
+ Update();
+ CtrModified();
+}
+
+
+void ScPrivatSplit::ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground )
+{
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+
+ if ( bFont )
+ {
+ Font aFont = rStyleSettings.GetAppFont();
+ if ( IsControlFont() )
+ aFont.Merge( GetControlFont() );
+ SetFont( aFont );
+ }
+
+ if ( bFont || bForeground )
+ {
+ Color aTextColor = rStyleSettings.GetButtonTextColor();
+ if ( IsControlForeground() )
+ aTextColor = GetControlForeground();
+ SetTextColor( aTextColor );
+ }
+
+ if ( bBackground )
+ {
+ SetBackground( rStyleSettings.GetFaceColor());
+ }
+ if ( IsBackground() )
+ {
+ SetFillColor( GetBackground().GetColor() );
+ SetBackground();
+ }
+ Invalidate();
+}
+
+// -----------------------------------------------------------------------
+
+void ScPrivatSplit::StateChanged( StateChangedType nType )
+{
+ if ( (nType == STATE_CHANGE_ZOOM) ||
+ (nType == STATE_CHANGE_CONTROLFONT) )
+ {
+ ImplInitSettings( TRUE, FALSE, FALSE );
+ Invalidate();
+ }
+ if ( nType == STATE_CHANGE_CONTROLFOREGROUND )
+ {
+ ImplInitSettings( FALSE, TRUE, FALSE );
+ Invalidate();
+ }
+ else if ( nType == STATE_CHANGE_CONTROLBACKGROUND )
+ {
+ ImplInitSettings( FALSE, FALSE, TRUE );
+ Invalidate();
+ }
+
+ Control::StateChanged( nType );
+}
+
+// -----------------------------------------------------------------------
+
+void ScPrivatSplit::DataChanged( const DataChangedEvent& rDCEvt )
+{
+ if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
+ (rDCEvt.GetFlags() & SETTINGS_STYLE) )
+ {
+ ImplInitSettings( TRUE, TRUE, TRUE );
+ Invalidate();
+ }
+ else
+ Window::DataChanged( rDCEvt );
+}
+
+
diff --git a/sc/source/ui/formdlg/structpg.cxx b/sc/source/ui/formdlg/structpg.cxx
new file mode 100644
index 000000000000..9fd422215869
--- /dev/null
+++ b/sc/source/ui/formdlg/structpg.cxx
@@ -0,0 +1,275 @@
+/*************************************************************************
+ *
+ * $RCSfile: structpg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/dispatch.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/objsh.hxx>
+#include <svtools/zforlist.hxx>
+
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+
+#include "structpg.hxx"
+#include "formdlgs.hrc"
+#include "formdata.hxx"
+#include "globstr.hrc"
+#include "scresid.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "scmod.hxx"
+#include "inputhdl.hxx"
+#include "tabvwsh.hxx"
+#include "appoptio.hxx"
+
+//----------------------------------------------------------------------------
+
+ScStructListBox::ScStructListBox(Window* pParent, const ResId& rResId ):
+ SvTreeListBox(pParent,rResId )
+{
+ bActiveFlag=FALSE;
+}
+
+void ScStructListBox::SetActiveFlag(BOOL bFlag)
+{
+ bActiveFlag=bFlag;
+}
+
+BOOL ScStructListBox::GetActiveFlag()
+{
+ return bActiveFlag;
+}
+
+void ScStructListBox::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ bActiveFlag=TRUE;
+ SvTreeListBox::MouseButtonDown(rMEvt);
+}
+
+void ScStructListBox::GetFocus()
+{
+ bActiveFlag=TRUE;
+ SvTreeListBox::GetFocus();
+}
+
+void ScStructListBox::LoseFocus()
+{
+ bActiveFlag=FALSE;
+ SvTreeListBox::LoseFocus();
+}
+
+//==============================================================================
+
+ScStructPage::ScStructPage(Window* pParent):
+ TabPage(pParent,ScResId(RID_SCTAB_STRUCT)),
+ //
+ aFtStruct ( this, ScResId( FT_STRUCT ) ),
+ aTlbStruct ( this, ScResId( TLB_STRUCT ) ),
+ aExpBmp ( ScResId( RID_BMP_EXPAND ) ),
+ aCollBmp ( ScResId( RID_BMP_COLLAPSE ) ),
+ aCloseBmp ( ScResId( BMP_STR_CLOSE ) ),
+ aOpenBmp ( ScResId( BMP_STR_OPEN ) ),
+ aEndBmp ( ScResId( BMP_STR_END ) ),
+ aErrorBmp ( ScResId( BMP_STR_ERROR ) ),
+ pSelectedToken ( NULL )
+{
+ FreeResource();
+ aTlbStruct.SetWindowBits(WB_HASLINES|WB_CLIPCHILDREN|
+ WB_HASBUTTONS|WB_HSCROLL|WB_NOINITIALSELECTION);
+
+ aTlbStruct.SetNodeBitmaps( aExpBmp, aCollBmp );
+ aTlbStruct.SetDefaultExpandedEntryBmp( aOpenBmp);
+ aTlbStruct.SetDefaultCollapsedEntryBmp( aCloseBmp);
+ Font aFont=GetFont();
+ Size aSize=aFont.GetSize();
+ aSize.Height()-=2;
+ aFont.SetSize(aSize);
+ aTlbStruct.SetFont(aFont);
+ aTlbStruct.SetSelectHdl(LINK( this, ScStructPage, SelectHdl ) );
+
+}
+
+void ScStructPage::ClearStruct()
+{
+ aTlbStruct.SetActiveFlag(FALSE);
+ aTlbStruct.Clear();
+}
+
+SvLBoxEntry* ScStructPage::InsertEntryWithError(USHORT nError,SvLBoxEntry* pParent,ULONG nPos)
+{
+
+ SvLBoxEntry* pEntry;
+ switch(nError)
+ {
+ case STRUCT_ERR_C1:
+ pEntry=InsertEntry( STR_STRUCT_ERR1,pParent,STRUCT_ERROR,nPos);
+ break;
+ case STRUCT_ERR_C2:
+ pEntry=InsertEntry( STR_STRUCT_ERR2,pParent,STRUCT_ERROR,nPos);
+ break;
+ }
+ return pEntry;
+}
+
+
+SvLBoxEntry* ScStructPage::InsertEntry( const XubString& rText, SvLBoxEntry* pParent,
+ USHORT nFlag,ULONG nPos,ScToken* pScToken)
+{
+ aTlbStruct.SetActiveFlag(FALSE);
+
+ SvLBoxEntry *pEntry=NULL;
+ switch(nFlag)
+ {
+ case STRUCT_FOLDER:
+ pEntry=aTlbStruct.InsertEntry(rText,pParent,FALSE,nPos,pScToken);
+ if(pParent!=NULL) aTlbStruct.Expand(pParent);
+ break;
+ case STRUCT_END:
+ pEntry=aTlbStruct.InsertEntry(rText,aEndBmp,aEndBmp,
+ pParent,FALSE,nPos,pScToken);
+ if(pParent!=NULL) aTlbStruct.Expand(pParent);
+ break;
+ case STRUCT_ERROR:
+ pEntry=aTlbStruct.InsertEntry(rText,aErrorBmp,aErrorBmp,
+ pParent,FALSE,nPos,pScToken);
+ if(pParent!=NULL) aTlbStruct.Expand(pParent);
+ break;
+ }
+ return pEntry;
+}
+
+String ScStructPage::GetEntryText(SvLBoxEntry* pEntry)
+{
+ String aString;
+ if(pEntry!=NULL)
+ aString=aTlbStruct.GetEntryText(pEntry);
+ return aString;
+}
+
+ScToken* ScStructPage::GetFunctionEntry(SvLBoxEntry* pEntry)
+{
+ if(pEntry!=NULL)
+ {
+ ScToken * pToken=(ScToken *)pEntry->GetUserData();
+ if(pToken!=NULL)
+ {
+ OpCode eOp = pToken->GetOpCode();
+ if(!(pToken->IsFunction()|| ocArcTan2<=eOp))
+ {
+ return GetFunctionEntry(aTlbStruct.GetParent(pEntry));
+ }
+ else
+ {
+ return pToken;
+ }
+ }
+ }
+ return NULL;
+}
+
+IMPL_LINK( ScStructPage, SelectHdl, SvTreeListBox*, pTlb )
+{
+ if(aTlbStruct.GetActiveFlag())
+ {
+ if(pTlb==&aTlbStruct)
+ {
+ SvLBoxEntry* pCurEntry=aTlbStruct.GetCurEntry();
+ if(pCurEntry!=NULL)
+ {
+ pSelectedToken=(ScToken *)pCurEntry->GetUserData();
+ if(pSelectedToken!=NULL)
+ {
+ OpCode eOp = pSelectedToken->GetOpCode();
+ if(!(pSelectedToken->IsFunction()|| ocArcTan2<=eOp))
+ {
+ pSelectedToken=GetFunctionEntry(pCurEntry);
+ }
+ }
+ }
+ }
+
+ aSelLink.Call(this);
+ }
+ return 0;
+}
+
+ScToken * ScStructPage::GetSelectedToken()
+{
+ return pSelectedToken;
+}
+
+String ScStructPage::GetSelectedEntryText()
+{
+ return aTlbStruct.GetEntryText(aTlbStruct.GetCurEntry());
+}
+
+
+
diff --git a/sc/source/ui/inc/acredlin.hrc b/sc/source/ui/inc/acredlin.hrc
new file mode 100644
index 000000000000..fada2c74da46
--- /dev/null
+++ b/sc/source/ui/inc/acredlin.hrc
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * $RCSfile: acredlin.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // -> RID_SCDLG_CHANGES
+
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_HELP 5
+//
+#define CTR_REDLINING 10
+#define TP_FILTER 11
+#define TP_VIEW 12
+
+
+#define FT_ASSIGN 14
+#define ED_ASSIGN 15
+#define RB_ASSIGN 16
+
+
+#define STR_INSERT_COLS 20
+#define STR_INSERT_ROWS 21
+#define STR_INSERT_TABS 22
+#define STR_DELETE_COLS 23
+#define STR_DELETE_ROWS 24
+#define STR_DELETE_TABS 25
+#define STR_MOVE 26
+#define STR_CONTENT 27
+#define STR_REJECT 28
+#define STR_ACCEPTED 29
+#define STR_REJECTED 30
+#define STR_NO_ENTRY 31
+#define STR_CONTENT_WITH_CHILD 32
+#define STR_CHILD_CONTENT 33
+#define STR_CHILD_ORGCONTENT 34
+#define STR_EMPTY 35
+// Bitmaps
+#define BMP_STR_CLOSE 41
+#define BMP_STR_OPEN 42
+#define BMP_STR_END 43
+#define BMP_STR_ERROR 44
+
+#define SC_CHANGES_COMMENT 49
+#define SC_SUB_SORT 50
+#define SC_SORT_ACTION 51
+#define SC_SORT_POSITION 52
+#define SC_SORT_AUTHOR 53
+#define SC_SORT_DATE 54
+#define SC_SORT_COMMENT 55
+
+//
+
diff --git a/sc/source/ui/inc/acredlin.hxx b/sc/source/ui/inc/acredlin.hxx
new file mode 100644
index 000000000000..a8924ea91c77
--- /dev/null
+++ b/sc/source/ui/inc/acredlin.hxx
@@ -0,0 +1,334 @@
+/*************************************************************************
+ *
+ * $RCSfile: acredlin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_ACREDLIN_HXX
+#define SC_ACREDLIN_HXX
+
+#ifndef VCL
+#endif
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _HEADBAR_HXX //autogen
+#include <svtools/headbar.hxx>
+#endif
+
+#ifndef _SVTABBX_HXX //autogen
+#include <svtools/svtabbx.hxx>
+#endif
+
+
+#ifndef SC_RANGENAM_HXX
+#include "rangenam.hxx"
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SVX_ACREDLIN_HXX
+#include <svx/ctredlin.hxx>
+#endif
+
+#ifndef _SVX_SIMPTABL_HXX
+#include <svx/simptabl.hxx>
+#endif
+
+#ifndef _SVARRAY_HXX
+#define _SVARRAY_HXX
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef SC_CHGTRACK_HXX
+#include "chgtrack.hxx"
+#endif
+
+#ifndef SC_CHGVISET_HXX
+#include "chgviset.hxx"
+#endif
+
+#ifndef _SV_TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+class ScViewData;
+class ScDocument;
+
+#define FLT_DATE_BEFORE 0
+#define FLT_DATE_SINCE 1
+#define FLT_DATE_EQUAL 2
+#define FLT_DATE_NOTEQUAL 3
+#define FLT_DATE_BETWEEN 4
+#define FLT_DATE_SAVE 5
+
+
+class ScViewEntryPtr
+{
+private:
+ String* pAction;
+ String* pPos;
+ String* pAuthor;
+ String* pDate;
+ String* pComment;
+ void* pData;
+
+public:
+
+ String* GetpAction() {return pAction; }
+ String* GetpPos() {return pPos; }
+ String* GetpAuthor() {return pAuthor; }
+ String* GetpDate() {return pDate; }
+ String* GetpComment() {return pComment;}
+ void* GetpData() {return pData; }
+
+ void SetpAction (String* pString) {pAction= pString;}
+ void SetpPos (String* pString) {pPos = pString;}
+ void SetpAuthor (String* pString) {pAuthor= pString;}
+ void SetpDate (String* pString) {pDate = pString;}
+ void SetpComment(String* pString) {pComment=pString;}
+ void SetpData (void* pdata) {pData =pdata;}
+};
+
+class ScViewEntryPtrList
+{
+ ScViewEntryPtrList* pNext;
+ ScViewEntryPtrList* pLast;
+
+ ScViewEntryPtr* pData;
+};
+
+
+class ScRedlinData : public RedlinData
+{
+public:
+
+ ScRedlinData();
+ ~ScRedlinData();
+ USHORT nTable;
+ USHORT nCol;
+ USHORT nRow;
+ ULONG nActionNo;
+ ULONG nInfo;
+ BOOL bIsRejectable;
+ BOOL bIsAcceptable;
+};
+
+typedef long LExpNum;
+
+//@ Expand-Entrys nicht eindeutig, daher gestrichen
+//DECLARE_TABLE( ScChgTrackExps, LExpNum)
+//==================================================================
+
+class ScAcceptChgDlg : public SfxModelessDialog
+{
+private:
+
+ Timer aSelectionTimer;
+ Timer aReOpenTimer;
+ SvxAcceptChgCtr aAcceptChgCtr;
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ ScRangeName aLocalRangeName;
+ Selection theCurSel;
+ SvxTPFilter* pTPFilter;
+ SvxTPView* pTPView;
+ SvxRedlinTable* pTheView;
+ Size MinSize;
+ ScRangeList aRangeList;
+ ScChangeViewSettings aChangeViewSet;
+ International aInter;
+ String aStrInsertCols;
+ String aStrInsertRows;
+ String aStrInsertTabs;
+ String aStrDeleteCols;
+ String aStrDeleteRows;
+ String aStrDeleteTabs;
+ String aStrMove;
+ String aStrContent;
+ String aStrReject;
+ String aUnknown;
+ String aStrAllAccepted;
+ String aStrAllRejected;
+ String aStrNoEntry;
+ String aStrContentWithChild;
+ String aStrChildContent;
+ String aStrChildOrgContent;
+ String aStrEmpty;
+ Bitmap aExpBmp;
+ Bitmap aCollBmp;
+ Bitmap aCloseBmp;
+ Bitmap aOpenBmp;
+ Bitmap aEndBmp;
+ Bitmap aErrorBmp;
+ ULONG nAcceptCount;
+ ULONG nRejectCount;
+ BOOL bAcceptEnableFlag;
+ BOOL bRejectEnableFlag;
+ BOOL bNeedsUpdate;
+ BOOL bIgnoreMsg;
+ BOOL bNoSelection;
+ BOOL bHasFilterEntry;
+ BOOL bUseColor;
+ //ScChgTrackExps aExpandArray;
+
+ void Init();
+ void InitFilter();
+ void SetMyStaticData();
+
+ DECL_LINK( FilterHandle, SvxTPFilter* );
+ DECL_LINK( RefHandle, SvxTPFilter* );
+ DECL_LINK( FilterModified, SvxTPFilter* );
+ DECL_LINK( MinSizeHandle, SvxAcceptChgCtr*);
+ DECL_LINK( RejectHandle, SvxTPView*);
+ DECL_LINK( AcceptHandle, SvxTPView*);
+ DECL_LINK( RejectAllHandle, SvxTPView*);
+ DECL_LINK( AcceptAllHandle, SvxTPView*);
+ DECL_LINK( ExpandingHandle, SvxRedlinTable*);
+ DECL_LINK( SelectHandle, SvxRedlinTable*);
+ DECL_LINK( RefInfoHandle, String*);
+
+ DECL_LINK( UpdateSelectionHdl, Timer*);
+ DECL_LINK( ChgTrackModHdl, ScChangeTrack*);
+ DECL_LINK( CommandHdl, Control*);
+ DECL_LINK( ReOpenTimerHdl, Timer*);
+ DECL_LINK( ColCompareHdl, SvSortData*);
+
+
+
+protected:
+
+ virtual void Resize();
+ virtual BOOL Close();
+
+ void RejectFiltered();
+ void AcceptFiltered();
+
+ BOOL IsValidAction(const ScChangeAction* pScChangeAction);
+
+ String* MakeTypeString(ScChangeActionType eType);
+
+ SvLBoxEntry* InsertChangeAction(const ScChangeAction* pScChangeAction,ScChangeActionState eState,
+ SvLBoxEntry* pParent=NULL,BOOL bDelMaster=FALSE,
+ BOOL bDisabled=FALSE,ULONG nPos=LIST_APPEND);
+
+ SvLBoxEntry* InsertFilteredAction(const ScChangeAction* pScChangeAction,ScChangeActionState eState,
+ SvLBoxEntry* pParent=NULL,BOOL bDelMaster=FALSE,
+ BOOL bDisabled=FALSE,ULONG nPos=LIST_APPEND);
+
+
+ SvLBoxEntry* InsertChangeActionContent(const ScChangeActionContent* pScChangeAction,
+ SvLBoxEntry* pParent,ULONG nSpecial);
+
+ void GetDependents( const ScChangeAction* pScChangeAction,
+ ScChangeActionTable& aActionTable,
+ SvLBoxEntry* pEntry);
+
+ BOOL InsertContentChilds(ScChangeActionTable* pActionTable,SvLBoxEntry* pParent);
+
+ BOOL InsertAcceptedORejected(SvLBoxEntry* pParent);
+
+ BOOL InsertDeletedChilds(const ScChangeAction *pChangeAction, ScChangeActionTable* pActionTable,
+ SvLBoxEntry* pParent);
+
+ BOOL InsertChilds(ScChangeActionTable* pActionTable,SvLBoxEntry* pParent);
+
+ void AppendChanges(ScChangeTrack* pChanges,ULONG nStartAction, ULONG nEndAction,
+ ULONG nPos=LIST_APPEND);
+
+ void RemoveEntrys(ULONG nStartAction,ULONG nEndAction);
+ void UpdateEntrys(ScChangeTrack* pChgTrack, ULONG nStartAction,ULONG nEndAction);
+
+ void UpdateView();
+ void ClearView();
+
+ BOOL Expand(ScChangeTrack* pChanges,const ScChangeAction* pScChangeAction,
+ SvLBoxEntry* pEntry, BOOL bFilter=FALSE);
+
+public:
+ ScAcceptChgDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData);
+
+ ~ScAcceptChgDlg();
+
+ void ReInit(ScViewData* ptrViewData);
+
+ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ void Initialize (SfxChildWinInfo* pInfo);
+ virtual void FillInfo(SfxChildWinInfo&) const;
+
+};
+
+
+#endif // SC_NAMEDLG_HXX
+
diff --git a/sc/source/ui/inc/anyrefdg.hxx b/sc/source/ui/inc/anyrefdg.hxx
new file mode 100644
index 000000000000..97b5ccd552fc
--- /dev/null
+++ b/sc/source/ui/inc/anyrefdg.hxx
@@ -0,0 +1,207 @@
+/*************************************************************************
+ *
+ * $RCSfile: anyrefdg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_ANYREFDG_HXX
+#define SC_ANYREFDG_HXX
+
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#ifndef _ACCEL_HXX //autogen
+#include <vcl/accel.hxx>
+#endif
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+class SfxObjectShell;
+class ScRange;
+class ScDocument;
+class ScTabViewShell;
+class ScAnyRefDlg;
+class ScFormulaCell;
+class ScCompiler;
+
+//============================================================================
+
+class ScRefEdit : public Edit
+{
+private:
+
+ Timer aTimer;
+ ScAnyRefDlg* pAnyRefDlg; // Dialog
+
+ DECL_LINK( UpdateHdl, Timer*);
+
+public:
+ ScRefEdit( ScAnyRefDlg* pParent, const ResId& rResId);
+ ScRefEdit( Window *pParent, const ResId& rResId);
+ ~ScRefEdit();
+
+ void SetRefString( const XubString& rStr );
+ virtual void SetText( const XubString& rStr );
+
+ virtual void GetFocus();
+ virtual void LoseFocus();
+ virtual void Modify();
+ void StartUpdateData();
+
+ void SetRefDialog(ScAnyRefDlg *pDlg);
+ ScAnyRefDlg* GetRefDialog() {return pAnyRefDlg;}
+
+};
+
+class ScRefButton : public ImageButton
+{
+public:
+ ScRefButton( ScAnyRefDlg* pParent, const ResId& rResId, ScRefEdit* pEdit );
+ ScRefButton( Window *pParent, const ResId& rResId);
+
+ void SetReferences( ScAnyRefDlg* pRefDlg,ScRefEdit* pEdit );
+
+ void SetStartImage();
+ void SetEndImage();
+ void DoRef() { Click(); }
+ virtual void GetFocus();
+ virtual void LoseFocus();
+
+
+protected:
+ virtual void Click();
+
+private:
+ Image aImgRefStart; // Symbol fuer Ref.-Eingabe starten
+ Image aImgRefDone; // Symbol fuer Ref.-Eingabe beenden
+ ScAnyRefDlg* pDlg; // Dialog
+ ScRefEdit* pRefEdit; // zugeordnetes Edit-Control
+};
+
+
+//============================================================================
+class ScAnyRefDlg : public SfxModelessDialog
+{
+friend ScRefButton;
+
+private:
+ Edit* pRefEdit; // aktives Eingabefeld
+ ScRefButton* pRefBtn; // Button dazu
+ String sOldDialogText; // Originaltitel des Dialogfensters
+ Size aOldDialogSize; // Originalgroesse Dialogfenster
+ Point aOldEditPos; // Originalposition des Eingabefeldes
+ Size aOldEditSize; // Originalgroesse des Eingabefeldes
+ Point aOldButtonPos; // Originalpositiuon des Buttons
+ BOOL* pHiddenMarks; // Merkfeld fuer versteckte Controls
+ Accelerator* pAccel; // fuer Enter/Escape
+ BOOL bAccInserted;
+ BOOL bHighLightRef;
+ BOOL bEnableColorRef;
+ ScFormulaCell* pRefCell;
+ ScCompiler* pRefComp;
+ Window* pActiveWin;
+ Timer aTimer;
+ String aDocName; // document on which the dialog was opened
+
+ DECL_LINK( UpdateFocusHdl, Timer*);
+ DECL_LINK( AccelSelectHdl, Accelerator * );
+
+protected:
+ BOOL DoClose( USHORT nId );
+
+ void EnableSpreadsheets(BOOL bFlag=TRUE, BOOL bChilds=TRUE);
+
+ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ virtual void RefInputStart( ScRefEdit* pEdit, ScRefButton* pButton = NULL );
+ virtual void RefInputDone( BOOL bForced = FALSE );
+ void ShowSimpleReference( const XubString& rStr );
+ void ShowFormulaReference( const XubString& rStr );
+
+
+public:
+ ScAnyRefDlg( SfxBindings* pB, SfxChildWindow* pCW,
+ Window* pParent, USHORT nResId);
+ virtual ~ScAnyRefDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc ) = 0;
+ virtual void AddRefEntry();
+
+ virtual BOOL IsRefInputMode() const;
+ virtual BOOL IsTableLocked() const;
+ virtual BOOL IsDocAllowed(SfxObjectShell* pDocSh) const;
+
+ void ShowReference( const XubString& rStr );
+ void HideReference();
+
+ void ViewShellChanged(ScTabViewShell* pScViewShell);
+ void SwitchToDocument();
+
+ virtual void SetActive() = 0;
+// virtual BOOL Close();
+ virtual void StateChanged( StateChangedType nStateChange );
+};
+
+
+
+#endif // SC_ANYREFDG_HXX
+
diff --git a/sc/source/ui/inc/areasdlg.hxx b/sc/source/ui/inc/areasdlg.hxx
new file mode 100644
index 000000000000..0d9d297d1607
--- /dev/null
+++ b/sc/source/ui/inc/areasdlg.hxx
@@ -0,0 +1,143 @@
+/*************************************************************************
+ *
+ * $RCSfile: areasdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_AREASDLG_HXX
+#define SC_AREASDLG_HXX
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include <anyrefdg.hxx>
+#endif
+
+class ScDocument;
+class ScViewData;
+class ScRangeUtil;
+class ScRangeItem;
+
+
+//============================================================================
+
+class ScPrintAreasDlg : public ScAnyRefDlg
+{
+public:
+ ScPrintAreasDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent );
+ ~ScPrintAreasDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+ virtual void AddRefEntry();
+
+ virtual BOOL IsTableLocked() const;
+
+ virtual void SetActive();
+ virtual void Deactivate();
+ virtual BOOL Close();
+
+private:
+ ListBox aLbPrintArea;
+ GroupBox aGbPrintArea;
+ ScRefEdit aEdPrintArea;
+ ScRefButton aRbPrintArea;
+
+ ListBox aLbRepeatRow;
+ GroupBox aGbRepeatRow;
+ ScRefEdit aEdRepeatRow;
+ ScRefButton aRbRepeatRow;
+
+ ListBox aLbRepeatCol;
+ GroupBox aGbRepeatCol;
+ ScRefEdit aEdRepeatCol;
+ ScRefButton aRbRepeatCol;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ BOOL bDlgLostFocus;
+ ScRefEdit* pRefInputEdit;
+ ScDocument* pDoc;
+ ScViewData* pViewData;
+ USHORT nCurTab;
+
+#ifdef _AREASDLG_CXX
+private:
+ void Impl_Reset();
+ BOOL Impl_CheckRefStrings();
+ void Impl_FillLists();
+ BOOL Impl_GetItem( Edit* pEd, SfxStringItem& rItem );
+
+ // Handler:
+ DECL_LINK( Impl_SelectHdl, ListBox* );
+ DECL_LINK( Impl_ModifyHdl, ScRefEdit* );
+ DECL_LINK( Impl_BtnHdl, PushButton* );
+ DECL_LINK( Impl_GetFocusHdl, Control* );
+#endif
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/asciiopt.hxx b/sc/source/ui/inc/asciiopt.hxx
new file mode 100644
index 000000000000..07f3ce90df7e
--- /dev/null
+++ b/sc/source/ui/inc/asciiopt.hxx
@@ -0,0 +1,258 @@
+/*************************************************************************
+ *
+ * $RCSfile: asciiopt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_ASCIIOPT_HXX
+#define SC_ASCIIOPT_HXX
+
+#include <tools/solar.h>
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _SCRBAR_HXX //autogen
+#include <vcl/scrbar.hxx>
+#endif
+#ifndef _SVTABBX_HXX //autogen
+#include <svtools/svtabbx.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+
+#ifndef _SVSTDARR_ULONGS
+#define _SVSTDARR_ULONGS
+#include <svtools/svstdarr.hxx>
+#endif
+
+#include "tabrul.hxx"
+
+//===================================================================
+
+// Spaltenformate (Werte wie bei OpenText in Excel)
+
+#define SC_COL_STANDARD 1
+#define SC_COL_TEXT 2
+#define SC_COL_MDY 3
+#define SC_COL_DMY 4
+#define SC_COL_YMD 5
+#define SC_COL_SKIP 9
+#define SC_COL_ENGLISH 10
+
+#define SC_ASCIIOPT_PREVIEW_LINES 5 // Anzahl Preview Lines
+
+// Import-Optionen
+
+class ScAsciiOptions
+{
+private:
+ BOOL bFixedLen;
+ String aFieldSeps;
+ BOOL bMergeFieldSeps;
+ sal_Unicode cTextSep;
+ CharSet eCharSet;
+ long nStartRow;
+ USHORT nInfoCount;
+ xub_StrLen* pColStart;
+ BYTE* pColFormat;
+
+public:
+ ScAsciiOptions();
+ ScAsciiOptions(const ScAsciiOptions& rOpt);
+ ~ScAsciiOptions();
+
+ ScAsciiOptions& operator=( const ScAsciiOptions& rCpy );
+
+ BOOL operator==( const ScAsciiOptions& rCmp ) const;
+
+ void ReadFromString( const String& rString );
+ String WriteToString() const;
+
+ void InterpretColumnList( const String& rString );
+
+ CharSet GetCharSet() const { return eCharSet; }
+ const String& GetFieldSeps() const { return aFieldSeps; }
+ BOOL IsMergeSeps() const { return bMergeFieldSeps; }
+ 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; }
+
+ void SetCharSet( CharSet eNew ) { eCharSet = eNew; }
+ void SetFixedLen( BOOL bSet ) { bFixedLen = bSet; }
+ void SetFieldSeps( const String& rStr ) { aFieldSeps = rStr; }
+ void SetMergeSeps( BOOL bSet ) { bMergeFieldSeps = bSet; }
+ void SetTextSep( sal_Unicode c ) { cTextSep = c; }
+ void SetStartRow( long nRow) { nStartRow= nRow; }
+
+ void SetColInfo( USHORT nCount, const xub_StrLen* pStart, const BYTE* pFormat );
+};
+
+
+// Import-Dialog
+
+class ScImportAsciiDlg : public ModalDialog
+{
+ SvStream* pDatStream;
+ ULONG* pRowPosArray;
+ USHORT nArrayEndPos;
+
+ BOOL bVFlag;
+
+ FixedText aFtRow;
+ NumericField aNfRow;
+
+ FixedText aFtCharSet;
+ ListBox aLbCharSet;
+
+ RadioButton aRbFixed;
+ RadioButton aRbSeparated;
+
+ CheckBox aCkbTab;
+ CheckBox aCkbSemicolon;
+ CheckBox aCkbComma;
+ CheckBox aCkbSpace;
+ CheckBox aCkbOther;
+ Edit aEdOther;
+ CheckBox aCkbAsOnce;
+ FixedText aFtTextSep;
+ ComboBox aCbTextSep;
+
+ ScTableWithRuler aTableBox;
+ FixedText aFtType;
+ ListBox aLbType;
+ ScrollBar aScrollbar;
+ ScrollBar aVScroll;
+
+ GroupBox aGbSepOpt;
+ GroupBox aGbFieldOpt;
+ GroupBox aGbWidth;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ String aStringCol;
+ String aStringTo;
+ String aCharSetUser;
+ String aColumnUser;
+ String aFldSepList;
+ String aTextSepList;
+
+ // aPreviewLine contains the byte string as read from the file
+ ByteString aPreviewLine[SC_ASCIIOPT_PREVIEW_LINES];
+
+ USHORT nScrollPos;
+ USHORT nUsedCols;
+ USHORT* pEndValues;
+ BYTE* pFlags;
+ CharSet eCharSet;
+
+ void CheckDisable();
+ void CheckValues(BOOL bReadVal = FALSE, USHORT nEditField = USHRT_MAX);
+ void CheckColTypes(BOOL bReadVal,void *pCtr=NULL);
+ void CheckScrollRange();
+ void CheckScrollPos();
+ void UpdateVertical();
+ void DelimitedPreview();
+ void GetCharSet();
+
+ DECL_LINK( VarFixHdl, void* );
+ DECL_LINK( ScrollHdl, void* );
+ DECL_LINK( SelectHdl, ScTableWithRuler* );
+ DECL_LINK( ColTypeHdl, void* );
+ DECL_LINK( CharSetHdl, void* );
+ DECL_LINK( VarSepHdl, void* );
+
+public:
+ ScImportAsciiDlg( Window* pParent, String aDatName,
+ SvStream* pInStream, sal_Unicode cSep = '\t' );
+ ~ScImportAsciiDlg();
+
+ void GetOptions( ScAsciiOptions& rOpt );
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/attrdlg.hrc b/sc/source/ui/inc/attrdlg.hrc
new file mode 100644
index 000000000000..9d71e83491b1
--- /dev/null
+++ b/sc/source/ui/inc/attrdlg.hrc
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * $RCSfile: attrdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // -> SC_DLG_ATTR
+
+#define TP_NUMBER 1
+#define TP_FONT 2
+#define TP_ALIGNMENT 3
+#define TP_BORDER 4
+#define TP_BACKGROUND 5
+#define TP_PROTECTION 6
+
+//================================================
+// Zellschutz-TabPage:
+
+#define BTN_PROTECTED 1
+#define BTN_HIDE_FORMULAR 2
+#define BTN_HIDE_ALL 3
+#define FT_HINT 4
+#define GB_PROTECTION 5
+#define BTN_HIDE_PRINT 6
+#define FT_HINT2 7
+#define GB_PRINT 8
+
+
diff --git a/sc/source/ui/inc/attrdlg.hxx b/sc/source/ui/inc/attrdlg.hxx
new file mode 100644
index 000000000000..70a79eb23827
--- /dev/null
+++ b/sc/source/ui/inc/attrdlg.hxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * $RCSfile: attrdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_ATTRDLG_HXX
+#define SC_ATTRDLG_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+class Window;
+class SfxViewFrame;
+class SfxItemSet;
+
+//==================================================================
+
+class ScAttrDlg : public SfxTabDialog
+{
+public:
+ ScAttrDlg( SfxViewFrame* pFrame,
+ Window* pParent,
+ const SfxItemSet* pCellAttrs );
+ ~ScAttrDlg();
+
+protected:
+ virtual void PageCreated( USHORT nPageId, SfxTabPage& rTabPage );
+
+private:
+ DECL_LINK( OkHandler, void* ); // fuer DoppelClick-Beenden in TabPages
+};
+
+
+#endif // SC_ATTRDLG_HXX
+
+
diff --git a/sc/source/ui/inc/auditsh.hxx b/sc/source/ui/inc/auditsh.hxx
new file mode 100644
index 000000000000..4c687033a786
--- /dev/null
+++ b/sc/source/ui/inc/auditsh.hxx
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * $RCSfile: auditsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_AUDITSH_HXX
+#define SC_AUDITSH_HXX
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#include "shellids.hxx"
+
+class ScViewData;
+
+class ScAuditingShell : public SfxShell
+{
+private:
+ ScViewData* pViewData;
+ USHORT nFunction;
+
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_AUDITING_SHELL);
+
+ ScAuditingShell(ScViewData* pData);
+ ~ScAuditingShell();
+
+ void Execute(SfxRequest& rReq);
+ void GetState(SfxItemSet& rSet);
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/autofmt.hxx b/sc/source/ui/inc/autofmt.hxx
new file mode 100644
index 000000000000..a4be07619cc5
--- /dev/null
+++ b/sc/source/ui/inc/autofmt.hxx
@@ -0,0 +1,229 @@
+/*************************************************************************
+ *
+ * $RCSfile: autofmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_AUTOFMT_HXX
+#define SC_AUTOFMT_HXX
+
+#ifndef _VIRDEV_HXX //autogen
+#include <vcl/virdev.hxx>
+#endif
+#ifndef SV_FIXED_HXX
+#include <vcl/fixed.hxx>
+#endif
+#ifndef SV_LSTBOX_HXX
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef SV_GROUP_HXX
+#include <vcl/group.hxx>
+#endif
+#ifndef SV_BUTTON_HXX
+#include <vcl/button.hxx>
+#endif
+#ifndef SV_MOREBTN_HXX
+#include <vcl/morebtn.hxx>
+#endif
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+
+//------------------------------------------------------------------------
+
+class ScAutoFormat;
+class ScAutoFormatData;
+class SvxBoxItem;
+class SvxBorderLine;
+class AutoFmtPreview; // s.u.
+class SvNumberFormatter;
+
+//------------------------------------------------------------------------
+
+enum AutoFmtLine { TOP_LINE, BOTTOM_LINE, LEFT_LINE, RIGHT_LINE };
+
+//========================================================================
+
+class ScAutoFormatDlg : public ModalDialog
+{
+public:
+ ScAutoFormatDlg( Window* pParent,
+ ScAutoFormat* pAutoFormat,
+ const ScAutoFormatData* pSelFormatData );
+ ~ScAutoFormatDlg();
+
+ USHORT GetIndex() const { return nIndex; }
+ String GetCurrFormatName();
+
+private:
+ FixedText aFtFormat;
+ ListBox aLbFormat;
+ AutoFmtPreview* pWndPreview;
+ GroupBox aGbPreview;
+ PushButton aBtnAdd;
+ PushButton aBtnRemove;
+ PushButton aBtnRename;
+ CheckBox aBtnNumFormat;
+ CheckBox aBtnBorder;
+ CheckBox aBtnFont;
+ CheckBox aBtnPattern;
+ CheckBox aBtnAlignment;
+ CheckBox aBtnAdjust;
+ GroupBox aGbFormat;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ MoreButton aBtnMore;
+ String aStrTitle;
+ String aStrLabel;
+ String aStrClose;
+ String aStrDelTitle;
+ String aStrDelMsg;
+ String aStrRename;
+
+ //------------------------
+ ScAutoFormat* pFormat;
+ const ScAutoFormatData* pSelFmtData;
+ USHORT nIndex;
+ BOOL bCoreDataChanged;
+ BOOL bFmtInserted;
+
+ void Init ();
+ void UpdateChecks ();
+ //------------------------
+ DECL_LINK( CheckHdl, Button * );
+ DECL_LINK( AddHdl, void * );
+ DECL_LINK( RemoveHdl, void * );
+ DECL_LINK( SelFmtHdl, void * );
+ DECL_LINK( CloseHdl, PushButton * );
+ DECL_LINK( DblClkHdl, void * );
+ DECL_LINK( RenameHdl, void *);
+
+};
+
+//========================================================================
+
+class AutoFmtPreview : public Window
+{
+public:
+ AutoFmtPreview( Window* pParent, const ResId& rRes );
+ ~AutoFmtPreview();
+
+ void NotifyChange( ScAutoFormatData* pNewData );
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+
+private:
+ ScAutoFormatData* pCurData;
+ VirtualDevice aVD;
+ BOOL bFitWidth;
+ static USHORT aFmtMap[25]; // Zuordnung: Zelle->Format
+ Rectangle aCellArray[25]; // Position und Groesse der Zellen
+ SvxBoxItem* aLinePtrArray[49]; // LinienAttribute
+ Size aPrvSize;
+ const USHORT nLabelColWidth;
+ const USHORT nDataColWidth1;
+ const USHORT nDataColWidth2;
+ const USHORT nRowHeight;
+ const String aStrJan;
+ const String aStrFeb;
+ const String aStrMar;
+ const String aStrNorth;
+ const String aStrMid;
+ const String aStrSouth;
+ const String aStrSum;
+ SvNumberFormatter* pNumFmt;
+ //-------------------------------------------
+ void Init ();
+ void DoPaint ( const Rectangle& rRect );
+ void CalcCellArray ( BOOL bFitWidth );
+ void CalcLineMap ();
+ void PaintCells ();
+ void DrawBackground ( USHORT nIndex );
+ void DrawFrame ( USHORT nIndex );
+ void DrawString ( USHORT nIndex );
+ void MakeFont ( USHORT nIndex, Font& rFont );
+ String MakeNumberString( String cellString, BOOL bAddDec );
+ void DrawFrameLine ( const SvxBorderLine& rLineD,
+ Point from,
+ Point to,
+ BOOL bHorizontal,
+ const SvxBorderLine& rLineLT,
+ const SvxBorderLine& rLineL,
+ const SvxBorderLine& rLineLB,
+ const SvxBorderLine& rLineRT,
+ const SvxBorderLine& rLineR,
+ const SvxBorderLine& rLineRB );
+ void CheckPriority ( USHORT nCurLine,
+ AutoFmtLine eLine,
+ SvxBorderLine& rLine );
+ void GetLines ( USHORT nIndex, AutoFmtLine eLine,
+ SvxBorderLine& rLineD,
+ SvxBorderLine& rLineLT,
+ SvxBorderLine& rLineL,
+ SvxBorderLine& rLineLB,
+ SvxBorderLine& rLineRT,
+ SvxBorderLine& rLineR,
+ SvxBorderLine& rLineRB );
+};
+
+#endif // SC_AUTOFMT_HXX
+
+
diff --git a/sc/source/ui/inc/autostyl.hxx b/sc/source/ui/inc/autostyl.hxx
new file mode 100644
index 000000000000..feeb043ce197
--- /dev/null
+++ b/sc/source/ui/inc/autostyl.hxx
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * $RCSfile: autostyl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_AUTOSTYL_HXX
+#define SC_AUTOSTYL_HXX
+
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+class ScDocShell;
+class ScRange;
+
+class ScAutoStyleList
+{
+private:
+ ScDocShell* pDocSh;
+ Timer aTimer;
+ Timer aInitTimer;
+ ULONG nTimerStart;
+ List aEntries;
+ List aInitials;
+
+ void ExecuteEntries();
+ void AdjustEntries(ULONG nDiff);
+ void StartTimer(ULONG nNow);
+ DECL_LINK( TimerHdl, Timer* );
+ DECL_LINK( InitHdl, Timer* );
+
+public:
+ ScAutoStyleList(ScDocShell* pShell);
+ ~ScAutoStyleList();
+
+ void AddInitial( const ScRange& rRange, const String& rStyle1,
+ ULONG nTimeout, const String& rStyle2 );
+ void AddEntry( ULONG nTimeout, const ScRange& rRange, const String& rStyle );
+
+ void ExecuteAllNow();
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/cbutton.hxx b/sc/source/ui/inc/cbutton.hxx
new file mode 100644
index 000000000000..1b096d4935d5
--- /dev/null
+++ b/sc/source/ui/inc/cbutton.hxx
@@ -0,0 +1,128 @@
+/*************************************************************************
+ *
+ * $RCSfile: cbutton.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+//------------------------------------------------------------------
+
+#ifndef SC_CBUTTON_HXX
+#define SC_CBUTTON_HXX
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+#ifndef _SV_COLOR_HXX //autogen
+#include <vcl/color.hxx>
+#endif
+
+class Window;
+
+
+//==================================================================
+
+class ScDDComboBoxButton
+{
+public:
+ ScDDComboBoxButton( Window* pOutputDevice );
+ ~ScDDComboBoxButton();
+
+ void Draw( const Point& rAt,
+ const Size& rSize,
+ const Color& rArrowCol,
+ BOOL bBtnIn = FALSE );
+
+ void Draw( const Point& rAt,
+ const Color& rArrowCol,
+ BOOL bBtnIn = FALSE )
+ { Draw( rAt, aBtnSize, rArrowCol, bBtnIn ); }
+
+ void Draw( const Point& rAt,
+ BOOL bBtnIn = FALSE )
+ { Draw( rAt, aBtnSize, aArrowColor, bBtnIn ); }
+
+ void Draw( BOOL bBtnIn = FALSE )
+ { Draw( aBtnPos, aBtnSize, aArrowColor, bBtnIn ); }
+
+ void SetOptSizePixel();
+
+ void SetPosPixel( const Point& rNewPos ) { aBtnPos = rNewPos; }
+ Point GetPosPixel() const { return aBtnPos; }
+
+ void SetSizePixel( const Size& rNewSize ) { aBtnSize = rNewSize; }
+ Size GetSizePixel() const { return aBtnSize; }
+
+ void SetColor( const Color& rNewColor ) { aArrowColor = rNewColor; }
+ Color GetColor() const { return aArrowColor; }
+
+private:
+ void ImpDrawArrow( const Rectangle& rRect,
+ const Color& rColor );
+
+protected:
+ Window* pOut;
+ Point aBtnPos;
+ Size aBtnSize;
+ Color aArrowColor;
+};
+
+
+#endif // SC_CBUTTON_HXX
+
+
diff --git a/sc/source/ui/inc/cellsh.hxx b/sc/source/ui/inc/cellsh.hxx
new file mode 100644
index 000000000000..a98b6e0c7f79
--- /dev/null
+++ b/sc/source/ui/inc/cellsh.hxx
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CELLSH_HXX
+#define SC_CELLSH_HXX
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#include "shellids.hxx"
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#ifndef _SVDMARK_HXX //autogen
+#include <svx/svdmark.hxx>
+#endif
+
+#ifndef SC_FORMATSH_HXX
+#include "formatsh.hxx"
+#endif
+
+class ScCellShell: public ScFormatShell
+{
+public:
+
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_CELL_SHELL);
+
+ ScCellShell(ScViewData* pData);
+ virtual ~ScCellShell();
+
+ void Execute(SfxRequest &);
+ void GetState(SfxItemSet &);
+
+ void ExecuteEdit( SfxRequest& rReq );
+
+ void GetBlockState( SfxItemSet& rSet );
+ void GetCellState( SfxItemSet& rSet );
+
+ void ExecuteDB( SfxRequest& rReq );
+ void GetDBState( SfxItemSet& rSet );
+
+ void ExecImageMap(SfxRequest& rReq); // ImageMap
+ void GetImageMapState(SfxItemSet& rSet);
+
+ void GetClipState( SfxItemSet& rSet );
+ void GetHLinkState( SfxItemSet& rSet );
+
+ void ExecuteCursor( SfxRequest& rReq );
+ void ExecuteCursorSel( SfxRequest& rReq );
+ void ExecutePage( SfxRequest& rReq );
+ void ExecutePageSel( SfxRequest& rReq );
+ void ExecuteMove( SfxRequest& rReq );
+ void GetStateCursor( SfxItemSet& rSet );
+
+};
+
+#endif
diff --git a/sc/source/ui/inc/chartsh.hxx b/sc/source/ui/inc/chartsh.hxx
new file mode 100644
index 000000000000..8147e5672a5c
--- /dev/null
+++ b/sc/source/ui/inc/chartsh.hxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * $RCSfile: chartsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef CHARTSH_HXX
+#define CHARTSH_HXX
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#include "shellids.hxx"
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#ifndef _SVDMARK_HXX //autogen
+#include <svx/svdmark.hxx>
+#endif
+
+class ScViewData;
+
+#include "drawsh.hxx"
+
+class ScChartShell: public ScDrawShell
+{
+public:
+
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_CHART_SHELL);
+
+ ScChartShell(ScViewData* pData);
+ virtual ~ScChartShell();
+
+};
+
+#endif
diff --git a/sc/source/ui/inc/client.hxx b/sc/source/ui/inc/client.hxx
new file mode 100644
index 000000000000..a944bcb8c26a
--- /dev/null
+++ b/sc/source/ui/inc/client.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: client.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CLIENT_HXX
+#define SC_CLIENT_HXX
+
+#ifndef _SFX_CLIENTSH_HXX //autogen
+#include <sfx2/clientsh.hxx>
+#endif
+
+class ScDocument;
+class ScTabViewShell;
+class SdrOle2Obj;
+class SdrGrafObj;
+class SdrModel;
+
+class ScClient : public SfxInPlaceClient
+{
+private:
+ SdrModel* pModel;
+ SdrGrafObj* pGrafEdit;
+
+public:
+ ScClient( ScTabViewShell* pViewShell, Window* pDraw, SdrModel* pSdrModel );
+ virtual ~ScClient();
+
+ virtual void RequestObjAreaPixel( const Rectangle & rObjRect );
+ virtual void ViewChanged( USHORT nAspect );
+ virtual void MakeVisible();
+ virtual void MakeViewData();
+
+ virtual void UIActivate( BOOL bActivate );
+
+ SdrGrafObj* GetGrafEdit() const { return pGrafEdit; }
+ void SetGrafEdit(SdrGrafObj* pNew) { pGrafEdit = pNew; }
+ SdrOle2Obj* GetDrawObj();
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/colrowba.hxx b/sc/source/ui/inc/colrowba.hxx
new file mode 100644
index 000000000000..34d7da9b074d
--- /dev/null
+++ b/sc/source/ui/inc/colrowba.hxx
@@ -0,0 +1,144 @@
+/*************************************************************************
+ *
+ * $RCSfile: colrowba.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_COLROWBAR_HXX
+#define SC_COLROWBAR_HXX
+
+#ifndef SC_HDRCONT_HXX
+#include "hdrcont.hxx"
+#endif
+
+#ifndef SC_VIEWDATA_HXX
+#include "viewdata.hxx"
+#endif
+
+class ScHeaderFunctionSet;
+class ScHeaderSelectionEngine;
+
+// ---------------------------------------------------------------------------
+
+
+class ScColBar : public ScHeaderControl
+{
+ ScViewData* pViewData;
+ ScHSplitPos eWhich;
+ ScHeaderFunctionSet* pFuncSet;
+ ScHeaderSelectionEngine* pSelEngine;
+
+public:
+ ScColBar( Window* pParent, ScViewData* pData, ScHSplitPos eWhichPos,
+ ScHeaderFunctionSet* pFunc, ScHeaderSelectionEngine* pEng );
+ ~ScColBar();
+
+ virtual USHORT GetPos();
+ virtual USHORT GetEntrySize( USHORT nEntryNo );
+ virtual String GetEntryText( USHORT nEntryNo );
+
+ virtual void SetEntrySize( USHORT nPos, USHORT nNewSize );
+ virtual void HideEntries( USHORT nStart, USHORT nEnd );
+
+ virtual void SetMarking( BOOL bSet );
+ virtual void SelectWindow();
+ virtual BOOL IsDisabled();
+ virtual BOOL ResizeAllowed();
+
+ virtual void DrawInvert( long nDragPos );
+
+ virtual String GetDragHelp( long nVal );
+};
+
+
+class ScRowBar : public ScHeaderControl
+{
+ ScViewData* pViewData;
+ ScVSplitPos eWhich;
+ ScHeaderFunctionSet* pFuncSet;
+ ScHeaderSelectionEngine* pSelEngine;
+
+public:
+ ScRowBar( Window* pParent, ScViewData* pData, ScVSplitPos eWhichPos,
+ ScHeaderFunctionSet* pFunc, ScHeaderSelectionEngine* pEng );
+ ~ScRowBar();
+
+ virtual USHORT GetPos();
+ virtual USHORT GetEntrySize( USHORT nEntryNo );
+ virtual String GetEntryText( USHORT nEntryNo );
+
+ virtual USHORT GetHiddenCount( USHORT nEntryNo ); // nur fuer Zeilen
+
+ virtual void SetEntrySize( USHORT nPos, USHORT nNewSize );
+ virtual void HideEntries( USHORT nStart, USHORT nEnd );
+
+ virtual void SetMarking( BOOL bSet );
+ virtual void SelectWindow();
+ virtual BOOL IsDisabled();
+ virtual BOOL ResizeAllowed();
+
+ virtual void DrawInvert( long nDragPos );
+
+ virtual String GetDragHelp( long nVal );
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/condfrmt.hrc b/sc/source/ui/inc/condfrmt.hrc
new file mode 100644
index 000000000000..b76acea1a68f
--- /dev/null
+++ b/sc/source/ui/inc/condfrmt.hrc
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: condfrmt.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // ->RID_SCDLG_SOLVER
+
+#define CBX_COND1 1
+#define LB_COND1_1 2
+#define LB_COND1_2 3
+#define EDT_COND1_1 4
+#define RB_COND1_1 5
+#define FT_COND1_AND 6
+#define EDT_COND1_2 7
+#define RB_COND1_2 8
+#define FT_COND1_TEMPLATE 9
+#define LB_COND1_TEMPLATE 10
+
+#define CBX_COND2 11
+#define LB_COND2_1 12
+#define LB_COND2_2 13
+#define EDT_COND2_1 14
+#define RB_COND2_1 15
+#define FT_COND2_AND 16
+#define EDT_COND2_2 17
+#define RB_COND2_2 18
+#define FT_COND2_TEMPLATE 19
+#define LB_COND2_TEMPLATE 20
+
+#define CBX_COND3 21
+#define LB_COND3_1 22
+#define LB_COND3_2 23
+#define EDT_COND3_1 24
+#define RB_COND3_1 25
+#define FT_COND3_AND 26
+#define EDT_COND3_2 27
+#define RB_COND3_2 28
+#define FT_COND3_TEMPLATE 29
+#define LB_COND3_TEMPLATE 30
+
+#define BTN_OK 31
+#define BTN_CANCEL 32
+#define BTN_HELP 33
+
diff --git a/sc/source/ui/inc/condfrmt.hxx b/sc/source/ui/inc/condfrmt.hxx
new file mode 100644
index 000000000000..e1f1cc8c6106
--- /dev/null
+++ b/sc/source/ui/inc/condfrmt.hxx
@@ -0,0 +1,191 @@
+/*************************************************************************
+ *
+ * $RCSfile: condfrmt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef SC_CONDFRMT_HXX_
+#define SC_CONDFRMT_HXX_
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+
+class ScDocument;
+class ScConditionalFormat;
+
+
+//============================================================================
+// class ScConditionalFormat
+//
+// Dialog zum Festlegen von bedingten Formaten
+
+class ScConditionalFormatDlg : public ScAnyRefDlg
+{
+public:
+ ScConditionalFormatDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScDocument* pCurDoc,
+ const ScConditionalFormat* pCurrentFormat );
+ ~ScConditionalFormatDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+ virtual void AddRefEntry();
+ virtual BOOL IsRefInputMode();
+ virtual void SetActive();
+ virtual BOOL Close();
+
+private:
+ CheckBox aCbxCond1;
+ ListBox aLbCond11;
+ ListBox aLbCond12;
+ ScRefEdit aEdtCond11;
+ ScRefButton aRbCond11;
+ FixedText aFtCond1And;
+ ScRefEdit aEdtCond12;
+ ScRefButton aRbCond12;
+ FixedText aFtCond1Template;
+ ListBox aLbCond1Template;
+
+ CheckBox aCbxCond2;
+ ListBox aLbCond21;
+ ListBox aLbCond22;
+ ScRefEdit aEdtCond21;
+ ScRefButton aRbCond21;
+ FixedText aFtCond2And;
+ ScRefEdit aEdtCond22;
+ ScRefButton aRbCond22;
+ FixedText aFtCond2Template;
+ ListBox aLbCond2Template;
+
+ CheckBox aCbxCond3;
+ ListBox aLbCond31;
+ ListBox aLbCond32;
+ ScRefEdit aEdtCond31;
+ ScRefButton aRbCond31;
+ FixedText aFtCond3And;
+ ScRefEdit aEdtCond32;
+ ScRefButton aRbCond32;
+ FixedText aFtCond3Template;
+ ListBox aLbCond3Template;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ Point aCond1Pos1;
+ Point aCond1Pos2;
+ Point aRBtn1Pos1;
+ Point aRBtn1Pos2;
+ Size aCond1Size1;
+ Size aCond1Size2;
+ Size aCond1Size3;
+
+ Point aCond2Pos1;
+ Point aCond2Pos2;
+ Point aRBtn2Pos1;
+ Point aRBtn2Pos2;
+ Size aCond2Size1;
+ Size aCond2Size2;
+ Size aCond2Size3;
+
+ Point aCond3Pos1;
+ Point aCond3Pos2;
+ Point aRBtn3Pos1;
+ Point aRBtn3Pos2;
+ Size aCond3Size1;
+ Size aCond3Size2;
+ Size aCond3Size3;
+
+ ScRefEdit* pEdActive;
+ BOOL bDlgLostFocus;
+ ScDocument* pDoc;
+
+#ifdef _CONDFRMT_CXX
+ void GetConditionalFormat( ScConditionalFormat& rCndFmt );
+
+ DECL_LINK( ClickCond1Hdl, void * );
+ DECL_LINK( ChangeCond11Hdl, void * );
+ DECL_LINK( ChangeCond12Hdl, void * );
+
+ DECL_LINK( ClickCond2Hdl, void * );
+ DECL_LINK( ChangeCond21Hdl, void * );
+ DECL_LINK( ChangeCond22Hdl, void * );
+
+ DECL_LINK( ClickCond3Hdl, void * );
+ DECL_LINK( ChangeCond31Hdl, void * );
+ DECL_LINK( ChangeCond32Hdl, void * );
+
+ DECL_LINK( EdGetFocusHdl, ScRefEdit* );
+ DECL_LINK( EdLoseFocusHdl, ScRefEdit* );
+ DECL_LINK( BtnHdl, PushButton* );
+#endif // _CONDFRMT_CXX
+};
+
+#endif // SC_CONDFRMT_HXX_
+
+
diff --git a/sc/source/ui/inc/consdlg.hxx b/sc/source/ui/inc/consdlg.hxx
new file mode 100644
index 000000000000..8408feac1fb1
--- /dev/null
+++ b/sc/source/ui/inc/consdlg.hxx
@@ -0,0 +1,174 @@
+/*************************************************************************
+ *
+ * $RCSfile: consdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CONSDLG_HXX
+#define SC_CONSDLG_HXX
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+class ScViewData;
+class ScDocument;
+class ScRangeUtil;
+class ScAreaData;
+
+
+//============================================================================
+
+class ScConsolidateDlg : public ScAnyRefDlg
+{
+public:
+ ScConsolidateDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ const SfxItemSet& rArgSet );
+ ~ScConsolidateDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+
+ virtual BOOL IsRefInputMode() const { return TRUE; }
+ virtual void SetActive();
+
+ virtual BOOL Close();
+
+protected:
+ virtual void Deactivate();
+
+private:
+ FixedText aFtFunc;
+ ListBox aLbFunc;
+
+ FixedText aFtConsAreas;
+ MultiListBox aLbConsAreas;
+
+ ListBox aLbDataArea;
+ FixedText aFtDataArea;
+ ScRefEdit aEdDataArea;
+ ScRefButton aRbDataArea;
+
+ ListBox aLbDestArea;
+ FixedText aFtDestArea;
+ ScRefEdit aEdDestArea;
+ ScRefButton aRbDestArea;
+
+ CheckBox aBtnByRow;
+ CheckBox aBtnByCol;
+
+ GroupBox aGbConsBy;
+ CheckBox aBtnRefs;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ MoreButton aBtnMore;
+ PushButton aBtnAdd;
+ PushButton aBtnRemove;
+
+ String aStrUndefined;
+
+ ScConsolidateParam theConsData;
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ ScRangeUtil* pRangeUtil;
+ ScAreaData* pAreaData;
+ USHORT nAreaDataCount;
+ USHORT nWhichCons;
+
+ ScRefEdit* pRefInputEdit;
+ BOOL bDlgLostFocus;
+
+#ifdef _CONSDLG_CXX
+private:
+ void Init ();
+ void FillAreaLists ();
+ BOOL VerifyEdit ( ScRefEdit* pEd );
+
+ DECL_LINK( OkHdl, void* );
+ DECL_LINK( ClickHdl, PushButton* );
+ DECL_LINK( GetFocusHdl, Control* );
+ DECL_LINK( ModifyHdl, ScRefEdit* );
+ DECL_LINK( SelectHdl, ListBox* );
+
+ ScSubTotalFunc LbPosToFunc( USHORT nPos );
+ USHORT FuncToLbPos( ScSubTotalFunc eFunc );
+#endif // _CONSDLG_CXX
+};
+
+
+
+#endif // SC_CONSDLG_HXX
+
diff --git a/sc/source/ui/inc/content.hxx b/sc/source/ui/inc/content.hxx
new file mode 100644
index 000000000000..8a94563a7190
--- /dev/null
+++ b/sc/source/ui/inc/content.hxx
@@ -0,0 +1,177 @@
+/*************************************************************************
+ *
+ * $RCSfile: content.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CONTENT_HXX
+#define SC_CONTENT_HXX
+
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScNavigatorDlg;
+class ScDocument;
+class ScDocShell;
+class ScAreaLink;
+
+#define SC_CONTENT_ROOT 0
+#define SC_CONTENT_TABLE 1
+#define SC_CONTENT_RANGENAME 2
+#define SC_CONTENT_DBAREA 3
+#define SC_CONTENT_GRAPHIC 4
+#define SC_CONTENT_OLEOBJECT 5
+#define SC_CONTENT_NOTE 6
+#define SC_CONTENT_AREALINK 7
+#define SC_CONTENT_COUNT 8
+
+//
+// TreeListBox fuer Inhalte
+//
+
+class ScContentTree : public SvTreeListBox
+{
+ ScNavigatorDlg* pParentWindow;
+ Bitmap aExpBmp;
+ Bitmap aCollBmp;
+ ImageList aEntryImages;
+ SvLBoxEntry* pRootNodes[SC_CONTENT_COUNT];
+ USHORT nRootType; // als Root eingestellt
+ String aManualDoc; // im Navigator umgeschaltet (Title)
+ BOOL bHiddenDoc; // verstecktes aktiv?
+ String aHiddenName; // URL zum Laden
+ String aHiddenTitle; // fuer Anzeige
+ ScDocument* pHiddenDocument; // temporaer
+
+ USHORT pPosList[SC_CONTENT_COUNT]; // fuer die Reihenfolge
+
+ static BOOL bIsInDrag; // static, falls der Navigator im ExecuteDrag geloescht wird
+
+ ScDocShell* GetManualOrCurrent();
+
+ void InitRoot(USHORT nType);
+ void ClearType(USHORT nType);
+ void ClearAll();
+ void InsertContent( USHORT nType, const String& rValue );
+ void GetDrawNames( USHORT nType, USHORT nId );
+
+ void GetTableNames();
+ void GetAreaNames();
+ void GetDbNames();
+ void GetLinkNames();
+ void GetGraphicNames();
+ void GetOleNames();
+ void GetNoteStrings();
+
+ BOOL DrawNamesChanged( USHORT nType, USHORT nId );
+ BOOL NoteStringsChanged();
+
+ ScAddress GetNotePos( ULONG nIndex );
+ const ScAreaLink* GetLink( ULONG nIndex );
+
+ USHORT GetCurrentContent( String& rValue );
+ ULONG GetCurrentIndex( SvLBoxEntry* pCurrent = NULL );
+ void DoDrag();
+ void AdjustTitle();
+
+ ScDocument* GetSourceDocument();
+
+ DECL_LINK( DoubleClickHdl, ScContentTree* );
+ DECL_STATIC_LINK( ScContentTree, ExecDragHdl, void* );
+
+protected:
+ virtual BOOL Drop( const DropEvent& rEvt );
+ virtual BOOL QueryDrop( DropEvent& rEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+
+public:
+ ScContentTree( Window* pParent, const ResId& rResId );
+ ~ScContentTree();
+
+ virtual void KeyInput(const KeyEvent& rKEvt);
+
+ void InitWindowBits( BOOL bButtons );
+
+ void Refresh( USHORT nType = 0 );
+
+ void ToggleRoot();
+ void SetRootType( USHORT nNew );
+ USHORT GetRootType() const { return nRootType; }
+
+ void ActiveDocChanged();
+ void ResetManualDoc();
+ void SetManualDoc(const String& rName);
+ BOOL LoadFile(const String& rUrl);
+ void SelectDoc(const String& rName);
+
+ const String& GetHiddenTitle() const { return aHiddenTitle; }
+
+ static BOOL IsInDrag() { return bIsInDrag; }
+};
+
+
+
+
+#endif // SC_NAVIPI_HXX
+
diff --git a/sc/source/ui/inc/corodlg.hxx b/sc/source/ui/inc/corodlg.hxx
new file mode 100644
index 000000000000..a6cbe68b12d4
--- /dev/null
+++ b/sc/source/ui/inc/corodlg.hxx
@@ -0,0 +1,115 @@
+/*************************************************************************
+ *
+ * $RCSfile: corodlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CORODLG_HXX
+#define SC_CORODLG_HXX
+
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#include "sc.hrc"
+#include "scresid.hxx"
+
+//------------------------------------------------------------------------
+
+class ScColRowLabelDlg : public ModalDialog
+{
+public:
+ ScColRowLabelDlg( Window* pParent,
+ BOOL bCol = FALSE,
+ BOOL bRow = FALSE )
+ : ModalDialog( pParent, ScResId( RID_SCDLG_CHARTCOLROW ) ),
+ aBtnRow ( this, ScResId(2) ),
+ aBtnCol ( this, ScResId(1) ),
+ aBtnOk ( this, ScResId(3) ),
+ aBtnCancel ( this, ScResId(4) ),
+ aBtnHelp ( this, ScResId(5) ),
+ aGbColRow ( this, ScResId(6) )
+ {
+ FreeResource();
+ aBtnCol.Check( bCol );
+ aBtnRow.Check( bRow );
+ }
+
+ BOOL IsCol() { return aBtnCol.IsChecked(); }
+ BOOL IsRow() { return aBtnRow.IsChecked(); }
+
+private:
+ CheckBox aBtnRow;
+ CheckBox aBtnCol;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ GroupBox aGbColRow;
+};
+
+
+#endif
+
+
+
diff --git a/sc/source/ui/inc/crdlg.hxx b/sc/source/ui/inc/crdlg.hxx
new file mode 100644
index 000000000000..521a88d58e04
--- /dev/null
+++ b/sc/source/ui/inc/crdlg.hxx
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * $RCSfile: crdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CRDLG_HXX
+#define SC_CRDLG_HXX
+
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+
+#define SCRET_COLS 0x42
+#define SCRET_ROWS 0x43
+
+//------------------------------------------------------------------------
+
+class ScColOrRowDlg : public ModalDialog
+{
+public:
+ ScColOrRowDlg( Window* pParent,
+ const String& rStrTitle,
+ const String& rStrLabel,
+ BOOL bColDefault = TRUE );
+ ~ScColOrRowDlg();
+
+private:
+ RadioButton aBtnRows;
+ RadioButton aBtnCols;
+ GroupBox aGbFrame;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ DECL_LINK( OkHdl, OKButton * );
+};
+
+
+#endif
+
+
+
diff --git a/sc/source/ui/inc/crnrdlg.hrc b/sc/source/ui/inc/crnrdlg.hrc
new file mode 100644
index 000000000000..86c0e363a542
--- /dev/null
+++ b/sc/source/ui/inc/crnrdlg.hrc
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: crnrdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // -> RID_SCDLG_COLROWNAMERANGES
+
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_ADD 3
+#define BTN_REMOVE 4
+#define BTN_HELP 5
+//
+#define LB_RANGE 11
+//
+#define GB_ASSIGN 12
+#define ED_AREA 13
+#define RB_AREA 14
+#define BTN_COLHEAD 15
+#define BTN_ROWHEAD 16
+#define ED_DATA 17
+#define RB_DATA 18
+#define FT_DATA_LABEL 19
+//
diff --git a/sc/source/ui/inc/crnrdlg.hxx b/sc/source/ui/inc/crnrdlg.hxx
new file mode 100644
index 000000000000..4f977b4c09eb
--- /dev/null
+++ b/sc/source/ui/inc/crnrdlg.hxx
@@ -0,0 +1,158 @@
+/*************************************************************************
+ *
+ * $RCSfile: crnrdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_CRNRDLG_HXX
+#define SC_CRNRDLG_HXX
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx"
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+
+class ScViewData;
+class ScDocument;
+
+
+//============================================================================
+
+class ScColRowNameRangesDlg : public ScAnyRefDlg
+{
+public:
+ ScColRowNameRangesDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData );
+ ~ScColRowNameRangesDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+
+ virtual BOOL IsRefInputMode() const;
+ virtual void SetActive();
+ virtual BOOL Close();
+
+private:
+ ListBox aLbRange;
+
+ GroupBox aGbAssign;
+ ScRefEdit aEdAssign;
+ ScRefButton aRbAssign;
+ RadioButton aBtnColHead;
+ RadioButton aBtnRowHead;
+ FixedText aFtAssign2;
+ ScRefEdit aEdAssign2;
+ ScRefButton aRbAssign2;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ PushButton aBtnAdd;
+ PushButton aBtnRemove;
+
+ ScRange theCurArea;
+ ScRange theCurData;
+
+ ScRangePairListRef xColNameRanges;
+ ScRangePairListRef xRowNameRanges;
+
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ ScRefEdit* pEdActive;
+ BOOL bDlgLostFocus;
+
+#ifdef _CRNRDLG_CXX
+private:
+ void Init ();
+ void UpdateNames ();
+ void UpdateRangeData ( const String& rStrName, BOOL bColName );
+ void SetColRowData( const ScRange& rLabelRange,BOOL bRef=FALSE);
+ void AdjustColRowData( const ScRange& rDataRange,BOOL bRef=FALSE);
+ DECL_LINK( CancelBtnHdl, void * );
+ DECL_LINK( OkBtnHdl, void * );
+ DECL_LINK( AddBtnHdl, void * );
+ DECL_LINK( RemoveBtnHdl, void * );
+ DECL_LINK( Range1SelectHdl, void * );
+ DECL_LINK( Range1DataModifyHdl, void * );
+ DECL_LINK( ColClickHdl, void * );
+ DECL_LINK( RowClickHdl, void * );
+ DECL_LINK( Range2DataModifyHdl, void * );
+ DECL_LINK( EdGetFocusHdl, ScRefEdit* );
+ DECL_LINK( EdLoseFocusHdl, ScRefEdit* );
+#endif
+};
+
+
+
+#endif // SC_CRNRDLG_HXX
+
diff --git a/sc/source/ui/inc/dapidata.hxx b/sc/source/ui/inc/dapidata.hxx
new file mode 100644
index 000000000000..8da548bdca3c
--- /dev/null
+++ b/sc/source/ui/inc/dapidata.hxx
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * $RCSfile: dapidata.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DAPIDATA_HXX
+#define SC_DAPIDATA_HXX
+
+#ifndef _SV_BUTTON_HXX
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_DIALOG_HXX
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _SV_FIXED_HXX
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _SV_GROUP_HXX
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_LSTBOX_HXX
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _SV_COMBOBOX_HXX
+#include <vcl/combobox.hxx>
+#endif
+
+//------------------------------------------------------------------------
+
+struct ScImportSourceDesc;
+
+
+class ScDataPilotDatabaseDlg : public ModalDialog
+{
+private:
+ FixedText aFtDatabase;
+ ListBox aLbDatabase;
+ FixedText aFtObject;
+ ComboBox aCbObject;
+ FixedText aFtType;
+ ListBox aLbType;
+ GroupBox aGbFrame;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ void FillObjects();
+
+ DECL_LINK( SelectHdl, ListBox* );
+
+public:
+ ScDataPilotDatabaseDlg( Window* pParent );
+ ~ScDataPilotDatabaseDlg();
+
+ void GetValues( ScImportSourceDesc& rDesc );
+};
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/dapitype.hxx b/sc/source/ui/inc/dapitype.hxx
new file mode 100644
index 000000000000..ff60fdcc9411
--- /dev/null
+++ b/sc/source/ui/inc/dapitype.hxx
@@ -0,0 +1,144 @@
+/*************************************************************************
+ *
+ * $RCSfile: dapitype.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DAPITYPE_HXX
+#define SC_DAPITYPE_HXX
+
+#ifndef _SV_BUTTON_HXX
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_DIALOG_HXX
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _SV_EDIT_HXX
+#include <vcl/edit.hxx>
+#endif
+#ifndef _SV_FIXED_HXX
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _SV_GROUP_HXX
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_LSTBOX_HXX
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
+#include <com/sun/star/uno/Sequence.hxx>
+#endif
+
+//------------------------------------------------------------------------
+
+class ScDataPilotSourceTypeDlg : public ModalDialog
+{
+private:
+ RadioButton aBtnSelection;
+ RadioButton aBtnDatabase;
+ RadioButton aBtnExternal;
+ GroupBox aGbFrame;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+public:
+ ScDataPilotSourceTypeDlg( Window* pParent, BOOL bEnableExternal );
+ ~ScDataPilotSourceTypeDlg();
+
+ BOOL IsSelection() const;
+ BOOL IsDatabase() const;
+ BOOL IsExternal() const;
+};
+
+
+class ScDataPilotServiceDlg : public ModalDialog
+{
+private:
+ FixedText aFtService;
+ ListBox aLbService;
+ FixedText aFtSource;
+ Edit aEdSource;
+ FixedText aFtName;
+ Edit aEdName;
+ FixedText aFtUser;
+ Edit aEdUser;
+ FixedText aFtPasswd;
+ Edit aEdPasswd;
+ GroupBox aGbFrame;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+public:
+ ScDataPilotServiceDlg( Window* pParent,
+ const com::sun::star::uno::Sequence<rtl::OUString>& rServices );
+ ~ScDataPilotServiceDlg();
+
+ String GetServiceName() const;
+ String GetParSource() const;
+ String GetParName() const;
+ String GetParUser() const;
+ String GetParPass() const;
+};
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/dbdocfun.hxx b/sc/source/ui/inc/dbdocfun.hxx
new file mode 100644
index 000000000000..6daabeb4254e
--- /dev/null
+++ b/sc/source/ui/inc/dbdocfun.hxx
@@ -0,0 +1,126 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbdocfun.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DBDOCFUN_HXX
+#define SC_DBDOCFUN_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class String;
+
+struct ScImportParam;
+struct ScQueryParam;
+struct ScSortParam;
+struct ScSubTotalParam;
+
+class SbaSelectionList;
+class ScDBData;
+class ScDocShell;
+class ScRange;
+class ScDPObject;
+
+// ---------------------------------------------------------------------------
+
+class ScDBDocFunc
+{
+friend class ScDBFunc;
+
+private:
+ ScDocShell& rDocShell;
+
+public:
+ ScDBDocFunc( ScDocShell& rDocSh ): rDocShell(rDocSh) {}
+ ~ScDBDocFunc() {}
+
+ void UpdateImport( const String& rTarget, const String& rDBName,
+ const String& rTableName, const String& rStatement,
+ BOOL bNative, BYTE nType,
+ const SbaSelectionList* pSelection );
+ BOOL DoImport( USHORT nTab, const ScImportParam& rParam,
+ const SbaSelectionList* pSelection,
+ BOOL bRecord, BOOL bAddrInsert = FALSE );
+
+ BOOL Sort( USHORT nTab, const ScSortParam& rSortParam,
+ BOOL bRecord, BOOL bPaint, BOOL bApi );
+
+ BOOL Query( USHORT nTab, const ScQueryParam& rQueryParam,
+ const ScRange* pAdvSource, BOOL bRecord, BOOL bApi );
+
+ BOOL DoSubTotals( USHORT nTab, const ScSubTotalParam& rParam,
+ const ScSortParam* pForceNewSort,
+ BOOL bRecord, BOOL bApi );
+
+ BOOL AddDBRange( const String& rName, const ScRange& rRange, BOOL bApi );
+ BOOL DeleteDBRange( const String& rName, BOOL bApi );
+ BOOL RenameDBRange( const String& rOld, const String& rNew, BOOL bApi );
+ BOOL ModifyDBData( const ScDBData& rNewData, BOOL bApi ); // Name unveraendert
+
+ BOOL RepeatDB( const String& rDBName, BOOL bRecord, BOOL bApi );
+
+ BOOL DataPilotUpdate( ScDPObject* pOldObj, const ScDPObject* pNewObj,
+ BOOL bRecord, BOOL bApi );
+};
+
+
+
+#endif
diff --git a/sc/source/ui/inc/dbfunc.hxx b/sc/source/ui/inc/dbfunc.hxx
new file mode 100644
index 000000000000..1524e2d62d5c
--- /dev/null
+++ b/sc/source/ui/inc/dbfunc.hxx
@@ -0,0 +1,141 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbfunc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DBFUNC_HXX
+#define SC_DBFUNC_HXX
+
+#include "viewfunc.hxx"
+
+struct ScSortParam;
+struct ScQueryParam;
+class ScDBData;
+class ScDBCollection;
+class ScDPObject;
+class ScDPSaveData;
+
+// ---------------------------------------------------------------------------
+
+class ScDBFunc : public ScViewFunc
+{
+public:
+ ScDBFunc( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell );
+ ScDBFunc( Window* pParent, const ScDBFunc& rDBFunc, ScTabViewShell* pViewShell );
+ ~ScDBFunc();
+
+ // nur UISort wiederholt bei Bedarf die Teilergebnisse
+
+ void UISort( const ScSortParam& rSortParam,
+ BOOL bRecord = TRUE );
+
+ void Sort( const ScSortParam& rSortParam,
+ BOOL bRecord = TRUE, BOOL bPaint = TRUE );
+ void Query( const ScQueryParam& rQueryParam,
+ const ScRange* pAdvSource, BOOL bRecord );
+ void DoSubTotals( const ScSubTotalParam& rParam, BOOL bRecord = TRUE,
+ const ScSortParam* pForceNewSort = NULL );
+
+ void ToggleAutoFilter();
+ void HideAutoFilter();
+
+ void RepeatDB( BOOL bRecord = TRUE );
+
+ void StartQuerySh( const ScImportParam& rParam );
+ BOOL ImportData( const ScImportParam& rParam, BOOL bRecord = TRUE );
+
+ void GotoDBArea( const String& rDBName );
+
+ // DB-Bereich vom Cursor
+ ScDBData* GetDBData( BOOL bMarkArea = TRUE, ScGetDBMode eMode = SC_DB_MAKE );
+
+ void NotifyCloseDbNameDlg( const ScDBCollection& rNewColl, const List& rDelAreaList );
+
+ void Consolidate( const ScConsolidateParam& rParam, BOOL bRecord = TRUE );
+
+ void MakePivotTable( const ScDPSaveData& rData, const ScRange& rDest, BOOL bNewTable,
+ const ScDPObject& rSource, BOOL bApi = FALSE );
+ void DeletePivotTable();
+ void RecalcPivotTable();
+
+ void MakeOutline( BOOL bColumns, BOOL bRecord = TRUE );
+ void RemoveOutline( BOOL bColumns, BOOL bRecord = TRUE );
+ void RemoveAllOutlines( BOOL bRecord = TRUE );
+ void TestRemoveOutline( BOOL& rCol, BOOL& rRow );
+
+ void AutoOutline( BOOL bRecord = TRUE );
+
+ void SelectLevel( BOOL bColumns, USHORT nLevel,
+ BOOL bRecord = TRUE, BOOL bPaint = TRUE );
+ void ShowOutline( BOOL bColumns, USHORT nLevel, USHORT nEntry,
+ BOOL bRecord = TRUE, BOOL bPaint = TRUE );
+ void HideOutline( BOOL bColumns, USHORT nLevel, USHORT nEntry,
+ BOOL bRecord = TRUE, BOOL bPaint = TRUE );
+
+ void ShowMarkedOutlines( BOOL bRecord = TRUE );
+ void HideMarkedOutlines( BOOL bRecord = TRUE );
+ BOOL OutlinePossible(BOOL bHide);
+
+ void UpdateCharts(BOOL bAllCharts = FALSE); // Default: am Cursor
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/dbnamdlg.hrc b/sc/source/ui/inc/dbnamdlg.hrc
new file mode 100644
index 000000000000..06f633cbfa43
--- /dev/null
+++ b/sc/source/ui/inc/dbnamdlg.hrc
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbnamdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // -> RID_SCDLG_DBNAMES
+
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_ADD 3
+#define BTN_REMOVE 4
+#define BTN_HELP 5
+#define GB_NAME 10
+#define ED_NAME 11
+#define GB_ASSIGN 12
+#define ED_DBAREA 13
+#define RB_DBAREA 14
+#define BTN_HEADER 15
+#define BTN_SIZE 16
+#define BTN_FORMAT 17
+#define FT_SOURCE 18
+#define FT_OPERATIONS 19
+#define STR_ADD 20
+#define STR_MODIFY 21
+#define STR_DB_INVALID 22
+#define BTN_MORE 23
+#define GB_OPTIONS 24
+#define BTN_STRIPDATA 25
+
diff --git a/sc/source/ui/inc/dbnamdlg.hxx b/sc/source/ui/inc/dbnamdlg.hxx
new file mode 100644
index 000000000000..f020e9f5ddf0
--- /dev/null
+++ b/sc/source/ui/inc/dbnamdlg.hxx
@@ -0,0 +1,172 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbnamdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DBNAMDLG_HXX
+#define SC_DBNAMDLG_HXX
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+#ifndef SC_DBCOLECT_HXX
+#include "dbcolect.hxx"
+#endif
+
+#ifndef _SC_EXPFTEXT_HXX
+#include "expftext.hxx"
+#endif
+
+class ScViewData;
+class ScDocument;
+
+
+//============================================================================
+
+class ScDbNameDlg : public ScAnyRefDlg
+{
+public:
+ ScDbNameDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData );
+ ~ScDbNameDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+
+ virtual BOOL IsRefInputMode() const;
+ virtual void SetActive();
+ virtual BOOL Close();
+
+private:
+ GroupBox aGbName;
+ ComboBox aEdName;
+
+ GroupBox aGbAssign;
+ ScRefEdit aEdAssign;
+ ScRefButton aRbAssign;
+ GroupBox aGbOptions;
+ CheckBox aBtnHeader;
+ CheckBox aBtnDoSize;
+ CheckBox aBtnKeepFmt;
+ CheckBox aBtnStripData;
+ ScExpandedFixedText aFTSource; //@18.09.97 erweiterter FixedText
+ FixedText aFTOperations;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ PushButton aBtnAdd;
+ PushButton aBtnRemove;
+ MoreButton aBtnMore;
+
+ BOOL bSaved;
+
+
+ const String aStrAdd; // "Hinzufuegen"
+ const String aStrModify; // "Aendern"
+ const String aStrNoName; // "unbenannt"
+ const String aStrInvalid;
+
+ String aStrSource;
+ String aStrOperations;
+
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ BOOL bRefInputMode;
+
+ ScDBCollection aLocalDbCol;
+ ScRange theCurArea;
+ List aRemoveList;
+
+#ifdef _DBNAMDLG_CXX
+private:
+ void Init();
+ void UpdateNames();
+ void UpdateDBData( const String& rStrName );
+ void SetInfoStrings( const ScDBData* pDBData );
+
+ DECL_LINK( CancelBtnHdl, void * );
+ DECL_LINK( OkBtnHdl, void * );
+ DECL_LINK( AddBtnHdl, void * );
+ DECL_LINK( RemoveBtnHdl, void * );
+ DECL_LINK( NameModifyHdl, void * );
+ DECL_LINK( AssModifyHdl, void * );
+#endif
+};
+
+
+
+#endif // SC_DBNAMDLG_HXX
+
diff --git a/sc/source/ui/inc/delcldlg.hxx b/sc/source/ui/inc/delcldlg.hxx
new file mode 100644
index 000000000000..4cba11b33d50
--- /dev/null
+++ b/sc/source/ui/inc/delcldlg.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: delcldlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DELCLDLG_HXX
+#define SC_DELCLDLG_HXX
+
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+
+#include "global.hxx"
+
+//------------------------------------------------------------------------
+
+class ScDeleteCellDlg : public ModalDialog
+{
+private:
+ RadioButton aBtnCellsUp;
+ RadioButton aBtnCellsLeft;
+ RadioButton aBtnDelRows;
+ RadioButton aBtnDelCols;
+ GroupBox aGbFrame;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+
+public:
+ ScDeleteCellDlg( Window* pParent, BOOL bDisallowCellMove = FALSE );
+ ~ScDeleteCellDlg();
+
+ DelCellCmd GetDelCellCmd() const;
+};
+
+
+#endif // SC_DELCLDLG_HXX
+
+
diff --git a/sc/source/ui/inc/delcodlg.hxx b/sc/source/ui/inc/delcodlg.hxx
new file mode 100644
index 000000000000..7a440d256428
--- /dev/null
+++ b/sc/source/ui/inc/delcodlg.hxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * $RCSfile: delcodlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DELCODLG_HXX
+#define SC_DELCODLG_HXX
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//------------------------------------------------------------------------
+
+class ScDeleteContentsDlg : public ModalDialog
+{
+private:
+ CheckBox aBtnDelAll;
+ CheckBox aBtnDelStrings;
+ CheckBox aBtnDelNumbers;
+ CheckBox aBtnDelDateTime;
+ CheckBox aBtnDelFormulas;
+ CheckBox aBtnDelNotes;
+ CheckBox aBtnDelAttrs;
+ CheckBox aBtnDelObjects;
+ GroupBox aGbFrame;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ BOOL bObjectsDisabled;
+
+ static BOOL bPreviousAllCheck;
+ static USHORT nPreviousChecks;
+
+ void DisableChecks( BOOL bDelAllChecked = TRUE );
+ DECL_LINK( DelAllHdl, void * );
+
+public:
+ ScDeleteContentsDlg( Window* pParent,
+ USHORT nCheckDefaults = 0 );
+ ~ScDeleteContentsDlg();
+ void DisableObjects();
+
+ USHORT GetDelContentsCmdBits() const;
+};
+
+
+#endif // SC_DELCODLG_HXX
+
+
diff --git a/sc/source/ui/inc/docfunc.hxx b/sc/source/ui/inc/docfunc.hxx
new file mode 100644
index 000000000000..93015725cee6
--- /dev/null
+++ b/sc/source/ui/inc/docfunc.hxx
@@ -0,0 +1,196 @@
+/*************************************************************************
+ *
+ * $RCSfile: docfunc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DOCFUNC_HXX
+#define SC_DOCFUNC_HXX
+
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class EditEngine;
+class SfxUndoAction;
+class ScAddress;
+class ScDocShell;
+class ScMarkData;
+class ScPatternAttr;
+class ScRange;
+class ScRangeName;
+class ScBaseCell;
+struct ScTabOpParam;
+
+
+// ---------------------------------------------------------------------------
+
+class ScDocFunc
+{
+private:
+ ScDocShell& rDocShell;
+
+ BOOL AdjustRowHeight( const ScRange& rRange, BOOL bPaint = TRUE );
+ void CreateOneName( ScRangeName& rList,
+ USHORT nPosX, USHORT nPosY, USHORT nTab,
+ USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ BOOL& rCancel, BOOL bApi );
+
+public:
+ ScDocFunc( ScDocShell& rDocSh ): rDocShell(rDocSh) {}
+ ~ScDocFunc() {}
+
+ DECL_LINK( NotifyDrawUndo, SfxUndoAction* );
+
+ BOOL DetectiveAddPred(const ScAddress& rPos);
+ BOOL DetectiveDelPred(const ScAddress& rPos);
+ BOOL DetectiveAddSucc(const ScAddress& rPos);
+ BOOL DetectiveDelSucc(const ScAddress& rPos);
+ BOOL DetectiveAddError(const ScAddress& rPos);
+ BOOL DetectiveMarkInvalid(USHORT nTab);
+ BOOL DetectiveDelAll(USHORT nTab);
+ BOOL DetectiveRefresh(BOOL bAutomatic = FALSE);
+
+ BOOL DeleteContents( const ScMarkData& rMark, USHORT nFlags,
+ BOOL bRecord, BOOL bApi );
+
+ BOOL SetNormalString( const ScAddress& rPos, const String& rText, BOOL bApi );
+ BOOL PutCell( const ScAddress& rPos, ScBaseCell* pNewCell, BOOL bApi );
+ BOOL PutData( const ScAddress& rPos, EditEngine& rEngine,
+ BOOL bInterpret, BOOL bApi );
+ BOOL SetCellText( const ScAddress& rPos, const String& rText,
+ BOOL bInterpret, BOOL bEnglish, BOOL bApi );
+
+ BOOL SetNoteText( const ScAddress& rPos, const String& rText, BOOL bApi );
+
+ BOOL ApplyAttributes( const ScMarkData& rMark, const ScPatternAttr& rPattern,
+ BOOL bRecord, BOOL bApi );
+ BOOL ApplyStyle( const ScMarkData& rMark, const String& rStyleName,
+ BOOL bRecord, BOOL bApi );
+
+ BOOL InsertCells( const ScRange& rRange, InsCellCmd eCmd, BOOL bRecord, BOOL bApi );
+ BOOL DeleteCells( const ScRange& rRange, DelCellCmd eCmd, BOOL bRecord, BOOL bApi );
+
+ BOOL MoveBlock( const ScRange& rSource, const ScAddress& rDestPos,
+ BOOL bCut, BOOL bRecord, BOOL bPaint, BOOL bApi );
+
+ BOOL InsertTable( USHORT nTab, const String& rName, BOOL bRecord, BOOL bApi );
+ BOOL RenameTable( USHORT nTab, const String& rName, BOOL bRecord, BOOL bApi );
+ BOOL DeleteTable( USHORT nTab, BOOL bRecord, BOOL bApi );
+
+ BOOL SetTableVisible( USHORT nTab, BOOL bVisible, BOOL bApi );
+
+ BOOL SetWidthOrHeight( BOOL bWidth, USHORT nRangeCnt, USHORT* pRanges,
+ USHORT nTab, ScSizeMode eMode, USHORT nSizeTwips,
+ BOOL bRecord, BOOL bApi );
+
+ BOOL InsertPageBreak( BOOL bColumn, const ScAddress& rPos,
+ BOOL bRecord, BOOL bSetModified, BOOL bApi );
+ BOOL RemovePageBreak( BOOL bColumn, const ScAddress& rPos,
+ BOOL bRecord, BOOL bSetModified, BOOL bApi );
+
+ BOOL Protect( USHORT nTab, const String& rPassword, BOOL bApi );
+ BOOL Unprotect( USHORT nTab, const String& rPassword, BOOL bApi );
+
+ BOOL ClearItems( const ScMarkData& rMark, const USHORT* pWhich, BOOL bApi );
+ BOOL ChangeIndent( const ScMarkData& rMark, BOOL bIncrement, BOOL bApi );
+ BOOL AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
+ USHORT nFormatNo, BOOL bRecord, BOOL bApi );
+
+ BOOL EnterMatrix( const ScRange& rRange, const ScMarkData* pTabMark,
+ const String& rString, BOOL bApi );
+
+ BOOL TabOp( const ScRange& rRange, const ScMarkData* pTabMark,
+ const ScTabOpParam& rParam, BOOL bRecord, BOOL bApi );
+
+ BOOL FillSimple( const ScRange& rRange, const ScMarkData* pTabMark,
+ FillDir eDir, BOOL bRecord, BOOL bApi );
+ BOOL FillSeries( const ScRange& rRange, const ScMarkData* pTabMark,
+ FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd,
+ double fStart, double fStep, double fMax,
+ BOOL bRecord, BOOL bApi );
+ // FillAuto: rRange wird von Source-Range auf Dest-Range angepasst
+ BOOL FillAuto( ScRange& rRange, const ScMarkData* pTabMark,
+ FillDir eDir, USHORT nCount, BOOL bRecord, BOOL bApi );
+
+ BOOL ResizeMatrix( const ScRange& rOldRange, const ScAddress& rNewEnd, BOOL bApi );
+
+ BOOL MergeCells( const ScRange& rRange, BOOL bContents,
+ BOOL bRecord, BOOL bApi );
+ BOOL UnmergeCells( const ScRange& rRange, BOOL bRecord, BOOL bApi );
+
+ BOOL SetNote( const ScAddress& rPos, const ScPostIt& rNote, BOOL bApi );
+
+ BOOL ModifyRangeNames( const ScRangeName& rNewRanges, BOOL bApi );
+
+ BOOL CreateNames( const ScRange& rRange, USHORT nFlags, BOOL bApi );
+ BOOL InsertNameList( const ScAddress& rStartPos, BOOL bApi );
+
+ BOOL InsertAreaLink( const String& rFile, const String& rFilter,
+ const String& rOptions, const String& rSource,
+ const ScRange& rDestRange, BOOL bFitBlock, BOOL bApi );
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
new file mode 100644
index 000000000000..df81bbc3ca41
--- /dev/null
+++ b/sc/source/ui/inc/docsh.hxx
@@ -0,0 +1,395 @@
+/*************************************************************************
+ *
+ * $RCSfile: docsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DOCSHELL_HXX
+#define SC_DOCSHELL_HXX
+
+
+#ifndef _SFX_OBJSH_HXX //autogen
+#include <sfx2/objsh.hxx>
+#endif
+
+#ifndef _SFX_INTERNO_HXX //autogen
+#include <sfx2/interno.hxx>
+#endif
+
+#ifndef _SFX_OBJFAC_HXX //autogen
+#include <sfx2/docfac.hxx>
+#endif
+
+#ifndef _SFXVIEWSH_HXX //autogen
+#include <sfx2/viewsh.hxx>
+#endif
+
+
+#ifndef SC_SCDLL_HXX
+#include "scdll.hxx"
+#endif
+
+#include "document.hxx"
+#include "shellids.hxx"
+
+class ScEditEngineDefaulter;
+class FontList;
+class PrintDialog;
+class SfxStyleSheetBasePool;
+class SfxStyleSheetHint;
+class StarBASIC;
+struct ChartSelectionInfo;
+
+class ScPaintItem;
+class ScViewData;
+class ScDocFunc;
+class ScPivot;
+class ScDrawLayer;
+class ScTabViewShell;
+class ScSbxDocHelper;
+class ScAutoStyleList;
+class ScRange;
+class ScMarkData;
+class ScPaintLockData;
+class ScJobSetup;
+class ScChangeAction;
+
+//==================================================================
+
+
+//enum ScDBFormat { SC_FORMAT_SDF, SC_FORMAT_DBF };
+
+ // Extra-Flags fuer Repaint
+#define SC_PF_LINES 1
+#define SC_PF_TESTMERGE 2
+
+class ScDocShell: public SfxObjectShell, public SfxInPlaceObject, public SfxListener
+{
+ static const sal_Char __FAR_DATA pStarCalcDoc[];
+ static const sal_Char __FAR_DATA pStyleName[];
+
+ ScDocument aDocument;
+
+ String aDdeTextFmt;
+ String aConvFilterName; //@ #BugId 54198
+
+ double nPrtToScreenFactor;
+ FontList* pFontList;
+ SfxUndoManager* pUndoManager;
+ ScDocFunc* pDocFunc;
+
+ SfxObjectCreateMode eShellMode;
+
+ BOOL bIsInplace; // wird von der View gesetzt
+ BOOL bHeaderOn;
+ BOOL bFooterOn;
+ BOOL bNoInformLost;
+ BOOL bIsEmpty;
+ BOOL bIsInUndo;
+ BOOL bDocumentModifiedPending;
+
+ ScSbxDocHelper* pDocHelper;
+
+ ScAutoStyleList* pAutoStyleList;
+ ScPaintLockData* pPaintLockData;
+ ScJobSetup* pOldJobSetup;
+
+ void InitItems();
+ void DoEnterHandler();
+ void InitOptions();
+ void ResetDrawObjectShell();
+
+ BOOL GetTabParam( const SfxItemSet* pArgs, USHORT nId, USHORT& rTab );
+ BOOL LoadCalc( SvStorage* pStor );
+ BOOL SaveCalc( SvStorage* pStor );
+ USHORT GetSaveTab();
+
+ void RemoveUnknownObjects();
+
+protected:
+
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+
+public:
+ TYPEINFO();
+
+ SFX_DECL_INTERFACE(SCID_DOC_SHELL);
+ SFX_DECL_OBJECTFACTORY_DLL( ScDocShell, SC_DLL() );
+
+ ScDocShell( const ScDocShell& rDocShell );
+ ScDocShell( SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED );
+ ~ScDocShell();
+
+ virtual void Activate();
+ virtual void Deactivate();
+
+ virtual SfxUndoManager* GetUndoManager();
+
+ virtual void FillRegInfo( SvEmbeddedRegistryInfo* pInfo );
+ virtual void FillClass( SvGlobalName * pClassName,
+ ULONG * pFormat,
+ String * pAppName,
+ String * pFullTypeName,
+ String * pShortTypeName,
+ long nFileFormat = SOFFICE_FILEFORMAT_NOW ) const;
+
+ virtual BOOL InitNew( SvStorage * );
+ virtual BOOL Load( SvStorage * );
+ virtual BOOL LoadFrom( SvStorage * );
+ virtual BOOL ConvertFrom( SfxMedium &rMedium );
+ virtual void HandsOff();
+ virtual BOOL Save();
+ virtual BOOL SaveAs( SvStorage * pNewStor );
+ virtual BOOL ConvertTo( SfxMedium &rMedium );
+ virtual USHORT PrepareClose( BOOL bUI = TRUE, BOOL bForBrowsing = FALSE );
+ virtual void PrepareReload();
+ virtual BOOL IsInformationLost();
+ virtual void LoadStyles( SfxObjectShell &rSource );
+ virtual BOOL Insert( SfxObjectShell &rSource,
+ USHORT nSourceIdx1, USHORT nSourceIdx2, USHORT nSourceIdx3,
+ USHORT &nIdx1, USHORT &nIdx2, USHORT &nIdx3, USHORT &rIdxDeleted );
+
+ virtual BOOL SaveCompleted( SvStorage * pNewStor ); // SfxInPlaceObject
+ virtual BOOL DoSaveCompleted( SfxMedium * pNewStor); // SfxObjectShell
+
+ virtual void Draw( OutputDevice *, const JobSetup & rSetup,
+ USHORT nAspect = ASPECT_CONTENT );
+
+ virtual void SetVisArea( const Rectangle & rVisArea );
+ virtual Rectangle GetVisArea( USHORT nAspect ) const;
+
+ virtual Printer* GetDocumentPrinter();
+
+ virtual void SetModified( BOOL = TRUE );
+
+ void SetVisAreaOrSize( const Rectangle& rVisArea, BOOL bModifyStart );
+
+ virtual SvDataMemberObjectRef CreateSnapshot();
+
+ virtual SfxDocumentInfoDialog* CreateDocumentInfoDialog( Window *pParent,
+ const SfxItemSet &rSet );
+
+ void GetDocStat( ScDocStat& rDocStat );
+
+ ScDocument* GetDocument() { return &aDocument; }
+ ScDocFunc& GetDocFunc() { return *pDocFunc; }
+
+ SfxPrinter* GetPrinter();
+ USHORT SetPrinter( SfxPrinter* pNewPrinter, USHORT nDiffFlags = SFX_PRINTER_ALL );
+
+ void UpdateFontList();
+
+ String CreateObjectName( const String& rPrefix );
+
+ ScDrawLayer* MakeDrawLayer();
+
+ ULONG SbaSdbImport( const String& rName, const String& rParStr, BOOL bHeader, BOOL bSimpleColWidth[MAXCOL+1] );
+ ULONG SbaSdbExport( BOOL& bHasMemo, const String& rParStr, const String& aFileName );
+ void AsciiSave( SvStream& rStream, sal_Unicode cDelim, sal_Unicode cStrDelim,
+ CharSet eCharSet);
+
+ void GetSbxState( SfxItemSet &rSet );
+ void GetDrawObjState( SfxItemSet &rSet );
+
+ void Execute( SfxRequest& rReq );
+ void GetState( SfxItemSet &rSet );
+ void ExecutePageStyle ( SfxViewShell& rCaller, SfxRequest& rReq, USHORT nCurTab );
+ void GetStatePageStyle( SfxViewShell& rCaller, SfxItemSet& rSet, USHORT nCurTab );
+
+ void CompareDocument( ScDocument& rOtherDoc );
+ void MergeDocument( ScDocument& rOtherDoc );
+
+ ScChangeAction* GetChangeAction( const ScAddress& rPos );
+ void SetChangeComment( ScChangeAction* pAction, const String& rComment );
+ void ExecuteChangeCommentDialog( ScChangeAction* pAction, Window* pParent,BOOL bPrevNext=TRUE );
+
+ void SetPrintZoom( USHORT nTab, USHORT nScale, USHORT nPages );
+ BOOL AdjustPrintZoom( const ScRange& rRange );
+
+ void PageStyleModified( const String& rStyleName, BOOL bApi );
+
+ void NotifyStyle( const SfxStyleSheetHint& rHint );
+ void DoAutoStyle( const ScRange& rRange, const String& rStyle );
+
+ Window* GetDialogParent();
+ void ErrorMessage( USHORT nGlobStrId );
+
+ BOOL AdjustRowHeight( USHORT nStartRow, USHORT nEndRow, USHORT nTab );
+
+ void PivotUpdate( ScPivot* pOldPivot, ScPivot* pNewPivot,
+ BOOL bRecord = TRUE, BOOL bApi = FALSE );
+ void RefreshPivotTables( const ScRange& rSource );
+ void DoConsolidate( const ScConsolidateParam& rParam, BOOL bRecord = TRUE );
+ void UseScenario( USHORT nTab, const String& rName, BOOL bRecord = TRUE );
+ USHORT MakeScenario( USHORT nTab, const String& rName, const String& rComment,
+ const Color& rColor, USHORT nFlags,
+ ScMarkData& rMark, BOOL bRecord = TRUE );
+ void ModifyScenario( USHORT nTab, const String& rName, const String& rComment,
+ const Color& rColor, USHORT nFlags );
+ BOOL MoveTable( USHORT nSrcTab, USHORT nDestTab, BOOL bCopy, BOOL bRecord );
+
+ void DoRecalc( BOOL bApi );
+ void DoHardRecalc( BOOL bApi );
+
+ void PreparePrint( PrintDialog* pPrintDialog, ScMarkData* pMarkData );
+ void Print( SfxProgress& rProgress, PrintDialog* pPrintDialog,
+ ScMarkData* pMarkData, BOOL bForceSelected = FALSE );
+
+ void UpdateOle( const ScViewData* pViewData, BOOL bSnapSize = FALSE );
+ BOOL IsOle();
+
+ void DBAreaDeleted( USHORT nTab, USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 );
+ ScDBData* GetDBData( const ScRange& rMarked, ScGetDBMode eMode, BOOL bForceMark );
+
+ void UpdateLinks(); // Link-Eintraege aktuallisieren
+ BOOL ReloadTabLinks(); // Links ausfuehren (Inhalt aktualisieren)
+
+ void PostEditView( ScEditEngineDefaulter* pEditEngine, const ScAddress& rCursorPos );
+
+ void PostPaint( USHORT nStartCol, USHORT nStartRow, USHORT nStartTab,
+ USHORT nEndCol, USHORT nEndRow, USHORT nEndTab, USHORT nPart,
+ USHORT nExtFlags = 0 );
+ void PostPaint( const ScRange& rRange, USHORT nPart, USHORT nExtFlags = 0 );
+
+ void PostPaintCell( USHORT nCol, USHORT nRow, USHORT nTab );
+ void PostPaintGridAll();
+ void PostPaintExtras();
+
+ void PostDataChanged();
+
+ void SetDocumentModified( BOOL bIsModified = TRUE );
+ void SetDrawModified( BOOL bIsModified = TRUE );
+
+ void LockPaint();
+ void UnlockPaint();
+ USHORT GetLockCount() const;
+ void SetLockCount(USHORT nNew);
+
+ DECL_LINK( ChartSelectionHdl, ChartSelectionInfo* );
+
+ virtual SfxStyleSheetBasePool* GetStyleSheetPool();
+
+ void SetInplace( BOOL bInplace );
+ BOOL IsEmpty() const;
+ void ResetEmpty();
+
+ BOOL IsInUndo() const { return bIsInUndo; }
+ void SetInUndo(BOOL bSet);
+
+ void CalcOutputFactor();
+ double GetOutputFactor() const;
+ void GetPageOnFromPageStyleSet( const SfxItemSet* pStyleSet,
+ USHORT nCurTab,
+ BOOL& rbHeader,
+ BOOL& rbFooter );
+
+ virtual long DdeGetData( const String& rItem, SvData& rData );
+ virtual long DdeSetData( const String& rItem, const SvData& rData );
+ virtual SvPseudoObject* DdeCreateHotLink( const String& rItem );
+
+ const String& GetDdeTextFmt() const { return aDdeTextFmt; }
+
+ ScTabViewShell* GetBestViewShell();
+ ScSbxDocHelper* GetDocHelperObject() { return pDocHelper; }
+
+ void SetDocumentModifiedPending( BOOL bVal )
+ { bDocumentModifiedPending = bVal; }
+ BOOL IsDocumentModifiedPending() const
+ { return bDocumentModifiedPending; }
+
+ static ScViewData* GetViewData();
+ static USHORT GetCurTab();
+
+ static ScDocShell* GetShellByNum( USHORT nDocNo );
+ static String GetOwnFilterName();
+ static BOOL HasAutomaticTableName( const String& rFilter );
+};
+
+SO2_DECL_REF(ScDocShell)
+SO2_IMPL_REF(ScDocShell)
+
+
+// Vor Modifizierungen des Dokuments anlegen und danach zerstoeren.
+// Merkt sich im Ctor AutoCalcShellDisabled und IdleDisabled, schaltet sie ab
+// und stellt sie im Dtor wieder her, AutoCalcShellDisabled ggbf. auch vor
+// einem ScDocShell SetDocumentModified.
+// SetDocumentModified hierdran aufrufen statt an der ScDocShell.
+// Im Dtor wird wenn ScDocShell bDocumentModifiedPending gesetzt ist und
+// bAutoCalcShellDisabled nicht gesetzt ist ein SetDocumentModified gerufen.
+class ScDocShellModificator
+{
+ ScDocShell& rDocShell;
+ BOOL bAutoCalcShellDisabled;
+ BOOL bIdleDisabled;
+
+ // not implemented
+ ScDocShellModificator( const ScDocShellModificator& );
+ ScDocShellModificator& operator=( const ScDocShellModificator& );
+
+public:
+ ScDocShellModificator( ScDocShell& );
+ ~ScDocShellModificator();
+ void SetDocumentModified();
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/drawsh.hxx b/sc/source/ui/inc/drawsh.hxx
new file mode 100644
index 000000000000..f026e8cbf6ed
--- /dev/null
+++ b/sc/source/ui/inc/drawsh.hxx
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DRAWSH_HXX
+#define SC_DRAWSH_HXX
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#include "shellids.hxx"
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#ifndef _SVDMARK_HXX //autogen
+#include <svx/svdmark.hxx>
+#endif
+
+class ScViewData;
+
+
+class ScDrawShell : public SfxShell
+{
+ ScViewData* pViewData;
+
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_DRAW_SHELL);
+
+ ScDrawShell(ScViewData* pData);
+ ~ScDrawShell();
+
+ void StateDisableItems( SfxItemSet &rSet );
+
+ void ExecDrawAttr(SfxRequest& rReq);
+ void GetDrawAttrState(SfxItemSet &rSet);
+ void GetAttrFuncState(SfxItemSet &rSet);
+
+ void ExecDrawFunc(SfxRequest& rReq);
+ void GetDrawFuncState(SfxItemSet &rSet);
+ void GetState(SfxItemSet &rSet);
+
+ void ExecFormText(SfxRequest& rReq); // StarFontWork
+ void GetFormTextState(SfxItemSet& rSet);
+
+ void ExecuteHLink(SfxRequest& rReq); // Hyperlink
+ void GetHLinkState(SfxItemSet& rSet);
+
+ void ExecuteLineDlg( SfxRequest& rReq, USHORT nTabPage = 0xffff );
+ void ExecuteAreaDlg( SfxRequest& rReq, USHORT nTabPage = 0xffff );
+ void ExecuteTextAttrDlg( SfxRequest& rReq, USHORT nTabPage = 0xffff );
+
+ BOOL AreAllObjectsOnLayer(USHORT nLayerNo,const SdrMarkList& rMark);
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/drawutil.hxx b/sc/source/ui/inc/drawutil.hxx
new file mode 100644
index 000000000000..45254a88ef97
--- /dev/null
+++ b/sc/source/ui/inc/drawutil.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawutil.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DRAWUTIL_HXX
+#define SC_DRAWUTIL_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class Fraction;
+class OutputDevice;
+class ScDocument;
+
+class ScDrawUtil
+{
+public:
+ static void CalcScale( ScDocument* pDoc, USHORT nTab,
+ USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ OutputDevice* pDev, const Fraction& rZoomX, const Fraction& rZoomY,
+ double nPPTX, double nPPTY,
+ Fraction& rScaleX, Fraction& rScaleY );
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/drawview.hxx b/sc/source/ui/inc/drawview.hxx
new file mode 100644
index 000000000000..b273166ecd67
--- /dev/null
+++ b/sc/source/ui/inc/drawview.hxx
@@ -0,0 +1,156 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawview.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DRAWVIEW_HXX
+#define SC_DRAWVIEW_HXX
+
+#ifndef _SVX_FMVIEW_HXX //autogen
+#include <svx/fmview.hxx>
+#endif
+
+#include "global.hxx"
+
+class ScDocument;
+class ScViewData;
+class SdrViewUserMarker;
+
+class ScDrawView: public FmFormView
+{
+ ScViewData* pViewData;
+ OutputDevice* pDev; //! noetig ?
+ ScDocument* pDoc;
+ USHORT nTab;
+ Fraction aScaleX; // Faktor fuer Drawing-MapMode
+ Fraction aScaleY;
+ SdrViewUserMarker* pDropMarker;
+ SdrObject* pDropMarkObj;
+ BOOL bInConstruct;
+ BOOL bDisableHdl;
+
+ void Construct();
+ void UpdateBrowser();
+
+protected:
+ virtual void ModelHasChanged();
+ virtual void MakeVisible( const Rectangle& rRect, Window& rWin );
+
+ // add custom handles (used by other apps, e.g. AnchorPos)
+ virtual void AddCustomHdl();
+
+public:
+ ScDrawView( OutputDevice* pOut, ScViewData* pData );
+ ScDrawView( OutputDevice* pOut, ScDocument* pDocument, USHORT nTable );
+ virtual ~ScDrawView();
+
+ virtual void MarkListHasChanged();
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+
+ void DrawMarks( OutputDevice* pOut ) const;
+
+ void MarkDropObj( SdrObject* pObj );
+
+ BOOL IsDisableHdl() const { return bDisableHdl; }
+
+ void SetMarkedToLayer( BYTE nLayerNo );
+
+ void InvalidateAttribs();
+ void InvalidateDrawTextAttrs();
+
+ BOOL BeginDrag( Window* pWindow, const Point& rStartPos );
+ void DoCut();
+ void DoCopy();
+
+ void GetScale( Fraction& rFractX, Fraction& rFractY ) const;
+ void RecalcScale();
+ void UpdateWorkArea();
+
+ void CalcNormScale( Fraction& rFractX, Fraction& rFractY ) const;
+
+ void PaintObject( SdrObject* pObject, OutputDevice* pDev ) const;
+
+ void SetAnchor( ScAnchorType );
+ ScAnchorType GetAnchor() const;
+
+ void VCAddWin( Window* pWin );
+ void VCRemoveWin( Window* pWin );
+
+ void UpdateIMap( SdrObject* pObj );
+
+ USHORT GetPopupMenuId();
+ void UpdateUserViewOptions();
+
+ void SetMarkedOriginalSize();
+
+ BOOL SelectObject( const String& rName );
+ String GetSelectedChartName() const;
+ BOOL HasMarkedControl() const;
+
+ FASTBOOL InsertObjectSafe(SdrObject* pObj, SdrPageView& rPV, ULONG nOptions=0);
+
+ SdrEndTextEditKind ScEndTextEdit(); // ruft SetDrawTextUndo(0)
+};
+
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/drformsh.hxx b/sc/source/ui/inc/drformsh.hxx
new file mode 100644
index 000000000000..f62a97611032
--- /dev/null
+++ b/sc/source/ui/inc/drformsh.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * $RCSfile: drformsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef DRFORMSH_HXX
+#define DRFORMSH_HXX
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#include "shellids.hxx"
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#ifndef _SVDMARK_HXX //autogen
+#include <svx/svdmark.hxx>
+#endif
+
+class ScViewData;
+
+
+#include "drawsh.hxx"
+
+class ScDrawFormShell: public ScDrawShell
+{
+public:
+
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_FORM_SHELL);
+
+ ScDrawFormShell(ScViewData* pData);
+ virtual ~ScDrawFormShell();
+
+// void Execute(SfxRequest &);
+// void GetState(SfxItemSet &);
+};
+
+#endif
diff --git a/sc/source/ui/inc/drtxtob.hxx b/sc/source/ui/inc/drtxtob.hxx
new file mode 100644
index 000000000000..913e253d4898
--- /dev/null
+++ b/sc/source/ui/inc/drtxtob.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: drtxtob.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_DRTXTOB_HXX
+#define SC_DRTXTOB_HXX
+
+#ifndef _SFX_HXX
+#endif
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#include "shellids.hxx"
+
+USHORT ScGetFontWorkId(); // statt SvxFontWorkChildWindow::GetChildWindowId()
+
+class ScViewData;
+
+class ScDrawTextObjectBar : public SfxShell
+{
+ ScViewData* pViewData;
+
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_DRAW_TEXT_SHELL);
+
+ ScDrawTextObjectBar(ScViewData* pData);
+ ~ScDrawTextObjectBar();
+
+ void StateDisableItems( SfxItemSet &rSet );
+
+ void Execute( SfxRequest &rReq );
+ void GetState( SfxItemSet& rSet );
+ void GetClipState( SfxItemSet& rSet );
+
+ void ExecuteAttr( SfxRequest &rReq );
+ void GetAttrState( SfxItemSet& rSet );
+ void ExecuteToggle( SfxRequest &rReq );
+
+ BOOL ExecuteCharDlg( const SfxItemSet& rArgs, SfxItemSet& rOutSet );
+ BOOL ExecuteParaDlg( const SfxItemSet& rArgs, SfxItemSet& rOutSet );
+
+ void ExecuteExtra( SfxRequest &rReq );
+ void ExecFormText(SfxRequest& rReq); // StarFontWork
+ void GetFormTextState(SfxItemSet& rSet);
+
+private:
+ void ExecuteGlobal( SfxRequest &rReq ); // von Execute gerufen fuer ganze Objekte
+ void GetGlobalClipState( SfxItemSet& rSet );
+ void ExecutePasteContents( SfxRequest &rReq );
+ BOOL HasPasteContents();
+ BOOL IsNoteEdit();
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/dwfunctr.hxx b/sc/source/ui/inc/dwfunctr.hxx
new file mode 100644
index 000000000000..2553e571ab10
--- /dev/null
+++ b/sc/source/ui/inc/dwfunctr.hxx
@@ -0,0 +1,214 @@
+/*************************************************************************
+ *
+ * $RCSfile: dwfunctr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SC_DWFUNCTR_HXX
+#define _SC_DWFUNCTR_HXX
+
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+
+#ifndef _SFXDOCKWIN_HXX //autogen
+#include <sfx2/dockwin.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _IMAGEBTN_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+#ifndef SC_FUNCUTL_HXX
+#include "funcutl.hxx"
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScAddress
+#endif
+
+#ifndef SC_PRIVSPLT_HXX
+#include "privsplt.hxx"
+#endif
+
+#ifndef LRU_MAX
+#define LRU_MAX 10
+#endif
+/*************************************************************************
+|*
+|* Ableitung vom SfxChildWindow als "Behaelter" fuer Controller
+|*
+\************************************************************************/
+
+class ScFunctionChildWindow : public SfxChildWindow
+{
+ public:
+ ScFunctionChildWindow( Window*, USHORT, SfxBindings*,
+ SfxChildWinInfo* );
+
+ SFX_DECL_CHILDWINDOW(ScFunctionChildWindow);
+};
+
+/*************************************************************************
+|*
+|* ScFuncDockWin
+|*
+\************************************************************************/
+
+class ScFunctionDockWin : public SfxDockingWindow, public SfxListener
+{
+
+private:
+ Timer aTimer;
+ ScPrivatSplit aPrivatSplit;
+ ListBox aCatBox;
+ ListBox aFuncList;
+ ListBox aDDFuncList;
+ ListBox* pAllFuncList;
+
+ SfxChildAlignment eSfxNewAlignment;
+ SfxChildAlignment eSfxOldAlignment;
+ ImageButton aInsertButton;
+ FixedText aFiFuncDesc;
+ USHORT nLeftSlot;
+ USHORT nRightSlot;
+ ULONG nMinWidth;
+ ULONG nMinHeight;
+ Size aOldSize;
+ BOOL bSizeFlag;
+ BOOL bInit;
+ short nDockMode;
+ Point aSplitterInitPos;
+ ScFuncDesc* pFuncDesc;
+ USHORT nArgs;
+ String** pArgArr;
+
+
+ ScFuncDesc* aLRUList[LRU_MAX];
+
+ void UpdateFunctionList();
+ void UpdateLRUList();
+ void DoEnter(BOOL bOk); //@@ ???
+ void SetDescription();
+ void SetLeftRightSize();
+ void SetTopBottonSize();
+ void SetMyWidthLeRi(Size &aNewSize);
+ void SetMyHeightLeRi(Size &aNewSize);
+ void SetMyWidthToBo(Size &aNewSize);
+ void SetMyHeightToBo(Size &aNewSize);
+
+ DECL_LINK( SetSelectionHdl, void* );
+ DECL_LINK( SelHdl, ListBox* );
+ DECL_LINK(SetSplitHdl,ScPrivatSplit*);
+ DECL_LINK( TimerHdl, Timer*);
+
+protected:
+
+ virtual BOOL Close();
+ virtual void Resize();
+ virtual void Resizing( Size& rSize );
+ virtual void SetSize();
+ virtual void ToggleFloatingMode();
+ virtual void StateChanged( StateChangedType nStateChange );
+
+
+ virtual SfxChildAlignment CheckAlignment(SfxChildAlignment,
+ SfxChildAlignment eAlign);
+
+public:
+ ScFunctionDockWin( SfxBindings* pBindings,
+ SfxChildWindow *pCW,
+ Window* pParent,
+ const ResId& rResId );
+
+ ~ScFunctionDockWin();
+
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+
+ void SetSlotIDs( USHORT nLeft, USHORT nRight )
+ { nLeftSlot = nLeft; nRightSlot = nRight; }
+
+ void InitLRUList();
+
+ void Initialize (SfxChildWinInfo* pInfo);
+ virtual void FillInfo(SfxChildWinInfo&) const;
+};
+
+#endif
+
+
diff --git a/sc/source/ui/inc/editsh.hxx b/sc/source/ui/inc/editsh.hxx
new file mode 100644
index 000000000000..ea646925f09f
--- /dev/null
+++ b/sc/source/ui/inc/editsh.hxx
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * $RCSfile: editsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_EDITSH_HXX
+#define SC_EDITSH_HXX
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#include "shellids.hxx"
+
+class EditView;
+class ScViewData;
+class SvxURLField;
+
+class ScEditShell : public SfxShell
+{
+private:
+ EditView* pEditView;
+ ScViewData* pViewData;
+ BOOL bIsInsertMode;
+
+ const SvxURLField* GetURLField();
+
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_EDIT_SHELL);
+
+ ScEditShell(EditView* pView, ScViewData* pData);
+ ~ScEditShell();
+
+ void SetEditView(EditView* pView);
+
+ void Execute(SfxRequest& rReq);
+ void GetState(SfxItemSet &rSet);
+ void GetClipState(SfxItemSet& rSet);
+
+ void ExecuteAttr(SfxRequest& rReq);
+ void GetAttrState(SfxItemSet &rSet);
+
+ String GetSelectionText( BOOL bWholeWord );
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/expftext.hxx b/sc/source/ui/inc/expftext.hxx
new file mode 100644
index 000000000000..b0b25cd0f273
--- /dev/null
+++ b/sc/source/ui/inc/expftext.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * $RCSfile: expftext.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SC_EXPFTEXT_HXX
+#define _SC_EXPFTEXT_HXX
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+class ScExpandedFixedText: public FixedText
+{
+ protected:
+
+ void RequestHelp( const HelpEvent& rHEvt );
+
+ public:
+
+ ScExpandedFixedText( Window* pParent,WinBits nWinStyle = 0);
+ ScExpandedFixedText( Window* pWindow, const ResId& rResId);
+};
+
+
+#endif
diff --git a/sc/source/ui/inc/fieldwnd.hxx b/sc/source/ui/inc/fieldwnd.hxx
new file mode 100644
index 000000000000..d7fe6c07eb1f
--- /dev/null
+++ b/sc/source/ui/inc/fieldwnd.hxx
@@ -0,0 +1,131 @@
+/*************************************************************************
+ *
+ * $RCSfile: fieldwnd.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FIELDWND_HXX
+#define SC_FIELDWND_HXX
+
+
+#ifndef _SV_WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+
+
+#define MAX_LABELS 256
+#define PAGE_SIZE 16
+#define LINE_SIZE 8
+#define MAX_FIELDS 8
+#define EMPTY_SLOT 0xffff
+
+#define OWIDTH PivotGlobal::nObjWidth
+#define OHEIGHT PivotGlobal::nObjHeight
+#define SSPACE PivotGlobal::nSelSpace
+
+//===================================================================
+
+enum FieldType
+{
+ TYPE_ROW, TYPE_COL, TYPE_DATA, TYPE_SELECT
+};
+
+//-------------------------------------------------------------------
+class ScPivotLayoutDlg;
+
+class FieldWindow : public Window
+{
+public:
+ FieldWindow( ScPivotLayoutDlg* pDialog, const ResId& rResId,
+ FieldType eType );
+ ~FieldWindow();
+
+ BOOL AddField ( const String& rStr, const Point& rAt, USHORT& rAddedAt );
+ void AddField ( const String& rStr, USHORT nIndex );
+ void DelField ( USHORT nFieldIndex );
+ void ClearFields ();
+ void Redraw ();
+ void SetText ( const String& rStr, USHORT nIndex );
+ BOOL GetInsertIndex ( const Point& rInsertPos, USHORT& rIndex );
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+ virtual void MouseButtonDown ( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp ( const MouseEvent& rMEvt );
+ virtual void MouseMove ( const MouseEvent& rMEvt );
+
+private:
+ ScPivotLayoutDlg* pDlg;
+ Rectangle aWndRect;
+ FieldType eFieldType;
+ Point aCenterPos;
+ String** aFieldArr;
+ USHORT nFieldSize;
+ USHORT nFieldCount;
+
+private:
+ void DoPaint ( const Rectangle& rRect );
+ void DrawField ( OutputDevice& rDev,
+ const Rectangle& rRect,
+ const String& rStr );
+ BOOL GetFieldIndex ( const Point& rPos, USHORT& rIndex );
+ BOOL GetFirstEmptySlot ( USHORT& rIndex );
+};
+
+
+#endif // SC_FIELDWND_HXX
diff --git a/sc/source/ui/inc/filldlg.hxx b/sc/source/ui/inc/filldlg.hxx
new file mode 100644
index 000000000000..01a8ccb860ee
--- /dev/null
+++ b/sc/source/ui/inc/filldlg.hxx
@@ -0,0 +1,181 @@
+/*************************************************************************
+ *
+ * $RCSfile: filldlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FILLDLG_HXX
+#define SC_FILLDLG_HXX
+
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScDocument;
+
+//----------------------------------------------------------------------------
+
+#define FDS_OPT_NONE 0
+#define FDS_OPT_HORZ 1
+#define FDS_OPT_VERT 2
+
+//============================================================================
+
+class ScFillSeriesDlg : public ModalDialog
+{
+public:
+ ScFillSeriesDlg( Window* pParent,
+ ScDocument& rDocument,
+ FillDir eFillDir,
+ FillCmd eFillCmd,
+ FillDateCmd eFillDateCmd,
+ String aStartStr,
+ double fStep,
+ double fMax,
+ USHORT nPossDir );
+ ~ScFillSeriesDlg();
+
+ FillDir GetFillDir() const { return theFillDir; }
+ FillCmd GetFillCmd() const { return theFillCmd; }
+ FillDateCmd GetFillDateCmd() const { return theFillDateCmd; }
+ double GetStart() const { return fStartVal; }
+ double GetStep() const { return fIncrement; }
+ double GetMax() const { return fEndVal; }
+
+ String GetStartStr() const { return aEdStartVal.GetText(); }
+
+ void SetEdStartValEnabled(BOOL bFlag=FALSE);
+
+private:
+ RadioButton aBtnDown;
+ RadioButton aBtnRight;
+ RadioButton aBtnUp;
+ RadioButton aBtnLeft;
+ GroupBox aGbDirection;
+
+ RadioButton aBtnArithmetic;
+ RadioButton aBtnGeometric;
+ RadioButton aBtnDate;
+ RadioButton aBtnAutoFill;
+ GroupBox aGbType;
+
+ RadioButton aBtnDay;
+ RadioButton aBtnDayOfWeek;
+ RadioButton aBtnMonth;
+ RadioButton aBtnYear;
+ GroupBox aGbTimeUnit;
+
+ BOOL bStartValFlag;
+ FixedText aFtStartVal;
+ Edit aEdStartVal;
+ String aStartStrVal;
+
+ FixedText aFtEndVal;
+ Edit aEdEndVal;
+
+ FixedText aFtIncrement;
+ Edit aEdIncrement;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ const String errMsgInvalidVal;
+
+ //----------------------------------------------------------
+
+ ScDocument& rDoc;
+ FillDir theFillDir;
+ FillCmd theFillCmd;
+ FillDateCmd theFillDateCmd;
+ double fStartVal;
+ double fIncrement;
+ double fEndVal;
+
+#ifdef _FILLDLG_CXX
+private:
+ void Init( USHORT nPossDir );
+ BOOL CheckStartVal();
+ BOOL CheckIncrementVal();
+ BOOL CheckEndVal();
+
+ DECL_LINK( OKHdl, void * );
+ DECL_LINK( DisableHdl, Button * );
+#endif
+};
+
+
+
+#endif // SC_FILLDLG_HXX
+
diff --git a/sc/source/ui/inc/filtdlg.hxx b/sc/source/ui/inc/filtdlg.hxx
new file mode 100644
index 000000000000..39cbc64e5291
--- /dev/null
+++ b/sc/source/ui/inc/filtdlg.hxx
@@ -0,0 +1,293 @@
+/*************************************************************************
+ *
+ * $RCSfile: filtdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FILTDLG_HXX
+#define SC_FILTDLG_HXX
+
+#ifndef VCL
+#endif
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // -> ScQueryParam
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+
+//----------------------------------------------------------------------------
+
+class ScFilterOptionsMgr;
+class ScRangeData;
+class ScViewData;
+class ScDocument;
+class ScQueryItem;
+class TypedStrCollection;
+
+//==================================================================
+// Gemeinsame Resource-Objekte:
+
+#define _COMMON_FILTER_RSCOBJS \
+ CheckBox aBtnCase; \
+ CheckBox aBtnRegExp; \
+ CheckBox aBtnHeader; \
+ CheckBox aBtnUnique; \
+ CheckBox aBtnCopyResult; \
+ ListBox aLbCopyArea; \
+ ScRefEdit aEdCopyArea; \
+ ScRefButton aRbCopyArea; \
+ CheckBox aBtnDestPers; \
+ FixedText aFtDbAreaLabel; \
+ FixedInfo aFtDbArea; \
+ GroupBox aGbOptions; \
+ OKButton aBtnOk; \
+ CancelButton aBtnCancel; \
+ HelpButton aBtnHelp; \
+ MoreButton aBtnMore; \
+ const String aStrUndefined; \
+ const String aStrNoName; \
+ const String aStrNone;
+
+
+#define _INIT_COMMON_FILTER_RSCOBJS \
+ aBtnCase ( this, ScResId( BTN_CASE ) ), \
+ aBtnRegExp ( this, ScResId( BTN_REGEXP ) ), \
+ aBtnHeader ( this, ScResId( BTN_HEADER ) ), \
+ aBtnUnique ( this, ScResId( BTN_UNIQUE ) ), \
+ aBtnCopyResult ( this, ScResId( BTN_COPY_RESULT ) ), \
+ aLbCopyArea ( this, ScResId( LB_COPY_AREA ) ), \
+ aEdCopyArea ( this, ScResId( ED_COPY_AREA ) ), \
+ aRbCopyArea ( this, ScResId( RB_COPY_AREA ), &aEdCopyArea ), \
+ aBtnDestPers ( this, ScResId( BTN_DEST_PERS ) ), \
+ aFtDbAreaLabel ( this, ScResId( FT_DBAREA_LABEL ) ), \
+ aFtDbArea ( this, ScResId( FT_DBAREA ) ), \
+ aGbOptions ( this, ScResId( GB_OPTIONS ) ), \
+ aBtnOk ( this, ScResId( BTN_OK ) ), \
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ), \
+ aBtnHelp ( this, ScResId( BTN_HELP ) ), \
+ aBtnMore ( this, ScResId( BTN_MORE ) ), \
+ aStrNoName ( ScGlobal::GetRscString(STR_DB_NONAME) ), \
+ aStrNone ( ScResId( SCSTR_NONE ) ), \
+ aStrUndefined ( ScResId( SCSTR_UNDEFINED ) ),
+
+
+//============================================================================
+class ScFilterDlg : public ScAnyRefDlg
+{
+public:
+ ScFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ const SfxItemSet& rArgSet );
+ ~ScFilterDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+
+ virtual BOOL IsRefInputMode() const;
+ virtual void SetActive();
+
+ virtual BOOL Close();
+
+private:
+ ListBox aLbField1;
+ ListBox aLbCond1;
+ ComboBox aEdVal1;
+ //----------------------------
+ ListBox aLbConnect1;
+ ListBox aLbField2;
+ ListBox aLbCond2;
+ ComboBox aEdVal2;
+ //----------------------------
+ ListBox aLbConnect2;
+ ListBox aLbField3;
+ ListBox aLbCond3;
+ ComboBox aEdVal3;
+ //----------------------------
+ FixedText aFtConnect;
+ FixedText aFtField;
+ FixedText aFtCond;
+ FixedText aFtVal;
+ GroupBox aGbCriteria;
+
+ _COMMON_FILTER_RSCOBJS
+
+ const String aStrEmpty;
+ const String aStrNotEmpty;
+ const String aStrRow;
+ const String aStrColumn;
+
+ ScFilterOptionsMgr* pOptionsMgr;
+
+ const USHORT nWhichQuery;
+ const ScQueryParam theQueryData;
+ ScQueryItem* pOutItem;
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ USHORT nSrcTab;
+
+ ComboBox* aValueEdArr[3];
+ ListBox* aFieldLbArr[3];
+ ListBox* aCondLbArr[3];
+ USHORT nFieldCount;
+ BOOL bRefInputMode;
+
+ TypedStrCollection* pEntryLists[MAXCOL+1];
+ USHORT nHeaderPos[MAXCOL+1];
+
+ // Hack: RefInput-Kontrolle
+ Timer* pTimer;
+
+#ifdef _FILTDLG_CXX
+private:
+ void Init ( const SfxItemSet& rArgSet );
+ void FillFieldLists ();
+ void FillAreaList ();
+ void UpdateValueList ( USHORT nList );
+ void UpdateHdrInValueList( USHORT nList );
+ void ClearValueList ( USHORT nList );
+ USHORT GetFieldSelPos ( USHORT nField );
+ ScQueryItem* GetOutputItem ();
+
+ // Handler:
+ DECL_LINK( LbSelectHdl, ListBox* );
+ DECL_LINK( ValModifyHdl, ComboBox* );
+ DECL_LINK( CheckBoxHdl, CheckBox* );
+ DECL_LINK( EndDlgHdl, Button* );
+ DECL_LINK( MoreClickHdl, MoreButton* );
+
+ // Hack: RefInput-Kontrolle
+ DECL_LINK( TimeOutHdl, Timer* );
+#endif
+};
+
+
+//============================================================================
+class ScSpecialFilterDlg : public ScAnyRefDlg
+{
+public:
+ ScSpecialFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ const SfxItemSet& rArgSet );
+ ~ScSpecialFilterDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+
+ virtual BOOL IsRefInputMode() const;
+ virtual void SetActive();
+
+ virtual BOOL Close();
+
+private:
+ ListBox aLbFilterArea;
+ FixedText aFtFilterArea;
+ ScRefEdit aEdFilterArea;
+ ScRefButton aRbFilterArea;
+
+ _COMMON_FILTER_RSCOBJS
+
+ ScFilterOptionsMgr* pOptionsMgr;
+
+ const USHORT nWhichQuery;
+ const ScQueryParam theQueryData;
+ ScQueryItem* pOutItem;
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+
+ ScRefEdit* pRefInputEdit;
+ BOOL bRefInputMode;
+
+ // Hack: RefInput-Kontrolle
+ Timer* pTimer;
+
+#ifdef _SFILTDLG_CXX
+private:
+ void Init( const SfxItemSet& rArgSet );
+ ScQueryItem* GetOutputItem( const ScQueryParam& rParam,
+ const ScRange& rSource );
+
+ // Handler
+ DECL_LINK( FilterAreaSelHdl, ListBox* );
+ DECL_LINK( FilterAreaModHdl, ScRefEdit* );
+ DECL_LINK( EndDlgHdl, Button* );
+
+ // Hack: RefInput-Kontrolle
+ DECL_LINK( TimeOutHdl, Timer* );
+#endif
+};
+
+
+
+#endif // SC_FILTDLG_HXX
+
diff --git a/sc/source/ui/inc/filter.hrc b/sc/source/ui/inc/filter.hrc
new file mode 100644
index 000000000000..020d67168951
--- /dev/null
+++ b/sc/source/ui/inc/filter.hrc
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * $RCSfile: filter.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc" // -> RID_SCDLG_FILTER
+ // -> RID_SCDLG_SPEC_FILTER
+ // -> RID_SCDLG_PIVOTFILTER
+
+// allgemein
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define BTN_MORE 1
+
+#define BTN_UNIQUE 1
+#define BTN_CASE 2
+#define BTN_REGEXP 3
+#define BTN_HEADER 4
+#define BTN_COPY_RESULT 5
+#define LB_COPY_AREA 6
+#define ED_COPY_AREA 7
+#define RB_COPY_AREA 8
+#define GB_OPTIONS 9
+#define FT_DBAREA_LABEL 10
+#define FT_DBAREA 11
+#define BTN_DEST_PERS 12
+
+// Filter:
+#define FT_OP 20
+#define FT_FIELD 21
+#define FT_COND 22
+#define FT_VAL 23
+#define LB_FIELD1 24
+#define LB_FIELD2 25
+#define LB_FIELD3 26
+#define LB_OP1 27
+#define LB_OP2 28
+#define LB_COND1 29
+#define LB_COND2 30
+#define LB_COND3 31
+#define ED_VAL1 32
+#define ED_VAL2 33
+#define ED_VAL3 34
+#define GB_CRITERIA 35
+
+// Spezialfilter
+
+#define FT_CRITERIA_AREA 50
+#define LB_CRITERIA_AREA 51
+#define ED_CRITERIA_AREA 52
+#define RB_CRITERIA_AREA 53
+
diff --git a/sc/source/ui/inc/foptmgr.hxx b/sc/source/ui/inc/foptmgr.hxx
new file mode 100644
index 000000000000..99d47d83d097
--- /dev/null
+++ b/sc/source/ui/inc/foptmgr.hxx
@@ -0,0 +1,155 @@
+/*************************************************************************
+ *
+ * $RCSfile: foptmgr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FOPTMGR_HXX
+#define SC_FOPTMGR_HXX
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+//----------------------------------------------------------------------------
+
+class FixedInfo;
+class ScRefButton;
+class MoreButton;
+class Dialog;
+struct ScQueryParam;
+class ScDocument;
+class ScViewData;
+
+//----------------------------------------------------------------------------
+
+class ScFilterOptionsMgr
+{
+public:
+ ScFilterOptionsMgr( Dialog* ptrDlg,
+ ScViewData* ptrViewData,
+ const ScQueryParam& refQueryData,
+ MoreButton& refBtnMore,
+ CheckBox& refBtnCase,
+ CheckBox& refBtnRegExp,
+ CheckBox& refBtnHeader,
+ CheckBox& refBtnUnique,
+ CheckBox& refBtnCopyResult,
+ CheckBox& refBtnDestPers,
+ ListBox& refLbCopyArea,
+ Edit& refEdCopyArea,
+ ScRefButton& refRbCopyArea,
+ FixedText& refFtDbAreaLabel,
+ FixedInfo& refFtDbArea,
+ GroupBox& refGbOptions,
+ const String& refStrNoName,
+ const String& refStrUndefined );
+ ~ScFilterOptionsMgr();
+
+ BOOL VerifyPosStr ( const String& rPosStr ) const;
+
+private:
+ Dialog* pDlg;
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+
+ MoreButton& rBtnMore;
+ CheckBox& rBtnCase;
+ CheckBox& rBtnRegExp;
+ CheckBox& rBtnHeader;
+ CheckBox& rBtnUnique;
+ CheckBox& rBtnCopyResult;
+ CheckBox& rBtnDestPers;
+ ListBox& rLbCopyPos;
+ Edit& rEdCopyPos;
+ ScRefButton& rRbCopyPos;
+ FixedText& rFtDbAreaLabel;
+ FixedInfo& rFtDbArea;
+ GroupBox& rGbOptions;
+
+ const String& rStrNoName;
+ const String& rStrUndefined;
+
+ const ScQueryParam& rQueryData;
+
+#ifdef _FOPTMGR_CXX
+private:
+ void Init();
+
+ // Handler:
+ DECL_LINK( EdPosModifyHdl, Edit* );
+ DECL_LINK( LbPosSelHdl, ListBox* );
+ DECL_LINK( BtnCopyResultHdl, CheckBox* );
+#endif
+};
+
+
+
+#endif // SC_FOPTMGR_HXX
diff --git a/sc/source/ui/inc/formatsh.hxx b/sc/source/ui/inc/formatsh.hxx
new file mode 100644
index 000000000000..3a84750155ec
--- /dev/null
+++ b/sc/source/ui/inc/formatsh.hxx
@@ -0,0 +1,116 @@
+/*************************************************************************
+ *
+ * $RCSfile: formatsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FORMATSH_HXX
+#define SC_FORMATSH_HXX
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#include "shellids.hxx"
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#ifndef _SVDMARK_HXX //autogen
+#include <svx/svdmark.hxx>
+#endif
+
+class ScViewData;
+
+class ScFormatShell: public SfxShell
+{
+ ScViewData* pViewData;
+
+protected:
+
+ ScViewData* GetViewData(){return pViewData;}
+
+public:
+
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_FORMAT_SHELL);
+
+ ScFormatShell(ScViewData* pData);
+ virtual ~ScFormatShell();
+
+ void ExecuteNumFormat( SfxRequest& rReq );
+ void GetNumFormatState( SfxItemSet& rSet );
+
+ void ExecuteAttr( SfxRequest& rReq );
+ void GetAttrState( SfxItemSet& rSet );
+
+ void ExecuteAlignment( SfxRequest& rReq );
+
+ void ExecuteTextAttr( SfxRequest& rReq );
+ void GetTextAttrState( SfxItemSet& rSet );
+
+ void GetAlignState( SfxItemSet& rSet );
+ void GetBorderState( SfxItemSet& rSet );
+
+ void ExecuteStyle( SfxRequest& rReq );
+ void GetStyleState( SfxItemSet& rSet );
+
+ void ExecBckCol( SfxRequest& rReq );
+ void GetBckColState( SfxItemSet& rSet );
+};
+
+#endif
diff --git a/sc/source/ui/inc/formdata.hxx b/sc/source/ui/inc/formdata.hxx
new file mode 100644
index 000000000000..64b5a8e37453
--- /dev/null
+++ b/sc/source/ui/inc/formdata.hxx
@@ -0,0 +1,139 @@
+/*************************************************************************
+ *
+ * $RCSfile: formdata.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FORMDATA_HXX
+#define SC_FORMDATA_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _SV_GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+class ScInputHandler;
+class ScDocShell;
+
+//============================================================================
+
+class ScFormEditData
+{
+public:
+ ScFormEditData();
+ ~ScFormEditData();
+
+ void SaveValues();
+ void RestoreValues();
+ BOOL HasParent() const { return pParent != NULL; }
+
+ USHORT GetMode() const { return nMode; }
+ xub_StrLen GetFStart() const { return nFStart; }
+ USHORT GetCatSel() const { return nCatSel; }
+ USHORT GetFuncSel() const { return nFuncSel; }
+ USHORT GetOffset() const { return nOffset; }
+ USHORT GetEdFocus() const { return nEdFocus; }
+ const String& GetUndoStr() const { return aUndoStr; }
+ BOOL GetMatrixFlag()const{ return bMatrix;}
+ ULONG GetUniqueId()const { return nUniqueId;}
+ const Selection& GetSelection()const { return aSelection;}
+ ScInputHandler* GetInputHandler() { return pInputHandler;}
+ ScDocShell* GetDocShell() { return pScDocShell;}
+
+ void SetMode( USHORT nNew ) { nMode = nNew; }
+ void SetFStart( xub_StrLen nNew ) { nFStart = nNew; }
+ void SetCatSel( USHORT nNew ) { nCatSel = nNew; }
+ void SetFuncSel( USHORT nNew ) { nFuncSel = nNew; }
+ void SetOffset( USHORT nNew ) { nOffset = nNew; }
+ void SetEdFocus( USHORT nNew ) { nEdFocus = nNew; }
+ void SetUndoStr( const String& rNew ) { aUndoStr = rNew; }
+ void SetMatrixFlag(BOOL bNew) { bMatrix=bNew;}
+ void SetUniqueId(ULONG nNew) { nUniqueId=nNew;}
+ void SetSelection(const Selection& aSel) { aSelection=aSel;}
+ void SetInputHandler(ScInputHandler* pHdl) { pInputHandler=pHdl;}
+ void SetDocShell(ScDocShell* pSds) { pScDocShell=pSds;}
+
+
+
+private:
+ ScFormEditData( const ScFormEditData& );
+ const ScFormEditData& operator=( const ScFormEditData& r );
+ void Reset();
+
+ ScFormEditData* pParent; // fuer Verschachtelung
+ USHORT nMode; // enum ScFormulaDlgMode
+ xub_StrLen nFStart;
+ USHORT nCatSel;
+ USHORT nFuncSel;
+ USHORT nOffset;
+ USHORT nEdFocus;
+ String aUndoStr;
+ BOOL bMatrix;
+ ULONG nUniqueId;
+ Selection aSelection;
+ ScInputHandler* pInputHandler;
+ ScDocShell* pScDocShell;
+};
+
+
+
+#endif // SC_CRNRDLG_HXX
+
diff --git a/sc/source/ui/inc/formula.hxx b/sc/source/ui/inc/formula.hxx
new file mode 100644
index 000000000000..a258eecf0c4d
--- /dev/null
+++ b/sc/source/ui/inc/formula.hxx
@@ -0,0 +1,294 @@
+/*************************************************************************
+ *
+ * $RCSfile: formula.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FORMULA_HXX
+#define SC_FORMULA_HXX
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+#ifndef SC_FUNCUTL_HXX
+#include "funcutl.hxx"
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScAddress
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+
+#ifndef _SV_TABPAGE_HXX //autogen
+#include <vcl/tabpage.hxx>
+#endif
+
+#ifndef _SVSTDARR_STRINGS
+
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+
+#endif
+
+#ifndef _SV_TABCTRL_HXX //autogen
+#include <vcl/tabctrl.hxx>
+#endif
+
+#ifndef SC_PARAWIN_HXX
+#include "parawin.hxx"
+#endif
+
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+#ifndef SC_COMPILER_HXX
+#include "compiler.hxx"
+#endif
+
+#ifndef SC_CELL_HXX
+#include "cell.hxx"
+#endif
+
+#ifndef SC_FUNCPAGE_HXX
+#include "funcpage.hxx"
+#endif
+
+#ifndef SC_STRUCTPG_HXX
+#include "structpg.hxx"
+#endif
+
+class ScViewData;
+class ScDocument;
+class ScFuncDesc;
+class ScInputHandler;
+class ScDocShell;
+
+//============================================================================
+
+enum ScFormulaDlgMode { SC_FORMDLG_FORMULA, SC_FORMDLG_ARGS, SC_FORMDLG_EDIT };
+
+//============================================================================
+
+typedef ScTabViewShell* PtrTabViewShell;
+
+//============================================================================
+
+//============================================================================
+
+class ScFormulaDlg : public ScAnyRefDlg
+{
+public:
+ ScFormulaDlg( SfxBindings* pB, SfxChildWindow* pCW,
+ Window* pParent, ScViewData* pViewData );
+ ~ScFormulaDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pRefDoc );
+ virtual BOOL IsRefInputMode() const;
+ virtual BOOL IsDocAllowed(SfxObjectShell* pDocSh) const;
+ virtual void SetActive();
+ virtual BOOL Close();
+
+private:
+
+ TabControl aTabCtrl;
+ GroupBox aGbEdit; //! MUST be placed before aScParaWin for initializing
+ ScParaWin aScParaWin;
+ FixedText aFtHeadLine;
+ FixedInfo aFtFuncName;
+ FixedInfo aFtFuncDesc;
+
+ FixedText aFtEditName;
+ //FixedInfo aFtEditDesc;
+
+ FixedText aFtResult;
+ ValWnd aWndResult;
+
+ FixedText aFtFormula;
+ ScEditBox aMEFormula;
+
+ CheckBox aBtnMatrix;
+ HelpButton aBtnHelp;
+ CancelButton aBtnCancel;
+
+ PushButton aBtnBackward;
+ PushButton aBtnForward;
+ OKButton aBtnEnd;
+
+ ScRefEdit aEdRef;
+ ScRefButton aRefBtn;
+
+ FixedText aFtFormResult;
+ ValWnd aWndFormResult;
+
+ ScRefEdit* pTheRefEdit;
+ ScRefButton* pTheRefButton;
+ ScFuncPage* pScFuncPage;
+ ScStructPage* pScStructPage;
+ ScFormulaCell* pCell;
+ ScCompiler* pComp;
+ ScTokenArray* pScTokA;
+ String aOldFormula;
+ BOOL bStructUpdate;
+ MultiLineEdit* pMEdit;
+ BOOL bUserMatrixFlag;
+ Timer aTimer;
+
+ const String aTitle1;
+ const String aTitle2;
+ const String aTxtEnd;
+ const String aTxtOk; // hinter aBtnEnd
+
+ ULONG nOldHelp;
+ ULONG nOldUnique;
+ ULONG nActivWinId;
+ BOOL bIsShutDown;
+
+
+
+ Font aFntBold;
+ Font aFntLight;
+ USHORT nEdFocus;
+ Selection theCurSel;
+ BOOL bEditFlag;
+ ScFuncDesc* pFuncDesc;
+ USHORT nArgs;
+ String** pArgArr;
+ Selection aFuncSel;
+
+ static ScDocument* pDoc;
+ static ScAddress aCursorPos;
+
+protected:
+
+ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual void RefInputStart( ScRefEdit* pEdit, ScRefButton* pButton = NULL );
+ virtual void RefInputDone( BOOL bForced = FALSE );
+ ULONG FindFocusWin(Window *pWin);
+ void SetFocusWin(Window *pWin,ULONG nUniqueId);
+ String RepairFormula(const String& aFormula);
+ void SaveLRUEntry(ScFuncDesc* pFuncDesc);
+ void HighlightFunctionParas(const String& aFormula);
+
+private:
+
+ BOOL IsInputHdl(ScInputHandler* pHdl);
+ ScInputHandler* GetNextInputHandler(ScDocShell* pDocShell,PtrTabViewShell* ppViewSh=NULL);
+
+ void MakeTree(SvLBoxEntry* pParent,ScToken* pScToken,long Count,
+ ScTokenArray* pScTokA,ScCompiler* pComp);
+
+ void ClearAllParas();
+ void DeleteArgs();
+ void FillDialog(BOOL nFlag=TRUE);
+ void EditNextFunc( BOOL bForward, xub_StrLen nFStart=NOT_FOUND );
+ void EditThisFunc(xub_StrLen nFStart);
+ void EditFuncParas(xub_StrLen nEditPos);
+
+
+ void UpdateArgInput( USHORT nOffset, USHORT nInput );
+ BOOL CalcValue( const String& rStrExp, String& rStrResult );
+ BOOL CalcStruct( const String& rStrExp);
+
+ void UpdateValues();
+ void SaveArg( USHORT nEd );
+ void UpdateSelection();
+ void DoEnter( BOOL bOk );
+ void UpdateFunctionDesc();
+ void ResizeArgArr( ScFuncDesc* pNewFunc );
+ void FillListboxes();
+ void FillControls();
+
+ xub_StrLen GetFunctionPos(xub_StrLen nPos);
+ void UpdateTokenArray( const String& rStrExp);
+
+ DECL_LINK( ScrollHdl, ScParaWin* );
+ DECL_LINK( ModifyHdl, ScParaWin* );
+ DECL_LINK( FxHdl, ScParaWin* );
+
+ DECL_LINK( MatrixHdl, CheckBox *);
+ DECL_LINK( FormulaHdl, MultiLineEdit* );
+ DECL_LINK( FormulaCursorHdl, ScEditBox*);
+ DECL_LINK( BtnHdl, PushButton* );
+ DECL_LINK( GetEdFocusHdl, ArgInput* );
+ DECL_LINK( GetFxFocusHdl, ArgInput* );
+ DECL_LINK( DblClkHdl, ScFuncPage* );
+ DECL_LINK( FuncSelHdl, ScFuncPage*);
+ DECL_LINK( StructSelHdl, ScStructPage * );
+ DECL_LINK( UpdateFocusHdl, Timer*);
+};
+
+
+
+#endif // SC_CRNRDLG_HXX
+
diff --git a/sc/source/ui/inc/fuconarc.hxx b/sc/source/ui/inc/fuconarc.hxx
new file mode 100644
index 000000000000..4ed8175076e8
--- /dev/null
+++ b/sc/source/ui/inc/fuconarc.hxx
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuconarc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUCONARC_HXX
+#define SC_FUCONARC_HXX
+
+#ifndef _SV_HXX
+#endif
+
+#ifndef SC_FUCONSTR_HXX
+#include "fuconstr.hxx"
+#endif
+
+
+/*************************************************************************
+|*
+|* Rechteck zeichnen
+|*
+\************************************************************************/
+
+class FuConstArc : public FuConstruct
+{
+ public:
+ FuConstArc( ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+
+ virtual ~FuConstArc();
+ // Mouse- & Key-Events
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+
+
+#endif // _SD_FUCONARC_HXX
+
diff --git a/sc/source/ui/inc/fuconpol.hxx b/sc/source/ui/inc/fuconpol.hxx
new file mode 100644
index 000000000000..07aff64055b1
--- /dev/null
+++ b/sc/source/ui/inc/fuconpol.hxx
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuconpol.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUCONPOL_HXX
+#define SC_FUCONPOL_HXX
+
+#ifndef _SV_HXX
+#endif
+
+#ifndef SC_FUCONSTR_HXX
+#include "fuconstr.hxx"
+#endif
+
+
+
+/*************************************************************************
+|*
+|* Basisklasse fuer alle Funktionen
+|*
+\************************************************************************/
+
+class FuConstPolygon : public FuConstruct
+{
+ Point aLastPos;
+
+ public:
+ FuConstPolygon(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+
+ virtual ~FuConstPolygon();
+ // Mouse- & Key-Events
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+
+#endif // _FUCONPOL_HXX
+
diff --git a/sc/source/ui/inc/fuconrec.hxx b/sc/source/ui/inc/fuconrec.hxx
new file mode 100644
index 000000000000..286cf17bed19
--- /dev/null
+++ b/sc/source/ui/inc/fuconrec.hxx
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuconrec.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUCONREC_HXX
+#define SC_FUCONREC_HXX
+
+#ifndef _SV_HXX
+#endif
+
+#ifndef SC_FUCONSTR_HXX
+#include "fuconstr.hxx"
+#endif
+
+
+/*************************************************************************
+|*
+|* Rechteck zeichnen
+|*
+\************************************************************************/
+
+class FuConstRectangle : public FuConstruct
+{
+ public:
+ FuConstRectangle(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+
+ virtual ~FuConstRectangle();
+ // Mouse- & Key-Events
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+
+
+#endif // _SD_FUCONREC_HXX
+
diff --git a/sc/source/ui/inc/fuconstr.hxx b/sc/source/ui/inc/fuconstr.hxx
new file mode 100644
index 000000000000..80a22f2c840f
--- /dev/null
+++ b/sc/source/ui/inc/fuconstr.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuconstr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUCONSTR_HXX
+#define SC_FUCONSTR_HXX
+
+#ifndef _SV_HXX
+#endif
+
+#ifndef SC_FUDRAW_HXX
+#include "fudraw.hxx"
+#endif
+
+
+/************************************************************************/
+
+#define MIN_FREEHAND_DISTANCE 10
+
+
+/*************************************************************************
+|*
+|* Rechteck zeichnen
+|*
+\************************************************************************/
+
+class FuConstruct : public FuDraw
+{
+ public:
+ FuConstruct(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+
+ virtual ~FuConstruct();
+ // Mouse- & Key-Events
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+ virtual BYTE Command(const CommandEvent& rCEvt);
+
+ BOOL SimpleMouseButtonUp(const MouseEvent& rMEvt);
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+
+
+#endif // _SD_FUCONSTR_HXX
diff --git a/sc/source/ui/inc/fuconuno.hxx b/sc/source/ui/inc/fuconuno.hxx
new file mode 100644
index 000000000000..2eb62d83d5ad
--- /dev/null
+++ b/sc/source/ui/inc/fuconuno.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuconuno.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUCONUNO_HXX
+#define SC_FUCONUNO_HXX
+
+#ifndef SC_FUCONSTR_HXX
+#include "fuconstr.hxx"
+#endif
+
+
+/*************************************************************************
+|*
+|* Control zeichnen
+|*
+\************************************************************************/
+
+class FuConstUnoControl : public FuConstruct
+{
+protected:
+ UINT32 nInventor;
+ UINT16 nIdentifier;
+
+public:
+ FuConstUnoControl(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+
+ virtual ~FuConstUnoControl();
+ // Mouse- & Key-Events
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+
+
+#endif // _SD_FUCONCTL_HXX
+
diff --git a/sc/source/ui/inc/fudraw.hxx b/sc/source/ui/inc/fudraw.hxx
new file mode 100644
index 000000000000..dd7c7bc73d8b
--- /dev/null
+++ b/sc/source/ui/inc/fudraw.hxx
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * $RCSfile: fudraw.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUDRAW_HXX
+#define SC_FUDRAW_HXX
+
+#ifndef _SC_FUPOOR_HXX
+#include "fupoor.hxx"
+#endif
+
+#ifndef _SV_POINTR_HXX //autogen
+#include <vcl/pointr.hxx>
+#endif
+
+/*************************************************************************
+|*
+|* Basisklasse fuer alle Drawmodul-spezifischen Funktionen
+|*
+\************************************************************************/
+
+class FuDraw : public FuPoor
+{
+ protected:
+ Pointer aNewPointer;
+ Pointer aOldPointer;
+
+ public:
+ FuDraw(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+ virtual ~FuDraw();
+
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+
+ virtual void ScrollStart();
+ virtual void ScrollEnd();
+
+ virtual void Activate();
+ virtual void Deactivate();
+
+ virtual void ForcePointer(const MouseEvent* pMEvt);
+
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ private:
+ void DoModifiers(const MouseEvent& rMEvt);
+ void ResetModifiers();
+};
+
+
+
+#endif // _SD_FUDRAW_HXX
diff --git a/sc/source/ui/inc/fuedipo.hxx b/sc/source/ui/inc/fuedipo.hxx
new file mode 100644
index 000000000000..f5d19151389d
--- /dev/null
+++ b/sc/source/ui/inc/fuedipo.hxx
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuedipo.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:58 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUEDIPO_HXX
+#define SC_FUEDIPO_HXX
+
+#ifndef _SV_HXX
+#endif
+
+#ifndef SC_FUDRAW_HXX
+#include "fudraw.hxx"
+#endif
+
+
+/*************************************************************************
+|*
+|* Basisklasse fuer alle Funktionen
+|*
+\************************************************************************/
+
+class FuEditPoints : public FuDraw
+{
+ public:
+ FuEditPoints(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+
+ virtual ~FuEditPoints();
+ // Mouse- & Key-Events
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+
+
+#endif // _SD_FUEDIPO_HXX
+
diff --git a/sc/source/ui/inc/fuinsert.hxx b/sc/source/ui/inc/fuinsert.hxx
new file mode 100644
index 000000000000..81a4946df2db
--- /dev/null
+++ b/sc/source/ui/inc/fuinsert.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: fuinsert.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef SC_FUINSERT_HXX
+#define SC_FUINSERT_HXX
+
+#include "fupoor.hxx"
+
+class FuInsertGraphic : public FuPoor
+{
+ public:
+ FuInsertGraphic( ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+ virtual ~FuInsertGraphic();
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+/************************************************************************/
+
+class FuInsertOLE : public FuPoor
+{
+ public:
+ FuInsertOLE( ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+ virtual ~FuInsertOLE();
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+/************************************************************************/
+
+class FuInsertChart : public FuPoor
+{
+ public:
+ FuInsertChart( ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+ virtual ~FuInsertChart();
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+#endif // _SD_FUINSERT_HXX
+
diff --git a/sc/source/ui/inc/fumark.hxx b/sc/source/ui/inc/fumark.hxx
new file mode 100644
index 000000000000..bfa79bcbe8ca
--- /dev/null
+++ b/sc/source/ui/inc/fumark.hxx
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * $RCSfile: fumark.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUMARK_HXX
+#define SC_FUMARK_HXX
+
+#include "fupoor.hxx"
+
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx" // ScRangeListRef
+#endif
+
+
+/*************************************************************************
+|*
+|* Funktion zum Aufziehen eines Rechtecks
+|*
+\************************************************************************/
+
+class FuMarkRect : public FuPoor
+{
+ protected:
+ Point aBeginPos;
+ Rectangle aZoomRect;
+ BOOL bVisible;
+ BOOL bStartDrag;
+ ScRangeListRef aSourceRange;
+
+ public:
+ FuMarkRect(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+ virtual ~FuMarkRect();
+
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+
+ virtual void ScrollStart();
+ virtual void ScrollEnd();
+
+ virtual void Activate();
+ virtual void Deactivate();
+
+ virtual void ForcePointer(const MouseEvent* pMEvt);
+
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+ virtual BYTE Command(const CommandEvent& rCEvt);
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/funcpage.hxx b/sc/source/ui/inc/funcpage.hxx
new file mode 100644
index 000000000000..eb32e4cf05b6
--- /dev/null
+++ b/sc/source/ui/inc/funcpage.hxx
@@ -0,0 +1,197 @@
+/*************************************************************************
+ *
+ * $RCSfile: funcpage.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUNCPAGE_HXX
+#define SC_FUNCPAGE_HXX
+
+#ifndef SC_FUNCUTL_HXX
+#include "funcutl.hxx"
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScAddress
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+
+#ifndef _SV_TABPAGE_HXX //autogen
+#include <vcl/tabpage.hxx>
+#endif
+
+#ifndef _SVSTDARR_STRINGS
+
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+
+#endif
+
+#ifndef _SV_TABCTRL_HXX //autogen
+#include <vcl/tabctrl.hxx>
+#endif
+
+#ifndef SC_PARAWIN_HXX
+#include "parawin.hxx"
+#endif
+
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+#ifndef SC_COMPILER_HXX
+#include "compiler.hxx"
+#endif
+
+#ifndef SC_CELL_HXX
+#include "cell.hxx"
+#endif
+
+
+class ScViewData;
+class ScFuncName_Impl;
+class ScDocument;
+class ScFuncDesc;
+
+//============================================================================
+
+#define LRU_MAX 10
+
+//============================================================================
+class ScListBox : public ListBox
+{
+protected:
+
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual long PreNotify( NotifyEvent& rNEvt );
+
+public:
+ ScListBox( Window* pParent, WinBits nWinStyle = WB_BORDER );
+
+ ScListBox( Window* pParent, const ResId& rResId );
+
+};
+
+
+
+
+//============================================================================
+class ScFuncPage : public TabPage
+{
+private:
+
+ Link aDoubleClickLink;
+ Link aSelectionLink;
+ FixedText aFtCategory;
+ ListBox aLbCategory;
+ FixedText aFtFunction;
+ ScListBox aLbFunction;
+ ImageButton aIBFunction;
+
+ ScFuncDesc* aLRUList[LRU_MAX];
+
+
+ DECL_LINK( SelHdl, ListBox* );
+ DECL_LINK( DblClkHdl, ListBox* );
+
+protected:
+
+ void UpdateFunctionList();
+ void InitLRUList();
+
+
+public:
+
+ ScFuncPage( Window* pParent);
+
+ void SetCategory(USHORT nCat);
+ void SetFunction(USHORT nFunc);
+ void SetFocus();
+ USHORT GetCategory();
+ USHORT GetFunction();
+ USHORT GetFunctionEntryCount();
+
+ USHORT GetFuncPos(ScFuncDesc*);
+ ScFuncDesc* GetFuncDesc( USHORT nPos ) const;
+ String GetSelFunctionName() const;
+
+ void SetDoubleClickHdl( const Link& rLink ) { aDoubleClickLink = rLink; }
+ const Link& GetDoubleClickHdl() const { return aDoubleClickLink; }
+
+ void SetSelectHdl( const Link& rLink ) { aSelectionLink = rLink; }
+ const Link& GetSelectHdl() const { return aSelectionLink; }
+
+};
+
+
+#endif
+
diff --git a/sc/source/ui/inc/funcutl.hxx b/sc/source/ui/inc/funcutl.hxx
new file mode 100644
index 000000000000..af8e1b04c2a7
--- /dev/null
+++ b/sc/source/ui/inc/funcutl.hxx
@@ -0,0 +1,243 @@
+/*************************************************************************
+ *
+ * $RCSfile: funcutl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUNCUTL_HXX
+#define SC_FUNCUTL_HXX
+
+#ifndef _SCRBAR_HXX //autogen
+#include <vcl/scrbar.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx" // ScRefButton
+#endif
+
+
+//============================================================================
+// class ValWnd
+
+class ValWnd : public Window
+{
+public:
+ ValWnd( Window* pParent, const ResId& rId );
+
+ void SetValue( const String& rStrVal );
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+
+private:
+ String aStrValue;
+ Rectangle aRectOut;
+};
+
+
+//============================================================================
+// class ScEditBox
+
+class ScEditBox : public Control
+{
+private:
+
+ MultiLineEdit* pMEdit;
+ Link aSelChangedLink;
+ Selection aOldSel;
+ BOOL bMouseFlag;
+ DECL_LINK( ChangedHdl, ScEditBox* );
+
+protected:
+
+ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual void SelectionChanged();
+ virtual void Resize();
+ virtual void GetFocus();
+
+
+public:
+ ScEditBox( Window* pParent,
+ WinBits nWinStyle = WB_LEFT | WB_BORDER );
+ ScEditBox( Window* pParent, const ResId& rResId );
+
+ ~ScEditBox();
+
+ MultiLineEdit* GetEdit() {return pMEdit;}
+
+ void SetSelChangedHdl( const Link& rLink ) { aSelChangedLink = rLink; }
+ const Link& GetSelChangedHdl() const { return aSelChangedLink; }
+};
+
+
+
+//============================================================================
+// class ArgEdit
+
+class ArgEdit : public ScRefEdit
+{
+public:
+ ArgEdit( Window* pParent, WinBits nWinStyle = WB_LEFT | WB_BORDER );
+ ArgEdit( Window* pParent, const ResId& rResId );
+
+ void Init( ArgEdit* pPrevEdit, ArgEdit* pNextEdit,
+ ScrollBar& rArgSlider, USHORT nArgCount );
+
+protected:
+ virtual void KeyInput( const KeyEvent& rKEvt );
+
+private:
+ ArgEdit* pEdPrev;
+ ArgEdit* pEdNext;
+ ScrollBar* pSlider;
+ USHORT nArgs;
+};
+
+
+//============================================================================
+// class ArgInput
+
+class ArgInput
+{
+private:
+
+ Link aFxClickLink;
+ Link aRefClickLink;
+ Link aFxFocusLink;
+ Link aRefFocusLink;
+ Link aEdFocusLink;
+ Link aEdModifyLink;
+
+ FixedText* pFtArg;
+ ImageButton* pBtnFx;
+ ArgEdit* pEdArg;
+ ScRefButton* pRefBtn;
+
+ DECL_LINK( FxBtnClickHdl, ImageButton* );
+ DECL_LINK( RefBtnClickHdl,ScRefButton* );
+ DECL_LINK( FxBtnFocusHdl, ImageButton* );
+ DECL_LINK( RefBtnFocusHdl,ScRefButton* );
+ DECL_LINK( EdFocusHdl, ArgEdit* );
+ DECL_LINK( EdModifyHdl,ArgEdit* );
+
+protected:
+
+ virtual void FxClick();
+ virtual void RefClick();
+ virtual void FxFocus();
+ virtual void RefFocus();
+ virtual void EdFocus();
+ virtual void EdModify();
+
+public:
+
+ ArgInput();
+
+ void InitArgInput ( FixedText* pftArg,
+ ImageButton* pbtnFx,
+ ArgEdit* pedArg,
+ ScRefButton* prefBtn);
+
+ void SetArgName(const String &aArg);
+ String GetArgName();
+ void SetArgNameFont(const Font&);
+
+ void SetArgVal(const String &aVal);
+ String GetArgVal();
+
+ void SetArgSelection (const Selection& rSel );
+ void ReplaceSelOfArg (const String& rStr );
+
+ Selection GetArgSelection();
+
+
+ ArgEdit* GetArgEdPtr() {return pEdArg;}
+
+
+ void SetFxClickHdl( const Link& rLink ) { aFxClickLink = rLink; }
+ const Link& GetFxClickHdl() const { return aFxClickLink; }
+
+ void SetRefClickHdl( const Link& rLink ) { aRefClickLink = rLink; }
+ const Link& GetRefClickHdl() const { return aRefClickLink; }
+
+ void SetFxFocusHdl( const Link& rLink ) { aFxFocusLink = rLink; }
+ const Link& GetFxFocusHdl() const { return aFxFocusLink; }
+
+ void SetRefFocusHdl( const Link& rLink ) { aRefFocusLink = rLink; }
+ const Link& GetRefFocusHdl() const { return aRefFocusLink; }
+
+ void SetEdFocusHdl( const Link& rLink ) { aEdFocusLink = rLink; }
+ const Link& GetEdFocusHdl() const { return aEdFocusLink; }
+
+ void SetEdModifyHdl( const Link& rLink ) { aEdModifyLink = rLink; }
+ const Link& GetEdModifyHdl() const { return aEdModifyLink; }
+
+ void Hide();
+ void Show();
+
+};
+
+
+#endif
diff --git a/sc/source/ui/inc/fupoor.hxx b/sc/source/ui/inc/fupoor.hxx
new file mode 100644
index 000000000000..3db7ec5d025e
--- /dev/null
+++ b/sc/source/ui/inc/fupoor.hxx
@@ -0,0 +1,150 @@
+/*************************************************************************
+ *
+ * $RCSfile: fupoor.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SC_FUPOOR_HXX
+#define _SC_FUPOOR_HXX
+
+#ifndef _EVENT_HXX //autogen
+#include <vcl/event.hxx>
+#endif
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+
+class SdrView;
+class ScTabViewShell;
+class Window;
+class SdrModel;
+class Dialog;
+
+
+// Return-Werte fuer Command
+#define SC_CMD_NONE 0
+#define SC_CMD_USED 1
+#define SC_CMD_IGNORE 2
+
+/*************************************************************************
+|*
+|* Basisklasse fuer alle Funktionen
+|*
+\************************************************************************/
+
+class FuPoor
+{
+ protected:
+ SdrView* pView;
+ ScTabViewShell* pViewShell;
+ Window* pWindow;
+ SdrModel* pDrDoc;
+
+ SfxRequest aSfxRequest;
+ Dialog* pDialog;
+
+ Timer aScrollTimer; // fuer Autoscrolling
+ DECL_LINK( ScrollHdl, Timer * );
+ void ForceScroll(const Point& aPixPos);
+
+ Timer aDragTimer; // fuer Drag&Drop
+ DECL_LINK( DragTimerHdl, Timer * );
+ DECL_LINK( DragHdl, void * );
+ BOOL bIsInDragMode;
+ Point aMDPos; // Position von MouseButtonDown
+
+ public:
+ FuPoor(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+ virtual ~FuPoor();
+
+ virtual void Paint(const Rectangle& rRect, Window* pWin) {}
+
+ virtual void DoCut();
+ virtual void DoCopy();
+ virtual void DoPaste();
+
+ // Mouse- & Key-Events; Returnwert=TRUE: Event wurde bearbeitet
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt) { return FALSE; }
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt) { return FALSE; }
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt) { return FALSE; }
+ virtual BYTE Command(const CommandEvent& rCEvt);
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+
+ virtual void ScrollStart() {} // diese Funktionen werden von
+ virtual void ScrollEnd() {} // ForceScroll aufgerufen
+
+ void SetWindow(Window* pWin) { pWindow = pWin; }
+
+ USHORT GetSlotID() const { return( aSfxRequest.GetSlot() ); }
+
+ BOOL IsDetectiveHit( const Point& rLogicPos );
+
+ void StopDragTimer();
+};
+
+
+
+#endif // _SD_FUPOOR_HXX
+
diff --git a/sc/source/ui/inc/fusel.hxx b/sc/source/ui/inc/fusel.hxx
new file mode 100644
index 000000000000..e35a87c04826
--- /dev/null
+++ b/sc/source/ui/inc/fusel.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * $RCSfile: fusel.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUSEL_HXX
+#define SC_FUSEL_HXX
+
+#ifndef _SV_HXX
+#endif
+
+#ifndef SC_FUDRAW_HXX
+#include "fudraw.hxx"
+#endif
+
+//class Outliner;
+//class OutlinerView;
+class SdrPageView;
+
+
+/*************************************************************************
+|*
+|* Basisklasse fuer alle Funktionen
+|*
+\************************************************************************/
+
+class FuSelection : public FuDraw
+{
+ protected:
+// Outliner* pOutliner;
+// OutlinerView* pOutlinerView;
+ BOOL bVCAction;
+
+ private:
+ BOOL TestDetective( SdrPageView* pPV, const Point& rPos ); // -> fusel2
+ BOOL TestComment( SdrPageView* pPV, const Point& rPos ); // -> fusel2
+
+ public:
+ FuSelection(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq );
+
+ virtual ~FuSelection();
+ // Mouse- & Key-Events
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+ virtual BYTE Command(const CommandEvent& rCEvt);
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+};
+
+
+
+#endif // _SD_FUSEL_HXX
+
diff --git a/sc/source/ui/inc/futext.hxx b/sc/source/ui/inc/futext.hxx
new file mode 100644
index 000000000000..a67d35fe9874
--- /dev/null
+++ b/sc/source/ui/inc/futext.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * $RCSfile: futext.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_FUTEXT_HXX
+#define SC_FUTEXT_HXX
+
+#ifndef SC_FUCONSTR_HXX
+#include "fuconstr.hxx"
+#endif
+
+class SdrObject;
+class SdrTextObj;
+class SdrOutliner;
+
+/*************************************************************************
+|*
+|* Basisklasse fuer Textfunktionen
+|*
+\************************************************************************/
+class FuText : public FuConstruct
+{
+protected:
+// USHORT nOldObjectBar;
+ SdrTextObj* pTextObj;
+
+public:
+ FuText(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
+ SdrModel* pDoc, SfxRequest& rReq);
+
+ virtual ~FuText();
+
+ virtual BOOL KeyInput(const KeyEvent& rKEvt);
+ virtual BOOL MouseMove(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonUp(const MouseEvent& rMEvt);
+ virtual BOOL MouseButtonDown(const MouseEvent& rMEvt);
+
+ virtual void Activate(); // Function aktivieren
+ virtual void Deactivate(); // Function deaktivieren
+
+ virtual void ForcePointer(const MouseEvent* pMEvt);
+
+ virtual void SelectionHasChanged();
+
+ void SetInEditMode( SdrObject* pObj = NULL, const Point* pMousePixel = NULL );
+ void StopEditMode();
+
+private:
+ SdrOutliner* MakeOutliner();
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/graphsh.hxx b/sc/source/ui/inc/graphsh.hxx
new file mode 100644
index 000000000000..71e5bb6c69d7
--- /dev/null
+++ b/sc/source/ui/inc/graphsh.hxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * $RCSfile: graphsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef GRAPHSH_HXX
+#define GRAPHSH_HXX
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#include "shellids.hxx"
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#ifndef _SVDMARK_HXX //autogen
+#include <svx/svdmark.hxx>
+#endif
+
+class ScViewData;
+
+#include "drawsh.hxx"
+
+class ScGraphicShell: public ScDrawShell
+{
+public:
+
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_GRAPHIC_SHELL);
+
+ ScGraphicShell(ScViewData* pData);
+ virtual ~ScGraphicShell();
+
+};
+
+#endif
diff --git a/sc/source/ui/inc/gridmerg.hxx b/sc/source/ui/inc/gridmerg.hxx
new file mode 100644
index 000000000000..c2f9511dea1f
--- /dev/null
+++ b/sc/source/ui/inc/gridmerg.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: gridmerg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_GRIDMERG_HXX
+#define SC_GRIDMERG_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class OutputDevice;
+
+class ScGridMerger
+{
+private:
+ OutputDevice* pDev;
+ long nOneX;
+ long nOneY;
+ long nFixStart;
+ long nFixEnd;
+ long nVarStart;
+ long nVarDiff;
+ long nCount;
+ BOOL bVertical;
+ BOOL bOptimize;
+
+ void AddLine( long nStart, long nEnd, long nPos );
+
+public:
+ ScGridMerger( OutputDevice* pOutDev, long nOnePixelX, long nOnePixelY );
+ ~ScGridMerger();
+
+ void AddHorLine( long nX1, long nX2, long nY );
+ void AddVerLine( long nX, long nY1, long nY2 );
+ void Flush();
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
new file mode 100644
index 000000000000..a5bb7fd5b36f
--- /dev/null
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -0,0 +1,358 @@
+/*************************************************************************
+ *
+ * $RCSfile: gridwin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_GRIDWIN_HXX
+#define SC_GRIDWIN_HXX
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+// nur auf dem MAC Auto-Filter per Popup
+#ifdef MAC
+#define AUTOFILTER_POPUP
+#else
+#undef AUTOFILTER_POPUP
+#endif
+
+#include "viewutil.hxx"
+#include "viewdata.hxx"
+#include "cbutton.hxx"
+
+// ---------------------------------------------------------------------------
+
+struct RowInfo;
+class ScViewSelectionEngine;
+class ScPivot;
+class ScDPObject;
+class ScOutputData;
+class ScFilterListBox;
+class AutoFilterPopup;
+class SdrObject;
+class SdrEditView;
+class ScNoteMarker;
+class FloatingWindow;
+class SdrHdlList;
+
+ // Maus-Status (nMouseStatus)
+
+#define SC_GM_NONE 0
+#define SC_GM_TABDOWN 1
+#define SC_GM_DBLDOWN 2
+#define SC_GM_FILTER 3
+#define SC_GM_IGNORE 4
+#define SC_GM_WATERUNDO 5
+#define SC_GM_URLDOWN 6
+
+ // Page-Drag-Modus
+
+#define SC_PD_NONE 0
+#define SC_PD_RANGE_L 1
+#define SC_PD_RANGE_R 2
+#define SC_PD_RANGE_T 4
+#define SC_PD_RANGE_B 8
+#define SC_PD_RANGE_TL (SC_PD_RANGE_T|SC_PD_RANGE_L)
+#define SC_PD_RANGE_TR (SC_PD_RANGE_T|SC_PD_RANGE_R)
+#define SC_PD_RANGE_BL (SC_PD_RANGE_B|SC_PD_RANGE_L)
+#define SC_PD_RANGE_BR (SC_PD_RANGE_B|SC_PD_RANGE_R)
+#define SC_PD_BREAK_H 16
+#define SC_PD_BREAK_V 32
+
+class ScGridWindow : public Window
+{
+ // ScFilterListBox wird immer fuer Auswahlliste benutzt
+ friend class ScFilterListBox;
+#ifdef AUTOFILTER_POPUP
+ friend class AutoFilterPopup;
+#endif
+
+private:
+ ScViewData* pViewData;
+ ScSplitPos eWhich;
+ ScHSplitPos eHWhich;
+ ScVSplitPos eVWhich;
+
+ ScNoteMarker* pNoteMarker;
+
+ ScFilterListBox* pFilterBox;
+ USHORT nFilterBoxCol;
+ USHORT nFilterBoxRow;
+ FloatingWindow* pFilterFloat;
+
+ USHORT nCursorHideCount;
+
+ BOOL bMarking;
+
+ USHORT nButtonDown;
+ BOOL bEEMouse; // Edit-Engine hat Maus
+ BYTE nMouseStatus;
+
+ BOOL bPivotMouse; // Pivot-D&D (alte Pivottabellen)
+ ScPivot* pDragPivot;
+ BOOL bPivotColField;
+ USHORT nPivotCol;
+ USHORT nPivotField;
+
+ BOOL bDPMouse; // DataPilot-D&D (neue Pivottabellen)
+ long nDPField;
+ ScDPObject* pDragDPObj; //! name?
+
+ BOOL bRFMouse; // RangeFinder-Drag
+ BOOL bRFSize;
+ USHORT nRFIndex;
+ short nRFAddX;
+ short nRFAddY;
+
+ USHORT nPagebreakMouse; // Pagebreak-Modus Drag
+ USHORT nPagebreakBreak;
+ USHORT nPagebreakPrev;
+ ScRange aPagebreakSource;
+ ScRange aPagebreakDrag;
+ BOOL bPagebreakDrawn;
+
+ long nLastClickX;
+ long nLastClickY;
+
+ BOOL bDragRect;
+ USHORT nDragStartX;
+ USHORT nDragStartY;
+ USHORT nDragEndX;
+ USHORT nDragEndY;
+
+ USHORT nCurrentPointer;
+
+ BOOL bIsInScroll;
+ BOOL bIsInPaint;
+
+ ScDDComboBoxButton aComboButton;
+
+ Point aCurMousePos;
+
+ USHORT nPaintCount;
+ Rectangle aRepaintPixel;
+ BOOL bNeedsRepaint;
+
+ BOOL bAutoMarkVisible;
+ ScAddress aAutoMarkPos;
+
+ Rectangle aInvertRect;
+
+ DECL_LINK( PopupModeEndHdl, FloatingWindow* );
+
+ BOOL TestMouse( const MouseEvent& rMEvt, BOOL bAction );
+
+ void DoPushButton( USHORT nCol, USHORT nRow, const MouseEvent& rMEvt );
+ void PivotMouseMove( const MouseEvent& rMEvt );
+ void PivotMouseButtonUp( const MouseEvent& rMEvt );
+ BOOL PivotTestMouse( const MouseEvent& rMEvt, BOOL bMove );
+ void DoPivotDrop( BOOL bDelete, BOOL bToCols, short nDestPos );
+
+ void DPMouseMove( const MouseEvent& rMEvt );
+ void DPMouseButtonUp( const MouseEvent& rMEvt );
+ void DPTestMouse( const MouseEvent& rMEvt, BOOL bMove );
+
+ void RFMouseMove( const MouseEvent& rMEvt, BOOL bUp );
+
+ void PagebreakMove( const MouseEvent& rMEvt, BOOL bUp );
+
+ void UpdateDragRect( BOOL bShowRange, const Rectangle& rPosRect );
+
+ BOOL IsAutoFilterActive( USHORT nCol, USHORT nRow, USHORT nTab );
+ void ExecFilter( ULONG nSel, USHORT nCol, USHORT nRow,
+ const String& aValue );
+ void FilterSelect( ULONG nSel );
+
+ void ExecDataSelect( USHORT nCol, USHORT nRow, const String& rStr );
+
+ BOOL HasScenarioButton( const Point& rPosPixel, ScRange& rScenRange );
+
+ BOOL DropScroll( const Point& rMousePos );
+
+ BOOL QueryDropPrivate( DropEvent& rEvt );
+ BOOL DropPrivate( const DropEvent& rEvt );
+
+ BOOL DrawMouseButtonDown(const MouseEvent& rMEvt);
+ BOOL DrawMouseButtonUp(const MouseEvent& rMEvt);
+ BOOL DrawMouseMove(const MouseEvent& rMEvt);
+ BOOL DrawKeyInput(const KeyEvent& rKEvt);
+ BOOL DrawCommand(const CommandEvent& rCEvt);
+ BOOL DrawHasMarkedObj();
+ void DrawEndAction();
+ void DrawMarkDropObj( SdrObject* pObj );
+ SdrObject* GetEditObject();
+ BOOL IsMyModel(SdrEditView* pSdrView);
+ void DrawStartTimer();
+
+ void DrawRedraw( ScOutputData& rOutputData, const Rectangle& rDrawingRect,
+ ScUpdateMode eMode, ULONG nLayer );
+ void DrawSdrGrid( const Rectangle& rDrawingRect );
+ BOOL DrawBeforeScroll();
+ void DrawAfterScroll(BOOL bVal);
+ void OutlinerViewPaint( const Rectangle& rRect );
+ void DrawMarks();
+ BOOL NeedDrawMarks();
+ void DrawComboButton( const Point& rCellPos,
+ long nCellSizeX,
+ long nCellSizeY,
+ BOOL bBtnIn = FALSE );
+
+ void DrawPagePreview( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 );
+
+ BOOL GetEditUrl( const Point& rPos,
+ String* pName=0, String* pUrl=0, String* pTarget=0 );
+ BOOL GetEditUrlOrError( BOOL bSpellErr, const Point& rPos,
+ String* pName=0, String* pUrl=0, String* pTarget=0 );
+
+ BOOL HitRangeFinder( const Point& rMouse, BOOL& rCorner, USHORT* pIndex = NULL,
+ short* pAddX = NULL, short* pAddY = NULL );
+
+ USHORT HitPageBreak( const Point& rMouse, ScRange* pSource = NULL,
+ USHORT* pBreak = NULL, USHORT* pPrev = NULL );
+
+#ifdef AUTOFILTER_POPUP
+ void DoAutoFilterPopup( USHORT nCol, USHORT nRow, BOOL bDataSelect );
+#endif
+
+protected:
+ virtual void Resize( const Size& rSize );
+ virtual void Paint( const Rectangle& rRect );
+ virtual BOOL QueryDrop( DropEvent& rEvt );
+ virtual BOOL Drop( const DropEvent& rEvt );
+ virtual void KeyInput(const KeyEvent& rKEvt);
+ virtual void GetFocus();
+ virtual void LoseFocus();
+
+ virtual void RequestHelp( const HelpEvent& rEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+
+public:
+ ScGridWindow( Window* pParent, ScViewData* pData, ScSplitPos eWhichPos );
+ ~ScGridWindow();
+
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void Tracking( const TrackingEvent& rTEvt );
+
+ void FakeButtonUp();
+
+ Point GetMousePosPixel() const;
+ void UpdateStatusPosSize();
+
+ void ClickExtern();
+
+ void SetPointer( const Pointer& rPointer );
+
+ void MoveMouseStatus( ScGridWindow &rDestWin );
+
+ void ScrollPixel( long nDifX, long nDifY );
+ void UpdateEditViewPos();
+
+ void UpdateFormulas();
+
+ void DoAutoFilterMenue( USHORT nCol, USHORT nRow, BOOL bDataSelect );
+ void DoScenarioMenue( const ScRange& rScenRange );
+
+ void DrawButtons( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ RowInfo* pRowInfo, USHORT nArrCount );
+
+ void Draw( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ ScUpdateMode eMode = SC_UPDATE_ALL );
+
+ void InvertSimple( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ BOOL bTestMerge = FALSE, BOOL bRepeat = FALSE );
+
+ void DrawDragRect( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ BOOL bMarkDrop = TRUE );
+
+ void DrawRefMark( USHORT nRefStartX, USHORT nRefStartY,
+ USHORT nRefEndX, USHORT nRefEndY,
+ const Color& rColor, BOOL bHandle );
+
+ void CreateAnchorHandle(SdrHdlList& rHdl, const ScAddress& rAddress);
+
+ void HideCursor();
+ void ShowCursor();
+ void DrawCursor();
+ void DrawAutoFillMark();
+ void UpdateAutoFillMark(BOOL bMarked, const ScRange& rMarkRange);
+
+ void HideNoteMarker();
+
+ MapMode GetDrawMapMode( BOOL bForce = FALSE );
+
+ void ContinueDrag();
+
+ void StopMarking();
+
+ void CheckInverted() { if (nPaintCount) bNeedsRepaint = TRUE; }
+
+ void DoInvertRect( const Rectangle& rPixel );
+
+ void CheckNeedsRepaint();
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/groupdlg.hxx b/sc/source/ui/inc/groupdlg.hxx
new file mode 100644
index 000000000000..c259bc4708f1
--- /dev/null
+++ b/sc/source/ui/inc/groupdlg.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * $RCSfile: groupdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_GROUPDLG_HXX
+#define SC_GROUPDLG_HXX
+
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+//------------------------------------------------------------------------
+
+class ScGroupDlg : public ModalDialog
+{
+public:
+ ScGroupDlg( Window* pParent,
+ USHORT nResId,
+ BOOL bUnGroup = FALSE,
+ BOOL bRows = TRUE );
+ ~ScGroupDlg();
+
+ BOOL GetRowsChecked() const;
+ BOOL GetColsChecked() const;
+
+private:
+ RadioButton aBtnRows;
+ RadioButton aBtnCols;
+ GroupBox aGbFrame;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+};
+
+
+#endif // SC_STRINDLG_HXX
+
+
diff --git a/sc/source/ui/inc/hdrcont.hxx b/sc/source/ui/inc/hdrcont.hxx
new file mode 100644
index 000000000000..b01a15665399
--- /dev/null
+++ b/sc/source/ui/inc/hdrcont.hxx
@@ -0,0 +1,172 @@
+/*************************************************************************
+ *
+ * $RCSfile: hdrcont.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_HDRCONT_HXX
+#define SC_HDRCONT_HXX
+
+#ifndef _WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+#ifndef _SELENG_HXX //autogen
+#include <vcl/seleng.hxx>
+#endif
+
+// ---------------------------------------------------------------------------
+
+
+#define HDR_HORIZONTAL 0
+#define HDR_VERTICAL 1
+
+#define HDR_SIZE_OPTIMUM 0xFFFF
+
+
+ // Groesse des Sliders
+#define HDR_SLIDERSIZE 2
+
+class ScHeaderControl : public Window
+{
+private:
+ SelectionEngine* pSelEngine;
+ Font aNormFont;
+ Font aBoldFont;
+ BOOL bBoldSet;
+
+ USHORT nFlags;
+ BOOL bVertical; // Vertikal = Zeilenheader
+
+ long nWidth;
+ long nSmallWidth;
+ long nBigWidth;
+
+ USHORT nSize;
+
+ USHORT nMarkStart;
+ USHORT nMarkEnd;
+ BOOL bMarkRange;
+
+ BOOL bDragging; // Groessen aendern
+ USHORT nDragNo;
+ long nDragStart;
+ long nDragPos;
+ BOOL bDragMoved;
+
+ BOOL bIgnoreMove;
+
+ long GetScrPos( USHORT nEntryNo );
+ USHORT GetMousePos( const MouseEvent& rMEvt, BOOL& rBorder );
+
+ void ShowDragHelp();
+
+ void DoPaint( USHORT nStart, USHORT nEnd );
+
+protected:
+ // von Window ueberladen
+
+ virtual void Paint( const Rectangle& rRect );
+
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void Tracking( const TrackingEvent& rTEvt );
+
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+
+ // neue Methoden
+
+ virtual USHORT GetPos() = 0; // aktuelle Position (Scrolling)
+ virtual USHORT GetEntrySize( USHORT nEntryNo ) = 0; // Breite / Hoehe (Pixel)
+ virtual String GetEntryText( USHORT nEntryNo ) = 0;
+
+ virtual USHORT GetHiddenCount( USHORT nEntryNo );
+
+ virtual void SetEntrySize( USHORT nPos, USHORT nNewWidth ) = 0;
+ virtual void HideEntries( USHORT nStart, USHORT nEnd ) = 0;
+
+ virtual void SetMarking( BOOL bSet );
+ virtual void SelectWindow();
+ virtual BOOL IsDisabled();
+ virtual BOOL ResizeAllowed();
+ virtual String GetDragHelp( long nVal );
+
+ virtual void DrawInvert( long nDragPos );
+ virtual void Command( const CommandEvent& rCEvt );
+
+public:
+ ScHeaderControl( Window* pParent, SelectionEngine* pSelectionEngine,
+ USHORT nNewSize, USHORT nNewFlags );
+ ~ScHeaderControl();
+
+ void SetIgnoreMove(BOOL bSet) { bIgnoreMove = bSet; }
+
+ void StopMarking();
+
+ void SetMark( BOOL bNewSet, USHORT nNewStart, USHORT nNewEnd );
+
+ long GetWidth() const { return nWidth; }
+ long GetSmallWidth() const { return nSmallWidth; }
+ long GetBigWidth() const { return nBigWidth; }
+ void SetWidth( long nNew );
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/hfedtdlg.hxx b/sc/source/ui/inc/hfedtdlg.hxx
new file mode 100644
index 000000000000..54718d7af327
--- /dev/null
+++ b/sc/source/ui/inc/hfedtdlg.hxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * $RCSfile: hfedtdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_HFEDTDLG_HXX
+#define SC_HFEDTDLG_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SVX_PAGEITEM_HXX //autogen
+#include <svx/pageitem.hxx>
+#endif
+
+
+#include "sc.hrc"
+
+
+//==================================================================
+
+class ScHFEditDlg : public SfxTabDialog
+{
+ SvxNumType eNumType;
+public:
+ ScHFEditDlg( SfxViewFrame* pFrame,
+ Window* pParent,
+ const SfxItemSet& rCoreSet,
+ const String& rPageStyle,
+ USHORT nResId = RID_SCDLG_HFEDIT );
+
+ ~ScHFEditDlg();
+
+ virtual void PageCreated( USHORT nId, SfxTabPage& rPage );
+};
+
+
+#endif // SC_HFEDTDLG_HXX
diff --git a/sc/source/ui/inc/highred.hrc b/sc/source/ui/inc/highred.hrc
new file mode 100644
index 000000000000..263355ef76f2
--- /dev/null
+++ b/sc/source/ui/inc/highred.hrc
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: highred.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // -> RID_SCDLG_CHANGES
+
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_HELP 5
+
+#define CB_HIGHLIGHT_ACCEPT 6
+#define CB_HIGHLIGHT_REJECT 7
+#define GB_TO_HIGHLIGHT 8
+
+//
+#define GB_REDLINING 10
+#define TP_FILTER 11
+#define TP_VIEW 12
+#define CB_HIGHLIGHT 13
+
+#define FT_ASSIGN 14
+#define ED_ASSIGN 15
+#define RB_ASSIGN 16
+
+
+
+
+
+
+
+#define STR_INSERT_COLS 20
+#define STR_INSERT_ROWS 21
+#define STR_INSERT_TABS 22
+#define STR_DELETE_COLS 23
+#define STR_DELETE_ROWS 24
+#define STR_DELETE_TABS 25
+#define STR_MOVE 26
+#define STR_CONTENT 27
+#define STR_REJECT 28
+
+// Bitmaps
+#define BMP_STR_CLOSE 31
+#define BMP_STR_OPEN 32
+#define BMP_STR_END 33
+#define BMP_STR_ERROR 34
+
+
+//
+
diff --git a/sc/source/ui/inc/highred.hxx b/sc/source/ui/inc/highred.hxx
new file mode 100644
index 000000000000..6b22e75723fe
--- /dev/null
+++ b/sc/source/ui/inc/highred.hxx
@@ -0,0 +1,186 @@
+/*************************************************************************
+ *
+ * $RCSfile: highred.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_HIGHRED_HXX
+#define SC_HIGHRED_HXX
+
+#ifndef VCL
+#endif
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _HEADBAR_HXX //autogen
+#include <svtools/headbar.hxx>
+#endif
+
+#ifndef _SVTABBX_HXX //autogen
+#include <svtools/svtabbx.hxx>
+#endif
+
+
+#ifndef SC_RANGENAM_HXX
+#include "rangenam.hxx"
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SVX_ACREDLIN_HXX
+#include <svx/ctredlin.hxx>
+#endif
+
+#ifndef _SVX_SIMPTABL_HXX
+#include <svx/simptabl.hxx>
+#endif
+
+#ifndef SC_CHGTRACK_HXX
+#include "chgtrack.hxx"
+#endif
+
+#ifndef SC_CHGVISET_HXX
+#include "chgviset.hxx"
+#endif
+
+class ScViewData;
+class ScDocument;
+
+#ifndef FLT_DATE_BEFORE
+#define FLT_DATE_BEFORE 0
+#define FLT_DATE_SINCE 1
+#define FLT_DATE_EQUAL 2
+#define FLT_DATE_NOTEQUAL 3
+#define FLT_DATE_BETWEEN 4
+#define FLT_DATE_SAVE 5
+#endif
+
+//==================================================================
+
+class ScHighlightChgDlg : public ScAnyRefDlg
+{
+private:
+
+ CheckBox aHighlightBox;
+ GroupBox aGroupBox;
+ SvxTPFilter aFilterCtr;
+ CheckBox aCbAccept;
+ CheckBox aCbReject;
+ GroupBox aHighlightFrame;
+
+ OKButton aOkButton;
+ CancelButton aCancelButton;
+ HelpButton aHelpButton;
+
+ FixedText aFtAssign;
+ ScRefEdit aEdAssign;
+ ScRefButton aRbAssign;
+
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ ScRangeName aLocalRangeName;
+ Selection theCurSel;
+ Size MinSize;
+ ScRangeList aRangeList;
+ ScChangeViewSettings aChangeViewSet;
+
+ void Init();
+
+ DECL_LINK( RefHandle, SvxTPFilter* );
+ DECL_LINK(HighLightHandle, CheckBox*);
+ DECL_LINK(OKBtnHdl, PushButton*);
+
+
+protected:
+
+ virtual void RefInputDone( BOOL bForced = FALSE );
+
+public:
+ ScHighlightChgDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData);
+
+ ~ScHighlightChgDlg();
+
+ virtual void SetActive();
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+ virtual BOOL Close();
+ virtual BOOL IsRefInputMode() const;
+
+};
+
+
+#endif // SC_NAMEDLG_HXX
+
diff --git a/sc/source/ui/inc/hintwin.hxx b/sc/source/ui/inc/hintwin.hxx
new file mode 100644
index 000000000000..7b9afbdf3cbf
--- /dev/null
+++ b/sc/source/ui/inc/hintwin.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: hintwin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_HINTWIN_HXX
+#define SC_HINTWIN_HXX
+
+#ifndef _WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+
+class ScHintWindow : public Window
+{
+private:
+ String aTitle;
+ String aMessage;
+ Point aTextStart;
+ long nTextHeight;
+ Font aTextFont;
+ Font aHeadFont;
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+
+public:
+ ScHintWindow( Window* pParent, const String& rTit, const String& rMsg );
+ ~ScHintWindow();
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/hiranges.hxx b/sc/source/ui/inc/hiranges.hxx
new file mode 100644
index 000000000000..b0e4d447e6ac
--- /dev/null
+++ b/sc/source/ui/inc/hiranges.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * $RCSfile: hiranges.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_HIRANGES_HXX
+#define SC_HIRANGES_HXX
+
+#ifndef _COLOR_HXX //autogen
+#include <vcl/color.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//==================================================================
+
+struct ScHighlightEntry
+{
+ ScRange aRef;
+ Color aColor;
+
+ ScHighlightEntry( const ScRange& rR, const Color& rC ) :
+ aRef(rR), aColor(rC) {}
+};
+
+class ScHighlightRanges
+{
+ List aEntries;
+
+public:
+ ScHighlightRanges();
+ ~ScHighlightRanges();
+
+ ULONG Count() const { return aEntries.Count(); }
+ void Insert( ScHighlightEntry* pNew ) { aEntries.Insert(pNew, LIST_APPEND); }
+ ScHighlightEntry* GetObject( ULONG nIndex ) const
+ { return (ScHighlightEntry*)aEntries.GetObject(nIndex); }
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/imoptdlg.hxx b/sc/source/ui/inc/imoptdlg.hxx
new file mode 100644
index 000000000000..e355940de04b
--- /dev/null
+++ b/sc/source/ui/inc/imoptdlg.hxx
@@ -0,0 +1,182 @@
+/*************************************************************************
+ *
+ * $RCSfile: imoptdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_IMOPTDLG_HXX
+#define SC_IMOPTDLG_HXX
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//===================================================================
+
+class ScImportOptions;
+class ScDelimiterTable;
+
+class ScImportOptionsDlg : public ModalDialog
+{
+public:
+ ScImportOptionsDlg( Window* pParent,
+ BOOL bAsciiImport = TRUE,
+ const ScImportOptions* pOptions = NULL,
+ const String* pStrTitle = NULL );
+
+ ~ScImportOptionsDlg();
+
+ void GetImportOptions( ScImportOptions& rOptions ) const;
+
+private:
+ FixedText aFtFieldSep;
+ ComboBox aEdFieldSep;
+ FixedText aFtTextSep;
+ ComboBox aEdTextSep;
+ FixedText aFtFont;
+ ListBox aLbFont;
+ GroupBox aGbFieldOpt;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ ScDelimiterTable* pFieldSepTab;
+ ScDelimiterTable* pTextSepTab;
+ String aCharKeyList;
+
+private:
+ USHORT GetCodeFromCombo( const ComboBox& rEd ) const;
+};
+
+//------------------------------------------------------------------------
+
+class ScImportOptions
+{
+public:
+ ScImportOptions()
+ : nFieldSepCode(0),nTextSepCode(0),eCharSet(RTL_TEXTENCODING_DONTKNOW)
+ {}
+ ScImportOptions( const String& rStr );
+
+ ScImportOptions( USHORT nFieldSep, USHORT nTextSep, const String& rStr )
+ : nFieldSepCode(nFieldSep),nTextSepCode(nTextSep),aStrFont(rStr),eCharSet(RTL_TEXTENCODING_DONTKNOW)
+ { eCharSet = GetCharsetValue(aStrFont); }
+
+ ScImportOptions( const ScImportOptions& rCpy )
+ : nFieldSepCode (rCpy.nFieldSepCode),
+ nTextSepCode (rCpy.nTextSepCode),
+ aStrFont (rCpy.aStrFont),
+ eCharSet (rCpy.eCharSet)
+ {}
+
+ ScImportOptions& operator=( const ScImportOptions& rCpy )
+ {
+ nFieldSepCode = rCpy.nFieldSepCode;
+ nTextSepCode = rCpy.nTextSepCode;
+ aStrFont = rCpy.aStrFont;
+ eCharSet = rCpy.eCharSet;
+ return *this;
+ }
+
+ BOOL operator==( const ScImportOptions& rCmp )
+ {
+ return
+ nFieldSepCode == rCmp.nFieldSepCode
+ && nTextSepCode == rCmp.nTextSepCode
+ && eCharSet == rCmp.eCharSet
+ && aStrFont == rCmp.aStrFont;
+ }
+ String BuildString() const;
+ String BuildParaString( const String& rTyp, const String& rDsn ) const;
+
+ USHORT nFieldSepCode;
+ USHORT nTextSepCode;
+ String aStrFont;
+ CharSet eCharSet;
+};
+
+
+#endif // SC_IMOPTDLG_HXX
+
+
+
diff --git a/sc/source/ui/inc/impex.hxx b/sc/source/ui/inc/impex.hxx
new file mode 100644
index 000000000000..040c5ee7b7f2
--- /dev/null
+++ b/sc/source/ui/inc/impex.hxx
@@ -0,0 +1,183 @@
+/*************************************************************************
+ *
+ * $RCSfile: impex.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_IMPEX_HXX
+#define SC_IMPEX_HXX
+
+#ifndef _SOT_EXCHANGE_HXX //autogen
+#include <sot/exchange.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class SvDataObject;
+class SvDataTypeList;
+class ScDocShell;
+class ScDocument;
+class SvStream;
+class SvData;
+class SfxMedium;
+class ScAsciiOptions;
+
+class ScImportExport
+{
+ ScDocShell* pDocSh;
+ ScDocument* pDoc;
+ ScDocument* pUndoDoc;
+ ScRange aRange;
+ String aStreamPath;
+ ULONG nSizeLimit;
+ sal_Unicode cSep; // Separator
+ sal_Unicode cStr; // String Delimiter
+ BOOL bFormulas; // Formeln im Text?
+ BOOL bAll; // keine Selektion
+ BOOL bSingle; // Einfachselektion
+ BOOL bUndo; // Mit Undo?
+ BOOL bOverflow; // zuviele Zeilen/Spalten
+
+ ScAsciiOptions* pExtOptions; // erweiterte Optionen
+
+ BOOL StartPaste(); // Protect-Check, Undo einrichten
+ void EndPaste(); // Undo/Redo-Aktionen, Repaint
+ BOOL Doc2Text( SvStream& );
+ BOOL Text2Doc( SvStream& );
+ BOOL Doc2Sylk( SvStream& );
+ BOOL Sylk2Doc( SvStream& );
+ BOOL Doc2HTML( SvStream& );
+ BOOL Doc2RTF( SvStream& );
+ BOOL Doc2Dif( SvStream& );
+ BOOL Dif2Doc( SvStream& );
+ BOOL ExtText2Doc( SvStream& ); // mit pExtOptions
+ BOOL RTF2Doc( SvStream& );
+ BOOL HTML2Doc( SvStream& );
+
+ //! only if stream is only used in own (!) memory
+ static inline void SetNoEndianSwap( SvStream& rStrm );
+
+public:
+ ScImportExport( ScDocument* ); // Gesamtdokument
+ ScImportExport( ScDocument*, const String& ); // Bereichs/Zellangabe
+ ScImportExport( ScDocument*, const ScAddress& );
+ ScImportExport( ScDocument*, const ScRange& );
+ ~ScImportExport();
+
+ void SetExtOptions( const ScAsciiOptions& rOpt );
+
+ BOOL IsDoubleRef() const { return BOOL( !( bAll || bSingle ) ); }
+ BOOL IsSingleRef() const { return bSingle; }
+ BOOL IsNoRef() const { return bAll; }
+ BOOL IsRef() const { return BOOL( !bAll ); }
+
+ const ScRange& GetRange() const { return aRange; }
+
+ BOOL IsUndo() const { return bUndo; }
+ void SetUndo( BOOL b ) { bUndo = b; }
+
+ static void AddFormats( SvDataTypeList* );
+ static BOOL IsFormatSupported( SvDataObject* );
+ 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 );
+ static void WriteUnicodeOrByteString( SvStream& rStrm, const String& rString, BOOL bZero = FALSE );
+ static void WriteUnicodeOrByteEndl( SvStream& rStrm );
+ static inline BOOL IsEndianSwap( const SvStream& rStrm );
+
+ sal_Unicode GetSeparator() const { return cSep; }
+ void SetSeparator( sal_Unicode c ) { cSep = c; }
+ sal_Unicode GetDelimiter() const { return cStr; }
+ void SetDelimiter( sal_Unicode c ) { cStr = c; }
+ BOOL IsFormulas() const { return bFormulas; }
+ void SetFormulas( BOOL b ) { bFormulas = b; }
+
+ void SetSizeLimit( ULONG nNew ) { nSizeLimit = nNew; } // momentan nur fuer Ascii
+
+ void SetStreamPath( const String& rPath ) { aStreamPath = rPath; }
+ const String& GetStreamPath() const { return aStreamPath; }
+
+ BOOL ImportString( const String&, ULONG=FORMAT_STRING );
+ BOOL ExportString( String&, ULONG=FORMAT_STRING );
+ BOOL ExportByteString( ByteString&, rtl_TextEncoding, ULONG=FORMAT_STRING );
+
+ BOOL ImportStream( SvStream&, ULONG=FORMAT_STRING );
+ BOOL ExportStream( SvStream&, ULONG=FORMAT_STRING );
+
+ BOOL ImportData( SvData& );
+ BOOL ExportData( SvData& );
+
+ BOOL IsOverflow() const { return bOverflow; } // nach dem Importieren
+};
+
+
+// static
+inline BOOL ScImportExport::IsEndianSwap( const SvStream& rStrm )
+{
+#ifdef __BIGENDIAN
+ return rStrm.GetNumberFormatInt() != NUMBERFORMAT_INT_BIGENDIAN;
+#else
+ return rStrm.GetNumberFormatInt() != NUMBERFORMAT_INT_LITTLEENDIAN;
+#endif
+}
+
+
+#endif
+
diff --git a/sc/source/ui/inc/inputhdl.hxx b/sc/source/ui/inc/inputhdl.hxx
new file mode 100644
index 000000000000..f9477f11a013
--- /dev/null
+++ b/sc/source/ui/inc/inputhdl.hxx
@@ -0,0 +1,317 @@
+/*************************************************************************
+ *
+ * $RCSfile: inputhdl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_INPUTHDL_HXX
+#define SC_INPUTHDL_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef _FRACT_HXX //autogen
+#include <tools/fract.hxx>
+#endif
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+class ScDocument;
+class ScTabView;
+class ScTabViewShell;
+class ScInputWindow;
+class ScPatternAttr;
+class EditEngine;
+class ScEditEngineDefaulter;
+class EditView;
+class EditTextObject;
+class ScInputHdlState;
+class TypedStrCollection;
+class ScRangeFindList;
+class Timer;
+class KeyEvent;
+
+struct ESelection;
+
+//========================================================================
+// ScInputHandler
+//========================================================================
+
+class ScInputHandler
+{
+private:
+ ScInputWindow* pInputWin;
+
+ ScEditEngineDefaulter* pEngine; // editierte Daten in der Tabelle
+ EditView* pTableView; // aktive EditView dazu
+ EditView* pTopView; // EditView in der Eingabezeile
+
+ TypedStrCollection* pColumnData;
+ TypedStrCollection* pFormulaData;
+ ULONG nTipVisible;
+ String aManualTip;
+ String aAutoSearch;
+ USHORT nAutoPos;
+ BOOL bUseTab; // Blaettern moeglich
+
+ BOOL bTextValid; // Text noch nicht in Edit-Engine
+ String aCurrentText;
+
+ String aFormText; // fuer Funktions-Autopilot
+ xub_StrLen nFormSelStart; // Selektion fuer Funktions-Autopilot
+ xub_StrLen nFormSelEnd;
+
+ USHORT nAutoPar; // autom.parentheses than can be overwritten
+
+ ScAddress aCursorPos;
+ ScInputMode eMode;
+ BOOL bModified;
+ BOOL bSelIsRef;
+ BOOL bFormulaMode;
+ BOOL bInRangeUpdate;
+ BOOL bParenthesisShown;
+ BOOL bCreatingFuncView;
+ BOOL bInEnterHandler;
+
+ BOOL bProtected;
+ BOOL bCellHasPercentFormat;
+ ULONG nValidation;
+ USHORT nAttrAdjust; // enum SvxCellHorJustify
+
+ Fraction aScaleX; // fuer Ref-MapMode
+ Fraction aScaleY;
+
+ ScTabViewShell* pRefViewSh;
+ ScTabViewShell* pActiveViewSh;
+
+ const ScPatternAttr* pLastPattern;
+ SfxItemSet* pEditDefaults;
+ BOOL bLastIsSymbol;
+
+ ScInputHdlState* pLastState;
+ Timer* pDelayTimer;
+
+ ScRangeFindList* pRangeFindList;
+
+ static BOOL bAutoComplete; // aus App-Optionen
+ static BOOL bOptLoaded;
+
+#ifdef _INPUTHDL_CXX
+private:
+ void UpdateActiveView();
+ void SetAllUpdateMode( BOOL bUpdate );
+ void SyncViews( EditView* pSourceView = NULL );
+ BOOL StartTable( sal_Unicode cTyped );
+ void RemoveSelection();
+ void UpdateFormulaMode();
+ void InvalidateAttribs();
+ void ImplCreateEditEngine();
+ DECL_LINK( DelayTimer, Timer* );
+ void GetColData();
+ void UseColData();
+ void NextAutoEntry( BOOL bBack );
+ void UpdateAdjust( sal_Unicode cTyped );
+ void GetFormulaData();
+ void UseFormulaData();
+ void NextFormulaEntry( BOOL bBack );
+ void PasteFunctionData();
+ void PasteManualTip();
+ EditView* GetFuncEditView();
+ void RemoveAdjust();
+ void RemoveRangeFinder();
+ void DeleteRangeFinder();
+ void UpdateParenthesis();
+ void UpdateAutoCorrFlag();
+ void ResetAutoPar();
+ void AutoParAdded();
+ BOOL CursorAtClosingPar();
+ void SkipClosingPar();
+#endif
+
+public:
+ ScInputHandler();
+ virtual ~ScInputHandler();
+
+ void SetMode( ScInputMode eNewMode );
+ BOOL IsInputMode() const { return (eMode != SC_INPUT_NONE); }
+ BOOL IsEditMode() const { return (eMode != SC_INPUT_NONE &&
+ eMode != SC_INPUT_TYPE); }
+ BOOL IsTopMode() const { return (eMode == SC_INPUT_TOP); }
+
+ const String& GetEditString();
+ const String& GetFormString() const { return aFormText; }
+
+ BOOL GetTextAndFields( ScEditEngineDefaulter& rDestEngine );
+
+ BOOL KeyInput( const KeyEvent& rKEvt, BOOL bStartEdit = FALSE );
+ void EnterHandler( BYTE nBlockMode = 0 );
+ void CancelHandler();
+ void SetReference( const ScRange& rRef, ScDocument* pDoc );
+ void AddRefEntry();
+
+ void InsertFunction( const String& rFuncName, BOOL bAddPar = TRUE );
+ void ClearText();
+
+ void InputSelection( EditView* pView );
+ void InputChanged( EditView* pView );
+
+ void ViewShellGone(ScTabViewShell* pViewSh);
+ void SetRefViewShell(ScTabViewShell* pRefVsh) {pRefViewSh=pRefVsh;}
+
+
+ void NotifyChange( const ScInputHdlState* pState, BOOL bForce = FALSE );
+
+ void ResetDelayTimer(); //BugId 54702
+
+ void HideTip();
+ void ShowTip( const String& rText ); // am Cursor
+
+ void SetRefScale( const Fraction& rX, const Fraction& rY );
+
+ EditView* GetActiveView();
+ EditView* GetTableView() { return pTableView; }
+ EditView* GetTopView() { return pTopView; }
+
+ BOOL DataChanging( sal_Unicode cTyped = 0 );
+ void DataChanged();
+
+ BOOL TakesReturn() const { return ( nTipVisible != 0 ); }
+
+ void SetModified() { bModified = TRUE; }
+
+ BOOL GetSelIsRef() const { return bSelIsRef; }
+ void SetSelIsRef(BOOL bSet) { bSelIsRef = bSet; }
+
+ void ShowRefFrame();
+
+ ScRangeFindList* GetRangeFindList() { return pRangeFindList; }
+
+ void UpdateRange( USHORT nIndex, const ScRange& rNew );
+
+ // Kommunikation mit Funktionsautopilot
+ void InputGetSelection ( xub_StrLen& rStart, xub_StrLen& rEnd );
+ void InputSetSelection ( xub_StrLen nStart, xub_StrLen nEnd );
+ void InputReplaceSelection ( const String& rStr );
+ String InputGetFormulaStr ();
+
+ BOOL IsFormulaMode() const { return bFormulaMode; }
+ ScInputWindow* GetInputWindow() { return pInputWin; }
+ void SetInputWindow( ScInputWindow* pNew ) { pInputWin = pNew; }
+
+ BOOL IsModalMode( SfxObjectShell* pDocSh );
+
+ void ActivateInputWindow( const String& rText,
+ const ESelection& rSel );
+
+ void ForgetLastPattern();
+
+ void UpdateSpellSettings( BOOL bFromStartTab = FALSE );
+
+ void FormulaPreview();
+
+ Size GetTextSize(); // in 1/100mm
+
+ // eigentlich private, fuer SID_INPUT_SUM public
+ void InitRangeFinder( const String& rFormula );
+
+ static void SetAutoComplete(BOOL bSet) { bAutoComplete = bSet; }
+};
+
+//========================================================================
+// ScInputHdlState
+//========================================================================
+class ScInputHdlState
+{
+ friend class ScInputHandler;
+
+public:
+ ScInputHdlState( const ScAddress& rCurPos,
+ const ScAddress& rStartPos,
+ const ScAddress& rEndPos,
+ const String& rString,
+ const EditTextObject* pData );
+ ScInputHdlState( const ScInputHdlState& rCpy );
+ ~ScInputHdlState();
+
+ ScInputHdlState& operator= ( const ScInputHdlState& r );
+ int operator==( const ScInputHdlState& r ) const;
+ int operator!=( const ScInputHdlState& r ) const
+ { return !operator==( r ); }
+
+ const ScAddress& GetPos() const { return aCursorPos; }
+ const ScAddress& GetStartPos() const { return aStartPos; }
+ const ScAddress& GetEndPos() const { return aEndPos; }
+ const String& GetString() const { return aString; }
+ const EditTextObject* GetEditData() const { return pEditData; }
+
+private:
+ ScAddress aCursorPos;
+ ScAddress aStartPos;
+ ScAddress aEndPos;
+ String aString;
+ EditTextObject* pEditData;
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/inputwin.hxx b/sc/source/ui/inc/inputwin.hxx
new file mode 100644
index 000000000000..e8e8266e99c7
--- /dev/null
+++ b/sc/source/ui/inc/inputwin.hxx
@@ -0,0 +1,251 @@
+/*************************************************************************
+ *
+ * $RCSfile: inputwin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_INPUTWIN_HXX
+#define SC_INPUTWIN_HXX
+
+
+#ifndef _TOOLBOX_HXX //autogen
+#include <vcl/toolbox.hxx>
+#endif
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+
+class ScEditEngineDefaulter;
+class EditView;
+struct ESelection;
+class ScInputHandler;
+
+//========================================================================
+
+class ScTextWnd : public Window // Edit-Fenster
+{
+public:
+ ScTextWnd( Window* pParent );
+ virtual ~ScTextWnd();
+
+ void SetTextString( const String& rString );
+ const String& GetTextString() const;
+
+ BOOL IsActive();
+ EditView* GetEditView();
+
+ // fuer FunktionsAutopiloten
+ void MakeDialogEditView();
+
+ void StartEditEngine();
+ void StopEditEngine();
+
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+ void SetFormulaMode( BOOL bSet );
+
+protected:
+ virtual void Paint( const Rectangle& rRec );
+ virtual void Resize();
+
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void KeyInput(const KeyEvent& rKEvt);
+ virtual void GetFocus();
+ virtual void LoseFocus();
+
+ virtual String GetText() const;
+
+private:
+ void ImplInitSettings();
+ void UpdateAutoCorrFlag();
+
+private:
+ String aString;
+ Font aTextFont;
+ ScEditEngineDefaulter* pEditEngine; // erst bei Bedarf angelegt
+ EditView* pEditView;
+ BOOL bIsInsertMode;
+ BOOL bFormulaMode;
+};
+
+//========================================================================
+
+class ScPosWnd : public ComboBox, public SfxListener // Positionsanzeige
+{
+private:
+ String aPosStr;
+ Accelerator* pAccel;
+ BOOL bFormulaMode;
+ BOOL bTopHadFocus;
+
+public:
+ ScPosWnd( Window* pParent );
+ virtual ~ScPosWnd();
+
+ void SetPos( const String& rPosStr ); // angezeigter Text
+ void SetFormulaMode( BOOL bSet );
+
+protected:
+ virtual void Select();
+
+#ifdef VCL
+ virtual long Notify( NotifyEvent& rNEvt );
+#else
+ virtual void GetFocus();
+ virtual void LoseFocus();
+#endif
+
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+
+private:
+ void FillRangeNames();
+ void FillFunctions();
+ void DoEnter();
+
+ void ReleaseFocus_Impl();
+ DECL_LINK( AccelSelectHdl, Accelerator * );
+};
+
+//========================================================================
+
+class ScInputWindow : public ToolBox // Parent-Toolbox
+{
+public:
+ ScInputWindow( Window* pParent );
+ virtual ~ScInputWindow();
+
+ virtual void Resize();
+ virtual void Select();
+
+ void SetFuncString( const String& rString, BOOL bDoEdit = TRUE );
+ void SetPosString( const String& rStr );
+ void SetTextString( const String& rString );
+ const String& GetTextString();
+
+ void SetOkCancelMode();
+ void SetSumAssignMode();
+ void EnableButtons( BOOL bEnable = TRUE );
+
+ void SetFormulaMode( BOOL bSet );
+
+ BOOL IsActive();
+ EditView* GetEditView();
+ EditView* ActivateEdit( const String& rText,
+ const ESelection& rSel );
+
+ void TextGrabFocus();
+ void TextInvalidate();
+
+ void PosGrabFocus();
+
+ // Fuer FunktionsAutopiloten
+ void MakeDialogEditView();
+
+ void StopEditEngine();
+
+ void SetInputHandler( ScInputHandler* pNew );
+
+ ScInputHandler* GetInputHandler(){ return pInputHdl;}
+
+ void StateChanged( StateChangedType nType );
+
+
+protected:
+ virtual void SetText( const String& rString );
+ virtual String GetText() const;
+
+private:
+ ScPosWnd aWndPos;
+ ScTextWnd aTextWindow;
+ ScInputHandler* pInputHdl;
+ String aTextOk;
+ String aTextCancel;
+ String aTextSum;
+ String aTextEqual;
+ BOOL bIsOkCancelMode;
+};
+
+//==================================================================
+
+class ScInputWindowWrapper : public SfxChildWindow
+{
+public:
+ ScInputWindowWrapper( Window* pParent,
+ USHORT nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo );
+
+ SFX_DECL_CHILDWINDOW(ScInputWindowWrapper);
+};
+
+
+#endif
+
diff --git a/sc/source/ui/inc/inscldlg.hxx b/sc/source/ui/inc/inscldlg.hxx
new file mode 100644
index 000000000000..8a66fea50c2c
--- /dev/null
+++ b/sc/source/ui/inc/inscldlg.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: inscldlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_INSCLDLG_HXX
+#define SC_INSCLDLG_HXX
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//------------------------------------------------------------------------
+
+class ScInsertCellDlg : public ModalDialog
+{
+private:
+ RadioButton aBtnCellsDown;
+ RadioButton aBtnCellsRight;
+ RadioButton aBtnInsRows;
+ RadioButton aBtnInsCols;
+ GroupBox aGbFrame;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+public:
+ ScInsertCellDlg( Window* pParent,BOOL bDisallowCellMove = FALSE );
+ ~ScInsertCellDlg();
+
+ InsCellCmd GetInsCellCmd() const;
+};
+
+
+#endif // SC_INSCLDLG_HXX
+
+
diff --git a/sc/source/ui/inc/inscodlg.hxx b/sc/source/ui/inc/inscodlg.hxx
new file mode 100644
index 000000000000..370787e9202c
--- /dev/null
+++ b/sc/source/ui/inc/inscodlg.hxx
@@ -0,0 +1,163 @@
+/*************************************************************************
+ *
+ * $RCSfile: inscodlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_INSCODLG_HXX
+#define SC_INSCODLG_HXX
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//------------------------------------------------------------------------
+#define INS_CONT_NOEMPTY 0x0100
+#define INS_CONT_TRANS 0x0200
+#define INS_CONT_LINK 0x0400
+
+#define SC_CELL_SHIFT_DISABLE_DOWN 0x01
+#define SC_CELL_SHIFT_DISABLE_RIGHT 0x02
+
+class ScInsertContentsDlg : public ModalDialog
+{
+public:
+ ScInsertContentsDlg( Window* pParent,
+ USHORT nCheckDefaults = 0,
+ const String* pStrTitle = NULL );
+ ~ScInsertContentsDlg();
+
+ USHORT GetInsContentsCmdBits() const;
+ USHORT GetFormulaCmdBits() const;
+ BOOL IsSkipEmptyCells() const {return aBtnSkipEmptyCells.IsChecked();}
+ BOOL IsTranspose() const {return aBtnTranspose.IsChecked();}
+ BOOL IsLink() const {return aBtnLink.IsChecked();}
+ InsCellCmd GetMoveMode();
+
+ void SetOtherDoc( BOOL bSet );
+ void SetFillMode( BOOL bSet );
+ void SetChangeTrack( BOOL bSet );
+ void SetCellShiftDisabled( int nDisable );
+
+private:
+ CheckBox aBtnInsAll;
+ CheckBox aBtnInsStrings;
+ CheckBox aBtnInsNumbers;
+ CheckBox aBtnInsDateTime;
+ CheckBox aBtnInsFormulas;
+ CheckBox aBtnInsNotes;
+ CheckBox aBtnInsAttrs;
+ GroupBox aGbFrame;
+
+ CheckBox aBtnSkipEmptyCells;
+ CheckBox aBtnTranspose;
+ CheckBox aBtnLink;
+ GroupBox aGbOptions;
+
+ RadioButton aRbNoOp;
+ RadioButton aRbAdd;
+ RadioButton aRbSub;
+ RadioButton aRbMul;
+ RadioButton aRbDiv;
+ GroupBox aGbOperation;
+
+ RadioButton aRbMoveNone;
+ RadioButton aRbMoveDown;
+ RadioButton aRbMoveRight;
+ GroupBox aGbMove;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ BOOL bOtherDoc;
+ BOOL bFillMode;
+ BOOL bChangeTrack;
+ BOOL bMoveDownDisabled;
+ BOOL bMoveRightDisabled;
+
+ static BOOL bPreviousAllCheck;
+ static USHORT nPreviousChecks;
+ static USHORT nPreviousChecks2;
+ static USHORT nPreviousFormulaChecks;
+ static USHORT nPreviousMoveMode; // enum InsCellCmd
+
+ void DisableChecks( BOOL bInsAllChecked = TRUE );
+ void TestModes();
+
+ // Handler
+ DECL_LINK( InsAllHdl, void* );
+ DECL_LINK( LinkBtnHdl, void* );
+};
+
+
+#endif // SC_INSCODLG_HXX
+
+
diff --git a/sc/source/ui/inc/instbdlg.hrc b/sc/source/ui/inc/instbdlg.hrc
new file mode 100644
index 000000000000..d72d2d2e7ac8
--- /dev/null
+++ b/sc/source/ui/inc/instbdlg.hrc
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * $RCSfile: instbdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+//==================================================================
+// StarCalc Dialog: Tabelle einfuegen (Resource-IDs)
+//
+// (C) 1994 StarDivision GmbH, Hamburg, Germany
+// $Author: hr $ $Date: 2000-09-18 16:44:59 $ $Revision: 1.1.1.1 $
+// $Logfile: T:/sc/source/ui/inc/instbdlg.hrv $ $Workfile: instbdlg.hrc $
+//------------------------------------------------------------------
+
+#include <sc.hrc> // -> RID_SCDLG_INSERT_TABLE
+
+//#define RID_SCDLG_INSERT_TABLE 300
+
+#define BTN_OK 1
+#define BTN_CANCEL 1
+#define BTN_HELP 1
+#define BTN_NEW 1
+#define BTN_FROMFILE 2
+#define GB_CHOSE 1
+#define FT_PATH 2
+#define ED_TABNAME 1
+#define BTN_BROWSE 1
+#define BTN_LINK 1
+#define LB_TABLES 1
+#define GB_POSITION 20
+#define RB_BEHIND 21
+#define RB_BEFORE 22
+#define GB_TABLE 30
+#define NF_COUNT 30
+#define FT_COUNT 31
+#define FT_NAME 32
+
+
diff --git a/sc/source/ui/inc/instbdlg.hxx b/sc/source/ui/inc/instbdlg.hxx
new file mode 100644
index 000000000000..bdc883d6ee88
--- /dev/null
+++ b/sc/source/ui/inc/instbdlg.hxx
@@ -0,0 +1,170 @@
+/*************************************************************************
+ *
+ * $RCSfile: instbdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_INSTBDLG_HXX
+#define SC_INSTBDLG_HXX
+
+#ifndef _SV_HXX
+#endif
+
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _EMBOBJ_HXX //autogen
+#include <so3/embobj.hxx>
+#endif
+
+#ifndef _SC_EXPFTEXT_HXX
+#include "expftext.hxx"
+#endif
+
+#ifndef SO2_DECL_SVEMBEDDEDOBJECT_DEFINED
+#define SO2_DECL_SVEMBEDDEDOBJECT_DEFINED
+SO2_DECL_REF(SvEmbeddedObject)
+#endif
+
+
+class ScViewData;
+class ScDocument;
+class ScDocShell;
+
+//------------------------------------------------------------------------
+
+class ScInsertTableDlg : public ModalDialog
+{
+public:
+ ScInsertTableDlg( Window* pParent, ScViewData& rViewData, USHORT nTabCount);
+ ~ScInsertTableDlg();
+
+ virtual short Execute(); // ueberladen, um Dialog-Parent zu setzen
+
+ BOOL GetTablesFromFile() { return aBtnFromFile.IsChecked(); }
+ BOOL GetTablesAsLink() { return aBtnLink.IsChecked(); }
+
+ const String* GetFirstTable( USHORT* pN = NULL );
+ const String* GetNextTable( USHORT* pN = NULL );
+ ScDocShell* GetDocShellTables() { return pDocShTables; }
+ BOOL IsTableBefore() { return aBtnBefore.IsChecked(); }
+ USHORT GetTableCount() { return nTableCount;}
+
+private:
+ RadioButton aBtnBefore;
+ RadioButton aBtnBehind;
+ GroupBox aGbPos;
+ RadioButton aBtnNew;
+ RadioButton aBtnFromFile;
+ FixedText aFtCount;
+ NumericField aNfCount;
+ FixedText aFtName;
+ Edit aEdName;
+ MultiListBox aLbTables;
+ ScExpandedFixedText aFtPath;
+ PushButton aBtnBrowse;
+ CheckBox aBtnLink;
+ GroupBox aGbTable;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ ScViewData& rViewData;
+ ScDocument& rDoc;
+ ScDocShell* pDocShTables;
+ SvEmbeddedObjectRef aDocShTablesRef;
+
+ USHORT nSelTabIndex; // fuer GetFirstTable() / GetNextTable()
+ String aStrCurSelTable;
+ USHORT nTableCount;
+
+#ifdef SC_INSTBDLG_CXX
+ void Init_Impl();
+ void SetNewTable_Impl();
+ void SetFromTo_Impl();
+ void FillTables_Impl( ScDocument* pSrcDoc );
+ void DoEnable_Impl();
+
+ DECL_LINK( BrowseHdl_Impl, PushButton* );
+ DECL_LINK( ChoiceHdl_Impl, RadioButton* );
+ DECL_LINK( SelectHdl_Impl, MultiListBox* );
+ DECL_LINK( CountHdl_Impl, NumericField* );
+ DECL_LINK( DoEnterHdl, PushButton* );
+#endif
+};
+
+
+#endif // SC_INSTBDLG_HXX
+
+
diff --git a/sc/source/ui/inc/invmerge.hxx b/sc/source/ui/inc/invmerge.hxx
new file mode 100644
index 000000000000..398fdfbe6fa1
--- /dev/null
+++ b/sc/source/ui/inc/invmerge.hxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * $RCSfile: invmerge.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_INVMERGE_HXX
+#define SC_INVMERGE_HXX
+
+#ifndef _SV_GEN_HXX
+#include <tools/gen.hxx>
+#endif
+
+class Window;
+
+class ScInvertMerger
+{
+private:
+ Window* pWin;
+ Rectangle aTotalRect;
+ Rectangle aLineRect;
+
+ void FlushLine();
+ void FlushTotal();
+
+public:
+ ScInvertMerger( Window* pWindow );
+ ~ScInvertMerger();
+
+ void AddRect( const Rectangle& rRect );
+ void Flush();
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/lbseldlg.hxx b/sc/source/ui/inc/lbseldlg.hxx
new file mode 100644
index 000000000000..f3bc14691cb3
--- /dev/null
+++ b/sc/source/ui/inc/lbseldlg.hxx
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * $RCSfile: lbseldlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_LBSELDLG_HXX
+#define SC_LBSELDLG_HXX
+
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+//------------------------------------------------------------------------
+
+class ScSelEntryDlg : public ModalDialog
+{
+private:
+ ListBox aLb;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ FixedText aFtLbTitle;
+
+ DECL_LINK( DblClkHdl, void * );
+
+public:
+ ScSelEntryDlg( Window* pParent,
+ USHORT nResId,
+ const String& aTitle,
+ const String& aLbTitle,
+ List& aEntryList );
+ ~ScSelEntryDlg();
+
+ String GetSelectEntry() const;
+ USHORT GetSelectEntryPos() const;
+};
+
+
+#endif // SC_LBSELDLG_HXX
+
+
diff --git a/sc/source/ui/inc/makefile.mk b/sc/source/ui/inc/makefile.mk
new file mode 100644
index 000000000000..412787b75a82
--- /dev/null
+++ b/sc/source/ui/inc/makefile.mk
@@ -0,0 +1,61 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
diff --git a/sc/source/ui/inc/miscdlgs.hrc b/sc/source/ui/inc/miscdlgs.hrc
new file mode 100644
index 000000000000..ba1f45ecdff3
--- /dev/null
+++ b/sc/source/ui/inc/miscdlgs.hrc
@@ -0,0 +1,213 @@
+/*************************************************************************
+ *
+ * $RCSfile: miscdlgs.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // -> RID_SCDLG_DELCELL
+ // -> RID_SCDLG_INSCELL
+ // -> RID_SCDLG_DELCONT
+ // -> RID_SCDLG_INSCONT
+ // -> RID_SCDLG_MOVETAB
+ // -> RID_SCDLG_STRINPUT
+ // -> RID_SCDLG_MTRINPUT
+ // -> RID_SCDLG_SELENTRY
+ // -> RID_SCDLG_FILLSERIES
+ // -> RID_SCDLG_AUTOFORMAT
+
+// Fuer den DesignEditor:
+/*
+#define RID_SCDLG_DELCELL 1256
+#define RID_SCDLG_INSCELL 1257
+#define RID_SCDLG_DELCONT 1258
+#define RID_SCDLG_INSCONT 1259
+#define RID_SCDLG_MOVETAB 1260
+#define RID_SCDLG_STRINPUT 1261
+#define RID_SCDLG_MTRINPUT 1262
+#define RID_SCDLG_SELENTRY 1263
+#define RID_SCDLG_FILLSERIES 1264
+#define RID_SCDLG_AUTOFORMAT 1255
+*/
+
+// allgemein
+#define BTN_OK 100
+#define BTN_CANCEL 102
+#define BTN_HELP 103
+#define BTN_MORE 104
+#define BTN_ADD 105
+#define BTN_REMOVE 106
+#define FT_LABEL 110
+#define GB_FRAME 111
+#define STR_BTN_CLOSE 200
+
+// Zellen loeschen/einfuegen Dialog
+#define BTN_CELLSUP 10
+#define BTN_CELLSDOWN 11
+#define BTN_CELLSRIGHT 12
+#define BTN_CELLSLEFT 13
+#define BTN_DELROWS 14
+#define BTN_DELCOLS 15
+#define BTN_INSROWS 16
+#define BTN_INSCOLS 17
+
+// Inhalte loeschen/einfuegen Dialog
+#define BTN_DELALL 10
+#define BTN_DELSTRINGS 11
+#define BTN_DELNUMBERS 12
+#define BTN_DELDATETIME 13
+#define BTN_DELFORMULAS 14
+#define BTN_DELATTRS 15
+#define BTN_DELNOTES 16
+#define BTN_DELOBJECTS 17
+#define BTN_INSALL 20
+#define BTN_INSSTRINGS 21
+#define BTN_INSNUMBERS 22
+#define BTN_INSDATETIME 23
+#define BTN_INSFORMULAS 24
+#define BTN_INSATTRS 25
+#define BTN_INSNOTES 26
+#define BTN_OP_NOOP 27
+#define BTN_OP_ADD 28
+#define BTN_OP_SUB 29
+#define BTN_OP_MUL 30
+#define BTN_OP_DIV 31
+#define GB_OPERATION 32
+#define BTN_SKIP_EMPTY 33
+#define BTN_TRANSPOSE 34
+#define BTN_LINK 35
+#define GB_OPTIONS 36
+#define BTN_MV_NONE 37
+#define BTN_MV_DOWN 38
+#define BTN_MV_RIGHT 39
+#define GB_MOVE 40
+
+// Tabelle einfügen/löschen
+#define FT_DEST 1
+#define LB_DEST 2
+#define FT_INSERT 3
+#define LB_INSERT 4
+#define BTN_COPY 5
+#define STR_NEWDOC 6
+
+// Eingabe eines Strings
+#define ED_INPUT 10
+
+// Eingabe einer Metrik
+#define ED_VALUE 1
+#define BTN_DEFVAL 1
+
+// Auswahl aus einer (String-)ListBox
+#define LB_ENTRYLIST 10
+
+// Reihen fuellen
+#define BTN_LEFT 1
+#define BTN_RIGHT 2
+#define BTN_TOP 3
+#define BTN_BOTTOM 4
+#define GB_DIRECTION 9
+#define BTN_ARITHMETIC 10
+#define BTN_GEOMETRIC 11
+#define BTN_DATE 12
+#define BTN_AUTOFILL 13
+#define GB_TYPE 19
+#define BTN_DAY 20
+#define BTN_DAY_OF_WEEK 21
+#define BTN_MONTH 22
+#define BTN_YEAR 23
+#define GB_TIME_UNIT 29
+#define FT_INCREMENT 30
+#define ED_INCREMENT 39
+#define FT_END_VALUE 40
+#define ED_END_VALUES 49
+#define STR_VALERR 50
+#define FT_START_VALUE 51
+#define ED_START_VALUES 52
+
+// Autoformat
+#define LB_FORMAT 1
+#define FT_FORMAT 9
+#define GB_PREVIEW 10
+#define WND_PREVIEW 19
+#define BTN_NUMFORMAT 20
+#define BTN_BORDER 21
+#define BTN_FONT 23
+#define BTN_PATTERN 24
+#define BTN_ALIGNMENT 25
+#define BTN_ADJUST 26
+#define BTN_RENAME 27
+#define GB_FORMAT 29
+#define STR_ADD_TITLE 100
+#define STR_ADD_LABEL 101
+#define STR_DEL_TITLE 102
+#define STR_DEL_MSG 103
+#define STR_RENAME_TITLE 104
+ // Autoformat-Preview:
+#define STR_JAN 121
+#define STR_FEB 122
+#define STR_MAR 123
+#define STR_NORTH 124
+#define STR_MID 125
+#define STR_SOUTH 126
+#define STR_SUM 127
+
+// Gruppierung setzen/aufheben:
+#define BTN_GROUP_COLS 1
+#define BTN_GROUP_ROWS 3
+#define STR_GROUP 1
+#define STR_UNGROUP 2
+
diff --git a/sc/source/ui/inc/msgpool.hxx b/sc/source/ui/inc/msgpool.hxx
new file mode 100644
index 000000000000..2c810339e5fa
--- /dev/null
+++ b/sc/source/ui/inc/msgpool.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: msgpool.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_MSGPOOL_HXX
+#define SC_MSGPOOL_HXX
+
+#ifndef SC_ITEMS_HXX
+#include "scitems.hxx"
+#endif
+#ifndef _SVX_SRCHITEM_HXX
+#include <svx/srchitem.hxx>
+#endif
+
+
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+
+//#include <dbitems.hxx>
+#include "uiitems.hxx"
+
+
+//------------------------------------------------------------------------
+
+class ScDocumentPool;
+
+//------------------------------------------------------------------------
+
+class ScMessagePool: public SfxItemPool
+{
+ SfxStringItem aGlobalStringItem;
+ SvxSearchItem aGlobalSearchItem;
+ ScSortItem aGlobalSortItem;
+ ScQueryItem aGlobalQueryItem;
+ ScSubTotalItem aGlobalSubTotalItem;
+ ScConsolidateItem aGlobalConsolidateItem;
+ ScPivotItem aGlobalPivotItem;
+ ScSolveItem aGlobalSolveItem;
+ ScUserListItem aGlobalUserListItem;
+
+ SfxBoolItem aPrintWarnItem;
+
+ SfxPoolItem** ppPoolDefaults;
+ ScDocumentPool* pDocPool;
+
+public:
+ ScMessagePool();
+ ~ScMessagePool();
+
+ virtual SfxMapUnit GetMetric( USHORT nWhich ) const;
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/mtrindlg.hxx b/sc/source/ui/inc/mtrindlg.hxx
new file mode 100644
index 000000000000..7d3a19b53cfb
--- /dev/null
+++ b/sc/source/ui/inc/mtrindlg.hxx
@@ -0,0 +1,122 @@
+/*************************************************************************
+ *
+ * $RCSfile: mtrindlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_MTRINDLG_HXX
+#define SC_MTRINDLG_HXX
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+
+//------------------------------------------------------------------------
+
+class ScMetricInputDlg : public ModalDialog
+{
+public:
+ ScMetricInputDlg( Window* pParent,
+ USHORT nResId, // Ableitung fuer jeden Dialog!
+ long nCurrent,
+ long nDefault,
+ FieldUnit eFUnit = FUNIT_MM,
+ USHORT nDecimals = 2,
+ long nMaximum = 1000,
+ long nMinimum = 0,
+ long nFirst = 1,
+ long nLast = 100,
+ long nSpinSize = 1 );
+ ~ScMetricInputDlg();
+
+ long GetInputValue( FieldUnit eUnit = FUNIT_TWIP ) const;
+
+private:
+ FixedText aFtEditTitle;
+ MetricField aEdValue;
+ CheckBox aBtnDefVal;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ long nDefaultValue;
+ long nCurrentValue;
+
+ void CalcPositions();
+ DECL_LINK( SetDefValHdl, CheckBox * );
+ DECL_LINK( ModifyHdl, MetricField * );
+};
+
+#endif // SC_MTRINDLG_HXX
+
+
+
+
+
diff --git a/sc/source/ui/inc/mvtabdlg.hxx b/sc/source/ui/inc/mvtabdlg.hxx
new file mode 100644
index 000000000000..3b2201137917
--- /dev/null
+++ b/sc/source/ui/inc/mvtabdlg.hxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * $RCSfile: mvtabdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_MVTABDLG_HXX
+#define SC_MVTABDLG_HXX
+
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+//------------------------------------------------------------------------
+
+class ScMoveTableDlg : public ModalDialog
+{
+public:
+ ScMoveTableDlg( Window* pParent );
+ ~ScMoveTableDlg();
+
+ USHORT GetSelectedDocument () const;
+ USHORT GetSelectedTable () const;
+ BOOL GetCopyTable () const;
+ void SetCopyTable (BOOL bFlag=TRUE);
+ void EnableCopyTable (BOOL bFlag=TRUE);
+
+private:
+ ListBox aLbDoc;
+ ListBox aLbTable;
+ FixedText aFtDoc;
+ FixedText aFtTable;
+ CheckBox aBtnCopy;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ USHORT nDocument;
+ USHORT nTable;
+ BOOL bCopyTable;
+ //--------------------------------------
+ void Init ();
+ void InitDocListBox ();
+ DECL_LINK( OkHdl, void * );
+ DECL_LINK( SelHdl, ListBox * );
+};
+
+
+#endif // SC_MVTABDLG_HXX
+
+
diff --git a/sc/source/ui/inc/namecrea.hxx b/sc/source/ui/inc/namecrea.hxx
new file mode 100644
index 000000000000..5c35e37fae88
--- /dev/null
+++ b/sc/source/ui/inc/namecrea.hxx
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * $RCSfile: namecrea.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_NAMECREA_HXX
+#define SC_NAMECREA_HXX
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+
+#define NAME_TOP 1
+#define NAME_LEFT 2
+#define NAME_BOTTOM 4
+#define NAME_RIGHT 8
+
+class ScNameCreateDlg : public ModalDialog
+{
+protected:
+ CheckBox aTopBox;
+ CheckBox aLeftBox;
+ CheckBox aBottomBox;
+ CheckBox aRightBox;
+ OKButton aOKButton;
+ CancelButton aCancelButton;
+ HelpButton aHelpButton;
+ GroupBox aGroupBox;
+public:
+ ScNameCreateDlg( Window * pParent, USHORT nFlags );
+
+ USHORT GetFlags() const;
+};
+
+
+#endif //SC_NAMECREA_HXX
diff --git a/sc/source/ui/inc/namedlg.hrc b/sc/source/ui/inc/namedlg.hrc
new file mode 100644
index 000000000000..7121c22a0deb
--- /dev/null
+++ b/sc/source/ui/inc/namedlg.hrc
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: namedlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // -> RID_SCDLG_NAMES
+
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_ADD 3
+#define BTN_REMOVE 4
+#define BTN_HELP 5
+#define BTN_MORE 6
+//
+#define GB_NAME 11
+#define ED_NAME 12
+#define GB_ASSIGN 13
+#define ED_ASSIGN 15
+#define RB_ASSIGN 16
+//
+#define STR_ADD 21
+#define STR_MODIFY 22
+#define STR_INVALIDSYMBOL 23
+//
+#define BTN_CRITERIA 31
+#define BTN_PRINTAREA 32
+#define BTN_COLHEADER 33
+#define BTN_ROWHEADER 34
+#define GB_TYPE 35
+
diff --git a/sc/source/ui/inc/namedlg.hxx b/sc/source/ui/inc/namedlg.hxx
new file mode 100644
index 000000000000..20bf59a81881
--- /dev/null
+++ b/sc/source/ui/inc/namedlg.hxx
@@ -0,0 +1,165 @@
+/*************************************************************************
+ *
+ * $RCSfile: namedlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_NAMEDLG_HXX
+#define SC_NAMEDLG_HXX
+
+#ifndef VCL
+#endif
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef SC_RANGENAM_HXX
+#include "rangenam.hxx"
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+class ScViewData;
+class ScDocument;
+
+
+//==================================================================
+
+class ScNameDlg : public ScAnyRefDlg
+{
+private:
+ ComboBox aEdName;
+ GroupBox aGbName;
+
+ GroupBox aGbAssign;
+ ScRefEdit aEdAssign;
+ ScRefButton aRbAssign;
+
+ GroupBox aGbType;
+ CheckBox aBtnPrintArea;
+ CheckBox aBtnColHeader;
+ CheckBox aBtnCriteria;
+ CheckBox aBtnRowHeader;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ PushButton aBtnAdd;
+ PushButton aBtnRemove;
+ MoreButton aBtnMore;
+ BOOL bSaved;
+
+ const String aStrAdd; // "Hinzufuegen"
+ const String aStrModify; // "Aendern"
+ const String errMsgInvalidSym;
+
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ ScRangeName aLocalRangeName;
+ const ScAddress theCursorPos;
+ Selection theCurSel;
+
+#ifdef _NAMEDLG_CXX
+private:
+ void Init();
+ void UpdateChecks();
+ void UpdateNames();
+ void CalcCurTableAssign( String& aAssign, USHORT nPos );
+
+ // Handler:
+ DECL_LINK( OkBtnHdl, void * );
+ DECL_LINK( CancelBtnHdl, void * );
+ DECL_LINK( AddBtnHdl, void * );
+ DECL_LINK( RemoveBtnHdl, void * );
+ DECL_LINK( EdModifyHdl, Edit * );
+ DECL_LINK( NameSelectHdl, void * );
+ DECL_LINK( AssignGetFocusHdl, void * );
+#endif
+
+protected:
+
+ virtual void RefInputDone( BOOL bForced = FALSE );
+
+
+public:
+ ScNameDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData,
+ const ScAddress& aCursorPos );
+ ~ScNameDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+ virtual BOOL IsRefInputMode() const;
+
+ virtual void SetActive();
+ virtual BOOL Close();
+
+};
+
+
+
+#endif // SC_NAMEDLG_HXX
+
diff --git a/sc/source/ui/inc/namepast.hxx b/sc/source/ui/inc/namepast.hxx
new file mode 100644
index 000000000000..aee54955c1cf
--- /dev/null
+++ b/sc/source/ui/inc/namepast.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: namepast.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_NAMEPAST_HXX
+#define SC_NAMEPAST_HXX
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#define BTN_PASTE_NAME 100
+#define BTN_PASTE_LIST 101
+
+class ScRangeName;
+
+class ScNamePasteDlg : public ModalDialog
+{
+ DECL_LINK( ButtonHdl, Button * );
+ DECL_LINK( ListSelHdl, ListBox * );
+ DECL_LINK( ListDblClickHdl, ListBox * );
+
+protected:
+ FixedText aLabelText;
+ ListBox aNameList;
+ OKButton aOKButton;
+ CancelButton aCancelButton;
+ HelpButton aHelpButton;
+ PushButton aInsListButton;
+public:
+ ScNamePasteDlg( Window * pParent, const ScRangeName* pList, BOOL bInsList=TRUE );
+
+ String GetSelectedName() const;
+};
+
+
+#endif //SC_NAMEPAST_HXX
diff --git a/sc/source/ui/inc/navcitem.hxx b/sc/source/ui/inc/navcitem.hxx
new file mode 100644
index 000000000000..b4bfeed89793
--- /dev/null
+++ b/sc/source/ui/inc/navcitem.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * $RCSfile: navcitem.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:44:59 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_NAVCITEM_HXX
+#define SC_NAVCITEM_HXX
+
+
+#ifndef _SFXCTRLITEM_HXX //autogen
+#include <sfx2/ctrlitem.hxx>
+#endif
+
+
+//==================================================================
+
+class ScNavigatorDlg;
+
+class ScNavigatorControllerItem : public SfxControllerItem
+{
+public:
+ ScNavigatorControllerItem( USHORT nId,
+ ScNavigatorDlg& rDlg,
+ SfxBindings& rBindings );
+protected:
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pItem );
+
+private:
+ ScNavigatorDlg& rNavigatorDlg;
+};
+
+
+#endif // SC_NAVCITEM_HXX
+
diff --git a/sc/source/ui/inc/navipi.hxx b/sc/source/ui/inc/navipi.hxx
new file mode 100644
index 000000000000..e256302ef6a7
--- /dev/null
+++ b/sc/source/ui/inc/navipi.hxx
@@ -0,0 +1,405 @@
+/*************************************************************************
+ *
+ * $RCSfile: navipi.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_NAVIPI_HXX
+#define SC_NAVIPI_HXX
+
+#ifndef _TOOLBOX_HXX //autogen
+#include <vcl/toolbox.hxx>
+#endif
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+
+#ifndef SC_CONTENT_HXX
+#include "content.hxx"
+#endif
+
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+
+
+class ScViewData;
+class ScArea;
+class ScScenarioWindow;
+class ScNavigatorControllerItem;
+class ScNavigatorDialogWrapper;
+class ScNavigatorDlg;
+class ScRange;
+
+//========================================================================
+
+#define SC_DROPMODE_URL 0
+#define SC_DROPMODE_LINK 1
+#define SC_DROPMODE_COPY 2
+
+enum NavListMode { NAV_LMODE_NONE = 0x4000,
+ NAV_LMODE_AREAS = 0x2000,
+ NAV_LMODE_DBAREAS = 0x1000,
+ NAV_LMODE_DOCS = 0x800,
+ NAV_LMODE_SCENARIOS = 0x400 };
+
+//========================================================================
+// class ScScenarioListBox -----------------------------------------------
+//========================================================================
+class ScScenarioListBox : public ListBox
+{
+public:
+ ScScenarioListBox( Window* pParent );
+ ~ScScenarioListBox();
+
+ void UpdateEntries( List* pNewEntryList );
+
+protected:
+ virtual void Select();
+ virtual void DoubleClick();
+ virtual void GetFocus();
+ virtual void LoseFocus();
+ virtual long Notify( NotifyEvent& rNEvt );
+
+private:
+ ScScenarioWindow& rParent;
+ List aEntryList;
+ String aCurText;
+ Accelerator* pAccel;
+ void ClearEntryList();
+ void CopyEntryList( List& rNewList );
+ DECL_LINK( AccelSelectHdl, Accelerator * );
+};
+
+//========================================================================
+// class ScScenarioWindow ------------------------------------------------
+//========================================================================
+class ScScenarioWindow : public Window
+{
+public:
+ ScScenarioWindow( Window* pParent,const String& aQH_List,const String& aQH_Comment);
+ ~ScScenarioWindow();
+
+ void NotifyState( const SfxPoolItem* pState );
+ void SetComment( const String& rComment )
+ { aEdComment.SetText( rComment ); }
+
+ void SetSizePixel( const Size& rNewSize );
+
+protected:
+
+ virtual void Paint( const Rectangle& rRec );
+
+private:
+ ScScenarioListBox aLbScenario;
+ MultiLineEdit aEdComment;
+};
+
+//==================================================================
+// class ColumnEdit
+//==================================================================
+class ColumnEdit : public SpinField
+{
+public:
+ ColumnEdit( ScNavigatorDlg* pParent, const ResId& rResId );
+ ~ColumnEdit();
+
+ USHORT GetCol() { return nCol; }
+ void SetCol( USHORT nColNo );
+
+protected:
+#ifdef VCL
+ virtual long Notify( NotifyEvent& rNEvt );
+#else
+ virtual void KeyInput( const KeyEvent& rKEvt );
+#endif
+ virtual void LoseFocus();
+ virtual void Up();
+ virtual void Down();
+ virtual void First();
+ virtual void Last();
+
+private:
+ ScNavigatorDlg& rDlg;
+ USHORT nCol;
+ USHORT nKeyGroup;
+
+ void EvalText ();
+ void ExecuteCol ();
+ USHORT AlphaToNum ( String& rStr );
+ USHORT NumStrToAlpha ( String& rStr );
+ USHORT NumToAlpha ( USHORT nColNo, String& rStr );
+};
+
+
+//==================================================================
+// class RowEdit
+//==================================================================
+class RowEdit : public NumericField
+{
+public:
+ RowEdit( ScNavigatorDlg* pParent, const ResId& rResId );
+ ~RowEdit();
+
+ USHORT GetRow() { return (USHORT)GetValue(); }
+ void SetRow( USHORT nRow ){ SetValue( nRow ); }
+
+protected:
+#ifdef VCL
+ virtual long Notify( NotifyEvent& rNEvt );
+#else
+ virtual void KeyInput( const KeyEvent& rKEvt );
+#endif
+ virtual void LoseFocus();
+
+private:
+ ScNavigatorDlg& rDlg;
+
+ void ExecuteRow();
+};
+
+
+//==================================================================
+// class ScDocListBox
+//==================================================================
+class ScDocListBox : public ListBox
+{
+public:
+ ScDocListBox( ScNavigatorDlg* pParent, const ResId& rResId );
+ ~ScDocListBox();
+
+protected:
+ virtual void Select();
+
+private:
+ ScNavigatorDlg& rDlg;
+};
+
+
+//==================================================================
+// class CommandToolBox
+//==================================================================
+class CommandToolBox : public ToolBox
+{
+public:
+ CommandToolBox( ScNavigatorDlg* pParent, const ResId& rResId );
+ ~CommandToolBox();
+
+ void Select( USHORT nId );
+ void UpdateButtons();
+
+protected:
+ virtual void Select();
+ virtual void Click();
+
+private:
+ ScNavigatorDlg& rDlg;
+};
+
+//==================================================================
+// class ScNavigatorDlg
+//==================================================================
+
+class ScNavigatorDlg : public Window, public SfxListener
+{
+friend class ScNavigatorControllerItem;
+friend class ScNavigatorDialogWrapper;
+friend class ColumnEdit;
+friend class RowEdit;
+friend class ScDocListBox;
+friend class CommandToolBox;
+friend class ScContentTree;
+
+private:
+ FixedInfo aFtCol;
+ ColumnEdit aEdCol;
+ FixedInfo aFtRow;
+ RowEdit aEdRow;
+ CommandToolBox aTbxCmd;
+ ScContentTree aLbEntries;
+ ScDocListBox aLbDocuments;
+ ScScenarioWindow aWndScenarios;
+
+ Timer aContentTimer;
+
+ String aTitleBase;
+ String aStrDragMode;
+ String aStrDisplay;
+ String aStrActive;
+ String aStrNotActive;
+ String aStrHidden;
+ String aStrActiveWin;
+
+ SfxChildWindowContext* pContextWin;
+ Size aInitSize;
+ ScArea* pMarkArea;
+ ScViewData* pViewData;
+ long nBorderOffset;
+ long nListModeHeight;
+ long nInitListHeight;
+ NavListMode eListMode;
+ USHORT nDropMode;
+ USHORT nCurCol;
+ USHORT nCurRow;
+ USHORT nCurTab;
+ BOOL bFirstBig;
+
+ ScNavigatorControllerItem** ppBoundItems;
+ SfxBindings& rBindings;
+
+ DECL_LINK( TimeHdl, Timer* );
+
+ void DoResize();
+
+ BOOL GetDBAtCursor( String& rStrName );
+ BOOL GetAreaAtCursor( String& rStrName );
+
+ void SetCurrentCell( USHORT nCol, USHORT Row );
+ void SetCurrentCellStr( const String rName );
+ void SetCurrentTable( USHORT nTab );
+ void SetCurrentTableStr( const String rName );
+ void SetCurrentObject( const String rName );
+ void SetCurrentDoc( const String& rDocName );
+
+ BOOL GetViewData ();
+ void UpdateColumn ( const USHORT* pCol = NULL );
+ void UpdateRow ( const USHORT* pRow = NULL );
+ void UpdateTable ( const USHORT* pTab = NULL );
+ void UpdateAll ();
+
+ void GetDocNames(const String* pSelEntry = NULL);
+
+ void SetListMode ( NavListMode eMode, BOOL bSetSize = TRUE );
+ void ShowList ( BOOL bShow, BOOL bSetSize );
+ void ShowScenarios ( BOOL bShow, BOOL bSetSize );
+
+ void SetDropMode(USHORT nNew);
+ USHORT GetDropMode() const { return nDropMode; }
+
+ const String& GetStrDragMode() const { return aStrDragMode; }
+ const String& GetStrDisplay() const { return aStrDisplay; }
+
+ void CheckDataArea ();
+ void MarkDataArea ();
+ void UnmarkDataArea ();
+ void StartOfDataArea ();
+ void EndOfDataArea ();
+
+ static void ReleaseFocus();
+
+protected:
+ virtual void Resize();
+ virtual void Paint( const Rectangle& rRec );
+ virtual void Resizing( Size& rSize );
+
+ virtual BOOL Drop( const DropEvent& rEvt );
+ virtual BOOL QueryDrop( DropEvent& rEvt );
+
+public:
+ ScNavigatorDlg( SfxBindings* pB, SfxChildWindowContext* pCW, Window* pParent );
+ ~ScNavigatorDlg();
+
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+
+ void CursorPosChanged();
+
+ virtual SfxChildAlignment
+ CheckAlignment(SfxChildAlignment,SfxChildAlignment);
+};
+
+//==================================================================
+
+class ScNavigatorDialogWrapper: public SfxChildWindowContext
+{
+public:
+ ScNavigatorDialogWrapper( Window* pParent,
+ USHORT nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo );
+
+ SFX_DECL_CHILDWINDOW_CONTEXT(ScNavigatorDialogWrapper)
+
+ virtual void Resizing( Size& rSize );
+
+ virtual BOOL Drop( const DropEvent& rEvt );
+ virtual BOOL QueryDrop( DropEvent& rEvt );
+
+private:
+ ScNavigatorDlg* pNavigator;
+};
+
+
+
+#endif // SC_NAVIPI_HXX
+
diff --git a/sc/source/ui/inc/notemark.hxx b/sc/source/ui/inc/notemark.hxx
new file mode 100644
index 000000000000..47bc4183219a
--- /dev/null
+++ b/sc/source/ui/inc/notemark.hxx
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * $RCSfile: notemark.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_NOTEMARK_HXX
+#define SC_NOTEMARK_HXX
+
+#ifndef _MAPMOD_HXX //autogen
+#include <vcl/mapmod.hxx>
+#endif
+#ifndef _TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class SdrModel;
+class SdrObject;
+
+class ScNoteMarker
+{
+private:
+ Window* pWindow;
+ Window* pRightWin;
+ Window* pBottomWin;
+ Window* pDiagWin;
+ ScDocument* pDoc;
+ ScAddress aDocPos;
+ String aUserText;
+ Timer aTimer;
+ MapMode aMapMode;
+ BOOL bLeft;
+
+ Rectangle aRect;
+ SdrModel* pModel;
+ SdrObject* pObject;
+ BOOL bVisible;
+
+ DECL_LINK( TimeHdl, Timer* );
+
+public:
+ ScNoteMarker( Window* pWin,
+ Window* pRight, Window* pBottom, Window* pDiagonal,
+ ScDocument* pD, ScAddress aPos,
+ const String& rUser, const MapMode& rMap,
+ BOOL bLeftEdge, BOOL bForce );
+ ~ScNoteMarker();
+
+ void Draw();
+ void InvalidateWin();
+
+ ScAddress GetDocPos() const { return aDocPos; }
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/oleobjsh.hxx b/sc/source/ui/inc/oleobjsh.hxx
new file mode 100644
index 000000000000..65f7538ee995
--- /dev/null
+++ b/sc/source/ui/inc/oleobjsh.hxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * $RCSfile: oleobjsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef OLEOBJSH_HXX
+#define OLEOBJSH_HXX
+
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#include "shellids.hxx"
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#ifndef _SVDMARK_HXX //autogen
+#include <svx/svdmark.hxx>
+#endif
+
+class ScViewData;
+
+#include "drawsh.hxx"
+
+class ScOleObjectShell: public ScDrawShell
+{
+public:
+
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_OLEOBJECT_SHELL);
+
+ ScOleObjectShell(ScViewData* pData);
+ virtual ~ScOleObjectShell();
+
+};
+
+#endif
diff --git a/sc/source/ui/inc/olinefun.hxx b/sc/source/ui/inc/olinefun.hxx
new file mode 100644
index 000000000000..9f10400abd90
--- /dev/null
+++ b/sc/source/ui/inc/olinefun.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * $RCSfile: olinefun.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_OLINEFUN_HXX
+#define SC_OLINEFUN_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScDocShell;
+class ScRange;
+
+
+// ---------------------------------------------------------------------------
+
+class ScOutlineDocFunc
+{
+private:
+ ScDocShell& rDocShell;
+
+public:
+ ScOutlineDocFunc( ScDocShell& rDocSh ): rDocShell(rDocSh) {}
+ ~ScOutlineDocFunc() {}
+
+ BOOL MakeOutline( const ScRange& rRange, BOOL bColumns, BOOL bRecord, BOOL bApi );
+ BOOL RemoveOutline( const ScRange& rRange, BOOL bColumns, BOOL bRecord, BOOL bApi );
+ BOOL RemoveAllOutlines( USHORT nTab, BOOL bRecord, BOOL bApi );
+ BOOL AutoOutline( const ScRange& rRange, BOOL bRecord, BOOL bApi );
+
+ BOOL SelectLevel( USHORT nTab, BOOL bColumns, USHORT nLevel,
+ BOOL bRecord, BOOL bPaint, BOOL bApi );
+
+ BOOL ShowMarkedOutlines( const ScRange& rRange, BOOL bRecord, BOOL bApi );
+ BOOL HideMarkedOutlines( const ScRange& rRange, BOOL bRecord, BOOL bApi );
+
+ BOOL ShowOutline( USHORT nTab, BOOL bColumns, USHORT nLevel, USHORT nEntry,
+ BOOL bRecord, BOOL bPaint, BOOL bApi );
+ BOOL HideOutline( USHORT nTab, BOOL bColumns, USHORT nLevel, USHORT nEntry,
+ BOOL bRecord, BOOL bPaint, BOOL bApi );
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/olinewin.hxx b/sc/source/ui/inc/olinewin.hxx
new file mode 100644
index 000000000000..02855f0fae1d
--- /dev/null
+++ b/sc/source/ui/inc/olinewin.hxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * $RCSfile: olinewin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_OLINEWIN_HXX
+#define SC_OLINEWIN_HXX
+
+#ifndef _SV_HXX
+#endif
+
+#include "viewdata.hxx"
+
+class ScOutlineEntry;
+class ScOutlineTable;
+
+
+enum ScOutlineMode { SC_OUTLINE_HOR, SC_OUTLINE_VER };
+
+
+class ScOutlineWindow : public Window
+{
+private:
+ ScOutlineMode eMode;
+ USHORT nHeaderSize;
+ ScSplitPos eWhich;
+ ScViewData* pViewData;
+
+ Color aColor;
+
+ BOOL bHitMode; // Knopf gedrueckt ?
+ USHORT nHitLevel;
+ USHORT nHitEntry;
+ BOOL bHitHeader;
+ Rectangle aInvRect;
+ BOOL bIsInverted;
+
+
+ BOOL GetEntryPos( ScOutlineEntry* pEntry,
+ long& rFirstEntry, long& rSecondEntry, long& rBitmapEntry,
+ ScOutlineEntry* pPrevious );
+ void DoFunction( USHORT nLevel, USHORT nEntry, BOOL bHeader );
+ void ToggleRect( const Rectangle& rRect );
+ BOOL ButtonHit( const Point& rPos, USHORT& rLevel, USHORT& rEntry, BOOL& rHeader,
+ Rectangle& rInvRect );
+ BOOL LineHit( const Point& rPos, USHORT& rLevel, USHORT& rEntry );
+
+ BOOL IsFirst(USHORT nPos);
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+
+ void ImplInitSettings();
+
+
+public:
+ ScOutlineWindow( Window* pParent, ScOutlineMode eNewMode,
+ ScViewData* pData, ScSplitPos eNewWhich );
+ ~ScOutlineWindow();
+
+ void ScrollPixel( long nDiff );
+
+ void SetHeaderSize( USHORT nNewSize );
+
+ long GetDepthSize();
+
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/opredlin.hrc b/sc/source/ui/inc/opredlin.hrc
new file mode 100644
index 000000000000..3f2d20140c98
--- /dev/null
+++ b/sc/source/ui/inc/opredlin.hrc
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * $RCSfile: opredlin.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc" // -> RID_SCPAGE_OPREDLINE
+
+#define FT_CONTENT 1
+#define FT_REMOVE 2
+#define FT_INSERT 3
+#define FT_MOVE 4
+#define GB_COLORCHGS 1
+#define CLB_CONTENT 1
+#define CLB_REMOVE 2
+#define CLB_INSERT 3
+#define CLB_MOVE 4
+#define STR_AUTHOR 1
diff --git a/sc/source/ui/inc/opredlin.hxx b/sc/source/ui/inc/opredlin.hxx
new file mode 100644
index 000000000000..c3324becb3bf
--- /dev/null
+++ b/sc/source/ui/inc/opredlin.hxx
@@ -0,0 +1,131 @@
+/*************************************************************************
+ *
+ * $RCSfile: opredlin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SC_OPREDLIN_HXX
+#define _SC_OPREDLIN_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _CTRLBOX_HXX //autogen
+#include <svtools/ctrlbox.hxx>
+#endif
+
+#ifndef _SVX_FNTCTRL_HXX //autogen
+#include <svx/fntctrl.hxx>
+#endif
+
+#ifndef _SVX_STRARRAY_HXX //autogen
+#include <svx/strarray.hxx>
+#endif
+
+/*-----------------------------------------------------------------------
+ Beschreibung: Redlining-Optionen
+ -----------------------------------------------------------------------*/
+
+class ScRedlineOptionsTabPage : public SfxTabPage
+{
+ FixedText aContentFT;
+ ColorListBox aContentColorLB;
+ FixedText aRemoveFT;
+ ColorListBox aRemoveColorLB;
+ FixedText aInsertFT;
+ ColorListBox aInsertColorLB;
+ FixedText aMoveFT;
+ ColorListBox aMoveColorLB;
+ GroupBox aChangedGB;
+ String aAuthorStr;
+ DECL_LINK( ColorHdl, ColorListBox *pColorLB );
+
+
+public:
+
+ ScRedlineOptionsTabPage( Window* pParent, const SfxItemSet& rSet );
+ ~ScRedlineOptionsTabPage();
+
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet );
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+};
+#endif
+
+
diff --git a/sc/source/ui/inc/optdlg.hrc b/sc/source/ui/inc/optdlg.hrc
new file mode 100644
index 000000000000..72392bdbcd53
--- /dev/null
+++ b/sc/source/ui/inc/optdlg.hrc
@@ -0,0 +1,205 @@
+/*************************************************************************
+ *
+ * $RCSfile: optdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+
+/*
+#define RID_SCDLG_OPTIONS 256
+#define RID_SCPAGE_VIEW 256
+#define RID_SCPAGE_USERLISTS 257
+#define RID_SCPAGE_CALC 258
+#define RID_SCPAGE_PRINT 259
+*/
+
+#define TP_GENERAL 1
+#define TP_SAVE 2
+#define TP_PATH 3
+#define TP_SPELL 4
+#define TP_VIEW 5
+#define TP_CALC 6
+#define TP_USERLISTS 7
+#define TP_PRINT 8
+#define TP_COLORS 9
+#define TP_GRID 10
+#define TP_CONTENT 11
+#define TP_LAYOUT 12
+#define TP_INPUT 13
+#define TP_CHANGES 14
+
+// TP_CALC:
+#define BTN_ITERATE 1
+#define FT_STEPS 2
+#define FT_EPS 3
+#define ED_STEPS 4
+#define ED_EPS 5
+#define GB_ZREFS 6
+#define ED_PREC 7
+#define FT_PREC 8
+#define BTN_DATESTD 9
+#define BTN_DATESC10 10
+#define BTN_DATE1904 11
+#define FT_VALUE 13
+#define GB_DATE 14
+#define BTN_CASE 15
+#define FT_CASE 16
+#define BTN_CALC 17
+#define BTN_MATCH 18
+#define BTN_LOOKUP 19
+
+// TP_VIEW:
+#define BTN_VSCROLL 1
+#define BTN_HSCROLL 2
+#define BTN_REGISTER 3
+#define BTN_OUTLINER 4
+#define BTN_HEADERFOOTER 5
+#define BTN_GRID 6
+#define BTN_SYNTAX 7
+#define LB_GRIDCOLOR 9
+#define GB_ELEMENTS 10
+#define BTN_HELPLINES 11
+
+#define BTN_FORMULAS 20
+#define BTN_NULLVALS 21
+#define BTN_NOTES 22
+#define GB_CONTENTS 23
+
+//#define FT_OLE 31
+//#define FT_CHARTS 32
+//#define FT_DRAWINGS 33
+//#define LB_OLE 34
+//#define LB_CHARTS 35
+//#define LB_DRAWINGS 36
+//#define GB_OBJECTS 37
+
+
+// TP_USERLISTS:
+#define FT_LISTS 1
+#define LB_LISTS 1
+#define FT_ENTRIES 2
+#define ED_ENTRIES 2
+#define FT_COPYFROM 3
+#define ED_COPYFROM 3
+#define BTN_NEW 1
+#define BTN_ADD 2
+#define BTN_REMOVE 3
+#define BTN_COPY 4
+#define STR_QUERYREMOVE 5
+#define STR_DISMISS 6
+#define STR_COPYLIST 7
+#define STR_COPYFROM 8
+#define STR_COPYERR 9
+
+// TP_PRINT:
+#define BTN_WARNPAPERBIN 1
+#define BTN_WARNPAPERSIZE 2
+#define BTN_WARNPRINTERNOTFOUND 3
+#define GB_WARNINGS 4
+
+// TP_LCONTENT
+
+#define GB_DISPLAY 20
+#define CB_FORMULA 21
+#define CB_NIL 22
+#define CB_ANNOT 23
+#define CB_VALUE 24
+#define CB_ANCHOR 25
+#define GB_OBJECT 26
+#define FT_OBJGRF 27
+#define LB_OBJGRF 28
+#define FT_DIAGRAM 29
+#define LB_DIAGRAM 30
+#define FT_DRAW 31
+#define LB_DRAW 32
+#define CB_CLIP 33
+
+// TP_LAYOUT
+
+#define GB_WINDOW 50
+#define CB_ROWCOLHEADER 51
+#define CB_HSCROLL 52
+#define CB_VSCROLL 53
+#define CB_TBLREG 54
+#define CB_OUTLINE 55
+#define GB_LINES 56
+#define CB_GRID 57
+#define FT_COLOR 58
+#define LB_COLOR 59
+#define CB_GUIDELINE 60
+#define GB_UNIT 61
+#define LB_UNIT 62
+#define ST_UNIT 63
+#define GB_TAB 64
+#define MF_TAB 65
+#define CB_PAGEBREAKS 66
+#define CB_HANDLES 67
+#define CB_BIGHANDLES 68
+
+// TP_INPUT
+
+#define GB_OPTIONS 70
+#define CB_ALIGN 71
+#define LB_ALIGN 72
+#define CB_EDITMODE 73
+#define CB_FORMAT 74
+#define CB_RFIND 75
+#define CB_EXPREF 76
+#define CB_MARKHDR 77
+
diff --git a/sc/source/ui/inc/optload.hrc b/sc/source/ui/inc/optload.hrc
new file mode 100644
index 000000000000..302848811e95
--- /dev/null
+++ b/sc/source/ui/inc/optload.hrc
@@ -0,0 +1,74 @@
+/*************************************************************************
+ *
+ * $RCSfile: optload.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc" // -> RID_SCPAGE_OPREDLINE
+
+#define GB_LINK 1
+#define RB_ALWAYS 2
+#define RB_REQUEST 3
+#define RB_NEVER 4
+#define CB_DOCONLY 5
+#define CB_MERGE_PARA_DIST 6
+#define GB_COMPAT 7
+#define CB_AUTO_UPDATE_FIELDS 8
+#define CB_AUTO_UPDATE_CHARTS 9
+#define FT_UPDATE_LINKS 10
+
+
diff --git a/sc/source/ui/inc/optload.hxx b/sc/source/ui/inc/optload.hxx
new file mode 100644
index 000000000000..958046657f57
--- /dev/null
+++ b/sc/source/ui/inc/optload.hxx
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * $RCSfile: optload.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _OPTLOAD_HXX
+#define _OPTLOAD_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+class ScDocument;
+
+class ScLoadOptPage : public SfxTabPage
+{
+private:
+ FixedText aLinkFT;
+ RadioButton aAlwaysRB;
+ RadioButton aRequestRB;
+ RadioButton aNeverRB;
+ CheckBox aDocOnlyCB;
+ GroupBox aLinkGB;
+ ScDocument *pDoc;
+
+ DECL_LINK( UpdateHdl, CheckBox* );
+
+public:
+ ScLoadOptPage( Window* pParent,
+ const SfxItemSet& rSet );
+ ~ScLoadOptPage();
+
+ static SfxTabPage* Create( Window* pParent,
+ const SfxItemSet& rAttrSet);
+
+ void SetDocument(ScDocument*);
+
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset( const SfxItemSet& rSet );
+};
+
+#endif
+
+
diff --git a/sc/source/ui/inc/output.hxx b/sc/source/ui/inc/output.hxx
new file mode 100644
index 000000000000..e188efa0b03a
--- /dev/null
+++ b/sc/source/ui/inc/output.hxx
@@ -0,0 +1,262 @@
+/*************************************************************************
+ *
+ * $RCSfile: output.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_OUTPUT_HXX
+#define SC_OUTPUT_HXX
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _TOOLS_COLOR_HXX
+#include <tools/color.hxx>
+#endif
+#ifndef _FRACT_HXX //autogen
+#include <tools/fract.hxx>
+#endif
+
+class Rectangle;
+class Font;
+class OutputDevice;
+class Window;
+class EditEngine;
+class ScDocument;
+class ScBaseCell;
+class ScPatternAttr;
+class SvxMarginItem;
+class SdrObject;
+class SdrOle2Obj;
+struct RowInfo;
+class ScTabViewShell;
+class SvInPlaceObjectRef;
+class ScPageBreakData;
+
+// ---------------------------------------------------------------------------
+
+#define SC_SCENARIO_HSPACE 60
+#define SC_SCENARIO_VSPACE 50
+
+// Twips (Hoehe wird passend in Pixeln berechnet)
+#define SC_CLIPMARK_SIZE 64
+
+// ---------------------------------------------------------------------------
+
+#define SC_OBJECTS_NONE 0
+#define SC_OBJECTS_DRAWING 1
+#define SC_OBJECTS_OLE 2
+#define SC_OBJECTS_CHARTS 4
+#define SC_OBJECTS_ALL ( SC_OBJECTS_DRAWING | SC_OBJECTS_OLE | SC_OBJECTS_CHARTS )
+
+enum ScOutputType { OUTTYPE_WINDOW, OUTTYPE_PRINTER };
+
+class ScOutputData
+{
+friend class ScDrawStringsVars;
+private:
+ OutputDevice* pDev; // Device
+ OutputDevice* pRefDevice; // Drucker bei Preview
+ RowInfo* pRowInfo; // Info-Block
+ USHORT nArrCount; // belegte Zeilen im Info-Block
+ ScDocument* pDoc; // Dokument
+ USHORT nTab; // Tabelle
+ long nScrX; // Ausgabe Startpos. (Pixel)
+ long nScrY;
+ long nScrW; // Ausgabe Groesse (Pixel)
+ long nScrH;
+ USHORT nX1; // Start-/Endkoordinaten
+ USHORT nY1; // ( incl. versteckte )
+ USHORT nX2;
+ USHORT nY2;
+ USHORT nVisX1; // Start-/Endkoordinaten
+ USHORT nVisY1; // ( sichtbarer Bereich )
+ USHORT nVisX2;
+ USHORT nVisY2;
+ ScOutputType eType; // Bildschirm/Drucker ...
+ double nPPTX; // Pixel per Twips
+ double nPPTY;
+// USHORT nZoom; // Zoom-Faktor (Prozent) - fuer GetFont
+ Fraction aZoomX;
+ Fraction aZoomY;
+
+ SdrObject* pEditObj; // beim Painten auslassen
+
+ ScTabViewShell* pViewShell; // zum Connecten von sichtbaren Plug-Ins
+
+ BOOL bEditMode; // InPlace editierte Zelle - nicht ausgeben
+ USHORT nEditCol;
+ USHORT nEditRow;
+
+ BOOL bMetaFile; // Ausgabe auf Metafile (nicht in Pixeln!)
+ BOOL bSingleGrid; // beim Gitter bChanged auswerten
+
+ BOOL bPagebreakMode; // Seitenumbruch-Vorschau
+ BOOL bSolidBackground; // weiss statt transparent
+
+ BOOL bSyntaxMode; // Syntax-Highlighting
+ Color* pValueColor;
+ Color* pTextColor;
+ Color* pFormulaColor;
+
+ Color aGridColor;
+
+ BOOL bShowNullValues;
+ BOOL bShowFormulas;
+ BOOL bShowSpellErrors; // Spell-Errors in EditObjekten anzeigen
+ BOOL bMarkClipped;
+
+ BOOL bSnapPixel;
+
+ BOOL bAnyRotated; // intern
+ BOOL bAnyClipped; // intern
+
+ // private Methoden
+
+ BOOL GetMergeOrigin( USHORT nX, USHORT nY, USHORT nArrY,
+ USHORT& rOverX, USHORT& rOverY,
+ long& rVirtPosX, long& rVirtPosY,
+ BOOL bClipVirt, BOOL bVisRowChanged );
+
+ void SetSyntaxColor( Font* pFont, ScBaseCell* pCell );
+ void SetEditSyntaxColor( EditEngine& rEngine, ScBaseCell* pCell );
+
+ void ConnectObject( const SvInPlaceObjectRef& rRef, SdrOle2Obj* pOleObj );
+
+ double GetStretch();
+
+public:
+ ScOutputData( OutputDevice* pNewDev, ScOutputType eNewType,
+ RowInfo* pNewRowInfo, USHORT nNewCount,
+ ScDocument* pNewDoc,
+ USHORT nNewTab, long nNewScrX, long nNewScrY,
+ USHORT nNewX1, USHORT nNewY1, USHORT nNewX2, USHORT nNewY2,
+ double nPixelPerTwipsX, double nPixelPerTwipsY,
+ const Fraction* pZoomX = NULL,
+ const Fraction* pZoomY = NULL );
+
+ ~ScOutputData();
+
+ void SetRefDevice( OutputDevice* pRDev ) { pRefDevice = pRDev; }
+ void SetEditObject( SdrObject* pObj ) { pEditObj = pObj; }
+ void SetViewShell( ScTabViewShell* pSh ) { pViewShell = pSh; }
+
+ void SetSolidBackground( BOOL bSet ) { bSolidBackground = bSet; }
+
+ void SetEditCell( USHORT nCol, USHORT nRow );
+ void SetSyntaxMode( BOOL bNewMode );
+ void SetMetaFileMode( BOOL bNewMode );
+ void SetSingleGrid( BOOL bNewMode );
+ void SetGridColor( const Color& rColor );
+ void SetMarkClipped( BOOL bSet );
+ void SetShowNullValues ( BOOL bSet = TRUE );
+ void SetShowFormulas ( BOOL bSet = TRUE );
+ void SetShowSpellErrors( BOOL bSet = TRUE );
+ long GetScrW() const { return nScrW; }
+ long GetScrH() const { return nScrH; }
+
+ void SetSnapPixel( BOOL bSet = TRUE );
+
+ void DrawGrid( BOOL bGrid, BOOL bPage );
+ void DrawStrings();
+ void DrawBackground();
+ void DrawShadow();
+ void DrawExtraShadow(BOOL bLeft, BOOL bTop, BOOL bRight, BOOL bBottom);
+ void DrawFrame();
+
+ // im logischen MapMode !
+ //! Scale-Parameter koennen raus (immer 1.0) !!!!
+ void DrawEdit(BOOL bPixelToLogic, double nScaleX=1.0, double nScaleY=1.0);
+
+ void FindRotated();
+ void DrawRotatedFrame(); // Pixel
+ void DrawRotated(BOOL bPixelToLogic); // logisch
+
+ void DrawClear();
+ void DrawPageBorder( USHORT nStartX, USHORT nStartY, USHORT nEndX, USHORT nEndY );
+ void DrawingLayer( USHORT nLayer, USHORT nObjectFlags, long nLogStX, long nLogStY );
+
+ // nur Bildschirm:
+
+ void DrawingSingle( USHORT nLayer, USHORT nObjectFlags, USHORT nDummyFlags );
+
+ void DrawSelectiveObjects( USHORT nLayer, const Rectangle& rRect,
+ USHORT nObjectFlags, USHORT nDummyFlags = 0 );
+
+ BOOL SetChangedClip(); // FALSE = nix
+
+ void FindChanged();
+ void SetPagebreakMode( ScPageBreakData* pPageData );
+ void DrawMark( Window* pWin );
+ void DrawRefMark( USHORT nRefStartX, USHORT nRefStartY,
+ USHORT nRefEndX, USHORT nRefEndY,
+ const Color& rColor, BOOL bHandle );
+ void DrawOneChange( USHORT nRefStartX, USHORT nRefStartY,
+ USHORT nRefEndX, USHORT nRefEndY,
+ const Color& rColor, USHORT nType );
+ void DrawChangeTrack();
+ void DrawClipMarks();
+
+ void DrawNoteMarks();
+ void PrintNoteMarks( const List& rPosList ); // Liste von ScTripeln
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/pagedata.hxx b/sc/source/ui/inc/pagedata.hxx
new file mode 100644
index 000000000000..667ef839512f
--- /dev/null
+++ b/sc/source/ui/inc/pagedata.hxx
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * $RCSfile: pagedata.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PAGEDATA_HXX
+#define SC_PAGEDATA_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScDocShell;
+
+//============================================================================
+
+class ScPrintRangeData
+{
+private:
+ ScRange aPrintRange;
+ USHORT nPagesX;
+ USHORT* pPageEndX;
+ USHORT nPagesY;
+ USHORT* pPageEndY;
+ long nFirstPage;
+ BOOL bTopDown;
+ BOOL bAutomatic;
+
+public:
+ ScPrintRangeData();
+ ~ScPrintRangeData();
+
+ void SetPrintRange( const ScRange& rNew ) { aPrintRange = rNew; }
+ const ScRange& GetPrintRange() const { return aPrintRange; }
+
+ void SetPagesX( USHORT nCount, const USHORT* pEnd );
+ void SetPagesY( USHORT nCount, const USHORT* pEnd );
+
+ USHORT GetPagesX() const { return nPagesX; }
+ const USHORT* GetPageEndX() const { return pPageEndX; }
+ USHORT GetPagesY() const { return nPagesY; }
+ const USHORT* GetPageEndY() const { return pPageEndY; }
+
+ void SetFirstPage( long nNew ) { nFirstPage = nNew; }
+ long GetFirstPage() const { return nFirstPage; }
+ void SetTopDown( BOOL bSet ) { bTopDown = bSet; }
+ BOOL IsTopDown() const { return bTopDown; }
+ void SetAutomatic( BOOL bSet ) { bAutomatic = bSet; }
+ BOOL IsAutomatic() const { return bAutomatic; }
+};
+
+class ScPageBreakData
+{
+private:
+ USHORT nAlloc;
+ USHORT nUsed;
+ ScPrintRangeData* pData; // Array
+
+public:
+ ScPageBreakData(USHORT nMax);
+ ~ScPageBreakData();
+
+ USHORT GetCount() const { return nUsed; }
+ ScPrintRangeData& GetData(USHORT i);
+
+ BOOL IsEqual( const ScPageBreakData& rOther ) const;
+
+ void AddPages();
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/parawin.hxx b/sc/source/ui/inc/parawin.hxx
new file mode 100644
index 000000000000..bd06f8560488
--- /dev/null
+++ b/sc/source/ui/inc/parawin.hxx
@@ -0,0 +1,222 @@
+/*************************************************************************
+ *
+ * $RCSfile: parawin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PARAWIN_HXX
+#define SC_PARAWIN_HXX
+
+#ifndef SC_FUNCUTL_HXX
+#include "funcutl.hxx"
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScAddress
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+
+#ifndef _SV_TABPAGE_HXX //autogen
+#include <vcl/tabpage.hxx>
+#endif
+
+#ifndef _SVSTDARR_STRINGS
+
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+
+#endif
+
+#ifndef _SV_TABCTRL_HXX //autogen
+#include <vcl/tabctrl.hxx>
+#endif
+
+class ScFuncDesc;
+
+//============================================================================
+#define NOT_FOUND 0xffff
+//============================================================================
+
+class ScParaWin : public TabPage
+{
+private:
+
+ Link aScrollLink;
+ Link aFxLink;
+ Link aArgModifiedLink;
+
+ ScFuncDesc* pFuncDesc;
+ ScAnyRefDlg* pMyParent;
+ USHORT nArgs;
+ Font aFntBold;
+ Font aFntLight;
+
+ FixedInfo aFtEditDesc;
+ FixedText aFtArgName;
+ FixedInfo aFtArgDesc;
+
+ ImageButton aBtnFx1;
+ FixedText aFtArg1;
+ ArgEdit aEdArg1;
+ ScRefButton aRefBtn1;
+ ImageButton aBtnFx2;
+ FixedText aFtArg2;
+ ArgEdit aEdArg2;
+ ScRefButton aRefBtn2;
+ ImageButton aBtnFx3;
+ FixedText aFtArg3;
+ ArgEdit aEdArg3;
+ ScRefButton aRefBtn3;
+ ImageButton aBtnFx4;
+ FixedText aFtArg4;
+ ArgEdit aEdArg4;
+ ScRefButton aRefBtn4;
+ ScrollBar aSlider;
+ BOOL bRefMode;
+
+ USHORT nEdFocus;
+ USHORT nActiveLine;
+
+ ArgInput aArgInput[4];
+ String aDefaultString;
+ SvStrings aParaArray;
+ DECL_LINK( ScrollHdl, ScrollBar* );
+ DECL_LINK( ModifyHdl, ArgInput* );
+ DECL_LINK( GetEdFocusHdl, ArgInput* );
+ DECL_LINK( GetFxFocusHdl, ArgInput* );
+ DECL_LINK( GetFxHdl, ArgInput* );
+
+protected:
+
+ virtual void SliderMoved();
+ virtual void ArgumentModified();
+ virtual void FxClick();
+
+ void InitArgInput( USHORT nPos, FixedText& rFtArg, ImageButton& rBtnFx,
+ ArgEdit& rEdArg, ScRefButton& rRefBtn);
+
+ void DelParaArray();
+ void SetArgumentDesc(const String& aText);
+ void SetArgumentText(const String& aText);
+
+
+ void SetArgName (USHORT no,const String &aArg);
+ void SetArgNameFont (USHORT no,const Font&);
+ void SetArgVal (USHORT no,const String &aArg);
+
+ void HideParaLine(USHORT no);
+ void ShowParaLine(USHORT no);
+ void UpdateArgDesc( USHORT nArg );
+ void UpdateArgInput( USHORT nOffset, USHORT i );
+
+public:
+ ScParaWin(ScAnyRefDlg* pParent,Point aPos);
+ ~ScParaWin();
+
+ void SetFunctionDesc(ScFuncDesc* pFDesc);
+ void SetArgCount(USHORT nArgs, USHORT nOffset);
+ void SetEditDesc(const String& aText);
+ void UpdateParas();
+ void ClearAll();
+
+ BOOL IsRefMode() {return bRefMode;}
+ void SetRefMode(BOOL bFlag) {bRefMode=bFlag;}
+
+ USHORT GetActiveLine();
+ void SetActiveLine(USHORT no);
+ ScRefEdit* GetActiveEdit();
+ String GetActiveArgName();
+
+ String GetArgument(USHORT no);
+ void SetArgument(USHORT no, const String& aString);
+ void SetArgumentFonts(const Font&aBoldFont,const Font&aLightFont);
+
+ void SetEdFocus(USHORT nEditLine); //Sichtbare Editzeilen
+ USHORT GetSliderPos();
+ void SetSliderPos(USHORT nSliderPos);
+
+ void SetScrollHdl( const Link& rLink ) { aScrollLink = rLink; }
+ const Link& GetScrollHdl() const { return aScrollLink; }
+
+ void SetArgModifiedHdl( const Link& rLink ) { aArgModifiedLink = rLink; }
+ const Link& GetArgModifiedHdl() const { return aArgModifiedLink; }
+
+ void SetFxHdl( const Link& rLink ) { aFxLink = rLink; }
+ const Link& GetFxHdl() const { return aFxLink; }
+};
+
+
+
+
+
+#endif // SC_PARAWIN_HXX
+
diff --git a/sc/source/ui/inc/pfiltdlg.hxx b/sc/source/ui/inc/pfiltdlg.hxx
new file mode 100644
index 000000000000..607ca4620896
--- /dev/null
+++ b/sc/source/ui/inc/pfiltdlg.hxx
@@ -0,0 +1,183 @@
+/*************************************************************************
+ *
+ * $RCSfile: pfiltdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PFILTDLG_HXX
+#define SC_PFILTDLG_HXX
+
+#ifndef _SV_HXX
+#endif
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+
+#include "global.hxx" // -> ScQueryParam
+
+//------------------------------------------------------------------
+
+class ScViewData;
+class ScDocument;
+class ScQueryItem;
+class TypedStrCollection;
+
+//==================================================================
+
+class ScPivotFilterDlg : public ModalDialog
+{
+public:
+ ScPivotFilterDlg( Window* pParent,
+ const SfxItemSet& rArgSet, USHORT nSourceTab );
+ ~ScPivotFilterDlg();
+
+ const ScQueryItem& GetOutputItem();
+
+private:
+ ListBox aLbField1;
+ ListBox aLbCond1;
+ ComboBox aEdVal1;
+ //----------------------------
+ ListBox aLbConnect1;
+ ListBox aLbField2;
+ ListBox aLbCond2;
+ ComboBox aEdVal2;
+ //----------------------------
+ ListBox aLbConnect2;
+ ListBox aLbField3;
+ ListBox aLbCond3;
+ ComboBox aEdVal3;
+ //----------------------------
+ FixedText aFtConnect;
+ FixedText aFtField;
+ FixedText aFtCond;
+ FixedText aFtVal;
+ GroupBox aGbCriteria;
+
+ CheckBox aBtnCase;
+ CheckBox aBtnRegExp;
+ CheckBox aBtnUnique;
+ FixedText aFtDbAreaLabel;
+ FixedInfo aFtDbArea;
+ GroupBox aGbOptions;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ MoreButton aBtnMore;
+ const String aStrUndefined;
+ const String aStrNoName;
+ const String aStrNone;
+ const String aStrEmpty;
+ const String aStrNotEmpty;
+ const String aStrRow;
+ const String aStrColumn;
+
+ const USHORT nWhichQuery;
+ const ScQueryParam theQueryData;
+ ScQueryItem* pOutItem;
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ USHORT nSrcTab;
+
+ USHORT nFieldCount;
+ ComboBox* aValueEdArr[3];
+ ListBox* aFieldLbArr[3];
+ ListBox* aCondLbArr[3];
+
+ TypedStrCollection* pEntryLists[MAXCOL+1];
+
+#ifdef _PFILTDLG_CXX
+private:
+ void Init ( const SfxItemSet& rArgSet );
+ void FillFieldLists ();
+ void UpdateValueList ( USHORT nList );
+ void ClearValueList ( USHORT nList );
+ USHORT GetFieldSelPos ( USHORT nField );
+
+ // Handler:
+ DECL_LINK( LbSelectHdl, ListBox* );
+ DECL_LINK( ValModifyHdl, ComboBox* );
+ DECL_LINK( CheckBoxHdl, CheckBox* );
+#endif
+};
+
+
+#endif // SC_PFILTDLG_HXX
+
diff --git a/sc/source/ui/inc/pgbrksh.hxx b/sc/source/ui/inc/pgbrksh.hxx
new file mode 100644
index 000000000000..3500d2d67317
--- /dev/null
+++ b/sc/source/ui/inc/pgbrksh.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * $RCSfile: pgbrksh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PGBRKSH_HXX
+#define SC_PGBRKSH_HXX
+
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+
+#include "shellids.hxx"
+
+class ScTabViewShell;
+
+class ScPageBreakShell : public SfxShell
+{
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_PAGEBREAK_SHELL);
+
+ ScPageBreakShell( ScTabViewShell* pView );
+ ~ScPageBreakShell();
+
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/pivotsh.hxx b/sc/source/ui/inc/pivotsh.hxx
new file mode 100644
index 000000000000..da0691ef7804
--- /dev/null
+++ b/sc/source/ui/inc/pivotsh.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * $RCSfile: pivotsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PIVOTSH_HXX
+#define SC_PIVOTSH_HXX
+
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+
+#include "shellids.hxx"
+
+class ScTabViewShell;
+
+class ScPivotShell : public SfxShell
+{
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_PIVOT_SHELL);
+
+ ScPivotShell( ScTabViewShell* pView );
+ ~ScPivotShell();
+
+ void Execute ( SfxRequest& rReq );
+ void GetState( SfxItemSet& rSet );
+
+private:
+ ScTabViewShell* pViewShell;
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/pntlock.hxx b/sc/source/ui/inc/pntlock.hxx
new file mode 100644
index 000000000000..5028160e8a45
--- /dev/null
+++ b/sc/source/ui/inc/pntlock.hxx
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * $RCSfile: pntlock.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PNTLOCK_HXX
+#define SC_PNTLOCK_HXX
+
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx"
+#endif
+
+class ScPaintLockData
+{
+private:
+ ScRangeListRef xRangeList;
+ USHORT nMode;
+ USHORT nLevel;
+ USHORT nParts;
+ BOOL bModified;
+
+public:
+ ScPaintLockData(USHORT nNewMode);
+ ~ScPaintLockData();
+
+ void AddRange( const ScRange& rRange, USHORT nP );
+
+ void SetModified() { bModified = TRUE; }
+ void IncLevel() { ++nLevel; }
+ void DecLevel() { --nLevel; }
+
+ const ScRangeListRef& GetRangeList() const { return xRangeList; }
+ USHORT GetParts() const { return nParts; }
+ USHORT GetLevel() const { return nLevel; }
+ BOOL GetModified() const { return bModified; }
+
+ // fuer Wiederherstellen nach Reset
+ void SetLevel(USHORT nNew) { nLevel = nNew; }
+};
+
+#endif
+
diff --git a/sc/source/ui/inc/popmenu.hxx b/sc/source/ui/inc/popmenu.hxx
new file mode 100644
index 000000000000..dbe8e54324fb
--- /dev/null
+++ b/sc/source/ui/inc/popmenu.hxx
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: popmenu.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_POPMENU_HXX
+#define SC_POPMENU_HXX
+
+#ifndef _MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+
+class ScPopupMenu : public PopupMenu
+{
+private:
+ USHORT nSel;
+ BOOL bHit;
+protected:
+ virtual void Select();
+public:
+ ScPopupMenu() : nSel(0),bHit(FALSE) {}
+ ScPopupMenu(const ResId& rRes) : PopupMenu(rRes),nSel(0),bHit(FALSE) {}
+ USHORT GetSelected() const { return nSel; }
+ BOOL WasHit() const { return bHit; }
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/preview.hxx b/sc/source/ui/inc/preview.hxx
new file mode 100644
index 000000000000..a0f35c8fca36
--- /dev/null
+++ b/sc/source/ui/inc/preview.hxx
@@ -0,0 +1,155 @@
+/*************************************************************************
+ *
+ * $RCSfile: preview.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PREVIEW_HXX
+#define SC_PREVIEW_HXX
+
+
+#ifndef _WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+#include "printfun.hxx" // ScPrintState
+
+class ScDocShell;
+class ScPreviewShell;
+class FmFormView;
+
+class ScPreview : public Window
+{
+private:
+ // eingestellt:
+ long nPageNo; // Seite im Dokument
+ USHORT nZoom; // eingestellter Zoom
+ Point aOffset; // positiv
+
+ // berechnet:
+ BOOL bValid; // folgende Werte gueltig
+ USHORT nTabCount;
+ USHORT nTabsTested; // fuer wieviele Tabellen ist nPages gueltig?
+ long nPages[MAXTAB+1];
+ long nFirstAttr[MAXTAB+1];
+ USHORT nTab; // Tabelle
+ long nTabPage; // Seite von Tabelle
+ long nTabStart; // erste Seite der Tabelle (wirklich)
+ long nDisplayStart; // dito, relativ zum Anfang der Zaehlung
+ Date aDate;
+ Time aTime;
+ long nTotalPages;
+ Size aPageSize; // fuer GetOptimalZoom
+ BOOL bStateValid;
+ ScPrintState aState;
+ FmFormView* pDrawView;
+
+ // intern:
+ BOOL bInPaint;
+ BOOL bInGetState;
+ ScDocShell* pDocShell;
+ ScPreviewShell* pViewShell;
+
+
+ void TestLastPage();
+ void CalcPages( USHORT nToWhichTab );
+ void RecalcPages();
+ void UpdateDrawView();
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+
+public:
+ ScPreview( Window* pParent, ScDocShell* pDocSh, ScPreviewShell* pViewSh );
+ ~ScPreview();
+
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+ void DataChanged(BOOL bNewTime = FALSE); // statt Invalidate rufen
+ void DoInvalidate();
+
+ void SetXOffset( long nX );
+ void SetYOffset( long nY );
+ void SetZoom(USHORT nNewZoom);
+ void SetPageNo( long nPage );
+
+ String GetPosString();
+
+ long GetPageNo() const { return nPageNo; }
+ USHORT GetZoom() const { return nZoom; }
+ Point GetOffset() const { return aOffset; }
+
+ USHORT GetTab() { if (!bValid) { CalcPages(0); RecalcPages(); } return nTab; }
+ long GetTotalPages() { if (!bValid) { CalcPages(0); RecalcPages(); } return nTotalPages; }
+
+ BOOL AllTested() const { return bValid && nTabsTested >= nTabCount; }
+
+ USHORT GetOptimalZoom(BOOL bWidthOnly);
+ long GetFirstPage(USHORT nTab);
+
+ void CalcAll() { CalcPages(MAXTAB); }
+ void SetInGetState(BOOL bSet) { bInGetState = bSet; }
+
+ DECL_STATIC_LINK( ScPreview, InvalidateHdl, void* );
+ static void StaticInvalidate();
+};
+
+
+
+#endif
diff --git a/sc/source/ui/inc/prevwsh.hxx b/sc/source/ui/inc/prevwsh.hxx
new file mode 100644
index 000000000000..6f16e7431a54
--- /dev/null
+++ b/sc/source/ui/inc/prevwsh.hxx
@@ -0,0 +1,158 @@
+/*************************************************************************
+ *
+ * $RCSfile: prevwsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PREVWSH_HXX
+#define SC_PREVWSH_HXX
+
+class ScrollBar;
+
+#ifndef _VIEWFAC_HXX //autogen
+#include <sfx2/viewfac.hxx>
+#endif
+#ifndef _SFXVIEWSH_HXX //autogen
+#include <sfx2/viewsh.hxx>
+#endif
+#ifndef _SVX_ZOOMITEM_HXX //autogen
+#include <svx/zoomitem.hxx>
+#endif
+
+#include "shellids.hxx"
+
+class ScDocShell;
+class ScPreview;
+struct ScHeaderFieldData;
+
+//==================================================================
+
+
+class ScPreviewShell: public SfxViewShell
+{
+ ScDocShell* pDocShell;
+
+ ScPreview* pPreview; // Ausgabe-Fenster
+ ScrollBar* pHorScroll;
+ ScrollBar* pVerScroll;
+ Window* pCorner;
+
+ String aSourceData; // ViewData
+ SvxZoomType eZoom;
+
+private:
+ void Construct( Window* pParent );
+ DECL_LINK(ScrollHandler, ScrollBar* );
+ void DoScroll( USHORT nMode );
+
+protected:
+ virtual void Activate(BOOL bMDI);
+ virtual void Deactivate(BOOL bMDI);
+
+ virtual void AdjustPosSizePixel( const Point &rPos, const Size &rSize );
+
+ virtual void InnerResizePixel( const Point &rOfs, const Size &rSize );
+ virtual void OuterResizePixel( const Point &rOfs, const Size &rSize );
+
+ virtual Size GetOptimalSizePixel() const;
+
+ virtual String GetDescription() const;
+
+ virtual void WriteUserData(String &, BOOL bBrowse = FALSE);
+ virtual void ReadUserData(const String &, BOOL bBrowse = FALSE);
+
+public:
+ TYPEINFO();
+
+ SFX_DECL_INTERFACE(SCID_PREVIEW_SHELL);
+ SFX_DECL_VIEWFACTORY(ScPreviewShell);
+
+ ScPreviewShell( SfxViewFrame* pViewFrame,
+ const ScPreviewShell& rWin );
+ ScPreviewShell( SfxViewFrame* pViewFrame,
+ Window* pParent);
+ ScPreviewShell( SfxViewFrame* pViewFrame,
+ SfxViewShell* pOldSh );
+
+ virtual ~ScPreviewShell();
+
+ void InitStartTable(USHORT nTab);
+
+ void UpdateScrollBars();
+ BOOL ScrollCommand( const CommandEvent& rCEvt );
+
+ void Execute( SfxRequest& rReq );
+ void GetState( SfxItemSet& rSet );
+
+ void FillFieldData( ScHeaderFieldData& rData );
+
+ const String& GetSourceData() const { return aSourceData; }
+
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+
+ virtual SfxPrinter* GetPrinter( BOOL bCreate = FALSE );
+ virtual USHORT SetPrinter( SfxPrinter* pNewPrinter, USHORT nDiffFlags = SFX_PRINTER_ALL );
+ virtual PrintDialog* CreatePrintDialog( Window* pParent );
+ virtual void PreparePrint( PrintDialog* pPrintDialog = NULL );
+ virtual USHORT Print( SfxProgress& rProgress, PrintDialog* pPrintDialog = NULL );
+};
+
+
+
+#endif
diff --git a/sc/source/ui/inc/printfun.hxx b/sc/source/ui/inc/printfun.hxx
new file mode 100644
index 000000000000..349e1f21c3de
--- /dev/null
+++ b/sc/source/ui/inc/printfun.hxx
@@ -0,0 +1,366 @@
+/*************************************************************************
+ *
+ * $RCSfile: printfun.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PRINTFUN_HXX
+#define SC_PRINTFUN_HXX
+
+
+#ifndef SC_PAGEPAR_HXX
+#include "pagepar.hxx"
+#endif
+
+#ifndef SC_EDITUTIL_HXX
+#include "editutil.hxx"
+#endif
+
+#ifndef _PRINT_HXX //autogen
+#include <vcl/print.hxx>
+#endif
+
+class SfxPrinter;
+class SfxProgress;
+class ScDocShell;
+class ScDocument;
+class ScViewData;
+class SfxItemSet;
+class ScPageHFItem;
+class EditTextObject;
+class MultiSelection;
+class ScHeaderEditEngine;
+class ScPageBreakData;
+class SvxBoxItem;
+class SvxBrushItem;
+class SvxShadowItem;
+class FmFormView;
+
+#define RANGENO_NORANGE USHRT_MAX
+
+#define PRINT_HEADER_WIDTH (1.0 * TWIPS_PER_CM)
+#define PRINT_HEADER_HEIGHT (12.8 * TWIPS_PER_POINT)
+#define PRINT_HEADER_FONTHEIGHT 200
+
+
+ // Einstellungen fuer Kopf-/Fusszeilen
+struct ScPrintHFParam
+{
+ BOOL bEnable;
+ BOOL bDynamic;
+ BOOL bShared;
+ long nHeight; // insgesamt (Hoehe+Abstand+Rahmen)
+ long nManHeight; // eingestellte Groesse (Min. bei dynamisch)
+ USHORT nDistance;
+ USHORT nLeft; // Raender
+ USHORT nRight;
+ const ScPageHFItem* pLeft;
+ const ScPageHFItem* pRight;
+ const SvxBoxItem* pBorder;
+ const SvxBrushItem* pBack;
+ const SvxShadowItem* pShadow;
+};
+
+
+// "Ersatz" fuer SV-JobSetup:
+
+class ScJobSetup
+{
+public:
+ ScJobSetup( SfxPrinter* pPrinter );
+
+ Size aUserSize;
+ MapMode aUserMapMode;
+ Paper ePaper;
+ Orientation eOrientation;
+ USHORT nPaperBin;
+};
+
+struct ScPrintState // Variablen aus ScPrintFunc retten
+{
+ USHORT nPrintTab;
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nZoom;
+ USHORT nPagesX;
+ USHORT nPagesY;
+ long nTabPages;
+ long nTotalPages;
+ long nPageStart;
+ long nDocPages;
+};
+
+class ScPageRowEntry
+{
+private:
+ USHORT nStartRow;
+ USHORT nEndRow;
+ USHORT nPagesX;
+ BOOL* pHidden;
+ //! Anzahl wirklich sichtbarer cachen???
+
+public:
+ ScPageRowEntry() { nStartRow = nEndRow = nPagesX = 0; pHidden = NULL; }
+ ~ScPageRowEntry() { delete[] pHidden; }
+
+ ScPageRowEntry(const ScPageRowEntry& r);
+ const ScPageRowEntry& operator=(const ScPageRowEntry& r);
+
+ USHORT GetStartRow() const { return nStartRow; }
+ USHORT GetEndRow() const { return nEndRow; }
+ USHORT GetPagesX() const { return nPagesX; }
+ void SetStartRow(USHORT n) { nStartRow = n; }
+ void SetEndRow(USHORT n) { nEndRow = n; }
+
+ void SetPagesX(USHORT nNew);
+ void SetHidden(USHORT nX);
+ BOOL IsHidden(USHORT nX) const;
+
+ USHORT CountVisible() const;
+};
+
+class ScPrintFunc
+{
+private:
+ ScDocShell* pDocShell;
+ ScDocument* pDoc;
+ SfxPrinter* pPrinter;
+ OutputDevice* pDev;
+
+ FmFormView* pDrawView;
+
+ MapMode aOldPrinterMode; // MapMode vor dem Aufruf
+
+ Point aSrcOffset; // Papier-1/100 mm
+ Point aOffset; // mit Faktor aus Seitenformat skaliert
+ USHORT nManualZoom; // Zoom in Preview (Prozent)
+ BOOL bClearWin; // Ausgabe vorher loeschen
+
+ USHORT nPrintTab;
+ long nPageStart; // Offset fuer erste Seite
+ long nDocPages; // Seiten im Dokument
+
+ const ScRange* pUserArea; // Selektion, wenn im Dialog eingestellt
+
+ const SfxItemSet* pParamSet; // eingestellte Vorlage
+ BOOL bState; // aus State-struct erzeugt
+
+ // Parameter aus Vorlage:
+ USHORT nLeftMargin;
+ USHORT nTopMargin;
+ USHORT nRightMargin;
+ USHORT nBottomMargin;
+ BOOL bCenterHor;
+ BOOL bCenterVer;
+ BOOL bLandscape;
+ USHORT nPageUsage;
+ Size aPageSize; // Drucker-Twips
+ const SvxBoxItem* pBorderItem;
+ const SvxBrushItem* pBackgroundItem;
+ const SvxShadowItem* pShadowItem;
+
+ ScPrintHFParam aHdr;
+ ScPrintHFParam aFtr;
+ ScPageTableParam aTableParam;
+ ScPageAreaParam aAreaParam;
+
+ // berechnete Werte:
+ USHORT nZoom;
+ BOOL bPrintCurrentTable;
+ BOOL bMultiArea;
+ long nTabPages;
+ long nTotalPages;
+
+ USHORT nObjectFlags;
+
+ Rectangle aPageRect; // Dokument-Twips
+
+ MapMode aLogicMode; // in DoPrint gesetzt
+ MapMode aOffsetMode;
+ MapMode aTwipMode;
+ double nScaleX;
+ double nScaleY;
+
+ USHORT nRepeatStartCol;
+ USHORT nRepeatEndCol;
+ USHORT nRepeatStartRow;
+ USHORT nRepeatEndRow;
+
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+
+ USHORT* pPageEndX; // Seitenaufteilung
+ USHORT* pPageEndY;
+ ScPageRowEntry* pPageRows;
+ USHORT nPagesX;
+ USHORT nPagesY;
+ USHORT nTotalY;
+
+ ScHeaderEditEngine* pEditEngine;
+ SfxItemSet* pEditDefaults;
+
+ ScHeaderFieldData aFieldData;
+
+ List aNotePosList; // Reihenfolge der Notizen
+
+ ScPageBreakData* pPageData; // zum Eintragen der Umbrueche etc.
+
+public:
+ ScPrintFunc( ScDocShell* pShell, SfxPrinter* pNewPrinter, USHORT nTab,
+ long nPage = 0, long nDocP = 0,
+ const ScRange* pArea = NULL,
+ ScPageBreakData* pData = NULL );
+
+ ScPrintFunc( ScDocShell* pShell, Window* pWindow, USHORT nTab,
+ long nPage = 0, long nDocP = 0,
+ const ScRange* pArea = NULL );
+
+ ScPrintFunc( ScDocShell* pShell, Window* pWindow,
+ const ScPrintState& rState );
+
+ ~ScPrintFunc();
+
+ static void DrawToDev( ScDocument* pDoc, OutputDevice* pDev, double nPrintFactor,
+ const Rectangle& rBound, ScViewData* pViewData, BOOL bMetaFile );
+
+ void SetDrawView( FmFormView* pNew );
+
+ void SetOffset( const Point& rOfs );
+ void SetManualZoom( USHORT nNewZoom );
+ void SetDateTime( const Date& rDate, const Time& rTime );
+
+ void SetClearFlag( BOOL bFlag );
+
+ BOOL UpdatePages();
+
+ void ApplyPrintSettings(); // aus DoPrint() schon gerufen
+ long DoPrint(const MultiSelection& rPageRanges,
+ long nStartPage, long nDisplayStart,
+ SfxProgress* pProgress = NULL );
+
+ // Werte abfragen - sofort
+
+ Size GetPageSize() const { return aPageSize; }
+ Size GetDataSize() const;
+ void GetScaleData( Size& rPhysSize, long& rDocHdr, long& rDocFtr );
+ long GetFirstPageNo() const { return aTableParam.nFirstPageNo; }
+
+ // letzte Werte abfragen - nach DoPrint !!!
+
+ double GetScaleX() const { return nScaleX; }
+ double GetScaleY() const { return nScaleY; }
+ long GetTotalPages() const { return nTotalPages; }
+ USHORT GetZoom() const { return nZoom; }
+
+ void ResetBreaks( USHORT nTab );
+
+ void GetPrintState( ScPrintState& rState );
+
+#ifdef _PRINTFUN_CXX
+private:
+ void Construct();
+ void InitParam();
+ void CalcZoom( USHORT nRangeNo );
+ void CalcPages();
+ long CountPages();
+ long CountNotePages();
+
+ BOOL AdjustPrintArea( BOOL bNew );
+
+ Size GetDocPageSize();
+
+ long TextHeight( const EditTextObject* pObject );
+ void MakeEditEngine();
+ void UpdateHFHeight( ScPrintHFParam& rParam );
+
+ void InitModes();
+
+ BOOL IsLeft( long nPageNo );
+ BOOL IsMirror( long nPageNo );
+ void ReplaceFields( long nPageNo ); // aendert Text in pEditEngine
+ void MakeTableString(); // setzt aTableStr
+
+ void PrintPage( long nPageNo,
+ USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 );
+ void PrintArea( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ long nScrX, long nScrY,
+ BOOL bShLeft, BOOL bShTop, BOOL bShRight, BOOL bShBottom );
+ void PrintColHdr( USHORT nX1, USHORT nX2, long nScrX, long nScrY );
+ void PrintRowHdr( USHORT nY1, USHORT nY2, long nScrX, long nScrY );
+ void PrintHF( long nPageNo, const ScPrintHFParam& rParam, long nStartY );
+
+ long PrintNotes( long nPageNo, long nNoteStart, BOOL bDoPrint );
+ long DoNotes( long nNoteStart, BOOL bDoPrint );
+
+ void DrawBorder( long nScrX, long nScrY, long nScrW, long nScrH,
+ const SvxBoxItem* pBorderData,
+ const SvxBrushItem* pBackground,
+ const SvxShadowItem* pShadow );
+
+ void FillPageData();
+#endif
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/privsplt.hxx b/sc/source/ui/inc/privsplt.hxx
new file mode 100644
index 000000000000..8b71e5ff1e6f
--- /dev/null
+++ b/sc/source/ui/inc/privsplt.hxx
@@ -0,0 +1,122 @@
+/*************************************************************************
+ *
+ * $RCSfile: privsplt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PRIVSPLT_HXX
+#define SC_PRIVSPLT_HXX
+
+#ifndef _SV_CTRL_HXX //autogen
+#include <vcl/ctrl.hxx>
+#endif
+
+enum SC_SPLIT_DIRECTION {SC_SPLIT_HORZ,SC_SPLIT_VERT };
+
+class ScPrivatSplit : public Control
+{
+ private:
+
+ Link aCtrModifiedLink;
+ BOOL aMovingFlag;
+ Pointer aWinPointer;
+ SC_SPLIT_DIRECTION eScSplit;
+ short nOldX;
+ short nOldY;
+ short nNewX;
+ short nNewY;
+ short nMinPos;
+ short nMaxPos;
+ Range aXMovingRange;
+ Range aYMovingRange;
+ short nDeltaX;
+ short nDeltaY;
+
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+
+
+
+ protected:
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt);
+
+ public:
+
+ ScPrivatSplit( Window* pWindow, const ResId& rResId,
+ SC_SPLIT_DIRECTION eScSplit);
+
+ virtual short GetDeltaX();
+ virtual short GetDeltaY();
+
+ virtual void CtrModified();
+
+ void SetXRange(Range cRgeX);
+ void SetYRange(Range cRgeY);
+
+ void MoveSplitTo(Point aPos);
+
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+ void SetCtrModifiedHdl( const Link& rLink ) { aCtrModifiedLink = rLink; }
+ const Link& GetCtrModifiedHdl() const { return aCtrModifiedLink; }
+};
+
+
+#endif
diff --git a/sc/source/ui/inc/pvfundlg.hxx b/sc/source/ui/inc/pvfundlg.hxx
new file mode 100644
index 000000000000..fef2e5858dd6
--- /dev/null
+++ b/sc/source/ui/inc/pvfundlg.hxx
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * $RCSfile: pvfundlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PVFUNDLG_HXX
+#define SC_PVFUNDLG_HXX
+
+#ifndef _SV_HXX
+#endif
+//#ifndef _SVTOOL_HXX
+//#include <svtool.hxx>
+//#endif
+//#include <svtfixed.hxx>
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+//===================================================================
+
+class ScPivotFunctionDlg : public ModalDialog
+{
+public:
+ ScPivotFunctionDlg( Window* pParent,
+ BOOL bSubTotalFunc,
+ const String& rName,
+ USHORT nFunctions,
+ BOOL bIsShowAll );
+ ~ScPivotFunctionDlg();
+
+ USHORT GetFuncMask() const { return nFuncMask; }
+ BOOL GetShowAll() const;
+
+private:
+ RadioButton aBtnNone;
+ RadioButton aBtnAuto;
+ RadioButton aBtnUser;
+ MultiListBox aLbFunc;
+ GroupBox aGbFunc;
+ CheckBox aCbShowAll;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ FixedText aFtNameLabel;
+ FixedInfo aFtName;
+
+ USHORT nFuncMask;
+
+private:
+ void InitFuncLb ( USHORT nFunctions );
+ void SetUI ( BOOL bSubTotals );
+ // Handler
+ DECL_LINK( ClickHdl, PushButton * );
+ DECL_LINK( DblClickHdl, MultiListBox * );
+ DECL_LINK( RadioClickHdl, RadioButton * );
+};
+
+
+#endif // SC_PVFUNDLG_HXX
+
+
diff --git a/sc/source/ui/inc/pvlaydlg.hxx b/sc/source/ui/inc/pvlaydlg.hxx
new file mode 100644
index 000000000000..a9a41cc3368d
--- /dev/null
+++ b/sc/source/ui/inc/pvlaydlg.hxx
@@ -0,0 +1,239 @@
+/*************************************************************************
+ *
+ * $RCSfile: pvlaydlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_PVLAYDLG_HXX
+#define SC_PVLAYDLG_HXX
+
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SCRBAR_HXX //autogen
+#include <vcl/scrbar.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+#ifndef SC_FIELDWND_HXX
+#include "fieldwnd.hxx"
+#endif
+
+
+/*==========================================================================*\
+
+ Eine Instanz der Klasse ScPivotLayoutDlg ist ein (semi-)modaler
+ Dialog, in dem mit der Maus Felder mit Spaltenueberschriften den
+ drei Pivot-Kategorien "Spalte", "Zeile" und "Daten" zugeordnet
+ werden koennen.
+
+ Der Dialog erhaelt in der Struktur LabelData Informationen ueber
+ diese Ueberschriften (Name, Art (Zahl/String) und Funktionsmaske).
+ Weiterhin werden drei PivotFeld-Arrays uebergeben, mit denen die
+ drei Kategorie-Fenster initialisiert werden. Ein Kategorie-Fenster
+ wird durch eine Instanz der Klasse FieldWindow dargestellt. Ein
+ solches Fenster ist fuer die Darstellung der Datenstrukturen am
+ Schirm zustaendig. Es meldet Mausaktionen an den Dialog weiter und
+ bietet entsprechende Methoden zur Veraenderung der Darstellung.
+ Der Dialog sorgt fuer den Abgleich der interenen Datenstrukturen mit
+ der Bildschirmdarstellung. Ein weiteres FieldWindow (Select) bietet
+ alle Tabellenueberschriften zur Auswahl an, ist also "read-only".
+
+\*==========================================================================*/
+
+//============================================================================
+
+class ScViewData;
+class ScDocument;
+class ScRangeData;
+struct FuncData;
+class ScDPObject;
+
+//============================================================================
+
+#define FUNC_COUNT 11
+
+class ScPivotLayoutDlg : public ScAnyRefDlg
+{
+public:
+ ScPivotLayoutDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ const ScDPObject* pDPObject );
+ ~ScPivotLayoutDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+ virtual BOOL IsRefInputMode() const { return bRefInputMode; }
+ virtual void SetActive();
+ virtual BOOL Close();
+
+ void NotifyDoubleClick ( FieldType eType, USHORT nFieldIndex );
+ const Pointer* NotifyMouseButtonDown( FieldType eType, USHORT nFieldIndex );
+ void NotifyMouseButtonUp ( const Point& rAt );
+ const Pointer* NotifyMouseMove ( const Point& rAt );
+
+private:
+ ScrollBar aSlider;
+ FieldWindow aWndRow;
+ FieldWindow aWndCol;
+ FieldWindow aWndData;
+ FieldWindow aWndSelect;
+ GroupBox aGbLayout;
+
+ FixedInfo aFtInfo;
+ ListBox aLbOutPos;
+ FixedText aFtOutArea;
+ ScRefEdit aEdOutPos;
+ ScRefButton aRbOutPos;
+ CheckBox aBtnIgnEmptyRows;
+ CheckBox aBtnDetectCat;
+ CheckBox aBtnTotalCol;
+ CheckBox aBtnTotalRow;
+ GroupBox aGbAreas;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ MoreButton aBtnMore;
+ HelpButton aBtnHelp;
+
+ Pointer aPtrField;
+ Pointer aPtrCol;
+ Pointer aPtrRow;
+
+ const String aStrUndefined;
+ const String aStrNewTable;
+ String* aFuncNameArr[FUNC_COUNT];
+
+ Pointer aPtrArrow;
+ FieldType eDnDFromType;
+ USHORT nDnDFromIndex;
+ BOOL bIsDrag;
+
+ Rectangle aRectRow;
+ Rectangle aRectCol;
+ Rectangle aRectData;
+ Rectangle aRectSelect;
+
+ LabelData** aLabelDataArr; // (nCol, Feldname, Zahl/Text)
+ USHORT nLabelCount;
+
+ short nOffset;
+ FuncData* aSelectArr [MAX_LABELS]; // (nCol, nFuncMask)
+ FuncData* aColArr [MAX_FIELDS]; // (nCol, nFuncMask)
+ FuncData* aRowArr [MAX_FIELDS]; // (nCol, nFuncMask)
+ FuncData* aDataArr [MAX_FIELDS]; // (nCol, nFuncMask)
+
+ BOOL bShowAll[MAX_LABELS];
+
+ ScDPObject* pDlgDPObject;
+ ScPivotParam thePivotData;
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ BOOL bRefInputMode;
+
+#ifdef _PVLAYDLG_CXX
+private:
+ void Init ();
+ void InitWndSelect ( LabelData** ppLabelArr, USHORT nLabels );
+ void InitWnd ( PivotField* pArr, USHORT nCount, FieldType eType );
+ void CalcWndSizes ();
+ Point DlgPos2WndPos ( const Point& rPt, Window& rWnd );
+ LabelData* GetLabelData ( short nCol, USHORT* pPos = NULL );
+ String GetLabelString ( short nCol );
+ String GetFuncString ( USHORT& rFuncMask, BOOL bIsValue = TRUE );
+ BOOL Contains ( FuncData** pArr, short nCol, USHORT& nAt );
+ void Remove ( FuncData** pArr, USHORT nAt );
+ void Insert ( FuncData** pArr, const FuncData& rFData, USHORT nAt );
+ void AddField ( FieldType eToType, const Point& rAtPos );
+ void MoveField ( FieldType eFromType,
+ FieldType eToType,
+ const Point& rAtPos );
+ BOOL GetPivotArrays ( PivotField* pColArr,
+ PivotField* pRowArr,
+ PivotField* pDataArr,
+ USHORT& rColCount,
+ USHORT& rRowCount,
+ USHORT& rDataCount );
+ // Handler
+ DECL_LINK( ScrollHdl, ScrollBar * );
+ DECL_LINK( SelAreaHdl, ListBox * );
+ DECL_LINK( MoreClickHdl, MoreButton * );
+ DECL_LINK( EdModifyHdl, Edit * );
+ DECL_LINK( OkHdl, OKButton * );
+ DECL_LINK( CancelHdl, CancelButton * );
+#endif
+};
+
+
+
+#endif // SC_PVLAYDLG_HXX
+
diff --git a/sc/source/ui/inc/redcom.hxx b/sc/source/ui/inc/redcom.hxx
new file mode 100644
index 000000000000..356321e4c574
--- /dev/null
+++ b/sc/source/ui/inc/redcom.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: redcom.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_REDCOM_HXX
+#define SC_REDCOM_HXX
+
+#ifndef _SVX_POSTDLG_HXX //autogen
+#include <svx/postdlg.hxx>
+#endif
+
+#ifndef SC_CHGTRACK_HXX
+#include "chgtrack.hxx"
+#endif
+
+class ScDocShell;
+
+class ScRedComDialog : public SvxPostItDialog
+{
+
+private:
+
+ ScChangeAction *pChangeAction;
+ ScDocShell *pDocShell;
+ String aComment;
+
+ DECL_LINK( PrevHdl, SvxPostItDialog* );
+ DECL_LINK( NextHdl, SvxPostItDialog* );
+
+protected:
+
+ void ReInit(ScChangeAction *);
+ void SelectCell();
+
+ ScChangeAction *FindPrev(ScChangeAction *pAction);
+ ScChangeAction *FindNext(ScChangeAction *pAction);
+
+public:
+
+ ScRedComDialog( Window* pParent, const SfxItemSet& rCoreSet,
+ ScDocShell *,ScChangeAction *,BOOL bPrevNext = FALSE);
+ ~ScRedComDialog();
+
+ virtual short Execute();
+};
+
+#endif
+
diff --git a/sc/source/ui/inc/reffact.hxx b/sc/source/ui/inc/reffact.hxx
new file mode 100644
index 000000000000..5638e8f3cb2b
--- /dev/null
+++ b/sc/source/ui/inc/reffact.hxx
@@ -0,0 +1,139 @@
+/*************************************************************************
+ *
+ * $RCSfile: reffact.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_REFFACT_HXX
+#define SC_REFFACT_HXX
+
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+
+#include "dbfunc.hxx"
+
+#define DECL_WRAPPER(Class) \
+ class Class : public SfxChildWindow \
+ { \
+ public: \
+ Class( Window*, USHORT, SfxBindings*, SfxChildWinInfo* ); \
+ SFX_DECL_CHILDWINDOW(Class); \
+ };
+
+
+//==================================================================
+
+DECL_WRAPPER(ScNameDlgWrapper)
+DECL_WRAPPER(ScSolverDlgWrapper)
+DECL_WRAPPER(ScPivotLayoutWrapper)
+DECL_WRAPPER(ScTabOpDlgWrapper)
+DECL_WRAPPER(ScFilterDlgWrapper)
+DECL_WRAPPER(ScSpecialFilterDlgWrapper)
+DECL_WRAPPER(ScDbNameDlgWrapper)
+DECL_WRAPPER(ScConsolidateDlgWrapper)
+DECL_WRAPPER(ScChartDlgWrapper)
+DECL_WRAPPER(ScPrintAreasDlgWrapper)
+DECL_WRAPPER(ScCondFormatDlgWrapper)
+DECL_WRAPPER(ScColRowNameRangesDlgWrapper)
+DECL_WRAPPER(ScFormulaDlgWrapper)
+DECL_WRAPPER(ScHighlightChgDlgWrapper)
+
+/*!!! dafuer muss der Funktionsautopilot noch umgebaut werden
+DECL_WRAPPER(ScFunctionDlgWrapper)
+DECL_WRAPPER(ScEditFunctionDlgWrapper)
+DECL_WRAPPER(ScArgumentDlgWrapper)
+*/
+
+class ScAcceptChgDlgWrapper: public SfxChildWindow
+{
+ public:
+ ScAcceptChgDlgWrapper( Window*,
+ USHORT,
+ SfxBindings*,
+ SfxChildWinInfo* );
+
+ SFX_DECL_CHILDWINDOW(Class);
+
+ virtual void ReInitDlg();
+};
+
+class ScSimpleRefDlgWrapper: public SfxChildWindow
+{
+ public:
+ ScSimpleRefDlgWrapper( Window*,
+ USHORT,
+ SfxBindings*,
+ SfxChildWinInfo* );
+
+ SFX_DECL_CHILDWINDOW(Class);
+
+ static void SetDefaultPosSize(Point aPos, Size aSize, BOOL bSet=TRUE);
+ virtual String GetRefString();
+ virtual void SetRefString(const String& rStr);
+ void SetCloseHdl( const Link& rLink );
+ static void SetAutoReOpen(BOOL bFlag);
+
+ void StartRefInput();
+};
+
+
+//==================================================================
+
+
+#endif // SC_REFFACT_HXX
diff --git a/sc/source/ui/inc/refundo.hxx b/sc/source/ui/inc/refundo.hxx
new file mode 100644
index 000000000000..c287a08ee4d0
--- /dev/null
+++ b/sc/source/ui/inc/refundo.hxx
@@ -0,0 +1,103 @@
+/*************************************************************************
+ *
+ * $RCSfile: refundo.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_REFUNDO_HXX
+#define SC_REFUNDO_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class ScDocument;
+class ScDBCollection;
+class ScRangeName;
+class ScPrintRangeSaver;
+class ScPivotCollection;
+class ScDPCollection;
+class ScChartCollection;
+class ScConditionalFormatList;
+class ScDetOpList;
+class ScChartListenerCollection;
+
+class ScRefUndoData
+{
+private:
+ ScDBCollection* pDBCollection;
+ ScRangeName* pRangeName;
+ ScPrintRangeSaver* pPrintRanges;
+ ScPivotCollection* pPivotCollection;
+ ScDPCollection* pDPCollection;
+ ScConditionalFormatList* pCondFormList;
+ ScDetOpList* pDetOpList;
+ ScChartListenerCollection* pChartListenerCollection;
+
+public:
+ ScRefUndoData( const ScDocument* pDoc );
+ ~ScRefUndoData();
+
+ void DeleteUnchanged( const ScDocument* pDoc );
+ void DoUndo( ScDocument* pDoc, BOOL bUndoRefFirst );
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/rfindlst.hxx b/sc/source/ui/inc/rfindlst.hxx
new file mode 100644
index 000000000000..b611af660ca6
--- /dev/null
+++ b/sc/source/ui/inc/rfindlst.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * $RCSfile: rfindlst.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_RFINDLST_HXX
+#define SC_RFINDLST_HXX
+
+#ifndef _COLOR_HXX //autogen
+#include <vcl/color.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//==================================================================
+
+struct ScRangeFindData
+{
+ ScRange aRef;
+ USHORT nFlags;
+ xub_StrLen nSelStart;
+ xub_StrLen nSelEnd;
+
+ ScRangeFindData( const ScRange& rR, USHORT nF, xub_StrLen nS, xub_StrLen nE ) :
+ aRef(rR), nFlags(nF), nSelStart(nS), nSelEnd(nE) {}
+};
+
+class ScRangeFindList
+{
+ List aEntries;
+ String aDocName;
+ BOOL bHidden;
+
+public:
+ ScRangeFindList(const String& rName);
+ ~ScRangeFindList();
+
+ ULONG Count() const { return aEntries.Count(); }
+ void Insert( ScRangeFindData* pNew ) { aEntries.Insert(pNew, LIST_APPEND); }
+ ScRangeFindData* GetObject( ULONG nIndex ) const
+ { return (ScRangeFindData*)aEntries.GetObject(nIndex); }
+
+ void SetHidden( BOOL bSet ) { bHidden = bSet; }
+
+ const String& GetDocName() const { return aDocName; }
+ BOOL IsHidden() const { return bHidden; }
+
+ static ColorData GetColorName( USHORT nIndex );
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/scendlg.hxx b/sc/source/ui/inc/scendlg.hxx
new file mode 100644
index 000000000000..eafe13a5f7de
--- /dev/null
+++ b/sc/source/ui/inc/scendlg.hxx
@@ -0,0 +1,133 @@
+/*************************************************************************
+ *
+ * $RCSfile: scendlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SCENDLG_HXX
+#define SC_SCENDLG_HXX
+
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+
+#ifndef _CTRLBOX_HXX //autogen
+#include <svtools/ctrlbox.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+//===================================================================
+
+class ScNewScenarioDlg : public ModalDialog
+{
+public:
+ ScNewScenarioDlg( Window* pParent, const String& rName, BOOL bEdit = FALSE );
+ ~ScNewScenarioDlg();
+
+ void SetScenarioData( const String& rName, const String& rComment,
+ const Color& rColor, USHORT nFlags );
+
+ void GetScenarioData( String& rName, String& rComment,
+ Color& rColor, USHORT& rFlags ) const;
+
+private:
+ GroupBox aGbName;
+ Edit aEdName;
+ GroupBox aGbComment;
+ MultiLineEdit aEdComment;
+ GroupBox aGbOptions;
+ CheckBox aCbShowFrame;
+ ColorListBox aLbColor;
+ //CheckBox aCbPrintFrame;
+ CheckBox aCbTwoWay;
+ //CheckBox aCbAttrib;
+ //CheckBox aCbValue;
+ CheckBox aCbCopyAll;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ const String aDefScenarioName;
+ BOOL bIsEdit;
+
+ DECL_LINK( OkHdl, OKButton * );
+};
+
+
+#endif // SC_SCENDLG_HXX
+
+
diff --git a/sc/source/ui/inc/select.hxx b/sc/source/ui/inc/select.hxx
new file mode 100644
index 000000000000..43dec1df1c98
--- /dev/null
+++ b/sc/source/ui/inc/select.hxx
@@ -0,0 +1,161 @@
+/*************************************************************************
+ *
+ * $RCSfile: select.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SELECT_HXX
+#define SC_SELECT_HXX
+
+#ifndef _SELENG_HXX //autogen
+#include <vcl/seleng.hxx>
+#endif
+
+#include "viewdata.hxx" // ScSplitPos
+
+// ---------------------------------------------------------------------------
+
+class ScTabView;
+class ScViewData;
+
+
+class ScViewSelectionEngine : public SelectionEngine
+{
+private:
+ ScSplitPos eWhich;
+public:
+ ScViewSelectionEngine( Window* pWindow, ScTabView* pView,
+ ScSplitPos eSplitPos );
+
+ ScSplitPos GetWhich() const { return eWhich; }
+ void SetWhich(ScSplitPos eNew) { eWhich = eNew; }
+};
+
+
+class ScViewFunctionSet : public FunctionSet // View (Gridwin / Tastatur)
+{
+private:
+ ScViewData* pViewData;
+ ScViewSelectionEngine* pEngine;
+
+ BOOL bAnchor;
+ BOOL bStarted;
+ ScTripel aAnchorPos;
+
+ ScSplitPos GetWhich();
+
+public:
+ ScViewFunctionSet( ScViewData* pNewViewData );
+
+ void SetSelectionEngine( ScViewSelectionEngine* pSelEngine );
+
+ void SetAnchor( USHORT nPosX, USHORT nPosY );
+ void SetAnchorFlag( BOOL bSet );
+
+ virtual void BeginDrag();
+ virtual void CreateAnchor();
+ virtual void DestroyAnchor();
+ virtual BOOL SetCursorAtPoint( const Point& rPointPixel, BOOL bDontSelectAtCursor = FALSE );
+ virtual BOOL IsSelectionAtPoint( const Point& rPointPixel );
+ virtual void DeselectAtPoint( const Point& rPointPixel );
+ virtual void DeselectAll();
+
+ BOOL SetCursorAtCell( short nPosX, short nPosY, BOOL bScroll );
+};
+
+
+// ---------------------------------------------------------------------------
+
+
+class ScHeaderFunctionSet : public FunctionSet // Spalten- / Zeilenkoepfe
+{
+private:
+ ScViewData* pViewData;
+ BOOL bColumn; // Col- / Rowbar
+ ScSplitPos eWhich;
+
+ BOOL bAnchor;
+ USHORT nCursorPos;
+
+public:
+ ScHeaderFunctionSet( ScViewData* pNewViewData );
+
+ void SetColumn( BOOL bSet );
+ void SetWhich( ScSplitPos eNew );
+
+ virtual void BeginDrag();
+ virtual void CreateAnchor();
+ virtual void DestroyAnchor();
+ virtual BOOL SetCursorAtPoint( const Point& rPointPixel, BOOL bDontSelectAtCursor = FALSE );
+ virtual BOOL IsSelectionAtPoint( const Point& rPointPixel );
+ virtual void DeselectAtPoint( const Point& rPointPixel );
+ virtual void DeselectAll();
+
+ void SetAnchorFlag(BOOL bSet) { bAnchor = bSet; }
+};
+
+
+class ScHeaderSelectionEngine : public SelectionEngine
+{
+public:
+ ScHeaderSelectionEngine( Window* pWindow, ScHeaderFunctionSet* pFuncSet );
+};
+
+
+
+#endif
diff --git a/sc/source/ui/inc/servobj.hxx b/sc/source/ui/inc/servobj.hxx
new file mode 100644
index 000000000000..3414444fc1a5
--- /dev/null
+++ b/sc/source/ui/inc/servobj.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * $RCSfile: servobj.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SERVOBJ_HXX
+#define SC_SERVOBJ_HXX
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef _PSEUDO_HXX //autogen
+#include <so3/pseudo.hxx>
+#endif
+
+#include "global.hxx"
+
+class ScDocShell;
+
+class ScServerObject : public SvPseudoObject, public SfxListener
+{
+private:
+ ScDocShell* pDocSh;
+ ScRange aRange;
+ String aItemStr;
+ BOOL bRefreshListener;
+
+ void Clear();
+
+public:
+ ScServerObject( ScDocShell* pShell, const String& rItem );
+ virtual ~ScServerObject();
+
+ virtual BOOL GetData( SvData* );
+ virtual BOOL SetData( SvData& );
+
+ ULONG GetSelectorCount() const { return SvPseudoObject::GetSelectorCount(); }
+
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+};
+
+//SO2_DECL_REF( ScServerObject )
+
+
+#endif
diff --git a/sc/source/ui/inc/shtabdlg.hxx b/sc/source/ui/inc/shtabdlg.hxx
new file mode 100644
index 000000000000..c88c1a98d35d
--- /dev/null
+++ b/sc/source/ui/inc/shtabdlg.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: shtabdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SHTABDLG_HXX
+#define SC_SHTABDLG_HXX
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+//------------------------------------------------------------------------
+
+class ScShowTabDlg : public ModalDialog
+{
+private:
+ MultiListBox aLb;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+ FixedText aFtLbTitle;
+
+ DECL_LINK( DblClkHdl, void * );
+
+public:
+ ScShowTabDlg( Window* pParent, List& aEntryList );
+ ~ScShowTabDlg();
+
+ USHORT GetSelectEntryCount() const;
+ String GetSelectEntry(USHORT nPos) const;
+};
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/simpref.hrc b/sc/source/ui/inc/simpref.hrc
new file mode 100644
index 000000000000..c31afa69bdd6
--- /dev/null
+++ b/sc/source/ui/inc/simpref.hrc
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * $RCSfile: simpref.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // -> RID_SCDLG_SIMPLEREF
+
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_ADD 3
+#define BTN_HELP 4
+#define FT_ASSIGN 10
+#define ED_ASSIGN 11
+#define RB_ASSIGN 12
+
diff --git a/sc/source/ui/inc/simpref.hxx b/sc/source/ui/inc/simpref.hxx
new file mode 100644
index 000000000000..62a2310f7630
--- /dev/null
+++ b/sc/source/ui/inc/simpref.hxx
@@ -0,0 +1,156 @@
+/*************************************************************************
+ *
+ * $RCSfile: simpref.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:00 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SIMPREF_HXX
+#define SC_SIMPREF_HXX
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _MOREBTN_HXX //autogen
+#include <vcl/morebtn.hxx>
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+#ifndef SC_DBCOLECT_HXX
+#include "dbcolect.hxx"
+#endif
+
+#ifndef _SC_EXPFTEXT_HXX
+#include "expftext.hxx"
+#endif
+
+class ScViewData;
+class ScDocument;
+
+
+//============================================================================
+
+class ScSimpleRefDlg: public ScAnyRefDlg
+{
+private:
+
+ Link aCloseHdl;
+ FixedText aFtAssign;
+ ScRefEdit aEdAssign;
+ ScRefButton aRbAssign;
+
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ BOOL bRefInputMode;
+
+ ScRange theCurArea;
+ BOOL bCloseFlag;
+ BOOL bAutoReOpen;
+ void Init();
+
+ DECL_LINK( CancelBtnHdl, void * );
+ DECL_LINK( OkBtnHdl, void * );
+
+
+protected:
+
+ virtual void RefInputDone( BOOL bForced = FALSE );
+
+public:
+ ScSimpleRefDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData );
+ ~ScSimpleRefDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+
+ virtual BOOL IsRefInputMode() const;
+ virtual void SetActive();
+ virtual BOOL Close();
+
+ void StartRefInput();
+
+ virtual String GetRefString() const;
+ virtual void SetRefString(const String &rStr);
+ virtual void FillInfo(SfxChildWinInfo&) const;
+
+ void SetCloseHdl( const Link& rLink );
+
+ void SetAutoReOpen(BOOL bFlag) {bAutoReOpen=bFlag;}
+
+ static String GetLastRefString();
+};
+
+
+
+#endif // SC_DBNAMDLG_HXX
+
diff --git a/sc/source/ui/inc/solvrdlg.hrc b/sc/source/ui/inc/solvrdlg.hrc
new file mode 100644
index 000000000000..756a68e2356f
--- /dev/null
+++ b/sc/source/ui/inc/solvrdlg.hrc
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: solvrdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // ->RID_SCDLG_SOLVER
+
+#define ED_FORMULACELL 1
+#define ED_TARGETVAL 2
+#define ED_VARCELL 3
+#define FT_FORMULACELL 1
+#define FT_TARGETVAL 2
+#define FT_VARCELL 3
+#define RB_FORMULACELL 1
+#define RB_VARCELL 2
+#define GB_VARIABLES 1
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_HELP 1
+#define STR_INVALIDVAL 1
+#define STR_INVALIDVAR 2
+#define STR_INVALIDFORM 3
+#define STR_NOFORMULA 4
+
diff --git a/sc/source/ui/inc/solvrdlg.hxx b/sc/source/ui/inc/solvrdlg.hxx
new file mode 100644
index 000000000000..d2260751ba8d
--- /dev/null
+++ b/sc/source/ui/inc/solvrdlg.hxx
@@ -0,0 +1,153 @@
+/*************************************************************************
+ *
+ * $RCSfile: solvrdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SOLVRDLG_HXX
+#define SC_SOLVRDLG_HXX
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+//----------------------------------------------------------------------------
+
+enum ScSolverErr
+ {
+ SOLVERR_NOFORMULA,
+ SOLVERR_INVALID_FORMULA,
+ SOLVERR_INVALID_VARIABLE,
+ SOLVERR_INVALID_TARGETVALUE
+ };
+
+
+//============================================================================
+
+class ScSolverDlg : public ScAnyRefDlg
+{
+public:
+ ScSolverDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScDocument* pDocument,
+ ScAddress aCursorPos );
+ ~ScSolverDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+ virtual BOOL IsRefInputMode() const { return bMouseInputMode; }
+ virtual void SetActive();
+ virtual BOOL Close();
+
+private:
+ FixedText aFtFormulaCell;
+ ScRefEdit aEdFormulaCell;
+ ScRefButton aRBFormulaCell;
+
+ FixedText aFtTargetVal;
+ Edit aEdTargetVal;
+
+ FixedText aFtVariableCell;
+ ScRefEdit aEdVariableCell;
+ ScRefButton aRBVariableCell;
+
+ GroupBox aGbVariables;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ ScAddress theFormulaCell;
+ ScAddress theVariableCell;
+ String theTargetValStr;
+
+ ScDocument* pDoc;
+ const USHORT nCurTab;
+ ScRefEdit* pEdActive;
+ BOOL bMouseInputMode;
+ BOOL bDlgLostFocus;
+ const String errMsgInvalidVar;
+ const String errMsgInvalidForm;
+ const String errMsgNoFormula;
+ const String errMsgInvalidVal;
+
+
+#ifdef _SOLVRDLG_CXX
+ void Init();
+ BOOL CheckTargetValue( String& rStrVal );
+ void RaiseError( ScSolverErr eError );
+
+ DECL_LINK( BtnHdl, PushButton* );
+ DECL_LINK( EdGetFocusHdl, ScRefEdit* );
+ DECL_LINK( EdLoseFocusHdl, ScRefEdit* );
+#endif // _SOLVERDLG_CXX
+};
+
+#endif // SC_SOLVRDLG_HXX
+
+
diff --git a/sc/source/ui/inc/sortdlg.hrc b/sc/source/ui/inc/sortdlg.hrc
new file mode 100644
index 000000000000..e3fafa2e4d03
--- /dev/null
+++ b/sc/source/ui/inc/sortdlg.hrc
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * $RCSfile: sortdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include "sc.hrc" // -> RID_SCDLG_SORT
+ // -> RID_SCPAGE_SORT_FIELDS
+ // -> RID_SCPAGE_SORT_OPTIONS
+ // -> SCSTR_NONAME
+ // -> SCSTR_UNDEFINED
+ // -> SCSTR_FIELD
+
+/*
+#define RID_SCDLG_SORT 256
+#define RID_SCPAGE_SORT_FIELDS 257
+#define RID_SCPAGE_SORT_OPTIONS 258
+*/
+
+#define TP_FIELDS 1
+#define TP_OPTIONS 2
+
+// TP_SORT_FIELDS:
+#define GB_SORT1 1
+#define GB_SORT2 2
+#define GB_SORT3 3
+#define LB_SORT1 4
+#define LB_SORT2 5
+#define LB_SORT3 6
+#define BTN_UP1 7
+#define BTN_UP2 8
+#define BTN_UP3 9
+#define BTN_DOWN1 10
+#define BTN_DOWN2 11
+#define BTN_DOWN3 12
+
+// TP_SORT_OPTIONS:
+#define GB_DIRECTION 1
+#define LB_SORT_USER 2
+#define LB_OUTAREA 3
+#define ED_OUTAREA 4
+#define FT_AREA_LABEL 5
+#define FT_AREA 6
+#define BTN_SORT_USER 7
+#define BTN_CASESENSITIVE 8
+#define BTN_LABEL 9
+#define BTN_FORMATS 10
+#define BTN_COPYRESULT 11
+#define BTN_TOP_DOWN 12
+#define BTN_LEFT_RIGHT 13
+#define STR_COL_LABEL 14
+#define STR_ROW_LABEL 15
+
+
+
+
diff --git a/sc/source/ui/inc/sortdlg.hxx b/sc/source/ui/inc/sortdlg.hxx
new file mode 100644
index 000000000000..e5872be2e5ad
--- /dev/null
+++ b/sc/source/ui/inc/sortdlg.hxx
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: sortdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SORTDLG_HXX
+#define SC_SORTDLG_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SFX_HXX
+#endif
+
+//==================================================================
+
+class ScSortDlg : public SfxTabDialog
+{
+public:
+ ScSortDlg( Window* pParent,
+ const SfxItemSet* pArgSet );
+ ~ScSortDlg();
+
+ void SetHeaders( BOOL bHeaders );
+ void SetByRows ( BOOL bByRows );
+ BOOL GetHeaders() const;
+ BOOL GetByRows () const;
+
+
+private:
+ BOOL bIsHeaders;
+ BOOL bIsByRows;
+};
+
+inline void ScSortDlg::SetHeaders( BOOL bHeaders ) { bIsHeaders = bHeaders; }
+inline void ScSortDlg::SetByRows ( BOOL bByRows ) { bIsByRows = bByRows; }
+inline BOOL ScSortDlg::GetHeaders() const { return bIsHeaders; }
+inline BOOL ScSortDlg::GetByRows () const { return bIsByRows; }
+
+
+#endif // SC_SORTDLG_HXX
+
+
diff --git a/sc/source/ui/inc/spelleng.hxx b/sc/source/ui/inc/spelleng.hxx
new file mode 100644
index 000000000000..ab9a59dbd34b
--- /dev/null
+++ b/sc/source/ui/inc/spelleng.hxx
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * $RCSfile: spelleng.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SPELLENG_HXX
+#define SC_SPELLENG_HXX
+
+#include "editutil.hxx"
+
+class ScViewData;
+class ScDocument;
+class SfxItemPool;
+
+
+class ScSpellingEngine : public ScEditEngineDefaulter
+{
+ USHORT nOrgCol;
+ USHORT nOrgRow;
+ USHORT nOrgTab;
+ USHORT nOldCol;
+ USHORT nOldRow;
+ BOOL bInSel;
+ BOOL bIsModifiedAtAll;
+ BOOL bFirstTime;
+ BOOL bFirstTable;
+ LanguageType eOldLnge;
+ ESelection* pEditSel;
+ ScViewData* pViewData;
+ ScDocument* pUndoDoc;
+ ScDocument* pRedoDoc;
+public:
+ ScSpellingEngine( SfxItemPool* pEnginePool, ScViewData* pVData,
+ ScDocument* pUndoDc, ScDocument* pRedoDc,
+ USHORT nCol, USHORT nRow, USHORT nTab,
+ BOOL bInSelection, LanguageType eLge, ESelection* pEdSel)
+ : ScEditEngineDefaulter( pEnginePool ),
+ pViewData ( pVData ), pUndoDoc ( pUndoDc ), pRedoDoc ( pRedoDc ),
+ nOldCol ( nCol ), nOldRow ( nRow ),
+ nOrgCol ( nCol ), nOrgRow ( nRow ), nOrgTab ( nTab ),
+ bInSel( bInSelection ), eOldLnge ( eLge ),
+ pEditSel( pEdSel ) { bIsModifiedAtAll = FALSE;
+ bFirstTime = TRUE;
+ bFirstTable = TRUE; }
+ ~ScSpellingEngine() {}
+ virtual BOOL SpellNextDocument();
+ BOOL IsModifiedAtAll() const { return bIsModifiedAtAll; }
+
+ LanguageType GetLanguage() const { return eOldLnge; }
+};
+
+
+#endif
diff --git a/sc/source/ui/inc/strindlg.hxx b/sc/source/ui/inc/strindlg.hxx
new file mode 100644
index 000000000000..61d1209f6c55
--- /dev/null
+++ b/sc/source/ui/inc/strindlg.hxx
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * $RCSfile: strindlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_STRINDLG_HXX
+#define SC_STRINDLG_HXX
+
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/imagebtn.hxx>
+#endif
+
+#ifndef _SV_EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+//------------------------------------------------------------------------
+
+class ScStringInputDlg : public ModalDialog
+{
+public:
+ ScStringInputDlg( Window* pParent,
+ const String& rTitle,
+ const String& rEditTitle,
+ const String& rDefault,
+ ULONG nHelpId );
+ ~ScStringInputDlg();
+
+ void GetInputString( String& rString ) const;
+
+private:
+ Edit aEdInput; // Edit erhaelt so den Focus
+ FixedText aFtEditTitle;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+};
+
+
+#endif // SC_STRINDLG_HXX
+
+
diff --git a/sc/source/ui/inc/structpg.hxx b/sc/source/ui/inc/structpg.hxx
new file mode 100644
index 000000000000..9fce93db2bab
--- /dev/null
+++ b/sc/source/ui/inc/structpg.hxx
@@ -0,0 +1,205 @@
+/*************************************************************************
+ *
+ * $RCSfile: structpg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_STRUCTPG_HXX
+#define SC_STRUCTPG_HXX
+
+#ifndef SC_FUNCUTL_HXX
+#include "funcutl.hxx"
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx" // ScAddress
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+
+#ifndef _SV_TABPAGE_HXX //autogen
+#include <vcl/tabpage.hxx>
+#endif
+
+#ifndef _SVSTDARR_STRINGS
+
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+
+#endif
+
+#ifndef _SV_TABCTRL_HXX //autogen
+#include <vcl/tabctrl.hxx>
+#endif
+
+#ifndef SC_PARAWIN_HXX
+#include "parawin.hxx"
+#endif
+
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+#ifndef SC_COMPILER_HXX
+#include "compiler.hxx"
+#endif
+
+#ifndef SC_CELL_HXX
+#include "cell.hxx"
+#endif
+
+
+class ScViewData;
+class ScFuncName_Impl;
+class ScDocument;
+class ScFuncDesc;
+
+//============================================================================
+
+#define STRUCT_END 1
+#define STRUCT_FOLDER 2
+#define STRUCT_ERROR 3
+
+#define STRUCT_ERR_C1 1
+#define STRUCT_ERR_C2 2
+
+//============================================================================
+
+
+class ScStructListBox : public SvTreeListBox
+{
+private:
+
+ BOOL bActiveFlag;
+
+protected:
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+
+public:
+
+ ScStructListBox(Window* pParent, const ResId& rResId );
+
+ void SetActiveFlag(BOOL bFlag=TRUE);
+ BOOL GetActiveFlag();
+ void GetFocus();
+ void LoseFocus();
+};
+
+//============================================================================
+
+class ScStructPage : public TabPage
+{
+private:
+
+ Link aSelLink;
+
+ FixedText aFtStruct;
+ ScStructListBox aTlbStruct;
+ Bitmap aExpBmp;
+ Bitmap aCollBmp;
+ Bitmap aCloseBmp;
+ Bitmap aOpenBmp;
+ Bitmap aEndBmp;
+ Bitmap aErrorBmp;
+
+ ScToken* pSelectedToken;
+
+ DECL_LINK( SelectHdl, SvTreeListBox* );
+
+protected:
+
+ ScToken* GetFunctionEntry(SvLBoxEntry* pEntry);
+
+public:
+
+ ScStructPage( Window* pParent);
+
+ SvTreeListBox* GetStructPtr() {return &aTlbStruct;}
+
+ void ClearStruct();
+ SvLBoxEntry* InsertEntry(const XubString& rText, SvLBoxEntry* pParent,
+ USHORT nFlag,ULONG nPos=0,ScToken* pScToken=NULL);
+
+ SvLBoxEntry* InsertEntryWithError(USHORT nError,SvLBoxEntry* pParent,
+ ULONG nPos=0);
+
+ String GetEntryText(SvLBoxEntry* pEntry);
+ String GetSelectedEntryText();
+ ScToken* GetSelectedToken();
+
+ void SetSelectionHdl( const Link& rLink ) { aSelLink = rLink; }
+ const Link& GetSelectionHdl() const { return aSelLink; }
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/styledlg.hrc b/sc/source/ui/inc/styledlg.hrc
new file mode 100644
index 000000000000..fef68f47d5f4
--- /dev/null
+++ b/sc/source/ui/inc/styledlg.hrc
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * $RCSfile: styledlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define TP_NUMBER 2
+#define TP_FONT 3
+#define TP_ALIGNMENT 4
+#define TP_BORDER 5
+#define TP_BACKGROUND 6
+#define TP_PROTECTION 7
+#define TP_PAGE_STD 8
+#define TP_PAGE_HEADER 9
+#define TP_PAGE_FOOTER 10
+#define TP_TABLE 11
+
diff --git a/sc/source/ui/inc/styledlg.hxx b/sc/source/ui/inc/styledlg.hxx
new file mode 100644
index 000000000000..3f55e8ea5efc
--- /dev/null
+++ b/sc/source/ui/inc/styledlg.hxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * $RCSfile: styledlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_STYLEDLG_HXX
+#define SC_STYLEDLG_HXX
+
+#ifndef _SFX_HXX
+#endif
+
+#ifndef _SFX_STYLEDLG_HXX //autogen
+#include <sfx2/styledlg.hxx>
+#endif
+
+//==================================================================
+
+class SfxStyleSheetBase;
+
+class ScStyleDlg : public SfxStyleDialog
+{
+public:
+ ScStyleDlg( Window* pParent,
+ SfxStyleSheetBase& rStyleBase,
+ USHORT nRscId );
+ ~ScStyleDlg();
+
+protected:
+ virtual void PageCreated( USHORT nPageId, SfxTabPage& rTabPage );
+ virtual const SfxItemSet* GetRefreshedSet();
+
+private:
+ USHORT nDlgRsc;
+};
+
+
+#endif // SC_STYLEDLG_HXX
+
+
diff --git a/sc/source/ui/inc/submenu.hrc b/sc/source/ui/inc/submenu.hrc
new file mode 100644
index 000000000000..0f1b3acd2c5e
--- /dev/null
+++ b/sc/source/ui/inc/submenu.hrc
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * $RCSfile: submenu.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// IDs fuer Untermenues
+
+// 1 ist nicht erlaubt ????
+#define SUBMENU_EDIT 2
+#define SUBMENU_FILL 3
+#define SUBMENU_DELBREAK 4
+#define SUBMENU_VIEW 5
+#define SUBMENU_INSERT 6
+#define SUBMENU_INSBREAK 7
+#define SUBMENU_NAME 8
+#define SUBMENU_INSOBJ 9
+#define SUBMENU_DATA 10
+#define SUBMENU_FILTER 11
+#define SUBMENU_OUTLINE 12
+#define SUBMENU_PIVOT 13
+#define SUBMENU_EXTRA 14
+#define SUBMENU_AUDIT 15
+#define SUBMENU_PROTECT 16
+#define SUBMENU_ROW 17
+#define SUBMENU_COL 18
+#define SUBMENU_TAB 19
+#define SUBMENU_MERGE 20
+#define SUBMENU_AREA 21
+#define SUBMENU_MIRROR 22
+#define SUBMENU_OBJARRANGE 23
+#define SUBMENU_ANCHOR 24
+#define SUBMENU_POPARRANGE 25
+#define SUBMENU_OLEARRANGE 26
+#define SUBMENU_MAIL 27
+#define SUBMENU_OPTIONS 28
+#define SUBMENU_TOOLBARS 29
+#define SUBMENU_GRAPHIC 30
+#define SUBMENU_SPELLING 31
+#define SUBMENU_CELLCONT 32
+#define SUBMENU_OBJMIRROR 33
+#define SUBMENU_OBJALIGN 34
+#define SUBMENU_OBJANCHOR 35
+#define SUBMENU_SENDTO 36
+#define SUBMENU_CHANGES 37
+#define MN_TEMPLATES 38
diff --git a/sc/source/ui/inc/subtdlg.hrc b/sc/source/ui/inc/subtdlg.hrc
new file mode 100644
index 000000000000..4a531dc8078f
--- /dev/null
+++ b/sc/source/ui/inc/subtdlg.hrc
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * $RCSfile: subtdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+
+/*
+#define RID_SCDLG_SUBTOTALS 256
+#define RID_SCPAGE_SUBT_GROUP 256
+#define RID_SCPAGE_SUBT_OPTIONS 257
+*/
+
+// TabDialog
+#define BTN_REMOVE 1
+#define PAGE_GROUP1 1
+#define PAGE_GROUP2 2
+#define PAGE_GROUP3 3
+#define PAGE_OPTIONS 4
+
+// Gruppen TabPages
+#define FT_GROUP 1
+#define LB_GROUP 1
+#define FT_COLUMNS 2
+#define WND_COLUMNS 2
+#define LB_FUNCTIONS 3
+#define FT_FUNCTIONS 3
+
+// Optionen TabPage
+#define BTN_PAGEBREAK 2
+#define BTN_CASE 3
+#define BTN_SORT 4
+
+#define BTN_FORMATS 5
+#define BTN_USERDEF 6
+#define LB_USERDEF 1
+#define BTN_ASCENDING 1
+#define BTN_DESCENDING 2
+#define GB_OPTIONS 1
+
+
diff --git a/sc/source/ui/inc/subtdlg.hxx b/sc/source/ui/inc/subtdlg.hxx
new file mode 100644
index 000000000000..a45d8cc3d40d
--- /dev/null
+++ b/sc/source/ui/inc/subtdlg.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * $RCSfile: subtdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_SUBTDLG_HXX
+#define SC_SUBTDLG_HXX
+
+#ifndef _SFX_HXX
+#endif
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+//------------------------------------------------------------------------
+
+#define SCRET_REMOVE 0x42
+
+//==================================================================
+
+class ScSubTotalDlg : public SfxTabDialog
+{
+public:
+ ScSubTotalDlg( Window* pParent,
+ const SfxItemSet* pArgSet );
+private:
+ PushButton aBtnRemove;
+ DECL_LINK( RemoveHdl, PushButton * );
+};
+
+
+#endif // SC_SUBTDLG_HXX
+
+
diff --git a/sc/source/ui/inc/tabcont.hxx b/sc/source/ui/inc/tabcont.hxx
new file mode 100644
index 000000000000..c4e43f1a2415
--- /dev/null
+++ b/sc/source/ui/inc/tabcont.hxx
@@ -0,0 +1,115 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabcont.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TABCONT_HXX
+#define SC_TABCONT_HXX
+
+#ifndef _TABBAR_HXX //autogen wg. TabBar
+#include <svtools/tabbar.hxx>
+#endif
+
+
+class ScViewData;
+
+// ---------------------------------------------------------------------------
+
+// initial size
+#define SC_TABBAR_DEFWIDTH 270
+
+
+class ScTabControl : public TabBar
+{
+private:
+ ScViewData* pViewData;
+ BOOL bDragging;
+ BOOL bErrorShown;
+ BOOL bAddDown;
+ USHORT nTabSwitchId;
+ long nQueryCount;
+
+ void DoDrag( const Region& rRegion );
+
+ USHORT GetMaxId() const;
+ USHORT GetPrivatDropPos(const Point& rPos );
+
+protected:
+ virtual void Select();
+ virtual void Command( const CommandEvent& rCEvt );
+ virtual BOOL Drop( const DropEvent& rEvt );
+ virtual BOOL QueryDrop( DropEvent& rEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+
+ virtual long StartRenaming();
+ virtual long AllowRenaming();
+ virtual void EndRenaming();
+
+public:
+ ScTabControl( Window* pParent, ScViewData* pData );
+ ~ScTabControl();
+
+ void UpdateStatus();
+ void ActivateView(BOOL bActivate);
+};
+
+
+
+#endif
diff --git a/sc/source/ui/inc/tabopdlg.hrc b/sc/source/ui/inc/tabopdlg.hrc
new file mode 100644
index 000000000000..e61a734055c1
--- /dev/null
+++ b/sc/source/ui/inc/tabopdlg.hrc
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabopdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc" // ->RID_SCDLG_TABOP
+
+#define ED_FORMULARANGE 1
+#define ED_ROWCELL 2
+#define ED_COLCELL 3
+#define FT_FORMULARANGE 1
+#define FT_ROWCELL 2
+#define FT_COLCELL 3
+#define RB_FORMULARANGE 1
+#define RB_ROWCELL 2
+#define RB_COLCELL 3
+#define GB_VARIABLES 1
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_HELP 1
+#define STR_NOFORMULA 1
+#define STR_NOCOLROW 2
+#define STR_WRONGFORMULA 3
+#define STR_WRONGROWCOL 4
+#define STR_NOCOLFORMULA 5
+#define STR_NOROWFORMULA 6
+
+
diff --git a/sc/source/ui/inc/tabopdlg.hxx b/sc/source/ui/inc/tabopdlg.hxx
new file mode 100644
index 000000000000..fbba2ae36b4b
--- /dev/null
+++ b/sc/source/ui/inc/tabopdlg.hxx
@@ -0,0 +1,158 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabopdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TABOPDLG_HXX
+#define SC_TABOPDLG_HXX
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+#ifndef SC_ANYREFDG_HXX
+#include "anyrefdg.hxx"
+#endif
+
+
+//------------------------------------------------------------------------
+
+enum ScTabOpErr
+{
+ TABOPERR_NOFORMULA = 1,
+ TABOPERR_NOCOLROW,
+ TABOPERR_WRONGFORMULA,
+ TABOPERR_WRONGROW,
+ TABOPERR_NOCOLFORMULA,
+ TABOPERR_WRONGCOL,
+ TABOPERR_NOROWFORMULA
+};
+
+//========================================================================
+
+class ScTabOpDlg : public ScAnyRefDlg
+{
+public:
+ ScTabOpDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScDocument* pDocument,
+ const ScRefTripel& rCursorPos );
+ ~ScTabOpDlg();
+
+ virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
+ virtual BOOL IsRefInputMode() const { return TRUE; }
+ virtual void SetActive();
+
+ virtual BOOL Close();
+
+private:
+ FixedText aFtFormulaRange;
+ ScRefEdit aEdFormulaRange;
+ ScRefButton aRBFormulaRange;
+
+ FixedText aFtRowCell;
+ ScRefEdit aEdRowCell;
+ ScRefButton aRBRowCell;
+
+ FixedText aFtColCell;
+ ScRefEdit aEdColCell;
+ ScRefButton aRBColCell;
+
+ GroupBox aGbVariables;
+ OKButton aBtnOk;
+ CancelButton aBtnCancel;
+ HelpButton aBtnHelp;
+
+ ScRefTripel theFormulaCell;
+ ScRefTripel theFormulaEnd;
+ ScRefTripel theRowCell;
+ ScRefTripel theColCell;
+
+ ScDocument* pDoc;
+ const USHORT nCurTab;
+ ScRefEdit* pEdActive;
+ BOOL bDlgLostFocus;
+ const String errMsgNoFormula;
+ const String errMsgNoColRow;
+ const String errMsgWrongFormula;
+ const String errMsgWrongRowCol;
+ const String errMsgNoColFormula;
+ const String errMsgNoRowFormula;
+
+#ifdef _TABOPDLG_CXX
+ void Init();
+ void RaiseError( ScTabOpErr eError );
+
+ DECL_LINK( BtnHdl, PushButton* );
+ DECL_LINK( EdGetFocusHdl, ScRefEdit* );
+ DECL_LINK( EdLoseFocusHdl, ScRefEdit* );
+#endif // _TABOPDLG_CXX
+};
+
+#endif // SC_TABOPDLG_HXX
+
+
+
diff --git a/sc/source/ui/inc/tabpages.hxx b/sc/source/ui/inc/tabpages.hxx
new file mode 100644
index 000000000000..aa3135038c21
--- /dev/null
+++ b/sc/source/ui/inc/tabpages.hxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabpages.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TABPAGES_HXX
+#define SC_TABPAGES_HXX
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+//========================================================================
+
+class ScTabPageProtection : public SfxTabPage
+{
+public:
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rAttrSet );
+ static USHORT* GetRanges ();
+ virtual BOOL FillItemSet ( SfxItemSet& rCoreAttrs );
+ virtual void Reset ( const SfxItemSet& );
+
+protected:
+ virtual int DeactivatePage ( SfxItemSet* pSet = NULL );
+
+private:
+ ScTabPageProtection( Window* pParent,
+ const SfxItemSet& rCoreAttrs );
+ ~ScTabPageProtection();
+
+private:
+ TriStateBox aBtnProtect;
+ TriStateBox aBtnHideFormula;
+ TriStateBox aBtnHideCell;
+ FixedInfo aTxtHint;
+ GroupBox aGbProtect;
+
+ TriStateBox aBtnHidePrint;
+ FixedInfo aTxtHint2;
+ GroupBox aGbPrint;
+
+ // aktueller Status:
+ BOOL bTriEnabled; // wenn vorher Dont-Care
+ BOOL bDontCare; // alles auf TriState
+ BOOL bProtect; // einzelne Einstellungen ueber TriState sichern
+ BOOL bHideForm;
+ BOOL bHideCell;
+ BOOL bHidePrint;
+
+ // Handler:
+ DECL_LINK( ButtonClickHdl, TriStateBox* pBox );
+ void UpdateButtons();
+};
+
+
+
+#endif // SC_TABPAGES_HXX
diff --git a/sc/source/ui/inc/tabpopsh.hxx b/sc/source/ui/inc/tabpopsh.hxx
new file mode 100644
index 000000000000..30105a96ee63
--- /dev/null
+++ b/sc/source/ui/inc/tabpopsh.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabpopsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TABPOPSH_HXX
+#define SC_TABPOPSH_HXX
+
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+
+#include "shellids.hxx"
+
+class ScTabPopShell : public SfxShell
+{
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SCID_TABPOP_SHELL);
+
+ ScTabPopShell(SfxItemPool& rItemPool);
+ ~ScTabPopShell();
+
+ void DummyExec( SfxRequest& rReq );
+ void DummyState( SfxItemSet& rSet );
+};
+
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/tabsplit.hxx b/sc/source/ui/inc/tabsplit.hxx
new file mode 100644
index 000000000000..c8f305619b72
--- /dev/null
+++ b/sc/source/ui/inc/tabsplit.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabsplit.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TABSPLIT_HXX
+#define SC_TABSPLIT_HXX
+
+
+#ifndef _SV_SPLIT_HXX //autogen
+#include <vcl/split.hxx>
+#endif
+
+class ScViewData;
+
+class ScTabSplitter : public Splitter
+{
+private:
+ ScViewData* pViewData;
+ BOOL bFixed;
+
+protected:
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+
+ virtual void Splitting( Point& rSplitPos );
+
+public:
+ ScTabSplitter( Window* pParent, WinBits nWinStyle,
+ ScViewData* pData );
+ ~ScTabSplitter();
+
+ void SetFixed(BOOL bSet);
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx
new file mode 100644
index 000000000000..7939cc05dbc1
--- /dev/null
+++ b/sc/source/ui/inc/tabview.hxx
@@ -0,0 +1,503 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabview.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TABVIEW_HXX
+#define SC_TABVIEW_HXX
+
+#ifndef _SV_SCRBAR_HXX //autogen
+#include <vcl/scrbar.hxx>
+#endif
+
+#ifndef _SVX_ZOOMITEM_HXX //autogen
+#include <svx/zoomitem.hxx>
+#endif
+
+#ifndef _IPCLIENT_HXX //autogen
+#include <so3/ipclient.hxx>
+#endif
+
+#ifndef SO2_DECL_SVINPLACECLIENT_DEFINED
+#define SO2_DECL_SVINPLACECLIENT_DEFINED
+SO2_DECL_REF(SvInPlaceClient)
+#endif
+
+#include "viewutil.hxx"
+#include "select.hxx"
+
+class ScEditEngineDefaulter;
+class ScGridWindow;
+class ScOutlineWindow;
+class ScRowBar;
+class ScColBar;
+class ScTabControl;
+class ScTabViewShell;
+class SfxPrinter;
+class ScDrawView;
+class SvBorder;
+class FuPoor;
+class Splitter;
+class ScTabSplitter;
+class SdrView;
+class SdrObject;
+class ScHintWindow;
+class ScPageBreakData;
+class ScHighlightRanges;
+class SchMemChart;
+struct ChartSelectionInfo;
+class SdrHdlList;
+
+#define SPLIT_HANDLE_SIZE 3
+
+// ---------------------------------------------------------------------------
+// Hilfs - Fenster
+
+class ScCornerButton : public Window
+{
+private:
+ ScViewData* pViewData;
+ BOOL bAdd;
+
+protected:
+ virtual void Paint( const Rectangle& rRect );
+ virtual void Resize();
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+public:
+ ScCornerButton( Window* pParent, ScViewData* pData, BOOL bAdditional );
+ ~ScCornerButton();
+
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+};
+
+
+// ---------------------------------------------------------------------------
+
+class ScTabView
+{
+private:
+ Window* pFrameWin; // als erstes !!!
+ ScViewData aViewData; // muss ganz vorne stehen !
+
+ ScViewSelectionEngine* pSelEngine;
+ ScViewFunctionSet aFunctionSet;
+
+ ScHeaderSelectionEngine* pHdrSelEng;
+ ScHeaderFunctionSet aHdrFunc;
+
+ SvInPlaceClientRef aIPClient;
+
+ ScDrawView* pDrawView;
+
+ Size aFrameSize; // wie bei DoResize uebergeben
+ Point aBorderPos;
+
+ BOOL bDrawSelMode; // nur Zeichenobjekte selektieren ?
+
+ FuPoor* pDrawActual;
+ FuPoor* pDrawOld;
+
+ ScGridWindow* pGridWin[4];
+ ScColBar* pColBar[2];
+ ScRowBar* pRowBar[2];
+ ScOutlineWindow* pColOutline[2];
+ ScOutlineWindow* pRowOutline[2];
+ ScTabSplitter* pHSplitter;
+ ScTabSplitter* pVSplitter;
+ ScTabControl* pTabControl;
+ ScrollBar aVScrollTop;
+ ScrollBar aVScrollBottom; // anfangs sichtbar
+ ScrollBar aHScrollLeft; // anfangs sichtbar
+ ScrollBar aHScrollRight;
+ ScCornerButton aCornerButton;
+ ScCornerButton aTopButton;
+ ScrollBarBox aScrollBarBox;
+
+ ScHintWindow* pInputHintWindow; // Eingabemeldung bei Gueltigkeit
+
+ ScPageBreakData* pPageBreakData; // fuer Seitenumbruch-Modus
+ ScHighlightRanges* pHighlightRanges;
+
+ Timer aScrollTimer;
+ ScGridWindow* pTimerWindow;
+ MouseEvent aTimerMEvt;
+
+ ULONG nTipVisible;
+
+ BOOL bDragging; // fuer Scrollbars
+ long nPrevDragPos;
+
+ BOOL bIsBlockMode; // Block markieren
+ BOOL bBlockNeg; // wird Markierung aufgehoben?
+ BOOL bBlockCols; // werden ganze Spalten markiert?
+ BOOL bBlockRows; // werden ganze Zeilen markiert?
+ USHORT nBlockStartX;
+ USHORT nBlockEndX;
+ USHORT nBlockStartY;
+ USHORT nBlockEndY;
+ USHORT nBlockStartZ;
+ USHORT nBlockEndZ;
+
+ SvxZoomType eZoomType;
+ BOOL bMinimized;
+ BOOL bInUpdateHeader;
+ BOOL bInActivatePart;
+ BOOL bInZoomUpdate;
+ BOOL bMoveIsShift;
+
+
+ void Init();
+
+ void DoAddWin( ScGridWindow* pWin );
+
+ void InitScrollBar( ScrollBar& rScrollBar, long nMaxVal );
+ DECL_LINK( ScrollHdl, ScrollBar* );
+ DECL_LINK( EndScrollHdl, ScrollBar* );
+
+ DECL_LINK( SplitHdl, Splitter* );
+ void DoHSplit(long nSplitPos);
+ void DoVSplit(long nSplitPos);
+
+ DECL_LINK( TimerHdl, Timer* );
+
+ void UpdateHeaderWidth( const ScVSplitPos* pWhich = NULL,
+ const USHORT* pPosY = NULL );
+ void UpdateVarZoom();
+
+protected:
+ void HideTip();
+ void ShowRefTip();
+
+ void ZoomChanged();
+ void UpdateShow();
+ void GetBorderSize( SvBorder& rBorder, const Size& rSize );
+
+ void ResetDrawDragMode();
+ BOOL IsDrawTextEdit() const;
+ void DrawEnableAnim(BOOL bSet);
+ void DrawShowMarkHdl(BOOL bShow);
+
+ void MakeDrawView();
+
+ void HideNoteMarker();
+
+ void UpdateIMap( SdrObject* pObj );
+
+public:
+ ScTabView( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell );
+ ScTabView( Window* pParent, const ScTabView& rScTabView, ScTabViewShell* pViewShell );
+ ~ScTabView();
+
+ void MakeDrawLayer();
+
+ void HideListBox();
+
+ BOOL HasHintWindow() const { return pInputHintWindow != NULL; }
+ void RemoveHintWindow();
+ void TestHintWindow();
+
+
+ DECL_LINK( TabBarResize, void* );
+ void SetTabBarWidth( long nNewWidth );
+ long GetTabBarWidth();
+
+ void DoResize( const Point& rOffset, const Size& rSize, BOOL bInner = FALSE );
+ void RepeatResize( BOOL bUpdateFix = TRUE );
+ void UpdateFixPos();
+ Point GetGridOffset() const;
+
+ BOOL IsDrawSelMode() const { return bDrawSelMode; }
+ void SetDrawSelMode(BOOL bNew) { bDrawSelMode = bNew; }
+
+ void SetDrawFuncPtr(FuPoor* pFuncPtr) { pDrawActual = pFuncPtr; }
+ void SetDrawFuncOldPtr(FuPoor* pFuncPtr) { pDrawOld = pFuncPtr; }
+ FuPoor* GetDrawFuncPtr() { return pDrawActual; }
+ FuPoor* GetDrawFuncOldPtr() { return pDrawOld; }
+
+ void DrawDeselectAll();
+ void DrawMarkListHasChanged();
+ void UpdateAnchorHandles();
+ String GetSelectedChartName() const;
+
+ ScPageBreakData* GetPageBreakData() { return pPageBreakData; }
+ ScHighlightRanges* GetHighlightRanges() { return pHighlightRanges; }
+
+ void UpdatePageBreakData( BOOL bForcePaint = FALSE );
+
+ void DrawMarkRect( const Rectangle& rRect );
+
+ ScViewData* GetViewData() { return &aViewData; }
+ const ScViewData* GetViewData() const { return &aViewData; }
+
+ ScViewFunctionSet* GetFunctionSet() { return &aFunctionSet; }
+ ScViewSelectionEngine* GetSelEngine() { return pSelEngine; }
+
+ BOOL SelMouseButtonDown( const MouseEvent& rMEvt );
+
+ ScDrawView* GetScDrawView() { return pDrawView; }
+ SdrView* GetSdrView(); // gegen CLOKs
+
+ BOOL IsMinimized() const { return bMinimized; }
+
+ void TabChanged();
+ void SetZoom( const Fraction& rNewX, const Fraction& rNewY );
+ void SetPagebreakMode( BOOL bSet );
+
+ void UpdateLayerLocks();
+
+ void UpdateDrawTextOutliner();
+
+ void UpdateInputLine();
+
+ void InitRefMode( USHORT nCurX, USHORT nCurY, USHORT nCurZ, ScRefType eType,
+ BOOL bPaint = TRUE );
+ void DoneRefMode( BOOL bContinue = FALSE );
+ void UpdateRef( USHORT nCurX, USHORT nCurY, USHORT nCurZ );
+ void StopRefMode();
+
+ void EndSelection();
+ void StopMarking();
+ void FakeButtonUp( ScSplitPos eWhich );
+
+ Window* GetActiveWin();
+ Window* GetWindowByPos( ScSplitPos ePos );
+
+ ScSplitPos FindWindow( Window* pWindow ) const;
+
+ void SetActivePointer( const Pointer& rPointer );
+ void SetActivePointer( const ResId& rId );
+
+ void ActiveGrabFocus();
+ void ActiveCaptureMouse();
+ void ActiveReleaseMouse();
+ Point ActivePixelToLogic( const Point& rDevicePoint );
+
+ void ClickCursor( USHORT nPosX, USHORT nPosY, BOOL bControl );
+
+ void SetCursor( USHORT nPosX, USHORT nPosY, BOOL bNew = FALSE );
+
+ void CellContentChanged();
+ void SelectionChanged();
+ void CursorPosChanged();
+
+ void InvertHorizontal( ScVSplitPos eWhich, long nDragPos );
+ void InvertVertical( ScHSplitPos eWhich, long nDragPos );
+
+ Point GetInsertPos();
+
+ void UpdateAutoFillMark();
+
+ void HideCursor(); // nur aktiver Teil
+ void ShowCursor();
+ void HideAllCursors();
+ void ShowAllCursors();
+
+ void AlignToCursor( short nCurX, short nCurY, ScFollowMode eMode,
+ const ScSplitPos* pWhich = NULL );
+
+ SvxZoomType GetZoomType() const { return eZoomType; }
+ void SetZoomType( SvxZoomType eNew ) { eZoomType = eNew; }
+ USHORT CalcZoom( SvxZoomType eType, USHORT nOldZoom );
+
+// void CalcZoom( SvxZoomType eType, USHORT& rZoom, USHORT& rCol, USHORT& rRow );
+
+ void StartDataSelect();
+
+ // MoveCursorAbs - absolut
+ // MoveCursorRel - einzelne Zellen
+ // MoveCursorPage - Bildschirmseite
+ // MoveCursorArea - Datenblock
+ // MoveCursorEnd - links oben / benutzter Bereich
+
+ void MoveCursorAbs( short nCurX, short nCurY, ScFollowMode eMode,
+ BOOL bShift, BOOL bControl,
+ BOOL bKeepOld = FALSE, BOOL bKeepSel = FALSE );
+ void MoveCursorRel( short nMovX, short nMovY, ScFollowMode eMode,
+ BOOL bShift, BOOL bKeepSel = FALSE );
+ void MoveCursorPage( short nMovX, short nMovY, ScFollowMode eMode, BOOL bShift );
+ void MoveCursorArea( short nMovX, short nMovY, ScFollowMode eMode, BOOL bShift );
+ void MoveCursorEnd( short nMovX, short nMovY, ScFollowMode eMode, BOOL bShift );
+ void MoveCursorScreen( short nMovX, short nMovY, ScFollowMode eMode, BOOL bShift );
+
+ void MoveCursorEnter( BOOL bShift ); // Shift fuer Richtung (kein Markieren)
+
+ void FindNextUnprot( BOOL bShift, BOOL bInSelection = TRUE );
+
+ void SetTabNo( USHORT nTab, BOOL bNew = FALSE );
+ void SelectNextTab( short nDir );
+
+ void ActivateView( BOOL bActivate, BOOL bFirst );
+ void ActivatePart( ScSplitPos eWhich );
+ BOOL IsInActivatePart() const { return bInActivatePart; }
+
+ void SetTimer( ScGridWindow* pWin, const MouseEvent& rMEvt );
+ void ResetTimer();
+
+ void ScrollX( long nDeltaX, ScHSplitPos eWhich, BOOL bUpdBars = TRUE );
+ void ScrollY( long nDeltaY, ScVSplitPos eWhich, BOOL bUpdBars = TRUE );
+ void ScrollLines( long nDeltaX, long nDeltaY ); // aktives
+
+ BOOL ScrollCommand( const CommandEvent& rCEvt, ScSplitPos ePos );
+
+ void ScrollToObject( SdrObject* pDrawObj );
+ void MakeVisible( const Rectangle& rHMMRect );
+
+ // Zeichnen
+
+ void InvertBlockMark(USHORT nBlockStartX, USHORT nBlockStartY,
+ USHORT nBlockEndX, USHORT nBlockEndY);
+
+ void DrawDragRect( USHORT nStartX, USHORT nStartY, USHORT nEndX, USHORT nEndY,
+ ScSplitPos ePos );
+
+ void PaintCell( USHORT nCol, USHORT nRow, USHORT nTab );
+ void PaintArea( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ ScUpdateMode eMode = SC_UPDATE_ALL );
+
+ void PaintGrid();
+
+ void PaintTopCol( USHORT nCol );
+ void PaintTopArea( USHORT nStartCol, USHORT nEndCol );
+ void PaintTop();
+
+ void PaintLeftRow( USHORT nRow );
+ void PaintLeftArea( USHORT nStartRow, USHORT nEndRow );
+ void PaintLeft();
+
+ BOOL PaintExtras();
+
+ void CreateAnchorHandles(SdrHdlList& rHdl, const ScAddress& rAddress);
+
+ void UpdateFormulas();
+ void InterpretVisible();
+ void CheckNeedsRepaint();
+
+ void PaintRangeFinder( long nNumber = -1 );
+ void AddHighlightRange( const ScRange& rRange, const Color& rColor );
+ void ClearHighlightRanges();
+
+ long DoChartSelection( ChartSelectionInfo &rInfo, const SchMemChart& rMemChart );
+
+ long GetGridWidth( ScHSplitPos eWhich );
+ long GetGridHeight( ScVSplitPos eWhich );
+
+ void UpdateScrollBars();
+ void SetNewVisArea();
+
+ void InvalidateAttribs();
+
+ void MakeEditView( ScEditEngineDefaulter* pEngine, USHORT nCol, USHORT nRow );
+ void KillEditView( BOOL bNoPaint );
+ void UpdateEditView();
+
+
+ // Bloecke
+
+ void SelectAll( BOOL bContinue = FALSE );
+ void SelectAllTables();
+
+ void MarkCursor( USHORT nCurX, USHORT nCurY, USHORT nCurZ,
+ BOOL bCols = FALSE, BOOL bRows = FALSE );
+ void InitBlockMode( USHORT nCurX, USHORT nCurY, USHORT nCurZ,
+ BOOL bTestNeg = FALSE,
+ BOOL bCols = FALSE, BOOL bRows = FALSE );
+ void InitOwnBlockMode();
+ void DoneBlockMode( BOOL bContinue = FALSE );
+
+ BOOL IsBlockMode() const { return bIsBlockMode; }
+
+ void MarkColumns();
+ void MarkRows();
+ void MarkDataArea( BOOL bIncludeCursor = TRUE );
+ void Unmark();
+
+ void MarkRange( const ScRange& rRange, BOOL bSetCursor = TRUE );
+
+ BOOL IsMarking( USHORT nCol, USHORT nRow, USHORT nTab ) const;
+
+ void PaintMarks( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow );
+ void PaintBlock( BOOL bReset = FALSE );
+
+ void LockModifiers( USHORT nModifiers );
+ USHORT GetLockedModifiers() const;
+ void ViewOptionsHasChanged( BOOL bHScrollChanged,
+ BOOL bGraphicsChanged = FALSE);
+
+ Point GetMousePosPixel();
+
+ void SnapSplitPos( Point& rScreenPosPixel );
+ void FreezeSplitters( BOOL bFreeze );
+ void RemoveSplit();
+ void SplitAtCursor();
+ void SplitAtPixel( const Point& rPixel, BOOL bHor, BOOL bVer );
+ void InvalidateSplit();
+
+ void ErrorMessage( USHORT nGlobStrId );
+ Window* GetParentOrChild( USHORT nChildId );
+
+ void EnableRefInput(BOOL bFlag=TRUE);
+
+ Window* GetFrameWin() const { return pFrameWin; }
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
new file mode 100644
index 000000000000..b53ae8d42887
--- /dev/null
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -0,0 +1,419 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwsh.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TABVWSH_HXX
+#define SC_TABVWSH_HXX
+
+#ifndef _SFXVIEWSH_HXX //autogen
+#include <sfx2/viewsh.hxx>
+#endif
+
+#ifndef _VIEWFAC_HXX //autogen
+#include <sfx2/viewfac.hxx>
+#endif
+
+#ifndef SC_DBFUNC_HXX
+#include "dbfunc.hxx" // -> tabview
+#endif
+
+#ifndef SC_TARGET_HXX
+#include "target.hxx"
+#endif
+
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx" // ScRangeListRef
+#endif
+
+#ifndef SC_SHELLIDS_HXX
+#include "shellids.hxx"
+#endif
+
+class FmFormShell;
+class SbxObject;
+class SdrOle2Obj;
+class SfxBindings;
+class SfxChildWindow;
+class SfxModelessDialog;
+class SvxBorderLine;
+class SvxBoxObjectRef;
+class SvxNumberInfoItem;
+struct SfxChildWinInfo;
+
+class ScArea;
+class ScAuditingShell;
+class ScDrawShell;
+class ScDrawTextObjectBar;
+class ScEditShell;
+class ScInputHandler;
+class ScPivotShell;
+class ScDrawFormShell;
+class ScCellShell;
+class ScOleObjectShell;
+class ScGraphicShell;
+class ScChartShell;
+class ScPageBreakShell;
+class ScDPObject;
+
+struct ScHeaderFieldData;
+
+
+enum ObjectSelectionType
+{
+ OST_NONE,
+ OST_Cell,
+ OST_Editing,
+ OST_DrawText,
+ OST_Drawing,
+ OST_DrawForm,
+ OST_Pivot,
+ OST_Auditing,
+ OST_OleObject,
+ OST_Chart,
+ OST_Graphic
+};
+
+//==================================================================
+
+
+class ScTabViewShell: public SfxViewShell, public ScDBFunc
+{
+private:
+ static USHORT nInsertCtrlState;
+ static USHORT nInsCellsCtrlState;
+ static USHORT nInsObjCtrlState;
+
+ ObjectSelectionType eCurOST;
+ USHORT nDrawSfxId;
+ USHORT nCtrlSfxId;
+ USHORT nFormSfxId;
+ ScDrawShell* pDrawShell;
+ ScDrawTextObjectBar* pDrawTextShell;
+ ScEditShell* pEditShell;
+ ScPivotShell* pPivotShell;
+ ScAuditingShell* pAuditingShell;
+ ScDrawFormShell* pDrawFormShell;
+ ScCellShell* pCellShell;
+ ScOleObjectShell* pOleObjectShell;
+ ScChartShell* pChartShell;
+ ScGraphicShell* pGraphicShell;
+ ScPageBreakShell* pPageBreakShell;
+
+ FmFormShell* pFormShell;
+
+ ScInputHandler* pInputHandler; // fuer OLE-Eingabezeile
+
+ SvxBorderLine* pCurFrameLine;
+
+ Point aWinPos;
+
+ ScTabViewTarget aTarget;
+ ScArea* pPivotSource;
+ ScDPObject* pDialogDPObject;
+
+ BOOL bFirstActivate;
+
+ BOOL bActiveDrawSh;
+ BOOL bActiveDrawTextSh;
+ BOOL bActivePivotSh;
+ BOOL bActiveAuditingSh;
+ BOOL bActiveDrawFormSh;
+ BOOL bActiveOleObjectSh;
+ BOOL bActiveChartSh;
+ BOOL bActiveGraphicSh;
+ BOOL bActiveEditSh;
+
+
+ BOOL bDontSwitch; // EditShell nicht abschalten
+ BOOL bInFormatDialog; // fuer GetSelectionText
+ BOOL bPrintSelected; // for result of SvxPrtQryBox
+
+ BOOL bReadOnly; // um Status-Aenderungen zu erkennen
+
+ SbxObject* pScSbxObject;
+
+ BOOL bChartDlgIsEdit; // Datenbereich aendern
+ BOOL bChartAreaValid; // wenn Chart aufgezogen wird
+ String aEditChartName;
+ ScRangeListRef aChartSource;
+ Rectangle aChartPos;
+ USHORT nChartDestTab;
+
+private:
+ void Construct();
+
+ void SetMySubShell( SfxShell* pShell );
+ SfxShell* GetMySubShell() const;
+
+ void DoReadUserData( const String& rData );
+
+protected:
+ virtual void Activate(BOOL bMDI);
+ virtual void Deactivate(BOOL bMDI);
+ virtual USHORT PrepareClose( BOOL bUI = TRUE, BOOL bForBrowsing = FALSE );
+
+ virtual void ShowCursor(FASTBOOL bOn);
+
+ virtual void Move(); // Benachrichtigung
+
+ virtual void AdjustPosSizePixel( const Point &rPos, const Size &rSize ); // alt
+
+ virtual void InnerResizePixel( const Point &rOfs, const Size &rSize ); // neu
+ virtual void OuterResizePixel( const Point &rOfs, const Size &rSize );
+ virtual void SetZoomFactor( const Fraction &rZoomX, const Fraction &rZoomY );
+
+ virtual void QueryObjAreaPixel( Rectangle& rRect ) const;
+
+ virtual Size GetOptimalSizePixel() const;
+
+ virtual String GetSelectionText( BOOL bWholeWord );
+ virtual BOOL HasSelection( BOOL bText ) const;
+ virtual String GetDescription() const;
+
+ virtual void WriteUserData(String &, BOOL bBrowse = FALSE);
+ virtual void ReadUserData(const String &, BOOL bBrowse = FALSE);
+
+ virtual FASTBOOL KeyInput( const KeyEvent &rKeyEvent );
+ virtual SdrView* GetDrawView() const;
+
+public:
+ TYPEINFO();
+
+ SFX_DECL_INTERFACE(SCID_TABVIEW_SHELL);
+ SFX_DECL_VIEWFACTORY(ScTabViewShell);
+
+
+ // -> Clone-Methode fuer Factory
+
+ ScTabViewShell( SfxViewFrame* pViewFrame,
+ const ScTabViewShell& rWin );
+
+ // aus einer allgemeinen Shell konstruieren und
+ // soviel wie moeglich uebernehmen (SliderPos etc.):
+
+ ScTabViewShell( SfxViewFrame* pViewFrame,
+ SfxViewShell* pOldSh );
+
+ virtual ~ScTabViewShell();
+
+ Window* GetDialogParent();
+
+ void ExecuteInputDirect();
+
+ ScInputHandler* GetInputHandler() const;
+ void UpdateInputHandler( BOOL bForce = FALSE );
+ BOOL TabKeyInput(const KeyEvent& rKEvt);
+ BOOL SfxKeyInput(const KeyEvent& rKEvt);
+
+ void SetActive();
+
+ SvxBorderLine* GetDefaultFrameLine() const { return pCurFrameLine; }
+ void SetDefaultFrameLine(const SvxBorderLine* pLine );
+
+ void ExecuteShowNIY( SfxRequest& rReq );
+ void StateDisabled( SfxItemSet& rSet );
+
+ void Execute( SfxRequest& rReq );
+ void GetState( SfxItemSet& rSet );
+
+ void ExecuteTable( SfxRequest& rReq );
+ void GetStateTable( SfxItemSet& rSet );
+
+ void WindowChanged();
+ void ExecDraw(SfxRequest&);
+ void ExecDrawIns(SfxRequest& rReq);
+ void GetDrawState(SfxItemSet &rSet);
+ void GetDrawInsState(SfxItemSet &rSet);
+ void ExecGallery(SfxRequest& rReq); // StarGallery
+ void GetGalleryState(SfxItemSet& rSet);
+
+ void ExecImageMap( SfxRequest& rReq );
+ void GetImageMapState( SfxItemSet& rSet );
+
+ void ExecTbx( SfxRequest& rReq );
+ void GetTbxState( SfxItemSet& rSet );
+
+ void ExecuteSave( SfxRequest& rReq );
+ void GetSaveState( SfxItemSet& rSet );
+ void ExecSearch( SfxRequest& rReq );
+
+ void ExecuteSbx( SfxRequest& rReq );
+ void GetSbxState( SfxItemSet& rSet );
+
+ void ExecuteObject(SfxRequest& rReq);
+ void GetObjectState(SfxItemSet &rSet);
+
+ void ExecDrawOpt(SfxRequest& rReq);
+ void GetDrawOptState(SfxItemSet &rSet);
+
+
+ void SetDrawShell( BOOL bActive );
+ void SetDrawTextShell( BOOL bActive );
+
+ void SetPivotShell( BOOL bActive );
+ ScArea* GetPivotSource(){return pPivotSource;}
+ void SetPivotSource(ScArea* pSrc){pPivotSource=pSrc;}
+ void SetDialogDPObject( const ScDPObject* pObj );
+ const ScDPObject* GetDialogDPObject() const { return pDialogDPObject; }
+
+ BOOL GetDontSwitch(){return bDontSwitch;}
+ void SetDontSwitch(BOOL bFlag){bDontSwitch=bFlag;}
+
+
+ void SetAuditShell( BOOL bActive );
+ void SetDrawFormShell( BOOL bActive );
+ void SetEditShell(EditView* pView, BOOL bActive );
+ void SetOleObjectShell( BOOL bActive );
+ void SetChartShell( BOOL bActive );
+ void SetGraphicShell( BOOL bActive );
+
+
+ void SetDrawShellOrSub();
+ void SetCurSubShell( ObjectSelectionType eOST, BOOL bForce = FALSE );
+
+ ObjectSelectionType GetCurObjectSelectionType();
+
+ virtual ErrCode DoVerb(long nVerb);
+
+
+ void StopEditShell();
+ BOOL IsDrawTextShell() const;
+ BOOL IsAuditShell() const;
+
+ void SetDrawTextUndo( SfxUndoManager* pUndoMgr );
+
+ void FillFieldData( ScHeaderFieldData& rData );
+
+ void ResetChartArea();
+ void SetChartArea( const ScRangeListRef& rSource, const Rectangle& rDest );
+ BOOL GetChartArea( ScRangeListRef& rSource, Rectangle& rDest, USHORT& rTab ) const;
+
+ BOOL IsChartDlgEdit() const;
+ void SetChartDlgEdit(BOOL bFlag){bChartDlgIsEdit=bFlag;}
+
+ void SetEditChartName(const String& aStr){aEditChartName=aStr;}
+ const String& GetEditChartName() const;
+
+ virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType );
+
+ // Drucken:
+ virtual SfxPrinter* GetPrinter( BOOL bCreate = FALSE );
+ virtual USHORT SetPrinter( SfxPrinter* pNewPrinter,
+ USHORT nDiffFlags = SFX_PRINTER_ALL );
+
+ virtual PrintDialog* CreatePrintDialog( Window* pParent );
+ virtual void PreparePrint( PrintDialog* pPrintDialog = NULL );
+ virtual ErrCode DoPrint( SfxPrinter *pPrinter,
+ PrintDialog *pPrintDialog,
+ BOOL bSilent );
+ virtual USHORT Print( SfxProgress& rProgress, PrintDialog* pPrintDialog = NULL );
+
+ void TestFunction( USHORT nPar );
+
+ void ConnectObject( SdrOle2Obj* pObj );
+ BOOL ActivateObject( SdrOle2Obj* pObj, long nVerb );
+
+ static ScTabViewShell* GetActiveViewShell();
+ SfxModelessDialog* CreateRefDialog( SfxBindings* pB, SfxChildWindow* pCW,
+ SfxChildWinInfo* pInfo,
+ Window* pParent, USHORT nSlotId );
+
+ void UpdateOleZoom();
+ inline SbxObject* GetScSbxObject() const
+ { return pScSbxObject; }
+ inline void SetScSbxObject( SbxObject* pOb )
+ { pScSbxObject = pOb; }
+
+ FmFormShell* GetFormShell() const { return pFormShell; }
+
+ void InsertURL( const String& rName, const String& rURL, const String& rTarget,
+ USHORT nMode );
+ void InsertURLButton( const String& rName, const String& rURL, const String& rTarget,
+ const Point* pInsPos = NULL );
+ void InsertURLField( const String& rName, const String& rURL, const String& rTarget );
+
+ BOOL SelectObject( const String& rName );
+
+ void SetInFormatDialog(BOOL bFlag) {bInFormatDialog=bFlag;}
+ BOOL IsInFormatDialog() {return bInFormatDialog;}
+
+ void ForceMove() { Move(); }
+
+ void MakeNumberInfoItem ( ScDocument* pDoc,
+ ScViewData* pViewData,
+ SvxNumberInfoItem** ppItem );
+
+ void UpdateNumberFormatter ( ScDocument* pDoc,
+ const SvxNumberInfoItem& rInfoItem );
+
+ void ExecuteCellFormatDlg ( SfxRequest& rReq, USHORT nTabPage = 0xffff );
+
+ BOOL GetFunction( String& rFuncStr );
+
+ // Ein kleiner Hack
+ ScCellShell* GetCellShell(){return pCellShell;}
+};
+
+//==================================================================
+
+
+#endif
+
diff --git a/sc/source/ui/inc/target.hxx b/sc/source/ui/inc/target.hxx
new file mode 100644
index 000000000000..6140dfbe780c
--- /dev/null
+++ b/sc/source/ui/inc/target.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * $RCSfile: target.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TARGET_HXX
+#define SC_TARGET_HXX
+
+#ifndef _UNDO_HXX //autogen
+#include <svtools/undo.hxx>
+#endif
+
+class ScTabViewShell;
+
+class ScTabViewTarget : public SfxRepeatTarget
+{
+private:
+ ScTabViewShell* pViewShell;
+
+public:
+ TYPEINFO();
+
+ ScTabViewTarget( ScTabViewShell* pShell ) : pViewShell( pShell ) {}
+ virtual ~ScTabViewTarget();
+
+ ScTabViewShell* GetViewShell() const { return pViewShell; }
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/tbinsert.hrc b/sc/source/ui/inc/tbinsert.hrc
new file mode 100644
index 000000000000..6fa99a7b4262
--- /dev/null
+++ b/sc/source/ui/inc/tbinsert.hrc
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * $RCSfile: tbinsert.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#define RID_TOOLBOX_INSERT 1
+#define RID_TOOLBOX_INSCELLS 2
+#define RID_TOOLBOX_INSOBJ 3
+
+
diff --git a/sc/source/ui/inc/tbinsert.hxx b/sc/source/ui/inc/tbinsert.hxx
new file mode 100644
index 000000000000..e013064d8c70
--- /dev/null
+++ b/sc/source/ui/inc/tbinsert.hxx
@@ -0,0 +1,127 @@
+/*************************************************************************
+ *
+ * $RCSfile: tbinsert.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TBINSERT_HXX
+#define SC_TBINSERT_HXX
+
+#ifndef _SFXTBXCTRL_HXX //autogen
+#include <sfx2/tbxctrl.hxx>
+#endif
+
+#ifndef _SFXTBXMGR_HXX //autogen
+#include <sfx2/tbxmgr.hxx>
+#endif
+
+//----------------------------------------------------------------------------
+//
+//----------------------------------------------------------------------------
+
+class ScTbxInsertCtrl : public SfxToolBoxControl
+{
+ USHORT nLastSlotId;
+
+ virtual void Select( BOOL bMod1 = FALSE );
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ ScTbxInsertCtrl( USHORT nId, ToolBox& rTbx, SfxBindings& rBind );
+ ~ScTbxInsertCtrl();
+
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+ virtual void StateChanged( USHORT nSID,
+ SfxItemState eState,
+ const SfxPoolItem* pState );
+};
+
+//----------------------------------------------------------------------------
+//
+//----------------------------------------------------------------------------
+
+class ScTbxInsertPopup : public SfxPopupWindow
+{
+ SfxToolBoxManager aTbx;
+ ResId aRIdWinTemp;
+ ResId aRIdTbxTemp;
+
+ Link aTbxClickHdl;
+
+ DECL_LINK( TbxSelectHdl, ToolBox* );
+ DECL_LINK( TbxClickHdl, ToolBox* );
+
+protected:
+ virtual void PopupModeEnd();
+
+public:
+ ScTbxInsertPopup( USHORT nId, WindowAlign eAlign,
+ const ResId& rRIdWin, const ResId& rRIdTbx,
+ SfxBindings& rBindings );
+ ~ScTbxInsertPopup();
+
+ virtual SfxPopupWindow* Clone() const;
+ void StartSelection();
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/teamdlg.hxx b/sc/source/ui/inc/teamdlg.hxx
new file mode 100644
index 000000000000..8ec54a268ab1
--- /dev/null
+++ b/sc/source/ui/inc/teamdlg.hxx
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * $RCSfile: teamdlg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TEAMDLG_HXX
+#define SC_TEAMDLG_HXX
+
+
+#ifndef _SV_FLOATWIN_HXX //autogen
+#include <vcl/floatwin.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+
+//========================================================================
+
+class ScTeamDlg : public FloatingWindow
+{
+public:
+ ScTeamDlg( Window* pParent );
+ ~ScTeamDlg();
+
+ virtual BOOL Close();
+ void Center();
+
+private:
+ FixedBitmap aBmpTeam;
+};
+
+
+#endif
+
diff --git a/sc/source/ui/inc/textdlgs.hxx b/sc/source/ui/inc/textdlgs.hxx
new file mode 100644
index 000000000000..a5c0c911a6d0
--- /dev/null
+++ b/sc/source/ui/inc/textdlgs.hxx
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * $RCSfile: textdlgs.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TEXTDLGS_HXX
+#define SC_TEXTDLGS_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+class SfxObjectShell;
+
+//
+// Zeichen-Tab-Dialog
+//
+
+class ScCharDlg : public SfxTabDialog
+{
+private:
+ const SfxItemSet& rOutAttrs;
+ const SfxObjectShell& rDocShell;
+
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+
+public:
+ ScCharDlg( Window* pParent, const SfxItemSet* pAttr,
+ const SfxObjectShell* pDocShell );
+ ~ScCharDlg() {}
+};
+
+//
+// Absatz-Tab-Dialog
+//
+
+class ScParagraphDlg : public SfxTabDialog
+{
+private:
+ const SfxItemSet& rOutAttrs;
+
+ virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
+
+public:
+ ScParagraphDlg( Window* pParent, const SfxItemSet* pAttr );
+ ~ScParagraphDlg() {}
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/tpcalc.hxx b/sc/source/ui/inc/tpcalc.hxx
new file mode 100644
index 000000000000..aba6c2a96288
--- /dev/null
+++ b/sc/source/ui/inc/tpcalc.hxx
@@ -0,0 +1,150 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpcalc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TPCALC_HXX
+#define SC_TPCALC_HXX
+
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+
+
+//===================================================================
+
+class ScDocOptions;
+
+class ScTpCalcOptions : public SfxTabPage
+{
+public:
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rCoreSet );
+ static USHORT* GetRanges ();
+ virtual BOOL FillItemSet ( SfxItemSet& rCoreSet );
+ virtual void Reset ( const SfxItemSet& rCoreSet );
+ virtual int DeactivatePage ( SfxItemSet* pSet = NULL );
+
+private:
+ ScTpCalcOptions( Window* pParent,
+ const SfxItemSet& rCoreSet );
+ ~ScTpCalcOptions();
+
+private:
+ CheckBox aBtnIterate;
+ FixedText aFtSteps;
+ NumericField aEdSteps;
+ FixedText aFtEps;
+ Edit aEdEps;
+ GroupBox aGbZRefs;
+
+ RadioButton aBtnDateStd;
+ RadioButton aBtnDateSc10;
+ RadioButton aBtnDate1904;
+
+ GroupBox aGbDate;
+
+ CheckBox aBtnCase;
+ CheckBox aBtnCalc;
+ CheckBox aBtnMatch;
+ CheckBox aBtnLookUp;
+
+ FixedText aFtPrec;
+ NumericField aEdPrec;
+
+ const char cDecSep;
+
+ ScDocOptions* pOldOptions;
+ ScDocOptions* pLocalOptions;
+ USHORT nWhichCalc;
+
+#ifdef _TPCALC_CXX
+private:
+ void Init();
+ BOOL CheckEps();
+ BOOL GetEps( double& rEps );
+
+ //------------------------------------
+ // Handler:
+ DECL_LINK( RadioClickHdl, RadioButton* );
+ DECL_LINK( CheckClickHdl, CheckBox* );
+
+#endif
+};
+
+
+#endif
+
diff --git a/sc/source/ui/inc/tphf.hxx b/sc/source/ui/inc/tphf.hxx
new file mode 100644
index 000000000000..120427a83a21
--- /dev/null
+++ b/sc/source/ui/inc/tphf.hxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * $RCSfile: tphf.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TPHF_HXX
+#define SC_TPHF_HXX
+
+
+#ifndef _SVX_HDFT_HXX //autogen
+#include <svx/hdft2.hxx>
+#endif
+
+class ScStyleDlg;
+
+//========================================================================
+
+class ScHFPage : public SvxHFPage
+{
+public:
+ virtual ~ScHFPage();
+
+ virtual void Reset( const SfxItemSet& rSet );
+ virtual BOOL FillItemSet( SfxItemSet& rOutSet );
+
+ void SetPageStyle( const String& rName ) { aStrPageStyle = rName; }
+ void SetStyleDlg ( const ScStyleDlg* pDlg ) { pStyleDlg = pDlg; }
+
+protected:
+ ScHFPage( Window* pParent,
+ USHORT nResId,
+ const SfxItemSet& rSet,
+ USHORT nSetId );
+
+ virtual void ActivatePage( const SfxItemSet& rSet );
+ virtual int DeactivatePage( SfxItemSet* pSet = 0 );
+
+private:
+ PushButton aBtnEdit;
+ SfxItemSet aDataSet;
+ String aStrPageStyle;
+ USHORT nPageUsage;
+ const ScStyleDlg* pStyleDlg;
+
+#ifdef _TPHF_CXX
+private:
+ DECL_LINK( BtnHdl, PushButton* );
+ DECL_LINK( HFEditHdl, void* );
+ DECL_LINK( TurnOnHdl, CheckBox* );
+#endif
+};
+
+//========================================================================
+
+class ScHeaderPage : public ScHFPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rSet );
+ static USHORT* GetRanges();
+
+private:
+ ScHeaderPage( Window* pParent, const SfxItemSet& rSet );
+};
+
+//========================================================================
+
+class ScFooterPage : public ScHFPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rSet );
+ static USHORT* GetRanges();
+
+private:
+ ScFooterPage( Window* pParent, const SfxItemSet& rSet );
+};
+
+
+#endif // SC_TPHF_HXX
+
diff --git a/sc/source/ui/inc/tphfedit.hxx b/sc/source/ui/inc/tphfedit.hxx
new file mode 100644
index 000000000000..c9714327f234
--- /dev/null
+++ b/sc/source/ui/inc/tphfedit.hxx
@@ -0,0 +1,267 @@
+/*************************************************************************
+ *
+ * $RCSfile: tphfedit.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TPHFEDIT_HXX
+#define SC_TPHFEDIT_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SVX_PAGEITEM_HXX //autogen
+#include <svx/pageitem.hxx>
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef SC_ITEMS_HXX
+#include "scitems.hxx" // wegen enum SvxNumType
+#endif
+
+#ifndef _SV_TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef _SV_VIRDEV_HXX //autogen
+#include <vcl/virdev.hxx>
+#endif
+
+#ifndef SC_POPMENU_HXX
+#include <popmenu.hxx>
+#endif
+
+
+//===================================================================
+
+class ScHeaderEditEngine;
+class EditView;
+class EditTextObject;
+class SvxFieldItem;
+
+class ScEditWindow : public Control
+{
+public:
+ ScEditWindow( Window* pParent, const ResId& rResId );
+ ~ScEditWindow();
+
+ void SetFont( const Font& rTextFont );
+ void SetText( const EditTextObject& rTextObject );
+ EditTextObject* CreateTextObject();
+ void SetCharAttriutes();
+
+ void InsertField( const SvxFieldItem& rFld );
+
+ void SetNumType(SvxNumType eNumType);
+
+protected:
+ virtual void Paint( const Rectangle& rRec );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void GetFocus();
+
+private:
+ ScHeaderEditEngine* pEdEngine;
+ EditView* pEdView;
+};
+
+//===================================================================
+class ScExtIButton : public ImageButton
+{
+private:
+
+ Timer aTimer;
+ ScPopupMenu* pPopupMenu;
+ Link aMLink;
+ USHORT nSelected;
+
+ DECL_LINK( TimerHdl, Timer*);
+
+// void DrawArrow();
+
+protected:
+
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt);
+ virtual void Click();
+
+ virtual void StartPopup();
+
+public:
+
+ ScExtIButton(Window* pParent, const ResId& rResId );
+
+ void SetPopupMenu(ScPopupMenu* pPopUp);
+
+ USHORT GetSelected();
+
+ void SetMenuHdl( const Link& rLink ) { aMLink = rLink; }
+ const Link& GetMenuHdl() const { return aMLink; }
+
+ virtual long PreNotify( NotifyEvent& rNEvt );
+};
+
+
+//===================================================================
+
+class ScHFEditPage : public SfxTabPage
+{
+public:
+ virtual BOOL FillItemSet ( SfxItemSet& rCoreSet );
+ virtual void Reset ( const SfxItemSet& rCoreSet );
+
+ void SetNumType(SvxNumType eNumType);
+
+protected:
+ ScHFEditPage( Window* pParent,
+ USHORT nResId,
+ const SfxItemSet& rCoreSet,
+ USHORT nWhich );
+ virtual ~ScHFEditPage();
+
+private:
+ FixedText aFtLeft;
+ ScEditWindow aWndLeft;
+ FixedText aFtCenter;
+ ScEditWindow aWndCenter;
+ FixedText aFtRight;
+ ScEditWindow aWndRight;
+ ImageButton aBtnText;
+ ScExtIButton aBtnFile;
+ ImageButton aBtnTable;
+ ImageButton aBtnPage;
+ ImageButton aBtnLastPage;
+ ImageButton aBtnDate;
+ ImageButton aBtnTime;
+ FixedInfo aFtInfo;
+ GroupBox aGbInfo;
+ ScPopupMenu aPopUpFile;
+
+ USHORT nWhich;
+ String aCmdArr[6];
+
+private:
+#ifdef _TPHFEDIT_CXX
+ void FillCmdArr();
+ DECL_LINK( ClickHdl, ImageButton* );
+ DECL_LINK( MenuHdl, ScExtIButton* );
+#endif
+};
+
+//===================================================================
+
+class ScRightHeaderEditPage : public ScHFEditPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rCoreSet );
+ static USHORT* GetRanges();
+
+private:
+ ScRightHeaderEditPage( Window* pParent, const SfxItemSet& rSet );
+};
+
+//===================================================================
+
+class ScLeftHeaderEditPage : public ScHFEditPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rCoreSet );
+ static USHORT* GetRanges();
+
+private:
+ ScLeftHeaderEditPage( Window* pParent, const SfxItemSet& rSet );
+};
+
+//===================================================================
+
+class ScRightFooterEditPage : public ScHFEditPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rCoreSet );
+ static USHORT* GetRanges();
+
+private:
+ ScRightFooterEditPage( Window* pParent, const SfxItemSet& rSet );
+};
+
+//===================================================================
+
+class ScLeftFooterEditPage : public ScHFEditPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rCoreSet );
+ static USHORT* GetRanges();
+
+private:
+ ScLeftFooterEditPage( Window* pParent, const SfxItemSet& rSet );
+};
+
+
+
+#endif // SC_TPHFEDIT_HXX
+
diff --git a/sc/source/ui/inc/tpprint.hxx b/sc/source/ui/inc/tpprint.hxx
new file mode 100644
index 000000000000..cd369d2df942
--- /dev/null
+++ b/sc/source/ui/inc/tpprint.hxx
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpprint.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TPPRINT_HXX
+#define SC_TPPRINT_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+//===================================================================
+
+class ScDocOptions;
+
+class ScTpPrintOptions : public SfxTabPage
+{
+public:
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rCoreSet );
+ static USHORT* GetRanges ();
+ virtual BOOL FillItemSet ( SfxItemSet& rCoreSet );
+ virtual void Reset ( const SfxItemSet& rCoreSet );
+ virtual int DeactivatePage ( SfxItemSet* pSet = NULL );
+
+private:
+ ScTpPrintOptions( Window* pParent,
+ const SfxItemSet& rCoreSet );
+ ~ScTpPrintOptions();
+
+private:
+ CheckBox aBtnPrinterNotFound;
+ CheckBox aBtnPageSize;
+ CheckBox aBtnOrientation;
+ GroupBox aGbWarnings;
+
+ const USHORT nWhichPrint;
+
+#ifdef _TPPRINT_CXX
+#endif
+};
+
+
+#endif
+
+
diff --git a/sc/source/ui/inc/tpsort.hxx b/sc/source/ui/inc/tpsort.hxx
new file mode 100644
index 000000000000..6d2b769f9cb4
--- /dev/null
+++ b/sc/source/ui/inc/tpsort.hxx
@@ -0,0 +1,244 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpsort.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TPSORT_HXX
+#define SC_TPSORT_HXX
+
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SV_EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//------------------------------------------------------------------------
+
+#define SC_MAXFIELDS 200
+
+class ScViewData;
+class ScSortDlg;
+
+//========================================================================
+// Kriterien
+
+class ScTabPageSortFields : public SfxTabPage
+{
+public:
+ ScTabPageSortFields( Window* pParent,
+ const SfxItemSet& rArgSet );
+ ~ScTabPageSortFields();
+
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rArgSet );
+ static USHORT* GetRanges ();
+ virtual BOOL FillItemSet ( SfxItemSet& rArgSet );
+ virtual void Reset ( const SfxItemSet& rArgSet );
+
+protected:
+// fuer Datenaustausch (sollte noch umgestellt werden!)
+// virtual void ActivatePage ( const SfxItemSet& rSet );
+ virtual void ActivatePage ();
+ virtual int DeactivatePage ( SfxItemSet* pSet = 0);
+
+private:
+ ListBox aLbSort1;
+ RadioButton aBtnUp1;
+ RadioButton aBtnDown1;
+ GroupBox aGbSort1;
+
+ ListBox aLbSort2;
+ RadioButton aBtnUp2;
+ RadioButton aBtnDown2;
+ GroupBox aGbSort2;
+
+ ListBox aLbSort3;
+ RadioButton aBtnUp3;
+ RadioButton aBtnDown3;
+ GroupBox aGbSort3;
+
+ String aStrUndefined;
+ String aStrColumn;
+ String aStrRow;
+
+ const USHORT nWhichSort;
+ ScSortDlg* pDlg;
+ ScViewData* pViewData;
+ const ScSortParam& rSortData;
+ USHORT nFieldArr[SC_MAXFIELDS];
+ USHORT nFieldCount;
+ USHORT nFirstCol;
+ USHORT nFirstRow;
+ BOOL bHasHeader;
+ BOOL bSortByRows;
+
+ ListBox* aSortLbArr[3];
+ RadioButton* aDirBtnArr[3][2];
+ GroupBox* aGbArr[3];
+
+#ifdef _TPSORT_CXX
+private:
+ void Init ();
+ void DisableField ( USHORT nField );
+ void EnableField ( USHORT nField );
+ void FillFieldLists ();
+ USHORT GetFieldSelPos ( USHORT nField );
+
+ // Handler ------------------------
+ DECL_LINK( SelectHdl, ListBox * );
+#endif
+};
+
+//========================================================================
+// Sortieroptionen:
+
+class ScDocument;
+class ScRangeData;
+
+class ScTabPageSortOptions : public SfxTabPage
+{
+public:
+ ScTabPageSortOptions( Window* pParent,
+ const SfxItemSet& rArgSet );
+ ~ScTabPageSortOptions();
+
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rArgSet );
+ static USHORT* GetRanges ();
+ virtual BOOL FillItemSet ( SfxItemSet& rArgSet );
+ virtual void Reset ( const SfxItemSet& rArgSet );
+
+protected:
+// fuer Datenaustausch (sollte noch umgestellt werden!)
+// virtual void ActivatePage ( const SfxItemSet& rSet );
+ virtual void ActivatePage ();
+ virtual int DeactivatePage ( SfxItemSet* pSet = 0);
+
+private:
+
+ CheckBox aBtnCase;
+ CheckBox aBtnHeader;
+ CheckBox aBtnFormats;
+
+ CheckBox aBtnCopyResult;
+ ListBox aLbOutPos;
+ Edit aEdOutPos;
+
+ CheckBox aBtnSortUser;
+ ListBox aLbSortUser;
+
+ RadioButton aBtnTopDown;
+ RadioButton aBtnLeftRight;
+ GroupBox aGbDirection;
+ FixedText aFtAreaLabel;
+ FixedInfo aFtArea;
+ String aStrRowLabel;
+ String aStrColLabel;
+ String aStrUndefined;
+ String aStrNoName;
+
+ const USHORT nWhichSort;
+ const ScSortParam& rSortData;
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ ScSortDlg* pDlg;
+ ScAddress theOutPos;
+
+#ifdef _TPSORT_CXX
+private:
+ void Init ();
+ void FillUserSortListBox ();
+ void FillOutPosList ();
+
+ // Handler ------------------------
+ DECL_LINK( EnableHdl, CheckBox * );
+ DECL_LINK( SelOutPosHdl, ListBox * );
+ void EdOutPosModHdl ( Edit* pEd );
+ DECL_LINK( SortDirHdl, RadioButton * );
+#endif
+};
+
+
+
+#endif // SC_TPSORT_HXX
+
diff --git a/sc/source/ui/inc/tpstat.hxx b/sc/source/ui/inc/tpstat.hxx
new file mode 100644
index 000000000000..5e5eb7f199df
--- /dev/null
+++ b/sc/source/ui/inc/tpstat.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpstat.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TPSTAT_HXX
+#define SC_TPSTAT_HXX
+
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _STDCTRL_HXX //autogen
+#include <svtools/stdctrl.hxx>
+#endif
+
+
+
+//========================================================================
+
+class ScDocStatPage: public SfxTabPage
+{
+public:
+ static SfxTabPage* Create( Window* pParent, const SfxItemSet& rSet );
+
+private:
+ ScDocStatPage( Window *pParent, const SfxItemSet& rSet );
+ ~ScDocStatPage();
+
+protected:
+ virtual BOOL FillItemSet( SfxItemSet& rSet );
+ virtual void Reset ( const SfxItemSet& rSet );
+
+private:
+ FixedText aFtTablesLbl;
+ FixedInfo aFtTables;
+ FixedText aFtCellsLbl;
+ FixedInfo aFtCells;
+ FixedText aFtPagesLbl;
+ FixedInfo aFtPages;
+
+ GroupBox aGbInfo;
+};
+
+
+
+#endif
diff --git a/sc/source/ui/inc/tpsubt.hxx b/sc/source/ui/inc/tpsubt.hxx
new file mode 100644
index 000000000000..d6b39cc1d0f1
--- /dev/null
+++ b/sc/source/ui/inc/tpsubt.hxx
@@ -0,0 +1,235 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpsubt.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TPSUBT_HXX
+#define SC_TPSUBT_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SVX_CHECKLBX_HXX //autogen
+#include <svx/checklbx.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+//------------------------------------------------------------------------
+
+#define SC_MAXFIELDS 200
+
+class ScViewData;
+class ScDocument;
+
+//========================================================================
+// Gruppenseiten: Basisklasse
+
+class ScTpSubTotalGroup : public SfxTabPage
+{
+protected:
+ ScTpSubTotalGroup( Window* pParent, USHORT nResId,
+ const SfxItemSet& rArgSet );
+
+public:
+ virtual ~ScTpSubTotalGroup();
+
+ static USHORT* GetRanges ();
+ BOOL DoReset ( USHORT nGroupNo,
+ const SfxItemSet& rArgSet );
+ BOOL DoFillItemSet ( USHORT nGroupNo,
+ SfxItemSet& rArgSet );
+protected:
+ ListBox aLbGroup;
+ SvxCheckListBox aLbColumns;
+ ListBox aLbFunctions;
+ FixedText aFtGroup;
+ FixedText aFtColumns;
+ FixedText aFtFunctions;
+ const String aStrNone;
+ const String aStrColumn;
+
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+
+ const USHORT nWhichSubTotals;
+ const ScSubTotalParam& rSubTotalData;
+ USHORT nFieldArr[SC_MAXFIELDS];
+ const USHORT nFieldCount;
+
+private:
+ void Init ();
+ void FillListBoxes ();
+ ScSubTotalFunc LbPosToFunc ( USHORT nPos );
+ USHORT FuncToLbPos ( ScSubTotalFunc eFunc );
+ USHORT GetFieldSelPos ( USHORT nField );
+
+ // Handler ------------------------
+ DECL_LINK( SelectHdl, ListBox * );
+ DECL_LINK( CheckHdl, ListBox * );
+};
+
+//------------------------------------------------------------------------
+
+class ScTpSubTotalGroup1 : public ScTpSubTotalGroup
+{
+protected:
+ ScTpSubTotalGroup1( Window* pParent,
+ const SfxItemSet& rArgSet );
+
+public:
+ virtual ~ScTpSubTotalGroup1();
+
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rArgSet );
+ virtual BOOL FillItemSet ( SfxItemSet& rArgSet );
+ virtual void Reset ( const SfxItemSet& rArgSet );
+};
+
+//------------------------------------------------------------------------
+
+class ScTpSubTotalGroup2 : public ScTpSubTotalGroup
+{
+protected:
+ ScTpSubTotalGroup2( Window* pParent,
+ const SfxItemSet& rArgSet );
+
+public:
+ virtual ~ScTpSubTotalGroup2();
+
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rArgSet );
+ virtual BOOL FillItemSet ( SfxItemSet& rArgSet );
+ virtual void Reset ( const SfxItemSet& rArgSet );
+};
+
+//------------------------------------------------------------------------
+
+class ScTpSubTotalGroup3 : public ScTpSubTotalGroup
+{
+protected:
+ ScTpSubTotalGroup3( Window* pParent,
+ const SfxItemSet& rArgSet );
+
+public:
+ virtual ~ScTpSubTotalGroup3();
+
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rArgSet );
+ virtual BOOL FillItemSet ( SfxItemSet& rArgSet );
+ virtual void Reset ( const SfxItemSet& rArgSet );
+};
+
+//========================================================================
+// Optionen:
+
+class ScTpSubTotalOptions : public SfxTabPage
+{
+protected:
+ ScTpSubTotalOptions( Window* pParent,
+ const SfxItemSet& rArgSet );
+
+public:
+ virtual ~ScTpSubTotalOptions();
+
+ static USHORT* GetRanges ();
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rArgSet );
+ virtual BOOL FillItemSet ( SfxItemSet& rArgSet );
+ virtual void Reset ( const SfxItemSet& rArgSet );
+
+private:
+ CheckBox aBtnPagebreak;
+ CheckBox aBtnCase;
+ CheckBox aBtnSort;
+ CheckBox aBtnFormats;
+ CheckBox aBtnUserDef;
+ ListBox aLbUserDef;
+ RadioButton aBtnAscending;
+ RadioButton aBtnDescending;
+ GroupBox aGbOptions;
+
+ ScViewData* pViewData;
+ ScDocument* pDoc;
+ const USHORT nWhichSubTotals;
+ const ScSubTotalParam& rSubTotalData;
+
+private:
+ void Init ();
+ void FillUserSortListBox ();
+
+ // Handler ------------------------
+ DECL_LINK( CheckHdl, CheckBox * );
+};
+
+
+
+#endif // SC_TPSORT_HXX
+
diff --git a/sc/source/ui/inc/tptable.hxx b/sc/source/ui/inc/tptable.hxx
new file mode 100644
index 000000000000..3a7b42cf8ade
--- /dev/null
+++ b/sc/source/ui/inc/tptable.hxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * $RCSfile: tptable.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TPTABLE_HXX
+#define SC_TPTABLE_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+//===================================================================
+
+class ScTablePage : public SfxTabPage
+{
+public:
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rCoreSet );
+ static USHORT* GetRanges ();
+ virtual BOOL FillItemSet ( SfxItemSet& rCoreSet );
+ virtual void Reset ( const SfxItemSet& rCoreSet );
+ virtual int DeactivatePage ( SfxItemSet* pSet = NULL );
+
+private:
+ ScTablePage( Window* pParent,
+ const SfxItemSet& rCoreSet );
+ ~ScTablePage();
+private:
+ CheckBox aBtnHeaders;
+ CheckBox aBtnGrid;
+ CheckBox aBtnNotes;
+ CheckBox aBtnObjects;
+ CheckBox aBtnCharts;
+ CheckBox aBtnDrawings;
+ CheckBox aBtnFormulas;
+ CheckBox aBtnNullVals;
+ GroupBox aGbPrint;
+
+ RadioButton aBtnTopDown;
+ RadioButton aBtnLeftRight;
+ FixedBitmap aBmpPageDir;
+ Bitmap aImgLeftRight;
+ Bitmap aImgTopDown;
+ CheckBox aBtnPageNo;
+ NumericField aEdPageNo;
+ GroupBox aGbPageDir;
+
+ RadioButton aBtnScaleAll;
+ RadioButton aBtnScalePageNum;
+ NumericField aEdScaleAll;
+ NumericField aEdScalePageNum;
+ GroupBox aGbScale;
+
+#ifdef _TPTABLE_CXX
+private:
+ //------------------------------------
+ // Handler:
+ DECL_LINK( ScaleHdl, RadioButton* );
+ DECL_LINK( PageDirHdl, RadioButton* );
+ DECL_LINK( PageNoHdl, CheckBox* );
+#endif
+};
+
+
+
+#endif // SC_TPTABLE_HXX
diff --git a/sc/source/ui/inc/tpusrlst.hxx b/sc/source/ui/inc/tpusrlst.hxx
new file mode 100644
index 000000000000..9e42812957bf
--- /dev/null
+++ b/sc/source/ui/inc/tpusrlst.hxx
@@ -0,0 +1,163 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpusrlst.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TPUSRLST_HXX
+#define SC_TPUSRLST_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+
+#define SC_MAXFIELDS 200
+
+//========================================================================
+// Benutzerdefinierte Listen:
+
+class ScUserList;
+class ScDocument;
+class ScViewData;
+class ScRangeUtil;
+
+class ScTpUserLists : public SfxTabPage
+{
+public:
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rAttrSet );
+ static USHORT* GetRanges ();
+ virtual BOOL FillItemSet ( SfxItemSet& rCoreAttrs );
+ virtual void Reset ( const SfxItemSet& rCoreAttrs );
+ virtual int DeactivatePage ( SfxItemSet* pSet = NULL );
+
+private:
+ ScTpUserLists( Window* pParent,
+ const SfxItemSet& rArgSet );
+ ~ScTpUserLists();
+
+private:
+ FixedText aFtLists;
+ ListBox aLbLists;
+ FixedText aFtEntries;
+ MultiLineEdit aEdEntries;
+ FixedText aFtCopyFrom;
+ Edit aEdCopyFrom;
+ PushButton aBtnNew;
+ PushButton aBtnAdd;
+ PushButton aBtnRemove;
+ PushButton aBtnCopy;
+
+ const String aStrQueryRemove;
+ const String aStrNew;
+ const String aStrCancel;
+ const String aStrAdd;
+ const String aStrModify;
+ const String aStrCopyList;
+ const String aStrCopyFrom;
+ const String aStrCopyErr;
+
+ const USHORT nWhichUserLists;
+ ScUserList* pUserLists;
+
+ ScDocument* pDoc;
+ ScViewData* pViewData;
+ ScRangeUtil* pRangeUtil;
+ String aStrSelectedArea;
+
+ BOOL bModifyMode;
+ BOOL bCancelMode;
+ BOOL bCopyDone;
+ USHORT nCancelPos;
+
+#ifdef _TPUSRLST_CXX
+private:
+ void Init ();
+ USHORT UpdateUserListBox ();
+ void UpdateEntries ( USHORT nList );
+ void MakeListStr ( String& rListStr );
+ void AddNewList ( const String& rEntriesStr );
+ void RemoveList ( USHORT nList );
+ void ModifyList ( USHORT nSelList,
+ const String& rEntriesStr );
+ void CopyListFromArea ( const ScRefTripel& rStartPos,
+ const ScRefTripel& rEndPos );
+
+ // Handler:
+ DECL_LINK( LbSelectHdl, ListBox* );
+ DECL_LINK( BtnClickHdl, PushButton* );
+ DECL_LINK( EdEntriesModHdl, MultiLineEdit* );
+#endif
+};
+
+
+
+#endif // SC_TPUSRLST_HXX
+
diff --git a/sc/source/ui/inc/tpview.hxx b/sc/source/ui/inc/tpview.hxx
new file mode 100644
index 000000000000..3617c7341f26
--- /dev/null
+++ b/sc/source/ui/inc/tpview.hxx
@@ -0,0 +1,215 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpview.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_TPVIEW_HXX
+#define SC_TPVIEW_HXX
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _CTRLBOX_HXX //autogen
+#include <svtools/ctrlbox.hxx>
+#endif
+
+#ifndef _SVX_STRARRAY_HXX //autogen
+#include <svx/strarray.hxx>
+#endif
+
+//========================================================================
+// View-Optionen:
+
+class ScViewOptions;
+
+//========================================================================
+// TabPage Inhalte
+
+class ScTpContentOptions : public SfxTabPage
+{
+ GroupBox aDisplayGB;
+ CheckBox aFormulaCB;
+ CheckBox aNilCB;
+ CheckBox aAnnotCB;
+ CheckBox aValueCB;
+ CheckBox aAnchorCB;
+ CheckBox aClipMarkCB;
+
+ GroupBox aObjectGB;
+ FixedText aObjGrfFT;
+ ListBox aObjGrfLB;
+ FixedText aDiagramFT;
+ ListBox aDiagramLB;
+ FixedText aDrawFT;
+ ListBox aDrawLB;
+
+ ScViewOptions* pLocalOptions;
+
+ DECL_LINK( SelLbObjHdl, ListBox* );
+ DECL_LINK( CBHdl, CheckBox* );
+
+ ScTpContentOptions( Window* pParent,
+ const SfxItemSet& rArgSet );
+ ~ScTpContentOptions();
+
+public:
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rCoreSet );
+ virtual BOOL FillItemSet ( SfxItemSet& rCoreSet );
+ virtual void Reset ( const SfxItemSet& rCoreSet );
+ virtual void ActivatePage( const SfxItemSet& );
+ virtual int DeactivatePage( SfxItemSet* pSet = 0 );
+
+
+};
+
+//========================================================================
+// TabPage Layout
+
+class ScTpLayoutOptions : public SfxTabPage
+{
+ GroupBox aLinesGB;
+ CheckBox aGridCB;
+ FixedText aColorFT;
+ ColorListBox aColorLB;
+ CheckBox aBreakCB;
+ CheckBox aGuideLineCB;
+ CheckBox aHandleCB;
+ CheckBox aBigHandleCB;
+
+ GroupBox aWindowGB;
+ CheckBox aRowColHeaderCB;
+ CheckBox aHScrollCB;
+ CheckBox aVScrollCB;
+ CheckBox aTblRegCB;
+ CheckBox aOutlineCB;
+
+ GroupBox aUnitGB;
+ ListBox aUnitLB;
+
+ GroupBox aTabGB;
+ MetricField aTabMF;
+
+ SvxStringArray aUnitArr;
+ ScViewOptions* pLocalOptions;
+
+ void InitGridOpt();
+ DECL_LINK( GridHdl, CheckBox* );
+ DECL_LINK( CBHdl, CheckBox* );
+ DECL_LINK(MetricHdl, ListBox*);
+
+ ScTpLayoutOptions( Window* pParent,
+ const SfxItemSet& rArgSet );
+ ~ScTpLayoutOptions();
+
+public:
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rCoreSet );
+ virtual BOOL FillItemSet ( SfxItemSet& rCoreSet );
+ virtual void Reset ( const SfxItemSet& rCoreSet );
+ virtual void ActivatePage( const SfxItemSet& );
+ virtual int DeactivatePage( SfxItemSet* pSet = 0 );
+
+
+};
+//========================================================================
+// TabPage Eingabe
+
+class ScTpInputOptions : public SfxTabPage
+{
+ GroupBox aOptionsGB;
+ CheckBox aAlignCB;
+ ListBox aAlignLB;
+ CheckBox aEditModeCB;
+ CheckBox aFormatCB;
+ CheckBox aRangeFindCB;
+ CheckBox aExpRefCB;
+ CheckBox aMarkHdrCB;
+
+ DECL_LINK( AlignHdl, CheckBox* );
+
+ ScTpInputOptions( Window* pParent,
+ const SfxItemSet& rArgSet );
+ ~ScTpInputOptions();
+
+public:
+ static SfxTabPage* Create ( Window* pParent,
+ const SfxItemSet& rCoreSet );
+ virtual BOOL FillItemSet ( SfxItemSet& rCoreSet );
+ virtual void Reset ( const SfxItemSet& rCoreSet );
+
+};
+
+
+
+#endif // SC_TPUSRLST_HXX
+
diff --git a/sc/source/ui/inc/ui_pch.hxx b/sc/source/ui/inc/ui_pch.hxx
new file mode 100644
index 000000000000..e59451874d89
--- /dev/null
+++ b/sc/source/ui/inc/ui_pch.hxx
@@ -0,0 +1,406 @@
+/*************************************************************************
+ *
+ * $RCSfile: ui_pch.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// ItemID-Defines etc. muessen immer ganz vorne stehen
+
+#include "scitems.hxx"
+#include "eetext.hxx"
+
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#define _ZFORLIST_DECLARE_TABLE
+
+#define _PRINTFUN_CXX
+#define _INPUTHDL_CXX
+
+// ab hier automatisch per makepch generiert
+// folgende duerfen nicht aufgenommen werden:
+// scslots.hxx
+
+#include <tools/solar.h>
+#include <tools/string.hxx>
+#include <svtools/solar.hrc>
+#include <tools/rtti.hxx>
+#include <string.h>
+#include <tools/contnr.hxx>
+#include <vcl/sv.h>
+#include <tools/ref.hxx>
+#include <tools/list.hxx>
+#include <tools/link.hxx>
+#include <tools/lang.hxx>
+#include <sfx2/sfx.hrc>
+#include <svtools/memberid.hrc>
+#include <sfx2/sfxsids.hrc>
+#include <svtools/cntwids.hrc>
+#include <vcl/resid.hxx>
+#include <tools/resid.hxx>
+#include <vcl/rc.hxx>
+#include <tools/rc.hxx>
+#include <tools/resmgr.hxx>
+#include <tools/gen.hxx>
+#include <tools/fract.hxx>
+#include <tools/date.hxx>
+#include <tools/time.hxx>
+#include <vcl/keycod.hxx>
+#include <vcl/keycodes.hxx>
+#include <tools/globname.hxx>
+#include <vcl/color.hxx>
+#include <vcl/region.hxx>
+#include <vcl/mapmod.hxx>
+#include <vcl/bitmap.hxx>
+#include <sot/sotref.hxx>
+#include <svx/svxids.hrc>
+#include <vcl/fonttype.hxx>
+#include <sot/object.hxx>
+#include <sot/sotdata.hxx>
+#include <sot/factory.hxx>
+#include <tools/ownlist.hxx>
+#include <vcl/font.hxx>
+#include <vcl/wall.hxx>
+#include <vcl/settings.hxx>
+#include <tools/intn.hxx>
+#include <vcl/accel.hxx>
+#include <vcl/gdiobj.hxx>
+#include <vcl/outdev.hxx>
+#include <vcl/pointr.hxx>
+#include <vcl/ptrstyle.hxx>
+#include <vcl/wintypes.hxx>
+#include <vcl/event.hxx>
+#include <sot/dtrans.hxx>
+#include <limits.h>
+#include <tools/errinf.hxx>
+#include <tools/errcode.hxx>
+#include <tools/stream.hxx>
+#include <vcl/color.hxx>
+#include <vcl/window.hxx>
+#include <global.hxx>
+#include <vcl/syswin.hxx>
+#include <tools/debug.hxx>
+#include <svtools/svarray.hxx>
+#include <vcl/ctrl.hxx>
+#include <svtools/hint.hxx>
+#include <svtools/poolitem.hxx>
+#include <svtools/args.hxx>
+#include <vcl/image.hxx>
+#include <vcl/timer.hxx>
+#include <tools/unqidx.hxx>
+#include <vcl/symbol.hxx>
+#include <vcl/fixed.hxx>
+#include <svtools/brdcst.hxx>
+#include <vcl/timer.hxx>
+#include <sc.hrc>
+#include <stdarg.h>
+#include <svx/dialogs.hrc>
+#include <svtools/sbxdef.hxx>
+#include <svtools/lstner.hxx>
+#include <sfx2/shell.hxx>
+#include <vcl/window.hxx>
+#include <vcl/group.hxx>
+#include <tools/unqid.hxx>
+#include <tools/table.hxx>
+#include <svtools/itemset.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/button.hxx>
+#include <rangelst.hxx>
+#include <vcl/edit.hxx>
+#include <vcl/combobox.h>
+#include <tools/shl.hxx>
+#include <vcl/field.hxx>
+#include <vcl/spinfld.hxx>
+#include <vcl/combobox.hxx>
+#include <tools/pstm.hxx>
+#include <svtools/eitem.hxx>
+#include <svtools/itempool.hxx>
+#include <so3/iface.hxx>
+#include <so3/factory.hxx>
+#include <so3/so2ref.hxx>
+#include <so3/so2dll.hxx>
+#include <sfx2/tabdlg.hxx>
+#include <vcl/tabdlg.hxx>
+#include <vcl/tabpage.hxx>
+#include <vcl/tabctrl.hxx>
+#include <shellids.hxx>
+#include <vcl/event.hxx>
+#include <so3/advise.hxx>
+#include <so3/dtrans.hxx>
+#include <so3/protocol.hxx>
+#include <svtools/intitem.hxx>
+#include <so3/ipclient.hxx>
+#include <so3/client.hxx>
+#include <sfx2/cfgitem.hxx>
+#include <svtools/confitem.hxx>
+#include <markdata.hxx>
+#include <svx/optgrid.hxx>
+#include <vcl/apptypes.hxx>
+#include <viewopti.hxx>
+#include <viewdata.hxx>
+#include <vcl/resid.hxx>
+#include <sfx2/viewsh.hxx>
+#include <sfx2/clientsh.hxx>
+#include <document.hxx>
+#include <vcl/prntypes.hxx>
+#include <table.hxx>
+#include <column.hxx>
+#include <markarr.hxx>
+#include <vcl/mapmod.hxx>
+#include <svtools/undo.hxx>
+#include <vcl/seleng.hxx>
+#include <rsc/rscsfx.hxx>
+#include <svx/zoomitem.hxx>
+#include <vcl/scrbar.hxx>
+#include <viewutil.hxx>
+#include <vcl/svapp.hxx>
+#include <tools/datetime.hxx>
+#include <tabview.hxx>
+#include <select.hxx>
+#include <sfx2/imgdef.hxx>
+#include <viewfunc.hxx>
+#include <sfx2/module.hxx>
+#include <dbfunc.hxx>
+#include <vcl/accel.hxx>
+#include <svtools/smplhint.hxx>
+#include <sfx2/viewfac.hxx>
+#include <sot/storage.hxx>
+#include <sfx2/objsh.hxx>
+#include <so3/so2defs.hxx>
+#include <so3/persist.hxx>
+#include <target.hxx>
+#include <tabvwsh.hxx>
+#include <svtools/inethist.hxx>
+#include <svtools/inetdef.hxx>
+#include <sfx2/sfxdefs.hxx>
+#include <svtools/cancel.hxx>
+#include <svtools/compat.hxx>
+#include <svtools/inetmsg.hxx>
+#include <sfx2/app.hxx>
+#include <tools/urlobj.hxx>
+#include <scdll.hxx>
+#include <sfx2/msg.hxx>
+#include <svtools/ownlist.hxx>
+#include <so3/persist.hxx>
+#include <so3/pseudo.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/frame.hxx>
+#include <so3/ipobj.hxx>
+#include <so3/embobj.hxx>
+#include <so3/ipobj.hxx>
+#include <scresid.hxx>
+#include <sfx2/ipfrm.hxx>
+#include <so3/factory.hxx>
+#include <docsh.hxx>
+#include <sfx2/interno.hxx>
+#include <vcl/wintypes.hxx>
+#include <sfx2/docfac.hxx>
+#include <scitems.hxx>
+#include <vcl/virdev.hxx>
+#include <globstr.hrc>
+#include <segmentc.hxx>
+#include <tcov.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/gdimtf.hxx>
+#include <vcl/lstbox.h>
+#include <sfx2/minarray.hxx>
+#include <sfx2/bindings.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/pointr.hxx>
+#include <vcl/prntypes.hxx>
+#include <vcl/jobset.hxx>
+#include <svx/svdtypes.hxx>
+#include <vcl/btndlg.hxx>
+#include <vcl/svapp.hxx>
+#include <svtools/svstdarr.hxx>
+#include <vcl/edit.hxx>
+#include <svtools/stritem.hxx>
+#include <collect.hxx>
+#include <svx/svdsob.hxx>
+#include <vcl/imagebtn.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdglue.hxx>
+#include <svx/svdlayer.hxx>
+#include <vcl/msgbox.hxx>
+#include <svx/svdmrkv.hxx>
+#include <svx/svdmark.hxx>
+#include <svx/svdhdl.hxx>
+#include <svx/svdsnpv.hxx>
+#include <svx/svdpntv.hxx>
+#include <svx/svddrag.hxx>
+#include <svx/svdhlpln.hxx>
+#include <scmod.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/iniman.hxx>
+#include <sfx2/inimgr.hxx>
+#include <vcl/field.hxx>
+#include <svx/svdview.hxx>
+#include <svx/svdcrtv.hxx>
+#include <vcl/print.hxx>
+#include <vcl/floatwin.hxx>
+#include <vcl/wrkwin.hxx>
+#include <vcl/system.hxx>
+#include <sfx2/childwin.hxx>
+#include <sfx2/chalign.hxx>
+#include <sfx2/dispatch.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/animate.hxx>
+#include <vcl/graph.h>
+#include <svx/editdata.hxx>
+#include <svtools/stdctrl.hxx>
+#include <sfx2/basedlgs.hxx>
+#include <conditio.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/print.hxx>
+#include <uiitems.hxx>
+#include <svx/svdmodel.hxx>
+#include <vcl/gdiobj.hxx>
+#include <svx/editeng.hxx>
+#include <svx/pageitem.hxx>
+#include <anyrefdg.hxx>
+#include <svtools/sbxcore.hxx>
+#include <vcl/ctrl.hxx>
+#include <svx/xenum.hxx>
+#include <dbcolect.hxx>
+#include <sot/exchange.hxx>
+#include <math.h>
+#include <vcl/wrkwin.hxx>
+#include <svtools/sbxvar.hxx>
+#include <vcl/image.hxx>
+#include <svx/xdef.hxx>
+#include <drwlayer.hxx>
+#include <editutil.hxx>
+#include <svx/xit.hxx>
+#include <svx/xcolit.hxx>
+#include <attrib.hxx>
+#include <patattr.hxx>
+#include <svx/xfillit0.hxx>
+#include <svx/xlineit0.hxx>
+#include <svx/xflasit.hxx>
+#include <svx/xlnasit.hxx>
+#include <svx/svdattr.hxx>
+#include <svx/sdangitm.hxx>
+#include <svx/sderitm.hxx>
+#include <svx/sdmetitm.hxx>
+#include <svx/svddef.hxx>
+#include <svx/sdmsitm.hxx>
+#include <svx/sdolsitm.hxx>
+#include <svx/sdooitm.hxx>
+#include <svx/sdprcitm.hxx>
+#include <svx/sdshcitm.hxx>
+#include <svx/sdshitm.hxx>
+#include <svx/sdshsitm.hxx>
+#include <svx/sdshtitm.hxx>
+#include <svx/sdsxyitm.hxx>
+#include <svx/sdtaaitm.hxx>
+#include <svx/sdtacitm.hxx>
+#include <svx/sdtaditm.hxx>
+#include <svx/sdtagitm.hxx>
+#include <svx/sdtaiitm.hxx>
+#include <svx/sdynitm.hxx>
+#include <svx/sdtaitm.hxx>
+#include <svx/sdtakitm.hxx>
+#include <svx/sdtayitm.hxx>
+#include <svx/sdtcfitm.hxx>
+#include <svx/sdtditm.hxx>
+#include <svx/sdtfsitm.hxx>
+#include <svx/sdtmfitm.hxx>
+#include <vcl/poly.hxx>
+#include <vcl/gdimtf.hxx>
+#include <cell.hxx>
+#include <stddef.h>
+#include <tools/mempool.hxx>
+#include <svtools/style.hrc>
+#include <drawview.hxx>
+#include <svx/view3d.hxx>
+#include <svx/def3d.hxx>
+#include <goodies/vector3d.hxx>
+#include <vcl/floatwin.hxx>
+#include <svtools/sbxobj.hxx>
+#include <svx/svxenum.hxx>
+#include <svx/xtextit0.hxx>
+#include <svx/svdtrans.hxx>
+#include <svx/xtxasit.hxx>
+#include <svtools/style.hxx>
+#include <reffact.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdoattr.hxx>
+#include <tools/wldcrd.hxx>
+#include <rangenam.hxx>
+#include <undobase.hxx>
+#include <vcl/dockwin.hxx>
+#include <vcl/virdev.hxx>
+#include <so3/so2defs.hxx>
+#include <so3/svstor.hxx>
+#include <rangeutl.hxx>
+#include <vcl/toolbox.hxx>
+#include <fupoor.hxx>
+#include <docpool.hxx>
+#include <vcl/button.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/svdorect.hxx>
+#include <svtools/whiter.hxx>
+#include <stlpool.hxx>
+#include <svx/eeitem.hxx>
+#include <inputhdl.hxx>
+#include <svx/svdpage.hxx>
+
+
+
+
diff --git a/sc/source/ui/inc/uiitems.hxx b/sc/source/ui/inc/uiitems.hxx
new file mode 100644
index 000000000000..89d3cb1df1ca
--- /dev/null
+++ b/sc/source/ui/inc/uiitems.hxx
@@ -0,0 +1,408 @@
+/*************************************************************************
+ *
+ * $RCSfile: uiitems.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UIITEMS_HXX
+#define SC_UIITEMS_HXX
+
+#ifndef SC_CONDITIO_HXX
+#include "conditio.hxx"
+#endif
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+class ScEditEngineDefaulter;
+class EditTextObject;
+class ScViewData;
+class ScDPSaveData;
+
+// ---------------------------------------------------------------------------
+
+// Items
+
+class ScInputStatusItem : public SfxPoolItem
+{
+ ScAddress aCursorPos;
+ ScAddress aStartPos;
+ ScAddress aEndPos;
+ String aString;
+ EditTextObject* pEditData;
+
+public:
+ TYPEINFO();
+ ScInputStatusItem( USHORT nWhich,
+ USHORT nTab,
+ USHORT nCol, USHORT nRow,
+ USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nSEndRow,
+ const String& rString,
+ const EditTextObject* pData );
+ ScInputStatusItem( USHORT nWhich,
+ const ScAddress& rCurPos,
+ const ScAddress& rStartPos,
+ const ScAddress& rEndPos,
+ const String& rString,
+ const EditTextObject* pData );
+ ScInputStatusItem( const ScInputStatusItem& rItem );
+ ~ScInputStatusItem();
+
+ virtual String GetValueText() const;
+
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ const ScAddress& GetPos() const { return aCursorPos; }
+ const ScAddress& GetStartPos() const { return aStartPos; }
+ const ScAddress& GetEndPos() const { return aEndPos; }
+ USHORT GetTab() const { return aCursorPos.Tab(); }
+ USHORT GetCol() const { return aCursorPos.Col(); }
+ USHORT GetRow() const { return aCursorPos.Row(); }
+ USHORT GetStartCol() const { return aStartPos.Col(); }
+ USHORT GetStartRow() const { return aStartPos.Row(); }
+ USHORT GetEndCol() const { return aEndPos.Col(); }
+ USHORT GetEndRow() const { return aEndPos.Row(); }
+
+ const String& GetString() const { return aString; }
+ const EditTextObject* GetEditData() const { return pEditData; }
+};
+
+
+#define SC_TAB_INSERTED 1
+#define SC_TAB_DELETED 2
+#define SC_TAB_MOVED 3
+#define SC_TAB_COPIED 4
+#define SC_TAB_HIDDEN 5
+
+class ScTablesHint : public SfxHint
+{
+ USHORT nId;
+ USHORT nTab1;
+ USHORT nTab2;
+
+public:
+ TYPEINFO();
+ ScTablesHint(USHORT nNewId, USHORT nTable1, USHORT nTable2=0);
+ ~ScTablesHint();
+
+ USHORT GetId() const { return nId; }
+ USHORT GetTab1() const { return nTab1; }
+ USHORT GetTab2() const { return nTab2; }
+};
+
+class ScEditViewHint : public SfxHint
+{
+ ScEditEngineDefaulter* pEditEngine;
+ ScAddress aCursorPos;
+
+public:
+ TYPEINFO();
+ ScEditViewHint();
+ ScEditViewHint( ScEditEngineDefaulter* pEngine, const ScAddress& rCurPos );
+ ~ScEditViewHint();
+
+ USHORT GetCol() const { return aCursorPos.Col(); }
+ USHORT GetRow() const { return aCursorPos.Row(); }
+ USHORT GetTab() const { return aCursorPos.Tab(); }
+ ScEditEngineDefaulter* GetEngine() const { return pEditEngine; }
+};
+
+class ScIndexHint : public SfxHint
+{
+ USHORT nId;
+ USHORT nIndex;
+
+public:
+ TYPEINFO();
+ ScIndexHint(USHORT nNewId, USHORT nIdx);
+ ~ScIndexHint();
+
+ USHORT GetId() const { return nId; }
+ USHORT GetIndex() const { return nIndex; }
+};
+
+//----------------------------------------------------------------------------
+// Parameter-Item fuer den Sortierdialog:
+
+class ScSortItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScSortItem( USHORT nWhich,
+ ScViewData* ptrViewData,
+ const ScSortParam* pSortData );
+ ScSortItem( USHORT nWhich,
+ const ScSortParam* pSortData );
+ ScSortItem( const ScSortItem& rItem );
+ ~ScSortItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ ScViewData* GetViewData () const { return pViewData; }
+ const ScSortParam& GetSortData () const { return theSortData; }
+
+private:
+ ScViewData* pViewData;
+ ScSortParam theSortData;
+};
+
+//----------------------------------------------------------------------------
+// Parameter-Item fuer den Filterdialog:
+
+class ScQueryItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScQueryItem( USHORT nWhich,
+ ScViewData* ptrViewData,
+ const ScQueryParam* pQueryData );
+ ScQueryItem( USHORT nWhich,
+ const ScQueryParam* pQueryData );
+ ScQueryItem( const ScQueryItem& rItem );
+ ~ScQueryItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ ScViewData* GetViewData () const { return pViewData; }
+ const ScQueryParam& GetQueryData() const { return theQueryData; }
+
+ BOOL GetAdvancedQuerySource(ScRange& rSource) const;
+ void SetAdvancedQuerySource(const ScRange* pSource);
+
+private:
+ ScViewData* pViewData;
+ ScQueryParam theQueryData;
+ BOOL bIsAdvanced;
+ ScRange aAdvSource;
+};
+
+//----------------------------------------------------------------------------
+// Parameter-Item fuer den Zwischenergebnisdialog:
+
+class ScSubTotalItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScSubTotalItem( USHORT nWhich,
+ ScViewData* ptrViewData,
+ const ScSubTotalParam* pSubTotalData );
+ ScSubTotalItem( USHORT nWhich,
+ const ScSubTotalParam* pSubTotalData );
+ ScSubTotalItem( const ScSubTotalItem& rItem );
+ ~ScSubTotalItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ ScViewData* GetViewData () const { return pViewData; }
+ const ScSubTotalParam& GetSubTotalData() const { return theSubTotalData; }
+
+private:
+ ScViewData* pViewData;
+ ScSubTotalParam theSubTotalData;
+};
+
+//----------------------------------------------------------------------------
+// Parameter-Item fuer die Benutzerlisten-TabPage:
+
+class ScUserListItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScUserListItem( USHORT nWhich );
+ ScUserListItem( const ScUserListItem& rItem );
+ ~ScUserListItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ void SetUserList ( const ScUserList& rUserList );
+ ScUserList* GetUserList () const { return pUserList; }
+
+private:
+ ScUserList* pUserList;
+};
+
+//----------------------------------------------------------------------------
+// Parameter-Item fuer die Konsolidieren-Dialog
+
+class ScConsolidateItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScConsolidateItem( USHORT nWhich,
+ const ScConsolidateParam* pParam );
+ ScConsolidateItem( const ScConsolidateItem& rItem );
+ ~ScConsolidateItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ const ScConsolidateParam& GetData() const { return theConsData; }
+
+private:
+ ScConsolidateParam theConsData;
+};
+
+//----------------------------------------------------------------------------
+// Parameter-Item fuer den Pivot-Dialog
+
+class ScPivotItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScPivotItem( USHORT nWhich, const ScDPSaveData* pData,
+ const ScRange* pRange, BOOL bNew );
+ ScPivotItem( const ScPivotItem& rItem );
+ ~ScPivotItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ const ScDPSaveData& GetData() const { return *pSaveData; }
+ const ScRange& GetDestRange() const { return aDestRange; }
+ BOOL IsNewSheet() const { return bNewSheet; }
+
+private:
+ ScDPSaveData* pSaveData;
+ ScRange aDestRange;
+ BOOL bNewSheet;
+};
+
+//----------------------------------------------------------------------------
+// Parameter-Item fuer den Solver-Dialog
+
+class ScSolveItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScSolveItem( USHORT nWhich,
+ const ScSolveParam* pParam );
+ ScSolveItem( const ScSolveItem& rItem );
+ ~ScSolveItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ const ScSolveParam& GetData() const { return theSolveData; }
+
+private:
+ ScSolveParam theSolveData;
+};
+
+//----------------------------------------------------------------------------
+// Parameter-Item fuer den Mehrfachoperationen-Dialog
+
+class ScTabOpItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScTabOpItem( USHORT nWhich,
+ const ScTabOpParam* pParam );
+ ScTabOpItem( const ScTabOpItem& rItem );
+ ~ScTabOpItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ const ScTabOpParam& GetData() const { return theTabOpData; }
+
+private:
+ ScTabOpParam theTabOpData;
+};
+
+//----------------------------------------------------------------------------
+// Parameter-Item fuer den Dialog bedingte Formatierung
+
+class ScCondFrmtItem : public SfxPoolItem
+{
+public:
+ TYPEINFO();
+ ScCondFrmtItem( USHORT nWhich,
+//! const ScConditionalFormat* pCondFrmt );
+ const ScConditionalFormat& rCondFrmt );
+ ScCondFrmtItem( const ScCondFrmtItem& rItem );
+ ~ScCondFrmtItem();
+
+ virtual String GetValueText() const;
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+
+ const ScConditionalFormat& GetData() const { return theCondFrmtData; }
+
+private:
+ ScConditionalFormat theCondFrmtData;
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/undobase.hxx b/sc/source/ui/inc/undobase.hxx
new file mode 100644
index 000000000000..51230aab91dc
--- /dev/null
+++ b/sc/source/ui/inc/undobase.hxx
@@ -0,0 +1,159 @@
+/*************************************************************************
+ *
+ * $RCSfile: undobase.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNDOBASE_HXX
+#define SC_UNDOBASE_HXX
+
+#ifndef _UNDO_HXX //autogen
+#include <svtools/undo.hxx>
+#endif
+
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+
+class ScDocument;
+class ScDocShell;
+class SdrUndoAction;
+class ScRefUndoData;
+
+//----------------------------------------------------------------------------
+
+class ScSimpleUndo: public SfxUndoAction
+{
+public:
+ TYPEINFO();
+ ScSimpleUndo( ScDocShell* pDocSh );
+ virtual ~ScSimpleUndo();
+
+ virtual BOOL Merge( SfxUndoAction *pNextAction );
+
+protected:
+ ScDocShell* pDocShell;
+ SfxUndoAction* pDetectiveUndo;
+
+ void BeginUndo();
+ void EndUndo();
+ void BeginRedo();
+ void EndRedo();
+
+ static void ShowTable( USHORT nTab );
+ static void ShowTable( const ScRange& rRange );
+};
+
+//----------------------------------------------------------------------------
+
+enum ScBlockUndoMode { SC_UNDO_SIMPLE, SC_UNDO_MANUALHEIGHT, SC_UNDO_AUTOHEIGHT };
+
+class ScBlockUndo: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScBlockUndo( ScDocShell* pDocSh, const ScRange& rRange,
+ ScBlockUndoMode eBlockMode );
+ virtual ~ScBlockUndo();
+
+protected:
+ ScRange aBlockRange;
+ SdrUndoAction* pDrawUndo;
+ ScBlockUndoMode eMode;
+
+ void BeginUndo();
+ void EndUndo();
+// void BeginRedo();
+ void EndRedo();
+
+ BOOL AdjustHeight();
+ void ShowBlock();
+};
+
+//----------------------------------------------------------------------------
+
+enum ScMoveUndoMode { SC_UNDO_REFFIRST, SC_UNDO_REFLAST };
+
+class ScMoveUndo: public ScSimpleUndo // mit Referenzen
+{
+public:
+ TYPEINFO();
+ ScMoveUndo( ScDocShell* pDocSh,
+ ScDocument* pRefDoc, ScRefUndoData* pRefData,
+ ScMoveUndoMode eRefMode );
+ virtual ~ScMoveUndo();
+
+protected:
+ SdrUndoAction* pDrawUndo;
+ ScDocument* pRefUndoDoc;
+ ScRefUndoData* pRefUndoData;
+ ScMoveUndoMode eMode;
+
+ void BeginUndo();
+ void EndUndo();
+// void BeginRedo();
+// void EndRedo();
+
+private:
+ void UndoRef();
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/undoblk.hxx b/sc/source/ui/inc/undoblk.hxx
new file mode 100644
index 000000000000..9738a45944dc
--- /dev/null
+++ b/sc/source/ui/inc/undoblk.hxx
@@ -0,0 +1,933 @@
+/*************************************************************************
+ *
+ * $RCSfile: undoblk.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNDOBLK_HXX
+#define SC_UNDOBLK_HXX
+
+#ifndef SC_UNDOBASE_HXX
+#include "undobase.hxx"
+#endif
+#ifndef SC_MARKDATA_HXX
+#include "markdata.hxx"
+#endif
+
+class ScDocShell;
+class ScDocument;
+class ScOutlineTable;
+class ScRangeName;
+class ScRangeList;
+class ScDBCollection;
+class ScPatternAttr;
+class SvxBoxItem;
+class SvxBoxInfoItem;
+class SvxSearchItem;
+class SdrUndoAction;
+
+//----------------------------------------------------------------------------
+
+class ScUndoInsertCells: public ScMoveUndo
+{
+public:
+ TYPEINFO();
+ ScUndoInsertCells( ScDocShell* pNewDocShell,
+ const ScRange& rRange, InsCellCmd eNewCmd,
+ ScDocument* pUndoDocument, ScRefUndoData* pRefData );
+ virtual ~ScUndoInsertCells();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat( SfxRepeatTarget& rTarget );
+ virtual BOOL CanRepeat( SfxRepeatTarget& rTarget ) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRange aEffRange;
+ ULONG nEndChangeAction;
+ InsCellCmd eCmd;
+
+ void DoChange ( const BOOL bUndo );
+ void SetChangeTrack();
+};
+
+
+class ScUndoDeleteCells: public ScMoveUndo
+{
+public:
+ TYPEINFO();
+ ScUndoDeleteCells( ScDocShell* pNewDocShell,
+ const ScRange& rRange, DelCellCmd eNewCmd,
+ ScDocument* pUndoDocument, ScRefUndoData* pRefData );
+ virtual ~ScUndoDeleteCells();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRange aEffRange;
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+ DelCellCmd eCmd;
+
+ void DoChange ( const BOOL bUndo );
+ void SetChangeTrack();
+};
+
+
+class ScUndoDeleteMulti: public ScMoveUndo
+{
+public:
+ TYPEINFO();
+ ScUndoDeleteMulti( ScDocShell* pNewDocShell,
+ BOOL bNewRows, USHORT nNewTab,
+ const USHORT* pRng, USHORT nRngCnt,
+ ScDocument* pUndoDocument, ScRefUndoData* pRefData );
+ virtual ~ScUndoDeleteMulti();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ BOOL bRows;
+ USHORT nTab;
+ USHORT* pRanges;
+ USHORT nRangeCnt;
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+
+ void DoChange() const;
+ void SetChangeTrack();
+};
+
+
+class ScUndoCut: public ScBlockUndo
+{
+public:
+ TYPEINFO();
+ ScUndoCut( ScDocShell* pNewDocShell,
+ ScRange aRange, // incl. Merge
+ ScAddress aOldEnd, // Ende ohne Merge
+ ScDocument* pNewUndoDoc );
+ virtual ~ScUndoCut();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScDocument* pUndoDoc;
+ ScRange aExtendedRange;
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+
+ void DoChange( const BOOL bUndo );
+ void SetChangeTrack();
+};
+
+
+class ScUndoPaste: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoPaste( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ const ScMarkData& rMark,
+ ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc,
+ USHORT nNewFlags,
+ ScRangeName* pNewUndoRange, ScRangeName* pNewRedoRange,
+ ScDBCollection* pNewUndoDB, ScDBCollection* pNewRedoDB,
+ BOOL bRedoIsFilled = TRUE );
+ virtual ~ScUndoPaste();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRange aRange;
+ ScMarkData aMarkData;
+ ScDocument* pUndoDoc;
+ ScDocument* pRedoDoc;
+ USHORT nFlags;
+ ScRangeName* pUndoRange;
+ ScRangeName* pRedoRange;
+ ScDBCollection* pUndoDB;
+ ScDBCollection* pRedoDB;
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+ BOOL bRedoFilled;
+
+ void DoChange( const BOOL bUndo );
+ void SetChangeTrack();
+};
+
+
+class ScUndoDragDrop: public ScMoveUndo
+{
+public:
+ TYPEINFO();
+ ScUndoDragDrop( ScDocShell* pNewDocShell,
+ const ScRange& rRange, ScAddress aNewDestPos, BOOL bNewCut,
+ ScDocument* pUndoDocument, ScRefUndoData* pRefData,
+ BOOL bScenario );
+ virtual ~ScUndoDragDrop();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRange aSrcRange;
+ ScRange aDestRange;
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+ BOOL bCut;
+ BOOL bKeepScenarioFlags;
+
+ void PaintArea( ScRange aRange ) const;
+ void DoUndo( ScRange aRange ) const;
+
+ void SetChangeTrack();
+};
+
+
+class ScUndoDeleteContents: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoDeleteContents( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ const ScRange& rRange,
+ ScDocument* pNewUndoDoc, BOOL bNewMulti,
+ USHORT nNewFlags, BOOL bObjects );
+ virtual ~ScUndoDeleteContents();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRange aRange;
+ ScMarkData aMarkData;
+ ScDocument* pUndoDoc; // Blockmarkierung und geloeschte Daten
+ SdrUndoAction* pDrawUndo; // geloeschte Objekte
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+ USHORT nFlags;
+ BOOL bMulti; // Mehrfachselektion
+
+ void DoChange( const BOOL bUndo );
+ void SetChangeTrack();
+};
+
+
+class ScUndoFillTable: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoFillTable( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc, BOOL bNewMulti, USHORT nSrc,
+ USHORT nFlg, USHORT nFunc, BOOL bSkip, BOOL bLink );
+ virtual ~ScUndoFillTable();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRange aRange;
+ ScMarkData aMarkData;
+ ScDocument* pUndoDoc; // Blockmarkierung und geloeschte Daten
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+ USHORT nFlags;
+ USHORT nFunction;
+ USHORT nSrcTab;
+ BOOL bMulti; // Mehrfachselektion
+ BOOL bSkipEmpty;
+ BOOL bAsLink;
+
+ void DoChange( const BOOL bUndo );
+ void SetChangeTrack();
+};
+
+
+class ScUndoSelectionAttr: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoSelectionAttr( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc, BOOL bNewMulti,
+ const ScPatternAttr* pNewApply,
+ const SvxBoxItem* pNewOuter = NULL,
+ const SvxBoxInfoItem* pNewInner = NULL );
+ virtual ~ScUndoSelectionAttr();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScMarkData aMarkData;
+ ScRange aRange;
+ ScDocument* pUndoDoc;
+ BOOL bMulti;
+ ScPatternAttr* pApplyPattern;
+ SvxBoxItem* pLineOuter;
+ SvxBoxInfoItem* pLineInner;
+
+ void DoChange( const BOOL bUndo );
+};
+
+
+class ScUndoWidthOrHeight: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoWidthOrHeight( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ USHORT nNewStart, USHORT nNewStartTab,
+ USHORT nNewEnd, USHORT nNewEndTab,
+ ScDocument* pNewUndoDoc,
+ USHORT nNewCnt, USHORT* pNewRanges,
+ ScOutlineTable* pNewUndoTab,
+ ScSizeMode eNewMode, USHORT nNewSizeTwips,
+ BOOL bNewWidth );
+ virtual ~ScUndoWidthOrHeight();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScMarkData aMarkData;
+ USHORT nStart;
+ USHORT nEnd;
+ USHORT nStartTab;
+ USHORT nEndTab;
+ ScDocument* pUndoDoc;
+ ScOutlineTable* pUndoTab;
+ USHORT nRangeCnt;
+ USHORT* pRanges;
+ USHORT nNewSize;
+ BOOL bWidth;
+ ScSizeMode eMode;
+ SdrUndoAction* pDrawUndo;
+};
+
+
+class ScUndoAutoFill: public ScBlockUndo
+{
+public:
+ TYPEINFO();
+ ScUndoAutoFill( ScDocShell* pNewDocShell,
+ const ScRange& rRange, const ScRange& rSourceArea,
+ ScDocument* pNewUndoDoc, const ScMarkData& rMark,
+ FillDir eNewFillDir,
+ FillCmd eNewFillCmd, FillDateCmd eNewFillDateCmd,
+ double fNewStartValue, double fNewStepValue, double fNewMaxValue,
+ USHORT nMaxShIndex );
+ virtual ~ScUndoAutoFill();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRange aSource;
+ ScMarkData aMarkData;
+ ScDocument* pUndoDoc;
+ FillDir eFillDir;
+ FillCmd eFillCmd;
+ FillDateCmd eFillDateCmd;
+ double fStartValue;
+ double fStepValue;
+ double fMaxValue;
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+ USHORT nMaxSharedIndex;
+
+ void SetChangeTrack();
+};
+
+
+class ScUndoMerge: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoMerge( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ BOOL bNewDoMerge, ScDocument* pNewUndoDoc = NULL );
+ virtual ~ScUndoMerge();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRange aRange;
+ BOOL bDoMerge; // Merge oder aufheben
+ ScDocument* pUndoDoc; // wenn Daten zusammengefasst
+
+ void DoChange( const BOOL bUndo ) const;
+};
+
+
+class ScUndoAutoFormat: public ScBlockUndo
+{
+public:
+ TYPEINFO();
+ ScUndoAutoFormat( ScDocShell* pNewDocShell,
+ const ScRange& rRange, ScDocument* pNewUndoDoc,
+ const ScMarkData& rMark,
+ BOOL bNewSize, USHORT nNewFormatNo );
+ virtual ~ScUndoAutoFormat();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScDocument* pUndoDoc; // geloeschte Daten
+ ScMarkData aMarkData;
+ BOOL bSize;
+ USHORT nFormatNo;
+};
+
+
+class ScUndoReplace: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoReplace( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ USHORT nCurX, USHORT nCurY, USHORT nCurZ,
+ const String& rNewUndoStr, ScDocument* pNewUndoDoc,
+ const SvxSearchItem* pItem );
+ virtual ~ScUndoReplace();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScTripel aCursorPos;
+ ScMarkData aMarkData;
+ String aUndoStr; // Daten bei Einfachmarkierung
+ ScDocument* pUndoDoc; // Blockmarkierung und geloeschte Daten
+ SvxSearchItem* pSearchItem;
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+
+ void SetChangeTrack();
+};
+
+
+class ScUndoTabOp: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoTabOp( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc,
+ const ScRefTripel& rFormulaCell,
+ const ScRefTripel& rFormulaEnd,
+ const ScRefTripel& rRowCell,
+ const ScRefTripel& rColCell,
+ BYTE nMode );
+ virtual ~ScUndoTabOp();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRange aRange;
+ ScDocument* pUndoDoc; // geloeschte Daten
+ ScRefTripel theFormulaCell;
+ ScRefTripel theFormulaEnd;
+ ScRefTripel theRowCell;
+ ScRefTripel theColCell;
+ BYTE nMode;
+};
+
+
+class ScUndoSpelling: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoSpelling( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ USHORT nCurX, USHORT nCurY, USHORT nCurZ,
+ ScDocument* pNewUndoDoc,
+ USHORT nNewX, USHORT nNewY, USHORT nNewZ,
+ ScDocument* pNewRedoDoc);
+ virtual ~ScUndoSpelling();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScMarkData aMarkData;
+ ScTripel aCursorPos;
+ ScDocument* pUndoDoc; // Blockmarkierung und geloeschte Daten
+ ScTripel aNewCursorPos;
+ ScDocument* pRedoDoc; // Blockmarkierung und neue Daten
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+
+ void DoChange( ScDocument* pRefDoc, const ScTripel& rCursorPos );
+ void SetChangeTrack();
+};
+
+
+class ScUndoListNames: public ScBlockUndo
+{
+public:
+ TYPEINFO();
+ ScUndoListNames( ScDocShell* pNewDocShell,
+ const ScRange& rRange,
+ ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc );
+ virtual ~ScUndoListNames();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScDocument* pUndoDoc;
+ ScDocument* pRedoDoc;
+
+ void DoChange( ScDocument* pSrcDoc ) const;
+};
+
+
+class ScUndoUseScenario: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoUseScenario( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ const ScArea& rDestArea, ScDocument* pNewUndoDoc,
+ const String& rNewName );
+ virtual ~ScUndoUseScenario();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScDocument* pUndoDoc;
+ ScRange aRange;
+ ScMarkData aMarkData;
+ String aName;
+};
+
+
+class ScUndoSelectionStyle: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoSelectionStyle( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ const ScRange& rRange,
+ const String& rName,
+ ScDocument* pNewUndoDoc );
+ virtual ~ScUndoSelectionStyle();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+ virtual USHORT GetId() const;
+
+private:
+ ScMarkData aMarkData;
+ ScDocument* pUndoDoc;
+ String aStyleName;
+ ScRange aRange;
+
+ void DoChange( const BOOL bUndo );
+};
+
+
+class ScUndoRefreshLink: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoRefreshLink( ScDocShell* pNewDocShell,
+ ScDocument* pNewUndoDoc );
+ virtual ~ScUndoRefreshLink();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScDocument* pUndoDoc;
+ ScDocument* pRedoDoc;
+};
+
+
+class ScUndoEnterMatrix: public ScBlockUndo
+{
+public:
+ TYPEINFO();
+ ScUndoEnterMatrix( ScDocShell* pNewDocShell,
+ const ScRange& rArea,
+ ScDocument* pNewUndoDoc,
+ const String& rForm );
+ virtual ~ScUndoEnterMatrix();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScDocument* pUndoDoc;
+ String aFormula;
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+
+ void SetChangeTrack();
+};
+
+
+class ScUndoInsertAreaLink : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoInsertAreaLink( ScDocShell* pShell,
+ const String& rDoc,
+ const String& rFlt, const String& rOpt,
+ const String& rArea, const ScRange& rDestRange );
+ virtual ~ScUndoInsertAreaLink();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ String aDocName;
+ String aFltName;
+ String aOptions;
+ String aAreaName;
+ ScRange aRange;
+};
+
+
+class ScUndoRemoveAreaLink : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoRemoveAreaLink( ScDocShell* pShell,
+ const String& rDoc,
+ const String& rFlt, const String& rOpt,
+ const String& rArea, const ScRange& rDestRange );
+ virtual ~ScUndoRemoveAreaLink();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ String aDocName;
+ String aFltName;
+ String aOptions;
+ String aAreaName;
+ ScRange aRange;
+};
+
+
+class ScUndoUpdateAreaLink : public ScSimpleUndo //! auch BlockUndo umstellen?
+{
+public:
+ TYPEINFO();
+ ScUndoUpdateAreaLink( ScDocShell* pShell,
+ const String& rOldD,
+ const String& rOldF, const String& rOldO,
+ const String& rOldA, const ScRange& rOldR,
+ const String& rNewD,
+ const String& rNewF, const String& rNewO,
+ const String& rNewA, const ScRange& rNewR,
+ ScDocument* pUndo, ScDocument* pRedo,
+ BOOL bDoInsert );
+ virtual ~ScUndoUpdateAreaLink();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ String aOldDoc;
+ String aOldFlt;
+ String aOldOpt;
+ String aOldArea;
+ ScRange aOldRange;
+ String aNewDoc;
+ String aNewFlt;
+ String aNewOpt;
+ String aNewArea;
+ ScRange aNewRange;
+ ScDocument* pUndoDoc;
+ ScDocument* pRedoDoc;
+ BOOL bWithInsert;
+
+ void DoChange( const BOOL bUndo ) const;
+};
+
+
+class ScUndoIndent: public ScBlockUndo
+{
+public:
+ TYPEINFO();
+ ScUndoIndent( ScDocShell* pNewDocShell, const ScMarkData& rMark,
+ ScDocument* pNewUndoDoc, BOOL bIncrement );
+ virtual ~ScUndoIndent();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScMarkData aMarkData;
+ ScDocument* pUndoDoc;
+ BOOL bIsIncrement;
+};
+
+
+class ScUndoClearItems: public ScBlockUndo
+{
+public:
+ TYPEINFO();
+ ScUndoClearItems( ScDocShell* pNewDocShell, const ScMarkData& rMark,
+ ScDocument* pNewUndoDoc, const USHORT* pW );
+ virtual ~ScUndoClearItems();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScMarkData aMarkData;
+ ScDocument* pUndoDoc;
+ USHORT* pWhich;
+};
+
+
+class ScUndoRemoveBreaks: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoRemoveBreaks( ScDocShell* pNewDocShell,
+ USHORT nNewTab, ScDocument* pNewUndoDoc );
+ virtual ~ScUndoRemoveBreaks();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ ScDocument* pUndoDoc;
+};
+
+
+class ScUndoRemoveMerge: public ScBlockUndo
+{
+public:
+ TYPEINFO();
+ ScUndoRemoveMerge( ScDocShell* pNewDocShell,
+ const ScRange& rArea,
+ ScDocument* pNewUndoDoc );
+ virtual ~ScUndoRemoveMerge();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScDocument* pUndoDoc;
+};
+
+
+class ScUndoBorder: public ScBlockUndo
+{
+public:
+ TYPEINFO();
+ ScUndoBorder( ScDocShell* pNewDocShell,
+ const ScRangeList& rRangeList,
+ ScDocument* pNewUndoDoc,
+ const SvxBoxItem& rNewOuter,
+ const SvxBoxInfoItem& rNewInner );
+ virtual ~ScUndoBorder();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScDocument* pUndoDoc;
+ ScRangeList* pRanges;
+ SvxBoxItem* pOuter;
+ SvxBoxInfoItem* pInner;
+};
+
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/undocell.hxx b/sc/source/ui/inc/undocell.hxx
new file mode 100644
index 000000000000..4b1ba3d524b0
--- /dev/null
+++ b/sc/source/ui/inc/undocell.hxx
@@ -0,0 +1,381 @@
+/*************************************************************************
+ *
+ * $RCSfile: undocell.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNDOCELL_HXX
+#define SC_UNDOCELL_HXX
+
+#ifndef SC_UNDOBASE_HXX
+#include "undobase.hxx"
+#endif
+
+class ScDocShell;
+class ScBaseCell;
+class ScPatternAttr;
+class EditTextObject;
+class SdrUndoAction;
+class ScDetOpList;
+class ScDetOpData;
+class ScRangeName;
+
+//----------------------------------------------------------------------------
+
+class ScUndoCursorAttr: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoCursorAttr( ScDocShell* pNewDocShell,
+ USHORT nNewCol, USHORT nNewRow, USHORT nNewTab,
+ const ScPatternAttr* pOldPat, const ScPatternAttr* pNewPat,
+ const ScPatternAttr* pApplyPat, BOOL bAutomatic );
+ virtual ~ScUndoCursorAttr();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTab;
+ ScPatternAttr* pOldPattern;
+ ScPatternAttr* pNewPattern;
+ ScPatternAttr* pApplyPattern;
+ BOOL bIsAutomatic;
+
+ void DoChange( const ScPatternAttr* pWhichPattern ) const;
+};
+
+
+class ScUndoEnterData: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoEnterData( ScDocShell* pNewDocShell,
+ USHORT nNewCol, USHORT nNewRow, USHORT nNewTab,
+ USHORT nNewCount, USHORT* pNewTabs,
+ ScBaseCell** ppOldData, BOOL* pHasForm, ULONG* pOldForm,
+ const String& rNewStr, EditTextObject* pObj = NULL );
+ virtual ~ScUndoEnterData();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ String aNewString;
+ USHORT* pTabs;
+ ScBaseCell** ppOldCells;
+ BOOL* pHasFormat;
+ ULONG* pOldFormats;
+ EditTextObject* pNewEditData;
+ ULONG nEndChangeAction;
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTab;
+ USHORT nCount; // markierte Tabellen
+
+ void DoChange() const;
+ void SetChangeTrack();
+};
+
+
+class ScUndoEnterValue: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoEnterValue( ScDocShell* pNewDocShell,
+ const ScAddress& rNewPos,
+ ScBaseCell* pUndoCell, double nVal, BOOL bHeight );
+ virtual ~ScUndoEnterValue();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScAddress aPos;
+ ScBaseCell* pOldCell;
+ double nValue;
+ ULONG nEndChangeAction;
+ BOOL bNeedHeight;
+
+ void SetChangeTrack();
+};
+
+
+class ScUndoPutCell: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoPutCell( ScDocShell* pNewDocShell,
+ const ScAddress& rNewPos,
+ ScBaseCell* pUndoCell, ScBaseCell* pRedoCell, BOOL bHeight );
+ virtual ~ScUndoPutCell();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScAddress aPos;
+ ScBaseCell* pOldCell;
+ ScBaseCell* pEnteredCell;
+ ULONG nEndChangeAction;
+ BOOL bNeedHeight;
+
+ void SetChangeTrack();
+};
+
+
+class ScUndoPageBreak: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoPageBreak( ScDocShell* pNewDocShell,
+ USHORT nNewCol, USHORT nNewRow, USHORT nNewTab,
+ BOOL bNewColumn, BOOL bNewInsert );
+ virtual ~ScUndoPageBreak();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTab;
+ BOOL bColumn; // Spalten- oder Zeilenumbruch
+ BOOL bInsert; // Einfuegen oder Loeschen
+
+ void DoChange( BOOL bInsert ) const;
+};
+
+class ScUndoPrintZoom: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoPrintZoom( ScDocShell* pNewDocShell, USHORT nT,
+ USHORT nOS, USHORT nOP, USHORT nNS, USHORT nNP );
+ virtual ~ScUndoPrintZoom();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ USHORT nOldScale;
+ USHORT nOldPages;
+ USHORT nNewScale;
+ USHORT nNewPages;
+
+ void DoChange( BOOL bUndo );
+};
+
+class ScUndoThesaurus: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoThesaurus( ScDocShell* pNewDocShell,
+ USHORT nNewCol, USHORT nNewRow, USHORT nNewTab,
+ const String& rNewUndoStr, const EditTextObject* pUndoTObj,
+ const String& rNewRedoStr, const EditTextObject* pRedoTObj);
+ virtual ~ScUndoThesaurus();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTab;
+ String aUndoStr; // Daten bei StringZelle
+ EditTextObject* pUndoTObject; // bei EditZelle
+ String aRedoStr;
+ EditTextObject* pRedoTObject;
+ ULONG nEndChangeAction;
+
+ void DoChange( BOOL bUndo, const String& rStr,
+ const EditTextObject* pTObj );
+ void SetChangeTrack( ScBaseCell* pOldCell );
+};
+
+
+class ScUndoNote: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoNote( ScDocShell* pNewDocShell,
+ BOOL bShow, const ScAddress& rNewPos,
+ SdrUndoAction* pDraw );
+ virtual ~ScUndoNote();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ BOOL bIsShow;
+ ScAddress aPos;
+ SdrUndoAction* pDrawUndo;
+};
+
+
+class ScUndoEditNote: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoEditNote( ScDocShell* pNewDocShell,
+ const ScAddress& rNewPos,
+ const ScPostIt& rOld,
+ const ScPostIt& rNew );
+ virtual ~ScUndoEditNote();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScAddress aPos;
+ ScPostIt aOldNote;
+ ScPostIt aNewNote;
+};
+
+
+class ScUndoDetective: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoDetective( ScDocShell* pNewDocShell,
+ SdrUndoAction* pDraw, const ScDetOpData* pOperation,
+ ScDetOpList* pUndoList = NULL );
+ virtual ~ScUndoDetective();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ BOOL bIsDelete;
+ ScDetOpList* pOldList;
+ USHORT nAction;
+ ScAddress aPos;
+ SdrUndoAction* pDrawUndo;
+};
+
+
+class ScUndoRangeNames: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoRangeNames( ScDocShell* pNewDocShell,
+ ScRangeName* pOld, ScRangeName* pNew );
+ virtual ~ScUndoRangeNames();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScRangeName* pOldRanges;
+ ScRangeName* pNewRanges;
+
+ void DoChange( BOOL bUndo );
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/undodat.hxx b/sc/source/ui/inc/undodat.hxx
new file mode 100644
index 000000000000..3e794f8da85b
--- /dev/null
+++ b/sc/source/ui/inc/undodat.hxx
@@ -0,0 +1,554 @@
+/*************************************************************************
+ *
+ * $RCSfile: undodat.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNDODAT_HXX
+#define SC_UNDODAT_HXX
+
+#ifndef SC_UNDOBASE_HXX
+#include "undobase.hxx"
+#endif
+
+#ifndef SC_RANGEUTL_HXX
+#include "rangeutl.hxx" // ScArea
+#endif
+
+#ifndef SC_RANGELST_HXX
+#include "rangelst.hxx" // ScRangeListRef
+#endif
+
+#ifndef SC_MARKDATA_HXX
+#include "markdata.hxx"
+#endif
+
+
+class ScDocShell;
+class ScDocument;
+class ScOutlineTable;
+class ScRangeName;
+class ScDBData;
+class ScDBCollection;
+class ScPivot;
+class ScDPObject;
+
+//----------------------------------------------------------------------------
+
+class ScUndoDoOutline: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoDoOutline( ScDocShell* pNewDocShell,
+ USHORT nNewStart, USHORT nNewEnd, USHORT nNewTab,
+ ScDocument* pNewUndoDoc, BOOL bNewColumns,
+ USHORT nNewLevel, USHORT nNewEntry, BOOL bNewShow );
+ virtual ~ScUndoDoOutline();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nStart;
+ USHORT nEnd;
+ USHORT nTab;
+ ScDocument* pUndoDoc;
+ BOOL bColumns;
+ USHORT nLevel;
+ USHORT nEntry;
+ BOOL bShow;
+};
+
+
+class ScUndoMakeOutline: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoMakeOutline( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScOutlineTable* pNewUndoTab,
+ BOOL bNewColumns, BOOL bNewMake );
+ virtual ~ScUndoMakeOutline();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScTripel aBlockStart;
+ ScTripel aBlockEnd;
+ ScOutlineTable* pUndoTable;
+ BOOL bColumns;
+ BOOL bMake;
+};
+
+
+class ScUndoOutlineLevel: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoOutlineLevel( ScDocShell* pNewDocShell,
+ USHORT nNewStart, USHORT nNewEnd, USHORT nNewTab,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ BOOL bNewColumns, USHORT nNewLevel );
+ virtual ~ScUndoOutlineLevel();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nStart;
+ USHORT nEnd;
+ USHORT nTab;
+ ScDocument* pUndoDoc;
+ ScOutlineTable* pUndoTable;
+ BOOL bColumns;
+ USHORT nLevel;
+};
+
+
+class ScUndoOutlineBlock: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoOutlineBlock( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ BOOL bNewShow );
+ virtual ~ScUndoOutlineBlock();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScTripel aBlockStart;
+ ScTripel aBlockEnd;
+ ScDocument* pUndoDoc;
+ ScOutlineTable* pUndoTable;
+ BOOL bShow;
+};
+
+
+class ScUndoRemoveAllOutlines: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoRemoveAllOutlines( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab );
+ virtual ~ScUndoRemoveAllOutlines();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScTripel aBlockStart;
+ ScTripel aBlockEnd;
+ ScDocument* pUndoDoc;
+ ScOutlineTable* pUndoTable;
+};
+
+
+class ScUndoAutoOutline: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoAutoOutline( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab );
+ virtual ~ScUndoAutoOutline();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScTripel aBlockStart;
+ ScTripel aBlockEnd;
+ ScDocument* pUndoDoc;
+ ScOutlineTable* pUndoTable;
+};
+
+
+class ScUndoSubTotals: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoSubTotals( ScDocShell* pNewDocShell, USHORT nNewTab,
+ const ScSubTotalParam& rNewParam, USHORT nNewEndY,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+// ScDBData* pNewData,
+ ScRangeName* pNewUndoRange, ScDBCollection* pNewUndoDB );
+ virtual ~ScUndoSubTotals();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ ScSubTotalParam aParam; // Original uebergebener Parameter
+ USHORT nNewEndRow; // Ergebnis-Groesse
+ ScDocument* pUndoDoc;
+ ScOutlineTable* pUndoTable;
+// ScDBData* pUndoDBData;
+ ScRangeName* pUndoRange;
+ ScDBCollection* pUndoDB;
+};
+
+
+class ScUndoSort: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoSort( ScDocShell* pNewDocShell, USHORT nNewTab,
+ const ScSortParam& rParam,
+ BOOL bQuery, ScDocument* pNewUndoDoc,
+ ScDBCollection* pNewUndoDB, const ScRange* pDest = NULL );
+ virtual ~ScUndoSort();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ ScSortParam aSortParam;
+ BOOL bRepeatQuery;
+ ScDocument* pUndoDoc;
+ ScDBCollection* pUndoDB; // wegen Quell- und Zielbereich
+ BOOL bDestArea;
+ ScRange aDestRange;
+};
+
+
+class ScUndoQuery: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoQuery( ScDocShell* pNewDocShell, USHORT nNewTab,
+ const ScQueryParam& rParam, ScDocument* pNewUndoDoc,
+ ScDBCollection* pNewUndoDB, const ScRange* pOld,
+ BOOL bSize, const ScRange* pAdvSrc );
+ virtual ~ScUndoQuery();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ ScQueryParam aQueryParam;
+ ScDocument* pUndoDoc;
+ ScDBCollection* pUndoDB; // wegen Quell- und Zielbereich
+ ScRange aOldDest;
+ ScRange aAdvSource;
+ BOOL bIsAdvanced;
+ BOOL bDestArea;
+ BOOL bDoSize;
+};
+
+
+class ScUndoDBData: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoDBData( ScDocShell* pNewDocShell,
+ ScDBCollection* pNewUndoColl, ScDBCollection* pNewRedoColl );
+ virtual ~ScUndoDBData();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScDBCollection* pUndoColl;
+ ScDBCollection* pRedoColl;
+};
+
+
+class ScUndoImportData: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoImportData( ScDocShell* pNewDocShell, USHORT nNewTab,
+ const ScImportParam& rParam, USHORT nNewEndX, USHORT nNewEndY,
+ USHORT nNewFormula,
+ ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc,
+ ScDBData* pNewUndoData, ScDBData* pNewRedoData );
+ virtual ~ScUndoImportData();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ ScImportParam aImportParam;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ ScDocument* pUndoDoc;
+ ScDocument* pRedoDoc;
+ ScDBData* pUndoDBData;
+ ScDBData* pRedoDBData;
+ USHORT nFormulaCols;
+ BOOL bRedoFilled;
+};
+
+
+class ScUndoRepeatDB: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoRepeatDB( ScDocShell* pNewDocShell, USHORT nNewTab,
+ USHORT nStartX, USHORT nStartY, USHORT nEndX, USHORT nEndY,
+ USHORT nResultEndRow, USHORT nCurX, USHORT nCurY,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ ScRangeName* pNewUndoRange, ScDBCollection* pNewUndoDB,
+ const ScRange* pOldQ, const ScRange* pNewQ );
+ virtual ~ScUndoRepeatDB();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScTripel aBlockStart;
+ ScTripel aBlockEnd;
+ USHORT nNewEndRow;
+ ScTripel aCursorPos;
+ ScDocument* pUndoDoc;
+ ScOutlineTable* pUndoTable;
+ ScRangeName* pUndoRange;
+ ScDBCollection* pUndoDB;
+ ScRange aOldQuery;
+ ScRange aNewQuery;
+ BOOL bQuerySize;
+};
+
+
+class ScUndoPivot: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoPivot( ScDocShell* pNewDocShell,
+ const ScArea& rOld, const ScArea& rNew,
+ ScDocument* pOldDoc, ScDocument* pNewDoc,
+ const ScPivot* pOldPivot, const ScPivot* pNewPivot );
+ virtual ~ScUndoPivot();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScArea aOldArea;
+ ScArea aNewArea;
+ ScDocument* pOldUndoDoc;
+ ScDocument* pNewUndoDoc;
+ ScPivotParam aOldParam; // fuer Redo
+ ScQueryParam aOldQuery;
+ ScArea aOldSrc;
+ ScPivotParam aNewParam; // fuer Undo in Collection
+ ScQueryParam aNewQuery;
+ ScArea aNewSrc;
+ String aOldName;
+ String aOldTag;
+ String aNewName;
+ String aNewTag;
+};
+
+
+class ScUndoDataPilot: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoDataPilot( ScDocShell* pNewDocShell,
+ ScDocument* pOldDoc, ScDocument* pNewDoc,
+ const ScDPObject* pOldObj, const ScDPObject* pNewObj );
+ virtual ~ScUndoDataPilot();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScDocument* pOldUndoDoc;
+ ScDocument* pNewUndoDoc;
+ ScDPObject* pOldDPObject;
+ ScDPObject* pNewDPObject;
+};
+
+
+class ScUndoConsolidate: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoConsolidate( ScDocShell* pNewDocShell,
+ const ScArea& rArea, const ScConsolidateParam& rPar,
+ ScDocument* pNewUndoDoc, BOOL bReference,
+ USHORT nInsCount, ScOutlineTable* pTab,
+ ScDBData* pData );
+ virtual ~ScUndoConsolidate();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ ScArea aDestArea;
+ ScDocument* pUndoDoc;
+ ScConsolidateParam aParam;
+ BOOL bInsRef;
+ USHORT nInsertCount;
+ ScOutlineTable* pUndoTab;
+ ScDBData* pUndoData;
+};
+
+
+class ScUndoChartData: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoChartData( ScDocShell* pNewDocShell,
+ const String& rName, const ScRange& rNew,
+ BOOL bColHdr, BOOL bRowHdr, BOOL bAdd );
+ ScUndoChartData( ScDocShell* pNewDocShell,
+ const String& rName, const ScRangeListRef& rNew,
+ BOOL bColHdr, BOOL bRowHdr, BOOL bAdd );
+ virtual ~ScUndoChartData();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ String aChartName;
+ ScRangeListRef aOldRangeListRef;
+ BOOL bOldColHeaders;
+ BOOL bOldRowHeaders;
+// ScRange aNewRange;
+ ScRangeListRef aNewRangeListRef;
+ BOOL bNewColHeaders;
+ BOOL bNewRowHeaders;
+ BOOL bAddRange;
+
+ void Init();
+};
+
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/undodraw.hxx b/sc/source/ui/inc/undodraw.hxx
new file mode 100644
index 000000000000..822cf03baf34
--- /dev/null
+++ b/sc/source/ui/inc/undodraw.hxx
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * $RCSfile: undodraw.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNDODRAW_HXX
+#define SC_UNDODRAW_HXX
+
+#ifndef _UNDO_HXX //autogen
+#include <svtools/undo.hxx>
+#endif
+
+class ScDocShell;
+
+class ScUndoDraw: public SfxUndoAction
+{
+ SfxUndoAction* pDrawUndo;
+ ScDocShell* pDocShell;
+
+public:
+ TYPEINFO();
+ ScUndoDraw( SfxUndoAction* pUndo, ScDocShell* pDocSh );
+ virtual ~ScUndoDraw();
+
+ SfxUndoAction* GetDrawUndo() { return pDrawUndo; }
+ void ForgetDrawUndo();
+
+ virtual BOOL IsLinked();
+ virtual void SetLinked( BOOL bIsLinked );
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+ virtual BOOL Merge( SfxUndoAction *pNextAction );
+ virtual String GetComment() const;
+ virtual String GetRepeatComment(SfxRepeatTarget&) const;
+ virtual USHORT GetId() const;
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/undoolk.hxx b/sc/source/ui/inc/undoolk.hxx
new file mode 100644
index 000000000000..19bcd2221c5d
--- /dev/null
+++ b/sc/source/ui/inc/undoolk.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * $RCSfile: undoolk.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNDOOLK_HXX
+#define SC_UNDOOLK_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class SdrUndoAction;
+class ScDocument;
+
+SdrUndoAction* GetSdrUndoAction ( ScDocument* pDoc );
+void DoSdrUndoAction ( SdrUndoAction* pUndoAction );
+void RedoSdrUndoAction ( SdrUndoAction* pUndoAction );
+void DeleteSdrUndoAction ( SdrUndoAction* pUndoAction );
+void EnableDrawAdjust ( ScDocument* pDoc, BOOL bEnable );
+
+
+
+#endif
diff --git a/sc/source/ui/inc/undostyl.hxx b/sc/source/ui/inc/undostyl.hxx
new file mode 100644
index 000000000000..cbccfc618ebb
--- /dev/null
+++ b/sc/source/ui/inc/undostyl.hxx
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ * $RCSfile: undostyl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNDOSTYL_HXX
+#define SC_UNDOSTYL_HXX
+
+#ifndef _RSCSFX_HXX
+#include <rsc/rscsfx.hxx>
+#endif
+
+#ifndef SC_UNDOBASE_HXX
+#include "undobase.hxx"
+#endif
+
+class ScDocShell;
+class SfxStyleSheetBase;
+
+//----------------------------------------------------------------------------
+
+class ScStyleSaveData
+{
+private:
+ String aName;
+ String aParent;
+ SfxItemSet* pItems;
+
+public:
+ ScStyleSaveData();
+ ScStyleSaveData( const ScStyleSaveData& rOther );
+ ~ScStyleSaveData();
+ ScStyleSaveData& operator=( const ScStyleSaveData& rOther );
+
+ void InitFromStyle( const SfxStyleSheetBase* pSource );
+
+ const String& GetName() const { return aName; }
+ const String& GetParent() const { return aParent; }
+ const SfxItemSet* GetItems() const { return pItems; }
+};
+
+class ScUndoModifyStyle: public ScSimpleUndo
+{
+private:
+ SfxStyleFamily eFamily;
+ ScStyleSaveData aOldData;
+ ScStyleSaveData aNewData;
+
+ static void DoChange( ScDocShell* pDocSh,
+ const String& rName, SfxStyleFamily eStyleFamily,
+ const ScStyleSaveData& rData );
+
+public:
+ TYPEINFO();
+ ScUndoModifyStyle( ScDocShell* pDocSh,
+ SfxStyleFamily eFam,
+ const ScStyleSaveData& rOld,
+ const ScStyleSaveData& rNew );
+ virtual ~ScUndoModifyStyle();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+};
+
+class ScUndoApplyPageStyle: public ScSimpleUndo
+{
+private:
+ USHORT nTab;
+ String aOldStyle;
+ String aNewStyle;
+
+public:
+ TYPEINFO();
+ ScUndoApplyPageStyle( ScDocShell* pDocSh, USHORT nT,
+ const String& rOld, const String& rNew );
+ virtual ~ScUndoApplyPageStyle();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+};
+
+
+#endif
+
diff --git a/sc/source/ui/inc/undotab.hxx b/sc/source/ui/inc/undotab.hxx
new file mode 100644
index 000000000000..2454610ad720
--- /dev/null
+++ b/sc/source/ui/inc/undotab.hxx
@@ -0,0 +1,453 @@
+/*************************************************************************
+ *
+ * $RCSfile: undotab.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNDOTAB_HXX
+#define SC_UNDOTAB_HXX
+
+#ifndef SC_UNDOBASE_HXX
+#include "undobase.hxx"
+#endif
+#ifndef SC_MARKDATA_HXX
+#include "markdata.hxx"
+#endif
+
+#ifndef _SVSTDARR_USHORTS
+
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+
+#endif
+
+#ifndef _SVSTDARR_STRINGS
+
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+
+#endif
+
+class ScDocShell;
+class ScDocument;
+class SdrUndoAction;
+class ScPrintRangeSaver;
+
+//----------------------------------------------------------------------------
+
+class ScUndoInsertTab : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoInsertTab(
+ ScDocShell* pNewDocShell,
+ USHORT nTabNum,
+ BOOL bApp,
+ const String& rNewName);
+ virtual ~ScUndoInsertTab();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ String sNewName;
+ SdrUndoAction* pDrawUndo;
+ ULONG nEndChangeAction;
+ USHORT nTab;
+ BOOL bAppend;
+
+ void SetChangeTrack();
+};
+
+class ScUndoInsertTables : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoInsertTables(
+ ScDocShell* pNewDocShell,
+ USHORT nTabNum,
+ BOOL bApp,
+ SvStrings *pNewNameList);
+ virtual ~ScUndoInsertTables();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+
+ SdrUndoAction* pDrawUndo;
+ SvStrings* pNameList;
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+ USHORT nTab;
+ BOOL bAppend;
+
+ void SetChangeTrack();
+};
+
+
+class ScUndoDeleteTab: public ScMoveUndo // Draw vom Move fuer geloeschte Tabelle
+{
+public:
+ TYPEINFO();
+ ScUndoDeleteTab(
+ ScDocShell* pNewDocShell,
+ const SvUShorts &theTabs, //USHORT nNewTab,
+ ScDocument* pUndoDocument,
+ ScRefUndoData* pRefData );
+ virtual ~ScUndoDeleteTab();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ SvUShorts theTabs;
+ ULONG nStartChangeAction;
+ ULONG nEndChangeAction;
+
+ void SetChangeTrack();
+};
+
+
+class ScUndoRenameTab: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoRenameTab(
+ ScDocShell* pNewDocShell,
+ USHORT nT,
+ const String& rOldName,
+ const String& rNewName);
+ virtual ~ScUndoRenameTab();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ String sOldName;
+ String sNewName;
+
+ void DoChange( USHORT nTab, const String& rName ) const;
+};
+
+
+class ScUndoMoveTab: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoMoveTab( ScDocShell* pNewDocShell,
+ const SvUShorts &aOldTab,
+ const SvUShorts &aNewTab);
+ virtual ~ScUndoMoveTab();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ SvUShorts theOldTabs;
+ SvUShorts theNewTabs;
+
+ void DoChange( BOOL bUndo ) const;
+};
+
+
+class ScUndoCopyTab: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoCopyTab(ScDocShell* pNewDocShell,
+ const SvUShorts &aOldTab,
+ const SvUShorts &aNewTab);
+
+ virtual ~ScUndoCopyTab();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ SdrUndoAction* pDrawUndo;
+ SvUShorts theOldTabs;
+ SvUShorts theNewTabs;
+
+ void DoChange() const;
+};
+
+
+class ScUndoMakeScenario: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoMakeScenario(
+ ScDocShell* pNewDocShell,
+ USHORT nSrc, USHORT nDest,
+ ScDocument* pUndo,
+ const String& rN, const String& rC,
+ const Color& rCol, USHORT nF,
+ const ScMarkData& rMark );
+ virtual ~ScUndoMakeScenario();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nSrcTab;
+ USHORT nDestTab;
+ ScDocument* pUndoDoc;
+ String aName;
+ String aComment;
+ Color aColor;
+ USHORT nFlags;
+ ScMarkData aMarkData;
+};
+
+
+class ScUndoImportTab : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoImportTab(
+ ScDocShell* pShell,
+ USHORT nNewTab, USHORT nNewCount,
+ BOOL bNewLink );
+ virtual ~ScUndoImportTab();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ USHORT nCount;
+ BOOL bLink;
+ ScDocument* pRedoDoc;
+ SdrUndoAction* pDrawUndo;
+
+ void DoChange() const;
+};
+
+
+class ScUndoRemoveLink : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoRemoveLink( // vor dem Loeschen aufrufen!
+ ScDocShell* pShell,
+ const String& rDoc );
+ virtual ~ScUndoRemoveLink();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ String aDocName;
+ String aFltName;
+ String aOptions;
+ USHORT nCount;
+ USHORT* pTabs;
+ BYTE* pModes;
+ String* pTabNames;
+
+ void DoChange( BOOL bLink ) const;
+};
+
+
+class ScUndoShowHideTab : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoShowHideTab(
+ ScDocShell* pShell,
+ USHORT nNewTab, BOOL bNewShow );
+ virtual ~ScUndoShowHideTab();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ BOOL bShow;
+
+ void DoChange( BOOL bShow ) const;
+};
+
+
+class ScUndoProtect : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoProtect( ScDocShell* pShell, USHORT nNewTab,
+ BOOL bNewProtect, const String& rNewPassword );
+ virtual ~ScUndoProtect();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ BOOL bProtect;
+ String aPassword;
+
+ void DoProtect( BOOL bDo );
+};
+
+
+class ScUndoPrintRange : public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoPrintRange( ScDocShell* pShell, USHORT nNewTab,
+ ScPrintRangeSaver* pOld, ScPrintRangeSaver* pNew );
+ virtual ~ScUndoPrintRange();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ ScPrintRangeSaver* pOldRanges;
+ ScPrintRangeSaver* pNewRanges;
+
+ void DoChange( BOOL bUndo );
+};
+
+
+class ScUndoScenarioFlags: public ScSimpleUndo
+{
+public:
+ TYPEINFO();
+ ScUndoScenarioFlags(
+ ScDocShell* pNewDocShell, USHORT nT,
+ const String& rON, const String& rNN,
+ const String& rOC, const String& rNC,
+ const Color& rOCol, const Color& rNCol,
+ USHORT nOF, USHORT nNF );
+
+ virtual ~ScUndoScenarioFlags();
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SfxRepeatTarget& rTarget);
+ virtual BOOL CanRepeat(SfxRepeatTarget& rTarget) const;
+
+ virtual String GetComment() const;
+
+private:
+ USHORT nTab;
+ String aOldName;
+ String aNewName;
+ String aOldComment;
+ String aNewComment;
+ Color aOldColor;
+ Color aNewColor;
+ USHORT nOldFlags;
+ USHORT nNewFlags;
+};
+
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/undoutil.hxx b/sc/source/ui/inc/undoutil.hxx
new file mode 100644
index 000000000000..3047f2ebc382
--- /dev/null
+++ b/sc/source/ui/inc/undoutil.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * $RCSfile: undoutil.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_UNDOUTIL_HXX
+#define SC_UNDOUTIL_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class ScTripel;
+class ScRange;
+class ScDocShell;
+class ScDBData;
+class ScDocument;
+
+//----------------------------------------------------------------------------
+
+class ScUndoUtil
+{
+public:
+ // Block markieren (unsichtbar, muss repainted werden)
+ static void MarkSimpleBlock( ScDocShell* pDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ );
+ static void MarkSimpleBlock( ScDocShell* pDocShell,
+ const ScTripel& rBlockStart,
+ const ScTripel& rBlockEnd );
+ static void MarkSimpleBlock( ScDocShell* pDocShell,
+ const ScRange& rRange );
+
+ // Bereich +1 painten
+ static void PaintMore( ScDocShell* pDocShell,
+ const ScRange& rRange );
+
+ // DB-Bereich im Dokument suchen ("unbenannt" oder nach Bereich)
+ // legt neu an, wenn nicht gefunden
+ static ScDBData* GetOldDBData( ScDBData* pUndoData, ScDocument* pDoc, USHORT nTab,
+ USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 );
+};
+
+
+
+#endif
diff --git a/sc/source/ui/inc/validate.hrc b/sc/source/ui/inc/validate.hrc
new file mode 100644
index 000000000000..03a76730b9f1
--- /dev/null
+++ b/sc/source/ui/inc/validate.hrc
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: validate.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define TP_VALIDATION_VALUES 696
+#define TP_VALIDATION_INPUTHELP 697
+#define TP_VALIDATION_ERROR 698
+#define TAB_DLG_VALIDATION 699
+#define FT_ALLOW 1
+#define LB_ALLOW 1
+#define TSB_ALLOW_BLANKS 1
+#define FT_VALUE 2
+#define LB_VALUE 2
+#define FT_MIN 3
+#define EDT_MIN 1
+#define FT_MAX 4
+#define EDT_MAX 2
+#define GRP_VALUES 1
+#define TSB_HELP 1
+#define FT_TITLE 1
+#define FT_INPUTHELP 2
+#define EDT_TITLE 1
+#define EDT_INPUTHELP 2
+#define TSB_SHOW 1
+#define FT_ACTION 3
+#define FT_ERROR 4
+#define LB_ACTION 2
+#define EDT_ERROR 1
+#define BTN_SEARCH 1
+#define GRP_CONTENT 1
diff --git a/sc/source/ui/inc/validate.hxx b/sc/source/ui/inc/validate.hxx
new file mode 100644
index 000000000000..75a0b8765f1b
--- /dev/null
+++ b/sc/source/ui/inc/validate.hxx
@@ -0,0 +1,210 @@
+/*************************************************************************
+ *
+ * $RCSfile: validate.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_VALIDATE_HXX
+#define SC_VALIDATE_HXX
+
+
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+
+#ifndef _SV_EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+
+#ifndef _SVEDIT_HXX //autogen
+#include <svtools/svmedit.hxx>
+#endif
+
+
+//==================================================================
+
+class ScValidationDlg : public SfxTabDialog
+{
+public:
+ ScValidationDlg( Window* pParent, const SfxItemSet* pArgSet );
+ ~ScValidationDlg();
+
+};
+
+//==================================================================
+
+class ScTPValidationValue : public SfxTabPage
+{
+private:
+ FixedText aFtAllow;
+ ListBox aLbAllow;
+ TriStateBox aTsbAllow;
+ FixedText aFtValue;
+ ListBox aLbValue;
+ FixedText aFtMin;
+ Edit aEdtMin;
+ FixedText aFtMax;
+ Edit aEdtMax;
+ GroupBox aGrpValues;
+
+ String aStrMin;
+ String aStrMax;
+ String aStrValue;
+
+ const SfxItemSet& rSet;
+
+#ifdef _VALIDATE_CXX
+ void Init();
+
+ // Handler ------------------------
+ DECL_LINK( SelectAllowHdl, ListBox * );
+ DECL_LINK( SelectValueHdl, ListBox * );
+#endif
+
+public:
+ ScTPValidationValue( Window* pParent, const SfxItemSet& rArgSet );
+ ~ScTPValidationValue();
+
+ static SfxTabPage* Create ( Window* pParent, const SfxItemSet& rArgSet );
+ static USHORT* GetRanges ();
+ virtual BOOL FillItemSet ( SfxItemSet& rArgSet );
+ virtual void Reset ( const SfxItemSet& rArgSet );
+};
+
+//==================================================================
+
+class ScTPValidationHelp : public SfxTabPage
+{
+private:
+ TriStateBox aTsbHelp;
+ FixedText aFtTitle;
+ Edit aEdtTitle;
+ FixedText aFtInputHelp;
+ MultiLineEdit aEdInputHelp;
+ GroupBox aGrpContent;
+
+ const SfxItemSet& rSet;
+
+#ifdef _VALIDATE_CXX
+ void Init();
+
+ // Handler ------------------------
+ // DECL_LINK( SelectHdl, ListBox * );
+#endif
+
+public:
+ ScTPValidationHelp( Window* pParent, const SfxItemSet& rArgSet );
+ ~ScTPValidationHelp();
+
+ static SfxTabPage* Create ( Window* pParent, const SfxItemSet& rArgSet );
+ static USHORT* GetRanges ();
+ virtual BOOL FillItemSet ( SfxItemSet& rArgSet );
+ virtual void Reset ( const SfxItemSet& rArgSet );
+};
+
+//==================================================================
+
+class ScTPValidationError : public SfxTabPage
+{
+private:
+ TriStateBox aTsbShow;
+ FixedText aFtAction;
+ ListBox aLbAction;
+ PushButton aBtnSearch;
+ FixedText aFtTitle;
+ Edit aEdtTitle;
+ FixedText aFtError;
+ MultiLineEdit aEdError;
+ GroupBox aGrpContent;
+
+ const SfxItemSet& rSet;
+
+#ifdef _VALIDATE_CXX
+ void Init();
+
+ // Handler ------------------------
+ DECL_LINK( SelectActionHdl, ListBox * );
+ DECL_LINK( ClickSearchHdl, PushButton * );
+#endif
+
+public:
+ ScTPValidationError( Window* pParent, const SfxItemSet& rArgSet );
+ ~ScTPValidationError();
+
+ static SfxTabPage* Create ( Window* pParent, const SfxItemSet& rArgSet );
+ static USHORT* GetRanges ();
+ virtual BOOL FillItemSet ( SfxItemSet& rArgSet );
+ virtual void Reset ( const SfxItemSet& rArgSet );
+};
+
+
+#endif // SC_VALIDATE_HXX
+
+
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
new file mode 100644
index 000000000000..40ef75dcb29a
--- /dev/null
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -0,0 +1,501 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewdata.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_VIEWDATA_HXX
+#define SC_VIEWDATA_HXX
+
+#ifndef SC_VIEWOPTI_HXX
+#include "viewopti.hxx"
+#endif
+
+#ifndef SC_MARKDATA_HXX
+#include "markdata.hxx"
+#endif
+
+
+// ---------------------------------------------------------------------------
+
+#define SC_SLIDER_SIZE 2
+#define SC_SMALL3DSHADOW COL_BLACK
+#define SC_SIZE_NONE 65535
+#define SC_TABSTART_NONE 65535
+
+#define SC_FILL_NONE 0
+#define SC_FILL_FILL 1
+#define SC_FILL_EMBED_LT 2
+#define SC_FILL_EMBED_RB 3
+#define SC_FILL_MATRIX 4
+
+enum ScSplitMode { SC_SPLIT_NONE = 0, SC_SPLIT_NORMAL, SC_SPLIT_FIX };
+
+enum ScSplitPos { SC_SPLIT_TOPLEFT, SC_SPLIT_TOPRIGHT, SC_SPLIT_BOTTOMLEFT, SC_SPLIT_BOTTOMRIGHT };
+enum ScHSplitPos { SC_SPLIT_LEFT, SC_SPLIT_RIGHT };
+enum ScVSplitPos { SC_SPLIT_TOP, SC_SPLIT_BOTTOM };
+
+inline ScHSplitPos WhichH( ScSplitPos ePos );
+inline ScVSplitPos WhichV( ScSplitPos ePos );
+inline ScSplitPos Which( ScHSplitPos eHPos );
+inline ScSplitPos Which( ScVSplitPos eVPos );
+
+// Bildschirmverhalten bei Cursorbewegungen:
+enum ScFollowMode { SC_FOLLOW_NONE, SC_FOLLOW_LINE, SC_FOLLOW_FIX, SC_FOLLOW_JUMP };
+
+// Mausmodi um Bereiche zu selektieren
+enum ScRefType { SC_REFTYPE_NONE, SC_REFTYPE_REF, SC_REFTYPE_FILL,
+ SC_REFTYPE_EMBED_LT, SC_REFTYPE_EMBED_RB };
+
+class ScDocShell;
+class ScDocument;
+class ScDBFunc;
+class ScTabViewShell;
+class ScDrawView;
+class ScEditEngineDefaulter;
+class EditView;
+class EditStatus;
+class Outliner;
+class Window;
+class SfxObjectShell;
+class ScPatternAttr;
+class ScRangeListRef;
+class ScExtDocOptions;
+
+//--------------------------------------------------------------------------
+
+
+class ScViewDataTable // Daten pro Tabelle
+{
+friend class ScViewData;
+private:
+ long nTPosX[2]; // MapMode - Offset (Twips)
+ long nTPosY[2];
+ long nMPosX[2]; // MapMode - Offset (1/100 mm)
+ long nMPosY[2];
+ long nPixPosX[2]; // Offset in Pixeln
+ long nPixPosY[2];
+ long nHSplitPos;
+ long nVSplitPos;
+
+ ScSplitMode eHSplitMode;
+ ScSplitMode eVSplitMode;
+ ScSplitPos eWhichActive;
+
+ USHORT nFixPosX; // Zellposition des Splitters beim Fixieren
+ USHORT nFixPosY;
+
+ USHORT nCurX;
+ USHORT nCurY;
+ USHORT nOldCurX;
+ USHORT nOldCurY;
+ USHORT nPosX[2];
+ USHORT nPosY[2];
+
+ BOOL bOldCurValid; // "virtuelle" Cursorpos. bei zusammengefassten
+
+ ScViewDataTable();
+ ScViewDataTable( const ScViewDataTable& rDataTable );
+ ~ScViewDataTable();
+};
+
+// ---------------------------------------------------------------------------
+
+class ScViewData
+{
+private:
+ double nPPTX, nPPTY; // Scaling-Faktoren
+
+ ScViewDataTable* pTabData[MAXTAB+1];
+ ScViewDataTable* pThisTab; // Daten der angezeigten Tabelle
+ ScDocShell* pDocShell;
+ ScDocument* pDoc;
+ ScDBFunc* pView;
+ ScTabViewShell* pViewShell;
+ EditView* pEditView[4]; // gehoert dem Fenster
+ ScViewOptions* pOptions;
+ EditView* pSpellingView;
+
+ ScMarkData aMarkData;
+
+ long nEditMargin;
+
+ Size aScenButSize; // Groesse eines Szenario-Buttons
+
+ Size aScrSize;
+ MapMode aLogicMode; // skalierter 1/100mm-MapMode
+
+ Fraction aZoomX; // eingestellter Zoom X
+ Fraction aZoomY; // eingestellter Zoom Y (angezeigt)
+ Fraction aPageZoomX; // Zoom im Seitenumbruch-Vorschaumodus
+ Fraction aPageZoomY;
+
+ ScRefType eRefType;
+
+ USHORT nTabNo; // angezeigte Tabelle
+ USHORT nRefTabNo; // Tabelle auf die sich RefInput bezieht
+ USHORT nRefStartX;
+ USHORT nRefStartY;
+ USHORT nRefStartZ;
+ USHORT nRefEndX;
+ USHORT nRefEndY;
+ USHORT nRefEndZ;
+ USHORT nFillStartX; // Fill-Cursor
+ USHORT nFillStartY;
+ USHORT nFillEndX;
+ USHORT nFillEndY;
+ USHORT nEditCol; // Position dazu
+ USHORT nEditRow;
+ USHORT nEditEndCol; // Ende der Edit-View
+ USHORT nEditEndRow;
+ USHORT nTabStartCol; // fuer Enter nach Tab
+ ScRange aDelRange; // fuer AutoFill-Loeschen
+
+ BOOL bEditActive[4]; // aktiv?
+ BOOL bActive; // aktives Fenster ?
+ BOOL bIsRefMode; // Referenzeingabe
+ BOOL bDelMarkValid; // nur gueltig bei SC_REFTYPE_FILL
+ BYTE nFillMode; // Modus
+ BOOL bPagebreak; // Seitenumbruch-Vorschaumodus
+
+ DECL_LINK (EmptyEditHdl, EditStatus*);
+ DECL_LINK (EditEngineHdl, EditStatus*);
+
+ void CalcPPT();
+
+public:
+ ScViewData( ScDocShell* pDocSh, ScTabViewShell* pViewSh );
+ ScViewData( const ScViewData& rViewData );
+ ~ScViewData();
+
+ void InitData( ScDocument* pDocument );
+ void InitFrom( const ScViewData* pRef );
+
+ void SetDocShell( ScDocShell* pShell );
+
+ ScDocShell* GetDocShell() const { return pDocShell; }
+ ScDBFunc* GetView() const { return pView; }
+ ScTabViewShell* GetViewShell() const { return pViewShell; }
+
+ SfxObjectShell* GetSfxDocShell() const;
+
+ ScMarkData& GetMarkData() { return aMarkData; }
+
+ Window* GetDialogParent(); // von tabvwsh weitergeleitet
+ Window* GetActiveWin(); // von View
+ ScDrawView* GetScDrawView(); // von View
+ BOOL IsMinimized(); // von View
+
+ void UpdateInputHandler( BOOL bForce = FALSE );
+
+ void WriteUserData(String& rData);
+ void ReadUserData(const String& rData);
+ void ReadExtOptions(const ScExtDocOptions& rOpt);
+
+ ScDocument* GetDocument() const;
+
+ void SetViewShell( ScTabViewShell* pViewSh );
+
+ BOOL IsActive() const { return bActive; }
+ void Activate(BOOL bActivate) { bActive = bActivate; }
+
+ void UpdateThis();
+
+ void InsertTab( USHORT nTab );
+ void DeleteTab( USHORT nTab );
+ void CopyTab( USHORT nSrcTab, USHORT nDestTab );
+ void MoveTab( USHORT nSrcTab, USHORT nDestTab );
+
+ USHORT GetRefTabNo() const { return nRefTabNo; }
+ void SetRefTabNo( USHORT nNewTab ) { nRefTabNo = nNewTab; }
+
+ USHORT GetTabNo() const { return nTabNo; }
+ ScSplitPos GetActivePart() const { return pThisTab->eWhichActive; }
+ USHORT GetPosX( ScHSplitPos eWhich ) const { return pThisTab->nPosX[eWhich]; }
+ USHORT GetPosY( ScVSplitPos eWhich ) const { return pThisTab->nPosY[eWhich]; }
+ USHORT GetCurX() const { return pThisTab->nCurX; }
+ USHORT GetCurY() const { return pThisTab->nCurY; }
+ BOOL HasOldCursor() const { return pThisTab->bOldCurValid; }
+ USHORT GetOldCurX() const;
+ USHORT GetOldCurY() const;
+ ScSplitMode GetHSplitMode() const { return pThisTab->eHSplitMode; }
+ ScSplitMode GetVSplitMode() const { return pThisTab->eVSplitMode; }
+ long GetHSplitPos() const { return pThisTab->nHSplitPos; }
+ long GetVSplitPos() const { return pThisTab->nVSplitPos; }
+ USHORT GetFixPosX() const { return pThisTab->nFixPosX; }
+ USHORT GetFixPosY() const { return pThisTab->nFixPosY; }
+ BOOL IsPagebreakMode() const { return bPagebreak; }
+
+ void SetPosX( ScHSplitPos eWhich, USHORT nNewPosX );
+ void SetPosY( ScVSplitPos eWhich, USHORT nNewPosY );
+ void SetCurX( USHORT nNewCurX ) { pThisTab->nCurX = nNewCurX; }
+ void SetCurY( USHORT nNewCurY ) { pThisTab->nCurY = nNewCurY; }
+ void SetOldCursor( USHORT nNewX, USHORT nNewY );
+ void ResetOldCursor();
+ void SetHSplitMode( ScSplitMode eMode ) { pThisTab->eHSplitMode = eMode; }
+ void SetVSplitMode( ScSplitMode eMode ) { pThisTab->eVSplitMode = eMode; }
+ void SetHSplitPos( long nPos ) { pThisTab->nHSplitPos = nPos; }
+ void SetVSplitPos( long nPos ) { pThisTab->nVSplitPos = nPos; }
+ void SetFixPosX( USHORT nPos ) { pThisTab->nFixPosX = nPos; }
+ void SetFixPosY( USHORT nPos ) { pThisTab->nFixPosY = nPos; }
+ void SetPagebreakMode( BOOL bSet );
+
+ void SetZoom( const Fraction& rNewX, const Fraction& rNewY );
+
+ const Fraction& GetZoomX() const { return bPagebreak ? aPageZoomX : aZoomX; }
+ const Fraction& GetZoomY() const { return bPagebreak ? aPageZoomY : aZoomY; }
+
+ const MapMode& GetLogicMode( ScSplitPos eWhich );
+ const MapMode& GetLogicMode(); // Offset 0
+
+ long GetTPosX( ScHSplitPos eWhich ) const { return pThisTab->nTPosX[eWhich]; }
+ long GetTPosY( ScVSplitPos eWhich ) const { return pThisTab->nTPosY[eWhich]; }
+
+ double GetPPTX() const { return nPPTX; }
+ double GetPPTY() const { return nPPTY; }
+
+ BOOL GetSimpleArea( USHORT& rStartCol, USHORT& rStartRow, USHORT& rStartTab,
+ USHORT& rEndCol, USHORT& rEndRow, USHORT& rEndTab,
+ BOOL bMergeMark = TRUE );
+ BOOL GetSimpleArea( ScRange& rRange, BOOL bMergeMark = TRUE );
+ void GetMultiArea( ScRangeListRef& rRange, BOOL bMergeMark = TRUE );
+
+ BOOL SimpleColMarked();
+ BOOL SimpleRowMarked();
+
+ void SetFillMode( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow );
+ void SetDragMode( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ BYTE nMode );
+ void GetFillData( USHORT& rStartCol, USHORT& rStartRow,
+ USHORT& rEndCol, USHORT& rEndRow );
+ void ResetFillMode();
+ BOOL IsAnyFillMode() { return nFillMode != SC_FILL_NONE; }
+ BOOL IsFillMode() { return nFillMode == SC_FILL_FILL; }
+ BYTE GetFillMode() { return nFillMode; }
+
+ // TRUE: Zelle ist zusammengefasst
+ BOOL GetMergeSizePixel( USHORT nX, USHORT nY, long& rSizeXPix, long& rSizeYPix );
+ BOOL GetPosFromPixel( long nClickX, long nClickY, ScSplitPos eWhich,
+ short& rPosX, short& rPosY,
+ BOOL bTestMerge = TRUE, BOOL bRepair = FALSE,
+ BOOL bNextIfLarge = TRUE );
+ void GetMouseQuadrant( const Point& rClickPos, ScSplitPos eWhich,
+ short nPosX, short nPosY, BOOL& rLeft, BOOL& rTop );
+
+ BOOL IsRefMode() const { return bIsRefMode; }
+ ScRefType GetRefType() const { return eRefType; }
+ USHORT GetRefStartX() const { return nRefStartX; }
+ USHORT GetRefStartY() const { return nRefStartY; }
+ USHORT GetRefStartZ() const { return nRefStartZ; }
+ USHORT GetRefEndX() const { return nRefEndX; }
+ USHORT GetRefEndY() const { return nRefEndY; }
+ USHORT GetRefEndZ() const { return nRefEndZ; }
+
+ void SetRefMode( BOOL bNewMode, ScRefType eNewType )
+ { bIsRefMode = bNewMode; eRefType = eNewType; }
+
+ void SetRefStart( USHORT nNewX, USHORT nNewY, USHORT nNewZ )
+ { nRefStartX = nNewX; nRefStartY = nNewY; nRefStartZ = nNewZ; }
+ void SetRefEnd( USHORT nNewX, USHORT nNewY, USHORT nNewZ )
+ { nRefEndX = nNewX; nRefEndY = nNewY; nRefEndZ = nNewZ; }
+
+ void ResetDelMark() { bDelMarkValid = FALSE; }
+ void SetDelMark( const ScRange& rRange )
+ { aDelRange = rRange; bDelMarkValid = TRUE; }
+
+ BOOL GetDelMark( ScRange& rRange ) const
+ { rRange = aDelRange; return bDelMarkValid; }
+
+ inline void GetMoveCursor( USHORT& rCurX, USHORT& rCurY );
+
+ const ScViewOptions& GetOptions() const { return *pOptions; }
+ void SetOptions( const ScViewOptions& rOpt );
+
+ BOOL IsGridMode () const { return pOptions->GetOption( VOPT_GRID ); }
+ void SetGridMode ( BOOL bNewMode ) { pOptions->SetOption( VOPT_GRID, bNewMode ); }
+ BOOL IsSyntaxMode () const { return pOptions->GetOption( VOPT_SYNTAX ); }
+ void SetSyntaxMode ( BOOL bNewMode ) { pOptions->SetOption( VOPT_SYNTAX, bNewMode ); }
+ BOOL IsHeaderMode () const { return pOptions->GetOption( VOPT_HEADER ); }
+ void SetHeaderMode ( BOOL bNewMode ) { pOptions->SetOption( VOPT_HEADER, bNewMode ); }
+ BOOL IsTabMode () const { return pOptions->GetOption( VOPT_TABCONTROLS ); }
+ void SetTabMode ( BOOL bNewMode ) { pOptions->SetOption( VOPT_TABCONTROLS, bNewMode ); }
+ BOOL IsVScrollMode () const { return pOptions->GetOption( VOPT_VSCROLL ); }
+ void SetVScrollMode ( BOOL bNewMode ) { pOptions->SetOption( VOPT_VSCROLL, bNewMode ); }
+ BOOL IsHScrollMode () const { return pOptions->GetOption( VOPT_HSCROLL ); }
+ void SetHScrollMode ( BOOL bNewMode ) { pOptions->SetOption( VOPT_HSCROLL, bNewMode ); }
+ BOOL IsOutlineMode () const { return pOptions->GetOption( VOPT_OUTLINER ); }
+ void SetOutlineMode ( BOOL bNewMode ) { pOptions->SetOption( VOPT_OUTLINER, bNewMode ); }
+
+ void KillEditView();
+ void ResetEditView();
+ void SetEditEngine( ScSplitPos eWhich,
+ ScEditEngineDefaulter* pNewEngine,
+ Window* pWin, USHORT nNewX, USHORT nNewY );
+ void GetEditView( ScSplitPos eWhich, EditView*& rViewPtr, USHORT& rCol, USHORT& rRow );
+ BOOL HasEditView( ScSplitPos eWhich ) const
+ { return pEditView[eWhich] && bEditActive[eWhich]; }
+ EditView* GetEditView( ScSplitPos eWhich ) const
+ { return pEditView[eWhich]; }
+
+ void EditGrowX();
+ void EditGrowY();
+
+ USHORT GetEditViewCol() const { return nEditCol; }
+ USHORT GetEditViewRow() const { return nEditRow; }
+ USHORT GetEditEndCol() const { return nEditEndCol; }
+ USHORT GetEditEndRow() const { return nEditEndRow; }
+
+ Rectangle GetEditArea( ScSplitPos eWhich, USHORT nPosX, USHORT nPosY, Window* pWin,
+ const ScPatternAttr* pPattern = NULL );
+
+ void SetTabNo( USHORT nNewTab );
+ void SetActivePart( ScSplitPos eNewActive );
+
+ Point GetScrPos( USHORT nWhereX, USHORT nWhereY, ScSplitPos eWhich,
+ BOOL bAllowNeg = FALSE ) const;
+ Point GetScrPos( USHORT nWhereX, USHORT nWhereY, ScHSplitPos eWhich ) const;
+ Point GetScrPos( USHORT nWhereX, USHORT nWhereY, ScVSplitPos eWhich ) const;
+
+ USHORT CellsAtX( short nPosX, short nDir, ScHSplitPos eWhichX, USHORT nScrSizeY = SC_SIZE_NONE ) const;
+ USHORT CellsAtY( short nPosY, short nDir, ScVSplitPos eWhichY, USHORT nScrSizeX = SC_SIZE_NONE ) const;
+
+ USHORT VisibleCellsX( ScHSplitPos eWhichX ) const; // angezeigte komplette Zellen
+ USHORT VisibleCellsY( ScVSplitPos eWhichY ) const;
+ USHORT PrevCellsX( ScHSplitPos eWhichX ) const; // Zellen auf der vorgehenden Seite
+ USHORT PrevCellsY( ScVSplitPos eWhichY ) const;
+ USHORT LastCellsX( ScHSplitPos eWhichX ) const; // Zellen auf der letzten Seite
+ USHORT LastCellsY( ScVSplitPos eWhichY ) const;
+
+ BOOL IsOle();
+ void UpdateOle( ScSplitPos eWhich );
+ void SetScreen( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 );
+ void SetScreen( const Rectangle& rVisArea );
+ void SetScreenPos( const Point& rVisAreaStart );
+
+ void UpdateScreenZoom( const Fraction& rNewX, const Fraction& rNewY );
+
+ Size GetScrSize() const { return aScrSize; }
+
+ void RecalcPixPos();
+ Point GetPixPos( ScSplitPos eWhich ) const
+ { return Point( pThisTab->nPixPosX[WhichH(eWhich)],
+ pThisTab->nPixPosY[WhichV(eWhich)] ); }
+ void SetSpellingView( EditView* pSpView) { pSpellingView = pSpView; }
+ EditView* GetSpellingView() const { return pSpellingView; }
+
+ void UpdateOutlinerFlags( Outliner& rOutl ) const;
+
+ Point GetMousePosPixel();
+
+ BOOL UpdateFixX(USHORT nTab = MAXTAB+1);
+ BOOL UpdateFixY(USHORT nTab = MAXTAB+1);
+
+ USHORT GetTabStartCol() const { return nTabStartCol; }
+ void SetTabStartCol(USHORT nNew) { nTabStartCol = nNew; }
+
+ ScAddress GetCurPos() const;
+
+ const Size& GetScenButSize() const { return aScenButSize; }
+ void SetScenButSize(const Size& rNew) { aScenButSize = rNew; }
+};
+
+
+// ---------------------------------------------------------------------------
+
+inline void ScViewData::GetMoveCursor( USHORT& rCurX, USHORT& rCurY )
+{
+ if ( bIsRefMode )
+ {
+ rCurX = nRefEndX;
+ rCurY = nRefEndY;
+ }
+ else
+ {
+ rCurX = GetCurX();
+ rCurY = GetCurY();
+ }
+}
+
+inline ScHSplitPos WhichH( ScSplitPos ePos )
+{
+ return (ePos==SC_SPLIT_TOPLEFT || ePos==SC_SPLIT_BOTTOMLEFT) ?
+ SC_SPLIT_LEFT : SC_SPLIT_RIGHT;
+}
+
+inline ScVSplitPos WhichV( ScSplitPos ePos )
+{
+ return (ePos==SC_SPLIT_TOPLEFT || ePos==SC_SPLIT_TOPRIGHT) ?
+ SC_SPLIT_TOP : SC_SPLIT_BOTTOM;
+}
+
+inline ScSplitPos Which( ScHSplitPos eHPos )
+{
+ return (eHPos==SC_SPLIT_LEFT) ?
+ SC_SPLIT_BOTTOMLEFT : SC_SPLIT_BOTTOMRIGHT;
+}
+
+inline ScSplitPos Which( ScVSplitPos eVPos )
+{
+ return (eVPos==SC_SPLIT_TOP) ?
+ SC_SPLIT_TOPLEFT : SC_SPLIT_BOTTOMLEFT;
+}
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/viewfunc.hxx b/sc/source/ui/inc/viewfunc.hxx
new file mode 100644
index 000000000000..dbf7100cf0ad
--- /dev/null
+++ b/sc/source/ui/inc/viewfunc.hxx
@@ -0,0 +1,365 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewfunc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_VIEWFUNC_HXX
+#define SC_VIEWFUNC_HXX
+
+#ifndef SC_TABVIEW_HXX
+#include "tabview.hxx"
+#endif
+
+#ifndef _SVSTDARR_USHORTS
+
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+
+#endif
+
+#ifndef _SVSTDARR_STRINGS
+
+#define _SVSTDARR_STRINGS
+#include <svtools/svstdarr.hxx>
+
+#endif
+
+#define TABLEID_DOC 0xFFFF
+
+class ScPatternAttr;
+class ScAutoFormatData;
+class SvxSearchItem;
+class SfxItemSet;
+class SvxBorderLine;
+class SvxBoxItem;
+class SvxBoxInfoItem;
+class SfxStyleSheet;
+class SfxPoolItem;
+class SvDataObject;
+class EditTextObject;
+struct ScSolveParam;
+struct ScTabOpParam;
+class ScPostIt;
+class ScConditionalFormat;
+class ScValidationData;
+class SdrModel;
+class SvInPlaceObject;
+class Graphic;
+class Exchange;
+class ScRangeList;
+class SvxHyperlinkItem;
+
+// ---------------------------------------------------------------------------
+
+class ScViewFunc : public ScTabView
+{
+private:
+ ScAddress aFormatSource; // fuer automatisches Erweitern von Formatierung
+ ScRange aFormatArea;
+ BOOL bFormatValid;
+
+public:
+ ScViewFunc( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell );
+ ScViewFunc( Window* pParent, const ScViewFunc& rViewFunc, ScTabViewShell* pViewShell );
+ ~ScViewFunc();
+
+ const ScPatternAttr* GetSelectionPattern ();
+ void GetSelectionFrame ( SvxBoxItem& rLineOuter,
+ SvxBoxInfoItem& rLineInner );
+
+ BOOL GetAutoSumArea(ScRangeList& rRangeList);
+ void EnterAutoSum(const ScRangeList& rRangeList);
+
+ void EnterData( USHORT nCol, USHORT nRow, USHORT nTab, const String& rString,
+ BOOL bRecord = TRUE );
+ void EnterData( USHORT nCol, USHORT nRow, USHORT nTab, const double& rValue );
+ void EnterData( USHORT nCol, USHORT nRow, USHORT nTab, const EditTextObject* pData,
+ BOOL bRecord = TRUE, BOOL bTestSimple = FALSE );
+
+ void EnterMatrix( const String& rString );
+ void EnterBlock( const String& rString, const EditTextObject* pData );
+
+ void EnterDataAtCursor( const String& rString ); //! nicht benutzt ?
+
+ void CutToClip( ScDocument* pClipDoc=NULL );
+ void CopyToClip( ScDocument* pClipDoc=NULL, BOOL bCut = FALSE );
+ BOOL PasteFromClip( USHORT nFlags, ScDocument* pClipDoc = NULL,
+ USHORT nFunction = PASTE_NOFUNC, BOOL bSkipEmpty = FALSE,
+ BOOL bTranspose = FALSE, BOOL bAsLink = FALSE,
+ InsCellCmd eMoveMode = INS_NONE,
+ USHORT nUndoExtraFlags = IDF_NONE );
+
+ void FillTab( USHORT nFlags, USHORT nFunction, BOOL bSkipEmpty, BOOL bAsLink );
+
+ void PasteFromSystem();
+ BOOL PasteFromSystem( ULONG nFormatId, BOOL bApi = FALSE );
+// void ImportString(const String& rString, USHORT nStartCol, USHORT nStartRow);
+
+ BOOL DropFiles( const DropEvent& );
+ BOOL DropFile( const DropEvent&, const String& );
+ BOOL OpenFile( const String& );
+
+ void PasteDraw();
+ void PasteDraw( const Point& rLogicPos, SdrModel* pModel,
+ BOOL bGroup = FALSE );
+
+ BOOL PasteOnDrawObject( SvDataObject* pObject, SdrObject* pHitObj, BOOL bLink );
+ BOOL PasteDataObject( SvDataObject* pObject, USHORT nPosX, USHORT nPosY,
+ Window* pWin = NULL, Point* pLogicPos = NULL );
+ BOOL LinkDataObject( SvDataObject* pObject, USHORT nPosX, USHORT nPosY,
+ Window* pWin = NULL, Point* pLogicPos = NULL );
+ BOOL PasteDataFormat( ULONG nFormatId, SvDataObject* pObject,
+ USHORT nPosX, USHORT nPosY,
+ Window* pWin = NULL, Point* pLogicPos = NULL );
+ BOOL PasteFile( const Point&, const String&, BOOL bLink=FALSE );
+ BOOL PasteObject( const Point&, SvInPlaceObject*, SvDataObject* = NULL );
+ BOOL PasteBitmap( const Point&, const Bitmap& );
+ BOOL PasteMetaFile( const Point&, const GDIMetaFile& );
+ BOOL PasteGraphic( const Point& rPos, const Graphic& rGraphic,
+ const String& rFile, const String& rFilter );
+ BOOL PasteBookmark( SvDataObject* pObject, USHORT nPosX, USHORT nPosY );
+ BOOL PasteDDE( SvDataObject* pObject );
+
+ BOOL ApplyGraphicToObject( SdrObject* pObject, const Graphic& rGraphic );
+
+ void InsertBookmark( const String& rDescription, const String& rURL,
+ USHORT nPosX, USHORT nPosY, const String* pTarget = NULL );
+ BOOL HasBookmarkAtCursor( SvxHyperlinkItem* pContent );
+
+ long DropRequestHdl( Exchange* pExchange );
+ void MoveBlockTo( const ScRange& rSource, const ScAddress& rDestPos,
+ BOOL bCut, BOOL bRecord = TRUE, BOOL bPaint = TRUE );
+
+ void LinkBlock( const ScRange& rSource, const ScAddress& rDestPos );
+
+ void CreateNames( USHORT nFlags );
+ USHORT GetCreateNameFlags();
+ void InsertNameList();
+ BOOL InsertName( const String& rName, const String& rSymbol,
+ const String& rType );
+
+ void ApplyAttributes( const SfxItemSet* pDialogSet, const SfxItemSet* pOldSet,
+ BOOL bRecord = TRUE );
+ void ApplyAttr( const SfxPoolItem& rAttrItem );
+ void ApplySelectionPattern( const ScPatternAttr& rAttr,
+ BOOL bRecord = TRUE,
+ BOOL bCursorOnly = FALSE );
+ void ApplyPatternLines( const ScPatternAttr& rAttr,
+ const SvxBoxItem* pNewOuter,
+ const SvxBoxInfoItem* pNewInner, BOOL bRecord = TRUE );
+
+ const SfxStyleSheet* GetStyleSheetFromMarked();
+ void SetStyleSheetToMarked( SfxStyleSheet* pStyleSheet,
+ BOOL bRecord = TRUE );
+ void RemoveStyleSheetInUse( SfxStyleSheet* pStyleSheet );
+ void UpdateStyleSheetInUse( SfxStyleSheet* pStyleSheet );
+
+ void SetNumberFormat( short nFormatType, ULONG nAdd = 0 );
+ void SetNumFmtByStr( const String& rCode );
+ void ChangeNumFmtDecimals( BOOL bIncrement );
+
+ void SetConditionalFormat( const ScConditionalFormat& rNew );
+ void SetValidation( const ScValidationData& rNew );
+
+ void ChangeIndent( BOOL bIncrement );
+
+ void Protect( USHORT nTab, const String& rPassword );
+ BOOL Unprotect( USHORT nTab, const String& rPassword );
+
+ void DeleteCells( DelCellCmd eCmd, BOOL bRecord = TRUE );
+ BOOL InsertCells( InsCellCmd eCmd, BOOL bRecord = TRUE );
+ void DeleteMulti( BOOL bRows, BOOL bRecord = TRUE );
+
+ void DeleteContents( USHORT nFlags, BOOL bRecord = TRUE );
+
+ void SetWidthOrHeight( BOOL bWidth, USHORT nRangeCnt, USHORT* pRanges,
+ ScSizeMode eMode, USHORT nSizeTwips,
+ BOOL bRecord = TRUE, BOOL bPaint = TRUE );
+ void SetMarkedWidthOrHeight( BOOL bWidth, ScSizeMode eMode, USHORT nSizeTwips,
+ BOOL bRecord = TRUE, BOOL bPaint = TRUE );
+ void ShowMarkedColumns( BOOL bShow, BOOL bRecord = TRUE );
+ void ShowMarkedRows( BOOL bShow, BOOL bRecord = TRUE );
+
+ BOOL AdjustBlockHeight( BOOL bPaint = TRUE, ScMarkData* pMarkData = NULL );
+ BOOL AdjustRowHeight( USHORT nStartRow, USHORT nEndRow, BOOL bPaint = TRUE );
+
+ void ModifyCellSize( ScDirection eDir, BOOL bOptimal );
+
+ void InsertPageBreak( BOOL bColumn, BOOL bRecord = TRUE,
+ const ScAddress* pPos = NULL,
+ BOOL bSetModified = TRUE );
+ void DeletePageBreak( BOOL bColumn, BOOL bRecord = TRUE,
+ const ScAddress* pPos = NULL,
+ BOOL bSetModified = TRUE );
+
+ void RemoveManualBreaks();
+
+ void SetPrintZoom(USHORT nScale, USHORT nPages);
+ void AdjustPrintZoom();
+
+ BOOL TestMergeCells();
+ BOOL TestRemoveMerge();
+
+ BOOL MergeCells( BOOL bApi, BOOL& rDoContents, BOOL bRecord = TRUE );
+ BOOL RemoveMerge( BOOL bRecord = TRUE );
+
+ void FillSimple( FillDir eDir, BOOL bRecord = TRUE );
+ void FillSeries( FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd,
+ double fStart, double fStep, double fMax, BOOL bRecord = TRUE );
+ void FillAuto( FillDir eDir, USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow, USHORT nCount, BOOL bRecord = TRUE );
+
+ ScAutoFormatData* CreateAutoFormatData();
+ void AutoFormat( USHORT nFormatNo, BOOL bRecord = TRUE );
+
+ void SearchAndReplace( const SvxSearchItem* pSearchItem,
+ BOOL bAddUndo, BOOL bIsApi );
+
+ void Solve( const ScSolveParam& rParam );
+ void TabOp( const ScTabOpParam& rParam, BOOL bRecord = TRUE );
+
+ BOOL InsertTable( const String& rName, USHORT nTabNr, BOOL bRecord = TRUE );
+ BOOL InsertTables(SvStrings *pNames, USHORT nTab, USHORT nCount, BOOL bRecord = TRUE);
+
+
+ BOOL AppendTable( const String& rName, BOOL bRecord = TRUE );
+
+ BOOL DeleteTable( USHORT nTabNr, BOOL bRecord = TRUE );
+ BOOL DeleteTables(const SvUShorts &TheTabs, BOOL bRecord = TRUE );
+
+ BOOL RenameTable( const String& rName, USHORT nTabNr );
+ void MoveTable( USHORT nDestDocNo, USHORT nDestTab, BOOL bCopy );
+ void ImportTables( ScDocShell* pSrcShell,
+ USHORT nCount, const USHORT* pSrcTabs,
+ BOOL bLink,USHORT nTab);
+
+ void InsertTableLink( const String& rFile,
+ const String& rFilter, const String& rOptions,
+ const String& rTabName );
+ void InsertAreaLink( const String& rFile,
+ const String& rFilter, const String& rOptions,
+ const String& rSource );
+
+ void ShowTable( const String& rName );
+ void HideTable( USHORT nTabNr );
+
+ void MakeScenario( const String& rName, const String& rComment,
+ const Color& rColor, USHORT nFlags );
+ void ExtendScenario();
+ void UseScenario( const String& rName );
+
+ void InsertSpecialChar( const String& rStr, const Font& rFont );
+
+ void InsertDummyObject();
+ void InsertOleObject();
+
+ void InsertDraw();
+
+ void SetSelectionFrameLines( const SvxBorderLine* pLine,
+ BOOL bColorOnly );
+
+ void SetNote( USHORT nCol, USHORT nRow, USHORT nTab, const ScPostIt& rNote );
+ void DoSpellingChecker( BOOL bRecord = TRUE );
+ void DoThesaurus( BOOL bRecord = TRUE );
+ DECL_LINK( SpellError, void * );
+
+ void SetPrintRanges( const String* pPrint,
+ const String* pRepCol, const String* pRepRow,
+ BOOL bAddPrint );
+
+ void DetectiveAddPred();
+ void DetectiveDelPred();
+ void DetectiveAddSucc();
+ void DetectiveDelSucc();
+ void DetectiveAddError();
+ void DetectiveMarkInvalid();
+ void DetectiveDelAll();
+ void DetectiveRefresh();
+
+ void ShowNote();
+ void EditNote();
+ void HideNote();
+
+ void ForgetFormatArea() { bFormatValid = FALSE; }
+ BOOL SelectionEditable( BOOL* pOnlyNotBecauseOfMatrix = NULL );
+
+ // interne Hilfsfunktionen
+protected:
+ void UpdateLineAttrs( SvxBorderLine& rLine,
+ const SvxBorderLine* pDestLine,
+ const SvxBorderLine* pSrcLine,
+ BOOL bColor );
+
+ void PaintWidthHeight( BOOL bColumns, USHORT nStart, USHORT nEnd );
+
+
+private:
+ void PasteRTF( USHORT nCol, USHORT nStartRow, SvDataObject* pObject );
+ USHORT GetOptimalColWidth( USHORT nCol, USHORT nTab, BOOL bFormula );
+
+ void StartFormatArea();
+ BOOL TestFormatArea( USHORT nCol, USHORT nRow, USHORT nTab, BOOL bAttrChanged );
+ void DoAutoAttributes( USHORT nCol, USHORT nRow, USHORT nTab,
+ BOOL bAttrChanged, BOOL bAddUndo );
+};
+
+
+
+#endif
+
diff --git a/sc/source/ui/inc/viewutil.hxx b/sc/source/ui/inc/viewutil.hxx
new file mode 100644
index 000000000000..9f5e90b73680
--- /dev/null
+++ b/sc/source/ui/inc/viewutil.hxx
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewutil.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_VIEWUTIL_HXX
+#define SC_VIEWUTIL_HXX
+
+#ifndef _SOLAR_H
+#include <tools/solar.h>
+#endif
+
+class String;
+class SvxFontItem;
+
+class ScChangeAction;
+class ScChangeViewSettings;
+class ScDocument;
+
+
+enum ScUpdateMode { SC_UPDATE_ALL, SC_UPDATE_CHANGED, SC_UPDATE_MARKS };
+
+
+// ---------------------------------------------------------------------------
+
+class ScViewUtil // static Methoden
+{
+public:
+ static BOOL ExecuteCharMap( const SvxFontItem& rOldFont,
+ SvxFontItem& rNewFont,
+ String& rString );
+
+ static BOOL IsActionShown( const ScChangeAction& rAction,
+ const ScChangeViewSettings& rSettings,
+ ScDocument& rDocument );
+};
+
+// ---------------------------------------------------------------------------
+
+class ScUpdateRect
+{
+private:
+ USHORT nOldStartX;
+ USHORT nOldStartY;
+ USHORT nOldEndX;
+ USHORT nOldEndY;
+ USHORT nNewStartX;
+ USHORT nNewStartY;
+ USHORT nNewEndX;
+ USHORT nNewEndY;
+ USHORT nContX1;
+ USHORT nContY1;
+ USHORT nContX2;
+ USHORT nContY2;
+public:
+ ScUpdateRect( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 );
+ void SetNew( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 );
+ BOOL GetDiff( USHORT& rX1, USHORT& rY1, USHORT& rX2, USHORT& rY2 );
+ BOOL GetXorDiff( USHORT& rX1, USHORT& rY1, USHORT& rX2, USHORT& rY2, BOOL& rCont );
+ void GetContDiff( USHORT& rX1, USHORT& rY1, USHORT& rX2, USHORT& rY2 );
+};
+
+
+
+
+#endif
+
diff --git a/sc/source/ui/miscdlgs/acredlin.cxx b/sc/source/ui/miscdlgs/acredlin.cxx
new file mode 100644
index 000000000000..c34589cc152b
--- /dev/null
+++ b/sc/source/ui/miscdlgs/acredlin.cxx
@@ -0,0 +1,2294 @@
+/*************************************************************************
+ *
+ * $RCSfile: acredlin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes ---------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <svtools/undo.hxx>
+#include <vcl/msgbox.hxx>
+
+// INCLUDE -------------------------------------------------------------------
+
+#include "acredlin.hxx"
+#include "global.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "scresid.hxx"
+#include "globstr.hrc"
+#include "acredlin.hrc"
+#include "simpref.hxx"
+#include "scmod.hxx"
+#include "popmenu.hxx"
+#include "tabvwsh.hxx"
+
+// defines -------------------------------------------------------------------
+
+#define ABS_SREF SCA_VALID \
+ | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
+#define ABS_DREF ABS_SREF \
+ | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE
+#define ABS_SREF3D ABS_SREF | SCA_TAB_3D
+#define ABS_DREF3D ABS_DREF | SCA_TAB_3D
+
+
+
+#define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute();
+
+inline void EnableDisable( Window& rWin, BOOL bEnable )
+{
+ if (bEnable)
+ rWin.Enable();
+ else
+ rWin.Disable();
+}
+
+#define RD_SPECIAL_NONE 0
+#define RD_SPECIAL_CONTENT 1
+#define RD_SPECIAL_VISCONTENT 2
+
+//============================================================================
+// class ScRedlinData
+//----------------------------------------------------------------------------
+
+ScRedlinData::ScRedlinData()
+ :RedlinData()
+{
+ nInfo=RD_SPECIAL_NONE;
+ nActionNo=0;
+ pData=NULL;
+ bDisabled=FALSE;
+ bIsRejectable=FALSE;
+ bIsAcceptable=FALSE;
+ nTable=0xffff;
+ nCol=0xffff;
+ nRow=0xffff;
+}
+
+ScRedlinData::~ScRedlinData()
+{
+ nInfo=RD_SPECIAL_NONE;
+ nActionNo=0;
+ pData=NULL;
+ bDisabled=FALSE;
+ bIsRejectable=FALSE;
+ bIsAcceptable=FALSE;
+}
+
+static BOOL bSomebodyKilledMe= FALSE;
+static BOOL bFilterPageVisible=FALSE;
+static BOOL bSimpleRefDlgStarted=FALSE;
+static BOOL bScAcceptChgDlgIsDead=TRUE;
+
+static ScChangeViewSettings aPrivChangeViewSet;
+
+//============================================================================
+// class ScAcceptChgDlg
+//----------------------------------------------------------------------------
+ScAcceptChgDlg::ScAcceptChgDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData)
+
+ : SfxModelessDialog( pB, pCW, pParent, ScResId(RID_SCDLG_CHANGES) ),
+ //
+ aAcceptChgCtr ( this, ResId( CTR_REDLINING ) ),
+ //
+ aStrInsertCols ( ResId( STR_INSERT_COLS)),
+ aStrInsertRows ( ResId( STR_INSERT_ROWS)),
+ aStrInsertTabs ( ResId( STR_INSERT_TABS)),
+ aStrDeleteCols ( ResId( STR_DELETE_COLS)),
+ aStrDeleteRows ( ResId( STR_DELETE_ROWS)),
+ aStrDeleteTabs ( ResId( STR_DELETE_TABS)),
+ aStrMove ( ResId( STR_MOVE )),
+ aStrContent ( ResId( STR_CONTENT )),
+ aStrReject ( ResId( STR_REJECT )),
+ aStrAllAccepted ( ResId( STR_ACCEPTED )),
+ aStrAllRejected ( ResId( STR_REJECTED )),
+ aStrNoEntry ( ResId( STR_NO_ENTRY )),
+ aStrEmpty ( ResId( STR_EMPTY )),
+ aStrContentWithChild ( ResId( STR_CONTENT_WITH_CHILD)),
+ aStrChildContent ( ResId( STR_CHILD_CONTENT)),
+ aStrChildOrgContent ( ResId( STR_CHILD_ORGCONTENT)),
+ aExpBmp ( ResId( RID_BMP_EXPAND ) ),
+ aCollBmp ( ResId( RID_BMP_COLLAPSE ) ),
+ aCloseBmp ( ResId( BMP_STR_CLOSE ) ),
+ aOpenBmp ( ResId( BMP_STR_OPEN ) ),
+ aEndBmp ( ResId( BMP_STR_END ) ),
+
+ //
+ pViewData ( ptrViewData ),
+ pDoc ( ptrViewData->GetDocument() ),
+ aLocalRangeName ( *(pDoc->GetRangeName()) )
+{
+ FreeResource();
+ bScAcceptChgDlgIsDead=FALSE;
+ bNoSelection=FALSE;
+ bNeedsUpdate=FALSE;
+ bIgnoreMsg=FALSE;
+ nAcceptCount=0;
+ nRejectCount=0;
+ bAcceptEnableFlag=TRUE;
+ bRejectEnableFlag=TRUE;
+ bHasFilterEntry=FALSE;
+ bUseColor=FALSE;
+ aReOpenTimer.SetTimeout(50);
+ aReOpenTimer.SetTimeoutHdl(LINK( this, ScAcceptChgDlg, ReOpenTimerHdl ));
+
+ if(bSomebodyKilledMe)
+ {
+ if(bFilterPageVisible)
+ aAcceptChgCtr.ShowFilterPage();
+
+ if(bSimpleRefDlgStarted)
+ aReOpenTimer.Start();
+ }
+
+ MinSize=aAcceptChgCtr.GetMinSizePixel();
+ MinSize.Height()+=2;
+ MinSize.Width()+=2;
+ SetMinOutputSizePixel(MinSize);
+ aUnknown.AssignAscii(RTL_CONSTASCII_STRINGPARAM("Unknown"));
+
+ pTPFilter=aAcceptChgCtr.GetFilterPage();
+ pTPView=aAcceptChgCtr.GetViewPage();
+ pTheView=pTPView->GetTableControl();
+ aSelectionTimer.SetTimeout(100);
+ aSelectionTimer.SetTimeoutHdl(LINK( this, ScAcceptChgDlg, UpdateSelectionHdl ));
+
+ pTPFilter->SetReadyHdl(LINK( this, ScAcceptChgDlg, FilterHandle ));
+ pTPFilter->SetRefHdl(LINK( this, ScAcceptChgDlg, RefHandle ));
+ pTPFilter->SetModifyHdl(LINK( this, ScAcceptChgDlg, FilterModified));
+ pTPFilter->HideRange(FALSE);
+ pTPView->InsertCalcHeader();
+ pTPView->SetRejectClickHdl( LINK( this, ScAcceptChgDlg,RejectHandle));
+ pTPView->SetAcceptClickHdl( LINK(this, ScAcceptChgDlg, AcceptHandle));
+ pTPView->SetRejectAllClickHdl( LINK( this, ScAcceptChgDlg,RejectAllHandle));
+ pTPView->SetAcceptAllClickHdl( LINK(this, ScAcceptChgDlg, AcceptAllHandle));
+ pTheView->SetCalcView();
+ pTheView->SetWindowBits(WB_HASLINES|WB_CLIPCHILDREN|WB_HASBUTTONS|WB_HASBUTTONSATROOT|WB_HSCROLL);
+ pTheView->SetExpandingHdl( LINK(this, ScAcceptChgDlg, ExpandingHandle));
+ pTheView->SetSelectHdl( LINK(this, ScAcceptChgDlg, SelectHandle));
+ pTheView->SetDeselectHdl( LINK(this, ScAcceptChgDlg, SelectHandle));
+ pTheView->SetCommandHdl( LINK(this, ScAcceptChgDlg, CommandHdl));
+ pTheView->SetColCompareHdl( LINK(this, ScAcceptChgDlg,ColCompareHdl));
+ pTheView->SetNodeBitmaps( aExpBmp, aCollBmp );
+ pTheView->SetSelectionMode(MULTIPLE_SELECTION);
+ pTheView->SetHighlightRange(1);
+
+ Init();
+
+ aAcceptChgCtr.SetMinSizeHdl( LINK( this, ScAcceptChgDlg, MinSizeHandle ));
+
+ UpdateView();
+ SvLBoxEntry* pEntry=pTheView->First();
+ if(pEntry!=NULL)
+ {
+ pTheView->Select(pEntry);
+ }
+ bSomebodyKilledMe=TRUE;
+}
+ScAcceptChgDlg::~ScAcceptChgDlg()
+{
+ bScAcceptChgDlgIsDead=TRUE;
+ if(bSomebodyKilledMe)
+ {
+ SetMyStaticData();
+ }
+ ClearView();
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+
+ if(pChanges!=NULL)
+ {
+ Link aLink;
+ pChanges->SetModifiedLink(aLink);
+ }
+}
+
+void ScAcceptChgDlg::ReInit(ScViewData* ptrViewData)
+{
+ pViewData=ptrViewData;
+ if(pViewData!=NULL)
+ {
+ pDoc=ptrViewData->GetDocument();
+ }
+ else
+ {
+ pDoc=NULL;
+ }
+
+ bNoSelection=FALSE;
+ bNeedsUpdate=FALSE;
+ bIgnoreMsg=FALSE;
+ nAcceptCount=0;
+ nRejectCount=0;
+ bAcceptEnableFlag=TRUE;
+ bRejectEnableFlag=TRUE;
+
+ Init();
+ ClearView();
+ UpdateView();
+}
+
+void __EXPORT ScAcceptChgDlg::Init()
+{
+ String aAreaStr;
+ ScRange aRange;
+
+ DBG_ASSERT( pViewData && pDoc, "ViewData oder Document nicht gefunden!" );
+
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+
+ if(pChanges!=NULL)
+ {
+ pChanges->SetModifiedLink( LINK( this, ScAcceptChgDlg,ChgTrackModHdl));
+ aChangeViewSet.SetTheAuthorToShow(pChanges->GetUser());
+ pTPFilter->ClearAuthors();
+ StrCollection aUserColl=pChanges->GetUserCollection();
+ for(USHORT i=0;i<aUserColl.GetCount();i++)
+ pTPFilter->InsertAuthor(aUserColl[i]->GetString());
+ }
+
+
+ ScChangeViewSettings* pViewSettings=pDoc->GetChangeViewSettings();
+
+ if(pViewSettings!=NULL &&!bSomebodyKilledMe)
+ {
+ aChangeViewSet=*pViewSettings;
+ aPrivChangeViewSet=aChangeViewSet;
+ }
+ else
+ aChangeViewSet=aPrivChangeViewSet;
+
+ pTPFilter->CheckDate(aChangeViewSet.HasDate());
+ pTPFilter->SetFirstDate(aChangeViewSet.GetTheFirstDateTime());
+ pTPFilter->SetFirstTime(aChangeViewSet.GetTheFirstDateTime());
+ pTPFilter->SetLastDate(aChangeViewSet.GetTheLastDateTime());
+ pTPFilter->SetLastTime(aChangeViewSet.GetTheLastDateTime());
+ pTPFilter->SetDateMode((USHORT)aChangeViewSet.GetTheDateMode());
+ pTPFilter->CheckComment(aChangeViewSet.HasComment());
+ pTPFilter->SetComment(aChangeViewSet.GetTheComment());
+
+ pTPFilter->CheckAuthor(aChangeViewSet.HasAuthor());
+ String aString=aChangeViewSet.GetTheAuthorToShow();
+ if(aString.Len()!=0)
+ {
+ pTPFilter->SelectAuthor(aString);
+ if(pTPFilter->GetSelectedAuthor()!=aString)
+ {
+ pTPFilter->InsertAuthor(aString);
+ pTPFilter->SelectAuthor(aString);
+ }
+ }
+ else
+ {
+ pTPFilter->SelectedAuthorPos(0);
+ }
+
+ pTPFilter->CheckRange(aChangeViewSet.HasRange());
+
+ ScRange* pRangeEntry=aChangeViewSet.GetTheRangeList().GetObject(0);
+ aRangeList=aChangeViewSet.GetTheRangeList();
+
+ if(pRangeEntry!=NULL)
+ {
+ String aRefStr;
+ pRangeEntry->Format( aRefStr, ABS_DREF3D, pDoc );
+ pTPFilter->SetRange(aRefStr);
+ }
+
+ Point aPoint(1,1);
+ aAcceptChgCtr.SetPosPixel(aPoint);
+ InitFilter();
+}
+
+
+
+void ScAcceptChgDlg::ClearView()
+{
+ ULONG nCount=pTheView->GetEntryCount();
+ nAcceptCount=0;
+ nRejectCount=0;
+ pTheView->SetUpdateMode(FALSE);
+
+ pTheView->Clear();
+ pTheView->SetUpdateMode(TRUE);
+}
+
+String* ScAcceptChgDlg::MakeTypeString(ScChangeActionType eType)
+{
+ String* pStr;
+
+ switch(eType)
+ {
+
+ case SC_CAT_INSERT_COLS: pStr=&aStrInsertCols;break;
+
+ case SC_CAT_INSERT_ROWS: pStr=&aStrInsertRows;break;
+
+ case SC_CAT_INSERT_TABS: pStr=&aStrInsertTabs;break;
+
+ case SC_CAT_DELETE_COLS: pStr=&aStrDeleteCols;break;
+
+ case SC_CAT_DELETE_ROWS: pStr=&aStrDeleteRows;break;
+
+ case SC_CAT_DELETE_TABS: pStr=&aStrDeleteTabs;break;
+
+ case SC_CAT_MOVE: pStr=&aStrMove;break;
+
+ case SC_CAT_CONTENT: pStr=&aStrContent;break;
+
+ case SC_CAT_REJECT: pStr=&aStrReject;break;
+
+ default: pStr=&aUnknown;break;
+ }
+ return pStr;
+}
+
+
+BOOL ScAcceptChgDlg::IsValidAction(const ScChangeAction* pScChangeAction)
+{
+ if(pScChangeAction==NULL) return FALSE;
+
+ BOOL bFlag=FALSE;
+
+ ScRange aRef=pScChangeAction->GetBigRange().MakeRange();
+ String aUser=pScChangeAction->GetUser();
+ DateTime aDateTime=pScChangeAction->GetDateTime();
+
+ ScChangeActionType eType=pScChangeAction->GetType();
+ String aString;
+ String aDesc;
+
+ String aComment=pScChangeAction->GetComment();
+ aComment.EraseAllChars('\n');
+
+ if(eType==SC_CAT_CONTENT)
+ {
+ if(!pScChangeAction->IsDialogParent())
+ {
+ pScChangeAction->GetDescription( aDesc, pDoc, TRUE);
+ }
+ }
+ else
+ {
+ pScChangeAction->GetDescription( aDesc, pDoc,!pScChangeAction->IsMasterDelete());
+ }
+
+ if(aDesc.Len()>0)
+ {
+ aComment.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
+ aComment+=aDesc;
+ aComment+=')';
+ }
+
+ if(pTheView->IsValidEntry(&aUser,&aDateTime,&aComment))
+ {
+ if(pTPFilter->IsRange())
+ {
+ ScRange* pRangeEntry=aRangeList.First();
+
+ while(pRangeEntry!=NULL)
+ {
+ if(pRangeEntry->Intersects(aRef)) break;
+ pRangeEntry=aRangeList.Next();
+ }
+
+ if(pRangeEntry!=NULL)
+ {
+ bFlag=TRUE;
+ }
+ }
+ else
+ {
+ bFlag=TRUE;
+ }
+ }
+
+ return bFlag;
+}
+
+SvLBoxEntry* ScAcceptChgDlg::InsertChangeAction(const ScChangeAction* pScChangeAction,
+ ScChangeActionState eState,SvLBoxEntry* pParent,
+ BOOL bDelMaster,BOOL bDisabled,ULONG nPos)
+{
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+
+ if(pScChangeAction==NULL || pChanges==NULL) return NULL;
+
+ SvLBoxEntry* pEntry=NULL;
+
+ BOOL bFlag=FALSE;
+
+ ScRange aRef=pScChangeAction->GetBigRange().MakeRange();
+ String aUser=pScChangeAction->GetUser();
+ DateTime aDateTime=pScChangeAction->GetDateTime();
+
+ String aRefStr;
+ ScChangeActionType eType=pScChangeAction->GetType();
+ String aString;
+ String aDesc;
+
+ ScRedlinData* pNewData=new ScRedlinData;
+
+ if(pNewData!=NULL)
+ {
+ pNewData->bIsRejectable=pScChangeAction->IsClickable();
+ pNewData->bIsAcceptable=pNewData->bIsRejectable;
+ pNewData->bDisabled=!pNewData->bIsRejectable | bDisabled;
+ pNewData->nActionNo=pScChangeAction->GetActionNumber();
+ pNewData->aDateTime=aDateTime;
+ pNewData->pData=(void *)pScChangeAction;
+ pNewData->nRow = aRef.aStart.Row();
+ pNewData->nCol = aRef.aStart.Col();
+ pNewData->nTable= aRef.aStart.Tab();
+ }
+
+ if(eType==SC_CAT_CONTENT)
+ {
+ if(pScChangeAction->IsDialogParent())
+ {
+ aString=aStrContentWithChild;
+ if(pNewData!=NULL)
+ {
+ pNewData->nInfo=RD_SPECIAL_VISCONTENT;
+ pNewData->bIsRejectable=FALSE;
+ pNewData->bIsAcceptable=FALSE;
+ }
+ }
+ else
+ {
+ aString=*MakeTypeString(eType);
+ pScChangeAction->GetDescription( aDesc, pDoc, TRUE);
+ }
+ }
+ else
+ {
+ aString=*MakeTypeString(eType);
+
+ if(bDelMaster)
+ {
+ pScChangeAction->GetDescription( aDesc, pDoc,TRUE);
+ if(pNewData!=NULL)
+ {
+ pNewData->bDisabled=TRUE;
+ pNewData->bIsRejectable=FALSE;
+ }
+ }
+ else
+ pScChangeAction->GetDescription( aDesc, pDoc,!pScChangeAction->IsMasterDelete());
+
+ }
+
+ aString+='\t';
+ pScChangeAction->GetRefString(aRefStr, pDoc, TRUE);
+ aString+=aRefStr;
+ aString+='\t';
+
+ BOOL bIsGenerated;
+
+ if(!pChanges->IsGenerated(pScChangeAction->GetActionNumber()))
+ {
+ aString+=aUser;
+ aString+='\t';
+
+ aString+=aInter.GetDate(aDateTime);
+ aString+=' ';
+ aString+=aInter.GetTime(aDateTime);
+ aString+='\t';
+ bIsGenerated=FALSE;
+ }
+ else
+ {
+ aString+='\t';
+ aString+='\t';
+ bIsGenerated=TRUE;
+ }
+
+ String aComment=pScChangeAction->GetComment();
+ aComment.EraseAllChars('\n');
+ if(aDesc.Len()>0)
+ {
+ aComment.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
+ aComment+=aDesc;
+ aComment+=')';
+ }
+
+ aString+=aComment;
+
+ if(pTheView->IsValidEntry(&aUser,&aDateTime)|| bIsGenerated)
+ {
+ if(pTheView->IsValidComment(&aComment))
+ {
+ if(pTPFilter->IsRange())
+ {
+ ScRange* pRangeEntry=aRangeList.First();
+
+ while(pRangeEntry!=NULL)
+ {
+ if(pRangeEntry->Intersects(aRef)) break;
+ pRangeEntry=aRangeList.Next();
+ }
+ //SC_CAS_VIRGIN,SC_CAS_ACCEPTED,SC_CAS_REJECTED
+ if(pRangeEntry!=NULL)
+ {
+ bHasFilterEntry=TRUE;
+ bFlag=TRUE;
+ }
+ }
+ else if(!bIsGenerated)
+ {
+ bHasFilterEntry=TRUE;
+ bFlag=TRUE;
+ }
+ }
+ }
+
+ if(!bFlag&& bUseColor&& pParent==NULL)
+ {
+ pEntry=pTheView->InsertEntry(aString,pNewData,Color(COL_LIGHTBLUE),pParent,nPos);
+ }
+ else if(bFlag&& bUseColor&& pParent!=NULL)
+ {
+ pEntry=pTheView->InsertEntry(aString,pNewData,Color(COL_GREEN),pParent,nPos);
+ SvLBoxEntry* pExpEntry=pParent;
+
+ while(pExpEntry!=NULL && !pTheView->IsExpanded(pExpEntry))
+ {
+ SvLBoxEntry* pTmpEntry=pTheView->GetParent(pExpEntry);
+
+ if(pTmpEntry!=NULL) pTheView->Expand(pExpEntry);
+
+ pExpEntry=pTmpEntry;
+ }
+ }
+ else
+ {
+ pEntry=pTheView->InsertEntry(aString,pNewData,pParent,nPos);
+ }
+ return pEntry;
+}
+
+SvLBoxEntry* ScAcceptChgDlg::InsertFilteredAction(const ScChangeAction* pScChangeAction,
+ ScChangeActionState eState,SvLBoxEntry* pParent,
+ BOOL bDelMaster,BOOL bDisabled,ULONG nPos)
+{
+
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+
+ if(pScChangeAction==NULL || pChanges==NULL) return NULL;
+
+ BOOL bIsGenerated=pChanges->IsGenerated(pScChangeAction->GetActionNumber());
+
+ SvLBoxEntry* pEntry=NULL;
+
+ int bFlag=FALSE;
+
+ ScRange aRef=pScChangeAction->GetBigRange().MakeRange();
+ String aUser=pScChangeAction->GetUser();
+ DateTime aDateTime=pScChangeAction->GetDateTime();
+
+ if(pTheView->IsValidEntry(&aUser,&aDateTime)||bIsGenerated)
+ {
+ if(pTPFilter->IsRange())
+ {
+ ScRange* pRangeEntry=aRangeList.First();
+
+ while(pRangeEntry!=NULL)
+ {
+ if(pRangeEntry->Intersects(aRef)) break;
+ pRangeEntry=aRangeList.Next();
+ }
+ //SC_CAS_VIRGIN,SC_CAS_ACCEPTED,SC_CAS_REJECTED
+ if(pRangeEntry!=NULL &&
+ pScChangeAction->GetState()==eState)
+ {
+ bFlag=TRUE;
+ }
+ }
+ else if(pScChangeAction->GetState()==eState && !bIsGenerated)
+ {
+ bFlag=TRUE;
+ }
+ }
+
+ if(bFlag)
+ {
+
+ String aRefStr;
+ ScChangeActionType eType=pScChangeAction->GetType();
+ String aString;
+ String aDesc;
+
+
+ ScRedlinData* pNewData=new ScRedlinData;
+
+ if(pNewData!=NULL)
+ {
+ pNewData->bIsRejectable=pScChangeAction->IsClickable();
+ pNewData->bIsAcceptable=pNewData->bIsRejectable;
+ pNewData->bDisabled=!pNewData->bIsRejectable | bDisabled;
+ pNewData->nActionNo=pScChangeAction->GetActionNumber();
+ pNewData->aDateTime=aDateTime;
+ pNewData->pData=(void *)pScChangeAction;
+ pNewData->nRow = aRef.aStart.Row();
+ pNewData->nCol = aRef.aStart.Col();
+ pNewData->nTable= aRef.aStart.Tab();
+ }
+
+ if(eType==SC_CAT_CONTENT)
+ {
+ if(pScChangeAction->IsDialogParent())
+ {
+ aString=aStrContentWithChild;
+ if(pNewData!=NULL)
+ {
+ pNewData->nInfo=RD_SPECIAL_VISCONTENT;
+ pNewData->bIsRejectable=FALSE;
+ pNewData->bIsAcceptable=FALSE;
+ }
+ }
+ else
+ {
+ aString=*MakeTypeString(eType);
+ pScChangeAction->GetDescription( aDesc, pDoc, TRUE);
+ }
+ }
+ else
+ {
+ aString=*MakeTypeString(eType);
+
+ if(bDelMaster)
+ {
+ pScChangeAction->GetDescription( aDesc, pDoc,TRUE);
+ if(pNewData!=NULL)
+ {
+ pNewData->bDisabled=TRUE;
+ pNewData->bIsRejectable=FALSE;
+ }
+ }
+ else
+ pScChangeAction->GetDescription( aDesc, pDoc,!pScChangeAction->IsMasterDelete());
+
+ }
+
+ aString+='\t';
+ pScChangeAction->GetRefString(aRefStr, pDoc, TRUE);
+ aString+=aRefStr;
+ aString+='\t';
+
+ if(!bIsGenerated)
+ {
+ aString+=aUser;
+ aString+='\t';
+ aString+=aInter.GetDate(aDateTime);
+ aString+=' ';
+ aString+=aInter.GetTime(aDateTime);
+ aString+='\t';
+ }
+ else
+ {
+ aString+='\t';
+ aString+='\t';
+ }
+
+ String aComment=pScChangeAction->GetComment();
+ aComment.EraseAllChars('\n');
+ if(aDesc.Len()>0)
+ {
+ aComment.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
+ aComment+=aDesc;
+ aComment+=')';
+ }
+ if(pTheView->IsValidComment(&aComment))
+ {
+ aString+=aComment;
+ pEntry=pTheView->InsertEntry(aString,pNewData,pParent,nPos);
+ }
+ else if(pNewData!=NULL)
+ {
+ delete pNewData;
+ }
+ }
+ return pEntry;
+}
+
+SvLBoxEntry* ScAcceptChgDlg::InsertChangeActionContent(const ScChangeActionContent* pScChangeAction,
+ SvLBoxEntry* pParent, ULONG nSpecial)
+{
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ SvLBoxEntry* pEntry=NULL;
+
+ if(pScChangeAction==NULL || pChanges==NULL) return NULL;
+
+ BOOL bIsGenerated=pChanges->IsGenerated(pScChangeAction->GetActionNumber());
+
+ BOOL bFlag=FALSE;
+
+ ScRange aRef=pScChangeAction->GetBigRange().MakeRange();
+ String aUser=pScChangeAction->GetUser();
+ DateTime aDateTime=pScChangeAction->GetDateTime();
+
+ if(pTheView->IsValidEntry(&aUser,&aDateTime)||bIsGenerated)
+ {
+ if(pTPFilter->IsRange())
+ {
+ ScRange* pRangeEntry=aRangeList.First();
+
+ while(pRangeEntry!=NULL)
+ {
+ if(pRangeEntry->Intersects(aRef)) break;
+ pRangeEntry=aRangeList.Next();
+ }
+ //SC_CAS_VIRGIN,SC_CAS_ACCEPTED,SC_CAS_REJECTED
+ if(pRangeEntry!=NULL)
+ {
+ bFlag=TRUE;
+ }
+ }
+ else if(!bIsGenerated)
+ bFlag=TRUE;
+ }
+
+ String aRefStr;
+ String aString;
+ String a2String;
+ String aDesc;
+
+ if(nSpecial==RD_SPECIAL_CONTENT)
+ {
+ pScChangeAction->GetOldString(a2String);
+ if(a2String.Len()==0) a2String=aStrEmpty;
+
+ //aString+="\'";
+ aString+=a2String;
+ //aString+="\'";
+
+ aDesc=aStrChildOrgContent;
+ aDesc.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " ));
+ }
+ else
+ {
+ pScChangeAction->GetNewString(a2String);
+ if(a2String.Len()==0)
+ {
+ a2String=aStrEmpty;
+ aString+=a2String;
+ }
+ else
+ {
+ aString+='\'';
+ aString+=a2String;
+ aString+='\'';
+ a2String=aString;
+ }
+ aDesc=aStrChildContent;
+
+ }
+
+ aDesc+=a2String;
+ aString+='\t';
+ pScChangeAction->GetRefString(aRefStr, pDoc, TRUE);
+ aString+=aRefStr;
+ aString+='\t';
+
+ if(!bIsGenerated)
+ {
+ aString+=aUser;
+ aString+='\t';
+
+ aString+=aInter.GetDate(aDateTime);
+ aString+=' ';
+ aString+=aInter.GetTime(aDateTime);
+ aString+='\t';
+ }
+ else
+ {
+ aString+='\t';
+ aString+='\t';
+ }
+ String aComment=pScChangeAction->GetComment();
+ aComment.EraseAllChars('\n');
+
+ if(aDesc.Len()>0)
+ {
+ aComment.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
+ aComment+=aDesc;
+ aComment+=')';
+ }
+
+ aString+=aComment;
+
+ ScRedlinData* pNewData=new ScRedlinData;
+
+ if(pNewData!=NULL)
+ {
+ pNewData->nActionNo=pScChangeAction->GetActionNumber();
+ pNewData->nInfo=nSpecial;
+ pNewData->bDisabled=!pScChangeAction->IsClickable();
+ pNewData->aDateTime=aDateTime;
+ pNewData->pData=(void *)pScChangeAction;
+ pNewData->nRow = aRef.aStart.Row();
+ pNewData->nCol = aRef.aStart.Col();
+ pNewData->nTable= aRef.aStart.Tab();
+ }
+
+ if(pTheView->IsValidComment(&aComment) && bFlag)
+ {
+ bHasFilterEntry=TRUE;
+ pEntry=pTheView->InsertEntry(aString,pNewData,pParent);
+ }
+ else
+ pEntry=pTheView->InsertEntry(aString,pNewData,Color(COL_LIGHTBLUE),pParent);
+ return pEntry;
+}
+
+long ScAcceptChgDlg::PreNotify( NotifyEvent& rNEvt )
+{
+ if(rNEvt.GetType()==EVENT_GETFOCUS && bNeedsUpdate)
+ {
+ ClearView();
+ UpdateView();
+ bNoSelection=FALSE;
+ }
+
+ return SfxModelessDialog::PreNotify(rNEvt);
+}
+
+
+void ScAcceptChgDlg::UpdateView()
+{
+ bNeedsUpdate=FALSE;
+ DateTime aDateTime;
+ SvLBoxEntry* pParent=NULL;
+ ScChangeTrack* pChanges=NULL;
+ const ScChangeAction* pScChangeAction=NULL;
+ bAcceptEnableFlag=TRUE;
+ bRejectEnableFlag=TRUE;
+ SetPointer(Pointer(POINTER_WAIT));
+ pTheView->SetUpdateMode(FALSE);
+ BOOL bFilterFlag=pTPFilter->IsDate()||pTPFilter->IsRange()||
+ pTPFilter->IsAuthor()||pTPFilter->IsComment();
+
+ bUseColor=bFilterFlag;
+
+ if(pDoc!=NULL)
+ {
+ pChanges=pDoc->GetChangeTrack();
+ if(pChanges!=NULL)
+ {
+ pScChangeAction=pChanges->GetFirst();
+ }
+ }
+ ScChangeActionTable ActionTable;
+ BOOL bTheFlag=FALSE;
+
+ while(pScChangeAction!=NULL)
+ {
+ bHasFilterEntry=FALSE;
+ switch(pScChangeAction->GetState())
+ {
+ case SC_CAS_VIRGIN:
+
+ if(pScChangeAction->IsDialogRoot())
+ {
+ if(pScChangeAction->IsDialogParent())
+ pParent=InsertChangeAction(pScChangeAction,SC_CAS_VIRGIN);
+ else
+ pParent=InsertFilteredAction(pScChangeAction,SC_CAS_VIRGIN);
+ }
+ else
+ pParent=NULL;
+
+ bTheFlag=TRUE;
+ break;
+
+ case SC_CAS_ACCEPTED:
+ pParent=NULL;
+ nAcceptCount++;
+ break;
+
+ case SC_CAS_REJECTED:
+ pParent=NULL;
+ nRejectCount++;
+ break;
+ }
+
+ if(pParent!=NULL && pScChangeAction->IsDialogParent())
+ {
+ if(!bFilterFlag)
+ {
+ pParent->EnableChildsOnDemand(TRUE);
+ }
+ else
+ {
+ BOOL bTestFlag=bHasFilterEntry;
+ bHasFilterEntry=FALSE;
+ if(Expand(pChanges,pScChangeAction,pParent,!bTestFlag)&&!bTestFlag)
+ pTheView->GetModel()->Remove(pParent);
+ }
+ }
+
+ pScChangeAction=pScChangeAction->GetNext();
+ }
+
+ if(bTheFlag && !pDoc->IsDocEditable())
+ bTheFlag=FALSE;
+
+ pTPView->EnableAccept(bTheFlag);
+ pTPView->EnableAcceptAll(bTheFlag);
+ pTPView->EnableReject(bTheFlag);
+ pTPView->EnableRejectAll(bTheFlag);
+
+ if(nAcceptCount>0)
+ {
+ pParent=pTheView->InsertEntry(aStrAllAccepted,NULL,NULL);
+ pParent->EnableChildsOnDemand(TRUE);
+ }
+ if(nRejectCount>0)
+ {
+ pParent=pTheView->InsertEntry(aStrAllRejected,NULL,NULL);
+ pParent->EnableChildsOnDemand(TRUE);
+ }
+ pTheView->SetUpdateMode(TRUE);
+ SetPointer(Pointer(POINTER_ARROW));
+ SvLBoxEntry* pEntry=pTheView->First();
+ if(pEntry!=NULL)
+ {
+ pTheView->Select(pEntry);
+ }
+}
+
+//----------------------------------------------------------------------------
+BOOL ScAcceptChgDlg::Close()
+{
+ bSomebodyKilledMe=FALSE;
+ return SfxModelessDialog::Close();
+}
+
+void ScAcceptChgDlg::Resize()
+{
+ SfxModelessDialog::Resize();
+ Size aSize=GetOutputSizePixel();
+ aAcceptChgCtr.SetSizePixel(aSize);
+}
+/*
+void ScAcceptChgDlg::SetActive()
+{
+ if(pTPFilter!=NULL)
+ {
+ aAcceptChgCtr.GetFilterPage()->SetFocusToRange();
+ aEdAssign.Hide();
+ aRbAssign.Hide();
+ Application::GetAppWindow()->Enable();
+ SFX_APP()->LockDispatcher( FALSE);
+ }
+ //RefInputDone();
+}
+*/
+IMPL_LINK( ScAcceptChgDlg, MinSizeHandle, SvxAcceptChgCtr*, pCtr )
+{
+ if(pCtr==&aAcceptChgCtr)
+ {
+ if(!IsRollUp())
+ SetOutputSizePixel(MinSize);
+ }
+ return 0;
+}
+
+IMPL_LINK( ScAcceptChgDlg, RefHandle, SvxTPFilter*, pRef )
+{
+ USHORT nId =ScSimpleRefDlgWrapper::GetChildWindowId();
+
+ ScSimpleRefDlgWrapper::SetDefaultPosSize(GetPosPixel(),GetSizePixel(),TRUE);
+
+ SC_MOD()->SetRefDialog( nId, TRUE );
+
+ SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
+ ScSimpleRefDlgWrapper* pWnd =(ScSimpleRefDlgWrapper*)pViewFrm->GetChildWindow( nId );
+
+ if(pWnd!=NULL)
+ {
+ bSimpleRefDlgStarted=TRUE;
+ USHORT nAcceptId=ScAcceptChgDlgWrapper::GetChildWindowId();
+ pViewFrm->ShowChildWindow(nAcceptId,FALSE);
+ pWnd->SetCloseHdl(LINK( this, ScAcceptChgDlg,RefInfoHandle));
+ pWnd->SetRefString(pTPFilter->GetRange());
+ pWnd->SetAutoReOpen(FALSE);
+ Window* pWin=pWnd->GetWindow();
+ pWin->SetPosSizePixel(GetPosPixel(),GetSizePixel());
+ Hide();
+ pWin->SetText(GetText());
+ pWnd->StartRefInput();
+ }
+ return 0;
+}
+
+IMPL_LINK( ScAcceptChgDlg, RefInfoHandle, String*, pResult)
+{
+ USHORT nId;
+
+ bSimpleRefDlgStarted=FALSE;
+ ScSimpleRefDlgWrapper::SetAutoReOpen(TRUE);
+
+ SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
+ if(pResult!=NULL)
+ {
+ pTPFilter->SetRange(*pResult);
+ FilterHandle(pTPFilter);
+
+ nId = ScSimpleRefDlgWrapper::GetChildWindowId();
+ ScSimpleRefDlgWrapper* pWnd = (ScSimpleRefDlgWrapper*)pViewFrm->GetChildWindow( nId );
+
+ if(pWnd!=NULL)
+ {
+ Window* pWin=pWnd->GetWindow();
+ Size aSize=pWin->GetSizePixel();
+ aSize.Width()=GetSizePixel().Width();
+ SetPosSizePixel(pWin->GetPosPixel(),aSize);
+ Invalidate();
+ }
+ nId = ScAcceptChgDlgWrapper::GetChildWindowId();
+ pViewFrm->ShowChildWindow( nId, TRUE );
+ }
+ else
+ {
+ nId = ScAcceptChgDlgWrapper::GetChildWindowId();
+ pViewFrm->SetChildWindow( nId, FALSE );
+ }
+ return 0;
+}
+
+IMPL_LINK( ScAcceptChgDlg, FilterHandle, SvxTPFilter*, pRef )
+{
+ if(pRef!=NULL)
+ {
+ ULONG nTest=pTheView->GetEntryCount();
+ ClearView();
+ aRangeList.Clear();
+ aRangeList.Parse(pTPFilter->GetRange(),pDoc);
+ UpdateView();
+ }
+ return 0;
+}
+
+IMPL_LINK( ScAcceptChgDlg, RejectHandle, SvxTPView*, pRef )
+{
+ SetPointer(Pointer(POINTER_WAIT));
+
+ bIgnoreMsg=TRUE;
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+
+ if(pRef!=NULL)
+ {
+ SvLBoxEntry* pEntry=pTheView->FirstSelected();
+ while(pEntry!=NULL)
+ {
+ ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+ if(pEntryData!=NULL)
+ {
+ ScChangeAction* pScChangeAction=
+ (ScChangeAction*) pEntryData->pData;
+
+ if(pScChangeAction->GetType()==SC_CAT_INSERT_TABS)
+ {
+ pViewData->SetTabNo(0);
+ }
+ pChanges->Reject(pScChangeAction);
+ }
+ pEntry = pTheView->NextSelected(pEntry);
+ }
+ ScDocShell* pDocSh=pViewData->GetDocShell();
+ pDocSh->PostPaintExtras();
+ pDocSh->PostPaintGridAll();
+ pDocSh->GetUndoManager()->Clear();
+ pDocSh->SetDocumentModified();
+ ClearView();
+ UpdateView();
+ }
+ SetPointer(Pointer(POINTER_ARROW));
+
+ bIgnoreMsg=FALSE;
+ return 0;
+}
+IMPL_LINK( ScAcceptChgDlg, AcceptHandle, SvxTPView*, pRef )
+{
+ SetPointer(Pointer(POINTER_WAIT));
+
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ bIgnoreMsg=TRUE;
+ if(pRef!=NULL)
+ {
+ SvLBoxEntry* pEntry=pTheView->FirstSelected();
+ while(pEntry!=NULL)
+ {
+ ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+ if(pEntryData!=NULL)
+ {
+ ScChangeAction* pScChangeAction=
+ (ScChangeAction*) pEntryData->pData;
+ if(pScChangeAction->GetType()==SC_CAT_CONTENT)
+ {
+ if(pEntryData->nInfo==RD_SPECIAL_CONTENT)
+ {
+ pChanges->SelectContent(pScChangeAction,TRUE);
+ }
+ else
+ {
+ pChanges->SelectContent(pScChangeAction);
+ }
+ }
+ else
+ pChanges->Accept(pScChangeAction);
+ }
+ pEntry = pTheView->NextSelected(pEntry);
+ }
+ ScDocShell* pDocSh=pViewData->GetDocShell();
+ pDocSh->PostPaintExtras();
+ pDocSh->PostPaintGridAll();
+ pDocSh->SetDocumentModified();
+ ClearView();
+ UpdateView();
+ }
+ bIgnoreMsg=FALSE;
+
+ return 0;
+}
+
+void ScAcceptChgDlg::RejectFiltered()
+{
+ if(pDoc==NULL) return;
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ const ScChangeAction* pScChangeAction=NULL;
+
+ if(pChanges!=NULL)
+ {
+ pScChangeAction=pChanges->GetLast();
+ }
+
+ while(pScChangeAction!=NULL)
+ {
+ if(pScChangeAction->IsDialogRoot())
+ {
+ if(IsValidAction(pScChangeAction))
+ {
+ pChanges->Accept((ScChangeAction*)pScChangeAction);
+ }
+ }
+ pScChangeAction=pScChangeAction->GetPrev();
+ }
+}
+void ScAcceptChgDlg::AcceptFiltered()
+{
+ if(pDoc==NULL) return;
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ const ScChangeAction* pScChangeAction=NULL;
+
+ if(pChanges!=NULL)
+ {
+ pScChangeAction=pChanges->GetLast();
+ }
+
+ while(pScChangeAction!=NULL)
+ {
+ if(pScChangeAction->IsDialogRoot())
+ {
+ if(IsValidAction(pScChangeAction))
+ {
+ pChanges->Accept((ScChangeAction*)pScChangeAction);
+ }
+ }
+ pScChangeAction=pScChangeAction->GetPrev();
+ }
+}
+
+IMPL_LINK( ScAcceptChgDlg, RejectAllHandle, SvxTPView*, pRef )
+{
+ SetPointer(Pointer(POINTER_WAIT));
+ bIgnoreMsg=TRUE;
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ if(pChanges!=NULL)
+ {
+ if(pTPFilter->IsDate()||pTPFilter->IsAuthor()||pTPFilter->IsRange()||pTPFilter->IsComment())
+ {
+ RejectFiltered();
+ }
+ else
+ {
+ pChanges->RejectAll();
+ }
+ pViewData->SetTabNo(0);
+
+ ScDocShell* pDocSh=pViewData->GetDocShell();
+ pDocSh->PostPaintExtras();
+ pDocSh->PostPaintGridAll();
+ pDocSh->GetUndoManager()->Clear();
+ pDocSh->SetDocumentModified();
+ ClearView();
+ UpdateView();
+ }
+ SetPointer(Pointer(POINTER_ARROW));
+
+ bIgnoreMsg=FALSE;
+
+ return 0;
+}
+
+IMPL_LINK( ScAcceptChgDlg, AcceptAllHandle, SvxTPView*, pRef )
+{
+ SetPointer(Pointer(POINTER_WAIT));
+
+ bIgnoreMsg=TRUE;
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ if(pChanges!=NULL)
+ {
+ if(pTPFilter->IsDate()||pTPFilter->IsAuthor()||pTPFilter->IsRange()||pTPFilter->IsComment())
+ {
+ AcceptFiltered();
+ }
+ else
+ {
+ pChanges->AcceptAll();
+ }
+ ScDocShell* pDocSh=pViewData->GetDocShell();
+ pDocSh->PostPaintExtras();
+ pDocSh->PostPaintGridAll();
+ pDocSh->SetDocumentModified();
+ ClearView();
+ UpdateView();
+ }
+ bIgnoreMsg=FALSE;
+ SetPointer(Pointer(POINTER_ARROW));
+
+ return 0;
+}
+
+IMPL_LINK( ScAcceptChgDlg, SelectHandle, SvxRedlinTable*, pTable )
+{
+ if(!bNoSelection)
+ {
+ aSelectionTimer.Start();
+ }
+ bNoSelection=FALSE;
+ return 0;
+}
+
+void ScAcceptChgDlg::GetDependents( const ScChangeAction* pScChangeAction,
+ ScChangeActionTable& aActionTable,
+ SvLBoxEntry* pEntry)
+{
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+
+ SvLBoxEntry* pParent=pTheView->GetParent(pEntry);
+ if(pParent!=NULL)
+ {
+ ScRedlinData *pParentData=(ScRedlinData *)(pParent->GetUserData());
+ ScChangeAction* pParentAction=(ScChangeAction*) pParentData->pData;
+ if(pParentAction!=pScChangeAction)
+ {
+ pChanges->GetDependents((ScChangeAction*) pScChangeAction,
+ aActionTable,pScChangeAction->IsMasterDelete());
+ }
+ else
+ {
+ pChanges->GetDependents((ScChangeAction*) pScChangeAction,
+ aActionTable);
+ }
+ }
+ else
+ {
+ pChanges->GetDependents((ScChangeAction*) pScChangeAction,
+ aActionTable,pScChangeAction->IsMasterDelete());
+ }
+}
+
+BOOL ScAcceptChgDlg::InsertContentChilds(ScChangeActionTable* pActionTable,SvLBoxEntry* pParent)
+{
+ BOOL bTheTestFlag=TRUE;
+ ScRedlinData *pEntryData=(ScRedlinData *)(pParent->GetUserData());
+ ScChangeAction*pScChangeAction=(ScChangeAction*) pEntryData->pData;
+ SvLBoxEntry* pEntry=NULL;
+
+ const ScChangeActionContent* pCChild=(const ScChangeActionContent*)pActionTable->First();
+ while(pCChild!=NULL)
+ {
+ if(pCChild->GetState()==SC_CAS_VIRGIN) break;
+ pCChild=(const ScChangeActionContent*)pActionTable->Next();
+ }
+
+ if(pCChild==NULL) return TRUE;
+
+ SvLBoxEntry* pOriginal=InsertChangeActionContent(pCChild,pParent,RD_SPECIAL_CONTENT);
+ if(pOriginal!=NULL)
+ {
+ ScRedlinData *pParentData=(ScRedlinData *)(pOriginal->GetUserData());
+ bTheTestFlag=FALSE;
+ pParentData->pData=(void *)pScChangeAction;
+ pParentData->bIsRejectable=FALSE;
+ pParentData->bDisabled=FALSE;
+ pParentData->bIsAcceptable=pScChangeAction->IsDialogParent();
+ }
+ while(pCChild!=NULL)
+ {
+ if(pCChild->GetState()==SC_CAS_VIRGIN)
+ {
+ pEntry=InsertChangeActionContent(pCChild,pParent,RD_SPECIAL_NONE);
+
+ if(pEntry!=NULL)
+ {
+ ScRedlinData *pEData=(ScRedlinData *)(pEntry->GetUserData());
+ pEData->bIsRejectable=FALSE;
+ pEData->bIsAcceptable=pScChangeAction->IsDialogParent();
+ pEData->bDisabled=FALSE;
+
+ bTheTestFlag=FALSE;
+ }
+ }
+ pCChild=(const ScChangeActionContent*)pActionTable->Next();
+ }
+
+ pEntry=InsertChangeActionContent((const ScChangeActionContent*)
+ pScChangeAction,pParent,RD_SPECIAL_NONE);
+
+ if(pEntry!=NULL)
+ {
+ ScRedlinData *pParentData=(ScRedlinData *)(pEntry->GetUserData());
+ bTheTestFlag=FALSE;
+ pParentData->bIsRejectable=FALSE;
+ pParentData->bIsAcceptable=pScChangeAction->IsDialogParent();
+ pParentData->bDisabled=FALSE;
+ pParentData->pData=(void *)pScChangeAction;
+ pParentData->nActionNo=pScChangeAction->GetActionNumber();
+ }
+
+ return bTheTestFlag;
+
+}
+
+BOOL ScAcceptChgDlg::InsertAcceptedORejected(SvLBoxEntry* pParent)
+{
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ BOOL bTheTestFlag=TRUE;
+
+ ScChangeActionState eState;
+ String aString=pTheView->GetEntryText( pParent);
+ String a2String=aString.Copy(0,aStrAllAccepted.Len());
+ if(a2String==aStrAllAccepted)
+ {
+ eState=SC_CAS_ACCEPTED;
+ }
+ else
+ {
+ a2String=aString.Copy(0,aStrAllRejected.Len());
+ if(a2String==aStrAllRejected)
+ {
+ eState=SC_CAS_REJECTED;
+ }
+ }
+
+ ScChangeAction* pScChangeAction=pChanges->GetFirst();
+ while(pScChangeAction!=NULL)
+ {
+ if(pScChangeAction->GetState()==eState &&
+ InsertFilteredAction(pScChangeAction,eState,pParent)!=NULL)
+ bTheTestFlag=FALSE;
+ pScChangeAction=pScChangeAction->GetNext();
+ }
+ return bTheTestFlag;
+}
+
+BOOL ScAcceptChgDlg::InsertChilds(ScChangeActionTable* pActionTable,SvLBoxEntry* pParent)
+{
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ BOOL bTheTestFlag=TRUE;
+ SvLBoxEntry* pEntry=NULL;
+ const ScChangeAction* pChild=(const ScChangeAction*)pActionTable->First();
+ while(pChild!=NULL)
+ {
+ pEntry=InsertChangeAction(pChild,SC_CAS_VIRGIN,pParent,FALSE,TRUE);
+
+ if(pEntry!=NULL)
+ {
+ bTheTestFlag=FALSE;
+
+ ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+ pEntryData->bIsRejectable=FALSE;
+ pEntryData->bIsAcceptable=FALSE;
+ pEntryData->bDisabled=TRUE;
+
+ if(pChild->IsDialogParent())
+ {
+
+ //pEntry->EnableChildsOnDemand(TRUE);
+ Expand(pChanges,pChild,pEntry);
+ }
+ }
+ pChild=pActionTable->Next();
+ }
+ return bTheTestFlag;
+}
+BOOL ScAcceptChgDlg::InsertDeletedChilds(const ScChangeAction* pScChangeAction,
+ ScChangeActionTable* pActionTable,SvLBoxEntry* pParent)
+{
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ BOOL bTheTestFlag=TRUE;
+ SvLBoxEntry* pEntry=NULL;
+ ScChangeActionTable aDelActionTable;
+ const ScChangeAction* pChild=(const ScChangeAction*)pActionTable->First();
+
+ while(pChild!=NULL)
+ {
+
+ if(pScChangeAction!=pChild)
+ pEntry=InsertChangeAction(pChild,SC_CAS_VIRGIN,pParent,FALSE,TRUE);
+ else
+ pEntry=InsertChangeAction(pChild,SC_CAS_VIRGIN,pParent,TRUE,TRUE);
+
+ if(pEntry!=NULL)
+ {
+ ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+ pEntryData->bIsRejectable=FALSE;
+ pEntryData->bIsAcceptable=FALSE;
+ pEntryData->bDisabled=TRUE;
+
+ bTheTestFlag=FALSE;
+ if ( pChild->IsDialogParent() )
+ {
+ Expand(pChanges,pChild,pEntry);
+ /*
+ pChanges->GetDependents((ScChangeAction*) pChild,aDelActionTable);
+ if(aDelActionTable.First()!=NULL)
+ {
+ pEntry->EnableChildsOnDemand(TRUE);
+ }
+ aDelActionTable.Clear();
+ */
+ }
+ }
+ pChild=pActionTable->Next();
+ }
+ return bTheTestFlag;
+}
+
+BOOL ScAcceptChgDlg::Expand(ScChangeTrack* pChanges,const ScChangeAction* pScChangeAction,
+ SvLBoxEntry* pEntry,BOOL bFilter)
+{
+ BOOL bTheTestFlag=TRUE;
+
+ if(pChanges!=NULL &&pEntry!=NULL &&pScChangeAction!=NULL)
+ {
+ ScChangeActionTable aActionTable;
+
+ GetDependents( pScChangeAction,aActionTable,pEntry);
+
+ switch(pScChangeAction->GetType())
+ {
+ case SC_CAT_CONTENT:
+ {
+ InsertContentChilds(&aActionTable,pEntry);
+ bTheTestFlag=!bHasFilterEntry;
+ break;
+ }
+ case SC_CAT_DELETE_COLS:
+ case SC_CAT_DELETE_ROWS:
+ case SC_CAT_DELETE_TABS:
+ {
+ InsertDeletedChilds(pScChangeAction,&aActionTable,pEntry);
+ bTheTestFlag=!bHasFilterEntry;
+ break;
+ }
+ default:
+ {
+ if(!bFilter)
+ bTheTestFlag=InsertChilds(&aActionTable,pEntry);
+ break;
+ }
+ }
+ aActionTable.Clear();
+ }
+ return bTheTestFlag;
+}
+
+IMPL_LINK( ScAcceptChgDlg, ExpandingHandle, SvxRedlinTable*, pTable )
+{
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ ScChangeAction* pScChangeAction=NULL;
+ SetPointer(Pointer(POINTER_WAIT));
+ if(pTable!=NULL && pChanges!=NULL)
+ {
+ ScChangeActionTable aActionTable;
+ SvLBoxEntry* pEntry=pTheView->GetHdlEntry();
+ if(pEntry!=NULL)
+ {
+ ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+ if(pEntryData!=NULL)
+ {
+ pScChangeAction=(ScChangeAction*) pEntryData->pData;
+ }
+
+ if(pEntry->HasChildsOnDemand())
+ {
+ BOOL bTheTestFlag=TRUE;
+ pEntry->EnableChildsOnDemand(FALSE);
+ pTheView->GetModel()->Remove(pTheView->FirstChild(pEntry));
+
+ SvLBoxEntry* pParent=NULL;
+ SvLBoxEntry* pOriginal=NULL;
+ if(pEntryData!=NULL)
+ {
+ pScChangeAction=(ScChangeAction*) pEntryData->pData;
+
+ GetDependents( pScChangeAction,aActionTable,pEntry);
+
+ switch(pScChangeAction->GetType())
+ {
+ case SC_CAT_CONTENT:
+ {
+ bTheTestFlag=InsertContentChilds(&aActionTable,pEntry);
+ break;
+ }
+ case SC_CAT_DELETE_COLS:
+ case SC_CAT_DELETE_ROWS:
+ case SC_CAT_DELETE_TABS:
+ {
+ bTheTestFlag=InsertDeletedChilds(pScChangeAction,&aActionTable,pEntry);
+ break;
+ }
+ default:
+ {
+ bTheTestFlag=InsertChilds(&aActionTable,pEntry);
+ break;
+ }
+ }
+ aActionTable.Clear();
+
+ }
+ else
+ {
+ bTheTestFlag=InsertAcceptedORejected(pEntry);
+ }
+ if(bTheTestFlag) pTheView->InsertEntry(aStrNoEntry,NULL,Color(COL_GRAY),pEntry);
+ }
+
+ }
+ }
+ SetPointer(Pointer(POINTER_ARROW));
+ return (ULONG) TRUE;
+}
+
+
+void ScAcceptChgDlg::AppendChanges(ScChangeTrack* pChanges,ULONG nStartAction,
+ ULONG nEndAction,ULONG nPos)
+{
+ if(pChanges!=NULL)
+ {
+ DateTime aDateTime;
+ SvLBoxEntry* pParent=NULL;
+ const ScChangeAction* pScChangeAction=NULL;
+ bAcceptEnableFlag=TRUE;
+ bRejectEnableFlag=TRUE;
+ SetPointer(Pointer(POINTER_WAIT));
+ pTheView->SetUpdateMode(FALSE);
+
+ ScChangeActionTable ActionTable;
+ BOOL bTheFlag=FALSE;
+
+ BOOL bFilterFlag=pTPFilter->IsDate()||pTPFilter->IsRange()||
+ pTPFilter->IsAuthor()||pTPFilter->IsComment();
+
+ bUseColor=bFilterFlag;
+
+ for(ULONG i=nStartAction;i<=nEndAction;i++)
+ {
+ pScChangeAction=pChanges->GetAction(i);
+ if(pScChangeAction==NULL) continue;
+
+
+ switch(pScChangeAction->GetState())
+ {
+ case SC_CAS_VIRGIN:
+
+ if(pScChangeAction->IsDialogRoot())
+ {
+ if(pScChangeAction->IsDialogParent())
+ pParent=InsertChangeAction(pScChangeAction,SC_CAS_VIRGIN);
+ else
+ pParent=InsertFilteredAction(pScChangeAction,SC_CAS_VIRGIN);
+ }
+ else
+ pParent=NULL;
+
+ bTheFlag=TRUE;
+ break;
+
+ case SC_CAS_ACCEPTED:
+ pParent=NULL;
+ nAcceptCount++;
+ break;
+
+ case SC_CAS_REJECTED:
+ pParent=NULL;
+ nRejectCount++;
+ break;
+ }
+
+ if(pParent!=NULL && pScChangeAction->IsDialogParent())
+ {
+ if(!bFilterFlag)
+ {
+ pParent->EnableChildsOnDemand(TRUE);
+ }
+ else
+ {
+ BOOL bTestFlag=bHasFilterEntry;
+ bHasFilterEntry=FALSE;
+ if(Expand(pChanges,pScChangeAction,pParent,!bTestFlag)&&!bTestFlag)
+ pTheView->GetModel()->Remove(pParent);
+ }
+ }
+
+ pScChangeAction=pScChangeAction->GetNext();
+ }
+
+ if(bTheFlag && !pDoc->IsDocEditable())
+ bTheFlag=FALSE;
+
+ pTPView->EnableAccept(bTheFlag);
+ pTPView->EnableAcceptAll(bTheFlag);
+ pTPView->EnableReject(bTheFlag);
+ pTPView->EnableRejectAll(bTheFlag);
+
+ pTheView->SetUpdateMode(TRUE);
+ SetPointer(Pointer(POINTER_ARROW));
+ }
+}
+
+void ScAcceptChgDlg::RemoveEntrys(ULONG nStartAction,ULONG nEndAction)
+{
+
+ pTheView->SetUpdateMode(FALSE);
+
+ SvLBoxEntry* pEntry=pTheView->GetCurEntry();
+
+ ScRedlinData *pEntryData=NULL;
+
+ if(pEntry!=NULL)
+ pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+
+ ULONG nAction=0;
+ if(pEntryData!=NULL)
+ {
+ nAction=pEntryData->nActionNo;
+ }
+
+ if(nAction>=nStartAction && nAction<=nEndAction)
+ {
+ pTheView->SetCurEntry(pTheView->GetModel()->GetEntry(0));
+ }
+
+ BOOL bRemove=FALSE;
+
+ pEntry=pTheView->First();
+ while(pEntry!=NULL)
+ {
+ bRemove=FALSE;
+ pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+ if(pEntryData!=NULL)
+ {
+ nAction=pEntryData->nActionNo;
+
+ if(nStartAction<=nAction && nAction<=nEndAction) bRemove=TRUE;
+
+
+ }
+ SvLBoxEntry* pNextEntry = pTheView->Next(pEntry);
+
+ if(bRemove)
+ {
+ //delete pEntryData;
+ pTheView->GetModel()->Remove(pEntry);
+ }
+ pEntry=pNextEntry;
+ }
+ pTheView->SetUpdateMode(TRUE);
+
+}
+
+void ScAcceptChgDlg::UpdateEntrys(ScChangeTrack* pChgTrack, ULONG nStartAction,ULONG nEndAction)
+{
+ pTheView->SetUpdateMode(FALSE);
+
+ ULONG nPos=LIST_APPEND;
+
+ BOOL bRemove=FALSE;
+
+ SvLBoxEntry* pEntry=pTheView->First();
+ SvLBoxEntry* pNextEntry = pTheView->NextSibling(pEntry);
+ SvLBoxEntry* pLastEntry=NULL;
+ while(pEntry!=NULL)
+ {
+ bRemove=FALSE;
+ ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+ if(pEntryData!=NULL)
+ {
+ ScChangeAction* pScChangeAction=
+ (ScChangeAction*) pEntryData->pData;
+
+ ULONG nAction=pScChangeAction->GetActionNumber();
+
+ if(nStartAction<=nAction && nAction<=nEndAction) bRemove=TRUE;
+ }
+
+ if(bRemove)
+ {
+ nPos=pEntry->GetChildListPos();
+ pTheView->GetModel()->Remove(pEntry);
+
+ if(pLastEntry==NULL) pLastEntry=pTheView->First();
+ if(pLastEntry!=NULL)
+ {
+ pNextEntry=pTheView->Next(pLastEntry);
+
+ if(pNextEntry==NULL)
+ {
+ pNextEntry=pLastEntry;
+ pLastEntry=NULL;
+ }
+ }
+ else
+ pNextEntry=NULL;
+
+ }
+ else
+ {
+ pLastEntry = pEntry;
+ pNextEntry = pTheView->Next(pEntry);
+ }
+ pEntry=pNextEntry;
+ }
+
+ if(nStartAction==nEndAction)
+ AppendChanges(pChgTrack,nStartAction,nEndAction,nPos);
+ else
+ AppendChanges(pChgTrack,nStartAction,nEndAction);
+
+ pTheView->SetUpdateMode(TRUE);
+
+}
+
+IMPL_LINK( ScAcceptChgDlg, ChgTrackModHdl, ScChangeTrack*, pChgTrack)
+{
+ if(bScAcceptChgDlgIsDead) return 0;
+
+ ScChangeTrackMsgQueue& aMsgQueue= pChgTrack->GetMsgQueue();
+
+ ScChangeTrackMsgInfo* pTrackInfo=aMsgQueue.Get();
+ ULONG nStartAction;
+ ULONG nEndAction;
+
+ while(pTrackInfo!=NULL)
+ {
+ nStartAction=pTrackInfo->nStartAction;
+ nEndAction=pTrackInfo->nEndAction;
+
+ if(!bIgnoreMsg)
+ {
+ bNoSelection=TRUE;
+
+ switch(pTrackInfo->eMsgType)
+ {
+ case SC_CTM_APPEND: AppendChanges(pChgTrack,nStartAction,nEndAction);
+ break;
+ case SC_CTM_REMOVE: RemoveEntrys(nStartAction,nEndAction);
+ break;
+ case SC_CTM_PARENT:
+ case SC_CTM_CHANGE: //bNeedsUpdate=TRUE;
+ UpdateEntrys(pChgTrack,nStartAction,nEndAction);
+ break;
+ }
+ }
+ delete pTrackInfo;
+ pTrackInfo=aMsgQueue.Get();
+ }
+
+ return 0;
+}
+IMPL_LINK( ScAcceptChgDlg, ReOpenTimerHdl, Timer*, pTi)
+{
+ ScSimpleRefDlgWrapper::SetAutoReOpen(TRUE);
+ aAcceptChgCtr.ShowFilterPage();
+ RefHandle(NULL);
+
+ return 0;
+}
+IMPL_LINK( ScAcceptChgDlg, UpdateSelectionHdl, Timer*, pTi)
+{
+ const ScChangeAction* pScChangeAction=NULL;
+ ULONG nCount=pTheView->GetSelectionCount();
+
+ SvLBoxEntry* pEntry=pTheView->FirstSelected();
+ ScRedlinData *pEntryData=NULL;
+ BOOL bAcceptFlag;
+ BOOL bRejectFlag;
+
+ bAcceptFlag=TRUE;
+ bRejectFlag=TRUE;
+
+ while(pEntry!=NULL)
+ {
+/* if(nCount!=1)
+ {
+ bAcceptFlag=bAcceptEnableFlag;
+ bRejectFlag=bRejectEnableFlag;
+ }
+ else
+ {
+ bAcceptFlag=TRUE;
+ bRejectFlag=TRUE;
+ }
+*/
+ pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+ if(pEntryData!=NULL)
+ {
+ if(bRejectFlag) bRejectFlag=pEntryData->bIsRejectable;
+ if(bAcceptFlag) bAcceptFlag=pEntryData->bIsAcceptable;
+ }
+ else
+ {
+ bAcceptFlag=FALSE;
+ bRejectFlag=FALSE;
+ }
+ bAcceptEnableFlag=bAcceptFlag;
+ bRejectEnableFlag=bRejectFlag;
+
+ pEntry=pTheView->NextSelected(pEntry);
+ }
+
+ pEntry=pTheView->GetCurEntry();
+
+ if(pEntry!=NULL)
+ {
+ pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+
+ if(pEntryData!=NULL)
+ {
+ if(bRejectFlag) bRejectFlag=pEntryData->bIsRejectable;
+ if(bAcceptFlag) bAcceptFlag=pEntryData->bIsAcceptable;
+
+ pScChangeAction=(ScChangeAction*) pEntryData->pData;
+ if(pScChangeAction && pScChangeAction->GetType()!=SC_CAT_DELETE_TABS
+ &&!pEntryData->bDisabled)
+ {
+ const ScBigRange& rRange = pScChangeAction->GetBigRange();
+ if(rRange.IsValid(pDoc) && IsActive())
+ {
+ ScRange aRef=rRange.MakeRange();
+ ScTabView* pTabView=pViewData->GetView();
+ pTabView->MarkRange(aRef);
+ }
+ }
+ }
+ }
+
+ pTPView->EnableAccept(pDoc->IsDocEditable() && bAcceptFlag);
+ pTPView->EnableReject(pDoc->IsDocEditable() && bRejectFlag);
+
+ return 0;
+}
+
+IMPL_LINK( ScAcceptChgDlg, CommandHdl, Control*, pCtr)
+{
+
+ const CommandEvent aCEvt(pTheView->GetCommandEvent());
+
+ if(aCEvt.GetCommand()==COMMAND_CONTEXTMENU)
+ {
+ ScPopupMenu aPopup(ScResId(RID_POPUP_CHANGES));
+
+ aPopup.SetMenuFlags(MENU_FLAG_HIDEDISABLEDENTRIES);
+
+ SvLBoxEntry* pEntry=pTheView->GetCurEntry();
+ if(pEntry!=NULL)
+ {
+ pTheView->Select(pEntry);
+ }
+ else
+ {
+ aPopup.Deactivate();
+ }
+
+ USHORT nSortedCol=pTheView->GetSortedCol();
+
+ if(nSortedCol!=0xFFFF)
+ {
+ USHORT nItemId=nSortedCol+SC_SUB_SORT+1;
+
+ aPopup.CheckItem(nItemId);
+
+ PopupMenu *pSubMenu = aPopup.GetPopupMenu(SC_SUB_SORT);
+ if (pSubMenu)
+ {
+ pSubMenu->CheckItem(nItemId);
+ }
+ }
+
+ aPopup.EnableItem(SC_CHANGES_COMMENT,FALSE);
+
+ if(pDoc->IsDocEditable() && pEntry!=NULL)
+ {
+ ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+ if(pEntryData!=NULL)
+ {
+ ScChangeAction* pScChangeAction=
+ (ScChangeAction*) pEntryData->pData;
+ if(pScChangeAction!=NULL && !pTheView->GetParent(pEntry))
+ aPopup.EnableItem(SC_CHANGES_COMMENT);
+ }
+ }
+
+ USHORT nCommand=aPopup.Execute( this, GetPointerPosPixel() );
+
+
+ if(nCommand)
+ {
+ if(nCommand==SC_CHANGES_COMMENT)
+ {
+ if(pEntry!=NULL)
+ {
+ ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
+ if(pEntryData!=NULL)
+ {
+ ScChangeAction* pScChangeAction=
+ (ScChangeAction*) pEntryData->pData;
+
+ pViewData->GetDocShell()->ExecuteChangeCommentDialog( pScChangeAction, this,FALSE);
+ }
+ }
+ }
+ else
+ {
+ BOOL bSortDir=pTheView->GetSortDirection();
+ USHORT nCol=nCommand-SC_SUB_SORT-1;
+ if(nSortedCol==nCol) bSortDir=!bSortDir;
+ pTheView->SortByCol(nCol,bSortDir);
+ /*
+ SC_SUB_SORT
+ SC_SORT_ACTION
+ SC_SORT_POSITION
+ SC_SORT_AUTHOR
+ SC_SORT_DATE
+ SC_SORT_COMMENT
+ */
+ }
+ }
+ }
+ return NULL;
+}
+
+void ScAcceptChgDlg::Initialize(SfxChildWinInfo *pInfo)
+{
+ String aStr;
+ if(pInfo!=NULL)
+ {
+ if ( pInfo->aExtraString.Len() )
+ {
+ xub_StrLen nPos = pInfo->aExtraString.Search(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("AcceptChgDat:")));
+
+ // Versuche, den Alignment-String "ALIGN:(...)" einzulesen; wenn
+ // er nicht vorhanden ist, liegt eine "altere Version vor
+ if ( nPos != STRING_NOTFOUND )
+ {
+ xub_StrLen n1 = pInfo->aExtraString.Search('(', nPos);
+ if ( n1 != STRING_NOTFOUND )
+ {
+ xub_StrLen n2 = pInfo->aExtraString.Search(')', n1);
+ if ( n2 != STRING_NOTFOUND )
+ {
+ // Alignment-String herausschneiden
+ aStr = pInfo->aExtraString.Copy(nPos, n2 - nPos + 1);
+ pInfo->aExtraString.Erase(nPos, n2 - nPos + 1);
+ aStr.Erase(0, n1-nPos+1);
+ }
+ }
+ }
+ }
+ }
+ SfxModelessDialog::Initialize(pInfo);
+
+ if ( aStr.Len())
+ {
+ USHORT nCount=aStr.ToInt32();
+
+ for(USHORT i=0;i<nCount;i++)
+ {
+ xub_StrLen n1 = aStr.Search(';');
+ aStr.Erase(0, n1+1);
+ pTheView->SetTab(i,(USHORT)aStr.ToInt32(),MAP_PIXEL);
+ }
+ }
+}
+
+//-------------------------------------------------------------------------
+
+void ScAcceptChgDlg::FillInfo(SfxChildWinInfo& rInfo) const
+{
+ SfxModelessDialog::FillInfo(rInfo);
+ rInfo.aExtraString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "AcceptChgDat:(" ));
+
+ USHORT nCount=pTheView->TabCount();
+
+ rInfo.aExtraString += String::CreateFromInt32(nCount);
+ rInfo.aExtraString += ';';
+ for(USHORT i=0;i<nCount;i++)
+ {
+ rInfo.aExtraString += String::CreateFromInt32(pTheView->GetTab(i));
+ rInfo.aExtraString += ';';
+ }
+ rInfo.aExtraString += ')';
+}
+
+void ScAcceptChgDlg::InitFilter()
+{
+ if(pTPFilter->IsDate()||pTPFilter->IsRange()||
+ pTPFilter->IsAuthor()||pTPFilter->IsComment())
+ {
+ pTheView->SetFilterDate(pTPFilter->IsDate());
+ pTheView->SetDateTimeMode(pTPFilter->GetDateMode());
+ pTheView->SetFirstDate(pTPFilter->GetFirstDate());
+ pTheView->SetLastDate(pTPFilter->GetLastDate());
+ pTheView->SetFirstTime(pTPFilter->GetFirstTime());
+ pTheView->SetLastTime(pTPFilter->GetLastTime());
+ pTheView->SetFilterAuthor(pTPFilter->IsAuthor());
+ pTheView->SetAuthor(pTPFilter->GetSelectedAuthor());
+
+ pTheView->SetFilterComment(pTPFilter->IsComment());
+
+ SearchParam aSearchParam( pTPFilter->GetComment(),
+ SearchParam::SRCH_REGEXP,FALSE,FALSE,FALSE );
+
+ pTheView->SetCommentParams(&aSearchParam);
+
+ pTheView->UpdateFilterTest();
+ }
+}
+
+void ScAcceptChgDlg::SetMyStaticData()
+{
+ bFilterPageVisible=aAcceptChgCtr.IsFilterPageVisible();
+ aPrivChangeViewSet.SetHasDate(pTPFilter->IsDate());
+ ScChgsDateMode eMode = (ScChgsDateMode) pTPFilter->GetDateMode();
+ aPrivChangeViewSet.SetTheDateMode( eMode );
+ Date aFirstDate( pTPFilter->GetFirstDate() );
+ Time aFirstTime( pTPFilter->GetFirstTime() );
+ Date aLastDate( pTPFilter->GetLastDate() );
+ Time aLastTime( pTPFilter->GetLastTime() );
+ switch ( eMode )
+ { // korrespondiert mit ScViewUtil::IsActionShown
+ case SCDM_DATE_EQUAL :
+ case SCDM_DATE_NOTEQUAL :
+ aFirstTime.SetTime( 0 );
+ aLastDate = aFirstDate;
+ aLastTime.SetTime( 23595999 );
+ break;
+ }
+ aPrivChangeViewSet.SetTheFirstDateTime( DateTime( aFirstDate, aFirstTime ) );
+ aPrivChangeViewSet.SetTheLastDateTime( DateTime( aLastDate, aLastTime ) );
+ aPrivChangeViewSet.SetHasAuthor(pTPFilter->IsAuthor());
+ aPrivChangeViewSet.SetTheAuthorToShow(pTPFilter->GetSelectedAuthor());
+ aPrivChangeViewSet.SetHasRange(pTPFilter->IsRange());
+ aPrivChangeViewSet.SetHasComment(pTPFilter->IsComment());
+ aPrivChangeViewSet.SetTheComment(pTPFilter->GetComment());
+
+ ScRangeList aRangeList;
+
+ String aRange;
+
+ if(!bSimpleRefDlgStarted)
+ {
+ aRange=pTPFilter->GetRange();
+ }
+ else
+ {
+ USHORT nId = ScSimpleRefDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
+
+ ScSimpleRefDlgWrapper* pWnd =(ScSimpleRefDlgWrapper*)pViewFrm->GetChildWindow( nId );
+
+ if(pWnd!=NULL && pWnd->GetWindow()!=NULL)
+ {
+ aRange=pWnd->GetRefString();
+ }
+ else
+ {
+ aRange=ScSimpleRefDlg::GetLastRefString();
+ }
+ }
+
+ aRangeList.Parse(aRange);
+ aPrivChangeViewSet.SetTheRangeList(aRangeList);
+}
+
+IMPL_LINK( ScAcceptChgDlg, FilterModified, SvxTPFilter*, pRef )
+{
+ if(pRef!=NULL)
+ {
+ SetMyStaticData();
+ }
+
+ return 0;
+}
+
+#define CALC_DATE 3
+#define CALC_POS 1
+
+IMPL_LINK( ScAcceptChgDlg, ColCompareHdl, SvSortData*, pSortData )
+{
+ StringCompare eCompare=COMPARE_EQUAL;
+ USHORT nSortCol=pTheView->GetSortedCol();
+
+ if(pSortData)
+ {
+ SvLBoxEntry* pLeft = (SvLBoxEntry*)(pSortData->pLeft );
+ SvLBoxEntry* pRight = (SvLBoxEntry*)(pSortData->pRight );
+
+ if(CALC_DATE==nSortCol)
+ {
+ RedlinData *pLeftData=(RedlinData *)(pLeft->GetUserData());
+ RedlinData *pRightData=(RedlinData *)(pRight->GetUserData());
+
+ if(pLeftData!=NULL && pRightData!=NULL)
+ {
+ if(pLeftData->aDateTime < pRightData->aDateTime)
+ {
+ eCompare=COMPARE_LESS;
+ }
+ else if(pLeftData->aDateTime > pRightData->aDateTime)
+ {
+ eCompare=COMPARE_GREATER;
+ }
+ return eCompare;
+ }
+ }
+ else if(CALC_POS==nSortCol)
+ {
+ ScRedlinData *pLeftData=(ScRedlinData *)(pLeft->GetUserData());
+ ScRedlinData *pRightData=(ScRedlinData *)(pRight->GetUserData());
+
+ if(pLeftData!=NULL && pRightData!=NULL)
+ {
+ eCompare=COMPARE_GREATER;
+
+ if(pLeftData->nTable < pRightData->nTable)
+ {
+ eCompare=COMPARE_LESS;
+ }
+ else if(pLeftData->nTable == pRightData->nTable)
+ {
+ if(pLeftData->nRow < pRightData->nRow)
+ {
+ eCompare=COMPARE_LESS;
+ }
+ else if(pLeftData->nRow == pRightData->nRow)
+ {
+ if(pLeftData->nCol < pRightData->nCol)
+ {
+ eCompare=COMPARE_LESS;
+ }
+ else if(pLeftData->nCol == pRightData->nCol)
+ {
+ eCompare=COMPARE_EQUAL;
+ }
+ }
+ }
+
+ return eCompare;
+ }
+ }
+
+ SvLBoxItem* pLeftItem = pTheView->GetEntryAtPos( pLeft, nSortCol);
+ SvLBoxItem* pRightItem = pTheView->GetEntryAtPos( pRight, nSortCol);
+
+ if(pLeftItem != NULL && pRightItem != NULL)
+ {
+ USHORT nLeftKind=pLeftItem->IsA();
+ USHORT nRightKind=pRightItem->IsA();
+
+ if(nRightKind == SV_ITEM_ID_LBOXSTRING &&
+ nLeftKind == SV_ITEM_ID_LBOXSTRING )
+ {
+ const International& rInter = GetpApp()->GetAppInternational();
+
+ eCompare=rInter.Compare( ((SvLBoxString*)pLeftItem)->GetText(),
+ ((SvLBoxString*)pRightItem)->GetText());
+
+ if(eCompare==COMPARE_EQUAL) eCompare=COMPARE_LESS;
+ }
+ }
+
+
+ }
+ return eCompare;
+}
+
diff --git a/sc/source/ui/miscdlgs/acredlin.src b/sc/source/ui/miscdlgs/acredlin.src
new file mode 100644
index 000000000000..16b9552ba420
--- /dev/null
+++ b/sc/source/ui/miscdlgs/acredlin.src
@@ -0,0 +1,838 @@
+/*************************************************************************
+ *
+ * $RCSfile: acredlin.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "acredlin.hrc"
+ModelessDialog RID_SCDLG_CHANGES
+{
+ OutputSize = TRUE ;
+ HelpId = FID_CHG_ACCEPT ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 282 , 142 ) ;
+ Text = "Änderungen akzeptieren oder verwerfen" ;
+ Text [ ENGLISH ] = "Accept or reject changes" ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ // Dieser Dialog hat einen Cancel-Button !
+ Control CTR_REDLINING
+ {
+ HelpId = HID_SC_REDLIN_CTR ;
+ Pos = MAP_APPFONT ( 2 , 2 ) ;
+ Size = MAP_APPFONT ( 270 , 105 ) ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 271 , 105 ) ;
+ Size = MAP_APPFONT ( 1 , 1 ) ;
+ TabStop = FALSE ;
+ };
+ FixedText FT_ASSIGN
+ {
+ Text = "Bereich" ;
+ Text [ ENGLISH ] = "Range" ;
+ Hide = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 105 ) ;
+ Size = MAP_APPFONT ( 128 , 12 ) ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Range" ;
+ Text [ portuguese_brazilian ] = "Bereich" ;
+ Text [ swedish ] = "Område" ;
+ Text [ danish ] = "Område" ;
+ Text [ italian ] = "Area" ;
+ Text [ spanish ] = "Área" ;
+ Text [ french ] = "Plage" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ portuguese ] = "Intervalo" ;
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ russian ] = "Äèàïàçîí";
+ Text[ polish ] = "Zakres";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "äØÇÞ";
+ Text[ dutch ] = "Bereik";
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¹üÀ§";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_ASSIGN
+ {
+ Hide = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 119 ) ;
+ Size = MAP_APPFONT ( 128 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_ASSIGN
+ {
+ Hide = TRUE ;
+ QuickHelpText = "Verkleinern/Vergrößern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink/Expand" ;
+ Pos = MAP_APPFONT ( 142 , 119 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Minimize/Maximize" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska/Förstora" ;
+ QuickHelpText [ danish ] = "Formindsk/Forstør" ;
+ QuickHelpText [ italian ] = "Zoom indietro/avanti" ;
+ QuickHelpText [ spanish ] = "Reducir/Aumentar" ;
+ QuickHelpText [ french ] = "Réduire/agrandir" ;
+ QuickHelpText [ dutch ] = "Verkleinen/vergroten" ;
+ QuickHelpText [ portuguese ] = "Afastar/Aproximar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü/Óâåëè÷èòü";
+ QuickHelpText[ polish ] = "Pomniejsz/Powiêksz";
+ QuickHelpText[ japanese ] = "k¬/Šg‘å";
+ QuickHelpText[ chinese_simplified ] = "ËõС/·Å´ó";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p/©ñ¤j";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ/ÊßÈíÑ";
+ QuickHelpText[ dutch ] = "Verkleinen/vergroten";
+ QuickHelpText[ chinese_simplified ] = "ËõС/·Å´ó";
+ QuickHelpText[ greek ] = "Óìßêñõíóç/ÌåãÝèõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ String STR_INSERT_COLS
+ {
+ Text = "Spalte eingefügt" ;
+ Text [ ENGLISH ] = "Inserted Column" ;
+ Text [ portuguese ] = "Coluna inserida" ;
+ Text [ english_us ] = "Column inserted" ;
+ Text [ portuguese_brazilian ] = "Spalte eingefügt" ;
+ Text [ swedish ] = "Kolumn infogad" ;
+ Text [ danish ] = "Kolonne indsat" ;
+ Text [ italian ] = "Colonna inserita" ;
+ Text [ spanish ] = "Columna insertada" ;
+ Text [ french ] = "Colonne insérée" ;
+ Text [ dutch ] = "Kolom ingevoegd" ;
+ Text[ chinese_simplified ] = "¼ÓÈëµÄÁÐ";
+ Text[ russian ] = "Ñòîëáåö âñòàâëåí";
+ Text[ polish ] = "Wstawiona kolumna";
+ Text[ japanese ] = "—ñ‚ª‘}“ü‚³‚ê‚Ü‚µ‚½";
+ Text[ english_us ] = "Column inserted";
+ Text[ portuguese ] = "Coluna inserida";
+ Text[ russian ] = "Ñòîëáåö âñòàâëåí";
+ Text[ dutch ] = "Kolom ingevoegd";
+ Text[ french ] = "Colonne insérée";
+ Text[ spanish ] = "Columna insertada";
+ Text[ italian ] = "Colonna inserita";
+ Text[ danish ] = "Kolonne indsat";
+ Text[ swedish ] = "Kolumn infogad";
+ Text[ polish ] = "Wstawiona kolumna";
+ Text[ portuguese_brazilian ] = "Spalte eingefügt";
+ Text[ japanese ] = "—ñ‚ª‘}“ü‚³‚ê‚Ü‚µ‚½";
+ Text[ chinese_simplified ] = "¼ÓÈëµÄÁÐ";
+ Text[ chinese_traditional ] = "Äæ¤w¸g´¡¤J";
+ Text[ arabic ] = "ÚãæÏ ãÏÑÌ";
+ Text[ dutch ] = "Kolom ingevoegd";
+ Text[ chinese_simplified ] = "¼ÓÈëµÄÁÐ";
+ Text[ greek ] = "Óõìðëçñþèçêå ç åéóáãùãÞ ôçò óôÞëçò";
+ Text[ korean ] = "¿­ÀÌ »ðÀԵǾú½À´Ï´Ù.";
+ Text[ turkish ] = "Sütun eklendi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INSERT_ROWS
+ {
+ Text = "Zeile eingefügt" ;
+ Text [ ENGLISH ] = "Inserted Row" ;
+ Text [ portuguese ] = "Linha inserida" ;
+ Text [ english_us ] = "Row inserted " ;
+ Text [ portuguese_brazilian ] = "Zeile eingefügt" ;
+ Text [ swedish ] = "Rad infogad" ;
+ Text [ danish ] = "Række indsat" ;
+ Text [ italian ] = "Riga inserita" ;
+ Text [ spanish ] = "Fila insertada" ;
+ Text [ french ] = "Ligne insérée" ;
+ Text [ dutch ] = "Rij ingevoegd" ;
+ Text[ chinese_simplified ] = "Ðб»²åÈë";
+ Text[ russian ] = "Ñòðîêà âñòàâëåíà";
+ Text[ polish ] = "Usuniêty wiersz";
+ Text[ japanese ] = "s‚ª‘}“ü‚³‚ê‚Ü‚µ‚½";
+ Text[ chinese_traditional ] = "¦C³Q´¡¤J";
+ Text[ arabic ] = "ÓØÑ ãÏÑÌ";
+ Text[ dutch ] = "Rij ingevoegd";
+ Text[ chinese_simplified ] = "Ðб»²åÈë";
+ Text[ greek ] = "Ç óôÞëç åéóÜ÷èçêå";
+ Text[ korean ] = "ÇàÀÌ »ðÀԵǾú½À´Ï´Ù.";
+ Text[ turkish ] = "Satýr eklendi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INSERT_TABS
+ {
+ Text = "Tabelle eingefügt" ;
+ Text [ ENGLISH ] = "Inserted Sheet" ;
+ Text [ portuguese ] = "Tabela inserida" ;
+ Text [ english_us ] = "Sheet inserted " ;
+ Text [ portuguese_brazilian ] = "Tabelle eingefügt" ;
+ Text [ swedish ] = "Tabell infogad" ;
+ Text [ danish ] = "Ark indsat" ;
+ Text [ italian ] = "Tabella inserita" ;
+ Text [ spanish ] = "Hoja insertada" ;
+ Text [ french ] = "Feuille insérée" ;
+ Text [ dutch ] = "Tabelle ingevoegd" ;
+ Text[ chinese_simplified ] = "¼ÓÈ빤×÷±í";
+ Text[ russian ] = "Òàáëèöà âñòàâëåíà";
+ Text[ polish ] = "Wstawiona tabela";
+ Text[ japanese ] = "•\\‚ª‘}“ü‚³‚ê‚Ä‚Ü‚µ‚½";
+ Text[ chinese_traditional ] = "¥[¤J¤u§@ªí";
+ Text[ arabic ] = "ÌÏæá ãÏÑÌ";
+ Text[ dutch ] = "Tabelle ingevoegd";
+ Text[ chinese_simplified ] = "¼ÓÈ빤×÷±í";
+ Text[ greek ] = "Ï ðßíáêáò åéóÜ÷èçêå";
+ Text[ korean ] = "½ÃÆ®°¡ »ðÀԵǾú½À´Ï´Ù.";
+ Text[ turkish ] = "Tablo eklendi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DELETE_COLS
+ {
+ Text = "Spalte gelöscht" ;
+ Text [ ENGLISH ] = "Deleted Column" ;
+ Text [ portuguese ] = "Coluna eliminada" ;
+ Text [ english_us ] = "Column deleted" ;
+ Text [ portuguese_brazilian ] = "Spalte gelöscht" ;
+ Text [ swedish ] = "Kolumn raderad" ;
+ Text [ danish ] = "Kolonne slettet" ;
+ Text [ italian ] = "Colonna cancellata" ;
+ Text [ spanish ] = "Columna eliminada" ;
+ Text [ french ] = "Colonne supprimée" ;
+ Text [ dutch ] = "Kolom verwijderd" ;
+ Text[ chinese_simplified ] = "ɾ³ýµÄÁÐ";
+ Text[ russian ] = "Ñòîëáåö óäàëåí";
+ Text[ polish ] = "Usuniêta kolumna";
+ Text[ japanese ] = "—ñ‚ªíœ‚³‚ê‚Ü‚µ‚½";
+ Text[ chinese_traditional ] = "Äæ¤w¸g§R°£";
+ Text[ arabic ] = "ÚãæÏ ãÍÐæÝ";
+ Text[ dutch ] = "Kolom verwijderd";
+ Text[ chinese_simplified ] = "ɾ³ýµÄÁÐ";
+ Text[ greek ] = "Ç óôÞëç Ý÷åé äéáãñáöåß";
+ Text[ korean ] = "¿­ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Sütun silindi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DELETE_ROWS
+ {
+ Text = "Zeile gelöscht" ;
+ Text [ ENGLISH ] = "Deleted Row" ;
+ Text [ portuguese ] = "Linha eliminada" ;
+ Text [ english_us ] = "Row deleted" ;
+ Text [ portuguese_brazilian ] = "Zeile gelöscht" ;
+ Text [ swedish ] = "Rad raderad" ;
+ Text [ danish ] = "Række slettet" ;
+ Text [ italian ] = "Riga cancellata" ;
+ Text [ spanish ] = "Fila eliminada" ;
+ Text [ french ] = "Ligne supprimée" ;
+ Text [ dutch ] = "Rij verwijderd" ;
+ Text[ chinese_simplified ] = "Ðб»É¾³ý";
+ Text[ russian ] = "Ñòðîêà óäàëåíà";
+ Text[ polish ] = "Usuniêty wiersz";
+ Text[ japanese ] = "s‚ªíœ‚³‚ê‚Ü‚µ‚½";
+ Text[ chinese_traditional ] = "¦C³Q§R°£";
+ Text[ arabic ] = "ÓØÑ ãÍÐæÝ";
+ Text[ dutch ] = "Rij verwijderd";
+ Text[ chinese_simplified ] = "Ðб»É¾³ý";
+ Text[ greek ] = "Ç ãñáììÞ Ý÷åé äéáãñáöåß";
+ Text[ korean ] = "ÇàÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Satýr silindi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DELETE_TABS
+ {
+ Text = "Tabelle gelöscht" ;
+ Text [ ENGLISH ] = "Deleted Sheet" ;
+ Text [ portuguese ] = "Tabela eliminada" ;
+ Text [ english_us ] = "Sheet deleted" ;
+ Text [ portuguese_brazilian ] = "Tabelle gelöscht" ;
+ Text [ swedish ] = "Tabell raderad" ;
+ Text [ danish ] = "Ark slettet" ;
+ Text [ italian ] = "Tabella cancellata" ;
+ Text [ spanish ] = "Hoja eliminada" ;
+ Text [ french ] = "Feuille supprimée" ;
+ Text [ dutch ] = "Tabel gewist" ;
+ Text[ chinese_simplified ] = "ɾ³ýµÄ¹¤×÷±í";
+ Text[ russian ] = "Òàáëèöà óäàëåíà";
+ Text[ polish ] = "Usuniêta tabela";
+ Text[ japanese ] = "•\\‚ªíœ‚³‚ê‚Ü‚µ‚½";
+ Text[ chinese_traditional ] = "§R°£ªº¤u§@ªí";
+ Text[ arabic ] = "ÌÏæá ãÍÐæÝ";
+ Text[ dutch ] = "Tabel gewist";
+ Text[ chinese_simplified ] = "ɾ³ýµÄ¹¤×÷±í";
+ Text[ greek ] = "ÄéáãñáììÝíïé ðßíáêåò";
+ Text[ korean ] = "½ÃÆ®°¡ »èÁ¦µÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Tablo silindi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MOVE
+ {
+ Text = "Bereich verschoben" ;
+ Text [ ENGLISH ] = "Moved Cells" ;
+ Text [ portuguese ] = "Área movida" ;
+ Text [ english_us ] = "Range moved" ;
+ Text [ portuguese_brazilian ] = "Bereich verschoben" ;
+ Text [ swedish ] = "Område förflyttat" ;
+ Text [ danish ] = "Område forskudt" ;
+ Text [ italian ] = "Area spostata" ;
+ Text [ spanish ] = "Área desplazada" ;
+ Text [ french ] = "Plage déplacée" ;
+ Text [ dutch ] = "Bereik verplaatst" ;
+ Text[ chinese_simplified ] = "Òƶ¯ÇøÓò";
+ Text[ russian ] = "Îáëàñòü ïåðåìåùåíà";
+ Text[ polish ] = "Przesuniêty obszar";
+ Text[ japanese ] = "”͈͂̈ړ®";
+ Text[ chinese_traditional ] = "²¾°Ê°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ãÍÑß";
+ Text[ dutch ] = "Bereik verplaatst";
+ Text[ chinese_simplified ] = "Òƶ¯ÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ åðéëïãÞò ìåôáêéíÞèçêå";
+ Text[ korean ] = "¿µ¿ªÀÌ À̵¿Çß½À´Ï´Ù.";
+ Text[ turkish ] = "Aralýk kaydýrýldý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CONTENT
+ {
+ Text = "Inhaltsänderung" ;
+ Text [ ENGLISH ] = "Changed Cell" ;
+ Text [ portuguese ] = "Conteúdo modificado" ;
+ Text [ english_us ] = "Changed contents" ;
+ Text [ portuguese_brazilian ] = "Inhaltsänderung" ;
+ Text [ swedish ] = "Innehållsändring" ;
+ Text [ danish ] = "Indholdsændring" ;
+ Text [ italian ] = "Modifica contenuto" ;
+ Text [ spanish ] = "Modificación de contenido" ;
+ Text [ french ] = "Modification de contenu" ;
+ Text [ dutch ] = "Inhoudsverandering" ;
+ Text[ chinese_simplified ] = "ÄÚÈݸü¸Ä";
+ Text[ russian ] = "Èçìåíåíèå ñîäåðæèìîãî";
+ Text[ polish ] = "Zmiana zawartoœci";
+ Text[ japanese ] = "“à—e‚Ì•ÏX";
+ Text[ chinese_traditional ] = "¤º®eÅܧó";
+ Text[ arabic ] = "ÊÛííÑ ÇáãÍÊæíÇÊ";
+ Text[ dutch ] = "Inhoudsverandering";
+ Text[ chinese_simplified ] = "ÄÚÈݸü¸Ä";
+ Text[ greek ] = "ÁëëáãÝò ðåñéå÷ïìÝíùí";
+ Text[ korean ] = "º¯°æ ³»¿ë";
+ Text[ turkish ] = "Ýçerik deðiþikliði";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CONTENT_WITH_CHILD
+ {
+ Text = "Inhaltsänderung" ;
+ Text [ ENGLISH ] = "Changed Cell" ;
+ Text [ portuguese ] = "Conteúdo modificado" ;
+ Text [ english_us ] = "Changed contents" ;
+ Text [ portuguese_brazilian ] = "Inhaltsänderung" ;
+ Text [ swedish ] = "Innehållsändring" ;
+ Text [ danish ] = "Indholdsændring" ;
+ Text [ italian ] = "Modifica contenuto" ;
+ Text [ spanish ] = "Modificación de contenido" ;
+ Text [ french ] = "Modification de contenu" ;
+ Text [ dutch ] = "Inhoudsverandering" ;
+ Text[ chinese_simplified ] = "ÄÚÈݸü¸Ä";
+ Text[ russian ] = "Èçìåíåíèå ñîäåðæèìîãî";
+ Text[ polish ] = "Zmiana zawartoœci";
+ Text[ japanese ] = "“à—e‚Ì•ÏX";
+ Text[ chinese_traditional ] = "¤º®eÅܧó";
+ Text[ arabic ] = "ÊÛííÑ ÇáãÍÊæíÇÊ";
+ Text[ dutch ] = "Inhoudsverandering";
+ Text[ chinese_simplified ] = "ÄÚÈݸü¸Ä";
+ Text[ greek ] = "ÁëëáãÝò ðåñéå÷ïìÝíùí";
+ Text[ korean ] = "º¯°æ ³»¿ë";
+ Text[ turkish ] = "Ýçerik deðiþikliði";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHILD_CONTENT
+ {
+ Text = "Änderung zu " ;
+ Text [ ENGLISH ] = "acceptable Changing to " ;
+ Text [ portuguese ] = "Modificado para " ;
+ Text [ english_us ] = "Changed to " ;
+ Text [ portuguese_brazilian ] = "Änderung zu " ;
+ Text [ swedish ] = "Ändring till " ;
+ Text [ danish ] = "Ændring til " ;
+ Text [ italian ] = "Modificato in " ;
+ Text [ spanish ] = "Cambiada a " ;
+ Text [ french ] = "Modification dans " ;
+ Text [ dutch ] = "Wijziging in " ;
+ Text[ chinese_simplified ] = "¸ü¸Ä³É ";
+ Text[ russian ] = "Èçìåíåíèÿ ê ";
+ Text[ polish ] = "Zmieniony na ";
+ Text[ japanese ] = "•ÏX ";
+ Text[ chinese_traditional ] = "Åܧó¦Ü ";
+ Text[ arabic ] = "ÊÛííÑ Åáì ";
+ Text[ dutch ] = "Wijziging in ";
+ Text[ chinese_simplified ] = "¸ü¸Ä³É ";
+ Text[ greek ] = "ÁëëáãÞ ðñïò ";
+ Text[ korean ] = "·Î º¯°æ. ";
+ Text[ turkish ] = "Deðiþiklikler: ";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHILD_ORGCONTENT
+ {
+ Text = "Original" ;
+ Text [ ENGLISH ] = "Original" ;
+ Text [ portuguese ] = "Original" ;
+ Text [ english_us ] = "Original" ;
+ Text [ portuguese_brazilian ] = "Original" ;
+ Text [ swedish ] = "Original" ;
+ Text [ danish ] = "Original" ;
+ Text [ italian ] = "Originale" ;
+ Text [ spanish ] = "Original" ;
+ Text [ french ] = "Original" ;
+ Text [ dutch ] = "Origineel" ;
+ Text[ chinese_simplified ] = "Ô­¼þ";
+ Text[ russian ] = "Îðèãèíàë";
+ Text[ polish ] = "Orygina³";
+ Text[ japanese ] = "µØ¼ÞÅÙ";
+ Text[ chinese_traditional ] = "­ì¥ó";
+ Text[ arabic ] = "ÇáÃÕá";
+ Text[ dutch ] = "Origineel";
+ Text[ chinese_simplified ] = "Ô­¼þ";
+ Text[ greek ] = "Áñ÷éêü";
+ Text[ korean ] = "º»·¡ÀÇ";
+ Text[ turkish ] = "Özgün hali";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_REJECT
+ {
+ Text = "Änderung verworfen" ;
+ Text [ ENGLISH ] = "Reject Changes" ;
+ Text [ portuguese ] = "Modificações rejeitadas" ;
+ Text [ english_us ] = "Changes rejected" ;
+ Text [ portuguese_brazilian ] = "Änderung verworfen" ;
+ Text [ swedish ] = "Ändring tillbakavisad" ;
+ Text [ danish ] = "Ændring forkastet" ;
+ Text [ italian ] = "Modifiche rigettate" ;
+ Text [ spanish ] = "Modificación rechazada" ;
+ Text [ french ] = "Modification refusée" ;
+ Text [ dutch ] = "Wijziging verworpen" ;
+ Text[ chinese_simplified ] = "È¡Ïû¸ü¸Ä";
+ Text[ russian ] = "Èçìåíåíèÿ îòêëîíåíû";
+ Text[ polish ] = "Zmiany odrzucono";
+ Text[ japanese ] = "•ÏX‚µ‚È‚¢";
+ Text[ chinese_traditional ] = "¨ú®øÅܧó";
+ Text[ arabic ] = "ÑÝÖ ÇáÊÛííÑÇÊ";
+ Text[ dutch ] = "Wijziging verworpen";
+ Text[ chinese_simplified ] = "È¡Ïû¸ü¸Ä";
+ Text[ greek ] = "ÁëëáãÝò áðïññßöèçêáí";
+ Text[ korean ] = "º¯°æÀÌ Ãë¼ÒµÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Deðiþiklikler reddedildi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ACCEPTED
+ {
+ Text = "Akzeptierte" ;
+ Text [ ENGLISH ] = "Accepted" ;
+ Text [ portuguese ] = "Aceites" ;
+ Text [ english_us ] = "Accepted" ;
+ Text [ portuguese_brazilian ] = "Akzeptierte" ;
+ Text [ swedish ] = "Accepterade" ;
+ Text [ danish ] = "Accepterede" ;
+ Text [ italian ] = "Accettate" ;
+ Text [ spanish ] = "Aceptadas" ;
+ Text [ french ] = "Acceptées" ;
+ Text [ dutch ] = "Geaccepteerde" ;
+ Text[ chinese_simplified ] = "½ÓÊܵÄ";
+ Text[ russian ] = "Ïðèíÿòûå";
+ Text[ polish ] = "Zaakceptowane";
+ Text[ japanese ] = "”F‚ß‚½";
+ Text[ chinese_traditional ] = "±µ¨üªº";
+ Text[ arabic ] = "ãÞÈæáÉ";
+ Text[ dutch ] = "Geaccepteerde";
+ Text[ chinese_simplified ] = "½ÓÊܵÄ";
+ Text[ greek ] = "Áðïäå÷üìåíá";
+ Text[ korean ] = "¼ö¿ëµÊ";
+ Text[ turkish ] = "Kabul edilenler";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_REJECTED
+ {
+ Text = "Abgelehnte" ;
+ Text [ ENGLISH ] = "Rejected" ;
+ Text [ portuguese ] = "Rejeitados" ;
+ Text [ english_us ] = "Rejected" ;
+ Text [ portuguese_brazilian ] = "Abgelehnte" ;
+ Text [ swedish ] = "Tillbakavisade" ;
+ Text [ danish ] = "Forkastede" ;
+ Text [ italian ] = "Rigettate" ;
+ Text [ spanish ] = "Rechazadas" ;
+ Text [ french ] = "Refusées" ;
+ Text [ dutch ] = "Geweigerde" ;
+ Text[ chinese_simplified ] = "±»¾Ü¾øµÄ";
+ Text[ russian ] = "Îòêëîíåííûå";
+ Text[ polish ] = "Odrzucone";
+ Text[ japanese ] = "”F‚ß‚È‚¢";
+ Text[ chinese_traditional ] = "³Q©Úµ´ªº";
+ Text[ arabic ] = "ãÑÝæÖÉ";
+ Text[ dutch ] = "Geweigerde";
+ Text[ chinese_simplified ] = "±»¾Ü¾øµÄ";
+ Text[ greek ] = "Áðïññéðôüìåíá";
+ Text[ korean ] = "°ÅºÎµÊ";
+ Text[ turkish ] = "Reddedilenler";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NO_ENTRY
+ {
+ Text = "Kein Eintrag" ;
+ Text [ ENGLISH ] = "No Entry" ;
+ Text [ portuguese ] = "Nenhum registo" ;
+ Text [ english_us ] = "No Entry" ;
+ Text [ portuguese_brazilian ] = "Kein Eintrag" ;
+ Text [ swedish ] = "Ingen post" ;
+ Text [ danish ] = "Intet element" ;
+ Text [ italian ] = "Nessuna voce" ;
+ Text [ spanish ] = "Ninguna entrada" ;
+ Text [ french ] = "Pas d'entrée" ;
+ Text [ dutch ] = "Geen item" ;
+ Text[ chinese_simplified ] = "ÎÞÌõÄ¿";
+ Text[ russian ] = "Áåç çàïèñè";
+ Text[ polish ] = "Nie ma wpisu";
+ Text[ japanese ] = "“ü—Í‚È‚µ";
+ Text[ chinese_traditional ] = "µL¶µ¥Ø";
+ Text[ arabic ] = "áÇ íæÌÏ ÅÏÎÇá";
+ Text[ dutch ] = "Geen item";
+ Text[ chinese_simplified ] = "ÎÞÌõÄ¿";
+ Text[ greek ] = "Êáìßá åããñáöÞ";
+ Text[ korean ] = "µî·ÏÀÌ ¾ÈµÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Giriþ yok";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_EMPTY
+ {
+ Text = "<leer>" ;
+ Text [ ENGLISH ] = "<empty>" ;
+ Text [ portuguese ] = "<vazio>" ;
+ Text [ english_us ] = "<empty>" ;
+ Text [ portuguese_brazilian ] = "<leer>" ;
+ Text [ swedish ] = "<tom>" ;
+ Text [ danish ] = "<tom>" ;
+ Text [ italian ] = "<vuoto>" ;
+ Text [ spanish ] = "<vacío>" ;
+ Text [ french ] = "<vide>" ;
+ Text [ dutch ] = "<leeg>" ;
+ Text[ chinese_simplified ] = "<¿Õȱ>";
+ Text[ russian ] = "<ïóñòî>";
+ Text[ polish ] = "<pusty>";
+ Text[ japanese ] = "<‹ó”’>";
+ Text[ chinese_traditional ] = "<ªÅ¯Ê>";
+ Text[ arabic ] = "<ÝÇÑÛ>";
+ Text[ dutch ] = "<leeg>";
+ Text[ chinese_simplified ] = "<¿Õȱ>";
+ Text[ greek ] = "<êåíü>";
+ Text[ korean ] = "<°ø¹é>";
+ Text[ turkish ] = "<Boþ>";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap BMP_STR_CLOSE
+ {
+ File = "dir-clos.bmp" ;
+ };
+ Bitmap BMP_STR_OPEN
+ {
+ File = "dir-open.bmp" ;
+ };
+ Bitmap BMP_STR_END
+ {
+ File = "basobj2.bmp" ;
+ };
+ Bitmap BMP_STR_ERROR
+ {
+ File = "basbrk.bmp" ;
+ };
+ Text [ english_us ] = "Accept or Reject Changes" ;
+ Text [ portuguese_brazilian ] = "Änderungen akzeptieren" ;
+ Text [ swedish ] = "Acceptera eller kasta bort ändringarna" ;
+ Text [ danish ] = "Accepter eller forkast ændringerne" ;
+ Text [ italian ] = "Accetta o rigetta modifiche" ;
+ Text [ spanish ] = "Aceptar o rechazar modificaciones" ;
+ Text [ french ] = "Accepter ou rejeter les modifications" ;
+ Text [ dutch ] = "Wijzigingen accepteren of verwerpen" ;
+ Text [ portuguese ] = "Aceitar ou rejeitar modificações" ;
+ Text[ chinese_simplified ] = "½ÓÊÜ»òÈ¡Ïû¸ü¸Ä";
+ Text[ russian ] = "Ïðèíÿòü èëè îòêëîíèòü èçìåíåíèÿ";
+ Text[ polish ] = "Zaakceptuj albo odrzuæ zmiany";
+ Text[ japanese ] = "•ÏX‰ÓŠ‚ÌŠm”F";
+ Text[ chinese_traditional ] = "±µ¨ü©Î¨ú®øÅܧó";
+ Text[ arabic ] = "ÞÈæá Ãæ ÑÝÖ ÊÛííÑÇÊ";
+ Text[ dutch ] = "Wijzigingen accepteren of verwerpen";
+ Text[ chinese_simplified ] = "½ÓÊÜ»òÈ¡Ïû¸ü¸Ä";
+ Text[ greek ] = "Áðïäï÷Þ Þ áðüññéøç áëëáãþí";
+ Text[ korean ] = "º¯°æ Àû¿ë ¶Ç´Â Ãë¼Ò";
+ Text[ turkish ] = "Deðiþiklikleri kabul/redd et";
+ Text[ language_user1 ] = " ";
+};
+Menu RID_POPUP_CHANGES
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SC_CHANGES_COMMENT ;
+ HelpId = HID_SC_CHANGES_COMMENT ;
+ Text = "Kommentar bearbeiten..." ;
+ Text [ English ] = "Edit Comment..." ;
+ Text [ english_us ] = "Edit Comment..." ;
+ Text [ portuguese_brazilian ] = "Kommentar bearbeiten..." ;
+ Text [ swedish ] = "Redigera kommentar..." ;
+ Text [ danish ] = "Rediger kommentar..." ;
+ Text [ italian ] = "Modifica commento..." ;
+ Text [ spanish ] = "Modificar comentario..." ;
+ Text [ french ] = "Éditer le commentaire..." ;
+ Text [ dutch ] = "Commentaar bewerken..." ;
+ Text [ portuguese ] = "Editar comentário..." ;
+
+ Text[ chinese_simplified ] = "±à¼­×¢½â...";
+ Text[ russian ] = "Ïðàâêà êîììåíòàðèÿ...";
+ Text[ polish ] = "Edytuj komentarz...";
+ Text[ japanese ] = "ºÒÝÄ‚Ì•ÒW...";
+ Text[ chinese_traditional ] = "½s¿èª`¸Ñ...";
+ Text[ arabic ] = "ÊÍÑíÑ ÊÚáíÞ...";
+ Text[ dutch ] = "Commentaar bewerken...";
+ Text[ chinese_simplified ] = "±à¼­×¢½â...";
+ Text[ greek ] = "Åðåîåñãáóßá ó÷ïëßïõ...";
+ Text[ korean ] = "ÆíÁý ÁÖ...";
+ Text[ turkish ] = "Açýklamayý düzenle...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SC_SUB_SORT ;
+ Text = "Sortiere" ;
+ Text [ english ] = "Sort" ;
+ RadioCheck = TRUE ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SC_SORT_ACTION ;
+ HelpID = HID_SC_SORT_ACTION ;
+ Text = "Aktion" ;
+ Text [ english ] = "Action" ;
+ RadioCheck = TRUE ;
+ Text [ english_us ] = "Action" ;
+ Text [ portuguese_brazilian ] = "Aktion" ;
+ Text [ swedish ] = "Åtgärd" ;
+ Text [ danish ] = "Handling" ;
+ Text [ italian ] = "Operazione" ;
+ Text [ spanish ] = "Acción" ;
+ Text [ french ] = "Action" ;
+ Text [ dutch ] = "Activiteit" ;
+ Text [ portuguese ] = "Acção" ;
+ Text[ chinese_simplified ] = "²Ù×÷";
+ Text[ russian ] = "Äåéñòâèå";
+ Text[ polish ] = "Akcja";
+ Text[ japanese ] = "±¸¼®Ý";
+ Text[ chinese_traditional ] = "¾Þ§@";
+ Text[ arabic ] = "ÅÌÑÇÁ";
+ Text[ dutch ] = "Activiteit";
+ Text[ chinese_simplified ] = "²Ù×÷";
+ Text[ greek ] = "ÅíÝñãåéá";
+ Text[ korean ] = "ÀÛµ¿";
+ Text[ turkish ] = "Ýþlem";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SC_SORT_POSITION ;
+ HelpID = HID_SORT_POSITION ;
+ Text = "Position" ;
+ Text [ english ] = "Position" ;
+ RadioCheck = TRUE ;
+ Text [ english_us ] = "Position" ;
+ Text [ portuguese_brazilian ] = "Position" ;
+ Text [ swedish ] = "Position" ;
+ Text [ danish ] = "Placering" ;
+ Text [ italian ] = "Posizione" ;
+ Text [ spanish ] = "Posición" ;
+ Text [ french ] = "Position" ;
+ Text [ dutch ] = "Positie" ;
+ Text [ portuguese ] = "Posição" ;
+ Text[ chinese_simplified ] = "λÖÃ";
+ Text[ russian ] = "Ïîëîæåíèå";
+ Text[ polish ] = "Pozycja";
+ Text[ japanese ] = "ˆÊ’u";
+ Text[ chinese_traditional ] = "¦ì¸m";
+ Text[ arabic ] = "ãæÖÚ";
+ Text[ dutch ] = "Positie";
+ Text[ chinese_simplified ] = "λÖÃ";
+ Text[ greek ] = "ÈÝóç";
+ Text[ korean ] = "À§Ä¡";
+ Text[ turkish ] = "Konum";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SC_SORT_AUTHOR ;
+ HelpID = HID_SC_SORT_AUTHOR ;
+ Text = "Autor" ;
+ Text [ english ] = "Author" ;
+ RadioCheck = TRUE ;
+ Text [ english_us ] = "Author" ;
+ Text [ portuguese_brazilian ] = "Autor" ;
+ Text [ swedish ] = "Författare" ;
+ Text [ danish ] = "Forfatter" ;
+ Text [ italian ] = "Autore" ;
+ Text [ spanish ] = "Autor" ;
+ Text [ french ] = "Auteur" ;
+ Text [ dutch ] = "Auteur" ;
+ Text [ portuguese ] = "Autor" ;
+ Text[ chinese_simplified ] = "×÷Õß";
+ Text[ russian ] = "Àâòîð";
+ Text[ polish ] = "Autor";
+ Text[ japanese ] = "쬎Ò";
+ Text[ chinese_traditional ] = "§@ªÌ";
+ Text[ arabic ] = "ÇáãÄáÝ";
+ Text[ dutch ] = "Auteur";
+ Text[ chinese_simplified ] = "×÷Õß";
+ Text[ greek ] = "ÓõíôÜêôçò";
+ Text[ korean ] = "ÀúÀÚ";
+ Text[ turkish ] = "Yazan";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SC_SORT_DATE ;
+ HelpID = HID_SC_SORT_DATE ;
+ Text = "Datum" ;
+ Text [ english ] = "Date" ;
+ RadioCheck = TRUE ;
+ Text [ english_us ] = "Date" ;
+ Text [ portuguese_brazilian ] = "Datum" ;
+ Text [ swedish ] = "Datum" ;
+ Text [ danish ] = "Dato" ;
+ Text [ italian ] = "Data" ;
+ Text [ spanish ] = "Fecha" ;
+ Text [ french ] = "Date" ;
+ Text [ dutch ] = "Datum" ;
+ Text [ portuguese ] = "Data" ;
+ Text[ chinese_simplified ] = "ÈÕÆÚ";
+ Text[ russian ] = "Äàòà";
+ Text[ polish ] = "Data";
+ Text[ japanese ] = "“ú•t";
+ Text[ chinese_traditional ] = "¤é´Á";
+ Text[ arabic ] = "ÇáÊÇÑíÎ";
+ Text[ dutch ] = "Datum";
+ Text[ chinese_simplified ] = "ÈÕÆÚ";
+ Text[ greek ] = "Çìåñïìçíßá";
+ Text[ korean ] = "³¯Â¥";
+ Text[ turkish ] = "Tarih";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SC_SORT_COMMENT ;
+ HelpID = HID_SC_SORT_COMMENT ;
+ Text = "Beschreibung" ;
+ Text [ english ] = "Comment" ;
+ RadioCheck = TRUE ;
+ Text [ english_us ] = "Description" ;
+ Text [ portuguese_brazilian ] = "Beschreibung" ;
+ Text [ swedish ] = "Beskrivning" ;
+ Text [ danish ] = "Beskrivelse" ;
+ Text [ italian ] = "Descrizione" ;
+ Text [ spanish ] = "Descripción" ;
+ Text [ french ] = "Description" ;
+ Text [ dutch ] = "Beschrijving" ;
+ Text [ portuguese ] = "Descrição" ;
+ Text[ chinese_simplified ] = "˵Ã÷";
+ Text[ russian ] = "Îïèñàíèå";
+ Text[ polish ] = "Opis";
+ Text[ japanese ] = "à–¾";
+ Text[ chinese_traditional ] = "´y­z";
+ Text[ arabic ] = "ÇáæÕÝ";
+ Text[ dutch ] = "Beschrijving";
+ Text[ chinese_simplified ] = "˵Ã÷";
+ Text[ greek ] = "ÐåñéãñáöÞ";
+ Text[ korean ] = "¼³¸í";
+ Text[ turkish ] = "Açýklama";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Text [ english_us ] = "Sorting" ;
+ Text [ portuguese_brazilian ] = "Sortiere" ;
+ Text [ swedish ] = "Sorterar" ;
+ Text [ danish ] = "Sorter" ;
+ Text [ italian ] = "Ordina" ;
+ Text [ spanish ] = "Ordenar" ;
+ Text [ french ] = "Trier" ;
+ Text [ dutch ] = "Sorteer" ;
+ Text [ portuguese ] = "Ordenar" ;
+ Text[ chinese_simplified ] = "ÅÅÐò";
+ Text[ russian ] = "Ñîðòèðîâêà";
+ Text[ polish ] = "Sortowanie";
+ Text[ japanese ] = "•À‚בւ¦";
+ Text[ chinese_traditional ] = "±Æ§Ç";
+ Text[ arabic ] = "ÝÑÒ";
+ Text[ dutch ] = "Sorteer";
+ Text[ chinese_simplified ] = "ÅÅÐò";
+ Text[ greek ] = "Ôáîéíüìçóç";
+ Text[ korean ] = "Á¤·Ä";
+ Text[ turkish ] = "Sýrala";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx
new file mode 100644
index 000000000000..c0847d2e610e
--- /dev/null
+++ b/sc/source/ui/miscdlgs/anyrefdg.cxx
@@ -0,0 +1,932 @@
+/*************************************************************************
+ *
+ * $RCSfile: anyrefdg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#include "rangelst.hxx"
+#include <sfx2/app.hxx>
+#include <sfx2/viewsh.hxx>
+#include <vcl/wrkwin.hxx>
+#include <tools/shl.hxx>
+#include <svtools/taskbar.hxx>
+#include <sfx2/topfrm.hxx>
+
+
+#define ANYREFDG_CXX
+#include "anyrefdg.hxx"
+#undef ANYREFDG_CXX
+
+#include "sc.hrc"
+#include "inputhdl.hxx"
+#include "scmod.hxx"
+#include "scresid.hxx"
+#include "inputwin.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "rfindlst.hxx"
+#include "compiler.hxx"
+#include "cell.hxx"
+#include "global.hxx"
+#include "inputopt.hxx"
+
+//----------------------------------------------------------------------------
+
+void lcl_EnableInput( BOOL bEnable )
+{
+ TypeId aType(TYPE(ScDocShell));
+ ScDocShell* pDocShell = (ScDocShell*)SfxObjectShell::GetFirst(&aType);
+ while( pDocShell )
+ {
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocShell );
+ while( pFrame )
+ {
+ // #71577# enable everything except InPlace, including bean frames
+ if ( !pFrame->ISA(SfxInPlaceFrame) )
+ {
+ SfxViewShell* p = pFrame->GetViewShell();
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,p);
+ if(pViewSh!=NULL)
+ {
+ Window *pWin=pViewSh->GetWindow();
+ if(pWin)
+ {
+ Window *pParent=pWin->GetParent();
+ if(pParent)
+ {
+ pParent->EnableInput(bEnable,TRUE /* FALSE */);
+ if(TRUE /*bChilds*/)
+ pViewSh->EnableRefInput(bEnable);
+ }
+ }
+ }
+ }
+ pFrame = SfxViewFrame::GetNext( *pFrame, pDocShell );
+ }
+
+ pDocShell = (ScDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
+ }
+}
+
+void lcl_InvalidateWindows()
+{
+// Application::GetAppWindow()->Invalidate(); //Weils so schoen ist!
+
+ TypeId aType(TYPE(ScDocShell));
+ ScDocShell* pDocShell = (ScDocShell*)SfxObjectShell::GetFirst(&aType);
+ while( pDocShell )
+ {
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocShell );
+ while( pFrame )
+ {
+ // #71577# enable everything except InPlace, including bean frames
+ if ( !pFrame->ISA(SfxInPlaceFrame) )
+ {
+ SfxViewShell* p = pFrame->GetViewShell();
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,p);
+ if(pViewSh!=NULL)
+ {
+ Window *pWin=pViewSh->GetWindow();
+ if(pWin)
+ {
+ Window *pParent=pWin->GetParent();
+ if(pParent)
+ pParent->Invalidate();
+ }
+ }
+ }
+ pFrame = SfxViewFrame::GetNext( *pFrame, pDocShell );
+ }
+
+ pDocShell = (ScDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
+ }
+}
+
+//============================================================================
+// class ScRefEdit
+//----------------------------------------------------------------------------
+
+#define SC_ENABLE_TIME 100
+
+ScRefEdit::ScRefEdit( ScAnyRefDlg* pParent, const ResId& rResId):
+ Edit(pParent,rResId)
+{
+ pAnyRefDlg=pParent;
+ aTimer.SetTimeoutHdl(LINK( this, ScRefEdit, UpdateHdl) );
+ aTimer.SetTimeout(SC_ENABLE_TIME);
+}
+
+ScRefEdit::ScRefEdit( Window *pParent, const ResId& rResId):
+ Edit(pParent,rResId)
+{
+ pAnyRefDlg=NULL;
+}
+
+ScRefEdit::~ScRefEdit()
+{
+ aTimer.SetTimeoutHdl(Link());
+ aTimer.Stop();
+}
+
+void ScRefEdit::SetRefDialog(ScAnyRefDlg *pDlg)
+{
+ pAnyRefDlg=pDlg;
+
+ if(pDlg!=NULL)
+ {
+ aTimer.SetTimeoutHdl(LINK( this, ScRefEdit, UpdateHdl) );
+ aTimer.SetTimeout(SC_ENABLE_TIME);
+ }
+ else
+ {
+ aTimer.SetTimeoutHdl(Link());
+ aTimer.Stop();
+ }
+}
+
+void ScRefEdit::StartUpdateData()
+{
+ aTimer.Start();
+}
+
+void ScRefEdit::SetText( const XubString& rStr )
+{
+ Edit::SetText(rStr);
+ UpdateHdl(&aTimer);
+}
+
+void ScRefEdit::SetRefString( const XubString& rStr )
+{
+ Edit::SetText(rStr);
+}
+
+void ScRefEdit::GetFocus()
+{
+ Edit::GetFocus();
+ StartUpdateData();
+}
+
+void ScRefEdit::Modify()
+{
+ Edit::Modify();
+ if(pAnyRefDlg!=NULL)
+ {
+ pAnyRefDlg->HideReference();
+ }
+}
+
+
+void ScRefEdit::LoseFocus()
+{
+ Edit::LoseFocus();
+
+ if(pAnyRefDlg!=NULL)
+ {
+ pAnyRefDlg->HideReference();
+ }
+}
+
+IMPL_LINK( ScRefEdit, UpdateHdl, Timer*, pTi)
+{
+ if(pAnyRefDlg!=NULL)
+ {
+ pAnyRefDlg->ShowReference(GetText());
+ }
+
+ return 0;
+}
+
+
+//============================================================================
+// class ScRefButton
+//----------------------------------------------------------------------------
+
+ScRefButton::ScRefButton( ScAnyRefDlg* pParent, const ResId& rResId, ScRefEdit* pEdit )
+ : ImageButton ( pParent, rResId ),
+ aImgRefStart(ScResId( RID_BMP_REFBTN1 )),
+ aImgRefDone (ScResId( RID_BMP_REFBTN2 )),
+ pDlg ( pParent ),
+ pRefEdit ( pEdit )
+{
+ SetImage(aImgRefStart);
+}
+
+ScRefButton::ScRefButton( Window *pParent, const ResId& rResId)
+ : ImageButton ( pParent, rResId ),
+ aImgRefStart( ScResId( RID_BMP_REFBTN1 )),
+ aImgRefDone ( ScResId( RID_BMP_REFBTN2 )),
+ pDlg ( NULL),
+ pRefEdit ( NULL)
+{
+ SetImage(aImgRefStart);
+}
+
+void ScRefButton::SetReferences( ScAnyRefDlg* pRefDlg,ScRefEdit* pEdit )
+{
+ pDlg =pRefDlg;
+ pRefEdit=pEdit;
+}
+
+
+//----------------------------------------------------------------------------
+
+// wenn der Button reingedrueckt erscheinen soll,
+// Check(FALSE/TRUE) statt SetImage
+
+void ScRefButton::Click()
+{
+ if(pDlg!=NULL && pRefEdit!=NULL)
+ {
+ if (pDlg->pRefEdit == pRefEdit) // Ref.-Input aktiv auf Edit?
+ {
+ SetImage(aImgRefStart); // Image aendern
+ pDlg->RefInputDone(TRUE); // Ref.-Eingabe beenden
+ }
+ else
+ {
+ pDlg->RefInputDone(TRUE); // sicherheitshalber
+ pDlg->RefInputStart(pRefEdit, this); // Ref.-Eingabe starten
+ pRefEdit->GrabFocus(); // Focus auf Edit
+ SetImage(aImgRefDone); // Image aendern
+ }
+ }
+}
+
+void ScRefButton::SetStartImage() // fuer Aufruf von aussen
+{
+ SetImage(aImgRefStart);
+}
+
+void ScRefButton::SetEndImage()
+{
+ SetImage(aImgRefDone);
+}
+
+void ScRefButton::GetFocus()
+{
+ ImageButton::GetFocus();
+ if(pRefEdit!=NULL) pRefEdit->StartUpdateData();
+}
+
+
+void ScRefButton::LoseFocus()
+{
+ ImageButton::LoseFocus();
+
+ if(pRefEdit!=NULL) pRefEdit->Modify();
+}
+
+//----------------------------------------------------------------------------
+
+void lcl_HideAllReferences()
+{
+ TypeId aScType = TYPE(ScTabViewShell);
+ SfxViewShell* pSh = SfxViewShell::GetFirst( &aScType );
+ while ( pSh )
+ {
+ ((ScTabViewShell*)pSh)->ClearHighlightRanges();
+ pSh = SfxViewShell::GetNext( *pSh, &aScType );
+ }
+}
+
+//============================================================================
+// class ScAnyRefDlg
+//----------------------------------------------------------------------------
+
+ScAnyRefDlg::ScAnyRefDlg( SfxBindings* pB, SfxChildWindow* pCW,
+ Window* pParent, USHORT nResId)
+ : SfxModelessDialog ( pB, pCW, pParent, ScResId( nResId ) ),
+ pRefEdit( NULL ),
+ pAccel( NULL ),
+ bAccInserted( FALSE ),
+ bHighLightRef( FALSE ),
+ bEnableColorRef( FALSE ),
+ pRefCell(NULL),
+ pRefComp(NULL),
+ pActiveWin(NULL)
+{
+ if(GetHelpId()==0) //Hack, da im SfxModelessDialog die HelpId
+ SetHelpId(GetUniqueId()); //fuer einen ModelessDialog entfernt und
+ //in eine UniqueId gewandelt wird, machen
+ //wir das an dieser Stelle rueckgaengig.
+ aTimer.SetTimeout(200);
+ aTimer.SetTimeoutHdl(LINK( this, ScAnyRefDlg, UpdateFocusHdl));
+
+ SC_MOD()->InputEnterHandler();
+ ScTabViewShell* pScViewShell = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ if ( pScViewShell )
+ {
+ pScViewShell->UpdateInputHandler(TRUE);
+
+ ScDocShell* pDocSh = pScViewShell->GetViewData()->GetDocShell();
+ aDocName = pDocSh->GetTitle();
+ }
+
+ ScInputHandler* pInputHdl = SC_MOD()->GetInputHdl();
+
+ DBG_ASSERT( pInputHdl, "Missing input handler :-/" );
+
+ if ( pInputHdl )
+ pInputHdl->NotifyChange( NULL );
+
+ lcl_EnableInput( FALSE );
+
+ EnableSpreadsheets();
+
+ ScInputOptions aInputOption=SC_MOD()->GetInputOptions();
+ bEnableColorRef=aInputOption.GetRangeFinder();
+
+ ScViewData* pViewData=ScDocShell::GetViewData();
+ if ( pViewData )
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nCol = pViewData->GetCurX();
+ USHORT nRow = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ ScAddress aCursorPos( nCol, nRow, nTab );
+
+ String rStrExp;
+ pRefCell = new ScFormulaCell( pDoc, aCursorPos, rStrExp );
+ pRefComp=new ScCompiler( pDoc, aCursorPos );
+ pRefComp->SetCompileForFAP(TRUE);
+ }
+
+
+ SFX_APP()->LockDispatcher( TRUE );
+ //@Test
+ //SFX_APPWINDOW->Disable(TRUE); //@BugID 54702
+}
+
+//----------------------------------------------------------------------------
+
+ScAnyRefDlg::~ScAnyRefDlg()
+{
+ HideReference();
+ lcl_HideAllReferences();
+
+ lcl_EnableInput( TRUE );
+ SetModalInputMode(FALSE);
+ SFX_APP()->LockDispatcher( FALSE ); //! hier und in DoClose ?
+
+ delete pRefComp;
+ delete pRefCell;
+
+ ScTabViewShell* pScViewShell = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ if ( pScViewShell )
+ {
+ pScViewShell->UpdateInputHandler(TRUE);
+ }
+ if (bAccInserted)
+ Application::RemoveAccel( pAccel );
+ delete pAccel;
+
+ ScInputHandler* pInputHdl = SC_MOD()->GetInputHdl();
+
+ if ( pInputHdl ) //@BugID 54702 Da der Timer fuers Disablen
+ pInputHdl->ResetDelayTimer(); // noch laufen koennte, Reset ausloesen.
+
+ //SFX_APPWINDOW->Enable(TRUE,TRUE);
+// Application::GetAppWindow()->Invalidate(); //Weils so schoen ist!
+ lcl_InvalidateWindows();
+}
+
+//----------------------------------------------------------------------------
+
+void ScAnyRefDlg::SwitchToDocument()
+{
+ ScTabViewShell* pCurrent = ScTabViewShell::GetActiveViewShell();
+ if (pCurrent)
+ {
+ SfxObjectShell* pObjSh = pCurrent->GetObjectShell();
+ if ( pObjSh && pObjSh->GetTitle() == aDocName )
+ {
+ // right document already visible -> nothing to do
+ return;
+ }
+ }
+
+ TypeId aScType = TYPE(ScTabViewShell);
+ SfxViewShell* pSh = SfxViewShell::GetFirst( &aScType );
+ while ( pSh )
+ {
+ SfxObjectShell* pObjSh = pSh->GetObjectShell();
+ if ( pObjSh && pObjSh->GetTitle() == aDocName )
+ {
+ // switch to first TabViewShell for document
+ ((ScTabViewShell*)pSh)->SetActive();
+ return;
+ }
+ pSh = SfxViewShell::GetNext( *pSh, &aScType );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+BOOL ScAnyRefDlg::IsDocAllowed(SfxObjectShell* pDocSh) const // pDocSh may be 0
+{
+ // default: allow only same document (overridden in function dialog)
+ String aCmpName;
+ if ( pDocSh )
+ aCmpName = pDocSh->GetTitle();
+
+ // if aDocName isn't initialized, allow
+ return ( aDocName.Len() == 0 || aDocName == aCmpName );
+}
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScAnyRefDlg::IsRefInputMode() const
+{
+ return IsVisible(); // nur wer sichtbar ist kann auch Referenzen bekommen
+}
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScAnyRefDlg::DoClose( USHORT nId )
+{
+ SfxApplication* pSfxApp = SFX_APP();
+
+ pSfxApp->LockDispatcher( FALSE ); //! hier und im dtor ?
+
+ //! remember the view for which the dialog was started
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if ( pViewFrm && pViewFrm->HasChildWindow(FID_INPUTLINE_STATUS) )
+ {
+ // Die Eingabezeile wird per ToolBox::Disable disabled, muss darum auch
+ // per ToolBox::Enable wieder aktiviert werden (vor dem Enable des AppWindow),
+ // damit die Buttons auch wieder enabled gezeichnet werden.
+ SfxChildWindow* pChild = pViewFrm->GetChildWindow(FID_INPUTLINE_STATUS);
+ if (pChild)
+ {
+ ScInputWindow* pWin = (ScInputWindow*)pChild->GetWindow();
+ pWin->Enable();
+ }
+ }
+ //Application::GetAppWindow()->Enable();
+
+ SC_MOD()->SetRefDialog( nId, FALSE );
+
+ pSfxApp->Broadcast( SfxSimpleHint( FID_KILLEDITVIEW ) );
+
+ ScTabViewShell* pScViewShell = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ if ( pScViewShell )
+ pScViewShell->UpdateInputHandler(TRUE);
+
+ return TRUE;
+}
+
+void ScAnyRefDlg::EnableSpreadsheets(BOOL bFlag, BOOL bChilds)
+{
+ TypeId aType(TYPE(ScDocShell));
+ ScDocShell* pDocShell = (ScDocShell*)SfxObjectShell::GetFirst(&aType);
+ while( pDocShell )
+ {
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocShell );
+ while( pFrame )
+ {
+ // #71577# enable everything except InPlace, including bean frames
+ if ( !pFrame->ISA(SfxInPlaceFrame) )
+ {
+ SfxViewShell* p = pFrame->GetViewShell();
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,p);
+ if(pViewSh!=NULL)
+ {
+ Window *pWin=pViewSh->GetWindow();
+ if(pWin)
+ {
+ Window *pParent=pWin->GetParent();
+ if(pParent)
+ {
+ pParent->EnableInput(bFlag,FALSE);
+ if(bChilds)
+ pViewSh->EnableRefInput(bFlag);
+ }
+ }
+ }
+ }
+ pFrame = SfxViewFrame::GetNext( *pFrame, pDocShell );
+ }
+
+ pDocShell = (ScDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
+ }
+}
+//----------------------------------------------------------------------------
+
+void ScAnyRefDlg::ViewShellChanged(ScTabViewShell* pScViewShell)
+{
+ lcl_EnableInput( FALSE );
+
+ EnableSpreadsheets();
+}
+
+void ScAnyRefDlg::ShowReference( const XubString& rStr )
+{
+ if(pRefEdit==NULL && bEnableColorRef)
+ {
+ if( rStr.Search('(')!=STRING_NOTFOUND ||
+ rStr.Search('+')!=STRING_NOTFOUND ||
+ rStr.Search('*')!=STRING_NOTFOUND ||
+ rStr.Search('-')!=STRING_NOTFOUND ||
+ rStr.Search('/')!=STRING_NOTFOUND ||
+ rStr.Search('&')!=STRING_NOTFOUND ||
+ rStr.Search('<')!=STRING_NOTFOUND ||
+ rStr.Search('>')!=STRING_NOTFOUND ||
+ rStr.Search('=')!=STRING_NOTFOUND ||
+ rStr.Search('^')!=STRING_NOTFOUND)
+ {
+ ShowFormulaReference(rStr);
+ }
+ else
+ {
+ ShowSimpleReference(rStr);
+ }
+ }
+}
+
+void ScAnyRefDlg::ShowSimpleReference( const XubString& rStr )
+{
+ if(pRefEdit==NULL && bEnableColorRef)
+ {
+ bHighLightRef=TRUE;
+ ScViewData* pViewData=ScDocShell::GetViewData();
+ if ( pViewData )
+ {
+ ScDocument* pDoc=pViewData->GetDocument();
+ ScTabViewShell* pTabViewShell=pViewData->GetViewShell();
+
+ ScRangeList aRangeList;
+
+ pTabViewShell->DoneRefMode( FALSE );
+ pTabViewShell->ClearHighlightRanges();
+
+ if(aRangeList.Parse(rStr ,pDoc))
+ {
+ ScRange* pRangeEntry=aRangeList.First();
+
+ USHORT nIndex=0;
+ while(pRangeEntry!=NULL)
+ {
+ ColorData aColName=ScRangeFindList::GetColorName(nIndex++);
+ pTabViewShell->AddHighlightRange(*pRangeEntry, aColName);
+
+ pRangeEntry=aRangeList.Next();
+ }
+ }
+ }
+ }
+}
+
+void ScAnyRefDlg::ShowFormulaReference( const XubString& rStr )
+{
+ if(pRefEdit==NULL && bEnableColorRef)
+ {
+ bHighLightRef=TRUE;
+ ScViewData* pViewData=ScDocShell::GetViewData();
+ if ( pViewData && pRefComp )
+ {
+ ScDocument* pDoc=pViewData->GetDocument();
+ ScTabViewShell* pTabViewShell=pViewData->GetViewShell();
+ USHORT nCol = pViewData->GetCurX();
+ USHORT nRow = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ ScAddress aPos( nCol, nRow, nTab );
+
+ ScTokenArray* pScTokA=pRefComp->CompileString(rStr);
+ //pRefComp->CompileTokenArray();
+
+ if(pTabViewShell!=NULL && pScTokA!=NULL)
+ {
+ pTabViewShell->DoneRefMode( FALSE );
+ pTabViewShell->ClearHighlightRanges();
+
+ pScTokA->Reset();
+ ScToken* pToken=pScTokA->GetNextReference();
+
+ USHORT nIndex=0;
+
+ while(pToken!=NULL)
+ {
+ BOOL bDoubleRef=(pToken->GetType()==svDoubleRef);
+
+
+ if(pToken->GetType()==svSingleRef || bDoubleRef)
+ {
+ ScRange aRange;
+ ComplRefData aRef( pToken->GetReference() );
+ aRef.Ref1.CalcAbsIfRel( aPos );
+ if(bDoubleRef)
+ {
+ aRef.Ref2.CalcAbsIfRel( aPos );
+ aRange=ScRange( aRef.Ref1.nCol, aRef.Ref1.nRow, aRef.Ref1.nTab,
+ aRef.Ref2.nCol, aRef.Ref2.nRow, aRef.Ref2.nTab);
+ }
+ else
+ {
+ aRange=ScRange( aRef.Ref1.nCol, aRef.Ref1.nRow, aRef.Ref1.nTab);
+ }
+ ColorData aColName=ScRangeFindList::GetColorName(nIndex++);
+ pTabViewShell->AddHighlightRange(aRange, aColName);
+ }
+
+ pToken=pScTokA->GetNextReference();
+ }
+ }
+ if(pScTokA!=NULL) delete pScTokA;
+ }
+ }
+}
+
+void ScAnyRefDlg::HideReference()
+{
+ ScViewData* pViewData=ScDocShell::GetViewData();
+
+ if(pViewData!=NULL && pRefEdit==NULL &&
+ bHighLightRef && bEnableColorRef)
+ {
+ ScTabViewShell* pTabViewShell=pViewData->GetViewShell();
+
+ if(pTabViewShell!=NULL)
+ {
+ pTabViewShell->DoneRefMode( FALSE );
+ pTabViewShell->ClearHighlightRanges();
+ }
+ bHighLightRef=FALSE;
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void ScAnyRefDlg::AddRefEntry()
+{
+ // wenn nicht ueberladen, gibt es keine Mehrfach-Referenzen
+}
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScAnyRefDlg::IsTableLocked() const
+{
+ // per Default kann bei Referenzeingabe auch die Tabelle umgeschaltet werden
+
+ return FALSE;
+}
+
+//----------------------------------------------------------------------------
+//
+// RefInputStart/Done: Zoom-In (AutoHide) auf einzelnes Feld
+// (per Button oder Bewegung)
+//
+//----------------------------------------------------------------------------
+
+void ScAnyRefDlg::RefInputStart( ScRefEdit* pEdit, ScRefButton* pButton )
+{
+ if (!pRefEdit)
+ {
+ pRefEdit = pEdit;
+ pRefBtn = pButton;
+
+ // Neuen Fenstertitel basteln
+ String sNewDialogText;
+ sOldDialogText = GetText();
+ sNewDialogText = sOldDialogText;
+ sNewDialogText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " ));
+
+ // Alle Elemente ausser EditCell und Button verstecken
+ USHORT nChildren = GetChildCount();
+ pHiddenMarks = new BOOL [nChildren];
+ for (USHORT i = 0; i < nChildren; i++)
+ {
+ pHiddenMarks[i] = FALSE;
+ Window* pWin = GetChild(i);
+#ifdef VCL
+ pWin = pWin->GetWindow( WINDOW_CLIENT );
+#endif
+ if (pWin == (Window*)pRefEdit)
+ {
+#ifdef VCL
+ sNewDialogText += GetChild(i-1)->GetWindow( WINDOW_CLIENT )->GetText();
+#else
+ sNewDialogText += GetChild(i-1)->GetText();
+#endif
+ }
+ else if (pWin == (Window*)pRefBtn)
+ ; // do nothing
+ else if (pWin->IsVisible())
+ {
+ pHiddenMarks[i] = TRUE;
+ pWin->Hide();
+ }
+ }
+
+ // Alte Daten merken
+ aOldDialogSize = GetOutputSizePixel();
+ aOldEditPos = pRefEdit->GetPosPixel();
+ aOldEditSize = pRefEdit->GetSizePixel();
+ if (pRefBtn)
+ aOldButtonPos = pRefBtn->GetPosPixel();
+
+ // Edit-Feld verschieben und anpassen
+ Size aNewDlgSize(aOldDialogSize.Width(), aOldEditSize.Height());
+ Size aNewEditSize(aNewDlgSize);
+ if (pRefBtn)
+ {
+ aNewEditSize.Width() -= pRefBtn->GetSizePixel().Width();
+ aNewEditSize.Width() -= aOldButtonPos.X() - (aOldEditPos.X()+aOldEditSize.Width());
+ }
+ pRefEdit->SetPosSizePixel(Point(0, 0), aNewEditSize);
+
+ // Button verschieben
+ if (pRefBtn)
+ pRefBtn->SetPosPixel(Point(aOldDialogSize.Width()-pRefBtn->GetSizePixel().Width(), 0));
+
+ // Fenster verkleinern
+ SetOutputSizePixel(aNewDlgSize);
+
+ // Fenstertitel anpassen
+ sNewDialogText.EraseAllChars('~');
+ SetText(sNewDialogText);
+
+ if ( pButton ) // ueber den Button: Enter und Escape abfangen
+ {
+ if (!pAccel)
+ {
+ pAccel = new Accelerator;
+ pAccel->InsertItem( 1, KeyCode( KEY_RETURN ) );
+ pAccel->InsertItem( 2, KeyCode( KEY_ESCAPE ) );
+ pAccel->SetSelectHdl( LINK( this, ScAnyRefDlg, AccelSelectHdl ) );
+ }
+ Application::InsertAccel( pAccel );
+ bAccInserted = TRUE;
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void ScAnyRefDlg::RefInputDone( BOOL bForced )
+{
+ if (pRefEdit && (bForced || !pRefBtn))
+ {
+ if (bAccInserted) // Accelerator wieder abschalten
+ {
+ Application::RemoveAccel( pAccel );
+ bAccInserted = FALSE;
+ }
+
+ // Fenstertitel anpassen
+ SetText(sOldDialogText);
+
+ // Fenster wieder gross
+ SetOutputSizePixel(aOldDialogSize);
+
+ // pEditCell an alte Position
+ pRefEdit->SetPosSizePixel(aOldEditPos, aOldEditSize);
+ if (pRefBtn)
+ pRefBtn->SetPosPixel(aOldButtonPos);
+
+ // Alle anderen: Show();
+ USHORT nChildren = GetChildCount();
+ for ( USHORT i = 0; i < nChildren; i++ )
+ if (pHiddenMarks[i])
+ {
+#ifdef VCL
+ GetChild(i)->GetWindow( WINDOW_CLIENT )->Show();
+#else
+ GetChild(i)->Show();
+#endif
+ }
+ delete [] pHiddenMarks;
+
+ pRefEdit = NULL;
+ }
+}
+
+long ScAnyRefDlg::PreNotify( NotifyEvent& rNEvt )
+{
+ USHORT nSwitch=rNEvt.GetType();
+ if(nSwitch==EVENT_GETFOCUS)
+ {
+ pActiveWin=rNEvt.GetWindow();
+ }
+ return SfxModelessDialog::PreNotify(rNEvt);
+}
+
+void ScAnyRefDlg::StateChanged( StateChangedType nStateChange )
+{
+ SfxModelessDialog::StateChanged( nStateChange );
+
+ if(nStateChange == STATE_CHANGE_VISIBLE)
+ {
+ if(IsVisible())
+ {
+ lcl_EnableInput( FALSE );
+ EnableSpreadsheets();
+ SFX_APP()->LockDispatcher( TRUE );
+ aTimer.Start();
+ }
+ else
+ {
+ lcl_EnableInput( TRUE );
+ SFX_APP()->LockDispatcher( FALSE ); //! hier und in DoClose ?
+ }
+ }
+}
+
+IMPL_LINK( ScAnyRefDlg, UpdateFocusHdl, Timer*, pTi)
+{
+ if (pActiveWin)
+ {
+ pActiveWin->GrabFocus();
+ }
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScAnyRefDlg, AccelSelectHdl, Accelerator *, pAccel )
+{
+ if ( !pAccel )
+ return 0;
+
+ switch ( pAccel->GetCurKeyCode().GetCode() )
+ {
+ case KEY_RETURN:
+ case KEY_ESCAPE:
+ // #57383# der SimpleRefDlg loescht sich bei RefInputDone,
+ // darum Button umschalten vorher...
+ if (pRefBtn)
+ pRefBtn->SetStartImage(); // Image aendern
+ RefInputDone(TRUE); // Ref.-Eingabe beenden
+ break;
+
+ default:
+ break;
+ }
+ return TRUE;
+}
+
+
+
+
diff --git a/sc/source/ui/miscdlgs/autofmt.cxx b/sc/source/ui/miscdlgs/autofmt.cxx
new file mode 100644
index 000000000000..cec970d5b1f6
--- /dev/null
+++ b/sc/source/ui/miscdlgs/autofmt.cxx
@@ -0,0 +1,1460 @@
+/*************************************************************************
+ *
+ * $RCSfile: autofmt.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/algitem.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/brshitem.hxx>
+#include <svx/cntritem.hxx>
+#include <svx/colritem.hxx>
+#include <svx/crsditem.hxx>
+#include <svx/fontitem.hxx>
+#include <svx/postitem.hxx>
+#include <svx/shdditem.hxx>
+#include <svx/udlnitem.hxx>
+#include <svx/wghtitem.hxx>
+#include <svtools/zforlist.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "sc.hrc"
+#include "attrib.hxx"
+#include "zforauto.hxx"
+#include "scitems.hxx"
+#include "global.hxx"
+#include "globstr.hrc"
+#include "autoform.hxx"
+#include "sclnlnk.hxx"
+#include "strindlg.hxx"
+#include "miscdlgs.hrc"
+#include "autofmt.hxx"
+#include "scresid.hxx"
+
+#define FRAME_OFFSET 4
+
+USHORT AutoFmtPreview::aFmtMap[] = { 0, 1, 2, 1, 3, // Zuordnung:
+ 4, 5, 6, 5, 7, // Zelle->Format
+ 8, 9, 10, 9, 11,
+ 4, 5, 6, 5, 7,
+ 12, 13, 14, 13, 15 };
+
+BOOL bIsOlk = FALSE;
+
+
+//========================================================================
+// AutoFormat-Dialog:
+
+ScAutoFormatDlg::ScAutoFormatDlg( Window* pParent,
+ ScAutoFormat* pAutoFormat,
+ const ScAutoFormatData* pSelFormatData ) :
+
+ ModalDialog ( pParent, ScResId( RID_SCDLG_AUTOFORMAT ) ),
+ //
+ aLbFormat ( this, ScResId( LB_FORMAT ) ),
+ aFtFormat ( this, ScResId( FT_FORMAT ) ),
+ aGbPreview ( this, ScResId( GB_PREVIEW ) ),
+ pWndPreview ( new AutoFmtPreview( this, ScResId( WND_PREVIEW ) ) ),
+ aBtnNumFormat ( this, ScResId( BTN_NUMFORMAT ) ),
+ aBtnBorder ( this, ScResId( BTN_BORDER ) ),
+ aBtnFont ( this, ScResId( BTN_FONT ) ),
+ aBtnPattern ( this, ScResId( BTN_PATTERN ) ),
+ aBtnAlignment ( this, ScResId( BTN_ALIGNMENT ) ),
+ aBtnAdjust ( this, ScResId( BTN_ADJUST ) ),
+ aGbFormat ( this, ScResId( GB_FORMAT ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnAdd ( this, ScResId( BTN_ADD ) ),
+ aBtnRemove ( this, ScResId( BTN_REMOVE ) ),
+ aBtnMore ( this, ScResId( BTN_MORE ) ),
+ aBtnRename ( this, ScResId( BTN_RENAME ) ),
+ aStrTitle ( String( ScResId( STR_ADD_TITLE ) ) ),
+ aStrLabel ( String( ScResId( STR_ADD_LABEL ) ) ),
+ aStrRename ( String( ScResId( STR_RENAME_TITLE) ) ),
+ aStrClose ( String( ScResId( STR_BTN_CLOSE ) ) ),
+ aStrDelTitle ( String( ScResId( STR_DEL_TITLE ) ) ),
+ aStrDelMsg ( String( ScResId( STR_DEL_MSG ) ) ),
+ //
+ nIndex ( 0 ),
+ bFmtInserted ( FALSE ),
+ bCoreDataChanged( FALSE ),
+ pFormat ( pAutoFormat ),
+ pSelFmtData ( pSelFormatData )
+{
+ Init();
+ pWndPreview->NotifyChange( (*pFormat)[0] );
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScAutoFormatDlg::~ScAutoFormatDlg()
+{
+ delete pWndPreview;
+}
+
+//------------------------------------------------------------------------
+
+void ScAutoFormatDlg::Init()
+{
+ USHORT nCount;
+ String aEntry;
+
+ aLbFormat .SetSelectHdl( LINK( this, ScAutoFormatDlg, SelFmtHdl ) );
+ aBtnNumFormat.SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
+ aBtnBorder .SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
+ aBtnFont .SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
+ aBtnPattern .SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
+ aBtnAlignment.SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
+ aBtnAdjust .SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
+ aBtnAdd .SetClickHdl ( LINK( this, ScAutoFormatDlg, AddHdl ) );
+ aBtnRemove .SetClickHdl ( LINK( this, ScAutoFormatDlg, RemoveHdl ) );
+ aBtnOk .SetClickHdl ( LINK( this, ScAutoFormatDlg, CloseHdl ) );
+ aBtnCancel .SetClickHdl ( LINK( this, ScAutoFormatDlg, CloseHdl ) );
+ aBtnRename .SetClickHdl ( LINK( this, ScAutoFormatDlg, RenameHdl ) );
+ aLbFormat .SetDoubleClickHdl( LINK( this, ScAutoFormatDlg, DblClkHdl ) );
+
+ aBtnMore.AddWindow( &aBtnRename );
+ aBtnMore.AddWindow( &aBtnNumFormat );
+ aBtnMore.AddWindow( &aBtnBorder );
+ aBtnMore.AddWindow( &aBtnFont );
+ aBtnMore.AddWindow( &aBtnPattern );
+ aBtnMore.AddWindow( &aBtnAlignment );
+ aBtnMore.AddWindow( &aBtnAdjust );
+ aBtnMore.AddWindow( &aGbFormat );
+
+ nCount = pFormat->GetCount();
+
+ for ( USHORT i = 0; i < nCount; i++ )
+ {
+ ((*pFormat)[i])->GetName( aEntry );
+ aLbFormat.InsertEntry( aEntry );
+ }
+
+ if ( nCount == 1 )
+ aBtnRemove.Disable();
+
+ aLbFormat.SelectEntryPos( 0 );
+ aBtnRename.Disable();
+ aBtnRemove.Disable();
+
+ nIndex = 0;
+ UpdateChecks();
+
+ if ( !pSelFmtData )
+ {
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ bFmtInserted = TRUE;
+ }
+}
+
+//------------------------------------------------------------------------
+
+void ScAutoFormatDlg::UpdateChecks()
+{
+ ScAutoFormatData* pData = (*pFormat)[nIndex];
+
+ aBtnNumFormat.Check( pData->GetIncludeValueFormat() );
+ aBtnBorder .Check( pData->GetIncludeFrame() );
+ aBtnFont .Check( pData->GetIncludeFont() );
+ aBtnPattern .Check( pData->GetIncludeBackground() );
+ aBtnAlignment.Check( pData->GetIncludeJustify() );
+ aBtnAdjust .Check( pData->GetIncludeWidthHeight() );
+}
+
+//------------------------------------------------------------------------
+// Handler:
+//---------
+
+IMPL_LINK( ScAutoFormatDlg, CloseHdl, PushButton *, pBtn )
+{
+ if ( pBtn == &aBtnOk || pBtn == &aBtnCancel )
+ {
+ if ( bCoreDataChanged )
+ ScGlobal::GetAutoFormat()->Save();
+
+ EndDialog( (pBtn == &aBtnOk) ? RET_OK : RET_CANCEL );
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( ScAutoFormatDlg, DblClkHdl, void *, EMPTYARG )
+{
+ if ( bCoreDataChanged )
+ ScGlobal::GetAutoFormat()->Save();
+
+ EndDialog( RET_OK );
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScAutoFormatDlg, DblClkHdl, void *, EMPTYARG )
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScAutoFormatDlg, CheckHdl, Button *, pBtn )
+{
+ ScAutoFormatData* pData = (*pFormat)[nIndex];
+ BOOL bCheck = ((CheckBox*)pBtn)->IsChecked();
+
+ if ( pBtn == &aBtnNumFormat )
+ pData->SetIncludeValueFormat( bCheck );
+ else if ( pBtn == &aBtnBorder )
+ pData->SetIncludeFrame( bCheck );
+ else if ( pBtn == &aBtnFont )
+ pData->SetIncludeFont( bCheck );
+ else if ( pBtn == &aBtnPattern )
+ pData->SetIncludeBackground( bCheck );
+ else if ( pBtn == &aBtnAlignment )
+ pData->SetIncludeJustify( bCheck );
+ else if ( pBtn == &aBtnAdjust )
+ pData->SetIncludeWidthHeight( bCheck );
+
+ if ( !bCoreDataChanged )
+ {
+ aBtnCancel.SetText( aStrClose );
+ bCoreDataChanged = TRUE;
+ }
+
+ pWndPreview->NotifyChange( pData );
+
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScAutoFormatDlg, AddHdl, void *, EMPTYARG )
+{
+ if ( !bFmtInserted && pSelFmtData )
+ {
+ String aStrStandard( ScResId(STR_STANDARD) );
+ String aFormatName;
+ ScStringInputDlg* pDlg;
+ BOOL bOk = FALSE;
+
+ while ( !bOk )
+ {
+ pDlg = new ScStringInputDlg( this,
+ aStrTitle,
+ aStrLabel,
+ aFormatName,
+ HID_SC_ADD_AUTOFMT );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ pDlg->GetInputString( aFormatName );
+
+ if ( (aFormatName.Len() > 0) && (aFormatName != aStrStandard) )
+ {
+ ScAutoFormatData* pNewData
+ = new ScAutoFormatData( *pSelFmtData );
+
+ pNewData->SetName( aFormatName );
+ bFmtInserted = pFormat->Insert( pNewData );
+
+ if ( bFmtInserted )
+ {
+ USHORT nAt = pFormat->IndexOf( pNewData );
+
+ aLbFormat.InsertEntry( aFormatName, nAt );
+ aLbFormat.SelectEntry( aFormatName );
+ aBtnAdd.Disable();
+
+ if ( !bCoreDataChanged )
+ {
+ aBtnCancel.SetText( aStrClose );
+ bCoreDataChanged = TRUE;
+ }
+
+ SelFmtHdl( 0 );
+ bOk = TRUE;
+ }
+ else
+ delete pNewData;
+
+ }
+
+ if ( !bFmtInserted )
+ {
+ USHORT nRet = ErrorBox( this,
+ WinBits( WB_OK_CANCEL | WB_DEF_OK),
+ ScGlobal::GetRscString(STR_INVALID_AFNAME)
+ ).Execute();
+
+ bOk = ( nRet == RET_CANCEL );
+ }
+ }
+ else
+ bOk = TRUE;
+
+ delete pDlg;
+ }
+ }
+
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScAutoFormatDlg, RemoveHdl, void *, EMPTYARG )
+{
+ if ( (nIndex > 0) && (aLbFormat.GetEntryCount() > 0) )
+ {
+ String aMsg( aStrDelMsg.GetToken( 0, '#' ) );
+
+ aMsg += aLbFormat.GetSelectEntry();
+ aMsg += aStrDelMsg.GetToken( 1, '#' );
+
+ if ( RET_YES ==
+ QueryBox( this, WinBits( WB_YES_NO | WB_DEF_YES ), aMsg ).Execute() )
+ {
+ aLbFormat.RemoveEntry( nIndex );
+ aLbFormat.SelectEntryPos( nIndex-1 );
+
+ if ( nIndex-1 == 0 )
+ aBtnRemove.Disable();
+
+ if ( !bCoreDataChanged )
+ {
+ aBtnCancel.SetText( aStrClose );
+ bCoreDataChanged = TRUE;
+ }
+
+ pFormat->AtFree( nIndex ); // in der Core loeschen
+ nIndex--;
+
+ SelFmtHdl( 0 );
+ }
+ }
+
+ SelFmtHdl( 0 );
+
+ return 0;
+}
+
+IMPL_LINK( ScAutoFormatDlg, RenameHdl, void *, pBtn)
+{
+ BOOL bOk = FALSE;
+ while( !bOk )
+ {
+
+ String aFormatName=aLbFormat.GetSelectEntry();
+ String aEntry;
+
+ ScStringInputDlg* pDlg = new ScStringInputDlg( this,
+ aStrRename,
+ aStrLabel,
+ aFormatName,
+ HID_SC_RENAME_AUTOFMT );
+ if( pDlg->Execute() == RET_OK )
+ {
+ BOOL bFmtRenamed = FALSE;
+ pDlg->GetInputString( aFormatName );
+
+ if ( aFormatName.Len() > 0 )
+ {
+ for( USHORT n = 0; n < pFormat->GetCount(); ++n )
+ {
+ (*pFormat)[n]->GetName(aEntry);
+ if ( aEntry== aFormatName)
+ break;
+ }
+ if( n >= pFormat->GetCount() )
+ {
+ // Format mit dem Namen noch nicht vorhanden, also
+ // umbenennen
+
+ aLbFormat.RemoveEntry(nIndex );
+ ScAutoFormatData* p=(*pFormat)[ nIndex ];
+ ScAutoFormatData* pNewData
+ = new ScAutoFormatData(*p);
+
+ pFormat->AtFree( nIndex );
+
+ pNewData->SetName( aFormatName );
+
+ pFormat->Insert( pNewData);
+
+ USHORT nCount = pFormat->GetCount();
+
+ aLbFormat.SetUpdateMode(FALSE);
+ aLbFormat.Clear();
+ for ( USHORT i = 0; i < nCount; i++ )
+ {
+ ((*pFormat)[i])->GetName( aEntry );
+ aLbFormat.InsertEntry( aEntry );
+ }
+
+ aLbFormat.SetUpdateMode( TRUE);
+ aLbFormat.SelectEntry( aFormatName);
+
+ if ( !bCoreDataChanged )
+ {
+ aBtnCancel.SetText( aStrClose );
+ bCoreDataChanged = TRUE;
+ }
+
+
+ SelFmtHdl( 0 );
+ bOk = TRUE;
+ bFmtRenamed = TRUE;
+ }
+ }
+ if( !bFmtRenamed )
+ {
+ bOk = RET_CANCEL == ErrorBox( this,
+ WinBits( WB_OK_CANCEL | WB_DEF_OK),
+ ScGlobal::GetRscString(STR_INVALID_AFNAME)
+ ).Execute();
+ }
+ }
+ else
+ bOk = TRUE;
+ delete pDlg;
+ }
+
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScAutoFormatDlg, SelFmtHdl, void *, EMPTYARG )
+{
+ nIndex = aLbFormat.GetSelectEntryPos();
+ UpdateChecks();
+
+ if ( nIndex == 0 )
+ {
+ aBtnRename.Disable();
+ aBtnRemove.Disable();
+ }
+ else
+ {
+ aBtnRename.Enable();
+ aBtnRemove.Enable();
+ }
+
+ pWndPreview->NotifyChange( (*pFormat)[nIndex] );
+
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT ScAutoFormatDlg::GetCurrFormatName()
+{
+ String aResult;
+
+ ((*pFormat)[nIndex])->GetName( aResult );
+
+ return aResult;
+}
+
+//========================================================================
+// AutoFmtPreview
+
+AutoFmtPreview::AutoFmtPreview( Window* pParent, const ResId& rRes ) :
+ Window ( pParent, rRes ),
+ aVD ( *this ),
+ pCurData ( NULL ),
+ bFitWidth ( FALSE ),
+ aStrJan ( String( ScResId( STR_JAN ) ) ),
+ aStrFeb ( String( ScResId( STR_FEB ) ) ),
+ aStrMar ( String( ScResId( STR_MAR ) ) ),
+ aStrNorth ( String( ScResId( STR_NORTH ) ) ),
+ aStrMid ( String( ScResId( STR_MID ) ) ),
+ aStrSouth ( String( ScResId( STR_SOUTH ) ) ),
+ aStrSum ( String( ScResId( STR_SUM ) ) ),
+ aPrvSize ( GetSizePixel().Width() - 6,
+ GetSizePixel().Height() - 30 ),
+ nLabelColWidth ( (USHORT)(((aPrvSize.Width()-4)/4)-12) ),
+ nDataColWidth1 ( (USHORT)(((aPrvSize.Width()-4)-(nLabelColWidth*2)) / 3) ),
+ nDataColWidth2 ( (USHORT)(((aPrvSize.Width()-4)-(nLabelColWidth*2)) / 4) ),
+ nRowHeight ( (USHORT)((aPrvSize.Height()-4) / 5) ),
+ pNumFmt ( new SvNumberFormatter( ScGlobal::eLnge ) )
+{
+ Init();
+ if( bIsOlk )
+ ((String&)aStrMar).AssignAscii(RTL_CONSTASCII_STRINGPARAM( "Olk" ));
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT AutoFmtPreview::~AutoFmtPreview()
+{
+ for ( USHORT i=0; i<=35; i++ )
+ {
+ delete aLinePtrArray[i];
+ }
+ delete pNumFmt;
+}
+
+//------------------------------------------------------------------------
+
+void lcl_AssignLine( SvxBorderLine& dest,
+ const SvxBorderLine* src )
+{
+ dest.SetColor ( (src) ? src->GetColor() : Color( COL_WHITE ) );
+ dest.SetOutWidth ( (src) ? src->GetOutWidth() : 0 );
+ dest.SetInWidth ( (src) ? src->GetInWidth() : 0 );
+ dest.SetDistance ( (src) ? src->GetDistance() : 0 );
+}
+
+//------------------------------------------------------------------------
+
+void lcl_GetLineStruct( ScLineStruct& rLine,
+ const SvxBorderLine& rBoxLine )
+{
+ if ( rBoxLine.GetOutWidth() > 0 )
+ {
+ rLine.nLeft = rBoxLine.GetOutWidth();
+ rLine.nMiddle = rBoxLine.GetDistance();
+ rLine.nRight = rBoxLine.GetInWidth();
+
+ /* Linienstaerke auf dick/duenn abbilden:
+ *
+ * (in TWIPS, 1pt = 20 TWIPS = duenn)
+ * alles was <=0 ist -> (0,0,0)
+ * alles was <=20 ist -> (1,0,0)/(1,1,1)
+ * alles andere -> (3,0,0)/(2,1,2)
+ */
+
+ if ( rLine.nMiddle == 0 ) // einfache Linie?
+ {
+ rLine.nRight = 0; // sicher ist sicher
+
+ if ( rLine.nLeft <= 20 )
+ {
+ rLine.nLeft = 1;
+ }
+ else if ( rLine.nLeft > 20 )
+ {
+ rLine.nLeft = 3;
+ }
+ }
+ else // doppelte Linie
+ {
+ rLine.nMiddle = 1;
+ if ( rLine.nLeft <= 20 )
+ {
+ rLine.nLeft = rLine.nRight = 1;
+ }
+ else if ( rLine.nLeft > 20 )
+ {
+ rLine.nLeft = rLine.nRight = 2;
+ }
+ }
+ }
+ else
+ {
+ rLine.nLeft = 0;
+ rLine.nMiddle = 0;
+ rLine.nRight = 0;
+ }
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::CheckPriority( USHORT nCurLine,
+ AutoFmtLine eLine,
+ SvxBorderLine& rLine )
+{
+ const SvxBorderLine* pDrawLine;
+ USHORT nOther = 0;
+
+ switch ( eLine )
+ {
+ case TOP_LINE:
+ {
+ lcl_AssignLine( rLine, aLinePtrArray[nCurLine]->GetTop() );
+ nOther = nCurLine-7;
+ pDrawLine = aLinePtrArray[nOther]->GetBottom();
+
+ if ( HasPriority( pDrawLine, &rLine ) )
+ lcl_AssignLine( rLine, pDrawLine );
+ }
+ break;
+
+ case BOTTOM_LINE:
+ {
+ lcl_AssignLine( rLine, aLinePtrArray[nCurLine]->GetBottom() );
+ nOther = nCurLine+7;
+ pDrawLine = aLinePtrArray[nOther]->GetTop();
+
+ if ( HasPriority( pDrawLine, &rLine ) )
+ lcl_AssignLine( rLine, pDrawLine );
+ }
+ break;
+
+ case LEFT_LINE:
+ {
+ lcl_AssignLine( rLine, aLinePtrArray[nCurLine]->GetLeft() );
+ nOther = nCurLine-1;
+ pDrawLine = aLinePtrArray[nOther]->GetRight();
+
+ if ( HasPriority( pDrawLine, &rLine ) )
+ lcl_AssignLine( rLine, pDrawLine );
+ }
+ break;
+
+ case RIGHT_LINE:
+ {
+ lcl_AssignLine( rLine, aLinePtrArray[nCurLine]->GetRight() );
+ nOther = nCurLine+1;
+ pDrawLine = aLinePtrArray[nOther]->GetLeft();
+
+ if ( HasPriority( pDrawLine, &rLine ) )
+ lcl_AssignLine( rLine, pDrawLine );
+ }
+ break;
+ }
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::GetLines( USHORT nIndex, AutoFmtLine eLine,
+ SvxBorderLine& rLineD,
+ SvxBorderLine& rLineLT,
+ SvxBorderLine& rLineL,
+ SvxBorderLine& rLineLB,
+ SvxBorderLine& rLineRT,
+ SvxBorderLine& rLineR,
+ SvxBorderLine& rLineRB )
+{
+ {
+ SvxBorderLine aNullLine;
+
+ lcl_AssignLine( rLineD, &aNullLine);
+ lcl_AssignLine( rLineLT, &aNullLine);
+ lcl_AssignLine( rLineL, &aNullLine);
+ lcl_AssignLine( rLineLB, &aNullLine);
+ lcl_AssignLine( rLineRT, &aNullLine);
+ lcl_AssignLine( rLineR, &aNullLine);
+ lcl_AssignLine( rLineRB, &aNullLine);
+ }
+
+ if ( pCurData )
+ {
+ USHORT nCurLine = nIndex + 8 + ((nIndex/5)*2);
+ USHORT nOther = 0;
+
+ switch ( eLine )
+ {
+ case TOP_LINE:
+ {
+ // obere Linien werden nur in der
+ // ersten Zeile gemalt:
+ if ( (nIndex >= 0) && (nIndex <= 4) )
+ {
+ // links
+ CheckPriority( nCurLine, eLine, rLineD );
+ nOther = nCurLine-7;
+ CheckPriority( nOther, LEFT_LINE, rLineLT );
+ nOther = nCurLine-1;
+ CheckPriority( nOther, TOP_LINE, rLineL );
+ CheckPriority( nCurLine, LEFT_LINE, rLineLB );
+ // rechts
+ nOther = nCurLine-7;
+ CheckPriority( nOther, RIGHT_LINE, rLineRT );
+ nOther = nCurLine+1;
+ CheckPriority( nOther, TOP_LINE, rLineR );
+ CheckPriority( nCurLine, RIGHT_LINE, rLineRB );
+ }
+ }
+ break;
+
+ case BOTTOM_LINE:
+ {
+ // links
+ CheckPriority( nCurLine, eLine, rLineD );
+ CheckPriority( nCurLine, LEFT_LINE, rLineLT );
+ nOther = nCurLine-1;
+ CheckPriority( nOther, BOTTOM_LINE, rLineL );
+ nOther = nCurLine+7;
+ CheckPriority( nOther, LEFT_LINE, rLineLB );
+ // rechts
+ CheckPriority( nCurLine, RIGHT_LINE, rLineRT );
+ nOther = nCurLine+1;
+ CheckPriority( nOther, BOTTOM_LINE, rLineR );
+ nOther = nCurLine+7;
+ CheckPriority( nOther, RIGHT_LINE, rLineRB );
+ }
+ break;
+
+ case LEFT_LINE:
+ {
+ // linke Linien werden nur in der
+ // ersten Spalte gemalt:
+ if ( (nIndex%5) == 0 )
+ {
+ // oben
+ CheckPriority( nCurLine, eLine, rLineD );
+ CheckPriority( nCurLine, TOP_LINE, rLineLT );
+ nOther = nCurLine-7;
+ CheckPriority( nOther, LEFT_LINE, rLineL );
+ nOther = nCurLine-1;
+ CheckPriority( nOther, TOP_LINE, rLineLB );
+ // unten
+ CheckPriority( nCurLine, BOTTOM_LINE, rLineRT );
+ nOther = nCurLine+7;
+ CheckPriority( nOther, LEFT_LINE, rLineR );
+ nOther = nCurLine-1;
+ CheckPriority( nOther, BOTTOM_LINE, rLineRB );
+ }
+ }
+ break;
+
+ case RIGHT_LINE:
+ {
+ // oben
+ CheckPriority( nCurLine, eLine, rLineD );
+ nOther = nCurLine+1;
+ CheckPriority( nOther, TOP_LINE, rLineLT );
+ nOther = nCurLine-7;
+ CheckPriority( nOther, RIGHT_LINE, rLineL );
+ CheckPriority( nCurLine, TOP_LINE, rLineLB );
+ // unten
+ nOther = nCurLine+1;
+ CheckPriority( nOther, BOTTOM_LINE, rLineRT );
+ nOther = nCurLine+7;
+ CheckPriority( nOther, RIGHT_LINE, rLineR );
+ CheckPriority( nCurLine, BOTTOM_LINE, rLineRB );
+ }
+ break;
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::DrawFrameLine( const SvxBorderLine& rLineD,
+ Point from,
+ Point to,
+ BOOL bHorizontal,
+ const SvxBorderLine& rLineLT,
+ const SvxBorderLine& rLineL,
+ const SvxBorderLine& rLineLB,
+ const SvxBorderLine& rLineRT,
+ const SvxBorderLine& rLineR,
+ const SvxBorderLine& rLineRB )
+{
+ if ( pCurData )
+ {
+ ScLineStruct dLine;
+ ScLineStruct ltLine;
+ ScLineStruct lLine;
+ ScLineStruct lbLine;
+ ScLineStruct rtLine;
+ ScLineStruct rLine;
+ ScLineStruct rbLine;
+ short dxArr[4];
+
+ lcl_GetLineStruct( dLine, rLineD );
+ lcl_GetLineStruct( ltLine, rLineLT );
+ lcl_GetLineStruct( lLine, rLineL );
+ lcl_GetLineStruct( lbLine, rLineLB );
+ lcl_GetLineStruct( rtLine, rLineRT );
+ lcl_GetLineStruct( rLine, rLineR );
+ lcl_GetLineStruct( rbLine, rLineRB );
+
+ if ( dLine.nLeft > 0 )
+ {
+ BOOL bHadLine = aVD.IsLineColor();
+ Color aOldLine = aVD.GetLineColor();
+ BOOL bHadFill = aVD.IsFillColor();
+ Color aOldFill = aVD.GetFillColor();
+
+ USHORT nHeight = dLine.nLeft + dLine.nMiddle + dLine.nRight;
+ Point from2 = from;
+ Point to2 = to;
+
+ aVD.SetLineColor();
+ aVD.SetFillColor( rLineD.GetColor() );
+
+ ScLinkLine( dLine,
+ ltLine, lLine, lbLine,
+ rtLine, rLine, rbLine,
+ dxArr );
+
+ if ( bHorizontal )
+ {
+ from.Y() -= nHeight/2;
+ to.Y() -= nHeight/2;
+ to.Y() += (dLine.nLeft-1);
+
+ from.X() += dxArr[0];
+ to.X() += dxArr[2];
+
+ aVD.DrawRect( Rectangle( from, to ) );
+
+ // noch eine zweite Linie zu malen?
+ if ( dLine.nRight != 0 )
+ {
+ from2.Y() -= nHeight/2;
+ from2.Y() += dLine.nLeft+dLine.nMiddle;
+ to2.Y() -= nHeight/2;
+ to2.Y() += dLine.nMiddle+dLine.nLeft;
+ to2.Y() += (dLine.nRight-1);
+
+ from2.X() += dxArr[1];
+ to2.X() += dxArr[3];
+
+ aVD.DrawRect( Rectangle( from2, to2 ) );
+ }
+ }
+ else
+ {
+ from.X() += nHeight/2;
+ from.X() -= (dLine.nLeft-1);
+ to.X() += nHeight/2;
+
+ from.Y() += dxArr[0];
+ to.Y() += dxArr[2];
+
+ aVD.DrawRect( Rectangle( from, to ) );
+
+ // noch eine zweite Linie zu malen?
+ if ( dLine.nRight != 0 )
+ {
+ from2.X() -= nHeight/2;
+ to2.X() -= nHeight/2;
+ to2.X() += (dLine.nRight-1);
+
+ from2.Y() += dxArr[1];
+ to2.Y() += dxArr[3];
+
+ aVD.DrawRect( Rectangle( from2, to2 ) );
+ }
+ }
+
+ if (bHadFill) aVD.SetFillColor(aOldFill); else aVD.SetFillColor();
+ if (bHadLine) aVD.SetLineColor(aOldLine); else aVD.SetLineColor();
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::DrawFrame( USHORT nIndex )
+{
+ if ( pCurData )
+ {
+ //----------------------
+ // Malen des Zellrahmens
+ //----------------------
+
+ SvxBorderLine aLineD;
+ SvxBorderLine aLineLT;
+ SvxBorderLine aLineL;
+ SvxBorderLine aLineLB;
+ SvxBorderLine aLineRT;
+ SvxBorderLine aLineR;
+ SvxBorderLine aLineRB;
+ Rectangle cellRect = aCellArray[nIndex];
+
+ //---------
+ // TopLine ---------------------------------------------
+ //---------
+ GetLines( nIndex, TOP_LINE, aLineD,
+ aLineLT, aLineL, aLineLB,
+ aLineRT, aLineR, aLineRB );
+
+ DrawFrameLine( aLineD,
+ cellRect.TopLeft(), cellRect.TopRight(), TRUE,
+ aLineLT, aLineL, aLineLB,
+ aLineRT, aLineR, aLineRB );
+
+ //------------
+ // BottomLine ------------------------------------------
+ //------------
+ GetLines( nIndex, BOTTOM_LINE, aLineD,
+ aLineLT, aLineL, aLineLB,
+ aLineRT, aLineR, aLineRB );
+
+ DrawFrameLine( aLineD,
+ cellRect.BottomLeft(), cellRect.BottomRight(), TRUE,
+ aLineLT, aLineL, aLineLB,
+ aLineRT, aLineR, aLineRB );
+
+ //----------
+ // LeftLine --------------------------------------------
+ //----------
+ GetLines( nIndex, LEFT_LINE, aLineD,
+ aLineLT, aLineL, aLineLB,
+ aLineRT, aLineR, aLineRB );
+
+ DrawFrameLine( aLineD,
+ cellRect.TopLeft(), cellRect.BottomLeft(), FALSE,
+ aLineLT, aLineL, aLineLB,
+ aLineRT, aLineR, aLineRB );
+
+ //-----------
+ // RightLine -------------------------------------------
+ //-----------
+ GetLines( nIndex, RIGHT_LINE, aLineD,
+ aLineLT, aLineL, aLineLB,
+ aLineRT, aLineR, aLineRB );
+
+ DrawFrameLine( aLineD,
+ cellRect.TopRight(), cellRect.BottomRight(), FALSE,
+ aLineLT, aLineL, aLineLB,
+ aLineRT, aLineR, aLineRB );
+ }
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::MakeFont( USHORT nIndex, Font& rFont )
+{
+ if ( pCurData )
+ {
+ Size aSize;
+ SvxFontItem aFontItem;
+ SvxWeightItem aFontWeightItem;
+ SvxPostureItem aFontPostureItem;
+ SvxUnderlineItem aFontUnderlineItem;
+ SvxCrossedOutItem aFontCrossedOutItem;
+ SvxContourItem aFontContourItem;
+ SvxShadowedItem aFontShadowedItem;
+ SvxColorItem aFontColorItem;
+
+ rFont = GetFont();
+ aSize = rFont.GetSize();
+ aSize.Height() = 10;
+
+ pCurData->GetFont ( nIndex, aFontItem );
+ pCurData->GetFontWeight ( nIndex, aFontWeightItem );
+ pCurData->GetFontPosture ( nIndex, aFontPostureItem );
+ pCurData->GetFontUnderline ( nIndex, aFontUnderlineItem );
+ pCurData->GetFontCrossedOut ( nIndex, aFontCrossedOutItem );
+ pCurData->GetFontContour ( nIndex, aFontContourItem );
+ pCurData->GetFontShadowed ( nIndex, aFontShadowedItem );
+ pCurData->GetFontColor ( nIndex, aFontColorItem );
+
+ rFont.SetFamily ( aFontItem.GetFamily() );
+ rFont.SetName ( aFontItem.GetFamilyName() );
+ rFont.SetStyleName ( aFontItem.GetStyleName() );
+ rFont.SetCharSet ( aFontItem.GetCharSet() );
+ rFont.SetPitch ( aFontItem.GetPitch() );
+ rFont.SetWeight ( (FontWeight)aFontWeightItem.GetValue() );
+ rFont.SetUnderline ( (FontUnderline)aFontUnderlineItem.GetValue() );
+ rFont.SetStrikeout ( (FontStrikeout)aFontCrossedOutItem.GetValue() );
+ rFont.SetItalic ( (FontItalic)aFontPostureItem.GetValue() );
+ rFont.SetOutline ( aFontContourItem.GetValue() );
+ rFont.SetShadow ( aFontShadowedItem.GetValue() );
+ rFont.SetColor ( aFontColorItem.GetValue() );
+ rFont.SetSize ( aSize );
+ rFont.SetTransparent (TRUE);
+ }
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::DrawString( USHORT nIndex )
+{
+ if ( pCurData )
+ {
+ //------------------------
+ // Ausgabe des Zelltextes:
+ //------------------------
+
+ String cellString;
+ BOOL bNumFormat = pCurData->GetIncludeValueFormat();
+ ULONG nNum;
+ double nVal;
+ Color* pDummy = NULL;
+
+ switch( nIndex )
+ {
+ case 1: cellString = aStrJan; break;
+ case 2: cellString = aStrFeb; break;
+ case 3: cellString = aStrMar; break;
+ case 5: cellString = aStrNorth; break;
+ case 10: cellString = aStrMid; break;
+ case 15: cellString = aStrSouth; break;
+ case 4:
+ case 20: cellString = aStrSum; break;
+
+ case 6:
+ case 8:
+ case 16:
+ case 18: nVal = nIndex;
+ nNum = 5;
+ goto mknum;
+ case 17:
+ case 7: nVal = nIndex;
+ nNum = 6;
+ goto mknum;
+ case 11:
+ case 12:
+ case 13: nVal = nIndex;
+ nNum = 12 == nIndex ? 10 : 9;
+ goto mknum;
+
+ case 9: nVal = 21; nNum = 7; goto mknum;
+ case 14: nVal = 36; nNum = 11; goto mknum;
+ case 19: nVal = 51; nNum = 7; goto mknum;
+ case 21: nVal = 33; nNum = 13; goto mknum;
+ case 22: nVal = 36; nNum = 14; goto mknum;
+ case 23: nVal = 39; nNum = 13; goto mknum;
+ case 24: nVal = 108; nNum = 15;
+ mknum:
+ if( bNumFormat )
+ {
+ ScNumFormatAbbrev aFmt;
+ pCurData->GetNumFormat( (USHORT) nNum, aFmt );
+ nNum = aFmt.GetFormatIndex( *pNumFmt );
+ }
+ else
+ nNum = 0;
+ pNumFmt->GetOutputString( nVal, nNum, cellString, &pDummy );
+ break;
+ }
+
+ if ( cellString.Len() > 0 )
+ {
+ Font oldFont;
+ Size aStrSize;
+ USHORT nFmtIndex = aFmtMap[nIndex];
+ Rectangle cellRect = aCellArray[nIndex];
+ Point aPos = aCellArray[nIndex].TopLeft();
+ USHORT nRightX = 0;
+ BOOL bJustify = pCurData->GetIncludeJustify();
+ SvxHorJustifyItem aHorJustifyItem;
+ SvxCellHorJustify eJustification;
+
+ //-------------
+ // Ausrichtung:
+ //-------------
+ if ( bJustify )
+ {
+ pCurData->GetHorJustify( nFmtIndex, aHorJustifyItem );
+ eJustification = (SvxCellHorJustify)aHorJustifyItem.GetValue();
+ }
+ else
+ {
+ eJustification = SVX_HOR_JUSTIFY_STANDARD;
+ }
+
+ if ( pCurData->GetIncludeFont() )
+ {
+ Font aFont;
+ Size theMaxStrSize;
+
+ MakeFont( nFmtIndex, aFont );
+ oldFont = aVD.GetFont();
+ aVD.SetFont( aFont );
+ theMaxStrSize = cellRect.GetSize();
+ theMaxStrSize.Width() -= FRAME_OFFSET;
+ theMaxStrSize.Height() -= FRAME_OFFSET;
+ aStrSize.Width() = aVD.GetTextWidth( cellString );
+ aStrSize.Height() = aVD.GetTextHeight();
+
+ if ( theMaxStrSize.Height() < aStrSize.Height() )
+ {
+ // wenn der String in diesem Font nicht
+ // in die Zelle passt, wird wieder der
+ // Standard-Font genommen:
+ aVD.SetFont( oldFont );
+ aStrSize.Width() = aVD.GetTextWidth( cellString );
+ aStrSize.Height() = aVD.GetTextHeight();
+ }
+ while ( ( theMaxStrSize.Width() <= aStrSize.Width() )
+ && ( cellString.Len() > 1 ) )
+ {
+ if( eJustification == SVX_HOR_JUSTIFY_RIGHT )
+ cellString.Erase( 0, 1 );
+ else
+ cellString.Erase( cellString.Len() - 1 );
+ aStrSize.Width() = aVD.GetTextWidth( cellString );
+ aStrSize.Height() = aVD.GetTextHeight();
+ }
+ }
+ else
+ {
+ aStrSize.Width() = aVD.GetTextWidth( cellString );
+ aStrSize.Height() = aVD.GetTextHeight();
+ }
+
+ nRightX = (USHORT)( cellRect.GetWidth()
+ - aStrSize.Width()
+ - FRAME_OFFSET );
+
+ //-----------------------------
+ // vertikal (immer zentrieren):
+ //-----------------------------
+ aPos.Y() += (nRowHeight - (USHORT)aStrSize.Height()) / 2;
+
+ //-----------
+ // horizontal
+ //-----------
+ if ( eJustification != SVX_HOR_JUSTIFY_STANDARD )
+ {
+ USHORT nHorPos = (USHORT)
+ ((cellRect.GetWidth()-aStrSize.Width())/2);
+
+ switch ( eJustification )
+ {
+ case SVX_HOR_JUSTIFY_LEFT:
+ aPos.X() += FRAME_OFFSET;
+ break;
+ case SVX_HOR_JUSTIFY_RIGHT:
+ aPos.X() += nRightX;
+ break;
+ case SVX_HOR_JUSTIFY_BLOCK:
+ case SVX_HOR_JUSTIFY_REPEAT:
+ case SVX_HOR_JUSTIFY_CENTER:
+ aPos.X() += nHorPos;
+ break;
+ case SVX_HOR_JUSTIFY_STANDARD:
+ default:
+ // Standard wird hier nicht behandelt
+ break;
+ }
+ }
+ else
+ {
+ //---------------------
+ // Standardausrichtung:
+ //---------------------
+ if ( ((nIndex%5) == 0) || (nIndex == 4) )
+ {
+ // Text-Label links oder Summe linksbuendig
+ aPos.X() += FRAME_OFFSET;
+ }
+ else
+ {
+ // Zahlen/Datum rechtsbuendig
+ aPos.X() += nRightX;
+ }
+ }
+
+ //-------------------------------
+ aVD.DrawText( aPos, cellString );
+ //-------------------------------
+
+ if ( pCurData->GetIncludeFont() )
+ aVD.SetFont( oldFont );
+ }
+ }
+}
+
+#undef FRAME_OFFSET
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::DrawBackground( USHORT nIndex )
+{
+ if ( pCurData )
+ {
+ USHORT nFmtIndex = aFmtMap[nIndex];
+ Rectangle cellRect = aCellArray[nIndex];
+
+ SvxBrushItem aBrushItem;
+ pCurData->GetBackground( nFmtIndex, aBrushItem );
+
+ BOOL bHadLine = aVD.IsLineColor();
+ Color aOldLine = aVD.GetLineColor();
+ BOOL bHadFill = aVD.IsFillColor();
+ Color aOldFill = aVD.GetFillColor();
+
+ aVD.SetFillColor( aBrushItem.GetColor() );
+ aVD.SetLineColor();
+ //-----------------------
+ aVD.DrawRect( cellRect );
+ //-----------------------
+ if (bHadFill) aVD.SetFillColor(aOldFill); else aVD.SetFillColor();
+ if (bHadLine) aVD.SetLineColor(aOldLine); else aVD.SetLineColor();
+ }
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::PaintCells()
+{
+ if ( pCurData )
+ {
+ USHORT i = 0;
+
+ //---------------
+ // 1. Hintergrund
+ //---------------
+ if ( pCurData->GetIncludeBackground() )
+ {
+ for ( i=0; i<=24; i++ )
+ {
+ DrawBackground( i );
+ }
+ }
+
+ //----------
+ // 2. Rahmen
+ //----------
+ if ( pCurData->GetIncludeFrame() )
+ {
+ for ( i=0; i<=24; i++ )
+ {
+ DrawFrame( i );
+ }
+ }
+
+ //---------
+ // 3. Werte
+ //---------
+ for ( i = 0; i<=24; i++ )
+ {
+ DrawString( i );
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT AutoFmtPreview::Init()
+{
+ SvxBoxItem aEmptyBoxItem;
+ aEmptyBoxItem.SetLine( NULL, BOX_LINE_TOP );
+ aEmptyBoxItem.SetLine( NULL, BOX_LINE_BOTTOM );
+ aEmptyBoxItem.SetLine( NULL, BOX_LINE_LEFT );
+ aEmptyBoxItem.SetLine( NULL, BOX_LINE_RIGHT );
+ aEmptyBoxItem.SetDistance( 0 );
+
+ //------------------------
+ // Linienattribut-Feld mit
+ // Null-BoxItems fuellen
+ //------------------------
+ for ( USHORT i=0; i<=48; i++ )
+ {
+ aLinePtrArray[i] = new SvxBoxItem( aEmptyBoxItem );
+ }
+
+ CalcCellArray( FALSE );
+ CalcLineMap();
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::CalcCellArray( BOOL bFitWidth )
+{
+ // Initialisieren des Zellfeldes (5x5 Zellen).
+ // Rectangles enthalten Position und Groesse einer Zelle.
+ // abhaengig, ob Zellbreite an Format angepasst werden soll (bFitWidth)
+ USHORT nRow;
+ USHORT nDataColWidth = (bFitWidth) ? nDataColWidth2 : nDataColWidth1;
+
+ for ( nRow=0; nRow<=4; nRow++ )
+ {
+ Point topLeftPos ( 2, (nRowHeight * nRow) + 2 );
+ Size rectSize ( 0, nRowHeight );
+ USHORT nCell;
+ USHORT nFirst = nRow*5;
+ USHORT nLast = nFirst+4;
+
+ for ( nCell=nFirst; nCell<=nLast; nCell++ )
+ {
+ //--------------------
+ // Position berechnen:
+ //--------------------
+ if ( nCell == 0 )
+ {
+ // erste Zelle benoetigt keine Sonderbehandlung
+ }
+ else if ( (nCell <= 4) && (nCell != 0) )
+ {
+ // Zelle aus der ersten Zeile
+ topLeftPos = aCellArray[nCell-1].TopRight();
+ }
+ else
+ {
+ topLeftPos = aCellArray[nCell-5].BottomLeft();
+ }
+
+ //-------------------
+ // Groesse berechnen:
+ //-------------------
+ if ( (nCell == nFirst) || (nCell == nLast) )
+ rectSize.Width() = nLabelColWidth;
+ else
+ rectSize.Width() = nDataColWidth;
+
+ aCellArray[nCell] = Rectangle( topLeftPos, rectSize );
+ }
+ }
+ aPrvSize.Width() = aCellArray[24].BottomRight().X() + 3;
+ aPrvSize.Height() = aCellArray[24].BottomRight().Y() + 3;
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::CalcLineMap()
+{
+ //----------------------------------------------------
+ // Initialisieren des Linenattributfeldes (7x7 Zellen)
+ // Ein Eintrag dieses Feldes enthaelt einen Verweis
+ // auf die Linienattribute des zugehoerigen Feldes.
+ // Dieses Feld "umschliesst" das Zellfeld mit einer
+ // Reihe "leerer" Zellen.
+ //----------------------------------------------------
+
+ if ( pCurData )
+ {
+ SvxBoxItem aFrameItem;
+ USHORT nRow;
+
+ for ( nRow=0; nRow<=4; nRow++ )
+ {
+ USHORT nLine;
+ USHORT nCell;
+ USHORT nFirst = (nRow*5);
+ USHORT nLast = nFirst+4;
+
+ for ( nCell=nFirst; nCell<=nLast; nCell++ )
+ {
+ nLine = nCell + 8 + ((nCell/5)*2);
+ pCurData->GetBox( aFmtMap[nCell], aFrameItem );
+ *(aLinePtrArray[nLine]) = aFrameItem;
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::NotifyChange( ScAutoFormatData* pNewData )
+{
+ if ( pNewData != pCurData )
+ {
+ pCurData = pNewData;
+ bFitWidth = pNewData->GetIncludeWidthHeight();
+ CalcCellArray( bFitWidth );
+ CalcLineMap();
+ }
+ else if ( bFitWidth != pNewData->GetIncludeWidthHeight() )
+ {
+ bFitWidth = !bFitWidth;
+ CalcCellArray( bFitWidth );
+ }
+
+ DoPaint( Rectangle( Point(0,0), GetSizePixel() ) );
+}
+
+//------------------------------------------------------------------------
+
+void AutoFmtPreview::DoPaint( const Rectangle& rRect )
+{
+ Bitmap thePreview;
+ Point aCenterPos;
+ Size theWndSize = GetSizePixel();
+ Size thePrevSize;
+ Font aFont;
+
+ aFont = aVD.GetFont();
+ aFont.SetTransparent( TRUE );
+
+ aVD.SetFont( aFont );
+ aVD.SetLineColor();
+ aVD.SetFillColor( Color( COL_WHITE ) );
+ aVD.SetOutputSizePixel( aPrvSize );
+
+ //--------------------------------
+ // Zellen auf virtual Device malen
+ // und Ergebnis sichern
+ //--------------------------------
+ PaintCells();
+ thePreview = aVD.GetBitmap( Point(0,0), aPrvSize );
+
+ //--------------------------------------
+ // Rahmen malen und Vorschau zentrieren:
+ // (virtual Device fuer Fensterausgabe)
+ //--------------------------------------
+ aVD.SetOutputSizePixel( theWndSize );
+ BOOL bHadLine = aVD.IsLineColor();
+ Color aOldLine = aVD.GetLineColor();
+ aVD.SetLineColor( Color( COL_BLACK ) );
+ aVD.DrawRect( Rectangle( Point(0,0), theWndSize ) );
+ if (bHadLine) aVD.SetLineColor(aOldLine); else aVD.SetLineColor();
+ aCenterPos = Point( (theWndSize.Width() - aPrvSize.Width() ) / 2,
+ (theWndSize.Height() - aPrvSize.Height()) / 2 );
+ aVD.DrawBitmap( aCenterPos, thePreview );
+
+ //----------------------------
+ // Ausgabe im Vorschaufenster:
+ //----------------------------
+ DrawBitmap( Point(0,0), aVD.GetBitmap( Point(0,0), theWndSize ) );
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT AutoFmtPreview::Paint( const Rectangle& rRect )
+{
+ DoPaint( rRect );
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/crdlg.cxx b/sc/source/ui/miscdlgs/crdlg.cxx
new file mode 100644
index 000000000000..20cc33e43cdc
--- /dev/null
+++ b/sc/source/ui/miscdlgs/crdlg.cxx
@@ -0,0 +1,120 @@
+/*************************************************************************
+ *
+ * $RCSfile: crdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "crdlg.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+//==================================================================
+
+ScColOrRowDlg::ScColOrRowDlg( Window* pParent,
+ const String& rStrTitle,
+ const String& rStrLabel,
+ BOOL bColDefault )
+
+ : ModalDialog ( pParent, ScResId( RID_SCDLG_COLORROW ) ),
+ //
+ aBtnRows ( this, ScResId( BTN_GROUP_ROWS ) ),
+ aBtnCols ( this, ScResId( BTN_GROUP_COLS ) ),
+ aGbFrame ( this, ScResId( GB_FRAME ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) )
+{
+ SetText( rStrTitle );
+ aGbFrame.SetText( rStrLabel );
+
+ if ( bColDefault )
+ aBtnCols.Check();
+ else
+ aBtnRows.Check();
+
+ aBtnOk.SetClickHdl( LINK( this, ScColOrRowDlg, OkHdl ) );
+
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScColOrRowDlg::~ScColOrRowDlg()
+{
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( ScColOrRowDlg, OkHdl, OKButton *, EMPTYARG )
+{
+ EndDialog( aBtnCols.IsChecked() ? SCRET_COLS : SCRET_ROWS );
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScColOrRowDlg, OkHdl, OKButton *, EMPTYARG )
+
+
+
diff --git a/sc/source/ui/miscdlgs/crnrdlg.cxx b/sc/source/ui/miscdlgs/crnrdlg.cxx
new file mode 100644
index 000000000000..2d6882ff02cd
--- /dev/null
+++ b/sc/source/ui/miscdlgs/crnrdlg.cxx
@@ -0,0 +1,1355 @@
+/*************************************************************************
+ *
+ * $RCSfile: crnrdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes ---------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE -------------------------------------------------------------------
+
+#include "reffact.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+#include "globstr.hrc"
+#include "crnrdlg.hrc"
+#ifndef SC_DOCSHELL_HXX
+#include "docsh.hxx"
+#endif
+
+#define _CRNRDLG_CXX
+#include "crnrdlg.hxx"
+#undef _CRNRDLG_CXX
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+
+//============================================================================
+
+#define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute()
+#define QUERYBOX(m) QueryBox(this,WinBits(WB_YES_NO|WB_DEF_YES),m).Execute()
+
+const ULONG nEntryDataCol = 0;
+const ULONG nEntryDataRow = 1;
+const ULONG nEntryDataDelim = 2;
+
+SEG_EOFGLOBALS()
+
+
+//============================================================================
+// class ScColRowNameRangesDlg
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_01)
+
+
+/*************************************************************************
+#* Member: ScColRowNameRangesDlg Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Konstruktor der Klasse ScColRowNameRangesDlg.
+#* Initialisieren der Klassen- Mitglieder,
+#* Uebernahme der Range- Angaben und Aufruf
+#* der eigentlichen Initialisierungsroutine
+#*
+#* Input: Sfx- Verknuepfungen
+#* Parent- Window
+#* SCViewData
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+ScColRowNameRangesDlg::ScColRowNameRangesDlg( SfxBindings* pB,
+ SfxChildWindow* pCW,
+ Window* pParent,
+ ScViewData* ptrViewData )
+
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_COLROWNAMERANGES ),
+ //
+ aLbRange ( this, ScResId( LB_RANGE ) ),
+
+ aGbAssign ( this, ScResId( GB_ASSIGN ) ),
+ aEdAssign ( this, ScResId( ED_AREA ) ),
+ aRbAssign ( this, ScResId( RB_AREA ), &aEdAssign ),
+ aBtnColHead ( this, ScResId( BTN_COLHEAD ) ),
+ aBtnRowHead ( this, ScResId( BTN_ROWHEAD ) ),
+ aFtAssign2 ( this, ScResId( FT_DATA_LABEL ) ),
+ aEdAssign2 ( this, ScResId( ED_DATA ) ),
+ aRbAssign2 ( this, ScResId( RB_DATA ), &aEdAssign2 ),
+
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnAdd ( this, ScResId( BTN_ADD ) ),
+ aBtnRemove ( this, ScResId( BTN_REMOVE ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+
+ pViewData ( ptrViewData ),
+ pDoc ( ptrViewData->GetDocument() ),
+
+ pEdActive ( NULL ),
+ bDlgLostFocus ( FALSE )
+{
+ xColNameRanges = pDoc->GetColNameRanges()->Clone();
+ xRowNameRanges = pDoc->GetRowNameRanges()->Clone();
+ Init();
+ FreeResource();
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_02)
+
+/*************************************************************************
+#* Member: ~ScColRowNameRangesDlg Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Destruktor der Klasse
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+__EXPORT ScColRowNameRangesDlg::~ScColRowNameRangesDlg()
+{
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_03)
+
+/*************************************************************************
+#* Member: Init Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Initialisierungs- Routine:
+#* Umlenken der Event- Handler und einstellen der
+#* Startparameter.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScColRowNameRangesDlg::Init()
+{
+ USHORT nStartCol = 0;
+ USHORT nStartRow = 0;
+ USHORT nStartTab = 0;
+ USHORT nEndCol = 0;
+ USHORT nEndRow = 0;
+ USHORT nEndTab = 0;
+
+ aBtnOk.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, OkBtnHdl ) );
+ aBtnCancel.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, CancelBtnHdl ) );
+ aBtnAdd.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, AddBtnHdl ) );
+ aBtnRemove.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, RemoveBtnHdl ) );
+ aLbRange.SetSelectHdl ( LINK( this, ScColRowNameRangesDlg, Range1SelectHdl ) );
+ aEdAssign.SetModifyHdl ( LINK( this, ScColRowNameRangesDlg, Range1DataModifyHdl ) );
+ aBtnColHead.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, ColClickHdl ) );
+ aBtnRowHead.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, RowClickHdl ) );
+ aEdAssign2.SetModifyHdl ( LINK( this, ScColRowNameRangesDlg, Range2DataModifyHdl ) );
+
+ aEdAssign.SetGetFocusHdl ( LINK( this, ScColRowNameRangesDlg, EdGetFocusHdl ) );
+ aEdAssign2.SetGetFocusHdl ( LINK( this, ScColRowNameRangesDlg, EdGetFocusHdl ) );
+ aEdAssign.SetLoseFocusHdl ( LINK( this, ScColRowNameRangesDlg, EdLoseFocusHdl ) );
+ aEdAssign2.SetLoseFocusHdl ( LINK( this, ScColRowNameRangesDlg, EdLoseFocusHdl ) );
+
+ pEdActive = &aEdAssign;
+
+ UpdateNames();
+
+ if ( pViewData && pDoc )
+ {
+ pViewData->GetSimpleArea( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab );
+ SetColRowData( ScRange( ScAddress( nStartCol, nStartRow, nStartTab ),
+ ScAddress( nEndCol, nEndRow, nEndTab ) ) );
+ }
+ else
+ {
+ aBtnColHead.Check( TRUE );
+ aBtnRowHead.Check( FALSE );
+ aEdAssign.SetText( EMPTY_STRING );
+ aEdAssign2.SetText( EMPTY_STRING );
+ }
+
+ aBtnColHead.Enable();
+ aBtnRowHead.Enable();
+ aEdAssign.Enable();
+ aEdAssign.GrabFocus();
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable(); // Ref-Feld hat Focus
+
+ Range1SelectHdl( 0 );
+}
+
+
+#pragma SEG_FUNCDEF(crnrdlg_16)
+
+/*************************************************************************
+#* Member: SetColRowData Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: zugehoerigen Datenbereich eines Beschriftungsbereiches
+#* auf default Werte setzen und beide Referenz-Edit-Felder
+#* fuellen.
+#*
+#* Input: Einstellbereich fuer Labels
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScColRowNameRangesDlg::SetColRowData( const ScRange& rLabelRange,BOOL bRef)
+{
+ theCurData = theCurArea = rLabelRange;
+ BOOL bValid = TRUE;
+ USHORT nCol1 = theCurArea.aStart.Col();
+ USHORT nCol2 = theCurArea.aEnd.Col();
+ USHORT nRow1 = theCurArea.aStart.Row();
+ USHORT nRow2 = theCurArea.aEnd.Row();
+ if ( (nCol2 - nCol1 >= nRow2 - nRow1) || (nCol1 == 0 && nCol2 == MAXCOL) )
+ { // Spaltenkoepfe und Grenzfall gesamte Tabelle
+ aBtnColHead.Check( TRUE );
+ aBtnRowHead.Check( FALSE );
+ if ( nRow2 == MAXROW )
+ {
+ if ( nRow1 == 0 )
+ bValid = FALSE; // Grenzfall gesamte Tabelle
+ else
+ { // Head unten, Data oben
+ theCurData.aStart.SetRow( 0 );
+ theCurData.aEnd.SetRow( nRow1 - 1 );
+ }
+ }
+ else
+ { // Head oben, Data unten
+ theCurData.aStart.SetRow( nRow2 + 1 );
+ theCurData.aEnd.SetRow( MAXROW );
+ }
+ }
+ else
+ { // Zeilenkoepfe
+ aBtnRowHead.Check( TRUE );
+ aBtnColHead.Check( FALSE );
+ if ( nCol2 == MAXCOL )
+ { // Head rechts, Data links
+ theCurData.aStart.SetCol( 0 );
+ theCurData.aEnd.SetCol( nCol2 - 1 );
+ }
+ else
+ { // Head links, Data rechts
+ theCurData.aStart.SetCol( nCol2 + 1 );
+ theCurData.aEnd.SetCol( MAXCOL );
+ }
+ }
+ if ( bValid )
+ {
+ String aStr;
+ theCurArea.Format( aStr, SCR_ABS_3D, pDoc );
+
+ if(bRef)
+ aEdAssign.SetRefString( aStr );
+ else
+ aEdAssign.SetText( aStr );
+
+ aEdAssign.SetSelection( Selection( SELECTION_MAX, SELECTION_MAX ) );
+ theCurData.Format( aStr, SCR_ABS_3D, pDoc );
+
+ if(bRef)
+ aEdAssign2.SetRefString( aStr );
+ else
+ aEdAssign2.SetText( aStr );
+ }
+ else
+ {
+ theCurData = theCurArea = ScRange();
+
+ if(bRef)
+ {
+ aEdAssign.SetRefString( EMPTY_STRING );
+ aEdAssign2.SetRefString( EMPTY_STRING );
+ }
+ else
+ {
+ aEdAssign.SetText( EMPTY_STRING );
+ aEdAssign2.SetText( EMPTY_STRING );
+ }
+
+ aBtnColHead.Disable();
+ aBtnRowHead.Disable();
+ aEdAssign2.Disable();
+ }
+}
+
+
+#pragma SEG_FUNCDEF(crnrdlg_17)
+
+/*************************************************************************
+#* Member: AdjustColRowData Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: zugehoerigen Datenbereich eines Beschriftungsbereiches
+#* anpassen und Data-Referenz-Edit-Feld fuellen.
+#*
+#* Input: Bereich fuer Labels
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScColRowNameRangesDlg::AdjustColRowData( const ScRange& rDataRange,BOOL bRef)
+{
+ theCurData = rDataRange;
+ if ( aBtnColHead.IsChecked() )
+ { // Datenbereich gleiche Spalten wie Koepfe
+ theCurData.aStart.SetCol( theCurArea.aStart.Col() );
+ theCurData.aEnd.SetCol( theCurArea.aEnd.Col() );
+ if ( theCurData.Intersects( theCurArea ) )
+ {
+ USHORT nRow1 = theCurArea.aStart.Row();
+ USHORT nRow2 = theCurArea.aEnd.Row();
+ if ( nRow1 > 0
+ && (theCurData.aEnd.Row() < nRow2 || nRow2 == MAXROW) )
+ { // Data oben
+ theCurData.aEnd.SetRow( nRow1 - 1 );
+ if ( theCurData.aStart.Row() > theCurData.aEnd.Row() )
+ theCurData.aStart.SetRow( theCurData.aEnd.Row() );
+ }
+ else
+ { // Data unten
+ theCurData.aStart.SetRow( nRow2 + 1 );
+ if ( theCurData.aStart.Row() > theCurData.aEnd.Row() )
+ theCurData.aEnd.SetRow( theCurData.aStart.Row() );
+ }
+ }
+ }
+ else
+ { // Datenbereich gleiche Zeilen wie Koepfe
+ theCurData.aStart.SetRow( theCurArea.aStart.Row() );
+ theCurData.aEnd.SetRow( theCurArea.aEnd.Row() );
+ if ( theCurData.Intersects( theCurArea ) )
+ {
+ USHORT nCol1 = theCurArea.aStart.Col();
+ USHORT nCol2 = theCurArea.aEnd.Col();
+ if ( nCol1 > 0
+ && (theCurData.aEnd.Col() < nCol2 || nCol2 == MAXCOL) )
+ { // Data links
+ theCurData.aEnd.SetCol( nCol1 - 1 );
+ if ( theCurData.aStart.Col() > theCurData.aEnd.Col() )
+ theCurData.aStart.SetCol( theCurData.aEnd.Col() );
+ }
+ else
+ { // Data rechts
+ theCurData.aStart.SetCol( nCol2 + 1 );
+ if ( theCurData.aStart.Col() > theCurData.aEnd.Col() )
+ theCurData.aEnd.SetCol( theCurData.aStart.Col() );
+ }
+ }
+ }
+ String aStr;
+ theCurData.Format( aStr, SCR_ABS_3D, pDoc );
+
+ if(bRef)
+ aEdAssign2.SetRefString( aStr );
+ else
+ aEdAssign2.SetText( aStr );
+
+ aEdAssign2.SetSelection( Selection( SELECTION_MAX, SELECTION_MAX ) );
+}
+
+
+#pragma SEG_FUNCDEF(crnrdlg_04)
+
+/*************************************************************************
+#* Member: SetReference Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Uebergabe eines mit der Maus selektierten Tabellen-
+#* bereiches, der dann als neue Selektion im Referenz-
+#* Fenster angezeigt wird.
+#*
+#* Input: Bereich fuer Labels
+#* Dokumentklasse
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScColRowNameRangesDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( pEdActive )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart( pEdActive );
+
+ String aRefStr;
+ if ( pEdActive == &aEdAssign )
+ SetColRowData( rRef, TRUE );
+ else
+ AdjustColRowData( rRef, TRUE );
+ aBtnColHead.Enable();
+ aBtnRowHead.Enable();
+ aBtnAdd.Enable();
+ aBtnRemove.Disable();
+ }
+}
+
+
+//----------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_05)
+
+/*************************************************************************
+#* Member: Close Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Schliessen des Fensters
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+BOOL __EXPORT ScColRowNameRangesDlg::Close()
+{
+ return DoClose( ScColRowNameRangesDlgWrapper::GetChildWindowId() );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_06)
+
+/*************************************************************************
+#* Member: SetActive Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Aktivieren des Fensters
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScColRowNameRangesDlg::SetActive()
+{
+ if ( bDlgLostFocus )
+ {
+ bDlgLostFocus = FALSE;
+ pEdActive->GrabFocus();
+ }
+ else
+ GrabFocus();
+ if ( pEdActive == &aEdAssign )
+ Range1DataModifyHdl( 0 );
+ else
+ Range2DataModifyHdl( 0 );
+ RefInputDone();
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_07)
+
+/*************************************************************************
+#* Member: UpdateNames Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Aktualisieren der Namen
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScColRowNameRangesDlg::UpdateNames()
+{
+ aLbRange.SetUpdateMode( FALSE );
+ //-----------------------------------------------------------
+ aLbRange.Clear();
+ aEdAssign.SetText( EMPTY_STRING );
+
+ ULONG nCount, j;
+ USHORT nPos, i, q; //@008 Hilfsvariable q eingefuegt
+
+ USHORT nCol1; //@008 04.09.97
+ USHORT nRow1; //Erweiterung fuer Bereichsnamen
+ USHORT nTab1;
+ USHORT nCol2;
+ USHORT nRow2;
+ USHORT nTab2;
+ String rString;
+ String strShow;
+
+ String aString;
+ String strDelim = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( " --- " ));
+ aString = strDelim;
+ aString += ScGlobal::GetRscString( STR_COLUMN );
+ aString += strDelim;
+ nPos = aLbRange.InsertEntry( aString );
+ aLbRange.SetEntryData( nPos, (void*)nEntryDataDelim );
+ if ( (nCount = xColNameRanges->Count()) > 0 )
+ {
+ ScRangePair** ppSortArray = xColNameRanges->CreateNameSortedArray(
+ nCount, pDoc );
+ for ( j=0; j < nCount; j++ )
+ {
+ ppSortArray[j]->GetRange(0).Format( aString, SCR_ABS_3D, pDoc );
+
+ //@008 Hole Bereichsparameter aus Dok
+ ppSortArray[j]->GetRange(0).GetVars( nCol1, nRow1, nTab1,
+ nCol2, nRow2, nTab2 );
+ q=nCol1+3;
+ if(q>nCol2) q=nCol2;
+ //@008 Baue String zusammen
+ strShow.AssignAscii(RTL_CONSTASCII_STRINGPARAM(" ["));
+ if(pDoc!=NULL)
+ {
+ pDoc->GetString(nCol1, nRow1, nTab1,rString);
+ strShow +=rString;
+ for(i=nCol1+1;i<=q;i++)
+ {
+ strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
+ pDoc->GetString(i, nRow1, nTab1,rString);
+ strShow += rString;
+ }
+ }
+ if(q<nCol2) // Zu lang? Ergaenzen um ",..."
+ {
+ strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ..."));
+ }
+ strShow += ']';
+
+ //@008 String einfuegen in Listbox
+ String aInsStr = aString;
+ aInsStr += strShow;
+ nPos = aLbRange.InsertEntry( aInsStr );
+ aLbRange.SetEntryData( nPos, (void*)nEntryDataCol );
+ }
+ delete [] ppSortArray;
+ }
+ aString = strDelim;
+ aString += ScGlobal::GetRscString( STR_ROW );
+ aString += strDelim;
+ nPos = aLbRange.InsertEntry( aString );
+ aLbRange.SetEntryData( nPos, (void*)nEntryDataDelim );
+ if ( (nCount = xRowNameRanges->Count()) > 0 )
+ {
+ ScRangePair** ppSortArray = xRowNameRanges->CreateNameSortedArray(
+ nCount, pDoc );
+ for ( j=0; j < nCount; j++ )
+ {
+ ppSortArray[j]->GetRange(0).Format( aString, SCR_ABS_3D, pDoc );
+
+ //@008 Ab hier baue String fuer Zeilen
+ ppSortArray[j]->GetRange(0).GetVars( nCol1, nRow1, nTab1,
+ nCol2, nRow2, nTab2 );
+ q=nRow1+3;
+ if(q>nRow2) q=nRow2;
+ strShow.AssignAscii(RTL_CONSTASCII_STRINGPARAM(" ["));
+ if(pDoc!=NULL)
+ {
+ pDoc->GetString(nCol1, nRow1, nTab1,rString);
+ strShow += rString;
+ for(i=nRow1+1;i<=q;i++)
+ {
+ strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", "));
+ pDoc->GetString(nCol1, i, nTab1,rString);
+ strShow += rString;
+ }
+ }
+ if(q<nRow2)
+ {
+ strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ..."));
+ }
+ strShow += ']';
+
+ String aInsStr = aString;
+ aInsStr += strShow;
+ nPos = aLbRange.InsertEntry( aInsStr );
+ aLbRange.SetEntryData( nPos, (void*)nEntryDataRow );
+ }
+ delete [] ppSortArray;
+ }
+ //-----------------------------------------------------------
+ aLbRange.SetUpdateMode( TRUE );
+ aLbRange.Invalidate();
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_0e)
+
+/*************************************************************************
+#* Member: UpdateRangeData Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Aktualisieren der Bereichsdaten
+#*
+#* Input: Bereichs-String
+#* Flag fuer Spalten
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+void ScColRowNameRangesDlg::UpdateRangeData( const String& rRangeStr, BOOL bColName )
+{
+ ScRange aRange;
+ String aRefString=rRangeStr;
+
+ //@008 Suchen nach Erweiterung u. rausschmeissen
+ xub_StrLen nPosExt=rRangeStr.Search( '[',0 );
+
+ if(nPosExt!=STRING_NOTFOUND)
+ {
+ nPosExt--;
+ aRefString.Erase(nPosExt);
+ }
+ aRange.ParseAny( aRefString, pDoc );
+
+ ScRangePair* pPair;
+ BOOL bFound = FALSE;
+ if ( bColName && (pPair = xColNameRanges->Find( aRange )) )
+ bFound = TRUE;
+ else if ( !bColName && (pPair = xRowNameRanges->Find( aRange )) )
+ bFound = TRUE;
+
+ if ( bFound )
+ {
+ String aStr;
+ theCurArea = aRange;
+ theCurArea.Format( aStr, SCR_ABS_3D, pDoc );
+ aEdAssign.SetText( aStr );
+ aBtnAdd.Disable();
+ aBtnRemove.Enable();
+ aBtnColHead.Check( bColName );
+ aBtnRowHead.Check( !bColName );
+ theCurData = pPair->GetRange(1);
+ theCurData.Format( aStr, SCR_ABS_3D, pDoc );
+ aEdAssign2.SetText( aStr );
+ }
+ else
+ {
+ aBtnAdd.Enable();
+ aBtnRemove.Disable();
+ }
+ aBtnColHead.Enable();
+ aBtnRowHead.Enable();
+ aEdAssign2.Enable();
+}
+
+//------------------------------------------------------------------------
+
+#pragma SEG_FUNCDEF(crnrdlg_12)
+
+/*************************************************************************
+#* Member: IsRefInputMode Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Abfragefunktion fuer Referenz- Input- Mode.
+#*
+#* Input: Bereichs-String
+#* Flag fuer Spalten
+#*
+#* Output: true, wenn Referenz- Input- Mode
+#*
+#************************************************************************/
+
+BOOL ScColRowNameRangesDlg::IsRefInputMode() const
+{
+ return (pEdActive != NULL);
+}
+
+//------------------------------------------------------------------------
+// Handler:
+// ========
+#pragma SEG_FUNCDEF(crnrdlg_08)
+
+/*************************************************************************
+#* Handler: OkBtnHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Wird ausgeloest, wenn der OK- Button gedrückt wurde.
+#* Hinzufuegen- Button ausloesen, und die neu einge-
+#* stellten Bereiche ans Dokument uebergeben.
+#* Fensterschliessen- Anweisung ausloesen.
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScColRowNameRangesDlg, OkBtnHdl, void *, EMPTYARG )
+{
+ AddBtnHdl( 0 );
+
+ // die RangeLists den Refs am Doc zuweisen
+ pDoc->GetColNameRangesRef() = xColNameRanges;
+ pDoc->GetRowNameRangesRef() = xRowNameRanges;
+ // geaenderte Datenbereiche muessen sich auswirken
+ pDoc->CompileColRowNameFormula();
+ ScDocShell* pDocShell = pViewData->GetDocShell();
+ pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID );
+ pDocShell->SetDocumentModified();
+
+ Close();
+ return 0;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_0d)
+
+/*************************************************************************
+#* Handler: CancelBtnHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Fensterschliessen- Anweisung ausloesen.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK_INLINE_START( ScColRowNameRangesDlg, CancelBtnHdl, void *, EMPTYARG )
+{
+ Close();
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScColRowNameRangesDlg, CancelBtnHdl, void *, EMPTYARG )
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_09)
+
+/*************************************************************************
+#* Handler: AddBtnHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Nach betaetigen des Hinzufuegen- Buttons, werden
+#* die Bereichsangaben eingestellt und in der
+#* Listbox dargestellt.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScColRowNameRangesDlg, AddBtnHdl, void *, EMPTYARG )
+{
+ String aNewArea( aEdAssign.GetText() );
+ String aNewData( aEdAssign2.GetText() );
+
+ if ( aNewArea.Len() > 0 && aNewData.Len() > 0 )
+ {
+ ScRange aRange1, aRange2;
+ BOOL bOk1;
+ if ( (bOk1 = ((aRange1.ParseAny( aNewArea, pDoc ) & SCA_VALID) == SCA_VALID))
+ && ((aRange2.ParseAny( aNewData, pDoc ) & SCA_VALID) == SCA_VALID) )
+ {
+ theCurArea = aRange1;
+ AdjustColRowData( aRange2 );
+ ScRangePair* pPair;
+ if ( pPair = xColNameRanges->Find( theCurArea ) )
+ {
+ xColNameRanges->Remove( pPair );
+ delete pPair;
+ }
+ if ( pPair = xRowNameRanges->Find( theCurArea ) )
+ {
+ xRowNameRanges->Remove( pPair );
+ delete pPair;
+ }
+ if ( aBtnColHead.IsChecked() )
+ xColNameRanges->Join( ScRangePair( theCurArea, theCurData ) );
+ else
+ xRowNameRanges->Join( ScRangePair( theCurArea, theCurData ) );
+
+ UpdateNames();
+
+ aEdAssign.GrabFocus();
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ aEdAssign.SetText( EMPTY_STRING );
+ aBtnColHead.Check( TRUE );
+ aBtnRowHead.Check( FALSE );
+ aEdAssign2.SetText( EMPTY_STRING );
+ theCurArea = ScRange();
+ theCurData = theCurArea;
+ Range1SelectHdl( 0 );
+ }
+ else
+ {
+ ERRORBOX( ScGlobal::GetRscString(STR_INVALIDTABNAME) );
+ if ( !bOk1 )
+ aEdAssign.GrabFocus();
+ else
+ aEdAssign2.GrabFocus();
+ }
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_0a)
+
+/*************************************************************************
+#* Handler: RemoveBtnHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Nach betaetigen des Loeschen- Buttons, wird
+#* die markierte Bereichsangabe geloescht.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScColRowNameRangesDlg, RemoveBtnHdl, void *, EMPTYARG )
+{
+ String aRangeStr = aLbRange.GetSelectEntry();
+ USHORT nSelectPos = aLbRange.GetSelectEntryPos();
+ BOOL bColName =
+ ((ULONG)aLbRange.GetEntryData( nSelectPos ) == nEntryDataCol);
+ ScRange aRange;
+
+ //@008 Suchen nach Erweiterung u. rausschmeissen
+ String aRefString=aRangeStr;
+
+ xub_StrLen nPosExt=aRangeStr.Search( '[', 0 );
+
+ if(nPosExt!=STRING_NOTFOUND)
+ {
+ nPosExt--;
+ aRefString.Erase(nPosExt);
+ }
+
+ aRange.ParseAny( aRefString, pDoc );
+
+ ScRangePair* pPair;
+ BOOL bFound = FALSE;
+ if ( bColName && (pPair = xColNameRanges->Find( aRange )) )
+ bFound = TRUE;
+ else if ( !bColName && (pPair = xRowNameRanges->Find( aRange )) )
+ bFound = TRUE;
+ if ( bFound )
+ {
+ String aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY );
+ String aMsg = aStrDelMsg.GetToken( 0, '#' );
+
+ aMsg += aRangeStr;
+ aMsg += aStrDelMsg.GetToken( 1, '#' );
+
+ if ( RET_YES == QUERYBOX(aMsg) )
+ {
+ if ( bColName )
+ xColNameRanges->Remove( pPair );
+ else
+ xRowNameRanges->Remove( pPair );
+ delete pPair;
+
+ UpdateNames();
+ USHORT nCnt = aLbRange.GetEntryCount();
+ if ( nSelectPos >= nCnt )
+ {
+ if ( nCnt )
+ nSelectPos = nCnt - 1;
+ else
+ nSelectPos = 0;
+ }
+ aLbRange.SelectEntryPos( nSelectPos );
+ if ( nSelectPos &&
+ (ULONG)aLbRange.GetEntryData( nSelectPos ) == nEntryDataDelim )
+ aLbRange.SelectEntryPos( --nSelectPos ); // ---Zeile---
+
+ aLbRange.GrabFocus();
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ aEdAssign.SetText( EMPTY_STRING );
+ theCurArea = theCurData = ScRange();
+ aBtnColHead.Check( TRUE );
+ aBtnRowHead.Check( FALSE );
+ aEdAssign2.SetText( EMPTY_STRING );
+ Range1SelectHdl( 0 );
+ }
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(crnrdlg_0c)
+
+/*************************************************************************
+#* Handler: Range1SelectHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Wenn Zeile in Listbox ausgewaehlt wird,
+#* werden die Eingabefelder entsprechend
+#* eingestellt.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScColRowNameRangesDlg, Range1SelectHdl, void *, EMPTYARG )
+{
+ USHORT nSelectPos = aLbRange.GetSelectEntryPos();
+ USHORT nCnt = aLbRange.GetEntryCount();
+ USHORT nMoves = 0;
+ while ( nSelectPos < nCnt
+ && (ULONG)aLbRange.GetEntryData( nSelectPos ) == nEntryDataDelim )
+ { // skip Delimiter
+ ++nMoves;
+ aLbRange.SelectEntryPos( ++nSelectPos );
+ }
+ String aRangeStr = aLbRange.GetSelectEntry();
+ if ( nMoves )
+ {
+ if ( nSelectPos > 1 && nSelectPos >= nCnt )
+ { // am Ende nicht auf dem " --- Zeile --- " Delimiter stehenbleiben
+ // wenn davor Eintraege existieren
+ nSelectPos = nCnt - 2;
+ aLbRange.SelectEntryPos( nSelectPos );
+ aRangeStr = aLbRange.GetSelectEntry();
+ }
+ else if ( nSelectPos > 2 && nSelectPos < nCnt && aRangeStr.Len()
+ && aRangeStr == aEdAssign.GetText() )
+ { // nach oben wandern statt nach unten auf die vorherige Position
+ nSelectPos -= 2;
+ aLbRange.SelectEntryPos( nSelectPos );
+ aRangeStr = aLbRange.GetSelectEntry();
+ }
+ }
+ if ( aRangeStr.Len() && aRangeStr.GetChar(0) == '$' )
+ {
+ BOOL bColName =
+ ((ULONG)aLbRange.GetEntryData( nSelectPos ) == nEntryDataCol);
+ UpdateRangeData( aRangeStr, bColName );
+ aBtnAdd.Disable();
+ aBtnRemove.Enable();
+ }
+ else
+ {
+ if ( aEdAssign.GetText().Len() > 0 )
+ {
+ if ( aEdAssign2.GetText().Len() > 0 )
+ aBtnAdd.Enable();
+ else
+ aBtnAdd.Disable();
+ aBtnColHead.Enable();
+ aBtnRowHead.Enable();
+ aEdAssign2.Enable();
+ }
+ else
+ {
+ aBtnAdd.Disable();
+ aBtnColHead.Disable();
+ aBtnRowHead.Disable();
+ aEdAssign2.Disable();
+ }
+ aBtnRemove.Disable();
+ aEdAssign.GrabFocus();
+ }
+
+ aGbAssign.Enable();
+ aEdAssign.Enable();
+ aRbAssign.Enable();
+
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+ return 0;
+}
+
+
+#pragma SEG_FUNCDEF(crnrdlg_13)
+
+/*************************************************************************
+#* Handler: Range1DataModifyHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Wird ausgeloest, wenn in der Tabelle, der Label-
+#* Bereich geaendert wurde.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScColRowNameRangesDlg, Range1DataModifyHdl, void *, EMPTYARG )
+{
+ String aNewArea( aEdAssign.GetText() );
+ BOOL bValid = FALSE;
+ if ( aNewArea.Len() > 0 )
+ {
+ ScRange aRange;
+ if ( (aRange.ParseAny( aNewArea, pDoc ) & SCA_VALID) == SCA_VALID )
+ {
+ SetColRowData( aRange );
+ bValid = TRUE;
+ }
+ }
+ if ( bValid )
+ {
+ aBtnAdd.Enable();
+ aBtnColHead.Enable();
+ aBtnRowHead.Enable();
+ aEdAssign2.Enable();
+ }
+ else
+ {
+ aBtnAdd.Disable();
+ aBtnColHead.Disable();
+ aBtnRowHead.Disable();
+ aEdAssign2.Disable();
+ }
+ aBtnRemove.Disable();
+ return 0;
+}
+
+
+#pragma SEG_FUNCDEF(crnrdlg_18)
+
+/*************************************************************************
+#* Handler: Range2DataModifyHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Wird ausgeloest, wenn in der Tabelle, der Daten-
+#* Bereich geaendert wurde
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScColRowNameRangesDlg, Range2DataModifyHdl, void *, EMPTYARG )
+{
+ String aNewData( aEdAssign2.GetText() );
+ if ( aNewData.Len() > 0 )
+ {
+ ScRange aRange;
+ if ( (aRange.ParseAny( aNewData, pDoc ) & SCA_VALID) == SCA_VALID )
+ {
+ AdjustColRowData( aRange );
+ aBtnAdd.Enable();
+ }
+ else
+ aBtnAdd.Disable();
+ }
+ else
+ {
+ aBtnAdd.Disable();
+ }
+ return 0;
+}
+
+
+#pragma SEG_FUNCDEF(crnrdlg_14)
+
+/*************************************************************************
+#* Handler: ColClickHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Radiobutton fuer Spalten wurde betaetigt,
+#* die entsprechenden Einstellungen werden
+#* vorgenommen
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScColRowNameRangesDlg, ColClickHdl, void *, EMPTYARG )
+{
+ if ( !aBtnColHead.GetSavedValue() )
+ {
+ aBtnColHead.Check( TRUE );
+ aBtnRowHead.Check( FALSE );
+ if ( theCurArea.aStart.Row() == 0 && theCurArea.aEnd.Row() == MAXROW )
+ {
+ theCurArea.aEnd.SetRow( MAXROW - 1 );
+ String aStr;
+ theCurArea.Format( aStr, SCR_ABS_3D, pDoc );
+ aEdAssign.SetText( aStr );
+ }
+ ScRange aRange( theCurData );
+ aRange.aStart.SetRow((USHORT) Min( (long)(theCurArea.aEnd.Row() + 1), (long)MAXROW ) );
+ aRange.aEnd.SetRow( MAXROW );
+ AdjustColRowData( aRange );
+ }
+ return 0;
+}
+
+
+#pragma SEG_FUNCDEF(crnrdlg_15)
+
+/*************************************************************************
+#* Handler: RowClickHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Radiobutton fuer Zeilen wurde betaetigt,
+#* die entsprechenden Einstellungen werden
+#* vorgenommen
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScColRowNameRangesDlg, RowClickHdl, void *, EMPTYARG )
+{
+ if ( !aBtnRowHead.GetSavedValue() )
+ {
+ aBtnRowHead.Check( TRUE );
+ aBtnColHead.Check( FALSE );
+ if ( theCurArea.aStart.Col() == 0 && theCurArea.aEnd.Col() == MAXCOL )
+ {
+ theCurArea.aEnd.SetCol( MAXCOL - 1 );
+ String aStr;
+ theCurArea.Format( aStr, SCR_ABS_3D, pDoc );
+ aEdAssign.SetText( aStr );
+ }
+ ScRange aRange( theCurData );
+ aRange.aStart.SetCol( (USHORT) Min( (long)(theCurArea.aEnd.Col() + 1), (long)MAXCOL ) );
+ aRange.aEnd.SetCol( MAXCOL );
+ AdjustColRowData( aRange );
+ }
+ return 0;
+}
+
+
+#pragma SEG_FUNCDEF(crnrdlg_19)
+
+/*************************************************************************
+#* Handler: EdGetFocusHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Wird ausgeloest, wenn das Fenster einen Focus
+#* erhaelt.
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScColRowNameRangesDlg, EdGetFocusHdl, ScRefEdit*, pEd )
+{
+ pEdActive = pEd;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+ pEd->SetSelection( Selection(0,SELECTION_MAX) );
+ return 0;
+}
+
+
+#pragma SEG_FUNCDEF(crnrdlg_1a)
+
+/*************************************************************************
+#* Handler: EdLoseFocusHdl Datum:04.09.97
+#*------------------------------------------------------------------------
+#*
+#* Klasse: ScColRowNameRangesDlg
+#*
+#* Funktion: Wird ausgeloest, wenn das Fenster seinen Focus
+#* verliert.
+#*
+#* Input: ---
+#*
+#* Output: ---
+#*
+#************************************************************************/
+
+IMPL_LINK( ScColRowNameRangesDlg, EdLoseFocusHdl, ScRefEdit*, pEd )
+{
+ bDlgLostFocus = !IsActive();
+ return 0;
+}
+
+
+/*----------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.19 2000/09/17 14:09:14 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.18 2000/08/31 16:38:36 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.17 2000/07/19 18:21:38 er
+ i18n: replaced International with CharClass isAlpha, isNumeric, isAlphaNumeric, toUpper, toLower et al.
+
+ Revision 1.16 2000/04/17 15:33:25 nn
+ unicode changes
+
+ Revision 1.15 1999/06/09 16:11:28 NN
+ Sfx-appwin removed
+
+
+ Rev 1.14 09 Jun 1999 18:11:28 NN
+ Sfx-appwin removed
+
+ Rev 1.13 10 Dec 1998 20:53:26 ANK
+ #51738# Umstellung auf ScRefEdit zum Anzeigen von Referenzen
+
+ Rev 1.12 12 Aug 1998 19:52:12 ANK
+ #54702# IsRefInputMode ueberarbeitet
+
+ Rev 1.11 06 Aug 1998 21:16:26 ANK
+ #54702# Enablen/Disablen der Applikation nur noch in ScAnyRefDlg
+
+ Rev 1.10 18 Feb 1998 14:16:54 RG
+ ->DOS-Format
+
+ Rev 1.9 30 Sep 1997 13:45:00 TJ
+ include
+
+ Rev 1.8 05 Sep 1997 12:19:18 ANK
+ Erweiterung auf Feldtexte
+
+ Rev 1.7 03 Sep 1997 16:04:52 RG
+ change header
+
+ Rev 1.6 13 Jun 1997 12:08:22 ER
+ Range1SelectHdl: nicht auf letztem Delimiter stehenbleiben
+
+ Rev 1.5 12 Jun 1997 17:13:50 ER
+ #36216# Beschriftungsbereiche sortiert anzeigen
+
+ Rev 1.4 16 May 1997 15:02:28 MH
+ aufraeumen - hjs
+
+ Rev 1.3 12 Feb 1997 18:14:52 ER
+ #35808# CompileColRowNameFormula nach Beschriftungsbereiche-Dialog-OK
+
+ Rev 1.2 04 Feb 1997 14:09:40 ER
+ chg: ColRowNameRanges mit ScRangePair
+
+ Rev 1.1 18 Nov 1996 19:42:56 ER
+ Init: bei Eingangsselektin evtl. RowHead Button anknipsen
+
+ Rev 1.0 18 Nov 1996 19:09:04 ER
+ new: ScColRowNameRangesDlg
+
+----------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/miscdlgs/delcldlg.cxx b/sc/source/ui/miscdlgs/delcldlg.cxx
new file mode 100644
index 000000000000..6f561c6f96af
--- /dev/null
+++ b/sc/source/ui/miscdlgs/delcldlg.cxx
@@ -0,0 +1,153 @@
+/*************************************************************************
+ *
+ * $RCSfile: delcldlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "delcldlg.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+static BYTE nDelItemChecked=0;
+
+//==================================================================
+
+ScDeleteCellDlg::ScDeleteCellDlg( Window* pParent, BOOL bDisallowCellMove ) :
+ ModalDialog ( pParent, ScResId( RID_SCDLG_DELCELL ) ),
+ //
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnCellsUp ( this, ScResId( BTN_CELLSUP ) ),
+ aBtnCellsLeft ( this, ScResId( BTN_CELLSLEFT ) ),
+ aBtnDelRows ( this, ScResId( BTN_DELROWS ) ),
+ aBtnDelCols ( this, ScResId( BTN_DELCOLS ) ),
+ aGbFrame ( this, ScResId( GB_FRAME ) )
+{
+
+ if (bDisallowCellMove)
+ {
+ aBtnCellsUp.Disable();
+ aBtnCellsLeft.Disable();
+
+ switch(nDelItemChecked)
+ {
+ case 2: aBtnDelRows.Check();break;
+ case 3: aBtnDelCols.Check();break;
+ default:aBtnDelRows.Check();break;
+ }
+ }
+ else
+ {
+ switch(nDelItemChecked)
+ {
+ case 0: aBtnCellsUp.Check();break;
+ case 1: aBtnCellsLeft.Check();break;
+ case 2: aBtnDelRows.Check();break;
+ case 3: aBtnDelCols.Check();break;
+ }
+ }
+
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+DelCellCmd ScDeleteCellDlg::GetDelCellCmd() const
+{
+ DelCellCmd nReturn = DEL_NONE;
+
+ if ( aBtnCellsUp.IsChecked() )
+ {
+ nDelItemChecked=0;
+ nReturn = DEL_CELLSUP;
+ }
+ else if ( aBtnCellsLeft.IsChecked() )
+ {
+ nDelItemChecked=1;
+ nReturn = DEL_CELLSLEFT;
+ }
+ else if ( aBtnDelRows.IsChecked() )
+ {
+ nDelItemChecked=2;
+ nReturn = DEL_DELROWS;
+ }
+ else if ( aBtnDelCols.IsChecked() )
+ {
+ nDelItemChecked=3;
+ nReturn = DEL_DELCOLS;
+ }
+
+ return nReturn;
+}
+
+__EXPORT ScDeleteCellDlg::~ScDeleteCellDlg()
+{
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/delcodlg.cxx b/sc/source/ui/miscdlgs/delcodlg.cxx
new file mode 100644
index 000000000000..7fd087787a1b
--- /dev/null
+++ b/sc/source/ui/miscdlgs/delcodlg.cxx
@@ -0,0 +1,213 @@
+/*************************************************************************
+ *
+ * $RCSfile: delcodlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "delcodlg.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+//==================================================================
+
+BOOL ScDeleteContentsDlg::bPreviousAllCheck = FALSE;
+USHORT ScDeleteContentsDlg::nPreviousChecks = (IDF_DATETIME | IDF_STRING |
+ IDF_NOTE | IDF_FORMULA |
+ IDF_VALUE);
+
+//-----------------------------------------------------------------------
+
+ScDeleteContentsDlg::ScDeleteContentsDlg( Window* pParent,
+ USHORT nCheckDefaults ) :
+ ModalDialog ( pParent, ScResId( RID_SCDLG_DELCONT ) ),
+ //
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnDelAll ( this, ScResId( BTN_DELALL ) ),
+ aBtnDelStrings ( this, ScResId( BTN_DELSTRINGS ) ),
+ aBtnDelNumbers ( this, ScResId( BTN_DELNUMBERS ) ),
+ aBtnDelDateTime ( this, ScResId( BTN_DELDATETIME ) ),
+ aBtnDelFormulas ( this, ScResId( BTN_DELFORMULAS ) ),
+ aBtnDelNotes ( this, ScResId( BTN_DELNOTES ) ),
+ aBtnDelAttrs ( this, ScResId( BTN_DELATTRS ) ),
+ aBtnDelObjects ( this, ScResId( BTN_DELOBJECTS ) ),
+ aGbFrame ( this, ScResId( GB_FRAME ) ),
+ bObjectsDisabled( FALSE )
+{
+ if ( nCheckDefaults != 0 )
+ {
+ ScDeleteContentsDlg::nPreviousChecks = nCheckDefaults;
+ ScDeleteContentsDlg::bPreviousAllCheck = FALSE;
+ }
+
+ aBtnDelAll.Check ( ScDeleteContentsDlg::bPreviousAllCheck );
+ aBtnDelStrings.Check ( IS_SET( IDF_STRING,
+ ScDeleteContentsDlg::nPreviousChecks ) );
+ aBtnDelNumbers.Check ( IS_SET( IDF_VALUE,
+ ScDeleteContentsDlg::nPreviousChecks ) );
+ aBtnDelDateTime.Check( IS_SET( IDF_DATETIME,
+ ScDeleteContentsDlg::nPreviousChecks ) );
+ aBtnDelFormulas.Check( IS_SET( IDF_FORMULA,
+ ScDeleteContentsDlg::nPreviousChecks ) );
+ aBtnDelNotes.Check ( IS_SET( IDF_NOTE,
+ ScDeleteContentsDlg::nPreviousChecks ) );
+ aBtnDelAttrs.Check ( IS_SET( IDF_ATTRIB,
+ ScDeleteContentsDlg::nPreviousChecks ) );
+ aBtnDelObjects.Check ( IS_SET( IDF_OBJECTS,
+ ScDeleteContentsDlg::nPreviousChecks ) );
+
+ DisableChecks( aBtnDelAll.IsChecked() );
+
+ aBtnDelAll.SetClickHdl( LINK( this, ScDeleteContentsDlg, DelAllHdl ) );
+
+ //-------------
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+USHORT ScDeleteContentsDlg::GetDelContentsCmdBits() const
+{
+ ScDeleteContentsDlg::nPreviousChecks = 0;
+
+ if ( aBtnDelStrings.IsChecked() )
+ ScDeleteContentsDlg::nPreviousChecks = IDF_STRING;
+ if ( aBtnDelNumbers.IsChecked() )
+ ScDeleteContentsDlg::nPreviousChecks |= IDF_VALUE;
+ if ( aBtnDelDateTime.IsChecked())
+ ScDeleteContentsDlg::nPreviousChecks |= IDF_DATETIME;
+ if ( aBtnDelFormulas.IsChecked())
+ ScDeleteContentsDlg::nPreviousChecks |= IDF_FORMULA;
+ if ( aBtnDelNotes.IsChecked() )
+ ScDeleteContentsDlg::nPreviousChecks |= IDF_NOTE;
+ if ( aBtnDelAttrs.IsChecked() )
+ ScDeleteContentsDlg::nPreviousChecks |= IDF_ATTRIB;
+ if ( aBtnDelObjects.IsChecked() )
+ ScDeleteContentsDlg::nPreviousChecks |= IDF_OBJECTS;
+
+ ScDeleteContentsDlg::bPreviousAllCheck = aBtnDelAll.IsChecked();
+
+ return ( (ScDeleteContentsDlg::bPreviousAllCheck)
+ ? IDF_ALL
+ : ScDeleteContentsDlg::nPreviousChecks );
+}
+
+//------------------------------------------------------------------------
+
+void ScDeleteContentsDlg::DisableChecks( BOOL bDelAllChecked )
+{
+ if ( bDelAllChecked )
+ {
+ aBtnDelStrings.Disable();
+ aBtnDelNumbers.Disable();
+ aBtnDelDateTime.Disable();
+ aBtnDelFormulas.Disable();
+ aBtnDelNotes.Disable();
+ aBtnDelAttrs.Disable();
+ aBtnDelObjects.Disable();
+ }
+ else
+ {
+ aBtnDelStrings.Enable();
+ aBtnDelNumbers.Enable();
+ aBtnDelDateTime.Enable();
+ aBtnDelFormulas.Enable();
+ aBtnDelNotes.Enable();
+ aBtnDelAttrs.Enable();
+ if (bObjectsDisabled)
+ aBtnDelObjects.Disable();
+ else
+ aBtnDelObjects.Enable();
+ }
+}
+
+//------------------------------------------------------------------------
+
+void ScDeleteContentsDlg::DisableObjects()
+{
+ bObjectsDisabled = TRUE;
+ aBtnDelObjects.Check(FALSE);
+ aBtnDelObjects.Disable();
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( ScDeleteContentsDlg, DelAllHdl, void *, EMPTYARG )
+{
+ DisableChecks( aBtnDelAll.IsChecked() );
+
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScDeleteContentsDlg, DelAllHdl, void *, EMPTYARG )
+
+__EXPORT ScDeleteContentsDlg::~ScDeleteContentsDlg()
+{
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/filldlg.cxx b/sc/source/ui/miscdlgs/filldlg.cxx
new file mode 100644
index 000000000000..6b1f2e6efb7c
--- /dev/null
+++ b/sc/source/ui/miscdlgs/filldlg.cxx
@@ -0,0 +1,402 @@
+/*************************************************************************
+ *
+ * $RCSfile: filldlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#include <svtools/zforlist.hxx>
+#include <vcl/msgbox.hxx>
+#include <limits.h>
+
+#include "scresid.hxx"
+#include "document.hxx"
+#include "miscdlgs.hrc"
+
+#define _FILLDLG_CXX
+#include "filldlg.hxx"
+#undef _FILLDLG_CXX
+
+
+//============================================================================
+// class ScFillSeriesDlg
+
+//----------------------------------------------------------------------------
+
+ScFillSeriesDlg::ScFillSeriesDlg( Window* pParent,
+ ScDocument& rDocument,
+ FillDir eFillDir,
+ FillCmd eFillCmd,
+ FillDateCmd eFillDateCmd,
+ String aStartStr,
+ double fStep,
+ double fMax,
+ USHORT nPossDir )
+
+ : ModalDialog ( pParent, ScResId( RID_SCDLG_FILLSERIES ) ),
+
+ aBtnLeft ( this, ScResId( BTN_LEFT ) ),
+ aBtnRight ( this, ScResId( BTN_RIGHT ) ),
+ aBtnUp ( this, ScResId( BTN_TOP ) ),
+ aBtnDown ( this, ScResId( BTN_BOTTOM ) ),
+ aGbDirection ( this, ScResId( GB_DIRECTION ) ),
+ aBtnArithmetic ( this, ScResId( BTN_ARITHMETIC ) ),
+ aBtnGeometric ( this, ScResId( BTN_GEOMETRIC ) ),
+ aBtnDate ( this, ScResId( BTN_DATE ) ),
+ aBtnAutoFill ( this, ScResId( BTN_AUTOFILL ) ),
+ aGbType ( this, ScResId( GB_TYPE ) ),
+ aBtnDay ( this, ScResId( BTN_DAY ) ),
+ aBtnDayOfWeek ( this, ScResId( BTN_DAY_OF_WEEK ) ),
+ aBtnMonth ( this, ScResId( BTN_MONTH ) ),
+ aBtnYear ( this, ScResId( BTN_YEAR ) ),
+ aGbTimeUnit ( this, ScResId( GB_TIME_UNIT ) ),
+
+ aFtStartVal ( this, ScResId( FT_START_VALUE ) ),
+ aEdStartVal ( this, ScResId( ED_START_VALUES ) ),
+ aFtEndVal ( this, ScResId( FT_END_VALUE ) ),
+ aEdEndVal ( this, ScResId( ED_END_VALUES ) ),
+ aFtIncrement ( this, ScResId( FT_INCREMENT ) ),
+ aEdIncrement ( this, ScResId( ED_INCREMENT ) ),
+
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ errMsgInvalidVal( ScResId( STR_VALERR ) ),
+ rDoc ( rDocument ),
+ theFillDir ( eFillDir ),
+ theFillCmd ( eFillCmd ),
+ theFillDateCmd ( eFillDateCmd ),
+ aStartStrVal ( aStartStr),
+ fIncrement ( fStep ),
+ fEndVal ( fMax )
+{
+ Init( nPossDir );
+ FreeResource();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScFillSeriesDlg::~ScFillSeriesDlg()
+{
+}
+
+//----------------------------------------------------------------------------
+
+void ScFillSeriesDlg::SetEdStartValEnabled(BOOL bFlag)
+{
+ bStartValFlag=bFlag;
+ if(bFlag)
+ {
+ aFtStartVal.Enable();
+ aEdStartVal.Enable();
+ }
+ else
+ {
+ aFtStartVal.Disable();
+ aEdStartVal.Disable();
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void ScFillSeriesDlg::Init( USHORT nPossDir )
+{
+ aBtnOk.SetClickHdl ( LINK( this, ScFillSeriesDlg, OKHdl ) );
+ aBtnArithmetic.SetClickHdl ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
+ aBtnGeometric.SetClickHdl ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
+ aBtnDate.SetClickHdl ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
+ aBtnAutoFill.SetClickHdl ( LINK( this, ScFillSeriesDlg, DisableHdl ) );
+
+ if( nPossDir == FDS_OPT_NONE )
+ {
+ aBtnLeft.Disable();
+ aBtnRight.Disable();
+ aBtnDown.Disable();
+ aBtnUp.Disable();
+ }
+
+ if( nPossDir == FDS_OPT_HORZ )
+ {
+ aBtnDown.Disable();
+ aBtnUp.Disable();
+ }
+
+ if( nPossDir == FDS_OPT_VERT )
+ {
+ aBtnLeft.Disable();
+ aBtnRight.Disable();
+ }
+
+ switch ( theFillDir )
+ {
+ case FILL_TO_LEFT: aBtnLeft.Check(); break;
+ case FILL_TO_RIGHT: aBtnRight.Check(); break;
+ case FILL_TO_BOTTOM: aBtnDown.Check(); break;
+ case FILL_TO_TOP: aBtnUp.Check(); break;
+ default:
+ break;
+ }
+
+ switch ( theFillCmd )
+ {
+ case FILL_LINEAR:
+ aBtnArithmetic.Check();
+ DisableHdl( &aBtnArithmetic );
+ break;
+ case FILL_GROWTH:
+ aBtnGeometric.Check();
+ DisableHdl( &aBtnGeometric );
+ break;
+ case FILL_DATE:
+ aBtnDate.Check();
+ DisableHdl( &aBtnDate );
+ break;
+ case FILL_AUTO:
+ aBtnAutoFill.Check();
+ DisableHdl( &aBtnAutoFill );
+ break;
+ default:
+ break;
+ }
+
+ switch ( theFillDateCmd )
+ {
+ case FILL_DAY: aBtnDay.Check(); break;
+ case FILL_WEEKDAY: aBtnDayOfWeek.Check(); break;
+ case FILL_MONTH: aBtnMonth.Check(); break;
+ case FILL_YEAR: aBtnYear.Check(); break;
+ default:
+ break;
+ }
+
+ fStartVal = MAXDOUBLE;
+ /*
+ String aStartTxt;
+ if ( fStartVal != MAXDOUBLE )
+ rDoc.GetFormatTable()->GetInputLineString( fStartVal, 0, aStartTxt );
+ aEdStartVal.SetText( aStartTxt );
+ */
+
+ aEdStartVal.SetText( aStartStrVal);
+
+ String aIncrTxt;
+ rDoc.GetFormatTable()->GetInputLineString( fIncrement, 0, aIncrTxt );
+ aEdIncrement.SetText( aIncrTxt );
+
+ String aEndTxt;
+ if ( fEndVal != MAXDOUBLE )
+ rDoc.GetFormatTable()->GetInputLineString( fEndVal, 0, aEndTxt );
+ aEdEndVal.SetText( aEndTxt );
+
+ bStartValFlag=FALSE;
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScFillSeriesDlg::CheckStartVal()
+{
+ BOOL bValOk = FALSE;
+ ULONG nKey = 0;
+ String aStr( aEdStartVal.GetText() );
+
+ if ( aStr.Len() == 0 || aBtnAutoFill.IsChecked())
+ {
+ fStartVal = MAXDOUBLE;
+ bValOk = TRUE;
+ }
+ else
+ bValOk = rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fStartVal );
+
+ return bValOk;
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScFillSeriesDlg::CheckIncrementVal()
+{
+ ULONG nKey = 0;
+ String aStr( aEdIncrement.GetText() );
+
+ return rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fIncrement );
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScFillSeriesDlg::CheckEndVal()
+{
+ BOOL bValOk = FALSE;
+ ULONG nKey = 0;
+ String aStr( aEdEndVal.GetText() );
+
+ if ( aStr.Len() == 0 )
+ {
+ fEndVal = (fIncrement < 0) ? -MAXDOUBLE : MAXDOUBLE;
+ bValOk = TRUE;
+ }
+ else
+ bValOk = rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fEndVal );
+
+ return bValOk;
+}
+
+
+//----------------------------------------------------------------------------
+// Handler:
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScFillSeriesDlg, DisableHdl, Button *, pBtn )
+{
+ if ( pBtn == &aBtnDate )
+ {
+ aBtnDay.Enable();
+ aBtnDayOfWeek.Enable();
+ aBtnMonth.Enable();
+ aBtnYear.Enable();
+ aGbTimeUnit.Enable();
+ }
+ else
+ {
+ aBtnDay.Disable();
+ aBtnDayOfWeek.Disable();
+ aBtnMonth.Disable();
+ aBtnYear.Disable();
+ aGbTimeUnit.Disable();
+ }
+
+ if ( pBtn != &aBtnAutoFill )
+ {
+ aFtIncrement.Enable();
+ aEdIncrement.Enable();
+ aFtEndVal.Enable();
+ aEdEndVal.Enable();
+ }
+ else
+ {
+ aFtIncrement.Disable();
+ aEdIncrement.Disable();
+ aFtEndVal.Disable();
+ aEdEndVal.Disable();
+ }
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScFillSeriesDlg, OKHdl, void *, EMPTYARG )
+{
+ if ( aBtnLeft.IsChecked() ) theFillDir = FILL_TO_LEFT;
+ else if ( aBtnRight.IsChecked() ) theFillDir = FILL_TO_RIGHT;
+ else if ( aBtnDown.IsChecked() ) theFillDir = FILL_TO_BOTTOM;
+ else if ( aBtnUp.IsChecked() ) theFillDir = FILL_TO_TOP;
+
+ if ( aBtnArithmetic.IsChecked() ) theFillCmd = FILL_LINEAR;
+ else if ( aBtnGeometric.IsChecked() ) theFillCmd = FILL_GROWTH;
+ else if ( aBtnDate.IsChecked() ) theFillCmd = FILL_DATE;
+ else if ( aBtnAutoFill.IsChecked() ) theFillCmd = FILL_AUTO;
+
+ if ( aBtnDay.IsChecked() ) theFillDateCmd = FILL_DAY;
+ else if ( aBtnDayOfWeek.IsChecked() ) theFillDateCmd = FILL_WEEKDAY;
+ else if ( aBtnMonth.IsChecked() ) theFillDateCmd = FILL_MONTH;
+ else if ( aBtnYear.IsChecked() ) theFillDateCmd = FILL_YEAR;
+
+ BOOL bAllOk = TRUE;
+ Edit* pEdWrong;
+ if ( !CheckStartVal() )
+ {
+ bAllOk = FALSE;
+ pEdWrong = &aEdStartVal;
+ }
+ else if ( !CheckIncrementVal() )
+ {
+ bAllOk = FALSE;
+ pEdWrong = &aEdIncrement;
+ }
+ else if ( !CheckEndVal() )
+ {
+ bAllOk = FALSE;
+ pEdWrong = &aEdEndVal;
+ }
+ if ( bAllOk )
+ EndDialog( RET_OK );
+ else
+ {
+ ErrorBox( this,
+ WinBits( WB_OK | WB_DEF_OK ),
+ errMsgInvalidVal
+ ).Execute();
+ pEdWrong->GrabFocus();
+ }
+
+ return 0;
+}
+
+
+
+
diff --git a/sc/source/ui/miscdlgs/groupdlg.cxx b/sc/source/ui/miscdlgs/groupdlg.cxx
new file mode 100644
index 000000000000..82042c386c00
--- /dev/null
+++ b/sc/source/ui/miscdlgs/groupdlg.cxx
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * $RCSfile: groupdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "groupdlg.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+//==================================================================
+
+ScGroupDlg::ScGroupDlg( Window* pParent,
+ USHORT nResId,
+ BOOL bUngroup,
+ BOOL bRows ) :
+ ModalDialog ( pParent, ScResId( nResId ) ),
+ //
+ aBtnRows ( this, ScResId( BTN_GROUP_ROWS ) ),
+ aBtnCols ( this, ScResId( BTN_GROUP_COLS ) ),
+ aGbFrame ( this, ScResId( GB_FRAME ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) )
+{
+ aGbFrame.SetText( String( ScResId(bUngroup ? STR_UNGROUP : STR_GROUP) ) );
+
+ if ( bRows )
+ aBtnRows.Check();
+ else
+ aBtnCols.Check();
+
+ //-------------
+ FreeResource();
+ aBtnRows.GrabFocus();
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScGroupDlg::GetRowsChecked() const
+{
+ return aBtnRows.IsChecked();
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScGroupDlg::GetColsChecked() const
+{
+ return aBtnCols.IsChecked();
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScGroupDlg::~ScGroupDlg()
+{
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/highred.cxx b/sc/source/ui/miscdlgs/highred.cxx
new file mode 100644
index 000000000000..388b108a5615
--- /dev/null
+++ b/sc/source/ui/miscdlgs/highred.cxx
@@ -0,0 +1,356 @@
+/*************************************************************************
+ *
+ * $RCSfile: highred.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes ---------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+
+
+// INCLUDE -------------------------------------------------------------------
+
+#include "global.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "scresid.hxx"
+#include "globstr.hrc"
+#include "highred.hrc"
+
+#include "highred.hxx"
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+// defines -------------------------------------------------------------------
+
+#define ABS_SREF SCA_VALID \
+ | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
+#define ABS_DREF ABS_SREF \
+ | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE
+#define ABS_SREF3D ABS_SREF | SCA_TAB_3D
+#define ABS_DREF3D ABS_DREF | SCA_TAB_3D
+
+
+
+#define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute();
+
+inline void EnableDisable( Window& rWin, BOOL bEnable )
+{
+ if (bEnable)
+ rWin.Enable();
+ else
+ rWin.Disable();
+}
+
+//============================================================================
+// class ScHighlightChgDlg
+
+//----------------------------------------------------------------------------
+ScHighlightChgDlg::ScHighlightChgDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData)
+
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_HIGHLIGHT_CHANGES ),
+ //
+ aFtAssign ( this, ResId( FT_ASSIGN ) ),
+ aEdAssign ( this, ResId( ED_ASSIGN ) ),
+ aRbAssign ( this, ResId( RB_ASSIGN ), &aEdAssign ),
+ aHighlightBox ( this, ResId( CB_HIGHLIGHT)),
+ aGroupBox ( this, ResId( GB_REDLINING)),
+ aCbAccept ( this, ResId( CB_HIGHLIGHT_ACCEPT)),
+ aCbReject ( this, ResId( CB_HIGHLIGHT_REJECT)),
+ aHighlightFrame ( this, ResId( GB_TO_HIGHLIGHT )),
+
+ aOkButton ( this, ResId( BTN_OK ) ),
+ aCancelButton ( this, ResId( BTN_CANCEL ) ),
+ aHelpButton ( this, ResId( BTN_HELP ) ),
+ //
+ aFilterCtr ( this),
+ pViewData ( ptrViewData ),
+ pDoc ( ptrViewData->GetDocument() ),
+ aLocalRangeName ( *(pDoc->GetRangeName()) )
+{
+ FreeResource();
+
+ Point aPos=aGroupBox.GetPosPixel();
+ aFilterCtr.SetPosSizePixel(aPos,aGroupBox.GetSizePixel());
+ aGroupBox.Hide();
+ MinSize=aFilterCtr.GetSizePixel();
+ MinSize.Height()+=2;
+ MinSize.Width()+=2;
+ aOkButton.SetClickHdl(LINK( this, ScHighlightChgDlg, OKBtnHdl));
+ aHighlightBox.SetClickHdl(LINK( this, ScHighlightChgDlg, HighLightHandle ));
+ aFilterCtr.SetRefHdl(LINK( this, ScHighlightChgDlg, RefHandle ));
+ aFilterCtr.HideRange(FALSE);
+ aFilterCtr.HideGroupBox();
+ aFilterCtr.Show();
+ SFX_APP()->LockDispatcher( TRUE);
+ //SFX_APPWINDOW->Disable(FALSE);
+
+ Init();
+
+}
+ScHighlightChgDlg::~ScHighlightChgDlg()
+{
+ SFX_APP()->LockDispatcher( FALSE);
+ //SFX_APPWINDOW->Enable();
+}
+
+void __EXPORT ScHighlightChgDlg::Init()
+{
+ String aAreaStr;
+ ScRange aRange;
+
+ DBG_ASSERT( pViewData && pDoc, "ViewData oder Document nicht gefunden!" );
+
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+ if(pChanges!=NULL)
+ {
+ aChangeViewSet.SetTheAuthorToShow(pChanges->GetUser());
+ aFilterCtr.ClearAuthors();
+ StrCollection aUserColl=pChanges->GetUserCollection();
+ for(USHORT i=0;i<aUserColl.GetCount();i++)
+ aFilterCtr.InsertAuthor(aUserColl[i]->GetString());
+ }
+
+
+ ScChangeViewSettings* pViewSettings=pDoc->GetChangeViewSettings();
+
+ if(pViewSettings!=NULL)
+ aChangeViewSet=*pViewSettings;
+ aHighlightBox.Check(aChangeViewSet.ShowChanges());
+ aFilterCtr.CheckDate(aChangeViewSet.HasDate());
+ aFilterCtr.SetFirstDate(aChangeViewSet.GetTheFirstDateTime());
+ aFilterCtr.SetFirstTime(aChangeViewSet.GetTheFirstDateTime());
+ aFilterCtr.SetLastDate(aChangeViewSet.GetTheLastDateTime());
+ aFilterCtr.SetLastTime(aChangeViewSet.GetTheLastDateTime());
+ aFilterCtr.SetDateMode((USHORT)aChangeViewSet.GetTheDateMode());
+ aFilterCtr.CheckAuthor(aChangeViewSet.HasAuthor());
+ aFilterCtr.CheckComment(aChangeViewSet.HasComment());
+ aFilterCtr.SetComment(aChangeViewSet.GetTheComment());
+
+ aCbAccept.Check(aChangeViewSet.IsShowAccepted());
+ aCbReject.Check(aChangeViewSet.IsShowRejected());
+
+ String aString=aChangeViewSet.GetTheAuthorToShow();
+ if(aString.Len()!=0)
+ {
+ aFilterCtr.SelectAuthor(aString);
+ }
+ else
+ {
+ aFilterCtr.SelectedAuthorPos(0);
+ }
+
+ aFilterCtr.CheckRange(aChangeViewSet.HasRange());
+ ScRange* pRangeEntry=aChangeViewSet.GetTheRangeList().GetObject(0);
+
+
+ if(pRangeEntry!=NULL)
+ {
+ String aRefStr;
+ pRangeEntry->Format( aRefStr, ABS_DREF3D, pDoc );
+ aFilterCtr.SetRange(aRefStr);
+ }
+ aFilterCtr.Enable(TRUE,TRUE);
+ HighLightHandle(&aHighlightBox);
+}
+
+//----------------------------------------------------------------------------
+// Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als
+// neue Selektion im Referenz-Edit angezeigt wird.
+
+void ScHighlightChgDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( aEdAssign.IsVisible() )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart(&aEdAssign);
+ String aRefStr;
+ rRef.Format( aRefStr, ABS_DREF3D, pDoc );
+ aEdAssign.SetRefString( aRefStr );
+ aFilterCtr.SetRange(aRefStr);
+ }
+}
+
+//----------------------------------------------------------------------------
+BOOL __EXPORT ScHighlightChgDlg::Close()
+{
+ return DoClose( ScHighlightChgDlgWrapper::GetChildWindowId() );
+}
+
+void ScHighlightChgDlg::RefInputDone( BOOL bForced)
+{
+ ScAnyRefDlg::RefInputDone(bForced);
+ if(bForced || !aRbAssign.IsVisible())
+ {
+ aFilterCtr.SetRange(aEdAssign.GetText());
+ aFilterCtr.SetFocusToRange();
+ aEdAssign.Hide();
+ aRbAssign.Hide();
+ }
+}
+
+void ScHighlightChgDlg::SetActive()
+{
+ /*
+ if(pTPFilter!=NULL)
+ {
+ aAcceptChgCtr.GetFilterPage()->SetFocusToRange();
+ aEdAssign.Hide();
+ aRbAssign.Hide();
+ SFX_APPWINDOW->Enable();
+ SFX_APP()->LockDispatcher( FALSE);
+ }
+ //RefInputDone();
+ */
+}
+
+BOOL ScHighlightChgDlg::IsRefInputMode() const
+{
+ return aEdAssign.IsVisible();
+}
+
+IMPL_LINK( ScHighlightChgDlg, HighLightHandle, CheckBox*, pCb )
+{
+ if(pCb!=NULL)
+ {
+ if(aHighlightBox.IsChecked())
+ {
+ aFilterCtr.Enable(TRUE,TRUE);
+ aCbAccept.Enable();
+ aCbReject.Enable();
+ }
+ else
+ {
+ aFilterCtr.Disable(TRUE);
+ aCbAccept.Disable();
+ aCbReject.Disable();
+ }
+ }
+ return 0;
+}
+
+IMPL_LINK( ScHighlightChgDlg, RefHandle, SvxTPFilter*, pRef )
+{
+ if(pRef!=NULL)
+ {
+ SFX_APP()->LockDispatcher( TRUE );
+ //SFX_APPWINDOW->Disable(FALSE);
+ aEdAssign.Show();
+ aRbAssign.Show();
+ aEdAssign.SetText(aFilterCtr.GetRange());
+ ScAnyRefDlg::RefInputStart(&aEdAssign,&aRbAssign);
+ }
+ return 0;
+}
+
+IMPL_LINK( ScHighlightChgDlg, OKBtnHdl, PushButton*, pOKBtn )
+{
+ if ( pOKBtn == &aOkButton)
+ {
+ aChangeViewSet.SetShowChanges(aHighlightBox.IsChecked());
+ aChangeViewSet.SetHasDate(aFilterCtr.IsDate());
+ ScChgsDateMode eMode = (ScChgsDateMode) aFilterCtr.GetDateMode();
+ aChangeViewSet.SetTheDateMode( eMode );
+ Date aFirstDate( aFilterCtr.GetFirstDate() );
+ Time aFirstTime( aFilterCtr.GetFirstTime() );
+ Date aLastDate( aFilterCtr.GetLastDate() );
+ Time aLastTime( aFilterCtr.GetLastTime() );
+ switch ( eMode )
+ { // korrespondiert mit ScViewUtil::IsActionShown
+ case SCDM_DATE_EQUAL :
+ case SCDM_DATE_NOTEQUAL :
+ aFirstTime.SetTime( 0 );
+ aLastDate = aFirstDate;
+ aLastTime.SetTime( 23595999 );
+ break;
+ }
+ aChangeViewSet.SetTheFirstDateTime( DateTime( aFirstDate, aFirstTime ) );
+ aChangeViewSet.SetTheLastDateTime( DateTime( aLastDate, aLastTime ) );
+ aChangeViewSet.SetHasAuthor(aFilterCtr.IsAuthor());
+ aChangeViewSet.SetTheAuthorToShow(aFilterCtr.GetSelectedAuthor());
+ aChangeViewSet.SetHasRange(aFilterCtr.IsRange());
+ aChangeViewSet.SetShowAccepted(aCbAccept.IsChecked());
+ aChangeViewSet.SetShowRejected(aCbReject.IsChecked());
+ aChangeViewSet.SetHasComment(aFilterCtr.IsComment());
+ aChangeViewSet.SetTheComment(aFilterCtr.GetComment());
+ ScRangeList aRangeList;
+ aRangeList.Parse(aFilterCtr.GetRange());
+ aChangeViewSet.SetTheRangeList(aRangeList);
+ pDoc->SetChangeViewSettings(aChangeViewSet);
+ pViewData->GetDocShell()->PostPaintGridAll();
+ Close();
+ }
+ return 0;
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/highred.src b/sc/source/ui/miscdlgs/highred.src
new file mode 100644
index 000000000000..e00ded11f219
--- /dev/null
+++ b/sc/source/ui/miscdlgs/highred.src
@@ -0,0 +1,269 @@
+/*************************************************************************
+ *
+ * $RCSfile: highred.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "highred.hrc"
+ModelessDialog RID_SCDLG_HIGHLIGHT_CHANGES
+{
+ OutputSize = TRUE ;
+ HelpId = FID_CHG_ACCEPT ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 318 , 161 ) ;
+ Text = "Änderungen anzeigen" ;
+ Text [ ENGLISH ] = "Show Changes" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ // Dieser Dialog hat einen Cancel-Button !
+ CheckBox CB_HIGHLIGHT
+ {
+ Text = "~Änderungen in der Tabelle anzeigen" ;
+ Text [ ENGLISH ] = "Show changes in the spreadsheet" ;
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 150 , 12 ) ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Show changes in spreadsheet" ;
+ Text [ portuguese_brazilian ] = "Änderungen in der Tabelle anzeigen" ;
+ Text [ swedish ] = "Visa ~ändringar i tabellen" ;
+ Text [ danish ] = "Vis ændringerne i regnearket" ;
+ Text [ italian ] = "Mostra modifiche nella tabella" ;
+ Text [ spanish ] = "~Mostrar las modificaciones en la hoja" ;
+ Text [ french ] = "~Afficher les modifications dans la feuille de calcul" ;
+ Text [ dutch ] = "W~ijzigingen op het werkblad weergeven." ;
+ Text [ portuguese ] = "Mostrar modificações na folha de cálculo" ;
+ Text[ chinese_simplified ] = "ÏÔʾ¹¤×÷±íÄڵĸü¸ÄÄÚÈÝ(~S)";
+ Text[ russian ] = "Ïîêàçàòü èçìåíåíèÿ â ëèñòå";
+ Text[ polish ] = "Poka¿ zmiany w tabeli";
+ Text[ japanese ] = "•\\“à‚Ì•ÏX‚ð•\\Ž¦(~S)";
+ Text[ chinese_traditional ] = "Åã¥Ü¤u§@ªí¤ºªºÅܧó(~S)";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÊÛííÑÇÊ Ýí ÇáÌÏæá";
+ Text[ greek ] = "ÅìöÜíéóç áëëáãþí ðßíáêá";
+ Text[ korean ] = "½ºÇÁ·¹µå ½ÃÆ®»ó¿¡ º¯°æ º¸À̱â(~S)";
+ Text[ turkish ] = "~Tablodaki deðiþiklikleri görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_REDLINING
+ {
+ Pos = MAP_APPFONT ( 3 , 18 ) ;
+ Size = MAP_APPFONT ( 260 ,107 ) ;
+ };
+ CheckBox CB_HIGHLIGHT_ACCEPT
+ {
+ Text = "A~kzeptierte Änderungen anzeigen" ;
+ Text [ ENGLISH ] = "Show rejected changes" ;
+ Pos = MAP_APPFONT ( 14 , 125 ) ;
+ Size = MAP_APPFONT ( 150 , 12 ) ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Show ~accepted changes" ;
+ Text [ portuguese_brazilian ] = "A~kzeptierte Änderungen anzeigen" ;
+ Text [ swedish ] = "Visa a~ccepterade ändringar" ;
+ Text [ danish ] = "Vis accepterede ændringer" ;
+ Text [ italian ] = "Mostra i cambiamenti a~ccettati" ;
+ Text [ spanish ] = "~Mostrar las modificaciones aceptadas" ;
+ Text [ french ] = "Afficher les modifications acceptées" ;
+ Text [ dutch ] = "Geac~cepteerde wijzigingen weergeven" ;
+ Text [ portuguese ] = "Mostrar mo~dificações aceites" ;
+ Text[ chinese_simplified ] = "ÏÔʾ½ÓÊܵĸü¸ÄÄÚÈÝ(~A)";
+ Text[ russian ] = "Ïîêàçàòü ïðèíÿòûå èçìåíåíèÿ";
+ Text[ polish ] = "Poka¿ zmiany zaakceptowane";
+ Text[ japanese ] = "”F‚ß‚½•ÏXŒÂŠ‚ð•\\Ž¦(~A)";
+ Text[ chinese_traditional ] = "Åã¥Ü±µ¨üªºÅܧó(~A)";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÊÛííÑÇÊ ÇáãÞÈæáÉ";
+ Text[ greek ] = "ÅìöÜíéóç áðïäå÷ïìÝíùí áëëáãþí";
+ Text[ korean ] = "Àû¿ëµÈ º¯°æ º¸À̱â(~A)";
+ Text[ turkish ] = "~Kabul edilen deðiþiklikleri görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HIGHLIGHT_REJECT
+ {
+ Text = "A~bgelehnte Änderungen anzeigen" ;
+ Text [ ENGLISH ] = "Show accepted changes" ;
+ Pos = MAP_APPFONT ( 14 , 140 ) ;
+ Size = MAP_APPFONT ( 150 , 12 ) ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Show ~rejected changes" ;
+ Text [ portuguese_brazilian ] = "A~bgelehnte Änderungen anzeigen" ;
+ Text [ swedish ] = "Visa ~ej accepterade ändringar" ;
+ Text [ danish ] = "Vis forkastede ændringer" ;
+ Text [ italian ] = "Mostra i cambiamenti ~non accettati" ;
+ Text [ spanish ] = "~Mostrar las modificaciones rechazadas" ;
+ Text [ french ] = "Afficher les modifications refusées" ;
+ Text [ dutch ] = "Niet-ge~accepteerde wijzigingen weergeven" ;
+ Text [ portuguese ] = "Mostrar modificações ~rejeitadas" ;
+ Text[ chinese_simplified ] = "ÏÔʾ¾Ü¾øµÄ¸ü¸ÄÄÚÈÝ(~R)";
+ Text[ russian ] = "Ïîêàçàòü îòêëîíåííûå èçìåíåíèÿ";
+ Text[ polish ] = "Poka¿ zmiany odrzucone";
+ Text[ japanese ] = "”F‚ß‚È‚¢•ÏXŒÂŠ‚ð•\\Ž¦(~R)";
+ Text[ chinese_traditional ] = "Åã¥Ü©Úµ´ªºÅܧó(~R)";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÊÛííÑÇÊ ÇáãÑÝæÖÉ";
+ Text[ greek ] = "ÅìöÜíéóç áðïññéðôÝùí áëëáãþí";
+ Text[ korean ] = "Ãë¼ÒµÈ º¯°æ º¸À̱â(~R)";
+ Text[ turkish ] = "~Reddedilen deðiþiklikleri görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_TO_HIGHLIGHT
+ {
+ Pos = MAP_APPFONT ( 3 , 18 ) ;
+ Size = MAP_APPFONT ( 260 , 136 ) ;
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 269 , 6 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 269 , 23 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 269 , 43 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_ASSIGN
+ {
+ Text = "Bereich" ;
+ Text [ ENGLISH ] = "Range" ;
+ Hide = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 105 ) ;
+ Size = MAP_APPFONT ( 128 , 12 ) ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Range" ;
+ Text [ portuguese_brazilian ] = "Bereich" ;
+ Text [ swedish ] = "Område" ;
+ Text [ danish ] = "Område" ;
+ Text [ italian ] = "Area" ;
+ Text [ spanish ] = "Área" ;
+ Text [ french ] = "Plage" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ portuguese ] = "Intervalo" ;
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ russian ] = "Äèàïàçîí";
+ Text[ polish ] = "Zakres";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "ÇáäØÇÞ";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¹üÀ§";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_ASSIGN
+ {
+ Hide = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 119 ) ;
+ Size = MAP_APPFONT ( 128 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_ASSIGN
+ {
+ Hide = TRUE ;
+ QuickHelpText = "Verkleinern/Vergrößern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink/Expand" ;
+ Pos = MAP_APPFONT ( 142 , 119 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Minimize/Maximize" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska/Förstora" ;
+ QuickHelpText [ danish ] = "Formindsk/Forstør" ;
+ QuickHelpText [ italian ] = "Zoom avanti/indietro" ;
+ QuickHelpText [ spanish ] = "Reducir/Aumentar" ;
+ QuickHelpText [ french ] = "Réduire/agrandir" ;
+ QuickHelpText [ dutch ] = "Verkleinen/vergroten" ;
+ QuickHelpText [ portuguese ] = "Afastar/Aproximar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü/Óâåëè÷èòü";
+ QuickHelpText[ polish ] = "Pomniejsz/Powiêksz";
+ QuickHelpText[ japanese ] = "k¬/Šg‘å";
+ QuickHelpText[ chinese_simplified ] = "ËõС/·Å´ó";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p/©ñ¤j";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ/ÊßÈíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç/ÌåãÝèõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ Text [ english_us ] = "Show Changes" ;
+ Text [ portuguese_brazilian ] = "Änderungen anzeigen" ;
+ Text [ swedish ] = "Visa ändringar" ;
+ Text [ danish ] = "Vis ændringer" ;
+ Text [ italian ] = "Mostra le modifiche" ;
+ Text [ spanish ] = "Mostrar modificaciones" ;
+ Text [ french ] = "Afficher les modifications" ;
+ Text [ dutch ] = "Wijzigingen weergeven" ;
+ Text [ portuguese ] = "Mostrar modificações" ;
+ Text[ chinese_simplified ] = "ÏÔʾ¸ü¸Ä";
+ Text[ russian ] = "Ïîêàçàòü èçìåíåíèÿ";
+ Text[ polish ] = "Poka¿ zmiany";
+ Text[ japanese ] = "•ÏXŒÂŠ‚Ì•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥ÜÅܧó";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÊÛííÑÇÊ";
+ Text[ greek ] = "ÅìöÜíéóç áëëáãþí";
+ Text[ korean ] = "º¯°æº¸À̱â";
+ Text[ turkish ] = "Deðiþiklikleri görüntüle";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/miscdlgs/inscldlg.cxx b/sc/source/ui/miscdlgs/inscldlg.cxx
new file mode 100644
index 000000000000..80224af096b2
--- /dev/null
+++ b/sc/source/ui/miscdlgs/inscldlg.cxx
@@ -0,0 +1,153 @@
+/*************************************************************************
+ *
+ * $RCSfile: inscldlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "inscldlg.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+static BYTE nInsItemChecked=0;
+
+//==================================================================
+
+ScInsertCellDlg::ScInsertCellDlg( Window* pParent,BOOL bDisallowCellMove) :
+ ModalDialog ( pParent, ScResId( RID_SCDLG_INSCELL ) ),
+ //
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnCellsDown ( this, ScResId( BTN_CELLSDOWN ) ),
+ aBtnCellsRight ( this, ScResId( BTN_CELLSRIGHT ) ),
+ aBtnInsRows ( this, ScResId( BTN_INSROWS ) ),
+ aBtnInsCols ( this, ScResId( BTN_INSCOLS ) ),
+ aGbFrame ( this, ScResId( GB_FRAME ) )
+{
+ if (bDisallowCellMove)
+ {
+ aBtnCellsDown.Disable();
+ aBtnCellsRight.Disable();
+ aBtnInsRows.Check();
+
+ switch(nInsItemChecked)
+ {
+ case 2: aBtnInsRows .Check();break;
+ case 3: aBtnInsCols .Check();break;
+ default:aBtnInsRows .Check();break;
+ }
+ }
+ else
+ {
+ switch(nInsItemChecked)
+ {
+ case 0: aBtnCellsDown .Check();break;
+ case 1: aBtnCellsRight.Check();break;
+ case 2: aBtnInsRows .Check();break;
+ case 3: aBtnInsCols .Check();break;
+ }
+ }
+ //-------------
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+InsCellCmd ScInsertCellDlg::GetInsCellCmd() const
+{
+ InsCellCmd nReturn = INS_NONE;
+
+ if ( aBtnCellsDown.IsChecked() )
+ {
+ nInsItemChecked=0;
+ nReturn = INS_CELLSDOWN;
+ }
+ else if ( aBtnCellsRight.IsChecked())
+ {
+ nInsItemChecked=1;
+ nReturn = INS_CELLSRIGHT;
+ }
+ else if ( aBtnInsRows.IsChecked() )
+ {
+ nInsItemChecked=2;
+ nReturn = INS_INSROWS;
+ }
+ else if ( aBtnInsCols.IsChecked() )
+ {
+ nInsItemChecked=3;
+ nReturn = INS_INSCOLS;
+ }
+
+ return nReturn;
+}
+
+__EXPORT ScInsertCellDlg::~ScInsertCellDlg()
+{
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/inscodlg.cxx b/sc/source/ui/miscdlgs/inscodlg.cxx
new file mode 100644
index 000000000000..b5de5658039a
--- /dev/null
+++ b/sc/source/ui/miscdlgs/inscodlg.cxx
@@ -0,0 +1,388 @@
+/*************************************************************************
+ *
+ * $RCSfile: inscodlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "inscodlg.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+//==================================================================
+
+BOOL ScInsertContentsDlg::bPreviousAllCheck = TRUE;
+USHORT ScInsertContentsDlg::nPreviousChecks = (IDF_DATETIME | IDF_STRING |
+ IDF_NOTE | IDF_FORMULA |
+ IDF_ATTRIB);
+USHORT ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_NOFUNC;
+USHORT ScInsertContentsDlg::nPreviousChecks2 = 0;
+USHORT ScInsertContentsDlg::nPreviousMoveMode = INS_NONE; // enum InsCellCmd
+
+//-----------------------------------------------------------------------
+
+ScInsertContentsDlg::ScInsertContentsDlg( Window* pParent,
+ USHORT nCheckDefaults,
+ const String* pStrTitle )
+
+ : ModalDialog ( pParent, ScResId( RID_SCDLG_INSCONT ) ),
+ //
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnInsAll ( this, ScResId( BTN_INSALL ) ),
+ aBtnInsStrings ( this, ScResId( BTN_INSSTRINGS ) ),
+ aBtnInsNumbers ( this, ScResId( BTN_INSNUMBERS ) ),
+ aBtnInsDateTime ( this, ScResId( BTN_INSDATETIME ) ),
+ aBtnInsFormulas ( this, ScResId( BTN_INSFORMULAS ) ),
+ aBtnInsNotes ( this, ScResId( BTN_INSNOTES ) ),
+ aBtnInsAttrs ( this, ScResId( BTN_INSATTRS ) ),
+ aGbFrame ( this, ScResId( GB_FRAME ) ),
+ aBtnSkipEmptyCells( this, ScResId(BTN_SKIP_EMPTY ) ),
+ aBtnTranspose ( this, ScResId( BTN_TRANSPOSE ) ),
+ aBtnLink ( this, ScResId( BTN_LINK ) ),
+ aGbOptions ( this, ScResId( GB_OPTIONS ) ),
+ aRbNoOp ( this, ScResId( BTN_OP_NOOP ) ),
+ aRbAdd ( this, ScResId( BTN_OP_ADD ) ),
+ aRbSub ( this, ScResId( BTN_OP_SUB ) ),
+ aRbMul ( this, ScResId( BTN_OP_MUL ) ),
+ aRbDiv ( this, ScResId( BTN_OP_DIV ) ),
+ aGbOperation ( this, ScResId( GB_OPERATION ) ),
+ aRbMoveNone ( this, ScResId( BTN_MV_NONE ) ),
+ aRbMoveDown ( this, ScResId( BTN_MV_DOWN ) ),
+ aRbMoveRight ( this, ScResId( BTN_MV_RIGHT ) ),
+ aGbMove ( this, ScResId( GB_MOVE ) ),
+ bOtherDoc ( FALSE ),
+ bFillMode ( FALSE ),
+ bChangeTrack ( FALSE ),
+ bMoveDownDisabled( FALSE ),
+ bMoveRightDisabled( FALSE )
+{
+ if ( pStrTitle )
+ SetText( *pStrTitle );
+
+ if ( nCheckDefaults != 0 )
+ {
+ ScInsertContentsDlg::nPreviousChecks = nCheckDefaults;
+ ScInsertContentsDlg::bPreviousAllCheck = FALSE;
+ ScInsertContentsDlg::nPreviousChecks2 = 0;
+ }
+
+ aBtnInsAll.Check ( ScInsertContentsDlg::bPreviousAllCheck );
+ aBtnInsStrings.Check ( IS_SET( IDF_STRING,
+ ScInsertContentsDlg::nPreviousChecks ) );
+ aBtnInsNumbers.Check ( IS_SET( IDF_VALUE,
+ ScInsertContentsDlg::nPreviousChecks ) );
+ aBtnInsDateTime.Check( IS_SET( IDF_DATETIME,
+ ScInsertContentsDlg::nPreviousChecks ) );
+ aBtnInsFormulas.Check( IS_SET( IDF_FORMULA,
+ ScInsertContentsDlg::nPreviousChecks ) );
+ aBtnInsNotes.Check ( IS_SET( IDF_NOTE,
+ ScInsertContentsDlg::nPreviousChecks ) );
+ aBtnInsAttrs.Check ( IS_SET( IDF_ATTRIB,
+ ScInsertContentsDlg::nPreviousChecks ) );
+
+ switch( ScInsertContentsDlg::nPreviousFormulaChecks )
+ {
+ case PASTE_NOFUNC: aRbNoOp.Check(TRUE); break;
+ case PASTE_ADD: aRbAdd.Check(TRUE); break;
+ case PASTE_SUB: aRbSub.Check(TRUE); break;
+ case PASTE_MUL: aRbMul.Check(TRUE); break;
+ case PASTE_DIV: aRbDiv.Check(TRUE); break;
+ }
+
+ switch( ScInsertContentsDlg::nPreviousMoveMode )
+ {
+ case INS_NONE: aRbMoveNone.Check(TRUE); break;
+ case INS_CELLSDOWN: aRbMoveDown.Check(TRUE); break;
+ case INS_CELLSRIGHT: aRbMoveRight.Check(TRUE); break;
+ }
+
+ aBtnSkipEmptyCells.Check( ( ScInsertContentsDlg::nPreviousChecks2 & INS_CONT_NOEMPTY ) != 0);
+ aBtnTranspose.Check( ( ScInsertContentsDlg::nPreviousChecks2 & INS_CONT_TRANS ) != 0);
+ aBtnLink.Check( ( ScInsertContentsDlg::nPreviousChecks2 & INS_CONT_LINK ) != 0);
+
+ DisableChecks( aBtnInsAll.IsChecked() );
+
+ aBtnInsAll.SetClickHdl( LINK( this, ScInsertContentsDlg, InsAllHdl ) );
+ aBtnLink.SetClickHdl( LINK( this, ScInsertContentsDlg, LinkBtnHdl ) );
+
+ //-------------
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+USHORT ScInsertContentsDlg::GetInsContentsCmdBits() const
+{
+ ScInsertContentsDlg::nPreviousChecks = 0;
+
+ if ( aBtnInsStrings.IsChecked() )
+ ScInsertContentsDlg::nPreviousChecks = IDF_STRING;
+ if ( aBtnInsNumbers.IsChecked() )
+ ScInsertContentsDlg::nPreviousChecks |= IDF_VALUE;
+ if ( aBtnInsDateTime.IsChecked())
+ ScInsertContentsDlg::nPreviousChecks |= IDF_DATETIME;
+ if ( aBtnInsFormulas.IsChecked())
+ ScInsertContentsDlg::nPreviousChecks |= IDF_FORMULA;
+ if ( aBtnInsNotes.IsChecked() )
+ ScInsertContentsDlg::nPreviousChecks |= IDF_NOTE;
+ if ( aBtnInsAttrs.IsChecked() )
+ ScInsertContentsDlg::nPreviousChecks |= IDF_ATTRIB;
+
+ ScInsertContentsDlg::bPreviousAllCheck = aBtnInsAll.IsChecked();
+
+ return ( (ScInsertContentsDlg::bPreviousAllCheck)
+ ? IDF_ALL
+ : ScInsertContentsDlg::nPreviousChecks );
+}
+
+//------------------------------------------------------------------------
+
+InsCellCmd ScInsertContentsDlg::GetMoveMode()
+{
+ if ( aRbMoveDown.IsChecked() )
+ return INS_CELLSDOWN;
+ if ( aRbMoveRight.IsChecked() )
+ return INS_CELLSRIGHT;
+
+ return INS_NONE;
+}
+
+//------------------------------------------------------------------------
+
+void ScInsertContentsDlg::DisableChecks( BOOL bInsAllChecked )
+{
+ if ( bInsAllChecked )
+ {
+ aBtnInsStrings.Disable();
+ aBtnInsNumbers.Disable();
+ aBtnInsDateTime.Disable();
+ aBtnInsFormulas.Disable();
+ aBtnInsNotes.Disable();
+ aBtnInsAttrs.Disable();
+ }
+ else
+ {
+ aBtnInsStrings.Enable();
+ aBtnInsNumbers.Enable();
+ aBtnInsDateTime.Enable();
+ aBtnInsFormulas.Enable();
+ aBtnInsNotes.Enable();
+ aBtnInsAttrs.Enable();
+ }
+}
+
+// Link in anderes Dokument -> alles andere disabled
+
+void ScInsertContentsDlg::TestModes()
+{
+ if ( bOtherDoc && aBtnLink.IsChecked() )
+ {
+ aBtnSkipEmptyCells.Disable();
+ aBtnTranspose.Disable();
+ aRbNoOp.Disable();
+ aRbAdd.Disable();
+ aRbSub.Disable();
+ aRbMul.Disable();
+ aRbDiv.Disable();
+ aGbOperation.Disable();
+
+ aRbMoveNone.Disable();
+ aRbMoveDown.Disable();
+ aRbMoveRight.Disable();
+ aGbMove.Disable();
+
+ aGbFrame.Disable();
+ aBtnInsAll.Disable();
+ DisableChecks(TRUE);
+ }
+ else
+ {
+ aBtnSkipEmptyCells.Enable();
+ aBtnTranspose.Enable(!bFillMode);
+ aRbNoOp.Enable();
+ aRbAdd.Enable();
+ aRbSub.Enable();
+ aRbMul.Enable();
+ aRbDiv.Enable();
+ aGbOperation.Enable();
+
+ aRbMoveNone.Enable(!bFillMode && !bChangeTrack && !(bMoveDownDisabled && bMoveRightDisabled));
+ aRbMoveDown.Enable(!bFillMode && !bChangeTrack && !bMoveDownDisabled);
+ aRbMoveRight.Enable(!bFillMode && !bChangeTrack && !bMoveRightDisabled);
+ aGbMove.Enable(!bFillMode && !bChangeTrack && !(bMoveDownDisabled && bMoveRightDisabled));
+
+ aGbFrame.Enable();
+ aBtnInsAll.Enable();
+ DisableChecks( aBtnInsAll.IsChecked() );
+ }
+}
+
+void ScInsertContentsDlg::SetOtherDoc( BOOL bSet )
+{
+ if ( bSet != bOtherDoc )
+ {
+ bOtherDoc = bSet;
+ TestModes();
+ if ( bSet )
+ aRbMoveNone.Check(TRUE);
+ }
+}
+
+void ScInsertContentsDlg::SetFillMode( BOOL bSet )
+{
+ if ( bSet != bFillMode )
+ {
+ bFillMode = bSet;
+ TestModes();
+ if ( bSet )
+ aRbMoveNone.Check(TRUE);
+ }
+}
+
+void ScInsertContentsDlg::SetChangeTrack( BOOL bSet )
+{
+ if ( bSet != bChangeTrack )
+ {
+ bChangeTrack = bSet;
+ TestModes();
+ if ( bSet )
+ aRbMoveNone.Check(TRUE);
+ }
+}
+
+void ScInsertContentsDlg::SetCellShiftDisabled( int nDisable )
+{
+ BOOL bDown = ((nDisable & SC_CELL_SHIFT_DISABLE_DOWN) != 0);
+ BOOL bRight = ((nDisable & SC_CELL_SHIFT_DISABLE_RIGHT) != 0);
+ if ( bDown != bMoveDownDisabled || bRight != bMoveRightDisabled )
+ {
+ bMoveDownDisabled = bDown;
+ bMoveRightDisabled = bRight;
+ TestModes();
+ if ( bMoveDownDisabled && aRbMoveDown.IsChecked() )
+ aRbMoveNone.Check(TRUE);
+ if ( bMoveRightDisabled && aRbMoveRight.IsChecked() )
+ aRbMoveNone.Check(TRUE);
+ }
+}
+
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScInsertContentsDlg, InsAllHdl, void*, EMPTY_ARG )
+{
+ DisableChecks( aBtnInsAll.IsChecked() );
+
+ return 0;
+}
+
+IMPL_LINK( ScInsertContentsDlg, LinkBtnHdl, void*, EMPTY_ARG )
+{
+ TestModes();
+
+ return 0;
+}
+
+__EXPORT ScInsertContentsDlg::~ScInsertContentsDlg()
+{
+ ScInsertContentsDlg::nPreviousChecks2 = 0;
+ if(aBtnSkipEmptyCells.IsChecked())
+ ScInsertContentsDlg::nPreviousChecks2 |= INS_CONT_NOEMPTY;
+ if( aBtnTranspose.IsChecked())
+ ScInsertContentsDlg::nPreviousChecks2 |= INS_CONT_TRANS;
+ if( aBtnLink.IsChecked() )
+ ScInsertContentsDlg::nPreviousChecks2 |= INS_CONT_LINK;
+
+ if (!bFillMode) // im FillMode ist None gecheckt und alle 3 disabled
+ {
+ if ( aRbMoveNone.IsChecked() )
+ ScInsertContentsDlg::nPreviousMoveMode = INS_NONE;
+ else if ( aRbMoveDown.IsChecked() )
+ ScInsertContentsDlg::nPreviousMoveMode = INS_CELLSDOWN;
+ else if ( aRbMoveRight.IsChecked() )
+ ScInsertContentsDlg::nPreviousMoveMode = INS_CELLSRIGHT;
+ }
+}
+
+USHORT ScInsertContentsDlg::GetFormulaCmdBits() const
+{
+ ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_NOFUNC;
+ if(aRbAdd.IsChecked())
+ ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_ADD;
+ else if(aRbSub.IsChecked())
+ ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_SUB;
+ else if(aRbMul.IsChecked())
+ ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_MUL;
+ else if(aRbDiv.IsChecked())
+ ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_DIV;
+ // Bits fuer Checkboxen ausblenden
+ return ScInsertContentsDlg::nPreviousFormulaChecks;
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/instbdlg.cxx b/sc/source/ui/miscdlgs/instbdlg.cxx
new file mode 100644
index 000000000000..d3ee913e0b13
--- /dev/null
+++ b/sc/source/ui/miscdlgs/instbdlg.cxx
@@ -0,0 +1,401 @@
+/*************************************************************************
+ *
+ * $RCSfile: instbdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <sfx2/app.hxx>
+#include <sfx2/docfile.hxx>
+#include <svtools/ehdl.hxx>
+#include <svtools/sfxecode.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "global.hxx"
+#include "docsh.hxx"
+#include "viewdata.hxx"
+#include "scresid.hxx"
+#include "instbdlg.hrc"
+#include "globstr.hrc"
+
+
+#define SC_INSTBDLG_CXX
+#include "instbdlg.hxx"
+
+
+
+//==================================================================
+
+ScInsertTableDlg::ScInsertTableDlg( Window* pParent, ScViewData& rData, USHORT nTabCount)
+
+ : ModalDialog ( pParent, ScResId( RID_SCDLG_INSERT_TABLE ) ),
+ //
+ aBtnBefore ( this, ScResId( RB_BEFORE ) ),
+ aBtnBehind ( this, ScResId( RB_BEHIND ) ),
+ aGbPos ( this, ScResId( GB_POSITION ) ),
+ aFtCount ( this, ScResId( FT_COUNT ) ),
+ aNfCount ( this, ScResId( NF_COUNT ) ),
+ aFtName ( this, ScResId( FT_NAME ) ),
+ aEdName ( this, ScResId( ED_TABNAME ) ),
+ aLbTables ( this, ScResId( LB_TABLES ) ),
+ aFtPath ( this, ScResId( FT_PATH ) ),
+ aBtnBrowse ( this, ScResId( BTN_BROWSE ) ),
+ aBtnLink ( this, ScResId( BTN_LINK ) ),
+ aGbTable ( this, ScResId( GB_TABLE ) ),
+ aBtnNew ( this, ScResId( BTN_NEW ) ),
+ aBtnFromFile ( this, ScResId( BTN_FROMFILE ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ rViewData ( rData ),
+ rDoc ( *rData.GetDocument() ),
+ pDocShTables ( NULL ),
+ nSelTabIndex ( 0 ),
+ nTableCount (nTabCount)
+{
+ Init_Impl();
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScInsertTableDlg::~ScInsertTableDlg()
+{
+ if (pDocShTables)
+ pDocShTables->DoClose();
+}
+
+//------------------------------------------------------------------------
+
+void ScInsertTableDlg::Init_Impl()
+{
+ aBtnBrowse .SetClickHdl( LINK( this, ScInsertTableDlg, BrowseHdl_Impl ) );
+ aBtnNew .SetClickHdl( LINK( this, ScInsertTableDlg, ChoiceHdl_Impl ) );
+ aBtnFromFile .SetClickHdl( LINK( this, ScInsertTableDlg, ChoiceHdl_Impl ) );
+ aLbTables .SetSelectHdl( LINK( this, ScInsertTableDlg, SelectHdl_Impl ) );
+ aNfCount .SetModifyHdl( LINK( this, ScInsertTableDlg, CountHdl_Impl));
+ aBtnOk .SetClickHdl( LINK( this, ScInsertTableDlg, DoEnterHdl ));
+ aBtnBefore.Check();
+ aBtnNew.Check();
+ SetNewTable_Impl();
+
+ ScMarkData& rMark = rViewData.GetMarkData();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+
+ aNfCount.SetText( String::CreateFromInt32(nTableCount) );
+
+ if(nTableCount==1)
+ {
+ String aName;
+ rDoc.CreateValidTabName( aName );
+ aEdName.SetText( aName );
+ }
+ else
+ {
+ String aName=aGbTable.GetText();
+ aName.AppendAscii(RTL_CONSTASCII_STRINGPARAM("..."));
+ aEdName.SetText( aName );
+ aFtName.Disable();
+ aEdName.Disable();
+ }
+}
+
+//------------------------------------------------------------------------
+
+short __EXPORT ScInsertTableDlg::Execute()
+{
+ // Parent fuer InsertDocumentDialog und Doc-Manager setzen:
+
+ Window* pOldDefParent = Application::GetDefDialogParent();
+ Application::SetDefDialogParent( this );
+
+ short nRet = ModalDialog::Execute();
+
+ Application::SetDefDialogParent( pOldDefParent );
+
+ return nRet;
+}
+
+//------------------------------------------------------------------------
+
+void ScInsertTableDlg::SetNewTable_Impl()
+{
+ if (aBtnNew.IsChecked() )
+ {
+ aEdName .Enable();
+ aFtName .Enable();
+ aFtCount .Enable();
+ aLbTables .Disable();
+ aFtPath .Disable();
+ aBtnBrowse .Disable();
+ aBtnLink .Disable();
+
+ if(nTableCount==1) aNfCount.Enable();
+ }
+}
+
+//------------------------------------------------------------------------
+
+void ScInsertTableDlg::SetFromTo_Impl()
+{
+ if (aBtnFromFile.IsChecked() )
+ {
+ aEdName .Disable();
+ aFtName .Disable();
+ aFtCount .Disable();
+ aNfCount .Disable();
+ aLbTables .Enable();
+ aFtPath .Enable();
+ aBtnBrowse .Enable();
+ aBtnLink .Enable();
+ }
+}
+
+//------------------------------------------------------------------------
+
+void ScInsertTableDlg::FillTables_Impl( ScDocument* pSrcDoc )
+{
+ aLbTables.SetUpdateMode( FALSE );
+ aLbTables.Clear();
+
+ if ( pSrcDoc )
+ {
+ USHORT nCount = pSrcDoc->GetTableCount();
+ String aName;
+
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ pSrcDoc->GetName( i, aName );
+ aLbTables.InsertEntry( aName );
+ }
+ }
+
+ aLbTables.SetUpdateMode( TRUE );
+
+ if(aLbTables.GetEntryCount()==1)
+ aLbTables.SelectEntryPos(0);
+}
+
+//------------------------------------------------------------------------
+
+const String* ScInsertTableDlg::GetFirstTable( USHORT* pN )
+{
+ const String* pStr = NULL;
+
+ if ( aBtnNew.IsChecked() )
+ {
+ aStrCurSelTable = aEdName.GetText();
+ pStr = &aStrCurSelTable;
+ }
+ else if ( nSelTabIndex < aLbTables.GetSelectEntryCount() )
+ {
+ aStrCurSelTable = aLbTables.GetSelectEntry( 0 );
+ pStr = &aStrCurSelTable;
+ if ( pN )
+ *pN = aLbTables.GetSelectEntryPos( 0 );
+ nSelTabIndex = 1;
+ }
+
+ return pStr;
+}
+
+//------------------------------------------------------------------------
+
+const String* ScInsertTableDlg::GetNextTable( USHORT* pN )
+{
+ const String* pStr = NULL;
+
+ if ( !aBtnNew.IsChecked() && nSelTabIndex < aLbTables.GetSelectEntryCount() )
+ {
+ aStrCurSelTable = aLbTables.GetSelectEntry( nSelTabIndex );
+ pStr = &aStrCurSelTable;
+ if ( pN )
+ *pN = aLbTables.GetSelectEntryPos( nSelTabIndex );
+ nSelTabIndex++;
+ }
+
+ return pStr;
+}
+
+
+//------------------------------------------------------------------------
+// Handler:
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScInsertTableDlg, CountHdl_Impl, NumericField*, EMPTYARG )
+{
+ nTableCount = aNfCount.GetText().ToInt32();
+ if ( nTableCount==1)
+ {
+ String aName;
+ rDoc.CreateValidTabName( aName );
+ aEdName.SetText( aName );
+ aFtName.Enable();
+ aEdName.Enable();
+ }
+ else
+ {
+ String aName=aGbTable.GetText();
+ aName.AppendAscii(RTL_CONSTASCII_STRINGPARAM("..."));
+ aEdName.SetText( aName );
+ aFtName.Disable();
+ aEdName.Disable();
+ }
+
+ DoEnable_Impl();
+ return 0;
+}
+
+//------------------------------------------------------------------------
+IMPL_LINK( ScInsertTableDlg, ChoiceHdl_Impl, RadioButton*, EMPTYARG )
+{
+ if ( aBtnNew.IsChecked() )
+ SetNewTable_Impl();
+ else
+ SetFromTo_Impl();
+
+ DoEnable_Impl();
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScInsertTableDlg, BrowseHdl_Impl, PushButton*, EMPTYARG )
+{
+ // Dialog-Parent ist schon in Execute gesetzt worden
+
+ SfxApplication* pApp = SFX_APP();
+ SfxMedium* pMed = pApp->InsertDocumentDialog( 0, ScDocShell::Factory() );
+
+ if ( pMed )
+ {
+ // ERRCTX_SFX_OPENDOC -> "Fehler beim Laden des Dokumentes"
+ SfxErrorContext aEc( ERRCTX_SFX_OPENDOC, pMed->GetName() );
+
+ if (pDocShTables)
+ pDocShTables->DoClose(); // delete passiert beim Zuweisen auf die Ref
+
+ pDocShTables = new ScDocShell;
+ aDocShTablesRef = pDocShTables;
+ pDocShTables->DoLoad( pMed );
+
+ ULONG nErr = pDocShTables->GetErrorCode();
+ if (nErr)
+ ErrorHandler::HandleError( nErr ); // auch Warnings
+
+ if ( !pDocShTables->GetError() ) // nur Errors
+ {
+ FillTables_Impl( pDocShTables->GetDocument() );
+ aFtPath.SetText( pDocShTables->GetTitle( SFX_TITLE_FULLNAME ) );
+ }
+ else
+ {
+ pDocShTables->DoClose();
+ aDocShTablesRef.Clear();
+ pDocShTables = NULL;
+
+ FillTables_Impl( NULL );
+ aFtPath.SetText( EMPTY_STRING );
+ }
+ }
+
+ DoEnable_Impl();
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScInsertTableDlg, SelectHdl_Impl, MultiListBox*, EMPTYARG )
+{
+ DoEnable_Impl();
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+void ScInsertTableDlg::DoEnable_Impl()
+{
+ if ( aBtnNew.IsChecked() || ( pDocShTables && aLbTables.GetSelectEntryCount() ) )
+ aBtnOk.Enable();
+ else
+ aBtnOk.Disable();
+}
+
+IMPL_LINK( ScInsertTableDlg, DoEnterHdl, PushButton*, EMPTYARG )
+{
+ if(nTableCount > 1 || rDoc.ValidTabName(aEdName.GetText()))
+ {
+ EndDialog(RET_OK);
+ }
+ else
+ {
+ String aErrMsg ( ScGlobal::GetRscString( STR_INVALIDTABNAME ) );
+ USHORT nRet = ErrorBox( this,WinBits( WB_OK | WB_DEF_OK ),aErrMsg).Execute();
+ }
+ return 0;
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/instbdlg.src b/sc/source/ui/miscdlgs/instbdlg.src
new file mode 100644
index 000000000000..3ee4c0f5e895
--- /dev/null
+++ b/sc/source/ui/miscdlgs/instbdlg.src
@@ -0,0 +1,398 @@
+/*************************************************************************
+ *
+ * $RCSfile: instbdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "instbdlg.hrc"
+ModalDialog RID_SCDLG_INSERT_TABLE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 274 , 190 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Tabelle einfügen : Tabelle einf³gen */
+ Text = "Tabelle einfügen" ;
+ Text [ ENGLISH ] = "Insert table" ;
+ Text [ DANISH ] = "Indsæt regneark" ;
+ Text [ ENGLISH_US ] = "Insert Sheet" ;
+ Text [ SPANISH ] = "Insertar hoja" ;
+ Text [ FRENCH ] = "Insérer une feuille" ;
+ Text [ ITALIAN ] = "Inserisci tabella" ;
+ Text [ DUTCH ] = "Werkblad invoegen" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Tabelle einfügen" ;
+ Text [ SWEDISH ] = "Infoga tabell" ;
+ Text [ PORTUGUESE ] = "Inserir folha" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ RadioButton BTN_NEW
+ {
+ Pos = MAP_APPFONT ( 12 , 58 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "Neu ~erstellen" ;
+ Text [ ENGLISH ] = "~Create new" ;
+ Text [ DANISH ] = "Opret nyt" ;
+ Text [ ENGLISH_US ] = "~New sheet" ;
+ Text [ SPANISH ] = "~Crear una nueva" ;
+ Text [ FRENCH ] = "Créer une nouvelle feuille" ;
+ Text [ ITALIAN ] = "Crea nuovo" ;
+ Text [ DUTCH ] = "~Nieuw" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Neu erstellen" ;
+ Text [ SWEDISH ] = "Skapa ~ny" ;
+ Text [ PORTUGUESE ] = "Criar ~novo" ;
+ Text[ chinese_simplified ] = "н¨¹¤×÷±í(~N)";
+ Text[ russian ] = "Ñîçäàòü íîâûé ëèñò";
+ Text[ polish ] = "Utwórz ponownie";
+ Text[ japanese ] = "V‚µ‚­ì¬(~N)";
+ Text[ chinese_traditional ] = "·s«Ø¤u§@ªí(~N)";
+ Text[ arabic ] = "ÅäÔÇÁ ãä ÌÏíÏ";
+ Text[ greek ] = "Äçìéïõñãßá";
+ Text[ korean ] = "»õ ½ÃÆ®(~N)";
+ Text[ turkish ] = "~Yeni tablo";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_FROMFILE
+ {
+ Pos = MAP_APPFONT ( 12 , 104 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Aus Datei erstellen" ;
+ Text [ ENGLISH ] = "F~rom file" ;
+ Text [ DANISH ] = "Opret fra fil" ;
+ Text [ ENGLISH_US ] = "~From file" ;
+ Text [ SPANISH ] = "~A partir de archivo" ;
+ Text [ FRENCH ] = "~Création à partir d'un fichier" ;
+ Text [ ITALIAN ] = "Creare da file" ;
+ Text [ DUTCH ] = "~Uit bestand vervaardigen" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Aus Datei erstellen" ;
+ Text [ SWEDISH ] = "Skapa från f~il" ;
+ Text [ PORTUGUESE ] = "~Criar a partir do ficheiro" ;
+ Text[ chinese_simplified ] = "´ÓÎļþ´´½¨(~F)";
+ Text[ russian ] = "Ñîçäàòü èç ôàéëà";
+ Text[ polish ] = "Utwórz z pliku";
+ Text[ japanese ] = "̧²Ù‚©‚çì¬(~F)";
+ Text[ chinese_traditional ] = "±qÀɮ׫ثإß(~F)";
+ Text[ arabic ] = "ÅäÔÇÁ ãä ÇáãáÝ";
+ Text[ greek ] = "Äçìéïõñãßá áðü áñ÷åßï";
+ Text[ korean ] = "ÆÄÀϷκÎÅÍ(~F)";
+ Text[ turkish ] = "~Dosyadan oluþtur";
+ Text[ language_user1 ] = " ";
+ };
+ MultiListBox LB_TABLES
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 30 , 117 ) ;
+ Size = MAP_APPFONT ( 110 , 48 ) ;
+ AutoHScroll = TRUE ;
+ };
+ PushButton BTN_BROWSE
+ {
+ Pos = MAP_APPFONT ( 146 , 117 ) ;
+ Size = MAP_APPFONT ( 60 , 14 ) ;
+ Text = "~Durchsuchen..." ;
+ Text [ ENGLISH ] = "~Browse..." ;
+ Text [ DANISH ] = "Gennemse..." ;
+ Text [ ENGLISH_US ] = "~Browse..." ;
+ Text [ SPANISH ] = "E~xaminar..." ;
+ Text [ FRENCH ] = "~Parcourir..." ;
+ Text [ ITALIAN ] = "~Sfoglia..." ;
+ Text [ DUTCH ] = "~Bladeren..." ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Durchsuchen..." ;
+ Text [ SWEDISH ] = "~Genomsök..." ;
+ Text [ PORTUGUESE ] = "~Pesquisar" ;
+ Text[ chinese_simplified ] = "ä¯ÀÀ(~B)...";
+ Text[ russian ] = "Îáçîð...";
+ Text[ polish ] = "Przegl¹d~aj...";
+ Text[ japanese ] = "ŒŸõ(~B)...";
+ Text[ chinese_traditional ] = "ÂsÄý(~B)...";
+ Text[ arabic ] = "ÇÓÊÚÑÇÖ...";
+ Text[ greek ] = "ÁíáæÞôçóç...";
+ Text[ korean ] = "ã¾Æº¸±â(~B)...";
+ Text[ turkish ] = "~Tara...";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_LINK
+ {
+ Pos = MAP_APPFONT ( 146 , 135 ) ;
+ Size = MAP_APPFONT ( 54 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ver~knüpfen : Ver~kn³pfen */
+ Text = "Ver~knüpfen" ;
+ Text [ ENGLISH ] = "Lin~k" ;
+ Text [ DANISH ] = "Kæd" ;
+ Text [ ENGLISH_US ] = "Lin~k " ;
+ Text [ SPANISH ] = "~Vincular" ;
+ Text [ FRENCH ] = "~Lier" ;
+ Text [ ITALIAN ] = "~Collega" ;
+ Text [ DUTCH ] = "~Koppelen" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Verknüpfen" ;
+ Text [ SWEDISH ] = "Län~ka" ;
+ Text [ PORTUGUESE ] = "~Ligar" ;
+ Text[ chinese_simplified ] = "Á´½Ó(~K)";
+ Text[ russian ] = "Ñâÿçàòü";
+ Text[ polish ] = "Po³¹cz";
+ Text[ japanese ] = "Øݸ(~K)";
+ Text[ chinese_traditional ] = "±¶®|(~K)";
+ Text[ arabic ] = "ÑÈØ";
+ Text[ greek ] = "Óýíäåóç";
+ Text[ korean ] = "¿¬°á(~K)";
+ Text[ turkish ] = "Bað~la";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_TABNAME
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 86 ) ;
+ Size = MAP_APPFONT ( 135 , 12 ) ;
+ };
+ FixedText FT_PATH
+ {
+ Pos = MAP_APPFONT ( 30 , 170 ) ;
+ Size = MAP_APPFONT ( 176 , 10 ) ;
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 218 , 8 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 218 , 25 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 218 , 49 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ GroupBox GB_POSITION
+ {
+ Pos = MAP_APPFONT ( 6 , 4 ) ;
+ Size = MAP_APPFONT ( 206 , 38 ) ;
+ Text = "Position" ;
+ Text [ ENGLISH ] = "Position" ;
+ Text [ english_us ] = "Position" ;
+ Text [ portuguese_brazilian ] = "Position" ;
+ Text [ swedish ] = "Position" ;
+ Text [ danish ] = "Placering" ;
+ Text [ italian ] = "Posizione" ;
+ Text [ spanish ] = "Posición" ;
+ Text [ french ] = "Position" ;
+ Text [ dutch ] = "Positie" ;
+ Text [ portuguese ] = "Posição" ;
+ Text[ chinese_simplified ] = "λÖÃ";
+ Text[ russian ] = "Ïîëîæåíèå";
+ Text[ polish ] = "Pozycja";
+ Text[ japanese ] = "ˆÊ’u";
+ Text[ chinese_traditional ] = "¦ì¸m";
+ Text[ arabic ] = "ÇáãæÖÚ";
+ Text[ greek ] = "ÈÝóç";
+ Text[ korean ] = "À§Ä¡";
+ Text[ turkish ] = "Konum";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_BEHIND
+ {
+ Pos = MAP_APPFONT ( 12 , 28 ) ;
+ Size = MAP_APPFONT ( 115 , 10 ) ;
+ Text = "~Nach aktueller Tabelle" ;
+ Text [ ENGLISH ] = "After selected sheet" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~Depois folha seleccionada" ;
+ Text [ english_us ] = "~After current sheet" ;
+ Text [ portuguese_brazilian ] = "~Nach aktueller Tabelle" ;
+ Text [ swedish ] = "~Efter aktuell tabell" ;
+ Text [ danish ] = "Efter aktuelt ark" ;
+ Text [ italian ] = "~Dopo la tabella corrente" ;
+ Text [ spanish ] = "Detrás de la ~hoja actual" ;
+ Text [ french ] = "~Après la feuille courante" ;
+ Text [ dutch ] = "~Na actuele tabel" ;
+ Text[ chinese_simplified ] = "ÔÚµ±Ç°µÄ¹¤×÷±íÖ®ºó(~A)";
+ Text[ russian ] = "Ïîñëå òåêóùåé òàáëèöû";
+ Text[ polish ] = "Za ~zaznaczonym arkuszem";
+ Text[ japanese ] = "•\\Ž¦’†‚Ì•\\‚ÌŒã‚É(~A)";
+ Text[ chinese_traditional ] = "¦b·í«eªº¤u§@ªí¤§«á(~A)";
+ Text[ arabic ] = "ÈÚÏ ÇáÌÏæá ÇáÍÇáí";
+ Text[ greek ] = "ÌåôÜ áðü ôïí åíåñãü ðßíáêá";
+ Text[ korean ] = "ÇöÀç ½ÃÆ® µÚ·Î(~A)";
+ Text[ turkish ] = "Açýk tablonun ~arkasýna";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton RB_BEFORE
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 101 , 10 ) ;
+ Text = "~Vor aktueller Tabelle" ;
+ Text [ ENGLISH ] = "Before selected sheet" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~Antes da folha seleccionada" ;
+ Text [ english_us ] = "B~efore current sheet" ;
+ Text [ portuguese_brazilian ] = "~Vor aktueller Tabelle" ;
+ Text [ swedish ] = "~Före aktuell tabell" ;
+ Text [ danish ] = "Før aktuelt ark" ;
+ Text [ italian ] = "~Prima della tabella corrente" ;
+ Text [ spanish ] = "~Delante de la hoja actual" ;
+ Text [ french ] = "A~vant la feuille courante" ;
+ Text [ dutch ] = "~Voor actuele tabel" ;
+ Text[ chinese_simplified ] = "ÔÚµ±Ç°µÄ¹¤×÷±í֮ǰ(~S)";
+ Text[ russian ] = "Ïåðåä òåêóùåé òàáëèöåé";
+ Text[ polish ] = "Przed zaz~naczonym arkuszem";
+ Text[ japanese ] = "•\\Ž¦’†‚Ì•\\‚Ì‘O‚É(~S)";
+ Text[ chinese_traditional ] = "¦b·í«eªº¤u§@ªí¤§«e(~S)";
+ Text[ arabic ] = "ÞÈá ÇáÌÏæá ÇáÍÇáí";
+ Text[ greek ] = "Ðñéí áðü ôïí åíåñãü ðßíáêá";
+ Text[ korean ] = "ÇöÀç ½ÃÆ® Àü¿¡(~E)";
+ Text[ turkish ] = "Açýk tablonun ~önüne";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_TABLE
+ {
+ Pos = MAP_APPFONT ( 6 , 46 ) ;
+ Size = MAP_APPFONT ( 206 , 139 ) ;
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ english_us ] = "Create sheet" ;
+ Text [ portuguese_brazilian ] = "Tabelle" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ danish ] = "Ark" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ spanish ] = "Hoja" ;
+ Text [ french ] = "Feuille" ;
+ Text [ dutch ] = "Tabel" ;
+ Text [ portuguese ] = "Folha" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ russian ] = "Òàáëèöà";
+ Text[ polish ] = "Arkusz";
+ Text[ japanese ] = "•\\‚Ìì¬";
+ Text[ chinese_traditional ] = "¤u§@ªí";
+ Text[ arabic ] = "ÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "½ÃÆ® ¸¸µé±â";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField NF_COUNT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 70 ) ;
+ Size = MAP_APPFONT ( 23 , 12 ) ;
+ TabStop = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 99 ;
+ };
+ FixedText FT_COUNT
+ {
+ Pos = MAP_APPFONT ( 30 , 71 ) ;
+ Size = MAP_APPFONT ( 38 , 10 ) ;
+ Text = "An~zahl" ;
+ Text [ ENGLISH ] = "Count" ;
+ Text [ portuguese ] = "~N° de folhas" ;
+ Text [ english_us ] = "N~o. of sheets" ;
+ Text [ portuguese_brazilian ] = "An~zahl" ;
+ Text [ swedish ] = "An~tal" ;
+ Text [ danish ] = "Antal" ;
+ Text [ italian ] = "~Numero" ;
+ Text [ spanish ] = "~Núm. de hojas" ;
+ Text [ french ] = "N~ombre" ;
+ Text [ dutch ] = "Aan~tal" ;
+ Text[ chinese_simplified ] = "ÊýÄ¿(~O)";
+ Text[ russian ] = "×èñëî ëèñòîâ";
+ Text[ polish ] = "IloϾ";
+ Text[ japanese ] = "•\\”(~O)";
+ Text[ chinese_traditional ] = "¼Æ¥Ø(~O)";
+ Text[ arabic ] = "ÇáÚÏÏ";
+ Text[ greek ] = "Áñé~èìüò";
+ Text[ korean ] = "½ÃÆ® ¹øÈ£(~O)";
+ Text[ turkish ] = "A~det";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_NAME
+ {
+ Pos = MAP_APPFONT ( 30 , 87 ) ;
+ Size = MAP_APPFONT ( 38 , 10 ) ;
+ Text = "Na~me" ;
+ Text [ ENGLISH ] = "Name" ;
+ Text[ english_us ] = "Na~me";
+ Text[ portuguese ] = "No~me";
+ Text[ russian ] = "Èìÿ";
+ Text[ greek ] = "¼íï~ìá";
+ Text[ dutch ] = "~Naam";
+ Text[ french ] = "No~m";
+ Text[ spanish ] = "No~mbre";
+ Text[ italian ] = "No~me";
+ Text[ danish ] = "Navn";
+ Text[ swedish ] = "Na~mn";
+ Text[ polish ] = "Nazwa";
+ Text[ portuguese_brazilian ] = "Name";
+ Text[ japanese ] = "–¼‘O(~N)";
+ Text[ korean ] = "Name";
+ Text[ chinese_simplified ] = "Ãû³Æ(~M)";
+ Text[ chinese_traditional ] = "¦WºÙ";
+ Text[ turkish ] = "~Ad";
+ Text[ arabic ] = "ÇáÇÓã";
+ };
+ Text[ chinese_simplified ] = "²åÈ빤×÷±í";
+ Text[ russian ] = "Âñòàâèòü òàáëèöó";
+ Text[ polish ] = "Wstaw arkusz";
+ Text[ japanese ] = "•\\‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¤u§@ªí";
+ Text[ arabic ] = "ÅÏÑÇÌ ÌÏæá";
+ Text[ greek ] = "ÅéóáãùãÞ ðßíáêá";
+ Text[ korean ] = "½ÃÆ® »ðÀÔ";
+ Text[ turkish ] = "Tablo ekle";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/miscdlgs/lbseldlg.cxx b/sc/source/ui/miscdlgs/lbseldlg.cxx
new file mode 100644
index 000000000000..f6e65c48378c
--- /dev/null
+++ b/sc/source/ui/miscdlgs/lbseldlg.cxx
@@ -0,0 +1,141 @@
+/*************************************************************************
+ *
+ * $RCSfile: lbseldlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <vcl/msgbox.hxx>
+
+#include "lbseldlg.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+//==================================================================
+
+ScSelEntryDlg::ScSelEntryDlg( Window* pParent,
+ USHORT nResId,
+ const String& aTitle,
+ const String& aLbTitle,
+ List& aEntryList ) :
+ ModalDialog ( pParent, ScResId( nResId ) ),
+ //
+ aLb ( this, ScResId( LB_ENTRYLIST ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aFtLbTitle ( this, ScResId( FT_LABEL ) )
+{
+ SetText( aTitle );
+ aFtLbTitle.SetText( aLbTitle );
+ aLb.Clear();
+ aLb.SetDoubleClickHdl( LINK( this, ScSelEntryDlg, DblClkHdl ) );
+
+ void* pListEntry = aEntryList.First();
+ while ( pListEntry )
+ {
+ aLb.InsertEntry( *((String*)pListEntry ) );
+ pListEntry = aEntryList.Next();
+ }
+
+ if ( aLb.GetEntryCount() > 0 )
+ aLb.SelectEntryPos( 0 );
+
+ //-------------
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+String ScSelEntryDlg::GetSelectEntry() const
+{
+ return aLb.GetSelectEntry();
+}
+
+//------------------------------------------------------------------------
+
+USHORT ScSelEntryDlg::GetSelectEntryPos() const
+{
+ return aLb.GetSelectEntryPos();
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( ScSelEntryDlg, DblClkHdl, void *, EMPTYARG )
+{
+ EndDialog( RET_OK );
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScSelEntryDlg, DblClkHdl, void *, EMPTYARG )
+
+//------------------------------------------------------------------------
+
+__EXPORT ScSelEntryDlg::~ScSelEntryDlg()
+{
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/makefile.mk b/sc/source/ui/miscdlgs/makefile.mk
new file mode 100644
index 000000000000..826d192d803a
--- /dev/null
+++ b/sc/source/ui/miscdlgs/makefile.mk
@@ -0,0 +1,126 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=miscdlgs
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..$/pch$/ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ delcldlg.cxx inscldlg.cxx \
+ delcodlg.cxx inscodlg.cxx \
+ strindlg.cxx mtrindlg.cxx \
+ lbseldlg.cxx filldlg.cxx \
+ autofmt.cxx solvrdlg.cxx \
+ mvtabdlg.cxx groupdlg.cxx \
+ tabopdlg.cxx crdlg.cxx \
+ namecrea.cxx namepast.cxx \
+ teamdlg.cxx textdlgs.cxx \
+ chartdlg.cxx anyrefdg.cxx \
+ crnrdlg.cxx shtabdlg.cxx \
+ instbdlg.cxx acredlin.cxx \
+ highred.cxx simpref.cxx \
+ redcom.cxx
+
+SLOFILES = \
+ $(SLO)$/delcldlg.obj $(SLO)$/inscldlg.obj \
+ $(SLO)$/delcodlg.obj $(SLO)$/inscodlg.obj \
+ $(SLO)$/strindlg.obj $(SLO)$/mtrindlg.obj \
+ $(SLO)$/lbseldlg.obj $(SLO)$/filldlg.obj \
+ $(SLO)$/autofmt.obj $(SLO)$/solvrdlg.obj \
+ $(SLO)$/mvtabdlg.obj $(SLO)$/groupdlg.obj \
+ $(SLO)$/tabopdlg.obj $(SLO)$/crdlg.obj \
+ $(SLO)$/namecrea.obj $(SLO)$/namepast.obj \
+ $(SLO)$/teamdlg.obj $(SLO)$/textdlgs.obj \
+ $(SLO)$/chartdlg.obj $(SLO)$/anyrefdg.obj \
+ $(SLO)$/crnrdlg.obj $(SLO)$/shtabdlg.obj \
+ $(SLO)$/instbdlg.obj $(SLO)$/acredlin.obj \
+ $(SLO)$/highred.obj $(SLO)$/simpref.obj \
+ $(SLO)$/redcom.obj
+
+SRCFILES = \
+ instbdlg.src acredlin.src \
+ highred.src
+
+NOOPTFILES=\
+ $(SLO)$/chartdlg.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/miscdlgs/mtrindlg.cxx b/sc/source/ui/miscdlgs/mtrindlg.cxx
new file mode 100644
index 000000000000..9c031d8a3e89
--- /dev/null
+++ b/sc/source/ui/miscdlgs/mtrindlg.cxx
@@ -0,0 +1,218 @@
+/*************************************************************************
+ *
+ * $RCSfile: mtrindlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "mtrindlg.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+//==================================================================
+
+ScMetricInputDlg::ScMetricInputDlg( Window* pParent,
+ USHORT nResId,
+ long nCurrent,
+ long nDefault,
+ FieldUnit eFUnit,
+ USHORT nDecimals,
+ long nMaximum,
+ long nMinimum,
+ long nFirst,
+ long nLast,
+ long nSpinSize )
+
+ : ModalDialog ( pParent, ScResId( nResId ) ),
+ //
+ aEdValue ( this, ScResId( ED_VALUE ) ),
+ aBtnDefVal ( this, ScResId( BTN_DEFVAL ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aFtEditTitle ( this, ScResId( FT_LABEL ) )
+{
+ //SetText( rTitle );
+ //
+ //aFtEditTitle.SetText( rEditTitle );
+ CalcPositions();
+ aBtnDefVal.SetClickHdl ( LINK( this, ScMetricInputDlg, SetDefValHdl ) );
+ aEdValue. SetModifyHdl( LINK( this, ScMetricInputDlg, ModifyHdl ) );
+
+ aEdValue.SetUnit ( eFUnit );
+ aEdValue.SetDecimalDigits ( nDecimals );
+ aEdValue.SetMax ( aEdValue.Normalize( nMaximum ), FUNIT_TWIP );
+ aEdValue.SetMin ( aEdValue.Normalize( nMinimum ), FUNIT_TWIP );
+ aEdValue.SetLast ( aEdValue.Normalize( nLast ), FUNIT_TWIP );
+ aEdValue.SetFirst ( aEdValue.Normalize( nFirst ), FUNIT_TWIP );
+ aEdValue.SetSpinSize ( aEdValue.Normalize( nSpinSize ) );
+ aEdValue.SetValue ( aEdValue.Normalize( nDefault ), FUNIT_TWIP );
+ nDefaultValue = aEdValue.GetValue();
+ aEdValue.SetValue ( aEdValue.Normalize( nCurrent ), FUNIT_TWIP );
+ nCurrentValue = aEdValue.GetValue();
+ aBtnDefVal.Check( nCurrentValue == nDefaultValue );
+
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScMetricInputDlg::~ScMetricInputDlg()
+{
+}
+
+//------------------------------------------------------------------------
+
+long ScMetricInputDlg::GetInputValue( FieldUnit eUnit ) const
+{
+/*
+ mit Nachkommastellen:
+
+ double nVal = aEdValue.GetValue( eUnit );
+ USHORT nDecs = aEdValue.GetDecimalDigits();
+ double nFactor = 0.0;
+
+ // static long ImpPower10( USHORT nDecs )
+ {
+ nFactor = 1.0;
+
+ for ( USHORT i=0; i < nDecs; i++ )
+ nFactor *= 10.0;
+ }
+
+ return nVal / nFactor;
+*/
+ // erstmal Nachkommastellen abschneiden - nich so doll...
+
+ return aEdValue.Denormalize( aEdValue.GetValue( eUnit ) );
+}
+
+//------------------------------------------------------------------------
+
+void ScMetricInputDlg::CalcPositions()
+{
+ MapMode oldMode = GetMapMode();
+ SetMapMode( MAP_APPFONT );
+
+ Size aDlgSize = GetOutputSizePixel();
+ Size aFtSize = aFtEditTitle.GetSizePixel();
+ Point aNewPos;
+
+ aFtSize.Width() = aFtEditTitle.GetTextWidth(aFtEditTitle.GetText());
+ aFtEditTitle.SetSizePixel( aFtSize );
+
+ aNewPos.Y() = aEdValue.GetPosPixel().Y();
+ aNewPos.X() = aFtEditTitle.GetPosPixel().X();
+ aNewPos.X() += aFtEditTitle.GetSizePixel().Width();
+ aNewPos.X() += LogicToPixel( Point(6,0) ).X();
+ aEdValue.SetPosPixel( aNewPos );
+
+ aNewPos.Y() = aBtnDefVal.GetPosPixel().Y();
+ aBtnDefVal.SetPosPixel( aNewPos );
+
+ aNewPos.Y() = aBtnOk.GetPosPixel().Y();
+ aNewPos.X() += aEdValue.GetSizePixel().Width();
+ aNewPos.X() += LogicToPixel( Point(6,0) ).X();
+ aBtnOk.SetPosPixel( aNewPos );
+ aNewPos.Y() = aBtnCancel.GetPosPixel().Y();
+ aBtnCancel.SetPosPixel( aNewPos );
+ aNewPos.Y() = aBtnHelp.GetPosPixel().Y();
+ aBtnHelp.SetPosPixel( aNewPos );
+
+ aNewPos.X() += aBtnOk.GetSizePixel().Width();
+ aNewPos.X() += LogicToPixel( Point(6,0) ).X();
+ aDlgSize.Width() = aNewPos.X();
+ SetOutputSizePixel( aDlgSize );
+
+ SetMapMode( oldMode );
+}
+
+//------------------------------------------------------------------------
+// Handler:
+
+IMPL_LINK( ScMetricInputDlg, SetDefValHdl, CheckBox *, EMPTYARG )
+{
+ if ( aBtnDefVal.IsChecked() )
+ {
+ nCurrentValue = aEdValue.GetValue();
+ aEdValue.SetValue( nDefaultValue );
+ }
+ else
+ aEdValue.SetValue( nCurrentValue );
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( ScMetricInputDlg, ModifyHdl, MetricField *, EMPTYARG )
+{
+ aBtnDefVal.Check( nDefaultValue == aEdValue.GetValue() );
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScMetricInputDlg, ModifyHdl, MetricField *, EMPTYARG )
+
+
+
diff --git a/sc/source/ui/miscdlgs/mvtabdlg.cxx b/sc/source/ui/miscdlgs/mvtabdlg.cxx
new file mode 100644
index 000000000000..8182fc98e949
--- /dev/null
+++ b/sc/source/ui/miscdlgs/mvtabdlg.cxx
@@ -0,0 +1,226 @@
+/*************************************************************************
+ *
+ * $RCSfile: mvtabdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <vcl/msgbox.hxx>
+
+#include "mvtabdlg.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "miscdlgs.hrc"
+#include "global.hxx"
+#include "scresid.hxx"
+#include "globstr.hrc"
+
+//==================================================================
+
+ScMoveTableDlg::ScMoveTableDlg( Window* pParent )
+
+ : ModalDialog ( pParent, ScResId( RID_SCDLG_MOVETAB ) ),
+ //
+ aLbDoc ( this, ScResId( LB_DEST ) ),
+ aLbTable ( this, ScResId( LB_INSERT ) ),
+ aFtDoc ( this, ScResId( FT_DEST ) ),
+ aFtTable ( this, ScResId( FT_INSERT ) ),
+ aBtnCopy ( this, ScResId( BTN_COPY ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ //
+ nDocument ( 0 ),
+ nTable ( 0 ),
+ bCopyTable ( FALSE )
+{
+ Init();
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScMoveTableDlg::~ScMoveTableDlg()
+{
+}
+
+//------------------------------------------------------------------------
+
+USHORT ScMoveTableDlg::GetSelectedDocument () const { return nDocument; }
+
+USHORT ScMoveTableDlg::GetSelectedTable () const { return nTable; }
+
+BOOL ScMoveTableDlg::GetCopyTable () const { return bCopyTable; }
+
+void ScMoveTableDlg::SetCopyTable(BOOL bFlag)
+{
+ aBtnCopy.Check(bFlag);
+}
+void ScMoveTableDlg::EnableCopyTable(BOOL bFlag)
+{
+ if(bFlag)
+ aBtnCopy.Enable();
+ else
+ aBtnCopy.Disable();
+}
+
+
+//------------------------------------------------------------------------
+
+void __EXPORT ScMoveTableDlg::Init()
+{
+ aBtnOk.SetClickHdl ( LINK( this, ScMoveTableDlg, OkHdl ) );
+ aLbDoc.SetSelectHdl ( LINK( this, ScMoveTableDlg, SelHdl ) );
+ aBtnCopy.Check( FALSE );
+ InitDocListBox();
+ SelHdl( &aLbDoc );
+}
+
+//------------------------------------------------------------------------
+
+void ScMoveTableDlg::InitDocListBox()
+{
+ SfxObjectShell* pSh = SfxObjectShell::GetFirst();
+ ScDocShell* pScSh = NULL;
+ ScDocument* pDoc = NULL;
+ USHORT nSelPos = 0;
+ USHORT i = 0;
+
+ aLbDoc.Clear();
+ aLbDoc.SetUpdateMode( FALSE );
+
+ while ( pSh )
+ {
+ pScSh = PTR_CAST( ScDocShell, pSh );
+
+ if ( pScSh )
+ {
+ if ( pScSh == SfxObjectShell::Current() )
+ nSelPos = i;
+
+ aLbDoc.InsertEntry( pScSh->GetTitle(), i );
+ aLbDoc.SetEntryData( i, (void*)pScSh->GetDocument() );
+
+ i++;
+ }
+ pSh = SfxObjectShell::GetNext( *pSh );
+ }
+
+ aLbDoc.SetUpdateMode( TRUE );
+ aLbDoc.InsertEntry( String( ScResId( STR_NEWDOC ) ) );
+ aLbDoc.SelectEntryPos( nSelPos );
+}
+
+
+//------------------------------------------------------------------------
+// Handler:
+
+IMPL_LINK( ScMoveTableDlg, OkHdl, void *, EMPTYARG )
+{
+ USHORT nDocSel = aLbDoc.GetSelectEntryPos();
+ USHORT nDocLast = aLbDoc.GetEntryCount()-1;
+ USHORT nTabSel = aLbTable.GetSelectEntryPos();
+ USHORT nTabLast = aLbTable.GetEntryCount()-1;
+
+ nDocument = (nDocSel != nDocLast) ? nDocSel : SC_DOC_NEW;
+ nTable = (nTabSel != nTabLast) ? nTabSel : SC_TAB_APPEND;
+ bCopyTable = aBtnCopy.IsChecked();
+ EndDialog( RET_OK );
+
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScMoveTableDlg, SelHdl, ListBox *, pLb )
+{
+ if ( pLb == &aLbDoc )
+ {
+ ScDocument* pDoc = (ScDocument*)
+ aLbDoc.GetEntryData( aLbDoc.GetSelectEntryPos() );
+ USHORT nLast = 0;
+ String aName;
+
+ aLbTable.Clear();
+ aLbTable.SetUpdateMode( FALSE );
+ if ( pDoc )
+ {
+ nLast = pDoc->GetTableCount()-1;
+ for ( USHORT i=0; i<=nLast; i++ )
+ {
+ pDoc->GetName( i, aName );
+ aLbTable.InsertEntry( aName, i );
+ }
+ }
+ aLbTable.InsertEntry( ScGlobal::GetRscString(STR_MOVE_TO_END) );
+ aLbTable.SetUpdateMode( TRUE );
+ aLbTable.SelectEntryPos( 0 );
+ }
+
+ return 0;
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/namecrea.cxx b/sc/source/ui/miscdlgs/namecrea.cxx
new file mode 100644
index 000000000000..5aa4ab6a6538
--- /dev/null
+++ b/sc/source/ui/miscdlgs/namecrea.cxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * $RCSfile: namecrea.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "namecrea.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+//==================================================================
+
+ScNameCreateDlg::ScNameCreateDlg( Window * pParent, USHORT nFlags )
+ : ModalDialog( pParent, ScResId(RID_SCDLG_NAMES_CREATE) ),
+ aTopBox ( this, ScResId( BTN_TOP ) ),
+ aLeftBox ( this, ScResId( BTN_LEFT ) ),
+ aBottomBox ( this, ScResId( BTN_BOTTOM ) ),
+ aRightBox ( this, ScResId( BTN_RIGHT ) ),
+ aOKButton ( this, ScResId( BTN_OK ) ),
+ aCancelButton ( this, ScResId( BTN_CANCEL ) ),
+ aHelpButton ( this, ScResId( BTN_HELP ) ),
+ aGroupBox ( this, ScResId( GB_FRAME ) )
+{
+ aTopBox.Check ( (nFlags & NAME_TOP) ? TRUE : FALSE );
+ aLeftBox.Check ( (nFlags & NAME_LEFT) ? TRUE : FALSE );
+ aBottomBox.Check( (nFlags & NAME_BOTTOM)? TRUE : FALSE );
+ aRightBox.Check ( (nFlags & NAME_RIGHT) ? TRUE : FALSE );
+
+ FreeResource();
+}
+
+//------------------------------------------------------------------
+
+USHORT ScNameCreateDlg::GetFlags() const
+{
+ USHORT nResult = 0;
+
+ nResult |= aTopBox.IsChecked() ? NAME_TOP: 0 ;
+ nResult |= aLeftBox.IsChecked() ? NAME_LEFT: 0 ;
+ nResult |= aBottomBox.IsChecked() ? NAME_BOTTOM: 0 ;
+ nResult |= aRightBox.IsChecked() ? NAME_RIGHT: 0 ;
+
+ return nResult;
+}
+
+
+
+
diff --git a/sc/source/ui/miscdlgs/namepast.cxx b/sc/source/ui/miscdlgs/namepast.cxx
new file mode 100644
index 000000000000..7e1f0a647cc3
--- /dev/null
+++ b/sc/source/ui/miscdlgs/namepast.cxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: namepast.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "namepast.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+#include "rangenam.hxx"
+
+
+//==================================================================
+
+ScNamePasteDlg::ScNamePasteDlg( Window * pParent, const ScRangeName* pList, BOOL bInsList )
+ : ModalDialog( pParent, ScResId( RID_SCDLG_NAMES_PASTE ) ),
+ aLabelText ( this, ScResId( FT_LABEL ) ),
+ aNameList ( this, ScResId( LB_ENTRYLIST ) ),
+ aOKButton ( this, ScResId( BTN_OK ) ),
+ aCancelButton ( this, ScResId( BTN_CANCEL ) ),
+ aHelpButton ( this, ScResId( BTN_HELP ) ),
+ aInsListButton ( this, ScResId( BTN_ADD ) )
+{
+ if( ! bInsList )
+ aInsListButton.Disable();
+
+ aInsListButton.SetClickHdl( LINK( this,ScNamePasteDlg,ButtonHdl) );
+ aOKButton.SetClickHdl( LINK( this,ScNamePasteDlg,ButtonHdl) );
+ aNameList.SetSelectHdl( LINK( this,ScNamePasteDlg,ListSelHdl) );
+ aNameList.SetDoubleClickHdl( LINK( this,ScNamePasteDlg,ListDblClickHdl) );
+
+ USHORT nCnt = pList->GetCount();
+ String aText;
+
+ for( USHORT i=0 ; i<nCnt ; i++ )
+ {
+ ScRangeData* pData = (*pList)[ i ];
+
+ if( pData )
+ {
+ if ( !pData->HasType( RT_DATABASE )
+ && !pData->HasType( RT_SHARED ) )
+ {
+ pData->GetName( aText );
+ aNameList.InsertEntry( aText );
+ }
+ }
+ }
+
+ ListSelHdl( &aNameList );
+
+ FreeResource();
+}
+
+//------------------------------------------------------------------
+
+IMPL_LINK( ScNamePasteDlg, ButtonHdl, Button *, pButton )
+{
+ if( pButton == &aInsListButton )
+ {
+ EndDialog( BTN_PASTE_LIST );
+ }
+ else if( pButton == &aOKButton )
+ {
+ EndDialog( BTN_PASTE_NAME );
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------
+
+IMPL_LINK( ScNamePasteDlg, ListSelHdl, ListBox *, pListBox )
+{
+ if( pListBox == &aNameList )
+ {
+ if( aNameList.GetSelectEntryCount() )
+ aOKButton.Enable();
+ else
+ aOKButton.Disable();
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( ScNamePasteDlg, ListDblClickHdl, ListBox *, pListBox )
+{
+ if( pListBox == &aNameList )
+ {
+ ButtonHdl( &aOKButton );
+ }
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScNamePasteDlg, ListDblClickHdl, ListBox *, pListBox )
+
+//------------------------------------------------------------------
+
+String ScNamePasteDlg::GetSelectedName() const
+{
+ return aNameList.GetSelectEntry();
+}
+
+
diff --git a/sc/source/ui/miscdlgs/redcom.cxx b/sc/source/ui/miscdlgs/redcom.cxx
new file mode 100644
index 000000000000..8551dbf8bb6c
--- /dev/null
+++ b/sc/source/ui/miscdlgs/redcom.cxx
@@ -0,0 +1,216 @@
+/*************************************************************************
+ *
+ * $RCSfile: redcom.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#include "redcom.hxx"
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+
+//------------------------------------------------------------------------
+
+ScRedComDialog::ScRedComDialog( Window* pParent, const SfxItemSet& rCoreSet,
+ ScDocShell *pShell,ScChangeAction *pAction,BOOL bPrevNext):
+ SvxPostItDialog(pParent,rCoreSet,bPrevNext,TRUE )
+{
+ pDocShell=pShell;
+ DontChangeAuthor();
+ HideAuthor();
+
+ SetPrevHdl(LINK( this, ScRedComDialog, PrevHdl));
+ SetNextHdl(LINK( this, ScRedComDialog, NextHdl));
+
+ ReInit(pAction);
+}
+
+ScRedComDialog::~ScRedComDialog()
+{
+}
+
+ScChangeAction *ScRedComDialog::FindPrev(ScChangeAction *pAction)
+{
+ if(pAction!=NULL && pDocShell !=NULL)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScChangeViewSettings* pSettings = pDoc->GetChangeViewSettings();
+
+ pAction=pAction->GetPrev();
+
+ while(pAction!=NULL)
+ {
+ if( pAction->GetState()==SC_CAS_VIRGIN &&
+ pAction->IsDialogRoot() &&
+ ScViewUtil::IsActionShown(*pAction,*pSettings,*pDoc)) break;
+
+ pAction=pAction->GetPrev();
+ }
+ }
+ return pAction;
+}
+
+ScChangeAction *ScRedComDialog::FindNext(ScChangeAction *pAction)
+{
+ if(pAction!=NULL && pDocShell !=NULL)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScChangeViewSettings* pSettings = pDoc->GetChangeViewSettings();
+
+ pAction=pAction->GetNext();
+
+ while(pAction!=NULL)
+ {
+ if( pAction->GetState()==SC_CAS_VIRGIN &&
+ pAction->IsDialogRoot() &&
+ ScViewUtil::IsActionShown(*pAction,*pSettings,*pDoc)) break;
+
+ pAction=pAction->GetNext();
+ }
+ }
+ return pAction;
+}
+
+void ScRedComDialog::ReInit(ScChangeAction *pAction)
+{
+ pChangeAction=pAction;
+ if(pChangeAction!=NULL && pDocShell !=NULL)
+ {
+ String aTitle;
+ pChangeAction->GetDescription( aTitle, pDocShell->GetDocument());
+ SetText(aTitle);
+ aComment=pChangeAction->GetComment();
+
+ BOOL bNext=FindNext(pChangeAction)!=NULL;
+ BOOL bPrev=FindPrev(pChangeAction)!=NULL;
+ EnableTravel(bNext,bPrev);
+
+ String aAuthor = pChangeAction->GetUser();
+
+ International* pIntl = ScGlobal::pScInternational;
+ DateTime aDT = pChangeAction->GetDateTime();
+ String aDate = pIntl->GetDate( aDT );
+ aDate += ' ';
+ aDate += pIntl->GetTime( aDT, FALSE, FALSE );
+
+ ShowLastAuthor(aAuthor, aDate);
+ SetNote(aComment);
+ }
+}
+
+short ScRedComDialog::Execute()
+{
+ short nRet=SvxPostItDialog::Execute();
+
+ if(nRet== RET_OK )
+ {
+ if ( pDocShell!=NULL && GetNote() != aComment )
+ pDocShell->SetChangeComment( pChangeAction, GetNote());
+ }
+
+ return nRet;
+}
+
+void ScRedComDialog::SelectCell()
+{
+ if(pChangeAction!=NULL)
+ {
+ const ScChangeAction* pAction=pChangeAction;
+ const ScBigRange& rRange = pAction->GetBigRange();
+
+ if(rRange.IsValid(pDocShell->GetDocument()))
+ {
+ ScViewData* pViewData=pDocShell->GetViewData();
+ ScRange aRef=rRange.MakeRange();
+ ScTabView* pTabView=pViewData->GetView();
+ pTabView->MarkRange(aRef);
+ }
+ }
+}
+
+IMPL_LINK(ScRedComDialog, PrevHdl, SvxPostItDialog*, pDlg )
+{
+ if (pDocShell!=NULL && GetNote() != aComment )
+ pDocShell->SetChangeComment( pChangeAction, GetNote());
+
+ ReInit(FindPrev(pChangeAction));
+ SelectCell();
+
+ return 0;
+}
+
+IMPL_LINK(ScRedComDialog, NextHdl, SvxPostItDialog*, pDlg )
+{
+ if ( pDocShell!=NULL && GetNote() != aComment )
+ pDocShell->SetChangeComment( pChangeAction, GetNote());
+
+ ReInit(FindNext(pChangeAction));
+ SelectCell();
+
+ return 0;
+}
+
diff --git a/sc/source/ui/miscdlgs/shtabdlg.cxx b/sc/source/ui/miscdlgs/shtabdlg.cxx
new file mode 100644
index 000000000000..a8687a838e1a
--- /dev/null
+++ b/sc/source/ui/miscdlgs/shtabdlg.cxx
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * $RCSfile: shtabdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <vcl/msgbox.hxx>
+
+#include "shtabdlg.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+//==================================================================
+
+ScShowTabDlg::ScShowTabDlg( Window* pParent, List& aEntryList ) :
+ ModalDialog ( pParent, ScResId( RID_SCDLG_SHOW_TAB ) ),
+ aLb ( this, ScResId( LB_ENTRYLIST ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aFtLbTitle ( this, ScResId( FT_LABEL ) )
+{
+ aLb.Clear();
+ aLb.SetDoubleClickHdl( LINK( this, ScShowTabDlg, DblClkHdl ) );
+
+ void* pListEntry = aEntryList.First();
+ while ( pListEntry )
+ {
+ aLb.InsertEntry( *((String*)pListEntry ) );
+ pListEntry = aEntryList.Next();
+ }
+
+ if ( aLb.GetEntryCount() > 0 )
+ aLb.SelectEntryPos( 0 );
+
+ //-------------
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+USHORT ScShowTabDlg::GetSelectEntryCount() const
+{
+ return aLb.GetSelectEntryCount();
+}
+
+String ScShowTabDlg::GetSelectEntry(USHORT nPos) const
+{
+ return aLb.GetSelectEntry(nPos);
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( ScShowTabDlg, DblClkHdl, void *, EMPTYARG )
+{
+ EndDialog( RET_OK );
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScShowTabDlg, DblClkHdl, void *, EMPTYARG )
+
+__EXPORT ScShowTabDlg::~ScShowTabDlg()
+{
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/simpref.cxx b/sc/source/ui/miscdlgs/simpref.cxx
new file mode 100644
index 000000000000..efe0e450975c
--- /dev/null
+++ b/sc/source/ui/miscdlgs/simpref.cxx
@@ -0,0 +1,256 @@
+/*************************************************************************
+ *
+ * $RCSfile: simpref.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes ---------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE -------------------------------------------------------------------
+
+#include <vcl/msgbox.hxx>
+
+#include "reffact.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+#include "globstr.hrc"
+#include "simpref.hrc"
+#include "rangenam.hxx" // IsNameValid
+#include "simpref.hxx"
+#include "scmod.hxx"
+
+//============================================================================
+
+#define ABS_SREF SCA_VALID \
+ | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
+#define ABS_DREF ABS_SREF \
+ | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE
+#define ABS_SREF3D ABS_SREF | SCA_TAB_3D
+#define ABS_DREF3D ABS_DREF | SCA_TAB_3D
+
+//----------------------------------------------------------------------------
+
+#define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute()
+#define QUERYBOX(m) QueryBox(this,WinBits(WB_YES_NO|WB_DEF_YES),m).Execute()
+
+static String aPrivLastRefString;
+
+//============================================================================
+// class ScSimpleRefDlg
+
+//----------------------------------------------------------------------------
+ScSimpleRefDlg::ScSimpleRefDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData )
+
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_SIMPLEREF ),
+ //
+ aFtAssign ( this, ScResId( FT_ASSIGN ) ),
+ aEdAssign ( this, ScResId( ED_ASSIGN ) ),
+ aRbAssign ( this, ScResId( RB_ASSIGN ), &aEdAssign ),
+
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+
+ //
+ pViewData ( ptrViewData ),
+ pDoc ( ptrViewData->GetDocument() ),
+ bRefInputMode ( FALSE ),
+ bAutoReOpen ( TRUE )
+{
+ // damit die Strings in der Resource bei den FixedTexten bleiben koennen:
+ Init();
+ FreeResource();
+ SFX_APP()->LockDispatcher( TRUE ); // Modal-Modus einschalten
+
+ aPrivLastRefString=String();
+}
+
+//----------------------------------------------------------------------------
+__EXPORT ScSimpleRefDlg::~ScSimpleRefDlg()
+{
+ aPrivLastRefString=aEdAssign.GetText();
+
+ SFX_APP()->LockDispatcher( FALSE); // Modal-Modus einschalten
+}
+
+//----------------------------------------------------------------------------
+void ScSimpleRefDlg::FillInfo(SfxChildWinInfo& rWinInfo) const
+{
+ ScAnyRefDlg::FillInfo(rWinInfo);
+ rWinInfo.bVisible=bAutoReOpen;
+}
+
+//----------------------------------------------------------------------------
+void ScSimpleRefDlg::SetRefString(const String &rStr)
+{
+ aEdAssign.SetText(rStr);
+}
+
+//----------------------------------------------------------------------------
+void ScSimpleRefDlg::Init()
+{
+ aBtnOk.SetClickHdl ( LINK( this, ScSimpleRefDlg, OkBtnHdl ) );
+ aBtnCancel.SetClickHdl ( LINK( this, ScSimpleRefDlg, CancelBtnHdl ) );
+ bCloseFlag=FALSE;
+}
+
+//----------------------------------------------------------------------------
+// Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als
+// neue Selektion im Referenz-Fenster angezeigt wird.
+void ScSimpleRefDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( aEdAssign.IsEnabled() )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart( &aEdAssign );
+
+ theCurArea = rRef;
+
+ String aRefStr;
+ theCurArea.Format( aRefStr, ABS_DREF3D, pDoc );
+ aEdAssign.SetRefString( aRefStr );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+BOOL __EXPORT ScSimpleRefDlg::Close()
+{
+ CancelBtnHdl(&aBtnCancel);
+ return TRUE;
+}
+
+//------------------------------------------------------------------------
+void ScSimpleRefDlg::SetActive()
+{
+ aEdAssign.GrabFocus();
+
+ // kein NameModifyHdl, weil sonst Bereiche nicht geaendert werden koennen
+ // (nach dem Aufziehen der Referenz wuerde der alte Inhalt wieder angezeigt)
+ // (der ausgewaehlte DB-Name hat sich auch nicht veraendert)
+
+ RefInputDone();
+}
+//------------------------------------------------------------------------
+BOOL ScSimpleRefDlg::IsRefInputMode() const
+{
+ return TRUE;
+}
+
+String ScSimpleRefDlg::GetRefString() const
+{
+ return aEdAssign.GetText();
+}
+
+String ScSimpleRefDlg::GetLastRefString()
+{
+ return aPrivLastRefString;
+}
+
+void ScSimpleRefDlg::SetCloseHdl( const Link& rLink )
+{
+ aCloseHdl=rLink;
+}
+
+void ScSimpleRefDlg::StartRefInput()
+{
+ aRbAssign.DoRef();
+ bCloseFlag=TRUE;
+}
+
+void ScSimpleRefDlg::RefInputDone( BOOL bForced)
+{
+ ScAnyRefDlg::RefInputDone(bForced);
+ if(bForced && bCloseFlag) OkBtnHdl(&aBtnOk);
+}
+//------------------------------------------------------------------------
+// Handler:
+// ========
+IMPL_LINK( ScSimpleRefDlg, OkBtnHdl, void *, EMPTYARG )
+{
+ bAutoReOpen=FALSE;
+ String aResult=aEdAssign.GetText();
+ aCloseHdl.Call(&aResult);
+ DoClose( ScSimpleRefDlgWrapper::GetChildWindowId() );
+ return 0;
+}
+
+//------------------------------------------------------------------------
+IMPL_LINK( ScSimpleRefDlg, CancelBtnHdl, void *, EMPTYARG )
+{
+ bAutoReOpen=FALSE;
+ aCloseHdl.Call(NULL);
+ DoClose( ScSimpleRefDlgWrapper::GetChildWindowId() );
+ return 0;
+}
+
+
+
+//------------------------------------------------------------------------
+
diff --git a/sc/source/ui/miscdlgs/solvrdlg.cxx b/sc/source/ui/miscdlgs/solvrdlg.cxx
new file mode 100644
index 000000000000..96b7f6a860c5
--- /dev/null
+++ b/sc/source/ui/miscdlgs/solvrdlg.cxx
@@ -0,0 +1,338 @@
+/*************************************************************************
+ *
+ * $RCSfile: solvrdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SOT_DTRANS_HXX
+#include <sot/dtrans.hxx>
+#endif
+
+//----------------------------------------------------------------------------
+
+#include "rangelst.hxx"
+#include "scitems.hxx"
+#include <sfx2/dispatch.hxx>
+#include <svtools/zforlist.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "uiitems.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+#include "solvrdlg.hrc"
+
+#define _SOLVRDLG_CXX
+#include "solvrdlg.hxx"
+#undef _SOLVERDLG_CXX
+
+
+#define ERRORBOX(s) ErrorBox( this, WinBits( WB_OK | WB_DEF_OK), s ).Execute()
+
+
+//============================================================================
+// class ScSolverDlg
+//----------------------------------------------------------------------------
+
+ScSolverDlg::ScSolverDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScDocument* pDocument,
+ ScAddress aCursorPos )
+
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_SOLVER ),
+ //
+ aFtFormulaCell ( this, ScResId( FT_FORMULACELL ) ),
+ aEdFormulaCell ( this, ScResId( ED_FORMULACELL ) ),
+ aRBFormulaCell ( this, ScResId( RB_FORMULACELL ), &aEdFormulaCell ),
+ aFtTargetVal ( this, ScResId( FT_TARGETVAL ) ),
+ aEdTargetVal ( this, ScResId( ED_TARGETVAL ) ),
+ aFtVariableCell ( this, ScResId( FT_VARCELL ) ),
+ aEdVariableCell ( this, ScResId( ED_VARCELL ) ),
+ aRBVariableCell ( this, ScResId( RB_VARCELL ), &aEdVariableCell ),
+ aGbVariables ( this, ScResId( GB_VARIABLES ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ errMsgInvalidVal ( ScResId( STR_INVALIDVAL ) ),
+ errMsgInvalidVar ( ScResId( STR_INVALIDVAR ) ),
+ errMsgInvalidForm ( ScResId( STR_INVALIDFORM ) ),
+ errMsgNoFormula ( ScResId( STR_NOFORMULA ) ),
+ //
+ pDoc ( pDocument ),
+ theFormulaCell ( aCursorPos ),
+ theVariableCell ( aCursorPos ),
+ nCurTab ( aCursorPos.Tab() ),
+ pEdActive ( NULL ),
+ bDlgLostFocus ( FALSE )
+{
+ Init();
+ FreeResource();
+}
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScSolverDlg::~ScSolverDlg()
+{
+}
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScSolverDlg::Init()
+{
+ String aStr;
+
+ aBtnOk. SetClickHdl ( LINK( this, ScSolverDlg, BtnHdl ) );
+ aBtnCancel. SetClickHdl ( LINK( this, ScSolverDlg, BtnHdl ) );
+ aEdFormulaCell. SetGetFocusHdl ( LINK( this, ScSolverDlg, EdGetFocusHdl ) );
+ aEdVariableCell.SetGetFocusHdl ( LINK( this, ScSolverDlg, EdGetFocusHdl ) );
+ aEdTargetVal. SetGetFocusHdl ( LINK( this, ScSolverDlg, EdGetFocusHdl ) );
+ aEdFormulaCell. SetLoseFocusHdl ( LINK( this, ScSolverDlg, EdLoseFocusHdl ) );
+ aEdVariableCell.SetLoseFocusHdl ( LINK( this, ScSolverDlg, EdLoseFocusHdl ) );
+
+ theFormulaCell.Format( aStr, SCA_ABS );
+
+ aEdFormulaCell.SetText( aStr );
+ aEdFormulaCell.GrabFocus();
+ pEdActive = &aEdFormulaCell;
+ bMouseInputMode = TRUE;
+
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+}
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScSolverDlg::Close()
+{
+ return DoClose( ScSolverDlgWrapper::GetChildWindowId() );
+}
+
+//----------------------------------------------------------------------------
+
+void ScSolverDlg::SetActive()
+{
+ if ( bDlgLostFocus && bMouseInputMode )
+ {
+ bDlgLostFocus = FALSE;
+ pEdActive->GrabFocus();
+ }
+ else
+ {
+ GrabFocus();
+ }
+ RefInputDone();
+}
+
+//----------------------------------------------------------------------------
+
+void ScSolverDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( bMouseInputMode && pEdActive )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart(pEdActive);
+
+ String aStr;
+ ScAddress aAdr = rRef.aStart;
+ USHORT nFmt = ( aAdr.Tab() == nCurTab )
+ ? SCA_ABS
+ : SCA_ABS_3D;
+
+ aAdr.Format( aStr, nFmt, pDoc );
+ pEdActive->SetRefString( aStr );
+
+ if ( pEdActive == &aEdFormulaCell )
+ theFormulaCell = aAdr;
+ else if ( pEdActive == &aEdVariableCell )
+ theVariableCell = aAdr;
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void ScSolverDlg::RaiseError( ScSolverErr eError )
+{
+ switch ( eError )
+ {
+ case SOLVERR_NOFORMULA:
+ ERRORBOX( errMsgNoFormula );
+ aEdFormulaCell.GrabFocus();
+ break;
+
+ case SOLVERR_INVALID_FORMULA:
+ ERRORBOX( errMsgInvalidForm );
+ aEdFormulaCell.GrabFocus();
+ break;
+
+ case SOLVERR_INVALID_VARIABLE:
+ ERRORBOX( errMsgInvalidVar );
+ aEdVariableCell.GrabFocus();
+ break;
+
+ case SOLVERR_INVALID_TARGETVALUE:
+ ERRORBOX( errMsgInvalidVal );
+ aEdTargetVal.GrabFocus();
+ break;
+ }
+}
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScSolverDlg::CheckTargetValue( String& rStrVal )
+{
+ ULONG n1 = 0;
+ double n2;
+
+ return pDoc->GetFormatTable()->IsNumberFormat( rStrVal, n1, n2 );
+}
+
+//----------------------------------------------------------------------------
+// Handler:
+
+IMPL_LINK( ScSolverDlg, BtnHdl, PushButton*, pBtn )
+{
+ if ( pBtn == &aBtnOk )
+ {
+ theTargetValStr = aEdTargetVal.GetText();
+
+ // Zu ueberpruefen:
+ // 1. enthalten die Strings korrekte Tabellenkoordinaten/def.Namen?
+ // 2. verweist die Formel-Koordinate wirklich auf eine Formelzelle?
+ // 3. wurde ein korrekter Zielwert eingegeben
+
+ USHORT nRes1 = theFormulaCell .Parse( aEdFormulaCell.GetText(), pDoc );
+ USHORT nRes2 = theVariableCell.Parse( aEdVariableCell.GetText(), pDoc );
+
+ if ( SCA_VALID == ( nRes1 & SCA_VALID ) )
+ {
+ if ( SCA_VALID == ( nRes2 & SCA_VALID ) )
+ {
+ if ( CheckTargetValue( theTargetValStr ) )
+ {
+ CellType eType;
+ pDoc->GetCellType( theFormulaCell.Col(),
+ theFormulaCell.Row(),
+ theFormulaCell.Tab(),
+ eType );
+
+ if ( CELLTYPE_FORMULA == eType )
+ {
+ ScSolveParam aOutParam( theFormulaCell,
+ theVariableCell,
+ theTargetValStr );
+ ScSolveItem aOutItem( SCITEM_SOLVEDATA, &aOutParam );
+
+ SFX_APP()->LockDispatcher( FALSE );
+
+ SwitchToDocument();
+ SFX_DISPATCHER().Execute( SID_SOLVE,
+ SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aOutItem, 0L, 0L );
+ Close();
+ }
+ else RaiseError( SOLVERR_NOFORMULA );
+ }
+ else RaiseError( SOLVERR_INVALID_TARGETVALUE );
+ }
+ else RaiseError( SOLVERR_INVALID_VARIABLE );
+ }
+ else RaiseError( SOLVERR_INVALID_FORMULA );
+ }
+ else if ( pBtn == &aBtnCancel )
+ {
+ Close();
+ }
+
+ return NULL;
+}
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScSolverDlg, EdGetFocusHdl, ScRefEdit*, pEd )
+{
+ pEdActive = pEd;
+ bMouseInputMode = ( pEd != &aEdTargetVal );
+
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ /*
+ if ( bMouseInputMode )
+ SFX_APPWINDOW->Enable();
+ else
+ SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+ */
+ pEd->SetSelection( Selection(0,SELECTION_MAX) );
+
+ return NULL;
+}
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScSolverDlg, EdLoseFocusHdl, ScRefEdit*, pEd )
+{
+ bDlgLostFocus = !IsActive();
+ return NULL;
+}
+
+
+
+
diff --git a/sc/source/ui/miscdlgs/strindlg.cxx b/sc/source/ui/miscdlgs/strindlg.cxx
new file mode 100644
index 000000000000..25d597f4454e
--- /dev/null
+++ b/sc/source/ui/miscdlgs/strindlg.cxx
@@ -0,0 +1,127 @@
+/*************************************************************************
+ *
+ * $RCSfile: strindlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <tools/debug.hxx>
+
+#include "strindlg.hxx"
+#include "scresid.hxx"
+#include "miscdlgs.hrc"
+
+
+//==================================================================
+
+ScStringInputDlg::ScStringInputDlg( Window* pParent,
+ const String& rTitle,
+ const String& rEditTitle,
+ const String& rDefault,
+ ULONG nHelpId ) :
+ ModalDialog ( pParent, ScResId( RID_SCDLG_STRINPUT ) ),
+ //
+ aEdInput ( this, ScResId( ED_INPUT ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aFtEditTitle ( this, ScResId( FT_LABEL ) )
+{
+ SetHelpId( nHelpId );
+ SetText( rTitle );
+ aFtEditTitle.SetText( rEditTitle );
+ aEdInput.SetText( rDefault );
+
+ // HelpId for Edit different for different uses
+
+ DBG_ASSERT( nHelpId == FID_TAB_APPEND || nHelpId == FID_TAB_RENAME ||
+ nHelpId == HID_SC_ADD_AUTOFMT || nHelpId == HID_SC_RENAME_AUTOFMT,
+ "unknown ID" );
+ if ( nHelpId == FID_TAB_APPEND )
+ aEdInput.SetHelpId( HID_SC_APPEND_NAME );
+ else if ( nHelpId == FID_TAB_RENAME )
+ aEdInput.SetHelpId( HID_SC_RENAME_NAME );
+ else if ( nHelpId == HID_SC_ADD_AUTOFMT )
+ aEdInput.SetHelpId( HID_SC_AUTOFMT_NAME );
+ else if ( nHelpId == HID_SC_RENAME_AUTOFMT )
+ aEdInput.SetHelpId( HID_SC_REN_AFMT_NAME );
+
+ //-------------
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+void ScStringInputDlg::GetInputString( String& rString ) const
+{
+ rString = aEdInput.GetText();
+}
+
+__EXPORT ScStringInputDlg::~ScStringInputDlg()
+{
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/tabopdlg.cxx b/sc/source/ui/miscdlgs/tabopdlg.cxx
new file mode 100644
index 000000000000..4a1f50b2c202
--- /dev/null
+++ b/sc/source/ui/miscdlgs/tabopdlg.cxx
@@ -0,0 +1,389 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabopdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/dispatch.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "uiitems.hxx"
+#include "global.hxx"
+#include "document.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "reffact.hxx"
+#include "tabopdlg.hrc"
+
+#define _TABOPDLG_CXX
+#include "tabopdlg.hxx"
+
+
+//============================================================================
+// class ScTabOpDlg
+//----------------------------------------------------------------------------
+
+ScTabOpDlg::ScTabOpDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScDocument* pDocument,
+ const ScRefTripel& rCursorPos )
+
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_TABOP ),
+ //
+ aFtFormulaRange ( this, ScResId( FT_FORMULARANGE ) ),
+ aEdFormulaRange ( this, ScResId( ED_FORMULARANGE ) ),
+ aRBFormulaRange ( this, ScResId( RB_FORMULARANGE ), &aEdFormulaRange ),
+ aFtRowCell ( this, ScResId( FT_ROWCELL ) ),
+ aEdRowCell ( this, ScResId( ED_ROWCELL ) ),
+ aRBRowCell ( this, ScResId( RB_ROWCELL ), &aEdRowCell ),
+ aFtColCell ( this, ScResId( FT_COLCELL ) ),
+ aEdColCell ( this, ScResId( ED_COLCELL ) ),
+ aRBColCell ( this, ScResId( RB_COLCELL ), &aEdColCell ),
+ aGbVariables ( this, ScResId( GB_VARIABLES ) ),
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ errMsgNoFormula ( ScResId( STR_NOFORMULA ) ),
+ errMsgNoColRow ( ScResId( STR_NOCOLROW ) ),
+ errMsgWrongFormula ( ScResId( STR_WRONGFORMULA ) ),
+ errMsgWrongRowCol ( ScResId( STR_WRONGROWCOL ) ),
+ errMsgNoColFormula ( ScResId( STR_NOCOLFORMULA ) ),
+ errMsgNoRowFormula ( ScResId( STR_NOROWFORMULA ) ),
+ //
+ pDoc ( pDocument ),
+ theFormulaCell ( rCursorPos ),
+ nCurTab ( theFormulaCell.GetTab() ),
+ pEdActive ( NULL ),
+ bDlgLostFocus ( FALSE )
+{
+ Init();
+ FreeResource();
+}
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScTabOpDlg::~ScTabOpDlg()
+{
+ Hide();
+}
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScTabOpDlg::Init()
+{
+ aBtnOk. SetClickHdl ( LINK( this, ScTabOpDlg, BtnHdl ) );
+ aBtnCancel. SetClickHdl ( LINK( this, ScTabOpDlg, BtnHdl ) );
+ aEdFormulaRange.SetGetFocusHdl ( LINK( this, ScTabOpDlg, EdGetFocusHdl ) );
+ aEdRowCell. SetGetFocusHdl ( LINK( this, ScTabOpDlg, EdGetFocusHdl ) );
+ aEdColCell. SetGetFocusHdl ( LINK( this, ScTabOpDlg, EdGetFocusHdl ) );
+ aEdFormulaRange.SetLoseFocusHdl ( LINK( this, ScTabOpDlg, EdLoseFocusHdl ) );
+ aEdRowCell. SetLoseFocusHdl ( LINK( this, ScTabOpDlg, EdLoseFocusHdl ) );
+ aEdColCell. SetLoseFocusHdl ( LINK( this, ScTabOpDlg, EdLoseFocusHdl ) );
+
+ aEdFormulaRange.GrabFocus();
+ pEdActive = &aEdFormulaRange;
+
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+}
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScTabOpDlg::Close()
+{
+ return DoClose( ScTabOpDlgWrapper::GetChildWindowId() );
+}
+
+//----------------------------------------------------------------------------
+
+void ScTabOpDlg::SetActive()
+{
+ if ( bDlgLostFocus )
+ {
+ bDlgLostFocus = FALSE;
+ pEdActive->GrabFocus();
+ }
+ else
+ GrabFocus();
+
+ RefInputDone();
+}
+
+//----------------------------------------------------------------------------
+
+void ScTabOpDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( pEdActive )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart(pEdActive);
+
+ USHORT nStartCol = rRef.aStart.Col(); // fuer RefTripel
+ USHORT nStartRow = rRef.aStart.Row();
+ USHORT nStartTab = rRef.aStart.Tab();
+ USHORT nEndCol = rRef.aEnd.Col();
+ USHORT nEndRow = rRef.aEnd.Row();
+ USHORT nEndTab = rRef.aEnd.Tab();
+
+ String aStr;
+ USHORT nFmt = ( nStartTab == nCurTab )
+ ? SCR_ABS
+ : SCR_ABS_3D;
+
+ if ( pEdActive == &aEdFormulaRange )
+ {
+ theFormulaCell = ScRefTripel( nStartCol, nStartRow, nStartTab, FALSE, FALSE, FALSE );
+ theFormulaEnd = ScRefTripel( nEndCol, nEndRow, nEndTab, FALSE, FALSE, FALSE );
+ rRef.Format( aStr, nFmt, pDoc );
+ }
+ else if ( pEdActive == &aEdRowCell )
+ {
+ theRowCell = ScRefTripel( nStartCol, nStartRow, nStartTab, FALSE, FALSE, FALSE );
+ rRef.aStart.Format( aStr, nFmt, pDoc );
+ }
+ else if ( pEdActive == &aEdColCell )
+ {
+ theColCell = ScRefTripel( nStartCol, nStartRow, nStartTab, FALSE, FALSE, FALSE );
+ rRef.aStart.Format( aStr, nFmt, pDoc );
+ }
+
+ pEdActive->SetRefString( aStr );
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void ScTabOpDlg::RaiseError( ScTabOpErr eError )
+{
+ const String* pMsg = &errMsgNoFormula;
+ Edit* pEd = &aEdFormulaRange;
+
+ switch ( eError )
+ {
+ case TABOPERR_NOFORMULA:
+ pMsg = &errMsgNoFormula;
+ pEd = &aEdFormulaRange;
+ break;
+
+ case TABOPERR_NOCOLROW:
+ pMsg = &errMsgNoColRow;
+ pEd = &aEdRowCell;
+ break;
+
+ case TABOPERR_WRONGFORMULA:
+ pMsg = &errMsgWrongFormula;
+ pEd = &aEdFormulaRange;
+ break;
+
+ case TABOPERR_WRONGROW:
+ pMsg = &errMsgWrongRowCol;
+ pEd = &aEdRowCell;
+ break;
+
+ case TABOPERR_NOCOLFORMULA:
+ pMsg = &errMsgNoColFormula;
+ pEd = &aEdFormulaRange;
+ break;
+
+ case TABOPERR_WRONGCOL:
+ pMsg = &errMsgWrongRowCol;
+ pEd = &aEdColCell;
+ break;
+
+ case TABOPERR_NOROWFORMULA:
+ pMsg = &errMsgNoRowFormula;
+ pEd = &aEdFormulaRange;
+ break;
+ }
+
+ ErrorBox( this, WinBits( WB_OK_CANCEL | WB_DEF_OK), *pMsg ).Execute();
+ pEd->GrabFocus();
+}
+
+//----------------------------------------------------------------------------
+
+BOOL lcl_Parse( const String& rString, ScDocument* pDoc, USHORT nCurTab,
+ ScRefTripel& rStart, ScRefTripel& rEnd )
+{
+ BOOL bRet = FALSE;
+ if ( rString.Search(':') != STRING_NOTFOUND )
+ bRet = ConvertDoubleRef( pDoc, rString, nCurTab, rStart, rEnd );
+ else
+ {
+ bRet = ConvertSingleRef( pDoc, rString, nCurTab, rStart );
+ rEnd = rStart;
+ }
+ return bRet;
+}
+
+//----------------------------------------------------------------------------
+// Handler:
+
+IMPL_LINK( ScTabOpDlg, BtnHdl, PushButton*, pBtn )
+{
+ if ( pBtn == &aBtnOk )
+ {
+ BYTE nMode = 3;
+ USHORT nError = 0;
+
+ // Zu ueberpruefen:
+ // 1. enthalten die Strings korrekte Tabellenkoordinaten/def.Namen?
+ // 2. IstFormelRang Zeile bei leerer Zeile bzw. Spalte bei leerer Spalte
+ // bzw. Einfachreferenz bei beidem?
+ // 3. Ist mindestens Zeile oder Spalte und Formel voll?
+
+ if (aEdFormulaRange.GetText().Len() == 0)
+ nError = TABOPERR_NOFORMULA;
+ else if (aEdRowCell.GetText().Len() == 0 &&
+ aEdColCell.GetText().Len() == 0)
+ nError = TABOPERR_NOCOLROW;
+ else if ( !lcl_Parse( aEdFormulaRange.GetText(), pDoc, nCurTab,
+ theFormulaCell, theFormulaEnd ) )
+ nError = TABOPERR_WRONGFORMULA;
+ else
+ {
+ if (aEdRowCell.GetText().Len() > 0)
+ {
+ if (!ConvertSingleRef( pDoc, aEdRowCell.GetText(), nCurTab, theRowCell ))
+ nError = TABOPERR_WRONGROW;
+ else
+ {
+ if (aEdColCell.GetText().Len() == 0 &&
+ theFormulaCell.GetCol() != theFormulaEnd.GetCol())
+ nError = TABOPERR_NOCOLFORMULA;
+ else
+ nMode = 1;
+ }
+ }
+ if (aEdColCell.GetText().Len() > 0)
+ {
+ if (!ConvertSingleRef( pDoc, aEdColCell.GetText(), nCurTab,
+ theColCell ))
+ nError = TABOPERR_WRONGCOL;
+ else
+ {
+ if (nMode == 1) // beides
+ {
+ nMode = 2;
+ ConvertSingleRef( pDoc, aEdFormulaRange.GetText(), nCurTab,
+ theFormulaCell );
+ }
+ else if (theFormulaCell.GetRow() != theFormulaEnd.GetRow())
+ nError = TABOPERR_NOROWFORMULA;
+ else
+ nMode = 0;
+ }
+ }
+ }
+
+ if (nError)
+ RaiseError( (ScTabOpErr) nError );
+ else
+ {
+ ScTabOpParam aOutParam( theFormulaCell,
+ theFormulaEnd,
+ theRowCell,
+ theColCell,
+ nMode );
+ ScTabOpItem aOutItem( SID_TABOP, &aOutParam );
+
+ SFX_APP()->LockDispatcher( FALSE );
+ SwitchToDocument();
+ SFX_DISPATCHER().Execute( SID_TABOP,
+ SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aOutItem, 0L, 0L );
+ Close();
+ }
+ }
+ else if ( pBtn == &aBtnCancel )
+ Close();
+
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScTabOpDlg, EdGetFocusHdl, ScRefEdit*, pEd )
+{
+ pEdActive = pEd;
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+ pEd->SetSelection( Selection(0,SELECTION_MAX) );
+ return 0;
+}
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScTabOpDlg, EdLoseFocusHdl, ScRefEdit*, pEd )
+{
+ bDlgLostFocus = !IsActive();
+ return 0;
+}
+
+
+
+
+
diff --git a/sc/source/ui/miscdlgs/teamdlg.cxx b/sc/source/ui/miscdlgs/teamdlg.cxx
new file mode 100644
index 000000000000..32d8905aa103
--- /dev/null
+++ b/sc/source/ui/miscdlgs/teamdlg.cxx
@@ -0,0 +1,145 @@
+/*************************************************************************
+ *
+ * $RCSfile: teamdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <vcl/system.hxx>
+#include <tools/shl.hxx>
+
+#include "teamdlg.hxx"
+#include "scmod.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+
+
+//------------------------------------------------------------------
+
+void ShowTheTeam()
+{
+ SC_MOD()->OpenTeamDlg();
+}
+
+//========================================================================
+// ScTeamDlg
+//========================================================================
+
+ScTeamDlg::ScTeamDlg( Window* pParent )
+ : FloatingWindow( pParent, ScResId( RID_SCDLG_TEAM ) ),
+ aBmpTeam ( this, ScResId( 1 ) )
+{
+ FreeResource();
+ SC_MOD()->SetTeamDlg( this );
+
+ Bitmap aBmp( ScResId( RID_SCTEAMDLGBMP1 ) );
+
+ Size aSize = aBmp.GetSizePixel();
+ USHORT nOff = (USHORT)aBmpTeam.GetPosPixel().X();
+
+ aBmpTeam.SetSizePixel( aSize );
+ aBmpTeam.SetBitmap( aBmp );
+ aSize.Width() += (2*nOff);
+ aSize.Height() += (2*nOff);
+ SetOutputSizePixel( aSize );
+ Center();
+ Show();
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScTeamDlg::~ScTeamDlg()
+{
+}
+
+//------------------------------------------------------------------------
+
+BOOL __EXPORT ScTeamDlg::Close()
+{
+ BOOL bReturn = FloatingWindow::Close();
+
+ SC_MOD()->SetTeamDlg( NULL );
+ delete this;
+
+ return bReturn;
+}
+
+//------------------------------------------------------------------------
+
+void ScTeamDlg::Center()
+{
+ if ( IsRollUp() ) RollDown();
+
+ Size aSizeDesktop = GetParent()->GetSizePixel();
+ Size aSize = GetSizePixel();
+ Point aNewPos;
+
+ aNewPos.X() = (aSizeDesktop.Width() - aSize.Width()) / 2;
+ aNewPos.Y() = (aSizeDesktop.Height() - aSize.Height()) / 2;
+ SetPosPixel( aNewPos );
+}
+
+
+
diff --git a/sc/source/ui/miscdlgs/textdlgs.cxx b/sc/source/ui/miscdlgs/textdlgs.cxx
new file mode 100644
index 000000000000..2f1bbe604d9f
--- /dev/null
+++ b/sc/source/ui/miscdlgs/textdlgs.cxx
@@ -0,0 +1,156 @@
+/*************************************************************************
+ *
+ * $RCSfile: textdlgs.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// ohne precompiled Headers uebersetzen !!!
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svxids.hrc>
+#define ITEMID_FONTLIST SID_ATTR_CHAR_FONTLIST
+#define ITEMID_TABSTOP 0
+
+#include <svx/chardlg.hxx>
+#include <svx/flstitem.hxx>
+#include <svx/paragrph.hxx>
+#include <svx/tabstpge.hxx>
+#include <sfx2/objsh.hxx>
+
+#include "textdlgs.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+
+
+
+// -----------------------------------------------------------------------
+
+ScCharDlg::ScCharDlg( Window* pParent, const SfxItemSet* pAttr,
+ const SfxObjectShell* pDocShell ) :
+ SfxTabDialog ( pParent, ScResId( RID_SCDLG_CHAR ), pAttr ),
+ rOutAttrs ( *pAttr ),
+ rDocShell ( *pDocShell )
+{
+ FreeResource();
+
+ AddTabPage( RID_SVXPAGE_CHAR_STD, SvxCharStdPage::Create, 0);
+ AddTabPage( RID_SVXPAGE_CHAR_EXT, SvxCharExtPage::Create, 0);
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScCharDlg::PageCreated( USHORT nId, SfxTabPage &rPage )
+{
+ switch( nId )
+ {
+ case RID_SVXPAGE_CHAR_STD:
+ {
+ SvxFontListItem aItem(*( (const SvxFontListItem*)
+ ( rDocShell.GetItem( SID_ATTR_CHAR_FONTLIST) ) ) );
+
+ ( (SvxCharStdPage&) rPage ).SetFontList( aItem );
+ }
+ break;
+
+ case RID_SVXPAGE_CHAR_EXT:
+ ( (SvxCharExtPage&) rPage ).DisableControls(
+ DISABLE_CASEMAP);
+ break;
+
+ default:
+ break;
+ }
+}
+
+// -----------------------------------------------------------------------
+
+ScParagraphDlg::ScParagraphDlg( Window* pParent, const SfxItemSet* pAttr ) :
+ SfxTabDialog ( pParent, ScResId( RID_SCDLG_PARAGRAPH ), pAttr ),
+ rOutAttrs ( *pAttr )
+{
+ FreeResource();
+
+ AddTabPage( RID_SVXPAGE_STD_PARAGRAPH, SvxStdParagraphTabPage::Create, 0);
+ AddTabPage( RID_SVXPAGE_ALIGN_PARAGRAPH, SvxParaAlignTabPage::Create, 0);
+ //AddTabPage( RID_SVXPAGE_EXT_PARAGRAPH, SvxExtParagraphTabPage::Create, 0);
+ AddTabPage( RID_SVXPAGE_TABULATOR, SvxTabulatorTabPage::Create, 0);
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScParagraphDlg::PageCreated( USHORT nId, SfxTabPage &rPage )
+{
+ switch( nId )
+ {
+ case RID_SVXPAGE_TABULATOR:
+ ( (SvxTabulatorTabPage&) rPage ).
+ DisableControls( TABTYPE_ALL &~TABTYPE_LEFT |
+ TABFILL_ALL &~TABFILL_NONE );
+ break;
+ }
+}
+
+
+
diff --git a/sc/source/ui/namedlg/makefile.mk b/sc/source/ui/namedlg/makefile.mk
new file mode 100644
index 000000000000..75e131c02ba1
--- /dev/null
+++ b/sc/source/ui/namedlg/makefile.mk
@@ -0,0 +1,93 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=namedlg
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ namedlg.cxx
+
+SLOFILES = \
+ $(SLO)$/namedlg.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/namedlg/namedlg.cxx b/sc/source/ui/namedlg/namedlg.cxx
new file mode 100644
index 000000000000..e39a4a2a25b5
--- /dev/null
+++ b/sc/source/ui/namedlg/namedlg.cxx
@@ -0,0 +1,691 @@
+/*************************************************************************
+ *
+ * $RCSfile: namedlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes ---------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE -------------------------------------------------------------------
+
+#include "global.hxx"
+#include "reffact.hxx"
+#include "document.hxx"
+#include "docfunc.hxx"
+#include "scresid.hxx"
+#include "globstr.hrc"
+#include "namedlg.hrc"
+
+#define _NAMEDLG_CXX
+#include "namedlg.hxx"
+#undef _NAMEDLG_CXX
+
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+
+
+// defines -------------------------------------------------------------------
+
+#define ABS_SREF SCA_VALID \
+ | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
+#define ABS_DREF ABS_SREF \
+ | SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE
+#define ABS_SREF3D ABS_SREF | SCA_TAB_3D
+#define ABS_DREF3D ABS_DREF | SCA_TAB_3D
+
+
+//============================================================================
+// Hilfsklasse: Merken der aktuellen Bereichsoptionen,
+// wenn ein Name in der ComboBox gefunden wird.
+
+struct SaveData
+{
+ SaveData()
+ : bCriteria(FALSE),bPrintArea(FALSE),
+ bColHeader(FALSE),bRowHeader(FALSE),
+ bDirty(FALSE) {}
+
+ void Clear()
+ {
+ aStrSymbol.Erase();
+ bCriteria = bPrintArea =
+ bColHeader = bRowHeader = FALSE;
+ bDirty = TRUE;
+ }
+
+ String aStrSymbol;
+ BOOL bCriteria:1;
+ BOOL bPrintArea:1;
+ BOOL bColHeader:1;
+ BOOL bRowHeader:1;
+ BOOL bDirty:1;
+};
+
+static SaveData* pSaveObj = NULL;
+
+#define SAVE_DATA() \
+ pSaveObj->aStrSymbol = aEdAssign.GetText(); \
+ pSaveObj->bCriteria = aBtnCriteria.IsChecked(); \
+ pSaveObj->bPrintArea = aBtnPrintArea.IsChecked(); \
+ pSaveObj->bColHeader = aBtnColHeader.IsChecked(); \
+ pSaveObj->bRowHeader = aBtnRowHeader.IsChecked(); \
+ pSaveObj->bDirty = TRUE;
+
+#define RESTORE_DATA() \
+ if ( pSaveObj->bDirty ) \
+ { \
+ aEdAssign.SetText( pSaveObj->aStrSymbol ); \
+ aBtnCriteria.Check( pSaveObj->bCriteria ); \
+ aBtnPrintArea.Check( pSaveObj->bPrintArea ); \
+ aBtnColHeader.Check( pSaveObj->bColHeader ); \
+ aBtnRowHeader.Check( pSaveObj->bRowHeader ); \
+ pSaveObj->bDirty = FALSE; \
+ }
+
+#define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute();
+
+SEG_EOFGLOBALS()
+
+
+//============================================================================
+// class ScNameDlg
+
+//----------------------------------------------------------------------------
+
+ScNameDlg::ScNameDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
+ ScViewData* ptrViewData,
+ const ScAddress& aCursorPos )
+
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_NAMES ),
+ //
+ aEdName ( this, ScResId( ED_NAME ) ),
+ aGbName ( this, ScResId( GB_NAME ) ),
+ //
+ aGbAssign ( this, ScResId( GB_ASSIGN ) ),
+ aEdAssign ( this, ScResId( ED_ASSIGN ) ),
+ aRbAssign ( this, ScResId( RB_ASSIGN ), &aEdAssign ),
+ //
+ aBtnCriteria ( this, ScResId( BTN_CRITERIA ) ),
+ aBtnPrintArea ( this, ScResId( BTN_PRINTAREA ) ),
+ aBtnColHeader ( this, ScResId( BTN_COLHEADER ) ),
+ aBtnRowHeader ( this, ScResId( BTN_ROWHEADER ) ),
+ aGbType ( this, ScResId( GB_TYPE ) ),
+ //
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnAdd ( this, ScResId( BTN_ADD ) ),
+ aBtnRemove ( this, ScResId( BTN_REMOVE ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ aBtnMore ( this, ScResId( BTN_MORE ) ),
+ //
+ aStrAdd ( ScResId( STR_ADD ) ),
+ aStrModify ( ScResId( STR_MODIFY ) ),
+ errMsgInvalidSym( ScResId( STR_INVALIDSYMBOL ) ),
+ bSaved (FALSE),
+ //
+ theCursorPos ( aCursorPos ), // zum Berechnen der Referenzen
+ pViewData ( ptrViewData ),
+ pDoc ( ptrViewData->GetDocument() ),
+ aLocalRangeName ( *(pDoc->GetRangeName()) )
+{
+ pSaveObj = new SaveData;
+ Init();
+ FreeResource();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScNameDlg::~ScNameDlg()
+{
+ DELETEZ( pSaveObj );
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScNameDlg::Init()
+{
+ String aAreaStr;
+ ScRange aRange;
+
+ DBG_ASSERT( pViewData && pDoc, "ViewData oder Document nicht gefunden!" );
+
+ aBtnOk.SetClickHdl ( LINK( this, ScNameDlg, OkBtnHdl ) );
+ aBtnCancel.SetClickHdl ( LINK( this, ScNameDlg, CancelBtnHdl ) );
+ aBtnAdd.SetClickHdl ( LINK( this, ScNameDlg, AddBtnHdl ) );
+ aBtnRemove.SetClickHdl ( LINK( this, ScNameDlg, RemoveBtnHdl ) );
+ aEdAssign.SetGetFocusHdl( LINK( this, ScNameDlg, AssignGetFocusHdl ) );
+ aEdAssign.SetModifyHdl ( LINK( this, ScNameDlg, EdModifyHdl ) );
+ aEdName.SetModifyHdl ( LINK( this, ScNameDlg, EdModifyHdl ) );
+ aEdName.SetSelectHdl ( LINK( this, ScNameDlg, NameSelectHdl ) );
+
+ aBtnCriteria .Hide();
+ aBtnPrintArea.Hide();
+ aBtnColHeader.Hide();
+ aBtnRowHeader.Hide();
+
+ aBtnMore.AddWindow( &aGbType );
+ aBtnMore.AddWindow( &aBtnCriteria );
+ aBtnMore.AddWindow( &aBtnPrintArea );
+ aBtnMore.AddWindow( &aBtnColHeader );
+ aBtnMore.AddWindow( &aBtnRowHeader );
+
+ UpdateNames();
+
+ pViewData->GetSimpleArea( aRange );
+ aRange.Format( aAreaStr, ABS_DREF3D, pDoc );
+
+ theCurSel = Selection( 0, SELECTION_MAX );
+ aEdAssign.GrabFocus();
+ aEdAssign.SetText( aAreaStr );
+ aEdAssign.SetSelection( theCurSel );
+ aEdName.GrabFocus();
+
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ if ( aEdName.GetEntryCount() > 0 )
+ aBtnAdd.SetText( aStrAdd );
+ UpdateChecks();
+ EdModifyHdl( 0 );
+
+ bSaved=TRUE;
+ SAVE_DATA()
+
+ //@BugID 54702
+ //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+}
+
+//----------------------------------------------------------------------------
+BOOL ScNameDlg::IsRefInputMode() const
+{
+ return aEdAssign.IsEnabled();
+}
+
+void ScNameDlg::RefInputDone( BOOL bForced)
+{
+ ScAnyRefDlg::RefInputDone(bForced);
+ EdModifyHdl(&aEdAssign);
+}
+//----------------------------------------------------------------------------
+// Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als
+// neue Selektion im Referenz-Edit angezeigt wird.
+
+
+void ScNameDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( aEdAssign.IsEnabled() )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart(&aEdAssign);
+ String aRefStr;
+ rRef.Format( aRefStr, ABS_DREF3D, pDoc );
+ aEdAssign.SetRefString( aRefStr );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+BOOL __EXPORT ScNameDlg::Close()
+{
+ return DoClose( ScNameDlgWrapper::GetChildWindowId() );
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScNameDlg::SetActive()
+{
+ aEdAssign.GrabFocus();
+ RefInputDone();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScNameDlg::UpdateChecks()
+{
+ USHORT nCurPos=0;
+
+ if(aLocalRangeName.SearchName( aEdName.GetText(), nCurPos))
+ {
+ ScRangeData* pData=(ScRangeData*)(aLocalRangeName.At( nCurPos ));
+ aBtnCriteria .Check( pData->HasType( RT_CRITERIA ) );
+ aBtnPrintArea.Check( pData->HasType( RT_PRINTAREA ) );
+ aBtnColHeader.Check( pData->HasType( RT_COLHEADER ) );
+ aBtnRowHeader.Check( pData->HasType( RT_ROWHEADER ) );
+ }
+
+ // Falls Edit-Feld leer ist: Typ-CheckBoxen deaktivieren:
+
+ if ( aEdName.GetText().Len() != 0 )
+ {
+ if ( !aGbType.IsEnabled() )
+ {
+ aGbType .Enable();
+ aBtnCriteria .Enable();
+ aBtnPrintArea.Enable();
+ aBtnColHeader.Enable();
+ aBtnRowHeader.Enable();
+ aGbAssign .Enable();
+ aEdAssign .Enable();
+ aRbAssign .Enable();
+ }
+ }
+ else if ( aGbType.IsEnabled() )
+ {
+ aGbType .Disable();
+ aBtnCriteria .Disable();
+ aBtnPrintArea.Disable();
+ aBtnColHeader.Disable();
+ aBtnRowHeader.Disable();
+ aGbAssign .Disable();
+ aEdAssign .Disable();
+ aRbAssign .Disable();
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScNameDlg::UpdateNames()
+{
+ USHORT nRangeCount = aLocalRangeName.GetCount();
+
+ aEdName.SetUpdateMode( FALSE );
+ //-----------------------------------------------------------
+ aEdName.Clear();
+ aEdAssign.SetText( EMPTY_STRING );
+
+ if ( nRangeCount > 0 )
+ {
+ ScRangeData* pRangeData = NULL;
+ String aString;
+
+ for ( USHORT i=0; i<nRangeCount; i++ )
+ {
+ pRangeData = (ScRangeData*)(aLocalRangeName.At( i ));
+ if ( pRangeData )
+ {
+ if ( !pRangeData->HasType( RT_DATABASE )
+ && !pRangeData->HasType( RT_SHARED ) )
+ {
+ pRangeData->GetName( aString );
+ aEdName.InsertEntry( aString );
+ }
+ }
+ }
+ }
+ else
+ {
+ aBtnAdd.SetText( aStrAdd );
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ }
+ //-----------------------------------------------------------
+ aEdName.SetUpdateMode( TRUE );
+ aEdName.Invalidate();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScNameDlg::CalcCurTableAssign( String& aAssign, USHORT nCurPos )
+{
+ ScRangeData* pRangeData = (ScRangeData*)(aLocalRangeName.At( nCurPos ));
+
+ if ( pRangeData )
+ {
+ pRangeData->UpdateSymbol( aAssign, theCursorPos );
+ }
+ else
+ {
+ aAssign.Erase();
+ }
+}
+
+
+//----------------------------------------------------------------------------
+// Handler:
+// ========
+
+IMPL_LINK( ScNameDlg, OkBtnHdl, void *, EMPTYARG )
+{
+ if ( aBtnAdd.IsEnabled() )
+ AddBtnHdl( 0 );
+
+ if ( !aBtnAdd.IsEnabled() && !aBtnRemove.IsEnabled() )
+ {
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.ModifyRangeNames( aLocalRangeName, FALSE );
+ Close();
+ }
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( ScNameDlg, CancelBtnHdl, void *, EMPTYARG )
+{
+ Close();
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScNameDlg, CancelBtnHdl, void *, EMPTYARG )
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScNameDlg, AddBtnHdl, void *, EMPTYARG )
+{
+ BOOL bAdded = FALSE;
+ String aNewEntry = aEdName.GetText();
+
+ aNewEntry.EraseLeadingChars( ' ' );
+ aNewEntry.EraseTrailingChars( ' ' );
+
+ if ( aNewEntry.Len() > 0 )
+ {
+ if ( ScRangeData::IsNameValid( aNewEntry, pDoc ) )
+ {
+ if ( pDoc )
+ {
+ ScRangeData* pNewEntry = NULL;
+ RangeType nType = RT_NAME;
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nFoundAt = 0;
+ String theSymbol = aEdAssign.GetText();
+ String aStrPos;
+ String aStrArea;
+
+ pNewEntry = new ScRangeData( pDoc,
+ aNewEntry,
+ theSymbol,
+ theCursorPos.Col(),
+ theCursorPos.Row(),
+ theCursorPos.Tab(),
+ nType );
+ if (pNewEntry)
+ {
+ nType = nType
+ | (aBtnRowHeader .IsChecked() ? RT_ROWHEADER : RangeType(0))
+ | (aBtnColHeader .IsChecked() ? RT_COLHEADER : RangeType(0))
+ | (aBtnPrintArea .IsChecked() ? RT_PRINTAREA : RangeType(0))
+ | (aBtnCriteria .IsChecked() ? RT_CRITERIA : RangeType(0));
+ pNewEntry->AddType(nType);
+ }
+
+ // theSymbol gueltig?
+ // (= konnte theSymbol im ScRangeData-Ctor
+ // in ein Token-Array uebersetzt werden?)
+ if ( 0 == pNewEntry->GetErrCode() )
+ {
+ // Eintrag bereits vorhanden? Dann vorher entfernen (=Aendern)
+ if ( aLocalRangeName.SearchName( aNewEntry, nFoundAt ) )
+ { // alten Index uebernehmen
+ pNewEntry->SetIndex(
+ ((ScRangeData*)(aLocalRangeName.At(nFoundAt)))->GetIndex() );
+ aLocalRangeName.AtFree( nFoundAt );
+ }
+ else
+ pSaveObj->Clear();
+
+ if ( !aLocalRangeName.Insert( pNewEntry ) )
+ delete pNewEntry;
+
+ UpdateNames();
+ bSaved=FALSE;
+ RESTORE_DATA()
+ aEdName.SetText(EMPTY_STRING);
+ aEdName.GrabFocus();
+ UpdateChecks();
+ aBtnAdd.SetText( aStrAdd );
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+
+ //@BugID 54702 raus mit dem Sch.
+ //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+
+ bAdded = TRUE;
+ }
+ else // theSymbol ungueltig
+ {
+ delete pNewEntry;
+ ERRORBOX( errMsgInvalidSym );
+ theCurSel = Selection( 0, SELECTION_MAX );
+ aEdAssign.GrabFocus();
+ }
+ }
+ }
+ else
+ {
+ ERRORBOX( ScGlobal::GetRscString(STR_INVALIDNAME) );
+ aEdName.SetSelection( Selection( 0, SELECTION_MAX ) );
+ aEdName.GrabFocus();
+ }
+ }
+
+ return bAdded;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScNameDlg, RemoveBtnHdl, void *, EMPTYARG )
+{
+ USHORT nRemoveAt = 0;
+ const String aStrEntry = aEdName.GetText();
+
+ if ( aLocalRangeName.SearchName( aStrEntry, nRemoveAt ) )
+ {
+ String aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY );
+ String aMsg = aStrDelMsg.GetToken( 0, '#' );
+
+ aMsg += aStrEntry;
+ aMsg += aStrDelMsg.GetToken( 1, '#' );
+
+ if ( RET_YES ==
+ QueryBox( this, WinBits( WB_YES_NO | WB_DEF_YES ), aMsg ).Execute() )
+ {
+ aLocalRangeName.AtFree( nRemoveAt );
+ UpdateNames();
+ UpdateChecks();
+ bSaved=FALSE;
+ RESTORE_DATA()
+ theCurSel = Selection( 0, SELECTION_MAX );
+ aBtnAdd.SetText( aStrAdd );
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ }
+ }
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScNameDlg, NameSelectHdl, void *, EMPTYARG )
+{
+ USHORT nAtPos;
+
+ if ( aLocalRangeName.SearchName( aEdName.GetText(), nAtPos ) )
+ {
+ String aSymbol;
+ ScRangeData* pData = (ScRangeData*)(aLocalRangeName.At( nAtPos ));
+
+ if ( pData )
+ {
+ pData->GetSymbol( aSymbol );
+ CalcCurTableAssign( aSymbol, nAtPos );
+ aEdAssign.SetText( aSymbol );
+ aBtnAdd.SetText( aStrModify );
+ theCurSel = Selection( 0, SELECTION_MAX );
+ }
+ }
+ UpdateChecks();
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScNameDlg, EdModifyHdl, Edit *, pEd )
+{
+ String theName = aEdName.GetText();
+ String theSymbol = aEdAssign.GetText();
+ BOOL bNameFound = (COMBOBOX_ENTRY_NOTFOUND
+ != aEdName.GetEntryPos( theName ));
+
+ if ( pEd == &aEdName )
+ {
+ if ( theName.Len() == 0 )
+ {
+ if ( aBtnAdd.GetText() != aStrAdd )
+ aBtnAdd.SetText( aStrAdd );
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ aGbAssign.Disable();
+ aEdAssign.Disable();
+ aRbAssign.Disable();
+ //@BugID 54702 raus mit dem Sch.
+ //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg
+ }
+ else
+ {
+ if ( bNameFound )
+ {
+ if ( aBtnAdd.GetText() != aStrModify )
+ aBtnAdd.SetText( aStrModify );
+
+ aBtnRemove.Enable();
+
+ if(!bSaved)
+ {
+ bSaved=TRUE;
+ SAVE_DATA()
+ }
+ NameSelectHdl( 0 );
+ }
+ else
+ {
+ if ( aBtnAdd.GetText() != aStrAdd )
+ aBtnAdd.SetText( aStrAdd );
+ aBtnRemove.Disable();
+
+ bSaved=FALSE;
+ RESTORE_DATA()
+ }
+ theSymbol = aEdAssign.GetText();
+
+ if ( theSymbol.Len() > 0 )
+ aBtnAdd.Enable();
+ else
+ aBtnAdd.Disable();
+
+ aGbAssign.Enable();
+ aEdAssign.Enable();
+ aRbAssign.Enable();
+ //@BugID 54702 raus mit dem Sch.
+ //SFX_APPWINDOW->Enable();
+ }
+ UpdateChecks();
+ theCurSel = Selection( 0, SELECTION_MAX );
+ }
+ else if ( pEd == &aEdAssign )
+ {
+ if ( (theName.Len()>0) && (theSymbol.Len()>0) )
+ {
+ aBtnAdd.Enable();
+ if ( bNameFound )
+ aBtnRemove.Enable();
+ }
+ else
+ {
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ }
+ }
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK_INLINE_START( ScNameDlg, AssignGetFocusHdl, void *, EMPTYARG )
+{
+ EdModifyHdl( &aEdAssign );
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScNameDlg, AssignGetFocusHdl, void *, EMPTYARG )
+
+
+
+
+
diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx
new file mode 100644
index 000000000000..6d535bffa5ee
--- /dev/null
+++ b/sc/source/ui/navipi/content.cxx
@@ -0,0 +1,1695 @@
+/*************************************************************************
+ *
+ * $RCSfile: content.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+//#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+//#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+//#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX ***
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX ***
+//#define _SVTREEBOX_HXX ***
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+//#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX ***
+//#define _SFXOBJFACE_HXX ***
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX ***
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX ***
+//#define _SFXDOCTDLG_HXX ***
+//#define _SFX_TEMPLDLG_HXX ***
+//#define _SFXNEW_HXX ***
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+//#define _ARGS_HXX //*
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS ***
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+//#define _SDR_NOUNDO
+#define _SDR_NOXOUTDEV
+//#define _SDR_NOITEMS
+
+
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+//#define _SIDLL_HXX ***
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svditer.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdpagv.hxx>
+#include <svx/svdview.hxx>
+#include <svx/svdxcgv.hxx>
+#include <svx/linkmgr.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <vcl/drag.hxx>
+#include <vcl/help.hxx>
+#include <vcl/sound.hxx>
+#include <tools/urlobj.hxx>
+#include <svtools/urlbmk.hxx>
+#include <stdlib.h>
+
+#include "content.hxx"
+#include "navipi.hxx"
+#include "global.hxx"
+#include "docsh.hxx"
+#include "scmod.hxx"
+#include "rangenam.hxx"
+#include "dbcolect.hxx"
+#include "tablink.hxx" // fuer Loader
+#include "popmenu.hxx"
+#include "drwlayer.hxx"
+#include "dataobj.hxx"
+#include "cell.hxx"
+#include "dociter.hxx"
+#include "scresid.hxx"
+#include "globstr.hrc"
+#include "navipi.hrc"
+#include "arealink.hxx"
+#include "navicfg.hxx"
+
+// Reihenfolge der Kategorien im Navigator -------------------------------------
+
+static USHORT pTypeList[SC_CONTENT_COUNT] =
+{
+ SC_CONTENT_ROOT, // ROOT (0) muss vorne stehen
+ SC_CONTENT_TABLE,
+ SC_CONTENT_RANGENAME,
+ SC_CONTENT_DBAREA,
+ SC_CONTENT_AREALINK,
+ SC_CONTENT_GRAPHIC,
+ SC_CONTENT_OLEOBJECT,
+ SC_CONTENT_NOTE
+};
+
+BOOL ScContentTree::bIsInDrag = FALSE;
+
+
+ScDocShell* ScContentTree::GetManualOrCurrent()
+{
+ ScDocShell* pSh = NULL;
+ if ( aManualDoc.Len() )
+ {
+ TypeId aScType = TYPE(ScDocShell);
+ SfxObjectShell* pObjSh = SfxObjectShell::GetFirst( &aScType );
+ while ( pObjSh && !pSh )
+ {
+ if ( pObjSh->GetTitle() == aManualDoc )
+ pSh = PTR_CAST( ScDocShell, pObjSh );
+ pObjSh = SfxObjectShell::GetNext( *pObjSh, &aScType );
+ }
+ }
+ else
+ {
+ // Current nur, wenn keine manuell eingestellt ist
+ // (damit erkannt wird, wenn das Dokument nicht mehr existiert)
+
+ SfxViewShell* pViewSh = SfxViewShell::Current();
+ if ( pViewSh )
+ {
+ SfxObjectShell* pObjSh = pViewSh->GetViewFrame()->GetObjectShell();
+ pSh = PTR_CAST( ScDocShell, pObjSh );
+ }
+ }
+
+ return pSh;
+}
+
+//
+// ScContentTree
+//
+
+ScContentTree::ScContentTree( Window* pParent, const ResId& rResId ) :
+ SvTreeListBox ( pParent, rResId ),
+ aExpBmp ( ScResId( RID_BMP_EXPAND ) ),
+ aCollBmp ( ScResId( RID_BMP_COLLAPSE ) ),
+ aEntryImages ( ScResId( RID_IMAGELIST_NAVCONT ) ),
+ nRootType ( SC_CONTENT_ROOT ),
+ bHiddenDoc ( FALSE ),
+ pHiddenDocument ( NULL )
+{
+ USHORT i;
+ for (i=0; i<SC_CONTENT_COUNT; i++)
+ pPosList[pTypeList[i]] = i; // invers zum suchen
+
+ pParentWindow = (ScNavigatorDlg*)pParent;
+
+ pRootNodes[0] = NULL;
+ for (i=1; i<SC_CONTENT_COUNT; i++)
+ InitRoot(i);
+
+ SetNodeBitmaps( aExpBmp, aCollBmp );
+
+ SetDoubleClickHdl( LINK( this, ScContentTree, DoubleClickHdl ) );
+}
+
+ScContentTree::~ScContentTree()
+{
+}
+
+void ScContentTree::InitRoot( USHORT nType )
+{
+ if ( !nType )
+ return;
+
+ if ( nRootType && nRootType != nType ) // ausgeblendet ?
+ {
+ pRootNodes[nType] = NULL;
+ return;
+ }
+
+ const Image& rImage = aEntryImages.GetImage( nType );
+ String aName( ScResId( SCSTR_CONTENT_ROOT + nType ) );
+ // wieder an die richtige Position:
+ USHORT nPos = nRootType ? 0 : pPosList[nType]-1;
+ SvLBoxEntry* pNew = InsertEntry( aName, rImage, rImage, NULL, FALSE, nPos );
+ pRootNodes[nType] = pNew;
+}
+
+void ScContentTree::ClearAll()
+{
+ Clear();
+ for (USHORT i=1; i<SC_CONTENT_COUNT; i++)
+ InitRoot(i);
+}
+
+void ScContentTree::ClearType(USHORT nType)
+{
+ if (!nType)
+ ClearAll();
+ else
+ {
+ SvLBoxEntry* pParent = pRootNodes[nType];
+ if ( !pParent || GetChildCount(pParent) ) // nicht, wenn ohne Children schon da
+ {
+ if (pParent)
+ GetModel()->Remove( pParent ); // mit allen Children
+ InitRoot( nType ); // ggf. neu eintragen
+ }
+ }
+}
+
+void ScContentTree::InsertContent( USHORT nType, const String& rValue )
+{
+ if (nType >= SC_CONTENT_COUNT)
+ {
+ DBG_ERROR("ScContentTree::InsertContent mit falschem Typ");
+ return;
+ }
+
+ SvLBoxEntry* pParent = pRootNodes[nType];
+ if (pParent)
+ InsertEntry( rValue, pParent );
+ else
+ DBG_ERROR("InsertContent ohne Parent");
+}
+
+USHORT ScContentTree::GetCurrentContent( String& rValue )
+{
+ SvLBoxEntry* pEntry = GetCurEntry();
+ if (!pEntry)
+ {
+ DBG_ERROR("kein aktueller Eintrag!");
+ rValue.Erase();
+ return 0;
+ }
+ SvLBoxEntry* pParent = GetParent(pEntry); // kann 0 sein, wenn umgeschaltet ist
+
+ USHORT nType = 0;
+ BOOL bRoot = FALSE;
+ for (USHORT i=1; i<SC_CONTENT_COUNT; i++)
+ {
+ if ( pEntry == pRootNodes[i] )
+ {
+ bRoot = TRUE;
+ rValue = GetEntryText(pEntry);
+ }
+ else if ( pParent && pParent == pRootNodes[i] )
+ {
+ nType = i;
+ rValue = GetEntryText(pEntry);
+ }
+ }
+
+ DBG_ASSERT( bRoot || nType, "ScContentTree: unbekannter Eintrag" );
+
+ return nType;
+}
+
+ULONG ScContentTree::GetCurrentIndex( SvLBoxEntry* pCurrent )
+{
+ if (!pCurrent)
+ pCurrent = GetCurEntry();
+ if (!pCurrent)
+ {
+ DBG_ERROR("kein aktueller Eintrag!");
+ return 0;
+ }
+ SvLBoxEntry* pParent = GetParent(pCurrent);
+ if (!pParent)
+ {
+ DBG_ERROR("kein Parent!");
+ return 0;
+ }
+
+ ULONG nIndex = 0;
+ SvLBoxEntry* pEntry = FirstChild( pParent );
+ while (pEntry)
+ {
+ if ( pEntry == pCurrent )
+ return nIndex;
+
+ pEntry = NextSibling( pEntry );
+ ++nIndex;
+ }
+
+ DBG_ERROR("Eintrag nicht gefunden");
+ return 0;
+}
+
+String lcl_GetDBAreaRange( ScDocument* pDoc, const String& rDBName )
+{
+ String aRet;
+ if (pDoc)
+ {
+ ScDBCollection* pDbNames = pDoc->GetDBCollection();
+ USHORT nCount = pDbNames->GetCount();
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ ScDBData* pData = (*pDbNames)[i];
+ if ( pData->GetName() == rDBName )
+ {
+ ScRange aRange;
+ pData->GetArea(aRange);
+ aRange.Format( aRet, SCR_ABS_3D, pDoc );
+ break;
+ }
+ }
+ }
+ return aRet;
+}
+
+IMPL_LINK( ScContentTree, DoubleClickHdl, ScContentTree *, EMPTYARG )
+{
+ String aText;
+ USHORT nType = GetCurrentContent( aText );
+ if ( nType )
+ {
+ if ( bHiddenDoc )
+ return 0; //! spaeter...
+
+ if ( aManualDoc.Len() )
+ pParentWindow->SetCurrentDoc( aManualDoc );
+
+ switch( nType )
+ {
+ case SC_CONTENT_TABLE:
+ pParentWindow->SetCurrentTableStr( aText );
+ break;
+ case SC_CONTENT_RANGENAME:
+ pParentWindow->SetCurrentCellStr( aText );
+ break;
+ case SC_CONTENT_DBAREA:
+ {
+ // #47905# Wenn gleiche Bereichs- und DB-Namen existieren, wird
+ // bei SID_CURRENTCELL der Bereichsname genommen.
+ // DB-Bereiche darum direkt ueber die Adresse anspringen.
+
+ String aRangeStr = lcl_GetDBAreaRange( GetSourceDocument(), aText );
+ if (aRangeStr.Len())
+ pParentWindow->SetCurrentCellStr( aRangeStr );
+ }
+ break;
+ case SC_CONTENT_OLEOBJECT:
+ case SC_CONTENT_GRAPHIC:
+ pParentWindow->SetCurrentObject( aText );
+ break;
+ case SC_CONTENT_NOTE:
+ {
+ ULONG nIndex = GetCurrentIndex();
+ ScAddress aPos = GetNotePos(nIndex);
+ pParentWindow->SetCurrentTable( aPos.Tab() );
+ pParentWindow->SetCurrentCell( aPos.Col(), aPos.Row() );
+ }
+ break;
+ case SC_CONTENT_AREALINK:
+ {
+ ULONG nIndex = GetCurrentIndex();
+ const ScAreaLink* pLink = GetLink(nIndex);
+ if (pLink)
+ {
+ ScRange aRange = pLink->GetDestArea();
+ String aRangeStr;
+ aRange.Format( aRangeStr, SCR_ABS_3D, GetSourceDocument() );
+ pParentWindow->SetCurrentCellStr( aRangeStr );
+ }
+ }
+ break;
+ }
+
+ ScNavigatorDlg::ReleaseFocus(); // set focus into document
+ }
+
+ return 0;
+}
+
+void ScContentTree::KeyInput( const KeyEvent& rKEvt )
+{
+ BOOL bUsed = FALSE;
+
+ const KeyCode aCode = rKEvt.GetKeyCode();
+ if (aCode.GetCode() == KEY_RETURN)
+ {
+ switch (aCode.GetModifier())
+ {
+ case KEY_MOD1:
+ ToggleRoot(); // toggle root mode (as in Writer)
+ bUsed = TRUE;
+ break;
+ case 0:
+ {
+ String aText;
+ USHORT nType = GetCurrentContent( aText );
+ if ( nType == SC_CONTENT_ROOT )
+ {
+ SvLBoxEntry* pEntry = GetCurEntry();
+ if ( pEntry )
+ {
+ if ( IsExpanded(pEntry) )
+ Collapse(pEntry);
+ else
+ Expand(pEntry);
+ }
+ }
+ else
+ DoubleClickHdl(0); // select content as if double clicked
+ bUsed = TRUE;
+ }
+ break;
+ }
+ }
+
+ if (!bUsed)
+ SvTreeListBox::KeyInput(rKEvt);
+}
+
+BOOL __EXPORT ScContentTree::Drop( const DropEvent& rEvt )
+{
+ return pParentWindow->Drop(rEvt); // Drop auf Navigator
+}
+
+BOOL __EXPORT ScContentTree::QueryDrop( DropEvent& rEvt )
+{
+ return pParentWindow->QueryDrop(rEvt); // Drop auf Navigator
+}
+
+void __EXPORT ScContentTree::Command( const CommandEvent& rCEvt )
+{
+ BOOL bDone = FALSE;
+
+ switch ( rCEvt.GetCommand() )
+ {
+ case COMMAND_STARTDRAG:
+ // Aus dem ExecuteDrag heraus kann der Navigator geloescht werden
+ // (beim Umschalten auf einen anderen Dokument-Typ), das wuerde aber
+ // den StarView MouseMove-Handler, der Command() aufruft, umbringen.
+ // Deshalb Drag&Drop asynchron:
+
+// DoDrag();
+
+ Application::PostUserEvent( STATIC_LINK( this, ScContentTree, ExecDragHdl ) );
+
+ bDone = TRUE;
+ break;
+
+ case COMMAND_CONTEXTMENU:
+ {
+ // Drag-Drop Modus
+
+ PopupMenu aPop;
+ ScPopupMenu aDropMenu( ScResId( RID_POPUP_DROPMODE ) );
+ aDropMenu.CheckItem( RID_DROPMODE_URL + pParentWindow->GetDropMode() );
+ aPop.InsertItem( 1, pParentWindow->GetStrDragMode() );
+ aPop.SetPopupMenu( 1, &aDropMenu );
+
+ // angezeigtes Dokument
+
+ ScPopupMenu aDocMenu;
+ aDocMenu.SetMenuFlags( aDocMenu.GetMenuFlags() | MENU_FLAG_NOAUTOMNEMONICS );
+ USHORT i=0;
+ USHORT nPos=0;
+ // geladene Dokumente
+ ScDocShell* pCurrentSh = PTR_CAST( ScDocShell, SfxObjectShell::Current() );
+ SfxObjectShell* pSh = SfxObjectShell::GetFirst();
+ while ( pSh )
+ {
+ if ( pSh->ISA(ScDocShell) )
+ {
+ String aName = pSh->GetTitle();
+ String aEntry = aName;
+ if ( pSh == pCurrentSh )
+ aEntry += pParentWindow->aStrActive;
+ else
+ aEntry += pParentWindow->aStrNotActive;
+ aDocMenu.InsertItem( ++i, aEntry );
+ if ( !bHiddenDoc && aName == aManualDoc )
+ nPos = i;
+ }
+ pSh = SfxObjectShell::GetNext( *pSh );
+ }
+ // "aktives Fenster"
+ aDocMenu.InsertItem( ++i, pParentWindow->aStrActiveWin );
+ if (!bHiddenDoc && !aManualDoc.Len())
+ nPos = i;
+ // verstecktes Dokument
+ if ( aHiddenTitle.Len() )
+ {
+ String aEntry = aHiddenTitle;
+ aEntry += pParentWindow->aStrHidden;
+ aDocMenu.InsertItem( ++i, aEntry );
+ if (bHiddenDoc)
+ nPos = i;
+ }
+ aDocMenu.CheckItem( nPos );
+ aPop.InsertItem( 2, pParentWindow->GetStrDisplay() );
+ aPop.SetPopupMenu( 2, &aDocMenu );
+
+ // ausfuehren
+
+ aPop.Execute( this, rCEvt.GetMousePosPixel() );
+
+ if ( aDropMenu.WasHit() ) // Drag-Drop Modus
+ {
+ USHORT nId = aDropMenu.GetSelected();
+ if ( nId >= RID_DROPMODE_URL && nId <= RID_DROPMODE_COPY )
+ pParentWindow->SetDropMode( nId - RID_DROPMODE_URL );
+ }
+ else if ( aDocMenu.WasHit() ) // angezeigtes Dokument
+ {
+ USHORT nId = aDocMenu.GetSelected();
+ String aName = aDocMenu.GetItemText(nId);
+ SelectDoc( aName );
+ }
+ }
+ break;
+ }
+
+ if (!bDone)
+ SvTreeListBox::Command(rCEvt);
+}
+
+void __EXPORT ScContentTree::RequestHelp( const HelpEvent& rHEvt )
+{
+ BOOL bDone = FALSE;
+ if( rHEvt.GetMode() & HELPMODE_QUICK )
+ {
+ Point aPos( ScreenToOutputPixel( rHEvt.GetMousePosPixel() ));
+ SvLBoxEntry* pEntry = GetEntry( aPos );
+ if ( pEntry )
+ {
+ BOOL bRet = FALSE;
+ String aHelpText;
+ SvLBoxEntry* pParent = GetParent(pEntry);
+ if ( !pParent ) // Top-Level ?
+ {
+ aHelpText = String::CreateFromInt32( GetChildCount(pEntry) );
+ aHelpText += ' ';
+ aHelpText += GetEntryText(pEntry);
+ bRet = TRUE;
+ }
+ else if ( pParent == pRootNodes[SC_CONTENT_NOTE] )
+ {
+ aHelpText = GetEntryText(pEntry); // Notizen als Help-Text
+ bRet = TRUE;
+ }
+ else if ( pParent == pRootNodes[SC_CONTENT_AREALINK] )
+ {
+ ULONG nIndex = GetCurrentIndex(pEntry);
+ const ScAreaLink* pLink = GetLink(nIndex);
+ if (pLink)
+ {
+ aHelpText = pLink->GetFile(); // Source-Datei als Help-Text
+ bRet = TRUE;
+ }
+ }
+
+ if (bRet)
+ {
+ SvLBoxTab* pTab;
+ SvLBoxString* pItem = (SvLBoxString*)(GetItem( pEntry, aPos.X(), &pTab ));
+ if( pItem )
+ {
+ aPos = GetEntryPos( pEntry );
+ aPos.X() = GetTabPos( pEntry, pTab );
+ aPos = OutputToScreenPixel(aPos);
+ Size aSize( pItem->GetSize( this, pEntry ) );
+
+ Rectangle aItemRect( aPos, aSize );
+ Help::ShowQuickHelp( this, aItemRect, aHelpText );
+ bDone = TRUE;
+ }
+ }
+ }
+ }
+ if (!bDone)
+ Window::RequestHelp( rHEvt );
+}
+
+ScDocument* ScContentTree::GetSourceDocument()
+{
+ if (bHiddenDoc)
+ return pHiddenDocument;
+ else
+ {
+ ScDocShell* pSh = GetManualOrCurrent();
+ if (pSh)
+ return pSh->GetDocument();
+
+ }
+ return NULL;
+}
+
+void ScContentTree::Refresh(USHORT nType)
+{
+ if ( bHiddenDoc && !pHiddenDocument )
+ return; // anderes Dokument angezeigt
+
+ // wenn sich nichts geaendert hat, gleich abbrechen (gegen Geflacker)
+
+ if ( nType == SC_CONTENT_NOTE )
+ if (!NoteStringsChanged())
+ return;
+ if ( nType == SC_CONTENT_GRAPHIC )
+ if (!DrawNamesChanged(SC_CONTENT_GRAPHIC, OBJ_GRAF))
+ return;
+ if ( nType == SC_CONTENT_OLEOBJECT )
+ if (!DrawNamesChanged(SC_CONTENT_OLEOBJECT, OBJ_OLE2))
+ return;
+
+ // Expand-Zustand merken
+ //! und Selektion
+
+ USHORT i;
+ BOOL bExpanded[SC_CONTENT_COUNT];
+ BOOL bSelected[SC_CONTENT_COUNT];
+ for (i=1; i<SC_CONTENT_COUNT; i++)
+ {
+ if (pRootNodes[i])
+ {
+ bExpanded[i] = IsExpanded( pRootNodes[i] );
+ bSelected[i] = IsSelected( pRootNodes[i] );
+ }
+ else
+ bExpanded[i] = bSelected[i] = FALSE;
+ }
+
+ SetUpdateMode(FALSE);
+
+ ClearType( nType );
+
+ if ( !nType || nType == SC_CONTENT_TABLE )
+ GetTableNames();
+ if ( !nType || nType == SC_CONTENT_RANGENAME )
+ GetAreaNames();
+ if ( !nType || nType == SC_CONTENT_DBAREA )
+ GetDbNames();
+ if ( !nType || nType == SC_CONTENT_GRAPHIC )
+ GetGraphicNames();
+ if ( !nType || nType == SC_CONTENT_OLEOBJECT )
+ GetOleNames();
+ if ( !nType || nType == SC_CONTENT_NOTE )
+ GetNoteStrings();
+ if ( !nType || nType == SC_CONTENT_AREALINK )
+ GetLinkNames();
+
+ for (i=1; i<SC_CONTENT_COUNT; i++)
+ if (pRootNodes[i])
+ {
+ if ( bExpanded[i] != IsExpanded(pRootNodes[i]) )
+ {
+ if ( bExpanded[i] )
+ Expand(pRootNodes[i]);
+ else
+ Collapse(pRootNodes[i]);
+ }
+ if ( bSelected[i] != IsSelected(pRootNodes[i]) )
+ Select( pRootNodes[i], bSelected[i] );
+ }
+
+ SetUpdateMode(TRUE);
+}
+
+void ScContentTree::GetTableNames()
+{
+ if ( nRootType && nRootType != SC_CONTENT_TABLE ) // ausgeblendet ?
+ return;
+
+ ScDocument* pDoc = GetSourceDocument();
+ if (!pDoc)
+ return;
+
+ String aName;
+ USHORT nCount = pDoc->GetTableCount();
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ pDoc->GetName( i, aName );
+ InsertContent( SC_CONTENT_TABLE, aName );
+ }
+}
+
+void ScContentTree::GetAreaNames()
+{
+ if ( nRootType && nRootType != SC_CONTENT_RANGENAME ) // ausgeblendet ?
+ return;
+
+ ScDocument* pDoc = GetSourceDocument();
+ if (!pDoc)
+ return;
+
+ ScRangeName* pRangeNames = pDoc->GetRangeName();
+ USHORT nCount = pRangeNames->GetCount();
+ if ( nCount > 0 )
+ {
+ USHORT nValidCount = 0;
+ ScRange aDummy;
+ USHORT i;
+ for ( i=0; i<nCount; i++ )
+ {
+ ScRangeData* pData = (*pRangeNames)[i];
+ if (pData->IsReference(aDummy))
+ nValidCount++;
+ }
+ if ( nValidCount )
+ {
+ ScRangeData** ppSortArray = new ScRangeData* [ nValidCount ];
+ USHORT j;
+ for ( i=0, j=0; i<nCount; i++ )
+ {
+ ScRangeData* pData = (*pRangeNames)[i];
+ if (pData->IsReference(aDummy))
+ ppSortArray[j++] = pData;
+ }
+#ifndef ICC
+ qsort( (void*)ppSortArray, nValidCount, sizeof(ScRangeData*),
+ &ScRangeData::QsortNameCompare );
+#else
+ qsort( (void*)ppSortArray, nValidCount, sizeof(ScRangeData*),
+ ICCQsortNameCompare );
+#endif
+ for ( j=0; j<nValidCount; j++ )
+ InsertContent( SC_CONTENT_RANGENAME, ppSortArray[j]->GetName() );
+ delete [] ppSortArray;
+ }
+ }
+}
+
+void ScContentTree::GetDbNames()
+{
+ if ( nRootType && nRootType != SC_CONTENT_DBAREA ) // ausgeblendet ?
+ return;
+
+ ScDocument* pDoc = GetSourceDocument();
+ if (!pDoc)
+ return;
+
+ ScDBCollection* pDbNames = pDoc->GetDBCollection();
+ USHORT nCount = pDbNames->GetCount();
+ if ( nCount > 0 )
+ {
+ String aStrNoName( ScGlobal::GetRscString(STR_DB_NONAME) );
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ ScDBData* pData = (*pDbNames)[i];
+ String aStrName = pData->GetName();
+ if ( aStrName != aStrNoName )
+ InsertContent( SC_CONTENT_DBAREA, aStrName );
+ }
+ }
+}
+
+void ScContentTree::GetDrawNames( USHORT nType, USHORT nId )
+{
+ if ( nRootType && nRootType != nType ) // ausgeblendet ?
+ return;
+
+ ScDocument* pDoc = GetSourceDocument();
+ if (!pDoc)
+ return;
+
+ ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+ SfxObjectShell* pShell = pDoc->GetDocumentShell();
+ if (pDrawLayer && pShell)
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ {
+ SdrPage* pPage = pDrawLayer->GetPage(nTab);
+ DBG_ASSERT(pPage,"Page ?");
+ if (pPage)
+ {
+ SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject)
+ {
+ if ( pObject->GetObjIdentifier() == nId )
+ {
+ String aName = pObject->GetName();
+ if (aName.Len())
+ InsertContent( nType, aName );
+ }
+
+ pObject = aIter.Next();
+ }
+ }
+ }
+ }
+}
+
+void ScContentTree::GetGraphicNames()
+{
+ GetDrawNames( SC_CONTENT_GRAPHIC, OBJ_GRAF );
+}
+
+void ScContentTree::GetOleNames()
+{
+ GetDrawNames( SC_CONTENT_OLEOBJECT, OBJ_OLE2 );
+}
+
+void ScContentTree::GetLinkNames()
+{
+ if ( nRootType && nRootType != SC_CONTENT_AREALINK ) // ausgeblendet ?
+ return;
+
+ ScDocument* pDoc = GetSourceDocument();
+ if (!pDoc)
+ return;
+
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+ DBG_ASSERT(pLinkManager, "kein LinkManager am Dokument?")
+ const SvBaseLinks& rLinks = pLinkManager->GetLinks();
+ USHORT nCount = rLinks.Count();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ SvBaseLink* pBase = *rLinks[i];
+ if (pBase->ISA(ScAreaLink))
+ InsertContent( SC_CONTENT_AREALINK, ((ScAreaLink*)pBase)->GetSource() );
+
+ // in der Liste die Namen der Quellbereiche
+ }
+}
+
+const ScAreaLink* ScContentTree::GetLink( ULONG nIndex )
+{
+ ScDocument* pDoc = GetSourceDocument();
+ if (!pDoc)
+ return NULL;
+
+ ULONG nFound = 0;
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+ DBG_ASSERT(pLinkManager, "kein LinkManager am Dokument?")
+ const SvBaseLinks& rLinks = pLinkManager->GetLinks();
+ USHORT nCount = rLinks.Count();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ SvBaseLink* pBase = *rLinks[i];
+ if (pBase->ISA(ScAreaLink))
+ {
+ if (nFound == nIndex)
+ return (const ScAreaLink*) pBase;
+ ++nFound;
+ }
+ }
+
+ DBG_ERROR("Link nicht gefunden");
+ return NULL;
+}
+
+String lcl_NoteString( const ScPostIt& rNote )
+{
+ String aText = rNote.GetText();
+ aText.ConvertLineEnd( LINEEND_CR );
+ xub_StrLen nAt;
+ while ( (nAt = aText.Search( CHAR_CR )) != STRING_NOTFOUND )
+ aText.SetChar( nAt, ' ' );
+ return aText;
+}
+
+void ScContentTree::GetNoteStrings()
+{
+ if ( nRootType && nRootType != SC_CONTENT_NOTE ) // ausgeblendet ?
+ return;
+
+ ScDocument* pDoc = GetSourceDocument();
+ if (!pDoc)
+ return;
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ {
+ ScCellIterator aIter( pDoc, 0,0,nTab, MAXCOL,MAXROW,nTab );
+ ScBaseCell* pCell = aIter.GetFirst();
+ while (pCell)
+ {
+ const ScPostIt* pNote = pCell->GetNotePtr();
+ if (pNote)
+ InsertContent( SC_CONTENT_NOTE, lcl_NoteString(*pNote) );
+
+ pCell = aIter.GetNext();
+ }
+ }
+}
+
+ScAddress ScContentTree::GetNotePos( ULONG nIndex )
+{
+ ScDocument* pDoc = GetSourceDocument();
+ if (!pDoc)
+ return ScAddress();
+
+ ULONG nFound = 0;
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ {
+ ScCellIterator aIter( pDoc, 0,0,nTab, MAXCOL,MAXROW,nTab );
+ ScBaseCell* pCell = aIter.GetFirst();
+ while (pCell)
+ {
+ const ScPostIt* pNote = pCell->GetNotePtr();
+ if (pNote)
+ {
+ if (nFound == nIndex)
+ return ScAddress( aIter.GetCol(), aIter.GetRow(), nTab ); // gefunden
+ ++nFound;
+ }
+ pCell = aIter.GetNext();
+ }
+ }
+
+ DBG_ERROR("Notiz nicht gefunden");
+ return ScAddress();
+}
+
+BOOL ScContentTree::NoteStringsChanged()
+{
+ ScDocument* pDoc = GetSourceDocument();
+ if (!pDoc)
+ return FALSE;
+
+ SvLBoxEntry* pParent = pRootNodes[SC_CONTENT_NOTE];
+ if (!pParent)
+ return FALSE;
+
+ SvLBoxEntry* pEntry = FirstChild( pParent );
+
+ BOOL bEqual = TRUE;
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount && bEqual; nTab++)
+ {
+ ScCellIterator aIter( pDoc, 0,0,nTab, MAXCOL,MAXROW,nTab );
+ ScBaseCell* pCell = aIter.GetFirst();
+ while (pCell && bEqual)
+ {
+ const ScPostIt* pNote = pCell->GetNotePtr();
+ if (pNote)
+ {
+ if ( !pEntry )
+ bEqual = FALSE;
+ else
+ {
+ if ( lcl_NoteString(*pNote) != GetEntryText(pEntry) )
+ bEqual = FALSE;
+
+ pEntry = NextSibling( pEntry );
+ }
+ }
+ pCell = aIter.GetNext();
+ }
+ }
+
+ if ( pEntry )
+ bEqual = FALSE; // kommt noch was
+
+ return !bEqual;
+}
+
+BOOL ScContentTree::DrawNamesChanged( USHORT nType, USHORT nId )
+{
+ ScDocument* pDoc = GetSourceDocument();
+ if (!pDoc)
+ return FALSE;
+
+ SvLBoxEntry* pParent = pRootNodes[nType];
+ if (!pParent)
+ return FALSE;
+
+ SvLBoxEntry* pEntry = FirstChild( pParent );
+
+ BOOL bEqual = TRUE;
+ ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+ SfxObjectShell* pShell = pDoc->GetDocumentShell();
+ if (pDrawLayer && pShell)
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount && bEqual; nTab++)
+ {
+ SdrPage* pPage = pDrawLayer->GetPage(nTab);
+ DBG_ASSERT(pPage,"Page ?");
+ if (pPage)
+ {
+ SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject && bEqual)
+ {
+ if ( pObject->GetObjIdentifier() == nId )
+ {
+ if ( !pEntry )
+ bEqual = FALSE;
+ else
+ {
+ if ( pObject->GetName() != GetEntryText(pEntry) )
+ bEqual = FALSE;
+
+ pEntry = NextSibling( pEntry );
+ }
+ }
+ pObject = aIter.Next();
+ }
+ }
+ }
+ }
+
+ if ( pEntry )
+ bEqual = FALSE; // kommt noch was
+
+ return !bEqual;
+}
+
+BOOL lcl_GetRange( ScDocument* pDoc, USHORT nType, const String& rName, ScRange& rRange )
+{
+ BOOL bFound = FALSE;
+ USHORT nPos;
+
+ if ( nType == SC_CONTENT_RANGENAME )
+ {
+ ScRangeName* pList = pDoc->GetRangeName();
+ if (pList)
+ if (pList->SearchName( rName, nPos ))
+ if ( (*pList)[nPos]->IsReference( rRange ) )
+ bFound = TRUE;
+ }
+ else if ( nType == SC_CONTENT_DBAREA )
+ {
+ ScDBCollection* pList = pDoc->GetDBCollection();
+ if (pList)
+ if (pList->SearchName( rName, nPos ))
+ {
+ USHORT nTab,nCol1,nRow1,nCol2,nRow2;
+ (*pList)[nPos]->GetArea(nTab,nCol1,nRow1,nCol2,nRow2);
+ rRange = ScRange( nCol1,nRow1,nTab, nCol2,nRow2,nTab );
+ bFound = TRUE;
+ }
+ }
+
+ return bFound;
+}
+
+void lcl_DoDragObject( ScDocument* pSrcDoc, const String& rName, USHORT nType, Window* pWin )
+{
+ ScDrawLayer* pModel = pSrcDoc->GetDrawLayer();
+ if (pModel)
+ {
+ BOOL bOle = ( nType == SC_CONTENT_OLEOBJECT );
+ USHORT nDrawId = bOle ? OBJ_OLE2 : OBJ_GRAF;
+ USHORT nTab = 0;
+ SdrObject* pObject = pModel->GetNamedObject( rName, nDrawId, nTab );
+ if (pObject)
+ {
+ ScModule* pScMod = SC_MOD();
+
+ SdrView aEditView( pModel );
+ aEditView.ShowPagePgNum( nTab, Point() );
+ SdrPageView* pPV = aEditView.GetPageViewPvNum(0);
+ aEditView.MarkObj(pObject, pPV);
+
+ SdrModel* pDragModel = aEditView.GetAllMarkedModel();
+
+ SvDataObjectRef pDragServer = new ScDataObject( pDragModel,
+ (ScDocShell*)pSrcDoc->GetDocumentShell(), bOle );
+ pScMod->SetDragObject(pDragModel, &aEditView, SC_DROP_NAVIGATOR);
+ pWin->ReleaseMouse();
+ DropAction eDropAction = pDragServer->ExecuteDrag(pWin,
+ POINTER_COPYDATA, POINTER_COPYDATA, POINTER_LINKDATA,
+ DRAG_ALL);
+ BOOL bIntern = pScMod->GetDragIntern();
+ pScMod->ResetDragObject();
+ pDragServer.Clear();
+ }
+ }
+}
+
+void ScContentTree::DoDrag()
+{
+ ScDocumentLoader* pDocLoader = NULL;
+ bIsInDrag = TRUE;
+
+ DragServer::Clear();
+ BOOL bOk = FALSE;
+ ScModule* pScMod = SC_MOD();
+
+ String aText;
+ USHORT nType = GetCurrentContent( aText );
+ if ( nType && nType != SC_CONTENT_NOTE
+ && nType != SC_CONTENT_AREALINK ) // Notizen und AreaLinks gar nicht
+ {
+ ScDocument* pLocalDoc = NULL; // fuer URL-Drop
+ String aDocName;
+ if (bHiddenDoc)
+ aDocName = aHiddenName;
+ else
+ {
+ ScDocShell* pDocSh = GetManualOrCurrent();
+ if (pDocSh)
+ {
+ if (pDocSh->HasName())
+ aDocName = pDocSh->GetMedium()->GetName();
+ else
+ pLocalDoc = pDocSh->GetDocument(); // Drop nur in dieses Dokument
+ }
+ }
+
+ USHORT nDropMode = pParentWindow->GetDropMode();
+ switch ( nDropMode )
+ {
+ case SC_DROPMODE_URL:
+ {
+ String aUrl = aDocName;
+ aUrl += '#';
+ aUrl += aText;
+
+ pScMod->SetDragJump( pLocalDoc, aUrl, aText );
+
+ if (aDocName.Len())
+ {
+ // URL nur nach aussen geben, wenn das Doc einen Namen hat
+ // (ohne Namen nur intern, ueber SetDragJump)
+ INetBookmark aBmk(aUrl, aText);
+ aBmk.CopyDragServer();
+ }
+ bOk = TRUE;
+ }
+ break;
+ case SC_DROPMODE_LINK:
+ {
+ if ( aDocName.Len() ) // Verknuepfung nur mit benannten Docs
+ {
+ // fuer Drop im Calc Flag setzen, dass Verknuepfung eingefuegt wird
+
+ switch ( nType )
+ {
+ case SC_CONTENT_TABLE:
+ pScMod->SetDragLink( aDocName, aText, EMPTY_STRING );
+ bOk = TRUE;
+ break;
+ case SC_CONTENT_RANGENAME:
+ case SC_CONTENT_DBAREA:
+ pScMod->SetDragLink( aDocName, EMPTY_STRING, aText );
+ bOk = TRUE;
+ break;
+
+ // andere koennen nicht gelinkt werden
+ }
+ }
+ }
+ break;
+ case SC_DROPMODE_COPY:
+ {
+ ScDocShell* pSrcShell = NULL;
+ if ( bHiddenDoc )
+ {
+ String aFilter, aOptions;
+ pDocLoader = new ScDocumentLoader( aHiddenName, aFilter, aOptions );
+ if (!pDocLoader->IsError())
+ pSrcShell = pDocLoader->GetDocShell();
+ }
+ else
+ pSrcShell = GetManualOrCurrent();
+
+ if ( pSrcShell )
+ {
+ ScDocument* pSrcDoc = pSrcShell->GetDocument();
+ if ( nType == SC_CONTENT_RANGENAME || nType == SC_CONTENT_DBAREA )
+ {
+ ScRange aRange;
+ if ( lcl_GetRange( pSrcDoc, nType, aText, aRange ) )
+ {
+ // @ 05.01.98
+ // sollte noch ueberarbeitet werden
+ pScMod->SetDragObject(ScMarkData(), aRange, 0,0, pSrcDoc, SC_DROP_NAVIGATOR );
+ bOk = TRUE;
+ }
+ }
+ else if ( nType == SC_CONTENT_TABLE )
+ {
+ USHORT nTab;
+ if ( pSrcDoc->GetTable( aText, nTab ) )
+ {
+ ScRange aRange( 0,0,nTab, MAXCOL,MAXROW,nTab );
+
+ ScMarkData aMarkData;
+
+ aMarkData.SetMarkArea(aRange);
+ aMarkData.SelectTable(nTab, TRUE);
+
+ pScMod->SetDragObject( aMarkData, aRange, 0,0, pSrcDoc,
+ SC_DROP_NAVIGATOR | SC_DROP_TABLE );
+ bOk = TRUE;
+ }
+ }
+ else if ( nType == SC_CONTENT_GRAPHIC || nType == SC_CONTENT_OLEOBJECT )
+ {
+ lcl_DoDragObject( pSrcDoc, aText, nType, this );
+
+ // in ExecuteDrag kann der Navigator geloescht worden sein
+ // -> nicht mehr auf Member zugreifen !!!
+ }
+ }
+ }
+ break;
+ }
+
+ if (bOk)
+ {
+ // #41821# Unter OS/2 muss fuer ExecuteDrag immer etwas im DragServer sein
+ // #45443# dito mit VCL, CopyPrivateData geht mit VCL auch nicht
+ if (!DragServer::GetFormatCount(0))
+ DragServer::CopyRequest(FORMAT_PRIVATE);
+
+ Pointer aCopy(POINTER_COPYDATA);
+ ReleaseMouse();
+ ExecuteDrag( aCopy, aCopy, DROP_LINK );
+
+ // in ExecuteDrag kann der Navigator geloescht worden sein
+ // -> nicht mehr auf Member zugreifen !!!
+
+ pScMod->ResetDragObject();
+ }
+ }
+
+ bIsInDrag = FALSE; // static Member
+
+ delete pDocLoader; // falls Dokument zum Draggen geladen wurde
+}
+
+IMPL_STATIC_LINK(ScContentTree, ExecDragHdl, void*, EMPTYARG)
+{
+ // als Link, damit asynchron ohne ImpMouseMoveMsg auf dem Stack auch der
+ // Navigator geloescht werden darf
+
+ pThis->DoDrag();
+ return 0;
+}
+
+void ScContentTree::AdjustTitle()
+{
+ String aTitle = pParentWindow->aTitleBase;
+ if (bHiddenDoc)
+ {
+ aTitle.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " - " ));
+ aTitle += aHiddenTitle;
+ }
+ pParentWindow->SetText(aTitle);
+}
+
+BOOL ScContentTree::LoadFile( const String& rUrl )
+{
+ String aDocName = rUrl;
+ xub_StrLen nPos = aDocName.Search('#');
+ if ( nPos != STRING_NOTFOUND )
+ aDocName.Erase(nPos); // nur der Name, ohne #...
+
+ BOOL bReturn = FALSE;
+ String aFilter, aOptions;
+ ScDocumentLoader aLoader( aDocName, aFilter, aOptions );
+ if ( !aLoader.IsError() )
+ {
+ bHiddenDoc = TRUE;
+ aHiddenName = aDocName;
+ aHiddenTitle = aLoader.GetTitle();
+ pHiddenDocument = aLoader.GetDocument();
+
+ Refresh(); // Inhalte aus geladenem Dokument holen
+
+ pHiddenDocument = NULL;
+// AdjustTitle();
+
+ pParentWindow->GetDocNames( &aHiddenTitle ); // Liste fuellen
+ }
+ else
+ Sound::Beep(); // Fehler beim Laden
+
+ // Dokument wird im dtor von ScDocumentLoader wieder geschlossen
+
+ return bReturn;
+}
+
+void ScContentTree::InitWindowBits( BOOL bButtons )
+{
+ WinBits nFlags = WB_CLIPCHILDREN|WB_HSCROLL;
+ if (bButtons)
+ nFlags |= WB_HASBUTTONS|WB_HASBUTTONSATROOT;
+
+ SetWindowBits( nFlags );
+}
+
+void ScContentTree::SetRootType( USHORT nNew )
+{
+ if ( nNew != nRootType )
+ {
+ nRootType = nNew;
+ InitWindowBits( nNew == 0 );
+ Refresh();
+
+ ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
+ rCfg.SetRootType( nRootType );
+ }
+}
+
+void ScContentTree::ToggleRoot() // nach Selektion
+{
+ USHORT nNew = SC_CONTENT_ROOT;
+ if ( nRootType == SC_CONTENT_ROOT )
+ {
+ SvLBoxEntry* pEntry = GetCurEntry();
+ if (pEntry)
+ {
+ SvLBoxEntry* pParent = GetParent(pEntry);
+ for (USHORT i=1; i<SC_CONTENT_COUNT; i++)
+ if ( pEntry == pRootNodes[i] || pParent == pRootNodes[i] )
+ nNew = i;
+ }
+ }
+
+ SetRootType( nNew );
+}
+
+void ScContentTree::ResetManualDoc()
+{
+ aManualDoc.Erase();
+ bHiddenDoc = FALSE;
+
+ ActiveDocChanged();
+}
+
+void ScContentTree::ActiveDocChanged()
+{
+ if ( !bHiddenDoc && !aManualDoc.Len() )
+ Refresh(); // Inhalte nur wenn automatisch
+
+ // Listbox muss immer geupdated werden, wegen aktiv-Flag
+
+ String aCurrent;
+ if ( bHiddenDoc )
+ aCurrent = aHiddenTitle;
+ else
+ {
+ ScDocShell* pSh = GetManualOrCurrent();
+ if (pSh)
+ aCurrent = pSh->GetTitle();
+ else
+ {
+ // eingestelltes Dokument existiert nicht mehr
+
+ aManualDoc.Erase(); // wieder automatisch
+ Refresh();
+ pSh = GetManualOrCurrent(); // sollte jetzt aktives sein
+ if (pSh)
+ aCurrent = pSh->GetTitle();
+ }
+ }
+ pParentWindow->GetDocNames( &aCurrent ); // selektieren
+}
+
+void ScContentTree::SetManualDoc(const String& rName)
+{
+ aManualDoc = rName;
+ if (!bHiddenDoc)
+ {
+ Refresh();
+ pParentWindow->GetDocNames( &aManualDoc ); // selektieren
+ }
+}
+
+void ScContentTree::SelectDoc(const String& rName) // rName wie im Menue/Listbox angezeigt
+{
+ if ( rName == pParentWindow->aStrActiveWin )
+ {
+ ResetManualDoc();
+ return;
+ }
+
+ // "aktiv" oder "inaktiv" weglassen
+
+ String aRealName = rName;
+ xub_StrLen nLen = rName.Len();
+ xub_StrLen nActiveStart = nLen - pParentWindow->aStrActive.Len();
+ if ( rName.Copy( nActiveStart ) == pParentWindow->aStrActive )
+ aRealName = rName.Copy( 0, nActiveStart );
+ xub_StrLen nNotActiveStart = nLen - pParentWindow->aStrNotActive.Len();
+ if ( rName.Copy( nNotActiveStart ) == pParentWindow->aStrNotActive )
+ aRealName = rName.Copy( 0, nNotActiveStart );
+
+ //
+
+ BOOL bLoaded = FALSE;
+
+ // ist es ein normal geladenes Doc ?
+
+ SfxObjectShell* pSh = SfxObjectShell::GetFirst();
+ while ( pSh && !bLoaded )
+ {
+ if ( pSh->ISA(ScDocShell) )
+ if ( pSh->GetTitle() == aRealName )
+ bLoaded = TRUE;
+ pSh = SfxObjectShell::GetNext( *pSh );
+ }
+
+ if (bLoaded)
+ {
+ bHiddenDoc = FALSE;
+ SetManualDoc(aRealName);
+ }
+ else if (aHiddenTitle.Len()) // verstecktes ausgewaehlt
+ {
+ if (!bHiddenDoc)
+ LoadFile(aHiddenName);
+ }
+ else
+ DBG_ERROR("SelectDoc: nicht gefunden");
+}
+
+//
+//------------------------------------------------------------------------
+//
+
+
+
+
+
diff --git a/sc/source/ui/navipi/makefile.mk b/sc/source/ui/navipi/makefile.mk
new file mode 100644
index 000000000000..f1a8f12d20e6
--- /dev/null
+++ b/sc/source/ui/navipi/makefile.mk
@@ -0,0 +1,94 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=navipi
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+IMGLST_SRS=$(SRS)$/navipi.srs
+BMP_IN=$(PRJ)$/res/imglst/navipi
+# --- Files --------------------------------------------------------
+
+CXXFILES = navipi.cxx navcitem.cxx scenwnd.cxx content.cxx
+SLOFILES = $(SLO)$/navipi.obj $(SLO)$/navcitem.obj $(SLO)$/scenwnd.obj \
+ $(SLO)$/content.obj
+SRCFILES = navipi.src
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/navipi/navcitem.cxx b/sc/source/ui/navipi/navcitem.cxx
new file mode 100644
index 000000000000..dffe57cf68b8
--- /dev/null
+++ b/sc/source/ui/navipi/navcitem.cxx
@@ -0,0 +1,162 @@
+/*************************************************************************
+ *
+ * $RCSfile: navcitem.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svtools/intitem.hxx>
+#include <svtools/stritem.hxx>
+
+#include "navcitem.hxx"
+#include "global.hxx"
+#include "navipi.hxx"
+#include "sc.hrc" // -> Item-IDs
+
+// STATIC DATA -----------------------------------------------------------
+
+
+//------------------------------------------------------------------------
+
+ScNavigatorControllerItem::ScNavigatorControllerItem( USHORT nId,
+ ScNavigatorDlg& rDlg,
+ SfxBindings& rBindings )
+ : SfxControllerItem ( nId, rBindings ),
+ rNavigatorDlg ( rDlg )
+{
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ScNavigatorControllerItem::StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pItem )
+{
+ switch( GetId() )
+ {
+ case SID_CURRENTCELL:
+ if ( pItem )
+ {
+// const SfxPointItem* pCellPosItem = PTR_CAST(SfxPointItem, pItem);
+ const SfxStringItem* pCellPosItem = PTR_CAST(SfxStringItem, pItem);
+
+ DBG_ASSERT( pCellPosItem, "SfxStringItem expected!" );
+
+ if ( pCellPosItem )
+ {
+ String aAddress( pCellPosItem->GetValue() );
+ ScAddress aScAddress;
+ aScAddress.Parse( aAddress );
+
+ USHORT nCol = aScAddress.Col()+1;
+ USHORT nRow = aScAddress.Row()+1;
+
+// USHORT nCol = (USHORT)pCellPosItem->GetValue().X()+1;
+// USHORT nRow = (USHORT)pCellPosItem->GetValue().Y()+1;
+
+ rNavigatorDlg.UpdateColumn( &nCol );
+ rNavigatorDlg.UpdateRow ( &nRow );
+ rNavigatorDlg.CursorPosChanged();
+ }
+ }
+ break;
+
+ case SID_CURRENTTAB:
+ if ( pItem )
+ {
+ const SfxUInt16Item* pTabItem = PTR_CAST(SfxUInt16Item, pItem);
+
+ DBG_ASSERT( pTabItem, "SfxUInt16Item expected!" );
+
+ // Tabelle fuer Basic ist 1-basiert
+ if ( pTabItem && pTabItem->GetValue() )
+ {
+ USHORT nTab = pTabItem->GetValue() - 1;
+
+ rNavigatorDlg.UpdateTable( &nTab );
+ rNavigatorDlg.UpdateColumn();
+ rNavigatorDlg.UpdateRow();
+ rNavigatorDlg.CursorPosChanged();
+ }
+ }
+ break;
+
+ case SID_CURRENTDOC:
+ //
+ // gar nix mehr, wird ueber SFX_HINT_DOCCHANGED erledigt
+ //
+ break;
+
+
+ case SID_SELECT_SCENARIO:
+ rNavigatorDlg.aWndScenarios.NotifyState( pItem );
+ break;
+
+ default:
+ break;
+ }
+}
+
+
+
diff --git a/sc/source/ui/navipi/navipi.cxx b/sc/source/ui/navipi/navipi.cxx
new file mode 100644
index 000000000000..4da86d162098
--- /dev/null
+++ b/sc/source/ui/navipi/navipi.cxx
@@ -0,0 +1,1668 @@
+/*************************************************************************
+ *
+ * $RCSfile: navipi.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#ifndef SC_RANGELST_HXX
+#include <rangelst.hxx>
+#endif
+
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/event.hxx>
+#include <sfx2/imgmgr.hxx>
+#include <sfx2/navigat.hxx>
+#include <svtools/stritem.hxx>
+#include <svtools/urlbmk.hxx>
+#include <vcl/drag.hxx>
+#include <vcl/sound.hxx>
+#include <unotools/charclass.hxx>
+#include <stdlib.h>
+
+#include "viewdata.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "document.hxx"
+#include "dbcolect.hxx"
+#include "rangenam.hxx"
+#include "rangeutl.hxx"
+#include "popmenu.hxx"
+#include "scresid.hxx"
+#include "scmod.hxx"
+#include "navicfg.hxx"
+#include "navcitem.hxx"
+#include "navipi.hrc"
+#include "navipi.hxx"
+
+
+
+// Timeout, um Notizen zu suchen
+#define SC_CONTENT_TIMEOUT 1000
+
+// Toleranz, wieviel ueber der eingeklappten Groesse noch klein ist
+#define SCNAV_MINTOL 5
+
+//------------------------------------------------------------------------
+
+// static
+void ScNavigatorDlg::ReleaseFocus()
+{
+ SfxViewShell* pCurSh = SfxViewShell::Current();
+
+ if ( pCurSh )
+ {
+ Window* pShellWnd = pCurSh->GetWindow();
+ if ( pShellWnd )
+ pShellWnd->GrabFocus();
+ }
+}
+
+//==================================================================
+// class ColumnEdit
+//==================================================================
+
+ColumnEdit::ColumnEdit( ScNavigatorDlg* pParent, const ResId& rResId )
+ : SpinField ( pParent, rResId ),
+ rDlg ( *pParent ),
+ nKeyGroup ( KEYGROUP_ALPHA ),
+ nCol ( 0 )
+{
+ SetMaxTextLen( 3 ); // 1 bis 256 bzw. A bis IV
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ColumnEdit::~ColumnEdit()
+{
+}
+
+//------------------------------------------------------------------------
+
+#ifdef VCL
+
+long __EXPORT ColumnEdit::Notify( NotifyEvent& rNEvt )
+{
+ SpinField::Notify( rNEvt );
+ long nHandled = 0;
+
+ USHORT nType = rNEvt.GetType();
+ if ( nType == EVENT_KEYINPUT )
+ {
+ const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
+ KeyCode aCode = pKEvt->GetKeyCode();
+
+ if ( !aCode.IsMod1() && !aCode.IsMod2() )
+ {
+ //! Eingabeueberpruefung (nur Zahlen oder nur Buchstaben, max 2 bzw 3 Stellen)
+ //! war vor VCL per nicht weitergeleitetem KeyInput
+ //! dafuer was neues ausdenken!!!
+
+ if ( aCode.GetCode() == KEY_RETURN )
+ {
+ ScNavigatorDlg::ReleaseFocus();
+ ExecuteCol();
+ nHandled = 1;
+ }
+ }
+ }
+ else if ( nType == EVENT_LOSEFOCUS ) // LoseFocus wird bei VCL nicht gerufen
+ EvalText(); // nCol setzen
+
+ return nHandled;
+}
+
+#else
+
+void __EXPORT ColumnEdit::KeyInput( const KeyEvent& rKEvt )
+{
+ KeyCode aCode = rKEvt.GetKeyCode();
+ USHORT nGroup = aCode.GetGroup();
+ USHORT nLen = GetText().Len();
+ BOOL bSel = (GetSelection().Len() > 0);
+
+ if ( aCode.IsMod1() || aCode.IsMod2() )
+ {
+ SpinField::KeyInput( rKEvt );
+ }
+ else if ( aCode == KEY_RETURN )
+ {
+ ScNavigatorDlg::ReleaseFocus();
+ ExecuteCol();
+ }
+ else if ( nGroup == KEYGROUP_NUM || nGroup == KEYGROUP_ALPHA )
+ {
+ if ( nLen == 0 || bSel ) // neue Eingabe: nur KeyGroup merken
+ {
+ nKeyGroup = nGroup;
+ ReplaceSelected( rKEvt.GetCharCode() );
+ }
+ else
+ {
+ // Abhaengig von aktueller Gruppe und Laenge Eingabe zulassen
+
+ if ( nKeyGroup == KEYGROUP_NUM && nGroup == KEYGROUP_NUM )
+ {
+ if ( nLen < 3 )
+ SpinField::KeyInput( rKEvt );
+ }
+ else if ( nKeyGroup == KEYGROUP_ALPHA && nGroup == KEYGROUP_ALPHA )
+ {
+ if ( nLen < 2 )
+ SpinField::KeyInput( rKEvt );
+ }
+ }
+ }
+ else
+ SpinField::KeyInput( rKEvt );
+}
+
+#endif
+
+//------------------------------------------------------------------------
+
+void __EXPORT ColumnEdit::LoseFocus()
+{
+ EvalText();
+}
+
+
+//------------------------------------------------------------------------
+
+void __EXPORT ColumnEdit::Up()
+{
+ nCol += 1;
+
+#ifdef OS2
+ if ( nCol > 256 )
+ nCol = 1;
+#endif
+
+ if ( nCol <= 256 )
+ SetCol( nCol );
+ else
+ nCol -= 1;
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ColumnEdit::Down()
+{
+ if ( nCol>1 )
+ SetCol( nCol-1 );
+#ifdef OS2
+ else
+ SetCol( 256 );
+#endif
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ColumnEdit::First()
+{
+ nCol=1;
+ SetText( 'A' );
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ColumnEdit::Last()
+{
+ nCol=256;
+ SetText( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("IV")) );
+}
+
+
+//------------------------------------------------------------------------
+
+void ColumnEdit::EvalText()
+{
+ String aStrCol = GetText();
+
+ if ( aStrCol.Len() > 0 )
+ {
+ // nKeyGroup wird bei VCL mangels KeyInput nicht mehr gesetzt
+
+ if ( CharClass::isAsciiNumeric(aStrCol) )
+ nCol = NumStrToAlpha( aStrCol );
+ else
+ nCol = AlphaToNum( aStrCol );
+ }
+ else
+ nCol = 0;
+
+ SetText( aStrCol );
+ nKeyGroup = KEYGROUP_ALPHA;
+}
+
+//------------------------------------------------------------------------
+
+void ColumnEdit::ExecuteCol()
+{
+ USHORT nRow = rDlg.aEdRow.GetRow();
+
+ EvalText(); // setzt nCol
+
+ if ( (nCol > 0) && (nRow > 0) )
+ rDlg.SetCurrentCell( nCol-1, nRow-1 );
+}
+
+//------------------------------------------------------------------------
+
+void ColumnEdit::SetCol( USHORT nColNo )
+{
+ String aStr;
+
+ if ( nColNo == 0 )
+ {
+ nCol = 0;
+ SetText( aStr );
+ }
+ else
+ {
+ nColNo = NumToAlpha( nColNo, aStr );
+ nCol = nColNo;
+ SetText( aStr );
+ }
+}
+
+//------------------------------------------------------------------------
+
+USHORT ColumnEdit::AlphaToNum( String& rStr )
+{
+ USHORT nColumn = 0;
+
+ ByteString aByteStr( rStr, RTL_TEXTENCODING_ASCII_US );
+ if ( aByteStr.IsAlphaAscii() )
+ {
+ rStr.ToUpperAscii();
+ aByteStr.ToUpperAscii();
+
+ if ( aByteStr.Len() == 1 )
+ {
+ nColumn = (( (aByteStr.GetChar(0)) ) - 'A' ) + 1;
+ }
+ else if ( rStr.Len() == 2 )
+ {
+ nColumn = (((rStr.GetChar(0) - 'A') + 1) * 26)
+ + (rStr.GetChar(1) - 'A') + 1;
+ if ( nColumn > 256 )
+ {
+ nColumn = 256;
+ rStr.AssignAscii(RTL_CONSTASCII_STRINGPARAM( "IV" ));
+ }
+ }
+ else
+ rStr.Erase();
+ }
+
+ return nColumn;
+}
+
+//------------------------------------------------------------------------
+
+USHORT ColumnEdit::NumStrToAlpha( String& rStr )
+{
+ USHORT nColumn = 0;
+
+ if ( CharClass::isAsciiNumeric(rStr) )
+ nColumn = NumToAlpha( rStr.ToInt32(), rStr );
+ else
+ rStr.Erase();
+
+ return nColumn;
+}
+
+//------------------------------------------------------------------------
+
+USHORT ColumnEdit::NumToAlpha( USHORT nColNo, String& rStr )
+{
+ if ( nColNo > 256 )
+ {
+ rStr.AssignAscii(RTL_CONSTASCII_STRINGPARAM( "IV" ));
+ nColNo = 256;
+ }
+ else if ( nColNo == 0 )
+ {
+ rStr = 'A';
+ nColNo = 1;
+ }
+ else
+ {
+ nColNo--;
+ if ( nColNo < 26 )
+ rStr = (sal_Unicode) ( 'A' + nColNo );
+ else
+ {
+ rStr = (sal_Unicode) ( 'A' + ( nColNo / 26 ) - 1 );
+ rStr += (sal_Unicode) ( 'A' + ( nColNo % 26 ) );
+ }
+ nColNo++;
+ }
+
+ return nColNo;
+}
+
+//==================================================================
+// class RowEdit
+//==================================================================
+
+RowEdit::RowEdit( ScNavigatorDlg* pParent, const ResId& rResId )
+ : NumericField( pParent, rResId ),
+ rDlg ( *pParent )
+{
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT RowEdit::~RowEdit()
+{
+}
+
+//------------------------------------------------------------------------
+
+#ifdef VCL
+
+long __EXPORT RowEdit::Notify( NotifyEvent& rNEvt )
+{
+ NumericField::Notify( rNEvt );
+ long nHandled = 0;
+
+ if ( rNEvt.GetType() == EVENT_KEYINPUT )
+ {
+ const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
+ KeyCode aCode = pKEvt->GetKeyCode();
+ if ( aCode.GetCode() == KEY_RETURN && !aCode.IsMod1() && !aCode.IsMod2() )
+ {
+ ScNavigatorDlg::ReleaseFocus();
+ ExecuteRow();
+ nHandled = 1;
+ }
+ }
+
+ return nHandled;
+}
+
+#else
+
+void __EXPORT RowEdit::KeyInput( const KeyEvent& rKEvt )
+{
+ KeyCode aCode = rKEvt.GetKeyCode();
+
+ if ( aCode.IsMod1() || aCode.IsMod2() || aCode != KEY_RETURN )
+ {
+ NumericField::KeyInput( rKEvt );
+ }
+ else // if ( rKEvt.GetKeyCode() == KEY_RETURN )
+ {
+ ScNavigatorDlg::ReleaseFocus();
+ ExecuteRow();
+ }
+}
+
+#endif
+
+//------------------------------------------------------------------------
+
+void __EXPORT RowEdit::LoseFocus()
+{
+}
+
+//------------------------------------------------------------------------
+
+void RowEdit::ExecuteRow()
+{
+ USHORT nCol = rDlg.aEdCol.GetCol();
+ USHORT nRow = (USHORT)GetValue();
+
+ if ( (nCol > 0) && (nRow > 0) )
+ rDlg.SetCurrentCell( nCol-1, nRow-1 );
+}
+
+//==================================================================
+// class ScDocListBox
+//==================================================================
+
+ScDocListBox::ScDocListBox( ScNavigatorDlg* pParent, const ResId& rResId )
+ : ListBox ( pParent, rResId ),
+ rDlg ( *pParent )
+{
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScDocListBox::~ScDocListBox()
+{
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ScDocListBox::Select()
+{
+ ScNavigatorDlg::ReleaseFocus();
+
+ String aDocName = GetSelectEntry();
+ rDlg.aLbEntries.SelectDoc( aDocName );
+}
+
+//==================================================================
+// class CommandToolBox
+//==================================================================
+
+CommandToolBox::CommandToolBox( ScNavigatorDlg* pParent, const ResId& rResId )
+ : ToolBox ( pParent, rResId ),
+ rDlg ( *pParent )
+{
+ // #52973# grosse Images haben wir nicht, darum nur fuer CHANGEOUTSTYLE anmelden
+ SFX_IMAGEMANAGER()->RegisterToolBox( this, SFX_TOOLBOX_CHANGEOUTSTYLE );
+
+ SetSizePixel( CalcWindowSizePixel() );
+// EnableItem( IID_UP, FALSE );
+// EnableItem( IID_DOWN, FALSE );
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT CommandToolBox::~CommandToolBox()
+{
+ SFX_IMAGEMANAGER()->ReleaseToolBox( this );
+}
+
+//------------------------------------------------------------------------
+
+void CommandToolBox::Select( USHORT nSelId )
+{
+ // Modus umschalten ?
+
+ if ( nSelId == IID_ZOOMOUT || nSelId == IID_SCENARIOS )
+ {
+ NavListMode eOldMode = rDlg.eListMode;
+ NavListMode eNewMode = eOldMode;
+
+ if ( nSelId == IID_SCENARIOS ) // auf Szenario
+ {
+ if ( eOldMode == NAV_LMODE_SCENARIOS )
+ eNewMode = NAV_LMODE_AREAS;
+ else
+ eNewMode = NAV_LMODE_SCENARIOS;
+ }
+ else // ein/aus
+ {
+ if ( eOldMode == NAV_LMODE_NONE )
+ eNewMode = NAV_LMODE_AREAS;
+ else
+ eNewMode = NAV_LMODE_NONE;
+ }
+ rDlg.SetListMode( eNewMode );
+ UpdateButtons();
+ }
+ else
+ switch ( nSelId )
+ {
+ case IID_DATA:
+ rDlg.MarkDataArea();
+ break;
+ case IID_UP:
+ rDlg.StartOfDataArea();
+ break;
+ case IID_DOWN:
+ rDlg.EndOfDataArea();
+ break;
+ // IID_DROPMODE ist in Click
+ case IID_CHANGEROOT:
+ rDlg.aLbEntries.ToggleRoot();
+ UpdateButtons();
+ break;
+ }
+}
+
+void __EXPORT CommandToolBox::Select()
+{
+ Select( GetCurItemId() );
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT CommandToolBox::Click()
+{
+ // Das Popupmenue fuer den Dropmodus muss im Click (Button Down)
+ // statt im Select (Button Up) aufgerufen werden.
+
+ if ( GetCurItemId() == IID_DROPMODE )
+ {
+ Point aMenuPos = GetItemRect(IID_DROPMODE).BottomLeft();
+
+ ScPopupMenu aPop( ScResId( RID_POPUP_DROPMODE ) );
+ aPop.CheckItem( RID_DROPMODE_URL + rDlg.GetDropMode() );
+ aPop.Execute( this, aMenuPos );
+ USHORT nId = aPop.GetSelected();
+
+ EndSelection(); // vor SetDropMode (SetDropMode ruft SetItemImage)
+
+ if ( nId >= RID_DROPMODE_URL && nId <= RID_DROPMODE_COPY )
+ rDlg.SetDropMode( nId - RID_DROPMODE_URL );
+
+ // #49956# den gehighlighteten Button aufheben
+ Point aPoint;
+ MouseEvent aLeave( aPoint, 0, MOUSE_LEAVEWINDOW | MOUSE_SYNTHETIC );
+ MouseMove( aLeave );
+ }
+}
+
+//------------------------------------------------------------------------
+
+void CommandToolBox::UpdateButtons()
+{
+ NavListMode eMode = rDlg.eListMode;
+ CheckItem( IID_SCENARIOS, eMode == NAV_LMODE_SCENARIOS );
+ CheckItem( IID_ZOOMOUT, eMode != NAV_LMODE_NONE );
+
+ // Umschalten-Button:
+ if ( eMode == NAV_LMODE_SCENARIOS || eMode == NAV_LMODE_NONE )
+ {
+ EnableItem( IID_CHANGEROOT, FALSE );
+ CheckItem( IID_CHANGEROOT, FALSE );
+ }
+ else
+ {
+ EnableItem( IID_CHANGEROOT, TRUE );
+ BOOL bRootSet = rDlg.aLbEntries.GetRootType() != SC_CONTENT_ROOT;
+ CheckItem( IID_CHANGEROOT, bRootSet );
+ }
+
+ USHORT nImageId = 0;
+ switch ( rDlg.nDropMode )
+ {
+ case SC_DROPMODE_URL: nImageId = RID_IMG_DROP_URL; break;
+ case SC_DROPMODE_LINK: nImageId = RID_IMG_DROP_LINK; break;
+ case SC_DROPMODE_COPY: nImageId = RID_IMG_DROP_COPY; break;
+ }
+ SetItemImage( IID_DROPMODE, Image(ScResId(nImageId)) );
+}
+
+//==================================================================
+// class ScNavigatorDlgWrapper
+//==================================================================
+
+SFX_IMPL_CHILDWINDOW_CONTEXT( ScNavigatorDialogWrapper, SID_NAVIGATOR, ScTabViewShell )
+
+#define IS_MODE(bit)(((nFlags)&(bit))==(bit))
+
+ScNavigatorDialogWrapper::ScNavigatorDialogWrapper(
+ Window* pParent,
+ USHORT nId,
+ SfxBindings* pBind,
+ SfxChildWinInfo* pInfo ) :
+ SfxChildWindowContext( nId )
+{
+ pNavigator = new ScNavigatorDlg( pBind, this, pParent );
+ SetWindow( pNavigator );
+
+ // Einstellungen muessen anderswo gemerkt werden,
+ // pInfo geht uns (ausser der Groesse) nichts mehr an
+
+ Size aInfoSize = pParent->GetOutputSizePixel(); // von aussen vorgegebene Groesse
+ Size aNavSize = pNavigator->GetOutputSizePixel(); // Default-Groesse
+
+ aNavSize.Width() = Max( aInfoSize.Width(), aNavSize.Width() );
+ aNavSize.Height() = Max( aInfoSize.Height(), aNavSize.Height() );
+ pNavigator->nListModeHeight = Max( aNavSize.Height(), pNavigator->nListModeHeight );
+
+ // Die Groesse kann in einem anderen Modul geaendert worden sein,
+ // deshalb muessen in Abhaengigkeit von der momentanen Groesse die
+ // Inhalte eingeblendet werden oder nicht
+
+ BOOL bSmall = ( aInfoSize.Height() <= pNavigator->aInitSize.Height() + SCNAV_MINTOL );
+ NavListMode eNavMode = NAV_LMODE_NONE;
+ if (!bSmall)
+ {
+ // wenn Szenario aktiv war, wieder einschalten
+
+ ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
+ NavListMode eLastMode = (NavListMode) rCfg.GetListMode();
+ if ( eLastMode == NAV_LMODE_SCENARIOS )
+ eNavMode = NAV_LMODE_SCENARIOS;
+ else
+ eNavMode = NAV_LMODE_AREAS;
+ }
+
+ // Die Groesse des Floats nicht neu setzen (FALSE bei SetListMode), damit der
+ // Navigator nicht aufgeklappt wird, wenn er minimiert war (#38872#).
+
+ pNavigator->SetListMode( eNavMode, FALSE ); // FALSE: Groesse des Float nicht setzen
+
+ USHORT nCmdId = 0;
+ switch (eNavMode)
+ {
+ case NAV_LMODE_DOCS: nCmdId = IID_DOCS; break;
+ case NAV_LMODE_AREAS: nCmdId = IID_AREAS; break;
+ case NAV_LMODE_DBAREAS: nCmdId = IID_DBAREAS; break;
+ case NAV_LMODE_SCENARIOS: nCmdId = IID_SCENARIOS; break;
+ }
+ if (nCmdId)
+ {
+ pNavigator->aTbxCmd.CheckItem( nCmdId );
+ pNavigator->DoResize();
+ }
+
+ pNavigator->bFirstBig = ( nCmdId == 0 ); // dann spaeter
+
+/*???
+ FloatingWindow* pFloat = GetFloatingWindow();
+ if ( pFloat )
+ pFloat->SetMinOutputSizePixel( pNavigator->GetMinOutputSizePixel() );
+*/
+
+//!? pNavigator->Show();
+}
+
+void __EXPORT ScNavigatorDialogWrapper::Resizing( Size& rSize )
+{
+ ((ScNavigatorDlg*)GetWindow())->Resizing(rSize);
+}
+
+BOOL __EXPORT ScNavigatorDialogWrapper::Drop( const DropEvent& rEvt )
+{
+ return GetWindow()->Drop(rEvt);
+}
+
+BOOL __EXPORT ScNavigatorDialogWrapper::QueryDrop( DropEvent& rEvt )
+{
+ return GetWindow()->QueryDrop(rEvt);
+}
+
+//========================================================================
+// class ScNavigatorPI
+//========================================================================
+
+#define CTRL_ITEMS 4
+
+#define REGISTER_SLOT(i,id) \
+ ppBoundItems[i]=new ScNavigatorControllerItem(id,*this,rBindings);
+
+ScNavigatorDlg::ScNavigatorDlg( SfxBindings* pB, SfxChildWindowContext* pCW, Window* pParent ) :
+ Window( pParent, ScResId(RID_SCDLG_NAVIGATOR) ),
+ aFtCol ( this, ScResId( FT_COL ) ),
+ aEdCol ( this, ScResId( ED_COL ) ),
+ aFtRow ( this, ScResId( FT_ROW ) ),
+ aEdRow ( this, ScResId( ED_ROW ) ),
+ aTbxCmd ( this, ScResId( TBX_CMD ) ),
+ aLbEntries ( this, ScResId( LB_ENTRIES ) ),
+ aLbDocuments( this, ScResId( LB_DOCUMENTS ) ),
+ aWndScenarios( this,ScResId( STR_QHLP_SCEN_LISTBOX), ScResId(STR_QHLP_SCEN_COMMENT)),
+ aStrDragMode ( ScResId( STR_DRAGMODE ) ),
+ aStrDisplay ( ScResId( STR_DISPLAY ) ),
+ aStrActiveWin( ScResId( STR_ACTIVEWIN ) ),
+ pContextWin ( pCW ),
+ eListMode ( NAV_LMODE_NONE ),
+ nDropMode ( SC_DROPMODE_URL ),
+ rBindings ( *pB ),
+ nListModeHeight( 0 ),
+ nInitListHeight( 0 ),
+ pViewData ( NULL ),
+ pMarkArea ( NULL ),
+ nCurCol ( 0 ),
+ nCurRow ( 0 ),
+ nCurTab ( 0 ),
+ bFirstBig ( FALSE )
+{
+ ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
+ nDropMode = rCfg.GetDragMode();
+ // eListMode wird von aussen gesetzt, Root weiter unten
+
+ aLbDocuments.SetDropDownLineCount(9);
+ String aOpen = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
+ aStrActive = aOpen;
+ aStrActive += String( ScResId( STR_ACTIVE ) );
+ aStrActive += ')'; // " (aktiv)"
+ aStrNotActive = aOpen;
+ aStrNotActive += String( ScResId( STR_NOTACTIVE ) );
+ aStrNotActive += ')'; // " (inaktiv)"
+ aStrHidden = aOpen;
+ aStrHidden += String( ScResId( STR_HIDDEN ) );
+ aStrHidden += ')'; // " (versteckt)"
+
+ aTitleBase = GetText();
+
+ Size aSize( GetOutputSizePixel() );
+
+ nBorderOffset = aLbEntries.GetPosPixel().X();
+
+ aInitSize.Width() = aTbxCmd.GetPosPixel().X()
+ + aTbxCmd.GetSizePixel().Width()
+ + nBorderOffset;
+ aInitSize.Height() = aLbEntries.GetPosPixel().Y();
+
+ nInitListHeight = aLbEntries.GetSizePixel().Height();
+ nListModeHeight = aInitSize.Height()
+ + nInitListHeight;
+
+ // kein Resize, eh der ganze Kontext-Kram initialisiert ist!
+// SetOutputSizePixel( aInitSize ); //???
+/*! FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
+ if ( pFloat)
+ pFloat->SetMinOutputSizePixel( aInitSize );
+*/
+ ppBoundItems = new ScNavigatorControllerItem* [CTRL_ITEMS];
+
+ rBindings.ENTERREGISTRATIONS();
+ //-----------------------------
+ REGISTER_SLOT( 0, SID_CURRENTCELL );
+ REGISTER_SLOT( 1, SID_CURRENTTAB );
+ REGISTER_SLOT( 2, SID_CURRENTDOC );
+ REGISTER_SLOT( 3, SID_SELECT_SCENARIO );
+ //-----------------------------
+ rBindings.LEAVEREGISTRATIONS();
+
+ StartListening( *(SFX_APP()) );
+ StartListening( SFX_BINDINGS() );
+
+ aLbDocuments.Hide(); // bei NAV_LMODE_NONE gibts die nicht
+
+ aLbEntries.InitWindowBits(TRUE);
+
+ aLbEntries.SetSpaceBetweenEntries(0);
+ aLbEntries.SetSelectionMode( SINGLE_SELECTION );
+ aLbEntries.SetDragDropMode( SV_DRAGDROP_CTRL_MOVE |
+ SV_DRAGDROP_CTRL_COPY |
+ SV_DRAGDROP_ENABLE_TOP );
+
+ // war eine Kategorie als Root ausgewaehlt?
+ USHORT nLastRoot = rCfg.GetRootType();
+ if ( nLastRoot )
+ aLbEntries.SetRootType( nLastRoot );
+
+ aLbEntries.Refresh();
+ GetDocNames();
+
+ aTbxCmd.UpdateButtons();
+
+ UpdateColumn();
+ UpdateRow();
+ UpdateTable();
+ aLbEntries.Hide();
+ aWndScenarios.Hide();
+ aWndScenarios.SetPosPixel( aLbEntries.GetPosPixel() );
+
+ aContentTimer.SetTimeoutHdl( LINK( this, ScNavigatorDlg, TimeHdl ) );
+ aContentTimer.SetTimeout( SC_CONTENT_TIMEOUT );
+
+ FreeResource();
+}
+
+//------------------------------------------------------------------------
+
+__EXPORT ScNavigatorDlg::~ScNavigatorDlg()
+{
+ aContentTimer.Stop();
+
+ USHORT i;
+ for ( i=0; i<CTRL_ITEMS; i++ )
+ delete ppBoundItems[i];
+
+ delete [] ppBoundItems;
+ delete pMarkArea;
+
+ EndListening( *(SFX_APP()) );
+ EndListening( SFX_BINDINGS() );
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ScNavigatorDlg::Resizing( Size& rNewSize ) // Size = Outputsize?
+{
+ FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
+ if ( pFloat )
+ {
+ Size aMinOut = pFloat->GetMinOutputSizePixel();
+
+ if ( rNewSize.Width() < aMinOut.Width() )
+ rNewSize.Width() = aMinOut.Width();
+
+ if ( eListMode == NAV_LMODE_NONE )
+ rNewSize.Height() = aInitSize.Height();
+ else
+ {
+ if ( rNewSize.Height() < aMinOut.Height() )
+ rNewSize.Height() = aMinOut.Height();
+ }
+ }
+// else
+// SfxDockingWindow::Resizing(rNewSize);
+}
+
+
+
+void ScNavigatorDlg::Paint( const Rectangle& rRec )
+{
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ Color aBgColor = rStyleSettings.GetFaceColor();
+ Wallpaper aBack( aBgColor );
+
+ SetBackground( aBack );
+ aFtCol.SetBackground( aBack );
+ aFtRow.SetBackground( aBack );
+
+ Window::Paint( rRec );
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ScNavigatorDlg::Resize()
+{
+ DoResize();
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::DoResize()
+{
+ Size aNewSize = GetOutputSizePixel();
+ long nTotalHeight = aNewSize.Height();
+
+ // #41403# bei angedocktem Navigator wird das Fenster evtl. erst klein erzeugt,
+ // dann kommt ein Resize auf die wirkliche Groesse -> dann Inhalte einschalten
+
+ BOOL bSmall = ( nTotalHeight <= aInitSize.Height() + SCNAV_MINTOL );
+ if ( !bSmall && bFirstBig )
+ {
+ // Inhalte laut Config wieder einschalten
+
+ bFirstBig = FALSE;
+ NavListMode eNavMode = NAV_LMODE_AREAS;
+ ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
+ NavListMode eLastMode = (NavListMode) rCfg.GetListMode();
+ if ( eLastMode == NAV_LMODE_SCENARIOS )
+ eNavMode = NAV_LMODE_SCENARIOS;
+ SetListMode( eNavMode, FALSE ); // FALSE: Groesse des Float nicht setzen
+ }
+
+ // auch wenn die Inhalte nicht sichtbar sind, die Groessen anpassen,
+ // damit die Breite stimmt
+
+ //@@ 03.11.97 changes begin
+ Point aEntryPos = aLbEntries.GetPosPixel();
+ Point aListPos = aLbDocuments.GetPosPixel();
+ aNewSize.Width() -= 2*nBorderOffset;
+ Size aDocSize = aLbDocuments.GetSizePixel();
+ aDocSize.Width() = aNewSize.Width();
+
+ if(!bSmall)
+ {
+
+ long nListHeight = aLbDocuments.GetSizePixel().Height();
+ aNewSize.Height() -= ( aEntryPos.Y() + nListHeight + 2*nBorderOffset );
+ if(aNewSize.Height()<0) aNewSize.Height()=0;
+
+ aListPos.Y() = aEntryPos.Y() + aNewSize.Height() + nBorderOffset;
+
+ if(aListPos.Y() > aLbEntries.GetPosPixel().Y())
+ aLbDocuments.SetPosPixel( aListPos );
+
+ }
+ aLbEntries.SetSizePixel( aNewSize );
+ aWndScenarios.SetSizePixel( aNewSize );
+ aLbDocuments.SetSizePixel( aDocSize );
+
+ //@@ 03.11.97 end
+
+ BOOL bListMode = (eListMode != NAV_LMODE_NONE);
+ FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
+ if ( pFloat && bListMode )
+ nListModeHeight = nTotalHeight;
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ScNavigatorDlg::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType )
+{
+ if ( rHint.ISA(SfxSimpleHint) )
+ {
+ ULONG nHintId = ((SfxSimpleHint&)rHint).GetId();
+
+ if ( nHintId == SC_HINT_DOCNAME_CHANGED )
+ {
+ aLbEntries.ActiveDocChanged();
+ }
+ else if ( NAV_LMODE_NONE == eListMode )
+ {
+ // Tabellen hier nicht mehr
+ }
+ else
+ {
+ switch ( nHintId )
+ {
+ case SC_HINT_TABLES_CHANGED:
+ aLbEntries.Refresh( SC_CONTENT_TABLE );
+ break;
+
+ case SC_HINT_DBAREAS_CHANGED:
+ aLbEntries.Refresh( SC_CONTENT_DBAREA );
+ break;
+
+ case SC_HINT_AREAS_CHANGED:
+ aLbEntries.Refresh( SC_CONTENT_RANGENAME );
+ break;
+
+ case SC_HINT_DRAW_CHANGED:
+ aLbEntries.Refresh( SC_CONTENT_GRAPHIC );
+ aLbEntries.Refresh( SC_CONTENT_OLEOBJECT );
+ break;
+
+ case SC_HINT_AREALINKS_CHANGED:
+ aLbEntries.Refresh( SC_CONTENT_AREALINK );
+ break;
+
+ // SFX_HINT_DOCCHANGED kommt nicht nur bei Dokument-Wechsel
+
+ case SC_HINT_NAVIGATOR_UPDATEALL:
+ UpdateAll();
+ break;
+
+ case FID_DATACHANGED:
+ case FID_ANYDATACHANGED:
+ aContentTimer.Start(); // Notizen nicht sofort suchen
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+ else if ( rHint.ISA(SfxEventHint) )
+ {
+ ULONG nEventId = ((SfxEventHint&)rHint).GetEventId();
+ if ( nEventId == SFX_EVENT_ACTIVATEDOC )
+ {
+ aLbEntries.ActiveDocChanged();
+ UpdateAll();
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScNavigatorDlg, TimeHdl, Timer*, pTimer )
+{
+ if ( pTimer != &aContentTimer )
+ return 0;
+
+ aLbEntries.Refresh( SC_CONTENT_NOTE );
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::SetDropMode(USHORT nNew)
+{
+ nDropMode = nNew;
+ aTbxCmd.UpdateButtons();
+
+ ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
+ rCfg.SetDragMode(nDropMode);
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::CursorPosChanged()
+{
+ //! Eintraege selektieren ???
+
+// if ( GetDBAtCursor( aStrDbName ) )
+// if ( GetAreaAtCursor( aStrAreaName ) )
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScNavigatorDlg::GetDBAtCursor( String& rStrName )
+{
+ BOOL bFound = FALSE;
+
+ if ( GetViewData() )
+ {
+ USHORT nCol = aEdCol.GetCol();
+ USHORT nRow = aEdRow.GetRow();
+
+ if ( nCol > 0 && nRow > 0 )
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScDBData* pData = pDoc->GetDBAtCursor( nCol-1, nRow-1, pViewData->GetTabNo() );
+
+ bFound = ( pData != NULL );
+ if ( bFound )
+ pData->GetName( rStrName );
+ }
+ }
+
+ return bFound;
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScNavigatorDlg::GetAreaAtCursor( String& rStrName )
+{
+ BOOL bFound = FALSE;
+
+ if ( GetViewData() )
+ {
+ USHORT nCol = aEdCol.GetCol();
+ USHORT nRow = aEdRow.GetRow();
+
+ if ( nCol > 0 && nRow > 0 )
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScRangeData* pData = pDoc->GetRangeAtCursor( nCol-1, nRow-1, pViewData->GetTabNo() );
+
+ bFound = ( pData != NULL );
+ if ( bFound )
+ pData->GetName( rStrName );
+ }
+ }
+
+ return bFound;
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::SetCurrentCell( USHORT nColNo, USHORT nRowNo )
+{
+ if ( (nColNo+1 != nCurCol) || (nRowNo+1 != nCurRow) )
+ {
+ // SID_CURRENTCELL == Item #0 Cache leeren, damit das Setzen der
+ // aktuellen Zelle auch in zusammengefassten Bereichen funktioniert.
+ ppBoundItems[0]->ClearCache();
+
+ ScAddress aScAddress( nColNo, nRowNo, 0 );
+ String aAddr;
+ aScAddress.Format( aAddr, SCA_ABS );
+
+ BOOL bUnmark = FALSE;
+ if ( GetViewData() )
+ bUnmark = !pViewData->GetMarkData().IsCellMarked( nColNo, nRowNo );
+
+ SfxStringItem aPosItem( SID_CURRENTCELL, aAddr );
+ SfxBoolItem aUnmarkItem( FN_PARAM_1, bUnmark ); // ggf. Selektion aufheben
+
+ SFX_DISPATCHER().Execute( SID_CURRENTCELL,
+ SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
+ &aPosItem, &aUnmarkItem, 0L );
+ }
+}
+
+void ScNavigatorDlg::SetCurrentCellStr( const String rName )
+{
+ ppBoundItems[0]->ClearCache();
+ SfxStringItem aNameItem( SID_CURRENTCELL, rName );
+
+ SFX_DISPATCHER().Execute( SID_CURRENTCELL,
+ SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
+ &aNameItem, 0L );
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::SetCurrentTable( USHORT nTabNo )
+{
+ if ( nTabNo != nCurTab )
+ {
+ // Tabelle fuer Basic ist 1-basiert
+ SfxUInt16Item aTabItem( SID_CURRENTTAB, nTabNo + 1 );
+ SFX_DISPATCHER().Execute( SID_CURRENTTAB,
+ SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
+ &aTabItem, 0L );
+ }
+}
+
+void ScNavigatorDlg::SetCurrentTableStr( const String rName )
+{
+ if (!GetViewData()) return;
+
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nCount = pDoc->GetTableCount();
+ String aTabName;
+
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ pDoc->GetName( i, aTabName );
+ if ( aTabName == rName )
+ {
+ SetCurrentTable( i );
+ return;
+ }
+ }
+
+ Sound::Beep(); // Tabelle nicht gefunden
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::SetCurrentObject( const String rName )
+{
+ SfxStringItem aNameItem( SID_CURRENTOBJECT, rName );
+ SFX_DISPATCHER().Execute( SID_CURRENTOBJECT,
+ SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
+ &aNameItem, 0L );
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::SetCurrentDoc( const String& rDocName ) // aktivieren
+{
+ SfxStringItem aDocItem( SID_CURRENTDOC, rDocName );
+ SFX_DISPATCHER().Execute( SID_CURRENTDOC,
+ SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD,
+ &aDocItem, 0L );
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScNavigatorDlg::GetViewData()
+{
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+ pViewData = pViewSh ? pViewSh->GetViewData() : NULL;
+
+ return ( pViewData != NULL );
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::UpdateColumn( const USHORT* pCol )
+{
+ if ( pCol )
+ nCurCol = *pCol;
+ else if ( GetViewData() )
+ nCurCol = pViewData->GetCurX() + 1;
+
+ aEdCol.SetCol( nCurCol );
+ CheckDataArea();
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::UpdateRow( const USHORT* pRow )
+{
+ if ( pRow )
+ nCurRow = *pRow;
+ else if ( GetViewData() )
+ nCurRow = pViewData->GetCurY() + 1;
+
+ aEdRow.SetRow( nCurRow );
+ CheckDataArea();
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::UpdateTable( const USHORT* pTab )
+{
+ if ( pTab )
+ nCurTab = *pTab;
+ else if ( GetViewData() )
+ nCurTab = pViewData->GetTabNo();
+
+// aLbTables.SetTab( nCurTab );
+ CheckDataArea();
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::UpdateAll()
+{
+ switch ( eListMode )
+ {
+ case NAV_LMODE_DOCS:
+ case NAV_LMODE_DBAREAS:
+ case NAV_LMODE_AREAS:
+ aLbEntries.Refresh();
+ break;
+
+ case NAV_LMODE_NONE:
+ //! ???
+ break;
+
+ default:
+ break;
+ }
+
+ aContentTimer.Stop(); // dann nicht nochmal
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::SetListMode( NavListMode eMode, BOOL bSetSize )
+{
+ if ( eMode != eListMode )
+ {
+ if ( eMode != NAV_LMODE_NONE )
+ bFirstBig = FALSE; // nicht mehr automatisch umschalten
+
+ eListMode = eMode;
+
+ switch ( eMode )
+ {
+ case NAV_LMODE_NONE:
+ ShowList( FALSE, bSetSize );
+ break;
+
+ case NAV_LMODE_AREAS:
+ case NAV_LMODE_DBAREAS:
+ case NAV_LMODE_DOCS:
+ aLbEntries.Refresh();
+ ShowList( TRUE, bSetSize );
+ break;
+
+ case NAV_LMODE_SCENARIOS:
+ ShowScenarios( TRUE, bSetSize );
+ break;
+ }
+
+ aTbxCmd.UpdateButtons();
+
+ if ( eMode != NAV_LMODE_NONE )
+ {
+ ScNavipiCfg& rCfg = SC_MOD()->GetNavipiCfg();
+ rCfg.SetListMode( (USHORT) eMode );
+ }
+ }
+
+ if ( pMarkArea )
+ UnmarkDataArea();
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::ShowList( BOOL bShow, BOOL bSetSize )
+{
+ FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
+ Size aSize = GetParent()->GetOutputSizePixel();
+
+ if ( bShow )
+ {
+ Size aMinSize = aInitSize;
+
+ aMinSize.Height() += nInitListHeight;
+ if ( pFloat )
+ pFloat->SetMinOutputSizePixel( aMinSize );
+ aSize.Height() = nListModeHeight;
+ aLbEntries.Show();
+ aLbDocuments.Show();
+ }
+ else
+ {
+ if ( pFloat )
+ {
+ pFloat->SetMinOutputSizePixel( aInitSize );
+ nListModeHeight = aSize.Height();
+ }
+ aSize.Height() = aInitSize.Height();
+ aLbEntries.Hide();
+ aLbDocuments.Hide();
+ }
+ aWndScenarios.Hide();
+
+ if ( pFloat )
+ {
+ if ( bSetSize )
+ pFloat->SetOutputSizePixel( aSize );
+ }
+ else
+ {
+ SfxNavigator* pNav = (SfxNavigator*)GetParent();
+ Size aFloating = pNav->GetFloatingSize();
+ aFloating.Height() = aSize.Height();
+ pNav->SetFloatingSize( aFloating );
+ }
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::ShowScenarios( BOOL bShow, BOOL bSetSize )
+{
+ FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
+ Size aSize = GetParent()->GetOutputSizePixel();
+
+ if ( bShow )
+ {
+ SfxBindings& rBindings = SFX_BINDINGS();
+ Size aMinSize = aInitSize;
+
+ aMinSize.Height() += nInitListHeight;
+ if ( pFloat )
+ pFloat->SetMinOutputSizePixel( aMinSize );
+ aSize.Height() = nListModeHeight;
+ rBindings.Invalidate( SID_SELECT_SCENARIO );
+ rBindings.Update( SID_SELECT_SCENARIO );
+ aWndScenarios.Show();
+ aLbDocuments.Show();
+ }
+ else
+ {
+ if ( pFloat )
+ {
+ pFloat->SetMinOutputSizePixel( aInitSize );
+ nListModeHeight = aSize.Height();
+ }
+ aSize.Height() = aInitSize.Height();
+ aWndScenarios.Hide();
+ aLbDocuments.Hide();
+ }
+ aLbEntries.Hide();
+
+ if ( pFloat )
+ {
+ if ( bSetSize )
+ pFloat->SetOutputSizePixel( aSize );
+ }
+ else
+ {
+ SfxNavigator* pNav = (SfxNavigator*)GetParent();
+ Size aFloating = pNav->GetFloatingSize();
+ aFloating.Height() = aSize.Height();
+ pNav->SetFloatingSize( aFloating );
+ }
+}
+
+
+//------------------------------------------------------------------------
+//
+// Dokumente fuer Dropdown-Listbox
+//
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::GetDocNames( const String* pManualSel )
+{
+ aLbDocuments.Clear();
+ aLbDocuments.SetUpdateMode( FALSE );
+
+ ScDocShell* pCurrentSh = PTR_CAST( ScDocShell, SfxObjectShell::Current() );
+
+ String aSelEntry;
+ SfxObjectShell* pSh = SfxObjectShell::GetFirst();
+ while ( pSh )
+ {
+ if ( pSh->ISA(ScDocShell) )
+ {
+ String aName = pSh->GetTitle();
+ String aEntry = aName;
+ if (pSh == pCurrentSh)
+ aEntry += aStrActive;
+ else
+ aEntry += aStrNotActive;
+ aLbDocuments.InsertEntry( aEntry );
+
+ if ( pManualSel ? ( aName == *pManualSel )
+ : ( pSh == pCurrentSh ) )
+ aSelEntry = aEntry; // kompletter Eintrag zum Selektieren
+ }
+
+ pSh = SfxObjectShell::GetNext( *pSh );
+ }
+
+ aLbDocuments.InsertEntry( aStrActiveWin );
+
+ String aHidden = aLbEntries.GetHiddenTitle();
+ if (aHidden.Len())
+ {
+ String aEntry = aHidden;
+ aEntry += aStrHidden;
+ aLbDocuments.InsertEntry( aEntry );
+
+ if ( pManualSel && aHidden == *pManualSel )
+ aSelEntry = aEntry;
+ }
+
+ aLbDocuments.SetUpdateMode( TRUE );
+
+ aLbDocuments.SelectEntry( aSelEntry );
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::MarkDataArea()
+{
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+
+ if ( pViewSh )
+ {
+ ScDocument* pDoc = (pViewData = pViewSh->GetViewData())->GetDocument();
+
+ if ( !pMarkArea )
+ pMarkArea = new ScArea;
+
+ pViewSh->MarkDataArea();
+ ScRange aMarkRange;
+ pViewSh->GetViewData()->GetMarkData().GetMarkArea(aMarkRange);
+ pMarkArea->nColStart = aMarkRange.aStart.Col();
+ pMarkArea->nRowStart = aMarkRange.aStart.Row();
+ pMarkArea->nColEnd = aMarkRange.aEnd.Col();
+ pMarkArea->nRowEnd = aMarkRange.aEnd.Row();
+ pMarkArea->nTab = aMarkRange.aStart.Tab();
+ }
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::UnmarkDataArea()
+{
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+
+ if ( pViewSh )
+ {
+ pViewSh->Unmark();
+ DELETEZ( pMarkArea );
+ }
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::CheckDataArea()
+{
+ if ( aTbxCmd.IsItemChecked( IID_DATA ) && pMarkArea )
+ {
+ if ( nCurTab != pMarkArea->nTab
+ || nCurCol < pMarkArea->nColStart+1
+ || nCurCol > pMarkArea->nColEnd+1
+ || nCurRow < pMarkArea->nRowStart+1
+ || nCurRow > pMarkArea->nRowEnd+1 )
+ {
+ aTbxCmd.SetItemState( IID_DATA, TriState(STATE_CHECK) );
+ aTbxCmd.Select( IID_DATA );
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::StartOfDataArea()
+{
+ // pMarkArea auswerten ???
+
+ if ( GetViewData() )
+ {
+ ScMarkData& rMark = pViewData->GetMarkData();
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+
+ USHORT nCol = aMarkRange.aStart.Col();
+ USHORT nRow = aMarkRange.aStart.Row();
+
+ if ( (nCol+1 != aEdCol.GetCol()) || (nRow+1 != aEdRow.GetRow()) )
+ SetCurrentCell( nCol, nRow );
+ }
+}
+
+//------------------------------------------------------------------------
+
+void ScNavigatorDlg::EndOfDataArea()
+{
+ // pMarkArea auswerten ???
+
+ if ( GetViewData() )
+ {
+ ScMarkData& rMark = pViewData->GetMarkData();
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+
+ USHORT nCol = aMarkRange.aEnd.Col();
+ USHORT nRow = aMarkRange.aEnd.Row();
+
+ if ( (nCol+1 != aEdCol.GetCol()) || (nRow+1 != aEdRow.GetRow()) )
+ SetCurrentCell( nCol, nRow );
+ }
+}
+
+//------------------------------------------------------------------------
+
+SfxChildAlignment __EXPORT ScNavigatorDlg::CheckAlignment(
+ SfxChildAlignment eActAlign, SfxChildAlignment eAlign )
+{
+ SfxChildAlignment eRetAlign;
+
+ //! kein Andocken, wenn Listbox nicht da ???
+
+ switch (eAlign)
+ {
+ case SFX_ALIGN_TOP:
+ case SFX_ALIGN_HIGHESTTOP:
+ case SFX_ALIGN_LOWESTTOP:
+ case SFX_ALIGN_BOTTOM:
+ case SFX_ALIGN_LOWESTBOTTOM:
+ case SFX_ALIGN_HIGHESTBOTTOM:
+ eRetAlign = eActAlign; // nicht erlaubt
+ break;
+
+ case SFX_ALIGN_LEFT:
+ case SFX_ALIGN_RIGHT:
+ case SFX_ALIGN_FIRSTLEFT:
+ case SFX_ALIGN_LASTLEFT:
+ case SFX_ALIGN_FIRSTRIGHT:
+ case SFX_ALIGN_LASTRIGHT:
+ eRetAlign = eAlign; // erlaubt
+ break;
+
+ default:
+ eRetAlign = eAlign;
+ break;
+ }
+ return eRetAlign;
+}
+
+//------------------------------------------------------------------------
+//
+// Drop auf den Navigator - andere Datei laden (File oder Bookmark)
+//
+//------------------------------------------------------------------------
+
+BOOL __EXPORT ScNavigatorDlg::Drop( const DropEvent& rEvt )
+{
+ BOOL bReturn = FALSE;
+
+ if ( !aLbEntries.IsInDrag() ) // kein Verschieben innerhalb der TreeListBox
+ {
+ String aFileName;
+
+ SvDataObjectRef pObject = SvDataObject::PasteDragServer(rEvt);
+
+ ULONG nFormat = INetBookmark::HasFormat(*pObject);
+ INetBookmark aBookmark;
+ if (aBookmark.Paste(*pObject,nFormat))
+ aFileName = aBookmark.GetURL();
+ else
+ {
+ // FORMAT_FILE direkt aus DragServer
+
+ USHORT nCount = DragServer::GetItemCount();
+ for ( USHORT i = 0; i < nCount && !aFileName.Len(); ++i )
+ if (DragServer::HasFormat( i, FORMAT_FILE ))
+ aFileName = DragServer::PasteFile( i );
+ }
+
+ if ( aFileName.Len() )
+ bReturn = aLbEntries.LoadFile( aFileName );
+ }
+ return bReturn;
+}
+
+BOOL __EXPORT ScNavigatorDlg::QueryDrop( DropEvent& rEvt )
+{
+ BOOL bReturn = FALSE;
+
+ if ( !aLbEntries.IsInDrag() ) // kein Verschieben innerhalb der TreeListBox
+ {
+ SvDataObjectRef pObject = SvDataObject::PasteDragServer(rEvt);
+ if ( pObject->HasFormat(FORMAT_FILE)
+ || INetBookmark::HasFormat(*pObject) )
+ {
+ rEvt.SetAction(DROP_COPY); // Kopier-Cursor anzeigen
+ bReturn = TRUE;
+ }
+ }
+
+ return bReturn;
+}
+
+
+
diff --git a/sc/source/ui/navipi/navipi.hrc b/sc/source/ui/navipi/navipi.hrc
new file mode 100644
index 000000000000..d95e7b422705
--- /dev/null
+++ b/sc/source/ui/navipi/navipi.hrc
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * $RCSfile: navipi.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc"
+
+//#define RID_SCDLG_NAVIGATOR 256
+
+#define FT_ROW 1
+#define ED_ROW 2
+#define FT_COL 3
+#define ED_COL 4
+#define LB_DOCUMENTS 5
+#define LB_ENTRIES 6
+#define TBX_CMD 7
+#define STR_DRAGMODE 8
+#define STR_DISPLAY 9
+#define STR_ACTIVE 10
+#define STR_NOTACTIVE 11
+#define STR_HIDDEN 12
+#define STR_ACTIVEWIN 13
+//#define IMG_ENTRIES 14
+#define STR_QHLP_SCEN_LISTBOX 15
+#define STR_QHLP_SCEN_COMMENT 16
+
+
+
+#define IID_AREAS 1
+#define IID_DBAREAS 2
+#define IID_DATA 3
+#define IID_DOCS 4
+#define IID_UP 5
+#define IID_DOWN 6
+#define IID_SCENARIOS 7
+#define IID_DROPMODE 9
+#define IID_CHANGEROOT 10
+#define IID_ZOOMOUT 11
+
+
diff --git a/sc/source/ui/navipi/navipi.src b/sc/source/ui/navipi/navipi.src
new file mode 100644
index 000000000000..38419aec12a1
--- /dev/null
+++ b/sc/source/ui/navipi/navipi.src
@@ -0,0 +1,1150 @@
+/*************************************************************************
+ *
+ * $RCSfile: navipi.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "navipi.hrc"
+Window RID_SCDLG_NAVIGATOR
+{
+ SVLook = TRUE ;
+ HelpId = HID_SC_NAVIGATOR ;
+ //? Pos = MAP_APPFONT( 0, 0 );
+ Size = MAP_APPFONT ( 115 , 116 ) ;
+ OutputSize = TRUE ;
+ DialogControl = TRUE ;
+ Hide = TRUE ;
+ Text = "Navigator" ;
+ Text [ ENGLISH ] = "Navigator" ;
+ Text [ norwegian ] = "Navigator" ;
+ Text [ italian ] = "Navigatore" ;
+ Text [ portuguese_brazilian ] = "Navegador" ;
+ Text [ portuguese ] = "Navegador" ;
+ Text [ finnish ] = "Navigaattori" ;
+ Text [ danish ] = "Navigator" ;
+ Text [ french ] = "Navigateur" ;
+ Text [ swedish ] = "Navigator" ;
+ Text [ dutch ] = "Navigator" ;
+ Text [ spanish ] = "Navegador" ;
+ Text [ ENGLISH_US ] = "Navigator" ;
+ // Closeable = TRUE ;
+ // Moveable = TRUE ;
+ // Zoomable = TRUE ;
+ // Sizeable = TRUE ;
+ // EnableResizing = TRUE ;
+ // HideWhenDeactivate = TRUE ;
+ // Border = TRUE ;
+ // Dockable = TRUE ;
+ FixedText FT_ROW
+ {
+ // Pos = MAP_APPFONT( 2, 20 );
+ Pos = MAP_APPFONT ( 2 , 19 ) ;
+ // an kleinere Toolbox-Bitmaps angepasst
+ Size = MAP_APPFONT ( 19 , 10 ) ;
+ Text = "Zeile" ;
+ Text [ ENGLISH ] = "Row" ;
+ Text [ norwegian ] = "Row" ;
+ Text [ italian ] = "Riga" ;
+ Text [ portuguese_brazilian ] = "Fileira" ;
+ Text [ portuguese ] = "Linha" ;
+ Text [ finnish ] = "Rivi" ;
+ Text [ danish ] = "Række" ;
+ Text [ french ] = "Ligne" ;
+ Text [ swedish ] = "Rad" ;
+ Text [ dutch ] = "Rij" ;
+ Text [ spanish ] = "Fila" ;
+ Text [ ENGLISH_US ] = "Row" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "¦C";
+ Text[ arabic ] = "ÓØÑ";
+ Text[ dutch ] = "Rij";
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ greek ] = "ÃñáììÞ";
+ Text[ korean ] = "Çà";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField ED_ROW
+ {
+ HelpId = HID_SC_NAVIPI_ROW ;
+ Border = TRUE ;
+ // Pos = MAP_APPFONT( 31, 19 );
+ Pos = MAP_APPFONT ( 31 , 18 ) ;
+ // an kleinere Toolbox-Bitmaps angepasst
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ Right = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ SpinSize = 1 ;
+ Minimum = 1 ;
+ First = 1 ;
+ Maximum = 32000 ;
+ Last = 32000 ;
+ QuickHelpText = "Zeile" ;
+ QuickHelpText [ ENGLISH ] = "Row" ;
+ QuickHelpText [ norwegian ] = "Row" ;
+ QuickHelpText [ italian ] = "Riga" ;
+ QuickHelpText [ portuguese_brazilian ] = "Fileira" ;
+ QuickHelpText [ portuguese ] = "Linha" ;
+ QuickHelpText [ finnish ] = "Rivi" ;
+ QuickHelpText [ danish ] = "Række" ;
+ QuickHelpText [ french ] = "Ligne" ;
+ QuickHelpText [ swedish ] = "Rad" ;
+ QuickHelpText [ dutch ] = "Rij" ;
+ QuickHelpText [ spanish ] = "Fila" ;
+ QuickHelpText [ english_us ] = "Row" ;
+ QuickHelpText [ dutch ] = "Rij" ;
+ QuickHelpText [ french ] = "Ligne" ;
+ QuickHelpText[ russian ] = "Ñòðîêà";
+ QuickHelpText[ polish ] = "Wiersz";
+ QuickHelpText[ japanese ] = "s";
+ QuickHelpText[ chinese_simplified ] = "ÐÐ";
+ QuickHelpText[ chinese_traditional ] = "Äæ";
+ QuickHelpText[ arabic ] = "ÓØÑ";
+ QuickHelpText[ dutch ] = "Rij";
+ QuickHelpText[ chinese_simplified ] = "ÐÐ";
+ QuickHelpText[ greek ] = "ÃñáììÞ";
+ QuickHelpText[ korean ] = "Row";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_COL
+ {
+ Pos = MAP_APPFONT ( 2 , 5 ) ;
+ Size = MAP_APPFONT ( 23 , 10 ) ;
+ Text = "Spalte" ;
+ Text [ ENGLISH ] = "Column" ;
+ Text [ norwegian ] = "Column" ;
+ Text [ italian ] = "Colonna" ;
+ Text [ portuguese_brazilian ] = "Coluna" ;
+ Text [ portuguese ] = "Coluna" ;
+ Text [ finnish ] = "Sarake" ;
+ Text [ danish ] = "Kolonne" ;
+ Text [ french ] = "Colonne" ;
+ Text [ swedish ] = "Kolumn" ;
+ Text [ dutch ] = "Kolom" ;
+ Text [ spanish ] = "Columna" ;
+ Text [ ENGLISH_US ] = "Column" ;
+ Text[ chinese_simplified ] = "ÁÐ";
+ Text[ russian ] = "Ñòîëáåö";
+ Text[ polish ] = "Kolumna";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÚãæÏ";
+ Text[ dutch ] = "Kolom";
+ Text[ chinese_simplified ] = "ÁÐ";
+ Text[ greek ] = "ÓôÞëç";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ SpinField ED_COL
+ {
+ HelpId = HID_SC_NAVIPI_COL ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 31 , 4 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ Right = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ QuickHelpText = "Spalte" ;
+ QuickHelpText [ ENGLISH ] = "Column" ;
+ QuickHelpText [ norwegian ] = "Column" ;
+ QuickHelpText [ italian ] = "Colonna" ;
+ QuickHelpText [ portuguese_brazilian ] = "Coluna" ;
+ QuickHelpText [ portuguese ] = "Coluna" ;
+ QuickHelpText [ finnish ] = "Sarake" ;
+ QuickHelpText [ danish ] = "Kolonne" ;
+ QuickHelpText [ french ] = "Colonne" ;
+ QuickHelpText [ swedish ] = "Kolumn" ;
+ QuickHelpText [ dutch ] = "Kolom" ;
+ QuickHelpText [ spanish ] = "Columna" ;
+ QuickHelpText [ english_us ] = "Column" ;
+ QuickHelpText [ dutch ] = "Kolom" ;
+ QuickHelpText [ french ] = "Colonne" ;
+ QuickHelpText[ russian ] = "Ñòîëáåö";
+ QuickHelpText[ polish ] = "Kolumna";
+ QuickHelpText[ japanese ] = "—ñ";
+ QuickHelpText[ chinese_simplified ] = "ÁÐ";
+ QuickHelpText[ chinese_traditional ] = "¦C";
+ QuickHelpText[ arabic ] = "ÚãæÏ";
+ QuickHelpText[ dutch ] = "Kolom";
+ QuickHelpText[ chinese_simplified ] = "ÁÐ";
+ QuickHelpText[ greek ] = "ÓôÞëç";
+ QuickHelpText[ korean ] = "Column";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ Control LB_ENTRIES
+ {
+ // "Control" braucht immer eigene HelpId
+ HelpId = HID_SC_NAVIPI_ENTRIES ;
+ Border = TRUE ;
+ // Pos = MAP_APPFONT( 2, 52 );
+ Pos = MAP_APPFONT ( 2 , 35 ) ;
+ Size = MAP_APPFONT ( 110 , 100 ) ;
+ TabStop = TRUE ;
+ };
+ ListBox LB_DOCUMENTS
+ {
+ HelpId = HID_SC_NAVIPI_DOC ;
+ Border = TRUE ;
+ // Pos = MAP_APPFONT( 2, 35 );
+ Pos = MAP_APPFONT ( 2 , 89 ) ;
+ Size = MAP_APPFONT ( 82 , 50 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ QuickHelpText = "Dokument" ;
+ QuickHelpText [ ENGLISH ] = "Document" ;
+ QuickHelpText [ dutch ] = "Document" ;
+ QuickHelpText [ english_us ] = "Document" ;
+ QuickHelpText [ italian ] = "Documento" ;
+ QuickHelpText [ spanish ] = "Documento" ;
+ QuickHelpText [ french ] = "Document" ;
+ QuickHelpText [ danish ] = "Dokument" ;
+ QuickHelpText [ portuguese ] = "Documento" ;
+ QuickHelpText [ portuguese_brazilian ] = "Dokument" ;
+ QuickHelpText [ swedish ] = "Dokument" ;
+ QuickHelpText[ russian ] = "Äîêóìåíò";
+ QuickHelpText[ polish ] = "Dokument";
+ QuickHelpText[ japanese ] = "ÄÞ·­ÒÝÄ";
+ QuickHelpText[ chinese_simplified ] = "Îĵµ";
+ QuickHelpText[ chinese_traditional ] = "ÀÉ®×";
+ QuickHelpText[ arabic ] = "ãÓÊäÏ";
+ QuickHelpText[ dutch ] = "Document";
+ QuickHelpText[ chinese_simplified ] = "Îĵµ";
+ QuickHelpText[ greek ] = "¸ããñáöï";
+ QuickHelpText[ korean ] = "Document";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ToolBox TBX_CMD
+ {
+ Pos = MAP_APPFONT ( 66 , 3 ) ;
+ HelpId = HID_SC_NAVIPI_TOOLBOX ;
+ SVLook = TRUE ;
+ Border = FALSE ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap { File = "navipi.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ IdList = // 3
+ {
+ IID_DATA ;
+ IID_UP ; // 5
+ IID_DOWN ; // 6
+ IID_SCENARIOS ; // 7
+ IID_DROPMODE ; // 9
+ IID_CHANGEROOT ; // 10
+ IID_ZOOMOUT ; // 11
+ };
+ IdCount = { 8 ; };
+ };
+ LineCount = 2 ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = IID_DATA ;
+ HelpId = HID_SC_NAVIPI_DATA ;
+ Text = "Datenbereich" ;
+ Text [ ENGLISH ] = "Data Area" ;
+ Text [ norwegian ] = "Data Area" ;
+ Text [ italian ] = "Area dati" ;
+ Text [ portuguese_brazilian ] = "Data Area" ;
+ Text [ portuguese ] = "Área de dados" ;
+ Text [ finnish ] = "Data Area" ;
+ Text [ danish ] = "Dataområde" ;
+ Text [ french ] = "Plage de données" ;
+ Text [ swedish ] = "Dataområde" ;
+ Text [ dutch ] = "Gegevensbereik" ;
+ Text [ spanish ] = "Área de datos" ;
+ Text [ english_us ] = "Data Area" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓò";
+ Text[ russian ] = "Îáëàñòü äàííûõ";
+ Text[ polish ] = "Obszar danych";
+ Text[ japanese ] = "ÃÞ°À”͈Í";
+ Text[ chinese_traditional ] = "¸ê®Æ°Ï°ì";
+ Text[ arabic ] = "ãäØÞÉ ÇáÈíÇäÇÊ";
+ Text[ dutch ] = "Gegevensbereik";
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓò";
+ Text[ greek ] = "Ðåñéï÷Þ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¿µ¿ª";
+ Text[ turkish ] = "Veri alaný";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = IID_UP ;
+ HelpId = HID_SC_NAVIPI_UP ;
+ Text = "Anfang" ;
+ Text [ ENGLISH ] = "Start" ;
+ Text [ norwegian ] = "Start" ;
+ Text [ italian ] = "Inizio" ;
+ Text [ portuguese_brazilian ] = "Início" ;
+ Text [ portuguese ] = "Início" ;
+ Text [ finnish ] = "Alku" ;
+ Text [ danish ] = "Begyndelse" ;
+ Text [ french ] = "Début" ;
+ Text [ swedish ] = "Början" ;
+ Text [ dutch ] = "Begin" ;
+ Text [ spanish ] = "Comienzo" ;
+ Text [ english_us ] = "Start" ;
+ Text[ chinese_simplified ] = "¿ªÊ¼";
+ Text[ russian ] = "Íà÷àëî";
+ Text[ polish ] = "Pocz¹tek";
+ Text[ japanese ] = "½À°Ä";
+ Text[ chinese_traditional ] = "¶}©l";
+ Text[ arabic ] = "ÈÏÇíÉ";
+ Text[ dutch ] = "Begin";
+ Text[ chinese_simplified ] = "¿ªÊ¼";
+ Text[ greek ] = "Áñ÷Þ";
+ Text[ korean ] = "½ÃÀÛ";
+ Text[ turkish ] = "Baþlangýç";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = IID_DOWN ;
+ HelpId = HID_SC_NAVIPI_DOWN ;
+ Text = "Ende" ;
+ Text [ ENGLISH ] = "End" ;
+ Text [ norwegian ] = "End" ;
+ Text [ italian ] = "Fine" ;
+ Text [ portuguese_brazilian ] = "Final" ;
+ Text [ portuguese ] = "Fim" ;
+ Text [ finnish ] = "Loppu" ;
+ Text [ danish ] = "Slut" ;
+ Text [ french ] = "Fin" ;
+ Text [ swedish ] = "Slut" ;
+ Text [ dutch ] = "Einde" ;
+ Text [ spanish ] = "Fin" ;
+ Text [ english_us ] = "End" ;
+ Text[ chinese_simplified ] = "½áÊø";
+ Text[ russian ] = "Êîíåö";
+ Text[ polish ] = "Koniec";
+ Text[ japanese ] = "I—¹";
+ Text[ chinese_traditional ] = "µ²§ô";
+ Text[ arabic ] = "äåÇíÉ";
+ Text[ dutch ] = "Einde";
+ Text[ chinese_simplified ] = "½áÊø";
+ Text[ greek ] = "ÔÝëïò";
+ Text[ korean ] = "Á¾·á";
+ Text[ turkish ] = "Son";
+ Text[ language_user1 ] = " ";
+ };
+ //--------------------------------------------
+ // ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR; };
+ //--------------------------------------------
+ //----------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_BREAK ; };
+ //----------------------------------------
+ ToolBoxItem
+ {
+ Identifier = IID_ZOOMOUT ;
+ HelpId = HID_SC_NAVIPI_ZOOM ;
+ Text = "Inhalte" ;
+ Text [ ENGLISH ] = "Contents" ;
+ Text [ dutch ] = "Inhoud" ;
+ Text [ english_us ] = "Contents" ;
+ Text [ italian ] = "Contenuti" ;
+ Text [ spanish ] = "Contenidos" ;
+ Text [ french ] = "Contenu" ;
+ Text [ swedish ] = "Innehåll" ;
+ Text [ danish ] = "Indhold" ;
+ Text [ portuguese ] = "Conteúdos" ;
+ Text [ portuguese_brazilian ] = "Inhalte" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ russian ] = "Ñîäåðæèìîå";
+ Text[ polish ] = "Zawartoœci";
+ Text[ japanese ] = "“à—e";
+ Text[ chinese_traditional ] = "¤º®e";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ dutch ] = "Inhoud";
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ korean ] = "³»¿ë";
+ Text[ turkish ] = "Ýçerikler";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = IID_CHANGEROOT ;
+ HelpId = HID_SC_NAVIPI_ROOT ;
+ Text = "Umschalten" ;
+ Text [ ENGLISH ] = "Toggle" ;
+ Text [ dutch ] = "Omschakelen" ;
+ Text [ english_us ] = "Toggle" ;
+ Text [ italian ] = "Commuta" ;
+ Text [ spanish ] = "Conmutar" ;
+ Text [ french ] = "Basculer" ;
+ Text [ swedish ] = "Växla" ;
+ Text [ danish ] = "Skift" ;
+ Text [ portuguese ] = "Comutar" ;
+ Text [ portuguese_brazilian ] = "Umschalten" ;
+ Text[ chinese_simplified ] = "Çл»";
+ Text[ russian ] = "Ïåðåêëþ÷èòü";
+ Text[ polish ] = "Prze³¹cz";
+ Text[ japanese ] = "Ø‚è‘Ö‚¦";
+ Text[ chinese_traditional ] = "¤Á´«";
+ Text[ arabic ] = "ÊÈÏíá";
+ Text[ dutch ] = "Omschakelen";
+ Text[ chinese_simplified ] = "Çл»";
+ Text[ greek ] = "ÅíáëëáãÞ";
+ Text[ korean ] = "Åä±Û";
+ Text[ turkish ] = "Deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = IID_SCENARIOS ;
+ HelpId = HID_SC_NAVIPI_SCEN ;
+ Text = "Szenarien" ;
+ Text [ ENGLISH ] = "Scenarios" ;
+ Text [ dutch ] = "Scenario´s" ;
+ Text [ english_us ] = "Scenarios" ;
+ Text [ italian ] = "Scenari" ;
+ Text [ spanish ] = "Escenarios" ;
+ Text [ french ] = "Scénarios" ;
+ Text [ swedish ] = "Scenarion" ;
+ Text [ danish ] = "Scenarier" ;
+ Text [ portuguese ] = "Cenários" ;
+ Text [ portuguese_brazilian ] = "Szenarien" ;
+ Text[ chinese_simplified ] = "·½°¸";
+ Text[ russian ] = "Ñöåíàðèè";
+ Text[ polish ] = "Scenariusz";
+ Text[ japanese ] = "¼Åص";
+ Text[ chinese_traditional ] = "¤ÀªRÂÅ¥»";
+ Text[ arabic ] = "æÍÏÇÊ ÇáÓíäÇÑíæ";
+ Text[ dutch ] = "Scenario´s";
+ Text[ chinese_simplified ] = "·½°¸";
+ Text[ greek ] = "ÓåíÜñéá";
+ Text[ korean ] = "½Ã³ª¸®¿À";
+ Text[ turkish ] = "Senaryo";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = IID_DROPMODE ;
+ HelpId = HID_SC_NAVIPI_DROP ;
+ DropDown = TRUE ;
+ Text = "Dragmodus" ;
+ Text [ ENGLISH ] = "Drag mode" ;
+ Text [ dutch ] = "Dragmodus" ;
+ Text [ english_us ] = "Drag Mode" ;
+ Text [ italian ] = "Modo drag" ;
+ Text [ spanish ] = "Modo Arrastrar" ;
+ Text [ french ] = "Mode Glisser" ;
+ Text [ swedish ] = "Draläge" ;
+ Text [ danish ] = "Trækmodus" ;
+ Text [ portuguese ] = "Modo Arrastar" ;
+ Text [ portuguese_brazilian ] = "Dragmodus" ;
+ Text[ chinese_simplified ] = "ÍÏÀ­Ä£Ê½";
+ Text[ russian ] = "Ðåæèì ïåðåòÿãèâàíèÿ";
+ Text[ polish ] = "Tryb przeci¹gania";
+ Text[ japanese ] = "ÄÞׯ¸ÞÓ°ÄÞ";
+ Text[ chinese_traditional ] = "©ì¦²¼Ò¦¡";
+ Text[ arabic ] = "ØÑíÞÉ ÇáÓÍÈ";
+ Text[ dutch ] = "Dragmodus";
+ Text[ chinese_simplified ] = "ÍÏÀ­Ä£Ê½";
+ Text[ greek ] = "ÊáôÜóôáóç ìåôáêßíçóçò";
+ Text[ korean ] = "µå·¡±× ¸ðµå";
+ Text[ turkish ] = "Sürükleme kipi";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ String STR_DRAGMODE
+ {
+ Text = "Dragmodus" ;
+ Text [ English ] = "Drag mode" ;
+ Text [ dutch ] = "Dragmodus" ;
+ Text [ english_us ] = "Drag Mode" ;
+ Text [ italian ] = "Modo trascina" ;
+ Text [ spanish ] = "Modo Arrastrar" ;
+ Text [ french ] = "Mode Glisser" ;
+ Text [ swedish ] = "Draläge" ;
+ Text [ danish ] = "Trækmodus" ;
+ Text [ portuguese ] = "Modo Arrastar" ;
+ Text [ portuguese_brazilian ] = "Dragmodus" ;
+ Text[ chinese_simplified ] = "ÍÏÀ­Ä£Ê½";
+ Text[ russian ] = "Ðåæèì ïåðåòÿãèâàíèÿ";
+ Text[ polish ] = "Tryb przeci¹gania";
+ Text[ japanese ] = "ÄÞׯ¸ÞÓ°ÄÞ";
+ Text[ chinese_traditional ] = "©ì¦²¼Ò¦¡";
+ Text[ arabic ] = "ØÑíÞÉ ÇáÓÍÈ";
+ Text[ dutch ] = "Dragmodus";
+ Text[ chinese_simplified ] = "ÍÏÀ­Ä£Ê½";
+ Text[ greek ] = "ÊáôÜóôáóç ìåôáêßíçóçò";
+ Text[ korean ] = "µå·¡±× ¸ðµå";
+ Text[ turkish ] = "Sürükleme kipi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DISPLAY
+ {
+ Text = "Anzeige" ;
+ Text [ English ] = "Display" ;
+ Text [ dutch ] = "Beeld" ;
+ Text [ english_us ] = "Display" ;
+ Text [ italian ] = "Visualizzazione" ;
+ Text [ spanish ] = "Visualización" ;
+ Text [ french ] = "Affichage" ;
+ Text [ swedish ] = "Visning" ;
+ Text [ danish ] = "Visning" ;
+ Text [ portuguese ] = "Mostrar" ;
+ Text [ portuguese_brazilian ] = "Anzeige" ;
+ Text[ chinese_simplified ] = "ÏÔʾ";
+ Text[ russian ] = "Ïîêàçàòü";
+ Text[ polish ] = "Wyœwietl";
+ Text[ japanese ] = "•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü";
+ Text[ arabic ] = "ÚÑÖ";
+ Text[ dutch ] = "Beeld";
+ Text[ chinese_simplified ] = "ÏÔʾ";
+ Text[ greek ] = "ÅìöÜíéóç";
+ Text[ korean ] = "µð½ºÇ÷¹ÀÌ";
+ Text[ turkish ] = "Görüntü";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ACTIVE
+ {
+ Text = "aktiv" ;
+ Text [ English ] = "active" ;
+ Text [ dutch ] = "actief" ;
+ Text [ english_us ] = "active" ;
+ Text [ italian ] = "attivo" ;
+ Text [ spanish ] = "activo" ;
+ Text [ french ] = "active" ;
+ Text [ swedish ] = "aktiv" ;
+ Text [ danish ] = "aktiv" ;
+ Text [ portuguese ] = "activo" ;
+ Text [ portuguese_brazilian ] = "aktiv" ;
+ Text[ chinese_simplified ] = "¼¤»îµÄ";
+ Text[ russian ] = "àêòèâíûé";
+ Text[ polish ] = "aktywny";
+ Text[ japanese ] = "±¸Ã¨ÌÞ";
+ Text[ chinese_traditional ] = "¿E¬¡ªº";
+ Text[ arabic ] = "äÔØ";
+ Text[ dutch ] = "actief";
+ Text[ chinese_simplified ] = "¼¤»îµÄ";
+ Text[ greek ] = "ÅíåñãÜ";
+ Text[ korean ] = "ÀÛµ¿";
+ Text[ turkish ] = "Etkin";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NOTACTIVE
+ {
+ Text = "inaktiv" ;
+ Text [ English ] = "inactive" ;
+ Text [ english_us ] = "inactive" ;
+ Text [ italian ] = "inattivo" ;
+ Text [ spanish ] = "inactivo" ;
+ Text [ french ] = "inactive" ;
+ Text [ dutch ] = "inactief" ;
+ Text [ swedish ] = "inaktiv" ;
+ Text [ danish ] = "inaktiv" ;
+ Text [ portuguese ] = "inactivo" ;
+ Text [ portuguese_brazilian ] = "inaktiv" ;
+ Text[ chinese_simplified ] = "ʧ»î";
+ Text[ russian ] = "íåàêòèâíûé";
+ Text[ polish ] = "nieaktywny";
+ Text[ japanese ] = "±¸Ã¨ÌÞ‚Å‚È‚¢";
+ Text[ chinese_traditional ] = "¥¢¬¡";
+ Text[ arabic ] = "ÛíÑ äÔØ";
+ Text[ dutch ] = "inactief";
+ Text[ chinese_simplified ] = "ʧ»î";
+ Text[ greek ] = "ìç åíåñãü";
+ Text[ korean ] = "ºñ È°¼º";
+ Text[ turkish ] = "Etkin deðil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_HIDDEN
+ {
+ Text = "versteckt" ;
+ Text [ English ] = "hidden" ;
+ Text [ english_us ] = "hidden" ;
+ Text [ italian ] = "nascosto" ;
+ Text [ spanish ] = "oculto" ;
+ Text [ french ] = "caché" ;
+ Text [ dutch ] = "verborgen" ;
+ Text [ swedish ] = "gömd" ;
+ Text [ danish ] = "skjult" ;
+ Text [ portuguese ] = "oculto" ;
+ Text [ portuguese_brazilian ] = "versteckt" ;
+ Text[ chinese_simplified ] = "ÒþÈë";
+ Text[ russian ] = "ñêðûòûé";
+ Text[ polish ] = "ukryty";
+ Text[ japanese ] = "‰B‚µ";
+ Text[ chinese_traditional ] = "Áô¤J";
+ Text[ arabic ] = "ãÎÝí";
+ Text[ dutch ] = "verborgen";
+ Text[ chinese_simplified ] = "ÒþÈë";
+ Text[ greek ] = "êñõöü";
+ Text[ korean ] = "¼û±è";
+ Text[ turkish ] = "Gizli";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ACTIVEWIN
+ {
+ Text = "Aktives Fenster" ;
+ Text [ English ] = "Active Window" ;
+ Text [ dutch ] = "Actief venster" ;
+ Text [ english_us ] = "Active window" ;
+ Text [ italian ] = "Finestra attiva" ;
+ Text [ spanish ] = "Ventana activa" ;
+ Text [ french ] = "Fenêtre active" ;
+ Text [ swedish ] = "Aktivt fönster" ;
+ Text [ danish ] = "aktivt vindue" ;
+ Text [ portuguese ] = "Janela activa" ;
+ Text [ portuguese_brazilian ] = "Aktives Fenster" ;
+ Text[ chinese_simplified ] = "µ±Ç°µÄÊÓ´°";
+ Text[ russian ] = "Àêòèâíîå îêíî";
+ Text[ polish ] = "Aktywne okno";
+ Text[ japanese ] = "±¸Ã¨Ìނȳ¨ÝÄÞ³";
+ Text[ chinese_traditional ] = "·í«eªºµøµ¡";
+ Text[ arabic ] = "ÇáäÇÝÐÉ ÇáäÔØÉ";
+ Text[ dutch ] = "Actief venster";
+ Text[ chinese_simplified ] = "µ±Ç°µÄÊÓ´°";
+ Text[ greek ] = "Åíåñãü ðáñÜèõñï";
+ Text[ korean ] = "È°¼º â";
+ Text[ turkish ] = "Etkin pencere";
+ Text[ language_user1 ] = " ";
+ };
+
+ String STR_QHLP_SCEN_LISTBOX
+ {
+ Text = "Name des Szenarios" ;
+ Text [ ENGLISH ] = "Szenario Name" ;
+ Text [ ENGLISH_US ] = "Scenario name";
+ Text[ italian ] = "Nome dello scenario";
+ Text[ portuguese_brazilian ] = "Name des Szenarios";
+ Text[ portuguese ] = "Nome do cenário";
+ Text[ danish ] = "Scenariets navn";
+ Text[ french ] = "Nom du scénario";
+ Text[ swedish ] = "Namn på scenariot";
+ Text[ dutch ] = "Naam van het scenario";
+ Text[ spanish ] = "Nombre del escenario";
+ Text[ chinese_simplified ] = "·½°¸Ãû³Æ";
+ Text[ russian ] = "Íàçâàíèå ñöåíàðèÿ";
+ Text[ polish ] = "Nazwa scenariusza";
+ Text[ japanese ] = "¼Åص–¼";
+ Text[ chinese_traditional ] = "¤ÀªRÂÅ¥»ªº¦WºÙ";
+ Text[ arabic ] = "ÇÓã ÇáÓíäÇÑíæ";
+ Text[ dutch ] = "Naam van het scenario";
+ Text[ chinese_simplified ] = "·½°¸Ãû³Æ";
+ Text[ greek ] = "¼íïìá óåíáñßïõ";
+ Text[ korean ] = "½Ã³ª¸®¿À À̸§";
+ Text[ turkish ] = "Senaryo adý";
+ Text[ language_user1 ] = " ";
+ };
+
+ String STR_QHLP_SCEN_COMMENT
+ {
+ Text = "Kommentar" ;
+ Text [ ENGLISH ] = "Comment" ;
+ Text [ ENGLISH_US ] = "Comment";
+ Text[ italian ] = "Commento";
+ Text[ portuguese_brazilian ] = "Kommentar";
+ Text[ portuguese ] = "Comentário";
+ Text[ danish ] = "Kommentar";
+ Text[ french ] = "Commentaire";
+ Text[ swedish ] = "Kommentar";
+ Text[ dutch ] = "Commentaar";
+ Text[ spanish ] = "Comentario";
+ Text[ chinese_simplified ] = "×¢½â";
+ Text[ russian ] = "Êîììåíòàðèé";
+ Text[ polish ] = "Komentarz";
+ Text[ japanese ] = "ºÒÝÄ";
+ Text[ chinese_traditional ] = "ª`¸Ñ";
+ Text[ arabic ] = "ÊÚáíÞ";
+ Text[ dutch ] = "Commentaar";
+ Text[ chinese_simplified ] = "×¢½â";
+ Text[ greek ] = "Ó÷üëéï";
+ Text[ korean ] = "ÁÖ";
+ Text[ turkish ] = "Açýklama";
+ Text[ language_user1 ] = " ";
+ };
+
+ Text[ chinese_simplified ] = "ÖúÊÖ";
+ Text[ russian ] = "Íàâèãàòîð";
+ Text[ polish ] = "Nawigator";
+ Text[ japanese ] = "ÅËÞ¹Þ°À";
+ Text[ chinese_traditional ] = "§U¤â";
+ Text[ arabic ] = "ÇáäÇÝíÌíÊæÑ";
+ Text[ dutch ] = "Navigator";
+ Text[ chinese_simplified ] = "ÖúÊÖ";
+ Text[ greek ] = "Navigator";
+ Text[ korean ] = "³×ºñ°ÔÀÌÅÍ";
+ Text[ turkish ] = "Navigatör";
+ Text[ language_user1 ] = " ";
+};
+ImageList RID_IMAGELIST_NAVCONT
+{
+ ImageBitmap = Bitmap { File = "ncont.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ IdList =
+ {
+ // SC_CONTENT_...
+ 1 ;
+ 2 ;
+ 3 ;
+ 4 ;
+ 5 ;
+ 6 ;
+ 7 ;
+ };
+ IdCount = { 7 ; };
+};
+Bitmap RID_BMP_EXPAND
+{
+ File = "plus.bmp" ;
+};
+Bitmap RID_BMP_COLLAPSE
+{
+ File = "minus.bmp" ;
+};
+Image RID_IMG_DROP_URL
+{
+ ImageBitmap = Bitmap { File = "dropurl.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+};
+Image RID_IMG_DROP_LINK
+{
+ ImageBitmap = Bitmap { File = "droplink.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+};
+Image RID_IMG_DROP_COPY
+{
+ ImageBitmap = Bitmap { File = "dropcopy.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+};
+
+// content description strings are also used in ScLinkTargetsObj
+
+String SCSTR_CONTENT_ROOT
+{
+ TEXT = "Inhalte" ;
+ TEXT [ English ] = "Contents" ;
+ Text [ english_us ] = "Contents" ;
+ Text [ italian ] = "Contenuti" ;
+ Text [ spanish ] = "Contenidos" ;
+ Text [ french ] = "Contenu" ;
+ Text [ dutch ] = "Inhoud" ;
+ Text [ swedish ] = "Innehåll" ;
+ Text [ danish ] = "Indhold" ;
+ Text [ portuguese ] = "Conteúdos" ;
+ Text [ portuguese_brazilian ] = "Inhalte" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ russian ] = "Ñîäåðæàíèå";
+ Text[ polish ] = "Zawartoœci";
+ Text[ japanese ] = "“à—e";
+ Text[ chinese_traditional ] = "¤º®e";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ dutch ] = "Inhoud";
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ korean ] = "±¸¼º";
+ Text[ turkish ] = "Ýçerikler";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_CONTENT_TABLE
+{
+ TEXT = "Tabellen" ;
+ TEXT [ English ] = "Tables" ;
+ Text [ english_us ] = "Sheets" ;
+ Text [ italian ] = "Tabelle" ;
+ Text [ spanish ] = "Hojas" ;
+ Text [ french ] = "Feuilles" ;
+ Text [ dutch ] = "Werkbladen" ;
+ Text [ swedish ] = "Tabeller" ;
+ Text [ danish ] = "Regneark" ;
+ Text [ portuguese ] = "Folhas" ;
+ Text [ portuguese_brazilian ] = "Tabellen" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ russian ] = "Òàáëèöû";
+ Text[ polish ] = "Arkusze";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "¤u§@ªí";
+ Text[ arabic ] = "ÌÏÇæá";
+ Text[ dutch ] = "Werkbladen";
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ greek ] = "Ðßíáêåò";
+ Text[ korean ] = "½ÃÆ®";
+ Text[ turkish ] = "Tablolar";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_CONTENT_RANGENAME
+{
+ TEXT = "Bereichsnamen" ;
+ TEXT [ English ] = "Range names" ;
+ Text [ dutch ] = "Bereiknamen" ;
+ Text [ english_us ] = "Range names" ;
+ Text [ italian ] = "Nomi dell'area" ;
+ Text [ spanish ] = "Nombres de las áreas" ;
+ Text [ french ] = "Noms de plages" ;
+ Text [ swedish ] = "Områdesnamn" ;
+ Text [ danish ] = "Områdenavne" ;
+ Text [ portuguese ] = "Nomes das áreas" ;
+ Text [ portuguese_brazilian ] = "Bereichsnamen" ;
+ Text[ chinese_simplified ] = "ÇøÓòÃû³Æ";
+ Text[ russian ] = "Íàçâàíèÿ îáëàñòåé";
+ Text[ polish ] = "Nazwy obszarów";
+ Text[ japanese ] = "”͈͖¼";
+ Text[ chinese_traditional ] = "°Ï°ì¦WºÙ";
+ Text[ arabic ] = "ÃÓãÇÁ ÇáãäØÞÉ";
+ Text[ dutch ] = "Bereiknamen";
+ Text[ chinese_simplified ] = "ÇøÓòÃû³Æ";
+ Text[ greek ] = "Ïíüìáôá ðåñéï÷þí";
+ Text[ korean ] = "¿µ¿ª À̸§";
+ Text[ turkish ] = "Alan adlarý";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_CONTENT_DBAREA
+{
+ TEXT = "Datenbankbereiche" ;
+ TEXT [ English ] = "Database areas" ;
+ Text [ dutch ] = "Database-bereiken" ;
+ Text [ english_us ] = "Database ranges" ;
+ Text [ italian ] = "Aree database" ;
+ Text [ spanish ] = "Áreas de base de datos" ;
+ Text [ french ] = "Plages de base de données" ;
+ Text [ swedish ] = "Databasområden" ;
+ Text [ danish ] = "Databaseområder" ;
+ Text [ portuguese ] = "Áreas da base de dados" ;
+ Text [ portuguese_brazilian ] = "Datenbankbereiche" ;
+ Text[ chinese_simplified ] = "Êý¾Ý¿âÇøÓò";
+ Text[ russian ] = "Îáëàñòè áàçû äàííûõ";
+ Text[ polish ] = "Obszary bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚͈̔Í";
+ Text[ chinese_traditional ] = "¸ê®Æ®w°Ï°ì";
+ Text[ arabic ] = "ãäÇØÞ ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ dutch ] = "Database-bereiken";
+ Text[ chinese_simplified ] = "Êý¾Ý¿âÇøÓò";
+ Text[ greek ] = "Ðåäßá âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ¿µ¿ª";
+ Text[ turkish ] = "Veritabaný alanlarý";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_CONTENT_GRAPHIC
+{
+ TEXT = "Grafiken" ;
+ TEXT [ English ] = "Graphics" ;
+ Text [ english_us ] = "Graphics" ;
+ Text [ italian ] = "Immagini" ;
+ Text [ spanish ] = "Imágenes" ;
+ Text [ french ] = "Images" ;
+ Text [ dutch ] = "Afbeeldingen" ;
+ Text [ swedish ] = "Grafiker" ;
+ Text [ danish ] = "Billeder" ;
+ Text [ portuguese ] = "Imagens" ;
+ Text [ portuguese_brazilian ] = "Grafiken" ;
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ russian ] = "Ðèñóíêè";
+ Text[ polish ] = "Grafiki";
+ Text[ japanese ] = "¸Þ×̨¯¸";
+ Text[ chinese_traditional ] = "¼v¹³";
+ Text[ arabic ] = "ÕæÑ";
+ Text[ dutch ] = "Afbeeldingen";
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ greek ] = "ÃñáöéêÜ";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafikler";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_CONTENT_OLEOBJECT
+{
+ TEXT = "OLE-Objekte" ;
+ TEXT [ English ] = "OLE-Objects" ;
+ Text [ english_us ] = "OLE objects" ;
+ Text [ italian ] = "Oggetti OLE" ;
+ Text [ spanish ] = "Objetos OLE" ;
+ Text [ french ] = "Objets OLE" ;
+ Text [ dutch ] = "OLE-objecten" ;
+ Text [ swedish ] = "OLE-objekt" ;
+ Text [ danish ] = "OLE-objekter" ;
+ Text [ portuguese ] = "Objectos OLE" ;
+ Text [ portuguese_brazilian ] = "OLE-Objekte" ;
+ Text[ chinese_simplified ] = "OLE-¶ÔÏó";
+ Text[ russian ] = "Îáúåêòû OLE";
+ Text[ polish ] = "Obiekty OLE";
+ Text[ japanese ] = "OLE µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "OLE-ª«¥ó";
+ Text[ arabic ] = "OLE ßÇÆäÇÊ";
+ Text[ dutch ] = "OLE-objecten";
+ Text[ chinese_simplified ] = "OLE-¶ÔÏó";
+ Text[ greek ] = "Áíôéêåßìåíá OLE";
+ Text[ korean ] = "OLE °³Ã¼";
+ Text[ turkish ] = "OLE nesneleri";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_CONTENT_NOTE
+{
+ TEXT = "Notizen" ;
+ TEXT [ English ] = "Notes" ;
+ Text [ english_us ] = "Notes" ;
+ Text [ portuguese ] = "Anotações" ;
+ Text [ swedish ] = "Anteckningar" ;
+ Text [ danish ] = "Noter" ;
+ Text [ italian ] = "Note" ;
+ Text [ spanish ] = "Notas" ;
+ Text [ french ] = "Notes" ;
+ Text [ dutch ] = "Aantekeningen" ;
+ Text [ portuguese_brazilian ] = "Notizen" ;
+ Text[ chinese_simplified ] = "±¸×¢";
+ Text[ russian ] = "Ïðèìå÷àíèÿ";
+ Text[ polish ] = "Notatki";
+ Text[ japanese ] = "ºÒÝÄ";
+ Text[ chinese_traditional ] = "³Æµù";
+ Text[ arabic ] = "ãáÇÍÙÇÊ";
+ Text[ dutch ] = "Aantekeningen";
+ Text[ chinese_simplified ] = "±¸×¢";
+ Text[ greek ] = "Óçìåéþóåéò";
+ Text[ korean ] = "¸Þ¸ð";
+ Text[ turkish ] = "Notlar";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_CONTENT_AREALINK
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Verknüpfte Bereiche : Verkn³pfte Bereiche */
+ TEXT = "Verknüpfte Bereiche" ;
+ TEXT [ English ] = "Linked areas" ;
+ Text [ portuguese_brazilian ] = "Verknüpfte Bereiche" ;
+ Text [ english_us ] = "Linked areas" ;
+ Text [ portuguese ] = "Áreas ligadas" ;
+ Text [ swedish ] = "Länkade områden" ;
+ Text [ danish ] = "Sammenkædede områder" ;
+ Text [ italian ] = "Aree collegate" ;
+ Text [ spanish ] = "Áreas vinculadas" ;
+ Text [ french ] = "Plage externe" ;
+ Text [ dutch ] = "Gekoppelde bereiken" ;
+ Text[ chinese_simplified ] = "Á´½ÓµÄÇøÓò";
+ Text[ russian ] = "Ñâÿçàííûå îáëàñòè";
+ Text[ polish ] = "Po³¹czone obszary";
+ Text[ japanese ] = "Øݸ‚³‚ꂽ”͈Í";
+ Text[ chinese_traditional ] = "³sµ²ªº°Ï°ì";
+ Text[ arabic ] = "ãäÇØÞ ãÑÊÈØÉ";
+ Text[ dutch ] = "Gekoppelde bereiken";
+ Text[ chinese_simplified ] = "Á´½ÓµÄÇøÓò";
+ Text[ greek ] = "ÓõíäåäåìÝíåò ðåñéï÷Ýò";
+ Text[ korean ] = "¿µ¿ªÀÌ ¿¬°áµÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Baðlantýlý alanlar";
+ Text[ language_user1 ] = " ";
+};
+ // PopupMenu -------------------------------------------------------------
+Menu RID_POPUP_DROPMODE
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_DROPMODE_URL ;
+ HelpId = HID_SC_DROPMODE_URL ;
+ /* ### ACHTUNG: Neuer Text in Resource? Als Hyperlink einfügen : Als Hyperlink einf³gen */
+ Text = "Als Hyperlink einfügen" ;
+ Text [ ENGLISH ] = "Insert as Hyperlink" ;
+ Text [ dutch ] = "Als Hyperlink invoegen" ;
+ Text [ english_us ] = "Insert as Hyperlink" ;
+ Text [ swedish ] = "Infoga som hyperlänk" ;
+ Text [ danish ] = "Indsæt som hyperlink" ;
+ Text [ italian ] = "Inserisci come hyperlink" ;
+ Text [ spanish ] = "Insertar como hiperenlace" ;
+ Text [ french ] = "Insérer comme hyperlien" ;
+ Text [ portuguese_brazilian ] = "Als Hyperlink einfügen" ;
+ Text [ portuguese ] = "Inserir como hiperligação" ;
+ Text[ chinese_simplified ] = "µ±×÷³¬Á´½Ó²åÈë";
+ Text[ russian ] = "Âñòàâèòü êàê ãèïåðññûëêó";
+ Text[ polish ] = "Wstaw jako hiper³¹cze";
+ Text[ japanese ] = "ʲÊß°Øݸ‚Æ‚µ‚Ä‘}“ü";
+ Text[ chinese_traditional ] = "·í§@¶W³sµ²´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ ßÇÑÊÈÇØ ÊÔÚÈí";
+ Text[ dutch ] = "Als Hyperlink invoegen";
+ Text[ chinese_simplified ] = "µ±×÷³¬Á´½Ó²åÈë";
+ Text[ greek ] = "ÅéóáãùãÞ ùò õðåñ-óýíäåóç";
+ Text[ korean ] = "ÇÏÀÌÆÛ¸µÅ©¸¦ »ðÀÔ";
+ Text[ turkish ] = "Hyperlink olarak ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_DROPMODE_LINK ;
+ HelpId = HID_SC_DROPMODE_LINK ;
+ /* ### ACHTUNG: Neuer Text in Resource? Als Verknüpfung einfügen : Als Verkn³pfung einf³gen */
+ Text = "Als Verknüpfung einfügen" ;
+ Text [ ENGLISH ] = "Insert as Link" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Drag & Drop als Verknüpfung : Drag & Drop als Verkn³pfung */
+ Text [ dutch ] = "Als koppeling invoegen" ;
+ Text [ english_us ] = "Insert as Link" ;
+ Text [ swedish ] = "Infoga som länk" ;
+ Text [ danish ] = "Indsæt som kæde" ;
+ Text [ italian ] = "Inserisci come collegamento" ;
+ Text [ spanish ] = "Insertar como vínculo" ;
+ Text [ french ] = "Insérer comme lien" ;
+ Text [ portuguese_brazilian ] = "Als Verknüpfung einfügen" ;
+ Text [ portuguese ] = "Inserir como ligação" ;
+ Text[ chinese_simplified ] = "µ±×÷Á´½Ó²åÈë";
+ Text[ russian ] = "Âñòàâèòü êàê ññûëêó";
+ Text[ polish ] = "Wstaw jako ³¹cze";
+ Text[ japanese ] = "Øݸ‚Æ‚µ‚Ä‘}“ü";
+ Text[ chinese_traditional ] = "·í§@±¶®|´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ ßÇÑÊÈÇØ";
+ Text[ dutch ] = "Als koppeling invoegen";
+ Text[ chinese_simplified ] = "µ±×÷Á´½Ó²åÈë";
+ Text[ greek ] = "ÅéóáãùãÞ ùò óýíäåóç";
+ Text[ korean ] = "¿¬°á·Î »ðÀÔ";
+ Text[ turkish ] = "Baðlantý olarak ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_DROPMODE_COPY ;
+ HelpId = HID_SC_DROPMODE_COPY ;
+ /* ### ACHTUNG: Neuer Text in Resource? Als Kopie einfügen : Als Kopie einf³gen */
+ Text = "Als Kopie einfügen" ;
+ Text [ ENGLISH ] = "Insert as Copy" ;
+ Text [ english_us ] = "Insert as Copy" ;
+ Text [ swedish ] = "Infoga som kopia" ;
+ Text [ danish ] = "Indsæt som kopi" ;
+ Text [ italian ] = "Inserisci come copia" ;
+ Text [ spanish ] = "Insertar como copia" ;
+ Text [ french ] = "Insérer comme copie" ;
+ Text [ dutch ] = "Als kopie invoegen" ;
+ Text [ portuguese ] = "Inserir como cópia" ;
+ Text [ portuguese_brazilian ] = "Als Kopie einfügen" ;
+ Text[ chinese_simplified ] = "µ±×÷¸´ÖƼþ²åÈë";
+ Text[ russian ] = "Âñòàâèòü êàê êîïèþ";
+ Text[ polish ] = "Wstaw jako kopiê";
+ Text[ japanese ] = "ºËß°‚Æ‚µ‚Ä‘}“ü";
+ Text[ chinese_traditional ] = "·í§@½Æ»s¥ó´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ ßäÓÎÉ";
+ Text[ dutch ] = "Als kopie invoegen";
+ Text[ chinese_simplified ] = "µ±×÷¸´ÖƼþ²åÈë";
+ Text[ greek ] = "ÅéóáãùãÞ ùò áíôßãñáöï";
+ Text[ korean ] = "º¹»çº»À» »ðÀÔ";
+ Text[ turkish ] = "Kopya olarak ekle";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+Menu RID_POPUP_NAVIPI_SCENARIO
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_NAVIPI_SCENARIO_DELETE ;
+ HelpId = HID_SC_SCENARIO_DELETE ;
+ Text = "Löschen" ;
+ Text [ ENGLISH ] = "Delete" ;
+ Text [ portuguese ] = "Eliminar" ;
+ Text [ english_us ] = "Delete" ;
+ Text [ portuguese_brazilian ] = "Löschen" ;
+ Text [ swedish ] = "Radera" ;
+ Text [ danish ] = "Slet" ;
+ Text [ italian ] = "Elimina" ;
+ Text [ spanish ] = "Eliminar" ;
+ Text [ french ] = "Supprimer" ;
+ Text [ dutch ] = "Wissen" ;
+ Text[ chinese_simplified ] = "ɾ³ý";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ";
+ Text[ chinese_traditional ] = "§R°£";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ dutch ] = "Wissen";
+ Text[ chinese_simplified ] = "ɾ³ý";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦";
+ Text[ turkish ] = "Sil";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_NAVIPI_SCENARIO_EDIT ;
+ HelpId = HID_SC_SCENARIO_EDIT ;
+ Text = "Eigenschaften..." ;
+ Text [ ENGLISH ] = "Properties..." ;
+ Text [ portuguese ] = "Propriedades..." ;
+ Text [ english_us ] = "Properties..." ;
+ Text [ portuguese_brazilian ] = "Eigenschaften..." ;
+ Text [ swedish ] = "Egenskaper..." ;
+ Text [ danish ] = "Egenskaber..." ;
+ Text [ italian ] = "Proprietà..." ;
+ Text [ spanish ] = "Propiedades..." ;
+ Text [ french ] = "Propriétés..." ;
+ Text [ dutch ] = "Eigenschappen..." ;
+ Text[ chinese_simplified ] = "ÊôÐÔ...";
+ Text[ russian ] = "Ñâîéñòâà...";
+ Text[ polish ] = "W³aœciwoœci...";
+ Text[ japanese ] = "ÌßÛÊßè...";
+ Text[ chinese_traditional ] = "ÄÝ©Ê...";
+ Text[ arabic ] = "ÎÕÇÆÕ...";
+ Text[ dutch ] = "Eigenschappen...";
+ Text[ chinese_simplified ] = "ÊôÐÔ...";
+ Text[ greek ] = "Éäéüôçôåò...";
+ Text[ korean ] = "Ư¼º...";
+ Text[ turkish ] = "Özellikler...";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
diff --git a/sc/source/ui/navipi/scenwnd.cxx b/sc/source/ui/navipi/scenwnd.cxx
new file mode 100644
index 000000000000..72e7151a4caf
--- /dev/null
+++ b/sc/source/ui/navipi/scenwnd.cxx
@@ -0,0 +1,378 @@
+/*************************************************************************
+ *
+ * $RCSfile: scenwnd.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <svtools/slstitm.hxx>
+#include <svtools/stritem.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "navipi.hxx"
+#include "popmenu.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+
+//------------------------------------------------------------------------
+
+
+//========================================================================
+// class ScScenarioWindow ------------------------------------------------
+//========================================================================
+
+// -----------------------------------------------------------------------
+
+ScScenarioListBox::ScScenarioListBox( Window* pParent )
+ : ListBox ( pParent, WB_BORDER ),
+ rParent ( (ScScenarioWindow&)*pParent ),
+ pAccel ( NULL )
+{
+ Font aFont( GetFont() );
+ aFont.SetTransparent( TRUE );
+ aFont.SetWeight( WEIGHT_LIGHT );
+ SetFont( aFont );
+}
+
+// -----------------------------------------------------------------------
+
+__EXPORT ScScenarioListBox::~ScScenarioListBox()
+{
+ ClearEntryList();
+ delete pAccel;
+}
+
+// -----------------------------------------------------------------------
+
+void ScScenarioListBox::UpdateEntries( List* pNewEntryList )
+{
+ ClearEntryList();
+ Clear();
+
+ if ( pNewEntryList )
+ {
+ if ( pNewEntryList->Count() > 1 )
+ {
+ CopyEntryList( *pNewEntryList );
+ SetUpdateMode( FALSE );
+
+ String* pEntry = (String*)aEntryList.First();
+
+ while ( pEntry )
+ {
+ InsertEntry( *pEntry, LISTBOX_APPEND );
+ aEntryList.Next(); // Kommentar ueberspringen
+ pEntry = (String*)aEntryList.Next();
+ }
+
+ SetUpdateMode( TRUE );
+ SetNoSelection();
+ rParent.SetComment( EMPTY_STRING );
+ }
+ else if ( pNewEntryList->Count() == 1 )
+ // Tabelle ist Scenario-Tabelle: nur Kommentar
+ rParent.SetComment( *((String*)pNewEntryList->First()) );
+ else
+ rParent.SetComment( EMPTY_STRING ); // normale Tabelle ohne Szenarien
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void ScScenarioListBox::ClearEntryList()
+{
+ String* pEntry = (String*)aEntryList.First();
+
+ while ( pEntry )
+ {
+ delete pEntry;
+ pEntry = (String*)aEntryList.Next();
+ }
+ aEntryList.Clear();
+}
+
+// -----------------------------------------------------------------------
+
+void ScScenarioListBox::CopyEntryList( List& rNewList )
+{
+ if ( aEntryList.Count() > 0 )
+ ClearEntryList();
+
+ String* pEntry = (String*)rNewList.First();
+
+ while ( pEntry )
+ {
+ aEntryList.Insert( new String( *pEntry ), LIST_APPEND );
+ pEntry = (String*)rNewList.Next();
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScScenarioListBox::Select()
+{
+ String* pEntry = (String*)aEntryList.GetObject( (GetSelectEntryPos()*2)+1 );
+
+ if ( pEntry )
+ rParent.SetComment( *pEntry );
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScScenarioListBox::DoubleClick()
+{
+ SfxStringItem aStringItem( SID_SELECT_SCENARIO, GetSelectEntry() );
+
+ SFX_DISPATCHER().Execute( SID_SELECT_SCENARIO, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aStringItem, 0L, 0L );
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScScenarioListBox::GetFocus()
+{
+ pAccel = new Accelerator;
+
+ pAccel->InsertItem( 1, KeyCode( KEY_RETURN ) );
+ pAccel->InsertItem( 2, KeyCode( KEY_ESCAPE ) );
+ pAccel->SetSelectHdl( LINK( this, ScScenarioListBox, AccelSelectHdl ) );
+
+ Application::InsertAccel( pAccel );
+ aCurText = GetText();
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScScenarioListBox::LoseFocus()
+{
+ Application::RemoveAccel( pAccel );
+ delete pAccel;
+ pAccel = NULL;
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( ScScenarioListBox, AccelSelectHdl, Accelerator *, pAccel )
+{
+ if ( !pAccel ) return 0;
+
+ switch ( pAccel->GetCurKeyCode().GetCode() )
+ {
+ case KEY_RETURN:
+ Select();
+ break;
+
+ case KEY_ESCAPE:
+ SelectEntry( aCurText );
+ Select();
+ break;
+
+ default:
+ break;
+ }
+ return 0;
+}
+
+long __EXPORT ScScenarioListBox::Notify( NotifyEvent& rNEvt )
+{
+ ListBox::Notify( rNEvt );
+ long nHandled = 0;
+
+ if ( rNEvt.GetType() == EVENT_COMMAND && GetSelectEntryCount() )
+ {
+ const CommandEvent* pCEvt = rNEvt.GetCommandEvent();
+ if ( pCEvt && pCEvt->GetCommand() == COMMAND_CONTEXTMENU )
+ {
+ ScPopupMenu aPopup( ScResId( RID_POPUP_NAVIPI_SCENARIO ) );
+ aPopup.Execute( this, pCEvt->GetMousePosPixel() );
+ if (aPopup.WasHit())
+ {
+ String aName = GetSelectEntry();
+ USHORT nId = aPopup.GetSelected();
+ if ( nId == RID_NAVIPI_SCENARIO_DELETE )
+ {
+ short nRes = QueryBox( NULL, WinBits( WB_YES_NO | WB_DEF_YES ),
+ ScGlobal::GetRscString(STR_QUERY_DELSCENARIO) ).Execute();
+ if ( nRes == RET_YES )
+ {
+ SfxStringItem aStringItem( SID_DELETE_SCENARIO, aName );
+ SFX_DISPATCHER().Execute( SID_DELETE_SCENARIO,
+ SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aStringItem, 0L, 0L );
+ }
+ }
+ else if ( nId == RID_NAVIPI_SCENARIO_EDIT )
+ {
+ SfxStringItem aStringItem( SID_EDIT_SCENARIO, aName );
+ SFX_DISPATCHER().Execute( SID_EDIT_SCENARIO,
+ SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aStringItem, 0L, 0L );
+ }
+ }
+ nHandled = 1;
+ }
+ }
+
+ return nHandled;
+}
+
+
+//========================================================================
+// class ScScenarioWindow ------------------------------------------------
+//========================================================================
+
+ScScenarioWindow::ScScenarioWindow( Window* pParent,const String& aQH_List,
+ const String& aQH_Comment)
+ : Window ( pParent ),
+ aLbScenario ( this ),
+ aEdComment ( this, WB_BORDER | WB_LEFT
+ | WB_READONLY | WB_VSCROLL )
+{
+ Font aFont( GetFont() );
+ aFont.SetTransparent( TRUE );
+ aFont.SetWeight( WEIGHT_LIGHT );
+ aEdComment.SetFont( aFont );
+ aEdComment.SetMaxTextLen( 512 );
+ aLbScenario.SetPosPixel( Point(0,0) );
+ aLbScenario.SetHelpId(HID_SC_SCENWIN_TOP);
+ aEdComment.SetHelpId(HID_SC_SCENWIN_BOTTOM);
+ aLbScenario.Show();
+ aEdComment.Show();
+
+ aLbScenario.SetQuickHelpText(aQH_List);
+ aEdComment.SetQuickHelpText(aQH_Comment);
+ aEdComment.SetBackground( Color( COL_LIGHTGRAY ) );
+
+ SFX_BINDINGS().Invalidate( SID_SELECT_SCENARIO );
+ SFX_BINDINGS().Update( SID_SELECT_SCENARIO );
+}
+
+// -----------------------------------------------------------------------
+
+__EXPORT ScScenarioWindow::~ScScenarioWindow()
+{
+}
+
+void ScScenarioWindow::Paint( const Rectangle& rRec )
+{
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ Color aBgColor = rStyleSettings.GetFaceColor();
+
+ SetBackground( aBgColor );
+
+ Window::Paint( rRec );
+}
+
+// -----------------------------------------------------------------------
+
+void ScScenarioWindow::NotifyState( const SfxPoolItem* pState )
+{
+ if( pState )
+ {
+ aLbScenario.Enable();
+
+ if ( pState->ISA(SfxStringItem) )
+ {
+ String aNewEntry( ((const SfxStringItem*)pState)->GetValue() );
+
+ if ( aNewEntry.Len() > 0 )
+ aLbScenario.SelectEntry( aNewEntry );
+ else
+ aLbScenario.SetNoSelection();
+ }
+ else if ( pState->ISA(SfxStringListItem) )
+ {
+ aLbScenario.UpdateEntries( ((SfxStringListItem*)pState)->GetList() );
+ }
+ }
+ else
+ {
+ aLbScenario.Disable();
+ aLbScenario.SetNoSelection();
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void ScScenarioWindow::SetSizePixel( const Size& rNewSize )
+{
+ Size aSize( rNewSize );
+ long nHeight = aSize.Height() / 2;
+
+ Window::SetSizePixel( aSize );
+
+ aSize.Height() = nHeight;
+ aLbScenario.SetSizePixel( aSize );
+
+ aSize.Height() -= 4;
+ aEdComment.SetPosSizePixel( Point( 0, nHeight+4 ), aSize );
+}
+
+
+
+
diff --git a/sc/source/ui/optdlg/makefile.mk b/sc/source/ui/optdlg/makefile.mk
new file mode 100644
index 000000000000..7cb1081b92e4
--- /dev/null
+++ b/sc/source/ui/optdlg/makefile.mk
@@ -0,0 +1,103 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=optdlg
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ optdlg.cxx \
+ tpusrlst.cxx \
+ tpview.cxx \
+ tpcalc.cxx \
+ optload.cxx \
+ opredlin.cxx
+
+SLOFILES = \
+ $(SLO)$/optdlg.obj \
+ $(SLO)$/tpusrlst.obj \
+ $(SLO)$/tpview.obj \
+ $(SLO)$/tpcalc.obj \
+ $(SLO)$/optload.obj \
+ $(SLO)$/opredlin.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/optdlg/opredlin.cxx b/sc/source/ui/optdlg/opredlin.cxx
new file mode 100644
index 000000000000..0201248c272c
--- /dev/null
+++ b/sc/source/ui/optdlg/opredlin.cxx
@@ -0,0 +1,323 @@
+/*************************************************************************
+ *
+ * $RCSfile: opredlin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <svx/dlgutil.hxx>
+#include <svx/drawitem.hxx>
+#include <svx/xtable.hxx>
+#include <offmgr/app.hxx>
+
+#include "appoptio.hxx"
+#include "scmod.hxx"
+#include "scitems.hxx"
+#include "tpview.hxx"
+#include "global.hxx"
+#include "viewopti.hxx"
+#include "tabvwsh.hxx"
+#include "uiitems.hxx"
+#include "scresid.hxx"
+#include "docsh.hxx"
+#include "sc.hrc" // -> Slot-IDs
+#include "optdlg.hrc"
+#include "globstr.hrc"
+
+#include "opredlin.hxx"
+#include "opredlin.hrc"
+
+//------------------------------------------------------------------
+
+ScRedlineOptionsTabPage::ScRedlineOptionsTabPage( Window* pParent,
+ const SfxItemSet& rSet )
+ : SfxTabPage(pParent, ScResId(RID_SCPAGE_OPREDLINE), rSet),
+ aContentFT ( this, ResId(FT_CONTENT )),
+ aContentColorLB ( this, ResId(CLB_CONTENT )),
+ aMoveFT ( this, ResId(FT_MOVE )),
+ aMoveColorLB ( this, ResId(CLB_MOVE )),
+ aInsertFT ( this, ResId(FT_INSERT )),
+ aInsertColorLB ( this, ResId(CLB_INSERT )),
+ aRemoveFT ( this, ResId(FT_REMOVE )),
+ aRemoveColorLB ( this, ResId(CLB_REMOVE )),
+ aChangedGB ( this, ResId(GB_COLORCHGS)),
+ aAuthorStr (ResId(STR_AUTHOR))
+{
+ FreeResource();
+
+ Link aLk = LINK(this, ScRedlineOptionsTabPage, ColorHdl);
+ aContentColorLB.SetSelectHdl( aLk );
+ aMoveColorLB.SetSelectHdl( aLk );
+ aInsertColorLB.SetSelectHdl( aLk );
+ aRemoveColorLB.SetSelectHdl( aLk );
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+__EXPORT ScRedlineOptionsTabPage::~ScRedlineOptionsTabPage()
+{
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+SfxTabPage* __EXPORT ScRedlineOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet )
+{
+ return new ScRedlineOptionsTabPage( pParent, rSet );
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+BOOL __EXPORT ScRedlineOptionsTabPage::FillItemSet( SfxItemSet& rSet )
+{
+ ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
+
+ ULONG nNew=0;
+ USHORT nPos=0;
+
+ nPos = aContentColorLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ nPos = aContentColorLB.GetSelectEntryPos();
+ if (nPos!=0)
+ nNew= aContentColorLB.GetEntryColor(nPos).GetColor();
+ else
+ nNew= COL_TRANSPARENT;
+
+ aAppOptions.SetTrackContentColor(nNew);
+
+ }
+ nPos = aMoveColorLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ nPos = aMoveColorLB.GetSelectEntryPos();
+ if (nPos!=0)
+ nNew= aMoveColorLB.GetEntryColor(nPos).GetColor();
+ else
+ nNew= COL_TRANSPARENT;
+
+ aAppOptions.SetTrackMoveColor(nNew);
+
+ }
+ nPos = aInsertColorLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ nPos = aInsertColorLB.GetSelectEntryPos();
+ if (nPos!=0)
+ nNew= aInsertColorLB.GetEntryColor(nPos).GetColor();
+ else
+ nNew= COL_TRANSPARENT;
+
+ aAppOptions.SetTrackInsertColor(nNew);
+
+ }
+ nPos = aRemoveColorLB.GetSelectEntryPos();
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ nPos = aRemoveColorLB.GetSelectEntryPos();
+ if (nPos!=0)
+ nNew= aRemoveColorLB.GetEntryColor(nPos).GetColor();
+ else
+ nNew= COL_TRANSPARENT;
+
+ aAppOptions.SetTrackDeleteColor(nNew);
+
+ }
+
+ SC_MOD()->SetAppOptions(aAppOptions);
+
+ // Repaint (wenn alles ueber Items laufen wuerde, wie es sich gehoert,
+ // waere das nicht noetig...)
+ ScDocShell* pDocSh = PTR_CAST(ScDocShell, SfxObjectShell::Current());
+ if (pDocSh)
+ pDocSh->PostPaintGridAll();
+
+ return FALSE;
+}
+
+/*-----------------------------------------------------------------------
+ Beschreibung:
+ -----------------------------------------------------------------------*/
+
+void __EXPORT ScRedlineOptionsTabPage::Reset( const SfxItemSet& rSet )
+{
+
+ XColorTable* pColorTbl = OFF_APP()->GetStdColorTable();
+ aContentColorLB.InsertEntry(aAuthorStr);
+ aMoveColorLB.InsertEntry(aAuthorStr);
+ aInsertColorLB.InsertEntry(aAuthorStr);
+ aRemoveColorLB.InsertEntry(aAuthorStr);
+
+ aContentColorLB.SetUpdateMode( FALSE);
+ aMoveColorLB.SetUpdateMode( FALSE);
+ aInsertColorLB.SetUpdateMode( FALSE);
+ aRemoveColorLB.SetUpdateMode( FALSE);
+
+ for( USHORT i = 0; i < pColorTbl->Count(); ++i )
+ {
+ XColorEntry* pEntry = pColorTbl->Get( i );
+ Color aColor = pEntry->GetColor();
+ String sName = pEntry->GetName();
+
+ aContentColorLB.InsertEntry( aColor, sName );
+ aMoveColorLB.InsertEntry( aColor, sName );
+ aInsertColorLB.InsertEntry( aColor, sName );
+ aRemoveColorLB.InsertEntry( aColor, sName );
+ }
+ aContentColorLB.SetUpdateMode( TRUE );
+ aMoveColorLB.SetUpdateMode( TRUE );
+ aInsertColorLB.SetUpdateMode( TRUE );
+ aRemoveColorLB.SetUpdateMode( TRUE );
+
+
+ ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
+
+ ULONG nColor = aAppOptions.GetTrackContentColor();
+ if (nColor == COL_TRANSPARENT)
+ aContentColorLB.SelectEntryPos(0);
+ else
+ aContentColorLB.SelectEntry(Color(nColor));
+
+ nColor = aAppOptions.GetTrackMoveColor();
+ if (nColor == COL_TRANSPARENT)
+ aMoveColorLB.SelectEntryPos(0);
+ else
+ aMoveColorLB.SelectEntry(Color(nColor));
+
+
+ nColor = aAppOptions.GetTrackInsertColor();
+ if (nColor == COL_TRANSPARENT)
+ aInsertColorLB.SelectEntryPos(0);
+ else
+ aInsertColorLB.SelectEntry(Color(nColor));
+
+
+ nColor = aAppOptions.GetTrackDeleteColor();
+ if (nColor == COL_TRANSPARENT)
+ aRemoveColorLB.SelectEntryPos(0);
+ else
+ aRemoveColorLB.SelectEntry(Color(nColor));
+
+}
+
+
+IMPL_LINK( ScRedlineOptionsTabPage, ColorHdl, ColorListBox *, pColorLB )
+{
+/*
+ SvxFontPrevWindow *pPrev;
+ ListBox *pLB;
+
+ if (pColorLB == &aInsertColorLB)
+ {
+ pPrev = &aInsertPreviewWN;
+ pLB = &aInsertLB;
+ }
+ else
+ {
+ pPrev = &aDeletedPreviewWN;
+ pLB = &aDeletedLB;
+ }
+
+ SvxFont& rFont = pPrev->GetFont();
+ USHORT nPos = pLB->GetSelectEntryPos();
+ if (nPos == LISTBOX_ENTRY_NOTFOUND)
+ nPos = 0;
+
+ CharAttr *pAttr = (CharAttr *)pLB->GetEntryData(nPos);
+
+ if (pAttr->nItemId == SID_ATTR_BRUSH)
+ {
+ rFont.SetColor(Color(COL_BLACK));
+ nPos = pColorLB->GetSelectEntryPos();
+ if (nPos && nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ Brush aBrush(Color(pColorLB->GetSelectEntryColor()));
+ pPrev->SetBrush(aBrush);
+ }
+ else
+ {
+ Brush aBrush(Color(COL_LIGHTGRAY));
+ pPrev->SetBrush(aBrush);
+ }
+ }
+ else
+ {
+ nPos = pColorLB->GetSelectEntryPos();
+ if (nPos && nPos != LISTBOX_ENTRY_NOTFOUND)
+ rFont.SetColor(pColorLB->GetEntryColor(nPos));
+ else
+ rFont.SetColor(Color(COL_RED));
+ }
+
+ pPrev->Invalidate();
+*/
+ return 0;
+}
+
diff --git a/sc/source/ui/optdlg/tpcalc.cxx b/sc/source/ui/optdlg/tpcalc.cxx
new file mode 100644
index 000000000000..e49303e8bcaa
--- /dev/null
+++ b/sc/source/ui/optdlg/tpcalc.cxx
@@ -0,0 +1,333 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpcalc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <math.h>
+
+#include "scitems.hxx"
+#include <vcl/msgbox.hxx>
+
+#ifndef _TOOLS_SOLMATH_HXX //autogen wg. SolarMath
+#include <tools/solmath.hxx>
+#endif
+#ifndef _TOOLS_INTN_HXX //autogen wg. International
+#include <tools/intn.hxx>
+#endif
+
+#include "global.hxx"
+#include "globstr.hrc"
+#include "uiitems.hxx"
+#include "docsh.hxx"
+#include "document.hxx"
+#include "docoptio.hxx"
+#include "scresid.hxx"
+#include "sc.hrc" // -> Slot-IDs
+#include "optdlg.hrc"
+
+#define _TPCALC_CXX
+#include "tpcalc.hxx"
+#undef _TPCALC_CXX
+
+// STATIC DATA -----------------------------------------------------------
+
+static USHORT pCalcOptRanges[] =
+{
+ SID_SCDOCOPTIONS,
+ SID_SCDOCOPTIONS,
+ 0
+};
+
+//========================================================================
+
+ScTpCalcOptions::ScTpCalcOptions( Window* pParent,
+ const SfxItemSet& rCoreAttrs )
+
+ : SfxTabPage ( pParent,
+ ScResId( RID_SCPAGE_CALC ),
+ rCoreAttrs ),
+
+ aBtnCase ( this, ScResId( BTN_CASE ) ),
+ aBtnCalc ( this, ScResId( BTN_CALC ) ),
+ aBtnMatch ( this, ScResId( BTN_MATCH ) ),
+ aBtnLookUp ( this, ScResId( BTN_LOOKUP ) ),
+ aBtnIterate ( this, ScResId( BTN_ITERATE ) ),
+ aFtSteps ( this, ScResId( FT_STEPS ) ),
+ aEdSteps ( this, ScResId( ED_STEPS ) ),
+ aFtEps ( this, ScResId( FT_EPS ) ),
+ aEdEps ( this, ScResId( ED_EPS ) ),
+ aGbZRefs ( this, ScResId( GB_ZREFS ) ),
+ aBtnDateStd ( this, ScResId( BTN_DATESTD ) ),
+ aBtnDateSc10 ( this, ScResId( BTN_DATESC10 ) ),
+ aBtnDate1904 ( this, ScResId( BTN_DATE1904 ) ),
+
+ aGbDate ( this, ScResId( GB_DATE ) ),
+ aFtPrec ( this, ScResId( FT_PREC ) ),
+ aEdPrec ( this, ScResId( ED_PREC ) ),
+
+ cDecSep ( ScGlobal::pScInternational->GetNumDecimalSep() ),
+ nWhichCalc ( GetWhich( SID_SCDOCOPTIONS ) ),
+ pOldOptions ( new ScDocOptions(
+ ((const ScTpCalcItem&)rCoreAttrs.Get(
+ GetWhich( SID_SCDOCOPTIONS ))).
+ GetDocOptions() ) ),
+ pLocalOptions ( new ScDocOptions )
+{
+ Init();
+ FreeResource();
+ SetExchangeSupport();
+}
+
+//-----------------------------------------------------------------------
+
+__EXPORT ScTpCalcOptions::~ScTpCalcOptions()
+{
+ delete pOldOptions;
+ delete pLocalOptions;
+}
+
+//-----------------------------------------------------------------------
+
+void ScTpCalcOptions::Init()
+{
+ aBtnIterate .SetClickHdl( LINK( this, ScTpCalcOptions, CheckClickHdl ) );
+ aBtnDateStd .SetClickHdl( LINK( this, ScTpCalcOptions, RadioClickHdl ) );
+ aBtnDateSc10.SetClickHdl( LINK( this, ScTpCalcOptions, RadioClickHdl ) );
+ aBtnDate1904.SetClickHdl( LINK( this, ScTpCalcOptions, RadioClickHdl ) );
+}
+
+//-----------------------------------------------------------------------
+
+USHORT* __EXPORT ScTpCalcOptions::GetRanges()
+{
+ return pCalcOptRanges;
+}
+
+//-----------------------------------------------------------------------
+
+SfxTabPage* __EXPORT ScTpCalcOptions::Create( Window* pParent, const SfxItemSet& rAttrSet )
+{
+ return ( new ScTpCalcOptions( pParent, rAttrSet ) );
+}
+
+//-----------------------------------------------------------------------
+
+void __EXPORT ScTpCalcOptions::Reset( const SfxItemSet& rCoreAttrs )
+{
+ USHORT d,m,y;
+ String aStrBuf;
+
+ *pLocalOptions = *pOldOptions;
+
+ SolarMath::DoubleToString( aStrBuf, pLocalOptions->GetIterEps(),
+ 'G', 6, cDecSep, TRUE );
+
+ aBtnCase .Check( !pLocalOptions->IsIgnoreCase() );
+ aBtnCalc .Check( pLocalOptions->IsCalcAsShown() );
+ aBtnMatch .Check( pLocalOptions->IsMatchWholeCell() );
+ aBtnLookUp .Check( pLocalOptions->IsLookUpColRowNames() );
+ aBtnIterate.Check( pLocalOptions->IsIter() );
+ aEdSteps .SetValue( pLocalOptions->GetIterCount() );
+ aEdPrec .SetValue( pLocalOptions->GetStdPrecision() );
+ aEdEps .SetText( aStrBuf );
+
+ pLocalOptions->GetDate( d, m, y );
+
+ switch ( y )
+ {
+ case 1899:
+ aBtnDateStd.Check();
+ break;
+ case 1900:
+ aBtnDateSc10.Check();
+ break;
+ case 1904:
+ aBtnDate1904.Check();
+ break;
+ }
+
+ CheckClickHdl( &aBtnIterate );
+}
+
+
+//-----------------------------------------------------------------------
+
+BOOL __EXPORT ScTpCalcOptions::FillItemSet( SfxItemSet& rCoreAttrs )
+{
+ // alle weiteren Optionen werden in den Handlern aktualisiert
+ pLocalOptions->SetIterCount( (USHORT)aEdSteps.GetValue() );
+ pLocalOptions->SetStdPrecision( aEdPrec.GetValue() );
+ pLocalOptions->SetIgnoreCase( !aBtnCase.IsChecked() );
+ pLocalOptions->SetCalcAsShown( aBtnCalc.IsChecked() );
+ pLocalOptions->SetMatchWholeCell( aBtnMatch.IsChecked() );
+ pLocalOptions->SetLookUpColRowNames( aBtnLookUp.IsChecked() );
+
+ if ( *pLocalOptions != *pOldOptions )
+ {
+ rCoreAttrs.Put( ScTpCalcItem( nWhichCalc, *pLocalOptions ) );
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScTpCalcOptions::DeactivatePage( SfxItemSet* pSet )
+{
+ int nReturn = CheckEps() ? LEAVE_PAGE : KEEP_PAGE;
+
+ if ( nReturn == KEEP_PAGE )
+ {
+ ErrorBox( this,
+ WinBits( WB_OK | WB_DEF_OK ),
+ ScGlobal::GetRscString( STR_INVALID_EPS )
+ ).Execute();
+
+ aEdEps.GrabFocus();
+ }
+ else if ( pSet )
+ FillItemSet( *pSet );
+
+ return nReturn;
+}
+
+//-----------------------------------------------------------------------
+
+BOOL ScTpCalcOptions::GetEps( double& rEps )
+{
+ String aStr( aEdEps.GetText() );
+ aStr.EraseTrailingChars( ' ' );
+ int nErrno;
+ const sal_Unicode* pEnd;
+ rEps = SolarMath::StringToDouble( aStr.GetBuffer(),
+ *ScGlobal::pScInternational, nErrno, &pEnd );
+ BOOL bOk = ( nErrno == 0 && *pEnd == '\0' && rEps > 0.0 );
+
+ if ( bOk )
+ pLocalOptions->SetIterEps( rEps );
+
+ return bOk;
+}
+
+//-----------------------------------------------------------------------
+
+BOOL ScTpCalcOptions::CheckEps()
+{
+ if ( aEdEps.GetText().Len() == 0 )
+ return FALSE;
+ else
+ {
+ double d;
+ return GetEps(d);
+ }
+}
+
+//-----------------------------------------------------------------------
+// Handler:
+
+IMPL_LINK( ScTpCalcOptions, RadioClickHdl, RadioButton*, pBtn )
+{
+ if ( pBtn == &aBtnDateStd )
+ {
+ pLocalOptions->SetDate( 30, 12, 1899 );
+ }
+ else if ( pBtn == &aBtnDateSc10 )
+ {
+ pLocalOptions->SetDate( 1, 1, 1900 );
+ }
+ else if ( pBtn == &aBtnDate1904 )
+ {
+ pLocalOptions->SetDate( 1, 1, 1904 );
+ }
+
+ return NULL;
+}
+
+//-----------------------------------------------------------------------
+
+IMPL_LINK( ScTpCalcOptions, CheckClickHdl, CheckBox*, pBtn )
+{
+ if ( pBtn->IsChecked() )
+ {
+ pLocalOptions->SetIter( TRUE );
+ aFtSteps.Enable(); aEdSteps.Enable();
+ aFtEps .Enable(); aEdEps .Enable();
+ }
+ else
+ {
+ pLocalOptions->SetIter( FALSE );
+ aFtSteps.Disable(); aEdSteps.Disable();
+ aFtEps .Disable(); aEdEps .Disable();
+ }
+
+ return NULL;
+}
+
+
+
+
diff --git a/sc/source/ui/optdlg/tpprint.cxx b/sc/source/ui/optdlg/tpprint.cxx
new file mode 100644
index 000000000000..b60544b6d5d4
--- /dev/null
+++ b/sc/source/ui/optdlg/tpprint.cxx
@@ -0,0 +1,216 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpprint.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include "scitems.hxx"
+#include <sv.hxx>
+#include <svtool.hxx>
+#include <tools.hxx>
+#include <sfx.hxx>
+#include <segmentc.hxx>
+#endif
+
+#include "printopt.hxx"
+#include "uiitems.hxx"
+#include "scresid.hxx"
+
+#include "sc.hrc" // -> Slot-IDs
+#include "optdlg.hrc"
+
+#define _TPPRINT_CXX
+#include "tpprint.hxx"
+#undef _TPPRINT_CXX
+
+
+// STATIC DATA -----------------------------------------------------------
+
+static USHORT pPrintOptRanges[] =
+{
+ SID_SCPRINTOPTIONS,
+ SID_SCPRINTOPTIONS,
+ 0
+};
+
+SEG_EOFGLOBALS()
+
+//========================================================================
+#pragma SEG_FUNCDEF(tpprint_01)
+
+ScTpPrintOptions::ScTpPrintOptions( Window* pParent,
+ const SfxItemSet& rCoreAttrs )
+ : SfxTabPage ( pParent,
+ ScResId( RID_SCPAGE_PRINT ),
+ rCoreAttrs ),
+ aBtnPrinterNotFound ( this, ScResId( BTN_WARNPRINTERNOTFOUND ) ),
+ aBtnPageSize ( this, ScResId( BTN_WARNPAPERSIZE ) ),
+ aBtnOrientation ( this, ScResId( BTN_WARNPAPERBIN ) ),
+ aGbWarnings ( this, ScResId( GB_WARNINGS ) ),
+ nWhichPrint ( GetWhich( SID_SCPRINTOPTIONS ) )
+{
+ FreeResource();
+}
+
+//-----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpprint_02)
+
+__EXPORT ScTpPrintOptions::~ScTpPrintOptions()
+{
+}
+
+//-----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpprint_03)
+
+USHORT* __EXPORT ScTpPrintOptions::GetRanges()
+{
+ return pPrintOptRanges;
+}
+
+//-----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpprint_04)
+
+SfxTabPage* __EXPORT ScTpPrintOptions::Create( Window* pParent, const SfxItemSet& rAttrSet )
+{
+ return ( new ScTpPrintOptions( pParent, rAttrSet ) );
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpprint_06)
+
+int __EXPORT ScTpPrintOptions::DeactivatePage( SfxItemSet* pSet )
+{
+ if ( pSet )
+ FillItemSet( *pSet );
+
+ return LEAVE_PAGE;
+}
+
+//-----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpprint_07)
+
+void __EXPORT ScTpPrintOptions::Reset( const SfxItemSet& rCoreAttrs )
+{
+ const ScPrintOptions& rOpt = ((const ScTpPrintItem&)rCoreAttrs.Get(nWhichPrint)).
+ GetPrintOptions();
+
+ aBtnPrinterNotFound .Check( rOpt.GetWarnPrinterNotFound() );
+ aBtnPageSize .Check( rOpt.GetWarnPageSize() );
+ aBtnOrientation .Check( rOpt.GetWarnOrientation() );
+ aBtnPrinterNotFound .SaveValue();
+ aBtnPageSize .SaveValue();
+ aBtnOrientation .SaveValue();
+}
+
+//-----------------------------------------------------------------------
+#pragma SEG_FUNCDEF(tpprint_08)
+
+BOOL __EXPORT ScTpPrintOptions::FillItemSet( SfxItemSet& rCoreAttrs )
+{
+ if ( aBtnPrinterNotFound.GetSavedValue() != aBtnPrinterNotFound.IsChecked()
+ || aBtnPageSize .GetSavedValue() != aBtnPageSize.IsChecked()
+ || aBtnOrientation .GetSavedValue() != aBtnOrientation.IsChecked() )
+ {
+ ScPrintOptions aOpt;
+
+ aOpt.SetWarnPrinterNotFound ( aBtnPrinterNotFound.IsChecked() );
+ aOpt.SetWarnPageSize ( aBtnPageSize.IsChecked() );
+ aOpt.SetWarnOrientation ( aBtnOrientation.IsChecked() );
+
+ rCoreAttrs.Put( ScTpPrintItem( nWhichPrint, aOpt ) );
+
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.5 2000/09/17 14:09:16 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.4 2000/08/31 16:38:38 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.3 1996/10/29 13:07:20 NN
+ ueberall ScResId statt ResId
+
+
+ Rev 1.2 29 Oct 1996 14:07:20 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.1 28 Nov 1995 19:03:02 MO
+ 303a: HasExchangeSupport entfernt
+
+ Rev 1.0 18 Sep 1995 17:10:18 MO
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/optdlg/tpusrlst.cxx b/sc/source/ui/optdlg/tpusrlst.cxx
new file mode 100644
index 000000000000..61b25c3a3034
--- /dev/null
+++ b/sc/source/ui/optdlg/tpusrlst.cxx
@@ -0,0 +1,853 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpusrlst.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include <vcl/msgbox.hxx>
+
+#include "global.hxx"
+#include "document.hxx"
+#include "tabvwsh.hxx"
+#include "viewdata.hxx"
+#include "uiitems.hxx"
+#include "userlist.hxx"
+#include "rangeutl.hxx"
+#include "crdlg.hxx"
+#include "scresid.hxx"
+#include "sc.hrc" // -> Slot-IDs
+#include "optdlg.hrc"
+#include "globstr.hrc"
+
+#define _TPUSRLST_CXX
+#include "tpusrlst.hxx"
+#undef _TPUSRLST_CXX
+
+// STATIC DATA -----------------------------------------------------------
+
+#define CR (sal_Unicode)13
+#define LF (sal_Unicode)10
+
+static USHORT pUserListsRanges[] =
+{
+ SID_SCUSERLISTS,
+ SID_SCUSERLISTS,
+ 0
+};
+
+static const sal_Unicode cDelimiter = ',';
+
+
+//========================================================================
+// Benutzerdefinierte Listen:
+
+
+ScTpUserLists::ScTpUserLists( Window* pParent,
+ const SfxItemSet& rCoreAttrs )
+
+ : SfxTabPage ( pParent,
+ ScResId( RID_SCPAGE_USERLISTS ),
+ rCoreAttrs ),
+ aLbLists ( this, ScResId( LB_LISTS ) ),
+ aEdEntries ( this, ScResId( ED_ENTRIES ) ),
+ aEdCopyFrom ( this, ScResId( ED_COPYFROM ) ),
+ aFtLists ( this, ScResId( FT_LISTS ) ),
+ aFtEntries ( this, ScResId( FT_ENTRIES ) ),
+ aFtCopyFrom ( this, ScResId( FT_COPYFROM ) ),
+ aBtnNew ( this, ScResId( BTN_NEW ) ),
+ aBtnAdd ( this, ScResId( BTN_ADD ) ),
+ aBtnRemove ( this, ScResId( BTN_REMOVE ) ),
+ aBtnCopy ( this, ScResId( BTN_COPY ) ),
+ aStrQueryRemove ( ScResId( STR_QUERYREMOVE ) ),
+ aStrNew ( aBtnNew.GetText() ),
+ aStrCancel ( ScResId( STR_DISMISS ) ),
+ aStrAdd ( ScResId( SCSTR_ADD ) ),
+ aStrModify ( ScResId( SCSTR_MODIFY ) ),
+ aStrCopyList ( ScResId( STR_COPYLIST ) ),
+ aStrCopyFrom ( ScResId( STR_COPYFROM ) ),
+ aStrCopyErr ( ScResId( STR_COPYERR ) ),
+ //
+ pRangeUtil ( new ScRangeUtil ),
+ nWhichUserLists ( GetWhich( SID_SCUSERLISTS ) ),
+ pUserLists ( NULL ),
+ pDoc ( NULL ),
+ pViewData ( NULL ),
+ bModifyMode ( FALSE ),
+ bCancelMode ( FALSE ),
+ bCopyDone ( FALSE ),
+ nCancelPos ( 0 )
+{
+ SetExchangeSupport();
+ Init();
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+
+__EXPORT ScTpUserLists::~ScTpUserLists()
+{
+ delete pUserLists;
+ delete pRangeUtil;
+}
+
+// -----------------------------------------------------------------------
+
+void ScTpUserLists::Init()
+{
+ SfxViewShell* pSh = SfxViewShell::Current();
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell, pSh);
+
+ aLbLists.SetSelectHdl ( LINK( this, ScTpUserLists, LbSelectHdl ) );
+ aBtnNew.SetClickHdl ( LINK( this, ScTpUserLists, BtnClickHdl ) );
+ aBtnNew.SetClickHdl ( LINK( this, ScTpUserLists, BtnClickHdl ) );
+ aBtnAdd.SetClickHdl ( LINK( this, ScTpUserLists, BtnClickHdl ) );
+ aBtnRemove.SetClickHdl ( LINK( this, ScTpUserLists, BtnClickHdl ) );
+ aEdEntries.SetModifyHdl ( LINK( this, ScTpUserLists, EdEntriesModHdl ) );
+
+
+ if ( pViewSh )
+ {
+ USHORT nStartTab = 0;
+ USHORT nEndTab = 0;
+ USHORT nStartCol = 0;
+ USHORT nStartRow = 0;
+ USHORT nEndCol = 0;
+ USHORT nEndRow = 0;
+
+ pViewData = pViewSh->GetViewData();
+ pDoc = pViewData->GetDocument();
+
+ pViewData->GetSimpleArea( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab );
+
+ PutInOrder( nStartCol, nEndCol );
+ PutInOrder( nStartRow, nEndRow );
+ PutInOrder( nStartTab, nEndTab );
+
+ pRangeUtil->MakeAreaString( ScArea( nStartTab,
+ nStartCol, nStartRow,
+ nEndCol, nEndRow ),
+ aStrSelectedArea,
+ pDoc );
+
+ aBtnCopy.SetClickHdl ( LINK( this, ScTpUserLists, BtnClickHdl ) );
+ aBtnCopy.Enable();
+ }
+ else
+ {
+ aBtnCopy.Disable();
+ aFtCopyFrom.Disable();
+ aEdCopyFrom.Disable();
+ }
+
+// aLbLists.GrabFocus();
+}
+
+// -----------------------------------------------------------------------
+
+USHORT* __EXPORT ScTpUserLists::GetRanges()
+{
+ return pUserListsRanges;
+}
+
+// -----------------------------------------------------------------------
+
+SfxTabPage* __EXPORT ScTpUserLists::Create( Window* pParent, const SfxItemSet& rAttrSet )
+{
+ return ( new ScTpUserLists( pParent, rAttrSet ) );
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScTpUserLists::Reset( const SfxItemSet& rCoreAttrs )
+{
+ const ScUserListItem& rUserListItem = (const ScUserListItem&)
+ rCoreAttrs.Get( nWhichUserLists );
+ const ScUserList* pCoreList = rUserListItem.GetUserList();
+
+ DBG_ASSERT( pCoreList, "UserList not found :-/" );
+
+ if ( pCoreList )
+ {
+ if ( !pUserLists )
+ pUserLists = new ScUserList( *pCoreList );
+ else
+ *pUserLists = *pCoreList;
+
+ if ( UpdateUserListBox() > 0 )
+ {
+ aLbLists.SelectEntryPos( 0 );
+ UpdateEntries( 0 );
+ }
+ }
+ else if ( !pUserLists )
+ pUserLists = new ScUserList;
+
+ aEdCopyFrom.SetText( aStrSelectedArea );
+
+ if ( aLbLists.GetEntryCount() == 0 )
+ {
+ aFtLists .Disable();
+ aLbLists .Disable();
+ aFtEntries .Disable();
+ aEdEntries .Disable();
+ aBtnRemove .Disable();
+ }
+
+ aBtnNew.SetText( aStrNew );
+ aBtnAdd.SetText( aStrAdd );
+ aBtnAdd.Disable();
+
+ if ( !bCopyDone && pViewData )
+ {
+ aFtCopyFrom .Enable();
+ aEdCopyFrom .Enable();
+ aBtnCopy .Enable();
+ }
+
+// aLbLists.GrabFocus();
+}
+
+// -----------------------------------------------------------------------
+
+BOOL __EXPORT ScTpUserLists::FillItemSet( SfxItemSet& rCoreAttrs )
+{
+ // Modifikationen noch nicht uebernommen?
+ // -> Click auf Add-Button simulieren
+
+ if ( bModifyMode || bCancelMode )
+ BtnClickHdl( &aBtnAdd );
+
+ const ScUserListItem& rUserListItem = (const ScUserListItem&)
+ GetItemSet().Get( nWhichUserLists );
+
+ ScUserList* pCoreList = rUserListItem.GetUserList();
+ BOOL bDataModified = FALSE;
+
+ if ( (pUserLists == NULL) && (pCoreList == NULL) )
+ {
+ bDataModified = FALSE;
+ }
+ else if ( pUserLists != NULL )
+ {
+ if ( pCoreList != NULL )
+ bDataModified = (*pUserLists != *pCoreList);
+ else
+ bDataModified = TRUE;
+ }
+
+ if ( bDataModified )
+ {
+ ScUserListItem aULItem( nWhichUserLists );
+
+ if ( pUserLists )
+ aULItem.SetUserList( *pUserLists );
+
+ rCoreAttrs.Put( aULItem );
+ }
+
+ return bDataModified;
+}
+
+// -----------------------------------------------------------------------
+
+int __EXPORT ScTpUserLists::DeactivatePage( SfxItemSet* pSet )
+{
+ if ( pSet )
+ FillItemSet( *pSet );
+
+ return LEAVE_PAGE;
+}
+
+// -----------------------------------------------------------------------
+
+USHORT ScTpUserLists::UpdateUserListBox()
+{
+ aLbLists.Clear();
+
+ if ( !pUserLists ) return 0;
+
+ //----------------------------------------------------------
+
+ USHORT nCount = pUserLists->GetCount();
+ String aEntry;
+
+ if ( nCount > 0 )
+ {
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ aEntry = (*pUserLists)[i]->GetString();
+ DBG_ASSERT( aEntry.Len() > 0, "Empty UserList-entry :-/" );
+ aLbLists.InsertEntry( aEntry );
+ }
+ }
+
+ return nCount;
+}
+
+// -----------------------------------------------------------------------
+
+void ScTpUserLists::UpdateEntries( USHORT nList )
+{
+ if ( !pUserLists ) return;
+
+ //----------------------------------------------------------
+
+ if ( nList < pUserLists->GetCount() )
+ {
+ ScUserListData* pList = (*pUserLists)[nList];
+ USHORT nSubCount = pList->GetSubCount();
+ String aEntryListStr;
+
+ for ( USHORT i=0; i<nSubCount; i++ )
+ {
+ if ( i!=0 )
+ aEntryListStr += CR;
+ aEntryListStr += pList->GetSubStr( i );
+ }
+
+ aEntryListStr.ConvertLineEnd();
+ aEdEntries.SetText( aEntryListStr );
+ }
+ else
+ DBG_ERROR( "Invalid ListIndex :-/" );
+}
+
+// -----------------------------------------------------------------------
+
+void ScTpUserLists::MakeListStr( String& rListStr )
+{
+ String aInputStr(rListStr);
+ String aStr;
+
+ xub_StrLen nLen = aStr.Len();
+ xub_StrLen nFound = 0;
+ xub_StrLen c = 0;
+
+ aInputStr.ConvertLineEnd( LINEEND_LF );
+ //aStr.EraseAllChars( ' ' );
+
+ xub_StrLen nToken=rListStr.GetTokenCount(LF);
+
+ for(xub_StrLen i=0;i<nToken;i++)
+ {
+ String aString=rListStr.GetToken(i,LF);
+ aString.EraseLeadingChars(' ');
+ aString.EraseTrailingChars(' ');
+ aStr+=aString;
+ aStr+=cDelimiter;
+ }
+
+ /*
+ // '\n' durch cDelimiter ersetzen:
+ for ( c=0;
+ (c < nLen) && (nFound != STRING_NOTFOUND);
+ c++ )
+ {
+ nFound = aStr.Search( LF, nFound );
+ if ( nFound != STRING_NOTFOUND )
+ aStr[nFound] = cDelimiter;
+ }
+ */
+
+ aStr.EraseLeadingChars( cDelimiter );
+ aStr.EraseTrailingChars( cDelimiter );
+ nLen = aStr.Len();
+
+ rListStr.Erase();
+
+ // Alle Doppelten cDelimiter entfernen:
+ c=0;
+ while ( c < nLen )
+ {
+ rListStr += aStr.GetChar(c);
+ c++;
+
+ if ( aStr.GetChar(c) == cDelimiter )
+ {
+ rListStr += aStr.GetChar(c);
+
+ while ( (aStr.GetChar(c) == cDelimiter) && (c < nLen) )
+ c++;
+ }
+ }
+
+}
+
+// -----------------------------------------------------------------------
+
+void ScTpUserLists::AddNewList( const String& rEntriesStr )
+{
+ String theEntriesStr( rEntriesStr );
+
+ if ( !pUserLists )
+ pUserLists = new ScUserList;
+
+ MakeListStr( theEntriesStr );
+
+ if ( !pUserLists->Insert( new ScUserListData( theEntriesStr ) ) )
+ DBG_ERROR( "Entry could not be inserted :-/" );
+}
+
+// -----------------------------------------------------------------------
+
+void ScTpUserLists::CopyListFromArea( const ScRefTripel& rStartPos,
+ const ScRefTripel& rEndPos )
+{
+ if ( bCopyDone ) return;
+
+ //----------------------------------------------------------
+
+ USHORT nTab = rStartPos.GetTab();
+ USHORT nStartCol = rStartPos.GetCol();
+ USHORT nStartRow = rStartPos.GetRow();
+ USHORT nEndCol = rEndPos.GetCol();
+ USHORT nEndRow = rEndPos.GetRow();
+ USHORT nCellDir = SCRET_COLS;
+ BOOL bValueIgnored = FALSE;
+
+ if ( (nStartCol != nEndCol) && (nStartRow != nEndRow) )
+ nCellDir = ScColOrRowDlg( this, aStrCopyList, aStrCopyFrom ).Execute();
+ else if ( nStartCol != nEndCol )
+ nCellDir = SCRET_ROWS;
+ else
+ nCellDir = SCRET_COLS;
+
+ if ( nCellDir != RET_CANCEL )
+ {
+ String aStrList;
+ String aStrField;
+
+ if ( nCellDir == SCRET_COLS )
+ {
+ for ( USHORT col=nStartCol; col<=nEndCol; col++ )
+ {
+ for ( USHORT row=nStartRow; row<=nEndRow; row++ )
+ {
+ if ( pDoc->HasStringData( col, row, nTab ) )
+ {
+ pDoc->GetString( col, row, nTab, aStrField );
+
+ if ( aStrField.Len() > 0 )
+ {
+ aStrList += aStrField;
+ aStrList += '\n';
+ }
+ }
+ else
+ bValueIgnored = TRUE;
+ }
+ if ( aStrList.Len() > 0 )
+ AddNewList( aStrList );
+ aStrList.Erase();
+ }
+ }
+ else
+ {
+ for ( USHORT row=nStartRow; row<=nEndRow; row++ )
+ {
+ for ( USHORT col=nStartCol; col<=nEndCol; col++ )
+ {
+ if ( pDoc->HasStringData( col, row, nTab ) )
+ {
+ pDoc->GetString( col, row, nTab, aStrField );
+
+ if ( aStrField.Len() > 0 )
+ {
+ aStrList += aStrField;
+ aStrList += '\n';
+ }
+ }
+ else
+ bValueIgnored = TRUE;
+ }
+ if ( aStrList.Len() > 0 )
+ AddNewList( aStrList );
+ aStrList.Erase();
+ }
+ }
+
+ if ( bValueIgnored )
+ {
+ InfoBox( this, aStrCopyErr ).Execute();
+ }
+ }
+
+ //----------------------------------------------------------
+
+ bCopyDone = TRUE;
+}
+
+// -----------------------------------------------------------------------
+
+void ScTpUserLists::ModifyList( USHORT nSelList,
+ const String& rEntriesStr )
+{
+ if ( !pUserLists ) return;
+
+ //----------------------------------------------------------
+
+ String theEntriesStr( rEntriesStr );
+
+ MakeListStr( theEntriesStr );
+
+ (*pUserLists)[nSelList]->SetString( theEntriesStr );
+}
+
+// -----------------------------------------------------------------------
+
+void ScTpUserLists::RemoveList( USHORT nList )
+{
+ if ( pUserLists ) pUserLists->AtFree( nList );
+}
+
+//-----------------------------------------------------------------------
+// Handler:
+//---------
+
+IMPL_LINK( ScTpUserLists, LbSelectHdl, ListBox*, pLb )
+{
+ if ( pLb == &aLbLists )
+ {
+ USHORT nSelPos = aLbLists.GetSelectEntryPos();
+ if ( nSelPos != LISTBOX_ENTRY_NOTFOUND )
+ {
+ if ( !aFtEntries.IsEnabled() ) aFtEntries.Enable();
+ if ( !aEdEntries.IsEnabled() ) aEdEntries.Enable();
+ if ( !aBtnRemove.IsEnabled() ) aBtnRemove.Enable();
+ if ( aBtnAdd.IsEnabled() ) aBtnAdd.Disable();
+
+ UpdateEntries( nSelPos );
+ }
+ }
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( ScTpUserLists, BtnClickHdl, PushButton*, pBtn )
+{
+ if ( pBtn == &aBtnNew )
+ {
+ if ( !bCancelMode )
+ {
+ nCancelPos = ( aLbLists.GetEntryCount() > 0 )
+ ? aLbLists.GetSelectEntryPos()
+ : 0;
+ aLbLists.SetNoSelection();
+ aFtLists.Disable();
+ aLbLists.Disable();
+ aFtEntries.Enable();
+ aEdEntries.Enable();
+ aEdEntries.SetText( EMPTY_STRING );
+ aEdEntries.GrabFocus();
+ aBtnAdd.Disable();
+ aBtnRemove.Disable();
+ //-----------------------------
+ if ( aBtnCopy.IsEnabled() )
+ {
+ aBtnCopy.Disable();
+ aFtCopyFrom.Disable();
+ aEdCopyFrom.Disable();
+ }
+ aBtnNew.SetText( aStrCancel );
+ bCancelMode = TRUE;
+ }
+ else // if ( bCancelMode )
+ {
+ if ( aLbLists.GetEntryCount() > 0 )
+ {
+ aLbLists.SelectEntryPos( nCancelPos );
+ LbSelectHdl( &aLbLists );
+ aFtLists.Enable();
+ aLbLists.Enable();
+ }
+ else
+ {
+ aFtEntries.Disable();
+ aEdEntries.Disable();
+ aEdEntries.SetText( EMPTY_STRING );
+ aBtnRemove.Disable();
+ }
+ aBtnAdd.Disable();
+ //-----------------------------
+ if ( pViewData && !bCopyDone )
+ {
+ aBtnCopy.Enable();
+ aFtCopyFrom.Enable();
+ aEdCopyFrom.Enable();
+ }
+ aBtnNew.SetText( aStrNew );
+ bCancelMode = FALSE;
+ bModifyMode = FALSE;
+ }
+ }
+ else if ( pBtn == &aBtnAdd )
+ {
+ String theEntriesStr( aEdEntries.GetText() );
+
+ if ( !bModifyMode )
+ {
+ if ( theEntriesStr.Len() > 0 )
+ {
+ AddNewList( theEntriesStr );
+ UpdateUserListBox();
+ aLbLists.SelectEntryPos( aLbLists.GetEntryCount()-1 );
+ LbSelectHdl( &aLbLists );
+ aFtLists.Enable();
+ aLbLists.Enable();
+ }
+ else
+ {
+ if ( aLbLists.GetEntryCount() > 0 )
+ {
+ aLbLists.SelectEntryPos( nCancelPos );
+ LbSelectHdl( &aLbLists );
+ aLbLists.Enable();
+ aLbLists.Enable();
+ }
+ }
+
+ aBtnAdd.Disable();
+ aBtnRemove.Enable();
+ aBtnNew.SetText( aStrNew );
+ bCancelMode = FALSE;
+ }
+ else // if ( bModifyMode )
+ {
+ USHORT nSelList = aLbLists.GetSelectEntryPos();
+
+ DBG_ASSERT( nSelList != LISTBOX_ENTRY_NOTFOUND, "Modify without List :-/" );
+
+ if ( theEntriesStr.Len() > 0 )
+ {
+ ModifyList( nSelList, theEntriesStr );
+ UpdateUserListBox();
+ aLbLists.SelectEntryPos( nSelList );
+ }
+ else
+ {
+ aLbLists.SelectEntryPos( 0 );
+ LbSelectHdl( &aLbLists );
+ }
+
+ aBtnNew.SetText( aStrNew ); bCancelMode = FALSE;
+ aBtnAdd.SetText( aStrAdd ); bModifyMode = FALSE;
+ aBtnAdd.Disable();
+ aBtnRemove.Enable();
+ aFtLists.Enable();
+ aLbLists.Enable();
+ }
+
+ if ( pViewData && !bCopyDone )
+ {
+ aBtnCopy.Enable();
+ aFtCopyFrom.Enable();
+ aEdCopyFrom.Enable();
+ }
+ }
+ else if ( pBtn == &aBtnRemove )
+ {
+ if ( aLbLists.GetEntryCount() > 0 )
+ {
+ USHORT nRemovePos = aLbLists.GetSelectEntryPos();
+ String aMsg ( aStrQueryRemove.GetToken( 0, '#' ) );
+
+ aMsg += aLbLists.GetEntry( nRemovePos );
+ aMsg += aStrQueryRemove.GetToken( 1, '#' );
+
+
+ if ( RET_YES == QueryBox( this,
+ WinBits( WB_YES_NO | WB_DEF_YES ),
+ aMsg
+ ).Execute() )
+ {
+ RemoveList( nRemovePos );
+ UpdateUserListBox();
+
+ if ( aLbLists.GetEntryCount() > 0 )
+ {
+ aLbLists.SelectEntryPos(
+ ( nRemovePos >= aLbLists.GetEntryCount() )
+ ? aLbLists.GetEntryCount()-1
+ : nRemovePos );
+ LbSelectHdl( &aLbLists );
+ }
+ else
+ {
+ aFtLists.Disable();
+ aLbLists.Disable();
+ aFtEntries.Disable();
+ aEdEntries.Disable();
+ aEdEntries.SetText( EMPTY_STRING );
+ aBtnRemove.Disable();
+ }
+ }
+
+ if ( pViewData && !bCopyDone && !aBtnCopy.IsEnabled() )
+ {
+ aBtnCopy.Enable();
+ aFtCopyFrom.Enable();
+ aEdCopyFrom.Enable();
+ }
+ }
+ }
+ else if ( pViewData && (pBtn == &aBtnCopy) )
+ {
+ if ( bCopyDone ) return NULL;
+
+ //-----------------------------------------------------------
+
+ ScRefTripel theStartPos;
+ ScRefTripel theEndPos;
+ String theAreaStr( aEdCopyFrom.GetText() );
+ BOOL bAreaOk = FALSE;
+
+ if ( theAreaStr.Len() > 0 )
+ {
+ bAreaOk = pRangeUtil->IsAbsArea( theAreaStr,
+ pDoc,
+ pViewData->GetTabNo(),
+ &theAreaStr,
+ &theStartPos,
+ &theEndPos );
+ if ( !bAreaOk )
+ {
+ bAreaOk = pRangeUtil->IsAbsPos( theAreaStr,
+ pDoc,
+ pViewData->GetTabNo(),
+ &theAreaStr,
+ &theStartPos );
+ theEndPos = theStartPos;
+ }
+ }
+
+ if ( bAreaOk )
+ {
+ CopyListFromArea( theStartPos, theEndPos );
+ UpdateUserListBox();
+ aLbLists.SelectEntryPos( aLbLists.GetEntryCount()-1 );
+ LbSelectHdl( &aLbLists );
+ aEdCopyFrom .SetText( theAreaStr );
+ aEdCopyFrom .Disable();
+ aBtnCopy .Disable();
+ aFtCopyFrom .Disable();
+ }
+ else
+ {
+ ErrorBox( this, WinBits( WB_OK | WB_DEF_OK ),
+ ScGlobal::GetRscString( STR_INVALID_TABREF )
+ ).Execute();
+ aEdCopyFrom.GrabFocus();
+ aEdCopyFrom.SetSelection( Selection( 0, SELECTION_MAX ) );
+ }
+ }
+
+ return NULL;
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( ScTpUserLists, EdEntriesModHdl, MultiLineEdit*, pEd )
+{
+ if ( pEd != &aEdEntries ) return NULL;
+
+ //-----------------------------------------------------------
+
+ if ( aBtnCopy.IsEnabled() )
+ {
+ aBtnCopy .Disable();
+ aFtCopyFrom .Disable();
+ aEdCopyFrom .Disable();
+ }
+
+ if ( aEdEntries.GetText().Len() > 0 )
+ {
+ if ( !bCancelMode && !bModifyMode )
+ {
+ aBtnNew.SetText( aStrCancel ); bCancelMode = TRUE;
+ aBtnAdd.SetText( aStrModify ); bModifyMode = TRUE;
+ aBtnAdd.Enable();
+ aBtnRemove.Disable();
+ aFtLists.Disable();
+ aLbLists.Disable();
+ }
+ else // if ( bCancelMode || bModifyMode )
+ {
+ if ( !aBtnAdd.IsEnabled() ) aBtnAdd.Enable();
+ }
+ }
+ else
+ {
+ if ( aBtnAdd.IsEnabled() ) aBtnAdd.Disable();
+ }
+
+ return NULL;
+}
+
+
+
diff --git a/sc/source/ui/optdlg/tpview.cxx b/sc/source/ui/optdlg/tpview.cxx
new file mode 100644
index 000000000000..78c306ec01cd
--- /dev/null
+++ b/sc/source/ui/optdlg/tpview.cxx
@@ -0,0 +1,714 @@
+/*************************************************************************
+ *
+ * $RCSfile: tpview.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include "tpview.hxx"
+#include "global.hxx"
+#include "viewopti.hxx"
+#include "tabvwsh.hxx"
+#include "uiitems.hxx"
+#include "scresid.hxx"
+#include "docsh.hxx"
+#include "sc.hrc" // -> Slot-IDs
+#include "optdlg.hrc"
+#include "globstr.hrc"
+
+#include <svx/dlgutil.hxx>
+#include <svx/drawitem.hxx>
+#include <svx/xtable.hxx>
+#include <offmgr/app.hxx>
+
+
+// STATIC DATA -----------------------------------------------------------
+
+
+
+/*-----------------11.01.97 10.52-------------------
+ Optionen Inhalte
+--------------------------------------------------*/
+
+ScTpContentOptions::ScTpContentOptions( Window* pParent,
+ const SfxItemSet& rArgSet ) :
+ SfxTabPage(pParent, ScResId( RID_SCPAGE_CONTENT ), rArgSet),
+ aDisplayGB( this, ResId(GB_DISPLAY)),
+ aFormulaCB( this, ResId(CB_FORMULA)),
+ aNilCB( this, ResId(CB_NIL )),
+ aAnnotCB( this, ResId(CB_ANNOT )),
+ aValueCB( this, ResId(CB_VALUE )),
+ aAnchorCB( this, ResId(CB_ANCHOR )),
+ aClipMarkCB( this, ResId(CB_CLIP )),
+ aObjectGB( this, ResId(GB_OBJECT )),
+ aObjGrfFT( this, ResId(FT_OBJGRF )),
+ aObjGrfLB( this, ResId(LB_OBJGRF )),
+ aDiagramFT( this, ResId(FT_DIAGRAM)),
+ aDiagramLB( this, ResId(LB_DIAGRAM)),
+ aDrawFT( this, ResId(FT_DRAW )),
+ aDrawLB( this, ResId(LB_DRAW )),
+ pLocalOptions(0)
+{
+ FreeResource();
+ SetExchangeSupport();
+ aObjGrfLB. SetSelectHdl( LINK( this, ScTpContentOptions, SelLbObjHdl ) );
+ aDiagramLB. SetSelectHdl( LINK( this, ScTpContentOptions, SelLbObjHdl ) );
+ aDrawLB. SetSelectHdl( LINK( this, ScTpContentOptions, SelLbObjHdl ) );
+
+ aFormulaCB .SetClickHdl( LINK( this, ScTpContentOptions, CBHdl ) );
+ aNilCB .SetClickHdl( LINK( this, ScTpContentOptions, CBHdl ) );
+ aAnnotCB .SetClickHdl( LINK( this, ScTpContentOptions, CBHdl ) );
+ aValueCB .SetClickHdl( LINK( this, ScTpContentOptions, CBHdl ) );
+ aAnchorCB .SetClickHdl( LINK( this, ScTpContentOptions, CBHdl ) );
+ aClipMarkCB .SetClickHdl( LINK( this, ScTpContentOptions, CBHdl ) );
+}
+/*-----------------11.01.97 10.52-------------------
+
+--------------------------------------------------*/
+
+ScTpContentOptions::~ScTpContentOptions()
+{
+ delete pLocalOptions;
+}
+/*-----------------11.01.97 10.52-------------------
+
+--------------------------------------------------*/
+
+SfxTabPage* ScTpContentOptions::Create( Window* pParent,
+ const SfxItemSet& rCoreSet )
+{
+ return new ScTpContentOptions(pParent, rCoreSet);
+}
+/*-----------------11.01.97 10.52-------------------
+
+--------------------------------------------------*/
+
+BOOL ScTpContentOptions::FillItemSet( SfxItemSet& rCoreSet )
+{
+ BOOL bRet = FALSE;
+ if( aFormulaCB .GetSavedValue() != aFormulaCB .IsChecked() ||
+ aNilCB .GetSavedValue() != aNilCB .IsChecked() ||
+ aAnnotCB .GetSavedValue() != aAnnotCB .IsChecked() ||
+ aValueCB .GetSavedValue() != aValueCB .IsChecked() ||
+ aAnchorCB .GetSavedValue() != aAnchorCB .IsChecked() ||
+ aClipMarkCB .GetSavedValue() != aClipMarkCB .IsChecked() ||
+ aObjGrfLB .GetSavedValue() != aObjGrfLB .GetSelectEntryPos() ||
+ aDiagramLB .GetSavedValue() != aDiagramLB .GetSelectEntryPos() ||
+ aDrawLB .GetSavedValue() != aDrawLB .GetSelectEntryPos() )
+ {
+ rCoreSet.Put(ScTpViewItem(SID_SCVIEWOPTIONS, *pLocalOptions));
+ bRet = TRUE;
+ }
+ return bRet;
+}
+/*-----------------11.01.97 10.53-------------------
+
+--------------------------------------------------*/
+
+void ScTpContentOptions::Reset( const SfxItemSet& rCoreSet )
+{
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SCVIEWOPTIONS, FALSE , &pItem))
+ pLocalOptions = new ScViewOptions(
+ ((const ScTpViewItem*)pItem)->GetViewOptions() );
+ else
+ pLocalOptions = new ScViewOptions;
+ aFormulaCB .Check(pLocalOptions->GetOption(VOPT_FORMULAS));
+ aNilCB .Check(pLocalOptions->GetOption(VOPT_NULLVALS));
+ aAnnotCB .Check(pLocalOptions->GetOption(VOPT_NOTES));
+ aValueCB .Check(pLocalOptions->GetOption(VOPT_SYNTAX));
+ aAnchorCB .Check(pLocalOptions->GetOption(VOPT_ANCHOR));
+ aClipMarkCB .Check(pLocalOptions->GetOption(VOPT_CLIPMARKS));
+
+ aObjGrfLB .SelectEntryPos( (USHORT)pLocalOptions->GetObjMode(VOBJ_TYPE_OLE) );
+ aDiagramLB .SelectEntryPos( (USHORT)pLocalOptions->GetObjMode(VOBJ_TYPE_CHART) );
+ aDrawLB .SelectEntryPos( (USHORT)pLocalOptions->GetObjMode(VOBJ_TYPE_DRAW) );
+
+
+ aFormulaCB .SaveValue();
+ aNilCB .SaveValue();
+ aAnnotCB .SaveValue();
+ aValueCB .SaveValue();
+ aAnchorCB .SaveValue();
+ aClipMarkCB .SaveValue();
+ aObjGrfLB .SaveValue();
+ aDiagramLB .SaveValue();
+ aDrawLB .SaveValue();
+
+
+}
+/*-----------------11.01.97 12.45-------------------
+
+--------------------------------------------------*/
+
+void ScTpContentOptions::ActivatePage( const SfxItemSet& rSet)
+{
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rSet.GetItemState(SID_SCVIEWOPTIONS, FALSE , &pItem))
+ *pLocalOptions = ((const ScTpViewItem*)pItem)->GetViewOptions();
+}
+/*-----------------11.01.97 12.45-------------------
+
+--------------------------------------------------*/
+
+int ScTpContentOptions::DeactivatePage( SfxItemSet* pSet )
+{
+ if(pSet)
+ FillItemSet(*pSet);
+ return SfxTabPage::LEAVE_PAGE;
+}
+/*-----------------11.01.97 13.43-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK( ScTpContentOptions, SelLbObjHdl, ListBox*, pLb )
+{
+ USHORT nSelPos = pLb->GetSelectEntryPos();
+ ScVObjMode eMode = ScVObjMode(nSelPos);
+ ScVObjType eType = VOBJ_TYPE_OLE;
+
+ if ( pLb == &aDiagramLB )
+ eType = VOBJ_TYPE_CHART;
+ else if ( pLb == &aDrawLB )
+ eType = VOBJ_TYPE_DRAW;
+
+ pLocalOptions->SetObjMode( eType, eMode );
+
+ return NULL;
+}
+
+/*-----------------11.01.97 14.25-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK( ScTpContentOptions, CBHdl, CheckBox*, pBtn )
+{
+ ScViewOption eOption = VOPT_FORMULAS;
+ BOOL bChecked = pBtn->IsChecked();
+
+ if ( &aFormulaCB == pBtn ) eOption = VOPT_FORMULAS;
+ else if ( &aNilCB == pBtn ) eOption = VOPT_NULLVALS;
+ else if ( &aAnnotCB == pBtn ) eOption = VOPT_NOTES;
+ else if ( &aValueCB == pBtn ) eOption = VOPT_SYNTAX;
+ else if ( &aAnchorCB == pBtn ) eOption = VOPT_ANCHOR;
+ else if ( &aClipMarkCB == pBtn ) eOption = VOPT_CLIPMARKS;
+
+ pLocalOptions->SetOption( eOption, bChecked );
+
+ return NULL;
+}
+/*-----------------11.01.97 10.53-------------------
+
+--------------------------------------------------*/
+
+ScTpLayoutOptions::ScTpLayoutOptions( Window* pParent,
+ const SfxItemSet& rArgSet ) :
+ SfxTabPage(pParent, ScResId( RID_SCPAGE_LAYOUT ), rArgSet),
+ aWindowGB( this, ResId(GB_WINDOW )),
+ aRowColHeaderCB(this, ResId(CB_ROWCOLHEADER )),
+ aHScrollCB( this, ResId(CB_HSCROLL )),
+ aVScrollCB( this, ResId(CB_VSCROLL )),
+ aTblRegCB( this, ResId(CB_TBLREG )),
+ aOutlineCB( this, ResId(CB_OUTLINE )),
+ aLinesGB( this, ResId(GB_LINES )),
+ aGridCB( this, ResId(CB_GRID )),
+ aColorFT( this, ResId(FT_COLOR )),
+ aColorLB( this, ResId(LB_COLOR )),
+ aBreakCB( this, ResId(CB_PAGEBREAKS )),
+ aGuideLineCB( this, ResId(CB_GUIDELINE )),
+ aHandleCB( this, ResId(CB_HANDLES )),
+ aBigHandleCB( this, ResId(CB_BIGHANDLES )),
+ aUnitGB( this, ResId(GB_UNIT )),
+ aUnitLB( this, ResId(LB_UNIT )),
+ aUnitArr( ResId(ST_UNIT )),
+ aTabGB( this, ResId( GB_TAB )),
+ aTabMF( this, ResId( MF_TAB )),
+ pLocalOptions(0)
+{
+ FreeResource();
+ SetExchangeSupport();
+
+ aGridCB .SetClickHdl( LINK( this, ScTpLayoutOptions, GridHdl ) );
+ aVScrollCB .SetClickHdl( LINK( this, ScTpLayoutOptions, CBHdl ) );
+ aHScrollCB .SetClickHdl( LINK( this, ScTpLayoutOptions, CBHdl ) );
+ aTblRegCB .SetClickHdl( LINK( this, ScTpLayoutOptions, CBHdl ) );
+ aOutlineCB .SetClickHdl( LINK( this, ScTpLayoutOptions, CBHdl ) );
+ aBreakCB .SetClickHdl( LINK( this, ScTpLayoutOptions, CBHdl ) );
+ aGuideLineCB .SetClickHdl( LINK( this, ScTpLayoutOptions, CBHdl ) );
+ aHandleCB .SetClickHdl( LINK( this, ScTpLayoutOptions, CBHdl ) );
+ aBigHandleCB.SetClickHdl( LINK( this, ScTpLayoutOptions, CBHdl ) );
+ aRowColHeaderCB.SetClickHdl( LINK( this, ScTpLayoutOptions, CBHdl ) );
+ aUnitLB. SetSelectHdl( LINK( this, ScTpLayoutOptions, MetricHdl ) );
+
+ for ( USHORT i = 0; i < aUnitArr.Count(); ++i )
+ {
+ String sMetric = aUnitArr.GetStringByPos( i );
+ FieldUnit eFUnit = (FieldUnit)aUnitArr.GetValue( i );
+
+ switch ( eFUnit )
+ {
+ case FUNIT_MM:
+ case FUNIT_CM:
+ case FUNIT_POINT:
+ case FUNIT_PICA:
+ case FUNIT_INCH:
+ {
+ // nur diese Metriken benutzen
+ USHORT nPos = aUnitLB.InsertEntry( sMetric );
+ aUnitLB.SetEntryData( nPos, (void*)(long)eFUnit );
+ }
+ }
+ }
+
+}
+/*-----------------11.01.97 10.53-------------------
+
+--------------------------------------------------*/
+
+ScTpLayoutOptions::~ScTpLayoutOptions()
+{
+ delete pLocalOptions;
+}
+/*-----------------11.01.97 10.53-------------------
+
+--------------------------------------------------*/
+
+SfxTabPage* ScTpLayoutOptions::Create( Window* pParent,
+ const SfxItemSet& rCoreSet )
+{
+ return new ScTpLayoutOptions(pParent, rCoreSet);
+}
+/*-----------------11.01.97 10.53-------------------
+
+--------------------------------------------------*/
+
+BOOL ScTpLayoutOptions::FillItemSet( SfxItemSet& rCoreSet )
+{
+ BOOL bRet = TRUE;
+ if( aGridCB .GetSavedValue() != aGridCB.IsChecked() ||
+ aRowColHeaderCB .GetSavedValue() != aRowColHeaderCB.IsChecked() ||
+ aHScrollCB .GetSavedValue() != aHScrollCB .IsChecked() ||
+ aVScrollCB .GetSavedValue() != aVScrollCB .IsChecked() ||
+ aTblRegCB .GetSavedValue() != aTblRegCB .IsChecked() ||
+ aOutlineCB .GetSavedValue() != aOutlineCB .IsChecked() ||
+ aColorLB .GetSavedValue() != aColorLB .GetSelectEntryPos() ||
+ aBreakCB .GetSavedValue() != aBreakCB .IsChecked() ||
+ aGuideLineCB .GetSavedValue() != aGuideLineCB .IsChecked() ||
+ aHandleCB .GetSavedValue() != aHandleCB .IsChecked() ||
+ aBigHandleCB .GetSavedValue() != aBigHandleCB .IsChecked())
+ {
+ pLocalOptions->SetGridColor( aColorLB.GetSelectEntryColor(),
+ aColorLB.GetSelectEntry() );
+ rCoreSet.Put(ScTpViewItem(SID_SCVIEWOPTIONS, *pLocalOptions));
+ bRet = TRUE;
+ }
+ const USHORT nMPos = aUnitLB.GetSelectEntryPos();
+ if ( nMPos != aUnitLB.GetSavedValue() )
+ {
+ USHORT nFieldUnit = (USHORT)(long)aUnitLB.GetEntryData( nMPos );
+ rCoreSet.Put( SfxUInt16Item( SID_ATTR_METRIC,
+ (UINT16)nFieldUnit ) );
+ bRet = TRUE;
+ }
+
+ if(aTabMF.GetText() != aTabMF.GetSavedValue())
+ {
+ rCoreSet.Put(SfxUInt16Item(SID_ATTR_DEFTABSTOP,
+ aTabMF.Denormalize(aTabMF.GetValue(FUNIT_TWIP))));
+ bRet = TRUE;
+ }
+
+ return bRet;
+}
+/*-----------------11.01.97 10.53-------------------
+
+--------------------------------------------------*/
+
+void ScTpLayoutOptions::Reset( const SfxItemSet& rCoreSet )
+{
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SCVIEWOPTIONS, FALSE , &pItem))
+ pLocalOptions = new ScViewOptions(
+ ((const ScTpViewItem*)pItem)->GetViewOptions() );
+ else
+ pLocalOptions = new ScViewOptions;
+
+ aRowColHeaderCB.Check( pLocalOptions->GetOption(VOPT_HEADER) );
+ aHScrollCB .Check( pLocalOptions->GetOption(VOPT_HSCROLL) );
+ aVScrollCB .Check( pLocalOptions->GetOption(VOPT_VSCROLL) );
+ aTblRegCB .Check( pLocalOptions->GetOption(VOPT_TABCONTROLS) );
+ aOutlineCB .Check( pLocalOptions->GetOption(VOPT_OUTLINER) );
+
+ InitGridOpt();
+
+ aBreakCB.Check( pLocalOptions->GetOption(VOPT_PAGEBREAKS) );
+ aGuideLineCB.Check( pLocalOptions->GetOption(VOPT_HELPLINES) );
+ aHandleCB.Check( !pLocalOptions->GetOption(VOPT_SOLIDHANDLES) ); // inverted
+ aBigHandleCB.Check( pLocalOptions->GetOption(VOPT_BIGHANDLES) );
+
+ aUnitLB.SetNoSelection();
+ if ( rCoreSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
+ {
+ const SfxUInt16Item& rItem = (SfxUInt16Item&)rCoreSet.Get( SID_ATTR_METRIC );
+ FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
+
+ for ( USHORT i = 0; i < aUnitLB.GetEntryCount(); ++i )
+ {
+ if ( (FieldUnit)(long)aUnitLB.GetEntryData( i ) == eFieldUnit )
+ {
+ aUnitLB.SelectEntryPos( i );
+ break;
+ }
+ }
+ ::SetFieldUnit(aTabMF, eFieldUnit);
+ }
+ aUnitLB.SaveValue();
+
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_ATTR_DEFTABSTOP, FALSE, &pItem))
+ aTabMF.SetValue(aTabMF.Normalize(((SfxUInt16Item*)pItem)->GetValue()), FUNIT_TWIP);
+ aTabMF.SaveValue();
+
+ aRowColHeaderCB .SaveValue();
+ aHScrollCB .SaveValue();
+ aVScrollCB .SaveValue();
+ aTblRegCB .SaveValue();
+ aOutlineCB .SaveValue();
+ aGridCB .SaveValue();
+ aColorLB .SaveValue();
+ aBreakCB .SaveValue();
+ aGuideLineCB .SaveValue();
+ aHandleCB .SaveValue();
+ aBigHandleCB .SaveValue();
+ aUnitLB .SaveValue();
+ aTabMF .SaveValue();
+}
+
+/*-----------------11.01.97 12.46-------------------
+
+--------------------------------------------------*/
+
+void ScTpLayoutOptions::ActivatePage( const SfxItemSet& rCoreSet)
+{
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SCVIEWOPTIONS, FALSE , &pItem))
+ *pLocalOptions = ((const ScTpViewItem*)pItem)->GetViewOptions();
+}
+/*-----------------11.01.97 12.46-------------------
+
+--------------------------------------------------*/
+
+int ScTpLayoutOptions::DeactivatePage( SfxItemSet* pSet )
+{
+ if(pSet)
+ FillItemSet(*pSet);
+ return SfxTabPage::LEAVE_PAGE;
+}
+
+/*-----------------11.01.97 13.13-------------------
+
+--------------------------------------------------*/
+
+void ScTpLayoutOptions::InitGridOpt()
+{
+ BOOL bGrid = pLocalOptions->GetOption( VOPT_GRID );
+
+ aGridCB.Check( bGrid );
+
+ if ( bGrid )
+ aColorFT.Enable(), aColorLB.Enable();
+ else
+ aColorFT.Disable(), aColorLB.Disable();
+
+ if ( aColorLB.GetEntryCount() == 0 )
+ {
+ SfxObjectShell* pDocSh = SfxObjectShell::Current();
+ // hier koennte auch eine andere DocShell kommen!
+ pDocSh = PTR_CAST(ScDocShell, pDocSh);
+
+ XColorTable* pColorTable = NULL;
+
+ if ( pDocSh )
+ {
+ const SfxPoolItem* pItem = pDocSh->GetItem( ITEMID_COLOR_TABLE );
+
+ if ( pItem )
+ pColorTable = ((SvxColorTableItem*)pItem)->GetColorTable();
+ }
+ else
+ pColorTable = OFF_APP()->GetStdColorTable();
+
+ if ( !pColorTable )
+ return;
+
+ //------------------------------------------------------
+
+ aColorLB.SetUpdateMode( FALSE );
+
+ // Eintraege aus der Colortable
+
+ long nCount = pColorTable->Count();
+ for ( long n=0; n<nCount; n++ )
+ {
+ XColorEntry* pEntry = pColorTable->Get(n);
+ aColorLB.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
+ }
+
+ // Standard-Gitterfarbe (hellgrau) immer
+
+ Color aStdCol( COL_LIGHTGRAY ); // wie Default in ScViewOptions
+ if ( LISTBOX_ENTRY_NOTFOUND ==
+ aColorLB.GetEntryPos( aStdCol ) )
+ aColorLB.InsertEntry( aStdCol, ScGlobal::GetRscString( STR_GRIDCOLOR ) );
+
+ aColorLB.SetUpdateMode( TRUE );
+
+ String aName;
+ Color aCol = pLocalOptions->GetGridColor( &aName );
+ USHORT nSelPos = aColorLB.GetEntryPos( aCol );
+
+ if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
+ aColorLB.SelectEntryPos( nSelPos );
+ else
+ aColorLB.SelectEntryPos( aColorLB.InsertEntry( aCol, aName ) );
+
+ Invalidate();
+ }
+}
+
+/*-----------------11.01.97 13.40-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK( ScTpLayoutOptions, GridHdl, CheckBox*, pBox )
+{
+ BOOL bChecked = pBox->IsChecked();
+ aColorFT.Enable(bChecked);
+ aColorLB.Enable(bChecked);
+ pLocalOptions->SetOption( VOPT_GRID, bChecked );
+ return 0;
+}
+/*-----------------11.01.97 14.25-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK( ScTpLayoutOptions, CBHdl, CheckBox*, pBtn )
+{
+ ScViewOption eOption;
+ BOOL bChecked = pBtn->IsChecked();
+
+ if ( &aVScrollCB == pBtn ) eOption = VOPT_VSCROLL;
+ else if ( &aHScrollCB == pBtn ) eOption = VOPT_HSCROLL;
+ else if ( &aTblRegCB == pBtn ) eOption = VOPT_TABCONTROLS;
+ else if ( &aOutlineCB == pBtn ) eOption = VOPT_OUTLINER;
+ else if ( &aBreakCB == pBtn ) eOption = VOPT_PAGEBREAKS;
+ else if ( &aGuideLineCB == pBtn ) eOption = VOPT_HELPLINES;
+ else if ( &aHandleCB == pBtn ) eOption = VOPT_SOLIDHANDLES;
+ else if ( &aBigHandleCB == pBtn ) eOption = VOPT_BIGHANDLES;
+ else if ( &aRowColHeaderCB == pBtn ) eOption = VOPT_HEADER;
+
+ // VOPT_SOLIDHANDLES is inverted (CheckBox is "simple handles")
+ if ( eOption == VOPT_SOLIDHANDLES )
+ pLocalOptions->SetOption( eOption, !bChecked );
+ else
+ pLocalOptions->SetOption( eOption, bChecked );
+
+ return NULL;
+}
+/*-----------------13.01.97 14.44-------------------
+ Metric des Deftabstops umschalten
+--------------------------------------------------*/
+
+IMPL_LINK(ScTpLayoutOptions, MetricHdl, ListBox*, EMPTYARG)
+{
+ const USHORT nMPos = aUnitLB.GetSelectEntryPos();
+ if(nMPos != USHRT_MAX)
+ {
+ FieldUnit eFieldUnit = (FieldUnit)(long)aUnitLB.GetEntryData( nMPos );
+ long nVal =
+ aTabMF.Denormalize( aTabMF.GetValue( FUNIT_TWIP ) );
+ ::SetFieldUnit( aTabMF, eFieldUnit );
+ aTabMF.SetValue( aTabMF.Normalize( nVal ), FUNIT_TWIP );
+ }
+
+ return 0;
+}
+/*-----------------11.01.97 14.52-------------------
+
+--------------------------------------------------*/
+
+ScTpInputOptions::ScTpInputOptions( Window* pParent,
+ const SfxItemSet& rArgSet ) :
+ SfxTabPage(pParent, ScResId( RID_SCPAGE_INPUT ), rArgSet),
+ aOptionsGB( this, ResId( GB_OPTIONS )),
+ aAlignCB ( this, ResId( CB_ALIGN )),
+ aAlignLB ( this, ResId( LB_ALIGN )),
+ aEditModeCB( this, ResId( CB_EDITMODE )),
+ aFormatCB( this, ResId( CB_FORMAT )),
+ aRangeFindCB( this, ResId( CB_RFIND )),
+ aExpRefCB( this, ResId( CB_EXPREF )),
+ aMarkHdrCB( this, ResId( CB_MARKHDR ))
+{
+ FreeResource();
+ aAlignCB.SetClickHdl(LINK(this, ScTpInputOptions, AlignHdl));
+}
+/*-----------------11.01.97 14.52-------------------
+
+--------------------------------------------------*/
+
+ScTpInputOptions::~ScTpInputOptions()
+{
+}
+
+/*-----------------11.01.97 14.52-------------------
+
+--------------------------------------------------*/
+
+SfxTabPage* ScTpInputOptions::Create( Window* pParent,
+ const SfxItemSet& rCoreSet )
+{
+ return new ScTpInputOptions(pParent, rCoreSet);
+}
+/*-----------------11.01.97 14.51-------------------
+
+--------------------------------------------------*/
+
+BOOL ScTpInputOptions::FillItemSet( SfxItemSet& rCoreSet )
+{
+ BOOL bRet = TRUE;
+
+ if(aAlignCB.GetSavedValue() != aAlignCB.IsChecked())
+ rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_SELECTION, aAlignCB.IsChecked()));
+
+ if(aAlignLB.GetSavedValue() != aAlignLB.GetSelectEntryPos())
+ rCoreSet.Put(SfxUInt16Item(SID_SC_INPUT_SELECTIONPOS, aAlignLB.GetSelectEntryPos()));
+
+ if(aEditModeCB.GetSavedValue() != aEditModeCB.IsChecked())
+ rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_EDITMODE, aEditModeCB.IsChecked()));
+
+ if(aFormatCB.GetSavedValue() != aFormatCB.IsChecked())
+ rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_FMT_EXPAND, aFormatCB.IsChecked()));
+
+ if(aRangeFindCB.GetSavedValue() != aRangeFindCB.IsChecked())
+ rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_RANGEFINDER, aRangeFindCB.IsChecked()));
+
+ if(aExpRefCB.GetSavedValue() != aExpRefCB.IsChecked())
+ rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_REF_EXPAND, aExpRefCB.IsChecked()));
+
+ if(aMarkHdrCB.GetSavedValue() != aMarkHdrCB.IsChecked())
+ rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_MARK_HEADER, aMarkHdrCB.IsChecked()));
+
+ return bRet;
+}
+/*-----------------11.01.97 14.51-------------------
+
+--------------------------------------------------*/
+
+void ScTpInputOptions::Reset( const SfxItemSet& rCoreSet )
+{
+ const SfxPoolItem* pItem;
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_SELECTION, FALSE, &pItem))
+ aAlignCB.Check(((const SfxBoolItem*)pItem)->GetValue());
+
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_SELECTIONPOS, FALSE, &pItem))
+ aAlignLB.SelectEntryPos(((const SfxUInt16Item*)pItem)->GetValue());
+
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_EDITMODE, FALSE, &pItem))
+ aEditModeCB.Check(((const SfxBoolItem*)pItem)->GetValue());
+
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_FMT_EXPAND, FALSE, &pItem))
+ aFormatCB.Check(((const SfxBoolItem*)pItem)->GetValue());
+
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_RANGEFINDER, FALSE, &pItem))
+ aRangeFindCB.Check(((const SfxBoolItem*)pItem)->GetValue());
+
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_REF_EXPAND, FALSE, &pItem))
+ aExpRefCB.Check(((const SfxBoolItem*)pItem)->GetValue());
+
+ if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_MARK_HEADER, FALSE, &pItem))
+ aMarkHdrCB.Check(((const SfxBoolItem*)pItem)->GetValue());
+
+ aAlignCB .SaveValue();
+ aAlignLB .SaveValue();
+ aEditModeCB .SaveValue();
+ aFormatCB .SaveValue();
+ aRangeFindCB.SaveValue();
+ aExpRefCB .SaveValue();
+ aMarkHdrCB .SaveValue();
+ AlignHdl(&aAlignCB);
+}
+
+/*-----------------11.01.97 15.30-------------------
+
+--------------------------------------------------*/
+
+IMPL_LINK( ScTpInputOptions, AlignHdl, CheckBox*, pBox )
+{
+ aAlignLB.Enable(pBox->IsChecked());
+ return 0;
+}
+
+
+
diff --git a/sc/source/ui/pagedlg/areasdlg.cxx b/sc/source/ui/pagedlg/areasdlg.cxx
new file mode 100644
index 000000000000..32d3858129cb
--- /dev/null
+++ b/sc/source/ui/pagedlg/areasdlg.cxx
@@ -0,0 +1,868 @@
+/*************************************************************************
+ *
+ * $RCSfile: areasdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#ifndef SC_RANGELST_HXX
+#include <rangelst.hxx>
+#endif
+
+#include <sfx2/dispatch.hxx>
+#include <svtools/stritem.hxx>
+#include <vcl/msgbox.hxx>
+#include <unotools/charclass.hxx>
+#include <stdlib.h>
+
+#define _AREASDLG_CXX
+#include "areasdlg.hxx"
+#undef _AREASDLG_CXX
+
+#include "scresid.hxx"
+#include "rangenam.hxx"
+#include "reffact.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "globstr.hrc"
+#include "pagedlg.hrc"
+
+// STATIC DATA ---------------------------------------------------------------
+
+
+
+//============================================================================
+
+#define HDL(hdl) LINK( this, ScPrintAreasDlg, hdl )
+#define ERRORBOX(nId) ErrorBox( this, WinBits(WB_OK|WB_DEF_OK), \
+ ScGlobal::GetRscString( nId ) ).Execute()
+#define SWAP(x1,x2) { int n=x1; x1=x2; x2=n; }
+
+// globale Funktionen (->am Ende der Datei):
+
+BOOL lcl_GetColNum( String rStr, USHORT& rColumn );
+String lcl_GetColStr( USHORT nColNo );
+BOOL lcl_CheckRepeatString( const String& rStr, BOOL bIsRow, ScRange* pRange );
+void lcl_GetRepeatRangeString( const ScRange* pRange, BOOL bIsRow, String& rStr );
+void lcl_CheckEqual( String& rStr );
+
+
+//============================================================================
+// class ScPrintAreasDlg
+
+//----------------------------------------------------------------------------
+
+ScPrintAreasDlg::ScPrintAreasDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent )
+ : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_AREAS),
+ //
+ aLbPrintArea ( this, ScResId( LB_PRINTAREA ) ),
+ aGbPrintArea ( this, ScResId( GB_PRINTAREA ) ),
+ aEdPrintArea ( this, ScResId( ED_PRINTAREA ) ),
+ aRbPrintArea ( this, ScResId( RB_PRINTAREA ), &aEdPrintArea ),
+ //
+ aLbRepeatRow ( this, ScResId( LB_REPEATROW ) ),
+ aGbRepeatRow ( this, ScResId( GB_REPEATROW ) ),
+ aEdRepeatRow ( this, ScResId( ED_REPEATROW ) ),
+ aRbRepeatRow ( this, ScResId( RB_REPEATROW ), &aEdRepeatRow ),
+ //
+ aLbRepeatCol ( this, ScResId( LB_REPEATCOL ) ),
+ aGbRepeatCol ( this, ScResId( GB_REPEATCOL ) ),
+ aEdRepeatCol ( this, ScResId( ED_REPEATCOL ) ),
+ aRbRepeatCol ( this, ScResId( RB_REPEATCOL ), &aEdRepeatCol ),
+ //
+ aBtnOk ( this, ScResId( BTN_OK ) ),
+ aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
+ aBtnHelp ( this, ScResId( BTN_HELP ) ),
+ //
+ pRefInputEdit ( &aEdPrintArea ),
+ bDlgLostFocus ( FALSE ),
+ pDoc ( NULL ),
+ pViewData ( NULL ),
+ nCurTab ( 0 )
+{
+ ScTabViewShell* pScViewSh = PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ ScDocShell* pScDocSh = PTR_CAST( ScDocShell, SfxObjectShell::Current() );
+
+ DBG_ASSERT( pScDocSh, "Current DocumentShell not found :-(" );
+
+ pDoc = pScDocSh->GetDocument();
+
+ if ( pScViewSh )
+ {
+ pViewData = pScViewSh->GetViewData();
+ nCurTab = pViewData->GetTabNo();
+ }
+
+ Impl_Reset();
+
+ //@BugID 54702 Enablen/Disablen nur noch in Basisklasse
+ //SFX_APPWINDOW->Enable();
+
+ FreeResource();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScPrintAreasDlg::~ScPrintAreasDlg()
+{
+ // Extra-Data an ListBox-Entries abraeumen
+
+#ifdef SINIX
+ ListBox* pLb[3];
+ pLb[0] = &aLbPrintArea;
+ pLb[1] = &aLbRepeatRow;
+ pLb[2] = &aLbRepeatCol;
+#else
+ ListBox* pLb[3] = { &aLbPrintArea, &aLbRepeatRow, &aLbRepeatCol };
+#endif
+
+ for ( USHORT i=0; i<3; i++ )
+ {
+ USHORT nCount = pLb[i]->GetEntryCount();
+ for ( USHORT j=0; j<nCount; j++ )
+ delete (String*)pLb[i]->GetEntryData(j);
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScPrintAreasDlg::Close()
+{
+ return DoClose( ScPrintAreasDlgWrapper::GetChildWindowId() );
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScPrintAreasDlg::IsTableLocked() const
+{
+ // Druckbereiche gelten pro Tabelle, darum macht es keinen Sinn,
+ // bei der Eingabe die Tabelle umzuschalten
+
+ return TRUE;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPrintAreasDlg::SetReference( const ScRange& rRef, ScDocument* pDoc )
+{
+ if ( pRefInputEdit )
+ {
+ if ( rRef.aStart != rRef.aEnd )
+ RefInputStart( pRefInputEdit );
+
+ String aStr;
+
+ if ( &aEdPrintArea == pRefInputEdit )
+ {
+ rRef.Format( aStr, SCR_ABS );
+ lcl_CheckEqual( aStr );
+
+// aEdPrintArea.ReplaceSelected( aStr );
+
+ String aVal = aEdPrintArea.GetText();
+ Selection aSel = aEdPrintArea.GetSelection();
+ aVal.Erase( (xub_StrLen)aSel.Min(), (xub_StrLen)aSel.Len() );
+ aVal.Insert( aStr, (xub_StrLen)aSel.Min() );
+ Selection aNewSel( aSel.Min(), aSel.Min()+aStr.Len() );
+ aEdPrintArea.SetRefString( aVal );
+ aEdPrintArea.SetSelection( aNewSel );
+ }
+ else
+ {
+ BOOL bRow = ( &aEdRepeatRow == pRefInputEdit );
+ lcl_GetRepeatRangeString( &rRef, bRow, aStr );
+ pRefInputEdit->SetRefString( aStr );
+ }
+ }
+
+ Impl_ModifyHdl( pRefInputEdit );
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPrintAreasDlg::AddRefEntry()
+{
+ if ( pRefInputEdit == &aEdPrintArea )
+ {
+ String aVal = aEdPrintArea.GetText();
+ aVal += ';';
+ aEdPrintArea.SetText(aVal);
+
+ xub_StrLen nLen = aVal.Len();
+ aEdPrintArea.SetSelection( Selection( nLen, nLen ) );
+
+ Impl_ModifyHdl( &aEdPrintArea );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScPrintAreasDlg::Deactivate()
+{
+ bDlgLostFocus = TRUE;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPrintAreasDlg::SetActive()
+{
+ if ( bDlgLostFocus )
+ {
+ bDlgLostFocus = FALSE;
+
+ if ( pRefInputEdit )
+ {
+ pRefInputEdit->GrabFocus();
+ Impl_ModifyHdl( pRefInputEdit );
+ }
+ }
+ else
+ GrabFocus();
+
+ RefInputDone();
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPrintAreasDlg::Impl_Reset()
+{
+ String aStrRange;
+ const ScRange* pRepeatColRange = pDoc->GetRepeatColRange( nCurTab );
+ const ScRange* pRepeatRowRange = pDoc->GetRepeatRowRange( nCurTab );
+
+ aEdPrintArea.SetModifyHdl ( HDL(Impl_ModifyHdl) );
+ aEdRepeatRow.SetModifyHdl ( HDL(Impl_ModifyHdl) );
+ aEdRepeatCol.SetModifyHdl ( HDL(Impl_ModifyHdl) );
+ aEdPrintArea.SetGetFocusHdl( HDL(Impl_GetFocusHdl) );
+ aEdRepeatRow.SetGetFocusHdl( HDL(Impl_GetFocusHdl) );
+ aEdRepeatCol.SetGetFocusHdl( HDL(Impl_GetFocusHdl) );
+ aLbPrintArea.SetGetFocusHdl( HDL(Impl_GetFocusHdl) );
+ aLbRepeatRow.SetGetFocusHdl( HDL(Impl_GetFocusHdl) );
+ aLbRepeatCol.SetGetFocusHdl( HDL(Impl_GetFocusHdl) );
+ aLbPrintArea.SetSelectHdl ( HDL(Impl_SelectHdl) );
+ aLbRepeatRow.SetSelectHdl ( HDL(Impl_SelectHdl) );
+ aLbRepeatCol.SetSelectHdl ( HDL(Impl_SelectHdl) );
+ aBtnOk .SetClickHdl ( HDL(Impl_BtnHdl) );
+ aBtnCancel .SetClickHdl ( HDL(Impl_BtnHdl) );
+
+ Impl_FillLists();
+
+ //-------------------------
+ // Druckbereich
+ //-------------------------
+ aStrRange.Erase();
+ String aOne;
+ USHORT nRangeCount = pDoc->GetPrintRangeCount( nCurTab );
+ for (USHORT i=0; i<nRangeCount; i++)
+ {
+ const ScRange* pPrintRange = pDoc->GetPrintRange( nCurTab, i );
+ if (pPrintRange)
+ {
+ if ( aStrRange.Len() )
+ aStrRange += ';';
+ pPrintRange->Format( aOne, SCR_ABS );
+ lcl_CheckEqual( aOne );
+ aStrRange += aOne;
+ }
+ }
+ aEdPrintArea.SetText( aStrRange );
+
+ //-------------------------------
+ // Wiederholungszeile
+ //-------------------------------
+ lcl_GetRepeatRangeString( pRepeatRowRange, TRUE, aStrRange );
+ aEdRepeatRow.SetText( aStrRange );
+
+ //--------------------------------
+ // Wiederholungsspalte
+ //--------------------------------
+ lcl_GetRepeatRangeString( pRepeatColRange, FALSE, aStrRange );
+ aEdRepeatCol.SetText( aStrRange );
+
+ Impl_ModifyHdl( &aEdPrintArea );
+ Impl_ModifyHdl( &aEdRepeatRow );
+ Impl_ModifyHdl( &aEdRepeatCol );
+
+ aEdPrintArea.SaveValue(); // fuer FillItemSet() merken:
+ aEdRepeatRow.SaveValue();
+ aEdRepeatCol.SaveValue();
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScPrintAreasDlg::Impl_GetItem( Edit* pEd, SfxStringItem& rItem )
+{
+ String aRangeStr = pEd->GetText();
+ BOOL bDataChanged = (pEd->GetSavedValue() != aRangeStr);
+
+ if ( (aRangeStr.Len() > 0) && &aEdPrintArea != pEd )
+ {
+ ScRange aRange;
+ lcl_CheckRepeatString( aRangeStr, &aEdRepeatRow == pEd, &aRange );
+ aRange.Format( aRangeStr, SCR_ABS );
+ lcl_CheckEqual( aRangeStr );
+ }
+
+ rItem.SetValue( aRangeStr );
+
+ return bDataChanged;
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScPrintAreasDlg::Impl_CheckRefStrings()
+{
+ BOOL bOk = FALSE;
+ String aStrPrintArea = aEdPrintArea.GetText();
+ String aStrRepeatRow = aEdRepeatRow.GetText();
+ String aStrRepeatCol = aEdRepeatCol.GetText();
+
+ BOOL bPrintAreaOk = TRUE;
+ if ( aStrPrintArea.Len() )
+ {
+ ScRange aRange;
+ xub_StrLen nTCount = aStrPrintArea.GetTokenCount();
+ for ( xub_StrLen i=0; i<nTCount && bPrintAreaOk; i++ )
+ {
+ String aOne = aStrPrintArea.GetToken(i);
+ lcl_CheckEqual( aOne );
+ USHORT nResult = aRange.ParseAny( aOne, pDoc );
+ if (!(nResult & SCA_VALID))
+ bPrintAreaOk = FALSE;
+ }
+ }
+
+ BOOL bRepeatRowOk = (aStrRepeatRow.Len() == 0);
+ if ( !bRepeatRowOk )
+ bRepeatRowOk = lcl_CheckRepeatString( aStrRepeatRow, TRUE, NULL );
+
+ BOOL bRepeatColOk = (aStrRepeatCol.Len() == 0);
+ if ( !bRepeatColOk )
+ bRepeatColOk = lcl_CheckRepeatString( aStrRepeatCol, FALSE, NULL );
+
+ // Fehlermeldungen
+
+ bOk = (bPrintAreaOk && bRepeatRowOk && bRepeatColOk);
+
+ if ( !bOk )
+ {
+ Edit* pEd = NULL;
+
+ if ( !bPrintAreaOk ) pEd = &aEdPrintArea;
+ else if ( !bRepeatRowOk ) pEd = &aEdRepeatRow;
+ else if ( !bRepeatColOk ) pEd = &aEdRepeatCol;
+
+ ERRORBOX( STR_INVALID_TABREF );
+ pEd->GrabFocus();
+ }
+
+ return bOk;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScPrintAreasDlg::Impl_FillLists()
+{
+ //------------------------------------------------------
+ // Selektion holen und String in PrintArea-ListBox merken
+ //------------------------------------------------------
+ ScRange aRange;
+ String aStrRange;
+ BOOL bSimple = TRUE;
+
+ if ( pViewData )
+ bSimple = pViewData->GetSimpleArea( aRange, FALSE );
+
+ if ( bSimple )
+ aRange.Format( aStrRange, SCR_ABS, pDoc );
+ else
+ {
+ ScRangeListRef aList( new ScRangeList );
+ pViewData->GetMarkData().FillRangeListWithMarks( aList, FALSE );
+ aList->Format( aStrRange, SCR_ABS, pDoc );
+ }
+
+ aLbPrintArea.SetEntryData( 2, new String( aStrRange ) );
+
+ //------------------------------------------------------
+ // Ranges holen und in ListBoxen merken
+ //------------------------------------------------------
+ ScRangeName* pRangeNames = pDoc->GetRangeName();
+ const USHORT nCount = pRangeNames ? pRangeNames->GetCount() : 0;
+
+ if ( nCount > 0 )
+ {
+ String aName;
+ String aSymbol;
+ ScRange aRange;
+ ScRangeData* pData = NULL;
+
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ pData = (ScRangeData*)(pRangeNames->At( i ));
+ if ( pData )
+ {
+ if ( pData->HasType( RT_ABSAREA )
+ || pData->HasType( RT_REFAREA )
+ || pData->HasType( RT_ABSPOS ) )
+ {
+ pData->GetName( aName );
+ pData->GetSymbol( aSymbol );
+ if ( aRange.ParseAny( aSymbol, pDoc ) & SCA_VALID )
+ {
+ if ( pData->HasType( RT_PRINTAREA ) )
+ {
+ aRange.Format( aSymbol, SCR_ABS, pDoc );
+ aLbPrintArea.SetEntryData(
+ aLbPrintArea.InsertEntry( aName ),
+ new String( aSymbol ) );
+ }
+
+ if ( pData->HasType( RT_ROWHEADER ) )
+ {
+ lcl_GetRepeatRangeString( &aRange, TRUE, aSymbol );
+ aLbRepeatRow.SetEntryData(
+ aLbRepeatRow.InsertEntry( aName ),
+ new String( aSymbol ) );
+ }
+
+ if ( pData->HasType( RT_COLHEADER ) )
+ {
+ lcl_GetRepeatRangeString( &aRange, FALSE, aSymbol );
+ aLbRepeatCol.SetEntryData(
+ aLbRepeatCol.InsertEntry( aName ),
+ new String( aSymbol ) );
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+//----------------------------------------------------------------------------
+// Handler:
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScPrintAreasDlg, Impl_BtnHdl, PushButton*, pBtn )
+{
+ if ( &aBtnOk == pBtn )
+ {
+ if ( Impl_CheckRefStrings() )
+ {
+ BOOL bDataChanged = FALSE;
+ String aStr;
+ SfxStringItem aPrintArea( SID_CHANGE_PRINTAREA, aStr );
+ SfxStringItem aRepeatRow( FN_PARAM_2, aStr );
+ SfxStringItem aRepeatCol( FN_PARAM_3, aStr );
+
+ //-------------------------
+ // Druckbereich veraendert?
+ //-------------------------
+ bDataChanged = Impl_GetItem( &aEdPrintArea, aPrintArea );
+
+ //-------------------------------
+ // Wiederholungszeile veraendert?
+ //-------------------------------
+ bDataChanged |= Impl_GetItem( &aEdRepeatRow, aRepeatRow );
+
+ //--------------------------------
+ // Wiederholungsspalte veraendert?
+ //--------------------------------
+ bDataChanged |= Impl_GetItem( &aEdRepeatCol, aRepeatCol );
+
+ if ( bDataChanged )
+ {
+ SFX_APP()->LockDispatcher( FALSE );
+ SwitchToDocument();
+ SFX_DISPATCHER().Execute( SID_CHANGE_PRINTAREA, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aPrintArea, &aRepeatRow, &aRepeatCol, 0L );
+ }
+
+ Close();
+ }
+ }
+ else if ( &aBtnCancel == pBtn )
+ Close();
+
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScPrintAreasDlg, Impl_GetFocusHdl, Control*, pCtr )
+{
+ if ( pCtr ==(Control *) &aEdPrintArea ||
+ pCtr ==(Control *) &aEdRepeatRow ||
+ pCtr ==(Control *) &aEdRepeatCol)
+ {
+ pRefInputEdit = (ScRefEdit*) pCtr;
+ }
+ else if ( pCtr ==(Control *) &aLbPrintArea)
+ {
+ pRefInputEdit = &aEdPrintArea;
+ }
+ else if ( pCtr ==(Control *) &aLbRepeatRow)
+ {
+ pRefInputEdit = &aEdRepeatRow;
+ }
+ else if ( pCtr ==(Control *) &aLbRepeatCol)
+ {
+ pRefInputEdit = &aEdRepeatCol;
+ }
+
+ return 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScPrintAreasDlg, Impl_SelectHdl, ListBox*, pLb )
+{
+ USHORT nSelPos = pLb->GetSelectEntryPos();
+ Edit* pEd = &aEdPrintArea;
+
+ if ( pLb == &aLbRepeatCol )
+ pEd = &aEdRepeatCol;
+ else if ( pLb == &aLbRepeatRow )
+ pEd = &aEdRepeatRow;
+
+ if ( nSelPos > 1 )
+ pEd->SetText( *(String*)pLb->GetEntryData( nSelPos ) );
+ else if ( nSelPos == 0 )
+ pEd->SetText( EMPTY_STRING );
+ else if ( nSelPos == 1 && !pLb->IsTravelSelect() && pEd->GetText().Len() == 0 )
+ pLb->SelectEntryPos(0);
+
+ return NULL;
+}
+
+
+//----------------------------------------------------------------------------
+
+IMPL_LINK( ScPrintAreasDlg, Impl_ModifyHdl, ScRefEdit*, pEd )
+{
+ ListBox* pLb = &aLbPrintArea;
+
+ if ( pEd == &aEdRepeatCol )
+ pLb = &aLbRepeatCol;
+ else if ( pEd == &aEdRepeatRow )
+ pLb = &aLbRepeatRow;
+
+ USHORT nEntryCount = pLb->GetEntryCount();
+ String aStrEd( pEd->GetText() );
+ String aEdUpper = aStrEd;
+ aEdUpper.ToUpperAscii();
+
+ if ( (nEntryCount > 2) && aStrEd.Len() > 0 )
+ {
+ BOOL bFound = FALSE;
+ String* pSymbol = NULL;
+
+ for ( USHORT i=2; i<nEntryCount && !bFound; i++ )
+ {
+ pSymbol = (String*)pLb->GetEntryData( i );
+ bFound = ( (*pSymbol == aStrEd) || (*pSymbol == aEdUpper) );
+ }
+
+ pLb->SelectEntryPos( bFound ? i-1 : 1 );
+ }
+ else
+ pLb->SelectEntryPos( !aStrEd.Len() ? 0 : 1 );
+
+ return NULL;
+}
+
+
+//============================================================================
+// globale Funktionen:
+
+//----------------------------------------------------------------------------
+
+BOOL lcl_GetColNum( String rStr, USHORT& rColumn )
+{
+ // liefert Spalte bei 1 beginnend (A -> 1)
+
+ xub_StrLen nLen = rStr.Len();
+ BOOL bOk = ( nLen < 3 );
+
+ rStr.ToUpperAscii();
+
+ if ( bOk )
+ switch ( nLen )
+ {
+ case 0:
+ rColumn = 0;
+ break;
+ case 1:
+ rColumn = (( (rStr.GetChar(0)) ) - 'A' ) + 1;
+ break;
+ case 2:
+ rColumn = (((rStr.GetChar(0) - 'A') + 1) * 26)
+ + ((rStr.GetChar(1) - 'A') + 1);
+ break;
+ default:
+ break;
+ }
+
+ return bOk;
+}
+
+
+//----------------------------------------------------------------------------
+
+String lcl_GetColStr( USHORT nColNo )
+{
+ // bekommt Spalte bei 0 beginnend (A -> 0)
+
+ String aStr;
+
+ if ( nColNo <= MAXCOL )
+ {
+ if ( nColNo < 26 )
+ aStr = (sal_Unicode) ( 'A' + nColNo );
+ else
+ {
+ aStr = (sal_Unicode) ( 'A' + ( nColNo / 26 ) - 1 );
+ aStr += (sal_Unicode) ( 'A' + ( nColNo % 26 ) );
+ }
+ }
+
+ return aStr;
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL lcl_CheckRepeatOne( const String& rStr, BOOL bIsRow, USHORT& rVal )
+{
+ // Zulaessige Syntax fuer rStr:
+ // Row: [$]1-MAXTAB
+ // Col: [$]A-IV
+
+ String aStr = rStr;
+ xub_StrLen nLen = aStr.Len();
+ USHORT nNum = 0;
+ BOOL bStrOk = ( nLen > 0 ) && ( bIsRow ? ( nLen < 6 ) : ( nLen < 4 ) );
+
+ if ( bStrOk )
+ {
+ if ( '$' == aStr.GetChar(0) )
+ aStr.Erase( 0, 1 );
+
+ if ( bIsRow )
+ {
+ bStrOk = CharClass::isAsciiNumeric(aStr);
+
+ if ( bStrOk )
+ {
+ int n = aStr.ToInt32();
+
+ if ( bStrOk = (n > 0) && ( n <= MAXROW+1 ) )
+ nNum = (USHORT)n;
+ }
+ }
+ else
+ {
+ bStrOk = CharClass::isAsciiAlpha(aStr)
+ && lcl_GetColNum( aStr, nNum )
+ && nNum && nNum <= MAXCOL+1;
+ }
+ }
+
+ if ( bStrOk )
+ {
+ nNum--;
+ rVal = nNum;
+ }
+
+ return bStrOk;
+}
+
+
+//----------------------------------------------------------------------------
+// doppelte Referenz testen
+
+
+BOOL lcl_CheckRepeatString( const String& rStr, BOOL bIsRow, ScRange* pRange )
+{
+ // Zulaessige Syntax fuer rStr:
+ // Row: $1, $1:$2
+ // Col: $A, $A:$B
+ // und alles auch ohne $
+
+ BOOL bOk = FALSE;
+ USHORT nStart = 0;
+ USHORT nEnd = 0;
+ xub_StrLen nCount = rStr.GetTokenCount(':');
+ if (nCount == 1)
+ {
+ bOk = lcl_CheckRepeatOne( rStr, bIsRow, nStart );
+ nEnd = nStart;
+ }
+ else if (nCount == 2)
+ {
+ String aFirst = rStr.GetToken( 0, ':' );
+ String aSecond = rStr.GetToken( 1, ':' );
+ bOk = lcl_CheckRepeatOne( aFirst, bIsRow, nStart );
+ if (bOk)
+ bOk = lcl_CheckRepeatOne( aSecond, bIsRow, nEnd );
+ }
+
+
+ if ( bOk && pRange )
+ {
+ ScAddress& rStart = pRange->aStart;
+ ScAddress& rEnd = pRange->aEnd;
+
+ if ( bIsRow )
+ {
+ rStart.SetCol( 0 );
+ rEnd .SetCol( 0 );
+ rStart.SetRow( nStart );
+ rEnd .SetRow( nEnd );
+ }
+ else
+ {
+ rStart.SetCol( nStart );
+ rEnd .SetCol( nEnd );
+ rStart.SetRow( 0 );
+ rEnd .SetRow( 0 );
+ }
+ }
+
+ return bOk;
+}
+
+
+//----------------------------------------------------------------------------
+
+void lcl_GetRepeatRangeString( const ScRange* pRange, BOOL bIsRow, String& rStr )
+{
+ if ( pRange )
+ {
+ // In rStr wird die pRange im folgenden Format ausgegeben
+ // Row: $1, $1:$2
+ // Col: $A, $A:$B
+
+ const ScAddress& rStart = pRange->aStart;
+ const ScAddress& rEnd = pRange->aEnd;
+
+ rStr = '$';
+ if ( bIsRow )
+ {
+ rStr += String::CreateFromInt32( rStart.Row()+1 );
+ if ( rStart.Row() != rEnd.Row() )
+ {
+ rStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ":$" ));
+ rStr += String::CreateFromInt32( rEnd.Row()+1 );
+ }
+ }
+ else
+ {
+ rStr += lcl_GetColStr( rStart.Col() );
+ if ( rStart.Col() != rEnd.Col() )
+ {
+ rStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ":$" ));
+ rStr += lcl_GetColStr( rEnd.Col() );
+ }
+ }
+ }
+ else
+ rStr.Erase();
+}
+
+
+//----------------------------------------------------------------------------
+
+void lcl_CheckEqual( String& rStr )
+{
+ if ( STRING_NOTFOUND == rStr.Search( ':' ) )
+ {
+ String aStrTmp = rStr;
+ rStr += ':';
+ rStr += aStrTmp;
+ }
+}
+
+
+
+
+
+
+
diff --git a/sc/source/ui/pagedlg/hfedtdlg.cxx b/sc/source/ui/pagedlg/hfedtdlg.cxx
new file mode 100644
index 000000000000..f7de34bb3078
--- /dev/null
+++ b/sc/source/ui/pagedlg/hfedtdlg.cxx
@@ -0,0 +1,219 @@
+/*************************************************************************
+ *
+ * $RCSfile: hfedtdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svtools/eitem.hxx>
+
+#include "hfedtdlg.hxx"
+#include "global.hxx"
+#include "globstr.hrc"
+#include "tphfedit.hxx"
+#include "scresid.hxx"
+#include "hfedtdlg.hrc"
+
+//------------------------------------------------------------------
+
+// macros from docsh4.cxx
+//! use SIDs?
+
+#define IS_SHARE_HEADER(set) \
+ ((SfxBoolItem&) \
+ ((SvxSetItem&)(set).Get(ATTR_PAGE_HEADERSET)).GetItemSet(). \
+ Get(ATTR_PAGE_SHARED)).GetValue()
+
+#define IS_SHARE_FOOTER(set) \
+ ((SfxBoolItem&) \
+ ((SvxSetItem&)(set).Get(ATTR_PAGE_FOOTERSET)).GetItemSet(). \
+ Get(ATTR_PAGE_SHARED)).GetValue()
+
+//==================================================================
+
+ScHFEditDlg::ScHFEditDlg( SfxViewFrame* pFrame,
+ Window* pParent,
+ const SfxItemSet& rCoreSet,
+ const String& rPageStyle,
+ USHORT nResId )
+ : SfxTabDialog( pFrame, pParent, ScResId( nResId ), &rCoreSet )
+{
+ eNumType = ((const SvxPageItem&)rCoreSet.Get(ATTR_PAGE)).GetNumType();
+
+ String aTmp = GetText();
+
+ aTmp.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
+ aTmp += ScGlobal::GetRscString( STR_PAGESTYLE );
+ aTmp.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " ));
+ aTmp += rPageStyle;
+ aTmp += ')';
+ SetText( aTmp );
+
+ switch ( nResId )
+ {
+ case RID_SCDLG_HFED_HEADER:
+ case RID_SCDLG_HFEDIT_HEADER:
+ AddTabPage( 1, ScRightHeaderEditPage::Create, NULL );
+ AddTabPage( 2, ScLeftHeaderEditPage::Create, NULL );
+ break;
+
+ case RID_SCDLG_HFED_FOOTER:
+ case RID_SCDLG_HFEDIT_FOOTER:
+ AddTabPage( 1, ScRightFooterEditPage::Create, NULL );
+ AddTabPage( 2, ScLeftFooterEditPage::Create, NULL );
+ break;
+
+ case RID_SCDLG_HFEDIT_LEFTHEADER:
+ AddTabPage( 1, ScLeftHeaderEditPage::Create, NULL );
+ break;
+
+ case RID_SCDLG_HFEDIT_RIGHTHEADER:
+ AddTabPage( 1, ScRightHeaderEditPage::Create, NULL );
+ break;
+
+ case RID_SCDLG_HFEDIT_LEFTFOOTER:
+ AddTabPage( 1, ScLeftFooterEditPage::Create, NULL );
+ break;
+
+ case RID_SCDLG_HFEDIT_RIGHTFOOTER:
+ AddTabPage( 1, ScRightFooterEditPage::Create, NULL );
+ break;
+
+ case RID_SCDLG_HFEDIT_SHDR:
+ AddTabPage( 1, ScRightHeaderEditPage::Create, NULL );
+ AddTabPage( 2, ScRightFooterEditPage::Create, NULL );
+ AddTabPage( 3, ScLeftFooterEditPage::Create, NULL );
+ break;
+
+ case RID_SCDLG_HFEDIT_SFTR:
+ AddTabPage( 1, ScRightHeaderEditPage::Create, NULL );
+ AddTabPage( 2, ScLeftHeaderEditPage::Create, NULL );
+ AddTabPage( 3, ScRightFooterEditPage::Create, NULL );
+ break;
+
+ case RID_SCDLG_HFEDIT_ALL:
+ AddTabPage( 1, ScRightHeaderEditPage::Create, NULL );
+ AddTabPage( 2, ScLeftHeaderEditPage::Create, NULL );
+ AddTabPage( 3, ScRightFooterEditPage::Create, NULL );
+ AddTabPage( 4, ScLeftFooterEditPage::Create, NULL );
+ break;
+
+ default:
+ case RID_SCDLG_HFEDIT:
+ {
+ const SvxPageItem& rPageItem = (const SvxPageItem&)
+ rCoreSet.Get(
+ rCoreSet.GetPool()->GetWhich(SID_ATTR_PAGE) );
+
+ BOOL bRightPage = ( SVX_PAGE_LEFT !=
+ SvxPageUsage(rPageItem.GetPageUsage()) );
+
+ if ( bRightPage )
+ {
+ AddTabPage( 1, ScRightHeaderEditPage::Create, NULL );
+ AddTabPage( 2, ScRightFooterEditPage::Create, NULL );
+ }
+ else
+ {
+ // #69193a# respect "shared" setting
+
+ BOOL bShareHeader = IS_SHARE_HEADER(rCoreSet);
+ if ( bShareHeader )
+ AddTabPage( 1, ScRightHeaderEditPage::Create, NULL );
+ else
+ AddTabPage( 1, ScLeftHeaderEditPage::Create, NULL );
+
+ BOOL bShareFooter = IS_SHARE_FOOTER(rCoreSet);
+ if ( bShareFooter )
+ AddTabPage( 2, ScRightFooterEditPage::Create, NULL );
+ else
+ AddTabPage( 2, ScLeftFooterEditPage::Create, NULL );
+ }
+ }
+ break;
+ }
+
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+
+__EXPORT ScHFEditDlg::~ScHFEditDlg()
+{
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScHFEditDlg::PageCreated( USHORT nId, SfxTabPage& rPage )
+{
+ // kann ja nur ne ScHFEditPage sein...
+
+ ((ScHFEditPage&)rPage).SetNumType(eNumType);
+}
+
+
+
+
diff --git a/sc/source/ui/pagedlg/hfedtdlg.hrc b/sc/source/ui/pagedlg/hfedtdlg.hrc
new file mode 100644
index 000000000000..9f7efc1c5bbd
--- /dev/null
+++ b/sc/source/ui/pagedlg/hfedtdlg.hrc
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * $RCSfile: hfedtdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+
+//#define RID_SCPAGE_HFEDIT 256
+//#define RID_SCDLG_HFEDIT 256
+
+#define FT_LEFT 1
+#define FT_CENTER 2
+#define FT_RIGHT 3
+#define FT_INFO 4
+#define WND_LEFT 1
+#define WND_CENTER 2
+#define WND_RIGHT 3
+#define BTN_TEXT 1
+#define BTN_PAGE 2
+#define BTN_PAGES 3
+#define BTN_DATE 4
+#define BTN_TIME 5
+#define BTN_FILE 6
+#define BTN_TABLE 7
+
+#define RID_POPUP_FCOMMAND 10
+#define FILE_COMMAND_TITEL 11
+#define FILE_COMMAND_FILENAME 12
+#define FILE_COMMAND_PATH 13
+
+
+#define GB_INFO 1
diff --git a/sc/source/ui/pagedlg/hfedtdlg.src b/sc/source/ui/pagedlg/hfedtdlg.src
new file mode 100644
index 000000000000..37a7217e4d6e
--- /dev/null
+++ b/sc/source/ui/pagedlg/hfedtdlg.src
@@ -0,0 +1,1401 @@
+/*************************************************************************
+ *
+ * $RCSfile: hfedtdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+/* StarView ressource file */
+
+#include "hfedtdlg.hrc"
+#define HFEDIT_DLGTITLE \
+/* ### ACHTUNG: Neuer Text in Resource? Kopf-/Fußzeilen : Kopf-/Fu˜zeilen */\
+ Text = "Kopf-/Fußzeilen" ; \
+ Text [ ENGLISH ] = "Header/Footer" ; \
+ Text [ norwegian ] = "Header/Footer" ; \
+ Text [ italian ] = "Intestazione/piè di pagina" ; \
+ Text [ portuguese_brazilian ] = "Cabeþalho/RodapÚ" ; \
+ Text [ portuguese ] = "Cabeçalhos/Rodapés" ; \
+ Text [ finnish ] = "Ylä/alateksti" ; \
+ Text [ danish ] = "Sidehoved/Sidefod" ; \
+ Text [ french ] = "En-tête/Pied de page" ; \
+ Text [ swedish ] = "Sidhuvud/sidfot" ; \
+ Text [ dutch ] = "Kop-/voettekst" ; \
+ Text [ spanish ] = "Encabezam./Pie de página" ; \
+ Text [ english_us ] = "Headers/Footers" ; \
+ Text[ chinese_simplified ] = "ҳü/Ò³½Å"; \
+ Text[ russian ] = "Âåðõíèé/Íèæíèé êîëîíòèòóëû"; \
+ Text[ polish ] = "Nag³ówki-/Stopki"; \
+ Text[ japanese ] = "ͯÀÞ/̯À"; \
+ Text[ chinese_traditional ] = "­¶­º/­¶§À"; \
+ Text[ arabic ] = "ÑÄæÓ/ÊÐííáÇÊ ÇáÕÝÍÇÊ"; \
+ Text[ dutch ] = "Kop-/voettekst"; \
+ Text[ chinese_simplified ] = "ҳü/Ò³½Å"; \
+ Text[ greek ] = "Êåöáëßäåò/ÕðïóÝëéäá"; \
+ Text[ korean ] = "¸Ó¸®±Û/¹Ù´Ú±Û"; \
+ Text[ turkish ] = "Üst/Altbilgi"; \
+ Text[ language_user1 ] = " ";
+
+#define HEADER \
+ Text = "Kopfzeile" ; \
+ Text [ ENGLISH ] = "Header" ; \
+ Text [ norwegian ] = "Header" ; \
+ Text [ italian ] = "Riga d'intestazione" ; \
+ Text [ portuguese_brazilian ] = "Cabeçalho" ; \
+ Text [ portuguese ] = "Cabeçalho" ; \
+ Text [ finnish ] = "Yläteksti" ; \
+ Text [ danish ] = "Sidehoved" ; \
+ Text [ french ] = "En-tête" ; \
+ Text [ swedish ] = "Sidhuvud" ; \
+ Text [ dutch ] = "Koptekst" ; \
+ Text [ spanish ] = "Encabezamiento" ; \
+ Text [ english_us ] = "Header" ; \
+ Text[ chinese_simplified ] = "ҳü"; \
+ Text[ russian ] = "Âåðõíèé êîëîíòèòóë"; \
+ Text[ polish ] = "Nag³ówek"; \
+ Text[ japanese ] = "ͯÀÞ"; \
+ Text[ chinese_traditional ] = "­¶­º"; \
+ Text[ arabic ] = "ÑÃÓ ÇáÕÝÍÉ"; \
+ Text[ dutch ] = "Koptekst"; \
+ Text[ chinese_simplified ] = "ҳü"; \
+ Text[ greek ] = "Êåöáëßäá"; \
+ Text[ korean ] = "¸Ó¸®±Û"; \
+ Text[ turkish ] = "Üstbilgi"; \
+ Text[ language_user1 ] = " ";
+
+#define FOOTER \
+/* ### ACHTUNG: Neuer Text in Resource? Fußzeile : Fu˜zeile */\
+ Text = "Fußzeile" ; \
+ Text [ ENGLISH ] = "Footer" ; \
+ Text [ norwegian ] = "Footer" ; \
+ Text [ italian ] = "Piè di pagina" ; \
+ Text [ portuguese_brazilian ] = "RodapÚ" ; \
+ Text [ portuguese ] = "Rodapé" ; \
+ Text [ finnish ] = "Alateksti" ; \
+ Text [ danish ] = "Sidefod" ; \
+ Text [ french ] = "Pied de page" ; \
+ Text [ swedish ] = "Sidfot" ; \
+ Text [ dutch ] = "Voettekst" ; \
+ Text [ spanish ] = "Pie de página" ; \
+ Text [ english_us ] = "Footer" ; \
+ Text[ chinese_simplified ] = "Ò³½Å"; \
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë"; \
+ Text[ polish ] = "Stopka"; \
+ Text[ japanese ] = "̯À"; \
+ Text[ chinese_traditional ] = "­¶§À"; \
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ"; \
+ Text[ dutch ] = "Voettekst"; \
+ Text[ chinese_simplified ] = "Ò³½Å"; \
+ Text[ greek ] = "ÕðïóÝëéäï"; \
+ Text[ korean ] = "¹Ù´Ú±Û"; \
+ Text[ turkish ] = "Altbilgi"; \
+ Text[ language_user1 ] = " ";
+
+#define HEADER_RIGHT \
+ Text = "Kopfzeile (rechts)" ; \
+ Text [ ENGLISH ] = "Header (right)" ; \
+ Text [ norwegian ] = "Header (right)" ; \
+ Text [ italian ] = "Riga d'intestazione (destra)" ; \
+ Text [ portuguese_brazilian ] = "Cabeçalho (direito)" ; \
+ Text [ portuguese ] = "Cabeçalho (direito)" ; \
+ Text [ finnish ] = "Yläteksti (oikea)" ; \
+ Text [ danish ] = "Sidehoved (højre)" ; \
+ Text [ french ] = "En-tête (droit)" ; \
+ Text [ swedish ] = "Sidhuvud (höger)" ; \
+ Text [ dutch ] = "Koptekst (rechts)" ; \
+ Text [ spanish ] = "Encabezam. (der.)" ; \
+ Text [ english_us ] = "Header (right)" ; \
+ Text[ chinese_simplified ] = "ҳü(ÓÒ)"; \
+ Text[ russian ] = "Âåðõíèé êîëîíòèòóë (ñïðàâà)"; \
+ Text[ polish ] = "Wiersz nag³ówka (z prawej)"; \
+ Text[ japanese ] = "ͯÀÞi‰Ej"; \
+ Text[ chinese_traditional ] = "­¶­º(¥k)"; \
+ Text[ arabic ] = "ÑÃÓ ÇáÕÝÍÉ (íãíä)"; \
+ Text[ dutch ] = "Koptekst (rechts)"; \
+ Text[ chinese_simplified ] = "ҳü(ÓÒ)"; \
+ Text[ greek ] = "Êåöáëßäá (äåîéÜ)"; \
+ Text[ korean ] = "¸Ó¸®±Û(¿À¸¥ÂÊ)"; \
+ Text[ turkish ] = "Altbilgi (sað)"; \
+ Text[ language_user1 ] = " ";
+
+#define HEADER_LEFT \
+ Text = "Kopfzeile (links)" ; \
+ Text [ ENGLISH ] = "Header (left)" ; \
+ Text [ norwegian ] = "Header (left)" ; \
+ Text [ italian ] = "Riga d'intestazione (sinistra)" ; \
+ Text [ portuguese_brazilian ] = "Cabeçalho (esquerdo)" ; \
+ Text [ portuguese ] = "Cabeçalho (esquerdo)" ; \
+ Text [ finnish ] = "Yläteksti (vasen)" ; \
+ Text [ danish ] = "Sidehoved (venstre)" ; \
+ Text [ french ] = "En-tête (à gauche)" ; \
+ Text [ swedish ] = "Sidhuvud (vänster)" ; \
+ Text [ dutch ] = "Koptekst (links)" ; \
+ Text [ spanish ] = "Encabezam. (izq.)" ; \
+ Text [ english_us ] = "Header (left)" ; \
+ Text[ chinese_simplified ] = "ҳü(×ó)"; \
+ Text[ russian ] = "Âåðõíèé êîëîíòèòóë (ñëåâà)"; \
+ Text[ polish ] = "Wiersz nag³ówka (z lewej)"; \
+ Text[ japanese ] = "ͯÀÞi¶j"; \
+ Text[ chinese_traditional ] = "­¶­º(¥ª)"; \
+ Text[ arabic ] = "ÑÃÓ ÇáÕÝÍÉ (íÓÇÑ)"; \
+ Text[ dutch ] = "Koptekst (links)"; \
+ Text[ chinese_simplified ] = "ҳü(×ó)"; \
+ Text[ greek ] = "Êåöáëßäá (áñéóôåñÜ)"; \
+ Text[ korean ] = "¸Ó¸®±Û(¿ÞÂÊ)"; \
+ Text[ turkish ] = "Üstbilgi (sol)"; \
+ Text[ language_user1 ] = " ";
+
+#define FOOTER_RIGHT \
+/* ### ACHTUNG: Neuer Text in Resource? Fußzeile (rechts) : Fu˜zeile (rechts) */\
+ Text = "Fußzeile (rechts)" ; \
+ Text [ ENGLISH ] = "Footer (right)" ; \
+ Text [ norwegian ] = "Footer (right)" ; \
+ Text [ italian ] = "Piè di pagina (destra)" ; \
+ Text [ portuguese_brazilian ] = "RodapÚ (direito)" ; \
+ Text [ portuguese ] = "Rodapé (direito)" ; \
+ Text [ finnish ] = "Alateksti (oikea)" ; \
+ Text [ danish ] = "Sidefod (højre)" ; \
+ Text [ french ] = "Pied de page (droit)" ; \
+ Text [ swedish ] = "Sidfot (höger)" ; \
+ Text [ dutch ] = "Voettekst (rechts)" ; \
+ Text [ spanish ] = "Pie de página (derecha)" ; \
+ Text [ english_us ] = "Footer (right)" ; \
+ Text[ chinese_simplified ] = "Ò³½Å(ÓÒ)"; \
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë (ñïðàâà)"; \
+ Text[ polish ] = "Wiersz stopki (z prawej)"; \
+ Text[ japanese ] = "̯Ài‰Ej"; \
+ Text[ chinese_traditional ] = "­¶§À(¥k)"; \
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ (íãíä)"; \
+ Text[ dutch ] = "Voettekst (rechts)"; \
+ Text[ chinese_simplified ] = "Ò³½Å(ÓÒ)"; \
+ Text[ greek ] = "ÕðïóÝëéäï (äåîéÜ)"; \
+ Text[ korean ] = "¹Ù´Ú±Û (¿À¸¥ÂÊ)"; \
+ Text[ turkish ] = "Altbilgi (sað)"; \
+ Text[ language_user1 ] = " ";
+
+#define FOOTER_LEFT \
+/* ### ACHTUNG: Neuer Text in Resource? Fußzeile (links) : Fu˜zeile (links) */\
+ Text = "Fußzeile (links)" ; \
+ Text [ ENGLISH ] = "Footer (left)" ; \
+ Text [ norwegian ] = "Footer (left)" ; \
+ Text [ italian ] = "Piè di pagina (sinistra)" ; \
+ Text [ portuguese_brazilian ] = "RodapÚ (esquerdo)" ; \
+ Text [ portuguese ] = "Rodapé (esquerdo)" ; \
+ Text [ finnish ] = "Yläteksti (vasen)" ; \
+ Text [ danish ] = "Sidefod (venstre)" ; \
+ Text [ french ] = "Pied de page (gauche)" ; \
+ Text [ swedish ] = "Sidfot (vänster)" ; \
+ Text [ dutch ] = "Voettekst (links)" ; \
+ Text [ spanish ] = "Pie de página (izquierda)" ; \
+ Text [ english_us ] = "Footer (left)" ; \
+ Text[ chinese_simplified ] = "Ò³½Å(×ó)"; \
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë (ñëåâà)"; \
+ Text[ polish ] = "Wiersz stopki (z lewej)"; \
+ Text[ japanese ] = "̯À (¶j"; \
+ Text[ chinese_traditional ] = "­¶§À(¥ª)"; \
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ (íÓÇÑ)"; \
+ Text[ dutch ] = "Voettekst (links)"; \
+ Text[ chinese_simplified ] = "Ò³½Å(×ó)"; \
+ Text[ greek ] = "ÕðïóÝëéäï (áñéóôåñÜ)"; \
+ Text[ korean ] = "¹Ù´Ú±Û (¿ÞÂÊ)"; \
+ Text[ turkish ] = "Altbilgi (sol)"; \
+ Text[ language_user1 ] = " ";
+
+ //------------------------------------------------------------------------
+ // Bearbeiten vom Seitendialog aus aufgerufen
+ //------------------------------------------------------------------------
+TabDialog RID_SCDLG_HFED_HEADER
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Text = "Kopfzeilen" ;
+ Text [ ENGLISH ] = "Header" ;
+ Text [ norwegian ] = "Header" ;
+ Text [ italian ] = "Intestazioni" ;
+ Text [ portuguese_brazilian ] = "Cabeçalho" ;
+ Text [ portuguese ] = "Cabeçalhos" ;
+ Text [ finnish ] = "Yläteksti" ;
+ Text [ danish ] = "Sidehoved" ;
+ Text [ french ] = "En-têtes" ;
+ Text [ swedish ] = "Sidhuvuden" ;
+ Text [ dutch ] = "Kopteksten" ;
+ Text [ spanish ] = "Encabezamientos" ;
+ Text [ english_us ] = "Headers" ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ HEADER_RIGHT
+ PageResID = HID_SCPAGE_HFED_HR ;
+ };
+ PageItem
+ {
+ Identifier = 2 ;
+ HEADER_LEFT
+ PageResID = HID_SCPAGE_HFED_HL ;
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "ҳü";
+ Text[ russian ] = "Âåðõíèé êîëîíòèòóë";
+ Text[ polish ] = "Nag³ówki";
+ Text[ japanese ] = "ͯÀÞ";
+ Text[ chinese_traditional ] = "­¶­º";
+ Text[ arabic ] = "ÑÄæÓ ÇáÕÝÍÇÊ";
+ Text[ dutch ] = "Kopteksten";
+ Text[ chinese_simplified ] = "ҳü";
+ Text[ greek ] = "Êåöáëßäåò";
+ Text[ korean ] = "¸Ó¸®±Û";
+ Text[ turkish ] = "Üstbilgi";
+ Text[ language_user1 ] = " ";
+};
+TabDialog RID_SCDLG_HFED_FOOTER
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Fußzeilen : Fu˜zeilen */
+ Text = "Fußzeilen" ;
+ Text [ ENGLISH ] = "Footer" ;
+ Text [ norwegian ] = "Footer" ;
+ Text [ italian ] = "Piè di pagina" ;
+ Text [ portuguese_brazilian ] = "Rodapé" ;
+ Text [ portuguese ] = "Rodapé" ;
+ Text [ finnish ] = "Alateksti" ;
+ Text [ danish ] = "Sidefod" ;
+ Text [ french ] = "Pieds de pages" ;
+ Text [ swedish ] = "Sidfötter" ;
+ Text [ dutch ] = "Voetteksten" ;
+ Text [ spanish ] = "Pies de página" ;
+ Text [ english_us ] = "Footers" ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ FOOTER_RIGHT
+ PageResID = HID_SCPAGE_HFED_FR ;
+ };
+ PageItem
+ {
+ Identifier = 2 ;
+ FOOTER_LEFT
+ PageResID = HID_SCPAGE_HFED_FL ;
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "Ò³½Å";
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë";
+ Text[ polish ] = "Stopki";
+ Text[ japanese ] = "̯À";
+ Text[ chinese_traditional ] = "­¶§À";
+ Text[ arabic ] = "ÊÐííáÇÊ ÇáÕÝÍÉ";
+ Text[ dutch ] = "Voetteksten";
+ Text[ chinese_simplified ] = "Ò³½Å";
+ Text[ greek ] = "ÕðïóÝëéäá";
+ Text[ korean ] = "¹Ù´Ú±Û";
+ Text[ turkish ] = "Altbilgi";
+ Text[ language_user1 ] = " ";
+};
+ //------------------------------------------------------------------------
+ // Bearbeiten/Kopf-Fusszeile:
+ //------------------------------------------------------------------------
+TabDialog RID_SCDLG_HFEDIT_ALL
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ HFEDIT_DLGTITLE
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ HEADER_RIGHT
+ PageResID = HID_SCPAGE_HFED_HR ;
+ };
+ PageItem
+ {
+ Identifier = 2 ;
+ HEADER_LEFT
+ PageResID = HID_SCPAGE_HFED_HL ;
+ };
+ PageItem
+ {
+ Identifier = 3 ;
+ FOOTER_RIGHT
+ PageResID = HID_SCPAGE_HFED_FR ;
+ };
+ PageItem
+ {
+ Identifier = 4 ;
+ FOOTER_LEFT
+ PageResID = HID_SCPAGE_HFED_FL ;
+ };
+ };
+ };
+};
+TabDialog RID_SCDLG_HFEDIT_SHDR
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ HFEDIT_DLGTITLE
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ HEADER
+ PageResID = HID_SCPAGE_HFED_HR ;
+ };
+ PageItem
+ {
+ Identifier = 2 ;
+ FOOTER_RIGHT
+ PageResID = HID_SCPAGE_HFED_FR ;
+ };
+ PageItem
+ {
+ Identifier = 3 ;
+ FOOTER_LEFT
+ PageResID = HID_SCPAGE_HFED_FL ;
+ };
+ };
+ };
+};
+TabDialog RID_SCDLG_HFEDIT_SFTR
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ HFEDIT_DLGTITLE
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ HEADER_RIGHT
+ PageResID = HID_SCPAGE_HFED_HR ;
+ };
+ PageItem
+ {
+ Identifier = 2 ;
+ HEADER_LEFT
+ PageResID = HID_SCPAGE_HFED_HL ;
+ };
+ PageItem
+ {
+ Identifier = 3 ;
+ FOOTER
+ PageResID = HID_SCPAGE_HFED_FR ;
+ };
+ };
+ };
+};
+TabDialog RID_SCDLG_HFEDIT
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ HFEDIT_DLGTITLE
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ HEADER
+ PageResID = HID_SCPAGE_HFED_HR ;
+ };
+ PageItem
+ {
+ Identifier = 2 ;
+ FOOTER
+ PageResID = HID_SCPAGE_HFED_FR ;
+ };
+ };
+ };
+};
+TabDialog RID_SCDLG_HFEDIT_HEADER
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ HFEDIT_DLGTITLE
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ HEADER_RIGHT
+ PageResID = HID_SCPAGE_HFED_HR ;
+ };
+ PageItem
+ {
+ Identifier = 2 ;
+ HEADER_LEFT
+ PageResID = HID_SCPAGE_HFED_HL ;
+ };
+ };
+ };
+};
+TabDialog RID_SCDLG_HFEDIT_FOOTER
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ HFEDIT_DLGTITLE
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ FOOTER_RIGHT
+ PageResID = HID_SCPAGE_HFED_FR ;
+ };
+ PageItem
+ {
+ Identifier = 2 ;
+ FOOTER_LEFT
+ PageResID = HID_SCPAGE_HFED_FL ;
+ };
+ };
+ };
+};
+TabDialog RID_SCDLG_HFEDIT_RIGHTHEADER
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ HFEDIT_DLGTITLE
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ HEADER_RIGHT
+ PageResID = HID_SCPAGE_HFED_HR ;
+ };
+ };
+ };
+};
+TabDialog RID_SCDLG_HFEDIT_LEFTHEADER
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ HFEDIT_DLGTITLE
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ HEADER_LEFT
+ PageResID = HID_SCPAGE_HFED_HL ;
+ };
+ };
+ };
+};
+TabDialog RID_SCDLG_HFEDIT_RIGHTFOOTER
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ HFEDIT_DLGTITLE
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ FOOTER_RIGHT
+ PageResID = HID_SCPAGE_HFED_FR ;
+ };
+ };
+ };
+};
+TabDialog RID_SCDLG_HFEDIT_LEFTFOOTER
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 270 , 140 ) ;
+ Moveable = TRUE ;
+ // Closeable = TRUE;
+ HFEDIT_DLGTITLE
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = 1 ;
+ FOOTER_LEFT
+ PageResID = HID_SCPAGE_HFED_FL ;
+ };
+ };
+ };
+};
+ //------------------------------------------------------------------------
+ // ScTpHFEdit
+ //------------------------------------------------------------------------
+TabPage RID_HFBASE
+{
+ Hide = TRUE ;
+ HelpId = HID_SCPAGE_HFEDIT ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ FixedText FT_LEFT
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 75 , 10 ) ;
+ Text = "~Linker Bereich" ;
+ Text [ ENGLISH ] = "~Left Area" ;
+ Text [ norwegian ] = "~Left Area" ;
+ Text [ italian ] = "Area ~sinistra" ;
+ Text [ portuguese_brazilian ] = "~Área Esquerda" ;
+ Text [ portuguese ] = "~Área esquerda" ;
+ Text [ finnish ] = "~Vasen alue" ;
+ Text [ danish ] = "Venstre område" ;
+ Text [ french ] = "~Plage gauche" ;
+ Text [ swedish ] = "~Vänster område" ;
+ Text [ dutch ] = "~Linker bereik" ;
+ Text [ spanish ] = "Área ~izquierda" ;
+ Text [ english_us ] = "~Left Area" ;
+ Text[ chinese_simplified ] = "×ó±ßÇøÓò(~L)";
+ Text[ russian ] = "Ëåâàÿ îáëàñòü";
+ Text[ polish ] = "Lewy obszar";
+ Text[ japanese ] = "¶‚͈̔Í(~L)";
+ Text[ chinese_traditional ] = "¥ª°Ï°ì(~L)";
+ Text[ arabic ] = "ãäØÞÉ íÓÑì";
+ Text[ dutch ] = "~Linker bereik";
+ Text[ chinese_simplified ] = "×ó±ßÇøÓò(~L)";
+ Text[ greek ] = "ÁñéóôåñÞ ðåñéï÷Þ";
+ Text[ korean ] = "¿ÞÂÊ ¿µ¿ª(~L)";
+ Text[ turkish ] = "~Sol bölüm";
+ Text[ language_user1 ] = " ";
+ };
+ /* "Control" braucht eigene HelpId, darum in der Ableitung:
+ Control WND_LEFT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+*/
+ FixedText FT_CENTER
+ {
+ Pos = MAP_APPFONT ( 90 , 6 ) ;
+ Size = MAP_APPFONT ( 75 , 10 ) ;
+ Text = "~Mittlerer Bereich" ;
+ Text [ ENGLISH ] = "~Center Area" ;
+ Text [ norwegian ] = "~Center Area" ;
+ Text [ italian ] = "Area ~centrale" ;
+ Text [ portuguese_brazilian ] = "~Área Central" ;
+ Text [ portuguese ] = "~Área central" ;
+ Text [ finnish ] = "~Keskialue" ;
+ Text [ danish ] = "Midterområde" ;
+ Text [ french ] = "Plage centrale" ;
+ Text [ swedish ] = "~Mittområde" ;
+ Text [ dutch ] = "~Middelste bereik" ;
+ Text [ spanish ] = "Área ~central" ;
+ Text [ english_us ] = "~Center Area" ;
+ Text[ chinese_simplified ] = "ÖмäÇøÓò(~C)";
+ Text[ russian ] = "Öåíòðàëüíàÿ îáëàñòü";
+ Text[ polish ] = "Œrodkowy obszar";
+ Text[ japanese ] = "’†‰›‚͈̔Í(~C)";
+ Text[ chinese_traditional ] = "¤¤¶¡°Ï°ì(~C)";
+ Text[ arabic ] = "ãäØÞÉ æÓØì";
+ Text[ dutch ] = "~Middelste bereik";
+ Text[ chinese_simplified ] = "ÖмäÇøÓò(~C)";
+ Text[ greek ] = "ÊåíôñéêÞ ðåñéï÷Þ";
+ Text[ korean ] = "Á᫐ ¿µ¿ª(~C)";
+ Text[ turkish ] = "~Orta bölüm";
+ Text[ language_user1 ] = " ";
+ };
+ /* "Control" braucht eigene HelpId, darum in der Ableitung:
+ Control WND_CENTER
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+*/
+ FixedText FT_RIGHT
+ {
+ Pos = MAP_APPFONT ( 174 , 6 ) ;
+ Size = MAP_APPFONT ( 75 , 10 ) ;
+ Text = "~Rechter Bereich" ;
+ Text [ ENGLISH ] = "~Right Area" ;
+ Text [ norwegian ] = "~Right Area" ;
+ Text [ italian ] = "Area ~destra" ;
+ Text [ portuguese_brazilian ] = "~Área Direita" ;
+ Text [ portuguese ] = "~Área direita" ;
+ Text [ finnish ] = "~Oikea alue" ;
+ Text [ danish ] = "Højre område" ;
+ Text [ french ] = "Plage ~droite" ;
+ Text [ swedish ] = "~Höger område" ;
+ Text [ dutch ] = "~Rechter bereik" ;
+ Text [ spanish ] = "Área ~derecha" ;
+ Text [ english_us ] = "~Right Area" ;
+ Text[ chinese_simplified ] = "ÓÒ±ßÇøÓò(~R)";
+ Text[ russian ] = "Ïðàâàÿ îáëàñòü";
+ Text[ polish ] = "Prawy obszar";
+ Text[ japanese ] = "‰E‚͈̔Í(~R)";
+ Text[ chinese_traditional ] = "¥k°Ï°ì(~R)";
+ Text[ arabic ] = "ãäØÞÉ íãäì";
+ Text[ dutch ] = "~Rechter bereik";
+ Text[ chinese_simplified ] = "ÓÒ±ßÇøÓò(~R)";
+ Text[ greek ] = "Ðåñéï÷Þ äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ ¿µ¿ª(~R)";
+ Text[ turkish ] = "~Sað bölüm";
+ Text[ language_user1 ] = " ";
+ };
+ /* "Control" braucht eigene HelpId, darum in der Ableitung:
+ Control WND_RIGHT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 174 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+*/
+ ImageButton BTN_TEXT
+ {
+ HelpId = HID_SC_HF_TEXT ;
+ Pos = MAP_APPFONT ( 66 , 78 ) ;
+ Size = MAP_APPFONT ( 15 , 15 ) ;
+ TabStop = TRUE ;
+ QuickHelpText = "Textattribute" ;
+ QuickHelpText [ ENGLISH ] = "Text Attributes" ;
+ QuickHelpText [ norwegian ] = "Text Attributes" ;
+ QuickHelpText [ italian ] = "Attributi di testo" ;
+ QuickHelpText [ portuguese_brazilian ] = "Atributos de Texto" ;
+ QuickHelpText [ portuguese ] = "Atributos de texto" ;
+ QuickHelpText [ finnish ] = "Tekstimääritteet" ;
+ QuickHelpText [ danish ] = "Tekstattributter" ;
+ QuickHelpText [ french ] = "Attributs de texte" ;
+ QuickHelpText [ swedish ] = "Textattribut" ;
+ QuickHelpText [ dutch ] = "Tekstattributen" ;
+ QuickHelpText [ spanish ] = "Atributos de texto" ;
+ QuickHelpText [ english_us ] = "Text Attributes" ;
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap { File = "text.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ };
+ /* ### ACHTUNG: Neuer Text in Resource? Ändern der Textattribute der aktuellen Selektion : Žndern der Textattribute der aktuellen Selektion */
+ QuickHelpText[ russian ] = "Àòðèáóòû òåêñòà";
+ QuickHelpText[ polish ] = "Atrybuty tekstu";
+ QuickHelpText[ japanese ] = "÷½Ä‚Ì‘®«";
+ QuickHelpText[ chinese_simplified ] = "ÕýÎÄÊôÐÔ";
+ QuickHelpText[ chinese_traditional ] = "¤å¦rÄÝ©Ê";
+ QuickHelpText[ arabic ] = "ÓãÇÊ ÇáäÕ";
+ QuickHelpText[ dutch ] = "Tekstattributen";
+ QuickHelpText[ chinese_simplified ] = "ÕýÎÄÊôÐÔ";
+ QuickHelpText[ greek ] = "Éäéüôçôåò êåéìÝíïõ";
+ QuickHelpText[ korean ] = "Text Attributes";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageButton BTN_FILE
+ {
+ HelpId = HID_SC_HF_FILE ;
+ Pos = MAP_APPFONT ( 89 , 78 ) ;
+ Size = MAP_APPFONT ( 15 , 15 ) ;
+ TabStop = TRUE ;
+ QuickHelpText = "Dateiname" ;
+ QuickHelpText [ ENGLISH ] = "Filename" ;
+ QuickHelpText [ norwegian ] = "Filename" ;
+ QuickHelpText [ italian ] = "Nome del file" ;
+ QuickHelpText [ portuguese_brazilian ] = "Nome do Arquivo" ;
+ QuickHelpText [ portuguese ] = "Nome do ficheiro" ;
+ QuickHelpText [ finnish ] = "Tiedostonimi" ;
+ QuickHelpText [ danish ] = "Filnavn" ;
+ QuickHelpText [ french ] = "Nom de fichier" ;
+ QuickHelpText [ swedish ] = "Filnamn" ;
+ QuickHelpText [ dutch ] = "Bestandsnaam" ;
+ QuickHelpText [ spanish ] = "Nombre de archivo" ;
+ QuickHelpText [ english_us ] = "File name" ;
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap { File = "file.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ };
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen des Dateinames des aktuellen Dokumentes : Einf³gen des Dateinames des aktuellen Dokumentes */
+ QuickHelpText[ russian ] = "Èìÿ ôàéëà";
+ QuickHelpText[ polish ] = "Nazwa pliku";
+ QuickHelpText[ japanese ] = "̧²Ù–¼";
+ QuickHelpText[ chinese_simplified ] = "ÎļþÃû";
+ QuickHelpText[ chinese_traditional ] = "ÀɮצWºÙ";
+ QuickHelpText[ arabic ] = "ÇÓã ÇáãáÝ";
+ QuickHelpText[ dutch ] = "Bestandsnaam";
+ QuickHelpText[ chinese_simplified ] = "ÎļþÃû";
+ QuickHelpText[ greek ] = "¼íïìá áñ÷åßïõ";
+ QuickHelpText[ korean ] = "File name";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+
+ Menu RID_POPUP_FCOMMAND
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = FILE_COMMAND_TITEL ;
+ HelpID = HID_FCOMMAND_TITEL ;
+ Text = "Titel" ;
+ Text [ english ] = "Titel" ;
+ Text[ italian ] = "Titolo";
+ Text[ portuguese_brazilian ] = "Titel";
+ Text[ portuguese ] = "Título";
+ Text[ danish ] = "Titel";
+ Text[ french ] = "Titre";
+ Text[ swedish ] = "Titel";
+ Text[ dutch ] = "Titel";
+ Text[ spanish ] = "Título";
+ Text[ english_us ] = "Title";
+ Text[ chinese_simplified ] = "±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê";
+ Text[ polish ] = "Tytu³";
+ Text[ japanese ] = "À²ÄÙ";
+ Text[ chinese_traditional ] = "¼ÐÃD";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ dutch ] = "Titel";
+ Text[ chinese_simplified ] = "±êÌâ";
+ Text[ greek ] = "Ôßôëïò";
+ Text[ korean ] = "Á¦¸ñ";
+ Text[ turkish ] = "Baþlýk";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FILE_COMMAND_FILENAME;
+ HelpID = HID_FCOMMAND_FILENAME;
+ Text = "Dateiname" ;
+ Text [ english ] = "Filename" ;
+ RadioCheck = TRUE ;
+ Text[ italian ] = "Nome file";
+ Text[ portuguese_brazilian ] = "Dateiname";
+ Text[ portuguese ] = "Nome do ficheiro";
+ Text[ danish ] = "Filnavn";
+ Text[ french ] = "Nom de fichier";
+ Text[ swedish ] = "Filnamn";
+ Text[ dutch ] = "Bestandsnaam";
+ Text[ spanish ] = "Nombre del archivo";
+ Text[ english_us ] = "File Name";
+ Text[ chinese_simplified ] = "ÎļþÃû";
+ Text[ russian ] = "Èìÿ ôàéëà";
+ Text[ polish ] = "Nazwa pliku";
+ Text[ japanese ] = "̧²Ù–¼";
+ Text[ chinese_traditional ] = "ÀɮצWºÙ";
+ Text[ arabic ] = "ÇÓã ÇáãáÝ";
+ Text[ dutch ] = "Bestandsnaam";
+ Text[ chinese_simplified ] = "ÎļþÃû";
+ Text[ greek ] = "¼íïìá áñ÷åßïõ";
+ Text[ korean ] = "ÆÄÀÏ À̸§";
+ Text[ turkish ] = "Dosya adý";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FILE_COMMAND_PATH;
+ HelpID = HID_FCOMMAND_PATH;
+ Text = "Pfad/Dateiname" ;
+ Text [ english ] = "Path/Filename" ;
+ RadioCheck = TRUE ;
+ Text[ italian ] = "Nome di percorso/file";
+ Text[ portuguese_brazilian ] = "Pfad/Dateiname";
+ Text[ portuguese ] = "Atalho/Nome do ficheiro";
+ Text[ danish ] = "Sti/Filnavn";
+ Text[ french ] = "Chemin/Nom de fichier";
+ Text[ swedish ] = "Sökväg/Filnamn";
+ Text[ dutch ] = "Pad/Bestandsnaam";
+ Text[ spanish ] = "Ruta/Nombre de archivo";
+ Text[ english_us ] = "Path/File Name";
+ Text[ chinese_simplified ] = "·¾¶/ÎļþÃû";
+ Text[ russian ] = "Èìÿ ïóòè/ôàéëà";
+ Text[ polish ] = "Œcie¿ka/Nazwa pliku";
+ Text[ japanese ] = "Êß½/̧²Ù–¼";
+ Text[ chinese_traditional ] = "¸ô®|/ÀɮצWºÙ";
+ Text[ arabic ] = "ÇáãÓÇÑ/ÇÓã ÇáãáÝ";
+ Text[ dutch ] = "Pad/Bestandsnaam";
+ Text[ chinese_simplified ] = "·¾¶/ÎļþÃû";
+ Text[ greek ] = "¼íïìá äéáäñïìÞò/ïíüìáôïò";
+ Text[ korean ] = "°æ·Î/ÆÄÀÏ ¸í";
+ Text[ turkish ] = "Yol/dosya adý";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+
+ ImageButton BTN_TABLE
+ {
+ HelpId = HID_SC_HF_TABLE ;
+ Pos = MAP_APPFONT ( 106 , 78 ) ;
+ Size = MAP_APPFONT ( 15 , 15 ) ;
+ TabStop = TRUE ;
+ QuickHelpText = "Tabellenname" ;
+ QuickHelpText [ ENGLISH ] = "Table Name" ;
+ QuickHelpText [ norwegian ] = "Table Name" ;
+ QuickHelpText [ italian ] = "Nome tabella" ;
+ QuickHelpText [ portuguese_brazilian ] = "Tabela Nome" ;
+ QuickHelpText [ portuguese ] = "Nome da folha" ;
+ QuickHelpText [ finnish ] = "Taulukon nimi" ;
+ QuickHelpText [ danish ] = "Arknavn" ;
+ QuickHelpText [ french ] = "Nom de feuille" ;
+ QuickHelpText [ swedish ] = "Tabellnamn" ;
+ QuickHelpText [ dutch ] = "Tabelnaam" ;
+ QuickHelpText [ spanish ] = "Nombre de la hoja" ;
+ QuickHelpText [ english_us ] = "Sheet Name" ;
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap { File = "table.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ };
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen des aktuellen Tabellennamens : Einf³gen des aktuellen Tabellennamens */
+ QuickHelpText[ russian ] = "Èìÿ ëèñòà";
+ QuickHelpText[ polish ] = "Nazwa tabeli";
+ QuickHelpText[ japanese ] = "•\\‚Ì–¼‘O";
+ QuickHelpText[ chinese_simplified ] = "±í¸ñÃû³Æ";
+ QuickHelpText[ chinese_traditional ] = "¤u§@ªí¦WºÙ";
+ QuickHelpText[ arabic ] = "ÇÓã ÇáÌÏæá";
+ QuickHelpText[ dutch ] = "Tabelnaam";
+ QuickHelpText[ chinese_simplified ] = "±í¸ñÃû³Æ";
+ QuickHelpText[ greek ] = "¼íïìá ðßíáêá";
+ QuickHelpText[ korean ] = "Sheet Name";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageButton BTN_PAGE
+ {
+ HelpId = HID_SC_HF_PAGE ;
+ Pos = MAP_APPFONT ( 126 , 78 ) ;
+ Size = MAP_APPFONT ( 15 , 15 ) ;
+ TabStop = TRUE ;
+ QuickHelpText = "Seite" ;
+ QuickHelpText [ ENGLISH ] = "Page" ;
+ QuickHelpText [ norwegian ] = "Page" ;
+ QuickHelpText [ italian ] = "Pagina" ;
+ QuickHelpText [ portuguese_brazilian ] = "Página" ;
+ QuickHelpText [ portuguese ] = "Página" ;
+ QuickHelpText [ finnish ] = "Sivu" ;
+ QuickHelpText [ danish ] = "Side" ;
+ QuickHelpText [ french ] = "Page" ;
+ QuickHelpText [ swedish ] = "Sida" ;
+ QuickHelpText [ dutch ] = "Pagina" ;
+ QuickHelpText [ spanish ] = "Página" ;
+ QuickHelpText [ english_us ] = "Page" ;
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap { File = "page.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ };
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen der aktuellen Seitenzahl : Einf³gen der aktuellen Seitenzahl */
+ QuickHelpText[ russian ] = "Ñòðàíèöà";
+ QuickHelpText[ polish ] = "Strona";
+ QuickHelpText[ japanese ] = "Íß°¼Þ";
+ QuickHelpText[ chinese_simplified ] = "Ò³Ãæ";
+ QuickHelpText[ chinese_traditional ] = "­¶";
+ QuickHelpText[ arabic ] = "ÕÝÍÉ";
+ QuickHelpText[ dutch ] = "Pagina";
+ QuickHelpText[ chinese_simplified ] = "Ò³Ãæ";
+ QuickHelpText[ greek ] = "Óåëßäá";
+ QuickHelpText[ korean ] = "Sheet";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageButton BTN_PAGES
+ {
+ HelpId = HID_SC_HF_PAGES ;
+ Pos = MAP_APPFONT ( 143 , 78 ) ;
+ Size = MAP_APPFONT ( 15 , 15 ) ;
+ TabStop = TRUE ;
+ QuickHelpText = "Seiten" ;
+ QuickHelpText [ ENGLISH ] = "Pages" ;
+ QuickHelpText [ norwegian ] = "Pages" ;
+ QuickHelpText [ italian ] = "Pagine" ;
+ QuickHelpText [ portuguese_brazilian ] = "Páginas" ;
+ QuickHelpText [ portuguese ] = "Páginas" ;
+ QuickHelpText [ finnish ] = "Sivumäärä" ;
+ QuickHelpText [ danish ] = "Sider" ;
+ QuickHelpText [ french ] = "Pages" ;
+ QuickHelpText [ swedish ] = "Sidor" ;
+ QuickHelpText [ dutch ] = "Pagina's" ;
+ QuickHelpText [ spanish ] = "Número de páginas" ;
+ QuickHelpText [ english_us ] = "Pages" ;
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap { File = "pages.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ };
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen der letzten Seitenzahl : Einf³gen der letzten Seitenzahl */
+ QuickHelpText[ russian ] = "Ñòðàíèöû";
+ QuickHelpText[ polish ] = "Strony";
+ QuickHelpText[ japanese ] = "Íß°¼Þ";
+ QuickHelpText[ chinese_simplified ] = "Ò³Êý";
+ QuickHelpText[ chinese_traditional ] = "­¶";
+ QuickHelpText[ arabic ] = "ÕÝÍÇÊ";
+ QuickHelpText[ dutch ] = "Pagina's";
+ QuickHelpText[ chinese_simplified ] = "Ò³Êý";
+ QuickHelpText[ greek ] = "Óåëßäåò";
+ QuickHelpText[ korean ] = "Number of Pages";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageButton BTN_DATE
+ {
+ HelpId = HID_SC_HF_DATE ;
+ Pos = MAP_APPFONT ( 163 , 78 ) ;
+ Size = MAP_APPFONT ( 15 , 15 ) ;
+ TabStop = TRUE ;
+ QuickHelpText = "Datum" ;
+ QuickHelpText [ ENGLISH ] = "Date" ;
+ QuickHelpText [ norwegian ] = "Date" ;
+ QuickHelpText [ italian ] = "Data" ;
+ QuickHelpText [ portuguese_brazilian ] = "Data" ;
+ QuickHelpText [ portuguese ] = "Data" ;
+ QuickHelpText [ finnish ] = "Päiväys" ;
+ QuickHelpText [ danish ] = "Dato" ;
+ QuickHelpText [ french ] = "Date" ;
+ QuickHelpText [ swedish ] = "Datum" ;
+ QuickHelpText [ dutch ] = "Datum" ;
+ QuickHelpText [ spanish ] = "Fecha" ;
+ QuickHelpText [ english_us ] = "Date" ;
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap { File = "date.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ };
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen des aktuellen Datums : Einf³gen des aktuellen Datums */
+ QuickHelpText[ russian ] = "Äàòà";
+ QuickHelpText[ polish ] = "Data";
+ QuickHelpText[ japanese ] = "“ú•t";
+ QuickHelpText[ chinese_simplified ] = "ÈÕÆÚ";
+ QuickHelpText[ chinese_traditional ] = "¤é´Á";
+ QuickHelpText[ arabic ] = "ÇáÊÇÑíÎ";
+ QuickHelpText[ dutch ] = "Datum";
+ QuickHelpText[ chinese_simplified ] = "ÈÕÆÚ";
+ QuickHelpText[ greek ] = "Çìåñïìçíßá";
+ QuickHelpText[ korean ] = "Date";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ ImageButton BTN_TIME
+ {
+ HelpId = HID_SC_HF_TIME ;
+ Pos = MAP_APPFONT ( 180 , 78 ) ;
+ Size = MAP_APPFONT ( 15 , 15 ) ;
+ TabStop = TRUE ;
+ QuickHelpText = "Uhrzeit" ;
+ QuickHelpText [ ENGLISH ] = "Time" ;
+ QuickHelpText [ norwegian ] = "Time" ;
+ QuickHelpText [ italian ] = "Ora" ;
+ QuickHelpText [ portuguese_brazilian ] = "Hora" ;
+ QuickHelpText [ portuguese ] = "Hora" ;
+ QuickHelpText [ finnish ] = "Aika" ;
+ QuickHelpText [ danish ] = "Klokkeslæt" ;
+ QuickHelpText [ french ] = "Heure" ;
+ QuickHelpText [ swedish ] = "Klockslag" ;
+ QuickHelpText [ dutch ] = "Tijd" ;
+ QuickHelpText [ spanish ] = "Hora" ;
+ QuickHelpText [ english_us ] = "Time" ;
+ ButtonImage = Image
+ {
+ ImageBitmap = Bitmap { File = "time.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ };
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen der aktuellen Uhrzeit : Einf³gen der aktuellen Uhrzeit */
+ QuickHelpText[ russian ] = "Âðåìÿ";
+ QuickHelpText[ polish ] = "Godzina";
+ QuickHelpText[ japanese ] = "Žž";
+ QuickHelpText[ chinese_simplified ] = "ʱ¼ä";
+ QuickHelpText[ chinese_traditional ] = "®É¶¡";
+ QuickHelpText[ arabic ] = "ÇáæÞÊ";
+ QuickHelpText[ dutch ] = "Tijd";
+ QuickHelpText[ chinese_simplified ] = "ʱ¼ä";
+ QuickHelpText[ greek ] = "¿ñá";
+ QuickHelpText[ korean ] = "Time";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ /* fuer DesignEd
+ BitmapButton 1 {
+ Pos = MAP_APPFONT( 66, 78 );
+ Size = MAP_APPFONT( 15, 15 );
+ TabStop = TRUE;
+ ButtonBitmap = Bitmap {
+ File = "e:\\text.bmp";
+ };
+ };
+ BitmapButton 2 {
+ Pos = MAP_APPFONT( 126, 78 );
+ Size = MAP_APPFONT( 15, 15 );
+ TabStop = TRUE;
+ ButtonBitmap = Bitmap {
+ File = "e:\\page.bmp";
+ };
+ };
+ BitmapButton 3 {
+ Pos = MAP_APPFONT( 143, 78 );
+ Size = MAP_APPFONT( 15, 15 );
+ TabStop = TRUE;
+ ButtonBitmap = Bitmap {
+ File = "e:\\pages.bmp";
+ };
+ };
+ BitmapButton 4 {
+ Pos = MAP_APPFONT( 163, 78 );
+ Size = MAP_APPFONT( 15, 15 );
+ TabStop = TRUE;
+ ButtonBitmap = Bitmap {
+ File = "e:\\date.bmp";
+ };
+ };
+ BitmapButton 5 {
+ Pos = MAP_APPFONT( 180, 78 );
+ Size = MAP_APPFONT( 15, 15 );
+ TabStop = TRUE;
+ ButtonBitmap = Bitmap {
+ File = "e:\\time.bmp";
+ };
+ };
+ BitmapButton 6 {
+ Pos = MAP_APPFONT( 89, 78 );
+ Size = MAP_APPFONT( 15, 15 );
+ TabStop = TRUE;
+ ButtonBitmap = Bitmap {
+ File = "e:\\file.bmp";
+ };
+ };
+ BitmapButton 7 {
+ Pos = MAP_APPFONT( 106, 78 );
+ Size = MAP_APPFONT( 15, 15 );
+ TabStop = TRUE;
+ ButtonBitmap = Bitmap {
+ File = "e:\\table.bmp";
+ };
+ };
+*/
+ FixedText FT_INFO
+ {
+ Pos = MAP_APPFONT ( 12 , 106 ) ;
+ Size = MAP_APPFONT ( 240 , 18 ) ;
+ WordBreak = TRUE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Benutzen Sie die Schaltflächen, um die Schriftart zu verändern oder Feldbefehle wie Datum, Uhrzeit, etc. einzufügen. : Benutzen Sie die Schaltflõchen, um die Schriftart zu verõndern oder Feldbefehle wie Datum, Uhrzeit, etc. einzuf³gen. */
+ Text = "Benutzen Sie die Schaltflächen, um die Schriftart zu verändern oder Feldbefehle wie Datum, Uhrzeit, etc. einzufügen." ;
+ Text [ ENGLISH ] = "Use image buttons to change the text font orto insert special commands like date, time etc." ;
+ Text [ norwegian ] = "Use image buttons to change the text font orto insert special commands like date, time etc." ;
+ Text [ italian ] = "Usare i pulsanti per modificare il tipo di carattere\no per inserire comandi speciali come data, ora, ecc." ;
+ Text [ portuguese_brazilian ] = "Use os botões de imagem para mudar a fonte do texto ouinserir comandos especiais como data hora, etc." ;
+ Text [ portuguese ] = "Use os botões para mudar o tipo de letra ou inserir campos como data, hora, etc." ;
+ Text [ finnish ] = "Kuvapainikkeilla voit vaihtaa tekstin fontin tai lisätä erikoiskomennon, kuten päiväyksen tai ajan." ;
+ Text [ danish ] = "Brug knapperne til at forandre skrifttypen eller til at indsætte felter som dato, klokkeslæt etc." ;
+ Text [ french ] = "Utilisez les boutons pour modifier la police ou pour insérer des instructions de champ telles que la date, l'heure, etc." ;
+ Text [ swedish ] = "Använd kommandoknapparna för att ändra teckensnitt eller infoga fältkommandon som datum, klockslag etc." ;
+ Text [ dutch ] = "Gebruik de knoppen om de tekstattributen te wijzigen of om veldopdrachten zoals datum, tijd, enz. in te voegen." ;
+ Text [ spanish ] = "Utilice los botones para modificar la fuente o para insertar comandos como fecha, hora, etc." ;
+ Text [ english_us ] = "Use the buttons to change the font or insert field commands such as date, time, etc." ;
+ Text[ chinese_simplified ] = "ÇëÄú°´»÷°´Å¥£¬¸ü¸Ä×ÖÌå»ò²åÈëÈÕÆÚ£¬Ê±¼äµÈÇøÓòÖ¸Áî¡£";
+ Text[ russian ] = "Äëÿ èçìåíåíèÿ øðèôòà èëè äëÿ âñòàâêè òàêèõ êîìàíä ïîëÿ êàê äàòà, âðåìÿ è ò.ä. èñïîëüçóéòå êíîïêè.";
+ Text[ polish ] = "U¿yj przycisków, aby zmieniæ czcionkê oraz wpisaæ datê i godzinê.";
+ Text[ japanese ] = "•ÏXÎÞÀÝ‚ð¸Ø¯¸‚µ‚Ĥ̫ÝÄ‚Ì•ÏX‚ ‚é‚¢‚Í“ú•t¤Žž“™‚Į̀°ÙÄÞºÏÝÄÞ‚Ì‘}“ü‚ð‚µ‚Ä‚­‚¾‚³‚¢B";
+ Text[ chinese_traditional ] = "½Ð±z«ö¤@¤U«ö¶s¡MÅܧó¦r«¬©Î´¡¤J¤é´Á¡M®É¶¡µ¥°Ï°ì«ü¥O¡C";
+ Text[ arabic ] = "ÇÓÊÎÏã ÇáãÝÇÊíÍ áÊÛííÑ äæÚ ÇáÎØ Ãæ áÅÖÇÝÉ ÃæÇãÑ ÍÞæá¡ ãËá ÇáÊÇÑíΡ Ãæ ÇáæÞÊ ...ÅáÎ.";
+ Text[ dutch ] = "Gebruik de knoppen om de tekstattributen te wijzigen of om veldopdrachten zoals datum, tijd, enz. in te voegen.";
+ Text[ chinese_simplified ] = "ÇëÄú°´»÷°´Å¥£¬¸ü¸Ä×ÖÌå»ò²åÈëÈÕÆÚ£¬Ê±¼äµÈÇøÓòÖ¸Áî¡£";
+ Text[ greek ] = "×ñçóéìïðïéÞóôå ôá ðåäßá åíôïëÞò ãéá íá áëëÜîåôå ôçí ãñáììáôïóåéñÜ Þ ãéá íá åéóÜãåôå ðåäßá åíôïëþí, üðùò ð.÷. çìåñïìçíßá, þñá, êôë.";
+ Text[ korean ] = "±Û²ÃÀ» º¯°æÇϰųª ³¯Â¥, ½Ã°£µîÀÇ ÇÊµå ¸í·É¾î¸¦ »ðÀÔÇϱâ À§Çؼ­´Â ¹öÆ°À» »ç¿ëÇϽʽÿÀ.";
+ Text[ turkish ] = "Yazýtipini deðiþtirmek ya da tarih, saat gibi alan komutlarý eklemek için düðmeleri kullanýnýz.";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_INFO
+ {
+ Pos = MAP_APPFONT ( 6 , 95 ) ;
+ Size = MAP_APPFONT ( 248 , 35 ) ;
+ Text = "Hinweis" ;
+ Text [ ENGLISH ] = "Hint" ;
+ Text [ norwegian ] = "Hint" ;
+ Text [ italian ] = "Nota" ;
+ Text [ portuguese_brazilian ] = "Dica" ;
+ Text [ portuguese ] = "Observação" ;
+ Text [ finnish ] = "Vihje" ;
+ Text [ danish ] = "Tip" ;
+ Text [ french ] = "Conseil" ;
+ Text [ swedish ] = "Tips" ;
+ Text [ dutch ] = "Tip" ;
+ Text [ spanish ] = "Indicación" ;
+ Text [ english_us ] = "Note" ;
+ Text[ chinese_simplified ] = "Ìáʾ";
+ Text[ russian ] = "Óêàçàíèå";
+ Text[ polish ] = "Porada";
+ Text[ japanese ] = "ŽwŽ¦";
+ Text[ chinese_traditional ] = "´£¥Ü";
+ Text[ arabic ] = "ãáÇÍÙÉ";
+ Text[ dutch ] = "Tip";
+ Text[ chinese_simplified ] = "Ìáʾ";
+ Text[ greek ] = "Õðüäåéîç";
+ Text[ korean ] = "ÆÁ";
+ Text[ turkish ] = "Not";
+ Text[ language_user1 ] = " ";
+ };
+};
+ // Kombinationen: Header/Footer links/rechts
+ // die Eingabefenster jeweils mit eigener ID, sonst aus RID_HFBASE kopiert
+TabPage RID_SCPAGE_HFED_HL < RID_HFBASE
+{
+ Hide = TRUE ;
+ HelpId = HID_SCPAGE_HFED_HL ;
+ Control WND_LEFT
+ {
+ HelpId = HID_SC_HF_HLL ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+ Control WND_CENTER
+ {
+ HelpId = HID_SC_HF_HLC ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+ Control WND_RIGHT
+ {
+ HelpId = HID_SC_HF_HLR ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 174 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+};
+TabPage RID_SCPAGE_HFED_HR < RID_HFBASE
+{
+ Hide = TRUE ;
+ HelpId = HID_SCPAGE_HFED_HR ;
+ Control WND_LEFT
+ {
+ HelpId = HID_SC_HF_HRL ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+ Control WND_CENTER
+ {
+ HelpId = HID_SC_HF_HRC ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+ Control WND_RIGHT
+ {
+ HelpId = HID_SC_HF_HRR ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 174 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+};
+TabPage RID_SCPAGE_HFED_FL < RID_HFBASE
+{
+ Hide = TRUE ;
+ HelpId = HID_SCPAGE_HFED_FL ;
+ Control WND_LEFT
+ {
+ HelpId = HID_SC_HF_FLL ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+ Control WND_CENTER
+ {
+ HelpId = HID_SC_HF_FLC ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+ Control WND_RIGHT
+ {
+ HelpId = HID_SC_HF_FLR ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 174 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+};
+TabPage RID_SCPAGE_HFED_FR < RID_HFBASE
+{
+ Hide = TRUE ;
+ HelpId = HID_SCPAGE_HFED_FR ;
+ Control WND_LEFT
+ {
+ HelpId = HID_SC_HF_FRL ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+ Control WND_CENTER
+ {
+ HelpId = HID_SC_HF_FRC ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 90 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+ Control WND_RIGHT
+ {
+ HelpId = HID_SC_HF_FRR ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 174 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 55 ) ;
+ TabStop = TRUE ;
+ };
+};
diff --git a/sc/source/ui/pagedlg/makefile.mk b/sc/source/ui/pagedlg/makefile.mk
new file mode 100644
index 000000000000..2449250a35d7
--- /dev/null
+++ b/sc/source/ui/pagedlg/makefile.mk
@@ -0,0 +1,109 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=pagedlg
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ areasdlg.cxx \
+ hfedtdlg.cxx \
+ tptable.cxx \
+ tphf.cxx \
+ tphfedit.cxx
+
+
+
+SLOFILES = \
+ $(SLO)$/areasdlg.obj \
+ $(SLO)$/hfedtdlg.obj \
+ $(SLO)$/tptable.obj \
+ $(SLO)$/tphf.obj \
+ $(SLO)$/tphfedit.obj
+
+
+
+SRCFILES = pagedlg.src \
+ hfedtdlg.src \
+ tphf.src
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/pagedlg/pagedlg.hrc b/sc/source/ui/pagedlg/pagedlg.hrc
new file mode 100644
index 000000000000..45363eb77cd2
--- /dev/null
+++ b/sc/source/ui/pagedlg/pagedlg.hrc
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * $RCSfile: pagedlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include "sc.hrc" // -> RID_SCDLG_PAGE
+ // -> RID_SCPAGE_TABLE
+ // -> RID_SCPAGE_AREAS
+
+#define TP_PAGE_STD 1
+#define TP_PAGE_HEADER 2
+#define TP_PAGE_FOOTER 3
+#define TP_PAGE_TABLE 4
+#define TP_PAGE_AREAS 5
+
+//================================================
+// TabPage: Tabelle
+
+#define BTN_GRID 10
+#define BTN_HEADER 11
+#define BTN_NOTES 12
+#define BTN_CHARTS 13
+#define BTN_OBJECTS 14
+#define BTN_DRAWINGS 15
+#define BTN_FORMULAS 16
+#define BTN_NULLVALS 17
+#define GB_PRINT 19
+
+#define BTN_TOPDOWN 20
+#define BTN_LEFTRIGHT 21
+#define BMP_PAGEDIR 22
+#define IMG_LEFTRIGHT 23
+#define IMG_TOPDOWN 24
+#define BTN_PAGENO 25
+#define ED_PAGENO 26
+#define GB_PAGEDIR 29
+
+#define BTN_SCALENONE 30
+#define BTN_SCALEALL 31
+#define ED_SCALEALL 32
+#define BTN_SCALEPAGENUM 33
+#define ED_SCALEPAGENUM 34
+#define GB_SCALE 39
+
+//================================================
+// TabPage: Druckbereiche
+
+#define GB_PRINTAREA 10
+#define ED_PRINTAREA 11
+#define RB_PRINTAREA 12
+#define LB_PRINTAREA 13
+
+#define GB_REPEATROW 20
+#define ED_REPEATROW 21
+#define RB_REPEATROW 22
+#define LB_REPEATROW 23
+
+#define GB_REPEATCOL 30
+#define ED_REPEATCOL 31
+#define RB_REPEATCOL 32
+#define LB_REPEATCOL 33
+
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_HELP 3
+
diff --git a/sc/source/ui/pagedlg/pagedlg.src b/sc/source/ui/pagedlg/pagedlg.src
new file mode 100644
index 000000000000..15898d5bf519
--- /dev/null
+++ b/sc/source/ui/pagedlg/pagedlg.src
@@ -0,0 +1,1170 @@
+/*************************************************************************
+ *
+ * $RCSfile: pagedlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "pagedlg.hrc"
+ModelessDialog RID_SCDLG_AREAS
+{
+ HelpId = HID_SCPAGE_AREAS ;
+ Size = MAP_APPFONT ( 316 , 123 ) ;
+ OutputSize = TRUE ;
+ Moveable = TRUE ;
+ //Closeable = TRUE; // Dieser Dialog hat einen Cancel-Button !
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Text = "Druckbereiche bearbeiten" ;
+ Text [ ENGLISH ] = "Edit Print Areas" ;
+ Text [ ENGLISH_US ] = "Edit Print Ranges" ;
+ Text [ italian ] = "Modifica aree di stampa" ;
+ Text [ spanish ] = "Editar áreas de impresión" ;
+ Text [ french ] = "Éditer les zones d'impression" ;
+ Text [ dutch ] = "Afdrukbereiken bewerken" ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 260 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 260 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 260 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ GroupBox GB_PRINTAREA
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 34 ) ;
+ Text = "Druckbereich" ;
+ Text [ ENGLISH ] = "Print area" ;
+ Text [ NORWEGIAN ] = "Print area" ;
+ Text [ DANISH ] = "Udskriftsområde" ;
+ Text [ ENGLISH_US ] = "Print range" ;
+ Text [ SPANISH ] = "Área de impresión" ;
+ Text [ FINNISH ] = "Tulostusalue" ;
+ Text [ FRENCH ] = "Zone d'impression" ;
+ Text [ ITALIAN ] = "Area di stampa" ;
+ Text [ DUTCH ] = "Afdrukbereik" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Area de impressÒo" ;
+ Text [ SWEDISH ] = "Utskriftsområde" ;
+ Text [ PORTUGUESE ] = "Área de impressão" ;
+ Text[ chinese_simplified ] = "´òÓ¡ÇøÓò";
+ Text[ russian ] = "Îáëàñòü ïå÷àòè";
+ Text[ polish ] = "Obszar wydruku";
+ Text[ japanese ] = "ˆóü”͈Í";
+ Text[ chinese_traditional ] = "¦C¦L­S³ò";
+ Text[ arabic ] = "äØÇÞ ÇáØÈÇÚÉ";
+ Text[ greek ] = "Ðåñéï÷Þ åêôýðùóçò";
+ Text[ korean ] = "Àμ⠿µ¿ª";
+ Text[ turkish ] = "Yazdýrma aralýðý";
+ };
+ ListBox LB_PRINTAREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 17 ) ;
+ Size = MAP_APPFONT ( 90 , 60 ) ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "- keiner -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ < "- Selektion -" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "- keiner -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ < "- Selektion -" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "- keiner -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ < "- Selektion -" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "- nessuno -" ; Default ; > ;
+ < "- definito dall'utente -" ; Default ; > ;
+ < "- selezione -" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "- keiner -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ < "- selection -" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "- nenhum -" ; Default ; > ;
+ < "- definida pelo utilizador -" ; Default ; > ;
+ < "- selecção -" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "- keiner -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ < "- Selektion -" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "- ingen -" ; Default ; > ;
+ < "- brugerdefineret -" ; Default ; > ;
+ < "- markering -" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "- aucun -" ; Default ; > ;
+ < "- défini par l'utilisateur -" ; Default ; > ;
+ < "- sélection -" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "- ingen -" ; Default ; > ;
+ < "- användardefinierad -" ; Default ; > ;
+ < "- markering -" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "- geen -" ; Default ; > ;
+ < "- gebruikergedefinieerd -" ; Default ; > ;
+ < "- selectie -" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "- ninguno -" ; Default ; > ;
+ < "- definido por el usuario -" ; Default ; > ;
+ < "- selección -" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "- none -" ; Default ; > ;
+ < "- user defined -" ; Default ; > ;
+ < "- selection -" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "- ÎÞ -" ; Default ; > ;
+ < "- ʹÓÃÕß×Ô¶¨ -" ; Default ; > ;
+ < "- Ñ¡Ôñ -" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "- áåç -" ; Default ; > ;
+ < "-çàäàíî ïîëüçîâàòåëåì -" ; Default ; > ;
+ < "- Âûäåëåíèå -" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "- brak -" ; Default ; > ;
+ < "-zdefiniowane przez u¿ytkownika" ; Default ; > ;
+ < "- Zaznaczanie -" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "-‚È‚µ-" ; Default ; > ;
+ < "-Õ°»Þ°’è‹`-" ; Default ; > ;
+ < "-‘I‘ð-" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "- µL -" ; Default ; > ;
+ < "-¦Û­q -" ; Default ; > ;
+ < "- ¿ï¨ú -" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "- ÈÏæä -" ; Default ; > ;
+ < "- ãÚÑÝ ãä ÞÈá ÇáãÓÊÎÏã -" ; Default ; > ;
+ < "- ÇáÊÍÏíÏ -" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "- êáíÝíá -" ; Default ; > ;
+ < "- ðñïóáñìïóìÝíá -" ; Default ; > ;
+ < "- ÅðéëïãÞ -" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "- ¾øÀ½ -" ; Default ; > ;
+ < "- »ç¿ëÀÚ Á¤ÀÇ -" ; Default ; > ;
+ < "- ¼±Åà -" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "- yok -" ; Default ; > ;
+ < "- kullanýcý tanýmlý -" ; Default ; > ;
+ < "- Seçim -" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < "- keiner -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ < "- Selektion -" ; Default ; > ;
+ };
+ };
+ Edit ED_PRINTAREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 108 , 17 ) ;
+ Size = MAP_APPFONT ( 126 , 12 ) ;
+ };
+ ImageButton RB_PRINTAREA
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 236 , 17 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ };
+ GroupBox GB_REPEATROW
+ {
+ Pos = MAP_APPFONT ( 6 , 43 ) ;
+ Size = MAP_APPFONT ( 248 , 34 ) ;
+ Text = "Wiederholungszeile" ;
+ Text [ ENGLISH ] = "Row to repeat at top" ;
+ Text [ NORWEGIAN ] = "Row to repeat at top" ;
+ Text [ DANISH ] = "Gentagelsesrække" ;
+ Text [ ENGLISH_US ] = "Rows to repeat" ;
+ Text [ SPANISH ] = "Fila ~a repetir" ;
+ Text [ FINNISH ] = "Ylhõõllõ toistettava rivi" ;
+ Text [ FRENCH ] = "Ligne à répéter" ;
+ Text [ ITALIAN ] = "Riga da ripetere" ;
+ Text [ DUTCH ] = "Rij herhalen" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Fileira para repetir no topo" ;
+ Text [ SWEDISH ] = "Upprepningsrad" ;
+ Text [ PORTUGUESE ] = "Linha a repetir" ;
+ Text[ chinese_simplified ] = "Öظ´µÄÐÐ";
+ Text[ russian ] = "Ïîâòîð ñòðîêè";
+ Text[ polish ] = "Powtarzaj wiersz";
+ Text[ japanese ] = "ŒJ‚è•Ô‚·s";
+ Text[ chinese_traditional ] = "­«½ÆÄæ";
+ Text[ arabic ] = "ÇáÕÝ ÇáãßÑÑ";
+ Text[ greek ] = "Åðáíáëáìâáíüìåíç ãñáììÞ";
+ Text[ korean ] = "Çà ¹Ýº¹";
+ Text[ turkish ] = "Yinelenen satýr";
+ };
+ ListBox LB_REPEATROW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 57 ) ;
+ Size = MAP_APPFONT ( 90 , 60 ) ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "- nessuna -" ; Default ; > ;
+ < "- definito dall'utente -" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- definido pelo usuário -" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "- nenhum -" ; Default ; > ;
+ < "- definida pelo utilizador -" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "- ingen -" ; Default ; > ;
+ < "- brugerdefineret -" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "- aucun -" ; Default ; > ;
+ < "- défini par l'utilisateur -" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "- inga -" ; Default ; > ;
+ < "- användardefinierad -" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "- geen -" ; Default ; > ;
+ < "- gebruikergedefinieerd -" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "- ninguno -" ; Default ; > ;
+ < "- definida por el usuario -" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "- none -" ; Default ; > ;
+ < "- user defined -" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "- ÎÞ -" ; Default ; > ;
+ < "- ʹÓÃÕß×Ô¶¨ -" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "- áåç -" ; Default ; > ;
+ < "- çàäàíî ïîëüçîâàòåëåì -" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "- brak -" ; Default ; > ;
+ < "- zdefiniowane przez u¿ytkownika -" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "-‚È‚µ-" ; Default ; > ;
+ < "-Õ°»Þ°’è‹`-" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "- µL -" ; Default ; > ;
+ < "- ¦Û­q -" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "- ÈÏæä -" ; Default ; > ;
+ < "- ãÚÑÝ ãä ÞÈá ÇáãÓÊÎÏã -" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "- êáíÝíá -" ; Default ; > ;
+ < "- ðñïóáñìïóìÝíá -" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "- ¾øÀ½ -" ; Default ; > ;
+ < "- »ç¿ëÀÚ Á¤ÀÇ -" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "- yok -" ; Default ; > ;
+ < "- kullanýcý tanýmlý -" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ };
+ };
+ Edit ED_REPEATROW
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 108 , 57 ) ;
+ Size = MAP_APPFONT ( 126 , 12 ) ;
+ };
+ ImageButton RB_REPEATROW
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 236 , 57 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ };
+ GroupBox GB_REPEATCOL
+ {
+ Pos = MAP_APPFONT ( 6 , 83 ) ;
+ Size = MAP_APPFONT ( 248 , 34 ) ;
+ Text = "Wiederholungsspalte" ;
+ Text [ ENGLISH ] = "Columns to repeat at left" ;
+ Text [ NORWEGIAN ] = "Columns to repeat at left" ;
+ Text [ DANISH ] = "Gentagelseskolonne" ;
+ Text [ ENGLISH_US ] = "Repeat column" ;
+ Text [ SPANISH ] = "~Columna a repetir" ;
+ Text [ FINNISH ] = "Vasemmalla toistettavat sarakkeet" ;
+ Text [ FRENCH ] = "Colonne à répéter" ;
+ Text [ ITALIAN ] = "Colonna da ripetere" ;
+ Text [ DUTCH ] = "Kolom herhalen" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Colunas para repetir Ó esquerda" ;
+ Text [ SWEDISH ] = "Upprepningskolumn" ;
+ Text [ PORTUGUESE ] = "Coluna a repetir" ;
+ Text[ chinese_simplified ] = "Öظ´ÁÐ";
+ Text[ russian ] = "Ïîâòîð ñòîëáöà";
+ Text[ polish ] = "Powtarzaj kolumny";
+ Text[ japanese ] = "ŒJ‚è•Ô‚·—ñ";
+ Text[ chinese_traditional ] = "­«½ÆÄæ";
+ Text[ arabic ] = "ÇáÚãæÏ ÇáãßÑÑ";
+ Text[ greek ] = "Åðáíáëáìâáíüìåíç óôÞëç";
+ Text[ korean ] = "¿­ ¹Ýº¹";
+ Text[ turkish ] = "Yinelenen sütun";
+ };
+ ListBox LB_REPEATCOL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 97 ) ;
+ Size = MAP_APPFONT ( 90 , 60 ) ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "- nessuna -" ; Default ; > ;
+ < "- definito dall'utente -" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- definido pelo usuário -" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "- nenhum -" ; Default ; > ;
+ < "- definida pelo utilizador -" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "- ingen -" ; Default ; > ;
+ < "- brugerdefineret -" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "- aucun -" ; Default ; > ;
+ < "- défini par l'utilisateur -" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "- inga -" ; Default ; > ;
+ < "- användardefinierad -" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "- geen -" ; Default ; > ;
+ < "- gebruikergedefinieerd -" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "- ninguno -" ; Default ; > ;
+ < "- definida por el usuario -" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "- none -" ; Default ; > ;
+ < "- user defined -" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "- ÎÞ -" ; Default ; > ;
+ < "- ʹÓÃÕß×Ô¶¨ -" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "- áåç -" ; Default ; > ;
+ < "- çàäàíî ïîëüçîâàòåëåì -" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "- brak -" ; Default ; > ;
+ < "-zdefiniowane przez u¿ytkownika-" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "-‚È‚µ-" ; Default ; > ;
+ < "-Õ°»Þ°’è‹`-" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "- µL -" ; Default ; > ;
+ < "- ¦Û­q -" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "- ÈÏæä -" ; Default ; > ;
+ < "- ãÚÑÝ ãä ÞÈá ÇáãÓÊÎÏã -" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "- êáíÝíá -" ; Default ; > ;
+ < "- ðñïóáñìïóìÝíá -" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "- ¾øÀ½ -" ; Default ; > ;
+ < "- »ç¿ëÀÚ Á¤ÀÇ -" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "- yok -" ; Default ; > ;
+ < "- kullanýcý tanýmlý -" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < "- keine -" ; Default ; > ;
+ < "- benutzerdefiniert -" ; Default ; > ;
+ };
+ };
+ Edit ED_REPEATCOL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 108 , 97 ) ;
+ Size = MAP_APPFONT ( 126 , 12 ) ;
+ };
+ ImageButton RB_REPEATCOL
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 236 , 97 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Fomindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ };
+ Text [ swedish ] = "Redigera utskriftsområden" ;
+ Text [ danish ] = "Rediger udskriftsområde" ;
+ Text [ portuguese ] = "Editar áreas de impressão" ;
+ Text [ portuguese_brazilian ] = "Druckbereiche bearbeiten" ;
+ Text[ chinese_simplified ] = "±à¼­´òÓ¡ÇøÓò";
+ Text[ russian ] = "Ïðàâêà îáëàñòåé ïå÷àòè";
+ Text[ polish ] = "Edytuj obszar wydruku";
+ Text[ japanese ] = "ˆóü”͈͂̕ÒW";
+ Text[ chinese_traditional ] = "½s¿è¦C¦L­S³ò";
+ Text[ arabic ] = "ÊÍÑíÑ äØÇÞÇÊ ÇáØÈÇÚÉ";
+ Text[ greek ] = "Åðåîåñãáóßá ðåñéï÷þí åêôýðùóçò";
+ Text[ korean ] = "Àμ⠿µ¿ª ÆíÁý";
+ Text[ turkish ] = "Yazdýrma aralýklarýný düzenle";
+};
+TabPage RID_SCPAGE_TABLE
+{
+ Hide = TRUE ;
+ HelpId = HID_SCPAGE_TABLE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ CheckBox BTN_GRID
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 77 , 10 ) ;
+ Text = "Tabellen~gitter" ;
+ Text [ ENGLISH ] = "~Grid" ;
+ Text [ norwegian ] = "~Grid" ;
+ Text [ italian ] = "Griglia" ;
+ Text [ portuguese_brazilian ] = "~Grade" ;
+ Text [ portuguese ] = "~Grelha" ;
+ Text [ finnish ] = "Taustav~iivat" ;
+ Text [ danish ] = "Tabelgitter" ;
+ Text [ french ] = "~Grille" ;
+ Text [ swedish ] = "Tabell~gitter" ;
+ Text [ dutch ] = "Tabellen~raster" ;
+ Text [ spanish ] = "~Cuadrícula" ;
+ Text [ english_us ] = "~Grid" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¹¤×÷±íÍø¸ñ(~G)";
+ Text[ russian ] = "Ñåòêà";
+ Text[ polish ] = "Siatka tabeli";
+ Text[ japanese ] = "•\\‚̸ÞدÄÞü(~G)";
+ Text[ chinese_traditional ] = "¤u§@ªíºô®æ(~G)";
+ Text[ arabic ] = "ÔÈßÉ ÇáÌÏæá";
+ Text[ greek ] = "ÐëÝãìá ðßíáêá";
+ Text[ korean ] = "´«±Ý¼±(~G)";
+ Text[ turkish ] = "~Kýlavuz çizgiler";
+ };
+ CheckBox BTN_HEADER
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 86 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilen- & Sp~altenköpfe : Zeilen- & Sp~altenk÷pfe */
+ Text = "Zeilen- & Sp~altenköpfe" ;
+ Text [ ENGLISH ] = "Column- & row he~adings" ;
+ Text [ norwegian ] = "Column- & row he~adings" ;
+ Text [ italian ] = "Intestazioni colo~nna/riga" ;
+ Text [ portuguese_brazilian ] = "Tí~tulos de Coluna- & fileira" ;
+ Text [ portuguese ] = "Tí~tulos de colunas & linhas" ;
+ Text [ finnish ] = "Rivi- ja sarake~otsikot" ;
+ Text [ danish ] = "Række-/kolonneoverskrifter" ;
+ Text [ french ] = "~En-têtes de colonnes/lignes" ;
+ Text [ swedish ] = "Rad- och kolumnhu~vuden" ;
+ Text [ dutch ] = "Kolom- en rij~koppen" ;
+ Text [ spanish ] = "Tít~ulos de filas y columnas" ;
+ Text [ english_us ] = "~Column and row headers" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÐбêÌâºÍÁбêÌâ(~H)";
+ Text[ russian ] = "Çàãîëîâêè ñòðîê è ñòîëáöîâ";
+ Text[ polish ] = "~Nag³ówki wierszy & kolumn";
+ Text[ japanese ] = "s‚Æ—ñ‚̔Ԇ(~H)";
+ Text[ chinese_traditional ] = "Äæ©M¦C¼ÐÃD(~H)";
+ Text[ arabic ] = "ÑÄæÓ ÇáÃÓØÑ æÇáÃÚãÏÉ";
+ Text[ greek ] = "Êåöáëßäåò ãñáììþí/óôçëþí";
+ Text[ korean ] = "¿­°ú Çà ¸Ó¸®±Û(~C)";
+ Text[ turkish ] = "Satýr ve sütun ~baþlýklarý";
+ };
+ CheckBox BTN_NOTES
+ {
+ Pos = MAP_APPFONT ( 12 , 40 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "~Notizen" ;
+ Text [ ENGLISH ] = "~Notes" ;
+ Text [ norwegian ] = "~Notes" ;
+ Text [ italian ] = "~Note" ;
+ Text [ portuguese_brazilian ] = "~Observações" ;
+ Text [ portuguese ] = "~Anotações" ;
+ Text [ finnish ] = "~Huomautukset" ;
+ Text [ danish ] = "Noter" ;
+ Text [ french ] = "~Notes" ;
+ Text [ swedish ] = "A~nteckningar" ;
+ Text [ dutch ] = "~Aantekeningen" ;
+ Text [ spanish ] = "~Notas" ;
+ Text [ english_us ] = "~Notes" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "±¸×¢(~N)";
+ Text[ russian ] = "Ïðèìå÷àíèÿ";
+ Text[ polish ] = "Notatki";
+ Text[ japanese ] = "ºÒÝÄ(~N)";
+ Text[ chinese_traditional ] = "³Æµù(~N)";
+ Text[ arabic ] = "ãáÇÍÙÇÊ";
+ Text[ greek ] = "Óçìåéþóåéò";
+ Text[ korean ] = "¸Þ¸ð(~N)";
+ Text[ turkish ] = "~Notlar";
+ };
+ CheckBox BTN_OBJECTS
+ {
+ Pos = MAP_APPFONT ( 12 , 53 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Objekte/Grafiken" ;
+ Text [ ENGLISH ] = "~Objects/Images" ;
+ Text [ norwegian ] = "~Objects/Images" ;
+ Text [ italian ] = "~Oggetti/immagini" ;
+ Text [ portuguese_brazilian ] = "~Objects/Images" ;
+ Text [ portuguese ] = "~Objectos/Imagens" ;
+ Text [ finnish ] = "~Objects/Images" ;
+ Text [ danish ] = "Objekter/billeder" ;
+ Text [ french ] = "~Objets/images" ;
+ Text [ swedish ] = "O~bjekt/grafiker" ;
+ Text [ dutch ] = "~Objecten/afbeeld." ;
+ Text [ spanish ] = "~Objetos/Imágenes" ;
+ Text [ ENGLISH_US ] = "~Objects/graphics" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¶ÔÏó/ͼÐÎ(~O)";
+ Text[ russian ] = "Îáúåêòû è ðèñóíêè";
+ Text[ polish ] = "Obiekty/~Grafiki";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä/}(~O)";
+ Text[ chinese_traditional ] = "ª«¥ó/¹Ï¤ù(~O)";
+ Text[ arabic ] = "ßÇÆäÇÊ/ÕæÑ";
+ Text[ greek ] = "Áíôéêåßìåíá/ÃñáöéêÜ";
+ Text[ korean ] = "°³Ã¼/±×·¡ÇÈ(~O)";
+ Text[ turkish ] = "~Nesne/grafikler";
+ };
+ CheckBox BTN_CHARTS
+ {
+ Pos = MAP_APPFONT ( 12 , 66 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Diagramme" ;
+ Text [ ENGLISH ] = "~Charts" ;
+ Text [ norwegian ] = "~Charts" ;
+ Text [ italian ] = "Diagrammi" ;
+ Text [ portuguese_brazilian ] = "~Gráficos" ;
+ Text [ portuguese ] = "~Gráficos" ;
+ Text [ finnish ] = "~Kaaviot" ;
+ Text [ danish ] = "Diagrammer" ;
+ Text [ french ] = "~Diagrammes" ;
+ Text [ swedish ] = "~Diagram" ;
+ Text [ dutch ] = "~Diagrammen" ;
+ Text [ spanish ] = "~Diagramas" ;
+ Text [ ENGLISH_US ] = "Ch~arts" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ͼ±í(~C)";
+ Text[ russian ] = "Äèàãðàììà";
+ Text[ polish ] = "Wy~kresy";
+ Text[ japanese ] = "¸Þ×Ì(~C)";
+ Text[ chinese_traditional ] = "¹Ïªí(~C)";
+ Text[ arabic ] = "ÑÓæã ÈíÇäíÉ";
+ Text[ greek ] = "ÄéáãñÜììáôá";
+ Text[ korean ] = "Â÷Æ®(~A)";
+ Text[ turkish ] = "~Þemalar";
+ };
+ CheckBox BTN_DRAWINGS
+ {
+ Pos = MAP_APPFONT ( 12 , 79 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Zeichenob~jekte" ;
+ Text [ ENGLISH ] = "Drawob~jects" ;
+ Text [ norwegian ] = "Drawob~jects" ;
+ Text [ italian ] = "Oggetti di disegno" ;
+ Text [ portuguese_brazilian ] = "Drawob~jects" ;
+ Text [ portuguese ] = "Objectos de ~desenho" ;
+ Text [ finnish ] = "Drawob~jects" ;
+ Text [ danish ] = "Tegneobjekter" ;
+ Text [ french ] = "~Objets de dessin" ;
+ Text [ swedish ] = "Ritob~jekt" ;
+ Text [ dutch ] = "Teken~objecten" ;
+ Text [ spanish ] = "O~bjetos de dibujo" ;
+ Text [ ENGLISH_US ] = "~Drawing objects" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏó(~D)";
+ Text[ russian ] = "Ãðàôè÷åñêèå îáúåêòû";
+ Text[ polish ] = "Obiekty g~raficzne";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸Ä(~D)";
+ Text[ chinese_traditional ] = "¦r¤¸ª«¥ó(~D)";
+ Text[ arabic ] = "ßÇÆäÇÊ ÑÓæãíÉ";
+ Text[ greek ] = "Áíôéêåßìåíá ó÷åäßáóçò";
+ Text[ korean ] = "°³Ã¼ ±×¸®±â(~D)";
+ Text[ turkish ] = "Çizim nesnele~ri";
+ };
+ CheckBox BTN_FORMULAS
+ {
+ Pos = MAP_APPFONT ( 12 , 92 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "~Formeln" ;
+ Text [ ENGLISH ] = "~Formulas" ;
+ Text [ norwegian ] = "~Formulas" ;
+ Text [ italian ] = "~Formula" ;
+ Text [ portuguese_brazilian ] = "~Fórmulas" ;
+ Text [ portuguese ] = "~Fórmulas" ;
+ Text [ finnish ] = "~Kaavat" ;
+ Text [ danish ] = "~Formler" ;
+ Text [ french ] = "~Formules" ;
+ Text [ swedish ] = "~Formler" ;
+ Text [ dutch ] = "~Formules" ;
+ Text [ spanish ] = "~Fórmulas" ;
+ Text [ english_us ] = "~Formulas" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¹«Ê½(~F)";
+ Text[ russian ] = "Ôîðìóëû";
+ Text[ polish ] = "Formu³y";
+ Text[ japanese ] = "”Ž®(~F)";
+ Text[ chinese_traditional ] = "¤½¦¡(~F)";
+ Text[ arabic ] = "ÕíÛ";
+ Text[ greek ] = "Ôýðïé";
+ Text[ korean ] = "¼ö½Ä(~F)";
+ Text[ turkish ] = "~Formül";
+ };
+ CheckBox BTN_NULLVALS
+ {
+ Pos = MAP_APPFONT ( 12 , 105 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "N~ullwerte" ;
+ Text [ ENGLISH ] = "N~ull values" ;
+ Text [ norwegian ] = "N~ull values" ;
+ Text [ italian ] = "Valori zero" ;
+ Text [ portuguese_brazilian ] = "~Null values" ;
+ Text [ portuguese ] = "~Valores zero" ;
+ Text [ finnish ] = "~Null values" ;
+ Text [ danish ] = "Nulværdier" ;
+ Text [ french ] = "Valeurs ~zéro" ;
+ Text [ swedish ] = "N~ollvärden" ;
+ Text [ dutch ] = "~Nulwaarden" ;
+ Text [ spanish ] = "~Valores cero" ;
+ Text [ english_us ] = "~Zero values" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÁãÖµ(~Z)";
+ Text[ russian ] = "Íóëåâûå çíà÷åíèÿ";
+ Text[ polish ] = "Warto~œci zerowe";
+ Text[ japanese ] = "¾ÞÛ’l(~Z)";
+ Text[ chinese_traditional ] = "¹s­È(~Z)";
+ Text[ arabic ] = "Þíã ÇáÕÝÑ";
+ Text[ greek ] = "ÌçäåíéêÝò ôéìÝò";
+ Text[ korean ] = "0 °ª(~Z)";
+ Text[ turkish ] = "Sýfýr deðer~leri";
+ };
+ GroupBox GB_PRINT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 100 , 118 ) ;
+ Text = "Drucken" ;
+ Text [ ENGLISH ] = "Print" ;
+ Text [ norwegian ] = "Skriv ut" ;
+ Text [ italian ] = "Stampa" ;
+ Text [ portuguese_brazilian ] = "Imprimir" ;
+ Text [ portuguese ] = "Imprimir" ;
+ Text [ finnish ] = "Tulosta" ;
+ Text [ danish ] = "Udskriv" ;
+ Text [ french ] = "Imprimer" ;
+ Text [ swedish ] = "Skriv ut" ;
+ Text [ dutch ] = "Afdrukken" ;
+ Text [ spanish ] = "Imprimir" ;
+ Text [ english_us ] = "Print" ;
+ Text[ chinese_simplified ] = "´òÓ¡";
+ Text[ russian ] = "Ïå÷àòü";
+ Text[ polish ] = "Drukuj";
+ Text[ japanese ] = "ˆóü";
+ Text[ chinese_traditional ] = "¦C¦L";
+ Text[ arabic ] = "ØÈÇÚÉ";
+ Text[ greek ] = "Åêôýðùóç";
+ Text[ korean ] = "Àμâ";
+ Text[ turkish ] = "Yazdýr";
+ };
+ RadioButton BTN_TOPDOWN
+ {
+ Pos = MAP_APPFONT ( 118 , 14 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "Von o~ben nach unten" ;
+ Text [ ENGLISH ] = "~Top to bottom" ;
+ Text [ norwegian ] = "~Top to bottom" ;
+ Text [ italian ] = "Dall'al~to in basso" ;
+ Text [ portuguese_brazilian ] = "~De cima para baixo" ;
+ Text [ portuguese ] = "De ~cima para baixo" ;
+ Text [ finnish ] = "~Ylhäältä alas" ;
+ Text [ danish ] = "Fra øverst til nederst" ;
+ Text [ french ] = "~Du haut en bas" ;
+ Text [ swedish ] = "~Uppifrån och ned" ;
+ Text [ dutch ] = "Van ~boven naar beneden" ;
+ Text [ spanish ] = "De arriba ~hacia abajo" ;
+ Text [ english_us ] = "~Top to bottom" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "´ÓÉÏÏòÏÂ(~T)";
+ Text[ russian ] = "Ñâåðõó âíèç";
+ Text[ polish ] = "Od g~óry do do³u";
+ Text[ japanese ] = "ã‚©‚牺‚Ö(~T)";
+ Text[ chinese_traditional ] = "±q¤W¦V¤U(~T)";
+ Text[ arabic ] = "ãä ÃÚáì áÃÓÝá";
+ Text[ greek ] = "Áðü ðÜíù ðñïò ôá êÜôù";
+ Text[ korean ] = "À§¿¡¼­ ¾Æ·¡·Î(~T)";
+ Text[ turkish ] = "~Yukardan aþaðý";
+ };
+ RadioButton BTN_LEFTRIGHT
+ {
+ Pos = MAP_APPFONT ( 118 , 27 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "Von lin~ks nach rechts" ;
+ Text [ ENGLISH ] = "Left to rig~ht" ;
+ Text [ norwegian ] = "Left to rig~ht" ;
+ Text [ italian ] = "Da sinistra a d~estra" ;
+ Text [ portuguese_brazilian ] = "Da esquerda para a di~reita" ;
+ Text [ portuguese ] = "Da esquerda para a di~reita" ;
+ Text [ finnish ] = "Vase~mmalta oikealle" ;
+ Text [ danish ] = "Fra venstre til højre" ;
+ Text [ french ] = "De gauche à dro~ite" ;
+ Text [ swedish ] = "Från vänster till hög~er" ;
+ Text [ dutch ] = "Van ~links naar rechts" ;
+ Text [ spanish ] = "De ~izquierda a derecha" ;
+ Text [ english_us ] = "~Left to right" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "´Ó×óÏòÓÒ(~L)";
+ Text[ russian ] = "Ñëåâà íàïðàâî";
+ Text[ polish ] = "Od lewej do prawej";
+ Text[ japanese ] = "¶‚©‚ç‰E‚Ö(~L)";
+ Text[ chinese_traditional ] = "±q¥ª¦V¥k(~L)";
+ Text[ arabic ] = "ãä ÇáíÓÇÑ Åáì Çáíãíä";
+ Text[ language_user1 ] = "ÌÞêïò; - - - -";
+ Text[ greek ] = "Áðü áñéóôåñÜ ðñïò ôá äåîéÜ";
+ Text[ korean ] = "¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î(~L)";
+ Text[ turkish ] = "S~oldan saða";
+ };
+ FixedBitmap BMP_PAGEDIR
+ {
+ Pos = MAP_APPFONT ( 214 , 12 ) ;
+ Size = MAP_APPFONT ( 25 , 25 ) ;
+ };
+ // Image IMG_LEFTRIGHT { BMP( "lftrgt.bmp" ); COLMASK; };
+ // Image IMG_TOPDOWN { BMP( "topdown.bmp" ); COLMASK; };
+ Bitmap IMG_LEFTRIGHT { File = "lftrgt.bmp" ; };
+ Bitmap IMG_TOPDOWN { File = "topdown.bmp" ; };
+ CheckBox BTN_PAGENO
+ {
+ Pos = MAP_APPFONT ( 118 , 44 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Erste Seiten~zahl" ;
+ Text [ ENGLISH ] = "First ~page" ;
+ Text [ norwegian ] = "First ~page" ;
+ Text [ italian ] = "Primo numero di ~pagina" ;
+ Text [ portuguese_brazilian ] = "Primeira página" ;
+ Text [ portuguese ] = "~Número da primeira página" ;
+ Text [ finnish ] = "First ~page" ;
+ Text [ danish ] = "Første sidetal" ;
+ Text [ french ] = "~Premier numéro de page" ;
+ Text [ swedish ] = "Första ~sidnummer" ;
+ Text [ dutch ] = "~Nummer eerste pagina" ;
+ Text [ spanish ] = "~Primer núm. de página" ;
+ Text [ english_us ] = "First ~page number" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "µÚÒ»¸öÒ³Êý(~P)";
+ Text[ russian ] = "Ïåðâàÿ ñòðàíèöà ¹";
+ Text[ polish ] = "Pierwszy nu~mer strony";
+ Text[ japanese ] = "ʼn‚ÌÍß°¼Þ”Ô†(~P)";
+ Text[ chinese_traditional ] = "²Ä¤@­Ó­¶¼Æ(~P)";
+ Text[ arabic ] = "ÑÞã ÇáÕÝÍÉ ÇáÃæáì";
+ Text[ greek ] = "Ðñþôïò áñéèìüò óåëßäáò";
+ Text[ korean ] = "ù ÆäÀÌÁö ¹øÈ£(~P)";
+ Text[ turkish ] = "Ýlk sayfa ~numarasý";
+ };
+ NumericField ED_PAGENO
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 191 , 43 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
+ TabStop = TRUE ;
+ Spin = TRUE ;
+ Minimum = 1 ;
+ Maximum = 9999 ;
+ SpinSize = 1 ;
+ Repeat = TRUE ;
+ };
+ GroupBox GB_PAGEDIR
+ {
+ Pos = MAP_APPFONT ( 112 , 3 ) ;
+ Size = MAP_APPFONT ( 142 , 65 ) ;
+ Text = "Seitenreihenfolge" ;
+ Text [ ENGLISH ] = "Page Order" ;
+ Text [ norwegian ] = "Page Order" ;
+ Text [ italian ] = "Sequenza pagine" ;
+ Text [ portuguese_brazilian ] = "Ordem das Páginas" ;
+ Text [ portuguese ] = "Ordem das páginas" ;
+ Text [ finnish ] = "Sivujen järjestys" ;
+ Text [ danish ] = "Siderækkefølge" ;
+ Text [ french ] = "Ordre des pages" ;
+ Text [ swedish ] = "Sidordning" ;
+ Text [ dutch ] = "Pagina-volgorde" ;
+ Text [ spanish ] = "Orden de páginas" ;
+ Text [ ENGLISH_US ] = "Page order" ;
+ Text[ chinese_simplified ] = "Ò³Ðò";
+ Text[ russian ] = "Ïîðÿäîê ñòðàíèö";
+ Text[ polish ] = "KolejnoϾ stron";
+ Text[ japanese ] = "Íß°¼Þ‚̇”Ô";
+ Text[ chinese_traditional ] = "­¶§Ç";
+ Text[ arabic ] = "ÊÑÊíÈ ÇáÕÝÍÉ";
+ Text[ greek ] = "ÄéÜôáîç óåëéäþí";
+ Text[ korean ] = "ÆäÀÌÁö ¼ø¼­";
+ Text[ turkish ] = "Sayfa sýrasý";
+ };
+ RadioButton BTN_SCALEALL
+ {
+ Pos = MAP_APPFONT ( 118 , 84 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "A~lles auf [%]" ;
+ Text [ ENGLISH ] = "~All pages to [%]" ;
+ Text [ norwegian ] = "~All pages to [%]" ;
+ Text [ italian ] = "~Tutto a [%]" ;
+ Text [ portuguese_brazilian ] = "~Todas as páginas para [%]" ;
+ Text [ portuguese ] = "~Tudo para [%]" ;
+ Text [ DANISH ] = "Alt til [%]" ;
+ Text [ ENGLISH_US ] = "~All to [%]" ;
+ Text [ SPANISH ] = "~Todo al [%]" ;
+ Text [ FINNISH ] = "~All pages to [%]" ;
+ Text [ FRENCH ] = "~Tout à [%]" ;
+ Text [ DUTCH ] = "~Alles naar [%]" ;
+ Text [ SWEDISH ] = "A~llt till (%)" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "È«²¿²ÉÓðٷֱÈ[%](~A)";
+ Text[ russian ] = "Âñå íà [%]";
+ Text[ polish ] = "Wszystko na [%] ";
+ Text[ japanese ] = "‚·‚×‚Ä [%]";
+ Text[ greek ] = "¼~ëá óå [%]";
+ Text[ korean ] = "Àüü¸¦ [%] ·Î(~A)";
+ Text[ chinese_traditional ] = "¥þ³¡±Ä¥Î[%]";
+ Text[ arabic ] = "Çáßá Åáì [%]";
+ Text[ turkish ] = "T~ümü [%]";
+ };
+ RadioButton BTN_SCALEPAGENUM
+ {
+ Pos = MAP_APPFONT ( 118 , 103 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Ma~x. Seitenzahl" ;
+ Text [ ENGLISH ] = "To ~fit on pages" ;
+ Text [ norwegian ] = "To ~fit on pages" ;
+ Text [ italian ] = "Num. massimo pagine" ;
+ Text [ portuguese_brazilian ] = "Para ~se ajustar nas páginas" ;
+ Text [ portuguese ] = "~Máximo de páginas" ;
+ Text [ DANISH ] = "Maks. antal sider" ;
+ Text [ ENGLISH_US ] = "~Max. no. of pages" ;
+ Text [ SPANISH ] = "Núm. ~máx. de páginas" ;
+ Text [ FINNISH ] = "Sovita sivui~lle" ;
+ Text [ FRENCH ] = "Nbre ~max. de pages" ;
+ Text [ DUTCH ] = "Hoogste ~paginanr." ;
+ Text [ SWEDISH ] = "Ma~x antal sidor" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×î¶àÒ³Êý(~M)";
+ Text[ russian ] = "Ìàêñèìóì ñòðàíèö";
+ Text[ polish ] = "Maks. licz~ba stron";
+ Text[ japanese ] = "Å‚‚ÌÍß°¼Þ”(~M)";
+ Text[ chinese_traditional ] = "³Ì¦h­¶¼Æ(~M)";
+ Text[ arabic ] = "ÇáÚÏÏ ÇáÃÞÕì ááÕÝÍÇÊ";
+ Text[ greek ] = "ÌÝ~ã. áñéèìüò óåëßäùí";
+ Text[ korean ] = "ÃÖ´ë ÆäÀÌÁö ¹øÈ£(~M)";
+ Text[ turkish ] = "A~zami sayfa sayýsý";
+ };
+ NumericField ED_SCALEPAGENUM
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 191 , 102 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Spin = TRUE ;
+ Repeat = TRUE ;
+ Minimum = 1 ;
+ Maximum = 999 ;
+ SpinSize = 1 ;
+ };
+ NumericField ED_SCALEALL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 191 , 83 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Spin = TRUE ;
+ Repeat = TRUE ;
+ Maximum = 400 ;
+ First = 15 ;
+ Last = 200 ;
+ SpinSize = 1 ;
+ };
+ GroupBox GB_SCALE
+ {
+ Pos = MAP_APPFONT ( 112 , 71 ) ;
+ Size = MAP_APPFONT ( 142 , 50 ) ;
+ Text = "Skalierung" ;
+ Text [ ENGLISH ] = "Scale" ;
+ Text [ ENGLISH_US ] = "Scale" ;
+ Text [ dutch ] = "Schaal" ;
+ Text [ italian ] = "Scala" ;
+ Text [ spanish ] = "Escala" ;
+ Text [ french ] = "Redimensionnement (impression)" ;
+ Text [ swedish ] = "Skalering" ;
+ Text [ danish ] = "Skalering" ;
+ Text [ portuguese ] = "Escala" ;
+ Text [ portuguese_brazilian ] = "Skalierung" ;
+ Text[ chinese_simplified ] = "¿Ì¶È";
+ Text[ russian ] = "Ìàñøòàá";
+ Text[ polish ] = "Skalowanie";
+ Text[ japanese ] = "½¹°Ù";
+ Text[ chinese_traditional ] = "Åã¥Ü¤ñ¨Ò";
+ Text[ arabic ] = "ÇáãÞíÇÓ";
+ Text[ greek ] = "Êëßìáêá";
+ Text[ korean ] = "¹èÀ²";
+ Text[ turkish ] = "Ölçek";
+ };
+};
diff --git a/sc/source/ui/pagedlg/tphf.cxx b/sc/source/ui/pagedlg/tphf.cxx
new file mode 100644
index 000000000000..6ee359dd258e
--- /dev/null
+++ b/sc/source/ui/pagedlg/tphf.cxx
@@ -0,0 +1,357 @@
+/*************************************************************************
+ *
+ * $RCSfile: tphf.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#define _TPHF_CXX
+#include "scitems.hxx"
+#include <sfx2/basedlgs.hxx>
+#include <svtools/style.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "tphf.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "tabvwsh.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "tphfedit.hxx"
+#include "hfedtdlg.hxx"
+#include "styledlg.hxx"
+#include "scresid.hxx"
+
+#undef _TPHF_CXX
+
+
+
+//==================================================================
+// class ScHFPage
+//==================================================================
+
+ScHFPage::ScHFPage( Window* pParent, USHORT nResId,
+ const SfxItemSet& rSet, USHORT nSetId )
+
+ : SvxHFPage ( pParent, nResId, rSet, nSetId ),
+ aBtnEdit ( this, ScResId( RID_SCBTN_HFEDIT ) ),
+ aDataSet ( *rSet.GetPool(),
+ ATTR_PAGE_HEADERLEFT, ATTR_PAGE_FOOTERRIGHT,
+ ATTR_PAGE, ATTR_PAGE, 0 ),
+ nPageUsage ( (USHORT)SVX_PAGE_ALL ),
+ pStyleDlg ( NULL )
+{
+ SetExchangeSupport();
+
+ SfxViewShell* pSh = SfxViewShell::Current();
+ ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,pSh);
+ Point aPos( aBackgroundBtn.GetPosPixel() );
+
+ aPos.Y() -= 8;
+ aBackgroundBtn.SetPosPixel( aPos );
+
+ aPos.Y() += aBackgroundBtn.GetSizePixel().Height();
+ aPos.Y() += 4;
+ aBtnEdit.SetPosPixel( aPos );
+ aBtnEdit.Show();
+
+ aDataSet.Put( rSet );
+
+ if ( pViewSh )
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+
+ aStrPageStyle = pDoc->GetPageStyle( pViewData->GetTabNo() );
+ }
+
+ aBtnEdit.SetClickHdl ( LINK( this, ScHFPage, BtnHdl ) );
+ aTurnOnBox.SetClickHdl ( LINK( this, ScHFPage, TurnOnHdl ) );
+
+ if ( nId == SID_ATTR_PAGE_HEADERSET )
+ aBtnEdit.SetHelpId( HID_SC_HEADER_EDIT );
+ else
+ aBtnEdit.SetHelpId( HID_SC_FOOTER_EDIT );
+}
+
+//------------------------------------------------------------------
+
+__EXPORT ScHFPage::~ScHFPage()
+{
+}
+
+//------------------------------------------------------------------
+
+void __EXPORT ScHFPage::Reset( const SfxItemSet& rSet )
+{
+ SvxHFPage::Reset( rSet );
+ TurnOnHdl( 0 );
+}
+
+//------------------------------------------------------------------
+
+BOOL __EXPORT ScHFPage::FillItemSet( SfxItemSet& rOutSet )
+{
+ BOOL bResult = SvxHFPage::FillItemSet( rOutSet );
+
+ if ( nId == SID_ATTR_PAGE_HEADERSET )
+ {
+ rOutSet.Put( aDataSet.Get( ATTR_PAGE_HEADERLEFT ) );
+ rOutSet.Put( aDataSet.Get( ATTR_PAGE_HEADERRIGHT ) );
+ }
+ else
+ {
+ rOutSet.Put( aDataSet.Get( ATTR_PAGE_FOOTERLEFT ) );
+ rOutSet.Put( aDataSet.Get( ATTR_PAGE_FOOTERRIGHT ) );
+ }
+
+ return bResult;
+}
+
+//------------------------------------------------------------------
+
+void __EXPORT ScHFPage::ActivatePage( const SfxItemSet& rSet )
+{
+ USHORT nPageWhich = GetWhich( SID_ATTR_PAGE );
+ const SvxPageItem& rPageItem = (const SvxPageItem&)
+ rSet.Get(nPageWhich);
+
+ nPageUsage = rPageItem.GetPageUsage();
+
+ if ( pStyleDlg )
+ aStrPageStyle = pStyleDlg->GetStyleSheet().GetName();
+
+ aDataSet.Put( rSet.Get(ATTR_PAGE) );
+
+ SvxHFPage::ActivatePage( rSet );
+}
+
+//------------------------------------------------------------------
+
+int __EXPORT ScHFPage::DeactivatePage( SfxItemSet* pSet )
+{
+ if ( LEAVE_PAGE == SvxHFPage::DeactivatePage( pSet ) )
+ if ( pSet )
+ FillItemSet( *pSet );
+
+ return LEAVE_PAGE;
+}
+
+//------------------------------------------------------------------
+// Handler:
+//------------------------------------------------------------------
+
+IMPL_LINK( ScHFPage, TurnOnHdl, CheckBox*, EMPTYARG )
+{
+ SvxHFPage::TurnOnHdl( &aTurnOnBox );
+
+ if ( aTurnOnBox.IsChecked() )
+ aBtnEdit.Enable();
+ else
+ aBtnEdit.Disable();
+
+ return NULL;
+}
+
+
+//------------------------------------------------------------------
+
+IMPL_LINK( ScHFPage, BtnHdl, PushButton*, EMPTYARG )
+{
+ // Wenn der Bearbeiten-Dialog direkt aus dem Click-Handler des Buttons
+ // aufgerufen wird, funktioniert im Bearbeiten-Dialog unter OS/2 das
+ // GrabFocus nicht (Bug #41805#).
+ // Mit dem neuen StarView sollte dieser Workaround wieder raus koennen!
+
+ Application::PostUserEvent( LINK( this, ScHFPage, HFEditHdl ) );
+ return 0;
+}
+
+IMPL_LINK( ScHFPage, HFEditHdl, void*, EMPTYARG )
+{
+ SfxViewShell* pViewSh = SfxViewShell::Current();
+
+ if ( !pViewSh )
+ {
+ DBG_ERROR( "Current ViewShell not found." );
+ return NULL;
+ }
+
+ if ( aCntSharedBox.IsEnabled()
+ && !aCntSharedBox.IsChecked() )
+ {
+ USHORT nResId = ( nId == SID_ATTR_PAGE_HEADERSET )
+ ? RID_SCDLG_HFED_HEADER
+ : RID_SCDLG_HFED_FOOTER;
+
+ ScHFEditDlg* pDlg
+ = new ScHFEditDlg( pViewSh->GetViewFrame(), this,
+ aDataSet, aStrPageStyle, nResId );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ aDataSet.Put( *pDlg->GetOutputItemSet() );
+ }
+
+ delete pDlg;
+ }
+ else
+ {
+ String aText;
+ SfxSingleTabDialog* pDlg
+ = new SfxSingleTabDialog( pViewSh->GetViewFrame(), this,
+ aDataSet, 42, FALSE );
+ BOOL bRightPage = aCntSharedBox.IsChecked()
+ || ( SVX_PAGE_LEFT != SvxPageUsage(nPageUsage) );
+
+ if ( nId == SID_ATTR_PAGE_HEADERSET )
+ {
+ aText = ScGlobal::GetRscString( STR_PAGEHEADER );
+ if ( bRightPage )
+ pDlg->SetTabPage( ScRightHeaderEditPage::Create( pDlg, aDataSet ) );
+ else
+ pDlg->SetTabPage( ScLeftHeaderEditPage::Create( pDlg, aDataSet ) );
+ }
+ else
+ {
+ aText = ScGlobal::GetRscString( STR_PAGEFOOTER );
+ if ( bRightPage )
+ pDlg->SetTabPage( ScRightFooterEditPage::Create( pDlg, aDataSet ) );
+ else
+ pDlg->SetTabPage( ScLeftFooterEditPage::Create( pDlg, aDataSet ) );
+ }
+
+ SvxNumType eNumType = ((const SvxPageItem&)aDataSet.Get(ATTR_PAGE)).GetNumType();
+ ((ScHFEditPage*)pDlg->GetTabPage())->SetNumType(eNumType);
+
+ aText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
+ aText += ScGlobal::GetRscString( STR_PAGESTYLE );
+ aText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " ));
+ aText += aStrPageStyle;
+ aText += ')';
+
+ pDlg->SetText( aText );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ aDataSet.Put( *pDlg->GetOutputItemSet() );
+ }
+
+ delete pDlg;
+ }
+
+ return NULL;
+}
+
+//==================================================================
+// class ScHeaderPage
+//==================================================================
+
+ScHeaderPage::ScHeaderPage( Window* pParent, const SfxItemSet& rSet )
+ : ScHFPage( pParent, RID_SVXPAGE_HEADER, rSet, SID_ATTR_PAGE_HEADERSET )
+{
+}
+
+//------------------------------------------------------------------
+
+SfxTabPage* __EXPORT ScHeaderPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
+{
+ return ( new ScHeaderPage( pParent, rCoreSet ) );
+}
+
+//------------------------------------------------------------------
+
+USHORT* __EXPORT ScHeaderPage::GetRanges()
+{
+ return SvxHeaderPage::GetRanges();
+}
+
+//==================================================================
+// class ScFooterPage
+//==================================================================
+
+ScFooterPage::ScFooterPage( Window* pParent, const SfxItemSet& rSet )
+ : ScHFPage( pParent, RID_SVXPAGE_FOOTER, rSet, SID_ATTR_PAGE_FOOTERSET )
+{
+}
+
+//------------------------------------------------------------------
+
+SfxTabPage* __EXPORT ScFooterPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
+{
+ return ( new ScFooterPage( pParent, rCoreSet ) );
+}
+
+//------------------------------------------------------------------
+
+USHORT* __EXPORT ScFooterPage::GetRanges()
+{
+ return SvxHeaderPage::GetRanges();
+}
+
+
+
+
diff --git a/sc/source/ui/pagedlg/tphf.src b/sc/source/ui/pagedlg/tphf.src
new file mode 100644
index 000000000000..90dd93ade4fb
--- /dev/null
+++ b/sc/source/ui/pagedlg/tphf.src
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * $RCSfile: tphf.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+PushButton RID_SCBTN_HFEDIT
+{
+ TabStop = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "Bearbei~ten..." ;
+ Text [ ENGLISH ] = "Edi~t..." ;
+ Text [ norwegian ] = "Edi~t..." ;
+ Text [ italian ] = "Modifica..." ;
+ Text [ portuguese_brazilian ] = "Edi~tar..." ;
+ Text [ portuguese ] = "Edi~tar..." ;
+ Text [ finnish ] = "~Muokkaa..." ;
+ Text [ danish ] = "Rediger..." ;
+ Text [ french ] = "É~diter..." ;
+ Text [ swedish ] = "Redige~ra..." ;
+ Text [ dutch ] = "Be~werken..." ;
+ Text [ spanish ] = "~Editar..." ;
+ Text [ english_us ] = "~Edit..." ;
+ Text[ chinese_simplified ] = "±à¼­(~E)...";
+ Text[ russian ] = "Ïðàâêà...";
+ Text[ polish ] = "Edytuj...";
+ Text[ japanese ] = "•ÒW(~E)...";
+ Text[ chinese_traditional ] = "½s¿è(~E)...";
+ Text[ arabic ] = "ÊÍÑíÑ...";
+ Text[ greek ] = "Åðåîåñãáóßá...";
+ Text[ korean ] = "ÆíÁý(~E)...";
+ Text[ turkish ] = "~Düzenle...";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/pagedlg/tphfedit.cxx b/sc/source/ui/pagedlg/tphfedit.cxx
new file mode 100644
index 000000000000..666ac5bbc6f8
--- /dev/null
+++ b/sc/source/ui/pagedlg/tphfedit.cxx
@@ -0,0 +1,821 @@
+/*************************************************************************
+ *
+ * $RCSfile: tphfedit.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#define _TPHFEDIT_CXX
+#include "scitems.hxx"
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <svx/chardlg.hxx>
+#include <svx/editobj.hxx>
+#include <svx/editstat.hxx>
+#include <svx/editview.hxx>
+#include <svx/flditem.hxx>
+#include <sfx2/basedlgs.hxx>
+#include <sfx2/objsh.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/svapp.hxx>
+
+#include "tphfedit.hxx"
+#include "editutil.hxx"
+#include "global.hxx"
+#include "attrib.hxx"
+#include "patattr.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "tabvwsh.hxx"
+#include "prevwsh.hxx"
+#include "hfedtdlg.hrc"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+static USHORT pPageRightHeaderRanges[] = { SID_SCATTR_PAGE_HEADERRIGHT,
+ SID_SCATTR_PAGE_HEADERRIGHT,
+ 0 };
+
+static USHORT pPageRightFooterRanges[] = { SID_SCATTR_PAGE_FOOTERRIGHT,
+ SID_SCATTR_PAGE_FOOTERRIGHT,
+ 0 };
+
+static USHORT pPageLeftHeaderRanges[] = { SID_SCATTR_PAGE_HEADERLEFT,
+ SID_SCATTR_PAGE_HEADERLEFT,
+ 0 };
+
+static USHORT pPageLeftFooterRanges[] = { SID_SCATTR_PAGE_FOOTERLEFT,
+ SID_SCATTR_PAGE_FOOTERLEFT,
+ 0 };
+
+static ScEditWindow* pActiveEdWnd = NULL;
+
+
+
+//========================================================================
+// class ScHFEditPage
+//
+
+ScHFEditPage::ScHFEditPage( Window* pParent,
+ USHORT nResId,
+ const SfxItemSet& rCoreAttrs,
+ USHORT nWhichId )
+
+ : SfxTabPage ( pParent, ScResId( nResId ), rCoreAttrs ),
+
+ aWndLeft ( this, ScResId( WND_LEFT ) ),
+ aWndCenter ( this, ScResId( WND_CENTER ) ),
+ aWndRight ( this, ScResId( WND_RIGHT ) ),
+ aFtLeft ( this, ScResId( FT_LEFT ) ),
+ aFtCenter ( this, ScResId( FT_CENTER ) ),
+ aFtRight ( this, ScResId( FT_RIGHT ) ),
+ aFtInfo ( this, ScResId( FT_INFO ) ),
+ aGbInfo ( this, ScResId( GB_INFO ) ),
+ aBtnText ( this, ScResId( BTN_TEXT ) ),
+ aBtnPage ( this, ScResId( BTN_PAGE ) ),
+ aBtnLastPage ( this, ScResId( BTN_PAGES ) ),
+ aBtnDate ( this, ScResId( BTN_DATE ) ),
+ aBtnTime ( this, ScResId( BTN_TIME ) ),
+ aBtnFile ( this, ScResId( BTN_FILE ) ),
+ aBtnTable ( this, ScResId( BTN_TABLE ) ),
+ aPopUpFile ( ScResId( RID_POPUP_FCOMMAND) ),
+ nWhich ( nWhichId )
+{
+ //! use default style from current document?
+ //! if font color is used, header/footer background color must be set
+
+ ScPatternAttr aPatAttr( rCoreAttrs.GetPool() );
+ Font aFnt;
+
+ aPatAttr.GetFont( aFnt );
+ aBtnFile.SetPopupMenu(&aPopUpFile);
+
+ aBtnFile.SetMenuHdl( LINK( this, ScHFEditPage, MenuHdl ) );
+ aBtnText .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
+ aBtnPage .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
+ aBtnLastPage.SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
+ aBtnDate .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
+ aBtnTime .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
+ aBtnFile .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
+ aBtnTable .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) );
+
+ aWndLeft. SetFont( aFnt );
+ aWndCenter. SetFont( aFnt );
+ aWndRight. SetFont( aFnt );
+
+ FillCmdArr();
+
+ aWndLeft.GrabFocus();
+
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+
+__EXPORT ScHFEditPage::~ScHFEditPage()
+{
+}
+
+void ScHFEditPage::SetNumType(SvxNumType eNumType)
+{
+ aWndLeft.SetNumType(eNumType);
+ aWndCenter.SetNumType(eNumType);
+ aWndRight.SetNumType(eNumType);
+}
+
+// -----------------------------------------------------------------------
+
+#define IS_AVAILABLE(w)(rCoreSet.GetItemState( (w) ) >= SFX_ITEM_AVAILABLE)
+
+void __EXPORT ScHFEditPage::Reset( const SfxItemSet& rCoreSet )
+{
+ if ( IS_AVAILABLE( nWhich ) )
+ {
+ const ScPageHFItem& rItem = (const ScPageHFItem&)(rCoreSet.Get( nWhich ));
+
+ const EditTextObject* pLeft = rItem.GetLeftArea();
+ const EditTextObject* pCenter = rItem.GetCenterArea();
+ const EditTextObject* pRight = rItem.GetRightArea();
+
+ if ( pLeft && pCenter && pRight )
+ {
+ aWndLeft .SetText( *pLeft );
+ aWndCenter .SetText( *pCenter );
+ aWndRight .SetText( *pRight );
+ }
+ }
+}
+
+#undef IS_AVAILABLE
+
+// -----------------------------------------------------------------------
+
+BOOL __EXPORT ScHFEditPage::FillItemSet( SfxItemSet& rCoreSet )
+{
+ ScPageHFItem aItem( nWhich );
+ EditTextObject* pLeft = aWndLeft .CreateTextObject();
+ EditTextObject* pCenter = aWndCenter.CreateTextObject();
+ EditTextObject* pRight = aWndRight .CreateTextObject();
+
+ aItem.SetLeftArea ( *pLeft );
+ aItem.SetCenterArea( *pCenter );
+ aItem.SetRightArea ( *pRight );
+ delete pLeft;
+ delete pCenter;
+ delete pRight;
+
+ rCoreSet.Put( aItem );
+
+ return TRUE;
+}
+
+// -----------------------------------------------------------------------
+
+#define SET_CMD(i,id) \
+ aCmd = aDel; \
+ aCmd += ScGlobal::GetRscString( id ); \
+ aCmd += aDel; \
+ aCmdArr[i] = aCmd;
+
+// -----------------------------------------------------------------------
+
+void ScHFEditPage::FillCmdArr()
+{
+ String aDel( ScGlobal::GetRscString( STR_HFCMD_DELIMITER ) );
+ String aCmd;
+
+ SET_CMD( 0, STR_HFCMD_PAGE )
+ SET_CMD( 1, STR_HFCMD_PAGES )
+ SET_CMD( 2, STR_HFCMD_DATE )
+ SET_CMD( 3, STR_HFCMD_TIME )
+ SET_CMD( 4, STR_HFCMD_FILE )
+ SET_CMD( 5, STR_HFCMD_TABLE )
+}
+
+#undef SET_CMD
+
+//-----------------------------------------------------------------------
+// Handler:
+//-----------------------------------------------------------------------
+
+IMPL_LINK( ScHFEditPage, ClickHdl, ImageButton*, pBtn )
+{
+ if ( !pActiveEdWnd )
+ return NULL;
+
+ if ( pBtn == &aBtnText )
+ {
+ pActiveEdWnd->SetCharAttriutes();
+ }
+ else
+ {
+ if ( pBtn == &aBtnPage )
+ pActiveEdWnd->InsertField( SvxFieldItem(SvxPageField()) );
+ else if ( pBtn == &aBtnLastPage )
+ pActiveEdWnd->InsertField( SvxFieldItem(SvxPagesField()) );
+ else if ( pBtn == &aBtnDate )
+ pActiveEdWnd->InsertField( SvxFieldItem(SvxDateField(Date(),SVXDATETYPE_VAR)) );
+ else if ( pBtn == &aBtnTime )
+ pActiveEdWnd->InsertField( SvxFieldItem(SvxTimeField()) );
+ else if ( pBtn == &aBtnFile )
+ {
+ pActiveEdWnd->InsertField( SvxFieldItem( SvxFileField() ) );
+ }
+ else if ( pBtn == &aBtnTable )
+ pActiveEdWnd->InsertField( SvxFieldItem(SvxTableField()) );
+ }
+ pActiveEdWnd->GrabFocus();
+
+ return NULL;
+}
+
+IMPL_LINK( ScHFEditPage, MenuHdl, ScExtIButton*, pBtn )
+{
+ if ( !pActiveEdWnd )
+ return NULL;
+
+ if(pBtn!=NULL)
+ {
+ switch(pBtn->GetSelected())
+ {
+ case FILE_COMMAND_TITEL:
+ pActiveEdWnd->InsertField( SvxFieldItem( SvxFileField() ) );
+ break;
+ case FILE_COMMAND_FILENAME:
+ pActiveEdWnd->InsertField( SvxFieldItem( SvxExtFileField(
+ EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_NAME_EXT ) ) );
+ break;
+ case FILE_COMMAND_PATH:
+ pActiveEdWnd->InsertField( SvxFieldItem( SvxExtFileField(
+ EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_FULLPATH ) ) );
+ break;
+ }
+ }
+ return NULL;
+}
+
+//========================================================================
+// class ScRightHeaderEditPage
+//========================================================================
+
+ScRightHeaderEditPage::ScRightHeaderEditPage( Window* pParent, const SfxItemSet& rCoreSet )
+ : ScHFEditPage( pParent, RID_SCPAGE_HFED_HR, rCoreSet,
+ rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERRIGHT) )
+ {}
+
+// -----------------------------------------------------------------------
+
+USHORT* __EXPORT ScRightHeaderEditPage::GetRanges()
+ { return pPageRightHeaderRanges; }
+
+// -----------------------------------------------------------------------
+
+SfxTabPage* __EXPORT ScRightHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
+ { return ( new ScRightHeaderEditPage( pParent, rCoreSet ) ); };
+
+
+//========================================================================
+// class ScLeftHeaderEditPage
+//========================================================================
+
+ScLeftHeaderEditPage::ScLeftHeaderEditPage( Window* pParent, const SfxItemSet& rCoreSet )
+ : ScHFEditPage( pParent, RID_SCPAGE_HFED_HL, rCoreSet,
+ rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERLEFT) )
+ {}
+
+// -----------------------------------------------------------------------
+
+USHORT* __EXPORT ScLeftHeaderEditPage::GetRanges()
+ { return pPageLeftHeaderRanges; }
+
+// -----------------------------------------------------------------------
+
+SfxTabPage* __EXPORT ScLeftHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
+ { return ( new ScLeftHeaderEditPage( pParent, rCoreSet ) ); };
+
+//========================================================================
+// class ScRightFooterEditPage
+//========================================================================
+
+ScRightFooterEditPage::ScRightFooterEditPage( Window* pParent, const SfxItemSet& rCoreSet )
+ : ScHFEditPage( pParent, RID_SCPAGE_HFED_FR, rCoreSet,
+ rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERRIGHT) )
+ {}
+
+// -----------------------------------------------------------------------
+
+USHORT* __EXPORT ScRightFooterEditPage::GetRanges()
+ { return pPageRightFooterRanges; }
+
+// -----------------------------------------------------------------------
+
+SfxTabPage* __EXPORT ScRightFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
+ { return ( new ScRightFooterEditPage( pParent, rCoreSet ) ); };
+
+//========================================================================
+// class ScLeftFooterEditPage
+//========================================================================
+
+ScLeftFooterEditPage::ScLeftFooterEditPage( Window* pParent, const SfxItemSet& rCoreSet )
+ : ScHFEditPage( pParent, RID_SCPAGE_HFED_FL, rCoreSet,
+ rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERLEFT) )
+ {}
+
+// -----------------------------------------------------------------------
+
+USHORT* __EXPORT ScLeftFooterEditPage::GetRanges()
+ { return pPageLeftFooterRanges; }
+
+// -----------------------------------------------------------------------
+
+SfxTabPage* __EXPORT ScLeftFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet )
+ { return ( new ScLeftFooterEditPage( pParent, rCoreSet ) ); };
+
+//========================================================================
+
+void lcl_GetFieldData( ScHeaderFieldData& rData )
+{
+ SfxViewShell* pShell = SfxViewShell::Current();
+ if (pShell)
+ {
+ if (pShell->ISA(ScTabViewShell))
+ ((ScTabViewShell*)pShell)->FillFieldData(rData);
+ else if (pShell->ISA(ScPreviewShell))
+ ((ScPreviewShell*)pShell)->FillFieldData(rData);
+ }
+}
+
+//========================================================================
+// class ScEditWindow
+//========================================================================
+
+ScEditWindow::ScEditWindow( Window* pParent, const ResId& rResId )
+ : Control( pParent, rResId )
+{
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ Color aBgColor = rStyleSettings.GetWindowColor();
+
+ SetMapMode( MAP_TWIP );
+ SetPointer( POINTER_TEXT );
+ SetBackground( aBgColor );
+
+ Size aSize( GetOutputSize() );
+ aSize.Height() *= 4;
+
+ pEdEngine = new ScHeaderEditEngine( EditEngine::CreatePool(), TRUE );
+ pEdEngine->SetPaperSize( aSize );
+ pEdEngine->SetRefDevice( this );
+
+ ScHeaderFieldData aData;
+ lcl_GetFieldData( aData );
+
+ // Feldbefehle:
+ pEdEngine->SetData( aData );
+ pEdEngine->SetControlWord( pEdEngine->GetControlWord() | EE_CNTRL_MARKFIELDS );
+
+ pEdView = new EditView( pEdEngine, this );
+ pEdView->SetOutputArea( Rectangle( Point(0,0), GetOutputSize() ) );
+
+ pEdView->SetBackgroundColor( aBgColor );
+ pEdEngine->InsertView( pEdView );
+}
+
+// -----------------------------------------------------------------------
+
+__EXPORT ScEditWindow::~ScEditWindow()
+{
+ delete pEdEngine;
+ delete pEdView;
+}
+
+// -----------------------------------------------------------------------
+
+void ScEditWindow::SetNumType(SvxNumType eNumType)
+{
+ pEdEngine->SetNumType(eNumType);
+ pEdEngine->UpdateFields();
+}
+
+// -----------------------------------------------------------------------
+
+EditTextObject* __EXPORT ScEditWindow::CreateTextObject()
+{
+ // wegen #38841# die Absatzattribute zuruecksetzen
+ // (GetAttribs beim Format-Dialog-Aufruf gibt immer gesetzte Items zurueck)
+
+ const SfxItemSet& rEmpty = pEdEngine->GetEmptyItemSet();
+ USHORT nParCnt = pEdEngine->GetParagraphCount();
+ for (USHORT i=0; i<nParCnt; i++)
+ pEdEngine->SetParaAttribs( i, rEmpty );
+
+ return pEdEngine->CreateTextObject();
+}
+
+// -----------------------------------------------------------------------
+
+void ScEditWindow::SetFont( const Font& rFont )
+{
+ SfxItemSet* pSet = new SfxItemSet( pEdEngine->GetEmptyItemSet() );
+ Font aTextFont( rFont );
+
+ aTextFont.SetTransparent( TRUE );
+ aTextFont.SetColor( COL_BLACK );
+ aTextFont.SetFillColor( COL_WHITE );
+
+ pEdEngine->SetFontInfoInItemSet( *pSet, aTextFont );
+ pEdEngine->SetDefaults( pSet );
+}
+
+// -----------------------------------------------------------------------
+
+void ScEditWindow::SetText( const EditTextObject& rTextObject )
+{
+ pEdEngine->SetText( rTextObject );
+}
+
+// -----------------------------------------------------------------------
+
+void ScEditWindow::InsertField( const SvxFieldItem& rFld )
+{
+ pEdView->InsertField( rFld );
+}
+
+// -----------------------------------------------------------------------
+
+void ScEditWindow::SetCharAttriutes()
+{
+ SfxObjectShell* pDocSh = SfxObjectShell::Current();
+
+ SfxViewShell* pViewSh = SfxViewShell::Current();
+
+ ScTabViewShell* pTabViewSh = PTR_CAST(ScTabViewShell, SfxViewShell::Current());
+
+
+ DBG_ASSERT( pDocSh, "Current DocShell not found" );
+ DBG_ASSERT( pViewSh, "Current ViewShell not found" );
+
+ if ( pDocSh && pViewSh )
+ {
+ if(pTabViewSh!=NULL) pTabViewSh->SetInFormatDialog(TRUE);
+
+ SfxItemSet aSet( pEdView->GetAttribs() );
+
+ const SfxPoolItem* pInfoItem
+ = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
+
+ SfxSingleTabDialog* pDlg
+ = new SfxSingleTabDialog( pViewSh->GetViewFrame(),
+ GetParent(),
+ aSet,
+ RID_SVXPAGE_CHAR_STD,
+ FALSE );
+ SvxCharStdPage* pPage
+ = (SvxCharStdPage*)SvxCharStdPage::Create( pDlg, aSet );
+
+ pPage->SetFontList( (const SvxFontListItem&)*pInfoItem );
+ pDlg->SetTabPage( pPage );
+ pDlg->SetText( ScGlobal::GetRscString( STR_TEXTATTRS ) );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ aSet.Put( *pDlg->GetOutputItemSet() );
+ pEdView->SetAttribs( aSet );
+ }
+ if(pTabViewSh!=NULL) pTabViewSh->SetInFormatDialog(FALSE);
+ delete pDlg;
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScEditWindow::Paint( const Rectangle& rRec )
+{
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ Color aBgColor = rStyleSettings.GetWindowColor();
+
+ pEdView->SetBackgroundColor( aBgColor );
+
+ SetBackground( aBgColor );
+
+ Control::Paint( rRec );
+
+ pEdView->Paint( rRec );
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScEditWindow::MouseMove( const MouseEvent& rMEvt )
+{
+ pEdView->MouseMove( rMEvt );
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScEditWindow::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if ( !HasFocus() )
+ GrabFocus();
+
+ pEdView->MouseButtonDown( rMEvt );
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScEditWindow::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ pEdView->MouseButtonUp( rMEvt );
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScEditWindow::KeyInput( const KeyEvent& rKEvt )
+{
+ USHORT nKey = rKEvt.GetKeyCode().GetModifier()
+ + rKEvt.GetKeyCode().GetCode();
+
+ if ( nKey == KEY_TAB || nKey == KEY_TAB + KEY_SHIFT )
+ {
+ Control::KeyInput( rKEvt );
+ }
+ else if ( !pEdView->PostKeyEvent( rKEvt ) )
+ {
+ Control::KeyInput( rKEvt );
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScEditWindow::GetFocus()
+{
+ pActiveEdWnd = this;
+}
+/*
+class ScExtIButton : public ImageButton
+{
+private:
+
+ Timer aTimer;
+ ScPopupMenu* pPopupMenu;
+
+ DECL_LINK( TimerHdl, Timer*);
+
+ void DrawArrow();
+
+protected:
+
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt);
+
+ virtual void StartPopup();
+
+public:
+
+ ScExtIButton(Window* pParent, const ResId& rResId );
+
+ void SetPopupMenu(ScPopupMenu* pPopUp);
+
+ USHORT GetSelected();
+
+ void SetMenuHdl( const Link& rLink ) { aFxLink = rLink; }
+ const Link& GetMenuHdl() const { return aFxLink; }
+
+}
+*/
+ScExtIButton::ScExtIButton(Window* pParent, const ResId& rResId )
+: ImageButton(pParent,rResId),
+ pPopupMenu(NULL)
+{
+ nSelected=0;
+ aTimer.SetTimeout(600);
+ SetDropDown( TRUE);
+
+// DrawArrow();
+}
+
+void ScExtIButton::SetPopupMenu(ScPopupMenu* pPopUp)
+{
+ pPopupMenu=pPopUp;
+}
+
+USHORT ScExtIButton::GetSelected()
+{
+ return nSelected;
+}
+
+void ScExtIButton::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if(!aTimer.IsActive())
+ {
+ aTimer.Start();
+ aTimer.SetTimeoutHdl(LINK( this, ScExtIButton, TimerHdl));
+ }
+
+ ImageButton::MouseButtonDown(rMEvt );
+}
+void ScExtIButton::MouseButtonUp( const MouseEvent& rMEvt)
+{
+ aTimer.Stop();
+ aTimer.SetTimeoutHdl(Link());
+ ImageButton::MouseButtonUp(rMEvt );
+}
+
+void ScExtIButton::Click()
+{
+ aTimer.Stop();
+ aTimer.SetTimeoutHdl(Link());
+ ImageButton::Click();
+}
+
+void ScExtIButton::StartPopup()
+{
+ nSelected=0;
+
+ if(pPopupMenu!=NULL)
+ {
+ SetPressed( TRUE );
+ EndSelection();
+ Point aPoint(0,0);
+ aPoint.Y()=GetOutputSizePixel().Height();
+
+ nSelected=pPopupMenu->Execute( this, aPoint );
+
+ if(nSelected)
+ {
+ aMLink.Call(this);
+ }
+ SetPressed( FALSE);
+ }
+}
+
+long ScExtIButton::PreNotify( NotifyEvent& rNEvt )
+{
+ USHORT nSwitch=rNEvt.GetType();
+ if(nSwitch==EVENT_MOUSEBUTTONUP)
+ {
+ MouseButtonUp(*rNEvt.GetMouseEvent());
+ }
+
+ return ImageButton::PreNotify(rNEvt );
+}
+
+IMPL_LINK( ScExtIButton, TimerHdl, Timer*, pTi)
+{
+ StartPopup();
+ return 0;
+}
+
+/*
+static void ImplDrawToolArrow( ToolBox* pBox, long nX, long nY, BOOL bBlack,
+ BOOL bLeft = FALSE, BOOL bTop = FALSE )
+{
+ Color aOldFillColor = pBox->GetFillColor();
+ WindowAlign eAlign = pBox->meAlign;
+ if ( bLeft )
+ eAlign = WINDOWALIGN_RIGHT;
+ else if ( bTop )
+ eAlign = WINDOWALIGN_BOTTOM;
+
+ switch ( eAlign )
+ {
+ case WINDOWALIGN_LEFT:
+ if ( bBlack )
+ pBox->SetFillColor( Color( COL_BLACK ) );
+ pBox->DrawRect( Rectangle( nX+0, nY+0, nX+0, nY+6 ) );
+ pBox->DrawRect( Rectangle( nX+1, nY+1, nX+1, nY+5 ) );
+ pBox->DrawRect( Rectangle( nX+2, nY+2, nX+2, nY+4 ) );
+ pBox->DrawRect( Rectangle( nX+3, nY+3, nX+3, nY+3 ) );
+ if ( bBlack )
+ {
+ pBox->SetFillColor( aOldFillColor );
+ pBox->DrawRect( Rectangle( nX+1, nY+2, nX+1, nY+4 ) );
+ pBox->DrawRect( Rectangle( nX+2, nY+3, nX+2, nY+3 ) );
+ }
+ break;
+ case WINDOWALIGN_TOP:
+ if ( bBlack )
+ pBox->SetFillColor( Color( COL_BLACK ) );
+ pBox->DrawRect( Rectangle( nX+0, nY+0, nX+6, nY+0 ) );
+ pBox->DrawRect( Rectangle( nX+1, nY+1, nX+5, nY+1 ) );
+ pBox->DrawRect( Rectangle( nX+2, nY+2, nX+4, nY+2 ) );
+ pBox->DrawRect( Rectangle( nX+3, nY+3, nX+3, nY+3 ) );
+ if ( bBlack )
+ {
+ pBox->SetFillColor( aOldFillColor );
+ pBox->DrawRect( Rectangle( nX+2, nY+1, nX+4, nY+1 ) );
+ pBox->DrawRect( Rectangle( nX+3, nY+2, nX+3, nY+2 ) );
+ }
+ break;
+ case WINDOWALIGN_RIGHT:
+ if ( bBlack )
+ pBox->SetFillColor( Color( COL_BLACK ) );
+ pBox->DrawRect( Rectangle( nX+3, nY+0, nX+3, nY+6 ) );
+ pBox->DrawRect( Rectangle( nX+2, nY+1, nX+2, nY+5 ) );
+ pBox->DrawRect( Rectangle( nX+1, nY+2, nX+1, nY+4 ) );
+ pBox->DrawRect( Rectangle( nX+0, nY+3, nX+0, nY+3 ) );
+ if ( bBlack )
+ {
+ pBox->SetFillColor( aOldFillColor );
+ pBox->DrawRect( Rectangle( nX+2, nY+2, nX+2, nY+4 ) );
+ pBox->DrawRect( Rectangle( nX+1, nY+3, nX+1, nY+3 ) );
+ }
+ break;
+ case WINDOWALIGN_BOTTOM:
+ if ( bBlack )
+ pBox->SetFillColor( Color( COL_BLACK ) );
+ pBox->DrawRect( Rectangle( nX+0, nY+3, nX+6, nY+3 ) );
+ pBox->DrawRect( Rectangle( nX+1, nY+2, nX+5, nY+2 ) );
+ pBox->DrawRect( Rectangle( nX+2, nY+1, nX+4, nY+1 ) );
+ pBox->DrawRect( Rectangle( nX+3, nY+0, nX+3, nY+0 ) );
+ if ( bBlack )
+ {
+ pBox->SetFillColor( aOldFillColor );
+ pBox->DrawRect( Rectangle( nX+2, nY+2, nX+4, nY+2 ) );
+ pBox->DrawRect( Rectangle( nX+3, nY+1, nX+3, nY+1 ) );
+ }
+ break;
+ }
+}
+Down
+ - Timer starten
+
+Click
+ - Timer abbrechen
+
+Timer
+ if ( ??? )
+ {
+ - SetPressed( TRUE );
+ - EndSelection();
+ - Menu anzeigen
+ - SetPressed( FALSE );
+ }
+
+
+*/
+
+
diff --git a/sc/source/ui/pagedlg/tptable.cxx b/sc/source/ui/pagedlg/tptable.cxx
new file mode 100644
index 000000000000..9d134a895694
--- /dev/null
+++ b/sc/source/ui/pagedlg/tptable.cxx
@@ -0,0 +1,502 @@
+/*************************************************************************
+ *
+ * $RCSfile: tptable.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#define _TPTABLE_CXX
+#include "scitems.hxx"
+
+#include "tptable.hxx"
+#include "global.hxx"
+#include "attrib.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "pagedlg.hrc"
+
+#undef _TPTABLE_CXX
+
+// STATIC DATA -----------------------------------------------------------
+
+static USHORT pPageTableRanges[] =
+{
+ ATTR_PAGE_NOTES, ATTR_PAGE_FIRSTPAGENO,
+ 0
+};
+
+BOOL lcl_PutVObjModeItem( USHORT nWhich,
+ SfxItemSet& rCoreSet,
+ const SfxItemSet& rOldSet,
+ const CheckBox& rBtn );
+
+BOOL lcl_PutScaleItem( USHORT nWhich,
+ SfxItemSet& rCoreSet,
+ const SfxItemSet& rOldSet,
+ const RadioButton& rBtn,
+ const NumericField& rEd );
+
+BOOL lcl_PutBoolItem( USHORT nWhich,
+ SfxItemSet& rCoreSet,
+ const SfxItemSet& rOldSet,
+ BOOL bIsChecked,
+ BOOL bSavedValue );
+
+//------------------------------------------------------------------------
+
+#define PAGENO_HDL LINK(this,ScTablePage,PageNoHdl)
+#define PAGEDIR_HDL LINK(this,ScTablePage,PageDirHdl)
+#define SCALE_HDL LINK(this,ScTablePage,ScaleHdl)
+#define WAS_DEFAULT(w,s) (SFX_ITEM_DEFAULT==(s).GetItemState((w),TRUE))
+#define GET_BOOL(sid,set) ((const SfxBoolItem&)((set).Get(GetWhich((sid))))).GetValue()
+#define GET_USHORT(sid,set) (USHORT)((const SfxUInt16Item&)((set).Get(GetWhich((sid))))).GetValue()
+#define GET_SHOW(sid,set) ( ScVObjMode( ((const ScViewObjectModeItem&)((set).Get(GetWhich((sid))))).GetValue() ) \
+ == VOBJ_MODE_SHOW )
+
+//========================================================================
+
+ScTablePage::ScTablePage( Window* pParent,
+ const SfxItemSet& rCoreAttrs )
+
+ : SfxTabPage ( pParent,
+ ScResId( RID_SCPAGE_TABLE ),
+ rCoreAttrs ),
+
+ aBtnHeaders ( this, ScResId( BTN_HEADER ) ),
+ aBtnGrid ( this, ScResId( BTN_GRID ) ),
+ aBtnNotes ( this, ScResId( BTN_NOTES ) ),
+ aBtnObjects ( this, ScResId( BTN_OBJECTS ) ),
+ aBtnCharts ( this, ScResId( BTN_CHARTS ) ),
+ aBtnDrawings ( this, ScResId( BTN_DRAWINGS ) ),
+ aBtnFormulas ( this, ScResId( BTN_FORMULAS ) ),
+ aBtnNullVals ( this, ScResId( BTN_NULLVALS ) ),
+ aGbPrint ( this, ScResId( GB_PRINT ) ),
+ aBtnTopDown ( this, ScResId( BTN_TOPDOWN ) ),
+ aBtnLeftRight ( this, ScResId( BTN_LEFTRIGHT ) ),
+ aBmpPageDir ( this, ScResId( BMP_PAGEDIR ) ),
+ aImgTopDown ( ScResId( IMG_TOPDOWN ) ),
+ aImgLeftRight ( ScResId( IMG_LEFTRIGHT ) ),
+ aBtnPageNo ( this, ScResId( BTN_PAGENO ) ),
+ aEdPageNo ( this, ScResId( ED_PAGENO ) ),
+ aGbPageDir ( this, ScResId( GB_PAGEDIR ) ),
+ aBtnScaleAll ( this, ScResId( BTN_SCALEALL ) ),
+ aBtnScalePageNum ( this, ScResId( BTN_SCALEPAGENUM ) ),
+ aEdScaleAll ( this, ScResId( ED_SCALEALL ) ),
+ aEdScalePageNum ( this, ScResId( ED_SCALEPAGENUM ) ),
+ aGbScale ( this, ScResId( GB_SCALE ) )
+{
+ SetExchangeSupport();
+ aBtnPageNo .SetClickHdl( PAGENO_HDL );
+ aBtnTopDown .SetClickHdl( PAGEDIR_HDL );
+ aBtnLeftRight .SetClickHdl( PAGEDIR_HDL );
+ aBtnScaleAll .SetClickHdl( SCALE_HDL );
+ aBtnScalePageNum .SetClickHdl( SCALE_HDL );
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+
+__EXPORT ScTablePage::~ScTablePage()
+{
+}
+
+//------------------------------------------------------------------------
+
+USHORT* __EXPORT ScTablePage::GetRanges()
+{
+ return pPageTableRanges;
+}
+
+// -----------------------------------------------------------------------
+
+SfxTabPage* __EXPORT ScTablePage::Create( Window* pParent,
+ const SfxItemSet& rCoreSet )
+{
+ return ( new ScTablePage( pParent, rCoreSet ) );
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScTablePage::Reset( const SfxItemSet& rCoreSet )
+{
+ BOOL bTopDown = GET_BOOL( SID_SCATTR_PAGE_TOPDOWN, rCoreSet );
+ USHORT nWhich = 0;
+
+ //-----------
+ // BOOL-Flags
+ //-----------
+ aBtnNotes .Check( GET_BOOL(SID_SCATTR_PAGE_NOTES,rCoreSet) );
+ aBtnGrid .Check( GET_BOOL(SID_SCATTR_PAGE_GRID,rCoreSet) );
+ aBtnHeaders .Check( GET_BOOL(SID_SCATTR_PAGE_HEADERS,rCoreSet) );
+ aBtnFormulas .Check( GET_BOOL(SID_SCATTR_PAGE_FORMULAS,rCoreSet) );
+ aBtnNullVals .Check( GET_BOOL(SID_SCATTR_PAGE_NULLVALS,rCoreSet) );
+ aBtnTopDown .Check( bTopDown );
+ aBtnLeftRight .Check( !bTopDown );
+
+ //------------------
+ // Erste Druckseite:
+ //------------------
+ USHORT nPage = GET_USHORT(SID_SCATTR_PAGE_FIRSTPAGENO,rCoreSet);
+ aBtnPageNo.Check( nPage != 0 );
+ aEdPageNo.SetValue( (nPage != 0) ? nPage : 1 );
+ PageNoHdl( NULL );
+
+ //-------------------
+ // Objektdarstellung:
+ //-------------------
+ aBtnCharts .Check( GET_SHOW( SID_SCATTR_PAGE_CHARTS, rCoreSet ) );
+ aBtnObjects .Check( GET_SHOW( SID_SCATTR_PAGE_OBJECTS, rCoreSet ) );
+ aBtnDrawings .Check( GET_SHOW( SID_SCATTR_PAGE_DRAWINGS, rCoreSet ) );
+
+ //------------
+ // Skalierung:
+ //------------
+
+ nWhich = GetWhich(SID_SCATTR_PAGE_SCALE);
+
+ if ( rCoreSet.GetItemState( nWhich, TRUE ) >= SFX_ITEM_AVAILABLE )
+ {
+ USHORT nScale = ((const SfxUInt16Item&)rCoreSet.Get(nWhich)).GetValue();
+
+ aBtnScaleAll.Check( (nScale>0) );
+ aEdScaleAll .SetValue( (nScale>0) ? nScale : 100 );
+ }
+
+ nWhich = GetWhich(SID_SCATTR_PAGE_SCALETOPAGES);
+
+ if ( rCoreSet.GetItemState( nWhich, TRUE ) >= SFX_ITEM_AVAILABLE )
+ {
+ USHORT nPages = ((const SfxUInt16Item&)rCoreSet.Get(nWhich)).GetValue();
+
+ aBtnScalePageNum.Check( (nPages>0) );
+ aEdScalePageNum .SetValue( (nPages>0) ? nPages : 1 );
+ }
+
+ PageDirHdl( NULL );
+ ScaleHdl( NULL );
+
+ // merken fuer FillItemSet
+ aBtnFormulas .SaveValue();
+ aBtnNullVals .SaveValue();
+ aBtnNotes .SaveValue();
+ aBtnGrid .SaveValue();
+ aBtnHeaders .SaveValue();
+ aBtnTopDown .SaveValue();
+ aBtnLeftRight .SaveValue();
+ aBtnScaleAll .SaveValue();
+ aBtnScalePageNum.SaveValue();
+ aBtnCharts .SaveValue();
+ aBtnObjects .SaveValue();
+ aBtnDrawings .SaveValue();
+ aBtnPageNo .SaveValue();
+ aEdPageNo .SaveValue();
+ aEdScaleAll .SaveValue();
+ aEdScalePageNum .SaveValue();
+}
+
+// -----------------------------------------------------------------------
+
+BOOL __EXPORT ScTablePage::FillItemSet( SfxItemSet& rCoreSet )
+{
+ const SfxItemSet& rOldSet = GetItemSet();
+ USHORT nWhichPageNo = GetWhich(SID_SCATTR_PAGE_FIRSTPAGENO);
+ BOOL bDataChanged = FALSE;
+
+ //-----------
+ // BOOL-Flags
+ //-----------
+
+ bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_NOTES),
+ rCoreSet, rOldSet,
+ aBtnNotes.IsChecked(),
+ aBtnNotes.GetSavedValue() );
+
+ bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_GRID),
+ rCoreSet, rOldSet,
+ aBtnGrid.IsChecked(),
+ aBtnGrid.GetSavedValue() );
+
+ bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_HEADERS),
+ rCoreSet, rOldSet,
+ aBtnHeaders.IsChecked(),
+ aBtnHeaders.GetSavedValue() );
+
+ bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_TOPDOWN),
+ rCoreSet, rOldSet,
+ aBtnTopDown.IsChecked(),
+ aBtnTopDown.GetSavedValue() );
+
+ bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_FORMULAS),
+ rCoreSet, rOldSet,
+ aBtnFormulas.IsChecked(),
+ aBtnFormulas.GetSavedValue() );
+
+ bDataChanged |= lcl_PutBoolItem( GetWhich(SID_SCATTR_PAGE_NULLVALS),
+ rCoreSet, rOldSet,
+ aBtnNullVals.IsChecked(),
+ aBtnNullVals.GetSavedValue() );
+
+ //------------------
+ // Erste Druckseite:
+ //------------------
+ BOOL bUseValue = aBtnPageNo.IsChecked();
+
+ if ( WAS_DEFAULT(nWhichPageNo,rOldSet)
+ && ( !bUseValue && bUseValue == aBtnPageNo.GetSavedValue()
+ || ( bUseValue && bUseValue == aBtnPageNo.GetSavedValue()
+ && aEdPageNo.GetText() == aEdPageNo.GetSavedValue() ) ) )
+ {
+ rCoreSet.ClearItem( nWhichPageNo );
+ }
+ else
+ {
+ UINT16 nPage = (UINT16)( aBtnPageNo.IsChecked()
+ ? aEdPageNo.GetValue()
+ : 0 );
+
+ rCoreSet.Put( SfxUInt16Item( nWhichPageNo, nPage ) );
+ bDataChanged = TRUE;
+ }
+
+ //-------------------
+ // Objektdarstellung:
+ //-------------------
+
+ bDataChanged |= lcl_PutVObjModeItem( GetWhich(SID_SCATTR_PAGE_CHARTS),
+ rCoreSet, rOldSet, aBtnCharts );
+
+ bDataChanged |= lcl_PutVObjModeItem( GetWhich(SID_SCATTR_PAGE_OBJECTS),
+ rCoreSet, rOldSet, aBtnObjects );
+
+ bDataChanged |= lcl_PutVObjModeItem( GetWhich(SID_SCATTR_PAGE_DRAWINGS),
+ rCoreSet, rOldSet, aBtnDrawings );
+
+ //------------
+ // Skalierung:
+ //------------
+
+ bDataChanged |= lcl_PutScaleItem( GetWhich(SID_SCATTR_PAGE_SCALE),
+ rCoreSet, rOldSet,
+ aBtnScaleAll, aEdScaleAll );
+
+ bDataChanged |= lcl_PutScaleItem( GetWhich(SID_SCATTR_PAGE_SCALETOPAGES),
+ rCoreSet, rOldSet,
+ aBtnScalePageNum, aEdScalePageNum );
+
+ return bDataChanged;
+}
+
+//------------------------------------------------------------------------
+
+int __EXPORT ScTablePage::DeactivatePage( SfxItemSet* pSet )
+{
+ if ( pSet )
+ FillItemSet( *pSet );
+
+ return LEAVE_PAGE;
+}
+
+//------------------------------------------------------------------------
+// Handler:
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScTablePage, PageDirHdl, RadioButton*, EMPTYARG )
+{
+ aBmpPageDir.SetBitmap( aBtnLeftRight.IsChecked()
+ ? aImgLeftRight
+ : aImgTopDown );
+ return NULL;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScTablePage, PageNoHdl, CheckBox*, pBtn )
+{
+ if ( aBtnPageNo.IsChecked() )
+ {
+ aEdPageNo.Enable();
+ if ( pBtn )
+ aEdPageNo.GrabFocus();
+ }
+ else
+ aEdPageNo.Disable();
+
+ return NULL;
+}
+
+//------------------------------------------------------------------------
+
+IMPL_LINK( ScTablePage, ScaleHdl, RadioButton*, pBtn )
+{
+ if ( aBtnScaleAll.IsChecked() )
+ {
+ aEdScalePageNum .Disable();
+ aEdScaleAll .Enable();
+
+ if ( pBtn )
+ aEdScaleAll.GrabFocus();
+ }
+ else if ( aBtnScalePageNum.IsChecked() )
+ {
+ aEdScaleAll .Disable();
+ aEdScalePageNum .Enable();
+
+ if ( pBtn )
+ aEdScalePageNum.GrabFocus();
+ }
+
+ return NULL;
+}
+
+//========================================================================
+// Hilfsfunktionen fuer FillItemSet:
+//========================================================================
+
+BOOL lcl_PutBoolItem( USHORT nWhich,
+ SfxItemSet& rCoreSet,
+ const SfxItemSet& rOldSet,
+ BOOL bIsChecked,
+ BOOL bSavedValue )
+{
+ BOOL bDataChanged = ( bSavedValue == bIsChecked
+ && WAS_DEFAULT(nWhich,rOldSet) );
+
+ if ( bDataChanged )
+ rCoreSet.ClearItem(nWhich);
+ else
+ rCoreSet.Put( SfxBoolItem( nWhich, bIsChecked ) );
+
+ return bDataChanged;
+}
+
+//------------------------------------------------------------------------
+
+BOOL lcl_PutVObjModeItem( USHORT nWhich,
+ SfxItemSet& rCoreSet,
+ const SfxItemSet& rOldSet,
+ const CheckBox& rBtn )
+{
+ BOOL bIsChecked = rBtn.IsChecked();
+ BOOL bDataChanged = ( rBtn.GetSavedValue() == bIsChecked
+ && WAS_DEFAULT(nWhich,rOldSet) );
+
+ if ( bDataChanged )
+ rCoreSet.ClearItem( nWhich );
+
+ else
+ rCoreSet.Put( ScViewObjectModeItem( nWhich, bIsChecked
+ ? VOBJ_MODE_SHOW
+ : VOBJ_MODE_HIDE ) );
+ return bDataChanged;
+}
+
+//------------------------------------------------------------------------
+
+BOOL lcl_PutScaleItem( USHORT nWhich,
+ SfxItemSet& rCoreSet,
+ const SfxItemSet& rOldSet,
+ const RadioButton& rBtn,
+ const NumericField& rEd )
+{
+ UINT16 nValue = (UINT16)rEd.GetValue();
+ BOOL bIsChecked = rBtn.IsChecked();
+ BOOL bSaveValue = rBtn.GetSavedValue();
+ BOOL bDataChanged = FALSE;
+
+ if ( (bSaveValue && bIsChecked)
+ || (!bSaveValue && !bIsChecked) )
+ {
+ if ( (rEd.GetSavedValue() == rEd.GetText())
+ && WAS_DEFAULT(nWhich,rOldSet) )
+ {
+ rCoreSet.ClearItem( nWhich );
+ }
+ else
+ {
+// rCoreSet.Put( SfxUInt16Item( nWhich, bIsChecked ? nValue : 0 ) );
+ if ( bIsChecked )
+ rCoreSet.Put( SfxUInt16Item( nWhich, nValue ) );
+ else
+ rCoreSet.Put( SfxUInt16Item( nWhich, 0 ) );
+
+ bDataChanged = TRUE;
+ }
+ }
+ else if ( bSaveValue && !bIsChecked )
+ {
+ rCoreSet.Put( SfxUInt16Item( nWhich, 0 ) );
+ bDataChanged = TRUE;
+ }
+ else if ( !bSaveValue && bIsChecked )
+ {
+ rCoreSet.Put( SfxUInt16Item( nWhich, nValue ) );
+ bDataChanged = TRUE;
+ }
+
+ return bDataChanged;
+}
+
+
+
diff --git a/sc/source/ui/src/attrdlg.src b/sc/source/ui/src/attrdlg.src
new file mode 100644
index 000000000000..897568229334
--- /dev/null
+++ b/sc/source/ui/src/attrdlg.src
@@ -0,0 +1,524 @@
+/*************************************************************************
+ *
+ * $RCSfile: attrdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <svx/dialogs.hrc>
+#include "attrdlg.hrc"
+
+ //================================================
+ // Attributdialog:
+
+TabDialog RID_SCDLG_ATTR
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 280 , 165 ) ;
+ Text = "Zellattribute" ;
+ Text [ ENGLISH ] = "Cell Attributes" ;
+ Text [ norwegian ] = "Cell Attributes" ;
+ Text [ italian ] = "Attributi cella" ;
+ Text [ portuguese_brazilian ] = "Atributos da Célula" ;
+ Text [ portuguese ] = "Atributos de célula" ;
+ Text [ finnish ] = "Solumääritteet" ;
+ Text [ danish ] = "Celleattributter" ;
+ Text [ french ] = "Attributs de cellule" ;
+ Text [ swedish ] = "Cellattribut" ;
+ Text [ dutch ] = "Celattributen" ;
+ Text [ spanish ] = "Atributos de celda" ;
+ Text [ english_us ] = "Cell Attributes" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 23 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_NUMBER ;
+ PageResID = 256 ;
+ Text = "Zahlen" ;
+ Text [ ENGLISH ] = "Number" ;
+ Text [ norwegian ] = "Number" ;
+ Text [ italian ] = "Numeri" ;
+ Text [ portuguese_brazilian ] = "Número" ;
+ Text [ portuguese ] = "Números" ;
+ Text [ finnish ] = "Numero" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombres" ;
+ Text [ swedish ] = "Tal" ;
+ Text [ dutch ] = "Getallen" ;
+ Text [ spanish ] = "Números" ;
+ Text [ english_us ] = "Numbers" ;
+ Text[ chinese_simplified ] = "Êý×Ö";
+ Text[ russian ] = "×èñëà";
+ Text[ polish ] = "Liczby";
+ Text[ japanese ] = "”";
+ Text[ chinese_traditional ] = "¼Æ¦r";
+ Text[ arabic ] = "ÃÑÞÇã";
+ Text[ greek ] = "Áñéèìïß";
+ Text[ korean ] = "¹øÈ£";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_FONT ;
+ PageResID = 257 ;
+ Text = "Schrift" ;
+ Text [ ENGLISH ] = "Character" ;
+ Text [ norwegian ] = "Character" ;
+ Text [ italian ] = "Carattere" ;
+ Text [ portuguese_brazilian ] = "Caractere" ;
+ Text [ portuguese ] = "Tipo de letra" ;
+ Text [ finnish ] = "Merkki" ;
+ Text [ danish ] = "Skrifttype" ;
+ Text [ french ] = "Police" ;
+ Text [ swedish ] = "Teckensnitt" ;
+ Text [ dutch ] = "Lettertype" ;
+ Text [ spanish ] = "Fuente" ;
+ Text [ english_us ] = "Font" ;
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ russian ] = "Øðèôò";
+ Text[ polish ] = "Czcionka";
+ Text[ japanese ] = "Ì«ÝÄ";
+ Text[ chinese_traditional ] = "¦r«¬";
+ Text[ arabic ] = "ÇáÎØ";
+ Text[ greek ] = "ÃñáììáôïóåéñÜ";
+ Text[ korean ] = "±Û²Ã";
+ Text[ turkish ] = "Yazýtipi";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_ALIGNMENT ;
+ PageResID = 258 ;
+ Text = "Ausrichtung" ;
+ Text [ ENGLISH ] = "Alignment" ;
+ Text [ norwegian ] = "Alignment" ;
+ Text [ italian ] = "Allineamento" ;
+ Text [ portuguese_brazilian ] = "Alinhamento" ;
+ Text [ portuguese ] = "Alinhamento" ;
+ Text [ finnish ] = "Tasaus" ;
+ Text [ danish ] = "Justering" ;
+ Text [ french ] = "Alignement" ;
+ Text [ swedish ] = "Justering" ;
+ Text [ dutch ] = "Uitlijning" ;
+ Text [ spanish ] = "Alineación" ;
+ Text [ english_us ] = "Alignment" ;
+ Text[ chinese_simplified ] = "¶ÔÆë";
+ Text[ russian ] = "Âûðàâíèâàíèå";
+ Text[ polish ] = "Wyrównanie";
+ Text[ japanese ] = "”z’u";
+ Text[ chinese_traditional ] = "¹ï»ô";
+ Text[ arabic ] = "ÇáãÍÇÐÇÉ";
+ Text[ greek ] = "Óôïß÷éóç";
+ Text[ korean ] = "¸ÂÃã";
+ Text[ turkish ] = "Hizalama";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_BORDER ;
+ PageResID = 259 ;
+ Text = "Umrandung" ;
+ Text [ ENGLISH ] = "Border" ;
+ Text [ norwegian ] = "Border" ;
+ Text [ italian ] = "Bordo" ;
+ Text [ portuguese_brazilian ] = "Borda" ;
+ Text [ portuguese ] = "Contornos" ;
+ Text [ finnish ] = "Reunaviiva" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "Bordure" ;
+ Text [ swedish ] = "Inramning" ;
+ Text [ dutch ] = "Omranding" ;
+ Text [ spanish ] = "Borde" ;
+ Text [ english_us ] = "Borders" ;
+ Text[ chinese_simplified ] = "±ß¿ò";
+ Text[ russian ] = "Îáðàìëåíèå";
+ Text[ polish ] = "Obramowanie";
+ Text[ japanese ] = "ŠO˜g";
+ Text[ chinese_traditional ] = "Ãä®Ø";
+ Text[ arabic ] = "ÇáÍÏæÏ";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "°æ°è¼±";
+ Text[ turkish ] = "Kenarlýk";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_BACKGROUND ;
+ PageResID = 260 ;
+ Text = "Hintergrund" ;
+ Text [ ENGLISH ] = "Background" ;
+ Text [ norwegian ] = "Background" ;
+ Text [ italian ] = "Sfondo" ;
+ Text [ portuguese_brazilian ] = "Fundo" ;
+ Text [ portuguese ] = "Plano de fundo" ;
+ Text [ finnish ] = "Tausta" ;
+ Text [ danish ] = "Baggrund" ;
+ Text [ french ] = "Arrière-plan" ;
+ Text [ swedish ] = "Bakgrund" ;
+ Text [ dutch ] = "Achtergrond" ;
+ Text [ spanish ] = "Fondo" ;
+ Text [ english_us ] = "Background" ;
+ Text[ chinese_simplified ] = "±³¾°";
+ Text[ russian ] = "Ôîí";
+ Text[ polish ] = "T³o";
+ Text[ japanese ] = "”wŒi";
+ Text[ chinese_traditional ] = "­I´º";
+ Text[ arabic ] = "ÎáÝíÉ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "Öüíôï";
+ Text[ korean ] = "¹è°æ";
+ Text[ turkish ] = "Artalan";
+ };
+ PageItem
+ {
+ Identifier = TP_PROTECTION ;
+ PageResID = 261 ;
+ Text = "Zellschutz" ;
+ Text [ ENGLISH ] = "Protection" ;
+ Text [ norwegian ] = "Protection" ;
+ Text [ italian ] = "Protezione" ;
+ Text [ portuguese_brazilian ] = "Proteção" ;
+ Text [ portuguese ] = "Protecção de célula" ;
+ Text [ finnish ] = "Suojaus" ;
+ Text [ danish ] = "Cellebeskyttelse" ;
+ Text [ french ] = "Protection" ;
+ Text [ swedish ] = "Cellskydd" ;
+ Text [ dutch ] = "Celbeveiliging" ;
+ Text [ spanish ] = "Protección de celda" ;
+ Text [ english_us ] = "Cell Protection" ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñ±£»¤";
+ Text[ russian ] = "Çàùèòà ÿ÷åéêè";
+ Text[ polish ] = "Ochrona komórek";
+ Text[ japanese ] = "¾Ù‚Ì•ÛŒì";
+ Text[ chinese_traditional ] = "Àx¦s®æ«OÅ@";
+ Text[ arabic ] = "ÍãÇíÉ ÇáÎáíÉ";
+ Text[ greek ] = "Ðñïóôáóßá êåëéïý";
+ Text[ korean ] = "¼¿ º¸È£";
+ Text[ turkish ] = "Hücre korumasý";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñÊôÐÔ";
+ Text[ russian ] = "Àòðèáóòû ÿ÷åéêè";
+ Text[ polish ] = "Atrybuty komórek";
+ Text[ japanese ] = "¾Ù‚Ì‘®«";
+ Text[ chinese_traditional ] = "Àx¦s®æÄÝ©Ê";
+ Text[ arabic ] = "ÓãÇÊ ÇáÎáíÉ";
+ Text[ greek ] = "Éäéüôçôåò êåëéïý";
+ Text[ korean ] = "¼¿ ¼Ó¼º";
+ Text[ turkish ] = "Hücre öznitelikleri";
+ Text[ language_user1 ] = " ";
+};
+
+ //================================================
+ // Zellschutz-TabPage:
+
+TabPage RID_SCPAGE_PROTECTION
+{
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpId = HID_SCPAGE_PROTECTION ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ TriStateBox BTN_PROTECTED
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Gesperrt" ;
+ Text [ ENGLISH ] = "~Protected" ;
+ Text [ norwegian ] = "~Protected" ;
+ Text [ italian ] = "~Protetto" ;
+ Text [ portuguese_brazilian ] = "~Protegido" ;
+ Text [ portuguese ] = "~Proteger" ;
+ Text [ finnish ] = "~Suojattu" ;
+ Text [ danish ] = "Låst" ;
+ Text [ french ] = "~Vérrouiller" ;
+ Text [ swedish ] = "Skydda~d" ;
+ Text [ dutch ] = "~Beveiligd" ;
+ Text [ spanish ] = "~Protegido" ;
+ Text [ english_us ] = "~Protected" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Ëø¶¨(~P)";
+ Text[ russian ] = "Áëîêèðîâàíî";
+ Text[ polish ] = "Zablokowany";
+ Text[ japanese ] = "•ÛŒì‚·‚é(~P)";
+ Text[ chinese_traditional ] = "Âê©w(~P)";
+ Text[ arabic ] = "ãÍãí";
+ Text[ greek ] = "ÊëåéäùìÝíï";
+ Text[ korean ] = "º¸È£(~P)";
+ Text[ turkish ] = "~Koruma altýnda";
+ Text[ language_user1 ] = " ";
+ };
+ TriStateBox BTN_HIDE_FORMULAR
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Formel ausblenden" ;
+ Text [ ENGLISH ] = "Hide ~Formulas" ;
+ Text [ norwegian ] = "Hide ~Formulas" ;
+ Text [ italian ] = "Nascondi ~formule" ;
+ Text [ portuguese_brazilian ] = "Ocultar ~Fórmulas" ;
+ Text [ portuguese ] = "Ocultar ~fórmulas" ;
+ Text [ finnish ] = "Piilota ~kaavat" ;
+ Text [ danish ] = "Skjul ~formel" ;
+ Text [ french ] = "Masquer les ~formules" ;
+ Text [ swedish ] = "Dölj ~formel" ;
+ Text [ dutch ] = "~Formules verbergen" ;
+ Text [ spanish ] = "Ocultar ~fórmulas" ;
+ Text [ english_us ] = "Hide ~formula" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÒþÈ빫ʽ(~F)";
+ Text[ russian ] = "Ñêðûòü ôîðìóëó";
+ Text[ polish ] = "Ukryj formu³ê";
+ Text[ japanese ] = "”Ž®‚Ì”ñ•\\Ž¦(~F)";
+ Text[ chinese_traditional ] = "Áô¤J¤½¦¡(~F)";
+ Text[ arabic ] = "ÅÎÝÇÁ ÇáÕíÛÉ";
+ Text[ greek ] = "Áðüêñõøç ôýðïõ";
+ Text[ korean ] = "¼ö½Ä ¼û±â±â(~F)";
+ Text[ turkish ] = "~Formulü gizle";
+ Text[ language_user1 ] = " ";
+ };
+ TriStateBox BTN_HIDE_ALL
+ {
+ Pos = MAP_APPFONT ( 12 , 40 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Alles ausblenden" ;
+ Text [ ENGLISH ] = "Hide ~All" ;
+ Text [ norwegian ] = "Hide ~All" ;
+ Text [ italian ] = "Nascondi ~tutto" ;
+ Text [ portuguese_brazilian ] = "Orecortar ~Tudo" ;
+ Text [ portuguese ] = "Ocultar ~tudo" ;
+ Text [ finnish ] = "Piilota k~aikki" ;
+ Text [ danish ] = "Skjul alt" ;
+ Text [ french ] = "Masquer ~tout" ;
+ Text [ swedish ] = "Dölj ~allt" ;
+ Text [ dutch ] = "~Alles verbergen" ;
+ Text [ spanish ] = "Ocultar ~todo" ;
+ Text [ english_us ] = "Hide ~all" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "È«²¿ÒþÈë(~A)";
+ Text[ russian ] = "Ñêðûòü âñå";
+ Text[ polish ] = "Ukryj wszystko";
+ Text[ japanese ] = "‚·‚ׂĔñ•\\Ž¦(~A)";
+ Text[ chinese_traditional ] = "¥þ³¡Áô¤J(~A)";
+ Text[ arabic ] = "ÅÎÝÇÁ Çáßá";
+ Text[ greek ] = "~Áðüêñõøç üëùí";
+ Text[ korean ] = "ÀüºÎ ¼û±â±â(~A)";
+ Text[ turkish ] = "~Tümünü gizle";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_HINT
+ {
+ Pos = MAP_APPFONT ( 114 , 12 ) ;
+ Size = MAP_APPFONT ( 130 , 63 ) ;
+ WordBreak = TRUE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Der Schutz von Zellen wird nur dann wirksam, wenn die aktive Tabelle geschützt ist.\n\nWählen Sie hierzu aus dem Menü 'Extras' den Befehl 'Dokument schützen' und dann den Befehl 'Tabelle'. : Der Schutz von Zellen wird nur dann wirksam, wenn die aktive Tabelle geschützt ist.\n\nWählen Sie hierzu aus dem Menü ''Extras'' den Befehl ''Dokument schützen'' und dann den Befehl ''Tabelle''. */
+ /* ### ACHTUNG: Neuer Text in Resource? Der Schutz von Zellen wird nur dann wirksam, wenn die aktive Tabelle geschützt ist.\n\nWählen Sie hierzu aus dem Menü 'Extras' den Befehl 'Dokument schützen' und dann den Befehl 'Tabelle'. : Der Schutz von Zellen wird nur dann wirksam, wenn die aktive Tabelle geschützt ist.\n\nWählen Sie hierzu aus dem Menü ''Extras'' den Befehl ''Dokument schützen'' und dann den Befehl ''Tabelle''. */
+ /* ### ACHTUNG: Neuer Text in Resource? Der Schutz von Zellen wird nur dann wirksam, wenn die aktive Tabelle geschützt ist.\n\nWählen Sie hierzu aus dem Menü 'Extras' den Befehl 'Dokument schützen' und dann den Befehl 'Tabelle'. : Der Schutz von Zellen wird nur dann wirksam, wenn die aktive Tabelle geschützt ist.\n\nWählen Sie hierzu aus dem Menü ''Extras'' den Befehl ''Dokument schützen'' und dann den Befehl ''Tabelle''. */
+ /* ### ACHTUNG: Neuer Text in Resource? Der Schutz von Zellen wird nur dann wirksam, wenn die aktive Tabelle geschützt ist.\n\nWählen Sie hierzu aus dem Menü 'Extras' den Befehl 'Dokument schützen' und dann den Befehl 'Tabelle'. : Der Schutz von Zellen wird nur dann wirksam, wenn die aktive Tabelle geschützt ist.\n\nWählen Sie hierzu aus dem Menü ''Extras'' den Befehl ''Dokument schützen'' und dann den Befehl ''Tabelle''. */
+ Text = "Der Schutz von Zellen wird nur dann wirksam, wenn die aktive Tabelle geschützt ist.\n\nWählen Sie hierzu aus dem Menü 'Extras' den Befehl 'Dokument schützen' und dann den Befehl 'Tabelle'." ;
+ Text [ ENGLISH ] =
+ "To activate cell protection, you have to protect the active table.\n\nChoose 'Protect Document' from menu 'Extras' and the command 'Table' afterwards." ;
+ Text [ norwegian ] =
+ "To activate cell protection, you have to protect the active table.\n\nChoose 'Protect Document' from menu 'Extras' and the command 'Table' afterwards." ;
+ Text [ italian ] = "Per attivare la protezione cella, è necessario proteggere la tabella attiva.\n\nScegliere 'Proteggi documento' dal menu 'Strumenti' e quindi il comando 'Tabella'." ;
+ Text [ portuguese_brazilian ] = "Para ativar a proteção da célula, , preciso proteger a tabelaativa.\n\nEscolha 'Proteger Documento' no menu 'Extras' e,em seguida, o comando 'Tabela'." ;
+ Text [ portuguese ] = "Para activar a protecção da célula, é necessário proteger a tabela activa.\n\nSeleccione 'Proteger documento' no menu 'Ferramentas' e em seguida o comando 'Tabela'." ;
+ Text [ finnish ] =
+ "Suojaa aktiivinen taulukko, jotta voit valita solujen suojauksen.\n\nValitse sitten Muut-valikosta Suojaa asiakirja ja Taulukko." ;
+ Text [ danish ] = "Cellebeskyttelsen er kun effektiv, når det aktive regneark er beskyttet.\n\nVælg 'Bekyt dokument' i menuen 'Funktioner'og derefter 'Regneark' for at beskytte regnearket." ;
+ Text [ french ] = "Pour activer la protection d'une cellule, vous devez protéger la feuille courante.\n\nChoisissez 'Protection' dans le menu 'Outils' puis la commande 'Feuille'." ;
+ Text [ swedish ] = "Cellskyddet är endast verksamt om den aktiva tabellen är skyddad.\n\nVälj kommandot 'Skydda dokument' i menyn 'Verktyg' och därefter kommandot 'Tabell' för att skydda tabellen." ;
+ Text [ dutch ] = "De celbeveiliging functioneert alleen als het actieve werkblad beveiligd is.\n\nKies eerst in menu 'Extra' de optie \"Document beveiligen\" en vervolgens de optie 'Werkblad'." ;
+ Text [ spanish ] = "La protección de celdas es efectiva solamente si la hoja activa está protegida.\n\nSeleccione en 'Herramientas' la instrucción 'Proteger documento' y luego 'Hoja'." ;
+ Text [ english_us ] = "Cell protection is only effective after the current sheet has been protected. \n\nSelect 'Protect Document' from the 'Tools' menu, and specify 'Sheet'." ;
+ Text[ chinese_simplified ] = "Ö»ÓÐÔÚÄú¼¤»î±£»¤¹¤×÷±íºó£¬µ¥Ôª¸ñ²Å»áÊܵ½±£»¤¡£\n\nÇëÄú°´»÷²Ëµ¥ÃüÁî¡°¹¤¾ß¡±£¬¡°±£»¤Îĵµ¡±£¬¡°¹¤×÷±í¡±¡£";
+ Text[ russian ] = "Çàùèòà ÿ÷åéêè äåéñòâóåò òîëüêî ïîñëå çàùèòû òåêóùåãî ëèñòà.\n\nÄëÿ çàùèòû ëèñòà âûáåðèòå â ìåíþ 'Ñåðâèñ' êîìàíäó 'Çàùèòà äîêóìåíòà', à çàòåì êîìàíäó 'Òàáëèöà'.";
+ Text[ polish ] = "Ochrona komórek jest wtedy uaktywniona, jeœli bie¿¹cy arkusz jest chroniony.\n\nWybierz dla tego celu z menu 'Narzêdzia' polecenie 'Chroñ dokument', a nastêpnie polecenie 'Arkusz'.";
+ Text[ japanese ] = "¾Ù‚Ì•ÛŒì‚ͤì‹Æ’†‚Ì•\\‚ª•ÛŒì‚³‚ê‚Ä‚¢‚鎞‚Ì‚Ý—LŒø‚Å‚·B\n\nÒÆ­°‚Ì[°Ù][ÄÞ·­ÒÝÄ‚Ì•ÛŒì]‚ð‘I‘ð‚µ‚Ä[•\\]‚ðŽw’肵‚ĉº‚³‚¢B";
+ Text[ chinese_traditional ] = "¥u¦³¦b±z¿E¬¡«OÅ@¤u§@ªí«á¡AÀx¦s®æ¤~·|¨ü¨ì«OÅ@¡C\n\n½Ð±z«ö¤@¤U³o­Ó¥\\¯àªíªº©R¥O¡G\"«OÅ@¤å¥ó\"¡A\"¤u§@ªí\"¡C";
+ Text[ arabic ] = "áÇ ÊÕÈÍ ÍãÇíÉ ÇáÎáÇíÇ ÝÚøÇáÉ¡ ÅáÇ ÚäÏãÇ íßæä ÇáÌÏæá ÇáÍÇáí ãÍãí.\n\náÊäÝíÐ Ðáß ÇáÑÌÇÁ ÇÎÊíÇÑ ÇáÃãÑ 'ÍãÇíÉ ÇáãÓÊäÏ' ãä ÇáÞÇÆãÉ 'ÃÏæÇÊ'¡ Ëã ÇáÃãÑ 'ÌÏæá'.";
+ Text[ greek ] = "Ç ðñïóôáóßá êåëéþí éó÷ýåé ìüíï åöüóïí ôåèåß ï ôñÝ÷ùí ðßíáêáò õðü ðñïóôáóßá.\n\nÃéá íá åðéôåõ÷èåß áõôü åðéëÝîôå óôï ìåíïý 'Åñãáëåßá' ôçí åíôïëÞ 'Ðñïóôáóßá åããñÜöïõ' êáé óôç óõíÝ÷åéá 'Ðßíáêáò'.";
+ Text[ korean ] = "¼¿ º¸È£´Â ÇöÀçÀÇ ½ÃÆ®°¡ º¸È£µÇ¾úÀ»¶§¸¸ À¯È¿ÇÕ´Ï´Ù. \n\n'µµ±¸'¸Þ´º¿¡¼­ '¹®¼­º¸È£'¸¦ ¼±ÅÃÇÏ½ÅµÚ ½ÃÆ®¸¦ ÁöÁ¤ÇϽʽÿÀ.";
+ Text[ turkish ] = "Hücre korumasý, yalnýzca aktif tablo da korunmuþsa etkindir.\n\nBunun için 'Araçlar' mönüsünden önce 'belgeyi koru' sonra 'Tablo' komutunu seçin.";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_PROTECTION
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 246 , 75 ) ;
+ Text = "Schutz" ;
+ Text [ ENGLISH ] = "Protection" ;
+ Text [ norwegian ] = "Protection" ;
+ Text [ italian ] = "Protezione" ;
+ Text [ portuguese_brazilian ] = "Proteção" ;
+ Text [ portuguese ] = "Protecção" ;
+ Text [ finnish ] = "Suojaus" ;
+ Text [ danish ] = "Beskyttelse" ;
+ Text [ french ] = "Protection" ;
+ Text [ swedish ] = "Skydd" ;
+ Text [ dutch ] = "Beveiliging" ;
+ Text [ spanish ] = "Protección" ;
+ Text [ english_us ] = "Protection" ;
+ Text[ chinese_simplified ] = "±£»¤";
+ Text[ russian ] = "Çàùèòà";
+ Text[ polish ] = "Ochrona";
+ Text[ japanese ] = "•ÛŒì";
+ Text[ chinese_traditional ] = "«OÅ@";
+ Text[ arabic ] = "ÍãÇíÉ";
+ Text[ greek ] = "Ðñïóôáóßá";
+ Text[ korean ] = "º¸È£";
+ Text[ turkish ] = "Koruma";
+ Text[ language_user1 ] = " ";
+ };
+ TriStateBox BTN_HIDE_PRINT
+ {
+ Pos = MAP_APPFONT ( 12 , 93 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "Für Aus~druck ausblenden" ;
+ Text [ ENGLISH ] = "Hide for ~Printing" ;
+ Text [ norwegian ] = "Hide for ~Printing" ;
+ Text [ italian ] = "Non ~stampare" ;
+ Text [ portuguese_brazilian ] = "Ocultar para ~Impressão" ;
+ Text [ portuguese ] = "Ocultar para ~impressão" ;
+ Text [ finnish ] = "Piilota ~tulostusta varten" ;
+ Text [ danish ] = "Skjul ved udskrivning" ;
+ Text [ french ] = "Masquer pour l'~impression" ;
+ Text [ swedish ] = "Dölj vid ~utskrift" ;
+ Text [ dutch ] = "Verbergen voor af~drukken" ;
+ Text [ spanish ] = "~Ocultar para la impresión" ;
+ Text [ english_us ] = "Hide ~when printing" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "´òӡʱÒþÈë(~H)";
+ Text[ russian ] = "Ñêðûòü äëÿ ïå÷àòè";
+ Text[ polish ] = "U~kryj przy wydruku";
+ Text[ japanese ] = "ˆóü‚µ‚È‚¢(~H)";
+ Text[ chinese_traditional ] = "¥´¦L®ÉÁô¤J(~H)";
+ Text[ arabic ] = "ÅÎÝÇÁ ÚäÏ ÇáØÈÇÚÉ";
+ Text[ greek ] = "Áðüêñõøç êáôÜ ôçí åêôýðùóç";
+ Text[ korean ] = "Àμ⠽à ¼û±â±â(~W)";
+ Text[ turkish ] = "~Yazdýrýrken gizle";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_HINT2
+ {
+ Pos = MAP_APPFONT ( 114 , 93 ) ;
+ Size = MAP_APPFONT ( 131 , 31 ) ;
+ WordBreak = TRUE ;
+ Text = "Die Zellen der aktuellen Selektion werden beim Ausdruck nicht ausgegeben." ;
+ Text [ ENGLISH ] = "Cells of current selection will be omitted for printing." ;
+ Text [ norwegian ] = "Cells of current selection will be omitted for printing." ;
+ Text [ italian ] = "Le celle della selezione corrente\nnon verranno stampate." ;
+ Text [ portuguese_brazilian ] = "As células na seleção atual serão omitidas na impressão." ;
+ Text [ portuguese ] = "As células da selecção actual serão omitidas na impressão." ;
+ Text [ finnish ] = "Estää valittujen solujen tulostamisen." ;
+ Text [ danish ] = "De markerede celler udskrives ikke." ;
+ Text [ french ] = "Les cellules sélectionnées ne seront pas imprimées." ;
+ Text [ swedish ] = "De markerade cellerna kommer inte att skrivas ut." ;
+ Text [ dutch ] = "De geselecteerde cellen worden bij het afdrukken weggelaten." ;
+ Text [ spanish ] = "No se imprimen las celdas de la selección actual." ;
+ Text [ english_us ] = "The cells selected will be omitted when printing." ;
+ Text[ chinese_simplified ] = "µ±Ç°Ñ¡¶¨µ¥Ôª¸ñ²»»á±»´òÓ¡³öÀ´¡£";
+ Text[ russian ] = "Ïðè ïå÷àòè âûäåëåííûå ÿ÷åéêè ïîêàçàíû íå áóäóò.";
+ Text[ polish ] = "Zaznaczone komórki zostan¹ pominiête przy wydruku.";
+ Text[ japanese ] = "Œ»Ý‘I‘ð‚³‚ê‚Ä‚¢‚é¾Ù‚͈óü‚³‚ê‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "·í«e¿ï¨úªºÀx¦s®æ¤£·|³Q¦C¦L¥X¨Ó¡C";
+ Text[ arabic ] = "ÓíÊã ÊÌÇåá ÎáÇíÇ ÇáÊÍÏíÏ ÇáÍÇáí ÚäÏ ÇáØÈÇÚÉ.";
+ Text[ greek ] = "Ôá êåëéÜ ôçò ôñÝ÷ïõóáò åðéëïãÞò èá ðáñáëçöèïýí êáôÜ ôçí åêôýðùóç.";
+ Text[ korean ] = "¼±ÅÃµÈ ¼¿Àº Àμ⿡¼­ Á¦¿ÜµÉ °ÍÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Yürürlükteki seçimin hücreleri yazdýrmaya dahil olmayacak.";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_PRINT
+ {
+ Pos = MAP_APPFONT ( 6 , 82 ) ;
+ Size = MAP_APPFONT ( 246 , 48 ) ;
+ Text = "Ausdruck" ;
+ Text [ ENGLISH ] = "Printing" ;
+ Text [ norwegian ] = "Printing" ;
+ Text [ italian ] = "Stampa" ;
+ Text [ portuguese_brazilian ] = "Impressão" ;
+ Text [ portuguese ] = "Impressão" ;
+ Text [ finnish ] = "Tulostus" ;
+ Text [ danish ] = "Udskrivning" ;
+ Text [ french ] = "Impression" ;
+ Text [ swedish ] = "Utskrift" ;
+ Text [ dutch ] = "Afdrukken" ;
+ Text [ spanish ] = "Impresión" ;
+ Text [ english_us ] = "Print" ;
+ Text[ chinese_simplified ] = "´òÓ¡";
+ Text[ russian ] = "Ïå÷àòü";
+ Text[ polish ] = "Wydruk";
+ Text[ japanese ] = "ˆóü";
+ Text[ chinese_traditional ] = "¦C¦L";
+ Text[ arabic ] = "ØÈÇÚÉ";
+ Text[ greek ] = "Åêôýðùóç";
+ Text[ korean ] = "Àμâ";
+ Text[ turkish ] = "Yazdýr";
+ Text[ language_user1 ] = " ";
+ };
+};
diff --git a/sc/source/ui/src/autofmt.src b/sc/source/ui/src/autofmt.src
new file mode 100644
index 000000000000..8b447b5b4903
--- /dev/null
+++ b/sc/source/ui/src/autofmt.src
@@ -0,0 +1,861 @@
+/*************************************************************************
+ *
+ * $RCSfile: autofmt.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "miscdlgs.hrc"
+
+ModalDialog RID_SCDLG_AUTOFORMAT
+{
+ OutputSize = TRUE ;
+ HelpId = SID_AUTOFORMAT ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 312 , 120 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? AutoFormat : Autoformat */
+ /* ### ACHTUNG: Neuer Text in Resource? AutoFormat : Autoformat */
+ Text = "AutoFormat" ;
+ Text [ ENGLISH ] = "AutoFormat" ;
+ Text [ norwegian ] = "AutoFormat" ;
+ Text [ italian ] = "Formattazione automatica" ;
+ Text [ portuguese_brazilian ] = "Formatação Automática" ;
+ Text [ portuguese ] = "AutoFormato" ;
+ Text [ finnish ] = "Automaattimuoto" ;
+ Text [ danish ] = "AutoFormat" ;
+ Text [ french ] = "AutoFormat" ;
+ Text [ swedish ] = "AutoFormat" ;
+ Text [ dutch ] = "AutoOpmaak" ;
+ Text [ spanish ] = "AutoFormato" ;
+ Text [ english_us ] = "AutoFormat" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ ListBox LB_FORMAT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 16 ) ;
+ Size = MAP_APPFONT ( 65 , 98 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_FORMAT
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Format" ;
+ Text [ ENGLISH ] = "~Format" ;
+ Text [ norwegian ] = "~Format" ;
+ Text [ italian ] = "~Formatta" ;
+ Text [ portuguese_brazilian ] = "~Formato" ;
+ Text [ portuguese ] = "Fo~rmatar" ;
+ Text [ finnish ] = "~Muoto" ;
+ Text [ danish ] = "~Format" ;
+ Text [ french ] = "Forma~t" ;
+ Text [ swedish ] = "Cell~format" ;
+ Text [ dutch ] = "~Formaat" ;
+ Text [ spanish ] = "~Formato" ;
+ Text [ english_us ] = "F~ormat" ;
+ Text[ chinese_simplified ] = "¸ñʽ(~O)";
+ Text[ russian ] = "Ôîð~ìàò";
+ Text[ polish ] = "Format";
+ Text[ japanese ] = "‘Ž®(~O)";
+ Text[ chinese_traditional ] = "®æ¦¡(~O)";
+ Text[ arabic ] = "ÇáÊäÓíÞ";
+ Text[ greek ] = "Ìïñöïðïßçóç";
+ Text[ korean ] = "¼­½Ä(~O)";
+ Text[ turkish ] = "~Format";
+ Text[ language_user1 ] = " ";
+ };
+ Window WND_PREVIEW
+ {
+ Pos = MAP_APPFONT ( 83 , 23 ) ;
+ Size = MAP_APPFONT ( 161 , 86 ) ;
+ };
+ GroupBox GB_PREVIEW
+ {
+ Pos = MAP_APPFONT ( 77 , 12 ) ;
+ Size = MAP_APPFONT ( 172 , 102 ) ;
+ Text = "Vorschau" ;
+ Text [ ENGLISH ] = "Preview" ;
+ Text [ norwegian ] = "Preview" ;
+ Text [ italian ] = "Anteprima" ;
+ Text [ portuguese_brazilian ] = "Examinar" ;
+ Text [ portuguese ] = "Previsualizar" ;
+ Text [ finnish ] = "Esikatselu" ;
+ Text [ danish ] = "Eksempel" ;
+ Text [ french ] = "Aperçu" ;
+ Text [ swedish ] = "Förhandsvisning" ;
+ Text [ dutch ] = "Voorbeeld" ;
+ Text [ spanish ] = "Previsualización" ;
+ Text [ english_us ] = "Preview" ;
+ Text[ chinese_simplified ] = "Ô¤ÊÓ";
+ Text[ russian ] = "Ïðîñìîòð";
+ Text[ polish ] = "Podgl¹d";
+ Text[ japanese ] = "ÌßÚËÞ­°";
+ Text[ chinese_traditional ] = "¹wÄý";
+ Text[ arabic ] = "ãÚÇíäÉ";
+ Text[ greek ] = "Ðñïåðéóêüðçóç";
+ Text[ korean ] = "¹Ì¸®º¸±â";
+ Text[ turkish ] = "Önizleme";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_ADJUST
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 150 , 147 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Breite/Höhe anpassen : ~Breite/H÷he anpassen */
+ Text = "Breite/Höhe an~passen" ;
+ Text [ ENGLISH ] = "Fit ~width and height" ;
+ Text [ norwegian ] = "Fit ~width and height" ;
+ Text [ italian ] = "Adatta ~larghezza/altezza" ;
+ Text [ portuguese_brazilian ] = "Ajustar ~largura e altura" ;
+ Text [ portuguese ] = "Ajustar ~largura/altura" ;
+ Text [ finnish ] = "Sovita le~veys ja korkeus" ;
+ Text [ danish ] = "Tilpas bredde/højde" ;
+ Text [ french ] = "Ajuster la largeur/hauteur" ;
+ Text [ swedish ] = "An~passa bredd och höjd" ;
+ Text [ dutch ] = "~Breedte/hoogte aanpassen" ;
+ Text [ spanish ] = "Ajustar anc~ho/alto" ;
+ Text [ english_us ] = "A~utoFit width and height" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "µ÷Õû¿í/¸ß(~A)";
+ Text[ russian ] = "Ïîäáîð øèðèíû/âûñîòû";
+ Text[ polish ] = "Dostosuj szerokoϾ/wysokoϾ";
+ Text[ japanese ] = "•/‚‚³‚ð’²®(~A)";
+ Text[ chinese_traditional ] = "½Õ¾ã¼e/°ª(~A)";
+ Text[ arabic ] = "ãáÇÁãÉ ÇáÚÑÖ æÇáÇÑÊÝÇÚ";
+ Text[ greek ] = "Ñýèìéóç ðëÜôïõò/ýøïõò";
+ Text[ korean ] = "³Êºñ¿Í ³ôÀÌ Á¶Àý(~U)";
+ Text[ turkish ] = "Geniþlik/yüksekliði ayarla";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_BORDER
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 147 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Umrandung" ;
+ Text [ ENGLISH ] = "~Border" ;
+ Text [ norwegian ] = "~Border" ;
+ Text [ italian ] = "~Bordo" ;
+ Text [ portuguese_brazilian ] = "~Borda" ;
+ Text [ portuguese ] = "~Contornos" ;
+ Text [ finnish ] = "~Reunaviiva" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "~Bordure" ;
+ Text [ swedish ] = "~Inramning" ;
+ Text [ dutch ] = "~Omranding" ;
+ Text [ spanish ] = "~Borde" ;
+ Text [ english_us ] = "~Borders" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "±ß¿ò(~B)";
+ Text[ russian ] = "Îáðàìëåíèå";
+ Text[ polish ] = "Obramowanie";
+ Text[ japanese ] = "Œrü(~B)";
+ Text[ chinese_traditional ] = "Ãä®Ø(~B)";
+ Text[ arabic ] = "ÇáÍÏæÏ";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "°æ°è¼±(~B)";
+ Text[ turkish ] = "~Kenarlýk";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_FONT
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 85 , 131 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Schriftart" ;
+ Text [ ENGLISH ] = "F~ont" ;
+ Text [ norwegian ] = "F~ont" ;
+ Text [ italian ] = "~Tipo di carattere" ;
+ Text [ portuguese_brazilian ] = "F~onte" ;
+ Text [ portuguese ] = "~Tipo de letra" ;
+ Text [ finnish ] = "~Fontti" ;
+ Text [ danish ] = "Skrifttype" ;
+ Text [ french ] = "~Police" ;
+ Text [ swedish ] = "Tecken~snitt" ;
+ Text [ dutch ] = "~Lettertype" ;
+ Text [ spanish ] = "Fuen~te" ;
+ Text [ english_us ] = "F~ont" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×ÖÌå(~O)";
+ Text[ russian ] = "Øðèôò";
+ Text[ polish ] = "Czcionka";
+ Text[ japanese ] = "Ì«ÝÄ‚ÌŽí—Þ(~O)";
+ Text[ chinese_traditional ] = "¦r«¬(~O)";
+ Text[ arabic ] = "äæÚ ÇáÎØ";
+ Text[ greek ] = "ÃñáììáôïóåéñÜ";
+ Text[ korean ] = "±Û²Ã(~O)";
+ Text[ turkish ] = "~Yazýtipi";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_PATTERN
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 85 , 147 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Muster" ;
+ Text [ ENGLISH ] = "~Pattern" ;
+ Text [ norwegian ] = "~Pattern" ;
+ Text [ italian ] = "~Modello" ;
+ Text [ portuguese_brazilian ] = "~Estampa" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text [ finnish ] = "~Kuvio" ;
+ Text [ danish ] = "Mønstre" ;
+ Text [ french ] = "~Motif" ;
+ Text [ swedish ] = "~Mönster" ;
+ Text [ dutch ] = "~Patroon" ;
+ Text [ spanish ] = "~Modelo" ;
+ Text [ english_us ] = "~Pattern" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ͼ°¸(~P)";
+ Text[ russian ] = "Îáðàçåö";
+ Text[ polish ] = "Deseñ";
+ Text[ japanese ] = "ÊßÀ°Ý(~P)";
+ Text[ chinese_traditional ] = "¹Ï®×(~P)";
+ Text[ arabic ] = "äãæÐÌ";
+ Text[ greek ] = "Ìïôßâï";
+ Text[ korean ] = "ÆÐÅÏ(~P)";
+ Text[ turkish ] = "~Örnek";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_ALIGNMENT
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 150 , 131 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Ausrichtung" ;
+ Text [ ENGLISH ] = "Orien~tation" ;
+ Text [ norwegian ] = "Orien~tation" ;
+ Text [ italian ] = "Orien~tamento" ;
+ Text [ portuguese_brazilian ] = "Orien~tação" ;
+ Text [ portuguese ] = "~Alinhamento" ;
+ Text [ finnish ] = "S~uunta" ;
+ Text [ danish ] = "Justering" ;
+ Text [ french ] = "~Alignement" ;
+ Text [ swedish ] = "~Justering" ;
+ Text [ dutch ] = "~Positie" ;
+ Text [ spanish ] = "A~lineación" ;
+ Text [ english_us ] = "Alignmen~t" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¶ÔÆë(~T)";
+ Text[ russian ] = "Âûðàâíèâàíèå";
+ Text[ polish ] = "Orientacja";
+ Text[ japanese ] = "”z’u(~T)";
+ Text[ chinese_traditional ] = "¹ï»ô(~T)";
+ Text[ arabic ] = "ÇáãÍÇÐÇÉ";
+ Text[ greek ] = "~Óôïß÷éóç";
+ Text[ korean ] = "¸ÂÃã(~T)";
+ Text[ turkish ] = "~Hizalama";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_NUMFORMAT
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 131 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Zahlenf~ormat" ;
+ Text [ ENGLISH ] = "~Numberformat" ;
+ Text [ norwegian ] = "~Numberformat" ;
+ Text [ italian ] = "Formato ~numero" ;
+ Text [ portuguese_brazilian ] = "~Formatodonúmero" ;
+ Text [ portuguese ] = "~Formato dos números" ;
+ Text [ finnish ] = "~Numeromuoto" ;
+ Text [ danish ] = "Talformat" ;
+ Text [ french ] = "~Format numérique" ;
+ Text [ swedish ] = "Talf~ormat" ;
+ Text [ dutch ] = "~Getalnotatie" ;
+ Text [ spanish ] = "~Formato de números" ;
+ Text [ english_us ] = "~Number format" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Êý×Ö¸ñʽ(~N)";
+ Text[ russian ] = "×èñëîâîé ôîðìàò";
+ Text[ polish ] = "Format liczb";
+ Text[ japanese ] = "”‚Ì‘Ž®(~N)";
+ Text[ chinese_traditional ] = "¼Æ¦r®æ¦¡(~N)";
+ Text[ arabic ] = "ÊäÓíÞ ÇáÃÑÞÇã";
+ Text[ greek ] = "ÌïñöÞ áñéèìþí";
+ Text[ korean ] = "¼ýÀÚ ¼­½Ä(~N)";
+ Text[ turkish ] = "Sayý f~ormatý";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_FORMAT
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 120 ) ;
+ Size = MAP_APPFONT ( 243 , 43 ) ;
+ Text = "Formatierung" ;
+ Text [ ENGLISH ] = "For~mats" ;
+ Text [ norwegian ] = "For~mats" ;
+ Text [ italian ] = "Formattazione" ;
+ Text [ portuguese_brazilian ] = "Formatos" ;
+ Text [ portuguese ] = "Formatar" ;
+ Text [ finnish ] = "Mu~odot" ;
+ Text [ danish ] = "Formatering" ;
+ Text [ french ] = "Mise en forme" ;
+ Text [ swedish ] = "Formatering" ;
+ Text [ dutch ] = "Opmaken" ;
+ Text [ spanish ] = "Formato" ;
+ Text [ english_us ] = "Formatting" ;
+ Text[ chinese_simplified ] = "¸ñʽ»¯";
+ Text[ russian ] = "Ôîðìàòèðîâàíèå";
+ Text[ polish ] = "Formatowanie";
+ Text[ japanese ] = "‘Ž®Ý’è";
+ Text[ chinese_traditional ] = "®æ¦¡¤Æ";
+ Text[ arabic ] = "ÊäÓíÞ";
+ Text[ greek ] = "Ìïñöïðïßçóç";
+ Text[ korean ] = "¼­½Ä";
+ Text[ turkish ] = "Formatlama";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 255 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 255 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MoreButton BTN_MORE
+ {
+ Pos = MAP_APPFONT ( 255 , 101 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /*
+ Text = "~Zusätze";
+ Text[ ENGLISH ] = "~More";
+ Text[norwegian] = "~Mer";
+ Text[italian] = "~Altro";
+ Text[portuguese_brazilian] = "~Mais";
+ Text[portuguese] = "~Mais";
+ Text[finnish] = "~Enemmän";
+ Text[danish] = "~Flere";
+ Text[french] = " S~uite";
+ Text[swedish] = "~Fler";
+ Text[dutch] = "~Overige";
+ Text[spanish] = "~Más";
+ Text[english_us] = "~More";
+ */
+ TabStop = TRUE ;
+ MapUnit = MAP_APPFONT ;
+ Delta = 48 ;
+ };
+ PushButton BTN_ADD
+ {
+ Pos = MAP_APPFONT ( 255 , 64 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Einfügen... : ~Einf³gen... */
+ Text = "Hi~nzufügen..." ;
+ Text [ ENGLISH ] = "~Add..." ;
+ Text [ norwegian ] = "~Add..." ;
+ Text [ italian ] = "~Inserisci..." ;
+ Text [ portuguese_brazilian ] = "~Add..." ;
+ Text [ portuguese ] = "~Adicionar..." ;
+ Text [ finnish ] = "~Lisää..." ;
+ Text [ danish ] = "Tilføj..." ;
+ Text [ french ] = "A~jouter..." ;
+ Text [ swedish ] = "Lägg ti~ll..." ;
+ Text [ dutch ] = "~Toevoegen..." ;
+ Text [ spanish ] = "~Añadir..." ;
+ Text [ english_us ] = "~Add..." ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "²åÈë(~I)...";
+ Text[ russian ] = "Äîáàâèòü...";
+ Text[ polish ] = "Dodaj...";
+ Text[ japanese ] = "’ljÁ...";
+ Text[ russian ] = "Äîáàâèòü...";
+ Text[ polish ] = "Dodaj...";
+ Text[ japanese ] = "’ljÁ...";
+ Text[ chinese_simplified ] = "²åÈë(~I)...";
+ Text[ chinese_traditional ] = "´¡¤J(~I)...";
+ Text[ arabic ] = "ÅÖÇÝÉ...";
+ Text[ greek ] = "ÐñïóèÞêç...";
+ Text[ korean ] = "Ãß°¡(~A)...";
+ Text[ turkish ] = "~Ekle...";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BTN_REMOVE
+ {
+ Pos = MAP_APPFONT ( 255 , 81 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen : ~L÷schen */
+ Text = "~Löschen" ;
+ Text [ ENGLISH ] = "Remo~ve" ;
+ Text [ norwegian ] = "Remo~ve" ;
+ Text [ italian ] = "~Elimina" ;
+ Text [ portuguese_brazilian ] = "Remo~ver" ;
+ Text [ portuguese ] = "E~liminar" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "~Wissen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Delete" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ɾ³ý(~D)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~D)";
+ Text[ chinese_traditional ] = "§R°£(~D)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦(~D)";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+ };
+
+ PushButton BTN_RENAME
+ {
+ Pos = MAP_APPFONT ( 255 , 123 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ HelpId=HID_SC_RENAME_AUTOFMT;
+ Text = "Um~benennen" ;
+ Text [ ENGLISH ] = "Ren~ame" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "Mudar ~nome" ;
+ Text [ english_us ] = "Ren~ame" ;
+ Text [ portuguese_brazilian ] = "Um~benennen" ;
+ Text [ swedish ] = "B~yt namn" ;
+ Text [ danish ] = "Omdøb" ;
+ Text [ italian ] = "~Rinomina" ;
+ Text [ spanish ] = "Cambiar ~nombre" ;
+ Text [ french ] = "Re~nommer" ;
+ Text [ dutch ] = "~Naam wijzigen" ;
+ Text[ chinese_simplified ] = "ÖØÃüÃû(~A)";
+ Text[ russian ] = "Ïåðåèìåíîâàòü";
+ Text[ polish ] = "Zmieñ nazwê";
+ Text[ japanese ] = "–¼‘O‚Ì•ÏX(~A)";
+ Text[ chinese_traditional ] = "­«·s©R¦W(~A)";
+ Text[ arabic ] = "ÅÚÇÏÉ ÊÓãíÉ";
+ Text[ greek ] = "Ìåôïíïìáóßá";
+ Text[ korean ] = "À̸§ ¹Ù²Ù±â(~A)";
+ Text[ turkish ] = "~Yeniden adlandýr";
+ Text[ language_user1 ] = " ";
+ };
+
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 255 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ String STR_ADD_TITLE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? AutoFormat hinzufügen : Autoformat hinzufügen */
+ /* ### ACHTUNG: Neuer Text in Resource? AutoFormat hinzufügen : Autoformat hinzufügen */
+ /* ### ACHTUNG: Neuer Text in Resource? AutoFormat hinzufügen : AutoFormat hinzuf³gen */
+ Text = "AutoFormat hinzufügen" ;
+ Text [ ENGLISH ] = "Add AutoFormat" ;
+ Text [ norwegian ] = "Add AutoFormat" ;
+ Text [ italian ] = "Aggiungi formattazione automatica" ;
+ Text [ portuguese_brazilian ] = "Acrescentar Formato automático" ;
+ Text [ portuguese ] = "Adicionar AutoFormato" ;
+ Text [ finnish ] = "Lisää automaattimuoto" ;
+ Text [ danish ] = "Tilføj AutoFormat" ;
+ Text [ french ] = "Ajouter AutoFormat" ;
+ Text [ swedish ] = "Lägg till AutoFormat" ;
+ Text [ dutch ] = "AutoOpmaak toevoegen" ;
+ Text [ spanish ] = "Añadir AutoFormato" ;
+ Text [ english_us ] = "Add AutoFormat" ;
+ Text[ chinese_simplified ] = "ÐÂÔö×Ô¶¯¸ñʽ";
+ Text[ russian ] = "Äîáàâèòü àâòîôîðìàò";
+ Text[ polish ] = "Dodaj autoformatowanie";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä‚̒ljÁ";
+ Text[ chinese_traditional ] = "·s¼W¦Û°Ê®æ¦¡";
+ Text[ arabic ] = "ÅÖÇÝÉ ÊäÓíÞ ÊáÞÇÆí";
+ Text[ greek ] = "ÐñïóèÞêç ÁõôïÌïñöïðïßçóçò";
+ Text[ korean ] = "ÀÚµ¿ ¼­½Ä Ãß°¡";
+ Text[ turkish ] = "Otomatik formatlama ekle";
+ Text[ language_user1 ] = " ";
+ };
+
+ String STR_RENAME_TITLE
+ {
+ Text = "Autoformat umbenennen" ;
+ Text [ ENGLISH ] = "Rename Autoformat" ;
+ Text [ english_us ] = "Rename AutoFormat" ;
+ Text [ portuguese ] = "Mudar nome do AutoFormato" ;
+ Text [ portuguese_brazilian ] = "Autoformat umbenennen" ;
+ Text [ swedish ] = "Byt namn på AutoFormat" ;
+ Text [ danish ] = "Omdøb AutoFormat" ;
+ Text [ italian ] = "Rinomina formattazione automatica" ;
+ Text [ spanish ] = "Cambiar nombre del AutoFormato" ;
+ Text [ french ] = "Renommer l'AutoFormat" ;
+ Text [ dutch ] = "AutoOpmaak nieuwe naam geven" ;
+ Text[ chinese_simplified ] = "ÖØÃüÃû×Ô¶¯¸ñʽ";
+ Text[ russian ] = "Ïåðåèìåíîâàòü àâòîôîðìàò";
+ Text[ polish ] = "Zmieñ nazwê autoformatowania";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä‚Ì–¼‘O‚Ì•ÏX";
+ Text[ chinese_traditional ] = "­«·s©R¦W¦Û°Ê®æ¦¡";
+ Text[ arabic ] = "ÅÚÇÏÉ ÊÓãíÉ ÇáÊäÓíÞ ÇáÊáÞÇÆí";
+ Text[ greek ] = "Ìåôïíïìáóßá ÁõôïÌïñöïðïßçóçò";
+ Text[ korean ] = "ÀÚµ¿¼­½Ä À̸§ ¹Ù²Ù±â";
+ Text[ turkish ] = "Otom. formatlamayý yen. adlandýr";
+ Text[ language_user1 ] = " ";
+ };
+
+ String STR_ADD_LABEL
+ {
+ Text = "Name" ;
+ Text [ ENGLISH ] = "Name" ;
+ Text [ norwegian ] = "Navn" ;
+ Text [ italian ] = "Nome" ;
+ Text [ portuguese_brazilian ] = "Nomear" ;
+ Text [ portuguese ] = "Nome" ;
+ Text [ finnish ] = "Nimi" ;
+ Text [ danish ] = "Navn" ;
+ Text [ french ] = "Nom" ;
+ Text [ swedish ] = "Namn" ;
+ Text [ dutch ] = "Naam" ;
+ Text [ spanish ] = "Nombre" ;
+ Text [ english_us ] = "Name" ;
+ Text[ chinese_simplified ] = "Ãû³Æ";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O";
+ Text[ chinese_traditional ] = "¦WºÙ";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§";
+ Text[ turkish ] = "Ad";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DEL_TITLE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? AutoFormat löschen : Autoformat löschen */
+ /* ### ACHTUNG: Neuer Text in Resource? AutoFormat löschen : Autoformat löschen */
+ /* ### ACHTUNG: Neuer Text in Resource? AutoFormat löschen : AutoFormat l÷schen */
+ Text = "AutoFormat löschen" ;
+ Text [ ENGLISH ] = "Delete AutoFormat" ;
+ Text [ norwegian ] = "Delete AutoFormat" ;
+ Text [ italian ] = "Cancella formattazione automatica" ;
+ Text [ portuguese_brazilian ] = "Apagar Formato Automático" ;
+ Text [ portuguese ] = "Eliminar AutoFormato" ;
+ Text [ finnish ] = "Poista automaattimuoto" ;
+ Text [ danish ] = "Slet AutoFormat" ;
+ Text [ french ] = "Supprimer l'AutoFormat" ;
+ Text [ swedish ] = "Radera AutoFormat" ;
+ Text [ dutch ] = "AutoOpmaak wissen" ;
+ Text [ spanish ] = "Eliminar AutoFormato" ;
+ Text [ english_us ] = "Delete AutoFormat" ;
+ Text[ chinese_simplified ] = "ɾ³ý×Ô¶¯¸ñʽ";
+ Text[ russian ] = "Óäàëèòü àâòîôîðìàò";
+ Text[ polish ] = "Usuñ autoformatowanie";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä‚Ìíœ";
+ Text[ chinese_traditional ] = "§R°£¦Û°Ê®æ¦¡";
+ Text[ arabic ] = "ÍÐÝ ÊäÓíÞ ÊáÞÇÆí";
+ Text[ greek ] = "ÄéáãñáöÞ ÁõôïÌïñöïðïßçóçò";
+ Text[ korean ] = "ÀÚµ¿¼­½Ä »èÁ¦";
+ Text[ turkish ] = "Otomatik formatlamayý sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DEL_MSG
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wollen Sie das AutoFormat # wirklich löschen? : Wollen Sie das Autoformat # wirklich löschen? */
+ /* ### ACHTUNG: Neuer Text in Resource? Wollen Sie das AutoFormat # wirklich löschen? : Wollen Sie das Autoformat # wirklich löschen? */
+ /* ### ACHTUNG: Neuer Text in Resource? Wollen Sie das AutoFormat # wirklich löschen? : Wollen Sie das AutoFormat # wirklich l÷schen? */
+ Text = "Wollen Sie das AutoFormat # wirklich löschen?" ;
+ Text [ ENGLISH ] = "Do you really want to delete the # autoFormat?" ;
+ Text [ norwegian ] = "Do you really want to delete the # autoFormat?" ;
+ Text [ italian ] = "Cancellare la formattazione automatica #?" ;
+ Text [ portuguese_brazilian ] = "Deseja realmente apagar o formato automático #?" ;
+ Text [ portuguese ] = "Deseja realmente eliminar o formato automático #?" ;
+ Text [ finnish ] = "Haluatko varmasti poistaa automaattimuodon #?" ;
+ Text [ danish ] = "Er du sikker på, at du vil slette AutoFormat #?" ;
+ Text [ french ] = "Confirmez-vous la suppression de l'AutoFormat # ?" ;
+ Text [ swedish ] = "Skall AutoFormat # verkligen raderas?" ;
+ Text [ dutch ] = "Wilt u AutoOpmaak # werkelijk verwijderen?" ;
+ Text [ spanish ] = "¿Desea realmente eliminar el AutoFormato #?" ;
+ Text [ english_us ] = "Do you really want to delete the # AutoFomat?" ;
+ Text[ chinese_simplified ] = "ÄúÕæҪɾ³ý×Ô¶¯¸ñʽ # ?";
+ Text[ russian ] = "Âû äåéñòâèòåëüíî õîòèòå óäàëèòü àâòîôîðìàò #?";
+ Text[ polish ] = "Chcesz na pewno skasowaæ autoformatowanie #?";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä#‚ð–{“–‚É휂µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "±z¯u­n§R°£¦Û°Ê®æ¦¡ # ?";
+ Text[ arabic ] = "åá ÊÑíÏ ÈÇáÝÚá ÍÐÝ ÇáÊäÓíÞ ÇáÊáÞÇÆí #¿";
+ Text[ greek ] = "ÈÝëåôå ðñáãìáôéêÜ íá äéáãñáöåß ç ÁõôïÌïñöïðïßçóç #;";
+ Text[ korean ] = "# ÀÚµ¿¼­½Ä À» »èÁ¦ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "Otomatik formatlama # gerçekten silinsin mi?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_BTN_CLOSE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Schlie~ßen : Schlie~˜en */
+ Text = "Schlie~ßen" ;
+ Text [ ENGLISH ] = "~Close" ;
+ Text [ norwegian ] = "~Lukk" ;
+ Text [ italian ] = "~Chiudi" ;
+ Text [ portuguese_brazilian ] = "~Fechar" ;
+ Text [ portuguese ] = "~Fechar" ;
+ Text [ finnish ] = "~Sulje" ;
+ Text [ danish ] = "Luk" ;
+ Text [ french ] = "~Fermer" ;
+ Text [ swedish ] = "Stä~ng" ;
+ Text [ dutch ] = "~Sluiten" ;
+ Text [ spanish ] = "~Cerrar" ;
+ Text [ english_us ] = "~Close" ;
+ Text[ chinese_simplified ] = "¹Ø±Õ(~C)";
+ Text[ russian ] = "Çàêðûòü";
+ Text[ polish ] = "Zamknij";
+ Text[ japanese ] = "•Â‚¶‚é(~C)";
+ Text[ chinese_traditional ] = "Ãö³¬(~C)";
+ Text[ arabic ] = "ÅÛáÇÞ";
+ Text[ greek ] = "Êëåßóéìï";
+ Text[ korean ] = "´Ý±â(~C)";
+ Text[ turkish ] = "K~apat";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_JAN
+ {
+ Text = "Jan" ;
+ Text [ ENGLISH ] = "Jan" ;
+ Text [ norwegian ] = "Jan" ;
+ Text [ italian ] = "Gen" ;
+ Text [ portuguese_brazilian ] = "Jan" ;
+ Text [ portuguese ] = "Jan" ;
+ Text [ finnish ] = "Tam" ;
+ Text [ danish ] = "Jan" ;
+ Text [ french ] = "Janv." ;
+ Text [ swedish ] = "Jan" ;
+ Text [ dutch ] = "Jan" ;
+ Text [ spanish ] = "Ene" ;
+ Text [ english_us ] = "Jan" ;
+ Text[ chinese_simplified ] = "Ò»ÔÂ";
+ Text[ russian ] = "ßíâ";
+ Text[ polish ] = "Styczeñ";
+ Text[ japanese ] = "1ŒŽ";
+ Text[ chinese_traditional ] = "¤@¤ë";
+ Text[ arabic ] = "íäÇíÑ";
+ Text[ greek ] = "Éáí";
+ Text[ korean ] = "1¿ù";
+ Text[ turkish ] = "Oca";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FEB
+ {
+ Text = "Feb" ;
+ Text [ ENGLISH ] = "Feb" ;
+ Text [ norwegian ] = "Feb" ;
+ Text [ italian ] = "Feb" ;
+ Text [ portuguese_brazilian ] = "Fev" ;
+ Text [ portuguese ] = "Fev" ;
+ Text [ finnish ] = "Hel" ;
+ Text [ danish ] = "Feb" ;
+ Text [ french ] = "Févr." ;
+ Text [ swedish ] = "Feb" ;
+ Text [ dutch ] = "Feb" ;
+ Text [ spanish ] = "Feb" ;
+ Text [ english_us ] = "Feb" ;
+ Text[ chinese_simplified ] = "¶þÔÂ";
+ Text[ russian ] = "Ôåâ";
+ Text[ polish ] = "Luty";
+ Text[ japanese ] = "2ŒŽ";
+ Text[ chinese_traditional ] = "¤G¤ë";
+ Text[ arabic ] = "ÝÈÑÇíÑ";
+ Text[ greek ] = "Öåâ";
+ Text[ korean ] = "2¿ù";
+ Text[ turkish ] = "Þub";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MAR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Mär : Mõr */
+ Text = "Mär" ;
+ Text [ ENGLISH ] = "Mar" ;
+ Text [ norwegian ] = "Mar" ;
+ Text [ italian ] = "Mar" ;
+ Text [ portuguese_brazilian ] = "Mar" ;
+ Text [ portuguese ] = "Mar" ;
+ Text [ finnish ] = "Maa" ;
+ Text [ danish ] = "Mar" ;
+ Text [ french ] = "Mars" ;
+ Text [ swedish ] = "Mar" ;
+ Text [ dutch ] = "Mrt" ;
+ Text [ spanish ] = "Mar" ;
+ Text [ english_us ] = "Mar" ;
+ Text[ chinese_simplified ] = "ÈýÔÂ";
+ Text[ russian ] = "Ìàð";
+ Text[ polish ] = "Marzec";
+ Text[ japanese ] = "3ŒŽ";
+ Text[ chinese_traditional ] = "¤T¤ë";
+ Text[ arabic ] = "ãÇÑÓ";
+ Text[ greek ] = "Máñ";
+ Text[ korean ] = "3¿ù";
+ Text[ turkish ] = "Mar";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NORTH
+ {
+ Text = "Nord" ;
+ Text [ ENGLISH ] = "North" ;
+ Text [ norwegian ] = "North" ;
+ Text [ italian ] = "Nord" ;
+ Text [ portuguese_brazilian ] = "Norte" ;
+ Text [ portuguese ] = "Norte" ;
+ Text [ finnish ] = "Pohjoinen" ;
+ Text [ danish ] = "Nord" ;
+ Text [ french ] = "Nord" ;
+ Text [ swedish ] = "Norr" ;
+ Text [ dutch ] = "Noord" ;
+ Text [ spanish ] = "Norte" ;
+ Text [ english_us ] = "North" ;
+ Text[ chinese_simplified ] = "±±";
+ Text[ russian ] = "Ñåâåð";
+ Text[ polish ] = "Pó³noc";
+ Text[ japanese ] = "–k";
+ Text[ chinese_traditional ] = "¥_";
+ Text[ arabic ] = "ÇáÔãÇá";
+ Text[ greek ] = "ÂïññÜò";
+ Text[ korean ] = "ºÏÂÊ";
+ Text[ turkish ] = "Kuzey";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MID
+ {
+ Text = "Mitte" ;
+ Text [ ENGLISH ] = "Mid" ;
+ Text [ norwegian ] = "Mid" ;
+ Text [ italian ] = "Centro" ;
+ Text [ portuguese_brazilian ] = "Centro" ;
+ Text [ portuguese ] = "Centro" ;
+ Text [ finnish ] = "Keski" ;
+ Text [ danish ] = "Midte" ;
+ Text [ french ] = "Milieu" ;
+ Text [ swedish ] = "Mitten" ;
+ Text [ dutch ] = "Midden" ;
+ Text [ spanish ] = "Centro" ;
+ Text [ english_us ] = "Mid" ;
+ Text[ chinese_simplified ] = "ÖÐ";
+ Text[ russian ] = "Ñåðåäèíà";
+ Text[ polish ] = "Œrodek";
+ Text[ japanese ] = "’†‰›";
+ Text[ chinese_traditional ] = "¤¤";
+ Text[ arabic ] = "ÇáæÓØ";
+ Text[ greek ] = "ÊÝíôñï";
+ Text[ korean ] = "Áß°£";
+ Text[ turkish ] = "Orta";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SOUTH
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Süd : S³d */
+ Text = "Süd" ;
+ Text [ ENGLISH ] = "South" ;
+ Text [ norwegian ] = "South" ;
+ Text [ italian ] = "Sud" ;
+ Text [ portuguese_brazilian ] = "Sul" ;
+ Text [ portuguese ] = "Sul" ;
+ Text [ finnish ] = "Etelä" ;
+ Text [ danish ] = "Syd" ;
+ Text [ french ] = "Sud" ;
+ Text [ swedish ] = "Söder" ;
+ Text [ dutch ] = "Zuid" ;
+ Text [ spanish ] = "Sur" ;
+ Text [ english_us ] = "South" ;
+ Text[ chinese_simplified ] = "ÄÏ";
+ Text[ russian ] = "Þã";
+ Text[ polish ] = "Po³udnie";
+ Text[ japanese ] = "“ì";
+ Text[ chinese_traditional ] = "«n";
+ Text[ arabic ] = "ÇáÌäæÈ";
+ Text[ greek ] = "Íüôïò";
+ Text[ korean ] = "³²ÂÊ";
+ Text[ turkish ] = "Güney";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SUM
+ {
+ Text = "Summe" ;
+ Text [ ENGLISH ] = "Sum" ;
+ Text [ norwegian ] = "Sum" ;
+ Text [ italian ] = "Somma" ;
+ Text [ portuguese_brazilian ] = "Soma" ;
+ Text [ portuguese ] = "Soma" ;
+ Text [ finnish ] = "Summa" ;
+ Text [ danish ] = "Total" ;
+ Text [ french ] = "Somme" ;
+ Text [ swedish ] = "Summa" ;
+ Text [ dutch ] = "Som" ;
+ Text [ spanish ] = "Suma" ;
+ Text [ english_us ] = "Total" ;
+ Text[ chinese_simplified ] = "×ܼÆ";
+ Text[ russian ] = "Ñóììà";
+ Text[ polish ] = "Suma";
+ Text[ japanese ] = "‡Œv";
+ Text[ chinese_traditional ] = "Á`­p";
+ Text[ arabic ] = "ÇáãÌãæÚ";
+ Text[ greek ] = "¢èñïéóìá";
+ Text[ korean ] = "ÇÕ°è";
+ Text[ turkish ] = "Toplam";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽ";
+ Text[ russian ] = "Àâòîôîðìàò";
+ Text[ polish ] = "Autoformatowanie";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä";
+ Text[ chinese_traditional ] = "¦Û°Ê®æ¦¡";
+ Text[ arabic ] = "ÇáÊäÓíÞ ÇáÊáÞÇÆí";
+ Text[ greek ] = "ÁõôïÌïñöïðïßçóç";
+ Text[ korean ] = "ÀÚµ¿ ¼­½Ä";
+ Text[ turkish ] = "Otomatik formatlama";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/src/condfrmt.src b/sc/source/ui/src/condfrmt.src
new file mode 100644
index 000000000000..87c141753091
--- /dev/null
+++ b/sc/source/ui/src/condfrmt.src
@@ -0,0 +1,1606 @@
+/*************************************************************************
+ *
+ * $RCSfile: condfrmt.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "condfrmt.hrc"
+ModelessDialog RID_SCDLG_CONDFORMAT
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 163 ) ;
+ Text = "Bedingte Formatierung" ;
+ Text [ ENGLISH ] = "Conditional format" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ HelpId = HID_SCDLG_CONDFORMAT ;
+ Hide = TRUE ;
+ CheckBox CBX_COND1
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Bedingung 1" ;
+ Text [ ENGLISH ] = "Condition 1" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Condition 1" ;
+ Text [ italian ] = "Condizione 1" ;
+ Text [ spanish ] = "Condición 1" ;
+ Text [ french ] = "Condition 1" ;
+ Text [ dutch ] = "Voorwaarde 1" ;
+ Text [ swedish ] = "Villkor 1" ;
+ Text [ danish ] = "Betingelse 1" ;
+ Text [ portuguese_brazilian ] = "Bedingung 1" ;
+ Text [ portuguese ] = "Condição 1" ;
+ Text[ chinese_simplified ] = "Ìõ¼þ 1";
+ Text[ russian ] = "Óñëîâèå 1";
+ Text[ polish ] = "Warunek 1";
+ Text[ japanese ] = "ðŒ1";
+ Text[ chinese_traditional ] = "±ø¥ó 1";
+ Text[ arabic ] = "ÇáÔÑØ 1";
+ Text[ greek ] = "ÓõíèÞêç 1";
+ Text[ korean ] = "Á¶°Ç 1";
+ Text[ turkish ] = "Koþul 1";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_COND1_1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 18 ) ;
+ Size = MAP_APPFONT ( 48 , 40 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Zellwert ist" ; Default ; > ;
+ < "Formel ist" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Zellwert ist" ; Default ; > ;
+ < "Formel ist" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Valor da célula é" ; Default ; > ;
+ < "Fórmula é" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "Cell value is" ; Default ; > ;
+ < "Formula is" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Zellwert ist" ; Default ; > ;
+ < "Formel ist" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Cellvärdet är" ; Default ; > ;
+ < "Formeln är" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Celleværdien er" ; Default ; > ;
+ < "Formlen er" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Il valore della cella è" ; Default ; > ;
+ < "La formula è" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "El valor de la celda es" ; Default ; > ;
+ < "La fórmula es" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Valeur est" ; Default ; > ;
+ < "Formule est" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Celwaarde is" ; Default ; > ;
+ < "Formule is" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "µ¥Ôª¸ñÊýÖµÊÇ" ; Default ; > ;
+ < "¹«Ê½ÊÇ" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Çíà÷åíèå ÿ÷åéêè" ; Default ; > ;
+ < "Ôîðìóëà" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Wart. kom. jest" ; Default ; > ;
+ < "Formu³a jest" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "¾Ù‚Ì’l‚ª" ; Default ; > ;
+ < "”Ž®‚ª" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "Àx¦s®æ¼Æ­È¬O" ; Default ; > ;
+ < "¤½¦¡¬O" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÞíãÉ ÇáÎáíÉ" ; Default ; > ;
+ < "ÇáÕíÛÉ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "Ç ôéìÞ ôïõ êåëéïý åßíáé" ; Default ; > ;
+ < "Ï ôýðïò åßíáé" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¼¿ °ªÀº" ; Default ; > ;
+ < "¼ö½ÄÀº" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Hücre deðeri" ; Default ; > ;
+ < "Formül" ; Default ; > ;
+ };
+ };
+ ListBox LB_COND1_2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 18 ) ;
+ Size = MAP_APPFONT ( 62 , 88 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "gleich" ; Default ; > ;
+ < "kleiner als" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 3 : größer als*/
+ < "größer als" ; Default ; > ;
+ < "kleiner oder gleich" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 5 : größer oder gleich*/
+ < "größer oder gleich" ; Default ; > ;
+ < "ungleich" ; Default ; > ;
+ < "zwischen" ; Default ; > ;
+ < "nicht zwischen" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "igual" ; Default ; > ;
+ < "menor" ; Default ; > ;
+ < "maior" ; Default ; > ;
+ < "menor ou igual a" ; Default ; > ;
+ < "maior ou igual a" ; Default ; > ;
+ < "desigual" ; Default ; > ;
+ < "entre" ; Default ; > ;
+ < "não entre" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "equal to" ; Default ; > ;
+ < "less than" ; Default ; > ;
+ < "greater than" ; Default ; > ;
+ < "less than or equal to" ; Default ; > ;
+ < "greater than or equal to" ; Default ; > ;
+ < "not equal to" ; Default ; > ;
+ < "between" ; Default ; > ;
+ < "not between" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "gleich" ; Default ; > ;
+ < "kleiner als" ; Default ; > ;
+ < "größer als" ; Default ; > ;
+ < "kleiner oder gleich" ; Default ; > ;
+ < "größer oder gleich" ; Default ; > ;
+ < "ungleich" ; Default ; > ;
+ < "zwischen" ; Default ; > ;
+ < "nicht zwischen" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "lika med" ; Default ; > ;
+ < "mindre än" ; Default ; > ;
+ < "större än" ; Default ; > ;
+ < "mindre än eller lika med" ; Default ; > ;
+ < "större än eller lika med" ; Default ; > ;
+ < "inte lika med" ; Default ; > ;
+ < "mellan" ; Default ; > ;
+ < "inte mellan" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "lig med" ; Default ; > ;
+ < "mindre end" ; Default ; > ;
+ < "større end" ; Default ; > ;
+ < "mindre end eller lig med" ; Default ; > ;
+ < "større end eller lig med" ; Default ; > ;
+ < "forskellig fra" ; Default ; > ;
+ < "mellem" ; Default ; > ;
+ < "ikke mellem" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "uguale" ; Default ; > ;
+ < "minore di" ; Default ; > ;
+ < "maggiore di" ; Default ; > ;
+ < "minore o uguale" ; Default ; > ;
+ < "maggiore o uguale" ; Default ; > ;
+ < "non uguale" ; Default ; > ;
+ < "tra" ; Default ; > ;
+ < "non tra" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "igual" ; Default ; > ;
+ < "menor que" ; Default ; > ;
+ < "mayor que" ; Default ; > ;
+ < "menor o igual" ; Default ; > ;
+ < "mayor o igual" ; Default ; > ;
+ < "distinta de" ; Default ; > ;
+ < "entre" ; Default ; > ;
+ < "no entre" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "égale à" ; Default ; > ;
+ < "inférieure à" ; Default ; > ;
+ < "supérieure à" ; Default ; > ;
+ < "inférieure ou égale à" ; Default ; > ;
+ < "supérieure ou égale à" ; Default ; > ;
+ < "différente de" ; Default ; > ;
+ < "comprise entre" ; Default ; > ;
+ < "non comprise entre" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "gelijk aan" ; Default ; > ;
+ < "kleiner dan" ; Default ; > ;
+ < "groter dan" ; Default ; > ;
+ < "kleiner dan of gelijk aan" ; Default ; > ;
+ < "groter dan of gelijk aan" ; Default ; > ;
+ < "niet gelijk aan" ; Default ; > ;
+ < "tussen" ; Default ; > ;
+ < "niet tussen" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "µÈÓÚ" ; Default ; > ;
+ < "СÓÚ" ; Default ; > ;
+ < "´óÓÚ" ; Default ; > ;
+ < "СÓÚ»òµÈÓÚ" ; Default ; > ;
+ < "´óÓÚ»òµÈÓÚ" ; Default ; > ;
+ < "²»µÈÓÚ" ; Default ; > ;
+ < "ÔÚÖ®¼ä" ; Default ; > ;
+ < "²»ÔÚÖ®¼ä" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "ðàâíî" ; Default ; > ;
+ < "ìåíüøå ÷åì" ; Default ; > ;
+ < "áîëüøå ÷åì" ; Default ; > ;
+ < "ìåíüøå èëè ðàâíî" ; Default ; > ;
+ < "áîëüøå èëè ðàâíî" ; Default ; > ;
+ < "íåðàâíî" ; Default ; > ;
+ < "ìåæäó" ; Default ; > ;
+ < "âíå" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "równa" ; Default ; > ;
+ < "mniejsza ni¿" ; Default ; > ;
+ < "wiêksza ni¿" ; Default ; > ;
+ < "mniejsza ni¿ lub równa" ; Default ; > ;
+ < "wiêksza ni¿ lub równa" ; Default ; > ;
+ < "nierówna" ; Default ; > ;
+ < "miêdzy" ; Default ; > ;
+ < "nie miêdzy" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "ŽŸ‚Ì’l‚É“™‚µ‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚æ‚謂³‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚æ‚è‘å‚«‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’lˆÈ‰º" ; Default ; > ;
+ < "ŽŸ‚Ì’lˆÈã" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚É“™‚µ‚­‚È‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚ÌŠÔ" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚ÌŠÔ‚Å‚È‚¢" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "µ¥©ó" ; Default ; > ;
+ < "¤p©ó" ; Default ; > ;
+ < "¤j©ó" ; Default ; > ;
+ < "¤p©ó©Îµ¥©ó" ; Default ; > ;
+ < "¤j©ó©Îµ¥©ó" ; Default ; > ;
+ < "¤£µ¥©ó" ; Default ; > ;
+ < "¦b¤§¶¡" ; Default ; > ;
+ < "¤£¦b¤§¶¡" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "íÓÇæí" ; Default ; > ;
+ < "ÃÞá ãä" ; Default ; > ;
+ < "ÃßÈÑ ãä" ; Default ; > ;
+ < "ÃÕÛÑ ãä Ãæ íÓÇæí" ; Default ; > ;
+ < "ÃßÈÑ ãä Ãæ íÓÇæí" ; Default ; > ;
+ < "áÇ íÓÇæí" ; Default ; > ;
+ < "Èíä" ; Default ; > ;
+ < "áíÓÊ Èíä" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ºóïí" ; Default ; > ;
+ < "ìéêñüôåñïò áðü" ; Default ; > ;
+ < "ìåãáëýôåñïò áðü" ; Default ; > ;
+ < "ìéêñüôåñï Þ ßóï ìå" ; Default ; > ;
+ < "ìåãáëýôåñï Þ ßóï ìå" ; Default ; > ;
+ < "ÄéÜöïñï" ; Default ; > ;
+ < "ìåôáîý" ; Default ; > ;
+ < "ü÷é ìåôáîý" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "´ÙÀ½°ú °°À½" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ¹Ì¸¸ÀÓ" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ÃÊ°úÀÓ" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ÀÌÇÏÀÓ" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ÀÌ»óÀÓ" ; Default ; > ;
+ < "´ÙÀ½°ú °°Áö ¾ÊÀ½" ; Default ; > ;
+ < "´ÙÀ½ÀÇ »çÀÌÀÓ" ; Default ; > ;
+ < "¹ÛÀÇ" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "eþittir" ; Default ; > ;
+ < "küçüktür" ; Default ; > ;
+ < "büyüktür" ; Default ; > ;
+ < "küçük ya da eþittir" ; Default ; > ;
+ < "büyük ya da eþittir" ; Default ; > ;
+ < "eþit deðildir" ; Default ; > ;
+ < "þu aralýkta" ; Default ; > ;
+ < "þu aralýkta deðil" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ Edit EDT_COND1_1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 122 , 18 ) ;
+ Size = MAP_APPFONT ( 41 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_COND1_1
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 165 , 18 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Minimize";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_COND1_AND
+ {
+ Pos = MAP_APPFONT ( 182 , 20 ) ;
+ Size = MAP_APPFONT ( 16 , 10 ) ;
+ Text = "und" ;
+ Text [ ENGLISH ] = "and" ;
+ Text [ english_us ] = "and" ;
+ Text [ italian ] = "e" ;
+ Text [ spanish ] = "y" ;
+ Text [ french ] = "et" ;
+ Text [ dutch ] = "en" ;
+ Text [ swedish ] = "och" ;
+ Text [ danish ] = "og" ;
+ Text [ portuguese_brazilian ] = "und" ;
+ Text [ portuguese ] = "e" ;
+ Text[ chinese_simplified ] = "ºÍ";
+ Text[ russian ] = "è";
+ Text[ polish ] = "i";
+ Text[ japanese ] = "‚»‚µ‚Ä";
+ Text[ chinese_traditional ] = "©M";
+ Text[ arabic ] = "æ";
+ Text[ greek ] = "êáé";
+ Text[ korean ] = "¿Í";
+ Text[ turkish ] = "ve";
+ Text[ language_user1 ] = " ";
+ };
+ Edit EDT_COND1_2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 200 , 18 ) ;
+ Size = MAP_APPFONT ( 41 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_COND1_2
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 243 , 18 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Minimize";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_COND1_TEMPLATE
+ {
+ Pos = MAP_APPFONT ( 12 , 36 ) ;
+ Size = MAP_APPFONT ( 42 , 10 ) ;
+ Text = "Zellvorlage" ;
+ Text [ ENGLISH ] = "Cell template" ;
+ Text [ english_us ] = "Cell Style" ;
+ Text [ italian ] = "Modello di cella" ;
+ Text [ spanish ] = "Estilo de celda" ;
+ Text [ french ] = "Style de cellule" ;
+ Text [ dutch ] = "Celopmaak" ;
+ Text [ swedish ] = "Cellformatmall" ;
+ Text [ danish ] = "Celletypografi" ;
+ Text [ portuguese_brazilian ] = "Zellvorlage" ;
+ Text [ portuguese ] = "Estilo da célula" ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñÑùʽ";
+ Text[ russian ] = "Ñòèëü ÿ÷åéêè";
+ Text[ polish ] = "Styl komórki";
+ Text[ japanese ] = "¾Ù‚̽À²Ù";
+ Text[ chinese_traditional ] = "Àx¦s®æ¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÎáíÉ";
+ Text[ greek ] = "Óôõë êåëéïý";
+ Text[ korean ] = "¼¿ À¯Çü";
+ Text[ turkish ] = "Hücre biçimi";
+ Text[ language_user1 ] = "\"Vorlagen\" Styles are always capitalized no matter where they show up. EM15.5.00";
+ };
+ ListBox LB_COND1_TEMPLATE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 33 ) ;
+ Size = MAP_APPFONT ( 62 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ CheckBox CBX_COND2
+ {
+ Pos = MAP_APPFONT ( 6 , 51 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Bedingung 2" ;
+ Text [ ENGLISH ] = "Condition 2" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Condition 2" ;
+ Text [ italian ] = "Condizione 2" ;
+ Text [ spanish ] = "Condición 2" ;
+ Text [ french ] = "Condition 2" ;
+ Text [ dutch ] = "Voorwaarde 2" ;
+ Text [ swedish ] = "Villkor 2" ;
+ Text [ danish ] = "Betingelse 2" ;
+ Text [ portuguese_brazilian ] = "Bedingung 2" ;
+ Text [ portuguese ] = "Condição 2" ;
+ Text[ chinese_simplified ] = "Ìõ¼þ 2";
+ Text[ russian ] = "Óñëîâèå 2";
+ Text[ polish ] = "Warunek 2";
+ Text[ japanese ] = "ðŒ2";
+ Text[ chinese_traditional ] = "±ø¥ó 2";
+ Text[ arabic ] = "ÇáÔÑØ 2";
+ Text[ greek ] = "ÓõíèÞêç 2";
+ Text[ korean ] = "Á¶°Ç2";
+ Text[ turkish ] = "Koþul 2";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_COND2_1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 63 ) ;
+ Size = MAP_APPFONT ( 48 , 40 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Zellwert ist" ; Default ; > ;
+ < "Formel ist" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Zellwert ist" ; Default ; > ;
+ < "Formel ist" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Valor da célula é" ; Default ; > ;
+ < "Fórmula é" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "Cell value is" ; Default ; > ;
+ < "Formula is" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Zellwert ist" ; Default ; > ;
+ < "Formel ist" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Cellvärdet är" ; Default ; > ;
+ < "Formeln är" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Celleværdien er" ; Default ; > ;
+ < "Formlen er" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Il valore della cella è" ; Default ; > ;
+ < "La formula è" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "El valor de la celda es" ; Default ; > ;
+ < "La fórmula es" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Valeur est" ; Default ; > ;
+ < "Formule est" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Celwaarde is" ; Default ; > ;
+ < "Formule is" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "µ¥Ôª¸ñÊýÖµÊÇ" ; Default ; > ;
+ < "¹«Ê½ÊÇ" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Çíà÷åíèå ÿ÷åéêè" ; Default ; > ;
+ < "Ôîðìóëà" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Wart. kom. jest" ; Default ; > ;
+ < "Formu³a jest" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "¾Ù‚Ì’l‚ª" ; Default ; > ;
+ < "”Ž®‚ª" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "Àx¦s®æ¼Æ­È¬O" ; Default ; > ;
+ < "¤½¦¡¬O" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÞíãÉ ÇáÎáíÉ" ; Default ; > ;
+ < "ÇáÕíÛÉ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "Ç ôéìÞ ôïõ êåëéïý åßíáé" ; Default ; > ;
+ < "Ï ôýðïò åßíáé" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¼¿ °ªÀº" ; Default ; > ;
+ < "¼ö½ÄÀº" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Hücre deðeri" ; Default ; > ;
+ < "Formül" ; Default ; > ;
+ };
+ };
+ ListBox LB_COND2_2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 63 ) ;
+ Size = MAP_APPFONT ( 62 , 88 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "gleich" ; Default ; > ;
+ < "kleiner als" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 3 : größer als*/
+ < "größer als" ; Default ; > ;
+ < "kleiner oder gleich" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 5 : größer oder gleich*/
+ < "größer oder gleich" ; Default ; > ;
+ < "ungleich" ; Default ; > ;
+ < "zwischen" ; Default ; > ;
+ < "nicht zwischen" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "igual" ; Default ; > ;
+ < "menor" ; Default ; > ;
+ < "maior" ; Default ; > ;
+ < "menor ou igual a" ; Default ; > ;
+ < "maior ou igual a" ; Default ; > ;
+ < "desigual" ; Default ; > ;
+ < "entre" ; Default ; > ;
+ < "não entre" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "equal to" ; Default ; > ;
+ < "less than" ; Default ; > ;
+ < "greater than" ; Default ; > ;
+ < "less than or equal to" ; Default ; > ;
+ < "greater than or equal to" ; Default ; > ;
+ < "not equal to" ; Default ; > ;
+ < "between" ; Default ; > ;
+ < "not between" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "gleich" ; Default ; > ;
+ < "kleiner als" ; Default ; > ;
+ < "größer als" ; Default ; > ;
+ < "kleiner oder gleich" ; Default ; > ;
+ < "größer oder gleich" ; Default ; > ;
+ < "ungleich" ; Default ; > ;
+ < "zwischen" ; Default ; > ;
+ < "nicht zwischen" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "lika med" ; Default ; > ;
+ < "mindre än" ; Default ; > ;
+ < "större än" ; Default ; > ;
+ < "mindre än eller lika med" ; Default ; > ;
+ < "större än eller lika med" ; Default ; > ;
+ < "inte lika med" ; Default ; > ;
+ < "mellan" ; Default ; > ;
+ < "inte mellan" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "lig med" ; Default ; > ;
+ < "mindre end" ; Default ; > ;
+ < "større end" ; Default ; > ;
+ < "mindre end eller lig med" ; Default ; > ;
+ < "større end eller lig med" ; Default ; > ;
+ < "forskellig fra" ; Default ; > ;
+ < "mellem" ; Default ; > ;
+ < "ikke mellem" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "uguale" ; Default ; > ;
+ < "minore di" ; Default ; > ;
+ < "maggiore di" ; Default ; > ;
+ < "minore o uguale" ; Default ; > ;
+ < "maggiore o uguale" ; Default ; > ;
+ < "non uguale" ; Default ; > ;
+ < "tra" ; Default ; > ;
+ < "non tra" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "igual" ; Default ; > ;
+ < "menor que" ; Default ; > ;
+ < "mayor que" ; Default ; > ;
+ < "menor o igual" ; Default ; > ;
+ < "mayor o igual" ; Default ; > ;
+ < "distinta de" ; Default ; > ;
+ < "entre" ; Default ; > ;
+ < "no entre" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "égale à" ; Default ; > ;
+ < "inférieure à" ; Default ; > ;
+ < "supérieure à" ; Default ; > ;
+ < "inférieure ou égale à" ; Default ; > ;
+ < "supérieure ou égale à" ; Default ; > ;
+ < "différente de" ; Default ; > ;
+ < "comprise entre" ; Default ; > ;
+ < "non comprise entre" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "gelijk aan" ; Default ; > ;
+ < "kleiner dan" ; Default ; > ;
+ < "groter dan" ; Default ; > ;
+ < "kleiner dan of gelijk aan" ; Default ; > ;
+ < "groter dan of gelijk aan" ; Default ; > ;
+ < "niet gelijk aan" ; Default ; > ;
+ < "tussen" ; Default ; > ;
+ < "niet tussen" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "µÈÓÚ" ; Default ; > ;
+ < "СÓÚ" ; Default ; > ;
+ < "´óÓÚ" ; Default ; > ;
+ < "СÓÚ»òµÈÓÚ" ; Default ; > ;
+ < "´óÓÚ»òµÈÓÚ" ; Default ; > ;
+ < "²»µÈÓÚ" ; Default ; > ;
+ < "ÔÚÖ®¼ä" ; Default ; > ;
+ < "²»ÔÚÖ®¼ä" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "ðàâíî" ; Default ; > ;
+ < "ìåíüøå ÷åì" ; Default ; > ;
+ < "áîëüøå ÷åì" ; Default ; > ;
+ < "ìåíüøå èëè ðàâíî" ; Default ; > ;
+ < "áîëüøå èëè ðàâíî" ; Default ; > ;
+ < "íåðàâíî" ; Default ; > ;
+ < "ìåæäó" ; Default ; > ;
+ < "âíå" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "równa" ; Default ; > ;
+ < "mniejsza ni¿" ; Default ; > ;
+ < "wiêksza ni¿" ; Default ; > ;
+ < "mniejsza ni¿ lub równa" ; Default ; > ;
+ < "wiêksza ni¿ lub równa" ; Default ; > ;
+ < "nierówna" ; Default ; > ;
+ < "miêdzy" ; Default ; > ;
+ < "nie miêdzy" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "ŽŸ‚Ì’l‚É“™‚µ‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚æ‚謂³‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚æ‚è‘å‚«‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’lˆÈ‰º" ; Default ; > ;
+ < "ŽŸ‚Ì’lˆÈã" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚É“™‚µ‚­‚È‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚ÌŠÔ" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚ÌŠÔ‚Å‚È‚¢" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "µ¥©ó" ; Default ; > ;
+ < "¤p©ó" ; Default ; > ;
+ < "¤j©ó" ; Default ; > ;
+ < "¤p©ó©Îµ¥©ó" ; Default ; > ;
+ < "¤j©ó©Îµ¥©ó" ; Default ; > ;
+ < "¤£µ¥©ó" ; Default ; > ;
+ < "¦b¤§¶¡" ; Default ; > ;
+ < "¤£¦b¤§¶¡" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "íÓÇæí" ; Default ; > ;
+ < "ÃÞá ãä" ; Default ; > ;
+ < "ÃßÈÑ ãä" ; Default ; > ;
+ < "ÃÕÛÑ ãä Ãæ íÓÇæí" ; Default ; > ;
+ < "ÃßÈÑ ãä Ãæ íÓÇæí" ; Default ; > ;
+ < "áÇ íÓÇæí" ; Default ; > ;
+ < "Èíä" ; Default ; > ;
+ < "áíÓÊ Èíä" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ºóïí" ; Default ; > ;
+ < "ìéêñüôåñïò áðü" ; Default ; > ;
+ < "ìåãáëýôåñïò áðü" ; Default ; > ;
+ < "ìéêñüôåñï Þ ßóï ìå" ; Default ; > ;
+ < "ìåãáëýôåñï Þ ßóï ìå" ; Default ; > ;
+ < "ÄéÜöïñï" ; Default ; > ;
+ < "ìåôáîý" ; Default ; > ;
+ < "ü÷é ìåôáîý" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "´ÙÀ½°ú °°À½" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ¹Ì¸¸ÀÓ" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ÃÊ°úÀÓ" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ÀÌÇÏÀÓ" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ÀÌ»óÀÓ" ; Default ; > ;
+ < "´ÙÀ½°ú °°Áö ¾ÊÀ½" ; Default ; > ;
+ < "´ÙÀ½ÀÇ »çÀÌÀÓ" ; Default ; > ;
+ < "¹Û¿¡" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "eþittir" ; Default ; > ;
+ < "küçüktür" ; Default ; > ;
+ < "büyüktür" ; Default ; > ;
+ < "küçük ya da eþittir" ; Default ; > ;
+ < "büyük ya da eþittir" ; Default ; > ;
+ < "eþit deðildir" ; Default ; > ;
+ < "þu aralýkta" ; Default ; > ;
+ < "þu aralýkta deðil" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ Edit EDT_COND2_1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 122 , 63 ) ;
+ Size = MAP_APPFONT ( 41 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_COND2_1
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 165 , 63 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Minimize";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_COND2_AND
+ {
+ Pos = MAP_APPFONT ( 182 , 65 ) ;
+ Size = MAP_APPFONT ( 16 , 10 ) ;
+ Text = "und" ;
+ Text [ ENGLISH ] = "and" ;
+ Text [ english_us ] = "and" ;
+ Text [ italian ] = "e" ;
+ Text [ spanish ] = "y" ;
+ Text [ french ] = "et" ;
+ Text [ dutch ] = "en" ;
+ Text [ swedish ] = "och" ;
+ Text [ danish ] = "og" ;
+ Text [ portuguese_brazilian ] = "und" ;
+ Text [ portuguese ] = "e" ;
+ Text[ chinese_simplified ] = "ºÍ";
+ Text[ russian ] = "è";
+ Text[ polish ] = "i";
+ Text[ japanese ] = "‚»‚µ‚Ä";
+ Text[ chinese_traditional ] = "©M";
+ Text[ arabic ] = "æ";
+ Text[ greek ] = "êáé";
+ Text[ korean ] = "¿Í";
+ Text[ turkish ] = "ve";
+ Text[ language_user1 ] = " ";
+ };
+ Edit EDT_COND2_2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 200 , 63 ) ;
+ Size = MAP_APPFONT ( 41 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_COND2_2
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 243 , 63 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Minimize";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_COND2_TEMPLATE
+ {
+ Pos = MAP_APPFONT ( 12 , 81 ) ;
+ Size = MAP_APPFONT ( 42 , 10 ) ;
+ Text = "Zellvorlage" ;
+ Text [ ENGLISH ] = "Cell template" ;
+ Text [ english_us ] = "Cell Style" ;
+ Text [ italian ] = "Modello di cella" ;
+ Text [ spanish ] = "Estilo de celda" ;
+ Text [ french ] = "Style de cellule" ;
+ Text [ dutch ] = "Celopmaak" ;
+ Text [ swedish ] = "Cellformatmall" ;
+ Text [ danish ] = "Celletypografi" ;
+ Text [ portuguese_brazilian ] = "Zellvorlage" ;
+ Text [ portuguese ] = "Estilo da célula" ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñÑùʽ";
+ Text[ russian ] = "Ñòèëü ÿ÷åéêè";
+ Text[ polish ] = "Styl komórki";
+ Text[ japanese ] = "¾Ù‚̽À²Ù";
+ Text[ chinese_traditional ] = "Àx¦s®æ¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÎáíÉ";
+ Text[ greek ] = "Óôõë êåëéïý";
+ Text[ korean ] = "¼¿ À¯Çü";
+ Text[ turkish ] = "Hücre biçimi";
+ Text[ language_user1 ] = "\"Vorlagen\" Styles are always capitalized no matter where they show up. EM15.5.00";
+ };
+ ListBox LB_COND2_TEMPLATE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 78 ) ;
+ Size = MAP_APPFONT ( 62 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ CheckBox CBX_COND3
+ {
+ Pos = MAP_APPFONT ( 6 , 96 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Bedingung 3" ;
+ Text [ ENGLISH ] = "Condition 3" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Condition 3" ;
+ Text [ italian ] = "Condizione 3" ;
+ Text [ spanish ] = "Condición 3" ;
+ Text [ french ] = "Condition 3" ;
+ Text [ dutch ] = "Voorwaarde 3" ;
+ Text [ swedish ] = "Villkor 3" ;
+ Text [ danish ] = "Betingelse 3" ;
+ Text [ portuguese_brazilian ] = "Bedingung 3" ;
+ Text [ portuguese ] = "Condição 3" ;
+ Text[ chinese_simplified ] = "Ìõ¼þ 3";
+ Text[ russian ] = "Óñëîâèå 3";
+ Text[ polish ] = "Warunek 3";
+ Text[ japanese ] = "ðŒ3";
+ Text[ chinese_traditional ] = "±ø¥ó 3";
+ Text[ arabic ] = "ÇáÔÑØ 3";
+ Text[ greek ] = "ÓõíèÞêç 3";
+ Text[ korean ] = "Á¶°Ç 3";
+ Text[ turkish ] = "Koþul 3";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_COND3_1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 108 ) ;
+ Size = MAP_APPFONT ( 48 , 40 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "Zellwert ist" ; Default ; > ;
+ < "Formel ist" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Zellwert ist" ; Default ; > ;
+ < "Formel ist" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "Valor da célula é" ; Default ; > ;
+ < "Fórmula é" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "Cell value is" ; Default ; > ;
+ < "Formula is" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "Zellwert ist" ; Default ; > ;
+ < "Formel ist" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "Cellvärdet är" ; Default ; > ;
+ < "Formeln är" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "Celleværdien er" ; Default ; > ;
+ < "Formlen er" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Il valore della cella è" ; Default ; > ;
+ < "La formula è" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "El valor de la celda es" ; Default ; > ;
+ < "La fórmula es" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "Valeur est" ; Default ; > ;
+ < "Formule est" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "Celwaarde is" ; Default ; > ;
+ < "Formule is" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "µ¥Ôª¸ñÊýÖµÊÇ" ; Default ; > ;
+ < "¹«Ê½ÊÇ" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Çíà÷åíèå ÿ÷åéêè" ; Default ; > ;
+ < "Ôîðìóëà" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Wart. kom. jest" ; Default ; > ;
+ < "Formu³a jest" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "¾Ù‚Ì’l‚ª" ; Default ; > ;
+ < "”Ž®‚ª" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "Àx¦s®æ¼Æ­È¬O" ; Default ; > ;
+ < "¤½¦¡¬O" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÞíãÉ ÇáÎáíÉ" ; Default ; > ;
+ < "ÇáÕíÛÉ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "Ç ôéìÞ ôïõ êåëéïý åßíáé" ; Default ; > ;
+ < "Ï ôýðïò åßíáé" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¼¿ °ªÀº" ; Default ; > ;
+ < "¼ö½ÄÀº" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Hücre deðeri" ; Default ; > ;
+ < "Formül" ; Default ; > ;
+ };
+ };
+ ListBox LB_COND3_2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 108 ) ;
+ Size = MAP_APPFONT ( 62 , 88 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "gleich" ; Default ; > ;
+ < "kleiner als" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 3 : größer als*/
+ < "größer als" ; Default ; > ;
+ < "kleiner oder gleich" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 5 : größer oder gleich*/
+ < "größer oder gleich" ; Default ; > ;
+ < "ungleich" ; Default ; > ;
+ < "zwischen" ; Default ; > ;
+ < "nicht zwischen" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "igual" ; Default ; > ;
+ < "menor" ; Default ; > ;
+ < "maior" ; Default ; > ;
+ < "menor ou igual a" ; Default ; > ;
+ < "maior ou igual a" ; Default ; > ;
+ < "desigual" ; Default ; > ;
+ < "entre" ; Default ; > ;
+ < "não entre" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "equal to" ; Default ; > ;
+ < "less than" ; Default ; > ;
+ < "greater than" ; Default ; > ;
+ < "less than or equal to" ; Default ; > ;
+ < "greater than or equal to" ; Default ; > ;
+ < "not equal to" ; Default ; > ;
+ < "between" ; Default ; > ;
+ < "not between" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "gleich" ; Default ; > ;
+ < "kleiner als" ; Default ; > ;
+ < "größer als" ; Default ; > ;
+ < "kleiner oder gleich" ; Default ; > ;
+ < "größer oder gleich" ; Default ; > ;
+ < "ungleich" ; Default ; > ;
+ < "zwischen" ; Default ; > ;
+ < "nicht zwischen" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "lika med" ; Default ; > ;
+ < "mindre än" ; Default ; > ;
+ < "större än" ; Default ; > ;
+ < "mindre än eller lika med" ; Default ; > ;
+ < "större än eller lika med" ; Default ; > ;
+ < "inte lika med" ; Default ; > ;
+ < "mellan" ; Default ; > ;
+ < "inte mellan" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "lig med" ; Default ; > ;
+ < "mindre end" ; Default ; > ;
+ < "større end" ; Default ; > ;
+ < "mindre end eller lig med" ; Default ; > ;
+ < "større end eller lig med" ; Default ; > ;
+ < "forskellig fra" ; Default ; > ;
+ < "mellem" ; Default ; > ;
+ < "ikke mellem" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "uguale" ; Default ; > ;
+ < "minore di" ; Default ; > ;
+ < "maggiore di" ; Default ; > ;
+ < "minore o uguale" ; Default ; > ;
+ < "maggiore o uguale" ; Default ; > ;
+ < "non uguale" ; Default ; > ;
+ < "tra" ; Default ; > ;
+ < "non tra" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "igual" ; Default ; > ;
+ < "menor que" ; Default ; > ;
+ < "mayor que" ; Default ; > ;
+ < "menor o igual" ; Default ; > ;
+ < "mayor o igual" ; Default ; > ;
+ < "distinta de" ; Default ; > ;
+ < "entre" ; Default ; > ;
+ < "no entre" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "égale à" ; Default ; > ;
+ < "inférieure à" ; Default ; > ;
+ < "supérieure à" ; Default ; > ;
+ < "inférieure ou égale à" ; Default ; > ;
+ < "supérieure ou égale à" ; Default ; > ;
+ < "différente de" ; Default ; > ;
+ < "comprise entre" ; Default ; > ;
+ < "non comprise entre" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "gelijk aan" ; Default ; > ;
+ < "kleiner dan" ; Default ; > ;
+ < "groter dan" ; Default ; > ;
+ < "kleiner dan of gelijk aan" ; Default ; > ;
+ < "groter dan of gelijk aan" ; Default ; > ;
+ < "niet gelijk aan" ; Default ; > ;
+ < "tussen" ; Default ; > ;
+ < "niet tussen" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "µÈÓÚ" ; Default ; > ;
+ < "СÓÚ" ; Default ; > ;
+ < "´óÓÚ" ; Default ; > ;
+ < "СÓÚ»òµÈÓÚ" ; Default ; > ;
+ < "´óÓÚ»òµÈÓÚ" ; Default ; > ;
+ < "²»µÈÓÚ" ; Default ; > ;
+ < "ÔÚÖ®¼ä" ; Default ; > ;
+ < "²»ÔÚÖ®¼ä" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "ðàâíî" ; Default ; > ;
+ < "ìåíüøå ÷åì" ; Default ; > ;
+ < "áîëüøå ÷åì" ; Default ; > ;
+ < "ìåíüøå èëè ðàâíî" ; Default ; > ;
+ < "áîëüøå èëè ðàâíî" ; Default ; > ;
+ < "íåðàâíî" ; Default ; > ;
+ < "ìåæäó" ; Default ; > ;
+ < "âíå" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "równa" ; Default ; > ;
+ < "mniejsza ni¿" ; Default ; > ;
+ < "wiêksza ni¿" ; Default ; > ;
+ < "mniejsza ni¿ lub równa" ; Default ; > ;
+ < "wiêksza ni¿ lub równa" ; Default ; > ;
+ < "nierówna" ; Default ; > ;
+ < "miêdzy" ; Default ; > ;
+ < "nie miêdzy" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "ŽŸ‚Ì’l‚É“™‚µ‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚æ‚謂³‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚æ‚è‘å‚«‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’lˆÈ‰º" ; Default ; > ;
+ < "ŽŸ‚Ì’lˆÈã" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚É“™‚µ‚­‚È‚¢" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚ÌŠÔ" ; Default ; > ;
+ < "ŽŸ‚Ì’l‚ÌŠÔ‚Å‚È‚¢" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "µ¥©ó" ; Default ; > ;
+ < "¤p©ó" ; Default ; > ;
+ < "¤j©ó" ; Default ; > ;
+ < "¤p©ó©Îµ¥©ó" ; Default ; > ;
+ < "¤j©ó©Îµ¥©ó" ; Default ; > ;
+ < "¤£µ¥©ó" ; Default ; > ;
+ < "¦b¤§¶¡" ; Default ; > ;
+ < "¤£¦b¤§¶¡" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "íÓÇæí" ; Default ; > ;
+ < "ÃÞá ãä" ; Default ; > ;
+ < "ÃßÈÑ ãä" ; Default ; > ;
+ < "ÃÕÛÑ ãä Ãæ íÓÇæí" ; Default ; > ;
+ < "ÃßÈÑ ãä Ãæ íÓÇæí" ; Default ; > ;
+ < "áÇ íÓÇæí" ; Default ; > ;
+ < "Èíä" ; Default ; > ;
+ < "áíÓÊ Èíä" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ºóïí" ; Default ; > ;
+ < "ìéêñüôåñïò áðü" ; Default ; > ;
+ < "ìåãáëýôåñïò áðü" ; Default ; > ;
+ < "ìéêñüôåñï Þ ßóï ìå" ; Default ; > ;
+ < "ìåãáëýôåñï Þ ßóï ìå" ; Default ; > ;
+ < "ÄéÜöïñï" ; Default ; > ;
+ < "ìåôáîý" ; Default ; > ;
+ < "ü÷é ìåôáîý" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "´ÙÀ½°ú °°À½" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ¹Ì¸¸ÀÓ" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ÃÊ°úÀÓ" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ÀÌÇÏÀÓ" ; Default ; > ;
+ < "´ÙÀ½ÀÇ ÀÌ»óÀÓ" ; Default ; > ;
+ < "´ÙÀ½°ú °°Áö ¾ÊÀ½" ; Default ; > ;
+ < "´ÙÀ½ÀÇ »çÀÌÀÓ" ; Default ; > ;
+ < "¹Û¿¡" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "eþittir" ; Default ; > ;
+ < "küçüktür" ; Default ; > ;
+ < "büyüktür" ; Default ; > ;
+ < "küçük ya da eþittir" ; Default ; > ;
+ < "büyük ya da eþittir" ; Default ; > ;
+ < "eþit deðildir" ; Default ; > ;
+ < "þu aralýkta" ; Default ; > ;
+ < "þu aralýkta deðil" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ Edit EDT_COND3_1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 122 , 108 ) ;
+ Size = MAP_APPFONT ( 41 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_COND3_1
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 165 , 108 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Minimize";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_COND3_AND
+ {
+ Pos = MAP_APPFONT ( 182 , 110 ) ;
+ Size = MAP_APPFONT ( 16 , 10 ) ;
+ Text = "und" ;
+ Text [ ENGLISH ] = "and" ;
+ Text [ english_us ] = "and" ;
+ Text [ italian ] = "e" ;
+ Text [ spanish ] = "y" ;
+ Text [ french ] = "et" ;
+ Text [ dutch ] = "en" ;
+ Text [ swedish ] = "och" ;
+ Text [ danish ] = "og" ;
+ Text [ portuguese_brazilian ] = "und" ;
+ Text [ portuguese ] = "e" ;
+ Text[ chinese_simplified ] = "ºÍ";
+ Text[ russian ] = "è";
+ Text[ polish ] = "i";
+ Text[ japanese ] = "‚»‚µ‚Ä";
+ Text[ chinese_traditional ] = "©M";
+ Text[ arabic ] = "æ";
+ Text[ greek ] = "êáé";
+ Text[ korean ] = "¿Í";
+ Text[ turkish ] = "ve";
+ Text[ language_user1 ] = " ";
+ };
+ Edit EDT_COND3_2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 200 , 108 ) ;
+ Size = MAP_APPFONT ( 41 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_COND3_2
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 243 , 108 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Minimize";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_COND3_TEMPLATE
+ {
+ Pos = MAP_APPFONT ( 12 , 126 ) ;
+ Size = MAP_APPFONT ( 42 , 10 ) ;
+ Text = "Zellvorlage" ;
+ Text [ ENGLISH ] = "Cell template" ;
+ Text [ english_us ] = "Cell Style" ;
+ Text [ italian ] = "Modello di cella" ;
+ Text [ spanish ] = "Estilo de celda" ;
+ Text [ french ] = "Style de cellule" ;
+ Text [ dutch ] = "Celopmaak" ;
+ Text [ swedish ] = "Cellformatmall" ;
+ Text [ danish ] = "Celletypografi" ;
+ Text [ portuguese_brazilian ] = "Zellvorlage" ;
+ Text [ portuguese ] = "Estilo da célula" ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñÑùʽ";
+ Text[ russian ] = "Ñòèëü ÿ÷åéêè";
+ Text[ polish ] = "Styl komórki";
+ Text[ japanese ] = "¾Ù‚̽À²Ù";
+ Text[ chinese_traditional ] = "Àx¦s®æ¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÎáíÉ";
+ Text[ greek ] = "Óôõë êåëéïý";
+ Text[ korean ] = "¼¿ À¯Çü";
+ Text[ turkish ] = "Hücre biçimi";
+ Text[ language_user1 ] = "\"Vorlagen\" Styles are always capitalized no matter where they show up. EM15.5.00";
+ };
+ ListBox LB_COND3_TEMPLATE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 123 ) ;
+ Size = MAP_APPFONT ( 62 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 151 , 143 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 205 , 143 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 89 , 143 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Text [ english_us ] = "Conditional Formatting" ;
+ Text [ italian ] = "Formattazione condizionata" ;
+ Text [ spanish ] = "Formato condicionado" ;
+ Text [ french ] = "Formatage conditionnel" ;
+ Text [ dutch ] = "Conditionele opmaak" ;
+ Text [ swedish ] = "Villkorlig formatering" ;
+ Text [ danish ] = "Betinget formatering" ;
+ Text [ portuguese_brazilian ] = "Bedingte Formatierung" ;
+ Text [ portuguese ] = "Fomatação condicionada" ;
+ Text[ chinese_simplified ] = "ÓÐÌõ¼þµÄ¸ñʽ";
+ Text[ russian ] = "Óñëîâíîå ôîðìàòèðîâàíèå";
+ Text[ polish ] = "Formatowanie warunkowe";
+ Text[ japanese ] = "ðŒ•t‚«‘Ž®Ý’è";
+ Text[ chinese_traditional ] = "¦³±ø¥óªº®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞ ãÔÑæØ";
+ Text[ greek ] = "Ìïñöïðïßçóç õðü üñïõò";
+ Text[ korean ] = "Á¶°Ç ¼­½Ä";
+ Text[ turkish ] = "Koþullu formatlama";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/src/crnrdlg.src b/sc/source/ui/src/crnrdlg.src
new file mode 100644
index 000000000000..a41e00ad8fb1
--- /dev/null
+++ b/sc/source/ui/src/crnrdlg.src
@@ -0,0 +1,353 @@
+/*************************************************************************
+ *
+ * $RCSfile: crnrdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "crnrdlg.hrc"
+ModelessDialog RID_SCDLG_COLROWNAMERANGES
+{
+ OutputSize = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 256 , 181 ) ;
+ Text = "Beschriftungsbereich festlegen" ;
+ Text [ ENGLISH ] = "Define label area" ;
+ HelpId = HID_COLROWNAMERANGES ;
+ Moveable = TRUE ;
+ // Closeable = TRUE; // Dieser Dialog hat einen Cancel-Button !
+ GroupBox GB_ASSIGN
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 188 , 175 ) ;
+ Text = "Bereich" ;
+ Text [ ENGLISH ] = "Refers to" ;
+ Text [ norwegian ] = "Refers to" ;
+ Text [ italian ] = "Area" ;
+ Text [ portuguese_brazilian ] = "Remente a" ;
+ Text [ portuguese ] = "Área" ;
+ Text [ finnish ] = "Viittaa:" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Plage" ;
+ Text [ swedish ] = "Område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Área" ;
+ Text [ english_us ] = "Range" ;
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ russian ] = "Îáëàñòü";
+ Text[ polish ] = "Zakres";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "ÇáäØÇÞ";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¿µ¿ª";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_RANGE
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 176 , 85 ) ;
+ TabStop = TRUE ;
+ VScroll = TRUE ;
+ };
+ Edit ED_AREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 107 ) ;
+ Size = MAP_APPFONT ( 106 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_AREA
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 120 , 107 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС/·Å´ó";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ RadioButton BTN_COLHEAD
+ {
+ Pos = MAP_APPFONT ( 12 , 120 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "enthält ~Spaltenköpfe" ;
+ Text [ ENGLISH ] = "contains column headers" ;
+ Text [ norwegian ] = "contains column headers" ;
+ Text [ italian ] = "Contiene intestazioni colonne" ;
+ Text [ portuguese_brazilian ] = "inclui cabeçalhos da coluna" ;
+ Text [ portuguese ] = "Contém ~cabeçalhos das colunas" ;
+ Text [ finnish ] = "sisältää sarakeotsikot" ;
+ Text [ danish ] = "indeholder kolonneoverskrifter" ;
+ Text [ french ] = "contient des en-têtes de ~colonnes" ;
+ Text [ swedish ] = "innehåller ~kolumnhuvuden" ;
+ Text [ dutch ] = "~bevat kolomkoppen" ;
+ Text [ spanish ] = "Contiene títulos de ~columnas" ;
+ Text [ english_us ] = "Contains ~column headers" ;
+ Text[ chinese_simplified ] = "°üº¬ÁбêÌâ(~C)";
+ Text[ russian ] = "Ñîäåðæèò çàãîëîâêè ñòîëáöîâ";
+ Text[ polish ] = "zawiera nag³ówki kolumn";
+ Text[ japanese ] = "—ñ‚Ì€–Ú—“‚ðŠÜ‚Þ(~C)";
+ Text[ chinese_traditional ] = "¥]§tÄæ¼ÐÃD(~C)";
+ Text[ arabic ] = "íÊÖãä ÑÄæÓ ÃÚãÏÉ";
+ Text[ greek ] = "ðåñéÝ÷åé êåöáëßäåò óôçëþí";
+ Text[ korean ] = "¿­ ¸Ó¸®±Û Æ÷ÇÔ(~C)";
+ Text[ turkish ] = "Sütun baþlýklarý ~içeriyor";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_ROWHEAD
+ {
+ Pos = MAP_APPFONT ( 12 , 133 ) ;
+ Size = MAP_APPFONT ( 100 , 12 ) ;
+ TabStop = TRUE ;
+ Text = "enthält ~Zeilenköpfe" ;
+ Text [ ENGLISH ] = "contains row headers" ;
+ Text [ english_us ] = "Contains ~row headers" ;
+ Text [ dutch ] = "~bevat rijkoppen" ;
+ Text [ swedish ] = "innehåller ~radhuvuden" ;
+ Text [ danish ] = "indeholder rækkeoverskrifter" ;
+ Text [ italian ] = "Include intestazioni righe" ;
+ Text [ spanish ] = "contiene títulos de ~filas" ;
+ Text [ french ] = "contient des en-têtes de ~lignes" ;
+ Text [ portuguese ] = "Contém ~cabeçalhos das linhas" ;
+ Text [ portuguese_brazilian ] = "enthält ~Zeilenköpfe" ;
+ Text[ chinese_simplified ] = "°üº¬ÐбêÌâ(~R)";
+ Text[ russian ] = "Ñîäåðæèò íàçâàíèÿ ñòðîê";
+ Text[ polish ] = "zawiera nag³ówki wierszy";
+ Text[ japanese ] = "s‚Ì€–Ú—“‚ðŠÜ‚Þ(~R)";
+ Text[ chinese_traditional ] = "¥]§tÄæ¼ÐÃD(~R)";
+ Text[ arabic ] = "íÊÖãä ÑÄæÓ ÕÝæÝ";
+ Text[ greek ] = "ðåñéÝ÷åé êåöáëßäåò ãñáììþí";
+ Text[ korean ] = "Çà ¸Ó¸®±Û Æ÷ÇÔ(~R)";
+ Text[ turkish ] = "Satýr baþlýklarý i~çeriyor";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DATA_LABEL
+ {
+ Pos = MAP_APPFONT ( 12 , 146 ) ;
+ Size = MAP_APPFONT ( 106 , 12 ) ;
+ Text = "für Datenbereich" ;
+ Text [ ENGLISH ] = "for data range" ;
+ Text [ english_us ] = "For data range" ;
+ Text [ portuguese_brazilian ] = "für Datenbereich" ;
+ Text [ swedish ] = "för dataområde" ;
+ Text [ danish ] = "for dataområde" ;
+ Text [ italian ] = "Per l'area dati" ;
+ Text [ spanish ] = "para el área de datos" ;
+ Text [ french ] = "Pour la plage de données" ;
+ Text [ dutch ] = "voor gegevensbereik" ;
+ Text [ portuguese ] = "para a área dos dados" ;
+ Text[ chinese_simplified ] = "ÓÃÓÚÊý¾ÝÇøÓò";
+ Text[ russian ] = "Äëÿ äèàïàçîíà äàííûõ";
+ Text[ polish ] = "dla zakresu danych";
+ Text[ japanese ] = "ÃÞ°À”͈͗p";
+ Text[ chinese_traditional ] = "¥Î©ó¸ê®Æ°Ï°ì";
+ Text[ arabic ] = "áäØÇÞ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ãéá ðåñéï÷Þ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¹üÀ§·Î";
+ Text[ turkish ] = "Veri aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_DATA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 159 ) ;
+ Size = MAP_APPFONT ( 106 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_DATA
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 120 , 159 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 200 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 200 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton BTN_ADD
+ {
+ Pos = MAP_APPFONT ( 138 , 107 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "Hinzu~fügen" ;
+ Text [ ENGLISH ] = "~Add" ;
+ Text [ norwegian ] = "Leg~g til" ;
+ Text [ italian ] = "Aggiungi" ;
+ Text [ portuguese_brazilian ] = "~Acrescentar" ;
+ Text [ portuguese ] = "~Adicionar" ;
+ Text [ finnish ] = "~Lisää" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "~Ajouter" ;
+ Text [ swedish ] = "~Lägg till" ;
+ Text [ dutch ] = "Toe~voegen" ;
+ Text [ spanish ] = "~Añadir" ;
+ Text [ english_us ] = "~Add" ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ Text[ chinese_simplified ] = "ÐÂÔö(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "D~odaj";
+ Text[ japanese ] = "’ljÁ(~A)";
+ Text[ chinese_traditional ] = "·s¼W(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ";
+ Text[ greek ] = "ÐñïóèÞêç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BTN_REMOVE
+ {
+ Pos = MAP_APPFONT ( 138 , 124 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Löschen" ;
+ Text [ ENGLISH ] = "~Remove" ;
+ Text [ norwegian ] = "~Fjern" ;
+ Text [ italian ] = "Elimina..." ;
+ Text [ portuguese_brazilian ] = "~Remover" ;
+ Text [ portuguese ] = "E~liminar" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "~Wissen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Delete" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ɾ³ý(~D)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~D)";
+ Text[ chinese_traditional ] = "§R°£(~D)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦(~D)";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 200 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Text [ english_us ] = "Define Label Range" ;
+ Text [ swedish ] = "Definiera etikettområde" ;
+ Text [ danish ] = "Definer etiketområde" ;
+ Text [ italian ] = "Definisci area di dicitura" ;
+ Text [ spanish ] = "Definir área de etiqueta" ;
+ Text [ french ] = "Définir la plage de l'étiquette" ;
+ Text [ dutch ] = "Opschriftenbereik definiëren" ;
+ Text [ portuguese_brazilian ] = "Beschriftungsbereich festlegen" ;
+ Text [ portuguese ] = "Definir área do rótulo" ;
+ Text[ chinese_simplified ] = "¶¨ÒåÊý¾Ý±êÖ¾ÇøÓò";
+ Text[ russian ] = "Óñòàíîâèòü äèàïàçîí íàçâàíèÿ";
+ Text[ polish ] = "Zdefiniuj zakres etykiet";
+ Text[ japanese ] = "×ÍÞ͈ٔ͂ðŽw’è";
+ Text[ chinese_traditional ] = "©w¸q¼ÐÃD°Ï°ì";
+ Text[ arabic ] = "ÊÚÑíÝ äØÇÞ ÇáÚäæäÉ";
+ Text[ greek ] = "Ïñéóìüò ðåñéï÷Þò åðéãñáöÞò";
+ Text[ korean ] = "¶óº§ ¹üÀ§ Á¤ÀÇ";
+ Text[ turkish ] = "Baþlýk aralýðýný belirle";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/src/dbnamdlg.src b/sc/source/ui/src/dbnamdlg.src
new file mode 100644
index 000000000000..7dc06f5baacf
--- /dev/null
+++ b/sc/source/ui/src/dbnamdlg.src
@@ -0,0 +1,555 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbnamdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "dbnamdlg.hrc"
+ModelessDialog RID_SCDLG_DBNAMES
+{
+ OutputSize = TRUE ;
+ HelpId = SID_DEFINE_DBNAME ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 222 , 142 ) ;
+ Text = "Datenbankbereich festlegen" ;
+ Text [ ENGLISH ] = "Define Database" ;
+ Text [ norwegian ] = "Define Database" ;
+ Text [ italian ] = "Definisci area database" ;
+ Text [ portuguese_brazilian ] = "Definir Base de Dados" ;
+ Text [ portuguese ] = "Definir base de dados" ;
+ Text [ finnish ] = "Määritä tietokanta" ;
+ Text [ danish ] = "Definer database" ;
+ Text [ french ] = "Définir plage de base de données" ;
+ Text [ swedish ] = "Definiera databasområde" ;
+ Text [ dutch ] = "Database-bereik definiëren" ;
+ Text [ spanish ] = "Definir área de base de datos" ;
+ Text [ english_us ] = "Define Database Range" ;
+ Moveable = TRUE ;
+ // Closeable = TRUE; // Dieser Dialog hat einen Cancel-Button !
+ GroupBox GB_NAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 154 , 98 ) ;
+ Text = "Name" ;
+ Text [ ENGLISH ] = "Name" ;
+ Text [ norwegian ] = "Navn" ;
+ Text [ italian ] = "Nome" ;
+ Text [ portuguese_brazilian ] = "Nomear" ;
+ Text [ portuguese ] = "Nome" ;
+ Text [ finnish ] = "Nimi" ;
+ Text [ danish ] = "Navn" ;
+ Text [ french ] = "Nom" ;
+ Text [ swedish ] = "Namn" ;
+ Text [ dutch ] = "Naam" ;
+ Text [ spanish ] = "Nombre" ;
+ Text [ english_us ] = "Name" ;
+ Text[ chinese_simplified ] = "Ãû³Æ";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O";
+ Text[ chinese_traditional ] = "¦WºÙ";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§";
+ Text[ turkish ] = "Ad";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox ED_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 142 , 80 ) ;
+ TabStop = TRUE ;
+ VScroll = TRUE ;
+ };
+ GroupBox GB_ASSIGN
+ {
+ Pos = MAP_APPFONT ( 6 , 108 ) ;
+ Size = MAP_APPFONT ( 154 , 28 ) ;
+ Text = "Bereich" ;
+ Text [ ENGLISH ] = "Refers to" ;
+ Text [ norwegian ] = "Refers to" ;
+ Text [ italian ] = "Area" ;
+ Text [ portuguese_brazilian ] = "Remente a" ;
+ Text [ portuguese ] = "Área" ;
+ Text [ finnish ] = "Viittaa:" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Plage" ;
+ Text [ swedish ] = "Område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Área" ;
+ Text [ english_us ] = "Range" ;
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ russian ] = "Îáëàñòü";
+ Text[ polish ] = "Obszar";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "ÇáäØÇÞ";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¿µ¿ª";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_DBAREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 120 ) ;
+ Size = MAP_APPFONT ( 128 , 12 ) ;
+ TabStop = TRUE ;
+ // Text = "<Tabellenbereich>" ;
+ };
+ ImageButton RB_DBAREA
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 142 , 120 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ GroupBox GB_OPTIONS
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 142 ) ;
+ Size = MAP_APPFONT ( 154 , 92 ) ;
+ Text = "Optionen" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ english_us ] = "Options" ;
+ Text [ portuguese_brazilian ] = "Optionen" ;
+ Text [ swedish ] = "Alternativ" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ french ] = "Options" ;
+ Text [ dutch ] = "Opties" ;
+ Text [ portuguese ] = "Opções" ;
+ Text[ chinese_simplified ] = "Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Opcje";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¿ï¶µ";
+ Text[ arabic ] = "ÇáÎíÇÑÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_HEADER
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 154 ) ;
+ Size = MAP_APPFONT ( 142 , 12 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? enthält ~Spaltenköpfe : enthõlt ~Spaltenk÷pfe */
+ Text = "enthält ~Spaltenköpfe" ;
+ Text [ ENGLISH ] = "includes columnheaders" ;
+ Text [ norwegian ] = "includes columnheaders" ;
+ Text [ italian ] = "Contiene intestazioni colonne" ;
+ Text [ portuguese_brazilian ] = "inclui cabeçalhos da coluna" ;
+ Text [ portuguese ] = "Incluir ~cabeçalhos de colunas" ;
+ Text [ finnish ] = "sisältää sarakeotsikot" ;
+ Text [ danish ] = "Indeholder kolonneoverskrifter" ;
+ Text [ french ] = "~contient des en-têtes de colonnes" ;
+ Text [ swedish ] = "Innehåller ~kolumnhuvuden" ;
+ Text [ dutch ] = "bevat ~kolomkoppen" ;
+ Text [ spanish ] = "Contiene títulos de ~columnas" ;
+ Text [ english_us ] = "Contains column ~headers" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "°üº¬ÁбêÌâ(~H)";
+ Text[ russian ] = "Ñîäåðæèò çàãîëîâêè ñòîëáöîâ";
+ Text[ polish ] = "zawiera nag³ówki kolumn";
+ Text[ japanese ] = "—ñ‚Ì€–Ú—“‚ðŠÜ‚Þ(~H)";
+ Text[ chinese_traditional ] = "¥]§tÄæ¼ÐÃD(~H)";
+ Text[ arabic ] = "íÊÖãä ÑÄæÓ ÃÚãÏÉ";
+ Text[ greek ] = "ðåñéÝ÷åé êåöáëßäåò óôçëþí";
+ Text[ korean ] = "¿­ ¸Ó¸®±Û Æ÷ÇÔ(~H)";
+ Text[ turkish ] = "Sütun baþlýklarý ~içeriyor";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_SIZE
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 167 ) ;
+ Size = MAP_APPFONT ( 142 , 12 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen ~einfügen/löschen : Zellen ~einf³gen/l÷schen */
+ Text = "Zellen ~einfügen/löschen" ;
+ Text [ ENGLISH ] = "Insert or delete cells" ;
+ TabStop = TRUE ;
+ Text [ portuguese ] = "~Inserir/eliminar células" ;
+ Text [ english_us ] = "Insert or delete ~cells" ;
+ Text [ portuguese_brazilian ] = "Zellen ~einfügen/löschen" ;
+ Text [ swedish ] = "Infoga/radera ~celler" ;
+ Text [ danish ] = "Indsæt/slet celler" ;
+ Text [ italian ] = "Inserisci/elimina celle" ;
+ Text [ spanish ] = "~Insertar o eliminar celdas" ;
+ Text [ french ] = "~Insérer/supprimer des cellules" ;
+ Text [ dutch ] = "~Cellen invoegen/wissen" ;
+ Text[ chinese_simplified ] = "²åÈë/ɾ³ýµ¥Ôª¸ñ(~C)";
+ Text[ russian ] = "Âñòàâèòü/óäàëèòü ÿ÷åéêè";
+ Text[ polish ] = "Wstaw/usuñ komórki";
+ Text[ japanese ] = "s‚Ì‘}“ü/íœ(~C)";
+ Text[ chinese_traditional ] = "´¡¤J/§R°£Àx¦s®æ(~C)";
+ Text[ arabic ] = "ÅÏÑÇÌ/ÍÐÝ ÎáÇíÇ";
+ Text[ greek ] = "ÐñïóèÞêç/ÄéáãñáöÞ êåëéþí";
+ Text[ korean ] = "¼¿ »èÁ¦ ¶Ç´Â »ðÀÔ(~C)";
+ Text[ turkish ] = "Hücre ~ekle/sil";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_FORMAT
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 180 ) ;
+ Size = MAP_APPFONT ( 142 , 12 ) ;
+ Text = "Formatierung ~beibehalten" ;
+ Text [ ENGLISH ] = "Keep formatting" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Keep ~formatting" ;
+ Text [ portuguese_brazilian ] = "Formatierung ~beibehalten" ;
+ Text [ swedish ] = "Behåll f~ormatering" ;
+ Text [ danish ] = "Bevar formatering" ;
+ Text [ italian ] = "Mantieni formattazione" ;
+ Text [ spanish ] = "Co~nservar formato" ;
+ Text [ french ] = "~Conserver le formatage" ;
+ Text [ dutch ] = "Opmaak ~behouden" ;
+ Text [ portuguese ] = "~Manter formatação" ;
+ Text[ chinese_simplified ] = "±£Áô¸ñʽ(~F)";
+ Text[ russian ] = "Õðàíèòü ôîðìàòèðîâàíèå";
+ Text[ polish ] = "Zachowaj formatowanie";
+ Text[ japanese ] = "‘Ž®‚ð•ÛŽ‚·‚é(~F)";
+ Text[ chinese_traditional ] = "«O¯d®æ¦¡(~F)";
+ Text[ arabic ] = "ÇáÅÈÞÇÁ Úáì ÇáÊäÓíÞ";
+ Text[ greek ] = "ÄéáôÞñçóç ìïñöïðïßçóçò";
+ Text[ korean ] = "¼­½Ä À¯Áö(~F)";
+ Text[ turkish ] = "Formatlamayý ~koru";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_STRIPDATA
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 193 ) ;
+ Size = MAP_APPFONT ( 142 , 12 ) ;
+ Text = "~Importierte Daten nicht speichern" ;
+ Text [ ENGLISH ] = "Remove external Data before saving" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "Don't save ~imported data" ;
+ Text [ portuguese_brazilian ] = "~Importierte Daten nicht speichern" ;
+ Text [ swedish ] = "~Spara inte importerade data" ;
+ Text [ danish ] = "Ikke gemme importerede data" ;
+ Text [ italian ] = "Non salvare i dati ~importati" ;
+ Text [ spanish ] = "N~o guardar datos importados" ;
+ Text [ french ] = "~Ne pas enregistrer les données importées" ;
+ Text [ dutch ] = "~Geïmporteerde gegevens niet opslaan" ;
+ Text [ portuguese ] = "~Não guardar dados importados" ;
+ Text[ chinese_simplified ] = "²»´æÅÌÊäÈëµÄÊý¾Ý(~I)";
+ Text[ russian ] = "Âíåøíèå äàííûå íå ñîõðàíÿòü";
+ Text[ polish ] = "Nie zapisuj importowanych danych";
+ Text[ japanese ] = "²ÝÎß°Ä‚µ‚½ÃÞ°À‚ð•Û‘¶‚µ‚È‚¢(~I)";
+ Text[ chinese_traditional ] = "¤£Àx¦s¿é¤Jªº¼ÆÕu(~I)";
+ Text[ arabic ] = "ÚÏã ÍÝÙ ÇáÈíÇäÇÊ ÇáãÓÊæÑÏÉ";
+ Text[ greek ] = "Íá ìçí áðïèçêåõôïýí å~éóáãüìåíá äåäïìÝíá";
+ Text[ korean ] = "°¡Á®¿Â µ¥ÀÌÅÍ ÀúÀåÇÏÁö ¾Ê±â(~I)";
+ Text[ turkish ] = "~Ýçe aktarýlan verileri kaydetme";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_SOURCE
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 208 ) ;
+ Size = MAP_APPFONT ( 142 , 10 ) ;
+ Text = "Quelle:" ;
+ Text [ ENGLISH ] = "Source:" ;
+ Text [ english_us ] = "Source:" ;
+ Text [ portuguese_brazilian ] = "Quelle:" ;
+ Text [ swedish ] = "Källa:" ;
+ Text [ danish ] = "Kilde:" ;
+ Text [ italian ] = "Sorgente:" ;
+ Text [ spanish ] = "Fuente:" ;
+ Text [ french ] = "Source :" ;
+ Text [ dutch ] = "Bron:" ;
+ Text [ portuguese ] = "Fonte:" ;
+ Text[ chinese_simplified ] = "À´Ô´£º";
+ Text[ russian ] = "Èñòî÷íèê:";
+ Text[ polish ] = "ród³o:";
+ Text[ japanese ] = "¿°½:";
+ Text[ chinese_traditional ] = "¨Ó·½¡G";
+ Text[ arabic ] = "ÇáãÕÏÑ:";
+ Text[ greek ] = "ÐñïÝëåõóç:";
+ Text[ korean ] = "¼Ò½º:";
+ Text[ turkish ] = "Kaynak:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_OPERATIONS
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 219 ) ;
+ Size = MAP_APPFONT ( 142 , 10 ) ;
+ Text = "Operationen:" ;
+ Text [ ENGLISH ] = "Operations:" ;
+ Text [ english_us ] = "Operations:" ;
+ Text [ portuguese_brazilian ] = "Operationen:" ;
+ Text [ swedish ] = "Operationer:" ;
+ Text [ danish ] = "Operationer:" ;
+ Text [ italian ] = "Operazioni:" ;
+ Text [ spanish ] = "Operaciones:" ;
+ Text [ french ] = "Opérations :" ;
+ Text [ dutch ] = "Operaties:" ;
+ Text [ portuguese ] = "Operações:" ;
+ Text[ chinese_simplified ] = "²Ù×÷£º";
+ Text[ russian ] = "Îïåðàöèè:";
+ Text[ polish ] = "Operacje";
+ Text[ japanese ] = "‰‰ŽZ:";
+ Text[ chinese_traditional ] = "¾Þ§@¡G";
+ Text[ arabic ] = "ÇáÚãáíÇÊ:";
+ Text[ greek ] = "ÐñÜîåéò:";
+ Text[ korean ] = "ÀÛµ¿:";
+ Text[ turkish ] = "Ýþlemler:";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 166 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 166 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton BTN_ADD
+ {
+ Pos = MAP_APPFONT ( 166 , 71 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Hinzu~fügen : Hinzu~f³gen */
+ Text = "Hinzu~fügen" ;
+ Text [ ENGLISH ] = "~Add" ;
+ Text [ norwegian ] = "Leg~g til" ;
+ Text [ italian ] = "Aggiungi" ;
+ Text [ portuguese_brazilian ] = "~Acrescentar" ;
+ Text [ portuguese ] = "~Adicionar" ;
+ Text [ finnish ] = "~Lisää" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "~Ajouter" ;
+ Text [ swedish ] = "~Lägg till" ;
+ Text [ dutch ] = "Toe~voegen" ;
+ Text [ spanish ] = "~Añadir" ;
+ Text [ english_us ] = "~Add" ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ Text[ chinese_simplified ] = "ÐÂÔö(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "’ljÁ(~A)";
+ Text[ chinese_traditional ] = "·s¼W(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ";
+ Text[ greek ] = "ÐñïóèÞêç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BTN_REMOVE
+ {
+ Pos = MAP_APPFONT ( 166 , 87 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen : ~L÷schen */
+ Text = "~Löschen" ;
+ Text [ ENGLISH ] = "~Remove" ;
+ Text [ norwegian ] = "~Fjern" ;
+ Text [ italian ] = "~Elimina" ;
+ Text [ portuguese_brazilian ] = "~Remover" ;
+ Text [ portuguese ] = "~Eliminar" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "~Wissen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Delete" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ɾ³ý(~D)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~D)";
+ Text[ chinese_traditional ] = "§R°£(~D)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦(~D)";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 166 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MoreButton BTN_MORE
+ {
+ Pos = MAP_APPFONT ( 166 , 123 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ MapUnit = MAP_APPFONT ;
+ Delta = 96 ;
+ };
+ String STR_ADD
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Hinzu~fügen : Hinzu~f³gen */
+ Text = "Hinzu~fügen" ;
+ Text [ ENGLISH ] = "~Add" ;
+ Text [ norwegian ] = "Leg~g til" ;
+ Text [ italian ] = "Aggiungi" ;
+ Text [ portuguese_brazilian ] = "~Acrescentar" ;
+ Text [ portuguese ] = "~Adicionar" ;
+ Text [ finnish ] = "~Lisää" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "~Ajouter" ;
+ Text [ swedish ] = "~Lägg till" ;
+ Text [ dutch ] = "Toe~voegen" ;
+ Text [ spanish ] = "~Añadir" ;
+ Text [ english_us ] = "~Add" ;
+ Text[ chinese_simplified ] = "ÐÂÔö(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "’ljÁ(~A)";
+ Text[ chinese_traditional ] = "·s¼W(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ";
+ Text[ greek ] = "ÐñïóèÞêç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MODIFY
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ~Ändern : ~Žndern */
+ Text = "~Ändern" ;
+ Text [ ENGLISH ] = "~Modify" ;
+ Text [ norwegian ] = "~Modify" ;
+ Text [ italian ] = "~Modifica" ;
+ Text [ portuguese_brazilian ] = "~Modificar" ;
+ Text [ portuguese ] = "~Modificar" ;
+ Text [ finnish ] = "~Muokkaa" ;
+ Text [ danish ] = "Modificer" ;
+ Text [ french ] = "~Modifier" ;
+ Text [ swedish ] = "~Ändra" ;
+ Text [ dutch ] = "Wij~zigen" ;
+ Text [ spanish ] = "~Modificar" ;
+ Text [ english_us ] = "~Modify" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä(~M)";
+ Text[ russian ] = "Èçìåíèòü";
+ Text[ polish ] = "Modyfikuj";
+ Text[ japanese ] = "•ÏX(~M)";
+ Text[ chinese_traditional ] = "Åܧó(~M)";
+ Text[ arabic ] = "ÊÚÏíá";
+ Text[ greek ] = "Ôñïðïðïßçóç";
+ Text[ korean ] = "¼öÁ¤(~M)";
+ Text[ turkish ] = "~Deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DB_INVALID
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültiger Bereich : Ung³ltiger Bereich */
+ Text = "Ungültiger Bereich" ;
+ Text [ ENGLISH ] = "Invalid range" ;
+ Text [ portuguese ] = "Área não válida" ;
+ Text [ english_us ] = "Invalid range" ;
+ Text [ portuguese_brazilian ] = "Ungültiger Bereich" ;
+ Text [ swedish ] = "Ogiltigt område" ;
+ Text [ danish ] = "Ugyldigt område" ;
+ Text [ italian ] = "Area non valida" ;
+ Text [ spanish ] = "Área no válida" ;
+ Text [ french ] = "Plage incorrecte" ;
+ Text [ dutch ] = "Ongeldig bereik" ;
+ Text[ chinese_simplified ] = "ÎÞЧµÄÇøÓò";
+ Text[ russian ] = "Íåäåéñòâèòåëüíûé äèàïàçîí";
+ Text[ polish ] = "Zakres niewa¿ny";
+ Text[ japanese ] = "”͈͂ɖâ‘肪‚ ‚è‚Ü‚·";
+ Text[ chinese_traditional ] = "µL®Äªº°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÛíÑ ÕÇáÍ";
+ Text[ greek ] = "Ìç Ýãêõñç ðåñéï÷Þ";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº ¿µ¿ª";
+ Text[ turkish ] = "Geçersiz aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "¶¨ÒåÊý¾ÝÇøÓò";
+ Text[ russian ] = "Óñòàíîâèòü îáëàñòü áàçû äàííûõ";
+ Text[ polish ] = "Zdefiniuj obszar bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚͈̔͂ðŽw’è";
+ Text[ chinese_traditional ] = "©w¸q¸ê®Æ°Ï°ì";
+ Text[ arabic ] = "ÊÚÑíÝ äØÇÞ ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "Êáèïñéóìüò ðåñéï÷Þò âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ¿µ¿ª Á¤ÀÇ";
+ Text[ turkish ] = "Veritabaný aralýðýný belirle";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/src/filter.src b/sc/source/ui/src/filter.src
new file mode 100644
index 000000000000..92afadd10b27
--- /dev/null
+++ b/sc/source/ui/src/filter.src
@@ -0,0 +1,3484 @@
+/*************************************************************************
+ *
+ * $RCSfile: filter.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "filter.hrc"
+ModelessDialog RID_SCDLG_FILTER
+{
+ OutputSize = TRUE ;
+ HelpId = SID_FILTER ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 298 , 83 ) ;
+ Text = "Standardfilter" ;
+ Text [ ENGLISH ] = "Standard Filter" ;
+ Text [ norwegian ] = "Standard Filter" ;
+ Text [ italian ] = "Filtro standard" ;
+ Text [ portuguese_brazilian ] = "Filtro Padrão" ;
+ Text [ portuguese ] = "Filtro padrão" ;
+ Text [ finnish ] = "Vakiosuodin" ;
+ Text [ danish ] = "Standardfilter" ;
+ Text [ french ] = "Filtre standard" ;
+ Text [ swedish ] = "Standardfilter" ;
+ Text [ dutch ] = "Standaardfilter" ;
+ Text [ spanish ] = "Filtro estándar" ;
+ Text [ english_us ] = "Standard Filter" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ FixedText FT_OP
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Verknüpfung : Verkn³pfung */
+ Text = "Verknüpfung" ;
+ Text [ ENGLISH ] = "Operator" ;
+ Text [ norwegian ] = "Operator" ;
+ Text [ italian ] = "Operatore" ;
+ Text [ portuguese_brazilian ] = "Operador" ;
+ Text [ portuguese ] = "Operador" ;
+ Text [ finnish ] = "Operaattori" ;
+ Text [ danish ] = "Operator" ;
+ Text [ french ] = "Lien" ;
+ Text [ swedish ] = "Operator" ;
+ Text [ dutch ] = "Koppeling" ;
+ Text [ spanish ] = "Vínculo" ;
+ Text [ english_us ] = "Operator" ;
+ Text[ chinese_simplified ] = "Á´½Ó";
+ Text[ russian ] = "Îïåðàòîð";
+ Text[ polish ] = "Operator";
+ Text[ japanese ] = "µÍßÚ°À";
+ Text[ chinese_traditional ] = "±¶®|";
+ Text[ arabic ] = "ÇÑÊÈÇØ";
+ Text[ greek ] = "ÔåëåóôÞò";
+ Text[ korean ] = "¿¬»êÀÚ";
+ Text[ turkish ] = "Baðlantý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_FIELD
+ {
+ Pos = MAP_APPFONT ( 60 , 15 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Feldname" ;
+ Text [ ENGLISH ] = "Fieldname" ;
+ Text [ norwegian ] = "Fieldname" ;
+ Text [ italian ] = "Nome di campo" ;
+ Text [ portuguese_brazilian ] = "Nome de campo" ;
+ Text [ portuguese ] = "Nome do campo" ;
+ Text [ finnish ] = "Kentän nimi" ;
+ Text [ danish ] = "Feltnavn" ;
+ Text [ french ] = "Nom de champ" ;
+ Text [ swedish ] = "Fältnamn" ;
+ Text [ dutch ] = "Veldnaam" ;
+ Text [ spanish ] = "Nombre del campo" ;
+ Text [ english_us ] = "Field name" ;
+ Center = TRUE ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÃû³Æ";
+ Text[ russian ] = "Èìÿ ïîëÿ";
+ Text[ polish ] = "Nazwa pola";
+ Text[ japanese ] = "̨°ÙÄÞ–¼";
+ Text[ chinese_traditional ] = "Äæ¦ì¦WºÙ";
+ Text[ arabic ] = "ÇÓã ÇáÍÞá";
+ Text[ greek ] = "¼íïìá ðåäßïõ";
+ Text[ korean ] = "Çʵå À̸§";
+ Text[ turkish ] = "Alan adý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_COND
+ {
+ Pos = MAP_APPFONT ( 123 , 15 ) ;
+ Size = MAP_APPFONT ( 35 , 10 ) ;
+ Text = "Bedingung" ;
+ Text [ ENGLISH ] = "Condition" ;
+ Text [ norwegian ] = "Vilkår" ;
+ Text [ italian ] = "Condizione" ;
+ Text [ portuguese_brazilian ] = "condição" ;
+ Text [ portuguese ] = "Condição" ;
+ Text [ finnish ] = "Ehto" ;
+ Text [ danish ] = "Betingelse" ;
+ Text [ french ] = "Condition" ;
+ Text [ swedish ] = "Villkor" ;
+ Text [ dutch ] = "Voorwaarde" ;
+ Text [ spanish ] = "Condición" ;
+ Text [ english_us ] = "Condition" ;
+ Center = TRUE ;
+ Text[ chinese_simplified ] = "Ìõ¼þ";
+ Text[ russian ] = "Óñëîâèå";
+ Text[ polish ] = "Warunek";
+ Text[ japanese ] = "ðŒ";
+ Text[ chinese_traditional ] = "±ø¥ó";
+ Text[ arabic ] = "ÇáÔÑØ";
+ Text[ greek ] = "ÓõíèÞêç";
+ Text[ korean ] = "Á¶°Ç";
+ Text[ turkish ] = "Koþul";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_VAL
+ {
+ Pos = MAP_APPFONT ( 171 , 15 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Wert" ;
+ Text [ ENGLISH ] = "Value" ;
+ Text [ norwegian ] = "Verdi" ;
+ Text [ italian ] = "Valore" ;
+ Text [ portuguese_brazilian ] = "Valor" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Arvo" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "Värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "Value" ;
+ Center = TRUE ;
+ Text[ chinese_simplified ] = "Öµ";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "¼Æ­È";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_OP1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 43 ) ;
+ Size = MAP_APPFONT ( 40 , 46 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "E" ; Default ; > ;
+ < "O" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "UND" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "E" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "OG" ; Default ; > ;
+ < "ELLER" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "ET" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "OCH" ; Default ; > ;
+ < "ELLER" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "EN" ; Default ; > ;
+ < "OF" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Y" ; Default ; > ;
+ < "O" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "AND" ; Default ; > ;
+ < "OR" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ºÍ" ; Default ; > ;
+ < "»ò" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "È" ; Default ; > ;
+ < "ÈËÈ" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "ORAZ" ; Default ; > ;
+ < "LUB" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚©‚Â" ; Default ; > ;
+ < "‚Ü‚½‚Í" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "©M" ; Default ; > ;
+ < "©Î" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "æ" ; Default ; > ;
+ < "Ãæ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÊÁÉ" ; Default ; > ;
+ < "¹" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¿Í" ; Default ; > ;
+ < "¶Ç´Â" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "VE" ; Default ; > ;
+ < "VEYA" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ListBox LB_OP2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 58 ) ;
+ Size = MAP_APPFONT ( 40 , 46 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "E" ; Default ; > ;
+ < "O" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "UND" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "E" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "OG" ; Default ; > ;
+ < "ELLER" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "ET" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "OCH" ; Default ; > ;
+ < "ELLER" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "EN" ; Default ; > ;
+ < "OF" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Y" ; Default ; > ;
+ < "O" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "AND" ; Default ; > ;
+ < "OR" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ºÍ" ; Default ; > ;
+ < "»ò" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "È" ; Default ; > ;
+ < "ÈËÈ" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "ORAZ" ; Default ; > ;
+ < "LUB" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚©‚Â" ; Default ; > ;
+ < "‚Ü‚½‚Í" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "©M" ; Default ; > ;
+ < "©Î" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "æ" ; Default ; > ;
+ < "Ãæ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÊÁÉ" ; Default ; > ;
+ < "¹" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¿Í" ; Default ; > ;
+ < "¶Ç´Â" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "VE" ; Default ; > ;
+ < "VEYA" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ListBox LB_FIELD1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 28 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox LB_FIELD2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 43 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox LB_FIELD3
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 58 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox LB_COND1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 28 ) ;
+ Size = MAP_APPFONT ( 45 , 105 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 7 : größte*/
+ < "größte" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 9 : größte %*/
+ < "größte %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "größte" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ < "größte %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "o maior" ; Default ; > ;
+ < "o menor" ; Default ; > ;
+ < "o maior %" ; Default ; > ;
+ < "o menor %" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "Largest" ; Default ; > ;
+ < "Smallest" ; Default ; > ;
+ < "Largest %" ; Default ; > ;
+ < "Smallest %" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "größte" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ < "größte %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "största" ; Default ; > ;
+ < "minsta" ; Default ; > ;
+ < "största %" ; Default ; > ;
+ < "minsta %" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "største" ; Default ; > ;
+ < "mindste" ; Default ; > ;
+ < "største %" ; Default ; > ;
+ < "mindste %" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "il più grande" ; Default ; > ;
+ < "il più piccolo" ; Default ; > ;
+ < "il più grande %" ; Default ; > ;
+ < "più piccolo %" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "el mayor" ; Default ; > ;
+ < "el menor" ; Default ; > ;
+ < "el mayor %" ; Default ; > ;
+ < "el menor %" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "le plus grand" ; Default ; > ;
+ < "le plus petit" ; Default ; > ;
+ < "le plus grand %" ; Default ; > ;
+ < "le plus petit %" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "grootste" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ < "grootste %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "×î´ó" ; Default ; > ;
+ < "×îС" ; Default ; > ;
+ < "×î´ó %" ; Default ; > ;
+ < "×îС %" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "íàèáîëüøåå" ; Default ; > ;
+ < "íàèìåíüøåå" ; Default ; > ;
+ < "íàèáîëüøåå %" ; Default ; > ;
+ < "íàèìåíüøåå %" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "najwiêkszy" ; Default ; > ;
+ < "Najmniejszy" ; Default ; > ;
+ < "najwiêkszy %" ; Default ; > ;
+ < "Najmniejszy %" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "Å‘å" ; Default ; > ;
+ < "Ŭ" ; Default ; > ;
+ < "Å‘å‚Ì%" ; Default ; > ;
+ < "Ŭ‚Ì%" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "³Ì¤j" ; Default ; > ;
+ < "³Ì¤p" ; Default ; > ;
+ < "³Ì¤j %" ; Default ; > ;
+ < "³Ì¤p %" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "=" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < "=>" ; Default ; > ;
+ < "=<" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "ÇáÃßÈÑ" ; Default ; > ;
+ < "ÇáÃÕÛÑ" ; Default ; > ;
+ < "ÇáÃßÈÑ %" ; Default ; > ;
+ < "ÇáÃÕÛÑ %" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "ìÝãéóôï" ; Default ; > ;
+ < "åëÜ÷éóôï" ; Default ; > ;
+ < "ìÝãéóôï %" ; Default ; > ;
+ < "åëÜ÷éóôï %" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "ÃÖ´ë" ; Default ; > ;
+ < "ÃÖ¼Ò" ; Default ; > ;
+ < "ÃÖ´ë %" ; Default ; > ;
+ < "ÃÖ¼Ò %" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "En büyük" ; Default ; > ;
+ < "En küçük" ; Default ; > ;
+ < "En büyük %" ; Default ; > ;
+ < "En küçük %" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ListBox LB_COND2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 43 ) ;
+ Size = MAP_APPFONT ( 45 , 105 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 7 : größte*/
+ < "größte" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 9 : größte %*/
+ < "größte %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "größte" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ < "größte %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "o maior" ; Default ; > ;
+ < "o menor" ; Default ; > ;
+ < "o maior %" ; Default ; > ;
+ < "o menor %" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "Largest" ; Default ; > ;
+ < "Smallest" ; Default ; > ;
+ < "Largest %" ; Default ; > ;
+ < "Smallest %" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "größte" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ < "größte %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "största" ; Default ; > ;
+ < "minsta" ; Default ; > ;
+ < "största %" ; Default ; > ;
+ < "minsta %" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "største" ; Default ; > ;
+ < "mindste" ; Default ; > ;
+ < "største %" ; Default ; > ;
+ < "mindste %" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "il più grande" ; Default ; > ;
+ < "il più piccolo" ; Default ; > ;
+ < "il più grande %" ; Default ; > ;
+ < "il più piccolo %" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "el mayor" ; Default ; > ;
+ < "el menor" ; Default ; > ;
+ < "el mayor %" ; Default ; > ;
+ < "el menor %" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "le plus grand" ; Default ; > ;
+ < "le plus petit" ; Default ; > ;
+ < "le plus grand %" ; Default ; > ;
+ < "le plus petit %" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "grootste" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ < "grootste %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "×î´ó" ; Default ; > ;
+ < "×îС" ; Default ; > ;
+ < "×î´ó %" ; Default ; > ;
+ < "×îС %" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "íàèáîëüøåå" ; Default ; > ;
+ < "íàèìåíüøåå" ; Default ; > ;
+ < "íàèáîëüøåå %" ; Default ; > ;
+ < "íàèìåíüøåå %" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "najwiêkszy" ; Default ; > ;
+ < "najmniejszy" ; Default ; > ;
+ < "najwiêkszy %" ; Default ; > ;
+ < "najmniejszy %" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "Å‘å" ; Default ; > ;
+ < "Ŭ" ; Default ; > ;
+ < "Å‘å‚Ì%" ; Default ; > ;
+ < "Ŭ‚Ì%" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "³Ì¤j" ; Default ; > ;
+ < "³Ì¤p" ; Default ; > ;
+ < "³Ì¤j %" ; Default ; > ;
+ < "³Ì¤p %" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "=" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < "=>" ; Default ; > ;
+ < "=<" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "ÇáÃßÈÑ" ; Default ; > ;
+ < "ÇáÃÕÛÑ" ; Default ; > ;
+ < "ÇáÃßÈÑ %" ; Default ; > ;
+ < "ÇáÃÕÛÑ %" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "ìÝãéóôï" ; Default ; > ;
+ < "åëÜ÷éóôï" ; Default ; > ;
+ < "ìÝãéóôï %" ; Default ; > ;
+ < "åëÜ÷éóôï %" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "ÃÖ´ë" ; Default ; > ;
+ < "ÃÖ¼Ò" ; Default ; > ;
+ < "ÃÖ´ë %" ; Default ; > ;
+ < "ÃÖ¼Ò %" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "En büyük" ; Default ; > ;
+ < "En küçük" ; Default ; > ;
+ < "En büyük %" ; Default ; > ;
+ < "En küçük %" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ListBox LB_COND3
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 58 ) ;
+ Size = MAP_APPFONT ( 45 , 105 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 7 : größte*/
+ < "größte" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 9 : größte %*/
+ < "größte %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "größte" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ < "größte %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "o maior" ; Default ; > ;
+ < "o menor" ; Default ; > ;
+ < "o maior %" ; Default ; > ;
+ < "o menor %" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "Largest" ; Default ; > ;
+ < "Smallest" ; Default ; > ;
+ < "Largest %" ; Default ; > ;
+ < "Smallest %" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "größte" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ < "größte %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "största" ; Default ; > ;
+ < "minsta" ; Default ; > ;
+ < "största %" ; Default ; > ;
+ < "minsta %" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "største" ; Default ; > ;
+ < "mindste" ; Default ; > ;
+ < "største %" ; Default ; > ;
+ < "mindste %" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "il più grande" ; Default ; > ;
+ < "il più piccolo" ; Default ; > ;
+ < "il più grande %" ; Default ; > ;
+ < "il più piccolo %" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "el mayor" ; Default ; > ;
+ < "el menor" ; Default ; > ;
+ < "el mayor %" ; Default ; > ;
+ < "el menor %" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "le plus grand" ; Default ; > ;
+ < "le plus petit" ; Default ; > ;
+ < "le plus grand %" ; Default ; > ;
+ < "le plus petit %" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "grootste" ; Default ; > ;
+ < "kleinste" ; Default ; > ;
+ < "grootste %" ; Default ; > ;
+ < "kleinste %" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "×î´ó" ; Default ; > ;
+ < "×îС" ; Default ; > ;
+ < "×î´ó %" ; Default ; > ;
+ < "×îС %" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "íàèáîëüøåå" ; Default ; > ;
+ < "íàèìåíüøåå" ; Default ; > ;
+ < "íàèáîëüøåå %" ; Default ; > ;
+ < "íàèìåíüøåå %" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "najwiêkszy" ; Default ; > ;
+ < "najmniejszy" ; Default ; > ;
+ < "najwiêkszy %" ; Default ; > ;
+ < "najmniejszy %" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "Å‘å" ; Default ; > ;
+ < "Ŭ" ; Default ; > ;
+ < "Å‘å‚Ì%" ; Default ; > ;
+ < "Ŭ‚Ì%" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "³Ì¤j" ; Default ; > ;
+ < "³Ì¤p" ; Default ; > ;
+ < "³Ì¤j %" ; Default ; > ;
+ < "³Ì¤p %" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "=" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < "=>" ; Default ; > ;
+ < "=<" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "ÇáÃßÈÑ" ; Default ; > ;
+ < "ÇáÃÕÛÑ" ; Default ; > ;
+ < "ÇáÃßÈÑ %" ; Default ; > ;
+ < "ÇáÃÕÛÑ %" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "ìÝãéóôï" ; Default ; > ;
+ < "åëÜ÷éóôï" ; Default ; > ;
+ < "ìÝãéóôï %" ; Default ; > ;
+ < "åëÜ÷éóôï %" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "ÃÖ´ë" ; Default ; > ;
+ < "ÃÖ¼Ò" ; Default ; > ;
+ < "ÃÖ´ë %" ; Default ; > ;
+ < "ÃÖ¼Ò %" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ < "En büyük" ; Default ; > ;
+ < "En küçük" ; Default ; > ;
+ < "En büyük %" ; Default ; > ;
+ < "En küçük %" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ComboBox ED_VAL1
+ {
+ Pos = MAP_APPFONT ( 171 , 28 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ComboBox ED_VAL2
+ {
+ Pos = MAP_APPFONT ( 171 , 43 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ComboBox ED_VAL3
+ {
+ Pos = MAP_APPFONT ( 171 , 58 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ GroupBox GB_CRITERIA
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 231 , 74 ) ;
+ Text = "Kriterien" ;
+ Text [ ENGLISH ] = "Criteria" ;
+ Text [ norwegian ] = "Criteria" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Critérios" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Ehdot" ;
+ Text [ danish ] = "Kriterier" ;
+ Text [ french ] = "Critères" ;
+ Text [ swedish ] = "Kriterier" ;
+ Text [ dutch ] = "Criteria" ;
+ Text [ spanish ] = "Criterios" ;
+ Text [ english_us ] = "Sort criteria" ;
+ Text[ chinese_simplified ] = "Ìõ¼þ";
+ Text[ russian ] = "Êðèòåðèè";
+ Text[ polish ] = "Kryteria";
+ Text[ japanese ] = "ðŒ";
+ Text[ chinese_traditional ] = "±ø¥ó";
+ Text[ arabic ] = "ÇáãÚÇííÑ";
+ Text[ greek ] = "ÊñéôÞñéá";
+ Text[ korean ] = "±âÁØ Á¤¿­";
+ Text[ turkish ] = "Ölçütler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_CASE
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 94 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Groß-/Kleinschreibung : ~Gro˜-/Kleinschreibung */
+ Text = "~Groß-/Kleinschreibung" ;
+ Text [ ENGLISH ] = "~Case sensitive" ;
+ Text [ norwegian ] = "~Case sensitive" ;
+ Text [ italian ] = "~Maiuscole/minuscole" ;
+ Text [ portuguese_brazilian ] = "~Sensível a maiúsculas/minúsculas" ;
+ Text [ portuguese ] = "~Maiúsculas/minúsculas" ;
+ Text [ finnish ] = "~Kirjainkoko vaikuttaa" ;
+ Text [ danish ] = "Store og små bogstaver" ;
+ Text [ french ] = "~Respecter la casse" ;
+ Text [ swedish ] = "~Skiftlägeskänslig" ;
+ Text [ dutch ] = "~Hoofd-/kleine letters belangrijk" ;
+ Text [ spanish ] = "M~ayúsculas/minúsculas" ;
+ Text [ english_us ] = "Case ~sensitive" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "´óСд(~S)";
+ Text[ russian ] = "Ó÷èòûâàòü ðåãèñòð";
+ Text[ polish ] = "Ma³e i du¿e litery";
+ Text[ japanese ] = "‘啶Žš/¬•¶Žš‚ð‹æ•Ê(~S)";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¤j¤p¼g(~S)";
+ Text[ arabic ] = "ÇáßÊÇÈÉ ÈÃÍÑÝ ßÈíÑÉ Ãæ ÕÛíÑÉ";
+ Text[ greek ] = "ÐåæÜ-Êåöáëáßá";
+ Text[ korean ] = "´ë/¼Ò¹®ÀÚ ±¸ºÐ(~S)";
+ Text[ turkish ] = "~Büyük/Küçük harf duyarlý";
+ };
+ CheckBox BTN_REGEXP
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 130 , 94 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Regulärer Ausdruck : ~Regulõrer Ausdruck */
+ Text = "~Regulärer Ausdruck" ;
+ Text [ ENGLISH ] = "~Regular expression" ;
+ Text [ norwegian ] = "~Regular expression" ;
+ Text [ italian ] = "Espressione ~regolare" ;
+ Text [ portuguese_brazilian ] = "~Expressão regular" ;
+ Text [ portuguese ] = "~Expressão regular" ;
+ Text [ finnish ] = "~Säännönmukainen lauseke" ;
+ Text [ danish ] = "Regulært udtryk" ;
+ Text [ french ] = "Caractère ~générique" ;
+ Text [ swedish ] = "~Reguljärt uttryck" ;
+ Text [ dutch ] = "~Gangbare uitdrukking" ;
+ Text [ spanish ] = "~Expresión corriente" ;
+ Text [ english_us ] = "Regular ~expression" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "³£¹æ±í´ï(~E)";
+ Text[ russian ] = "Ðåãóëÿðíîå âûðàæåíèå";
+ Text[ polish ] = "Wyra~¿enie regularne";
+ Text[ japanese ] = "ܲÙÄÞ¶°ÄÞ•¶Žš(~E)";
+ Text[ chinese_traditional ] = "±`³Wªí¹F(~E)";
+ Text[ arabic ] = "ÊÚÈíÑ ÇÚÊíÇÏí";
+ Text[ greek ] = "ÊáíïíéêÞ ðá~ñÜóôáóç";
+ Text[ korean ] = "ÀϹÝÀû Ç¥Çö(~E)";
+ Text[ turkish ] = "~Genel arama karakteri";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_HEADER
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 107 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Bereich enthält ~Spaltenköpfe : Bereich enthõlt ~Spaltenk÷pfe */
+ Text = "Bereich enthält ~Spaltenköpfe" ;
+ Text [ ENGLISH ] = "Area ~contains column headers" ;
+ Text [ norwegian ] = "Area ~contains column headers" ;
+ Text [ italian ] = "L'area ~contiene intestazioni colonna" ;
+ Text [ portuguese_brazilian ] = "A área ~contém cabeçalhos de colunas" ;
+ Text [ portuguese ] = "A área ~contém cabeçalhos de colunas" ;
+ Text [ finnish ] = "Alue sisältää sarake~otsikot" ;
+ Text [ danish ] = "Område indholder kolonneoverskrifter" ;
+ Text [ french ] = "La plage contient des en-têtes de ~colonnes" ;
+ Text [ swedish ] = "Område ~innehåller kolumnhuvuden" ;
+ Text [ dutch ] = "Bereik bevat ~kolomkoppen" ;
+ Text [ spanish ] = "Area contiene títulos de ~columnas" ;
+ Text [ english_us ] = "Range contains ~column headers" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÇøÓò°üº¬ÁбêÌâ(~C)";
+ Text[ russian ] = "Íàçâàíèÿ ñòîëáöîâ â îáëàñòè";
+ Text[ polish ] = "Obszar zawiera nag³ówki kolumn";
+ Text[ japanese ] = "”͈͂ɗñ‚Ì€–Ú—“‚ðŠÜ‚Þ(~C)";
+ Text[ chinese_traditional ] = "°Ï°ì¥]§tÄæ¼ÐÃD(~C)";
+ Text[ arabic ] = "ÇáãäØÞÉ ÊÊÖãä ÑÄæÓ ÃÚãÏÉ";
+ Text[ greek ] = "Ðåñéï÷Þ ðåñéÝ÷åé êåöáëßäåò óôçëþí";
+ Text[ korean ] = "¿­ ¸Ó¸®±Û Æ÷ÇԵǴ ¿µ¿ª(~C)";
+ Text[ turkish ] = "Aralýk, ~sütun baþlýklarý içeriyor";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_UNIQUE
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 130 , 107 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "Keine ~Duplikate" ;
+ Text [ ENGLISH ] = "~Unique" ;
+ Text [ norwegian ] = "~Unique" ;
+ Text [ italian ] = "~Univoco" ;
+ Text [ portuguese_brazilian ] = "~Único" ;
+ Text [ portuguese ] = "~Único" ;
+ Text [ finnish ] = "~Yksikäsitteinen" ;
+ Text [ danish ] = "Kun unikke poster" ;
+ Text [ french ] = "~Sans doublons" ;
+ Text [ swedish ] = "~Unika" ;
+ Text [ dutch ] = "~Alleen originelen" ;
+ Text [ spanish ] = "~Sin duplicados" ;
+ Text [ english_us ] = "~No duplication" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "²»Éú³É¸´¼þ(~N)";
+ Text[ russian ] = "Áåç ïîâòîðåíèé";
+ Text[ polish ] = "Bez duplikatów";
+ Text[ japanese ] = "d•¡‚È‚µ(~N)";
+ Text[ chinese_traditional ] = "¤£¥Í¦¨´_¥ó(~N)";
+ Text[ arabic ] = "ÈÏæä äõÓÎ ØÈÞ ÇáÃÕá";
+ Text[ greek ] = "¼÷é äéðëÜ óôïé÷åßá";
+ Text[ korean ] = "Áߺ¹ Çã¿ë ¾ÈµÊ(~N)";
+ Text[ turkish ] = "Ayný sonuçlarý ~ayýkla";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_COPY_RESULT
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 120 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ Text = "Filterergebnis ~ausgeben nach" ;
+ Text [ ENGLISH ] = "Write ~result to" ;
+ Text [ norwegian ] = "Write ~result to" ;
+ Text [ italian ] = "Scrivere il ~risultato del filtro in" ;
+ Text [ portuguese_brazilian ] = "Gravar ~resultado em" ;
+ Text [ portuguese ] = "Gravar ~resultado em" ;
+ Text [ finnish ] = "~Tulosten kohde:" ;
+ Text [ danish ] = "Filterresultat-output til" ;
+ Text [ french ] = "Écrire le ~résultat dans" ;
+ Text [ swedish ] = "Skriv ~resultat till" ;
+ Text [ dutch ] = "~Resultaat weergeven na" ;
+ Text [ spanish ] = "Copia~r resultado en..." ;
+ Text [ english_us ] = "Copy ~results to..." ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "½«É¸Ñ¡½á¹û¸´ÖƵ½(~R)...";
+ Text[ russian ] = "Ðåçóëüòàò ôèëüòðà â";
+ Text[ polish ] = "Kopiuj rezultaty filtrowania do";
+ Text[ japanese ] = "̨ÙÀŒ‹‰Ê‚Ì“\\‚è•t‚¯æ(~R)...";
+ Text[ chinese_traditional ] = "±N¿z¿ïµ²ªG½Æ»s¨ì(~R)...";
+ Text[ arabic ] = "äÓÎ äÊíÌÉ ÇáÊÕÝíÉ Åáì";
+ Text[ greek ] = "ÁíôéãñáöÞ áðïôåëåóìÜôùí óôï";
+ Text[ korean ] = "¿¡ °á°ú¸¦ º¹»ç(~R)...";
+ Text[ turkish ] = "Sonuçlarýn görüntüleneceði ~yer";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_DEST_PERS
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 130 , 120 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Persistent" ;
+ Text [ ENGLISH ] = "~Persistent" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Keep filter criteria" ;
+ Text [ portuguese_brazilian ] = "~Persistent" ;
+ Text [ swedish ] = "~Behålla filterkriterier" ;
+ Text [ danish ] = "Persistent" ;
+ Text [ italian ] = "Mantieni criteri" ;
+ Text [ spanish ] = "Ma~ntener criterios" ;
+ Text [ french ] = "~Conserver les critères de filtre" ;
+ Text [ dutch ] = "~Persistent" ;
+ Text [ portuguese ] = "~Manter critérios" ;
+ Text[ chinese_simplified ] = "±£ÁôɸѡÌõ¼þ(~K)";
+ Text[ russian ] = "Ñîõðàíèòü óñëîâèÿ ôèëüòðà";
+ Text[ polish ] = "Zachowaj kryteria";
+ Text[ japanese ] = "̨ÙÀŠî€‚Ì•ÛŽ(~K)";
+ Text[ chinese_traditional ] = "«O¯d¿z¿ï±ø¥ó(~K)";
+ Text[ arabic ] = "ÇÓÊãÑÇÑ ãÚÇííÑ ÇáÝáÊÑ";
+ Text[ greek ] = "ÄéáôÞñçóç ~êñéôçñßùí ößëôñïõ";
+ Text[ korean ] = "ÇÊÅÍ ±âÁØ À¯Áö(~K)";
+ Text[ turkish ] = "~Filtre ölçütlerini koru";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_COPY_AREA
+ {
+ Border = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 23 , 134 ) ;
+ Size = MAP_APPFONT ( 90 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ Edit ED_COPY_AREA
+ {
+ Border = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 117 , 134 ) ;
+ Size = MAP_APPFONT ( 98 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_COPY_AREA
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 217 , 134 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ GroupBox GB_OPTIONS
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 83 ) ;
+ Size = MAP_APPFONT ( 231 , 70 ) ;
+ Text = "Optionen" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Opções" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ french ] = "Options" ;
+ Text [ swedish ] = "Alternativ" ;
+ Text [ dutch ] = "Opties" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ english_us ] = "Options" ;
+ Text[ chinese_simplified ] = "Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Opcje";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¿ï¶µ";
+ Text[ arabic ] = "ÇáÎíÇÑÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DBAREA
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 58 , 159 ) ;
+ Size = MAP_APPFONT ( 159 , 10 ) ;
+ Text = "dummy" ;
+ Text [ ENGLISH ] = "dummy" ;
+ Text [ norwegian ] = "dummy" ;
+ Text [ italian ] = "fittizio" ;
+ Text [ portuguese_brazilian ] = "falso" ;
+ Text [ portuguese ] = "Simulador" ;
+ Text [ finnish ] = "tyhjä" ;
+ Text [ danish ] = "dummy" ;
+ Text [ french ] = "factice" ;
+ Text [ swedish ] = "dummy" ;
+ Text [ dutch ] = "dummy" ;
+ Text [ spanish ] = "Comodín" ;
+ Text [ english_us ] = "dummy" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ñù±¾";
+ Text[ russian ] = "ôèêòèâíûé";
+ Text[ polish ] = "Zaœlepka";
+ Text[ japanese ] = "ÀÞа";
+ Text[ chinese_traditional ] = "¼Ë¥»";
+ Text[ arabic ] = "äãæÐÌ ØÈÇÚí";
+ Text[ greek ] = "Äïêéìáóôéêü";
+ Text[ korean ] = "´õ¹Ì";
+ Text[ turkish ] = "taklit";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DBAREA_LABEL
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 159 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Datenbereich:" ;
+ Text [ ENGLISH ] = "Data area:" ;
+ Text [ norwegian ] = "Data area:" ;
+ Text [ italian ] = "Area dati:" ;
+ Text [ portuguese_brazilian ] = "Área de dados:" ;
+ Text [ portuguese ] = "Área de dados:" ;
+ Text [ finnish ] = "Tietoalue:" ;
+ Text [ danish ] = "Dataområde:" ;
+ Text [ french ] = "Plage de données :" ;
+ Text [ swedish ] = "Dataområde:" ;
+ Text [ dutch ] = "Gegevensbereik:" ;
+ Text [ spanish ] = "Área de datos:" ;
+ Text [ english_us ] = "Data range:" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓò£º";
+ Text[ russian ] = "Îáëàñòü äàííûõ:";
+ Text[ polish ] = "Obszar danych:";
+ Text[ japanese ] = "ÃÞ°À”͈Í:";
+ Text[ chinese_traditional ] = "¸ê®Æ°Ï°ì¡G";
+ Text[ arabic ] = "äØÇÞ ÇáÈíÇäÇÊ:";
+ Text[ greek ] = "Ðåñéï÷Þ äåäïìÝíùí:";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¿µ¿ª:";
+ Text[ turkish ] = "Veri aralýðý:";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 242 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 242 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 242 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MoreButton BTN_MORE
+ {
+ Pos = MAP_APPFONT ( 242 , 63 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ MapUnit = MAP_APPFONT ;
+ Delta = 90 ;
+ };
+ Text[ chinese_simplified ] = "±ê׼ɸѡ";
+ Text[ russian ] = "Ñòàíäàðòíûé ôèëüòð";
+ Text[ polish ] = "Filtr standardowy";
+ Text[ japanese ] = "•W€Ì¨ÙÀ";
+ Text[ chinese_traditional ] = "¼Ð·Ç¿z¿ï";
+ Text[ arabic ] = "ÝáÊÑ ÞíÇÓí";
+ Text[ greek ] = "Ößëôñï ðñïåðéëïãÞò";
+ Text[ korean ] = "Ç¥ÁØ ÇÊÅÍ";
+ Text[ turkish ] = "Standart filtre";
+ Text[ language_user1 ] = " ";
+};
+ //============================================================================
+ModelessDialog RID_SCDLG_SPEC_FILTER
+{
+ OutputSize = TRUE ;
+ HelpId = SID_SPECIAL_FILTER ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 278 , 83 ) ;
+ Text = "Spezialfilter" ;
+ Text [ ENGLISH ] = "Special Filter" ;
+ Text [ norwegian ] = "Special Filter" ;
+ Text [ italian ] = "Filtro speciale" ;
+ Text [ portuguese_brazilian ] = "Filtro Especial" ;
+ Text [ portuguese ] = "Filtro especial" ;
+ Text [ finnish ] = "Erikoissuodin" ;
+ Text [ danish ] = "Specialfilter" ;
+ Text [ french ] = "Filtre spécial" ;
+ Text [ swedish ] = "Specialfilter" ;
+ Text [ dutch ] = "Speciaal filter" ;
+ Text [ spanish ] = "Filtro especial" ;
+ Text [ english_us ] = "Advanced Filter" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ FixedText FT_CRITERIA_AREA
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 105 , 10 ) ;
+ Text = "~Filterkriterien befinden sich in" ;
+ Text [ ENGLISH ] = "Read ~filter criteria from" ;
+ Text [ norwegian ] = "Read ~filter criteria from" ;
+ Text [ italian ] = "Leggi i criteri di ~filtro da" ;
+ Text [ portuguese_brazilian ] = "Lerd ~critérios de filtro de" ;
+ Text [ portuguese ] = "~Critérios de filtro encontram-se em" ;
+ Text [ finnish ] = "Suotimen ehtojen ~lähde" ;
+ Text [ danish ] = "Filterkriterier befinder sig i" ;
+ Text [ french ] = "Lire les ~critères de filtre dans" ;
+ Text [ swedish ] = "~Filterkriterier finns i" ;
+ Text [ dutch ] = "~Filtercriteria bevinden zich in" ;
+ Text [ spanish ] = "Leer criterios del ~filtro en" ;
+ Text [ english_us ] = "Read ~filter criteria from" ;
+ Text[ chinese_simplified ] = "ɸѡÌõ¼þÀ´×Ô(~F)";
+ Text[ russian ] = "Óñëîâèÿ ôèëüòðà íàõîäÿòñÿ â";
+ Text[ polish ] = "Kryteria filtrowania znajduj¹ siê w";
+ Text[ japanese ] = "̨ÙÀŠî€‚ÌêŠ(~F)";
+ Text[ chinese_traditional ] = "¿z¿ï±ø¥ó¨Ó¦Û(~F)";
+ Text[ arabic ] = "ãÚÇííÑ ÇáÊÕÝíÉ ÊæÌÏ Ýí";
+ Text[ greek ] = "Ôá êñéôÞñéá áíáæÞôçóçò âñßóêïíôáé óôï";
+ Text[ korean ] = "¿¡¼­ ÇÊÅÍ ±âÁØ Àбâ(~F)";
+ Text[ turkish ] = "~Filtre ölçütlerinin bulunduðu yer";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_CRITERIA_AREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 20 ) ;
+ Size = MAP_APPFONT ( 100 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ Edit ED_CRITERIA_AREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 113 , 20 ) ;
+ Size = MAP_APPFONT ( 90 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_CRITERIA_AREA
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 205 , 20 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ CheckBox BTN_CASE
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 51 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Groß-/Kleinschreibung : ~Gro˜-/Kleinschreibung */
+ Text = "~Groß-/Kleinschreibung" ;
+ Text [ ENGLISH ] = "~Case sensitive" ;
+ Text [ norwegian ] = "~Case sensitive" ;
+ Text [ italian ] = "~Maiuscole/minuscole" ;
+ Text [ portuguese_brazilian ] = "~Sensível a maiúsculas/minúsculas" ;
+ Text [ portuguese ] = "~Maiúsculas/minúsculas" ;
+ Text [ finnish ] = "~Kirjainkoko vaikuttaa" ;
+ Text [ danish ] = "Store og små bogstaver" ;
+ Text [ french ] = "~Respecter la casse" ;
+ Text [ swedish ] = "~Skiftlägeskänslig" ;
+ Text [ dutch ] = "~Hoofd-/kleine letters belangrijk" ;
+ Text [ spanish ] = "M~ayúsculas/minúsculas" ;
+ Text [ english_us ] = "~Case sensitive" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "´óСд(~C)";
+ Text[ russian ] = "Ó÷èòûâàòü ðåãèñòð";
+ Text[ polish ] = "Ma³e i du¿e litery";
+ Text[ japanese ] = "‘啶Žš/¬•¶Žš‚ð‹æ•Ê(~C)";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¤j¤p¼g(~C)";
+ Text[ arabic ] = "ÇáßÊÇÈÉ ÈÃÍÑÝ ßÈíÑÉ Ãæ ÕÛíÑÉ";
+ Text[ greek ] = "ÐåæÜ-Êåöáëáßá";
+ Text[ korean ] = "´ë/¼Ò¹®ÀÚ ±¸ºÐ(~C)";
+ Text[ turkish ] = "~Büyük/Küçük harf duyarlý";
+ };
+ CheckBox BTN_REGEXP
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 130 , 51 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Regulärer Ausdruck : ~Regulõrer Ausdruck */
+ Text = "~Regulärer Ausdruck" ;
+ Text [ ENGLISH ] = "~Regular expression" ;
+ Text [ norwegian ] = "~Regular expression" ;
+ Text [ italian ] = "Espressione ~regolare" ;
+ Text [ portuguese_brazilian ] = "~Expressão regular" ;
+ Text [ portuguese ] = "~Expressão regular" ;
+ Text [ finnish ] = "~Säännönmukainen lauseke" ;
+ Text [ danish ] = "Regulært udtryk" ;
+ Text [ french ] = "Caractère ~générique" ;
+ Text [ swedish ] = "~Reguljärt uttryck" ;
+ Text [ dutch ] = "~Gangbare uitdrukking" ;
+ Text [ spanish ] = "~Expresión corriente" ;
+ Text [ english_us ] = "Regular ~expressions" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "³£¹æ±í´ï(~E)";
+ Text[ russian ] = "Ðåãóëÿðíîå âûðàæåíèå";
+ Text[ polish ] = "Wyra~¿enie regularne";
+ Text[ japanese ] = "ܲÙÄÞ¶°ÄÞ•¶Žš(~E)";
+ Text[ chinese_traditional ] = "±`³Wªí¹F(~E)";
+ Text[ arabic ] = "ÊÚÈíÑ ÇÚÊíÇÏí";
+ Text[ greek ] = "ÊáíïíéêÞ ðá~ñÜóôáóç";
+ Text[ korean ] = "ÀϹÝÀû Ç¥Çö(~E)";
+ Text[ turkish ] = "~Genel arama karakteri";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_HEADER
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 64 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Bereich enthält ~Spaltenköpfe : Bereich enthõlt ~Spaltenk÷pfe */
+ Text = "Bereich enthält ~Spaltenköpfe" ;
+ Text [ ENGLISH ] = "Area ~contains column headers" ;
+ Text [ norwegian ] = "Area ~contains column headers" ;
+ Text [ italian ] = "L'area ~contiene intestazioni colonna" ;
+ Text [ portuguese_brazilian ] = "A área ~contém cabeçalhos de colunas" ;
+ Text [ portuguese ] = "Contém ~cabeçalhos para colunas" ;
+ Text [ finnish ] = "Alue sisältää sarake~otsikot" ;
+ Text [ danish ] = "Indeholder kolonneoverskrifter" ;
+ Text [ french ] = "La plage contient des en-têtes de ~colonnes" ;
+ Text [ swedish ] = "Område ~innehåller kolumnhuvuden" ;
+ Text [ dutch ] = "Bereik bevat ~kolomkoppen" ;
+ Text [ spanish ] = "Area contiene títulos de ~columnas" ;
+ Text [ english_us ] = "C~ontains column headers" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÇøÓò°üº¬ÁбêÌâ(~H)";
+ Text[ russian ] = "Çàãîëîâêè ñòîëáöîâ â îáëàñòè";
+ Text[ polish ] = "Obszar zawiera nag³ówki kolumn";
+ Text[ japanese ] = "”͈͂ɗñ‚Ì€–Ú—“‚ðŠÜ‚Þ(~H)";
+ Text[ chinese_traditional ] = "°Ï°ì¥]§tÄæ¼ÐÃD(~H)";
+ Text[ arabic ] = "ÇáãäØÞÉ ÊÊÖãä ÑÄæÓ ÃÚãÏÉ";
+ Text[ greek ] = "Ðåñéï÷Þ ðåñéÝ÷åé êåöáëßäåò óôçëþí";
+ Text[ korean ] = "¿­ ¸Ó¸®±Û Æ÷ÇÔ(~O)";
+ Text[ turkish ] = "Aralýk, ~sütun baþlýklarý içeriyor";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_UNIQUE
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 130 , 64 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "Keine ~Duplikate" ;
+ Text [ ENGLISH ] = "~Unique" ;
+ Text [ norwegian ] = "~Unique" ;
+ Text [ italian ] = "~Univoco" ;
+ Text [ portuguese_brazilian ] = "~Único" ;
+ Text [ portuguese ] = "~Único" ;
+ Text [ finnish ] = "~Yksikäsitteinen" ;
+ Text [ danish ] = "Kun unikke poster" ;
+ Text [ french ] = "~Sans doublons" ;
+ Text [ swedish ] = "~Unika" ;
+ Text [ dutch ] = "~Alleen originelen" ;
+ Text [ spanish ] = "~Sin duplicados" ;
+ Text [ english_us ] = "~No duplication" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "²»Éú³É¸´¼þ(~N)";
+ Text[ russian ] = "Áåç ïîâòîðåíèé";
+ Text[ polish ] = "Bez duplikatów";
+ Text[ japanese ] = "d•¡‚È‚µ(~N)";
+ Text[ chinese_traditional ] = "¤£¥Í¦¨´_¥ó(~N)";
+ Text[ arabic ] = "ÈÏæä äõÓÎ ØÈÞ ÇáÃÕá";
+ Text[ greek ] = "¼÷é äéðëÜ óôïé÷åßá";
+ Text[ korean ] = "Áߺ¹ Çã¿ë ¾ÈµÊ(~N)";
+ Text[ turkish ] = "Ayný sonuçlarý ~ayýkla";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_COPY_RESULT
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 78 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ Text = "Filterergebnis ~ausgeben nach" ;
+ Text [ ENGLISH ] = "Write ~result to" ;
+ Text [ norwegian ] = "Write ~result to" ;
+ Text [ italian ] = "Scrivere il ~risultato del filtro in" ;
+ Text [ portuguese_brazilian ] = "Gravar ~resultado em" ;
+ Text [ portuguese ] = "Copiar ~resultados para" ;
+ Text [ finnish ] = "~Tulosten kohde:" ;
+ Text [ danish ] = "Filterresultat-output til" ;
+ Text [ french ] = "Écrire le ~résultat dans" ;
+ Text [ swedish ] = "Skriv ~resultat till" ;
+ Text [ dutch ] = "~Resultaat weergeven na" ;
+ Text [ spanish ] = "Escribi~r resultados en..." ;
+ Text [ english_us ] = "Co~py results to" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¸´ÖÆɸѡ½á¹ûµ½(~R)...";
+ Text[ russian ] = "Ðåçóëüòàò ôèëüòðà â";
+ Text[ polish ] = "Kopiuj rezultaty filtrowania do";
+ Text[ japanese ] = "̨ÙÀŒ‹‰Ê‚Ì“\\‚è•t‚¯æ(~R)...";
+ Text[ chinese_traditional ] = "½Æ»s¿z¿ïµ²ªG¨ì(~R)...";
+ Text[ arabic ] = "äÓÎ äÊíÌÉ ÇáÊÕÝíÉ Åáì";
+ Text[ greek ] = "ÁíôéãñáöÞ áðïôåëåóìÜôùí óôï";
+ Text[ korean ] = "¿¡ °á°ú¸¦ º¹»ç(~P)";
+ Text[ turkish ] = "Sonuçlarýn görüntüleneceði ~yer";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_DEST_PERS
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 130 , 78 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ Text = "~Persistent" ;
+ Text [ ENGLISH ] = "~Persistent" ;
+ TabStop = TRUE ;
+ Text [ english_us ] = "~Keep filter criteria" ;
+ Text [ portuguese_brazilian ] = "~Persistent" ;
+ Text [ swedish ] = "~Behålla filterkriterier" ;
+ Text [ danish ] = "Persistent" ;
+ Text [ italian ] = "Mantieni criteri" ;
+ Text [ spanish ] = "Ma~ntener criterios" ;
+ Text [ french ] = "~Conserver les critères de filtre" ;
+ Text [ dutch ] = "~Persistent" ;
+ Text [ portuguese ] = "~Manter critérios" ;
+ Text[ chinese_simplified ] = "±£ÁôɸѡÌõ¼þ(~K)";
+ Text[ russian ] = "Õðàíèòü óñëîâèÿ ôèëüòðà";
+ Text[ polish ] = "Zachowaj kryteria";
+ Text[ japanese ] = "̨ÙÀŠî€‚Ì•ÛŽ(~K)";
+ Text[ chinese_traditional ] = "«O¯d¿z¿ï±ø¥ó(~K)";
+ Text[ arabic ] = "ÇÓÊãÑÇÑ ãÚÇííÑ ÇáÝáÊÑ";
+ Text[ greek ] = "ÄéáôÞñçóç ~êñéôçñßùí ößëôñïõ";
+ Text[ korean ] = "ÇÊÅÍ ±âÁØ À¯Áö(~K)";
+ Text[ turkish ] = "~Filtre ölçütlerini koru";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_COPY_AREA
+ {
+ Border = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 23 , 92 ) ;
+ Size = MAP_APPFONT ( 90 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ Edit ED_COPY_AREA
+ {
+ Border = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 117 , 92 ) ;
+ Size = MAP_APPFONT ( 78 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_COPY_AREA
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 197 , 92 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ GroupBox GB_OPTIONS
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 40 ) ;
+ Size = MAP_APPFONT ( 211 , 70 ) ;
+ Text = "Optionen" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Opções" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ french ] = "Options" ;
+ Text [ swedish ] = "Alternativ" ;
+ Text [ dutch ] = "Opties" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ english_us ] = "Options" ;
+ Text[ chinese_simplified ] = "Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Opcje";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¿ï¶µ";
+ Text[ arabic ] = "ÇáÎíÇÑÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DBAREA
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 58 , 117 ) ;
+ Size = MAP_APPFONT ( 159 , 10 ) ;
+ Text = "dummy" ;
+ Text [ ENGLISH ] = "dummy" ;
+ Text [ norwegian ] = "dummy" ;
+ Text [ italian ] = "fittizio" ;
+ Text [ portuguese_brazilian ] = "falso" ;
+ Text [ portuguese ] = "Simulador" ;
+ Text [ finnish ] = "tyhjä" ;
+ Text [ danish ] = "dummy" ;
+ Text [ french ] = "factice" ;
+ Text [ swedish ] = "dummy" ;
+ Text [ dutch ] = "dummy" ;
+ Text [ spanish ] = "Comodín" ;
+ Text [ english_us ] = "dummy" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "Ñù±¾";
+ Text[ russian ] = "ôèêòèâíûé";
+ Text[ polish ] = "Zaœlepka";
+ Text[ japanese ] = "ÀÞа";
+ Text[ chinese_traditional ] = "¼Ë¥»";
+ Text[ arabic ] = "äãæÐÌ ØÈÇÚí";
+ Text[ greek ] = "Äïêéìáóôéêü";
+ Text[ korean ] = "´õ¹Ì";
+ Text[ turkish ] = "Taklit";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DBAREA_LABEL
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 117 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Datenbereich:" ;
+ Text [ ENGLISH ] = "Data area:" ;
+ Text [ norwegian ] = "Data area:" ;
+ Text [ italian ] = "Area dati" ;
+ Text [ portuguese_brazilian ] = "Área de dados:" ;
+ Text [ portuguese ] = "Área de dados:" ;
+ Text [ finnish ] = "Tietoalue:" ;
+ Text [ danish ] = "Dataområde:" ;
+ Text [ french ] = "Plage de données :" ;
+ Text [ swedish ] = "Dataområde:" ;
+ Text [ dutch ] = "Gegevensbereik:" ;
+ Text [ spanish ] = "Área de datos:" ;
+ Text [ english_us ] = "Data range:" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓò£º";
+ Text[ russian ] = "Îáëàñòü äàííûõ:";
+ Text[ polish ] = "Obszar danych:";
+ Text[ japanese ] = "ÃÞ°À”͈Í:";
+ Text[ chinese_traditional ] = "¸ê®Æ°Ï°ì¡G";
+ Text[ arabic ] = "äØÇÞ ÇáÈíÇäÇÊ:";
+ Text[ greek ] = "Ðåñéï÷Þ äåäïìÝíùí:";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¿µ¿ª:";
+ Text[ turkish ] = "Veri aralýðý:";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 222 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 222 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 222 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MoreButton BTN_MORE
+ {
+ Pos = MAP_APPFONT ( 223 , 63 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ MapUnit = MAP_APPFONT ;
+ Delta = 50 ;
+ };
+ Text[ chinese_simplified ] = "ÌØÊâɸѡ";
+ Text[ russian ] = "Ðàñøèðåííûé ôèëüòð";
+ Text[ polish ] = "Filtr specjalny";
+ Text[ japanese ] = "“ÁŽę̂ÙÀ";
+ Text[ chinese_traditional ] = "¯S®í¿z¿ï";
+ Text[ arabic ] = "ÝáÊÑ ÎÇÕ";
+ Text[ greek ] = "Åéäéêü ößëôñï";
+ Text[ korean ] = "°í±Þ ÇÊÅÍ";
+ Text[ turkish ] = "Özel filtre";
+ Text[ language_user1 ] = " ";
+};
+ //============================================================================
+ModalDialog RID_SCDLG_PIVOTFILTER
+{
+ OutputSize = TRUE ;
+ HelpId = HID_SC_PIVOTFILTER ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 278 , 83 ) ;
+ Text = "Filter" ;
+ Text [ ENGLISH ] = "Filter" ;
+ Text [ norwegian ] = "Filter" ;
+ Text [ italian ] = "Filtro" ;
+ Text [ portuguese_brazilian ] = "Filtro" ;
+ Text [ portuguese ] = "Filtro" ;
+ Text [ finnish ] = "Suodin" ;
+ Text [ danish ] = "Filter" ;
+ Text [ french ] = "Filtre" ;
+ Text [ swedish ] = "Filter" ;
+ Text [ dutch ] = "Filter" ;
+ Text [ spanish ] = "Filtro" ;
+ Text [ english_us ] = "Filter" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ FixedText FT_OP
+ {
+ Pos = MAP_APPFONT ( 12 , 15 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Verknüpfung : Verkn³pfung */
+ Text = "Verknüpfung" ;
+ Text [ ENGLISH ] = "Operator" ;
+ Text [ norwegian ] = "Operator" ;
+ Text [ italian ] = "Operatore" ;
+ Text [ portuguese_brazilian ] = "Operador" ;
+ Text [ portuguese ] = "Operador" ;
+ Text [ finnish ] = "Operaattori" ;
+ Text [ danish ] = "Operator" ;
+ Text [ french ] = "Lien" ;
+ Text [ swedish ] = "Operator" ;
+ Text [ dutch ] = "Koppeling" ;
+ Text [ spanish ] = "Vínculo" ;
+ Text [ english_us ] = "Operator" ;
+ Text[ chinese_simplified ] = "Á´½Ó";
+ Text[ russian ] = "Îïåðàòîð";
+ Text[ polish ] = "Operator";
+ Text[ japanese ] = "µÍßÚ°À";
+ Text[ chinese_traditional ] = "±¶®|";
+ Text[ arabic ] = "ÇÑÊÈÇØ";
+ Text[ greek ] = "ÔåëåóôÞò";
+ Text[ korean ] = "¿¬»êÀÚ";
+ Text[ turkish ] = "Baðlantý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_FIELD
+ {
+ Pos = MAP_APPFONT ( 70 , 15 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Feldname" ;
+ Text [ ENGLISH ] = "Fieldname" ;
+ Text [ norwegian ] = "Fieldname" ;
+ Text [ italian ] = "Nome di campo" ;
+ Text [ portuguese_brazilian ] = "Nome de campo" ;
+ Text [ portuguese ] = "Nome de campo" ;
+ Text [ finnish ] = "Kentän nimi" ;
+ Text [ danish ] = "Feltnavn" ;
+ Text [ french ] = "Nom champ" ;
+ Text [ swedish ] = "Fältnamn" ;
+ Text [ dutch ] = "Veldnaam" ;
+ Text [ spanish ] = "Nombre del campo" ;
+ Text [ english_us ] = "Field name" ;
+ Center = TRUE ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÃû³Æ";
+ Text[ russian ] = "Èìÿ ïîëÿ";
+ Text[ polish ] = "Nazwa pola";
+ Text[ japanese ] = "̨°ÙÄÞ–¼";
+ Text[ chinese_traditional ] = "Äæ¦ì¦WºÙ";
+ Text[ arabic ] = "ÇÓã ÇáÍÞá";
+ Text[ greek ] = "¼íïìá ðåäßïõ";
+ Text[ korean ] = "Çʵå À̸§";
+ Text[ turkish ] = "Alan adý";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_COND
+ {
+ Pos = MAP_APPFONT ( 116 , 15 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "Bedingung" ;
+ Text [ ENGLISH ] = "Condition" ;
+ Text [ norwegian ] = "Vilkår" ;
+ Text [ italian ] = "Condizione" ;
+ Text [ portuguese_brazilian ] = "condição" ;
+ Text [ portuguese ] = "Condição" ;
+ Text [ finnish ] = "Ehto" ;
+ Text [ danish ] = "Betingelse" ;
+ Text [ french ] = "Condition" ;
+ Text [ swedish ] = "Villkor" ;
+ Text [ dutch ] = "Voorwaarde" ;
+ Text [ spanish ] = "Condición" ;
+ Text [ english_us ] = "Condition" ;
+ Center = TRUE ;
+ Text[ chinese_simplified ] = "Ìõ¼þ";
+ Text[ russian ] = "Óñëîâèå";
+ Text[ polish ] = "Warunek";
+ Text[ japanese ] = "ðŒ";
+ Text[ chinese_traditional ] = "±ø¥ó";
+ Text[ arabic ] = "ÇáÔÑØ";
+ Text[ greek ] = "ÓõíèÞêç";
+ Text[ korean ] = "Á¶°Ç";
+ Text[ turkish ] = "Koþul";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_VAL
+ {
+ Pos = MAP_APPFONT ( 156 , 15 ) ;
+ Size = MAP_APPFONT ( 35 , 10 ) ;
+ Text = "Wert" ;
+ Text [ ENGLISH ] = "Value" ;
+ Text [ norwegian ] = "Verdi" ;
+ Text [ italian ] = "Valore" ;
+ Text [ portuguese_brazilian ] = "Valor" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Arvo" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "Värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "Value" ;
+ Center = TRUE ;
+ Text[ chinese_simplified ] = "ÊýÖµ";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "¼Æ­È";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_OP1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 43 ) ;
+ Size = MAP_APPFONT ( 40 , 46 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "E" ; Default ; > ;
+ < "O" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "UND" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "E" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "OG" ; Default ; > ;
+ < "ELLER" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "ET" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "OCH" ; Default ; > ;
+ < "ELLER" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "EN" ; Default ; > ;
+ < "OF" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Y" ; Default ; > ;
+ < "O" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "AND" ; Default ; > ;
+ < "OR" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ºÍ" ; Default ; > ;
+ < "»ò" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "È" ; Default ; > ;
+ < "ÈËÈ" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "ORAZ" ; Default ; > ;
+ < "LUB" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚©‚Â" ; Default ; > ;
+ < "‚Ü‚½‚Í" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "©M" ; Default ; > ;
+ < "©Î" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "æ" ; Default ; > ;
+ < "Ãæ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÊÁÉ" ; Default ; > ;
+ < "¹" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¿Í" ; Default ; > ;
+ < "¶Ç´Â" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "VE" ; Default ; > ;
+ < "VEYA" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ListBox LB_OP2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 58 ) ;
+ Size = MAP_APPFONT ( 40 , 46 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "E" ; Default ; > ;
+ < "O" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "UND" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "E" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "UND" ; Default ; > ;
+ < "ODER" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "OG" ; Default ; > ;
+ < "ELLER" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "ET" ; Default ; > ;
+ < "OU" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "OCH" ; Default ; > ;
+ < "ELLER" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "EN" ; Default ; > ;
+ < "OF" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Y" ; Default ; > ;
+ < "O" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "AND" ; Default ; > ;
+ < "OR" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ºÍ" ; Default ; > ;
+ < "»ò" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "È" ; Default ; > ;
+ < "ÈËÈ" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "ORAZ" ; Default ; > ;
+ < "LUB" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‚©‚Â" ; Default ; > ;
+ < "‚Ü‚½‚Í" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "©M" ; Default ; > ;
+ < "©Î" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "æ" ; Default ; > ;
+ < "Ãæ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "ÊÁÉ" ; Default ; > ;
+ < "¹" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¿Í" ; Default ; > ;
+ < "¶Ç´Â" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "VE" ; Default ; > ;
+ < "VEYA" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ListBox LB_FIELD1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 28 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox LB_FIELD2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 43 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox LB_FIELD3
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 60 , 58 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox LB_COND1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 28 ) ;
+ Size = MAP_APPFONT ( 25 , 65 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "=" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < "=>" ; Default ; > ;
+ < "=<" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ListBox LB_COND2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 43 ) ;
+ Size = MAP_APPFONT ( 25 , 65 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "=" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < "=>" ; Default ; > ;
+ < "=<" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ListBox LB_COND3
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 58 ) ;
+ Size = MAP_APPFONT ( 25 , 65 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ StringList =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "=" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < "=>" ; Default ; > ;
+ < "=<" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "=" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+ < "<>" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ ComboBox ED_VAL1
+ {
+ Pos = MAP_APPFONT ( 151 , 28 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ComboBox ED_VAL2
+ {
+ Pos = MAP_APPFONT ( 151 , 43 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ComboBox ED_VAL3
+ {
+ Pos = MAP_APPFONT ( 151 , 58 ) ;
+ Size = MAP_APPFONT ( 60 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ GroupBox GB_CRITERIA
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 211 , 74 ) ;
+ Text = "Kriterien" ;
+ Text [ ENGLISH ] = "Criteria" ;
+ Text [ norwegian ] = "Criteria" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Critérios" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Ehdot" ;
+ Text [ danish ] = "Kriterier" ;
+ Text [ french ] = "Critères" ;
+ Text [ swedish ] = "Kriterier" ;
+ Text [ dutch ] = "Criteria" ;
+ Text [ spanish ] = "Criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "ËÑÑ°Ìõ¼þ";
+ Text[ russian ] = "Óñëîâèÿ ïîèñêà";
+ Text[ polish ] = "Kryteria";
+ Text[ japanese ] = "ðŒ";
+ Text[ chinese_traditional ] = "·j´M±ø¥ó";
+ Text[ arabic ] = "ÇáãÚÇííÑ";
+ Text[ greek ] = "ÊñéôÞñéá";
+ Text[ korean ] = "±âÁØ °Ë»ö";
+ Text[ turkish ] = "Ölçütler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_CASE
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 94 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Groß-/Kleinschreibung : ~Gro˜-/Kleinschreibung */
+ Text = "~Groß-/Kleinschreibung" ;
+ Text [ ENGLISH ] = "~Case sensitive" ;
+ Text [ norwegian ] = "~Case sensitive" ;
+ Text [ italian ] = "~Maiuscole/minuscole" ;
+ Text [ portuguese_brazilian ] = "~Sensível a maiúsculas/minúsculas" ;
+ Text [ portuguese ] = "~Maiúsculas/minúsculas" ;
+ Text [ finnish ] = "~Kirjainkoko vaikuttaa" ;
+ Text [ danish ] = "Store og små bogstaver" ;
+ Text [ french ] = "~Respecter la casse" ;
+ Text [ swedish ] = "~Versaler/gemener" ;
+ Text [ dutch ] = "~Hoofd-/kleine letters belangrijk" ;
+ Text [ spanish ] = "M~ayúsculas/minúsculas" ;
+ Text [ english_us ] = "~Case sensitive" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×Öĸ´óСд(~C)";
+ Text[ russian ] = "Ó÷èòûâàòü ðåãèñòð";
+ Text[ polish ] = "Ma³e i du¿e litery";
+ Text[ japanese ] = "‘啶Žš/¬•¶Žš‚ð‹æ•Ê(~C)";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "¤j¤p¼g(~C)";
+ Text[ arabic ] = "ÇáßÊÇÈÉ ÈÃÍÑÝ ßÈíÑÉ Ãæ ÕÛíÑÉ";
+ Text[ greek ] = "ÐåæÜ-Êåöáëáßá";
+ Text[ korean ] = "´ë/¼Ò ¹®ÀÚ ±¸ºÐ(~C)";
+ Text[ turkish ] = "~Büyük/Küçük harf duyarlý";
+ };
+ CheckBox BTN_REGEXP
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 130 , 94 ) ;
+ Size = MAP_APPFONT ( 80 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Regulärer Ausdruck : ~Regulõrer Ausdruck */
+ Text = "~Regulärer Ausdruck" ;
+ Text [ ENGLISH ] = "~Regular expression" ;
+ Text [ norwegian ] = "~Regular expression" ;
+ Text [ italian ] = "Espressione ~regolare" ;
+ Text [ portuguese_brazilian ] = "~Expressão regular" ;
+ Text [ portuguese ] = "~Expressão regular" ;
+ Text [ finnish ] = "~Säännönmukainen lauseke" ;
+ Text [ danish ] = "Regulært udtryk" ;
+ Text [ french ] = "Caractère ~générique" ;
+ Text [ swedish ] = "~Reguljärt uttryck" ;
+ Text [ dutch ] = "~Gangbare uitdrukking" ;
+ Text [ spanish ] = "~Expresión corriente" ;
+ Text [ english_us ] = "~Regular expression" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "³£¹æ±í´ï(~R)";
+ Text[ russian ] = "Ðåãóëÿðíîå âûðàæåíèå";
+ Text[ polish ] = "Wyra¿enie regularne";
+ Text[ japanese ] = "ܲÙÄÞ¶°ÄÞ•¶Žš(~R)";
+ Text[ chinese_traditional ] = "±`³Wªí¹F(~R)";
+ Text[ arabic ] = "ÊÚÈíÑ ÇÚÊíÇÏí";
+ Text[ greek ] = "ÊáíïíéêÞ ðá~ñÜóôáóç";
+ Text[ korean ] = "ÀϹÝÀû Ç¥Çö(~R)";
+ Text[ turkish ] = "~Genel arama karakteri";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_UNIQUE
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 107 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Keine ~Duplikate" ;
+ Text [ ENGLISH ] = "~Unique" ;
+ Text [ norwegian ] = "~Unique" ;
+ Text [ italian ] = "~Univoco" ;
+ Text [ portuguese_brazilian ] = "~Único" ;
+ Text [ portuguese ] = "~Único" ;
+ Text [ finnish ] = "~Yksikäsitteinen" ;
+ Text [ danish ] = "Kun unikke poster" ;
+ Text [ french ] = "~Sans doublons" ;
+ Text [ swedish ] = "~Unika" ;
+ Text [ dutch ] = "~Alleen originelen" ;
+ Text [ spanish ] = "~Sin duplicados" ;
+ Text [ english_us ] = "~No duplication" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "²»Éú³É¸´¼þ(~N)";
+ Text[ russian ] = "Áåç ïîâòîðåíèé";
+ Text[ polish ] = "Bez duplikatów";
+ Text[ japanese ] = "d•¡‚È‚µ(~N)";
+ Text[ chinese_traditional ] = "¤£¥Í¦¨´_¥ó(~N)";
+ Text[ arabic ] = "ÈÏæä äõÓÎ ØÈÞ ÇáÃÕá";
+ Text[ greek ] = "¼÷é äéðëÜ óôïé÷åßá";
+ Text[ korean ] = "Áߺ¹ Çã¿ë ¾ÈµÊ(~N)";
+ Text[ turkish ] = "Ayný sonuçlarý ~ayýkla";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_OPTIONS
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 83 ) ;
+ Size = MAP_APPFONT ( 211 , 40 ) ;
+ Text = "Optionen" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Opções" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ french ] = "Options" ;
+ Text [ swedish ] = "Alternativ" ;
+ Text [ dutch ] = "Opties" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ english_us ] = "Options" ;
+ Text[ chinese_simplified ] = "Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Opcje";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¿ï¶µ";
+ Text[ arabic ] = "ÇáÎíÇÑÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DBAREA
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 58 , 129 ) ;
+ Size = MAP_APPFONT ( 159 , 10 ) ;
+ Text = "dummy" ;
+ Text [ ENGLISH ] = "dummy" ;
+ Text [ norwegian ] = "dummy" ;
+ Text [ italian ] = "dummy" ;
+ Text [ portuguese_brazilian ] = "falso" ;
+ Text [ portuguese ] = "Simulador" ;
+ Text [ finnish ] = "tyhjä" ;
+ Text [ danish ] = "dummy" ;
+ Text [ french ] = "factice" ;
+ Text [ swedish ] = "dummy" ;
+ Text [ dutch ] = "dummy" ;
+ Text [ spanish ] = "Comodín" ;
+ Text [ english_us ] = "dummy" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÐéÉè";
+ Text[ russian ] = "ôèêòèâíûé";
+ Text[ polish ] = "Zaœlepka";
+ Text[ japanese ] = "ÀÞа";
+ Text[ chinese_traditional ] = "¼Ë¦¡";
+ Text[ arabic ] = "äãæÐÌ ØÈÇÚí";
+ Text[ greek ] = "Äïêéìáóôéêü";
+ Text[ korean ] = "´õ¹Ì";
+ Text[ turkish ] = "Taklit";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_DBAREA_LABEL
+ {
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 129 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Datenbereich:" ;
+ Text [ ENGLISH ] = "Data area:" ;
+ Text [ norwegian ] = "Data area:" ;
+ Text [ italian ] = "Area dati:" ;
+ Text [ portuguese_brazilian ] = "Área de dados:" ;
+ Text [ portuguese ] = "Área de dados:" ;
+ Text [ finnish ] = "Tietoalue:" ;
+ Text [ danish ] = "Dataområde:" ;
+ Text [ french ] = "Plage de données :" ;
+ Text [ swedish ] = "Dataområde:" ;
+ Text [ dutch ] = "Gegevensbereik:" ;
+ Text [ spanish ] = "Área de datos:" ;
+ Text [ english_us ] = "Data range:" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓò:";
+ Text[ russian ] = "Îáëàñòü äàííûõ:";
+ Text[ polish ] = "Obszar danych:";
+ Text[ japanese ] = "ÃÞ°À”͈Í:";
+ Text[ chinese_traditional ] = "¸ê®Æ°Ï°ì¡G";
+ Text[ arabic ] = "äØÇÞ ÇáÈíÇäÇÊ:";
+ Text[ greek ] = "Ðåñéï÷Þ äåäïìÝíùí:";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¿µ¿ª:";
+ Text[ turkish ] = "Veri aralýðý:";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 222 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 222 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 222 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MoreButton BTN_MORE
+ {
+ Pos = MAP_APPFONT ( 223 , 63 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ MapUnit = MAP_APPFONT ;
+ Delta = 60 ;
+ };
+ Text[ chinese_simplified ] = "ɸѡ";
+ Text[ russian ] = "Ôèëüòð";
+ Text[ polish ] = "Filtr";
+ Text[ japanese ] = "̨ÙÀ";
+ Text[ chinese_traditional ] = "¿z¿ï";
+ Text[ arabic ] = "ÇáÝáÊÑ";
+ Text[ greek ] = "Ößëôñï";
+ Text[ korean ] = "ÇÊÅÍ";
+ Text[ turkish ] = "Filtre";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/src/globstr.src b/sc/source/ui/src/globstr.src
new file mode 100644
index 000000000000..332d313f7c1e
--- /dev/null
+++ b/sc/source/ui/src/globstr.src
@@ -0,0 +1,9405 @@
+/*************************************************************************
+ *
+ * $RCSfile: globstr.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "globstr.hrc"
+#include "sc.hrc"
+
+
+
+Resource RID_GLOBSTR
+{
+ String STR_UNDO_INSERTCELLS
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen : Einf³gen */
+ Text = "Einfügen" ;
+ Text [ ENGLISH ] = "Insert" ;
+ Text [ norwegian ] = "Sett inn" ;
+ Text [ italian ] = "Inserisci" ;
+ Text [ portuguese_brazilian ] = "Inserir" ;
+ Text [ portuguese ] = "Inserir" ;
+ Text [ finnish ] = "Lisää" ;
+ Text [ danish ] = "Indsæt" ;
+ Text [ french ] = "Données insérées" ;
+ Text [ swedish ] = "Infoga" ;
+ Text [ dutch ] = "Invoegen" ;
+ Text [ spanish ] = "Insertar" ;
+ Text [ english_us ] = "Insert" ;
+ Text[ chinese_simplified ] = "²åÈë";
+ Text[ russian ] = "Âñòàâèòü";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "»ðÀÔ";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DELETECELLS
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Löschen : L÷schen */
+ Text = "Löschen" ;
+ Text [ ENGLISH ] = "Delete" ;
+ Text [ norwegian ] = "Slett" ;
+ Text [ italian ] = "Elimina" ;
+ Text [ portuguese_brazilian ] = "Apagar" ;
+ Text [ portuguese ] = "Eliminar" ;
+ Text [ finnish ] = "Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "Données supprimées" ;
+ Text [ swedish ] = "Radera" ;
+ Text [ dutch ] = "Wissen" ;
+ Text [ spanish ] = "Eliminar" ;
+ Text [ english_us ] = "Delete" ;
+ Text[ chinese_simplified ] = "ɾ³ý";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ";
+ Text[ chinese_traditional ] = "§R°£";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦";
+ Text[ turkish ] = "Sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_CUT
+ {
+ Text = "Ausschneiden" ;
+ Text [ ENGLISH ] = "Cut" ;
+ Text [ norwegian ] = "Cut" ;
+ Text [ italian ] = "Taglia" ;
+ Text [ portuguese_brazilian ] = "Recortar" ;
+ Text [ portuguese ] = "Cortar" ;
+ Text [ finnish ] = "Leikkaa" ;
+ Text [ danish ] = "Klip" ;
+ Text [ french ] = "Couper" ;
+ Text [ swedish ] = "Klipp ut" ;
+ Text [ dutch ] = "Knippen" ;
+ Text [ spanish ] = "Cortar" ;
+ Text [ english_us ] = "Cut" ;
+ Text[ chinese_simplified ] = "¼ô³ý";
+ Text[ russian ] = "Âûðåçàòü";
+ Text[ polish ] = "Wytnij";
+ Text[ japanese ] = "Ø‚èŽæ‚è";
+ Text[ chinese_traditional ] = "°Å¤U";
+ Text[ arabic ] = "ÞÕ";
+ Text[ greek ] = "ÁðïêïðÞ";
+ Text[ korean ] = "À߶󳻱â";
+ Text[ turkish ] = "Kes";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_PASTE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen : Einf³gen */
+ Text = "Einfügen" ;
+ Text [ ENGLISH ] = "Insert" ;
+ Text [ norwegian ] = "Sett inn" ;
+ Text [ italian ] = "Inserisci" ;
+ Text [ portuguese_brazilian ] = "Inserir" ;
+ Text [ portuguese ] = "Inserir" ;
+ Text [ finnish ] = "Lisää" ;
+ Text [ danish ] = "Indsæt" ;
+ Text [ french ] = "Données insérées" ;
+ Text [ swedish ] = "Infoga" ;
+ Text [ dutch ] = "Invoegen" ;
+ Text [ spanish ] = "Insertar" ;
+ Text [ english_us ] = "Insert" ;
+ Text[ chinese_simplified ] = "²åÈë";
+ Text[ russian ] = "Âñòàâèòü";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "»ðÀÔ";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DRAGDROP
+ {
+ Text = "Drag&Drop" ;
+ Text [ ENGLISH ] = "Drag&Drop" ;
+ Text [ norwegian ] = "Dra&Slipp" ;
+ Text [ italian ] = "Trascina e rilascia" ;
+ Text [ portuguese_brazilian ] = "Arrastar&Soltar" ;
+ Text [ portuguese ] = "Arrastar&Largar" ;
+ Text [ french ] = "Glisser-Déposer" ;
+ Text [ dutch ] = "Drag&Drop" ;
+ Text [ spanish ] = "Arrastrar y colocar" ;
+ Text [ danish ] = "Træk-og-slip" ;
+ Text [ swedish ] = "Dra-och-släpp" ;
+ Text [ finnish ] = "Drag&Drop" ;
+ Text [ english_us ] = "Drag and Drop" ;
+ Text[ chinese_simplified ] = "ÍÏ·Å";
+ Text[ russian ] = "Ïåðåòàñêèâàíèå";
+ Text[ polish ] = "Przeci¹gnij&Upuœæ";
+ Text[ japanese ] = "ÄÞׯ¸Þ&ÄÞÛ¯Ìß";
+ Text[ chinese_traditional ] = "©ì¦²";
+ Text[ arabic ] = "ÓÍÈ æ ÅÓÞÇØ";
+ Text[ greek ] = "Ìåôáêßíçóç êáé Aðüèåóç";
+ Text[ korean ] = "µå·¡±×&µå·Ó";
+ Text[ turkish ] = "Sürükle ve býrak";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_MOVE
+ {
+ Text = "Verschieben" ;
+ Text [ ENGLISH ] = "Move" ;
+ Text [ norwegian ] = "Flytt" ;
+ Text [ italian ] = "Sposta" ;
+ Text [ portuguese_brazilian ] = "Mover" ;
+ Text [ portuguese ] = "Mover" ;
+ Text [ finnish ] = "Lisää" ;
+ Text [ danish ] = "Flyt" ;
+ Text [ french ] = "Déplacer" ;
+ Text [ swedish ] = "Flytta" ;
+ Text [ dutch ] = "Verplaatsen" ;
+ Text [ spanish ] = "Desplazar" ;
+ Text [ english_us ] = "Move" ;
+ Text[ chinese_simplified ] = "Òƶ¯";
+ Text[ russian ] = "Ïåðåìåñòèòü";
+ Text[ polish ] = "Przesuñ";
+ Text[ japanese ] = "ˆÚ“®";
+ Text[ chinese_traditional ] = "²¾°Ê";
+ Text[ arabic ] = "ÅÒÇÍÉ";
+ Text[ greek ] = "Ìåôáêßíçóç";
+ Text[ korean ] = "À̵¿";
+ Text[ turkish ] = "Taþý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_COPY
+ {
+ Text = "Kopieren" ;
+ Text [ ENGLISH ] = "Copy" ;
+ Text [ norwegian ] = "Kopi" ;
+ Text [ italian ] = "Copia" ;
+ Text [ portuguese_brazilian ] = "Copiar" ;
+ Text [ portuguese ] = "Copiar" ;
+ Text [ finnish ] = "Kopioi" ;
+ Text [ danish ] = "Kopier" ;
+ Text [ french ] = "Copier" ;
+ Text [ swedish ] = "Kopiera" ;
+ Text [ dutch ] = "Kopiëren" ;
+ Text [ spanish ] = "Copiar" ;
+ Text [ english_us ] = "Copy" ;
+ Text[ chinese_simplified ] = "¸´ÖÆ";
+ Text[ russian ] = "Êîïèðîâàòü";
+ Text[ polish ] = "Kopiuj";
+ Text[ japanese ] = "ºËß°";
+ Text[ chinese_traditional ] = "½Æ»s";
+ Text[ arabic ] = "äÓÎ";
+ Text[ greek ] = "ÁíôéãñáöÞ";
+ Text[ korean ] = "º¹»ç";
+ Text[ turkish ] = "Kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DELETECONTENTS
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Löschen : L÷schen */
+ Text = "Löschen" ;
+ Text [ ENGLISH ] = "Delete" ;
+ Text [ norwegian ] = "Slett" ;
+ Text [ italian ] = "Elimina" ;
+ Text [ portuguese_brazilian ] = "Apagar" ;
+ Text [ portuguese ] = "Eliminar" ;
+ Text [ finnish ] = "Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "Données supprimées" ;
+ Text [ swedish ] = "Radera" ;
+ Text [ dutch ] = "Wissen" ;
+ Text [ spanish ] = "Eliminar" ;
+ Text [ english_us ] = "Delete" ;
+ Text[ chinese_simplified ] = "ɾ³ý";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ";
+ Text[ chinese_traditional ] = "§R°£";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦";
+ Text[ turkish ] = "Sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_SELATTR
+ {
+ Text = "Attribute" ;
+ Text [ ENGLISH ] = "Attributes" ;
+ Text [ norwegian ] = "Attributes" ;
+ Text [ italian ] = "Attributi" ;
+ Text [ portuguese_brazilian ] = "Atributos" ;
+ Text [ portuguese ] = "Atributos" ;
+ Text [ finnish ] = "Määritteet" ;
+ Text [ danish ] = "Attributter" ;
+ Text [ french ] = "Attributs" ;
+ Text [ swedish ] = "Attribut" ;
+ Text [ dutch ] = "Attributen" ;
+ Text [ spanish ] = "Atributos" ;
+ Text [ english_us ] = "Attributes" ;
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ russian ] = "Àòðèáóòû";
+ Text[ polish ] = "Atrybuty";
+ Text[ japanese ] = "‘®«";
+ Text[ chinese_traditional ] = "ÄÝ©Ê";
+ Text[ arabic ] = "ÇáÓãÇÊ";
+ Text[ greek ] = "Éäéüôçôåò";
+ Text[ korean ] = "¼Ó¼º";
+ Text[ turkish ] = "Öznitelikler";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_SELATTRLINES
+ {
+ Text = "Attribute/Linien" ;
+ Text [ ENGLISH ] = "Attributes/Lines" ;
+ Text [ norwegian ] = "Attributes/Lines" ;
+ Text [ italian ] = "Attributi/Linee" ;
+ Text [ portuguese_brazilian ] = "Atributos/Linhas" ;
+ Text [ portuguese ] = "Atributos/Linhas" ;
+ Text [ finnish ] = "Määritteet/Viivat" ;
+ Text [ danish ] = "Attributter/Linjer" ;
+ Text [ french ] = "Attributs/lignes" ;
+ Text [ swedish ] = "Attribut/Linjer" ;
+ Text [ dutch ] = "Attributen/lijnen" ;
+ Text [ spanish ] = "Atributos/Líneas" ;
+ Text [ english_us ] = "Attributes/Lines" ;
+ Text[ chinese_simplified ] = "ÊôÐÔ/ÏßÌõ";
+ Text[ russian ] = "Àòðèáóòû/Ëèíèè";
+ Text[ polish ] = "Atrybuty/Linie";
+ Text[ japanese ] = "‘®«/ü";
+ Text[ chinese_traditional ] = "ÄÝ©Ê/½u±ø";
+ Text[ arabic ] = "ÇáÓãÇÊ/ÇáÎØæØ";
+ Text[ greek ] = "Éäéüôçôåò/ÃñáììÝò";
+ Text[ korean ] = "¼Ó¼º/¼±";
+ Text[ turkish ] = "Öznitelikler/Çizgiler";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_COLWIDTH
+ {
+ Text = "Spaltenbreite" ;
+ Text [ ENGLISH ] = "Column Width" ;
+ Text [ norwegian ] = "Column Width" ;
+ Text [ italian ] = "Larghezza colonna" ;
+ Text [ portuguese_brazilian ] = "Largura da Coluna" ;
+ Text [ portuguese ] = "Largura da coluna" ;
+ Text [ finnish ] = "Sarakeleveys" ;
+ Text [ danish ] = "Kolonnebredde" ;
+ Text [ french ] = "Largeur de colonne" ;
+ Text [ swedish ] = "Kolumnbredd" ;
+ Text [ dutch ] = "Kolombreedte" ;
+ Text [ spanish ] = "Ancho de columna" ;
+ Text [ english_us ] = "Column Width" ;
+ Text[ chinese_simplified ] = "Áпí";
+ Text[ russian ] = "Øèðèíà ñòîëáöîâ";
+ Text[ polish ] = "SzerokoϾ kolumny";
+ Text[ japanese ] = "—ñ•";
+ Text[ chinese_traditional ] = "Äæ¼e";
+ Text[ arabic ] = "ÚÑÖ ÇáÃÚãÏÉ";
+ Text[ greek ] = "ÐëÜôïò óôÞëçò";
+ Text[ korean ] = "¿­ ³Êºñ";
+ Text[ turkish ] = "Sütun geniþliði";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_OPTCOLWIDTH
+ {
+ Text = "optimale Spaltenbreite" ;
+ Text [ ENGLISH ] = "Optimal Column Width" ;
+ Text [ norwegian ] = "Optimal Column Width" ;
+ Text [ italian ] = "Larghezza colonna ottimale" ;
+ Text [ portuguese_brazilian ] = "Largura Ideal da Coluna" ;
+ Text [ portuguese ] = "Largura ideal da coluna" ;
+ Text [ finnish ] = "Sopivin sarakeleveys" ;
+ Text [ danish ] = "Optimal kolonnebredde" ;
+ Text [ french ] = "Largeur de colonne optimale" ;
+ Text [ swedish ] = "optimal kolumnbredd" ;
+ Text [ dutch ] = "optimale kolombreedte" ;
+ Text [ spanish ] = "Ancho de columna óptimo" ;
+ Text [ english_us ] = "Optimal Column Width" ;
+ Text[ chinese_simplified ] = "×î¼ÑÁпí";
+ Text[ russian ] = "Îïòèìàëüíàÿ øèðèíà ñòîëáöîâ";
+ Text[ polish ] = "Optymalna szerokoϾ kolumny";
+ Text[ japanese ] = "Å“K‚È—ñ‚Ì•";
+ Text[ chinese_traditional ] = "³ÌÓìÄæ¼e";
+ Text[ arabic ] = "ÇáÚÑÖ ÇáÃãËá ááÚãæÏ";
+ Text[ greek ] = "âÝëôéóôï ðëÜôïò óôÞëçò";
+ Text[ korean ] = "ÃÖÀûÀÇ ¿­ ³Êºñ";
+ Text[ turkish ] = "Optimum Sütun geniþliði";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_ROWHEIGHT
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilenhöhe : Zeilenh÷he */
+ Text = "Zeilenhöhe" ;
+ Text [ ENGLISH ] = "Row Height" ;
+ Text [ norwegian ] = "Row Height" ;
+ Text [ italian ] = "Altezza riga" ;
+ Text [ portuguese_brazilian ] = "Altura da Fileira" ;
+ Text [ portuguese ] = "Altura da linha" ;
+ Text [ finnish ] = "Rivikorkeus" ;
+ Text [ danish ] = "Rækkehøjde" ;
+ Text [ french ] = "Hauteur de ligne" ;
+ Text [ swedish ] = "Radhöjd" ;
+ Text [ dutch ] = "Rijhoogte" ;
+ Text [ spanish ] = "Altura de fila" ;
+ Text [ english_us ] = "Row height" ;
+ Text[ chinese_simplified ] = "Ðиß";
+ Text[ russian ] = "Âûñîòà ñòðîê";
+ Text[ polish ] = "WysokoϾ wierszy";
+ Text[ japanese ] = "s‚Ì‚‚³";
+ Text[ chinese_traditional ] = "¦C°ª";
+ Text[ arabic ] = "ÇÑÊÝÇÚ ÇáÕÝ";
+ Text[ greek ] = "¾øïò ãñáììÞò";
+ Text[ korean ] = "Çà ³ôÀÌ";
+ Text[ turkish ] = "Satýr yüksekliði";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_OPTROWHEIGHT
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? optimale Zeilenhöhe : optimale Zeilenh÷he */
+ Text = "optimale Zeilenhöhe" ;
+ Text [ ENGLISH ] = "Optimal Row Height" ;
+ Text [ norwegian ] = "Optimal Row Height" ;
+ Text [ italian ] = "Altezza riga ottimale" ;
+ Text [ portuguese_brazilian ] = "Altura Ideal da Fileira" ;
+ Text [ portuguese ] = "Altura ideal da linha" ;
+ Text [ finnish ] = "Sopivin rivikorkeus" ;
+ Text [ danish ] = "Optimal rækkehøjde" ;
+ Text [ french ] = "Hauteur de ligne optimale" ;
+ Text [ swedish ] = "optimal radhöjd" ;
+ Text [ dutch ] = "optimale rijhoogte" ;
+ Text [ spanish ] = "Altura de fila óptima" ;
+ Text [ english_us ] = "Optimal Row Height" ;
+ Text[ chinese_simplified ] = "×î¼ÑÐиß";
+ Text[ russian ] = "Îïòèìàëüíàÿ âûñîòà ñòðîê";
+ Text[ polish ] = "Optymalna wysokoϾ wierszy";
+ Text[ japanese ] = "Å“K‚Ès‚Ì‚‚³";
+ Text[ chinese_traditional ] = "³ÌÓìÄæ°ª";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ ÇáÃãËá ááÕÝ";
+ Text[ greek ] = "ÂÝëôéóôï ýøïò ãñáììÞò";
+ Text[ korean ] = "ÃÖÀûÀÇ Çà ³ôÀÌ";
+ Text[ turkish ] = "Optimum satýr yüksekliði";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_AUTOFILL
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Füllen : F³llen */
+ Text = "Füllen" ;
+ Text [ ENGLISH ] = "Autofill" ;
+ Text [ norwegian ] = "Autofill" ;
+ Text [ italian ] = "Riempimento" ;
+ Text [ portuguese_brazilian ] = "Preenchimento automático" ;
+ Text [ portuguese ] = "Preencher" ;
+ Text [ finnish ] = "Automaattitäyttö" ;
+ Text [ danish ] = "Fyld" ;
+ Text [ french ] = "Remplir" ;
+ Text [ swedish ] = "Fyll" ;
+ Text [ dutch ] = "Invullen" ;
+ Text [ spanish ] = "Rellenar" ;
+ Text [ english_us ] = "Fill" ;
+ Text[ chinese_simplified ] = "Ìî³ä";
+ Text[ russian ] = "Çàïîëíèòü";
+ Text[ polish ] = "Wype³nij";
+ Text[ japanese ] = "“ü—Í";
+ Text[ chinese_traditional ] = "¶ñ¥R";
+ Text[ arabic ] = "ÊÚÈÆÉ";
+ Text[ greek ] = "ÃÝìéóìá";
+ Text[ korean ] = "ä¿ì±â";
+ Text[ turkish ] = "Doldur";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_MERGE
+ {
+ Text = "Zusammenfassen" ;
+ Text [ ENGLISH ] = "Merge" ;
+ Text [ norwegian ] = "Merge" ;
+ Text [ italian ] = "Unisci" ;
+ Text [ portuguese_brazilian ] = "Mesclar" ;
+ Text [ portuguese ] = "Intercalar" ;
+ Text [ finnish ] = "Yhdistä" ;
+ Text [ danish ] = "Flet" ;
+ Text [ french ] = "Fusionner" ;
+ Text [ swedish ] = "Sammanfoga" ;
+ Text [ dutch ] = "Samenvatten" ;
+ Text [ spanish ] = "Unir" ;
+ Text [ english_us ] = "Merge" ;
+ Text[ chinese_simplified ] = "ºÏ²¢";
+ Text[ russian ] = "Îáúåäèíèòü";
+ Text[ polish ] = "Scal";
+ Text[ japanese ] = "“‡";
+ Text[ chinese_traditional ] = "¦X¨Ö";
+ Text[ arabic ] = "ÏãÌ";
+ Text[ greek ] = "Óõã÷þíåõóç";
+ Text[ korean ] = "º´ÇÕ";
+ Text[ turkish ] = "Birleþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_REMERGE
+ {
+ Text = "Zusammenfassung aufheben" ;
+ Text [ ENGLISH ] = "Split" ;
+ Text [ norwegian ] = "Split" ;
+ Text [ italian ] = "Dividi" ;
+ Text [ portuguese_brazilian ] = "Dividir" ;
+ Text [ portuguese ] = "Dividir" ;
+ Text [ finnish ] = "Jaa" ;
+ Text [ danish ] = "Opdel" ;
+ Text [ french ] = "Diviser" ;
+ Text [ swedish ] = "Dela" ;
+ Text [ dutch ] = "Samenvoeging opheffen" ;
+ Text [ spanish ] = "Dividir" ;
+ Text [ english_us ] = "Split" ;
+ Text[ chinese_simplified ] = "È¡ÏûºÏ²¢";
+ Text[ russian ] = "Ðàçáèòü";
+ Text[ polish ] = "Roz³¹cz";
+ Text[ japanese ] = "Œ‹‡‚ð‰ðÁ‚·‚é";
+ Text[ chinese_traditional ] = "¨ú®ø¦X¨Ö";
+ Text[ arabic ] = "ÅÒÇáÉ ÇáÖã";
+ Text[ greek ] = "ÊáôÜñãçóç óõã÷þíåõóçò";
+ Text[ korean ] = "³ª´©±â";
+ Text[ turkish ] = "Böl";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_AUTOFORMAT
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? AutoFormat : Auto-Format */
+ Text = "AutoFormat" ;
+ Text [ ENGLISH ] = "AutoFormat" ;
+ Text [ norwegian ] = "AutoFormat" ;
+ Text [ italian ] = "Formattazione automatica" ;
+ Text [ portuguese_brazilian ] = "Auto Formatação" ;
+ Text [ portuguese ] = "AutoFormato" ;
+ Text [ finnish ] = "Automaattimuoto" ;
+ Text [ danish ] = "AutoFormat" ;
+ Text [ french ] = "AutoFormat" ;
+ Text [ swedish ] = "AutoFormat" ;
+ Text [ dutch ] = "AutoOpmaak" ;
+ Text [ spanish ] = "AutoFormato" ;
+ Text [ english_us ] = "AutoFormat" ;
+ Text[ chinese_simplified ] = "×Ô¶¯¸ñʽ";
+ Text[ russian ] = "Àâòîôîðìàò";
+ Text[ polish ] = "Autoformatowanie";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä";
+ Text[ chinese_traditional ] = "¦Û°Ê®æ¦¡";
+ Text[ arabic ] = "ÇáÊäÓíÞ ÇáÊáÞÇÆí";
+ Text[ greek ] = "ÁõôïÌïñöïðïßçóç";
+ Text[ korean ] = "ÀÚµ¿¼­½Ä";
+ Text[ turkish ] = "Otomatik formatlama";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_REPLACE
+ {
+ Text = "Ersetzen" ;
+ Text [ ENGLISH ] = "Replace" ;
+ Text [ norwegian ] = "Replace" ;
+ Text [ italian ] = "Sostituisci" ;
+ Text [ portuguese_brazilian ] = "Substituir" ;
+ Text [ portuguese ] = "Substituir" ;
+ Text [ finnish ] = "Korvaa" ;
+ Text [ danish ] = "Erstat" ;
+ Text [ french ] = "Remplacer" ;
+ Text [ swedish ] = "Ersätt" ;
+ Text [ dutch ] = "Vervangen" ;
+ Text [ spanish ] = "Reemplazar" ;
+ Text [ english_us ] = "Replace" ;
+ Text[ chinese_simplified ] = "¸üÌæ";
+ Text[ russian ] = "Çàìåíèòü";
+ Text[ polish ] = "Zamieñ";
+ Text[ japanese ] = "’u‚«Š·‚¦";
+ Text[ chinese_traditional ] = "¥N´À";
+ Text[ arabic ] = "ÇÓÊÈÏÇá";
+ Text[ greek ] = "ÁíôéêáôÜóôáóç";
+ Text[ korean ] = "¹Ù²Ù±â";
+ Text[ turkish ] = "Deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_CURSORATTR
+ {
+ Text = "Attribute" ;
+ Text [ ENGLISH ] = "Attributes" ;
+ Text [ norwegian ] = "Attributes" ;
+ Text [ italian ] = "Attributi" ;
+ Text [ portuguese_brazilian ] = "Atributos" ;
+ Text [ portuguese ] = "Atributos" ;
+ Text [ finnish ] = "Määritteet" ;
+ Text [ danish ] = "Attributter" ;
+ Text [ french ] = "Attributs" ;
+ Text [ swedish ] = "Attribut" ;
+ Text [ dutch ] = "Attributen" ;
+ Text [ spanish ] = "Atributos" ;
+ Text [ english_us ] = "Attributes" ;
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ russian ] = "Àòðèáóòû";
+ Text[ polish ] = "Atrybuty";
+ Text[ japanese ] = "‘®«";
+ Text[ chinese_traditional ] = "ÄÝ©Ê";
+ Text[ arabic ] = "ÇáÓãÇÊ";
+ Text[ greek ] = "Éäéüôçôåò";
+ Text[ korean ] = "¼Ó¼º";
+ Text[ turkish ] = "Öznitelikler";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_ENTERDATA
+ {
+ Text = "Eingabe" ;
+ Text [ ENGLISH ] = "Input" ;
+ Text [ norwegian ] = "Input" ;
+ Text [ italian ] = "Digitazione" ;
+ Text [ portuguese_brazilian ] = "Inserção" ;
+ Text [ portuguese ] = "Entrada" ;
+ Text [ finnish ] = "Syöttö" ;
+ Text [ danish ] = "Input" ;
+ Text [ french ] = "Saisie" ;
+ Text [ swedish ] = "Inmatning" ;
+ Text [ dutch ] = "Invoer" ;
+ Text [ spanish ] = "Entrada" ;
+ Text [ english_us ] = "Input" ;
+ Text[ chinese_simplified ] = "ÊäÈë";
+ Text[ russian ] = "Ââîä";
+ Text[ polish ] = "Wpis";
+ Text[ japanese ] = "“ü—Í";
+ Text[ chinese_traditional ] = "¿é¤J";
+ Text[ arabic ] = "ÅÏÎÇá";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "ÀÔ·Â";
+ Text[ turkish ] = "Giriþ";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_INSCOLBREAK
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Spaltenumbruch einfügen : Spaltenumbruch einf³gen */
+ Text = "Spaltenumbruch einfügen" ;
+ Text [ ENGLISH ] = "Insert Column Break" ;
+ Text [ norwegian ] = "Insert Column Break" ;
+ Text [ italian ] = "Inserisci interruzione colonna" ;
+ Text [ portuguese_brazilian ] = "Inserir Quebra de Coluna" ;
+ Text [ portuguese ] = "Inserir quebra de coluna" ;
+ Text [ finnish ] = "Lisää sarakkeenvaihto" ;
+ Text [ danish ] = "Indsæt spalteskift" ;
+ Text [ french ] = "Insérer un saut de colonne" ;
+ Text [ swedish ] = "Infoga kolumnbrytning" ;
+ Text [ dutch ] = "Kolomeinde invoegen" ;
+ Text [ spanish ] = "Insertar salto de columna" ;
+ Text [ english_us ] = "Insert Column Break" ;
+ Text[ chinese_simplified ] = "²åÈë·ÖÁзû";
+ Text[ russian ] = "Âñòàâèòü ðàçðûâ ñòîëáöîâ";
+ Text[ polish ] = "Wstaw podzia³ kolumny";
+ Text[ japanese ] = "‰ü—ñ‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J´«Äæ";
+ Text[ arabic ] = "ÅÏÑÇÌ ÝÇÕá ÃÚãÏÉ";
+ Text[ greek ] = "ÅéóáãùãÞ áëëáãÞò óôÞëçò";
+ Text[ korean ] = "¿­ ³ª´©±â »ðÀÔ";
+ Text[ turkish ] = "Sütun sonu ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DELCOLBREAK
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Spaltenumbruch löschen : Spaltenumbruch l÷schen */
+ Text = "Spaltenumbruch löschen" ;
+ Text [ ENGLISH ] = "Delete Column Break " ;
+ Text [ norwegian ] = "Delete Column Break " ;
+ Text [ italian ] = "Elimina interruzione colonna" ;
+ Text [ portuguese_brazilian ] = "Apagar Quebra de Coluna" ;
+ Text [ portuguese ] = "Eliminar quebra de coluna" ;
+ Text [ finnish ] = "Poista sarakkeenvaihto" ;
+ Text [ danish ] = "Slet spalteskift" ;
+ Text [ french ] = "Supprimer le saut de colonne" ;
+ Text [ swedish ] = "Radera kolumnbrytning" ;
+ Text [ dutch ] = "Kolomeinde verwijderen" ;
+ Text [ spanish ] = "Eliminar salto de columna" ;
+ Text [ english_us ] = "Delete column break" ;
+ Text[ chinese_simplified ] = "ɾ³ý·ÖÁзû";
+ Text[ russian ] = "Óäàëèòü ðàçðûâ ñòîëáöîâ";
+ Text[ polish ] = "Usuñ podzia³ kolumny";
+ Text[ japanese ] = "‰ü—ñ‚ðíœ";
+ Text[ chinese_traditional ] = "§R°£´«Äæ";
+ Text[ arabic ] = "ÍÐÝ ÝæÇÕá ÇáÃÚãÏÉ";
+ Text[ greek ] = "ÄéáãñáöÞ áëëáãÞò óôÞëçò";
+ Text[ korean ] = "¿­ ³ª´©±â »èÁ¦";
+ Text[ turkish ] = "Sütun sonunu sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_INSROWBREAK
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilenumbruch einfügen : Zeilenumbruch einf³gen */
+ Text = "Zeilenumbruch einfügen" ;
+ Text [ ENGLISH ] = "Insert Row Break" ;
+ Text [ norwegian ] = "Insert Row Break" ;
+ Text [ italian ] = "Inserisci interruzione riga" ;
+ Text [ portuguese_brazilian ] = "Inserir Quebra de Fileira" ;
+ Text [ portuguese ] = "Inserir quebra de linha" ;
+ Text [ finnish ] = "Lisää rivinvaihto" ;
+ Text [ danish ] = "Indsæt linjeskift" ;
+ Text [ french ] = "Insérer un renvoi à la ligne" ;
+ Text [ swedish ] = "Infoga radbrytning" ;
+ Text [ dutch ] = "Rij-einde invoegen" ;
+ Text [ spanish ] = "Insertar salto de fila" ;
+ Text [ english_us ] = "Insert Row Break" ;
+ Text[ chinese_simplified ] = "²åÈë»»ÐÐ";
+ Text[ russian ] = "Âñòàâèòü ðàçðûâ ñòðîêè";
+ Text[ polish ] = "Wstaw podzia³ wierszy";
+ Text[ japanese ] = "‰üs‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J´«Äæ";
+ Text[ arabic ] = "ÅÏÑÇÌ ÝÇÕá ÕÝæÝ";
+ Text[ greek ] = "ÅéóáãùãÞ áëëáãÞò ãñáììÞò";
+ Text[ korean ] = "Çà ³ª´©±â »ðÀÔ";
+ Text[ turkish ] = "Satýr sonu ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DELROWBREAK
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilenumbruch löschen : Zeilenumbruch l÷schen */
+ Text = "Zeilenumbruch löschen" ;
+ Text [ ENGLISH ] = "Delete Row Break" ;
+ Text [ norwegian ] = "Delete Row Break" ;
+ Text [ italian ] = "Elimina interruzione riga" ;
+ Text [ portuguese_brazilian ] = "Apagar Quebra de Fileira" ;
+ Text [ portuguese ] = "Eliminar quebra de linha" ;
+ Text [ finnish ] = "Poista rivinvaihto" ;
+ Text [ danish ] = "Slet linjeskift" ;
+ Text [ french ] = "Supprimer le renvoi à la ligne" ;
+ Text [ swedish ] = "Radera radbrytning" ;
+ Text [ dutch ] = "Rij-einde verwijderen" ;
+ Text [ spanish ] = "Eliminar salto de fila" ;
+ Text [ english_us ] = "Delete row break" ;
+ Text[ chinese_simplified ] = "ɾ³ý»»Ðзû";
+ Text[ russian ] = "Óäàëèòü ðàçðûâ ñòðîê";
+ Text[ polish ] = "Usuñ podzia³ wierszy";
+ Text[ japanese ] = "‰üs‚Ìíœ";
+ Text[ chinese_traditional ] = "§R°£´«Äæ²Å";
+ Text[ arabic ] = "ÍÐÝ ÝÇÕá ÇáÃÓØÑ";
+ Text[ greek ] = "ÄéáãñáöÞ áëëáãÞò ãñáììÞò";
+ Text[ korean ] = "Ç⠺и® »èÁ¦";
+ Text[ turkish ] = "Satýr sonunu sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DOOUTLINE
+ {
+ Text = "Detail einblenden" ;
+ Text [ ENGLISH ] = "Open Outline" ;
+ Text [ norwegian ] = "Open Outline" ;
+ Text [ italian ] = "Mostra dettaglio" ;
+ Text [ portuguese_brazilian ] = "Abrir Esboço" ;
+ Text [ portuguese ] = "Mostrar detalhe" ;
+ Text [ finnish ] = "Avaa jäsennys" ;
+ Text [ danish ] = "Vis detaljer" ;
+ Text [ french ] = "Afficher les détails" ;
+ Text [ swedish ] = "Visa detalj" ;
+ Text [ dutch ] = "Details weergeven" ;
+ Text [ spanish ] = "Mostrar detalles" ;
+ Text [ english_us ] = "View Details" ;
+ Text[ chinese_simplified ] = "ÏÔʾϸ½Ú";
+ Text[ russian ] = "Ïîêàçàòü äåòàëè";
+ Text[ polish ] = "Poka¿ szczegó³y";
+ Text[ japanese ] = "Úׂð•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü²Ó¸`";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÊÝÇÕíá";
+ Text[ greek ] = "ÅìöÜíéóç ëåðôïìåñåéþí";
+ Text[ korean ] = "»ó¼¼ º¸±â";
+ Text[ turkish ] = "Ayrýntýlarý görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_REDOOUTLINE
+ {
+ Text = "Detail ausblenden" ;
+ Text [ ENGLISH ] = "Close Outline" ;
+ Text [ norwegian ] = "Close Outline" ;
+ Text [ italian ] = "Nascondi dettaglio" ;
+ Text [ portuguese_brazilian ] = "Fechar Esboço" ;
+ Text [ portuguese ] = "Ocultar detalhes" ;
+ Text [ finnish ] = "Sulje jäsennys" ;
+ Text [ danish ] = "Skjul detaljer" ;
+ Text [ french ] = "Masquer les détails" ;
+ Text [ swedish ] = "Dölj detalj" ;
+ Text [ dutch ] = "Details verbergen" ;
+ Text [ spanish ] = "Ocultar detalles" ;
+ Text [ english_us ] = "Hide details" ;
+ Text[ chinese_simplified ] = "ÒþÈëϸ½Ú";
+ Text[ russian ] = "Ñêðûòü äåòàëè";
+ Text[ polish ] = "Ukryj szczegó³y";
+ Text[ japanese ] = "Úׂð•\\Ž¦‚µ‚È‚¢";
+ Text[ chinese_traditional ] = "Áô¤J²Ó¸`";
+ Text[ arabic ] = "ÅÎÝÇÁ ÇáÊÝÇÕíá";
+ Text[ greek ] = "Áðüêñõøç ëåðôïìåñåéþí";
+ Text[ korean ] = "»ó¼¼ ¼û±â±â";
+ Text[ turkish ] = "Ayrýntýlarý gizle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_MAKEOUTLINE
+ {
+ Text = "Gruppierung" ;
+ Text [ ENGLISH ] = "Make Outline" ;
+ Text [ norwegian ] = "Make Outline" ;
+ Text [ italian ] = "Raggruppa" ;
+ Text [ portuguese_brazilian ] = "Criar Esboço" ;
+ Text [ portuguese ] = "Agrupar" ;
+ Text [ finnish ] = "Tee jäsennys" ;
+ Text [ danish ] = "Gruppering" ;
+ Text [ french ] = "Grouper" ;
+ Text [ swedish ] = "Gruppering" ;
+ Text [ dutch ] = "Groep" ;
+ Text [ spanish ] = "Agrupar" ;
+ Text [ english_us ] = "Group" ;
+ Text[ chinese_simplified ] = "·Ö×é";
+ Text[ russian ] = "Ãðóïïèðîâàòü";
+ Text[ polish ] = "Grupuj";
+ Text[ japanese ] = "¸ÞÙ°Ì߉»";
+ Text[ chinese_traditional ] = "¸s²Õ";
+ Text[ arabic ] = "ÇáÊÌãíÚ";
+ Text[ greek ] = "Ïìáäïðïßçóç";
+ Text[ korean ] = "±×·ì";
+ Text[ turkish ] = "Gruplama";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_REMAKEOUTLINE
+ {
+ Text = "Gruppierung aufheben" ;
+ Text [ ENGLISH ] = "Delete Outline" ;
+ Text [ norwegian ] = "Delete Outline" ;
+ Text [ italian ] = "Elimina struttura" ;
+ Text [ portuguese_brazilian ] = "Apagar Esboço" ;
+ Text [ portuguese ] = "Desagrupar" ;
+ Text [ finnish ] = "Poista jäsennys" ;
+ Text [ danish ] = "Ophæv gruppering" ;
+ Text [ french ] = "Dissocier" ;
+ Text [ swedish ] = "Upphäv gruppering" ;
+ Text [ dutch ] = "Groepering opheffen" ;
+ Text [ spanish ] = "Desagrupar" ;
+ Text [ english_us ] = "Ungroup" ;
+ Text[ chinese_simplified ] = "È¡Ïû·Ö×é";
+ Text[ russian ] = "Ðàçãðóïïèðîâàòü";
+ Text[ polish ] = "Rozgrupuj";
+ Text[ japanese ] = "¸ÞÙ°Ì߉ðœ";
+ Text[ chinese_traditional ] = "¨ú®ø¸s²Õ";
+ Text[ arabic ] = "ÅÒÇáÉ ÇáÊÌãíÚ";
+ Text[ greek ] = "ÊáôÜñãçóç ïìáäïðïßçóçò";
+ Text[ korean ] = "±×·ìÇØÁ¦";
+ Text[ turkish ] = "Grubu çöz";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_OUTLINELEVEL
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Gliederungsebene auswählen : Gliederungsebene auswõhlen */
+ Text = "Gliederungsebene auswählen" ;
+ Text [ ENGLISH ] = "Select Outline Level" ;
+ Text [ norwegian ] = "Select Outline Level" ;
+ Text [ italian ] = "Seleziona livello struttura" ;
+ Text [ portuguese_brazilian ] = "Selecionar Nível de Esboço" ;
+ Text [ portuguese ] = "Seleccionar nível de esquema" ;
+ Text [ finnish ] = "Valitse jäsennystaso" ;
+ Text [ danish ] = "Marker dispositionsniveau" ;
+ Text [ french ] = "Sélectionner niveau de plan" ;
+ Text [ swedish ] = "Välj dispositionsnivå" ;
+ Text [ dutch ] = "Overzichtsniveau kiezen" ;
+ Text [ spanish ] = "Seleccionar nivel del esquema" ;
+ Text [ english_us ] = "Select outline level" ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ´ó¸Ù¼¶";
+ Text[ russian ] = "Âûáðàòü óðîâåíü ñòðóêòðû";
+ Text[ polish ] = "Wybierz poziom konspektu";
+ Text[ japanese ] = "±³Äײ݂͈̔͑I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü¤jºõ¯Å";
+ Text[ arabic ] = "ÊÍÏíÏ ãÓÊæì ÇáÊÞÓíã";
+ Text[ greek ] = "ÅðéëïãÞ åðéðÝäïõ äéÜñèñùóçò";
+ Text[ korean ] = "¿Ü°û¼±ÀÇ ¼öÁØÀ» ¼±ÅÃÇϼ¼¿ä";
+ Text[ turkish ] = "Anahat düzeyini seç";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DOOUTLINEBLK
+ {
+ Text = "Detail einblenden" ;
+ Text [ ENGLISH ] = "Open Outline" ;
+ Text [ norwegian ] = "Open Outline" ;
+ Text [ italian ] = "Mostra dettaglio" ;
+ Text [ portuguese_brazilian ] = "Abrir Esboço" ;
+ Text [ portuguese ] = "Mostrar detalhe" ;
+ Text [ finnish ] = "Avaa jäsennys" ;
+ Text [ danish ] = "Vis detaljer" ;
+ Text [ french ] = "Afficher les détails" ;
+ Text [ swedish ] = "Visa detalj" ;
+ Text [ dutch ] = "Details weergeven" ;
+ Text [ spanish ] = "Mostrar detalles" ;
+ Text [ english_us ] = "View Details" ;
+ Text[ chinese_simplified ] = "ÏÔʾϸ½Ú";
+ Text[ russian ] = "Ïîêàçàòü äåòàëè";
+ Text[ polish ] = "Poka¿ szczegó³y";
+ Text[ japanese ] = "Úׂð•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü²Ó¸`";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÊÝÇÕíá";
+ Text[ greek ] = "ÅìöÜíéóç ëåðôïìåñåéþí";
+ Text[ korean ] = "»ó¼¼º¸±â";
+ Text[ turkish ] = "Ayrýntýlarý görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_REDOOUTLINEBLK
+ {
+ Text = "Detail ausblenden" ;
+ Text [ ENGLISH ] = "Close Outline" ;
+ Text [ norwegian ] = "Close Outline" ;
+ Text [ italian ] = "Nascondi dettaglio" ;
+ Text [ portuguese_brazilian ] = "Fechar Esboço" ;
+ Text [ portuguese ] = "Ocultar detalhes" ;
+ Text [ finnish ] = "Sulje jäsennys" ;
+ Text [ danish ] = "Skjul detaljer" ;
+ Text [ french ] = "Masquer les détails" ;
+ Text [ swedish ] = "Dölj detalj" ;
+ Text [ dutch ] = "Details verbergen" ;
+ Text [ spanish ] = "Ocultar detalles" ;
+ Text [ english_us ] = "Hide details" ;
+ Text[ chinese_simplified ] = "ÒþÈëϸ½Ú";
+ Text[ russian ] = "Ñêðûòü ïîäðîáíîñòè";
+ Text[ polish ] = "Ukryj szczegó³y";
+ Text[ japanese ] = "Úׂð•\\Ž¦‚µ‚È‚¢";
+ Text[ chinese_traditional ] = "Áô¤J²Ó¸`";
+ Text[ arabic ] = "ÅÎÝÇÁ ÇáÊÝÇÕíá";
+ Text[ greek ] = "Áðüêñõøç ëåðôïìåñåéþí";
+ Text[ korean ] = "»ó¼¼ ¼û±â±â";
+ Text[ turkish ] = "Ayrýntýlarý gizle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_REMOVEALLOTLNS
+ {
+ Text = "Gliederung entfernen" ;
+ Text [ ENGLISH ] = "Remove All Outlines" ;
+ Text [ norwegian ] = "Remove All Outlines" ;
+ Text [ italian ] = "Rimuovi tutte le strutture" ;
+ Text [ portuguese_brazilian ] = "Remover Todos os Vazados" ;
+ Text [ portuguese ] = "Remover esquema" ;
+ Text [ finnish ] = "Poista kaikki jäsennykset" ;
+ Text [ danish ] = "Fjern disposition" ;
+ Text [ french ] = "Supprimer le plan" ;
+ Text [ swedish ] = "Ta bort disposition" ;
+ Text [ dutch ] = "Overzicht verwijderen" ;
+ Text [ spanish ] = "Eliminar el esquema" ;
+ Text [ english_us ] = "Clear Outline" ;
+ Text[ chinese_simplified ] = "È¡Ïû´ó¸ÙÏÔʾ";
+ Text[ russian ] = "Óäàëèòü ñòðóêòóðó";
+ Text[ polish ] = "WyczyϾ konspekt";
+ Text[ japanese ] = "±³Äײ݂Ìíœ";
+ Text[ chinese_traditional ] = "¨ú®ø¤jºõÅã¥Ü";
+ Text[ arabic ] = "ÅÒÇáÉ ÇáÊÞÓíã";
+ Text[ greek ] = "ÊáôÜñãçóç äéÜñèñùóçò";
+ Text[ korean ] = "¿Ü°û¼± Áö¿ì±â";
+ Text[ turkish ] = "Anahatý kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_AUTOOUTLINE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? AutoGliederung : Auto-Gliederung */
+ Text = "AutoGliederung" ;
+ Text [ ENGLISH ] = "Auto Outline" ;
+ Text [ norwegian ] = "Auto Outline" ;
+ Text [ italian ] = "Struttura automatica" ;
+ Text [ portuguese_brazilian ] = "Auto Esboço" ;
+ Text [ portuguese ] = "AutoEsquema" ;
+ Text [ finnish ] = "Automaattijäsennys" ;
+ Text [ danish ] = "AutoDisposition" ;
+ Text [ french ] = "AutoPlan" ;
+ Text [ swedish ] = "AutoDisposition" ;
+ Text [ dutch ] = "AutoOverzicht" ;
+ Text [ spanish ] = "Esquema automático" ;
+ Text [ english_us ] = "AutoOutline" ;
+ Text[ chinese_simplified ] = "×Ô¶¯ÏÔʾ´ó¸Ù";
+ Text[ russian ] = "Àâòîñòðóêòóðà";
+ Text[ polish ] = "Autokonspekt";
+ Text[ japanese ] = "±³Äײ݂̎©“®ì¬";
+ Text[ chinese_traditional ] = "¦Û°ÊÅã¥Ü¤jºõ";
+ Text[ arabic ] = "ÊÞÓíã ÊáÞÇÆí";
+ Text[ greek ] = "ÁõôïÄéÜñèñùóç";
+ Text[ korean ] = "ÀÚµ¿ ¿Ü°û¼±";
+ Text[ turkish ] = "Otomatik anahat";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_SUBTOTALS
+ {
+ Text = "Teilergebnisse" ;
+ Text [ ENGLISH ] = "Subtotals" ;
+ Text [ norwegian ] = "Subtotals" ;
+ Text [ italian ] = "Subtotali" ;
+ Text [ portuguese_brazilian ] = "Sub-totais" ;
+ Text [ portuguese ] = "Subtotais" ;
+ Text [ finnish ] = "Välisummat" ;
+ Text [ danish ] = "Subtotaler" ;
+ Text [ french ] = "Sous-totaux" ;
+ Text [ swedish ] = "Delresultat" ;
+ Text [ dutch ] = "Subtotalen" ;
+ Text [ spanish ] = "Subtotales" ;
+ Text [ english_us ] = "Subtotals" ;
+ Text[ chinese_simplified ] = "·ÖÀà»ã×Ü";
+ Text[ russian ] = "Ïðîìåæóòî÷íûå èòîãè";
+ Text[ polish ] = "Sumy poœrednie";
+ Text[ japanese ] = "¬Œv";
+ Text[ chinese_traditional ] = "¤p­p";
+ Text[ arabic ] = "ÇáãÍÕáÇÊ ÇáÌÒÆíÉ";
+ Text[ greek ] = "ÌåñéêÜ áèñïßóìáôá";
+ Text[ korean ] = "¼Ò°è";
+ Text[ turkish ] = "Ara toplamlar";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_SORT
+ {
+ Text = "Sortieren" ;
+ Text [ ENGLISH ] = "Sort" ;
+ Text [ norwegian ] = "Sorter" ;
+ Text [ italian ] = "Ordina" ;
+ Text [ portuguese_brazilian ] = "Ordenar" ;
+ Text [ portuguese ] = "Ordenar" ;
+ Text [ finnish ] = "Lajittelu" ;
+ Text [ danish ] = "Sorter" ;
+ Text [ french ] = "Trier" ;
+ Text [ swedish ] = "Sortera" ;
+ Text [ dutch ] = "Sorteren" ;
+ Text [ spanish ] = "Ordenar" ;
+ Text [ english_us ] = "Sort" ;
+ Text[ chinese_simplified ] = "ÅÅÐò";
+ Text[ russian ] = "Ñîðòèðîâàòü";
+ Text[ polish ] = "Sortuj";
+ Text[ japanese ] = "•À‚בւ¦";
+ Text[ chinese_traditional ] = "±Æ§Ç";
+ Text[ arabic ] = "ÇáÝÑÒ";
+ Text[ greek ] = "Ôáîéíüìçóç";
+ Text[ korean ] = "Á¤·Ä";
+ Text[ turkish ] = "Sýrala";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_QUERY
+ {
+ Text = "Filtern" ;
+ Text [ ENGLISH ] = "Query" ;
+ Text [ norwegian ] = "Query" ;
+ Text [ italian ] = "Filtra" ;
+ Text [ portuguese_brazilian ] = "Consulta" ;
+ Text [ portuguese ] = "Filtro" ;
+ Text [ finnish ] = "Kysely" ;
+ Text [ danish ] = "Filtrer" ;
+ Text [ french ] = "Filtrer" ;
+ Text [ swedish ] = "Filtrera" ;
+ Text [ dutch ] = "Filteren" ;
+ Text [ spanish ] = "Filtrar" ;
+ Text [ english_us ] = "Filter" ;
+ Text[ chinese_simplified ] = "ɸѡ";
+ Text[ russian ] = "Ôèëüòð";
+ Text[ polish ] = "Filtr";
+ Text[ japanese ] = "̨ÙÀ";
+ Text[ chinese_traditional ] = "¿z¿ï";
+ Text[ arabic ] = "ÊÕÝíÉ";
+ Text[ greek ] = "ÖéëôñÜñéóìá";
+ Text[ korean ] = "ÇÊÅÍ";
+ Text[ turkish ] = "Filtrele";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DBDATA
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Datenbankbereiche ändern : Datenbankbereiche õndern */
+ Text = "Datenbankbereiche ändern" ;
+ Text [ ENGLISH ] = "Modify Database Arrea" ;
+ Text [ norwegian ] = "Modify Database Arrea" ;
+ Text [ italian ] = "Modifica aree database" ;
+ Text [ portuguese_brazilian ] = "Modificar Área da Base de Dados" ;
+ Text [ portuguese ] = "Modificar área da base de dados" ;
+ Text [ finnish ] = "Muokkaa tietokanta-aluetta" ;
+ Text [ danish ] = "Modificer databaseområde" ;
+ Text [ french ] = "Modifier plages de base de données" ;
+ Text [ swedish ] = "Ändra databasområden" ;
+ Text [ dutch ] = "Database-bereik wijzigen" ;
+ Text [ spanish ] = "Modificar área de base de datos" ;
+ Text [ english_us ] = "Change Database Range" ;
+ Text[ chinese_simplified ] = "¸ü¸ÄÊý¾Ý¿âÇøÓò";
+ Text[ russian ] = "Èçìåíèòü îáëàñòü áàçû äàííûõ";
+ Text[ polish ] = "Modyfikuj obszary bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½—̈æ‚Ì•ÏX";
+ Text[ chinese_traditional ] = "Åܧó¸ê®Æ®w°Ï°ì";
+ Text[ arabic ] = "ÊÚÏíá äØÇÞÇÊ ÞÇÚÏÉ ÈíÇäÇÊ";
+ Text[ greek ] = "ÁëëáãÞ ðåñéï÷þí âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ¿µ¿ª ¼öÁ¤";
+ Text[ turkish ] = "Veritabaný aralýklarýný deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_IMPORTDATA
+ {
+ Text = "Importieren" ;
+ Text [ ENGLISH ] = "Import Data" ;
+ Text [ norwegian ] = "Import Data" ;
+ Text [ italian ] = "Importa" ;
+ Text [ portuguese_brazilian ] = "Importar Dados" ;
+ Text [ portuguese ] = "Importar" ;
+ Text [ finnish ] = "Tuo tietoja" ;
+ Text [ danish ] = "Importerer" ;
+ Text [ french ] = "Importer" ;
+ Text [ swedish ] = "Importera" ;
+ Text [ dutch ] = "Importeren" ;
+ Text [ spanish ] = "Importar" ;
+ Text [ english_us ] = "Importing" ;
+ Text[ chinese_simplified ] = "ÊäÈë";
+ Text[ russian ] = "Èìïîðò";
+ Text[ polish ] = "Importuj";
+ Text[ japanese ] = "²ÝÎß°Ä";
+ Text[ chinese_traditional ] = "¿é¤J";
+ Text[ arabic ] = "ÇÓÊíÑÇÏ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "°¡Á®¿À±â";
+ Text[ turkish ] = "Ýçe aktar";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_REPEATDB
+ {
+ Text = "Bereich aktualisieren" ;
+ Text [ ENGLISH ] = "Refresh" ;
+ Text [ portuguese ] = "Actualizar dados" ;
+ Text [ english_us ] = "Refresh range" ;
+ Text [ portuguese_brazilian ] = "Rearranjar" ;
+ Text [ swedish ] = "Uppdatera område" ;
+ Text [ danish ] = "Opdater område" ;
+ Text [ italian ] = "Aggiorna area" ;
+ Text [ spanish ] = "Actualizar área" ;
+ Text [ french ] = "Actualiser la plage" ;
+ Text [ dutch ] = "Bereik actualiseren" ;
+ Text[ chinese_simplified ] = "¸üÐÂÇøÓò";
+ Text[ russian ] = "Îáíîâèòü îáëàñòü";
+ Text[ polish ] = "Aktualizuj obszar";
+ Text[ japanese ] = "”͈͂ÌXV";
+ Text[ chinese_traditional ] = "§ó·s°Ï°ì";
+ Text[ arabic ] = "ÊÍÏíË ÇáäØÇÞ";
+ Text[ greek ] = "ÁíáíÝùóç ðåñéï÷Þò";
+ Text[ korean ] = "¿µ¿ª »õ·Î°íħ";
+ Text[ turkish ] = "Aralýðý güncelle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_GRAFEDIT
+ {
+ Text = "Grafik bearbeiten" ;
+ Text [ ENGLISH ] = "Edit graphics" ;
+ Text [ dutch ] = "Afbeelding bewerken" ;
+ Text [ english_us ] = "Edit graphics" ;
+ Text [ italian ] = "Modifica immagine" ;
+ Text [ spanish ] = "Editar imagen" ;
+ Text [ french ] = "Modifier image" ;
+ Text [ swedish ] = "Redigera grafik" ;
+ Text [ danish ] = "Rediger grafik" ;
+ Text [ portuguese ] = "Editar imagem" ;
+ Text [ portuguese_brazilian ] = "Grafik bearbeiten" ;
+ Text[ chinese_simplified ] = "±à¼­Í¼ÐÎ";
+ Text[ russian ] = "Ïðàâêà ãðàôèêè";
+ Text[ polish ] = "Edytuj grafikê";
+ Text[ japanese ] = "}‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è¹Ï¤ù";
+ Text[ arabic ] = "ÊÍÑíÑ ÑÓæãÇÊ";
+ Text[ greek ] = "Åðåîåñãáóßá ãñáöéêïý";
+ Text[ korean ] = "±×·¡ÇÈ ÆíÁý";
+ Text[ turkish ] = "Grafik düzenle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_LISTNAMES
+ {
+ Text = "Namen auflisten" ;
+ Text [ ENGLISH ] = "List names" ;
+ Text [ english_us ] = "List names" ;
+ Text [ italian ] = "Elenca nomi" ;
+ Text [ spanish ] = "Alistar nombres" ;
+ Text [ french ] = "Liste des noms" ;
+ Text [ dutch ] = "Lijst namen weergeven" ;
+ Text [ swedish ] = "Lista upp namn" ;
+ Text [ danish ] = "Opstil navne" ;
+ Text [ portuguese ] = "Lista de nomes" ;
+ Text [ portuguese_brazilian ] = "Namen auflisten" ;
+ Text[ chinese_simplified ] = "ÁгöÃû³Æ";
+ Text[ russian ] = "Ñïèñîê èìåí";
+ Text[ polish ] = "Lista nazw";
+ Text[ japanese ] = "–¼‘OؽĂðì‚é";
+ Text[ chinese_traditional ] = "¦C¥X¦WºÙ";
+ Text[ arabic ] = "Úãá ÞÇÆãÉ ÈÇáÃÓãÇÁ";
+ Text[ greek ] = "Ëßóôá ïíïìÜôùí";
+ Text[ korean ] = "Ç׸ñ À̸§";
+ Text[ turkish ] = "Adlarý sýrala";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_PIVOT_NEW
+ {
+ Text = "Datenpilot-Tabelle anlegen" ;
+ Text [ ENGLISH ] = "Create Data Pilot Table" ;
+ Text [ english_us ] = "Create DataPilot Table" ;
+ Text [ italian ] = "Crea tabella di DataPilot" ;
+ Text [ spanish ] = "Crear tabla del Piloto de Datos" ;
+ Text [ french ] = "Créer une table DataPilote" ;
+ Text [ dutch ] = "DataPiloot-tabel maken" ;
+ Text [ swedish ] = "Skapa Datapilottabell" ;
+ Text [ danish ] = "Opret DataPilot-tabel" ;
+ Text [ portuguese ] = "Criar tabela do Piloto de Dados" ;
+ Text [ portuguese_brazilian ] = "Datenpilot-Tabelle anlegen" ;
+ Text[ chinese_simplified ] = "½¨Á¢Êý¾ÝÖúÀí¹¤×÷±í";
+ Text[ russian ] = "Ñîçäàòü ñâîäíóþ òàáëèöó";
+ Text[ polish ] = "Utwórz tabelê Pilota danych";
+ Text[ japanese ] = "ÃÞ°ÀÊß²Û¯Ä Ã°ÌÞÙ‚Ìì¬";
+ Text[ chinese_traditional ] = "«Ø¥ß¸ê®Æ§U²z¤u§@ªí";
+ Text[ arabic ] = "ÅäÔÇÁ ÌÏæá ãÑÔÏ ÈíÇäÇÊ";
+ Text[ greek ] = "Äçìéïõñãßá ðßíáêá ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ Å×ÀÌºí ¸¸µé±â";
+ Text[ turkish ] = "Veri pilotu tablosu oluþtur";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_PIVOT_MODIFY
+ {
+ Text = "Datenpilot-Tabelle bearbeiten" ;
+ Text [ ENGLISH ] = "Modify Data Pilot Table" ;
+ Text [ dutch ] = "DataPiloot-tabel bewerken" ;
+ Text [ english_us ] = "Edit DataPilot Table" ;
+ Text [ italian ] = "Modifica tabella di DataPilot" ;
+ Text [ spanish ] = "Modificar tabla del Piloto de Datos" ;
+ Text [ french ] = "Éditer la table DataPilote" ;
+ Text [ swedish ] = "Redigera Datapilottabell" ;
+ Text [ danish ] = "Rediger DataPilot-tabel" ;
+ Text [ portuguese ] = "Editar tabela do Piloto de Dados" ;
+ Text [ portuguese_brazilian ] = "Datenpilot-Tabelle bearbeiten" ;
+ Text[ chinese_simplified ] = "±à¼­Êý¾ÝÖúÀí¹¤×÷±í";
+ Text[ russian ] = "Èçìåíèòü ñâîäíóþ òàáëèöó";
+ Text[ polish ] = "Edytuj tabelê Pilota danych";
+ Text[ japanese ] = "ÃÞ°ÀÊß²Û¯Ä Ã°ÌÞÙ‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è¸ê®Æ§U²z¤u§@ªí";
+ Text[ arabic ] = "ÊÍÑíÑ ÌÏæá ãÑÔÏ ÇáÈíÇäÇÊ ÇáÂáí";
+ Text[ greek ] = "Åðåîåñãáóßá ðßíáêá ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ Å×ÀÌºí ¼öÁ¤";
+ Text[ turkish ] = "Veri pilotu tablosunu düzenle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_PIVOT_DELETE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Datenpilot-Tabelle löschen : Datenpilot-Tabelle l÷schen */
+ Text = "Datenpilot-Tabelle löschen" ;
+ Text [ ENGLISH ] = "Delete Data Pilot Table" ;
+ Text [ dutch ] = "DataPiloot-tabel wissen" ;
+ Text [ english_us ] = "Delete DataPilot Table" ;
+ Text [ italian ] = "Elimina tabella di DataPilot" ;
+ Text [ spanish ] = "Eliminar tabla del Piloto de Datos" ;
+ Text [ french ] = "Supprimer la table du DataPilote" ;
+ Text [ swedish ] = "Radera Datapilottabell" ;
+ Text [ danish ] = "Slet DataPilot-tabel" ;
+ Text [ portuguese ] = "Eliminar tabela do Piloto de Dados" ;
+ Text [ portuguese_brazilian ] = "Datenpilot-Tabelle löschen" ;
+ Text[ chinese_simplified ] = "ɾ³ýÊý¾ÝÖúÀí-¹¤×÷±í";
+ Text[ russian ] = "Óäàëèòü ñâîäíóþ òàáëèöó";
+ Text[ polish ] = "Usuñ tabelê Pilota danych";
+ Text[ japanese ] = "ÃÞ°ÀÊ߲ۯĂÌðÌÞÙ‚ðíœ";
+ Text[ chinese_traditional ] = "§R°£¸ê®Æ§U²z¤u§@ªí";
+ Text[ arabic ] = "ÍÐÝ ÌÏæá ãÑÔÏ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÄéáãñáöÞ ðßíáêá ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ Å×ÀÌºí »èÁ¦";
+ Text[ turkish ] = "Veri pilotu tablosunu sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_CONSOLIDATE
+ {
+ Text = "Konsolidieren" ;
+ Text [ ENGLISH ] = "Consolidate" ;
+ Text [ dutch ] = "Consolideren" ;
+ Text [ english_us ] = "Consolidate" ;
+ Text [ italian ] = "Consolida" ;
+ Text [ spanish ] = "Consolidar" ;
+ Text [ french ] = "Consolider" ;
+ Text [ swedish ] = "Konsolidera" ;
+ Text [ danish ] = "Konsolider" ;
+ Text [ portuguese ] = "Consolidar" ;
+ Text [ portuguese_brazilian ] = "Konsolidieren" ;
+ Text[ chinese_simplified ] = "ºÏ²¢¼ÆËã";
+ Text[ russian ] = "Êîíñîëèäàöèÿ";
+ Text[ polish ] = "Konsoliduj";
+ Text[ japanese ] = "“‡";
+ Text[ chinese_traditional ] = "¦X¨Ö­pºâ";
+ Text[ arabic ] = "ÏãÌ";
+ Text[ greek ] = "Åíïðïßçóç";
+ Text[ korean ] = "ÅëÇÕ";
+ Text[ turkish ] = "Birleþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_USESCENARIO
+ {
+ Text = "Szenario anwenden" ;
+ Text [ ENGLISH ] = "Use scenario" ;
+ Text [ dutch ] = "Scenario gebruiken" ;
+ Text [ english_us ] = "Use scenario" ;
+ Text [ italian ] = "Applica scenario" ;
+ Text [ spanish ] = "Aplicar escenario" ;
+ Text [ french ] = "Utiliser scénario" ;
+ Text [ swedish ] = "Använd scenario" ;
+ Text [ danish ] = "Anvend scenarie" ;
+ Text [ portuguese ] = "Aplicar cenário" ;
+ Text [ portuguese_brazilian ] = "Szenario anwenden" ;
+ Text[ chinese_simplified ] = "ʹÓ÷½°¸";
+ Text[ russian ] = "Ïðèìåíèòü ñöåíàðèé";
+ Text[ polish ] = "U¿yj scenariusza";
+ Text[ japanese ] = "¼Åص‚Ì“K—p";
+ Text[ chinese_traditional ] = "¨Ï¥Î¤è®×";
+ Text[ arabic ] = "ÇÓÊÎÏÇã ÇáÓíäÇÑíæ";
+ Text[ greek ] = "ÅöáñìïãÞ óåíáñßïõ";
+ Text[ korean ] = "½Ã³ª¸®¿À »ç¿ë";
+ Text[ turkish ] = "Senaryoyu uygula";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_MAKESCENARIO
+ {
+ Text = "Szenario anlegen" ;
+ Text [ ENGLISH ] = "Make scenario" ;
+ Text [ dutch ] = "Scenario maken" ;
+ Text [ english_us ] = "Create scenario" ;
+ Text [ italian ] = "Crea scenario" ;
+ Text [ spanish ] = "Crear escenario" ;
+ Text [ french ] = "Créer scénario" ;
+ Text [ swedish ] = "Skapa scenario" ;
+ Text [ danish ] = "Opret scenarie" ;
+ Text [ portuguese ] = "Criar cenário" ;
+ Text [ portuguese_brazilian ] = "Szenario anlegen" ;
+ Text[ chinese_simplified ] = "½¨Á¢·½°¸";
+ Text[ russian ] = "Ñîçäàòü ñöåíàðèé";
+ Text[ polish ] = "Utwórz scenariusz";
+ Text[ japanese ] = "¼Åص‚Ìì¬";
+ Text[ chinese_traditional ] = "«Ø¥ß¤è®×";
+ Text[ arabic ] = "ÅäÔÇÁ ÓíäÇÑíæ";
+ Text[ greek ] = "Äçìéïõñãßá óåíáñßïõ";
+ Text[ korean ] = "½Ã³ª¸®¿À ¸¸µé±â";
+ Text[ turkish ] = "Senaryo oluþtur";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_EDITSCENARIO
+ {
+ Text = "Szenario bearbeiten" ;
+ Text [ ENGLISH ] = "Edit scenario" ;
+ Text [ portuguese ] = "Editar cenário" ;
+ Text [ english_us ] = "Edit scenario" ;
+ Text [ portuguese_brazilian ] = "Szenario bearbeiten" ;
+ Text [ swedish ] = "Redigera scenario" ;
+ Text [ danish ] = "Rediger scenarie" ;
+ Text [ italian ] = "Modifica scenario" ;
+ Text [ spanish ] = "Editar escenario" ;
+ Text [ french ] = "Modifier scénario" ;
+ Text [ dutch ] = "Scenario bewerken" ;
+ Text[ chinese_simplified ] = "±à¼­·½°¸";
+ Text[ russian ] = "Èçìåíåíèå ñöåíàðèÿ";
+ Text[ polish ] = "Edytuj scenariusz";
+ Text[ japanese ] = "¼Åص‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è¤è®×";
+ Text[ arabic ] = "ÊÍÑíÑ ÓíäÇÑíæ";
+ Text[ greek ] = "Åðåîåñãáóßá óåíáñßïõ";
+ Text[ korean ] = "½Ã³ª¸®¿À ÆíÁý";
+ Text[ turkish ] = "Senaryoyu düzenle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_APPLYCELLSTYLE
+ {
+ Text = "Zellvorlage anwenden" ;
+ Text [ ENGLISH ] = "Apply cell style" ;
+ Text [ english_us ] = "Apply Cell Style" ;
+ Text [ italian ] = "Applica modello di cella" ;
+ Text [ spanish ] = "Aplicar estilo de celda" ;
+ Text [ french ] = "Appliquer un style de cellule" ;
+ Text [ dutch ] = "Celopmaakprofiel gebruiken" ;
+ Text [ swedish ] = "Använd cellmall" ;
+ Text [ danish ] = "Anvend celletypografi" ;
+ Text [ portuguese ] = "Aplicar estilo de célula" ;
+ Text [ portuguese_brazilian ] = "Zellvorlage anwenden" ;
+ Text[ chinese_simplified ] = "ʹÓõ¥Ôª¸ñÑùʽ";
+ Text[ russian ] = "Ïðèìåíèòü ñòèëü ÿ÷åéêè";
+ Text[ polish ] = "Zastosuj styl komórki";
+ Text[ japanese ] = "¾Ù½À²Ù‚Ì“K—p";
+ Text[ chinese_traditional ] = "¨Ï¥ÎÀx¦s®æ¼Ë¦¡";
+ Text[ arabic ] = "ÇÓÊÎÏÇã äãØ ÎáíÉ";
+ Text[ greek ] = "ÅöáñìïãÞ óôõë êåëéþí";
+ Text[ korean ] = "¼¿ À¯Çü Àû¿ë";
+ Text[ turkish ] = "Hücre biçimini uygula";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_EDITCELLSTYLE
+ {
+ Text = "Zellvorlage bearbeiten" ;
+ Text [ ENGLISH ] = "Edit cell style" ;
+ };
+ String STR_UNDO_APPLYPAGESTYLE
+ {
+ Text = "Seitenvorlage anwenden" ;
+ Text [ ENGLISH ] = "Apply page style" ;
+ };
+ String STR_UNDO_EDITPAGESTYLE
+ {
+ Text = "Seitenvorlage bearbeiten" ;
+ Text [ ENGLISH ] = "Edit page style" ;
+ };
+ String STR_UNDO_DETADDPRED
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum Vorgänger : Spur zum Vorgõnger */
+ Text = "Spur zum Vorgänger" ;
+ Text [ ENGLISH ] = "Trace Predescessor" ;
+ Text [ english_us ] = "Trace Precedents" ;
+ Text [ italian ] = "Individua ~precedenti" ;
+ Text [ spanish ] = "Rastro a los precedentes" ;
+ Text [ french ] = "Repérer les antécédents" ;
+ Text [ dutch ] = "Spoor naar voorganger" ;
+ Text [ swedish ] = "Spår till föregångaren" ;
+ Text [ danish ] = "Spor overordnede" ;
+ Text [ portuguese ] = "Analisar precedentes" ;
+ Text [ portuguese_brazilian ] = "Spur zum Vorgänger" ;
+ Text[ chinese_simplified ] = "ÏòÇ°µÄ×·×Ù¼ýÍ·";
+ Text[ russian ] = "Âëèÿþùèå îøèáêè";
+ Text[ polish ] = "ŒledŸ poprzedniki";
+ Text[ japanese ] = "ŽQÆŒ³ÄÚ°½";
+ Text[ chinese_traditional ] = "¤W¤@­ÓÀx¦s®æ°lÂܽb¸¹";
+ Text[ arabic ] = "ÊÊÈÚ ÃËÑ ÇáÓÇÈÞ";
+ Text[ greek ] = "º÷íïò ðñïçãïýìåíïõ";
+ Text[ korean ] = "¼±·Ê ÃßÀû";
+ Text[ turkish ] = "Öncekini izle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DETDELPRED
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum Vorgänger entfernen : Spur zum Vorgõnger entfernen */
+ Text = "Spur zum Vorgänger entfernen" ;
+ Text [ ENGLISH ] = "Remove Predescessor" ;
+ Text [ english_us ] = "Remove Precedent" ;
+ Text [ italian ] = "Rimuovi traccia sul precedente" ;
+ Text [ spanish ] = "Rastro al precedente" ;
+ Text [ french ] = "Supprimer le repérage des antécédents" ;
+ Text [ dutch ] = "Spoor naar voorganger verwijderen" ;
+ Text [ swedish ] = "Ta bort spår till föregångaren" ;
+ Text [ danish ] = "Fjern spor til overordnede" ;
+ Text [ portuguese ] = "Remover precedentes" ;
+ Text [ portuguese_brazilian ] = "Spur zum Vorgänger entfernen" ;
+ Text[ chinese_simplified ] = "ɾ³ýÏòÇ°µÄ×·×Ù¼ýÍ·";
+ Text[ russian ] = "Óäàëèòü âëèÿþùèå ÿ÷åéêè";
+ Text[ polish ] = "Usuñ strza³ki poprzedników";
+ Text[ japanese ] = "ŽQÆæÄÚ°½‚Ìíœ";
+ Text[ chinese_traditional ] = "§R°£¤W¤@­ÓÀx¦s®æ°lÂܽb¸¹";
+ Text[ arabic ] = "ãÍæ ÃËÑ ÇáÓÇÈÞ";
+ Text[ greek ] = "ÊáôÜñãçóç ß÷íïò ðñïçãïýìåíïõ";
+ Text[ korean ] = "¼±·Ê »èÁ¦";
+ Text[ turkish ] = "Öncekinin izini sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DETADDSUCC
+ {
+ Text = "Spur zum Nachfolger" ;
+ Text [ ENGLISH ] = "Trace Successor" ;
+ Text [ dutch ] = "Spoor naar opvolger" ;
+ Text [ english_us ] = "Trace Dependents" ;
+ Text [ italian ] = "Individua ~dipendenti" ;
+ Text [ spanish ] = "Rastro al sucesor" ;
+ Text [ french ] = "Repérer les dépendants" ;
+ Text [ swedish ] = "Spår till efterträdaren" ;
+ Text [ danish ] = "Spor underordnede" ;
+ Text [ portuguese ] = "Analisar dependentes" ;
+ Text [ portuguese_brazilian ] = "Spur zum Nachfolger" ;
+ Text[ chinese_simplified ] = "ÏòºóµÄ×·×Ù¼ýÍ·";
+ Text[ russian ] = "Çàâèñèìûå ÿ÷åéêè";
+ Text[ polish ] = "ŒledŸ zale¿noœci";
+ Text[ japanese ] = "ŽQÆæÄÚ°½";
+ Text[ chinese_traditional ] = "¤U¤@­ÓÀx¦s®æ°lÂܽb¸¹";
+ Text[ arabic ] = "ÊÊÈÚ ÃËÑ ÇááÇÍÞ";
+ Text[ greek ] = "º÷íïò ðñïò ôï åðüìåíï";
+ Text[ korean ] = "Á¾¼Ó ÃßÀû";
+ Text[ turkish ] = "Sonrakini izle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DETDELSUCC
+ {
+ Text = "Spur zum Nachfolger entfernen" ;
+ Text [ ENGLISH ] = "Remove Successor" ;
+ Text [ english_us ] = "Remove Dependent" ;
+ Text [ italian ] = "Rimuovi ~freccia sul dipendente" ;
+ Text [ spanish ] = "Eliminar rastro al sucesor" ;
+ Text [ french ] = "Supprimer repérage des dépendants" ;
+ Text [ dutch ] = "Spoor naar opvolger verwijderen" ;
+ Text [ swedish ] = "Ta bort spår till efterträdaren" ;
+ Text [ danish ] = "Fjern spor til underordnede" ;
+ Text [ portuguese ] = "Remover dependentes" ;
+ Text [ portuguese_brazilian ] = "Spur zum Nachfolger entfernen" ;
+ Text[ chinese_simplified ] = "ɾ³ýÏòºóµÄ×·×Ù¼ýÍ·";
+ Text[ russian ] = "Óäàëèòü çàâèñèìûå ÿ÷åéêè";
+ Text[ polish ] = "Usuñ zale¿noœci";
+ Text[ japanese ] = "ŽQÆŒ³ÄÚ°½‚Ìíœ";
+ Text[ chinese_traditional ] = "§R°£¤U¤@­ÓÀx¦s®æ°lÂܽb¸¹";
+ Text[ arabic ] = "ãÍæ ÃËÑ ÇááÇÍÞ";
+ Text[ greek ] = "ÊáôÜñãçóç ß÷íïõò ðñïò åðüìåíï";
+ Text[ korean ] = "Á¾¼Ó »èÁ¦";
+ Text[ turkish ] = "Sonrakinin izini sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DETADDERROR
+ {
+ Text = "Spur zum Fehler" ;
+ Text [ ENGLISH ] = "Trace Error" ;
+ Text [ dutch ] = "Spoor naar fout" ;
+ Text [ english_us ] = "Trace Error" ;
+ Text [ italian ] = "Individua ~errore" ;
+ Text [ spanish ] = "Rastro al error" ;
+ Text [ french ] = "Repérer une erreur" ;
+ Text [ swedish ] = "Spår till fel" ;
+ Text [ danish ] = "Spor fejl" ;
+ Text [ portuguese ] = "Analisar erro" ;
+ Text [ portuguese_brazilian ] = "Spur zum Fehler" ;
+ Text[ chinese_simplified ] = "Ö¸Ïò´íÎóµÄ×·×Ù¼ýÍ·";
+ Text[ russian ] = "Èñòî÷íèê îøèáêè";
+ Text[ polish ] = "ŒledŸ b³êdy";
+ Text[ japanese ] = "´×°‚ÌÄÚ°½";
+ Text[ chinese_traditional ] = "°lÂÜ¿ù»~";
+ Text[ arabic ] = "ÊÊÈÚ ÃËÑ ÇáÎØÃ";
+ Text[ greek ] = "º÷íïò ðñïò ôï óöÜëìá";
+ Text[ korean ] = "ÃßÀû ¿À·ù";
+ Text[ turkish ] = "Hatayý izle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DETDELALL
+ {
+ Text = "Alle Spuren entfernen" ;
+ Text [ ENGLISH ] = "Remove all Traces" ;
+ Text [ english_us ] = "Remove all Traces" ;
+ Text [ italian ] = "Rimuovi tutte le tracce" ;
+ Text [ spanish ] = "Eliminar todos los rastros" ;
+ Text [ french ] = "Supprimer tous les repères" ;
+ Text [ dutch ] = "Alle sporen verwijderen" ;
+ Text [ swedish ] = "Ta bort alla spår" ;
+ Text [ danish ] = "Fjern alle spor" ;
+ Text [ portuguese ] = "Remover todas as setas" ;
+ Text [ portuguese_brazilian ] = "Alle Spuren entfernen" ;
+ Text[ chinese_simplified ] = "ɾ³ýÈ«²¿µÄ×·×Ù¼ýÍ·";
+ Text[ russian ] = "Óáðàòü âñå ñòðåëêè";
+ Text[ polish ] = "Usuñ wszystkie strza³ki";
+ Text[ japanese ] = "‘S‚Ä‚ÌÄÚ°½‚ðíœ";
+ Text[ chinese_traditional ] = "§R°£¥þ³¡Àx¦s®æ°lÂܽb¸¹";
+ Text[ arabic ] = "ãÍæ ßá ÇáÂËÇÑ";
+ Text[ greek ] = "ÄéáãñáöÞ üëùí ôùí é÷íþí";
+ Text[ korean ] = "¸ðµç ÃßÀû Áö¿ì±â";
+ Text[ turkish ] = "Tüm izleri sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DETINVALID
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültige Daten einkreisen : Ung³ltige Daten einkreisen */
+ Text = "Ungültige Daten einkreisen" ;
+ Text [ ENGLISH ] = "Mark invalid data" ;
+ Text [ dutch ] = "Ongeldige gegevens markeren" ;
+ Text [ english_us ] = "Mark invalid data" ;
+ Text [ italian ] = "Evidenzia i dati non validi" ;
+ Text [ spanish ] = "Marcar los datos no válidos" ;
+ Text [ french ] = "Marquer les données incorrectes" ;
+ Text [ swedish ] = "Markera ogiltiga data" ;
+ Text [ danish ] = "Marker ugyldige data" ;
+ Text [ portuguese ] = "Marcar dados não válidos" ;
+ Text [ portuguese_brazilian ] = "Ungültige Daten einkreisen" ;
+ Text[ chinese_simplified ] = "±ê¼ÇÎÞЧµÄÊý¾Ý";
+ Text[ russian ] = "Ïîìå÷àòü íåäîïóñòèìûå äàííûå";
+ Text[ polish ] = "Zaznacz kó³kiem nieprawid³owe dane";
+ Text[ japanese ] = "–³Œø‚ÈÃÞ°À‚ðˆÍ‚Þ";
+ Text[ chinese_traditional ] = "¼Ð°OµL®Äªº¸ê®Æ";
+ Text[ arabic ] = "æÖÚ ÚáÇãÉ Úáì ÇáÈíÇäÇÊ ÇáÛíÑ ÕÇáÍÉ";
+ Text[ greek ] = "ÓÞìáíóç (ìå êýêëï) ìç Ýãêõñùí äåäïìÝíùí";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº µ¥ÀÌŸ Ç¥±â";
+ Text[ turkish ] = "Geçersiz verileri iþaretle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DETREFRESH
+ {
+ Text = "Spuren aktualisieren" ;
+ Text [ ENGLISH ] = "Refresh Traces" ;
+ Text [ portuguese ] = "Actualizar setas" ;
+ Text [ english_us ] = "Refresh Traces" ;
+ Text [ portuguese_brazilian ] = "Spuren aktualisieren" ;
+ Text [ swedish ] = "Uppdatera spår" ;
+ Text [ danish ] = "Opdater spor" ;
+ Text [ italian ] = "Aggiorna tracce" ;
+ Text [ spanish ] = "Actualizar rastros" ;
+ Text [ french ] = "Actualiser les repères" ;
+ Text [ dutch ] = "Sporen actualiseren" ;
+ Text[ chinese_simplified ] = "¸üÐÂ×·×Ù¼ýÍ·";
+ Text[ russian ] = "Îáíîâèòü ñòðåëêè";
+ Text[ polish ] = "Aktualizuj œlady";
+ Text[ japanese ] = "ÄÚ°½‚ÌXV";
+ Text[ chinese_traditional ] = "§ó·s°lÂܽb¸¹";
+ Text[ arabic ] = "ÊÍÏíË ÇáÂËÇÑ";
+ Text[ greek ] = "ÁíáíÝùóç é÷íþí";
+ Text[ korean ] = "ÃßÀû ÃֽŠÁ¤º¸·Î °íħ";
+ Text[ turkish ] = "Ýzleri güncelle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_CHARTDATA
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Datenbereich von Diagramm ändern : Datenbereich von Diagramm õndern */
+ Text = "Datenbereich von Diagramm ändern" ;
+ Text [ ENGLISH ] = "Modify Chart" ;
+ Text [ dutch ] = "Gegevensbereik van diagram veranderen" ;
+ Text [ english_us ] = "Modify chart data range" ;
+ Text [ italian ] = "Modifica area dati del diagramma" ;
+ Text [ spanish ] = "Modificar área de datos del diagrama" ;
+ Text [ french ] = "Modifier plage de données du diagramme" ;
+ Text [ swedish ] = "Ändra diagramets dataområde" ;
+ Text [ danish ] = "Modificer diagrammets dataområde" ;
+ Text [ portuguese ] = "Alterar área de dados do gráfico" ;
+ Text [ portuguese_brazilian ] = "Datenbereich von Diagramm ändern" ;
+ Text[ chinese_simplified ] = "¸ü¸Äͼ±íÊý¾ÝÇøÓò";
+ Text[ russian ] = "Èçìåíèòü îáëàñòü äàííûõ äèàãðàììû";
+ Text[ polish ] = "Modyfikuj obszar danych w diagramie";
+ Text[ japanese ] = "¸Þ×Ì‚ÌÃÞ°À”͈͂ð•ÏX";
+ Text[ chinese_traditional ] = "Åܧó¹Ïªí¸ê®Æ°Ï°ì";
+ Text[ arabic ] = "ÊÚÏíá äØÇÞ ÇáÈíÇäÇÊ ÇáÎÇÕ ÈÑÓã ÈíÇäí";
+ Text[ greek ] = "ÁëëáãÞ ðåñéï÷Þò äåäïìÝíùí ôïõ äéáãñÜììáôïò";
+ Text[ korean ] = "Â÷Æ® µ¥ÀÌÅÍ ¿µ¿ª ¼öÁ¤";
+ Text[ turkish ] = "Þemanýn veri aralýðýný deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_ORIGINALSIZE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Originalgröße : Originalgr÷˜e */
+ Text = "Originalgröße" ;
+ Text [ ENGLISH ] = "Real Size" ;
+ Text [ norwegian ] = "Real Size" ;
+ Text [ italian ] = "Dimensione originale" ;
+ Text [ portuguese_brazilian ] = "Tamanho real" ;
+ Text [ portuguese ] = "Tamanho real" ;
+ Text [ finnish ] = "Todellinen koko" ;
+ Text [ danish ] = "Oprindelig størrelse" ;
+ Text [ french ] = "Taille d'origine" ;
+ Text [ swedish ] = "Orginalstorlek" ;
+ Text [ dutch ] = "Originele grootte" ;
+ Text [ spanish ] = "Tamaño original" ;
+ Text [ english_us ] = "Original Size" ;
+ Text[ chinese_simplified ] = "Ô­¼þ´óС";
+ Text[ russian ] = "Èñõîäíûé ðàçìåð";
+ Text[ polish ] = "Rozmiar oryginalny";
+ Text[ japanese ] = "Œ³‚Ì‘å‚«‚³";
+ Text[ chinese_traditional ] = "­ì¥ó¤j¤p";
+ Text[ arabic ] = "ÇáÍÌã ÇáÃÕáí";
+ Text[ greek ] = "Áñ÷éêü ìÝãåèïò";
+ Text[ korean ] = "¿ø·¡ Å©±â";
+ Text[ turkish ] = "Gerçek boyut";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_UPDATELINK
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Verknüpfung aktualisieren : Verkn³pfung aktualisieren */
+ Text = "Verknüpfung aktualisieren" ;
+ Text [ ENGLISH ] = "Update Link" ;
+ Text [ english_us ] = "Update Link" ;
+ Text [ italian ] = "Aggiorna i collegamenti" ;
+ Text [ spanish ] = "Actualizar vínculo" ;
+ Text [ french ] = "Actualiser le lien" ;
+ Text [ dutch ] = "Koppeling actualiseren" ;
+ Text [ swedish ] = "Uppdatera länk" ;
+ Text [ danish ] = "Opdater kæde" ;
+ Text [ portuguese ] = "Actualizar ligação" ;
+ Text [ portuguese_brazilian ] = "Verknüpfung aktualisieren" ;
+ Text[ chinese_simplified ] = "¸üÐÂÁ´½Ó";
+ Text[ russian ] = "Îáíîâèòü ññûëêó";
+ Text[ polish ] = "Aktualizuj ³¹cza";
+ Text[ japanese ] = "Øݸ‚ÌXV";
+ Text[ chinese_traditional ] = "§ó·s±¶®|";
+ Text[ arabic ] = "ÊÍÏíË ÇáÇÑÊÈÇØ";
+ Text[ greek ] = "ÅíçìÝñùóç óýíäåóçò";
+ Text[ korean ] = "¿¬°á ¾÷ µ¥ÀÌÆ®";
+ Text[ turkish ] = "Baðlantýyý güncelle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_REMOVELINK
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Verknüpfung aufheben : Verkn³pfung aufheben */
+ Text = "Verknüpfung aufheben" ;
+ Text [ ENGLISH ] = "Remove Link" ;
+ Text [ dutch ] = "Koppeling opheffen" ;
+ Text [ english_us ] = "Unlink" ;
+ Text [ italian ] = "Rimuovi i collegamenti" ;
+ Text [ spanish ] = "Eliminar vínculo" ;
+ Text [ french ] = "Supprimer le lien" ;
+ Text [ swedish ] = "Upphäv länk" ;
+ Text [ danish ] = "Ophæv kæde" ;
+ Text [ portuguese ] = "Remover ligação" ;
+ Text [ portuguese_brazilian ] = "Verknüpfung aufheben" ;
+ Text[ chinese_simplified ] = "È¡ÏûÁ´½Ó";
+ Text[ russian ] = "Óáðàòü ññûëêó";
+ Text[ polish ] = "Usuñ ³¹cze";
+ Text[ japanese ] = "Øݸ‚̉ðœ";
+ Text[ chinese_traditional ] = "¨ú®ø±¶®|";
+ Text[ arabic ] = "ÅÒÇáÉ ÇáÇÑÊÈÇØ";
+ Text[ greek ] = "ÊáôÜñãçóç óýíäåóçò";
+ Text[ korean ] = "¿¬°á »èÁ¦";
+ Text[ turkish ] = "Baðlantýyý kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_INSERTAREALINK
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Verknüpfung einfügen : Verkn³pfung einf³gen */
+ Text = "Verknüpfung einfügen" ;
+ Text [ ENGLISH ] = "Insert Link" ;
+ Text [ dutch ] = "Koppeling invoegen" ;
+ Text [ english_us ] = "Insert Link" ;
+ Text [ italian ] = "Inserisci collegamento" ;
+ Text [ spanish ] = "Insertar vínculo" ;
+ Text [ french ] = "Insérer un lien" ;
+ Text [ swedish ] = "Infoga länk" ;
+ Text [ danish ] = "Indsæt kæde" ;
+ Text [ portuguese ] = "Inserir ligação" ;
+ Text [ portuguese_brazilian ] = "Verknüpfung einfügen" ;
+ Text[ chinese_simplified ] = "²åÈëÁ´½Ó";
+ Text[ russian ] = "Âñòàâèòü ññûëêó";
+ Text[ polish ] = "Wstaw ³¹cze";
+ Text[ japanese ] = "Øݸ‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J±¶®|";
+ Text[ arabic ] = "ÅÏÑÇÌ ÇÑÊÈÇØ";
+ Text[ greek ] = "ÅéóáãùãÞ óýíäåóçò";
+ Text[ korean ] = "¿¬°á »ðÀÔ";
+ Text[ turkish ] = "Baðlantý ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_ENTERMATRIX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Matrixformel einfügen : Matrixformel einf³gen */
+ Text = "Matrixformel einfügen" ;
+ Text [ ENGLISH ] = "Insert Matrix Formula" ;
+ Text [ dutch ] = "Matrixformule invoegen" ;
+ Text [ english_us ] = "Insert Matrix Formula" ;
+ Text [ italian ] = "Inserisci formula di matrice" ;
+ Text [ spanish ] = "Insertar fórmula matriz" ;
+ Text [ french ] = "Insérer une formule de matrice" ;
+ Text [ swedish ] = "Infoga matrixformel" ;
+ Text [ danish ] = "Indsæt matrixformel" ;
+ Text [ portuguese ] = "Inserir fórmula matriz" ;
+ Text [ portuguese_brazilian ] = "Matrixformel einfügen" ;
+ Text[ chinese_simplified ] = "²åÈë¾ØÕó¹«Ê½";
+ Text[ russian ] = "Âñòàâèòü ôîðìóëó ìàññèâà";
+ Text[ polish ] = "Wstaw formu³ê macierzy";
+ Text[ japanese ] = "ÏÄظ½”Ž®‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¯x°}¤½¦¡";
+ Text[ arabic ] = "ÅÏÑÇÌ ÕíÛÉ ãÕÝæÝÉ";
+ Text[ greek ] = "ÅéóáãùãÞ ôýðïõ ðéíÜêùí";
+ Text[ korean ] = "Çà·Ä ¼ö½Ä »ðÀÔ";
+ Text[ turkish ] = "Matris formulü ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_SHOWNOTE
+ {
+ Text = "Notiz anzeigen" ;
+ Text [ ENGLISH ] = "Show Note" ;
+ Text [ dutch ] = "Aantekening weergeven" ;
+ Text [ english_us ] = "Show Note" ;
+ Text [ swedish ] = "Visa anteckning" ;
+ Text [ danish ] = "Vis note" ;
+ Text [ italian ] = "Mostra nota" ;
+ Text [ spanish ] = "Mostrar nota" ;
+ Text [ french ] = "Afficher la note" ;
+ Text [ portuguese ] = "Mostrar anotação" ;
+ Text [ portuguese_brazilian ] = "Notiz anzeigen" ;
+ Text[ chinese_simplified ] = "ÏÔʾ±¸×¢";
+ Text[ russian ] = "Ïîêàçàòü ïðèìå÷àíèÿ";
+ Text[ polish ] = "Poka¿ notatkê";
+ Text[ japanese ] = "ºÒÝÄ‚Ì•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü³Æª`";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáãáÇÍÙÉ";
+ Text[ greek ] = "ÅìöÜíéóç óçìåßùóçò";
+ Text[ korean ] = "¸Þ¸ð º¸À̱â";
+ Text[ turkish ] = "Notu görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_HIDENOTE
+ {
+ Text = "Notiz ausblenden" ;
+ Text [ ENGLISH ] = "Hide Note" ;
+ Text [ dutch ] = "Aantekening verbergen" ;
+ Text [ english_us ] = "Hide note" ;
+ Text [ swedish ] = "Dölj anteckning" ;
+ Text [ danish ] = "Skjul note" ;
+ Text [ italian ] = "Nascondi nota" ;
+ Text [ spanish ] = "Ocultar nota" ;
+ Text [ french ] = "Masquer la note" ;
+ Text [ portuguese ] = "Ocultar anotação" ;
+ Text [ portuguese_brazilian ] = "Notiz ausblenden" ;
+ Text[ chinese_simplified ] = "ÒþÈ뱸ע";
+ Text[ russian ] = "Ñêðûòü ïðèìå÷àíèå";
+ Text[ polish ] = "Ukryj notatkê";
+ Text[ japanese ] = "ºÒÝÄ‚Ì”ñ•\\Ž¦";
+ Text[ chinese_traditional ] = "Áô¤J³Æª`";
+ Text[ arabic ] = "ÅÎÝÇÁ ÇáãáÇÍÙÉ";
+ Text[ greek ] = "Áðüêñõøç óçìåßùóçò";
+ Text[ korean ] = "¸Þ¸ð ¼û±â±â";
+ Text[ turkish ] = "Notu gizle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_EDITNOTE
+ {
+ Text = "Notiz bearbeiten" ;
+ Text [ ENGLISH ] = "Edit Note" ;
+ Text [ portuguese ] = "Editar anotação" ;
+ Text [ english_us ] = "Edit Note" ;
+ Text [ portuguese_brazilian ] = "Notiz bearbeiten" ;
+ Text [ swedish ] = "Redigera anteckning" ;
+ Text [ danish ] = "Rediger note" ;
+ Text [ italian ] = "Modifica nota" ;
+ Text [ spanish ] = "Editar nota" ;
+ Text [ french ] = "Éditer la note" ;
+ Text [ dutch ] = "Aantekening bewerken" ;
+ Text[ chinese_simplified ] = "±à¼­±¸×¢";
+ Text[ russian ] = "Îáðàáîòêà ïðèìå÷àíèÿ";
+ Text[ polish ] = "Edytuj notatkê";
+ Text[ japanese ] = "ºÒÝÄ‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è³Æª`";
+ Text[ arabic ] = "ÊÍÑíÑ ãáÇÍÙÉ";
+ Text[ greek ] = "Åðåîåñãáóßá óçìåßùóçò";
+ Text[ korean ] = "¸Þ¸ð ÆíÁý";
+ Text[ turkish ] = "Notu düzenle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DEC_INDENT
+ {
+ Text = "Einzug vermindern" ;
+ Text [ ENGLISH ] = "Decrease Indent" ;
+ Text [ dutch ] = "Inspringing verkleinen" ;
+ Text [ english_us ] = "Decrease Indent" ;
+ Text [ swedish ] = "Förminska indrag" ;
+ Text [ danish ] = "Formindsk indrykning" ;
+ Text [ italian ] = "Riduci rientro" ;
+ Text [ spanish ] = "Reducir sangría" ;
+ Text [ french ] = "Réduire le retrait" ;
+ Text [ portuguese ] = "Diminuir avanço" ;
+ Text [ portuguese_brazilian ] = "Einzug vermindern" ;
+ Text[ chinese_simplified ] = "¼õÉÙËõ½ø";
+ Text[ russian ] = "Óìåíüøèòü îòñòóï";
+ Text[ polish ] = "Zmniejsz wciêcie";
+ Text[ japanese ] = "²ÝÃÞÝÄ‚ðŒ¸‚ç‚·";
+ Text[ chinese_traditional ] = "´î¤ÖÁY±Æ";
+ Text[ arabic ] = "ÊÞáíá ÇáÅÒÇÍÉ";
+ Text[ greek ] = "Ìåßùóç åóï÷Þò";
+ Text[ korean ] = "³»¾î¾²±â";
+ Text[ turkish ] = "Girintiyi küçült";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_INC_INDENT
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Einzug erhöhen : Einzug erh÷hen */
+ Text = "Einzug erhöhen" ;
+ Text [ ENGLISH ] = "Increase Indent" ;
+ Text [ dutch ] = "Inspringing vergroten" ;
+ Text [ english_us ] = "Increase Indent" ;
+ Text [ swedish ] = "Förstora indrag" ;
+ Text [ danish ] = "Forøg indrykning" ;
+ Text [ italian ] = "Aumenta rientro" ;
+ Text [ spanish ] = "Aumentar sangría" ;
+ Text [ french ] = "Augmenter le retrait" ;
+ Text [ portuguese ] = "Aumentar avanço " ;
+ Text [ portuguese_brazilian ] = "Einzug erhöhen" ;
+ Text[ chinese_simplified ] = "Ôö´óËõ½ø";
+ Text[ russian ] = "Óâåëè÷èòü îòñòóï";
+ Text[ polish ] = "Zwiêksz wciêcie";
+ Text[ japanese ] = "²ÝÃÞÝÄ‚ð‘‚·";
+ Text[ chinese_traditional ] = "ÂX¤jÁY±Æ";
+ Text[ arabic ] = "ÒíÇÏÉ ÇáÅÒÇÍÉ";
+ Text[ greek ] = "Áýîçóç åóï÷Þò";
+ Text[ korean ] = "µé¿©¾²±â";
+ Text[ turkish ] = "Girintiyi büyüt";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_PROTECT_TAB
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Tabelle schützen : Tabelle sch³tzen */
+ Text = "Tabelle schützen" ;
+ Text [ ENGLISH ] = "Protect Table" ;
+ Text [ portuguese ] = "Proteger folha" ;
+ Text [ english_us ] = "Protect sheet" ;
+ Text [ portuguese_brazilian ] = "Tabelle schützen" ;
+ Text [ swedish ] = "Skydda tabell" ;
+ Text [ danish ] = "Beskyt ark" ;
+ Text [ italian ] = "proteggi tabella" ;
+ Text [ spanish ] = "Proteger hoja" ;
+ Text [ french ] = "Protéger feuille" ;
+ Text [ dutch ] = "Werkblad beveiligen" ;
+ Text[ chinese_simplified ] = "±£»¤¹¤×÷±í";
+ Text[ russian ] = "Çàùèòà ëèñòà";
+ Text[ polish ] = "Chroñ arkusz";
+ Text[ japanese ] = "•\\‚Ì•ÛŒì";
+ Text[ chinese_traditional ] = "«OÅ@¤u§@ªí";
+ Text[ arabic ] = "ÍãÇíÉ ÇáÌÏæá";
+ Text[ greek ] = "Ðñïóôáóßá ðßíáêá";
+ Text[ korean ] = "½ÃÆ® º¸È£";
+ Text[ turkish ] = "Tabloyu koru";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_UNPROTECT_TAB
+ {
+ Text = "Tabellenschutz aufheben" ;
+ Text [ ENGLISH ] = "Unprotect Table" ;
+ Text [ portuguese ] = "Remover protecção da folha" ;
+ Text [ english_us ] = "Unprotect sheet" ;
+ Text [ portuguese_brazilian ] = "Tabellenschutz aufheben" ;
+ Text [ swedish ] = "Upphäv tabellskydd" ;
+ Text [ danish ] = "Ophæv arkbeskyttelse" ;
+ Text [ italian ] = "Disattiva protezione tabella" ;
+ Text [ spanish ] = "Desproteger hoja" ;
+ Text [ french ] = "Annuler la protection de la feuille" ;
+ Text [ dutch ] = "Werkbladbeveiliging opheffen" ;
+ Text[ chinese_simplified ] = "È¡Ïû±£»¤¹¤×÷±í";
+ Text[ russian ] = "Ñíÿòü çàùèòó ñ ëèñòà";
+ Text[ polish ] = "Usuñ ochronê arkusza";
+ Text[ japanese ] = "•\\‚Ì•ÛŒì‚̉ðœ";
+ Text[ chinese_traditional ] = "¨ú®ø«OÅ@¤u§@ªí";
+ Text[ arabic ] = "ÅáÛÇÁ ÍãÇíÉ ÇáÌÏæá";
+ Text[ greek ] = "ÊáôÜñãçóç ðñïóôáóßáò ðßíáêá";
+ Text[ korean ] = "½ÃÆ® º¸È£ ÇØÁ¦";
+ Text[ turkish ] = "Tablo korumasýný kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_PROTECT_DOC
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Dokument schützen : Dokument sch³tzen */
+ Text = "Dokument schützen" ;
+ Text [ ENGLISH ] = "Protect Document" ;
+ Text [ portuguese ] = "Proteger documento" ;
+ Text [ english_us ] = "Protect document" ;
+ Text [ portuguese_brazilian ] = "Dokument schützen" ;
+ Text [ swedish ] = "Skydda dokument" ;
+ Text [ danish ] = "Beskyt dokument" ;
+ Text [ italian ] = "Proteggi documento" ;
+ Text [ spanish ] = "Proteger documento" ;
+ Text [ french ] = "Protéger le document" ;
+ Text [ dutch ] = "Document beveiligen" ;
+ Text[ chinese_simplified ] = "±£»¤Îĵµ";
+ Text[ russian ] = "Çàùèòà äîêóìåíòà";
+ Text[ polish ] = "Chroñ dokument";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ‚Ì•ÛŒì";
+ Text[ chinese_traditional ] = "«OÅ@¤å¥ó";
+ Text[ arabic ] = "ÍãÇíÉ ÇáãÓÊäÏ";
+ Text[ greek ] = "Ðñïóôáóßá åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ º¸È£";
+ Text[ turkish ] = "Belgeyi koru";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_UNPROTECT_DOC
+ {
+ Text = "Dokumentschutz aufheben" ;
+ Text [ ENGLISH ] = "Unprotect Document" ;
+ Text [ portuguese ] = "Remover protecção do documento" ;
+ Text [ english_us ] = "Unprotect document" ;
+ Text [ portuguese_brazilian ] = "Dokumentschutz aufheben" ;
+ Text [ swedish ] = "Upphäv dokumentskydd" ;
+ Text [ danish ] = "Ophæv dokumentbeskyttelse" ;
+ Text [ italian ] = "Disattiva protezione documentro" ;
+ Text [ spanish ] = "Desproteger documento" ;
+ Text [ french ] = "Annuler la protection de document" ;
+ Text [ dutch ] = "Beveiliging opheffen" ;
+ Text[ chinese_simplified ] = "È¡Ïû±£»¤Îĵµ";
+ Text[ russian ] = "Îòìåíèòü çàùèòó äîêóìåíòà";
+ Text[ polish ] = "Usuñ ochronê dokumentu";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ•ÛŒì‚̉ðœ";
+ Text[ chinese_traditional ] = "¨ú®ø«OÅ@¤å¥ó";
+ Text[ arabic ] = "ÅÒÇáÉ ÍãÇíÉ ÇáãÓÊäÏ";
+ Text[ greek ] = "ÊáôÜñãçóç ðñïóôáóßáò åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ º¸È£ ÇØÁ¦";
+ Text[ turkish ] = "Belge korumasýný kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_PRINTRANGES
+ {
+ Text = "Druckbereiche" ;
+ Text [ ENGLISH ] = "Print Areas" ;
+ Text [ portuguese ] = "Áreas de impressão" ;
+ Text [ english_us ] = "Print range" ;
+ Text [ portuguese_brazilian ] = "Druckbereiche" ;
+ Text [ swedish ] = "Utskriftsområden" ;
+ Text [ danish ] = "Udskriftsområde" ;
+ Text [ italian ] = "Aree di stampa" ;
+ Text [ spanish ] = "Áreas de impresión" ;
+ Text [ french ] = "Zones d'impression" ;
+ Text [ dutch ] = "Afdrukbereiken" ;
+ Text[ chinese_simplified ] = "´òÓ¡ÇøÓò";
+ Text[ russian ] = "Îáëàñòè ïå÷àòè";
+ Text[ polish ] = "Zakres wydruku";
+ Text[ japanese ] = "ˆóü”͈Í";
+ Text[ chinese_traditional ] = "¦C¦L­S³ò";
+ Text[ arabic ] = "äØÇÞÇÊ ÇáØÈÇÚÉ";
+ Text[ greek ] = "Ðåñéï÷Ýò åêôýðùóçò";
+ Text[ korean ] = "Àμ⠿µ¿ª";
+ Text[ turkish ] = "Yazdýrma aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_REMOVEBREAKS
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Seitenumbrüche löschen : Seitenumbr³che l÷schen */
+ Text = "Seitenumbrüche löschen" ;
+ Text [ ENGLISH ] = "Delete Page Breaks" ;
+ Text [ portuguese ] = "Eliminar quebras de página" ;
+ Text [ english_us ] = "Delete Page Breaks" ;
+ Text [ portuguese_brazilian ] = "Seitenumbrüche löschen" ;
+ Text [ swedish ] = "Radera sidbrytningar" ;
+ Text [ danish ] = "Slet sideskift" ;
+ Text [ italian ] = "Elimina interruzioni pagina" ;
+ Text [ spanish ] = "Eliminar saltos de página" ;
+ Text [ french ] = "Supprimer les sauts de page" ;
+ Text [ dutch ] = "Paginaeinde wissen" ;
+ Text[ chinese_simplified ] = "ɾ³ý»»Ò³·û";
+ Text[ russian ] = "Óäàëèòü ðàçðûâû ñòðàíèö";
+ Text[ polish ] = "Usuñ ³amanie strony";
+ Text[ japanese ] = "‰üÍß°¼Þ‚ðíœ";
+ Text[ chinese_traditional ] = "§R°£´«­¶²Å";
+ Text[ arabic ] = "ÍÐÝ ÝæÇÕá ÇáÕÝÍÇÊ";
+ Text[ greek ] = "ÄéáãñáöÞ áëëáãÞò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ³ª´©±â »èÁ¦";
+ Text[ turkish ] = "Sayfa sonlarýný sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_PRINTSCALE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Skalierung ändern : Skalierung õndern */
+ Text = "Skalierung ändern" ;
+ Text [ ENGLISH ] = "Change Print Scale" ;
+ Text [ portuguese ] = "Alterar escala" ;
+ Text [ english_us ] = "Change Scale" ;
+ Text [ portuguese_brazilian ] = "Skalierung ändern" ;
+ Text [ swedish ] = "Ändra skalering" ;
+ Text [ danish ] = "Modificer skalering" ;
+ Text [ italian ] = "Modifica scala" ;
+ Text [ spanish ] = "Modificar escala" ;
+ Text [ french ] = "Changer l'échelle" ;
+ Text [ dutch ] = "Schaal wijzigen" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä¿Ì¶È";
+ Text[ russian ] = "Èçìåíèòü ìàñøòàá";
+ Text[ polish ] = "Zmieñ skalowanie";
+ Text[ japanese ] = "½¹°Ù‚Ì•ÏX";
+ Text[ chinese_traditional ] = "ÅܧóÅã¥Ü¤ñ¨Ò";
+ Text[ arabic ] = "ÊÛííÑ ÇáãÞíÇÓ";
+ Text[ greek ] = "ÁëëáãÞ êëßìáêáò";
+ Text[ korean ] = "¹èÀ² º¯°æ";
+ Text[ turkish ] = "Ölçeði deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DRAG_BREAK
+ {
+ Text = "Seitenumbruch verschieben" ;
+ Text [ ENGLISH ] = "Move Page Break" ;
+ Text [ portuguese ] = "Mover quebra de página" ;
+ Text [ english_us ] = "Move Page Break" ;
+ Text [ portuguese_brazilian ] = "Seitenumbruch verschieben" ;
+ Text [ swedish ] = "Flytta sidbrytning" ;
+ Text [ danish ] = "Flyt sideskift" ;
+ Text [ italian ] = "Sposta interruzioni pagina" ;
+ Text [ spanish ] = "Desplazar salto de página" ;
+ Text [ french ] = "Déplacer le saut de page" ;
+ Text [ dutch ] = "Paginaeinde verplaatsen" ;
+ Text[ chinese_simplified ] = "Òƶ¯»»Ò³·û";
+ Text[ russian ] = "Ïåðåíåñòè ðàçðûâ ñòðàíèöû";
+ Text[ polish ] = "Przesuñ podzia³ strony";
+ Text[ japanese ] = "‰üÍß°¼Þ‚̈ړ®";
+ Text[ chinese_traditional ] = "²¾°Ê´«­¶²Å";
+ Text[ arabic ] = "ÊÍÑíß ÝÇÕá ÕÝÍÉ";
+ Text[ greek ] = "Ìåôáêßíçóç áëëáãÞò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ³ª´©±â À̵¿";
+ Text[ turkish ] = "Sayfa sonunu taþý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_RANGENAMES
+ {
+ Text = "Bereichsnamen bearbeiten" ;
+ Text [ ENGLISH ] = "Edit Names" ;
+ Text [ portuguese ] = "Editar nomes" ;
+ Text [ english_us ] = "Edit range names" ;
+ Text [ portuguese_brazilian ] = "Bereichsnamen bearbeiten" ;
+ Text [ swedish ] = "Redigera områdesnamn" ;
+ Text [ danish ] = "Rediger områdenavne" ;
+ Text [ italian ] = "Modifica nomi" ;
+ Text [ spanish ] = "Editar nombres de área" ;
+ Text [ french ] = "Modifier les noms de plages" ;
+ Text [ dutch ] = "Bereiknaam bewerken" ;
+ Text[ chinese_simplified ] = "±à¼­ÇøÓòÃû³Æ";
+ Text[ russian ] = "Ïðàâêà èìåí îáëàñòè";
+ Text[ polish ] = "Edytuj nazwy obszarów";
+ Text[ japanese ] = "”͈͖¼‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è°Ï°ì¦WºÙ";
+ Text[ arabic ] = "ÊÍÑíÑ ÃÓãÇÁ äØÇÞÇÊ";
+ Text[ greek ] = "Åðåîåñãáóßá ïíïìÜôùí ðåñéï÷þí";
+ Text[ korean ] = "¿µ¿ª À̸§ ÆíÁý";
+ Text[ turkish ] = "Aralýk adlarýný düzenle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DB_NONAME
+ {
+ Text = "unbenannt" ;
+ Text [ ENGLISH ] = "noname" ;
+ Text [ norwegian ] = "noname" ;
+ Text [ italian ] = "Senza nome" ;
+ Text [ portuguese_brazilian ] = "Sem nome" ;
+ Text [ portuguese ] = "Sem nome" ;
+ Text [ finnish ] = "nimetön" ;
+ Text [ danish ] = "ikke-navngivet" ;
+ Text [ french ] = "Sans nom" ;
+ Text [ swedish ] = "namnlös" ;
+ Text [ dutch ] = "naamloos" ;
+ Text [ spanish ] = "Sin nombre" ;
+ Text [ english_us ] = "unnamed" ;
+ Text[ chinese_simplified ] = "δÃüÃû";
+ Text[ russian ] = "Áåç èìåíè";
+ Text[ polish ] = "bez nazwy";
+ Text[ japanese ] = "•s–¾";
+ Text[ chinese_traditional ] = "¥¼©R¦W";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä";
+ Text[ greek ] = "Äß÷ùò üíïìá";
+ Text[ korean ] = "À̸§ ¾øÀ½";
+ Text[ turkish ] = "adsýz";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DBNAME_IMPORT
+ {
+ Text = "Import" ;
+ Text [ ENGLISH ] = "Import" ;
+ Text [ english_us ] = "Import" ;
+ Text [ italian ] = "Importa" ;
+ Text [ spanish ] = "Importación" ;
+ Text [ french ] = "Import" ;
+ Text [ dutch ] = "Import" ;
+ Text [ swedish ] = "Import" ;
+ Text [ danish ] = "Import" ;
+ Text [ portuguese ] = "Importar" ;
+ Text [ portuguese_brazilian ] = "Import" ;
+ Text[ chinese_simplified ] = "ÊäÈë";
+ Text[ russian ] = "Èìïîðò";
+ Text[ polish ] = "Import";
+ Text[ japanese ] = "²ÝÎß°Ä";
+ Text[ chinese_traditional ] = "¿é¤J";
+ Text[ arabic ] = "ÇÓÊíÑÇÏ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "°¡Á®¿À±â";
+ Text[ turkish ] = "Ýçe aktar";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_DOSUBTOTALS_0
+ {
+ Text = "StarOffice Calc" ;
+ Text [ ENGLISH ] = "StarCalc" ;
+ Text [ norwegian ] = "StarCalc" ;
+ Text [ italian ] = "StarOffice Calc" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc" ;
+ Text [ portuguese ] = "StarOffice Calc" ;
+ Text [ finnish ] = "StarCalc" ;
+ Text [ danish ] = "StarOffice Calc" ;
+ Text [ french ] = "StarOffice Calc" ;
+ Text [ swedish ] = "StarOffice Calc" ;
+ Text [ dutch ] = "StarOffice Calc" ;
+ Text [ spanish ] = "StarOffice Calc" ;
+ Text [ english_us ] = "StarOffice Calc" ;
+ Text[ chinese_simplified ] = "StarOffice Calc";
+ Text[ russian ] = "StarOffice Calc";
+ Text[ polish ] = "StarOffice Calc";
+ Text[ japanese ] = "StarOffice Calc";
+ Text[ chinese_traditional ] = "StarOffice Calc";
+ Text[ arabic ] = "StarOffice Calc";
+ Text[ greek ] = "StarOffice Calc";
+ Text[ korean ] = "StarOffice Calc";
+ Text[ turkish ] = "StarOffice Calc";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_DOSUBTOTALS_1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Daten löschen? : Daten l÷schen? */
+ Text = "Daten löschen?" ;
+ Text [ ENGLISH ] = "Delete data?" ;
+ Text [ norwegian ] = "Delete data?" ;
+ Text [ italian ] = "Elimina dati?" ;
+ Text [ portuguese_brazilian ] = "Apagar dados?" ;
+ Text [ portuguese ] = "Eliminar dados?" ;
+ Text [ finnish ] = "Poistetaanko tiedot?" ;
+ Text [ danish ] = "Slette data?" ;
+ Text [ french ] = "Supprimer les données ?" ;
+ Text [ swedish ] = "Radera data?" ;
+ Text [ dutch ] = "Gegevens wissen?" ;
+ Text [ spanish ] = "¿Desea eliminar los datos?" ;
+ Text [ english_us ] = "Delete data?" ;
+ Text[ chinese_simplified ] = "ɾ³ýÊý¾Ý£¿";
+ Text[ russian ] = "Óäàëèòü äàííûå?";
+ Text[ polish ] = "Usun¹æ dane?";
+ Text[ japanese ] = "ÃÞ°À‚ð휂µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "§R°£¸ê®Æ¡H";
+ Text[ arabic ] = "åá ÊÑíÏ ÍÐÝ ÇáÈíÇäÇÊ¿";
+ Text[ greek ] = "ÄéáãñáöÞ äåäïìÝíùí;";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ »èÁ¦ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "Verileri sil?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_DOSUBTOTALS_2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Kann keine Zeilen einfügen : Kann keine Zeilen einf³gen */
+ Text = "Kann keine Zeilen einfügen" ;
+ Text [ ENGLISH ] = "Unable to insert line" ;
+ Text [ norwegian ] = "Unable to insert line" ;
+ Text [ italian ] = "Impossibile inserire riga" ;
+ Text [ portuguese_brazilian ] = "Não consigo inserir a linha" ;
+ Text [ portuguese ] = "Impossível inserir linhas" ;
+ Text [ finnish ] = "Riviä ei voi lisätä" ;
+ Text [ danish ] = "Kan ikke indsætte rækker" ;
+ Text [ french ] = "Insertion de lignes impossible" ;
+ Text [ swedish ] = "Kan ej infoga rad" ;
+ Text [ dutch ] = "Rij invoegen onmogelijk" ;
+ Text [ spanish ] = "No puede insertar filas" ;
+ Text [ english_us ] = "Unable to insert rows" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨²åÈëÐÐ";
+ Text[ russian ] = "Âñòàâèòü ÿ÷åéêè íåâîçìîæíî";
+ Text[ polish ] = "Wstawienie wierszy jest niemo¿liwe";
+ Text[ japanese ] = "—ñ‚Ì‘}“ü‚Í‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk´¡¤JÄæ";
+ Text[ arabic ] = "ÛíÑ ÞÇÏÑ Úáì ÅÏÑÇÌ ÕÝæÝ";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé ðñïóèÞêç ãñáììÞò";
+ Text[ korean ] = "Çà »ðÀÔÀÌ ºÒ°¡´É";
+ Text[ turkish ] = "Satýr eklenemiyor";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_REPEATDB_0
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Keine Operationen auszuführen : Keine Operationen auszuf³hren */
+ Text = "Keine Operationen auszuführen" ;
+ Text [ ENGLISH ] = "Nothing to do" ;
+ Text [ norwegian ] = "Nothing to do" ;
+ Text [ italian ] = "Non c'è niente da fare" ;
+ Text [ portuguese_brazilian ] = "Nada a fazer" ;
+ Text [ portuguese ] = "Não tenho operações para executar" ;
+ Text [ finnish ] = "Ei tehtävää" ;
+ Text [ danish ] = "Ingen operationer til at udføre" ;
+ Text [ french ] = "Aucune opération à exécuter" ;
+ Text [ swedish ] = "Inga operationer att utföra" ;
+ Text [ dutch ] = "Geen opdrachten uit te voeren" ;
+ Text [ spanish ] = "Ninguna operación por hacer" ;
+ Text [ english_us ] = "No operations to execute" ;
+ Text[ chinese_simplified ] = "²»Ö´ÐвÙ×÷";
+ Text[ russian ] = "Îïåðàöèþ âûïîëíèòü íåâîçìîæíî";
+ Text[ polish ] = "Nie wykonuj operacji";
+ Text[ japanese ] = "‰‰ŽZ‚ÌŽÀs‚È‚µ";
+ Text[ chinese_traditional ] = "¤£°õ¦æ¾Þ§@";
+ Text[ arabic ] = "áÇ ÊæÌÏ ÚãáíÇÊ ááÊäÝíÐ";
+ Text[ greek ] = "Äåí õðÜñ÷ïõí åíôïëÝò ãéá åêôÝëåóç";
+ Text[ korean ] = "½ÇÇàµÉ ÀÛ¾÷ÀÌ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Yürütülecek iþlem yok";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_MAKEAUTOFILTER_0
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Bereich enthält keine Spaltenköpfe.\nSoll die erste Zeile als Spaltenköpfe verwendet werden? : Der Bereich enthõlt keine Spaltenk÷pfe.\nSoll die erste Zeile als Spaltenk÷pfe verwendet werden? */
+ Text = "Der Bereich enthält keine Spaltenköpfe.\nSoll die erste Zeile als Spaltenköpfe verwendet werden?" ;
+ Text [ ENGLISH ] = "This area does not contain column headers.\nUse the first line as column headers?" ;
+ Text [ norwegian ] = "This area does not contain column headers.\nUse the first line as column headers?" ;
+ Text [ italian ] = "L' area non contiene intestazioni per le colonne.\nUsare la prima riga come intestazione colonna?" ;
+ Text [ portuguese_brazilian ] = "Esta área não contém cabeçalhos de colunas.\nUsar a primeira linha como cabeçalhos de colunas?" ;
+ Text [ portuguese ] = "Esta área não contém cabeçalhos de colunas.\nUtilizar a primeira linha como cabeçalho de coluna?" ;
+ Text [ finnish ] = "Tällä alueella ei ole sarakeotsikoita.\nKäytetäänkö ensimmäistä riviä sarakeotsikoina?" ;
+ Text [ danish ] = "Dette område indeholder ikke kolonneoverskrifter.\nSkal den første række bruges som kolonneoverskrift?" ;
+ Text [ french ] = "Cette plage ne contient aucun en-tête de colonne.\nVoulez-vous utiliser le contenu de la première ligne en guise d'en-têtes ?" ;
+ Text [ swedish ] = "Området innehåller inga kolumnhuvuden.\nSkall första raden användas som kolumnhuvud?" ;
+ Text [ dutch ] = "Dit bereik bevat geen kolomkoppen.\nEerste regel als kolomkop gebruiken?" ;
+ Text [ spanish ] = "El área no contiene encabezamientos de columnas.\n¿Desea utilizar la primera línea como encabezamiento?" ;
+ Text [ english_us ] = "The range does not contain column headers.\nDo you want the first line to be used as column header?" ;
+ Text[ chinese_simplified ] = "ÇøÓòûÓÐÁбêÌâ¡£\nÄúÒªÒÔµÚÒ»ÐеÄÄÚÈݵ±×÷ÁбêÌ⣿";
+ Text[ russian ] = "Îáëàñòü íå ñîäåðæèò çàãîëîâêîâ ñòîëáöîâ.\nÈñïîëüçîâàòü ïåðâóþ ñòðîêó â êà÷åñòâå çàãîëîâêà ñòîëáöà?";
+ Text[ polish ] = "Ten obszar nie zawiera nag³ówków kolumn.\nCzy pierwszy wiersz ma zostaæ u¿yty jako nag³ówek kolumn?";
+ Text[ japanese ] = "‚±‚͈̔͂ɂ͗ñ‚Ì€–Ú—“‚ðŠÜ‚ñ‚Å‚¢‚Ü‚¹‚ñB\n1s–Ú‚ð—ñ‚Ì€–Ú—“‚Æ‚µ‚Ä“K—p‚µ‚Ä‚à‚æ‚낵‚¢‚Å‚·‚©?";
+ Text[ chinese_traditional ] = "°Ï°ì¨S¦³¦C¼ÐÃD¡C\n­n¥Î²Ä¤@¦Cªº¤º®e·í§@¦C¼ÐÃD¡H";
+ Text[ arabic ] = "åÐÇ ÇáäØÇÞ áÇ íÍÊæí Úáì ÑÄæÓ ÃÚãÏÉ.\nåá ÊÑíÏ ÇÓÊÎÏÇã ÇáÓØÑ ÇáÃæá ßÑÄæÓ ÃÚãÏÉ.";
+ Text[ greek ] = "Ç ðåñéï÷Þ äåí ðåñéÝ÷åé êåöáëßäá óôçëþí.\nÈÝëåôå íá ÷ñçóéìïðïéçèåß ç ðñþôç óôÞëç ùò êåöáëßäá óôçëþí;";
+ Text[ korean ] = "ÀÌ ¿µ¿ªÀº ¿­ÀÇ ¸Ó¸´±ÛÀ» Æ÷ÇÔÇÏ°í ÀÖÁö ¾Ê½À´Ï´Ù.\n¿­ÀÇ ¸Ó¸®±Û·Î ù¹ø° ÁÙÀ» »ç¿ëÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "Bu aralýk, sütun baþlýklarý içermiyor.\nÝlk satýr sütun baþlýðý olarak kullanýlsýn mý?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_IMPORTDATA_0
+ {
+ Text = "Fehler beim Importieren!" ;
+ Text [ ENGLISH ] = "Error while importing data!" ;
+ Text [ norwegian ] = "Error while importing data!" ;
+ Text [ italian ] = "Errore durante l'importazione dei dati!" ;
+ Text [ portuguese_brazilian ] = "Erro ao importar dados!" ;
+ Text [ portuguese ] = "Erro ao importar dados!" ;
+ Text [ finnish ] = "Virhe tietoja tuotaessa!" ;
+ Text [ danish ] = "Fejl ved import!" ;
+ Text [ french ] = "Erreur lors de l'import des données !" ;
+ Text [ swedish ] = "Fel vid import av data!" ;
+ Text [ dutch ] = "Fout bij importeren!" ;
+ Text [ spanish ] = "¡Error al importar datos!" ;
+ Text [ english_us ] = "Error while importing data!" ;
+ Text[ chinese_simplified ] = "ÊäÈëʱ·¢Éú´íÎó£¡";
+ Text[ russian ] = "Îøèáêà ïðè èìïîðòå!";
+ Text[ polish ] = "B³¹d podczas importowania!";
+ Text[ japanese ] = "²ÝÎß°Ä‚ÌÛ‚Ì´×°!";
+ Text[ chinese_traditional ] = "¿é¤J®Éµo¥Í¿ù»~¡I";
+ Text[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ÇÓÊíÑÇÏ ÇáÈíÇäÇÊ!";
+ Text[ greek ] = "ÓöÜëìá êáôÜ ôçí åéóáãùãÞ!";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ °¡Á®¿À´Â µ¿¾È ¿À·ù!";
+ Text[ turkish ] = "Ýçe aktarýmda hata!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DATABASE_NOTFOUND
+ {
+ Text = "Die Datenbank '#' konnte nicht geöffnet werden." ;
+ Text [ ENGLISH ] = "The database '#' could not be opened." ;
+ Text [ portuguese ] = "Foi impossível abrir a base de dados ''#''." ;
+ Text [ english_us ] = "The database '#' could not be opened." ;
+ Text [ portuguese_brazilian ] = "Die Datenbank ''#'' konnte nicht geöffnet werden." ;
+ Text [ swedish ] = "Databasen '#' kunde inte öppnas." ;
+ Text [ danish ] = "Det var ikke muligt at åbne databasen ''#''." ;
+ Text [ italian ] = "Impossibile aprire il database ''#''." ;
+ Text [ spanish ] = "No se pudo abrir la base de datos '#'." ;
+ Text [ french ] = "Impossible d'ouvrir la base de données '#'." ;
+ Text [ dutch ] = "De database '#' kon niet worden geopend." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨´ò¿ªÊý¾Ý¿â '#' ¡£";
+ Text[ russian ] = "Íå óäàåòñÿ îòêðûòü áàçó äàííûõ '#'.";
+ Text[ polish ] = "Baza danych \"#\" nie mog³a zostaæ otworzona.";
+ Text[ japanese ] = "ÃÞ°À ÍÞ°½'#'‚ÍŠJ‚­‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½";
+ Text[ chinese_traditional ] = "µLªk¶}±Ò¸ê®Æ®w '#' ¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÝÊÍ ÞÇÚÏÉ ÇáÈíÇäÇÊ '#'.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá áíïé÷ôåß ç âÜóç äåäïìÝíùí '#'.";
+ Text[ korean ] = "'#' µ¥ÀÌÅͺ£À̽º°¡ ¿­¸®Áö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "'#' veritabaný açýlamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_QUERY_NOTFOUND
+ {
+ Text = "Die Abfrage '#' konnte nicht geöffnet werden." ;
+ Text [ ENGLISH ] = "The query '#' could not be opened." ;
+ Text [ portuguese ] = "Foi impossível abrir a consulta '#'." ;
+ Text [ english_us ] = "The query '#' could not be opened." ;
+ Text [ portuguese_brazilian ] = "Die Abfrage '#' konnte nicht geöffnet werden." ;
+ Text [ swedish ] = "Sökningen '#' kunde inte öppnas." ;
+ Text [ danish ] = "Det var ikke muligt at åbne forespørgslen '#'." ;
+ Text [ italian ] = "Non è stato possibile aprire la ricerca '#'." ;
+ Text [ spanish ] = "La consulta '#' no se pudo abrir." ;
+ Text [ french ] = "La requête '#' n'a pas pu être ouverte." ;
+ Text [ dutch ] = "Query '#' kon niet worden geopend." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨´ò¿ªÕâ¸ö²éѯ '#' ¡£";
+ Text[ russian ] = "Óäàëèòü çàïðîñ '#' íåâîçìîæíî.";
+ Text[ polish ] = "Kwerendy '#' nie mo¿na by³o otworzyæ.";
+ Text[ japanese ] = "¸´Ø° '#' ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk¶}±Ò³o­Ó¬d¸ß '#' ¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÝÊÍ ÇáÇÓÊÝÓÇÑ '#'.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá áíïé÷èåß ôï åñþôçìá '#'.";
+ Text[ korean ] = "ÁúÀÇ '#' Àº ¿­¸± ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "'#' sorgusu açýlamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DATABASE_ABORTED
+ {
+ Text = "Der Datenbank-Import wurde abgebrochen." ;
+ Text [ ENGLISH ] = "Importing was aborted." ;
+ Text [ portuguese ] = "A importação da base de dados foi cancelada." ;
+ Text [ english_us ] = "Database import terminated." ;
+ Text [ portuguese_brazilian ] = "Der Datenbank-Import wurde abgebrochen." ;
+ Text [ swedish ] = "Databasimporten avbröts." ;
+ Text [ danish ] = "Database-importen blev afbrudt." ;
+ Text [ italian ] = "Importazione database interrotta." ;
+ Text [ spanish ] = "La importación de la base de datos ha sido cancelada." ;
+ Text [ french ] = "L'import de la base de données a été annulé." ;
+ Text [ dutch ] = "De database-import werd afgebroken" ;
+ Text[ chinese_simplified ] = "ÒѾ­ÖжÏÊý¾Ý¿âÊäÈë¡£";
+ Text[ russian ] = "Èìïîðò áàçû äàííûõ îòìåíåí.";
+ Text[ polish ] = "Import bazy danych zosta³ anulowany.";
+ Text[ japanese ] = "ÃÞ°À ÍÞ°½‚̲ÝÎß°Ä‚Í’†Ž~‚³‚ê‚Ü‚µ‚½B";
+ Text[ chinese_traditional ] = "¤w¸g¤¤Â_¸ê®Æ®w¿é¤J¡C";
+ Text[ arabic ] = "Êã ÞØÚ ÚãáíÉ ÇÓÊíÑÇÏ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ greek ] = "ÄéáêïðÞ ôçò åéóáãùãÞò âÜóçò äåäïìÝíùí.";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º °¡Á®¿À±â Áß´Ü";
+ Text[ turkish ] = "Veritabaný içe aktarýmý iptal edildi.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PROGRESS_IMPORT
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? # Datensätze importiert... : # Datensõtze importiert... */
+ Text = "# Datensätze importiert..." ;
+ Text [ ENGLISH ] = "# records read..." ;
+ Text [ portuguese ] = "# de registos importados..." ;
+ Text [ english_us ] = "# records imported..." ;
+ Text [ portuguese_brazilian ] = "# Datensätze importiert..." ;
+ Text [ swedish ] = "# dataposter importerade..." ;
+ Text [ danish ] = "# dataposter importeret..." ;
+ Text [ italian ] = "# Record di dati importati..." ;
+ Text [ spanish ] = "# registros importados..." ;
+ Text [ french ] = "# enregistrements importés..." ;
+ Text [ dutch ] = "# gegevensreeksen geïmporteerd..." ;
+ Text[ chinese_simplified ] = "# ÊäÈëÊý¾Ý...";
+ Text[ russian ] = "# Èìïîðòèðîâàííûå çàïèñè...";
+ Text[ polish ] = "# Importowane rekordy...";
+ Text[ japanese ] = "# Úº°Äނ̲ÝÎß°Ä...";
+ Text[ chinese_traditional ] = "# ¿é¤J¸ê®Æ...";
+ Text[ arabic ] = "# ÓÌá(ÓÌáÇÊ) ãÓÊæÑÏ(É)...";
+ Text[ greek ] = "# åããñáöÝò åéóÜ÷èçêáí...";
+ Text[ korean ] = "# ·¹Äڵ带 °¡Á®¿Ô½À´Ï´Ù ...";
+ Text[ turkish ] = "# veri kümesi içe aktarýldý...";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_MAKEOUTLINE_0
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Gruppierung nicht möglich : Gruppierung nicht m÷glich */
+ Text = "Gruppierung nicht möglich" ;
+ Text [ ENGLISH ] = "Grouping not possible" ;
+ Text [ norwegian ] = "Grouping not possible" ;
+ Text [ italian ] = "Impossibile raggruppare" ;
+ Text [ portuguese_brazilian ] = "Agrupamento impossível" ;
+ Text [ portuguese ] = "Impossível agrupar." ;
+ Text [ finnish ] = "Ryhmää ei voi tehdä" ;
+ Text [ danish ] = "Gruppering er ikke mulig" ;
+ Text [ french ] = "Impossible de grouper" ;
+ Text [ swedish ] = "Gruppering inte möjlig" ;
+ Text [ dutch ] = "Groeperen onmogelijk" ;
+ Text [ spanish ] = "No es posible agrupar" ;
+ Text [ english_us ] = "Grouping not possible" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨·Ö×é";
+ Text[ russian ] = "Ãðóïïèðîâàòü íåâîçìîæíî";
+ Text[ polish ] = "Grupowanie niemo¿liwe";
+ Text[ japanese ] = "¸ÞÙ°Ì߉»‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk«Ø¥ß¸s²Õ";
+ Text[ arabic ] = "ÇáÊÌãíÚ ÛíÑ ããßä";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé ïìáäïðïßçóç";
+ Text[ korean ] = "±×·ì¸¸µé±â ºÒ°¡´É";
+ Text[ turkish ] = "Gruplama yapýlamaz";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_REMOVEOUTLINE_0
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Aufheben nicht möglich : Aufheben nicht m÷glich */
+ Text = "Aufheben nicht möglich" ;
+ Text [ ENGLISH ] = "Ungrouping not possible" ;
+ Text [ norwegian ] = "Ungrouping not possible" ;
+ Text [ italian ] = "Impossibile separare" ;
+ Text [ portuguese_brazilian ] = "Desagrupamento impossível" ;
+ Text [ portuguese ] = "Impossível desfazer grupo" ;
+ Text [ finnish ] = "Ryhmää ei voi purkaa" ;
+ Text [ danish ] = "Det er ikke muligt at ophæve" ;
+ Text [ french ] = "Dissociation impossible" ;
+ Text [ swedish ] = "Omöjligt att upphäva" ;
+ Text [ dutch ] = "Groep opheffen niet mogelijk" ;
+ Text [ spanish ] = "No es posible deshacer la agrupación" ;
+ Text [ english_us ] = "Ungrouping not possible" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨È¡Ïû";
+ Text[ russian ] = "Ðàçãðóïïèðîâàòü íåâîçìîæíî";
+ Text[ polish ] = "Rozgrupowanie niemo¿liwe";
+ Text[ japanese ] = "‰ðœ‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk¨ú®ø";
+ Text[ arabic ] = "ÇáÅÒÇáÉ ÛíÑ ããßäÉ";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé ç êáôÜñãçóç ôçò ïìáäïðïßçóçò";
+ Text[ korean ] = "±×·ì ÇØü°¡ ºÒ°¡´É";
+ Text[ turkish ] = "Grup çözülemiyor";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_PASTEFROMCLIP_0
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen auf Mehrfachselektion nicht möglich : Einf³gen auf Mehrfachselektion nicht m÷glich */
+ Text = "Einfügen auf Mehrfachselektion nicht möglich" ;
+ Text [ ENGLISH ] = "Insert in multi selection not possible" ;
+ Text [ norwegian ] = "Insert in multi selection not possible" ;
+ Text [ italian ] = "Impossibile inserire da selezione multipla" ;
+ Text [ portuguese_brazilian ] = "Inserção em multi seleção impossível" ;
+ Text [ portuguese ] = "Inserção em multiselecção impossível" ;
+ Text [ finnish ] = "Monivalintaan ei voi lisätä" ;
+ Text [ danish ] = "Det er ikke muligt at indsætte i multimarkeringer" ;
+ Text [ french ] = "Insertion impossible dans la sélection multiple" ;
+ Text [ swedish ] = "Det är inte möjligt att infoga i multipel markering" ;
+ Text [ dutch ] = "Invoegen in meervoudige selectie onmogelijk" ;
+ Text [ spanish ] = "No es posible insertar en selección múltiple" ;
+ Text [ english_us ] = "Insert into multiple selection not possible" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨ÔÚ¶àÖØÑ¡ÔñÄÚ²åÈë";
+ Text[ russian ] = "Âñòàâèòü ìíîãîêðàòíîå âûäåëåíèå íåëüçÿ";
+ Text[ polish ] = "Wstawienie do wielokrotnej selekcji jest niemo¿liwe";
+ Text[ japanese ] = "•¡”‘I‘ð‚Ì’†‚É‘}“ü‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk¦b¦h­«¿ï¾Ü¤º´¡¤J";
+ Text[ arabic ] = "ÇáÅÏÑÇÌ Ýí ÊÍÏíÏ ãÊÚÏÏ ÛíÑ ããßä";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé åéóáãùãÞ óå ðïëëáðëÞ åðéëïãÞ";
+ Text[ korean ] = "´ÙÁß ¼±Åÿ¡ »ðÀÔÀº ºÒ°¡´É";
+ Text[ turkish ] = "Çoklu seçimlerde ekleme yapýlamaz";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_PASTEFROMCLIP_1
+ {
+ Text = "Zusammenfassen nicht verschachteln!" ;
+ Text [ ENGLISH ] = "Inserting merged cells into merged cells missmatched!" ;
+ Text [ norwegian ] = "Inserting merged cells into merged cells missmatched!" ;
+ Text [ italian ] = "Non inserire celle in celle raggruppate!" ;
+ Text [ portuguese_brazilian ] = "Inserção de células mescladas em células mescladas desencontradas!" ;
+ Text [ portuguese ] = "Não é permitido inserir células em células intercaladas!" ;
+ Text [ finnish ] = "Yhdistettyjen solujen lisäys yhdistettyihin soluihin epäonnistui!" ;
+ Text [ danish ] = "Det er ikke tilladt at overlappe flettede celler!" ;
+ Text [ french ] = "Insertion de cellules fusionnées dans d'autres cellules fusionnées : échec !" ;
+ Text [ swedish ] = "Inte tillåtet att överlappa sammanfattade celler!" ;
+ Text [ dutch ] = "Overlapping van samengevoegde cellen niet geoorloofd!" ;
+ Text [ spanish ] = "¡No es posible insertar celdas fusionadas en celdas fusionadas!" ;
+ Text [ english_us ] = "Cell merge not possible if cells already merged!" ;
+ Text[ chinese_simplified ] = "²»ÔÊÐí¸´ºÏºÏ²¢£¡";
+ Text[ russian ] = "Ïåðåêðûòèå îáúåäèíåííûõ ÿ÷ååê íåäîïóñòèìî!";
+ Text[ polish ] = "Nak³adanie scalonach komórek jest niedopuszczalne!";
+ Text[ japanese ] = "“‡‚Íd‚Ë‚ç‚ê‚Ü‚¹‚ñ!";
+ Text[ chinese_traditional ] = "¤£®e³\\½Æ¦X¦X¨Ö¡I";
+ Text[ arabic ] = "ããäæÚ ÊÑÇßÈ ÇáÎáÇíÇ ÇáãÏãÌÉ!";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé óõã÷þíåõóç êåëéþí ôá ïðïßá åßíáé Þäç óõã÷ùíåõìÝíá!";
+ Text[ korean ] = "ÀÌ¹Ì º´ÇÕµÈ ¼¿ÀÇ º´ÇÕ¸¥ ºÒ°¡´ÉÇÕ´Ï´Ù!";
+ Text[ turkish ] = "Özetlenmiþ hücreler özetlenemez!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_MOVEBLOCKTO_0
+ {
+ Text = "Zusammenfassen nicht verschachteln!" ;
+ Text [ ENGLISH ] = "Inserting merged cells into merged cells missmatched!" ;
+ Text [ norwegian ] = "Inserting merged cells into merged cells missmatched!" ;
+ Text [ italian ] = "Non inserire celle in celle raggruppate!" ;
+ Text [ portuguese_brazilian ] = "Inserção de células mescladas em células mescladas desencontradas!" ;
+ Text [ portuguese ] = "Não é permitido inserir células em células intercaladas!" ;
+ Text [ finnish ] = "Yhdistettyjen solujen lisäys yhdistettyihin soluihin epäonnistui!" ;
+ Text [ danish ] = "Det er ikke tilladt at overlappe flettede celler!" ;
+ Text [ french ] = "Insertion de cellules fusionnées dans d'autres cellules fusionnées : échec !" ;
+ Text [ swedish ] = "Inte tillåtet att överlappa sammanfattade celler!" ;
+ Text [ dutch ] = "Overlapping van samengevoegde cellen niet geoorloofd!" ;
+ Text [ spanish ] = "¡No es posible insertar celdas fusionadas en celdas fusionadas!" ;
+ Text [ english_us ] = "Cell merge not possible if cells already merged!" ;
+ Text[ chinese_simplified ] = "²»ÔÊÐí¸´ºÏºÏ²¢£¡";
+ Text[ russian ] = "Ïåðåêðûòèå îáúåäèíåííûõ ÿ÷ååê íåäîïóñòèìî!";
+ Text[ polish ] = "Nak³adanie scalonych komórek jest niedopuszczalne!";
+ Text[ japanese ] = "“‡‚Íd‚Ë‚ç‚ê‚Ü‚¹‚ñ!";
+ Text[ chinese_traditional ] = "¤£®e³\\½Æ¦X¦X¨Ö¡I";
+ Text[ arabic ] = "ããäæÚ ÊÑÇßÈ ÇáÎáÇíÇ ÇáãÏãÌÉ!";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé óõã÷þíåõóç êåëéþí ôá ïðïßá åßíáé Þäç óõã÷ùíåõìÝíá!";
+ Text[ korean ] = "ÀÌ¹Ì º´ÇÕµÈ ¼¿ÀÇ º´ÇÕ¸¥ ºÒ°¡´ÉÇÕ´Ï´Ù!";
+ Text[ turkish ] = "Özetlenmiþ hücreler özetlenemez!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_APPLYPATTLINES_0
+ {
+ Text = "Rahmen nicht auf Mehrfachselektion" ;
+ Text [ ENGLISH ] = "Border not with multi selection" ;
+ Text [ norwegian ] = "Border not with multi selection" ;
+ Text [ italian ] = "Bordo non su selezione multipla" ;
+ Text [ portuguese_brazilian ] = "Borda sem multi seleção" ;
+ Text [ portuguese ] = "Contorno incompatível com a multiselecção." ;
+ Text [ finnish ] = "Monivalinnassa ei ole reunaviivaa" ;
+ Text [ danish ] = "Ramme ikke på multimarkering" ;
+ Text [ french ] = "Bordure incompatible avec la sélection multiple" ;
+ Text [ swedish ] = "Ej multipel markering för kantlinje" ;
+ Text [ dutch ] = "Geen kader bij meervoudige selectie" ;
+ Text [ spanish ] = "Marco incompatible con selección múltiple" ;
+ Text [ english_us ] = "Cannot apply borders to multiple selection" ;
+ Text[ chinese_simplified ] = "¿òÎÞ·¨ÊÊÓÃÓÚ¶àÖØÑ¡Ôñ";
+ Text[ russian ] = "Ïðèìåíèòü ðàìêè äëÿ ìíîãîêðàòíîãî îòáîðà íåëüçÿ";
+ Text[ polish ] = "Nie mo¿e u¿yæ ramki do wielokrotnej selekcji";
+ Text[ japanese ] = "˜g‚Í•¡”‘I‘ð‚ÅŽg—p‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "®ØµLªk¥Î©ó¦h­«¿ï¾Ü";
+ Text[ arabic ] = "áÇ íãßä ÇÓÊÎÏÇã ÇáÅØÇÑ áÚãá ÊÍÏíÏ ãÊÚÏÏ";
+ Text[ greek ] = "Äåí åßíáé äõíáôÞ ç åöáñìïãÞ ðåñéãñáììÜôùí óå ðïëëáðëÞ åðéëïãÞ";
+ Text[ korean ] = "°æ°è¼±¿¡ ´ÙÁß ¼±ÅÃÀÌ Àû¿ë µÉ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Çoklu hücre seçimi için kenarlýk oluþturulamýyor";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_INSERTCELLS_0
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Kann nicht in zusammengefaßte Bereiche einfügen : Kann nicht in zusammengefa˜te Bereiche einf³gen */
+ Text = "Kann nicht in zusammengefasste Bereiche einfügen" ;
+ Text [ ENGLISH ] = "Can not insert into merged ranges" ;
+ Text [ norwegian ] = "Can not insert into merged ranges" ;
+ Text [ italian ] = "Impossibile inserire nelle aree unite" ;
+ Text [ portuguese_brazilian ] = "Não é possível inserir em faixas mescladas" ;
+ Text [ portuguese ] = "Impossível inserir em áreas intercaladas." ;
+ Text [ finnish ] = "Yhdistettyihin alueisiin ei voi lisätä" ;
+ Text [ danish ] = "Kan ikke indsætte i flettede områder" ;
+ Text [ french ] = "Insertion impossible dans des plages contant des cellules fusionnées" ;
+ Text [ swedish ] = "Kan inte infoga i sammanfattade områden" ;
+ Text [ dutch ] = "Invoegen in samengevoegde bereiken onmogelijk!" ;
+ Text [ spanish ] = "No es posible insertar en áreas fusionadas" ;
+ Text [ english_us ] = "Inserting into merged ranges not possible" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨²åÈëµ½ºÏ²¢µÄÇøÓòÄÚ";
+ Text[ russian ] = "Âñòàâèòü â îáúåäèíåííûå îáëàñòè íåâîçìîæíî";
+ Text[ polish ] = "Nie mo¿na wstawiæ do po³¹czonych obszarów";
+ Text[ japanese ] = "Œ‹‡‚µ‚½”͈͂ɑ}“ü‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk¦b¦X¨Öªº°Ï°ì¤º´¡¤J";
+ Text[ arabic ] = "áÇ íÓÊØíÚ ÇáÅÏÑÇÌ Ýí äØÇÞÇÊ ãÏãÌÉ";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé ðñïóèÞêç óå óõã÷ùíåõìÝíåò ðåñéï÷Ýò";
+ Text[ korean ] = "º´ÇÕµÈ ¿µ¿ª¿¡ »ðÀÔÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Birleþtirilmiþ aralýklara ekleme yapýlamaz";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_DELETECELLS_0
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Kann nicht aus zusammengefaßten Bereichen löschen : Kann nicht aus zusammengefa˜ten Bereichen l÷schen */
+ Text = "Kann nicht aus zusammengefassten Bereichen löschen" ;
+ Text [ ENGLISH ] = "Can not delete in merged ranges" ;
+ Text [ norwegian ] = "Can not delete in merged ranges" ;
+ Text [ italian ] = "Impossibile cancellare nelle aree unite" ;
+ Text [ portuguese_brazilian ] = "Não é possível apagar em faixas mescladas" ;
+ Text [ portuguese ] = "Impossível eliminar em áreas intercaladas" ;
+ Text [ finnish ] = "Yhdistettyjä alueita ei voi poistaa" ;
+ Text [ danish ] = "Kan ikke slette i flettede områder" ;
+ Text [ french ] = "Suppression impossible dans des plages contant des cellules fusionnées" ;
+ Text [ swedish ] = "Kan inte radera från sammanfattade områden" ;
+ Text [ dutch ] = "Verwijderen binnen samengevoegde bereiken onmogelijk!" ;
+ Text [ spanish ] = "No se puede eliminar en áreas fusionadas" ;
+ Text [ english_us ] = "Deleting in merged ranges not possible" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨´ÓºÏ²¢µÄÇøÓòÖÐɾ³ý";
+ Text[ russian ] = "Óäàëèòü èç îáúåäèíåííûõ îáëàñòåé íåâîçìîæíî";
+ Text[ polish ] = "Nie mo¿e usun¹æ ze po³¹czonych obszarów";
+ Text[ japanese ] = "Œ‹‡‚µ‚½”͈͂©‚ç‚Í휂ł«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk§R°£¦X¨Öªº°Ï°ì";
+ Text[ arabic ] = "áÇ íãßä ÇáÍÐÝ ãä äØÇÞÇÊ ãÏãÌÉ";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé äéáãñáöÞ óôéò óõã÷ùíåõìÝíåò ðåñéï÷Ýò";
+ Text[ korean ] = "º´ÇÕµÈ ¿µ¿ªÀÇ »èÁ¦°¡ ºÒ°¡´ÉÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Birleþtirilmiþ aralýklarda silme yapýlamaz";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_MERGECELLS_0
+ {
+ Text = "Zusammenfassungen nicht verschachteln !" ;
+ Text [ ENGLISH ] = "Inserting cells into merged cells missmatched!" ;
+ Text [ norwegian ] = "Inserting cells into merged cells missmatched!" ;
+ Text [ italian ] = "Non inserire celle raggruppate in celle raggruppate!" ;
+ Text [ portuguese_brazilian ] = "Inserção de células em células mescladas desencontrada!" ;
+ Text [ portuguese ] = "Não é permitido inserir células em células intercaladas!" ;
+ Text [ finnish ] = "Solujen lisäys yhdistettyihin soluihin epäonnistui!" ;
+ Text [ danish ] = "Det er ikke tilladt at overlappe flettede celler!" ;
+ Text [ french ] = "Insertion de cellules dans des cellules fusionnées : échec !" ;
+ Text [ swedish ] = "Inte tillåtet att överlappa sammanfattade celler!" ;
+ Text [ dutch ] = "Overlappen van samengevoegde cellen niet geoorloofd!" ;
+ Text [ spanish ] = "¡No es posible insertar celdas fusionadas en celdas fusionadas!" ;
+ Text [ english_us ] = "Cell merge not possible if cells already merged" ;
+ Text[ chinese_simplified ] = "²»ÔÊÐí¸´ºÏºÏ²¢£¡";
+ Text[ russian ] = "Ïåðåêðûòèå îáúåäèíåííûõ ÿ÷ååê íåäîïóñòèìî !";
+ Text[ polish ] = "Nak³adanie scalonych komóek jest niedopuszczalne!";
+ Text[ japanese ] = "“‡‚Íd‚Ë‚ç‚ê‚Ü‚¹‚ñ!";
+ Text[ chinese_traditional ] = "¤£®e³\\½Æ¦X¦X¨Ö¡I";
+ Text[ arabic ] = "ããäæÚ ÊÑÇßÈ ÇáÎáÇíÇ ÇáãÏãÌÉ !";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé óõã÷þíåõóç êåëéþí ôá ïðïßá åßíáé Þäç óõã÷ùíåõìÝíá!";
+ Text[ korean ] = "ÀÌ¹Ì º´ÇÕµÈ ¼¿ÀÇ º´ÇÕ¸¥ ºÒ°¡´ÉÇÕ´Ï´Ù!";
+ Text[ turkish ] = "Özetlenmiþ hücreler özetlenemez!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SORT_ERR_MERGED
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Bereiche mit zusammengefaßten Zellen können nur ohne Formate sortiert werden. : Bereiche mit zusammengefa˜ten Zellen k÷nnen nur ohne Formate sortiert werden. */
+ Text = "Bereiche mit zusammengefassten Zellen können nur ohne Formate sortiert werden." ;
+ Text [ ENGLISH ] = "Areas containig merged cells can only be sorted without including formats." ;
+ Text [ portuguese ] = "As áreas contendo células unidas só podem ser ordenadas sem formato." ;
+ Text [ english_us ] = "Ranges containing merged cells can only be sorted without formats." ;
+ Text [ portuguese_brazilian ] = "Bereiche mit zusammengefaßten Zellen können nur ohne Formate sortiert werden." ;
+ Text [ swedish ] = "Områden med sammanslagna celler kan bara sorteras utan format." ;
+ Text [ danish ] = "Områder med flettede celler kan kun sorteres uden formater." ;
+ Text [ italian ] = "Le aree con celle raggruppate possono essere ordinate solo senza formati." ;
+ Text [ spanish ] = "Áreas con celdas fusionadas solo se pueden ordenar sin formato." ;
+ Text [ french ] = "Tri dans des plages contant des cellules fusionnées uniquement possible sans format" ;
+ Text [ dutch ] = "Bereiken met samengevatte cellen kunnen allleen maar zonder opmaak worden gesorteerd." ;
+ Text[ chinese_simplified ] = "Ö»ÓÐÔÚ²»´ø¸ñʽµÄÌõ¼þϲÅÄÜÅÅÐòº¬Óкϲ¢µ¥Ôª¸ñµÄÇøÓò¡£";
+ Text[ russian ] = "Ñîðòèðîâêà îáëàñòåé ñ îáúåäèíåííûìè ÿ÷åéêàìè âîçìîæíà òîëüêî áåç ôîðìàòà.";
+ Text[ polish ] = "Obszary zawieraj¹ce po³¹czone komórki mog¹ byæ sortowane tylko bez formatów.";
+ Text[ japanese ] = "Œ‹‡‚µ‚½¾Ù‚ðŠÜ‚ޔ͈͂͑Ž®‚È‚µ‚Å‚Ì‚Ý•À‚בւ¦‚ª‰Â”\\‚Å‚·B";
+ Text[ chinese_traditional ] = "¥u¦³¦b¤£±a®æ¦¡ªº±ø¥ó¤U¤~¯à±Æ§Ç§t¦³¦X¨ÖªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "áÇ íãßä ÝÑÒ ÇáäØÇÞÇÊ ÐÇÊ ÇáÎáÇíÇ ÇáãÏãÌÉ ÅáÇ ÈÏæä ÊäÓíÞÇÊ.";
+ Text[ greek ] = "Ç ôáîéíüìçóç ðåñéï÷þí, ïé ïðïßåò ðåñéÝ÷ïõí óõã÷ùíåõìÝíá êåëéÜ, åßíáé äõíáôüí íá ãßíåé ìüíï ÷ùñßò ôç ìïñöïðïßçóç.";
+ Text[ korean ] = "º´ÇÕµÈ ¼¿À» Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ªÀº ¼­½Ä ¾øÀÌ Á¤¿­µÉ ¼ö ÀÖ½À´Ï´Ù.";
+ Text[ turkish ] = "Birleþtirilmiþ hücre içeren aralýklar yalnýzca formatsýz olarak sýralanabilir.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SEARCHANDREPLACE_0
+ {
+ Text = "Suchbegriff nicht gefunden." ;
+ Text [ ENGLISH ] = "Search pattern not found." ;
+ Text [ english_us ] = "Search key not found." ;
+ Text [ italian ] = "Termine non trovato" ;
+ Text [ spanish ] = "No se encontró la expresión buscada." ;
+ Text [ french ] = "Élément recherché introuvable." ;
+ Text [ dutch ] = "Zoekbegrip niet gevonden" ;
+ Text [ swedish ] = "Sökord hittades inte." ;
+ Text [ danish ] = "Søgningen gav intet resultat." ;
+ Text [ portuguese ] = "Impossível encontrar expressão procurada." ;
+ Text [ portuguese_brazilian ] = "Suchbegriff nicht gefunden." ;
+ Text[ chinese_simplified ] = "ûÓÐÕÒµ½ËÑÑ°ÄÚÈÝ¡£";
+ Text[ russian ] = "Äàííûå, óäîâëåòâîðÿþùèå óñëîâèþ, íå îáíàðóæåíû.";
+ Text[ polish ] = "Szukanego has³a nie znaleziono.";
+ Text[ japanese ] = "ŒŸõ€–Ú‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¨S¦³§ä¨ì´M§ä¤º®e¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÇáÈíÇäÇÊ ÇáÊí ÊÈÍË ÚäåÇ.";
+ Text[ greek ] = "Äåí âñÝèçêå ï üñïò áíáæÞôçóçò.";
+ Text[ korean ] = "°Ë»ö Å°°¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Aranan terim bulunamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SOLVE_0
+ {
+ Text = "Die Zielwertsuche war erfolgreich.\n" ;
+ Text [ ENGLISH ] = "Goal Seek successfull.\n" ;
+ Text [ norwegian ] = "Goal Seek successfull.\n" ;
+ Text [ italian ] = "Ricerca del valore di destinazione riuscita.\n" ;
+ Text [ portuguese_brazilian ] = "Busca de objetivo bem sucedida.\n" ;
+ Text [ portuguese ] = "Procura do objetivo bem sucedida.\n" ;
+ Text [ finnish ] = "Tavoitehaku onnistui.\n" ;
+ Text [ danish ] = "Målsøgningen lykkedes.\n" ;
+ Text [ french ] = "Recherche de valeur cible réussie.\n" ;
+ Text [ swedish ] = "Målsökning lyckades.\n" ;
+ Text [ dutch ] = "Zoeken van doelwaarde met succes uitgevoerd.\n" ;
+ Text [ spanish ] = "La búsqueda del valor pretendido ha finalizado con éxito.\n" ;
+ Text [ english_us ] = "Goal Seek successful.\n" ;
+ Text[ chinese_simplified ] = "ÒѾ­Íê³Éµ¥±äÁ¿Çó½â¡£\n";
+ Text[ russian ] = "Ïîäáîð ïàðàìåòðà áûë óäà÷íûì.\n";
+ Text[ polish ] = "Szukanie wyniku by³o pomyœlne.\n";
+ Text[ japanese ] = "ºÞ°Ù¼°¸¬Œ÷\n";
+ Text[ chinese_traditional ] = "¤w¸g§¹¦¨¥Ø¼Ð·j´M¡C\n";
+ Text[ arabic ] = "ÊãÊ ÚãáíÉ ÇáÈÍË Úä ÇáÞíãÉ ÇáåÏÝ ÈäÌÇÍ.\n";
+ Text[ greek ] = "Ç áíáæÞôçóç óôü÷ïõ ðÝôõ÷å.\n";
+ Text[ korean ] = "¸ñÇ¥ ã±â°¡ ¼º°øÀûÀ¸·Î ¼öÇàµÇ¾ú½À´Ï´Ù.\n";
+ Text[ turkish ] = "Hedef deðer arama baþarýlý oldu.\n";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SOLVE_1
+ {
+ Text = "Soll das Ergebnis (" ;
+ Text [ ENGLISH ] = "Insert result (" ;
+ Text [ norwegian ] = "Insert result (" ;
+ Text [ italian ] = "Inserire il risultato (" ;
+ Text [ portuguese_brazilian ] = "Inserir resultado (" ;
+ Text [ portuguese ] = "Inserir resultado (" ;
+ Text [ finnish ] = "Lisätäänkö tulos (" ;
+ Text [ danish ] = "Skal resultatet (" ;
+ Text [ french ] = "Insérer le résultat (" ;
+ Text [ swedish ] = "Ska resultatet (" ;
+ Text [ dutch ] = "Uitkomst (" ;
+ Text [ spanish ] = "¿Desea insertar el resultado (" ;
+ Text [ english_us ] = "Insert result (" ;
+ Text[ chinese_simplified ] = "Õâ¸ö½á¹û(";
+ Text[ russian ] = "Âñòàâèòü ðåçóëüòàò (";
+ Text[ polish ] = "Wprowadziæ wynik (";
+ Text[ japanese ] = "‚±‚ÌŒ‹‰Ê(";
+ Text[ chinese_traditional ] = "³o­Óµ²ªG(";
+ Text[ arabic ] = "åá ÊÑíÏ ÅÏÑÇÌ ÇáäÊíÌÉ (";
+ Text[ greek ] = "ÈÝëåôå ôï áðïôÝëåóìá (";
+ Text[ korean ] = "°á°ú »ðÀÔ (";
+ Text[ turkish ] = "Sonuç (";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SOLVE_2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ) in die aktuelle Zelle übernommen werden? : ) in die aktuelle Zelle ³bernommen werden? */
+ Text = ") in die aktuelle Zelle übernommen werden?" ;
+ Text [ ENGLISH ] = ") in current cell?" ;
+ Text [ norwegian ] = ") in current cell?" ;
+ Text [ italian ] = ") nella cella corrente?" ;
+ Text [ portuguese_brazilian ] = ") na célula atual?" ;
+ Text [ portuguese ] = ") na célula activa?" ;
+ Text [ finnish ] = ") nykyiseen soluun?" ;
+ Text [ danish ] = ") indsættes i den aktuelle celle?" ;
+ Text [ french ] = ") dans la cellule courante ?" ;
+ Text [ swedish ] = ") överföras till den aktuella cellen?" ;
+ Text [ dutch ] = ") in actieve cel invoegen?" ;
+ Text [ spanish ] = ") en la celda actual?" ;
+ Text [ english_us ] = ") into current cell?" ;
+ Text[ chinese_simplified ] = ")Òª¼ÓÈ뵱ǰµÄµ¥Ôª¸ñÄÚÂð£¿";
+ Text[ russian ] = ") â òåêóùóþ ÿ÷åéêó?";
+ Text[ polish ] = ") do bie¿¹cek komórki?";
+ Text[ japanese ] = ")‚ðŒ»Ý‚̾قɑ}“ü‚µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = ")­n¥[¤J·í«eªºÀx¦s®æ¤º¡H";
+ Text[ arabic ] = ") Ýí ÇáÎáíÉ ÇáÍÇáíÉ¿";
+ Text[ greek ] = ") íá åöáñìïóôåß óôï ôñÝ÷ïí êåëß;";
+ Text[ korean ] = ") ÇöÀçÀÇ ¼¿·Î?";
+ Text[ turkish ] = ") seçili hücreye eklensin mi?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SOLVE_3
+ {
+ Text = "Die Zielwertsuche war erfolglos.\n" ;
+ Text [ ENGLISH ] = "Goal Seek not successfull.\n" ;
+ Text [ norwegian ] = "Goal Seek not successfull.\n" ;
+ Text [ italian ] = "Ricerca del valore di destinazione senza esito.\n" ;
+ Text [ portuguese_brazilian ] = "Busca de objetivo mal sucedida.\n" ;
+ Text [ portuguese ] = "Procura do objetivo sem êxito.\n" ;
+ Text [ finnish ] = "Tavoitehaku epäonnistui.\n" ;
+ Text [ danish ] = "Målsøgning lykkedes ikke.\n" ;
+ Text [ french ] = "Échec de la recherche de valeur cible.\n" ;
+ Text [ swedish ] = "Målsökning lyckades inte.\n" ;
+ Text [ dutch ] = "Zoeken naar doelwaarde zonder resultaat.\n" ;
+ Text [ spanish ] = "No se pudo encontrar el valor pretendido.\n" ;
+ Text [ english_us ] = "Goal Seek not successful.\n" ;
+ Text[ chinese_simplified ] = "µ¥±äÁ¿Çó½âʧ°Ü¡£\n";
+ Text[ russian ] = "Ïîäáîð ïàðàìåòðà áûë íåóäà÷íûì.\n";
+ Text[ polish ] = "Szukanie wyniku by³o niepomyœlne.\n";
+ Text[ japanese ] = "ºÞ°Ù¼°¸•s¬Œ÷\n";
+ Text[ chinese_traditional ] = "¥Ø¼Ð·j´M¨S¦³¦¨¥\\¡C\n";
+ Text[ arabic ] = "áã ÊäÌÍ ÚãáíÉ ÇáÈÍË Úä ÇáÞíãÉ ÇáåÏÝ.\n";
+ Text[ greek ] = "Ç áíáæÞôçóç óôü÷ïõ äåí ðÝôõ÷å.\n";
+ Text[ korean ] = "¸ñÇ¥ ã±â°¡ ¼º°øÀûÀ¸·Î ¼öÇàµÇÁö ¾Ê¾Ò½À´Ï´Ù.\n";
+ Text[ turkish ] = "Hedef deðer arama baþarýsýz oldu.\n";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SOLVE_4
+ {
+ Text = "Es konnte kein exakter Wert gefunden werden.\n" ;
+ Text [ ENGLISH ] = "No exact value matched." ;
+ Text [ norwegian ] = "No exact value matched." ;
+ Text [ italian ] = "Non è stato trovato alcun valore esatto.\n" ;
+ Text [ portuguese_brazilian ] = "Valor exato desencontrado." ;
+ Text [ portuguese ] = "Impossível encontrar valor exacto.\n" ;
+ Text [ finnish ] = "Tarkkaa arvoa ei löytynyt." ;
+ Text [ danish ] = "Det var ikke muligt at finde en eksakt værdi.\n" ;
+ Text [ french ] = "Impossible de trouver une valeur exacte.\n" ;
+ Text [ swedish ] = "Inget exakt värde har hittats.\n" ;
+ Text [ dutch ] = "Geen exacte waarde gevonden.\n." ;
+ Text [ spanish ] = "No se pudo encontrar ningún valor exacto.\n" ;
+ Text [ english_us ] = "No exact value found. \n" ;
+ Text[ chinese_simplified ] = "ûÓÐÕÒµ½¾«È·µÄÊýÖµ¡£\n";
+ Text[ russian ] = "Íå óäàåòñÿ íàéòè òî÷íîå çíà÷åíèå.\n";
+ Text[ polish ] = "Nie mo¿na by³o znaleŸæ dok³adnej wartoœci.\n";
+ Text[ japanese ] = "³Šm‚È’l‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ \n";
+ Text[ chinese_traditional ] = "¨S¦³§ä¨ìºë½Tªº¼Æ­È¡C\n";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÞíãÉ ãÖÈæØÉ ÊãÇãÇð.\n";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá âñåèåß áêñéâÞò ôéìÞ \n";
+ Text[ korean ] = "Á¤È®ÇÑ °ªÀÌ ¹ß°ßµÇÁö ¾Ê¾Ò½À´Ï´Ù. \n";
+ Text[ turkish ] = "Özdeþ deðer bulunamadý.\n";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SOLVE_5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Soll die beste Näherung ( : Soll die beste Nõherung ( */
+ Text = "Soll die beste Näherung (" ;
+ Text [ ENGLISH ] = "Insert closest value (" ;
+ Text [ norwegian ] = "Insert closest value (" ;
+ Text [ italian ] = "Digitate il valore più vicino (" ;
+ Text [ portuguese_brazilian ] = "Inserir valor mais próximo (" ;
+ Text [ portuguese ] = "Introduzir valor mais próximo (" ;
+ Text [ finnish ] = "Lisätäänkö lähin arvo (" ;
+ Text [ danish ] = "Skal den nærmeste værdi (" ;
+ Text [ french ] = "Appliquer (" ;
+ Text [ swedish ] = "Ska närmaste värdet (" ;
+ Text [ dutch ] = "Dichtstbijzijnde waarde (" ;
+ Text [ spanish ] = "¿Desea insertar el valor más cercano (" ;
+ Text [ english_us ] = "Insert closest value (" ;
+ Text[ chinese_simplified ] = "ÄúҪʹÓÃÕâ¸ö×î½üËƵÄÊýÖµ(";
+ Text[ russian ] = "Âñòàâèòü íàèáîëåå ïðèáëèæåííîå çíà÷åíèå (";
+ Text[ polish ] = "Czy najbli¿sza wartoœæ (";
+ Text[ japanese ] = "Å‚à‹ß‚¢’l(";
+ Text[ chinese_traditional ] = "­n¨Ï¥Î³o­Ó³Ìªñ¦üªº¼Æ­È(";
+ Text[ arabic ] = "åá ÊÑíÏ ÅÏÑÇÌ ÃÞÑÈ ÞíãÉ (";
+ Text[ greek ] = "ÈÝëåôå ç ðëçóéÝóôåñç ôéìÞ (";
+ Text[ korean ] = "±Ù»ç °ªÀ» »ðÀÔ (";
+ Text[ turkish ] = "En yakýn deðer (";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SOLVE_6
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ) übernommen werden? : ) ³bernommen werden? */
+ Text = ") übernommen werden?" ;
+ Text [ ENGLISH ] = ")?" ;
+ Text [ norwegian ] = ")?" ;
+ Text [ italian ] = ") accettato?" ;
+ Text [ portuguese_brazilian ] = ")?" ;
+ Text [ portuguese ] = ")?" ;
+ Text [ finnish ] = ")?" ;
+ Text [ danish ] = ") overtages?" ;
+ Text [ french ] = ") la valeur la plus proche ?" ;
+ Text [ swedish ] = ") övertas?" ;
+ Text [ dutch ] = ") overnemen?" ;
+ Text [ spanish ] = ")?" ;
+ Text [ english_us ] = ")?" ;
+ Text[ chinese_simplified ] = ")Âð£¿";
+ Text[ russian ] = ")?";
+ Text[ polish ] = ") ma zostaæ zaakceptowana?";
+ Text[ japanese ] = ")‚ð“K—p‚µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = ")¡H";
+ Text[ arabic ] = ")¿";
+ Text[ greek ] = ") íá åöáñìïóôåß;";
+ Text[ korean ] = ")?";
+ Text[ turkish ] = ") alýnsýn mý?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TABLE_GESAMTERGEBNIS
+ {
+ Text = "Gesamtergebnis" ;
+ Text [ ENGLISH ] = "Total" ;
+ Text [ norwegian ] = "Total" ;
+ Text [ italian ] = "Totale" ;
+ Text [ portuguese_brazilian ] = "Total" ;
+ Text [ portuguese ] = "Soma total" ;
+ Text [ finnish ] = "Summa" ;
+ Text [ danish ] = "Total" ;
+ Text [ french ] = "Total" ;
+ Text [ swedish ] = "Totalt" ;
+ Text [ dutch ] = "Totaal" ;
+ Text [ spanish ] = "Total" ;
+ Text [ english_us ] = "Grand Total" ;
+ Text[ chinese_simplified ] = "×ܽá¹û";
+ Text[ russian ] = "Îáùèé èòîã";
+ Text[ polish ] = "Suma ca³kowita";
+ Text[ japanese ] = "‘Œv";
+ Text[ chinese_traditional ] = "Á`µ²ªG";
+ Text[ arabic ] = "ÇáãÌãæÚ";
+ Text[ greek ] = "Óõíïëéêü Üèñïéóìá";
+ Text[ korean ] = "Àüü ÇÕ°è";
+ Text[ turkish ] = "Genel toplam";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TABLE_ERGEBNIS
+ {
+ Text = "Ergebnis" ;
+ Text [ ENGLISH ] = "Result" ;
+ Text [ norwegian ] = "Resultat" ;
+ Text [ italian ] = "Risultato" ;
+ Text [ portuguese_brazilian ] = "Resultado" ;
+ Text [ portuguese ] = "Resultado" ;
+ Text [ finnish ] = "Tulos" ;
+ Text [ danish ] = "Resultat" ;
+ Text [ french ] = "Résultat" ;
+ Text [ swedish ] = "Resultat" ;
+ Text [ dutch ] = "Resultaat" ;
+ Text [ spanish ] = "Resultado" ;
+ Text [ english_us ] = "Result" ;
+ Text[ chinese_simplified ] = "½á¹û";
+ Text[ russian ] = "Ðåçóëüòàò";
+ Text[ polish ] = "Wynik";
+ Text[ japanese ] = "Œ‹‰Ê";
+ Text[ chinese_traditional ] = "µ²ªG";
+ Text[ arabic ] = "ÇáäÊíÌÉ";
+ Text[ greek ] = "ÁðïôÝëåóìá";
+ Text[ korean ] = "°á°ú";
+ Text[ turkish ] = "Sonuç";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_SPELLING
+ {
+ Text = "Rechtschreibung" ;
+ Text [ ENGLISH ] = "Spelling" ;
+ Text [ english_us ] = "Spellcheck" ;
+ Text [ italian ] = "Controllo ortografico" ;
+ Text [ spanish ] = "Ortografía" ;
+ Text [ french ] = "Orthographe" ;
+ Text [ dutch ] = "Spellingcontrole" ;
+ Text [ swedish ] = "Rättstavning" ;
+ Text [ danish ] = "Stavekontrol" ;
+ Text [ portuguese ] = "Ortografia" ;
+ Text [ portuguese_brazilian ] = "Rechtschreibung" ;
+ Text[ chinese_simplified ] = "Õý×Ö·¨";
+ Text[ russian ] = "Ïðàâîïèñàíèå";
+ Text[ polish ] = "Pisownia";
+ Text[ japanese ] = "•¶ÍZ³";
+ Text[ chinese_traditional ] = "«÷¦r";
+ Text[ arabic ] = "ÇáÊÏÞíÞ ÇáÅãáÇÆí";
+ Text[ greek ] = "Ïñèïãñáößá";
+ Text[ korean ] = "¸ÂÃã¹ý";
+ Text[ turkish ] = "Yazým denetimi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TABLE_UND
+ {
+ Text = "UND" ;
+ Text [ ENGLISH ] = "AND" ;
+ Text [ norwegian ] = "OG" ;
+ Text [ italian ] = "E" ;
+ Text [ portuguese_brazilian ] = "E" ;
+ Text [ portuguese ] = "E" ;
+ Text [ finnish ] = "JA" ;
+ Text [ danish ] = "OG" ;
+ Text [ french ] = "ET" ;
+ Text [ swedish ] = "OCH" ;
+ Text [ dutch ] = "EN" ;
+ Text [ spanish ] = "Y" ;
+ Text [ english_us ] = "AND" ;
+ Text[ chinese_simplified ] = "ºÍ";
+ Text[ russian ] = "È";
+ Text[ polish ] = "ORAZ";
+ Text[ japanese ] = "AND";
+ Text[ chinese_traditional ] = "©M";
+ Text[ arabic ] = "AND";
+ Text[ greek ] = "KAI";
+ Text[ korean ] = "±×¸®°í";
+ Text[ turkish ] = "VE";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TABLE_ODER
+ {
+ Text = "ODER" ;
+ Text [ ENGLISH ] = "OR" ;
+ Text [ norwegian ] = "ELLER" ;
+ Text [ italian ] = "O" ;
+ Text [ portuguese_brazilian ] = "OU" ;
+ Text [ portuguese ] = "OU" ;
+ Text [ finnish ] = "TAI" ;
+ Text [ danish ] = "ELLER" ;
+ Text [ french ] = "OU" ;
+ Text [ swedish ] = "ELLER" ;
+ Text [ dutch ] = "OF" ;
+ Text [ spanish ] = "O" ;
+ Text [ english_us ] = "OR" ;
+ Text[ chinese_simplified ] = "»ò";
+ Text[ russian ] = "ÈËÈ";
+ Text[ polish ] = "LUB";
+ Text[ japanese ] = "OR";
+ Text[ chinese_traditional ] = "©Î";
+ Text[ arabic ] = "Ãæ";
+ Text[ greek ] = "¹";
+ Text[ korean ] = "¶Ç´Â";
+ Text[ turkish ] = "VEYA";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TABLE_DEF
+ {
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Folha" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Ark" ;
+ Text [ french ] = "Feuille" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Werkblad" ;
+ Text [ spanish ] = "Hoja" ;
+ Text [ english_us ] = "Sheet" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ russian ] = "Ëèñò";
+ Text[ polish ] = "Arkusz";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "¤u§@ªí";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "Öýëëï";
+ Text[ korean ] = "½ÃÆ®";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MOVE_TO_END
+ {
+ Text = "- ans Ende stellen -" ;
+ Text [ ENGLISH ] = "- move to last position -" ;
+ Text [ norwegian ] = "- move to last position -" ;
+ Text [ italian ] = "- spostare all'ultima posizione -" ;
+ Text [ portuguese_brazilian ] = "- mova para última posição -" ;
+ Text [ portuguese ] = "- mover para última posição -" ;
+ Text [ finnish ] = "- siirrä viimeiseksi -" ;
+ Text [ danish ] = "- flyt til slutningen -" ;
+ Text [ french ] = "- placer en dernière position -" ;
+ Text [ swedish ] = "- flytta till slutet -" ;
+ Text [ dutch ] = "- naar laatste positie verplaatsen -" ;
+ Text [ spanish ] = "- desplazar a la última posición -" ;
+ Text [ english_us ] = "- move to end position -" ;
+ Text[ chinese_simplified ] = "- ÖÃÓÚβ¶Ë -";
+ Text[ russian ] = "- ïåðåìåñòèòü â êîíåö -";
+ Text[ polish ] = "- przenieœ na koñcow¹ pozycjê -";
+ Text[ japanese ] = "- ––”ö‚É‘}“ü -";
+ Text[ chinese_traditional ] = "- ²¾°Ê¨ì§ÀºÝ -";
+ Text[ arabic ] = "- ÊÍÑíß Åáì ÇáäåÇíÉ -";
+ Text[ greek ] = "- ìåôáêßíçóç ðñïò ôï ôÝëïò -";
+ Text[ korean ] = "- ¸¶Áö¸· ÁöÁ¡À¸·Î À̵¿ -";
+ Text[ turkish ] = "- sona taþý -";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_BOX_YNI
+ {
+ Text = "Nicht implementiert in diesem Build" ;
+ Text [ ENGLISH ] = "Not implemented in this build!" ;
+ Text [ norwegian ] = "Not implemented in this build!" ;
+ Text [ italian ] = "Non implementato in questa build!" ;
+ Text [ portuguese_brazilian ] = "Não implementado nesta estrutura!" ;
+ Text [ portuguese ] = "Não implementado nesta estrutura!" ;
+ Text [ finnish ] = "Toimintoa ei ole vielä toteutettu!" ;
+ Text [ danish ] = "Ikke implementeret i denne version." ;
+ Text [ french ] = "Pas disponible dans cette version !" ;
+ Text [ swedish ] = "Inte implementerad i denna Build!" ;
+ Text [ dutch ] = "Niet in deze versie beschikbaar!" ;
+ Text [ spanish ] = "No implementado en esta versión" ;
+ Text [ english_us ] = "Not implemented in this build." ;
+ Text[ chinese_simplified ] = "·Ç³£±§Ç¸£¬ÎÒÃÇ»¹Ã»ÓÐÔÚÕâ¸ö±àÒë°æ±¾ÐòºÅÄÚʵÏÖÕâ¸ö¹¦ÄÜ¡£";
+ Text[ russian ] = "Íå âíåäðåíî â ýòîé âåðñèè";
+ Text[ polish ] = "Nie zaimplementowane w tej wersji";
+ Text[ japanese ] = "‚±‚ÌBuild‚Å‚ÍŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "«D±`©êºp¡AÁÙ¨S¦³¦b³o­Ó½sĶª©¥»§Ç¸¹¤º¹ê²{³o­Ó¥\\¯à¡C";
+ Text[ arabic ] = "ÛíÑ ãäÝÐ Ýí åÐÇ ÇáãÈäì";
+ Text[ greek ] = "Äåí Ý÷åé õëïðïéçèåß óå áõôÞ ôç äïìÞ.";
+ Text[ korean ] = "±¸ÇöµÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Bu derlemede gerçekleþtirilmedi.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NO_REF_TABLE
+ {
+ Text = "#REF!" ;
+ Text [ ENGLISH ] = "#REF!" ;
+ Text [ norwegian ] = "#REF!" ;
+ Text [ italian ] = "#RIF!" ;
+ Text [ portuguese_brazilian ] = "#REF!" ;
+ Text [ portuguese ] = "#REF!" ;
+ Text [ french ] = "#REF !" ;
+ Text [ dutch ] = "#REF!" ;
+ Text [ spanish ] = "#REF!" ;
+ Text [ danish ] = "#REF!" ;
+ Text [ swedish ] = "#REF!" ;
+ Text [ finnish ] = "#REF!" ;
+ Text [ english_us ] = "#REF!" ;
+ Text[ chinese_simplified ] = "#REF!";
+ Text[ russian ] = "#ÑÑÛË!";
+ Text[ polish ] = "#REF!";
+ Text[ japanese ] = "#REF!";
+ Text[ chinese_traditional ] = "#REF!";
+ Text[ arabic ] = "#REF!";
+ Text[ greek ] = "#REF!";
+ Text[ korean ] = "#REF!";
+ Text[ turkish ] = "#REF!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_INVALID_DBAREA
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Datenbereich muß mindestens eine Daten-Zeile enthalten. : Der Datenbereich mu˜ mindestens eine Daten-Zeile enthalten. */
+ Text = "Der Datenbereich muss mindestens eine Daten-Zeile enthalten." ;
+ Text [ ENGLISH ] = "Invalid data area (at least one data row required)." ;
+ Text [ norwegian ] = "Invalid data area (at least one data row required)." ;
+ Text [ italian ] = "L'area dati deve contenere almeno una fila di dati." ;
+ Text [ portuguese_brazilian ] = "Área de dados inválida (pelo menos uma fileira de dados necessária)." ;
+ Text [ portuguese ] = "O intervalo de dados deve ter pelo menos uma linha de dados." ;
+ Text [ finnish ] = "Sopimaton tietoalue (ainakin yksi tietorivi tarvitaan)." ;
+ Text [ danish ] = "Dataområdet skal mindst indeholde en datarække." ;
+ Text [ french ] = "Toute plage de données doit contenir au moins une ligne !" ;
+ Text [ swedish ] = "Dataområdet måste innehålla minst en datarad." ;
+ Text [ dutch ] = "Gegevensbereik moet minstens één regel bevatten." ;
+ Text [ spanish ] = "El área de datos tiene que tener al menos una fila de datos." ;
+ Text [ english_us ] = "The data range must contain at least one row." ;
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓò±ØÐëÖÁÉÙº¬ÓÐÒ»ÐÐÊý¾Ý¡£";
+ Text[ russian ] = "Îáëàñòü äàííûõ äîëæíà ñîäåðæàòü êàê ìèíèìóì îäíó ñòðîêó äàííûõ.";
+ Text[ polish ] = "Obszar danych musi zawieraæ co najmniej jedn¹ komórkê danych.";
+ Text[ japanese ] = "ÃÞ°À”͈͂ÍÅ’á1ÃÞ°Às‚Í•K—v‚Å‚·B";
+ Text[ chinese_traditional ] = "¸ê®Æ°Ï°ì¥²¶·¦Ü¤Ö§t¦³¤@Äæ¼Æ¾Ú¡C";
+ Text[ arabic ] = "íÌÈ Ãä íÍÊæí äØÇÞ ÇáÈíÇäÇÊ Úáì ÕÝ ÈíÇäÇÊ æÇÍÏ Úáì ÇáÃÞá.";
+ Text[ greek ] = "Ç ðåñéï÷Þ äåäïìÝíùí ðñÝðåé íá ðåñéÝ÷åé ôïõëÜ÷éóôïí ìéá ãñáììÞ äåäïìÝíùí.";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¿µ¿ªÀº ÃÖ¼ÒÇÑ ÇϳªÀÇ ÇàÀÌ ÀÖ¾î¾ß¸¸ ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Veri aralýðýnda en az bir satýr bulunmalýdýr.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_NODATA
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Datenpilot-Tabelle muß mindestens einen Eintrag enthalten. : Die Datenpilot-Tabelle mu˜ mindestens einen Eintrag enthalten. */
+ Text = "Die Datenpilot-Tabelle muss mindestens einen Eintrag enthalten." ;
+ Text [ ENGLISH ] = "The Data Pilot Table must contain at least one entry." ;
+ Text [ norwegian ] = "The Data Pilot Table must contain at least one entry." ;
+ Text [ italian ] = "La tabella DataPilot deve contenere almeno una voce" ;
+ Text [ portuguese_brazilian ] = "The Data Pilot Table must contain at least one entry." ;
+ Text [ portuguese ] = "O Piloto de Dados deve ter pelo menos uma entrada." ;
+ Text [ finnish ] = "Taulukossa on oltava ainakin yksi tieto." ;
+ Text [ danish ] = "DataPilot-tabellen skal mindst indeholde et element." ;
+ Text [ french ] = "La table du DataPilote doit contenir au moins une entrée !" ;
+ Text [ swedish ] = "Datapilot-tabellen måste innehålla minst en post." ;
+ Text [ dutch ] = "De DataPiloot-tabel moet minstens één item bevatten." ;
+ Text [ spanish ] = "La tabla del Piloto de Datos debe contener al menos una entrada." ;
+ Text [ english_us ] = "The DataPilot table must contain at least one entry." ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí¹¤×÷±í±ØÐëÖÁÉÙº¬ÓÐÒ»¸öÌõÄ¿¡£";
+ Text[ russian ] = "Ñâîäíàÿ òàáëèöà äîëæíà ñîäåðæàòü õîòÿ áû îäíó çàïèñü.";
+ Text[ polish ] = "Tabela Pilota danych musi zawieraæ co najmniej jeden wpis.";
+ Text[ japanese ] = "ÃÞ°ÀÊß²Û¯Ä Ã°ÌÞÙ‚É‚ÍÅ’á1“ü—Í€–Ú‚Í•K—v‚Å‚·B";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z¤u§@ªí¥²¶·¦Ü¤Ö§t¦³¤@­Ó¶µ¥Ø¡C";
+ Text[ arabic ] = "íÌÈ Ãä íÍÊæí ÌÏæá ãÑÔÏ ÇáÈíÇäÇÊ Úáì ÅÏÎÇá æÇÍÏ Úáì ÇáÃÞá.";
+ Text[ greek ] = "Ï ðßíáêáò ôïõ ðéëüôïõ äåäïìÝíùí ðñÝðåé íá ðåñéÝ÷åé ôïõëÜ÷éóôïí ìßá åããñáöÞ.";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µÀº ÃÖ¼ÒÇÑ ÇϳªÀÇ Ç׸ñÀº Æ÷ÇÔÇÏ°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Veri pilotu tablosu en az bir giriþ içermelidir.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_MOVENOTALLOWED
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Datenbereich kann nicht gelöscht werden. : Der Datenbereich kann nicht gel÷scht werden. */
+ Text = "Der Datenbereich kann nicht gelöscht werden." ;
+ Text [ ENGLISH ] = "The data area cannot be deleted." ;
+ Text [ norwegian ] = "The data area cannot be deleted." ;
+ Text [ italian ] = "Impossibile eliminare quest'area dati." ;
+ Text [ portuguese_brazilian ] = "A área de dados não pode ser apagada." ;
+ Text [ portuguese ] = "A área de dados não pode ser apagada." ;
+ Text [ finnish ] = "Tietoaluetta ei voi poistaa." ;
+ Text [ danish ] = "Det er ikke muligt at slette dataområdet." ;
+ Text [ french ] = "Impossible de supprimer cette plage de données." ;
+ Text [ swedish ] = "Dataområdet kan inte raderas." ;
+ Text [ dutch ] = "Gegevensbereik wissen onmogelijk." ;
+ Text [ spanish ] = "No se puede eliminar el área de datos." ;
+ Text [ english_us ] = "The data range can not be deleted." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨É¾³ýÊý¾Ý¿âÇøÓò¡£";
+ Text[ russian ] = "Íå óäàåòñÿ óäàëèòü îáëàñòü äàííûõ.";
+ Text[ polish ] = "Obszar danych nie mo¿e byæ usuniêty.";
+ Text[ japanese ] = "ÃÞ°À”͈͂Í휂ł«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "µLªk§R°£¸ê®Æ®w°Ï°ì¡C";
+ Text[ arabic ] = "áÇ íãßä ÍÐÝ äØÇÞ ÇáÈíÇäÇÊ.";
+ Text[ greek ] = "Ç ðåñéï÷Þ äåäïìÝíùí äåí åßíáé äõíáôüí íá äéáãñáöåß.";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¿µ¿ªÀÌ »èÁ¦µÉ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Veri aralýðý silinemiyor.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_ERROR
+ {
+ Text = "Fehler beim Erstellen der Datenpilot-Tabelle." ;
+ Text [ ENGLISH ] = "Error creating the Data Pilot Table." ;
+ Text [ dutch ] = "Fout bij het maken van DataPiloot-tabel" ;
+ Text [ english_us ] = "Error creating the Data Pilot Table." ;
+ Text [ italian ] = "Erore nella creazione della tabella DataPilot" ;
+ Text [ spanish ] = "Error al crear la tabla del Piloto de Datos." ;
+ Text [ french ] = "Erreur en créant le tableau du DataPilote" ;
+ Text [ swedish ] = "Fel när Datapilot-tabell skapades." ;
+ Text [ danish ] = "Fejl ved oprettelse af DataPilot-tabellen." ;
+ Text [ portuguese ] = "Erro ao criar a tabela do Piloto de Dados." ;
+ Text [ portuguese_brazilian ] = "Fehler beim Erstellen der Datenpilot-Tabelle." ;
+ Text[ chinese_simplified ] = "ÔÚ½¨Á¢Êý¾ÝÖúÀí-¹¤×÷±íʱ·¢Éú´íÎó¡£";
+ Text[ russian ] = "Îøèáêà ïðè ñîçäàíèè ñâîäíîé òàáëèöû.";
+ Text[ polish ] = "B³¹d przy tworzeniu tabeli Pilota danych.";
+ Text[ japanese ] = "ÃÞ°À Ê߲ۯĕ\\쬂ÌÛ‚Ì´×°";
+ Text[ chinese_traditional ] = "¦b«Ø¥ß¸ê®Æ§U²z¤u§@ªí®Éµo¥Í¿ù»~¡C";
+ Text[ arabic ] = "ÍÏË ÎØà ÃËäÇÁ ÅäÔÇÁ ÌÏæá ãÑÔÏ ÇáÈíÇäÇÊ ÇáÂáí.";
+ Text[ greek ] = "ÓöÜëìá êáôÜ ôçí äçìéïõñãßá ôïõ ðßíáêá ôïõ ðéëüôïõ äåäïìÝíùí.";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ Å×ÀÌºí ¸¸µé±â¿À·ù.";
+ Text[ turkish ] = "Veri pilotu tablosu oluþturma hatasý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_OVERLAP
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Datenpilot-Tabellen dürfen sich nicht überlappen. : Datenpilot-Tabellen d³rfen sich nicht ³berlappen. */
+ Text = "Datenpilot-Tabellen dürfen sich nicht überlappen." ;
+ Text [ ENGLISH ] = "Data Pilot Tables cannot overlap." ;
+ Text [ portuguese ] = "Não é possível sobrepor tabelas do Piloto de Dados " ;
+ Text [ english_us ] = "DataPilot tables can not overlap." ;
+ Text [ portuguese_brazilian ] = "Datenpilot-Tabellen dürfen sich nicht überlappen." ;
+ Text [ swedish ] = "Datapilottabellerna får inte överlappa varandra." ;
+ Text [ danish ] = "DataPilot-tabeller må ikke overlappe." ;
+ Text [ italian ] = "Le tabelle del DataPilot non devono sovrapporsi." ;
+ Text [ spanish ] = "Las tablas del Piloto de Datos no se deben superponer." ;
+ Text [ french ] = "Les tables de données du DataPilote ne doivent pas se recouper." ;
+ Text [ dutch ] = "Datapiloottabellen mogen elkaar niet overlappen" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí¹¤×÷±í²»¿ÉÒÔÏ໥Öصþ¡£";
+ Text[ russian ] = "Ñâîäíûå òàáëèöû íå äîëæíû ïåðåêðûâàòüñÿ.";
+ Text[ polish ] = "Tabele Pilota danych nie mog¹ za siebie zachodziæ.";
+ Text[ japanese ] = "ÃÞ°À Ê߲ۯĕ\\‚Íd‚˂邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z¤u§@ªí¤£¥i¥H¬Û¤¬­«Å|¡C";
+ Text[ arabic ] = "áÇ íãßä ÊÑÇßÈ ÌÏÇæá ãÑÔÏ ÇáÈíÇäÇÊ.";
+ Text[ greek ] = "Äåí åðéôñÝðåôáé ç åðéêÜëõøç ôùí ðéíÜêùí DataPilot.";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ Å×À̺íÀº °ãÃÄÁöÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Veri pilotu tablolarý basamaklanamaz.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_NOTEMPTY
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Zielbereich ist nicht leer. Soll er überschrieben werden? : Der Zielbereich ist nicht leer. Soll er ³berschrieben werden? */
+ Text = "Der Zielbereich ist nicht leer. Soll er überschrieben werden?" ;
+ Text [ ENGLISH ] = "The destination area is not empty. Replace contents?" ;
+ Text [ portuguese ] = "A área de destino não está vazia. Sobregravar?" ;
+ Text [ english_us ] = "The destination range is not empty. Overwrite existing contents?" ;
+ Text [ portuguese_brazilian ] = "Der Zielbereich ist nicht leer. Soll er überschrieben werden?" ;
+ Text [ swedish ] = "Målområdet är inte tomt. Skall det skrivas över?" ;
+ Text [ danish ] = "Målområdet er ikke tomt. Skal det overskrives?" ;
+ Text [ italian ] = "L'area di destinazione non è vuota. Volete sovrascriverla?" ;
+ Text [ spanish ] = "El área destino no está vacía. ¿Desea sobrescribirlo?" ;
+ Text [ french ] = "La plage cible n'est pas vide. Voulez-vous remplacer son contenu ?" ;
+ Text [ dutch ] = "Het doelbereik is niet leeg. Overschrijven?" ;
+ Text[ chinese_simplified ] = "Õâ¸öÄ¿±êÇøÓò²»Êǿհ׵ġ£Äú»¹ÊÇҪɾ³ýËüÂð£¿";
+ Text[ russian ] = "Êîíå÷íàÿ îáëàñòü íå ïóñòàÿ. Ïåðåçàïèñàòü åå?";
+ Text[ polish ] = "Obszar docelowy nie jest pusty. Czy on ma zostaæ skasowany przez zapisanie?";
+ Text[ japanese ] = "ˆÚ“®æ‚ª‹ó”’‚Å‚Í‚ ‚è‚Ü‚¹‚ñ¡ã‘‚«‚µ‚Ä‚à‚æ‚낵‚¢‚Å‚·‚©?";
+ Text[ chinese_traditional ] = "³o­Ó¥Ø¼Ð°Ï°ì¤£¬OªÅ¥Õªº¡C±zÁÙ¬O­n§R°£¡H";
+ Text[ arabic ] = "ÇáäØÇÞ ÇáãÞÕæÏ ÛíÑ ÝÇÑÛ. åá ÊÑíÏ ÇáßÊÇÈÉ ÝæÞ ãÍÊæíÇÊå¿";
+ Text[ greek ] = "Ç ðåñéï÷Þ ðñïïñéóìïý äåí åßíáé êåíÞ. ÈÝëåôå íá áíôéêáôáóôáèåß;";
+ Text[ korean ] = "¸ñÇ¥ ¿µ¿ªÀÌ ºñ¾îÀÖÁö ¾Ê½À´Ï´Ù. ±âÁ¸ÀÇ ³»¿ë¿¡ µ¤¾î¾²½Ã°Ú½À´Ï±î?";
+ Text[ turkish ] = "Hedef aralýðý boþ deðil. Mevcut içeriðin üzerine yazýlsýn mý?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_PROGRESS
+ {
+ Text = "Datenpilot-Tabelle erstellen" ;
+ Text [ ENGLISH ] = "creating Data Pilot Table" ;
+ Text [ english_us ] = "Create DataPilot Table" ;
+ Text [ italian ] = "Crea tabella di DataPilot" ;
+ Text [ spanish ] = "Crear tabla del Piloto de Datos" ;
+ Text [ french ] = "Créer une table DataPilote" ;
+ Text [ dutch ] = "DataPiloot-tabel maken" ;
+ Text [ swedish ] = "Skapa Datapilottabell" ;
+ Text [ danish ] = "Opret DataPilot-tabel" ;
+ Text [ portuguese ] = "Criar tabela do Piloto de Dados" ;
+ Text [ portuguese_brazilian ] = "Datenpilot-Tabelle erstellen" ;
+ Text[ chinese_simplified ] = "½¨Á¢Êý¾ÝÖúÀí¹¤×÷±í";
+ Text[ russian ] = "Ñîçäàòü ñâîäíóþ òàáëèöó";
+ Text[ polish ] = "Utwórz tabelê Pilota danych";
+ Text[ japanese ] = "ÃÞ°À Ê߲ۯĕ\\‚ÌÝ’è";
+ Text[ chinese_traditional ] = "«Ø¥ß¸ê®Æ§U²z¤u§@ªí";
+ Text[ arabic ] = "ÅäÔÇÁ ÌÏæá ãÑÔÏ ÈíÇäÇÊ";
+ Text[ greek ] = "Äçìéïõñãßá ðßíáêá ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ Å×ÀÌºí ¸¸µé±â";
+ Text[ turkish ] = "Veri pilotu tablosu oluþtur";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_TOTAL
+ {
+ Text = "Gesamt" ;
+ Text [ ENGLISH ] = "Total" ;
+ Text [ norwegian ] = "Total" ;
+ Text [ italian ] = "Totale" ;
+ Text [ portuguese_brazilian ] = "Total" ;
+ Text [ portuguese ] = "Total" ;
+ Text [ finnish ] = "Summa" ;
+ Text [ danish ] = "Total" ;
+ Text [ french ] = "Total" ;
+ Text [ swedish ] = "Totalt" ;
+ Text [ dutch ] = "Totaal" ;
+ Text [ spanish ] = "Total" ;
+ Text [ english_us ] = "Total" ;
+ Text[ chinese_simplified ] = "×ܹ²";
+ Text[ russian ] = "Âñåãî";
+ Text[ polish ] = "Razem";
+ Text[ japanese ] = "Ä°ÀÙ";
+ Text[ chinese_traditional ] = "Á`¦@";
+ Text[ arabic ] = "ÅÌãÇáí";
+ Text[ greek ] = "Óýíïëï";
+ Text[ korean ] = "Àüü";
+ Text[ turkish ] = "Toplam";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_DATA
+ {
+ Text = "Daten" ;
+ Text [ ENGLISH ] = "Data" ;
+ Text [ norwegian ] = "Data" ;
+ Text [ italian ] = "Dati" ;
+ Text [ portuguese_brazilian ] = "Dados" ;
+ Text [ portuguese ] = "Dados" ;
+ Text [ finnish ] = "Tiedot" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "Data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "Datos" ;
+ Text [ english_us ] = "Data" ;
+ Text[ chinese_simplified ] = "Êý¾Ý";
+ Text[ russian ] = "Äàííûå";
+ Text[ polish ] = "Dane";
+ Text[ japanese ] = "ÃÞ°À";
+ Text[ chinese_traditional ] = "¸ê®Æ";
+ Text[ arabic ] = "ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veri";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_SUM
+ {
+ Text = "SUMME" ;
+ Text [ ENGLISH ] = "SUM" ;
+ Text [ norwegian ] = "SUM" ;
+ Text [ italian ] = "SOMMA" ;
+ Text [ portuguese_brazilian ] = "SOMA" ;
+ Text [ portuguese ] = "SOMA" ;
+ Text [ finnish ] = "SUM" ;
+ Text [ danish ] = "SUM" ;
+ Text [ french ] = "SOMME" ;
+ Text [ swedish ] = "SUMMA" ;
+ Text [ dutch ] = "SOM" ;
+ Text [ spanish ] = "SUMA" ;
+ Text [ english_us ] = "SUM" ;
+ Text[ chinese_simplified ] = "×ܼÆ";
+ Text[ russian ] = "ÑÓÌÌÀ";
+ Text[ polish ] = "SUMA";
+ Text[ japanese ] = "SUM";
+ Text[ chinese_traditional ] = "Á`­p";
+ Text[ arabic ] = "ÇáãÌãæÚ";
+ Text[ greek ] = "SUM";
+ Text[ korean ] = "ÇÕ°è";
+ Text[ turkish ] = "SUM";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_COUNT
+ {
+ Text = "ANZAHL" ;
+ Text [ ENGLISH ] = "COUNT" ;
+ Text [ norwegian ] = "COUNT" ;
+ Text [ italian ] = "CONTA.NUMERI" ;
+ Text [ portuguese_brazilian ] = "CONTAGEM" ;
+ Text [ portuguese ] = "CONTAR.NÚMEROS" ;
+ Text [ finnish ] = "COUNT" ;
+ Text [ danish ] = "TÆL" ;
+ Text [ french ] = "NB" ;
+ Text [ swedish ] = "ANTAL" ;
+ Text [ dutch ] = "AANTAL" ;
+ Text [ spanish ] = "CANTIDAD" ;
+ Text [ english_us ] = "COUNT" ;
+ Text[ chinese_simplified ] = "ÊýÄ¿";
+ Text[ russian ] = "ÊÎËÈ×ÅÑÒÂÎ";
+ Text[ polish ] = "ILOή";
+ Text[ japanese ] = "COUNT";
+ Text[ chinese_traditional ] = "¼Æ¥Ø";
+ Text[ arabic ] = "ÇáÚÏÏ";
+ Text[ greek ] = "ÐËÇÈÏÓ";
+ Text[ korean ] = "Ä«¿îÆ®";
+ Text[ turkish ] = "COUNT";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_AVG
+ {
+ Text = "MITTELWERT" ;
+ Text [ ENGLISH ] = "AVERAGE" ;
+ Text [ norwegian ] = "AVERAGE" ;
+ Text [ italian ] = "MEDIA" ;
+ Text [ portuguese_brazilian ] = "MÉDIA" ;
+ Text [ portuguese ] = "MÉDIA" ;
+ Text [ finnish ] = "AVERAGE" ;
+ Text [ danish ] = "MIDDEL" ;
+ Text [ french ] = "MOYENNE" ;
+ Text [ swedish ] = "MEDEL" ;
+ Text [ dutch ] = "GEMIDDELDE" ;
+ Text [ spanish ] = "PROMEDIO" ;
+ Text [ english_us ] = "AVERAGE" ;
+ Text[ chinese_simplified ] = "ƽ¾ùÖµ";
+ Text[ russian ] = "ÑÐÇÍÀ×";
+ Text[ polish ] = "ŒREDNIA WARTOŒÆ";
+ Text[ japanese ] = "AVERAGE";
+ Text[ chinese_traditional ] = "¥­§¡­È";
+ Text[ arabic ] = "AVERAGE";
+ Text[ greek ] = "AVERAGE";
+ Text[ korean ] = "Æò±Õ";
+ Text[ turkish ] = "AVERAGE";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_MAX
+ {
+ Text = "MAX" ;
+ Text [ ENGLISH ] = "MAX" ;
+ Text [ norwegian ] = "MAX" ;
+ Text [ italian ] = "MAX" ;
+ Text [ portuguese_brazilian ] = "MAX" ;
+ Text [ portuguese ] = "MÁX" ;
+ Text [ finnish ] = "MAX" ;
+ Text [ danish ] = "MAKS" ;
+ Text [ french ] = "MAX" ;
+ Text [ swedish ] = "MAX" ;
+ Text [ dutch ] = "MAX" ;
+ Text [ spanish ] = "MAX" ;
+ Text [ english_us ] = "MAX" ;
+ Text[ chinese_simplified ] = "×î´ó";
+ Text[ russian ] = "ÌÀÊÑ";
+ Text[ polish ] = "MAX";
+ Text[ japanese ] = "MAX";
+ Text[ chinese_traditional ] = "³Ì¤j";
+ Text[ arabic ] = "MAX";
+ Text[ greek ] = "MAX";
+ Text[ korean ] = "ÃÖ´ë";
+ Text[ turkish ] = "MAX";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_MIN
+ {
+ Text = "MIN" ;
+ Text [ ENGLISH ] = "MIN" ;
+ Text [ norwegian ] = "MIN" ;
+ Text [ italian ] = "MIN" ;
+ Text [ portuguese_brazilian ] = "MIN" ;
+ Text [ portuguese ] = "MÍN" ;
+ Text [ finnish ] = "MIN" ;
+ Text [ danish ] = "MIN" ;
+ Text [ french ] = "MIN" ;
+ Text [ swedish ] = "MIN" ;
+ Text [ dutch ] = "MIN" ;
+ Text [ spanish ] = "MIN" ;
+ Text [ english_us ] = "MIN" ;
+ Text[ chinese_simplified ] = "×îС";
+ Text[ russian ] = "ÌÈÍ";
+ Text[ polish ] = "MIN";
+ Text[ japanese ] = "MIN";
+ Text[ chinese_traditional ] = "³Ì¤p";
+ Text[ arabic ] = "ÃÏäì";
+ Text[ greek ] = "MIN";
+ Text[ korean ] = "ÃÖ¼Ò";
+ Text[ turkish ] = "MIN";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_PROD
+ {
+ Text = "PRODUKT" ;
+ Text [ ENGLISH ] = "PRODUCT" ;
+ Text [ norwegian ] = "PRODUCT" ;
+ Text [ italian ] = "PRODOTTO" ;
+ Text [ portuguese_brazilian ] = "PRODUTO" ;
+ Text [ portuguese ] = "PRODUTO" ;
+ Text [ finnish ] = "PRODUCT" ;
+ Text [ danish ] = "PRODUKT" ;
+ Text [ french ] = "PRODUIT" ;
+ Text [ swedish ] = "PRODUKT" ;
+ Text [ dutch ] = "PRODUCT" ;
+ Text [ spanish ] = "PRODUCTO" ;
+ Text [ english_us ] = "PRODUCT" ;
+ Text[ chinese_simplified ] = "³Ë»ý";
+ Text[ russian ] = "ÏÐÎÈÇÂÅÄÅÍÈÅ";
+ Text[ polish ] = "ILOCZYN";
+ Text[ japanese ] = "PRODUCT";
+ Text[ chinese_traditional ] = "­¼¿n";
+ Text[ arabic ] = "ÇáãõäúÊóÌ";
+ Text[ greek ] = "ÃÉÍÏÌÅÍÏ";
+ Text[ korean ] = "Á¦Ç°";
+ Text[ turkish ] = "PRODUCT";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_COUNT2
+ {
+ Text = "ANZAHL2" ;
+ Text [ ENGLISH ] = "COUNT2" ;
+ Text [ norwegian ] = "COUNT2" ;
+ Text [ italian ] = "CONTA.VALORI" ;
+ Text [ portuguese_brazilian ] = "CONTAGEM2" ;
+ Text [ portuguese ] = "CONTAR.VAL" ;
+ Text [ finnish ] = "COUNT2" ;
+ Text [ danish ] = "TÆLV" ;
+ Text [ french ] = "NBVAL" ;
+ Text [ swedish ] = "ANTALV" ;
+ Text [ dutch ] = "AANTAL2" ;
+ Text [ spanish ] = "CONTARA" ;
+ Text [ english_us ] = "COUNTA" ;
+ Text[ chinese_simplified ] = "ÊýÄ¿ 2";
+ Text[ russian ] = "ÊÎËÈ×ÅÑÒÂÎ2";
+ Text[ polish ] = "ILOή2";
+ Text[ japanese ] = "COUNT2";
+ Text[ chinese_traditional ] = "¼Æ¥Ø 2";
+ Text[ arabic ] = "ÇáÚÏÏ2";
+ Text[ greek ] = "ÊÁÔÁÌÅÔÑÇÓÇ2";
+ Text[ korean ] = "Ä«¿îÆ®2";
+ Text[ turkish ] = "COUNT2";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_STDDEV
+ {
+ Text = "STABW" ;
+ Text [ ENGLISH ] = "STDEV" ;
+ Text [ norwegian ] = "STDEV" ;
+ Text [ italian ] = "DEV.ST" ;
+ Text [ portuguese_brazilian ] = "STDEV" ;
+ Text [ portuguese ] = "DESVPAD" ;
+ Text [ finnish ] = "STDEV" ;
+ Text [ danish ] = "STDAFV" ;
+ Text [ french ] = "ECARTYPE" ;
+ Text [ swedish ] = "STDAV" ;
+ Text [ dutch ] = "STDAFW" ;
+ Text [ spanish ] = "DevNorm" ;
+ Text [ english_us ] = "STDEV" ;
+ Text[ chinese_simplified ] = "±ê׼ƫ²î(³éÑù)";
+ Text[ russian ] = "ÑÒÀÍÄÎÒÊËÎÍ";
+ Text[ polish ] = "ODCH.STANDARDOWE";
+ Text[ japanese ] = "STDEV";
+ Text[ chinese_traditional ] = "¼Ð·Ç°¾®t(©â¼Ë)";
+ Text[ arabic ] = "STDEV";
+ Text[ greek ] = "STDEV";
+ Text[ korean ] = "STDEV";
+ Text[ turkish ] = "STDEV";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_STDDEV2
+ {
+ Text = "STABWN" ;
+ Text [ ENGLISH ] = "STDEVP" ;
+ Text [ norwegian ] = "STDEVP" ;
+ Text [ italian ] = "DEV.ST.POP" ;
+ Text [ portuguese_brazilian ] = "STDEVP" ;
+ Text [ portuguese ] = "DESVPADP" ;
+ Text [ finnish ] = "STDEVP" ;
+ Text [ danish ] = "STDAFVP" ;
+ Text [ french ] = "ECARTYPEP" ;
+ Text [ swedish ] = "STDAVP" ;
+ Text [ dutch ] = "STDAFWP" ;
+ Text [ spanish ] = "DESVESTP" ;
+ Text [ english_us ] = "STDEVP" ;
+ Text[ chinese_simplified ] = "±ê׼ƫ²î(È«²¿»ùÊý)";
+ Text[ russian ] = "ÑÒÀÍÄÎÒÊËÎÍÏ";
+ Text[ polish ] = "ODCH.STANDARD.POPUL";
+ Text[ japanese ] = "STDEVP";
+ Text[ chinese_traditional ] = "¼Ð·Ç°¾®t(¥þ³¡°ò¼Æ)";
+ Text[ arabic ] = "STDEVP";
+ Text[ greek ] = "STDEVP";
+ Text[ korean ] = "STDEVP";
+ Text[ turkish ] = "STDEVP";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_VAR
+ {
+ Text = "VARIANZ" ;
+ Text [ ENGLISH ] = "VAR" ;
+ Text [ norwegian ] = "VAR" ;
+ Text [ italian ] = "VAR" ;
+ Text [ portuguese_brazilian ] = "VAR" ;
+ Text [ portuguese ] = "VARIÂNCIA" ;
+ Text [ finnish ] = "VAR" ;
+ Text [ danish ] = "VARIANS" ;
+ Text [ french ] = "VAR" ;
+ Text [ swedish ] = "VARIANS" ;
+ Text [ dutch ] = "VAR" ;
+ Text [ spanish ] = "VAR" ;
+ Text [ english_us ] = "VAR" ;
+ Text[ chinese_simplified ] = "·½²î";
+ Text[ russian ] = "ÄÈÑÏ";
+ Text[ polish ] = "WARIANCJA";
+ Text[ japanese ] = "VAR";
+ Text[ chinese_traditional ] = "¤è®t";
+ Text[ arabic ] = "VAR";
+ Text[ greek ] = "VAR";
+ Text[ korean ] = "º¯¼ö";
+ Text[ turkish ] = "VAR";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOTFUNC_VAR2
+ {
+ Text = "VARIANZEN" ;
+ Text [ ENGLISH ] = "VARP" ;
+ Text [ norwegian ] = "VARP" ;
+ Text [ italian ] = "VAR.POP" ;
+ Text [ portuguese_brazilian ] = "VARP" ;
+ Text [ portuguese ] = "VARIÂNCIAS" ;
+ Text [ finnish ] = "VARP" ;
+ Text [ danish ] = "VARIANSP" ;
+ Text [ french ] = "VAR.P" ;
+ Text [ swedish ] = "VARIANSER" ;
+ Text [ dutch ] = "VARP" ;
+ Text [ spanish ] = "VARP" ;
+ Text [ english_us ] = "VARP" ;
+ Text[ chinese_simplified ] = "·½²î(È«²¿»ùÊý)";
+ Text[ russian ] = "ÄÈÑÏÐ";
+ Text[ polish ] = "WARIANCJE";
+ Text[ japanese ] = "VARP";
+ Text[ chinese_traditional ] = "¤è®t(¥þ³¡°ò¼Æ)";
+ Text[ arabic ] = "VARP";
+ Text[ greek ] = "VARP";
+ Text[ korean ] = "VARP";
+ Text[ turkish ] = "VARP";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TABLE
+ {
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Folha" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Ark" ;
+ Text [ french ] = "Feuille" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Werkblad" ;
+ Text [ spanish ] = "Hoja" ;
+ Text [ english_us ] = "Sheet" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ russian ] = "Ëèñò";
+ Text[ polish ] = "Arkusz";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "¤u§@ªí";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "Öýëëï";
+ Text[ korean ] = "½ÃÆ®";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_COLUMN
+ {
+ Text = "Spalte" ;
+ Text [ ENGLISH ] = "Column" ;
+ Text [ norwegian ] = "Column" ;
+ Text [ italian ] = "Colonna" ;
+ Text [ portuguese_brazilian ] = "Coluna" ;
+ Text [ portuguese ] = "Coluna" ;
+ Text [ finnish ] = "Sarake" ;
+ Text [ danish ] = "Kolonne" ;
+ Text [ french ] = "Colonne" ;
+ Text [ swedish ] = "Kolumn" ;
+ Text [ dutch ] = "Kolom" ;
+ Text [ spanish ] = "Columna" ;
+ Text [ english_us ] = "Column" ;
+ Text[ chinese_simplified ] = "ÁÐ";
+ Text[ russian ] = "Ñòîëáåö";
+ Text[ polish ] = "Kolumna";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÇáÚãæÏ";
+ Text[ greek ] = "ÓôÞëç";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ROW
+ {
+ Text = "Zeile" ;
+ Text [ ENGLISH ] = "Row" ;
+ Text [ norwegian ] = "Row" ;
+ Text [ italian ] = "Riga" ;
+ Text [ portuguese_brazilian ] = "Fileira" ;
+ Text [ portuguese ] = "Linha" ;
+ Text [ finnish ] = "Rivi" ;
+ Text [ danish ] = "Række" ;
+ Text [ french ] = "Ligne" ;
+ Text [ swedish ] = "Rad" ;
+ Text [ dutch ] = "Rij" ;
+ Text [ spanish ] = "Fila" ;
+ Text [ english_us ] = "Row" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "¦C";
+ Text[ arabic ] = "ÇáÕÝ";
+ Text[ greek ] = "ÃñáììÞ";
+ Text[ korean ] = "Çà";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PAGE
+ {
+ Text = "Seite" ;
+ Text [ ENGLISH ] = "Page" ;
+ Text [ norwegian ] = "Page" ;
+ Text [ italian ] = "Pagina" ;
+ Text [ portuguese_brazilian ] = "Página" ;
+ Text [ portuguese ] = "Página" ;
+ Text [ finnish ] = "Sivu" ;
+ Text [ danish ] = "Side" ;
+ Text [ french ] = "Page" ;
+ Text [ swedish ] = "Sida" ;
+ Text [ dutch ] = "Pagina" ;
+ Text [ spanish ] = "Página" ;
+ Text [ english_us ] = "Page" ;
+ Text[ chinese_simplified ] = "Ò³";
+ Text[ russian ] = "Ñòðàíèöà";
+ Text[ polish ] = "Strona";
+ Text[ japanese ] = "Íß°¼Þ";
+ Text[ chinese_traditional ] = "­¶";
+ Text[ arabic ] = "ÕÝÍÉ";
+ Text[ greek ] = "Óåëßäá";
+ Text[ korean ] = "ÆäÀÌÁö";
+ Text[ turkish ] = "Sayfa";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LOAD_DOC
+ {
+ Text = "Dokument laden" ;
+ Text [ ENGLISH ] = "Load document" ;
+ Text [ norwegian ] = "Load document" ;
+ Text [ italian ] = "Carica documento" ;
+ Text [ portuguese_brazilian ] = "Carregar documento" ;
+ Text [ portuguese ] = "Carregar documento" ;
+ Text [ finnish ] = "Lue asiakirja" ;
+ Text [ danish ] = "Indlæs dokument" ;
+ Text [ french ] = "Charger un document" ;
+ Text [ swedish ] = "Ladda dokument" ;
+ Text [ dutch ] = "Document laden" ;
+ Text [ spanish ] = "Cargar documento" ;
+ Text [ english_us ] = "Load document" ;
+ Text[ chinese_simplified ] = "×°ÔØÎĵµ";
+ Text[ russian ] = "Çàãðóçêà äîêóìåíòà";
+ Text[ polish ] = "£aduj dokument";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ‚ð“Ç‚Ýž‚Þ";
+ Text[ chinese_traditional ] = "¸Ë¸ü¤å¥ó";
+ Text[ arabic ] = "ÊÍãíá ãáÝ";
+ Text[ greek ] = "Öüñôùóç åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ ·Îµå";
+ Text[ turkish ] = "Belgeyi yükle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SAVE_DOC
+ {
+ Text = "Dokument speichern" ;
+ Text [ ENGLISH ] = "Save document" ;
+ Text [ norwegian ] = "Save document" ;
+ Text [ italian ] = "Salva documento" ;
+ Text [ portuguese_brazilian ] = "Gravar documento" ;
+ Text [ portuguese ] = "Guardar documento" ;
+ Text [ finnish ] = "Tallenna asiakirja" ;
+ Text [ danish ] = "Gem dokument" ;
+ Text [ french ] = "Enregistrer le document" ;
+ Text [ swedish ] = "Spara dokument" ;
+ Text [ dutch ] = "Document opslaan" ;
+ Text [ spanish ] = "Guardar documento" ;
+ Text [ english_us ] = "Save document" ;
+ Text[ chinese_simplified ] = "´æÅÌÎĵµ";
+ Text[ russian ] = "Ñîõðàíèòü äîêóìåíò";
+ Text[ polish ] = "Zapisz dokument";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ‚Ì•Û‘¶";
+ Text[ chinese_traditional ] = "Àx¦s¤å¥ó";
+ Text[ arabic ] = "ÍÝÙ ÇáãÓÊäÏ";
+ Text[ greek ] = "ÁðïèÞêåõóç åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ ÀúÀå";
+ Text[ turkish ] = "Belgeyi kaydet";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ERR_INVALID_TABREF
+ {
+ Text = "<unbekannte Tabellenreferenz>" ;
+ Text [ ENGLISH ] = "<unknown table reference>" ;
+ Text [ norwegian ] = "<unknown table reference>" ;
+ Text [ italian ] = "<riferimento tabella sconosciuto>" ;
+ Text [ portuguese_brazilian ] = "<referência de tabela desconhecida>" ;
+ Text [ portuguese ] = "<referência de tabela desconhecida>" ;
+ Text [ finnish ] = "<tuntematon taulukkoviittaus>" ;
+ Text [ danish ] = "<ukendt tabelreference>" ;
+ Text [ french ] = "<référence de feuille de calcul inconnue>" ;
+ Text [ swedish ] = "<okänd tabellreferens>" ;
+ Text [ dutch ] = "<onbekende tabelverwijzing>" ;
+ Text [ spanish ] = "<referencia desconocida a tabla>" ;
+ Text [ english_us ] = "<unknown table reference>" ;
+ Text[ chinese_simplified ] = "<²»Ã÷µÄ¹¤×÷±íÒýÓÃ>";
+ Text[ russian ] = "<íåèçâåñòíàÿ ññûëêà òàáëèöû>";
+ Text[ polish ] = "<nieznany adres tabeli>";
+ Text[ japanese ] = "<–³–¼‚Ì•\\ŽQÆ>";
+ Text[ chinese_traditional ] = "<¤£©úªº¤u§@ªí¤Þ¥Î>";
+ Text[ arabic ] = "<ãÑÌÚ ÌÏæá ÛíÑ ãÚÑæÝ>";
+ Text[ greek ] = "<Üãíùóôç áíáöïñÜ ðßíáêá>";
+ Text[ korean ] = "<¾Ë·ÁÁöÁö ¾ÊÀº Å×À̺í ÂüÁ¶>";
+ Text[ turkish ] = "<bilinmeyen tablo referansý>";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AREA_ALREADY_INSERTED
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Dieser Bereich wurde bereits eingefügt. : Dieser Bereich wurde bereits eingef³gt. */
+ Text = "Dieser Bereich wurde bereits eingefügt." ;
+ Text [ ENGLISH ] = "This area already has been inserted." ;
+ Text [ norwegian ] = "This area already has been inserted." ;
+ Text [ italian ] = "Ques'area è già stata inserita." ;
+ Text [ portuguese_brazilian ] = "Esta área já foi inserida." ;
+ Text [ portuguese ] = "Esta área já foi inserida." ;
+ Text [ finnish ] = "Tämä alue on jo lisätty." ;
+ Text [ danish ] = "Dette område er allerede blevet indsat." ;
+ Text [ french ] = "Cette plage a déjà été insérée." ;
+ Text [ swedish ] = "Området har redan infogats." ;
+ Text [ dutch ] = "Dit bereik is reeds ingevoegd." ;
+ Text [ spanish ] = "Este área ya ha sido insertada." ;
+ Text [ english_us ] = "This range has already been inserted." ;
+ Text[ chinese_simplified ] = "ÒѾ­¼ÓÈëÁËÕâ¸öÇøÓò¡£";
+ Text[ russian ] = "Ýòà îáëàñòü óæå âñòàâëåíà.";
+ Text[ polish ] = "Ten obszar ju¿ zosta³ wstawiony.";
+ Text[ japanese ] = "‚±‚̗̈æ‚Í‚·‚Å‚É‘}“ü‚³‚ê‚Ä‚¢‚Ü‚·";
+ Text[ chinese_traditional ] = "¤w¸g¥[¤J¤F³o­Ó°Ï°ì¡C";
+ Text[ arabic ] = "Êã ÅÏÑÇÌ åÐÇ ÇáäØÇÞ ãÓÈÞÇð.";
+ Text[ greek ] = "Ç ðåñéï÷Þ ðñïóôÝèçêå Þäç.";
+ Text[ korean ] = "ÀÌ ¿µ¿ªÀÌ¹Ì »ðÀԵǾú½À´Ï´Ù.";
+ Text[ turkish ] = "Bu aralýk daha önce eklendi.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALID_TABREF
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültiger Tabellenbezug. : Ung³ltiger Tabellenbezug. */
+ Text = "Ungültiger Tabellenbezug." ;
+ Text [ ENGLISH ] = "Invalid table reference." ;
+ Text [ norwegian ] = "Invalid table reference." ;
+ Text [ italian ] = "Riferimento tabella non valido." ;
+ Text [ portuguese_brazilian ] = "Referência de tabela inválida." ;
+ Text [ portuguese ] = "Referência de folha incorrecta." ;
+ Text [ finnish ] = "Virheellinen taulukkoviittaus." ;
+ Text [ danish ] = "Ugyldig arkreference." ;
+ Text [ french ] = "Référence de feuille incorrecte." ;
+ Text [ swedish ] = "Ogiltig tabellreferens." ;
+ Text [ dutch ] = "Ongeldige werkbladverwijzing." ;
+ Text [ spanish ] = "Referencia a hoja no válida." ;
+ Text [ english_us ] = "Invalid sheet reference." ;
+ Text[ chinese_simplified ] = "¹¤×÷±íÒýÓÃÎÞЧ¡£";
+ Text[ russian ] = "Íåäîïóñòèìàÿ ññûëêà ëèñòà.";
+ Text[ polish ] = "Nieprawid³owy odnoœnik arkusza.";
+ Text[ japanese ] = "“\\‚è•t‚¯æ‚ªŽw’肳‚ê‚Ä‚¢‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "¤u§@ªí¤Þ¥ÎµL®Ä¡C";
+ Text[ arabic ] = "ãÑÌÚ ÇáÌÏæá ÛíÑ ÕÇáÍ.";
+ Text[ greek ] = "Ìç Ýãêõñç áíáöïñÜ ðßíáêá";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº ½ÃÆ® ÂüÁ¶.";
+ Text[ turkish ] = "Geçersiz tablo referansý.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALID_QUERYAREA
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Dieser Bereich enthält keine gültige Abfrage. : Dieser Bereich enthõlt keine g³ltige Abfrage. */
+ Text = "Dieser Bereich enthält keine gültige Abfrage." ;
+ Text [ ENGLISH ] = "No valid query found in this area." ;
+ Text [ norwegian ] = "No valid query found in this area." ;
+ Text [ italian ] = "Ricerca non valida trovata in quest'area." ;
+ Text [ portuguese_brazilian ] = "Nenhuma consulta válida encontrada nesta área." ;
+ Text [ portuguese ] = "Esta área não contém nenhuma consulta válida." ;
+ Text [ finnish ] = "Tällä alueella ei ole kelvollista kyselyä." ;
+ Text [ danish ] = "Dette område indeholder ingen gyldig forespørgsel." ;
+ Text [ french ] = "Aucune requête correcte n'a pu être détectée dans cette section." ;
+ Text [ swedish ] = "Detta område innehåller ingen giltig sökning." ;
+ Text [ dutch ] = "Geen geldige query in dit bereik gevonden." ;
+ Text [ spanish ] = "Este área no contiene ninguna consulta válida." ;
+ Text [ english_us ] = "This range does not contain a valid query." ;
+ Text[ chinese_simplified ] = "Õâ¸öÇøÓòûÓÐÓÐЧµÄ²éѯ¡£";
+ Text[ russian ] = "Ýòà îáëàñòü ñîäåðæèò íåäîïóñòèìûé çàïðîñ.";
+ Text[ polish ] = "Ten obszar nie zawiera prawid³owej kwerendy.";
+ Text[ japanese ] = "‚±‚͈̔͂͗LŒø‚ȸ´Ø°‚ðŠÜ‚ñ‚Å‚¢‚Ü‚¹‚ñB@@@@@@@@";
+ Text[ chinese_traditional ] = "³o­Ó°Ï°ì¨S¦³¦³®Äªº¬d¸ß¡C";
+ Text[ arabic ] = "áÇ íÍÊæí åÐÇ ÇáäØÇÞ Úáì ÇÓÊÝÓÇÑ ÕÇáÍ.";
+ Text[ greek ] = "Ç ðåñéï÷Þ äåí ðåñéÝ÷åé Ýãêõñï åñþôçìá.";
+ Text[ korean ] = "ÀÌ ¿µ¿ªÀº À¯È¿ÇÑ ÁúÀǸ¦ Æ÷ÇÔÇÏ°í ÀÖÁö ¾Ê½À´Ï´Ù .";
+ Text[ turkish ] = "Bu aralýk geçerli bir sorgu içermiyor.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_REIMPORT_EMPTY
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Dieser Bereich enthält keine importierten Daten. : Dieser Bereich enthõlt keine importierten Daten. */
+ Text = "Dieser Bereich enthält keine importierten Daten." ;
+ Text [ ENGLISH ] = "No imported data found in this area." ;
+ Text [ norwegian ] = "No imported data found in this area." ;
+ Text [ italian ] = "Quest'area non contiene dati importati." ;
+ Text [ portuguese_brazilian ] = "Nenhum dado importado encontrado nesta área." ;
+ Text [ portuguese ] = "Esta área não contém dados importados." ;
+ Text [ finnish ] = "Tällä alueella ei ole tuotuja tietoja." ;
+ Text [ danish ] = "Dette område indeholder ingen importerede data." ;
+ Text [ french ] = "Aucune donnée importée dans cette plage." ;
+ Text [ swedish ] = "Det här området innehåller inga importerade data." ;
+ Text [ dutch ] = "Geen geïmporteerde gegevens in dit bereik gevonden." ;
+ Text [ spanish ] = "Este área no contiene datos importados." ;
+ Text [ english_us ] = "This range does not contain imported data." ;
+ Text[ chinese_simplified ] = "Õâ¸öÇøÓòûÓк¬ÓÐÈκÎÊäÈëµÄÊý¾Ý¡£";
+ Text[ russian ] = "Â ýòîé îáëàñòè èìïîðòèðîâàííûõ äàííûõ íå íàéäåíî.";
+ Text[ polish ] = "Ten obszar nie zawiera importiowanych danych.";
+ Text[ japanese ] = "‚±‚͈̔͂ɲÝÎß°Ä‚³‚ꂽÃÞ°À‚Í‚ ‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "³o­Ó°Ï°ì¨S¦³§t¦³¥ô¦ó¿é¤Jªº¸ê®Æ¡C";
+ Text[ arabic ] = "áÇ íÍÊæí åÐÇ ÇáäØÇÞ Úáì ÈíÇäÇÊ ãÓÊæÑÏÉ.";
+ Text[ greek ] = "ÁõôÞ ç ðåñéï÷Þ äåí ðåñéÝ÷åé åéóáãüìåíá äåäïìÝíá.";
+ Text[ korean ] = "ÀÌ ¿µ¿ªÀº °¡Á®¿Â µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Bu bölüm içe aktarýlmýþ veri içermiyor.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NOMULTISELECT
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Funktion läßt sich nicht auf Mehrfachselektionen anwenden. : Diese Funktion lõ˜t sich nicht auf Mehrfachselektionen anwenden. */
+ Text = "Diese Funktion lässt sich nicht auf Mehrfachselektionen anwenden." ;
+ Text [ ENGLISH ] = "This function does not work with multiple selections." ;
+ Text [ norwegian ] = "This function does not work with multiple selections." ;
+ Text [ italian ] = "Questa funzione non funziona con selezioni multiple." ;
+ Text [ portuguese_brazilian ] = "Esta função não funciona com seleções multíplas." ;
+ Text [ portuguese ] = "Esta função não pode ser usada com selecções múltiplas." ;
+ Text [ finnish ] = "Tämä toiminto ei koske monivalintaa." ;
+ Text [ danish ] = "Det er ikke muligt at anvende denne funktion på multimarkeringer." ;
+ Text [ french ] = "Cette fonction est incompatible avec la sélection multiple" ;
+ Text [ swedish ] = "Denna funktion fungerar inte med multipla markeringar." ;
+ Text [ dutch ] = "Deze functie werkt niet bij meervoudige selecties." ;
+ Text [ spanish ] = "Esta función no se puede aplicar con selecciones múltiples." ;
+ Text [ english_us ] = "This function cannot be used with multiple selections." ;
+ Text[ chinese_simplified ] = "Õâ¸ö¹¦ÄÜÎÞ·¨ÔËÓÃÓÚ¶àÖØÑ¡Ôñ¡£";
+ Text[ russian ] = "Ïðèìåíèòü ýòó ôóíêöèþ äëÿ ìíîãîêðàòíîãî îòáîðà íåëüçÿ.";
+ Text[ polish ] = "Tej funkcji nie mo¿na zastosowaæ do wielokrotnej selekcji.";
+ Text[ japanese ] = "‚±‚Ì‹@”\\‚Í•¡”‘I‘ð‚ÉŽg—p‚Å‚«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "³o­Ó¥\\¯àµLªkÀ³¥Î©ó¦h­«¿ï¾Ü¡C";
+ Text[ arabic ] = "áÇ íãßä ÊØÈíÞ åÐå ÇáÏÇáÉ Úáì ÊÍÏíÏÇÊ ãÊÚÏÏÉ.";
+ Text[ greek ] = "Ç óõíÜñôçóç áõôÞ äåí åßíáé äõíáôüí íá åöáñìïóôåß ìå ðïëëáðëÝò åðéëïãÝò.";
+ Text[ korean ] = "À̱â´ÉÀº ´ÙÁß ¼±ÅÃÀ¸·Î »ç¿ëµÉ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Bu iþlev, çoklu seçimler için kullanýlamamaktadýr.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FILL_SERIES_PROGRESS
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Reihe Auffüllen... : Reihe Auff³llen... */
+ Text = "Reihe Auffüllen..." ;
+ Text [ ENGLISH ] = "Fill Series..." ;
+ Text [ norwegian ] = "Fill Series..." ;
+ Text [ italian ] = "Riempire serie..." ;
+ Text [ portuguese_brazilian ] = "Séries de Preenchimento..." ;
+ Text [ portuguese ] = "Preencher série..." ;
+ Text [ finnish ] = "Täytä sarja..." ;
+ Text [ danish ] = "Fyld serie..." ;
+ Text [ french ] = "Remplissage séries..." ;
+ Text [ swedish ] = "Fyll serie..." ;
+ Text [ dutch ] = "Reeksen invullen..." ;
+ Text [ spanish ] = "Rellenar serie..." ;
+ Text [ english_us ] = "Fill Row..." ;
+ Text[ chinese_simplified ] = "Ìî³äÐòÁÐ...";
+ Text[ russian ] = "Çàïîëíèòü ðÿäû...";
+ Text[ polish ] = "Wype³nij serie...";
+ Text[ japanese ] = "˜A‘±ÃÞ°À...";
+ Text[ chinese_traditional ] = "¶ñ¥R§Ç¦C...";
+ Text[ arabic ] = "ÊÚÈÆÉ ÓáÓáÉ...";
+ Text[ greek ] = "ÓõìðëÞñùóç óåéñÜò...";
+ Text[ korean ] = "Çà ä¿ì±â...";
+ Text[ turkish ] = "Satýrý doldur...";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNKNOWN_FILTER
+ {
+ Text = "Unbekannter Filter: " ;
+ Text [ ENGLISH ] = "Unknown filter: " ;
+ Text [ norwegian ] = "Unknown filter: " ;
+ Text [ italian ] = "Filtro sconosciuto: " ;
+ Text [ portuguese_brazilian ] = "Filtro desconhecido: " ;
+ Text [ portuguese ] = "Filtro desconhecido: " ;
+ Text [ finnish ] = "Tuntematon suodin: " ;
+ Text [ danish ] = "Ukendt filter: " ;
+ Text [ french ] = "Filtre inconnu : " ;
+ Text [ swedish ] = "Okänt filter: " ;
+ Text [ dutch ] = "Onbekende filter: " ;
+ Text [ spanish ] = "Filtro desconocido: " ;
+ Text [ english_us ] = "Unknown filter: " ;
+ Text[ chinese_simplified ] = "²»Ã÷µÄɸѡ£º ";
+ Text[ russian ] = "Íåèçâåñòíûé ôèëüòð: ";
+ Text[ polish ] = "Nieznany filtr: ";
+ Text[ japanese ] = "•s–¾‚Ę̀ÙÀ: ";
+ Text[ chinese_traditional ] = "¤£©úªº¿z¿ï¡G ";
+ Text[ arabic ] = "ÝáÊÑ ÛíÑ ãÚÑæÝ: ";
+ Text[ greek ] = "¢ãíùóôï ößëôñï: ";
+ Text[ korean ] = "¾Ë·ÁÁöÁö ¾ÊÀº ÇÊÅÍ: ";
+ Text[ turkish ] = "Bilinmeyen filtre: ";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NO_NAME_REF
+ {
+ Text = "#NAME?" ;
+ Text [ ENGLISH ] = "#NAME?" ;
+ Text [ norwegian ] = "#NAME?" ;
+ Text [ italian ] = "#NOME?" ;
+ Text [ portuguese_brazilian ] = "#NAME?" ;
+ Text [ portuguese ] = "#NOME?" ;
+ Text [ french ] = "#NOM ?" ;
+ Text [ dutch ] = "#NAAM?" ;
+ Text [ spanish ] = "#NOMBRE?" ;
+ Text [ danish ] = "#NAVN?" ;
+ Text [ swedish ] = "#NAMN?" ;
+ Text [ finnish ] = "#NAME?" ;
+ Text [ english_us ] = "#NAME?" ;
+ Text[ chinese_simplified ] = "#NAME?";
+ Text[ russian ] = "#ÈÌß?";
+ Text[ polish ] = "#NAZWA?";
+ Text[ japanese ] = "#NAME?";
+ Text[ chinese_traditional ] = "#NAME?";
+ Text[ arabic ] = "#NAME?";
+ Text[ greek ] = "#NAME?";
+ Text[ korean ] = "#À̸§?";
+ Text[ turkish ] = "#AD?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_THESAURUS
+ {
+ Text = "Thesaurus" ;
+ Text [ ENGLISH ] = "Thesaurus" ;
+ Text [ english_us ] = "Thesaurus" ;
+ Text [ italian ] = "Sinonimi" ;
+ Text [ spanish ] = "Sinónimos" ;
+ Text [ french ] = "Dictionnaire des synonymes" ;
+ Text [ dutch ] = "Thesaurus" ;
+ Text [ swedish ] = "Synonymordlista" ;
+ Text [ danish ] = "Synonymordbog" ;
+ Text [ portuguese ] = "Sinónimos" ;
+ Text [ portuguese_brazilian ] = "Thesaurus" ;
+ Text[ chinese_simplified ] = "´Êµä";
+ Text[ russian ] = "Òåçàóðóñ";
+ Text[ polish ] = "Tezaurus";
+ Text[ japanese ] = "—Þ‹`ŒêŽ«“T";
+ Text[ chinese_traditional ] = "µü¨å";
+ Text[ arabic ] = "ÞÇãæÓ ÇáãÑÇÏÝÇÊ";
+ Text[ greek ] = "Èçóáõñüò ëÝîåùí";
+ Text[ korean ] = "µ¿ÀÇ¾î »çÀü";
+ Text[ turkish ] = "Eþanlamlýlar sözlüðü";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FILL_TAB
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Tabellen füllen : Tabellen f³llen */
+ Text = "Tabellen füllen" ;
+ Text [ ENGLISH ] = "Fill Tables" ;
+ Text [ norwegian ] = "Fill Tables" ;
+ Text [ italian ] = "Riempi tabella" ;
+ Text [ portuguese_brazilian ] = "Tabelas de Preenchimento" ;
+ Text [ portuguese ] = "Preencher folhas" ;
+ Text [ finnish ] = "Täytä taulukot" ;
+ Text [ danish ] = "Fyld ark" ;
+ Text [ french ] = "Remplissage feuilles" ;
+ Text [ swedish ] = "Fyll tabeller" ;
+ Text [ dutch ] = "Werkbladen vullen" ;
+ Text [ spanish ] = "Rellenar hojas" ;
+ Text [ english_us ] = "Fill Sheets" ;
+ Text[ chinese_simplified ] = "³äÌ×÷±í";
+ Text[ russian ] = "Çàïîëíèòü ëèñòû";
+ Text[ polish ] = "Wype³nij arkusz";
+ Text[ japanese ] = "•\\‚ð–ž‚½‚·";
+ Text[ chinese_traditional ] = "¶ñ¥R¤u§@ªí";
+ Text[ arabic ] = "ÊÚÈÆÉ ÌÏÇæá";
+ Text[ greek ] = "ÃÝìéóìá ðßíáêá";
+ Text[ korean ] = "½ÃÆ® ä¿ì±â";
+ Text[ turkish ] = "Tablo doldur";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NO_VALUE
+ {
+ Text = "#WERT!" ;
+ Text [ ENGLISH ] = "#VALUE!" ;
+ Text [ norwegian ] = "#VALUE!" ;
+ Text [ italian ] = "#VALORE!" ;
+ Text [ portuguese_brazilian ] = "#VALOR!" ;
+ Text [ portuguese ] = "#VALOR!" ;
+ Text [ finnish ] = "#ARVO!" ;
+ Text [ danish ] = "#VÆRDI!" ;
+ Text [ french ] = "#VALEUR !" ;
+ Text [ swedish ] = "#VÄRDE!" ;
+ Text [ dutch ] = "#WAARDE!" ;
+ Text [ spanish ] = "#VALOR!" ;
+ Text [ english_us ] = "#VALUE!" ;
+ Text[ chinese_simplified ] = "#VALUE!";
+ Text[ russian ] = "#ÇÍÀ×ÅÍ!";
+ Text[ polish ] = "#WARTOή!";
+ Text[ japanese ] = "#VALUE!";
+ Text[ chinese_traditional ] = "#VALUE!";
+ Text[ arabic ] = "#VALUE!";
+ Text[ greek ] = "#VALUE!";
+ Text[ korean ] = "#VALUE!";
+ Text[ turkish ] = "#DEÐER!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UPDATE_SCENARIO
+ {
+ Text = "Szenario um die markierten Bereiche erweitern?" ;
+ Text [ ENGLISH ] = "Add selected areas to current scenario?" ;
+ Text [ norwegian ] = "Add selected areas to current scenario?" ;
+ Text [ italian ] = "Aggiungere aree selezionate allo scenario?" ;
+ Text [ portuguese_brazilian ] = "Acrescentar áreas selecionadas ao cenário atual?" ;
+ Text [ portuguese ] = "Adicionar áreas seleccionadas ao cenário activo?" ;
+ Text [ finnish ] = "Lisätäänkö valitut alueet nykyiseen hahmotelmaan?" ;
+ Text [ danish ] = "Tilføje markerede områder til scenariet?" ;
+ Text [ french ] = "Ajouter les plages sélectionnées au scénario en cours ?" ;
+ Text [ swedish ] = "Utöka scenario med de markerade områdena?" ;
+ Text [ dutch ] = "Geselecteerde bereiken aan actueel scenario toevoegen?" ;
+ Text [ spanish ] = "¿Desea añadir las áreas seleccionadas al escenario actual?" ;
+ Text [ english_us ] = "Add selected ranges to current scenario?" ;
+ Text[ chinese_simplified ] = "Òª½«Ñ¡ÖеÄÇøÓò¼ÓÈë·½°¸£¿";
+ Text[ russian ] = "Ðàñøèðèòü ñöåíàðèé íà âûäåëåííûå îáëàñòè?";
+ Text[ polish ] = "Rozszerzyæ scenariusz wokó³ zaznaczonych obszarów?";
+ Text[ japanese ] = "¼Åص‚ð‘I‘ð‚µ‚½”͈͂ÉL‚°‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "­n±N¿ï¨úªº°Ï°ì¥[¤J¤è®×¡H";
+ Text[ arabic ] = "åá ÊÑíÏ ÅÖÇÝÉ ÇáäØÇÞÇÊ ÇáãÍÏÏÉ Åáì ÇáÓíäÇÑíæ¿";
+ Text[ greek ] = "ÅðÝêôáóç óåíáñßïõ êáôÜ ôéò åðéëåãìÝíåò ðåñéï÷Ýò;";
+ Text[ korean ] = "ÇöÀçÀÇ ½Ã³ª¸®¿À¸¦ ¼±ÅÃµÈ ¿µ¿ª¿¡ Ãß°¡Çմϱî ?";
+ Text[ turkish ] = "Seçili aralýklar, senaryoya eklensin mi?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ERR_NEWSCENARIO
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zum Anlegen eines Szenarios müssen die Szenariobereiche markiert werden. : Zum Anlegen eines Szenarios m³ssen die Szenariobereiche markiert werden. */
+ Text = "Zum Anlegen eines Szenarios müssen die Szenariobereiche markiert werden." ;
+ Text [ ENGLISH ] = "To create a new scenario you'll have to select the desired scenario areas" ;
+ Text [ norwegian ] = "To create a new scenario you'll have to select the desired scenario areas" ;
+ Text [ italian ] = "Per creare un nuovo scenario si dovranno selezionare le aree di scenario desiderate." ;
+ Text [ portuguese_brazilian ] = "Para criar um novo cenário é precisoselecionar as áreas de cenário desejadas" ;
+ Text [ portuguese ] = "Para criar um cenário é necessário seleccionar as áreas de cenário desejadas." ;
+ Text [ finnish ] = "Kun teet uuden hahmotelman, sinun pitää valita sen alueet" ;
+ Text [ danish ] = "For at oprette et nyt scenarie skal du markere scenarieområderne." ;
+ Text [ french ] = "Pour créer un nouveau scénario, vous devez sélectionner les plages du scénario." ;
+ Text [ swedish ] = "Om Du vill skapa ett nytt scenario måste du markera scenarioområdena." ;
+ Text [ dutch ] = "Om een nieuw scenario te maken, moet u de gewenste scenariobereiken selecteren." ;
+ Text [ spanish ] = "Para crear un escenario hay que seleccionar las áreas de escenario." ;
+ Text [ english_us ] = "The scenario ranges must be selected in order to be able to create a new scenario." ;
+ Text[ chinese_simplified ] = "Òª½¨Á¢Ò»¸ö·½°¸¾Í±ØÐëÏÈÉ趨һ¸ö·½°¸ÇøÓò¡£";
+ Text[ russian ] = "Äëÿ ñîçäàíèÿ ñöåíàðèÿ íåîáõîäèìî âûäåëèòü îáëàñòè ñöåíàðèÿ.";
+ Text[ polish ] = "Do utworzenia scenariusza nale¿y zaznaczyæ obszary scenariusza.";
+ Text[ japanese ] = "¼Åص‚Ì쬂̂½‚߂ɼÅص”͈͂ðÏ°¸‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "­n«Ø¥ß¤@­Ó¤è®×´N¥²¶·¥ý³]©w¤@­Ó¤è®×°Ï°ì¡C";
+ Text[ arabic ] = "áÅäÔÇÁ ÓíäÇÑíæ íÌÈ Ãä íÊã ÊÍÏíÏ äØÇÞÇÊ ÇáÓíäÇÑíæ.";
+ Text[ greek ] = "Ãéá ôç äçìéïõñãßá åíüò óåíáñßïõ ðñÝðåé íá åðéëå÷èïýí ïé ðåñéï÷Ýò ôïõ.";
+ Text[ korean ] = "»õ·Î¿î ½Ã³ª¸®¿À¸¦ ¸¸µé±â À§Çؼ­ ½Ã³ª¸®¿À ¿µ¿ªÀÌ ¼±ÅõǾîÁ®¾ß ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Senaryonun oluþturulabilmesi için senaryo aralýklarý iþaretlenmelidir.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NOAREASELECTED
+ {
+ Text = "Kein Bereich markiert." ;
+ Text [ ENGLISH ] = "No areas selected." ;
+ Text [ norwegian ] = "No areas selected." ;
+ Text [ italian ] = "Nessun'area selezionata." ;
+ Text [ portuguese_brazilian ] = "Nenhuma área selecionada." ;
+ Text [ portuguese ] = "Nenhuma área seleccionada." ;
+ Text [ finnish ] = "Alueita ei ole valittu." ;
+ Text [ danish ] = "Ingen områder er markeret." ;
+ Text [ french ] = "Aucune plage n'a été sélectionnée." ;
+ Text [ swedish ] = "Inget område markerat." ;
+ Text [ dutch ] = "Geen bereik geselecteerd." ;
+ Text [ spanish ] = "Ninguna área seleccionada." ;
+ Text [ english_us ] = "A range has not been selected." ;
+ Text[ chinese_simplified ] = "ûÓбê¼ÇÈκÎÇøÓò¡£";
+ Text[ russian ] = "Îáëàñòü íå âûäåëåíà.";
+ Text[ polish ] = "Nie zaznaczono obszaru.";
+ Text[ japanese ] = "‰½‚à‘I‘ð‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¨S¦³¼Ð°O¥ô¦ó°Ï°ì¡C";
+ Text[ arabic ] = "áã íÊã ÊÍÏíÏ äØÇÞ.";
+ Text[ greek ] = "Äåí åðéëÝ÷èçêå ðåñéï÷Þ.";
+ Text[ korean ] = "¿µ¿ªÀÌ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Aralýk seçilmedi.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NEWTABNAMENOTUNIQUE
+ {
+ Text = "Dieser Tabellenname wurde bereits vergeben." ;
+ Text [ ENGLISH ] = "Table name already exists." ;
+ Text [ norwegian ] = "Table name already exists." ;
+ Text [ italian ] = "Nome tabella già esistente." ;
+ Text [ portuguese_brazilian ] = "O nome da tabela já existe." ;
+ Text [ portuguese ] = "Este nome já existe." ;
+ Text [ finnish ] = "Taulukon nimi on jo määritetty." ;
+ Text [ danish ] = "Dette arknavn eksisterer allerede." ;
+ Text [ french ] = "Ce nom existe déjà." ;
+ Text [ swedish ] = "Det här tabellnamnet finns redan." ;
+ Text [ dutch ] = "Deze naam bestaat reeds." ;
+ Text [ spanish ] = "Este nombre ya existe." ;
+ Text [ english_us ] = "This name already exists." ;
+ Text[ chinese_simplified ] = "Õâ¸ö¹¤×÷±íÃû³ÆÒѾ­±»·ÖÅÉ¡£";
+ Text[ russian ] = "Òàêîå èìÿ óæå íàçíà÷åíî.";
+ Text[ polish ] = "Ta nazwa tabeli ju¿ istnieje.";
+ Text[ japanese ] = "‚±‚Ì–¼‘O‚Í‚·‚Å‚ÉŽg‚í‚ê‚Ä‚¢‚Ü‚·";
+ Text[ chinese_traditional ] = "³o­Ó¤u§@ªí¦WºÙ¤w¸g³Q¤À¬£¡C";
+ Text[ arabic ] = "ÇÓã ÇáÌÏæá åÐÇ ãæÌæÏ ãÓÈÞÇð.";
+ Text[ greek ] = "Áõôü ôï üíïìá ðßíáêá õðÜñ÷åé Þäç.";
+ Text[ korean ] = "±× À̸§Àº ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù..";
+ Text[ turkish ] = "Bu tablo adý þu an kullanýlýyor.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALIDTABNAME
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültiger Tabellenname. : Ung³ltiger Tabellenname. */
+ Text = "Ungültiger Tabellenname." ;
+ Text [ ENGLISH ] = "Invalid table name." ;
+ Text [ norwegian ] = "Invalid table name." ;
+ Text [ italian ] = "Nome tabella non valido." ;
+ Text [ portuguese_brazilian ] = "Nome de tabela inválido." ;
+ Text [ portuguese ] = "Nome da folha incorrecto." ;
+ Text [ finnish ] = "Virheellinen taulukon nimi." ;
+ Text [ danish ] = "Ugyldigt arknavn." ;
+ Text [ french ] = "Nom de feuille incorrect." ;
+ Text [ swedish ] = "Ogiltigt tabellnamn." ;
+ Text [ dutch ] = "Ongeldige werkbladnaam." ;
+ Text [ spanish ] = "Nombre de la hoja no válido." ;
+ Text [ english_us ] = "Invalid sheet name." ;
+ Text[ chinese_simplified ] = "¹¤×÷±íÃû³ÆÎÞЧ¡£ÇëÓÃÊý×Ö»ò×Öĸ´úÌæ¡£";
+ Text[ russian ] = "Íåäîïóñòèìîå èìÿ ëèñòà.";
+ Text[ polish ] = "Nieprawid³owa nazwa arkusza.";
+ Text[ japanese ] = "•\\–¼‚Ì•\\‹L‚É–â‘肪‚ ‚è‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤u§@ªí¦WºÙµL®Ä¡C½Ð¥Î¼Æ¦r©Î¦r¥À¥N´À¡C";
+ Text[ arabic ] = "ÇÓã ÌÏæá ÛíÑ ÕÇáÍ.";
+ Text[ greek ] = "¢êõñï üíïìá ðßíáêá.";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº ½ÃÆ® À̸§.";
+ Text[ turkish ] = "Geçersiz tablo adý.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCENARIO
+ {
+ Text = "Szenario" ;
+ Text [ ENGLISH ] = "Scenario" ;
+ Text [ norwegian ] = "Scenario" ;
+ Text [ italian ] = "Scenario" ;
+ Text [ portuguese_brazilian ] = "Cenário" ;
+ Text [ portuguese ] = "Cenário" ;
+ Text [ finnish ] = "Hahmotelma" ;
+ Text [ danish ] = "Scenarie" ;
+ Text [ french ] = "Scénario" ;
+ Text [ swedish ] = "Scenario" ;
+ Text [ dutch ] = "Scenario" ;
+ Text [ spanish ] = "Escenario" ;
+ Text [ english_us ] = "Scenario" ;
+ Text[ chinese_simplified ] = "·½°¸";
+ Text[ russian ] = "Ñöåíàðèé";
+ Text[ polish ] = "Scenariusz";
+ Text[ japanese ] = "¼Åص";
+ Text[ chinese_traditional ] = "¤ÀªRÂÅ¥»";
+ Text[ arabic ] = "ÇáÓíäÇÑíæ";
+ Text[ greek ] = "ÓåíÜñéï";
+ Text[ korean ] = "½Ã³ª¸®¿À";
+ Text[ turkish ] = "Senaryo";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_TABLE
+ {
+ Text = "Datenpilot" ;
+ Text [ ENGLISH ] = "Data Pilot" ;
+ Text [ norwegian ] = "Data Pilot" ;
+ Text [ italian ] = "DataPilot" ;
+ Text [ portuguese_brazilian ] = "Data Pilot" ;
+ Text [ portuguese ] = "Piloto de Dados" ;
+ Text [ finnish ] = "???" ;
+ Text [ danish ] = "DataPilot" ;
+ Text [ french ] = "DataPilote" ;
+ Text [ swedish ] = "Datapilot" ;
+ Text [ dutch ] = "DataPiloot" ;
+ Text [ spanish ] = "Piloto de datos" ;
+ Text [ english_us ] = "DataPilot" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí";
+ Text[ russian ] = "Ñâîäíàÿ òàáëèöà";
+ Text[ polish ] = "Pilot danych";
+ Text[ japanese ] = "ÃÞ°À Êß²Û¯Ä";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z";
+ Text[ arabic ] = "ãÑÔÏ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "Ðéëüôïò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ";
+ Text[ turkish ] = "Veri pilotu";
+ Text[ language_user1 ] = " ";
+ };
+ // Texte fuer Ueberschriften bei Teilergebnis etc.
+ String STR_FUN_TEXT_SUM
+ {
+ Text = "Summe" ;
+ Text [ ENGLISH ] = "Sum" ;
+ Text [ norwegian ] = "Sum" ;
+ Text [ italian ] = "Somma" ;
+ Text [ portuguese_brazilian ] = "Soma" ;
+ Text [ portuguese ] = "Soma" ;
+ Text [ finnish ] = "Summa" ;
+ Text [ danish ] = "Sum" ;
+ Text [ french ] = "Somme" ;
+ Text [ swedish ] = "Summa" ;
+ Text [ dutch ] = "Som" ;
+ Text [ spanish ] = "Suma" ;
+ Text [ english_us ] = "Sum" ;
+ Text[ chinese_simplified ] = "×ܼÆ";
+ Text[ russian ] = "Ñóììà";
+ Text[ polish ] = "Suma";
+ Text[ japanese ] = "‡Œv";
+ Text[ chinese_traditional ] = "Á`¼Æ";
+ Text[ arabic ] = "ãÌãæÚ";
+ Text[ greek ] = "¢èñïéóìá";
+ Text[ korean ] = "ÇÕ°è";
+ Text[ turkish ] = "Toplam";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FUN_TEXT_COUNT
+ {
+ Text = "Anzahl" ;
+ Text [ ENGLISH ] = "Count" ;
+ Text [ norwegian ] = "Antall" ;
+ Text [ italian ] = "ContaNumeri" ;
+ Text [ portuguese_brazilian ] = "Contagem" ;
+ Text [ portuguese ] = "Contar números" ;
+ Text [ finnish ] = "Määrä" ;
+ Text [ danish ] = "Tæl" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "Antal" ;
+ Text [ dutch ] = "Aantal" ;
+ Text [ spanish ] = "Cantidad" ;
+ Text [ english_us ] = "Count" ;
+ Text[ chinese_simplified ] = "×ÜÊý";
+ Text[ russian ] = "Êîëè÷åñòâî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "‘”";
+ Text[ chinese_traditional ] = "¼Æ¥Ø";
+ Text[ arabic ] = "ÚÏÏ";
+ Text[ greek ] = "ÐëÞèïò";
+ Text[ korean ] = "Ä«¿îÆ®";
+ Text[ turkish ] = "Anzahl";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FUN_TEXT_COUNT2
+ {
+ Text = "Anzahl2" ;
+ Text [ ENGLISH ] = "Count2" ;
+ Text [ english_us ] = "CountA" ;
+ Text [ italian ] = "ContaValori" ;
+ Text [ spanish ] = "Cantidad2" ;
+ Text [ french ] = "Nombre2" ;
+ Text [ dutch ] = "Aantal2" ;
+ Text [ swedish ] = "Antalv" ;
+ Text [ danish ] = "Tælv" ;
+ Text [ portuguese ] = "Contar valores" ;
+ Text [ portuguese_brazilian ] = "Anzahl2" ;
+ Text[ chinese_simplified ] = "×ÜÊý 2";
+ Text[ russian ] = "Êîëè÷åñòâî2";
+ Text[ polish ] = "Liczba2";
+ Text[ japanese ] = "‘”2";
+ Text[ chinese_traditional ] = "¼Æ¥Ø 2";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÑÞÇã";
+ Text[ greek ] = "ÐëÞèïò2";
+ Text[ korean ] = "Ä«¿îÆ®2";
+ Text[ turkish ] = "CountA";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FUN_TEXT_AVG
+ {
+ Text = "Mittelwert" ;
+ Text [ ENGLISH ] = "Average" ;
+ Text [ norwegian ] = "Gjennomsnitt" ;
+ Text [ italian ] = "Media" ;
+ Text [ portuguese_brazilian ] = "Média" ;
+ Text [ portuguese ] = "Média" ;
+ Text [ finnish ] = "Keskiarvo" ;
+ Text [ danish ] = "Middel" ;
+ Text [ french ] = "Moyenne" ;
+ Text [ swedish ] = "Medel" ;
+ Text [ dutch ] = "Gemiddelde" ;
+ Text [ spanish ] = "Promedio" ;
+ Text [ english_us ] = "Average" ;
+ Text[ chinese_simplified ] = "ƽ¾ùÖµ";
+ Text[ russian ] = "Ñðåäíåå çíà÷åíèå";
+ Text[ polish ] = "Œrednia wartoœæ";
+ Text[ japanese ] = "•½‹Ï’l";
+ Text[ chinese_traditional ] = "¥­§¡­È";
+ Text[ arabic ] = "ÇáãÚÏá";
+ Text[ greek ] = "ÌÝóç ôéìÞ";
+ Text[ korean ] = "Æò±Õ";
+ Text[ turkish ] = "Average";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FUN_TEXT_MAX
+ {
+ Text = "Max" ;
+ Text [ ENGLISH ] = "Max" ;
+ Text [ norwegian ] = "Maks" ;
+ Text [ italian ] = "Max" ;
+ Text [ portuguese_brazilian ] = "Max" ;
+ Text [ portuguese ] = "Máx." ;
+ Text [ finnish ] = "Suurin" ;
+ Text [ danish ] = "Maks" ;
+ Text [ french ] = "Max" ;
+ Text [ swedish ] = "Max" ;
+ Text [ dutch ] = "Max" ;
+ Text [ spanish ] = "Máx" ;
+ Text [ english_us ] = "Max" ;
+ Text[ chinese_simplified ] = "×î´ó";
+ Text[ russian ] = "Ìàêñèìóì";
+ Text[ polish ] = "Max";
+ Text[ japanese ] = "Å‘å";
+ Text[ chinese_traditional ] = "³Ì¤j";
+ Text[ arabic ] = "ÃÞÕì";
+ Text[ greek ] = "Ìåã";
+ Text[ korean ] = "ÃÖ´ë";
+ Text[ turkish ] = "Max";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FUN_TEXT_MIN
+ {
+ Text = "Min" ;
+ Text [ ENGLISH ] = "Min" ;
+ Text [ norwegian ] = "Min" ;
+ Text [ italian ] = "Min" ;
+ Text [ portuguese_brazilian ] = "Min" ;
+ Text [ portuguese ] = "Mín." ;
+ Text [ finnish ] = "Pienin" ;
+ Text [ danish ] = "Min" ;
+ Text [ french ] = "Min" ;
+ Text [ swedish ] = "Min" ;
+ Text [ dutch ] = "Min" ;
+ Text [ spanish ] = "Mín" ;
+ Text [ english_us ] = "Min" ;
+ Text[ chinese_simplified ] = "×îС";
+ Text[ russian ] = "Ìèíèìóì";
+ Text[ polish ] = "Min";
+ Text[ japanese ] = "Ŭ";
+ Text[ chinese_traditional ] = "³Ì¤p";
+ Text[ arabic ] = "ÃÏäì";
+ Text[ greek ] = "Åëá÷";
+ Text[ korean ] = "ÃÖ¼Ò";
+ Text[ turkish ] = "Min";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FUN_TEXT_PRODUCT
+ {
+ Text = "Produkt" ;
+ Text [ ENGLISH ] = "Product" ;
+ Text [ norwegian ] = "Produkt" ;
+ Text [ italian ] = "Prodotto" ;
+ Text [ portuguese_brazilian ] = "Produto" ;
+ Text [ portuguese ] = "Produto" ;
+ Text [ finnish ] = "Tulo" ;
+ Text [ danish ] = "Produkt" ;
+ Text [ french ] = "Produit" ;
+ Text [ swedish ] = "Produkt" ;
+ Text [ dutch ] = "Product" ;
+ Text [ spanish ] = "Producto" ;
+ Text [ english_us ] = "Product" ;
+ Text[ chinese_simplified ] = "³Ë»ý";
+ Text[ russian ] = "Ïðîèçâåäåíèå";
+ Text[ polish ] = "Produkt";
+ Text[ japanese ] = "Ï";
+ Text[ chinese_traditional ] = "­¼¿n";
+ Text[ arabic ] = "ÍÇÕá ÇáÖÑÈ";
+ Text[ greek ] = "Ãéíüìåíï";
+ Text[ korean ] = "Á¦Ç°";
+ Text[ turkish ] = "Çarpým";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FUN_TEXT_STDDEV
+ {
+ Text = "StAbw" ;
+ Text [ ENGLISH ] = "StDev" ;
+ Text [ norwegian ] = "Standardavvik" ;
+ Text [ italian ] = "Dev.St" ;
+ Text [ portuguese_brazilian ] = "StDev" ;
+ Text [ portuguese ] = "DesvP" ;
+ Text [ finnish ] = "Keskihaj" ;
+ Text [ danish ] = "Stdafv" ;
+ Text [ french ] = "Ecartype" ;
+ Text [ swedish ] = "StdAv" ;
+ Text [ dutch ] = "StAfw" ;
+ Text [ spanish ] = "DevNorm" ;
+ Text [ english_us ] = "StDev" ;
+ Text[ chinese_simplified ] = "±ê׼ƫ²î(³éÑù)";
+ Text[ russian ] = "Ñìåùåííîå îòêëîíåíèå";
+ Text[ polish ] = "OdchStd";
+ Text[ japanese ] = "•W€•Î·(•W–{)";
+ Text[ chinese_traditional ] = "¼Ð·Ç°¾®t(©â¼Ë)";
+ Text[ arabic ] = "StDev";
+ Text[ greek ] = "StDev";
+ Text[ korean ] = "StDev";
+ Text[ turkish ] = "StDev";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FUN_TEXT_VAR
+ {
+ Text = "Varianz" ;
+ Text [ ENGLISH ] = "Var" ;
+ Text [ norwegian ] = "Variabel" ;
+ Text [ italian ] = "Varianza" ;
+ Text [ portuguese_brazilian ] = "Var" ;
+ Text [ portuguese ] = "Variância" ;
+ Text [ finnish ] = "Varianssi" ;
+ Text [ danish ] = "Varians" ;
+ Text [ french ] = "Var" ;
+ Text [ swedish ] = "Varians" ;
+ Text [ dutch ] = "Variantie" ;
+ Text [ spanish ] = "VAR" ;
+ Text [ english_us ] = "Var" ;
+ Text[ chinese_simplified ] = "·½²î";
+ Text[ russian ] = "Ñìåùåííàÿ äèñïåðñèÿ";
+ Text[ polish ] = "Wariancja";
+ Text[ japanese ] = "•ªŽU";
+ Text[ chinese_traditional ] = "¤è®t";
+ Text[ arabic ] = "Var";
+ Text[ greek ] = "Var";
+ Text[ korean ] = "º¯¼ö";
+ Text[ turkish ] = "Var";
+ Text[ language_user1 ] = " ";
+ };
+ /* String STR_GOALSEEK
+ {
+ Text = "ZIELWERTSUCHE";
+ Text[ENGLISH] = "GOALSEEK";
+ Text[norwegian] = "GOALSEEK";
+ Text[italian] = "CORREZIONE VALORE DELLA CELLA";
+ Text[portuguese_brazilian] = "BUSCADEOBJETIVO";
+ Text[portuguese] = "PROCURADEOBJETIVO";
+ Text[finnish] = "TAVOITEHAKU";
+ Text[danish] = "MÅLSøGNING";
+ Text[french] = "GOALSEEK";
+ Text[swedish] = "MÅLSÖKNING";
+ Text[dutch] = "DOELZOEKEN";
+ Text[spanish] = "FINPRETENDIDO";
+ Text[english_us] = "GOAL SEEK";
+ };
+*/
+ String STR_NOCHARTATCURSOR
+ {
+ Text = "Kein Diagramm an dieser Position gefunden." ;
+ Text [ ENGLISH ] = "No chart at this position." ;
+ Text [ norwegian ] = "No chart at this position." ;
+ Text [ italian ] = "Non è stato trovato nessun diagramma in questa posizione." ;
+ Text [ portuguese_brazilian ] = "Nenhum gráfico nesta posição." ;
+ Text [ portuguese ] = "Nenhum gráfico encontrado nesta posição." ;
+ Text [ finnish ] = "Tässä kohdassa ei ole kaaviota." ;
+ Text [ danish ] = "Der blev ikke fundet et diagram på denne position.." ;
+ Text [ french ] = "Aucun diagramme trouvé à cet emplacement" ;
+ Text [ swedish ] = "Inget diagram i denna position." ;
+ Text [ dutch ] = "Geen diagram op deze positie gevonden." ;
+ Text [ spanish ] = "No se ha encontrado ningún diagrama en esta posición." ;
+ Text [ english_us ] = "No chart found at this position." ;
+ Text[ chinese_simplified ] = "ÔÚÕâ¸öλÖÃûÓÐÕÒµ½Í¼±í¡£";
+ Text[ russian ] = "Äèàãðàììà â ýòîì ìåñòå íå íàéäåíà.";
+ Text[ polish ] = "Nie znaleziono wykresu przy tej pozycji.";
+ Text[ japanese ] = "‚±‚̈ʒu‚ɸÞ×Ì‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¦b³o­Ó¦ì¸m¨S¦³§ä¨ì¹Ïªí¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÑÓã ÈíÇäí Ýí åÐÇ ÇáãæÖÚ.";
+ Text[ greek ] = "Äåí âñÝèçêå äéÜãñáììá óå áõôÞ ôç èÝóç.";
+ Text[ korean ] = "ÀÌ À§Ä¡¿¡¼­ Â÷Æ®°¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Bu konumda þema bulunamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_NOTFOUND
+ {
+ Text = "Keine Datenpilot-Tabelle an dieser Position gefunden." ;
+ Text [ ENGLISH ] = "No Data Pilot Table at this position." ;
+ Text [ norwegian ] = "No Data Pilot Table at this position." ;
+ Text [ italian ] = "In questa punto non è stata trovata una tabella DataPilot" ;
+ Text [ portuguese_brazilian ] = "No Data Pilot Table at this position." ;
+ Text [ portuguese ] = "Não existe Piloto de Dados nesta posição." ;
+ Text [ finnish ] = "Tässä kohdassa ei ole pivot-taulukkoa." ;
+ Text [ danish ] = "Der blev ikke fundet en DataPilot-tabel på denne position." ;
+ Text [ french ] = "Aucun tableau du DataPilote n'a été trouvé à cet emplacement." ;
+ Text [ swedish ] = "Ingen Datapilot-tabell hittades vid denna position." ;
+ Text [ dutch ] = "Geen DataPiloot-tabel op deze positie gevonden." ;
+ Text [ spanish ] = "No se ha encontrado ninguna tabla del Piloto de Datos en esta posición." ;
+ Text [ english_us ] = "No DataPilot table found at this position." ;
+ Text[ chinese_simplified ] = "ÔÚÕâ¸öλÖÃûÓÐÕÒµ½Êý¾ÝÖúÀí¹¤×÷±í¡£";
+ Text[ russian ] = "Ñâîäíàÿ òàáëèöà â ýòîì ìåñòå íåíàéäåíà.";
+ Text[ polish ] = "Nie znaleziono tabeli Pilota danych przy tej pozycji.";
+ Text[ japanese ] = "‚±‚̈ʒu‚ÉÃÞ°À Ê߲ۯĕ\\‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¦b³o­Ó¦ì¸m¨S¦³§ä¨ì¸ê®Æ§U²z¤u§@ªí¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÌÏæá ãÑÔÏ ÇáÈíÇäÇÊ ÇáÂáí Ýí åÐÇ ÇáãæÖÚ.";
+ Text[ greek ] = "Äåí âñÝèçêå ðßíáêáò ðéëüôïõ äåäïìÝíùí óå áõôÞ ôç èÝóç.";
+ Text[ korean ] = "ÀÌ À§Ä¡¿¡¼­ µ¥ÀÌÅÍ ÆÄÀÏ·µ Å×À̺íÀÌ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Bu konumda Veri pilotu tablosu bulunamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ERROR_STR
+ {
+ Text = "Err:" ;
+ Text [ ENGLISH ] = "Err:" ;
+ Text [ norwegian ] = "Err:" ;
+ Text [ italian ] = "Err:" ;
+ Text [ portuguese_brazilian ] = "Err:" ;
+ Text [ portuguese ] = "Err:" ;
+ Text [ french ] = "Err :" ;
+ Text [ dutch ] = "Err:" ;
+ Text [ spanish ] = "Err:" ;
+ Text [ danish ] = "Err:" ;
+ Text [ swedish ] = "Err:" ;
+ Text [ finnish ] = "Err:" ;
+ Text [ english_us ] = "Err:" ;
+ Text[ chinese_simplified ] = "´íÎó:";
+ Text[ russian ] = "Îøèáêà:";
+ Text[ polish ] = "B³:";
+ Text[ japanese ] = "´×°:";
+ Text[ chinese_traditional ] = "¿ù»~¡G";
+ Text[ arabic ] = "ÎØÃ:";
+ Text[ greek ] = "ÓöÜëìá:";
+ Text[ korean ] = "¿À·ù:";
+ Text[ turkish ] = "Hata:";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NV_STR
+ {
+ Text = "#NV" ;
+ Text [ ENGLISH ] = "#N/A" ;
+ Text [ norwegian ] = "#N/A" ;
+ Text [ italian ] = "#N/D" ;
+ Text [ portuguese_brazilian ] = "#N/A" ;
+ Text [ portuguese ] = "#ND" ;
+ Text [ danish ] = "#IKKE.TILGÆNGELIG" ;
+ Text [ finnish ] = "#EI OLE" ;
+ // Text[danish_wrong] = "#IKKE TILGÆNGELIG"; /* zu lang, muss in eine Zelle passen */
+ Text [ french ] = "#NA" ;
+ Text [ swedish ] = "#Saknas" ;
+ Text [ dutch ] = "#NVT" ;
+ Text [ spanish ] = "#N/A" ;
+ Text [ english_us ] = "#N/A" ;
+ Text[ chinese_simplified ] = "#N/V";
+ Text[ russian ] = "#ÍÄ";
+ Text[ polish ] = "#NIE DOTYCZY";
+ Text[ japanese ] = "#N/A";
+ Text[ chinese_traditional ] = "#N/V";
+ Text[ arabic ] = "#N/A";
+ Text[ greek ] = "#N/A";
+ Text[ korean ] = "#N/A";
+ Text[ turkish ] = "#YOK";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NOREF_STR
+ {
+ Text = "#BEZUG!" ;
+ Text [ ENGLISH ] = "#REF!" ;
+ Text [ norwegian ] = "#REF!" ;
+ Text [ italian ] = "#RIF!" ;
+ Text [ portuguese_brazilian ] = "#REF!" ;
+ Text [ portuguese ] = "#REF!" ;
+ Text [ danish ] = "#REF!" ;
+ Text [ finnish ] = "#REF" ;
+ // Text[danish_wrong] = "#IKKE TILGÆNGELIG"; /* zu lang, muss in eine Zelle passen */
+ Text [ french ] = "#REF!" ;
+ Text [ swedish ] = "#REF!" ;
+ Text [ dutch ] = "#VERW!" ;
+ Text [ spanish ] = "#REF!" ;
+ Text [ english_us ] = "#REF!" ;
+ Text[ chinese_simplified ] = "#REF!";
+ Text[ russian ] = "#ÑÑÛË!";
+ Text[ polish ] = "#ODNOŒNIK!";
+ Text[ japanese ] = "#REF!";
+ Text[ chinese_traditional ] = "#REF!";
+ Text[ arabic ] = "#REF!";
+ Text[ greek ] = "#REF!";
+ Text[ korean ] = "#REF!";
+ Text[ turkish ] = "#REF!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_EMPTYDATA
+ {
+ Text = "(leer)" ;
+ Text [ ENGLISH ] = "(empty)" ;
+ Text [ norwegian ] = "(empty)" ;
+ Text [ italian ] = "(vuoto)" ;
+ Text [ portuguese_brazilian ] = "(vazio)" ;
+ Text [ portuguese ] = "(vazio)" ;
+ Text [ finnish ] = "(tyhjä)" ;
+ Text [ danish ] = "(tom)" ;
+ Text [ french ] = "(vide)" ;
+ Text [ swedish ] = "(tom)" ;
+ Text [ dutch ] = "(leeg)" ;
+ Text [ spanish ] = "(vacío)" ;
+ Text [ english_us ] = "(empty)" ;
+ Text[ chinese_simplified ] = "(¿Õ°×)";
+ Text[ russian ] = "(ïóñòîé)";
+ Text[ polish ] = "(pusty)";
+ Text[ japanese ] = "(‹ó”’)";
+ Text[ chinese_traditional ] = "(ªÅ¥Õ)";
+ Text[ arabic ] = "(ÝÇÑÛ)";
+ Text[ greek ] = "(êåíü)";
+ Text[ korean ] = "(°ø¹é)";
+ Text[ turkish ] = "(boþ)";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PRINT_INVALID_AREA
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültiger Druckbereich : Ung³ltiger Druckbereich */
+ Text = "Ungültiger Druckbereich" ;
+ Text [ ENGLISH ] = "Invalid print area" ;
+ Text [ norwegian ] = "Invalid print area" ;
+ Text [ italian ] = "Area di stampa non valida" ;
+ Text [ portuguese_brazilian ] = "Área de impressão inválida" ;
+ Text [ portuguese ] = "Área de impressão não válida" ;
+ Text [ finnish ] = "Sopimaton tulostusalue" ;
+ Text [ danish ] = "Ugyldigt udskriftsområde" ;
+ Text [ french ] = "Zone d'impression incorrecte" ;
+ Text [ swedish ] = "Ogiltigt utskriftsområde" ;
+ Text [ dutch ] = "Ongeldig afdrukbereik" ;
+ Text [ spanish ] = "Área de impresión no válida" ;
+ Text [ english_us ] = "Invalid print range" ;
+ Text[ chinese_simplified ] = "ÎÞЧµÄ´òÓ¡ÇøÓò";
+ Text[ russian ] = "Íåäîïóñòèìàÿ îáëàñòü ïå÷àòè";
+ Text[ polish ] = "Nieprawid³owy obszar wydruku";
+ Text[ japanese ] = "ˆóü”͈͂ª•s“KØ‚Å‚·";
+ Text[ chinese_traditional ] = "µL®Äªº¦C¦L°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ØÈÇÚÉ ÛíÑ ÕÇáÍ";
+ Text[ greek ] = "¢êõñç ðåñéï÷Þ åêôýðùóçò";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº Àμ⠿µ¿ª";
+ Text[ turkish ] = "Geçersiz yazdýrma aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PAGESTYLE
+ {
+ Text = "Seitenvorlage" ;
+ Text [ ENGLISH ] = "Page Style" ;
+ Text [ norwegian ] = "Page Style" ;
+ Text [ italian ] = "Modello di pagina" ;
+ Text [ portuguese_brazilian ] = "Estilo da Página" ;
+ Text [ portuguese ] = "Estilo de página" ;
+ Text [ finnish ] = "Sivutyyli" ;
+ Text [ danish ] = "Sidetypografi" ;
+ Text [ french ] = "Style de page" ;
+ Text [ swedish ] = "Sidformatmall" ;
+ Text [ dutch ] = "Pagina-opmaakprofiel" ;
+ Text [ spanish ] = "Estilo de hoja" ;
+ Text [ english_us ] = "Page Style" ;
+ Text[ chinese_simplified ] = "Ò³ÃæÑùʽ";
+ Text[ russian ] = "Ñòèëü ñòðàíèöû";
+ Text[ polish ] = "Styl strony";
+ Text[ japanese ] = "Íß°¼Þ½À²Ù";
+ Text[ chinese_traditional ] = "­¶­±¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÕÝÍÉ";
+ Text[ greek ] = "Ðñüôõðï óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö À¯Çü";
+ Text[ turkish ] = "Sayfa biçimi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_HEADER
+ {
+ Text = "Kopfzeile" ;
+ Text [ ENGLISH ] = "Header" ;
+ Text [ norwegian ] = "Header" ;
+ Text [ italian ] = "Riga d'intestazione" ;
+ Text [ portuguese_brazilian ] = "Cabeçalho" ;
+ Text [ portuguese ] = "Cabeçalho" ;
+ Text [ finnish ] = "Yläteksti" ;
+ Text [ danish ] = "Sidehoved" ;
+ Text [ french ] = "En-tête" ;
+ Text [ swedish ] = "Sidhuvud" ;
+ Text [ dutch ] = "Koptekst" ;
+ Text [ spanish ] = "Encabezamiento" ;
+ Text [ english_us ] = "Header" ;
+ Text[ chinese_simplified ] = "ҳü";
+ Text[ russian ] = "Âåðõíèé êîëîíòèòóë";
+ Text[ polish ] = "Nag³ówek";
+ Text[ japanese ] = "ͯÀÞ";
+ Text[ chinese_traditional ] = "­¶­º";
+ Text[ arabic ] = "ÑÃÓ ÇáÕÝÍÉ";
+ Text[ greek ] = "Êåöáëßäá";
+ Text[ korean ] = "¸Ó¸®±Û";
+ Text[ turkish ] = "Üstbilgi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FOOTER
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fußzeile : Fu˜zeile */
+ Text = "Fußzeile" ;
+ Text [ ENGLISH ] = "Footer" ;
+ Text [ norwegian ] = "Footer" ;
+ Text [ italian ] = "Piè di pagina" ;
+ Text [ portuguese_brazilian ] = "Rodapé" ;
+ Text [ portuguese ] = "Rodapé" ;
+ Text [ finnish ] = "Alateksti" ;
+ Text [ danish ] = "Sidefod" ;
+ Text [ french ] = "Pied de page" ;
+ Text [ swedish ] = "Sidfot" ;
+ Text [ dutch ] = "Voettekst" ;
+ Text [ spanish ] = "Pie de página" ;
+ Text [ english_us ] = "Footer" ;
+ Text[ chinese_simplified ] = "Ò³½Å";
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë";
+ Text[ polish ] = "Stopka";
+ Text[ japanese ] = "̯À";
+ Text[ chinese_traditional ] = "­¶§À";
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ";
+ Text[ greek ] = "ÕðïóÝëéäï";
+ Text[ korean ] = "¹Ù´Ú±Û";
+ Text[ turkish ] = "Altbilgi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TEXTATTRS
+ {
+ Text = "Textattribute" ;
+ Text [ ENGLISH ] = "Text Attributes" ;
+ Text [ norwegian ] = "Text Attributes" ;
+ Text [ italian ] = "Attributi di testo" ;
+ Text [ portuguese_brazilian ] = "Atributos de Texto" ;
+ Text [ portuguese ] = "Atributos de texto" ;
+ Text [ finnish ] = "Tekstimääritteet" ;
+ Text [ danish ] = "Tekstattributter" ;
+ Text [ french ] = "Attributs de texte" ;
+ Text [ swedish ] = "Textattribut" ;
+ Text [ dutch ] = "Tekstattributen" ;
+ Text [ spanish ] = "Atributos de texto" ;
+ Text [ english_us ] = "Text Attributes" ;
+ Text[ chinese_simplified ] = "ÎÄ×ÖÊôÐÔ";
+ Text[ russian ] = "Àòðèáóòû òåêñòà";
+ Text[ polish ] = "Atrybuty tekstu";
+ Text[ japanese ] = "÷½Ä‚Ì‘®«";
+ Text[ chinese_traditional ] = "¤å¦rÄÝ©Ê";
+ Text[ arabic ] = "ÓãÇÊ ÇáäÕ";
+ Text[ greek ] = "Éäéüôçôåò êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ¼Ó¼º";
+ Text[ turkish ] = "Metin öznitelikleri";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_HFCMD_DELIMITER
+ {
+ Text = "\\" ;
+ Text [ ENGLISH ] = "\\" ;
+ Text [ norwegian ] = "\\" ;
+ Text [ italian ] = "\\" ;
+ Text [ portuguese_brazilian ] = "\\\\" ;
+ Text [ portuguese ] = "\\" ;
+ Text [ finnish ] = "\\" ;
+ Text [ danish ] = "\\" ;
+ Text [ french ] = "\\" ;
+ Text [ swedish ] = "\\" ;
+ Text [ dutch ] = "\\" ;
+ Text [ spanish ] = "\\" ;
+ Text [ english_us ] = "\\" ;
+ Text[ chinese_simplified ] = "\\";
+ Text[ russian ] = "\\";
+ Text[ polish ] = "\\";
+ Text[ japanese ] = "\\";
+ Text[ chinese_traditional ] = "\\";
+ Text[ arabic ] = "\\";
+ Text[ greek ] = "\\";
+ Text[ korean ] = "\\";
+ Text[ turkish ] = "\\";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_HFCMD_PAGE
+ {
+ Text = "SEITE" ;
+ Text [ ENGLISH ] = "PAGE" ;
+ Text [ norwegian ] = "PAGE" ;
+ Text [ italian ] = "Pagina" ;
+ Text [ portuguese_brazilian ] = "PAGINA" ;
+ Text [ portuguese ] = "PÁGINA" ;
+ Text [ finnish ] = "SIVU" ;
+ Text [ danish ] = "SIDE" ;
+ Text [ french ] = "PAGE" ;
+ Text [ swedish ] = "SIDA" ;
+ Text [ dutch ] = "PAGINA" ;
+ Text [ spanish ] = "PÁGINA" ;
+ Text [ english_us ] = "PAGE" ;
+ Text[ chinese_simplified ] = "Ò³";
+ Text[ russian ] = "ÑÒÐÀÍÈÖÀ";
+ Text[ polish ] = "STRONA";
+ Text[ japanese ] = "Íß°¼Þ";
+ Text[ chinese_traditional ] = "­¶";
+ Text[ arabic ] = "ÕÝÍÉ";
+ Text[ greek ] = "ÓÅËÉÄÁ";
+ Text[ korean ] = "ÆäÀÌÁö";
+ Text[ turkish ] = "SAYFA";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_HFCMD_PAGES
+ {
+ Text = "SEITEN" ;
+ Text [ ENGLISH ] = "PAGES" ;
+ Text [ norwegian ] = "PAGES" ;
+ Text [ italian ] = "PAGINE" ;
+ Text [ portuguese_brazilian ] = "PAGINAS" ;
+ Text [ portuguese ] = "PÁGINAS" ;
+ Text [ finnish ] = "SIVUJA" ;
+ Text [ danish ] = "SIDER" ;
+ Text [ french ] = "PAGES" ;
+ Text [ swedish ] = "SIDOR" ;
+ Text [ dutch ] = "PAGINA'S" ;
+ Text [ spanish ] = "PÁGINAS" ;
+ Text [ english_us ] = "PAGES" ;
+ Text[ chinese_simplified ] = "Ò³";
+ Text[ russian ] = "ÑÒÐÀÍÈÖÛ";
+ Text[ polish ] = "STRONY";
+ Text[ japanese ] = "Íß°¼Þ";
+ Text[ chinese_traditional ] = "­¶";
+ Text[ arabic ] = "ÕÝÍÇÊ";
+ Text[ greek ] = "PAGES";
+ Text[ korean ] = "ÆäÀÌÁöµé";
+ Text[ turkish ] = "SAYFA";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_HFCMD_DATE
+ {
+ Text = "DATUM" ;
+ Text [ ENGLISH ] = "DATE" ;
+ Text [ norwegian ] = "DATE" ;
+ Text [ italian ] = "DATA" ;
+ Text [ portuguese_brazilian ] = "DATA" ;
+ Text [ portuguese ] = "DATA" ;
+ Text [ finnish ] = "PÄIVÄ" ;
+ Text [ danish ] = "DATO" ;
+ Text [ french ] = "DATE" ;
+ Text [ swedish ] = "DATUM" ;
+ Text [ dutch ] = "DATUM" ;
+ Text [ spanish ] = "FECHA" ;
+ Text [ english_us ] = "DATE" ;
+ Text[ chinese_simplified ] = "ÈÕÆÚ";
+ Text[ russian ] = "ÄÀÒÀ";
+ Text[ polish ] = "DATA";
+ Text[ japanese ] = "“ú•t";
+ Text[ chinese_traditional ] = "¤é´Á";
+ Text[ arabic ] = "ÇáÊÇÑíÎ";
+ Text[ greek ] = "ÇÌÅÑÏÌÇÍÉÁ";
+ Text[ korean ] = "ÀÏÀÚ";
+ Text[ turkish ] = "DATE";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_HFCMD_TIME
+ {
+ Text = "ZEIT" ;
+ Text [ ENGLISH ] = "TIME" ;
+ Text [ norwegian ] = "TIME" ;
+ Text [ italian ] = "ORARIO" ;
+ Text [ portuguese_brazilian ] = "HORA" ;
+ Text [ portuguese ] = "HORA" ;
+ Text [ finnish ] = "AIKA" ;
+ Text [ danish ] = "TID" ;
+ Text [ french ] = "TEMPS" ;
+ Text [ swedish ] = "TID" ;
+ Text [ dutch ] = "TIJD" ;
+ Text [ spanish ] = "HORA" ;
+ Text [ english_us ] = "TIME" ;
+ Text[ chinese_simplified ] = "ʱ¼ä";
+ Text[ russian ] = "ÂÐÅÌß";
+ Text[ polish ] = "CZAS";
+ Text[ japanese ] = "ŽžŠÔ";
+ Text[ chinese_traditional ] = "®É¶¡";
+ Text[ arabic ] = "ÇáæÞÊ";
+ Text[ greek ] = "ÙÑÁ";
+ Text[ korean ] = "½Ã°£";
+ Text[ turkish ] = "TIME";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_HFCMD_FILE
+ {
+ Text = "DATEI" ;
+ Text [ ENGLISH ] = "FILE" ;
+ Text [ norwegian ] = "FILE" ;
+ Text [ italian ] = "FILE" ;
+ Text [ portuguese_brazilian ] = "ARQUIVO" ;
+ Text [ portuguese ] = "FICHEIRO" ;
+ Text [ finnish ] = "TIEDOSTO" ;
+ Text [ danish ] = "FIL" ;
+ Text [ french ] = "FICHIER" ;
+ Text [ swedish ] = "FIL" ;
+ Text [ dutch ] = "BESTAND" ;
+ Text [ spanish ] = "ARCHIVO" ;
+ Text [ english_us ] = "FILE" ;
+ Text[ chinese_simplified ] = "Îļþ";
+ Text[ russian ] = "ÔÀÉË";
+ Text[ polish ] = "PLIK";
+ Text[ japanese ] = "̧²Ù";
+ Text[ chinese_traditional ] = "ÀÉ®×";
+ Text[ arabic ] = "ÇáãáÝ";
+ Text[ greek ] = "ÁÑ×ÅÉÏ";
+ Text[ korean ] = "ÆÄÀÏ";
+ Text[ turkish ] = "DOSYA";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_HFCMD_TABLE
+ {
+ Text = "TABELLE" ;
+ Text [ ENGLISH ] = "TABLE" ;
+ Text [ norwegian ] = "TABLE" ;
+ Text [ italian ] = "TABELLA" ;
+ Text [ portuguese_brazilian ] = "TABELA" ;
+ Text [ portuguese ] = "FOLHA" ;
+ Text [ finnish ] = "TAULUKKO" ;
+ Text [ danish ] = "TABEL" ;
+ Text [ french ] = "FEUILLE" ;
+ Text [ swedish ] = "TABELL" ;
+ Text [ dutch ] = "WERKBLAD" ;
+ Text [ spanish ] = "HOJA" ;
+ Text [ english_us ] = "SHEET" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ russian ] = "ËÈÑÒ";
+ Text[ polish ] = "ARKUSZ";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "¤u§@ªí";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "ÖÕËËÏ";
+ Text[ korean ] = "½ÃÆ®";
+ Text[ turkish ] = "TABLO";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PROTECTIONERR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Gesperrte Zellen können nicht geändert werden. : Gesperrte Zellen k÷nnen nicht geõndert werden. */
+ Text = "Gesperrte Zellen können nicht geändert werden." ;
+ Text [ ENGLISH ] = "Protected cells cannot be modified." ;
+ Text [ norwegian ] = "Protected cells cannot be modified." ;
+ Text [ italian ] = "Impossibile modificare le celle protette." ;
+ Text [ portuguese_brazilian ] = "Células protegidas não podem ser modificadas." ;
+ Text [ portuguese ] = "Células protegidas não podem ser modificadas." ;
+ Text [ finnish ] = "Suojattuja soluja ei voi muokata." ;
+ Text [ danish ] = "Låste celler kan ikke ændres." ;
+ Text [ french ] = "Impossible de modifier les cellules protégées" ;
+ Text [ swedish ] = "Skyddade celler kan inte ändras." ;
+ Text [ dutch ] = "Beveiligde cellen kunnen niet worden gewijzigd." ;
+ Text [ spanish ] = "Las celdas protegidas no pueden ser modificadas." ;
+ Text [ english_us ] = "Protected cells can not be modified." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨¸ü¸ÄËø¶¨µÄµ¥Ôª¸ñ¡£";
+ Text[ russian ] = "Çàùèùåííûå ÿ÷åéêè èçìåíèòü íåâîçìîæíî.";
+ Text[ polish ] = "Komórki chronione nie mog¹ zostaæ zmienione.";
+ Text[ japanese ] = "•ÛŒì‚³‚ꂽ¾Ù‚Í•ÏX‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk§ó§ïÂê©wªºÀx¦s®æ¡C";
+ Text[ arabic ] = "áÇ íãßä ÊÚÏíá ÇáÎáÇíÇ ÇáãÍãíÉ.";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ôñïðïðïéçèïýí ðñïóôáôåõüìåíá êåëéÜ.";
+ Text[ korean ] = "º¸È£µÈ ¼¿Àº ¼öÁ¤µÉ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Korumalý hücreler deðiþtirilemez.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_READONLYERR
+ {
+ Text = "Dokument ist nur zum Lesen geöffnet." ;
+ Text [ ENGLISH ] = "Document is readonly." ;
+ Text[ italian ] = "Il documento è aperto a sola lettura.";
+ Text[ portuguese_brazilian ] = "Dokument ist nur zum Lesen geöffnet.";
+ Text[ portuguese ] = "Documento aberto no modo só leitura";
+ Text[ danish ] = "Dokument er åbnet i en skrivebeskyttet tilstand.";
+ Text[ french ] = "Document ouvert en lecture seule.";
+ Text[ swedish ] = "Dokumentet är bara öppet för läsning.";
+ Text[ dutch ] = "Document is alleen geopend om te lezen";
+ Text[ spanish ] = "El archivo abierto es solo de lectura.";
+ Text[ english_us ] = "Document opened in read-only mode.";
+ Text[ chinese_simplified ] = "´ò¿ªÎĵµ½öÊÇÓÃÓÚÔĶÁµÄ¡£";
+ Text[ russian ] = "Äîêóìåíò îòêðûò òîëüêî äëÿ ÷òåíèÿ.";
+ Text[ polish ] = "Dokument tylko do odczytu.";
+ Text[ japanese ] = "‚±‚ÌÄÞ·­ÒÝÄ‚Í“Ç‚ÝŽæ‚èê—p‚Å‚·";
+ Text[ chinese_traditional ] = "¶}±Ò¤å¥ó¶È¬O¥Î©ó¾\\Ūªº¡C";
+ Text[ arabic ] = "ÇáãÓÊäÏ ãÝÊæÍ ááÞÑÇÁÉ ÝÞØ.";
+ Text[ greek ] = "¢íïéãìá åããñÜöïõ ìüíï ãéá áíÜãíùóç.";
+ Text[ korean ] = "¹®¼­´Â ÀбâÀü¿ë ¸ðµå·Î ¿­·È½À´Ï´Ù.";
+ Text[ turkish ] = "Belge salt okunur kipte açýldý.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MATRIXFRAGMENTERR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Teil einer Matrix kann nicht geändert werden. : Teil einer Matrix kann nicht geõndert werden. */
+ Text = "Teil einer Matrix kann nicht geändert werden." ;
+ Text [ ENGLISH ] = "Part of an Array cannot be modified." ;
+ // Text[norwegian] = "Protected cells cannot be modified.";
+ // Text[italian] = "Impossibile modificare le celle protette.";
+ // Text[portuguese_brazilian] = "Células protegidas não podem ser modificadas.";
+ // Text[portuguese] = "Células protegidas não podem ser modificadas.";
+ // Text[finnish] = "Suojattuja soluja ei voi muokata.";
+ // Text[danish] = "Beskyttede celler kan ikke ændres.";
+ // Text[french] = "Les cellules protégées ne peuvent pas être modifiées";
+ // Text[swedish] = "Skyddade celler kan inte ändras.";
+ // Text[dutch] = "Beschermde cellen kunnen niet worden gewijzigd.";
+ // Text[spanish] = "Las celdas protegidas no pueden modificarse.";
+ Text [ english_us ] = "Part of an array cannot be modified." ;
+ Text [ dutch ] = "Een deel van een matrix kan niet worden veranderd." ;
+ Text [ italian ] = "Non è possibile modificare una parte della matrice" ;
+ Text [ spanish ] = "No se puede modificar parte de la matriz." ;
+ Text [ french ] = "Impossible de modifier la partie d'une matrice." ;
+ Text [ swedish ] = "En del av en matris kan inte ändras." ;
+ Text [ danish ] = "Det er ikke muligt at ændre en del af en matrix." ;
+ Text [ portuguese ] = "Impossível alterar uma parte da matriz." ;
+ Text [ portuguese_brazilian ] = "Teil einer Matrix kann nicht geändert werden." ;
+ Text[ chinese_simplified ] = "¾ØÕóµÄÒ»²¿·ÖÎÞ·¨±»¸ü¸Ä¡£";
+ Text[ russian ] = "Íå óäàåòñÿ èçìåíèòü ÷àñòü ìàññèâà.";
+ Text[ polish ] = "Czêœæ macierzy nie mo¿e byæ zmodyfikowana.";
+ Text[ japanese ] = "ÏÄد¸½‚̈ꕔ‚Í•ÏX‚Å‚«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "µLªkÅܧó¯x°}ªº¤@³¡¥÷¡C";
+ Text[ arabic ] = "áÇ íãßä ÊÚÏíá ÌÒÁ ãä ÕÝíÝ.";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ôñïðïðïéçèåß ôìÞìá ìéáò ìÞôñáò.";
+ Text[ korean ] = "Çà·ÄÀÇ ÀϺθ¦ º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Matrislerin bir kýsmý deðiþtirilemiyor.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PAGEHEADER
+ {
+ Text = "Kopfzeile" ;
+ Text [ ENGLISH ] = "Page Header" ;
+ Text [ norwegian ] = "Page Header" ;
+ Text [ italian ] = "Riga d'intestazione" ;
+ Text [ portuguese_brazilian ] = "Cabeçalho da Página" ;
+ Text [ portuguese ] = "Cabeçalho" ;
+ Text [ finnish ] = "Sivun yläteksti" ;
+ Text [ danish ] = "Sidehoved" ;
+ Text [ french ] = "En-tête" ;
+ Text [ swedish ] = "Sidhuvud" ;
+ Text [ dutch ] = "Koptekst" ;
+ Text [ spanish ] = "Encabezamiento" ;
+ Text [ english_us ] = "Header" ;
+ Text[ chinese_simplified ] = "ҳü";
+ Text[ russian ] = "Âåðõíèé êîëîíòèòóë";
+ Text[ polish ] = "Nag³ówek";
+ Text[ japanese ] = "ͯÀÞ";
+ Text[ chinese_traditional ] = "­¶­º";
+ Text[ arabic ] = "ÑÃÓ ÇáÕÝÍÉ";
+ Text[ greek ] = "Êåöáëßäá";
+ Text[ korean ] = "¸Ó¸®±Û";
+ Text[ turkish ] = "Üstbilgi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PAGEFOOTER
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fußzeile : Fu˜zeile */
+ Text = "Fußzeile" ;
+ Text [ ENGLISH ] = "Page Footer" ;
+ Text [ norwegian ] = "Page Footer" ;
+ Text [ italian ] = "Piè di pagina" ;
+ Text [ portuguese_brazilian ] = "Rodapé da Página" ;
+ Text [ portuguese ] = "Linha de rodapé" ;
+ Text [ finnish ] = "Sivun alateksti" ;
+ Text [ danish ] = "Sidefod" ;
+ Text [ french ] = "Pied de page" ;
+ Text [ swedish ] = "Sidfot" ;
+ Text [ dutch ] = "Voettekst" ;
+ Text [ spanish ] = "Pie de página" ;
+ Text [ english_us ] = "Footer" ;
+ Text[ chinese_simplified ] = "Ò³½Å";
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë";
+ Text[ polish ] = "Stopka";
+ Text[ japanese ] = "̯À";
+ Text[ chinese_traditional ] = "­¶§À";
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ";
+ Text[ greek ] = "ÕðïóÝëéäï";
+ Text[ korean ] = "¹Ù´Ú±Û";
+ Text[ turkish ] = "Altbilgi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_ILL_ARG
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler: Ungültiges Argument : Fehler: Ung³ltiges Argument */
+ Text = "Fehler: Ungültiges Argument" ;
+ Text [ ENGLISH ] = "Error: Illegal Argument" ;
+ Text [ norwegian ] = "Error: Illegal Argument" ;
+ Text [ italian ] = "Errore: argomento non ammesso" ;
+ Text [ portuguese_brazilian ] = "Erro: Argumento Ilegal" ;
+ Text [ portuguese ] = "Erro: argumento não válido" ;
+ Text [ finnish ] = "Virhe: Väärä argumentti" ;
+ Text [ danish ] = "Fejl: ugyldigt argument" ;
+ Text [ french ] = "Erreur : argument non valable" ;
+ Text [ swedish ] = "Fel: ogiltigt argument" ;
+ Text [ dutch ] = "Fout: ongeldig argument" ;
+ Text [ spanish ] = "Error: Argumento no válido" ;
+ Text [ english_us ] = "Error: Invalid argument" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÎÞЧµÄ×Ô±äÁ¿";
+ Text[ russian ] = "Îøèáêà: íåäîïóñòèìûé àðãóìåíò";
+ Text[ polish ] = "B³¹d: Nieprawid³owy argument";
+ Text[ japanese ] = "´×°: –³Œø‚Ȉø”";
+ Text[ chinese_traditional ] = "¿ù»~¡GµL®Äªº¦ÛÅܶq";
+ Text[ arabic ] = "ÎØÃ: æÓíØÉ ÛíÑ ÕÇáÍÉ";
+ Text[ greek ] = "ÓöÜëìá: Ìç Ýãêõñï üñéóìá";
+ Text[ korean ] = "¿À·ù: À¯È¿ÇÏÁö ¾ÊÀº µ¶¸³ º¯¼ö";
+ Text[ turkish ] = "Hata: Geçersiz deðiþken";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_ILL_PAR
+ {
+ Text = "Fehler in der Parameterliste" ;
+ Text [ ENGLISH ] = "Error in parameterlist" ;
+ Text [ norwegian ] = "Error in parameterlist" ;
+ Text [ italian ] = "Errore nell'elenco parametri" ;
+ Text [ portuguese_brazilian ] = "Erro na lista de parâmetros" ;
+ Text [ portuguese ] = "Erro na lista de parâmetros" ;
+ Text [ finnish ] = "Virhe parametriluettelossa" ;
+ Text [ danish ] = "Fejl i parameterlisten" ;
+ Text [ french ] = "Erreur dans la liste des paramètres" ;
+ Text [ swedish ] = "Fel i parameterlistan" ;
+ Text [ dutch ] = "Fout in parameterlijst" ;
+ Text [ spanish ] = "Error en la lista de parámetros" ;
+ Text [ english_us ] = "Error in parameter list" ;
+ Text[ chinese_simplified ] = "²ÎÊýÁбíÄÚÓдíÎó";
+ Text[ russian ] = "Îøèáêà â ñïèñêå ïàðàìåòðîâ";
+ Text[ polish ] = "B³¹d w liœcie parametrów";
+ Text[ japanese ] = "Êß×Ò°À ؽĂɴװ";
+ Text[ chinese_traditional ] = "°Ñ¼Æ²M³æ¦³¿ù»~";
+ Text[ arabic ] = "ÍÏË ÎØà Ýí ÞÇÆãÉ ÇáãÚáãÇÊ";
+ Text[ greek ] = "ÓöÜëìá óôç ëßóôá ðáñáìÝôñùí";
+ Text[ korean ] = "ÆĶó¹ÌÅÍ ¸®½ºÆ®»óÀÇ ¿À·ù";
+ Text[ turkish ] = "Parametre listesinde hata";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_ILL_FPO
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler: Ungültige Gleitkommaoperation : Fehler: Ung³ltige Gleitkommaoperation */
+ Text = "Fehler: Ungültige Gleitkommaoperation" ;
+ Text [ ENGLISH ] = "Error: Illegal floating point operation" ;
+ Text [ norwegian ] = "Error: Illegal floating point operation" ;
+ Text [ italian ] = "Errore: operazione a virgola mobile non ammessa" ;
+ Text [ portuguese_brazilian ] = "Erro: operação de ponto flutuante ilegal" ;
+ Text [ portuguese ] = "Erro: operação da vírgula flutuante incorrecta" ;
+ Text [ finnish ] = "Virhe: Virheellinen liukulukuoperaatio" ;
+ Text [ danish ] = "Fejl: ugyldig flydende kommaoperation" ;
+ Text [ french ] = "Erreur : opération à virgule flottante incorrecte" ;
+ Text [ swedish ] = "Fel: ogiltig flyttalsoperation" ;
+ Text [ dutch ] = "Fout: ongeldige glijdende-komma-operatie" ;
+ Text [ spanish ] = "Error: Operación en punto flotante no válida" ;
+ Text [ english_us ] = "Error: Invalid floating point operation" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÎÞЧµÄ¸¡µãÔËËã";
+ Text[ russian ] = "Îøèáêà: íåäîïóñòèìàÿ îïåðàöèÿ ñ ïëàâàþùåé çàïÿòîé";
+ Text[ polish ] = "B³¹d: Niepoprawna operacja liczby zmiennoprzecinkowej";
+ Text[ japanese ] = "´×°: –³Œø‚È•‚“®­”“_‰‰ŽZ";
+ Text[ chinese_traditional ] = "¿ù»~¡GµL®Äªº¯BÂI¹Bºâ";
+ Text[ arabic ] = "ÎØÃ: ÚãáíÉ ÝÇÕáÉ ÚÇÆãÉ ÛíÑ ÕÇáÍÉ";
+ Text[ greek ] = "ÓöÜëìá: Ìç Ýãêõñç ëåéôïõñãßá êéíçôÞò õðïäéáóôïëÞò";
+ Text[ korean ] = "¿À·ù: À¯È¿ÇÏÁö ¾ÊÀº ºÎµ¿ Á¡ ÀÛµ¿";
+ Text[ turkish ] = "Hata: Geçersiz kayan nokta iþlemi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_ILL_CHAR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler: Ungültiges Zeichen : Fehler: Ung³ltiges Zeichen */
+ Text = "Fehler: Ungültiges Zeichen" ;
+ Text [ ENGLISH ] = "Error: Illegal character" ;
+ Text [ norwegian ] = "Error: Illegal character" ;
+ Text [ italian ] = "Errore: carattere non ammesso" ;
+ Text [ portuguese_brazilian ] = "Erro: caractere ilegal" ;
+ Text [ portuguese ] = "Erro: carácter não válido" ;
+ Text [ finnish ] = "Virhe: Virheelllinen merkki" ;
+ Text [ danish ] = "Fejl: ugyldigt tegn" ;
+ Text [ french ] = "Erreur : caractère non valable" ;
+ Text [ swedish ] = "Fel: ogiltigt tecken" ;
+ Text [ dutch ] = "Fout: ongeldig teken" ;
+ Text [ spanish ] = "Error: Carácter no válido" ;
+ Text [ english_us ] = "Error: Invalid character" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÎÞЧµÄ×Ö·û";
+ Text[ russian ] = "Îøèáêà: íåäîïóñòèìûé ñèìâîë";
+ Text[ polish ] = "B³¹d: Nieprawid³owy znak";
+ Text[ japanese ] = "´×°: –³Œø‚È•¶Žš";
+ Text[ chinese_traditional ] = "¿ù»~¡GµL®Äªº¦r¤¸";
+ Text[ arabic ] = "ÎØÃ: ÍÑÝ ÛíÑ ÕÇáÍ";
+ Text[ greek ] = "ÓöÜëìá: Ìç Ýãêõñïò ÷áñáêôÞñáò";
+ Text[ korean ] = "¿À·ù: À¯È¿ÇÏÁö ¾ÊÀº ¹®ÀÚ";
+ Text[ turkish ] = "Hata: Geçersiz karakter";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_ILL_SEP
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler: ungültiges Semikolon : Fehler: ung³ltiges Semikolon */
+ Text = "Fehler: ungültiges Semikolon" ;
+ Text [ ENGLISH ] = "Error: Illegal semicolon" ;
+ Text [ norwegian ] = "Error: Illegal semicolon" ;
+ Text [ italian ] = "Errore: punto e virgola non ammesso" ;
+ Text [ portuguese_brazilian ] = "Erro: ponto-e-vírgula ilegal" ;
+ Text [ portuguese ] = "Erro: ponto e vírgula incorrectos" ;
+ Text [ finnish ] = "Virhe: Virheellinen puolipiste" ;
+ Text [ danish ] = "Fejl: ugyldigt semikolon" ;
+ Text [ french ] = "Erreur : point virgule incorrect" ;
+ Text [ swedish ] = "Fel: ogiltigt semikolon" ;
+ Text [ dutch ] = "Fout: ongeldige puntkomma" ;
+ Text [ spanish ] = "Error: Punto y coma no válido" ;
+ Text [ english_us ] = "Error: Invalid semicolon" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÎÞЧµÄ·ÖºÅ";
+ Text[ russian ] = "Îøèáêà: íåäîïóñòèìàÿ òî÷êà ñ çàïÿòîé";
+ Text[ polish ] = "B³¹d: Nieprawid³owy myœlnik";
+ Text[ japanese ] = "´×°: –³Œø‚ȾкÛÝ";
+ Text[ chinese_traditional ] = "¿ù»~¡GµL®Äªº¤À¸¹";
+ Text[ arabic ] = "ÎØÃ: ÝÇÕáÉ ãäÞæØÉ ÛíÑ ÕÇáÍÉ";
+ Text[ greek ] = "ÓöÜëìá: Ìç Ýãêõñï semicolon ( ; )";
+ Text[ korean ] = "¿À·ù:À¯È¿ÇÏÁö ¾ÊÀº ¼¼¹ÌÄÝ·Ð";
+ Text[ turkish ] = "Hata: Geçersiz noktalý virgül";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_PAIR
+ {
+ Text = "Fehler in der Klammerung" ;
+ Text [ ENGLISH ] = "Error: Pair missing" ;
+ Text [ norwegian ] = "Error: Pair missing" ;
+ Text [ italian ] = "Errore: parentesi mancante" ;
+ Text [ portuguese_brazilian ] = "Erro: falta par" ;
+ Text [ portuguese ] = "Erro nos parênteses" ;
+ Text [ finnish ] = "Virhe: Pari puuttuu" ;
+ Text [ danish ] = "Fejl i parantesen" ;
+ Text [ french ] = "Erreur : paire manquante" ;
+ Text [ swedish ] = "Fel: par fattas" ;
+ Text [ dutch ] = "Fout: haakjes ontbreken of verkeerd geplaatst" ;
+ Text [ spanish ] = "Error: Error de paréntesis" ;
+ Text [ english_us ] = "Error: in bracketing" ;
+ Text[ chinese_simplified ] = "À¨ºÅ´íÎó";
+ Text[ russian ] = "Îøèáêà èñïîëüçîâàíèÿ ñêîáîê";
+ Text[ polish ] = "B³¹d w ustawianiu nawiasów";
+ Text[ japanese ] = "‚©‚Á‚±“à‚Ì´×°";
+ Text[ chinese_traditional ] = "¬A¸¹¿ù»~";
+ Text[ arabic ] = "ÍÏË ÎØà Ýí æÖÚ ÇáÃÞæÇÓ";
+ Text[ greek ] = "ËÜèïò óôç ÷ñÞóç ðáñåíèÝóåùí";
+ Text[ korean ] = "¿À·ù: °ýÈ£";
+ Text[ turkish ] = "Ayraçlarda hata";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_OP_EXP
+ {
+ Text = "Fehler: Fehlender Operator" ;
+ Text [ ENGLISH ] = "Error: Operator expected" ;
+ Text [ norwegian ] = "Error: Operator expected" ;
+ Text [ italian ] = "Errore: manca l'operatore" ;
+ Text [ portuguese_brazilian ] = "Erro: operador esperado" ;
+ Text [ portuguese ] = "Erro: falta operador" ;
+ Text [ finnish ] = "Virhe: Operaattori puuttuu" ;
+ Text [ danish ] = "Fejl: manglende operator" ;
+ Text [ french ] = "Erreur : opérateur manquant" ;
+ Text [ swedish ] = "Fel: operator saknas" ;
+ Text [ dutch ] = "Fout: operator ontbreekt" ;
+ Text [ spanish ] = "Error: Falta un operador" ;
+ Text [ english_us ] = "Error: Operator missing" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÈ±ÉÙÔËËã·û";
+ Text[ russian ] = "Îøèáêà: îòñóòñòâóþùèé îïåðàòîð";
+ Text[ polish ] = "B³¹d: Brakuj¹cy operator";
+ Text[ japanese ] = "´×°: ‰‰ŽZŽq‚ª‘«‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¿ù»~¡G¯Ê¤Ö¹Bºâ²Å";
+ Text[ arabic ] = "ÎØÃ: ÚÇãá ÇáÊÔÛíá äÇÞÕ";
+ Text[ greek ] = "ÓöÜëìá: Ëåßðåé ï ôåëåóôÞò";
+ Text[ korean ] = "¿À·ù: ¿¬»êÀÚ°¡ ºüÁ³½À´Ï´Ù.";
+ Text[ turkish ] = "Hata: Eksik iþleç";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_VAR_EXP
+ {
+ Text = "Fehler: Fehlende Variable" ;
+ Text [ ENGLISH ] = "Error: Variable expected" ;
+ Text [ norwegian ] = "Error: Variable expected" ;
+ Text [ italian ] = "Errore: manca la variabile" ;
+ Text [ portuguese_brazilian ] = "Erro: Variable expected" ;
+ Text [ portuguese ] = "Erro: falta variável" ;
+ Text [ finnish ] = "Virhe: Muuttuja puuttuu" ;
+ Text [ danish ] = "Fejl: manglende variabel" ;
+ Text [ french ] = "Erreur : variable manquante" ;
+ Text [ swedish ] = "Fel: variabel saknas" ;
+ Text [ dutch ] = "Fout: variabele ontbreekt" ;
+ Text [ spanish ] = "Error: Falta una variable" ;
+ Text [ english_us ] = "Error: Variable missing" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÈ±ÉÙ±äÁ¿";
+ Text[ russian ] = "Îøèáêà: îòñóòñòâóþùàÿ ïåðåìåííàÿ";
+ Text[ polish ] = "B³¹d : Brakuj¹ca zmienna";
+ Text[ japanese ] = "´×°: •Ï”‚ª‘«‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¿ù»~¡G¯Ê¤ÖÅܶq";
+ Text[ arabic ] = "ÎØÃ: ÇáãÊÛíÑÉ ÛíÑ ãæÌæÏÉ";
+ Text[ greek ] = "ÓöÜëìá: Áðïõóßá ìåôáâëçôÞò";
+ Text[ korean ] = "¿À·ù: º¯¼ö°¡ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Hata: Eksik deðiþken";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_CODE_OVF
+ {
+ Text = "Fehler: Formel zu lang" ;
+ Text [ ENGLISH ] = "Error: Formula overflow" ;
+ Text [ norwegian ] = "Error: Formula overflow" ;
+ Text [ italian ] = "Errore: formula troppo lunga" ;
+ Text [ portuguese_brazilian ] = "Erro: transbordo de fórmula" ;
+ Text [ portuguese ] = "Erro: fórmula grande demais" ;
+ Text [ finnish ] = "Virhe: Kaava on liian pitkä" ;
+ Text [ danish ] = "Fejl: for lang formel" ;
+ Text [ french ] = "Erreur : formule trop longue" ;
+ Text [ swedish ] = "Fel: formel för lång" ;
+ Text [ dutch ] = "Fout: formule te lang" ;
+ Text [ spanish ] = "Error: Fórmula demasiado larga" ;
+ Text [ english_us ] = "Error: Formula overflow" ;
+ Text[ chinese_simplified ] = "´íÎ󣺹«Ê½Ì«³¤";
+ Text[ russian ] = "Îøèáêà: ñëèøêîì äëèííàÿ ôîðìóëà";
+ Text[ polish ] = "B³¹d: za d³uga formu³a";
+ Text[ japanese ] = "´×°: ”Ž®‚ª’·‚·‚¬‚Ü‚·";
+ Text[ chinese_traditional ] = "¿ù»~¡G¤½¦¡¤Óªø";
+ Text[ arabic ] = "ÎØÃ: ÇáÕíÛÉ ÃØæá ãä ÇáÍÏ ÇáÃÞÕì";
+ Text[ greek ] = "ÓöÜëìá: Õðåñâïëéêü ìÞêïò ôýðïõ";
+ Text[ korean ] = "¿À·ù: ¼ö½ÄÀÌ ³Ê¹« ±é´Ï´Ù.";
+ Text[ turkish ] = "Hata: Formül çok uzun";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_STR_OVF
+ {
+ Text = "Fehler: Zeichenkette zu lang" ;
+ Text [ ENGLISH ] = "Error: String overflow" ;
+ Text [ norwegian ] = "Error: String overflow" ;
+ Text [ italian ] = "Errore: stringa troppo lunga" ;
+ Text [ portuguese_brazilian ] = "Erro: transbordo de cadeia" ;
+ Text [ portuguese ] = "Erro: cadeia de caracteres demasiado extensa" ;
+ Text [ finnish ] = "Virhe: Merkkijono on liian pitkä" ;
+ Text [ danish ] = "Fejl: streng er for lang" ;
+ Text [ french ] = "Erreur : chaîne de caractères trop longue" ;
+ Text [ swedish ] = "Fel: Strängspill" ;
+ Text [ dutch ] = "Fout: tekenreeks te lang" ;
+ Text [ spanish ] = "Error: Cadena de caracteres demasiado larga" ;
+ Text [ english_us ] = "Error: String overflow" ;
+ Text[ chinese_simplified ] = "´íÎó£º×Ö´®Ì«³¤";
+ Text[ russian ] = "Îøèáêà: ñòðîêà ñèìâîëîâ ñëèøêîì äëèííàÿ";
+ Text[ polish ] = "B³¹d: Ci¹g znaków za d³ugi";
+ Text[ japanese ] = "´×°: •¶Žš—ñ‚ª’·‚·‚¬‚Ü‚·";
+ Text[ chinese_traditional ] = "¿ù»~¡G¦r¦ê¤Óªø";
+ Text[ arabic ] = "ÎØÃ: ÇáÓáÓáÉ ÃØæá ãä ÇáÍÏ ÇáÃÞÕì";
+ Text[ greek ] = "ÓöÜëìá: ÕðåñâïëéêÜ ìåãÜëï ìÞêïò áêïëïõèßáò ÷áñáêôÞñùí";
+ Text[ korean ] = "¿À·ù: ¹®ÀÚ¿­ÀÌ ³Ê¹« ±é´Ï´Ù.";
+ Text[ turkish ] = "Hata: Karakter zinciri çok uzun";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_STACK_OVF
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler: Interner Überlauf : Fehler: Interner šberlauf */
+ Text = "Fehler: Interner Überlauf" ;
+ Text [ ENGLISH ] = "Error: Internal overflow" ;
+ Text [ norwegian ] = "Error: Internal overflow" ;
+ Text [ italian ] = "Errore: overflow interno" ;
+ Text [ portuguese_brazilian ] = "Erro: transbordo interno" ;
+ Text [ portuguese ] = "Erro: excesso de capacidade interna" ;
+ Text [ finnish ] = "Virhe: Sisäinen ylivuoto" ;
+ Text [ danish ] = "Fejl: internt overløb" ;
+ Text [ french ] = "Erreur : dépassement des capacités internes" ;
+ Text [ swedish ] = "Fel: internt spill" ;
+ Text [ dutch ] = "Fout: interne overflow" ;
+ Text [ spanish ] = "Error: Desbordamiento interno" ;
+ Text [ english_us ] = "Error: Internal overflow" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÄÚ²¿ÒçÖµ";
+ Text[ russian ] = "Îøèáêà: âíóòðåííåå ïåðåïîëíåíèå";
+ Text[ polish ] = "B³¹d: Wewnêtrzne przepe³nienie";
+ Text[ japanese ] = "´×°: ²ÝÀ°È¯Ä‚̵°ÊÞ°ÌÛ°";
+ Text[ chinese_traditional ] = "¿ù»~¡G¤º³¡·¸­È";
+ Text[ arabic ] = "ÎØÃ: ÝÇÆÖ ÏÇÎáí";
+ Text[ greek ] = "ÓöÜëìá: Åóùôåñéêü ðñüâëçìá õðåñ÷åßëéóçò";
+ Text[ korean ] = "¿À·ù: ³»ºÎ ¿À¹öÇ÷οì";
+ Text[ turkish ] = "Hata: Ýç taþma";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_SYNTAX
+ {
+ Text = "Interner Syntaxfehler" ;
+ Text [ ENGLISH ] = "internal syntactical error" ;
+ Text [ norwegian ] = "internal syntactical error" ;
+ Text [ italian ] = "errore di sintassi interno" ;
+ Text [ portuguese_brazilian ] = "erro interno de sintaxe" ;
+ Text [ portuguese ] = "Erro de sintaxe interno" ;
+ Text [ finnish ] = "sisäinen syntaksivirhe" ;
+ Text [ danish ] = "Intern syntaksfejl" ;
+ Text [ french ] = "Erreur de syntaxe interne" ;
+ Text [ swedish ] = "Internt syntaxfel" ;
+ Text [ dutch ] = "Interne syntaxisfout" ;
+ Text [ spanish ] = "Error interno de sintaxis" ;
+ Text [ english_us ] = "Internal syntactical error" ;
+ Text[ chinese_simplified ] = "ÄÚ²¿Óï·¨´íÎó";
+ Text[ russian ] = "Âíóòðåííÿÿ ñèíòàêñè÷åñêàÿ îøèáêà";
+ Text[ polish ] = "Wewnêtrzny b³¹d sk³adni";
+ Text[ japanese ] = "“à•”‚̼ÝÀ¯¸½´×°";
+ Text[ chinese_traditional ] = "¤º³¡»yªk¿ù»~";
+ Text[ arabic ] = "ÎØà äÍæí ÏÇÎáí";
+ Text[ greek ] = "Åóùôåñéêü óöÜëìá óýíôáîçò";
+ Text[ korean ] = "³»ºÎÀû ¹®Àå ¿À·ù";
+ Text[ turkish ] = "Ýç söz dizimi hatasý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_CIRC_REF
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler: Zirkuläre Referenz : Fehler: Zirkulõre Referenz */
+ Text = "Fehler: Zirkuläre Referenz" ;
+ Text [ ENGLISH ] = "Error: Circular reference" ;
+ Text [ norwegian ] = "Error: Circular reference" ;
+ Text [ italian ] = "Errore: riferimento circolare" ;
+ Text [ portuguese_brazilian ] = "Erro: referência circular" ;
+ Text [ portuguese ] = "Erro: referência circular" ;
+ Text [ finnish ] = "Virhe: Kehäviittaus" ;
+ Text [ danish ] = "Fejl: circulær reference" ;
+ Text [ french ] = "Erreur : référence circulaire" ;
+ Text [ swedish ] = "Fel: cirkulär referens" ;
+ Text [ dutch ] = "Fout: kringverwijzing" ;
+ Text [ spanish ] = "Error: Referencia circular" ;
+ Text [ english_us ] = "Error: Circular reference" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÑ­»·Ê½ÒýÓÃ";
+ Text[ russian ] = "Îøèáêà: öèêëè÷åñêàÿ ññûëêà";
+ Text[ polish ] = "B³¹d: Odwo³anie cykliczne";
+ Text[ japanese ] = "´×°: zŠÂŽQÆ";
+ Text[ chinese_traditional ] = "¿ù»~¡G´`Àô¦¡°Ñ·Ó";
+ Text[ arabic ] = "ÎØÃ: ãÑÌÚ ãÊßÑÑ";
+ Text[ greek ] = "ÓöÜëìá: ÊõêëéêÞ áíáöïñÜ";
+ Text[ korean ] = "¿À·ù: ¼øȯ ÂüÁ¶";
+ Text[ turkish ] = "Hata: Döngüsel referans";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_NO_NAME
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler: Ungültiger Name : Fehler: Ung³ltiger Name */
+ Text = "Fehler: Ungültiger Name" ;
+ Text [ ENGLISH ] = "Error: Illegal Name" ;
+ Text [ norwegian ] = "Error: Illegal Name" ;
+ Text [ italian ] = "Errore: nome non ammesso" ;
+ Text [ portuguese_brazilian ] = "Erro: Nome Ilegal" ;
+ Text [ portuguese ] = "Erro: nome incorrecto" ;
+ Text [ finnish ] = "Virhe: Virheellien nimi" ;
+ Text [ danish ] = "Fejl: ugyldigt navn" ;
+ Text [ french ] = "Erreur : nom incorrect" ;
+ Text [ swedish ] = "Fel: ogiltigt namn" ;
+ Text [ dutch ] = "Fout: ongeldige naam" ;
+ Text [ spanish ] = "Error: Nombre no válido" ;
+ Text [ english_us ] = "Error: Invalid name" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÎÞЧµÄÃû³Æ";
+ Text[ russian ] = "Îøèáêà: íåäîïóñòèìîå èìÿ";
+ Text[ polish ] = "B³¹d: Nieprawid³owa nazwa";
+ Text[ japanese ] = "´×°: –³Œø‚È–¼‘O";
+ Text[ chinese_traditional ] = "¿ù»~¡GµL®Äªº¦WºÙ";
+ Text[ arabic ] = "ÎØÃ: ÇÓã ÛíÑ ÕÇáÍ";
+ Text[ greek ] = "ÓöÜëìá: Ìç áðïäåêôü üíïìá";
+ Text[ korean ] = "¿À·ù: À¯È¿ÇÏÁö ¾ÊÀº À̸§";
+ Text[ turkish ] = "Hata: Geçersiz ad";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_NO_REF
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler: Ungültiger Bezug : Fehler: Ung³ltiger Bezug */
+ Text = "Fehler: Ungültiger Bezug" ;
+ Text [ ENGLISH ] = "Error: Not a valid reference" ;
+ /*
+ Text[norwegian] = "Error: Not a valid tablename";
+ Text[italian] = "Errore: Nome tabella non valido";
+ Text[portuguese_brazilian] = "Erro: não é um nome de tabela válido";
+ Text[portuguese] = "Erro: Não é nome de tabela válido";
+ Text[finnish] = "Virhe: Virheellinen taulukon nimi";
+ Text[danish] = "Fejl: Ikke et gyldigt tabelnavn";
+ Text[french] = "Erreur : nom de table incorrect";
+ Text[swedish] = "Fel: Inte ett giltigt tabellnamn";
+ Text[dutch] = "Fout: Ongeldige tabelnaam";
+ Text[spanish] = "Error: No es un nombre de tanla válido";
+*/
+ Text [ english_us ] = "Error: Not a valid reference" ;
+ Text [ italian ] = "Errore: riferimento non ammesso" ;
+ Text [ spanish ] = "Error: Referencia no válida" ;
+ Text [ french ] = "Erreur : référence incorrecte" ;
+ Text [ dutch ] = "Fehler: ongeldige verwijzing" ;
+ Text [ swedish ] = "Fel: ogiltig referens" ;
+ Text [ danish ] = "Fejl: ugyldig reference" ;
+ Text [ portuguese ] = "Erro: referência incorrecta" ;
+ Text [ portuguese_brazilian ] = "Fehler: Ungültiger Bezug" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÎÞЧµÄÒýÓÃ";
+ Text[ russian ] = "Îøèáêà: íåäîïóñòèìàÿ ññûëêà";
+ Text[ polish ] = "B³¹d: Nieprawid³owy odnoœnik";
+ Text[ japanese ] = "´×°: –³Œø‚ÈŠÖ˜A";
+ Text[ chinese_traditional ] = "¿ù»~¡GµL®Äªº¤Þ¥Î";
+ Text[ arabic ] = "ÎØÃ: ãÑÌÚ ÛíÑ ÕÇáÍ";
+ Text[ greek ] = "ÓöÜëìá: Ìç Ýãêõñç áíáöïñÜ";
+ Text[ korean ] = "¿À·ù: À¯È¿ÇÏÁö ¾ÊÀº ÂüÁ¶";
+ Text[ turkish ] = "Hata: Geçersiz referans";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_NO_CONV
+ {
+ Text = "Fehler: Rechenverfahren konvergiert nicht" ;
+ Text [ ENGLISH ] = "Error: Computation does not converge" ;
+ Text [ norwegian ] = "Error: Computation does not converge" ;
+ Text [ italian ] = "Errore: il calcolo non converge" ;
+ Text [ portuguese_brazilian ] = "Erro: a computação não converge" ;
+ Text [ portuguese ] = "Erro: o processo de cálculo não converge" ;
+ Text [ finnish ] = "Virhe: Laskenta ei suppene" ;
+ Text [ danish ] = "Fejl: beregningen konvergerer ikke" ;
+ Text [ french ] = "Erreur : le calcul ne converge pas" ;
+ Text [ swedish ] = "Fel: beräkningen konvergerar inte" ;
+ Text [ dutch ] = "Fout: berekening convergeert niet" ;
+ Text [ spanish ] = "Error: El proceso de cálculo no converge" ;
+ Text [ english_us ] = "Error: Calculation does not converge" ;
+ Text[ chinese_simplified ] = "´íÎó: ÔËËã¹ý³Ì²»ÊÕÁ²";
+ Text[ russian ] = "Îøèáêà: âû÷èñëåíèÿ íå ñõîäÿòñÿ";
+ Text[ polish ] = "B³¹d: Proces obliczeniowy nie jest zbie¿ny";
+ Text[ japanese ] = "´×°: ŒvŽZÌßÛ¾½‚ªŽû‘©‚µ‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¿ù»~¡G¹Bºâ¹Lµ{¤£¦¬ÀÄ";
+ Text[ arabic ] = "ÎØÃ: ÇáÚãáíÉ ÇáÍÓÇÈíÉ áÇ ÊÞÑÈ";
+ Text[ greek ] = "ÓöÜëìá: Ç äéáäéêáóßá õðïëïãéóìïý äåí óõãêëßíåé";
+ Text[ korean ] = "¿À·ù:°è»êÀÌ ÁýÁßµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Hata: Hesaplama iþlemi yakýnsamýyor";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_NO_VALUE
+ {
+ Text = "Fehler: kein Ergebnis" ;
+ Text [ ENGLISH ] = "Error: No Result" ;
+ Text [ norwegian ] = "Error: No Result" ;
+ Text [ italian ] = "Errore: senza risultato" ;
+ Text [ portuguese_brazilian ] = "Erro: Sem Resultado" ;
+ Text [ portuguese ] = "Erro: sem resultado" ;
+ Text [ finnish ] = "Virhe: Ei tulosta" ;
+ Text [ danish ] = "Fejl: intet resultat" ;
+ Text [ french ] = "Erreur : sans résultat" ;
+ Text [ swedish ] = "Fel: inget resultat" ;
+ Text [ dutch ] = "Fout: geen uitkomst" ;
+ Text [ spanish ] = "Error: Sin resultado" ;
+ Text [ english_us ] = "Error: No result" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÎÞ½á¹û";
+ Text[ russian ] = "Îøèáêà: íåò ðåçóëüòàòà";
+ Text[ polish ] = "B³¹d: Brak wyniku";
+ Text[ japanese ] = "´×°: Œ‹‰Ê‚È‚µ";
+ Text[ chinese_traditional ] = "¿ù»~¡GµLµ²ªG";
+ Text[ arabic ] = "ÎØÃ: áÇ ÊæÌÏ äÊíÌÉ";
+ Text[ greek ] = "ÓöÜëìá: êáíÝíá áðïôÝëåóìá";
+ Text[ korean ] = "¿À·ù:°á°ú°¡ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Hata: Sonuç yok";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LONG_ERR_NV
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler: Wert nicht verfügbar : Fehler: Wert nicht verf³gbar */
+ Text = "Fehler: Wert nicht verfügbar" ;
+ Text [ ENGLISH ] = "Error: Value not available" ;
+ Text [ norwegian ] = "Error: Value not available" ;
+ Text [ italian ] = "Errore: valore non disponibile" ;
+ Text [ portuguese_brazilian ] = "Erro: Valor não disponível" ;
+ Text [ portuguese ] = "Erro: valor não disponível" ;
+ Text [ finnish ] = "Virhe: Arvo ei ole käytettävissä" ;
+ Text [ danish ] = "Fejl: værdi er ikke tilgængelig" ;
+ Text [ french ] = "Erreur : valeur non disponible" ;
+ Text [ swedish ] = "Fel: värde ej tillgängligt" ;
+ Text [ dutch ] = "Fout: waarde niet beschikbaar" ;
+ Text [ spanish ] = "Error: Valor no disponible" ;
+ Text [ english_us ] = "Error: Value not available" ;
+ Text[ chinese_simplified ] = "´íÎó£ºÊýÖµ²»´æÔÚ";
+ Text[ russian ] = "Îøèáêà: çíà÷åíèå íå äîñòóïíî";
+ Text[ polish ] = "B³¹d: Wartoœæ niedostêpna";
+ Text[ japanese ] = "´×°: ”’l‚ª‚ ‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¿ù»~¡G¼Æ­È¤£¦s¦b";
+ Text[ arabic ] = "ÎØÃ: ÇáÞíãÉ ÛíÑ ãÊæÝÑÉ";
+ Text[ greek ] = "ÓöÜëìá: Ìç äéáèÝóéìç ìåôáâëçôÞ";
+ Text[ korean ] = "¿À·ù:°ªÀÌÀ¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Hata: Deðer mevcut deðil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ODER_SO
+ {
+ Text = "%s oder so" ;
+ Text [ ENGLISH ] = "Something like %s" ;
+ Text [ norwegian ] = "Noe som %s" ;
+ Text [ italian ] = "%s o simile..." ;
+ Text [ portuguese_brazilian ] = "Something like %s" ;
+ Text [ portuguese ] = "%s ou semelhante" ;
+ Text [ finnish ] = "Something like %s" ;
+ Text [ danish ] = "%s eller lignende" ;
+ Text [ french ] = "%s ou similaire" ;
+ Text [ swedish ] = "%s eller liknande" ;
+ Text [ dutch ] = "%s of iets dergelijks" ;
+ Text [ spanish ] = "%s o similar" ;
+ Text [ english_us ] = "%s or similar" ;
+ Text[ chinese_simplified ] = "%s »òÕß";
+ Text[ russian ] = "%s èëè ïîõîæåå";
+ Text[ polish ] = "%s lub tak";
+ Text[ japanese ] = "%s ‚Ü‚½‚Í“¯—l";
+ Text[ chinese_traditional ] = "%s ©ÎªÌ";
+ Text[ arabic ] = "%s Ãæ ãÇ ÔÇÈå Ðáß";
+ Text[ greek ] = "%s Þ ïìïßùò";
+ Text[ korean ] = "%s ¶Ç´Â À¯»ç";
+ Text[ turkish ] = "%s ya da benzer";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_GRIDCOLOR
+ {
+ Text = "Gitterfarbe" ;
+ Text [ ENGLISH ] = "Grid Color" ;
+ Text [ norwegian ] = "Grid Color" ;
+ Text [ italian ] = "Colore griglia" ;
+ Text [ portuguese_brazilian ] = "Cor da Grade" ;
+ Text [ portuguese ] = "Cor da grelha" ;
+ Text [ finnish ] = "Taustaruudukon väri" ;
+ Text [ danish ] = "Gitterfarve" ;
+ Text [ french ] = "Couleur de la grille" ;
+ Text [ swedish ] = "Gitterfärg" ;
+ Text [ dutch ] = "Rasterkleur" ;
+ Text [ spanish ] = "Color de la cuadrícula" ;
+ Text [ english_us ] = "Grid color" ;
+ Text[ chinese_simplified ] = "Íø¸ñÏßÑÕÉ«";
+ Text[ russian ] = "Öâåò ñåòêè";
+ Text[ polish ] = "Kolor siatki";
+ Text[ japanese ] = "¸ÞدÄÞü‚ÌF";
+ Text[ chinese_traditional ] = "ºô®æ½uÃC¦â";
+ Text[ arabic ] = "áæä ÇáÔÈßÉ";
+ Text[ greek ] = "×ñþìá ðëÝãìáôïò";
+ Text[ korean ] = "´«±Ý¼± »ö»ó";
+ Text[ turkish ] = "Kýlavuz çizgileri rengi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MERGE_NOTEMPTY
+ {
+ Text = "Soll der Inhalt der verdeckten Zellen in die erste Zelle verschoben werden?" ;
+ Text [ ENGLISH ] = "Move the contents of the hidden cells into the first cell?" ;
+ Text [ norwegian ] = "Move the contents of the hidden cells into the first cell?" ;
+ Text [ italian ] = "Spostare il contenuto delle celle nascoste nella prima cella?" ;
+ Text [ portuguese_brazilian ] = "Move the contents of the hidden cells into the first cell?" ;
+ Text [ portuguese ] = "Deseja mover o conteúdo das células ocultas para a primeira célula?" ;
+ Text [ finnish ] = "Move the contents of the hidden cells into the first cell?" ;
+ Text [ danish ] = "Skal den skjulte celles indhold flyttes til den første celle?" ;
+ Text [ french ] = "Déplacer le contenu des cellules cachées dans la première cellule ?" ;
+ Text [ swedish ] = "Skall de dolda cellernas innehåll flyttas till den första cellen?" ;
+ Text [ dutch ] = "De inhoud van de verborgen cellen naar de eerste cel verplaatsen?" ;
+ Text [ spanish ] = "¿Desea desplazar el contenido de las filas ocultas a la primera fila?" ;
+ Text [ english_us ] = "Should the contents of the hidden cells be moved into the first cell?" ;
+ Text[ chinese_simplified ] = "ÄúÒª½«±ê¼ÇµÄµ¥Ôª¸ñÄÚÈÝÒÆÈëµ½µÚÒ»¸öµ¥Ôª¸ñÄÚÂð£¿";
+ Text[ russian ] = "Ïåðåìåñòèòü ñîäåðæèìîå ñïðÿòàííûõ ÿ÷ååê â ïåðâóþ ÿ÷åéêó?";
+ Text[ polish ] = "Czy zawartoœæ ukrytych komórek ma byæ przeniesiona do pierwszej komórki?";
+ Text[ japanese ] = "‰B‚µ¾Ù‚Ì“à—e‚ðʼn‚̾قɈړ®‚µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "±z­n±NÁô¤JªºÀx¦s®æ¤º®e²¾¤J²Ä¤@­ÓÀx¦s®æ¤º¡H";
+ Text[ arabic ] = "åá ÊÑíÏ ÊÍÑíß ãÍÊæíÇÊ ÇáÎáÇíÇ ÇáãÎÝíÉ Åáì ÇáÎáíÉ ÇáÃæáì¿";
+ Text[ greek ] = "Íá ìåôáêéíçèåß ôï ðåñéå÷üìåíï ôùí êñõöþí êåëéþí ðñïò ôï ðñþôï êåëß;";
+ Text[ korean ] = "¼û°ÜÁø ¼¿ÀÇ ³»¿ëÀÌ Ã¹¹ø° ¼¿·Î À̵¿µÇ¾î¾ß Çմϱî?";
+ Text[ turkish ] = "Gizli hücrelerin içeriði birinci hücreye taþýnsýn mý?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CELL_FILTER
+ {
+ Text = "Filter" ;
+ Text [ ENGLISH ] = "Filter" ;
+ Text [ norwegian ] = "Filter" ;
+ Text [ italian ] = "Filtro" ;
+ Text [ portuguese_brazilian ] = "Filtro" ;
+ Text [ portuguese ] = "Filtro" ;
+ Text [ finnish ] = "Suodin" ;
+ Text [ danish ] = "Filter" ;
+ Text [ french ] = "Filtre" ;
+ Text [ swedish ] = "Filter" ;
+ Text [ dutch ] = "Filter" ;
+ Text [ spanish ] = "Filtro" ;
+ Text [ english_us ] = "Filter" ;
+ Text[ chinese_simplified ] = "ɸѡ";
+ Text[ russian ] = "Ôèëüòð";
+ Text[ polish ] = "Filtr";
+ Text[ japanese ] = "̨ÙÀ";
+ Text[ chinese_traditional ] = "¿z¿ï";
+ Text[ arabic ] = "ÝáÊÑ";
+ Text[ greek ] = "Ößëôñï";
+ Text[ korean ] = "ÇÊÅÍ";
+ Text[ turkish ] = "Filtre";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TARGETNOTFOUND
+ {
+ Text = "Der Zieldatenbankbereich existiert nicht." ;
+ Text [ ENGLISH ] = "The target data area does not exist." ;
+ Text [ norwegian ] = "The target data area does not exist." ;
+ Text [ italian ] = "L'area dati di destinazione non esiste." ;
+ Text [ portuguese_brazilian ] = "The target data area does not exist." ;
+ Text [ portuguese ] = "A área da base de dados de destino não existe." ;
+ Text [ finnish ] = "The target data area does not exist." ;
+ Text [ danish ] = "Måldatabaseområdet eksisterer ikke." ;
+ Text [ french ] = "La plage cible de la base de données n'existe pas." ;
+ Text [ swedish ] = "Måldatabasområdet existerar inte." ;
+ Text [ dutch ] = "Het doel-database-bereik bestaat niet." ;
+ Text [ spanish ] = "No existe el área de la base de datos destino." ;
+ Text [ english_us ] = "The target database range does not exist." ;
+ Text[ chinese_simplified ] = "Õâ¸öÄ¿±êÊý¾ÝÇøÓòÒѾ­´æÔÚ¡£";
+ Text[ russian ] = "Îáëàñòü êîíå÷íîé áàçû äàííûõ íå ñóùåñòâóåò.";
+ Text[ polish ] = "Obszar docelowej bazy danych nie istnieje.";
+ Text[ japanese ] = "–Ú•W‚ÌÃÞ°ÀÍÞ°½‚ª‚ ‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "³o­Ó¥Ø¼Ð¸ê®Æ°Ï°ì¤w¸g¦s¦b¡C";
+ Text[ arabic ] = "äØÇÞ ÞÇÚÏÉ ÇáÈíÇäÇÊ ÇáãÞÕæÏ ÛíÑ ãæÌæÏ.";
+ Text[ greek ] = "Äåí õðÜñ÷åé ðåñéï÷Þ âÜóçò äåäïìÝíùí ðñïïñéóìïý.";
+ Text[ korean ] = "¸ñÇ¥ µ¥ÀÌÅͺ£À̽º ¿µ¿ªÀº Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Hedef veritabaný aralýðý mevcut deðil.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALID_EPS
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültige Schrittweite : Ung³ltige Schrittweite */
+ Text = "Ungültige Schrittweite" ;
+ Text [ ENGLISH ] = "Invalid increment" ;
+ Text [ norwegian ] = "Invalid increment" ;
+ Text [ italian ] = "Incremento non valido" ;
+ Text [ portuguese_brazilian ] = "Invalid increment" ;
+ Text [ portuguese ] = "Incremento não válido" ;
+ Text [ finnish ] = "Invalid increment" ;
+ Text [ danish ] = "Ugyldig trinvidde" ;
+ Text [ french ] = "Précision incorrecte" ;
+ Text [ swedish ] = "Ogiltig steglängd" ;
+ Text [ dutch ] = "Ongeldige stapgrootte" ;
+ Text [ spanish ] = "Incremento no válido" ;
+ Text [ english_us ] = "Invalid increment" ;
+ Text[ chinese_simplified ] = "ÎÞЧµÄµÝÔö";
+ Text[ russian ] = "Íåäîïóñòèìàÿ âåëè÷èíà øàãà";
+ Text[ polish ] = "Nieprawid³owy inkrement";
+ Text[ japanese ] = "–³Œø‚ȘA‘±ÃÞ°À‚Ìì¬";
+ Text[ chinese_traditional ] = "µL®Äªº»¼¼W";
+ Text[ arabic ] = "ÒíÇÏÉ ÛíÑ ÕÇáÍÉ";
+ Text[ greek ] = "Ìç Ýãêõñï âÞìá";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº Áõ°¡";
+ Text[ turkish ] = "Geçersiz aþama";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TABLE_OP
+ {
+ Text = "MEHRFACHOPERATION" ;
+ Text [ english ] = "TABLE" ;
+ Text [ norwegian ] = "TABLEOPERATION" ;
+ Text [ italian ] = "OPERAZIONE.MULTIPLA" ;
+ Text [ portuguese_brazilian ] = "TABLEOPERATION" ;
+ Text [ portuguese ] = "OPERAÇÃO.MÚLTIPLA" ;
+ Text [ finnish ] = "TABLEOPERATION" ;
+ Text [ danish ] = "MULTIOPERATION" ;
+ Text [ french ] = "OPERATION.MULTIPLE" ;
+ Text [ swedish ] = "MULTIPEL.OPERATION" ;
+ Text [ dutch ] = "MEERVOUD.OPERATIE" ;
+ Text [ spanish ] = "OPERACIÓN.MÚLTIPLE" ;
+ Text [ english_us ] = "MULTIPLE.OPERATIONS" ;
+ Text[ chinese_simplified ] = "¶àÖؼÆËã";
+ Text[ russian ] = "ÒÀÁËÏÎÄÑÒÀÍÎÂÎÊ";
+ Text[ polish ] = "OPERACJE.WIELOKROTNE";
+ Text[ japanese ] = "•¡”‰‰ŽZ";
+ Text[ chinese_traditional ] = "¦h­«­pºâ";
+ Text[ arabic ] = "ÚãáíÇÊ ãÊÚÏÏÉ";
+ Text[ greek ] = "ÐÏËËÁÐËÅÓ.ÐÑÁÎÅÉÓ";
+ Text[ korean ] = "´ÙÁß.ÀÛµ¿";
+ Text[ turkish ] = "ÇOKLU ÝÞLEM";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_TABOP
+ {
+ Text = "Mehrfachoperation" ;
+ Text [ ENGLISH ] = "Tableoperation" ;
+ Text [ norwegian ] = "Tableoperation" ;
+ Text [ italian ] = "Operazione multipla" ;
+ Text [ portuguese_brazilian ] = "Tableoperation" ;
+ Text [ portuguese ] = "Operação múltipla" ;
+ Text [ finnish ] = "Tableoperation" ;
+ Text [ danish ] = "Multioperation" ;
+ Text [ french ] = "Opération multiple" ;
+ Text [ swedish ] = "Multipel räkneoperation" ;
+ Text [ dutch ] = "Meervoudige operatie" ;
+ Text [ spanish ] = "Operación múltiple" ;
+ Text [ english_us ] = "Multiple operations" ;
+ Text[ chinese_simplified ] = "¶àÖØÔËËã";
+ Text[ russian ] = "Ìíîãîêðàòíûå îïåðàöèè";
+ Text[ polish ] = "Operacje wielokrotne";
+ Text[ japanese ] = "•¡”‰‰ŽZ";
+ Text[ chinese_traditional ] = "¦h­«¹Bºâ";
+ Text[ arabic ] = "ÚãáíÇÊ ãÊÚÏÏÉ";
+ Text[ greek ] = "ÐïëëáðëÝò ðñÜîåéò";
+ Text[ korean ] = "º¹ÇÕ ¿¬»ê";
+ Text[ turkish ] = "Çoklu iþlemler";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALID_AFNAME
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Sie haben einen ungültigen Namen angegeben.\nDas AutoFormat konnte nicht angelegt werden.\nWählen Sie einen anderen Namen. : Sie haben einen ungültigen Namen angegeben.\nDas Autoformat konnte nicht angelegt werden.\nWählen Sie einen anderen Namen. */
+ /* ### ACHTUNG: Neuer Text in Resource? Sie haben einen ungültigen Namen angegeben.\nDas AutoFormat konnte nicht angelegt werden.\nWählen Sie einen anderen Namen. : Sie haben einen ungültigen Namen angegeben.\nDas Autoformat konnte nicht angelegt werden.\nWählen Sie einen anderen Namen. */
+ /* ### ACHTUNG: Neuer Text in Resource? Sie haben einen ungültigen Namen angegeben.\nDas AutoFormat konnte nicht angelegt werden.\nWählen Sie einen anderen Namen. : Sie haben einen ung³ltigen Namen angegeben.\nDas AutoFormat konnte nicht angelegt werden.\nWõhlen Sie einen anderen Namen. */
+ Text = "Sie haben einen ungültigen Namen angegeben.\nDas AutoFormat konnte nicht angelegt werden.\nWählen Sie einen anderen Namen." ;
+ Text [ ENGLISH ] = "You entered an invalid name.\nThe desired AutoFormat could not be createdTry again using a different name." ;
+ Text [ norwegian ] = "You entered an invalid name.\nThe desired AutoFormat could not be createdTry again using a different name." ;
+ Text [ italian ] = "Nome immesso non valido.\nImpossibile creare la formattazione automatica desiderata.\nScegliete un nome diverso." ;
+ Text [ portuguese_brazilian ] = "You entered an invalid name.\nThe desired AutoFormat could not be createdTry again using a different name." ;
+ Text [ portuguese ] = "O nome fornecido não é válido.\nImpossível criar o AutoFormato.\nEscolha outro nome." ;
+ Text [ finnish ] = "You entered an invalid name.\nThe desired AutoFormat could not be createdTry again using a different name." ;
+ Text [ danish ] = "Du har angivet et ugyldigt navn.\nDet var ikke muligt at oprette det ønskede AutoFormat\nVælg et andet navn." ;
+ Text [ french ] = "Vous avez indiqué un nom incorrect.\nImpossible de créer l'AutoFormat.\nChoisissez un autre nom." ;
+ Text [ swedish ] = "Du har angett ett ogiltigt namn.\nAutoFormat kunde inte skapas.\nVälj ett annat namn." ;
+ Text [ dutch ] = "U gebruikte een ongeldige naam.\nDe gewenste AutoOpmaak kon niet worden uitgevoerd.\nKies een andere naam." ;
+ Text [ spanish ] = "Ha escrito un nombre no válido,\npor lo que no se pudo crear el AutoFormato.\nSeleccione otro nombre por favor." ;
+ Text [ ENGLISH_US ] = "You have entered an invalid name.\nAutoFormat could not be created. \nTry again using a different name." ;
+ Text[ chinese_simplified ] = "ÄúÊäÈëÁËÒ»¸öÎÞЧµÄÃû³Æ¡£\nÎÞ·¨½¨Á¢×Ô¶¯¸ñʽ¡£\nÇëÄúÊäÈëÒ»¸öÓÐЧµÄÃû³Æ¡£";
+ Text[ russian ] = "Âû ââåëè íåäîïóñòèìîå èìÿ.\nÑîçäàòü Àâòîôîðìàò íåâîçìîæíî.\nÂûáåðèòå äðóãîå èìÿ.";
+ Text[ polish ] = "Zosta³a wpisana nieprawid³owa nazwa. \\Autoformatowanie nie mog³o zostaæ utworzone.\nWybierz inn¹ nazwê.";
+ Text[ japanese ] = "“ü—Í‚µ‚½–¼‘O‚Í–³Œø‚Å‚·B\nµ°ÄÌ«°Ï¯Ä‚Í쬂ł«‚Ü‚¹‚ñB\n‚Ù‚©‚Ì–¼‘O‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B";
+ Text[ chinese_traditional ] = "±z¿é¤J¤F¤@­ÓµL®Äªº¦WºÙ¡C\nµLªk«Ø¥ß¦Û°Ê®æ¦¡¡C\n½Ð±z¿é¤J¤@­Ó¦³®Äªº¦WºÙ¡C";
+ Text[ arabic ] = "áÞÏ ÞãÊ ÈÅÏÎÇá ÇÓã ÛíÑ ÕÇáÍ.\nÊÚÐÑ ÅäÔÇÁ ÇáÊäÓíÞ ÇáÊáÞÇÆí.\nÇáÑÌÇÁ ÇÎÊíÇÑ ÇÓã ÂÎÑ.";
+ Text[ greek ] = "¸÷åôå åéóÜãåé Ýíá ìç Ýãêõñï üíïìá. Ç \nÁõôïÌïñöïðïßçóç ðïõ åðéèõìåßôå äåí Þôáí äõíáôüí íá \näçìéïõñãçèåß. ÅðéëÝîôå Üëëï üíïìá.";
+ Text[ korean ] = "´ç½ÅÀº À߸øµÈÀ̸§À» ÀÔ·ÂÇϼ̽À´Ï´Ù .\n±×·¯¹Ç·Î ÀÚµ¿¼­½ÄÀº ¸¸µé¾îÁöÁö ¾Ê½À´Ï´Ù. \n´Ù¸¥ À̸§À¸·Î ´Ù½Ã ½Ãµµ ÇØ ÁֽʽÿÀ.";
+ Text[ turkish ] = "Girilen ad geçersiz.\nOtomatik formatlama yapýlamadý.\nBaþka bir ad ile yeniden deneyin.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_AREA
+ {
+ Text = "Bereich" ;
+ Text [ ENGLISH ] = "Area" ;
+ Text [ norwegian ] = "Område" ;
+ Text [ italian ] = "Area" ;
+ Text [ portuguese_brazilian ] = "Área" ;
+ Text [ portuguese ] = "Área" ;
+ Text [ french ] = "Plage" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Área" ;
+ Text [ danish ] = "Område" ;
+ Text [ swedish ] = "Område" ;
+ Text [ finnish ] = "Area" ;
+ Text [ ENGLISH_US ] = "Range" ;
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ russian ] = "Îáëàñòü";
+ Text[ polish ] = "Obszar";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "ÇáäØÇÞ";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¿µ¿ª";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_YES
+ {
+ Text = "Ja" ;
+ Text [ ENGLISH ] = "Yes" ;
+ Text [ norwegian ] = "Ja" ;
+ Text [ italian ] = "Sì" ;
+ Text [ portuguese_brazilian ] = "Sim" ;
+ Text [ portuguese ] = "Sim" ;
+ Text [ french ] = "Oui" ;
+ Text [ dutch ] = "Ja" ;
+ Text [ spanish ] = "Sí" ;
+ Text [ danish ] = "Ja" ;
+ Text [ swedish ] = "Ja" ;
+ Text [ finnish ] = "Yes" ;
+ Text [ english_us ] = "Yes" ;
+ Text[ chinese_simplified ] = "ÊÇ";
+ Text[ russian ] = "Äà";
+ Text[ polish ] = "Tak";
+ Text[ japanese ] = "‚Í‚¢";
+ Text[ chinese_traditional ] = "¬O";
+ Text[ arabic ] = "äÚã";
+ Text[ greek ] = "Íáé";
+ Text[ korean ] = "¿¹";
+ Text[ turkish ] = "Evet";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NO
+ {
+ Text = "Nein" ;
+ Text [ ENGLISH ] = "No" ;
+ Text [ norwegian ] = "No" ;
+ Text [ italian ] = "No" ;
+ Text [ portuguese_brazilian ] = "Não" ;
+ Text [ portuguese ] = "Não" ;
+ Text [ french ] = "Non" ;
+ Text [ dutch ] = "Nee" ;
+ Text [ spanish ] = "No" ;
+ Text [ danish ] = "Nej" ;
+ Text [ swedish ] = "Nej" ;
+ Text [ finnish ] = "No" ;
+ Text [ english_us ] = "No" ;
+ Text[ chinese_simplified ] = "·ñ";
+ Text[ russian ] = "Íåò";
+ Text[ polish ] = "Nie";
+ Text[ japanese ] = "‚¢‚¢‚¦";
+ Text[ chinese_traditional ] = "§_";
+ Text[ arabic ] = "áÇ";
+ Text[ greek ] = "¼÷é";
+ Text[ korean ] = "¾Æ´Ï¿À";
+ Text[ turkish ] = "Hayýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PROTECTION
+ {
+ Text = "Schutz" ;
+ Text [ ENGLISH ] = "Protection" ;
+ Text [ norwegian ] = "Protection" ;
+ Text [ italian ] = "Protezione" ;
+ Text [ portuguese_brazilian ] = "Proteção" ;
+ Text [ portuguese ] = "Protecção" ;
+ Text [ french ] = "Protection" ;
+ Text [ dutch ] = "Beveiliging" ;
+ Text [ spanish ] = "Protección" ;
+ Text [ danish ] = "Beskyttelse" ;
+ Text [ swedish ] = "Skydd" ;
+ Text [ finnish ] = "Protection" ;
+ Text [ english_us ] = "Protection" ;
+ Text[ chinese_simplified ] = "±£»¤";
+ Text[ russian ] = "Çàùèòà";
+ Text[ polish ] = "Ochrona";
+ Text[ japanese ] = "•ÛŒì";
+ Text[ chinese_traditional ] = "«OÅ@";
+ Text[ arabic ] = "ÇáÍãÇíÉ";
+ Text[ greek ] = "Ðñïóôáóßá";
+ Text[ korean ] = "º¸È£";
+ Text[ turkish ] = "Koruma";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FORMULAS
+ {
+ Text = "Formeln" ;
+ Text [ ENGLISH ] = "Formulas" ;
+ Text [ norwegian ] = "Formulas" ;
+ Text [ italian ] = "Formule" ;
+ Text [ portuguese_brazilian ] = "Formulas" ;
+ Text [ portuguese ] = "Fórmulas" ;
+ Text [ french ] = "Formules" ;
+ Text [ dutch ] = "Formules" ;
+ Text [ spanish ] = "Fórmulas" ;
+ Text [ danish ] = "Formler" ;
+ Text [ swedish ] = "Formler" ;
+ Text [ finnish ] = "Formulas" ;
+ Text [ english_us ] = "Formulas" ;
+ Text[ chinese_simplified ] = "¹«Ê½";
+ Text[ russian ] = "Ôîðìóëû";
+ Text[ polish ] = "Formu³y";
+ Text[ japanese ] = "”Ž®";
+ Text[ chinese_traditional ] = "¤½¦¡";
+ Text[ arabic ] = "ÇáÕíÛ";
+ Text[ greek ] = "Ôýðïé";
+ Text[ korean ] = "¼ö½Ä";
+ Text[ turkish ] = "Formül";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_HIDE
+ {
+ Text = "Ausblenden" ;
+ Text [ ENGLISH ] = "Hide" ;
+ Text [ norwegian ] = "Hide" ;
+ Text [ italian ] = "Nascondi" ;
+ Text [ portuguese_brazilian ] = "Ocultar" ;
+ Text [ portuguese ] = "Ocultar" ;
+ Text [ french ] = "Masquer" ;
+ Text [ dutch ] = "Verbergen" ;
+ Text [ spanish ] = "Ocultar" ;
+ Text [ danish ] = "Skjul" ;
+ Text [ swedish ] = "Dölj" ;
+ Text [ finnish ] = "Hide" ;
+ Text [ english_us ] = "Hide" ;
+ Text[ chinese_simplified ] = "ÒþÈë";
+ Text[ russian ] = "Ñêðûòü";
+ Text[ polish ] = "Ukryj";
+ Text[ japanese ] = "”ñ•\\Ž¦";
+ Text[ chinese_traditional ] = "Áô¤J";
+ Text[ arabic ] = "ÅÎÝÇÁ";
+ Text[ greek ] = "Áðüêñõøç";
+ Text[ korean ] = "¼û±â±â";
+ Text[ turkish ] = "Gizle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PRINT
+ {
+ Text = "Drucken" ;
+ Text [ ENGLISH ] = "Print" ;
+ Text [ norwegian ] = "Skriv ut" ;
+ Text [ italian ] = "Stampa" ;
+ Text [ portuguese_brazilian ] = "Imprimir" ;
+ Text [ portuguese ] = "Imprimir" ;
+ Text [ french ] = "Imprimer" ;
+ Text [ dutch ] = "Afdrukken" ;
+ Text [ spanish ] = "Imprimir" ;
+ Text [ danish ] = "Udskriv" ;
+ Text [ swedish ] = "Skriv ut" ;
+ Text [ finnish ] = "Print" ;
+ Text [ english_us ] = "Print" ;
+ Text[ chinese_simplified ] = "´òÓ¡";
+ Text[ russian ] = "Ïå÷àòü";
+ Text[ polish ] = "Drukuj";
+ Text[ japanese ] = "ˆóü";
+ Text[ chinese_traditional ] = "¦C¦L";
+ Text[ arabic ] = "ØÈÇÚÉ";
+ Text[ greek ] = "Åêôýðùóç";
+ Text[ korean ] = "Àμâ";
+ Text[ turkish ] = "Yazdýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALID_AFAREA
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Um das AutoFormat anwenden zu können,\nmuß ein Tabellenbereich von mindestens\n3x3 Zellen markiert sein. : Um das Autoformat anwenden zu können,\nmuß ein Tabellenbereich von mindestens\n3x3 Zellen markiert sein. */
+ /* ### ACHTUNG: Neuer Text in Resource? Um das AutoFormat anwenden zu können,\nmuß ein Tabellenbereich von mindestens\n3x3 Zellen markiert sein. : Um das Autoformat anwenden zu können,\nmuß ein Tabellenbereich von mindestens\n3x3 Zellen markiert sein. */
+ /* ### ACHTUNG: Neuer Text in Resource? Um das AutoFormat anwenden zu können,\nmuß ein Tabellenbereich von mindestens\n3x3 Zellen markiert sein. : Um das AutoFormat anwenden zu k÷nnen,\nmu˜ ein Tabellenbereich von mindestens\n3x3 Zellen markiert sein. */
+ Text = "Um das AutoFormat anwenden zu können,\nmuß ein Tabellenbereich von mindestens\n3x3 Zellen markiert sein." ;
+ Text [ ENGLISH ] = "You have to select an table area of at least\n3x3 cells, to apply an AutoFormat" ;
+ Text [ norwegian ] = "You have to select an table area of at least\n3x3 cells, to apply an AutoFormat" ;
+ Text [ italian ] = "Per poter utilizzare la formattazione automatica è necessario selezionare\nun'area di almeno 3x3 celle." ;
+ Text [ portuguese_brazilian ] = "You have to select an table area of at least\n3x3 cells, to apply an AutoFormat" ;
+ Text [ portuguese ] = "Para aplicar o AutoFormato, deverá seleccionar uma\nárea da tabela de pelo menos 3 x 3 células." ;
+ Text [ french ] = "Une plage de table nécessite\nau moins 3x3 cellules sélectionnées\npour appliquer l'AutoFormat." ;
+ Text [ dutch ] = "Om AutoOpmaak te kunnen uitvoeren\nmoet er een tabelbereik van tenminste\n3x3 cellen gemarkeerd zijn." ;
+ Text [ spanish ] = "Para poder aplicar el AutoFormato\nes necesario marcar un área en la tabla\nde por lo menos 3x3 celdas." ;
+ Text [ danish ] = "For at kunne anvende AutoFormat,\nskal et tabelområde på mindst\n3x3 celler være markeret." ;
+ Text [ swedish ] = "För att kunna använda Autoformat\nmåste ett tabellområde på minst\n3x3 celler vara markerat." ;
+ Text [ finnish ] = "You have to select an table area of at least\n3x3 cells, to apply an AutoFormat" ;
+ Text [ english_us ] = "To apply an AutoFormat,\na table range of at least\n3x3 cells must be selected." ;
+ Text[ chinese_simplified ] = "ΪÁËʹÓÃ×Ô¶¯¸ñʽ£¬\nÄú±ØÐëÖÁÉÙÑ¡ÖÐÁË\n3x3 ¹¤×÷±íÇøÓò¡£";
+ Text[ russian ] = "Äëÿ âîçìîæíîñòè ïðèìåíåíèÿ àâòîôîðìàòà\níåîáõîäèìî âûäåëèòü îáëàñòü òàáëèöû êàê ìèíèìóì\n3x3 ÿ÷ååê.";
+ Text[ polish ] = "Aby zastosowaæ Autoformatowanie,\ntrzeba zaznaczyæ obszar tabeli o wymiarach co najmniej \n3x3 komórki.";
+ Text[ japanese ] = "µ°ÄÌ«°Ï¯Ä‚ðŽg—p‚·‚é‚É‚ÍA\nÅ’á3x3¾Ù‚Ì•\\”͈͂ð‘I‘ð‚µ‚Ä‚¨‚­•K—v‚ª‚ ‚è‚Ü‚·B";
+ Text[ chinese_traditional ] = "¬°¤F¨Ï¥Î¦Û°Ê®æ¦¡¡A\n±z¥²¶·¦Ü¤Ö¿ï¨ú¤F\n3x3 ¤u§@ªí°Ï°ì¡C";
+ Text[ arabic ] = "áßí ÊÓÊÎÏã ÇáÊäÓíÞ ÇáÊáÞÇÆí¡\níÌÈ Ãä ÊÍÏÏ äØÇÞ Ýí ÇáÌÏæá áÇ íÞá Úä\n3x3 ÎáÇíÇ.";
+ Text[ greek ] = "Ãéá íá åöáñìïóôåß ç ÁõôïÌïñöïðïßçóç,\nðñÝðåé íá Ý÷åé åðéëåãåß ôïõëÜ÷éóôïí ìéá ðåñéï÷Þ\nðßíáêá ìå 3÷3 êåëéÜ.";
+ Text[ korean ] = "ÀÚµ¿ ¼­½ÄÀ» Àû¿ëÇϱâ À§Çؼ±,\nÃÖ¼ÒÇÑ Å×À̺íÀÇ¿µ¿ª¿¡ \n 3x3¼¿ÀÌ ¼±ÅõǾî¾ß¸¸ ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "otomatik formatlamayý kullanabilmek için\n en az 3x3 hücre büyüklüðünde bir tablo aralýðý seçilmiþ olmalýdýr.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CASCADE
+ {
+ Text = " (verschachtelt)" ;
+ Text [ ENGLISH ] = " (cascaded)" ;
+ Text [ norwegian ] = " (cascaded)" ;
+ Text [ italian ] = "(a cascata)" ;
+ Text [ portuguese_brazilian ] = "(em cascata)" ;
+ Text [ portuguese ] = "(em cascata)" ;
+ Text [ finnish ] = " (limittäin)" ;
+ Text [ danish ] = "(indskudt)" ;
+ Text [ french ] = "(en cascade)" ;
+ Text [ swedish ] = "(sammanflätad)" ;
+ Text [ dutch ] = "(grijpen in elkaar)" ;
+ Text [ spanish ] = "(en cascada)" ;
+ Text [ english_us ] = "(nested)" ;
+ Text[ chinese_simplified ] = "(¸´ºÏµÄ)";
+ Text[ russian ] = "(âëîæåííûé)";
+ Text[ polish ] = "(zagnie¿d¿one)";
+ Text[ japanese ] = "(d‚Ȃ臂Á‚½)";
+ Text[ chinese_traditional ] = "(½Æ¦Xªº)";
+ Text[ arabic ] = "(ÊÑÇßÈ)";
+ Text[ greek ] = "(ÁëëåðÜëëçëç óýíäåóç)";
+ Text[ korean ] = "(³»Æ÷µÈ)";
+ Text[ turkish ] = "(yuvalanmýþ)";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_OPTIONAL
+ {
+ Text = " (optional)" ;
+ Text [ ENGLISH ] = " (optional)" ;
+ Text [ norwegian ] = " (optional)" ;
+ Text [ italian ] = "(opzionale)" ;
+ Text [ portuguese_brazilian ] = "(opcional)" ;
+ Text [ portuguese ] = "(opcional)" ;
+ Text [ finnish ] = " (valinnainen)" ;
+ Text [ danish ] = "(valgfri)" ;
+ Text [ french ] = "(facultatif)" ;
+ Text [ swedish ] = "(valfri)" ;
+ Text [ dutch ] = "(optioneel)" ;
+ Text [ spanish ] = "(opcional)" ;
+ Text [ english_us ] = "(optional)" ;
+ Text[ chinese_simplified ] = "(¿ÉÑ¡ÔñµÄ)";
+ Text[ russian ] = "(âûáîðî÷íûé)";
+ Text[ polish ] = "(opcjonalny)";
+ Text[ japanese ] = "(µÌß¼®Ý)";
+ Text[ chinese_traditional ] = "(¥i¿ï¾Üªº)";
+ Text[ arabic ] = "(ÇÎÊíÇÑí)";
+ Text[ greek ] = "(ðñïáéñåôéêÜ)";
+ Text[ korean ] = "(¼±ÅÃÀûÀÎ)";
+ Text[ turkish ] = "(isteðe baðlý)";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_REQUIRED
+ {
+ Text = " (erforderlich)" ;
+ Text [ ENGLISH ] = " (required)" ;
+ Text [ norwegian ] = " (required)" ;
+ Text [ italian ] = "(richiesto)" ;
+ Text [ portuguese_brazilian ] = "(exigido)" ;
+ Text [ portuguese ] = "(exigido)" ;
+ Text [ finnish ] = " (pakollinen)" ;
+ Text [ danish ] = "(obligatorisk)" ;
+ Text [ french ] = "(requis)" ;
+ Text [ swedish ] = "(nödvändig)" ;
+ Text [ dutch ] = "(vereist)" ;
+ Text [ spanish ] = "(necesario)" ;
+ Text [ english_us ] = "(required)" ;
+ Text[ chinese_simplified ] = "(ÐèÒªÊäÈë)";
+ Text[ russian ] = "(íåîáõîäèìî)";
+ Text[ polish ] = "(wymagany,-a, -e)";
+ Text[ japanese ] = "(•K{)";
+ Text[ chinese_traditional ] = "(»Ý­n¿é¤J)";
+ Text[ arabic ] = "(ÖÑæÑí)";
+ Text[ greek ] = "(áðáéôåßôáé)";
+ Text[ korean ] = "(¿ä±¸µÊ)";
+ Text[ turkish ] = "(isteniyor)";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALID
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ungültig : ung³ltig */
+ Text = "ungültig" ;
+ Text [ ENGLISH ] = "invalid" ;
+ Text [ norwegian ] = "invalid" ;
+ Text [ italian ] = "non valido" ;
+ Text [ portuguese_brazilian ] = "inválido" ;
+ Text [ portuguese ] = "incorrecto" ;
+ Text [ finnish ] = "virheellinen" ;
+ Text [ danish ] = "ugyldig" ;
+ Text [ french ] = "incorrect" ;
+ Text [ swedish ] = "ogiltig" ;
+ Text [ dutch ] = "ongeldig" ;
+ Text [ spanish ] = "incorrecto" ;
+ Text [ english_us ] = "invalid" ;
+ Text[ chinese_simplified ] = "ÎÞЧ";
+ Text[ russian ] = "íåäåéñòâèòåëüíûé";
+ Text[ polish ] = "niepoprawny";
+ Text[ japanese ] = "–³Œø";
+ Text[ chinese_traditional ] = "µL®Ä";
+ Text[ arabic ] = "ÛíÑ ÕÇáÍ";
+ Text[ greek ] = "ìç Ýãêõñï";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀ½";
+ Text[ turkish ] = "geçersiz";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_EDITFUNCTION
+ {
+ Text = "Funktion bearbeiten" ;
+ Text [ ENGLISH ] = "Edit Function" ;
+ Text [ norwegian ] = "Edit Function" ;
+ Text [ italian ] = "Modifica funzione" ;
+ Text [ portuguese_brazilian ] = "Edit Function" ;
+ Text [ portuguese ] = "Editar função" ;
+ Text [ finnish ] = "Edit Function" ;
+ Text [ danish ] = "Rediger funktion" ;
+ Text [ french ] = "Éditer une fonction" ;
+ Text [ swedish ] = "Redigera funktion" ;
+ Text [ dutch ] = "Functie bewerken" ;
+ Text [ spanish ] = "Editar función" ;
+ Text [ english_us ] = "Edit Function" ;
+ Text[ chinese_simplified ] = "±à¼­º¯Êý";
+ Text[ russian ] = "Ïðàâêà ôóíêöèè";
+ Text[ polish ] = "Edytuj funkcjê";
+ Text[ japanese ] = "ŠÖ”‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è¨ç¼Æ";
+ Text[ arabic ] = "ÊÍÑíÑ ÏÇáÉ";
+ Text[ greek ] = "Åðåîåñãáóßá óõíÜñôçóçò";
+ Text[ korean ] = "ÇÔ¼ö ÆíÁý";
+ Text[ turkish ] = "Fonksiyonu düzenle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NOTES
+ {
+ Text = "Notizen" ;
+ Text [ ENGLISH ] = "Notes" ;
+ Text [ norwegian ] = "Notes" ;
+ Text [ italian ] = "Note" ;
+ Text [ portuguese_brazilian ] = "Notas" ;
+ Text [ portuguese ] = "Anotações" ;
+ Text [ finnish ] = "Huomautukset" ;
+ Text [ danish ] = "Noter" ;
+ Text [ french ] = "Notes" ;
+ Text [ swedish ] = "Anteckningar" ;
+ Text [ dutch ] = "Aantekeningen" ;
+ Text [ spanish ] = "Notas" ;
+ Text [ english_us ] = "Notes" ;
+ Text[ chinese_simplified ] = "±¸×¢";
+ Text[ russian ] = "Ïðèìå÷àíèÿ";
+ Text[ polish ] = "Notatki";
+ Text[ japanese ] = "ºÒÝÄ";
+ Text[ chinese_traditional ] = "³Æµù";
+ Text[ arabic ] = "ãáÇÍÙÇÊ";
+ Text[ greek ] = "Óçìåéþóåéò";
+ Text[ korean ] = "¸Þ¸ð";
+ Text[ turkish ] = "Not";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_QUERY_DELTAB
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wollen Sie die aktuelle Tabelle(n) löschen? : Wollen Sie die aktuelle Tabelle endg³ltig l÷schen? */
+ Text = "Wollen Sie die ausgewählten Tabellen löschen?" ;
+ Text [ ENGLISH ] = "Are you sure you want to delete the selected sheets?" ;
+ Text [ english_us ] = "Are you sure you want to permanently delete the current sheet(s)?" ;
+ Text [ italian ] = "Si vuole eliminare definitivamente la tabella?" ;
+ Text [ spanish ] = "¿Desea eliminar las hojas seleccionadas?" ;
+ Text [ french ] = "Voulez-vous supprimer les feuilles sélectionnées ?" ;
+ Text [ dutch ] = "Wilt u het actuele werkblad werkelijk wissen?" ;
+ Text [ swedish ] = "Vill Du verkligen radera de utvalda tabellerna?" ;
+ Text [ danish ] = "Vil du slette de markerede ark?" ;
+ Text [ portuguese ] = "Deseja eliminar as folhas seleccionadas?" ;
+ Text [ portuguese_brazilian ] = "Wollen Sie die aktuelle Tabelle endgültig löschen?" ;
+ Text[ chinese_simplified ] = "ÄúÕæµÄҪɾ³ýÕâ¸öÑ¡ÖеŤ×÷±íÂð£¿";
+ Text[ russian ] = "Âû õîòèòå óäàëèòü âûäåëåííóþ òàáëèöó?";
+ Text[ polish ] = "Chcesz na pewno usun¹æ aktualne arkusze?";
+ Text[ japanese ] = "‘I‘ð‚µ‚½•\\‚ð휂µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "±z¯u­n§R°£³o­Ó¿ï¨úªº¤u§@ªí¡H";
+ Text[ arabic ] = "åá ÊÑíÏ ÍÐÝ ÇáÌÏÇæá ÇáÊí Êã ÇÎÊíÇÑåÇ¿";
+ Text[ greek ] = "ÈÝëåôå íá äéáãñáöïýí ïé åðéëåãìÝíïé ðßíáêåò;";
+ Text[ korean ] = "ÇöÀçÀÇ ½ÃÆ®¸¦ ¿µ±¸È÷ »èÁ¦ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "Seçilen tablolarý silmek istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_QUERY_DELSCENARIO
+ {
+ Text = "Wollen Sie das ausgewählte Szenario löschen?" ;
+ Text [ ENGLISH ] = "Are you sure you want to delete the selected scenario?" ;
+ Text [ portuguese ] = "Deseja realmente apagar o cenário seleccionado?" ;
+ Text [ english_us ] = "Are you sure you want to delete the selected scenario?" ;
+ Text [ portuguese_brazilian ] = "Wollen Sie das ausgewählte Szenario löschen?" ;
+ Text [ swedish ] = "Vill Du radera det utvalda scenariot?" ;
+ Text [ danish ] = "Vil du slette det markerede scenarie?" ;
+ Text [ italian ] = "Cancellare lo scenario scelto?" ;
+ Text [ spanish ] = "¿Está seguro de querer eliminar el escenario seleccionado?" ;
+ Text [ french ] = "Voulez-vous supprimer le scénario sélectionné ?" ;
+ Text [ dutch ] = "Wilt u het geselcteerde scenario verwijderen?" ;
+ Text[ chinese_simplified ] = "ÄúÕæµÄҪɾ³ýÕâ¸öÑ¡Öеķ½°¸Âð£¿";
+ Text[ russian ] = "Âû õîòèòå óäàëèòü âûäåëåííûé ñöåíàðèé?";
+ Text[ polish ] = "Chcesz usun¹æ zaznaczony scenariusz?";
+ Text[ japanese ] = "‘I‘ð‚µ‚½¼Åص‚ð휂µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "±z¯u­n§R°£³o­Ó¿ï¨úªº¤è®×¡H";
+ Text[ arabic ] = "åá ÊÑíÏ ÍÐÝ ÇáÓíäÇÑíæ ÇáãõÍÏÏ¿";
+ Text[ greek ] = "ÈÝëåôå íá äéáãñÜøåôå ôï åðéëåãìÝíï óåíÜñéï;";
+ Text[ korean ] = "¼±ÅÃµÈ ½Ã³ª¸®¿À¸¦ »èÁ¦ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "Seçilen senaryoyu silmek istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_EXPORT_ASCII_WARNING
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Thesaurus ist nicht verfügbar : Der Thesaurus ist nicht verf³gbar */
+ TEXT = "Der Thesaurus ist nicht verfügbar" ;
+ TEXT [ English ] = "Thesaurus is not available" ;
+ Text [ dutch ] = "De thesaurus ist niet beschikbaar" ;
+ Text [ english_us ] = "Thesaurus is not available" ;
+ Text [ italian ] = "Il dizionario dei sinonimi non è disponibile" ;
+ Text [ spanish ] = "El diccionario de sinónimos no está disponible" ;
+ Text [ french ] = "Le dictionnaire des synonymes n'est pas disponible" ;
+ Text [ swedish ] = "Synonymordlistan är inte tillgänglig" ;
+ Text [ danish ] = "Synonymordbogen er ikke tilgængelig" ;
+ Text [ portuguese ] = "O dicionário de sinónimos não está disponível" ;
+ Text [ portuguese_brazilian ] = "Der Thesaurus ist nicht verfügbar" ;
+ Text[ chinese_simplified ] = "´Êµä²»´æÔÚ";
+ Text[ russian ] = "Òåçàóðóñ íå äîñòóïåí";
+ Text[ polish ] = "Tezaurus jest niedostêpny";
+ Text[ japanese ] = "—Þ‹`ŒêŽ«“T‚Í‚ ‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µü¨å¤£¦s¦b";
+ Text[ arabic ] = "ÞÇãæÓ ÇáãÑÇÏÝÇÊ ÛíÑ ãÊæÝÑ";
+ Text[ greek ] = "Ï èçóáõñüò ëÝîåùí äåí åßíáé äéáèÝóéìïò";
+ Text[ korean ] = "µ¿ÀÇ¾î »çÀüÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Eþanlamlar sözlüðü mevcut deðil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_IMPORT_ERROR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Rechtschreibprüfung ist nicht verfügbar : Die Rechtschreibpr³fung ist nicht verf³gbar */
+ TEXT = "Die Rechtschreibprüfung ist nicht verfügbar" ;
+ TEXT [ English ] = "Spellchecking is not available" ;
+ Text [ english_us ] = "Spellcheck not available" ;
+ Text [ italian ] = "Il controllo ortografico non è disponibile" ;
+ Text [ spanish ] = "La revisión de ortografía no está disponible" ;
+ Text [ french ] = "La vérification de l'orthographe n'est pas disponible" ;
+ Text [ dutch ] = "De spellingcontrole is niet beschikbaar" ;
+ Text [ swedish ] = "Rättstavningskontrollen är inte tillgänglig" ;
+ Text [ danish ] = "Stavekontrollen er ikke tilgængelig" ;
+ Text [ portuguese ] = "A verificação ortográfica não está disponível" ;
+ Text [ portuguese_brazilian ] = "Die Rechtschreibprüfung ist nicht verfügbar" ;
+ Text[ chinese_simplified ] = "²»ÌṩÕý×Ö·¨¼ì²é¹¦ÄÜ";
+ Text[ russian ] = "Ïðîâåðêà ïðàâîïèñàíèÿ íå äîñòóïíà";
+ Text[ polish ] = "Sprawdzanie pisowni jest niemo¿liwe";
+ Text[ japanese ] = "½ÍßÙ Áª¯¸‚Í‚ ‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¤£´£¨Ñ«÷¦r¥\\¯à";
+ Text[ arabic ] = "ÇáÊÏÞíÞ ÇáÅãáÇÆí ÛíÑ ãÊæÝÑ";
+ Text[ greek ] = "O ïñèïãñáöéêüò Ýëåã÷ïò äåí åßíáé äéáèÝóéìïò";
+ Text[ korean ] = "¸ÂÃã¹ý °Ë»ç°¡ ºÒ°¡´ÉÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Yazý denetimi mevcut deðil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_IMPORT_ASCII
+ {
+ Text = "Textimport" ;
+ Text [ ENGLISH ] = "Textimport" ;
+ Text [ dutch ] = "Tekstimport" ;
+ Text [ english_us ] = "Import text files" ;
+ Text [ italian ] = "Importazione testo" ;
+ Text [ spanish ] = "Importar texto" ;
+ Text [ french ] = "Import de texte" ;
+ Text [ swedish ] = "Textimport" ;
+ Text [ danish ] = "Tekstimport" ;
+ Text [ portuguese ] = "Importar ficheiros de texto" ;
+ Text [ portuguese_brazilian ] = "Textimport" ;
+ Text[ chinese_simplified ] = "ÊäÈëÎı¾";
+ Text[ russian ] = "Èìïîðò ôàéëîâ òåêñòà";
+ Text[ polish ] = "Import tekstu";
+ Text[ japanese ] = "÷½Ä‚̲ÝÎß°Ä";
+ Text[ chinese_traditional ] = "¿é¤J¤å¥ó";
+ Text[ arabic ] = "ÇÓÊíÑÇÏ äÕ";
+ Text[ greek ] = "ÅéóáãùãÞ êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ÆÄÀÏ °¡Á®¿À±â";
+ Text[ turkish ] = "Metin içe aktarýmý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_EXPORT_ASCII
+ {
+ Text = "Textexport" ;
+ Text [ ENGLISH ] = "Textexport" ;
+ Text [ dutch ] = "Export van tekst" ;
+ Text [ english_us ] = "Export of text files" ;
+ Text [ italian ] = "Esportazione testo" ;
+ Text [ spanish ] = "Exportación de texto" ;
+ Text [ french ] = "Export de texte" ;
+ Text [ swedish ] = "Textexport" ;
+ Text [ danish ] = "Teksteksport" ;
+ Text [ portuguese ] = "Exportar texto" ;
+ Text [ portuguese_brazilian ] = "Textexport" ;
+ Text[ chinese_simplified ] = "Êä³öÎı¾";
+ Text[ russian ] = "Ýêñïîðòòåêñòà";
+ Text[ polish ] = "Eksport tekstu";
+ Text[ japanese ] = "÷½Ä‚Ì´¸½Îß°Ä";
+ Text[ chinese_traditional ] = "¿é¥X¥»¤å";
+ Text[ arabic ] = "ÊÕÏíÑ äÕ";
+ Text[ greek ] = "ÅîáãùãÞ êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ÆÄÀÏ º¸³»±â";
+ Text[ turkish ] = "Dýþa aktar (metin)";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_IMPORT_LOTUS
+ {
+ Text = "Lotusimport" ;
+ Text [ ENGLISH ] = "Lotusimport" ;
+ Text [ english_us ] = "Import Lotus files" ;
+ Text [ italian ] = "Importazione Lotus" ;
+ Text [ spanish ] = "Importación Lotus" ;
+ Text [ french ] = "Import Lotus" ;
+ Text [ dutch ] = "Lotus-import" ;
+ Text [ swedish ] = "Lotusimport" ;
+ Text [ danish ] = "Lotusimport" ;
+ Text [ portuguese ] = "Importar Lotus" ;
+ Text [ portuguese_brazilian ] = "Lotusimport" ;
+ Text[ chinese_simplified ] = "ÊäÈë Lotus Îĵµ";
+ Text[ russian ] = "Èìïîðò ôàéëîâ Lotus";
+ Text[ polish ] = "Import programu Lotus";
+ Text[ japanese ] = "Û°À½‚̲ÝÎß°Ä";
+ Text[ chinese_traditional ] = "¿é¤J Lotus ÀÉ®×";
+ Text[ arabic ] = "ÇÓÊíÑÇÏ ãáÝÇÊ Lotus";
+ Text[ greek ] = "ÅéóáãùãÞ áñ÷åßïõ Lotus";
+ Text[ korean ] = "LotusÆÄÀÏ °¡Á®¿À±â";
+ Text[ turkish ] = "Lotus içe aktarýmý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_IMPORT_DBF
+ {
+ Text = "DBaseimport" ;
+ Text [ ENGLISH ] = "DBaseimport" ;
+ Text [ dutch ] = "DBase-import" ;
+ Text [ english_us ] = "Import DBase files" ;
+ Text [ italian ] = "Importazione DBase" ;
+ Text [ spanish ] = "Importación DBase" ;
+ Text [ french ] = "Import dBase" ;
+ Text [ swedish ] = "DBaseimport" ;
+ Text [ danish ] = "DBase import" ;
+ Text [ portuguese ] = "Importar ficheiros de DBase" ;
+ Text [ portuguese_brazilian ] = "DBaseimport" ;
+ Text[ chinese_simplified ] = "ÊäÈë DBase Îļþ";
+ Text[ russian ] = "Èìïîðò DBase";
+ Text[ polish ] = "Import DBase";
+ Text[ japanese ] = "DBase‚̲ÝÎß°Ä";
+ Text[ chinese_traditional ] = "¿é¤J DBase ÀÉ®×";
+ Text[ arabic ] = "ÇÓÊíÑÇÏ ãáÝÇÊ DBase";
+ Text[ greek ] = "ÅéóáãùãÞ áñ÷åßá DBase";
+ Text[ korean ] = "DBase ÆÄÀÏ °¡Á®¿À±â";
+ Text[ turkish ] = "DBase içe aktarýmý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_EXPORT_DBF
+ {
+ Text = "DBase-Export" ;
+ Text [ ENGLISH ] = "DBase export" ;
+ Text[ english_us ] = "DBase export";
+ Text[ portuguese ] = "Exportar DBase";
+ Text[ russian ] = "Ýêñïîðò DBase";
+ Text[ greek ] = "ÅîáãùãÞ DBase";
+ Text[ dutch ] = "DBase export";
+ Text[ french ] = "Export DBase";
+ Text[ spanish ] = "Exportación DBase";
+ Text[ italian ] = "Esportazione DBase";
+ Text[ danish ] = "DBase eksport";
+ Text[ swedish ] = "DBase-export";
+ Text[ polish ] = "Eksport DBase";
+ Text[ portuguese_brazilian ] = "DBase export";
+ Text[ japanese ] = "DBase‚Ì´¸½Îß°Ä";
+ Text[ korean ] = "DBase º¸³»±â";
+ Text[ chinese_simplified ] = "DBase Êä³ö";
+ Text[ chinese_traditional ] = "DBase ¿é¥X";
+ Text[ arabic ] = "ÊÕÏíÑDBase ";
+ Text[ turkish ] = "Dýþa aktar (DBase)";
+ };
+ String STR_EXPORT_DIF
+ {
+ Text = "Dif-Export" ;
+ Text [ ENGLISH ] = "Dif Export" ;
+ Text [ dutch ] = "Dif-Export" ;
+ Text [ english_us ] = "Dif Export" ;
+ Text [ italian ] = "Esporta Dif" ;
+ Text [ spanish ] = "Exportar Dif" ;
+ Text [ french ] = "Export Dif" ;
+ Text [ swedish ] = "Dif Export" ;
+ Text [ danish ] = "Dif-eksport" ;
+ Text [ portuguese ] = "Exportar Dif" ;
+ Text [ portuguese_brazilian ] = "Dif-Export" ;
+ Text[ chinese_simplified ] = "´æÅÌ³É DIF ¸ñʽ";
+ Text[ russian ] = "Ýêñïîðò Dif";
+ Text[ polish ] = "Eksport Dif";
+ Text[ japanese ] = "Dif‚Ì´¸½Îß°Ä";
+ Text[ chinese_traditional ] = "Àx¦s¦¨ DIF ®æ¦¡";
+ Text[ arabic ] = "ÊÕÏíÑ Dif";
+ Text[ greek ] = "ÅîáãùãÞ Dif";
+ Text[ korean ] = "Dif º¸³»±â";
+ Text[ turkish ] = "Dýþa aktar (Dif)";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_IMPORT_DIF
+ {
+ Text = "Dif-Import" ;
+ Text [ ENGLISH ] = "Dif Import" ;
+ Text [ english_us ] = "Dif Import" ;
+ Text [ italian ] = "Importa Dif" ;
+ Text [ spanish ] = "Importar Dif" ;
+ Text [ french ] = "Import Dif" ;
+ Text [ dutch ] = "Dif-Import" ;
+ Text [ swedish ] = "Dif-import" ;
+ Text [ danish ] = "Dif-import" ;
+ Text [ portuguese ] = "Importar Dif" ;
+ Text [ portuguese_brazilian ] = "Dif-Import" ;
+ Text[ chinese_simplified ] = "ÊäÈë DIF";
+ Text[ russian ] = "Èìïîðò Dif";
+ Text[ polish ] = "Import Dif";
+ Text[ japanese ] = "Dif‚̲ÝÎß°Ä";
+ Text[ chinese_traditional ] = "¿é¤J DIF";
+ Text[ arabic ] = "ÇÓÊíÑÇÏ Dif";
+ Text[ greek ] = "ÅéóáãùãÞ Dif";
+ Text[ korean ] = "Dif °¡Á®¿À±â";
+ Text[ turkish ] = "Dif içe aktarýmý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_STYLENAME_STANDARD
+ {
+ Text = "Standard" ;
+ Text [ English ] = "Standard" ;
+ Text [ dutch ] = "Standaard" ;
+ Text [ english_us ] = "Default" ;
+ Text [ italian ] = "Standard" ;
+ Text [ spanish ] = "Predeterminado" ;
+ Text [ french ] = "Par défaut" ;
+ Text [ swedish ] = "Standard" ;
+ Text [ danish ] = "Standard" ;
+ Text [ portuguese ] = "Padrão" ;
+ Text [ portuguese_brazilian ] = "Standard" ;
+ Text[ chinese_simplified ] = "±ê×¼";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Standard";
+ Text[ japanese ] = "•W€";
+ Text[ chinese_traditional ] = "¼Ð·Ç";
+ Text[ arabic ] = "ÇÝÊÑÇÖí";
+ Text[ greek ] = "ÐñïåðéëïãÞ";
+ Text[ korean ] = "±âº»°ª";
+ Text[ turkish ] = "Standart";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_STYLENAME_RESULT
+ {
+ Text = "Ergebnis" ;
+ Text [ ENGLISH ] = "Result" ;
+ Text [ norwegian ] = "Resultat" ;
+ Text [ italian ] = "Risultato" ;
+ Text [ portuguese_brazilian ] = "Resultado" ;
+ Text [ portuguese ] = "Resultado" ;
+ Text [ finnish ] = "Tulos" ;
+ Text [ danish ] = "Resultat" ;
+ Text [ french ] = "Résultat" ;
+ Text [ swedish ] = "Resultat" ;
+ Text [ dutch ] = "Resultaat" ;
+ Text [ spanish ] = "Resultado" ;
+ Text [ english_us ] = "Result" ;
+ Text[ chinese_simplified ] = "½á¹û";
+ Text[ russian ] = "Ðåçóëüòàò";
+ Text[ polish ] = "Wynik";
+ Text[ japanese ] = "Œ‹‰Ê";
+ Text[ chinese_traditional ] = "µ²ªG";
+ Text[ arabic ] = "ÇáäÊíÌÉ";
+ Text[ greek ] = "ÁðïôÝëåóìá";
+ Text[ korean ] = "°á°ú";
+ Text[ turkish ] = "Sonuç";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_STYLENAME_RESULT1
+ {
+ Text = "Ergebnis2" ;
+ Text [ ENGLISH ] = "Result2" ;
+ Text [ norwegian ] = "Resultat2" ;
+ Text [ italian ] = "Risultato2" ;
+ Text [ portuguese_brazilian ] = "Resultado2" ;
+ Text [ portuguese ] = "Resultado2" ;
+ Text [ finnish ] = "Tulos2" ;
+ Text [ danish ] = "Resultat2" ;
+ Text [ french ] = "Résultat2" ;
+ Text [ swedish ] = "Resultat2" ;
+ Text [ dutch ] = "Resultaat2" ;
+ Text [ spanish ] = "Resultado2" ;
+ Text [ english_us ] = "Result2" ;
+ Text[ chinese_simplified ] = "½á¹û 2";
+ Text[ russian ] = "Ðåçóëüòàò2";
+ Text[ polish ] = "Wynik2";
+ Text[ japanese ] = "Œ‹‰Ê2";
+ Text[ chinese_traditional ] = "µ²ªG 2";
+ Text[ arabic ] = "äÊíÌÉ2";
+ Text[ greek ] = "ÁðïôÝëåóìá 2";
+ Text[ korean ] = "°á°ú2";
+ Text[ turkish ] = "Sonuç2";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_STYLENAME_HEADLINE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift : šberschrift */
+ Text = "Überschrift" ;
+ Text [ ENGLISH ] = "Headline" ;
+ Text [ english_us ] = "Heading" ;
+ Text [ dutch ] = "Kop" ;
+ Text [ italian ] = "Intestazione" ;
+ Text [ spanish ] = "Encabezado" ;
+ Text [ french ] = "Titre" ;
+ Text [ swedish ] = "Rubrik" ;
+ Text [ danish ] = "Overskrift" ;
+ Text [ portuguese ] = "Título" ;
+ Text [ portuguese_brazilian ] = "Überschrift" ;
+ Text[ chinese_simplified ] = "±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê";
+ Text[ polish ] = "Tytu³";
+ Text[ japanese ] = "Œ©o‚µ";
+ Text[ chinese_traditional ] = "¼ÐÃD";
+ Text[ arabic ] = "ÇáÚäæÇä";
+ Text[ greek ] = "Åðéêåöáëßäá";
+ Text[ korean ] = "±Û ¸Ó¸®";
+ Text[ turkish ] = "Baþlýk";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_STYLENAME_HEADLINE1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Überschrift1 : šberschrift1 */
+ Text = "Überschrift1" ;
+ Text [ ENGLISH ] = "Headline1" ;
+ Text [ english_us ] = "Heading1" ;
+ Text [ italian ] = "Intestazione1" ;
+ Text [ spanish ] = "Encabezado1" ;
+ Text [ french ] = "Titre1" ;
+ Text [ dutch ] = "Kop1" ;
+ Text [ swedish ] = "Överskrift1" ;
+ Text [ danish ] = "Overskrift1" ;
+ Text [ portuguese ] = "Título1" ;
+ Text [ portuguese_brazilian ] = "Überschrift1" ;
+ Text[ chinese_simplified ] = "±êÌâ 1";
+ Text[ russian ] = "Çàãîëîâîê1";
+ Text[ polish ] = "Tytu³1";
+ Text[ japanese ] = "Œ©o‚µ1";
+ Text[ chinese_traditional ] = "¼ÐÃD 1";
+ Text[ arabic ] = "ÇáÚäæÇä 1";
+ Text[ greek ] = "Åðéêåöáëßäá1";
+ Text[ korean ] = "±Û ¸Ó¸®1";
+ Text[ turkish ] = "Baþlýk1";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_STYLENAME_REPORT
+ {
+ Text = "Bericht" ;
+ Text [ ENGLISH ] = "Report" ;
+ Text [ english_us ] = "Report" ;
+ Text [ italian ] = "Rapporto" ;
+ Text [ spanish ] = "Informe" ;
+ Text [ french ] = "Compte rendu" ;
+ Text [ dutch ] = "Bericht" ;
+ Text [ swedish ] = "Rapport" ;
+ Text [ danish ] = "Rapport" ;
+ Text [ portuguese ] = "Relatório" ;
+ Text [ portuguese_brazilian ] = "Bericht" ;
+ Text[ chinese_simplified ] = "±¨±í";
+ Text[ russian ] = "Îò÷åò";
+ Text[ polish ] = "Raport";
+ Text[ japanese ] = "ÚÎß°Ä";
+ Text[ chinese_traditional ] = "³øªí";
+ Text[ arabic ] = "ÇáÊÞÑíÑ";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "º¸°í¼­";
+ Text[ turkish ] = "Rapor";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_STYLENAME_REPORT1
+ {
+ Text = "Bericht1" ;
+ Text [ ENGLISH ] = "Report1" ;
+ Text [ english_us ] = "Report1" ;
+ Text [ italian ] = "Rapporto1" ;
+ Text [ spanish ] = "Informe1" ;
+ Text [ french ] = "Compte rendu1" ;
+ Text [ dutch ] = "Bericht1" ;
+ Text [ swedish ] = "Rapport1" ;
+ Text [ danish ] = "Rapport1" ;
+ Text [ portuguese ] = "Relatório1" ;
+ Text [ portuguese_brazilian ] = "Bericht1" ;
+ Text[ chinese_simplified ] = "±¨±í 1";
+ Text[ russian ] = "Îò÷åò1";
+ Text[ polish ] = "Raport1";
+ Text[ japanese ] = "ÚÎß°Ä 1";
+ Text[ chinese_traditional ] = "³øªí 1";
+ Text[ arabic ] = "ÇáÊÞÑíÑ1";
+ Text[ greek ] = "ÁíáöïñÜ1";
+ Text[ korean ] = "º¸°í¼­1";
+ Text[ turkish ] = "Rapor1";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_IMPORT_EXCEL_WARNING
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ist für die Prüfung nicht verfügbar. \nÜberprüfen Sie bitte Ihre Installation und installieren Sie \ngegebenenfalls die gewünschte Sprache : ist f³r die Pr³fung nicht verf³gbar. \nšberpr³fen Sie bitte Ihre Installation und installieren Sie \ngegebenenfalls die gew³nschte Sprache */
+ TEXT = " ist für die Prüfung nicht verfügbar. \nÜberprüfen Sie bitte Ihre Installation und installieren Sie \ngegebenenfalls die gewünschte Sprache" ;
+ TEXT [ English ] = " is not available for spellchecking\nPlease check your installation and install the desired language\n" ;
+ Text [ dutch ] = "is voor de controle niet beschikbaar. \nControleer uw installatie en installeer \neventueel de gewenste taal" ;
+ Text [ english_us ] = "is not available for spellchecking\nPlease check your installation and install \nthe desired language if necessary" ;
+ Text [ italian ] = "non è disponibile per il controllo. \nControllate l'installazione ed installate \nse necessario la lingua desiderata" ;
+ Text [ spanish ] = "no está disponible para la verificación.\nRevise por favor su instalación\ne instale, si es necesario, el idioma deseado." ;
+ Text [ french ] = "n'est pas disponible pour la vérification. Veuillez vérifier l'installation et installer, le cas échéant, la langue souhaitée" ;
+ Text [ swedish ] = "står inte till förfogande för stavningskontrollen.\nKontrollera Din installation och installera\neventuellt det önskade språket." ;
+ Text [ danish ] = "står ikke til rådighed for stavekontrollen.\nKontroller venligst din installation og installer\ni givet fald det ønskede sprog" ;
+ Text [ portuguese ] = "não está disponível para a verificação ortográfica. \nControle a sua instalação e, se necessário,\ninstale a língua desejada" ;
+ Text [ portuguese_brazilian ] = "ist für die Prüfung nicht verfügbar. \nÜberprüfen Sie bitte Ihre Installation und installieren Sie \ngegebenenfalls die gewünschte Sprache" ;
+ Text[ chinese_simplified ] = "ûÓмì²éƴдµÄ¹¦ÄÜ¡£\nÇë¼ì²éÄúµÄ°²×°£¬ÈçÓбØÒªÇë°²×°ËùҪʹÓõÄÓïÑÔ°æ±¾";
+ Text[ russian ] = "äëÿ ïðîâåðêè íåäîñòóïåí. \nÏðîâåðüòå, ïîæàëóéñòà, èíñòàëëÿöèþ è â ñëó÷àå íåîáõîäèìîñòè èíñòàëëèðóéòå \níåîáõîäèìûé Âàì ÿçûê";
+ Text[ polish ] = "jest niedostêpny dla sprawdzania pisowni. \nSprawdŸ proszê instalacjê i zainstaluj \newentualnie potrzebny jêzyk.";
+ Text[ japanese ] = "½ÍßÙ Áª¯¸—p‚Í‚ ‚è‚Ü‚¹‚ñB\nÝ’è‚ðÁª¯¸‚µ‚ĉº‚³‚¢ ‚Ü‚½\n•K—v‚ɉž‚¶‚ÄŠó–]‚ÌŒ¾Œê‚ðݒ肵‚ĉº‚³‚¢";
+ Text[ chinese_traditional ] = "¨S¦³Àˬd«÷¦rªº¥\\¯à¡C\n½ÐÀˬd±zªº¦w¸Ë¡A­Y¦³¥²­n½Ð¦w¸Ë©Ò­n¨Ï¥Îªº»y¨¥ª©¥»";
+ Text[ arabic ] = "ÛíÑ ãÊæÝÑ ááÊÏÞíÞ ÇáÅãáÇÆí. \nÇáÑÌÇÁ ÝÍÕ ÇáÊËÈíÊ ÇáÎÇÕ Èß¡ æÊËÈíÊ ÇááÛÉ ÇáãØáæÈÉ¡ ÅÐÇ áÒã ÇáÃãÑ";
+ Text[ greek ] = "äåí åßíáé äéáèÝóéìï ãéá ôïí Ýëåã÷ï.\nÐáñáêáëþ åëÝãîôå ôçí åãêáôÜóôáóç êáé áí ÷ñåéáóôåß, íá \nãßíåé åãêáôÜóôáóç ôçò ãëþóóáò ðïõ åðéèõìåßôå";
+ Text[ korean ] = "¸ÂÃã¹ý °Ë»ç°¡ ºÒ°¡´ÉÇÕ´Ï´Ù\n´ç½ÅÀÇ ¼³Ä¡¸¦ È®ÀÎÇϽðí \nÇÊ¿äÇÏ´Ù¸é ÇÊ¿äÇÑ ¾ð¾î¸¦ ¼³Ä¡ ÇϽʽÿÀ.";
+ Text[ turkish ] = "denetim için mevcut deðil.\nKurulumu kontrol edip\ngerekirse istenen dili yükleyin";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_THESAURUS_NO_STRING
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Thesaurus nur in Textzellen möglich! : Thesaurus nur in Textzellen m÷glich! */
+ Text = "Thesaurus nur in Textzellen möglich!" ;
+ Text [ ENGLISH ] = "Thesaurus possible only in text cells!" ;
+ Text [ english_us ] = "Thesaurus can only be used in text cells!" ;
+ Text [ italian ] = "Dizionario dei sinonimi possibile solo in celle di testo" ;
+ Text [ spanish ] = "¡Búsqueda de sinónimos solo posible en celdas de texto!" ;
+ Text [ french ] = "Dict. des synonymes uniquement dans cellules de texte !" ;
+ Text [ dutch ] = "Thesaurus alleen in tekstcellen mogelijk" ;
+ Text [ swedish ] = "Synonymordlistan kan bara användas i textceller!" ;
+ Text [ danish ] = "Det er kun muligt at bruge synonymordbogen i tekstceller!" ;
+ Text [ portuguese ] = "A procura de sinónimos só é possível em células de texto!" ;
+ Text [ portuguese_brazilian ] = "Thesaurus nur in Textzellen möglich!" ;
+ Text[ chinese_simplified ] = "´ÊµäÖ»ÄÜÊÊÓÃÓÚÎÄ×Öµ¥Ôª¸ñ£¡";
+ Text[ russian ] = "Èñïîëüçîâàíèå òåçàóðóñà âîçìîæíî òîëüêî â òåêñòîâûõ ÿ÷åéêàõ!";
+ Text[ polish ] = "Tezaurus mo¿liwy tylko w komórkach tekstu!";
+ Text[ japanese ] = "—Þ‹`ŒêŽ«“T‚Í÷½Ä¾Ù‚Ì’†‚Å‚µ‚©Žg—p‚Å‚«‚Ü‚Ü‚¹‚ñ!";
+ Text[ chinese_traditional ] = "µü¨å¥u¯àÓì¥Î©ó¤å¦rÀx¦s®æ¡I";
+ Text[ arabic ] = "áÇ íãßä ÇÓÊÎÏÇã ÞÇãæÓ ÇáãÑÇÏÝÇÊ ÅáÇ Ýí ÎáÇíÇ äÕ!";
+ Text[ greek ] = "Ï èçóáõñüò ëÝîåùí åêôåëåßôáé ìüíï óå êåëéÜ êåéìÝíïõ";
+ Text[ korean ] = "µ¿ÀÇ¾î »çÀüÀº ÅؽºÆ® ¼¿ ¾È¿¡¼­¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù!";
+ Text[ turkish ] = "Eþanlamlýlar sözlüðü yalnýzca metin hücrelerinde kullanýlabilir!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SPELLING_BEGIN_TAB
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Soll die Rechtschreibprüfung am Tabellenanfang fortgesetzt werden? : Soll die Rechtschreibpr³fung am Tabellenanfang fortgesetzt werden? */
+ Text = "Soll die Rechtschreibprüfung am Tabellenanfang fortgesetzt werden?" ;
+ Text [ ENGLISH ] = "Continue spell checking at begin of current table?" ;
+ Text [ dutch ] = "Wilt u de spellingcontrole aan het begin van het werkblad voortzetten?" ;
+ Text [ english_us ] = "Should the spellcheck be continued at the beginning of the current sheet?" ;
+ Text [ italian ] = "Continuare il controllo ortografico dall'inizio della tabella?" ;
+ Text [ spanish ] = "¿Desea que se continúe la revisión ortográfica al comienzo de la hoja?" ;
+ Text [ french ] = "Continuer la vérification de l'orthographe au début de la feuille ?" ;
+ Text [ swedish ] = "Ska rättstavningskontrollen forsättas i början av tabellen?" ;
+ Text [ danish ] = "Skal stavekontrollen fortsættes fra arkets begyndelse?" ;
+ Text [ portuguese ] = "Continuar a verificação ortográfica no princípio da folha?" ;
+ Text [ portuguese_brazilian ] = "Soll die Rechtschreibprüfung am Tabellenanfang fortgesetzt werden?" ;
+ Text[ chinese_simplified ] = "ÄúÒª´Ó¹¤×÷±íÊ׶˿ªÊ¼¼ÌÐø½øÐÐÕý×Ö·¨Æ´Ð´¼ì²éÂð£¿";
+ Text[ russian ] = "Ïðîäîëæèòü ïðîâåðêó ïðàâîïèñàíèÿ â íà÷àëå òàáëèöû?";
+ Text[ polish ] = "Czy sprawdzanie pisowni ma byæ kontynuowane na pocz¹tku arkusza?";
+ Text[ japanese ] = "•¶ÍZ³‚ð¼°Ä‚ÌŽn‚ß‚É–ß‚Á‚Ä‘±s‚µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "±z­n¦b¤u§@ªí¤§­º¶}©lÀˬd«÷¦r¡H";
+ Text[ arabic ] = "åá ÊÑíÏ ãÊÇÈÚÉ ÇáÊÏÞíÞ ÇáÅãáÇÆí ÚäÏ ÈÏÇíÉ ÇáÌÏæá¿";
+ Text[ greek ] = "ÓõíÝ÷åéá ôïõ ïñèïãñáöéêïý åëÝã÷ïõ áðü ôçí áñ÷Þ ôïõ ðßíáêá;";
+ Text[ korean ] = "ÇöÀç ½ÃÆ®ÀÇ ½ÃÀۺκп¡¼­ ¸ÂÃã¹ý °Ë»ç¸¦ °è¼ÓÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "Yazým denetimi tablo baþýndan devam ettirilsin mi?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SPELLING_NO_LANG
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ist für den Thesaurus nicht verfügbar. \nÜberprüfen Sie bitte Ihre Installation und installieren Sie \ngegebenenfalls die gewünschte Sprache : ist f³r den Thesaurus nicht verf³gbar. \nšberpr³fen Sie bitte Ihre Installation und installieren Sie \ngegebenenfalls die gew³nschte Sprache */
+ TEXT = " ist für den Thesaurus nicht verfügbar. \nÜberprüfen Sie bitte Ihre Installation und installieren Sie \ngegebenenfalls die gewünschte Sprache" ;
+ TEXT [ English ] = " is not available for thesaurus\nPlease check your installation and install the desired language\n" ;
+ Text [ english_us ] = "is not available for the thesaurus.\nPlease check your installation and install \nthe desired language if necessary" ;
+ Text [ italian ] = "non è disponibile per il dizionario di sinonimi e contrari.\nControllate l'installazione e installate\nse necessario la lingua desiderata" ;
+ Text [ spanish ] = "no está disponible para el diccionario de sinónimos.\n Verifique por favor su instalación e instale en caso \nnecesario el idioma deseado." ;
+ Text [ french ] = "n'est pas disponible pour le dictionnaire des synonymes. Veuillez vérifier l'installation et installer, le cas échéant, la langue souhaitée." ;
+ Text [ dutch ] = "is voor de thesaurus niet beschikbaar.\nControleer uw installatie en installeer \neventueel de gewenste taal" ;
+ Text [ swedish ] = "står inte till förfogande för synonymordslistan. \nKontrollera Din installation och installera\n i förekommande fall det önskade språket." ;
+ Text [ danish ] = "står ikke til rådighed for synonymordbogen. \nKontroller venligst din installation og installer\ni givet fald det ønskede sprog" ;
+ Text [ portuguese ] = "não está disponível para o dicionário de sinónimos. \nControle a sua instalação e, se necessário, instale \na língua desejada." ;
+ Text [ portuguese_brazilian ] = "ist für den Thesaurus nicht verfügbar. \nÜberprüfen Sie bitte Ihre Installation und installieren Sie \ngegebenenfalls die gewünschte Sprache" ;
+ Text[ chinese_simplified ] = "´Êµä²»ÄÜʹÓá£\nÇë¼ì²éÄúµÄ°²×°³ÌÐò£¬ÔÚ±ØҪʱÇ밲װҪʹÓõÄÓïÑÔ°æ±¾¡£";
+ Text[ russian ] = "äëÿ òåçàóðóñà íåäîñòóïåí. \nÏðîâåðüòå, ïîæàëóéñòà,Âàøó èíñòàëëÿöèþ è èíñòàëëèðóéòå \n â ñëó÷àå íåîáõîäèìîñòè íóæíûé ÿçûê";
+ Text[ polish ] = "jest niedostêpny dla Tezaurusa. \nProszê sprawdziæ instalacjê i zainstalowaæ \newentualnie potrzebny jêzyk.";
+ Text[ japanese ] = "‚±‚ê‚Í—Þ‹`ŒêŽ«“T‚ÉŽg—p‚Å‚«‚Ü‚¹‚ñB\n²Ý½Ä°Ù‚³‚ê‚Ä‚¢‚é‚©‚à‚¤ˆê“xÁª¯¸‚µ\n‚³‚ê‚Ä‚¢‚éꇂ͊ó–]‚ÌŒ¾Œê‚ð²Ý½Ä°Ù‚µ‚Ä‚­‚¾‚³‚¢B";
+ Text[ chinese_traditional ] = "µü¨åµLªk¨Ï¥Î¡C\n½ÐÀˬd±zªº¦w¸Ëµ{§Ç¡A­Y¦³¥²­n¡A½Ð¦w¸Ë­n¨Ï¥Îªº»y¨¥ª©¥»¡C";
+ Text[ arabic ] = "ÛíÑ ãÊæÝÑ áÞÇãæÓ ÇáãÑÇÏÝÇÊ. \nÇáÑÌÇÁ ÝÍÕ ÇáÊËÈíÊ ÇáÎÇÕ Èß¡ æÊËÈíÊ ÇááÛÉ ÇáãØáæÈÉ¡ ÅÐÇ áÒã ÇáÃãÑ";
+ Text[ greek ] = "äåí åßíáé äéáèÝóéìï ãéá ôïí èçóáõñü ëÝîåùí.\nÐáñáêáëþ åëÝãîôå ôçí åãêáôÜóôáóç êáé áí ÷ñåéáóôåß, íá \nãßíåé åãêáôÜóôáóç ôçò ãëþóóáò ðïõ åðéèõìåßôå";
+ Text[ korean ] = "µ¿ÀÇ¾î »çÀüÀÇ »ç¿ëÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù.\n´ç½ÅÀÇ ¼³Ä¡¸¦ È®ÀÎÇϽðí \nÇÊ¿äÇÏ´Ù¸é ¿ä±¸µÈ ¾ð¾î¸¦ ¼³Ä¡ÇϽʽÿÀ.";
+ Text[ turkish ] = "eþanlamlýlar sözlüðü için mevcut deðil. \nKurulumu kontrol edip \ngerekirse istenilen dili yükleyin.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SPELLING_STOP_OK
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Rechtschreibprüfung dieser Tabelle ist abgeschlossen! : Die Rechtschreibpr³fung dieser Tabelle ist abgeschlossen! */
+ Text = "Die Rechtschreibprüfung dieser Tabelle ist abgeschlossen!" ;
+ Text [ ENGLISH ] = "Spell checking for this table has finished." ;
+ Text [ english_us ] = "The spellcheck of this sheet has been completed." ;
+ Text [ italian ] = "Il controllo ortografico di questa tabella è concluso" ;
+ Text [ spanish ] = "¡Se ha finalizado la revisión ortográfica de esta hoja!" ;
+ Text [ french ] = "La vérification de l'orthographe est terminée." ;
+ Text [ dutch ] = "Die spellingcontrole van dit werkblad is beëindigd!" ;
+ Text [ swedish ] = "Rättstavningskontrollen av denna tabell är avslutad." ;
+ Text [ danish ] = "Stavekontrollen er afsluttet for dette ark!" ;
+ Text [ portuguese ] = "A verificação ortográfica está concluída!" ;
+ Text [ portuguese_brazilian ] = "Die Rechtschreibprüfung dieser Tabelle ist abgeschlossen!" ;
+ Text[ chinese_simplified ] = "ÒѾ­Íê³É¶ÔÕâ¸ö¹¤×÷±íµÄÕý×Ö·¨¼ì²é£¡";
+ Text[ russian ] = "Ïðîâåðêà îðôîãðàôèè ýòîãî ëèñòà çàêîí÷åíà!";
+ Text[ polish ] = "Sprawdzanie pisowni w tym arkuszu zosta³o zakoñczone!";
+ Text[ japanese ] = "‚±‚Ì•\\‚Ì•¶ÍZ³‚ÍI‚í‚è‚Ü‚µ‚½!";
+ Text[ chinese_traditional ] = "³o­Ó¤u§@ªíªº«÷¦rÀˬd¤w¸g§¹¦¨¡I";
+ Text[ arabic ] = "Êã ÇáÇäÊåÇÁ ãä ÇáÊÏÞíÞ ÇáÅãáÇÆí Ýí åÐÇ ÇáÌÏæá!";
+ Text[ greek ] = "O ïñèïãñáöéêüò Ýëåã÷ïò áõôïý ôïõ ðßíáêá ïëïêëçñþèçêå.";
+ Text[ korean ] = "ÀÌ ½ÃÆ®¿¡´ëÇÑ ¸ÂÃã¹ý °Ë»ç°¡ ³¡³µ½À´Ï´Ù.";
+ Text[ turkish ] = "Bu tablonun yazým denetimi tamamlandý!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NOLANGERR
+ {
+ Text = "Keine Sprache eingestellt" ;
+ Text [ ENGLISH ] = "No language set" ;
+ Text [ dutch ] = "Geen taal ingesteld" ;
+ Text [ english_us ] = "No language set" ;
+ Text [ italian ] = "Nessuna lingua impostata" ;
+ Text [ spanish ] = "Ningún idioma especificado" ;
+ Text [ french ] = "Pas de langue activée" ;
+ Text [ swedish ] = "Inget språk inställt" ;
+ Text [ danish ] = "Ingen sprog indstillet" ;
+ Text [ portuguese_brazilian ] = "Keine Sprache eingestellt" ;
+ Text [ portuguese ] = "A língua não foi especificada." ;
+ Text[ chinese_simplified ] = "ûÓÐÉ趨ÈκÎÓïÑÔ";
+ Text[ russian ] = "ßçûê íå óñòàíîâëåí";
+ Text[ polish ] = "Nie ustawiono jêzyka";
+ Text[ japanese ] = "‚Ç‚ÌŒ¾Œê‚àݒ肳‚ê‚Ä‚¢‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¨S¦³³]©w¥ô¦ó»y¨¥";
+ Text[ arabic ] = "áã íÊã ÊÚííä ÇááÛÉ";
+ Text[ greek ] = "Äåí ïñßóôçêå ãëþóóá";
+ Text[ korean ] = "¾ð¾î ¼¼Æ®°¡ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Dil seçilmedi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_INSERT_TAB
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Tabelle einfügen : Tabelle einf³gen */
+ Text = "Tabellen einfügen" ;
+ Text [ ENGLISH ] = "Insert table" ;
+ Text [ english_us ] = "Insert Sheet" ;
+ Text [ italian ] = "Inserisci tabella" ;
+ Text [ spanish ] = "Insertar hoja" ;
+ Text [ french ] = "Insérer une feuille" ;
+ Text [ dutch ] = "Werkblad invoegen" ;
+ Text [ swedish ] = "Infoga tabeller" ;
+ Text [ danish ] = "Indsæt ark" ;
+ Text [ portuguese ] = "Inserir folha" ;
+ Text [ portuguese_brazilian ] = "Tabelle einfügen" ;
+ Text[ chinese_simplified ] = "²åÈ빤×÷±í";
+ Text[ russian ] = "Âñòàâèòü ëèñò";
+ Text[ polish ] = "Wstaw arkusz";
+ Text[ japanese ] = "•\\‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¤u§@ªí";
+ Text[ arabic ] = "ÅÏÑÇÌ ÌÏÇæá";
+ Text[ greek ] = "ÅéóáãùãÞ ðßíáêá";
+ Text[ korean ] = "½ÃÆ® »ðÀÔ";
+ Text[ turkish ] = "Tablo ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_DELETE_TAB
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Tabelle löschen : Tabelle l÷schen */
+ Text = "Tabellen löschen" ;
+ Text [ ENGLISH ] = "Delete Sheets" ;
+ Text [ dutch ] = "Werkblad wissen" ;
+ Text [ english_us ] = "Delete Sheets" ;
+ Text [ italian ] = "Elimina tabelle" ;
+ Text [ spanish ] = "Eliminar hoja" ;
+ Text [ french ] = "Supprimer des feuilles" ;
+ Text [ swedish ] = "Radera tabeller" ;
+ Text [ danish ] = "Slet ark" ;
+ Text [ portuguese ] = "Eliminar folha" ;
+ Text [ portuguese_brazilian ] = "Tabelle löschen" ;
+ Text[ chinese_simplified ] = "ɾ³ý¹¤×÷±í";
+ Text[ russian ] = "Óäàëèòü ëèñò";
+ Text[ polish ] = "Usuñ arkusz";
+ Text[ japanese ] = "•\\‚ðíœ";
+ Text[ chinese_traditional ] = "§R°£¤u§@ªí";
+ Text[ arabic ] = "ÍÐÝ ÇáÌÏÇæá";
+ Text[ greek ] = "ÄéáãñáöÞ ðéíÜêùí";
+ Text[ korean ] = "½ÃÆ® »èÁ¦";
+ Text[ turkish ] = "Tabloyu sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_RENAME_TAB
+ {
+ Text = "Tabelle umbenennen" ;
+ Text [ ENGLISH ] = "Rename table" ;
+ Text [ english_us ] = "Rename Sheet" ;
+ Text [ italian ] = "Rinomina tabella" ;
+ Text [ spanish ] = "Cambiar nombre a la hoja" ;
+ Text [ french ] = "Renommer feuille" ;
+ Text [ dutch ] = "Werkbladnaam wijzigen" ;
+ Text [ swedish ] = "Byt namn på tabell" ;
+ Text [ danish ] = "Omdøb ark" ;
+ Text [ portuguese ] = "Mudar nome da folha" ;
+ Text [ portuguese_brazilian ] = "Tabelle umbenennen" ;
+ Text[ chinese_simplified ] = "ÖØÃüÃû¹¤×÷±í";
+ Text[ russian ] = "Ïåðåèìåíîâàòü ëèñò";
+ Text[ polish ] = "Zmieñ nazwê arkusza";
+ Text[ japanese ] = "•\\‚Ì–¼‘O•ÏX";
+ Text[ chinese_traditional ] = "­«·s©R¦W¤u§@ªí";
+ Text[ arabic ] = "ÅÚÇÏÉ ÊÓãíÉ ÇáÌÏæá";
+ Text[ greek ] = "Ìåôïíïìáóßá ðßíáêá";
+ Text[ korean ] = "½ÃÆ® À̸§ ¹Ù²Ù±â";
+ Text[ turkish ] = "Tabloyu yeniden adlandýr";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_MOVE_TAB
+ {
+ Text = "Tabellen verschieben" ;
+ Text [ ENGLISH ] = "Move Sheets" ;
+ Text [ dutch ] = "Werkblad verplaatsen" ;
+ Text [ english_us ] = "Move Sheets" ;
+ Text [ italian ] = "Sposta tabella" ;
+ Text [ spanish ] = "Desplazar hojas" ;
+ Text [ french ] = "Déplacer feuilles" ;
+ Text [ swedish ] = "Flytta tabeller" ;
+ Text [ danish ] = "Flyt ark" ;
+ Text [ portuguese ] = "Mover folhas" ;
+ Text [ portuguese_brazilian ] = "Tabelle verschieben" ;
+ Text[ chinese_simplified ] = "Òƶ¯¹¤×÷±í";
+ Text[ russian ] = "Ïåðåìåñòèòü ëèñòû";
+ Text[ polish ] = "Przenieœ arkusz";
+ Text[ japanese ] = "•\\‚̈ړ®";
+ Text[ chinese_traditional ] = "²¾°Ê¤u§@ªí";
+ Text[ arabic ] = "ÊÍÑíß ÌÏÇæá";
+ Text[ greek ] = "Ìåôáêßíçóç ðéíÜêùí";
+ Text[ korean ] = "½ÃÆ® À̵¿";
+ Text[ turkish ] = "Tablolarý taþý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_COPY_TAB
+ {
+ Text = "Tabellen kopieren" ;
+ Text [ ENGLISH ] = "Copy Sheets" ;
+ Text [ dutch ] = "Werkblad kopiëren" ;
+ Text [ english_us ] = "Copy Sheet" ;
+ Text [ italian ] = "Copia tabella" ;
+ Text [ spanish ] = "Copiar hoja" ;
+ Text [ french ] = "Copier feuille" ;
+ Text [ swedish ] = "Kopiera tabeller" ;
+ Text [ danish ] = "Kopier ark" ;
+ Text [ portuguese ] = "Copiar folha" ;
+ Text [ portuguese_brazilian ] = "Tabelle kopieren" ;
+ Text[ chinese_simplified ] = "¸´Öƹ¤×÷±í";
+ Text[ russian ] = "Êîïèðîâàòü ëèñò";
+ Text[ polish ] = "Kopiuj arkusz";
+ Text[ japanese ] = "•\\‚̺Ëß°";
+ Text[ chinese_traditional ] = "½Æ»s¤u§@ªí";
+ Text[ arabic ] = "äÓÎ ÇáÌÏÇæá";
+ Text[ greek ] = "ÁíôéãñáöÞ ðßíáêá";
+ Text[ korean ] = "½ÃÆ® º¹»ç";
+ Text[ turkish ] = "Tabloyu kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_APPEND_TAB
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Tabelle anhängen : Tabelle anhõngen */
+ Text = "Tabelle anhängen" ;
+ Text [ ENGLISH ] = "Append table" ;
+ Text [ dutch ] = "Werkblad toevoegen" ;
+ Text [ english_us ] = "Append sheet" ;
+ Text [ italian ] = "Allega tabella" ;
+ Text [ spanish ] = "Añadir hoja" ;
+ Text [ french ] = "Annexer la feuille" ;
+ Text [ swedish ] = "Tillfoga tabell" ;
+ Text [ danish ] = "Vedhæft ark" ;
+ Text [ portuguese ] = "Anexar folha" ;
+ Text [ portuguese_brazilian ] = "Tabelle anhängen" ;
+ Text[ chinese_simplified ] = "¸½¼Ó¹¤×÷±í";
+ Text[ russian ] = "Äîáàâèòü ëèñò";
+ Text[ polish ] = "Do³¹cz arkusz";
+ Text[ japanese ] = "•\\‚Ì“Y•t";
+ Text[ chinese_traditional ] = "ªþ¥[¤u§@ªí";
+ Text[ arabic ] = "ÅÑÝÇÞ ÌÏæá";
+ Text[ greek ] = "Ðñïóêüëëçóç ðßíáêá";
+ Text[ korean ] = "½ÃÆ® ÷ºÎ";
+ Text[ turkish ] = "Tablo ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_SHOWTAB
+ {
+ Text = "Tabelle einblenden" ;
+ Text [ ENGLISH ] = "Show table" ;
+ Text [ english_us ] = "Show Sheet" ;
+ Text [ italian ] = "Mostra tabella" ;
+ Text [ spanish ] = "Mostrar hoja" ;
+ Text [ french ] = "Afficher feuille" ;
+ Text [ dutch ] = "Werkblad weergeven" ;
+ Text [ swedish ] = "Visa tabell" ;
+ Text [ danish ] = "Vis ark" ;
+ Text [ portuguese ] = "Mostrar folha" ;
+ Text [ portuguese_brazilian ] = "Tabelle einblenden" ;
+ Text[ chinese_simplified ] = "ÏÔʾ¹¤×÷±í";
+ Text[ russian ] = "Ïîêàçàòü ëèñò";
+ Text[ polish ] = "Poka¿ arkusz";
+ Text[ japanese ] = "•\\‚Ì•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü¤u§@ªí";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÌÏæá";
+ Text[ greek ] = "ÅìöÜíéóç ðßíáêá";
+ Text[ korean ] = "½ÃÆ® º¸À̱â";
+ Text[ turkish ] = "Tabloyu görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_HIDETAB
+ {
+ Text = "Tabelle ausblenden" ;
+ Text [ ENGLISH ] = "Hide table" ;
+ Text [ dutch ] = "Werkblad verbergen" ;
+ Text [ english_us ] = "Hide sheet" ;
+ Text [ italian ] = "Nacondi la tabella" ;
+ Text [ spanish ] = "Ocultar hoja" ;
+ Text [ french ] = "Masquer feuille" ;
+ Text [ swedish ] = "Dölj tabell" ;
+ Text [ danish ] = "Skjul ark" ;
+ Text [ portuguese ] = "Ocultar folha" ;
+ Text [ portuguese_brazilian ] = "Tabelle ausblenden" ;
+ Text[ chinese_simplified ] = "ÒþÈ빤×÷±í";
+ Text[ russian ] = "Ñêðûòü ëèñò";
+ Text[ polish ] = "Ukryj arkusz";
+ Text[ japanese ] = "•\\‚ð•\\Ž¦‚µ‚È‚¢";
+ Text[ chinese_traditional ] = "Áô¤J¤u§@ªí";
+ Text[ arabic ] = "ÅÎÝÇÁ ÇáÌÏæá";
+ Text[ greek ] = "Áðüêñõøç ðßíáêá";
+ Text[ korean ] = "½ÃÆ® ¼û±â±â";
+ Text[ turkish ] = "Tabloyu gizle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHART_MAINTITLE
+ {
+ Text = "Haupttitel" ;
+ Text [ ENGLISH ] = "Maintitle" ;
+ Text [ dutch ] = "Hoofdtitel" ;
+ Text [ english_us ] = "Main Title" ;
+ Text [ italian ] = "Titolo principale" ;
+ Text [ spanish ] = "Título principal" ;
+ Text [ french ] = "Titre principal" ;
+ Text [ swedish ] = "Huvudrubrik" ;
+ Text [ danish ] = "Hovedoverskrift" ;
+ Text [ portuguese ] = "Título principal" ;
+ Text [ portuguese_brazilian ] = "Haupttitel" ;
+ Text[ chinese_simplified ] = "Ö÷±êÌâ";
+ Text[ russian ] = "Ãëàâíûé çàãîëîâîê";
+ Text[ polish ] = "G³ówny tytu³";
+ Text[ japanese ] = "Ò²ÝÀ²ÄÙ";
+ Text[ chinese_traditional ] = "¥D¼ÐÃD";
+ Text[ arabic ] = "ÇáÚäæÇä ÇáÑÆíÓí";
+ Text[ greek ] = "Êýñéïò ôßôëïò";
+ Text[ korean ] = "ÁÖ Á¦¸ñ";
+ Text[ turkish ] = "Ana baþlýk";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHART_SUBTITLE
+ {
+ Text = "Untertitel" ;
+ Text [ ENGLISH ] = "Subtitle" ;
+ Text [ english_us ] = "Subtitle" ;
+ Text [ italian ] = "Sottotitolo" ;
+ Text [ spanish ] = "Subtítulo" ;
+ Text [ french ] = "Sous-titre" ;
+ Text [ dutch ] = "Ondertitel" ;
+ Text [ swedish ] = "Underrubrik" ;
+ Text [ danish ] = "Undertitel" ;
+ Text [ portuguese ] = "Subtítulo" ;
+ Text [ portuguese_brazilian ] = "Untertitel" ;
+ Text[ chinese_simplified ] = "·Ö±êÌâ";
+ Text[ russian ] = "Ïîäçàãîëîâîê";
+ Text[ polish ] = "Podtytu³";
+ Text[ japanese ] = "»ÌÞÀ²ÄÙ";
+ Text[ chinese_traditional ] = "¤À¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÝÑÚí";
+ Text[ greek ] = "Õðüôéôëïò";
+ Text[ korean ] = "ºÎ Á¦";
+ Text[ turkish ] = "Alt baþlýk";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHART_XTITLE
+ {
+ Text = "X-Achsentitel" ;
+ Text [ ENGLISH ] = "X-Axis" ;
+ Text [ english_us ] = "X axis title" ;
+ Text [ italian ] = "Titolo asse X" ;
+ Text [ spanish ] = "Título del eje X" ;
+ Text [ french ] = "Titre de l'axe X" ;
+ Text [ dutch ] = "Titel X-as" ;
+ Text [ swedish ] = "X-axeltitel" ;
+ Text [ danish ] = "X-aksetitel" ;
+ Text [ portuguese ] = "Título do eixo X" ;
+ Text [ portuguese_brazilian ] = "X-Achsentitel" ;
+ Text[ chinese_simplified ] = "X Öá±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê îñè X";
+ Text[ polish ] = "Tytu³ osi X";
+ Text[ japanese ] = "XŽ²À²ÄÙ";
+ Text[ chinese_traditional ] = "X-¶b¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÇáãÍæÑ Ó";
+ Text[ greek ] = "Ôßôëïò Üîïíá ×";
+ Text[ korean ] = "XÃà Á¦¸ñ";
+ Text[ turkish ] = "X-Eksen deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHART_YTITLE
+ {
+ Text = "Y-Achsentitel" ;
+ Text [ ENGLISH ] = "Y-Axis" ;
+ Text [ english_us ] = "Y axis title" ;
+ Text [ italian ] = "Titolo asse Y" ;
+ Text [ spanish ] = "Título del eje Y" ;
+ Text [ french ] = "Titre de l'axe Y" ;
+ Text [ dutch ] = "Titel Y-as" ;
+ Text [ swedish ] = "Y-axeltitel" ;
+ Text [ danish ] = "Y-aksetitel" ;
+ Text [ portuguese ] = "Título do eixo Y" ;
+ Text [ portuguese_brazilian ] = "Y-Achsentitel" ;
+ Text[ chinese_simplified ] = "Y Öá±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê îñè Y";
+ Text[ polish ] = "Tytu³ osi Y";
+ Text[ japanese ] = "YŽ²À²ÄÙ";
+ Text[ chinese_traditional ] = "Y-¶b¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÇáãÍæÑ Õ";
+ Text[ greek ] = "Ôßôëïò Üîïíá Y";
+ Text[ korean ] = "Y Ãà Á¦¸ñ";
+ Text[ turkish ] = "Y-Eksen deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHART_ZTITLE
+ {
+ Text = "Z-Achsentitel" ;
+ Text [ ENGLISH ] = "Z-Axis" ;
+ Text [ english_us ] = "Z axis title" ;
+ Text [ italian ] = "Titolo asse Z" ;
+ Text [ spanish ] = "Título del eje Z" ;
+ Text [ french ] = "Titre de l'axe Z" ;
+ Text [ dutch ] = "Titel Z-as" ;
+ Text [ swedish ] = "Z-axeltitel" ;
+ Text [ danish ] = "Z-aksetitel" ;
+ Text [ portuguese ] = "Título do eixo Z" ;
+ Text [ portuguese_brazilian ] = "Z-Achsentitel" ;
+ Text[ chinese_simplified ] = "Z Öá±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê îñè Z";
+ Text[ polish ] = "Tytu³ osi Z";
+ Text[ japanese ] = "ZŽ²À²ÄÙ";
+ Text[ chinese_traditional ] = "Z-¶b¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ÇáãÍæÑ Ú";
+ Text[ greek ] = "Ôßôëïò Üîïíá Z";
+ Text[ korean ] = "ZÃà Á¦¸ñ";
+ Text[ turkish ] = "Z-Eksen deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ABSREFLOST
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die neue Tabelle enthält absolute Referenzen auf andere Tabellen, die nicht mehr stimmen müssen! : Die neue Tabelle enthõlt absolute Referenzen auf andere Tabellen, die nicht mehr stimmen m³ssen! */
+ Text = "Die neue Tabelle enthält absolute Referenzen auf andere Tabellen, die nicht mehr stimmen müssen!" ;
+ Text [ ENGLISH ] = "The new table contains absolute references to other tables which may be incorrect!" ;
+ Text [ english_us ] = "The new table contains absolute references to other tables which may be incorrect!" ;
+ Text [ italian ] = "La nuova tabella contiene riferimenti assoluti ad altre tabelle che non sono più necessariamente corrette" ;
+ Text [ spanish ] = "La nueva tabla contiene referencias absolutas a otras tablas que posiblemente no son correctas." ;
+ Text [ french ] = "La nouvelle table contient des références absolues qui peuvent éventuellement être incorrectes !" ;
+ Text [ dutch ] = "De nieuwe tabel bevat absolute verwijzingen naar andere tabellen, die niet meer hoeven overeen te stemmen" ;
+ Text [ swedish ] = "Den nya tabellen innehåller absoluta referenser till andra tabeller, som möjligtvis inte längre stämmer!" ;
+ Text [ danish ] = "Den ny tabel indeholder absolute referencer til andre tabeller, som muligvis ikke mere er korrekte!" ;
+ Text [ portuguese_brazilian ] = "Die neue Tabelle enthält absolute Referenzen auf andere Tabellen, die nicht mehr stimmen müssen!" ;
+ Text [ portuguese ] = "A nova tabela contém referências absolutas a outras tabelas que poderão estar incorrectas!" ;
+ Text[ chinese_simplified ] = "ÐµĹ¤×÷±íº¬Óоø¶ÔµÄÖ¸ÏòÆäËü¹¤×÷±íµÄÒýÓã¬ÕâЩÆäËüµÄ¹¤×÷±í¿ÉÄܲ»ÕýÈ·£¡";
+ Text[ russian ] = "Íîâàÿ òàáëèöà ñîäåðæèò àáñîëþòíûå ññûëêè íà äðóãèå òàáëèöû, êîòîðûå ñêîðåå âñåãî íåïðàâèëüíû!";
+ Text[ polish ] = "Nowa tabela zawiera bezwzglêdne adresy do innych tabel, które s¹ niekoniecznie prawid³owe!";
+ Text[ japanese ] = "V‚µ‚¢•\\‚ͤ‡’v‚µ‚È‚¢‘¼‚Ì•\\‚Ö‚Ìâ‘ÎŽQÆ‚ðŠÜ‚Ý‚Ü‚·!";
+ Text[ chinese_traditional ] = "·sªº¤u§@ªí§t¦³µ´¹ïªº«ü¦V¨ä¥¦¤u§@ªíªº°Ñ·Ó¡A³o¨Ç¨ä¥¦ªº¤u§@ªí¥i¯à¦³¿ù»~¡I";
+ Text[ arabic ] = "íÍÊæí ÇáÌÏæá ÇáÌÏíÏ Úáì ÅÔÇÑÇÊ ãØáÞÉ Åáì ÌÏÇæá ÃÎÑì ÞÏ Êßæä ÛíÑ ÕÍíÍÉ!";
+ Text[ greek ] = "Ï íÝïò ðßíáêáò ðåñéÝ÷åé áðüëõôåò áíáöïñÝò ãéá Üëëïõò ðßíáêåò , ïé ïðïßåò äåí åßíáé ïðùóäÞðïôå Ýãêõñåò!";
+ Text[ korean ] = "»õ·Î¿î Å×À̺íÀº´Ù¸¥ Å×À̺í·ÎÀÇ À߸øµÈ Àý´ë ÂüÁ¶¸¦ Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù !";
+ Text[ turkish ] = "Yeni tabloda bulunan diðer tablolar ile ilgili mutlak referanslar doðru olmayabilir!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NAMECONFLICT
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wegen einer Namensgleichheit wurde im Zieldokument ein bestehender Bereichsname verändert! : Wegen einer Namensgleichheit wurde im Zieldokument ein bestehender Bereichsname verõndert! */
+ Text = "Wegen einer Namensgleichheit wurde im Zieldokument ein bestehender Bereichsname verändert!" ;
+ Text [ ENGLISH ] = "Because of identical names a rangename in the destination document was altered!" ;
+ Text [ english_us ] = "Due to identical names, an existing range name in the destination document has been altered!" ;
+ Text [ italian ] = "Nel documento destinazione, a causa di nomi uguali, è stato cambiato un nome di area!" ;
+ Text [ spanish ] = "¡Debido a la igualdad de nombres se ha alterado el nombre existente de un área del documento!" ;
+ Text [ french ] = "Un nom de section existant dans le document cible a dû être changé parce qu'il faisait double emploi !" ;
+ Text [ dutch ] = "Wegens identieke namen werd in het doeldocument een bestaande bereiksnaam veranderd." ;
+ Text [ swedish ] = "På grund av identiska namn blev ett kategorinamn i måldokumentet ändrat!" ;
+ Text [ danish ] = "På grund af identiske navne blev et eksisterende områdenavn i destinationsdokumentet ændret!" ;
+ Text [ portuguese ] = "Devido a nomes idênticos foi modificado o nome de uma área no documento de destino!" ;
+ Text [ portuguese_brazilian ] = "Wegen einer Namensgleichheit wurde im Zieldokument ein bestehender Bereichsname verändert!" ;
+ Text[ chinese_simplified ] = "ÒòΪÃû³ÆÏàͬ£¬Ä¿±êÎĵµÄÚµÄÇøÓòÃû³ÆÒѾ­±»¸ü¸Ä£¡";
+ Text[ russian ] = "Èç-çà èäåíòè÷íîñòè èìåí èçìåíåíî ñóùåñòâóþùåå èìÿ îáëàñòè êîíå÷íîãî äîêóìåíòà!";
+ Text[ polish ] = "Ze wzglêdu na identyczne nazwy zosta³a zmieniona nazwa obszaru w dokumencie docelowym!";
+ Text[ japanese ] = "–¼‘O‚ª“¯ˆê‚Ì‚½‚ß –Ú•W‚ÌÃÞ¨Ú¸ÄØ‚ÉŠù‘¶‚·‚é”͈͖¼‚ª•ÏX‚³‚ê‚Ü‚µ‚½!";
+ Text[ chinese_traditional ] = "¦]¬°¦WºÙ¬Û¦P¡A¥Ø¼Ð¤å¥ó¤ºªº°Ï°ì¦WºÙ¤w¸g³QÅܧó¡I";
+ Text[ arabic ] = "äÙÑÇð áÊÔÇÈå ÇáÃÓãÇÁ¡ Êã ÊÛííÑ ÇÓã äØÇÞ ãæÌæÏ ãÓÈÞÇð Ýí ÇáãÓÊäÏ ÇáåÏÝ!";
+ Text[ greek ] = "Ëüãù ôçò ôáýôéóçò ïíüìáôïò Ýãéíå ôñïðïðïßçóç õðÜñ÷ïíôïò ïíüìáôïò ðåñéï÷Þò óôï Ýããñáöï ðñïïñéóìïý!";
+ Text[ korean ] = "°°Àº À̸§À¸·Î ÀÎÇÏ¿©,¸ñÇ¥ ¹®¼­ÀÇ ±âÁ¸ÀÇ ¿µ¿ª À̸§ÀÌ ¹Ù²î¾ú½À´Ï´Ù!";
+ Text[ turkish ] = "Ad eþleþmesi nedeniyle hedef belgede mevcut bir aralýk adý deðiþtirildi!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ERR_AUTOFILTER
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? AutoFilter nicht möglich : AutoFilter nicht m÷glich */
+ Text = "AutoFilter nicht möglich" ;
+ Text [ ENGLISH ] = "AutoFilter not allowed" ;
+ Text [ dutch ] = "AutoFilter niet mogelijk" ;
+ Text [ english_us ] = "AutoFilter not possible" ;
+ Text [ italian ] = "Filtro automatico non possibile" ;
+ Text [ spanish ] = "El AutoFiltro no es posible" ;
+ Text [ french ] = "AutoFiltre impossible" ;
+ Text [ swedish ] = "AutoFilter omöjligt" ;
+ Text [ danish ] = "AutoFilter ikke mulig" ;
+ Text [ portuguese ] = "Impossível AutoFiltro." ;
+ Text [ portuguese_brazilian ] = "AutoFilter nicht möglich" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨Ê¹ÓÃ×Ô¶¯É¸Ñ¡";
+ Text[ russian ] = "Àâòîôèëüòð íå âîçìîæåí";
+ Text[ polish ] = "Autofiltr niemo¿liwy";
+ Text[ japanese ] = "µ°Ą̈ÙÀ‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk¨Ï¥Î¦Û°Ê¿z¿ï";
+ Text[ arabic ] = "ÇáÝáÊÑ ÇáÊáÞÇÆí ÛíÑ ããßä";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé ÁõôïÖßëôñï";
+ Text[ korean ] = "ÀÚµ¿ ÇÊÅÍ ºÒ°¡´É";
+ Text[ turkish ] = "Otomatik filtre kullanýlamaz";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SEARCHANDREPLACE_1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? StarCalc hat bis zum Anfang der Tabelle gesucht. Möchten Sie die Suche am Tabellenende fortsetzen? : StarCalc hat bis zum Anfang der Tabelle gesucht. M÷chten Sie die Suche am Tabellenende fortsetzen? */
+ Text = "StarOffice Calc hat bis zum Anfang der Tabelle gesucht. Möchten Sie die Suche am Tabellenende fortsetzen?" ;
+ Text [ ENGLISH ] = "StarCalc has searched to the beginning of the table. Do you want to continue at the end?" ;
+ Text [ english_us ] = "StarOffice Calc has searched to the beginning of the sheet. Do you want to continue at the end?" ;
+ Text [ italian ] = "StarOffice Calc ha effettuato la ricerca fino all'inizio della tabella. Volete continuare dalla fine?" ;
+ Text [ spanish ] = "StarOffice Calc ha buscado hasta el comienzo de la hoja. ¿Desea continuar la búsqueda por el final?" ;
+ Text [ french ] = "StarOffice Calc a atteint le début du classeur. Souhaitez-vous reprendre la recherche à la fin du classeur ?" ;
+ Text [ dutch ] = "StarOffice Calc heeft tot aan het begin van het werkblad gezocht. Wilt u het zoeken aan het einde voortzetten?" ;
+ Text [ swedish ] = "StarOffice Calc har sökt till början av tabellen.Vill Du att sökningen skall fortsätta vid tabellens slut?" ;
+ Text [ danish ] = "StarOffice Calc har søgt til begyndelsen af arket. Vil du fortsætte søgningen fra arkets slutning?" ;
+ Text [ portuguese ] = "O StarOffice Calc procurou até ao princípio da folha. Deseja continuar a procura no fim?" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc hat bis zum Anfang der Tabelle gesucht. Möchten Sie die Suche am Tabellenende fortsetzen?" ;
+ Text[ chinese_simplified ] = "StarOffice Calc ÒѾ­ËÑÑ°µ½¹¤×÷±íÊ׶ˡ£Òª×Ô¹¤×÷±íβ¶Ë¼ÌÐøËÑÑ°Âð£¿";
+ Text[ russian ] = "StarOffice Calc îñóùåñòâèë ïîèñê â íà÷àëå ëèñòà. Ïðîäîëæèòü ïîèñê â êîíöå ëèñòà?";
+ Text[ polish ] = "StarOffice Calc szuka³ do pocz¹tku arkusza. Czy chcesz kontynuowaæ wyszukiwanie na koñcu arkusza?";
+ Text[ japanese ] = "StarOffice Calc ‚Í•\\‚ÌŽn‚ß‚Ü‚ÅŒŸõ‚µ‚Ü‚µ‚½B•\\‚ÌI‚è‚É–ß‚Á‚ÄŒŸõ‚𑱂¯‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "StarOffice Calc ¤w¸g´M§ä¨ì¤u§@ªí­ººÝ¡C­nÄ~Äò´M§ä¨ì¤u§@ªí§ÀºÝ¡H";
+ Text[ arabic ] = "ÈÍË StarOffice Calc ÍÊì ÈÏÇíÉ ÇáÌÏæá. åá ÊÑíÏ ãÊÇÈÚÉ ÇáÈÍË ÚäÏ äåÇíÉ ÇáÌÏæá¿";
+ Text[ greek ] = "Ôï StarOffice Calc åêôÝëåóå ôçí áíáæÞôçóç ùò ôçí áñ÷Þ ôïõ ðßíáêá. ÈÝëåôå íá óõíå÷éóôåß ç áíáæÞôçóç óôï ôÝëïò ôïõ ðßíáêá;";
+ Text[ korean ] = "StarOffice Calc ´Â ½ÃÆ®ÀÇ ½ÃÀۺκÐÀ» °Ë»öÇß½À´Ï´Ù. ¸¶Áö¸· ±îÁö °è¼Ó ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "StarOffice Calc tablonun baþýna kadar aradý. Aramaya tablo sonunda devam etmek istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SEARCHANDREPLACE_2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? StarCalc hat bis zum Ende der Tabelle gesucht. Möchten Sie die Suche am Tabellenanfang fortsetzen? : StarCalc hat bis zum Ende der Tabelle gesucht. M÷chten Sie die Suche am Tabellenanfang fortsetzen? */
+ Text = "StarOffice Calc hat bis zum Ende der Tabelle gesucht. Möchten Sie die Suche am Tabellenanfang fortsetzen?" ;
+ Text [ ENGLISH ] = "StarCalc has searched to the end of the table. Do you want to continue at the beginning?" ;
+ Text [ english_us ] = "StarOffice Calc has searched to the end of the sheet. Do you want to continue at the beginning?" ;
+ Text [ italian ] = "StarOffice Calc ha effettuato la ricerca fino alla fine della tabella. Volete continuare dall'inizio?" ;
+ Text [ spanish ] = "StarOffice Calc ha buscado hasta el final de la hoja. ¿Desea continuar la búsqueda desde el comienzo?" ;
+ Text [ french ] = "StarOffice Calc a atteint la fin du classeur. Souhaitez-vous reprendre la recherche au début du classeur ?" ;
+ Text [ dutch ] = "StarOffice Calc heeft tot aan het einde van het werkblad gezocht. Wilt u het zoeken aan het begin voortzetten?" ;
+ Text [ swedish ] = "StarOffice Calc har sökt till slutet av tabellen.Vill Du att sökningen skall fortsätta i tabellens början?" ;
+ Text [ danish ] = "StarOffice Calc har søgt til slutningen af arket. Vil du fortsætte søgningen fra arkets begyndelse?" ;
+ Text [ portuguese ] = "O StarOffice Calc procurou até ao fim da folha. Deseja continuar a procura no princípio?" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc hat bis zum Ende der Tabelle gesucht. Möchten Sie die Suche am Tabellenanfang fortsetzen?" ;
+ Text[ chinese_simplified ] = "StarOffice Calc ÒѾ­ËÑÑ°µ½¹¤×÷±íµÄβ¶Ë¡£Òª×Ô¹¤×÷±íÊ׶˼ÌÐøËÑÑ°Âð£¿";
+ Text[ russian ] = "StarOffice Calc îñóùåñòâèë ïîèñê â êîíöå ëèñòà. Ïðîäîëæèòü ïîèñê â íà÷àëå ëèñòà?";
+ Text[ polish ] = "StarOffice Calc szuka³ do koñca arkusza. Czy chcesz kontynuowaæ wyszukiwanie na pocz¹tku arkusza?";
+ Text[ japanese ] = "StarOffice Calc ‚Í•\\‚ÌI‚è‚Ü‚ÅŒŸõ‚µ‚Ü‚µ‚½B•\\‚ÌŽn‚ß‚É–ß‚Á‚ÄŒŸõ‚𑱂¯‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "StarOffice Calc ¤w¸g´M§ä¨ì¤u§@ªíªº§ÀºÝ¡C­nÄ~Äò¦b¤u§@ªí­ººÝ´M§ä¡H";
+ Text[ arabic ] = "ÈÍË StarOffice Calc ÍÊì äåÇíÉ ÇáÌÏæá. åá ÊÑíÏ ãÊÇÈÚÉ ÇáÈÍË ÚäÏ ÈÏÇíÉ ÇáÌÏæá¿";
+ Text[ greek ] = "Ôï StarOffice Calc åêôÝëåóå ôçí áíáæÞôçóç ùò ôï ôÝëïò ôïõ ðßíáêá. ÈÝëåôå íá óõíå÷éóôåß ç áíáæÞôçóç óôçí áñ÷Þ ôïõ ðßíáêá;";
+ Text[ korean ] = "StarOffice Calc ´Â ½ÃÆ®ÀÇ ¸¶Áö¸· ºÎºÐÀ» °Ë»öÇß½À´Ï´Ù. óÀ½ ºÎÅÍ °è¼Ó ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "StarOffice Calc tablonun sonuna kadar aradý. Aramaya tablo baþýndan devam etmek istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SEARCHANDREPLACE_3
+ {
+ Text = "Suchen & Ersetzen" ;
+ Text [ ENGLISH ] = "Search & replace" ;
+ Text [ english_us ] = "Find & Replace" ;
+ Text [ italian ] = "Cerca e sostituisci" ;
+ Text [ spanish ] = "Buscar y reemplazar" ;
+ Text [ french ] = "Rechercher & Remplacer" ;
+ Text [ dutch ] = "Zoeken&vervangen" ;
+ Text [ swedish ] = "Sök och ersätt" ;
+ Text [ danish ] = "Søg og erstat" ;
+ Text [ portuguese ] = "Localizar & Substituir" ;
+ Text [ portuguese_brazilian ] = "Suchen & Ersetzen" ;
+ Text[ chinese_simplified ] = "ËÑÑ°ºÍ¸üÌæ";
+ Text[ russian ] = "Íàéòè è Çàìåíèòü";
+ Text[ polish ] = "ZnajdŸ & Zamieñ";
+ Text[ japanese ] = "ŒŸõ‚Æ’uŠ·";
+ Text[ chinese_traditional ] = "´M§ä©M¥N´À";
+ Text[ arabic ] = "ÇáÈÍË æÇáÇÓÊÈÏÇá";
+ Text[ greek ] = "ÁíáæÞôçóç & ÁíôéêáôÜóôáóç";
+ Text[ korean ] = "ã±â & ¹Ù²Ù±â";
+ Text[ turkish ] = "Ara ve deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SEARCHANDREPLACE_4
+ {
+ Text = "StarOffice Calc hat bis zum Anfang des Dokuments gesucht. Möchten Sie die Suche am Dokumentende fortsetzen?" ;
+ Text [ english ] = "StarCalc has searched to the beginning of the document. Do you want to continue at the end?" ;
+ Text [ portuguese ] = "O StarOffice Calc procurou até ao início do documento. Deseja continuar no final do documento?" ;
+ Text [ english_us ] = "StarOffice Calc has searched to the beginning of the document. Do you want to continue at the end?" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc hat bis zum Anfang des Dokuments gesucht. Möchten Sie die Suche am Dokumentende fortsetzen?" ;
+ Text [ swedish ] = "StarOffice Calc har sökt till början på dokumentet. Vill Du att sökningen skall fortsätta i slutet på dokumentet?" ;
+ Text [ danish ] = "StarOffice Calc har søgt til begyndelsen af dokumentet. Vil du fortsætte søgningen fra dokumentets slutning?" ;
+ Text [ italian ] = "La ricerca effettuata da StarOffice Calc ha raggiunto l'inizio. Volete proseguire la ricerca dalla fine del documento?" ;
+ Text [ spanish ] = "StarOffice Calc ha buscado hasta el principio del documento.¿Desea continuar la búsqueda por el final del documento?" ;
+ Text [ french ] = "StarOffice Calc a atteint le début du classeur. Souhaitez-vous reprendre la recherche à la fin du classeur ?" ;
+ Text [ dutch ] = "StarOffice Calc heeft gezocht tot aan het begin van het document. Wilt u het zoeken aan het einde van het document voortzetten?" ;
+ Text[ chinese_simplified ] = "StarOffice Calc ÒѾ­ËÑÑ°µ½ÎĵµµÄÊ׶ˡ£Òª×ÔÎĵµÎ²¶Ë¼ÌÐøËÑÑ°Âð£¿";
+ Text[ russian ] = "StarOffice Calc îñóùåñòâèë ïîèñê â íàïðàâëåíèè ê íà÷àëó äîêóìåíòà. Ïðîäîëæèòü ïîèñê â íàïðàâëåíèè ê êîíöó äîêóìåíòà?";
+ Text[ polish ] = "StarOffice Calc szuka³ do pocz¹tku dokumentu. Czy chcesz kontynuowaæ wyszukiwanie na pocz¹tku dokumentu?";
+ Text[ japanese ] = "StarOffice Calc ‚ÍÄÞ·­ÒÝÄ‚ÌŽn‚ß‚Ü‚ÅŒŸõ‚µ‚Ü‚µ‚½BÄÞ·­ÒÝÄ‚ÌI‚è‚É–ß‚Á‚ÄŒŸõ‚𑱂¯‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "StarOffice Calc ¤w¸g´M§ä¨ì¤å¥ó­ººÝ¡C­nÄ~Äò¦b¤å¥ó§ÀºÝ´M§ä¡H";
+ Text[ arabic ] = "ÈÍË StarOffice Calc ÍÊì ÈÏÇíÉ ÇáãÓÊäÏ. åá ÊÑíÏ ãÊÇÈÚÉ ÇáÈÍË ÚäÏ äåÇíÉ ÇáãÓÊäÏ¿";
+ Text[ greek ] = "Ôï StarOffice Calc ïëïêëÞñùóå ôçí áíáæÞôçóç ùò ôçí áñ÷Þ ôïõ åããñÜöïõ. ÈÝëåôå íá óõíå÷éóôåß ç áíáæÞôçóç áðü ôï ôÝëïò ôïõ åããñÜöïõ;";
+ Text[ korean ] = "StarOffice Calc ´Â¹®¼­ÀÇ ½ÃÀۺκÐÀ» °Ë»öÇß½À´Ï´Ù. ¸¶Áö¸·±îÁö °è¼Ó ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "StarOffice Calc belgenin baþýna kadar aradý. Aramaya belge sonunda devam etmek istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MSSG_SEARCHANDREPLACE_5
+ {
+ Text = "StarOffice Calc hat bis zum Ende des Dokuments gesucht. Möchten Sie die Suche am Dokumentanfang fortsetzen?" ;
+ Text [ english ] = "StarCalc has searched to the end of the document. Do you want to continue at the beginning?" ;
+ Text [ portuguese ] = "O StarOffice Calc procurou até ao final do documento. Deseja continuar no início?" ;
+ Text [ english_us ] = "StarOffice Calc has searched to the end of the document. Do you want to continue at the beginning?" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc hat bis zum Ende des Dokuments gesucht. Möchten Sie die Suche am Dokumentanfang fortsetzen?" ;
+ Text [ swedish ] = "StarOffice Calc har sökt till slutet på dokumentet. Vill Du att sökningen skall fortsätta i början på dokumentet?" ;
+ Text [ danish ] = "StarOffice Calc har søgt til slutningen af dokumentet. Vil du fortsætte søgningen fra dokumentets begyndelse?" ;
+ Text [ italian ] = "La ricerca effettuata da StarOffice Calc ha raggiunto la fine. Volete proseguire la ricerca dall'inizio del documento?" ;
+ Text [ spanish ] = "StarOffice Calc ha buscado hasta el final del documento. ¿Desea continuar la búsqueda desde el principio del documento?" ;
+ Text [ french ] = "StarOffice Calc a atteint la fin du classeur. Souhaitez-vous reprendre la recherche au début du classeur ?" ;
+ Text [ dutch ] = "StarOffice Calc heeft gezocht tot aan het einde van het document. Wilt u het zoeken aan het begin van het document voortzetten?" ;
+ Text[ chinese_simplified ] = "StarOffice Calc ÒѾ­ËÑÑ°µ½ÎĵµµÄβ¶Ë¡£Òª×ÔÎĵµÊ׶˼ÌÐøËÑÑ°Âð£¿";
+ Text[ russian ] = "StarOffice Calc îñóùåñòâèë ïîèñê â íàïðàâëåíèè ê êîíöó äîêóìåíòà. Ïðîäîëæèòü ïîèñê â íàïðàâëåíèè ê íà÷àëó äîêóìåíòà?";
+ Text[ polish ] = "StarOffice Calc szuka³ do koñca dokumentu. Czy chcesz kontynuowaæ wyszukiwanie na pocz¹tku dokumentu?";
+ Text[ japanese ] = "StarOffice Calc ‚ÍÄÞ·­ÒÝÄ‚ÌI‚è‚Ü‚ÅŒŸõ‚µ‚Ü‚µ‚½BÄÞ·­ÒÝÄ‚ÌŽn‚ß‚É–ß‚Á‚ÄŒŸõ‚𑱂¯‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "StarOffice Calc ¤w¸g´M§ä¨ì¤å¥ó§ÀºÝ¡C­nÄ~Äò¦b¤å¥ó­ººÝ´M§ä¡H";
+ Text[ arabic ] = "ÈÍË StarOffice Calc ÍÊì äåÇíÉ ÇáãÓÊäÏ. åá ÊÑíÏ ãÊÇÈÚÉ ÇáÈÍË ÚäÏ ÈÏÇíÉ ÇáãÓÊäÏ¿";
+ Text[ greek ] = "Ôï StarOffice Calc ïëïêëÞñùóå ôçí áíáæÞôçóç ùò ôï ôÝëïò ôïõ åããñÜöïõ. ÈÝëåôå íá óõíå÷éóôåß ç áíáæÞôçóç áðü ôçí áñ÷Þ ôïõ åããñÜöïõ;";
+ Text[ korean ] = "StarOffice Calc ´Â ¹®¼­ÀÇ ¸¶Áö¸· ºÎºÐÀ» °Ë»öÇß½À´Ï´Ù. óÀ½ ºÎÅÍ °è¼Ó ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "StarOffice Calc belgenin sonuna kadar aradý. Aramaya belge baþýndan devam etmek istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CREATENAME_REPLACE
+ {
+ Text = "Vorhandene Definition von # ersetzen?" ;
+ Text [ ENGLISH ] = "Replace previous definition of #?" ;
+ Text [ dutch ] = "Bestaande definitie van # vervangen?" ;
+ Text [ english_us ] = "Replace existing definition of #?" ;
+ Text [ italian ] = "Sostituire la definizione presente di #?" ;
+ Text [ spanish ] = "¿Reemplazar la presente definición de #?" ;
+ Text [ french ] = "Remplacer la définition existante de # ?" ;
+ Text [ swedish ] = "Ersätta existerande definition av #?" ;
+ Text [ danish ] = "Skal de eksisterende definitioner erstattes af #?" ;
+ Text [ portuguese ] = "Substituir definição existente de #?" ;
+ Text [ portuguese_brazilian ] = "Vorhandene Definition von # ersetzen?" ;
+ Text[ chinese_simplified ] = "¸üÌæÏÖ´æµÄ¶¨Òå # £¿";
+ Text[ russian ] = "Çàìåíèòü èìåþùååñÿ îïðåäåëåíèå #?";
+ Text[ polish ] = "Zamieniæ istniej¹ce definicje #?";
+ Text[ japanese ] = "Šù¬‚Ì’è‹`‚ð#‚É’u‚«Š·‚¦‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "¥N´À²{¦sªº©w¸q # ¡H";
+ Text[ arabic ] = "åá ÊÑíÏ ÇÓÊÈÏÇá ÊÚÑíÝ # ÇáãæÌæÏ¿";
+ Text[ greek ] = "ÁíôéêáôÜóôáóç õðÜñ÷ïí ïñéóìïý ãéá #;";
+ Text[ korean ] = "#ÀÇ ±âÁ¸ Á¤ÀǸ¦ ¹Ù²Ù½Ã°Ú½À´Ï±î?";
+ Text[ turkish ] = "Mevcut # tanýmý deðiþtirilsin mi?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CREATENAME_MARKERR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Falsche Markierung für Bereichsnamen : Falsche Markierung f³r Bereichsnamen */
+ Text = "Falsche Markierung für Bereichsnamen" ;
+ Text [ ENGLISH ] = "Invalid area for rangenames" ;
+ Text [ dutch ] = "Ongeldige markering voor bereiknaam" ;
+ Text [ english_us ] = "Invalid selection for range names" ;
+ Text [ italian ] = "Contrassegno errato per i nomi delle aree" ;
+ Text [ spanish ] = "Selección incorrecta para nombre de área" ;
+ Text [ french ] = "Sélection incorrecte pour les noms de plages" ;
+ Text [ swedish ] = "Fel markering för områdesnamn" ;
+ Text [ danish ] = "Forkerte markeringer for områdenavne." ;
+ Text [ portuguese ] = "Selecção incorrecta para os nomes da área." ;
+ Text [ portuguese_brazilian ] = "Falsche Markierung für Bereichsnamen" ;
+ Text[ chinese_simplified ] = "ÇøÓòÃû³ÆµÄ´íÎóÑ¡Ôñ";
+ Text[ russian ] = "Íåïðàâèëüíîå âûäåëåíèå äëÿ èìåí îáëàñòè";
+ Text[ polish ] = "Nieprawid³owe oznaczenia dla nazw obszaru";
+ Text[ japanese ] = "”͈͂ª³‚µ‚­‘I‘ð‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "°Ï°ì¦WºÙªº¿ù»~¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ ÛíÑ ÕÇáÍ áÃÓãÇÁ äØÇÞ.";
+ Text[ greek ] = "ËÜèïò åðéëïãÞ ãéá ïíüìáôá ðåñéï÷þí";
+ Text[ korean ] = "¿µ¿ªÀ̸§¿¡ ´ëÇÑ À¯È¿ÇÏÁö ¾ÊÀº ¼±ÅÃ";
+ Text[ turkish ] = "Aralýk adlarý için geçersiz seçim";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CONSOLIDATE_ERR1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Verbindungen können nicht oberhalb der Quelldaten eingefügt werden. : Verbindungen k÷nnen nicht oberhalb der Quelldaten eingef³gt werden. */
+ Text = "Verbindungen können nicht oberhalb der Quelldaten eingefügt werden." ;
+ Text [ ENGLISH ] = "References cannot be inserted above the source data." ;
+ Text [ dutch ] = "Verbindingen kunnen niet boven brongegevens worden ingevoegd." ;
+ Text [ english_us ] = "References can not be inserted above the source data." ;
+ Text [ italian ] = "Non è possibile inserire collegamenti al di sopra dei dati sorgente" ;
+ Text [ spanish ] = "Referencias no pueden ser insertadas encima de los datos fuente." ;
+ Text [ french ] = "Impossible d'insérer des liaisons au-dessus des données de source." ;
+ Text [ swedish ] = "Förbindelser kan inte infogas ovanför källdata." ;
+ Text [ danish ] = "Forbindelser kan ikke indsættes ovenfor kildedata." ;
+ Text [ portuguese ] = "Impossível inserir referências acima dos dados-fonte." ;
+ Text [ portuguese_brazilian ] = "Verbindungen können nicht oberhalb der Quelldaten eingefügt werden." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨ÔÚÔ´Êý¾ÝÖ®ÉϼÓÈëÁ´½Ó¡£";
+ Text[ russian ] = "Âñòàâèòü ñâÿçü íàä èñõîäíûìè äàííûìè íåâîçìîæíî.";
+ Text[ polish ] = "Adresów nie mo¿na wpisaæ powy¿ej danych Ÿród³owych.";
+ Text[ japanese ] = "ŽQÆ‚Í¿°½ ÃÞ°À‚Ìã‚É‘}“ü‚Å‚«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "µLªk¦b·½¸ê®Æ¤§¤W¥[¤J±¶®|¡C";
+ Text[ arabic ] = "áÇ íãßä ÅÏÑÇÌ ÇáÇÊÕÇáÇÊ ÝæÞ ÈíÇäÇÊ ÇáãÕÏÑ.";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá åéóá÷èïýí óõíäÝóåéò ðÜíù áðü ôá äåäïìÝíá ðñïÝëåõóçò.";
+ Text[ korean ] = "ÂüÁ¶´Â ¼Ò½ºµ¥ÀÌÅÍ À§·Î »ðÀ﵃ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Referanslar, kaynak verilerinin üstünde eklenemez.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCENARIO_NOTFOUND
+ {
+ Text = "Szenario nicht gefunden" ;
+ Text [ ENGLISH ] = "Scenario not found" ;
+ Text [ english_us ] = "Scenario not found" ;
+ Text [ italian ] = "Scenario non trovato" ;
+ Text [ spanish ] = "No se ha encontrado el escenario" ;
+ Text [ french ] = "Scénario non trouvé" ;
+ Text [ dutch ] = "Scenario niet gevonden" ;
+ Text [ swedish ] = "Hittar inte scenario" ;
+ Text [ danish ] = "Scenarie blev ikke fundet" ;
+ Text [ portuguese ] = "Cenário não encontrado" ;
+ Text [ portuguese_brazilian ] = "Szenario nicht gefunden" ;
+ Text[ chinese_simplified ] = "ûÓÐÕÒµ½·½°¸";
+ Text[ russian ] = "Ñöåíàðèé íå íàéäåí";
+ Text[ polish ] = "Scenariusza nie znaleziono";
+ Text[ japanese ] = "¼Åص‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¨S¦³§ä¨ì¤è®×";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÇáÓíäÇÑíæ";
+ Text[ greek ] = "Ôï óåíÜñéï äåí âñÝèçêå";
+ Text[ korean ] = "½Ã³ª¸®¿À°¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Senaryo bulunamadý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_QUERY_DELENTRY
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wollen Sie den Eintrag # wirklich löschen? : Wollen Sie den Eintrag # wirklich l÷schen? */
+ Text = "Wollen Sie den Eintrag # wirklich löschen?" ;
+ Text [ ENGLISH ] = "Do you really want to delete entry #?" ;
+ Text [ english_us ] = "Do you really want to delete the entry #?" ;
+ Text [ dutch ] = "Wilt u het item # werkelijk wissen?" ;
+ Text [ italian ] = "Si vuole veramente eliminare la voce #?" ;
+ Text [ spanish ] = "¿Desea realmente eliminar la entrada #?" ;
+ Text [ french ] = "Voulez-vous vraiment supprimer l'entrée # ?" ;
+ Text [ swedish ] = "Vill Du verkligen radera #?" ;
+ Text [ danish ] = "Er du sikker på at du vil slette element #?" ;
+ Text [ portuguese ] = "Deseja realmente eliminar a entrada #?" ;
+ Text [ portuguese_brazilian ] = "Wollen Sie den Eintrag # wirklich löschen?" ;
+ Text[ chinese_simplified ] = "ÄúÕæµÄҪɾ³ýÕâ¸öÌõÄ¿ # Âð£¿";
+ Text[ russian ] = "Âû äåéñòâèòåëüíî õîòèòå óäàëèòü ýëåìåíò #?";
+ Text[ polish ] = "Chcesz naprawdê usun¹æ has³o #?";
+ Text[ japanese ] = "€–Ú#‚ð휂µ‚Ä‚à‚æ‚낵‚¢‚Å‚·‚©?";
+ Text[ chinese_traditional ] = "±z¯u­n§R°£³o­Ó¶µ¥Ø # ¡H";
+ Text[ arabic ] = "åá ÊÑíÏ ÈÇáÝÚá ÍÐÝ ÇáÅÏÎÇá #¿";
+ Text[ greek ] = "ÈÝëåôå ðñáãìáôéêÜ íá äéáãñáöåß ç åããñáöÞ #;";
+ Text[ korean ] = "Ç׸ñ #À» »èÁ¦ ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "# giriþini gerçekten silmek istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_VOBJ_OBJECT
+ {
+ Text = "Objekte/Grafiken" ;
+ Text [ ENGLISH ] = "Objects/Images" ;
+ Text [ english_us ] = "Objects/graphics" ;
+ Text [ italian ] = "Oggetti/immagini" ;
+ Text [ spanish ] = "Objetos/Imágenes" ;
+ Text [ french ] = "Objets/Images" ;
+ Text [ dutch ] = "Objecten/afbeeldingen" ;
+ Text [ swedish ] = "Objekt/grafiker" ;
+ Text [ danish ] = "Objekter/billeder" ;
+ Text [ portuguese ] = "Objectos/Imagens" ;
+ Text [ portuguese_brazilian ] = "Objekte/Grafiken" ;
+ Text[ chinese_simplified ] = "¶ÔÏó/ͼÐÎ";
+ Text[ russian ] = "Îáúåêòû/Ðèñóíêè";
+ Text[ polish ] = "Obiekty/Grafiki";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä/}";
+ Text[ chinese_traditional ] = "ª«¥ó/¹Ï¤ù";
+ Text[ arabic ] = "ßÇÆäÇÊ/ÕæÑ";
+ Text[ greek ] = "Áíôéêåßìåíá/ÃñáöéêÜ";
+ Text[ korean ] = "°³Ã¼/±×·¡ÇÈ";
+ Text[ turkish ] = "Nesne/Grafik";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_VOBJ_CHART
+ {
+ Text = "Diagramme" ;
+ Text [ ENGLISH ] = "Charts" ;
+ Text [ english_us ] = "Charts" ;
+ Text [ dutch ] = "Diagrammen" ;
+ Text [ italian ] = "Diagrammi" ;
+ Text [ spanish ] = "Diagramas" ;
+ Text [ french ] = "Diagrammes" ;
+ Text [ swedish ] = "Diagram" ;
+ Text [ danish ] = "Diagrammer" ;
+ Text [ portuguese ] = "Gráficos" ;
+ Text [ portuguese_brazilian ] = "Diagramme" ;
+ Text[ chinese_simplified ] = "ͼ±í";
+ Text[ russian ] = "Äèàãðàììà";
+ Text[ polish ] = "Wykresy";
+ Text[ japanese ] = "¸Þ×Ì";
+ Text[ chinese_traditional ] = "¹Ïªí";
+ Text[ arabic ] = "ÑÓæã ÈíÇäíÉ";
+ Text[ greek ] = "ÄéáãñÜììáôá";
+ Text[ korean ] = "Â÷Æ®";
+ Text[ turkish ] = "Þema";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_VOBJ_DRAWINGS
+ {
+ Text = "Zeichenobjekte" ;
+ Text [ ENGLISH ] = "Drawobjects" ;
+ Text [ english_us ] = "Drawing Objects" ;
+ Text [ italian ] = "Oggetti di disegno" ;
+ Text [ spanish ] = "Objetos de dibujo" ;
+ Text [ french ] = "Objets de dessin" ;
+ Text [ dutch ] = "Tekenobjecten" ;
+ Text [ swedish ] = "Ritobjekt" ;
+ Text [ danish ] = "Tegneobjekter" ;
+ Text [ portuguese ] = "Objectos de desenho" ;
+ Text [ portuguese_brazilian ] = "Zeichenobjekte" ;
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏó";
+ Text[ russian ] = "Ãðàôè÷åñêèå îáúåêòû";
+ Text[ polish ] = "Obiekty graficzne";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ø¹Ïª«¥ó";
+ Text[ arabic ] = "ßÇÆäÇÊ ÑÓæãíÉ";
+ Text[ greek ] = "Áíôéêåßìåíá ó÷åäßáóçò";
+ Text[ korean ] = "°³Ã¼ ±×¸®±â";
+ Text[ turkish ] = "Çizim nesnesi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_VOBJ_MODE_SHOW
+ {
+ Text = "Anzeigen" ;
+ Text [ ENGLISH ] = "Show" ;
+ Text [ english_us ] = "Show" ;
+ Text [ italian ] = "Mostra" ;
+ Text [ spanish ] = "Mostrar" ;
+ Text [ french ] = "Afficher" ;
+ Text [ dutch ] = "Weergeven" ;
+ Text [ swedish ] = "Visa" ;
+ Text [ danish ] = "Vis" ;
+ Text [ portuguese ] = "Mostrar" ;
+ Text [ portuguese_brazilian ] = "Anzeigen" ;
+ Text[ chinese_simplified ] = "ÏÔʾ";
+ Text[ russian ] = "Ïîêàçàòü";
+ Text[ polish ] = "Poka¿";
+ Text[ japanese ] = "•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü";
+ Text[ arabic ] = "ÅÙåÇÑ";
+ Text[ greek ] = "ÅìöÜíéóç";
+ Text[ korean ] = "º¸À̱â";
+ Text[ turkish ] = "Görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_VOBJ_MODE_HIDE
+ {
+ Text = "Ausblenden" ;
+ Text [ ENGLISH ] = "Hide" ;
+ Text [ english_us ] = "Hide" ;
+ Text [ dutch ] = "Verbergen" ;
+ Text [ italian ] = "Nascondi" ;
+ Text [ spanish ] = "Ocultar" ;
+ Text [ french ] = "Masquer" ;
+ Text [ swedish ] = "Dölj" ;
+ Text [ danish ] = "Skjul" ;
+ Text [ portuguese ] = "Ocultar" ;
+ Text [ portuguese_brazilian ] = "Ausblenden" ;
+ Text[ chinese_simplified ] = "ÒþÈë";
+ Text[ russian ] = "Ñêðûòü";
+ Text[ polish ] = "Ukryj";
+ Text[ japanese ] = "•\\Ž¦‚µ‚È‚¢";
+ Text[ chinese_traditional ] = "Áô¤J";
+ Text[ arabic ] = "ÅÎÝÇÁ";
+ Text[ greek ] = "Áðüêñõøç";
+ Text[ korean ] = "¼û±â±â";
+ Text[ turkish ] = "Gizle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_VOBJ_MODE_DUMMY
+ {
+ Text = "Platzhalter" ;
+ Text [ ENGLISH ] = "Surrogates" ;
+ Text [ english_us ] = "Placeholders" ;
+ Text [ dutch ] = "Plaatsvervanger" ;
+ Text [ italian ] = "Segnaposto" ;
+ Text [ spanish ] = "Comodín" ;
+ Text [ french ] = "Substituant" ;
+ Text [ swedish ] = "Platshållare" ;
+ Text [ danish ] = "Pladsholdere" ;
+ Text [ portuguese ] = "Marcador de posição" ;
+ Text [ portuguese_brazilian ] = "Platzhalter" ;
+ Text[ chinese_simplified ] = "ÏÔʾλÖÃ";
+ Text[ russian ] = "Ìåñòîçàïîëíèòåëü";
+ Text[ polish ] = "Symbol wieloznaczny";
+ Text[ japanese ] = "²Ò°¼Þ˜g";
+ Text[ chinese_traditional ] = "Åã¥Ü¦ì¸m";
+ Text[ arabic ] = "ÚäÇÕÑ äÇÆÈÉ";
+ Text[ greek ] = "Óýìâïëá êñÜôçóçò èÝóçò";
+ Text[ korean ] = "°³Ã¼Æ²";
+ Text[ turkish ] = "Genel arama karakteri";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCATTR_PAGE_TOPDOWN
+ {
+ Text = "Von oben nach unten" ;
+ Text [ ENGLISH ] = "Top to bottom" ;
+ Text [ english_us ] = "Top to bottom" ;
+ Text [ dutch ] = "Van boven naar beneden" ;
+ Text [ italian ] = "Da sopra a sotto" ;
+ Text [ spanish ] = "De arriba hacia abajo" ;
+ Text [ french ] = "Du haut en bas" ;
+ Text [ swedish ] = "Uppifrån ned" ;
+ Text [ danish ] = "Fra øverst til nederst" ;
+ Text [ portuguese ] = "De cima para baixo" ;
+ Text [ portuguese_brazilian ] = "Von oben nach unten" ;
+ Text[ chinese_simplified ] = "´ÓÉÏÏòÏÂ";
+ Text[ russian ] = "Ñâåðõó âíèç";
+ Text[ polish ] = "Z góry do do³u";
+ Text[ japanese ] = "ã‚©‚牺‚Ö";
+ Text[ chinese_traditional ] = "±q¤W¦V¤U";
+ Text[ arabic ] = "ãä ÃÚáì áÃÓÝá";
+ Text[ greek ] = "Áðü ðÜíù ðñïò ôá êÜôù";
+ Text[ korean ] = "À§¿¡¼­ ¾Æ·¡·Î";
+ Text[ turkish ] = "Yukardan aþaðý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCATTR_PAGE_LEFTRIGHT
+ {
+ Text = "Von links nach rechts" ;
+ Text [ ENGLISH ] = "Left to right" ;
+ Text [ english_us ] = "Left to right" ;
+ Text [ dutch ] = "Van links naar rechts" ;
+ Text [ italian ] = "Da sinistra a destra" ;
+ Text [ spanish ] = "De izquierda a derecha" ;
+ Text [ french ] = "De gauche à droite" ;
+ Text [ swedish ] = "Från vänster till höger" ;
+ Text [ danish ] = "Fra venstre til højre" ;
+ Text [ portuguese ] = "Da esquerda para a direita" ;
+ Text [ portuguese_brazilian ] = "Von links nach rechts" ;
+ Text[ chinese_simplified ] = "´Ó×óÏòÓÒ";
+ Text[ russian ] = "Ñëåâà íàïðàâî";
+ Text[ polish ] = "Od lewej do prawej";
+ Text[ japanese ] = "¶‚©‚ç‰E‚Ö";
+ Text[ chinese_traditional ] = "±q¥ª¦V¥k";
+ Text[ arabic ] = "ãä ÇáíÓÇÑ Åáì Çáíãíä";
+ Text[ greek ] = "Áðü áñéóôåñÜ ðñïò ôá äåîéÜ";
+ Text[ korean ] = "¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î";
+ Text[ turkish ] = "Soldan saða";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCATTR_PAGE_NOTES
+ {
+ Text = "Notizen" ;
+ Text [ ENGLISH ] = "Notes" ;
+ Text [ english_us ] = "Notes" ;
+ Text [ italian ] = "Note" ;
+ Text [ spanish ] = "Notas" ;
+ Text [ french ] = "Notes" ;
+ Text [ dutch ] = "Aantekeningen" ;
+ Text [ swedish ] = "Anteckningar" ;
+ Text [ danish ] = "Noter" ;
+ Text [ portuguese ] = "Anotações" ;
+ Text [ portuguese_brazilian ] = "Notizen" ;
+ Text[ chinese_simplified ] = "±¸×¢";
+ Text[ russian ] = "Ïðèìå÷àíèÿ";
+ Text[ polish ] = "Notatki";
+ Text[ japanese ] = "ºÒÝÄ";
+ Text[ chinese_traditional ] = "³Æµù";
+ Text[ arabic ] = "ãáÇÍÙÇÊ";
+ Text[ greek ] = "Óçìåéþóåéò";
+ Text[ korean ] = "¸Þ¸ð";
+ Text[ turkish ] = "Not";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCATTR_PAGE_GRID
+ {
+ Text = "Tabellengitter" ;
+ Text [ ENGLISH ] = "Grid" ;
+ Text [ english_us ] = "Grid" ;
+ Text [ dutch ] = "Raster" ;
+ Text [ italian ] = "Griglia tabella" ;
+ Text [ spanish ] = "Cuadrícula" ;
+ Text [ french ] = "Grille" ;
+ Text [ swedish ] = "Tabellgitter" ;
+ Text [ danish ] = "Tabelgitter" ;
+ Text [ portuguese ] = "Grelha" ;
+ Text [ portuguese_brazilian ] = "Tabellengitter" ;
+ Text[ chinese_simplified ] = "¹¤×÷±íÍø¸ñ";
+ Text[ russian ] = "Ñåòêà";
+ Text[ polish ] = "Siatka tabeli";
+ Text[ japanese ] = "•\\‚̸ÞدÄÞü";
+ Text[ chinese_traditional ] = "¤u§@ªíºô®æ";
+ Text[ arabic ] = "ÔÈßÉ ÌÏæá";
+ Text[ greek ] = "ÐëÝãìá ðßíáêá";
+ Text[ korean ] = "±×¸®µå";
+ Text[ turkish ] = "Kýlavuz çizgiler";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCATTR_PAGE_HEADERS
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilen- & Spaltenköpfe : Zeilen- & Spaltenk÷pfe */
+ Text = "Zeilen- & Spaltenköpfe" ;
+ Text [ ENGLISH ] = "Column- & row headings" ;
+ Text [ english_us ] = "Row & Column Headers" ;
+ Text [ italian ] = "Intestazioni colonna/riga" ;
+ Text [ spanish ] = "Títulos de filas/columnas" ;
+ Text [ french ] = "En-têtes de colonnes/lignes" ;
+ Text [ dutch ] = "Rij- en kolomkoppen" ;
+ Text [ swedish ] = "Rad- och kolumnhuvuden" ;
+ Text [ danish ] = "Række- og kolonneoverskrifter" ;
+ Text [ portuguese ] = "Cabeçalhos das linhas e colunas" ;
+ Text [ portuguese_brazilian ] = "Zeilen- & Spaltenköpfe" ;
+ Text[ chinese_simplified ] = "ÐбêÌâºÍÁбêÌâ";
+ Text[ russian ] = "Çàãîëîâêè ñòðîê & ñòîëáöîâ";
+ Text[ polish ] = "Nag³. wierszy & kolumn";
+ Text[ japanese ] = "s‚Æ—ñ‚̔Ԇ";
+ Text[ chinese_traditional ] = "Äæ¼ÐÃD©M¦C¼ÐÃD";
+ Text[ arabic ] = "ÑÄæÓ ÇáÃÓØÑ æÇáÃÚãÏÉ";
+ Text[ greek ] = "Åðéêåöáëßäåò ãñáììþí êáé óôçëþí";
+ Text[ korean ] = "Çà & ¿­ ¸Ó¸®±Û";
+ Text[ turkish ] = "Satýr ve sütun baþlýklarý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCATTR_PAGE_FORMULAS
+ {
+ Text = "Formeln" ;
+ Text [ ENGLISH ] = "Formulas" ;
+ Text [ english_us ] = "Formulas" ;
+ Text [ dutch ] = "Formules" ;
+ Text [ italian ] = "Formule" ;
+ Text [ spanish ] = "Fórmulas" ;
+ Text [ french ] = "Formules" ;
+ Text [ swedish ] = "Formler" ;
+ Text [ danish ] = "Formler" ;
+ Text [ portuguese ] = "Fórmulas" ;
+ Text [ portuguese_brazilian ] = "Formeln" ;
+ Text[ chinese_simplified ] = "¹«Ê½";
+ Text[ russian ] = "Ôîðìóëû";
+ Text[ polish ] = "Formu³y";
+ Text[ japanese ] = "”Ž®";
+ Text[ chinese_traditional ] = "¤½¦¡";
+ Text[ arabic ] = "ÇáÕíÛ";
+ Text[ greek ] = "Ôýðïé";
+ Text[ korean ] = "¼ö½Ä";
+ Text[ turkish ] = "Formül";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCATTR_PAGE_NULLVALS
+ {
+ Text = "Nullwerte" ;
+ Text [ ENGLISH ] = "Null values" ;
+ Text [ english_us ] = "Zero Values" ;
+ Text [ italian ] = "Valori zero" ;
+ Text [ spanish ] = "Valores cero" ;
+ Text [ french ] = "Valeurs zéro" ;
+ Text [ dutch ] = "Nulwaarden" ;
+ Text [ swedish ] = "Nollvärden" ;
+ Text [ danish ] = "Nulværdier" ;
+ Text [ portuguese ] = "Valores zero" ;
+ Text [ portuguese_brazilian ] = "Nullwerte" ;
+ Text[ chinese_simplified ] = "ÁãÖµ";
+ Text[ russian ] = "Íóëåâûå çíà÷åíèÿ";
+ Text[ polish ] = "Wartoœci zerowe";
+ Text[ japanese ] = "¾ÞÛ’l";
+ Text[ chinese_traditional ] = "¹s­È";
+ Text[ arabic ] = "Þíã ÇáÕÝÑ";
+ Text[ greek ] = "ÌçäåíéêÝò ôéìÝò";
+ Text[ korean ] = "0 °ª";
+ Text[ turkish ] = "Sýfýr deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCATTR_PAGE_PRINTDIR
+ {
+ Text = "Druckrichtung" ;
+ Text [ ENGLISH ] = "Print direction" ;
+ Text [ english_us ] = "Print direction" ;
+ Text [ italian ] = "Direzione di stampa" ;
+ Text [ spanish ] = "Dirección de impresión" ;
+ Text [ french ] = "Orientation de l'impression" ;
+ Text [ dutch ] = "Afdrukrichting" ;
+ Text [ swedish ] = "Utskriftsriktning" ;
+ Text [ danish ] = "Udskriftsretning" ;
+ Text [ portuguese ] = "Orientação de impressão" ;
+ Text [ portuguese_brazilian ] = "Druckrichtung" ;
+ Text[ chinese_simplified ] = "´òÓ¡·½Ïò";
+ Text[ russian ] = "Íàïðàâëåíèå ïå÷àòè";
+ Text[ polish ] = "Orientacja wydruku";
+ Text[ japanese ] = "ˆóü•ûŒü";
+ Text[ chinese_traditional ] = "¦C¦L¤è¦V";
+ Text[ arabic ] = "ÇÊÌÇå ÇáØÈÇÚÉ";
+ Text[ greek ] = "Êáôåýèõíóç åêôýðùóçò";
+ Text[ korean ] = "Àμ⠹æÇâ";
+ Text[ turkish ] = "Yazdýrma yönü";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCATTR_PAGE_FIRSTPAGENO
+ {
+ Text = "Erste Seitenzahl" ;
+ Text [ ENGLISH ] = "First page" ;
+ Text [ english_us ] = "First page number" ;
+ Text [ dutch ] = "Eerste pagina" ;
+ Text [ italian ] = "Primo numero di pagina" ;
+ Text [ spanish ] = "Primer número de página" ;
+ Text [ french ] = "Premier numéro de page" ;
+ Text [ swedish ] = "Första sidnummret" ;
+ Text [ danish ] = "Første sidetal" ;
+ Text [ portuguese ] = "Número da primeira página" ;
+ Text [ portuguese_brazilian ] = "Erste Seitenzahl" ;
+ Text[ chinese_simplified ] = "Ê×Ò³Êý";
+ Text[ russian ] = "Íîìåð ïåðâîé ñòðàíèöû";
+ Text[ polish ] = "Pierwszy numer strony";
+ Text[ japanese ] = "ʼn‚ÌÍß°¼Þ”Ô†";
+ Text[ chinese_traditional ] = "­º­¶¼Æ";
+ Text[ arabic ] = "Ãæá ÑÞã ÕÝÍÉ";
+ Text[ greek ] = "Ðñþôïò áñéèìüò óåëßäáò";
+ Text[ korean ] = "ù ÆäÀÌÁö ¹øÈ£";
+ Text[ turkish ] = "Ýlk sayfa numarasý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_SCATTR_PAGE_SCALE
+ {
+ Text = "Alles auf [%]" ;
+ Text [ ENGLISH ] = "All pages to [%]" ;
+ Text [ english_us ] = "All to [%]" ;
+ Text [ italian ] = "Tutto a [%]" ;
+ Text [ spanish ] = "Todo en [%]" ;
+ Text [ french ] = "Tout à [%]" ;
+ Text [ dutch ] = "Alles naar [%]" ;
+ Text [ swedish ] = "Allt till (%)" ;
+ Text [ danish ] = "Alt til [%]" ;
+ Text [ portuguese ] = "Tudo para [%]" ;
+ Text [ portuguese_brazilian ] = "Alles auf [%]" ;
+ Text[ chinese_simplified ] = "È«²¿²ÉÓðٷֱÈ[%]";
+ Text[ russian ] = "Âñå íà [%]";
+ Text[ polish ] = "Wszystko na [%] ";
+ Text[ japanese ] = "‚·‚×‚Ä [%]";
+ Text[ greek ] = "¼ëá óå [%]";
+ Text[ korean ] = "Àüü¸¦ [%]·Î";
+ Text[ chinese_traditional ] = "¥þ³¡±Ä¥Î[%]";
+ Text[ arabic ] = "Çáßá Åáì [%]";
+ Text[ turkish ] = "Tümünü [%]";
+ };
+ String STR_SCATTR_PAGE_SCALETOPAGES
+ {
+ Text = "Max. Seitenzahl" ;
+ Text [ ENGLISH ] = "To fit on pages" ;
+ Text [ english_us ] = "Max. no of pages" ;
+ Text [ italian ] = "Num. massimo pagine" ;
+ Text [ spanish ] = "Núm. máx. de páginas" ;
+ Text [ french ] = "Nbre max. de pages" ;
+ Text [ dutch ] = "Max. aantal pagina´s" ;
+ Text [ swedish ] = "Max sidantal" ;
+ Text [ danish ] = "Maks. antal sider" ;
+ Text [ portuguese ] = "N° máx. de páginas" ;
+ Text [ portuguese_brazilian ] = "Max. Seitenzahl" ;
+ Text[ chinese_simplified ] = "×î¶àÒ³Êý";
+ Text[ russian ] = "Ìàêñèìóì ñòðàíèö";
+ Text[ polish ] = "Maks. liczba stron";
+ Text[ japanese ] = "Å‚Íß°¼Þ”";
+ Text[ chinese_traditional ] = "³Ì¦h­¶¼Æ";
+ Text[ arabic ] = "ÇáÚÏÏ ÇáÃÞÕì ááÕÝÍÇÊ";
+ Text[ greek ] = "ÌÝã. áñéèìüò óåëéäþí";
+ Text[ korean ] = "ÃÖ´ë ÆäÀÌÁö ¼ö";
+ Text[ turkish ] = "Azm. sayfa sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DOC_STAT
+ {
+ TEXT = "Statistik" ;
+ TEXT [ English ] = "Statistics" ;
+ TEXT [ norwegian ] = "Statistics" ;
+ TEXT [ italian ] = "Statistiche" ;
+ TEXT [ portuguese_brazilian ] = "EstatÝstica" ;
+ TEXT [ portuguese ] = "Estatística" ;
+ TEXT [ finnish ] = "Tilasto" ;
+ TEXT [ danish ] = "Statistik" ;
+ TEXT [ french ] = "Statistique" ;
+ TEXT [ swedish ] = "Statistik" ;
+ TEXT [ dutch ] = "Statistiek" ;
+ TEXT [ spanish ] = "Estadística" ;
+ TEXT [ english_us ] = "Statistics" ;
+ TEXT[ chinese_simplified ] = "ͳ¼Æ";
+ TEXT[ russian ] = "Ñòàòèñòèêà";
+ TEXT[ polish ] = "Statystyka";
+ TEXT[ japanese ] = "“Œv";
+ TEXT[ chinese_traditional ] = "²Î­p";
+ TEXT[ arabic ] = "ÅÍÕÇÆíÇÊ";
+ TEXT[ greek ] = "ÓôáôéóôéêÜ";
+ TEXT[ korean ] = "Åë°è";
+ TEXT[ turkish ] = "Ýstatistik";
+ TEXT[ language_user1 ] = " ";
+ };
+ String STR_LINKERROR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Verknüpfung konnte nicht aktualisiert werden. : Die Verkn³pfung konnte nicht aktualisiert werden. */
+ Text = "Die Verknüpfung konnte nicht aktualisiert werden." ;
+ Text [ ENGLISH ] = "The link could not be updated." ;
+ Text [ english_us ] = "The link could not be updated." ;
+ Text [ italian ] = "Non è stato possibile aggiornare il collegamento" ;
+ Text [ spanish ] = "No se pudo actualizar el vínculo." ;
+ Text [ french ] = "Impossible d'actualiser le lien." ;
+ Text [ dutch ] = "De koppeling kon niet geactualiseerd worden." ;
+ Text [ swedish ] = "Länken kunde inte uppdateras." ;
+ Text [ danish ] = "Det var ikke muligt at opdatere kæden." ;
+ Text [ portuguese ] = "Impossível actualizar a ligação." ;
+ Text [ portuguese_brazilian ] = "Die Verknüpfung konnte nicht aktualisiert werden." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨¸üÐÂÁ´½Ó¡£";
+ Text[ russian ] = "Îáíîâèòü ññûëêó íåâîçìîæíî.";
+ Text[ polish ] = "£¹cze nie mog³o zostaæ zaktualizowane.";
+ Text[ japanese ] = "Øݸ‚ÍXV‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "µLªk§ó·s±¶®|¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÊÍÏíË ÇáÇÑÊÈÇØ.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá åíçìåñùèåß ç óýíäåóç";
+ Text[ korean ] = "ÀÌ ¿¬°áÀº ¾÷ µ¥ÀÌÆ®µÉ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Baðlantý güncellenemedi.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LINKERRORFILE
+ {
+ Text = "Datei:" ;
+ Text [ ENGLISH ] = "File:" ;
+ Text [ english_us ] = "File:" ;
+ Text [ italian ] = "File:" ;
+ Text [ spanish ] = "Archivo:" ;
+ Text [ french ] = "Fichier :" ;
+ Text [ dutch ] = "Bestand:" ;
+ Text [ swedish ] = "Fil:" ;
+ Text [ danish ] = "Fil:" ;
+ Text [ portuguese ] = "Ficheiro:" ;
+ Text [ portuguese_brazilian ] = "Datei:" ;
+ Text[ chinese_simplified ] = "Îļþ£º";
+ Text[ russian ] = "Ôàéë:";
+ Text[ polish ] = "Plik:";
+ Text[ japanese ] = "̧²Ù:";
+ Text[ chinese_traditional ] = "ÀɮסG";
+ Text[ arabic ] = "ÇáãáÝ:";
+ Text[ greek ] = "Áñ÷åßï:";
+ Text[ korean ] = "ÆÄÀÏ:";
+ Text[ turkish ] = "Dosya:";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_LINKERRORTAB
+ {
+ Text = "Tabelle:" ;
+ Text [ ENGLISH ] = "Table:" ;
+ Text [ english_us ] = "Sheet:" ;
+ Text [ italian ] = "Tabella:" ;
+ Text [ spanish ] = "Hoja:" ;
+ Text [ french ] = "Feuille :" ;
+ Text [ dutch ] = "Werkblad:" ;
+ Text [ swedish ] = "Tabell:" ;
+ Text [ danish ] = "Ark:" ;
+ Text [ portuguese ] = "Folha:" ;
+ Text [ portuguese_brazilian ] = "Tabelle:" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í£º";
+ Text[ russian ] = "Ëèñò:";
+ Text[ polish ] = "Arkusz:";
+ Text[ japanese ] = "•\\:";
+ Text[ chinese_traditional ] = "¤u§@ªí¡G";
+ Text[ arabic ] = "ÇáÌÏæá:";
+ Text[ greek ] = "Ðßíáêáò:";
+ Text[ korean ] = "½ÃÆ®:";
+ Text[ turkish ] = "Tablo:";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_OVERVIEW
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Übersicht : šbersicht */
+ Text = "Übersicht" ;
+ Text [ ENGLISH ] = "Overview" ;
+ Text [ ENGLISH_US ] = "Overview" ;
+ Text [ italian ] = "Panoramica" ;
+ Text [ spanish ] = "Resumen" ;
+ Text [ french ] = "Résumé" ;
+ Text [ dutch ] = "Overzicht" ;
+ Text [ swedish ] = "Översikt" ;
+ Text [ danish ] = "Overblik" ;
+ Text [ portuguese ] = "Vista geral" ;
+ Text [ portuguese_brazilian ] = "Übersicht" ;
+ Text[ chinese_simplified ] = "ÕªÒª";
+ Text[ russian ] = "Îáçîð";
+ Text[ polish ] = "Przegl¹d";
+ Text[ japanese ] = "–ÚŽŸ";
+ Text[ chinese_traditional ] = "ºK­n";
+ Text[ arabic ] = "ÇáÊáÎíÕ";
+ Text[ greek ] = "Óýíïøç";
+ Text[ korean ] = "¹Ì¸®º¸±â";
+ Text[ turkish ] = "Genel bakýþ";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DOC_INFO
+ {
+ Text = "Dokumentinfo" ;
+ Text [ ENGLISH ] = "Document Info" ;
+ Text [ ENGLISH_US ] = "Doc.Information" ;
+ Text [ dutch ] = "Documentinfo" ;
+ Text [ italian ] = "Info documento" ;
+ Text [ spanish ] = "Información del documento" ;
+ Text [ french ] = "Info document" ;
+ Text [ swedish ] = "Dokumentinformation" ;
+ Text [ danish ] = "Dokumentinfo" ;
+ Text [ portuguese ] = "Info. sobre documento" ;
+ Text [ portuguese_brazilian ] = "Dokumentinfo" ;
+ Text[ chinese_simplified ] = "ÎĵµÐÅÏ¢";
+ Text[ russian ] = "Ñâåäåíèÿ î äîêóìåíòå";
+ Text[ polish ] = "Informacja o dokumencie";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄî•ñ";
+ Text[ chinese_traditional ] = "¤å¥ó¸ê°T";
+ Text[ arabic ] = "ãÚáæãÇÊ ÇáãÓÊäÏ";
+ Text[ greek ] = "Ðëçñïöïñßåò åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ Á¤º¸";
+ Text[ turkish ] = "Belge bilgileri";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DOC_CREATED
+ {
+ Text = "Erstellt" ;
+ Text [ ENGLISH ] = "" ;
+ Text [ ENGLISH_US ] = "Created" ;
+ Text [ dutch ] = "Gemaakt" ;
+ Text [ italian ] = "Creato" ;
+ Text [ spanish ] = "Creado el" ;
+ Text [ french ] = "Créé" ;
+ Text [ swedish ] = "Skapad" ;
+ Text [ danish ] = "Oprettet" ;
+ Text [ portuguese ] = "Criado" ;
+ Text [ portuguese_brazilian ] = "Erstellt" ;
+ Text[ chinese_simplified ] = "ÖÆ×÷";
+ Text[ russian ] = "Ñîçäàí";
+ Text[ polish ] = "Utworzony";
+ Text[ japanese ] = "ì¬";
+ Text[ chinese_traditional ] = "»s§@";
+ Text[ arabic ] = "Êã ÇáÅäÔÇÁ";
+ Text[ greek ] = "ÄçìéïõñãÞèçêå";
+ Text[ korean ] = "¸¸µé¾îÁ³À½";
+ Text[ turkish ] = "Oluþturuldu";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DOC_MODIFIED
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Verändert : Verõndert */
+ Text = "Verändert" ;
+ Text [ ENGLISH ] = "Modified" ;
+ Text [ ENGLISH_US ] = "Modified" ;
+ Text [ italian ] = "Modificato" ;
+ Text [ spanish ] = "Modificado" ;
+ Text [ french ] = "Modifié" ;
+ Text [ dutch ] = "Veranderd" ;
+ Text [ swedish ] = "Förändrad" ;
+ Text [ danish ] = "Ændret" ;
+ Text [ portuguese ] = "Modificado" ;
+ Text [ portuguese_brazilian ] = "Verändert" ;
+ Text[ chinese_simplified ] = "ÒѾ­ÐÞ¸Ä";
+ Text[ russian ] = "Èçìåíåí";
+ Text[ polish ] = "Zmodyfikowany";
+ Text[ japanese ] = "•ÏX";
+ Text[ chinese_traditional ] = "¤w¸g­×§ï";
+ Text[ arabic ] = "ãÚÏá";
+ Text[ greek ] = "Ôñïðïðïßçóç";
+ Text[ korean ] = "¼öÁ¤µÊ";
+ Text[ turkish ] = "Deðiþtirilen";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DOC_PRINTED
+ {
+ Text = "Ausgedruckt" ;
+ Text [ ENGLISH ] = "Printed" ;
+ Text [ ENGLISH_US ] = "Printed" ;
+ Text [ italian ] = "Stampato" ;
+ Text [ spanish ] = "Impreso" ;
+ Text [ french ] = "Imprimé" ;
+ Text [ dutch ] = "Afgedrukt" ;
+ Text [ swedish ] = "Utskrivet" ;
+ Text [ danish ] = "Udskrevet" ;
+ Text [ portuguese ] = "Impresso" ;
+ Text [ portuguese_brazilian ] = "Ausgedruckt" ;
+ Text[ chinese_simplified ] = "ÒѾ­´òÓ¡µÄ";
+ Text[ russian ] = "Íàïå÷àòàí";
+ Text[ polish ] = "Wydrukowany";
+ Text[ japanese ] = "ˆóüÏ‚Ý";
+ Text[ chinese_traditional ] = "¤w¸g¦C¦Lªº";
+ Text[ arabic ] = "ãØÈæÚ";
+ Text[ greek ] = "Åêôõðþèçêå(-áí)";
+ Text[ korean ] = "ÀμâµÊ";
+ Text[ turkish ] = "Yazdýrýlan";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DOC_THEME
+ {
+ Text = "Thema" ;
+ Text [ ENGLISH ] = "Theme" ;
+ Text [ ENGLISH_US ] = "Subject" ;
+ Text [ italian ] = "Argomento" ;
+ Text [ spanish ] = "Tema" ;
+ Text [ french ] = "Sujet" ;
+ Text [ dutch ] = "Onderwerp" ;
+ Text [ swedish ] = "Tema" ;
+ Text [ danish ] = "Emne" ;
+ Text [ portuguese ] = "Assunto" ;
+ Text [ portuguese_brazilian ] = "Thema" ;
+ Text[ chinese_simplified ] = "Ö÷Ìâ";
+ Text[ russian ] = "Òåìà";
+ Text[ polish ] = "Temat";
+ Text[ japanese ] = "ðÏ";
+ Text[ chinese_traditional ] = "¥DÃD";
+ Text[ arabic ] = "ÇáãæÖæÚ";
+ Text[ greek ] = "ÈÝìá";
+ Text[ korean ] = "ÁÖÁ¦";
+ Text[ turkish ] = "Konu";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DOC_KEYWORDS
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Schlüsselworte : Schl³sselworte */
+ Text = "Schlüsselworte" ;
+ Text [ ENGLISH ] = "Key words" ;
+ Text [ ENGLISH_US ] = "Key words" ;
+ Text [ dutch ] = "Sleutelwoorden" ;
+ Text [ italian ] = "Parole chiave" ;
+ Text [ spanish ] = "Palabras clave" ;
+ Text [ french ] = "Mots-clés" ;
+ Text [ swedish ] = "Nyckelord" ;
+ Text [ danish ] = "Nøgleord" ;
+ Text [ portuguese ] = "Palavras-chave" ;
+ Text [ portuguese_brazilian ] = "Schlüsselworte" ;
+ Text[ chinese_simplified ] = "¹Ø¼ü×Ö";
+ Text[ russian ] = "Êëþ÷åâûå ñëîâà";
+ Text[ polish ] = "S³owa kluczowe";
+ Text[ japanese ] = "·°Ü°ÄÞ";
+ Text[ chinese_traditional ] = "ÃöÁä¦r";
+ Text[ arabic ] = "ÇáßáãÇÊ ÇáÃÓÇÓíÉ";
+ Text[ greek ] = "ËÝîåéò êëåéäéÜ";
+ Text[ korean ] = "Å° ¿öµå";
+ Text[ turkish ] = "Anahtar sözcükler";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DOC_COMMENT
+ {
+ Text = "Bemerkungen" ;
+ Text [ ENGLISH ] = "Comments" ;
+ Text [ ENGLISH_US ] = "Comments" ;
+ Text [ dutch ] = "Commentaar" ;
+ Text [ italian ] = "Annotazioni" ;
+ Text [ spanish ] = "Observaciones" ;
+ Text [ french ] = "Commentaires" ;
+ Text [ swedish ] = "Anmärkningar" ;
+ Text [ danish ] = "Kommentarer" ;
+ Text [ portuguese ] = "Observações" ;
+ Text [ portuguese_brazilian ] = "Bemerkungen" ;
+ Text[ chinese_simplified ] = "ÆÀÓï";
+ Text[ russian ] = "Êîììåíòàðèè";
+ Text[ polish ] = "Komentarze";
+ Text[ japanese ] = "ºÒÝÄ";
+ Text[ chinese_traditional ] = "µû»y";
+ Text[ arabic ] = "ãáÇÍÙÇÊ";
+ Text[ greek ] = "ÐáñáôçñÞóåéò";
+ Text[ korean ] = "¸Þ¸ð";
+ Text[ turkish ] = "Açýklamalar";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_BY
+ {
+ Text = "von" ;
+ Text [ ENGLISH ] = "by" ;
+ Text [ ENGLISH_US ] = "by" ;
+ Text [ dutch ] = "door" ;
+ Text [ italian ] = "da" ;
+ Text [ spanish ] = "de" ;
+ Text [ french ] = "de" ;
+ Text [ swedish ] = "från" ;
+ Text [ danish ] = "fra" ;
+ Text [ portuguese ] = "de" ;
+ Text [ portuguese_brazilian ] = "von" ;
+ Text[ chinese_simplified ] = "ÓÉ";
+ Text[ russian ] = "îò";
+ Text[ polish ] = "z";
+ Text[ japanese ] = "쬎Ò";
+ Text[ chinese_traditional ] = "¥Ñ";
+ Text[ arabic ] = "龂";
+ Text[ greek ] = "áðü";
+ Text[ korean ] = "·Î";
+ Text[ turkish ] = "Yazdýran";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ON
+ {
+ Text = "am" ;
+ Text [ ENGLISH ] = "on" ;
+ Text [ ENGLISH_US ] = "on" ;
+ Text [ italian ] = "il" ;
+ Text [ spanish ] = "en" ;
+ Text [ french ] = "le" ;
+ Text [ dutch ] = "op" ;
+ Text [ swedish ] = "på" ;
+ Text [ danish ] = "på" ;
+ Text [ portuguese ] = "em" ;
+ Text [ portuguese_brazilian ] = "am" ;
+ Text[ chinese_simplified ] = "ÔÚ";
+ Text[ russian ] = "â";
+ Text[ polish ] = "w";
+ Text[ japanese ] = "“ú•t";
+ Text[ chinese_traditional ] = "¦b";
+ Text[ arabic ] = "Ýí";
+ Text[ greek ] = "ôéò";
+ Text[ korean ] = "ÀÛµ¿";
+ Text[ turkish ] = "tarih";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_RELOAD_TABLES
+ {
+ // ### ACHTUNG: Neuer Text in Resource? Diese Datei enthält Verknüpfungen zu anderen Dateien.\nSollen diese aktualisiert werden? : Diese Datei enthält verknüpfte Tabellen.\nSollen diese aktualisiert werden?
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Datei enthält Verknüpfungen zu anderen Dateien.\nSollen diese aktualisiert werden? : Diese Datei enthõlt Verkn³pfungen zu anderen Dateien.\nSollen diese aktualisiert werden? */
+ Text = "Diese Datei enthält Verknüpfungen zu anderen Dateien.\nSollen diese aktualisiert werden?" ;
+ Text [ ENGLISH ] = "This file contains links to other files.\nRefresh them?" ;
+ Text [ ENGLISH_US ] = "This file contains links to other files.\nShould they be updated?" ;
+ Text [ italian ] = "Il file corrente contiene collegamenti ad altri file.\nVolete aggiornarli?" ;
+ Text [ spanish ] = "Este archivo está vinculado a otros archivos.\n¿Desea usted actualizarlos?" ;
+ Text [ french ] = "Ce fichier contient des liens vers d'autres fichiers. Les actualiser ?" ;
+ Text [ dutch ] = "Dit bestand bevat koppelingen naar andere bestanden.\n Wilt u deze actualiseren?" ;
+ Text [ swedish ] = "Den här filen innehåller länkar till andra filer.\nSkall de uppdateras?" ;
+ Text [ danish ] = "Denne fil indeholder kæder til andre filer.\nSkal de opdateres?" ;
+ Text [ portuguese ] = "Este ficheiro contém ligações a outros ficheiros.\nActualizar?" ;
+ Text [ portuguese_brazilian ] = "Diese Datei enthält Verknüpfungen zu anderen Dateien.\nSollen diese aktualisiert werden?" ;
+ Text[ chinese_simplified ] = "´ËÎļþÄÚº¬ÓÐÖ¸ÏòÆäËûÎļþµÄÁ´½Ó¡£\nÒª¸üÐÂÕâЩÁ´½ÓÂð£¿";
+ Text[ russian ] = "Ýòîò ôàéë ñîäåðæèò ññûëêè íà äðóãèå ôàéëû.\nÎáíîâèòü ýòè ññûëêè?";
+ Text[ polish ] = "Ten plik zawiera ³¹cza do innych plików.\nCzy maj¹ one byæ aktualizowane?";
+ Text[ japanese ] = "‚±‚ÌÃÞ°À‚É‚Í‘¼‚ÌÃÞ°À‚Ö‚ÌØݸ‚ª‚ ‚è‚Ü‚·B\nØݸ‚ðXV‚µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "³o­ÓÀɮקt¦³«ü¦V¨ä¥LÀɮתº±¶®|¡C\n­n§ó·s³o­ÓÀɮסH";
+ Text[ arabic ] = "íÍÊæí åÐÇ ÇáãáÝ Úáì ÇÑÊÈÇØÇÊ ãÚ ãáÝÇÊ ÃÎÑì.\nåá ÊÑíÏ ÊÍÏíËåÇ¿";
+ Text[ greek ] = "Ôï áñ÷åßï áõôü ðåñéÝ÷åé óõíäÝóåéò ðñïò Üëëá áñ÷åßá.\nÈÝëåôå íá ãßíåé åíçìÝñùóç áõôþí;";
+ Text[ korean ] = "ÀÌ ÆÄÀÏÀº ´Ù¸¥ ÆÄÀÏ¿¡ ¿¬°áµÇ¾î ÀÖ½À´Ï´Ù.\n±×°ÍµéÀ» ¾÷ µ¥ÀÌÆ® ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "Bu dosyada baþka dosyalara baðlantýlar mevcut.\nBaðlantýlar güncellensin mi?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_REIMPORT_AFTER_LOAD
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Diese Datei enthält Abfragen, deren Ergebnisse nicht mitgespeichert wurden.\nSollen diese Abfragen wiederholt werden? : Diese Datei enthõlt Abfragen, deren Ergebnisse nicht mitgespeichert wurden.\nSollen diese Abfragen wiederholt werden? */
+ Text = "Diese Datei enthält Abfragen, deren Ergebnisse nicht mitgespeichert wurden.\nSollen diese Abfragen wiederholt werden?" ;
+ Text [ ENGLISH ] = "This file contains Queries for which the results were not saved.\nShould they be refreshed?" ;
+ Text [ portuguese ] = "Este ficheiro contém consultas com resultados não guardados.\nRepeti-las?" ;
+ Text [ english_us ] = "This file contains queries. The results of these queries were not saved.\nDo you want these queries to be repeated?" ;
+ Text [ portuguese_brazilian ] = "Diese Datei enthält Abfragen, deren Ergebnisse nicht mitgespeichert wurden.\nSollen diese Abfragen wiederholt werden?" ;
+ Text [ swedish ] = "Den här filen innehåller sökningar vars resultat inte har sparats.\nSkall dessa sökningar upprepas?" ;
+ Text [ danish ] = "Denne fil indeholder forespørgsler, resultaterne er ikke blevet gemt.\nSkal denne forespørgsel gentages?" ;
+ Text [ italian ] = "Questo file contiene ricerche i cui risultati non sono stati salvati.\nRipetere le ricerche?" ;
+ Text [ spanish ] = "Este archivo contiene consultas cuyos resultados no se guardaron.\n¿Desea repetir las consultas?" ;
+ Text [ french ] = "Ce fichier contient des requêtes dont les résultats n'ont pas été enregistrés avec celles-ci.\nRépéter les requêtes ?" ;
+ Text [ dutch ] = "Dit bestand bevat query's waarvan de resultaten niet werden opgeslagen.\nWilt u dat deze query's worden herhaald?" ;
+ Text[ chinese_simplified ] = "Õâ¸öÎļþº¬ÓÐһЩ²éѯ£¬ËüÃǵĽá¹ûÎÞ·¨±»´æÅ̵ġ£\nÒªÖظ´Ö´ÐÐÕâ¸ö²éѯÂð£¿";
+ Text[ russian ] = "Ýòîò ôàéë ñîäåðæèò çàïðîñû, ðåçóëüòàòû êîòîðûõ ñîõðàíåíû íå áóäóò.\nÏîâòîðèòü ýòè çàïðîñû?";
+ Text[ polish ] = "Plik zawiera kwerendy, wyniki których nie zosta³y zapisane.\nCzy odœwie¿yæ te kwerendy?";
+ Text[ japanese ] = "‚±‚Ì̧²Ù‚É Œ‹‰Ê‚ª•Û‘¶‚³‚ê‚È‚©‚Á‚½¸´Ø°‚ª‚ ‚è‚Ü‚·B\n‚±‚̸´Ø°‚ð‚â‚è’¼‚µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "³o­ÓÀɮקt¦³¤@¨Ç¬d¸ß¡A¥¦­Ìªºµ²ªGµLªk³QÀx¦s¡C\n­n­«½Æ°õ¦æ³o­Ó¬d¸ß¡H";
+ Text[ arabic ] = "íÍÊæí åÐÇ ÇáãáÝ Úáì ÇÓÊÝÓÇÑÇÊ áã íÊã ÍÝÙ äÊÇÆÌåÇ.\nåá ÊÑíÏ ÊßÑÇÑ åÐå ÇáÇÓÊÝÓÇÑÇÊ¿";
+ Text[ greek ] = "Ôï áñ÷åßï áõôü ðåñéÝ÷åé åñùôÞìáôá, ôá áðïôåëÝóìáôá ôùí ïðïßùí äåí áðïèçêåýôçêáí.\nÈÝëåôå íá åðáíáëçöèïýí ôá åñùôÞìáôá áõôÜ;";
+ Text[ korean ] = "ÆÄÀÏÀº ÁúÀǸ¦ Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ ÁúÀÇ ÀÌ °á°úµéÀº ÀúÀåµÇÁö ¾Ê¾Ò½À´Ï´Ù .\nÀÌ ÁúÀǸ¦ ¹Ýº¹ ÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "Bu dosya, sonuçlarý kaydedilmeyen sorgular içeriyor.\nBU sorgular yinelensin mi?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FILTER_TOOMANY
+ {
+ Text = "Zuviele Bedingungen" ;
+ Text [ ENGLISH ] = "Too many conditions" ;
+ Text [ ENGLISH_US ] = "Too many conditions" ;
+ Text [ dutch ] = "Teveel voorwaarden" ;
+ Text [ italian ] = "Troppe condizioni" ;
+ Text [ spanish ] = "Demasiadas condiciones" ;
+ Text [ french ] = "Trop de conditions." ;
+ Text [ swedish ] = "För många villkor" ;
+ Text [ danish ] = "For mange betingelser" ;
+ Text [ portuguese ] = "Demasiadas condições" ;
+ Text [ portuguese_brazilian ] = "Zuviele Bedingungen" ;
+ Text[ chinese_simplified ] = "Ìõ¼þÌ«¶à";
+ Text[ russian ] = "Ñëèøêîì ìíîãî óñëîâèé";
+ Text[ polish ] = "Za du¿o warunków";
+ Text[ japanese ] = "ðŒ‚ª‘½‚·‚¬‚Ü‚·";
+ Text[ chinese_traditional ] = "±ø¥ó¤Ó¦h";
+ Text[ arabic ] = "ÔÑæØ ßËíÑÉ ÌÏÇð";
+ Text[ greek ] = "ÕðåñâïëéêÜ ðïëëÝò óõíèÞêåò";
+ Text[ korean ] = "Á¶°ÇÀÌ ³Ê¹« ¸¹½À´Ï´Ù.";
+ Text[ turkish ] = "Koþul sayýsý çok fazla";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INSERT_FULL
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ausgefüllte Zellen können nicht über\ndas Blatt hinaus verschoben werden. : Ausgef³llte Zellen k÷nnen nicht ³ber\ndas Blatt hinaus verschoben werden. */
+ Text = "Ausgefüllte Zellen können nicht über\ndas Blatt hinaus verschoben werden." ;
+ Text [ ENGLISH ] = "Cells cannot be moved out of the sheet." ;
+ Text [ ENGLISH_US ] = "Filled cells cannot be shifted\nbeyond the sheet." ;
+ Text [ italian ] = "Non è stato possibile spostare\nle celle piene oltre il foglio." ;
+ Text [ spanish ] = "No es posible desplazar celdas llenas\nfuera de la hoja." ;
+ Text [ french ] = "Les cellules remplies ne peuvent pas\nêtre décalées au-delà de la page." ;
+ Text [ dutch ] = "Gevulde cellen kunnen niet buiten\nhet blad worden geplaatst." ;
+ Text [ swedish ] = "Utfyllda celler kan inte förskjutas\növer sidranden." ;
+ Text [ danish ] = "Fyldte celler kan ikke flyttes\nud over arkets rand." ;
+ Text [ portuguese ] = "Impossível mover células \npreenchidas fora da folha." ;
+ Text [ portuguese_brazilian ] = "Ausgefüllte Zellen können nicht über\ndas Blatt hinaus verschoben werden." ;
+ Text[ chinese_simplified ] = "Ìî³äµÄµ¥Ôª¸ñ²»Äܱ»\nÒƳö¹¤×÷±í¡£";
+ Text[ russian ] = "Ïåðåìåùàòü çàïîëíåííûå ÿ÷åéêè çà\nïðåäåëû ëèñòà íåâîçìîæíî.";
+ Text[ polish ] = "Wype³nione komórki nie mog¹ byæ przesuniête poza \nobszar arkusza.";
+ Text[ japanese ] = "“ü—Íς݂̾قð•\\‚ÌŠO‚Ɉړ®‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "¶ñ¥RªºÀx¦s®æ¤£¯à³Q\n²¾¥X¤u§@ªí¡C";
+ Text[ arabic ] = "áÇ íãßä ÅÒÇÍÉ ÎáÇíÇ ããÊáÆÉ\nÅáì ÎÇÑÌ ÇáæÑÞÉ.";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé ìåôáêßíçóç \nôùí óõìðëçñùìÝíùí êåëéþí ðÝñá áðü ôá üñéá ôïõ ÷áñôéïý.";
+ Text[ korean ] = "ä¿öÁø ¼¿Àº½ÃÆ® ³Ñ¾î·Î \n¹Ð¸®Áö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Dolu hücreler, sayfa dýþýna\ntaþýnamaz.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TABINSERT_ERROR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Tabelle konnte nicht eingefügt werden. : Die Tabelle konnte nicht eingef³gt werden. */
+ Text = "Die Tabelle konnte nicht eingefügt werden." ;
+ Text [ ENGLISH ] = "The table could not be inserted." ;
+ Text [ ENGLISH_US ] = "The table could not be inserted." ;
+ Text [ italian ] = "Non è stato possibile inserire la tabella" ;
+ Text [ spanish ] = "No se pudo insertar la tabla." ;
+ Text [ french ] = "Impossible d'insérer la table." ;
+ Text [ dutch ] = "Die tabel kon niet worden ingevoegd" ;
+ Text [ swedish ] = "Tabellen kunde inte infogas." ;
+ Text [ danish ] = "Det var ikke muligt at indsætte tabellen." ;
+ Text [ portuguese ] = "Impossível inserir tabela." ;
+ Text [ portuguese_brazilian ] = "Die Tabelle konnte nicht eingefügt werden." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨ÊäÈëÕâ¸ö¹¤×÷±í¡£";
+ Text[ russian ] = "Âñòàâèòü òàáëèöó íåâîçìîæíî.";
+ Text[ polish ] = "Tabela nie mog³a zostaæ wstawiona.";
+ Text[ japanese ] = "•\\‚ð‘}“ü‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½";
+ Text[ chinese_traditional ] = "µLªk¿é¤J³o­Ó¤u§@ªí¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÅÏÑÇÌ ÇáÌÏæá.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá ãßíåé åéóáãùãÞ ôïõ ðßíáêá.";
+ Text[ korean ] = "Å×À̺íÀÌ »ðÀ﵃ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Tablo eklenemedi.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TABREMOVE_ERROR
+ {
+ Text = "Die Tabellen konnten nicht gelöscht werden." ;
+ Text [ ENGLISH ] = "The tables could not be removed." ;
+ Text [ portuguese ] = "Impossível eliminar folhas de cálculo." ;
+ Text [ english_us ] = "The sheets could not be deleted." ;
+ Text [ portuguese_brazilian ] = "Die Tabellen konnten nicht gelöscht werden." ;
+ Text [ swedish ] = "Tabellerna kunde inte raderas." ;
+ Text [ danish ] = "Det var ikke muligt at slette arkene." ;
+ Text [ italian ] = "Impossibile cancellare le tabelle." ;
+ Text [ spanish ] = "No se pudieron eliminar las hojas de cálculo" ;
+ Text [ french ] = "Impossible de supprimer les feuilles de calcul" ;
+ Text [ dutch ] = "De werkbladen konden niet worden gewist." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨É¾³ýÕâ¸ö¹¤×÷±í¡£";
+ Text[ russian ] = "Óäàëèòü ëèñòû íåâîçìîæíî.";
+ Text[ polish ] = "Arkusze nie mog³y zostaæ usuniête.";
+ Text[ japanese ] = "•\\‚Í휂³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "µLªk§R°£³o­Ó¤u§@ªí¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÍÐÝ ÇáÌÏÇæá.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá äéáãñáöïýí ïé ðßíáêåò.";
+ Text[ korean ] = "½ÃÆ®´Â »èÁ¦ µÉ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Tablolar silinemedi.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PASTE_ERROR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Inhalt der Zwischenablage konnte nicht eingefügt werden. : Der Inhalt der Zwischenablage konnte nicht eingef³gt werden. */
+ Text = "Der Inhalt der Zwischenablage konnte nicht eingefügt werden." ;
+ Text [ ENGLISH ] = "The contents of the clipboard could not be inserted." ;
+ Text [ ENGLISH_US ] = "The contents of the clipboard could not be inserted." ;
+ Text [ dutch ] = "De inhoud van het Klembord kon niet worden ingevoegd" ;
+ Text [ italian ] = "Non è stato possibile incollare il contenuto degli appunti" ;
+ Text [ spanish ] = "No se pudo pegar el contenido del portapapeles." ;
+ Text [ french ] = "Impossible d'insérer le contenu du presse-papiers." ;
+ Text [ swedish ] = "Urklippsinnehållet kunde inte infogas." ;
+ Text [ danish ] = "Det var ikke muligt at indsætte udklipsholderens indhold." ;
+ Text [ portuguese ] = "Impossível inserir o conteúdo da área de transferência." ;
+ Text [ portuguese_brazilian ] = "Der Inhalt der Zwischenablage konnte nicht eingefügt werden." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨²åÈë¼ôÌù°åµÄÄÚÈÝ¡£";
+ Text[ russian ] = "Íå óäàåòñÿ âñòàâèòü ñîäåðæèìîå áóôåðà îáìåíà.";
+ Text[ polish ] = "Nie mo¿na wstawiæ zawartoœci schowka.";
+ Text[ japanese ] = "¸Ø¯ÌßÎÞ°ÄÞ‚Ì“à—e‚ª‘}“ü‚Å‚«‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk´¡¤J°Å¶K諸¤º®e¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÅÏÑÇÌ ãÍÊæíÇÊ ÇáÍÇÝÙÉ.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá ãßíåé åéóáãùãÞ ôïõ ðåñéå÷ïìÝíïõ ôïõ clipboard.";
+ Text[ korean ] = "Ŭ¸³º¸µåÀÇ ³»¿ëÀÌ »ðÀ﵃ ¼ö¾ø½À´Ï´Ù .";
+ Text[ turkish ] = "Pano içeriði eklenemedi.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PASTE_FULL
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Es kann nicht über das Blatt hinaus eingefügt werden. : Es kann nicht ³ber das Blatt hinaus eingef³gt werden. */
+ Text = "Es kann nicht über das Blatt hinaus eingefügt werden." ;
+ Text [ ENGLISH ] = "There is not enough space to paste here." ;
+ Text [ ENGLISH_US ] = "There is not enough space on the sheet to insert here." ;
+ Text [ italian ] = "Non è possibile incollare al di là del foglio" ;
+ Text [ spanish ] = "No se puede insertar más allá de la página." ;
+ Text [ french ] = "Impossible d'insérer au-delà de la page" ;
+ Text [ dutch ] = "Er kan niet buiten het blad worden ingevoegd." ;
+ Text [ swedish ] = "Du kan inte klistra in utanför arkets kant." ;
+ Text [ danish ] = "Det er ikke muligt at indsætte ud over arkets rand." ;
+ Text [ portuguese ] = "Espaço insuficiente para inserir." ;
+ Text [ portuguese_brazilian ] = "Es kann nicht über das Blatt hinaus eingefügt werden." ;
+ Text[ chinese_simplified ] = "¿Õ¼ä²»¹»£¬ÎÞ·¨²åÈë¡£";
+ Text[ russian ] = "Âñòàâêà çà ïðåäåëàìè ëèñòà íåâîçìîæíà.";
+ Text[ polish ] = "Nie mo¿na wstawiæ poza obrêbem strony.";
+ Text[ japanese ] = "‚±‚͈̔͂̊O‚É‘}“ü‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "ªÅ¶¡¤£°÷¡AµLªk´¡¤J¡C";
+ Text[ arabic ] = "áÇ íæÌÏ Úáì ÇáæÑÞÉ ãßÇä íßÝí áÚãáíÉ ÇáÅÏÑÇÌ.";
+ Text[ greek ] = "Äåí õðÜñ÷åé áñêåôüò ÷þñïò óôï öýëëï ãéá íá ãßíåé åéóáãùãÞ.";
+ Text[ korean ] = "½ÃÆ®¿¡ »ðÀ﵃ °ø°£ÀÌ ºÎÁ·ÇÕ´Ï´Ù. .";
+ Text[ turkish ] = "Sayfada ekleme için yeterli alan yok.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PASTE_BIGGER
+ {
+ Text = "Der Inhalt der Zwischenablage ist größer als der ausgewählte Bereich.\nMöchten Sie trotzdem einfügen?" ;
+ Text [ ENGLISH ] = "The content of the clipboard is bigger than the selection.\nInsert anyway?" ;
+ Text[ italian ] = "Il contenuto degli appunti è più grande dell'area selezionata.\nVolete incollarlo lo stesso?";
+ Text[ portuguese_brazilian ] = "The content of the clipboard is bigger than the selection.\nInsert anyway?";
+ Text[ portuguese ] = "O conteúdo da área de transferência é maior do que a selecção.\nMesmo assim inserir?";
+ Text[ danish ] = "Udklipholderens indhold er større end det markerede område.\nVil du indsætte alligevel?";
+ Text[ french ] = "Le contenu du presse-papiers dépasse l'espace offert par la sélection.\nVoulez vous quand même l'insérer ?";
+ Text[ swedish ] = "Innehållet i urklippet är större än markeringen.\nInfoga i alla fall?";
+ Text[ dutch ] = "De inhoud van het Klembord is groter dan het geselecteerde bereik.\nToch invoegen?";
+ Text[ spanish ] = "El contenido del portapapeles es mayor que el área seleccionada.\n¿Desea insertarla de todas formas?";
+ Text[ english_us ] = "The content of the clipboard is bigger than the range selected.\nDo you want to insert it anyway?";
+ Text[ chinese_simplified ] = "¼ôÌù°åµÄÄÚÈÝ´óÓÚÑ¡ÖеÄÇøÓò¡£\nÄú»¹ÊÇÒª²åÈëËü£¿";
+ Text[ russian ] = "Ñîäåðæèìîå áóôåðà îáìåíà áîëüøå, ÷åì âûäåëåííàÿ îáëàñòü.\nÂñå ðàâíî âñòàâèòü?";
+ Text[ polish ] = "Zawartoœæ schowka jest wiêksza ni¿ zaznaczony obszar.\nChcesz mimo tego wstawiæ?";
+ Text[ japanese ] = "¸Ø¯ÌßÎÞ°ÄÞ‚Ì“à—e‚ª‘I‘ð”͈͂𒴂¦‚Ä‚¢‚Ü‚·B\n‚»‚ê‚Å‚à‘}“ü‚µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "°Å¶K諸¤º®e¤j©ó¿ï¨úªº°Ï°ì¡C\n±zÁÙ¬O­n´¡¤J¡H";
+ Text[ arabic ] = "ãÍÊæíÇÊ ÇáÍÇÝÙÉ ÊÝæÞ ÇáäØÇÞ¡ ÇáÐí ÞãÊ ÈÇÎÊíÇÑå¡ ÍÌãÇð.\nåá ÊÑíÏ ÇáÅÏÑÇÌ ÈÇáÑÛã ãä Ðáß¿";
+ Text[ greek ] = "Ôï ðåñéå÷üìåíï ôïõ clipboard åßíáé ìåãáëýôåñï áðü ôçí åðéëåãìÝíç ðåñéï÷Þ.\nÈÝëåôå ðáñ üëá áõôÜ íá ãßíåé åéóáãùãÞ;";
+ Text[ korean ] = "Ŭ¸³º¸µåÀÇ ³»¿ëÀÌ ¼±ÅÃµÈ ¿µ¿ªÀÇ Å©±âº¸´Ù Å®´Ï´Ù.\n±×·¡µµ »ðÀÔÇϽðڽÀ´Ï±î?";
+ Text[ turkish ] = "Pano içeriði, seçilen alandan daha büyük.\nYine de eklemek istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ERR_NOREF
+ {
+ Text = "Keine Referenzen gefunden." ;
+ Text [ ENGLISH ] = "No references found." ;
+ Text [ ENGLISH_US ] = "No references found." ;
+ Text [ dutch ] = "Geen verwijzingen gevonden" ;
+ Text [ italian ] = "Nessun riferimento trovato" ;
+ Text [ spanish ] = "No se encontraron referencias." ;
+ Text [ french ] = "Références introuvables." ;
+ Text [ swedish ] = "Inga referenser funna." ;
+ Text [ danish ] = "Ingen referencer fundet." ;
+ Text [ portuguese ] = "Não foram encontradas referências." ;
+ Text [ portuguese_brazilian ] = "Keine Referenzen gefunden." ;
+ Text[ chinese_simplified ] = "ûÓÐÕÒµ½ÒýÓá£";
+ Text[ russian ] = "Ññûëêè íå íàéäåíû.";
+ Text[ polish ] = "Nie znaleziono odwo³añ.";
+ Text[ japanese ] = "ŽQÆ‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "¨S¦³§ä¨ì°Ñ·Ó¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÃíÉ ãÑÇÌÚ.";
+ Text[ greek ] = "Äåí âñÝèçêå áöïñÜ.";
+ Text[ korean ] = "ÂüÁ¶°¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Referans bulunamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ERR_LINKOVERLAP
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Quell- und Zielbereich dürfen sich nicht überlappen. : Quell- und Zielbereich d³rfen sich nicht ³berlappen. */
+ Text = "Quell- und Zielbereich dürfen sich nicht überlappen." ;
+ Text [ ENGLISH ] = "Source and destination must not overlap." ;
+ Text [ ENGLISH_US ] = "Source and destination must not overlap." ;
+ Text [ dutch ] = "Bron en doel mogen elkaar niet overlappen" ;
+ Text [ italian ] = "L'area sorgente e l'area di destinazione non possono sovrapporsi" ;
+ Text [ spanish ] = "Área de origen y de destino no deben superponerse." ;
+ Text [ french ] = "La plage source et la plage cible ne doivent pas se chevaucher." ;
+ Text [ swedish ] = "Käll- och målområde får inte överlappa varandra." ;
+ Text [ danish ] = "Kilde- og destinationsområde må ikke overlappe." ;
+ Text [ portuguese ] = "Fonte e destino não se devem sobrepor." ;
+ Text [ portuguese_brazilian ] = "Quell- und Zielbereich dürfen sich nicht überlappen." ;
+ Text[ chinese_simplified ] = "Ô´ÇøÓòºÍÄ¿±êÇøÓò²»¿ÉÒÔÏ໥Öصþ¡£";
+ Text[ russian ] = "Èñõîäíàÿ è êîíå÷íàÿ îáëàñòü íå äîëæíû ïåðåñåêàòüñÿ.";
+ Text[ polish ] = "Obszar Ÿród³owy i docelowy nie mog¹ zachodziæ na siebie.";
+ Text[ japanese ] = "¿°½‚ÆÀ°¹Þ¯Ä”͈͂Íd‚È‚Á‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "·½°Ï°ì©M¥Ø¼Ð°Ï°ì¤£¥i¥H¬Û¤¬­«Å|¡C";
+ Text[ arabic ] = "íÌÈ ÃáÇ íÊÏÇÎá ÇáäØÇÞ ÇáãÕÏÑ æÇáäØÇÞ ÇáãÞÕæÏ.";
+ Text[ greek ] = "Ïé ðåñéï÷Ýò ðñïÝëåõóçò êáé ðñïïñéóìïý äåí åðéôñÝðåôáé íá åðéêáëýðôïðíôáé.";
+ Text[ korean ] = "¼Ò½º¿Í ¸ñÀûÁö´Â ¹Ýµå½Ã °ãÃÄÁö¸é ¾ÈµË´Ï´Ù..";
+ Text[ turkish ] = "Kaynak ve hedef aralýðý örtüþmemelidir.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_GRAPHICNAME
+ {
+ Text = "Grafik" ;
+ Text [ ENGLISH ] = "Graphic" ;
+ Text [ ENGLISH_US ] = "Graphics" ;
+ Text [ italian ] = "Immagine" ;
+ Text [ spanish ] = "Imagen" ;
+ Text [ french ] = "Image" ;
+ Text [ dutch ] = "Afbeelding" ;
+ Text [ swedish ] = "Grafik" ;
+ Text [ danish ] = "Grafik" ;
+ Text [ portuguese ] = "Imagem" ;
+ Text [ portuguese_brazilian ] = "Grafik" ;
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ russian ] = "Ãðàôèêà";
+ Text[ polish ] = "Grafika";
+ Text[ japanese ] = "¸Þ×̨¯¸";
+ Text[ chinese_traditional ] = "¹Ï¤ù";
+ Text[ arabic ] = "ÕæÑÉ";
+ Text[ greek ] = "Ãñáöéêü";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ turkish ] = "Grafik";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALIDNAME
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültiger Name. : Ung³ltiger Name. */
+ Text = "Ungültiger Name." ;
+ Text [ ENGLISH ] = "Invalid name." ;
+ Text [ ENGLISH_US ] = "Invalid name." ;
+ Text [ italian ] = "Nome non valido." ;
+ Text [ spanish ] = "Nombre no válido." ;
+ Text [ french ] = "Nom incorrect." ;
+ Text [ dutch ] = "Ongeldige naam." ;
+ Text [ swedish ] = "Ogiltigt namn." ;
+ Text [ danish ] = "Ugyldigt navn." ;
+ Text [ portuguese ] = "Nome não válido." ;
+ Text [ portuguese_brazilian ] = "Ungültiger Name." ;
+ Text[ chinese_simplified ] = "ÎÞЧµÄÃû³Æ¡£";
+ Text[ russian ] = "Íåäîïóñòèìîå èìÿ.";
+ Text[ polish ] = "Nieprawid³owa nazwa.";
+ Text[ japanese ] = "–¼‘O‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µL®Äªº¦WºÙ¡C";
+ Text[ arabic ] = "ÇÓã ÛíÑ ÕÇáÍ.";
+ Text[ greek ] = "¢êõñï üíïìá.";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº À̸§.";
+ Text[ turkish ] = "Geçersiz ad.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_VALID_MACRONOTFOUND
+ {
+ Text = "Das eingestellte Makro wurde nicht gefunden." ;
+ Text [ ENGLISH ] = "The selected macro was not found." ;
+ Text [ dutch ] = "De gewenste macro kon niet worden gevonden." ;
+ Text [ english_us ] = "Selected macro not found." ;
+ Text [ italian ] = "La macro scelta non è stata trovata." ;
+ Text [ spanish ] = "La macro seleccionada no se encontró." ;
+ Text [ french ] = "Impossible de trouver la macro configurée." ;
+ Text [ swedish ] = "Det inställda makrot hittades inte." ;
+ Text [ danish ] = "Den valgte makro blev ikke fundet." ;
+ Text [ portuguese ] = "A macro seleccionada não foi encontrada." ;
+ Text [ portuguese_brazilian ] = "Das eingestellte Makro wurde nicht gefunden." ;
+ Text[ chinese_simplified ] = "ûÓÐÕÒµ½Õâ¸öÉ趨µÄºê¡£";
+ Text[ russian ] = "Óñòàíîâëåííûé ìàêðîñ íå íàéäåí.";
+ Text[ polish ] = "Zaznaczonego makra nie znaleziono.";
+ Text[ japanese ] = "ݒ肳‚ꂽϸۂªŒ©‚‚©‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¨S¦³§ä¨ì³o­Ó³]©wªº¥¨¶°¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÇáãÇßÑæ ÇáãÍÏÏ.";
+ Text[ greek ] = "Ç åðéëåãìÝíç ìáêñïåíôïëÞ äåí âñÝèçêå";
+ Text[ korean ] = "¼±ÅÃµÈ ¸ÅÅ©·Î°¡ ¹ß°ßµÇºñ ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Seçilen makro bulunamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_VALID_DEFERROR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der eingegebene Wert ist ungültig. : Der eingegebene Wert ist ung³ltig. */
+ Text = "Der eingegebene Wert ist ungültig." ;
+ Text [ ENGLISH ] = "Invalid data was entered." ;
+ Text [ dutch ] = "De ingevoerde waarde is ongeldig" ;
+ Text [ english_us ] = "Invalid value." ;
+ Text [ italian ] = "Il valore digitato non è valido." ;
+ Text [ spanish ] = "Valor no válido." ;
+ Text [ french ] = "Donnée entrée incorrecte." ;
+ Text [ swedish ] = "Det inmatade värdet är ogilitigt." ;
+ Text [ danish ] = "Den indtastede værdi er ugyldig." ;
+ Text [ portuguese ] = "O valor é incorrecto." ;
+ Text [ portuguese_brazilian ] = "Der eingegebene Wert ist ungültig." ;
+ Text[ chinese_simplified ] = "Õâ¸öÊäÈëµÄÊýÖµÎÞЧ¡£";
+ Text[ russian ] = "Ââåäåííîå çíà÷åíèå íåâåðíî.";
+ Text[ polish ] = "Wpisana wartoœæ jest nieprawid³owa.";
+ Text[ japanese ] = "“ü—Í‚³‚ꂽ’l‚Í–³Œø‚Å‚·";
+ Text[ chinese_traditional ] = "³o­Ó¿é¤Jªº¼Æ­ÈµL®Ä¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÏÎáÉ ÛíÑ ÕÇáÍÉ.";
+ Text[ greek ] = "Ìç Ýãêõñç ôéìÞ.";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº °ª.";
+ Text[ turkish ] = "Girilen deðer geçerli deðil.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PROGRESS_CALCULATING
+ {
+ Text = "berechnen" ;
+ Text [ ENGLISH ] = "calculating" ;
+ Text [ ENGLISH_US ] = "calculating" ;
+ Text [ spanish ] = "calcular" ;
+ Text [ portuguese ] = "calcular" ;
+ Text [ portuguese_brazilian ] = "berechnen" ;
+ Text [ swedish ] = "beräkna" ;
+ Text [ danish ] = "beregner" ;
+ Text [ italian ] = "calcola" ;
+ Text [ french ] = "calculer" ;
+ Text [ dutch ] = "berekenen" ;
+ Text[ chinese_simplified ] = "ÔËËã";
+ Text[ russian ] = "âû÷èñëèòü";
+ Text[ polish ] = "Obliczanie";
+ Text[ japanese ] = "ŒvŽZ";
+ Text[ chinese_traditional ] = "¹Bºâ";
+ Text[ arabic ] = "ÍÓÇÈ";
+ Text[ greek ] = "õðïëïãéóìüò";
+ Text[ korean ] = "°è»ê";
+ Text[ turkish ] = "hesaplanýyor";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PROGRESS_SORTING
+ {
+ Text = "sortieren" ;
+ Text [ ENGLISH ] = "sorting" ;
+ Text [ dutch ] = "sorteren" ;
+ Text [ english_us ] = "sorting" ;
+ Text [ swedish ] = "sortera" ;
+ Text [ danish ] = "sorterer" ;
+ Text [ italian ] = "ordina" ;
+ Text [ spanish ] = "ordenar" ;
+ Text [ french ] = "trier" ;
+ Text [ portuguese ] = "ordenar" ;
+ Text [ portuguese_brazilian ] = "sortieren" ;
+ Text[ chinese_simplified ] = "ÅÅÐò";
+ Text[ russian ] = "ñîðòèðîâàòü";
+ Text[ polish ] = "Sortowanie";
+ Text[ japanese ] = "•À‚בւ¦";
+ Text[ chinese_traditional ] = "±Æ§Ç";
+ Text[ arabic ] = "ÇáÝÑÒ";
+ Text[ greek ] = "ôáîéíüìçóç";
+ Text[ korean ] = "Á¤·Ä";
+ Text[ turkish ] = "sýralanýyor";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PROGRESS_HEIGHTING
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilenhöhen anpassen : Zeilenh÷hen anpassen */
+ Text = "Zeilenhöhen anpassen" ;
+ Text [ ENGLISH ] = "adjusting row heights" ;
+ Text [ portuguese ] = "Ajustar altura das linhas" ;
+ Text [ english_us ] = "Adapt row height" ;
+ Text [ portuguese_brazilian ] = "Zeilenhöhen anpassen" ;
+ Text [ swedish ] = "Anpassa radhöjder" ;
+ Text [ danish ] = "Tilpas rækkehøjde" ;
+ Text [ italian ] = "Adatta altezza riga" ;
+ Text [ spanish ] = "Ajustar altura de filas" ;
+ Text [ french ] = "Adapter haut.de lignes" ;
+ Text [ dutch ] = "Rijhoogte aanpassen" ;
+ Text[ chinese_simplified ] = "µ÷ÕûÐиß";
+ Text[ russian ] = "Ïîäáîð âûñîòû ñòðîêè";
+ Text[ polish ] = "Dostosuj wysokoϾ wierszy";
+ Text[ japanese ] = "s‚Ì‚‚³‚Ì“K‡";
+ Text[ chinese_traditional ] = "½Õ¾ãÄæ°ª";
+ Text[ arabic ] = "ãáÇÁãÉ ÇÑÊÝÇÚ ÇáÕÝæÝ";
+ Text[ greek ] = "ÐñïóáñìïãÞ ýøïõò ãñáììÞò";
+ Text[ korean ] = "»õ·Î¿î ³ôÀÌ Á¶Á¤";
+ Text[ turkish ] = "Satýr yüksekliklerini ayarla";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PROGRESS_COMPARING
+ {
+ Text = "Vergleiche #" ;
+ Text [ ENGLISH ] = "Compare #" ;
+ Text [ portuguese ] = "Comparar #" ;
+ Text [ english_us ] = "Compare #" ;
+ Text [ portuguese_brazilian ] = "Vergleiche #" ;
+ Text [ swedish ] = "Jämför #" ;
+ Text [ danish ] = "Sammenlign #" ;
+ Text [ italian ] = "Confronta #" ;
+ Text [ spanish ] = "Comparar #" ;
+ Text [ french ] = "Compare #" ;
+ Text [ dutch ] = "Vergelijk #" ;
+ Text[ chinese_simplified ] = "±È½Ï #";
+ Text[ russian ] = "Ñðàâíèòü #";
+ Text[ polish ] = "Porównaj #";
+ Text[ japanese ] = "”äŠr #";
+ Text[ chinese_traditional ] = "¤ñ¸û #";
+ Text[ arabic ] = "ãÞÇÑäÉ #";
+ Text[ greek ] = "Óýãêñéóç #";
+ Text[ korean ] = "ºñ±³ #";
+ Text[ turkish ] = "Karþýlaþtýr #";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DETINVALID_OVERFLOW
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die maximale Anzahl ungültiger Zellen wurde überschritten.\nEs wurden nicht alle ungültigen Zellen markiert. : Die maximale Anzahl ung³ltiger Zellen wurde ³berschritten.\nEs wurden nicht alle ung³ltigen Zellen markiert. */
+ Text = "Die maximale Anzahl ungültiger Zellen wurde überschritten.\nEs wurden nicht alle ungültigen Zellen markiert." ;
+ Text [ ENGLISH ] = "The limit of invalid cells was exceeded.\nNot all invalid cells have been marked." ;
+ Text [ dutch ] = "Het maximale aantal ongeldige cellen werd overschreden.\nNiet alle ongeldige cellen werden gemarkeerd." ;
+ Text [ english_us ] = "The maximum number of invalid cells has been exceeded.\nNot all invalid cells have been marked." ;
+ Text [ swedish ] = "Det maximala antalet ogiltiga celler överskreds.\nAlla ogiltiga celler blev inte markerade." ;
+ Text [ danish ] = "Det maksimale antal ugyldige celler blev overskredet.\\Alle ugyldige celler blev ikke markeret." ;
+ Text [ italian ] = "Il numero massimo di celle non valido è stato superato.\nNon sono state selezionate tutte le celle non valide." ;
+ Text [ spanish ] = "El número máximo de celdas no válidas se ha excedido.\nNo se marcaron todas las celdas no válidas." ;
+ Text [ french ] = "Le nombre maximal de cellules incorrectes a été dépassé.\nToutes les cellules incorrectes n'ont pas été marquées." ;
+ Text [ portuguese ] = "O número máximo de células incorrectas foi ultrapassado.\nNem todas as células incorrectas foram marcadas." ;
+ Text [ portuguese_brazilian ] = "Die maximale Anzahl ungültiger Zellen wurde überschritten.\nEs wurden nicht alle ungültigen Zellen markiert." ;
+ Text[ chinese_simplified ] = "ÒѾ­³¬¹ý×î¶àÎÞЧµ¥Ôª¸ñµÄÊýÄ¿¡£\nûÓÐÑ¡ÖÐÈ«²¿ÎÞЧµÄµ¥Ôª¸ñ¡£";
+ Text[ russian ] = "Ìàêñèìàëüíîå ÷èñëî íåäåéñòâèòåëüíûõ ÿ÷ååê ïðåâûøåíî.\nÂûäåëåíû íå âñå íåäåéñòâèòåëüíûå ÿ÷åéêè.";
+ Text[ polish ] = "Maksymalna iloœæ nieprawid³owych komórek zosta³a przekroczona.\nNie wszystkie nieprawid³owe komórki zosta³y zaznaczone.";
+ Text[ japanese ] = "–³Œø‚ȾقªÅ‘唂𒴂¦‚Ü‚µ‚½B\n–³Œø‚Ⱦق̓à‚ÉÏ°¸‚³‚ê‚Ä‚¢‚È‚¢‚à‚Ì‚ª‚ ‚è‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤w¸g¶W¹L³Ì¦hµL®ÄÀx¦s®æªº¼Æ¥Ø¡C\n¨S¦³¿ï¨ú¥þ³¡µL®ÄªºÀx¦s®æ¡C";
+ Text[ arabic ] = "Êã ÊÌÇæÒ ÇáÚÏÏ ÇáÃÞÕì ááÎáÇíÇ ÇáÛíÑ ÕÇáÍÉ.\náã íÊã ÊÍÏíÏ ßá ÇáÎáÇíÇ ÇáÛíÑ ÕÇáÍÉ.";
+ Text[ greek ] = "ÕðÝñâáóç ôïõ ìÝãéóôïõ áñéèìïý ìç Ýãêõñùí êåëéþí. Äåí \nÝãéíå óÞìáíóç üëùí ôùí ìç Ýãêõñùí êåëéþí.";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº ¼¿ÀÇ ÃÖ´ë °¹¼ö°¡ ÃÊ°ú µÇ¾ú½À´Ï´Ù. \n¸ðµç À¯È¿ÇÏÁö ¾ÊÀº ¼¿ÀÌ Ç¥±âµÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Azami geçersiz hücre sayýsý aþýldý.\nGeçersiz hücrelerin tümüü seçilmedi.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_QUICKHELP_DELETE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Inhalte löschen : Inhalte l÷schen */
+ Text = "Inhalte löschen" ;
+ Text [ ENGLISH ] = "Delete contents" ;
+ Text [ portuguese ] = "Apagar conteúdos" ;
+ Text [ english_us ] = "Delete contents" ;
+ Text [ portuguese_brazilian ] = "Inhalte löschen" ;
+ Text [ swedish ] = "Radera innehåll" ;
+ Text [ danish ] = "Slet indhold" ;
+ Text [ italian ] = "Elimina contenuti" ;
+ Text [ spanish ] = "Eliminar contenidos" ;
+ Text [ french ] = "Supprimer du contenu" ;
+ Text [ dutch ] = "Inhoud verwijderen" ;
+ Text[ chinese_simplified ] = "ɾ³ýÄÚÈÝ";
+ Text[ russian ] = "Óäàëèòü ñîäåðæèìîå";
+ Text[ polish ] = "Usuñ zawartoœci";
+ Text[ japanese ] = "“à—e‚ðíœ";
+ Text[ chinese_traditional ] = "§R°£¤º®e";
+ Text[ arabic ] = "ÍÐÝ ãÍÊæíÇÊ";
+ Text[ greek ] = "ÄéáãñáöÞ ðåñéå÷ïìÝíùí";
+ Text[ korean ] = "³»¿ë Áö¿ì±â";
+ Text[ turkish ] = "Ýçerikleri sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_QUICKHELP_REF
+ {
+ Text = "%1 Z x %2 S" ;
+ Text [ ENGLISH ] = "%1 R x %2 C" ;
+ Text [ portuguese ] = "%1 Z x %2 S" ;
+ Text [ english_us ] = "%1 R x %2 C" ;
+ Text [ portuguese_brazilian ] = "%1 Z x %2 S" ;
+ Text [ swedish ] = "%1 R x %2 K" ;
+ Text [ danish ] = "%1 R x %2 K" ;
+ Text [ italian ] = "%1 Z x %2 S" ;
+ Text [ spanish ] = "%1 F x %2 C" ;
+ Text [ french ] = "%1 Lgn x %2 Col" ;
+ Text [ dutch ] = "%1 r x %2 k" ;
+ Text[ chinese_simplified ] = "%1 ÐÐ x %2 ÁÐ";
+ Text[ russian ] = "%1 Ñ x %2 Ê";
+ Text[ polish ] = "%1 Z x %2 S";
+ Text[ japanese ] = "%1s x %2—ñ";
+ Text[ chinese_traditional ] = "%1 Äæ x %2 ¦C";
+ Text[ arabic ] = "%1 R x %2 C";
+ Text[ greek ] = "%1 Ã x %2 Ó";
+ Text[ korean ] = "%1 R x %2 C";
+ Text[ turkish ] = "%1 Sa x %2 Sü";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_FUNCTIONLIST_MORE
+ {
+ Text = "Andere..." ;
+ Text [ ENGLISH ] = "More Functions..." ;
+ Text [ portuguese ] = "Outros..." ;
+ Text [ english_us ] = "More..." ;
+ Text [ portuguese_brazilian ] = "Andere..." ;
+ Text [ swedish ] = "Andra..." ;
+ Text [ danish ] = "Andre..." ;
+ Text [ italian ] = "Altri..." ;
+ Text [ spanish ] = "Otros..." ;
+ Text [ french ] = "Autres..." ;
+ Text [ dutch ] = "Andere..." ;
+ Text[ chinese_simplified ] = "ÆäËû...";
+ Text[ russian ] = "Áîëüøå...";
+ Text[ polish ] = "Inne...";
+ Text[ japanese ] = "‚Ù‚©‚É...";
+ Text[ chinese_traditional ] = "¨ä¥L...";
+ Text[ arabic ] = "ÇáãÒíÏ...";
+ Text[ greek ] = "¢ëëá...";
+ Text[ korean ] = "ÀÚ¼¼È÷...";
+ Text[ turkish ] = "Diðer...";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ERR_INVALID_AREA
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültiger Bereich : Ung³ltiger Bereich */
+ Text = "Ungültiger Bereich" ;
+ Text [ ENGLISH ] = "Invalid Area" ;
+ Text [ portuguese ] = "Área não válida." ;
+ Text [ english_us ] = "Invalid range" ;
+ Text [ portuguese_brazilian ] = "Ungültiger Bereich" ;
+ Text [ swedish ] = "Ogiltigt område" ;
+ Text [ danish ] = "Ugyldigt område" ;
+ Text [ italian ] = "Area non valida" ;
+ Text [ spanish ] = "Referencia no válida" ;
+ Text [ french ] = "Plage incorrecte" ;
+ Text [ dutch ] = "Ongeldig bereik" ;
+ Text[ chinese_simplified ] = "ÎÞЧµÄÇøÓò";
+ Text[ russian ] = "Íåäîïóñòèìàÿ îáëàñòü";
+ Text[ polish ] = "Nieprawid³owy obszar";
+ Text[ japanese ] = "”͈͂ɖâ‘肪‚ ‚è‚Ü‚·";
+ Text[ chinese_traditional ] = "µL®Äªº°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÛíÑ ÕÇáÍ";
+ Text[ greek ] = "Ìç Ýãêõñç ðåñéï÷Þ";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº ¿µ¿ª";
+ Text[ turkish ] = "Geçersiz aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ // Vorlagen fuer Pivottabellen
+ String STR_PIVOT_STYLE_INNER
+ {
+ Text = "Datenpilot Wert" ;
+ Text [ ENGLISH ] = "Datapilot Value" ;
+ Text [ portuguese ] = "Valor do Piloto de Dados" ;
+ Text [ english_us ] = "DataPilot Value" ;
+ Text [ portuguese_brazilian ] = "Datenpilot Wert" ;
+ Text [ swedish ] = "Datapilot värde" ;
+ Text [ danish ] = "DataPilot værdi" ;
+ Text [ italian ] = "DataPilot Valore" ;
+ Text [ spanish ] = "Piloto de Datos Valor" ;
+ Text [ french ] = "Valeur DataPilote" ;
+ Text [ dutch ] = "DataPiloot Waarde" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí-¹¤×÷±í ÊýÖµ";
+ Text[ russian ] = "Çíà÷åíèå ñâîäíîé òàáëèöû";
+ Text[ polish ] = "WartoϾ Pilota danych";
+ Text[ japanese ] = "ÃÞ°À Ê߲ۯĒl";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z¤u§@ªí¼Æ­È";
+ Text[ arabic ] = "ÞíãÉ ãÑÔÏ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÔéìÞ ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ °ª";
+ Text[ turkish ] = "Veri pilotu deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_STYLE_RESULT
+ {
+ Text = "Datenpilot Ergebnis" ;
+ Text [ ENGLISH ] = "Datapilot Result" ;
+ Text [ portuguese ] = "Resultado do Piloto de Dados" ;
+ Text [ english_us ] = "DataPilot Result" ;
+ Text [ portuguese_brazilian ] = "Datenpilot Ergebnis" ;
+ Text [ swedish ] = "Datapilot resultat" ;
+ Text [ danish ] = "DataPilot resultat" ;
+ Text [ italian ] = "DataPilot Risultato" ;
+ Text [ spanish ] = "Piloto de Datos Resultado" ;
+ Text [ french ] = "Résultat DataPilote" ;
+ Text [ dutch ] = "DataPiloot Resultaat" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí¹¤×÷±í ½á¹û";
+ Text[ russian ] = "Ðåçóëüòàò ñâîäíîé òàáëèöû";
+ Text[ polish ] = "Rezultat Pilota danych";
+ Text[ japanese ] = "ÃÞ°À Ê߲ۯČ‹‰Ê";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z¤u§@ªíµ²ªG";
+ Text[ arabic ] = "äÊíÌÉ ãÑÔÏ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÁðïôÝëåóìá ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ °á°ú";
+ Text[ turkish ] = "Veri pilotu sonucu";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_STYLE_CATEGORY
+ {
+ Text = "Datenpilot Kategorie" ;
+ Text [ ENGLISH ] = "Datapilot Category" ;
+ Text [ portuguese ] = "Categoria do Piloto de Dados" ;
+ Text [ english_us ] = "DataPilot Category" ;
+ Text [ portuguese_brazilian ] = "Datenpilot Kategorie" ;
+ Text [ swedish ] = "Datapilot kategori" ;
+ Text [ danish ] = "DataPilot kategori" ;
+ Text [ italian ] = "DataPilot Categoria" ;
+ Text [ spanish ] = "Categoría del Piloto de Datos" ;
+ Text [ french ] = "Catégorie DataPilote" ;
+ Text [ dutch ] = "DataPiloot Categorie" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí ·ÖÀà";
+ Text[ russian ] = "Êàòåãîðèÿ ñâîäíîé òàáëèöû";
+ Text[ polish ] = "Kategoria Pilota danych";
+ Text[ japanese ] = "ÃÞ°À Ê߲ۯĀ–Ú";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z ¤ÀÃþ";
+ Text[ arabic ] = "ÝÆÉ ãÑÔÏ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "Êáôçãïñßá ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ ºÐ·ù Ç׸ñ";
+ Text[ turkish ] = "Veri pilotu kategorisi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_STYLE_TITLE
+ {
+ Text = "Datenpilot Titel" ;
+ Text [ ENGLISH ] = "Datapilot Title" ;
+ Text [ portuguese ] = "Título do Piloto de Dados" ;
+ Text [ english_us ] = "DataPilot Title" ;
+ Text [ portuguese_brazilian ] = "Datenpilot Titel" ;
+ Text [ swedish ] = "Datapilot titel" ;
+ Text [ danish ] = "DataPilot titel" ;
+ Text [ italian ] = "DataPilot Titolo" ;
+ Text [ spanish ] = "Piloto de Datos Título" ;
+ Text [ french ] = "Titre DataPilote" ;
+ Text [ dutch ] = "Titel DataPiloot" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí¹¤×÷±í ±êÌâ";
+ Text[ russian ] = "Çàãîëîâîê ñâîäíîé òàáëèöû";
+ Text[ polish ] = "Tytu³ Pilota danych";
+ Text[ japanese ] = "ÃÞ°À Ê߲ۯČ©o‚µ";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z¤u§@ªí¼ÐÃD";
+ Text[ arabic ] = "ÚäæÇä ãÑÔÏ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "Ôßôëïò ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ Á¦¸ñ";
+ Text[ turkish ] = "Veri pilotu baþlýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_STYLE_FIELDNAME
+ {
+ Text = "Datenpilot Feld" ;
+ Text [ ENGLISH ] = "Datapilot Field" ;
+ Text [ portuguese ] = "Campo do Piloto de Dados" ;
+ Text [ english_us ] = "DataPilot Field" ;
+ Text [ portuguese_brazilian ] = "Datenpilot Feld" ;
+ Text [ swedish ] = "Datapilot fält" ;
+ Text [ danish ] = "DataPilot felt" ;
+ Text [ italian ] = "DataPilot Campo" ;
+ Text [ spanish ] = "Piloto de Datos Campo" ;
+ Text [ french ] = "Champ DataPilote" ;
+ Text [ dutch ] = "DataPiloot Veld" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí¹¤×÷±í ×Ö¶Î";
+ Text[ russian ] = "Ïîëå ñâîäíîé òàáëèöû";
+ Text[ polish ] = "Pole Pilota danych";
+ Text[ japanese ] = "ÃÞ°À Êß²Û¯Ä Ì¨°ÙÄÞ";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z¤u§@ªíÄæ¦ì";
+ Text[ arabic ] = "ÍÞá ãÑÔÏ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "Ðåäßï ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ Çʵå";
+ Text[ turkish ] = "Veri pilotu alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_PIVOT_STYLE_TOP
+ {
+ Text = "Datenpilot Ecke" ;
+ Text [ ENGLISH ] = "Datapilot Corner" ;
+ Text [ portuguese ] = "Piloto de Dados Esquina" ;
+ Text [ english_us ] = "DataPilot Corner" ;
+ Text [ portuguese_brazilian ] = "Datenpilot Ecke" ;
+ Text [ swedish ] = "Datapilot hörn" ;
+ Text [ danish ] = "DataPilot hjørne" ;
+ Text [ italian ] = "DataPilot Angolo" ;
+ Text [ spanish ] = "Piloto de Datos Ángulo" ;
+ Text [ french ] = "DataPilote Coin" ;
+ Text [ dutch ] = "DataPiloot Hoek" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí ½Ç";
+ Text[ russian ] = "Óãîë ñâîäíîé òàáëèöû";
+ Text[ polish ] = "Naró¿nik Pilota danych";
+ Text[ japanese ] = "ÃÞ°À Ê߲ۯĊp";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z ¨¤";
+ Text[ arabic ] = "ÒÇæíÉ ãÑÔÏ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "¢êñç ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ ÄÚ³Ê";
+ Text[ turkish ] = "Veri pilotu köþesi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_OPERATION_FILTER
+ {
+ Text = "Filter" ;
+ Text [ ENGLISH ] = "Filter" ;
+ Text [ portuguese ] = "Filtro" ;
+ Text [ english_us ] = "Filter" ;
+ Text [ portuguese_brazilian ] = "Filter" ;
+ Text [ swedish ] = "Filter" ;
+ Text [ danish ] = "Filter" ;
+ Text [ italian ] = "Filtro" ;
+ Text [ spanish ] = "Filtro" ;
+ Text [ french ] = "Filtre" ;
+ Text [ dutch ] = "Filter" ;
+ Text[ chinese_simplified ] = "ɸѡ";
+ Text[ russian ] = "Ôèëüòð";
+ Text[ polish ] = "Filtr";
+ Text[ japanese ] = "̨ÙÀ°";
+ Text[ chinese_traditional ] = "¿z¿ï";
+ Text[ arabic ] = "ÝáÊÑ";
+ Text[ greek ] = "Ößëôñï";
+ Text[ korean ] = "ÇÊÅÍ";
+ Text[ turkish ] = "Filtre";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_OPERATION_SORT
+ {
+ Text = "Sortierung" ;
+ Text [ ENGLISH ] = "Sort" ;
+ Text [ portuguese ] = "Ordenar" ;
+ Text [ english_us ] = "Sort" ;
+ Text [ portuguese_brazilian ] = "Sortierung" ;
+ Text [ swedish ] = "Sortering" ;
+ Text [ danish ] = "Sortering" ;
+ Text [ italian ] = "Ordina" ;
+ Text [ spanish ] = "Ordenar" ;
+ Text [ french ] = "Tri" ;
+ Text [ dutch ] = "Sortering" ;
+ Text[ chinese_simplified ] = "ÅÅÐò";
+ Text[ russian ] = "Ñîðòèðîâêà";
+ Text[ polish ] = "Sortowanie";
+ Text[ japanese ] = "•À‚בւ¦";
+ Text[ chinese_traditional ] = "±Æ§Ç";
+ Text[ arabic ] = "ÇáÝÑÒ";
+ Text[ greek ] = "Ôáîéíüìçóç";
+ Text[ korean ] = "Á¤¿­";
+ Text[ turkish ] = "Sýralama";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_OPERATION_SUBTOTAL
+ {
+ Text = "Teilergebnisse" ;
+ Text [ ENGLISH ] = "Subtotals" ;
+ Text [ portuguese ] = "Subtotais" ;
+ Text [ english_us ] = "Subtotals" ;
+ Text [ portuguese_brazilian ] = "Teilergebnisse" ;
+ Text [ swedish ] = "Delresultat" ;
+ Text [ danish ] = "Subtotaler" ;
+ Text [ italian ] = "Subtotali" ;
+ Text [ spanish ] = "Subtotales" ;
+ Text [ french ] = "Sous-totaux" ;
+ Text [ dutch ] = "Subtotalen" ;
+ Text[ chinese_simplified ] = "·ÖÀà»ã×Ü";
+ Text[ russian ] = "Ïðîìåæóòî÷íûå èòîãè";
+ Text[ polish ] = "Sumy poœrednie";
+ Text[ japanese ] = "¬Œv";
+ Text[ chinese_traditional ] = "¤p­p";
+ Text[ arabic ] = "ÇáãÍÕáÇÊ ÇáÌÒÆíÉ";
+ Text[ greek ] = "ÌåñéêÜ áèñïßóìáôá";
+ Text[ korean ] = "¼Ò°è";
+ Text[ turkish ] = "Ara toplam";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_OPERATION_NONE
+ {
+ Text = "keine" ;
+ Text [ ENGLISH ] = "none" ;
+ Text [ portuguese ] = "nenhum" ;
+ Text [ english_us ] = "None" ;
+ Text [ portuguese_brazilian ] = "keine" ;
+ Text [ swedish ] = "ingen" ;
+ Text [ danish ] = "ingen" ;
+ Text [ italian ] = "nessuno" ;
+ Text [ spanish ] = "ninguno" ;
+ Text [ french ] = "aucun(e)" ;
+ Text [ dutch ] = "geen" ;
+ Text[ chinese_simplified ] = "ÎÞ";
+ Text[ russian ] = "áåç";
+ Text[ polish ] = "brak";
+ Text[ japanese ] = "‚È‚µ";
+ Text[ chinese_traditional ] = "µL";
+ Text[ arabic ] = "ÈÏæä";
+ Text[ greek ] = "ÊáíÝíá";
+ Text[ korean ] = "¾øÀ½";
+ Text[ turkish ] = "Yok";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_IMPORT_REPLACE
+ {
+ Text = "Wollen Sie den Inhalt von # ersetzen?" ;
+ Text [ ENGLISH ] = "Replace content of #?" ;
+ Text [ portuguese ] = "Deseja substituir o conteúdo de #?" ;
+ Text [ english_us ] = "Do you want to replace the contents of #?" ;
+ Text [ portuguese_brazilian ] = "Wollen Sie den Inhalt von # ersetzen?" ;
+ Text [ swedish ] = "Vill Du ersätta innehållet i #?" ;
+ Text [ danish ] = "Vil du erstatte indholdet af #?" ;
+ Text [ italian ] = "Sostituire il contenuto di #?" ;
+ Text [ spanish ] = "¿Desea reemplazar el contenido de #?" ;
+ Text [ french ] = "Souhaitez-vous remplacer le contenu de # ?" ;
+ Text [ dutch ] = "Wilt u de inhoud van # vervangen?" ;
+ Text[ chinese_simplified ] = "ÄúÒª¸üÌæ # µÄÄÚÈÝ£¿";
+ Text[ russian ] = "Âû õîòèòå çàìåíèòü ñîäåðæàíèå #?";
+ Text[ polish ] = "Chcesz zamieniæ zawartoœæ #?";
+ Text[ japanese ] = "“à—e‚ð#‚É’u‚«Š·‚¦‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "±z­n¥N´À # ªº¤º®e¡H";
+ Text[ arabic ] = "åá ÊÑíÏ ÇÓÊÈÏÇá ãÍÊæíÇÊ #¿";
+ Text[ greek ] = "ÈÝëåôå ðñáãìáôéêÜ íá ãßíåé áíôéêáôÜóôáóç ôïõ ðåñéå÷ïìÝíïõ ôïõ #;";
+ Text[ korean ] = "#ÀÇ ³»¿ëÀ» ¹Ù²Ù½Ã°Ú½À´Ï±î?";
+ Text[ turkish ] = "# içeriðini deðiþtirmek istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TIP_WIDTH
+ {
+ Text = "Breite:" ;
+ Text [ ENGLISH ] = "Width:" ;
+ Text [ portuguese ] = "Largura:" ;
+ Text [ english_us ] = "Width:" ;
+ Text [ portuguese_brazilian ] = "Breite:" ;
+ Text [ swedish ] = "Bredd:" ;
+ Text [ danish ] = "Bredde:" ;
+ Text [ italian ] = "Larghezza:" ;
+ Text [ spanish ] = "Ancho:" ;
+ Text [ french ] = "Largeur :" ;
+ Text [ dutch ] = "Breedte:" ;
+ Text[ chinese_simplified ] = "¿í:";
+ Text[ russian ] = "Øèðèíà:";
+ Text[ polish ] = "SzerokoϾ:";
+ Text[ japanese ] = "•:";
+ Text[ chinese_traditional ] = "¼e¡G";
+ Text[ arabic ] = "ÇáÚÑÖ:";
+ Text[ greek ] = "ÐëÜôïò:";
+ Text[ korean ] = "³Êºñ:";
+ Text[ turkish ] = "Geniþlik:";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TIP_HEIGHT
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Höhe: : H÷he: */
+ Text = "Höhe:" ;
+ Text [ ENGLISH ] = "Height:" ;
+ Text [ portuguese ] = "Altura:" ;
+ Text [ english_us ] = "Height:" ;
+ Text [ portuguese_brazilian ] = "Höhe:" ;
+ Text [ swedish ] = "Höjd:" ;
+ Text [ danish ] = "Højde:" ;
+ Text [ italian ] = "Altezza:" ;
+ Text [ spanish ] = "Altura:" ;
+ Text [ french ] = "Hauteur :" ;
+ Text [ dutch ] = "Hoogte:" ;
+ Text[ chinese_simplified ] = "¸ß£º";
+ Text[ russian ] = "Âûñîòà:";
+ Text[ polish ] = "Wys.:";
+ Text[ japanese ] = "‚‚³:";
+ Text[ chinese_traditional ] = "°ª¡G";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ:";
+ Text[ greek ] = "¾øïò:";
+ Text[ korean ] = "³ôÀÌ:";
+ Text[ turkish ] = "Yükseklik:";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TIP_HIDE
+ {
+ Text = "Ausblenden" ;
+ Text [ ENGLISH ] = "Hide" ;
+ Text [ portuguese ] = "Ocultar" ;
+ Text [ english_us ] = "Hide" ;
+ Text [ portuguese_brazilian ] = "Ausblenden" ;
+ Text [ swedish ] = "Dölj" ;
+ Text [ danish ] = "Skjul" ;
+ Text [ italian ] = "Nascondi" ;
+ Text [ spanish ] = "Ocultar" ;
+ Text [ french ] = "Masquer" ;
+ Text [ dutch ] = "Verbergen" ;
+ Text[ chinese_simplified ] = "ÒþÈë";
+ Text[ russian ] = "Ñêðûòü";
+ Text[ polish ] = "Ukryj";
+ Text[ japanese ] = "•\\Ž¦‚µ‚È‚¢";
+ Text[ chinese_traditional ] = "Áô¤J";
+ Text[ arabic ] = "ÅÎÝÇÁ";
+ Text[ greek ] = "Áðüêñõøç";
+ Text[ korean ] = "¼û±â±â";
+ Text[ turkish ] = "Gizle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ERR_INSERTOBJ
+ {
+ Text = "Das Objekt konnte nicht eingefügt werden." ;
+ Text [ ENGLISH ] = "The object could not be inserted." ;
+ Text [ portuguese ] = "Foi impossível inserir o objecto." ;
+ Text [ english_us ] = "The object could not be inserted." ;
+ Text [ portuguese_brazilian ] = "Das Objekt konnte nicht eingefügt werden." ;
+ Text [ swedish ] = "Objektet kunde inte infogas." ;
+ Text [ danish ] = "Det var ikke muligt at indsætte objektet." ;
+ Text [ italian ] = "Non è stato possibile inserire l'oggetto." ;
+ Text [ spanish ] = "No se pudo insertar el objeto." ;
+ Text [ french ] = "L'objet n'a pas pu être inséré." ;
+ Text [ dutch ] = "Het object kon niet worden ingevoegd." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨²åÈë¶ÔÏó¡£";
+ Text[ russian ] = "Íå óäàåòñÿ âñòàâèòü ýòîò îáúåêò.";
+ Text[ polish ] = "Obiekt nie móg³ zostaæ wstawiony.";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä‚Í‘}“ü‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "µLªk´¡¤Jª«¥ó¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÅÏÑÇÌ ÇáßÇÆä.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá ãßíåé åéóáãùãÞ ôïõ áíôéêåéìÝíïõ.";
+ Text[ korean ] = "°³Ã¼°¡ »ðÀÔµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Nesne eklenemedi.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHANGED_BLANK
+ {
+ Text = "<leer>" ;
+ Text [ ENGLISH ] = "<blank>" ;
+ Text [ ENGLISH_US ] = "<empty>" ;
+ Text [ portuguese ] = "<vazio>" ;
+ Text [ portuguese_brazilian ] = "<leer>" ;
+ Text [ swedish ] = "<tom>" ;
+ Text [ danish ] = "<tom>" ;
+ Text [ italian ] = "<vuoto>" ;
+ Text [ spanish ] = "<vacío>" ;
+ Text [ french ] = "<vide>" ;
+ Text [ dutch ] = "<leeg>" ;
+ Text[ chinese_simplified ] = "<¿Õ°×>";
+ Text[ russian ] = "<ïóñòîé>";
+ Text[ polish ] = "<pusty>";
+ Text[ japanese ] = "<‹ó>";
+ Text[ chinese_traditional ] = "<ªÅ¥Õ>";
+ Text[ arabic ] = "<ÝÇÑÛ>";
+ Text[ greek ] = "<êåíü>";
+ Text[ korean ] = "<ºí·©Å©>";
+ Text[ turkish ] = "<boþ>";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHANGED_CELL
+ {
+ Text = "Zelle #1 von '#2' zu '#3' geändert" ;
+ Text [ ENGLISH ] = "Changed cell #1 from '#2' to '#3'" ;
+ Text [ ENGLISH_US ] = "Cell #1 changed from '#2' to '#3'" ;
+ Text [ portuguese ] = "Célula #1 modificada de '#2' para '#3'" ;
+ Text [ portuguese_brazilian ] = "Zelle #1 von '#2' zu '#3' geändert" ;
+ Text [ swedish ] = "Cell #1 har ändrats från '#2' till '#3'" ;
+ Text [ danish ] = "Celle #1 blev ændret fra '#2' til '#3'" ;
+ Text [ italian ] = "Riga #1 di '#2' modificata in '#3'" ;
+ Text [ spanish ] = "Celda #1 cambiada de '#2' a '#3' " ;
+ Text [ french ] = "Cellule #1 modifiée de '#2' en '#3'" ;
+ Text [ dutch ] = "Cel #1 van '#2' in '#3' gewijigd" ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñ #1 ´Ó '#2' ¸Ä±ä³É '#3'";
+ Text[ russian ] = "ß÷åéêà #1 èçìåíåíà ñ '#2' íà '#3'";
+ Text[ polish ] = "Komórka #1 zmieniona z '#2' na '#3' ";
+ Text[ japanese ] = "¾Ù#1‚Í'#2'‚©‚ç'#3'‚Ö•ÏX‚³‚ê‚Ä‚¢‚Ü‚·";
+ Text[ chinese_traditional ] = "Àx¦s®æ #1 ±q '#2' ÅÜ§ó¦¨ '#3'";
+ Text[ arabic ] = "Êã ÊÛííÑ ÇáÎáíÉ #1 ãä '#2' Åáì '#3'";
+ Text[ greek ] = "Ôï êåëß #1 Üëëáîå áðü '#2' óå '#3'";
+ Text[ korean ] = "¼¿ #1 Àº '#2'¿¡¼­ '#3'·Î º¯°æµÊ";
+ Text[ turkish ] = "#1 hücresi, '#2' iken '#3' olarak deðiþtirildi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHANGED_INSERT
+ {
+ Text = "#1 eingefügt" ;
+ Text [ ENGLISH ] = "Inserted #1" ;
+ Text [ ENGLISH_US ] = "#1 inserted" ;
+ Text [ portuguese ] = "#1 inserido" ;
+ Text [ portuguese_brazilian ] = "#1 eingefügt" ;
+ Text [ swedish ] = "#1 infogad" ;
+ Text [ danish ] = "#1 indsat" ;
+ Text [ italian ] = "#1 inserito" ;
+ Text [ spanish ] = "#1 insertada" ;
+ Text [ french ] = "#1 inséré" ;
+ Text [ dutch ] = "#1 ingevoegd" ;
+ Text[ chinese_simplified ] = "ÒѾ­¼ÓÈë #1";
+ Text[ russian ] = "#1 âñòàâëåí";
+ Text[ polish ] = "#1 wstawiony";
+ Text[ japanese ] = "#1‘}“ü";
+ Text[ chinese_traditional ] = "¤w¸g¥[¤J #1";
+ Text[ arabic ] = "Êã ÅÏÑÇÌ #1";
+ Text[ greek ] = "#1 åéóÜ÷èçêáí";
+ Text[ korean ] = "#1 »ðÀÔ";
+ Text[ turkish ] = "#1 eklendi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHANGED_DELETE
+ {
+ Text = "#1 gelöscht" ;
+ Text [ ENGLISH ] = "Deleted #1" ;
+ Text [ ENGLISH_US ] = "#1deleted" ;
+ Text [ portuguese ] = "#1 eliminado" ;
+ Text [ portuguese_brazilian ] = "#1 gelöscht" ;
+ Text [ swedish ] = "#1 raderad" ;
+ Text [ danish ] = "#1 slettet" ;
+ Text [ italian ] = "#1 cancellato" ;
+ Text [ spanish ] = "#1 eliminada" ;
+ Text [ french ] = "#1 supprimé" ;
+ Text [ dutch ] = "#1 gewist" ;
+ Text[ chinese_simplified ] = "ÒѾ­É¾³ý #1";
+ Text[ russian ] = "#1 óäàëåí";
+ Text[ polish ] = "#1 usuniêty";
+ Text[ japanese ] = "#1íœ";
+ Text[ chinese_traditional ] = "¤w¸g§R°£ #1";
+ Text[ arabic ] = "Êã ÍÐÝ #1";
+ Text[ greek ] = "#1 Ý÷åé äéáãñáöåß";
+ Text[ korean ] = "#1 »èÁ¦";
+ Text[ turkish ] = "#1 silindi";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CHANGED_MOVE
+ {
+ Text = "Bereich von #1 nach #2 verschoben" ;
+ Text [ ENGLISH ] = "Moved area from #1 to #2" ;
+ Text [ ENGLISH_US ] = "Range moved from #1 to #2" ;
+ Text [ portuguese ] = "Mover área #1 para #2" ;
+ Text [ portuguese_brazilian ] = "Bereich von #1 nach #2 verschoben" ;
+ Text [ swedish ] = "Område flyttat från #1 till #2" ;
+ Text [ danish ] = "Område flyttet fra #1 til #2" ;
+ Text [ italian ] = "Area spostata da #1 a #2" ;
+ Text [ spanish ] = "Área desplazada de #1 a #2" ;
+ Text [ french ] = "Plage déplacée de #1 vers #2" ;
+ Text [ dutch ] = "Bereik van #1 naar #2 verplaatst" ;
+ Text[ chinese_simplified ] = "ÇøÓò´Ó #1 Òƶ¯µ½ #2";
+ Text[ russian ] = "Îáëàñòü ïåðåìåùåíà èç #1 â #2";
+ Text[ polish ] = "Obszar przesuniêty z #1 do #2 ";
+ Text[ japanese ] = "”͈͂Í#1‚©‚ç#2‚ÖˆÚ“®‚µ‚Ü‚µ‚½";
+ Text[ chinese_traditional ] = "°Ï°ì±q #1 ²¾°Ê¨ì #2";
+ Text[ arabic ] = "ÅÒÇÍÉ ÇáäØÇÞ ãä #1 Åáì #2";
+ Text[ greek ] = "Ìåôáêßíçóç ðåñéï÷Þò áðü #1 ðñïò #2";
+ Text[ korean ] = "#1 ¿¡¼­ #2·Î ¿µ¿ª À̵¿";
+ Text[ turkish ] = "Aralýk taþýndý; eski konum #1 yeni konum #2";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_END_REDLINING_TITLE
+ {
+ Text = "Aufzeichnung beenden" ;
+ Text [ ENGLISH ] = "Remove change history" ;
+ Text [ portuguese ] = "Cancelar registo" ;
+ Text [ english_us ] = "Exit Recording" ;
+ Text [ portuguese_brazilian ] = "Aufzeichnung beenden" ;
+ Text [ swedish ] = "Avsluta inspelning" ;
+ Text [ danish ] = "Afslut registrering" ;
+ Text [ italian ] = "Termina registrazione" ;
+ Text [ spanish ] = "Finalizar registro" ;
+ Text [ french ] = "Quitter l'enregistrement" ;
+ Text [ dutch ] = "Notering beëindigen" ;
+ Text[ chinese_simplified ] = "½áÊø¼Ç¼";
+ Text[ russian ] = "Çàêîí÷èòü çàïèñü èñïðàâëåíèé";
+ Text[ polish ] = "Zakoñcz rejestracjê";
+ Text[ japanese ] = "‹L˜^‚ÌI—¹";
+ Text[ chinese_traditional ] = "µ²§ô­×§ï";
+ Text[ arabic ] = "ÅäåÇÁ ÇáÊÓÌíá";
+ Text[ greek ] = "ÔÝëïò êáôáãñáöÞò";
+ Text[ korean ] = "±â·Ï º¯°æÀ» Ãë¼Ò";
+ Text[ turkish ] = "Kaydý durdur";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_END_REDLINING
+ {
+ Text = "Mit dieser Aktion wird die Aufzeichnung von Änderungen beendet.\nDie Information über Änderungen geht hierdurch verloren.\n\nAufzeichnung beenden?\n\n" ;
+ Text [ ENGLISH ] = "This Action will remove the change history.\nThe information about changes will be lost.\n\n Remove the change history." ;
+ Text [ portuguese ] = "Com esta acção será cancelado o registo das modificações.\nAs informações sobre modificações prévias desaparecerão.\n\nCancelar?\n\n" ;
+ Text [ english_us ] = "This action will exit record changes.\nAny information about changes will be lost.\n\nExit record changes?\n\n" ;
+ Text [ portuguese_brazilian ] = "Mit dieser Aktion wird die Aufzeichnung von Änderungen beendet.\nDie Information über Änderungen geht hierdurch verloren.\n\nAufzeichnung beenden?\n\n" ;
+ Text [ swedish ] = "Med hjälp av den här åtgärden avslutas inspelningen av ändringarna.\nInformationen över ändringarna går härmed förlorad.\n\nAvsluta inspelningen?" ;
+ Text [ danish ] = "Denne handling afslutter registreringen af ændringer.\nAlle informationer om ændringer vil herigennem gå tabt.\nVil du afslutte registreringen?" ;
+ Text [ italian ] = "Con questa operazione si termina la registrazione delle modifiche.\nL'informazione relativa alle modifiche andrà persa.\n\nTerminare la registrazione?\n\n" ;
+ Text [ spanish ] = "Esta acción finalizará la grabación de modificaciones.\nCualquier información sobre modificaciones se perderá.\n\n¿Desea finalizar la grabación?\n\n" ;
+ Text [ french ] = "Cette opération met fin à l'enregistrement des modifications.\nToute information concernant les modifications sera perdue.\n\nQuitter l'enregistrement ?\n\n" ;
+ Text [ dutch ] = "Door deze activiteit wordt het noteren van wijzigingen beëindigd.\\ nDe informatie over wijzigingen gaat hierdoor verloren.\n\nNoteren beëindigen?\n\n" ;
+ Text[ chinese_simplified ] = "Õâ¸ö²Ù×÷»áÖжϸü¸Ä¼Ç¼¡£\n¸ü¸ÄÄÚÈݾͻáÒÅʧ¡£\n\nÄú»¹ÊÇÒªÖжϼǼÂð£¿\n\n";
+ Text[ russian ] = "Ýòèì äåéñòâèåì çàêîí÷èòñÿ çàïèñü èñïðàâëåíèé.\nËþáàÿ èíôîðìàöèÿ î ïðåäûäóùèõ èñïðàâëåíèÿõ áóäåò óòåðÿíà.\n\nÇàêîí÷èòü çàïèñü èñïðàâëåíèé?\n\n";
+ Text[ polish ] = "Ta akcja koñczy rejestracjê modyfikacji.\nInformacje o zmianach zostan¹ usuniête.\n\nZakoñczyæ rejestracjê?\n\n";
+ Text[ japanese ] = "‚±‚̱¸¼®Ý‚Å•ÏX‚Ì‹L˜^‚ÍI—¹‚³‚ê‚Ü‚·B\n•ÏX‚ÉŠÖ‚·‚éî•ñ‚Í‚±‚ê‚ÅŽ¸‚í‚ê‚Ü‚·B\n\n‹L˜^‚ðI—¹‚µ‚Ü‚·‚©?\n\n";
+ Text[ chinese_traditional ] = "³o­Ó¾Þ§@·|µ²§ô­×§ï¡C\n­×§ï¤º®e´N·|¬y¥¢¡C\n\n±zÁÙ¬O­nÄ~Äò¡H\n\n";
+ Text[ arabic ] = "åÐÇ ÇáÅÌÑÇÁ ÓæÝ íÄÏí Åáì ÅäåÇÁ ÚãáíÉ ÊÓÌíá ÇáÊÛííÑÇÊ.\nÓæÝ íÄÏí åÐÇ ÈÏæÑå Åáì ÖíÇÚ ÇáãÚáæãÇÊ ÇáÎÇÕÉ ÈÇáÊÛííÑÇÊ.\n\nåá ÊÑíÏ ÅäåÇÁ ÇáÊÓÌíá¿\n\n";
+ Text[ greek ] = "Ìå áõôÞ ôçí åíÝñãåéá ôåñìáôßæåôáé ç êáôáãñáöÞ áëëáãþí. Ç \nðëçñïöïñßåò ó÷åôéêÜ ìå ôéò áëëáãÝò ðñüêåéôáé íá ÷áèïýí.\n\nÍá ôåñìáôéóôåß ç åããñáöÞ;\n\n";
+ Text[ korean ] = "±â·Ï º¯°æÀº Ãë¼Ò µÉ°ÍÀÔ´Ï´Ù.\nÀÌÀü º¯°æ¿¡´ëÇÑ ¸ðµç Á¤º¸´Â ¼Õ½Ç µÉ°ÍÀÔ´Ï´Ù .\n\n±â·Ï º¯°æÀ» Ãë¼ÒÇϽðڽÀ´Ï±î?\n\n";
+ Text[ turkish ] = "Bu iþlem ile deðiþikliklerin izlenmesi sona erdirilecek.\nDaha önceki deðiþiklikler ile ilgili tüm bilgiler kaybolacak.\n\nKayýt durdurulsun mu?\n\n";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_CLOSE_ERROR_LINK
+ {
+ Text = "Das Dokument kann nicht geschlossen werden, während eine Verknüpfung aktualisiert wird." ;
+ Text [ ENGLISH ] = "The document cannot be closed while a link is being updated." ;
+ Text [ portuguese ] = "Impossível fechar o documento enquanto a ligação estiver a ser actualizada. " ;
+ Text [ english_us ] = "The document can not be closed while a link is being updated." ;
+ Text [ portuguese_brazilian ] = "Das Dokument kann nicht geschlossen werden, während eine Verknüpfung aktualisiert wird." ;
+ Text [ swedish ] = "Dokumentet kan inte stängas medan en länk uppdateras." ;
+ Text [ danish ] = "Det er ikke muligt at lukke dokumentet, mens en kæde opdateres." ;
+ Text [ italian ] = "Impossibile chiudere il documento durante l'aggiornamento di un collegamento." ;
+ Text [ spanish ] = "El documento no se puede cerrar mientras se esté actualizando un vínculo." ;
+ Text [ french ] = "Impossible de fermer le document durant l'actualisation d'un lien !" ;
+ Text [ dutch ] = "Het document kan niet worden gesloten terwijl een verbinding wordt gerealiseerd." ;
+ Text[ chinese_simplified ] = "ÔÚ¸üÐÂÒ»¸öÁ´½ÓʱÎÞ·¨¹Ø±ÕÕâ¸öÎĵµ¡£";
+ Text[ russian ] = "Çàêðûòü äîêóìåíò âî âðåìÿ îáíîâëåíèÿ ññûëêè íåâîçìîæíî.";
+ Text[ polish ] = "Dokumentu nie mo¿na zamkn¹æ podczas aktualizacji ³¹cza.";
+ Text[ japanese ] = "Øݸ‚ªXV‚³‚ê‚Ä‚¢‚éŠÔ‚ÍÄÞ·­ÒÝĂ͕‚¶‚ê‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "¦b§ó·s¤@­Ó±¶®|®ÉµLªkÃö³¬³o­Ó¤å¥ó¡C";
+ Text[ arabic ] = "áÇ íãßä ÅÛáÇÞ ÇáãÓÊäÏ Ýí ÇáæÞÊ ÇáÐí íÊã Ýíå ÊÍÏíË ÇÑÊÈÇØ.";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá êëåßóåôå ôï Ýããñáöï êáèþò ãßíåôáé åíçìÝñùóç ìéáò óýíäåóçò.";
+ Text[ korean ] = "¿¬°áÀÌ ¾÷ µ¥ÀÌÆ®µÇ´Â µ¿¾È¿¡¹®¼­°¡ ´ÝÈú ¼ö ¾ø½À´Ï´Ù .";
+ Text[ turkish ] = "Belge, baðlantý güncellemesi yapýlýrken kapatýlamaz.";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNDO_RESIZEMATRIX
+ {
+ Text = "Matrixbereich anpassen" ;
+ Text [ ENGLISH ] = "Adjust array formula size" ;
+ Text[ italian ] = "Adatta l'area di matrice";
+ Text[ portuguese_brazilian ] = "Matrixbereich anpassen";
+ Text[ portuguese ] = "Adaptar área da matriz";
+ Text[ danish ] = "Tilpas matrixområde";
+ Text[ french ] = "Adapter la plage de la matrice";
+ Text[ swedish ] = "Anpassa matrisområde";
+ Text[ dutch ] = "Matrixbereik aanpassen";
+ Text[ spanish ] = "Hacer coincidir área de matriz";
+ Text[ english_us ] = "Adapt matrix area";
+ Text[ chinese_simplified ] = "µ÷Õû¾ØÕóÇøÓò";
+ Text[ russian ] = "Ïîäáîð îáëàñòè ìàññèâà";
+ Text[ polish ] = "Dostosuj obszar macierzy";
+ Text[ japanese ] = "ÏÄظ½”͈͂̓K‡";
+ Text[ chinese_traditional ] = "½Õ¾ã¯x°}°Ï°ì";
+ Text[ arabic ] = "ãáÇÁãÉ äØÇÞ ÇáãÕÝæÝÉ";
+ Text[ greek ] = "ÐñïóáñìïãÞ ðåñéï÷Þò ìÞôñáò";
+ Text[ korean ] = "Çà·Ä¹üÀ§ Àû¿ë";
+ Text[ turkish ] = "Matri alanýný ayarla";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_TIP_RESIZEMATRIX
+ {
+ Text = "Matrixformel %1 Z x %2 S" ;
+ Text [ ENGLISH ] = "Array formula %1 R x %2 C" ;
+ Text[ italian ] = "Formula matrice %1 Z x %2 S";
+ Text[ portuguese_brazilian ] = "Matrixformel %1 Z x %2 S";
+ Text[ portuguese ] = "Fórmula matriz %1 Z x %2 S";
+ Text[ danish ] = "Matrixformel %1 R x %2 K";
+ Text[ french ] = "Formule matricielle %1 Lgn x %2 Col";
+ Text[ swedish ] = "Matrisformel %1 R x %2 K";
+ Text[ dutch ] = "Matrixformule %1 r x %2 k";
+ Text[ spanish ] = "Fórmula matriz %1 F x %2 C";
+ Text[ english_us ] = "Matrix formula %1 R x %2 C";
+ Text[ chinese_simplified ] = "¾ØÕó¹«Ê½ %1 ÐÐ x %2 ÁÐ";
+ Text[ russian ] = "Ôîðìóëà ìàòðèöû %1 Ñ x %2 Ê";
+ Text[ polish ] = "Formu³a macierzy %1 Z x %2 S";
+ Text[ japanese ] = "ÏÄظ½”Ž® %1s x %2—ñ";
+ Text[ chinese_traditional ] = "¯x°}®æ¦¡ %1 Äæ x %2 ¦C";
+ Text[ arabic ] = "ÕíÛÉ ÇáãÕÝæÝÉ %1 R x %2 C";
+ Text[ greek ] = "Ôýðïò ìÞôñáò %1 Ã x %2 Ó";
+ Text[ korean ] = "Çà·Ä½Ä %1 R x %2 C";
+ Text[ turkish ] = "Matris formulü %1 Sa x %2 Sü";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MACRO_WARNING
+ {
+ Text = "Das Dokument enthält Makro-Aufrufe.\nSollen diese ausgeführt werden?";
+ Text[ENGLISH] = "This document contains macro calls.\nShould they be executed?";
+ Text[ english_us ] = "This document contains macro function calls.\nDo you want to run them?";
+ Text[ portuguese ] = "Este documento contém chamadas de macro.\nDeseja executá-las?";
+ Text[ russian ] = "Ýòîò äîêóìåíò ñîäåðæèò âûçîâû ìàêðîñà.\nÂûïîëíèòü?";
+ Text[ dutch ] = "Dit document bevat macro's.\nWilt u deze uitvoeren?";
+ Text[ french ] = "Ce document contient des appels de macros.\nSouhaitez-vous les exécuter?";
+ Text[ spanish ] = "El documento contiene llamadas de macro.\n¿Desea ejecutarlas?";
+ Text[ italian ] = "Questo documento contiene delle macro.\nVolete eseguirle?";
+ Text[ danish ] = "Dokumentet indeholder makro-opkald.\nSkal de udføres?";
+ Text[ swedish ] = "Dokumentet innehåller makroanrop.\nSkall de utföras?";
+ Text[ polish ] = "Ten dokument zawiera wywo³ania makro.\nCzy maj¹ one zostaæ wykonane?";
+ Text[ portuguese_brazilian ] = "This document contains macro calls.\nShould they be executed?";
+ Text[ japanese ] = "‚±‚ÌÄÞ·­ÒÝÄ‚Íϸۂ̌ĂÑo‚µ‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·¡‚»‚ê‚ðŽÀs‚µ‚Ä‚à‚æ‚낵‚¢‚Å‚·‚©?";
+ Text[ chinese_simplified ] = "Õâ¸öÎĵµº¬ÓÐÒ»¸öºêÖ¸Áî¡£\nÄúÒªÖ´ÐÐÕâ¸öºêÂð£¿";
+ Text[ chinese_traditional ] = "³o­Ó¤å¥ó§t¦³¤@­Ó¥¨¶°¡C\n±z­n°õ¦æ³o­Ó¥¨¶°¡H";
+ Text[ arabic ] = "ÊæÌÏ ÇÓÊÏÚÇÁÇÊ ãÇßÑæ Ýí åÐÇ ÇáãÓÊäÏ.\nåá ÊÑíÏ ÊäÝíÐåÇ¿";
+ Text[ greek ] = "Ôï Ýããñáöï áõôü ðåñéÝ÷åé êëÞóåéò åíôïëþí ìÜêñï.\nÈÝëåôå íá åêôåëåóôïýí áõôÝò;";
+ Text[ korean ] = "ÀÌ ¹®¼­´Â ¸ÅÅ©·Î ÇÔ¼ö È£ÃâÀ» Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù .\n±×°ÍµéÀ» ½ÇÇà ½ÃÅ°½Ã°Ú½À´Ï±î?";
+ Text[ turkish ] = "Belgede makro iþlev çaðrýlarý içeriyor.\nMakrolar çalýþtýrýlsýn mý?";
+ Text[ language_user1 ] = " ";
+ };
+ /*
+ String STR_
+ {
+ Text = "";
+ Text[ENGLISH] = "";
+ Text[ENGLISH_US] = "";
+ };
+*/
+};
+
+
diff --git a/sc/source/ui/src/hdrcont.src b/sc/source/ui/src/hdrcont.src
new file mode 100644
index 000000000000..634e2be85512
--- /dev/null
+++ b/sc/source/ui/src/hdrcont.src
@@ -0,0 +1,679 @@
+/*************************************************************************
+ *
+ * $RCSfile: hdrcont.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "sc.hrc"
+
+
+
+#define PART1 \
+ MenuItem\
+ {\
+ Identifier = FID_CELL_FORMAT ; \
+ HelpId = FID_CELL_FORMAT ; \
+ Text = "~Zellen formatieren..." ; \
+ Text [ ENGLISH ] = "Format Cells..." ; \
+ Text [ finnish ] = "Muotoile solut..." ; \
+ Text [ danish ] = "Formater celler..." ; \
+ Text [ french ] = "Formater les ~cellules..." ; \
+ Text [ swedish ] = "Formatera ~celler..." ; \
+ Text [ dutch ] = "~Cellen opmaken..." ; \
+ Text [ spanish ] = "~Formatear celdas..." ; \
+ Text [ english_us ] = "~Format Cells..." ; \
+ Text [ italian ] = "Formatta celle..." ; \
+ Text [ portuguese_brazilian ] = "Zellen formatieren..." ; \
+ Text [ portuguese ] = "Formatar células..." ; \
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñ¸ñʽ»¯(~F)...";\
+ Text[ russian ] = "Ôîðìàò ÿ÷ååê...";\
+ Text[ polish ] = "Formatuj komórki...";\
+ Text[ japanese ] = "¾Ù‚Ì‘Ž®Ý’è(~F)...";\
+ Text[ chinese_traditional ] = "Àx¦s®æ®æ¦¡¤Æ(~F)...";\
+ Text[ arabic ] = "...ÊäÓíÞ ÇáÎáÇíÇ";\
+ Text[ greek ] = "Ìïñöï~ðïßçóç êåëéþí...";\
+ Text[ korean ] = "¼¿ ¼­½Ä(~F)...";\
+ Text[ turkish ] = "Hücreleri formatla...";\
+ Text[ language_user1 ] = " ";\
+ };
+
+
+#define PART2 \
+ MenuItem\
+ {\
+ Identifier = SID_CUT ; \
+ HelpId = SID_CUT ; \
+ Text = "Auss~chneiden" ; \
+ Text [ ENGLISH ] = "Cut" ; \
+ Text [ finnish ] = "Leikkaa" ; \
+ Text [ danish ] = "Klip" ; \
+ Text [ french ] = "Couper" ; \
+ Text [ swedish ] = "Klipp ~ut" ; \
+ Text [ dutch ] = "K~nippen" ; \
+ Text [ spanish ] = "Co~rtar" ; \
+ Text [ english_us ] = "Cu~t" ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Die Selektion in die Zwischenablage kopieren und löschen : Die Selektion in die Zwischenablage kopieren und l÷schen */\
+ Text [ italian ] = "Taglia" ; \
+ Text [ portuguese ] = "Cortar" ; \
+ Text [ portuguese_brazilian ] = "Ausschneiden" ; \
+ Text[ chinese_simplified ] = "¼ô³ý(~T)";\
+ Text[ russian ] = "Âûðåçàòü";\
+ Text[ polish ] = "Wytnij";\
+ Text[ japanese ] = "Ø‚èŽæ‚è(~T)";\
+ Text[ chinese_traditional ] = "°Å¤U(~T)";\
+ Text[ arabic ] = "ÞÕ";\
+ Text[ greek ] = "Á~ðïêïðÞ";\
+ Text[ korean ] = "À߶󳻱â(~T)";\
+ Text[ turkish ] = "~Kes";\
+ Text[ language_user1 ] = " ";\
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_COPY ; \
+ HelpId = SID_COPY ; \
+ Text = "Kopie~ren" ; \
+ Text [ ENGLISH ] = "Copy" ; \
+ Text [ finnish ] = "Kopioi" ; \
+ Text [ danish ] = "Kopier" ; \
+ Text [ french ] = "Copier" ; \
+ Text [ swedish ] = "Kopie~ra" ; \
+ Text [ dutch ] = "~Kopiëren" ; \
+ Text [ spanish ] = "Co~piar" ; \
+ Text [ english_us ] = "~Copy" ; \
+ Text [ italian ] = "Copia" ; \
+ Text [ portuguese ] = "Copiar" ; \
+ Text [ portuguese_brazilian ] = "Kopieren" ; \
+ Text[ chinese_simplified ] = "¸´ÖÆ(~C)";\
+ Text[ russian ] = "Êîïèðîâàòü";\
+ Text[ polish ] = "Kopiuj";\
+ Text[ japanese ] = "ºËß°(~C)";\
+ Text[ chinese_traditional ] = "½Æ»s(~C)";\
+ Text[ arabic ] = "äÓÎ";\
+ Text[ greek ] = "Áíôé~ãñáöÞ";\
+ Text[ korean ] = "º¹»ç(~C)";\
+ Text[ turkish ] = "Kopyala";\
+ Text[ language_user1 ] = " ";\
+ };\
+ MenuItem\
+ {\
+ Identifier = SID_PASTE ; \
+ HelpId = SID_PASTE ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen : Einf³gen */\
+ Text = "E~infügen" ; \
+ Text [ ENGLISH ] = "Paste" ; \
+ Text [ finnish ] = "Liitä" ; \
+ Text [ danish ] = "Sæt i~nd" ; \
+ Text [ french ] = "~Insérer" ; \
+ Text [ swedish ] = "Klistra ~in" ; \
+ Text [ dutch ] = "~Plakken" ; \
+ Text [ spanish ] = "P~egar" ; \
+ Text [ english_us ] = "~Paste" ; \
+ /* ### ACHTUNG: Neuer Text in Resource? Den Inhalt der Zwischenablage einfügen : Den Inhalt der Zwischenablage einf³gen */\
+ Text [ italian ] = "~Incolla" ; \
+ Text [ portuguese ] = "Colar" ; \
+ Text [ portuguese_brazilian ] = "Einfügen" ; \
+ Text[ chinese_simplified ] = "²åÈë(~P)";\
+ Text[ russian ] = "Âñò~àâèòü";\
+ Text[ polish ] = "~Wklej";\
+ Text[ japanese ] = "“\\‚è•t‚¯(~P)";\
+ Text[ chinese_traditional ] = "´¡¤J(~P)";\
+ Text[ arabic ] = "áÕÞ~";\
+ Text[ greek ] = "Åð~éêüëëçóç";\
+ Text[ korean ] = "ºÙ¿©³Ö±â(~P)";\
+ Text[ turkish ] = "~Yapýþtýr";\
+ Text[ language_user1 ] = " ";\
+ };
+
+ //-------------------------------------------------------------------------------
+
+Menu RID_POPUP_ROWHEADER
+{
+ ItemList =
+ {
+ PART1
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_ROW_HEIGHT ;
+ HelpId = FID_ROW_HEIGHT ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilenhöhe... : Zeilenh÷he... */
+ Text = "Zeile~nhöhe..." ;
+ Text [ ENGLISH ] = "Row height..." ;
+ Text [ finnish ] = "Rivin korkeuden..." ;
+ Text [ danish ] = "Rækkehøjde..." ;
+ Text [ french ] = "Hauteur ~de ligne..." ;
+ Text [ swedish ] = "R~adhöjd..." ;
+ Text [ dutch ] = "~Rijhoogte..." ;
+ Text [ spanish ] = "~Altura de fila..." ;
+ Text [ english_us ] = "~Height..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilenhöhe ändern : Zeilenh÷he õndern */
+ Text [ italian ] = "Altezza riga..." ;
+ Text [ portuguese ] = "Altu~ra da linha..." ;
+ Text [ portuguese_brazilian ] = "Zeilenhöhe..." ;
+ Text[ chinese_simplified ] = "¸ß(~H)...";
+ Text[ russian ] = "Âûñîòà ñòðîêè...";
+ Text[ polish ] = "WysokoϾ linii...";
+ Text[ japanese ] = "s‚Ì‚‚³(~H)...";
+ Text[ chinese_traditional ] = "¦C°ª(~H)...";
+ Text[ arabic ] = "ÇÑÊÝÇÚ ÇáÕÝ...";
+ Text[ greek ] = "¾øïò ãñá~ììÞò...";
+ Text[ korean ] = "³ôÀÌ(~H)...";
+ Text[ turkish ] = "Satýr yüksekliði...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_ROW_OPT_HEIGHT ;
+ HelpId = FID_ROW_OPT_HEIGHT ;
+ /* ### ACHTUNG: Neuer Text in Resource? Optimale Zeilenhöhe... : Optimale Zeilenh÷he... */
+ Text = "~Optimale Zeilenhöhe..." ;
+ Text [ ENGLISH ] = "Optimize row height..." ;
+ Text [ finnish ] = "Sopivimman korkeuden..." ;
+ Text [ danish ] = "Optimal rækkehøjde..." ;
+ Text [ french ] = "Hauteur de ligne ~optimale..." ;
+ Text [ swedish ] = "~Optimal radhöjd..." ;
+ Text [ dutch ] = "~Optimale rijhoogte..." ;
+ Text [ spanish ] = "~Optimar altura de fila..." ;
+ Text [ english_us ] = "Optimal ~Row Height..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Optimale Zeilenhöhe einstellen : Optimale Zeilenh÷he einstellen */
+ Text [ italian ] = "Altezza ottimale righe..." ;
+ Text [ portuguese ] = "~Optimizar altura da linha..." ;
+ Text [ portuguese_brazilian ] = "Optimale Zeilenhöhe..." ;
+ Text[ chinese_simplified ] = "×î¼Ñ¸ß¶È(~R)...";
+ Text[ russian ] = "Îïòèìàëüíàÿ âûñîòà ñòðîêè...";
+ Text[ polish ] = "Optymalna wysokoϾ wierszy...";
+ Text[ japanese ] = "Å“K‚Ès‚Ì‚‚³(~R)...";
+ Text[ chinese_traditional ] = "³ÌÓì¦C°ª(~R)...";
+ Text[ arabic ] = "...ÇáÇÑÊÝÇÚ ÇáÃãËá ááÕÝ";
+ Text[ greek ] = "ÂÝëôéóô~ï ýøïò ãñáììÞò...";
+ Text[ korean ] = "ÃÖÀûÀÇ Çà ³ôÀÌ(~R)...";
+ Text[ turkish ] = "~En uygun yükseklik...";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_INS_ROW ;
+ HelpId = FID_INS_ROW ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilen einfügen : Zeilen einf³gen */
+ Text = "Zeilen ~einfügen" ;
+ Text [ ENGLISH ] = "Insert rows" ;
+ Text [ finnish ] = "Lisää rivejä" ;
+ Text [ danish ] = "Indsæt rækker" ;
+ Text [ french ] = "I~nsérer des lignes" ;
+ Text [ swedish ] = "Infoga rad~er" ;
+ Text [ dutch ] = "Rijen ~invoegen" ;
+ Text [ spanish ] = "~Insertar filas" ;
+ Text [ english_us ] = "~Insert Rows" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze Zeilen einfügen : Ganze Zeilen einf³gen */
+ Text [ italian ] = "Inserisci righe" ;
+ Text [ portuguese ] = "~Inserir linhas" ;
+ Text [ portuguese_brazilian ] = "Zeilen einfügen" ;
+ Text[ chinese_simplified ] = "²åÈëÐÐ(~I)";
+ Text[ russian ] = "Âñòàâèòü ñòðîêè";
+ Text[ polish ] = "Wstaw wiersze";
+ Text[ japanese ] = "s‚Ì‘}“ü(~I)";
+ Text[ chinese_traditional ] = "´¡¤J¦C(~I)";
+ Text[ arabic ] = "ÅÏÑÇÌ ÃÓØÑ";
+ Text[ greek ] = "~ÅéóáãùãÞ ãñáììþí";
+ Text[ korean ] = "Çà »ðÀÔ(~I)";
+ Text[ turkish ] = "Satýr ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_DEL_ROWS ;
+ HelpId = SID_DEL_ROWS ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilen löschen : Zeilen l÷schen */
+ Text = "Zeilen ~löschen" ;
+ Text [ ENGLISH ] = "Delete rows" ;
+ Text [ english_us ] = "~Delete Rows" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze Zeilen löschen : Ganze Zeilen l÷schen */
+ Text [ dutch ] = "Rijen ~wissen" ;
+ Text [ italian ] = "Elimina righe" ;
+ Text [ spanish ] = "~Eliminar filas" ;
+ Text [ french ] = "~Supprimer des lignes" ;
+ Text [ swedish ] = "Radera ra~der" ;
+ Text [ danish ] = "Slet rækker" ;
+ Text [ portuguese ] = "E~liminar linhas" ;
+ Text [ portuguese_brazilian ] = "Zeilen löschen" ;
+ Text[ chinese_simplified ] = "ɾ³ýÐÐ(~D)";
+ Text[ russian ] = "Óäàëèòü ñòðîêè";
+ Text[ polish ] = "Usuñ linie";
+ Text[ japanese ] = "s‚Ìíœ(~D)";
+ Text[ chinese_traditional ] = "§R°£¦C(~D)";
+ Text[ arabic ] = "ÍÐÝ ÃÓØÑ";
+ Text[ greek ] = "Äéáãñá~öÞ ãñáììþí";
+ Text[ korean ] = "Çà »èÁ¦(~D)";
+ Text[ turkish ] = "Satýr sil";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_DELETE ;
+ HelpId = SID_DELETE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Inhalte l~öschen... : Inhalte l~÷schen... */
+ Text = "Inhalte l~öschen..." ;
+ Text [ ENGLISH ] = "Dele~te Data..." ;
+ Text [ norwegian ] = "Dele~te Data..." ;
+ Text [ italian ] = "Canc~ella contenuti..." ;
+ Text [ portuguese_brazilian ] = "Apa~gar Dados..." ;
+ Text [ portuguese ] = "Eli~minar conteúdos..." ;
+ Text [ finnish ] = "~Poista tietoja..." ;
+ Text [ danish ] = "Slet indhold..." ;
+ Text [ french ] = "S~upprimer du contenu..." ;
+ Text [ swedish ] = "Radera innehå~ll..." ;
+ Text [ dutch ] = "~Inhoud wissen..." ;
+ Text [ spanish ] = "Eliminar contenidos..." ;
+ Text [ english_us ] = "De~lete Contents..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ausgewählte Inhalte löschen (Formeln, Formate etc.) : Ausgewõhlte Inhalte l÷schen (Formeln, Formate etc.) */
+ Text[ chinese_simplified ] = "ɾ³ýÄÚÈÝ(~L)...";
+ Text[ russian ] = "Óäàëèòü ñîäåðæèìîå...";
+ Text[ polish ] = "Usuñ zawartoœæ...";
+ Text[ japanese ] = "“à—e‚Ìíœ(~L)...";
+ Text[ chinese_traditional ] = "§R°£¤º®e(~L)...";
+ Text[ arabic ] = "...ÍÐÝ ãÍÊæíÇÊ";
+ Text[ greek ] = "Äéáãñá~öÞ ðåñéå÷ïìÝíùí...";
+ Text[ korean ] = "³»¿ë Áö¿ì±â(~L)...";
+ Text[ turkish ] = "Ýçerikleri sil...";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_ROW_HIDE ;
+ HelpId = FID_ROW_HIDE ;
+ Text = "~Ausblenden" ;
+ Text [ ENGLISH ] = "Hide" ;
+ Text [ finnish ] = "Piilota" ;
+ Text [ danish ] = "Skjul" ;
+ Text [ french ] = "M~asquer" ;
+ Text [ swedish ] = "~Dölj" ;
+ Text [ dutch ] = "~Verbergen" ;
+ Text [ spanish ] = "~Ocultar" ;
+ Text [ english_us ] = "~Hide" ;
+ Text [ italian ] = "Nascondi" ;
+ Text [ portuguese ] = "O~cultar" ;
+ Text [ portuguese_brazilian ] = "Ausblenden" ;
+ Text[ chinese_simplified ] = "ÒþÈë(~H)";
+ Text[ russian ] = "Ñêðûòü";
+ Text[ polish ] = "Ukryj";
+ Text[ japanese ] = "•\\Ž¦‚µ‚È‚¢(~H)";
+ Text[ chinese_traditional ] = "Áô¤J(~H)";
+ Text[ arabic ] = "ÅÎÝÇÁ";
+ Text[ greek ] = "~Áðüêñõøç";
+ Text[ korean ] = "¼û±â±â(~H)";
+ Text[ turkish ] = "~Gizle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_ROW_SHOW ;
+ HelpId = FID_ROW_SHOW ;
+ Text = "Ein~blenden" ;
+ Text [ ENGLISH ] = "Show" ;
+ Text [ finnish ] = "Näytä" ;
+ Text [ danish ] = "Vis" ;
+ Text [ french ] = "~Afficher" ;
+ Text [ swedish ] = "~Visa" ;
+ Text [ dutch ] = "~Weergeven" ;
+ Text [ spanish ] = "~Mostrar" ;
+ Text [ english_us ] = "~Show" ;
+ Text [ italian ] = "Mostra" ;
+ Text [ portuguese ] = "~Mostrar" ;
+ Text [ portuguese_brazilian ] = "Einblenden" ;
+ Text[ chinese_simplified ] = "ÏÔʾ(~S)";
+ Text[ russian ] = "Ïîêàçàòü";
+ Text[ polish ] = "Poka¿";
+ Text[ japanese ] = "•\\Ž¦‚·‚é(~S)";
+ Text[ chinese_traditional ] = "Åã¥Ü(~S)";
+ Text[ arabic ] = "ÅÙåÇÑ";
+ Text[ greek ] = "Åì~öÜíéóç";
+ Text[ korean ] = "³ªÅ¸³»±â(~S)";
+ Text[ turkish ] = "G~öster";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ PART2
+ MenuItem
+ {
+ Identifier = FID_PASTE_CONTENTS ;
+ HelpId = FID_PASTE_CONTENTS ;
+ Text = "In~halte einfügen..." ;
+ Text[ chinese_simplified ] = "²åÈëÄÚÈÝ(~S)...";
+ Text [ ENGLISH ] = "Paste ~Special..." ;
+ Text [ norwegian ] = "Paste ~Special..." ;
+ Text [ italian ] = "Incolla ~speciale..." ;
+ Text [ portuguese_brazilian ] = "Colar ~Especial..." ;
+ Text [ portuguese ] = "Colar e~special..." ;
+ Text [ finnish ] = "Liitä ~määräten..." ;
+ Text [ danish ] = "Indsæt ind~hold..." ;
+ Text [ french ] = "Colla~ge spécial..." ;
+ Text [ swedish ] = "Klistra in inne~håll..." ;
+ Text [ dutch ] = "Plakken ~speciaal..." ;
+ Text [ spanish ] = "Peg~ado especial..." ;
+ Text [ english_us ] = "Paste ~Special..." ;
+ Text[ russian ] = "~Ñïåöèàëüíàÿ âñòàâêà...";
+ Text[ polish ] = "~Wklej zawartoϾ...";
+ Text[ japanese ] = "Œ`Ž®‚ð‘I‘ð‚µ‚Ä“\\‚è•t‚¯(~S)...";
+ Text[ chinese_traditional ] = "´¡¤J¤º®e(~S)...";
+ Text[ arabic ] = "áÕÞ ÎÇÕ...";
+ Text[ greek ] = "ÅéäéêÞ åðéêüëë~çóç...";
+ Text[ korean ] = "¼±ÅÃÇÏ¿© ºÙ¿©³Ö±â( ~S)...";
+ Text[ turkish ] = "Ö~zel yapýþtýr...";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+ //-------------------------------------------------------------------
+
+Menu RID_POPUP_COLHEADER
+{
+ ItemList =
+ {
+ PART1
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_COL_WIDTH ;
+ HelpId = FID_COL_WIDTH ;
+ Text = "Spalte~nbreite..." ;
+ Text [ ENGLISH ] = "Column width..." ;
+ Text [ finnish ] = "Sarakkeen leveyden..." ;
+ Text [ danish ] = "Kolonnebredde..." ;
+ Text [ french ] = "L~argeur de colonne..." ;
+ Text [ swedish ] = "Kolum~nbredd..." ;
+ Text [ dutch ] = "~Kolombreedte..." ;
+ Text [ spanish ] = "~Ancho de columna..." ;
+ Text [ english_us ] = "Col~umn Width..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Spaltenbreite ändern : Spaltenbreite õndern */
+ Text [ italian ] = "Larghezza colonna..." ;
+ Text [ portuguese ] = "~Largura da coluna..." ;
+ Text [ portuguese_brazilian ] = "Spaltenbreite..." ;
+ Text[ chinese_simplified ] = "Áпí(~U)...";
+ Text[ russian ] = "Øèðèíà ñòîëáöîâ...";
+ Text[ polish ] = "SzerokoϾ kolumny...";
+ Text[ japanese ] = "—ñ•(~U)...";
+ Text[ chinese_traditional ] = "Äæ¼e(~U)...";
+ Text[ arabic ] = "ÚÑÖ ÇáÃÚãÏÉ...";
+ Text[ greek ] = "ÐëÜôïò ó~ôÞëçò...";
+ Text[ korean ] = "¿­ ³Êºñ(~U)...";
+ Text[ turkish ] = "Sütun geniþliði...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_COL_OPT_WIDTH ;
+ HelpId = FID_COL_OPT_WIDTH ;
+ Text = "~Optimale Spaltenbreite..." ;
+ Text [ ENGLISH ] = "Optimize column width..." ;
+ Text [ finnish ] = "Sopivimman leveyden..." ;
+ Text [ danish ] = "Optimal kolonnebredde..." ;
+ Text [ french ] = "Largeur de colonne optimale..." ;
+ Text [ swedish ] = "~Optimal kolumnbredd..." ;
+ Text [ dutch ] = "~Optimale kolombreedte..." ;
+ Text [ spanish ] = "~Optimar ancho de columna..." ;
+ Text [ english_us ] = "O~ptimal Column Width..." ;
+ Text [ italian ] = "Larghezza ottimale colonna..." ;
+ Text [ portuguese ] = "~Optimizar largura da coluna..." ;
+ Text [ portuguese_brazilian ] = "Optimale Spaltenbreite..." ;
+ Text[ chinese_simplified ] = "×î¼ÑÁпí(~P)...";
+ Text[ russian ] = "Îïòèìàëüíàÿ øèðèíà ñòîëáöîâ...";
+ Text[ polish ] = "Optymalna szerokoϾ kolumny...";
+ Text[ japanese ] = "Å“K‚È—ñ•(~P)...";
+ Text[ chinese_traditional ] = "³ÌÓìÄæ¼e(~P)...";
+ Text[ arabic ] = "ÇáÚÑÖ ÇáÃãËá ááÚãæÏ...";
+ Text[ greek ] = "ÂÝëôéóô~ï ðëÜôïò óôÞëçò...";
+ Text[ korean ] = "ÃÖÀûÀÇ ¿­ ³Êºñ(~P)...";
+ Text[ turkish ] = "En uygun geniþlik...";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_INS_COLUMN ;
+ HelpId = FID_INS_COLUMN ;
+ /* ### ACHTUNG: Neuer Text in Resource? Spalten einfügen : Spalten einf³gen */
+ Text = "Spalten ~einfügen" ;
+ Text [ ENGLISH ] = "Insert columns" ;
+ Text [ finnish ] = "Lisää sarakkeita" ;
+ Text [ danish ] = "Indsæt kolonner" ;
+ Text [ french ] = "I~nsérer des colonnes" ;
+ Text [ swedish ] = "Infoga ~kolumner" ;
+ Text [ dutch ] = "~Kolommen invoegen" ;
+ Text [ spanish ] = "~Insertar columnas" ;
+ Text [ english_us ] = "~Insert Columns" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze Spalten einfügen : Ganze Spalten einf³gen */
+ Text [ italian ] = "Inserisci colonne" ;
+ Text [ portuguese ] = "~Inserir colunas" ;
+ Text [ portuguese_brazilian ] = "Spalten einfügen" ;
+ Text[ chinese_simplified ] = "²åÈëÁÐ(~I)";
+ Text[ russian ] = "Âñòàâèòü ñòîëáöû";
+ Text[ polish ] = "Wstaw kolumny";
+ Text[ japanese ] = "—ñ‚Ì‘}“ü(~I)";
+ Text[ chinese_traditional ] = "´¡¤JÄæ(~I)";
+ Text[ arabic ] = "ÅÏÑÇÌ ÃÚãÏÉ";
+ Text[ greek ] = "~ÅéóáãùãÞ óôçëþí";
+ Text[ korean ] = "¿­ »ðÀÔ(~I)";
+ Text[ turkish ] = "Sütun ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_DEL_COLS ;
+ HelpId = SID_DEL_COLS ;
+ /* ### ACHTUNG: Neuer Text in Resource? Spalten löschen : Spalten l÷schen */
+ Text = "Spalten ~löschen" ;
+ Text [ ENGLISH ] = "Delete columns" ;
+ Text [ english_us ] = "~Delete Columns" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze Spalten löschen : Ganze Spalten l÷schen */
+ Text [ italian ] = "Elimina colonne" ;
+ Text [ spanish ] = "~Eliminar columnas" ;
+ Text [ french ] = "S~upprimer des colonnes" ;
+ Text [ dutch ] = "K~olommen wissen" ;
+ Text [ swedish ] = "Radera ko~lumner" ;
+ Text [ danish ] = "Slet kolonner" ;
+ Text [ portuguese ] = "Eliminar ~colunas" ;
+ Text [ portuguese_brazilian ] = "Spalten löschen" ;
+ Text[ chinese_simplified ] = "ɾ³ýÁÐ(~D)";
+ Text[ russian ] = "Óäàëèòü ñòîëáöû";
+ Text[ polish ] = "Usuñ kolumny";
+ Text[ japanese ] = "—ñ‚Ìíœ(~D)";
+ Text[ chinese_traditional ] = "§R°£Äæ(~D)";
+ Text[ arabic ] = "ÍÐÝ ÃÚãÏÉ";
+ Text[ greek ] = "ÄéáãñáöÞ óôç~ëþí";
+ Text[ korean ] = "¿­ »èÁ¦(~D)";
+ Text[ turkish ] = "Sütun sil";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_DELETE ;
+ HelpId = SID_DELETE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Inhalte l~öschen... : Inhalte l~÷schen... */
+ Text = "Inhalte l~öschen..." ;
+ Text [ ENGLISH ] = "Dele~te Data..." ;
+ Text [ norwegian ] = "Dele~te Data..." ;
+ Text [ italian ] = "Can~cella contenuti..." ;
+ Text [ portuguese_brazilian ] = "Apa~gar Dados..." ;
+ Text [ portuguese ] = "Eliminar co~nteúdos..." ;
+ Text [ finnish ] = "~Poista tietoja..." ;
+ Text [ danish ] = "Slet indhold..." ;
+ Text [ french ] = "~Supprimer du contenu..." ;
+ Text [ swedish ] = "Radera ~innehåll..." ;
+ Text [ dutch ] = "I~nhoud wissen..." ;
+ Text [ spanish ] = "~Eliminar contenidos..." ;
+ Text [ english_us ] = "D~elete Contents..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ausgewählte Inhalte löschen (Formeln, Formate etc.) : Ausgewõhlte Inhalte l÷schen (Formeln, Formate etc.) */
+ Text[ chinese_simplified ] = "ɾ³ýÄÚÈÝ(~E)...";
+ Text[ russian ] = "Óäàëèòü ñîäåðæèìîå...";
+ Text[ polish ] = "Usuñ zawartoœæ...";
+ Text[ japanese ] = "“à—e‚Ìíœ(~E)...";
+ Text[ chinese_traditional ] = "§R°£¤º®e(~E)...";
+ Text[ arabic ] = "ÍÐÝ ãÍÊæíÇÊ...";
+ Text[ greek ] = "Äéáãñá~öÞ ðåñéå÷ïìÝíùí...";
+ Text[ korean ] = "³»¿ë Áö¿ì±â(~E)...";
+ Text[ turkish ] = "Ýçerikleri sil...";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_COL_HIDE ;
+ HelpId = FID_COL_HIDE ;
+ Text = "~Ausblenden" ;
+ Text [ ENGLISH ] = "Hide" ;
+ Text [ finnish ] = "Piilota" ;
+ Text [ danish ] = "Skjul" ;
+ Text [ french ] = "~Masquer" ;
+ Text [ swedish ] = "~Dölj" ;
+ Text [ dutch ] = "~Verbergen" ;
+ Text [ spanish ] = "~Ocultar" ;
+ Text [ english_us ] = "~Hide" ;
+ Text [ italian ] = "Nascondi" ;
+ Text [ portuguese ] = "O~cultar" ;
+ Text [ portuguese_brazilian ] = "Ausblenden" ;
+ Text[ chinese_simplified ] = "ÒþÈë(~H)";
+ Text[ russian ] = "Ñêðûòü";
+ Text[ polish ] = "Ukryj";
+ Text[ japanese ] = "•\\Ž¦‚µ‚È‚¢(~H)";
+ Text[ chinese_traditional ] = "Áô¤J(~H)";
+ Text[ arabic ] = "ÅÎÝÇÁ";
+ Text[ greek ] = "~Áðüêñõøç";
+ Text[ korean ] = "¼û±â±â(~H)";
+ Text[ turkish ] = "~Gizle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_COL_SHOW ;
+ HelpId = FID_COL_SHOW ;
+ Text = "Ein~blenden" ;
+ Text [ ENGLISH ] = "Show" ;
+ Text [ finnish ] = "Näytä" ;
+ Text [ danish ] = "Vis" ;
+ Text [ french ] = "A~fficher" ;
+ Text [ swedish ] = "~Visa" ;
+ Text [ dutch ] = "~Weergeven" ;
+ Text [ spanish ] = "~Mostrar" ;
+ Text [ english_us ] = "~Show" ;
+ Text [ italian ] = "Mostra" ;
+ Text [ portuguese ] = "~Mostrar" ;
+ Text [ portuguese_brazilian ] = "Einblenden" ;
+ Text[ chinese_simplified ] = "ÏÔʾ(~S)";
+ Text[ russian ] = "Ïîêàçàòü";
+ Text[ polish ] = "Poka¿";
+ Text[ japanese ] = "•\\Ž¦‚·‚é(~S)";
+ Text[ chinese_traditional ] = "Åã¥Ü(~S)";
+ Text[ arabic ] = "ÅÙåÇÑ";
+ Text[ greek ] = "Åì~öÜíéóç";
+ Text[ korean ] = "³ªÅ¸³»±â(~S)";
+ Text[ turkish ] = "G~öster";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ PART2
+ MenuItem
+ {
+ Identifier = FID_PASTE_CONTENTS ;
+ HelpId = FID_PASTE_CONTENTS ;
+ Text = "In~halte einfügen..." ;
+ Text[ chinese_simplified ] = "²åÈëÄÚÈÝ(~S)...";
+ Text [ ENGLISH ] = "Paste ~Special..." ;
+ Text [ norwegian ] = "Paste ~Special..." ;
+ Text [ italian ] = "Incolla ~speciale..." ;
+ Text [ portuguese_brazilian ] = "Colar ~Especial..." ;
+ Text [ portuguese ] = "Colar e~special..." ;
+ Text [ finnish ] = "Liitä ~määräten..." ;
+ Text [ danish ] = "Indsæt ind~hold..." ;
+ Text [ french ] = "Colla~ge spécial..." ;
+ Text [ swedish ] = "Klistra in inne~håll..." ;
+ Text [ dutch ] = "Plakken ~speciaal..." ;
+ Text [ spanish ] = "Peg~ado especial..." ;
+ Text [ english_us ] = "Paste ~Special..." ;
+ Text[ russian ] = "~Ñïåöèàëüíàÿ âñòàâêà...";
+ Text[ polish ] = "~Wklej zawartoϾ...";
+ Text[ japanese ] = "Œ`Ž®‚ð‘I‘ð‚µ‚Ä“\\‚è•t‚¯(~S)...";
+ Text[ chinese_traditional ] = "´¡¤J¤º®e(~S)...";
+ Text[ arabic ] = "áÕÞ ÎÇÕ...";
+ Text[ greek ] = "ÅéäéêÞ åðéêüëë~çóç...";
+ Text[ korean ] = "¼±ÅÃÇÏ¿© ºÙ¿©³Ö±â( ~S)...";
+ Text[ turkish ] = "Ö~zel yapýþtýr...";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+
+
diff --git a/sc/source/ui/src/makefile.mk b/sc/source/ui/src/makefile.mk
new file mode 100644
index 000000000000..7d00f72c666c
--- /dev/null
+++ b/sc/source/ui/src/makefile.mk
@@ -0,0 +1,119 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=ui
+
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+
+IMGLST_SRS=$(SRS)$/ui.srs
+BMP_IN=$(PRJ)$/res/imglst/apptbx
+# --- Update-Version -----------------------------------------------
+
+.INCLUDE : $(UPD)minor.mk
+RSCUPDVER=$(RSCREVISION)(SV$(UPD)$(UPDMINOR))
+
+# --- Files --------------------------------------------------------
+
+SRCFILES = \
+ sc.src \
+ pseudo.src \
+ menue.src \
+ popup.src \
+ toolbox.src \
+ scstring.src \
+ attrdlg.src \
+ sortdlg.src \
+ filter.src \
+ namedlg.src \
+ dbnamdlg.src \
+ subtdlg.src \
+ miscdlgs.src \
+ autofmt.src \
+ solvrdlg.src \
+ tabopdlg.src \
+ hdrcont.src \
+ globstr.src \
+ optdlg.src \
+ scerrors.src \
+ textdlgs.src \
+ chartdlg.src \
+ scfuncs.src \
+ crnrdlg.src \
+ condfrmt.src \
+ optload.src\
+ opredlin.src \
+ simpref.src
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+$(SRS)$/ui.srs: $(SOLARINCDIR)$/svx$/globlmn.hrc
+
diff --git a/sc/source/ui/src/miscdlgs.src b/sc/source/ui/src/miscdlgs.src
new file mode 100644
index 000000000000..1ad7bbd29892
--- /dev/null
+++ b/sc/source/ui/src/miscdlgs.src
@@ -0,0 +1,3658 @@
+/*************************************************************************
+ *
+ * $RCSfile: miscdlgs.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include "miscdlgs.hrc"
+
+ModalDialog RID_SCDLG_DELCELL
+{
+ OutputSize = TRUE ;
+ HelpId = FID_DELETE_CELL ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 191 , 75 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen löschen : Zellen l÷schen */
+ Text = "Zellen löschen" ;
+ Text [ ENGLISH ] = "Delete Cells" ;
+ Text [ norwegian ] = "Delete Cells" ;
+ Text [ italian ] = "Elimina celle" ;
+ Text [ portuguese_brazilian ] = "Apagar Células" ;
+ Text [ portuguese ] = "Eliminar células" ;
+ Text [ finnish ] = "Poista soluja" ;
+ Text [ danish ] = "Slet celler" ;
+ Text [ french ] = "Supprimer des cellules" ;
+ Text [ swedish ] = "Radera celler" ;
+ Text [ dutch ] = "Cellen wissen" ;
+ Text [ spanish ] = "Eliminar celdas" ;
+ Text [ english_us ] = "Delete Cells" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 135 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 135 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 135 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ RadioButton BTN_DELCOLS
+ {
+ Pos = MAP_APPFONT ( 12 , 53 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze ~Spalten löschen : Ganze ~Spalten l÷schen */
+ Text = "Ganze ~Spalten löschen" ;
+ Text [ ENGLISH ] = "Delete ~columns" ;
+ Text [ norwegian ] = "Delete ~columns" ;
+ Text [ italian ] = "Cancella ~colonne" ;
+ Text [ portuguese_brazilian ] = "Apagar ~colunas" ;
+ Text [ portuguese ] = "Eliminar colunas inteiras" ;
+ Text [ finnish ] = "Poista ~sarakkeita" ;
+ Text [ danish ] = "Slet hele kolonner" ;
+ Text [ french ] = "Supprimer des ~colonnes entières" ;
+ Text [ swedish ] = "Radera hela ~kolumner" ;
+ Text [ dutch ] = "Hele ~kolommen verwijderen" ;
+ Text [ spanish ] = "Eli~minar columnas completas" ;
+ Text [ english_us ] = "Delete entire ~column(s)" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ɾ³ýÕûÁÐ(~C)";
+ Text[ russian ] = "Óäàëèòü âåñü ñòîëáåö";
+ Text[ polish ] = "Usuñ ca³e kolumny";
+ Text[ japanese ] = "‘S—ñ‚ðíœ(~C)";
+ Text[ chinese_traditional ] = "§R°£¾ãÄæ(~C)";
+ Text[ arabic ] = "ÍÐÝ ÃÚãÏÉ ÈÃßãáåÇ";
+ Text[ greek ] = "ÄéáãñáöÞ ïëüêëçñçò óôÞëçò";
+ Text[ korean ] = "Àüü ¿­ »èÁ¦(~C)";
+ Text[ turkish ] = "S~ütunun tümünü sil";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DELROWS
+ {
+ Pos = MAP_APPFONT ( 12 , 40 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze ~Zeilen löschen : Ganze ~Zeilen l÷schen */
+ Text = "Ganze ~Zeilen löschen" ;
+ Text [ ENGLISH ] = "Delete ~rows" ;
+ Text [ norwegian ] = "Delete ~rows" ;
+ Text [ italian ] = "Cancella ~righe" ;
+ Text [ portuguese_brazilian ] = "Apagar ~fileiras" ;
+ Text [ portuguese ] = "Eliminar linhas inteiras" ;
+ Text [ finnish ] = "Poista ~rivejä" ;
+ Text [ danish ] = "Slet hele rækker" ;
+ Text [ french ] = "Supprimer des ~lignes" ;
+ Text [ swedish ] = "Radera hela ~rader" ;
+ Text [ dutch ] = "Hele ~rijen verwijderen" ;
+ Text [ spanish ] = "~Eliminar filas completas" ;
+ Text [ english_us ] = "Delete entire ~row(s)" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ɾ³ýÕûÐÐ(~R)";
+ Text[ russian ] = "Óäàëèòü âñþ ñòðîêó";
+ Text[ polish ] = "Usuñ ca³e wiersze";
+ Text[ japanese ] = "‘Ss‚ðíœ(~Rj";
+ Text[ chinese_traditional ] = "§R°£¾ã¦C(~R)";
+ Text[ arabic ] = "ÍÐÝ ÃÓØÑ ÈÃßãáåÇ";
+ Text[ greek ] = "ÄéáãñáöÞ ïëüêëçñçò ãñáììÞò";
+ Text[ korean ] = "Àüü Çà »èÁ¦(~R)";
+ Text[ turkish ] = "S~atýrýn tümünü sil";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_CELLSLEFT
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ Text = "Zellen nach ~links verschieben" ;
+ Text [ ENGLISH ] = "Move cells ~left" ;
+ Text [ norwegian ] = "Move cells ~left" ;
+ Text [ italian ] = "Sposta celle a ~sinistra" ;
+ Text [ portuguese_brazilian ] = "Mover células para a ~esquerda" ;
+ Text [ portuguese ] = "Mover células para a ~esquerda" ;
+ Text [ finnish ] = "Siirrä soluja ~vasemmalle" ;
+ Text [ danish ] = "Flyt celler mod venstre" ;
+ Text [ french ] = "Déplacer les cellules vers la g~auche" ;
+ Text [ swedish ] = "Flytta celler åt ~vänster" ;
+ Text [ dutch ] = "Cellen naar ~links verplaatsen" ;
+ Text [ spanish ] = "Despla~zar celdas a la izquierda" ;
+ Text [ english_us ] = "Shift cells ~left" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Ïò×óÒƶ¯µ¥Ôª¸ñ(~L)";
+ Text[ russian ] = "Ïåðåìåñòèòü ÿ÷åéêè âëåâî";
+ Text[ polish ] = "Przesuñ komórki w lewo";
+ Text[ japanese ] = "¾Ù‚ð¶‚Ɉړ®(~L)";
+ Text[ chinese_traditional ] = "¦V¥ª²¾°ÊÀx¦s®æ(~L)";
+ Text[ arabic ] = "ÅÒÇÍÉ ÇáÎáÇíÇ Åáì ÇáíÓÇÑ";
+ Text[ greek ] = "Ìåôáêßíçóç êåëéþí ðñïò ôá áñéóôåñÜ";
+ Text[ korean ] = "¼¿ ¿ÞÂÊÀ¸·Î ¹Ð±â(~L)";
+ Text[ turkish ] = "Hücreleri s~ola kaydýr";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_CELLSUP
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ Text = "Zellen nach ~oben verschieben" ;
+ Text [ ENGLISH ] = "Move cells ~up" ;
+ Text [ norwegian ] = "Move cells ~up" ;
+ Text [ italian ] = "Sposta celle in ~alto" ;
+ Text [ portuguese_brazilian ] = "Mover células para ~cima" ;
+ Text [ portuguese ] = "Mover células para ~cima" ;
+ Text [ finnish ] = "Siirrä soluja ~ylös" ;
+ Text [ danish ] = "Flyt celler opad" ;
+ Text [ french ] = "Déplacer les cellules vers le ~haut" ;
+ Text [ swedish ] = "Flytta celler ~uppåt" ;
+ Text [ dutch ] = "Cellen naar b~oven verplaatsen" ;
+ Text [ spanish ] = "~Desplazar celdas hacia arriba" ;
+ Text [ english_us ] = "Shift cells ~up" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÉÏÒƶ¯µ¥Ôª¸ñ(~U)";
+ Text[ russian ] = "Ïåðåìåñòèòü ÿ÷åéêè ââåðõ";
+ Text[ polish ] = "Przesuñ ko~mórki do góry";
+ Text[ japanese ] = "¾Ù‚ðã‚Ɉړ®(~U)";
+ Text[ chinese_traditional ] = "¦V¤W²¾°ÊÀx¦s®æ(~U)";
+ Text[ arabic ] = "ÅÒÇÍÉ ÇáÎáÇíÇ Åáì ÃÚáì";
+ Text[ greek ] = "Ìåôáêßíçóç êåëéþí ðñïò ôá ðÜíù";
+ Text[ korean ] = "¼¿ À§ÂÊÀ¸·Î ¹Ð±â(~U)";
+ Text[ turkish ] = "Hücreleri y~ukarýya kaydýr";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_FRAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 123 , 66 ) ;
+ Text = "Auswahl" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Opções" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ french ] = "Options" ;
+ Text [ swedish ] = "Urval" ;
+ Text [ dutch ] = "Selectie" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ english_us ] = "Selection" ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "ɾ³ýµ¥Ôª¸ñ";
+ Text[ russian ] = "Óäàëèòü ÿ÷åéêè";
+ Text[ polish ] = "Usuñ komórki";
+ Text[ japanese ] = "¾Ù‚Ìíœ";
+ Text[ chinese_traditional ] = "§R°£Àx¦s®æ";
+ Text[ arabic ] = "ÍÐÝ ÎáÇíÇ";
+ Text[ greek ] = "ÄéáãñáöÞ êåëéþí";
+ Text[ korean ] = "¼¿ »èÁ¦";
+ Text[ turkish ] = "Hücreleri sil";
+ Text[ language_user1 ] = " ";
+};
+ModalDialog RID_SCDLG_INSCELL
+{
+ OutputSize = TRUE ;
+ HelpId = FID_INS_CELL ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 191 , 75 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen einfügen : Zellen einf³gen */
+ Text = "Zellen einfügen" ;
+ Text [ ENGLISH ] = "Insert Cells" ;
+ Text [ norwegian ] = "Insert Cells" ;
+ Text [ italian ] = "Inserisci celle" ;
+ Text [ portuguese_brazilian ] = "Inserir Células" ;
+ Text [ portuguese ] = "Inserir células" ;
+ Text [ finnish ] = "Lisää soluja" ;
+ Text [ danish ] = "Indsæt celler" ;
+ Text [ french ] = "Insertion de cellules" ;
+ Text [ swedish ] = "Infoga celler" ;
+ Text [ dutch ] = "Cellen invoegen" ;
+ Text [ spanish ] = "Insertar celdas" ;
+ Text [ english_us ] = "Insert Cells" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 135 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 135 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 135 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ RadioButton BTN_INSCOLS
+ {
+ Pos = MAP_APPFONT ( 12 , 53 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze ~Spalten einfügen : Ganze ~Spalten einf³gen */
+ Text = "Ganze ~Spalten einfügen" ;
+ Text [ ENGLISH ] = "Insert ~columns" ;
+ Text [ norwegian ] = "Insert ~columns" ;
+ Text [ italian ] = "Inserisci ~colonne intere" ;
+ Text [ portuguese_brazilian ] = "Inserir ~colunas" ;
+ Text [ portuguese ] = "Inserir ~colunas" ;
+ Text [ finnish ] = "Lisää ~sarakkeita" ;
+ Text [ danish ] = "Indsæt hele kolonner" ;
+ Text [ french ] = "Insérer des ~colonnes" ;
+ Text [ swedish ] = "Infoga hela ~kolumner" ;
+ Text [ dutch ] = "Hele ~kolommen invoegen" ;
+ Text [ spanish ] = "Insertar ~columnas completas" ;
+ Text [ english_us ] = "Entire ~column" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "²åÈëÕûÁÐ(~C)";
+ Text[ russian ] = "Âñòàâèòü âåñü ñòîëáåö";
+ Text[ polish ] = "Wstaw ca³e kolumny";
+ Text[ japanese ] = "—ñ‚Ì‘}“ü(~C)";
+ Text[ chinese_traditional ] = "´¡¤J¾ãÄæ(~C)";
+ Text[ arabic ] = "ÅÏÑÇÌ ÃÚãÏÉ ßÇãáÉ";
+ Text[ greek ] = "ÅéóáãùãÞ ïëüêëçñçò óôÞëçò";
+ Text[ korean ] = "Àüü ¿­(~C)";
+ Text[ turkish ] = "Tam s~ütun ekle";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_INSROWS
+ {
+ Pos = MAP_APPFONT ( 12 , 40 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze ~Zeilen einfügen : Ganze ~Zeilen einf³gen */
+ Text = "Ganze ~Zeilen einfügen" ;
+ Text [ ENGLISH ] = "Insert ~rows" ;
+ Text [ norwegian ] = "Insert ~rows" ;
+ Text [ italian ] = "Inserisci ~righe intere" ;
+ Text [ portuguese_brazilian ] = "Inserir ~fileiras" ;
+ Text [ portuguese ] = "Inserir ~linhas inteiras" ;
+ Text [ finnish ] = "Lisää ~rivejä" ;
+ Text [ danish ] = "Indsæt hele rækker" ;
+ Text [ french ] = "Insérer des ~lignes entières" ;
+ Text [ swedish ] = "Infoga hela ~rader" ;
+ Text [ dutch ] = "~Hele rijen invoegen" ;
+ Text [ spanish ] = "Insertar ~filas completas" ;
+ Text [ english_us ] = "Entire ro~w" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "²åÈëÕûÐÐ(~W)";
+ Text[ russian ] = "Âñòàâèòü ñòðîêó";
+ Text[ polish ] = "Wstaw ca³e wiersze";
+ Text[ japanese ] = "s‚Ì‘}“ü(~W)";
+ Text[ chinese_traditional ] = "´¡¤J¾ã¦C(~W)";
+ Text[ arabic ] = "ÅÏÑÇÌ ÕÝæÝ ßÇãáÉ";
+ Text[ greek ] = "ÅéóáãùãÞ ïëüêëçñçò ãñáììÞò";
+ Text[ korean ] = "Àüü Çà(~W)";
+ Text[ turkish ] = "Tam s~atýr ekle";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_CELLSRIGHT
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ Text = "Zellen nach ~rechts verschieben" ;
+ Text [ ENGLISH ] = "Move cells ri~ght" ;
+ Text [ norwegian ] = "Move cells ri~ght" ;
+ Text [ italian ] = "Sposta celle a de~stra" ;
+ Text [ portuguese_brazilian ] = "Mover células para a di~reita" ;
+ Text [ portuguese ] = "Mover células para a ~direita" ;
+ Text [ finnish ] = "Siirrä soluja ~oikealle" ;
+ Text [ danish ] = "Flyt celler mod højre" ;
+ Text [ french ] = "Déplacer les cellules vers la ~droite" ;
+ Text [ swedish ] = "Flytta celler åt höge~r" ;
+ Text [ dutch ] = "Cellen naar ~rechts verplaatsen" ;
+ Text [ spanish ] = "Desplazar celdas a la ~derecha" ;
+ Text [ english_us ] = "Shift cells ~right" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÓÒÒƶ¯µ¥Ôª¸ñ(~R)";
+ Text[ russian ] = "Ïåðåìåñòèòü ÿ÷åéêè âïðàâî";
+ Text[ polish ] = "Przesuñ komórki w prawo";
+ Text[ japanese ] = "¾Ù‚ð‰E‚Ɉړ®(~R)";
+ Text[ chinese_traditional ] = "¦V¥k²¾°ÊÀx¦s®æ(~R)";
+ Text[ arabic ] = "ÅÒÇÍÉ ÇáÎáÇíÇ Åáì Çáíãíä";
+ Text[ greek ] = "Ìåôáêßíçóç êåëéþí ðñïò ôá äåîéÜ";
+ Text[ korean ] = "¼¿ ¿À¸¥ÂÊÀ¸·Î ¹Ð±â(~R)";
+ Text[ turkish ] = "Hücreleri s ~aða kaydýr";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_CELLSDOWN
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 114 , 10 ) ;
+ Text = "Zellen nach ~unten verschieben" ;
+ Text [ ENGLISH ] = "Move cells ~down" ;
+ Text [ norwegian ] = "Move cells ~down" ;
+ Text [ italian ] = "Sposta celle in ~basso" ;
+ Text [ portuguese_brazilian ] = "Mover células para ~baixo" ;
+ Text [ portuguese ] = "Mover células para ~baixo" ;
+ Text [ finnish ] = "Siirrä soluja ~alas" ;
+ Text [ danish ] = "Flyt celler nedad" ;
+ Text [ french ] = "Déplacer les cellules vers le ~bas" ;
+ Text [ swedish ] = "Flytta celler ne~dåt" ;
+ Text [ dutch ] = "Cellen naar ~beneden verplaatsen" ;
+ Text [ spanish ] = "Desplazar celdas hacia a~bajo" ;
+ Text [ english_us ] = "Shift cells ~down" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÏÂÒƶ¯µ¥Ôª¸ñ(~D)";
+ Text[ russian ] = "Ïåðåìåñòèòü ÿ÷åéêè âíèç";
+ Text[ polish ] = "Przeni~eœ komórki w dó³";
+ Text[ japanese ] = "¾Ù‚ð‰º‚ÉˆÚ“®(~D)";
+ Text[ chinese_traditional ] = "¦V¤U²¾°ÊÀx¦s®æ(~D)";
+ Text[ arabic ] = "ÅÒÇÍÉ ÇáÎáÇíÇ Åáì ÃÓÝá";
+ Text[ greek ] = "Ìåôáêßíçóç êåëéþí ðñïò ôá êÜôù";
+ Text[ korean ] = "¼¿ ¾Æ·¡·Î ¹Ð±â(~D)";
+ Text[ turkish ] = "Hücreleri ~aþaðý kaydýr";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_FRAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 123 , 69 ) ;
+ Text = "Auswahl" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Selecção" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ french ] = "Options" ;
+ Text [ swedish ] = "Urval" ;
+ Text [ dutch ] = "Selectie" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ english_us ] = "Selection" ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "²åÈëµ¥Ôª¸ñ";
+ Text[ russian ] = "Âñòàâèòü ÿ÷åéêè";
+ Text[ polish ] = "Wstaw komórki";
+ Text[ japanese ] = "¾Ù‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤JÀx¦s®æ";
+ Text[ arabic ] = "ÅÏÑÇÌ ÎáÇíÇ";
+ Text[ greek ] = "ÐñïóèÞêç êåëéþí";
+ Text[ korean ] = "¼¿ »ðÀÔ";
+ Text[ turkish ] = "Hücre ekle";
+ Text[ language_user1 ] = " ";
+};
+
+Bitmap RID_SCTEAMDLGBMP1
+{
+ File = "calcteam.bmp";
+};
+
+ModalDialog RID_SCDLG_DELCONT
+{
+ OutputSize = TRUE ;
+ HelpId = SID_DELETE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 148 , 131 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Inhalte löschen : Inhalte l÷schen */
+ Text = "Inhalte löschen" ;
+ Text [ ENGLISH ] = "Delete Contents" ;
+ Text [ norwegian ] = "Delete Contents" ;
+ Text [ italian ] = "Cancella contenuto" ;
+ Text [ portuguese_brazilian ] = "Apagar Conteúdo" ;
+ Text [ portuguese ] = "Eliminar conteúdo" ;
+ Text [ finnish ] = "Poista sisältö" ;
+ Text [ danish ] = "Slet indhold" ;
+ Text [ french ] = "Supprimer du contenu" ;
+ Text [ swedish ] = "Radera innehåll" ;
+ Text [ dutch ] = "Inhoud wissen" ;
+ Text [ spanish ] = "Eliminar contenidos" ;
+ Text [ english_us ] = "Delete Contents" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 92 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 92 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 92 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CheckBox BTN_DELALL
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Alles löschen : ~Alles l÷schen */
+ Text = "~Alles löschen" ;
+ Text [ ENGLISH ] = "Delete ~All" ;
+ Text [ norwegian ] = "Delete ~All" ;
+ Text [ italian ] = "Cancella ~tutto" ;
+ Text [ portuguese_brazilian ] = "Apagar ~Tudo" ;
+ Text [ portuguese ] = "Eliminar ~tudo" ;
+ Text [ finnish ] = "Poista ~kaikki" ;
+ Text [ danish ] = "Slet alt" ;
+ Text [ french ] = "Supprimer ~tout" ;
+ Text [ swedish ] = "Radera ~allt" ;
+ Text [ dutch ] = "Alles ~wissen" ;
+ Text [ spanish ] = "Eliminar ~todo" ;
+ Text [ english_us ] = "Delete ~all" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "È«²¿É¾³ý(~A)";
+ Text[ russian ] = "Óäàëèòü âñå";
+ Text[ polish ] = "Usuñ wszystko";
+ Text[ japanese ] = "‚·‚ׂÄíœ(~A)";
+ Text[ chinese_traditional ] = "¥þ³¡§R°£(~A)";
+ Text[ arabic ] = "ÍÐÝ Çáßá";
+ Text[ greek ] = "ÄéáãñáöÞ üëùí";
+ Text[ korean ] = "ÀüºÎ »èÁ¦(~A)";
+ Text[ turkish ] = "~Tümünü sil";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_DELSTRINGS
+ {
+ Pos = MAP_APPFONT ( 12 , 30 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Zeichen~ketten" ;
+ Text [ ENGLISH ] = "~Strings" ;
+ Text [ norwegian ] = "~Strings" ;
+ Text [ italian ] = "~Stringhe" ;
+ Text [ portuguese_brazilian ] = "~Cadeias" ;
+ Text [ portuguese ] = "Cadeias de caracteres" ;
+ Text [ finnish ] = "~Merkkijonot" ;
+ Text [ danish ] = "Strenge" ;
+ Text [ french ] = "~Chaînes de caractères" ;
+ Text [ swedish ] = "Str~ängar" ;
+ Text [ dutch ] = "~Tekenreeksen" ;
+ Text [ spanish ] = "C~adenas de caracteres" ;
+ Text [ english_us ] = "~Strings" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×Ö´®(~S)";
+ Text[ russian ] = "Ñòðîêà ñèìâîëîâ";
+ Text[ polish ] = "Ci¹gi znaków";
+ Text[ japanese ] = "•¶Žš—ñ(~S)";
+ Text[ chinese_traditional ] = "¦r¦ê(~S)";
+ Text[ arabic ] = "ÓáÇÓá ÇáÃÍÑÝ";
+ Text[ greek ] = "Áêïëïõèßåò ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ¿­(~S)";
+ Text[ turkish ] = "~Dize";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_DELNUMBERS
+ {
+ Pos = MAP_APPFONT ( 12 , 43 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Zahlen" ;
+ Text [ ENGLISH ] = "~Numbers" ;
+ Text [ norwegian ] = "~Numbers" ;
+ Text [ italian ] = "~Numeri" ;
+ Text [ portuguese_brazilian ] = "~Números" ;
+ Text [ portuguese ] = "Números" ;
+ Text [ finnish ] = "~Numerot" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nom~bres" ;
+ Text [ swedish ] = "~Siffror" ;
+ Text [ dutch ] = "~Getallen" ;
+ Text [ spanish ] = "Núm~eros" ;
+ Text [ english_us ] = "~Numbers" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Êý×Ö(~N)";
+ Text[ russian ] = "×èñëà";
+ Text[ polish ] = "Liczby";
+ Text[ japanese ] = "”(~N)";
+ Text[ chinese_traditional ] = "¼Æ¦r(~N)";
+ Text[ arabic ] = "ÇáÃÑÞÇã";
+ Text[ greek ] = "Áñéèìïß";
+ Text[ korean ] = "¼ýÀÚ(~N)";
+ Text[ turkish ] = "~Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_DELDATETIME
+ {
+ Pos = MAP_APPFONT ( 12 , 56 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Datum & Zeit" ;
+ Text [ ENGLISH ] = "~Date & Time" ;
+ Text [ norwegian ] = "~Date & Time" ;
+ Text [ italian ] = "~Data & Ora" ;
+ Text [ portuguese_brazilian ] = "~Data e Hora" ;
+ Text [ portuguese ] = "~Data & Hora" ;
+ Text [ finnish ] = "~Päivät & ajat" ;
+ Text [ danish ] = "~Dato og klokkeslæt" ;
+ Text [ french ] = "~Date & heure" ;
+ Text [ swedish ] = "~Datum och tid" ;
+ Text [ dutch ] = "~Datum & tijd" ;
+ Text [ spanish ] = "Fecha y ~hora" ;
+ Text [ english_us ] = "~Date & time" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÈÕÆÚºÍʱ¼ä(~D)";
+ Text[ russian ] = "Äàòà è âðåìÿ";
+ Text[ polish ] = "Data & Godzina";
+ Text[ japanese ] = "“ú•t&Žž(~D)";
+ Text[ chinese_traditional ] = "¤é´Á©M®É¶¡(~D)";
+ Text[ arabic ] = "ÇáÊÇÑíÎ æÇáæÞÊ";
+ Text[ greek ] = "Çìåñïìçíßá & ¿ñá";
+ Text[ korean ] = "ÀÏÀÚ &½Ã°£(~D)";
+ Text[ turkish ] = "~Tarih & Saat";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_DELFORMULAS
+ {
+ Pos = MAP_APPFONT ( 12 , 69 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Formeln" ;
+ Text [ ENGLISH ] = "~Formulas" ;
+ Text [ norwegian ] = "~Formulas" ;
+ Text [ italian ] = "~Formule" ;
+ Text [ portuguese_brazilian ] = "~Fórmulas" ;
+ Text [ portuguese ] = "~Fórmulas" ;
+ Text [ finnish ] = "~Kaavat" ;
+ Text [ danish ] = "~Formler" ;
+ Text [ french ] = "~Formules" ;
+ Text [ swedish ] = "~Formler" ;
+ Text [ dutch ] = "~Formules" ;
+ Text [ spanish ] = "Fórmu~las" ;
+ Text [ english_us ] = "~Formulas" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¹«Ê½(~F)";
+ Text[ russian ] = "Ôîðìóëû";
+ Text[ polish ] = "Formu³y";
+ Text[ japanese ] = "”Ž®(~F)";
+ Text[ chinese_traditional ] = "¤½¦¡(~F)";
+ Text[ arabic ] = "ÇáÕíÛ";
+ Text[ greek ] = "Ôýðïé";
+ Text[ korean ] = "¼ö½Ä(~F)";
+ Text[ turkish ] = "~Formül";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_DELATTRS
+ {
+ Pos = MAP_APPFONT ( 12 , 95 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "Forma~te" ;
+ Text [ ENGLISH ] = "Forma~ts" ;
+ Text [ norwegian ] = "Forma~ts" ;
+ Text [ italian ] = "Forma~ti" ;
+ Text [ portuguese_brazilian ] = "Forma~tos" ;
+ Text [ portuguese ] = "Forma~tos" ;
+ Text [ finnish ] = "M~uodot" ;
+ Text [ danish ] = "Formater" ;
+ Text [ french ] = "For~mats" ;
+ Text [ swedish ] = "Forma~t" ;
+ Text [ dutch ] = "~Opmaakprofielen" ;
+ Text [ spanish ] = "~Formatos" ;
+ Text [ english_us ] = "For~mats" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¸ñʽ(~M)";
+ Text[ russian ] = "Ôîðìàòû";
+ Text[ polish ] = "For~maty";
+ Text[ japanese ] = "‘Ž®(~M)";
+ Text[ chinese_traditional ] = "®æ¦¡(~M)";
+ Text[ arabic ] = "ÇáÊäÓíÞÇÊ";
+ Text[ greek ] = "ÌåãÝèç";
+ Text[ korean ] = "¼­½Ä(~M)";
+ Text[ turkish ] = "Forma~t";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_DELNOTES
+ {
+ Pos = MAP_APPFONT ( 12 , 82 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Notizen" ;
+ Text [ ENGLISH ] = "N~otes" ;
+ Text [ norwegian ] = "N~otes" ;
+ Text [ italian ] = "N~ote" ;
+ Text [ portuguese_brazilian ] = "Ob~servações" ;
+ Text [ portuguese ] = "Observações" ;
+ Text [ finnish ] = "~Huomautukset" ;
+ Text [ danish ] = "Noter" ;
+ Text [ french ] = "~Notes" ;
+ Text [ swedish ] = "A~nteckningar" ;
+ Text [ dutch ] = "~Aantekeningen" ;
+ Text [ spanish ] = "N~otas" ;
+ Text [ english_us ] = "Not~es" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "±¸×¢(~E)";
+ Text[ russian ] = "Ïðèìå÷àíèÿ";
+ Text[ polish ] = "Notatki";
+ Text[ japanese ] = "ºÒÝÄ(~E)";
+ Text[ chinese_traditional ] = "³Æª`(~E)";
+ Text[ arabic ] = "ãáÇÍÙÇÊ";
+ Text[ greek ] = "Óçìåéþóåéò";
+ Text[ korean ] = "¸Þ¸ð(~E)";
+ Text[ turkish ] = "~Not";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_DELOBJECTS
+ {
+ Pos = MAP_APPFONT ( 12 , 108 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Objekte" ;
+ Text [ ENGLISH ] = "~Objects" ;
+ Text [ english_us ] = "~Objects" ;
+ TabStop = TRUE ;
+ Text [ italian ] = "~Oggetti" ;
+ Text [ spanish ] = "Objeto~s" ;
+ Text [ french ] = "~Objets" ;
+ Text [ dutch ] = "O~bjecten" ;
+ Text [ swedish ] = "~Objekt" ;
+ Text [ danish ] = "Objekter" ;
+ Text [ portuguese_brazilian ] = "~Objekte" ;
+ Text [ portuguese ] = "Objectos" ;
+ Text[ chinese_simplified ] = "¶ÔÏó(~O)";
+ Text[ russian ] = "Îáúåêòû";
+ Text[ polish ] = "Obiekty";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä(~O)";
+ Text[ chinese_traditional ] = "ª«¥ó(~O)";
+ Text[ arabic ] = "ÇáßÇÆäÇÊ";
+ Text[ greek ] = "Áíôéêåßìåíá";
+ Text[ korean ] = "°³Ã¼(~O)";
+ Text[ turkish ] = "~Nesne";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_FRAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 80 , 122 ) ;
+ Text = "Auswahl" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Opções" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ french ] = "Sélection" ;
+ Text [ swedish ] = "Urval" ;
+ Text [ dutch ] = "Selectie" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ english_us ] = "Selection" ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "ɾ³ýÄÚÈÝ";
+ Text[ russian ] = "Óäàëèòü ñîäåðæèìîå";
+ Text[ polish ] = "Usuñ zawartoœci";
+ Text[ japanese ] = "“à—e‚Ìíœ";
+ Text[ chinese_traditional ] = "§R°£¤º®e";
+ Text[ arabic ] = "ÍÐÝ ãÍÊæíÇÊ";
+ Text[ greek ] = "ÄéáãñáöÞ ðåñéå÷ïìÝíùí";
+ Text[ korean ] = "³»¿ë Áö¿ì±â";
+ Text[ turkish ] = "Ýçerikleri sil";
+ Text[ language_user1 ] = " ";
+};
+
+
+ModalDialog RID_SCDLG_INSCONT
+{
+ OutputSize = TRUE ;
+ HelpId = FID_INS_CELL_CONTENTS ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 244 , 178 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Inhalte einfügen : Inhalte einf³gen */
+ Text = "Inhalte einfügen" ;
+ Text [ ENGLISH ] = "Insert Contents" ;
+ Text [ norwegian ] = "Insert Contents" ;
+ Text [ italian ] = "Incolla speciale" ;
+ Text [ portuguese_brazilian ] = "Inserir Conteúdo" ;
+ Text [ portuguese ] = "Inserir conteúdo" ;
+ Text [ finnish ] = "Lisää sisältö" ;
+ Text [ danish ] = "Indsæt indhold" ;
+ Text [ french ] = "Collage spécial" ;
+ Text [ swedish ] = "Infoga innehåll" ;
+ Text [ dutch ] = "Inhoud invoegen" ;
+ Text [ spanish ] = "Pegado especial" ;
+ Text [ english_us ] = "Paste Special" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 188 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 188 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 188 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CheckBox BTN_INSALL
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Alles einfügen : ~Alles einf³gen */
+ Text = "~Alles einfügen" ;
+ Text [ ENGLISH ] = "Insert a~ll" ;
+ Text [ norwegian ] = "Insert a~ll" ;
+ Text [ italian ] = "Incolla ~tutto" ;
+ Text [ portuguese_brazilian ] = "Inserir ~tudo" ;
+ Text [ portuguese ] = "Inserir ~tudo" ;
+ Text [ finnish ] = "Lisää ~kaikki" ;
+ Text [ danish ] = "Indsæt alt" ;
+ Text [ french ] = "~Insérer tout" ;
+ Text [ swedish ] = "Klistra in ~allt" ;
+ Text [ dutch ] = "Alle ~invoegen" ;
+ Text [ spanish ] = "~Pegar todo" ;
+ Text [ english_us ] = "~Paste all" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "È«²¿²åÈë(~P)";
+ Text[ russian ] = "Âñòàâèòü âñå";
+ Text[ polish ] = "Wklej wszystko";
+ Text[ japanese ] = "‚·‚ׂđ}“ü(~P)";
+ Text[ chinese_traditional ] = "¥þ³¡´¡¤J(~P)";
+ Text[ arabic ] = "áÕÞ Çáßá";
+ Text[ greek ] = "Åðéêüëëçóç üëùí";
+ Text[ korean ] = "¸ðµÎ ºÙ¿©³Ö±â(~P)";
+ Text[ turkish ] = "~Tümünü yapýþtýr";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_INSSTRINGS
+ {
+ Pos = MAP_APPFONT ( 12 , 30 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "Zeichen~ketten" ;
+ Text [ ENGLISH ] = "~Strings" ;
+ Text [ norwegian ] = "~Strings" ;
+ Text [ italian ] = "~Stringhe" ;
+ Text [ portuguese_brazilian ] = "~Cadeias" ;
+ Text [ portuguese ] = "~Cadeias de caracteres" ;
+ Text [ finnish ] = "~Merkkijonot" ;
+ Text [ danish ] = "Strenge" ;
+ Text [ french ] = "~Chaînes de caractères" ;
+ Text [ swedish ] = "Str~ängar" ;
+ Text [ dutch ] = "~Tekenreeksen" ;
+ Text [ spanish ] = "C~adenas de caracteres" ;
+ Text [ english_us ] = "~Strings" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×Ö´®(~R)";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Ci¹gi znaków";
+ Text[ japanese ] = "•¶Žš—ñ(~R)";
+ Text[ chinese_traditional ] = "¦r¦ê(~R)";
+ Text[ arabic ] = "ÓáÇÓá ÇáÃÍÑÝ";
+ Text[ greek ] = "Áêïëïõèßåò ÷áñáêôÞñùí";
+ Text[ korean ] = "¹®ÀÚ¿­(~S)";
+ Text[ turkish ] = "~Dize";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_INSNUMBERS
+ {
+ Pos = MAP_APPFONT ( 12 , 43 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "~Zahlen" ;
+ Text [ ENGLISH ] = "~Numbers" ;
+ Text [ norwegian ] = "~Numbers" ;
+ Text [ italian ] = "~Numeri" ;
+ Text [ portuguese_brazilian ] = "~Números" ;
+ Text [ portuguese ] = "~Números" ;
+ Text [ finnish ] = "~Numerot" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "~Nombres" ;
+ Text [ swedish ] = "~Siffror" ;
+ Text [ dutch ] = "~Getallen" ;
+ Text [ spanish ] = "Núm~eros" ;
+ Text [ english_us ] = "~Numbers" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Êý×Ö(~U)";
+ Text[ russian ] = "×èñëà";
+ Text[ polish ] = "Liczby";
+ Text[ japanese ] = "”(~U)";
+ Text[ chinese_traditional ] = "¼Æ¦r(~U)";
+ Text[ arabic ] = "ÇáÃÑÞÇã";
+ Text[ greek ] = "Áñéèìïß";
+ Text[ korean ] = "¼ýÀÚ(~N)";
+ Text[ turkish ] = "~Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_INSDATETIME
+ {
+ Pos = MAP_APPFONT ( 12 , 56 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "~Datum & Zeit" ;
+ Text [ ENGLISH ] = "~Date & Time" ;
+ Text [ norwegian ] = "~Date & Time" ;
+ Text [ italian ] = "~Data & Ora" ;
+ Text [ portuguese_brazilian ] = "~Data e Hora" ;
+ Text [ portuguese ] = "~Data & Hora" ;
+ Text [ finnish ] = "~Päivät & ajat" ;
+ Text [ danish ] = "~Dato og klokkeslæt" ;
+ Text [ french ] = "~Date & heure" ;
+ Text [ swedish ] = "~Datum och tid" ;
+ Text [ dutch ] = "~Datum & tijd" ;
+ Text [ spanish ] = "Fecha y ~hora" ;
+ Text [ english_us ] = "~Date & time" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÈÕÆÚºÍʱ¼ä(~D)";
+ Text[ russian ] = "Äàòà è âðåìÿ";
+ Text[ polish ] = "Data & Godzina";
+ Text[ japanese ] = "“ú•t&Žž(~D)";
+ Text[ chinese_traditional ] = "¤é´Á©M®É¶¡(~D)";
+ Text[ arabic ] = "ÇáÊÇÑíÎ æÇáæÞÊ";
+ Text[ greek ] = "Çìåñïìçíßá & ¿ñá";
+ Text[ korean ] = "ÀÏÀÚ & ½Ã°£(~D)";
+ Text[ turkish ] = "~Tarih & Saat";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_INSFORMULAS
+ {
+ Pos = MAP_APPFONT ( 12 , 69 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "~Formeln" ;
+ Text [ ENGLISH ] = "~Formulas" ;
+ Text [ norwegian ] = "~Formulas" ;
+ Text [ italian ] = "~Formule" ;
+ Text [ portuguese_brazilian ] = "~Fórmulas" ;
+ Text [ portuguese ] = "~Fórmulas" ;
+ Text [ finnish ] = "~Kaavat" ;
+ Text [ danish ] = "~Formler" ;
+ Text [ french ] = "~Formules" ;
+ Text [ swedish ] = "~Formler" ;
+ Text [ dutch ] = "~Formules" ;
+ Text [ spanish ] = "Fórmu~las" ;
+ Text [ english_us ] = "Form~ulas" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¹«Ê½(~F)";
+ Text[ russian ] = "Ôîðìóëû";
+ Text[ polish ] = "Formu³y";
+ Text[ japanese ] = "”Ž®(~F)";
+ Text[ chinese_traditional ] = "¤½¦¡(~F)";
+ Text[ arabic ] = "ÇáÕíÛ";
+ Text[ greek ] = "Ôýðïé";
+ Text[ korean ] = "¼ö½Ä(~U)";
+ Text[ turkish ] = "~Formül";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_INSATTRS
+ {
+ Pos = MAP_APPFONT ( 12 , 95 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "Forma~te" ;
+ Text [ ENGLISH ] = "Forma~ts" ;
+ Text [ norwegian ] = "Forma~ts" ;
+ Text [ italian ] = "Forma~ti" ;
+ Text [ portuguese_brazilian ] = "Forma~tos" ;
+ Text [ portuguese ] = "Forma~tos" ;
+ Text [ finnish ] = "M~uodot" ;
+ Text [ danish ] = "Formater" ;
+ Text [ french ] = "Forma~ts" ;
+ Text [ swedish ] = "Forma~t" ;
+ Text [ dutch ] = "~Opmaakprofielen" ;
+ Text [ spanish ] = "~Formatos" ;
+ Text [ english_us ] = "For~mats" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¸ñʽ(~O)";
+ Text[ russian ] = "Ôîðìàòû";
+ Text[ polish ] = "For~maty";
+ Text[ japanese ] = "‘Ž®(~O)";
+ Text[ chinese_traditional ] = "®æ¦¡(~O)";
+ Text[ arabic ] = "ÇáÊäÓíÞÇÊ";
+ Text[ greek ] = "ÌåãÝèç";
+ Text[ korean ] = "¼­½Ä(~M)";
+ Text[ turkish ] = "Forma~t";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_INSNOTES
+ {
+ Pos = MAP_APPFONT ( 12 , 82 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "~Notizen" ;
+ Text [ ENGLISH ] = "N~otes" ;
+ Text [ norwegian ] = "N~otes" ;
+ Text [ italian ] = "N~ote" ;
+ Text [ portuguese_brazilian ] = "Ob~servações" ;
+ Text [ portuguese ] = "~Observações" ;
+ Text [ finnish ] = "~Huomautukset" ;
+ Text [ danish ] = "Noter" ;
+ Text [ french ] = "~Notes" ;
+ Text [ swedish ] = "Ante~ckningar" ;
+ Text [ dutch ] = "~Aantekeningen" ;
+ Text [ spanish ] = "N~otas" ;
+ Text [ english_us ] = "N~otes" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "±¸×¢(~E)";
+ Text[ russian ] = "Ïðèìå÷àíèÿ";
+ Text[ polish ] = "Notatki";
+ Text[ japanese ] = "ÒÓ’ (~E)";
+ Text[ chinese_traditional ] = "³Æª`(~E)";
+ Text[ arabic ] = "ãáÇÍÙÇÊ";
+ Text[ greek ] = "Óçìåéþóåéò";
+ Text[ korean ] = "¸Þ¸ð(~O)";
+ Text[ turkish ] = "~Not";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_FRAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 90 , 109 ) ;
+ Text = "Auswahl" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Opções" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ french ] = "Sélection" ;
+ Text [ swedish ] = "Urval" ;
+ Text [ dutch ] = "Selectie" ;
+ Text [ spanish ] = "Selección" ;
+ Text [ english_us ] = "Selection" ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_OP_NOOP
+ {
+ Pos = MAP_APPFONT ( 108 , 14 ) ;
+ Size = MAP_APPFONT ( 69 , 10 ) ;
+ Text = "K~eine" ;
+ Text [ ENGLISH ] = "~None" ;
+ Text [ dutch ] = "~Geen" ;
+ Text [ english_us ] = "Non~e" ;
+ Text [ italian ] = "S~enza" ;
+ Text [ spanish ] = "Ning~una" ;
+ Text [ french ] = "~Aucune" ;
+ Text [ swedish ] = "Ing~en" ;
+ Text [ danish ] = "Ingen" ;
+ Text [ portuguese_brazilian ] = "Kei~ne" ;
+ Text [ portuguese ] = "~Nenhum" ;
+ Text[ chinese_simplified ] = "ÎÞ(~N)";
+ Text[ russian ] = "Áåç";
+ Text[ polish ] = "Brak";
+ Text[ japanese ] = "‚È‚µ(~N)";
+ Text[ chinese_traditional ] = "µL(~N)";
+ Text[ arabic ] = "ÈÏæä";
+ Text[ greek ] = "ÊáíÝíá";
+ Text[ korean ] = "¾øÀ½(~E)";
+ Text[ turkish ] = "~Yok";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_OP_ADD
+ {
+ Pos = MAP_APPFONT ( 108 , 30 ) ;
+ Size = MAP_APPFONT ( 69 , 10 ) ;
+ Text = "Addie~ren" ;
+ Text [ ENGLISH ] = "A~dd" ;
+ Text [ dutch ] = "O~ptellen" ;
+ Text [ english_us ] = "~Add" ;
+ Text [ italian ] = "Sommare" ;
+ Text [ spanish ] = "~Sumar" ;
+ Text [ french ] = "~Addition" ;
+ Text [ swedish ] = "Adde~ra" ;
+ Text [ danish ] = "Adder" ;
+ Text [ portuguese_brazilian ] = "Addie~ren" ;
+ Text [ portuguese ] = "~Adicionar" ;
+ Text[ chinese_simplified ] = "¼Ó(~A)";
+ Text[ russian ] = "Ñëîæåíèå";
+ Text[ polish ] = "Dodawa~æ";
+ Text[ japanese ] = "‘«‚·(~A)";
+ Text[ chinese_traditional ] = "¥[(~A)";
+ Text[ arabic ] = "ÌãÚ";
+ Text[ greek ] = "Ðñüóèåóç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "~Topla";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_OP_SUB
+ {
+ Pos = MAP_APPFONT ( 108 , 43 ) ;
+ Size = MAP_APPFONT ( 69 , 10 ) ;
+ Text = "~Subtrahieren" ;
+ Text [ ENGLISH ] = "~Subtract" ;
+ Text [ dutch ] = "~Aftrekken" ;
+ Text [ english_us ] = "S~ubtract" ;
+ Text [ italian ] = "Sottrai" ;
+ Text [ spanish ] = "S~ustraer" ;
+ Text [ french ] = "~Soustraction" ;
+ Text [ swedish ] = "Su~btrahera" ;
+ Text [ danish ] = "Subtraher" ;
+ Text [ portuguese_brazilian ] = "~Subtrahieren" ;
+ Text [ portuguese ] = "~Subtrair" ;
+ Text[ chinese_simplified ] = "¼õ(~S)";
+ Text[ russian ] = "Âû÷èòàíèå";
+ Text[ polish ] = "Odejmij";
+ Text[ japanese ] = "ˆø‚­(~S)";
+ Text[ chinese_traditional ] = "´î(~S)";
+ Text[ arabic ] = "ØÑÍ";
+ Text[ greek ] = "Áöáßñåóç";
+ Text[ korean ] = "»©±â(~U)";
+ Text[ turkish ] = "S~il";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_OP_MUL
+ {
+ Pos = MAP_APPFONT ( 108 , 56 ) ;
+ Size = MAP_APPFONT ( 69 , 10 ) ;
+ Text = "~Multiplizieren" ;
+ Text [ ENGLISH ] = "~Multiply" ;
+ Text [ dutch ] = "~Vermenigvuldigen" ;
+ Text [ english_us ] = "Multipl~y" ;
+ Text [ italian ] = "Moltiplica" ;
+ Text [ spanish ] = "~Multiplicar" ;
+ Text [ french ] = "~Multiplication" ;
+ Text [ swedish ] = "~Multiplicera" ;
+ Text [ danish ] = "Multiplicer" ;
+ Text [ portuguese_brazilian ] = "~Multiplizieren" ;
+ Text [ portuguese ] = "~Multiplicar" ;
+ Text[ chinese_simplified ] = "³Ë(~M)";
+ Text[ russian ] = "Óìíîæåíèå";
+ Text[ polish ] = "Mno¿y~æ";
+ Text[ japanese ] = "Š|‚¯‚é(~M)";
+ Text[ chinese_traditional ] = "­¼(~M)";
+ Text[ arabic ] = "ÖÑÈ";
+ Text[ greek ] = "Ðïëëáðëáóéáóìüò";
+ Text[ korean ] = "°öÇϱâ(~Y)";
+ Text[ turkish ] = "~Çarp";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_OP_DIV
+ {
+ Pos = MAP_APPFONT ( 108 , 69 ) ;
+ Size = MAP_APPFONT ( 69 , 10 ) ;
+ Text = "D~ividieren" ;
+ Text [ ENGLISH ] = "D~ivide" ;
+ Text [ dutch ] = "~Delen" ;
+ Text [ english_us ] = "Di~vide" ;
+ Text [ italian ] = "Dividere" ;
+ Text [ spanish ] = "~Dividir" ;
+ Text [ french ] = "D~ivision" ;
+ Text [ swedish ] = "Di~videra" ;
+ Text [ danish ] = "Divider" ;
+ Text [ portuguese_brazilian ] = "D~ividieren" ;
+ Text [ portuguese ] = "~Dividir" ;
+ Text[ chinese_simplified ] = "³ý(~V)";
+ Text[ russian ] = "Äåëåíèå";
+ Text[ polish ] = "Dzieliæ";
+ Text[ japanese ] = "Š„‚é(~V)";
+ Text[ chinese_traditional ] = "°£(~V)";
+ Text[ arabic ] = "ÞÓãÉ";
+ Text[ greek ] = "Äéáßñåóç";
+ Text[ korean ] = "³ª´©±â(~V)";
+ Text[ turkish ] = "~Böl";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_OPERATION
+ {
+ Pos = MAP_APPFONT ( 102 , 3 ) ;
+ Size = MAP_APPFONT ( 77 , 109 ) ;
+ Text = "Rechenoperationen" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ dutch ] = "Rekenoperaties" ;
+ Text [ english_us ] = "Operations" ;
+ Text [ italian ] = "Operazioni di calcolo" ;
+ Text [ spanish ] = "Operaciones" ;
+ Text [ french ] = "Opérations" ;
+ Text [ swedish ] = "Räkneoperationer" ;
+ Text [ danish ] = "Regneoperationer" ;
+ Text [ portuguese_brazilian ] = "Rechenoperationen" ;
+ Text [ portuguese ] = "Operações de cálculo" ;
+ Text[ chinese_simplified ] = "¼ÆËã";
+ Text[ russian ] = "Îïåðàöèè âû÷èñëåíèÿ";
+ Text[ polish ] = "Operacje obliczeniowe";
+ Text[ japanese ] = "‰‰ŽZ";
+ Text[ chinese_traditional ] = "­pºâ";
+ Text[ arabic ] = "ÇáÚãáíÇÊ ÇáÍÓÇÈíÉ";
+ Text[ greek ] = "ÐñÜîåéò õðïëïãéóìïý";
+ Text[ korean ] = "ÀÛµ¿";
+ Text[ turkish ] = "Hesap iþlemleri";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_SKIP_EMPTY
+ {
+ Pos = MAP_APPFONT ( 12 , 129 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Leerzellen überspringen : ~Leerzellen ³berspringen */
+ Text = "~Leerzellen überspringen" ;
+ Text [ ENGLISH ] = "~Skip empty cells" ;
+ Text [ dutch ] = "~Lege cellen overspringen" ;
+ Text [ english_us ] = "S~kip empty cells" ;
+ Text [ italian ] = "Salta righe vuote" ;
+ Text [ spanish ] = "Ignorar ~celdas vacías" ;
+ Text [ french ] = "~Ignorer les cellules vides" ;
+ Text [ swedish ] = "Ho~ppa över tomma celler" ;
+ Text [ danish ] = "Spring tomme celler over" ;
+ Text [ portuguese ] = "~Saltar células vazias" ;
+ Text [ portuguese_brazilian ] = "~Leerzellen überspringen" ;
+ Text[ chinese_simplified ] = "Ìø¹ý¿Õµ¥Ôª¸ñ(~K)";
+ Text[ russian ] = "Ïðîïóñê ïóñòûõ ÿ÷ååê";
+ Text[ polish ] = "Przeskocz p~uste komórki";
+ Text[ japanese ] = "‹ó”’‚̾قð‚Ƃ΂·(~K)";
+ Text[ chinese_traditional ] = "¸õ¹LªÅÀx¦s®æ(~K)";
+ Text[ arabic ] = "ÊÎØí ÇáÎáÇíÇ ÇáÎÇáíÉ";
+ Text[ greek ] = "ÐáñÜëåéøç êåíþí êåëéþí";
+ Text[ korean ] = "ºó ¼¿ ³Ñ¾î°¡±â(~K)";
+ Text[ turkish ] = "~Boþ hücreleri atla";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_TRANSPOSE
+ {
+ Pos = MAP_APPFONT ( 12 , 142 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "Transp~onieren" ;
+ Text [ ENGLISH ] = "~Tranpose" ;
+ Text [ english_us ] = "~Transpose" ;
+ Text [ italian ] = "~Trasponi" ;
+ Text [ spanish ] = "~Transponer" ;
+ Text [ french ] = "~Transposer" ;
+ Text [ dutch ] = "~Transponeren" ;
+ Text [ swedish ] = "Transp~onera" ;
+ Text [ danish ] = "Transponer" ;
+ Text [ portuguese_brazilian ] = "~Transponieren" ;
+ Text [ portuguese ] = "~Transpor" ;
+ Text[ chinese_simplified ] = "ÐÐÁÐÌæ»»(~T)";
+ Text[ russian ] = "Òðàíñïîíèðîâàòü";
+ Text[ polish ] = "Transponuj";
+ Text[ japanese ] = "s‚Æ—ñ‚Ì“ü‚ê‘Ö‚¦(~T)";
+ Text[ chinese_traditional ] = "¦æÄæ´À´«(~T)";
+ Text[ arabic ] = "ÊÛííÑ ÇáãßÇä";
+ Text[ greek ] = "ÁíôéìåôÜèåóç";
+ Text[ korean ] = "µÚ ¹Ù²Ù±â(~T)";
+ Text[ turkish ] = "Dönüþtür";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_LINK
+ {
+ Pos = MAP_APPFONT ( 12 , 155 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Verknü~pfen : Verkn³~pfen */
+ Text = "Verknü~pfen" ;
+ Text [ ENGLISH ] = "Lin~k" ;
+ Text [ dutch ] = "~Koppelen" ;
+ Text [ english_us ] = "~Link" ;
+ Text [ italian ] = "Collega" ;
+ Text [ spanish ] = "~Vincular" ;
+ Text [ french ] = "Coller avec ~lien" ;
+ Text [ swedish ] = "~Länka" ;
+ Text [ danish ] = "Kæd" ;
+ Text [ portuguese_brazilian ] = "Verknü~pfen" ;
+ Text [ portuguese ] = "~Ligar" ;
+ Text[ chinese_simplified ] = "Á´½Ó(~L)";
+ Text[ russian ] = "Ñâÿçàòü";
+ Text[ polish ] = "£¹cz";
+ Text[ japanese ] = "Øݸ(~L)";
+ Text[ chinese_traditional ] = "±¶®|(~L)";
+ Text[ arabic ] = "ÑÈØ";
+ Text[ greek ] = "Óýíäåóç";
+ Text[ korean ] = "¿¬°á(~L)";
+ Text[ turkish ] = "~Baðla";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_OPTIONS
+ {
+ Pos = MAP_APPFONT ( 6 , 118 ) ;
+ Size = MAP_APPFONT ( 90 , 54 ) ;
+ Text = "Optionen" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ english_us ] = "Options" ;
+ Text [ portuguese_brazilian ] = "Optionen" ;
+ Text [ swedish ] = "Alternativ" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ french ] = "Options" ;
+ Text [ dutch ] = "Opties" ;
+ Text [ portuguese ] = "Opções" ;
+ Text[ chinese_simplified ] = "Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Opcje";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_MV_NONE
+ {
+ Pos = MAP_APPFONT ( 108 , 129 ) ;
+ Size = MAP_APPFONT ( 69 , 10 ) ;
+ Text = "Nicht ~verschieben" ;
+ Text [ ENGLISH ] = "~None" ;
+ Text [ english_us ] = "Don't sh~ift" ;
+ Text [ portuguese_brazilian ] = "Nicht ~verschieben" ;
+ Text [ swedish ] = "Fl~ytta inte" ;
+ Text [ danish ] = "Ikke flytte" ;
+ Text [ italian ] = "Non ~spostare" ;
+ Text [ spanish ] = "~No desplazar" ;
+ Text [ french ] = "~Ne pas déplacer" ;
+ Text [ dutch ] = "~Niet verplaatsen" ;
+ Text [ portuguese ] = "~Não mover" ;
+ Text[ chinese_simplified ] = "²»Òƶ¯(~D)";
+ Text[ russian ] = "Íå ïåðåìåùàòü";
+ Text[ polish ] = "Nie przenoœ";
+ Text[ japanese ] = "ˆÚ“®‚µ‚È‚¢(~I)";
+ Text[ chinese_traditional ] = "¤£²¾°Ê(~D)";
+ Text[ arabic ] = "ÈÏæä ÅÒÇÍÉ";
+ Text[ greek ] = "Íá ìçí ãßíåé ìåôáêßíçóç";
+ Text[ korean ] = "¹Ð¾î³»Áö ¸¶½Ê½Ã¿À.(~I)";
+ Text[ turkish ] = "~Kaydýrma";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_MV_DOWN
+ {
+ Pos = MAP_APPFONT ( 108 , 142 ) ;
+ Size = MAP_APPFONT ( 69 , 10 ) ;
+ Text = "Nach ~unten" ;
+ Text [ ENGLISH ] = "~Down" ;
+ Text [ english_us ] = "Do~wn" ;
+ Text [ portuguese_brazilian ] = "Nach ~unten" ;
+ Text [ swedish ] = "~Nedåt" ;
+ Text [ danish ] = "Nedad" ;
+ Text [ italian ] = "Verso il ~basso" ;
+ Text [ spanish ] = "Hacia a~bajo" ;
+ Text [ french ] = "Vers le ~bas" ;
+ Text [ dutch ] = "Naar ~beneden" ;
+ Text [ portuguese ] = "Para ~baixo" ;
+ Text[ chinese_simplified ] = "ÏòÏÂ(~D)";
+ Text[ russian ] = "Âíèç";
+ Text[ polish ] = "W d~ó³";
+ Text[ japanese ] = "‰º‚É(~D)";
+ Text[ chinese_traditional ] = "¦V¤U(~D)";
+ Text[ arabic ] = "Åáì ÃÓÝá";
+ Text[ greek ] = "Ðñïò ôá êÜôù";
+ Text[ korean ] = "¾Æ·¡·Î(~W)";
+ Text[ turkish ] = "~Aþaðý";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_MV_RIGHT
+ {
+ Pos = MAP_APPFONT ( 108 , 155 ) ;
+ Size = MAP_APPFONT ( 69 , 10 ) ;
+ Text = "Nach re~chts" ;
+ Text [ ENGLISH ] = "~Right" ;
+ Text [ english_us ] = "~Right" ;
+ Text [ portuguese_brazilian ] = "Nach re~chts" ;
+ Text [ swedish ] = "Åt hö~ger" ;
+ Text [ danish ] = "Mod højre" ;
+ Text [ italian ] = "Verso ~destra" ;
+ Text [ spanish ] = "Hacia la de~recha" ;
+ Text [ french ] = "Déplacer vers la ~droite" ;
+ Text [ dutch ] = "Naar re~chts" ;
+ Text [ portuguese ] = "Para a ~direita" ;
+ Text[ chinese_simplified ] = "ÏòÓÒ(~R)";
+ Text[ russian ] = "Âïðàâî";
+ Text[ polish ] = "W praw~o";
+ Text[ japanese ] = "‰E‚É(~R)";
+ Text[ chinese_traditional ] = "¦V¥k(~R)";
+ Text[ arabic ] = "Åáì Çáíãíä";
+ Text[ greek ] = "Ðñïò ôá äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ(~R)";
+ Text[ turkish ] = "S~aða";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_MOVE
+ {
+ Pos = MAP_APPFONT ( 102 , 118 ) ;
+ Size = MAP_APPFONT ( 77 , 54 ) ;
+ Text = "Zellen verschieben" ;
+ Text [ ENGLISH ] = "Move cells" ;
+ Text [ english_us ] = "Shift cells" ;
+ Text [ portuguese_brazilian ] = "Zellen verschieben" ;
+ Text [ swedish ] = "Flytta celler" ;
+ Text [ danish ] = "Flyt celler" ;
+ Text [ italian ] = "Sposta celle" ;
+ Text [ spanish ] = "Desplazar celdas" ;
+ Text [ french ] = "Traitement des cellules" ;
+ Text [ dutch ] = "Cellen verplaatsen" ;
+ Text [ portuguese ] = "Mover células" ;
+ Text[ chinese_simplified ] = "Òƶ¯µ¥Ôª¸ñ";
+ Text[ russian ] = "Ïåðåìåñòèòü ÿ÷åéêè";
+ Text[ polish ] = "Przenieœ komórki";
+ Text[ japanese ] = "¾Ù‚̈ړ®";
+ Text[ chinese_traditional ] = "²¾°ÊÀx¦s®æ";
+ Text[ arabic ] = "ÅÒÇÍÉ ÇáÎáÇíÇ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "Ìåôáêßíçóç êåëéþí";
+ Text[ korean ] = "¼¿ ¹Ð±â";
+ Text[ turkish ] = "Hücreleri kaydýr";
+ };
+ Text[ chinese_simplified ] = "²åÈëÄÚÈÝ";
+ Text[ russian ] = "Ñïåöèàëüíàÿ âñòàâêà";
+ Text[ polish ] = "Wklej zawartoϾ";
+ Text[ japanese ] = "Œ`Ž®‚ð‘I‘ð‚µ‚Ä“\\‚è•t‚¯";
+ Text[ chinese_traditional ] = "´¡¤J¤º®e";
+ Text[ arabic ] = "áÕÞ ÎÇÕ";
+ Text[ greek ] = "ÅéäéêÞ åðéêüëëçóç";
+ Text[ korean ] = "¼±ÅÃÇÏ¿© ºÙ¿©³Ö±â";
+ Text[ turkish ] = "Özel yapýþtýr";
+ Text[ language_user1 ] = " ";
+};
+ModalDialog RID_SCDLG_MOVETAB
+{
+ OutputSize = TRUE ;
+ HelpId = FID_TAB_MOVE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 168 , 130 ) ;
+ Text = "Tabelle verschieben/kopieren" ;
+ Text [ ENGLISH ] = "Move/Copy table" ;
+ Text [ norwegian ] = "Move/Copy table" ;
+ Text [ italian ] = "Sposta o copia tabella" ;
+ Text [ portuguese_brazilian ] = "Mover/Copiar tabela" ;
+ Text [ portuguese ] = "Mover/Copiar folha" ;
+ Text [ finnish ] = "Siirrä/kopioi taulukko" ;
+ Text [ danish ] = "Flyt/kopier ark" ;
+ Text [ french ] = "Déplacer/copier la feuille" ;
+ Text [ swedish ] = "Kopiera/flytta tabell" ;
+ Text [ dutch ] = "Werkblad kopiëren/verplaatsen" ;
+ Text [ spanish ] = "Desplazar/Copiar hoja" ;
+ Text [ english_us ] = "Move/Copy Sheet" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 112 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 112 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 112 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_DEST
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "~Ins Dokument" ;
+ Text [ ENGLISH ] = "~To Document" ;
+ Text [ norwegian ] = "~To Document" ;
+ Text [ italian ] = "In ~documento" ;
+ Text [ portuguese_brazilian ] = "~Para Documento" ;
+ Text [ portuguese ] = "~Para documento" ;
+ Text [ finnish ] = "~Asiakirjaan" ;
+ Text [ danish ] = "I dokumentet" ;
+ Text [ french ] = "~Vers document" ;
+ Text [ swedish ] = "T~ill dokument" ;
+ Text [ dutch ] = "~Naar document" ;
+ Text [ spanish ] = "~Al documento" ;
+ Text [ english_us ] = "To ~document" ;
+ Text[ chinese_simplified ] = "¼ÓÈëÎĵµ(~D)";
+ Text[ russian ] = "Â äîêóìåíò";
+ Text[ polish ] = "Do dokumentu";
+ Text[ japanese ] = "ˆÚ“®æÄÞ·­ÒÝÄ–¼(~D)";
+ Text[ chinese_traditional ] = "¥[¤J¤å¥ó(~D)";
+ Text[ arabic ] = "Åáì ÇáãáÝ";
+ Text[ greek ] = "Óôï Ýããñáöï";
+ Text[ korean ] = "¹®¼­¿¡(~D)";
+ Text[ turkish ] = "~Belgeye";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DEST
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 18 ) ;
+ Size = MAP_APPFONT ( 80 , 60 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_INSERT
+ {
+ Pos = MAP_APPFONT ( 6 , 38 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ei~nfügen vor : Ei~nf³gen vor */
+ Text = "Ei~nfügen vor" ;
+ Text [ ENGLISH ] = "I~nsert before" ;
+ Text [ norwegian ] = "I~nsert before" ;
+ Text [ italian ] = "Prima del foglio" ;
+ Text [ portuguese_brazilian ] = "I~nserir antes" ;
+ Text [ portuguese ] = "I~nserir antes" ;
+ Text [ finnish ] = "~Lisää edelle" ;
+ Text [ danish ] = "Indsæt før" ;
+ Text [ french ] = "I~nsérer avant" ;
+ Text [ swedish ] = "I~nfoga före" ;
+ Text [ dutch ] = "~Invoegen voor" ;
+ Text [ spanish ] = "Insertar ~delante de" ;
+ Text [ english_us ] = "~Insert before" ;
+ Text[ chinese_simplified ] = "Ç°ÖÃÓÚ(~I)";
+ Text[ russian ] = "Âñòàâèòü ïåðåä";
+ Text[ polish ] = "Wstaw przed";
+ Text[ japanese ] = "ŽŸ‚Ì•\\‚Ì‘O‚É‘}“ü(~I)";
+ Text[ chinese_traditional ] = "«e¸m©ó(~I)";
+ Text[ arabic ] = "ÅÏÑÇÌ ÞÈá";
+ Text[ greek ] = "ÐñïóèÞêç ðñéí áðü";
+ Text[ korean ] = "¾Õ¿¡ »ðÀÔ(~I)";
+ Text[ turkish ] = "~Öne ekle";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_INSERT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 50 ) ;
+ Size = MAP_APPFONT ( 100 , 58 ) ;
+ TabStop = TRUE ;
+ };
+ CheckBox BTN_COPY
+ {
+ Pos = MAP_APPFONT ( 6 , 114 ) ;
+ Size = MAP_APPFONT ( 54 , 10 ) ;
+ Text = "~kopieren" ;
+ Text [ ENGLISH ] = "~Copy" ;
+ Text [ norwegian ] = "~Kopier" ;
+ Text [ italian ] = "~Copia" ;
+ Text [ portuguese_brazilian ] = "~Copiar" ;
+ Text [ portuguese ] = "~Copiar" ;
+ Text [ finnish ] = "~Kopioi" ;
+ Text [ danish ] = "Kopier" ;
+ Text [ french ] = "~Copier" ;
+ Text [ swedish ] = "~Kopiera" ;
+ Text [ dutch ] = "~Kopiëren" ;
+ Text [ spanish ] = "~Copiar" ;
+ Text [ english_us ] = "~Copy" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¸´ÖÆ(~C)";
+ Text[ russian ] = "Êîïèðîâàòü";
+ Text[ polish ] = "Kopiuj";
+ Text[ japanese ] = "ºËß°(~C)";
+ Text[ chinese_traditional ] = "½Æ»s(~C)";
+ Text[ arabic ] = "äÓÎ";
+ Text[ greek ] = "ÁíôéãñáöÞ";
+ Text[ korean ] = "º¹»ç(~C)";
+ Text[ turkish ] = "~Kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NEWDOC
+ {
+ Text = "- neues Dokument -" ;
+ Text [ ENGLISH ] = "- new document -" ;
+ Text [ norwegian ] = "- new document -" ;
+ Text [ italian ] = "- nuovo documento -" ;
+ Text [ portuguese_brazilian ] = "- novo documento -" ;
+ Text [ portuguese ] = "- novo documento -" ;
+ Text [ finnish ] = "- uusi asiakirja -" ;
+ Text [ danish ] = "- nyt dokument -" ;
+ Text [ french ] = "- Nouveau document -" ;
+ Text [ swedish ] = "- nytt dokument -" ;
+ Text [ dutch ] = "- nieuw document -" ;
+ Text [ spanish ] = "- nuevo documento -" ;
+ Text [ english_us ] = "- new document -" ;
+ Text[ chinese_simplified ] = "- ÐÂÎĵµ -";
+ Text[ russian ] = "- íîâûé äîêóìåíò -";
+ Text[ polish ] = "- nowy dokument -";
+ Text[ japanese ] = "-V‹KÄÞ·­ÒÝÄ-";
+ Text[ chinese_traditional ] = "- ·s¤å¥ó -";
+ Text[ arabic ] = "- ãÓÊäÏ ÌÏíÏ -";
+ Text[ greek ] = "- äçìéïõñãßá åããñÜöïõ -";
+ Text[ korean ] = "-»õ ¹®¼­ -";
+ Text[ turkish ] = "- yeni belge -";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "Òƶ¯»ò¸´Öƹ¤×÷±í";
+ Text[ russian ] = "Ïåðåìåñòèòü/ñêîïèðîâàòü ëèñò";
+ Text[ polish ] = "Przenieœ/Kopiuj arkusz";
+ Text[ japanese ] = "•\\‚̈ړ®/ºËß°";
+ Text[ chinese_traditional ] = "²¾°Ê©Î½Æ»s¤u§@ªí";
+ Text[ arabic ] = "ÊÍÑíß\\äÓÎ ÇáÌÏæá";
+ Text[ greek ] = "Ìåôáêßíçóç/ÁíôéãñáöÞ ðßíáêá";
+ Text[ korean ] = "½ÃÆ® À̵¿/º¹»ç";
+ Text[ turkish ] = "Sayfayý kaydýr/kopyala";
+ Text[ language_user1 ] = " ";
+};
+ModalDialog RID_SCDLG_STRINPUT
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 178 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 122 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 122 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 122 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Edit ED_INPUT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 18 ) ;
+ Size = MAP_APPFONT ( 110 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_LABEL
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ };
+};
+/*
+ModalDialog RID_SCDLG_MTRINPUT
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 190 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 136 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 136 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 136 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_LABEL
+ {
+ Pos = MAP_APPFONT ( 6 , 8 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ };
+ MetricField ED_VALUE
+ {
+ // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen
+ HelpId = HID_SC_MTRIN_VAL ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ TabStop = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ };
+ CheckBox BTN_DEFVAL
+ {
+ // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 24 ) ;
+ Size = MAP_APPFONT ( 58 , 10 ) ;
+ Text = "~Standardwert" ;
+ Text [ ENGLISH ] = "Defaul~t value" ;
+ Text [ norwegian ] = "Defaul~t value" ;
+ Text [ italian ] = "Valore standard" ;
+ Text [ portuguese_brazilian ] = "Defaul~t value" ;
+ Text [ portuguese ] = "~Valor padrão" ;
+ Text [ english_us ] = "~Default value" ;
+ Text [ dutch ] = "~Standaardwaarde" ;
+ Text [ spanish ] = "Valor ~predeterminado" ;
+ Text [ french ] = "Valeur stan~dard" ;
+ Text [ swedish ] = "~Förvalt värde" ;
+ Text [ danish ] = "~Standartværdi" ;
+ Text[ chinese_simplified ] = "~Standardwert";
+ };
+};
+*/
+
+ModalDialog RID_SCDLG_COL_MAN
+{
+ Text = "Spaltenbreite" ;
+ Text [ ENGLISH ] = "Column width" ;
+ Text [ norwegian ] = "Bredde på kolonne " ;
+ Text [ italian ] = "Larghezza colonna" ;
+ Text [ portuguese_brazilian ] = "Largura da coluna" ;
+ Text [ portuguese ] = "Largura da coluna" ;
+ Text [ finnish ] = "Sarakeleveys" ;
+ Text [ danish ] = "Kolonnebredde" ;
+ Text [ french ] = "Largeur de colonne" ;
+ Text [ swedish ] = "Kolumnbredd" ;
+ Text [ dutch ] = "Kolombreedte" ;
+ Text [ spanish ] = "Ancho de columna" ;
+ Text [ english_us ] = "Column Width" ;
+ Text[ chinese_simplified ] = "Áпí";
+
+ HelpId = FID_COL_WIDTH ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 190 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 136 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 136 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 136 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_LABEL
+ {
+ Text = "Breite" ;
+ Text [ ENGLISH ] = "Width" ;
+ Text [ norwegian ] = "Bredde " ;
+ Text [ italian ] = "Larghezza" ;
+ Text [ portuguese_brazilian ] = "Largura" ;
+ Text [ portuguese ] = "Largura" ;
+ Text [ finnish ] = "Leveys" ;
+ Text [ danish ] = "Bredde" ;
+ Text [ french ] = "Largeur" ;
+ Text [ swedish ] = "Bredd" ;
+ Text [ dutch ] = "Breedte" ;
+ Text [ spanish ] = "Ancho" ;
+ Text [ english_us ] = "Width" ;
+ Text[ chinese_simplified ] = "¿í";
+
+ Pos = MAP_APPFONT ( 6 , 8 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text[ russian ] = "Øèðèíà";
+ Text[ polish ] = "Szer.";
+ Text[ japanese ] = "•";
+ Text[ chinese_traditional ] = "¼e";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ greek ] = "ÐëÜôïò";
+ Text[ korean ] = "³Êºñ";
+ Text[ turkish ] = "Geniþlik";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_VALUE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ TabStop = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ };
+ CheckBox BTN_DEFVAL
+ {
+ // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 24 ) ;
+ Size = MAP_APPFONT ( 58 , 10 ) ;
+ Text = "~Standardwert" ;
+ Text [ ENGLISH ] = "Defaul~t value" ;
+ Text [ norwegian ] = "Defaul~t value" ;
+ Text [ italian ] = "Valore standard" ;
+ Text [ portuguese_brazilian ] = "Defaul~t value" ;
+ Text [ portuguese ] = "~Valor padrão" ;
+ Text [ english_us ] = "~Default value" ;
+ Text [ dutch ] = "~Standaardwaarde" ;
+ Text [ spanish ] = "Valor ~predetermin." ;
+ Text [ french ] = "Valeur par ~défaut" ;
+ Text [ swedish ] = "~Standardvärde" ;
+ Text [ danish ] = "Standardværdi" ;
+ Text[ chinese_simplified ] = "ĬÈÏÖµ(~D)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Wartoœæ domyœlna";
+ Text[ japanese ] = "•W€’l(~D)";
+ Text[ chinese_traditional ] = "Àq»{­È(~D)";
+ Text[ arabic ] = "ÞíãÉ ÇÝÊÑÇÖíÉ";
+ Text[ greek ] = "ÐñïåðéëåãìÝíç ôéìÞ";
+ Text[ korean ] = "±âº»°ª(~D)";
+ Text[ turkish ] = "~Standart deðer";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ russian ] = "Øèðèíà ñòîëáöà";
+ Text[ polish ] = "SzerokoϾ kolumn";
+ Text[ japanese ] = "—ñ•";
+ Text[ chinese_traditional ] = "Äæ¼e";
+ Text[ arabic ] = "ÚÑÖ ÇáÃÚãÏÉ";
+ Text[ greek ] = "ÐëÜôïò óôÞëçò";
+ Text[ korean ] = "¿­ ³Êºñ";
+ Text[ turkish ] = "Sütun geniþliði";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog RID_SCDLG_COL_OPT
+{
+ Text = "Optimale Spaltenbreite" ;
+ Text [ ENGLISH ] = "Optimal column width" ;
+ Text [ norwegian ] = "Optimal bredde på kolonne " ;
+ Text [ italian ] = "Larghezza colonna ottimale" ;
+ Text [ portuguese_brazilian ] = "Largura ótima da coluna" ;
+ Text [ portuguese ] = "Optimizar largura da coluna" ;
+ Text [ finnish ] = "Sopivin sarakeleveys" ;
+ Text [ danish ] = "Optimal kolonnebredde" ;
+ Text [ french ] = "Largeur de colonne optimale" ;
+ Text [ swedish ] = "Optimal kolumnbredd" ;
+ Text [ dutch ] = "Optimale kolombreedte" ;
+ Text [ spanish ] = "Ancho de columna óptimo" ;
+ Text [ english_us ] = "Optimal Column Width" ;
+ Text[ chinese_simplified ] = "×î¼ÑÁпí";
+
+ HelpId = FID_COL_OPT_WIDTH ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 190 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 136 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 136 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 136 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_LABEL
+ {
+ Text = "Extra" ;
+ Text [ ENGLISH ] = "Extra" ;
+ Text [ norwegian ] = "Ekstra " ;
+ Text [ italian ] = "Extra" ;
+ Text [ portuguese_brazilian ] = "Extra" ;
+ Text [ portuguese ] = "Adicional" ;
+ Text [ finnish ] = "Muut" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "Marges" ;
+ Text [ swedish ] = "Extra" ;
+ Text [ dutch ] = "Extra" ;
+ Text [ spanish ] = "Adicional" ;
+ Text [ english_us ] = "Add" ;
+ Text[ chinese_simplified ] = "¸½¼Ó";
+
+ Pos = MAP_APPFONT ( 6 , 8 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "•t‰Á";
+ Text[ chinese_traditional ] = "ªþ¥[";
+ Text[ arabic ] = "ÅÖÇÝí";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "Ãß°¡";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_VALUE
+ {
+ // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ TabStop = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ };
+ CheckBox BTN_DEFVAL
+ {
+ // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 24 ) ;
+ Size = MAP_APPFONT ( 58 , 10 ) ;
+ Text = "~Standardwert" ;
+ Text [ ENGLISH ] = "Defaul~t value" ;
+ Text [ norwegian ] = "Defaul~t value" ;
+ Text [ italian ] = "Valore standard" ;
+ Text [ portuguese_brazilian ] = "Defaul~t value" ;
+ Text [ portuguese ] = "~Valor padrão" ;
+ Text [ english_us ] = "~Default value" ;
+ Text [ dutch ] = "~Standaardwaarde" ;
+ Text [ spanish ] = "Valor ~predetermin." ;
+ Text [ french ] = "Valeur par ~défaut" ;
+ Text [ swedish ] = "~Standardvärde" ;
+ Text [ danish ] = "Standardværdi" ;
+ Text[ chinese_simplified ] = "ĬÈÏÖµ(~D)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Wartoœæ domyœlna";
+ Text[ japanese ] = "•W€’l(~D)";
+ Text[ chinese_traditional ] = "Àq»{­È(~D)";
+ Text[ arabic ] = "ÞíãÉ ÇÝÊÑÇÖíÉ";
+ Text[ greek ] = "ÐñïåðéëåãìÝíç ôéìÞ";
+ Text[ korean ] = "±âº»°ª(~D)";
+ Text[ turkish ] = "~Standart deðer";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ russian ] = "Îïòèìàëüíàÿ øèðèíà ñòîëáöîâ";
+ Text[ polish ] = "Optymalna szerokoϾ kolumn";
+ Text[ japanese ] = "Å“K‚È—ñ•";
+ Text[ chinese_traditional ] = "³ÌÓìÄæ¼e";
+ Text[ arabic ] = "ÇáÚÑÖ ÇáÃãËá ááÃÚãÏÉ";
+ Text[ greek ] = "ÂÝëôéóôï ðëÜôïò óôÞëçò";
+ Text[ korean ] = "ÃÖÀûÀÇ ¿­ ³Êºñ";
+ Text[ turkish ] = "En uygun sütun geniþliði";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog RID_SCDLG_ROW_MAN
+{
+ Text = "Zeilenhöhe" ;
+ Text [ ENGLISH ] = "Row height" ;
+ Text [ norwegian ] = "Høyde på rad " ;
+ Text [ italian ] = "Altezza riga" ;
+ Text [ portuguese_brazilian ] = "Altura da fileira" ;
+ Text [ portuguese ] = "Altura da linha" ;
+ Text [ finnish ] = "Rivikorkeus" ;
+ Text [ danish ] = "Rækkehøjde" ;
+ Text [ french ] = "Hauteur de ligne" ;
+ Text [ swedish ] = "Radhöjd" ;
+ Text [ dutch ] = "Rijhoogte" ;
+ Text [ spanish ] = "Altura de fila" ;
+ Text [ english_us ] = "Row Height" ;
+ Text[ chinese_simplified ] = "Ðиß";
+
+ HelpId = FID_ROW_HEIGHT ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 190 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 136 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 136 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 136 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_LABEL
+ {
+ Pos = MAP_APPFONT ( 6 , 8 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+
+ Text = "Höhe" ;
+ Text [ ENGLISH ] = "Height" ;
+ Text [ norwegian ] = "Høyde " ;
+ Text [ italian ] = "Altezza" ;
+ Text [ portuguese_brazilian ] = "Altura" ;
+ Text [ portuguese ] = "Altura" ;
+ Text [ finnish ] = "Korkeus" ;
+ Text [ danish ] = "Højde" ;
+ Text [ french ] = "Hauteur" ;
+ Text [ swedish ] = "Höjd" ;
+ Text [ dutch ] = "Hoogte" ;
+ Text [ spanish ] = "Altura" ;
+ Text [ english_us ] = "Height" ;
+ Text[ chinese_simplified ] = "¸ß";
+ Text[ russian ] = "Âûñîòà";
+ Text[ polish ] = "Wys.";
+ Text[ japanese ] = "‚‚³";
+ Text[ chinese_traditional ] = "°ª";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ";
+ Text[ greek ] = "¾øïò";
+ Text[ korean ] = "³ôÀÌ";
+ Text[ turkish ] = "Yükseklik";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_VALUE
+ {
+ // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ TabStop = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ };
+ CheckBox BTN_DEFVAL
+ {
+ // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 24 ) ;
+ Size = MAP_APPFONT ( 58 , 10 ) ;
+ Text = "~Standardwert" ;
+ Text [ ENGLISH ] = "Defaul~t value" ;
+ Text [ norwegian ] = "Defaul~t value" ;
+ Text [ italian ] = "Valore standard" ;
+ Text [ portuguese_brazilian ] = "Defaul~t value" ;
+ Text [ portuguese ] = "~Valor padrão" ;
+ Text [ english_us ] = "~Default value" ;
+ Text [ dutch ] = "~Standaardwaarde" ;
+ Text [ spanish ] = "Valor ~predetermin." ;
+ Text [ french ] = "Valeur par ~défaut" ;
+ Text [ swedish ] = "~Standardvärde" ;
+ Text [ danish ] = "Standardværdi" ;
+ Text[ chinese_simplified ] = "ĬÈÏÖµ(~D)";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Wartoœæ domyœlna";
+ Text[ japanese ] = "•W€’l(~D)";
+ Text[ chinese_traditional ] = "Àq»{­È(~D)";
+ Text[ arabic ] = "ÞíãÉ ÇÝÊÑÇÖíÉ";
+ Text[ greek ] = "ÐñïåðéëåãìÝíç ôéìÞ";
+ Text[ korean ] = "±âº»°ª(~D)";
+ Text[ turkish ] = "~Standart deðer";
+ };
+ Text[ russian ] = "Âûñîòà ñòðîê";
+ Text[ polish ] = "WysokoϾ wierszy";
+ Text[ japanese ] = "s‚Ì‚‚³";
+ Text[ chinese_traditional ] = "¦C°ª";
+ Text[ arabic ] = "ÇÑÊÝÇÚ ÇáÕÝ";
+ Text[ greek ] = "¾øïò ãñáììÞò";
+ Text[ korean ] = "¿­ ³ôÀÌ";
+ Text[ turkish ] = "Satýr yüksekliði";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog RID_SCDLG_ROW_OPT
+{
+ Text = "Optimale Zeilenhöhe" ;
+ Text [ ENGLISH ] = "Optimal row height" ;
+ Text [ norwegian ] = "Optimal høyde på rad " ;
+ Text [ italian ] = "Altezza riga ottimale" ;
+ Text [ portuguese_brazilian ] = "Altura ótima da fileira" ;
+ Text [ portuguese ] = "Optimizar altura da linha" ;
+ Text [ finnish ] = "Sopivin rivikorkeus" ;
+ Text [ danish ] = "Optimal rækkehøjde" ;
+ Text [ french ] = "Optimiser la hauteur" ;
+ Text [ swedish ] = "Optimal radhöjd" ;
+ Text [ dutch ] = "Optimale rijhoogte" ;
+ Text [ spanish ] = "Altura de fila óptima" ;
+ Text [ english_us ] = "Optimal Row Height" ;
+ Text[ chinese_simplified ] = "×î¼ÑÐиß";
+
+ HelpId = FID_ROW_OPT_HEIGHT ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 190 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 136 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 136 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 136 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_LABEL
+ {
+ Text = "Extra" ;
+ Text [ ENGLISH ] = "Extra" ;
+ Text [ norwegian ] = "Ekstra " ;
+ Text [ italian ] = "Extra" ;
+ Text [ portuguese_brazilian ] = "Extra" ;
+ Text [ portuguese ] = "Adicional" ;
+ Text [ finnish ] = "Muut" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "Marges" ;
+ Text [ swedish ] = "Extra" ;
+ Text [ dutch ] = "Extra" ;
+ Text [ spanish ] = "Adicional" ;
+ Text [ english_us ] = "Add" ;
+ Text[ chinese_simplified ] = "¸½¼Ó";
+
+ Pos = MAP_APPFONT ( 6 , 8 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "•t‰Á";
+ Text[ chinese_traditional ] = "ªþ¥[";
+ Text[ arabic ] = "ÅÖÇÝí";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "Ãß°¡";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField ED_VALUE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 6 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ TabStop = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ };
+ CheckBox BTN_DEFVAL
+ {
+ // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 24 ) ;
+ Size = MAP_APPFONT ( 58 , 10 ) ;
+ Text = "~Standardwert" ;
+ Text [ ENGLISH ] = "Defaul~t value" ;
+ Text [ norwegian ] = "Defaul~t value" ;
+ Text [ italian ] = "Valore standard" ;
+ Text [ portuguese_brazilian ] = "Defaul~t value" ;
+ Text [ portuguese ] = "~Valor padrão" ;
+ Text [ english_us ] = "~Default value" ;
+ Text [ dutch ] = "~Standaardwaarde" ;
+ Text [ spanish ] = "Valor ~predetermin." ;
+ Text [ french ] = "Valeur par ~défaut" ;
+ Text [ swedish ] = "~Standardvärde" ;
+ Text [ danish ] = "Standardværdi" ;
+ Text[ chinese_simplified ] = "ĬÈÏÖµ(~D)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Wartoœæ domyœlna";
+ Text[ japanese ] = "•W€’l(~D)";
+ Text[ chinese_traditional ] = "Àq»{­È(~D)";
+ Text[ arabic ] = "ÞíãÉ ÇÝÊÑÇÖíÉ";
+ Text[ greek ] = "ÐñïåðéëåãìÝíç ôéìÞ";
+ Text[ korean ] = "±âº»°ª(~D)";
+ Text[ turkish ] = "~Standart deðer";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ russian ] = "Îïòèìàëüíàÿ âûñîòà ñòðîê";
+ Text[ polish ] = "Optymalna wysokoϾ wierszy";
+ Text[ japanese ] = "Å“K‚Ès‚Ì‚‚³";
+ Text[ chinese_traditional ] = "³ÌÓì¦C°ª";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ ÇáÃãËá ááÕÝæÝ";
+ Text[ greek ] = "ÂÝëôéóôï ýøïò ãñáììÞò";
+ Text[ korean ] = "ÃÖÀûÀÇ ¿­ ³ôÀÌ";
+ Text[ turkish ] = "En uygun satýr yüksekliði";
+ Text[ language_user1 ] = " ";
+};
+
+
+ // RID_SCDLG_SELENTRY als Basis fuer RID_SCDLG_SELECTDB und RID_SCDLG_SHOW_TAB
+ // gibt es nicht mehr, weil die beiden jetzt unterschiedlich sind
+
+ModalDialog RID_SCDLG_SELECTDB
+{
+ HelpId = SID_SELECT_DB ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 168 , 100 ) ;
+ Text = "Auswahl" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Selecção" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Vælg" ;
+ Text [ french ] = "Que coller ?" ;
+ Text [ swedish ] = "Urval" ;
+ Text [ dutch ] = "Selectie" ;
+ Text [ spanish ] = "Selección" ;
+ Text [ english_us ] = "Select" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 112 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 112 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 112 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ ListBox LB_ENTRYLIST
+ {
+ // HelpID aus Zeiten, als noch abgeleitet wurde
+ HelpId = HID_SC_SELENTRY_LIST ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 19 ) ;
+ Size = MAP_APPFONT ( 100 , 75 ) ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText FT_LABEL
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ };
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+};
+
+ModalDialog RID_SCDLG_SHOW_TAB
+{
+ HelpId = FID_TABLE_SHOW ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 168 , 100 ) ;
+ Text = "Tabelle einblenden" ;
+ Text [ ENGLISH ] = "Show table" ;
+ Text [ norwegian ] = "Vis tabell" ;
+ Text [ italian ] = "Mostra tabella" ;
+ Text [ portuguese_brazilian ] = "Mostrar tabela" ;
+ Text [ portuguese ] = "Mostrar folha" ;
+ Text [ finnish ] = "Näytä taulukko" ;
+ Text [ danish ] = "Vis ark" ;
+ Text [ french ] = "Afficher la feuille" ;
+ Text [ swedish ] = "Visa tabell" ;
+ Text [ dutch ] = "Werkblad weergeven" ;
+ Text [ spanish ] = "Mostrar hoja de cálculo" ;
+ Text [ english_us ] = "Show Sheet" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 112 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 112 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 112 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MultiListBox LB_ENTRYLIST
+ {
+ SimpleMode = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 19 ) ;
+ Size = MAP_APPFONT ( 100 , 75 ) ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText FT_LABEL
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 90 , 10 ) ;
+ Text = "Ausgeblendete Tabellen" ;
+ Text [ ENGLISH ] = "Hidden tables" ;
+ Text [ norwegian ] = "Skjulte tabeller" ;
+ Text [ italian ] = "Tabelle nascoste" ;
+ Text [ portuguese_brazilian ] = "Ocultar tabelas" ;
+ Text [ portuguese ] = "Folhas ocultas" ;
+ Text [ finnish ] = "Piilotetut taulukot" ;
+ Text [ danish ] = "Skjulte tabeller" ;
+ Text [ french ] = "Feuilles masquées" ;
+ Text [ swedish ] = "Dolda tabeller" ;
+ Text [ dutch ] = "Verborgen werkbladen" ;
+ Text [ spanish ] = "Hojas ocultas" ;
+ Text [ english_us ] = "Hidden sheets" ;
+ Text[ chinese_simplified ] = "ÒþÈëµÄ¹¤×÷±í";
+ Text[ russian ] = "Ñïðÿòàííûå ëèñòû";
+ Text[ polish ] = "Ukryte arkusze";
+ Text[ japanese ] = "•\\Ž¦‚·‚é•\\";
+ Text[ chinese_traditional ] = "Áô¤Jªº¤u§@ªí";
+ Text[ arabic ] = "ÇáÌÏÇæá ÇáãÎÝíÉ";
+ Text[ greek ] = "Êñõöïß ðßíáêåò";
+ Text[ korean ] = "½ÃÆ® ¼û±â±â";
+ Text[ turkish ] = "Gizlenmiþ tablolar";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "ÏÔʾ¹¤×÷±í";
+ Text[ russian ] = "Ïîêàçàòü ëèñò";
+ Text[ polish ] = "Poka¿ arkusz";
+ Text[ japanese ] = "•\\‚Ì•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü¤u§@ªí";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÌÏæá";
+ Text[ greek ] = "ÅìöÜíéóç ðßíáêá";
+ Text[ korean ] = "½ÃÆ® º¸À̱â";
+ Text[ turkish ] = "Çalýþma sayfasýný göster";
+ Text[ language_user1 ] = " ";
+};
+
+
+ModalDialog RID_SCDLG_FILLSERIES
+{
+ OutputSize = TRUE ;
+ HelpId = FID_FILL_SERIES ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 290 , 107 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Reihe füllen : Reihe f³llen */
+ Text = "Reihe füllen" ;
+ Text [ ENGLISH ] = "Fill Series" ;
+ Text [ norwegian ] = "Fill Series" ;
+ Text [ italian ] = "Serie" ;
+ Text [ portuguese_brazilian ] = "Séries de Preenchimento" ;
+ Text [ portuguese ] = "Preencher séries" ;
+ Text [ finnish ] = "Täytä sarja" ;
+ Text [ danish ] = "Fyld serier" ;
+ Text [ french ] = "Remplir la série" ;
+ Text [ swedish ] = "Fyll serie" ;
+ Text [ dutch ] = "Reeksen invullen" ;
+ Text [ spanish ] = "Rellenar series" ;
+ Text [ english_us ] = "Fill Series" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ RadioButton BTN_DAY
+ {
+ Pos = MAP_APPFONT ( 159 , 14 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Tag" ;
+ Text [ ENGLISH ] = "~Day" ;
+ Text [ norwegian ] = "~Day" ;
+ Text [ italian ] = "~Giorno" ;
+ Text [ portuguese_brazilian ] = "~Dia" ;
+ Text [ portuguese ] = "~Dia" ;
+ Text [ finnish ] = "~Päivä" ;
+ Text [ danish ] = "Dag" ;
+ Text [ french ] = "~Jour" ;
+ Text [ swedish ] = "~Dag" ;
+ Text [ dutch ] = "~Dag" ;
+ Text [ spanish ] = "~Día" ;
+ Text [ english_us ] = "Da~y" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Ìì(~Y)";
+ Text[ russian ] = "Äåíü";
+ Text[ polish ] = "Dzieñ";
+ Text[ japanese ] = "“ú(~Y)";
+ Text[ chinese_traditional ] = "¤Ñ(~Y)";
+ Text[ arabic ] = "íæã";
+ Text[ greek ] = "ÇìÝñá";
+ Text[ korean ] = "ÀÏ(~Y)";
+ Text[ turkish ] = "~Gün";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DAY_OF_WEEK
+ {
+ Pos = MAP_APPFONT ( 159 , 27 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Wochentag" ;
+ Text [ ENGLISH ] = "Day of ~Week" ;
+ Text [ norwegian ] = "Day of ~Week" ;
+ Text [ italian ] = "Giorno feriale" ;
+ Text [ portuguese_brazilian ] = "Dia da ~Semana" ;
+ Text [ portuguese ] = "Dia da ~semana" ;
+ Text [ finnish ] = "V~iikonpäivä" ;
+ Text [ danish ] = "Ugedag" ;
+ Text [ french ] = "Jour ~de la semaine" ;
+ Text [ swedish ] = "Vec~kodag" ;
+ Text [ dutch ] = "~Dag van de week" ;
+ Text [ spanish ] = "Día de la s~emana" ;
+ Text [ english_us ] = "~Weekday" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¹¤×÷ÈÕ(~W)";
+ Text[ russian ] = "Äåíü íåäåëè";
+ Text[ polish ] = "Dzie~ñ tygodnia";
+ Text[ japanese ] = "—j“ú(~W)";
+ Text[ chinese_traditional ] = "¤u§@¤é(~W)";
+ Text[ arabic ] = "íæã ÃÓÈæÚ";
+ Text[ greek ] = "ÇìÝñá åâäïìÜäáò";
+ Text[ korean ] = "ÆòÀÏ(~W)";
+ Text[ turkish ] = "~Ýþ günü";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_MONTH
+ {
+ Pos = MAP_APPFONT ( 159 , 40 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Monat" ;
+ Text [ ENGLISH ] = "~Month" ;
+ Text [ norwegian ] = "~Month" ;
+ Text [ italian ] = "~Mese" ;
+ Text [ portuguese_brazilian ] = "~Mês" ;
+ Text [ portuguese ] = "~Mês" ;
+ Text [ finnish ] = "~Kuukausi" ;
+ Text [ danish ] = "Måned" ;
+ Text [ french ] = "~Mois" ;
+ Text [ swedish ] = "~Månad" ;
+ Text [ dutch ] = "~Maand" ;
+ Text [ spanish ] = "~Mes" ;
+ Text [ english_us ] = "~Month" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÔÂ(~M)";
+ Text[ russian ] = "Ìåñÿö";
+ Text[ polish ] = "Miesi¹c";
+ Text[ japanese ] = "ŒŽ(~M)";
+ Text[ chinese_traditional ] = "¤ë(~M)";
+ Text[ arabic ] = "";
+ Text[ greek ] = "ÌÞíáò";
+ Text[ korean ] = "¿ù(~M)";
+ Text[ turkish ] = "A~y";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_YEAR
+ {
+ Pos = MAP_APPFONT ( 159 , 53 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Jahr" ;
+ Text [ ENGLISH ] = "~Year" ;
+ Text [ norwegian ] = "~Year" ;
+ Text [ italian ] = "~Anno" ;
+ Text [ portuguese_brazilian ] = "~Ano" ;
+ Text [ portuguese ] = "~Ano" ;
+ Text [ finnish ] = "V~uosi" ;
+ Text [ danish ] = "År" ;
+ Text [ french ] = "~Année" ;
+ Text [ swedish ] = "~År" ;
+ Text [ dutch ] = "~Jaar" ;
+ Text [ spanish ] = "~Año" ;
+ Text [ english_us ] = "Y~ear" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Äê(~E)";
+ Text[ russian ] = "Ãîä";
+ Text[ polish ] = "Rok";
+ Text[ japanese ] = "”N(~E)";
+ Text[ chinese_traditional ] = "¦~(~E)";
+ Text[ arabic ] = "ÇáÓäÉ";
+ Text[ greek ] = "¸ôïò";
+ Text[ korean ] = "³â(~E)";
+ Text[ turkish ] = "Y~ýl";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_TIME_UNIT
+ {
+ Pos = MAP_APPFONT ( 153 , 3 ) ;
+ Size = MAP_APPFONT ( 75 , 65 ) ;
+ Text = "Zeiteinheit" ;
+ Text [ ENGLISH ] = "Date Unit" ;
+ Text [ norwegian ] = "Date Unit" ;
+ Text [ italian ] = "Unità di data" ;
+ Text [ portuguese_brazilian ] = "Unidade de Data" ;
+ Text [ portuguese ] = "Unidade de tempo" ;
+ Text [ finnish ] = "Aikayksikkö" ;
+ Text [ danish ] = "Tidsenhed" ;
+ Text [ french ] = "Unité de temps" ;
+ Text [ swedish ] = "Tidsenhet" ;
+ Text [ dutch ] = "Tijdeenheid" ;
+ Text [ spanish ] = "Unidad de tiempo" ;
+ Text [ english_us ] = "Time unit" ;
+ Text[ chinese_simplified ] = "ʱ¼äµ¥Î»";
+ Text[ russian ] = "Åäèíèöà âðåìåíè";
+ Text[ polish ] = "Jednostka czasu";
+ Text[ japanese ] = "ŽžŠÔ‚Ì’PˆÊ";
+ Text[ chinese_traditional ] = "®É¶¡³æ¦ì";
+ Text[ arabic ] = "æÍÏÉ ÇáæÞÊ";
+ Text[ greek ] = "ÌïíÜäá ÷ñüíïõ";
+ Text[ korean ] = "½Ã°£ ´ÜÀ§";
+ Text[ turkish ] = "Zaman birimi";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_RIGHT
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ Text = "~Rechts" ;
+ Text [ ENGLISH ] = "~Right" ;
+ Text [ norwegian ] = "~Right" ;
+ Text [ italian ] = "A ~destra" ;
+ Text [ portuguese_brazilian ] = "~Direita" ;
+ Text [ portuguese ] = "~Direita" ;
+ Text [ finnish ] = "~Oikealle" ;
+ Text [ danish ] = "Højre" ;
+ Text [ french ] = "~À droite" ;
+ Text [ swedish ] = "Hö~ger" ;
+ Text [ dutch ] = "~Rechts" ;
+ Text [ spanish ] = "Derec~ha" ;
+ Text [ english_us ] = "~Right" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÓÒ(~R)";
+ Text[ russian ] = "Ñïðàâà";
+ Text[ polish ] = "Z prawej";
+ Text[ japanese ] = "‰E‚Ö(~R)";
+ Text[ chinese_traditional ] = "¥k(~R)";
+ Text[ arabic ] = "íãíä";
+ Text[ greek ] = "ÄåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ(~R)";
+ Text[ turkish ] = "S~að";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_LEFT
+ {
+ Pos = MAP_APPFONT ( 12 , 53 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ Text = "~Links" ;
+ Text [ ENGLISH ] = "~Left" ;
+ Text [ norwegian ] = "~Left" ;
+ Text [ italian ] = "A ~sinistra" ;
+ Text [ portuguese_brazilian ] = "~Esquerda" ;
+ Text [ portuguese ] = "~Esquerda" ;
+ Text [ finnish ] = "~Vasemmalle" ;
+ Text [ danish ] = "Venstre" ;
+ Text [ french ] = "~À gauche" ;
+ Text [ swedish ] = "~Vänster" ;
+ Text [ dutch ] = "~Links" ;
+ Text [ spanish ] = "~Izquierda" ;
+ Text [ english_us ] = "~Left" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Ïò×ó(~L)";
+ Text[ russian ] = "Ñëåâà";
+ Text[ polish ] = "Z lewej";
+ Text[ japanese ] = "¶‚Ö(~L)";
+ Text[ chinese_traditional ] = "¥ª(~L)";
+ Text[ arabic ] = "íÓÇÑ";
+ Text[ greek ] = "ÁñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ(~L)";
+ Text[ turkish ] = "S~ol";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_TOP
+ {
+ Pos = MAP_APPFONT ( 12 , 40 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ Text = "~Oben" ;
+ Text [ ENGLISH ] = "~Up" ;
+ Text [ norwegian ] = "~Up" ;
+ Text [ italian ] = "In alto" ;
+ Text [ portuguese_brazilian ] = "~Para Cima" ;
+ Text [ portuguese ] = "~Superior" ;
+ Text [ finnish ] = "~Ylös" ;
+ Text [ danish ] = "Øverst" ;
+ Text [ french ] = "~En haut" ;
+ Text [ swedish ] = "~Uppåt" ;
+ Text [ dutch ] = "~Boven" ;
+ Text [ spanish ] = "A~rriba" ;
+ Text [ english_us ] = "~Top" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÉÏ(~T)";
+ Text[ russian ] = "Ñâåðõó";
+ Text[ polish ] = "W g~órze";
+ Text[ japanese ] = "ã‚Ö(~T)";
+ Text[ chinese_traditional ] = "¤W(~T)";
+ Text[ arabic ] = "ÃÚáì";
+ Text[ greek ] = "ÐÜíù";
+ Text[ korean ] = "À§·Î(~T)";
+ Text[ turkish ] = "~Yukarý";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_BOTTOM
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ Text = "~Unten" ;
+ Text [ ENGLISH ] = "D~own" ;
+ Text [ norwegian ] = "D~own" ;
+ Text [ italian ] = "In basso" ;
+ Text [ portuguese_brazilian ] = "Para B~aixo" ;
+ Text [ portuguese ] = "~Inferior" ;
+ Text [ finnish ] = "~Alas" ;
+ Text [ danish ] = "Nederst" ;
+ Text [ french ] = "En b~as" ;
+ Text [ swedish ] = "~Nedåt" ;
+ Text [ dutch ] = "~Onder" ;
+ Text [ spanish ] = "A~bajo" ;
+ Text [ english_us ] = "~Down" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÏÂ(~B)";
+ Text[ russian ] = "Ñíèçó";
+ Text[ polish ] = "W dole";
+ Text[ japanese ] = "‰º‚Ö(~B)";
+ Text[ chinese_traditional ] = "¤U(~B)";
+ Text[ arabic ] = "ÃÓÝá";
+ Text[ greek ] = "ÊÜôù";
+ Text[ korean ] = "¾Æ·¡·Î(~D)";
+ Text[ turkish ] = "~Aþaðý";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_DIRECTION
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 60 , 65 ) ;
+ Text = "Richtung" ;
+ Text [ ENGLISH ] = "Fill Direction" ;
+ Text [ norwegian ] = "Fill Direction" ;
+ Text [ italian ] = "Direzione" ;
+ Text [ portuguese_brazilian ] = "Direção do Preenchimento" ;
+ Text [ portuguese ] = "Direcção" ;
+ Text [ finnish ] = "Täyttösuunta" ;
+ Text [ danish ] = "Retning" ;
+ Text [ french ] = "Direction" ;
+ Text [ swedish ] = "Riktning" ;
+ Text [ dutch ] = "Richting" ;
+ Text [ spanish ] = "Dirección" ;
+ Text [ english_us ] = "Direction" ;
+ Text[ chinese_simplified ] = "·½Ïò";
+ Text[ russian ] = "Íàïðàâëåíèå";
+ Text[ polish ] = "Kierunek";
+ Text[ japanese ] = "•ûŒü";
+ Text[ chinese_traditional ] = "¤è¦V";
+ Text[ arabic ] = "ÇáÇÊÌÇå";
+ Text[ greek ] = "Êáôåýèõíóç";
+ Text[ korean ] = "¹æÇâ";
+ Text[ turkish ] = "Yön";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_ARITHMETIC
+ {
+ Pos = MAP_APPFONT ( 78 , 14 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Arithmetisch" ;
+ Text [ ENGLISH ] = "~Linear" ;
+ Text [ norwegian ] = "~Linear" ;
+ Text [ italian ] = "~Aritmetico" ;
+ Text [ portuguese_brazilian ] = "~Linear" ;
+ Text [ portuguese ] = "~Linear" ;
+ Text [ finnish ] = "~Lineaarinen" ;
+ Text [ danish ] = "Aritmetisk" ;
+ Text [ french ] = "~Arithmétique" ;
+ Text [ swedish ] = "Ar~itmetisk" ;
+ Text [ dutch ] = "~Rekenkundig" ;
+ Text [ spanish ] = "Aritmétic~o" ;
+ Text [ english_us ] = "Li~near" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏßÐÔ(~N)";
+ Text[ russian ] = "Àðèôìåòè÷åñêèé";
+ Text[ polish ] = "Arytmetyczny";
+ Text[ japanese ] = "‘«‚µŽZ(~L)";
+ Text[ chinese_traditional ] = "ª½½u(~L)";
+ Text[ arabic ] = "ÎØí";
+ Text[ greek ] = "~ÁñéèìçôéêÜ";
+ Text[ korean ] = "¼±Çü(~N)";
+ Text[ turkish ] = "~Aritmetik";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_GEOMETRIC
+ {
+ Pos = MAP_APPFONT ( 78 , 27 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Geometrisch" ;
+ Text [ ENGLISH ] = "~Growth" ;
+ Text [ norwegian ] = "~Growth" ;
+ Text [ italian ] = "~Esponenziale" ;
+ Text [ portuguese_brazilian ] = "~Crescimento" ;
+ Text [ portuguese ] = "~Exponencial" ;
+ Text [ finnish ] = "~Geometrinen" ;
+ Text [ danish ] = "Geometrisk" ;
+ Text [ french ] = "~Géométrique" ;
+ Text [ swedish ] = "Ge~ometrisk" ;
+ Text [ dutch ] = "~Meetkundig" ;
+ Text [ spanish ] = "~Geométrico" ;
+ Text [ english_us ] = "~Growth" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "µÈ±ÈÐòÁÐ(~G)";
+ Text[ russian ] = "Ãåîìåòðè÷åñêèé";
+ Text[ polish ] = "Geometryczny";
+ Text[ japanese ] = "Š|‚¯ŽZ(~G)";
+ Text[ chinese_traditional ] = "µ¥¤ñ§Ç¦C(~G)";
+ Text[ arabic ] = "åäÏÓí";
+ Text[ greek ] = "ÃåùìåôñéêÜ";
+ Text[ korean ] = "±Þ¼ö(~G)";
+ Text[ turkish ] = "~Geometrik";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DATE
+ {
+ Pos = MAP_APPFONT ( 78 , 40 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "~Datum" ;
+ Text [ ENGLISH ] = "Da~te" ;
+ Text [ norwegian ] = "Da~te" ;
+ Text [ italian ] = "~Data" ;
+ Text [ portuguese_brazilian ] = "Da~ta" ;
+ Text [ portuguese ] = "Da~ta" ;
+ Text [ finnish ] = "Päivä~määrä" ;
+ Text [ danish ] = "~Dato" ;
+ Text [ french ] = "~Date" ;
+ Text [ swedish ] = "Da~tum" ;
+ Text [ dutch ] = "~Datum" ;
+ Text [ spanish ] = "~Fecha" ;
+ Text [ english_us ] = "Da~te" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÈÕÆÚ(~D)";
+ Text[ russian ] = "Äàòà";
+ Text[ polish ] = "Data";
+ Text[ japanese ] = "“ú•t(~D)";
+ Text[ chinese_traditional ] = "¤é´Á(~D)";
+ Text[ arabic ] = "ÇáÊÇÑíÎ";
+ Text[ greek ] = "Çìåñïìçíßá";
+ Text[ korean ] = "ÀÏÀÚ(~T)";
+ Text[ turkish ] = "~Tarih";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_AUTOFILL
+ {
+ Pos = MAP_APPFONT ( 78 , 53 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Auto-Aus~füllen : Auto-Aus~f³llen */
+ Text = "Auto-Aus~füllen" ;
+ Text [ ENGLISH ] = "~Autofill" ;
+ Text [ norwegian ] = "~Autofill" ;
+ Text [ italian ] = "Compilazione ~autom." ;
+ Text [ portuguese_brazilian ] = "~PreenchimentoAutomático" ;
+ Text [ portuguese ] = "AutoPreenchimento" ;
+ Text [ finnish ] = "Au~tomaattitäyttö" ;
+ Text [ danish ] = "AutoFyld" ;
+ Text [ french ] = "~Rempl. automatique" ;
+ Text [ swedish ] = "Auto~Fyll" ;
+ Text [ dutch ] = "~Automatisch invullen" ;
+ Text [ spanish ] = "~Relleno automático" ;
+ Text [ english_us ] = "~AutoFill" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "×Ô¶¯³äÌî(~A)";
+ Text[ russian ] = "Àâòîçàïîëíåíèå";
+ Text[ polish ] = "Autowype³nianie";
+ Text[ japanese ] = "Ž©“®“ü—Í(~A)";
+ Text[ chinese_traditional ] = "¦Û°Ê¶ñ¥R(~A)";
+ Text[ arabic ] = "ÊÚÈÆÉ ÊáÞÇÆíÉ";
+ Text[ greek ] = "ÁõôïÃÝìéóìá";
+ Text[ korean ] = "ÀÚµ¿ ä¿ì±â(~A)";
+ Text[ turkish ] = "Otomatik~Doldur";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_TYPE
+ {
+ Pos = MAP_APPFONT ( 72 , 3 ) ;
+ Size = MAP_APPFONT ( 75 , 65 ) ;
+ Text = "Reihentyp" ;
+ Text [ ENGLISH ] = "Type" ;
+ Text [ norwegian ] = "Type" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "Tipo" ;
+ Text [ portuguese ] = "Tipos" ;
+ Text [ finnish ] = "Laji" ;
+ Text [ danish ] = "Serietype" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "Serietyp" ;
+ Text [ dutch ] = "Reekstype" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ english_us ] = "Series type" ;
+ Text[ chinese_simplified ] = "ϵÁÐÀàÐÍ";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ serii";
+ Text[ japanese ] = "˜A‘±ÃÞ°À‚ÌŽí—Þ";
+ Text[ chinese_traditional ] = "±Æ¦CÃþ«¬";
+ Text[ arabic ] = "äæÚ ÇáÕÝæÝ";
+ Text[ greek ] = "Ôýðïò óåéñÜò";
+ Text[ korean ] = "Çü½Ä";
+ Text[ turkish ] = "Sýra türü";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_START_VALUE
+ {
+ Pos = MAP_APPFONT ( 6 , 75 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ Text = "~Startwert" ;
+ Text [ english ] = "~Min. value" ;
+ Text [ english_us ] = "~Start value" ;
+ Text [ FRENCH ] = "Valeur ~initiale" ;
+ Text [ portuguese_brazilian ] = "~Startwert" ;
+ Text [ swedish ] = "~Startvärde" ;
+ Text [ danish ] = "Startværdi" ;
+ Text [ italian ] = "~Valore iniziale" ;
+ Text [ spanish ] = "Valor ~inicial" ;
+ Text [ dutch ] = "~Startwaarde" ;
+ Text [ portuguese ] = "~Valor inicial" ;
+ Text[ chinese_simplified ] = "Æðʼֵ(~S)";
+ Text[ russian ] = "Íà÷àëüíîå çíà÷åíèå";
+ Text[ polish ] = "Wartoœæ pocz¹tk.";
+ Text[ japanese ] = "ŠJŽn’l(~S)";
+ Text[ chinese_traditional ] = "°_©l­È(~S)";
+ Text[ arabic ] = "ÞíãÉ ÇáÈÏÁ";
+ Text[ greek ] = "Áñ÷éêÞ ôéìÞ";
+ Text[ korean ] = "½ÃÀÛ°ª(~S)";
+ Text[ turkish ] = "~Baþlangýç deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_START_VALUES
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 74 ) ;
+ Size = MAP_APPFONT ( 58 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_END_VALUE
+ {
+ Pos = MAP_APPFONT ( 121 , 75 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ Text = "~Endwert" ;
+ Text [ ENGLISH ] = "Max. Value" ;
+ Text [ NORWEGIAN ] = "Max. Value" ;
+ Text [ DANISH ] = "Slutværdi" ;
+ Text [ ENGLISH_US ] = "End ~value" ;
+ Text [ SPANISH ] = "Valor ~final" ;
+ Text [ FINNISH ] = "~Suurin arvo" ;
+ Text [ FRENCH ] = "Valeur ~finale" ;
+ Text [ ITALIAN ] = "Valore limite" ;
+ Text [ DUTCH ] = "~Eindwaarde" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Valor max." ;
+ Text [ SWEDISH ] = "Ma~xvärde" ;
+ Text [ PORTUGUESE ] = "Valor ~final" ;
+ Text[ chinese_simplified ] = "ÖÕÖ¹Öµ(~V)";
+ Text[ russian ] = "Êîíå÷íîå çíà÷åíèå";
+ Text[ polish ] = "Wartoœæ koñcowa";
+ Text[ japanese ] = "ÅI’l(~V)";
+ Text[ chinese_traditional ] = "²×¤î­È(~V)";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáäåÇÆíÉ";
+ Text[ greek ] = "ÔåëéêÞ ôéìÞ";
+ Text[ korean ] = "Á¾·á °ª(~V)";
+ Text[ turkish ] = "~Bitiþ deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_END_VALUES
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 170 , 74 ) ;
+ Size = MAP_APPFONT ( 58 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_INCREMENT
+ {
+ Pos = MAP_APPFONT ( 6 , 90 ) ;
+ Size = MAP_APPFONT ( 45 , 10 ) ;
+ Text = "~Inkrement" ;
+ Text [ ENGLISH ] = "In~crement" ;
+ Text [ NORWEGIAN ] = "In~crement" ;
+ Text [ DANISH ] = "Inkrement" ;
+ Text [ ENGLISH_US ] = "In~crement" ;
+ Text [ SPANISH ] = "I~ncremento" ;
+ Text [ FINNISH ] = "Ask~elarvo" ;
+ Text [ FRENCH ] = "In~crément" ;
+ Text [ ITALIAN ] = "In~cremento" ;
+ Text [ DUTCH ] = "~Stap" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "In~cremento" ;
+ Text [ SWEDISH ] = "Steg" ;
+ Text [ PORTUGUESE ] = "In~cremento" ;
+ Text[ chinese_simplified ] = "ÔöÁ¿(~C)";
+ Text[ russian ] = "Èíêðåìåíò";
+ Text[ polish ] = "Inkrement";
+ Text[ japanese ] = "‘•ª’l(~C)";
+ Text[ chinese_traditional ] = "»¼¼W(~C)";
+ Text[ arabic ] = "ÇáÊÒÇíÏ";
+ Text[ greek ] = "ÂÞìá";
+ Text[ korean ] = "Áõ°¡(~C)";
+ Text[ turkish ] = "~Artan";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_INCREMENT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 55 , 89 ) ;
+ Size = MAP_APPFONT ( 31 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ String STR_VALERR
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültiger Wert : Ung³ltiger Wert */
+ Text = "Ungültiger Wert" ;
+ Text [ ENGLISH ] = "Invalid value" ;
+ Text [ norwegian ] = "Invalid value" ;
+ Text [ italian ] = "Numero non valido" ;
+ Text [ portuguese_brazilian ] = "Valor inválido" ;
+ Text [ portuguese ] = "Valor incorrecto" ;
+ Text [ finnish ] = "Virheellinen arvo" ;
+ Text [ danish ] = "Ugyldig værdi" ;
+ Text [ french ] = "Valeur incorrecte" ;
+ Text [ swedish ] = "Ogiltigt värde" ;
+ Text [ dutch ] = "Ongeldige waarde" ;
+ Text [ spanish ] = "Valor no válido" ;
+ Text [ english_us ] = "Invalid value" ;
+ Text[ chinese_simplified ] = "ÎÞЧֵ";
+ Text[ russian ] = "Íåäîïóñòèìîå çíà÷åíèå";
+ Text[ polish ] = "Nieprawid³owa wartoœæ";
+ Text[ japanese ] = "–³Œø‚È”’l";
+ Text[ chinese_traditional ] = "µL®Ä­È";
+ Text[ arabic ] = "ÞíãÉ ÛíÑ ÕÇáÍÉ";
+ Text[ greek ] = "Ìç Ýãêõñç ôéìÞ";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº °ª";
+ Text[ turkish ] = "Geçersiz deðer";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 234 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 234 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 234 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Text[ chinese_simplified ] = "³äÌîϵÁÐ";
+ Text[ russian ] = "Çàïîëíèòü ðÿäû";
+ Text[ polish ] = "Wype³nij serie";
+ Text[ japanese ] = "˜A‘±ÃÞ°À‚Ìì¬";
+ Text[ chinese_traditional ] = "¶¶§Ç";
+ Text[ arabic ] = "ÊÚÈÆÉ ÇáÓáÓáÉ";
+ Text[ greek ] = "ÓõìðëÞñùóç óåéñÜò";
+ Text[ korean ] = "¿¬¼ÓÀ¸·Î ä¿ì±â";
+ Text[ turkish ] = "Sýrayý doldur";
+ Text[ language_user1 ] = " ";
+};
+
+#define TXT_COLS \
+ Text = "~Spalten" ; \
+ Text [ ENGLISH ] = "~Columns" ; \
+ Text [ norwegian ] = "~Columns" ; \
+ Text [ italian ] = "~Colonne" ; \
+ Text [ portuguese_brazilian ] = "~Colunas" ; \
+ Text [ portuguese ] = "~Colunas" ; \
+ Text [ finnish ] = "~Sarakkeet" ; \
+ Text [ danish ] = "Kolonner" ; \
+ Text [ french ] = "C~olonnes" ; \
+ Text [ swedish ] = "~Kolumner" ; \
+ Text [ dutch ] = "~Kolommen" ; \
+ Text [ spanish ] = "~Columnas" ; \
+ Text [ english_us ] = "~Columns" ; \
+ Text[ chinese_simplified ] = "ÁÐ(~C)"; \
+ Text[ russian ] = "Ñòîëáöû"; \
+ Text[ polish ] = "Kolumn" ;\
+ Text[ japanese ] = "—ñ(~C)"; \
+ Text[ chinese_traditional ] = "Äæ(~C)"; \
+ Text[ arabic ] = "ÇáÃÚãÏÉ"; \
+ Text[ greek ] = "~ÓôÞëåò"; \
+ Text[ korean ] = "¿­(~C)"; \
+ Text[ turkish ] = "~Sütun"; \
+ Text[ language_user1 ] = " ";
+
+
+#define TXT_ROWS \
+ Text = "Z~eilen" ; \
+ Text [ ENGLISH ] = "~Rows" ; \
+ Text [ norwegian ] = "~Rows" ; \
+ Text [ italian ] = "~Righe" ; \
+ Text [ portuguese_brazilian ] = "Filei~ras" ; \
+ Text [ portuguese ] = "~Linhas" ; \
+ Text [ finnish ] = "~Rivit" ; \
+ Text [ danish ] = "Rækker" ; \
+ Text [ french ] = "~Lignes" ; \
+ Text [ swedish ] = "Rad~er" ; \
+ Text [ dutch ] = "~Rijen" ; \
+ Text [ spanish ] = "~Filas" ; \
+ Text [ english_us ] = "~Rows" ; \
+ Text[ chinese_simplified ] = "ÐÐ(~R)"; \
+ Text[ russian ] = "Ñòðîêè" ;\
+ Text[ polish ] = "Wierszy" ;\
+ Text[ japanese ] = "s(~R)"; \
+ Text[ chinese_traditional ] = "¦C(~R)"; \
+ Text[ arabic ] = "ÇáÕÝæÝ"; \
+ Text[ greek ] = "~ÃñáììÝò"; \
+ Text[ korean ] = "Çà(~R)"; \
+ Text[ turkish ] = "S~atýr"; \
+ Text[ language_user1 ] = " ";
+
+
+ModalDialog RID_SCDLG_GROUP
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 148 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 92 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 92 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 92 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ RadioButton BTN_GROUP_ROWS
+ {
+ // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen
+ HelpId = HID_SC_GROUP_ROWS ;
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ TXT_ROWS
+ TabStop = TRUE ;
+ };
+ RadioButton BTN_GROUP_COLS
+ {
+ // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen
+ HelpId = HID_SC_GROUP_COLS ;
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ TXT_COLS
+ TabStop = TRUE ;
+ };
+ GroupBox GB_FRAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 80 , 40 ) ;
+ Text = "Aktivieren für" ;
+ };
+ String STR_GROUP
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Aktivieren für : Aktivieren f³r */
+ Text = "Aktivieren für" ;
+ Text [ ENGLISH ] = "Activate on" ;
+ Text [ norwegian ] = "Activate on" ;
+ Text [ italian ] = "Attiva per" ;
+ Text [ portuguese_brazilian ] = "Ativar em" ;
+ Text [ portuguese ] = "Activar para" ;
+ Text [ finnish ] = "Aktiivinen:" ;
+ Text [ danish ] = "Aktiver for" ;
+ Text [ french ] = "Activer pour" ;
+ Text [ swedish ] = "Aktivera för" ;
+ Text [ dutch ] = "Inschakelen voor" ;
+ Text [ spanish ] = "Activar para" ;
+ Text [ english_us ] = "Include" ;
+ Text[ chinese_simplified ] = "°üÀ¨";
+ Text[ russian ] = "Âêëþ÷àòü";
+ Text[ polish ] = "Uaktywnij dla";
+ Text[ japanese ] = "±¸Ã¨ÌÞ‚É‚·‚é‘ÎÛ";
+ Text[ chinese_traditional ] = "¥]¬A";
+ Text[ arabic ] = "ÊäÔíØ ãä ÃÌá";
+ Text[ greek ] = "Åíåñãïðïßçóç ãéá";
+ Text[ korean ] = "Æ÷ÇÔ";
+ Text[ turkish ] = "Þunun için etkinleþtir:";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_UNGROUP
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Aufheben für : Aufheben f³r */
+ Text = "Aufheben für" ;
+ Text [ ENGLISH ] = "Deactivate on" ;
+ Text [ norwegian ] = "Deactivate on" ;
+ Text [ italian ] = "Disattiva per" ;
+ Text [ portuguese_brazilian ] = "Desativar em" ;
+ Text [ portuguese ] = "Desactivar para" ;
+ Text [ finnish ] = "Passiivinen:" ;
+ Text [ danish ] = "Ophæv for" ;
+ Text [ french ] = "Désactiver pour" ;
+ Text [ swedish ] = "Upphäv för" ;
+ Text [ dutch ] = "Uitschakelen voor" ;
+ Text [ spanish ] = "Desactivar para" ;
+ Text [ english_us ] = "Deactivate for" ;
+ Text[ chinese_simplified ] = "È¡Ïû·Ö×é";
+ Text[ russian ] = "Ñíÿòü äëÿ";
+ Text[ polish ] = "Dezaktywuj dla";
+ Text[ japanese ] = "”ñ±¸Ã¨ÌÞ‚É‚·‚é‘ÎÛ";
+ Text[ chinese_traditional ] = "¨ú®ø¸s²Õ";
+ Text[ arabic ] = "ÅáÛÇÁ ÇáÊäÔíØ ãä ÃÌá";
+ Text[ greek ] = "Áðåíåñãïðïßçóç ãéá";
+ Text[ korean ] = "¿¡´ëÇؼ­ ÁßÁö";
+ Text[ turkish ] = "Þunun için etkinliðini kaldýr:";
+ Text[ language_user1 ] = " ";
+ };
+ Text = "Gruppierung" ;
+ Text [ ENGLISH ] = "Group" ;
+ Text [ norwegian ] = "Gruppe" ;
+ Text [ italian ] = "Raggruppa" ;
+ Text [ portuguese_brazilian ] = "Grupo" ;
+ Text [ portuguese ] = "Grupo" ;
+ Text [ finnish ] = "Ryhmä" ;
+ Text [ danish ] = "Gruppering" ;
+ Text [ french ] = "Grouper" ;
+ Text [ swedish ] = "Gruppering" ;
+ Text [ dutch ] = "Groep" ;
+ Text [ spanish ] = "Agrupar" ;
+ Text [ english_us ] = "Group" ;
+ Text[ chinese_simplified ] = "·Ö×é";
+ Text[ russian ] = "Ãðóïïèðîâàòü";
+ Text[ polish ] = "Grupowanie";
+ Text[ japanese ] = "¸ÞÙ°Ìß•ª‚¯";
+ Text[ chinese_traditional ] = "¸s²Õ";
+ Text[ arabic ] = "ÊÌãíÚ";
+ Text[ greek ] = "Ïìáäïðïßçóç";
+ Text[ korean ] = "±×·ì¸¸µé±â";
+ Text[ turkish ] = "Grup";
+ Text[ language_user1 ] = " ";
+};
+
+ // Ableitungen
+ModalDialog RID_SCDLG_GRP_MAKE < RID_SCDLG_GROUP { HelpId = SID_OUTLINE_MAKE ; };
+ModalDialog RID_SCDLG_GRP_KILL < RID_SCDLG_GROUP { HelpId = SID_OUTLINE_REMOVE ; };
+
+ // RID_SCDLG_COLORROW wird nur in der Optionen-Sortierlisten-Seite benutzt
+
+ModalDialog RID_SCDLG_COLORROW
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 148 , 63 ) ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 92 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 92 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 92 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ RadioButton BTN_GROUP_ROWS
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ TXT_ROWS
+ TabStop = TRUE ;
+ };
+ RadioButton BTN_GROUP_COLS
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ TXT_COLS
+ TabStop = TRUE ;
+ };
+ GroupBox GB_FRAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 80 , 40 ) ;
+ };
+};
+
+ModalDialog RID_SCDLG_NAMES_CREATE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ HelpID = FID_USE_NAME ;
+ Size = MAP_APPFONT ( 174 , 71 ) ;
+ Moveable = TRUE ;
+ CheckBox BTN_TOP
+ {
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 93 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~Kopfzeile" ;
+ Text [ ENGLISH ] = "First row" ;
+ Text [ dutch ] = "~Koptekst" ;
+ Text [ english_us ] = "H~eader" ;
+ Text [ italian ] = "Riga d'intestazione" ;
+ Text [ spanish ] = "~Encabezamiento" ;
+ Text [ french ] = "~En-tête" ;
+ Text [ swedish ] = "Si~dhuvud" ;
+ Text [ danish ] = "Øverste række" ;
+ Text [ portuguese_brazilian ] = "~Kopfzeile" ;
+ Text [ portuguese ] = "~Cabeçalho" ;
+ Text[ chinese_simplified ] = "ҳü(~H)";
+ Text[ russian ] = "Âåðõíèé êîëîíòèòóë";
+ Text[ polish ] = "~nag³ówka";
+ Text[ japanese ] = "擪s(~H)";
+ Text[ chinese_traditional ] = "­¶­º(~H)";
+ Text[ arabic ] = "ÑÃÓ ÇáÕÝÍÉ";
+ Text[ greek ] = "Êåöáëßäá";
+ Text[ korean ] = "¸Ó¸®±Û(~E)";
+ Text[ turkish ] = "~Üstbilgi";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_LEFT
+ {
+ Pos = MAP_APPFONT ( 12 , 25 ) ;
+ Size = MAP_APPFONT ( 93 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~Linker Spalte" ;
+ Text [ ENGLISH ] = "First column" ;
+ Text [ dutch ] = "~Linkerkolom" ;
+ Text [ english_us ] = "~Left column" ;
+ Text [ italian ] = "Colonna sinistra" ;
+ Text [ spanish ] = "Columna ~izquierda" ;
+ Text [ french ] = "Colonne ~gauche" ;
+ Text [ swedish ] = "Vänstra ko~lumnen" ;
+ Text [ danish ] = "Venstre kolonne" ;
+ Text [ portuguese_brazilian ] = "~Linker Spalte" ;
+ Text [ portuguese ] = "Coluna ~esquerda" ;
+ Text[ chinese_simplified ] = "×óÁÐ(~L)";
+ Text[ russian ] = "Ëåâûé ñòîëáåö";
+ Text[ polish ] = "l~ewej kolumny";
+ Text[ japanese ] = "¶’[—ñ(~L)";
+ Text[ chinese_traditional ] = "¥ªÄæ(~L)";
+ Text[ arabic ] = "ÇáÚãæÏ ÇáÃíÓÑ";
+ Text[ greek ] = "ÁñéóôåñÞò óôÞëçò";
+ Text[ korean ] = "¿ÞÂÊ ¿­(~L)";
+ Text[ turkish ] = "~Sol sütun";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_BOTTOM
+ {
+ Pos = MAP_APPFONT ( 12 , 38 ) ;
+ Size = MAP_APPFONT ( 93 , 10 ) ;
+ TabStop = TRUE ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Fußzeile : ~Fu˜zeile */
+ Text = "~Fußzeile" ;
+ Text [ ENGLISH ] = "Last row" ;
+ Text [ dutch ] = "~Voettekst" ;
+ Text [ english_us ] = "~Footer" ;
+ Text [ italian ] = "Piè di pagina" ;
+ Text [ spanish ] = "~Pie de página" ;
+ Text [ french ] = "~Pied de page" ;
+ Text [ swedish ] = "Sid~fot" ;
+ Text [ danish ] = "Nederste række" ;
+ Text [ portuguese ] = "~Rodapé" ;
+ Text [ portuguese_brazilian ] = "~Fußzeile" ;
+ Text[ chinese_simplified ] = "Ò³½Å(~F)";
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë";
+ Text[ polish ] = "~stopki";
+ Text[ japanese ] = "––s(~F)";
+ Text[ chinese_traditional ] = "­¶§À(~F)";
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ";
+ Text[ greek ] = "ÕðïóÝëéäï";
+ Text[ korean ] = "¹Ù´Ú±Û(~F)";
+ Text[ turkish ] = "~Altbilgi";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_RIGHT
+ {
+ Pos = MAP_APPFONT ( 12 , 51 ) ;
+ Size = MAP_APPFONT ( 93 , 10 ) ;
+ TabStop = TRUE ;
+ Text = "~Rechter Spalte" ;
+ Text [ ENGLISH ] = "Last column" ;
+ Text [ english_us ] = "~Right column" ;
+ Text [ italian ] = "Colonna destra" ;
+ Text [ spanish ] = "Columna ~derecha" ;
+ Text [ french ] = "Colonne ~droite" ;
+ Text [ dutch ] = "~Rechterkolom" ;
+ Text [ swedish ] = "Hög~ra kolumnen" ;
+ Text [ danish ] = "Højre kolonne" ;
+ Text [ portuguese_brazilian ] = "~Rechter Spalte" ;
+ Text [ portuguese ] = "Coluna ~direita" ;
+ Text[ chinese_simplified ] = "ÓÒÁÐ(~R)";
+ Text[ russian ] = "Ïðàâûé ñòîëáåö";
+ Text[ polish ] = "prawej ~kolumny";
+ Text[ japanese ] = "‰E’[—ñ(~R)";
+ Text[ chinese_traditional ] = "¥kÄæ(~R)";
+ Text[ arabic ] = "ÇáÚãæÏ ÇáÃíãä";
+ Text[ greek ] = "Ðåñéï÷Þò äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ ¿­(~R)";
+ Text[ turkish ] = "~Sað sütun";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 116 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 116 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 116 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_FRAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 104 , 62 ) ;
+ Text = "Namen erzeugen aus" ;
+ Text [ ENGLISH ] = "Create names from" ;
+ Text [ english_us ] = "Create name from" ;
+ Text [ italian ] = "Generare i nomi da" ;
+ Text [ spanish ] = "Nombre a partir de " ;
+ Text [ french ] = "Créer un nom à partir de" ;
+ Text [ dutch ] = "Namen definiëren uit" ;
+ Text [ swedish ] = "Skapa namn från" ;
+ Text [ danish ] = "Opret navn af" ;
+ Text [ portuguese_brazilian ] = "Namen erzeugen aus" ;
+ Text [ portuguese ] = "Criar nomes a partir de" ;
+ Text[ chinese_simplified ] = "´´½¨Ãû³ÆÌ×ÓÃ";
+ Text[ russian ] = "Ñîçäàòü èìÿ èç";
+ Text[ polish ] = "Utwórz nazwê z";
+ Text[ japanese ] = "–¼‘O‚Ì쬌³";
+ Text[ chinese_traditional ] = "«Ø¥ß¦WºÙ«ö·Ó";
+ Text[ arabic ] = "ÅäÔÇÁ ÃÓãÇÁ ãä";
+ Text[ greek ] = "Äçìéïõñãßá ïíüìáôïò áðü";
+ Text[ korean ] = "·ÎºÎÅÍ À̸§ ¸¸µé±â";
+ Text[ turkish ] = "Ad için kaynak";
+ Text[ language_user1 ] = " ";
+ };
+ Text = "Namen erzeugen" ;
+ Text [ ENGLISH ] = "Create Names" ;
+ Text [ dutch ] = "Naam definiëren" ;
+ Text [ english_us ] = "Create Names" ;
+ Text [ italian ] = "Creare nomi" ;
+ Text [ spanish ] = "Crear nombre" ;
+ Text [ french ] = "Créer un nom" ;
+ Text [ swedish ] = "Skapa namn" ;
+ Text [ danish ] = "Opret navn" ;
+ Text [ portuguese_brazilian ] = "Namen erzeugen" ;
+ Text [ portuguese ] = "Criar nomes" ;
+ Text[ chinese_simplified ] = "´´½¨Ãû³Æ";
+ Text[ russian ] = "Ñîçäàòü èìåíà";
+ Text[ polish ] = "Utwórz nazwy";
+ Text[ japanese ] = "–¼‘O‚Ìì¬";
+ Text[ chinese_traditional ] = "·s«Ø¦WºÙ";
+ Text[ arabic ] = "ÅäÔÇÁ ÃÓãÇÁ";
+ Text[ greek ] = "Äçìéïõñãßá ïíüìáôïò";
+ Text[ korean ] = "À̸§ ¸¸µé±â";
+ Text[ turkish ] = "Ad oluþtur";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog RID_SCDLG_NAMES_PASTE
+{
+ OutputSize = TRUE ;
+ HelpId = FID_INSERT_NAME ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 228 , 85 ) ;
+ Moveable = TRUE ;
+ FixedText FT_LABEL
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 156 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Namen einfügen : Namen einf³gen */
+ Text = "Namen einfügen" ;
+ Text [ ENGLISH ] = "Paste name" ;
+ Text [ dutch ] = "Naam invoegen" ;
+ Text [ english_us ] = "Paste name" ;
+ Text [ italian ] = "Inserisci nomi" ;
+ Text [ spanish ] = "Insertar nombre" ;
+ Text [ french ] = "Insérer un nom" ;
+ Text [ swedish ] = "Infoga namn" ;
+ Text [ danish ] = "Indsæt navn" ;
+ Text [ portuguese ] = "Inserir nomes" ;
+ Text [ portuguese_brazilian ] = "Namen einfügen" ;
+ Text[ chinese_simplified ] = "²åÈëÃû³Æ";
+ Text[ russian ] = "Âñòàâèòü èìÿ";
+ Text[ polish ] = "Wklej nazwê";
+ Text[ japanese ] = "–¼‘O‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¦WºÙ";
+ Text[ arabic ] = "áÕÞ ÃÓãÇÁ";
+ Text[ greek ] = "Åðéêüëëçóç ïíüìáôïò";
+ Text[ korean ] = "À̸§ ºÙ¿©³Ö±â";
+ Text[ turkish ] = "Ad yapýþtýr";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_ENTRYLIST
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 14 ) ;
+ Size = MAP_APPFONT ( 160 , 65 ) ;
+ TabStop = TRUE ;
+ VScroll = TRUE ;
+ Sort = TRUE ;
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 172 , 4 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 172 , 21 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 172 , 41 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton BTN_ADD
+ {
+ Pos = MAP_APPFONT ( 172 , 66 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Text = "~Liste" ;
+ Text [ ENGLISH ] = "List" ;
+ Text [ english_us ] = "Paste ~List" ;
+ Text [ italian ] = "~Lista" ;
+ Text [ spanish ] = "~Lista" ;
+ Text [ french ] = "~Liste" ;
+ Text [ dutch ] = "~Lijst" ;
+ Text [ swedish ] = "~Lista" ;
+ Text [ danish ] = "Liste" ;
+ Text [ portuguese_brazilian ] = "~Liste" ;
+ Text [ portuguese ] = "~Lista" ;
+ Text[ chinese_simplified ] = "Áе¥(~P)";
+ Text[ russian ] = "Ñïèñîê";
+ Text[ polish ] = "Lista";
+ Text[ japanese ] = "ˆê——•\\(~P)";
+ Text[ chinese_traditional ] = "²M³æ(~P)";
+ Text[ arabic ] = "ÇáÞÇÆãÉ";
+ Text[ greek ] = "Ëßóôá";
+ Text[ korean ] = "Ç׸ñ ºÙ¿© ³Ö±â(~L)";
+ Text[ turkish ] = "~Liste";
+ Text[ language_user1 ] = " ";
+ };
+ /* ### ACHTUNG: Neuer Text in Resource? Namen einfügen : Namen einf³gen */
+ Text = "Namen einfügen" ;
+ Text [ ENGLISH ] = "Paste Name" ;
+ Text [ english_us ] = "Paste Name" ;
+ Text [ italian ] = "Inserisci nomi" ;
+ Text [ spanish ] = "Insertar nombre" ;
+ Text [ french ] = "Insérer un nom" ;
+ Text [ dutch ] = "Naam invoegen" ;
+ Text [ swedish ] = "Infoga namn" ;
+ Text [ danish ] = "Indsæt navn" ;
+ Text [ portuguese_brazilian ] = "Namen einfügen" ;
+ Text [ portuguese ] = "Inserir nomes" ;
+ Text[ chinese_simplified ] = "²åÈëÃû³Æ";
+ Text[ russian ] = "Âñòàâèòü èìÿ";
+ Text[ polish ] = "Wklej nazwê";
+ Text[ japanese ] = "–¼‘O‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¦WºÙ";
+ Text[ arabic ] = "áÕÞ ÃÓãÇÁ";
+ Text[ greek ] = "Åðéêüëëçóç ïíüìáôïò";
+ Text[ korean ] = "À̸§ ºÙ¿©³Ö±â";
+ Text[ turkish ] = "Ad yapýþtýr";
+ Text[ language_user1 ] = " ";
+};
+
+FloatingWindow RID_SCDLG_TEAM
+{
+ Hide = TRUE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ FixedBitmap 1 { Pos = MAP_APPFONT ( 1 , 1 ) ; };
+ Text = "Das StarCalc Team" ;
+ Text [ ENGLISH ] = "The StarCalc Team" ;
+ Text [ ENGLISH_US ] = "The StarOffice Calc Team" ;
+ Text [ italian ] = "Entwickleri di StarOffice Calci (sansi QS)" ;
+ Text [ spanish ] = "El equipo de StarOffice Calc" ;
+ Text [ french ] = "L'équipe de StarOffice Calc" ;
+ Text [ dutch ] = "Het StarOffice Calc Team" ;
+ Text [ swedish ] = "StarOffice Calc-teamet" ;
+ Text [ danish ] = "StarOffice Calc-teamet" ;
+ Text [ portuguese ] = "A equipa do StarOffice Calc" ;
+ Text [ portuguese_brazilian ] = "Das StarOffice Calc Team" ;
+ Text[ chinese_simplified ] = "StarOffice Calc ¹¤×÷×é";
+ Text[ russian ] = "Êîëëåêòèâ StarOffice Calc";
+ Text[ polish ] = "Zespó³ StarOffice Calc";
+ Text[ japanese ] = "StarOffice CalcÁ°Ñ";
+ Text[ chinese_traditional ] = "StarOffice Calc ¤p²Õ";
+ Text[ arabic ] = "ÝÑíÞ StarOffice Calc";
+ Text[ greek ] = "Ç ïìÜäá ôïõ StarOffice Calc.";
+ Text[ korean ] = "StarOffice Calc ÆÀ";
+ Text[ turkish ] = "StarCalc Ekibi";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog RID_SCDLG_CHARTCOLROW
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 191 , 63 ) ;
+ Moveable = TRUE ;
+ CheckBox 1
+ {
+ Pos = MAP_APPFONT ( 12 , 27 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ Text = "Erste ~Spalte als Beschriftung" ;
+ Text [ ENGLISH ] = "First ~column as label" ;
+ Text [ ENGLISH_US ] = "First ~column as label" ;
+ Text [ dutch ] = "Ee~rste kolom als kop" ;
+ Text [ italian ] = "Prima colonna come dicitura" ;
+ Text [ spanish ] = "Primera c~olumna como etiqueta" ;
+ Text [ french ] = "Première ~colonne comme étiquette" ;
+ Text [ swedish ] = "Första kolumn ~som etikett" ;
+ Text [ danish ] = "Første kolonne som etiket" ;
+ Text [ portuguese_brazilian ] = "Erste ~Spalte als Beschriftung" ;
+ Text [ portuguese ] = "Primeira ~coluna como legenda" ;
+ Text[ chinese_simplified ] = "½«µÚÒ»¸öÁе±×÷Êý¾Ý±êÖ¾(~C)";
+ Text[ russian ] = "Ïåðâàÿ ñòðîêà â êà÷åñòâå íàçâàíèÿ";
+ Text[ polish ] = "Pierwsza kolumna jako etykieta";
+ Text[ japanese ] = "ʼn‚Ì—ñ‚ð€–Ú–¼‚Ɉø—p(~C)";
+ Text[ chinese_traditional ] = "±N²Ä¤@Äæ·í§@¼ÐÃD(~C)";
+ Text[ arabic ] = "ÇáÚãæÏ ÇáÃæá ßÚäæÇä";
+ Text[ greek ] = "Ðñþôç óôÞëç ùò åðéãñáöÞ";
+ Text[ korean ] = "óÀ½ Ä÷³À» ¶óº§·Î(~C)";
+ Text[ turkish ] = "Etiket olarak ilk~sütun";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox 2
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ Text = "Erste ~Zeile als Beschriftung" ;
+ Text [ ENGLISH ] = "First ~row as label" ;
+ Text [ ENGLISH_US ] = "First ~row as label" ;
+ Text [ italian ] = "Prima riga come dicitura" ;
+ Text [ spanish ] = "Primera ~fila como etiqueta" ;
+ Text [ french ] = "Première ~ligne comme étiquette" ;
+ Text [ dutch ] = "Eerste rij als ~kop" ;
+ Text [ swedish ] = "Första ~rad som etikett" ;
+ Text [ danish ] = "Første række som etiket" ;
+ Text [ portuguese_brazilian ] = "Erste ~Reihe als Beschriftung" ;
+ Text [ portuguese ] = "Primeira ~fila como legenda" ;
+ Text[ chinese_simplified ] = "µÚÒ»Ðе±×÷Êý¾Ý±êÖ¾(~R)";
+ Text[ russian ] = "Ïåðâàÿ ñòðîêà â êà÷åñòâå íàçâàíèÿ";
+ Text[ polish ] = "Pierwszy wiersz jako etykieta";
+ Text[ japanese ] = "ʼn‚Ìs‚ð€–Ú–¼‚Ɉø—p(~R)";
+ Text[ chinese_traditional ] = "²Ä¤@¦C·í§@¼ÐÃD(~R)";
+ Text[ arabic ] = "ÇáÕÝ ÇáÃæá ßÚäæÇä";
+ Text[ greek ] = "Ðñþôç ãñáììÞ ùò åðéãñáöÞ";
+ Text[ korean ] = "óÀ½ ÇàÀ» ¶óº§·Î(~R)";
+ Text[ turkish ] = "Etiket olarak ilk~satýr";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox 6
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 123 , 54 ) ;
+ Text = "Beschriftung" ;
+ Text [ ENGLISH ] = "Labels" ;
+ Text [ ENGLISH_US ] = "Labels" ;
+ Text [ italian ] = "Dicitura" ;
+ Text [ spanish ] = "Etiqueta" ;
+ Text [ french ] = "Étiquette" ;
+ Text [ dutch ] = "Kop" ;
+ Text [ swedish ] = "Etikett" ;
+ Text [ danish ] = "Etiket" ;
+ Text [ portuguese_brazilian ] = "Beschriftung" ;
+ Text [ portuguese ] = "Legenda" ;
+ Text[ chinese_simplified ] = "Êý¾Ý±êÖ¾";
+ Text[ russian ] = "Íàçâàíèå";
+ Text[ polish ] = "Etykiety";
+ Text[ japanese ] = "×ÍÞÙ";
+ Text[ chinese_traditional ] = "¼ÐÅÒ";
+ Text[ arabic ] = "ÇáÚäæäÉ";
+ Text[ greek ] = "ÅðéãñáöÞ";
+ Text[ korean ] = "¶óº§";
+ Text[ turkish ] = "Etiket";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton 3
+ {
+ Pos = MAP_APPFONT ( 135 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ DefButton = TRUE ;
+ };
+ CancelButton 4
+ {
+ Pos = MAP_APPFONT ( 135 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ HelpButton 5
+ {
+ Pos = MAP_APPFONT ( 135 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ /* ### ACHTUNG: Neuer Text in Resource? Quelldatenbereich ändern : Quelldatenbereich õndern */
+ Text = "Quelldatenbereich ändern" ;
+ Text [ ENGLISH ] = "Change Chart Data" ;
+ Text [ ENGLISH_US ] = "Change Source Data Range" ;
+ Text [ dutch ] = "Brongegevensbereik veranderen" ;
+ Text [ italian ] = "Modifica area dati di sorgente" ;
+ Text [ spanish ] = "Modificar datos fuente" ;
+ Text [ french ] = "Modifier la plage des données source" ;
+ Text [ swedish ] = "Ändra källdataområde" ;
+ Text [ danish ] = "Modificer kildedataområde" ;
+ Text [ portuguese_brazilian ] = "Quelldatenbereich ändern" ;
+ Text [ portuguese ] = "Alterar dados fonte" ;
+ Text[ chinese_simplified ] = "¸ü¸ÄÔ´Êý¾ÝÇøÓò";
+ Text[ russian ] = "Èçìåíèòü îáëàñòü èñõîäíûõ äàííûõ";
+ Text[ polish ] = "Zmieñ obszar danych Ÿród³owych";
+ Text[ japanese ] = "¿°½ÃÞ°À”͈͂̕ÏX";
+ Text[ chinese_traditional ] = "Åܧ󷽸ê®Æ°Ï°ì";
+ Text[ arabic ] = "ÊÛííÑ äØÇÞ ÈíÇäÇÊ ÇáãÕÏÑ";
+ Text[ greek ] = "ÁëëáãÞ ðåñéï÷Þò ðñïÝëåõóçò äåäïìÝíùí";
+ Text[ korean ] = "¼Ò½º µ¥ÀÌÅÍ ¿µ¿ª º¯°æ";
+ Text[ turkish ] = "Kaynak verileri aralýðýný deðiþtir";
+ Text[ language_user1 ] = " ";
+};
+
diff --git a/sc/source/ui/src/namedlg.src b/sc/source/ui/src/namedlg.src
new file mode 100644
index 000000000000..b50be4127fd8
--- /dev/null
+++ b/sc/source/ui/src/namedlg.src
@@ -0,0 +1,530 @@
+/*************************************************************************
+ *
+ * $RCSfile: namedlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+ //===========================================================================
+ // Dialogfenster Bereichsnamen festlegen
+ //
+ // (C) 1994-96 StarDivision GmbH, Hamburg, Germany
+ //
+ // $Workfile: namedlg.src $
+ // $Author: hr $
+ // $Date: 2000-09-18 16:45:05 $
+ // $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/source/ui/src/namedlg.srv $
+ //---------------------------------------------------------------------------
+
+#include "namedlg.hrc"
+ModelessDialog RID_SCDLG_NAMES
+{
+ OutputSize = TRUE ;
+ HelpId = FID_DEFINE_NAME ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 222 , 142 ) ;
+ Text = "Namen festlegen" ;
+ Text [ ENGLISH ] = "Define Names" ;
+ Text [ norwegian ] = "Define Names" ;
+ Text [ italian ] = "Definisci nomi" ;
+ Text [ portuguese_brazilian ] = "Definir Nomes" ;
+ Text [ portuguese ] = "Definir nomes" ;
+ Text [ finnish ] = "Määritä nimet" ;
+ Text [ danish ] = "Definer navne" ;
+ Text [ french ] = "Définir des noms" ;
+ Text [ swedish ] = "Definiera namn" ;
+ Text [ dutch ] = "Namen definiëren" ;
+ Text [ spanish ] = "Definir nombres" ;
+ Text [ english_us ] = "Define Names" ;
+ Moveable = TRUE ;
+ // Closeable = TRUE; // Dieser Dialog hat einen Cancel-Button !
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 166 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 166 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton BTN_ADD
+ {
+ Pos = MAP_APPFONT ( 166 , 71 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Hinzu~fügen : Hinzu~f³gen */
+ Text = "Hinzu~fügen" ;
+ Text [ ENGLISH ] = "~Add" ;
+ Text [ norwegian ] = "Leg~g til" ;
+ Text [ italian ] = "Aggiungi" ;
+ Text [ portuguese_brazilian ] = "~Acrescentar" ;
+ Text [ portuguese ] = "~Adicionar" ;
+ Text [ finnish ] = "~Lisää" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "~Ajouter" ;
+ Text [ swedish ] = "~Lägg till" ;
+ Text [ dutch ] = "Toe~voegen" ;
+ Text [ spanish ] = "~Añadir" ;
+ Text [ english_us ] = "~Add" ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ Text[ chinese_simplified ] = "ÐÂÔö(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "’ljÁ(~A)";
+ Text[ chinese_traditional ] = "·s¼W(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ";
+ Text[ greek ] = "ÐñïóèÞêç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BTN_REMOVE
+ {
+ Pos = MAP_APPFONT ( 166 , 87 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen : ~L÷schen */
+ Text = "~Löschen" ;
+ Text [ ENGLISH ] = "~Remove" ;
+ Text [ norwegian ] = "~Fjern" ;
+ Text [ italian ] = "~Elimina" ;
+ Text [ portuguese_brazilian ] = "~Remover" ;
+ Text [ portuguese ] = "E~liminar" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "~Wissen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Delete" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ɾ³ý(~D)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~D)";
+ Text[ chinese_traditional ] = "§R°£(~D)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦(~D)";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 166 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ GroupBox GB_NAME
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 154 , 98 ) ;
+ Text = "Name" ;
+ Text [ ENGLISH ] = "Name" ;
+ Text [ norwegian ] = "Navn" ;
+ Text [ italian ] = "Nome" ;
+ Text [ portuguese_brazilian ] = "Nomear" ;
+ Text [ portuguese ] = "Nome" ;
+ Text [ finnish ] = "Nimi" ;
+ Text [ danish ] = "Navn" ;
+ Text [ french ] = "Nom" ;
+ Text [ swedish ] = "Namn" ;
+ Text [ dutch ] = "Naam" ;
+ Text [ spanish ] = "Nombre" ;
+ Text [ english_us ] = "Name" ;
+ Text[ chinese_simplified ] = "Ãû³Æ";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O";
+ Text[ chinese_traditional ] = "¦WºÙ";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§";
+ Text[ turkish ] = "Ad";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox ED_NAME
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 142 , 80 ) ;
+ TabStop = TRUE ;
+ VScroll = TRUE ;
+ Sort = TRUE ;
+ };
+ GroupBox GB_ASSIGN
+ {
+ Pos = MAP_APPFONT ( 6 , 108 ) ;
+ Size = MAP_APPFONT ( 154 , 28 ) ;
+ Text = "Zugeordnet zu" ;
+ Text [ ENGLISH ] = "Refers to" ;
+ Text [ norwegian ] = "Refers to" ;
+ Text [ italian ] = "Riferito a" ;
+ Text [ portuguese_brazilian ] = "Remente a" ;
+ Text [ portuguese ] = "Refere-se a" ;
+ Text [ finnish ] = "Viittaa:" ;
+ Text [ danish ] = "Henviser til" ;
+ Text [ french ] = "Réfère à" ;
+ Text [ swedish ] = "Hänvisar till" ;
+ Text [ dutch ] = "Toepassen op" ;
+ Text [ spanish ] = "Asignado a" ;
+ Text [ english_us ] = "Refers to" ;
+ Text[ chinese_simplified ] = "Ö¸¶¨¸ø";
+ Text[ russian ] = "Ññûëêà íà";
+ Text[ polish ] = "Odnosi siê do";
+ Text[ japanese ] = "ˆÊ’u";
+ Text[ chinese_traditional ] = "«ü©w¨ì";
+ Text[ arabic ] = "íäÓÈ Åáì";
+ Text[ greek ] = "Áíôéóôïé÷åß óå";
+ Text[ korean ] = "¿¡ ÂüÁ¶";
+ Text[ turkish ] = "Ait olduðu aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_ASSIGN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 119 ) ;
+ Size = MAP_APPFONT ( 128 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_ASSIGN
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 142 , 119 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ MoreButton BTN_MORE
+ {
+ Pos = MAP_APPFONT ( 166 , 123 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /*
+ Text = "~Zusätze";
+ Text[ ENGLISH ] = "~More";
+ Text[norwegian] = "~Mer";
+ Text[italian] = "~Altro";
+ Text[portuguese_brazilian] = "~Mais";
+ Text[portuguese] = "~Mais";
+ Text[finnish] = "~Enemmän";
+ Text[danish] = "~Flere";
+ Text[french] = " S~uite";
+ Text[swedish] = "~Fler";
+ Text[dutch] = "~Overige";
+ Text[spanish] = "~Más";
+ Text[english_us] = "~More";
+ */
+ TabStop = TRUE ;
+ MapUnit = MAP_APPFONT ;
+ Delta = 44 ;
+ };
+ GroupBox GB_TYPE
+ {
+ Pos = MAP_APPFONT ( 6 , 142 ) ;
+ Size = MAP_APPFONT ( 154 , 40 ) ;
+ Text = "Bereichsart" ;
+ Text [ ENGLISH ] = "Type of Area" ;
+ Text [ norwegian ] = "Type of Area" ;
+ Text [ italian ] = "Tipo di area" ;
+ Text [ portuguese_brazilian ] = "Tipo de Área" ;
+ Text [ portuguese ] = "Tipo de área" ;
+ Text [ finnish ] = "Alueen laji" ;
+ Text [ danish ] = "Områdetype" ;
+ Text [ french ] = "Type de plage" ;
+ Text [ swedish ] = "Typ av område" ;
+ Text [ dutch ] = "Bereikstype" ;
+ Text [ spanish ] = "Tipo de área" ;
+ Text [ english_us ] = "Area type" ;
+ Text[ chinese_simplified ] = "ÇøÓòÀàÐÍ";
+ Text[ russian ] = "Òèï îáëàñòè";
+ Text[ polish ] = "Rodzaj obszaru";
+ Text[ japanese ] = "”͈͂̎í—Þ";
+ Text[ chinese_traditional ] = "°Ï°ìÃþ«¬";
+ Text[ arabic ] = "äæÚ ÇáäØÇÞ";
+ Text[ greek ] = "Ôýðïò ðåñéï÷Þò";
+ Text[ korean ] = "¿µ¿ª ÇüÅÂ";
+ Text[ turkish ] = "Aralýk türü";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_PRINTAREA
+ {
+ Pos = MAP_APPFONT ( 12 , 154 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Druc~kbereich" ;
+ Text [ ENGLISH ] = "~Print Area" ;
+ Text [ norwegian ] = "~Print Area" ;
+ Text [ italian ] = "Area di stam~pa" ;
+ Text [ portuguese_brazilian ] = "~Área de Impressão" ;
+ Text [ portuguese ] = "~Imprimir Área" ;
+ Text [ finnish ] = "~Tulostusalue" ;
+ Text [ danish ] = "Udskriftsområde" ;
+ Text [ french ] = "~Zone d'impression" ;
+ Text [ swedish ] = "Uts~kriftsområde" ;
+ Text [ dutch ] = "~Afdrukbereik" ;
+ Text [ spanish ] = "Área de ~impresión" ;
+ Text [ english_us ] = "~Print range" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "´òÓ¡ÇøÓò(~P)";
+ Text[ russian ] = "Îáëàñòü ïå÷àòè";
+ Text[ polish ] = "Obszar wydruku";
+ Text[ japanese ] = "ˆóü”͈Í(~P)";
+ Text[ chinese_traditional ] = "¦C¦L­S³ò(~P)";
+ Text[ arabic ] = "äØÇÞ ÇáØÈÇÚÉ";
+ Text[ greek ] = "Ðåñéï÷Þ åêôýðùóçò";
+ Text[ korean ] = "Àμ⠿µ¿ª(~P)";
+ Text[ turkish ] = "Yazdýrma a~ralýðý";
+ Text[ language_user1 ] = "RB: zu finden in: Format - Druckbereich - Bearbeiten... - -";
+ };
+ CheckBox BTN_CRITERIA
+ {
+ Pos = MAP_APPFONT ( 12 , 167 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "Fil~ter" ;
+ Text [ ENGLISH ] = "~Filter" ;
+ Text [ norwegian ] = "~Filter" ;
+ Text [ italian ] = "~Filtro" ;
+ Text [ portuguese_brazilian ] = "~Filtro" ;
+ Text [ portuguese ] = "~Filtro" ;
+ Text [ finnish ] = "~Suodin" ;
+ Text [ danish ] = "Filter" ;
+ Text [ french ] = "~Filtre" ;
+ Text [ swedish ] = "Fil~ter" ;
+ Text [ dutch ] = "Fi~lter" ;
+ Text [ spanish ] = "Fi~ltro" ;
+ Text [ english_us ] = "~Filter" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ɸѡ(~F)";
+ Text[ russian ] = "Ôèëüòð";
+ Text[ polish ] = "Filtr";
+ Text[ japanese ] = "̨ÙÀ(~F)";
+ Text[ chinese_traditional ] = "¿z¿ï(~F)";
+ Text[ arabic ] = "ÇáÝáÊÑ";
+ Text[ greek ] = "Ößëôñï";
+ Text[ korean ] = "ÇÊÅÍ(~F)";
+ Text[ turkish ] = "Fil~tre";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_ROWHEADER
+ {
+ Pos = MAP_APPFONT ( 75 , 167 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "W~iederholungszeile" ;
+ Text [ ENGLISH ] = "Ti~tle Row" ;
+ Text [ norwegian ] = "Ti~tle Row" ;
+ Text [ italian ] = "Riga da ripetere" ;
+ Text [ portuguese_brazilian ] = "Fileira de Tí~tulo" ;
+ Text [ portuguese ] = "Linha a ~repetir" ;
+ Text [ finnish ] = "Otsikko~rivi" ;
+ Text [ danish ] = "Gentagelsesrække" ;
+ Text [ french ] = "~Ligne à répéter" ;
+ Text [ swedish ] = "Upprepn~ingsrad" ;
+ Text [ dutch ] = "~Rij herhalen" ;
+ Text [ spanish ] = "Fil~a a repetir" ;
+ Text [ english_us ] = "Repeat ~row" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Öظ´µÄÐÐ(~R)";
+ Text[ russian ] = "Ïîâòîð ñòðîêè";
+ Text[ polish ] = "Powtarzaj wiersz";
+ Text[ japanese ] = "ŒJ‚è•Ô‚·s(~R)";
+ Text[ chinese_traditional ] = "­«½Æªº¦C(~R)";
+ Text[ arabic ] = "ÇáÕÝ ÇáãßÑÑ";
+ Text[ greek ] = "Åðáíáëáìâáíüìåí~ç ãñáììÞ";
+ Text[ korean ] = "Çà ¹Ýº¹(~R)";
+ Text[ turkish ] = "Y~inelenen satýr";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_COLHEADER
+ {
+ Pos = MAP_APPFONT ( 75 , 154 ) ;
+ Size = MAP_APPFONT ( 82 , 10 ) ;
+ Text = "~Wiederholungsspalte" ;
+ Text [ ENGLISH ] = "Label ~Column" ;
+ Text [ norwegian ] = "Label ~Column" ;
+ Text [ italian ] = "Colonna da ripetere" ;
+ Text [ portuguese_brazilian ] = "Rótulo da ~Coluna" ;
+ Text [ portuguese ] = "~Coluna a repetir" ;
+ Text [ finnish ] = "Otsikkos~arake" ;
+ Text [ danish ] = "Gentagelseskolonne" ;
+ Text [ french ] = "~Colonne à répéter" ;
+ Text [ swedish ] = "~Upprepningskolumn" ;
+ Text [ dutch ] = "~Kolom herhalen" ;
+ Text [ spanish ] = "Columna a r~epetir" ;
+ Text [ english_us ] = "Repeat ~column" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Öظ´µÄÁÐ(~C)";
+ Text[ russian ] = "Ïîâòîð ñòîëáöà";
+ Text[ polish ] = "Powtarzaj kolumnê";
+ Text[ japanese ] = "ŒJ‚è•Ô‚·—ñ(~C)";
+ Text[ chinese_traditional ] = "­«½ÆªºÄæ(~C)";
+ Text[ arabic ] = "ÇáÚãæÏ ÇáãßÑÑ";
+ Text[ greek ] = "Åðáíáëáì~âáíüìåíç óôÞëç";
+ Text[ korean ] = "¿­ ¹Ýº¹(~C)";
+ Text[ turkish ] = "~Yinelenen sütun";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ADD
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Hinzu~fügen : Hinzu~f³gen */
+ Text = "Hinzu~fügen" ;
+ Text [ ENGLISH ] = "~Add" ;
+ Text [ norwegian ] = "Leg~g til" ;
+ Text [ italian ] = "Aggiungi" ;
+ Text [ portuguese_brazilian ] = "~Acrescentar" ;
+ Text [ portuguese ] = "~Adicionar" ;
+ Text [ finnish ] = "~Lisää" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "~Ajouter" ;
+ Text [ swedish ] = "~Lägg till" ;
+ Text [ dutch ] = "Toe~voegen" ;
+ Text [ spanish ] = "~Añadir" ;
+ Text [ english_us ] = "~Add" ;
+ Text[ chinese_simplified ] = "ÐÂÔö(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "’ljÁ(~A)";
+ Text[ chinese_traditional ] = "·s¼W(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ";
+ Text[ greek ] = "ÐñïóèÞêç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_MODIFY
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ~Ändern : ~Žndern */
+ Text = "~Ändern" ;
+ Text [ ENGLISH ] = "Modif~y" ;
+ Text [ norwegian ] = "Modif~y" ;
+ Text [ italian ] = "Modifica" ;
+ Text [ portuguese_brazilian ] = "Modif~icar" ;
+ Text [ portuguese ] = "~Modificar" ;
+ Text [ finnish ] = "~Muokkaa" ;
+ Text [ danish ] = "Modificer" ;
+ Text [ french ] = "~Modifier" ;
+ Text [ swedish ] = "Än~dra" ;
+ Text [ dutch ] = "Wij~zigen" ;
+ Text [ spanish ] = "~Modificar" ;
+ Text [ english_us ] = "~Modify" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä(~M)";
+ Text[ russian ] = "Èçìåíèòü";
+ Text[ polish ] = "Modyfikuj";
+ Text[ japanese ] = "•ÏX(~M)";
+ Text[ chinese_traditional ] = "Åܧó(~M)";
+ Text[ arabic ] = "ÊÚÏíá";
+ Text[ greek ] = "Ôñïðïðïßçóç";
+ Text[ korean ] = "¼öÁ¤(~M)";
+ Text[ turkish ] = "~Deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALIDSYMBOL
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ungültiger Ausdruck : Ung³ltiger Ausdruck */
+ Text = "Ungültiger Ausdruck" ;
+ Text [ ENGLISH ] = "Invalid expression" ;
+ Text [ norwegian ] = "Invalid expression" ;
+ Text [ italian ] = "Espressione non valida" ;
+ Text [ portuguese_brazilian ] = "Expressão inválida" ;
+ Text [ portuguese ] = "Expressão não válida" ;
+ Text [ finnish ] = "Virheellinen lauseke" ;
+ Text [ danish ] = "Ugyldigt udtryk" ;
+ Text [ french ] = "Expression incorrecte" ;
+ Text [ swedish ] = "Ogiltigt uttryck" ;
+ Text [ dutch ] = "Ongeldige uitdrukking" ;
+ Text [ spanish ] = "Expresión no válida" ;
+ Text [ english_us ] = "Invalid expression" ;
+ Text[ chinese_simplified ] = "ÎÞЧµÄ±íÊöʽ";
+ Text[ russian ] = "Íåäîïóñòèìîå âûðàæåíèå";
+ Text[ polish ] = "Nieprawid³owe wyra¿enie";
+ Text[ japanese ] = "–³Œø‚È•\\Œ»";
+ Text[ chinese_traditional ] = "µL®Äªºªí­z¦¡";
+ Text[ arabic ] = "ÊÚÈíÑ ÛíÑ ÕÇáÍ";
+ Text[ greek ] = "Ìç Ýãêõñç Ýêöñáóç";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº Ç¥Çö";
+ Text[ turkish ] = "Geçersiz terim";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "¶¨ÒåÃû³Æ";
+ Text[ russian ] = "Ïðèñâîèòü èìÿ";
+ Text[ polish ] = "Zdefiniuj nazwy";
+ Text[ japanese ] = "–¼‘O‚ÌŽw’è";
+ Text[ chinese_traditional ] = "©w¸q¦WºÙ";
+ Text[ arabic ] = "ÊÍÏíÏ ÇáÃÓãÇÁ";
+ Text[ greek ] = "Ïñéóìüò ïíïìÜôùí";
+ Text[ korean ] = "À̸§ Á¤ÀÇ";
+ Text[ turkish ] = "Ad tanýmla";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/src/opredlin.src b/sc/source/ui/src/opredlin.src
new file mode 100644
index 000000000000..15a66a2d06e9
--- /dev/null
+++ b/sc/source/ui/src/opredlin.src
@@ -0,0 +1,253 @@
+/*************************************************************************
+ *
+ * $RCSfile: opredlin.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "opredlin.hrc"
+TabPage RID_SCPAGE_OPREDLINE
+{
+ HelpId = HID_SCPAGE_OPREDLINE ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ FixedText FT_CONTENT
+ {
+ HelpID = 1 ;
+ Pos = MAP_APPFONT ( 12 , 21 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Änderungen" ;
+ Text [ ENGLISH ] = "Changes" ;
+ Text [ english_us ] = "Chan~ges" ;
+ Text [ portuguese_brazilian ] = "~Änderungen" ;
+ Text [ swedish ] = "~Ändringar" ;
+ Text [ danish ] = "Ændringer" ;
+ Text [ italian ] = "~Modifica" ;
+ Text [ spanish ] = "~Modificaciones" ;
+ Text [ french ] = "~Modifications" ;
+ Text [ dutch ] = "~Wijzigingen" ;
+ Text [ portuguese ] = "~Modificações" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä(~G)";
+ Text[ russian ] = "Èñïðàâëåíèÿ";
+ Text[ polish ] = "Zmiany";
+ Text[ japanese ] = "•ÏX(~G)";
+ Text[ chinese_traditional ] = "Åܧó(~G)";
+ Text[ arabic ] = "ÇáÊÛííÑÇÊ";
+ Text[ greek ] = "ÁëëáãÝò";
+ Text[ korean ] = "º¯°æ(~G)";
+ Text[ turkish ] = "~Deðiþiklikler";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_REMOVE
+ {
+ Pos = MAP_APPFONT ( 12 , 41 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Löschungen" ;
+ Text [ ENGLISH ] = "Removed Entrys" ;
+ Text [ portuguese ] = "~Eliminações" ;
+ Text [ english_us ] = "~Deletions" ;
+ Text [ portuguese_brazilian ] = "~Löschungen" ;
+ Text [ swedish ] = "~Raderingar" ;
+ Text [ danish ] = "Sletninger" ;
+ Text [ italian ] = "~Elimina" ;
+ Text [ spanish ] = "~Eliminaciones" ;
+ Text [ french ] = "~Suppressions" ;
+ Text [ dutch ] = "~Verwijderingen" ;
+ Text[ chinese_simplified ] = "ɾ³ý(~D)";
+ Text[ russian ] = "Óäàëåíèÿ";
+ Text[ polish ] = "Usuniêcia";
+ Text[ japanese ] = "íœ(~D)";
+ Text[ chinese_traditional ] = "§R°£(~D)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÝò";
+ Text[ korean ] = "»èÁ¦(~D)";
+ Text[ turkish ] = "~Silinenler";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_INSERT
+ {
+ Pos = MAP_APPFONT ( 12 , 61 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Einfügungen" ;
+ Text [ ENGLISH ] = "Inserted Entrys" ;
+ Text [ portuguese ] = "~Inserções" ;
+ Text [ english_us ] = "~Insertions" ;
+ Text [ portuguese_brazilian ] = "~Einfügungen" ;
+ Text [ swedish ] = "~Infogningar" ;
+ Text [ danish ] = "Indsættelser" ;
+ Text [ italian ] = "~Inserisci" ;
+ Text [ spanish ] = "~Inserciones" ;
+ Text [ french ] = "~Insertions" ;
+ Text [ dutch ] = "~Invoegingen" ;
+ Text[ chinese_simplified ] = "²åÈë(~I)";
+ Text[ russian ] = "Âñòàâêè";
+ Text[ polish ] = "Wstawienia";
+ Text[ japanese ] = "‘}“ü(~I)";
+ Text[ chinese_traditional ] = "´¡¤J(~I)";
+ Text[ arabic ] = "ÅÏÑÇÌÇÊ";
+ Text[ greek ] = "ÐñïóèÞêåò";
+ Text[ korean ] = "»ðÀÔ(~I)";
+ Text[ turkish ] = "~Eklemeler";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_MOVE
+ {
+ Pos = MAP_APPFONT ( 12 , 81 ) ;
+ Size = MAP_APPFONT ( 70 , 10 ) ;
+ Text = "~Verschiebungen" ;
+ Text [ ENGLISH ] = "Moved Entrys" ;
+ Text [ portuguese ] = "~Deslocamentos" ;
+ Text [ english_us ] = "~Moved entries" ;
+ Text [ portuguese_brazilian ] = "~Verschiebungen" ;
+ Text [ swedish ] = "~Förskjutningar" ;
+ Text [ danish ] = "Flytninger" ;
+ Text [ italian ] = "~Sposta" ;
+ Text [ spanish ] = "~Desplazamientos" ;
+ Text [ french ] = "~Déplacements" ;
+ Text [ dutch ] = "~Verplaatsingen" ;
+ Text[ chinese_simplified ] = "Òƶ¯(~M)";
+ Text[ russian ] = "Cìåùåíèÿ";
+ Text[ polish ] = "Przesuniêcia";
+ Text[ japanese ] = "ˆÚ“®(~M)";
+ Text[ chinese_traditional ] = "²¾°Ê(~M)";
+ Text[ arabic ] = "ÅÒÇÍÇÊ";
+ Text[ greek ] = "ÌåôáêéíÞóåéò";
+ Text[ korean ] = "Ç׸ñ À̵¿(~M)";
+ Text[ turkish ] = "~Taþýnan giriþler";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_COLORCHGS
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 248 , 116 ) ;
+ Text = "Farbgebung für Änderungen" ;
+ Text [ ENGLISH ] = "Colors for Changes" ;
+ Text [ portuguese ] = "Cores para modificações" ;
+ Text [ english_us ] = "Colors for changes" ;
+ Text [ portuguese_brazilian ] = "Farbgebung für Änderungen" ;
+ Text [ swedish ] = "Färggivning för ändringar" ;
+ Text [ danish ] = "Farver for ændringer" ;
+ Text [ italian ] = "Colori per i comandi" ;
+ Text [ spanish ] = "Colores para las modificaciones" ;
+ Text [ french ] = "Couleurs d'affichage des modifications" ;
+ Text [ dutch ] = "Kleurgeving voor wijzigingen" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä²¿·Ö²ÉÓõÄÑÕÉ«";
+ Text[ russian ] = "Öâåò äëÿ èçìåíåíèé";
+ Text[ polish ] = "Kolory dla modyfikacji";
+ Text[ japanese ] = "•ÏX—p‚ÌF";
+ Text[ chinese_traditional ] = "Åܧ󳡤À±Ä¥ÎªºÃC¦â";
+ Text[ arabic ] = "áæä ÇáÊÛííÑÇÊ";
+ Text[ greek ] = "×ñþìá áëëáãþí";
+ Text[ korean ] = "º¯°æÀ» À§ÇÑ »ö»ó";
+ Text[ turkish ] = "Deðiþiklikleri gösteren renkler";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox CLB_CONTENT
+ {
+ Pos = MAP_APPFONT ( 90 , 20 ) ;
+ Size = MAP_APPFONT ( 120 , 124 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox CLB_REMOVE
+ {
+ Pos = MAP_APPFONT ( 90 , 40 ) ;
+ Size = MAP_APPFONT ( 120 , 124 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox CLB_INSERT
+ {
+ Pos = MAP_APPFONT ( 90 , 60 ) ;
+ Size = MAP_APPFONT ( 120 , 124 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ ListBox CLB_MOVE
+ {
+ Pos = MAP_APPFONT ( 90 , 80 ) ;
+ Size = MAP_APPFONT ( 120 , 124 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ String STR_AUTHOR
+ {
+ Text = "Nach Autor" ;
+ Text [ English ] = "By author" ;
+ Text [ portuguese ] = "Conforme autor" ;
+ Text [ english_us ] = "By author" ;
+ Text [ portuguese_brazilian ] = "Nach Autor" ;
+ Text [ swedish ] = "Efter författare" ;
+ Text [ danish ] = "Efter forfatter" ;
+ Text [ italian ] = "per autore" ;
+ Text [ spanish ] = "Según autor" ;
+ Text [ french ] = "Par auteur" ;
+ Text [ dutch ] = "Naar auteur" ;
+ Text[ chinese_simplified ] = "°´×÷Õß";
+ Text[ russian ] = "Ïî àâòîðó";
+ Text[ polish ] = "Wed³ug autora";
+ Text[ japanese ] = "쬎҂É]‚Á‚Ä";
+ Text[ chinese_traditional ] = "«ö·Ó§@ªÌ";
+ Text[ arabic ] = "ÍÓÈ ÇáãÄáÝ";
+ Text[ greek ] = "ÊáôÜ óõíôÜêôç";
+ Text[ korean ] = "ÀúÀÚ";
+ Text[ turkish ] = "Yazana göre";
+ Text[ language_user1 ] = " ";
+ };
+};
diff --git a/sc/source/ui/src/optdlg.src b/sc/source/ui/src/optdlg.src
new file mode 100644
index 000000000000..8bed7279ed3b
--- /dev/null
+++ b/sc/source/ui/src/optdlg.src
@@ -0,0 +1,2704 @@
+/*************************************************************************
+ *
+ * $RCSfile: optdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "optdlg.hrc"
+
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+
+
+TabDialog RID_SCDLG_OPTIONS
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 271 , 151 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Optionen Tabellendokument : Optionen Allgemein */
+ Text = "Optionen Tabellendokument" ;
+ Text [ ENGLISH ] = "Table Options" ;
+ Moveable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ //! TP_VIEW soll noch mal aufgeteilt werden
+ /* PageItem
+ {
+ Identifier = TP_VIEW ;
+ Text = "Ansicht" ;
+ Text [ ENGLISH ] = "View" ;
+ Text [ norwegian ] = "View" ;
+ Text [ italian ] = "Visualizza" ;
+ Text [ portuguese_brazilian ] = "Ver" ;
+ Text [ portuguese ] = "Ver" ;
+ Text [ finnish ] = "Näytä" ;
+ Text [ danish ] = "Bese" ;
+ Text [ french ] = "Affichage" ;
+ Text [ swedish ] = "Vy" ;
+ Text [ dutch ] = "Beel~d" ;
+ Text [ spanish ] = "Mostrar" ;
+ Text [ english_us ] = "View" ;
+ };*/
+ PageItem
+ {
+ Identifier = TP_CONTENT ;
+ Text = "Inhalte" ;
+ Text [ ENGLISH ] = "Contents" ;
+ Text [ english_us ] = "Contents" ;
+ Text [ italian ] = "Contenuti" ;
+ Text [ spanish ] = "Contenidos" ;
+ Text [ french ] = "Contenu" ;
+ Text [ dutch ] = "Inhoud" ;
+ Text [ swedish ] = "Innehåll" ;
+ Text [ danish ] = "Indhold" ;
+ Text [ portuguese_brazilian ] = "Inhalte" ;
+ Text [ portuguese ] = "Conteúdos" ;
+ Text[ chinese_simplified ] = "ÄÚÈÝ";
+ Text[ russian ] = "Ñîäåðæèìîå";
+ Text[ polish ] = "Zawartoœci";
+ Text[ japanese ] = "“à—e";
+ Text[ chinese_traditional ] = "¤º®e";
+ Text[ arabic ] = "ÇáãÍÊæíÇÊ";
+ Text[ greek ] = "Ðåñéå÷üìåíá";
+ Text[ korean ] = "³»¿ë";
+ Text[ turkish ] = "Ýçerik";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_LAYOUT ;
+ Text = "Layout" ;
+ Text [ ENGLISH ] = "Layout" ;
+ Text [ english_us ] = "Layout" ;
+ Text [ italian ] = "Layout" ;
+ Text [ spanish ] = "Diseño" ;
+ Text [ french ] = "Mise en page" ;
+ Text [ dutch ] = "Lay-out" ;
+ Text [ swedish ] = "Layout" ;
+ Text [ danish ] = "Layout" ;
+ Text [ portuguese_brazilian ] = "Layout" ;
+ Text [ portuguese ] = "Configuração" ;
+ Text[ chinese_simplified ] = "°æʽ";
+ Text[ russian ] = "Ðàçìåòêà";
+ Text[ polish ] = "Uk³ad";
+ Text[ japanese ] = "Ú²±³Ä";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "ª©¦¡";
+ Text[ arabic ] = "ÊÎØíØ";
+ Text[ greek ] = "ÄéÜôáîç";
+ Text[ korean ] = "¸ð¾ç";
+ Text[ turkish ] = "Düzen";
+ };
+ PageItem
+ {
+ Identifier = TP_INPUT ;
+ Text = "Eingabe" ;
+ Text [ ENGLISH ] = "Input" ;
+ Text [ english_us ] = "Input" ;
+ Text [ swedish ] = "Inmatning" ;
+ Text [ danish ] = "Input" ;
+ Text [ italian ] = "Digitazione" ;
+ Text [ spanish ] = "Entrada" ;
+ Text [ french ] = "Saisie" ;
+ Text [ dutch ] = "Invoer" ;
+ Text [ portuguese_brazilian ] = "Eingabe" ;
+ Text [ portuguese ] = "Entrada" ;
+ Text[ chinese_simplified ] = "ÊäÈë";
+ Text[ russian ] = "Ââîä";
+ Text[ polish ] = "Wpis";
+ Text[ japanese ] = "“ü—Í";
+ Text[ chinese_traditional ] = "¿é¤J";
+ Text[ arabic ] = "ÅÏÎÇá";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "ÀÔ·Â";
+ Text[ turkish ] = "Giriþ";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ // Identifier = RID_SVXPAGE_GRID;
+ Identifier = TP_GRID ;
+ Text = "Raster" ;
+ Text [ ENGLISH ] = "Grid" ;
+ Text [ norwegian ] = "Grid" ;
+ Text [ italian ] = "Griglia" ;
+ Text [ portuguese_brazilian ] = "Grade" ;
+ Text [ portuguese ] = "Grelha" ;
+ Text [ finnish ] = "Taustaruudukko" ;
+ Text [ danish ] = "Gitter" ;
+ Text [ french ] = "Grille" ;
+ Text [ swedish ] = "Raster" ;
+ Text [ dutch ] = "Raster" ;
+ Text [ spanish ] = "Cuadrícula" ;
+ Text [ english_us ] = "Grid" ;
+ // PageResID = 263;
+ Text[ chinese_simplified ] = "Íø¸ñ";
+ Text[ russian ] = "Ðåøåòêà";
+ Text[ polish ] = "Raster";
+ Text[ japanese ] = "¸ÞدÄÞ";
+ Text[ chinese_traditional ] = "ºô®æ";
+ Text[ arabic ] = "ÇáÔÈßÉ";
+ Text[ greek ] = "ÐëÝãìá (êïõêßäåò)";
+ Text[ korean ] = "±¥¼±";
+ Text[ turkish ] = "Kýlavuz çizgileri";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_USERLISTS ;
+ Text = "Sortierlisten" ;
+ Text [ ENGLISH ] = "Sort Lists" ;
+ Text [ norwegian ] = "Sort Lists" ;
+ Text [ italian ] = "Elenchi" ;
+ Text [ portuguese_brazilian ] = "Listas de Ordenação" ;
+ Text [ portuguese ] = "Listas classificadas" ;
+ Text [ finnish ] = "Luetteloiden lajittelu" ;
+ Text [ danish ] = "Sorteringslister" ;
+ Text [ french ] = "Listes de tri" ;
+ Text [ swedish ] = "Sorteringslistor" ;
+ Text [ dutch ] = "Reeksen" ;
+ Text [ spanish ] = "Listas de clasificación" ;
+ Text [ english_us ] = "Sort Lists" ;
+ Text[ chinese_simplified ] = "ÅÅÐòÁе¥";
+ Text[ russian ] = "Ñïèñêè";
+ Text[ polish ] = "Listy u¿ytkownika";
+ Text[ japanese ] = "‡˜Ø½Ä";
+ Text[ chinese_traditional ] = "±Æ§Ç²M³æ";
+ Text[ arabic ] = "ÞæÇÆã ÇáÝÑÒ";
+ Text[ greek ] = "Ëßóôåò ôáîéíüìçóçò";
+ Text[ korean ] = "¸®½ºÆ® Á¤·Ä";
+ Text[ turkish ] = "Sýralama listesi";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_CALC ;
+ Text = "Berechnen" ;
+ Text [ ENGLISH ] = "Calc" ;
+ Text [ norwegian ] = "Calc" ;
+ Text [ italian ] = "Calcola" ;
+ Text [ portuguese_brazilian ] = "Calc" ;
+ Text [ portuguese ] = "Calcular" ;
+ Text [ finnish ] = "Calc" ;
+ Text [ danish ] = "Beregning" ;
+ Text [ french ] = "Calcul" ;
+ Text [ swedish ] = "Beräkna" ;
+ Text [ dutch ] = "Berekenen" ;
+ Text [ spanish ] = "Calcular" ;
+ Text [ english_us ] = "Calculation" ;
+ Text[ chinese_simplified ] = "¼ÆËã";
+ Text[ russian ] = "Âû÷èñëèòü";
+ Text[ polish ] = "Oblicz";
+ Text[ japanese ] = "ŒvŽZ";
+ Text[ chinese_traditional ] = "­pºâ";
+ Text[ arabic ] = "ÍÓÇÈ";
+ Text[ greek ] = "Õðïëïãéóìüò";
+ Text[ korean ] = "°è»ê";
+ Text[ turkish ] = "Hesaplama";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_CHANGES ;
+ Text = "Änderungen" ;
+ Text [ ENGLISH ] = "Changes" ;
+ Text [ english_us ] = "Alterations" ;
+ Text [ portuguese_brazilian ] = "Änderungen" ;
+ Text [ swedish ] = "Ändringar" ;
+ Text [ danish ] = "Ændringer" ;
+ Text [ italian ] = "Modifiche" ;
+ Text [ spanish ] = "Modificaciones" ;
+ Text [ french ] = "Modifications" ;
+ Text [ dutch ] = "Wijzigingen" ;
+ Text [ portuguese ] = "Modificações" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä";
+ Text[ russian ] = "Èñïðàâëåíèÿ";
+ Text[ polish ] = "Zmiany";
+ Text[ japanese ] = "•ÏX";
+ Text[ chinese_traditional ] = "Åܧó";
+ Text[ arabic ] = "ÊÛííÑÇÊ";
+ Text[ greek ] = "ÁëëáãÝò";
+ Text[ korean ] = "»¡°£ÁÙ ±ß±â";
+ Text[ turkish ] = "Deðiþiklik";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Text [ english_us ] = "Spreadsheet Options" ;
+ Text [ italian ] = "Opzioni fogli elettronici" ;
+ Text [ spanish ] = "Opciones de hojas de cálculo" ;
+ Text [ french ] = "Options de classeur" ;
+ Text [ dutch ] = "Werkbladopties" ;
+ Text [ swedish ] = "Alternativ tabelldokument" ;
+ Text [ danish ] = "Indstillinger regneark" ;
+ Text [ portuguese_brazilian ] = "Optionen Tabellendokument" ;
+ Text [ portuguese ] = "Opções folhas de cálculo" ;
+ Text[ chinese_simplified ] = "¹¤×÷±íÎĵµÑ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû Äîêóìåíò ýëåêòðîííîé òàáëèöû";
+ Text[ polish ] = "Opcje arkusza kalkulacyjnego";
+ Text[ japanese ] = "•\\ŒvŽZ‚̵Ìß¼®Ý";
+ Text[ chinese_traditional ] = "¤u§@ªí¤å¥ó¿ï¶µ";
+ Text[ arabic ] = "ÎÕÇÆÕ ãÓÊäÏ ÌÏæá";
+ Text[ greek ] = "ÅðéëïãÝò åããñÜöïõ ðßíáêá";
+ Text[ korean ] = "½ºÇÁ·¹µå½ÃÆ® ¿É¼Ç";
+ Text[ turkish ] = "Tablo seçenekleri";
+ Text[ language_user1 ] = " ";
+};
+
+#define LB_OBJECTMODE \
+ Size = MAP_APPFONT ( 68 , 46 ) ; \
+ Border = TRUE ; \
+ DropDown = TRUE ; \
+ StringList = \
+ {\
+ < "Anzeigen" ; Default ; > ; \
+ < "Ausblenden" ; Default ; > ; \
+ < "Platzhalter" ; Default ; > ; \
+ };\
+ StringList [ ENGLISH ] = \
+ {\
+ < "Anzeigen" ; Default ; > ; \
+ < "Ausblenden" ; Default ; > ; \
+ < "Platzhalter" ; Default ; > ; \
+ };\
+ StringList [ norwegian ] = \
+ {\
+ < "Anzeigen" ; Default ; > ; \
+ < "Ausblenden" ; Default ; > ; \
+ < "Platzhalter" ; Default ; > ; \
+ };\
+ StringList [ italian ] = \
+ {\
+ < "Mostra" ; Default ; > ; \
+ < "Nascondi" ; Default ; > ; \
+ < "Segnaposto" ; Default ; > ; \
+ };\
+ StringList [ portuguese_brazilian ] = \
+ {\
+ < "Mostrar" ; Default ; > ; \
+ < "Ocultar" ; Default ; > ; \
+ < "Surrogates" ; Default ; > ; \
+ };\
+ StringList [ portuguese ] = \
+ {\
+ < "Mostrar" ; Default ; > ; \
+ < "Ocultar" ; Default ; > ; \
+ < "Marcador de posição" ; Default ; > ; \
+ };\
+ StringList [ finnish ] = \
+ {\
+ < "Anzeigen" ; Default ; > ; \
+ < "Ausblenden" ; Default ; > ; \
+ < "Platzhalter" ; Default ; > ; \
+ };\
+ StringList [ danish ] = \
+ {\
+ < "Vis" ; Default ; > ; \
+ < "Gem" ; Default ; > ; \
+ < "Pladsholdere" ; Default ; > ; \
+ };\
+ StringList [ french ] = \
+ {\
+ < "Afficher" ; Default ; > ; \
+ < "Masquer" ; Default ; > ; \
+ < "Substituant" ; Default ; > ; \
+ };\
+ StringList [ swedish ] = \
+ {\
+ < "Visa" ; Default ; > ; \
+ < "Dölj" ; Default ; > ; \
+ < "Platshållare" ; Default ; > ; \
+ };\
+ StringList [ dutch ] = \
+ {\
+ < "Weergeven" ; Default ; > ; \
+ < "Verbergen" ; Default ; > ; \
+ < "Plaatsvervangers" ; Default ; > ; \
+ };\
+ StringList [ spanish ] = \
+ {\
+ < "Mostrar" ; Default ; > ; \
+ < "Ocultar" ; Default ; > ; \
+ < "Comodín" ; Default ; > ; \
+ };\
+ StringList [ ENGLISH_US ] = \
+ {\
+ < "Show" ; Default ; > ; \
+ < "Hide" ; Default ; > ; \
+ < "Placeholders" ; Default ; > ; \
+ };\
+ StringList [ chinese_simplified ] = \
+ {\
+ < "ÏÔʾ" ; Default ; > ; \
+ < "ÒþÈë" ; Default ; > ; \
+ < "ÏÔʾλÖÃ" ; Default ; > ; \
+ };\
+ StringList [ russian ] = \
+ {\
+ < "Ïîêàçàòü" ; Default ; > ;\
+ < "Ñêðûòü" ; Default ; > ;\
+ < "Ìåñòîçàïîëíèòåëü" ; Default ; > ;\
+ };\
+ StringList [ polish ] = \
+ {\
+ < "Poka¿" ; Default ; > ;\
+ < "Ukryj" ; Default ; > ;\
+ < "Symbole wieloznaczne" ; Default ; > ;\
+ };\
+ StringList [ japanese ] = \
+ {\
+ < "•\\Ž¦" ; Default ; > ;\
+ < "”ñ•\\Ž¦" ; Default ; > ;\
+ < "²Ò°¼Þ˜g" ; Default ; > ;\
+ };\
+StringList [ chinese_traditional ] = \
+ { \
+ < "Åã¥Ü" ; Default ; > ; \
+ < "Áô¤J" ; Default ; > ; \
+ < "Åã¥Ü¦ì¸m" ; Default ; > ; \
+ }; \
+StringList [ arabic ] = \
+ { \
+ < "ÅÙåÇÑ" ; Default ; > ;\
+ < "ÅÎÝÇÁ" ; Default ; > ;\
+ < "ÚäÇÕÑ äÇÆÈÉ" ; Default ; >; \
+ };\
+StringList [ greek ] =\
+ {\
+ < "ÅìöÜíéóç" ; Default ; > ;\
+ < "Áðüêñõøç" ; Default ; > ;\
+ < "Óýìâïëá êñÜôçóçò èÝóçò" ; Default ; > ;\
+ };\
+ StringList [ korean ] =\
+ {\
+ < "º¸À̱â" ; Default ; > ;\
+ < "¼û±â±â" ; Default ; > ;\
+ < "°³Ã¼Æ²" ; Default ; > ;\
+ }; \
+StringList [ turkish ] =\
+ {\
+ < "Görüntüle" ; Default ; > ;\
+ < "Gizle" ; Default ; > ;\
+ < "Genel arama karakteri" ; Default ; > ;\
+ };\
+StringList [ language_user1 ] =\
+ {\
+ < " " ; Default ; > ;\
+ < " " ; Default ; > ;\
+ < " " ; Default ; > ;\
+ };
+
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+
+TabPage RID_SCPAGE_CALC
+{
+ HelpId = HID_SCPAGE_CALC ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ CheckBox BTN_ITERATE
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 49 , 10 ) ;
+ Text = "~Iterationen" ;
+ Text [ ENGLISH ] = "~Iterations" ;
+ Text [ norwegian ] = "~Iterations" ;
+ Text [ italian ] = "~Iterazioni" ;
+ Text [ portuguese_brazilian ] = "~Iterations" ;
+ Text [ portuguese ] = "~Iteracções" ;
+ Text [ finnish ] = "~Iterations" ;
+ Text [ danish ] = "Iterationer" ;
+ Text [ french ] = "~Itérations" ;
+ Text [ swedish ] = "~Iterationer" ;
+ Text [ dutch ] = "~Iteraties" ;
+ Text [ spanish ] = "~Iteraciones" ;
+ Text [ ENGLISH_US ] = "~Iterations" ;
+ Text[ chinese_simplified ] = "Ñ­»·(~I)";
+ Text[ russian ] = "~Èòåðàöèè";
+ Text[ polish ] = "Iteracje";
+ Text[ japanese ] = "”½•œ(~I)";
+ Text[ chinese_traditional ] = "´`Àô(~I)";
+ Text[ arabic ] = "ÎØæÇÊ ÊßÑÇÑíÉ";
+ Text[ greek ] = "Äéáäï÷éêÝò ðñïóåããßóåéò";
+ Text[ korean ] = "¹Ýº¹È½¼ö(~I)";
+ Text[ turkish ] = "Yinelemeler";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_STEPS
+ {
+ Pos = MAP_APPFONT ( 20 , 28 ) ;
+ Size = MAP_APPFONT ( 52 , 10 ) ;
+ Text = "S~chritte" ;
+ Text [ ENGLISH ] = "S~teps" ;
+ Text [ norwegian ] = "S~teps" ;
+ Text [ italian ] = "Pa~ssaggi" ;
+ Text [ portuguese_brazilian ] = "S~teps" ;
+ Text [ portuguese ] = "~Passos" ;
+ Text [ finnish ] = "S~teps" ;
+ Text [ danish ] = "Trin" ;
+ Text [ french ] = "P~as" ;
+ Text [ swedish ] = "S~teg" ;
+ Text [ dutch ] = "S~tappen" ;
+ Text [ spanish ] = "~Pasos" ;
+ Text [ ENGLISH_US ] = "~Steps" ;
+ Text[ chinese_simplified ] = "µü´ú²½Êý(~S)";
+ Text[ russian ] = "Øàãè";
+ Text[ polish ] = "Kroki";
+ Text[ japanese ] = "‰ñ”(~S)";
+ Text[ chinese_traditional ] = "­¡¥N¨B¼Æ(~S)";
+ Text[ arabic ] = "ÇáÎØæÇÊ";
+ Text[ greek ] = "ÂÞìáôá";
+ Text[ korean ] = "´Ü°è(~S)";
+ Text[ turkish ] = "Basa~mak";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_EPS
+ {
+ Pos = MAP_APPFONT ( 20 , 44 ) ;
+ Size = MAP_APPFONT ( 52 , 20 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Minimaler Änderungs~wert : Minimaler Žnderungs~wert */
+ Text = "Minimaler Änderungs~wert" ;
+ Text [ ENGLISH ] = "Minimum Chan~ge" ;
+ Text [ ENGLISH_US ] = "~Minimum Change" ;
+ Text [ dutch ] = "~Min. veranderingswaarde" ;
+ Text [ italian ] = "Scarto consentito" ;
+ Text [ spanish ] = "~Alteración mínima" ;
+ Text [ french ] = "~Valeur de changement min." ;
+ Text [ swedish ] = "Minsta ändrings~värde" ;
+ Text [ danish ] = "Minimal ændringsværdi" ;
+ WordBreak = TRUE ;
+ Text [ portuguese_brazilian ] = "Minimaler Änderungs~wert" ;
+ Text [ portuguese ] = "~Valor de alteração mínimo" ;
+ Text[ chinese_simplified ] = "×îСƫ²îÖµ(~M)";
+ Text[ russian ] = "Ìèíèìàëüíîå çíà÷åíèå èçìåíåíèÿ";
+ Text[ polish ] = "WartoϾ minimalnej zmiany";
+ Text[ japanese ] = "Ŭ‚Ì•ÏX’l(~M)";
+ Text[ chinese_traditional ] = "³Ì¤p°¾®t­È(~M)";
+ Text[ arabic ] = "ÞíãÉ ÇáÊÛííÑ ÇáÏäíÇ";
+ Text[ greek ] = "ÅëÜ÷éóôç ôéìÞ áëëáãÞò";
+ Text[ korean ] = "ÃÖ¼Ò º¯°æ(~M)";
+ Text[ turkish ] = "Asgari deðiþi~klik";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField ED_STEPS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 74 , 27 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Minimum = 1 ;
+ Maximum = 1000 ;
+ Left = TRUE ;
+ };
+ Edit ED_EPS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 74 , 43 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ };
+ GroupBox GB_ZREFS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 115 , 77 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zirkuläre Referenzen : Zirkulõre Referenzen */
+ Text = "Zirkuläre Referenzen" ;
+ Text [ ENGLISH ] = "~Circular References" ;
+ Text [ norwegian ] = "~Circular References" ;
+ Text [ italian ] = "Riferimenti ~circolari" ;
+ Text [ portuguese_brazilian ] = "~Circular References" ;
+ Text [ portuguese ] = "~Referência iteractivas" ;
+ Text [ finnish ] = "~Circular References" ;
+ Text [ danish ] = "Cirkulære referencer" ;
+ Text [ french ] = "Références circulaires" ;
+ Text [ swedish ] = "Cirkulära referenser" ;
+ Text [ dutch ] = "Cirkelverwijzingen" ;
+ Text [ spanish ] = "Referencias circulares" ;
+ Text [ ENGLISH_US ] = "Iterative references" ;
+ Text[ chinese_simplified ] = "·´¸´ÒýÓÃ";
+ Text[ russian ] = "Öèêëè÷åñêèå ññûëêè";
+ Text[ polish ] = "Odwo³ania iteracyjne";
+ Text[ japanese ] = "ŽüŠúŽQÆ";
+ Text[ chinese_traditional ] = "¤ÏÎ`°Ñ·Ó";
+ Text[ arabic ] = "ãÑÇÌÚ ÊßÑÇÑíÉ";
+ Text[ greek ] = "ÊõêëéêÝò áíáöïñÝò";
+ Text[ korean ] = "¹Ýº¹ ÂüÁ¶";
+ Text[ turkish ] = "Döngüsel referans";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DATESTD
+ {
+ Pos = MAP_APPFONT ( 132 , 14 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ QuickHelpText = "Wert 0 entspricht dem 30.12.1899" ;
+ QuickHelpText [ ENGLISH ] = "Value 0 yields 30.12.1899" ;
+ Text = "30.12.1899 ( ~Standard )" ;
+ Text [ ENGLISH ] = "St~andard" ;
+ Text [ norwegian ] = "St~andard" ;
+ Text [ italian ] = "30/12/1899 (~Standard )" ;
+ Text [ portuguese_brazilian ] = "P~adrão" ;
+ Text [ portuguese ] = "12/30/1899 (~padrão)" ;
+ Text [ finnish ] = "St~andard" ;
+ Text [ danish ] = "30-12-1899 ( Standard )" ;
+ Text [ french ] = "30.12.1899 (~par défaut)" ;
+ Text [ swedish ] = "1899-12-30 ( ~Standard )" ;
+ Text [ dutch ] = "30.12.1899 ( ~Standaard )" ;
+ Text [ spanish ] = "30.12.1899 (~Estándar)" ;
+ Text [ ENGLISH_US ] = "12/30/1899 (Standa~rd)" ;
+ QuickHelpText [ english_us ] = "0 corresponds to 12/30/1899" ;
+ QuickHelpText [ dutch ] = "0 komt overeen met 30.12.1899" ;
+ QuickHelpText [ portuguese ] = "0 corresponde a 12/30/1899" ;
+ QuickHelpText [ swedish ] = "Värdet 0 motsvarar 1899-12-30" ;
+ QuickHelpText [ spanish ] = "El valor 0 corresponde al 30.12.1899" ;
+ Text[ chinese_simplified ] = "30.12.1899 ±ê×¼(~S)";
+ Text[ russian ] = "30.12.1899 ( ~ñòàíäàðò )";
+ Text[ polish ] = "30.12.1899 ( Standard )";
+ Text[ japanese ] = "12.30.1899(Standard)(~S)";
+ Text[ chinese_traditional ] = "30.12.1899 ¼Ð·Ç(~S)";
+ Text[ arabic ] = "12/30/1899 (ÞíÇÓí)";
+ QuickHelpText[ russian ] = "Çíà÷åíèå 0 ñîîòâåòñòâóåò 30.12.1899";
+ QuickHelpText[ french ] = "La valeur zéro correspond au 30.12.1899";
+ QuickHelpText[ polish ] = "WartoϾ 0 odpowiada 30.12.1899";
+ QuickHelpText[ japanese ] = "0’l‚Í30.12.1899‚É‘Š“–";
+ QuickHelpText[ chinese_simplified ] = "0 ±íʾ 12/30/1899";
+ QuickHelpText[ chinese_traditional ] = "0 ±íʾ 12/30/1899";
+ QuickHelpText[ arabic ] = "0 corresponds to 12/30/1899";
+ QuickHelpText[ italian ] = "Il valore 0 corrisponde a 30/12/1899";
+ Text[ greek ] = "30/12/1899 (ÐñïåðéëïãÞ)";
+ Text[ korean ] = "12/30/1899 (~Ç¥ÁØ)";
+ QuickHelpText[ greek ] = "ÔéìÞ 0 áíôéóôïé÷åß óôçí ôéìÞ 30/12/1899";
+ QuickHelpText[ korean ] = "0 corresponds to 12/30/1899";
+ Text[ turkish ] = "30.12.1899 ( ~Standart )";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DATESC10
+ {
+ Pos = MAP_APPFONT ( 132 , 27 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ QuickHelpText = "Wert 0 entspricht dem 01.01.1900" ;
+ QuickHelpText [ ENGLISH ] = "Value 0 yields 01.01.1900" ;
+ /* ### ACHTUNG: Neuer Text in Resource? 01.01.1900 ( Star~Calc 1.0 ) : StarCa~lc 1.0 */
+ Text = "01.01.1900 ( Star~Calc 1.0 )" ;
+ Text [ ENGLISH ] = "StarCa~lc 1.0" ;
+ Text [ norwegian ] = "StarCa~lc 1.0" ;
+ Text [ italian ] = "01/01/1900 (Star~Calc 1.0)" ;
+ Text [ portuguese_brazilian ] = "StarCa~lc 1.0" ;
+ Text [ portuguese ] = "01/01/1900 ( Star~Calc 1.0 )" ;
+ Text [ finnish ] = "StarCa~lc 1.0" ;
+ Text [ danish ] = "01-01-1900 ( StarOffice Calc 1.0 )" ;
+ Text [ french ] = "01.01.1900 ( Star~Calc 1.0 )" ;
+ Text [ swedish ] = "1900-01-01 ( Star~Calc 1.0 )" ;
+ Text [ dutch ] = "01.01.1900 ( Star~Calc 1.0 )" ;
+ Text [ spanish ] = "01.01.1900 (Star~Calc 1.0)" ;
+ Text [ ENGLISH_US ] = "01/01/1900 (Star~Calc 1.0)" ;
+ QuickHelpText [ english_us ] = "0 corresponds to 01/01/1900" ;
+ QuickHelpText [ dutch ] = "0 komt overeen met 01.01.1900" ;
+ QuickHelpText [ portuguese ] = "0 corresponde a 01/01/1900" ;
+ QuickHelpText [ swedish ] = "Värdet 0 motsvarar 1900-01-01" ;
+ Text[ chinese_simplified ] = "01.01.1900 ( Star~Calc 1.0 )";
+ Text[ russian ] = "01.01.1900 ( Star~Calc 1.0 )";
+ Text[ polish ] = "01.01.1900 ( StarOffice Calc 1.0 )";
+ Text[ japanese ] = "01.01.1900 (StarOffice Calc 1.0)(~C)";
+ Text[ chinese_traditional ] = "01.01.1900 ( Star~Calc 1.0 )";
+ Text[ arabic ] = "01/01/1900 ( Star~Calc 1.0)";
+ QuickHelpText[ russian ] = "Çíà÷åíèå 0 ñîîòâåòñòâóåò 01.01.1900";
+ QuickHelpText[ french ] = "La valeur zéro correspond au 01.01.1900";
+ QuickHelpText[ polish ] = "WartoϾ 0 odpowiada 01.01.1900";
+ QuickHelpText[ japanese ] = "0’l‚Í01.01.1900‚É‘Š“–";
+ QuickHelpText[ chinese_simplified ] = "0 ±íʾ 01/01/1900";
+ QuickHelpText[ chinese_traditional ] = "0 ±íʾ 01/01/1900";
+ QuickHelpText[ arabic ] = "0 corresponds to 01/01/1900";
+ QuickHelpText[ spanish ] = "El valor 0 corresponde al 01.01.1900";
+ QuickHelpText[ italian ] = "Il valore 0 corrisponde a 01/01/1900";
+ Text[ greek ] = "01/01/1900 (Star~Calc 1.0)";
+ Text[ korean ] = "01/01/1900 (Star~Calc 1.0)";
+ QuickHelpText[ greek ] = "ÔéìÞ 0 áíôéóôïé÷åß óôçí ôéìÞ 01/01/1900";
+ QuickHelpText[ korean ] = "0 corresponds to 01/01/1900";
+ Text[ turkish ] = "01.01.1900 ( Star~Calc 1.0 )";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DATE1904
+ {
+ Pos = MAP_APPFONT ( 132 , 40 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ QuickHelpText = "Wert 0 entspricht dem 01.01.1904" ;
+ QuickHelpText [ ENGLISH ] = "Value 0 yields 01.01.1904" ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~01.01.1904 : ~1904 */
+ Text = "~01.01.1904" ;
+ Text [ ENGLISH ] = "~1904" ;
+ Text [ norwegian ] = "~1904" ;
+ Text [ italian ] = "~01/01/1904" ;
+ Text [ portuguese_brazilian ] = "~1904" ;
+ Text [ portuguese ] = "~01/01/1904" ;
+ Text [ finnish ] = "~1904" ;
+ Text [ danish ] = "01-01-1904" ;
+ Text [ french ] = "~01.01.1904" ;
+ Text [ swedish ] = "~1904-01-01" ;
+ Text [ dutch ] = "~01.01.1904" ;
+ Text [ spanish ] = "~01.01.1904" ;
+ Text [ ENGLISH_US ] = "~01/01/1904" ;
+ QuickHelpText [ english_us ] = "0 corresponds to 01/01/1904" ;
+ QuickHelpText [ italian ] = "Il valore 0 corrisponde a 01/01/1904" ;
+ QuickHelpText [ dutch ] = "0 komt overeen met 01.01.1904" ;
+ QuickHelpText [ portuguese ] = "0 corresponde a 01/01/1904" ;
+ QuickHelpText [ swedish ] = "Värde 0 motsvarar 1904-01-01" ;
+ Text[ chinese_simplified ] = "01.01.1904";
+ Text[ russian ] = "~01.01.1904";
+ Text[ polish ] = "01.01.1904";
+ Text[ japanese ] = "01.01.1904";
+ Text[ chinese_traditional ] = "~01.01.1904";
+ Text[ arabic ] = "01/01/1904~";
+ QuickHelpText[ russian ] = "Çíà÷åíèå 0 ñîîòâåòñòâóåò 01.01.1904";
+ QuickHelpText[ french ] = "La valeur zéro correspond au 01.01.1904";
+ QuickHelpText[ polish ] = "WartoϾ 0 odpowiada 01.01.1904";
+ QuickHelpText[ japanese ] = "0’l‚Í01.01.1904‚É‘Š“–";
+ QuickHelpText[ chinese_simplified ] = "0 ±íʾ 01/01/1904";
+ QuickHelpText[ chinese_traditional ] = "0 ±íʾ 01/01/1904";
+ QuickHelpText[ arabic ] = "0 corresponds to 01/01/1904";
+ QuickHelpText[ spanish ] = "El valor 0 corresponde al 01.01.1904";
+ Text[ greek ] = "~01/01/1904";
+ Text[ korean ] = "~01/01/1904";
+ QuickHelpText[ greek ] = "ÔéìÞ 0 áíôéóôïé÷åß óôéò 01/01/1904";
+ QuickHelpText[ korean ] = "0 corresponds to 01/01/1904";
+ Text[ turkish ] = "~01.01.1904";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_DATE
+ {
+ Pos = MAP_APPFONT ( 126 , 3 ) ;
+ Size = MAP_APPFONT ( 128 , 77 ) ;
+ Text = "Datum" ;
+ Text [ ENGLISH ] = "Date" ;
+ Text [ norwegian ] = "Date" ;
+ Text [ italian ] = "Data" ;
+ Text [ portuguese_brazilian ] = "Data" ;
+ Text [ portuguese ] = "Data" ;
+ Text [ finnish ] = "Päiväys" ;
+ Text [ danish ] = "Dato" ;
+ Text [ french ] = "Date" ;
+ Text [ swedish ] = "Datum" ;
+ Text [ dutch ] = "Datum" ;
+ Text [ spanish ] = "Fecha" ;
+ Text [ ENGLISH_US ] = "Date" ;
+ Text[ chinese_simplified ] = "ÈÕÆÚ";
+ Text[ russian ] = "Äàòà";
+ Text[ polish ] = "Data";
+ Text[ japanese ] = "“ú•t";
+ Text[ chinese_traditional ] = "¤é´Á";
+ Text[ arabic ] = "ÇáÊÇÑíÎ";
+ Text[ greek ] = "Çìåñïìçíßá";
+ Text[ korean ] = "ÀÏÀÚ";
+ Text[ turkish ] = "Tarih";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_PREC
+ {
+ Pos = MAP_APPFONT ( 160 , 86 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Text = "Nach~kommastellen" ;
+ Text [ ENGLISH ] = "~Precision" ;
+ Text [ norwegian ] = "~Precision" ;
+ Text [ italian ] = "Posizioni decimali" ;
+ Text [ portuguese_brazilian ] = "~Precisão" ;
+ Text [ portuguese ] = "~Casas decimais" ;
+ Text [ finnish ] = "~Tarkkuus" ;
+ Text [ danish ] = "Antal decimaler" ;
+ Text [ french ] = "~Décimales" ;
+ Text [ swedish ] = "~Decimalpositioner" ;
+ Text [ dutch ] = "~Aantal decimalen" ;
+ Text [ spanish ] = "~Decimales" ;
+ Text [ ENGLISH_US ] = "~Decimal places" ;
+ Right = TRUE ;
+ Text[ chinese_simplified ] = "СÊýµãºóµÄλÊý(~D)";
+ Text[ russian ] = "Äðîáíàÿ ÷àñòü";
+ Text[ polish ] = "Miejsca po przecinku";
+ Text[ japanese ] = "¬”“_ˆÈ‰º‚ÌŒ…”(~D)";
+ Text[ chinese_traditional ] = "¤p¼ÆÂI¤§«áªº¦ì¼Æ(~D)";
+ Text[ arabic ] = "ÇáãäÇÒá ÇáÚÔÑíÉ";
+ Text[ greek ] = "ÄåêáäéêÜ øçößá";
+ Text[ korean ] = "¼Ò¼öÁ¡ ÀÌÇÏ ÀÚ¸®(~D)";
+ Text[ turkish ] = "~Ondalýk hane";
+ Text[ language_user1 ] = " ";
+ };
+ NumericField ED_PREC
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 229 , 85 ) ;
+ Size = MAP_APPFONT ( 25 , 12 ) ;
+ Maximum = 20 ;
+ Spin = TRUE ;
+ };
+ CheckBox BTN_CASE
+ {
+ Pos = MAP_APPFONT ( 6 , 84 ) ;
+ Size = MAP_APPFONT ( 120 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Groß-/Kleinschreibung beachten : ~Gro˜-/Kleinschreibung beachten */
+ Text = "~Groß-/Kleinschreibung beachten" ;
+ Text [ ENGLISH ] = "~Case sensitive" ;
+ Text [ norwegian ] = "~Case sensitive" ;
+ Text [ italian ] = "Maiuscole/minuscole" ;
+ Text [ portuguese_brazilian ] = "~Sensível a maiúsculas/minúsculas" ;
+ Text [ portuguese ] = "~Maiúsculas/Minúsculas" ;
+ Text [ french ] = "~Respecter la casse" ;
+ Text [ dutch ] = "~Hoofd-/kleine letters belangrijk" ;
+ Text [ spanish ] = "~Mayúsculas/minúsculas" ;
+ Text [ danish ] = "Forskel på store og små bogstaver" ;
+ Text [ swedish ] = "Observera versaler/~gemener" ;
+ Text [ finnish ] = "~Case sensitive" ;
+ Text [ english_us ] = "Case se~nsitive" ;
+ Text[ chinese_simplified ] = "Çø·Ö´óСд(~C)";
+ Text[ russian ] = "Ó÷èòûâàòü ðåãèñòð";
+ Text[ polish ] = "Uwzglêdnij du¿e i ma³e litery";
+ Text[ japanese ] = "‘啶Žš/¬•¶Žš‚ð‹æ•Ê(~C)";
+ Text[ chinese_traditional ] = "°Ï¤À¤j¤p¼g(~C)";
+ Text[ arabic ] = "ãÑÇÚÇÉ ÇáÃÍÑÝ ÇáßÈíÑÉ/ÇáÕÛíÑÉ";
+ Text[ greek ] = "Óõìöùíßá ðåæþí-êåöáëáßùí";
+ Text[ korean ] = "´ë/¼Ò ¹®ÀÚ ±¸ºÐ(~N)";
+ Text[ turkish ] = "~Büyük/küçük harf duyarlý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_CALC
+ {
+ Pos = MAP_APPFONT ( 6 , 97 ) ;
+ Size = MAP_APPFONT ( 120 , 10 ) ;
+ Text = "Gena~uigkeit wie angezeigt" ;
+ Text [ ENGLISH ] = "Calc~ulate as precise as shown" ;
+ Text [ norwegian ] = "Calc~ulate as precise as shown" ;
+ Text [ italian ] = "Precisione come mostrato" ;
+ Text [ portuguese_brazilian ] = "Calc~ulate as precise as shown" ;
+ Text [ portuguese ] = "~Precisão como mostrada" ;
+ Text [ french ] = "Pré~cision comme affiché" ;
+ Text [ dutch ] = "~Precisie zoals weergegeven" ;
+ Text [ spanish ] = "Precisión ~como mostrada" ;
+ Text [ danish ] = "Præsision som vist" ;
+ Text [ swedish ] = "~Precision som visat" ;
+ Text [ finnish ] = "Calc~ulate as precise as shown" ;
+ Text [ english_us ] = "~Precision as shown" ;
+ Text[ chinese_simplified ] = "ÏÔʾµÄ¾«È·¶È(~P)";
+ Text[ russian ] = "Òî÷íîñòü êàê íà ýêðàíå";
+ Text[ polish ] = "Dok³adnoœæ tak jak pokazano";
+ Text[ japanese ] = "•\\Ž¦‚³‚ꂽ”’l‚ÅŒvŽZ(~P)";
+ Text[ chinese_traditional ] = "Åã¥Üªººë½T«×(~P)";
+ Text[ arabic ] = "ÇáÏÞÉ ßãÇ åæ ãæÖÍ";
+ Text[ greek ] = "Áêñß~âåéá üðùò ïñßóôçêå";
+ Text[ korean ] = "º¸¿©Áö´Â Á¤¹Ðµµ(~P)";
+ Text[ turkish ] = "~Doðruluk gösterildiði gibi";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_MATCH
+ {
+ Pos = MAP_APPFONT ( 6 , 110 ) ;
+ Size = MAP_APPFONT ( 240 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Suchkri~terien = und <> müssen auf ganze Zellen zutreffen : Suchkri~terien = und <> m³ssen auf ganze Zellen zutreffen */
+ Text = "Suchkri~terien = und <> müssen auf ganze Zellen zutreffen" ;
+ Text [ ENGLISH ] = "Search cri~terias = and <> must match entire cells" ;
+ Text [ english_us ] = "Search criteria = and <> must apply to ~whole cells" ;
+ Text [ italian ] = "I criteri di ricerca = ed <> devono riferirsi a celle intere" ;
+ Text [ spanish ] = "Criterios de ~búsqueda = y <> deben coincidir con celdas completas" ;
+ Text [ french ] = "Critères de recherche = et <> doivent correspondre à des lignes entières" ;
+ Text [ dutch ] = "~Zoekcriteria = en <> moeten op hele cellen toepasbaar zijn" ;
+ Text [ swedish ] = "Sö~kkriterier = och <> måste matcha hela celler" ;
+ Text [ danish ] = "Søgekriterier = og <> skal svare til hele celler" ;
+ Text [ portuguese_brazilian ] = "Suchkri~terien = und <> müssen auf ganze Zellen zutreffen" ;
+ Text [ portuguese ] = "~Critérios de localização = e <> devem ajustar-se às células inteiras" ;
+ Text[ chinese_simplified ] = "ËÑÑ°·¶Î§ = ºÍ <> ±ØÐëÊÊÓÃÈ«²¿µÄµ¥Ôª¸ñ(~W)";
+ Text[ russian ] = "Óñëîâèÿ ïîèñêà = und <> äîëæíû ðàñïðîñòðàíÿòüñÿ íà âñþ ÿ÷åéêó";
+ Text[ polish ] = "Kryt~eria wyszukiwania = i <> musz¹ odnosiæ siê do ca³ych komórek";
+ Text[ japanese ] = "ŒŸõðŒ=‚Æ<>‚Í‚·‚ׂĂ̾قɓK—p(~W)";
+ Text[ chinese_traditional ] = "´M§ä½d³ò = ©M <> ¥²¶·¾A¥Î¥þ³¡ªºÀx¦s®æ(~W)";
+ Text[ arabic ] = "íÌÈ Ãä ÊäØÈÞ ãÚÇííÑ ÇáÈÍË = æ <> Úáì ÎáÇíÇ ßÇãáÉ";
+ Text[ greek ] = "Ôá êñéôÞñéá áíáæÞôçóçò = êáé <> ðñÝðåé íá ôáéñéÜæïõí ìå ïëüêëçñá êåëéÜ";
+ Text[ korean ] = "ã±â ±âÁØÀÎ = °ú <> Àº Àüü ¼¿¿¡ Àû¿ëµÇ¾î¾ß¸¸ ÇÕ´Ï´Ù.(~W)";
+ Text[ turkish ] = "Ara ölçütleri = ve <> tüm hücreler ile eþleþmelidir";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_LOOKUP
+ {
+ Pos = MAP_APPFONT ( 6 , 123 ) ;
+ Size = MAP_APPFONT ( 240 , 10 ) ;
+ Text = "Spalten-/Zeilen~beschriftungen automatisch suchen" ;
+ Text [ ENGLISH ] = "Search column and row ~labels automatically" ;
+ Text [ english_us ] = "~Automatically find column and row labels " ;
+ Text [ italian ] = "Cerca automaticamente diciture righe/colonne" ;
+ Text [ spanish ] = "Buscar a~utomáticamente etiquetas de filas/columnas" ;
+ Text [ french ] = "Rechercher automatiquement les é~tiquettes de colonnes et lignes" ;
+ Text [ dutch ] = "~Kolom-/rijkoppen automatisch zoeken" ;
+ Text [ swedish ] = "Sök kolumn-/rad~etiketter automatiskt" ;
+ Text [ danish ] = "Søg kolonne-/rækkeetiketter automatisk" ;
+ Text [ portuguese_brazilian ] = "Spalten-/Zeilen~beschriftungen automagisch suchen" ;
+ Text [ portuguese ] = "Localizar rótulos de colunas e linhas ~automaticamente" ;
+ Text[ chinese_simplified ] = "×Ô¶¯ËÑÑ°ÁÐÐÐÊý¾Ý±êÖ¾(~A)";
+ Text[ russian ] = "Àâòîìàòè÷åñêèé ïîèñê íàçâàíèé ñòîëáöîâ è ñòðîê";
+ Text[ polish ] = "Szukaj automatycznie etykiet kolumn i wierszy";
+ Text[ japanese ] = "s‚Æ—ñ‚Ì×ÍÞÙ‚ðŽ©“®“I‚ÉŒŸõ(~A)";
+ Text[ chinese_traditional ] = "¦Û°Ê·j´M¦C/Äæ¼ÐÃD(~A)";
+ Text[ arabic ] = "ÇáÈÍË Úä ÚäÇæíä ÇáÃÚãÏÉ æÇáÕÝæÝ ÊáÞÇÆíÇð";
+ Text[ greek ] = "Áõôüìáôç áíáæÞôçóç åðéãñáöþí óôçëþí/ãñáììþí";
+ Text[ korean ] = "¿­ °ú ÇàÀÇ ¶óº§ ÀÚµ¿À¸·Î ã±â(~A)";
+ Text[ turkish ] = "Sütun/satýr baþlýklarýný otomatik olarak ara";
+ Text[ language_user1 ] = " ";
+ };
+};
+
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+
+TabPage RID_SCPAGE_USERLISTS
+{
+ HelpId = HID_SCPAGE_USERLISTS ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ FixedText FT_LISTS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "L~isten" ;
+ Text [ ENGLISH ] = "L~ists" ;
+ Text [ norwegian ] = "L~ists" ;
+ Text [ italian ] = "E~lenchi" ;
+ Text [ portuguese_brazilian ] = "L~istas" ;
+ Text [ portuguese ] = "L~istas" ;
+ Text [ finnish ] = "L~uettelot" ;
+ Text [ danish ] = "Lister" ;
+ Text [ french ] = "L~istes" ;
+ Text [ swedish ] = "L~istor" ;
+ Text [ dutch ] = "L~ijsten" ;
+ Text [ spanish ] = "~Listas" ;
+ Text [ english_us ] = "~Lists" ;
+ Text[ chinese_simplified ] = "Áе¥(~L)";
+ Text[ russian ] = "Ñïèñêè";
+ Text[ polish ] = "Listy";
+ Text[ japanese ] = "ؽÄ(~L)";
+ Text[ chinese_traditional ] = "²M³æ(~L)";
+ Text[ arabic ] = "ÇáÞæÇÆã";
+ Text[ greek ] = "Ëßóôåò";
+ Text[ korean ] = "¸®½ºÆ®(~L)";
+ Text[ turkish ] = "Lis~te";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_LISTS
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 15 ) ;
+ Size = MAP_APPFONT ( 94 , 98 ) ;
+ };
+ FixedText FT_ENTRIES
+ {
+ Pos = MAP_APPFONT ( 106 , 3 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ein~träge : Ein~trõge */
+ Text = "Ein~träge" ;
+ Text [ ENGLISH ] = "En~tries" ;
+ Text [ norwegian ] = "En~tries" ;
+ Text [ italian ] = "Vo~ci" ;
+ Text [ portuguese_brazilian ] = "En~tradas" ;
+ Text [ portuguese ] = "En~tradas" ;
+ Text [ finnish ] = "~Syötteet" ;
+ Text [ danish ] = "Indsættelser" ;
+ Text [ french ] = "En~trées" ;
+ Text [ swedish ] = "Pos~ter" ;
+ Text [ dutch ] = "~Items" ;
+ Text [ spanish ] = "En~tradas" ;
+ Text [ english_us ] = "~Entries" ;
+ Text[ chinese_simplified ] = "ÌõÄ¿(~E)";
+ Text[ russian ] = "Çàïèñè";
+ Text[ polish ] = "Wpisy";
+ Text[ japanese ] = "ؽẰ–Ú(~E)";
+ Text[ chinese_traditional ] = "¶µ¥Ø(~E)";
+ Text[ arabic ] = "ÅÏÎÇáÇÊ";
+ Text[ greek ] = "ÅããñáöÝò";
+ Text[ korean ] = "Ç׸ñ(~E)";
+ Text[ turkish ] = "Gir~iþ";
+ Text[ language_user1 ] = " ";
+ };
+ MultiLineEdit ED_ENTRIES
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 106 , 15 ) ;
+ Size = MAP_APPFONT ( 94 , 98 ) ;
+ VScroll = TRUE ;
+ IgnoreTab = TRUE ;
+ };
+ Edit ED_COPYFROM
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 117 ) ;
+ Size = MAP_APPFONT ( 130 , 12 ) ;
+ };
+ FixedText FT_COPYFROM
+ {
+ Pos = MAP_APPFONT ( 6 , 118 ) ;
+ Size = MAP_APPFONT ( 62 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Liste kopieren ~aus : Liste kopieren aus */
+ Text = "Liste kopieren ~aus" ;
+ Text [ ENGLISH ] = "Copy list from" ;
+ Text [ norwegian ] = "Copy list from" ;
+ Text [ italian ] = "Copia elenco da" ;
+ Text [ portuguese_brazilian ] = "Copiar lista de" ;
+ Text [ portuguese ] = "Copiar lista ~de" ;
+ Text [ finnish ] = "Kopioidun luettelon lähde" ;
+ Text [ danish ] = "Kopier liste fra" ;
+ Text [ french ] = "Copier la liste ~à partir de" ;
+ Text [ swedish ] = "Kopier~a lista från" ;
+ Text [ dutch ] = "~Lijst kopiëren van" ;
+ Text [ spanish ] = "C~opiar lista de" ;
+ Text [ english_us ] = "Copy list ~from" ;
+ Text[ chinese_simplified ] = "¸´ÖÆÁе¥´Ó(~F)";
+ Text[ russian ] = "Êîïèðîâàòü ñïèñîê èç";
+ Text[ polish ] = "Kopiuj listê z";
+ Text[ japanese ] = "ؽĂ̺Ëß°Œ³(~F)";
+ Text[ chinese_traditional ] = "½Æ»s²M³æ±q(~F)";
+ Text[ arabic ] = "äÓÎ ÇáÞÇÆãÉ ãä";
+ Text[ greek ] = "ÁíôéãñáöÞ ëßóôáò áðü";
+ Text[ korean ] = "¿¡¼­ ¸®½ºÆ® º¹»ç(~F)";
+ Text[ turkish ] = "Veri kayna~ðý";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BTN_NEW
+ {
+ Pos = MAP_APPFONT ( 208 , 15 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ Text = "~Neu" ;
+ Text [ ENGLISH ] = "~New" ;
+ Text [ norwegian ] = "~New" ;
+ Text [ italian ] = "~Nuovo" ;
+ Text [ portuguese_brazilian ] = "~Novo" ;
+ Text [ portuguese ] = "~Novo" ;
+ Text [ finnish ] = "~Uusi" ;
+ Text [ danish ] = "Ny" ;
+ Text [ french ] = "~Nouveau" ;
+ Text [ swedish ] = "~Nytt" ;
+ Text [ dutch ] = "~Nieuw" ;
+ Text [ spanish ] = "~Nuevo" ;
+ Text [ english_us ] = "~New" ;
+ Text[ chinese_simplified ] = "н¨(~N)";
+ Text[ russian ] = "Ñîçä~àòü";
+ Text[ polish ] = "Nowy";
+ Text[ japanese ] = "V‹Kì¬(~N)";
+ Text[ chinese_traditional ] = "¶}±Ò·sÀÉ(~N)";
+ Text[ arabic ] = "ÌÏíÏ";
+ Text[ greek ] = "Äçìéïõñãßá";
+ Text[ korean ] = "»õ·Î(~N)";
+ Text[ turkish ] = "~Yeni";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BTN_ADD
+ {
+ Pos = MAP_APPFONT ( 208 , 35 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Hinzufügen : ~Hinzuf³gen */
+ Text = "~Hinzufügen" ;
+ Text [ ENGLISH ] = "~Add" ;
+ Text [ norwegian ] = "Leg~g til" ;
+ Text [ italian ] = "A~ggiungi" ;
+ Text [ portuguese_brazilian ] = "~Acrescentar" ;
+ Text [ portuguese ] = "~Adicionar" ;
+ Text [ finnish ] = "~Lisää" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "~Ajouter" ;
+ Text [ swedish ] = "~Lägg till" ;
+ Text [ dutch ] = "Toe~voegen" ;
+ Text [ spanish ] = "~Añadir" ;
+ Text [ english_us ] = "~Add" ;
+ Disable = TRUE ;
+ Text[ chinese_simplified ] = "ÐÂÔö(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "’ljÁ(~A)";
+ Text[ chinese_traditional ] = "·s¼W(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ";
+ Text[ greek ] = "ÐñïóèÞêç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BTN_REMOVE
+ {
+ Pos = MAP_APPFONT ( 208 , 52 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen : ~L÷schen */
+ Text = "~Löschen" ;
+ Text [ ENGLISH ] = "Remo~ve" ;
+ Text [ norwegian ] = "Remo~ve" ;
+ Text [ italian ] = "Elimina" ;
+ Text [ portuguese_brazilian ] = "Remo~ver" ;
+ Text [ portuguese ] = "Remo~ver" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "~Wissen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Delete" ;
+ Text[ chinese_simplified ] = "ɾ³ý(~V)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~V)";
+ Text[ chinese_traditional ] = "§R°£(~V)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "Á¦°Å(~V)";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton BTN_COPY
+ {
+ Pos = MAP_APPFONT ( 208 , 116 ) ;
+ Size = MAP_APPFONT ( 45 , 14 ) ;
+ Text = "~Kopieren" ;
+ Text [ ENGLISH ] = "~Copy" ;
+ Text [ norwegian ] = "~Kopier" ;
+ Text [ italian ] = "Copia" ;
+ Text [ portuguese_brazilian ] = "~Copiar" ;
+ Text [ portuguese ] = "~Copiar" ;
+ Text [ finnish ] = "~Kopioi" ;
+ Text [ danish ] = "Kopier" ;
+ Text [ french ] = "~Copier" ;
+ Text [ swedish ] = "~Kopiera" ;
+ Text [ dutch ] = "~Kopiëren" ;
+ Text [ spanish ] = "~Copiar" ;
+ Text [ english_us ] = "~Copy" ;
+ Text[ chinese_simplified ] = "¸´ÖÆ(~C)";
+ Text[ russian ] = "Êîïèðîâàòü";
+ Text[ polish ] = "Kopiuj";
+ Text[ japanese ] = "ºËß°(~C)";
+ Text[ chinese_traditional ] = "½Æ»s(~C)";
+ Text[ arabic ] = "äÓÎ";
+ Text[ greek ] = "ÁíôéãñáöÞ";
+ Text[ korean ] = "º¹»ç(~C)";
+ Text[ turkish ] = "~Kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_DISMISS
+ {
+ Text = "~Verwerfen" ;
+ Text [ ENGLISH ] = "~Dismiss" ;
+ Text [ english_us ] = "~Discard" ;
+ Text [ italian ] = "~Rigetta" ;
+ Text [ spanish ] = "~Rechazar" ;
+ Text [ french ] = "~Ignorer" ;
+ Text [ dutch ] = "~Verwerpen" ;
+ Text [ swedish ] = "~Avslå" ;
+ Text [ danish ] = "Forkast" ;
+ Text [ portuguese_brazilian ] = "~Verwerfen" ;
+ Text [ portuguese ] = "~Rejeitar" ;
+ Text[ chinese_simplified ] = "Çå³ý(~D)";
+ Text[ russian ] = "Îòêëîíèòü";
+ Text[ polish ] = "Odrzuæ";
+ Text[ japanese ] = "”jŠü(~D)";
+ Text[ chinese_traditional ] = "²M°£(~D)";
+ Text[ arabic ] = "ÑÝÖ";
+ Text[ greek ] = "Áðüññéøç";
+ Text[ korean ] = "¾Æ´Ï¿À(~D)";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_QUERYREMOVE
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Soll der Eintrag\n#\ngelöscht werden? : Soll der Eintrag\n#\ngel÷scht werden? */
+ Text = "Soll der Eintrag\n#\ngelöscht werden?" ;
+ Text [ ENGLISH ] = "Are you sure to remove\n#\nfrom entry list?" ;
+ Text [ norwegian ] = "Are you sure to remove\n#\nfrom entry list?" ;
+ Text [ italian ] = "Rimuovere la voce \n#\ndall'elenco?" ;
+ Text [ portuguese_brazilian ] = "Tem certeza que deseja remover\n#\nda lista de entradas?" ;
+ Text [ portuguese ] = "Eliminar a entrada \n#\n?" ;
+ Text [ finnish ] = "Haluatko varmasti poistaa\n#\nsyöteluettelosta?" ;
+ Text [ danish ] = "Er du sikker på, at du vil fjerne elementet\n#\n?" ;
+ Text [ french ] = "Êtes-vous sûr de vouloir supprimer l'entrée\n#\n ?" ;
+ Text [ swedish ] = "Skall posten\n#\nraderas?" ;
+ Text [ dutch ] = "Wilt u \n#\nverwijderen?" ;
+ Text [ spanish ] = "¿Desea eliminar la entrada\n\n#\\?" ;
+ Text [ english_us ] = "Should the entry\n#\nbe deleted?" ;
+ Text[ chinese_simplified ] = "ÄúҪɾ³ýÕâ¸öÌõÄ¿\n#£¿";
+ Text[ russian ] = "Óäàëèòü çàïèñü\n#\n?";
+ Text[ polish ] = "Czy ten wpis\n#\n ma byæ usuniêty?";
+ Text[ japanese ] = "€–Ú\n#\n‚ð휂µ‚Ü‚·‚©?";
+ Text[ chinese_traditional ] = "±z­n§R°£³o­Ó¶µ¥Ø\n# ¡H";
+ Text[ arabic ] = "åá ÊÑíÏ ÝÚáÇõ ÍÐÝ ÇáÅÏÑÇÌ \n#\n¿";
+ Text[ greek ] = "ÈÝëåôå ðñáãìáôéêÜ íá äéáãñáöåß ç åããñáöÞ\n#;";
+ Text[ korean ] = "Ç׸ñ\n#\nÀ» Áö¿ì½Ã°Ú½À´Ï±î?";
+ Text[ turkish ] = "\n#\ngiriþi silinsin mi?";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_COPYLIST
+ {
+ Text = "Liste kopieren" ;
+ Text [ ENGLISH ] = "Copy List" ;
+ Text [ dutch ] = "Lijst kopiëren" ;
+ Text [ english_us ] = "Copy List" ;
+ Text [ italian ] = "Copia lista" ;
+ Text [ spanish ] = "Copiar lista" ;
+ Text [ french ] = "Copier la liste" ;
+ Text [ swedish ] = "Kopiera lista" ;
+ Text [ danish ] = "Kopier liste" ;
+ Text [ portuguese_brazilian ] = "Liste kopieren" ;
+ Text [ portuguese ] = "Copiar lista" ;
+ Text[ chinese_simplified ] = "¸´ÖÆÁе¥";
+ Text[ russian ] = "Êîïèðîâàòü ñïèñîê";
+ Text[ polish ] = "Kopiuj listê";
+ Text[ japanese ] = "ؽĂðºËß°‚·‚é";
+ Text[ chinese_traditional ] = "½Æ»s²M³æ";
+ Text[ arabic ] = "äÓÎ ÇáÞÇÆãÉ";
+ Text[ greek ] = "ÁíôéãñáöÞ ëßóôáò";
+ Text[ korean ] = "¸®½ºÆ® º¹»ç";
+ Text[ turkish ] = "Listeyi kopyala";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_COPYFROM
+ {
+ Text = "Liste aus" ;
+ Text [ ENGLISH ] = "Copy from" ;
+ Text [ dutch ] = "Lijst van" ;
+ Text [ english_us ] = "List from" ;
+ Text [ italian ] = "Lista da" ;
+ Text [ spanish ] = "Lista de" ;
+ Text [ french ] = "Liste à partir de" ;
+ Text [ swedish ] = "Lista från" ;
+ Text [ danish ] = "Liste fra" ;
+ Text [ portuguese_brazilian ] = "Liste aus" ;
+ Text [ portuguese ] = "Lista de" ;
+ Text[ chinese_simplified ] = "Áе¥´Ó";
+ Text[ russian ] = "Ñïèñîê èç";
+ Text[ polish ] = "Lista z";
+ Text[ japanese ] = "ؽČ³";
+ Text[ chinese_traditional ] = "²M³æ±q";
+ Text[ arabic ] = "ÞÇÆãÉ ãä";
+ Text[ greek ] = "Ëßóôá áðü";
+ Text[ korean ] = "·ÎºÎÅÍ ¸®½ºÆ®";
+ Text[ turkish ] = "Liste kaynaðý";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_COPYERR
+ {
+ Text = "Zellen ohne einfachen Text wurden ignoriert." ;
+ Text [ ENGLISH ] = "Cells without simple text have been ignored. e" ;
+ Text [ dutch ] = "Cellen zonder eenvoudige tekst werden genegeerd" ;
+ Text [ english_us ] = "Cells without text have been ignored." ;
+ Text [ italian ] = "Le celle senza semplice testo sono state ignorate " ;
+ Text [ spanish ] = "Se ignoraron las celdas sin texto simple." ;
+ Text [ french ] = "Les cellules sans texte ont été ignorées." ;
+ Text [ swedish ] = "Celler utan enkel text har ignorerats." ;
+ Text [ danish ] = "Celler uden enkelt tekst blev ignoreret." ;
+ Text [ portuguese_brazilian ] = "Zellen ohne einfachen Text wurden ignoriert." ;
+ Text [ portuguese ] = "As células sem texto foram ignoradas." ;
+ Text[ chinese_simplified ] = "ºöÂÔ²»º¬ÎÄ×ֵĵ¥Ôª¸ñ¡£";
+ Text[ russian ] = "ß÷åéêè áåç îáû÷íîãî òåêñòà èãíîðèðóþòñÿ.";
+ Text[ polish ] = "Komórki bez tekstu zosta³y zignorowane.";
+ Text[ japanese ] = "÷½Ä‚Ì‚È‚¢¾Ù‚Í–³Ž‹‚³‚ê‚Ü‚µ‚½B";
+ Text[ chinese_traditional ] = "©¿²¤¤£§t¤å¦rªºÀx¦s®æ¡C";
+ Text[ arabic ] = "Êã ÊÌÇåá ÇáÎáÇíÇ ÇáÊí áÇ ÊÍÊæí Úáì äÕ ÈÓíØ.";
+ Text[ greek ] = "Ôá êåëéÜ ÷ùñßò áðëü êåßìåíï Ý÷ïõí ðáñáâëåèåß.";
+ Text[ korean ] = "ÅؽºÆ® ¾ø´Â ¼¿ ¹«½Ã";
+ Text[ turkish ] = "Metinsiz hücreler yok sayýldý.";
+ Text[ language_user1 ] = " ";
+ };
+};
+
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+
+TabPage RID_SCPAGE_CONTENT
+{
+ HelpId = HID_SCPAGE_CONTENT ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ GroupBox GB_DISPLAY
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 48 ) ;
+ Text = "Anzeigen" ;
+ Text [ ENGLISH ] = "Display" ;
+ Text [ norwegian ] = "Display" ;
+ Text [ italian ] = "Mostra" ;
+ Text [ portuguese_brazilian ] = "Display" ;
+ Text [ portuguese ] = "Ver" ;
+ Text [ finnish ] = "Display" ;
+ Text [ danish ] = "Vis" ;
+ Text [ french ] = "Afficher" ;
+ Text [ swedish ] = "Visa" ;
+ Text [ dutch ] = "Weergeven" ;
+ Text [ spanish ] = "Mostrar" ;
+ Text [ english_us ] = "Display" ;
+ Text[ chinese_simplified ] = "ÏÔʾ";
+ Text[ russian ] = "Ïîêàçàòü";
+ Text[ polish ] = "Poka¿";
+ Text[ japanese ] = "•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü";
+ Text[ arabic ] = "ÅÙåÇÑ";
+ Text[ greek ] = "ÅìöÜíéóç";
+ Text[ korean ] = "Ç¥½Ã";
+ Text[ turkish ] = "Görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FORMULA
+ {
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Formeln" ;
+ Text [ ENGLISH ] = "~Formulas" ;
+ Text [ norwegian ] = "~Formulas" ;
+ Text [ italian ] = "~Formula" ;
+ Text [ portuguese_brazilian ] = "~Fórmulas" ;
+ Text [ portuguese ] = "~Fórmulas" ;
+ Text [ finnish ] = "~Kaavat" ;
+ Text [ danish ] = "~Formler" ;
+ Text [ french ] = "~Formules" ;
+ Text [ swedish ] = "~Formler" ;
+ Text [ dutch ] = "~Formules" ;
+ Text [ spanish ] = "~Fórmulas" ;
+ Text [ english_us ] = "~Formulas" ;
+ Text[ chinese_simplified ] = "¹«Ê½(~F)";
+ Text[ russian ] = "Ôîðìóëû";
+ Text[ polish ] = "Formu³y";
+ Text[ japanese ] = "”Ž®(~F)";
+ Text[ chinese_traditional ] = "¤½¦¡(~F)";
+ Text[ arabic ] = "ÇáÕíÛ";
+ Text[ greek ] = "Ôýðïé";
+ Text[ korean ] = "¼ö½Ä(~F)";
+ Text[ turkish ] = "~Formül";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_NIL
+ {
+ Pos = MAP_APPFONT ( 12 , 25 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Nullwerte" ;
+ Text [ ENGLISH ] = "~Null values" ;
+ Text [ norwegian ] = "~Null values" ;
+ Text [ italian ] = "Valori zero" ;
+ Text [ portuguese_brazilian ] = "~Null values" ;
+ Text [ portuguese ] = "~Valores zero" ;
+ Text [ finnish ] = "~Null values" ;
+ Text [ danish ] = "Nulværdier" ;
+ Text [ french ] = "Valeurs ~zéro" ;
+ Text [ swedish ] = "~Nollvärden" ;
+ Text [ dutch ] = "~Nulwaarden" ;
+ Text [ spanish ] = "Valores ~cero" ;
+ Text [ english_us ] = "~Zero values" ;
+ Text[ chinese_simplified ] = "ÁãÖµ(~Z)";
+ Text[ russian ] = "Íóëåâûå çíà÷åíèÿ";
+ Text[ polish ] = "Wartoœci zerowe";
+ Text[ japanese ] = "¾ÞÛ’l(~Z)";
+ Text[ chinese_traditional ] = "¹s­È(~Z)";
+ Text[ arabic ] = "Þíã ÇáÕÝÑ";
+ Text[ greek ] = "ÌçäåíéêÝò ôéìÝò";
+ Text[ korean ] = "0 °ª(~Z)";
+ Text[ turkish ] = "~Sýfýr deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_ANNOT
+ {
+ Pos = MAP_APPFONT ( 12 , 38 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "Noti~zanzeiger" ;
+ Text [ ENGLISH ] = "Note Tag~s" ;
+ Text [ norwegian ] = "Note Tag~s" ;
+ Text [ italian ] = "Indica~zione note" ;
+ Text [ portuguese_brazilian ] = "Etiqueta~s de Notas" ;
+ Text [ portuguese ] = "~Indicação de anotações" ;
+ Text [ finnish ] = "Huomautus~merkit" ;
+ Text [ danish ] = "Noteindikator" ;
+ Text [ french ] = "Indicateur de ~notes" ;
+ Text [ swedish ] = "Antecknings~markör" ;
+ Text [ dutch ] = "Aant~ekeningenwijzer" ;
+ Text [ spanish ] = "I~ndicador de notas" ;
+ Text [ english_us ] = "~Note tags" ;
+ Text[ chinese_simplified ] = "±¸×¢±ê¼Ç(~N)";
+ Text[ russian ] = "Ìåòêà ïðèìå÷àíèÿ";
+ Text[ polish ] = "Zna~cznik notatek";
+ Text[ japanese ] = "ºÒÝÄ‚Ì“à—e(~N)";
+ Text[ chinese_traditional ] = "³Æµù¼Ð°O(~N)";
+ Text[ arabic ] = "ãõÈóíøöä ÇáãáÇÍÙÇÊ";
+ Text[ greek ] = "Äåßêôçò óçìåéþóåùí";
+ Text[ korean ] = "¸Þ¸ðű×(~N)";
+ Text[ turkish ] = "Not ~etiketi";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_VALUE
+ {
+ Pos = MAP_APPFONT ( 140 , 12 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "Werte her~vorheben" ;
+ Text [ ENGLISH ] = "Syntax highlighting" ;
+ Text [ norwegian ] = "Syntax highlighting" ;
+ Text [ italian ] = "Evidenzia valori" ;
+ Text [ portuguese_brazilian ] = "Destaque de sintaxe" ;
+ Text [ portuguese ] = "~Valores destacados" ;
+ Text [ finnish ] = "Syntaksin korostus" ;
+ Text [ danish ] = "Fremhæv værdier" ;
+ Text [ french ] = "~Mise en évidence des valeurs" ;
+ Text [ swedish ] = "Framhäv ~värden" ;
+ Text [ dutch ] = "~Waarden accentueren" ;
+ Text [ spanish ] = "D~estacar valores" ;
+ Text [ english_us ] = "~Value highlighting" ;
+ Text[ chinese_simplified ] = "Í»³öÏÔʾÊýÖµ(~H)";
+ Text[ russian ] = "Âûäåëèòü çíà÷åíèÿ";
+ Text[ polish ] = "Wyr~ó¿nianie wartoœci";
+ Text[ japanese ] = "’l‚Ì‹­’²•\\Ž¦(~H)";
+ Text[ chinese_traditional ] = "¬ð¥XÅã¥Ü¼Æ­È(~H)";
+ Text[ arabic ] = "ÊãííÒ ÇáÞíã";
+ Text[ greek ] = "ÅðéóÞìáíóç ôéìþí";
+ Text[ korean ] = "°ª ÇÏÀ϶óÀÌÆÃ(~V)";
+ Text[ turkish ] = "Deðerleri ~vurgula";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_ANCHOR
+ {
+ Pos = MAP_APPFONT ( 140 , 25 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Anker" ;
+ Text [ ENGLISH ] = "Anchor" ;
+ Text [ dutch ] = "~Anker" ;
+ Text [ english_us ] = "~Anchor" ;
+ Text [ swedish ] = "~Ankare" ;
+ Text [ danish ] = "Anker" ;
+ Text [ italian ] = "Ancoraggio" ;
+ Text [ spanish ] = "~Ancla" ;
+ Text [ french ] = "~Ancre" ;
+ Text [ portuguese ] = "~Âncora" ;
+ Text [ portuguese_brazilian ] = "Anker" ;
+ Text[ chinese_simplified ] = "񈬀(~A)";
+ Text[ russian ] = "Ïðèâÿçêà";
+ Text[ polish ] = "Kotwica";
+ Text[ japanese ] = "±Ý¶°(~A)";
+ Text[ chinese_traditional ] = "¼Ð¸¹(~A)";
+ Text[ arabic ] = "ãÑÓÇÉ";
+ Text[ greek ] = "Áãêýñùóç";
+ Text[ korean ] = "°íÁ¤(~A)";
+ Text[ turkish ] = "~Sabitleyici";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_CLIP
+ {
+ Pos = MAP_APPFONT ( 140 , 38 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Textüberlauf" ;
+ Text [ ENGLISH ] = "~Text overflow" ;
+ Text [ english_us ] = "~Text overflow" ;
+ Text [ portuguese_brazilian ] = "~Textüberlauf" ;
+ Text [ swedish ] = "Te~xtspill" ;
+ Text [ danish ] = "Tekstoverløb" ;
+ Text [ italian ] = "Overflow di ~testo" ;
+ Text [ spanish ] = "~Exceso de texto" ;
+ Text [ french ] = "~Débordement de texte" ;
+ Text [ dutch ] = "~Tekstoverloop" ;
+ Text [ portuguese ] = "Aj~uste de texto" ;
+ Text[ chinese_simplified ] = "ÎÄ×ÖÒç³ö±êÖ¾(~T)";
+ Text[ russian ] = "Ïåðåïîëíåíèå ÿ÷åéêè";
+ Text[ polish ] = "Przepe³nienie ~tekstu";
+ Text[ japanese ] = "÷½Ä‚Ì‚Í‚Ýo‚µ(~T)";
+ Text[ chinese_traditional ] = "¤å¦r·¸¥X¼Ð°O(~T)";
+ Text[ arabic ] = "ÝÇÆÖ Ýí ÇáäÕ";
+ Text[ greek ] = "Õðåñ÷åßëéóç êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ¿À¹öÇ÷οì(~T)";
+ Text[ turkish ] = "~Metin taþmasý";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_OBJECT
+ {
+ Pos = MAP_APPFONT ( 6 , 57 ) ;
+ Size = MAP_APPFONT ( 248 , 56 ) ;
+ Text = "Objekte" ;
+ Text [ ENGLISH ] = "Objects" ;
+ Text[ chinese_simplified ] = "¶ÔÏó";
+ Text[ russian ] = "Îáúåêòû";
+ Text[ polish ] = "Obiekty";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "ª«¥ó";
+ Text [ norwegian ] = "Objects" ;
+ Text [ italian ] = "Oggetti" ;
+ Text [ portuguese_brazilian ] = "Objetos" ;
+ Text [ portuguese ] = "Objectos" ;
+ Text [ finnish ] = "Objektit" ;
+ Text [ danish ] = "Objekter" ;
+ Text [ french ] = "Objets" ;
+ Text [ swedish ] = "Objekt" ;
+ Text [ dutch ] = "Objecten" ;
+ Text [ spanish ] = "Objetos" ;
+ Text [ english_us ] = "Objects" ;
+ Text[ arabic ] = "ßÇÆäÇÊ";
+ Text[ greek ] = "Áíôéêåßìåíá";
+ Text[ korean ] = "°³Ã¼";
+ Text[ turkish ] = "Nesne";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_OBJGRF
+ {
+ Pos = MAP_APPFONT ( 12 , 68 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Objekte/Grafiken" ;
+ Text [ ENGLISH ] = "Objects/Images" ;
+ Text [ norwegian ] = "Objects/Images" ;
+ Text [ italian ] = "~Oggetti/immagini" ;
+ Text [ portuguese_brazilian ] = "Objects/Images" ;
+ Text [ portuguese ] = "~Objectos/Imagens" ;
+ Text [ finnish ] = "Objects/Images" ;
+ Text [ danish ] = "Objekter/billeder" ;
+ Text [ french ] = "~Objets/images" ;
+ Text [ swedish ] = "~Objekt/grafik" ;
+ Text [ dutch ] = "~Objecten/afbeeldingen" ;
+ Text [ spanish ] = "Objetos/~Imágenes" ;
+ Text [ english_us ] = "~Objects/Graphics" ;
+ Text[ chinese_simplified ] = "¶ÔÏó/ͼÐÎ(~O)";
+ Text[ russian ] = "Îáúåêòû/Ðèñóíêè";
+ Text[ polish ] = "Obiekty/Rysunki";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä/}(~O)";
+ Text[ chinese_traditional ] = "ª«¥ó/¹Ï¤ù(~O)";
+ Text[ arabic ] = "ßÇÆäÇÊ/ÕæÑ";
+ Text[ greek ] = "Áíôéêåßìåíá/ÃñáöéêÜ";
+ Text[ korean ] = "°³Ã¼/±×·¡ÇÈ(~O)";
+ Text[ turkish ] = "~Nesne/grafik";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_OBJGRF
+ {
+ Pos = MAP_APPFONT ( 110 , 67 ) ;
+ LB_OBJECTMODE
+ };
+ FixedText FT_DIAGRAM
+ {
+ Pos = MAP_APPFONT ( 12 , 83 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Diagramme" ;
+ Text [ ENGLISH ] = "Charts" ;
+ Text [ norwegian ] = "Charts" ;
+ Text [ italian ] = "Diagrammi" ;
+ Text [ portuguese_brazilian ] = "Figuras" ;
+ Text [ portuguese ] = "~Gráficos" ;
+ Text [ finnish ] = "Kaaviot" ;
+ Text [ danish ] = "Diagrammer" ;
+ Text [ french ] = "~Diagrammes" ;
+ Text [ swedish ] = "~Diagram" ;
+ Text [ dutch ] = "~Diagrammen" ;
+ Text [ spanish ] = "~Diagramas" ;
+ Text [ english_us ] = "~Charts" ;
+ Text[ chinese_simplified ] = "ͼ±í(~C)";
+ Text[ russian ] = "Äèàãðàììû";
+ Text[ polish ] = "Wykresy";
+ Text[ japanese ] = "¸Þ×Ì(~C)";
+ Text[ chinese_traditional ] = "¹Ïªí(~C)";
+ Text[ arabic ] = "ÑÓæã ÈíÇäíÉ";
+ Text[ greek ] = "ÄéáãñÜììáôá";
+ Text[ korean ] = "Â÷Æ®(~C)";
+ Text[ turkish ] = "~Þema";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DIAGRAM
+ {
+ Pos = MAP_APPFONT ( 110 , 82 ) ;
+ LB_OBJECTMODE
+ };
+ FixedText FT_DRAW
+ {
+ Pos = MAP_APPFONT ( 12 , 98 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Zeichenobjekte" ;
+ Text [ ENGLISH ] = "Draw objects" ;
+ Text [ norwegian ] = "Draw objects" ;
+ Text [ italian ] = "Oggetti di disegno" ;
+ Text [ portuguese_brazilian ] = "Draw objects" ;
+ Text [ portuguese ] = "Objectos de ~desenho" ;
+ Text [ finnish ] = "Draw objects" ;
+ Text [ danish ] = "Tegneobjekter" ;
+ Text [ french ] = "Objets de ~dessin" ;
+ Text [ swedish ] = "~Ritobjekt" ;
+ Text [ dutch ] = "~Tekenobjecten" ;
+ Text [ spanish ] = "~Objetos de dibujo" ;
+ Text [ english_us ] = "~Drawing objects" ;
+ Text[ chinese_simplified ] = "»æͼ¶ÔÏó(~D)";
+ Text[ russian ] = "Ãðàôè÷åñêèå îáúåêòû";
+ Text[ polish ] = "~Obiekty graficzne";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸Ä(~D)";
+ Text[ chinese_traditional ] = "¦r¤¸ª«¥ó(~D)";
+ Text[ arabic ] = "ßÇÆäÇÊ ÑÓæãíÉ";
+ Text[ greek ] = "Áíôéêåßìåíá ó÷åäßáóçò";
+ Text[ korean ] = "°³Ã¼ ±×¸®±â(~D)";
+ Text[ turkish ] = "~Çizim nesnesi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_DRAW
+ {
+ Pos = MAP_APPFONT ( 110 , 97 ) ;
+ LB_OBJECTMODE
+ };
+};
+
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+
+
+TabPage RID_SCPAGE_LAYOUT
+{
+ HelpId = HID_SCPAGE_LAYOUT ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ GroupBox GB_LINES
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 120 , 93 ) ;
+ Text = "Linien" ;
+ Text [ ENGLISH ] = "Lines" ;
+ Text [ english_us ] = "Lines" ;
+ Text [ italian ] = "Linee" ;
+ Text [ spanish ] = "Líneas" ;
+ Text [ french ] = "Lignes" ;
+ Text [ dutch ] = "Lijnen" ;
+ Text [ swedish ] = "Linjer" ;
+ Text [ danish ] = "Linjer" ;
+ Text [ portuguese_brazilian ] = "Linien" ;
+ Text [ portuguese ] = "Linhas" ;
+ Text[ chinese_simplified ] = "ÏßÌõ";
+ Text[ russian ] = "Ëèíèè";
+ Text[ polish ] = "Linie";
+ Text[ japanese ] = "ü";
+ Text[ chinese_traditional ] = "½u±ø";
+ Text[ arabic ] = "ÎØæØ";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "¼±";
+ Text[ turkish ] = "Çizgi";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_GRID
+ {
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Gitterlinien" ;
+ Text [ ENGLISH ] = "~Grid" ;
+ Text [ norwegian ] = "~Grid" ;
+ Text [ italian ] = "Linee della griglia" ;
+ Text [ portuguese_brazilian ] = "~Grade" ;
+ Text [ portuguese ] = "~Linhas da grelha" ;
+ Text [ finnish ] = "Taustav~iivat" ;
+ Text [ danish ] = "Gitterlinjer" ;
+ Text [ french ] = "Li~gnes de la grille" ;
+ Text [ swedish ] = "~Gitterlinjer" ;
+ Text [ dutch ] = "~Rasterlijnen" ;
+ Text [ spanish ] = "~Líneas de cuadrícula" ;
+ Text [ english_us ] = "~Grid Lines" ;
+ Text[ chinese_simplified ] = "Íø¸ñÏß(~G)";
+ Text[ russian ] = "Ëèíèè ñåòêè";
+ Text[ polish ] = "Linie siatki";
+ Text[ japanese ] = "¸ÞدÄÞü(~G)";
+ Text[ chinese_traditional ] = "ºô®æ½u(~G)";
+ Text[ arabic ] = "ÎØæØ ÇáÔÈßÉ";
+ Text[ greek ] = "ÃñáììÝò ðëÝãìáôïò";
+ Text[ korean ] = "´«±Ý¼±(~G)";
+ Text[ turkish ] = "~Kýlavuz çizgileri";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_COLOR
+ {
+ Pos = MAP_APPFONT ( 22 , 25 ) ;
+ Size = MAP_APPFONT ( 23 , 10 ) ;
+ Text = "F~arbe" ;
+ Text [ ENGLISH ] = "~Color" ;
+ Text [ norwegian ] = "~Color" ;
+ Text [ italian ] = "~Colore" ;
+ Text [ portuguese_brazilian ] = "~Cor" ;
+ Text [ portuguese ] = "~Cor" ;
+ Text [ finnish ] = "~Väri" ;
+ Text [ danish ] = "Farve" ;
+ Text [ french ] = "~Couleur" ;
+ Text [ swedish ] = "F~ärg" ;
+ Text [ dutch ] = "K~leur" ;
+ Text [ spanish ] = "C~olor" ;
+ Text [ english_us ] = "~Color" ;
+ Text[ chinese_simplified ] = "ÑÕÉ«(~C)";
+ Text[ russian ] = "Öâåò";
+ Text[ polish ] = "Kolor";
+ Text[ japanese ] = "F(~C)";
+ Text[ chinese_traditional ] = "ÃC¦â(~C)";
+ Text[ arabic ] = "Çááæä";
+ Text[ greek ] = "×ñþìá";
+ Text[ korean ] = "»ö»ó(~C)";
+ Text[ turkish ] = "~Renk";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_COLOR
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 48 , 24 ) ;
+ Size = MAP_APPFONT ( 75 , 86 ) ;
+ DropDown = TRUE ;
+ DDExtraWidth = TRUE ;
+ };
+ CheckBox CB_PAGEBREAKS
+ {
+ Pos = MAP_APPFONT ( 12 , 39 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Seitenumbrüche : ~Seitenumbr³che */
+ Text = "~Seitenumbrüche" ;
+ Text [ ENGLISH ] = "Page breaks" ;
+ Text [ english_us ] = "~Page breaks" ;
+ Text [ portuguese_brazilian ] = "Seitenumbrüche" ;
+ Text [ swedish ] = "~Sidbrytningar" ;
+ Text [ danish ] = "Sideskift" ;
+ Text [ italian ] = "Interruzioni pagina" ;
+ Text [ spanish ] = "~Saltos de página" ;
+ Text [ french ] = "~Sauts de pages" ;
+ Text [ dutch ] = "~Paginaeinde" ;
+ Text [ portuguese ] = "~Quebras de página" ;
+ Text[ chinese_simplified ] = "»»Ò³(~P)";
+ Text[ russian ] = "Ðàçðûâû ñòðàíèöû";
+ Text[ polish ] = "Podzia³y ~strony";
+ Text[ japanese ] = "‰üÍß°¼Þ(~P)";
+ Text[ chinese_traditional ] = "´«­¶(~P)";
+ Text[ arabic ] = "ÝæÇÕá ÇáÕÝÍÇÊ";
+ Text[ greek ] = "ÁëëáãÝò óåëéäþí";
+ Text[ korean ] = "ÆäÀÌÁö ³ª´©±â(~P)";
+ Text[ turkish ] = "~Sayfa sonu";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_GUIDELINE
+ {
+ Pos = MAP_APPFONT ( 12 , 52 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? H~ilfslinien : Hilfslinien */
+ Text = "H~ilfslinien" ;
+ Text [ ENGLISH ] = "Guidelines" ;
+ Text [ english_us ] = "G~uides" ;
+ Text [ italian ] = "Linee guida" ;
+ Text [ spanish ] = "G~uías" ;
+ Text [ french ] = "~Repères" ;
+ Text [ dutch ] = "~Hulplijnen" ;
+ Text [ swedish ] = "Hjälpl~injer" ;
+ Text [ danish ] = "Hjælpelinjer" ;
+ Text [ portuguese_brazilian ] = "Hilfslinien" ;
+ Text [ portuguese ] = "G~uias" ;
+ Text[ chinese_simplified ] = "¸¨ÖúÏß(~U)";
+ Text[ russian ] = "Íàïðàâëÿþùèå ëèíèè";
+ Text[ polish ] = "Linie po~mocnicze";
+ Text[ japanese ] = "•â•ü(~U)";
+ Text[ chinese_traditional ] = "»²§U½u(~U)";
+ Text[ arabic ] = "ÎØæØ ãÓÇÚÏÉ";
+ Text[ greek ] = "ÂïçèçôéêÝò ãñáììÝò";
+ Text[ korean ] = "¾È³»(~U)";
+ Text[ turkish ] = "K~ýlavuz";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HANDLES
+ {
+ Pos = MAP_APPFONT ( 12 , 65 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Einfache Griffe" ;
+ Text [ ENGLISH ] = "~Simple Handles" ;
+ Text[ english_us ] = "~Simple control points";
+ Text[ portuguese ] = "Guias ~simples";
+ Text[ russian ] = "Îáû÷íûå óçëû";
+ Text[ greek ] = "ÁðëÜ óçìåßá ~åëÝã÷ïõ";
+ Text[ dutch ] = "~Eenvoudige handvatten";
+ Text[ french ] = "~Poignées simples";
+ Text[ spanish ] = "Agarraderas ~sencillas";
+ Text[ italian ] = "~Maniglie semplici";
+ Text[ danish ] = "Enkelte håndtag";
+ Text[ swedish ] = "~Enkla handtag";
+ Text[ polish ] = "Proste uchwyty";
+ Text[ portuguese_brazilian ] = "~Farbige Handles";
+ Text[ japanese ] = "¼ÝÌßÙ‚È»²½Þ•ÏXÊÝÄÞÙ(~S)";
+ Text[ korean ] = "´Ü¼ø ÇÚµé(~S)";
+ Text[ chinese_simplified ] = "±ê×¼¿Øµã(~S)";
+ Text[ chinese_traditional ] = "¼Ð­ã±±ÂI(~S)";
+ Text[ arabic ] = "ãÞÇÈÖ ÈÓíØÉ";
+ Text[ turkish ] = "~Basit çekme noktalarý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_BIGHANDLES
+ {
+ Pos = MAP_APPFONT ( 12 , 78 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "Gr~oße Griffe" ;
+ Text [ ENGLISH ] = "~Big Handles" ;
+ Text[ english_us ] = "~Large control points";
+ Text[ portuguese ] = "~Guias grandes";
+ Text[ russian ] = "Êðóïíûå óçëû";
+ Text[ greek ] = "ÌåãÜëá óçìåßá åëÝã÷~ïõ";
+ Text[ dutch ] = "~Grote handvatten";
+ Text[ french ] = "~Grandes poignées";
+ Text[ spanish ] = "Agarraderas g~randes";
+ Text[ italian ] = "Maniglie grandi";
+ Text[ danish ] = "Store håndtag";
+ Text[ swedish ] = "St~ora handtag";
+ Text[ polish ] = "~Du¿e uchwyty";
+ Text[ portuguese_brazilian ] = "~Big Handles";
+ Text[ japanese ] = "‘å‚«‚¢»²½Þ•ÏXÊÝÄÞÙ(~L)";
+ Text[ korean ] = "´ëÇü ÇÚµé(~L)";
+ Text[ chinese_simplified ] = "´ó¿Øµã(~L)";
+ Text[ chinese_traditional ] = "¤j±±ÂI(~L)";
+ Text[ arabic ] = "ãÞÇÈÖ ßÈíÑÉ";
+ Text[ turkish ] = "B~üyük çekme noktalarý";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_WINDOW
+ {
+ Pos = MAP_APPFONT ( 134 , 3 ) ;
+ Size = MAP_APPFONT ( 120 , 93 ) ;
+ Text = "Fenster" ;
+ Text [ ENGLISH ] = "Window" ;
+ Text [ norwegian ] = "Window" ;
+ Text [ italian ] = "Finestra" ;
+ Text [ portuguese_brazilian ] = "Janela" ;
+ Text [ portuguese ] = "Janela" ;
+ Text [ finnish ] = "Ikkuna" ;
+ Text [ danish ] = "Vindue" ;
+ Text [ french ] = "Fenêtre" ;
+ Text [ swedish ] = "Fönster" ;
+ Text [ dutch ] = "Venster" ;
+ Text [ spanish ] = "Ventana" ;
+ Text [ english_us ] = "Window " ;
+ Text[ chinese_simplified ] = "ÊÓ´°";
+ Text[ russian ] = "Îêíî";
+ Text[ polish ] = "Okno";
+ Text[ japanese ] = "³¨ÝÄÞ³";
+ Text[ chinese_traditional ] = "µøµ¡";
+ Text[ arabic ] = "ÇáäÇÝÐÉ";
+ Text[ greek ] = "ÐáñÜèõñï";
+ Text[ korean ] = "â";
+ Text[ turkish ] = "Pencere";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_ROWCOLHEADER
+ {
+ Pos = MAP_APPFONT ( 140 , 12 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Zeilen- und Spaltenköpfe : ~Zeilen- und Spaltenk÷pfe */
+ Text = "~Zeilen- und Spaltenköpfe" ;
+ Text [ ENGLISH ] = "Colu~mn-/Row Headings" ;
+ Text [ norwegian ] = "Colu~mn-/Row Headings" ;
+ Text [ italian ] = "Intestazioni colo~nna/riga" ;
+ Text [ portuguese_brazilian ] = "Colu~na-/Cabeçalhos de Fileira" ;
+ Text [ portuguese ] = "~Cabeçalhos de linhas e colunas" ;
+ Text [ finnish ] = "Sa~rake/riviotsikot" ;
+ Text [ danish ] = "Kolonne- og rækkeoverskrifter" ;
+ Text [ french ] = "En-têtes de~lignes et colonnes" ;
+ Text [ swedish ] = "~Kolumn-/radhuvuden" ;
+ Text [ dutch ] = "Kolo~m-/rijkoppen" ;
+ Text [ spanish ] = "~Títulos de filas y columnas" ;
+ Text [ english_us ] = "Colu~mn/Row headers" ;
+ Text[ chinese_simplified ] = "ÐбêÌâºÍÁбêÌâ(~M)";
+ Text[ russian ] = "Íàçâàíèÿ ñòðîê/ñòîëáöîâ";
+ Text[ polish ] = "~Nag³ówki wierszy i kolumn";
+ Text[ japanese ] = "s‚Æ—ñ‚̔Ԇ(~M)";
+ Text[ chinese_traditional ] = "Äæ©M¦C¼ÐÃD(~M)";
+ Text[ arabic ] = "ÑÄæÓ ÇáÃÓØÑ æÇáÃÚãÏÉ";
+ Text[ greek ] = "Êåöáëßäåò ãñáììþí/óôçëþí";
+ Text[ korean ] = "¿­/Çà ¸Ó¸®±Û(~M)";
+ Text[ turkish ] = "Sa~týr ve sütun baþlýklarý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_HSCROLL
+ {
+ Pos = MAP_APPFONT ( 140 , 25 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Horizontale Bildlaufleiste : ~Horizontale Schiebeleiste */
+ Text = "~Horizontale Bildlaufleiste" ;
+ Text [ ENGLISH ] = " ~Horizontal scrollbar" ;
+ Text [ norwegian ] = " ~Horizontal scrollbar" ;
+ Text [ italian ] = "Barra di scorrimento orizzontale" ;
+ Text [ portuguese_brazilian ] = "~Horizontal scrollbar" ;
+ Text [ portuguese ] = "~Barra de deslocamento ~horizontal" ;
+ Text [ finnish ] = " ~Horizontal scrollbar" ;
+ Text [ danish ] = "Vandret rullepanel" ;
+ Text [ french ] = "Barre de défilement ~horizontale" ;
+ Text [ swedish ] = "Horiso~ntell rullningslist" ;
+ Text [ dutch ] = "H~orizontale schuifbalk" ;
+ Text [ spanish ] = "Barra de desplazamiento ~horizontal" ;
+ Text [ english_us ] = "Hori~zontal scroll" ;
+ Text[ chinese_simplified ] = "ºáÏò¹ö¶¯¸Ë(~H)";
+ Text[ russian ] = "Ãîðèçîíòàëüíàÿ ïîëîñà ïðîêðóòêè";
+ Text[ polish ] = "Poziomy pasek przewijania obrazu";
+ Text[ japanese ] = "…•½½¸Û°ÙÊÞ°(~H)";
+ Text[ chinese_traditional ] = "¤ô¥­¨÷¶b(~H)";
+ Text[ arabic ] = "ÔÑíØ ÊÍÑíß ÇáÕÝÍÉ ÃÝÞíÇð";
+ Text[ greek ] = "Ïñéæüíôéá ãñáììÞ êýëéóçò";
+ Text[ korean ] = "¼öÆò ½ºÅ©·Ñ(~Z)";
+ Text[ turkish ] = "~Yatay kaydýrma çubuðu";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_VSCROLL
+ {
+ Pos = MAP_APPFONT ( 140 , 38 ) ;
+ Size = MAP_APPFONT ( 110 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Vertikale Bildlaufleiste : ~Vertikale Schiebeleiste */
+ Text = "~Vertikale Bildlaufleiste" ;
+ Text [ ENGLISH ] = "~Vertical scrollbar" ;
+ Text [ norwegian ] = "~Vertical scrollbar" ;
+ Text [ italian ] = "Barra di scorrimento verticale" ;
+ Text [ portuguese_brazilian ] = "~Vertical scrollbar" ;
+ Text [ portuguese ] = "Barra de deslocamento ~vertical" ;
+ Text [ finnish ] = "~Vertical scrollbar" ;
+ Text [ danish ] = "Lodret rullepanel" ;
+ Text [ french ] = "Barre de défilement ~verticale" ;
+ Text [ swedish ] = "~Vertikal rullningslist" ;
+ Text [ dutch ] = "~Verticale schuifbalk" ;
+ Text [ spanish ] = "Barra de desplazamiento ~vertical" ;
+ Text [ english_us ] = "~Vertical scroll" ;
+ Text[ chinese_simplified ] = "×ÝÏò¹ö¶¯¸Ë(~V)";
+ Text[ russian ] = "Âåðòèêàëüíàÿ ïîëîñà ïðîêðóòêè";
+ Text[ polish ] = "Piono~wy pasek przesuwania obrazu";
+ Text[ japanese ] = "‚’¼½¸Û°ÙÊÞ°(~V)";
+ Text[ chinese_traditional ] = "««ª½¨÷¶b(~V)";
+ Text[ arabic ] = "ÔÑíØ ÊÍÑíß ÇáÕÝÍÉ ÑÃÓíÇð";
+ Text[ greek ] = "Êáôáêüñõöç ãñáììÞ êýëéóçò";
+ Text[ korean ] = "¼öÁ÷ ½ºÅ©·Ñ(~V)";
+ Text[ turkish ] = "~Dikey kaydýrma çubuðu";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_TBLREG
+ {
+ Pos = MAP_APPFONT ( 140 , 51 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "Tabellen~register" ;
+ Text [ ENGLISH ] = "Table ~registers" ;
+ Text [ norwegian ] = "Table ~registers" ;
+ Text [ italian ] = "Schede a tabella" ;
+ Text [ portuguese_brazilian ] = "Table ~registers" ;
+ Text [ portuguese ] = "~Separadores de folhas" ;
+ Text [ finnish ] = "Table ~registers" ;
+ Text [ danish ] = "Regnearksfaner" ;
+ Text [ french ] = "~Onglets des feuilles" ;
+ Text [ swedish ] = "Tabell~flik" ;
+ Text [ dutch ] = "~Werkbladenregister" ;
+ Text [ spanish ] = "Registro de ~hojas" ;
+ Text [ english_us ] = "Sheet ~tabs" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í±êÇ©(~T)";
+ Text[ russian ] = "ßðëû÷êè ëèñòîâ";
+ Text[ polish ] = "Karty arkuszy";
+ Text[ japanese ] = "•\\‚ÌŒ©o‚µ(~T)@";
+ Text[ chinese_traditional ] = "¤u§@ªí¤À­¶(~T)";
+ Text[ arabic ] = "ÃáÓäÉ ÊÈæíÈ ÇáÌÏÇæá";
+ Text[ greek ] = "ÊáñôÝëá ðßíáêá";
+ Text[ korean ] = "½ÃÆ® ÅÇ(~T)";
+ Text[ turkish ] = "Tablo çub~uðu";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_OUTLINE
+ {
+ Pos = MAP_APPFONT ( 140 , 64 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "Glieder~ungssymbole" ;
+ Text [ ENGLISH ] = "O~utliner" ;
+ Text [ norwegian ] = "O~utliner" ;
+ Text [ italian ] = "Punti" ;
+ Text [ portuguese_brazilian ] = "Janela de ~Esboço" ;
+ Text [ portuguese ] = "Símbolos de ~configuração" ;
+ Text [ finnish ] = "~Jäsennin" ;
+ Text [ danish ] = "Dispositionssymboler" ;
+ Text [ french ] = "~Symboles de puces/numéros" ;
+ Text [ swedish ] = "~Dispositionssymboler" ;
+ Text [ dutch ] = "Op~sommingstekens" ;
+ Text [ spanish ] = "Símbolos para esq~uemas" ;
+ Text [ english_us ] = "~Outline symbols" ;
+ Text[ chinese_simplified ] = "´ó¸Ùͼ±ê(~O)";
+ Text[ russian ] = "Ñèìâîëû ñòðóêòóðû";
+ Text[ polish ] = "Sym~bole konspektu";
+ Text[ japanese ] = "±³Äײ݋L†(~O)";
+ Text[ chinese_traditional ] = "¤jºõ¹Ï¥Ü(~O)";
+ Text[ arabic ] = "ÑãæÒ ÇáÊÞÓíã";
+ Text[ greek ] = "Óýìâïëá äéÜñèñùóçò";
+ Text[ korean ] = "¿Ü°û¼± ±âÈ£(~O)";
+ Text[ turkish ] = "A~nahat simgesi";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_UNIT
+ {
+ Pos = MAP_APPFONT ( 6 , 101 ) ;
+ Size = MAP_APPFONT ( 120 , 26 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Maßeinheit : Ma˜einheit */
+ Text = "Maßeinheit" ;
+ Text [ ENGLISH ] = "Metric Units" ;
+ Text [ norwegian ] = "Metriske Enheter" ;
+ Text [ italian ] = "Unità di misura" ;
+ Text [ portuguese_brazilian ] = "Unidades métricas" ;
+ Text [ portuguese ] = "Unidades métricas" ;
+ Text [ finnish ] = "Metriset yksiköt" ;
+ Text [ danish ] = "Måleenhed" ;
+ Text [ french ] = "Unité de mesure" ;
+ Text [ swedish ] = "Måttenhet" ;
+ Text [ dutch ] = "Maateenheid" ;
+ Text [ spanish ] = "Unidad de medida" ;
+ Text [ english_us ] = "Measurement unit" ;
+ Text[ chinese_simplified ] = "¶ÈÁ¿µ¥Î»";
+ Text[ russian ] = "Åäèíèöà èçìåðåíèÿ";
+ Text[ polish ] = "Jednostka miary";
+ Text[ japanese ] = "’PˆÊ";
+ Text[ chinese_traditional ] = "«×¶q³æ¦ì";
+ Text[ arabic ] = "æÍÏÉ ÇáÞíÇÓ";
+ Text[ greek ] = "ÌïíÜäåò ìÝôñçóçò";
+ Text[ korean ] = "ÃøÁ¤ ´ÜÀ§";
+ Text[ turkish ] = "Ölçü birimi";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_UNIT
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 110 ) ;
+ Size = MAP_APPFONT ( 70 , 50 ) ;
+ DropDown = TRUE ;
+ };
+ StringArray ST_UNIT
+ {
+ ItemList =
+ {
+ < "Millimeter" ; FUNIT_MM ; > ;
+ < "Zentimeter" ; FUNIT_CM ; > ;
+ < "Meter" ; FUNIT_M ; > ;
+ < "Kilometer" ; FUNIT_KM ; > ;
+ < "Zoll" ; FUNIT_INCH ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 6 : Fuß*/
+ < "Fuß" ; FUNIT_FOOT ; > ;
+ < "Meilen" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Point" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ English ] =
+ {
+ < "Millimeter" ; FUNIT_MM ; > ;
+ < "Zentimeter" ; FUNIT_CM ; > ;
+ < "Meter" ; FUNIT_M ; > ;
+ < "Kilometer" ; FUNIT_KM ; > ;
+ < "Zoll" ; FUNIT_INCH ; > ;
+ < "Fuß" ; FUNIT_FOOT ; > ;
+ < "Meilen" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Point" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ norwegian ] =
+ {
+ < "Millimeter" ; FUNIT_MM ; > ;
+ < "Zentimeter" ; FUNIT_CM ; > ;
+ < "Meter" ; FUNIT_M ; > ;
+ < "Kilometer" ; FUNIT_KM ; > ;
+ < "Zoll" ; FUNIT_INCH ; > ;
+ < "Fuß" ; FUNIT_FOOT ; > ;
+ < "Meilen" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Point" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ italian ] =
+ {
+ < "Millimetro" ; FUNIT_MM ; > ;
+ < "Centimetro" ; FUNIT_CM ; > ;
+ < "Metro" ; FUNIT_M ; > ;
+ < "Chilometro" ; FUNIT_KM ; > ;
+ < "Pollice" ; FUNIT_INCH ; > ;
+ < "Piede" ; FUNIT_FOOT ; > ;
+ < "Miglio" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Punto" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ portuguese_brazilian ] =
+ {
+ < "Millimeter" ; FUNIT_MM ; > ;
+ < "Zentimeter" ; FUNIT_CM ; > ;
+ < "Meter" ; FUNIT_M ; > ;
+ < "Kilometer" ; FUNIT_KM ; > ;
+ < "Zoll" ; FUNIT_INCH ; > ;
+ < "Fuß" ; FUNIT_FOOT ; > ;
+ < "Meilen" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Ponto" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ portuguese ] =
+ {
+ < "Milímetro" ; FUNIT_MM ; > ;
+ < "Centímetro" ; FUNIT_CM ; > ;
+ < "Metro" ; FUNIT_M ; > ;
+ < "Quilómetro" ; FUNIT_KM ; > ;
+ < "Polegada" ; FUNIT_INCH ; > ;
+ < "Pé" ; FUNIT_FOOT ; > ;
+ < "Milhas" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Ponto" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ french ] =
+ {
+ < "Millimètre" ; FUNIT_MM ; > ;
+ < "Centimètre" ; FUNIT_CM ; > ;
+ < "Mètre" ; FUNIT_M ; > ;
+ < "Kilomètre" ; FUNIT_KM ; > ;
+ < "Pouce" ; FUNIT_INCH ; > ;
+ < "Pied" ; FUNIT_FOOT ; > ;
+ < "Miles" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Point" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ dutch ] =
+ {
+ < "Millimeter" ; FUNIT_MM ; > ;
+ < "Centimeter" ; FUNIT_CM ; > ;
+ < "Meter" ; FUNIT_M ; > ;
+ < "Kilometer" ; FUNIT_KM ; > ;
+ < "Duim" ; FUNIT_INCH ; > ;
+ < "Voet" ; FUNIT_FOOT ; > ;
+ < "Mijlen" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Punt" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ spanish ] =
+ {
+ < "Milímetro" ; FUNIT_MM ; > ;
+ < "Centímetro" ; FUNIT_CM ; > ;
+ < "Metro" ; FUNIT_M ; > ;
+ < "Kilómetro" ; FUNIT_KM ; > ;
+ < "Pulgadas" ; FUNIT_INCH ; > ;
+ < "Pie" ; FUNIT_FOOT ; > ;
+ < "Millas" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Punto" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ danish ] =
+ {
+ < "Millimeter" ; FUNIT_MM ; > ;
+ < "Centimeter" ; FUNIT_CM ; > ;
+ < "Meter" ; FUNIT_M ; > ;
+ < "Kilometer" ; FUNIT_KM ; > ;
+ < "Tommer" ; FUNIT_INCH ; > ;
+ < "Fod" ; FUNIT_FOOT ; > ;
+ < "Mil" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Punkt" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ swedish ] =
+ {
+ < "Millimeter" ; FUNIT_MM ; > ;
+ < "Centimeter" ; FUNIT_CM ; > ;
+ < "Meter" ; FUNIT_M ; > ;
+ < "Kilometer" ; FUNIT_KM ; > ;
+ < "Tum" ; FUNIT_INCH ; > ;
+ < "Fot" ; FUNIT_FOOT ; > ;
+ < "Miles" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Point" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ finnish ] =
+ {
+ < "Millimeter" ; FUNIT_MM ; > ;
+ < "Zentimeter" ; FUNIT_CM ; > ;
+ < "Meter" ; FUNIT_M ; > ;
+ < "Kilometer" ; FUNIT_KM ; > ;
+ < "Zoll" ; FUNIT_INCH ; > ;
+ < "Fuß" ; FUNIT_FOOT ; > ;
+ < "Meilen" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Point" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ english_us ] =
+ {
+ < "Millimeter" ; FUNIT_MM ; > ;
+ < "Centimeter" ; FUNIT_CM ; > ;
+ < "Meter" ; FUNIT_M ; > ;
+ < "Kilometer" ; FUNIT_KM ; > ;
+ < "Inch" ; FUNIT_INCH ; > ;
+ < "Foot" ; FUNIT_FOOT ; > ;
+ < "Miles" ; FUNIT_MILE ; > ;
+ < "Pica" ; FUNIT_PICA ; > ;
+ < "Point" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ chinese_simplified ] =
+ {
+ < "ºÁÃ×" ; FUNIT_MM ; > ;
+ < "ÀåÃ×" ; FUNIT_CM ; > ;
+ < "Ã×" ; FUNIT_M ; > ;
+ < "¹«Àï" ; FUNIT_KM ; > ;
+ < "Ó¢´ç" ; FUNIT_INCH ; > ;
+ < "Ó¢³ß" ; FUNIT_FOOT ; > ;
+ < "Ó¢Àï" ; FUNIT_MILE ; > ;
+ < "Ƥ¿ÉÐÍ×Ö·û" ; FUNIT_PICA ; > ;
+ < "µã" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ russian ] =
+ {
+ < "Ìèëëèìåòð" ; FUNIT_MM ; > ;
+ < "Ñàíòèìåòð" ; FUNIT_CM ; > ;
+ < "Ìåòð" ; FUNIT_M ; > ;
+ < "Êèëîìåòð" ; FUNIT_KM ; > ;
+ < "Äþéìû" ; FUNIT_INCH ; > ;
+ < "Ôóòû" ; FUNIT_FOOT ; > ;
+ < "Ìèëè" ; FUNIT_MILE ; > ;
+ < "Ïèêè" ; FUNIT_PICA ; > ;
+ < "Ïóíêò" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ polish ] =
+ {
+ < "Milimetr" ; FUNIT_MM ; > ;
+ < "Centymetr" ; FUNIT_CM ; > ;
+ < "Metr" ; FUNIT_M ; > ;
+ < "Kilometr" ; FUNIT_KM ; > ;
+ < "Cal" ; FUNIT_INCH ; > ;
+ < "Stopa" ; FUNIT_FOOT ; > ;
+ < "Mila" ; FUNIT_MILE ; > ;
+ < "Cycero" ; FUNIT_PICA ; > ;
+ < "Punkt" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ japanese ] =
+ {
+ < "ÐØÒ°ÄÙ" ; FUNIT_MM ; > ;
+ < "¾ÝÁÒ°ÄÙ" ; FUNIT_CM ; > ;
+ < "Ò°ÄÙ" ; FUNIT_M ; > ;
+ < "·ÛÒ°ÄÙ" ; FUNIT_KM ; > ;
+ < "²ÝÁ" ; FUNIT_INCH ; > ;
+ < "̨°Ä" ; FUNIT_FOOT ; > ;
+ < "ϲÙ" ; FUNIT_MILE ; > ;
+ < "Êß²¶" ; FUNIT_PICA ; > ;
+ < "Îß²ÝÄ" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ chinese_traditional ] =
+ {
+ < "²@¦Ì" ; FUNIT_MM ; > ;
+ < "Íù¦Ì" ; FUNIT_CM ; > ;
+ < "¦Ì" ; FUNIT_M ; > ;
+ < "¤½¨½" ; FUNIT_KM ; > ;
+ < "­^¤o" ; FUNIT_INCH ; > ;
+ < "­^¤Ø" ; FUNIT_FOOT ; > ;
+ < "­^¨½" ; FUNIT_MILE ; > ;
+ < "¥Ö¥i«¬¦r¤¸" ; FUNIT_PICA ; > ;
+ < "ÂI" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ arabic ] =
+ {
+ < "ãáíãÊÑ" ; FUNIT_MM ; > ;
+ < "ÓäÊíãÊÑ" ; FUNIT_CM ; > ;
+ < "ãÊÑ" ; FUNIT_M ; > ;
+ < "ßíáæãÊÑ" ; FUNIT_KM ; > ;
+ < "ÈæÕÉ" ; FUNIT_INCH ; > ;
+ < "ÞÏã" ; FUNIT_FOOT ; > ;
+ < "ÃãíÇá" ; FUNIT_MILE ; > ;
+ < "ÈíßÇ" ; FUNIT_PICA ; > ;
+ < "äÞØÉ" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ greek ] =
+ {
+ < "×éëéïóôÜ" ; FUNIT_MM ; > ;
+ < "ÅêáôïóôÜ" ; FUNIT_CM ; > ;
+ < "ÌÝôñá" ; FUNIT_M ; > ;
+ < "×éëéüìåôñá" ; FUNIT_KM ; > ;
+ < "ºíôóåò" ; FUNIT_INCH ; > ;
+ < "Ðüäé" ; FUNIT_FOOT ; > ;
+ < "Ìßëéá" ; FUNIT_MILE ; > ;
+ < "Pica (Ðßêá)" ; FUNIT_PICA ; > ;
+ < "Óçìåßï" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ korean ] =
+ {
+ < "¹Ð¸®¹ÌÅÍ" ; FUNIT_MM ; > ;
+ < "¼¾Æ¼¹ÌÅÍ" ; FUNIT_CM ; > ;
+ < "¹ÌÅÍ" ; FUNIT_M ; > ;
+ < "ų·Î¹ÌÅÍ" ; FUNIT_KM ; > ;
+ < "ÀÎÄ¡" ; FUNIT_INCH ; > ;
+ < "ÇÇÆ®" ; FUNIT_FOOT ; > ;
+ < "¸¶ÀÏ" ; FUNIT_MILE ; > ;
+ < "ÆÄÀÌÄ«" ; FUNIT_PICA ; > ;
+ < "Æ÷ÀÎÆ®" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ turkish ] =
+ {
+ < "Milimetre" ; FUNIT_MM ; > ;
+ < "Santimetre" ; FUNIT_CM ; > ;
+ < "Metre" ; FUNIT_M ; > ;
+ < "Kilometre" ; FUNIT_KM ; > ;
+ < "Ýnç" ; FUNIT_INCH ; > ;
+ < "Ft" ; FUNIT_FOOT ; > ;
+ < "Mil" ; FUNIT_MILE ; > ;
+ < "Pika" ; FUNIT_PICA ; > ;
+ < "Nokta" ; FUNIT_POINT ; > ;
+ };
+ ItemList [ language_user1 ] =
+ {
+ < " " ; FUNIT_MM ; > ;
+ < " " ; FUNIT_CM ; > ;
+ < " " ; FUNIT_M ; > ;
+ < " " ; FUNIT_KM ; > ;
+ < " " ; FUNIT_INCH ; > ;
+ < " " ; FUNIT_FOOT ; > ;
+ < " " ; FUNIT_MILE ; > ;
+ < " " ; FUNIT_PICA ; > ;
+ < " " ; FUNIT_POINT ; > ;
+ };
+ };
+ GroupBox GB_TAB
+ {
+ Pos = MAP_APPFONT ( 134 , 101 ) ;
+ Size = MAP_APPFONT ( 120 , 26 ) ;
+ Text = "Tabulatorenabstand" ;
+ Text [ ENGLISH ] = "Default Tab distance" ;
+ Text [ norwegian ] = "Standard tabulatoravstand" ;
+ Text [ italian ] = "Posizioni di tabulazione" ;
+ Text [ portuguese_brazilian ] = "Default Tab distance" ;
+ Text [ portuguese ] = "Intervalo entre tabulações" ;
+ Text [ finnish ] = "Default Tab distance" ;
+ Text [ danish ] = "Tabulatorafstand" ;
+ Text [ french ] = "Tabulations" ;
+ Text [ swedish ] = "Tabulatoravstånd" ;
+ Text [ dutch ] = "Tabstops" ;
+ Text [ spanish ] = "Distancia entre tabulaciones" ;
+ Text [ english_us ] = "Tab stops" ;
+ Group = TRUE ;
+ Text[ chinese_simplified ] = "ÖƱí·û¼ä¸ô";
+ Text[ russian ] = "Øàã òàáóëÿöèè";
+ Text[ polish ] = "Odstêp tabulatorów";
+ Text[ japanese ] = "ÀÌÞŠÔŠu";
+ Text[ chinese_traditional ] = "»sªí²Å¶¡¹j";
+ Text[ arabic ] = "ÚáÇãÇÊ ÇáÌÏæáÉ";
+ Text[ greek ] = "Áðüóôáóç óôçëïèåôþí";
+ Text[ korean ] = "ÅÇ ¸ØÃã";
+ Text[ turkish ] = "Sekme mesafesi";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField MF_TAB
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 140 , 110 ) ;
+ Size = MAP_APPFONT ( 45 , 12 ) ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ DecimalDigits = 2 ;
+ Unit = FUNIT_CM ;
+ SpinSize = 10 ;
+ Minimum = 50 ;
+ Maximum = 9999 ;
+ First = 50 ;
+ Last = 2000 ;
+ };
+};
+
+/**************************************************************************/
+/* */
+/* */
+/* */
+/**************************************************************************/
+
+
+TabPage RID_SCPAGE_INPUT
+{
+ HelpId = HID_SCPAGE_INPUT ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ GroupBox GB_OPTIONS
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 248 , 87 ) ;
+ Text = "Eingabe" ;
+ Text [ ENGLISH ] = "Input" ;
+ Text [ english_us ] = "Input" ;
+ Text [ portuguese_brazilian ] = "Eingabe" ;
+ Text [ swedish ] = "Inmatning" ;
+ Text [ danish ] = "Input" ;
+ Text [ italian ] = "Digitazione" ;
+ Text [ spanish ] = "Entrada" ;
+ Text [ french ] = "Saisie" ;
+ Text [ dutch ] = "Invoer" ;
+ Text [ portuguese ] = "Entrada" ;
+ Text[ chinese_simplified ] = "ÊäÈë";
+ Text[ russian ] = "Ââîä";
+ Text[ polish ] = "Wpis";
+ Text[ japanese ] = "“ü—Í";
+ Text[ chinese_traditional ] = "¿é¤J";
+ Text[ arabic ] = "ÅÏÎÇá";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "ÀÔ·Â";
+ Text[ turkish ] = "Giriþ";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_ALIGN
+ {
+ Pos = MAP_APPFONT ( 12 , 12 ) ;
+ Size = MAP_APPFONT ( 170 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Eingabebestätigung setzt die ~Selektion nach : Eingabebestätigung setzt die Selektion nach */
+ /* ### ACHTUNG: Neuer Text in Resource? Eingabebestätigung setzt die ~Selektion nach : Eingabebestõtigung setzt die ~Selektion nach */
+ Text = "Eingabebestätigung setzt die ~Selektion nach" ;
+ Text [ ENGLISH ] = "??" ;
+ Text [ dutch ] = "Na bevestiging met Enter volgt de ~selectie" ;
+ Text [ english_us ] = "Press Enter to ~move selection" ;
+ Text [ swedish ] = "Tryck RETUR för att flytta ~markering" ;
+ Text [ danish ] = "Flyt markering efter Enter" ;
+ Text [ italian ] = "Premi invio per passare alla prossima selezione" ;
+ Text [ spanish ] = "~Pulsar Entrada para desplazar selección hacia" ;
+ Text [ french ] = "Touche Entrée pour déplacer la ~sélection vers" ;
+ Text [ portuguese ] = "Confirmar entrada para mover ~selecção para" ;
+ Text [ portuguese_brazilian ] = "Eingabebestätigung setzt die Selektion nach" ;
+ Text[ chinese_simplified ] = "°´»÷»Ø³µ¼ü×Ô¶¯Ñ¡ÔñÏÂÒ»¸öµ¥Ôª¸ñµÄ·½Ïò(~M)";
+ Text[ russian ] = "Íàæìèòå ââîä äëÿ ïåðåìåùåíèÿ âûäåëåíèÿ";
+ Text[ polish ] = "Przenie~œ zaznaczenie po naciœniêciu Enter";
+ Text[ japanese ] = "Enter·°‚ð‰Ÿ‚µ‚Ä‘I‘ð•ûŒü‚É“ü—͔͈͂ðˆÚ“®(~M)";
+ Text[ chinese_traditional ] = "«öÀ»¦^¨®Áä¦Û°Ê¿ï¨ú¤U¤@­ÓÀx¦s®æªº¤è¦V(~M)";
+ Text[ arabic ] = "ÇÖÛØ ãÝÊÇÍ ÇáÅÏÎÇá áäÞá ÇáÊÍÏíÏ Åáì";
+ Text[ greek ] = "ÐáôÞóôå 'Enter' ãéá ôç ìåôáêßíç~óç ôçò åðéëïãÞò ðñïò ôá";
+ Text[ korean ] = "¼±ÅÃÀ» À̵¿Çϱâ À§Çؼ­ ¿£Å͸¦ ´©¸£½Ê½Ã¿À.(~M)";
+ Text[ turkish ] = "Enter tuþuna basýldýðýnda seçim taþýnýr";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_ALIGN
+ {
+ Pos = MAP_APPFONT ( 188 , 11 ) ;
+ Size = MAP_APPFONT ( 60 , 60 ) ;
+ Border = TRUE ;
+ DropDown = TRUE ;
+ // Reihenfolge der Strings wie enum ScDirection
+ StringList =
+ {
+ < "unten" ; Default ; > ;
+ < "rechts" ; Default ; > ;
+ < "oben" ; Default ; > ;
+ < "links" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "unten" ; Default ; > ;
+ < "rechts" ; Default ; > ;
+ < "oben" ; Default ; > ;
+ < "links" ; Default ; > ;
+ };
+ stringlist [ english_us ] =
+ {
+ < "down" ; Default ; > ;
+ < "right" ; Default ; > ;
+ < "up" ; Default ; > ;
+ < "left" ; Default ; > ;
+ };
+ stringlist [ portuguese_brazilian ] =
+ {
+ < "unten" ; Default ; > ;
+ < "rechts" ; Default ; > ;
+ < "oben" ; Default ; > ;
+ < "links" ; Default ; > ;
+ };
+ stringlist [ swedish ] =
+ {
+ < "nedåt" ; Default ; > ;
+ < "till höger" ; Default ; > ;
+ < "uppåt" ; Default ; > ;
+ < "till vänster" ; Default ; > ;
+ };
+ stringlist [ danish ] =
+ {
+ < "nedad" ; Default ; > ;
+ < "højre" ; Default ; > ;
+ < "opad" ; Default ; > ;
+ < "venstre" ; Default ; > ;
+ };
+ stringlist [ italian ] =
+ {
+ < "Sotto" ; Default ; > ;
+ < "Destra" ; Default ; > ;
+ < "Sopra" ; Default ; > ;
+ < "sinistra" ; Default ; > ;
+ };
+ stringlist [ spanish ] =
+ {
+ < "abajo" ; Default ; > ;
+ < "Derecha" ; Default ; > ;
+ < "arriba" ; Default ; > ;
+ < "la izquierda" ; Default ; > ;
+ };
+ stringlist [ french ] =
+ {
+ < "en bas" ; Default ; > ;
+ < "à droite" ; Default ; > ;
+ < "en haut" ; Default ; > ;
+ < "à gauche" ; Default ; > ;
+ };
+ stringlist [ dutch ] =
+ {
+ < "beneden" ; Default ; > ;
+ < "rechts" ; Default ; > ;
+ < "boven" ; Default ; > ;
+ < "links" ; Default ; > ;
+ };
+ stringlist [ portuguese ] =
+ {
+ < "para baixo" ; Default ; > ;
+ < "direita" ; Default ; > ;
+ < "para cima" ; Default ; > ;
+ < "esquerda" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "ÏÂ" ; Default ; > ;
+ < "ÓÒ" ; Default ; > ;
+ < "ÉÏ" ; Default ; > ;
+ < "×ó" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "ñíèçó" ; Default ; > ;
+ < "ñïðàâà" ; Default ; > ;
+ < "ñâåðõó" ; Default ; > ;
+ < "ñëåâà" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "w dole" ; Default ; > ;
+ < "z prawej" ; Default ; > ;
+ < "w górze" ; Default ; > ;
+ < "z lewej" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‰º" ; Default ; > ;
+ < "‰E" ; Default ; > ;
+ < "ã" ; Default ; > ;
+ < "¶" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "¤U" ; Default ; > ;
+ < "¥k" ; Default ; > ;
+ < "¤W" ; Default ; > ;
+ < "¥ª" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÃÓÝá" ; Default ; > ;
+ < "Çáíãíä" ; Default ; > ;
+ < "ÃÚáì" ; Default ; > ;
+ < "ÇáíÓÇÑ" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "êÜôù" ; Default ; > ;
+ < "äåîéÜ" ; Default ; > ;
+ < "ðÜíù" ; Default ; > ;
+ < "áñéóôåñÜ" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "¾Æ·¡" ; Default ; > ;
+ < "¿À¸¥ÂÊ" ; Default ; > ;
+ < "ˤ" ; Default ; > ;
+ < "¿ÞÂÊ" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "aþaðý" ; Default ; > ;
+ < "saða" ; Default ; > ;
+ < "yukarý" ; Default ; > ;
+ < "sola" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+ CheckBox CB_EDITMODE
+ {
+ Pos = MAP_APPFONT ( 12 , 25 ) ;
+ Size = MAP_APPFONT ( 170 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Eingabetaste schaltet in den ~Editmodus : Eingabetaste schaltet in den Editmodus */
+ Text = "Eingabetaste schaltet in den ~Editmodus" ;
+ Text [ ENGLISH ] = "Return key switches edit mode on" ;
+ Text [ english_us ] = "Press Enter to switch to ~edit mode" ;
+ Text [ swedish ] = "RETUR växlar till r~edigeringsläge" ;
+ Text [ danish ] = "Enter-tast skifter til redigeringstilstand" ;
+ Text [ italian ] = "Passa al modo modifica con Invio" ;
+ Text [ spanish ] = "~Tecla Entrar activa el modo Editar" ;
+ Text [ french ] = "Touche Entrée pour basculer dans le mode ~Édition" ;
+ Text [ dutch ] = "Met Enter komt u in de ~editeermodus" ;
+ Text [ portuguese_brazilian ] = "Eingabetaste schaltet in den Editmodus" ;
+ Text [ portuguese ] = "Tecla de entrada comuta para o modo ~Editar" ;
+ Text[ chinese_simplified ] = "°´»÷»Ø³µ¼üתÈë±à¼­Ä£Ê½(~E)";
+ Text[ russian ] = "Íàæìèòå ââîä äëÿ ïåðåêëþ÷åíèÿ â ðåæèì ïðàâêè";
+ Text[ polish ] = "Przyciœnij Enter, aby wybraæ tryb edycji";
+ Text[ japanese ] = "Enter·°‚ð‰Ÿ‚µ‚Ä•ÒWÓ°ÄÞ‚ÉØ‚è‘Ö‚¦(~E)";
+ Text[ chinese_traditional ] = "«öÀ»¦^¨®ÁäÂà¤J½s¿è¼Ò¦¡(~E)";
+ Text[ arabic ] = "ÅÖÛØ ãÝÊÇÍ ÇáÅÏÎÇá ááÊÛííÑ Åáì æÖÚ ÇáÊÍÑíÑ";
+ Text[ greek ] = "ÐáôÞóôå ôï ðëÞêôñï Enter ãéá íá áëëÜîåôå óôçí êáôÜóôáóç ~åðåîåñãáóßáò";
+ Text[ korean ] = "ÆíÁý ¸ðµå·Î ÀüȯÇϱâ À§Çؼ­ ¿£Å͸¦ ´©¸£½Ê½Ã¿À.(~E)";
+ Text[ turkish ] = "Enter tuþuna basýldýðýnda ~düzenleme kipine geçilir";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_FORMAT
+ {
+ Pos = MAP_APPFONT ( 12 , 38 ) ;
+ Size = MAP_APPFONT ( 170 , 10 ) ;
+ Text = "~Formatierung ausdehnen" ;
+ Text [ ENGLISH ] = "Expand formatting" ;
+ Text [ english_us ] = "Expand ~formatting" ;
+ Text [ swedish ] = "Expandera ~formatering" ;
+ Text [ danish ] = "Udvid formatering" ;
+ Text [ italian ] = "~Espandi formattazione" ;
+ Text [ spanish ] = "Extender ~formato" ;
+ Text [ french ] = "Expansion du ~formatage" ;
+ Text [ dutch ] = "~Opmaakomvang vergroten" ;
+ Text [ portuguese_brazilian ] = "Formatierung ausdehnen" ;
+ Text [ portuguese ] = "Alargar ~formatação" ;
+ Text[ chinese_simplified ] = "Ì×ÓÃÇ°Ò»¸öµ¥Ôª¸ñ¸ñʽ(~F)";
+ Text[ russian ] = "Ðàñòÿíóòü ôîðìàòèðîâàíèå";
+ Text[ polish ] = "Rozszerz formatowanie";
+ Text[ japanese ] = "‘Ž®‚ÌŠg’£(~F)";
+ Text[ chinese_traditional ] = "®M¥Î«e¤@­ÓÀx¦s®æªº®æ¦¡(~F)";
+ Text[ arabic ] = "ÊæÓíÚ ÇáÊäÓíÞ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "ÅðÝêôáóç ôçò ìïñ~öïðïßçóçò";
+ Text[ korean ] = "¼­½Ä ¿¬Àå(~F)";
+ Text[ turkish ] = "~Formatlamayý geniþlet";
+ };
+ CheckBox CB_RFIND
+ {
+ Pos = MAP_APPFONT ( 12 , 51 ) ;
+ Size = MAP_APPFONT ( 170 , 10 ) ;
+ Text = "~Referenzen farbig anzeigen" ;
+ Text [ ENGLISH ] = "Show colored references" ;
+ Text [ english_us ] = "~Show references in color" ;
+ Text [ portuguese_brazilian ] = "~Referenzen farbig anzeigen" ;
+ Text [ swedish ] = "Visa ~referenser i färg" ;
+ Text [ danish ] = "Vis farvede referencer" ;
+ Text [ italian ] = "~Mostra i riferimenti in colore" ;
+ Text [ spanish ] = "~Mostrar referencias en color" ;
+ Text [ french ] = "Affichage des références en ~couleur" ;
+ Text [ dutch ] = "~Verwijzingen in kleur weergeven" ;
+ Text [ portuguese ] = "~Mostrar referências com cor" ;
+ Text[ chinese_simplified ] = "ÓòÊÉ«ÏÔʾÒýÓÃ(~S)";
+ Text[ russian ] = "Ïîêàçàòü ññûëêè â öâåòå";
+ Text[ polish ] = "Poka¿ odwo³ania w kolorze";
+ Text[ japanese ] = "ŽQÆ‚ðF‚Å•\\Ž¦(~S)";
+ Text[ chinese_traditional ] = "¥Î±m¦âÅã¥Ü°Ñ·Ó(~S)";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáãÑÇÌÚ ãáæäÉ";
+ Text[ greek ] = "¸ã÷~ñùìç åìöÜíéóç ôùí ðáñáðïìðþí";
+ Text[ korean ] = "»ö»ó ÂüÁ¶ º¸À̱â(~S)";
+ Text[ turkish ] = "~Referanslarý renkli göster";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_EXPREF
+ {
+ Pos = MAP_APPFONT ( 12 , 64 ) ;
+ Size = MAP_APPFONT ( 236 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Refere~nzen beim Spalten-/Zeileneinfügen an deren Rändern ausdehnen : Refere~nzen beim Spalten-/Zeileneinf³gen an deren Rõndern ausdehnen */
+ Text = "Refere~nzen beim Spalten-/Zeileneinfügen an deren Rändern ausdehnen" ;
+ Text [ ENGLISH ] = "Expand refere~nces if inserting columns/rows at their edges" ;
+ Text [ english_us ] = "Expand ~references if new columns/rows are inserted" ;
+ Text [ portuguese_brazilian ] = "Refere~nzen beim Spalten-/Zeileneinfügen an deren Rändern ausdehnen" ;
+ Text [ swedish ] = "Utöka refere~nser vid kolumn/radinfogning vid kanterna" ;
+ Text [ danish ] = "Udvid referencer ved kanterne, når kolonner/rækker indsættes" ;
+ Text [ italian ] = "Amplia i riferimenti nell'inserimento di colonne/righe ai bordi di questi" ;
+ Text [ spanish ] = "~Expandir referencias al insertar filas/columnas en los bordes" ;
+ Text [ french ] = "Expansion de la plage de ~références si insertion de colonnes ou lignes" ;
+ Text [ dutch ] = "Ver~wijzingen bij invoegen van kolommen/rijen aan de randen verbreden" ;
+ Text [ portuguese ] = "Expandir ~referências para as margens ao inserir colunas ou linhas " ;
+ Text[ chinese_simplified ] = "ÔÚ²åÈëÐÐÁÐʱÌ×ÓÃÒýÓÃ(~R)";
+ Text[ russian ] = "Ðàñòÿãèâàòü ññûëêè ïðè âñòàâêå íîâûõ ñòîëáöîâ/ñòðîê äî èõ ïîëåé";
+ Text[ polish ] = "Rozszerz odwo³ania przy wstawia~niu kolumn i wierszy do ich krawêdzi";
+ Text[ japanese ] = "—ñ/s‚Ì‘}“üŒã‚ÉŽQÆ‚ðC³(~R)";
+ Text[ chinese_traditional ] = "¦b´¡¤J¦CÄæ®É®M¥Î°Ñ·Ó(~R)";
+ Text[ arabic ] = "ÊæÓíÚ ÇáãÑÇÌÚ ÚäÏ ÅÏÑÇÌ ÃÚãÏÉ Ãæ ÕÝæÝ";
+ Text[ greek ] = "ÅðÝêôáóç ôùí á~íáöïñþí êáôÜ ôçí åéóáãùãÞ óôçëþí/ãñáììþí";
+ Text[ korean ] = "¸¸ÀÏ »õ·Î¿î Çà°ú ¿­ÀÌ ÀԷµǸé ÂüÁ¶¸¦ ¿¬Àå(~R)";
+ Text[ turkish ] = "Yeni sütun/satýr eklendiðinde refera~nslarý kenarlardan geniþlet";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox CB_MARKHDR
+ {
+ Pos = MAP_APPFONT ( 12 , 77 ) ;
+ Size = MAP_APPFONT ( 236 , 10 ) ;
+ Text = "Se~lektion in Spalten-/Zeilenköpfen hervorheben" ;
+ Text [ ENGLISH ] = "~Highlight selection in Column-/Row Headings" ;
+ Text [ english_us ] = "~Highlight selection in column/row headings" ;
+ Text [ portuguese_brazilian ] = "Se~lektion in Spalten-/Zeilenköpfen hervorheben" ;
+ Text [ swedish ] = "Framhäv markering i ko~lumn-/radhuvuden" ;
+ Text [ danish ] = "Fremhæv markeringer i kolonne-/rækkeoverskrifter" ;
+ Text [ italian ] = "Evidenzia la se~lezione nell'intestazione di colonne/righe" ;
+ Text [ spanish ] = "Destacar selección en los encabezamientos de columna y líneas" ;
+ Text [ french ] = "~Mise en évidence de la sélection dans les en-têtes de lignes ou colonnes" ;
+ Text [ dutch ] = "Se~lectie in kolommen-/rijenkoppen accentueren" ;
+ Text [ portuguese ] = "Destacar selecção em cabeçalhos de coluna ou linhas" ;
+ Text[ chinese_simplified ] = "Í»³öÏÔʾÐÐÁбêÌâ(~H)";
+ Text[ russian ] = "Âûäåëèòü îòáîð â çàãîëîâêàõ ñòîëáöîâ/ñòðîê";
+ Text[ polish ] = "~Wyró¿nij zaznaczanie w nag³ówkach kolumn i wierszy";
+ Text[ japanese ] = "‘I‘ð‚µ‚½¾Ù‚Ìs—ñ”Ô†‚ð‹­’²•\\Ž¦(~H)";
+ Text[ chinese_traditional ] = "¬ð¥XÅã¥Ü¦CÄæ¼ÐÃD(~H)";
+ Text[ arabic ] = "ÊãííÒ ÇáÊÍÏíÏ Ýí ÑÄæÓ ÇáÃÚãÏÉ/ÇáÕÝæÝ";
+ Text[ greek ] = "ÅðéóÞìáíó~ç ôùí åðéëïãþí óå ãñáììÝò/óôÞëåò êåöáëßäùí";
+ Text[ korean ] = "¿­°ú Çà ¸Ó¸®±Û ¿¡¼­ ¼±Åà ÇÏÀ϶óÀÌÆ®(~H)";
+ Text[ turkish ] = "Sütun/satýr baþlýklarýnda seçimi ~vurgula";
+ Text[ language_user1 ] = " ";
+ };
+};
+
+
diff --git a/sc/source/ui/src/popup.src b/sc/source/ui/src/popup.src
new file mode 100644
index 000000000000..097dd72263e4
--- /dev/null
+++ b/sc/source/ui/src/popup.src
@@ -0,0 +1,1722 @@
+/*************************************************************************
+ *
+ * $RCSfile: popup.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+
+
+
+
+
+
+
+
+
+
+#include "sc.hrc" // -> #include <sfx.hrc>
+#include <basctl/basicide.hrc>
+#include <offmgr/offmenu.hrc>
+
+
+
+ // Popup-Menues ----------------------------------------------------------------
+
+String RID_POPUP_CELLS
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Popup-Menü für Zellen : Popup-Men³ f³r Zellen */
+ Text = "Popup-Menü für Zellen" ;
+ Text [ ENGLISH ] = "Cell Popup Menu" ;
+ Text [ norwegian ] = "Cell Popup Menu" ;
+ Text [ italian ] = "Menu cella di scelta rapida" ;
+ Text [ portuguese_brazilian ] = "Menu Popup da Célula" ;
+ Text [ portuguese ] = "Menu instantâneo para células" ;
+ Text [ finnish ] = "Solun kohovalikko" ;
+ Text [ danish ] = "Popop-menu for celler" ;
+ Text [ french ] = "Menu Pop-Up pour les cellules" ;
+ Text [ swedish ] = "Popupmeny för celler" ;
+ Text [ dutch ] = "PopUp-menu voor cellen" ;
+ Text [ spanish ] = "Menú emergente para celdas" ;
+ Text [ english_us ] = "Cell pop-up menu" ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñµ¯³öʽ²Ëµ¥";
+ Text[ russian ] = "Âñïëûâàþùåå ìåíþ äëÿ ÿ÷ååê";
+ Text[ polish ] = "Menu podrêczne dla komórek";
+ Text[ japanese ] = "Î߯Ìß±¯Ìß ÒÆ­° ¾Ù—p";
+ Text[ chinese_traditional ] = "Àx¦s®æ¥\\¯àªí";
+ Text[ arabic ] = "ÞÇÆãÉ ãäÈËÞÉ ááÎáÇíÇ";
+ Text[ greek ] = "Áíáäõüìåíï ìåíïý ãéá êåëéÜ";
+ Text[ korean ] = "¼¿ Æ˾÷¸Þ´º";
+ Text[ turkish ] = "Hücreler için popup mönü";
+ Text[ language_user1 ] = " ";
+};
+
+Menu RID_POPUP_CELLS
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SID_CELL_FORMAT_RESET ;
+ HelpId = SID_CELL_FORMAT_RESET ;
+ /* ### ACHTUNG: Neuer Text in Resource? Standar~d : Standard */
+ /* ### ACHTUNG: Neuer Text in Resource? Standar~d : Standard */
+ /* ### ACHTUNG: Neuer Text in Resource? Standar~d : Standard */
+ Text = "Standar~d" ;
+ Text [ ENGLISH ] = "Standar~d" ;
+ Text [ dutch ] = "~Standaard" ;
+ Text [ english_us ] = "~Default" ;
+ Text [ italian ] = "Standar~d" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "~Par défaut" ;
+ Text [ swedish ] = "Standar~d" ;
+ Text [ danish ] = "Standar~d" ;
+ Text [ portuguese_brazilian ] = "Standar~d" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text[ chinese_simplified ] = "±ê×¼(~D)";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "~Ïî óìîë÷àíèþ";
+ Text[ polish ] = "~Domyœlnie";
+ Text[ japanese ] = "•W€(~D)";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";
+ Text[ arabic ] = "ÇÝÊÑÇÖí~";
+ Text[ greek ] = "~ÐñïåðéëïãÞ";
+ Text[ korean ] = "±âº»°ª(~D)";
+ Text[ turkish ] = "~Standart";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_CELL_FORMAT ;
+ HelpId = FID_CELL_FORMAT ;
+ Text = "~Zellen formatieren..." ;
+ Text [ ENGLISH ] = "~Format Cells..." ;
+ Text [ norwegian ] = "~Format Cells..." ;
+ Text [ italian ] = "Formatta celle..." ;
+ Text [ portuguese_brazilian ] = "~Format Cells..." ;
+ Text [ portuguese ] = "Formatar ~células..." ;
+ Text [ finnish ] = "~Muotoile solut..." ;
+ Text [ danish ] = "Formater celler..." ;
+ Text [ french ] = "~Formater les cellules..." ;
+ Text [ swedish ] = "~Formatera celler..." ;
+ Text [ dutch ] = "Cellen ~opmaken..." ;
+ Text [ spanish ] = "~Formatear celdas..." ;
+ Text [ english_us ] = "Format ~Cells..." ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñ¸ñʽ»¯(~C)...";
+ Text[ russian ] = "Ôîðìàò ÿ÷ååê...";
+ Text[ polish ] = "Formatuj komórki...";
+ Text[ japanese ] = "¾Ù‚Ì‘Ž®Ý’è(~C)...";
+ Text[ chinese_traditional ] = "Àx¦s®æ®æ¦¡¤Æ(~C)...";
+ Text[ arabic ] = "...ÊäÓíÞ ÇáÎáÇíÇ";
+ Text[ greek ] = "Ìïñöï~ðïßçóç êåëéþí...";
+ Text[ korean ] = "¼¿ ¼­½Ä(~C)...";
+ Text[ turkish ] = "Hücreleri formatla...";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_INS_CELL ;
+ HelpId = FID_INS_CELL ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen ~einfügen... : Zellen einfügen... */
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen ~einfügen... : Zellen einfügen... */
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen ~einfügen... : Zellen einfügen... */
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen ~einfügen... : Zellen ~einf³gen... */
+ Text = "Zellen ~einfügen..." ;
+ Text [ ENGLISH ] = "Insert Cells..." ;
+ Text [ norwegian ] = "Insert Cells..." ;
+ Text [ italian ] = "~Inserisci celle..." ;
+ Text [ portuguese_brazilian ] = "Insert Cells..." ;
+ Text [ portuguese ] = "~Inserir células..." ;
+ Text [ finnish ] = "Lisää soluja..." ;
+ Text [ danish ] = "Indsæt celler..." ;
+ Text [ french ] = "~Insérer des cellules..." ;
+ Text [ swedish ] = "~Infoga celler..." ;
+ Text [ dutch ] = "Cellen ~invoegen..." ;
+ Text [ spanish ] = "~Insertar celdas..." ;
+ Text [ english_us ] = "Insert C~ells..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen einfügen : Zellen einf³gen */
+ Text[ chinese_simplified ] = "²åÈëµ¥Ôª¸ñ(~E)...";
+ Text[ russian ] = "Âñòàâèòü ÿ÷åéêè...";
+ Text[ polish ] = "Wstaw komórki...";
+ Text[ japanese ] = "¾Ù‚Ì‘}“ü(~E)...";
+ Text[ chinese_traditional ] = "´¡¤JÀx¦s®æ(~E)...";
+ Text[ arabic ] = "...ÅÏÑÇÌ ÎáÇíÇ";
+ Text[ greek ] = "ÐñïóèÞêç ê~åëéþí...";
+ Text[ korean ] = "¼¿ »ðÀÔ(~E)...";
+ Text[ turkish ] = "Hücre ekle...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_DELETE_CELL ;
+ HelpId = FID_DELETE_CELL ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen ~löschen... : Zellen löschen... */
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen ~löschen... : Zellen löschen... */
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen ~löschen... : Zellen löschen... */
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen ~löschen... : Zellen ~l÷schen... */
+ Text = "Zellen ~löschen..." ;
+ Text [ ENGLISH ] = "Delete Cells..." ;
+ Text [ norwegian ] = "Delete Cells..." ;
+ Text [ italian ] = "Elimina celle..." ;
+ Text [ portuguese_brazilian ] = "Delete Cells..." ;
+ Text [ portuguese ] = "Eliminar ~células..." ;
+ Text [ finnish ] = "Poista soluja..." ;
+ Text [ danish ] = "Slet celler..." ;
+ Text [ french ] = "Supprimer des ce~llules..." ;
+ Text [ swedish ] = "Radera ce~ller..." ;
+ Text [ dutch ] = "Cellen ~wissen..." ;
+ Text [ spanish ] = "~Eliminar celdas..." ;
+ Text [ english_us ] = "~Delete Cells..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ausgewählte Zellen, Zeilen oder Spalten löschen : Ausgewõhlte Zellen, Zeilen oder Spalten l÷schen */
+ Text[ chinese_simplified ] = "ɾ³ýµ¥Ôª¸ñ(~D)...";
+ Text[ russian ] = "Óäàëèòü ÿ÷åéêè...";
+ Text[ polish ] = "Usuñ komórki...";
+ Text[ japanese ] = "¾Ù‚Ìíœ(~D)...";
+ Text[ chinese_traditional ] = "§R°£Àx¦s®æ(~D)...";
+ Text[ arabic ] = "...ÍÐÝ ÎáÇíÇ";
+ Text[ greek ] = "ÄéáãñáöÞ êå~ëéþí...";
+ Text[ korean ] = "¼¿ »èÁ¦(~D)...";
+ Text[ turkish ] = "Hücre sil...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_DELETE ;
+ HelpId = SID_DELETE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Inhalte l~öschen... : Inhalte löschen... */
+ /* ### ACHTUNG: Neuer Text in Resource? Inhalte l~öschen... : Inhalte löschen... */
+ /* ### ACHTUNG: Neuer Text in Resource? Inhalte l~öschen... : Inhalte löschen... */
+ /* ### ACHTUNG: Neuer Text in Resource? Inhalte l~öschen... : Inhalte l~÷schen... */
+ Text = "Inhalte lö~schen..." ;
+ Text [ ENGLISH ] = "Delete Data..." ;
+ Text [ norwegian ] = "Delete Data..." ;
+ Text [ italian ] = "Elimina contenuti..." ;
+ Text [ portuguese_brazilian ] = "Delete Data..." ;
+ Text [ portuguese ] = "Eliminar co~nteúdos..." ;
+ Text [ finnish ] = "Poista tiedot..." ;
+ Text [ danish ] = "Slet indhold..." ;
+ Text [ french ] = "Supprimer du ~contenu..." ;
+ Text [ swedish ] = "Ra~dera innehåll..." ;
+ Text [ dutch ] = "I~nhoud wissen..." ;
+ Text [ spanish ] = "Eliminar contenidos..." ;
+ Text [ english_us ] = "D~elete Contents..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ausgewählte Inhalte löschen (Formeln, Formate etc.) : Ausgewõhlte Inhalte l÷schen (Formeln, Formate etc.) */
+ Text[ chinese_simplified ] = "ɾ³ýÄÚÈÝ(~E)...";
+ Text[ russian ] = "Óäàëèòü ñîäåðæèìîå...";
+ Text[ polish ] = "Usuñ zawartoœci...";
+ Text[ japanese ] = "“à—e‚Ìíœ(~E)...";
+ Text[ chinese_traditional ] = "§R°£¤º®e(~E)...";
+ Text[ arabic ] = "...ÍÐÝ ãÍÊæíÇÊ";
+ Text[ greek ] = "Äéáãñá~öÞ ðåñéå÷ïìÝíùí...";
+ Text[ korean ] = "³»¿ë »èÁ¦(~E)...";
+ Text[ turkish ] = "Ýçerikleri sil...";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+
+ MenuItem
+ {
+ Identifier = SID_CUT ;
+ HelpId = SID_CUT ;
+ Text = "Auss~chneiden" ;
+ Text [ ENGLISH ] = "~Cut" ;
+ Text [ norwegian ] = "~Cut" ;
+ Text [ italian ] = "Taglia" ;
+ Text [ portuguese_brazilian ] = "~Recortar" ;
+ Text [ portuguese ] = "~Cortar" ;
+ Text [ finnish ] = "~Leikkaa" ;
+ Text [ danish ] = "~Klip" ;
+ Text [ french ] = "~Couper" ;
+ Text [ swedish ] = "~Klipp ut" ;
+ Text [ dutch ] = "K~nippen" ;
+ Text [ spanish ] = "~Cortar" ;
+ Text [ english_us ] = "Cu~t" ;
+ Text[ chinese_simplified ] = "¼ô³ý(~T)";
+ Text[ russian ] = "Âûðåçàòü";
+ Text[ polish ] = "Wytnij";
+ Text[ japanese ] = "Ø‚èŽæ‚è(~T)";
+ Text[ chinese_traditional ] = "°Å¤U(~T)";
+ Text[ arabic ] = "ÞÕ";
+ Text[ greek ] = "Á~ðïêïðÞ";
+ Text[ korean ] = "À߶󳻱â(~T)";
+ Text[ turkish ] = "~Kes";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_COPY ;
+ HelpId = SID_COPY ;
+ Text = "Kopie~ren" ;
+ Text [ ENGLISH ] = "C~opy" ;
+ Text [ norwegian ] = "C~opy" ;
+ Text [ italian ] = "Copia" ;
+ Text [ portuguese_brazilian ] = "C~opiar" ;
+ Text [ portuguese ] = "C~opiar" ;
+ Text [ finnish ] = "K~opioi" ;
+ Text [ danish ] = "K~opier" ;
+ Text [ french ] = "Co~pier" ;
+ Text [ swedish ] = "K~opiera" ;
+ Text [ dutch ] = "~Kopiëren" ;
+ Text [ spanish ] = "C~opiar" ;
+ Text [ english_us ] = "~Copy" ;
+ Text[ chinese_simplified ] = "¸´ÖÆ(~C)";
+ Text[ russian ] = "Êîïèðîâàòü";
+ Text[ polish ] = "Kopiuj";
+ Text[ japanese ] = "ºËß°(~C)";
+ Text[ chinese_traditional ] = "½Æ»s(~C)";
+ Text[ arabic ] = "äÓÎ";
+ Text[ greek ] = "Áíôé~ãñáöÞ";
+ Text[ korean ] = "º¹»ç(~C)";
+ Text[ turkish ] = "K~opyala";
+ Text[ language_user1 ] = " ";
+ };
+
+ MenuItem
+ {
+ Identifier = SID_PASTE ;
+ HelpID = SID_PASTE ;
+ Text = "E~infügen" ;
+ Text [ English ] = "~Paste" ;
+ Text [ norwegian ] = "~Paste" ;
+ Text [ italian ] = "~Incolla" ;
+ Text [ portuguese_brazilian ] = "Colar" ;
+ Text [ portuguese ] = "~Inserir" ;
+ Text [ finnish ] = "L~iitä" ;
+ Text [ danish ] = "Sæt i~nd" ;
+ Text [ french ] = "Coller" ;
+ Text [ swedish ] = "K~listra in" ;
+ Text [ dutch ] = "~Invoegen" ;
+ Text [ spanish ] = "P~egar" ;
+ Text [ english_us ] = "~Paste" ;
+ Text[ chinese_simplified ] = "²åÈë(~P)";
+ Text[ russian ] = "~Âñòàâèòü";
+ Text[ polish ] = "~Wstaw";
+ Text[ japanese ] = "‘}“ü(~P)";
+ Text[ chinese_traditional ] = "´¡¤J(~P)";
+ Text[ arabic ] = "áÕÞ";
+ Text[ greek ] = "Å~éóáãùãÞ";
+ Text[ korean ] = "ºÙ¿©³Ö±â(~P)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+ };
+
+ MenuItem
+ {
+ Identifier = FID_PASTE_CONTENTS ;
+ HelpId = FID_PASTE_CONTENTS ;
+ Text = "In~halte einfügen..." ;
+ Text [ ENGLISH ] = "Paste ~Special..." ;
+ Text [ norwegian ] = "Paste ~Special..." ;
+ Text [ italian ] = "Incolla ~speciale..." ;
+ Text [ portuguese_brazilian ] = "Colar ~Especial..." ;
+ Text [ portuguese ] = "Colar e~special..." ;
+ Text [ finnish ] = "Liitä ~määräten..." ;
+ Text [ danish ] = "Indsæt ind~hold..." ;
+ Text [ french ] = "Collage spécial..." ;
+ Text [ swedish ] = "Klistra in innehåll..." ;
+ Text [ dutch ] = "~Plakken speciaal..." ;
+ Text [ spanish ] = "Pega~do especial..." ;
+ Text [ english_us ] = "Paste Special..." ;
+ Text[ chinese_simplified ] = "²åÈëÄÚÈÝ...";
+ Text[ russian ] = "Ñï~åöèàëüíàÿ âñòàâêà...";
+ Text[ polish ] = "~Wklej zawartoϾ...";
+ Text[ japanese ] = "Œ`Ž®‚ð‘I‘ð‚µ‚Ä“\\‚è•t‚¯(~S)...";
+ Text[ chinese_traditional ] = "´¡¤J¤º®e(~S)...";
+ Text[ arabic ] = "áÕÞ ÎÇÕ...";
+ Text[ greek ] = "ÅéäéêÞ åðéêüëë~çóç...";
+ Text[ korean ] = "¼±ÅÃÇÏ¿© ºÙ¿©³Ö±â...";
+ Text[ turkish ] = "Özel yapýþtýr...";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_NOTE_VISIBLE ;
+ HelpId = FID_NOTE_VISIBLE ;
+ Text = "~Notiz anzeigen" ;
+ Text [ ENGLISH ] = "Show ~Note" ;
+ Text [ english_us ] = "~Show Note" ;
+ Text [ swedish ] = "~Visa anteckning" ;
+ Text [ danish ] = "Vis note" ;
+ Text [ italian ] = "Mostra nota" ;
+ Text [ spanish ] = "~Mostrar nota" ;
+ Text [ french ] = "Afficher la ~note" ;
+ Text [ dutch ] = "~Aantekening weergeven" ;
+ Text [ portuguese_brazilian ] = "~Notiz anzeigen" ;
+ Text [ portuguese ] = "~Mostrar anotação" ;
+ Text[ chinese_simplified ] = "ÏÔʾ±¸×¢(~S)";
+ Text[ russian ] = "Ïîêàçàòü ïðèìå÷àíèÿ";
+ Text[ polish ] = "Poka¿ notatkê";
+ Text[ japanese ] = "ºÒÝÄ‚Ì•\\Ž¦(~S)";
+ Text[ chinese_traditional ] = "Åã¥Ü³Æµù(~S)";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáãáÇÍÙÉ";
+ Text[ greek ] = "ÅìöÜ~íéóç óçìåßùóçò";
+ Text[ korean ] = "¸Þ¸ðº¸±â(~S)";
+ Text[ turkish ] = "Notu görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = SID_DATA_SELECT ;
+ HelpId = SID_DATA_SELECT ;
+ /* ### ACHTUNG: Neuer Text in Resource? Aus~wahlliste... : Auswahlliste... */
+ /* ### ACHTUNG: Neuer Text in Resource? Aus~wahlliste... : Auswahlliste... */
+ /* ### ACHTUNG: Neuer Text in Resource? Aus~wahlliste... : Auswahlliste... */
+ Text = "Aus~wahlliste..." ;
+ Text [ ENGLISH ] = "Select..." ;
+ Text [ english_us ] = "Se~lection List..." ;
+ Text [ italian ] = "Lista di scelta..." ;
+ Text [ spanish ] = "~Lista de selección..." ;
+ Text [ french ] = "~Liste de sélection..." ;
+ Text [ dutch ] = "~Keuzelijst..." ;
+ Text [ swedish ] = "~Urvalslista..." ;
+ Text [ danish ] = "Udvalgsliste..." ;
+ Text [ portuguese_brazilian ] = "Aus~wahlliste..." ;
+ Text [ portuguese ] = "~Lista de selecção..." ;
+ Text[ chinese_simplified ] = "Ñ¡ÔñÁе¥(~L)...";
+ Text[ russian ] = "Ñïèñîê âûáîðà...";
+ Text[ polish ] = "Lista wyboru...";
+ Text[ japanese ] = "‘I‘ðؽÄ(~L)...";
+ Text[ chinese_traditional ] = "¿ï¾Ü¦Cªí(~L)...";
+ Text[ arabic ] = "ÞÇÆãÉ ÇáÊÍÏíÏ...";
+ Text[ greek ] = "Ëßóôá åðéëï~ãþí...";
+ Text[ korean ] = "¼±Åø®½ºÆ®(~L)...";
+ Text[ turkish ] = "Seçim listesi...";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+String RID_POPUP_TAB
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Popup-Menü für Tabellenleiste : Popup-Men³ f³r Tabellenleiste */
+ Text = "Popup-Menü für Tabellenleiste" ;
+ Text [ ENGLISH ] = "Table Control Popup Menu" ;
+ Text [ norwegian ] = "Table Control Popup Menu" ;
+ Text [ italian ] = "Menu di scelta rapida per barra tabella" ;
+ Text [ portuguese_brazilian ] = "Menu Popup de Controle da Tabela" ;
+ Text [ portuguese ] = "Menu instantâneo para barra de tabelas" ;
+ Text [ finnish ] = "Taulukon hallinnan kohovalikko" ;
+ Text [ danish ] = "Popup-menu for regnearkslinjen" ;
+ Text [ french ] = "Menu Pop-Up pour la barre des tables" ;
+ Text [ swedish ] = "Popupmeny för tabellist" ;
+ Text [ dutch ] = "PopUp-menu voor werkbladenbalk" ;
+ Text [ spanish ] = "Menú emergente para la barra de hojas" ;
+ Text [ english_us ] = "Sheet bar pop-up menu" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í¿òµÄµ¯³öʽ²Ëµ¥";
+ Text[ russian ] = "Âñïëûâàþùåå ìåíþ äëÿ ïàíåëè ëèñòà";
+ Text[ polish ] = "Menu podrêczne dla paska arkusza";
+ Text[ japanese ] = "Î߯Ìß±¯ÌßÒÆ­° ¼°ÄÊÞ°—p";
+ Text[ chinese_traditional ] = "¤u§@ªí¤u¨ã¦Cªº¥\\¯àªí";
+ Text[ arabic ] = "ÞÇÆãÉ ãäÈËÞÉ áÔÑíØ ÌÏæá";
+ Text[ greek ] = "Áíáäõüìåíï ìåíïý ãéá ãñáììÞ ðßíáêá";
+ Text[ korean ] = "½ÃÆ® ¹Ù Æ˾÷¸Þ´º";
+ Text[ turkish ] = "Tablo çubuðu için popup mönü";
+ Text[ language_user1 ] = " ";
+};
+
+Menu RID_POPUP_TAB
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = FID_INS_TABLE ;
+ HelpId = FID_INS_TABLE ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Einfügen... : ~Einf³gen... */
+ Text = "~Einfügen..." ;
+ Text [ ENGLISH ] = "~Insert..." ;
+ Text [ norwegian ] = "Insert..." ;
+ Text [ italian ] = "~Inserisci..." ;
+ Text [ portuguese_brazilian ] = "~Inserir..." ;
+ Text [ portuguese ] = "~Inserir..." ;
+ Text [ finnish ] = "Lisää..." ;
+ Text [ danish ] = "~Indsæt..." ;
+ Text [ french ] = "~Insérer..." ;
+ Text [ swedish ] = "~Infoga..." ;
+ Text [ dutch ] = "~Invoegen..." ;
+ Text [ spanish ] = "~Insertar..." ;
+ Text [ english_us ] = "~Insert..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Tabelle einfügen : Tabelle einf³gen */
+ Text[ chinese_simplified ] = "²åÈë(~I)...";
+ Text[ russian ] = "Âñòàâêà...";
+ Text[ polish ] = "W~staw...";
+ Text[ japanese ] = "‘}“ü(~I)...";
+ Text[ chinese_traditional ] = "´¡¤J(~I)...";
+ Text[ arabic ] = "ÅÏÑÇÌ...";
+ Text[ greek ] = "~ÅéóáãùãÞ...";
+ Text[ korean ] = "»ðÀÔ(~I)...";
+ Text[ turkish ] = "~Ekle...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_DELETE_TABLE ;
+ HelpId = FID_DELETE_TABLE ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen... : ~L÷schen... */
+ Text = "~Löschen..." ;
+ Text [ ENGLISH ] = "~Delete..." ;
+ Text [ norwegian ] = "Slett..." ;
+ Text [ italian ] = "Elimina..." ;
+ Text [ portuguese_brazilian ] = "Apagar..." ;
+ Text [ portuguese ] = "E~liminar..." ;
+ Text [ finnish ] = "Poista..." ;
+ Text [ danish ] = "Slet..." ;
+ Text [ french ] = "~Supprimer..." ;
+ Text [ swedish ] = "~Radera..." ;
+ Text [ dutch ] = "~Wissen..." ;
+ Text [ spanish ] = "~Eliminar..." ;
+ Text [ english_us ] = "~Delete..." ;
+ /* ### ACHTUNG: Neuer Text in Resource? Ausgewählte Tabellen löschen : Ausgewõhlte Tabellen l÷schen */
+ Text[ chinese_simplified ] = "ɾ³ý(~D)...";
+ Text[ russian ] = "Óäàëèòü...";
+ Text[ polish ] = "Usuñ...";
+ Text[ japanese ] = "íœ(~D)...";
+ Text[ chinese_traditional ] = "§R°£(~D)...";
+ Text[ arabic ] = "ÍÐÝ...";
+ Text[ greek ] = "Äéáãñá~öÞ...";
+ Text[ korean ] = "»èÁ¦(~D)...";
+ Text[ turkish ] = "~Sil...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_TAB_MENU_RENAME ;
+ HelpId = FID_TAB_MENU_RENAME ;
+ Text = "~Umbenennen..." ;
+ Text [ ENGLISH ] = "~Rename..." ;
+ Text [ norwegian ] = "Rename..." ;
+ Text [ italian ] = "Rinomina..." ;
+ Text [ portuguese_brazilian ] = "Rename..." ;
+ Text [ portuguese ] = "~Mudar nome..." ;
+ Text [ finnish ] = "Nimeä..." ;
+ Text [ danish ] = "Omdøb..." ;
+ Text [ french ] = "Ren~ommer..." ;
+ Text [ swedish ] = "~Byt namn..." ;
+ Text [ dutch ] = "~Naam wijzigen..." ;
+ Text [ spanish ] = "~Cambiar nombre..." ;
+ Text [ english_us ] = "~Rename..." ;
+ Text[ chinese_simplified ] = "ÖØÃüÃû(~R)...";
+ Text[ russian ] = "Ïåðåèìåíîâàòü...";
+ Text[ polish ] = "Zmieñ nazwê...";
+ Text[ japanese ] = "–¼‘O‚Ì•ÏX(~R)...";
+ Text[ chinese_traditional ] = "­«·s©R¦W(~R)...";
+ Text[ arabic ] = "ÅÚÇÏÉ ÊÓãíÉ...";
+ Text[ greek ] = "~Ìåôïíïìáóßá...";
+ Text[ korean ] = "À̸§ ¹Ù²Ù±â(~R)...";
+ Text[ turkish ] = "Ye~niden adlandýr...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_TAB_MOVE ;
+ HelpId = FID_TAB_MOVE ;
+ Text = "~Verschieben/kopieren..." ;
+ Text [ ENGLISH ] = "~Move/Copy..." ;
+ Text [ norwegian ] = "Move/Copy..." ;
+ Text [ italian ] = "Sposta/copia..." ;
+ Text [ portuguese_brazilian ] = "Move/Copy..." ;
+ Text [ portuguese ] = "~Mover/Copiar..." ;
+ Text [ finnish ] = "Siirrä/Kopioi..." ;
+ Text [ danish ] = "Flyt/kopier..." ;
+ Text [ french ] = "~Déplacer/Copier..." ;
+ Text [ swedish ] = "~Flytta/kopiera..." ;
+ Text [ dutch ] = "~Verplaatsen/kopiëren..." ;
+ Text [ spanish ] = "~Desplazar/Copiar..." ;
+ Text [ english_us ] = "~Move/Copy..." ;
+ Text[ chinese_simplified ] = "Òƶ¯/¸´ÖÆ(~M)...";
+ Text[ russian ] = "Ïåðåìåñòèòü/ñêîïèðîâàòü...";
+ Text[ polish ] = "Przesuñ/Kopiuj...";
+ Text[ japanese ] = "ˆÚ“®/ºËß°(~M)...";
+ Text[ chinese_traditional ] = "²¾°Ê/½Æ»s(~M)...";
+ Text[ arabic ] = "ÅÒÇÍÉ/äÓÎ...";
+ Text[ greek ] = "Ìåôáêßíçóç/Á~íôéãñáöÞ...";
+ Text[ korean ] = "À̵¿/º¹»ç(~M)...";
+ Text[ turkish ] = "Taþý/kopyala...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_TAB_SELECTALL ;
+ HelpId = FID_TAB_SELECTALL ;
+ /* ### ACHTUNG: Neuer Text in Resource? Alle ~Tabellen auswählen : Alle Tabellen auswählen */
+ /* ### ACHTUNG: Neuer Text in Resource? Alle ~Tabellen auswählen : Alle Tabellen auswählen */
+ /* ### ACHTUNG: Neuer Text in Resource? Alle ~Tabellen auswählen : Alle Tabellen auswählen */
+ /* ### ACHTUNG: Neuer Text in Resource? Alle ~Tabellen auswählen : Alle ~Tabellen auswõhlen */
+ Text = "Alle ~Tabellen auswählen" ;
+ Text [ ENGLISH ] = "~Select All" ;
+ Text [ norwegian ] = "Select All" ;
+ Text [ italian ] = "Seleziona tutte le tabelle" ;
+ Text [ portuguese_brazilian ] = "Selecionar Tudo" ;
+ Text [ portuguese ] = "Seleccionar ~todas" ;
+ Text [ finnish ] = "Valitse kaikki" ;
+ Text [ danish ] = "Marker alle ark" ;
+ Text [ french ] = "Sélectionne~r toutes les feuilles" ;
+ Text [ swedish ] = "~Välj alla tabeller" ;
+ Text [ dutch ] = "~Alle werkbladen selecteren" ;
+ Text [ spanish ] = "~Seleccionar todas" ;
+ Text [ english_us ] = "Select All S~heets" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Alle Tabellen auswählen : Alle Tabellen auswõhlen */
+ Text[ chinese_simplified ] = "Ñ¡ÔñÈ«²¿¹¤×÷±í(~H)";
+ Text[ russian ] = "Âûäåëèòü âñå";
+ Text[ polish ] = "Zaznacz wszystkie arkusze";
+ Text[ japanese ] = "‚·‚ׂĂ̕\\‚ð‘I‘ð(~H)";
+ Text[ chinese_traditional ] = "¿ï¾Ü¥þ³¡ªº¤u§@ªí(~H)";
+ Text[ arabic ] = "ÊÍÏíÏ ßá ÇáÌÏÇæá";
+ Text[ greek ] = "ÅðéëïãÞ üëùí ôùí ~ðéíÜêùí";
+ Text[ korean ] = "Àüü ½ÃÆ® ¼±ÅÃ(~H)";
+ Text[ turkish ] = "Tüm tablolarý seç";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+String RID_POPUP_PIVOT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Popup-Menü für den Datenpilot : Popup-Men³ f³r den Datenpilot */
+ Text = "Popup-Menü für den Datenpilot" ;
+ Text [ ENGLISH ] = "Data Pilot Popup Menu" ;
+ Text [ norwegian ] = "Data Pilot Popup Menu" ;
+ Text [ italian ] = "Menu a scelta rapida DataPilot" ;
+ Text [ portuguese_brazilian ] = "Data Pilot Popup Menu" ;
+ Text [ portuguese ] = "Menu instantâneo para o piloto de dados" ;
+ Text [ french ] = "Menu Pop-Up pour le DataPilote" ;
+ Text [ dutch ] = "PopUp-menu voor DataPiloot" ;
+ Text [ spanish ] = "Menú emergente del piloto de datos" ;
+ Text [ danish ] = "Popup-menu for datapiloten" ;
+ Text [ swedish ] = "Popupmeny för datapiloten" ;
+ Text [ finnish ] = "Data Pilot Popup Menu" ;
+ Text [ english_us ] = "DataPilot pop-up menu" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀíµ¯³öʽ²Ëµ¥";
+ Text[ russian ] = "Âñïëûâàþùåå ìåíþ äëÿ ñâîäíîé òàáëèöû";
+ Text[ polish ] = "Menu podrêczne dla Pilota danych";
+ Text[ japanese ] = "Î߯Ìß±¯ÌßÒÆ­° ÃÞ°À Ê߲ۯėp";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z§ÖÅã¥\\¯àªí";
+ Text[ arabic ] = "ÞÇÆãÉ ãäÈËÞÉ ááãÑÔÏ ÇáÂáí ááÈíÇäÇÊ";
+ Text[ greek ] = "Áíáäõüìåíï ìåíïý ãéá ôïí ðéëüôï äåäïìÝíùí";
+ Text[ korean ] = "Å×ÀÌÅÍ ÆÄÀÏ·µ Æ˾÷¸Þ´º";
+ Text[ turkish ] = "Veri pilotu için popup mönü";
+ Text[ language_user1 ] = " ";
+};
+
+Menu RID_POPUP_PIVOT
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SID_OPENDLG_PIVOTTABLE ;
+ HelpId = SID_OPENDLG_PIVOTTABLE ;
+ Text = "~Aufrufen..." ;
+ Text [ ENGLISH ] = "~Run..." ;
+ Text [ norwegian ] = "~Run..." ;
+ Text [ italian ] = "A~vvia..." ;
+ Text [ portuguese_brazilian ] = "~Run..." ;
+ Text [ portuguese ] = "~Activar..." ;
+ Text [ french ] = "~Activer..." ;
+ Text [ dutch ] = "~Oproepen..." ;
+ Text [ spanish ] = "~Activar..." ;
+ Text [ danish ] = "Aktiver..." ;
+ Text [ swedish ] = "~Kör..." ;
+ Text [ finnish ] = "~Run..." ;
+ Text [ english_us ] = "~Start..." ;
+ Text[ chinese_simplified ] = "Æô¶¯(~S)...";
+ Text[ russian ] = "Âûçâàòü...";
+ Text[ polish ] = "Rozpoczynaj...";
+ Text[ japanese ] = "ŒÄ‚Ño‚·(~S)...";
+ Text[ chinese_traditional ] = "±Ò°Ê(~S)...";
+ Text[ arabic ] = "ÈÏÁ...";
+ Text[ greek ] = "Åíåñã~ïðïßçóç...";
+ Text[ korean ] = "½ÃÀÛ(~S)...";
+ Text[ turkish ] = "Baþlat...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_PIVOT_RECALC ;
+ HelpId = SID_PIVOT_RECALC ;
+ /* ### ACHTUNG: Neuer Text in Resource? A~ktualisieren : Aktualisieren */
+ /* ### ACHTUNG: Neuer Text in Resource? A~ktualisieren : Aktualisieren */
+ /* ### ACHTUNG: Neuer Text in Resource? A~ktualisieren : Aktualisieren */
+ Text = "A~ktualisieren" ;
+ Text [ ENGLISH ] = "~Update" ;
+ Text [ norwegian ] = "~Update" ;
+ Text [ italian ] = "Aggiorna" ;
+ Text [ portuguese_brazilian ] = "~Atualizar" ;
+ Text [ portuguese ] = "A~ctualizar" ;
+ Text [ finnish ] = "~Laske uudelleen" ;
+ Text [ danish ] = "Opdater" ;
+ Text [ french ] = "A~ctualiser" ;
+ Text [ swedish ] = "~Uppdatera" ;
+ Text [ dutch ] = "~Actualiseren" ;
+ Text [ spanish ] = "A~ctualizar" ;
+ Text [ english_us ] = "~Refresh" ;
+ Text[ chinese_simplified ] = "¸üÐÂ(~R)";
+ Text[ russian ] = "Îáíîâèòü";
+ Text[ polish ] = "Aktualizuj";
+ Text[ japanese ] = "XV(~R)";
+ Text[ chinese_traditional ] = "§ó·s(~R)";
+ Text[ arabic ] = "ÊÍÏíË";
+ Text[ greek ] = "Å~íçìÝñùóç";
+ Text[ korean ] = "»õ·Î°íħ(~R)";
+ Text[ turkish ] = "Güncelle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_PIVOT_KILL ;
+ HelpId = SID_PIVOT_KILL ;
+ /* ### ACHTUNG: Neuer Text in Resource? L~öschen : Löschen */
+ /* ### ACHTUNG: Neuer Text in Resource? L~öschen : Löschen */
+ /* ### ACHTUNG: Neuer Text in Resource? L~öschen : Löschen */
+ /* ### ACHTUNG: Neuer Text in Resource? L~öschen : L~÷schen */
+ Text = "L~öschen" ;
+ Text [ ENGLISH ] = "~Delete" ;
+ Text [ norwegian ] = "~Slett" ;
+ Text [ italian ] = "Elimina" ;
+ Text [ portuguese_brazilian ] = "~Apagar" ;
+ Text [ portuguese ] = "E~liminar" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "~Wissen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Delete" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Löschen einer bestehenden Datenpilot-Tabelle : L÷schen einer bestehenden Datenpilot-Tabelle */
+ Text[ chinese_simplified ] = "ɾ³ý(~D)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~D)";
+ Text[ chinese_traditional ] = "§R°£(~D)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "Äéáãñá~öÞ";
+ Text[ korean ] = "»èÁ¦(~D)";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+String RID_POPUP_PREVIEW
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Popup-Menü für Seitenvorschau : Popup-Men³ f³r Seitenvorschau */
+ Text = "Popup-Menü für Seitenvorschau" ;
+ Text [ ENGLISH ] = "Page Preview Popup Menu" ;
+ Text [ norwegian ] = "Page Preview Popup Menu" ;
+ Text [ italian ] = "Menu di scelta rapida per l'anteprima pagina" ;
+ Text [ portuguese_brazilian ] = "Page Preview Popup Menu" ;
+ Text [ portuguese ] = "Menu instantâneo para visualizar página" ;
+ Text [ finnish ] = "Page Preview Popup Menu" ;
+ Text [ danish ] = "Popup-menu for sidevisning" ;
+ Text [ french ] = "Menu Pop-Up pour l'aperçu de page" ;
+ Text [ swedish ] = "Popupmeny för sidförhandsvisning" ;
+ Text [ dutch ] = "PopUp-menu voor paginavoorbeeld" ;
+ Text [ spanish ] = "Menú para previsualización" ;
+ Text [ english_us ] = "Page Preview pop-up menu" ;
+ Text[ chinese_simplified ] = "Ò³ÃæÔ¤ÊÓµ¯³öʽ²Ëµ¥";
+ Text[ russian ] = "Âñïëûâàþùåå ìåíþ äëÿ ïðåäâàðèòåëüíîãî ïðîñìîòðà ñòðàíèöû";
+ Text[ polish ] = "Menu podrêczne dla podgl¹du stron";
+ Text[ japanese ] = "Î߯Ìß±¯ÌÒÆ­° Íß°¼ÞÌßÚËÞ­°";
+ Text[ chinese_traditional ] = "­¶­±À˵ø¥\\¯àªí";
+ Text[ arabic ] = "ÞÇÆãÉ ãäÈËÞÉ áãÚÇíäÉ ÇáÕÝÍÉ";
+ Text[ greek ] = "Áíáäõüìåíï ìåíïý ðñïåðéóêüðçóçò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ¹Ì¸®º¸±â Æ˾÷¸Þ´º";
+ Text[ turkish ] = "Sayfa önizlemesi için popup mönü";
+ Text[ language_user1 ] = " ";
+};
+
+Menu RID_POPUP_PREVIEW
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SID_PREVIEW_PREVIOUS ;
+ HelpId = SID_PREVIEW_PREVIOUS ;
+ Text = "~Vorhergehende Seite" ;
+ Text [ ENGLISH ] = "~Previous page" ;
+ Text [ norwegian ] = "Forrige side" ;
+ Text [ italian ] = "Pagina ~precedente" ;
+ Text [ portuguese_brazilian ] = "Anterior página" ;
+ Text [ portuguese ] = "Página ~anterior" ;
+ Text [ finnish ] = "Previous page" ;
+ Text [ danish ] = "Forrige side" ;
+ Text [ french ] = "~Page précédente" ;
+ Text [ swedish ] = "~Föregående sida" ;
+ Text [ dutch ] = "Vo~rige pagina" ;
+ Text [ spanish ] = "Página ~anterior" ;
+ Text [ english_us ] = "~Previous Page" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Auf die vorhergehende Seite blättern : Auf die vorhergehende Seite blõttern */
+ Text[ chinese_simplified ] = "ÉÏÒ»Ò³(~P)";
+ Text[ russian ] = "Ïðåäûäóùàÿ ñòðàíèöà";
+ Text[ polish ] = "Poprzednia strona";
+ Text[ japanese ] = "‘O‚ÌÍß°¼Þ(~P)";
+ Text[ chinese_traditional ] = "¤W¤@­¶(~P)";
+ Text[ arabic ] = "ÇáÕÝÍÉ ÇáÓÇÈÞÉ";
+ Text[ greek ] = "Ð~ñïçãïýìåíç óåëßäá";
+ Text[ korean ] = "ÀÌÀü ÆäÀÌÁö(~P)";
+ Text[ turkish ] = "Önceki sayfa";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_PREVIEW_NEXT ;
+ HelpId = SID_PREVIEW_NEXT ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Nächste Seite : ~Nõchste Seite */
+ Text = "~Nächste Seite" ;
+ Text [ ENGLISH ] = "~Next page" ;
+ Text [ norwegian ] = "Neste side" ;
+ Text [ italian ] = "Pagina successiva" ;
+ Text [ portuguese_brazilian ] = "Próxima página" ;
+ Text [ portuguese ] = "Página ~seguinte" ;
+ Text [ finnish ] = "Next page" ;
+ Text [ danish ] = "Næste side" ;
+ Text [ french ] = "Page ~suivante" ;
+ Text [ swedish ] = "~Nästa sida" ;
+ Text [ dutch ] = "Vo~lgende pagina" ;
+ Text [ spanish ] = "~Página siguiente" ;
+ Text [ english_us ] = "~Next Page" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Auf die nächste Seite blättern : Auf die nõchste Seite blõttern */
+ Text[ chinese_simplified ] = "ÏÂÒ»Ò³(~N)";
+ Text[ russian ] = "Ñëåäóþùàÿ ñòðàíèöà";
+ Text[ polish ] = "Nastêpna strona";
+ Text[ japanese ] = "ŽŸ‚ÌÍß°¼Þ(~N)";
+ Text[ chinese_traditional ] = "¤U¤@­¶(~N)";
+ Text[ arabic ] = "ÇáÕÝÍÉ ÇáÊÇáíÉ";
+ Text[ greek ] = "Åðüìå~íç óåëßäá";
+ Text[ korean ] = "´ÙÀ½ÆäÀÌÁö(~N)";
+ Text[ turkish ] = "Sonraki sayfa";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_FORMATPAGE ;
+ HelpId = SID_FORMATPAGE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Seiten~layout... : Seitenlayout... */
+ /* ### ACHTUNG: Neuer Text in Resource? Seiten~layout... : Seitenlayout... */
+ /* ### ACHTUNG: Neuer Text in Resource? Seiten~layout... : Seitenlayout... */
+ Text = "Seiten~layout..." ;
+ Text [ ENGLISH ] = "Page ~layout..." ;
+ Text [ norwegian ] = "Page layout..." ;
+ Text [ italian ] = "Layout di pagina..." ;
+ Text [ portuguese_brazilian ] = "Page layout..." ;
+ Text [ portuguese ] = "Configurar ~página..." ;
+ Text [ finnish ] = "Page layout..." ;
+ Text [ danish ] = "Sidelayout..." ;
+ Text [ french ] = "~Mise en page..." ;
+ Text [ swedish ] = "Sid~layout..." ;
+ Text [ dutch ] = "~Pagina-lay-out..." ;
+ Text [ spanish ] = "~Diseño de página..." ;
+ Text [ english_us ] = "Pa~ge Layout..." ;
+ Text[ chinese_simplified ] = "Ò³Ãæ°æʽ(~G)...";
+ Text[ russian ] = "Ðàçìåòêà ñòðàíèöû...";
+ Text[ polish ] = "Uk³ad strony...";
+ Text[ japanese ] = "Íß°¼Þ Ú²±³Ä(~G)...";
+ Text[ chinese_traditional ] = "­¶­±ª©¦¡(~G)...";
+ Text[ arabic ] = "ÊÎØíØ ÇáÕÝÍÉ...";
+ Text[ greek ] = "ÄéÜô~áîç óåëßäáò...";
+ Text[ korean ] = "ÆäÀÌÁö ¸ð¾ç(~G)...";
+ Text[ turkish ] = "Sayfa düzeni...";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_CLOSEWIN ;
+ HelpId = SID_CLOSEWIN ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Schließen : ~Schlie˜en */
+ Text = "~Schließen" ;
+ Text [ ENGLISH ] = "~Close" ;
+ Text [ norwegian ] = "Lukk" ;
+ Text [ italian ] = "Chiudi" ;
+ Text [ portuguese_brazilian ] = "Fechar" ;
+ Text [ portuguese ] = "~Fechar" ;
+ Text [ finnish ] = "Sulje" ;
+ Text [ danish ] = "~Luk" ;
+ Text [ french ] = "~Fermer" ;
+ Text [ swedish ] = "~Stäng" ;
+ Text [ dutch ] = "~Sluiten" ;
+ Text [ spanish ] = "~Cerrar" ;
+ Text [ english_us ] = "~Close" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Seitenvorschau schließen : Seitenvorschau schlie˜en */
+ Text[ chinese_simplified ] = "¹Ø±Õ(~C)";
+ Text[ russian ] = "Çàêðûòü";
+ Text[ polish ] = "Zamknij";
+ Text[ japanese ] = "•Â‚¶‚é(~C)";
+ Text[ chinese_traditional ] = "Ãö³¬(~C)";
+ Text[ arabic ] = "ÅÛáÇÞ";
+ Text[ greek ] = "Êëåß~óéìï";
+ Text[ korean ] = "´Ý±â(~C)";
+ Text[ turkish ] = "Kapa~t";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+
+String RID_POPUP_EDIT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Popup-Menü für Texteingabe : Popup-Men³ f³r Texteingabe */
+ Text = "Popup-Menü für Texteingabe" ;
+ Text [ ENGLISH ] = "Text Edit Popup Menu" ;
+ Text [ english_us ] = "Text Input pop-up menu" ;
+ Text [ italian ] = "Menu a tendina per l'introduzione del testo" ;
+ Text [ spanish ] = "Menú emergente para entrada de texto" ;
+ Text [ french ] = "Menu Pop-Up pour la saisie de texte" ;
+ Text [ dutch ] = "PopUp-menu voor tekstinvoer" ;
+ Text [ swedish ] = "Popupmeny för textinmatning" ;
+ Text [ danish ] = "Popup-menu for tekstinput" ;
+ Text [ portuguese ] = "Menu instantâneo para inserção de texto" ;
+ Text [ portuguese_brazilian ] = "Popup-Menü für Texteingabe" ;
+ Text[ chinese_simplified ] = "×Ö¶ÎÇøµ¯³öʽ²Ëµ¥";
+ Text[ russian ] = "Âñïëûâàþùåå ìåíþ äëÿ ââîäà òåêñòà";
+ Text[ polish ] = "Menu podrêczne dla wprowadzenia tekstu";
+ Text[ japanese ] = "Î߯Ìß±¯ÌßÒÆ­° ÷½Ä“ü—Í—p";
+ Text[ chinese_traditional ] = "Äæ¦ì°Ï¥\\¯àªí";
+ Text[ arabic ] = "ÞÇÆãÉ ãäÈËÞÉ áÅÏÎÇá ÇáäÕ";
+ Text[ greek ] = "Áíáäõüìåíï ìåíïý ãéá åéóáãùãÞ êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ®ÀÔ·Â Æ˾÷¸Þ´º";
+ Text[ turkish ] = "Metin giriþi için popup mönü";
+ Text[ language_user1 ] = " ";
+};
+
+Menu RID_POPUP_EDIT
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SID_CELL_FORMAT_RESET ;
+ HelpId = SID_CELL_FORMAT_RESET ;
+ /* ### ACHTUNG: Neuer Text in Resource? Standar~d : Standard */
+ /* ### ACHTUNG: Neuer Text in Resource? Standar~d : Standard */
+ /* ### ACHTUNG: Neuer Text in Resource? Standar~d : Standard */
+ Text = "Standar~d" ;
+ Text [ ENGLISH ] = "Standar~d" ;
+ Text [ dutch ] = "~Standaard" ;
+ Text [ english_us ] = "~Default" ;
+ Text [ italian ] = "Standar~d" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "~Par défaut" ;
+ Text [ swedish ] = "Standar~d" ;
+ Text [ danish ] = "Standar~d" ;
+ Text [ portuguese_brazilian ] = "Standar~d" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text[ chinese_simplified ] = "±ê×¼(~D)";
+ Text[ russian ] = "~Ïî óìîë÷àíèþ";
+ Text[ polish ] = "~Domyœlnie";
+ Text[ japanese ] = "•W€(~D)";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";
+ Text[ arabic ] = "~ÞíÇÓí";
+ Text[ greek ] = "~ÐñïåðéëïãÞ";
+ Text[ korean ] = "±âº»°ª(~D)";
+ Text[ turkish ] = "~Standart";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem // Menu-Controller
+ // Menu-Controller
+ // Menu-Controller
+ // Menu-Controller
+ {
+ ITEM_FORMAT_ATTR_CHAR_FONT
+ };
+ MenuItem // Menu-Controller
+ // Menu-Controller
+ // Menu-Controller
+ // Menu-Controller
+ {
+ ITEM_FORMAT_ATTR_CHAR_FONTHEIGHT
+ };
+ MenuItem
+ {
+ Text = "Sti~l" ;
+ Text [ English ] = "~Style" ;
+ Text [ norwegian ] = "Mal" ;
+ Text [ italian ] = "Stile" ;
+ Text [ portuguese_brazilian ] = "Estilo" ;
+ Text [ portuguese ] = "Estilo" ;
+ Text [ finnish ] = "Tyyli" ;
+ Text [ danish ] = "Typografi" ;
+ Text [ french ] = "Style" ;
+ Text [ swedish ] = "Format" ;
+ Text [ dutch ] = "Opmaakstijl" ;
+ Text [ spanish ] = "Estilo" ;
+ Text [ english_us ] = "Style" ;
+ Identifier = RID_MN_FORMAT_STYLE ;
+ HelpID = RID_MN_FORMAT_STYLE ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_CHAR_WEIGHT
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_CHAR_POSTURE
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_CHAR_UNDERLINE
+ };
+ MenuItem
+ {
+ Text = "Do~ppelt unterstreichen" ;
+ Text [ English ] = "~Double Underline" ;
+ Identifier = SID_ULINE_VAL_DOUBLE ;
+ HelpID = SID_ULINE_VAL_DOUBLE ;
+ Text [ english_us ] = "Do~uble Underline" ;
+ Text [ portuguese_brazilian ] = "Do~ppelt unterstreichen" ;
+ Text = "Do~ppelt unterstreichen" ;
+ Text [ swedish ] = "Du~bbel understrykning" ;
+ Text [ danish ] = "Dobbelt understreget" ;
+ Text [ italian ] = "Doppia sottolineatura" ;
+ Text [ spanish ] = "Subrayado ~doble" ;
+ Text [ french ] = "S~oulignage double" ;
+ Text [ dutch ] = "Du~bbel onderstrepen" ;
+ Text [ portuguese ] = "Sublinhado ~duplo" ;
+ Text[ chinese_simplified ] = "Ë«Ï»®Ïß(~U)";
+ Text[ russian ] = "Äâîéíîå ïîä÷åðêèâàíèå";
+ Text[ polish ] = "Podwójne podkreœlenie";
+ Text[ japanese ] = "Җd伟(~U)";
+ Text[ chinese_traditional ] = "Âù¤U¹º½u(~U)";
+ Text[ arabic ] = "ÊÍÊå ÎØ ãÒÏæÌ";
+ Text[ greek ] = "Äé~ðëÞ õðïãñÜììéóç";
+ Text[ korean ] = "ÀÌÁß ¹ØÁÙ(~U)";
+ Text[ turkish ] = "Altýný çift çiz";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_CHAR_STRIKEOUT
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_CHAR_SHADOWED
+ };
+ MenuItem
+ {
+ ITEM_FORMAT_ATTR_CHAR_CONTOUR
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = SID_SET_SUPER_SCRIPT ;
+ HelpID = SID_SET_SUPER_SCRIPT ;
+ Text = "~Hochstellen" ;
+ Text [ English ] = "Superscript" ;
+ Text [ norwegian ] = "Superskript" ;
+ Text [ italian ] = "Apice" ;
+ Text [ portuguese_brazilian ] = "Sobrescrito" ;
+ Text [ portuguese ] = "~Superior à linha" ;
+ Text [ finnish ] = "Yläindeksi" ;
+ Text [ danish ] = "Hævet" ;
+ Text [ french ] = "E~xposant" ;
+ Text [ swedish ] = "~Upphöjt" ;
+ Text [ dutch ] = "S~uperscript" ;
+ Text [ spanish ] = "~Superíndice" ;
+ Text [ english_us ] = "S~uperscript" ;
+ Text[ chinese_simplified ] = "Éϱê(~U)";
+ Text[ russian ] = "Âåðõíèé èíäåêñ";
+ Text[ polish ] = "Indeks górny";
+ Text[ japanese ] = "ã•t‚«•¶Žš(~U)";
+ Text[ chinese_traditional ] = "¤W¼Ð(~U)";
+ Text[ arabic ] = "ãÑÊÝÚ";
+ Text[ greek ] = "ÅêèÝô~çò";
+ Text[ korean ] = "À­ ÷ÀÚ(~U)";
+ Text[ turkish ] = "Üst simge";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_SET_SUB_SCRIPT ;
+ HelpID = SID_SET_SUB_SCRIPT ;
+ Text = "~Tiefstellen" ;
+ Text [ English ] = "Subscript" ;
+ Text [ norwegian ] = "Subskript" ;
+ Text [ italian ] = "Pedice" ;
+ Text [ portuguese_brazilian ] = "Subscrito" ;
+ Text [ portuguese ] = "~Inferior à linha" ;
+ Text [ finnish ] = "Alaindeksi" ;
+ Text [ danish ] = "Sænket" ;
+ Text [ french ] = "I~ndice" ;
+ Text [ swedish ] = "~Nedsänkt" ;
+ Text [ dutch ] = "Su~bscript" ;
+ Text [ spanish ] = "~Subíndice" ;
+ Text [ english_us ] = "Su~bscript" ;
+ Text[ chinese_simplified ] = "챐(~B)";
+ Text[ russian ] = "Íèæíèé èíäåêñ";
+ Text[ polish ] = "Indeks dolny";
+ Text[ japanese ] = "‰º•t‚«•¶Žš(~B)";
+ Text[ chinese_traditional ] = "¤U¼Ð(~B)";
+ Text[ arabic ] = "ãäÎÝÖ";
+ Text[ greek ] = "Äåßê~ôçò";
+ Text[ korean ] = "¾Æ·¡ ÷ÀÚ(~B)";
+ Text[ turkish ] = "Alt simge";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Text[ italian ] = "Stile";
+ Text[ portuguese_brazilian ] = "Estilo";
+ Text[ portuguese ] = "E~stilo";
+ Text[ danish ] = "Typografi";
+ Text[ french ] = "St~yle";
+ Text[ swedish ] = "Sti~l";
+ Text[ dutch ] = "T~ype";
+ Text[ spanish ] = "~Estilo";
+ Text[ english_us ] = "St~yle";
+ Text[ chinese_simplified ] = "ʽÑù(~Y)";
+ Text[ russian ] = "Ñòèëü";
+ Text[ polish ] = "Styl";
+ Text[ japanese ] = "½À²Ù(~Y)";
+ Text[ chinese_traditional ] = "¼Ë¦¡(~Y)";
+ Text[ arabic ] = "ÇáäãØ";
+ Text[ greek ] = "Óôõ~ë";
+ Text[ korean ] = "À¯Çü(~Y)";
+ Text[ turkish ] = "Biçim";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ ITEM_FORMAT_CHAR_DLG
+ };
+ };
+};
+
+String RID_POPUP_AUDIT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Popup-Menü für Detektiv-Füll-Modus : Popup-Men³ f³r Detektiv-F³ll-Modus */
+ Text = "Popup-Menü für Detektiv-Füll-Modus" ;
+ Text [ ENGLISH ] = "Auditing Fill Mode Popup Menu" ;
+ Text [ english_us ] = "Detective Fill Mode pop-up menu" ;
+ Text [ italian ] = "Menu a tendina per il modo di riempimento detective" ;
+ Text [ spanish ] = "Menú emergente para el modo Detective de relleno" ;
+ Text [ french ] = "Menu Pop-Up du mode Remplissage d'audit" ;
+ Text [ dutch ] = "PopUp-menu voor verkenner-opvul-modus" ;
+ Text [ swedish ] = "Popupmeny för detektiv-fyllningsläge" ;
+ Text [ danish ] = "Popup-menu for detektiv fyldmodus" ;
+ Text [ portuguese_brazilian ] = "Popup-Menü für Detektiv-Füll-Modus" ;
+ Text [ portuguese ] = "Menu instantâneo para o modo preenchimento de auditoria" ;
+ Text[ chinese_simplified ] = "Õì̽-³äÌî-µ¯³öʽ²Ëµ¥";
+ Text[ russian ] = "Âñïëûâàþùåå ìåíþ äëÿ ðåæèìà çàëèâêè çàâèñèìîñòè";
+ Text[ polish ] = "Menu podrêczne dla trybu wype³niania detektywa";
+ Text[ japanese ] = "’T’m —šsÓ°ÄÞ—pÎ߯Ìß±¯ÌßÒÆ­°";
+ Text[ chinese_traditional ] = "°»±´-¥R¶ñ-¥\\¯àªí";
+ Text[ arabic ] = "ÞÇÆãÉ ãäÈËÞÉ áæÖÚ ÊÚÈÆÉ ÇáãÎÈÑ";
+ Text[ greek ] = "Áíáäõüìåíï ìåíïý ãéá ôçí êáôÜóôáóç ãåìßóìáôïò ôïõ áíé÷íåõôÞ";
+ Text[ korean ] = "ä¿ì±â ¸ðµåÃßÀû Æ˾÷¸Þ´º";
+ Text[ turkish ] = "Doldurma kipi (dedektif) için popup mönü";
+ Text[ language_user1 ] = " ";
+};
+
+Menu RID_POPUP_AUDIT
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SID_FILL_ADD_PRED ;
+ HelpId = SID_FILL_ADD_PRED ;
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum ~Vorgänger : Spur zum Vorgänger */
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum ~Vorgänger : Spur zum Vorgänger */
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum ~Vorgänger : Spur zum Vorgänger */
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum ~Vorgänger : Spur zum ~Vorgõnger */
+ Text = "Spur zum ~Vorgänger" ;
+ Text [ ENGLISH ] = "Trace ~Predescessor" ;
+ Text [ norwegian ] = "Trace Predescessor" ;
+ Text [ italian ] = "Individua ~precedenti" ;
+ Text [ portuguese_brazilian ] = "Traçar Predecessor" ;
+ Text [ portuguese ] = "Analisar ~precedentes" ;
+ Text [ finnish ] = "Etsi edeltäjä" ;
+ Text [ danish ] = "Spor overordnede" ;
+ Text [ french ] = "Repérer les ~antécédents" ;
+ Text [ swedish ] = "Spår till ~föregångare" ;
+ Text [ dutch ] = "Spoor naar ~voorganger" ;
+ Text [ spanish ] = "Rastrear ~precedentes" ;
+ Text [ english_us ] = "Trace ~Precedent" ;
+ Text[ chinese_simplified ] = "ÏòÇ°µÄ×·×Ù¼ýÍ·(~P)";
+ Text[ russian ] = "Âëèÿþùèå ÿ÷åéêè";
+ Text[ polish ] = "ŒledŸ poprzedniki";
+ Text[ japanese ] = "ŽQÆŒ³ÄÚ°½(~P)";
+ Text[ chinese_traditional ] = "Àx¦s®æ«e¾É°Ñ·Ó(~P)";
+ Text[ arabic ] = "ÊÊÈÚ ÃËÑ ÇáÓÇÈÞ";
+ Text[ greek ] = "º÷íïò ðñïçãïýìåíï~õ";
+ Text[ korean ] = "¼±·Ê ÃßÀû(~P)";
+ Text[ turkish ] = "Öncekini izle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_FILL_DEL_PRED ;
+ HelpId = SID_FILL_DEL_PRED ;
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum Vorgänger ~entfernen : Spur zum Vorgänger entfernen */
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum Vorgänger ~entfernen : Spur zum Vorgänger entfernen */
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum Vorgänger ~entfernen : Spur zum Vorgänger entfernen */
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum Vorgänger ~entfernen : Spur zum Vorgõnger ~entfernen */
+ Text = "Spur zum Vorgänger ~entfernen" ;
+ Text [ ENGLISH ] = "~Remove Predescessor" ;
+ Text [ norwegian ] = "Remove Predescessor" ;
+ Text [ italian ] = "Rimuovi traccia sul precedente" ;
+ Text [ portuguese_brazilian ] = "Remover Predecessor" ;
+ Text [ portuguese ] = "Remover pr~ecedentes" ;
+ Text [ finnish ] = "Poista edeltäjä" ;
+ Text [ danish ] = "Fjern overordnede pile" ;
+ Text [ french ] = "~Supprimer le repérage des antécédents" ;
+ Text [ swedish ] = "Ta bort spår till ~föregångaren" ;
+ Text [ dutch ] = "Spoor naar voorganger v~erwijderen" ;
+ Text [ spanish ] = "~Eliminar rastro a precedente" ;
+ Text [ english_us ] = "~Remove Precedent" ;
+ Text[ chinese_simplified ] = "ɾ³ýÏòÇ°µÄ×·×Ù¼ýÍ·(~R)";
+ Text[ russian ] = "Óäàëèòü âëèÿþùèå ÿ÷åéêè";
+ Text[ polish ] = "Usuñ strza³ki poprzedników";
+ Text[ japanese ] = "ŽQÆŒ³ÄÚ°½‚Ìíœ(~R)";
+ Text[ chinese_traditional ] = "§R°£Àx¦s®æ«e¾É°Ñ·Ó(~R)";
+ Text[ arabic ] = "ãÍæ ÃËÑ ÇáÓÇÈÞ";
+ Text[ greek ] = "ÊáôÜñãçóç ß÷íïõò ðñïçãïýì~åíïõ";
+ Text[ korean ] = "¼±·Ê »èÁ¦(~R)";
+ Text[ turkish ] = "Öncekinin izini sil";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_FILL_ADD_SUCC ;
+ HelpId = SID_FILL_ADD_SUCC ;
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum ~Nachfolger : Spur zum Nachfolger */
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum ~Nachfolger : Spur zum Nachfolger */
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum ~Nachfolger : Spur zum Nachfolger */
+ Text = "Spur zum ~Nachfolger" ;
+ Text [ ENGLISH ] = "Trace ~Successor" ;
+ Text [ norwegian ] = "Trace Successor" ;
+ Text [ italian ] = "Individua dipendenti" ;
+ Text [ portuguese_brazilian ] = "Traçar Sucessor" ;
+ Text [ portuguese ] = "Analisar ~dependentes" ;
+ Text [ finnish ] = "Etsi seuraaja" ;
+ Text [ danish ] = "Spor underordnede" ;
+ Text [ french ] = "R~epérer les dépendants" ;
+ Text [ swedish ] = "Spår till ~efterträdaren" ;
+ Text [ dutch ] = "Spoor naar ~opvolger" ;
+ Text [ spanish ] = "Rastrear ~dependientes" ;
+ Text [ english_us ] = "~Trace Dependent" ;
+ Text[ chinese_simplified ] = "ÏòºóµÄ×·×Ù¼ýÍ·(~T)";
+ Text[ russian ] = "Çàâèñèìûå ÿ÷åéêè";
+ Text[ polish ] = "ŒledŸ zale¿noœci";
+ Text[ japanese ] = "ŽQÆæÄÚ°½(~T)";
+ Text[ chinese_traditional ] = "Àx¦s®æ±qÄÝ°Ñ·Ó(~T)";
+ Text[ arabic ] = "ÊÊÈÚ ÃËÑ ÇááÇÍÞ";
+ Text[ greek ] = "º÷íïò ðñïò ôï åðüìå~íï";
+ Text[ korean ] = "Á¾¼Ó ÃßÀû(~T)";
+ Text[ turkish ] = "Sonrakinin izini sil";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_FILL_DEL_SUCC ;
+ HelpId = SID_FILL_DEL_SUCC ;
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum Nachfolger ent~fernen : Spur zum Nachfolger entfernen */
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum Nachfolger ent~fernen : Spur zum Nachfolger entfernen */
+ /* ### ACHTUNG: Neuer Text in Resource? Spur zum Nachfolger ent~fernen : Spur zum Nachfolger entfernen */
+ Text = "Spur zum Nachfolger ent~fernen" ;
+ Text [ ENGLISH ] = "R~emove Successor" ;
+ Text [ norwegian ] = "Remove Successor" ;
+ Text [ italian ] = "Rimuovi freccia sul dipendente" ;
+ Text [ portuguese_brazilian ] = "Remover Sucessor" ;
+ Text [ portuguese ] = "Remover depe~ndentes" ;
+ Text [ finnish ] = "Poista seuraaja" ;
+ Text [ danish ] = "Fjern underordnede pile" ;
+ Text [ french ] = "~Supprimer repérage des dépendants" ;
+ Text [ swedish ] = "Ta bort spår till ~efterträdaren" ;
+ Text [ dutch ] = "Spoor naar opvolger ve~rwijderen" ;
+ Text [ spanish ] = "~Eliminar rastro a dependiente" ;
+ Text [ english_us ] = "Remove Dependent" ;
+ Text[ chinese_simplified ] = "ɾ³ýÏòºóµÄ×·×Ù¼ýÍ·";
+ Text[ russian ] = "Óäàëèòü çàâèñèìûå ÿ÷åéêè";
+ Text[ polish ] = "Usuñ strza³ki zale¿noœci";
+ Text[ japanese ] = "ŽQÆæ‚̉ðœ";
+ Text[ chinese_traditional ] = "§R°£Àx¦s®æ±qÄÝ°Ñ·Ó";
+ Text[ arabic ] = "ãÍæ ÃËÑ ÇááÇÍÞ";
+ Text[ greek ] = "Äéáãñá~öÞ ß÷íïõò ðñïò ôï åðüìåíï";
+ Text[ korean ] = "Á¾¼Ó Á¦°Å";
+ Text[ turkish ] = "Sonrakinin izini sil";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_DETECTIVE_DEL_ALL ;
+ HelpId = SID_DETECTIVE_DEL_ALL ;
+ Text = "~Alle Spuren entfernen" ;
+ Text [ ENGLISH ] = "Remove ~all Traces" ;
+ Text [ norwegian ] = "Remove all Traces" ;
+ Text [ italian ] = "Rimuovi tutte le evidenziazioni" ;
+ Text [ portuguese_brazilian ] = "Remover todos os Traços" ;
+ Text [ portuguese ] = "Remover ~todas as setas" ;
+ Text [ finnish ] = "Poista merkinnät" ;
+ Text [ danish ] = "Fjern alle pile" ;
+ Text [ french ] = "S~upprimer tous les repères" ;
+ Text [ swedish ] = "Ta bort ~alla spår" ;
+ Text [ dutch ] = "~Alle sporen verwijderen" ;
+ Text [ spanish ] = "Eliminar ~todos los rastros" ;
+ Text [ english_us ] = "Remove ~All Traces" ;
+ Text[ chinese_simplified ] = "ɾ³ýÈ«²¿µÄ×·×Ù¼ýÍ·(~A)";
+ Text[ russian ] = "Óáðàòü âñå ñòðåëêè";
+ Text[ polish ] = "Usuñ wszystkie strza³ki";
+ Text[ japanese ] = "‚·‚ׂĂÌÄÚ°½‚ð‰ðœ(~A)";
+ Text[ chinese_traditional ] = "§R°£¥þ³¡ªº°lÂܽb¸¹(~A)";
+ Text[ arabic ] = "ãÍæ ßá ÇáÂËÇÑ";
+ Text[ greek ] = "Äé~áãñáöÞ üëùí ôùí é÷íþí";
+ Text[ korean ] = "¸ðµç ÃßÀû Á¦°Å(~A)";
+ Text[ turkish ] = "Tüm izleri kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_FILL_NONE ;
+ HelpId = SID_FILL_NONE ;
+ /* ### ACHTUNG: Neuer Text in Resource? Füll-Modus ~beenden : Füll-Modus beenden */
+ /* ### ACHTUNG: Neuer Text in Resource? Füll-Modus ~beenden : Füll-Modus beenden */
+ /* ### ACHTUNG: Neuer Text in Resource? Füll-Modus ~beenden : Füll-Modus beenden */
+ /* ### ACHTUNG: Neuer Text in Resource? Füll-Modus ~beenden : F³ll-Modus ~beenden */
+ Text = "Füll-Modus ~beenden" ;
+ Text [ ENGLISH ] = "End Fill ~Mode" ;
+ Text [ english_us ] = "Exit Fill Mode" ;
+ Text [ italian ] = "Termina modo riempimento" ;
+ Text [ spanish ] = "~Salir del modo de relleno" ;
+ Text [ french ] = "Quitter le mode ~Remplissage" ;
+ Text [ dutch ] = "Opvulmodus ~beëindigen" ;
+ Text [ swedish ] = "~Avsluta fyllningsläget" ;
+ Text [ danish ] = "Afslut fyldmodus" ;
+ Text [ portuguese_brazilian ] = "Füll-Modus ~beenden" ;
+ Text [ portuguese ] = "~Sair do modo de preenchimento" ;
+ Text[ chinese_simplified ] = "½áÊø³äÌîģʽ(~F)";
+ Text[ russian ] = "Çàêîí÷èòü ðåæèì çàëèâêè";
+ Text[ polish ] = "Zakoñcz tryb wype³niania";
+ Text[ japanese ] = "ŽÀsÓ°ÄÞ‚ÌI—¹";
+ Text[ chinese_traditional ] = "µ²§ô¥R¶ñ¼Ò¦¡(~F)";
+ Text[ arabic ] = "ÅäåÇÁ æÖÚ ÇáÊÚÈÆÉ";
+ Text[ greek ] = "~Ôåñìáôéóìüò êáôÜóôáóçò ãåìßóìáôïò";
+ Text[ korean ] = "ä¿ì±â ¸ðµå Á¾·á";
+ Text[ turkish ] = "Doldurma kipinden çýk";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+String RID_POPUP_PAGEBREAK
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Popup-Menü für Seitenumbruch-Vorschau : Popup-Men³ f³r Seitenumbruch-Vorschau */
+ Text = "Popup-Menü für Seitenumbruch-Vorschau" ;
+ Text [ ENGLISH ] = "Page Break Preview Popup Menu" ;
+ Text [ portuguese ] = "Menu instantâneo para visualizar quebras de página" ;
+ Text [ english_us ] = "Page Break Preview pop-up menu" ;
+ Text [ portuguese_brazilian ] = "Popup-Menü für Seitenumbruch-Vorschau" ;
+ Text [ swedish ] = "Popupmeny för förhandsvisning av sidbrytning" ;
+ Text [ danish ] = "Popup-menu for sideskiftsvisning" ;
+ Text [ italian ] = "Menu a tendina per l'anteprima dell'impaginazione" ;
+ Text [ spanish ] = "Menú emergente para previsualización de saltos de página" ;
+ Text [ french ] = "Menu Pop-Up pour l'aperçu des sauts de page" ;
+ Text [ dutch ] = "Popup-menu voor voorbeeld van paginaeinde" ;
+ Text[ chinese_simplified ] = "Ò³ÃæÔ¤Êӵĵ¯³öʽ²Ëµ¥";
+ Text[ russian ] = "Âñïëûâàþùåå ìåíþ äëÿ ïðåäâàðèòåëüíîãî ïðîñìîòðà ðàçðûâà ñòðàíèö";
+ Text[ polish ] = "Menu podrêczne dla podgl¹du ³amania strony";
+ Text[ japanese ] = "Î߯Ìß±¯ÌßÒÆ­° ‰üÍß°¼ÞÌßÚËÞ­°—p";
+ Text[ chinese_traditional ] = "­¶­±À˵ø¥\\¯àªí";
+ Text[ arabic ] = "ÞÇÆãÉ ãäÈËÞÉ áãÚÇíäÉ ÝæÇÕá ÇáÕÝÍÇÊ";
+ Text[ greek ] = "Áíáäõüìåíï ìåíïý ãéá ðñïåðéóêüðçóç áëëáãÞò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ³ª´® ¹Ì¸®º¸±â Æ˾÷¿¡´º";
+ Text[ turkish ] = "Sayfa sonu önizlemesi için popup mönü";
+ Text[ language_user1 ] = " ";
+};
+
+Menu RID_POPUP_PAGEBREAK
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SID_CELL_FORMAT_RESET ;
+ HelpId = SID_CELL_FORMAT_RESET ;
+ Text = "Standar~d" ;
+ Text [ ENGLISH ] = "Standar~d" ;
+ Text [ dutch ] = "~Standaard" ;
+ Text [ english_us ] = "~Default" ;
+ Text [ italian ] = "Standar~d" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "~Par défaut" ;
+ Text [ swedish ] = "Standar~d" ;
+ Text [ danish ] = "Standar~d" ;
+ Text [ portuguese_brazilian ] = "Standar~d" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text[ chinese_simplified ] = "±ê×¼(~D)";
+ Text[ russian ] = "~Ïî óìîë÷àíèþ";
+ Text[ polish ] = "~Domyœlnie";
+ Text[ japanese ] = "•W€(~D)";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";
+ Text[ arabic ] = "~ÞíÇÓí";
+ Text[ greek ] = "~ÐñïåðéëïãÞ";
+ Text[ korean ] = "±âº»°ª(~D)";
+ Text[ turkish ] = "~Standart";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_CELL_FORMAT ;
+ HelpId = FID_CELL_FORMAT ;
+ Text = "~Zellen formatieren..." ;
+ Text [ ENGLISH ] = "~Format Cells..." ;
+ Text [ norwegian ] = "~Format Cells..." ;
+ Text [ italian ] = "Formatta ~celle..." ;
+ Text [ portuguese_brazilian ] = "~Format Cells..." ;
+ Text [ portuguese ] = "Formatar ~células..." ;
+ Text [ finnish ] = "~Muotoile solut..." ;
+ Text [ danish ] = "Formater celler..." ;
+ Text [ french ] = "~Formater les cellules..." ;
+ Text [ swedish ] = "~Formatera celler..." ;
+ Text [ dutch ] = "~Cellen opmaken..." ;
+ Text [ spanish ] = "Formatear ~celdas..." ;
+ Text [ english_us ] = "Format ~Cells..." ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñ¸ñʽ»¯(~C)...";
+ Text[ russian ] = "Ôîðìàò ÿ÷ååê...";
+ Text[ polish ] = "Formatuj komórki...";
+ Text[ japanese ] = "¾Ù‚Ì‘Ž®Ý’è(~C)...";
+ Text[ chinese_traditional ] = "Àx¦s®æ®æ¦¡¤Æ(~C)...";
+ Text[ arabic ] = "ÊäÓíÞ ÇáÎáÇíÇ...";
+ Text[ greek ] = "Ìïñöï~ðïßçóç êåëéþí...";
+ Text[ korean ] = "¼¿ ¼­½Ä(~C)...";
+ Text[ turkish ] = "Hücreleri formatla...";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_INS_ROWBRK ;
+ HelpId = FID_INS_ROWBRK ;
+ /* ### ACHTUNG: Neuer Text in Resource? Z~eilenumbruch einfügen : Z~eilenumbruch einf³gen */
+ Text = "Z~eilenumbruch einfügen" ;
+ Text [ ENGLISH ] = "Insert ~Column Break" ;
+ Text [ english_us ] = "Insert ~Row Break" ;
+ Text [ portuguese_brazilian ] = "Z~eilenumbruch einfügen" ;
+ Text [ swedish ] = "Infoga ~radbrytning" ;
+ Text [ danish ] = "Indsæt linjeskift" ;
+ Text [ italian ] = "Inserisci interruzione riga" ;
+ Text [ spanish ] = "Insertar salto de ~fila" ;
+ Text [ french ] = "I~nsérer un renvoi à la ligne" ;
+ Text [ dutch ] = "~Rijeinde invoegen" ;
+ Text [ portuguese ] = "Inserir quebra de ~linha" ;
+ Text[ chinese_simplified ] = "ÔÚÐÐÖ®¼ä²åÈë·Ö¸ô·û(~R)";
+ Text[ russian ] = "Âñòàâèòü ðàçðûâ ñòðîê";
+ Text[ polish ] = "Wstaw podzia³ wierszy";
+ Text[ japanese ] = "‰üs‚Ì‘}“ü(~R)";
+ Text[ chinese_traditional ] = "´¡¤J´«¦C(~R)";
+ Text[ arabic ] = "ÅÏÑÇÌ ÝÇÕá ÃÓØÑ";
+ Text[ greek ] = "~ÅéóáãùãÞ áëëáãÞò ãñáììÞò";
+ Text[ korean ] = "Çà ºÐ¸® »ðÀÔ(~R)";
+ Text[ turkish ] = "Satýr sonu ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_INS_COLBRK ;
+ HelpId = FID_INS_COLBRK ;
+ /* ### ACHTUNG: Neuer Text in Resource? S~paltenumbruch einfügen : S~paltenumbruch einf³gen */
+ Text = "S~paltenumbruch einfügen" ;
+ Text [ ENGLISH ] = "Insert ~Row Break" ;
+ Text [ english_us ] = "Insert ~Column Break" ;
+ Text [ portuguese_brazilian ] = "S~paltenumbruch einfügen" ;
+ Text [ swedish ] = "Infoga ~kolumnbrytning" ;
+ Text [ danish ] = "Indsæt spalteskift" ;
+ Text [ italian ] = "Inserisci interruzione colonna" ;
+ Text [ spanish ] = "Insertar salto de ~columna" ;
+ Text [ french ] = "Insérer un saut de c~olonne" ;
+ Text [ dutch ] = "~Kolomeinde invoegen" ;
+ Text [ portuguese ] = "Inserir quebra de ~coluna" ;
+ Text[ chinese_simplified ] = "ÔÚÁÐÖ®¼ä²åÈë·Ö¸ô·û(~C)";
+ Text[ russian ] = "Âñòàâèòü ðàçðûâ ñòîëáöîâ";
+ Text[ polish ] = "Wstaw podzia³ kolumny";
+ Text[ japanese ] = "—ñ‚Ì‹æØ‚è‚ð‘}“ü(~C)";
+ Text[ chinese_traditional ] = "´¡¤J´«Äæ(~C)";
+ Text[ arabic ] = "ÅÏÑÇÌ ÝÇÕá ÃÚãÏÉ";
+ Text[ greek ] = "ÅéóáãùãÞ áëëáãÞò ó~ôÞëçò";
+ Text[ korean ] = "¿­ ºÐ¸® »ðÀÔ(~C)";
+ Text[ turkish ] = "Sütun sonu ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_DEL_MANUALBREAKS ;
+ HelpId = FID_DEL_MANUALBREAKS ;
+ /* ### ACHTUNG: Neuer Text in Resource? Alle ~manuellen Umbrüche löschen : Alle ~manuellen Umbr³che l÷schen */
+ Text = "Alle ~manuellen Umbrüche löschen" ;
+ Text [ ENGLISH ] = "~Remove All Manual Breaks" ;
+ Text [ english_us ] = "Delete All Manual Breaks" ;
+ Text [ portuguese_brazilian ] = "Alle ~manuellen Umbrüche löschen" ;
+ Text [ swedish ] = "Radera alla ~manuella brytningar" ;
+ Text [ danish ] = "Slet alle manuelle skift" ;
+ Text [ italian ] = "Elimina interruzioni manuali" ;
+ Text [ spanish ] = "Eliminar todos los saltos ~manuales" ;
+ Text [ french ] = "Supprimer tous les sauts ~manuels" ;
+ Text [ dutch ] = "Alle handmatige ~einden wissen" ;
+ Text [ portuguese ] = "Remover todas as quebras ~manuais" ;
+ Text[ chinese_simplified ] = "ɾ³ýÈ«²¿µÄÊÖ¹¤·Ö¸ô·û(~R)";
+ Text[ russian ] = "Óáðàòü âñå ðàçðûâû";
+ Text[ polish ] = "Usuñ wszystkie rêczne podzia³y";
+ Text[ japanese ] = "‚·‚ׂĂ̎蓮‹æØ‚è‚̉ðœ";
+ Text[ chinese_traditional ] = "§R°£¥þ³¡ªº¤â¤u¤À¹j²Å(~R)";
+ Text[ arabic ] = "ÅÒÇáÉ ßá ÇáÝæÇÕá ÇáíÏæíÉ";
+ Text[ greek ] = "ÄéáãñáöÞ üëùí ôùí ~÷åéñïêßíçôùí áëëáãþí";
+ Text[ korean ] = "¸ðµç ¼öµ¿ ³ª´©±â »èÁ¦";
+ Text[ turkish ] = "Tüm manüel kesmeleri sil";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = FID_RESET_PRINTZOOM ;
+ HelpId = FID_RESET_PRINTZOOM ;
+ Text = "S~kalierung aufheben" ;
+ Text [ ENGLISH ] = "Reset Scale" ;
+ Text [ english_us ] = "Reset Scale" ;
+ Text [ portuguese_brazilian ] = "S~kalierung aufheben" ;
+ Text [ swedish ] = "Upphäv s~kalering" ;
+ Text [ danish ] = "Ophæv skalering" ;
+ Text [ italian ] = "Elimina scala" ;
+ Text [ spanish ] = "Restablecer ~escala" ;
+ Text [ french ] = "Supprimer l'~échelle" ;
+ Text [ dutch ] = "Schaal ~opheffen" ;
+ Text [ portuguese ] = "Repor ~escala" ;
+ Text[ chinese_simplified ] = "ÖØÉè¿Ì¶ÈÏÔʾ(~S)";
+ Text[ russian ] = "Ñíÿòü ìàñøòàáèðîâàíèå";
+ Text[ polish ] = "Zresetuj skalowanie";
+ Text[ japanese ] = "½¹°Ù‚̉ðœ";
+ Text[ chinese_traditional ] = "­«³]Åã¥Ü¤ñ¨Ò(~S)";
+ Text[ arabic ] = "ÅÒÇáÉ ÇáãÞíÇÓ";
+ Text[ greek ] = "ÊáôÜñãçóç ~êëßìáêáò";
+ Text[ korean ] = "¹èÀ² Àç¼³Á¤";
+ Text[ turkish ] = "Ölçeklendirmeyi kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = SID_DEFINE_PRINTAREA ;
+ HelpId = SID_DEFINE_PRINTAREA ;
+ Text = "Druckbereich ~festlegen" ;
+ Text [ ENGLISH ] = "~Define Print Area" ;
+ Text [ english_us ] = "Define Print Range" ;
+ Text [ portuguese_brazilian ] = "Druckbereich ~festlegen" ;
+ Text [ swedish ] = "~Definiera utskriftområde" ;
+ Text [ danish ] = "Definer udskriftsområde" ;
+ Text [ italian ] = "De~finisci area di stampa" ;
+ Text [ spanish ] = "~Definir área de impresión" ;
+ Text [ french ] = "~Définir la zone d'impression" ;
+ Text [ dutch ] = "Afdrukbereik ~definiëren" ;
+ Text [ portuguese ] = "~Definir área de impressão" ;
+ Text[ chinese_simplified ] = "¶¨Òå´òÓ¡ÇøÓò(~D)";
+ Text[ russian ] = "Çàäàòü îáëàñòü ïå÷àòè";
+ Text[ polish ] = "Zdefiniuj zakres wydruku";
+ Text[ japanese ] = "ˆóü”͈͂̎w’è";
+ Text[ chinese_traditional ] = "³]©w¦C¦L­S³ò(~D)";
+ Text[ arabic ] = "ÊÚííä äØÇÞ ÇáØÈÇÚÉ";
+ Text[ greek ] = "~Ïñéóìüò ðåñéï÷Þò åêôýðùóçò";
+ Text[ korean ] = "Àμ⠿µ¿ª ÁöÁ¤";
+ Text[ turkish ] = "Yazdýrma aralýðýný tanýmla";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_ADD_PRINTAREA ;
+ HelpId = SID_ADD_PRINTAREA ;
+ /* ### ACHTUNG: Neuer Text in Resource? Druckbereich ~hinzufügen : Druckbereich ~hinzuf³gen */
+ Text = "Druckbereich ~hinzufügen" ;
+ Text [ ENGLISH ] = "~Add Print Area" ;
+ Text [ english_us ] = "Add Print Range" ;
+ Text [ portuguese_brazilian ] = "Druckbereich ~hinzufügen" ;
+ Text [ swedish ] = "~Lägg till utskriftsområde" ;
+ Text [ danish ] = "Tilføj udskriftsområde" ;
+ Text [ italian ] = "Aggiungi area di stampa" ;
+ Text [ spanish ] = "~Añadir área de impresión" ;
+ Text [ french ] = "Ajouter une ~zone d'impression" ;
+ Text [ dutch ] = "Afdrukbereik ~toevoegen" ;
+ Text [ portuguese ] = "~Adicionar área de impressão" ;
+ Text[ chinese_simplified ] = "ÐÂÔö´òÓ¡ÇøÓò(~A)";
+ Text[ russian ] = "Äîáàâèòü îáëàñòü ïå÷àòè";
+ Text[ polish ] = "Dodaj zakres wydruku";
+ Text[ japanese ] = "ˆóü”͈͂̒ljÁ";
+ Text[ chinese_traditional ] = "·s¼W¦C¦L­S³ò(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ äØÇÞ ØÈÇÚÉ";
+ Text[ greek ] = "ÐñïóèÞêç ðåñéï~÷Þò åêôýðùóçò";
+ Text[ korean ] = "Àμ⠿µ¿ª Ãß°¡";
+ Text[ turkish ] = "Yazdýrma aralýðýný ekle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_DELETE_PRINTAREA ;
+ HelpId = SID_DELETE_PRINTAREA ;
+ Text = "Druckbereich ~aufheben" ;
+ Text [ ENGLISH ] = "Reset Print Area" ;
+ Text [ english_us ] = "Undo Print Range" ;
+ Text [ portuguese_brazilian ] = "Druckbereich ~aufheben" ;
+ Text [ swedish ] = "~Upphäv utskriftområde" ;
+ Text [ danish ] = "Ophæv udskriftsområde" ;
+ Text [ italian ] = "Ripristina ~area di stampa" ;
+ Text [ spanish ] = "~Restablecer área de impresión" ;
+ Text [ french ] = "~Supprimer la zone d'impression" ;
+ Text [ dutch ] = "Afdrukbereik op~heffen" ;
+ Text [ portuguese ] = "~Restaurar área de impressão" ;
+ Text[ chinese_simplified ] = "ÖØÉè´òÓ¡ÇøÓò(~R)";
+ Text[ russian ] = "Óáðàòü îáëàñòü ïå÷àòè";
+ Text[ polish ] = "Zresetuj zakres wydruku";
+ Text[ japanese ] = "ˆóü”͈͂̉ðœ";
+ Text[ chinese_traditional ] = "­«³]¦C¦L­S³ò(~R)";
+ Text[ arabic ] = "ÅáÛÇÁ äØÇÞ ÇáØÈÇÚÉ";
+ Text[ greek ] = "Ê~áôÜñãçóç ðåñéï÷Þò åêôýðùóçò";
+ Text[ korean ] = "Àμ⠿µ¿ª Àç ¼³Á¤";
+ Text[ turkish ] = "Yazdýrma aralýðýný kaldýr";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = SID_FORMATPAGE ;
+ HelpId = SID_FORMATPAGE ;
+ Text = "~Seitenformat..." ;
+ Text [ ENGLISH ] = "~Page Format..." ;
+ Text [ english_us ] = "Page Format..." ;
+ Text [ portuguese_brazilian ] = "~Seitenformat..." ;
+ Text [ swedish ] = "~Sidformat..." ;
+ Text [ danish ] = "Sideformat..." ;
+ Text [ italian ] = "Formato pagina..." ;
+ Text [ spanish ] = "Formato de ~página..." ;
+ Text [ french ] = "~Format de page..." ;
+ Text [ dutch ] = "~Paginaformaat...." ;
+ Text [ portuguese ] = "Formato de ~página..." ;
+ Text[ chinese_simplified ] = "Ò³Ãæ¸ñʽ(~G)...";
+ Text[ russian ] = "Ôîðìàò ñòðàíèöû...";
+ Text[ polish ] = "Format strony...";
+ Text[ japanese ] = "Íß°¼Þ‘Ž®...";
+ Text[ chinese_traditional ] = "­¶­±®æ¦¡(~G)...";
+ Text[ arabic ] = "ÊäÓíÞ ÇáÕÝÍÉ...";
+ Text[ greek ] = "ÌïñöÞ ~óåëßäáò...";
+ Text[ korean ] = "ÆäÀÌÁö ¼­½Ä...";
+ Text[ turkish ] = "Sayfa formatý...";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------
+ MenuItem { Separator = TRUE ; };
+ //------------------------------
+ MenuItem
+ {
+ Identifier = FID_NOTE_VISIBLE ;
+ HelpId = FID_NOTE_VISIBLE ;
+ Text = "~Notiz anzeigen" ;
+ Text [ ENGLISH ] = "Show ~Note" ;
+ Text [ english_us ] = "Show Note" ;
+ Text [ swedish ] = "~Visa anteckning" ;
+ Text [ danish ] = "Vis note" ;
+ Text [ italian ] = "Mostra nota" ;
+ Text [ spanish ] = "Mostrar ~nota" ;
+ Text [ french ] = "Afficher la~note" ;
+ Text [ dutch ] = "~Aantekening weergeven" ;
+ Text [ portuguese_brazilian ] = "~Notiz anzeigen" ;
+ Text [ portuguese ] = "Mostrar ~anotação" ;
+ Text[ chinese_simplified ] = "ÏÔʾ±¸×¢(~N)";
+ Text[ russian ] = "Ïîêàçàòü ïðèìå÷àíèÿ";
+ Text[ polish ] = "Poka¿ notatkê";
+ Text[ japanese ] = "ºÒÝÄ‚Ì•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü³Æµù(~N)";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáãáÇÍÙÉ";
+ Text[ greek ] = "ÅìöÜ~íéóç óçìåßùóçò";
+ Text[ korean ] = "¸Þ¸ð ³ªÅ¸³»±â";
+ Text[ turkish ] = "Notu görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+
diff --git a/sc/source/ui/src/pseudo.src b/sc/source/ui/src/pseudo.src
new file mode 100644
index 000000000000..a15d2e983d58
--- /dev/null
+++ b/sc/source/ui/src/pseudo.src
@@ -0,0 +1,681 @@
+/*************************************************************************
+ *
+ * $RCSfile: pseudo.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#include <svx/svxids.hrc>
+
+/*
+SfxSlotInfo SID_DRAW_LINE
+{
+ SlotName = "ZeichnenLinie" ;
+ HelpText = "Zeichnen einer Linie" ;
+ SlotName [ English ] = "DrawLine" ;
+ HelpText [ English ] = "Draw a line" ;
+ Slotname [ english_us ] = "DrawLine" ;
+ HelpText [ english_us ] = "Draw a line" ;
+ Slotname = "ZeichnenLinie" ;
+ Slotname [ italian ] = "DisegnaLinea" ;
+ HelpText [ italian ] = "Disegna una linea" ;
+ Slotname [ spanish ] = "DibujarLínea" ;
+ HelpText [ spanish ] = "Dibuja una línea" ;
+ Slotname [ french ] = "DessinerLigne" ;
+ HelpText [ french ] = "Dessiner une ligne" ;
+ Slotname [ dutch ] = "TekenenLijn" ;
+ HelpText [ dutch ] = "Een lijn tekenen" ;
+ Slotname [ swedish ] = "RitaLinje" ;
+ HelpText [ swedish ] = "Rita en linje" ;
+ Slotname [ danish ] = "ZeichnenLinie" ;
+ HelpText [ danish ] = "Tegn en linje" ;
+ Slotname [ portuguese ] = "DesenharLinha" ;
+ HelpText [ portuguese ] = "Desenha uma linha" ;
+ Slotname [ portuguese_brazilian ] = "ZeichnenLinie" ;
+ HelpText [ portuguese_brazilian ] = "Zeichnen einer Linie" ;
+};
+SfxSlotInfo SID_DRAW_RECT
+{
+ SlotName = "ZeichnenRechteck" ;
+ HelpText = "Zeichnen eines Rechtecks" ;
+ SlotName [ English ] = "DrawRectangle" ;
+ HelpText [ English ] = "Draw a rectangle" ;
+ Slotname [ dutch ] = "TekenenRechthoek" ;
+ HelpText [ dutch ] = "Een rechthoek tekenen" ;
+ Slotname [ english_us ] = "DrawRectangle" ;
+ HelpText [ english_us ] = "Draw a rectangle" ;
+ Slotname = "ZeichnenRechteck" ;
+ Slotname [ italian ] = "DisegnaRettangolo" ;
+ HelpText [ italian ] = "Disegna un rettangolo" ;
+ Slotname [ spanish ] = "DibujarRectángulo" ;
+ HelpText [ spanish ] = "Dibuja un rectángulo" ;
+ Slotname [ french ] = "DessinerRectangle" ;
+ HelpText [ french ] = "Dessiner un Rectangle" ;
+ Slotname [ swedish ] = "RitaRektangel" ;
+ HelpText [ swedish ] = "Rita en rektangel" ;
+ Slotname [ danish ] = "ZeichnenRechteck" ;
+ HelpText [ danish ] = "Tegn en rektangel" ;
+ Slotname [ portuguese ] = "DesenharRectângulo" ;
+ HelpText [ portuguese ] = "Desenha um rectângulo" ;
+ Slotname [ portuguese_brazilian ] = "ZeichnenRechteck" ;
+ HelpText [ portuguese_brazilian ] = "Zeichnen eines Rechtecks" ;
+};
+SfxSlotInfo SID_DRAW_ELLIPSE
+{
+ SlotName = "ZeichnenEllipse" ;
+ HelpText = "Zeichnen einer Ellipse" ;
+ SlotName [ English ] = "DrawEllipse" ;
+ HelpText [ English ] = "Draw an ellipse" ;
+ Slotname [ english_us ] = "DrawEllipse" ;
+ HelpText [ english_us ] = "Draw ellipse" ;
+ Slotname = "ZeichnenEllipse" ;
+ Slotname [ italian ] = "DisegnaEllisse" ;
+ HelpText [ italian ] = "Disegna una ellisse" ;
+ Slotname [ spanish ] = "DibujarElipse" ;
+ HelpText [ spanish ] = "Dibuja una elipse" ;
+ Slotname [ french ] = "DessinerEllipse" ;
+ HelpText [ french ] = "Dessiner une ellipse" ;
+ Slotname [ dutch ] = "TekenenOvaal" ;
+ HelpText [ dutch ] = "Een ovaal tekenen" ;
+ Slotname [ swedish ] = "RitaEllips" ;
+ HelpText [ swedish ] = "Rita en ellips" ;
+ Slotname [ danish ] = "ZeichnenEllipse" ;
+ HelpText [ danish ] = "Tegn en ellipse" ;
+ Slotname [ portuguese ] = "DesenharElipse" ;
+ HelpText [ portuguese ] = "Desenha uma elipse" ;
+ Slotname [ portuguese_brazilian ] = "ZeichnenEllipse" ;
+ HelpText [ portuguese_brazilian ] = "Zeichnen einer Ellipse" ;
+};
+SfxSlotInfo SID_DRAW_POLYGON
+{
+ SlotName = "ZeichnenPolygon" ;
+ HelpText = "Zeichnen eines Polygons" ;
+ SlotName [ English ] = "DrawPolygon" ;
+ HelpText [ English ] = "Draw a Polygon" ;
+ Slotname [ english_us ] = "DrawPolygon" ;
+ HelpText [ english_us ] = "Draw a polygon" ;
+ Slotname = "ZeichnenPolygon" ;
+ Slotname [ italian ] = "DisegnaPoligono" ;
+ HelpText [ italian ] = "Disegna un poligono" ;
+ Slotname [ spanish ] = "DibujarPolígono" ;
+ HelpText [ spanish ] = "Dibuja un polígono" ;
+ Slotname [ french ] = "DessinerPolygone" ;
+ HelpText [ french ] = "Dessiner un polygone" ;
+ Slotname [ dutch ] = "TekenenVeelhoek" ;
+ HelpText [ dutch ] = "Een veelhoek tekenen" ;
+ Slotname [ swedish ] = "RitaPolygon" ;
+ HelpText [ swedish ] = "Rita ett polygon" ;
+ Slotname [ danish ] = "ZeichnenPolygon" ;
+ HelpText [ danish ] = "Tegn et polygon" ;
+ Slotname [ portuguese ] = "DesenharPolígono" ;
+ HelpText [ portuguese ] = "Desenha um polígono" ;
+ Slotname [ portuguese_brazilian ] = "ZeichnenPolygon" ;
+ HelpText [ portuguese_brazilian ] = "Zeichnen eines Polygons" ;
+};
+SfxSlotInfo SID_DRAW_ARC
+{
+ SlotName = "ZeichnenBogen" ;
+ HelpText = "Zeichnen eines Kreisbogens" ;
+ SlotName [ English ] = "DrawArc" ;
+ HelpText [ English ] = "Draw an arc" ;
+ Slotname [ english_us ] = "DrawArc" ;
+ HelpText [ english_us ] = "Draw an arc" ;
+ Slotname = "ZeichnenBogen" ;
+ Slotname [ italian ] = "ArcoDiCerchio" ;
+ HelpText [ italian ] = "Disegna un arco di cerchio" ;
+ Slotname [ spanish ] = "DibujarArco" ;
+ HelpText [ spanish ] = "Dibujar un arco circular" ;
+ Slotname [ french ] = "DessinerArc" ;
+ HelpText [ french ] = "Dessiner un arc" ;
+ Slotname [ dutch ] = "TekenenBoog" ;
+ HelpText [ dutch ] = "Een cirkelboog tekenen" ;
+ Slotname [ swedish ] = "RitaBåge" ;
+ HelpText [ swedish ] = "Rita en båge" ;
+ Slotname [ danish ] = "DrawArc" ;
+ HelpText [ danish ] = "Tegn en cirkelbue" ;
+ Slotname [ portuguese_brazilian ] = "ZeichnenBogen" ;
+ HelpText [ portuguese_brazilian ] = "Zeichnen eines Kreisbogens" ;
+ Slotname [ portuguese ] = "DesenharArco" ;
+ HelpText [ portuguese ] = "Desenha um arco" ;
+};
+SfxSlotInfo SID_DRAW_PIE
+{
+ SlotName = "ZeichnenKreissegment" ;
+ HelpText = "Zeichnen eines Kreissegments" ;
+ SlotName [ English ] = "DrawPie" ;
+ HelpText [ English ] = "Draw a pie" ;
+ Slotname [ english_us ] = "DrawCirclePie" ;
+ HelpText [ english_us ] = "Draws Circle Pies" ;
+ Slotname = "ZeichnenKreissegment" ;
+ Slotname [ italian ] = "SegmentoDiCerchio" ;
+ HelpText [ italian ] = "Disegna segmento di cerchio" ;
+ Slotname [ spanish ] = "DibujarSectorDeCírculo" ;
+ HelpText [ spanish ] = "Dibuja un sector de círculo" ;
+ Slotname [ french ] = "DessinerSegmentArc" ;
+ HelpText [ french ] = "Dessiner un segment d'un arc" ;
+ Slotname [ dutch ] = "TekenenCirkelsegment" ;
+ HelpText [ dutch ] = "Een cirkelsegment tekenen" ;
+ Slotname [ swedish ] = "TecknaCirkelsegment" ;
+ HelpText [ swedish ] = "Teckna ett cirkelsegment" ;
+ Slotname [ danish ] = "ZeichnenKreissegment" ;
+ HelpText [ danish ] = "Tegn et cirkelsegment" ;
+ Slotname [ portuguese ] = "DesenharSectorCírculo" ;
+ HelpText [ portuguese ] = "Desenha um sector de círculo" ;
+ Slotname [ portuguese_brazilian ] = "ZeichnenKreissegment" ;
+ HelpText [ portuguese_brazilian ] = "Zeichnen eines Kreissegments" ;
+};
+SfxSlotInfo SID_DRAW_CIRCLECUT
+{
+ SlotName = "ZeichnenKreisabschnitt" ;
+ HelpText = "Zeichnen eines Kreisabschnitts" ;
+ SlotName [ English ] = "DrawCirclecut" ;
+ HelpText [ English ] = "Draw a circlecut" ;
+ Slotname [ dutch ] = "TekenenCirkelgedeelte" ;
+ HelpText [ dutch ] = "Een cirkelgedeelte tekenen" ;
+ Slotname [ english_us ] = "DrawEllipseSection" ;
+ HelpText [ english_us ] = "Draw Circle Section" ;
+ Slotname = "ZeichnenKreisabschnitt" ;
+ Slotname [ italian ] = "SezioneDiCerchio" ;
+ HelpText [ italian ] = "Disegna una sezione di cerchio" ;
+ Slotname [ spanish ] = "DibujarSegmentoDeCírculo" ;
+ HelpText [ spanish ] = "Dibuja un segmento de círculo" ;
+ Slotname [ french ] = "DessinerSegmentCercle" ;
+ HelpText [ french ] = "Dessiner un segment de cercle" ;
+ Slotname [ swedish ] = "RitaCirkelsegment" ;
+ HelpText [ swedish ] = "Rita ett cirkelavsnitt" ;
+ Slotname [ danish ] = "ZeichnenKreisabschnitt" ;
+ HelpText [ danish ] = "Tegn et cirkelafsnit" ;
+ Slotname [ portuguese ] = "DesenharSegmentoCírculo" ;
+ HelpText [ portuguese ] = "Desenha um segmento de círculo" ;
+ Slotname [ portuguese_brazilian ] = "ZeichnenKreisabschnitt" ;
+ HelpText [ portuguese_brazilian ] = "Zeichnen eines Kreisabschnitts" ;
+};
+SfxSlotInfo SID_DRAW_TEXT
+{
+ SlotName = "ZeichnenText" ;
+ HelpText = "Eingabe von Zeichentext" ;
+ SlotName [ English ] = "DrawText" ;
+ HelpText [ English ] = "Insert draw text" ;
+ Slotname [ dutch ] = "TekenenTekst" ;
+ HelpText [ dutch ] = "Tekentekst invoeren" ;
+ Slotname [ english_us ] = "DrawText" ;
+ HelpText [ english_us ] = "Insert draw text" ;
+ Slotname = "ZeichnenText" ;
+ Slotname [ italian ] = "DisegnaTesto" ;
+ HelpText [ italian ] = "Digitazione di testo" ;
+ Slotname [ spanish ] = "DibujarTexto" ;
+ HelpText [ spanish ] = "Introduce texto de dibujo" ;
+ Slotname [ french ] = "DessinerTexte" ;
+ HelpText [ french ] = "Insérer un texte" ;
+ Slotname [ swedish ] = "RitaText" ;
+ HelpText [ swedish ] = "Infoga text" ;
+ Slotname [ danish ] = "ZeichnenText" ;
+ HelpText [ danish ] = "Indsæt tekst i tegning" ;
+ Slotname [ portuguese ] = "DesenharTexto" ;
+ HelpText [ portuguese ] = "Inserir texto de desenho" ;
+ Slotname [ portuguese_brazilian ] = "ZeichnenText" ;
+ HelpText [ portuguese_brazilian ] = "Eingabe von Zeichentext" ;
+};
+SfxSlotInfo SID_DRAW_CAPTION
+{
+ SlotName = "ZeichnenLegende" ;
+ HelpText = "Legende einfügen" ;
+ SlotName [ English ] = "DrawCaption" ;
+ HelpText [ English ] = "Insert a caption" ;
+ Slotname [ dutch ] = "TekenenLegende" ;
+ HelpText [ dutch ] = "Legenda invoegen" ;
+ Slotname [ english_us ] = "DrawLegend" ;
+ HelpText [ english_us ] = "Insert a legend" ;
+ Slotname = "ZeichnenLegende" ;
+ Slotname [ italian ] = "DisegnaDidascalia" ;
+ HelpText [ italian ] = "Inserisci una didascalia" ;
+ Slotname [ spanish ] = "DibujarLeyenda" ;
+ HelpText [ spanish ] = "Inserta una leyenda" ;
+ Slotname [ french ] = "DessinerLégende" ;
+ HelpText [ french ] = "Insère la légende" ;
+ Slotname [ swedish ] = "RitaLegend" ;
+ HelpText [ swedish ] = "Infoga legend" ;
+ Slotname [ danish ] = "ZeichnenLegende" ;
+ HelpText [ danish ] = "Indsæt forklaring" ;
+ Slotname [ portuguese ] = "DesenharLegenda" ;
+ HelpText [ portuguese ] = "Insere legenda" ;
+ Slotname [ portuguese_brazilian ] = "ZeichnenLegende" ;
+ HelpText [ portuguese_brazilian ] = "Legende einfügen" ;
+};
+
+
+
+
+SfxSlotInfo SID_INSERT_PUSHBUTTON
+{
+ SlotName = "EinfügenPushbutton" ;
+ HelpText = "Einfügen eines Pushbuttons" ;
+ SlotName [ English ] = "InsertPushutton" ;
+ HelpText [ English ] = "Insert a pushbutton" ;
+ Slotname [ dutch ] = "InvoegenPushButton" ;
+ HelpText [ dutch ] = "Pushbutton invoegen" ;
+ Slotname [ english_us ] = "InsertPushButton" ;
+ HelpText [ english_us ] = "Insert a push button" ;
+ Slotname = "EinfügenPushbutton" ;
+ Slotname [ italian ] = "InserisciPushbutton" ;
+ HelpText [ italian ] = "Inserisci un Pushbutton" ;
+ Slotname [ spanish ] = "InsertarPushbutton" ;
+ HelpText [ spanish ] = "Insertar un botón de pulsación" ;
+ Slotname [ french ] = "InsérerBoutondeCommande" ;
+ HelpText [ french ] = "Insérer un bouton de commande" ;
+ Slotname [ swedish ] = "InfogaPushbutton" ;
+ HelpText [ swedish ] = "Infoga en pushbutton" ;
+ Slotname [ danish ] = "EinfügenPushbutton" ;
+ HelpText [ danish ] = "Indsæt en Pushbuttons" ;
+ Slotname [ portuguese ] = "InserirBotãoComando" ;
+ HelpText [ portuguese ] = "Insere um botão de comando" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenPushbutton" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen eines Pushbuttons" ;
+};
+SfxSlotInfo SID_INSERT_CHECKBOX
+{
+ SlotName = "EinfügenCheckbox" ;
+ HelpText = "Einfügen einer Checkbox" ;
+ SlotName [ English ] = "InsertCheckbox" ;
+ HelpText [ English ] = "Insert a checkbox" ;
+ Slotname [ dutch ] = "InvoegenCheckbox" ;
+ HelpText [ dutch ] = "Een checkbox invoegen" ;
+ Slotname [ english_us ] = "InsertCheckbox" ;
+ HelpText [ english_us ] = "Insert a checkbox" ;
+ Slotname = "EinfügenCheckbox" ;
+ Slotname [ italian ] = "InserisciChekcBox" ;
+ HelpText [ italian ] = "Inserisci una Checkbox" ;
+ Slotname [ spanish ] = "InsertarCasillaControl" ;
+ HelpText [ spanish ] = "Inserta un cuadro de verificación" ;
+ Slotname [ french ] = "InsérerCaseàcocher" ;
+ HelpText [ french ] = "Insérer une case à cocher" ;
+ Slotname [ swedish ] = "InfogaCheckbox" ;
+ HelpText [ swedish ] = "Infoga en Checkbox" ;
+ Slotname [ danish ] = "EinfügenCheckbox" ;
+ HelpText [ danish ] = "Indsæt en checkbox" ;
+ Slotname [ portuguese ] = "InserirCaixaCombinação" ;
+ HelpText [ portuguese ] = "Insere uma caixa de combinação" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenCheckbox" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen einer Checkbox" ;
+};
+SfxSlotInfo SID_INSERT_RADIOBUTTON
+{
+ SlotName = "EinfügenRadiobutton" ;
+ HelpText = "Einfügen eines Radiobutton" ;
+ SlotName [ English ] = "InsertRadiobutton" ;
+ HelpText [ English ] = "Insert a radiobutton" ;
+ Slotname [ dutch ] = "InvoegenRadiobutton" ;
+ HelpText [ dutch ] = "Radiobutton invoegen" ;
+ Slotname [ english_us ] = "InsertRadiobutton" ;
+ HelpText [ english_us ] = "Insert a radio button" ;
+ Slotname = "EinfügenRadiobutton" ;
+ Slotname [ italian ] = "InserisciRadiobutton" ;
+ HelpText [ italian ] = "Inserisci un Radiobutton" ;
+ Slotname [ spanish ] = "InsertarRadiobutton" ;
+ HelpText [ spanish ] = "Insertar un botón de radio" ;
+ Slotname [ french ] = "InsérerCased'Option" ;
+ HelpText [ french ] = "Insérer une case d'option" ;
+ Slotname [ swedish ] = "InfogaRadiobutton" ;
+ HelpText [ swedish ] = "Infoga en Radiobutton" ;
+ Slotname [ danish ] = "EinfügenRadiobutton" ;
+ HelpText [ danish ] = "Indsæt en Radiobutton" ;
+ Slotname [ portuguese ] = "InserirBotãoSelecção" ;
+ HelpText [ portuguese ] = "Insere um botão de selecção" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenRadiobutton" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen eines Radiobutton" ;
+};
+SfxSlotInfo SID_INSERT_SPINBUTTON
+{
+ SlotName = "EinfügenSpinbutton" ;
+ HelpText = "Einfügen eines Spinbutton" ;
+ SlotName [ English ] = "InsertSpinbutton" ;
+ HelpText [ English ] = "Insert a spinbutton" ;
+ Slotname [ dutch ] = "InvoegenSpinbutton" ;
+ HelpText [ dutch ] = "Spinbutton invoegen" ;
+ Slotname [ english_us ] = "InsertSpinbutton" ;
+ HelpText [ english_us ] = "Insert a spin button" ;
+ Slotname = "EinfügenSpinbutton" ;
+ Slotname [ italian ] = "InserisciSpinbutton" ;
+ HelpText [ italian ] = "Inserisci uno Spinbutton" ;
+ Slotname [ spanish ] = "InsertarSpinbutton" ;
+ HelpText [ spanish ] = "Insertar un botón de giro" ;
+ Slotname [ french ] = "InsérerSpinbutton" ;
+ HelpText [ french ] = "Insérer un Spinbutton" ;
+ Slotname [ swedish ] = "InfogaSpinbutton" ;
+ HelpText [ swedish ] = "Infoga en spinbutton" ;
+ Slotname [ danish ] = "EinfügenSpinbutton" ;
+ HelpText [ danish ] = "Indsæt en Spinbutton" ;
+ Slotname [ portuguese ] = "InserirBotãoSpin" ;
+ HelpText [ portuguese ] = "Insere um botão spin" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenSpinbutton" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen eines Spinbutton" ;
+};
+SfxSlotInfo SID_INSERT_FIXEDTEXT
+{
+ SlotName = "EinfügenFixedtext" ;
+ HelpText = "Einfügen eines Fixedtexts" ;
+ SlotName [ English ] = "InsertFixedText" ;
+ HelpText [ English ] = "Insert a fixed text" ;
+ Slotname [ dutch ] = "InvoegenFixedtext" ;
+ HelpText [ dutch ] = "Fixedtext invoegen" ;
+ Slotname [ english_us ] = "InsertFixedText" ;
+ HelpText [ english_us ] = "Insert a fixed text" ;
+ Slotname = "EinfügenFixedtext" ;
+ Slotname [ italian ] = "InserisciTestoFisso" ;
+ HelpText [ italian ] = "Inserisci un testo fisso" ;
+ Slotname [ spanish ] = "InsertarTextoFijo" ;
+ HelpText [ spanish ] = "Inserta un texto fijo" ;
+ Slotname [ french ] = "InsérerTexteFixe" ;
+ HelpText [ french ] = "Insérer un texte de longueur fixe" ;
+ Slotname [ swedish ] = "InfogaFixedText" ;
+ HelpText [ swedish ] = "Infoga en fixedtext" ;
+ Slotname [ danish ] = "EinfügenFixedtext" ;
+ HelpText [ danish ] = "Indsæt en fixedtekst" ;
+ Slotname [ portuguese ] = "InserirTextoFixo" ;
+ HelpText [ portuguese ] = "Insere um texto fixo" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenFixedtext" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen eines Fixedtexts" ;
+};
+SfxSlotInfo SID_INSERT_GROUPBOX
+{
+ SlotName = "EinfügenGroupbox" ;
+ HelpText = "Einfügen einer Groupbox" ;
+ SlotName [ English ] = "InsertGroupbox" ;
+ HelpText [ English ] = "Insert a groupbox" ;
+ Slotname [ english_us ] = "InsertGroupbox" ;
+ HelpText [ english_us ] = "Insert a groupbox" ;
+ Slotname = "EinfügenGroupbox" ;
+ Slotname [ italian ] = "InserisciGroupBox" ;
+ HelpText [ italian ] = "Inserisci un Group Box" ;
+ Slotname [ spanish ] = "IsnertarCuadroGrupos" ;
+ HelpText [ spanish ] = "Insertar un cuadro para grupos" ;
+ Slotname [ french ] = "InsérerGroupBox" ;
+ HelpText [ french ] = "Insérer une boîte de groupe" ;
+ Slotname [ dutch ] = "InvoegenGroupbox" ;
+ HelpText [ dutch ] = "Groupbox invoegen" ;
+ Slotname [ swedish ] = "InfogaGroupbox" ;
+ HelpText [ swedish ] = "Infoga en groupbox" ;
+ Slotname [ danish ] = "EinfügenGroupbox" ;
+ HelpText [ danish ] = "Indsæt en groupbox" ;
+ Slotname [ portuguese ] = "InserirCaixaGrupos" ;
+ HelpText [ portuguese ] = "Insere uma caixa de grupos" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenGroupbox" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen einer Groupbox" ;
+};
+
+SfxSlotInfo SID_INSERT_LISTBOX
+{
+ SlotName = "EinfügenListbox" ;
+ HelpText = "Einfügen einer Listbox" ;
+ SlotName [ English ] = "InsertListbox" ;
+ HelpText [ English ] = "Insert a listbox" ;
+ Slotname [ english_us ] = "InsertListbox" ;
+ HelpText [ english_us ] = "Insert a listbox" ;
+ Slotname = "EinfügenListbox" ;
+ Slotname [ italian ] = "InserisciListbox" ;
+ HelpText [ italian ] = "Inserisci un ListBox" ;
+ Slotname [ spanish ] = "InsertarCuadroLista" ;
+ HelpText [ spanish ] = "Insertar un cuadro de lista" ;
+ Slotname [ french ] = "InsérerZonedeListe" ;
+ HelpText [ french ] = "Insérer une zone de liste" ;
+ Slotname [ dutch ] = "InvoegenListbox" ;
+ HelpText [ dutch ] = "Listbox invoegen" ;
+ Slotname [ swedish ] = "InfogaListbox" ;
+ HelpText [ swedish ] = "Infoga en listbox" ;
+ Slotname [ danish ] = "EinfügenListbox" ;
+ HelpText [ danish ] = "Indsæt en Listbox" ;
+ Slotname [ portuguese ] = "InserirCaixaLista" ;
+ HelpText [ portuguese ] = "Insere uma caixa de listas" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenListbox" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen einer Listbox" ;
+};
+SfxSlotInfo SID_INSERT_COMBOBOX
+{
+ SlotName = "EinfügenCombobox" ;
+ HelpText = "Einfügen einer Combobox" ;
+ SlotName [ English ] = "InsertCombobox" ;
+ HelpText [ English ] = "Insert a combobox" ;
+ Slotname [ dutch ] = "InvoegenCheckbox" ;
+ HelpText [ dutch ] = "Combobox invoegen" ;
+ Slotname [ english_us ] = "InsertCombobox" ;
+ HelpText [ english_us ] = "Insert a combobox" ;
+ Slotname = "EinfügenCombobox" ;
+ Slotname [ italian ] = "InserisciComboBox" ;
+ HelpText [ italian ] = "Inserisci un Combo Box" ;
+ Slotname [ spanish ] = "InsertarCuadroCombinado" ;
+ HelpText [ spanish ] = "Inserta un cuadro combinado" ;
+ Slotname [ french ] = "InsérerZonedelistedéroulante" ;
+ HelpText [ french ] = "Insérer une zone de liste déroulante" ;
+ Slotname [ swedish ] = "InfogaCombobox" ;
+ HelpText [ swedish ] = "Infoga en Combobox" ;
+ Slotname [ danish ] = "EinfügenCombobox" ;
+ HelpText [ danish ] = "Indsæt en combobox" ;
+ Slotname [ portuguese ] = "InserirCaixaCombinação" ;
+ HelpText [ portuguese ] = "Insere uma caixa de combinação" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenCombobox" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen einer Combobox" ;
+};
+SfxSlotInfo SID_INSERT_EDIT
+{
+ SlotName = "EinfügenEdit" ;
+ HelpText = "Einfügen eines Edits" ;
+ SlotName [ English ] = "InsertEdit" ;
+ HelpText [ English ] = "Insert an editfield" ;
+ Slotname [ english_us ] = "InsertEdit" ;
+ HelpText [ english_us ] = "Insert an edit field" ;
+ Slotname = "EinfügenEdit" ;
+ Slotname [ italian ] = "InserisciEdit" ;
+ HelpText [ italian ] = "Inserisci un Edit" ;
+ Slotname [ spanish ] = "InsertarEdición" ;
+ HelpText [ spanish ] = "Inserta una edición" ;
+ Slotname [ french ] = "InsérerModifier" ;
+ HelpText [ french ] = "Insérer une modification" ;
+ Slotname [ dutch ] = "InvoegenEdit" ;
+ HelpText [ dutch ] = "Edit invoegen" ;
+ Slotname [ swedish ] = "InfogaRedigera" ;
+ HelpText [ swedish ] = "Infoga ett redigera-fält" ;
+ Slotname [ danish ] = "EinfügenEdit" ;
+ HelpText [ danish ] = "Indsæt et edit felt" ;
+ Slotname [ portuguese ] = "InserirEditar" ;
+ HelpText [ portuguese ] = "Insere um Editar" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenEdit" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen eines Edits" ;
+};
+SfxSlotInfo SID_INSERT_HSCROLLBAR
+{
+ SlotName = "EinfügenHScrollbar" ;
+ HelpText = "Einfügen eines horizontalen Scrollbars" ;
+ SlotName [ English ] = "InsertHScrollbar" ;
+ HelpText [ English ] = "Insert a horizontal scrollbar" ;
+ Slotname [ english_us ] = "InsertHScrollbar" ;
+ HelpText [ english_us ] = "Insert a horizontal scrollbar" ;
+ Slotname = "EinfügenHScrollbar" ;
+ Slotname [ italian ] = "InserisciHScrollbar" ;
+ HelpText [ italian ] = "Inserisci una Scrollbar orizzontale" ;
+ Slotname [ spanish ] = "InsertarHScrollbar" ;
+ HelpText [ spanish ] = "Inserta una barra de desplazamiento horizontal" ;
+ Slotname [ french ] = "InsérerBarredeDéfilementH" ;
+ HelpText [ french ] = "Insère une barre de défilement horizontale" ;
+ Slotname [ dutch ] = "InvoegenHScrollbar" ;
+ HelpText [ dutch ] = "Een horizontale schuifbalk invoegen" ;
+ Slotname [ swedish ] = "InfogaHRullningslist" ;
+ HelpText [ swedish ] = "Infoga en horisontal scrollbar" ;
+ Slotname [ danish ] = "EinfügenHScrollbar" ;
+ HelpText [ danish ] = "Indsæt et vandret Scrollbar" ;
+ Slotname [ portuguese ] = "InserirBarraDeslH" ;
+ HelpText [ portuguese ] = "Insere uma barra de deslocamento horizontal" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenHScrollbar" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen eines horizontalen Scrollbars" ;
+};
+SfxSlotInfo SID_INSERT_VSCROLLBAR
+{
+ SlotName = "EinfügenVScrollbar" ;
+ HelpText = "Einfügen eines vertikalen Scrollbars" ;
+ SlotName [ English ] = "InsertVScrollbar" ;
+ HelpText [ English ] = "Insert a vertical scrollbar" ;
+ Slotname [ dutch ] = "InvoegenVScrollbar" ;
+ HelpText [ dutch ] = "Een verticale schuifbalk invoegen" ;
+ Slotname [ english_us ] = "InsertVScrollbar" ;
+ HelpText [ english_us ] = "Insert a vertical scrollbar" ;
+ Slotname = "EinfügenVScrollbar" ;
+ Slotname [ italian ] = "InserisciVScrollbar" ;
+ HelpText [ italian ] = "Inserisci una Scrollbar verticale" ;
+ Slotname [ spanish ] = "InsertarVScrollbar" ;
+ HelpText [ spanish ] = "Insertar una barra de desplazamiento vertical" ;
+ Slotname [ french ] = "InsérerBarredeDéfilementV" ;
+ HelpText [ french ] = "Insère une barre de défilement verticale" ;
+ Slotname [ swedish ] = "InfogaVRullningslist" ;
+ HelpText [ swedish ] = "Infoga en vertikal scrollbar" ;
+ Slotname [ danish ] = "EinfügenVScrollbar" ;
+ HelpText [ danish ] = "Indsæt et lodret scrollbar" ;
+ Slotname [ portuguese ] = "InserirBarraDeslV" ;
+ HelpText [ portuguese ] = "Insere uma barra de deslocamento vertical" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenVScrollbar" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen eines vertikalen Scrollbars" ;
+};
+SfxSlotInfo SID_INSERT_PREVIEW
+{
+ SlotName = "Preview" ;
+ HelpText = "Preview" ;
+ SlotName [ English ] = "Preview" ;
+ HelpText [ English ] = "Preview" ;
+ Slotname [ dutch ] = "Preview" ;
+ HelpText [ dutch ] = "Preview" ;
+ Slotname [ english_us ] = "Preview" ;
+ HelpText [ english_us ] = "Preview" ;
+ Slotname = "Preview" ;
+ Slotname [ italian ] = "Anteprima" ;
+ HelpText [ italian ] = "Anteprima" ;
+ Slotname [ spanish ] = "Presentación preliminar" ;
+ HelpText [ spanish ] = "Presentación preliminar" ;
+ Slotname [ french ] = "Aperçu" ;
+ HelpText [ french ] = "Aperçu" ;
+ Slotname [ swedish ] = "Preview" ;
+ HelpText [ swedish ] = "Preview" ;
+ Slotname [ danish ] = "Preview" ;
+ HelpText [ danish ] = "Preview" ;
+ Slotname [ portuguese ] = "Visualizar" ;
+ HelpText [ portuguese ] = "Visualização" ;
+ Slotname [ portuguese_brazilian ] = "Preview" ;
+ HelpText [ portuguese_brazilian ] = "Preview" ;
+};
+
+
+
+
+SfxSlotInfo SID_INSERT_URLBUTTON
+{
+ SlotName = "EinfügenURLButton" ;
+ HelpText = "Einfügen eines URL-Buttons" ;
+ SlotName [ English ] = "InsertURLButton" ;
+ HelpText [ English ] = "Insert an URL Button" ;
+ Slotname [ dutch ] = "InvoegenURLButton" ;
+ HelpText [ dutch ] = "URL-button invoegen" ;
+ Slotname [ english_us ] = "InsertURLButton" ;
+ HelpText [ english_us ] = "Insert a URL button" ;
+ Slotname = "EinfügenURLButton" ;
+ Slotname [ italian ] = "InserisciPulsanteURL" ;
+ HelpText [ italian ] = "Inserisci un pulsante URL" ;
+ Slotname [ spanish ] = "InsertarBotónURL" ;
+ HelpText [ spanish ] = "Insertar un botón URL" ;
+ Slotname [ french ] = "InsérerBoutonURL" ;
+ HelpText [ french ] = "Insérer un bouton URL" ;
+ Slotname [ swedish ] = "InfogaURLButton" ;
+ HelpText [ swedish ] = "Infoga en URL-button" ;
+ Slotname [ danish ] = "EinfügenURLButton" ;
+ HelpText [ danish ] = "Indsæt en URL-Button" ;
+ Slotname [ portuguese ] = "InserirBotãoURL" ;
+ HelpText [ portuguese ] = "Insere um botão URL" ;
+ Slotname [ portuguese_brazilian ] = "EinfügenURLButton" ;
+ HelpText [ portuguese_brazilian ] = "Einfügen eines URL-Buttons" ;
+};
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/src/sc.src b/sc/source/ui/src/sc.src
new file mode 100644
index 000000000000..4c6fab8256b6
--- /dev/null
+++ b/sc/source/ui/src/sc.src
@@ -0,0 +1,173 @@
+/*************************************************************************
+ *
+ * $RCSfile: sc.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+ //==================================================================
+ // StarCalc Applikations Resource
+ //
+ // (C) 1994 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:45:05 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/source/ui/src/sc.srv $ $Workfile: sc.src $
+ //==================================================================
+
+
+#include "sc.hrc" // -> #include <sfx.hrc>
+#include <basctl/basicide.hrc>
+
+
+
+ // Version und App-Titel------------------------------------------------------
+
+String RID_BUILDVERSION
+{
+ Text = UPDVER ;
+};
+
+String RID_APPTITLE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? StarCalc 4.0 : StarCalc 3.1 */
+ Text = "StarOffice Calc" ;
+ Text [ ENGLISH ] = "StarCalc 4.0" ;
+ Text [ norwegian ] = "StarCalc 4.0" ;
+ Text [ italian ] = "StarOffice Calc" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc 3.1" ;
+ Text [ portuguese ] = "StarOffice Calc" ;
+ Text [ finnish ] = "StarCalc 4.0" ;
+ Text [ danish ] = "StarOffice Calc" ;
+ Text [ french ] = "StarOffice Calc" ;
+ Text [ swedish ] = "StarOffice Calc" ;
+ Text [ dutch ] = "StarOffice Calc" ;
+ Text [ spanish ] = "StarOffice Calc" ;
+ Text [ english_us ] = "StarOffice Calc" ;
+ Text[ chinese_simplified ] = "StarOffice Calc";
+ Text[ russian ] = "StarOffice Calc";
+ Text[ polish ] = "StarOffice Calc";
+ Text[ japanese ] = "StarOffice Calc";
+ Text[ chinese_traditional ] = "StarOffice Calc";
+ Text[ arabic ] = "StarOffice Calc";
+ Text[ greek ] = "StarOffice Calc";
+ Text[ korean ] = "StarOffice Calc";
+ Text[ turkish ] = "StarOffice Calc";
+ Text[ language_user1 ] = " ";
+};
+
+ // About-Dialog --------------------------------------------------------------
+
+ // Icons & Bitmaps: ----------------------------------------------------------
+
+
+ //Bitmap RID_DEFAULTINTRO { File = "scintro.bmp"; };
+ //Bitmap RID_DROPDOWNBITMAP { File = "dropdown.bmp"; };
+ //Bitmap RID_BLUEDROPDOWNBITMAP { File = "dropblue.bmp"; };
+//Bitmap RID_ANCHORBITMAP { File = "anchor.bmp" ; };
+//Bitmap RID_GRAYANCHORBITMAP { File = "anchor.bmp" ; }; //! andere Bitmap !!!
+
+// Bitmap RID_BMP_REFBTN1 { File = "refinp1.bmp" ; };
+// Bitmap RID_BMP_REFBTN2 { File = "refinp2.bmp" ; };
+
+Image RID_BMP_REFBTN1
+{
+ ImageBitmap = Bitmap
+ {
+ File = "refinp1.bmp";
+ };
+
+ MaskColor = Color
+ {
+ Red = 0xC000 ;
+ Green = 0xC000 ;
+ Blue = 0xC000 ;
+ };
+};
+
+Image RID_BMP_REFBTN2
+{
+ ImageBitmap = Bitmap
+ {
+ File = "refinp2.bmp";
+ };
+
+ MaskColor = Color
+ {
+ Red = 0xC000 ;
+ Green = 0xC000 ;
+ Blue = 0xC000 ;
+ };
+};
+
+
+ // ???
+String 30001 { Text = "Dummy1" ; };
+String 30002 { Text = "Dummy2" ; };
+String 30006 { Text = "Dummy3" ; };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/src/scerrors.src b/sc/source/ui/src/scerrors.src
new file mode 100644
index 000000000000..7e4ba7d7f260
--- /dev/null
+++ b/sc/source/ui/src/scerrors.src
@@ -0,0 +1,665 @@
+/*************************************************************************
+ *
+ * $RCSfile: scerrors.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define __RSC
+#include "scerrors.hxx"
+#include "sc.hrc"
+
+
+
+#define SH_MAX 0x7fff
+
+Resource RID_ERRHDLSC
+{
+ //------------------------------------------------------------
+ // ERRORS -----------------------------------------------------
+ //------------------------------------------------------------
+ String SCERR_IMPORT_CONNECT & SH_MAX
+ {
+ Text = "Es konnte keine Verbindung zu der Datei hergestellt werden." ;
+ Text [ ENGLISH ] = "No connection could be established." ;
+ Text [ english_us ] = "Impossible to connect to the file." ;
+ Text [ italian ] = "Impossibile stabilire il collegamento con il file" ;
+ Text [ spanish ] = "No se pudo establecer conexión con el archivo." ;
+ Text [ french ] = "Impossible d'établir un lien avec le fichier." ;
+ Text [ dutch ] = "Er kon geen verbinding met het bestand tot stand worden gebracht." ;
+ Text [ swedish ] = "En förbindelse till filen kunde inte etableras." ;
+ Text [ danish ] = "Det var ikke muligt at oprette en forbindelse til filen." ;
+ Text [ portuguese ] = "Não foi possível estabelecer ligação com o ficheiro." ;
+ Text [ portuguese_brazilian ] = "Es konnte keine Verbindung zu der Datei hergestellt werden." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨Á¬½ÓÕâ¸öÎļþ¡£";
+ Text[ russian ] = "Íåâîçìîæíî ñîçäàòü ñâÿçü ñ ýòèì ôàéëîì.";
+ Text[ polish ] = "Nie mo¿na by³o utworzyæ po³¹czenia z plikiem.";
+ Text[ japanese ] = "̧²Ù‚Ö‚ÌÚ‘±‚Í‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "µLªk³sµ²³o­ÓÀɮסC";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÇÊÕÇá ÈÇáãáÝ.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá ãßíåé óýíäåóç ìå ôï áñ÷åßï.";
+ Text[ korean ] = "ÆÄÀÏ¿¡ Á¢¼ÓÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Dosya ile baðlantý oluþturulamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_CURSOR & SH_MAX
+ {
+ Text = "Das Dateiformat konnte nicht gelesen werden." ;
+ Text [ ENGLISH ] = "The fileformat could not be read." ;
+ Text [ dutch ] = "Het bestandsformaat kon niet worden gelezen." ;
+ Text [ english_us ] = "The file format could not be read." ;
+ Text [ italian ] = "Impossibile leggere il formato del file" ;
+ Text [ spanish ] = "No se pudo leer el formato del archivo." ;
+ Text [ french ] = "Impossible de lire ce format de fichier." ;
+ Text [ swedish ] = "Filformatet kunde inte läsas." ;
+ Text [ danish ] = "Det var ikke muligt at læse filformatet." ;
+ Text [ portuguese ] = "Foi impossível ler o formato do ficheiro." ;
+ Text [ portuguese_brazilian ] = "Das Dateiformat konnte nicht gelesen werden." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨¶ÁÈ¡Õâ¸öÎļþ¸ñʽ¡£";
+ Text[ russian ] = "Íå óäàåòñÿ ïðî÷èòàòü ôîðìàò ôàéëà.";
+ Text[ polish ] = "Format pliku nie móg³ zostaæ odczytany.";
+ Text[ japanese ] = "̧²Ù‘Ž®‚Í“Ç‚Ýž‚Ý‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "µLªkŪ¨ú³o­ÓÀɮ׮榡¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÞÑÇÁÉ ÊäÓíÞ ÇáãáÝ.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá ãßíåé áíÜãíùóç ôçò ìïñöÞò áñ÷åßïõ.";
+ Text[ korean ] = "ÆÄÀϼ­½ÄÀ» ÀÐÀ»¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Dosya formatý okunamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_OPEN & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Datei konnte nicht geöffnet werden. : Die Datei konnte nicht ge÷ffnet werden. */
+ Text = "Die Datei konnte nicht geöffnet werden." ;
+ Text [ ENGLISH ] = "The file could not be opened." ;
+ Text [ dutch ] = "Het bestand kon niet worden geopend." ;
+ Text [ english_us ] = "File could not be opened." ;
+ Text [ italian ] = "Impossibile aprire il file." ;
+ Text [ spanish ] = "No se pudo abrir el archivo." ;
+ Text [ french ] = "Impossible d'ouvrir le fichier." ;
+ Text [ swedish ] = "Filen kunde inte öppnas." ;
+ Text [ danish ] = "Det var ikke muligt at åbne filen." ;
+ Text [ portuguese ] = "Impossível abrir o ficheiro." ;
+ Text [ portuguese_brazilian ] = "Die Datei konnte nicht geöffnet werden." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨´ò¿ªÕâ¸öÎļþ¡£";
+ Text[ russian ] = "Íå óäàåòñÿ îòêðûòü ôàéë.";
+ Text[ polish ] = "Nie mo¿na by³o otworzyæ pliku.";
+ Text[ japanese ] = "̧²Ù‚ðŠJ‚­‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "µLªk¶}±Ò³o­ÓÀɮסC";
+ Text[ arabic ] = "ÊÚÐÑ ÝÊÍ ÇáãáÝ.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá áíïé÷èåß ôï áñ÷åßï.";
+ Text[ korean ] = "ÆÄÀÏÀÌ ¿­¸®Áö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Dosya açýlamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_UNKNOWN & SH_MAX
+ {
+ Text = "Ein unbekannter Fehler ist aufgetreten." ;
+ Text [ ENGLISH ] = "An unknown error occurred" ;
+ Text [ dutch ] = "Er is een onbekende fout opgetreden" ;
+ Text [ english_us ] = "An unknown error has occurred." ;
+ Text [ italian ] = "Si è verificato un errore sconosciuto." ;
+ Text [ spanish ] = "Ha ocurrido un error desconocido." ;
+ Text [ french ] = "Une erreur inconnue est survenue." ;
+ Text [ swedish ] = "Det har uppstått ett okänt fel." ;
+ Text [ danish ] = "Der opstod en ukendt fejl." ;
+ Text [ portuguese ] = "Surgiu um erro desconhecido." ;
+ Text [ portuguese_brazilian ] = "Ein unbekannter Fehler ist aufgetreten." ;
+ Text[ chinese_simplified ] = "·¢ÉúÒ»¸ö²»Ã÷µÄ´íÎó¡£";
+ Text[ russian ] = "Ïðîèçîøëà íåèçâåñòíàÿ îøèáêà.";
+ Text[ polish ] = "Wyst¹pi³ nieznany b³¹d.";
+ Text[ japanese ] = "•s–¾‚È´×°‚ª”­¶‚µ‚Ü‚µ‚½B";
+ Text[ chinese_traditional ] = "µo¥Í¤@­Ó¤£©úªº¿ù»~¡C";
+ Text[ arabic ] = "ÍÏË ÎØà ÛíÑ ãÚÑæÝ.";
+ Text[ greek ] = "ÐáñïõóéÜóôçêå Üãíùóôï óöÜëìá.";
+ Text[ korean ] = "¾Ë¼ö¾ø´Â ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù.";
+ Text[ turkish ] = "Bilnmeyen hata oluþtu.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_OUTOFMEM & SH_MAX
+ {
+ Text = "Nicht genug Speicher beim Importieren." ;
+ Text [ ENGLISH ] = "Not enough memory while importing." ;
+ Text [ dutch ] = "Niet genoeg geheugen bij het importeren." ;
+ Text [ english_us ] = "Not enough memory while importing." ;
+ Text [ italian ] = "Memoria insufficiente durante l'importazione." ;
+ Text [ spanish ] = "Memoria insuficiente al importar." ;
+ Text [ french ] = "Mémoire insuffisante lors de l'import." ;
+ Text [ swedish ] = "Inte tillräckligt med minne under importeringen." ;
+ Text [ danish ] = "Ikke tilstrækkelig hukommelse ved import." ;
+ Text [ portuguese ] = "Memória insuficiente ao importar." ;
+ Text [ portuguese_brazilian ] = "Nicht genug Speicher beim Importieren." ;
+ Text[ chinese_simplified ] = "ÔÚÊäÈëʱÄÚ´æ²»×ã¡£";
+ Text[ russian ] = "Íåäîñòàòî÷íî ïàìÿòè ïðè èìïîðòèðîâàíèè.";
+ Text[ polish ] = "Za ma³o pamiêci dla importu.";
+ Text[ japanese ] = "²ÝÎß°Ä‚ÌÛ‚Ì•s\\•ª‚È‹ó‚«—e—ÊB";
+ Text[ chinese_traditional ] = "¦b¿é¤J®É°O¾ÐÅ餣¨¬¡C";
+ Text[ arabic ] = "ÇáÐÇßÑÉ áíÓÊ ßÇÝíÉ ÃËäÇÁ ÇáÇÓÊíÑÇÏ.";
+ Text[ greek ] = "ÊáôÜ ôçí åéóáãùãÞ ðñïÝêõøå ðñüâëçìá ìíÞìçò.";
+ Text[ korean ] = "°¡Á®¿À±â¸¦ Çϴµ¿¾È ¸Þ¸ð¸®°¡ ºÎÁ·ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Ýçe aktarma iþleminde bellek yetersiz.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_UNKNOWN_WK & SH_MAX
+ {
+ Text = "Unbekanntes Lotus-123-Dateiformat." ;
+ Text [ ENGLISH ] = "Unknown Lotus-123 file format." ;
+ Text [ dutch ] = "Onbekend Lotus-123-bestandsformaat." ;
+ Text [ english_us ] = "Unknown Lotus1-2-3 file format." ;
+ Text [ italian ] = "Formato file Lotus 123 sconosciuto." ;
+ Text [ spanish ] = "Formato del archivo Lotus 123 desconocido." ;
+ Text [ french ] = "Format de fichier Lotus-123 inconnu." ;
+ Text [ swedish ] = "Obekant Lotus-123-filformat." ;
+ Text [ danish ] = "Ukendt Lotus-123-filformat." ;
+ Text [ portuguese ] = "Formato de ficheiro Lotus-123 desconhecido." ;
+ Text [ portuguese_brazilian ] = "Unbekanntes Lotus-123-Dateiformat." ;
+ Text[ chinese_simplified ] = "²»Ã÷µÄ Lotus1-2-3 Îļþ¸ñʽ¡£";
+ Text[ russian ] = "Íåèçâåñòíûé ôîðìàò ôàéëà Lotus-123.";
+ Text[ polish ] = "Nieznany format pliku Lotus1-2-3.";
+ Text[ japanese ] = "•s–¾‚È Lotus123 ̧²Ù‘Ž®¡";
+ Text[ chinese_traditional ] = "¤£©úªº Lotus1-2-3 Àɮ׮榡¡C";
+ Text[ arabic ] = "ÊäÓíÞ ãáÝ Lotus-123 ÛíÑ ãÚÑæÝ.";
+ Text[ greek ] = "¢ãíùóôç ìïñöÞ áñ÷åßïõ Lotus1-2-3.";
+ Text[ korean ] = "¾Ë¼ö¾ø´Â ·ÎÅͽº1-2-3 ÆÄÀÏ ¼­½Ä";
+ Text[ turkish ] = "Bilinmeyen Lotus-123 dosya formatý.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_FORMAT & SH_MAX
+ {
+ Text = "Fehler in Dateistruktur beim Importieren." ;
+ Text [ ENGLISH ] = "Error in file structure." ;
+ Text [ dutch ] = "Fout in bestandstructuur bij importeren" ;
+ Text [ english_us ] = "Error in file structure while importing." ;
+ Text [ italian ] = "Errore nella struttura del file durante l'importazione" ;
+ Text [ spanish ] = "Error en la estructura del archivo al importar." ;
+ Text [ french ] = "Erreur dans la structure du fichier lors de l'import." ;
+ Text [ swedish ] = "Fel i filstruktur vid importering." ;
+ Text [ danish ] = "Fejl i filstrukturen ved import." ;
+ Text [ portuguese ] = "Erro na estrutura do ficheiro ao importar." ;
+ Text [ portuguese_brazilian ] = "Fehler in Dateistruktur beim Importieren." ;
+ Text[ chinese_simplified ] = "ÔÚÊäÈëʱ·¢ÉúÎļþ½á¹¹´íÎó¡£";
+ Text[ russian ] = "Îøèáêà â ñòðóêòóðå ôàéëà ïðè èìïîðòèðîâàíèè.";
+ Text[ polish ] = "B³¹d struktury pliku podczas importowania.";
+ Text[ japanese ] = "²ÝÎß°Ä‚ÌÛ‚Ì̧²Ù\\‘¢‚É‚¨‚¯‚é´×°B";
+ Text[ chinese_traditional ] = "¦b¿é¤J®Éµo¥ÍÀÉ®×µ²ºc¿ù»~¡C";
+ Text[ arabic ] = "ÍÏË ÎØà Ýí ÈäíÉ ÇáãáÝ ÃËäÇÁ ÇáÇÓÊíÑÇÏ.";
+ Text[ greek ] = "ÓöÜëìá óôç äïìÞ ôïõ áñ÷åßïõ êáôÜ ôçí åéóáãùãÞ.";
+ Text[ korean ] = "°¡Á®¿À±â¸¦ Çϴµ¿¾È ÆÄÀÏ ±¸Á¶¿¡¼­ ¿À·ù";
+ Text[ turkish ] = "Ýçe aktarma iþleminde dosya yapýsýnda hata.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_NI & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Für diesen Dateityp ist kein Filter implementiert. : F³r diesen Dateityp ist kein Filter implementiert. */
+ Text = "Für diesen Dateityp ist kein Filter implementiert." ;
+ Text [ ENGLISH ] = "There is no filter available for this file." ;
+ Text [ english_us ] = "There is no filter available for this file type." ;
+ Text [ italian ] = "Per questo tipo di file non è stato implementato nessun filtro" ;
+ Text [ spanish ] = "Para este tipo de archivo no hay ningún filtro implementado." ;
+ Text [ french ] = "Aucun filtre disponible pour ce type de fichier." ;
+ Text [ dutch ] = "Voor dit bestandstype staat geen filter ter beschikking." ;
+ Text [ swedish ] = "Inget filter är implementerat för denna filtyp." ;
+ Text [ danish ] = "Der er ikke implementeret et filter til denne filtype." ;
+ Text [ portuguese ] = "Não há filtro implementado para este tipo de ficheiro." ;
+ Text [ portuguese_brazilian ] = "Für diesen Dateityp ist kein Filter implementiert." ;
+ Text[ chinese_simplified ] = "Ä¿Ç°»¹²»ÄÜΪÕâ¸öÎļþÀàÐÍÌṩɸѡ¹¦ÄÜ¡£";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Äëÿ ýòîãî òèïà ôàéëà íå èìååòñÿ ôèëüòðà.";
+ Text[ polish ] = "Dla tego typu pliku nie zaimplementowano filtra.";
+ Text[ japanese ] = "‚±‚Ì̧²Ù‚ÌŽí—Þ‚É‚Į́ÙÀ‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "¥Ø«eÁÙ¤£¯à¬°³o­ÓÀÉ®×Ãþ«¬´£¨Ñ¿z¿ï¥\\¯à¡C";
+ Text[ arabic ] = "áã íÊã ÊäÝíÐ ÝáÊÑ áåÐÇ ÇáäæÚ ãä ÇáãáÝÇÊ.";
+ Text[ greek ] = "Äåí õðÜñ÷åé ößëôñï äéáèÝóéìï ãéá áõôüí ôïí ôýðï áñ÷åßùí.";
+ Text[ korean ] = "ÀÌ ÆÄÀÏ À¯Çü¿¡ ¸Â´Â ÇÊÅÍ°¡ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Bu dosya tipi için filtre mevcut deðil.";
+ };
+ String SCERR_IMPORT_UNKNOWN_BIFF & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Nicht unterstütztes oder unbekanntes Excel-Dateiformat. : Nicht unterst³tztes oder unbekanntes Excel-Dateiformat. */
+ Text = "Nicht unterstütztes oder unbekanntes Excel-Dateiformat." ;
+ Text [ ENGLISH ] = "Unknown or not supported Excel file format" ;
+ Text [ english_us ] = "Unknown or unsupported Excel file format." ;
+ Text [ italian ] = "Formato file Excel sconosciuto o non supportato" ;
+ Text [ spanish ] = "Formato del archivo Excel no soportado o desconocido." ;
+ Text [ french ] = "Format de fichier Excel inconnu ou incompatible." ;
+ Text [ dutch ] = "Niet ondersteund of onbekend Excel bestandsformaat." ;
+ Text [ swedish ] = "Ej understött eller obekant Excel-filformat." ;
+ Text [ danish ] = "Et ikke understøttet eller ukendt Excel-filformat." ;
+ Text [ portuguese ] = "Formato de ficheiro Excel sem suporte ou desconhecido." ;
+ Text [ portuguese_brazilian ] = "Nicht unterstütztes oder unbekanntes Excel-Dateiformat." ;
+ Text[ chinese_simplified ] = "²»ÊÜÖ§³ÖµÄ»ò²»Ã÷µÄ Excel Îļþ¸ñʽ¡£";
+ Text[ russian ] = "Íåèçâåñòíûé èëè íåïîääåðæèâàåìûé ôîðìàò ôàéëà Excel.";
+ Text[ polish ] = "Nie obs³ugiwany lub nieznany format pliku Excel.";
+ Text[ japanese ] = "Žx‰‡‚³‚ê‚Ä‚È‚¢‚Ü‚½‚Í•s–¾‚ÈExceļ²ÙÌ«°Ï¯Ä¡";
+ Text[ chinese_traditional ] = "¤£¨ü¤ä´©ªº©Î¤£©úªº Excel Àɮ׮榡¡C";
+ Text[ arabic ] = "ÊäÓíÞ ãáÝ Excel ÛíÑ ãÏÚæã¡ Ãæ ÛíÑ ãÚÑæÝ.";
+ Text[ greek ] = "¢ãíùóôç Þ ìç õðïóôçñéæüìåíç ìïñöÞ áñ÷åßïõ Excel.";
+ Text[ korean ] = "¾Ë¼ö¾ø°Å³ª Áö¿øµÇÁö ¾Ê´ÂExcel ÆÄÀÏ ¼­½Ä.";
+ Text[ turkish ] = "Desteklenmeyen ya da bilinmeyen Excel dosya formatý.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_NI_BIFF & SH_MAX
+ {
+ Text = "Noch nicht implementiertes Excel-Dateiformat." ;
+ Text [ ENGLISH ] = "Not yet implemented Excel file format" ;
+ Text [ dutch ] = "Nog niet geïmplementeerd Excel bestandsformaat." ;
+ Text [ english_us ] = "Excel file format not yet implemented." ;
+ Text [ italian ] = "Formato di file Excel non ancora implementato." ;
+ Text [ spanish ] = "Formato del archivo Excel aún no implementado." ;
+ Text [ french ] = "Format de fichier Excel pas encore appliqué." ;
+ Text [ swedish ] = "Ännu inte implementerat Excel-filformat." ;
+ Text [ danish ] = "Endnu ikke implementeret Excel-filformat." ;
+ Text [ portuguese ] = "Formato de ficheiro Excel ainda não implementado." ;
+ Text [ portuguese_brazilian ] = "Noch nicht implementiertes Excel-Dateiformat." ;
+ Text[ chinese_simplified ] = "»¹²»ÊÜÖ§³ÖµÄ Excel Îļþ¸ñʽ¡£";
+ Text[ russian ] = "Ôîðìàò ôàéëà Excel åùå íåðåàëèçîâàí.";
+ Text[ polish ] = "Jeszcze nie zaimplementowany format pliku Excel.";
+ Text[ japanese ] = "‚Ü‚¾ŽÀ‘•‚³‚ê‚Ä‚È‚¢ Excel ̧²Ù‘Ž®B";
+ Text[ chinese_traditional ] = "ÁÙ¤£¨ü¤ä´©ªº Excel Àɮ׮榡¡C";
+ Text[ arabic ] = "ÊäÓíÞ ãáÝ Excel áã íÊã ÊäÝíÐå ÈÚÏ.";
+ Text[ greek ] = "ÌïñöÞ áñ÷åßïõ Excel ðïõ äåí Ý÷åé õëïðïéçèåß áêüìç.";
+ Text[ korean ] = "Excel ÆÄÀÏÆ÷¸ËÀÌ ¾ÆÁ÷ ±¸ÇöµÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Henüz kullanýlmayan Excel dosya formatý.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_FILEPASSWD & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Datei ist durch ein Kennwort geschützt. : Die Datei ist durch ein Kennwort gesch³tzt. */
+ Text = "Die Datei ist durch ein Kennwort geschützt." ;
+ Text [ ENGLISH ] = "This file is password protected." ;
+ Text [ dutch ] = "Het bestand is door een wachtwoord beveiligd" ;
+ Text [ english_us ] = "This file is password-protected." ;
+ Text [ italian ] = "Il file è protetto da una password" ;
+ Text [ spanish ] = "El archivo está protegido con una palabra clave." ;
+ Text [ french ] = "Fichier protégé par un mot de passe." ;
+ Text [ swedish ] = "Filen är skyddad med ett lösenord." ;
+ Text [ danish ] = "Filen er beskyttet med en adgangskode." ;
+ Text [ portuguese ] = "O ficheiro está protegido por senha." ;
+ Text [ portuguese_brazilian ] = "Die Datei ist durch ein Kennwort geschützt." ;
+ Text[ chinese_simplified ] = "Õâ¸öÎļþÊܵ½¿ÚÁî±£»¤¡£";
+ Text[ russian ] = "Ôàéë çàùèùåí ïàðîëåì.";
+ Text[ polish ] = "Plik jest zabezpieczony has³em.";
+ Text[ japanese ] = "̧²Ù‚ÍÊ߽ܰÄÞ‚É‚æ‚Á‚ĕی삳‚ê‚Ä‚¢‚Ü‚·B";
+ Text[ chinese_traditional ] = "³o­ÓÀɮרü¨ì±K½X«OÅ@¡C";
+ Text[ arabic ] = "åÐÇ ÇáãáÝ ãÍãí ÈßáãÉ ÓÑ.";
+ Text[ greek ] = "Ôï áñ÷åßï ðñïóôáôåýåôáé ìå êùäéêü ðñüóâáóçò.";
+ Text[ korean ] = "ÆÄÀÏÀÌ Æнº¿öµå º¸È£°¡ µÇ¾îÀÖ½À´Ï´Ù.";
+ Text[ turkish ] = "Dosya þifre ile korunuyor.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_INTERNAL & SH_MAX
+ {
+ Text = "Interner Importfehler" ;
+ Text [ ENGLISH ] = "An internal error occurred while importing." ;
+ Text [ english_us ] = "Internal import error." ;
+ Text [ italian ] = "Errore interno di import" ;
+ Text [ spanish ] = "Error de importación interno." ;
+ Text [ french ] = "Erreur d'import interne" ;
+ Text [ dutch ] = "Interne importfout" ;
+ Text [ swedish ] = "Internt importfel" ;
+ Text [ danish ] = "Intern importfejl." ;
+ Text [ portuguese ] = "Erro de importação interno." ;
+ Text [ portuguese_brazilian ] = "Interner Importfehler" ;
+ Text[ chinese_simplified ] = "ÄÚ²¿ÊäÈë´íÎó¡£";
+ Text[ russian ] = "Âíóòðåííÿÿ îøèáêà èìïîðòà";
+ Text[ polish ] = "Wewnêtrzny b³¹d importu";
+ Text[ japanese ] = "“à•”‚̲ÝÎß°Ä´×°";
+ Text[ chinese_traditional ] = "¤º³¡¿é¤J¿ù»~¡C";
+ Text[ arabic ] = "ÎØà ÇÓÊíÑÇÏ ÏÇÎáí";
+ Text[ greek ] = "Åóùôåñéêü óöÜëìá åéóáãùãÞò.";
+ Text[ korean ] = "³»ºÎ °¡Á®¿À±â ¿À·ù.";
+ Text[ turkish ] = "Ýç içe aktarma hatasý";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_IMPORT_8K_LIMIT & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Datei enthält Daten unterhalb von Zeile 8192 und kann daher nicht gelesen werden. : Die Datei enthõlt Daten unterhalb von Zeile 8192 und kann daher nicht gelesen werden. */
+ Text = "Die Datei enthält Daten unterhalb von Zeile 8192 und kann daher nicht gelesen werden." ;
+ Text [ ENGLISH ] = "The file contains data below row 8192 and cannot be read." ;
+ Text [ portuguese ] = "O ficheiro contém dados abaixo da linha 8192 e não pode ser lido." ;
+ Text [ english_us ] = "The file contains data after row 8192 and therefore can not be read." ;
+ Text [ portuguese_brazilian ] = "Die Datei enthält Daten unterhalb von Zeile 8192 und kann daher nicht gelesen werden." ;
+ Text [ swedish ] = "Filen innehåller data under rad 8192 och kan därför inte läsas." ;
+ Text [ danish ] = "Filen indeholder data nedenfor række 8192 og kan derfor ikke læses." ;
+ Text [ italian ] = "Impossibile leggere il file in quanto contiene dei dati al di sotto della riga 8192." ;
+ Text [ spanish ] = "El archivo contiene datos por debajo de la fila 8192, por lo que no puede ser leído." ;
+ Text [ french ] = "Le fichier ne peut pas être lu car il contient des données au delà de la ligne 8192." ;
+ Text [ dutch ] = "In het bestand komen beneden regel 8192 gegevens voor en het kan daarom niet worden gelezen." ;
+ Text[ chinese_simplified ] = "Õâ¸öÎļþº¬ÓÐÐÐÊý8192֮ϵÄÊý¾Ý£¬Òò´ËÎÞ·¨¶Á³ö¡£";
+ Text[ russian ] = " ôàéëå ñîäåðæàòñÿ äàííûå, íàõîäÿùèåñÿ íèæå ñòðîêè 8192 è ïîýòîìó ïðî÷èòàòü åãî íå óäàåòñÿ.";
+ Text[ polish ] = "Plik zawiera znaki poni¿ej wiersza 8192 i z tego powodu nie mo¿e zostaæ odczytany.";
+ Text[ japanese ] = "̧²Ù‚Í 8192s–ڂ̉º‚ÉÃÞ°À‚ðŠÜ‚ñ‚Å‚¢‚é‚Ì‚Å“Ç‚ÝŽæ‚è‚Å‚«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "³o­ÓÀɮקt¦³¦C¼Æ8192¤§¤Uªº¼Æ¾Ú¡A¦]¦¹µLªkŪ¥X¡C";
+ Text[ arabic ] = "íÍÊæí ÇáãáÝ Úáì ÈíÇäÇÊ ÃÓÝá ÇáÕÝ 8192¡ áåÐÇ áÇ íãßä ÞÑÇÁÊå.";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé áíÜãíùóç ôïõ áñ÷åßïõ åðåéäÞ ðåñéÝ÷åé äåäïìÝíá ðëÝïí ôùí 8192 ãñáììþí.";
+ Text[ korean ] = "ÆÄÀÏÀÌ Çà 8192 µÚÀÇ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í À־ ÀÐÇôÁöÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Dosya, 8192 satýrý altýnda veri bulunduðu okununamýyor.";
+ Text[ language_user1 ] = " ";
+ };
+ // Export ----------------------------------------------------
+ String SCERR_EXPORT_CONNECT & SH_MAX
+ {
+ Text = "Es konnte keine Verbindung zu der Datei hergestellt werden." ;
+ Text [ ENGLISH ] = "No connection could be established." ;
+ Text [ english_us ] = "Connection to the file could not be established." ;
+ Text [ italian ] = "Impossibile stabilire un collegamento al file." ;
+ Text [ spanish ] = "No se pudo establecer conexión con el archivo." ;
+ Text [ french ] = "Impossible d'établir un lien avec le fichier." ;
+ Text [ dutch ] = "Er kon geen verbinding met het bestand tot stand worden gebracht." ;
+ Text [ swedish ] = "En förbindelse till filen kunde inte etableras." ;
+ Text [ danish ] = "Det var ikke muligt at oprette en forbindelse til filen." ;
+ Text [ portuguese_brazilian ] = "Es konnte keine Verbindung zu der Datei hergestellt werden." ;
+ Text [ portuguese ] = "Não foi possível estabelecer ligação com o ficheiro." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨Á¬½ÓÎļþ¡£";
+ Text[ russian ] = "Íå óäàåòñÿ ñîçäàòü ñâÿçü ñ ôàéëîì.";
+ Text[ polish ] = "Nie mo¿na by³o ustanowiæ po³¹czenia z plikiem.";
+ Text[ japanese ] = "̧²Ù‚Ö‚ÌÚ‘±‚Í‚Å‚«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "µLªk³sµ²ÀɮסC";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÇÊÕÇá ÈÇáãáÝ.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá ãßíåé óýíäåóç ìå ôï áñ÷åßï.";
+ Text[ korean ] = "ÆÄÀÏ¿¡ Á¢¼ÓÀÌ ¼º¸³µÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Dosya ile baðlantý oluþturulamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_EXPORT_CURSOR & SH_MAX
+ {
+ Text = "Das Dateiformat konnte nicht geschrieben werden." ;
+ Text [ ENGLISH ] = "The fileformat could not be written." ;
+ Text [ english_us ] = "The file format could not be written." ;
+ Text [ italian ] = "Impossibile scrivere il formato dei dati." ;
+ Text [ spanish ] = "No se pudo guardar el formato del archivo." ;
+ Text [ french ] = "Impossible d'écrire ce format de fichier." ;
+ Text [ dutch ] = "Het bestandsformaat kon niet worden geschreven." ;
+ Text [ swedish ] = "Filformatet kunde inte skrivas." ;
+ Text [ danish ] = "Det var ikke muligt at skrive filformatet." ;
+ Text [ portuguese ] = "Não foi possível guardar o formato do ficheiro." ;
+ Text [ portuguese_brazilian ] = "Das Dateiformat konnte nicht geschrieben werden." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨Ð´ÈëÎļþ¸ñʽ¡£";
+ Text[ russian ] = "Çàïèñàòü ôîðìàò ôàéëà íåâîçìîæíî.";
+ Text[ polish ] = "Formatu pliku nie mo¿na by³o zapisaæ.";
+ Text[ japanese ] = "̧²Ù‘Ž®‚Í‘‚«ž‚Ý‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "µLªk¼g¤JÀɮ׮榡¡C";
+ Text[ arabic ] = "ÊÚÐÑ ßÊÇÈÉ ÊäÓíÞ ÇáãáÝ.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá ãßíåé åããñáöÞ ôçò ìïñöÞò áñ÷åßïõ..";
+ Text[ korean ] = "ÆÄÀÏ ¼­½ÄÀÌ ¾²¿©Áú ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Dosya formatý yazýlamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCERR_EXPORT_DATA & SH_MAX
+ {
+ Text = "Die Daten konnten nicht geschrieben werden." ;
+ Text [ ENGLISH ] = "Data could not be written." ;
+ Text [ english_us ] = "Data could not be written." ;
+ Text [ italian ] = "Impossibile scrivere i dati." ;
+ Text [ spanish ] = "No se pudieron guardar los datos." ;
+ Text [ french ] = "Impossible d'écrire ces données." ;
+ Text [ dutch ] = "De gegevens konden niet worden geschreven." ;
+ Text [ swedish ] = "Data kunde inte skrivas." ;
+ Text [ danish ] = "Det var ikke muligt at skrive data." ;
+ Text [ portuguese ] = "Não foi possível gravar os dados." ;
+ Text [ portuguese_brazilian ] = "Die Daten konnten nicht geschrieben werden." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨Ð´ÈëÊý¾Ý¡£";
+ Text[ russian ] = "Çàïèñàòü äàííûå íåâîçìîæíî.";
+ Text[ polish ] = "Plików nie mo¿na by³o zapisaæ.";
+ Text[ japanese ] = "ÃÞ°À‚Í‘‚«ž‚Ý‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "µLªk¼g¤J¼Æ¾Ú¡C";
+ Text[ arabic ] = "ÊÚÐÑ ßÊÇÈÉ ÇáÈíÇäÇÊ.";
+ Text[ greek ] = "Äåí Þôáí äõíáôÞ ç åããñáöÞ ôùí äåäïìÝíùí.";
+ Text[ korean ] = "µ¥ÀÌÅÍ°¡ ÀúÀåµÉ ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Veriler yazýlamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ //------------------------------------------------------------
+ // WARNINGS ---------------------------------------------------
+ //------------------------------------------------------------
+ String SCWARN_EXPORT_ASCII & SH_MAX
+ {
+ Text = "Es wurde nur die aktuelle Tabelle gespeichert." ;
+ Text [ ENGLISH ] = "The current table has only been saved." ;
+ Text [ dutch ] = "Alleen de actuele tabel werd opgeslagen." ;
+ Text [ english_us ] = "Only the active sheet was saved." ;
+ Text [ italian ] = "È stata salvata solo la tabella attuale." ;
+ Text [ spanish ] = "Solo se ha guardado la hoja actual." ;
+ Text [ french ] = "Seule la feuille active a été enregistrée." ;
+ Text [ swedish ] = "Endast den aktuella tabellen sparades." ;
+ Text [ danish ] = "Kun det aktuelle ark blev gemt." ;
+ Text [ portuguese ] = "Só foi guardada a folha activa." ;
+ Text [ portuguese_brazilian ] = "Es wurde nur die aktuelle Tabelle gespeichert." ;
+ Text[ chinese_simplified ] = "Ö»ÄÜ´æÅ̵±Ç°µÄ¹¤×÷±í¡£";
+ Text[ russian ] = "Ñîõðàíåí òîëüêî òåêóùèé ëèñò.";
+ Text[ polish ] = "Tylko bie¿¹cy arkusz zosta³ zapisany.";
+ Text[ japanese ] = "Œ»Ý‚Ì•\\‚¾‚¯‚ª•Û‘¶‚³‚ê‚Ü‚µ‚½B";
+ Text[ chinese_traditional ] = "¥u¯àÀx¦s·í«eªº¤u§@ªí¡C";
+ Text[ arabic ] = "Êã ÍÝÙ ÇáÌÏæá ÇáÍÇáí ÝÞØ.";
+ Text[ greek ] = "Áðïèçêåýôçêå ìüíï ï ôñÝ÷ùí ðßíáêáò.";
+ Text[ korean ] = "È°¼ºÈ­µÈ ½ÃÆ®¸¸ÀÌ ÀúÀåµÇ¾ú½À´Ï´Ù.";
+ Text[ turkish ] = "Yalnýzca yürürlükteki tablo kaydedildi.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCWARN_IMPORT_RANGE_OVERFLOW & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Maximalanzahl von Zeilen wurde überschritten. Überzählige Zeilen wurden nicht mitimportiert! : Die Maximalanzahl von Zeilen wurde ³berschritten. šberzõhlige Zeilen wurden nicht mitimportiert! */
+ Text = "Die Maximalanzahl von Zeilen wurde überschritten. Überzählige Zeilen wurden nicht mitimportiert!" ;
+ Text [ ENGLISH ] = "The number of rows exceeded the maximum. Additional rows were not imported!" ;
+ Text [ dutch ] = "Het maximale aantal regels werd overschreden. Het teveel aan regels werd niet geïmporteerd!" ;
+ Text [ english_us ] = "The maximum number of rows has been exceeded. Excess rows were not imported!" ;
+ Text [ italian ] = "Il numero massimo di righe è stato superato. le righe in eccesso non sono state importate!" ;
+ Text [ spanish ] = "Se ha excedido la cantidad máxima de filas. ¡Las filas adicionales no se importaron!" ;
+ Text [ french ] = "Le nombre de lignes maximum a été dépassé. Le surplus n'a pas pu être importé !" ;
+ Text [ swedish ] = "Radantalet överskrider maximum. Överblivna rader blev inte medimporterade!" ;
+ Text [ danish ] = "Det maksimale antal rækker blev overskredet. De overtallige rækker blev ikke importeret!" ;
+ Text [ portuguese ] = "O número máximo de linhas foi ultrapassado! As linhas em excesso não foram importadas!" ;
+ Text [ portuguese_brazilian ] = "Die Maximalanzahl von Zeilen wurde überschritten. überzählige Zeilen wurden nicht mitimportiert!" ;
+ Text[ chinese_simplified ] = "³¬¹ýÐÐÊý×î¸ßÏ޶ȡ£³¬¹ýµÄÐв»»á±»ÊäÈ룡";
+ Text[ russian ] = "Ìàêñèìàëüíîå ÷èñëî ñòðîê ïðåâûøåíî.Ñòðîêè, ïðåâûøàþùèå çàäàííîå ÷èñëî, èìïîðòèðîâàíû íå áóäóò!";
+ Text[ polish ] = "Maksymalna liczba wierszy zosta³a przekroczona. Pozosta³e wiersze nie bêd¹ importowane!";
+ Text[ japanese ] = "s‚ÌÅ‚”‚ð’´‚¦‚Ü‚µ‚½B‰ßè‚Ìs‚ͲÝÎß°Ä‚³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½!";
+ Text[ chinese_traditional ] = "¶W¹L¦C¼Æ³Ì°ª­­«×¡C¶W¹Lªº¦C¤£·|³Q¿é¤J¡I";
+ Text[ arabic ] = "Êã ÊÎØí ÇáÚÏÏ ÇáÃÞÕì ááÕÝæÝ. áåÐÇ áã íÊã ÇÓÊíÑÇÏ ÇáÕÝæÝ ÇáÒÇÆÏÉ!";
+ Text[ greek ] = "¸ãéíå õðÝñâáóç ôïõ ìÝãéóôïõ áñéèìïý ãñáììþí. Äåí èá ãßíåé åéóáãùãÞ ôùí ãñáììþí ðïõ îåðåñíïýí ôï üñéï!";
+ Text[ korean ] = "ÇàÀÇ ÃÖ´ë¼ö¸¦ ÃÊ°úÇß½À´Ï´Ù. ÃÊ°úµÈ ÇàÀº °¡Á®¿Ã¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Azami satýr sayýsý aþýldý. Fazla satýrlar içe aktarýlmadý!";
+ Text[ language_user1 ] = " ";
+ };
+ String SCWARN_IMPORT_OPEN_FM3 & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zugehörige FM3-Datei konnte nicht geöffnet werden. : Zugeh÷rige FM3-Datei konnte nicht ge÷ffnet werden. */
+ Text = "Zugehörige FM3-Datei konnte nicht geöffnet werden." ;
+ Text [ ENGLISH ] = "Related FM3-File could not be opened." ;
+ Text [ dutch ] = "Bijbehorend FM3-bestand kon niet worden geopend." ;
+ Text [ english_us ] = "Corresponding FM3-File could not be opened." ;
+ Text [ italian ] = "Impossibile aprire il file relativo FM3." ;
+ Text [ spanish ] = "No se pudo abrir el archivo correspondiente FM3." ;
+ Text [ french ] = "Impossible d'ouvrir le fichier FM3 correspondant." ;
+ Text [ swedish ] = "Tillhörande FM3-fil kunde inte öppnas." ;
+ Text [ danish ] = "Det var ikke muligt at åbne tilhørende FM3-fil." ;
+ Text [ portuguese ] = "Foi impossível abrir o ficheiro FM3 correspondente." ;
+ Text [ portuguese_brazilian ] = "Zugehörige FM3-Datei konnte nicht geöffnet werden." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨¿ªÆô´ÓÊôµÄ FM3-Îļþ¡£";
+ Text[ russian ] = "Îòêðûòü ôàéë, îòíîñÿùèéñÿ ê FM3 íå óäàåòñÿ.";
+ Text[ polish ] = "Plik pokrewny FM3 nie móg³ zostaæ otworzony.";
+ Text[ japanese ] = "•t‘®‚·‚éFM3̧²Ù‚ÍŠJ‚­‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "µLªk¶}±Ò±qÄݪº FM3-ÀɮסC";
+ Text[ arabic ] = "ÊÚÐÑ ÝÊÍ ÇáãáÝ FM3 ÇáãÑÊÈØ.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá áíïé÷èåß ôï áíôßóôïé÷ï áñ÷åßï FM3.";
+ Text[ korean ] = "FM3-ÆÄÀÏ¿¡À¯»çÇÑÆÄÀÏÀ» ¿­¼ö ¾ø½À´Ï´Ù..";
+ Text[ turkish ] = "Ýlgili FM3 dosyasý açlamadý.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCWARN_IMPORT_WRONG_FM3 & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fehler in Dateistruktur der zugehörigen FM3-Datei. : Fehler in Dateistruktur der zugeh÷rigen FM3-Datei. */
+ Text = "Fehler in Dateistruktur der zugehörigen FM3-Datei." ;
+ Text [ ENGLISH ] = "Error in file structure in the related FM3-File." ;
+ Text [ dutch ] = "Fout in bestandstructuur van bijbehorend FM3-bestand" ;
+ Text [ english_us ] = "Error in file structure of corresponding FM3-File." ;
+ Text [ italian ] = "Errore nella struttura del file del relativo file FM3." ;
+ Text [ spanish ] = "Error en la estructura del archivo FM3 correspondiente." ;
+ Text [ french ] = "Erreur dans la structure du fichier FM3 correspondant." ;
+ Text [ swedish ] = "Fel i den tillhörande FM3-filens filstruktur." ;
+ Text [ danish ] = "Fejl i den tilhørende FM3-fils filstruktur." ;
+ Text [ portuguese ] = "Erro na estrutura do ficheiro FM3 correspondente." ;
+ Text [ portuguese_brazilian ] = "Fehler in Dateistruktur der zugehörigen FM3-Datei." ;
+ Text[ chinese_simplified ] = "´ÓÊôµÄ FM3-ÎļþµÄÎļþ½á¹¹º¬ÓдíÎó¡£";
+ Text[ russian ] = "Îøèáêà â ñòðóêòóðå ôàéëà, îòíîñÿùåãîñÿ ê FM3.";
+ Text[ polish ] = "B³¹d w strukturze pliku pokrewnego FM3.";
+ Text[ japanese ] = "•t‘®‚·‚éFM3̧²Ù‚Ì̧²Ù\\‘¢‚É‚¨‚¯‚é´×°¡";
+ Text[ chinese_traditional ] = "±qÄݪº FM3-ÀɮתºÀÉ®×µ²ºc§t¦³¿ù»~¡C";
+ Text[ arabic ] = "ÎØà Ýí ÈäíÉ ÇáãáÝ Ýí ÇáãáÝ FM3 ÇáãÑÊÈØ.";
+ Text[ greek ] = "ÓöÜëìá óôç äïìÞ áñ÷åßïõ ôïõ áíôßóôïé÷ïõ áñ÷åßïõ FM3.";
+ Text[ korean ] = "FM3-ÆÄÀÏ¿¡ À¯»çÇÑ ÆÄÀÏ ±¸Á¶¿¡ ¿À·ù.";
+ Text[ turkish ] = "Ýlgili FM3 dosyasýnýn dosya yapýsýnda hata.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCWARN_CORE_HARD_RECALC & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Dokument zu komplex für automatische Berechnung. Neuberechnung mit F9. : Dokument zu komplex f³r automatische Berechnung. Neuberechnung mit F9. */
+ Text = "Dokument zu komplex für automatische Berechnung. Neuberechnung mit F9." ;
+ Text [ ENGLISH ] = "Document too complex for autocalc. Recalc via F9" ;
+ Text [ dutch ] = "Document te gecompliceerd voor automatische berekening" ;
+ Text [ english_us ] = "Document too complex for automatic calculation. Press F9 to recalculate." ;
+ Text [ italian ] = "Documento troppo complesso per il calcolo automatico. Premete F9 per effettuare un nuovo calcolo." ;
+ Text [ spanish ] = "Documento demasiado complejo para el cálculo automático. Pulse F9 para volver a calcular." ;
+ Text [ french ] = "Document trop complexe pour le calcul automatique. Pour calculer à nouveau, appuyez sur F9." ;
+ Text [ swedish ] = "Dokumentet är för komplext för en automatisk beräkning. Ny beräkning med F9." ;
+ Text [ danish ] = "Dokumentet er for komplekst til automatisk beregning. Genberegning med F9." ;
+ Text [ portuguese ] = "O documento é demasiado complexo para o cálculo automático. Calcular de novo com F9." ;
+ Text [ portuguese_brazilian ] = "Dokument zu komplex für automatische Berechnung. Neuberechnung mit F9." ;
+ Text[ chinese_simplified ] = "Îĵµ¹ýÓÚ¸´ºÏ£¬ÎÞ·¨Ö´ÐÐ×Ô¶¯ÔËË㹦ÄÜ¡£Çë°´»÷ F9£¬ ÖØÐÂÔËËã¡£";
+ Text[ russian ] = "Äîêóìåíò ñëèøêîì ñëîæíûé äëÿ àâòîìàòè÷åñêèõ âû÷èñëåíèé. Äëÿ ïîâòîðíîãî âû÷èñëåíèÿ íàæìèòå F9.";
+ Text[ polish ] = "Dokument jest zbyt z³o¿ony dla automatycznego obliczenia. Oblicz ponownie, przyciskaj¹c F9.";
+ Text[ japanese ] = "Ž©“®ŒvŽZ‚É‚ÍÄÞ·­ÒÝÄ‚ª•¡ŽG‚·‚¬‚Ü‚·BF9‚ÅÄŒvŽZB";
+ Text[ chinese_traditional ] = "¤å¥ó¹L©ó½Æ¦X¡AµLªk°õ¦æ¦Û°Ê¹Bºâ¥\\¯à¡C½Ð«öÀ» F9¡A ­«·s¹Bºâ¡C";
+ Text[ arabic ] = "ÇáãÓÊäÏ ãÚÞÏ ÌÏÇð ÈÍíË áÇ íãßä ÅÌÑÇÁ ÇáÍÓÇÈ ÊáÞÇÆíÇð. ÇáÑÌÇÁ ÇáÖÛØ Úáì F9 áÅÚÇÏÉ ÇáÍÓÇÈ.";
+ Text[ greek ] = "Ôï Ýããñáöï åßíáé õðåñâïëéêÜ ðåñßðëïêï ãéá áõôüìáôï õðïëïãéóìü. ÐáôÞóôå ôï ðëÞêôñï F9 ãéá íá åêôåëåóôåß îáíÜ ï õðïëïãéóìüò.";
+ Text[ korean ] = "¹®¼­°¡ ÀÚµ¿ °è»êÀ» Çϱ⿣ ³Ê¹« º¹ÀâÇÕ´Ï´Ù. F9¸¦ ´©¸£¼Å¼­ Àç °è»êÇϽʽÿÀ.";
+ Text[ turkish ] = "Belge, otomatik hesaplama için fazla karmaþýk. Yeniden hesaplatmak için F9 tuþuna basýn.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCWARN_EXPORT_MAXROW & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Das Dokument enthält mehr Zeilen, als das Ausgabeformat unterstützt.\nÜberzählige Zeilen wurden nicht gespeichert. : Das Dokument enthõlt mehr Zeilen, als das Ausgabeformat unterst³tzt.\nšberzõhlige Zeilen wurden nicht gespeichert. */
+ Text = "Das Dokument enthält mehr Zeilen, als das Ausgabeformat unterstützt.\nÜberzählige Zeilen wurden nicht gespeichert." ;
+ Text [ ENGLISH ] = "The document contains more rows than supported in the selected format.\nThe additional rows were not saved." ;
+ Text [ portuguese ] = "O documento contém mais linhas do que as previstas para o formato correspondente.\nAs linhas em excesso não foram guardadas." ;
+ Text [ english_us ] = "The document contains more rows than supported in the selected format.\nAdditional rows were not saved." ;
+ Text [ portuguese_brazilian ] = "Das Dokument enthält mehr Zeilen, als das Ausgabeformat unterstützt.\nÜberzählige Zeilen wurden nicht gespeichert." ;
+ Text [ swedish ] = "Dokumentet innehåller mer rader än vad som understöds av utmatningsformatet.\nÖvertaliga rader kommer inte att sparas." ;
+ Text [ danish ] = "Dokumentet indeholder flere rækker end output-formatet understøtter.\nDe overtallige rækker blev ikke gemt." ;
+ Text [ italian ] = "Il documento contiene più righe di quelle supportate dal formato di uscita.\nLe righe in eccesso non sono state salvate." ;
+ Text [ spanish ] = "El documento contiene mas filas de las que soporta el formato seleccionado.\nLas filas adicionales no se guardaron." ;
+ Text [ french ] = "Le document comporte plus de lignes que le format n'en supporte.\nLes lignes en surplus n'ont pas été enregistrées." ;
+ Text [ dutch ] = "Het document bevat teveel regels voor dit formaat.\nDit teveel werd niet opgeslagen." ;
+ Text[ chinese_simplified ] = "Õû¸öÎĵµº¬ÓеÄÐÐÊý³¬¹ý´òÓ¡¸ñʽ֧³ÖµÄ·¶Î§¡£\n³¬¹ýµÄÐв»»á±»´æÅÌ¡£";
+ Text[ russian ] = "Äîêóìåíò ñîäåðæèò áîëüøå ñòðîê, ÷åì ïîääåðæèâàåòñÿ ôîðìàòîì âûâîäà.\nÑòðîêè, ïðåâûøàþùèå çàäàííîå ÷èñëî, ñîõðàíåíû íå áóäóò.";
+ Text[ polish ] = "Dokument zawiera wiêcej wierszy ni¿ jest obs³ugiwane przez format wyjœciowy. \nDodatkowe wiersze nie bêd¹ obs³ugiwane.";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ‚ÍŠ§só‘Ô‚Ì‘Ž®‚Å»Îß°Ä‚·‚é‚æ‚ès‚ª‘½‚·‚¬‚Ü‚·B\n‰ßè‚Ìs‚Í•Û‘¶‚³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "¾ã­Ó¤å¥ó§t¦³ªº¦C¼Æ¶W¹L¦C¦L®æ¦¡¤ä«ùªº½d³ò¡C\n¶W¹Lªº¦C¤£·|³QÀx¦s¡C";
+ Text[ arabic ] = "íÍÊæí ÇáãÓÊäÏ Úáì ÚÏÏ ãä ÇáÕÝæÝ íÝæÞ ÇáÚÏÏ ÇáÐí íãßä ááÊäÓíÞ ÇáãÍÏÏ ÏÚãå.\náã íÊã ÍÝÙ ÇáÕÝæÝ ÇáÒÇÆÏÉ.";
+ Text[ greek ] = "Ôï Ýããñáöï ðåñéÝ÷åé ðåñéóóüôåñåò ãñáììÝò áðü üôé õðïóôçñßæåé ç ìïñöÞ \nåîáãùãÞò. Ïé ðëåïíÜæïõóåò ãñáììÝò äåí áðïèçêåýôçêáí.";
+ Text[ korean ] = "¹®¼­°¡ ¼±ÅÃµÈ ¼­½Ä¾È¿¡¼­ Áö¿ø°¡´ÉÇÑ Çຸ´Ù ´õ ¸¹Àº ÇàÀ» Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù.\nºÎ°¡ÀûÀÎ ÇàÀÌ ÀúÀåµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Belge, çýktý formatýnýn desteklediðinden çok satýr içeriyor.\nFazla gelen satýrlar kaydedilmedi.";
+ Text[ language_user1 ] = " ";
+ };
+ String SCWARN_IMPORT_INFOLOST & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Das Dokument enthält Informationen, die dieser Programmversion unbekannt sind.\nBei erneutem Speichern gehen diese Informationen verloren! : Das Dokument enthõlt Informationen, die dieser Programmversion unbekannt sind.\nBei erneutem Speichern gehen diese Informationen verloren! */
+ Text = "Das Dokument enthält Informationen, die dieser Programmversion unbekannt sind.\nBei erneutem Speichern gehen diese Informationen verloren!" ;
+ Text [ ENGLISH ] = "The document contains informations which are not recognized by this program version.\nSaving this document will destroy these informations!" ;
+ Text [ portuguese ] = "O documento contém informações desconhecidas para esta versão do programa.\nAo guardar novamente perderá estas informações!" ;
+ Text [ english_us ] = "The document contains information not recognized by this program version.\nResaving the document will delete this information!" ;
+ Text [ portuguese_brazilian ] = "Das Dokument enthält Informationen, die dieser Programmversion unbekannt sind.\nBei erneutem Speichern gehen diese Informationen verloren!" ;
+ Text [ swedish ] = "Dokumentet innehåller information som denna programversion inte känner igen.\nOm Du sparar igen kommer denna information att gå förlorad!" ;
+ Text [ danish ] = "Dokumentet indeholder informationer, som denne programversion ikke kan genkende.\nHvis du gemmer dokumentet igen, vil disse informationer gå tabt." ;
+ Text [ italian ] = "Il documento contiene informazioni sconosciute alla versione corrente del programma.\nCon un nuovo salvataggio le informazioni andranno perse!" ;
+ Text [ spanish ] = "El documento contiene información desconocida para la versión de este programa.\n¡Al volver a guardar se perderá esta información!" ;
+ Text [ french ] = "Le document contient des informations inconnues de cette version du programme.\nCes informations seront perdues lors d'un nouvel enregistrement !" ;
+ Text [ dutch ] = "Het document bevat gegevens die voor deze programmaversie onbekend zijn.\nAls u opnieuw opslaat gaan deze verloren!" ;
+ Text[ chinese_simplified ] = "Õâ¸ö³ÌÐòÎÞ·¨´¦ÀíÕâ¸öÎĵµÖв»Ã÷µÄÐÅÏ¢¡£\nÔÚÖØдæÅÌʱ»áËðʧÕâЩÐÅÏ¢£¡";
+ Text[ russian ] = "Äîêóìåíò ñîäåðæèò ñâåäåíèÿ, íåèçâåñòíûå ýòîé âåðñèè ïðîãðàììû.\nÏðè ïîâòîðíîì ñîõðàíåíèè ýòè ñâåäåíèÿ áóäóò óòåðÿíû!";
+ Text[ polish ] = "Dokument zawiera informacje, które s¹ nieznane w tej wersji programu.\nPrzy ponownym zapisie te informacje zostan¹ skasowane!";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ‚Í‚±‚ÌÌßÛ¸Þ×Ñ ÊÞ°¼Þ®Ý‚Å‚Í”F’m‚Å‚«‚È‚¢î•ñ‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B\n‚ ‚炽‚ß‚Ä•Û‘¶‚·‚éÛ ‚±‚Ìî•ñ‚ÍŽ¸‚í‚ê‚Ü‚·!";
+ Text[ chinese_traditional ] = "³o­Óµ{§ÇµLªk³B²z³o­Ó¤å¥ó¤¤¤£©úªº¸ê°T¡C\n¦b­«·sÀx¦s®É³o¨Ç¸ê°T·|¬y¥¢¡I";
+ Text[ arabic ] = "íÍÊæí ÇáãÓÊäÏ Úáì ãÚáæãÇÊ ÛÑíÈÉ Úáì ÅÕÏÇÑ ÇáÈÑäÇãÌ åÐÇ.\nåÐå ÇáÈíÇäÇÊ ÓæÝ ÊÖíÚ ÚäÏ ÅÚÇÏÉ ÍÝÙ ÇáãÓÊäÏ!";
+ Text[ greek ] = "Ôï Ýããñáöï ðåñéÝ÷åé ðëçñïöïñßåò ïé ïðïßåò åßíáé Üãíùóôåò ãéá áõôÞ ôç Ýêäïóç ôïõ \nðñïãñÜììáôïò. Ïé ðëçñïöïñßåò áõôÝò èá ÷áèïýí áí åðáíáëáìâÜíåôå ôçí áðïèÞêåõóç ôïõò!";
+ Text[ korean ] = "¹®¼­°¡ ÀÌ ÇÁ·Î±×·¥ÀÇ ¹öÁ¯¿¡ ÀÇÇؼ­ Àνĵɼö ¾ø´Â Àüº¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù.\nÀÌ Á¤º¸¸¦ »èÁ¦ÇÏ°í ´Ù½Ã ÀúÀåÇϽʽÿÀ!";
+ Text[ turkish ] = "Belgede, bu program sürümünde bilinmeyen bilgiler mevcut.\nBu bilgiler, yeniden kayýtta kaybolacak!";
+ Text[ language_user1 ] = " ";
+ };
+ String SCWARN_EXPORT_DATALOST & SH_MAX
+ {
+ Text = "Es konnten nicht alle Zellinhalte in dem angegebenen Format gespeichert werden." ;
+ Text [ ENGLISH ] = "Not all cell contents could be saved in the specified format." ;
+ Text [ portuguese ] = "Não foi possível guardar todos os conteúdos das células no formato especificado." ;
+ Text [ english_us ] = "Not all cell contents could be saved in the specified format." ;
+ Text [ portuguese_brazilian ] = "Es konnten nicht alle Zellinhalte in dem angegebenen Format gespeichert werden." ;
+ Text [ swedish ] = "Allt innehåll i cellerna kunde inte sparas i det angivna formatet." ;
+ Text [ danish ] = "Det var ikke muligt at gemme alle celleindhold i det angivne format." ;
+ Text [ italian ] = "Non è stato possibile salvare tutti i contenuti delle celle nel formato specificato ." ;
+ Text [ spanish ] = "No se pudieron guardar todos los contenidos de las celdas en el formato especificado." ;
+ Text [ french ] = "Il n'a pas été possible d'enregistrer le contenu de toutes les cellules dans le format spécifié." ;
+ Text [ dutch ] = "Niet van elke cel kon de inhoud in het aangegeven formaat worden opgeslagen." ;
+ Text[ chinese_simplified ] = "ÎÞ·¨ÓÃÖ¸¶¨µÄ¸ñʽ´æÅÌÈ«²¿µÄµ¥Ôª¸ñÄÚÈÝ¡£";
+ Text[ russian ] = "Ñîõðàíèòü âñå ñîäåðæèìîå ÿ÷åéêè â çàäàííîì ôîðìàòå íåâîçìîæíî.";
+ Text[ polish ] = "Nie wszystkie zawartoœci komórek mog³y zostaæ zapisane w wybranym formacie.";
+ Text[ japanese ] = "Žw’肵‚½‘Ž®‚Å‚·‚ׂĂ̾ٓà—e‚Í•Û‘¶‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B";
+ Text[ chinese_traditional ] = "µLªk¥Î«ü©wªº®æ¦¡Àx¦s¥þ³¡ªºÀx¦s®æ¤º®e¡C";
+ Text[ arabic ] = "ÊÚÐÑ ÍÝÙ ßá ãÍÊæíÇÊ ÇáÎáÇíÇ Ýí ÇáÊäÓíÞ ÇáãÍÏÏ.";
+ Text[ greek ] = "Äåí Þôáí äõíáôüí íá áðïèçêåõôïýí üëá ôá ðåñéå÷üìåíá êåëéþí óôç äåäïìÝíç ìïñöÞ.";
+ Text[ korean ] = "¸ðµç ¼¿ÀÇ ³»¿ëÀÌ ÁöÁ¤µÈ ¼­½ÄÀ¸·Î ÀúÀåµÉ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Tüm hücre içerikleri belirtilen formatta kaydedilemedi.";
+ Text[ language_user1 ] = " ";
+ };
+};
diff --git a/sc/source/ui/src/scfuncs.src b/sc/source/ui/src/scfuncs.src
new file mode 100644
index 000000000000..aba06175cf81
--- /dev/null
+++ b/sc/source/ui/src/scfuncs.src
@@ -0,0 +1,44444 @@
+/*************************************************************************
+ *
+ * $RCSfile: scfuncs.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+ // Resource-Datei fuer den Funktions-Autopiloten von StarCalc
+ //
+ // Alle Beschreibungen der Funktionen sind in der Resource
+ // RID_SC_FUNCTION_DESCRIPTIONS zusammgefasst.
+ // Zu jeder Funktion gibt es eine Sub-Resource, die die Nummer
+ // des OpCodes der Funktion hat.
+ // In diesen Sub-Resourcen steht unter dem Index 1 die Beschreibung
+ // als String, dann folgen im ExtraData-Block zusaetzliche Angaben:
+ // Gruppe;
+ // Help-Id;
+ // Anzahl der Parameter (auch VAR_ARGS f. var. Anzahl);
+ // Je Parameter, Flag ob Parameter optional.
+ // Zu jedem Parameter folgen dann zwei durchnummerierte
+ // String-Resourcen mit dem Namen und der Beschreibung.
+ //
+ // 23.7.96 rj
+
+ // Hack:
+#define U2S(x) ((x)-HID_START)
+ // Makro U2S: Unsigned to signed
+ // wird benoetigt, da der Resourcecompiler nur vorzeichenbehaftete Int
+ // in ExtraData verkraftet, die HID_XXX aber vorzeichenlos sind und
+ // den Bereich ueberschreiten (>32768)
+ // Achtung:
+ // In der Datei ???, die die Resourcen ausliest, muss dies wieder
+ // rueckgaengig gemacht werden
+ //
+ // 27.9.96 rj
+
+ // 27.11.96 ER
+ // Beschreibungen wg. 64kB-Overflow auf zwei Bloecke aufgeteilt:
+ // RID_SC_FUNCTION_DESCRIPTIONS1
+ // RID_SC_FUNCTION_DESCRIPTIONS2
+
+#include "scfuncs.hrc" // ID_FUNCTION_GRP_XXX, HID_FUNC_XXX
+#include "compiler.hrc" // SC_OPCODE_XXX
+
+Resource RID_SC_FUNCTION_DESCRIPTIONS1
+{
+ // -=*# Resource for function DBANZAHL #*=-
+ Resource SC_OPCODE_DB_COUNT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zählt alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen. : Zõhlt alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen. */
+ Text = "Zählt alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Counts the cells that contain numbers that match the criteria in the field column of records in the database." ;
+ Text [ norwegian ] = "Zählt alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Conta tutte le celle di un'area di dati che soddisfano i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Zählt alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Conta todas as células de um intervalo de dados, cujo conteúdo combina com os critérios de procura." ;
+ Text [ finnish ] = "Zählt alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Tæller cellerne i dataområdet, som indeholder tal, der opfylder søgekriterierne." ;
+ Text [ french ] = "Compte toutes les cellules d'une plage de données dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Räknar alla celler i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Telt alle cellen van een gegevensbereik, waarvan de inhoud aan de criteria voldoet." ;
+ Text [ spanish ] = "Cuenta, dentro de la base de datos, todas las celdas cuyos contenidos coinciden con los valores buscados." ;
+ Text [ english_us ] = "Counts the cells of a data range whose contents match the search criteria." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÊýÄ¿¡£";
+ Text[ russian ] = "Ïîäñ÷èòûâàåò âñå ÿ÷åéêè îáëàñòè äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò óñëîâèÿì ïîèñêà.";
+ Text[ polish ] = "Liczy wszystkie komórki z obszaru danych, których zawartoœci odpowiadaj¹ podanym kryteriom wyszukiwania.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½¾Ù‚Ì”‚𔂦‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¸ê®Æ°Ï°ì¤º²Å¦X´M§ä±ø¥óªºÀx¦s®æ¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÊÚÏ ßá ÇáÎáÇíÇ ÇáãæÌæÏÉ Ýí äØÇÞ ÈíÇäÇÊ ãÇ æÇáÊí ÊÝí ãÍÊæíÇÊåÇ ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Telt alle cellen van een gegevensbereik, waarvan de inhoud aan de criteria voldoet.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÊýÄ¿¡£";
+ Text[ greek ] = "Áñéèìåß üëá ôá êåëéÜ ìéáò ðåñéï÷Þò äåäïìÝíùí ôá ïðïßá äåí åßíáé êåíÜ êáé åêðëçñþíïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ ¸Â´Â ³»¿ëÀÌ ÀÖ´Â µ¥ÀÌÅÍ ¼¿À» Ä«¿îÆ®";
+ Text[ turkish ] = "Veri aralýðýnda olup içerikleri arama ölçütlerine uyan tüm hücreleri sayar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBANZAHL );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données." ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos" ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈Í";
+ Text[ chinese_traditional ] = "§t¦³¼Æ¾ÚªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+ Text [ spanish ] = "indica el campo (columna) que se utiliza para los valores buscados." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "Ö¸¶¨Òªµ±×÷ËÑÑ°Ìõ¼þµÄÊý¾ÝÁС£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+ Text[ chinese_simplified ] = "Ö¸¶¨Òªµ±×÷ËÑÑ°Ìõ¼þµÄÊý¾ÝÁС£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Zoekcriteria" ;
+ Text [ spanish ] = "criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Zoekcriteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellules contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas que contiene los valores buscados." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Wyznacza zakres komórek zawieraj¹cych kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ Resource SC_OPCODE_DB_COUNT_2
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zählt alle nichtleeren Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen. : Zõhlt alle nichtleeren Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen. */
+ Text = "Zählt alle nicht leeren Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Counts the cells that are not blank and that satisfy the criteria in the field column of records in the database." ;
+ Text [ norwegian ] = "Zählt alle nichtleeren Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Conta le celle non vuote di un'area di dati che soddisfano i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Zählt alle nichtleeren Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Conta todas as células não vazias de um intervalo de dados, cujos conteúdos satisfazem os critérios de procura." ;
+ Text [ finnish ] = "Zählt alle nichtleeren Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Tæller de udfyldte celler i dataområdet, som opfyler søgekriterierne." ;
+ Text [ french ] = "Compte toutes les cellules non vides d'une plage de données dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Räknar alla celler som inte är tomma i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Telt alle niet-lege cellen van een gegevensbereik waarvan de inhoud aan de zoekcriteria voldoet." ;
+ Text [ spanish ] = "Cuenta las celdas en un área de datos que no están en blanco cuyos contenidos coinciden con los criterios de búsqueda." ;
+ Text [ english_us ] = "Counts all non-blank cells of a data range where the content corresponds to the search criteria." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄÇÒ²»Êǿհ׵ĵ¥Ôª¸ñÊýÄ¿¡£";
+ Text[ russian ] = "Ïîäñ÷èòûâàåò âñå çàïîëíåííûå ÿ÷åéêè îáëàñòè äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò óñëîâèÿì ïîèñêà.";
+ Text[ polish ] = "Liczy wszystkie niepuste komórki obszaru danych, których zawartoœci odpowiadaj¹ kryteriom wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð–ž‚½‚·“à—e‚ÌÃÞ°À”͈͂ð‘ÎÛ‚ÉA‹ó”’‚Å‚È‚¢‚·‚ׂĂ̾ق̔‚𔂦‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¸ê®Æ°Ï°ì¤º²Å¦X´M§ä±ø¥óªº¤£¬OªÅ¥ÕªºÀx¦s®æ¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÊÚÏ ßá ÇáÎáÇíÇ ÛíÑ ÇáÝÇÑÛÉ ÇáãæÌæÏÉ Ýí äØÇÞ ÈíÇäÇÊ ãÇ¡ æÇáÊí ÊÝí ãÍÊæíÇÊåÇ ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Telt alle niet-lege cellen van een gegevensbereik waarvan de inhoud aan de zoekcriteria voldoet.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄÇÒ²»Êǿհ׵ĵ¥Ôª¸ñÊýÄ¿¡£";
+ Text[ greek ] = "Áñéèìåß üëá ôá êåëéÜ ìéáò ðåñéï÷Þò äåäïìÝíùí ôá ïðïßá äåí åßíáé êåíÜ êáé åêðëçñþíïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "³»¿ëÀÌ °Ë»ö ±âÁØ¿¡ »óÀÀÇÏÁö ¾Ê´Â µ¥ÀÌÅÍ ¹üÀ§ÀÇ ºñÁö ¾ÊÀº ¼¿À» ¸ðµÎ ¼Á´Ï´Ù.";
+ Text[ turkish ] = "Veri aralýðýnda bulunup içerikleri arama ölçütlerine uyan ve boþ olmayan hücrelerini sayar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBANZAHL2 );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données" ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos" ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè.";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈Í";
+ Text[ chinese_traditional ] = "§t¦³¸ê®ÆªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+ Text [ spanish ] = "indica el campo (columna) que se utiliza en la función." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "Ö¸¶¨Òªµ±×÷ËÑÑ°Ìõ¼þµÄÊý¾ÝÁС£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+ Text[ chinese_simplified ] = "Ö¸¶¨Òªµ±×÷ËÑÑ°Ìõ¼þµÄÊý¾ÝÁС£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Zoekcriteria" ;
+ Text [ spanish ] = "criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Zoekcriteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellules contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas que contiene los criterios de búsqueda." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Wyznacza zakres komórek zawieraj¹cych kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DBMITTELWERT #*=-
+ Resource SC_OPCODE_DB_AVERAGE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bildet den Mittelwert aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Averages the values in the field column of records in the database which match the criteria." ;
+ Text [ norwegian ] = "Bildet den Mittelwert aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Restituisce la media dei valori di tutte le celle di un'area di dati che soddisfano i criteri specificati." ;
+ Text [ portuguese_brazilian ] = "Bildet den Mittelwert aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Devolve a média de todas as células num intervalo de dados, cujos conteúdos obedeçam aos critérios de procura." ;
+ Text [ finnish ] = "Bildet den Mittelwert aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Beregner gennemsnittet af værdierne i alle celler indenfor et dataområde, hvis indhold opfylder søgekriterierne." ;
+ Text [ french ] = "Calcule la moyenne de toutes les cellules d'une plage de données dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Returnerar medelvärdet av alla celler i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Berekent de gemiddelde waarde van alle cellen van een gegevensbereik waarvan de inhoud overeenkomt met de zoekcriteria." ;
+ Text [ spanish ] = "Devuelve el promedio de todas las celdas de un área de una base de datos cuyos contenidos coinciden con los criterios." ;
+ Text [ english_us ] = "Returns the average value of all the cells of a data range whose contents match the search criteria." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊý¾ÝÇøÓòÖзûºÏËÑÑ°Ìõ¼þµÄÊý¾ÝµÄƽ¾ùÖµ¡£";
+ Text[ russian ] = "Îáðàçóåò ñðåäíåå çíà÷åíèå âñåõ ÿ÷ååê îäíîãî äèàïàçîíà äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò êðèòåðèÿì ïîèñêà.";
+ Text[ polish ] = "Wyznacza œredni¹ wszystkich komórek zakresu danych, zawartoœci których odpowiada kryteriom wyszukiwania.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½‚·‚ׂĂ̾ق̕½‹Ï’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¸ê®Æ°Ï°ì¤¤²Å¦X´M§ä±ø¥óªº¼Æ¾Úªº¥­§¡­È¡C";
+ Text[ arabic ] = "Êßæä ÇáæÓØ ÇáÍÓÇÈí áßá ÇáÎáÇíÇ ÇáãæÌæÏÉ äØÇÞ ÈíÇäÇÊ ãÇ æÇáÊí ÊÝí ãÍÊæíÇÊåÇ ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Berekent de gemiddelde waarde van alle cellen van een gegevensbereik waarvan de inhoud overeenkomt met de zoekcriteria.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊý¾ÝÇøÓòÖзûºÏËÑÑ°Ìõ¼þµÄÊý¾ÝµÄƽ¾ùÖµ¡£";
+ Text[ greek ] = "Äßíåé ôçí ìÝóç ôéìÞ üëùí ôùí êåëéþí ìéáò ðåñéï÷Þò äåäïìÝíùí, ôçò ïðïßáò ôá ðåñéå÷üìåíá åêðëçñþíïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ ¸Â´Â ³»¿ëÀÌ ÀÖ´Â µ¥ÀÌÅÍ ¿µ¿ªÀÇ Àüü ¼¿ÀÇ Æò±Õ°ªÀ» ¹Ýȯ";
+ Text[ turkish ] = "Veri aralýðýnda olup içerikleri arama ölçütlerine uyan hücrelerin ortalamasýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBMITTELWERT );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base de données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui uma base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "Plage de cellules avec les données" ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "es el área de celdas con los datos" ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬Êý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè.";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈Í";
+ Text[ chinese_traditional ] = "§t¼Æ¾ÚªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬Êý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¼¿ÀÇ ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ de B.D." ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+ Text [ spanish ] = "indica el campo de la base de datos (columna) para los valores buscados." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÃû³Æ»òÁкš£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "§t¦³´M§ä±ø¥óªº¸ê®Æ®w¦WºÙ©ÎÄ渹¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+ Text[ chinese_simplified ] = "º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÃû³Æ»òÁкš£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)¸¦ Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Criteria" ;
+ Text [ spanish ] = "criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Criteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellules contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas que contiene los valores buscados." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Wyznacza zakres komórek zawieraj¹cych kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DBAUSZUG #*=-
+ Resource SC_OPCODE_DB_GET
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert den Inhalt der Zelle eines Datenbereichs, deren Inhalt den Suchkriterien entspricht." ;
+ Text [ english ] = "Extracts single values from a database." ;
+ Text [ norwegian ] = "Bestimmt den Inhalt der ersten Zelle eines Datenbereichs, deren Inhalt den Suchkriterien entspricht." ;
+ Text [ italian ] = "Restituisce il contenuto della cella di un'area di dati che soddifsano i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Bestimmt den Inhalt der ersten Zelle eines Datenbereichs, deren Inhalt den Suchkriterien entspricht." ;
+ Text [ portuguese ] = "Define o conteúdo da célula num intervalo de dados, cujo conteúdo satisfaça os critérios da procura." ;
+ Text [ finnish ] = "Bestimmt den Inhalt der ersten Zelle eines Datenbereichs, deren Inhalt den Suchkriterien entspricht." ;
+ Text [ danish ] = "Uddrager indholdet af en celle i et dataområde, hvis indhold opfylder de angivne kriterier." ;
+ Text [ french ] = "Détermine le contenu de la cellule d'une plage de données correspondant aux critères de recherche." ;
+ Text [ swedish ] = "Uppger innehållet ur den cell i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Geeft de inhoud van de cel in een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria." ;
+ Text [ spanish ] = "Devuelve el contenido de la celda de un área de datos cuyo contenido coincide con los criterios de búsqueda." ;
+ Text [ english_us ] = "Defines the contents of the cell of a data range which matches the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄµÚÒ»¸öµ¥Ôª¸ñµÄÄÚÈÝ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ñîäåðæèìîå ÿ÷åéêè äèàïàçîíà äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò êðèòåðèÿì ïîèñêà.";
+ Text[ polish ] = "Okreœla zawartoœæ pierwszej komórki obszaru danych, która odpowiada kryteriom wyszukiwania.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½¾Ù‚Ì“à—e‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó²Å¦X´M§ä±ø¥óªº¸ê®Æ®w°Ï°ìªº²Ä¤@­ÓÀx¦s®æªº¤º®e¡C";
+ Text[ arabic ] = "ÊÓÊÎÑÌ ãÍÊæì ÎáíÉ äØÇÞ ÈíÇäÇÊ ÊÝí ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Geeft de inhoud van de cel in een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄµÚÒ»¸öµ¥Ôª¸ñµÄÄÚÈÝ¡£";
+ Text[ greek ] = "Äßíåé ôï ðåñéå÷üìåíï åíüò êåëéïý ìéáò ðåñéï÷Þò äåäïìÝíùí, ôïõ ïðïßï ôï ðåñéå÷üìåíï åêðëçñþíåé ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â Á¶°Ç¿¡ ¸Â´Â µ¥ÀÌÅÍ ¿µ¿ªÀÇ ¼¿ÀÇ ³»¿ëÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Veri aralýðýnda olup içeriði arama ölçütlerine uyan hücrenin içeriðini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBAUSZUG );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données" ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos" ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè.";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈Í";
+ Text[ chinese_traditional ] = "§t¦³¸ê®ÆªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+ Text [ spanish ] = "indica el campo (columna) que debe utilizarse en la función." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Zoekcriteria" ;
+ Text [ spanish ] = "criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Zoekcriteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellules contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas que contiene los criterios de búsqueda." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Wyznacza zakres komórek zawieraj¹cych kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DBMAX #*=-
+ Resource SC_OPCODE_DB_MAX
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt das Maximum aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Returns the largest number in the field column of records in the database that match the criteria." ;
+ Text [ norwegian ] = "Bestimmt das Maximum aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Restituisce il numero massimo di tutte le celle di un'area di dati che soddisfano i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Bestimmt das Maximum aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Determina o valor máximo de todas as células de um intervalo de dados, cujos conteúdos obedecem aos critérios de procura." ;
+ Text [ finnish ] = "Bestimmt das Maximum aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Returnerer den største værdi blandt alle celler i et dataområde, hvis indhold opfylder søgekriterierne." ;
+ Text [ french ] = "Renvoie la valeur maximale de toutes cellules d'une plage de données dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Bestämmer maximivärdet av alla celler i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt de maximumwaarde van alle cellen van een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria." ;
+ Text [ spanish ] = "Devuelve el valor máximo de todas las celdas de un área cuyos contenidos coinciden con los valores buscados." ;
+ Text [ english_us ] = "Returns the maximum value from all of the cells of a data range which correspond to the search criteria." ;
+ Text[ chinese_simplified ] = "ÕÒ³öÊý¾ÝÇøÓòÖзûºÏËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñµÄ×î´óÊýÖµ¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ìàêñèìàëüíîå çíà÷åíèå âñåõ ÿ÷ååê äèàïàçîíà äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò êðèòåðèÿì ïîèñêà.";
+ Text[ polish ] = "Okreœla minimum wszystkich komórek obszaru danych, których zawartoœci odpowiadaj¹ kryteriom wyszukiwania.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½¾Ù‚ÌÅ‚’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "§ä¥X¼Æ¾Ú°Ï°ì¤¤²Å¦X´M§ä±ø¥óªºÀx¦s®æªº³Ì¤j¼Æ­È¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÇáÍÏ ÇáÃÞÕì áßá ÎáÇíÇ äØÇÞ ÈíÇäÇÊ ãÇ ÊÝí ãÍÊæíÇÊåÇ ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt de maximumwaarde van alle cellen van een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria.";
+ Text[ chinese_simplified ] = "ÕÒ³öÊý¾ÝÇøÓòÖзûºÏËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñµÄ×î´óÊýÖµ¡£";
+ Text[ greek ] = "Êáèïñßæåé .ôçí ìÝãéóôç ôéìÞ üëùí ôùí êåëéþí ìéáò ðåñéï÷Þò äåäïìÝíùí, ôçò ïðïßáò ôá ðåñéå÷üìåíá åðáëçèåýïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ ´ëÀÀÇÏ´Â µ¥ÀÌÅÍ ¿µ¿ªÀÇ ¸ðµç ¼¿ÀÇ ÃÖ´ë °ªÀ» ¹Ýȯ";
+ Text[ turkish ] = "Veri aralýðýnda olup içerikleri arama ölçütlerine uyan tüm hücrelerin azami deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBMAX );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données." ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos" ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè.";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "§t¦³¼Æ¾ÚªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+ Text [ spanish ] = "indica el campo (columna) que se utiliza en la función." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Criteria" ;
+ Text [ spanish ] = "criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Criteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellules contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas que contiene los valores buscados." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Wyznacza zakres komórek zawieraj¹cych kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DBMIN #*=-
+ Resource SC_OPCODE_DB_MIN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt das Minimum aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Returns the smallest number in the field column of records in the database that match the criteria." ;
+ Text [ norwegian ] = "Bestimmt das Minimum aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Restituisce il numero minimo di tutte le celle di un'area di dati che soddisfano i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Bestimmt das Minimum aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Determina o valor mínimo de todas as células de um intervalo de dados, cujos conteúdos obedecem aos critérios de procura." ;
+ Text [ finnish ] = "Bestimmt das Minimum aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Returnerer den mindste værdi blandt alle celler i et dataområde, hvis indhold opfylder søgekriterierne." ;
+ Text [ french ] = "Renvoie la valeur minimale de toutes les cellules d'une plage de données dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Bestämmer minimivärdet av alla celler i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt de minimumwaarde van alle cellen van een gegevensbereik, waarvan de inhoud aan de criteria voldoet." ;
+ Text [ spanish ] = "Devuelve el valor mínimo de la columna nombre_de_campo de los registros de la base de datos que coinciden con el argumento criterios." ;
+ Text [ english_us ] = "Returns the minimum of all cells of a data range where the contents correspond to the search criteria." ;
+ Text[ chinese_simplified ] = "ÕÒ³öÊý¾ÝÇøÓòÖзûºÏËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÖеÄ×îСÊýÖµ¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ìèíèìàëüíîå çíà÷åíèå âñåõ ÿ÷ååê äèàïàçîíà äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò êðèòåðèÿì ïîèñêà.";
+ Text[ polish ] = "Okreœla minimum wszystkich komórek obszaru danych, których zawartoœci odpowiadaj¹ kryteriom wyszukiwania.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½¾Ù‚ÌÅ’á’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "§ä¥X¸ê®Æ°Ï°ì¤¤²Å¦X´M§ä±ø¥óªºÀx¦s®æ¤¤ªº³Ì¤p¼Æ­È¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÇáÍÏ ÇáÃÏäì áßá ÎáÇíÇ äØÇÞ ÈíÇäÇÊ ãÇ ÊÝí ãÍÊæíÇÊåÇ ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt de minimumwaarde van alle cellen van een gegevensbereik, waarvan de inhoud aan de criteria voldoet.";
+ Text[ chinese_simplified ] = "ÕÒ³öÊý¾ÝÇøÓòÖзûºÏËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÖеÄ×îСÊýÖµ¡£";
+ Text[ greek ] = "Êáèïñßæåé .ôçí åëÜ÷éóôç ôéìÞ üëùí ôùí êåëéþí ìéáò ðåñéï÷Þò äåäïìÝíùí, ôçò ïðïßáò ôá ðåñéå÷üìåíá åðáëçèåýïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ ´ëÀÀÇÏ´Â µ¥ÀÌÅÍ ¿µ¿ªÀÇ ¸ðµç ¼¿ÀÇ ÃÖ¼Ò °ªÀ» ¹Ýȯ";
+ Text[ turkish ] = "Veri aralýðýnda olup içerikleri arama ölçütlerine uyan tüm hücrelerin asgari deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBMIN );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données" ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos" ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè.";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "§t¦³¼Æ¾ÚªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de criteria." ;
+ Text [ spanish ] = "indica el campo (columna) que se utiliza en la función." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de criteria.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Zoekcriteria" ;
+ Text [ spanish ] = "criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Zoekcriteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellules contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas con los criterios de búsqueda." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Wyznacza zakres komórek zawieraj¹cych kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DBPRODUKT #*=-
+ Resource SC_OPCODE_DB_PRODUCT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Multipliziert alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Multiplies the values in the field column of records in the database that match the criteria." ;
+ Text [ norwegian ] = "Multipliziert alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Moltiplica i valori di tutte le celle di un'area di dati che soddisfano i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Multipliziert alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Multiplica todas as células de um intervalo de dados, cujos conteúdos obedecem aos critérios de procura." ;
+ Text [ finnish ] = "Multipliziert alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Ganger værdierne i alle celler indenfor et dataområde, hvis indhold opfylder søgekriterierne." ;
+ Text [ french ] = "Multiplie toutes les cellules d'une plage de données dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Multiplicerar alla celler i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Vermengvuldigt alle cellen in een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria." ;
+ Text [ spanish ] = "Multiplica los valores de un campo de registros determinado que coinciden con los criterios de una base de datos." ;
+ Text [ english_us ] = "Multiplies all cells of a data range where the contents match the search criteria." ;
+ Text[ chinese_simplified ] = "Ò»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñµÄ³Ë»ý¡£";
+ Text[ russian ] = "Ïåðåìíîæàåò âñå ÿ÷åéêè äèàïàçîíà äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò êðèòåðèÿì ïîèñêà.";
+ Text[ polish ] = "Mno¿y wszystkie komórki zakresu danych, których zawartoœci odpowiadaj¹ kryteriom wyszukiwania.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½¾Ù‚ÌÏ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤@­Ó¼Æ¾Ú°Ï°ì¤º²Å¦X´M§ä±ø¥óªº©Ò¦³Àx¦s®æªº­¼¿n¡C";
+ Text[ arabic ] = "ÊÖÑÈ Þíã ßá ÎáÇíÇ äØÇÞ ÈíÇäÇÊ ãÇ ÊÝí ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Vermengvuldigt alle cellen in een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria.";
+ Text[ chinese_simplified ] = "Ò»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñµÄ³Ë»ý¡£";
+ Text[ greek ] = "ÐïëëáðëáóéÜæåé üëá ôá êåëéÜ ôçò ðåñéï÷Þò äåäïìÝíùí, ôùí ïðïßùí ôá ðåñéå÷üìåíá åêðëçñþíïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ ¸Â´Â ³»¿ëÀÌ ÀÖ´Â µ¥ÀÌÅÍ ¿µ¿ªÀÇ Àüü ¼¿À» °öÇÔ";
+ Text[ turkish ] = "Veri alanýnda olup içerikleri arama ölçütlerine uyan tüm hücreleri çarpar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBPRODUKT );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données" ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos." ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè.";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "§t¦³¼Æ¾ÚªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfält (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+ Text [ spanish ] = "indica el campo (columna) que se utiliza en la función." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Zoekcriteria" ;
+ Text [ spanish ] = "criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Zoekcriteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellule contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas que contiene los criterios de búsqueda." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Podaje zakres komórek z kryteriami wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DBSTDABW #*=-
+ Resource SC_OPCODE_DB_STD_DEV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Standardabweichung aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Estimates the standard deviation of a population based on a sample, using the numbers in the field column of records in the database that match the criteria." ;
+ Text [ norwegian ] = "Bestimmt die Standardabweichung aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Restituisce la deviazione standard di tutte le celle di un'area di dati che soddisfano i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Standardabweichung aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Determina o desvio padrão de todas as células de um intervalo de dados, cujos conteúdos obedecem aos critérios de procura." ;
+ Text [ finnish ] = "Bestimmt die Standardabweichung aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Beregner standardafvigelsen af alle celler indenfor et dataområde, hvis indhold opfylder søgekriterierne." ;
+ Text [ french ] = "Évalue l'écart-type de toutes cellules d'une plage dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Bestämmer standardavvikelsen för alla celler i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt de standaarddeviatievan alle cellen in een gegevensbereik, waarvan de inhoud voldoet aan de criteria." ;
+ Text [ spanish ] = "Calcula la desviación estándar basándose en una muestra de las entradas seleccionadas de una base de datos." ;
+ Text [ english_us ] = "Calculates the standard deviation of all cells in a data range whose contents match the search criteria." ;
+ Text[ chinese_simplified ] = "¹ÀËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñÖÐ\nÊý¾ÝµÄ±ê׼ƫ²î¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ñòàíäàðòíîå îòêëîíåíèå âñåõ ÿ÷ååê äèàïàçîíà äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò êðèòåðèÿì ïîèñêà.";
+ Text[ polish ] = "Okreœla odchylenie standardowe wszystkich komórek obszaru danych, których zawartoœci odpowiadaj¹ kryteriom wyszukiwania.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½¾Ù‚Ì•W€•Î·‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦ôºâ¤@­Ó¼Æ¾Ú°Ï°ì¤º²Å¦X´M§ä±ø¥óªº©Ò¦³Àx¦s®æ¤¤¼Æ¾Úªº¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÇáÇäÍÑÇÝ ÇáãÚíÇÑí áßá ÎáÇíÇ äØÇÞ ÈíÇäÇÊ ãÇ¡ æÇáÊí ÊÝí ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt de standaarddeviatievan alle cellen in een gegevensbereik, waarvan de inhoud voldoet aan de criteria.";
+ Text[ chinese_simplified ] = "¹ÀËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñÖÐ\nÊý¾ÝµÄ±ê׼ƫ²î¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ôõðéêÞ áðüêëéóç üëùí ôùí êåëéþí ìéáò ðåñéï÷Þò äåäïìÝíùí, ôá ðåñéå÷üìåíá ôùí ïðïßùí åêðëçñþíïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ ¸Â´Â ³»¿ëÀÌ ÀÖ´Â µ¥ÀÌÅÍ ¿µ¿ª¾ÈÀÇ ¼¿ÀÇ Ç¥ÁØ ÆíÂ÷¸¦ °è»ê";
+ Text[ turkish ] = "Veri aralýðýnda olup içerikleri arama ölçütlerine uyan tüm hücrelerin standart sapmasýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBSTDABW );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données" ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos" ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè.";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "§t¦³¼Æ¾ÚªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+ Text [ spanish ] = "indica el campo (columna) que se utiliza en la función." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Zoekcriteria" ;
+ Text [ spanish ] = "criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Zoekcriteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellule contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas con los criterios de búsqueda." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Wyznacza zakres komórek odpowiadaj¹cych kryteriom wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DBSTDABWN #*=-
+ Resource SC_OPCODE_DB_STD_DEV_P
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Standardabweichung bzgl. der Grundgesamtheit aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Calculates the standard deviation of a population based on the entire population, using the numbers in the field column of records in the database that match the criteria." ;
+ Text [ norwegian ] = "Bestimmt die Standardabweichung bzgl. der Grundgesamtheit aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Restituisce la deviazione standard di una popolazione sulla base di tutte le celle di un'area di dati che soddisfano i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Standardabweichung bzgl. der Grundgesamtheit aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Determina o desvio padrão de uma população com base em todas as células de um intervalo de dados, cujos conteúdos obedecem aos critérios de procura." ;
+ Text [ finnish ] = "Bestimmt die Standardabweichung bzgl. der Grundgesamtheit aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Beregner standardafvigelsen baseret på hele populationen af alle celler indenfor et dataområde, hvis indhold opfylder søgekriterierne." ;
+ Text [ french ] = "Évalue l'écart-type d'une population représentée par toutes les cellules d'une plage de données dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Bestämmer standardavvikelsen ang. populationen av alla celler i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Berekent de standaarddeviatie m.b.t. de hele populatie van de cellen van een gegevensvbereik, waarvan de inhoud aan de criteria voldoet." ;
+ Text [ spanish ] = "Calcula la desviación estándar basándose en la población total de las entradas seleccionadas de una base de datos." ;
+ Text [ english_us ] = "Returns the standard deviation with regards to the population of all cells of a data range matching the search criteria." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñÖÐÊý¾ÝµÄ×ÜÌå±ê׼ƫ²î¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ñòàíäàðòíîå îòêëîíåíèå ãåíåðàëüíîé ñîâîêóïíîñòè âñåõ ÿ÷ååê äèàïàçîíà äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò êðèòåðèÿì ïîèñêà.";
+ Text[ polish ] = "Wyznacza odchylenie standardowe ewent.populacjê komórek obszaru danych, których zawartoœci odpowiadaj¹ kryteriom wyszukiwania.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½¾Ù‚Ì•êW’c‚ðŠî€‚Æ‚µ‚½•W€•Î·‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æ¾Ú°Ï°ì¤º²Å¦X´M§ä±ø¥óªº©Ò¦³Àx¦s®æ¤¤¼Æ¾ÚªºÁ`Åé¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ÇáãÊÚáÞ ÈÇáãÌÊãÚ ÈÃßáãå ÇÓÊäÇÏÇð áßá ÎáÇíÇ äØÇÞ ÈíÇäÇÊ ÊÝí ãÍÊæíÇÊåÇ ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Berekent de standaarddeviatie m.b.t. de hele populatie van de cellen van een gegevensvbereik, waarvan de inhoud aan de criteria voldoet.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñÖÐÊý¾ÝµÄ×ÜÌå±ê׼ƫ²î¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ôõðéêÞ áðüêëéóç ó÷åôéêÜ ìå ôïí óõíïëéêü ðëçèõóìü üëùí ôùí êåëéþí ìéáò ðåñéï÷Þò äåäïìÝíùí, ôá ðåñéå÷üìåíá ôùí ïðïßùí åêðëçñþíïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ ¸Â´Â ³»¿ëÀÇ µ¥ÀÌÅÍ ¿µ¿ªÀÌ ÀÖ´Â ¸ðµç ¼¿ÀÇ ¸ðÁý´Ü¿¡ °ü·ÃµÈ Ç¥ÁØ ÆíÂ÷¸¦ ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Veri aralýðýnda olup içerikleri arama ölçütlerine uyan tüm hücrelerin popülasyonu ile ilgili standart sapmayý belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBSTDABWN );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données" ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos" ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "´øÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè.";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "±a¼Æ¾ÚªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "´øÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+ Text [ spanish ] = "Indica el campo (columna) que se utiliza en la función." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Zoekcriteria" ;
+ Text [ spanish ] = "Criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Zoekcriteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellules contenant les critères de recherche. " ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas que contiene los criterios de búsqueda." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Wyznacza zakres komórek zawieraj¹cych kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DBSUMME #*=-
+ Resource SC_OPCODE_DB_SUM
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Addiert alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Adds the numbers in the field column of records in the database that match the criteria." ;
+ Text [ norwegian ] = "Addiert alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Somma tutte le celle di un'area di dati che soddisfano i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Addiert alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Soma todas as células num intervalo de dados, cujos conteúdos obedecem aos critérios de procura." ;
+ Text [ finnish ] = "Addiert alle Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Sammenlægger værdierne i alle celler indenfor et dataområde, hvis indhold opfylder søgekriterierne." ;
+ Text [ french ] = "Additionne toute les cellules d'une plage dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Adderar alla celler i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Berekent de som van alle veld waarden van een gegevensbereik die aan de zoekcriteria voldoen." ;
+ Text [ spanish ] = "Suma todas las celdas de un área de datos cuyos contenidos que coinciden con los criterios." ;
+ Text [ english_us ] = "Adds all the cells of a data range where the contents match the search criteria." ;
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñÖеÄÊý×ÖÖ®ºÍ¡£";
+ Text[ russian ] = "Ñóììèðóåò âñå ÿ÷åéêè äèàïàçîíà äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò êðèòåðèÿì ïîèñêà.";
+ Text[ polish ] = "Dodaje zawartoœci wszystkich komórek, których treœæ odpowiada kryteriom wyszukiwania.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½¾Ù‚̇Œv‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¼Æ¾Ú°Ï°ì¤º²Å¦X´M§ä±ø¥óªº©Ò¦³Àx¦s®æ¤¤ªº¼Æ¦r¤§©M¡C";
+ Text[ arabic ] = "ÊÌãÚ ãÍÊæíÇÊ ßá ÎáÇíÇ äØÇÞ ÈíÇäÇÊ ãÇ ÊÝí ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Berekent de som van alle veld waarden van een gegevensbereik die aan de zoekcriteria voldoen.";
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñÖеÄÊý×ÖÖ®ºÍ¡£";
+ Text[ greek ] = "ÐñïóèÝôåé üëá ôá êåëéÜ ìéáò ðåñéï÷Þò äåäïìÝíùí, ôùí ïðïßùí ôá ðåñéå÷üìåíá åðáëçèåýïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â Á¶°Ç¿¡¸Â´Â µ¥ÀÌÅÍ ¿µ¿ªÀÇ ¸ðµç ¼¿À» Ãß°¡";
+ Text[ turkish ] = "Veri aralýðýnda olup içerikleri arama ölçütlerine uyan tüm hücreleri toplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBSUMME );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données" ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos" ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "§t¦³¼Æ¾ÚªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcritera." ;
+ Text [ spanish ] = "Determina el campo (columna) para los criterios de búsqueda." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcritera.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Zoekcriteria" ;
+ Text [ spanish ] = "Criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Zoekcriteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellules contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas con los criterios de búsqueda." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Wyznacza zakres komórek zawieraj¹cych kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DBVARIANZ #*=-
+ Resource SC_OPCODE_DB_VAR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Varianz aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Estimates the variance of a population based on a sample, using the numbers in the field column of records in the database that match the criteria." ;
+ Text [ norwegian ] = "Bestimmt die Varianz aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Restituisce la varianza di tutte le celle di un'area di dati che soddisfano i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Varianz aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Calcula a variância de todas as células num intervalo de dados, cujos conteúdos obedecem aos critérios de procura." ;
+ Text [ finnish ] = "Bestimmt die Varianz aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Beregner variansen for alle celler indenfor et dataområde, hvis indhold opfylder søgekriterierne." ;
+ Text [ french ] = "Calcule la variance de toutes les cellules d'une plage de données dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Bestämmer variansen av alla celler i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt de variantie van alle cellen van een gegevensbereik, waarvan de inhoud aan de zoekcriteria voldoet." ;
+ Text [ spanish ] = "Calcula la varianza de todas las celdas de un área de datos cuyos contenidos coinciden con los criterios especificados." ;
+ Text [ english_us ] = "Determines the variance of all the cells in a data range where the contents match the search criteria." ;
+ Text[ chinese_simplified ] = "¹ÀËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñÖÐÊý¾ÝµÄ·½²î¡£";
+ Text[ russian ] = "Îïðåäåëÿåò äèñïåðñèþ âñåõ ÿ÷ååê äèàïàçîíà äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò êðèòåðèÿì ïîèñêà.";
+ Text[ polish ] = "Okreœla wariancjê wszystkich komórek obszaru danych, których zawartoœci odpowiadaj¹ podanym kryteriom wyszukiwania.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½¾Ù‚Ì•ªŽU‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦ôºâ¤@­Ó¼Æ¾Ú°Ï°ì¤º²Å¦X´M§ä±ø¥óªº©Ò¦³Àx¦s®æ¤¤¼Æ¾Úªº¤è®t¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÊÈÇíä ßá ÎáÇíÇ äØÇÞ ÈíÇäÇÊ ãÇ ÊÝí ãÍÊæíÇÊåÇ ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt de variantie van alle cellen van een gegevensbereik, waarvan de inhoud aan de zoekcriteria voldoet.";
+ Text[ chinese_simplified ] = "¹ÀËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñÖÐÊý¾ÝµÄ·½²î¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôç äéáêýìáíóç üëùí ôùí êåëéþí ôçò ðåñéï÷Þò äåäïìÝíùí, ôùí ïðïßùí ôá ðåñéå÷üìåíá åðáëçèåýïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ ¸Â´Â ³»¿ëÀÌ ÀÖ´Â µ¥ÀÌÅÍ ¿µ¿ªÀÇ ¸ðµç ¼¿ÀÇ º¯¼ö¸¦ °áÁ¤";
+ Text[ turkish ] = "Veri aralýðýnda olup içerikleri arama ölçütlerine uyan tüm hücrelerin varyansýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBVARIANZ );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données" ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos." ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè.";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "§t¦³¼Æ¾ÚªºÀx¦s®æ°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+ Text [ spanish ] = "Indica el campo (columna) que se utiliza en la función." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "Sökkriterier" ;
+ Text [ dutch ] = "Criteria" ;
+ Text [ spanish ] = "Criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Criteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellules contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas que contiene los criterios búsqueda." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Wyznacza zakres komórek zawieraj¹cych kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍB";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DBVARIANZEN #*=-
+ Resource SC_OPCODE_DB_VAR_P
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Varianz bzgl. der Grundgesamtheit aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ english ] = "Calculates the variance of a population based on the entire population, using the numbers in the field column of records in the database that match the criteria." ;
+ Text [ norwegian ] = "Bestimmt die Varianz bzgl. der Grundgesamtheit aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ italian ] = "Restituisce la varianza relativa a una popolazione sulla base di tutte le celle di un'area di dati che soddisfano i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Varianz bzgl. der Grundgesamtheit aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ portuguese ] = "Calcula a variância de uma população com base em todas as células num intervalo de dados, cujos conteúdos obedecem aos critérios de procura." ;
+ Text [ finnish ] = "Bestimmt die Varianz bzgl. der Grundgesamtheit aller Zellen eines Datenbereichs, deren Inhalte den Suchkriterien entsprechen." ;
+ Text [ danish ] = "Beregner variansen baseret på hele populationen for alle celler indenfor et dataområde, hvis indhold opfylder søgekriterierne." ;
+ Text [ french ] = "Calcule la variance sur l'ensemble d'une population de toutes les cellules d'une plage de données dont les contenus correspondent aux critères de recherche." ;
+ Text [ swedish ] = "Bestämmer variansen ang. populationen av alla celler i ett dataområde vars innehåll motsvarar sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt de variantie m.b.t. de hele populatie van alle cellen van een gegevensbereik, waarvan de inhoud aan de zoekcriteria voldoet." ;
+ Text [ spanish ] = "Calcula la varianza basándose en la población total de todas las celdas de un área de datos cuyos contenidos coinciden con los criterios." ;
+ Text [ english_us ] = "Determines variance of a population based on all cells in a data range where contents match the search criteria." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñÖÐÊý¾ÝµÄ×ÜÌå·½²î¡£";
+ Text[ russian ] = "Îïðåäåëÿåò äèñïåðñèþ ãåíåðàëüíîé ñîâîêóïíîñòè âñåõ ÿ÷ååê äèàïàçîíà äàííûõ, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò êðèòåðèÿì ïîèñêà.";
+ Text[ polish ] = "Okreœla wariancjê lub populacjê wszystkich komórek obszaru danych, których zawartoœci odpowiadaj¹ podanym kryteriom.";
+ Text[ japanese ] = "ÃÞ°À”͈͓à‚ÅAŒŸõðŒ‚ɇ‚Á‚½¾Ù‚Ì•êW’c‚ðŠî€‚Æ‚µ‚½•ªŽU‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æ¾Ú°Ï°ì¤º²Å¦X´M§ä±ø¥óªº©Ò¦³Àx¦s®æ¤¤¼Æ¾ÚªºÁ`Åé¤è®t¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÊÈÇíä ÇáãÌÊãÚ ÈÃßãáå ÇÓÊäÇÏÇð Åáì ßá ÎáÇíÇ äØÇÞ ÈíÇäÇÊ ãÇ ÊÝí ãÍÊæíÇÊåÇ ÈãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt de variantie m.b.t. de hele populatie van alle cellen van een gegevensbereik, waarvan de inhoud aan de zoekcriteria voldoet.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊý¾ÝÇøÓòÄÚ·ûºÏËÑÑ°Ìõ¼þµÄËùÓе¥Ôª¸ñÖÐÊý¾ÝµÄ×ÜÌå·½²î¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôç äéáêýìáíóç ôïõ ðëçèõóìïý ìå âÜóç üëá ôá êåëéÜ ôçò ðåñéï÷Þò äåäïìÝíùí, ôùí ïðïßùí ôá ðåñéå÷üìåíá åðáëçèåýïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ ¸Â´Â ³»¿ëÀÇ µ¥ÀÌÅÍ ¿µ¿ª¿¡ ÀÖ´Â ¸ðµç ¼¿ÀÇ ¸ðÁý´Ü¿¡ °ü·ÃµÈ ºÐ»êÀ» ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Veri aralýðýnda olup içerikleri arama ölçütlerine uyan tüm hücrelerin popülasyonu ile ilgili varyansý belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATABASE;
+ U2S( HID_FUNC_DBVARIANZEN );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datenbank" ;
+ Text [ english ] = "database" ;
+ Text [ norwegian ] = "Datenbank" ;
+ Text [ italian ] = "Database" ;
+ Text [ portuguese_brazilian ] = "Datenbank" ;
+ Text [ portuguese ] = "Base de dados" ;
+ Text [ finnish ] = "Datenbank" ;
+ Text [ danish ] = "Database" ;
+ Text [ french ] = "Base_de_données" ;
+ Text [ swedish ] = "databas" ;
+ Text [ dutch ] = "Database" ;
+ Text [ spanish ] = "Base de datos" ;
+ Text [ english_us ] = "Database" ;
+ Text[ chinese_simplified ] = "database";
+ Text[ russian ] = "Áàçà äàííûõ";
+ Text[ polish ] = "Baza danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½";
+ Text[ chinese_traditional ] = "database";
+ Text[ arabic ] = "Database";
+ Text[ dutch ] = "Database";
+ Text[ chinese_simplified ] = "database";
+ Text[ greek ] = "ÂÜóç äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º";
+ Text[ turkish ] = "Veritabaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zellbereich mit den Daten" ;
+ Text [ english ] = "is the range of cells that make up the database." ;
+ Text [ norwegian ] = "Der Zellbereich mit den Daten" ;
+ Text [ italian ] = "È l'area delle celle con i dati." ;
+ Text [ portuguese_brazilian ] = "Der Zellbereich mit den Daten" ;
+ Text [ portuguese ] = "é o intervalo de células que constitui a base de dados." ;
+ Text [ finnish ] = "Der Zellbereich mit den Daten" ;
+ Text [ danish ] = "Celleområdet med dataene" ;
+ Text [ french ] = "La plage de cellules contenant les données" ;
+ Text [ swedish ] = "Cellområdet med data." ;
+ Text [ dutch ] = "Het cellenbereik met de gegevens" ;
+ Text [ spanish ] = "área de celdas con los datos." ;
+ Text [ english_us ] = "The range of cells containing data." ;
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê ñ äàííûìè.";
+ Text[ polish ] = "Zakres komórek s³u¿¹cych do tworzenia bazy danych.";
+ Text[ japanese ] = "ÃÞ°À‚Ì‚ ‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "§t¦³¼Æ¾ÚªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íäÔÆ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Het cellenbereik met de gegevens";
+ Text[ chinese_simplified ] = "º¬ÓÐÊý¾ÝµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ðåñéï÷Þ êåëéþí ìå ôá äåäïìÝíá.";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¿µ¿ª";
+ Text[ turkish ] = "Verileri içeren hücre aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datenbankfeld" ;
+ Text [ english ] = "field" ;
+ Text [ norwegian ] = "Datenbankfeld" ;
+ Text [ italian ] = "Campo" ;
+ Text [ portuguese_brazilian ] = "Datenbankfeld" ;
+ Text [ portuguese ] = "Campo" ;
+ Text [ finnish ] = "Datenbankfeld" ;
+ Text [ danish ] = "Databasefelt" ;
+ Text [ french ] = "Champ" ;
+ Text [ swedish ] = "databasfält" ;
+ Text [ dutch ] = "Database-veld" ;
+ Text [ spanish ] = "Campo de base de datos" ;
+ Text [ english_us ] = "Database field" ;
+ Text[ chinese_simplified ] = "field";
+ Text[ russian ] = "Ïîëå áàçû äàííûõ";
+ Text[ polish ] = "Pole bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½ ̨°ÙÄÞ";
+ Text[ chinese_traditional ] = "field";
+ Text[ arabic ] = "Field";
+ Text[ dutch ] = "Database-veld";
+ Text[ chinese_simplified ] = "field";
+ Text[ greek ] = "Ðåäßï âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º Çʵå";
+ Text[ turkish ] = "Veritabaný alaný";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Legt das Datenbankfeld (Spalte) für die Suchkriterien fest. : Legt das Datenbankfeld (Spalte) f³r die Suchkriterien fest. */
+ Text = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ english ] = "indicates which field is used in the function." ;
+ Text [ norwegian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ italian ] = "È il campo database (colonna) utilizzato per i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ portuguese ] = "indica o campo da base de dados (coluna) usado para os critérios de procura." ;
+ Text [ finnish ] = "Legt das Datenbankfeld (Spalte) für die Suchkriterien fest." ;
+ Text [ danish ] = "Definerer databasefeltet (kolonne) for søgekriterierne." ;
+ Text [ french ] = "Indique le champ de base de données (colonne) utilisé pour les critères de recherche." ;
+ Text [ swedish ] = "Definierar databasfältet (kolumn) för sökkriterierna." ;
+ Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+ Text [ spanish ] = "Indica el campo (columna) que se utiliza en la función." ;
+ Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ïîëå áàçû äàííûõ (ñòîëáåö) äëÿ êðèòåðèåâ ïîèñêà.";
+ Text[ polish ] = "Definiuje pole bazy danych (kolumnê) dla kryteriów wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð‚ ‚Ä‚Í‚ß‚éÃÞ°À ̨°ÙÄÞ(—ñ)B";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªº¸ê®Æ®w°Ï°ì(Äæ)¡C";
+ Text[ arabic ] = "íÍÏÏ ÍÞá ÞÇÚÏÉ ÇáÈíÇäÇÊ áãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄÊý¾Ý¿âÇøÓò(ÁÐ)¡£";
+ Text[ greek ] = "Êáèïñßæåé ôï ðåäßï âÜóçò äåäïìÝíùí (óôÞëç) ãéá ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º Çʵå(Ä÷³)À» Ç¥½Ã";
+ Text[ turkish ] = "Arama ölçütleri için veritabaný alanýný (sütun) belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Suchkriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Suchkriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Suchkriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Suchkriterien" ;
+ Text [ danish ] = "Søgekriterier" ;
+ Text [ french ] = "Critères_rech" ;
+ Text [ swedish ] = "sökkriterier" ;
+ Text [ dutch ] = "Zoekcriteria" ;
+ Text [ spanish ] = "Criterios" ;
+ Text [ english_us ] = "Search criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Zoekcriteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá áíáæÞôçóçò";
+ Text[ korean ] = "ã±â ±âÁØ";
+ Text[ turkish ] = "Arama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ english ] = "is the range of cells that contains the database criteria." ;
+ Text [ norwegian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ italian ] = "È l'area delle celle con i criteri di ricerca specificati." ;
+ Text [ portuguese_brazilian ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ portuguese ] = "é o intervalo de células que contém os critérios de procura da base de dados." ;
+ Text [ finnish ] = "Gibt den Zellbereich mit den Suchkriterien an." ;
+ Text [ danish ] = "Angiver celleområdet, som indeholder søgekriterierne." ;
+ Text [ french ] = "Indique la plage de cellules contenant les critères de recherche." ;
+ Text [ swedish ] = "Anger cellområdet med sökkriterierna." ;
+ Text [ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan." ;
+ Text [ spanish ] = "área de celdas que contiene los criterios de búsqueda." ;
+ Text [ english_us ] = "Defines the cell range containing the search criteria." ;
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Çàäàåò äèàïàçîí ÿ÷ååê, êîòîðûé ñîäåðæèò óñëîâèÿ ïîèñêà.";
+ Text[ polish ] = "Podaje zakres komórek zawieraj¹cych kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ðŠÜ‚޾͈ٔÍ";
+ Text[ chinese_traditional ] = "½T©w§t¦³´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íÍÊæí Úáì ãÚÇííÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
+ Text[ chinese_simplified ] = "È·¶¨º¬ÓÐËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðåñéï÷Þ êåëéþí ìå ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ã±â ±âÁØÀ» Æ÷ÇÔÇÏ´Â ¼¿ ¿µ¿ªÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Arama ölçütlerini içeren hücre aralýðýný tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DATUM #*=-
+ Resource SC_OPCODE_GET_DATE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Liefert die interne Zahl für das angegebene Datum. : Liefert die interne Zahl f³r das angegebene Datum. */
+ Text = "Liefert die interne Zahl für das angegebene Datum." ;
+ Text [ english ] = "Returns the serial number of a particular date." ;
+ Text [ norwegian ] = "Liefert die interne Zahl für das angegebene Datum." ;
+ Text [ italian ] = "Restituisce il numero seriale di una data specifica." ;
+ Text [ portuguese_brazilian ] = "Liefert die interne Zahl für das angegebene Datum." ;
+ Text [ portuguese ] = "Devolve o número de série de uma data específica" ;
+ Text [ finnish ] = "Liefert die interne Zahl für das angegebene Datum." ;
+ Text [ danish ] = "Beregner serienummeret for en angivet dato." ;
+ Text [ french ] = "Renvoie le numéro de série d'une date spécifiée." ;
+ Text [ swedish ] = "Returnerar det interna talet för det angivna datumet." ;
+ Text [ dutch ] = "Converteert een bepaalde datum naar een serieel getal." ;
+ Text [ spanish ] = "Devuelve el número de serie de una fecha especificada." ;
+ Text [ english_us ] = "Provides an internal number for the date given." ;
+ Text[ chinese_simplified ] = "Ϊ¸ø¶¨µÄÈÕÆÚÌṩһ¸öÄÚ²¿ÐòÁÐÊý¡£";
+ Text[ russian ] = "Âîçâðàùàåò äàòó â ÷èñëîâîì ôîðìàòå äëÿ çàäàííîé äàòû.";
+ Text[ polish ] = "Zwraca numer kolejny odpowiadaj¹cy podanej dacie.";
+ Text[ japanese ] = "“ú•t‚̼رْl‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¬°«ü©wªº¤é´Á´£¨Ñ¤@­Ó¤º³¡¼Æ­È¡C";
+ Text[ arabic ] = "ÊæÑÏ ÇáÑÞã ÇáÏÇÎáí ááÊÇÑíÎ ÇáãÚØì.";
+ Text[ dutch ] = "Converteert een bepaalde datum naar een serieel getal.";
+ Text[ chinese_simplified ] = "Ϊ¸ø¶¨µÄÈÕÆÚÌṩһ¸öÄÚ²¿ÐòÁÐÊý¡£";
+ Text[ greek ] = "Äßíåé ôïí åóùôåñéêü áñéèìü ãéá ôç äåäïìÝíç çìåñïìçíßá.";
+ Text[ korean ] = "ÁÖ¾îÁø ÀÏÀÚÀÇ ³»ºÎÀû Àϼö¸¦ Á¦°ø";
+ Text[ turkish ] = "Belirtilen tarih için bir iç sayý üretir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_DATUM );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Jahr" ;
+ Text [ english ] = "year" ;
+ Text [ norwegian ] = "Jahr" ;
+ Text [ italian ] = "Anno" ;
+ Text [ portuguese_brazilian ] = "Jahr" ;
+ Text [ portuguese ] = "Ano" ;
+ Text [ finnish ] = "Jahr" ;
+ Text [ danish ] = "År" ;
+ Text [ french ] = "Année" ;
+ Text [ swedish ] = "år" ;
+ Text [ dutch ] = "JAAR" ;
+ Text [ spanish ] = "Año" ;
+ Text [ english_us ] = "year" ;
+ Text[ chinese_simplified ] = "year";
+ Text[ russian ] = "Ãîä";
+ Text[ polish ] = "Rok";
+ Text[ japanese ] = "”N";
+ Text[ chinese_traditional ] = "year";
+ Text[ arabic ] = "year";
+ Text[ dutch ] = "JAAR";
+ Text[ chinese_simplified ] = "year";
+ Text[ greek ] = "¸ôïò";
+ Text[ korean ] = "³â";
+ Text[ turkish ] = "Yýl";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Eine ganze Zahl zwischen 1583 und 9956, oder 0 und 99 (19xx oder 20xx gemäß eingestellter Option). : Eine ganze Zahl zwischen 1600 und 3000, 0 und 19 (-> 2000 bis 2019) oder 20 und 99 (-> 1920 - 1999). */
+ Text = "Eine ganze Zahl zwischen 1583 und 9956, oder 0 und 99 (19xx oder 20xx gemäß eingestellter Option)." ;
+ Text [ english ] = "is an integer number between 1583 and 9956, or 0 and 99 (19xx or 20xx according to chosen option)." ;
+ Text [ portuguese ] = "é um número inteiro entre 1583 e 9956 ou 0 e 99 (19xx ou 20xx, dependendo da opção definida)." ;
+ Text [ english_us ] = "An integer between 1583 and 9956 or 0 and 99 (19xx or 20xx depending on the defined option)." ;
+ Text [ portuguese_brazilian ] = "Eine ganze Zahl zwischen 1600 und 3000, 0 und 19 (-> 2000 bis 2019) oder 20 und 99 (-> 1920 - 1999)." ;
+ Text [ swedish ] = "Ett heltal mellan 1583 och 9956, eller 0 och 99 (19xx eller 20xx enligt inställt alternativ). " ;
+ Text [ danish ] = "Et heltal mellem 1583 og 9956 eller 0 og 99 (19xx eller 20xx alt efter indstillet alternativ)." ;
+ Text [ italian ] = "un numero intero compreso tra 1583 e 9956, oppure 0 e 99 (19xx oppure 20xx a seconda dell'opzione impostata)." ;
+ Text [ spanish ] = "Es un número entero entre 1583 y 9956, o 0 y 99 (19xx o 20xx dependiendo de la opción definida)." ;
+ Text [ french ] = "Un nombre entier compris entre 1583 et 9956 ou entre 0 et 99 (19xx ou 20xx selon l'option définie)." ;
+ Text [ dutch ] = "Een geheel getal tussen 1583 en 9956, of tussen 0 en 19 (19xx of 20xx overeenkomstig ingestelde optie)." ;
+ Text[ chinese_simplified ] = "Ò»¸öÔÚ 1583 ºÍ 9956 Ö®¼ä»òÕßÔÚ 0 ºÍ 99 Ö®¼äµÄÕûÊý\n(19xx »ò20xx £¬ÊÓÑ¡Ïî¶ø¶¨)¡£";
+ Text[ russian ] = "Öåëîå ÷èñëî îò 1583 è äî 9956, èëè îò 0 è äî 99 (19xx èëè 20xx ñîãëàñíî óñòàíîâëåííîãî ïàðàìåòðà).";
+ Text[ polish ] = "Liczba ca³kowita pomiêdzy 1583 i 9956, lub 0 i 99 (19xx lub 20xx wed³ug ustawionej opcji).";
+ Text[ japanese ] = "1583‚©‚ç9956¤‚ ‚é‚¢‚Í0‚©‚ç99(µÌß¼®Ý‚Åݒ肳‚ꂽ19xx‚Ü‚½‚Í20xx)‚Ü‚Å‚Ì®”B";
+ Text[ chinese_traditional ] = "¤@­Ó¦b 1583 ©M 9956 ¤§¶¡©ÎªÌ¦b 0 ©M 99 ¤§¶¡ªº¾ã¼Æ(19xx ©Î20xx ¡Mµø¿ï¶µ¦Ó©w)¡C";
+ Text[ arabic ] = "ÑÞã ÕÍíÍ Èíä 1583 æ9956¡ Ãæ Èíä 0 æ99 (19xx Ãæ 20xxÊÈÚÇð ááÎíÇÑ ÇáãÍÏÏ).";
+ Text[ dutch ] = "Een geheel getal tussen 1583 en 9956, of tussen 0 en 19 (19xx of 20xx overeenkomstig ingestelde optie).";
+ Text[ chinese_simplified ] = "Ò»¸öÔÚ 1583 ºÍ 9956 Ö®¼ä»òÕßÔÚ 0 ºÍ 99 Ö®¼äµÄÕûÊý\n(19xx »ò20xx £¬ÊÓÑ¡Ïî¶ø¶¨)¡£";
+ Text[ greek ] = "¸íáò áêÝñáéïò áñéèìüò ìåôáîý 1583 êáé 9956 Þ 0 êáé 99 (19xx Þ 20xx áíÜëïãá ìå ôçí åðéëåãìÝíç ñýèìéóç).";
+ Text[ korean ] = "1583 °ú 9956 ,¶Ç´Â 0 °ú 99 »çÀÌÀÇ Á¤¼ö (Á¤ÀÇµÈ ¿É¼Ç»ó¿¡ ÀÇÁ¸ÇÏ´Â 19xx ¶Ç´Â 20xx ).";
+ Text[ turkish ] = "1583 ile 9956 ya da 0 ile 99 (yapýlan ayara göre 19xx ya da 20xx) arasý bir tamsayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Monat" ;
+ Text [ english ] = "month" ;
+ Text [ norwegian ] = "Monat" ;
+ Text [ italian ] = "mese" ;
+ Text [ portuguese_brazilian ] = "Monat" ;
+ Text [ portuguese ] = "Mês" ;
+ Text [ finnish ] = "Monat" ;
+ Text [ danish ] = "Måned" ;
+ Text [ french ] = "Mois" ;
+ Text [ swedish ] = "månad" ;
+ Text [ dutch ] = "MAAND" ;
+ Text [ spanish ] = "Mes" ;
+ Text [ english_us ] = "month" ;
+ Text[ chinese_simplified ] = "month";
+ Text[ russian ] = "Ìåñÿö";
+ Text[ polish ] = "Miesi¹c";
+ Text[ japanese ] = "ŒŽ";
+ Text[ chinese_traditional ] = "month";
+ Text[ arabic ] = "Month";
+ Text[ dutch ] = "MAAND";
+ Text[ chinese_simplified ] = "month";
+ Text[ greek ] = "ÌÞíáò";
+ Text[ korean ] = "¿ù";
+ Text[ turkish ] = "Ay";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Eine ganze Zahl zwischen 1 und 12 für den Monat. : Eine ganze Zahl zwischen 1 und 12 f³r den Monat. */
+ Text = "Eine ganze Zahl zwischen 1 und 12 für den Monat." ;
+ Text [ english ] = "is a number between 1 and 12 representing the month of the year." ;
+ Text [ norwegian ] = "Eine ganze Zahl zwischen 1 und 12 für den Monat." ;
+ Text [ italian ] = "è un numero che rappresenta il mese dell'anno." ;
+ Text [ portuguese_brazilian ] = "Eine ganze Zahl zwischen 1 und 12 für den Monat." ;
+ Text [ portuguese ] = "é um número inteiro entre 1 e 12, representando um mês." ;
+ Text [ finnish ] = "Eine ganze Zahl zwischen 1 und 12 für den Monat." ;
+ Text [ danish ] = "Et heltal mellem 1 og 12, som svarer til måneden." ;
+ Text [ french ] = "Un nombre entier compris entre 1 et 12 indiquant le mois de l'année." ;
+ Text [ swedish ] = "Ett heltal mellan 1 och 12 för månaden." ;
+ Text [ dutch ] = "De maand wordt weergegeven als een geheel getal." ;
+ Text [ spanish ] = "Es un número que representa el mes del año." ;
+ Text [ english_us ] = "An integer between 1 and 12 representing the month." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚÔ·ÝÊýµÄÔÚ 1 ºÍ 12 Ö®¼äµÄÒ»¸öÕûÊý¡£";
+ Text[ russian ] = "Öåëîå ÷èñëî îò 1 äî 12, ïðåäñòàâëÿþùåå íîìåð ìåñÿöà â ãîäó.";
+ Text[ polish ] = "Liczba ca³kowita pomiêdzy 1 i 12 dla wyra¿enia miesiêcy.";
+ Text[ japanese ] = "1‚©‚ç12‚Ü‚Å‚ÌŒŽ‚Ì”’lB";
+ Text[ chinese_traditional ] = "¥Î©ó¤ë¥÷¼Æªº¦b 1 ©M 12 ¤§¶¡ªº¤@­Ó¾ã¼Æ¡C";
+ Text[ arabic ] = "ÑÞã ÕÍíÍ ãä 1 Åáì 12 íÓÊÎÏã ááÔåÑ.";
+ Text[ dutch ] = "De maand wordt weergegeven als een geheel getal.";
+ Text[ chinese_simplified ] = "ÓÃÓÚÔ·ÝÊýµÄÔÚ 1 ºÍ 12 Ö®¼äµÄÒ»¸öÕûÊý¡£";
+ Text[ greek ] = "¸íáò áêÝñáéïò áñéèìüò ìåôáîý ôïõ 1 êáé ôïõ 12, ðïõ áíôéðñïóùðåýåé ôïí ìÞíá.";
+ Text[ korean ] = "¿ù·Î Ç¥ÇöµÇ´Â 1°ú 12»çÀÌÀÇ Á¤¼ö";
+ Text[ turkish ] = "Ay için 1 ile 12 arasýnda bir tamsayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Tag" ;
+ Text [ english ] = "day" ;
+ Text [ norwegian ] = "Tag" ;
+ Text [ italian ] = "giorno" ;
+ Text [ portuguese_brazilian ] = "Tag" ;
+ Text [ portuguese ] = "Dia" ;
+ Text [ finnish ] = "Tag" ;
+ Text [ danish ] = "Dag" ;
+ Text [ french ] = "Jour" ;
+ Text [ swedish ] = "dag" ;
+ Text [ dutch ] = "DAG" ;
+ Text [ spanish ] = "Día" ;
+ Text [ english_us ] = "day" ;
+ Text[ chinese_simplified ] = "day";
+ Text[ russian ] = "Äåíü";
+ Text[ polish ] = "Dzieñ";
+ Text[ japanese ] = "“ú";
+ Text[ chinese_traditional ] = "day";
+ Text[ arabic ] = "Day";
+ Text[ dutch ] = "DAG";
+ Text[ chinese_simplified ] = "day";
+ Text[ greek ] = "ÇìÝñá";
+ Text[ korean ] = "ÀÏ";
+ Text[ turkish ] = "Gün";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Eine ganze Zahl zwischen 1 und 31 für den Tag. : Eine ganze Zahl zwischen 1 und 31 f³r den Tag. */
+ Text = "Eine ganze Zahl zwischen 1 und 31 für den Tag." ;
+ Text [ english ] = "is a number between 1 and 31 representing the day of the month." ;
+ Text [ norwegian ] = "Eine ganze Zahl zwischen 1 und 31 für den Tag." ;
+ Text [ italian ] = "è un numero compreso tra 1 e 31 che rappresenta il giorno del mese." ;
+ Text [ portuguese_brazilian ] = "Eine ganze Zahl zwischen 1 und 31 für den Tag." ;
+ Text [ portuguese ] = "é um número inteiro entre 1 e 31, representando um dia no mês." ;
+ Text [ finnish ] = "Eine ganze Zahl zwischen 1 und 31 für den Tag." ;
+ Text [ danish ] = "Et heltal mellem 1 og 31, som svarer til dagen." ;
+ Text [ french ] = "Un nombre entier compris entre 1 et 31 indiquant le jour du mois." ;
+ Text [ swedish ] = "Ett heltal mellan 1 och 31 för dagen." ;
+ Text [ dutch ] = "De dag wordt weergegeven als een geheel getal tussen 1 en 31." ;
+ Text [ spanish ] = "Es un número que representa el día del mes." ;
+ Text [ english_us ] = "An integer between 1 and 31 representing the day of the month." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚÌìÊýµÄÔÚ 1 ºÍ 31 Ö®¼äµÄÒ»¸öÕûÊý¡£";
+ Text[ russian ] = "Öåëîå ÷èñëî îò 1 äî 31, ïðåäñòàâëÿþùåå íîìåð äíÿ â ìåñÿöå.";
+ Text[ polish ] = "Liczba ca³kowita pomiêdzy 1 i 31 dla wyra¿enia dni.";
+ Text[ japanese ] = "1‚©‚ç31‚Ü‚Å‚Ì“ú•t‚Ì”’lB";
+ Text[ chinese_traditional ] = "¥Î©ó¤Ñ¼Æªº¦b 1 ©M 31 ¤§¶¡ªº¤@­Ó¾ã¼Æ¡C";
+ Text[ arabic ] = "ÑÞã ÕÍíÍ ãä 1 Åáì 31 íãËá Çáíæã.";
+ Text[ dutch ] = "De dag wordt weergegeven als een geheel getal tussen 1 en 31.";
+ Text[ chinese_simplified ] = "ÓÃÓÚÌìÊýµÄÔÚ 1 ºÍ 31 Ö®¼äµÄÒ»¸öÕûÊý¡£";
+ Text[ greek ] = "¸íáò áêÝñáéïò áñéèìüò ìåôáîý ôïõ 1 êáé ôïõ 31, ðïõ áíôéðñïóùðåýåé óôçí çìÝñá ôïõ ìçíüò.";
+ Text[ korean ] = "¿ùÀÇ ÀÏÀڷΠǥÇöµÇ´Â 1¿¡¼­ 31 »çÀÌÀÇ Á¤¼ö";
+ Text[ turkish ] = "Gün için 1 ile 31 arasýnda bir tamsayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DATWERT #*=-
+ Resource SC_OPCODE_GET_DATE_VALUE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Bestimmt aus einem Text in einem möglichen Datumseingabeformat eine interne Zahl. : Bestimmt aus einem Text in einem m÷glichen Datumseingabeformat eine interne Zahl. */
+ Text = "Bestimmt aus einem Text in einem möglichen Datumseingabeformat eine interne Zahl." ;
+ Text [ english ] = "Returns the serial number of the date represented by date_text." ;
+ Text [ norwegian ] = "Bestimmt aus einem Text in einem möglichen Datumseingabeformat eine interne Zahl." ;
+ Text [ italian ] = "Restituisce il numero seriale della data rappresentata da data." ;
+ Text [ portuguese_brazilian ] = "Bestimmt aus einem Text in einem möglichen Datumseingabeformat eine interne Zahl." ;
+ Text [ portuguese ] = "Devolve o número de série da data representada por texto_data." ;
+ Text [ finnish ] = "Bestimmt aus einem Text in einem möglichen Datumseingabeformat eine interne Zahl." ;
+ Text [ danish ] = "Omregner en dato i form af tekst til et serienummer." ;
+ Text [ french ] = "Convertit une date représentée sous forme de texte en numéro de série." ;
+ Text [ swedish ] = "Bestämmer ett internt tal från en text i ett möjligt datuminmatningsformat." ;
+ Text [ dutch ] = "Converteert datum in de vorm van tekst naar een serieel getal." ;
+ Text [ spanish ] = "Devuelve el número de serie de la fecha representada por texto_de_fecha." ;
+ Text [ english_us ] = "Returns an internal number for a text having a possible date format." ;
+ Text[ chinese_simplified ] = "½«¾ß±¸ÈÕÆÚÊäÈë¸ñʽµÄÎÄ×Öת»»³ÉÈÕÆÚµÄϵͳÄÚ²¿ÐòÁÐÊý¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò äàòó èç òåêñòîâîãî ôîðìàòà â ÷èñëîâîé.";
+ Text[ polish ] = "Zamienia tekst w formacie wprowadzania danych na wewnêtrzn¹ liczbê.";
+ Text[ japanese ] = "“ú•t‚ð•\\‚·•¶Žš—ñ‚ð¼Ø±Ù’l‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¤å¦r®æ¦¡ªº¤é´ÁÂàÅܦ¨¤é´Áªº¨t²Î¤º³¡¼Æ¦r¡C";
+ Text[ arabic ] = "ÊÍæá ÇáÊÇÑíÎ ãä Ôßáå ÇáäÕí Åáì ÑÞã íãËá ÇáÊÇÑíÎ.";
+ Text[ dutch ] = "Converteert datum in de vorm van tekst naar een serieel getal.";
+ Text[ chinese_simplified ] = "½«¾ß±¸ÈÕÆÚÊäÈë¸ñʽµÄÎÄ×Öת»»³ÉÈÕÆÚµÄϵͳÄÚ²¿ÐòÁÐÊý¡£";
+ Text[ greek ] = "Áðïäßäåé Ýíáí åóùôåñéêü áñéèìü ãéá Ýíá êåßìåíï ðïõ ðåñéÝ÷åé ìéá ðéèáíÞ ìïñöÞ çìåñïìçíßáò";
+ Text[ korean ] = "°¡´ÉÇÑ ÀÏÀÚ ¼­½Ä¿¡ ´ëÇÑ ³»ºÎ ¼ö¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Muhtemel bir tarih formatýndaki bir metinden iç sayý üretir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_DATWERT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "date_text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "data" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto_data" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Date_texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto_de_fecha" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "date_text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "“ú•t•¶Žš—ñ";
+ Text[ chinese_traditional ] = "date_text";
+ Text[ arabic ] = "Date_text";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "date_text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein in Anführungszeichen eingeschlossener Text, der ein Datum in einem StarCalc Datumsformat wiedergibt. : Ein in Anf³hrungszeichen eingeschlossener Text, der ein Datum in einem StarCalc Datumsformat wiedergibt. */
+ Text = "Ein in Anführungszeichen eingeschlossener Text, der ein Datum in einem StarOffice Datumsformat wiedergibt." ;
+ Text [ english ] = "is text that returns a date" ;
+ Text [ norwegian ] = "Ein in Anführungszeichen eingeschlossener Text, der ein Datum in einem StarCalc Datumsformat wiedergibt." ;
+ Text [ italian ] = "il testo tra virgolette che riproduce una data in formato StarOffice." ;
+ Text [ portuguese_brazilian ] = "Ein in Anführungszeichen eingeschlossener Text, der ein Datum in einem StarOffice Calc Datumsformat wiedergibt." ;
+ Text [ portuguese ] = "Um texto entre aspas que devolve uma data com um formato do StarOffice." ;
+ Text [ finnish ] = "Ein in Anführungszeichen eingeschlossener Text, der ein Datum in einem StarCalc Datumsformat wiedergibt." ;
+ Text [ danish ] = "Tekst i anførselstegn som repræsenterer en dato i et StarOffice datoformat." ;
+ Text [ french ] = "Un texte entre guillemets qui renvoie une date dans un format de date de StarOffice." ;
+ Text [ swedish ] = "En inom citationstecken skriven text, som returnerar ett datum i något av StarOffice Calcs datumformat." ;
+ Text [ dutch ] = "Een tekst tussen aanhalingstekens met een datum in een StarOffice Calc-datumsformaat." ;
+ Text [ spanish ] = "Un texto entre comillas que será devuelto en un formato de fecha de StarOffice." ;
+ Text [ english_us ] = "A text enclosed in quotation marks which returns a date in a StarOffice date format." ;
+ Text[ chinese_simplified ] = "ÒýºÅÄÚµÄ×Ö´®×ª»»³É StarOffice ÈÕÆÚ¸ñʽ¡£";
+ Text[ russian ] = "Òåêñò â êàâû÷êàõ, âûäàþùèé äàòó â ôîðìàòå äàòû StarOffice.";
+ Text[ polish ] = "Wstawiony w cudzys³ów tekst, który wyznacza datê w formacie daty StarOffice.";
+ Text[ japanese ] = "¸«Ã°¼®ÝÏ°¸‚Å‚©‚±‚ñ‚¾“ú•t‚ð•\\‚·•¶Žš—ñ‚ðStarOffice‚Ì“ú•t•\\Ž¦Œ`Ž®‚ÅŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¤Þ¸¹¤ºªº¤å¦rÂàÅܦ¨StarOffice ¤é´Á®æ¦¡¡C";
+ Text[ arabic ] = "äÕ ãÍÇØ ÈÚáÇãÇÊ ÊäÕíÕ íãËá ÊÇÑíÎÇð ÈÃÍÏ ÊäÓíÞÇÊ ÇáÊÇÑíÎ Ýí StarOffice Calc.";
+ Text[ dutch ] = "Een tekst tussen aanhalingstekens met een datum in een StarOffice Calc-datumsformaat.";
+ Text[ chinese_simplified ] = "ÒýºÅÄÚµÄ×Ö´®×ª»»³É StarOffice ÈÕÆÚ¸ñʽ¡£";
+ Text[ greek ] = "¸íá êåßìåíï óå åéóáãùãéêÜ, ôï ïðïßï åðéóôñÝöåé ìéá çìåñïìçíßá óå ìïñöÞ çìåñïìçíßáò ôïõ StarOffice Calc.";
+ Text[ korean ] = "ÀοëºÎÈ£ ¾È¿¡ µé¾î ÀÖ´Â ÅؽºÆ®·Î¼­ StarOffice ³¯Â¥¼­½Ä¿¡ ÀÖ´Â ³¯Â¥¸¦ ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "StarOffice tarih formatýnda tarih bilgisi veren týrnak iþaretleri içindeki metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TAG #*=-
+ Resource SC_OPCODE_GET_DAY
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt zu dem Datumswert den fortlaufenden Tag des Monats als Zahl (1 - 31)." ;
+ Text [ english ] = "Returns the day of the month corresponding to serial_number." ;
+ Text [ norwegian ] = "Bestimmt zu dem Datumswert den fortlaufenden Tag des Monats als Zahl (1 - 31)." ;
+ Text [ italian ] = "Restituisce il giorno del mese corrispondente a num_seriale." ;
+ Text [ portuguese_brazilian ] = "Bestimmt zu dem Datumswert den fortlaufenden Tag des Monats als Zahl (1 - 31)." ;
+ Text [ portuguese ] = "Devolve o dia do mês (1 a 31) correspondente a núm_série." ;
+ Text [ finnish ] = "Bestimmt zu dem Datumswert den fortlaufenden Tag des Monats als Zahl (1 - 31)." ;
+ Text [ danish ] = "Omregner serienummeret til en dag i måneden som et mellem 1 og 31." ;
+ Text [ french ] = "Renvoie le jour du mois (compris entre 1 et 31) correspondant à l'argument numéro_série." ;
+ Text [ swedish ] = "Bestämmer dagen i månaden som tal (1-31) för datumvärdet." ;
+ Text [ dutch ] = "Converteert de actuele dag van de maand naar een serieel getal tussen 1 en 31." ;
+ Text [ spanish ] = "Devuelve el día del mes (1 - 31) correspondiente al núm_de_serie." ;
+ Text [ english_us ] = "Returns the sequential date of the month as an integer (1-31) in relation to the date value." ;
+ Text[ chinese_simplified ] = "È·¶¨ÓëÈÕÆÚÖµÏà¶ÔÓ¦µÄ£¬ÇÒÓÃÕûÊý 1 µ½ 31 ±íʾµÄ£¬Ò»ÔÂÄÚµÄijÌì¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò äàòó â äåíü ìåñÿöà (÷èñëî îò 1 äî 31).";
+ Text[ polish ] = "Konwertuje kolejny numer na dzieñ miesi¹ca w postaci liczby (1 - 31).";
+ Text[ japanese ] = "“ú•t‚̼رْl‚ª‚»‚ÌŒŽ‚̉½“ú–Ú‚É‚ ‚½‚é‚©‚ð”’l‚Å•Ô‚µ‚Ü‚·B(1-31)";
+ Text[ chinese_traditional ] = "Âà´«¤é´Á§Ç¦C¼Æ¦¨¹ïÀ³ªº¤@¤ë¤ºªº¬Y¤Ñ¡M¥Î¾ã¼Æ 1 ¨ì 31 ªí¥Ü¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞãÇð ãÓáÓáÇð Åáì íæã Ýí ÔåÑ.";
+ Text[ dutch ] = "Converteert de actuele dag van de maand naar een serieel getal tussen 1 en 31.";
+ Text[ chinese_simplified ] = "È·¶¨ÓëÈÕÆÚÖµÏà¶ÔÓ¦µÄ£¬ÇÒÓÃÕûÊý 1 µ½ 31 ±íʾµÄ£¬Ò»ÔÂÄÚµÄijÌì¡£";
+ Text[ greek ] = "Ïñßæåé ãéá ôçí ôéìÞ çìåñïìçíßáò ôçí äéáäï÷éêÞ çìÝñá ôïõ ìçíüò ùò áñéèìü (1 - 31).";
+ Text[ korean ] = "ÀÏÀÚ °ª¿¡ °ü·ÃÇÏ´Â Á¤¼ö(1 - 31)·Î ¿ùÀÇ ¿¬¼ÓÀûÀÎ ÀÏÀÚ¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Tarih deðerine göre, ayýn sürekli tarihini tam sayý (1 - 31) olarak belirtir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_TAG );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "serial_number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num_seriale" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Núm_série" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Serienummer" ;
+ Text [ french ] = "Numéro_série" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Núm_de_serie" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Kolejna_liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "serial_number";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÓáÓá";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Interne Zahl des Datums." ;
+ Text [ english ] = "is the date-time code used for date and time calculations." ;
+ Text [ norwegian ] = "Interne Zahl des Datums." ;
+ Text [ italian ] = "numero interno della data." ;
+ Text [ portuguese_brazilian ] = "Interne Zahl des Datums." ;
+ Text [ portuguese ] = "é o código data-hora usado para calcular a data e a hora." ;
+ Text [ finnish ] = "Interne Zahl des Datums." ;
+ Text [ danish ] = "Intern datoværdi." ;
+ Text [ french ] = "Le numéro de série de la date." ;
+ Text [ swedish ] = "Internt tal för datum." ;
+ Text [ dutch ] = "Serieel getal van de datum." ;
+ Text [ spanish ] = "Es el código de fecha y hora que StarOffice Calc usa para los cálculos de fecha y hora." ;
+ Text [ english_us ] = "The internal number for the date." ;
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄϵͳÄÚ²¿ÐòÊý¡£";
+ Text[ russian ] = "Êîä äàòà-âðåìÿ, èñïîëüçóåìûé äëÿ âû÷èñëåíèé äàòû è âðåìåíè.";
+ Text[ polish ] = "Kod daty-godziny u¿ywany do obliczenia daty i godziny.";
+ Text[ japanese ] = "“ú•t‚̼رْl";
+ Text[ chinese_traditional ] = "¤é´Áªº¨t²Î¤º³¡¼Æ¦r¡C";
+ Text[ arabic ] = "ÑÞã ÏÇÎáí ááÊÇÑíÎ.";
+ Text[ dutch ] = "Serieel getal van de datum.";
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄϵͳÄÚ²¿ÐòÊý¡£";
+ Text[ greek ] = "is the date-time code used for date and time calculations.";
+ Text[ korean ] = "ÀÏÀÚ¿¡´ëÇÑ ³»ºÎÀûÀÎ ¼ö";
+ Text[ turkish ] = "Tarihin iç sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TAGE360 #*=-
+ Resource SC_OPCODE_GET_DIFF_DATE_360
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Tagesdifferenz zweier Daten bei 360-Tage/Jahr-Berechnung." ;
+ Text [ english ] = "Returns the number of days between two dates based on a 360-day year (twelve 30-day months)." ;
+ Text [ norwegian ] = "Bestimmt die Tagesdifferenz zweier Daten bei 360-Tage/Jahr-Berechnung." ;
+ Text [ italian ] = "Restituisce il numero di giorni compresi tra due date sulla base di un anno di 360 giorni (dodici mesi di 30 giorni)." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Tagesdifferenz zweier Daten bei 360-Tage/Jahr-Berechnung." ;
+ Text [ portuguese ] = "Calcula o número de dias entre duas datas, baseando-se num ano de 360 dias." ;
+ Text [ finnish ] = "Bestimmt die Tagesdifferenz zweier Daten bei 360-Tage/Jahr-Berechnung." ;
+ Text [ danish ] = "Bestemmer antallet af dage mellem to datoer baserende på et år med 360 dage." ;
+ Text [ french ] = "Renvoie le nombre de jours compris entre deux dates sur la base d'une année de 360 jours." ;
+ Text [ swedish ] = "Bestämmer antalet dagar mellan två datum baserat på 360 dagar per år." ;
+ Text [ dutch ] = "Bepaalt het aantal dagen tussen twee data op basis van 360 dagen per jaar." ;
+ Text [ spanish ] = "Calcula el número de días entre dos fechas basándose en un año de 360 días." ;
+ Text [ english_us ] = "Calculates the number of days between two dates based on a 360-day year." ;
+ Text[ chinese_simplified ] = "°´ÕÕÒ»Äê360ÌìµÄ¹æÔò£¬¼ÆËãÁ½¸öÈÕÆÚÖ®¼äµÄÏà²îÌìÊý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êîëè÷åñòâî äíåé ìåæäó äâóìÿ äàòàìè íà îñíîâå 360-äíåâíîãî ãîäà.";
+ Text[ polish ] = "Oblicza liczbê dni zawartych pomiêdzy dwiema datami w oparciu o rok licz¹cy 360 dni.";
+ Text[ japanese ] = "2‚‚̓ú•t‚ÌŠÔ‚Ì“ú”‚ð•Ô‚µ‚Ü‚·B(1”N‚ð360“ú‚Æ‚·‚é)";
+ Text[ chinese_traditional ] = "«ö·Ó¤@¦~ 360¤Ñªººâªk¡M­pºâ¨â­Ó¤é´Áªº¬Û®t¤Ñ¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÚÏÏ ÇáÃíÇã Èíä ÊÇÑíÎíä ÇÓÊäÇÏÇð Åáì ÓäÉ ÝíåÇ 360 íæãÇð.";
+ Text[ dutch ] = "Bepaalt het aantal dagen tussen twee data op basis van 360 dagen per jaar.";
+ Text[ chinese_simplified ] = "°´ÕÕÒ»Äê360ÌìµÄ¹æÔò£¬¼ÆËãÁ½¸öÈÕÆÚÖ®¼äµÄÏà²îÌìÊý¡£";
+ Text[ greek ] = "Êáèïñßæåé ôçí äéáöïñÜ çìåñþí äýï çìåñïìçíéþí ëáìâÜíïíôáò õðüøç 360 çìÝñåò/Ýôïò.";
+ Text[ korean ] = "³â 360ÀÏ¿¡±Ù°ÅÇÑ µÎ ÀÏÀÚ°£ ÀϼöÀÇ Â÷À̸¦ °è»ê";
+ Text[ turkish ] = "360 günlü yýl hesaplamasýnda iki tarih arasýndaki gün farkýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_TAGE360 );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datum_1" ;
+ Text [ english ] = "start_date" ;
+ Text [ norwegian ] = "Datum 1" ;
+ Text [ italian ] = "data_1" ;
+ Text [ portuguese_brazilian ] = "Datum 1" ;
+ Text [ portuguese ] = "Data_1" ;
+ Text [ finnish ] = "Datum 1" ;
+ Text [ danish ] = "Dato_1" ;
+ Text [ french ] = "Date_1" ;
+ Text [ swedish ] = "datum_1" ;
+ Text [ dutch ] = "Datum_1" ;
+ Text [ spanish ] = "Fecha_1" ;
+ Text [ english_us ] = "Date_1" ;
+ Text[ chinese_simplified ] = "ÈÕÆÚ_1";
+ Text[ russian ] = "Äàòà_1";
+ Text[ polish ] = "Data_1";
+ Text[ japanese ] = "“ú•t1";
+ Text[ chinese_traditional ] = "date_1";
+ Text[ arabic ] = "ÇáÊÇÑíÎ_1";
+ Text[ dutch ] = "Datum_1";
+ Text[ chinese_simplified ] = "ÈÕÆÚ_1";
+ Text[ greek ] = "Çìåñïìçíßá_1";
+ Text[ korean ] = "ÀÏÀÚ_1";
+ Text[ turkish ] = "Tarih_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Früheres Datum für die Tagesdifferenz." ;
+ Text [ english ] = "The start date for calculating the difference in days." ;
+ Text [ norwegian ] = "Früheres Datum für die Tagesdifferenz." ;
+ Text [ italian ] = "sono le due date che delimitano il periodo di cui si desidera conoscere il numero di giorni." ;
+ Text [ portuguese_brazilian ] = "Älteres Datum für die Tagesdifferenz." ;
+ Text [ portuguese ] = "É a data mais antiga para o cálculo do número de dias." ;
+ Text [ finnish ] = "Früheres Datum für die Tagesdifferenz." ;
+ Text [ danish ] = "Tidligere dato for dagsdifferensen." ;
+ Text [ french ] = "Date la plus ancienne pour la différence en jours." ;
+ Text [ swedish ] = "Tidigare datum för dagsdifferensen." ;
+ Text [ dutch ] = "Oudere datum ter bepaling van het aantal dagen." ;
+ Text [ spanish ] = "Es la fecha más vieja para calcular la diferencia de días." ;
+ Text [ english_us ] = "The start date for calculating the difference in days." ;
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÈÕÆÚÏà²îÌìÊýʱ½ÏÔçµÄÄǸöÈÕÆÚ¡£";
+ Text[ russian ] = "Íà÷àëüíàÿ äàòà äëÿ îïðåäåëåíèÿ ðàçíèöû â êîëè÷åñòâå äíåé.";
+ Text[ polish ] = "PóŸniejsza data dla okreœlania ró¿nicy w liczbie dni.";
+ Text[ japanese ] = "“ú”ŒvŽZ‚Ì‚½‚ß‚ÌŽn‚ß“ú•t";
+ Text[ chinese_traditional ] = "­pºâ¬Û®t¤Ñ¼Æªº¤@­Ó¸û¦­ªº¤é´Á¡C";
+ Text[ arabic ] = "ÇáÊÇÑíÎ ÇáÃÞÏã ááÝÇÑÞ Èíä ÚÏÏ ÇáÃíÇã.";
+ Text[ dutch ] = "Oudere datum ter bepaling van het aantal dagen.";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÈÕÆÚÏà²îÌìÊýʱ½ÏÔçµÄÄǸöÈÕÆÚ¡£";
+ Text[ greek ] = "Áñ÷éêÞ çìåñïìçíßá ãéá ôïí õðïëïãéóìü ôçò äéáöïñÜò çìåñþí.";
+ Text[ korean ] = "ÀϼöÀÇ Â÷À̸¦ °è»êÇϱâ À§ÇÑ ½ÃÀÛ ÀÏÀÚ";
+ Text[ turkish ] = "Gün farký hesabý için erken olan tarih.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datum_2" ;
+ Text [ english ] = "end_date" ;
+ Text [ norwegian ] = "Datum 2" ;
+ Text [ italian ] = "data_2" ;
+ Text [ portuguese_brazilian ] = "Datum 2" ;
+ Text [ portuguese ] = "Data_2" ;
+ Text [ finnish ] = "Datum 2" ;
+ Text [ danish ] = "Dato_2" ;
+ Text [ french ] = "Date_2" ;
+ Text [ swedish ] = "datum_2" ;
+ Text [ dutch ] = "Datum_2" ;
+ Text [ spanish ] = "Fecha_2" ;
+ Text [ english_us ] = "Date_2" ;
+ Text[ chinese_simplified ] = "ÈÕÆÚ_2";
+ Text[ russian ] = "Äàòà_2";
+ Text[ polish ] = "Data_2";
+ Text[ japanese ] = "“ú•t2";
+ Text[ chinese_traditional ] = "date_2";
+ Text[ arabic ] = "ÇáÊÇÑíÎ_2";
+ Text[ dutch ] = "Datum_2";
+ Text[ chinese_simplified ] = "ÈÕÆÚ_2";
+ Text[ greek ] = "Çìåñïìçíßá_2";
+ Text[ korean ] = "ÀÏÀÚ_2";
+ Text[ turkish ] = "Tarih_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Späteres Datum für die Tagesdifferenz." ;
+ Text [ english ] = "The end date for calculating the difference in days." ;
+ Text [ norwegian ] = "Späteres Datum für die Tagesdifferenz." ;
+ Text [ italian ] = "sono le due date che delimitano il periodo di cui si desidera conoscere il numero di giorni." ;
+ Text [ portuguese_brazilian ] = "Jüngeres Datum für die Tagesdifferenz." ;
+ Text [ portuguese ] = "É a data mais recente para o cálculo do número de dias." ;
+ Text [ finnish ] = "Späteres Datum für die Tagesdifferenz." ;
+ Text [ danish ] = "Senere dato for dagsdifferensen." ;
+ Text [ french ] = "Date la plus récente pour la différence en jours." ;
+ Text [ swedish ] = "Senare datum för dagsdifferensen." ;
+ Text [ dutch ] = "Jongere datum ter bepaling van het aantal dagen." ;
+ Text [ spanish ] = "Es la fecha más reciente para calcular la diferencia de días." ;
+ Text [ english_us ] = "The end date for calculating the difference in days." ;
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÈÕÆÚÏà²îÌìÊýʱ½ÏÍíµÄÄǸöÈÕÆÚ¡£";
+ Text[ russian ] = "Êîíå÷íàÿ äàòà äëÿ îïðåäåëåíèÿ ðàçíèöû â êîëè÷åñòâå äíåé.";
+ Text[ polish ] = "Wczeœniejsza data dla okreœlania ró¿nicy w liczbie dni.";
+ Text[ japanese ] = "“ú”ŒvŽZ‚Ì‚½‚ß‚ÌŒã‚Ì“ú•t";
+ Text[ chinese_traditional ] = "­pºâ¬Û®t¤Ñ¼Æªº¤@­Ó¸û±ßªº¤é´Á¡C";
+ Text[ arabic ] = "ÇáÊÇÑíÎ ÇáÃÍÏË ááÝÇÑÞ Èíä ÚÏÏ ÇáÃíÇã.";
+ Text[ dutch ] = "Jongere datum ter bepaling van het aantal dagen.";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÈÕÆÚÏà²îÌìÊýʱ½ÏÍíµÄÄǸöÈÕÆÚ¡£";
+ Text[ greek ] = "Ç ôåëéêÞ çìåñïìçíßá ãéá ôïí õðïëïãéóìü ôçò äéáöïñÜò çìåñþí.";
+ Text[ korean ] = "ÀϼöÀÇ Â÷À̸¦ °è»êÇϱâ À§ÇÑ Á¾·á ÀÏÀÚ";
+ Text[ turkish ] = "Gün farký hesabý için geç olan tarih.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Art" ;
+ Text [ english ] = "method" ;
+ Text [ norwegian ] = "Art" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "Art" ;
+ Text [ portuguese ] = "Método" ;
+ Text [ finnish ] = "Art" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Mode" ;
+ Text [ swedish ] = "typ" ;
+ Text [ dutch ] = "Methode" ;
+ Text [ spanish ] = "Método" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Ìåòîä";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "À²Ìß";
+ Text[ chinese_traditional ] = "type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "Methode";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tür";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Art der Differenzbildung. Art = 0 heißt US-Methode (NASD), Art = 1 heißt europäische Methode." ;
+ Text [ english ] = "is a logical value that specifies whether the European or US method should be used in the calculation" ;
+ Text [ norwegian ] = "Art der Differenzbildung. Art = 0 heißt US-Methode (NASD), Art = 1 heißt europäische Methode." ;
+ Text [ italian ] = "Modo di calcolo della differenza Modo=1 per il metodo americano (NASD), Modo=0 per il metodo europeo" ;
+ Text [ portuguese_brazilian ] = "Art der Differenzbildung. Art = 1 heißt US-Methode (NASD), Art = 0 heißt europäische Methode." ;
+ Text [ portuguese ] = "Método de cálculo de diferenças. Modo = 0 para o método americano (NASD); Modo = 1 para o método europeu." ;
+ Text [ finnish ] = "Art der Differenzbildung. Art = 0 heißt US-Methode (NASD), Art = 1 heißt europäische Methode." ;
+ Text [ danish ] = "Differensdannelsestype. Type=0 betyder US-metode (NASD), Type=1 betyder europæisk metode." ;
+ Text [ french ] = "Le mode de calcul de la différence. Mode = 0 pour la méthode américaine (NASD), Mode = 1 pour la méthode européenne." ;
+ Text [ swedish ] = "Typ av differensbildning. Typ = 1 betyder den nordamerikanska metoden (NASD), typ = 0 betyder den europeiska metoden." ;
+ Text [ dutch ] = "Wijze van bepaling van het aantal dagen. Methode = 0 betekent VS-methode (NASD), Methode = 1 betekent Europese methode." ;
+ Text [ spanish ] = "Es un valor lógico que especifica el método de cálculo europeo (0) o americano (1)." ;
+ Text [ english_us ] = "Method used to form differences: Type = 0 denotes US method (NASD), Type = 1 denotes the European method." ;
+ Text[ chinese_simplified ] = "¹¹³É²îÊýµÄ·½Ê½¡£type = 0 ±íʾÃÀ¹ú·½Ê½(NASD)£¬ \ntype = 1 ±íʾŷÖÞ·½Ê½¡£";
+ Text[ russian ] = "Îïðåäåëÿåò, êàêîé ìåòîä äîëæåí èñïîëüçîâàòüñÿ ïðè âû÷èñëåíèÿõ: Àìåðèêàíñêèé (1) èëè Åâðîïåéñêèé (0).";
+ Text[ polish ] = "Okreœla wartoœæ logiczn¹ dla okreœlania sposobu kalkulacji. 1 oznacza metodê amerykañsk¹ (NASD), 0 - europejsk¹.";
+ Text[ japanese ] = "ŽZo•ûŽ®B•ûŽ®=0 •Ä‘(NASD)•ûŽ®¤ •ûŽ®=1 Ö°Û¯Êß•ûŽ®B";
+ Text[ chinese_traditional ] = "ºc¦¨®t¼Æªº¤è¦¡¡Ctype = 0 ªí¥Ü¬ü°ê¤è¦¡(NASD)¡M type = 1 ªí¥Ü¼Ú¬w¤è¦¡¡C";
+ Text[ arabic ] = "ØÑíÞÉ ÍÓÇÈ ÇáÝÇÑÞ. Type = 0 ÊÑãÒ Åáì ÇáØÑíÞÉ ÇáÃãÑíßíÉ (NASD) ¡ Type = 1 ÊÑãÒ Åáì ÇáØÑíÞÉ ÇáÃæÑæÈíÉ .";
+ Text[ dutch ] = "Wijze van bepaling van het aantal dagen. Methode = 0 betekent VS-methode (NASD), Methode = 1 betekent Europese methode.";
+ Text[ chinese_simplified ] = "¹¹³É²îÊýµÄ·½Ê½¡£type = 0 ±íʾÃÀ¹ú·½Ê½(NASD)£¬ \ntype = 1 ±íʾŷÖÞ·½Ê½¡£";
+ Text[ greek ] = "Ôýðïò õðïëïãéóìïý äéáöïñÜò: Ôýðïò = 0 óçìáßíåé ÌÝèïäïò Ç.Ð.Á. (NASD), Ôýðïò = 1 óçìáßíåé ÅõñùðáúêÞ ìÝèïäïò.";
+ Text[ korean ] = "¾ç½Ä¿¡ »ç¿ëµÈ ¸Þ¼ÒµåÀÇ Â÷ÀÌ : ŸÀÔ = 1 Àº US ¸Þ¼Òµå(NASD), ŸÀÔ = 0Àº À¯·´ ¸Þ¼Òµå¸¦ °¡¸®Åµ´Ï´Ù.";
+ Text[ turkish ] = "Fark hesaplama yöntemi: Tür = 1, ABD'de kullanýlan yöntem (NASD), tür = 0 ise Avrupa'da kullanýlan yöntemidir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function STUNDE #*=-
+ Resource SC_OPCODE_GET_HOUR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt zu dem Zeitwert die fortlaufende Stunde des Tags als Zahl (0 - 23)." ;
+ Text [ english ] = "Returns the hour corresponding to serial_number." ;
+ Text [ norwegian ] = "Bestimmt zu dem Zeitwert die fortlaufende Stunde des Tags als Zahl (0 - 23)." ;
+ Text [ italian ] = "Restituisce l'ora corrispondente a num_seriale, rappresentandola con un numero intero che può variare da 0 (00.00) a 23 (23.00)." ;
+ Text [ portuguese_brazilian ] = "Bestimmt zu dem Zeitwert die fortlaufende Stunde des Tags als Zahl (0 - 23)." ;
+ Text [ portuguese ] = "Devolve a hora correspondente a núm_série em forma de número inteiro (0 a 23)." ;
+ Text [ finnish ] = "Bestimmt zu dem Zeitwert die fortlaufende Stunde des Tags als Zahl (0 - 23)." ;
+ Text [ danish ] = "Omregner et serienummer til en time af døgnet som tal mellem 0 og 23." ;
+ Text [ french ] = "Renvoie l'heure (comprise entre 0 et 23) correspondant à l'argument numéro_série." ;
+ Text [ swedish ] = "Bestämmer timmen på dygnet som tal (0-23) för tidsvärdet." ;
+ Text [ dutch ] = "Converteert een tijdswaarde naar een uur van de dag dat wordt weergegeven als getal (0-23)." ;
+ Text [ spanish ] = "Devuelve la hora correspondiente al argumento núm_de_serie en forma de número (0 - 23)." ;
+ Text [ english_us ] = "Determines the sequential number of the hour of the day (0-23) for the time value." ;
+ Text[ chinese_simplified ] = "È·¶¨Óëʱ¼äÖµ¶ÔÓ¦µÄСʱÊý(0 - 23)¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò äàòó â ÷èñëîâîì ôîðìàòå (0 - 23) â ÷àñû.";
+ Text[ polish ] = "Podaje godzinê odpowiednio do numeru kolejnego (liczba ca³kowita od 0 do 23).";
+ Text[ japanese ] = "ŽžŠÔ‚̼رْl‚ª‚»‚Ì“ú‚̉½Žž‚É‚ ‚½‚é‚©‚ð”’l‚Å•Ô‚µ‚Ü‚·B(0-23)";
+ Text[ chinese_traditional ] = "Âà´«¼Æ¦r¦¨¤p®É¼Æ(0 - 23)¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞã ÊÓáÓáí Åáì ÓÇÚÉ Ýí íæã (ãä 0 Åáì 23).";
+ Text[ dutch ] = "Converteert een tijdswaarde naar een uur van de dag dat wordt weergegeven als getal (0-23).";
+ Text[ chinese_simplified ] = "È·¶¨Óëʱ¼äÖµ¶ÔÓ¦µÄСʱÊý(0 - 23)¡£";
+ Text[ greek ] = "Ïñßæåé ãéá ôçí ôéìÞ ÷ñüíïõ ôç äéáäï÷éêÞ þñá ôçò çìÝñáò ùò áñéèìü (0-23).";
+ Text[ korean ] = "½Ã°£ °ª¿¡ ´ëÇÑ ÇÏ·çÀÇ ½Ã°£(0-23)ÀÇ ¿¬¼ÓÀûÀÎ ¼ö¸¦ °áÁ¤";
+ Text[ turkish ] = "Saat deðerine göre, günün sürekli saatini tam sayý (0 - 23) olarak belirtir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_STUNDE );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "serial_number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num_seriale" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Núm_série" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Serienummer" ;
+ Text [ french ] = "Numéro_série" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Núm_de_serie" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "serial_number";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÓáÓá";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Interner Zeitwert." ;
+ Text [ english ] = "is the date-time code used for date and time calculations." ;
+ Text [ norwegian ] = "Interner Zeitwert." ;
+ Text [ italian ] = "valore di tempo interno." ;
+ Text [ portuguese_brazilian ] = "Interner Zeitwert." ;
+ Text [ portuguese ] = "é o código data-hora usado para calcular a data e a hora." ;
+ Text [ finnish ] = "Interner Zeitwert." ;
+ Text [ danish ] = "Intern klokkeslætsværdi." ;
+ Text [ french ] = "Le numéro de série de l'heure." ;
+ Text [ swedish ] = "Internt tidsvärde." ;
+ Text [ dutch ] = "Tijdswaarde als serieel getal." ;
+ Text [ spanish ] = "Es el código de fecha-hora que StarOffice Calc usa para los cálculos de fecha y hora." ;
+ Text [ english_us ] = "Internal time value" ;
+ Text[ chinese_simplified ] = "ϵͳÄÚ²¿Ê±¼äÖµ¡£";
+ Text[ russian ] = "Êîä äàòà-âðåìÿ, èñïîëüçóåìûé äëÿ âû÷èñëåíèé ñ äàòàìè è ïðåèîäàìè âðåìåíè.";
+ Text[ polish ] = "Kod daty-godziny u¿ywany do obliczenia daty i godziny.";
+ Text[ japanese ] = "ŽžŠÔ‚̼رْl";
+ Text[ chinese_traditional ] = "¨t²Î¤º³¡®É¶¡§Ç¼Æ¡C";
+ Text[ arabic ] = "ÞíãÉ æÞÊ ÏÇÎáíÉ.";
+ Text[ dutch ] = "Tijdswaarde als serieel getal.";
+ Text[ chinese_simplified ] = "ϵͳÄÚ²¿Ê±¼äÖµ¡£";
+ Text[ greek ] = "ÅóùôåñéêÞ ôéìÞ ÷ñüíïõ.";
+ Text[ korean ] = "³»ºÎ ½Ã°£ °ª";
+ Text[ turkish ] = "Ýç saat deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MINUTE #*=-
+ Resource SC_OPCODE_GET_MIN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt zu dem Zeitwert die fortlaufende Minute pro Stunde als Zahl (0 - 59)." ;
+ Text [ english ] = "Returns the minute corresponding to serial_number." ;
+ Text [ norwegian ] = "Bestimmt zu dem Zeitwert die fortlaufende Minute pro Stunde als Zahl (0 - 59)." ;
+ Text [ italian ] = "Restituisce i minuti corrispondenti a num_seriale (0 - 59)." ;
+ Text [ portuguese_brazilian ] = "Bestimmt zu dem Zeitwert die fortlaufende Minute pro Stunde als Zahl (0 - 59)." ;
+ Text [ portuguese ] = "Devolve o minuto correspondente a núm_série na forma de número inteiro de 0 a 59." ;
+ Text [ finnish ] = "Bestimmt zu dem Zeitwert die fortlaufende Minute pro Stunde als Zahl (0 - 59)." ;
+ Text [ danish ] = "Omregner et serienummer til et minut i timen som tal mellem 0 og 59." ;
+ Text [ french ] = "Renvoie la minute (comprise entre 0 et 59) correspondant à l'argument numéro_série." ;
+ Text [ swedish ] = "Bestämmer minuten per timme som tal (0-59) för tidsvärdet." ;
+ Text [ dutch ] = "Converteert een tijdswaarde naar een minuut, die wordt weergegeven als getal (0-59)." ;
+ Text [ spanish ] = "Devuelve el minuto que corresponde a núm_de_serie en forma de número (0 - 59)." ;
+ Text [ english_us ] = "Determines the sequential number for the minute of the hour (0-59) for the time value." ;
+ Text[ chinese_simplified ] = "È·¶¨Óëʱ¼äÖµ¶ÔÓ¦µÄ·ÖÖÓÊý(0 - 59)¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò äàòó â ÷èñëîâîì ôîðìàòå (0 - 59) â ìèíóòû.";
+ Text[ polish ] = "Podaje minutê odpowiadaj¹c¹ numerowi kolejnemu jako liczbê (0 - 59).";
+ Text[ japanese ] = "ŽžŠÔ‚̼رْl‚ª‚»‚ÌŽžŠÔ‚̉½•ª‚É‚ ‚½‚é‚©‚ð”’l‚Å•Ô‚µ‚Ü‚·B(0-59)";
+ Text[ chinese_traditional ] = "Âà´«¼Æ¦r¦¨¥÷ÄÁ¼Æ(0 - 59)¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞã ÊÓáÓáí Åáì ÏÞíÞÉ (ãä 0 Åáì 59).";
+ Text[ dutch ] = "Converteert een tijdswaarde naar een minuut, die wordt weergegeven als getal (0-59).";
+ Text[ chinese_simplified ] = "È·¶¨Óëʱ¼äÖµ¶ÔÓ¦µÄ·ÖÖÓÊý(0 - 59)¡£";
+ Text[ greek ] = "Ïñßæåé ãéá ôçí ôéìÞ ÷ñüíïõ ôï äéáäï÷éêü ëåðôü áíÜ þñá ùò áñéèìü (0-59).";
+ Text[ korean ] = "½Ã°£ °ª¿¡ ´ëÇÑ ÇÑ ½Ã°£ÀÇ ºÐ(0-59)ÀÇ ¿¬¼ÓÀûÀÎ ¼ö¸¦ °áÁ¤.";
+ Text[ turkish ] = "Saat deðerine göre, saatin sürekli dakika deðerini tam sayý (0 - 59) olarak belirtir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_MINUTE );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "serial_number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num_seriale" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Núm_série" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Serienummer" ;
+ Text [ french ] = "Numéro_série" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Núm_de_serie" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "serial_number";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÓáÓá";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Saat";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Interner Zeitwert." ;
+ Text [ english ] = "is the date-time code used for date and time calculations." ;
+ Text [ norwegian ] = "Interner Zeitwert." ;
+ Text [ italian ] = "numero interno per il tempo." ;
+ Text [ portuguese_brazilian ] = "Interner Zeitwert." ;
+ Text [ portuguese ] = "é o código data-hora usado para calcular a data e a hora." ;
+ Text [ finnish ] = "Interner Zeitwert." ;
+ Text [ danish ] = "Intern klokkeslætsværdi." ;
+ Text [ french ] = "Le numéro de série de l'heure." ;
+ Text [ swedish ] = "Internt tidsvärde." ;
+ Text [ dutch ] = "Tijdswaarde als serieel getal." ;
+ Text [ spanish ] = "Es el código de fecha-hora que StarOffice Calc usa para los cálculos de fecha y hora." ;
+ Text [ english_us ] = "Internal time value." ;
+ Text[ chinese_simplified ] = "ϵͳÄÚ²¿Ê±¼äÖµ¡£";
+ Text[ russian ] = "Êîä äàòà-âðåìÿ, èñïîëüçóåìûé äëÿ âû÷èñëåíèé ñ äàòàìè è ïðåèîäàìè âðåìåíè.";
+ Text[ polish ] = "Kod daty-godziny u¿ywany do obliczenia daty i godziny.";
+ Text[ japanese ] = "ŽžŠÔ‚̼رْl";
+ Text[ chinese_traditional ] = "¨t²Î¤º³¡®É¶¡§Ç¼Æ¡C";
+ Text[ arabic ] = "ÞíãÉ æÞÊ ÏÇÎáíÉ.";
+ Text[ dutch ] = "Tijdswaarde als serieel getal.";
+ Text[ chinese_simplified ] = "ϵͳÄÚ²¿Ê±¼äÖµ¡£";
+ Text[ greek ] = "ÅóùôåñéêÞ ôéìÞ ÷ñüíïõ.";
+ Text[ korean ] = "³»ºÎ ½Ã°£ °ª";
+ Text[ turkish ] = "Ýç saat deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MONAT #*=-
+ Resource SC_OPCODE_GET_MONTH
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt zu dem Datumswert den fortlaufenden Monat im Jahr als Zahl (1 - 12)." ;
+ Text [ english ] = "Returns the month corresponding to serial_number." ;
+ Text [ norwegian ] = "Bestimmt zu dem Datumswert den fortlaufenden Monat im Jahr als Zahl (1 - 12)." ;
+ Text [ italian ] = "Restituisce il mese corrispondente a num_seriale." ;
+ Text [ portuguese_brazilian ] = "Bestimmt zu dem Datumswert den fortlaufenden Monat im Jahr als Zahl (1 - 12)." ;
+ Text [ portuguese ] = "Devolve o mês correspondente a núm_série na forma de número inteiro, entre 1 (Janeiro) e 12 (Dezembro)." ;
+ Text [ finnish ] = "Bestimmt zu dem Datumswert den fortlaufenden Monat im Jahr als Zahl (1 - 12)." ;
+ Text [ danish ] = "Omregner serienummeret til en måned som et tal mellem 1 og 12." ;
+ Text [ french ] = "Renvoie le mois de l'année (compris entre 1 et 12) correspondant à l'argument numéro_série." ;
+ Text [ swedish ] = "Bestämmer månaden på året som tal (1-12) för datumvärdet." ;
+ Text [ dutch ] = "Converteert een tijdswaarde naar een maand als getal (1 - 12)." ;
+ Text [ spanish ] = "Devuelve el mes que corresponde a núm_de_serie en forma de número (1 - 12)." ;
+ Text [ english_us ] = "Determines the sequential number of a month of the year (1-12) for the date value." ;
+ Text[ chinese_simplified ] = "È·¶¨Óëʱ¼äÖµ¶ÔÓ¦µÄÔ·ÝÊý(1 - 12)¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò äàòó â ÷èñëîâîì ôîðìàòå â ìåñÿö (÷èñëî îò 1 äî 12).";
+ Text[ polish ] = "Podaje miesi¹c odpowiadaj¹cy numerowi kolejnemu jako liczbê (1 - 12).";
+ Text[ japanese ] = "“ú•t‚̼رْl‚ª‚»‚Ì”N‚̉½ŒŽ‚É‚ ‚½‚é‚©‚ð”’l‚Å•Ô‚µ‚Ü‚·B(1-12)";
+ Text[ chinese_traditional ] = "Âà´«¼Æ¦r¦¨¤ë¥÷¼Æ(1 - 12)¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞã ÊÓáÓáí Åáì ÔåÑ (ãä 1 Åáì 12)";
+ Text[ dutch ] = "Converteert een tijdswaarde naar een maand als getal (1 - 12).";
+ Text[ chinese_simplified ] = "È·¶¨Óëʱ¼äÖµ¶ÔÓ¦µÄÔ·ÝÊý(1 - 12)¡£";
+ Text[ greek ] = "Ïñßæåé ãéá ôçí ôéìÞ çìåñïìçíßáò ôïí äéáäï÷éêü ìÞíá ôïõ Ýôïõò ùò áñéèìü (1-12).";
+ Text[ korean ] = "ÀÏÀÚ °ª¿¡ ´ëÇÑ ÀÏ ³âÀÇ ¿ù(1-12)ÀÇ ¿¬¼ÓÀûÀÎ ¼ö¸¦ °áÁ¤";
+ Text[ turkish ] = "Tarih deðerine göre yýlýn sürekli ay deðerini (1 - 12) tam sayý olarak belirtir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_MONAT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "serial_number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num_seriale" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Núm_série" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Serienummer" ;
+ Text [ french ] = "Numéro_série" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Núm_de_serie" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Kolejna_liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "serial_number";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÓáÓá";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Interne Zahl des Datums." ;
+ Text [ english ] = "is the date-time code used for date and time calculations." ;
+ Text [ norwegian ] = "Interne Zahl des Datums." ;
+ Text [ italian ] = "numero interno della data." ;
+ Text [ portuguese_brazilian ] = "Interne Zahl des Datums." ;
+ Text [ portuguese ] = "é o código data-hora usado para calcular a data e a hora." ;
+ Text [ finnish ] = "Interne Zahl des Datums." ;
+ Text [ danish ] = "Intern datoværdi." ;
+ Text [ french ] = "Le numéro de série de la date." ;
+ Text [ swedish ] = "Internt tal för datum." ;
+ Text [ dutch ] = "Datum als serieel getal." ;
+ Text [ spanish ] = "Es el código de fecha-hora que StarOffice Calc usa para los cálculos de fecha y hora." ;
+ Text [ english_us ] = "The internal number of the date." ;
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄϵͳÄÚ²¿ÐòÊý¡£";
+ Text[ russian ] = "Êîä äàòà-âðåìÿ, èñïîëüçóåìûé äëÿ âû÷èñëåíèé ñ äàòàìè è ïðåèîäàìè âðåìåíè.";
+ Text[ polish ] = "Kod daty-godziny u¿ywany do obliczenia daty i godziny.";
+ Text[ japanese ] = "“ú•t‚̼رْl";
+ Text[ chinese_traditional ] = "¤é´Áªº¨t²Î¤º³¡¼Æ¦r¡C";
+ Text[ arabic ] = "ÑÞã ÏÇÎáí ááÊÇÑíÎ.";
+ Text[ dutch ] = "Datum als serieel getal.";
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄϵͳÄÚ²¿ÐòÊý¡£";
+ Text[ greek ] = "is the date-time code used for date and time calculations.";
+ Text[ korean ] = "³»ºÎ ÀÏÀÚÀÇ ¼ö";
+ Text[ turkish ] = "Ýç tarih sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function JETZT #*=-
+ Resource SC_OPCODE_GET_ACT_TIME
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die aktuelle Zeit des Computers." ;
+ Text [ english ] = "Returns the serial number of the current date and time." ;
+ Text [ norwegian ] = "Bestimmt die aktuelle Zeit des Computers." ;
+ Text [ italian ] = "Restituisce il numero seriale del tempo corrente." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die aktuelle Zeit des Computers." ;
+ Text [ portuguese ] = "Determina o número de série da data e hora correntes." ;
+ Text [ finnish ] = "Bestimmt die aktuelle Zeit des Computers." ;
+ Text [ danish ] = "Beregner serienummeret for computerens aktuelle klokkeslæt." ;
+ Text [ french ] = "Détermine le numéro de série et de l'heure courante." ;
+ Text [ swedish ] = "Bestämmer den aktuella tiden för datorn." ;
+ Text [ dutch ] = "Bepaalt de actuele tijd van de computer." ;
+ Text [ spanish ] = "Determina la hora actual del ordenador." ;
+ Text [ english_us ] = "Determines the current time of the computer." ;
+ Text[ chinese_simplified ] = "È·¶¨¼ÆËã»úÄÚ²¿Ê±Öӵĵ±Ç°Ê±¼ä¡£";
+ Text[ russian ] = "Îïðåäåëÿåò òåêóùåå âðåìÿ êîìïüþòåðà.";
+ Text[ polish ] = "Podaje wartoœæ kolejnego numeru bie¿¹cej daty i czasu.";
+ Text[ japanese ] = "ºÝËß­°À‚ÌŒ»Ý‚ÌŽžŠÔ‚̼رْl‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¹q¸£¤º³¡®ÉÄÁªº·í«e®É¶¡¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÇáæÞÊ ÇáÍÇáí ááßãÈíæÊÑ.";
+ Text[ dutch ] = "Bepaalt de actuele tijd van de computer.";
+ Text[ chinese_simplified ] = "È·¶¨¼ÆËã»úÄÚ²¿Ê±Öӵĵ±Ç°Ê±¼ä¡£";
+ Text[ greek ] = "Êáèïñßæåé ôçí ôñÝ÷ïõóá çìåñïìçíßá ôïõ õðïëïãéóôÞ.";
+ Text[ korean ] = "ÄÄÇ»ÅÍÀÇ ÇöÀç ÀÏÀÚ¸¦ °áÁ¤";
+ Text[ turkish ] = "Bilgisayarýn güncel saatini belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_JETZT );
+ 0;
+ };
+ };
+ // -=*# Resource for function SEKUNDE #*=-
+ Resource SC_OPCODE_GET_SEC
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt zu dem Zeitwert die fortlaufende Sekunde in einer Minute als Zahl (0 - 59)." ;
+ Text [ english ] = "Returns the second corresponding to serial_number." ;
+ Text [ norwegian ] = "Bestimmt zu dem Zeitwert die fortlaufende Sekunde in einer Minute als Zahl (0 - 59)." ;
+ Text [ italian ] = "Restituisce i secondi corrispondenti a num_seriale (0 - 59)." ;
+ Text [ portuguese_brazilian ] = "Bestimmt zu dem Zeitwert die fortlaufende Sekunde in einer Minute als Zahl (0 - 59)." ;
+ Text [ portuguese ] = "Devolve o minuto correspondente a núm_série na forma de número inteiro de 0 a 59." ;
+ Text [ finnish ] = "Bestimmt zu dem Zeitwert die fortlaufende Sekunde in einer Minute als Zahl (0 - 59)." ;
+ Text [ danish ] = "Omregner et serienummer til et sekund i minuttet som tal mellem 0 og 59." ;
+ Text [ french ] = "Renvoie la seconde (comprise entre 0 et 59) correspondant à l'argument numéro_série." ;
+ Text [ swedish ] = "Bestämmer sekunden i en minut som tal (0-59) för tidsvärdet." ;
+ Text [ dutch ] = "Converteert een tijdswaarde naar een seconde, die wordt weergegeven als getal (0 - 59)." ;
+ Text [ spanish ] = "Devuelve los segundos que corresponden al núm_de_serie en forma de número (0 - 59)." ;
+ Text [ english_us ] = "Determines the sequential number of the second of a minute (0-59) for the time value." ;
+ Text[ chinese_simplified ] = "È·¶¨Óëʱ¼äÖµ¶ÔÓ¦µÄÃëÖÓÊý(0 - 59)¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò äàòó â ÷èñëîâîì ôîðìàòå â ñåêóíäû (÷èñëî îò 0 äî 59).";
+ Text[ polish ] = "Podaje w wyniku sekundê, której przyporz¹dkowany jest numer_kolejny (liczba ca³kowita w zakresie od 0 do 59).";
+ Text[ japanese ] = "ŽžŠÔ‚̼رْl‚ª‚»‚Ì•ª‚̉½•b‚É‚ ‚½‚é‚©‚ð”’l‚Å•Ô‚µ‚Ü‚·B(0-59)";
+ Text[ chinese_traditional ] = "Âà´«¼Æ¦r¦¨¬íÄÁ¼Æ(0 - 59)¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞã ÊÓáÓáí Åáì ËÇäíÉ Ýí ÏÞíÞÉ (ãä 0 Åáì 59).";
+ Text[ dutch ] = "Converteert een tijdswaarde naar een seconde, die wordt weergegeven als getal (0 - 59).";
+ Text[ chinese_simplified ] = "È·¶¨Óëʱ¼äÖµ¶ÔÓ¦µÄÃëÖÓÊý(0 - 59)¡£";
+ Text[ greek ] = "Ïñßæåé ãéá ôçí ôéìÞ ÷ñüíïõ ôï äéáäï÷éêü äåõôåñüëåðôï áíÜ ëåðôü ùò áñéèìü (0-59).";
+ Text[ korean ] = "½Ã°£ °ª¿¡ ´ëÇÑ ÀÏ ºÐÀÇ ÃÊ(0-59)ÀÇ ¿¬¼ÓÀûÀÎ ¼ö¸¦ °áÁ¤.";
+ Text[ turkish ] = "Saat deðerine göre, dakikanýn sürekli saniye deðerini tam sayý (0 - 59) olarak belirtir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_SEKUNDE );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "serial_number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num_seriale" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Núm_série" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Serienummer" ;
+ Text [ french ] = "Numéro_série" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Núm_de_serie" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Kolejna_liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "serial_number";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÓáÓá";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Interner Zeitwert." ;
+ Text [ english ] = "is the date-time code used for date and time calculations." ;
+ Text [ norwegian ] = "Interner Zeitwert." ;
+ Text [ italian ] = "numero interno per il tempo." ;
+ Text [ portuguese_brazilian ] = "Interner Zeitwert." ;
+ Text [ portuguese ] = "é o código data-hora usado para calcular a data e a hora." ;
+ Text [ finnish ] = "Interner Zeitwert." ;
+ Text [ danish ] = "Intern klokkeslætsværdi." ;
+ Text [ french ] = "Le numéro de série de l'heure." ;
+ Text [ swedish ] = "Internt tidsvärde." ;
+ Text [ dutch ] = "Tijdswaarde als serieel getal." ;
+ Text [ spanish ] = "Es el código de fecha-hora que StarOffice Calc usa para los cálculos de fecha y hora." ;
+ Text [ english_us ] = "The internal time value." ;
+ Text[ chinese_simplified ] = "ϵͳÄÚ²¿Ê±¼äÖµ¡£";
+ Text[ russian ] = "Êîä äàòà-âðåìÿ, èñïîëüçóåìûé äëÿ âû÷èñëåíèé ñ äàòàìè è ïðåèîäàìè âðåìåíè.";
+ Text[ polish ] = "Kod daty-godziny u¿ywany do obliczenia daty i godziny.";
+ Text[ japanese ] = "ŽžŠÔ‚̼رْl";
+ Text[ chinese_traditional ] = "¨t²Î¤º³¡®É¶¡§Ç¼Æ¡C";
+ Text[ arabic ] = "ÞíãÉ æÞÊ ÏÇÎáíÉ.";
+ Text[ dutch ] = "Tijdswaarde als serieel getal.";
+ Text[ chinese_simplified ] = "ϵͳÄÚ²¿Ê±¼äÖµ¡£";
+ Text[ greek ] = "ÅóùôåñéêÞ ôéìÞ ÷ñüíïõ.";
+ Text[ korean ] = "³»ºÎ ½Ã°£ °ª";
+ Text[ turkish ] = "Ýç saat sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZEIT #*=-
+ Resource SC_OPCODE_GET_TIME
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Bestimmt einen Zeitwert aus Zahlangaben für Stunde, Minute und Sekunde : Bestimmt einen Zeitwert aus Zahlangaben f³r Stunde, Minute und Sekunde */
+ Text = "Bestimmt einen Zeitwert aus Zahlangaben für Stunde, Minute und Sekunde" ;
+ Text [ english ] = "Returns the serial number of a particular time." ;
+ Text [ norwegian ] = "Bestimmt einen Zeitwert aus Zahlangaben für Stunde, Minute und Sekunde" ;
+ Text [ italian ] = "Restituisce il numero seriale di un'ora specifica." ;
+ Text [ portuguese_brazilian ] = "Bestimmt einen Zeitwert aus Zahlangaben für Stunde, Minute und Sekunde" ;
+ Text [ portuguese ] = "Devolve o núm_série para uma hora determinada em hora, minutos e segundos." ;
+ Text [ finnish ] = "Bestimmt einen Zeitwert aus Zahlangaben für Stunde, Minute und Sekunde" ;
+ Text [ danish ] = "Beregner serienummeret for et klokkeslæt angivet i time, minut og sekund" ;
+ Text [ french ] = "Renvoie le numéro de série pour une heure exprimée en heures, minutes et secondes." ;
+ Text [ swedish ] = "Bestämmer ett tidsvärde från talangivelser för timme, minut och sekund." ;
+ Text [ dutch ] = "Geeft de tijdswaarde weer van uren, minuten en seconden die zijn weergegeven als getallen" ;
+ Text [ spanish ] = "Devuelve el número de serie para una hora determinada en hora, minutos y segundos" ;
+ Text [ english_us ] = "Determines a time value from the details for hour, minute and second." ;
+ Text[ chinese_simplified ] = "Éú³ÉÒ»¸öÓÉСʱ£¬·ÖÖÓºÍÃë×é³ÉµÄʱ¼äÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò äàòó â ÷èñëîâîì ôîðìàòå äëÿ çàäàííîãî âðåìåíè.";
+ Text[ polish ] = "Zwraca numer kolejny odpowiadaj¹cy podanej dacie oznaczaj¹cy godzinê, minutê i sekundê.";
+ Text[ japanese ] = "ŽžŠÔ¤•ª¤•b‚ðŽw’肵‚ÄŽžŠÔ‚̼رْl‚ð‹‚ß‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó¥Ñ¤p®É¡M¤ÀÄÁ©M¬í²Õ¦¨ªº®É¶¡¼Æ­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÑÞã ÇáÐí íãËá æÞÊÇð ãÚíäÇð.";
+ Text[ dutch ] = "Geeft de tijdswaarde weer van uren, minuten en seconden die zijn weergegeven als getallen";
+ Text[ chinese_simplified ] = "Éú³ÉÒ»¸öÓÉСʱ£¬·ÖÖÓºÍÃë×é³ÉµÄʱ¼äÖµ¡£";
+ Text[ greek ] = "Ïñßæåé ìéá ôéìÞ ÷ñüíïõ áðü ôá áñéèìçôéêÜ äåäïìÝíá ãéá þñá, ëåðôü êáé äåõôåñüëåðôï";
+ Text[ korean ] = "ÀÚ¼¼ÇÑ ½Ã,ºÐ ±×¸®°í ÃÊ·Î ºÎÅÍ ½Ã°£ °ªÀ» °áÁ¤";
+ Text[ turkish ] = "Saat, dakika ve saniye sayý deðerleri için bir saat deðeri oluþturur";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_ZEIT );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Stunde" ;
+ Text [ english ] = "hour" ;
+ Text [ norwegian ] = "Stunde" ;
+ Text [ italian ] = "ora" ;
+ Text [ portuguese_brazilian ] = "Stunde" ;
+ Text [ portuguese ] = "Hora" ;
+ Text [ finnish ] = "Stunde" ;
+ Text [ danish ] = "Time" ;
+ Text [ french ] = "Heure" ;
+ Text [ swedish ] = "timme" ;
+ Text [ dutch ] = "Uur" ;
+ Text [ spanish ] = "Hora" ;
+ Text [ english_us ] = "hour" ;
+ Text[ chinese_simplified ] = "hour";
+ Text[ russian ] = "×àñ";
+ Text[ polish ] = "Godzina";
+ Text[ japanese ] = "ŽžŠÔ";
+ Text[ chinese_traditional ] = "hour";
+ Text[ arabic ] = "Hour";
+ Text[ dutch ] = "Uur";
+ Text[ chinese_simplified ] = "hour";
+ Text[ greek ] = "¿ñá";
+ Text[ korean ] = "½Ã°£";
+ Text[ turkish ] = "Saat";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze Zahl für die Stunde. : Ganze Zahl f³r die Stunde. */
+ Text = "Ganze Zahl für die Stunde." ;
+ Text [ english ] = "is a number from 0 to 23 representing the hour." ;
+ Text [ norwegian ] = "Ganze Zahl für die Stunde." ;
+ Text [ italian ] = "è un numero intero compreso tra 0 e 23 che rappresenta l'ora." ;
+ Text [ portuguese_brazilian ] = "Ganze Zahl für die Stunde." ;
+ Text [ portuguese ] = "é um número inteiro entre 0 e 23 que representa a hora." ;
+ Text [ finnish ] = "Ganze Zahl für die Stunde." ;
+ Text [ danish ] = "Heltal som svarer til timen." ;
+ Text [ french ] = "Nombre entier pour l'heure." ;
+ Text [ swedish ] = "Heltal för timmen." ;
+ Text [ dutch ] = "Resulteert in een geheel getal tussen 0 en 23 voor uren." ;
+ Text [ spanish ] = "Es un número entero que representa las horas." ;
+ Text [ english_us ] = "The integer for the hour." ;
+ Text[ chinese_simplified ] = "СʱÊý±ØÐëΪÕûÊý¡£";
+ Text[ russian ] = "Öåëîå ÷èñëî, ïðåäñòàâëÿþùåå ÷àñ.";
+ Text[ polish ] = "Liczby ca³kowite pomiêdzy 0 i 23 dla wyra¿enia godziny.";
+ Text[ japanese ] = "0‚©‚ç23‚ÌŽžŠÔ‚Ì”’l";
+ Text[ chinese_traditional ] = "¤p®É¼Æ¬°¾ã¼Æ¡C";
+ Text[ arabic ] = "ÑÞã ÕÍíÍ ãä 0 Åáì 23 íãËá ÇáÓÇÚÉ.";
+ Text[ dutch ] = "Resulteert in een geheel getal tussen 0 en 23 voor uren.";
+ Text[ chinese_simplified ] = "СʱÊý±ØÐëΪÕûÊý¡£";
+ Text[ greek ] = "ÁêÝñáéïò áñéèìüò ãéá ôçí þñá.";
+ Text[ korean ] = "½Ã°£¿¡ ´ëÇÑ Á¤¼ö";
+ Text[ turkish ] = "Saat için tamsayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Minute" ;
+ Text [ english ] = "minute" ;
+ Text [ norwegian ] = "Minute" ;
+ Text [ italian ] = "minuto" ;
+ Text [ portuguese_brazilian ] = "Minute" ;
+ Text [ portuguese ] = "Minuto" ;
+ Text [ finnish ] = "Minute" ;
+ Text [ danish ] = "Minut" ;
+ Text [ french ] = "Minute" ;
+ Text [ swedish ] = "minut" ;
+ Text [ dutch ] = "Minuut" ;
+ Text [ spanish ] = "Minuto" ;
+ Text [ english_us ] = "minute" ;
+ Text[ chinese_simplified ] = "minute";
+ Text[ russian ] = "Ìèíóòû";
+ Text[ polish ] = "Minuta";
+ Text[ japanese ] = "•ª";
+ Text[ chinese_traditional ] = "minute";
+ Text[ arabic ] = "Minute";
+ Text[ dutch ] = "Minuut";
+ Text[ chinese_simplified ] = "minute";
+ Text[ greek ] = "Minute";
+ Text[ korean ] = "ºÐ";
+ Text[ turkish ] = "Dakika";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze Zahl für die Minute. : Ganze Zahl f³r die Minute. */
+ Text = "Ganze Zahl für die Minute." ;
+ Text [ english ] = "is a number from 0 to 59 representing the minute." ;
+ Text [ norwegian ] = "Ganze Zahl für die Minute." ;
+ Text [ italian ] = "è un numero intero compreso tra 0 e 59 che rappresenta i minuti." ;
+ Text [ portuguese_brazilian ] = "Ganze Zahl für die Minute." ;
+ Text [ portuguese ] = "é um número inteiro entre 0 e 59 que representa o minuto." ;
+ Text [ finnish ] = "Ganze Zahl für die Minute." ;
+ Text [ danish ] = "Heltal som svarer til minuttet." ;
+ Text [ french ] = "Nombre entier pour les minutes." ;
+ Text [ swedish ] = "Heltal för minuten." ;
+ Text [ dutch ] = "Resulteert in een geheel getal tussen 0 en 59 voor minuten." ;
+ Text [ spanish ] = "Es un número entero que representa los minutos." ;
+ Text [ english_us ] = "The integer for the minute." ;
+ Text[ chinese_simplified ] = "·ÖÖÓÊý±ØÐëΪÕûÊý¡£";
+ Text[ russian ] = "Öåëîå ÷èñëî, ïðåäñòàâëÿþùåå ìèíóòó.";
+ Text[ polish ] = "Liczby ca³kowite pomiêdzy 0 i 59 dla wyra¿enia minuty.";
+ Text[ japanese ] = "0‚©‚ç59‚Ì•ª‚Ì”’l";
+ Text[ chinese_traditional ] = "¤ÀÄÁ¼Æ¬°¾ã¼Æ¡C";
+ Text[ arabic ] = "ÑÞã ÕÍíÍ ãä 0 Åáì 59 íãËá ÇáÏÞíÞÉ.";
+ Text[ dutch ] = "Resulteert in een geheel getal tussen 0 en 59 voor minuten.";
+ Text[ chinese_simplified ] = "·ÖÖÓÊý±ØÐëΪÕûÊý¡£";
+ Text[ greek ] = "ÁêÝñáéïò áñéèìüò ãéá ôï ëåðôü.";
+ Text[ korean ] = "ºÐ¿¡ ´ëÇÑ Á¤¼ö";
+ Text[ turkish ] = "Dakika için tamsayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Sekunde" ;
+ Text [ english ] = "second" ;
+ Text [ norwegian ] = "Sekunde" ;
+ Text [ italian ] = "secondo" ;
+ Text [ portuguese_brazilian ] = "Sekunde" ;
+ Text [ portuguese ] = "Segundo" ;
+ Text [ finnish ] = "Sekunde" ;
+ Text [ danish ] = "Sekund" ;
+ Text [ french ] = "Seconde" ;
+ Text [ swedish ] = "sekund" ;
+ Text [ dutch ] = "Seconde" ;
+ Text [ spanish ] = "Segundo" ;
+ Text [ english_us ] = "second" ;
+ Text[ chinese_simplified ] = "second";
+ Text[ russian ] = "Ñåêóíäû";
+ Text[ polish ] = "Sekunda";
+ Text[ japanese ] = "•b";
+ Text[ chinese_traditional ] = "second";
+ Text[ arabic ] = "Second";
+ Text[ dutch ] = "Seconde";
+ Text[ chinese_simplified ] = "second";
+ Text[ greek ] = "Äåõôåñüëåðôo";
+ Text[ korean ] = "2¹ø°";
+ Text[ turkish ] = "Saniye";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ganze Zahl für die Sekunde. : Ganze Zahl f³r die Sekunde. */
+ Text = "Ganze Zahl für die Sekunde." ;
+ Text [ english ] = "is a number from 0 to 59 representing the second." ;
+ Text [ norwegian ] = "Ganze Zahl für die Sekunde." ;
+ Text [ italian ] = "è un numero intero compreso tra 0 e 59 che rappresenta i secondi." ;
+ Text [ portuguese_brazilian ] = "Ganze Zahl für die Sekunde." ;
+ Text [ portuguese ] = "é um número inteiro entre 0 e 59 que representa o segundo." ;
+ Text [ finnish ] = "Ganze Zahl für die Sekunde." ;
+ Text [ danish ] = "Heltal som svarer til sekundet." ;
+ Text [ french ] = "Nombre entier pour les secondes." ;
+ Text [ swedish ] = "Heltal för sekunden." ;
+ Text [ dutch ] = "Resulteert in een geheel getal tussen 0 en 59 voor seconden." ;
+ Text [ spanish ] = "Es un número entero que representa los segundos." ;
+ Text [ english_us ] = "The integer for the second." ;
+ Text[ chinese_simplified ] = "ÃëÊý±ØÐëΪÕûÊý¡£";
+ Text[ russian ] = "Öåëîå ÷èñëî, ïðåäñòàâëÿþùåå ñåêóíäó.";
+ Text[ polish ] = "Liczby ca³kowite pomiêdzy 0 i 59 dla wyra¿enia sekundy.";
+ Text[ japanese ] = "0‚©‚ç59‚Ì•b‚Ì”’l";
+ Text[ chinese_traditional ] = "¬í¼Æ¬°¾ã¼Æ¡C";
+ Text[ arabic ] = "ÑÞã ÕÍíÍ ãä 0 Åáì 59 íãËá ÇáËÇäíÉ.";
+ Text[ dutch ] = "Resulteert in een geheel getal tussen 0 en 59 voor seconden.";
+ Text[ chinese_simplified ] = "ÃëÊý±ØÐëΪÕûÊý¡£";
+ Text[ greek ] = "ÁêÝñáéïò áñéèìüò ãéá ôï äåõôåñüëåðôï.";
+ Text[ korean ] = "ÃÊ¿¡ ´ëÇÑ Á¤¼ö";
+ Text[ turkish ] = "Saniye için tamsayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZEITWERT #*=-
+ Resource SC_OPCODE_GET_TIME_VALUE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Bestimmt aus einem Text in einem möglichen Zeiteingabeformat eine fortlaufende Zahl. : Bestimmt aus einem Text in einem m÷glichen Zeiteingabeformat eine fortlaufende Zahl. */
+ Text = "Bestimmt aus einem Text in einem möglichen Zeiteingabeformat eine fortlaufende Zahl." ;
+ Text [ english ] = "Returns the serial number of the time represented by time_text." ;
+ Text [ norwegian ] = "Bestimmt aus einem Text in einem möglichen Zeiteingabeformat eine fortlaufende Zahl." ;
+ Text [ italian ] = "Restituisce il numero seriale dell'ora rappresentata da ora." ;
+ Text [ portuguese_brazilian ] = "Bestimmt aus einem Text in einem möglichen Zeiteingabeformat eine fortlaufende Zahl." ;
+ Text [ portuguese ] = "Converte uma hora em forma de texto para um núm_série. " ;
+ Text [ finnish ] = "Bestimmt aus einem Text in einem möglichen Zeiteingabeformat eine fortlaufende Zahl." ;
+ Text [ danish ] = "Omregner et klokkeslæt i form af tekst til et serienummer." ;
+ Text [ french ] = "Convertit une heure représentée sous forme de texte en numéro de série." ;
+ Text [ swedish ] = "Bestämmer ett löpande tal från en text i ett möjligt tidsinmatningsformat." ;
+ Text [ dutch ] = "Converteert een datum in de vorm van tekst te naar een serieel getal." ;
+ Text [ spanish ] = "Devuelve el número de serie de la hora representada por texto_de_hora." ;
+ Text [ english_us ] = "Returns a sequential number for a text shown in a possible time entry format." ;
+ Text[ chinese_simplified ] = "ת»»Îı¾ÀàÐ͵Äʱ¼äÖµ³ÉΪÐòÁÐʱ¼äÖµ¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò âðåìÿ èç òåêñòîâîãî ôîðìàòà â äàòó â ÷èñëîâîì ôîðìàòå.";
+ Text[ polish ] = "Zamienia tekst w formacie wprowadzania czasu na kolejn¹ liczbê.";
+ Text[ japanese ] = "ŽžŠÔ‚ð•\\‚·•¶Žš—ñ‚ð¼Ø±Ù’l‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦r¤¸®É¶¡®æ¦¡Âà´«¦¨§Ç¦C¼Æ®É¶¡®æ¦¡¡C";
+ Text[ arabic ] = "ÊÍæá ÇáæÞÊ Úáì Ôßá äÕ Åáì ÑÞã ÊÓáÓáí.";
+ Text[ dutch ] = "Converteert een datum in de vorm van tekst te naar een serieel getal.";
+ Text[ chinese_simplified ] = "ת»»Îı¾ÀàÐ͵Äʱ¼äÖµ³ÉΪÐòÁÐʱ¼äÖµ¡£";
+ Text[ greek ] = "Ïñßæåé ãéá Ýíá êåßìåíï áðü ìéá ðéèáíÞ ìïñöÞ åéóáãùãÞò ÷ñüíïõ Ýíáí óõíå÷üìåíï áñéèìü.";
+ Text[ korean ] = "°¡´ÉÇÑ ½Ã°£ Ç׸ñ ¼­½Ä¿¡¼­ º¸¿©Áö´Â ÅؽºÆ®¿¡ ´ëÇÑ ¿¬¼ÓÀûÀÎ ¼ö¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Muhtemel bir saat formatýndaki bir metinden iç sayý üretir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_ZEITWERT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "time_text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "ora" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto_hora" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "Texto_de_hora" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "time_text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "ŽžŠÔ•¶Žš—ñ";
+ Text[ chinese_traditional ] = "time_text";
+ Text[ arabic ] = "Time_text";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "time_text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein in Anführungszeichen eingeschlossener Text, der eine Zeitangabe in einem StarCalc Zeitformat wiedergibt. : Ein in Anf³hrungszeichen eingeschlossener Text, der eine Zeitangabe in einem StarCalc Zeitformat wiedergibt. */
+ Text = "Ein in Anführungszeichen eingeschlossener Text, der eine Zeitangabe in einem StarOffice Zeitformat wiedergibt." ;
+ Text [ english ] = "is a text string that gives a time in any one of the StarCalc time formats" ;
+ Text [ norwegian ] = "Ein in Anführungszeichen eingeschlossener Text, der eine Zeitangabe in einem StarCalc Zeitformat wiedergibt." ;
+ Text [ italian ] = "il testo tra virgolette che riproduce un'indicazione oraria in formato StarOffice." ;
+ Text [ portuguese_brazilian ] = "Ein in Anführungszeichen eingeschlossener Text, der eine Zeitangabe in einem StarOffice Calc Zeitformat wiedergibt." ;
+ Text [ portuguese ] = "Um texto que fornece uma hora num dos vários formatos de horas do StarOffice." ;
+ Text [ finnish ] = "Ein in Anführungszeichen eingeschlossener Text, der eine Zeitangabe in einem StarCalc Zeitformat wiedergibt." ;
+ Text [ danish ] = "Tekst i anførselstegn som repræsenterer et klokkeslæt i et StarOffice datoformat." ;
+ Text [ french ] = "Un texte entre guillemets qui renvoie une heure dans un format d'heure de StarOffice." ;
+ Text [ swedish ] = "En inom citationstecken skriven text, som returnerar en tid i något av StarOffice Calcs tidsformat." ;
+ Text [ dutch ] = "Een tekst tussen aanhalingstekens met een tijdsaanduiding in een StarOffice Calc tijdformaat." ;
+ Text [ spanish ] = "Un texto entre comillas que devuelve una hora en uno de los formatos horarios de StarOffice." ;
+ Text [ english_us ] = "A text enclosed in quotation marks which returns a time in a StarOffice time format." ;
+ Text[ chinese_simplified ] = "ÒýºÅÄÚµÄ×Ö´®×ª»»³É StarOffice ʱ¼ä¸ñʽ¡£";
+ Text[ russian ] = "Òåêñò â êàâû÷êàõ, âûäàþùèé âðåìÿ â ôîðìàòå âðåìåíè StarOffice.";
+ Text[ polish ] = "Wstawiony w cudzys³ów tekst, który wyznacza datê w formacie czasu StarOffice.";
+ Text[ japanese ] = "¸«Ã°¼®ÝÏ°¸‚Å‚©‚±‚ñ‚¾ŽžŠÔ‚ð•\\‚·•¶Žš—ñ‚ðStarOffice‚ÌŽžŠÔ•\\Ž¦Œ`Ž®‚ÅŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤@­Ó¤Þ¸¹¤ºªº¦r¦êÂà´«¦¨¤@­Ó StarOffice ®É¶¡®æ¦¡¡C";
+ Text[ arabic ] = "äÕ ãÍÇØ ÈÚáÇãÇÊ ÊäÕíÕ íãËá ÇáæÞÊ ÈÃÍÏ ÊäÓíÞÇÊ ÇáæÞÊ Ýí StarOffice.";
+ Text[ dutch ] = "Een tekst tussen aanhalingstekens met een tijdsaanduiding in een StarOffice Calc tijdformaat.";
+ Text[ chinese_simplified ] = "ÒýºÅÄÚµÄ×Ö´®×ª»»³É StarOffice ʱ¼ä¸ñʽ¡£";
+ Text[ greek ] = "¸íá êåßìåíï óå åéóáãùãéêÜ, ôï ïðïßï åðéóôñÝöåé ìéá þñá óå ìïñöÞ þñáò ôïõ StarOffice Calc.";
+ Text[ korean ] = "ÀοëºÎÈ£ ¾È¿¡ µé¾î ÀÖ´Â ÅؽºÆ®·Î¼­ StarOffice ½Ã°£¼­½Ä¿¡ ÀÖ´Â ½Ã°£À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "StarOffice zaman formatýnda zaman bilgisi veren týrnak iþaretleri içindeki metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function HEUTE #*=-
+ Resource SC_OPCODE_GET_ACT_DATE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt das aktuelle Datum des Computers." ;
+ Text [ english ] = "Returns the serial number of the current date." ;
+ Text [ norwegian ] = "Bestimmt das aktuelle Datum des Computers." ;
+ Text [ italian ] = "Restituisce il numero seriale della data corrente." ;
+ Text [ portuguese_brazilian ] = "Bestimmt das aktuelle Datum des Computers." ;
+ Text [ portuguese ] = "Determina o número de série da data corrente." ;
+ Text [ finnish ] = "Bestimmt das aktuelle Datum des Computers." ;
+ Text [ danish ] = "Beregner serienummeret for computeren aktuelle dato." ;
+ Text [ french ] = "Détermine le numéro de série la date courante." ;
+ Text [ swedish ] = "Bestämmer det aktuella datumet för datorn." ;
+ Text [ dutch ] = "Bepaalt de huidige datum van de computer." ;
+ Text [ spanish ] = "Determina la fecha actual del ordenador." ;
+ Text [ english_us ] = "Determines the current date of the computer." ;
+ Text[ chinese_simplified ] = "È·¶¨¼ÆËã»úÄÚ²¿Ê±ÖÓµ±Ç°µÄÈÕÆÚ¡£";
+ Text[ russian ] = "Îïðåäåëÿåò òåêóùóþ äàòó êîìüþòåðà.";
+ Text[ polish ] = "Podaje wartoœæ kolejnego numeru bie¿¹cej daty.";
+ Text[ japanese ] = "ºÝËß­°À‚ÌŒ»Ý‚Ì“ú•t‚̼رْl‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¹q¸£¤º³¡®ÉÄÁ·í«eªº¤é´Á¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÇáÊÇÑíÎ ÇáÍÇáí ááßãÈíæÊÑ.";
+ Text[ dutch ] = "Bepaalt de huidige datum van de computer.";
+ Text[ chinese_simplified ] = "È·¶¨¼ÆËã»úÄÚ²¿Ê±ÖÓµ±Ç°µÄÈÕÆÚ¡£";
+ Text[ greek ] = "Êáèïñßæåé ôçí ôñÝ÷ïõóá çìåñïìçíßá ôïõ õðïëïãéóôÞ.";
+ Text[ korean ] = "ÄÄÇ»ÅÍÀÇ ÇöÀç ÀÏÀÚ¸¦ °áÁ¤";
+ Text[ turkish ] = "Bilgisayarýn güncel tarihini belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_HEUTE );
+ 0;
+ };
+ };
+ // -=*# Resource for function WOCHENTAG #*=-
+ Resource SC_OPCODE_GET_DAY_OF_WEEK
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt zu dem Datumswert den Wochentag als Zahl (1 - 7)." ;
+ Text [ english ] = "Returns the day of the week corresponding to serial_number." ;
+ Text [ norwegian ] = "Bestimmt zu dem Datumswert den Wochentag als Zahl (1 - 7)." ;
+ Text [ italian ] = "Restituisce il giorno della settimana corrispondente a num_seriale (1 - 7)." ;
+ Text [ portuguese_brazilian ] = "Bestimmt zu dem Datumswert den Wochentag als Zahl (1 - 7)." ;
+ Text [ portuguese ] = "Devolve o dia da semana (1 a 7) correspondente a núm_série." ;
+ Text [ finnish ] = "Bestimmt zu dem Datumswert den Wochentag als Zahl (1 - 7)." ;
+ Text [ danish ] = "Omregner serienummeret til en ugedag som et tal mellem 1 og 7." ;
+ Text [ french ] = "Renvoie le jour de la semaine (compris entre 1 et 7) correspondant à l'argument numéro_série." ;
+ Text [ swedish ] = "Bestämmer veckodagen som tal (1-7) för datumvärdet." ;
+ Text [ dutch ] = "Converteert een bepaalde dag van de week naar een serieel getal (1 - 7)." ;
+ Text [ spanish ] = "Devuelve el día de la semana (1 - 7) correspondiente al argumento núm_de_serie." ;
+ Text [ english_us ] = "Returns the day of the week for the date value as an integer (1-7)." ;
+ Text[ chinese_simplified ] = "È·¶¨ÓëÈÕÆÚÖµÏà¶ÔÓ¦µÄÒ»ÖÜÄÚµÄijÌ죬½á¹ûÓýéÓÚ1ºÍ7Ö®¼äµÄÕûÊý±íʾ¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò äàòó â ÷èñëîâîì ôîðìàòå â íîìåð äíÿ íåäåëè (÷èñëî îò 1 äî 7).";
+ Text[ polish ] = "Podaje dzieñ tygodnia odpowiadaj¹cy numerowi kolejnemu (liczba ca³kowita od 1 do 7).";
+ Text[ japanese ] = "“ú•t‚̼رْl‚ª‰½—j“ú‚É‚ ‚½‚é‚©‚ð”’l‚Å•Ô‚µ‚Ü‚·B(1-7)";
+ Text[ chinese_traditional ] = "Âà´«¤é´Á¦¨¹ïÀ³ªº¤@¶g¤ºªº¬Y¤Ñ(1-7)¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞã ÊÓáÓáí Åáì íæã Ýí ÇáÃÓÈæÚ (ãä 1 Åáì 7).";
+ Text[ dutch ] = "Converteert een bepaalde dag van de week naar een serieel getal (1 - 7).";
+ Text[ chinese_simplified ] = "È·¶¨ÓëÈÕÆÚÖµÏà¶ÔÓ¦µÄÒ»ÖÜÄÚµÄijÌ죬½á¹ûÓýéÓÚ1ºÍ7Ö®¼äµÄÕûÊý±íʾ¡£";
+ Text[ greek ] = "Ïñßæåé ãéá ôçí ôéìÞ çìåñïìçíßáò ôçí çìÝñá ôçò åâäïìÜäáò ùò áñéèü (1 - 7).";
+ Text[ korean ] = "ÆòÀÏÀ» Á¤¼ö·Î (1-7) ³¯Â¥°ª¿¡ ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Tarih deðerine göre, hafta gününü tam sayý (1 - 7) olarak belirtir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_WOCHENTAG );
+ 2; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num_seriale" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Núm_série" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Serienummer" ;
+ Text [ french ] = "Numéro_série" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Núm_de_serie" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "serial_number";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÓáÓá";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Interne Zahl des Datums." ;
+ Text [ english ] = "is the date-time code used for date and time calculations." ;
+ Text [ norwegian ] = "Interne Zahl des Datums." ;
+ Text [ italian ] = "numero interno della data." ;
+ Text [ portuguese_brazilian ] = "Interne Zahl des Datums." ;
+ Text [ portuguese ] = "é o código de data-hora para calcular a data e a hora." ;
+ Text [ finnish ] = "Interne Zahl des Datums." ;
+ Text [ danish ] = "Intern datoværdi." ;
+ Text [ french ] = "Le numéro de série de la date." ;
+ Text [ swedish ] = "Internt tal för datum." ;
+ Text [ dutch ] = "Serieel getal van de datum." ;
+ Text [ spanish ] = "Es el código de fecha-hora que StarOffice Calc usa para los cálculos de fecha y hora." ;
+ Text [ english_us ] = "The internal number for the date." ;
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄϵͳÄÚ²¿Êý×Ö¡£";
+ Text[ russian ] = "Êîä äàòà-âðåìÿ, èñïîëüçóåìûé äëÿ âû÷èñëåíèé ñ äàòàìè è ïðåèîäàìè âðåìåíè.";
+ Text[ polish ] = "Kod daty-godziny u¿ywany do obliczenia daty i godziny.";
+ Text[ japanese ] = "“ú•t‚̼رْl";
+ Text[ chinese_traditional ] = "¤é´Áªº¤º³¡¼Æ¦r¡C";
+ Text[ arabic ] = "ÑÞã ÏÇÎáí ááÊÇÑíÎ.";
+ Text[ dutch ] = "Serieel getal van de datum.";
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄϵͳÄÚ²¿Êý×Ö¡£";
+ Text[ greek ] = "is the date-time code used for date and time calculations.";
+ Text[ korean ] = "ÀÏÀÚ¿¡ ´ëÇÑ ³»ºÎ ¼ö";
+ Text[ turkish ] = "Tarihin iç sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Art" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Art" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "Art" ;
+ Text [ portuguese ] = "Tipo_devolvido" ;
+ Text [ finnish ] = "Art" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "typ" ;
+ Text [ dutch ] = "Methode" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "À²Ìß";
+ Text[ chinese_traditional ] = "return_type";
+ Text[ arabic ] = "Return_type";
+ Text[ dutch ] = "Methode";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ŸÀÔ";
+ Text[ turkish ] = "Tür";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Legt den Wochenanfang und die Art der Berechnung fest" ;
+ Text [ english ] = "is a number that determines the type of return value." ;
+ Text [ norwegian ] = "Legt den Wochenanfang und die Art der Berechnung fest" ;
+ Text [ italian ] = "è un numero che determina il giorno in cui inizia la settimana e il tipo di calcolo." ;
+ Text [ portuguese_brazilian ] = "Legt den Wochenanfang und die Art der Berechnung fest" ;
+ Text [ portuguese ] = "é um número que determina o dia de início da semana e o tipo de cálculo." ;
+ Text [ finnish ] = "Legt den Wochenanfang und die Art der Berechnung fest" ;
+ Text [ danish ] = "Definerer ugens start og beregningstypen." ;
+ Text [ french ] = "Détermine le premier jour de la semaine et le type de calcul." ;
+ Text [ swedish ] = "Definierar vilken dag veckan börjar med och typ av beräkning." ;
+ Text [ dutch ] = "Bepaalt het begin van de week en de berekeningsmethode." ;
+ Text [ spanish ] = "Es un número que determina el comienzo de la semana y el tipo de cálculo" ;
+ Text [ english_us ] = "Fixes the beginning of the week and the type of calculation to be used." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»ÖܵĿªÊ¼ÈպͼÆËãµÄ·½Ê½";
+ Text[ russian ] = "Óñòàíàâëèâàåò íà÷àëî íåäåëè è òèï âû÷èñëåíèÿ.";
+ Text[ polish ] = "Okreœla pocz¹tek tygodnia i typ obliczenia";
+ Text[ japanese ] = "—j“ú‚Ì‚Í‚¶‚ß‚ðŒˆ‚ßAŽZo•û–@‚ð’è‚ß‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@¶gªº¶}©l¤é©M­pºâªº¤è¦¡";
+ Text[ arabic ] = "ÑÞã íÍÏÏ Ãæá ÃíÇã ÇáÃÓÈæÚ æØÑíÞÉ ÇáÍÓÇÈ.";
+ Text[ dutch ] = "Bepaalt het begin van de week en de berekeningsmethode.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»ÖܵĿªÊ¼ÈպͼÆËãµÄ·½Ê½";
+ Text[ greek ] = "Êáèïñßæåé ôçí áñ÷Þ ôçò åâäïìÜäáò êáé ôïí ôýðï õðïëïãéóìïý.";
+ Text[ korean ] = "ÁÖÀÇ ½ÃÀÛ°ú »ç¿ëµÉ °è»ê ŸÀÔÀ» °íÁ¤ .";
+ Text[ turkish ] = "Haftabaþýný ve hesaplama türünü belirler";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function JAHR #*=-
+ Resource SC_OPCODE_GET_YEAR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt zu dem Datumswert das Jahr als Zahl." ;
+ Text [ english ] = "Returns the year corresponding to serial_number." ;
+ Text [ norwegian ] = "Bestimmt zu dem Datumswert das Jahr als Zahl." ;
+ Text [ italian ] = "Restituisce l'anno corrispondente a num_seriale." ;
+ Text [ portuguese_brazilian ] = "Bestimmt zu dem Datumswert das Jahr als Zahl." ;
+ Text [ portuguese ] = "Devolve o ano correspondente a núm_série." ;
+ Text [ finnish ] = "Bestimmt zu dem Datumswert das Jahr als Zahl." ;
+ Text [ danish ] = "Omregner serienummeret til et år." ;
+ Text [ french ] = "Renvoie l'année correspondant à l'argument numéro_série." ;
+ Text [ swedish ] = "Bestämmer året som tal för datumvärdet." ;
+ Text [ dutch ] = "Converteert de datumswaarde naar een jaar dat wordt weergegeven als getal." ;
+ Text [ spanish ] = "Devuelve el año correspondiente al núm_de_serie." ;
+ Text [ english_us ] = "Returns the year of a date value as an integer." ;
+ Text[ chinese_simplified ] = "ת»»ÈÕÆÚÊýÖµ³ÉÏà¶ÔÓ¦µÄÄê·ÝÊý¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò äàòó â ÷èñëîâîì ôîðìàòå â ãîä.";
+ Text[ polish ] = "Przekszta³ca numer kolejny w rok.";
+ Text[ japanese ] = "“ú•t‚̼رْl‚ª¼—”N‚É‚ ‚½‚é‚©‚ð”’l‚Å•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤é´ÁÂà´«¦¨¬Û¹ïÀ³ªº¦~¥÷¼Æ¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞã ÊÓáÓáí Åáì ÚÇã.";
+ Text[ dutch ] = "Converteert de datumswaarde naar een jaar dat wordt weergegeven als getal.";
+ Text[ chinese_simplified ] = "ת»»ÈÕÆÚÊýÖµ³ÉÏà¶ÔÓ¦µÄÄê·ÝÊý¡£";
+ Text[ greek ] = "Ïñßæåé ãéá ôçí ôéìÞ çìåñïìçíßáò ôï Ýôïò ùò áñéèìü.";
+ Text[ korean ] = "ÀÏÀÚ °ªÀÇ ³âµµ¸¦ Á¤¼ö·Î ¹Ýȯ";
+ Text[ turkish ] = "Tarih deðerine göre yýlý tamsayý olarak bulur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_JAHR );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "serial_number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num_seriale" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Núm_série" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Serienummer" ;
+ Text [ french ] = "Numéro_série" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Núm_de_serie" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Kolejna_liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "serial_number";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÓáÓá";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "serial_number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Interne Zahl des Datums." ;
+ Text [ english ] = "is the date-time code used for date and time calculations." ;
+ Text [ norwegian ] = "Interne Zahl des Datums." ;
+ Text [ italian ] = "numero interno per la data." ;
+ Text [ portuguese_brazilian ] = "Interne Zahl des Datums." ;
+ Text [ portuguese ] = "é o código data-hora usado para calcular a data e a hora." ;
+ Text [ finnish ] = "Interne Zahl des Datums." ;
+ Text [ danish ] = "Intern datoværdi." ;
+ Text [ french ] = "Le numéro de série de la date." ;
+ Text [ swedish ] = "Internt tal för datum." ;
+ Text [ dutch ] = "De datum als serieel getal." ;
+ Text [ spanish ] = "Es el código de fecha-hora que StarOffice Calc usa para los cálculos de fecha y hora." ;
+ Text [ english_us ] = "Internal number of the date." ;
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄϵͳÄÚ²¿Êý×Ö¡£";
+ Text[ russian ] = "Êîä äàòà-âðåìÿ, èñïîëüçóåìûé äëÿ âû÷èñëåíèé ñ äàòàìè è ïðåèîäàìè âðåìåíè.";
+ Text[ polish ] = "Kod daty-godziny u¿ywany do obliczenia daty i godziny.";
+ Text[ japanese ] = "“ú•t‚̼رْl";
+ Text[ chinese_traditional ] = "¤é´Áªº¤º³¡¼Æ¦r¡C";
+ Text[ arabic ] = "ÑÞã ÏÇÎáí ááÊÇÑíÎ.";
+ Text[ dutch ] = "De datum als serieel getal.";
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄϵͳÄÚ²¿Êý×Ö¡£";
+ Text[ greek ] = "is the date-time code used for date and time calculations.";
+ Text[ korean ] = "ÀÏÀÚÀÇ ³»ºÎ ¼ö";
+ Text[ turkish ] = "Tarihin iç sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TAGE #*=-
+ Resource SC_OPCODE_GET_DIFF_DATE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Tagesdifferenz zweier Daten." ;
+ Text [ english ] = "Returns the number of days between two dates." ;
+ Text [ norwegian ] = "Bestimmt die Tagesdifferenz zweier Daten." ;
+ Text [ italian ] = "Determina la differenza in giorni tra due date" ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Tagesdifferenz zweier Daten." ;
+ Text [ portuguese ] = "Calcula o número de dias entre duas datas." ;
+ Text [ finnish ] = "Bestimmt die Tagesdifferenz zweier Daten." ;
+ Text [ danish ] = "Bestemmer antallet af dage mellem to datoer." ;
+ Text [ french ] = "Renvoie le nombre de jours entre deux dates." ;
+ Text [ swedish ] = "Bestämmer antalet dagar mellan två datum." ;
+ Text [ dutch ] = "Bepaalt het aantal dagen tussen twee data." ;
+ Text [ spanish ] = "Calcula el número de días entre dos fechas." ;
+ Text [ english_us ] = "Calculates the number of days between two dates." ;
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÈÕÆÚµÄÏà²îÌìÊý¡£";
+ Text[ russian ] = "Îïðåäåëÿåò êîëè÷åñòâî äíåé ìåæäó äâóìÿ äàòàìè.";
+ Text[ polish ] = "Okreœla liczbê dni pomiêdzy dwoma datami.";
+ Text[ japanese ] = "2‚‚̓ú•t‚ÌŠÔ‚Ì“ú”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¨â­Ó¤é´Áªº¬Û®t¤Ñ¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÚÏÏ ÇáÃíÇã Èíä ÊÇÑíÎíä.";
+ Text[ dutch ] = "Bepaalt het aantal dagen tussen twee data.";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÈÕÆÚµÄÏà²îÌìÊý¡£";
+ Text[ greek ] = "Êáèïñßæåé ôçí äéáöïñÜ çìåñþí äýï çìåñïìçíéþí..";
+ Text[ korean ] = "µÎ ÀÏÀÚ°£ ÀÏÀÚ¼öÀÇ Â÷À̸¦ °è»ê";
+ Text[ turkish ] = "Ýki tarih arasýndaki gün farkýný bulur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_TAGE );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Datum_2" ;
+ Text [ english ] = "end_date" ;
+ Text [ norwegian ] = "Datum 2" ;
+ Text [ italian ] = "data_2" ;
+ Text [ portuguese_brazilian ] = "Datum 1" ;
+ Text [ portuguese ] = "Data_2" ;
+ Text [ finnish ] = "Datum 2" ;
+ Text [ danish ] = "Dato_2" ;
+ Text [ french ] = "Date_2" ;
+ Text [ swedish ] = "datum_2" ;
+ Text [ dutch ] = "Datum_2" ;
+ Text [ spanish ] = "Fecha_2" ;
+ Text [ english_us ] = "Date_2" ;
+ Text[ chinese_simplified ] = "ÈÕÆÚ_2";
+ Text[ russian ] = "Äàòà_2";
+ Text[ polish ] = "Data_2";
+ Text[ japanese ] = "“ú•t2";
+ Text[ chinese_traditional ] = "date_2";
+ Text[ arabic ] = "ÇáÊÇÑíÎ_2";
+ Text[ dutch ] = "Datum_2";
+ Text[ chinese_simplified ] = "ÈÕÆÚ_2";
+ Text[ greek ] = "Çìåñïìçíßá_2";
+ Text[ korean ] = "ÀÏÀÚ_2";
+ Text[ turkish ] = "Tarih_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Späteres Datum für die Tagesdifferenz." ;
+ Text [ english ] = "are the two dates between which you want to know the number of days." ;
+ Text [ norwegian ] = "Späteres Datum für die Tagesdifferenz." ;
+ Text [ italian ] = "Data più recente per la differenza di giorni." ;
+ Text [ portuguese_brazilian ] = "Älteres Datum für die Tagesdifferenz." ;
+ Text [ portuguese ] = "Data mais recente para a diferença em dias." ;
+ Text [ finnish ] = "Späteres Datum für die Tagesdifferenz." ;
+ Text [ danish ] = "Senere dato for dagsdifferensen." ;
+ Text [ french ] = "Date la plus récente pour la différence en jours." ;
+ Text [ swedish ] = "Senare datum för dagsdifferensen." ;
+ Text [ dutch ] = "Jongere datum ter bepaling van het aantal dagen." ;
+ Text [ spanish ] = "Es la fecha más reciente para calcular la diferencia de días." ;
+ Text [ english_us ] = "The end date for calculating the difference in days." ;
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÈÕÆÚÏà²îÌìÊýʱ½ÏÍíµÄÄǸöÈÕÆÚ¡£";
+ Text[ russian ] = "Êîíå÷íàÿ äàòà äëÿ îïðåäåëåíèÿ ðàçíèöû â êîëè÷åñòâå äíåé.";
+ Text[ polish ] = "Wczeœniejsza data dla okreœlania ró¿nicy w liczbie dni.";
+ Text[ japanese ] = "“ú”ŒvŽZ‚Ì‚½‚ß‚ÌŒã‚Ì“ú•t";
+ Text[ chinese_traditional ] = "­pºâ¬Û®t¤Ñ¼Æªº¤@­Ó¸û±ßªº¤é´Á¡C";
+ Text[ arabic ] = "ÇáÊÇÑíÎ ÇáÃÍÏË ááÝÇÑÞ Èíä ÚÏÏ ÇáÃíÇã.";
+ Text[ dutch ] = "Jongere datum ter bepaling van het aantal dagen.";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÈÕÆÚÏà²îÌìÊýʱ½ÏÍíµÄÄǸöÈÕÆÚ¡£";
+ Text[ greek ] = "ÔåëéêÞ çìåñïìçíßá ãéá ôïí õðïëïãéóìü ôçò äéáöïñÜò çìåñþí.";
+ Text[ korean ] = "Àϼö¿¡ À־ Â÷À̸¦ °è»êÇϱâÀ§ÇÑ ¸¶Áö¸· ÀÏÀÚ.";
+ Text[ turkish ] = "Gün farký hesabý için geç olan tarih.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datum_1" ;
+ Text [ english ] = "start_date" ;
+ Text [ norwegian ] = "Datum 1" ;
+ Text [ italian ] = "data_1" ;
+ Text [ portuguese_brazilian ] = "Datum 2" ;
+ Text [ portuguese ] = "Data_1" ;
+ Text [ finnish ] = "Datum 1" ;
+ Text [ danish ] = "Dato_1" ;
+ Text [ french ] = "Date_1" ;
+ Text [ swedish ] = "datum_1" ;
+ Text [ dutch ] = "Datum_1" ;
+ Text [ spanish ] = "Fecha_1" ;
+ Text [ english_us ] = "Date_1" ;
+ Text[ chinese_simplified ] = "ÈÕÆÚ_1";
+ Text[ russian ] = "Äàòà_1";
+ Text[ polish ] = "Data_1";
+ Text[ japanese ] = "“ú•t1";
+ Text[ chinese_traditional ] = "date_1";
+ Text[ arabic ] = "ÇáÊÇÑíÎ_1";
+ Text[ dutch ] = "Datum_1";
+ Text[ chinese_simplified ] = "ÈÕÆÚ_1";
+ Text[ greek ] = "Çìåñïìçíßá_1";
+ Text[ korean ] = "ÀÏÀÚ_1";
+ Text[ turkish ] = "Tarih_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Früheres Datum für die Tagesdifferenz." ;
+ Text [ english ] = "The start date for calculating the difference in days." ;
+ Text [ norwegian ] = "Früheres Datum für die Tagesdifferenz." ;
+ Text [ italian ] = "Data meno recente per la differenza di giorni" ;
+ Text [ portuguese_brazilian ] = "Jüngeres Datum für die Tagesdifferenz." ;
+ Text [ portuguese ] = "Data mais antiga para a diferença em dias." ;
+ Text [ finnish ] = "Früheres Datum für die Tagesdifferenz." ;
+ Text [ danish ] = "Tidligere dato for dagsdifferensen." ;
+ Text [ french ] = "Date la plus ancienne pour la différence en jours." ;
+ Text [ swedish ] = "Tidigare datum för dagsdifferensen." ;
+ Text [ dutch ] = "Oudere datum ter bepaling van het aantal dagen." ;
+ Text [ spanish ] = "Es la fecha más vieja para calcular la diferencia de días." ;
+ Text [ english_us ] = "The start date for calculating the difference in days." ;
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÈÕÆÚÏà²îÌìÊýʱ½ÏÔçµÄÄǸöÈÕÆÚ¡£";
+ Text[ russian ] = "Íà÷àëüíàÿ äàòà äëÿ îïðåäåëåíèÿ ðàçíèöû â êîëè÷åñòâå äíåé.";
+ Text[ polish ] = "PóŸniejsza data dla okreœlania ró¿nicy w liczbie dni.";
+ Text[ japanese ] = "“ú”ŒvŽZ‚Ì‚½‚ß‚ÌŽn‚ß‚Ì“ú•t";
+ Text[ chinese_traditional ] = "­pºâ¬Û®t¤Ñ¼Æªº¤@­Ó¸û¦­ªº¤é´Á¡C";
+ Text[ arabic ] = "ÇáÊÇÑíÎ ÇáÃÞÏã ááÝÇÑÞ Èíä ÚÏÏ ÇáÃíÇã.";
+ Text[ dutch ] = "Oudere datum ter bepaling van het aantal dagen.";
+ Text[ chinese_simplified ] = "¼ÆËãÁ½¸öÈÕÆÚÏà²îÌìÊýʱ½ÏÔçµÄÄǸöÈÕÆÚ¡£";
+ Text[ greek ] = "Áñ÷éêÞ çìåñïìçíßá ãéá ôïí õðïëïãéóìü ôçò äéáöïñÜò çìåñþí.";
+ Text[ korean ] = "ÀϼöÀÇ Â÷À̸¦ °è»êÇϱâ À§ÇÑ ½ÃÀÛ ÀÏÀÚ";
+ Text[ turkish ] = "Gün farký hesabý için erken olan tarih.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KALENDERWOCHE #*=-
+ Resource SC_OPCODE_WEEK
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt zu dem Datumswert die Kalenderwoche im Jahr." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Bestimmt zu dem Datumswert die Kalenderwoche im Jahr." ;
+ Text [ italian ] = "Calcola il numero della settimana di una data data." ;
+ Text [ portuguese_brazilian ] = "Bestimmt zu dem Datumswert die Kalenderwoche im Jahr." ;
+ Text [ portuguese ] = "Calcula a semana do calendário correspondente à data fornecida." ;
+ Text [ finnish ] = "Bestimmt zu dem Datumswert die Kalenderwoche im Jahr." ;
+ Text [ danish ] = "Beregner årets kalenderuge svarende til datoserienummeret." ;
+ Text [ french ] = "Renvoie la semaine calendaire de l'année correspondant à l'argument numéro_série." ;
+ Text [ swedish ] = "Bestämmer kalenderveckan i året för datumvärdet." ;
+ Text [ dutch ] = "Bepaalt de kalenderweek aan de hand van de gegeven datumwaarde." ;
+ Text [ spanish ] = "Calcula la semana del año correspondiente a la fecha especificada." ;
+ Text [ english_us ] = "Calculates the calendar week corresponding to the given date." ;
+ Text[ chinese_simplified ] = "¼ÆËãijһÈÕÆÚÔÚÒ»ÄêÖÐËù¶ÔÓ¦µÄÐÇÆÚÐòÁÐÊý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êàëåíäàðíóþ íåäåëþ ñîîòâåòñòâåííî äàííîé äàòå.";
+ Text[ polish ] = "Oblicza dla podanej daty tydzieñ kalendarzowy w roku.";
+ Text[ japanese ] = "“ú•t‚̼رْl‚ª‚»‚Ì”N‚̉½T–Ú‚É‚ ‚½‚é‚©‚ðA”’l‚Å•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¬Y¤@¤é´Á¦b¤@¦~¤¤ªº¬P´Á§Ç¦C¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÃÓÈæÚ ÇáÊÞæíã ÇÓÊäÇÏÇð ááÊÇÑíÎ ÇáãÚØì.";
+ Text[ dutch ] = "Bepaalt de kalenderweek aan de hand van de gegeven datumwaarde.";
+ Text[ chinese_simplified ] = "¼ÆËãijһÈÕÆÚÔÚÒ»ÄêÖÐËù¶ÔÓ¦µÄÐÇÆÚÐòÁÐÊý¡£";
+ Text[ greek ] = "Ïñßæåé ãéá ôçí ôéìÞ çìåñïìçíßáò ôçí çìåñïëïãéáêÞ åâäïìÜäá ôïõ Ýôïõò.";
+ Text[ korean ] = "ÁÖ¾îÁø µ¥ÀÌÅÍ¿¡ ´ëÀÀÇÏ´Â ÀÏÁ¤ ÁÖ¸¦ °è»êÇϽʽÿÀ.";
+ Text[ turkish ] = "Tarih deðerine göre takvim haftasýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_KALENDERWOCHE );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Núm_série" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Numéro_série" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "núm_de_serie" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "Value";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Interne Zahl des Datums." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Interne Zahl des Datums." ;
+ Text [ italian ] = "il valore interno della data" ;
+ Text [ portuguese_brazilian ] = "Interne Zahl des Datums." ;
+ Text [ portuguese ] = "é o número interno da data." ;
+ Text [ finnish ] = "Interne Zahl des Datums." ;
+ Text [ danish ] = "Intern datoværdi." ;
+ Text [ french ] = "Le numéro de série de la date." ;
+ Text [ swedish ] = "Internt tal för datum." ;
+ Text [ dutch ] = "De datum als serieel getal." ;
+ Text [ spanish ] = "es el código de fecha que representa la fecha." ;
+ Text [ english_us ] = "The internal number of the date." ;
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄÄÚ²¿ÐòÁÐÊý¡£";
+ Text[ russian ] = "Ïîðÿäêîâîå ÷èñëî äàííîé äàòû.";
+ Text[ polish ] = "Numer kolejny odpowiadaj¹cy dacie.";
+ Text[ japanese ] = "“ú•t‚̼رْl";
+ Text[ chinese_traditional ] = "¤é´Áªº¤º³¡¼Æ­È¡C";
+ Text[ arabic ] = "ÑÞã ÏÇÎáí ááÊÇÑíÎ.";
+ Text[ dutch ] = "De datum als serieel getal.";
+ Text[ chinese_simplified ] = "ÈÕÆÚµÄÄÚ²¿ÐòÁÐÊý¡£";
+ Text[ greek ] = "Åóùôåñéêüò áñéèìüò ôçò çìåñïìçíßáò.";
+ Text[ korean ] = "ÀÏÀÚÀÇ ³»ºÎ ¼ö";
+ Text[ turkish ] = "Dahili tarih sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Modus" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Modus" ;
+ Text [ italian ] = "modo" ;
+ Text [ portuguese_brazilian ] = "Modus" ;
+ Text [ portuguese ] = "Modo" ;
+ Text [ finnish ] = "Modus" ;
+ Text [ danish ] = "Modus" ;
+ Text [ french ] = "Mode" ;
+ Text [ swedish ] = "läge" ;
+ Text [ dutch ] = "Modus" ;
+ Text [ spanish ] = "Modo" ;
+ Text [ english_us ] = "mode" ;
+ Text[ chinese_simplified ] = "mode";
+ Text[ russian ] = "Ðåæèì";
+ Text[ polish ] = "Tryb";
+ Text[ japanese ] = "Ó°ÄÞ";
+ Text[ chinese_traditional ] = "mode";
+ Text[ arabic ] = "mode";
+ Text[ dutch ] = "Modus";
+ Text[ chinese_simplified ] = "mode";
+ Text[ greek ] = "ÊáôÜóôáóç";
+ Text[ korean ] = "¸ðµå";
+ Text[ turkish ] = "Kip";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Legt den ersten Tag in der Woche fest." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Legt den ersten Tag in der Woche fest." ;
+ Text [ italian ] = "Stabilisce il primo giorno della settimana" ;
+ Text [ portuguese_brazilian ] = "Legt den ersten Tag in der Woche fest." ;
+ Text [ portuguese ] = "Determina o primeiro dia da semana." ;
+ Text [ finnish ] = "Legt den ersten Tag in der Woche fest." ;
+ Text [ danish ] = "Definerer den første dag i ugen." ;
+ Text [ french ] = "Détermine le premier jour de la semaine." ;
+ Text [ swedish ] = "Definierar den första dagen i veckan." ;
+ Text [ dutch ] = "Bepaalt de eerste dag van de week." ;
+ Text [ spanish ] = "es el primer día de la semana." ;
+ Text [ english_us ] = "Indicates the first day of the week." ;
+ Text[ chinese_simplified ] = "É趨ÿÖܵĵÚÒ»Ìì¡£";
+ Text[ russian ] = "Óñòàíàâëèâàåò ïåðâûé äåíü íåäåëè.";
+ Text[ polish ] = "Definiuje pierwszy dzieñ tygodnia.";
+ Text[ japanese ] = "‰½—j“ú‚ÅŽn‚Ü‚é‚©‚ðŽw’èB";
+ Text[ chinese_traditional ] = "³]©w¨C¶gªº²Ä¤@¤Ñ¡C";
+ Text[ arabic ] = "ÊÍÏÏ Çáíæã ÇáÃæá Ýí ÇáÃÓÈæÚ.";
+ Text[ dutch ] = "Bepaalt de eerste dag van de week.";
+ Text[ chinese_simplified ] = "É趨ÿÖܵĵÚÒ»Ìì¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ðñþôç çìÝñá ôçò åâäïìÜäáò.";
+ Text[ korean ] = "ÁÖÀÇ Ã¹¿äÀÏÀ» ÁöÁ¤";
+ Text[ turkish ] = "Haftanýn birinci gününü belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function OSTERSONNTAG #*=-
+ Resource SC_OPCODE_EASTERSUNDAY
+ {
+ String 1 // Description
+ {
+ Text = "Bestimmt das Datum des Ostersonntags eines Jahres." ;
+ Text [ english ] = "Calculates the date of easter sunday in a given year." ;
+ Text[ english_us ] = "Calculates the date of Easter Sunday in a given year.";
+ Text[ portuguese ] = "Calcula a data do domingo de Páscoa para um ano determinado.";
+ Text[ russian ] = "Îïðåäåëÿåò äàòó ïàñõàëüíîãî âîñêðåñåíüÿ â ãîäó.";
+ Text[ dutch ] = "Berekent de datum van de eerste Paasdag in een bepaald jaar.";
+ Text[ french ] = "Calcule la date du dimanche de Pâques pour une année donnée";
+ Text[ spanish ] = "Calcula la fecha del Domingo de Pascua de un año.";
+ Text[ italian ] = "Determina la data della domenica di Pasqua di un dato anno.";
+ Text[ danish ] = "Beregner datoen for påskesøndag i et angivet år.";
+ Text[ swedish ] = "Bestämmer påskdagens datum ett bestämt år.";
+ Text[ polish ] = "Oblicza datê Niedzieli Wielkanocnej w podanym roku.";
+ Text[ portuguese_brazilian ] = "Calculates the date of easter sunday in a given year.";
+ Text[ japanese ] = "”N‚̲°½À° »ÝÃÞ°(easter sunday)‚Ì“ú•t‚ð•Ô‚µ‚Ü‚·¡";
+ Text[ chinese_simplified ] = "¼ÆËãijһÄ긴»î½ÚÐÇÆÚÌìµÄÈÕÆÚ¡£";
+ Text[ chinese_traditional ] = "­pºâ¬Y¤@¦~´_¬¡¸`¬P´Á¤Ñªº¤é´Á¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÊÇÑíÎ íæã ÇáÃÍÏ ÇáãæÇÝÞ ÚíÏ ÇáÝÕÍ Ýí ÇáÚÇã ÇáãÚØì.";
+ Text[ dutch ] = "Berekent de datum van de eerste Paasdag in een bepaald jaar.";
+ Text[ chinese_simplified ] = "¼ÆËãijһÄ긴»î½ÚÐÇÆÚÌìµÄÈÕÆÚ¡£";
+ Text[ greek ] = "Õðïëïãéóìüò çìåñïìçíßáò ôçò ÊõñéáêÞò ôïõ ÐÜó÷á åíüò Ýôïõò.";
+ Text[ korean ] = "ÁÖ¾îÁø ³âµµÀǺÎÈ°Àý ÀÏ¿äÀÏÀÇ ³¯Â¥¸¦ °è»ê";
+ Text[ turkish ] = "Paskalya Pazar gününün hangi tarihe denk geldiðini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_DATETIME;
+ U2S( HID_FUNC_OSTERSONNTAG );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Jahr" ;
+ Text [ english ] = "year" ;
+ Text[ english_us ] = "year";
+ Text[ portuguese ] = "Ano";
+ Text[ russian ] = "Ãîä";
+ Text[ dutch ] = "jaar";
+ Text[ french ] = "Année";
+ Text[ spanish ] = "año";
+ Text[ italian ] = "anno";
+ Text[ danish ] = "År";
+ Text[ swedish ] = "år";
+ Text[ polish ] = "Rok";
+ Text[ portuguese_brazilian ] = "year";
+ Text[ japanese ] = "”N";
+ Text[ chinese_simplified ] = "year";
+ Text[ chinese_traditional ] = "year";
+ Text[ arabic ] = "year";
+ Text[ dutch ] = "jaar";
+ Text[ chinese_simplified ] = "year";
+ Text[ greek ] = "¸ôïò";
+ Text[ korean ] = "³â";
+ Text[ turkish ] = "Yýl";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Eine ganze Zahl zwischen 1583 und 9956, oder 0 und 99 (19xx oder 20xx gemäß eingestellter Option)." ;
+ Text [ english ] = "is an integer between 1583 and 9956 or 0 and 99 (19xx or 20xx depending on the defined option)." ;
+ Text[ english_us ] = "An interger between 1583 and 9956, or 0 and 99 (19xx or 20xx depending on the option set).";
+ Text[ portuguese ] = "é um número inteiro entre1583 e 9956 ou entre 0 e 99 (19xx ou 20xx dependendo da opção definida).";
+ Text[ russian ] = "Öåëîå ÷èñëî ìåæäó 1583 è 9956 èëè 0 è 99 (19xx èëè 20xx ñîãëàñíî âûñòàâëåííîìó ïàðàìåòðó).";
+ Text[ dutch ] = "is een geheel getal tussen 1583 en 9956 of 0 en 99 (19xx of 20xx afhankelijk van de gedefinieerde optie).";
+ Text[ french ] = "Un nombre entier compris entre 1583 et 9956 ou entre 0 et 99 (19xx ou 20xx selon l'option définie).";
+ Text[ spanish ] = "Un número entero entre 1583 y 9956, ó 0 y 99 (19xx ó 20xx según opción definida).";
+ Text[ italian ] = "È un numero intero tra 1583 e 9956 oppure tra 0 e 99 (19xx o 20xx a seconda dell'opzione definita).";
+ Text[ danish ] = "Et heltal mellem 1583 og 9956 eller 0 og 99 (19xx eller 20xx alt efter indstillet alternativ).";
+ Text[ swedish ] = "Ett heltal mellan 1583 och 9956, eller 0 och 99 (19xx eller 20xx enligt inställt alternativ).";
+ Text[ polish ] = "jest liczb¹ ca³kowit¹ pomiêdzy 1583 i 9956 lub 0 i 99 (19xx lub 20xx wed³ug ustawionej opcji).";
+ Text[ portuguese_brazilian ] = "is an integer between 1583 and 9956 or 0 and 99 (19xx or 20xx depending on the defined option).";
+ Text[ japanese ] = "1583‚©‚ç9956‚Ü‚ÅA‚ ‚é‚¢‚Í0‚©‚ç99‚Ü‚Å‚Ì®”(19xx ‚Ü‚½‚Í20xx ’è‹`‚µ‚½µÌß¼®Ý‚ɉž‚¶‚é)B";
+ Text[ chinese_simplified ] = "ÊÇÒ»¸öÔÚ1583 ºÍ 9956 »ò 0 ºÍ 99 Ö®¼äµÄÕûÊý\n(19xx »ò 20xx Æð¾öÓÚÉ趨µÄÑ¡Ïî)¡£";
+ Text[ chinese_traditional ] = "¬O¤@­Ó¦b1583 ©M 9956 ©Î 0 ©M 99 ¤§¶¡ªº¾ã¼Æ(19xx ©Î 20xx °_¨M¤_³]©wªº¿ï¶µ)¡C";
+ Text[ arabic ] = "ÑÞã ÕÍíÍ Èíä 1583 æ9956¡ Ãæ Èíä 0 æ99 (19xx Ãæ 20xxÊÈÚÇð ááÎíÇÑ ÇáãÍÏÏ).";
+ Text[ dutch ] = "is een geheel getal tussen 1583 en 9956 of 0 en 99 (19xx of 20xx afhankelijk van de gedefinieerde optie).";
+ Text[ chinese_simplified ] = "ÊÇÒ»¸öÔÚ1583 ºÍ 9956 »ò 0 ºÍ 99 Ö®¼äµÄÕûÊý\n(19xx »ò 20xx Æð¾öÓÚÉ趨µÄÑ¡Ïî)¡£";
+ Text[ greek ] = "¸íáò áêÝñáéïò áñéèìüò ìåôáîý 1583 êáé 9956 Þ 0 êáé 99 (19xx Þ 20xx áíÜëïãá ìå ôçí åðéëåãìÝíç ñýèìéóç).";
+ Text[ korean ] = "1583°ú 9956 »çÀÌ, ¶Ç´Â 0°ú 99»çÀÌÀÇ Á¤¼öÀÔ´Ï´Ù (¼³Á¤µÈ ¿É¼Ç¿¡ µû¸£´Â 19xx ¶Ç´Â 20xx ).";
+ Text[ turkish ] = "1583 ile 9956 ya da 0 ile 99 (yapýlan ayara göre 19xx ya da 20xx) arasý bir tamsayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function BW #*=-
+ Resource SC_OPCODE_BW
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Barwert. Berechnet den Barwert einer Investition." ;
+ Text [ english ] = "Returns the present value of an investment." ;
+ Text [ norwegian ] = "Barwert. Berechnet den Barwert einer Investition." ;
+ Text [ italian ] = "Restituisce il valore attuale di un investimento." ;
+ Text [ portuguese_brazilian ] = "Barwert. Berechnet den Barwert einer Investition." ;
+ Text [ portuguese ] = "Valor líquido. Devolve o valor presente de um investimento." ;
+ Text [ finnish ] = "Barwert. Berechnet den Barwert einer Investition." ;
+ Text [ danish ] = "Nutidværdi. Beregner den nuværende værdi for en investering." ;
+ Text [ french ] = "Calcule la valeur actuelle d'un investissement." ;
+ Text [ swedish ] = "Nuvärdet. Beräknar nuvarande värdet av en investering." ;
+ Text [ dutch ] = "Huidige waarde. Berekent de huidige waarde van een investering." ;
+ Text [ spanish ] = "Devuelve el valor actual de una inversión." ;
+ Text [ english_us ] = "Present value. Calculates the present value of an investment." ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£¼ÆËãÒ»¸öͶ×ʵÄÏÖ½ðÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò òåêóùèé îáúåì èíâåñòèöèè.";
+ Text[ polish ] = "Podaje wartoœæ bie¿¹c¹ inwestycji.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB“ŠŽ‘‚ÌŒ»Ý‰¿’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "Ðä²{­È¡C­pºâ¤@­Ó§ë¸êªºÐä²{­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÞíãÉ ÇáÍÇáíÉ ááÇÓÊËãÇÑ.";
+ Text[ dutch ] = "Huidige waarde. Berekent de huidige waarde van een investering.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£¼ÆËãÒ»¸öͶ×ʵÄÏÖ½ðÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Õðïëïãßæåé ôçí ðáñïýóá áîßá ìéáò åðÝíäõóçò.";
+ Text[ korean ] = "ÇöÀç °ª. ÅõÀÚÀÇ ÇöÀç °ª °è»ê";
+ Text[ turkish ] = "Bugünkü deðer. Bir yatýrýmýn bugünkü deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_BW );
+ 5; 0; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zins" ;
+ Text [ english ] = "rate" ;
+ Text [ norwegian ] = "Zins" ;
+ Text [ italian ] = "Tasso_int" ;
+ Text [ portuguese_brazilian ] = "Zins" ;
+ Text [ portuguese ] = "Taxa" ;
+ Text [ finnish ] = "Zins" ;
+ Text [ danish ] = "Rente" ;
+ Text [ french ] = "Taux" ;
+ Text [ swedish ] = "ränta" ;
+ Text [ dutch ] = "Rente" ;
+ Text [ spanish ] = "tasa" ;
+ Text [ english_us ] = "rate" ;
+ Text[ chinese_simplified ] = "rate";
+ Text[ russian ] = "Ïðîöåíò ñ êàïèòàëà";
+ Text[ polish ] = "Odsetki";
+ Text[ japanese ] = "—˜—¦";
+ Text[ chinese_traditional ] = "rate";
+ Text[ arabic ] = "Rate";
+ Text[ dutch ] = "Rente";
+ Text[ chinese_simplified ] = "rate";
+ Text[ greek ] = "Rate";
+ Text[ korean ] = "ºñÀ²";
+ Text[ turkish ] = "Faiz";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zinssatz pro Periode." ;
+ Text [ english ] = "is the interest rate per period." ;
+ Text [ norwegian ] = "Der Zinssatz pro Periode." ;
+ Text [ italian ] = "È il tasso di interesse per periodo." ;
+ Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
+ Text [ portuguese ] = "é a taxa de juro por período." ;
+ Text [ finnish ] = "Der Zinssatz pro Periode." ;
+ Text [ danish ] = "Rentesatsen per periode." ;
+ Text [ french ] = "Le taux d'intérêt par période." ;
+ Text [ swedish ] = "Räntesatsen per period." ;
+ Text [ dutch ] = "De rente per periode." ;
+ Text [ spanish ] = "es la tasa de interés por período." ;
+ Text [ english_us ] = "The rate of interest for the period given." ;
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ russian ] = "Ïðîöåíòíàÿ ñòàâêà çà ïåðèîä.";
+ Text[ polish ] = "Stopa oprocentowania dla okresu.";
+ Text[ japanese ] = "“ŠŽ‘ŠúŠÔ‚ð’Ê‚¶‚½ˆê’è‚Ì—˜—¦B";
+ Text[ chinese_traditional ] = "¨C­Ó¶g´Áªº§Q²v¡C";
+ Text[ arabic ] = "äÓÈÉ ÇáÝÇÆÏÉ áßá ÝÊÑÉ.";
+ Text[ dutch ] = "De rente per periode.";
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ greek ] = "Ôï åðéôüêéï áíÜ ðåñßïäï.";
+ Text[ korean ] = "ÁÖ¾îÁø ±â°£¿¡ ´ëÇÑ ÀÌÀÚÀ²";
+ Text[ turkish ] = "Dönem faiz oraný.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "ZZR" ;
+ Text [ english ] = "nper" ;
+ Text [ norwegian ] = "ZZR" ;
+ Text [ italian ] = "Num_rate" ;
+ Text [ portuguese_brazilian ] = "ZZR" ;
+ Text [ portuguese ] = "NPER" ;
+ Text [ finnish ] = "ZZR" ;
+ Text [ danish ] = "NPER" ;
+ Text [ french ] = "NPM" ;
+ Text [ swedish ] = "BPER" ;
+ Text [ dutch ] = "BT" ;
+ Text [ spanish ] = "nper" ;
+ Text [ english_us ] = "NPER" ;
+ Text[ chinese_simplified ] = "NPER";
+ Text[ russian ] = "ÊÏÅÐ";
+ Text[ polish ] = "NPER";
+ Text[ japanese ] = "‘SŽx•¥‚¢ŠúŠÔ";
+ Text[ chinese_traditional ] = "NPER";
+ Text[ arabic ] = "NPER";
+ Text[ dutch ] = "BT";
+ Text[ chinese_simplified ] = "NPER";
+ Text[ greek ] = "NPER";
+ Text[ korean ] = "NPER";
+ Text[ turkish ] = "NPER";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird. : Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuitõt (Rente) gezahlt wird. */
+ Text = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ english ] = "is the total number of payment periods in an annuity." ;
+ Text [ norwegian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ italian ] = "È il numero totale dei periodi di pagamento in un'annualità." ;
+ Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ portuguese ] = "é o número total de períodos de pagamento de uma anuidade." ;
+ Text [ finnish ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
+ Text [ french ] = "Le nombre total de périodes de paiement de l'annuité." ;
+ Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder då annuitet (pension) betalas." ;
+ Text [ dutch ] = "Betalingstermijn. Het totale aantal perioden waarin de annuïteit wordt betaald." ;
+ Text [ spanish ] = "es el número total de períodos de pago en una anualidad." ;
+ Text [ english_us ] = "The payment period. The total number of periods in which the annuity is paid." ;
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî ïåðèîäîâ âûïëàò ãîäîâîé ðåíòû.";
+ Text[ polish ] = "Okres p³atnoœci. Ca³kowita liczba okresów, w których sp³acana bêdzie suma sp³aty d³ugu.";
+ Text[ japanese ] = "Žx•¥‚¢ŠúŠÔB“ŠŽ‘ŠúŠÔ‘S‘Ì‚Å‚ÌŽx•¥‰ñ”‚̇ŒvB";
+ Text[ chinese_traditional ] = "¤ä¥IªºÁ`¶g´Á¼Æ¡C";
+ Text[ arabic ] = "ãÏÉ ÇáÏÝÚ. ÇáÚÏÏ ÇáÅÌãÇáí ááÝÊÑÇÊ ÇáÊí íÊã ÝíåÇ ÏÝÚ ÇáÓøõäÇåíøÉ (ãÚÇÔ).";
+ Text[ dutch ] = "Betalingstermijn. Het totale aantal perioden waarin de annuïteit wordt betaald.";
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ greek ] = "ÄéÜñêåéá ðëçñùìÞò. Ôï óýíïëï ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ðëçñþíåôáé ôï ÷ñåùëýóéï (óýíôáîç).";
+ Text[ korean ] = "ÁöºÒ ±â°£. Áö±ÞµÈ ¿¬±ÝÀÇ ±â°£ÀÇ ÃÑ ¼ö.";
+ Text[ turkish ] = "Taksit sayýsý. Annüite ödenen toplam dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "RMZ" ;
+ Text [ english ] = "pmt" ;
+ Text [ norwegian ] = "RMZ" ;
+ Text [ italian ] = "Rata" ;
+ Text [ portuguese_brazilian ] = "RMZ" ;
+ Text [ portuguese ] = "Pgto" ;
+ Text [ finnish ] = "RMZ" ;
+ Text [ danish ] = "YDELSE" ;
+ Text [ french ] = "VPM" ;
+ Text [ swedish ] = "RBB" ;
+ Text [ dutch ] = "RB" ;
+ Text [ spanish ] = "pago" ;
+ Text [ english_us ] = "PMT" ;
+ Text[ chinese_simplified ] = "PMT";
+ Text[ russian ] = "Âûïëàòà";
+ Text[ polish ] = "PMT";
+ Text[ japanese ] = "’èŠúŽx•¥Šz";
+ Text[ chinese_traditional ] = "PMT";
+ Text[ arabic ] = "PMT";
+ Text[ dutch ] = "RB";
+ Text[ chinese_simplified ] = "PMT";
+ Text[ greek ] = "PMT";
+ Text[ korean ] = "PMT";
+ Text[ turkish ] = "PMT";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird. : Regelmõ˜ige Zahlung. Die konstante Annuitõt, die in jeder Periode gezahlt wird. */
+ Text = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ english ] = "is the payment made each period and cannot change over the life of the annuity." ;
+ Text [ norwegian ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ italian ] = "È il pagamento effettuato regolarmente in ciascun periodo nel corso dell'annualità." ;
+ Text [ portuguese_brazilian ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ portuguese ] = "é o pagamento feito em cada período, mantendo-se constante durante a vigência da anuidade." ;
+ Text [ finnish ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ danish ] = "Ydelse. Den konstante ydelse som betales hver periode og ikke kan ændres i annuitetens løbetid." ;
+ Text [ french ] = "Paiement régulier. L'annuité constante payée pour chaque période." ;
+ Text [ swedish ] = "Regelbunden betalning. Den konstanta annuiteten som betalas i varje period." ;
+ Text [ dutch ] = "Regelmatige betaling. De constante annuïteit die in elke periode wordt betaald." ;
+ Text [ spanish ] = "es el pago que se efectúa en cada período y que no cambia durante la vida de la anualidad." ;
+ Text [ english_us ] = "Regular payments. The constant amount of annuity that is paid in each period." ;
+ Text[ chinese_simplified ] = "·ÖÆÚÖ§¸¶¶î¡£ÔÚÿ¸öÖÜÆÚÓ¦Ö§¸¶µÄ¹Ì¶¨½ð¶î¡£";
+ Text[ russian ] = "Âûïëàòà, ïðîèçâîäèìàÿ â êàæäûé ïåðèîä, è íå ìåíÿþùàÿñÿ çà âñå âðåìÿ âûïëàòû ðåíòû.";
+ Text[ polish ] = "Sta³a suma sp³aty d³ugu (obejmuj¹ca czêœæ d³ugu i odsetki), która jest p³acona regularnie w ka¿dym okresie.";
+ Text[ japanese ] = "’èŠú“I‚ÉŽx•¥‚¤ŠzB“ŠŽ‘ŠúŠÔ“à‚ÉŽx•¥Šz‚ð•ÏX‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "¤À´Á¤ä¥IÃB¡C¦b¨C­Ó¶g´ÁÀ³¤ä¥Iªº©T©wª÷ÃB¡C";
+ Text[ arabic ] = "ÞÓØ ÏæÑí. ÇáÞÓØ ÇáËÇÈÊ ÇáÐí íÊã ÏÝÚå Ýí ßá ÝÊÑÉ.";
+ Text[ dutch ] = "Regelmatige betaling. De constante annuïteit die in elke periode wordt betaald.";
+ Text[ chinese_simplified ] = "·ÖÆÚÖ§¸¶¶î¡£ÔÚÿ¸öÖÜÆÚÓ¦Ö§¸¶µÄ¹Ì¶¨½ð¶î¡£";
+ Text[ greek ] = "ÔáêôéêÞ ðëçñùìÞ. Ôï óôáèåñü ÷ñåùëýóéï êÜèå ðåñéüäïõ.";
+ Text[ korean ] = "ÀÏ¹Ý ÁöºÒ. °¢ ±â°£¿¡ ÁöºÒµÈ °íÁ¤ ¿¬±Ý";
+ Text[ turkish ] = "Düzenli ödemeler. Her dönem ödenen sabit annüiteler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "ZW" ;
+ Text [ english ] = "fv" ;
+ Text [ norwegian ] = "ZW" ;
+ Text [ italian ] = "Val_futuro" ;
+ Text [ portuguese_brazilian ] = "ZW" ;
+ Text [ portuguese ] = "Vf" ;
+ Text [ finnish ] = "ZW" ;
+ Text [ danish ] = "FV" ;
+ Text [ french ] = "VC" ;
+ Text [ swedish ] = "FV" ;
+ Text [ dutch ] = "TW" ;
+ Text [ spanish ] = "vf" ;
+ Text [ english_us ] = "fv" ;
+ Text[ chinese_simplified ] = "fv";
+ Text[ russian ] = "ÁÇ";
+ Text[ polish ] = "fv";
+ Text[ japanese ] = "«—ˆ‰¿’l";
+ Text[ chinese_traditional ] = "fv";
+ Text[ arabic ] = "Fv";
+ Text[ dutch ] = "TW";
+ Text[ chinese_simplified ] = "fv";
+ Text[ greek ] = "fv";
+ Text[ korean ] = "fv";
+ Text[ turkish ] = "FV";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. : Zuk³nftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. */
+ Text = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ english ] = "is the future value, or a cash balance you want to attain after the last payment is made." ;
+ Text [ norwegian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ italian ] = "È il valore futuro (o saldo in contanti) che si desidera raggiungere dopo aver effettuato l'ultimo pagamento." ;
+ Text [ portuguese_brazilian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ portuguese ] = "é o valor futuro ou um saldo de caixa obtido depois de efectuado o último pagamento." ;
+ Text [ finnish ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ danish ] = "Fremtidsværdi. Den værdi eller den kassebalance, der ønskes opnået, når den sidste ydelse er betalt." ;
+ Text [ french ] = "Valeur future (valeur capitalisée) : le montant que vous souhaitez obtenir après le dernier paiement." ;
+ Text [ swedish ] = "Framtida värde. Värdet (slutvärde) som skall uppnås efter den sista betalningen." ;
+ Text [ dutch ] = "Toekomstige waarde. De waarde (eindwaarde) die na de laatste betaling moet zijn bereikt." ;
+ Text [ spanish ] = "es el valor futuro o el saldo en efectivo que desea lograr después de efectuar el último pago." ;
+ Text [ english_us ] = "Future value. The value (final value) to be attained after the last payment." ;
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£Íê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄ×îÖÕÖµ¡£";
+ Text[ russian ] = "Áóäóùåå çíà÷åíèå. Çíà÷åíèå (êîíå÷íîå çíà÷åíèå), êîòîðîå äîëæíî ïîëó÷èòüñÿ ïîñëå ïîñëåäíåãî ïëàòåæà.";
+ Text[ polish ] = "Przysz³a wartoœæ. Wartoœæ koñcowa, która ma zostaæ osi¹gniêta po dokonaniu ostatniej p³atnoœci.";
+ Text[ japanese ] = "«—ˆ‰¿’lB“ŠŽ‘‚Ì«—ˆ‰¿’lA‚Ü‚½‚ÍÅŒã‚ÌŽx•¥‚¢‚ðs‚Á‚½Œã‚ÉŽc‚錻‹à‚ÌŽûŽxB";
+ Text[ chinese_traditional ] = "¥¼¨Ó­È¡C§¹¦¨³Ì«á¤@¦¸¤ä¥I«á¹F¨ìªº³Ì²×­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÓÊÞÈáíÉ¡ Ãæ ÇáãíÒÇäíÉ ÇáäÞÏíÉ ÇáÊí ÊÑíÏ ÇáæÕæá ÅáíåÇ ÈÚÏ ÓÏÇÏ ÃÎÑ ÏÝÚÉ.";
+ Text[ dutch ] = "Toekomstige waarde. De waarde (eindwaarde) die na de laatste betaling moet zijn bereikt.";
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£Íê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄ×îÖÕÖµ¡£";
+ Text[ greek ] = "ÌåëëïíôéêÞ ôéìÞ. Ç ôéìÞ (ôåëéêÞ ôéìÞ) ðïõ èá ðñïêýøåé ìåôÜ ôçí ôåëåõôáßá ðëçñùìÞ.";
+ Text[ korean ] = "¹Ì·¡ °ª. ¸¶Áö¸· ÁöºÒ ÀÌÈÄ¿¡ ´Þ¼ºµÈ °ª(¸¶Áö¸· °ª)";
+ Text[ turkish ] = "Gelecek deðer. Son ödeme yapýldýktan sonra elde edilmek istenen deðer (son deðer).";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "F" ;
+ Text [ english ] = "type" ;
+ Text [ norwegian ] = "F" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "F" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "F" ;
+ Text [ danish ] = "F" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "F" ;
+ Text [ dutch ] = "V" ;
+ Text [ spanish ] = "tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Žx•¥Šú“ú";
+ Text[ chinese_traditional ] = "type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "V";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fõlligkeit. F = 1 hei˜t Fõlligkeit am Anfang einer Periode, F = 0 am Ende. */
+ Text = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ english ] = "is the number 0 or 1 and indicates when payments are due." ;
+ Text [ norwegian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ italian ] = "Scadenza pagamenti. Tipo=1 significa scadenza all'inizio e Tipo=0 significa alla fine di un periodo." ;
+ Text [ portuguese_brazilian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ portuguese ] = "é o número 0 ou 1 e indica as datas de vencimento dos pagamentos. 1 = início do período; 0 = fim do período." ;
+ Text [ finnish ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
+ Text [ french ] = "Échéance. Type=1 signifie échéance au début d'une période, type=0 à la fin d'une période." ;
+ Text [ swedish ] = "Förfallotidpunkt. F = 1 betyder förfallotidpunkt i början av en period, F = 0 i slutet." ;
+ Text [ dutch ] = "Vervaltijd. V = 1 betekent verval aan het begin van een periode, V = 0 aan het einde." ;
+ Text [ spanish ] = "es el vencimiento de los pagos. El 1 es al comienzo del período, el 0 al final." ;
+ Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬type= 0 ±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå (0 èëè1), îáîçíà÷àþùåå, äîëæíà ëè ïðîèçâîäèòüñÿ âûïëàòà â êîíöå ïåðèîäà (0) èëè â íà÷àëå ïåðèîäà (1).";
+ Text[ polish ] = "Wartoœæ 0 lub 1 okreœlaj¹ca sposób dokonywania p³atnoœci (z do³u lub z góry).";
+ Text[ japanese ] = "Žx•¥Šú“úBŽx•¥Šú“ú=1‚ÍŠeŠú‚ÌŠúŽñAŽx•¥Šú“ú=0‚ÍŠeŠú‚ÌŠú––B";
+ Text[ chinese_traditional ] = "¨ì´ÁÃþ«¬¡C F = 1 ªí¥Ü¦b¶g´Á¶}©l®É¨ì´Á¡MF = 0 ªí¥Ü¦b¶g´Áµ²§ô®É¨ì´Á¡C";
+ Text[ arabic ] = "ÇáÏÝÚ Ýí ÈÏÇíÉ ÇáÝÊÑÉ ý= 1º ÇáÏÝÚ Ýí äåÇíÉ ÇáÝÊÑÉ = 0.";
+ Text[ dutch ] = "Vervaltijd. V = 1 betekent verval aan het begin van een periode, V = 0 aan het einde.";
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬type= 0 ±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ greek ] = "×ñüíïò ðëçñùìÞò.F = 1 óçìáßíåé ðëçñùìÞ óôçí áñ÷Þ ìéáò ðåñéüäïõ, F = 0 óçìáßíåé ðëçñùìÞ óôï ôÝëïò ôçò ðåñéüäïõ.";
+ Text[ korean ] = "¸¸±âÀÏ=1Àº ÁöºÒ ±âÇÑÀÇ ½ÃÀÛÀ» ³ªÅ¸³»°í ¸¸±âÀÏ=0Àº ÁöºÒ ±âÇÑÀÇ ³¡À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Vade. F = 1, vade dönem baþýnda, F = 0 ise dönem sonunda anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZW #*=-
+ Resource SC_OPCODE_ZW
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zukünftiger Wert. Berechnet den Endwert einer Investition bei regelmäßigen Zahlungen und konstantem Zinssatz. : Zuk³nftiger Wert. Berechnet den Endwert einer Investition bei regelmõ˜igen Zahlungen und konstantem Zinssatz. */
+ Text = "Zukünftiger Wert. Berechnet den Endwert einer Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ english ] = "Returns the future value of an investment based on periodic, constant payments and a constant interest rate." ;
+ Text [ norwegian ] = "Zukünftiger Wert. Berechnet den Endwert einer Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ italian ] = "Restituisce il valore futuro di un investimento sulla base di pagamenti periodici e costanti e di un tasso di interesse costante." ;
+ Text [ portuguese_brazilian ] = "Zukünftiger Wert. Berechnet den Endwert einer Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ portuguese ] = "Devolve o valor futuro de um investimento de acordo com os pagamentos periódicos e constantes e com uma taxa de juros constante." ;
+ Text [ finnish ] = "Zukünftiger Wert. Berechnet den Endwert einer Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ danish ] = "Fremtidsværdi. Beregner slutværdien af en investering ved konstant ydelse og konstant rentesats." ;
+ Text [ french ] = "Calcule la valeur future d'un investissement sur la base de paiements réguliers et d'un taux d'intérêt constant." ;
+ Text [ swedish ] = "Framtida värde. Beräknar slutvärdet för en investering vid regelbundna betalningar och konstant räntesats." ;
+ Text [ dutch ] = "Berekent de eindwaarde van een investering bij regelmatige betalingen en bij een constante rentevoet." ;
+ Text [ spanish ] = "Devuelve el valor futuro de una inversión basándose en pagos periódicos constantes y en una tasa de interés constante." ;
+ Text [ english_us ] = "Future value. Returns the future value of an investment based on regular payments and a constant interest rate." ;
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£ÔÚ¶¨ÆÚÖ§¸¶ºÍÀûÂʺ㶨µÄÇé¿öÏ£¬\n¼ÆËãÒ»ÏîͶ×ʵÄδÀ´Öµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò áóäóùåå çíà÷åíèå âêëàäà ñ ïîñòîÿííûìè âûïëàòàìè è ïîñòîÿííûì ïðîöåíòîì.";
+ Text[ polish ] = "Oblicza wartoœæ przysz³¹ inwestycji opart¹ na regularnych wp³atach i sta³ej stopie oprocentowania.";
+ Text[ japanese ] = "«—ˆ‰¿’lB“ŠŽ‘‚Ì«—ˆ‰¿’lA‚Ü‚½‚ÍÅŒã‚ÌŽx•¥‚¢‚ðs‚Á‚½Œã‚ÉŽc‚錻‹à‚ÌŽûŽx‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥¼¨Ó­È¡C¦b©w´Á¤ä¥I©M§Q²v«í©wªº±¡ªp¤U¡M­pºâ¤@¶µ§ë¸êªº¥¼¨Ó­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÞíãÉ ÇáãÓÊÞÈáíÉ áÇÓÊËãÇÑ ÈÇáÇÓÊäÇÏ Åáì ÏÝÚÇÊ ÏæÑíÉ æäÓÈÉ ÝÇÆÏÉ ËÇÈÊÉ.";
+ Text[ dutch ] = "Berekent de eindwaarde van een investering bij regelmatige betalingen en bij een constante rentevoet.";
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£ÔÚ¶¨ÆÚÖ§¸¶ºÍÀûÂʺ㶨µÄÇé¿öÏ£¬\n¼ÆËãÒ»ÏîͶ×ʵÄδÀ´Öµ¡£";
+ Text[ greek ] = "ÌåëëïíôéêÞ áîßá. Õðïëïãßæåé ôçí ôåëéêÞ áîßá ìéáò åðÝíäõóçò ìå ôáêôéêÝò ðëçñùìÝò êáé óôáèåñü åðéôüêéï.";
+ Text[ korean ] = "¹Ì·¡ °ª. ÀÏ¹Ý Áö±Þ°ú °íÁ¤ ÀÌÀÚÀ²¿¡ µû¸¥ ÅõÀÚÀÇ ¹Ì·¡ °ªÀ» °è»ê";
+ Text[ turkish ] = "Gelecek deðer. Düzenli ödemeli ve sabit faiz oranlý yatýrýmýn son deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_ZW );
+ 5; 0; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zins" ;
+ Text [ english ] = "rate" ;
+ Text [ norwegian ] = "Zins" ;
+ Text [ italian ] = "tasso_int" ;
+ Text [ portuguese_brazilian ] = "Zins" ;
+ Text [ portuguese ] = "Taxa" ;
+ Text [ finnish ] = "Zins" ;
+ Text [ danish ] = "Rente" ;
+ Text [ french ] = "Taux" ;
+ Text [ swedish ] = "ränta" ;
+ Text [ dutch ] = "Rente" ;
+ Text [ spanish ] = "tasa" ;
+ Text [ english_us ] = "rate" ;
+ Text[ chinese_simplified ] = "rate";
+ Text[ russian ] = "Íîðìà";
+ Text[ polish ] = "Odsetki";
+ Text[ japanese ] = "—˜—¦";
+ Text[ chinese_traditional ] = "rate";
+ Text[ arabic ] = "Rate";
+ Text[ dutch ] = "Rente";
+ Text[ chinese_simplified ] = "rate";
+ Text[ greek ] = "rate";
+ Text[ korean ] = "ºñÀ²";
+ Text[ turkish ] = "Faiz";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zinssatz pro Periode." ;
+ Text [ english ] = "is the interest rate per period." ;
+ Text [ norwegian ] = "Der Zinssatz pro Periode." ;
+ Text [ italian ] = "è il tasso di interesse per periodo." ;
+ Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
+ Text [ portuguese ] = "é a taxa de juros periódica." ;
+ Text [ finnish ] = "Der Zinssatz pro Periode." ;
+ Text [ danish ] = "Rentesatsen per periode." ;
+ Text [ french ] = "Le taux d'intérêt par période." ;
+ Text [ swedish ] = "Räntesatsen per period." ;
+ Text [ dutch ] = "De rentevoet per termijn." ;
+ Text [ spanish ] = "es la tasa de interés por período." ;
+ Text [ english_us ] = "The rate of interest per period." ;
+ Text[ chinese_simplified ] = "¸÷ÆÚµÄÀûÂÊ¡£";
+ Text[ russian ] = "Íîðìà ïðèáûëè çà ïåðèîä.";
+ Text[ polish ] = "Stopa procentowa dla pojedynczego okresu.";
+ Text[ japanese ] = "ŠeŠú‚Ì—˜‘§";
+ Text[ chinese_traditional ] = "¦U´Áªº§Q²v¡C";
+ Text[ arabic ] = "äÓÈÉ ÇáÝÇÆÏÉ áßá ÝÊÑÉ.";
+ Text[ dutch ] = "De rentevoet per termijn.";
+ Text[ chinese_simplified ] = "¸÷ÆÚµÄÀûÂÊ¡£";
+ Text[ greek ] = "Ôï åðéôüêéï áíÜ ðåñßïäï.";
+ Text[ korean ] = "±â°£´ç ÀÌÀÚÀ²";
+ Text[ turkish ] = "Dönem faiz oraný.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "ZZR" ;
+ Text [ english ] = "nper" ;
+ Text [ norwegian ] = "ZZR" ;
+ Text [ italian ] = "NUM.RATE" ;
+ Text [ portuguese_brazilian ] = "ZZR" ;
+ Text [ portuguese ] = "Nper" ;
+ Text [ finnish ] = "ZZR" ;
+ Text [ danish ] = "NPER" ;
+ Text [ french ] = "NPM" ;
+ Text [ swedish ] = "BPER" ;
+ Text [ dutch ] = "NPER" ;
+ Text [ spanish ] = "nper" ;
+ Text [ english_us ] = "NPER" ;
+ Text[ chinese_simplified ] = "nper";
+ Text[ russian ] = "Êïåð";
+ Text[ polish ] = "NPER";
+ Text[ japanese ] = "‘SŽx•¥‚¢ŠúŠÔ";
+ Text[ chinese_traditional ] = "nper";
+ Text[ arabic ] = "Nper";
+ Text[ dutch ] = "NPER";
+ Text[ chinese_simplified ] = "nper";
+ Text[ greek ] = "nper";
+ Text[ korean ] = "NPER";
+ Text[ turkish ] = "NPER";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird. : Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuitõt (Rente) gezahlt wird. */
+ Text = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ english ] = "is the total number of payment periods in an annuity." ;
+ Text [ norwegian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ italian ] = "è il numero totale dei periodi di pagamento in un'annualità." ;
+ Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ portuguese ] = "é o número total de períodos de pagamento numa anuidade." ;
+ Text [ finnish ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
+ Text [ french ] = "Le nombre total de périodes de paiement de l'annuité." ;
+ Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder då annuiteten (pension) betalas." ;
+ Text [ dutch ] = "Het totale aantal termijnen waarover rente wordt betaald." ;
+ Text [ spanish ] = "es el número total de pagos de una anualidad." ;
+ Text [ english_us ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
+ Text[ chinese_simplified ] = "×ÜÖ§¸¶ÆÚÊý¡£Ö§¸¶Äê½ðµÄ×ÜÖÜÆÚÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî ïåðèîäîâ âûïëàò ãîäîâîé ðåíòû.";
+ Text[ polish ] = "Okres p³atnoœci. Ca³kowita liczba okresów, w których sp³acana bêdzie suma sp³aty d³ugu.";
+ Text[ japanese ] = "Žx•¥‚¢ŠúŠÔB”N‹à‚ª•Ô‚³‚ê‚é‘S‘Ì‚ÌŠúŠÔB";
+ Text[ chinese_traditional ] = "Á`¤ä¥I´Á¼Æ¡C¤ä¥I¦~ª÷ªºÁ`¶g´Á¼Æ¡C";
+ Text[ arabic ] = "ãÏÉ ÇáÏÝÚ. ÇáÚÏÏ ÇáÅÌãÇáí ááÝÊÑÇÊ ÇáÊí íÊã ÝíåÇ ÏÝÚ ÇáÓøõäÇåíøÉ (ãÚÇÔ).";
+ Text[ dutch ] = "Het totale aantal termijnen waarover rente wordt betaald.";
+ Text[ chinese_simplified ] = "×ÜÖ§¸¶ÆÚÊý¡£Ö§¸¶Äê½ðµÄ×ÜÖÜÆÚÊý¡£";
+ Text[ greek ] = "ÄéÜñêåéá ðëçñùìÞò. Ôï óýíïëï ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ðëçñþíåôáé ôï ÷ñåùëýóéï (óýíôáîç).";
+ Text[ korean ] = "Áö±Þ ±â°£. ÁöºÒµÈ ¿¬±ÝÀÇ ±â°£ÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Taksit sayýsý. Annüite ödenen toplam dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "RMZ" ;
+ Text [ english ] = "pmt" ;
+ Text [ norwegian ] = "RMZ" ;
+ Text [ italian ] = "RATA" ;
+ Text [ portuguese_brazilian ] = "RMZ" ;
+ Text [ portuguese ] = "Pgto" ;
+ Text [ finnish ] = "RMZ" ;
+ Text [ danish ] = "YDELSE" ;
+ Text [ french ] = "VPM" ;
+ Text [ swedish ] = "RBB" ;
+ Text [ dutch ] = "Bet" ;
+ Text [ spanish ] = "pago" ;
+ Text [ english_us ] = "PMT" ;
+ Text[ chinese_simplified ] = "pmt";
+ Text[ russian ] = "Âûïëàòà";
+ Text[ polish ] = "PMT";
+ Text[ japanese ] = "’èŠúŽx•¥Šz";
+ Text[ chinese_traditional ] = "pmt";
+ Text[ arabic ] = "Pmt";
+ Text[ dutch ] = "Bet";
+ Text[ chinese_simplified ] = "pmt";
+ Text[ greek ] = "Pmt";
+ Text[ korean ] = "PMT";
+ Text[ turkish ] = "Düzenli ödeme";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird. : Regelmõ˜ige Zahlung. Die konstante Annuitõt, die in jeder Periode gezahlt wird. */
+ Text = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ english ] = "is the payment made each period; it cannot change over the life of the annuity." ;
+ Text [ norwegian ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ italian ] = "è il pagamento effettuato in ciascun periodo e non può variare nel corso dell'annualità." ;
+ Text [ portuguese_brazilian ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ portuguese ] = "é o pagamento feito em cada período, mantendo-se constante durante a vigência da anuidade." ;
+ Text [ finnish ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ danish ] = "Ydelse. Den konstante ydelse som betales hver periode og ikke kan ændres i annuitetens løbetid" ;
+ Text [ french ] = "Paiement régulier. L'annuité constante payée pour chaque période." ;
+ Text [ swedish ] = "Regelbunden betalning. Den konstanta annuiteten som betalas i varje period." ;
+ Text [ dutch ] = "De betaling die elke termijn wordt verricht." ;
+ Text [ spanish ] = "es el pago que se efectúa cada período y que no puede cambiar durante la vigencia de la anualidad." ;
+ Text [ english_us ] = "Regular payments. The constant annuity to be paid in each period." ;
+ Text[ chinese_simplified ] = "¸÷ÆÚÖ§¸¶µÄºã¶¨Äê½ð¡£";
+ Text[ russian ] = "Âûïëàòà, ïðîèçâîäèìàÿ â êàæäûé ïåðèîä è íå ìåíÿþùàÿñÿ çà âñå âðåìÿ âûïëàòû ðåíòû.";
+ Text[ polish ] = "Sta³a suma sp³aty d³ugu (obejmuj¹ca czêœæ d³ugu i odsetki), która jest p³acona regularnie w ka¿dym okresie.";
+ Text[ japanese ] = "’èŠú“I‚È’èŠz‚ÌŽx•¥‚¢B—˜—¦‚ªˆê’è‚Å‚ ‚é‚Ɖ¼’肵‚ÄA‘Ý•t‚É•K—v‚È’èŠúŽx•¥Šz‚ðŽZo‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦U´Á¤ä¥Iªº«í©w¦~ª÷¡C";
+ Text[ arabic ] = "ÞÓØ ÏæÑí. ÇáÞÓØ ÇáËÇÈÊ ÇáÐí íÊã ÏÝÚå Ýí ßá ÝÊÑÉ.";
+ Text[ dutch ] = "De betaling die elke termijn wordt verricht.";
+ Text[ chinese_simplified ] = "¸÷ÆÚÖ§¸¶µÄºã¶¨Äê½ð¡£";
+ Text[ greek ] = "ÔáêôéêÞ ðëçñùìÞ. Ôï óôáèåñü ÷ñåùëýóéï êÜèå ðåñéüäïõ.";
+ Text[ korean ] = "Á¤±â ÁöºÒ. Áֱ⸶´Ù ÁöºÒµÇ´Â ÀÏÁ¤ ¿¬ºÎ±ÝÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Düzenli ödemeler. Her dönem ödenen sabit annüite.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "BW" ;
+ Text [ english ] = "pv" ;
+ Text [ norwegian ] = "BW" ;
+ Text [ italian ] = "VA" ;
+ Text [ portuguese_brazilian ] = "BW" ;
+ Text [ portuguese ] = "VA" ;
+ Text [ finnish ] = "BW" ;
+ Text [ danish ] = "NV" ;
+ Text [ french ] = "VA" ;
+ Text [ swedish ] = "NV" ;
+ Text [ dutch ] = "HW" ;
+ Text [ spanish ] = "va" ;
+ Text [ english_us ] = "pv" ;
+ Text[ chinese_simplified ] = "pv";
+ Text[ russian ] = "Íç";
+ Text[ polish ] = "PV";
+ Text[ japanese ] = "Œ»Ý‰¿’l";
+ Text[ chinese_traditional ] = "pv";
+ Text[ arabic ] = "Pv";
+ Text[ dutch ] = "HW";
+ Text[ chinese_simplified ] = "pv";
+ Text[ greek ] = "Pv";
+ Text[ korean ] = "pv";
+ Text[ turkish ] = "Bugünkü deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ english ] = "is the present value, or the lump-sum amount that a series of future payments is worth right now." ;
+ Text [ norwegian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ italian ] = "è il valore attuale o la somma forfettaria che rappresenta il valore attuale di una serie di pagamenti futuri." ;
+ Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ portuguese ] = "é o valor presente ou a quantia total actual correspondente a uma série de pagamentos futuros." ;
+ Text [ finnish ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ danish ] = "Nutidsværdi. Den værdi en række ydelser er værd nu." ;
+ Text [ french ] = "Valeur actuelle = la valeur, à la date d'aujourd'hui, d'une série de remboursements futurs." ;
+ Text [ swedish ] = "Nuvarande värde. Det nuvarande värdet för raden av betalningar." ;
+ Text [ dutch ] = "De huidige waarde, ofwel het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is." ;
+ Text [ spanish ] = "es el valor actual de la cantidad total de una serie de pagos futuros." ;
+ Text [ english_us ] = "Present value. The current value of a series of payments" ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£Ò»ÏµÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ russian ] = "Òåêóùàÿ ñòîèìîñòü èëè îáùàÿ ñóììà âñåõ áóäóùèõ ïëàòåæåé ñ íàñòîÿùåãî ìîìåíòà.";
+ Text[ polish ] = "Wartoœæ bie¿¹ca dla serii przysz³ych p³atnoœci.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB«—ˆs‚í‚ê‚éˆê˜A‚ÌŽx•¥‚¢‚ðAŒ»Žž“_‚ňꊇ•¥‚¢‚µ‚½ê‡‚̇Œv‹àŠzB";
+ Text[ chinese_traditional ] = "Ðä²{­È¡C¤@¨t¦C¥¼¨Ó¥I´Ú·í«e­Èªº²Ö¿n¼Æ¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÍÇáíÉ áÓáÓáÉ ÇáÏÝÚÇÊ.";
+ Text[ dutch ] = "De huidige waarde, ofwel het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£Ò»ÏµÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Ç ðáñïýóá áîßá ôçò óåéñÜò ðëçñùìþí.";
+ Text[ korean ] = "ÇöÀç°ª. ÁöºÒÀÇ ¿¬¼ÓÀÇ ÇöÀç °ª";
+ Text[ turkish ] = "Bugünkü deðer. Ödeme dizisinin bugünkü deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "F" ;
+ Text [ english ] = "type" ;
+ Text [ norwegian ] = "F" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "F" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "F" ;
+ Text [ danish ] = "F" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "F" ;
+ Text [ dutch ] = "V" ;
+ Text [ spanish ] = "tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "TYP";
+ Text[ japanese ] = "Žx•¥Šú“ú";
+ Text[ chinese_traditional ] = "type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "V";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fõlligkeit. F = 1 hei˜t Fõlligkeit am Anfang einer Periode, F = 0 am Ende. */
+ Text = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ english ] = "is the number 0 or 1 and indicates when payments are due." ;
+ Text [ norwegian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ italian ] = "Scadenze dei pagamenti. F = 1 significa all'inizio di un periodo, F = 0 alla fine." ;
+ Text [ portuguese_brazilian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ portuguese ] = "é o vencimento dos pagamentos de juros. 1 significa no ínicio do período, 0 no final." ;
+ Text [ finnish ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
+ Text [ french ] = "Échéance. Type=1 signifie échéance au début d'une période, type=0 à la fin d'une période." ;
+ Text [ swedish ] = "Förfallotidpunkt. F = 1 betyder förfallotidpunkt i början av en period och F = 0 i slutet." ;
+ Text [ dutch ] = "Vervaldatum. V = 1 geeft aan dat de betaling moet worden verricht aan het begin van een periode, V = 0 aan het einde." ;
+ Text [ spanish ] = "es el vencimiento de los pagos, 1 es al comienzo del período, 0 al final." ;
+ Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬type= 0 ±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå (0 èëè1), îáîçíà÷àþùåå, äîëæíà ëè ïðîèçâîäèòüñÿ âûïëàòà â êîíöå ïåðèîäà (0) èëè â íà÷àëå ïåðèîäà (1).";
+ Text[ polish ] = "Wartoœæ 0 lub 1 okreœlaj¹ca sposób dokonywania p³atnoœci ( z do³u lub z góry).";
+ Text[ japanese ] = "Žx•¥Šú“úAŽx•¥Šú“ú=1 ŠeŠú‚ÌŠúŽñAŽx•¥Šú“ú=0 ŠeŠú‚ÌŠú––B";
+ Text[ chinese_traditional ] = "¨ì´ÁÃþ«¬¡C F = 1 ªí¥Ü¦b´Áªì®É¨ì´Á¡MF = 0 ªí¥Ü¦b´Á¥½®É¨ì´Á¡C";
+ Text[ arabic ] = "ÇáÏÝÚ Ýí ÈÏÇíÉ ÇáÝÊÑÉ ý= 1º ÇáÏÝÚ Ýí äåÇíÉ ÇáÝÊÑÉ = 0.";
+ Text[ dutch ] = "Vervaldatum. V = 1 geeft aan dat de betaling moet worden verricht aan het begin van een periode, V = 0 aan het einde.";
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬type= 0 ±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ greek ] = "×ñüíïò ðëçñùìÞò.F = 1 óçìáßíåé ðëçñùìÞ óôçí áñ÷Þ ìéáò ðåñéüäïõ, F = 0 óçìáßíåé ðëçñùìÞ óôï ôÝëïò ôçò ðåñéüäïõ.";
+ Text[ korean ] = "¸¸±âÀÏ. ¸¸±âÀÏ=1Àº ±âÇÑÀÇ Ã³À½À» ³ªÅ¸³»°í ¸¸±âÀÏ=0Àº ±âÇÑÀÇ ³¡À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Vade. F = 1, vade dönem baþýnda, F = 0 ise dönem sonunda anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZZR #*=-
+ Resource SC_OPCODE_ZZR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahlungszeitraum. Berechnet die Anzahl der Zahlungsperioden einer Investition bei regelmäßigen Zahlungen und konstantem Zinssatz. : Zahlungszeitraum. Berechnet die Anzahl der Zahlungsperioden einer Investition bei regelmõ˜igen Zahlungen und konstantem Zinssatz. */
+ Text = "Zahlungszeitraum. Berechnet die Anzahl der Zahlungsperioden einer Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ english ] = "Returns the number of periods for an investment based on periodic, constant payments and a constant interest rate." ;
+ Text [ norwegian ] = "Zahlungszeitraum. Berechnet die Anzahl der Zahlungsperioden einer Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ italian ] = "Restituisce il numero di periodi di pagamento relativi ad un investimento che prevede pagamenti periodici a tasso di interesse costante." ;
+ Text [ portuguese_brazilian ] = "Zahlungszeitraum. Berechnet die Anzahl der Zahlungsperioden einer Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ portuguese ] = "Calcula o número de períodos para um investimento de acordo com pagamentos regulares e uma taxa de juros constante." ;
+ Text [ finnish ] = "Zahlungszeitraum. Berechnet die Anzahl der Zahlungsperioden einer Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ danish ] = "Ydelsesperioder. Beregner antallet af ydelsesperioder for en investering ved konstant ydelse og konstant rentesats." ;
+ Text [ french ] = "Calcule le nombre de périodes de paiement pour un investissement sur la base de paiements réguliers et d'un taux d'intérêt constant." ;
+ Text [ swedish ] = "Betalningsperiod. Beräknar antalet betalningsperioder för en investering vid regelbundna betalningar och konstant räntesats." ;
+ Text [ dutch ] = "Berekent het aantal termijnen voor een investering op basis van periodieke, vaste betalingen en een vast rentepercentage." ;
+ Text [ spanish ] = "Devuelve el número de pagos de una inversión basándose en los pagos periódicos constantes y en la tasa de interés constante." ;
+ Text [ english_us ] = "Payment period. Calculates the number of payment periods for an investment based on regular payments and a constant interest rate." ;
+ Text[ chinese_simplified ] = "Ö§¸¶ÖÜÆÚÊý¡£ÔÚ¶¨ÆÚÖ§¸¶ºÍÀûÂʺ㶨µÄÇé¿öÏ£¬\n¼ÆËãÒ»ÏîͶ×ʵÄÖ§¸¶ÖÜÆÚÊý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò îáùåå êîëè÷åñòâî ïåðèîäîâ âûïëàòû äëÿ äàííîãî âêëàäà ñ ïîñòîÿííûìè âûïëàòàìè è ïîñòîÿííûì ïðîöåíòîì.";
+ Text[ polish ] = "Okres p³atnoœci. Oblicza iloœæ okresów p³atnoœci dla inwestycji przy regularnych p³atnoœciach i sta³ej stopie oprocentowania.";
+ Text[ japanese ] = "Žx•¥‚¢ŠúŠÔB’èŠz‚ÌŽx•¥‚¢‚ð’èŠú“I‚És‚¢A—˜—¦‚ªˆê’è‚Å‚ ‚é‚Ɖ¼’肵‚ÄA“ŠŽ‘‚É•K—v‚ÈŠúŠÔ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤ä¥I¶g´Á¼Æ¡C¦b©w´Á¤ä¥I©M§Q²v«í©wªº±¡ªp¤U¡M­pºâ¤@¶µ§ë¸êªº¤ä¥I¶g´Á¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÚÏÏ ÇáÝÊÑÇÊ áÇÓÊËãÇÑ ÇÓÊäÇÏÇð Åáì ÏÝÚÇÊ ÏæÑíÉ æäÓÈÉ ÝÇÆÏÉ ËÇÈÊÉ.";
+ Text[ dutch ] = "Berekent het aantal termijnen voor een investering op basis van periodieke, vaste betalingen en een vast rentepercentage.";
+ Text[ chinese_simplified ] = "Ö§¸¶ÖÜÆÚÊý¡£ÔÚ¶¨ÆÚÖ§¸¶ºÍÀûÂʺ㶨µÄÇé¿öÏ£¬\n¼ÆËãÒ»ÏîͶ×ʵÄÖ§¸¶ÖÜÆÚÊý¡£";
+ Text[ greek ] = "Ðåñßïäïò ðëçñùìÞò. Õðïëïãßæåé ôï ðëÞèïò ôùí ðåñéüäùí ðëçñùìÞò ìéáò åðÝíäõóçò ãéá ôáêôéêÝò ðëçñùìÝò êáé ìå óôáèåñü åðéôüêéï.";
+ Text[ korean ] = "ÁöºÒ ±â°£. ÀÏ¹Ý ÁöºÒ¿¡ ±Ù°ÅÇÑ ÅõÀÚ¿¡´ëÇÑ ÁöºÒ ±â°£ÀÇ ¼ö¿Í °íÁ¤ ÀÌÀÚÀ² »êÃâ .";
+ Text[ turkish ] = "Taksit sayýsý. Düzenli ödeme ve sabit faiz oranlý bir yatýrýmýn ödeme dönemi sayýsýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_ZZR );
+ 5; 0; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zins" ;
+ Text [ english ] = "rate" ;
+ Text [ norwegian ] = "Zins" ;
+ Text [ italian ] = "tasso_int" ;
+ Text [ portuguese_brazilian ] = "Zins" ;
+ Text [ portuguese ] = "Taxa" ;
+ Text [ finnish ] = "Zins" ;
+ Text [ danish ] = "Rente" ;
+ Text [ french ] = "Taux" ;
+ Text [ swedish ] = "ränta" ;
+ Text [ dutch ] = "Rente" ;
+ Text [ spanish ] = "tasa" ;
+ Text [ english_us ] = "rate" ;
+ Text[ chinese_simplified ] = "rate";
+ Text[ russian ] = "Íîðìà";
+ Text[ polish ] = "Odsetki";
+ Text[ japanese ] = "—˜‘§";
+ Text[ chinese_traditional ] = "rate";
+ Text[ arabic ] = "Rate";
+ Text[ dutch ] = "Rente";
+ Text[ chinese_simplified ] = "rate";
+ Text[ greek ] = "rate";
+ Text[ korean ] = "ºñÀ²";
+ Text[ turkish ] = "Faiz";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zinssatz pro Periode." ;
+ Text [ english ] = "is the interest rate per period." ;
+ Text [ norwegian ] = "Der Zinssatz pro Periode." ;
+ Text [ italian ] = "è il tasso di interesse per periodo." ;
+ Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
+ Text [ portuguese ] = "é a taxa de juros periódica." ;
+ Text [ finnish ] = "Der Zinssatz pro Periode." ;
+ Text [ danish ] = "Rentesatsen per periode." ;
+ Text [ french ] = "Le taux d'intérêt par période." ;
+ Text [ swedish ] = "Räntesatsen per period." ;
+ Text [ dutch ] = "Het rentepercentage per termijn." ;
+ Text [ spanish ] = "es la tasa de interés por período." ;
+ Text [ english_us ] = "The rate of interest per period." ;
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ russian ] = "Íîðìà ïðèáûëè çà ïåðèîä.";
+ Text[ polish ] = "Stopa procentowa w pojedynczym okresie.";
+ Text[ japanese ] = "“ŠŽ‘ŠúŠÔ‚ð’Ê‚¶‚Ă̈ê’è‚Ì—˜—¦B";
+ Text[ chinese_traditional ] = "¨C­Ó¶g´Áªº§Q²v¡C";
+ Text[ arabic ] = "äÓÈÉ ÇáÝÇÆÏÉ áßá ÝÊÑÉ.";
+ Text[ dutch ] = "Het rentepercentage per termijn.";
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ greek ] = "Ôï åðéôüêéï áíÜ ðåñßïäï.";
+ Text[ korean ] = "±â°£´ç ÀÌÀÚÀ²";
+ Text[ turkish ] = "Dönem faizi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "RMZ" ;
+ Text [ english ] = "pmt" ;
+ Text [ norwegian ] = "RMZ" ;
+ Text [ italian ] = "RATA" ;
+ Text [ portuguese_brazilian ] = "RMZ" ;
+ Text [ portuguese ] = "Pgto" ;
+ Text [ finnish ] = "RMZ" ;
+ Text [ danish ] = "YDELSE" ;
+ Text [ french ] = "VPM" ;
+ Text [ swedish ] = "RBB" ;
+ Text [ dutch ] = "bet" ;
+ Text [ spanish ] = "pago" ;
+ Text [ english_us ] = "PMT" ;
+ Text[ chinese_simplified ] = "pmt";
+ Text[ russian ] = "Âûïëàòà";
+ Text[ polish ] = "PMT";
+ Text[ japanese ] = "’èŠúŽx•¥Šz";
+ Text[ chinese_traditional ] = "pmt";
+ Text[ arabic ] = "Pmt";
+ Text[ dutch ] = "bet";
+ Text[ chinese_simplified ] = "pmt";
+ Text[ greek ] = "Pmt";
+ Text[ korean ] = "PMT";
+ Text[ turkish ] = "Düzenli ödemeler";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird. : Regelmõ˜ige Zahlung. Die konstante Annuitõt, die in jeder Periode gezahlt wird. */
+ Text = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ english ] = "is the payment made each period; it cannot change over the life of the annuity." ;
+ Text [ norwegian ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ italian ] = "è il valore attuale o la somma forfettaria che rappresenta il valore attuale di una serie di pagamenti futuri." ;
+ Text [ portuguese_brazilian ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ portuguese ] = "é o pagamento feito em cada período, mantendo-se constante durante a vigência da anuidade." ;
+ Text [ finnish ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ danish ] = "Ydelse. Den konstante ydelse som betales hver periode og ikke kan ændres i annuitetens løbetid" ;
+ Text [ french ] = "Paiement régulier. L'annuité constante payée pour chaque période." ;
+ Text [ swedish ] = "Regelbunden betalning. Den konstanta annuiteten som betalas i varje period." ;
+ Text [ dutch ] = "De betaling die per termijn wordt verricht." ;
+ Text [ spanish ] = "es el pago efectuado en cada período; debe permanecer constante durante la vida de la anualidad." ;
+ Text [ english_us ] = "Regular payments. The constant annuity to be paid in each period." ;
+ Text[ chinese_simplified ] = "¸÷¸öÖÜÆÚÓ¦Ö§¸¶µÄÄê½ð¡£";
+ Text[ russian ] = "Ïîñòîÿííàÿ âûïëàòà. ïðîèçâîäèìàÿ â êàæäûé ïåðèîä.";
+ Text[ polish ] = "Sta³a suma sp³aty d³ugu (obejmuj¹ca czêœæ d³ugu i odsetki), która jest p³acona regularnie w ka¿dym okresie.";
+ Text[ japanese ] = "’èŠú“I‚ÈŽx•¥‚¢ŠzB«—ˆˆê˜A‚ÉŽx•¥‚í‚ê‚éˆê’è‚Ì”N‹àB";
+ Text[ chinese_traditional ] = "¦U­Ó¶g´ÁÀ³¤ä¥Iªº¦~ª÷¡C";
+ Text[ arabic ] = "ÞÓØ ÏæÑí. ÇáÞÓØ ÇáËÇÈÊ ÇáÐí íÊã ÏÝÚå Ýí ßá ÝÊÑÉ.";
+ Text[ dutch ] = "De betaling die per termijn wordt verricht.";
+ Text[ chinese_simplified ] = "¸÷¸öÖÜÆÚÓ¦Ö§¸¶µÄÄê½ð¡£";
+ Text[ greek ] = "ÔáêôéêÞ ðëçñùìÞ. Ôï óôáèåñü ÷ñåùëýóéï êÜèå ðåñéüäïõ.";
+ Text[ korean ] = "Á¤±â ÁöºÒ. Áֱ⸶´Ù ÁöºÒµÇ´Â ÀÏÁ¤ ¿¬ºÎ±ÝÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Düzenli ödemeler. Her dönem ödenen sabit annüiteler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "BW" ;
+ Text [ english ] = "pv" ;
+ Text [ norwegian ] = "BW" ;
+ Text [ italian ] = "VA" ;
+ Text [ portuguese_brazilian ] = "BW" ;
+ Text [ portuguese ] = "VA" ;
+ Text [ finnish ] = "BW" ;
+ Text [ danish ] = "NV" ;
+ Text [ french ] = "VA" ;
+ Text [ swedish ] = "NV" ;
+ Text [ dutch ] = "HW" ;
+ Text [ spanish ] = "va" ;
+ Text [ english_us ] = "pv" ;
+ Text[ chinese_simplified ] = "pv";
+ Text[ russian ] = "Íç";
+ Text[ polish ] = "PV";
+ Text[ japanese ] = "Œ»Ý‰¿’l";
+ Text[ chinese_traditional ] = "pv";
+ Text[ arabic ] = "Pv";
+ Text[ dutch ] = "HW";
+ Text[ chinese_simplified ] = "pv";
+ Text[ greek ] = "Pv";
+ Text[ korean ] = "pv";
+ Text[ turkish ] = "Bugünkü deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ english ] = "is the present value, or the lump-sum amount that a series of future payments is worth right now." ;
+ Text [ norwegian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ italian ] = "è il valore futuro o il saldo in contanti che si desidera raggiungere dopo aver effettuato l'ultimo pagamento." ;
+ Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ portuguese ] = "é o valor presente ou a quantia total actual correspondente a uma série de pagamentos futuros." ;
+ Text [ finnish ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ danish ] = "Nutidsværdi. Den værdi en række ydelser er værd nu." ;
+ Text [ french ] = "Valeur actuelle = la valeur, à la date d'aujourd'hui, d'une série de remboursements futurs." ;
+ Text [ swedish ] = "Nuvarande värde. Det nuvarande värdet för en rad betalningar." ;
+ Text [ dutch ] = "De huidige waarde, ofwel het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is." ;
+ Text [ spanish ] = "es el valor actual o la suma total de una serie de futuros pagos." ;
+ Text [ english_us ] = "Present value. The current value of a series of payments" ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£»òһϵÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ russian ] = "Òåêóùàÿ ñòîèìîñòü èëè îáùàÿ ñóììà âñåõ áóäóùèõ ïëàòåæåé ñ íàñòîÿùåãî ìîìåíòà.";
+ Text[ polish ] = "Wartoœæ bie¿¹ca dla serii przysz³ych p³atnoœci.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB«—ˆs‚í‚ê‚éˆê˜A‚ÌŽx•¥‚¢‚ðAŒ»Žž“_‚ňꊇ•¥‚¢‚µ‚½ê‡‚̇Œv‹àŠzB";
+ Text[ chinese_traditional ] = "Ðä²{­È¡C©Î¤@¨t¦C¥¼¨Ó¤ä¥Iªº¥Ø«e»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÍÇáíÉ áÓáÓáÉ ÇáÏÝÚÇÊ.";
+ Text[ dutch ] = "De huidige waarde, ofwel het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£»òһϵÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Ç ðáñïýóá áîßá ôçò óåéñÜò ðëçñùìþí.";
+ Text[ korean ] = "ÇöÀç°ª. ÁöºÒÀÇ ¿¬¼ÓÀÇ ÇöÀç °ª";
+ Text[ turkish ] = "Bugünkü deðer. Ödeme dizisinin bugünkü deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "ZW" ;
+ Text [ english ] = "fv" ;
+ Text [ norwegian ] = "ZW" ;
+ Text [ italian ] = "VAL.FUT" ;
+ Text [ portuguese_brazilian ] = "ZW" ;
+ Text [ portuguese ] = "VF" ;
+ Text [ finnish ] = "ZW" ;
+ Text [ danish ] = "FV" ;
+ Text [ french ] = "VC" ;
+ Text [ swedish ] = "FV" ;
+ Text [ dutch ] = "TW" ;
+ Text [ spanish ] = "vf" ;
+ Text [ english_us ] = "fv" ;
+ Text[ chinese_simplified ] = "fv";
+ Text[ russian ] = "Áñ";
+ Text[ polish ] = "FV";
+ Text[ japanese ] = "«—ˆ‰¿’l";
+ Text[ chinese_traditional ] = "fv";
+ Text[ arabic ] = "Fv";
+ Text[ dutch ] = "TW";
+ Text[ chinese_simplified ] = "fv";
+ Text[ greek ] = "fv";
+ Text[ korean ] = "fv";
+ Text[ turkish ] = "Gelecek deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. : Zuk³nftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. */
+ Text = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ english ] = "is the future value, or a cash balance you want to attain after the last payment is made." ;
+ Text [ norwegian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ italian ] = "corrisponde a 0 o a 1 e indica le scadenze dei pagamenti." ;
+ Text [ portuguese_brazilian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ portuguese ] = "é o valor futuro ou um saldo de caixa obtido depois de efectuado o último pagamento." ;
+ Text [ finnish ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ danish ] = "Fremtidsværdi. Den værdi eller den kassebalance der ønskes opnået, når den sidste ydelse er betalt." ;
+ Text [ french ] = "Valeur future (valeur capitalisée) : le montant que vous souhaitez obtenir après le dernier paiement." ;
+ Text [ swedish ] = "Framtida värde. Värdet (slutvärde) som skall uppnås efter den sista betalningen." ;
+ Text [ dutch ] = "De toekomstige waarde, ofwel het saldo dat u wilt bereiken als de laatste betaling is verricht." ;
+ Text [ spanish ] = "es el valor futuro o saldo en efectivo que se desea lograr después del último pago." ;
+ Text [ english_us ] = "Future value. The value (end value) to be attained after the final payment." ;
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£Íê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄ×îÖÕÖµ¡£";
+ Text[ russian ] = "Áóäóùàÿ ñòîèìîñòü èëè áàëàíñ íàëè÷íîñòè. êîòîðûé íåîáõîäèìî äîñòè÷ü ïîñëå ïîñëåäíåé âûïëàòû.";
+ Text[ polish ] = "Przysz³a wartoœæ. Wartoœæ koñcowa, która ma zostaæ osi¹gniêta po dokonaniu ostatniej p³atnoœci.";
+ Text[ japanese ] = "«—ˆ‰¿’lB“ŠŽ‘‚Ì«—ˆ‰¿’lA‚Ü‚½‚ÍÅŒã‚ÌŽx•¥‚¢‚ðs‚Á‚½Œã‚ÉŽc‚錻‹à‚ÌŽûŽxB";
+ Text[ chinese_traditional ] = "¥¼¨Ó­È¡C§¹¦¨³Ì«á¤@¦¸¤ä¥I«á¹F¨ìªº³Ì²×­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÓÊÞÈáíÉ¡ Ãæ ÇáãíÒÇäíÉ ÇáäÞÏíÉ ÇáÊí ÊÑíÏ ÇáæÕæá ÅáíåÇ ÈÚÏ ÓÏÇÏ ÃÎÑ ÏÝÚÉ.";
+ Text[ dutch ] = "De toekomstige waarde, ofwel het saldo dat u wilt bereiken als de laatste betaling is verricht.";
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£Íê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄ×îÖÕÖµ¡£";
+ Text[ greek ] = "ÌåëëïíôéêÞ ôéìÞ. Ç ôéìÞ (ôåëéêÞ ôéìÞ) ðïõ èá ðñïêýøåé ìåôÜ ôçí ôåëåõôáßá ðëçñùìÞ.";
+ Text[ korean ] = "¹Ì·¡ °¡Ä¡. ¸¶Áö¸· ÁöºÒ ÈÄ¿¡ À̸£°Ô µÉ °¡Ä¡(ÃÖÁ¾ °¡Ä¡)ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Gelecek deðer. Son ödeme yapýldýktan sonra elde edilmek istenen deðer (son deðer).";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "F" ;
+ Text [ english ] = "type" ;
+ Text [ norwegian ] = "F" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "F" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "F" ;
+ Text [ danish ] = "F" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "F" ;
+ Text [ dutch ] = "V" ;
+ Text [ spanish ] = "tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Žx•¥Šú“ú";
+ Text[ chinese_traditional ] = "type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "V";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fõlligkeit. F = 1 hei˜t Fõlligkeit am Anfang einer Periode, F = 0 am Ende. */
+ Text = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ english ] = "is the number 0 or 1 and indicates when payments are due." ;
+ Text [ norwegian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ italian ] = "Scadenza. 1= all'inizio, 0=alla fine del periodo." ;
+ Text [ portuguese_brazilian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ portuguese ] = "é o vencimento dos pagamentos de juros. 1 significa no ínicio do período, 0 no final." ;
+ Text [ finnish ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
+ Text [ french ] = "Échéance. Type=1 signifie échéance au début d'une période, type=0 à la fin d'une période." ;
+ Text [ swedish ] = "Förfallotidpunkt. F = 1 betyder förfallotidpunkt i början av en period, F = 0 i slutet." ;
+ Text [ dutch ] = "Vervaldatum. V = 1 geeft aan dat de betaling moet worden verricht aan het begin van een periode, V = 0 aan het einde." ;
+ Text [ spanish ] = "es el vencimiento de los pagos, 1 es al comienzo del período, 0 al final." ;
+ Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬type = 0 \n±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå (0 èëè1), îáîçíà÷àþùåå, äîëæíà ëè ïðîèçâîäèòüñÿ âûïëàòà â êîíöå ïåðèîäà (0) èëè â íà÷àëå ïåðèîäà (1).";
+ Text[ polish ] = "Wartoœæ 0 lub 1 oznaczaj¹ca sposób dokonywania p³atnoœci (z do³u lub z góry).";
+ Text[ japanese ] = "Žx•¥Šú“úBŽx•¥Šú“ú=1‚ÍŠeŠú‚ÌŠúŽñAŽx•¥Šú“ú =0‚ÍŠeŠú‚ÌŠú––B";
+ Text[ chinese_traditional ] = "¨ì´ÁÃþ«¬¡C F = 1 ªí¥Ü¦b¶g´Á¶}©l®É¨ì´Á¡MF = 0 ªí¥Ü¦b¶g´Áµ²§ô®É¨ì´Á¡C";
+ Text[ arabic ] = "ÇáÏÝÚ Ýí ÈÏÇíÉ ÇáÝÊÑÉ ý= 1º ÇáÏÝÚ Ýí äåÇíÉ ÇáÝÊÑÉ = 0.";
+ Text[ dutch ] = "Vervaldatum. V = 1 geeft aan dat de betaling moet worden verricht aan het begin van een periode, V = 0 aan het einde.";
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬type = 0 \n±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ greek ] = "×ñüíïò ðëçñùìÞò.F = 1 óçìáßíåé ðëçñùìÞ óôçí áñ÷Þ ìéáò ðåñéüäïõ, F = 0 óçìáßíåé ðëçñùìÞ óôï ôÝëïò ôçò ðåñéüäïõ.";
+ Text[ korean ] = "¸¸±âÀÏ. ¸¸±âÀÏ=1Àº ±âÇÑÀÇ Ã³À½À» ¸¸±âÀÏ=0Àº ±âÇÑÀÇ ³¡À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Vade. F = 1, vade dönem baþýnda, F = 0 ise dönem sonunda anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function RMZ #*=-
+ Resource SC_OPCODE_RMZ
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Regelmäßige Zahlungen. Berechnet die regelmäßigen Zahlungen (Annuität) für eine Investition bei konstantem Zinssatz. : Regelmõ˜ige Zahlungen. Berechnet die regelmõ˜igen Zahlungen (Annuitõt) f³r eine Investition bei konstantem Zinssatz. */
+ Text = "Regelmäßige Zahlungen. Berechnet die regelmäßigen Zahlungen (Annuität) für eine Investition bei konstantem Zinssatz." ;
+ Text [ english ] = "Returns the periodic payment for an annuity based on constant payments and a constant interest rate." ;
+ Text [ norwegian ] = "Regelmäßige Zahlungen. Berechnet die regelmäßigen Zahlungen (Annuität) für eine Investition bei konstantem Zinssatz." ;
+ Text [ italian ] = "Restituisce il pagamento periodico (annualità) per un investimento a tasso di interesse costante." ;
+ Text [ portuguese_brazilian ] = "Regelmäßige Zahlungen. Berechnet die regelmäßigen Zahlungen (Annuität) für eine Investition bei konstantem Zinssatz." ;
+ Text [ portuguese ] = "Calcula o pagamento periódico de uma anuidade, baseado em pagamentos regulares e numa taxa de juro constante." ;
+ Text [ finnish ] = "Regelmäßige Zahlungen. Berechnet die regelmäßigen Zahlungen (Annuität) für eine Investition bei konstantem Zinssatz." ;
+ Text [ danish ] = "Ydelse. Beregner den regelmæssige ydelse for en investering ved konstant rentsats." ;
+ Text [ french ] = "Calcule le montant total de chaque remboursement périodique d'un investissement à remboursements et taux d'intérêt constants." ;
+ Text [ swedish ] = "Regelbundna betalningar. Beräknar de regelbundna betalningarna (annuitet) för en investering vid konstant räntesats." ;
+ Text [ dutch ] = "Berekent de periodieke betalingen voor een annuïteit, op basis van vaste betalingen en een vast rentepercentage." ;
+ Text [ spanish ] = "Devuelve el pago periódico de una anualidad basándose en una tasa de interés constante." ;
+ Text [ english_us ] = "Regular payments. Returns the periodic payment of an annuity, based on regular payments and a fixed periodic interest rate." ;
+ Text[ chinese_simplified ] = "·ÖÆÚÖ§¸¶¶î¡£¼ÆËãÒ»ÏîͶ×Ê»ò´û¿îÔÚÀûÂʹ̶¨µÄÇé¿öϵķÖÆÚÖ§¸¶¶î¡£";
+ Text[ russian ] = "Âû÷èñëÿåò âåëè÷èíó âûïëàòû ïî ññóäå íà îñíîâå ïîñòîÿííûõ âûïëàò è ïîñòîÿííîé ïðîöåíòíîé ñòàâêè.";
+ Text[ polish ] = "Okres p³atnoœci. Oblicza okresy p³atnoœci sp³aty d³ugu dla inwestycji przy sta³ej stopie oprocentowania.";
+ Text[ japanese ] = "’èŠúŽx•¥ŠzB’èŠz‚ÌŽx•¥‚¢‚ð’èŠú“I‚És‚¢A—˜—¦‚ªˆê’è‚Å‚ ‚é‚Ɖ¼’肵‚ÄA‘Ý•t‚É•K—v‚È’èŠúŽx•¥Šz‚ðŽZo‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤À´Á¤ä¥IÃB¡C­pºâ¤@¶µ§ë¸ê¦b§Q²v©T©wªº±¡ªp¤Uªº¤À´Á¤ä¥IÃB¡C";
+ Text[ arabic ] = "ÏÝÚÇÊ ÏæÑíÉ. ÊÍÓÈ ÇáÏÝÚÇÊ ÇáÏæÑíÉ áÇÓÊËãÇÑ ÇÓÊäÇÏÇð áäÓÈÉ ÝÇÆÏÉ ËÇÈÊÉ.";
+ Text[ dutch ] = "Berekent de periodieke betalingen voor een annuïteit, op basis van vaste betalingen en een vast rentepercentage.";
+ Text[ chinese_simplified ] = "·ÖÆÚÖ§¸¶¶î¡£¼ÆËãÒ»ÏîͶ×Ê»ò´û¿îÔÚÀûÂʹ̶¨µÄÇé¿öϵķÖÆÚÖ§¸¶¶î¡£";
+ Text[ greek ] = "ÔáêôéêÝò ðëçñùìÝò. Õðïëïãßæåé ôéò ôáêôéêÝò ðëçñùìÝò (÷ñåùëýóéï) ãéá ìéá åðÝíäõóç ìå óôáèåñü åðéôüêéï.";
+ Text[ korean ] = "ÀÏ¹Ý ÁöºÒ. ÀÏ¹Ý Áö±Þ°ú °íÁ¤µÈ ±â°£ ÀÌÀÚÀ²¿¡ ±Ù°ÅÇÑ ¿¬±ÝÀÇ ±â°£º° Áö±ÞÀ» ¹Ýȯ";
+ Text[ turkish ] = "Düzenli ödemeler. Sabit faiz oranlý bir yatýrým için yapýlan düzenli ödemeleri (annüiteleri) hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_RMZ );
+ 5; 0; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zins" ;
+ Text [ english ] = "rate" ;
+ Text [ norwegian ] = "Zins" ;
+ Text [ italian ] = "tasso_int" ;
+ Text [ portuguese_brazilian ] = "Zins" ;
+ Text [ portuguese ] = "Taxa" ;
+ Text [ finnish ] = "Zins" ;
+ Text [ danish ] = "Rente" ;
+ Text [ french ] = "Taux" ;
+ Text [ swedish ] = "ränta" ;
+ Text [ dutch ] = "Rente" ;
+ Text [ spanish ] = "tasa" ;
+ Text [ english_us ] = "rate" ;
+ Text[ chinese_simplified ] = "rate";
+ Text[ russian ] = "Ïðîöåíò ñ êàïèòàëà";
+ Text[ polish ] = "Odsetki";
+ Text[ japanese ] = "—˜‘§";
+ Text[ chinese_traditional ] = "Rate";
+ Text[ arabic ] = "Rate";
+ Text[ dutch ] = "Rente";
+ Text[ chinese_simplified ] = "rate";
+ Text[ greek ] = "Rate";
+ Text[ korean ] = "ºñÀ²";
+ Text[ turkish ] = "Faiz";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zinssatz pro Periode." ;
+ Text [ english ] = "is the interest rate per period." ;
+ Text [ norwegian ] = "Der Zinssatz pro Periode." ;
+ Text [ italian ] = "è il tasso di interesse per periodo." ;
+ Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
+ Text [ portuguese ] = "é a taxa de juro periódica." ;
+ Text [ finnish ] = "Der Zinssatz pro Periode." ;
+ Text [ danish ] = "Rentesatsen per periode." ;
+ Text [ french ] = "Le taux d'intérêt par période." ;
+ Text [ swedish ] = "Räntesatsen per period." ;
+ Text [ dutch ] = "De rentevoet per periode" ;
+ Text [ spanish ] = "es la tasa de interés por período." ;
+ Text [ english_us ] = "The rate of interest per period." ;
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ russian ] = "Ïðîöåíòíàÿ ñòàâêà çà ïåðèîä.";
+ Text[ polish ] = "WartoϾ stopy procentowej na okres.";
+ Text[ japanese ] = "ŠúŠÔ‚²‚Æ‚Ì—˜—¦";
+ Text[ chinese_traditional ] = "¨C­Ó¶g´Áªº§Q²v¡C";
+ Text[ arabic ] = "äÓÈÉ ÇáÝÇÆÏÉ áßá ÝÊÑÉ.";
+ Text[ dutch ] = "De rentevoet per periode";
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ greek ] = "Ôï åðéôüêéï áíÜ ðåñßïäï.";
+ Text[ korean ] = "±â°£´ç ÀÌÀÚÀ²";
+ Text[ turkish ] = "Dönem faiz oraný.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "ZZR" ;
+ Text [ english ] = "nper" ;
+ Text [ norwegian ] = "ZZR" ;
+ Text [ italian ] = "NUM.RATE" ;
+ Text [ portuguese_brazilian ] = "ZZR" ;
+ Text [ portuguese ] = "Nper" ;
+ Text [ finnish ] = "ZZR" ;
+ Text [ danish ] = "NPER" ;
+ Text [ french ] = "NPM" ;
+ Text [ swedish ] = "BPER" ;
+ Text [ dutch ] = "NPER" ;
+ Text [ spanish ] = "nper" ;
+ Text [ english_us ] = "NPER" ;
+ Text[ chinese_simplified ] = "nper";
+ Text[ russian ] = "Êïåð";
+ Text[ polish ] = "NPER";
+ Text[ japanese ] = "‘SŽx•¥‚¢ŠúŠÔ";
+ Text[ chinese_traditional ] = "nper";
+ Text[ arabic ] = "Nper";
+ Text[ dutch ] = "NPER";
+ Text[ chinese_simplified ] = "nper";
+ Text[ greek ] = "nper";
+ Text[ korean ] = "NPER";
+ Text[ turkish ] = "NPER";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird. : Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuitõt (Rente) gezahlt wird. */
+ Text = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ english ] = "is the total number of payment periods in an annuity." ;
+ Text [ norwegian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ italian ] = "è il numero totale dei periodi di pagamento in un'annualità." ;
+ Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ portuguese ] = "é o número total de períodos de pagamento numa anuidade." ;
+ Text [ finnish ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
+ Text [ french ] = "Le nombre total de périodes de paiement de l'annuité." ;
+ Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder då annuiteten (pension) betalas." ;
+ Text [ dutch ] = "Berekent het aantal termijnen voor een investering op basis van periodieke, vaste betalingen en een vast rentepercentage." ;
+ Text [ spanish ] = "es el número total de períodos de pago en una anualidad." ;
+ Text [ english_us ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî ïåðèîäîâ âûïëàò ãîäîâîé ðåíòû.";
+ Text[ polish ] = "Okres p³atnoœci. Ca³kowita liczba okresów, w których sp³acana bêdzie suma sp³aty d³ugu.";
+ Text[ japanese ] = "Žx•¥‚¢ŠúŠÔB“ŠŽ‘ŠúŠÔ‘S‘Ì‚Å‚ÌŽx•¥‰ñ”‚̇ŒvB";
+ Text[ chinese_traditional ] = "¤ä¥IªºÁ`¶g´Á¼Æ¡C";
+ Text[ arabic ] = "ãÏÉ ÇáÏÝÚ. ÇáÚÏÏ ÇáÅÌãÇáí ááÝÊÑÇÊ ÇáÊí íÊã ÝíåÇ ÏÝÚ ÇáÓøõäÇåíøÉ (ãÚÇÔ).";
+ Text[ dutch ] = "Berekent het aantal termijnen voor een investering op basis van periodieke, vaste betalingen en een vast rentepercentage.";
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ greek ] = "ÄéÜñêåéá ðëçñùìÞò. Ôï óýíïëï ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ðëçñþíåôáé ôï ÷ñåùëýóéï (óýíôáîç).";
+ Text[ korean ] = "Áö±Þ ±â°£. ÁöºÒµÈ ¿¬±ÝÀÇ ±â°£ÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Taksit sayýsý. Annüite ödenen toplam dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "BW" ;
+ Text [ english ] = "pv" ;
+ Text [ norwegian ] = "BW" ;
+ Text [ italian ] = "VA" ;
+ Text [ portuguese_brazilian ] = "BW" ;
+ Text [ portuguese ] = "VA" ;
+ Text [ finnish ] = "BW" ;
+ Text [ danish ] = "NV" ;
+ Text [ french ] = "VA" ;
+ Text [ swedish ] = "NV" ;
+ Text [ dutch ] = "HW" ;
+ Text [ spanish ] = "va" ;
+ Text [ english_us ] = "pv" ;
+ Text[ chinese_simplified ] = "pv";
+ Text[ russian ] = "Òç";
+ Text[ polish ] = "PV";
+ Text[ japanese ] = "Œ»Ý‰¿’l";
+ Text[ chinese_traditional ] = "pv";
+ Text[ arabic ] = "Pv";
+ Text[ dutch ] = "HW";
+ Text[ chinese_simplified ] = "pv";
+ Text[ greek ] = "Pv";
+ Text[ korean ] = "pv";
+ Text[ turkish ] = "Bugünkü deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ english ] = "is the present valueùthe total amount that a series of future payments is worth now." ;
+ Text [ norwegian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ italian ] = "è il valore attuale o la somma forfettaria che rappresenta il valore attuale di una serie di pagamenti futuri." ;
+ Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ portuguese ] = "é o valor total actual de uma série de pagamentos futuros." ;
+ Text [ finnish ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ danish ] = "Nutidsværdi. Den værdi en række ydelser er værd nu." ;
+ Text [ french ] = "Valeur actuelle = la valeur, à la date d'aujourd'hui, d'une série de remboursements futurs." ;
+ Text [ swedish ] = "Nuvarande värde. Det nuvarande värdet för en rad betalningar." ;
+ Text [ dutch ] = "Huidige waarde. De huidige waarde ofwel het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is." ;
+ Text [ spanish ] = "es el valor actual o la cantidad total de una serie de pagos futuros." ;
+ Text [ english_us ] = "Present value. The current value of a series of payments" ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£»òһϵÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ russian ] = "Òåêóùàÿ ñòîèìîñòü èëè îáùàÿ ñóììà âñåõ áóäóùèõ ïëàòåæåé ñ íàñòîÿùåãî ìîìåíòà.";
+ Text[ polish ] = "Wartoœæ bie¿¹ca dla serii przysz³ych p³atnoœci.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB«—ˆs‚í‚ê‚éˆê˜A‚ÌŽx•¥‚¢‚ðAŒ»Žž“_‚ňꊇ•¥‚¢‚µ‚½ê‡‚̇Œv‹àŠzB";
+ Text[ chinese_traditional ] = "Ðä²{­È¡C©Î¤@¨t¦C¥¼¨Ó¤ä¥Iªº¥Ø«e»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÍÇáíÉ áÓáÓáÉ ÇáÏÝÚÇÊ.";
+ Text[ dutch ] = "Huidige waarde. De huidige waarde ofwel het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£»òһϵÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Ç ðáñïýóá áîßá ìéáò óåéñÜò ðëçñùìþí.";
+ Text[ korean ] = "ÇöÀç°ª. ÁöºÒÀÇ ¿¬¼ÓÀÇ ÇöÀç °ª";
+ Text[ turkish ] = "Bugünkü deðer. Ödeme dizisinin bugünkü deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "ZW" ;
+ Text [ english ] = "fv" ;
+ Text [ norwegian ] = "ZW" ;
+ Text [ italian ] = "VAL.FUT" ;
+ Text [ portuguese_brazilian ] = "ZW" ;
+ Text [ portuguese ] = "VF" ;
+ Text [ finnish ] = "ZW" ;
+ Text [ danish ] = "FV" ;
+ Text [ french ] = "VC" ;
+ Text [ swedish ] = "FV" ;
+ Text [ dutch ] = "TW" ;
+ Text [ spanish ] = "vf" ;
+ Text [ english_us ] = "fv" ;
+ Text[ chinese_simplified ] = "fv";
+ Text[ russian ] = "ÁÇ";
+ Text[ polish ] = "FV";
+ Text[ japanese ] = "«—ˆ‰¿’l";
+ Text[ chinese_traditional ] = "fv";
+ Text[ arabic ] = "Fv";
+ Text[ dutch ] = "TW";
+ Text[ chinese_simplified ] = "fv";
+ Text[ greek ] = "fv";
+ Text[ korean ] = "fv";
+ Text[ turkish ] = "Gelecek deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. : Zuk³nftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. */
+ Text = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ english ] = "is the future value, or a cash balance you want to attain after the last payment is made." ;
+ Text [ norwegian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ italian ] = "è il valore futuro o il saldo in contanti che si desidera raggiungere dopo aver effettuato l'ultimo pagamento." ;
+ Text [ portuguese_brazilian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ portuguese ] = "é o valor futuro ou um saldo de caixa obtido depois de efectuado o último pagamento." ;
+ Text [ finnish ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ danish ] = "Fremtidsværdi. Den værdi eller den kassebalance der ønskes opnået, når den sidste ydelse er betalt." ;
+ Text [ french ] = "Valeur future (valeur capitalisée) : le montant que vous souhaitez obtenir après le dernier paiement." ;
+ Text [ swedish ] = "Framtida värde. Värdet (slutvärde) som skall uppnås efter den sista betalningen." ;
+ Text [ dutch ] = "Toekomstige waarde. De toekomstige waarde, ofwel het saldo dat u wilt bereiken als de laatste betaling is verricht." ;
+ Text [ spanish ] = "es el valor futuro o saldo en efectivo que desea lograr después de efectuar el último pago." ;
+ Text [ english_us ] = "Future value. The value (end value) to be attained after the final payment." ;
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£Íê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄ×îÖÕÖµ¡£";
+ Text[ russian ] = "Áóäóùåå çíà÷åíèå. Çíà÷åíèå (êîíå÷íîå çíà÷åíèå), êîòîðîå äîëæíî ïîëó÷èòüñÿ ïîñëå ïîñëåäíåãî ïëàòåæà.";
+ Text[ polish ] = "Przysz³a wartoœæ. Wartoœæ koñcowa, która ma zostaæ osi¹gniêta po dokonaniu ostatniej p³atnoœci.";
+ Text[ japanese ] = "«—ˆ‰¿’lB“ŠŽ‘‚Ì«—ˆ‰¿’lA‚Ü‚½‚ÍÅŒã‚ÌŽx•¥‚¢‚ðs‚Á‚½Œã‚ÉŽc‚錻‹à‚ÌŽûŽxB";
+ Text[ chinese_traditional ] = "¥¼¨Ó­È¡C§¹¦¨³Ì«á¤@¦¸¤ä¥I«á¹F¨ìªº³Ì²×­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÓÊÞÈáíÉ¡ Ãæ ÇáãíÒÇäíÉ ÇáäÞÏíÉ ÇáÊí ÊÑíÏ ÇáæÕæá ÅáíåÇ ÈÚÏ ÓÏÇÏ ÃÎÑ ÏÝÚÉ.";
+ Text[ dutch ] = "Toekomstige waarde. De toekomstige waarde, ofwel het saldo dat u wilt bereiken als de laatste betaling is verricht.";
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£Íê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄ×îÖÕÖµ¡£";
+ Text[ greek ] = "ÌåëëïíôéêÞ ôéìÞ. Ç ôéìÞ (ôåëéêÞ ôéìÞ) ðïõ èá ðñïêýøåé ìåôÜ ôçí ôåëåõôáßá ðëçñùìÞ.";
+ Text[ korean ] = "¹Ì·¡ °ª. ÃÖÁ¾ ÁöºÒ ÀÌÈÄ¿¡ ȹµæµÉ °ª(Á¾·á °ª)";
+ Text[ turkish ] = "Gelecek deðer. Son ödeme yapýldýktan sonra elde edilmek istenen deðer (son deðer).";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "F" ;
+ Text [ english ] = "type" ;
+ Text [ norwegian ] = "F" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "F" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "F" ;
+ Text [ danish ] = "F" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "F" ;
+ Text [ dutch ] = "V" ;
+ Text [ spanish ] = "tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Žx•¥Šú“ú";
+ Text[ chinese_traditional ] = "type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "V";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fõlligkeit. F = 1 hei˜t Fõlligkeit am Anfang einer Periode, F = 0 am Ende. */
+ Text = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ italian ] = "Corrisponde a 0 o a 1 e indica le scadenze dei pagamenti." ;
+ Text [ portuguese_brazilian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ portuguese ] = "é o vencimento dos pagamentos de juros. 1 significa no ínicio do período, 0 no final." ;
+ Text [ finnish ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
+ Text [ french ] = "Échéance. Type=1 signifie échéance au début d'une période, type=0 à la fin d'une période." ;
+ Text [ swedish ] = "Förfallotidpunkt. F = 1 betyder förfallotidpunkt i början av en period, F = 0 i slutet." ;
+ Text [ dutch ] = "Vervaldatum. V = 1 geeft aan dat de betaling moet worden voldaan aan het begin van een periode, V =0 aan het einde." ;
+ Text [ spanish ] = "es el vencimiento de los pagos, 1 es al comienzo de un período, 0 al final." ;
+ Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬type= 0 ±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå (0 èëè1), îáîçíà÷àþùåå, äîëæíà ëè ïðîèçâîäèòüñÿ âûïëàòà â êîíöå ïåðèîäà (0) èëè â íà÷àëå ïåðèîäà (1).";
+ Text[ polish ] = "Wartoœæ 0 lub 1 oznaczaj¹ca sposób dokonywania p³atnoœci (z do³u lub z góry).";
+ Text[ japanese ] = "Žx•¥Šú“úBŽx•¥Šú“ú=1‚ÍŠeŠú‚ÌŠúŽñAŽx•¥Šú“ú=0‚ÍŠeŠú‚ÌŠú––B";
+ Text[ chinese_traditional ] = "¨ì´ÁÃþ«¬¡C F = 1 ªí¥Ü¦b¶g´Á¶}©l®É¨ì´Á¡MF = 0 ªí¥Ü¦b¶g´Áµ²§ô®É¨ì´Á¡C";
+ Text[ arabic ] = "ÇáÏÝÚ Ýí ÈÏÇíÉ ÇáÝÊÑÉ ý= 1º ÇáÏÝÚ Ýí äåÇíÉ ÇáÝÊÑÉ = 0.";
+ Text[ dutch ] = "Vervaldatum. V = 1 geeft aan dat de betaling moet worden voldaan aan het begin van een periode, V =0 aan het einde.";
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬type= 0 ±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ greek ] = "×ñüíïò ðëçñùìÞò.F = 1 óçìáßíåé ðëçñùìÞ óôçí áñ÷Þ ìéáò ðåñéüäïõ, F = 0 óçìáßíåé ðëçñùìÞ óôï ôÝëïò ôçò ðåñéüäïõ.";
+ Text[ korean ] = "¸¸±âÀÏ. ¸¸±âÀÏ = 1 ±âÇÑÀÇ ½ÃÀÛÀ» ³ªÅ¸³»¸ç ¸¸±âÀÏ= 0Àº ±âÇÑÀÇ ³¡À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Vade. F = 1, vade dönem baþýnda, F = 0 ise dönem sonunda anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZINS #*=-
+ Resource SC_OPCODE_ZINS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den konstanten Zinssatz einer Investition bei regelmäßigen Zahlungen. : Berechnet den konstanten Zinssatz einer Investition bei regelmõ˜igen Zahlungen. */
+ Text = "Berechnet den konstanten Zinssatz einer Investition bei regelmäßigen Zahlungen." ;
+ Text [ english ] = "Returns the interest rate per period of an annuity." ;
+ Text [ norwegian ] = "Berechnet den konstanten Zinssatz einer Investition bei regelmäßigen Zahlungen." ;
+ Text [ italian ] = "Restituisce il tasso di interesse costante di un investimento con pagamenti regolari." ;
+ Text [ portuguese_brazilian ] = "Berechnet den konstanten Zinssatz einer Investition bei regelmäßigen Zahlungen." ;
+ Text [ portuguese ] = "Calcula a taxa de juro periódica constante de um investimento com pagamentos regulares." ;
+ Text [ finnish ] = "Berechnet den konstanten Zinssatz einer Investition bei regelmäßigen Zahlungen." ;
+ Text [ danish ] = "Beregner den konstante rentesats for en investering ved konstant ydelse." ;
+ Text [ french ] = "Calcule le taux d'intérêt constant d'un investissement basé sur des paiements réguliers." ;
+ Text [ swedish ] = "Beräknar den konstanta räntesatsen för en investering vid regelbundna betalningar." ;
+ Text [ dutch ] = "Berekent de vaste rentevoet van een investering bij regelmatige betalingen." ;
+ Text [ spanish ] = "Devuelve la tasa de interés por período de una anualidad." ;
+ Text [ english_us ] = "Calculates the constant interest rate of an investment with regular payments." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»Ïî´û¿îÔÚ¶¨ÆÚ³¥»¹Çé¿öϵĸ÷ÆÚ(ºã¶¨)ÀûÂÊ¡£";
+ Text[ russian ] = "Âîçâðàùàåò íîðìó ïðèáûëè çà îäèí ïåðèîä ïðè âûïëàòå ðåíòû.";
+ Text[ polish ] = "Oblicza sta³¹ stopê procentow¹ inwestycji przy regularnej p³atnoœci.";
+ Text[ japanese ] = "’èŠúŽx•¥‚¢‚É‚¨‚¯‚é“ŠŽ‘‚̈ê’è‚Ì—˜—¦‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@¶µ©w´ÁÀvÁÙªº¶U´ÚªºùÚ©w§Q²v¡C";
+ Text[ arabic ] = "ÊÍÓÈ äÓÈÉ ÇáÝÇÆÏÉ ÇáËÇÈÊÉ áÇÓÊËãÇÑ ÇÓÊäÇÏÇð Åáì ÏÝÚÇÊ ÏæÑíÉ.";
+ Text[ dutch ] = "Berekent de vaste rentevoet van een investering bij regelmatige betalingen.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»Ïî´û¿îÔÚ¶¨ÆÚ³¥»¹Çé¿öϵĸ÷ÆÚ(ºã¶¨)ÀûÂÊ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï óôáèåñü åðéôüêéï ìéáò åðÝíäõóçò ìå ôáêôéêÝò ðëçñùìÝò.";
+ Text[ korean ] = "ÀÏ¹Ý ÁöºÒ°ú ÇÔ²² ÅõÀÚÀÇ °íÁ¤ ÀÌÀÚÀ²À» »êÃâ";
+ Text[ turkish ] = "Düzenli ödemeleri olan bir yatýrýmýn sabit faiz oranýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_ZINS );
+ 6; 0; 0; 0; 1; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "ZZR" ;
+ Text [ english ] = "nper" ;
+ Text [ norwegian ] = "ZZR" ;
+ Text [ italian ] = "NUM.RATE" ;
+ Text [ portuguese_brazilian ] = "ZZR" ;
+ Text [ portuguese ] = "Nper" ;
+ Text [ finnish ] = "ZZR" ;
+ Text [ danish ] = "NPER" ;
+ Text [ french ] = "NPM" ;
+ Text [ swedish ] = "BPER" ;
+ Text [ dutch ] = "NPER" ;
+ Text [ spanish ] = "nper" ;
+ Text [ english_us ] = "NPER" ;
+ Text[ chinese_simplified ] = "nper";
+ Text[ russian ] = "Êïåð";
+ Text[ polish ] = "NPER";
+ Text[ japanese ] = "‘SŽx•¥‚¢ŠúŠÔ";
+ Text[ chinese_traditional ] = "nper";
+ Text[ arabic ] = "Nper";
+ Text[ dutch ] = "NPER";
+ Text[ chinese_simplified ] = "nper";
+ Text[ greek ] = "nper";
+ Text[ korean ] = "NPER";
+ Text[ turkish ] = "NPER";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird. : Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuitõt (Rente) gezahlt wird. */
+ Text = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ english ] = "is the total number of payment periods in an annuity." ;
+ Text [ norwegian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ italian ] = "è il numero totale dei periodi di pagamento in un'annualità." ;
+ Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ portuguese ] = "é o número total de períodos de pagamento numa anuidade." ;
+ Text [ finnish ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
+ Text [ french ] = "Le nombre total de périodes de paiement de l'annuité." ;
+ Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder då annuiteten (pension) betalas." ;
+ Text [ dutch ] = "Het totale aantal perioden in een annuïteit." ;
+ Text [ spanish ] = "es el número total de períodos de pago en una anualidad." ;
+ Text [ english_us ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî ïåðèîäîâ âûïëàò ãîäîâîé ðåíòû.";
+ Text[ polish ] = "Okres p³atnoœci. Ca³kowita liczba okresów, w których sp³acana bêdzie suma sp³aty d³ugu.";
+ Text[ japanese ] = "ŠúŠÔ¡ “ŠŽ‘ŠúŠÔ‘S‘Ì‚Å‚ÌŽx•¥‰ñ”‚̇ŒvB";
+ Text[ chinese_traditional ] = "¤ä¥I¦~ª÷ªºÁ`¶g´Á¼Æ¡C";
+ Text[ arabic ] = "ãÏÉ ÇáÏÝÚ. ÇáÚÏÏ ÇáÅÌãÇáí ááÝÊÑÇÊ ÇáÊí íÊã ÝíåÇ ÏÝÚ ÇáÓøõäÇåíøÉ (ãÚÇÔ).";
+ Text[ dutch ] = "Het totale aantal perioden in een annuïteit.";
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ greek ] = "ÄéÜñêåéá ðëçñùìÞò. Ôï óýíïëï ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ðëçñþíåôáé ôï ÷ñåùëýóéï (óýíôáîç).";
+ Text[ korean ] = "Áö±Þ ±â°£. ÁöºÒµÈ ¿¬±ÝÀÇ ±â°£ÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Taksit sayýsý. Annüite ödenen toplam dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "RMZ" ;
+ Text [ english ] = "pmt" ;
+ Text [ norwegian ] = "RMZ" ;
+ Text [ italian ] = "RATA" ;
+ Text [ portuguese_brazilian ] = "RMZ" ;
+ Text [ portuguese ] = "Pgto" ;
+ Text [ finnish ] = "RMZ" ;
+ Text [ danish ] = "YDELSE" ;
+ Text [ french ] = "VPM" ;
+ Text [ swedish ] = "RBB" ;
+ Text [ dutch ] = "bet" ;
+ Text [ spanish ] = "pago" ;
+ Text [ english_us ] = "PMT" ;
+ Text[ chinese_simplified ] = "pmt";
+ Text[ russian ] = "Âûïëàòà";
+ Text[ polish ] = "pmt";
+ Text[ japanese ] = "’èŠúŽx•¥Šz";
+ Text[ chinese_traditional ] = "pmt";
+ Text[ arabic ] = "Pmt";
+ Text[ dutch ] = "bet";
+ Text[ chinese_simplified ] = "pmt";
+ Text[ greek ] = "Pmt";
+ Text[ korean ] = "PMT";
+ Text[ turkish ] = "Düzenli ödeme";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird. : Regelmõ˜ige Zahlung. Die konstante Annuitõt, die in jeder Periode gezahlt wird. */
+ Text = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ english ] = "is the payment made each period and cannot change over the life of the annuity." ;
+ Text [ norwegian ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ italian ] = "è il pagamento effettuato in ciascun periodo e non può variare nel corso dell'annualità." ;
+ Text [ portuguese_brazilian ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ portuguese ] = "é o pagamento feito em cada período, mantendo-se constante durante a vigência da anuidade." ;
+ Text [ finnish ] = "Regelmäßige Zahlung. Die konstante Annuität, die in jeder Periode gezahlt wird." ;
+ Text [ danish ] = "Ydelse. Den konstante ydelse som betales hver periode og ikke kan ændres i annuitetens løbetid" ;
+ Text [ french ] = "Paiement régulier. L'annuité constante payée pour chaque période." ;
+ Text [ swedish ] = "Regelbunden betalning. Den konstanta annuiteten som betalas i varje period." ;
+ Text [ dutch ] = "Regelmatige betaling. De constante annuïteit die elke periode wordt betaald." ;
+ Text [ spanish ] = "es el pago que se efectúa en cada período y que no puede cambiar durante la vida de la anualidad." ;
+ Text [ english_us ] = "Regular payments. The constant annuity to be paid in each period." ;
+ Text[ chinese_simplified ] = "·ÖÆÚÖ§¸¶¶î¡£ÔÚÿ¸öÖÜÆÚÓ¦Ö§¸¶µÄ¹Ì¶¨½ð¶î¡£";
+ Text[ russian ] = "Âûïëàòà, ïðîèçâîäèìàÿ â êàæäûé ïåðèîä è íå ìåíÿþùàÿñÿ çà âñå âðåìÿ âûïëàòû ðåíòû.";
+ Text[ polish ] = "Sta³a suma sp³aty d³ugu (obejmuj¹ca czêœæ d³ugu i odsetki), która jest p³acona regularnie w ka¿dym okresie.";
+ Text[ japanese ] = "’èŠúŽx•¥Šz¡ –ˆ‰ñ‚ÌŽx•¥Šz‚ðŽw’肵‚Ü‚·B“ŠŽ‘ŠúŠÔ“à‚ÉŽx•¥Šz‚ð•ÏX‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñ¡";
+ Text[ chinese_traditional ] = "¤À´Á¤ä¥I¡C¦U´Á¤ä¥Iªº«í©w¦~ª÷¡C";
+ Text[ arabic ] = "ÞÓØ ÏæÑí. ÇáÞÓØ ÇáËÇÈÊ ÇáÐí íÊã ÏÝÚå Ýí ßá ÝÊÑÉ.";
+ Text[ dutch ] = "Regelmatige betaling. De constante annuïteit die elke periode wordt betaald.";
+ Text[ chinese_simplified ] = "·ÖÆÚÖ§¸¶¶î¡£ÔÚÿ¸öÖÜÆÚÓ¦Ö§¸¶µÄ¹Ì¶¨½ð¶î¡£";
+ Text[ greek ] = "ÔáêôéêÞ ðëçñùìÞ. Ôï óôáèåñü ÷ñåùëýóéï êÜèå ðåñéüäïõ.";
+ Text[ korean ] = "Á¤±â ÁöºÒ. Áֱ⸶´Ù ÁöºÒµÇ´Â ÀÏÁ¤ ¿¬ºÎ±ÝÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Düzenli ödemeler. Her dönem ödenen sabit annüiteler.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "BW" ;
+ Text [ english ] = "pv" ;
+ Text [ norwegian ] = "BW" ;
+ Text [ italian ] = "VA" ;
+ Text [ portuguese_brazilian ] = "BW" ;
+ Text [ portuguese ] = "VA" ;
+ Text [ finnish ] = "BW" ;
+ Text [ danish ] = "NV" ;
+ Text [ french ] = "VA" ;
+ Text [ swedish ] = "NV" ;
+ Text [ dutch ] = "HW" ;
+ Text [ spanish ] = "va" ;
+ Text [ english_us ] = "pv" ;
+ Text[ chinese_simplified ] = "pv";
+ Text[ russian ] = "Íç";
+ Text[ polish ] = "PV";
+ Text[ japanese ] = "Œ»Ý‰¿’l";
+ Text[ chinese_traditional ] = "pv";
+ Text[ arabic ] = "Pv";
+ Text[ dutch ] = "HW";
+ Text[ chinese_simplified ] = "pv";
+ Text[ greek ] = "Pv";
+ Text[ korean ] = "pv";
+ Text[ turkish ] = "Bugünkü deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ english ] = "is the present valueùthe total amount that a series of future payments is worth now." ;
+ Text [ norwegian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ italian ] = "è il valore attuale o la somma forfettaria che rappresenta il valore attuale di una serie di pagamenti futuri." ;
+ Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ portuguese ] = "é o valor presente ou a quantia total actual correspondente a uma série de pagamentos futuros." ;
+ Text [ finnish ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ danish ] = "Nutidsværdi. Den værdi en række ydelser er værd nu." ;
+ Text [ french ] = "Valeur actuelle = la valeur, à la date d'aujourd'hui, d'une série de remboursements futurs." ;
+ Text [ swedish ] = "Nuvarande värde. Det nuvarande värdet för raden av betalningar." ;
+ Text [ dutch ] = "De huidige waarde, ofwel het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is." ;
+ Text [ spanish ] = "es el valor actual de la cantidad total de una serie de pagos futuros." ;
+ Text [ english_us ] = "Present value. The current value of a series of payments" ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£»òһϵÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ russian ] = "Òåêóùàÿ ñòîèìîñòü: îáùàÿ ñóììà âñåõ áóäóùèõ ïëàòåæåé ñ íàñòîÿùåãî ìîìåíòà.";
+ Text[ polish ] = "Wartoœæ bie¿¹ca dla serii przysz³ych p³atnoœci.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB «—ˆs‚í‚ê‚éˆê˜A‚ÌŽx•¥‚¢‚ðAŒ»Žž“_‚ňꊇ•¥‚¢‚µ‚½ê‡‚̇Œv‹àŠzB";
+ Text[ chinese_traditional ] = "Ðä²{­È¡C©Î¤@¨t¦C¥¼¨Ó¤ä¥Iªº¥Ø«e»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÍÇáíÉ áÓáÓáÉ ÇáÏÝÚÇÊ.";
+ Text[ dutch ] = "De huidige waarde, ofwel het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£»òһϵÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Ç ðáñïýóá áîßá ìéáò óåéñÜò ðëçñùìþí.";
+ Text[ korean ] = "ÇöÀç°ª. ÁöºÒÀÇ ¿¬¼ÓÀÇ ÇöÀç °ª";
+ Text[ turkish ] = "Bugünkü deðer. Ödeme dizisinin bugünkü deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "ZW" ;
+ Text [ english ] = "fv" ;
+ Text [ norwegian ] = "ZW" ;
+ Text [ italian ] = "VAL.FUT" ;
+ Text [ portuguese_brazilian ] = "ZW" ;
+ Text [ portuguese ] = "VF" ;
+ Text [ finnish ] = "ZW" ;
+ Text [ danish ] = "FV" ;
+ Text [ french ] = "VC" ;
+ Text [ swedish ] = "FV" ;
+ Text [ dutch ] = "TW" ;
+ Text [ spanish ] = "vf" ;
+ Text [ english_us ] = "fv" ;
+ Text[ chinese_simplified ] = "fv";
+ Text[ russian ] = "Áñ";
+ Text[ polish ] = "fv";
+ Text[ japanese ] = "«—ˆ‰¿’l";
+ Text[ chinese_traditional ] = "fv";
+ Text[ arabic ] = "Fv";
+ Text[ dutch ] = "TW";
+ Text[ chinese_simplified ] = "fv";
+ Text[ greek ] = "fv";
+ Text[ korean ] = "fv";
+ Text[ turkish ] = "Gelecek deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. : Zuk³nftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. */
+ Text = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ english ] = "is the future value, or a cash balance you want to attain after the last payment is made." ;
+ Text [ norwegian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ italian ] = "è il valore futuro o il saldo in contanti che si desidera raggiungere dopo aver effettuato l'ultimo pagamento." ;
+ Text [ portuguese_brazilian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ portuguese ] = "é o valor futuro ou um saldo de caixa obtido depois de efectuado o último pagamento." ;
+ Text [ finnish ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ danish ] = "Fremtidsværdi. Den værdi eller den kassebalance, der ønskes opnået, når den sidste ydelse er betalt." ;
+ Text [ french ] = "Valeur future (valeur capitalisée) : le montant que vous souhaitez obtenir après le dernier paiement." ;
+ Text [ swedish ] = "Framtida värde. Värdet (slutvärde) som skall uppnås efter den sista betalningen." ;
+ Text [ dutch ] = "De toekomstige waarde, ofwel het saldo dat u wilt bereiken als de laatste betaling is verricht." ;
+ Text [ spanish ] = "es el valor futuro o un saldo en efectivo que desea lograr después de efectuar el último pago." ;
+ Text [ english_us ] = "Future value. The value (end value) to be attained after the final payment." ;
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£Íê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄ×îÖÕÖµ¡£";
+ Text[ russian ] = "Áóäóùàÿ ñòîèìîñòü èëè áàëàíñ íàëè÷íîñòè, êîòîðûé íóæíî äîñòè÷ü ïîñëå ïîñëåäíåé âûïëàòû.";
+ Text[ polish ] = "Przysz³a wartoœæ. Wartoœæ koñcowa, która ma zostaæ osi¹gniêta po dokonaniu ostatniej p³atnoœci.";
+ Text[ japanese ] = "“ŠŽ‘‚Ì«—ˆ‰¿’lBÅŒã‚ÌŽx•¥‚¢‚ðs‚Á‚½Œã‚ÉŽc‚錻‹à‚ÌŽûŽx‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥¼¨Ó­È¡C§¹¦¨³Ì«á¤@¦¸¤ä¥I«á¹F¨ìªº³Ì²×­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÓÊÞÈáíÉ¡ Ãæ ÇáãíÒÇäíÉ ÇáäÞÏíÉ ÇáÊí ÊÑíÏ ÇáæÕæá ÅáíåÇ ÈÚÏ ÓÏÇÏ ÃÎÑ ÏÝÚÉ.";
+ Text[ dutch ] = "De toekomstige waarde, ofwel het saldo dat u wilt bereiken als de laatste betaling is verricht.";
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£Íê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄ×îÖÕÖµ¡£";
+ Text[ greek ] = "ÌåëëïíôéêÞ ôéìÞ. Ç ôéìÞ (ôåëéêÞ ôéìÞ) ðïõ èá ðñïêýøåé ìåôÜ ôçí ôåëåõôáßá ðëçñùìÞ.";
+ Text[ korean ] = "¹Ì·¡ °¡Ä¡. ¸¶Áö¸· ÁöºÒ ÈÄ¿¡ À̸£°Ô µÉ °¡Ä¡(ÃÖÁ¾ °¡Ä¡)ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Gelecek deðer. Son ödeme yapýldýktan sonra elde edilmek istenen deðer (son deðer).";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "F" ;
+ Text [ english ] = "type" ;
+ Text [ norwegian ] = "F" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "F" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "F" ;
+ Text [ danish ] = "F" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "F" ;
+ Text [ dutch ] = "V" ;
+ Text [ spanish ] = "tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Žx•¥Šú“ú";
+ Text[ chinese_traditional ] = "type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "V";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fõlligkeit. F = 1 hei˜t Fõlligkeit am Anfang einer Periode, F = 0 am Ende. */
+ Text = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ english ] = "is the number 0 or 1 and indicates when payments are due." ;
+ Text [ norwegian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ italian ] = "Scadenze dei pagamenti. F = 1 significa all'inizio di un periodo, F = 0 alla fine." ;
+ Text [ portuguese_brazilian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ portuguese ] = "é o vencimento dos pagamentos de juros. 1 significa no ínicio do período, 0 no final." ;
+ Text [ finnish ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
+ Text [ french ] = "Échéance. Type=1 signifie échéance au début d'une période, type=0 à la fin d'une période." ;
+ Text [ swedish ] = "Förfallotidpunkt. F = 1 betyder förfallotidpunkt i början av en period, F = 0 i slutet." ;
+ Text [ dutch ] = "Vervaldatum. V = 1 geeft aan dat de betaling moet worden verricht aan het begin van een periode, V =0 aan het einde." ;
+ Text [ spanish ] = "es el vencimiento de los pagos, 1 es al comienzo del período, 0 al final." ;
+ Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬\ntype = 0 ±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå (0 èëè1), îáîçíà÷àþùåå, äîëæíà ëè ïðîèçâîäèòüñÿ âûïëàòà â êîíöå ïåðèîäà (0) èëè â íà÷àëå ïåðèîäà (1).";
+ Text[ polish ] = "Wartoœæ 0 lub 1 okreœlaj¹ca sposób dokonywania p³atnoœci ( z do³u lub z góry).";
+ Text[ japanese ] = "Žx•¥‚¢Šú“úBŽx•¥Šú“ú=1 ŠeŠú‚ÌŠúŽñAŽx•¥Šú“ú=0 ŠeŠú‚ÌŠú––¡";
+ Text[ chinese_traditional ] = "¨ì´ÁÃþ«¬¡C F = 1 ªí¥Ü¦b¶g´Á¶}©l®É¨ì´Á¡MF = 0 ªí¥Ü¦b¶g´Áµ²§ô®É¨ì´Á¡C";
+ Text[ arabic ] = "ÇáÏÝÚ Ýí ÈÏÇíÉ ÇáÝÊÑÉ ý= 1º ÇáÏÝÚ Ýí äåÇíÉ ÇáÝÊÑÉ = 0.";
+ Text[ dutch ] = "Vervaldatum. V = 1 geeft aan dat de betaling moet worden verricht aan het begin van een periode, V =0 aan het einde.";
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬\ntype = 0 ±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ greek ] = "×ñüíïò ðëçñùìÞò.F = 1 óçìáßíåé ðëçñùìÞ óôçí áñ÷Þ ìéáò ðåñéüäïõ, F = 0 óçìáßíåé ðëçñùìÞ óôï ôÝëïò ôçò ðåñéüäïõ.";
+ Text[ korean ] = "¸¸±âÀÏ. ¸¸±âÀÏ=1Àº ±âÇÑÀÇ ½ÃÀÛÀ» ³ªÅ¸³»¸ç ¸¸±âÀÏ=0Àº ±âÇÑÀÇ ³¡À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Vade. F = 1, vade dönem baþýnda, F = 0 ise dönem sonunda anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 12 // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ {
+ Text = "SW" ;
+ Text [ english ] = "guess" ;
+ Text [ norwegian ] = "SW" ;
+ Text [ italian ] = "ipotesi" ;
+ Text [ portuguese_brazilian ] = "SW" ;
+ Text [ portuguese ] = "Estimativa" ;
+ Text [ finnish ] = "SW" ;
+ Text [ danish ] = "SW" ;
+ Text [ french ] = "Estimation" ;
+ Text [ swedish ] = "gissning" ;
+ Text [ dutch ] = "SW" ;
+ Text [ spanish ] = "estimar" ;
+ Text [ english_us ] = "guess" ;
+ Text[ chinese_simplified ] = "guess";
+ Text[ russian ] = "Ïðåäïîëîæåíèå";
+ Text[ polish ] = "WartoϾ szacowana";
+ Text[ japanese ] = "„’è’l";
+ Text[ chinese_traditional ] = "guess";
+ Text[ arabic ] = "Guess";
+ Text[ dutch ] = "SW";
+ Text[ chinese_simplified ] = "guess";
+ Text[ greek ] = "guess";
+ Text[ korean ] = "ÃßÁ¤°ª";
+ Text[ turkish ] = "Tahmini deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 13 // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Schätzwert. Schätzwert des Zinses für das iterative Berechnungsverfahren. : Schõtzwert. Schõtzwert des Zinses f³r das iterative Berechnungsverfahren. */
+ Text = "Schätzwert. Schätzwert des Zinses für das iterative Berechnungsverfahren." ;
+ Text [ english ] = "is your guess for what the rate will be." ;
+ Text [ norwegian ] = "Schätzwert. Schätzwert des Zinses für das iterative Berechnungsverfahren." ;
+ Text [ italian ] = "è la previsione del tasso di interesse futuro." ;
+ Text [ portuguese_brazilian ] = "Schätzwert. Schätzwert des Zinses für das iterative Berechnungsverfahren." ;
+ Text [ portuguese ] = "é o valor da estimativa dos juros para o processo de cálculo." ;
+ Text [ finnish ] = "Schätzwert. Schätzwert des Zinses für das iterative Berechnungsverfahren." ;
+ Text [ danish ] = "Gæt. Skøn over renten for den iterative beregning." ;
+ Text [ french ] = "La valeur estimée quant au taux pour la méthode de calculation itérative." ;
+ Text [ swedish ] = "Gissning. Räntans uppskattade värde för den iterativa beräkningsmetoden." ;
+ Text [ dutch ] = "Geschatte waarde. Schatting van de rente voor de iteratieve berekening." ;
+ Text [ spanish ] = "es su estimación de la tasa de interés." ;
+ Text [ english_us ] = "Guess. The estimate of the interest rate for the iterative calculating method." ;
+ Text[ chinese_simplified ] = "¹À¼ÆÖµ¡£²ÉÓýüËƼÆË㷨ʱµÄÀûÂʹÀ¼ÆÖµ¡£";
+ Text[ russian ] = "Ïðåäïîëàãàåìàÿ âåëè÷èíà íîðìû.";
+ Text[ polish ] = "WartoϾ szacowana odsetek dla iteracyjnej metody kalkulacji.";
+ Text[ japanese ] = "„’è’l¡ —˜—¦‚ª‚¨‚æ‚»‚Ç‚ê‚­‚ç‚¢‚É‚È‚é‚©‚ð„’肵‚½’lB";
+ Text[ chinese_traditional ] = "¦ô­p­È¡C¥Î¨Óªñ¦ü­pºâªkªº§Q®§¦ô­p­È¡C";
+ Text[ arabic ] = "ÊÞÏíÑß áãÇ ÓÊÕÈÍ Úáíå ÇáÝÇÆÏÉ.";
+ Text[ dutch ] = "Geschatte waarde. Schatting van de rente voor de iteratieve berekening.";
+ Text[ chinese_simplified ] = "¹À¼ÆÖµ¡£²ÉÓýüËƼÆË㷨ʱµÄÀûÂʹÀ¼ÆÖµ¡£";
+ Text[ greek ] = "Åêôéìþìåíç ôéìÞ. Åêôéìþìåíç ôéìÞ ôïõ åðéôïêßïõ ãéá ôçí åðáíáëçðôéêÞ äéáäéêáóßá õðïëïãéóìïý.";
+ Text[ korean ] = "ÃßÁ¤°ª. ¹Ýº¹ °è»ê ¹æ½Ä¿¡ÀÇÇÑ ÀÌÀÚÀ² »êÃâ .";
+ Text[ turkish ] = "Tahmini deðer. Özyineleme hesabý için faiz oranýnýn baþlangýç deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZINSZ #*=-
+ Resource SC_OPCODE_ZINS_Z
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zinseszins. Berechnet den Zinsbetrag einer Periode für eine Investition bei regelmäßigen Zahlungen und konstantem Zinssatz. : Zinseszins. Berechnet den Zinsbetrag einer Periode f³r eine Investition bei regelmõ˜igen Zahlungen und konstantem Zinssatz. */
+ Text = "Zinseszins. Berechnet den Zinsbetrag einer Periode für eine Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ english ] = "Returns the interest payment for a given period for an investment based on periodic, constant payments and a constant interest rate." ;
+ Text [ norwegian ] = "Zinseszins. Berechnet den Zinsbetrag einer Periode für eine Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ italian ] = "Interesse composto. Restituisce il pagamento di un periodo per un investimento sulla base di pagamenti periodici e di un tasso di interesse costante." ;
+ Text [ portuguese_brazilian ] = "Zinseszins. Berechnet den Zinsbetrag einer Periode für eine Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ portuguese ] = "Devolve a quantia total de juros periódicos de um investimento a uma taxa de juros constante." ;
+ Text [ finnish ] = "Zinseszins. Berechnet den Zinsbetrag einer Periode für eine Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ danish ] = "Rentes rente. Beregner renteydelsen i en periode for en investering ved konstante ydelser og konstant rentesats." ;
+ Text [ french ] = "Calcule le montant des intérêts d'un investissement pour une période donnée sur la base de paiements réguliers et d'un taux d'intérêt constant." ;
+ Text [ swedish ] = "Ränta på ränta. Beräknar räntebeloppet i en period för en investering vid regelbundna betalningar och konstant räntesats." ;
+ Text [ dutch ] = "Samengestelde interest. Berekent het rentebedrag over een periode voor een investering bij regelmatige betalingen en vaste rentevoet." ;
+ Text [ spanish ] = "Devuelve el interés pagado en un período específico para una inversión con pagos regulares y una tasa de interés constante." ;
+ Text [ english_us ] = "Compounded interest. Calculates the interest payment on the principal for an investment with regular payments and a constant interest rate for a given period." ;
+ Text[ chinese_simplified ] = "ÔÚ¶¨ÆÚÖ§¸¶ºÍÀûÂʹ̶¨µÄÇé¿öÏ£¬¼ÆËãÒ»Ïî´û¿îÔÚÖ¸¶¨ÖÜÆÚÄÚÓ¦Ö§¸¶µÄÀûÏ¢½ð¶î¡£";
+ Text[ russian ] = "Âîçâðàùàåò âåëè÷èíó âûïëàòû ïðèáûëè íà âëîæåíèÿ çà äàííûé ïåðèîä, îñíîâàííóþ íà ïîñòîÿííûõ âûïëàòàõ è ïîñòîÿííîì ïðîöåíòå.";
+ Text[ polish ] = "Odsetki sk³adane. Oblicza stopê oprocentowania inwestycji w podanym okresie przy regularnych p³atnoœciach i sta³ej stopie oprocentowania.";
+ Text[ japanese ] = "•¡—˜B’èŠz‚ÌŽx•¥‚¢‚ð’èŠú“I‚És‚¢A—˜—¦‚ªˆê’è‚Å‚ ‚é‚Ɖ¼’肵‚ÄA“ŠŽ‘ŠúŠÔ“à‚ÌŽw’肳‚ꂽŠú‚ÉŽx•¥‚í‚ê‚é‹à—˜‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦b©w´Á¤ä¥I©M§Q²v©T©wªº±¡ªp¤U¡M­pºâ¤@¶µ¶U´Ú¦bµ¹©w´Á¤ºÀvÁÙªº§Q®§ª÷ÃB¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÏÝÚÉ ÇáÝÇÆÏÉ áÝÊÑÉ ÇÓÊËãÇÑ¡ ÈÇáÇÓÊäÇÏ Åáì ÏÝÚÇÊ ÏæÑíÉ æÅáì äÓÈÉ ÝÇÆÏÉ ËÇÈÊÉ.";
+ Text[ dutch ] = "Samengestelde interest. Berekent het rentebedrag over een periode voor een investering bij regelmatige betalingen en vaste rentevoet.";
+ Text[ chinese_simplified ] = "ÔÚ¶¨ÆÚÖ§¸¶ºÍÀûÂʹ̶¨µÄÇé¿öÏ£¬¼ÆËãÒ»Ïî´û¿îÔÚÖ¸¶¨ÖÜÆÚÄÚÓ¦Ö§¸¶µÄÀûÏ¢½ð¶î¡£";
+ Text[ greek ] = "Áíáôïêéóìüò. Õðïëïãßæåé ôïí ôüêï ìéáò åðÝíäõóçò ãéá ìéá ðåñßïäï ìå ôáêôéêÝò ðëçñùìÝò êáé óôáèåñü åðéôüêéï.";
+ Text[ korean ] = "º¹ÇÕ ¼öÀÍ. ÀÏ¹Ý ÁöºÒ°ú ÇÔ²² ÁÖ¿ä ÅõÀÚ »óÀÇ ¼öÀÍ ÁöºÒ°ú ÁÖ¾îÁø ±â°£ÀÇ °íÁ¤ÀÌÀÚÀ² »êÃâ .";
+ Text[ turkish ] = "Bileþik faiz. Düzenli ödemeli ve sabit faiz oranlý yatýrýmýn dönem faizini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_ZINSZ );
+ 6; 0; 0; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zins" ;
+ Text [ english ] = "rate" ;
+ Text [ norwegian ] = "Zins" ;
+ Text [ italian ] = "tasso_int" ;
+ Text [ portuguese_brazilian ] = "Zins" ;
+ Text [ portuguese ] = "Taxa" ;
+ Text [ finnish ] = "Zins" ;
+ Text [ danish ] = "Rente" ;
+ Text [ french ] = "Taux" ;
+ Text [ swedish ] = "ränta" ;
+ Text [ dutch ] = "Rente" ;
+ Text [ spanish ] = "tasa" ;
+ Text [ english_us ] = "rate" ;
+ Text[ chinese_simplified ] = "rate";
+ Text[ russian ] = "Íîðìà";
+ Text[ polish ] = "Odsetki";
+ Text[ japanese ] = "—˜—¦";
+ Text[ chinese_traditional ] = "rate";
+ Text[ arabic ] = "Rate";
+ Text[ dutch ] = "Rente";
+ Text[ chinese_simplified ] = "rate";
+ Text[ greek ] = "rate";
+ Text[ korean ] = "ºñÀ²";
+ Text[ turkish ] = "Faiz";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zinssatz pro Periode." ;
+ Text [ english ] = "is the interest rate per period." ;
+ Text [ norwegian ] = "Der Zinssatz pro Periode." ;
+ Text [ italian ] = "è il tasso di interesse per periodo." ;
+ Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
+ Text [ portuguese ] = "é a taxa de juros periódica." ;
+ Text [ finnish ] = "Der Zinssatz pro Periode." ;
+ Text [ danish ] = "Rentesatsen per periode." ;
+ Text [ french ] = "Le taux d'intérêt par période." ;
+ Text [ swedish ] = "Räntesatsen per period." ;
+ Text [ dutch ] = "Het rentepercentage per periode." ;
+ Text [ spanish ] = "es la tasa de interés por período." ;
+ Text [ english_us ] = "The rate of interest per period." ;
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ russian ] = "Íîðìà ïðèáûëè çà ïåðèîä.";
+ Text[ polish ] = "Stopa procentowa dla pojedynczego okresu.";
+ Text[ japanese ] = "ŠeŠú‚Ì—˜‘§B";
+ Text[ chinese_traditional ] = "¨C­Ó¶g´Áªº§Q²v¡C";
+ Text[ arabic ] = "äÓÈÉ ÇáÝÇÆÏÉ áßá ÝÊÑÉ.";
+ Text[ dutch ] = "Het rentepercentage per periode.";
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ greek ] = "Ôï åðéôüêéï áíÜ ðåñßïäï.";
+ Text[ korean ] = "±â°£´ç ÀÌÀÚÀ²";
+ Text[ turkish ] = "Dönem faiz oraný.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "P" ;
+ Text [ english ] = "per" ;
+ Text [ norwegian ] = "P" ;
+ Text [ italian ] = "periodo" ;
+ Text [ portuguese_brazilian ] = "P" ;
+ Text [ portuguese ] = "Período" ;
+ Text [ finnish ] = "P" ;
+ Text [ danish ] = "P" ;
+ Text [ french ] = "P" ;
+ Text [ swedish ] = "P" ;
+ Text [ dutch ] = "P" ;
+ Text [ spanish ] = "período" ;
+ Text [ english_us ] = "per" ;
+ Text[ chinese_simplified ] = "per";
+ Text[ russian ] = "Ïåðèîä";
+ Text[ polish ] = "Okres";
+ Text[ japanese ] = "Šú";
+ Text[ chinese_traditional ] = "per";
+ Text[ arabic ] = "Per";
+ Text[ dutch ] = "P";
+ Text[ chinese_simplified ] = "per";
+ Text[ greek ] = "Per";
+ Text[ korean ] = "per";
+ Text[ turkish ] = "D";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Periode. Die Periode, für die die Zinseszinsen berechnet werden. P = 1 heißt für die erste Periode, P = ZZR für die letzte. : Periode. Die Periode, f³r die die Zinseszinsen berechnet werden. P = 1 hei˜t f³r die erste Periode, P = ZZR f³r die letzte. */
+ Text = "Periode. Die Periode, für die die Zinseszinsen berechnet werden. P = 1 heißt für die erste Periode, P = ZZR für die letzte." ;
+ Text [ english ] = "is the period for which you want to find the interest, and must be in the range 1 to nper." ;
+ Text [ norwegian ] = "Periode. Die Periode, für die die Zinseszinsen berechnet werden. P = 1 heißt für die erste Periode, P = ZZR für die letzte." ;
+ Text [ italian ] = "è il periodo per il quale si desidera calcolare gli interessi. P = 1 significa per il promo periodo, P = periodi significa per l'ultimo." ;
+ Text [ portuguese_brazilian ] = "Periode. Die Periode, für die die Zinseszinsen berechnet werden. P = 1 heißt für die erste Periode, P = ZZR für die letzte." ;
+ Text [ portuguese ] = "é o período para o qual se calcula a amortização. 1 indica o primeiro período, nper o último." ;
+ Text [ finnish ] = "Periode. Die Periode, für die die Zinseszinsen berechnet werden. P = 1 heißt für die erste Periode, P = ZZR für die letzte." ;
+ Text [ danish ] = "Periode. Perioden som rentes renten beregnes for. P = 1 betyder for den første periode, P = NPER for den sidste." ;
+ Text [ french ] = "La période pour laquelle vous souhaitez calculer les intérêts. P = 1 pour la première période, P = NPM pour la dernière." ;
+ Text [ swedish ] = "Period. Perioden som räntorna på räntor skall betalas för. P = 1 betyder för den första perioden och P = BPER för den sista." ;
+ Text [ dutch ] = "De periode waarover de interest moet worden berekend. P = 1 betekent voor de eerste periode, P = NPER voor de laatste" ;
+ Text [ spanish ] = "es el período para el que se desea calcular el interés, y deberá estar entre 1 y el argumento nper." ;
+ Text [ english_us ] = "Periods. The periods for which the compounded interest is to be calculated. P = 1 denotes for the first period, P = NPER for the last one." ;
+ Text[ chinese_simplified ] = "ÖÜÆÚÊý¡£Òª¼ÆËãÆäÀûÏ¢½ð¶îµÄÖÜÆÚÊý¡£ per = 1 \nÊǵÚÒ»¸öÖÜÆÚ£¬ per = nper ÊÇ×îºóÒ»¸öÖÜÆÚ¡£";
+ Text[ russian ] = "Ïåðèîä, äëÿ êîòîðîãî òðåáóåòñÿ íàéòè ïðèáûëü, äîëæåí áûòü â èíòåðâàëå îò 1 äî Êïåð.";
+ Text[ polish ] = "Okres, dla którego maj¹ zostaæ obliczone odsetki sk³adowe. 1 oznacza pierwszy okres, nper - ostatni.";
+ Text[ japanese ] = "ŠúB‹à—˜Žx•¥Šz‚ð‹‚ß‚éŠúBŠú=1‚Íʼn‚ÌŠúAŠú=‘SŽx•¥‚¢ŠúŠÔ‚ÍÅŒã‚ÌŠúB";
+ Text[ chinese_traditional ] = "¶g´Á¡C¥Î©ó­pºâ´_§Qªº¶g´Á¼Æ¡C per = 1 ¬O²Ä¤@­Ó¶g´Á¡M \nper = nper ¬O³Ì«á¤@­Ó¶g´Á¡C";
+ Text[ arabic ] = "ÇáÝÊÑÉ ÇáÊí ÊÑíÏ ãÚÑÝÉ ÇáÝÇÆÏÉ ÎáÇáåÇ æíÌÈ Ãä Êßæä Öãä ÇáäØÇÞ 1 Åáì nper.";
+ Text[ dutch ] = "De periode waarover de interest moet worden berekend. P = 1 betekent voor de eerste periode, P = NPER voor de laatste";
+ Text[ chinese_simplified ] = "ÖÜÆÚÊý¡£Òª¼ÆËãÆäÀûÏ¢½ð¶îµÄÖÜÆÚÊý¡£ per = 1 \nÊǵÚÒ»¸öÖÜÆÚ£¬ per = nper ÊÇ×îºóÒ»¸öÖÜÆÚ¡£";
+ Text[ greek ] = "Ðåñßïäïò. Ç ðåñßïäïò ãéá ôçí ïðïßá õðïëïãßæïíôáé ïé ôüêïé áíáôïêéóìïý. Ñ = 1 óçìáßíåé ãéá ôçí ðñþôç ðåñßïäï, Ñ = ZZR ãéá ôçí ôåëåõôáßá.";
+ Text[ korean ] = "±â°£. »êÃâµÉ º¹ ÀÌÀÚÀ²ÀÇ ±â°£. P = 1 Àº ù¹ø° ±â°£À», P = NPERÀº ³ªÁö¸· ±â°£À» Ç¥ÇöÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Dönem. Geri ödemenin hesaplandýðý dönem. P = 1 ilk dönem, P = NPER ise son dönemdir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "ZZR" ;
+ Text [ english ] = "nper" ;
+ Text [ norwegian ] = "ZZR" ;
+ Text [ italian ] = "NUM.RATE" ;
+ Text [ portuguese_brazilian ] = "ZZR" ;
+ Text [ portuguese ] = "Nper" ;
+ Text [ finnish ] = "ZZR" ;
+ Text [ danish ] = "NPER" ;
+ Text [ french ] = "NPM" ;
+ Text [ swedish ] = "BPER" ;
+ Text [ dutch ] = "NPER" ;
+ Text [ spanish ] = "nper" ;
+ Text [ english_us ] = "NPER" ;
+ Text[ chinese_simplified ] = "nper";
+ Text[ russian ] = "Êïåð";
+ Text[ polish ] = "NPER";
+ Text[ japanese ] = "‘SŽx•¥‚¢ŠúŠÔ";
+ Text[ chinese_traditional ] = "nper";
+ Text[ arabic ] = "Nper";
+ Text[ dutch ] = "NPER";
+ Text[ chinese_simplified ] = "nper";
+ Text[ greek ] = "nper";
+ Text[ korean ] = "NPER";
+ Text[ turkish ] = "NPER";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird. : Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuitõt (Rente) gezahlt wird. */
+ Text = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ english ] = "is the total number of payment periods in an annuity." ;
+ Text [ norwegian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ italian ] = "è il numero totale dei periodi di pagamento in un'annualità." ;
+ Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ portuguese ] = "é o número total de períodos de pagamento numa anuidade." ;
+ Text [ finnish ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
+ Text [ french ] = "Le nombre total de périodes de paiement de l'annuité." ;
+ Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder då annuiteten (pension) betalas." ;
+ Text [ dutch ] = "Het totale aantal perioden in een annuïteit." ;
+ Text [ spanish ] = "es el número total de períodos de pago en una anualidad." ;
+ Text [ english_us ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
+ Text[ chinese_simplified ] = "×ÜÖ§¸¶ÆÚÊý¡£Ö§¸¶Äê½ðµÄ×ÜÖÜÆÚÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî ïåðèîäîâ âûïëàò ãîäîâîé ðåíòû.";
+ Text[ polish ] = "Okres p³atnoœci. Ca³kowita liczba okresów, w których sp³acana bêdzie suma sp³aty d³ugu.";
+ Text[ japanese ] = "Žx•¥‚¢ŠúŠÔB”N‹à‚ª•Ô‚³‚ê‚é‘S‘Ì‚ÌŠúŠÔB";
+ Text[ chinese_traditional ] = "Á`¤ä¥I´Á¼Æ¡C¤ä¥I¦~ª÷ªºÁ`¶g´Á¼Æ¡C";
+ Text[ arabic ] = "ãÏÉ ÇáÏÝÚ. ÇáÚÏÏ ÇáÅÌãÇáí ááÝÊÑÇÊ ÇáÊí íÊã ÝíåÇ ÏÝÚ ÇáÓøõäÇåíøÉ (ãÚÇÔ).";
+ Text[ dutch ] = "Het totale aantal perioden in een annuïteit.";
+ Text[ chinese_simplified ] = "×ÜÖ§¸¶ÆÚÊý¡£Ö§¸¶Äê½ðµÄ×ÜÖÜÆÚÊý¡£";
+ Text[ greek ] = "ÄéÜñêåéá ðëçñùìÞò. Ôï óýíïëï ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ðëçñþíåôáé ôï ÷ñåùëýóéï (óýíôáîç).";
+ Text[ korean ] = "Áö±Þ ±â°£. ÁöºÒµÈ ¿¬±ÝÀÇ ±â°£ÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Taksit sayýsý. Annüite ödenen toplam dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "BW" ;
+ Text [ english ] = "pv" ;
+ Text [ norwegian ] = "BW" ;
+ Text [ italian ] = "VA" ;
+ Text [ portuguese_brazilian ] = "BW" ;
+ Text [ portuguese ] = "VA" ;
+ Text [ finnish ] = "BW" ;
+ Text [ danish ] = "NV" ;
+ Text [ french ] = "VA" ;
+ Text [ swedish ] = "NV" ;
+ Text [ dutch ] = "HW" ;
+ Text [ spanish ] = "va" ;
+ Text [ english_us ] = "pv" ;
+ Text[ chinese_simplified ] = "pv";
+ Text[ russian ] = "Òñ";
+ Text[ polish ] = "PV";
+ Text[ japanese ] = "Œ»Ý‰¿’l";
+ Text[ chinese_traditional ] = "pv";
+ Text[ arabic ] = "Pv";
+ Text[ dutch ] = "HW";
+ Text[ chinese_simplified ] = "pv";
+ Text[ greek ] = "Pv";
+ Text[ korean ] = "pv";
+ Text[ turkish ] = "Bugünkü deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ english ] = "is the present value, or the lump-sum amount that a series of future payments is worth right now." ;
+ Text [ norwegian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ italian ] = "è il valore attuale o la somma forfettaria che rappresenta il valore attuale di una serie di pagamenti futuri." ;
+ Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ portuguese ] = "é o valor presente ou a quantia total actual correspondente a uma série de pagamentos futuros." ;
+ Text [ finnish ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ danish ] = "Nutidsværdi. Den værdi en række ydelser er værd nu." ;
+ Text [ french ] = "Valeur actuelle = la valeur, à la date d'aujourd'hui, d'une série de remboursements futurs." ;
+ Text [ swedish ] = "Nuvarande värd. Det nuvarande värdet för en rad betalningar." ;
+ Text [ dutch ] = "De huidige waarde, ofwel het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is." ;
+ Text [ spanish ] = "es el valor actual de la suma total de una serie de pagos futuros." ;
+ Text [ english_us ] = "Present value. The current value of a series of payments" ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£»òһϵÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ russian ] = "Òåêóùàÿ ñòîèìîñòü èëè îáùàÿ ñóììà âñåõ áóäóùèõ ïëàòåæåé ñ íàñòîÿùåãî ìîìåíòà.";
+ Text[ polish ] = "Wartoœæ bie¿¹ca dla serii przysz³ych p³atnoœci.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB«—ˆs‚í‚ê‚éˆê˜A‚ÌŽx•¥‚¢‚ðAŒ»Žž“_‚ňꊇ•¥‚¢‚µ‚½ê‡‚̇Œv‹àŠzB";
+ Text[ chinese_traditional ] = "Ðä²{­È¡C©Î¤@¨t¦C¥¼¨Ó¤ä¥Iªº¥Ø«e»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÍÇáíÉ áÓáÓáÉ ÇáÏÝÚÇÊ.";
+ Text[ dutch ] = "De huidige waarde, ofwel het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£»òһϵÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Ç ðáñïýóá áîßá ìéáò óåéñÜò ðëçñùìþí.";
+ Text[ korean ] = "ÇöÀç°ª. ÁöºÒÀÇ ¿¬¼ÓÀÇ ÇöÀç °ª";
+ Text[ turkish ] = "Bugünkü deðer. Ödeme dizisinin bugünkü deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "ZW" ;
+ Text [ english ] = "fv" ;
+ Text [ norwegian ] = "ZW" ;
+ Text [ italian ] = "VAL.FUT" ;
+ Text [ portuguese_brazilian ] = "ZW" ;
+ Text [ portuguese ] = "VF" ;
+ Text [ finnish ] = "ZW" ;
+ Text [ danish ] = "FV" ;
+ Text [ french ] = "VC" ;
+ Text [ swedish ] = "FV" ;
+ Text [ dutch ] = "TW" ;
+ Text [ spanish ] = "vf" ;
+ Text [ english_us ] = "fv" ;
+ Text[ chinese_simplified ] = "fv";
+ Text[ russian ] = "Áñ";
+ Text[ polish ] = "fv";
+ Text[ japanese ] = "«—ˆ‰¿’l";
+ Text[ chinese_traditional ] = "fv";
+ Text[ arabic ] = "Fv";
+ Text[ dutch ] = "TW";
+ Text[ chinese_simplified ] = "fv";
+ Text[ greek ] = "fv";
+ Text[ korean ] = "fv";
+ Text[ turkish ] = "Gelecek deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. : Zuk³nftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. */
+ Text = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ english ] = "is the future value, or a cash balance you want to attain after the last payment is made." ;
+ Text [ norwegian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ italian ] = "è il valore futuro o il saldo in contanti che si desidera raggiungere dopo aver effettuato l'ultimo pagamento." ;
+ Text [ portuguese_brazilian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ portuguese ] = "é o valor futuro ou um saldo de caixa obtido depois de efectuado o último pagamento." ;
+ Text [ finnish ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ danish ] = "Fremtidsværdi. Den værdi eller den kassebalance, der ønskes opnået, når den sidste ydelse er betalt." ;
+ Text [ french ] = "Valeur future (valeur capitalisée) : le montant que vous souhaitez obtenir après le dernier paiement." ;
+ Text [ swedish ] = "Framtida värde. Värdet (slutvärde) som skall uppnås efter den sista betalningen." ;
+ Text [ dutch ] = "De toekomstige waarde, ofwel het saldo dat u wilt bereiken als de laatste betaling is verricht." ;
+ Text [ spanish ] = "es el valor futuro o saldo en efectivo que desea obtener después de efectuar el último pago." ;
+ Text [ english_us ] = "Future value. The value (end value) to be attained after the final payment." ;
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£Íê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄ×îÖÕÖµ¡£";
+ Text[ russian ] = "Áóäóùàÿ ñòîèìîñòü èëè áàëàíñ íàëè÷íîñòè, êîòîðûé íóæíî äîñòè÷ü ïîñëå ïîñëåäíåé âûïëàòû.";
+ Text[ polish ] = "Przysz³a wartoœæ. Wartoœæ koñcowa, która ma zostaæ osi¹gniêta po dokonaniu ostatniej p³atnoœci.";
+ Text[ japanese ] = "«—ˆ‰¿’lB“ŠŽ‘‚Ì«—ˆ‰¿’lA‚Ü‚½‚ÍÅŒã‚ÌŽx•¥‚¢‚ðs‚Á‚½Œã‚ÉŽc‚錻‹à‚ÌŽûŽxB";
+ Text[ chinese_traditional ] = "¥¼¨Ó­È¡C§¹¦¨³Ì«á¤@¦¸¤ä¥I«á¹F¨ìªº³Ì²×­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÓÊÞÈáíÉ¡ Ãæ ÇáãíÒÇäíÉ ÇáäÞÏíÉ ÇáÊí ÊÑíÏ ÇáæÕæá ÅáíåÇ ÈÚÏ ÓÏÇÏ ÃÎÑ ÏÝÚÉ.";
+ Text[ dutch ] = "De toekomstige waarde, ofwel het saldo dat u wilt bereiken als de laatste betaling is verricht.";
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£Íê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄ×îÖÕÖµ¡£";
+ Text[ greek ] = "ÌåëëïíôéêÞ ôéìÞ. Ç ôéìÞ (ôåëéêÞ ôéìÞ) ðïõ èá ðñïêýøåé ìåôÜ ôçí ôåëåõôáßá ðëçñùìÞ.";
+ Text[ korean ] = "¹Ì·¡ °¡Ä¡. ¸¶Áö¸· ÁöºÒ ÈÄ¿¡ À̸£°Ô µÉ °¡Ä¡(ÃÖÁ¾ °¡Ä¡)ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Gelecek deðer. Son ödeme yapýldýktan sonra elde edilmek istenen deðer (son deðer).";
+ Text[ language_user1 ] = " ";
+ };
+ String 12 // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ {
+ Text = "F" ;
+ Text [ english ] = "type" ;
+ Text [ norwegian ] = "F" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "F" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "F" ;
+ Text [ danish ] = "F" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "F" ;
+ Text [ dutch ] = "V" ;
+ Text [ spanish ] = "tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Žx•¥Šú“ú";
+ Text[ chinese_traditional ] = "type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "V";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 13 // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fõlligkeit. F = 1 hei˜t Fõlligkeit am Anfang einer Periode, F = 0 am Ende. */
+ Text = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ english ] = "is the number 0 or 1 and indicates when payments are due." ;
+ Text [ norwegian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ italian ] = "Scadenze dei pagamenti. F = 1 significa all'inizio di un periodo, F = 0 alla fine." ;
+ Text [ portuguese_brazilian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ portuguese ] = "é o vencimento dos pagamentos de juros. 1 significa no ínicio do período, 0 no final." ;
+ Text [ finnish ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
+ Text [ french ] = "Échéance. Type=1 signifie échéance au début d'une période, type=0 à la fin d'une période." ;
+ Text [ swedish ] = "Förfallotidpunkt. F = 1 betyder förfallotidpunkt i början av en period, F = 0 i slutet." ;
+ Text [ dutch ] = "Vervaldatum. V = 1 geeft aan dat de betaling moet worden verricht aan het begin van een periode, V =0 aan het einde." ;
+ Text [ spanish ] = "es el vencimiento de los pagos, 1 es al comienzo del período, 0 al final." ;
+ Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬\ntype = 0 ±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå (0 èëè1), îáîçíà÷àþùåå, äîëæíà ëè ïðîèçâîäèòüñÿ âûïëàòà â êîíöå ïåðèîäà (0) èëè â íà÷àëå ïåðèîäà (1).";
+ Text[ polish ] = "Wartoœæ 0 lub 1 okreœlaj¹ca sposób dokonywania p³atnoœci (z do³u lub z góry).";
+ Text[ japanese ] = "Žx•¥Šú“úBŽx•¥Šú“ú=1 ŠeŠú‚ÌŠúŽñAŽx•¥Šú“ú=0 ŠeŠú‚ÌŠú––";
+ Text[ chinese_traditional ] = "¨ì´ÁÃþ«¬¡C F = 1 ªí¥Ü¦b¶g´Á¶}©l®É¨ì´Á¡MF = 0 ªí¥Ü¬O¦b¶g´Áµ²§ô®É¨ì´Á¡C";
+ Text[ arabic ] = "ÇáÏÝÚ Ýí ÈÏÇíÉ ÇáÝÊÑÉ ý= 1º ÇáÏÝÚ Ýí äåÇíÉ ÇáÝÊÑÉ = 0.";
+ Text[ dutch ] = "Vervaldatum. V = 1 geeft aan dat de betaling moet worden verricht aan het begin van een periode, V =0 aan het einde.";
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ£¬\ntype = 0 ±íʾÔÚÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ greek ] = "×ñüíïò ðëçñùìÞò.F = 1 óçìáßíåé ðëçñùìÞ óôçí áñ÷Þ ìéáò ðåñéüäïõ, F = 0 óçìáßíåé ðëçñùìÞ óôï ôÝëïò ôçò ðåñéüäïõ.";
+ Text[ korean ] = "¸¸±âÀÏ. ¸¸±âÀÏ=1Àº ±âÇÑÀÇ Ã³À½À» ³ªÅ¸³»¸ç ¸¸±âÀÏ=0Àº ±âÇÑÀÇ ³¡À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Vade. F = 1, vade dönem baþýnda, F = 0 ise dönem sonunda anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KAPZ #*=-
+ Resource SC_OPCODE_KAPZ
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Tilgung. Berechnet den Tilgungsbetrag einer Periode für eine Investition bei regelmäßigen Zahlungen und konstantem Zinssatz. : Tilgung. Berechnet den Tilgungsbetrag einer Periode f³r eine Investition bei regelmõ˜igen Zahlungen und konstantem Zinssatz. */
+ Text = "Tilgung. Berechnet den Tilgungsbetrag einer Periode für eine Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ english ] = "Returns the payment on the principal for a given period for an investment based on periodic, constant payments and a constant interest rate." ;
+ Text [ norwegian ] = "Tilgung. Berechnet den Tilgungsbetrag einer Periode für eine Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ italian ] = "Restituisce il pagamento sul capitale di un periodo per un investimento basato su pagamenti periodici a tasso di interesse costante." ;
+ Text [ portuguese_brazilian ] = "Tilgung. Berechnet den Tilgungsbetrag einer Periode für eine Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ portuguese ] = "Devolve o pagamento de juros para um determinado período de investimento, de acordo com pagamentos periódicos e constantes e com uma taxa de juros constante." ;
+ Text [ finnish ] = "Tilgung. Berechnet den Tilgungsbetrag einer Periode für eine Investition bei regelmäßigen Zahlungen und konstantem Zinssatz." ;
+ Text [ danish ] = "Amortisation. Beregner ydelsen på hovedstolen i en periode for en investering baserende på konstante ydelser og konstant rentesats." ;
+ Text [ french ] = "Calcule, pour une période donnée, la part de remboursement d'un investissement sur la base de paiements réguliers et d'un taux d'intérêt constant." ;
+ Text [ swedish ] = "Amortering. Beräknar en periods amorteringsbelopp för en investering vid regelbundna betalningar och konstant räntesats." ;
+ Text [ dutch ] = "Aflossing. Berekent het af te lossen bedrag voor een investering voor een bepaalde termijn bij regelmatige betalingen en vaste rentevoet." ;
+ Text [ spanish ] = "Devuelve la amortización en un período contable determinado basándose en pagos periódicos y constantes, y en una tasa de interés constante." ;
+ Text [ english_us ] = "Repayment. Calculates the repayment amount for a period for an investment whereby the payments are at regular intervals and the interest rate constant." ;
+ Text[ chinese_simplified ] = "±¾½ðÖ§¸¶¶î¡£ÔÚÀûÂʺ㶨ÇÒ¶¨ÆÚÖ§¸¶µÄÌõ¼þÏ£¬¼ÆËãÒ»ÏîͶ×Ê»ò´û¿îÔÚÖ¸¶¨ÆÚÏÞÄڵı¾½ðÖ§¸¶¶î¡£";
+ Text[ russian ] = "Âû÷èñëÿåò âåëè÷èíó âûïëàò íà îñíîâíîé êàïèòàë äëÿ âêëàäà â äàííûé ïåðèîä ïðè ïîñòîÿííûõ ïëàòåæàõ è ïîñòîÿííîì ïðîöåíòå.";
+ Text[ polish ] = "Oblicza wartoœæ sp³aconych odsetek w podanym okresie dla inwestycji przy regularnych p³atnoœciach i sta³ej stopie oprocentowania.";
+ Text[ japanese ] = "Œ³‹àB’èŠz‚ÌŽx•¥‚¢‚ð’èŠú“I‚És‚¢A—˜—¦‚ªˆê’è‚Å‚ ‚é‚Ɖ¼’肵‚ÄA“ŠŽ‘‚ÌŽw’肳‚ꂽŠú‚ÉŽx•¥‚í‚ê‚錳‹à‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤À´Á¥I´ÚÃB¡C¦b«í©w§Q²v©M©w´Á¤ä¥Iªº±ø¥ó¤U­pºâ¤@­Ó§ë¸ê¦b\n«ü©w´Á¤ºªº¤À´Á¥I´Úª÷ÃB¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÏÝÚÉ Úáì ÑÃÓ ÇáãÇá áÇÓÊËãÇÑ ãÚØì ÇÓÊäÇÏÇð áÏÝÚÇÊ ÏæÑíÉ æäÓÈÉ ÝÇÆÏÉ ËÇÈÊÉ.";
+ Text[ dutch ] = "Aflossing. Berekent het af te lossen bedrag voor een investering voor een bepaalde termijn bij regelmatige betalingen en vaste rentevoet.";
+ Text[ chinese_simplified ] = "±¾½ðÖ§¸¶¶î¡£ÔÚÀûÂʺ㶨ÇÒ¶¨ÆÚÖ§¸¶µÄÌõ¼þÏ£¬¼ÆËãÒ»ÏîͶ×Ê»ò´û¿îÔÚÖ¸¶¨ÆÚÏÞÄڵı¾½ðÖ§¸¶¶î¡£";
+ Text[ greek ] = "×ñåïëýóéï. Õðïëïãßæåé ôï ðïóü ôïõ ÷ñåïëõóßïõ ìéáò ðåñéüäïõ ãéá ìéá åðÝíäõóç ìå ôáêôéêÝò ðëçñùìÝò êáé óôáèåñü åðéôüêéï.";
+ Text[ korean ] = "»óȯ. ÀÏ¹Ý ±â°£°ú °íÁ¤ ÀÌÀÚÀ² ÁöºÒ¿¡ ÀÇÇÑ ÅõÀÚÀÇ ±â°£¿¡ ´ëÇÑ »óȯ ¾×À» °è»ê.";
+ Text[ turkish ] = "Geri ödeme. Düzenli ödemeler ve sabit faizli bir yatýrým için dönemi geri ödeme meblaðýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_KAPZ );
+ 6; 0; 0; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zins" ;
+ Text [ english ] = "rate" ;
+ Text [ norwegian ] = "Zins" ;
+ Text [ italian ] = "tasso_int" ;
+ Text [ portuguese_brazilian ] = "Zins" ;
+ Text [ portuguese ] = "Juro" ;
+ Text [ finnish ] = "Zins" ;
+ Text [ danish ] = "Rente" ;
+ Text [ french ] = "Taux" ;
+ Text [ swedish ] = "ränta" ;
+ Text [ dutch ] = "Rente" ;
+ Text [ spanish ] = "Tasa" ;
+ Text [ english_us ] = "rate" ;
+ Text[ chinese_simplified ] = "rate";
+ Text[ russian ] = "Ïðîöåíò ñ êàïèòàëà";
+ Text[ polish ] = "Odsetki";
+ Text[ japanese ] = "—˜‘§";
+ Text[ chinese_traditional ] = "rate";
+ Text[ arabic ] = "Rate";
+ Text[ dutch ] = "Rente";
+ Text[ chinese_simplified ] = "rate";
+ Text[ greek ] = "Rate";
+ Text[ korean ] = "ºñÀ²";
+ Text[ turkish ] = "Faiz";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zinssatz pro Periode." ;
+ Text [ english ] = "is the interest rate per period." ;
+ Text [ norwegian ] = "Der Zinssatz pro Periode." ;
+ Text [ italian ] = "è il tasso di interesse per periodo." ;
+ Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
+ Text [ portuguese ] = "é a taxa de juros por cada preríodo." ;
+ Text [ finnish ] = "Der Zinssatz pro Periode." ;
+ Text [ danish ] = "Rentesatsen per periode." ;
+ Text [ french ] = "Le taux d'intérêt par période." ;
+ Text [ swedish ] = "Räntesatsen per period." ;
+ Text [ dutch ] = "De rentevoet per termijn." ;
+ Text [ spanish ] = "Es la tasa de interés por período." ;
+ Text [ english_us ] = "The interest rate per period." ;
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ russian ] = "Íîðìà ïðèáûëè çà ïåðèîä.";
+ Text[ polish ] = "Stopa procentowa dla pojedynczego okresu.";
+ Text[ japanese ] = "ŠúŠÔ‚²‚Æ‚Ì—˜—¦";
+ Text[ chinese_traditional ] = "¨C­Ó¶g´Áªº§Q²v¡C";
+ Text[ arabic ] = "äÓÈÉ ÇáÝÇÆÏÉ áßá ÝÊÑÉ.";
+ Text[ dutch ] = "De rentevoet per termijn.";
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ greek ] = "Ôï åðéôüêéï áíÜ ðåñßïäï.";
+ Text[ korean ] = "±â°£´ç ÀÌÀÚÀ²";
+ Text[ turkish ] = "Dönem faiz oraný.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "P" ;
+ Text [ english ] = "per" ;
+ Text [ norwegian ] = "P" ;
+ Text [ italian ] = "periodo" ;
+ Text [ portuguese_brazilian ] = "P" ;
+ Text [ portuguese ] = "Período" ;
+ Text [ finnish ] = "P" ;
+ Text [ danish ] = "P" ;
+ Text [ french ] = "P" ;
+ Text [ swedish ] = "P" ;
+ Text [ dutch ] = "P" ;
+ Text [ spanish ] = "Período" ;
+ Text [ english_us ] = "per" ;
+ Text[ chinese_simplified ] = "per";
+ Text[ russian ] = "Ïåðèîä";
+ Text[ polish ] = "Okres";
+ Text[ japanese ] = "ŠúŠÔ";
+ Text[ chinese_traditional ] = "per";
+ Text[ arabic ] = "Per";
+ Text[ dutch ] = "P";
+ Text[ chinese_simplified ] = "per";
+ Text[ greek ] = "Per";
+ Text[ korean ] = "per";
+ Text[ turkish ] = "Dönem";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Periode. Die Periode, für die die Tilgung berechnet wird. P = 1 heißt für die erste Periode, P = ZZR für die letzte. : Periode. Die Periode, f³r die die Tilgung berechnet wird. P = 1 hei˜t f³r die erste Periode, P = ZZR f³r die letzte. */
+ Text = "Periode. Die Periode, für die die Tilgung berechnet wird. P = 1 heißt für die erste Periode, P = ZZR für die letzte." ;
+ Text [ english ] = "specifies the period and must be in the range 1 to nper." ;
+ Text [ norwegian ] = "Periode. Die Periode, für die die Tilgung berechnet wird. P = 1 heißt für die erste Periode, P = ZZR für die letzte." ;
+ Text [ italian ] = "specifica il periodo e deve essere compreso tra 1 e periodi." ;
+ Text [ portuguese_brazilian ] = "Periode. Die Periode, für die die Tilgung berechnet wird. P = 1 heißt für die erste Periode, P = ZZR für die letzte." ;
+ Text [ portuguese ] = "é o período para o qual se calcula a amortização. 1 indica o primeiro período, nper o último." ;
+ Text [ finnish ] = "Periode. Die Periode, für die die Tilgung berechnet wird. P = 1 heißt für die erste Periode, P = ZZR für die letzte." ;
+ Text [ danish ] = "Periode. Perioden som amortsationen beregnes for. P = 1 betyder for den første periode, P = NPER for den sidste." ;
+ Text [ french ] = "Période pour laquelle vous souhaitez calculer le remboursement. P = 1 pour la première période, P = NPM pour la dernière." ;
+ Text [ swedish ] = "Period. Perioden som amorteringen beräknas för. P = 1 betyder för den första perioden, P = BPER för den sista." ;
+ Text [ dutch ] = "Periode. De periode waarvoor de aflossing wordt berekend.. P = 1 betekent voor de eerste periode, P = NPER voor de laatste." ;
+ Text [ spanish ] = "Especifica el período para el cual se calcula la amortización. 1 indica el primer período, nper el último." ;
+ Text [ english_us ] = "Period. The period for which the repayments are to be calculated. Per = 1 denotes for the first period, P = NPER for the last" ;
+ Text[ chinese_simplified ] = "ÖÜÆÚÊý¡£¼ÆËã·ÖÆÚ¸¶¿îµÄÖÜÆÚÊý¡£P = 1 ±íʾµÚÒ»¸ö\nÖÜÆÚ£¬ P = NPER ±íʾ×îºóÒ»¸öÖÜÆÚ¡£";
+ Text[ russian ] = "Ïåðèîä, äëÿ êîòîðîãî âû÷èñëÿåòñÿ óïëàòà. Çíà÷åíèå äîëæíî áûòü â èíòåðâàëå îò 1 (ïåðâûé ïåðèîä) äî êïåð (ïîñëåäíèé ïåðèîä).";
+ Text[ polish ] = "Wyznacza okres, dla którego obliczona bêdzie sp³ata kredytu. 1 oznacza pierwszy okres, NPER - ostatni.";
+ Text[ japanese ] = "ŠúBŒ³‹àŽx•¥Šz‚ð‹‚ß‚éŠúBŠú=1‚Íʼn‚ÌŠúAŠú=‘SŽx•¥‚¢ŠúŠÔ‚ÍÅŒã‚ÌŠúB";
+ Text[ chinese_traditional ] = "¶g´Á¼Æ¡C­pºâ¤À´Á¥I´Úªº¶g´Á¼Æ¡CP = 1 ªí¥Ü²Ä¤@­Ó¶g´Á¡M \nP = ZZR ªí¥Ü³Ì«á¤@­Ó¶g´Á¡C";
+ Text[ arabic ] = "ÊÚííä ÇáÝÊÑÉ æíÌÈ Ãä Êßæä Öãä ÇáäØÇÞ ãä 1 Åáì nper.";
+ Text[ dutch ] = "Periode. De periode waarvoor de aflossing wordt berekend.. P = 1 betekent voor de eerste periode, P = NPER voor de laatste.";
+ Text[ chinese_simplified ] = "ÖÜÆÚÊý¡£¼ÆËã·ÖÆÚ¸¶¿îµÄÖÜÆÚÊý¡£P = 1 ±íʾµÚÒ»¸ö\nÖÜÆÚ£¬ P = NPER ±íʾ×îºóÒ»¸öÖÜÆÚ¡£";
+ Text[ greek ] = "Ðåñßïäïò. Ç ðåñßïäïò ãéá ôçí ïðïßá õðïëïãßæåôáé ôï ÷ñåïëýóéï. Ñ = 1 óçìáßíåé ãéá ôçí ðñþôç ðåñßïäï, Ñ = ZZR ãéá ôçí ôåëåõôáßá.";
+ Text[ korean ] = "±â°£. »êÃâµÉ »óȯ¿¡´ëÇÑ ±â°£ . P = 1Àº óÀ½±â°£À», P = NPER Àº ¸¶Áö¸· ±â°£À» Ç¥ÇöÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Dönem. Geri ödemenin hesaplandýðý dönem. P = 1 ilk dönem, P = NPER ise son dönemdir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "ZZR" ;
+ Text [ english ] = "nper" ;
+ Text [ norwegian ] = "ZZR" ;
+ Text [ italian ] = "NUM.RATE" ;
+ Text [ portuguese_brazilian ] = "ZZR" ;
+ Text [ portuguese ] = "Nper" ;
+ Text [ finnish ] = "ZZR" ;
+ Text [ danish ] = "NPER" ;
+ Text [ french ] = "NPM" ;
+ Text [ swedish ] = "BPER" ;
+ Text [ dutch ] = "NPER" ;
+ Text [ spanish ] = "Nper" ;
+ Text [ english_us ] = "NPER" ;
+ Text[ chinese_simplified ] = "NPER";
+ Text[ russian ] = "ÊÏÅÐ";
+ Text[ polish ] = "NPER";
+ Text[ japanese ] = "‘SŽx•¥‚¢ŠúŠÔ";
+ Text[ chinese_traditional ] = "NPER";
+ Text[ arabic ] = "NPER";
+ Text[ dutch ] = "NPER";
+ Text[ chinese_simplified ] = "NPER";
+ Text[ greek ] = "NPER";
+ Text[ korean ] = "NPER";
+ Text[ turkish ] = "NPER";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird. : Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuitõt (Rente) gezahlt wird. */
+ Text = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ english ] = "is the total number of payment periods in an annuity." ;
+ Text [ norwegian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ italian ] = "è il numero totale dei periodi di pagamento in un'annualità." ;
+ Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ portuguese ] = "é o número total de períodos de pagamento numa anuidade." ;
+ Text [ finnish ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
+ Text [ french ] = "Le nombre total de périodes de paiement de l'annuité." ;
+ Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder då annuiteten (pension) betalas." ;
+ Text [ dutch ] = "Aantal termijnen. Berekent het aantal termijnen waarin de annuïteit wordt betaald." ;
+ Text [ spanish ] = "Es el número total de períodos de pago en una anualidad." ;
+ Text [ english_us ] = "The payment period. The total number of periods in which the annuity (pension) is paid." ;
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî ïåðèîäîâ âûïëàò ãîäîâîé ðåíòû.";
+ Text[ polish ] = "Okres p³atnoœci. Ca³kowita liczba okresów, w których sp³acana bêdzie suma sp³aty d³ugu.";
+ Text[ japanese ] = "Žx•¥‚¢ŠúŠÔB“ŠŽ‘ŠúŠÔ‘S‘Ì‚Å‚ÌŽx•¥‰ñ”‚̇Œv";
+ Text[ chinese_traditional ] = "Á`¤ä¥I¦~ª÷ªº´Á¼Æ¡C";
+ Text[ arabic ] = "ãÏÉ ÇáÏÝÚ. ÇáÚÏÏ ÇáÅÌãÇáí ááÝÊÑÇÊ ÇáÊí íÊã ÝíåÇ ÏÝÚ ÇáÓøõäÇåíøÉ (ãÚÇÔ).";
+ Text[ dutch ] = "Aantal termijnen. Berekent het aantal termijnen waarin de annuïteit wordt betaald.";
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ greek ] = "ÄéÜñêåéá ðëçñùìÞò. Ôï óýíïëï ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ðëçñþíåôáé ôï ÷ñåùëýóéï (óýíôáîç).";
+ Text[ korean ] = "Áö±Þ ±â°£. ÁöºÒµÈ ¿¬±ÝÀÇ ±â°£ÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Taksit sayýsý. Annüite ödenen toplam dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "BW" ;
+ Text [ english ] = "pv" ;
+ Text [ norwegian ] = "BW" ;
+ Text [ italian ] = "VA" ;
+ Text [ portuguese_brazilian ] = "BW" ;
+ Text [ portuguese ] = "Va" ;
+ Text [ finnish ] = "BW" ;
+ Text [ danish ] = "NV" ;
+ Text [ french ] = "VA" ;
+ Text [ swedish ] = "NV" ;
+ Text [ dutch ] = "HW" ;
+ Text [ spanish ] = "Va" ;
+ Text [ english_us ] = "pv" ;
+ Text[ chinese_simplified ] = "pv";
+ Text[ russian ] = "Òç";
+ Text[ polish ] = "PV";
+ Text[ japanese ] = "Œ»Ý‰¿’l";
+ Text[ chinese_traditional ] = "pv";
+ Text[ arabic ] = "Pv";
+ Text[ dutch ] = "HW";
+ Text[ chinese_simplified ] = "pv";
+ Text[ greek ] = "Pv";
+ Text[ korean ] = "pv";
+ Text[ turkish ] = "Bugünkü deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ english ] = "is the present valueùthe total amount that a series of future payments is worth now." ;
+ Text [ norwegian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ italian ] = "è il valore attuale o la somma forfettaria che rappresenta il valore attuale di una serie di pagamenti futuri." ;
+ Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ portuguese ] = "é o valor presente ou a quantia total actual correspondente a uma série de pagamentos futuros." ;
+ Text [ finnish ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ danish ] = "Nutidsværdi. Den værdi en række ydelser er værd nu." ;
+ Text [ french ] = "Valeur actuelle = la valeur, à la date d'aujourd'hui, d'une série de remboursements futurs." ;
+ Text [ swedish ] = "Nuvarande värde. Det nuvarande värdet för radenav betalningar." ;
+ Text [ dutch ] = "Huidige waarde. De huidige waarde is het totale bedrag dat een reeks toekomstige betalingen op dit moment waard is." ;
+ Text [ spanish ] = "Es el valor actual de la cantidad total de una serie de pagos futuros." ;
+ Text [ english_us ] = "The present value. The present value or the amount the annuity is currently worth." ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£»òһϵÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ russian ] = "Òåêóùåå çíà÷åíèå: òåêóùåå çíà÷åíèå ðÿäà ïëàòåæåé.";
+ Text[ polish ] = "Wartoœæ bie¿¹ca dla serii przysz³ych p³atnoœci.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB «—ˆs‚í‚ê‚éˆê˜A‚ÌŽx•¥‚¢‚ðAŒ»Žž“_‚ňꊇ•¥‚¢‚µ‚½ê‡‚̇Œv‹àŠzB";
+ Text[ chinese_traditional ] = "Ðä²{­È¡C©Î¤@¨t¦C¥¼¨Ó¤ä¥Iªº¥Ø«e»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÍÇáíÉ áÓáÓáÉ ÇáÏÝÚÇÊ.";
+ Text[ dutch ] = "Huidige waarde. De huidige waarde is het totale bedrag dat een reeks toekomstige betalingen op dit moment waard is.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£»òһϵÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Ç ðáñïýóá áîßá ìéáò óåéñÜò ðëçñùìþí.";
+ Text[ korean ] = "ÇöÀç°ª. ÇöÀç °ª ¶Ç´Â ÇöÀç °¡Ä¡ÀÇ ¿¬±Ý ÃÑ°è";
+ Text[ turkish ] = "Bugünkü deðer. Ödeme dizisinin bugünkü deðerini verir.Barwert.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "ZW" ;
+ Text [ english ] = "fv" ;
+ Text [ norwegian ] = "ZW" ;
+ Text [ italian ] = "VAL.FUT" ;
+ Text [ portuguese_brazilian ] = "ZW" ;
+ Text [ portuguese ] = "Vf" ;
+ Text [ finnish ] = "ZW" ;
+ Text [ danish ] = "FV" ;
+ Text [ french ] = "VC" ;
+ Text [ swedish ] = "FV" ;
+ Text [ dutch ] = "TW" ;
+ Text [ spanish ] = "Vf" ;
+ Text [ english_us ] = "fv" ;
+ Text[ chinese_simplified ] = "fv";
+ Text[ russian ] = "ÁÇ";
+ Text[ polish ] = "fv";
+ Text[ japanese ] = "«—ˆ‰¿’l";
+ Text[ chinese_traditional ] = "fv";
+ Text[ arabic ] = "Fv";
+ Text[ dutch ] = "TW";
+ Text[ chinese_simplified ] = "fv";
+ Text[ greek ] = "fv";
+ Text[ korean ] = "fv";
+ Text[ turkish ] = "Gelecek deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. : Zuk³nftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll. */
+ Text = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ english ] = "is the future value, or a cash balance you want to attain after the last payment is made." ;
+ Text [ norwegian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ italian ] = "è il valore futuro o il saldo in contanti che si desidera raggiungere dopo aver effettuato l'ultimo pagamento. Se val_futuro è omesso, verrà considerato uguale a 0. Il valore futuro di un prestito, ad esempio, sarà uguale a 0." ;
+ Text [ portuguese_brazilian ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ portuguese ] = "é o valor futuro ou o saldo obtido depois de efectuado o último pagamento." ;
+ Text [ finnish ] = "Zukünftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
+ Text [ danish ] = "Fremtidsværdi. Den værdi eller den kassebalance der ønskes opnået, når den sidste ydelse er betalt." ;
+ Text [ french ] = "Valeur future (valeur capitalisée) : le montant que vous souhaitez obtenir après le dernier paiement." ;
+ Text [ swedish ] = "Framtida värde. Värdet (slutvärde) som skall uppnås efter den sista betalningen." ;
+ Text [ dutch ] = "Toekomstige waarde. De waarde (eindwaarde) die bij de laatste betaling moet zijn bereikt." ;
+ Text [ spanish ] = "Es el valor futuro o el saldo en efectivo que desea obtener después de efectuar el último pago." ;
+ Text [ english_us ] = "Future value. The value (end value) attained after the last payment has been made." ;
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£»òÍê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄÊýÖµ¡£";
+ Text[ russian ] = "Áóäóùåå çíà÷åíèå. Çíà÷åíèå (êîíå÷íîå çíà÷åíèå), êîòîðîå äîëæíî ïîëó÷èòüñÿ ïîñëå ïîñëåäíåãî ïëàòåæà.";
+ Text[ polish ] = "Przysz³a wartoœæ. Wartoœæ koñcowa, która ma zostaæ osi¹gniêta po dokonaniu ostatniej p³atnoœci.";
+ Text[ japanese ] = "«—ˆ‰¿’lB“ŠŽ‘‚Ì«—ˆ‰¿’lA‚Ü‚½‚ÍÅŒã‚ÌŽx•¥‚¢‚ðs‚Á‚½Œã‚ÉŽc‚錻‹à‚ÌŽûŽxB";
+ Text[ chinese_traditional ] = "¥¼¨Ó­È¡C©Î§¹¦¨³Ì«á¤@¦¸¤ä¥I«á¹F¨ìªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÓÊÞÈáíÉ¡ Ãæ ÇáãíÒÇäíÉ ÇáäÞÏíÉ ÇáÊí ÊÑíÏ ÇáæÕæá ÅáíåÇ ÈÚÏ ÓÏÇÏ ÃÎÑ ÏÝÚÉ.";
+ Text[ dutch ] = "Toekomstige waarde. De waarde (eindwaarde) die bij de laatste betaling moet zijn bereikt.";
+ Text[ chinese_simplified ] = "δÀ´Öµ¡£»òÍê³É×îºóÒ»´ÎÖ§¸¶ºó´ïµ½µÄÊýÖµ¡£";
+ Text[ greek ] = "ÌåëëïíôéêÞ ôéìÞ. Ç ôéìÞ (ôåëéêÞ ôéìÞ) ðïõ èá ðñïêýøåé ìåôÜ ôçí ôåëåõôáßá ðëçñùìÞ.";
+ Text[ korean ] = "¹Ì·¡ °¡Ä¡. ¸¶Áö¸· ÁöºÒ ÈÄ À̸£°Ô µÉ °¡Ä¡(ÃÖÁ¾ °¡Ä¡)ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Gelecek deðer. Son ödeme yapýldýktan sonra elde edilmek istenen deðer (son deðer).";
+ Text[ language_user1 ] = " ";
+ };
+ String 12 // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ {
+ Text = "F" ;
+ Text [ english ] = "type" ;
+ Text [ norwegian ] = "F" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "F" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "F" ;
+ Text [ danish ] = "F" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "F" ;
+ Text [ dutch ] = "V" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Žx•¥Šú“ú";
+ Text[ chinese_traditional ] = "type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "V";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 13 // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fõlligkeit. F = 1 hei˜t Fõlligkeit am Anfang einer Periode, F = 0 am Ende. */
+ Text = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ english ] = "is the number 0 or 1 and indicates when payments are due." ;
+ Text [ norwegian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ italian ] = "Scadenze dei pagamenti. F = 1 significa all'inizio di un periodo, F = 0 alla fine." ;
+ Text [ portuguese_brazilian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ portuguese ] = "é o número 0 ou 1 e indica as datas de vencimento dos pagamentos. 1 = início do período; 0 = fim do período." ;
+ Text [ finnish ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
+ Text [ french ] = "Échéance. Type=1 signifie échéance au début d'une période, type=0 à la fin d'une période." ;
+ Text [ swedish ] = "Förfallotidpunkt. F = 1 betyder förfallotidpunkt i början av en period, F = 0 i slutet." ;
+ Text [ dutch ] = "Vervaldatum. V = 0 geeft aan dat de betaling moet worden voldaan aan het begin van een periode, V = 1 aan het einde." ;
+ Text [ spanish ] = "Es el vencimiento de los pagos, 1 es al comienzo del período y 0 al final." ;
+ Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÒ»¸öÖÜÆڵĿªÊ¼Ê±µ½ÆÚ£¬\ntype = 0 ±íʾÔÚÒ»¸öÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå (0 èëè1), îáîçíà÷àþùåå, äîëæíà ëè ïðîèçâîäèòüñÿ âûïëàòà â êîíöå ïåðèîäà (0) èëè â íà÷àëå ïåðèîäà (1).";
+ Text[ polish ] = "Wartoœæ 0 lub 1 okreœlaj¹ca sposób dokonywania p³atnoœci; 1 oznacza p³atnoœæ na pocz¹tku okresu, 0 - na koñcu.";
+ Text[ japanese ] = "Žx•¥Šú“úBŽx•¥Šú“ú=1‚ÍŠeŠú‚ÌŠúŽñAŽx•¥Šú“ú=0‚ÍŠeŠú‚ÌŠú––B";
+ Text[ chinese_traditional ] = "¨ì´ÁÃþ«¬¡C F = 1 ªí¥Ü¦b¤@­Ó¶g´Á¶}©l®É¨ì´Á¡MF = 0 ªí¥Ü¦b¤@­Ó\n¶g´Áµ²§ô®É¨ì´Á¡C";
+ Text[ arabic ] = "ÇáÏÝÚ Ýí ÈÏÇíÉ ÇáÝÊÑÉ ý= 1º ÇáÏÝÚ Ýí äåÇíÉ ÇáÝÊÑÉ = 0.";
+ Text[ dutch ] = "Vervaldatum. V = 0 geeft aan dat de betaling moet worden voldaan aan het begin van een periode, V = 1 aan het einde.";
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£ type = 1 ±íʾÔÚÒ»¸öÖÜÆڵĿªÊ¼Ê±µ½ÆÚ£¬\ntype = 0 ±íʾÔÚÒ»¸öÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ greek ] = "×ñüíïò ðëçñùìÞò.F = 1 óçìáßíåé ðëçñùìÞ óôçí áñ÷Þ ìéáò ðåñéüäïõ, F = 0 óçìáßíåé ðëçñùìÞ óôï ôÝëïò ôçò ðåñéüäïõ.";
+ Text[ korean ] = "¸¸±âÀÏ=1Àº ±âÇÑÀÇ ½ÃÀÛÀ» ³ªÅ¸³»°í ¸¸±âÀÏ=0Àº ±âÇÑÀÇ ³¡À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Vade. F = 1, vade dönem baþýnda, F = 0 ise dönem sonunda anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KUMKAPITAL #*=-
+ Resource SC_OPCODE_KUM_KAP_Z
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Kumuliertes Kapitel. Berechnet den Gesamtbetrag der Tilgungsanteile in einem Zeitraum für eine Investition bei konstantem Zinssatz. : Kumuliertes Kapitel. Berechnet den Gesamtbetrag der Tilgungsanteile in einem Zeitraum f³r eine Investition bei konstantem Zinssatz. */
+ Text = "Kumuliertes Kapital. Berechnet den Gesamtbetrag der Tilgungsanteile in einem Zeitraum für eine Investition bei konstantem Zinssatz." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Kumuliertes Kapitel. Berechnet den Gesamtbetrag der Tilgungsanteile in einem Zeitraum für eine Investition bei konstantem Zinssatz." ;
+ Text [ italian ] = "Capitale cumulativo. Calcola il valore totale dei pagamenti in un periodo per un investimento a interesse costante." ;
+ Text [ portuguese_brazilian ] = "Kumuliertes Kapitel. Berechnet den Gesamtbetrag der Tilgungsanteile in einem Zeitraum für eine Investition bei konstantem Zinssatz." ;
+ Text [ portuguese ] = "Capital acumulado. Devolve o capital acumulado pago sobre um empréstimo entre início_período e final_período a uma taxa de juro constante." ;
+ Text [ finnish ] = "Kumuliertes Kapitel. Berechnet den Gesamtbetrag der Tilgungsanteile in einem Zeitraum für eine Investition bei konstantem Zinssatz." ;
+ Text [ danish ] = "Akkumuleret hovedstol. Beregner den akkumulerede nedbringelse indenfor en periode for en investering ved konstant rentesats." ;
+ Text [ french ] = "Capital cumulé. Renvoie le montant total des remboursements d'une période pour un investissement avec un taux d'intérêt constant." ;
+ Text [ swedish ] = "Kumulerat kapital. Beräknar totalbeloppet av amorteringarna för en investering under en tidsperiod med konstant räntesats." ;
+ Text [ dutch ] = "Berekent de cumulatieve hoofdsom van een lening met constante rentevoet die tussen begin- en eindtermijn is terugbetaald." ;
+ Text [ spanish ] = "Capital acumulado. Devuelve la cantidad acumulada de capital pagado sobre un préstamo en un período de tiempo para una inversión con tipo constante de interés." ;
+ Text [ english_us ] = "Cumulative Capital. Calculates the total amount of the repayment share in a period for an investment with constant interest rate." ;
+ Text[ chinese_simplified ] = "ÀÛ»ý½ð¶î¡£¼ÆËãÒ»±Ê¹Ì¶¨ÀûÂÊ´û¿îÔÚÖ¸¶¨ÆÚÏÞÄÚÓ¦³¥»¹µÄ±¾½ð×ܶ";
+ Text[ russian ] = "Âû÷èñëÿåò îñíîâíûå âûïëàòû ïî çàéìó ìåæäó äâóìÿ ïåðèîäàìè.";
+ Text[ polish ] = "Skumulowany kapita³. Oblicza ca³kowit¹ sumê liczby sp³at kredytu w podanym okresie dla inwestycji przy sta³ej stopie oprocentowania.";
+ Text[ japanese ] = "Œ³‹à‚Ì—ÝŒvBˆê’è‚Ì—˜—¦‚Ì‘Ý•t‹à‚ɑ΂µ‚ÄŽw’肳‚ꂽŠúŠÔ‚ÉŽx•¥‚í‚ê‚錳‹à‚Ì—ÝŒv‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "²Ö¿nª÷ÃB¡C­pºâ¤@µ§©T©w§Q²v¶U´Ú¦b¤@©w®É´Á¤ºÀ³ÀvÁÙªº¥»ª÷Á`ÃB¡C";
+ Text[ arabic ] = "ÑÃÓ ãÇá ÊóÌãøÚí. ÊÍÓÈ ãÞÏÇÑ ÇáÏÝÚÇÊ Çáßáí áÇÓÊËãÇÑ ÎáÇá ÝÊÑÉ ãÇ ÇÓÊäÇÏÇð Åáì äÓÈÉ ÝÇÆÏÉ ËÇÈÊÉ.";
+ Text[ dutch ] = "Berekent de cumulatieve hoofdsom van een lening met constante rentevoet die tussen begin- en eindtermijn is terugbetaald.";
+ Text[ chinese_simplified ] = "ÀÛ»ý½ð¶î¡£¼ÆËãÒ»±Ê¹Ì¶¨ÀûÂÊ´û¿îÔÚÖ¸¶¨ÆÚÏÞÄÚÓ¦³¥»¹µÄ±¾½ð×ܶ";
+ Text[ greek ] = "Áèñïéóôéêü êåöÜëáéï. Õðïëïãßæåé ôï óõíïëéêü ðïóü ôùí äüóåùí áðüóâåóçò ìéáò ðåñéüäïõ ãéá ìéá åðÝíäõóç ìå óôáèåñü åðéôüêéï.";
+ Text[ korean ] = "´©Àû ÀÚº». °íÁ¤ ÀÌÀÚÀ²°ú ÇÔ²² ÅõÀÚ¿¡´ëÇѱⰣ¿¡ °ü°èµÇ´Â »óȯ ÃѾ×À» »êÃâ";
+ Text[ turkish ] = "Kümülatif sermaye. Sabit faiz oranlý yatýrýmlar için bir dönemdeki geri ödemelerin toplam meblaðýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_KUMKAPITAL );
+ 6; 0; 0; 0; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zins" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zins" ;
+ Text [ italian ] = "tasso_int" ;
+ Text [ portuguese_brazilian ] = "Zins" ;
+ Text [ portuguese ] = "Juro" ;
+ Text [ finnish ] = "Zins" ;
+ Text [ danish ] = "Rente" ;
+ Text [ french ] = "Taux" ;
+ Text [ swedish ] = "ränta" ;
+ Text [ dutch ] = "Rente" ;
+ Text [ spanish ] = "Tasa" ;
+ Text [ english_us ] = "rate" ;
+ Text[ chinese_simplified ] = "rate";
+ Text[ russian ] = "Ïðîöåíò ñ êàïèòàëà";
+ Text[ polish ] = "Odsetki";
+ Text[ japanese ] = "—˜‘§";
+ Text[ chinese_traditional ] = "Interest";
+ Text[ arabic ] = "Interest";
+ Text[ dutch ] = "Rente";
+ Text[ chinese_simplified ] = "rate";
+ Text[ greek ] = "Åðéôüêéï";
+ Text[ korean ] = "Á¤¼ö";
+ Text[ turkish ] = "Faiz";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zinssatz pro Periode." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Zinssatz pro Periode." ;
+ Text [ italian ] = "è il tasso di interesse per periodo." ;
+ Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
+ Text [ portuguese ] = "é a taxa de juros por período." ;
+ Text [ finnish ] = "Der Zinssatz pro Periode." ;
+ Text [ danish ] = "Rentesatsen per periode." ;
+ Text [ french ] = "Le taux d'intérêt par période." ;
+ Text [ swedish ] = "Räntesatsen per period." ;
+ Text [ dutch ] = "De rentevoet per termijn." ;
+ Text [ spanish ] = "Es la tasa de interés." ;
+ Text [ english_us ] = "The rate of interest per period." ;
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ russian ] = "Ïðîöåíòíàÿ ñòàâêà çà îäèí ïåðèîä.";
+ Text[ polish ] = "Stopa procentowa dla pojedynczego okresu.";
+ Text[ japanese ] = "ŠúŠÔ‚²‚Æ‚Ì—˜—¦";
+ Text[ chinese_traditional ] = "¨C­Ó¶g´Áªº§Q²v¡C";
+ Text[ arabic ] = "äÓÈÉ ÇáÝÇÆÏÉ áßá ÝÊÑÉ.";
+ Text[ dutch ] = "De rentevoet per termijn.";
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ greek ] = "Ôï åðéôüêéï áíÜ ðåñßïäï.";
+ Text[ korean ] = "±â°£´ç ÀÌÀÚÀ²";
+ Text[ turkish ] = "Dönem faiz oraný.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "ZZR" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "ZZR" ;
+ Text [ italian ] = "NUM.RATE" ;
+ Text [ portuguese_brazilian ] = "ZZR" ;
+ Text [ portuguese ] = "Nper" ;
+ Text [ finnish ] = "ZZR" ;
+ Text [ danish ] = "NPER" ;
+ Text [ french ] = "NPM" ;
+ Text [ swedish ] = "BPER" ;
+ Text [ dutch ] = "NPER" ;
+ Text [ spanish ] = "Nper" ;
+ Text [ english_us ] = "NPER" ;
+ Text[ chinese_simplified ] = "NPER";
+ Text[ russian ] = "Êïåð";
+ Text[ polish ] = "NPER";
+ Text[ japanese ] = "‘SŽx•¥‚¢ŠúŠÔ";
+ Text[ chinese_traditional ] = "NPER";
+ Text[ arabic ] = "NPER";
+ Text[ dutch ] = "NPER";
+ Text[ chinese_simplified ] = "NPER";
+ Text[ greek ] = "NPER";
+ Text[ korean ] = "NPER";
+ Text[ turkish ] = "NPER";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird. : Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuitõt (Rente) gezahlt wird. */
+ Text = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ italian ] = "Numero complessivo dei periodi per i quali vengono effettuati pagamenti." ;
+ Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ portuguese ] = "é o número total de períodos de pagamento numa anuidade." ;
+ Text [ finnish ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
+ Text [ french ] = "Le nombre total de périodes de paiement de l'annuité." ;
+ Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder då annuiteten (pension) betalas." ;
+ Text [ dutch ] = "Berekent het totale aantal termijnen waarover de annuïteit wordt betaald." ;
+ Text [ spanish ] = "Es el número total de períodos de pago." ;
+ Text [ english_us ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî ïåðèîäîâ âûïëàò ãîäîâîé ðåíòû.";
+ Text[ polish ] = "Okres p³atnoœci. Ca³kowita liczba okresów, w których sp³acana bêdzie suma sp³aty d³ugu.";
+ Text[ japanese ] = "Žx•¥‚¢ŠúŠÔB“ŠŽ‘ŠúŠÔ‘S‘Ì‚Å‚ÌŽx•¥‰ñ”‚̇ŒvB";
+ Text[ chinese_traditional ] = "Á`¤ä¥I¦~ª÷ªº´Á¼Æ¡C";
+ Text[ arabic ] = "ãÏÉ ÇáÏÝÚ. ÇáÚÏÏ ÇáÅÌãÇáí ááÝÊÑÇÊ ÇáÊí íÊã ÝíåÇ ÏÝÚ ÇáÓøõäÇåíøÉ (ãÚÇÔ).";
+ Text[ dutch ] = "Berekent het totale aantal termijnen waarover de annuïteit wordt betaald.";
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ greek ] = "ÄéÜñêåéá ðëçñùìÞò. Ôï óýíïëï ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ðëçñþíåôáé ôï ÷ñåùëýóéï (óýíôáîç).";
+ Text[ korean ] = "Áö±Þ ±â°£. ÁöºÒµÈ ¿¬±ÝÀÇ ±â°£ÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Taksit sayýsý. Annüite ödenen toplam dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "BW" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "BW" ;
+ Text [ italian ] = "VA" ;
+ Text [ portuguese_brazilian ] = "BW" ;
+ Text [ portuguese ] = "VA" ;
+ Text [ finnish ] = "BW" ;
+ Text [ danish ] = "NV" ;
+ Text [ french ] = "VA" ;
+ Text [ swedish ] = "NV" ;
+ Text [ dutch ] = "HW" ;
+ Text [ spanish ] = "Va" ;
+ Text [ english_us ] = "pv" ;
+ Text[ chinese_simplified ] = "pv";
+ Text[ russian ] = "Òç";
+ Text[ polish ] = "PV";
+ Text[ japanese ] = "Œ»Ý‰¿’l";
+ Text[ chinese_traditional ] = "pv";
+ Text[ arabic ] = "Pv";
+ Text[ dutch ] = "HW";
+ Text[ chinese_simplified ] = "pv";
+ Text[ greek ] = "Pv";
+ Text[ korean ] = "pv";
+ Text[ turkish ] = "Bugünkü deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ italian ] = "Valore attuale della serie di pagamenti." ;
+ Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ portuguese ] = "é o valor presente ou a quantia total actual correspondente a uma série de pagamentos futuros." ;
+ Text [ finnish ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ danish ] = "Nutidsværdi. Den værdi en række ydelser er værd nu." ;
+ Text [ french ] = "Valeur actuelle = la valeur, à la date d'aujourd'hui, d'une série de remboursements futurs." ;
+ Text [ swedish ] = "Nuvarande värde. Det nuvarande värdet för raden av betalningar." ;
+ Text [ dutch ] = "Huidige waarde. De huidige waarde is het totale bedrag dat een reeks toekomstige betalingen op dit moment waard is." ;
+ Text [ spanish ] = "Es el valor actual de la inversión." ;
+ Text [ english_us ] = "The present value. The present value or the amount the annuity is currently worth." ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£Ò»ÏµÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ russian ] = "Òåêóùàÿ ñòîèìîñòü èëè îáùàÿ ñóììà âñåõ áóäóùèõ ïëàòåæåé ñ íàñòîÿùåãî ìîìåíòà.";
+ Text[ polish ] = "Wartoœæ bie¿¹ca dla serii przysz³ych p³atnoœci.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB«—ˆs‚í‚ê‚éˆê˜A‚ÌŽx•¥‚¢‚ðAŒ»Žž“_‚ňꊇ•¥‚¢‚µ‚½ê‡‚̇Œv‹àŠzB";
+ Text[ chinese_traditional ] = "Ðä²{­È¡C¨Ì¦¸¤ä¥I«áªº¥Ø«e»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÍÇáíÉ áÓáÓáÉ ÇáÏÝÚÇÊ.";
+ Text[ dutch ] = "Huidige waarde. De huidige waarde is het totale bedrag dat een reeks toekomstige betalingen op dit moment waard is.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£Ò»ÏµÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Ç ðáñïýóá áîßá ìéáò óåéñÜò ðëçñùìþí.";
+ Text[ korean ] = "ÇöÀç°ª. ÇöÀç °ª ¶Ç´Â ÇöÀç °¡Ä¡ÀÇ ¿¬±Ý ÃÑ°è";
+ Text[ turkish ] = "Bugünkü deðer. Ödeme dizisinin bugünkü deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "A" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "A" ;
+ Text [ italian ] = "SP" ;
+ Text [ portuguese_brazilian ] = "A" ;
+ Text [ portuguese ] = "Início_período" ;
+ Text [ finnish ] = "A" ;
+ Text [ danish ] = "Start" ;
+ Text [ french ] = "Période_début" ;
+ Text [ swedish ] = "Start" ;
+ Text [ dutch ] = "B" ;
+ Text [ spanish ] = "Per_inicial" ;
+ Text [ english_us ] = "S" ;
+ Text[ chinese_simplified ] = "Start_period";
+ Text[ russian ] = "Íà÷_ïåðèîä";
+ Text[ polish ] = "okres_pocz";
+ Text[ japanese ] = "ŠJŽnŠú";
+ Text[ chinese_traditional ] = "Start_period";
+ Text[ arabic ] = "Start_period";
+ Text[ dutch ] = "B";
+ Text[ chinese_simplified ] = "Start_period";
+ Text[ greek ] = "Start_period";
+ Text[ korean ] = "S";
+ Text[ turkish ] = "B";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Anfangsperiode. Die erste Periode, die berücksichtigt wird. A = 1 heißt die allerserte Periode. : Anfangsperiode. Die erste Periode, die ber³cksichtigt wird. A = 1 hei˜t die allerserte Periode. */
+ Text = "Anfangsperiode. Die erste Periode, die berücksichtigt wird. A = 1 heißt die allerserte Periode." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Anfangsperiode. Die erste Periode, die berücksichtigt wird. A = 1 heißt die allerserte Periode." ;
+ Text [ italian ] = "È il periodo iniziale per il quale calcolare il deprezzamento." ;
+ Text [ portuguese_brazilian ] = "Anfangsperiode. Die erste Periode, die berücksichtigt wird. A = 1 heißt die allerserte Periode." ;
+ Text [ portuguese ] = "é o primeiro período no cálculo. 1 representa o primeiro período." ;
+ Text [ finnish ] = "Anfangsperiode. Die erste Periode, die berücksichtigt wird. A = 1 heißt die allerserte Periode." ;
+ Text [ danish ] = "Startperiode. Den første periode i beregningen.Start = 1 betyder første periode." ;
+ Text [ french ] = "La première période incluse dans le calcul. Ces périodes sont numérotées à partir de 1." ;
+ Text [ swedish ] = "Startperiod. Den första perioden för beräkningen. S = 1 betyder den allra första perioden." ;
+ Text [ dutch ] = "Begintermijn. De eerste termijn die in de berekening wordt opgenomen. B = 1 is de allereerste termijn." ;
+ Text [ spanish ] = "Es el primer período en el cálculo. 1 representa el primer período." ;
+ Text [ english_us ] = "The start period. The first period to be taken into account. A = 1 denotes the very first period." ;
+ Text[ chinese_simplified ] = "ÆðʼÖÜÆÚ¡£µÚÒ»¸ö¼ÆËãÖÜÆÚ¡£ Start_period = 1 ±íʾµÚÒ»¸öÖÜÆÚ¡£";
+ Text[ russian ] = "Íîìåð ïåðâîãî ïåðèîäà, ó÷èòûâàåìîãî â âû÷èñëåíèÿõ. Åñëè íà÷_ïåðèîä ðàâåí 1, òî ýòî îçíà÷àåò ñàìûé ïåðâûé ïåðèîä.";
+ Text[ polish ] = "Okres pocz¹tkowy dla obliczania amortyzacji. A = 1 oznacza pierwszy okres.";
+ Text[ japanese ] = "ŠJŽnŠúBŒvŽZ‚Ì‘ÎÛ‚Æ‚È‚éʼn‚ÌŠú‚ÅAŠJŽnŠú=1‚Í1”Ô‰‚ß‚ÌŠúB";
+ Text[ chinese_traditional ] = "°_©l¶g´Á¡C²Ä¤@­Ó­pºâ¶g´Á¡C A = 1 ªí¥Ü²Ä¤@­Ó¶g´Á¡C";
+ Text[ arabic ] = "Ãæá ÝÊÑÉ ÊÑíÏ ÍÓÇÈ ÇáÇÓÊåáÇß ÝíåÇ.";
+ Text[ dutch ] = "Begintermijn. De eerste termijn die in de berekening wordt opgenomen. B = 1 is de allereerste termijn.";
+ Text[ chinese_simplified ] = "ÆðʼÖÜÆÚ¡£µÚÒ»¸ö¼ÆËãÖÜÆÚ¡£ Start_period = 1 ±íʾµÚÒ»¸öÖÜÆÚ¡£";
+ Text[ greek ] = "Áñ÷éêÞ ðåñßïäïò. Ç ðñþôç ðåñßïäïò ðïõ èá ëçöèåß õðüøç. Á=1 óçìáßíåé ç áñ÷éêÞ ðåñßïäïò.";
+ Text[ korean ] = "½ÃÀÛ±âÇÑ. °í·ÁÇØ¾ß ÇÒ Ã³À½ ±âÇÑÀÔ´Ï´Ù. ½ÃÀÛ±âÇÑ=1Àº ÃÖÃÊÀÇ ±âÇÑÀ» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Ýlk dönem. Dikkate alýnan ilk dönem. A = 1 ilk dönem anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "E" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "E" ;
+ Text [ italian ] = "E" ;
+ Text [ portuguese_brazilian ] = "E" ;
+ Text [ portuguese ] = "Final_período" ;
+ Text [ finnish ] = "E" ;
+ Text [ danish ] = "Slut" ;
+ Text [ french ] = "Période_fin" ;
+ Text [ swedish ] = "Slut" ;
+ Text [ dutch ] = "ET" ;
+ Text [ spanish ] = "Per_final" ;
+ Text [ english_us ] = "E" ;
+ Text[ chinese_simplified ] = "end_period";
+ Text[ russian ] = "Êîí_ïåðèîä";
+ Text[ polish ] = "okres_koñc";
+ Text[ japanese ] = "I—¹Šú";
+ Text[ chinese_traditional ] = "end_period";
+ Text[ arabic ] = "End_period";
+ Text[ dutch ] = "ET";
+ Text[ chinese_simplified ] = "end_period";
+ Text[ greek ] = "end_period";
+ Text[ korean ] = "end_period";
+ Text[ turkish ] = "S";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Endperiode. Die letzte Periode, die berücksichtigt wird. : Endperiode. Die letzte Periode, die ber³cksichtigt wird. */
+ Text = "Endperiode. Die letzte Periode, die berücksichtigt wird." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Endperiode. Die letzte Periode, die berücksichtigt wird." ;
+ Text [ italian ] = "Periodo finale. L'ultimo periodo del quale si tiene conto." ;
+ Text [ portuguese_brazilian ] = "Endperiode. Die letzte Periode, die berücksichtigt wird." ;
+ Text [ portuguese ] = "é o último período no cálculo da amortização." ;
+ Text [ finnish ] = "Endperiode. Die letzte Periode, die berücksichtigt wird." ;
+ Text [ danish ] = "Slutperiode. Den sidste periode i beregningen." ;
+ Text [ french ] = "La dernière période incluse dans le calcul." ;
+ Text [ swedish ] = "Slutperiod. Den sista perioden för beräkningen." ;
+ Text [ dutch ] = "Eindtermijn. De laatste termijn die in de berekening wordt opgenomen." ;
+ Text [ spanish ] = "Es el último período en el cálculo." ;
+ Text [ english_us ] = "End period. The last period to be taken into account." ;
+ Text[ chinese_simplified ] = "½ØÖ¹ÖÜÆÚ¡£×îºóÒ»¸ö¼ÆËãÖÜÆÚ¡£";
+ Text[ russian ] = "Ïîñëåäíèé ïåðèîä, ó÷èòûâàåìûé â âû÷èñëåíèÿõ.";
+ Text[ polish ] = "Okres koñcowy, który zostanie uwzglêdniony przy obliczaniu amortyzacji.";
+ Text[ japanese ] = "I—¹ŠúBŒvŽZ‚Ì‘ÎÛ‚Æ‚È‚éÅŒã‚ÌŠúB";
+ Text[ chinese_traditional ] = "ºI¤î¶g´Á¡C³Ì«á¤@­Ó­pºâ¶g´Á¡C";
+ Text[ arabic ] = "ÃÎÑ ÝÊÑÉ ÊÑíÏ ÍÓÇÈ ÇáÇÓÊåáÇß ÝíåÇ.";
+ Text[ dutch ] = "Eindtermijn. De laatste termijn die in de berekening wordt opgenomen.";
+ Text[ chinese_simplified ] = "½ØÖ¹ÖÜÆÚ¡£×îºóÒ»¸ö¼ÆËãÖÜÆÚ¡£";
+ Text[ greek ] = "ÔåëéêÞ ðåñßïäïò. Ç ôåëåõôáßá ðåñßïäïò ðïõ èá ëçöèåß õðüøç.";
+ Text[ korean ] = "ÃÖÁ¾ ±âÇÑ. °í·ÁÇØ¾ß ÇÒ ¸¶Áö¸· ±âÇÑÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Son dönem. Dikkate alýnan son dönem.";
+ Text[ language_user1 ] = " ";
+ };
+ String 12 // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ {
+ Text = "F" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "F" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "F" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "F" ;
+ Text [ danish ] = "F" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "F" ;
+ Text [ dutch ] = "T" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Žx•¥Šú“ú";
+ Text[ chinese_traditional ] = "type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "T";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 13 // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Priode, F = 0 am Ende. */
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fõlligkeit. F = 1 hei˜t Fõlligkeit am Anfang einer Periode, F = 0 am Ende. */
+ Text = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ italian ] = "Scadenza. I numeri 0 e 1 indicano il momento dei pagamenti (alla fine o all'inizio del periodo)." ;
+ Text [ portuguese_brazilian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ portuguese ] = "é o vencimento dos pagamentos de juros. 1 significa no ínicio do período, 0 no final." ;
+ Text [ finnish ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
+ Text [ french ] = "Échéance. Type=1 signifie échéance au début d'une période, type=0 à la fin d'une période." ;
+ Text [ swedish ] = "Förfallotidpunkt. F = 1 betyder förfallotidpunkt i början av en period, F = 0 i slutet." ;
+ Text [ dutch ] = "Geeft aan wanneer betalingen voldaan moeten worden. T = 1 betekent aan het begin van een periode, T = 0 aan het einde." ;
+ Text [ spanish ] = "Es el vencimiento de los pagos de intereses. 1 es al comienzo del período, 0 al final." ;
+ Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£type = 1 ±íʾÔÚÖÜÆڵĿªÊ¼Ê±µ½ÆÚ£¬type = 0 \n±íʾÔÚÖÜÆڵĽáÊøʱµ½ÆÚ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå (0 èëè1), îáîçíà÷àþùåå, äîëæíà ëè ïðîèçâîäèòüñÿ âûïëàòà â êîíöå ïåðèîäà (0) èëè â íà÷àëå ïåðèîäà (1).";
+ Text[ polish ] = "Wartoœæ 0 lub 1 okreœlaj¹ca sposób dokonywania p³atnoœci. (1 oznacza p³atnoœæ na pocz¹tku okresu, 0 - na koñcu).";
+ Text[ japanese ] = "Žx•¥Šú“úBŽx•¥Šú“ú=1‚ÍŠeŠú‚ÌŠúŽñAŽx•¥Šú“ú= 0ŠeŠú‚ÌŠú––B";
+ Text[ chinese_traditional ] = "¨ì´ÁÃþ«¬¡C F = 1 ªí¥Ü¦b¶g´Áªº¶}©l®É¨ì´Á¡MF = 0 ªí¥Ü¦b¶g´Áªºµ²§ô®É¨ì´Á¡C";
+ Text[ arabic ] = "ÇáÏÝÚ Ýí ÈÏÇíÉ ÇáÝÊÑÉ ý= 1º ÇáÏÝÚ Ýí äåÇíÉ ÇáÝÊÑÉ = 0.";
+ Text[ dutch ] = "Geeft aan wanneer betalingen voldaan moeten worden. T = 1 betekent aan het begin van een periode, T = 0 aan het einde.";
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£type = 1 ±íʾÔÚÖÜÆڵĿªÊ¼Ê±µ½ÆÚ£¬type = 0 \n±íʾÔÚÖÜÆڵĽáÊøʱµ½ÆÚ¡£";
+ Text[ greek ] = "×ñüíïò ðëçñùìÞò.F = 1 óçìáßíåé ðëçñùìÞ óôçí áñ÷Þ ìéáò ðåñéüäïõ, F = 0 óçìáßíåé ðëçñùìÞ óôï ôÝëïò ôçò ðåñéüäïõ.";
+ Text[ korean ] = "¸¸±âÀÏ=1Àº ±âÇÑÀÇ ½ÃÀÛÀ» ³ªÅ¸³»°í ¸¸±âÀÏ=0Àº ±âÇÑÀÇ ³¡À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Vade. F = 1, vade dönem baþýnda, F = 0 ise dönem sonunda anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KUMZINSZ #*=-
+ Resource SC_OPCODE_KUM_ZINS_Z
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Kumulierte Zinseszinsen. Berechnet den Gesamtbetrag der Zinsanteile in einem Zeitraum für eine Investition bei konstantem Zinssatz. : Kumulierte Zinseszinsen. Berechnet den Gesamtbetrag der Zinsanteile in einem Zeitraum f³r eine Investition bei konstantem Zinssatz. */
+ Text = "Kumulierte Zinseszinsen. Berechnet den Gesamtbetrag der Zinsanteile in einem Zeitraum für eine Investition bei konstantem Zinssatz." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Kumulierte Zinseszinsen. Berechnet den Gesamtbetrag der Zinsanteile in einem Zeitraum für eine Investition bei konstantem Zinssatz." ;
+ Text [ italian ] = "Interesse composto cumulativo. Fornisce l'ammontare totale degli interessi per periodo per un investimento a interesse costante." ;
+ Text [ portuguese_brazilian ] = "Kumulierte Zinseszinsen. Berechnet den Gesamtbetrag der Zinsanteile in einem Zeitraum für eine Investition bei konstantem Zinssatz." ;
+ Text [ portuguese ] = "Juros acumulados compostos. Devolve a quantia total de juros periódicos de um investimento a uma taxa de juros constante." ;
+ Text [ finnish ] = "Kumulierte Zinseszinsen. Berechnet den Gesamtbetrag der Zinsanteile in einem Zeitraum für eine Investition bei konstantem Zinssatz." ;
+ Text [ danish ] = "Akkumuleret rentes rente. Beregner den akkumulerede rente indenfor en periode for en investering ved konstant rentesats." ;
+ Text [ french ] = "Intérêt cumulé. Calcule le cumulé des intérêts payés entre deux périodes données pour un investissement de taux d'intérêt constant." ;
+ Text [ swedish ] = "Kumulerade räntor på räntor. Beräknar det totala beloppet för ränteandelarna i en tidsperiod för en investering vid konstant räntesats." ;
+ Text [ dutch ] = "Berekent de cumulatieve rente die tussen begin- en eindtermijn op een lening is betaald." ;
+ Text [ spanish ] = "Devuelve el interés acumulado pagado sobre un préstamo entre los argumentos per_inicial y per_final" ;
+ Text [ english_us ] = "Cumulative compounded interest. Calculates the total amount of the interest share in a period for an investment with a constant interest rate." ;
+ Text[ chinese_simplified ] = "ÀÛ»ý¸´Àû¡£¼ÆËãÒ»±Ê¹Ì¶¨ÀûÂÊ´û¿îÔÚÒ»¶¨Ê±ÆÚÄÚ\nÓ¦³¥»¹µÄÀûÏ¢×ܶ";
+ Text[ russian ] = "Âû÷èñëÿåò îáùóþ ñóììó ïðîöåíòíîãî äîõîäà çà ïåðèîä äëÿ èíâåñòèöèè ïðè ïîñòîÿííîé ïðîöåíòíîé ñòàâêå.";
+ Text[ polish ] = "Skumulowane odsetki sk³adane. Oblicza ogóln¹ sumê odsetek w podanym okresie dla inwestycji przy sta³ej stopie oprocentowania.";
+ Text[ japanese ] = "•¡—˜ŒvŽZ‚Å‚Ì—˜‘§‚Ì—ÝŒvBŽw’肳‚ꂽŠúŠÔ‚ÉA‘Ý•t‹à‚ɑ΂µ‚ÄŽx•¥‚í‚ê‚é—˜‘§‚Ì—ÝŒv‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "²Ö¿n½Æ§Q¡C­pºâ¤@µ§©T©w§Q²v¶U´Ú¦b¤@©w®É´Á¤ºÀ³ÀvÁÙªº§Q®§Á`ÃB¡C";
+ Text[ arabic ] = "ÝÇÆÏÉ ãÑßøóÈÉ ÊóÌãøÚíøóÉ. ÊÍÓÈ ãÞÏÇÑ ÇáÝÇÆÏÉ Çáßáí áÇÓÊËãÇÑ ÎáÇá ÝÊÑÉ ãÇ ÇÓÊäÇÏÇð Åáì äÓÈÉ ÝÇÆÏÉ ËÇÈÊÉ.";
+ Text[ dutch ] = "Berekent de cumulatieve rente die tussen begin- en eindtermijn op een lening is betaald.";
+ Text[ chinese_simplified ] = "ÀÛ»ý¸´Àû¡£¼ÆËãÒ»±Ê¹Ì¶¨ÀûÂÊ´û¿îÔÚÒ»¶¨Ê±ÆÚÄÚ\nÓ¦³¥»¹µÄÀûÏ¢×ܶ";
+ Text[ greek ] = "Áèñïéóôéêüò áíáôïêéóìüò. Õðïëïãßæåé ôï óõíïëéêü ðïóü ôùí äüóåùí áíáôïêéóìïý ìéáò ðåñßïäïõ, ãéá ìéá åðÝíäõóç ìå óôáèåñü åðéôüêéï.";
+ Text[ korean ] = "´©Àû º¹ ÀÌÀÚ. °íÁ¤ ÀÌÀÚÀ²°úÇÔ²² ÅõÀÚ¿¡´ëÇÑ ±â°£¿¡ °ü°èµÇ´Â ÀÌÀÚ ÃѾ×À» »êÃâ";
+ Text[ turkish ] = "Kümülatif bileþik faiz. Sabit faiz oranlý yatýrýmlar için bir dönemdeki faiz paylarýnýn toplam meblaðýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_KUMZINSZ );
+ 6; 0; 0; 0; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zins" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zins" ;
+ Text [ italian ] = "tasso_int" ;
+ Text [ portuguese_brazilian ] = "Zins" ;
+ Text [ portuguese ] = "Juro" ;
+ Text [ finnish ] = "Zins" ;
+ Text [ danish ] = "Rente" ;
+ Text [ french ] = "Taux" ;
+ Text [ swedish ] = "ränta" ;
+ Text [ dutch ] = "Rente" ;
+ Text [ spanish ] = "Tasa" ;
+ Text [ english_us ] = "rate" ;
+ Text[ chinese_simplified ] = "rate";
+ Text[ russian ] = "Ïðîöåíò ñ êàïèòàëà";
+ Text[ polish ] = "Odsetki";
+ Text[ japanese ] = "—˜‘§";
+ Text[ chinese_traditional ] = "Interest";
+ Text[ arabic ] = "Interest";
+ Text[ dutch ] = "Rente";
+ Text[ chinese_simplified ] = "rate";
+ Text[ greek ] = "Åðéôüêéï";
+ Text[ korean ] = "Á¤¼ö";
+ Text[ turkish ] = "Faiz";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zinssatz pro Periode." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Zinssatz pro Periode." ;
+ Text [ italian ] = "è il tasso di interesse per periodo." ;
+ Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
+ Text [ portuguese ] = "é a taxa de juros por período." ;
+ Text [ finnish ] = "Der Zinssatz pro Periode." ;
+ Text [ danish ] = "Rentesatsen per periode." ;
+ Text [ french ] = "Le taux d'intérêt par période." ;
+ Text [ swedish ] = "Räntesats per period." ;
+ Text [ dutch ] = "De rentevoet per termijn." ;
+ Text [ spanish ] = "Es la tasa de interés por período." ;
+ Text [ english_us ] = "The rate of interest per period." ;
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ russian ] = "Ïðîöåíòíàÿ ñòàâêà çà ïåðèîä.";
+ Text[ polish ] = "Stopa procentowa dla pojedynczego okresu.";
+ Text[ japanese ] = "ŠúŠÔ‚²‚Æ‚Ì—˜—¦";
+ Text[ chinese_traditional ] = "¨C­Ó¶g´Áªº§Q²v¡C";
+ Text[ arabic ] = "äÓÈÉ ÇáÝÇÆÏÉ áßá ÝÊÑÉ.";
+ Text[ dutch ] = "De rentevoet per termijn.";
+ Text[ chinese_simplified ] = "ÿ¸öÖÜÆÚµÄÀûÂÊ¡£";
+ Text[ greek ] = "Ôï åðéôüêéï áíÜ ðåñßïäï.";
+ Text[ korean ] = "±â°£´ç ÀÌÀÚÀ²";
+ Text[ turkish ] = "Dönem faiz oraný.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "ZZR" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "ZZR" ;
+ Text [ italian ] = "NUM.RATE" ;
+ Text [ portuguese_brazilian ] = "ZZR" ;
+ Text [ portuguese ] = "Nper" ;
+ Text [ finnish ] = "ZZR" ;
+ Text [ danish ] = "NPER" ;
+ Text [ french ] = "NPM" ;
+ Text [ swedish ] = "BPER" ;
+ Text [ dutch ] = "NPER" ;
+ Text [ spanish ] = "Nper" ;
+ Text [ english_us ] = "NPER" ;
+ Text[ chinese_simplified ] = "NPER";
+ Text[ russian ] = "Êïåð";
+ Text[ polish ] = "NPER";
+ Text[ japanese ] = "‘SŽx•¥‚¢ŠúŠÔ";
+ Text[ chinese_traditional ] = "NPER";
+ Text[ arabic ] = "NPER";
+ Text[ dutch ] = "NPER";
+ Text[ chinese_simplified ] = "NPER";
+ Text[ greek ] = "NPER";
+ Text[ korean ] = "NPER";
+ Text[ turkish ] = "NPER";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird. : Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuitõt (Rente) gezahlt wird. */
+ Text = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ italian ] = "Il numero totale dei periodi di pagamento" ;
+ Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ portuguese ] = "é o número total de períodos de pagamento numa anuidade." ;
+ Text [ finnish ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuität (Rente) gezahlt wird." ;
+ Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
+ Text [ french ] = "Le nombre total de périodes de paiement de l'annuité." ;
+ Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder då annuiteten (pension) betalas." ;
+ Text [ dutch ] = "Berekent het aantal termijnen waarover annuïteit wordt betaald." ;
+ Text [ spanish ] = "Es el número total de períodos de pago en una anualidad." ;
+ Text [ english_us ] = "Payment period. The total number of periods in which the annuity (pension) is paid." ;
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî ïåðèîäîâ âûïëàò ãîäîâîé ðåíòû.";
+ Text[ polish ] = "Okres p³atnoœci. Ca³kowita liczba okresów, w których sp³acana bêdzie suma sp³aty d³ugu.";
+ Text[ japanese ] = "Žx•¥‚¢ŠúŠÔB“ŠŽ‘ŠúŠÔ‘S‘Ì‚Å‚ÌŽx•¥‰ñ”‚̇ŒvB";
+ Text[ chinese_traditional ] = "¤ä¥Iªº¦~ª÷Á`¶g´Á¼Æ¡C";
+ Text[ arabic ] = "ãÏÉ ÇáÏÝÚ. ÇáÚÏÏ ÇáÅÌãÇáí ááÝÊÑÇÊ ÇáÊí íÊã ÝíåÇ ÏÝÚ ÇáÓøõäÇåíøÉ (ãÚÇÔ).";
+ Text[ dutch ] = "Berekent het aantal termijnen waarover annuïteit wordt betaald.";
+ Text[ chinese_simplified ] = "Ö§¸¶µÄ×ÜÖÜÆÚÊý¡£";
+ Text[ greek ] = "ÄéÜñêåéá ðëçñùìÞò. Ôï óýíïëï ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ðëçñþíåôáé ôï ÷ñåùëýóéï (óýíôáîç).";
+ Text[ korean ] = "Áö±Þ ±â°£. ÁöºÒµÈ ¿¬±ÝÀÇ ±â°£ÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Taksit sayýsý. Annüite ödenen toplam dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "BW" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "BW" ;
+ Text [ italian ] = "VA" ;
+ Text [ portuguese_brazilian ] = "BW" ;
+ Text [ portuguese ] = "VA" ;
+ Text [ finnish ] = "BW" ;
+ Text [ danish ] = "NV" ;
+ Text [ french ] = "VA" ;
+ Text [ swedish ] = "NV" ;
+ Text [ dutch ] = "HW" ;
+ Text [ spanish ] = "Va" ;
+ Text [ english_us ] = "pv" ;
+ Text[ chinese_simplified ] = "PV";
+ Text[ russian ] = "Òç";
+ Text[ polish ] = "PV";
+ Text[ japanese ] = "Œ»Ý‰¿’l";
+ Text[ chinese_traditional ] = "PV";
+ Text[ arabic ] = "PV";
+ Text[ dutch ] = "HW";
+ Text[ chinese_simplified ] = "PV";
+ Text[ greek ] = "PV";
+ Text[ korean ] = "pv";
+ Text[ turkish ] = "Bugünkü deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ italian ] = "Il valore attuale della serie di pagamenti" ;
+ Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ portuguese ] = "é o valor presente ou a quantia total actual correspondente a uma série de pagamentos futuros." ;
+ Text [ finnish ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
+ Text [ danish ] = "Nutidsværdi. Den værdi en række ydelser er værd nu." ;
+ Text [ french ] = "Valeur actuelle = la valeur, à la date d'aujourd'hui, d'une série de remboursements futurs." ;
+ Text [ swedish ] = "Nuvarande värde. Det nuvarande värdet för en rad betalningar." ;
+ Text [ dutch ] = "Huidige waarde is het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is." ;
+ Text [ spanish ] = "Es el valor actual de la inversión." ;
+ Text [ english_us ] = "The present value. The present value or the amount the annuity is currently worth." ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£Ò»ÏµÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ russian ] = "Òåêóùåå çíà÷åíèå èíâåñòèöèè.";
+ Text[ polish ] = "Wartoœæ bie¿¹ca dla serii przysz³ych p³atnoœci.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB«—ˆs‚í‚ê‚éˆê˜A‚ÌŽx•¥‚¢‚ðAŒ»Žž“_‚ňꊇ•¥‚¢‚µ‚½ê‡‚̇Œv‹àŠzB";
+ Text[ chinese_traditional ] = "Ðä²{­È¡C¨Ì¦¸¤ä¥I«áªº¥Ø«e»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÍÇáíÉ áÓáÓáÉ ÇáÏÝÚÇÊ.";
+ Text[ dutch ] = "Huidige waarde is het totaalbedrag dat een reeks toekomstige betalingen op dit moment waard is.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£Ò»ÏµÁÐδÀ´Ö§¸¶µÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Ç ðáñïýóá áîßá ìéáò óåéñÜò ðëçñùìþí.";
+ Text[ korean ] = "ÇöÀç°ª. ÇöÀç °ª ¶Ç´Â ÇöÀç °¡Ä¡ÀÇ ¿¬±Ý ÃÑ°è";
+ Text[ turkish ] = "Bugünkü deðer. Ödeme dizisinin bugünkü deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "A" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "A" ;
+ Text [ italian ] = "I" ;
+ Text [ portuguese_brazilian ] = "A" ;
+ Text [ portuguese ] = "Início_período" ;
+ Text [ finnish ] = "A" ;
+ Text [ danish ] = "Start" ;
+ Text [ french ] = "Période_début" ;
+ Text [ swedish ] = "Start" ;
+ Text [ dutch ] = "B" ;
+ Text [ spanish ] = "Per_inicial" ;
+ Text [ english_us ] = "S" ;
+ Text[ chinese_simplified ] = "Start_period";
+ Text[ russian ] = "Íà÷_ïåðèîä";
+ Text[ polish ] = "okres_pocz";
+ Text[ japanese ] = "ŠJŽnŠú";
+ Text[ chinese_traditional ] = "Start_period";
+ Text[ arabic ] = "Start_period";
+ Text[ dutch ] = "B";
+ Text[ chinese_simplified ] = "Start_period";
+ Text[ greek ] = "Start_period";
+ Text[ korean ] = "S";
+ Text[ turkish ] = "B";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Anfangsperiode. Die erste Periode, die berücksichtigt wird. A = 1 ist die allererste Periode. : Anfangsperiode. Die erste Periode, die ber³cksichtigt wird. A = 1 ist die allererste Periode. */
+ Text = "Anfangsperiode. Die erste Periode, die berücksichtigt wird. A = 1 ist die allererste Periode." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Anfangsperiode. Die erste Periode, die berücksichtigt wird. A = 1 ist die allererste Periode." ;
+ Text [ italian ] = "Il periodo iniziale per il quale calcolare il deprezzamento. I=1 è il primo periodo" ;
+ Text [ portuguese_brazilian ] = "Anfangsperiode. Die erste Periode, die berücksichtigt wird. A = 1 ist die allererste Periode." ;
+ Text [ portuguese ] = "é o primeiro período no cálculo. 1 representa o primeiro período." ;
+ Text [ finnish ] = "Anfangsperiode. Die erste Periode, die berücksichtigt wird. A = 1 ist die allererste Periode." ;
+ Text [ danish ] = "Startperiode. Den første periode i beregningen.Start = 1 betyder første periode." ;
+ Text [ french ] = "La première période incluse dans le calcul. Ces périodes sont numérotées à partir de 1." ;
+ Text [ swedish ] = "Startperiod. Den första perioden för beräkningen. A = 1 är den allra första perioden." ;
+ Text [ dutch ] = "Begintermijn. De eerste termijn die in de berekening wordt opgenomen. B = 1 is de allereerste termijn." ;
+ Text [ spanish ] = "Es el período inicial para el cálculo." ;
+ Text [ english_us ] = "The start period. The first period to be taken into account. A = 1 the very first period." ;
+ Text[ chinese_simplified ] = "ÆðʼÖÜÆÚ¡£µÚÒ»¸ö¼ÆËãÖÜÆÚ¡£ Start_period = 1 ±íʾµÚÒ»¸öÖÜÆÚ¡£";
+ Text[ russian ] = "Íîìåð ïåðâîãî ïåðèîäà, ó÷èòûâàåìîãî â âû÷èñëåíèÿõ. Åñëè íà÷_ïåðèîä ðàâåí 1, òî ýòî îçíà÷àåò ñàìûé ïåðâûé ïåðèîä.";
+ Text[ polish ] = "Okres pocz¹tkowy do obliczenia amortyzacji. A = 1 oznacza pierwszy okres.";
+ Text[ japanese ] = "ŠJŽnŠúBŒvŽZ‚Ì‘ÎÛ‚Æ‚È‚éʼn‚ÌŠú‚ÅAŠJŽnŠú=1‚Í1”Ô‰‚ß‚ÌŠúB";
+ Text[ chinese_traditional ] = "°_©l¶g´Á¡C²Ä¤@­Ó­pºâ¶g´Á¡C A = 1 ªí¥Ü²Ä¤@­Ó¶g´Á¡C";
+ Text[ arabic ] = "Ãæá ÝÊÑÉ ÊÑíÏ ÍÓÇÈ ÇáÇÓÊåáÇß ÝíåÇ.";
+ Text[ dutch ] = "Begintermijn. De eerste termijn die in de berekening wordt opgenomen. B = 1 is de allereerste termijn.";
+ Text[ chinese_simplified ] = "ÆðʼÖÜÆÚ¡£µÚÒ»¸ö¼ÆËãÖÜÆÚ¡£ Start_period = 1 ±íʾµÚÒ»¸öÖÜÆÚ¡£";
+ Text[ greek ] = "Áñ÷éêÞ ðåñßïäïò. Ç ðñþôç ðåñßïäïò ðïõ èá ëçöèåß õðüøç. Á=1 óçìáßíåé ç áñ÷éêÞ ðåñßïäïò.";
+ Text[ korean ] = "½ÃÀÛ±âÇÑ. °í·ÁÇØ¾ß ÇÒ Ã³À½ ±âÇÑÀÔ´Ï´Ù. ½ÃÀÛ±âÇÑ=1Àº ÃÖÃÊÀÇ ±âÇÑÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýlk dönem. Dikkate alýnan ilk dönem. A = 1 ilk dönem anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "E" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "E" ;
+ Text [ italian ] = "UP" ;
+ Text [ portuguese_brazilian ] = "E" ;
+ Text [ portuguese ] = "Final_período" ;
+ Text [ finnish ] = "E" ;
+ Text [ danish ] = "Slut" ;
+ Text [ french ] = "Période_fin" ;
+ Text [ swedish ] = "Slut" ;
+ Text [ dutch ] = "E" ;
+ Text [ spanish ] = "Per_final" ;
+ Text [ english_us ] = "E" ;
+ Text[ chinese_simplified ] = "End_period";
+ Text[ russian ] = "Êîí_ïåðèîä";
+ Text[ polish ] = "okres_koñc";
+ Text[ japanese ] = "I—¹Šú";
+ Text[ chinese_traditional ] = "End_period";
+ Text[ arabic ] = "End_period";
+ Text[ dutch ] = "E";
+ Text[ chinese_simplified ] = "End_period";
+ Text[ greek ] = "End_period";
+ Text[ korean ] = "End_period";
+ Text[ turkish ] = "S";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Endperiode. Die letzte Periode, die berücksichtigt wird. : Endperiode. Die letzte Periode, die ber³cksichtigt wird. */
+ Text = "Endperiode. Die letzte Periode, die berücksichtigt wird." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Endperiode. Die letzte Periode, die berücksichtigt wird." ;
+ Text [ italian ] = "L'ultimo periodo per il quale calcolare il deprezzamento." ;
+ Text [ portuguese_brazilian ] = "Endperiode. Die letzte Periode, die berücksichtigt wird." ;
+ Text [ portuguese ] = "é o último período do cálculo." ;
+ Text [ finnish ] = "Endperiode. Die letzte Periode, die berücksichtigt wird." ;
+ Text [ danish ] = "Slutperiode. Den sidste periode i beregningen." ;
+ Text [ french ] = "La dernière période incluse dans le calcul." ;
+ Text [ swedish ] = "Slutperiod. Den sista perioden för beräkningen." ;
+ Text [ dutch ] = "Einttermijn. De laatste termijn die in de berekening is opgenomen." ;
+ Text [ spanish ] = "Es el período final del cálculo." ;
+ Text [ english_us ] = "The end period. The last period to be taken into account." ;
+ Text[ chinese_simplified ] = "½ØÖ¹ÖÜÆÚ¡£×îºóÒ»¸ö¼ÆËãÖÜÆÚ¡£";
+ Text[ russian ] = "Ïîñëåäíèé ïåðèîä, ó÷èòûâàåìûé â âû÷èñëåíèÿõ.";
+ Text[ polish ] = "Okres koñcowy do obliczenia amortyzacji.";
+ Text[ japanese ] = "I—¹ŠúBŒvŽZ‚Ì‘ÎÛ‚Æ‚È‚éÅŒã‚ÌŠúB";
+ Text[ chinese_traditional ] = "ºI¤î¶g´Á¡C³Ì«á¤@­Ó­pºâ¶g´Á¡C";
+ Text[ arabic ] = "ÃÎÑ ÝÊÑÉ ÊÑíÏ ÍÓÇÈ ÇáÇÓÊåáÇß ÝíåÇ.";
+ Text[ dutch ] = "Einttermijn. De laatste termijn die in de berekening is opgenomen.";
+ Text[ chinese_simplified ] = "½ØÖ¹ÖÜÆÚ¡£×îºóÒ»¸ö¼ÆËãÖÜÆÚ¡£";
+ Text[ greek ] = "ÔåëéêÞ ðåñßïäïò. Ç ôåëåõôáßá ðåñßïäïò ðïõ èá ëçöèåß õðüøç.";
+ Text[ korean ] = "ÃÖÁ¾ ±âÇÑ. °í·ÁÇØ¾ß ÇÒ ¸¶Áö¸· ±âÇÑÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Son dönem. Dikkate alýnan son dönem.";
+ Text[ language_user1 ] = " ";
+ };
+ String 12 // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ {
+ Text = "F" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "F" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "F" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "F" ;
+ Text [ danish ] = "F" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "F" ;
+ Text [ dutch ] = "V" ;
+ Text [ spanish ] = "Tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "Type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Žx•¥Šú“ú";
+ Text[ chinese_traditional ] = "Type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "V";
+ Text[ chinese_simplified ] = "Type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 13 // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende. : Fõlligkeit. F = 1 hei˜t Fõlligkeit am Anfang einer Periode, F = 0 am Ende. */
+ Text = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ italian ] = "Scadenze. 1 = pagamenti dovuti all'inizio del periodo, 0 = alla fine." ;
+ Text [ portuguese_brazilian ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ portuguese ] = "é o vencimento dos pagamentos de juros. 1 significa no ínicio do período, 0 no final." ;
+ Text [ finnish ] = "Fälligkeit. F = 1 heißt Fälligkeit am Anfang einer Periode, F = 0 am Ende." ;
+ Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
+ Text [ french ] = "Échéance. Type=1 signifie échéance au début d'une période, type=0 à la fin d'une période." ;
+ Text [ swedish ] = "Förfallotidpunkt. F = 1 betyder förfallotidpunkt i början av en period, F = 0 i slutet." ;
+ Text [ dutch ] = "Vervaldatum. V = 0 geeft aan dat de betaling moet worden verricht aan het begin van een periode, V = 1 aan het einde." ;
+ Text [ spanish ] = "Es el vencimiento de los pagos. 1 indica al principio del período, 0 al final." ;
+ Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£type = 1 ±íʾÔÚÒ»¸öÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ¡£ \ntype = 0 Ôò±íʾÔÚÒ»¸öÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå (0 èëè1), îáîçíà÷àþùåå, äîëæíà ëè ïðîèçâîäèòüñÿ âûïëàòà â êîíöå ïåðèîäà (0) èëè â íà÷àëå ïåðèîäà (1).";
+ Text[ polish ] = "Wartoœæ 0 lub 1 okreœlaj¹ca sposób dokonywania p³atnoœci. (1 oznacza p³atnoœæ na pocz¹tku okresu, 0 - na koñcu).";
+ Text[ japanese ] = "Žx•¥Šú“úBŽx•¥Šú“ú=1‚ÍŠeŠú‚ÌŠúŽñAŽx•¥Šú“ú=0‚ÍŠeŠú‚ÌŠú––B";
+ Text[ chinese_traditional ] = "¨ì´ÁÃþ«¬¡CF = 1 ªí¥Ü¦b¤@­Ó¶g´Á¶}©l®É¨ì´Á¡C F = 0 «hªí¥Ü¦b¤@­Ó¶g´Áµ²§ô®É¨ì´Á¡C";
+ Text[ arabic ] = "ÊÍÏÏ æÞÊ ÇáÇÓÊÍÞÇÞ. ÇáÇÓÊÍÞÇÞ ÚäÏ ÈÏÇíÉ ÝÊÑÉ =1¡ ÇáÇÓÊÍÞÇÞ ÚäÏ äåÇíÉ ÝÊÑÉ =0.";
+ Text[ dutch ] = "Vervaldatum. V = 0 geeft aan dat de betaling moet worden verricht aan het begin van een periode, V = 1 aan het einde.";
+ Text[ chinese_simplified ] = "µ½ÆÚÀàÐÍ¡£type = 1 ±íʾÔÚÒ»¸öÖÜÆÚ¿ªÊ¼Ê±µ½ÆÚ¡£ \ntype = 0 Ôò±íʾÔÚÒ»¸öÖÜÆÚ½áÊøʱµ½ÆÚ¡£";
+ Text[ greek ] = "×ñüíïò ðëçñùìÞò.F = 1 óçìáßíåé ðëçñùìÞ óôçí áñ÷Þ ìéáò ðåñéüäïõ, F = 0 óçìáßíåé ðëçñùìÞ óôï ôÝëïò ôçò ðåñéüäïõ.";
+ Text[ korean ] = "¸¸±âÀÏ. ¸¸±âÀÏ=1Àº ±âÇÑÀÇ Ã³À½À» ³ªÅ¸³»°í ¸¸±âÀÏ=0Àº ±âÇÑÀÇ ³¡À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Vade. F = 1, vade dönem baþýnda, F = 0 ise dönem sonunda anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DIA #*=-
+ Resource SC_OPCODE_DIA
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode : Berechnet die arithmetisch-degressive Abschreibung f³r eine bestimmte Periode */
+ Text = "Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ english ] = "Returns the sum-of-years' digits depreciation of an asset for a specified period." ;
+ Text [ norwegian ] = "Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ italian ] = "Restituisce l'ammortamento degressivo aritmetico per un determinato periodo." ;
+ Text [ portuguese_brazilian ] = "Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ portuguese ] = "Calcula a amortização aritmética degressiva para um determinado período." ;
+ Text [ finnish ] = "Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ danish ] = "Beregner afskrivningen for et aktiv i en bestemt periode ved brug af årsafskrivningsmetoden." ;
+ Text [ french ] = "Calcule l'amortissement arithmétique dégressif pour une période donnée (méthode Sum-of-Years Digits)." ;
+ Text [ swedish ] = "Beräknar den aritmetisk-degressiva avskrivningen för en bestämd period." ;
+ Text [ dutch ] = "Berekent de meetkundig-degressieve afschrijving voor een bepaalde termijn." ;
+ Text [ spanish ] = "Devuelve la depreciación aritmética degresiva de un bien durante un período específico" ;
+ Text [ english_us ] = "Calulates the arithmetically declining value of an asset (depreciation) for a specified period." ;
+ Text[ chinese_simplified ] = "¼ÆËãÖ¸¶¨ÆÚÏÞÄÚµÄËãÊõµÝ¼õÐÍ×ʲúÕ۾ɶ";
+ Text[ russian ] = "Âû÷èñëÿåò îáùåãîäîâóþ âåëè÷èíó àìîðòèçàöèè èìóùåñòâà äëÿ óêàçàííîãî ïåðèîäà.";
+ Text[ polish ] = "Oblicza amotryzacjê œrodka trwa³ego za podany okres metod¹ sumy cyfr wszystkich lat amortyzacji.";
+ Text[ japanese ] = "’èŠz’üŒ¸–@(Sum-of-Year's Digits Method)‚ðŽg—p‚µ‚ÄA“Á’è‚ÌŠú‚É‚¨‚¯‚錸‰¿ž‹p”ï‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@¶µ¸ê²£¦b¬Y¤@®É¶¡¬q¤ºªº§éÂÂÃB¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÃÑÞÇã ÇáãÌãæÚ ÇáÓäæí áÇÓÊåáÇß ÇáãæÌæÏÇÊ æÐáß áÝÊÑÉ ãÍÏÏÉ.";
+ Text[ dutch ] = "Berekent de meetkundig-degressieve afschrijving voor een bepaalde termijn.";
+ Text[ chinese_simplified ] = "¼ÆËãÖ¸¶¨ÆÚÏÞÄÚµÄËãÊõµÝ¼õÐÍ×ʲúÕ۾ɶ";
+ Text[ greek ] = "Õðïëïãßæåé ôçí áñéèìçôéêÞ-öèßíïõóá ôéìÞ ôçò áðüóâåóçò ìéáò óõãêåêñéìÝíçò ðåñéüäïõ.";
+ Text[ korean ] = "ÁöÁ¤µÈ ±â°£ ³»ÀÇ ÀÚ»ê(°¨°¡»ó°¢)ÀÇ »ê¼úÀû Ç϶ô °ª °è»ê";
+ Text[ turkish ] = "Belirli bir dönem için aritmetik-azalan amortismanýný hesaplar";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_DIA );
+ 4; 0; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "AW" ;
+ Text [ english ] = "cost" ;
+ Text [ norwegian ] = "AW" ;
+ Text [ italian ] = "costo" ;
+ Text [ portuguese_brazilian ] = "AW" ;
+ Text [ portuguese ] = "Custo" ;
+ Text [ finnish ] = "AW" ;
+ Text [ danish ] = "KP" ;
+ Text [ french ] = "Coût" ;
+ Text [ swedish ] = "AV" ;
+ Text [ dutch ] = "AW" ;
+ Text [ spanish ] = "Costo" ;
+ Text [ english_us ] = "cost" ;
+ Text[ chinese_simplified ] = "cost";
+ Text[ russian ] = "Ñòîèìîñòü";
+ Text[ polish ] = "Cena zakupu";
+ Text[ japanese ] = "Žæ“¾‰¿Šz";
+ Text[ chinese_traditional ] = "cost";
+ Text[ arabic ] = "Cost";
+ Text[ dutch ] = "AW";
+ Text[ chinese_simplified ] = "cost";
+ Text[ greek ] = "cost";
+ Text[ korean ] = "ºñ¿ë";
+ Text[ turkish ] = "Satýnalma maliyeti";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ english ] = "is the initial cost of the asset." ;
+ Text [ norwegian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ italian ] = "è il costo iniziale del bene." ;
+ Text [ portuguese_brazilian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ portuguese ] = "é o valor inicial de aquisição do bem económico." ;
+ Text [ finnish ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ danish ] = "Købspris. Aktivets anskaffelsespris." ;
+ Text [ french ] = "La valeur d'acquisition du bien." ;
+ Text [ swedish ] = "Anskaffningsvärde. Anskaffningskostnaderna för tillgången." ;
+ Text [ dutch ] = "Aanschafwaarde. De aanschafprijs van het artikel." ;
+ Text [ spanish ] = "Es el costo inicial del bien." ;
+ Text [ english_us ] = "Acquisition costs. The initial cost of the asset." ;
+ Text[ chinese_simplified ] = "¹ºÂò¼Û¡£×ʲúµÄ¹ºÈë¼Û¡£";
+ Text[ russian ] = "Íà÷àëüíàÿ ñòîèìîñòü îñíîâíûõ ôîíäîâ.";
+ Text[ polish ] = "Cena zakupu œrodka trwa³ego.";
+ Text[ japanese ] = "Žæ“¾‰¿ŠiBŽ‘ŽY‚ðw“ü‚µ‚½Žž“_‚ł̉¿ŠiB";
+ Text[ chinese_traditional ] = "ÁʶR»ù¡C¸ê²£ªºÁʤJ»ù¡C";
+ Text[ arabic ] = "ÊßÇáíÝ ÔÑÇÁ ÇáãæÌæÏÇÊ.";
+ Text[ dutch ] = "Aanschafwaarde. De aanschafprijs van het artikel.";
+ Text[ chinese_simplified ] = "¹ºÂò¼Û¡£×ʲúµÄ¹ºÈë¼Û¡£";
+ Text[ greek ] = "Áîßá áðüêôçóçò. Ïé áîßåò áðüêôçóçò ôïõ ðåñéïõóéáêïý óôïé÷åßïõ.";
+ Text[ korean ] = "ȹµæ ºñ¿ë. ÀÚ»êÀÇ Ãʱ⠺ñ¿ë";
+ Text[ turkish ] = "Satýnalma maliyeti. Ýktisadi malýn satýnalma maliyeti.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "RW" ;
+ Text [ english ] = "salvage" ;
+ Text [ norwegian ] = "RW" ;
+ Text [ italian ] = "val_residuo" ;
+ Text [ portuguese_brazilian ] = "RW" ;
+ Text [ portuguese ] = "Valor residual" ;
+ Text [ finnish ] = "RW" ;
+ Text [ danish ] = "RV" ;
+ Text [ french ] = "Valeur_rés" ;
+ Text [ swedish ] = "RV" ;
+ Text [ dutch ] = "RW" ;
+ Text [ spanish ] = "Valor_residual" ;
+ Text [ english_us ] = "salvage" ;
+ Text[ chinese_simplified ] = "salvage";
+ Text[ russian ] = "Îñòàòî÷íàÿ_ñòîèìîñòü";
+ Text[ polish ] = "Odzysk";
+ Text[ japanese ] = "Žc‘¶‰¿Šz";
+ Text[ chinese_traditional ] = "salvage";
+ Text[ arabic ] = "Salvage";
+ Text[ dutch ] = "RW";
+ Text[ chinese_simplified ] = "salvage";
+ Text[ greek ] = "Salvage";
+ Text[ korean ] = "³ª¸ÓÁö °ª";
+ Text[ turkish ] = "Hurda";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ english ] = "is the value at the end of the depreciation (sometimes called the salvage value of the asset)." ;
+ Text [ norwegian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ italian ] = "è il valore ottenuto alla fine dell'ammortamento, definito anche valore residuo di un bene." ;
+ Text [ portuguese_brazilian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ portuguese ] = "é o valor restante do bem no final da amortização." ;
+ Text [ finnish ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ danish ] = "Restværdi. Aktivets værdi ved afskrivningens afslutning." ;
+ Text [ french ] = "La valeur résiduelle du bien au terme de l'amortissement." ;
+ Text [ swedish ] = "Restvärde. Det resterande värdet i slutet av livslängden." ;
+ Text [ dutch ] = "Restwaarde. De resterende waarde aan het einde van de afschrijving." ;
+ Text [ spanish ] = "Es el valor al final de la depreciación." ;
+ Text [ english_us ] = "Salvage: The remaining value of the asset at the end of its life." ;
+ Text[ chinese_simplified ] = "Ê£ÓàÖµ¡£Ê¹ÓÃÄêÏÞÖÕֹʱµÄÊ£Óà¼ÛÖµ¡£";
+ Text[ russian ] = "Îñòàòî÷íàÿ ñòîèìîñòü â êîíöå ïåðèîäà àìîðòèçàöèè.";
+ Text[ polish ] = "Wartoœæ koñcowa po amortyzacji.";
+ Text[ japanese ] = "Žc‘¶‰¿ŠzB‘Ï—p”N”‚ªI—¹‚µ‚½Žž“_‚Å‚ÌŽ‘ŽY‚̉¿ŠiB";
+ Text[ chinese_traditional ] = "³Ñ¾l­È¡C¨Ï¥Î¦~­­²×¤î®Éªº³Ñ¾l»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÊÈÞíÉ ÚäÏ äåÇíÉ ÝÊÑÉ ÇáÇÓÊÎÏÇã.";
+ Text[ dutch ] = "Restwaarde. De resterende waarde aan het einde van de afschrijving.";
+ Text[ chinese_simplified ] = "Ê£ÓàÖµ¡£Ê¹ÓÃÄêÏÞÖÕֹʱµÄÊ£Óà¼ÛÖµ¡£";
+ Text[ greek ] = "ÕðïëåéììáôéêÞ áîßá. Ç áðïìÝíïõóá áîßá óôï ôÝëïò ôïõ ÷ñüíïõ ÷ñÞóçò.";
+ Text[ korean ] = "³ª¸ÓÁö °ª: ÀÌ¿ë ±â°£ÀÇ Á¾·á½Ã ÀÚ»êÀÇ ³ª¸ÓÁö °ª";
+ Text[ turkish ] = "Hurda. Varlýðýn ömrü tamamlandýðýnda kalan deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "ND" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "ND" ;
+ Text [ italian ] = "vita_utile" ;
+ Text [ portuguese_brazilian ] = "ND" ;
+ Text [ portuguese ] = "Vida útil" ;
+ Text [ finnish ] = "ND" ;
+ Text [ danish ] = "LT" ;
+ Text [ french ] = "Durée" ;
+ Text [ swedish ] = "LL" ;
+ Text [ dutch ] = "LD" ;
+ Text [ spanish ] = "Vida" ;
+ Text [ english_us ] = "life" ;
+ Text[ chinese_simplified ] = "life";
+ Text[ russian ] = "Âðåìÿ_ýêñïëóàòàöèè";
+ Text[ polish ] = "czas_¿ycia";
+ Text[ japanese ] = "‘Ï—p”N”";
+ Text[ chinese_traditional ] = "life";
+ Text[ arabic ] = "Life";
+ Text[ dutch ] = "LD";
+ Text[ chinese_simplified ] = "life";
+ Text[ greek ] = "Life";
+ Text[ korean ] = "Á¸¼Ó±â°£";
+ Text[ turkish ] = "Ömür";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird. : Nutzungsdauer. Die Anzahl der Perioden, ³ber die das Wirtschaftsgut abgeschrieben wird. */
+ Text = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ english ] = "is the number of periods over which the asset is being depreciated (sometimes called the useful life of the asset)." ;
+ Text [ norwegian ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ italian ] = "è il numero di periodi in cui il bene viene deprezzato, definito anche vita utile di un bene." ;
+ Text [ portuguese_brazilian ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ portuguese ] = "é o número de períodos de amortização do bem económico." ;
+ Text [ finnish ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ danish ] = "Levetid. Antallet af perioder over hvilke aktivet afskrives." ;
+ Text [ french ] = "La durée de vie utile du bien ou le nombre de périodes pendant lesquelles le bien est amorti." ;
+ Text [ swedish ] = "Livslängd. Antalet perioder som tillgången avskrivs." ;
+ Text [ dutch ] = "Levensduur. Het aantal perioden waarover het artikel wordt afgeschreven." ;
+ Text [ spanish ] = "Es el número de períodos durante el cual se produce la depreciación del bien (llamada también vida útil del bien)." ;
+ Text [ english_us ] = "Useful life. The number of periods in the useful life of the asset." ;
+ Text[ chinese_simplified ] = "ʹÓÃÊÙÃü¡£×ʲúÕÛ¾ÉÆÚÏÞ¡£";
+ Text[ russian ] = "×èñëî ïåðèîäîâ, çà êîòîðîå àìîðòèçèðóåòñÿ èìóùåñòâî (èíîãäà íàçûâàåìîå âðåìåíåì ïîëíîé àìîðòèçàöèè).";
+ Text[ polish ] = "Liczba okresów, po których œrodek trwa³y ulega amortyzacji.";
+ Text[ japanese ] = "‘Ï—p”N”BŽ‘ŽY‚ðŽg—p‚Å‚«‚é”N”A‚‚܂螋p‚Ì‘ÎۂƂȂ鎑ŽY‚ÌŽõ–½”N”B";
+ Text[ chinese_traditional ] = "¨Ï¥Î¹Ø©R¡C¸ê²£§é´Á­­¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÝÊÑÇÊ ÇáÊí ÓíÊã ÝíåÇ ÇÓÊåáÇß ÇáãæÌæÏÇÊ.";
+ Text[ dutch ] = "Levensduur. Het aantal perioden waarover het artikel wordt afgeschreven.";
+ Text[ chinese_simplified ] = "ʹÓÃÊÙÃü¡£×ʲúÕÛ¾ÉÆÚÏÞ¡£";
+ Text[ greek ] = "ÄéÜñêåéá ÷ñÞóçò. Ôï ðëÞèïò ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ãßíåé ç áðüóâåóç.";
+ Text[ korean ] = "À¯È¿ÇÑ Á¸¼Ó±â°£:ÀÚ»êÀÇ À¯È¿ÇÑ Á¸¼Ó±â°£¿¡ À־ ±â°£ÀÇ ¼ö";
+ Text[ turkish ] = "Ömür. Varlýk için amortisman ayrýlan dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "ZR" ;
+ Text [ english ] = "per" ;
+ Text [ norwegian ] = "ZR" ;
+ Text [ italian ] = "periodo" ;
+ Text [ portuguese_brazilian ] = "ZR" ;
+ Text [ portuguese ] = "Período" ;
+ Text [ finnish ] = "ZR" ;
+ Text [ danish ] = "TP" ;
+ Text [ french ] = "Période" ;
+ Text [ swedish ] = "TP" ;
+ Text [ dutch ] = "TB" ;
+ Text [ spanish ] = "Período" ;
+ Text [ english_us ] = "period" ;
+ Text[ chinese_simplified ] = "period";
+ Text[ russian ] = "Ïåðèîä";
+ Text[ polish ] = "Okres";
+ Text[ japanese ] = "ŠúŠÔ";
+ Text[ chinese_traditional ] = "period";
+ Text[ arabic ] = "Period";
+ Text[ dutch ] = "TB";
+ Text[ chinese_simplified ] = "period";
+ Text[ greek ] = "Period";
+ Text[ korean ] = "±â°£";
+ Text[ turkish ] = "Dönem";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Zeitraum. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ english ] = "is the period and must use the same units as life." ;
+ Text [ norwegian ] = "Zeitraum. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ italian ] = "definisce il periodo per il quale devono essere utilizzate le stesse unità di misura di vita_utile." ;
+ Text [ portuguese_brazilian ] = "Zeitraum. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ portuguese ] = "é o período de amortização que deseja calcular e tem a mesma unidade de tempo da vida útil." ;
+ Text [ finnish ] = "Zeitraum. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ danish ] = "Tidsperiode. Afskrivningsperioden i samme tidsenhed som levetiden." ;
+ Text [ french ] = "La période d'amortissement ; doit être exprimée dans la même unité que la durée." ;
+ Text [ swedish ] = "Tidsperiod. Period för avskrivning i samma tidsenhet som livslängden." ;
+ Text [ dutch ] = "Tijdsbestek. De afschrijvingstermijn in dezelfde tijdseenheid als de levensduur." ;
+ Text [ spanish ] = "es el período y se deben utilizar las mismas unidades que en el argumento vida." ;
+ Text [ english_us ] = "Period. The depreciation period which must have the same time unit as average useful life." ;
+ Text[ chinese_simplified ] = "ÕÛ¾ÉÆÚÊý£¬Æ䵥λºÍʹÓÃÄêÏ޵ĵ¥Î»Ïàͬ¡£";
+ Text[ russian ] = "Ïåðèîä. Ïåðèîäû àìîðòèçàöèè â òàêîé æå åäèíèöå âðåìåíè, ÷òî è ñðîê àìîðòçàöèè.";
+ Text[ polish ] = "Okres amortyzacji musi zostaæ wyra¿ony w tych samych jednostkach co argument czas_¿ycia.";
+ Text[ japanese ] = "ŠúŠÔBŒ¸‰¿ž‹p”ï‚ð‹‚ß‚éŠúB";
+ Text[ chinese_traditional ] = "§é´Á¼Æ¡M¨ä³æ¦ì©M¨Ï¥Î¦~­­ªº³æ¦ì¬Û¦P¡C";
+ Text[ arabic ] = "ÇáÝÊÑÉ ÇáÊí ÊÑíÏ ÍÓÇÈ ÇáÇÓÊåáÇß ãä ÃÌáåÇ æÇáÊí íÌÈ Ãä ÊÓÊÎÏã äÝÓ æÍÏÇÊ Life.";
+ Text[ dutch ] = "Tijdsbestek. De afschrijvingstermijn in dezelfde tijdseenheid als de levensduur.";
+ Text[ chinese_simplified ] = "ÕÛ¾ÉÆÚÊý£¬Æ䵥λºÍʹÓÃÄêÏ޵ĵ¥Î»Ïàͬ¡£";
+ Text[ greek ] = "×ñïíéêÞ äéÜñêåéá. Ç ðåñßïäïò ôçò áðüóâåóçò, óôçí ßäéá ìïíÜäá ÷ñüíïõ ìå ôç äéÜñêåéá ÷ñÞóçò";
+ Text[ korean ] = "±â°£. °¨°¡ »ó°¢ ±â°£Àº ¹Ýµå½Ã Æò±Õ À¯È¿ Á¸¼Õ±â°£°ú °°Àº ½Ã°£ ´ÜÀ§À̾î¾ßÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Dönem. Ömür ile ayný zaman birimine sahip amortisman dönemi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function LIA #*=-
+ Resource SC_OPCODE_LIA
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die lineare Abschreibung pro Periode" ;
+ Text [ english ] = "Returns the straight-line depreciation of an asset for one period." ;
+ Text [ norwegian ] = "Berechnet die lineare Abschreibung pro Periode" ;
+ Text [ italian ] = "Restituisce l'ammortamento lineare per un periodo." ;
+ Text [ portuguese_brazilian ] = "Berechnet die lineare Abschreibung pro Periode" ;
+ Text [ portuguese ] = "Devolve a amortização linear por período." ;
+ Text [ finnish ] = "Berechnet die lineare Abschreibung pro Periode" ;
+ Text [ danish ] = "Beregner den lineære afskrivning per periode." ;
+ Text [ french ] = "Calcule l'amortissement linéaire pour une période" ;
+ Text [ swedish ] = "Beräknar den linjära avskrivningen per period." ;
+ Text [ dutch ] = "Berekent de lineaire afschrijving over één termijn." ;
+ Text [ spanish ] = "Devuelve la depreciación por método directo de un bien en un período dado." ;
+ Text [ english_us ] = "Calculates the linear depreciation per period." ;
+ Text[ chinese_simplified ] = "¼ÆËã¸÷ÆÚµÄÏßÐÔÕ۾ɶ";
+ Text[ russian ] = "Âû÷èñëÿåò âåëè÷èíó íåïîñðåäñòâåííîé àìîðòèçàöèè èìóùåñòâà çà îäèí ïåðèîä.";
+ Text[ polish ] = "Oblicza wartoœæ amortyzacji œrodka trwa³ego w podanym okresie metod¹ liniow¹.";
+ Text[ japanese ] = "’èŠz–@(Straight-line Method)‚ðŽg—p‚µ‚ÄAŽ‘ŽY‚Ì1Šú“–‚½‚è‚ÌŒ¸‰¿ž‹p”ï‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¦U´Áªº½u©Ê§éÂÂÃB¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÇÓÊåáÇß ÇáËÇÈÊ ááãæÌæÏÇÊ áßá ÝÊÑÉ.";
+ Text[ dutch ] = "Berekent de lineaire afschrijving over één termijn.";
+ Text[ chinese_simplified ] = "¼ÆËã¸÷ÆÚµÄÏßÐÔÕ۾ɶ";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ãñáììéêÞ áðüóâåóç áíÜ ðåñßïäï.";
+ Text[ korean ] = "±â°£º´ ¼±Çü °¨°¡»ó°¢¾×À» °è»ê";
+ Text[ turkish ] = "Beher dönemdeki doðrusal amortismaný hesaplar";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_LIA );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "AW" ;
+ Text [ english ] = "cost" ;
+ Text [ norwegian ] = "AW" ;
+ Text [ italian ] = "costo" ;
+ Text [ portuguese_brazilian ] = "AW" ;
+ Text [ portuguese ] = "Custo" ;
+ Text [ finnish ] = "AW" ;
+ Text [ danish ] = "KP" ;
+ Text [ french ] = "Coût" ;
+ Text [ swedish ] = "AV" ;
+ Text [ dutch ] = "AW" ;
+ Text [ spanish ] = "Costo" ;
+ Text [ english_us ] = "cost" ;
+ Text[ chinese_simplified ] = "cost";
+ Text[ russian ] = "Ñòîèìîñòü";
+ Text[ polish ] = "Cena zakupu";
+ Text[ japanese ] = "Žæ“¾‰¿Šz";
+ Text[ chinese_traditional ] = "cost";
+ Text[ arabic ] = "Cost";
+ Text[ dutch ] = "AW";
+ Text[ chinese_simplified ] = "cost";
+ Text[ greek ] = "cost";
+ Text[ korean ] = "ºñ¿ë";
+ Text[ turkish ] = "Satýnalma maliyeti";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ english ] = "is the initial cost of the asset." ;
+ Text [ norwegian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ italian ] = "è il costo iniziale del bene." ;
+ Text [ portuguese_brazilian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ portuguese ] = "é o custo de aquisição do activo." ;
+ Text [ finnish ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ danish ] = "Købspris. Aktivets anskaffelsespris." ;
+ Text [ french ] = "La valeur d'acquisition du bien." ;
+ Text [ swedish ] = "Anskaffningsvärde. Anskaffningskostnaderna för tillgången." ;
+ Text [ dutch ] = "Aanschafwaarde. De aanschafwaarde van het artikel." ;
+ Text [ spanish ] = "Es el costo inicial del bien." ;
+ Text [ english_us ] = "Acquisition cost. The initial cost of an asset." ;
+ Text[ chinese_simplified ] = "¹ºÂò¼Û¡£×ʲúµÄ¹ºÈë¼Û¡£";
+ Text[ russian ] = "Íà÷àëüíàÿ ñòîèìîñòü îñíîâíûõ ôîíäîâ.";
+ Text[ polish ] = "Cena zakupu œrodka trwa³ego.";
+ Text[ japanese ] = "Žæ“¾‰¿ŠiBŽ‘ŽY‚ðw“ü‚µ‚½Žž“_‚ł̉¿ŠiB";
+ Text[ chinese_traditional ] = "ÁʶR»ù¡C¸ê²£ªºÁʤJ»ù¡C";
+ Text[ arabic ] = "ÊßÇáíÝ ÔÑÇÁ ÇáãæÌæÏÇÊ.";
+ Text[ dutch ] = "Aanschafwaarde. De aanschafwaarde van het artikel.";
+ Text[ chinese_simplified ] = "¹ºÂò¼Û¡£×ʲúµÄ¹ºÈë¼Û¡£";
+ Text[ greek ] = "Áîßá áðüêôçóçò. Ïé áîßåò áðüêôçóçò ôïõ ðåñéïõóéáêïý óôïé÷åßïõ.";
+ Text[ korean ] = "±¸ÀÔ °¡Ä¡. ÀÚ»êÀÇ ±¸ÀÔ ºñ¿ëÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Satýnalma maliyeti. Ýktisadi varlýðýn satýnalma maliyeti.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "RW" ;
+ Text [ english ] = "salvage" ;
+ Text [ norwegian ] = "RW" ;
+ Text [ italian ] = "val_residuo" ;
+ Text [ portuguese_brazilian ] = "RW" ;
+ Text [ portuguese ] = "Valor_residual" ;
+ Text [ finnish ] = "RW" ;
+ Text [ danish ] = "RV" ;
+ Text [ french ] = "Valeur_rés" ;
+ Text [ swedish ] = "RV" ;
+ Text [ dutch ] = "RW" ;
+ Text [ spanish ] = "Valor_residual" ;
+ Text [ english_us ] = "salvage" ;
+ Text[ chinese_simplified ] = "salvage";
+ Text[ russian ] = "Îñòàòî÷íàÿ_ñòîèìîñòü";
+ Text[ polish ] = "Odzysk";
+ Text[ japanese ] = "Žc‘¶‰¿Šz";
+ Text[ chinese_traditional ] = "salvage";
+ Text[ arabic ] = "Salvage";
+ Text[ dutch ] = "RW";
+ Text[ chinese_simplified ] = "salvage";
+ Text[ greek ] = "Salvage";
+ Text[ korean ] = "³ª¸ÓÁö °ª";
+ Text[ turkish ] = "Hurda";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ english ] = "is the value at the end of the depreciation (sometimes called the salvage value of the asset)." ;
+ Text [ norwegian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ italian ] = "è il valore ottenuto alla fine dell'ammortamento, definito anche valore residuo di un bene." ;
+ Text [ portuguese_brazilian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ portuguese ] = "é o valor que permanece no final da amortização." ;
+ Text [ finnish ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ danish ] = "Restværdi. Aktivets værdi ved afskrivningens afslutning." ;
+ Text [ french ] = "La valeur résiduelle du bien au terme de l'amortissement." ;
+ Text [ swedish ] = "Restvärde. Det resterande värdet i slutet av livslängden." ;
+ Text [ dutch ] = "Restwaarde. De restwaarde aan het einde van de levensduur." ;
+ Text [ spanish ] = "Es el valor al final de la depreciación." ;
+ Text [ english_us ] = "Salvage: The remaining value of the asset at the end of its life." ;
+ Text[ chinese_simplified ] = "Ê£ÓàÖµ¡£Ê¹ÓÃÄêÏÞÖÕֹʱµÄÊ£Óà¼ÛÖµ¡£";
+ Text[ russian ] = "Îñòàòî÷íàÿ ñòîèìîñòü â êîíöå ïåðèîäà àìîðòèçàöèè.";
+ Text[ polish ] = "Wartoœæ koñcowa po amortyzacji.";
+ Text[ japanese ] = "Žc‘¶‰¿ŠzB‘Ï—p”N”‚ªI—¹‚µ‚½Žž“_‚Å‚ÌŽ‘ŽY‚̉¿ŠiB";
+ Text[ chinese_traditional ] = "³Ñ¾l­È¡C¨Ï¥Î¦~­­²×¤î®Éªº³Ñ¾l»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÊÈÞíÉ ÚäÏ äåÇíÉ ÝÊÑÉ ÇáÇÓÊÎÏÇã.";
+ Text[ dutch ] = "Restwaarde. De restwaarde aan het einde van de levensduur.";
+ Text[ chinese_simplified ] = "Ê£ÓàÖµ¡£Ê¹ÓÃÄêÏÞÖÕֹʱµÄÊ£Óà¼ÛÖµ¡£";
+ Text[ greek ] = "ÕðïëåéììáôéêÞ áîßá. Ç áðïìÝíïõóá áîßá óôï ôÝëïò ôïõ ÷ñüíïõ ÷ñÞóçò.";
+ Text[ korean ] = "³ª¸ÓÁö °ª : ÀÌ¿ë±â°£ÀÇ Á¾·á½Ã ÀÚ»êÀÇ ³ª¸ÓÁö °ª";
+ Text[ turkish ] = "Hurda. Varlýðýn ömrü tamamlandýðýnda kalan deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "ND" ;
+ Text [ english ] = "live" ;
+ Text [ norwegian ] = "ND" ;
+ Text [ italian ] = "vita_utile" ;
+ Text [ portuguese_brazilian ] = "ND" ;
+ Text [ portuguese ] = "Vida_útil" ;
+ Text [ finnish ] = "ND" ;
+ Text [ danish ] = "LT" ;
+ Text [ french ] = "Durée" ;
+ Text [ swedish ] = "LL" ;
+ Text [ dutch ] = "LD" ;
+ Text [ spanish ] = "Vida" ;
+ Text [ english_us ] = "life" ;
+ Text[ chinese_simplified ] = "life";
+ Text[ russian ] = "Âðåìÿ_ýêñïëóàòàöèè";
+ Text[ polish ] = "czas_¿ycia";
+ Text[ japanese ] = "‘Ï—p”N”";
+ Text[ chinese_traditional ] = "life";
+ Text[ arabic ] = "Life";
+ Text[ dutch ] = "LD";
+ Text[ chinese_simplified ] = "life";
+ Text[ greek ] = "Life";
+ Text[ korean ] = "Á¸¼Ó±â°£";
+ Text[ turkish ] = "Ömür";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird. : Nutzungsdauer. Die Anzahl der Perioden, ³ber die das Wirtschaftsgut abgeschrieben wird. */
+ Text = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ english ] = "is the number of periods over which the asset is being depreciated (sometimes called the useful life of the asset)." ;
+ Text [ norwegian ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ italian ] = "è il numero di periodi in cui il bene viene ammortizzato, definito anche vita utile di un bene." ;
+ Text [ portuguese_brazilian ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ portuguese ] = "é o número de períodos de amortização do activo." ;
+ Text [ finnish ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ danish ] = "Levetid. Antallet af perioder over hvilke aktivet afskrives." ;
+ Text [ french ] = "La durée de vie utile du bien ou le nombre de périodes pendant lesquelles le bien est amorti." ;
+ Text [ swedish ] = "Livslängd. Antalet perioder då tillgången avskrivs." ;
+ Text [ dutch ] = "Levensduur. Het aantal termijnen waarover het artikel wordt afgeschreven." ;
+ Text [ spanish ] = "Es el número de períodos durante los cuales ocurre la depreciación del bien." ;
+ Text [ english_us ] = "Useful life. The number of periods in the useful life of the asset." ;
+ Text[ chinese_simplified ] = "ʹÓÃÆÚÏÞ¡£×ʲúÕÛ¾ÉÆÚÏÞ¡£";
+ Text[ russian ] = "×èñëî ïåðèîäîâ, çà êîòîðîå àìîðòèçèðóåòñÿ èìóùåñòâî (èíîãäà íàçûâàåìîå âðåìåíåì ïîëíîé àìîðòèçàöèè).";
+ Text[ polish ] = "Liczba okresów, po których œrodek trwa³y ulega amortyzacji.";
+ Text[ japanese ] = "‘Ï—p”N”BŽ‘ŽY‚ðŽg—p‚Å‚«‚é”N”A‚‚܂螋p‚Ì‘ÎۂƂȂ鎑ŽY‚ÌŽõ–½”N”B";
+ Text[ chinese_traditional ] = "¨Ï¥Î¦~­­¡C¸ê²£§é´Á­­¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÝÊÑÇÊ ÇáÊí ÓíÊã ÝíåÇ ÇÓÊåáÇß ÇáãæÌæÏÇÊ.";
+ Text[ dutch ] = "Levensduur. Het aantal termijnen waarover het artikel wordt afgeschreven.";
+ Text[ chinese_simplified ] = "ʹÓÃÆÚÏÞ¡£×ʲúÕÛ¾ÉÆÚÏÞ¡£";
+ Text[ greek ] = "ÄéÜñêåéá ÷ñÞóçò. Ôï ðëÞèïò ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ãßíåé ç áðüóâåóç.";
+ Text[ korean ] = "À¯È¿ÇÑ Á¸¼Ó±â°£:ÀÚ»êÀÇ À¯È¿ÇÑ Á¸¼Ó±â°£¿¡ À־ ±â°£ÀÇ ¼ö";
+ Text[ turkish ] = "Ömür. Varlýk için amortisman ayrýlan dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GDA #*=-
+ Resource SC_OPCODE_GDA
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode : Berechnet die arithmetisch-degressive Abschreibung f³r eine bestimmte Periode */
+ Text = "Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ english ] = "Returns the depreciation of an asset for a spcified period using the double-declining balance method or some other method you specify." ;
+ Text [ norwegian ] = "Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ italian ] = "Restituisce l'ammortamento degressivo aritmetico per un periodo specificato." ;
+ Text [ portuguese_brazilian ] = "Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ portuguese ] = "Calcula a amortização aritmética degressiva para um determinado período." ;
+ Text [ finnish ] = "Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ danish ] = "Beregner afskrivningen for et aktiv i en bestemt periode ved brug af dobbeltsaldometoden." ;
+ Text [ french ] = "Calcule l'amortissement arithmétique dégressif pour une période donnée selon un coefficient à spécifier." ;
+ Text [ swedish ] = "Beräknar den aritmetisk-degressiva avskrivningen för en bestämd period." ;
+ Text [ dutch ] = "Berekent de afschrijving van activa over een bepaalde termijn." ;
+ Text [ spanish ] = "Devuelve la depreciación de un bien en un período específico usando el método de depreciación por doble disminución de saldo u otro método que se especifique" ;
+ Text [ english_us ] = "Calculates the depreciation of an asset for a specific period using the double-declining balance method or declining balance factor." ;
+ Text[ chinese_simplified ] = "¼ÆËãÖ¸¶¨ÆÚÏÞÄÚµÄËãÊõµÝ¼õÐÍ×ʲúÕ۾ɶ";
+ Text[ russian ] = "Âû÷èñëÿåò îáùåãîäîâóþ âåëè÷èíó àìîðòèçàöèè èìóùåñòâà äëÿ óêàçàííîãî ïåðèîäà.";
+ Text[ polish ] = "Oblicza amortyzacjê œrodka trwa³ego za podany okres metod¹ podwójnego spadku lub metod¹ okreœlon¹ przez u¿ytkownika.";
+ Text[ japanese ] = "”{—¦–@(Double-declining Balance Method) ‚ðŽg—p‚µ‚ÄA“Á’è‚ÌŠú‚É‚¨‚¯‚鎑ŽY‚ÌŒ¸‰¿ž‹p”ï‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥iÅܧEÃB»¼´îªk¡C­pºâ«ü©w´Á¶¡¤º©Î¬Y¤@®É¶¡¬q¤ºªº¸ê²£§éÂÂÃB¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÇÓÊåáÇß ááãæÌæÏÇÊ Ýí ÝÊÑÉ ãÚíäÉ ÈÇÓÊÎÏÇã ØÑíÞÉ ÇáÇÓÊåáÇß ÇáãÊäÇÞÕ ÇáãÒÏæÌ.";
+ Text[ dutch ] = "Berekent de afschrijving van activa over een bepaalde termijn.";
+ Text[ chinese_simplified ] = "¼ÆËãÖ¸¶¨ÆÚÏÞÄÚµÄËãÊõµÝ¼õÐÍ×ʲúÕ۾ɶ";
+ Text[ greek ] = "Õðïëïãßæåé ôçí áñéèìçôéêÞ-öèßíïõóá ôéìÞ ôçò áðüóâåóçò ìéáò óõãêåêñéìÝíçò ðåñéüäïõ.";
+ Text[ korean ] = "ÁöÁ¤µÈ ±â°£¿¡ »ç¿ëµÈ ÀÌÁß Ç϶ô ¹æ½Ä ¶Ç´Â ¼öÁö Ç϶ô ¿ä¼ÒÀÇ »ç¿ë¿¡ ´ëÇÑ ÀÚ»ê Ç׸ñÀÇ °¨°¡»ó°¢À» °è»ê .";
+ Text[ turkish ] = "Belirli bir dönem için aritmetik-azalan amortismaný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_GDA );
+ 5; 0; 0; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "AW" ;
+ Text [ english ] = "cost" ;
+ Text [ norwegian ] = "AW" ;
+ Text [ italian ] = "costo" ;
+ Text [ portuguese_brazilian ] = "AW" ;
+ Text [ portuguese ] = "Custo" ;
+ Text [ finnish ] = "AW" ;
+ Text [ danish ] = "KP" ;
+ Text [ french ] = "Coût" ;
+ Text [ swedish ] = "AV" ;
+ Text [ dutch ] = "AW" ;
+ Text [ spanish ] = "Costo" ;
+ Text [ english_us ] = "cost" ;
+ Text[ chinese_simplified ] = "cost";
+ Text[ russian ] = "Ñòîèìîñòü";
+ Text[ polish ] = "Cena zakupu";
+ Text[ japanese ] = "Žæ“¾‰¿Šz";
+ Text[ chinese_traditional ] = "cost";
+ Text[ arabic ] = "Cost";
+ Text[ dutch ] = "AW";
+ Text[ chinese_simplified ] = "cost";
+ Text[ greek ] = "cost";
+ Text[ korean ] = "ºñ¿ë";
+ Text[ turkish ] = "Satýnalma maliyeti";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ english ] = "is the initial cost of the asset." ;
+ Text [ norwegian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ italian ] = "è il costo iniziale del bene." ;
+ Text [ portuguese_brazilian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ portuguese ] = "é o valor inicial de aquisição do bem económico." ;
+ Text [ finnish ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ danish ] = "Købspris. Aktivets anskaffelsespris." ;
+ Text [ french ] = "La valeur d'acquisition du bien." ;
+ Text [ swedish ] = "Anskaffningsvärde. Anskaffningskostnaderna för tillgången." ;
+ Text [ dutch ] = "Aanschafwaarde. De aanschafkosten van het artikel." ;
+ Text [ spanish ] = "Es el valor inicial del bien." ;
+ Text [ english_us ] = "Acquisition costs. The initial cost of the asset." ;
+ Text[ chinese_simplified ] = "¹ºÂò¼Û¡£×ʲúµÄ¹ºÈë¼Û¡£";
+ Text[ russian ] = "Íà÷àëüíàÿ ñòîèìîñòü îñíîâíûõ ôîíäîâ.";
+ Text[ polish ] = "Cena zakupu œrodka trwa³ego.";
+ Text[ japanese ] = "Žæ“¾‰¿ŠzBŽ‘ŽY‚ðw“ü‚µ‚½Žž“_‚ł̉¿ŠiB";
+ Text[ chinese_traditional ] = "ÁʶR»ù¡C¸ê²£ªºÁʤJ»ù¡C";
+ Text[ arabic ] = "ÊßÇáíÝ ÔÑÇÁ ÇáãæÌæÏÇÊ.";
+ Text[ dutch ] = "Aanschafwaarde. De aanschafkosten van het artikel.";
+ Text[ chinese_simplified ] = "¹ºÂò¼Û¡£×ʲúµÄ¹ºÈë¼Û¡£";
+ Text[ greek ] = "Áîßá áðüêôçóçò. Ïé áîßåò áðüêôçóçò ôïõ ðåñéïõóéáêïý óôïé÷åßïõ.";
+ Text[ korean ] = "ȹµæ ºñ¿ë. ÀÚ»êÀÇ Ãʱ⠺ñ¿ë";
+ Text[ turkish ] = "Satýnalma maliyeti. Ýktisadi malýn satýnalma maliyeti.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "RW" ;
+ Text [ english ] = "salvage" ;
+ Text [ norwegian ] = "RW" ;
+ Text [ italian ] = "val_residuo" ;
+ Text [ portuguese_brazilian ] = "RW" ;
+ Text [ portuguese ] = "Valor residual" ;
+ Text [ finnish ] = "RW" ;
+ Text [ danish ] = "RV" ;
+ Text [ french ] = "Valeur_rés" ;
+ Text [ swedish ] = "RV" ;
+ Text [ dutch ] = "RW" ;
+ Text [ spanish ] = "Valor_residual" ;
+ Text [ english_us ] = "salvage" ;
+ Text[ chinese_simplified ] = "salvage";
+ Text[ russian ] = "Îñòàòî÷íàÿ_ñòîèìîñòü";
+ Text[ polish ] = "Odzysk";
+ Text[ japanese ] = "Žc‘¶‰¿Šz";
+ Text[ chinese_traditional ] = "salvage";
+ Text[ arabic ] = "Salvage";
+ Text[ dutch ] = "RW";
+ Text[ chinese_simplified ] = "salvage";
+ Text[ greek ] = "Salvage";
+ Text[ korean ] = "³ª¸ÓÁö °ª";
+ Text[ turkish ] = "Hurda";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ english ] = "is the value at the end of the depreciation (sometimes called the salvage value of the asset)." ;
+ Text [ norwegian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ italian ] = "è il valore ottenuto alla fine dell'ammortamento, definito anche valore residuo di un bene." ;
+ Text [ portuguese_brazilian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ portuguese ] = "é o valor restante do bem no final da amortização." ;
+ Text [ finnish ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ danish ] = "Restværdi. Aktivets værdi ved afskrivningens afslutning." ;
+ Text [ french ] = "La valeur résiduelle du bien au terme de l'amortissement." ;
+ Text [ swedish ] = "Restvärde. Det resterande värdet i slutet av livslängden." ;
+ Text [ dutch ] = "Restwaarde. De waarde aan het einde van de levensduur." ;
+ Text [ spanish ] = "Es el valor al final de la depreciación (a veces llamado valor residual del bien)." ;
+ Text [ english_us ] = "Salvage: The remaining value of the asset at the end of its life." ;
+ Text[ chinese_simplified ] = "Ê£ÓàÖµ¡£Ê¹ÓÃÄêÏÞÖÕֹʱµÄÊ£Óà¼ÛÖµ¡£";
+ Text[ russian ] = "Îñòàòî÷íàÿ ñòîèìîñòü â êîíöå ïåðèîäà àìîðòèçàöèè.";
+ Text[ polish ] = "WartoϾ odzysku na koniec okresu amortyzacji.";
+ Text[ japanese ] = "Žc‘¶‰¿ŠzB‘Ï—p”N”‚ªI—¹‚µ‚½Žž“_‚Å‚ÌŽ‘ŽY‚̉¿ŠiB";
+ Text[ chinese_traditional ] = "³Ñ¾l­È¡C¨Ï¥Î¦~­­²×¤î®Éªº³Ñ¾l»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÊÈÞíÉ ÚäÏ äåÇíÉ ÝÊÑÉ ÇáÇÓÊÎÏÇã.";
+ Text[ dutch ] = "Restwaarde. De waarde aan het einde van de levensduur.";
+ Text[ chinese_simplified ] = "Ê£ÓàÖµ¡£Ê¹ÓÃÄêÏÞÖÕֹʱµÄÊ£Óà¼ÛÖµ¡£";
+ Text[ greek ] = "ÕðïëåéììáôéêÞ áîßá. Ç áðïìÝíïõóá áîßá óôï ôÝëïò ôïõ ÷ñüíïõ ÷ñÞóçò.";
+ Text[ korean ] = "³ª¸ÓÁö °ª: ÀÌ¿ë±â°£ ÀÇ Á¾·á½Ã ÀÚ»êÀÇ ³ª¸ÓÁö °ª";
+ Text[ turkish ] = "Hurda. Varlýðýn ömrü tamamlandýðýnda kalan deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "ND" ;
+ Text [ english ] = "life" ;
+ Text [ norwegian ] = "ND" ;
+ Text [ italian ] = "vita_utile" ;
+ Text [ portuguese_brazilian ] = "ND" ;
+ Text [ portuguese ] = "Vida útil" ;
+ Text [ finnish ] = "ND" ;
+ Text [ danish ] = "LT" ;
+ Text [ french ] = "Durée" ;
+ Text [ swedish ] = "LL" ;
+ Text [ dutch ] = "LD" ;
+ Text [ spanish ] = "Vida" ;
+ Text [ english_us ] = "life" ;
+ Text[ chinese_simplified ] = "life";
+ Text[ russian ] = "Âðåìÿ_ýêñïëóàòàöèè";
+ Text[ polish ] = "czas_¿ycia";
+ Text[ japanese ] = "‘Ï—p”N”";
+ Text[ chinese_traditional ] = "life";
+ Text[ arabic ] = "Life";
+ Text[ dutch ] = "LD";
+ Text[ chinese_simplified ] = "life";
+ Text[ greek ] = "Life";
+ Text[ korean ] = "Á¸¼Ó±â°£";
+ Text[ turkish ] = "Ömür";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird. : Nutzungsdauer. Die Anzahl der Perioden, ³ber die das Wirtschaftsgut abgeschrieben wird. */
+ Text = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ english ] = "is the number of periods over which the asset is being depreciated (sometimes called the useful life of the asset)." ;
+ Text [ norwegian ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ italian ] = "è il numero di periodi in cui il bene viene deprezzato, definito anche vita utile di un bene." ;
+ Text [ portuguese_brazilian ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ portuguese ] = "é o número de períodos de amortização do bem económico." ;
+ Text [ finnish ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ danish ] = "Levetid. Antallet af perioder over hvilke aktivet afskrives." ;
+ Text [ french ] = "La durée de vie utile du bien ou le nombre de périodes pendant lesquelles le bien est amorti." ;
+ Text [ swedish ] = "Livslängd. Antalet perioder då tillgången avskrivs." ;
+ Text [ dutch ] = "Levensduur. Het aantal termijnen waarover het artikel wordt afgeschreven." ;
+ Text [ spanish ] = "Es el número de períodos durante los cuales se deprecia el bien (a veces llamado vida útil del bien)." ;
+ Text [ english_us ] = "Useful life. The number of periods in the useful life of the asset." ;
+ Text[ chinese_simplified ] = "ʹÓÃÆÚÏÞ¡£×ʲúÕÛ¾ÉÆÚÏÞ¡£";
+ Text[ russian ] = "×èñëî ïåðèîäîâ, çà êîòîðîå àìîðòèçèðóåòñÿ èìóùåñòâî (èíîãäà íàçûâàåìîå âðåìåíåì ïîëíîé àìîðòèçàöèè).";
+ Text[ polish ] = "Liczba okresów, po których œrodek trwa³y ulega amortyzacji.";
+ Text[ japanese ] = "‘Ï—p”N”BŽ‘ŽY‚ðŽg—p‚Å‚«‚é”N”A‚‚܂螋p‚Ì‘ÎۂƂȂ鎑ŽY‚ÌŽõ–½”N”B";
+ Text[ chinese_traditional ] = "¨Ï¥Î¦~­­¡C¸ê²£§é¦~­­¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÝÊÑÇÊ ÇáÊí ÓíÊã ÝíåÇ ÇÓÊåáÇß ÇáãæÌæÏÇÊ.";
+ Text[ dutch ] = "Levensduur. Het aantal termijnen waarover het artikel wordt afgeschreven.";
+ Text[ chinese_simplified ] = "ʹÓÃÆÚÏÞ¡£×ʲúÕÛ¾ÉÆÚÏÞ¡£";
+ Text[ greek ] = "ÄéÜñêåéá ÷ñÞóçò. Ôï ðëÞèïò ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ãßíåé ç áðüóâåóç.";
+ Text[ korean ] = "À¯È¿ÇÑ Á¸¼Ó ±â°£. ÀÚ»êÀÇ À¯È¿ÇÑ Á¸¼Ó ±â°£³»ÀÇ ±â°£ ¼ö";
+ Text[ turkish ] = "Ömür. Varlýk için amortisman ayrýlan dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "P" ;
+ Text [ english ] = "period" ;
+ Text [ norwegian ] = "P" ;
+ Text [ italian ] = "durata" ;
+ Text [ portuguese_brazilian ] = "P" ;
+ Text [ portuguese ] = "Período" ;
+ Text [ finnish ] = "P" ;
+ Text [ danish ] = "P" ;
+ Text [ french ] = "P" ;
+ Text [ swedish ] = "P" ;
+ Text [ dutch ] = "P" ;
+ Text [ spanish ] = "Período" ;
+ Text [ english_us ] = "period" ;
+ Text[ chinese_simplified ] = "period";
+ Text[ russian ] = "Ïåðèîä";
+ Text[ polish ] = "Okres";
+ Text[ japanese ] = "ŠúŠÔ";
+ Text[ chinese_traditional ] = "period";
+ Text[ arabic ] = "Period";
+ Text[ dutch ] = "P";
+ Text[ chinese_simplified ] = "period";
+ Text[ greek ] = "Ðåñßïäïò";
+ Text[ korean ] = "±â°£";
+ Text[ turkish ] = "Dönem";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Periode. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ english ] = "is the period for which you want to calculate the depreciation." ;
+ Text [ norwegian ] = "Periode. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ italian ] = "è il periodo per il quale si desidera calcolare l'ammortamento." ;
+ Text [ portuguese_brazilian ] = "Periode. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ portuguese ] = "é o período de amortização que deseja calcular e tem a mesma unidade de tempo da vida útil." ;
+ Text [ finnish ] = "Periode. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ danish ] = "Periode. Afskrivningensperioden i samme tidsenhed som levetiden." ;
+ Text [ french ] = "La période pour laquelle vous voulez calculer l'amortissement, elle doit être exprimée dans la même unité que la durée de vie du bien." ;
+ Text [ swedish ] = "Period. Perioden för avskrivning i samma tidsenhet som livslängden." ;
+ Text [ dutch ] = "Periode. De afschrijvingsperiode in dezelfde tijdseenheid als de levensduur." ;
+ Text [ spanish ] = "Es el período para el que se desea calcular la depreciación." ;
+ Text [ english_us ] = "Period. The depreciation period in the same time unit as the average useful life entry." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÕ۾ɶîµÄÖÜÆÚ£¬Æäʱ¼äµ¥Î»±ØÐëÓë×ʲúʹÓÃÆÚÏÞµÄʱ¼äµ¥Î»Ïàͬ¡£";
+ Text[ russian ] = "Ïåðèîä, äëÿ êîòîðîãî òðåáóåòñÿ âû÷èñëèòü àìîðòèçàöèþ; äîëæåí èçìåðÿòüñÿ â òåõ æå åäèíèöàõ, ÷òî è âðåìÿ ýêñïëóàòàöèè.";
+ Text[ polish ] = "Okres amortyzacji musi zostaæ wyra¿ony w tych samych jednostkach co argument czas_¿ycia.";
+ Text[ japanese ] = "ŠúŠÔB‘Ï—p”N”‚Æ“¯‚¶’PˆÊ‚ÉŽw’肵‚½Œ¸‰¿ž‹p”ï‚ð‹‚ß‚éŠúB";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä§éÂÂÃBªº¶g´Á¡M¶g´Á¥²¶·»P¸ê²£¥Í©R¶g´Áªº³æ¦ì¬Û¦P¡C";
+ Text[ arabic ] = "ÇáÝÊÑÉ ÇáÊí ÊÑíÏ ÍÓÇÈ ÇáÇÓÊåáÇß ãä ÃÌáåÇ æÇáÊí íÌÈ Ãä ÊÓÊÎÏã äÝÓ æÍÏÇÊ Life.";
+ Text[ dutch ] = "Periode. De afschrijvingsperiode in dezelfde tijdseenheid als de levensduur.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÕ۾ɶîµÄÖÜÆÚ£¬Æäʱ¼äµ¥Î»±ØÐëÓë×ʲúʹÓÃÆÚÏÞµÄʱ¼äµ¥Î»Ïàͬ¡£";
+ Text[ greek ] = "Ðåñßïäïò. Ç ðåñßïäïò ôçò áðüóâåóçò, óôçí ßäéá ìïíÜäá ÷ñüíïõ ìå ôç äéÜñêåéá ÷ñÞóçò";
+ Text[ korean ] = "±â°£. Æò±Õ À¯È¿±â°£ °ú °°Àº ½Ã°£ ´ÜÀ§ÀÇ ÀúÇϱⰣ";
+ Text[ turkish ] = "Dönem. Ömür ile ayný zaman birimine sahip amortisman dönemi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "FA" ;
+ Text [ english ] = "month" ;
+ Text [ norwegian ] = "FA" ;
+ Text [ italian ] = "fattore" ;
+ Text [ portuguese_brazilian ] = "FA" ;
+ Text [ portuguese ] = "Factor" ;
+ Text [ finnish ] = "FA" ;
+ Text [ danish ] = "FA" ;
+ Text [ french ] = "Facteur" ;
+ Text [ swedish ] = "FA" ;
+ Text [ dutch ] = "FA" ;
+ Text [ spanish ] = "Factor" ;
+ Text [ english_us ] = "factor" ;
+ Text[ chinese_simplified ] = "factor";
+ Text[ russian ] = "Êîýôôèöèåíò";
+ Text[ polish ] = "Czynnik";
+ Text[ japanese ] = "—¦";
+ Text[ chinese_traditional ] = "factor";
+ Text[ arabic ] = "Factor";
+ Text[ dutch ] = "FA";
+ Text[ chinese_simplified ] = "factor";
+ Text[ greek ] = "factor";
+ Text[ korean ] = "¿ä¼Ò";
+ Text[ turkish ] = "Faktör";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Faktor. Faktor für die Abnahme der Abschreibung. F = 2 heißt Doppelraten-Abschreibung. : Faktor. Faktor f³r die Abnahme der Abschreibung. F = 2 hei˜t Doppelraten-Abschreibung. */
+ Text = "Faktor. Faktor für die Abnahme der Abschreibung. F = 2 heißt Doppelraten-Abschreibung." ;
+ Text [ english ] = "is the rate at which the balance declines." ;
+ Text [ norwegian ] = "Faktor. Faktor für die Abnahme der Abschreibung. F = 2 heißt Doppelraten-Abschreibung." ;
+ Text [ italian ] = "è il tasso al quale il saldo diminuisce." ;
+ Text [ portuguese_brazilian ] = "Faktor. Faktor für die Abnahme der Abschreibung. F = 2 heißt Doppelraten-Abschreibung." ;
+ Text [ portuguese ] = "é a taxa de declínio do saldo." ;
+ Text [ finnish ] = "Faktor. Faktor für die Abnahme der Abschreibung. F = 2 heißt Doppelraten-Abschreibung." ;
+ Text [ danish ] = "Faktor. Den sats, som saldoen aftager med. F= 2 betyder doppeltsaldometoden." ;
+ Text [ french ] = "Le taux de l'amortissement dégressif. ; F = 2 est la méthode d'amortissement dégressif à taux double." ;
+ Text [ swedish ] = "Faktor. Faktor för minskning av avskrivning. F = 2 betyder dubbel avskrivning." ;
+ Text [ dutch ] = "Factor. Factor voor de snelheid waarmee wordt afgeschreven. FA = 2 betekent afschrijving in dubbele termijnen." ;
+ Text [ spanish ] = "Es la tasa de declinación del saldo." ;
+ Text [ english_us ] = "Factor. The factor for balance decline. F = 2 means a double declining balance factor" ;
+ Text[ chinese_simplified ] = "ΪÓÃÓÚÕ۾ɼÆËãµÄÓà¶îµÝ¼õÒò×Ó¡£F=2 ˵Ã÷²ÉÓõÄÊÇË«±¶Óà¶îµÝ¼õÕ۾ɷ¨¡£";
+ Text[ russian ] = "Íîðìà ñíèæåíèÿ áàëàíñîâîé ñòîèìîñòè. Êîýôôèöèåíò ðàâåí äâóì îçíà÷àåò äâóêðàòíîå ñíèæåíèå áàëàíñîâîé ñòîèìîñòè.";
+ Text[ polish ] = "Wartoœæ steruj¹ca szybkoœci¹, z jak¹ ma maleæ saldo. 2 oznacza metodê podwójnego spadku.";
+ Text[ japanese ] = "—¦BŒ¸‰¿ž‹p—¦‚ðŽw’肵‚Ü‚·B—¦=2‚É‚·‚é‚Æ”{—¦’üŒ¸–@‚ÅŒvŽZ‚ªs‚í‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "¬°§EÃB»¼´î§é¦]¤l¡MF=2 ¬OÂù­¿§EÃB»¼´î§éªk¡C";
+ Text[ arabic ] = "ÇáäÓÈÉ ÇáÊí ÊÊäÇÞÕ ÇáãíÒÇäíÉ ÚäÏåÇ.";
+ Text[ dutch ] = "Factor. Factor voor de snelheid waarmee wordt afgeschreven. FA = 2 betekent afschrijving in dubbele termijnen.";
+ Text[ chinese_simplified ] = "ΪÓÃÓÚÕ۾ɼÆËãµÄÓà¶îµÝ¼õÒò×Ó¡£F=2 ˵Ã÷²ÉÓõÄÊÇË«±¶Óà¶îµÝ¼õÕ۾ɷ¨¡£";
+ Text[ greek ] = "ÐáñÜãïíôáò. ÐáñÜãïíôáò ãéá ôç ìåßùóç ôïõ õðïëïßðïõ. F = 2 óçìáßíåé ìÝèïäïò ôïõ äéðëÜ öèßíïíôïò õðïëïßðïõ.";
+ Text[ korean ] = "¿ä¼Ò. ¼öÁöÇ϶ôÀÇ ¿ä¼Ò. F = 2 ´Â 2Áß ¼öÁö Ç϶ôÀ» ÀǹÌÇÑ´Ù.";
+ Text[ turkish ] = "Faktör. Amortisman bakiyesi faktörü. F = 2, çift azalan bakiye amortismaný anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GDA2 #*=-
+ Resource SC_OPCODE_GDA_2
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet die geometrisch-degressive Abschreibung für eine bestimmte Periode : Berechnet die geometrisch-degressive Abschreibung f³r eine bestimmte Periode */
+ Text = "Berechnet die geometrisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ english ] = "Returns the depreciation of an asset for a specified period using the fixed-declining balance method." ;
+ Text [ norwegian ] = "Berechnet die geometrisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ italian ] = "Restituisce l'ammortamento degressivo geometrico per un periodo specificato." ;
+ Text [ portuguese_brazilian ] = "Berechnet die geometrisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ portuguese ] = "Calcula a amortização de um activo durante um determinado período utilizando o método de redução de saldo fixo." ;
+ Text [ finnish ] = "Berechnet die geometrisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ danish ] = "Beregner afskrivningen for et aktiv i en bestemt periode ved brug af saldometoden." ;
+ Text [ french ] = "Calcule l'amortissement géométrique dégressif pour une période donnée selon un coefficient à spécifier." ;
+ Text [ swedish ] = "Beräknar den geometrisk-degressiva avskrivningen för en bestämd period." ;
+ Text [ dutch ] = "Berekent de geometrisch-degressieve afschrijving voor een bepaalde termijn." ;
+ Text [ spanish ] = "Devuelve la depreciación de un bien durante un período específico usando el método de depreciación de saldo fijo" ;
+ Text [ english_us ] = "Returns the real depreciation of an asset for a specified period using the fixed-declining balance method." ;
+ Text[ chinese_simplified ] = "¼ÆËãÖ¸¶¨ÆÚÏÞÄڵļ¸ºÎµÝ¼õÐÍ(¹Ì¶¨Óà¶îµÝ¼õ·¨)×ʲúÕ۾ɶ";
+ Text[ russian ] = "Âû÷èñëÿåò àìîðòèçàöèþ èìóùåñòâà íà çàäàííûé ïåðèîä, èñïîëüçóÿ ìåòîä ïîñòîÿííîãî ó÷åòà àìîðòèçàöèè.";
+ Text[ polish ] = "Oblicza amortyzacjê œrodka trwa³ego za podany okres metod¹ równomiernie malej¹cego salda.";
+ Text[ japanese ] = "’è—¦–@(Fixed-declining Balance Method)‚ðŽg—p‚µ‚ÄA“Á’è‚ÌŠú‚É‚¨‚¯‚鎑ŽY‚ÌŒ¸‰¿ž‹p”ï‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥Î©T©w§EÃB»¼´îªk­pºâ¬Y¤@¶g´Áªº¸ê²£§é­ȡC";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÇÓÊåáÇß ááãæÌæÏÇÊ Ýí ÝÊÑÉ ÒãäíÉ ãÚíäÉ ÈØÑíÞÉ ÇáÇÓÊåáÇß ÇáãÊäÇÞÕ ÇáËÇÈÊ.";
+ Text[ dutch ] = "Berekent de geometrisch-degressieve afschrijving voor een bepaalde termijn.";
+ Text[ chinese_simplified ] = "¼ÆËãÖ¸¶¨ÆÚÏÞÄڵļ¸ºÎµÝ¼õÐÍ(¹Ì¶¨Óà¶îµÝ¼õ·¨)×ʲúÕ۾ɶ";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ãåùìåôñéêÞ-öèßíïõóá ôéìÞ ôçò áðüóâåóçò ìéáò óõãêåêñéìÝíçò ðåñéüäïõ.";
+ Text[ korean ] = "°íÁ¤ Ç϶ô ¼öÁö ¹æ½ÄÀ» »ç¿ëÇÑ ÁöÁ¤µÈ ±â°£¿¡ ´ëÇÑ ÀÚ»ê Ç׸ñÀÇ °¨°¡»ó°¢À» ¹Ýȯ .";
+ Text[ turkish ] = "Belirli bir dönem için geometrik-azalan amortismaný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_GDA2 );
+ 5; 0; 0; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "AW" ;
+ Text [ english ] = "cost" ;
+ Text [ norwegian ] = "AW" ;
+ Text [ italian ] = "costo" ;
+ Text [ portuguese_brazilian ] = "AW" ;
+ Text [ portuguese ] = "Custo" ;
+ Text [ finnish ] = "AW" ;
+ Text [ danish ] = "KP" ;
+ Text [ french ] = "Coût" ;
+ Text [ swedish ] = "AV" ;
+ Text [ dutch ] = "AW" ;
+ Text [ spanish ] = "Costo" ;
+ Text [ english_us ] = "cost" ;
+ Text[ chinese_simplified ] = "cost";
+ Text[ russian ] = "Íà÷_ñòîèìîñòü";
+ Text[ polish ] = "Cena zakupu";
+ Text[ japanese ] = "Žæ“¾‰¿Šz";
+ Text[ chinese_traditional ] = "cost";
+ Text[ arabic ] = "Cost";
+ Text[ dutch ] = "AW";
+ Text[ chinese_simplified ] = "cost";
+ Text[ greek ] = "cost";
+ Text[ korean ] = "ºñ¿ë";
+ Text[ turkish ] = "Satýnalma maliyeti";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ english ] = "is the initial cost of the asset." ;
+ Text [ norwegian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ italian ] = "è il costo iniziale del bene." ;
+ Text [ portuguese_brazilian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ portuguese ] = "é o valor inicial de aquisição do bem económico." ;
+ Text [ finnish ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ danish ] = "Købspris. Aktivets anskaffelsespris." ;
+ Text [ french ] = "La valeur d'acquisition du bien." ;
+ Text [ swedish ] = "Anskaffningsvärde. Anskaffningskostnader för tillgången." ;
+ Text [ dutch ] = "Aanschafwaarde. De aanschafwaarde van het artikel." ;
+ Text [ spanish ] = "Es el valor inicial del bien." ;
+ Text [ english_us ] = "Acquisition costs: The initial cost of the asset." ;
+ Text[ chinese_simplified ] = "¹ºÂò¼Û¡£×ʲúµÄ¹ºÈë¼Û¡£";
+ Text[ russian ] = "Íà÷àëüíàÿ ñòîèìîñòü èìóùåñòâà.";
+ Text[ polish ] = "Cena zakupu œrodka trwa³ego.";
+ Text[ japanese ] = "Žæ“¾‰¿ŠiBŽ‘ŽY‚ðw“ü‚µ‚½Žž“_‚ł̉¿ŠiB";
+ Text[ chinese_traditional ] = "ÁʶR»ù¡C¸ê²£ªºÁʤJ»ù¡C";
+ Text[ arabic ] = "ÊßÇáíÝ ÔÑÇÁ ÇáãæÌæÏÇÊ.";
+ Text[ dutch ] = "Aanschafwaarde. De aanschafwaarde van het artikel.";
+ Text[ chinese_simplified ] = "¹ºÂò¼Û¡£×ʲúµÄ¹ºÈë¼Û¡£";
+ Text[ greek ] = "Áîßá áðüêôçóçò. Ïé áîßåò áðüêôçóçò ôïõ ðåñéïõóéáêïý óôïé÷åßïõ.";
+ Text[ korean ] = "ȹµæ ºñ¿ë : ÀÚ»êÀÇ Ãʱ⠺ñ¿ë";
+ Text[ turkish ] = "Satýnalma maliyeti. Ýktisadi varlýðýn satýnalma maliyeti.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "RW" ;
+ Text [ english ] = "salvage" ;
+ Text [ norwegian ] = "RW" ;
+ Text [ italian ] = "val_residuo" ;
+ Text [ portuguese_brazilian ] = "RW" ;
+ Text [ portuguese ] = "Valor residual" ;
+ Text [ finnish ] = "RW" ;
+ Text [ danish ] = "RV" ;
+ Text [ french ] = "Valeur_rés" ;
+ Text [ swedish ] = "RV" ;
+ Text [ dutch ] = "RW" ;
+ Text [ spanish ] = "Valor_residual" ;
+ Text [ english_us ] = "salvage" ;
+ Text[ chinese_simplified ] = "salvage";
+ Text[ russian ] = "Îñòàòî÷íàÿ_ñòîèìîñòü";
+ Text[ polish ] = "WartoϾ odzysku";
+ Text[ japanese ] = "Žc‘¶‰¿Šz";
+ Text[ chinese_traditional ] = "salvage";
+ Text[ arabic ] = "Salvage";
+ Text[ dutch ] = "RW";
+ Text[ chinese_simplified ] = "salvage";
+ Text[ greek ] = "Salvage";
+ Text[ korean ] = "³ª¸ÓÁö °ª";
+ Text[ turkish ] = "Hurda";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ english ] = "is the value at the end of the depreciation (sometimes called the salvage value of the asset)." ;
+ Text [ norwegian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ italian ] = "è il valore ottenuto alla fine dell'ammortamento, definito anche valore residuo di un bene." ;
+ Text [ portuguese_brazilian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ portuguese ] = "é o valor restante do bem no final da amortização." ;
+ Text [ finnish ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ danish ] = "Restværdi. Aktivets værdi ved afskrivningens afslutning." ;
+ Text [ french ] = "La valeur résiduelle du bien au terme de l'amortissement." ;
+ Text [ swedish ] = "Restvärde. Det resterande värdet i slutet av livslängden." ;
+ Text [ dutch ] = "Restwaarde. De restwaarde na het verstrijken van de levensduur." ;
+ Text [ spanish ] = "Es el valor al final de la depreciación." ;
+ Text [ english_us ] = "Salvage: The remaining value of the asset at the end of its life." ;
+ Text[ chinese_simplified ] = "Ê£Óà¼ÛÖµ¡£×ʲúÔÚÕÛ¾É(ʹÓÃ)ÆÚÏÞÖÕֹʱµÄÊ£Óà¼ÛÖµ¡£";
+ Text[ russian ] = "Îñòàòî÷íàÿ ñòîèìîñòü â êîíöå ïåðèîäà àìîðòèçàöèè.";
+ Text[ polish ] = "WartoϾ odzysku na koniec okresu amortyzacji.";
+ Text[ japanese ] = "Žc‘¶‰¿ŠzB‘Ï—p”N”‚ªI—¹‚µ‚½Žž“_‚Å‚ÌŽ‘ŽY‚̉¿ŠiB";
+ Text[ chinese_traditional ] = "´Ý­È¡C¨Ï¥Î¦~­­²×¤î®Éªº¸ê²£´Ý­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÊÈÞíÉ ÚäÏ äåÇíÉ ÝÊÑÉ ÇáÇÓÊÎÏÇã.";
+ Text[ dutch ] = "Restwaarde. De restwaarde na het verstrijken van de levensduur.";
+ Text[ chinese_simplified ] = "Ê£Óà¼ÛÖµ¡£×ʲúÔÚÕÛ¾É(ʹÓÃ)ÆÚÏÞÖÕֹʱµÄÊ£Óà¼ÛÖµ¡£";
+ Text[ greek ] = "ÕðïëåéììáôéêÞ áîßá. Ç áðïìÝíïõóá áîßá óôï ôÝëïò ôïõ ÷ñüíïõ ÷ñÞóçò.";
+ Text[ korean ] = "³ª¸ÓÁö °ª : ÀÌ¿ë±â°£ÀÇ Á¾·á½Ã ÀÚ»êÀÇ ³ª¸ÓÁö °ª";
+ Text[ turkish ] = "Hurda. Varlýðýn ömrü tamamlandýðýnda kalan deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "ND" ;
+ Text [ english ] = "life" ;
+ Text [ norwegian ] = "ND" ;
+ Text [ italian ] = "vita_utile" ;
+ Text [ portuguese_brazilian ] = "ND" ;
+ Text [ portuguese ] = "Vida útil" ;
+ Text [ finnish ] = "ND" ;
+ Text [ danish ] = "LT" ;
+ Text [ french ] = "Durée" ;
+ Text [ swedish ] = "LL" ;
+ Text [ dutch ] = "LD" ;
+ Text [ spanish ] = "Vida" ;
+ Text [ english_us ] = "life" ;
+ Text[ chinese_simplified ] = "life";
+ Text[ russian ] = "Âðåìÿ_ýêñïëóàòàöèè";
+ Text[ polish ] = "czas_¿ycia";
+ Text[ japanese ] = "‘Ï—p”N”";
+ Text[ chinese_traditional ] = "life";
+ Text[ arabic ] = "Life";
+ Text[ dutch ] = "LD";
+ Text[ chinese_simplified ] = "life";
+ Text[ greek ] = "Life";
+ Text[ korean ] = "Á¸¼Ó ±â°£";
+ Text[ turkish ] = "Ömür";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird. : Nutzungsdauer. Die Anzahl der Perioden, ³ber die das Wirtschaftsgut abgeschrieben wird. */
+ Text = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ english ] = "is the number of periods over which the asset is being depreciated (sometimes called the useful life of the asset)." ;
+ Text [ norwegian ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ italian ] = "è il numero di periodi in cui il bene viene deprezzato, definito anche vita utile di un bene." ;
+ Text [ portuguese_brazilian ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ portuguese ] = "é o número de períodos de amortização do bem económico." ;
+ Text [ finnish ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ danish ] = "Levetid. Antallet af perioder over hvilke aktivet afskrives." ;
+ Text [ french ] = "La durée de vie utile du bien ou le nombre de périodes pendant lesquelles le bien est amorti." ;
+ Text [ swedish ] = "Livslängd. Antalet perioder då tillgången avskrivs." ;
+ Text [ dutch ] = "Levensduur. Het aantal termijnen waarover het artikel wordt afgeschreven." ;
+ Text [ spanish ] = "Es el número de períodos durante los cuales se deprecia el bien (también conocido como vida útil del bien)." ;
+ Text [ english_us ] = "Useful life. The number of periods in the useful life of the asset." ;
+ Text[ chinese_simplified ] = "ʹÓÃÆÚÏÞ¡£×ʲúÕÛ¾ÉÆÚÏÞ¡£";
+ Text[ russian ] = "×èñëî ïåðèîäîâ, çà êîòîðîå àìîðòèçèðóåòñÿ èìóùåñòâî (èíîãäà íàçûâàåìîå âðåìåíåì ïîëíîé àìîðòèçàöèè).";
+ Text[ polish ] = "Liczba okresów, o których œrodek trwa³y ulega amortyzacji.";
+ Text[ japanese ] = "‘Ï—p”N”BŽ‘ŽY‚ðŽg—p‚Å‚«‚é”N”A‚‚܂螋p‚Ì‘ÎۂƂȂ鎑ŽY‚ÌŽõ–½”N”B";
+ Text[ chinese_traditional ] = "¨Ï¥Î¦~­­¡C¸ê²£§é¦~­­¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÝÊÑÇÊ ÇáÊí ÓíÊã ÝíåÇ ÇÓÊåáÇß ÇáãæÌæÏÇÊ.";
+ Text[ dutch ] = "Levensduur. Het aantal termijnen waarover het artikel wordt afgeschreven.";
+ Text[ chinese_simplified ] = "ʹÓÃÆÚÏÞ¡£×ʲúÕÛ¾ÉÆÚÏÞ¡£";
+ Text[ greek ] = "ÄéÜñêåéá ÷ñÞóçò. Ôï ðëÞèïò ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ãßíåé ç áðüóâåóç.";
+ Text[ korean ] = "À¯È¿ÇÑ Á¸¼Ó±â°£:ÀÚ»êÀÇ À¯È¿ÇÑ Á¸¼Ó±â°£¿¡ À־ ±â°£ÀÇ ¼ö";
+ Text[ turkish ] = "Ömür. Varlýk için amortisman ayrýlan dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "P" ;
+ Text [ english ] = "period" ;
+ Text [ norwegian ] = "P" ;
+ Text [ italian ] = "durata" ;
+ Text [ portuguese_brazilian ] = "P" ;
+ Text [ portuguese ] = "Período" ;
+ Text [ finnish ] = "P" ;
+ Text [ danish ] = "P" ;
+ Text [ french ] = "P" ;
+ Text [ swedish ] = "P" ;
+ Text [ dutch ] = "P" ;
+ Text [ spanish ] = "Período" ;
+ Text [ english_us ] = "period" ;
+ Text[ chinese_simplified ] = "period";
+ Text[ russian ] = "Ïåðèîä";
+ Text[ polish ] = "Okres";
+ Text[ japanese ] = "ŠúŠÔ";
+ Text[ chinese_traditional ] = "period";
+ Text[ arabic ] = "Period";
+ Text[ dutch ] = "P";
+ Text[ chinese_simplified ] = "period";
+ Text[ greek ] = "Ðåñßïäïò";
+ Text[ korean ] = "±â°£";
+ Text[ turkish ] = "Dönem";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Periode. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ english ] = "is the period for which you want to calculate the depreciation." ;
+ Text [ norwegian ] = "Periode. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ italian ] = "è il periodo per il quale si desidera calcolare l'ammortamento." ;
+ Text [ portuguese_brazilian ] = "Periode. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ portuguese ] = "é o período de amortização que deseja calcular e tem a mesma unidade de tempo da vida útil." ;
+ Text [ finnish ] = "Periode. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ danish ] = "Periode. Afskrivningensperioden i samme tidsenhed som levetiden." ;
+ Text [ french ] = "La période pour laquelle vous voulez calculer l'amortissement, elle doit être exprimée dans la même unité que la durée de vie du bien." ;
+ Text [ swedish ] = "Period. Perioden för avskrivning i samma tidsenhet som livslängden." ;
+ Text [ dutch ] = "Periode. De afschrijvingsperiode in dezelfde tijdseenheid als de levensduur." ;
+ Text [ spanish ] = "Es el período para el que se desea calcular la depreciación." ;
+ Text [ english_us ] = "Periods: The period for which the depreciation is calculated. The time unit used for period must be the same as that for the useful life." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÕ۾ɶîµÄÖÜÆÚ£¬Æäʱ¼äµ¥Î»±ØÐëÓë×ʲúʹÓÃÆÚÏÞµÄʱ¼äµ¥Î»Ïàͬ¡£";
+ Text[ russian ] = "Ïåðèîä, äëÿ êîòîðîãî òðåáóåòñÿ âû÷èñëèòü àìîðòèçàöèþ è äîëæåí èçìåðÿòüñÿ â òåõ æå åäèíèöàõ, ÷òî è âðåìÿ ýêñïëóàòàöèè.";
+ Text[ polish ] = "Okres amortyzacji musi byæ wyra¿ony w tych samych jednostkach co argument czas_¿ycia.";
+ Text[ japanese ] = "ŠúŠÔB‘Ï—p”N”‚Æ“¯‚¶’PˆÊ‚ÉŽw’肵‚½Œ¸‰¿ž‹p”ï‚ð‹‚ß‚éŠúB";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä§éÂÂÃBªº¶g´Á¡M¶g´Á¥²¶·»P¸ê²£¥Í©R¶g´Áªº³æ¦ì¬Û¦P¡C";
+ Text[ arabic ] = "ÇáÝÊÑÉ ÇáÊí ÊÑíÏ ÍÓÇÈ ÇáÇÓÊåáÇß ãä ÃÌáåÇ æÇáÊí íÌÈ Ãä ÊÓÊÎÏã äÝÓ æÍÏÇÊ Life.";
+ Text[ dutch ] = "Periode. De afschrijvingsperiode in dezelfde tijdseenheid als de levensduur.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÕ۾ɶîµÄÖÜÆÚ£¬Æäʱ¼äµ¥Î»±ØÐëÓë×ʲúʹÓÃÆÚÏÞµÄʱ¼äµ¥Î»Ïàͬ¡£";
+ Text[ greek ] = "Ðåñßïäïò. Ç ðåñßïäïò ôçò áðüóâåóçò, óôçí ßäéá ìïíÜäá ÷ñüíïõ ìå ôç äéÜñêåéá ÷ñÞóçò.";
+ Text[ korean ] = "±â°£: °¨°¡ »ó°¢ °è»êÀ» À§ÇÑ ±â°£. ±â°£À¸·Î »ç¿ëµÈ ½Ã°£ ´ÜÀ§´Â ¹Ýµå½Ã À¯È¿ÇÑ Á¸¼Ó±â°£°ú °°¾Æ¾ß ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Dönem. Ömür ile ayný zaman birimine sahip amortisman dönemi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "MA" ;
+ Text [ english ] = "month" ;
+ Text [ norwegian ] = "MA" ;
+ Text [ italian ] = "mese" ;
+ Text [ portuguese_brazilian ] = "MA" ;
+ Text [ portuguese ] = "Mês" ;
+ Text [ finnish ] = "MA" ;
+ Text [ danish ] = "MÅ" ;
+ Text [ french ] = "Mois" ;
+ Text [ swedish ] = "MÅ" ;
+ Text [ dutch ] = "MA" ;
+ Text [ spanish ] = "Mes" ;
+ Text [ english_us ] = "month" ;
+ Text[ chinese_simplified ] = "month";
+ Text[ russian ] = "Ìåñÿö";
+ Text[ polish ] = "Miesi¹c";
+ Text[ japanese ] = "ŒŽ";
+ Text[ chinese_traditional ] = "month";
+ Text[ arabic ] = "Month";
+ Text[ dutch ] = "MA";
+ Text[ chinese_simplified ] = "month";
+ Text[ greek ] = "Month";
+ Text[ korean ] = "¿ù";
+ Text[ turkish ] = "Ay";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ Text = "Monate. Die Anzahl der Monate im ersten Jahr der Abschreibung." ;
+ Text [ english ] = "is the number of months in the first year." ;
+ Text [ norwegian ] = "Monate. Die Anzahl der Monate im ersten Jahr der Abschreibung." ;
+ Text [ italian ] = "è il numero di mesi nel primo anno." ;
+ Text [ portuguese_brazilian ] = "Monate. Die Anzahl der Monate im ersten Jahr der Abschreibung." ;
+ Text [ portuguese ] = "é o número de meses no primeiro ano da amortização." ;
+ Text [ finnish ] = "Monate. Die Anzahl der Monate im ersten Jahr der Abschreibung." ;
+ Text [ danish ] = "Måneder. Antallet af måneder i det første år af afskrivningen." ;
+ Text [ french ] = "Le nombre de mois de la première année de l'amortissement." ;
+ Text [ swedish ] = "Månader. Antalet månader på det första avskrivningsåret." ;
+ Text [ dutch ] = "Maanden. Het aantal maanden in het eerste jaar van de afschrijving." ;
+ Text [ spanish ] = "Es el número de meses del primer año; si se omite, se asume que es 12." ;
+ Text [ english_us ] = "Months: The number of months in the first year of depreciation." ;
+ Text[ chinese_simplified ] = "Ô·ÝÊý¡£½øÐÐÕ۾ɼÆËãµÄÊ×ÄêÔ·ÝÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ìåñÿöåâ â ïåðâîì ãîäó àìîðòèçàöèè.";
+ Text[ polish ] = "Liczba miesiêcy w pierwszym roku amortyzacji œrodków trwa³ych.";
+ Text[ japanese ] = "ŒŽBŽ‘ŽY‚ðw“ü‚µ‚½”N‚ÌŒŽ”B";
+ Text[ chinese_traditional ] = "¤ë¥÷¼Æ¡C¶i¦æ§é­pºâªº­º¦~¤ë¥÷¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÔåÑ Ýí ÇáÓäÉ ÇáÃæáì ãä ÇáÇÓÊåáÇß.";
+ Text[ dutch ] = "Maanden. Het aantal maanden in het eerste jaar van de afschrijving.";
+ Text[ chinese_simplified ] = "Ô·ÝÊý¡£½øÐÐÕ۾ɼÆËãµÄÊ×ÄêÔ·ÝÊý¡£";
+ Text[ greek ] = "ÌÞíåò. Ôï ðëÞèïò ôùí ìçíþí óôïí ðñþôï ÷ñüíï ôçò áðüóâåóçò.";
+ Text[ korean ] = "¿ù: °¨°¡ »ó°¢ ÀÇ Ã¹¹ø° ³âµµÀÇ ¿ù¼ö";
+ Text[ turkish ] = "Ay. Ýlk amortisman yýlýndaki ay sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VDB #*=-
+ Resource SC_OPCODE_VBD
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Variable declining balance. Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode : Variable declining balance. Berechnet die arithmetisch-degressive Abschreibung f³r eine bestimmte Periode */
+ Text = "Variable declining balance. Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ english ] = "Returns the depreciation of an asset for any period you specify, including partial periods, using the double-declining balance method or some other method you specify." ;
+ Text [ norwegian ] = "Variable declining balance. Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ italian ] = "Restituisce l'ammortamento aritmetico degressivo per un determinato periodo (variable declining balance)." ;
+ Text [ portuguese_brazilian ] = "Variable declining balance. Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ portuguese ] = "Devolve a amortização aritmética degressiva para um período determinado, usando o método do balanço decrescente duplo." ;
+ Text [ finnish ] = "Variable declining balance. Berechnet die arithmetisch-degressive Abschreibung für eine bestimmte Periode" ;
+ Text [ danish ] = "Variabel saldoafskrivning. Beregner afskrivningen på et aktiv i en angivet periode ved brug af dobbeltsaldometoden." ;
+ Text [ french ] = "'Variable declining balance' Calcule l'amortissement arithmétique dégressif pour une période spécifiée." ;
+ Text [ swedish ] = "Variable declining balance. Beräknar den aritmetisk-degressiva avskrivningen för en bestämd period." ;
+ Text [ dutch ] = "Variable declining balance, Berekent de afschrijving van activa over een bepaalde periode met behulp van de \"variable declining balance\"-methode.." ;
+ Text [ spanish ] = "Devuelve la depreciación de un bien, usando el método de depreciación por doble disminución del saldo, durante un período especificado" ;
+ Text [ english_us ] = "Variable declining balance. Returns the declining balance depreciation for a particular period." ;
+ Text[ chinese_simplified ] = "¿É±äÓà¶îµÝ¼õ·¨¡£¼ÆËãÖ¸¶¨ÆÚ¼äÄÚµÄËãÊõµÝ¼õÐÍ×ʲúÕ۾ɶ";
+ Text[ russian ] = "Âîçâðàùàåò âåëè÷èíó àìîðòèçàöèè èìóùåñòâà äëÿ ÿâíî óêàçàííîãî èëè ñîîòâåòñòâóþùåãî ïåðèîäà ïðè èñïîëüçîâàíèè ìåòîäà ðàçîâîãî ó÷åòà àìîðòèçàöèè.";
+ Text[ polish ] = "Oblicza amortyzacjê œrodka trwa³ego za podany okres lub jego czêœæ metod¹ malej¹cego salda.";
+ Text[ japanese ] = "VDB ‚ÍAVariable Declining Balance ‚ð•\\‚µ‚Ü‚·B”{—¦’üŒ¸–@‚Ü‚½‚ÍŽw’肳‚ꂽ•û–@‚ðŽg—p‚µ‚ÄAŽw’肳‚ꂽŠúŠÔ‚É‚¨‚¯‚鎑ŽY‚ÌŒ¸‰¿ž‹p”ï‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥iÅܧEÃB»¼´îªk¡C­pºâ«ü©w´Á¶¡¤ºªº¸ê²£§éÂÂÃB¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇÓÊåáÇß ÇáãæÌæÏÇÊ Ýí ÝÊÑÉ ãÍÏÏÉ¡ ÈÇÓÊÎÏÇã ØÑíÞÉ ÇáÇÓÊåáÇß ÇáãÊäÇÞÕ ÇáãÒÏæÌ.";
+ Text[ dutch ] = "Variable declining balance, Berekent de afschrijving van activa over een bepaalde periode met behulp van de \"variable declining balance\"-methode..";
+ Text[ chinese_simplified ] = "¿É±äÓà¶îµÝ¼õ·¨¡£¼ÆËãÖ¸¶¨ÆÚ¼äÄÚµÄËãÊõµÝ¼õÐÍ×ʲúÕ۾ɶ";
+ Text[ greek ] = "\"Variable declining balance\". Õðïëïãßæåé ôçí áñéèìçôéêÞ-öèßíïõóá áðüóâåóç ìéáò óõãêåêñéìÝíçò ðåñéüäïõ.";
+ Text[ korean ] = "¼öÁöÇ϶ô º¯¼ö. ƯÁ¤±â°£¿¡ ´ëÇÑ ¼öÁö Ç϶ô °¨°¡ »ó°¢À» ¹Ýȯ.";
+ Text[ turkish ] = "Deðiþken azalan bakiye. Belirli bir dönem için aritmetik-azalan amortismaný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_VDB );
+ 7; 0; 0; 0; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "AW" ;
+ Text [ english ] = "cost" ;
+ Text [ norwegian ] = "AW" ;
+ Text [ italian ] = "costo" ;
+ Text [ portuguese_brazilian ] = "AW" ;
+ Text [ portuguese ] = "Custo" ;
+ Text [ finnish ] = "AW" ;
+ Text [ danish ] = "KP" ;
+ Text [ french ] = "Coût" ;
+ Text [ swedish ] = "AV" ;
+ Text [ dutch ] = "AW" ;
+ Text [ spanish ] = "costo" ;
+ Text [ english_us ] = "cost" ;
+ Text[ chinese_simplified ] = "cost";
+ Text[ russian ] = "Ëèêâ_ñòîèìîñòü";
+ Text[ polish ] = "Cena zakupu";
+ Text[ japanese ] = "Žæ“¾‰¿Šz";
+ Text[ chinese_traditional ] = "cost";
+ Text[ arabic ] = "Cost";
+ Text[ dutch ] = "AW";
+ Text[ chinese_simplified ] = "cost";
+ Text[ greek ] = "cost";
+ Text[ korean ] = "ºñ¿ë";
+ Text[ turkish ] = "Satýnalma maliyeti";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ english ] = "is the initial cost of the asset." ;
+ Text [ norwegian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ italian ] = "è il costo iniziale del bene." ;
+ Text [ portuguese_brazilian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ portuguese ] = "é o custo inicial do activo." ;
+ Text [ finnish ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
+ Text [ danish ] = "Købspris. Aktivets anskaffelsespris." ;
+ Text [ french ] = "La valeur d'acquisition du bien." ;
+ Text [ swedish ] = "Anskaffningsvärde. Anskaffningskostnaderna för tillgången." ;
+ Text [ dutch ] = "De aanschafwaarde van het artikel." ;
+ Text [ spanish ] = "es el costo inicial del bien." ;
+ Text [ english_us ] = "Cost. The initial cost of the asset." ;
+ Text[ chinese_simplified ] = "¹ºÂò¼Û¡£×ʲúµÄ¹ºÈë¼Û¡£";
+ Text[ russian ] = "Íà÷àëüíàÿ ñòîèìîñòü îñíîâíûõ ôîíäîâ.";
+ Text[ polish ] = "Cena zakupu œrodka trwa³ego.";
+ Text[ japanese ] = "Žæ“¾‰¿ŠzBŽ‘ŽY‚ðw“ü‚µ‚½Žž“_‚ł̉¿ŠiB";
+ Text[ chinese_traditional ] = "ÁʶR»ù¡C¸ê²£ªºÁʤJ»ù¡C";
+ Text[ arabic ] = "ÊßÇáíÝ ÔÑÇÁ ÇáãæÌæÏÇÊ.";
+ Text[ dutch ] = "De aanschafwaarde van het artikel.";
+ Text[ chinese_simplified ] = "¹ºÂò¼Û¡£×ʲúµÄ¹ºÈë¼Û¡£";
+ Text[ greek ] = "Áîßá áðüêôçóçò. Ïé áîßåò áðüêôçóçò ôïõ ðåñéïõóéáêïý óôïé÷åßïõ.";
+ Text[ korean ] = "±¸ÀÔ °¡Ä¡. ÀÚ»êÀÇ ±¸ÀÔ ºñ¿ëÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Satýnalma maliyeti. Ýktisadi varlýðýn satýnalma maliyeti.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "RW" ;
+ Text [ english ] = "salvage" ;
+ Text [ norwegian ] = "RW" ;
+ Text [ italian ] = "val_residuo" ;
+ Text [ portuguese_brazilian ] = "RW" ;
+ Text [ portuguese ] = "Val_residual" ;
+ Text [ finnish ] = "RW" ;
+ Text [ danish ] = "RV" ;
+ Text [ french ] = "Valeur_rés" ;
+ Text [ swedish ] = "RV" ;
+ Text [ dutch ] = "RW" ;
+ Text [ spanish ] = "valor_residual" ;
+ Text [ english_us ] = "salvage" ;
+ Text[ chinese_simplified ] = "salvage";
+ Text[ russian ] = "Îñò_ñòîèì";
+ Text[ polish ] = "Odzysk";
+ Text[ japanese ] = "Žc‘¶‰¿Šz";
+ Text[ chinese_traditional ] = "salvage";
+ Text[ arabic ] = "Salvage";
+ Text[ dutch ] = "RW";
+ Text[ chinese_simplified ] = "salvage";
+ Text[ greek ] = "Salvage";
+ Text[ korean ] = "³ª¸ÓÁö °ª";
+ Text[ turkish ] = "Hurda";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ english ] = "is the value at the end of the depreciation (sometimes called the salvage value of the asset)." ;
+ Text [ norwegian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ italian ] = "è il valore ottenuto alla fine dell'ammortamento, definito anche valore residuo di un bene." ;
+ Text [ portuguese_brazilian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ portuguese ] = "é o valor do activo no fim da amortização." ;
+ Text [ finnish ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
+ Text [ danish ] = "Restværdi. Aktivets værdi ved afskrivningens afslutning." ;
+ Text [ french ] = "La valeur résiduelle du bien au terme de l'amortissement." ;
+ Text [ swedish ] = "Restvärde. Det resterande värdet i slutet av livslängden." ;
+ Text [ dutch ] = "De restwaarde aan het einde van de levensduur." ;
+ Text [ spanish ] = "es el valor al final de la depreciación." ;
+ Text [ english_us ] = "Salvage. The salvage value of an asset at the end of its useful life." ;
+ Text[ chinese_simplified ] = "Ê£Óà¼ÛÖµ¡£×ʲúÔÚÕÛ¾É(ʹÓÃ)ÆÚÏÞÖÕֹʱµÄÊ£Óà¼ÛÖµ¡£";
+ Text[ russian ] = "Îñòàòî÷íàÿ ñòîèìîñòü â êîíöå ïåðèîäà àìîðòèçàöèè.";
+ Text[ polish ] = "Odzysk: Wartoœæ koñcowa po amortyzacji.";
+ Text[ japanese ] = "Žc‘¶‰¿Šz¡ ‘Ï—p”N”‚ªI—¹‚µ‚½Žž“_‚Å‚ÌŽ‘ŽY‚̉¿ŠiB";
+ Text[ chinese_traditional ] = "´Ý­È¡C¨Ï¥Î¦~­­²×¤î®Éªº¸ê²£´Ý­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÊÈÞíÉ ÚäÏ äåÇíÉ ÝÊÑÉ ÇáÇÓÊÎÏÇã.";
+ Text[ dutch ] = "De restwaarde aan het einde van de levensduur.";
+ Text[ chinese_simplified ] = "Ê£Óà¼ÛÖµ¡£×ʲúÔÚÕÛ¾É(ʹÓÃ)ÆÚÏÞÖÕֹʱµÄÊ£Óà¼ÛÖµ¡£";
+ Text[ greek ] = "ÕðïëåéììáôéêÞ áîßá. Ç áðïìÝíïõóá áîßá óôï ôÝëïò ôïõ ÷ñüíïõ ÷ñÞóçò.";
+ Text[ korean ] = "³ª¸ÓÁö °ª. À¯È¿ÇÑ ÀÌ¿ë±â°£ÀÇ Á¾·á ½Ã ÀÚ»êÀÇ ³ª¸ÓÁö °ª";
+ Text[ turkish ] = "Hurda. Varlýðýn ömrü tamamlandýðýnda kalan deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "ND" ;
+ Text [ english ] = "life" ;
+ Text [ norwegian ] = "ND" ;
+ Text [ italian ] = "vita_utile" ;
+ Text [ portuguese_brazilian ] = "ND" ;
+ Text [ portuguese ] = "Vida_útil" ;
+ Text [ finnish ] = "ND" ;
+ Text [ danish ] = "LT" ;
+ Text [ french ] = "Durée" ;
+ Text [ swedish ] = "LL" ;
+ Text [ dutch ] = "LD" ;
+ Text [ spanish ] = "vida" ;
+ Text [ english_us ] = "life" ;
+ Text[ chinese_simplified ] = "life";
+ Text[ russian ] = "Âðåìÿ_ïîëí_àìîðò";
+ Text[ polish ] = "czas_¿ycia";
+ Text[ japanese ] = "‘Ï—p”N”";
+ Text[ chinese_traditional ] = "life";
+ Text[ arabic ] = "Life";
+ Text[ dutch ] = "LD";
+ Text[ chinese_simplified ] = "life";
+ Text[ greek ] = "Life";
+ Text[ korean ] = "Á¸¼Ó±â°£";
+ Text[ turkish ] = "Ömür";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird. : Nutzungsdauer. Die Anzahl der Perioden, ³ber die das Wirtschaftsgut abgeschrieben wird. */
+ Text = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ english ] = "is the number of periods over which the asset is being depreciated (sometimes called the useful life of the asset)." ;
+ Text [ norwegian ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ italian ] = "è il numero di periodi in cui il bene viene ammortizzato, definito anche vita utile di un bene." ;
+ Text [ portuguese_brazilian ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ portuguese ] = "é o número de períodos de amortização do activo." ;
+ Text [ finnish ] = "Nutzungsdauer. Die Anzahl der Perioden, über die das Wirtschaftsgut abgeschrieben wird." ;
+ Text [ danish ] = "Levetid. Antallet af perioder over hvilke aktivet afskrives." ;
+ Text [ french ] = "La durée de vie utile du bien ou le nombre de périodes pendant lesquelles le bien est amorti." ;
+ Text [ swedish ] = "Livslängd. Antalet perioder då tillgången avskrivs." ;
+ Text [ dutch ] = "Levensduur. Het aantal termijnen waarover het artikel wordt afgeschreven." ;
+ Text [ spanish ] = "es el número de períodos durante los que ocurre la depreciación del bien (también conocido como vida útil del bien)." ;
+ Text [ english_us ] = "Useful life. The number of periods in the useful life of the asset." ;
+ Text[ chinese_simplified ] = "ʹÓÃÆÚÏÞ¡£×ʲúÕÛ¾ÉÆÚÏÞ¡£";
+ Text[ russian ] = "×èñëî ïåðèîäîâ, çà êîòîðîå àìîðòèçèðóåòñÿ èìóùåñòâî (èíîãäà íàçûâàåìîå âðåìåíåì ïîëíîé àìîðòèçàöèè)";
+ Text[ polish ] = "Liczba okresów, po których œrodek trwa³y ulega amortyzacji.";
+ Text[ japanese ] = "‘Ï—p”N”¡ Ž‘ŽY‚ðŽg—p‚Å‚«‚é”N”A‚‚܂螋p‚Ì‘ÎۂƂȂ鎑ŽY‚ÌŽõ–½”N”B";
+ Text[ chinese_traditional ] = "¨Ï¥Î¦~­­¡C¸ê²£§é¦~­­¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÝÊÑÇÊ ÇáÊí ÓíÊã ÝíåÇ ÇÓÊåáÇß ÇáãæÌæÏÇÊ.";
+ Text[ dutch ] = "Levensduur. Het aantal termijnen waarover het artikel wordt afgeschreven.";
+ Text[ chinese_simplified ] = "ʹÓÃÆÚÏÞ¡£×ʲúÕÛ¾ÉÆÚÏÞ¡£";
+ Text[ greek ] = "ÄéÜñêåéá ÷ñÞóçò. Ôï ðëÞèïò ôùí ðåñéüäùí êáôÜ ôï ïðïßï èá ãßíåé ç áðüóâåóç.";
+ Text[ korean ] = "À¯È¿ÇÑ Á¸¼Ó±â°£:ÀÚ»êÀÇ À¯È¿ÇÑ Á¸¼Ó±â°£¿¡ À־ ±â°£ÀÇ ¼ö";
+ Text[ turkish ] = "Ömür. Varlýk için amortisman ayrýlan dönem sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "A" ;
+ Text [ english ] = "start_period" ;
+ Text [ norwegian ] = "A" ;
+ Text [ italian ] = "inizio" ;
+ Text [ portuguese_brazilian ] = "A" ;
+ Text [ portuguese ] = "Período_inicial" ;
+ Text [ finnish ] = "A" ;
+ Text [ danish ] = "Start" ;
+ Text [ french ] = "Période_début" ;
+ Text [ swedish ] = "Start" ;
+ Text [ dutch ] = "B" ;
+ Text [ spanish ] = "período_inicial" ;
+ Text [ english_us ] = "S" ;
+ Text[ chinese_simplified ] = "start_period";
+ Text[ russian ] = "Íà÷_ïåðèîä";
+ Text[ polish ] = "okres_pocz";
+ Text[ japanese ] = "ŠJŽnŠú";
+ Text[ chinese_traditional ] = "start_period";
+ Text[ arabic ] = "Start_period";
+ Text[ dutch ] = "B";
+ Text[ chinese_simplified ] = "start_period";
+ Text[ greek ] = "start_period";
+ Text[ korean ] = "S";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "B";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Anfang. Die erste Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ english ] = "is the starting period for which you want to calculate the depreciation." ;
+ Text [ norwegian ] = "Anfang. Die erste Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ italian ] = "è il periodo iniziale per il quale si desidera calcolare l'ammortamento." ;
+ Text [ portuguese_brazilian ] = "Anfang. Die erste Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ portuguese ] = "é o período inicial para o cálculo da amortização" ;
+ Text [ finnish ] = "Anfang. Die erste Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ danish ] = "Start. Den første afskrivningsperiode i samme tidsenhed som levetiden." ;
+ Text [ french ] = "La première période de l'amortissement dans la même unité que la durée." ;
+ Text [ swedish ] = "Start. Den första perioden för avskrivningen i samma tidsenhet som livslängden." ;
+ Text [ dutch ] = "Begin. De eerste periode van de afschrijving in dezelfde tijdeenheid als de levensduur." ;
+ Text [ spanish ] = "es el período inicial para el que desea calcular la amortización." ;
+ Text [ english_us ] = "Start. The first period for depreciation in the same time unit as the useful life." ;
+ Text[ chinese_simplified ] = "½øÐÐÕ۾ɼÆËãµÄÆðʼÖÜÆÚ£¬ÆðʼÖÜÆÚ±ØÐëÓë×ʲúʹÓÃÆÚÏÞµÄʱ¼äµ¥Î»Ïàͬ¡£";
+ Text[ russian ] = "Íà÷àëüíûé ïåðèîä, ñ êîòîðîãî âû÷èñëÿåòñÿ àìîðòèçàöèÿ, â òåõ æå åäèíèöàõ ÷òî è ïåðèîä àìîðòèçàöèè.";
+ Text[ polish ] = "Jest okresem pocz¹tkowym, dla którego ma zostaæ obliczona amortyzacja.";
+ Text[ japanese ] = "ŠJŽnŠú¡ Œ¸‰¿ž‹p”ï‚ÌŒvŽZ‚Ì‘ÎÛ‚Æ‚È‚éʼn‚ÌŠú‚ðŽw’肵‚Ü‚·BŠJŽnŠú‚Í‘Ï—p”N”‚Æ“¯‚¶’PˆÊ‚ÅŽw’肵‚Ä‚­‚¾‚³‚¢¡";
+ Text[ chinese_traditional ] = "°õ¦æ§é­pºâªº°_©l¶g´Á¡M°_©l¶g´Á¥²¶·»P¸ê²£ªº¨Ï¥Î¶g´Áªº³æ¦ì¬Û¦P¡C";
+ Text[ arabic ] = "Ãæá ÝÊÑÉ ÊÑíÏ ÍÓÇÈ ÇáÇÓÊåáÇß ÝíåÇ.";
+ Text[ dutch ] = "Begin. De eerste periode van de afschrijving in dezelfde tijdeenheid als de levensduur.";
+ Text[ chinese_simplified ] = "½øÐÐÕ۾ɼÆËãµÄÆðʼÖÜÆÚ£¬ÆðʼÖÜÆÚ±ØÐëÓë×ʲúʹÓÃÆÚÏÞµÄʱ¼äµ¥Î»Ïàͬ¡£";
+ Text[ greek ] = "Áñ÷Þ. Ç ðñþôç ðåñßïäïò ôçò áðüóâåóçò óôçí ßäéá ìïíÜäá ÷ñüíïõ ìå ôçí äéÜñêåéá ÷ñÞóçò.";
+ Text[ korean ] = "½ÃÀÛ. À¯È¿ÇÑ ÀÌ¿ë±â°£ °ú °°Àº ½Ã°£ ´ÜÀ§¿¡¼­ °¨°¡ »ó°¢¿¡ ´ëÇÑ Ã¹¹ø° ±â°£";
+ Text[ turkish ] = "Ýlk dönem. Ömür ile ayný zaman birimine sahip ilk amortisman dönemi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "E" ;
+ Text [ english ] = "end_period" ;
+ Text [ norwegian ] = "E" ;
+ Text [ italian ] = "fine" ;
+ Text [ portuguese_brazilian ] = "E" ;
+ Text [ portuguese ] = "Período_final" ;
+ Text [ finnish ] = "E" ;
+ Text [ danish ] = "Slut" ;
+ Text [ french ] = "Période_fin" ;
+ Text [ swedish ] = "Slut" ;
+ Text [ dutch ] = "E" ;
+ Text [ spanish ] = "período_final" ;
+ Text [ english_us ] = "end" ;
+ Text[ chinese_simplified ] = "End_period";
+ Text[ russian ] = "Êîí_ïåðèîä";
+ Text[ polish ] = "okres_koñc";
+ Text[ japanese ] = "I—¹Šú";
+ Text[ chinese_traditional ] = "end_period";
+ Text[ arabic ] = "End_period";
+ Text[ dutch ] = "E";
+ Text[ chinese_simplified ] = "End_period";
+ Text[ greek ] = "end_period";
+ Text[ korean ] = "Á¾·á";
+ Text[ turkish ] = "S";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ Text = "Ende. Die letzte Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ english ] = "is the ending period for which you want to calculate the depreciation." ;
+ Text [ norwegian ] = "Ende. Die letzte Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ italian ] = "è il periodo finale per il quale si desidera calcolare l'ammortamento." ;
+ Text [ portuguese_brazilian ] = "Ende. Die letzte Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ portuguese ] = "é o período final para o qual se deseja calcular a amortização." ;
+ Text [ finnish ] = "Ende. Die letzte Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
+ Text [ danish ] = "Slut. Den sidste afskrivningsperiode i samme tidsenhed som levetiden." ;
+ Text [ french ] = "Représente la dernière période de l'amortissement. L'unité de temps est identique à la période d'utilisation." ;
+ Text [ swedish ] = "Slut. Den sista perioden för avskrivningen i samma tidsenhet som livslängden." ;
+ Text [ dutch ] = "Einde. De laatste periode van de afschrijving in dezelfde tijdseenheid als de levensduur." ;
+ Text [ spanish ] = "es el período final para el que desea calcular la depreciación." ;
+ Text [ english_us ] = "End. The last period of the depreciation using the same time unit as for the useful life." ;
+ Text[ chinese_simplified ] = "½øÐÐÕ۾ɼÆËãµÄ½ØÖ¹ÖÜÆÚ£¬½ØÖ¹ÖÜÆÚ±ØÐëÓë×ʲúʹÓÃÆÚÏÞµÄʱ¼äµ¥Î»Ïàͬ¡£";
+ Text[ russian ] = "Êîíå÷íûé ïåðèîä, äëÿ êîòîðîãî íåîáõîäèìî âû÷èñëèòü àìîðòèçàöèþ, â òåõ æå åäèíèöàõ, ÷òî è ïåðèîä àìîðòèçàöèè.";
+ Text[ polish ] = "Okres koñcowy, dla którego ma zostaæ obliczona amortyzacja.";
+ Text[ japanese ] = "I—¹ŠúBI—¹Šú‚É‚ÍŒ¸‰¿ž‹p”ï‚Ì‘ÎÛ‚Æ‚È‚éÅŒã‚ÌŠú‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¶i¦æ§é­pºâªººI¤î¶g´Á¡MºI¤î¶g´Á¥²¶·»P¸ê²£ªº¨Ï¥Î¶g´Áªº³æ¦ì¬Û¦P¡C";
+ Text[ arabic ] = "ÃÎÑ ÝÊÑÉ ÊÑíÏ ÍÓÇÈ ÇáÇÓÊåáÇß ÝíåÇ.";
+ Text[ dutch ] = "Einde. De laatste periode van de afschrijving in dezelfde tijdseenheid als de levensduur.";
+ Text[ chinese_simplified ] = "½øÐÐÕ۾ɼÆËãµÄ½ØÖ¹ÖÜÆÚ£¬½ØÖ¹ÖÜÆÚ±ØÐëÓë×ʲúʹÓÃÆÚÏÞµÄʱ¼äµ¥Î»Ïàͬ¡£";
+ Text[ greek ] = "ËÞîç. Ç ôåëåõôáßá ðåñßïäïò ôçò áðüóâåóçò óôçí ßäéá ìïíÜäá ÷ñüíïõ ìå ôçí äéÜñêåéá ÷ñÞóçò.";
+ Text[ korean ] = "ÃÖÁ¾. ÀÌ¿ë±â°£°ú °°Àº ½Ã°£´ÜÀ§·Î °¨°¡»ó°¢ÇÏ´Â ¸¶Áö¸· ±âÇÑÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Son dönem. Ömür ile ayný zaman birimine sahip son amortisman dönemi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 12 // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ // Name of Parameter 6
+ {
+ Text = "FA" ;
+ Text [ english ] = "factor" ;
+ Text [ norwegian ] = "FA" ;
+ Text [ italian ] = "fattore" ;
+ Text [ portuguese_brazilian ] = "FA" ;
+ Text [ portuguese ] = "Factor" ;
+ Text [ finnish ] = "FA" ;
+ Text [ danish ] = "FA" ;
+ Text [ french ] = "Facteur" ;
+ Text [ swedish ] = "FA" ;
+ Text [ dutch ] = "FA" ;
+ Text [ spanish ] = "factor" ;
+ Text [ english_us ] = "factor" ;
+ Text[ chinese_simplified ] = "factor";
+ Text[ russian ] = "Êîýôôèöèåíò";
+ Text[ polish ] = "Czynnik";
+ Text[ japanese ] = "—¦";
+ Text[ chinese_traditional ] = "factor";
+ Text[ arabic ] = "Factor";
+ Text[ dutch ] = "FA";
+ Text[ chinese_simplified ] = "factor";
+ Text[ greek ] = "factor";
+ Text[ korean ] = "¿ä¼Ò";
+ Text[ turkish ] = "Faktör";
+ Text[ language_user1 ] = " ";
+ };
+ String 13 // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ // Description of Parameter 6
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Faktor. Faktor für die Abnahme der Abschreibung. F = 2 heißt Doppelraten-Abschreibung. : Faktor. Faktor f³r die Abnahme der Abschreibung. F = 2 hei˜t Doppelraten-Abschreibung. */
+ Text = "Faktor. Faktor für die Abnahme der Abschreibung. F = 2 heißt Doppelraten-Abschreibung." ;
+ Text [ english ] = "is the rate at which the balance declines." ;
+ Text [ norwegian ] = "Faktor. Faktor für die Abnahme der Abschreibung. F = 2 heißt Doppelraten-Abschreibung." ;
+ Text [ italian ] = "è il tasso di diminuzione delle quote proporzionali ai valori residui." ;
+ Text [ portuguese_brazilian ] = "Faktor. Faktor für die Abnahme der Abschreibung. F = 2 heißt Doppelraten-Abschreibung." ;
+ Text [ portuguese ] = "é a taxa de amortização degressiva." ;
+ Text [ finnish ] = "Faktor. Faktor für die Abnahme der Abschreibung. F = 2 heißt Doppelraten-Abschreibung." ;
+ Text [ danish ] = "Faktor. Den sats som saldoen aftager med. F= 2 betyder doppeltsaldometoden." ;
+ Text [ french ] = "Le taux de l'amortissement dégressif. F = 2 signifie amortissement dégressif à taux double." ;
+ Text [ swedish ] = "Faktor. Faktor för minskningen av avskrivningen. F = 2 betyder dubbel avskrivning." ;
+ Text [ dutch ] = "Factor voor de snelheid waarmee wordt afgeschreven. FA = 2 betekent afschrijving in dubbele termijnen." ;
+ Text [ spanish ] = "es la tasa a la que diminuye el saldo." ;
+ Text [ english_us ] = "Factor. The factor for the reduction of the depreciation. F = 2 denotes double rate depreciation." ;
+ Text[ chinese_simplified ] = "Óà¶îµÝ¼õÕÛ¾ÉÒò×Ó£¬factor=2 ±íʾ²ÉÓÃË«±¶Óà¶îµÝ¼õÕ۾ɷ¨¡£";
+ Text[ russian ] = "Íîðìà ñíèæåíèÿ áàëàíñîâîé ñòîèìîñòè. Êîýôôèöèåíò ðàâåí äâóì îçíà÷àåò äâóêðàòíîå ñíèæåíèå áàëàíñîâîé ñòîèìîñòè.";
+ Text[ polish ] = "Wartoœæ steruj¹ca szybkoœci¹, z jak¹ ma maleæ saldo. Wartoœæ 2 oznacza metodê podwójnego spadku.";
+ Text[ japanese ] = "—¦BŒ¸‰¿ž‹p—¦B—¦=2‚Í”{—¦’üŒ¸–@‚ð•\\‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "§EÃB»¼´î§é¦]¤l¡MF=2 ¬OÂù­¿§EÃB»¼´î§éªk¡C";
+ Text[ arabic ] = "ÇáäÓÈÉ ÇáÊí ÊÊäÇÞÕ ÇáãíÒÇäíÉ ÚäÏåÇ.";
+ Text[ dutch ] = "Factor voor de snelheid waarmee wordt afgeschreven. FA = 2 betekent afschrijving in dubbele termijnen.";
+ Text[ chinese_simplified ] = "Óà¶îµÝ¼õÕÛ¾ÉÒò×Ó£¬factor=2 ±íʾ²ÉÓÃË«±¶Óà¶îµÝ¼õÕ۾ɷ¨¡£";
+ Text[ greek ] = "ÐáñÜãïíôáò. ÐáñÜãïíôáò ãéá ôç ìåßùóç ôïõ õðïëïßðïõ. F = 2 óçìáßíåé ìÝèïäïò ôïõ äéðëÜ öèßíïíôïò õðïëïßðïõ.";
+ Text[ korean ] = "¿äÀÎ. °¨°¡»ó°¢ÀÇ °¨¼Ò ¿äÀÎ. ¿äÀÎ=2´Â ÀÌÁß ºñÀ² °¨°¡»ó°¢À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Faktör. Amortisman azalma faktörü. F = 2, çift azalan bakiyeli amortisman anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 14 // Name of Parameter 7
+ // Name of Parameter 7
+ // Name of Parameter 7
+ // Name of Parameter 7
+ // Name of Parameter 7
+ {
+ Text = "Art" ;
+ Text [ english ] = "no_switch" ;
+ Text [ norwegian ] = "Art" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "Art" ;
+ Text [ portuguese ] = "Não_mudar" ;
+ Text [ finnish ] = "Art" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "typ" ;
+ Text [ dutch ] = "Wissel" ;
+ Text [ spanish ] = "sin_cambios" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "no_switch";
+ Text[ russian ] = "Áåç_ïåðåêëþ÷åíèé";
+ Text[ polish ] = "bez_prze³¹czenia";
+ Text[ japanese ] = "Ø‚è‘Ö‚¦‚È‚µ";
+ Text[ chinese_traditional ] = "no_switch";
+ Text[ arabic ] = "No_switch";
+ Text[ dutch ] = "Wissel";
+ Text[ chinese_simplified ] = "no_switch";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ŸÀÔ";
+ Text[ turkish ] = "Tür";
+ Text[ language_user1 ] = " ";
+ };
+ String 15 // Description of Parameter 7
+ // Description of Parameter 7
+ // Description of Parameter 7
+ // Description of Parameter 7
+ // Description of Parameter 7
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Nicht wechseln. Art = 1 heißt Umschalten auf lineare Abschreibung, Art = 0 heißt kein Umschalten. : Nicht wechseln. Art = 1 hei˜t Umschalten auf lineare Abschreibung, Art = 0 hei˜t kein Umschalten. */
+ Text = "Nicht wechseln. Art = 1 heißt Umschalten auf lineare Abschreibung, Art = 0 heißt kein Umschalten." ;
+ Text [ english ] = "is a logical value specifying whether to switch to straight-line depreciation when depreciation is greater than the declining balance calculation." ;
+ Text [ norwegian ] = "Nicht wechseln. Art = 1 heißt Umschalten auf lineare Abschreibung, Art = 0 heißt kein Umschalten." ;
+ Text [ italian ] = "è un valore logico che specifica se è necessario passare all'ammortamento costante qualora l'ammortamento sia maggiore rispetto alla quota decrescente calcolata." ;
+ Text [ portuguese_brazilian ] = "Nicht wechseln. Art = 1 heißt Umschalten auf lineare Abschreibung, Art = 0 heißt kein Umschalten." ;
+ Text [ portuguese ] = "é um valor lógico. 1 significa mudar para o método de amortização linear; 0 significa não mudar." ;
+ Text [ finnish ] = "Nicht wechseln. Art = 1 heißt Umschalten auf lineare Abschreibung, Art = 0 heißt kein Umschalten." ;
+ Text [ danish ] = "Ingen skift. Type = 1 betyder skift til lineær afskrivninger, Type = 0 betyder skift ikke." ;
+ Text [ french ] = "Type = 1 applique l'amortissement linéaire, type = 0 ne l'applique pas." ;
+ Text [ swedish ] = "Växla inte. Typ = 1 betyder byta till linjär avskrivning, typ = 0 betyder inget byte" ;
+ Text [ dutch ] = "Niet wisselen. Wissel = 1 betekent omschakelen op lineaire afschrijving, Wissel = 0 betekent niet omschakelen." ;
+ Text [ spanish ] = "es un valor lógico, 1 indica que se deberá cambiar al método directo de depreciación, 0 significa sin cambios." ;
+ Text [ english_us ] = "Do not alter. Type = 1 denotes switch to linear depreciation, type = 0 do not switch." ;
+ Text[ chinese_simplified ] = "no_switch=1 ±íʾת»»ÖÁÖ±ÏßʽÕ۾ɷ¨£¬ no_switch= 0 ±íʾ²»×ª»»¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå, îïðåäåëÿþùåå ñëåäóåò ëè èñïîëüçîâàòü ïðÿìóþ àìîðòèçàöèþ â òîì ñëó÷àå, êîãäà àìîðòèçàöèÿ ïðåâûøàåò âû÷èñëåííóþ âåëè÷èíó àìîðòèçàöèè (1 îçíà÷àåò ïåðåêëþ÷åíèå íà ëèíåéíóþ àìîðòèçàöèþ; 0 îçíà÷àåò áåç ïåðåêëþ÷åíèé)";
+ Text[ polish ] = "Nie zmieniaj. Typ 1 oznacza prze³¹czenie na odpis na amortyzacjê liniow¹, typ 0 oznacza brak prze³¹czania.";
+ Text[ japanese ] = "Ø‚è‘Ö‚¦‚È‚µBØ‚è‘Ö‚¦‚È‚µ=1‚Í’èŠz–@‚Ö‚ÌØ‚è‘Ö‚¦‚ªs‚í‚êAØ‚è‘Ö‚¦‚È‚µ=0‚ÍØ‚è‘Ö‚¦‚ªs‚í‚ê‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "¬O­ÓÅÞ¿è­È¡C¼Æ­È = 1 ªí¥Ü¤Á´«¦Üª½½u¦¡§éªk¡M ¼Æ­È = 0 ªí¥Ü¤£¥Î¤Á´«¡C";
+ Text[ arabic ] = "ÊÈÏíá Åáì ÇÓÊåáÇß ËÇÈÊ Ýí ÍÇáÉ ßæä ÇáÇÓÊåáÇß ÃßÈÑ ãä ÊäÇÞÕ ÇáãíÒÇäíÉ.";
+ Text[ dutch ] = "Niet wisselen. Wissel = 1 betekent omschakelen op lineaire afschrijving, Wissel = 0 betekent niet omschakelen.";
+ Text[ chinese_simplified ] = "no_switch=1 ±íʾת»»ÖÁÖ±ÏßʽÕ۾ɷ¨£¬ no_switch= 0 ±íʾ²»×ª»»¡£";
+ Text[ greek ] = "Íá ìçí ãßíåé áëëáãÞ. Ôýðïò = 1 óçìáßíåé áëëáãÞ óå ãñáììéêÞ áðüóâåóç, Ôýðïò = 0 óçìáßíåé ÷ùñßò áëëáãÞ.";
+ Text[ korean ] = "º¯°æÇÏÁö ¸»°Í. Çü½Ä=1Àº 1Â÷ °¨°¡»ó°¢À¸·Î ÀüȯÇÏ´Â °ÍÀ» ³ªÅ¸³»¸ç Çü½Ä=0Àº ÀüȯÇÏÁö ¾ÊÀ½À» ³ªÅ¸³À´Ï´Ù.";
+ Text[ turkish ] = "Deðiþtirmeyin. Tür = 1, doðrusal amortismana geçiþ, tür = 0 ise geçiþ yok anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function EFFEKTIV #*=-
+ Resource SC_OPCODE_EFFEKTIV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet die jährliche Effektivverzinsung zu einer Nominalverzinsung. : Berechnet die jõhrliche Effektivverzinsung zu einer Nominalverzinsung. */
+ Text = "Berechnet die jährliche Effektivverzinsung zu einer Nominalverzinsung." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Berechnet die jährliche Effektivverzinsung zu einer Nominalverzinsung." ;
+ Text [ italian ] = "Calcola l'interesse effettivo annuale per un'interesse nominale" ;
+ Text [ portuguese_brazilian ] = "Berechnet die jährliche Effektivverzinsung zu einer Nominalverzinsung." ;
+ Text [ portuguese ] = "Calcula a taxa de juros anual efectiva para uma taxa de juros nominal." ;
+ Text [ finnish ] = "Berechnet die jährliche Effektivverzinsung zu einer Nominalverzinsung." ;
+ Text [ danish ] = "Beregner den årlige effektive rente på grundlag af den nominelle forrentning." ;
+ Text [ french ] = "Renvoie le taux d'intérêt annuel effectif pour un taux d'intérêt nominal." ;
+ Text [ swedish ] = "Beräknar den årliga effektiva räntan utgående från nominalräntan." ;
+ Text [ dutch ] = "Berekent de jaarlijkse effectieve rente m.b.t. de nominale renteopbrengst." ;
+ Text [ spanish ] = "Devuelve la tasa efectiva de interés anual conociendo la tasa de interés anual nominal." ;
+ Text [ english_us ] = "Calculates the annual net interest rate for a nominal interest rate." ;
+ Text[ chinese_simplified ] = "ÀûÓøø¶¨µÄÃûÒåÀûÂʼÆËãʵ¼ÊÄêÀûÂÊ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ãîäîâîé ôàêòè÷åñêèé ïðîöåíò äëÿ íîìèíàëüíîé ïðîöåíòíîé ñòàâêè.";
+ Text[ polish ] = "Oblicza efektywn¹ roczn¹ stopê procentow¹ przy danej rocznej stopie nominalnej.";
+ Text[ japanese ] = "Žw’肳‚ꂽ–¼–Ú”N—˜—¦‚Æ1”N“–‚½‚è‚Ì•¡—˜ŒvŽZ‰ñ”‚ðŒ³‚ÉAŽÀŒø”N—˜—¦‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "§Q¥Î«ü©wªº¦W¸q§Q²v­pºâ¹ê»Ú¦~§Q²v¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÝÇÆÏÉ ÇáÝÚáíÉ ÇáÓäæíÉ áÝÇÆÏÉ ÇÓãíÉ.";
+ Text[ dutch ] = "Berekent de jaarlijkse effectieve rente m.b.t. de nominale renteopbrengst.";
+ Text[ chinese_simplified ] = "ÀûÓøø¶¨µÄÃûÒåÀûÂʼÆËãʵ¼ÊÄêÀûÂÊ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï åôÞóéï ðñáãìáôéêü åðéôüêéï ìéáò áðüäïóçò ïíïìáóôéêïý åðéôïêßïõ.";
+ Text[ korean ] = "¸í¸ñ ÀÌÀÚÀ²¿¡ ´ëÇÑ Á¤È®ÇÑ ¿¬ ÀÌÀÚÀ²À» °è»ê";
+ Text[ turkish ] = "Nominal faiz oraný için yýllýk efektif faiz oranýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_EFFEKTIV );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "NZ" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "NZ" ;
+ Text [ italian ] = "NOM" ;
+ Text [ portuguese_brazilian ] = "NZ" ;
+ Text [ portuguese ] = "NOMINAL" ;
+ Text [ finnish ] = "NZ" ;
+ Text [ danish ] = "NR" ;
+ Text [ french ] = "Taux_nominal" ;
+ Text [ swedish ] = "NR" ;
+ Text [ dutch ] = "NR" ;
+ Text [ spanish ] = "Int_nominal" ;
+ Text [ english_us ] = "NOM" ;
+ Text[ chinese_simplified ] = "NOM";
+ Text[ russian ] = "Íîì_ïðîö_ñòàâêà";
+ Text[ polish ] = "NOMINAL";
+ Text[ japanese ] = "–¼–Ú—˜—¦";
+ Text[ chinese_traditional ] = "NOM";
+ Text[ arabic ] = "NOM";
+ Text[ dutch ] = "NR";
+ Text[ chinese_simplified ] = "NOM";
+ Text[ greek ] = "NOM";
+ Text[ korean ] = "NOM";
+ Text[ turkish ] = "NOM";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Nominalverzinsung" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Nominalverzinsung" ;
+ Text [ italian ] = "Interesse nominale" ;
+ Text [ portuguese_brazilian ] = "Nominalverzinsung" ;
+ Text [ portuguese ] = "Taxa de juros nominal" ;
+ Text [ finnish ] = "Nominalverzinsung" ;
+ Text [ danish ] = "Den nominelle rente" ;
+ Text [ french ] = "Le taux d'intérêt nominal" ;
+ Text [ swedish ] = "Nominalränta" ;
+ Text [ dutch ] = "Nominale rente" ;
+ Text [ spanish ] = "tasa de interés nominal" ;
+ Text [ english_us ] = "Nominal Interest" ;
+ Text[ chinese_simplified ] = "ÃûÒåÀûÂÊ";
+ Text[ russian ] = "Íîìèíàëüíàÿ ïðîöåíòíàÿ ñòàâêà";
+ Text[ polish ] = "Oprocentowanie nominalne";
+ Text[ japanese ] = "–¼–Ú”N—˜—¦";
+ Text[ chinese_traditional ] = "¦W¸q§Q²v";
+ Text[ arabic ] = "ÇáÝÇÆÏÉ ÇáÇÓãíÉ";
+ Text[ dutch ] = "Nominale rente";
+ Text[ chinese_simplified ] = "ÃûÒåÀûÂÊ";
+ Text[ greek ] = "Ïíïìáóôéêü åðéôüêéï";
+ Text[ korean ] = "¸í¸ñ ÀÌÀÚ";
+ Text[ turkish ] = "Nominal faiz oraný";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "P" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "P" ;
+ Text [ italian ] = "P" ;
+ Text [ portuguese_brazilian ] = "P" ;
+ Text [ portuguese ] = "Período" ;
+ Text [ finnish ] = "P" ;
+ Text [ danish ] = "P" ;
+ Text [ french ] = "P" ;
+ Text [ swedish ] = "P" ;
+ Text [ dutch ] = "T" ;
+ Text [ spanish ] = "Periodo" ;
+ Text [ english_us ] = "P" ;
+ Text[ chinese_simplified ] = "P";
+ Text[ russian ] = "Ïåðèîä";
+ Text[ polish ] = "Okres";
+ Text[ japanese ] = "ŠúŠÔ";
+ Text[ chinese_traditional ] = "P";
+ Text[ arabic ] = "P";
+ Text[ dutch ] = "T";
+ Text[ chinese_simplified ] = "P";
+ Text[ greek ] = "P";
+ Text[ korean ] = "P";
+ Text[ turkish ] = "Dönem";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Perioden. Die Anzahl der Zinszahlungen pro Jahr." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Perioden. Die Anzahl der Zinszahlungen pro Jahr." ;
+ Text [ italian ] = "Periodi. Numero dei periodi di flussi di cassa." ;
+ Text [ portuguese_brazilian ] = "Perioden. Die Anzahl der Zinszahlungen pro Jahr." ;
+ Text [ portuguese ] = "é o número de pagamentos de juros por ano." ;
+ Text [ finnish ] = "Perioden. Die Anzahl der Zinszahlungen pro Jahr." ;
+ Text [ danish ] = "Perioder. Antallet af renteydelsesperioder per år." ;
+ Text [ french ] = "Périodes. Le nombre de paiements d'intérêts par an." ;
+ Text [ swedish ] = "Perioder. Antalet räntebetalningar per år." ;
+ Text [ dutch ] = "Termijnen. Het aantal rentebetalingen per jaar." ;
+ Text [ spanish ] = "es el número de pagos de interés compuesto por año." ;
+ Text [ english_us ] = "Periods. The number of interest payments per year." ;
+ Text[ chinese_simplified ] = "ÿÄêÖ§¸¶ÀûÏ¢µÄ´ÎÊý¡£";
+ Text[ russian ] = "×èñëî óïëàò ïðîöåíòîâ â ãîä.";
+ Text[ polish ] = "Okresy. Liczba p³atnoœci odsetek w roku.";
+ Text[ japanese ] = "ŠúŠÔB1”N“–‚½‚è‚Ì•¡—˜ŒvŽZ‰ñ”B";
+ Text[ chinese_traditional ] = "¨C¦~¤ä¥I§Q®§ªº¦¸¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÝÊÑÇÊ ÏÝÚ ÇáÝæÇÆÏ Ýí ÇáÚÇã.";
+ Text[ dutch ] = "Termijnen. Het aantal rentebetalingen per jaar.";
+ Text[ chinese_simplified ] = "ÿÄêÖ§¸¶ÀûÏ¢µÄ´ÎÊý¡£";
+ Text[ greek ] = "Ðåñßïäïé. Ôï ðëÞèïò ôùí ðëçñùìþí ôüêùí áíÜ Ýôïò.";
+ Text[ korean ] = "±â°£. ³â°£ ÀÌÀÚ ÁöºÒ Ƚ¼ö";
+ Text[ turkish ] = "Dönem. Yýllýk faiz ödemeleri sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function NOMINAL #*=-
+ Resource SC_OPCODE_NOMINAL
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet die jährlichen Nominalzinsen zu einer Effektivverzinsung. : Berechnet die jõhrlichen Nominalzinsen zu einer Effektivverzinsung. */
+ Text = "Berechnet die jährlichen Nominalzinsen zu einer Effektivverzinsung." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Berechnet die jährlichen Nominalzinsen zu einer Effektivverzinsung." ;
+ Text [ italian ] = "Calcola l'interesse nominale annuale per un interesse effettivo" ;
+ Text [ portuguese_brazilian ] = "Berechnet die jährlichen Nominalzinsen zu einer Effektivverzinsung." ;
+ Text [ portuguese ] = "Calcula a taxa nominal anual com base numa taxa de juros efectiva." ;
+ Text [ finnish ] = "Berechnet die jährlichen Nominalzinsen zu einer Effektivverzinsung." ;
+ Text [ danish ] = "Beregner den årlige nominelle rente på grundlag af den effektive forrentning." ;
+ Text [ french ] = "Calcule le taux d'intérêt nominal annuel pour un intérêt effectif." ;
+ Text [ swedish ] = "Beräknar de årliga nominella räntorna till en effektivränta." ;
+ Text [ dutch ] = "Berekent de nominale jaarlijkse rente op basis van het effectieve rentepercentage." ;
+ Text [ spanish ] = "Devuelve la tasa de interés nominal anual para una tasa efectiva." ;
+ Text [ english_us ] = "Calculates the yearly nominal interest rate as an effective interest rate." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒÔʵ¼ÊÀûÂÊΪ»ù´¡µÄÄêÃûÒåÀûÂÊ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ãîäîâîé íîìèíàëüíûé ïðîöåíò äëÿ ôàêòè÷åñêîé ïðîöåíòíîé íîðìû.";
+ Text[ polish ] = "Przelicza nominalne roczne oprocentowanie na efektywn¹ stopê procentow¹.";
+ Text[ japanese ] = "Žw’肳‚ꂽŽÀŒø”N—˜—¦‚Æ1”N“–‚½‚è‚Ì•¡—˜ŒvŽZ‰ñ”‚ðŒ³‚ÉA–¼–Ú”N—˜—¦‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¥H¹ê»Ú§Q®§¬°°ò¦ªº¦~¦W¸q§Q®§¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÝæÇÆÏ ÇáÇÓãíÉ ÇáÓäæíÉ áäÓÈÉ ÝÇÆÏÉ ÝÚáíÉ.";
+ Text[ dutch ] = "Berekent de nominale jaarlijkse rente op basis van het effectieve rentepercentage.";
+ Text[ chinese_simplified ] = "¼ÆËãÒÔʵ¼ÊÀûÂÊΪ»ù´¡µÄÄêÃûÒåÀûÂÊ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï åôÞóéï ïíïìáóôéêü åðéôüêéï ìéáò ôñÝ÷ïõóáò áðüäïóçò.";
+ Text[ korean ] = "½Ç ÀÌÀÚÀ²·Î ¿¬°£ ¸í¸ñ ÀÌÀÚÀ² »êÃâ";
+ Text[ turkish ] = "Efektif faiz oraný için yýllýk nominal faiz oranýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_NOMINAL );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "EZ" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "EZ" ;
+ Text [ italian ] = "TE" ;
+ Text [ portuguese_brazilian ] = "EZ" ;
+ Text [ portuguese ] = "Taxa_efectiva" ;
+ Text [ finnish ] = "EZ" ;
+ Text [ danish ] = "ER" ;
+ Text [ french ] = "Taux_effectif" ;
+ Text [ swedish ] = "ER" ;
+ Text [ dutch ] = "ER" ;
+ Text [ spanish ] = "tasa_efectiva" ;
+ Text [ english_us ] = "effect_rate" ;
+ Text[ chinese_simplified ] = "effect_rate";
+ Text[ russian ] = "Ôàêò_ïðîö_ñòàâêà";
+ Text[ polish ] = "stopa_efektywna";
+ Text[ japanese ] = "ŽÀŒø—˜—¦";
+ Text[ chinese_traditional ] = "effect_rate";
+ Text[ arabic ] = "Effect_rate";
+ Text[ dutch ] = "ER";
+ Text[ chinese_simplified ] = "effect_rate";
+ Text[ greek ] = "Effect_rate";
+ Text[ korean ] = "È¿°ú_ºñÀ²";
+ Text[ turkish ] = "Net faiz";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Effektiver Zinssatz" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Effektiver Zinssatz" ;
+ Text [ italian ] = "Tasso di interesse effettivo" ;
+ Text [ portuguese_brazilian ] = "Effektiver Zinssatz" ;
+ Text [ portuguese ] = "é a taxa de juros efectiva." ;
+ Text [ finnish ] = "Effektiver Zinssatz" ;
+ Text [ danish ] = "Den effektive rente" ;
+ Text [ french ] = "Taux d'intérêt effectif" ;
+ Text [ swedish ] = "Effektiv räntesats." ;
+ Text [ dutch ] = "Effectieve rente" ;
+ Text [ spanish ] = "es la tasa de interés efectiva" ;
+ Text [ english_us ] = "The effective interest rate" ;
+ Text[ chinese_simplified ] = "ʵ¼ÊÀûÂÊ";
+ Text[ russian ] = "Ôàêòè÷åñêàÿ ïðîöåíòíàÿ ñòàâêà";
+ Text[ polish ] = "Efektywna stopa procentowa";
+ Text[ japanese ] = "ŽÀŒø”N—˜—¦B";
+ Text[ chinese_traditional ] = "¹ê»Ú§Q²v";
+ Text[ arabic ] = "äÓÈÉ ÇáÝÇÆÏÉ ÇáÝÚáíÉ";
+ Text[ dutch ] = "Effectieve rente";
+ Text[ chinese_simplified ] = "ʵ¼ÊÀûÂÊ";
+ Text[ greek ] = "Ðñáãìáôéêü åðéôüêéï";
+ Text[ korean ] = "½Ç ÀÌÀÚÀ²";
+ Text[ turkish ] = "Efektif faiz oraný";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "P" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "P" ;
+ Text [ italian ] = "NPER" ;
+ Text [ portuguese_brazilian ] = "P" ;
+ Text [ portuguese ] = "Núm_períodos" ;
+ Text [ finnish ] = "P" ;
+ Text [ danish ] = "P" ;
+ Text [ french ] = "P" ;
+ Text [ swedish ] = "P" ;
+ Text [ dutch ] = "P" ;
+ Text [ spanish ] = "núm_per" ;
+ Text [ english_us ] = "npery" ;
+ Text[ chinese_simplified ] = "npery";
+ Text[ russian ] = "Ïåðèîä";
+ Text[ polish ] = "Okresy";
+ Text[ japanese ] = "ŠúŠÔ";
+ Text[ chinese_traditional ] = "npery";
+ Text[ arabic ] = "Npery";
+ Text[ dutch ] = "P";
+ Text[ chinese_simplified ] = "npery";
+ Text[ greek ] = "Npery";
+ Text[ korean ] = "npery";
+ Text[ turkish ] = "D";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Perioden. Die Anzahl der Zinszahlungen pro Jahr." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Perioden. Die Anzahl der Zinszahlungen pro Jahr." ;
+ Text [ italian ] = "Numero totale dei periodi di pagamento per anno" ;
+ Text [ portuguese_brazilian ] = "Perioden. Die Anzahl der Zinszahlungen pro Jahr." ;
+ Text [ portuguese ] = "é o número de pagamentos de juros por ano." ;
+ Text [ finnish ] = "Perioden. Die Anzahl der Zinszahlungen pro Jahr." ;
+ Text [ danish ] = "Perioder. Antallet af renteydelsesperioder per år." ;
+ Text [ french ] = "Périodes. Le nombre de paiements d'intérêts par an." ;
+ Text [ swedish ] = "Perioder. Antalet räntebetalningar per år." ;
+ Text [ dutch ] = "Perioden. Het aantal rentebetalingen per jaar." ;
+ Text [ spanish ] = "es el número de pagos de interés por año." ;
+ Text [ english_us ] = "Periods. The number of interest payment per year." ;
+ Text[ chinese_simplified ] = "ÖÜÆÚÊý¡£Ã¿ÄêÖ§¸¶ÀûÏ¢µÄÖÜÆÚÊý¡£";
+ Text[ russian ] = "×èñëî óïëàò ïðîöåíòîâ â ãîä.";
+ Text[ polish ] = "Okresy. Liczba p³atnoœci odsetek w roku.";
+ Text[ japanese ] = "ŠúŠÔB1”N“–‚½‚è‚Ì—˜‘§ŒvŽZ‰ñ”B";
+ Text[ chinese_traditional ] = "¶g´Á¼Æ¡C¨C¦~¤ä¥I§Q®§ªº¶g´Á¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÏÝÚÇÊ ÇáÝÇÆÏÉ Ýí ÇáÚÇã ÇáæÇÍÏ.";
+ Text[ dutch ] = "Perioden. Het aantal rentebetalingen per jaar.";
+ Text[ chinese_simplified ] = "ÖÜÆÚÊý¡£Ã¿ÄêÖ§¸¶ÀûÏ¢µÄÖÜÆÚÊý¡£";
+ Text[ greek ] = "Ðåñßïäïé. Ôï ðëÞèïò ôùí ðëçñùìþí ôüêùí áíÜ Ýôïò.";
+ Text[ korean ] = "±â°£. ³â°£ ÀÌÀÚ ÁöºÒ Ƚ¼ö";
+ Text[ turkish ] = "Dönem. Yýllýk faiz ödemeleri sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function NBW #*=-
+ Resource SC_OPCODE_NBW
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Nettobarwert. Berechnet den Kapitalwert einer Investition auf Basis eines Abzinsungsfaktors bei periodischen Zahlungen." ;
+ Text [ english ] = "Returns the net present value of an investment based on a series of periodic cash flows and a discount rate." ;
+ Text [ norwegian ] = "Nettobarwert. Berechnet den Kapitalwert einer Investition auf Basis eines Abzinsungsfaktors bei periodischen Zahlungen." ;
+ Text [ italian ] = "Restituisce il valore attuale netto di un investimento basato su una serie di flussi di cassa periodici e su un tasso di sconto." ;
+ Text [ portuguese_brazilian ] = "Nettobarwert. Berechnet den Kapitalwert einer Investition auf Basis eines Abzinsungsfaktors bei periodischen Zahlungen." ;
+ Text [ portuguese ] = "Devolve o valor líquido actual de um investimento, baseado numa série de fluxos financeiros periódicos e numa taxa de desconto." ;
+ Text [ finnish ] = "Nettobarwert. Berechnet den Kapitalwert einer Investition auf Basis eines Abzinsungsfaktors bei periodischen Zahlungen." ;
+ Text [ danish ] = "Nettonutidsværdi. Beregner den aktuelle nutidsværdi for en investering baseret på en diskontosats ved periodiske betalinger." ;
+ Text [ french ] = "Calcule la valeur actuelle nette d'un investissement basée sur des flux financiers non constants." ;
+ Text [ swedish ] = "Nettonuvärde. Beräknar kapitalvärdet av en investering baserat på en diskonteringsfaktor vid periodiska betalningar." ;
+ Text [ dutch ] = "Berekent de netto huidige waarde van een investering op basis van een rentevoet bij periodieke betalingen." ;
+ Text [ spanish ] = "Devuelve el valor neto presente de una inversión a partir de flujos de caja que no tienen que ser constantes." ;
+ Text [ english_us ] = "Net present value. Calculates the net present value of an investment based on a series of periodic payments and a discount rate." ;
+ Text[ chinese_simplified ] = "¾»ÏÖ½ðÖµ¡£ÔÚÌùÏÖÂʹ̶¨ÇÒ¶¨ÆÚÖ§¸¶µÄÇé¿öÏÂÉÏ£¬¼ÆËãÒ»ÏîͶ×ʵľ»ÏÖ½ðÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ÷èñòûé òåêóùèé îáúåì âêëàäà íà îñíîâå ïåðèîäè÷åñêèõ ïîñòóïëåíèé è ó÷åòíîé ñòàâêè.";
+ Text[ polish ] = "Oblicza wartoœæ bie¿¹c¹ netto inwestycji w oparciu o okresowe przep³ywy œrodków pieniê¿nych przy okreœlonej stopie dyskontowej.";
+ Text[ japanese ] = "³–¡Œ»Ý‰¿ŠiB“ŠŽ‘‚̳–¡Œ»Ý‰¿’l‚ðA“ŠŽ‘ŠúŠÔ‚ÌŠ„ˆø—¦‚ð‚à‚Æ‚ÉŽZo‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦b¶K²{²v©T©w©M¤@¨t¦C©w´Áªº²{ª÷¬yªº°ò¦¤W¡A­pºâ¤@¶µ§ë¸êªº²b²{­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÞíãÉ ÇáÕÇÝíÉ ÇáÍÇáíÉ áÇÓÊËãÇÑ ÇÓÊäÇÏÇð Åáì ãÚÏá ÇáÎÕã æÅáì ÓáÓáÉ ÇáÏÝÚÇÊ ÇáãÓÊÞÈáíÉ.";
+ Text[ dutch ] = "Berekent de netto huidige waarde van een investering op basis van een rentevoet bij periodieke betalingen.";
+ Text[ chinese_simplified ] = "¾»ÏÖ½ðÖµ¡£ÔÚÌùÏÖÂʹ̶¨ÇÒ¶¨ÆÚÖ§¸¶µÄÇé¿öÏÂÉÏ£¬¼ÆËãÒ»ÏîͶ×ʵľ»ÏÖ½ðÖµ¡£";
+ Text[ greek ] = "ÊáèáñÞ ðáñïýóá áîßá. Õðïëïãßæåé ôçí áîßá ôïõ êåöáëáßïõ ìéáò åðÝíäõóçò óå âÜóç åíüò ðáñÜãïíôá ðñïåîïöëçôéêïý åðéôïêßïõ ìå ðåñéïäéêÝò ðëçñùìÝò.";
+ Text[ korean ] = "Á¤È®ÇÑ ÇöÀç °ª. ÁÖ±âÀûÀÎ Áö±ÞÀÇ ¿¬¼Ó°ú ÇÒÀÎÀ²¿¡ ±Ù°ÅÇÑ ÅõÀÚÀÇ Á¤È®ÇÑ ÇöÀç°ªÀ» »êÃâ";
+ Text[ turkish ] = "Bugünkü net deðer. Bir yatýrýmýn, periyodik ödemeler ve indirim oraný faktörü bazýnda bugünkü net deðerini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_NBW );
+ VAR_ARGS+1; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "ZINS" ;
+ Text [ english ] = "rate" ;
+ Text [ norwegian ] = "ZINS" ;
+ Text [ italian ] = "TASSO" ;
+ Text [ portuguese_brazilian ] = "ZINS" ;
+ Text [ portuguese ] = "Taxa" ;
+ Text [ finnish ] = "ZINS" ;
+ Text [ danish ] = "RENTE" ;
+ Text [ french ] = "TAUX" ;
+ Text [ swedish ] = "RÄNTA" ;
+ Text [ dutch ] = "RENTE" ;
+ Text [ spanish ] = "tasa" ;
+ Text [ english_us ] = "RATE" ;
+ Text[ chinese_simplified ] = "RATE";
+ Text[ russian ] = "ÏÐÎÖÅÍÒ";
+ Text[ polish ] = "ODSETKI";
+ Text[ japanese ] = "Š„ˆø—¦";
+ Text[ chinese_traditional ] = "rate";
+ Text[ arabic ] = "Rate";
+ Text[ dutch ] = "RENTE";
+ Text[ chinese_simplified ] = "RATE";
+ Text[ greek ] = "RATE";
+ Text[ korean ] = "ºñÀ²";
+ Text[ turkish ] = "FAÝZ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Abzinsungssatz für eine Periode. : Der Abzinsungssatz f³r eine Periode. */
+ Text = "Der Abzinsungssatz für eine Periode." ;
+ Text [ english ] = "is the rate of discount over the length of one period." ;
+ Text [ norwegian ] = "Der Abzinsungssatz für eine Periode." ;
+ Text [ italian ] = "è il tasso di sconto per la durata di un periodo." ;
+ Text [ portuguese_brazilian ] = "Der Abzinsungssatz für eine Periode." ;
+ Text [ portuguese ] = "é a taxa de desconto durante um período." ;
+ Text [ finnish ] = "Der Abzinsungssatz für eine Periode." ;
+ Text [ danish ] = "Diskontosatsen for en periode." ;
+ Text [ french ] = "Le taux d'actualisation pour une période." ;
+ Text [ swedish ] = "Diskonteringssatsen för en period." ;
+ Text [ dutch ] = "Berekent rentepercentage voor een termijn." ;
+ Text [ spanish ] = "es la tasa de descuento durante un período." ;
+ Text [ english_us ] = "The rate of discount for one period." ;
+ Text[ chinese_simplified ] = "¸÷¸öÖÜÆÚµÄÌùÏÖÂÊ¡£";
+ Text[ russian ] = "Ó÷åòíàÿ ñòàâêà çà îäèí ïåðèîä.";
+ Text[ polish ] = "Stopa dyskontowa dla pojedynczego okresu.";
+ Text[ japanese ] = "“ŠŽ‘ŠúŠÔ‚ð’Ê‚¶‚Ĉê’è‚ÌŠ„ˆø—¦B";
+ Text[ chinese_traditional ] = "¦U­Ó¶g´Áªº¶K²{²v¡C";
+ Text[ arabic ] = "ãÚÏá ÇáÎÕã Úáì Øæá ÝÊÑÉ æÇÍÏÉ.";
+ Text[ dutch ] = "Berekent rentepercentage voor een termijn.";
+ Text[ chinese_simplified ] = "¸÷¸öÖÜÆÚµÄÌùÏÖÂÊ¡£";
+ Text[ greek ] = "Ôï ðñïåîïöëçôéêü åðéôüêéï ìéáò ðåñéüäïõ.";
+ Text[ korean ] = "ÇÑ ±â°£¿¡ ´ëÇÑ ÇÒÀÎÀ²";
+ Text[ turkish ] = "Bir dönemlik indirim oraný.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text [ norwegian ] = "Wert " ;
+ Text [ italian ] = "valore " ;
+ Text [ portuguese_brazilian ] = "Wert " ;
+ Text [ portuguese ] = "Valor " ;
+ Text [ finnish ] = "Wert " ;
+ Text [ danish ] = "Værdi " ;
+ Text [ french ] = "Valeur " ;
+ Text [ swedish ] = "värde " ;
+ Text [ dutch ] = "Waarde " ;
+ Text [ spanish ] = "valor " ;
+ Text [ english_us ] = "value " ;
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "Waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wert 1;Wert 2;... Sind 1 bis 30 Werte für Ein- oder Auszahlungen. : Wert 1;Wert 2;... Sind 1 bis 30 Werte f³r Ein- oder Auszahlungen. */
+ Text = "Wert 1;Wert 2;... Sind 1 bis 30 Werte für Ein- oder Auszahlungen." ;
+ Text [ english ] = "are 1 to 29 arguments representing the payments and income." ;
+ Text [ norwegian ] = "Wert 1;Wert 2;... Sind 1 bis 30 Werte für Ein- oder Auszahlungen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti che rappresentano le entrate e le uscite." ;
+ Text [ portuguese_brazilian ] = "Wert 1;Wert 2;... Sind 1 bis 30 Werte für Ein- oder Auszahlungen." ;
+ Text [ portuguese ] = "é um argumento de 1 a 29 , representando os pagamentos e as receitas." ;
+ Text [ finnish ] = "Wert 1;Wert 2;... Sind 1 bis 30 Werte für Ein- oder Auszahlungen." ;
+ Text [ danish ] = "Værdi 1, værdi 2, .. .er 1 til 30 værdier for ydelser og indtægter." ;
+ Text [ french ] = "Valeur 1, Valeur 2, ... sont de 1 à 30 arguments représentant les encaissements et les décaissements." ;
+ Text [ swedish ] = "värde1;värde 2;... Är 1 till 30 värden för in-eller utbetalningar." ;
+ Text [ dutch ] = "Waarde 1;Waarde 2;... zijn maximaal 30 waarden voor inkomsten en uitgaven." ;
+ Text [ spanish ] = "Valor 1; Valor 2;... son de 1 a 30 argumentos que representan los pagos e ingresos." ;
+ Text [ english_us ] = "Value 1, value 2,... are 1 to 30 arguments representing payments and income." ;
+ Text[ chinese_simplified ] = "ÊýÖµ 1;ÊýÖµ 2;... ÊDZíʾÊÕÈëºÍÖ§³öµÄ 1 ÖÁ 30 ¸öÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå 1;çíà÷åíèå 2;... îò 1 äî 29 çíà÷åíèé, ïðåäñòàâëÿþùèõ äîõîäû è ðàñõîäû.";
+ Text[ polish ] = "Stanowi¹ od 1 do 29 argumentów reprezentuj¹cych p³atnoœci i nale¿noœci.";
+ Text[ japanese ] = "’l1¤’l2¤...‚Í1‚©‚ç30ŒÂ‚Ü‚Å‚ÌŽx•¥Šz(•‰‚Ì’l)‚ÆŽû‰vŠz(³‚Ì’l)B";
+ Text[ chinese_traditional ] = "¼Æ­È 1;¼Æ­È 2;... ¬Oªí¥Ü¦¬¤J©M¤ä¥Xªº 1 ¦Ü 30 ­Ó¼Æ­È¡C";
+ Text[ arabic ] = "value1;value2... ãä 1 Åáì 29 ÞíãÉ ááÏÝÚÉ Ãæ ááÅíÑÇÏ.";
+ Text[ dutch ] = "Waarde 1;Waarde 2;... zijn maximaal 30 waarden voor inkomsten en uitgaven.";
+ Text[ chinese_simplified ] = "ÊýÖµ 1;ÊýÖµ 2;... ÊDZíʾÊÕÈëºÍÖ§³öµÄ 1 ÖÁ 30 ¸öÊýÖµ¡£";
+ Text[ greek ] = "ÔéìÞ 1;ÔéìÞ2;... Åßíáé áðü 1 Ýùò 30 ôéìÝò ãéá ðëçñùìÝò êáé åéóïäÞìáôá.";
+ Text[ korean ] = "°ª 1, °ª 2,... Àº ÁöÃâ°ú ¼öÀÔÀ» ³ªÅ¸³»´Â1¿¡¼­ 30±îÁöÀÇ °ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1;deðer 2;... Ödeme ve geliri temsil eden 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function IKV #*=-
+ Resource SC_OPCODE_IKV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den internen Zinsfuß einer Investition ohne Kosten oder Gewinne. : Berechnet den internen Zinsfu˜ einer Investition ohne Kosten oder Gewinne. */
+ Text = "Berechnet den internen Zinsfuß einer Investition ohne Kosten oder Gewinne." ;
+ Text [ english ] = "Returns the internal rate of return for a series of cash flows represented by the numbers in values." ;
+ Text [ norwegian ] = "Berechnet den internen Zinsfuß einer Investition ohne Kosten oder Gewinne." ;
+ Text [ italian ] = "Restituisce il tasso di rendimento interno di un investimento senza costi o utili." ;
+ Text [ portuguese_brazilian ] = "Berechnet den internen Zinsfuß einer Investition ohne Kosten oder Gewinne." ;
+ Text [ portuguese ] = "Calcula a taxa interna de retorno de um investimento sem considerar as despesas nem os lucros." ;
+ Text [ finnish ] = "Berechnet den internen Zinsfuß einer Investition ohne Kosten oder Gewinne." ;
+ Text [ danish ] = "Beregner det interne afkast for en investering uden udgifter eller indtægter." ;
+ Text [ french ] = "Calcule le taux de rentabilité interne d'un investissement, sans tenir compte des coûts ou des plus-values." ;
+ Text [ swedish ] = "Beräknar den interna räntesatsen för en investering utan kostnader eller vinster." ;
+ Text [ dutch ] = "Berekent de interne rentevoet bij een investering zonder kosten of winst." ;
+ Text [ spanish ] = "Devuelve la tasa interna de retorno de una inversión, sin costos de financiación o las ganancias por reinversión." ;
+ Text [ english_us ] = "Returns the actuarial rate of interest of an investment excluding costs or profits." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öͶ×ʵÄÄÚ²¿ÊÕÒæÂÊ£¬²»¼Æ³É±¾ºÍÓ¯Àû¡£";
+ Text[ russian ] = "Âû÷èñëÿåò âíóòðåííþþ ñêîðîñòü îáîðîòà äëÿ ðÿäà ïîñëåäîâàòåëüíûõ îïåðàöèé ñ íàëè÷íûìè.";
+ Text[ polish ] = "Oblicza wewnêtrzn¹ stopê zwrotu dla przep³ywów œrodków pieniê¿nych.";
+ Text[ japanese ] = "ˆê˜A‚Ì’èŠú“I‚È·¬¯¼­ ÌÛ°‚ɑ΂·‚é“à•”—˜‰v—¦‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó§ë¸êªº¤º³¡¦¬¯q²v¡M¤£­p¦¨¥»©M¬Õ§Q¡C";
+ Text[ arabic ] = "ÊÍÓÈ äÓÈÉ ÇáÅÑÌÇÚ ÇáÏÇÎáíÉ áÇÓÊËãÇÑ ÈÏæä ÇáÊßÇáíÝ Ãæ ÇáÃÑÈÇÍ.";
+ Text[ dutch ] = "Berekent de interne rentevoet bij een investering zonder kosten of winst.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öͶ×ʵÄÄÚ²¿ÊÕÒæÂÊ£¬²»¼Æ³É±¾ºÍÓ¯Àû¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí åóùôåñéêÞ ñïÞ ôüêïõ ìéáò åðÝíäõóçò ÷ùñßò Ýîïäá êáé êÝñäç.";
+ Text[ korean ] = "ºñ¿ë ¶Ç´Â ÀÌÀÍÀ» Á¦¿ÜÇÑ ÅõÀÚÀÇ ½ÇÁ¦ ÀÌÀÚÀ²À» ¹Ýȯ";
+ Text[ turkish ] = "Bir yatýrýmýn, masraf ve kar hariç, iç verim oraný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_IKV );
+ 2; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Werte" ;
+ Text [ english ] = "values" ;
+ Text [ norwegian ] = "Werte" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Werte" ;
+ Text [ portuguese ] = "Valores" ;
+ Text [ finnish ] = "Werte" ;
+ Text [ danish ] = "Værdier" ;
+ Text [ french ] = "Valeurs" ;
+ Text [ swedish ] = "värden" ;
+ Text [ dutch ] = "Waarden" ;
+ Text [ spanish ] = "Valores" ;
+ Text [ english_us ] = "Values" ;
+ Text[ chinese_simplified ] = "values";
+ Text[ russian ] = "Çíà÷åíèÿ";
+ Text[ polish ] = "Wartoœci";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "values";
+ Text[ arabic ] = "Values";
+ Text[ dutch ] = "Waarden";
+ Text[ chinese_simplified ] = "values";
+ Text[ greek ] = "ÔéìÝò";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðerler";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Matrix oder Zellbezug auf Zellen, deren Inhalt den Zahlungen entsprechen. " ;
+ Text [ english ] = "is an array or a reference to cells that contain numbers for which you want to calculate the internal rate of return." ;
+ Text [ norwegian ] = "Matrix oder Zellbezug auf Zellen, deren Inhalt den Zahlungen entsprechen. " ;
+ Text [ italian ] = "è una matrice o un riferimento a celle che contengono numeri di cui si desidera calcolare il tasso di rendimento interno. " ;
+ Text [ portuguese_brazilian ] = "Matrix oder Zellbezug auf Zellen, deren Inhalt den Zahlungen entsprechen. " ;
+ Text [ portuguese ] = "é uma matriz ou uma referência a células, cujos conteúdos correspondem aos pagamentos. " ;
+ Text [ finnish ] = "Matrix oder Zellbezug auf Zellen, deren Inhalt den Zahlungen entsprechen. " ;
+ Text [ danish ] = "Matrix eller reference til celler som indeholder de værdier, det interne afkast skal beregnes for. " ;
+ Text [ french ] = "Une matrice ou une référence à des cellules dont le contenu correspond aux paiements. " ;
+ Text [ swedish ] = "Matris eller cellreferens till celler vars innehåll motsvarar betalningarna. " ;
+ Text [ dutch ] = "Matrix of celverwijzing naar cellen waarvan de inhoud overeenkomt met de betalingen. " ;
+ Text [ spanish ] = "Es una matriz o referencia a celdas cuyo contenido correponde a los pagos. " ;
+ Text [ english_us ] = "An array or reference to cells whose contents correspond to the payments. " ;
+ Text[ chinese_simplified ] = "º¬ÓÐÖ§¸¶½ð¶îµÄµ¥Ôª¸ñ×é»òµ¥Ôª¸ñÒýÓᣠ";
+ Text[ russian ] = "Ìàññèâ èëè ññûëêà íà ÿ÷åéêè, ñîäåðæèìîå êîòîðûõ ñîîòâåòñòâóåò ïëàòåæàì. ";
+ Text[ polish ] = "Macierz lub odwo³anie komórek do komórek, których zawartoœci odpowiadaj¹ p³atnoœciom. ";
+ Text[ japanese ] = "”’l‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;َQÆ¡ ";
+ Text[ chinese_traditional ] = "¨ä¤º®e»P¤ä¥I¹ïÀ³ªºÀx¦s®æ²Õ©ÎÀx¦s®æ°Ñ·Ó¡C ";
+ Text[ arabic ] = "ÕÝíÝ Ãæ ãÑÌÚ Åáì ÎáÇíÇ ÊÊØÇÈÞ ãÍÊæíÇÊåÇ ãÚ ÇáÏÝÚÇÊ. ";
+ Text[ dutch ] = "Matrix of celverwijzing naar cellen waarvan de inhoud overeenkomt met de betalingen. ";
+ Text[ chinese_simplified ] = "º¬ÓÐÖ§¸¶½ð¶îµÄµ¥Ôª¸ñ×é»òµ¥Ôª¸ñÒýÓᣠ";
+ Text[ greek ] = "ÌÞôñá Þ áíáöïñÜ êåëéïý óå êåëéÜ, ôùí ïðïßùí ôá ðåñéå÷üìåíá áíôéóôïé÷ïýí óôéò ðëçñùìÝò. ";
+ Text[ korean ] = "Çà·Ä ¶Ç´Â ÁöºÒ¿¡ »óÀÀÇÏ´Â ³»¿ëÀ» Áö´Ñ ¼¿¿¡ ´ëÇÑ ÂüÁ¶ÀÔ´Ï´Ù. ";
+ Text[ turkish ] = "Ýçerikleri, ödemelere uyan hücrelere referans ya da matris. ";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "SW" ;
+ Text [ english ] = "guess" ;
+ Text [ norwegian ] = "SW" ;
+ Text [ italian ] = "ipotesi" ;
+ Text [ portuguese_brazilian ] = "SW" ;
+ Text [ portuguese ] = "Estimativa" ;
+ Text [ finnish ] = "SW" ;
+ Text [ danish ] = "Gæt" ;
+ Text [ french ] = "Estimation" ;
+ Text [ swedish ] = "gissning" ;
+ Text [ dutch ] = "SW" ;
+ Text [ spanish ] = "Estimar" ;
+ Text [ english_us ] = "guess" ;
+ Text[ chinese_simplified ] = "guess";
+ Text[ russian ] = "Ïðåäïîëîæåíèå";
+ Text[ polish ] = "WartoϾ szacowana";
+ Text[ japanese ] = "„’è’l";
+ Text[ chinese_traditional ] = "guess";
+ Text[ arabic ] = "Guess";
+ Text[ dutch ] = "SW";
+ Text[ chinese_simplified ] = "guess";
+ Text[ greek ] = "guess";
+ Text[ korean ] = "ÃßÁ¤°ª";
+ Text[ turkish ] = "Tahmini deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Schätzwert. Startwert des Zinsfußes für das Iterationsverfahren. : Schõtzwert. Startwert des Zinsfu˜es f³r das Iterationsverfahren. */
+ Text = "Schätzwert. Startwert des Zinsfußes für das Iterationsverfahren." ;
+ Text [ english ] = "is a number that you guess is close to the result of IRR." ;
+ Text [ norwegian ] = "Schätzwert. Startwert des Zinsfußes für das Iterationsverfahren." ;
+ Text [ italian ] = "è un numero che si suppone vicino al risultato di TIR.COST." ;
+ Text [ portuguese_brazilian ] = "Schätzwert. Startwert des Zinsfußes für das Iterationsverfahren." ;
+ Text [ portuguese ] = "é um número que se estima estar próximo do resultado de TIR." ;
+ Text [ finnish ] = "Schätzwert. Startwert des Zinsfußes für das Iterationsverfahren." ;
+ Text [ danish ] = "Gæt. Skøn over rentefodens startværdi for iterationsberegningen." ;
+ Text [ french ] = "Le taux que vous estimez être le plus proche du résultat de TRI." ;
+ Text [ swedish ] = "Gissning. Räntesatsens startvärde för iterationsmetoden." ;
+ Text [ dutch ] = "Geschatte waarde. Startwaarde van de rentevoet voor het iteratieproces." ;
+ Text [ spanish ] = "Es un número que el usuario estima que se aproximará al resultado de TIR." ;
+ Text [ english_us ] = "Guess. An estimated value of the rate of return to be used for the iteration calculation." ;
+ Text[ chinese_simplified ] = "¹À¼ÆÖµ¡£²ÉÓÃÖ𲽱ƽü·¨¼ÆËãʱµÄÀûÂÊÆðʼ¹À¼ÆÖµ¡£";
+ Text[ russian ] = "Âåëè÷èíà, î êîòîðîé ïðåäïîëàãàåòñÿ, ÷òî îíà áëèçêà ê ðåçóëüòàòó ÂÍÄÎÕ.";
+ Text[ polish ] = "Wartoœæ szacowana. Wartoœæ pocz¹tkowa ustawowej stopy procentowej dla iteracyjnej metody kalkulacji.";
+ Text[ japanese ] = "„’è’lBŒvŽZŒ‹‰Ê‚É‹ß‚¢‚ÆŽv‚í‚ê‚é”’lB";
+ Text[ chinese_traditional ] = "¦ô­p­È¡C¥Î©ó³v¨B¹Gªñªk­pºâªº§Q²v¶}©l¦ô­p­È¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáÐí ÊÊæÞÚ Ãä íßæä ÞÑíÈÇð ãä äÊíÌÉ IRR.";
+ Text[ dutch ] = "Geschatte waarde. Startwaarde van de rentevoet voor het iteratieproces.";
+ Text[ chinese_simplified ] = "¹À¼ÆÖµ¡£²ÉÓÃÖ𲽱ƽü·¨¼ÆËãʱµÄÀûÂÊÆðʼ¹À¼ÆÖµ¡£";
+ Text[ greek ] = "Åêôéìþìåíç ôéìÞ. Áñ÷éêÞ ôéìÞ ôçò ñïÞò åðéôïêßïõ ãéá ôçí åðáíáëçðôéêÞ äéáäéêáóßá.";
+ Text[ korean ] = "ÃßÁ¤°ª. ¹Ýº¹ °è»ê¿¡ »ç¿ëµÇ´Â ¹ÝȯÀÇ ºñÀ²ÀÇ »êÃâ °ª";
+ Text[ turkish ] = "Tahmini deðer. Özyineleme hesabý için verim oranýnýn baþlangýç deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function LAUFZEIT #*=-
+ Resource SC_OPCODE_LAUFZ
+ {
+ String 1 // Description
+ {
+ Text = "Laufzeit. Berechnet die Anzahl der Perioden, die eine Investition benötigt, um auf einen angestrebten Wert zu kommen." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Laufzeit. Berechnet die Anzahl der Perioden, die eine Einlage benötigt, um auf einen angestrebten Wert zu kommen." ;
+ Text [ italian ] = "Durata. Il numero di periodi necessari affinché un investimento raggiunga un valore voluto." ;
+ Text [ portuguese_brazilian ] = "Laufzeit. Berechnet die Anzahl der Perioden, die eine Einlage benötigt, um auf einen angestrebten Wert zu kommen." ;
+ Text [ portuguese ] = "Duração. Devolve a quantidade de períodos necessários para que um investimento atinja o valor desejado." ;
+ Text [ finnish ] = "Laufzeit. Berechnet die Anzahl der Perioden, die eine Einlage benötigt, um auf einen angestrebten Wert zu kommen." ;
+ Text [ danish ] = "Varighed. Beregner antallet af perioder, som en investering kræver for at opnå den ønskede værdi." ;
+ Text [ french ] = "Durée. Renvoie le nombre de périodes nécessaires à un investissement pour atteindre une valeur nominale." ;
+ Text [ swedish ] = "Löptid. Beräknar antalet perioder som en investering behöver för att uppnå ett eftersträvat värde." ;
+ Text [ dutch ] = "Looptijd. Berekent het aantal termijnen dat nodig is om een gewenste waarde te bereiken." ;
+ Text [ spanish ] = "Plazo. Devuelve la cantidad de períodos que requiere una inversión para lograr un valor deseado." ;
+ Text [ english_us ] = "Duration. Calculates the number of periods required by an investment to attain the desired value." ;
+ Text[ chinese_simplified ] = "ÆÚÏÞ¡£¼ÆËãΪÁË´ïµ½Ò»¶¨Ä¿±êÖµÒ»ÏîͶ×ÊËùÐèÒªµÄÖÜÆÚÊý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êîëè÷åñòâî ïåðèîäîâ, íåîáõîäèìîå äëÿ èíâåñòèöèè, ÷òîáû äîñòèãíóòü ïðåäïîëàãàåìîå çíà÷åíèå.";
+ Text[ polish ] = "Oblicza iloœæ okresów, która jest wymagana, aby wk³ad osi¹gn¹³ oczekiwan¹ wartoœæ.";
+ Text[ japanese ] = "–žŠzŠúB“ŠŽ‘‚µ‚Ä–Ú•WŠz‚É’B¬‚·‚é‚Ì‚É•K—v‚Æ‚·‚éŠúŠÔ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "´Á­­¡C­pºâ¬°¤F¹F¨ì¤@©w¥Ø¼Ð­È¤@¶µ§ë¸ê©Ò»Ý­nªº¶g´Á¼Æ¡C";
+ Text[ arabic ] = "ÇáÃãÏ. ÊÍÓÈ ÚÏÏ ÇáÝÊÑÇÊ ÇááÇÒãÉ ÍÊì íÕá ÇÓÊËãÇÑ ãÇ Åáì ÇáÞíãÉ ÇáãÑÇÏÉ.";
+ Text[ dutch ] = "Looptijd. Berekent het aantal termijnen dat nodig is om een gewenste waarde te bereiken.";
+ Text[ chinese_simplified ] = "ÆÚÏÞ¡£¼ÆËãΪÁË´ïµ½Ò»¶¨Ä¿±êÖµÒ»ÏîͶ×ÊËùÐèÒªµÄÖÜÆÚÊý¡£";
+ Text[ greek ] = "ÄéÜñêåéá.Õðïëïãßæåé ôï ðëÞèïò ôùí ðåñéüäùí ðïõ áðáéôåß ìéá åðÝíäõóç ãéá íá öôÜóåé óå ìéá ôéìÞ.";
+ Text[ korean ] = "±â°£. ¿ä±¸ÇÏ´Â °ªÀÇ ´Þ¼ºÀ» À§ÇÑ ÅõÀÚ¿¡ÀÇÇÏ¿© ¿äûµÇ´Â ±â°£ÀÇ ¼ö¸¦ °è»ê.";
+ Text[ turkish ] = "Süre. Bir yatýrýmýn istenen deðere ulaþabilmesi için gereken dönem sayýsýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_LAUFZEIT );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "ZINS" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "ZINS" ;
+ Text [ italian ] = "TASSO" ;
+ Text [ portuguese_brazilian ] = "ZINS" ;
+ Text [ portuguese ] = "Taxa" ;
+ Text [ finnish ] = "ZINS" ;
+ Text [ danish ] = "RENTE" ;
+ Text [ french ] = "TAUX" ;
+ Text [ swedish ] = "RÄNTA" ;
+ Text [ dutch ] = "RENTE" ;
+ Text [ spanish ] = "Tasa" ;
+ Text [ english_us ] = "rate" ;
+ Text[ chinese_simplified ] = "rate";
+ Text[ russian ] = "ÏÐÎÖÅÍÒ";
+ Text[ polish ] = "ODSETKI";
+ Text[ japanese ] = "—˜—¦";
+ Text[ chinese_traditional ] = "rate";
+ Text[ arabic ] = "Rate";
+ Text[ dutch ] = "RENTE";
+ Text[ chinese_simplified ] = "rate";
+ Text[ greek ] = "rate";
+ Text[ korean ] = "ºñÀ²";
+ Text[ turkish ] = "Faiz";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "konstanter Zinsatz" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "konstanter Zinsatz" ;
+ Text [ italian ] = "L'interesse costante" ;
+ Text [ portuguese_brazilian ] = "konstanter Zinsatz" ;
+ Text [ portuguese ] = "é a taxa de juros constante." ;
+ Text [ finnish ] = "konstanter Zinsatz" ;
+ Text [ danish ] = "En konstant rentesats." ;
+ Text [ french ] = "Taux d'intérêt constant" ;
+ Text [ swedish ] = "konstant räntesats." ;
+ Text [ dutch ] = "vaste rentevoet" ;
+ Text [ spanish ] = "Es la tasa de interés constante" ;
+ Text [ english_us ] = "The constant rate of interest." ;
+ Text[ chinese_simplified ] = "ºã¶¨ÀûÂÊ";
+ Text[ russian ] = "ïîñòîÿííàÿ ïðîöåíòíàÿ ñòàâêà";
+ Text[ polish ] = "Sta³a stopa oprocentowania";
+ Text[ japanese ] = "ˆê’è—˜—¦";
+ Text[ chinese_traditional ] = "«í©w§Q²v";
+ Text[ arabic ] = "äÓÈÉ ÝÇÆÏÉ ËÇÈÊÉ.";
+ Text[ dutch ] = "vaste rentevoet";
+ Text[ chinese_simplified ] = "ºã¶¨ÀûÂÊ";
+ Text[ greek ] = "Óôáèåñü åðéôüêéï";
+ Text[ korean ] = "°íÁ¤ ÀÌÀÚÀ²";
+ Text[ turkish ] = "Sabit faiz oraný";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ {
+ Text = "BW" ;
+ Text [ english ] = "pv" ;
+ Text [ norwegian ] = "BW" ;
+ Text [ italian ] = "VA" ;
+ Text [ portuguese_brazilian ] = "GW" ;
+ Text [ portuguese ] = "VA" ;
+ Text [ finnish ] = "BW" ;
+ Text [ danish ] = "NV" ;
+ Text [ french ] = "VA" ;
+ Text [ swedish ] = "NV" ;
+ Text [ dutch ] = "HW" ;
+ Text [ spanish ] = "VA" ;
+ Text [ english_us ] = "pv" ;
+ Text[ chinese_simplified ] = "pv";
+ Text[ russian ] = "Òç";
+ Text[ polish ] = "PV";
+ Text[ japanese ] = "Œ»Ý‰¿’l";
+ Text[ chinese_traditional ] = "pv";
+ Text[ arabic ] = "PV";
+ Text[ dutch ] = "HW";
+ Text[ chinese_simplified ] = "pv";
+ Text[ greek ] = "PV";
+ Text[ korean ] = "pv";
+ Text[ turkish ] = "Bugünkü deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ {
+ Text = "Barwert. Der momentane Wert der Investition." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Gegenwartswert der Einlage." ;
+ Text [ italian ] = "Valore attuale dell'investimento" ;
+ Text [ portuguese_brazilian ] = "Gegenwartswert der Einlage." ;
+ Text [ portuguese ] = "é o valor actual do investimento." ;
+ Text [ finnish ] = "Gegenwartswert der Einlage." ;
+ Text [ danish ] = "Nutidsværdi. Investeringens nuværende værdi." ;
+ Text [ french ] = "Valeur actuelle de l'investissement" ;
+ Text [ swedish ] = "Nuvarande värde. Det nuvarande värdet för investering." ;
+ Text [ dutch ] = "Huidige waarde. Berekent de huidige waarde van een investering." ;
+ Text [ spanish ] = "Valor actual. El valor actual de la inversión." ;
+ Text [ english_us ] = "The present value. The current value of the investment." ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£Ò»ÏîͶ×ʵÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ russian ] = "Òåêóùåå çíà÷åíèå èíâåñòèöèè.";
+ Text[ polish ] = "Bie¿¹ca wartoœæ inwestycji.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB“ŠŽ‘‚ÌŒ»Ý‰¿’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "Ðä²{­È¡C¤@¶µ§ë¸êªº¥Ø«e»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÍÇáíÉ ááÇÓÊËãÇÑ.";
+ Text[ dutch ] = "Huidige waarde. Berekent de huidige waarde van een investering.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£Ò»ÏîͶ×ʵÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Ç ðáñïýóá áîßá ìéáò åðÝíäõóçò.";
+ Text[ korean ] = "ÇöÀç°ª. ÅõÀÚÀÇ ÇöÀç °ª";
+ Text[ turkish ] = "Bugünkü deðer. Yatýrýmýn bugünkü deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "ZW" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "ZW" ;
+ Text [ italian ] = "VAL.FUT" ;
+ Text [ portuguese_brazilian ] = "ZW" ;
+ Text [ portuguese ] = "Vf" ;
+ Text [ finnish ] = "ZW" ;
+ Text [ danish ] = "FV" ;
+ Text [ french ] = "VC" ;
+ Text [ swedish ] = "FV" ;
+ Text [ dutch ] = "TW" ;
+ Text [ spanish ] = "Vf" ;
+ Text [ english_us ] = "fv" ;
+ Text[ chinese_simplified ] = "fv";
+ Text[ russian ] = "ÁÇ";
+ Text[ polish ] = "FV";
+ Text[ japanese ] = "«—ˆ‰¿’l";
+ Text[ chinese_traditional ] = "fv";
+ Text[ arabic ] = "Fv";
+ Text[ dutch ] = "TW";
+ Text[ chinese_simplified ] = "fv";
+ Text[ greek ] = "fv";
+ Text[ korean ] = "fv";
+ Text[ turkish ] = "Gelecek deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zukünftiger Wert der Einlage. : Zuk³nftiger Wert der Einlage. */
+ Text = "Zukünftiger Wert der Investition." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zukünftiger Wert der Investition." ;
+ Text [ italian ] = "Valore futuro dell'investimento" ;
+ Text [ portuguese_brazilian ] = "Zukünftiger Wert der Einlage." ;
+ Text [ portuguese ] = "é o valor futuro do investimento." ;
+ Text [ finnish ] = "Zukünftiger Wert der Einlage." ;
+ Text [ danish ] = "Investeringens fremtidværdi." ;
+ Text [ french ] = "Valeur future de l'investissement." ;
+ Text [ swedish ] = "Framtida värde av investering." ;
+ Text [ dutch ] = "Toekomstige waarde van de investering." ;
+ Text [ spanish ] = "Valor futuro de la inversión." ;
+ Text [ english_us ] = "The future value of the investment." ;
+ Text[ chinese_simplified ] = "Ò»ÏîͶ×ʵÄδÀ´Öµ¡£";
+ Text[ russian ] = "Áóäóùåå çíà÷åíèå èíâåñòèöèè.";
+ Text[ polish ] = "Wartoœæ przysz³a inwestycji.";
+ Text[ japanese ] = "“ŠŽ‘‚Ì«—ˆ‰¿’lB";
+ Text[ chinese_traditional ] = "¤@¶µ§ë¸êªº¥¼¨Ó­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÓÊÞÈáíÉ ááÇÓÊËãÇÑ.";
+ Text[ dutch ] = "Toekomstige waarde van de investering.";
+ Text[ chinese_simplified ] = "Ò»ÏîͶ×ʵÄδÀ´Öµ¡£";
+ Text[ greek ] = "ÌåëëïíôéêÞ ôéìÞ ôçò åðÝíäõóçò";
+ Text[ korean ] = "ÅõÀÚÀÇ ¹Ì·¡ °¡Ä¡ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Yatýrýmýn gelecek deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZGZ #*=-
+ Resource SC_OPCODE_ZGZ
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Zins. Berechnet den Zinssatz, der die Rendite aus einer Investition darstellt." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zins. Berechnet den Zinssatz, der die Rendite aus einer Einlage darstellt." ;
+ Text [ italian ] = "Calcola il tasso d'interessi che rappresenta la rendita di un investimento." ;
+ Text [ portuguese_brazilian ] = "Zins. Berechnet den Zinssatz, der die Rendite aus einer Einlage darstellt." ;
+ Text [ portuguese ] = "Juros. Calcula a taxa de juro de uma anuidade." ;
+ Text [ finnish ] = "Zins. Berechnet den Zinssatz, der die Rendite aus einer Einlage darstellt." ;
+ Text [ danish ] = "Rente. Beregner den rentesats, som repræsenterer det årlige renteudbytte fra en investering." ;
+ Text [ french ] = "Calcule le taux d'intérêt qui représente la rentabilité d'un investissement." ;
+ Text [ swedish ] = "Ränta. Beräknar räntesatsen som utgör avkastningen på en investering." ;
+ Text [ dutch ] = "Rente. Berekent de rentevoet die het rendement uit een investering weergeeft." ;
+ Text [ spanish ] = "Interés. Devuelve la tasa de interés del rendimiento de una inversión." ;
+ Text [ english_us ] = "Interest. Calculates the interest rate which represents the rate of return from an investment." ;
+ Text[ chinese_simplified ] = "ÀûÂÊ¡£¼ÆËã±íʾͶ×ÊÓ®ÀûµÄÀûÂÊ¡£";
+ Text[ russian ] = "Ïðîöåíòû. Âû÷èñëÿåò ïðîöåíòíóþ ñòàâêó, êîòîðàÿ ïðåäñòàâëÿåò äîõîä îò èíâåñòèöèè.";
+ Text[ polish ] = "Odsetki. Oblicza stopê procentow¹ dla wk³adu w okreœlonym czasie w stosunku do w³o¿onego kapita³u.";
+ Text[ japanese ] = "—˜‘§B“ŠŽ‘‚©‚瓾‚ç‚ê‚é—˜“¾‚̈ê’è‚Ì—˜—¦‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "§Q®§¡C­pºâÅã¥Ü§ë¸êŧQªº§Q²v¡C";
+ Text[ arabic ] = "ÊÍÓÈ äÓÈÉ ÇáÝÇÆÏÉ ÇáÊí ÊãËáåÇ äÓÈÉ ÇáÅÑÌÇÚ áÇÓÊËãÇÑ ãÇ.";
+ Text[ dutch ] = "Rente. Berekent de rentevoet die het rendement uit een investering weergeeft.";
+ Text[ chinese_simplified ] = "ÀûÂÊ¡£¼ÆËã±íʾͶ×ÊÓ®ÀûµÄÀûÂÊ¡£";
+ Text[ greek ] = "Åðéôüêéï. Õðïëïãßæåé ôïí ôüêï, ï ïðïßïò áíôéðñïóùðåýåé ôçí áðüäïóç ôçò åðÝíäõóçò.";
+ Text[ korean ] = "ÀÌÀÚ. ÅõÀÚÀÇ ¹ÝȯÀ²¿¡ ÀÇÇØ Ç¥½ÃµÇ´Â ÀÌÀÚÀ²À» »êÃâ";
+ Text[ turkish ] = "Faiz. Yatýrýmýn gelirini temsil eden faiz oranýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_FINANZ;
+ U2S( HID_FUNC_ZGZ );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "P" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "P" ;
+ Text [ italian ] = "P" ;
+ Text [ portuguese_brazilian ] = "P" ;
+ Text [ portuguese ] = "P" ;
+ Text [ finnish ] = "P" ;
+ Text [ danish ] = "P" ;
+ Text [ french ] = "P" ;
+ Text [ swedish ] = "P" ;
+ Text [ dutch ] = "P" ;
+ Text [ spanish ] = "períodos" ;
+ Text [ english_us ] = "P" ;
+ Text[ chinese_simplified ] = "P";
+ Text[ russian ] = "Ïåðèîä";
+ Text[ polish ] = "Okres";
+ Text[ japanese ] = "ŠúŠÔ";
+ Text[ chinese_traditional ] = "P";
+ Text[ arabic ] = "P";
+ Text[ dutch ] = "P";
+ Text[ chinese_simplified ] = "P";
+ Text[ greek ] = "P";
+ Text[ korean ] = "P";
+ Text[ turkish ] = "D";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Anzahl der Perioden für die Berechnung : Anzahl der Perioden f³r die Berechnung */
+ Text = "Anzahl der Perioden für die Berechnung" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Anzahl der Perioden für die Berechnung" ;
+ Text [ italian ] = "Numero dei periodi per il calcolo." ;
+ Text [ portuguese_brazilian ] = "Anzahl der Perioden für die Berechnung" ;
+ Text [ portuguese ] = "é o número de períodos a calcular." ;
+ Text [ finnish ] = "Anzahl der Perioden für die Berechnung" ;
+ Text [ danish ] = "Antallet af perioder for beregningen." ;
+ Text [ french ] = "Le nombre de périodes pour le calcul." ;
+ Text [ swedish ] = "Antal perioder för beräkningen." ;
+ Text [ dutch ] = "Aantal perioden voor de berekening." ;
+ Text [ spanish ] = "es el número de períodos para el cálculo" ;
+ Text [ english_us ] = "The number of periods used in the calculation." ;
+ Text[ chinese_simplified ] = "¼ÆËãµÄÖÜÆÚÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ïåðèîäîâ äëÿ âû÷èñëåíèé";
+ Text[ polish ] = "Liczba rat dla obliczeñ";
+ Text[ japanese ] = "“ŠŽ‘ŠúŠÔ‘S‘Ì‚Å‚ÌŽx•¥‰ñ”‚̇Œv";
+ Text[ chinese_traditional ] = "­pºâªº¶g´Á¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÝÊÑÇÊ ÇáÊí ÊÑíÏ ÍÓÇÈåÇ.";
+ Text[ dutch ] = "Aantal perioden voor de berekening.";
+ Text[ chinese_simplified ] = "¼ÆËãµÄÖÜÆÚÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí ðåñéüäùí ãéá ôïí õðïëïãéóìü";
+ Text[ korean ] = "°è»ê¿¡ »ç¿ëµÇ´Â ÁÖ±âÀÇ ¼ö";
+ Text[ turkish ] = "Hesaplamada kullanýlan dönem sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "BW" ;
+ Text [ english ] = "pv" ;
+ Text [ norwegian ] = "BW" ;
+ Text [ italian ] = "VA" ;
+ Text [ portuguese_brazilian ] = "GW" ;
+ Text [ portuguese ] = "VA" ;
+ Text [ finnish ] = "BW" ;
+ Text [ danish ] = "NV" ;
+ Text [ french ] = "VA" ;
+ Text [ swedish ] = "NV" ;
+ Text [ dutch ] = "HW" ;
+ Text [ spanish ] = "va" ;
+ Text [ english_us ] = "pv" ;
+ Text[ chinese_simplified ] = "PV";
+ Text[ russian ] = "Òç";
+ Text[ polish ] = "PV";
+ Text[ japanese ] = "Œ»Ý‰¿’l";
+ Text[ chinese_traditional ] = "PV";
+ Text[ arabic ] = "PV";
+ Text[ dutch ] = "HW";
+ Text[ chinese_simplified ] = "PV";
+ Text[ greek ] = "PV";
+ Text[ korean ] = "pv";
+ Text[ turkish ] = "Bugünkü deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ {
+ Text = "Barwert. Der momentane Wert der Investition." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Gegenwartswert der Einlage." ;
+ Text [ italian ] = "Valore attuale dell'investimento." ;
+ Text [ portuguese_brazilian ] = "Gegenwartswert der Einlage." ;
+ Text [ portuguese ] = "Valor actual. Representa o valor actual de um investimento." ;
+ Text [ finnish ] = "Gegenwartswert der Einlage." ;
+ Text [ danish ] = "Nutidsværdi. Investeringens nuværende værdi." ;
+ Text [ french ] = "Valeur actuelle de l'investissement." ;
+ Text [ swedish ] = "Nuvarande värde. Nuvarande värdet av investeringen." ;
+ Text [ dutch ] = "Huidige waarde van de investering." ;
+ Text [ spanish ] = "Valor. El valor presente de la inversión." ;
+ Text [ english_us ] = "Present value. The current value of the investment." ;
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£Ò»ÏîͶ×ʵÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ russian ] = "Òåêóùåå çíà÷åíèå âëîæåíèÿ.";
+ Text[ polish ] = "Wartoœæ bie¿¹ca inwestycji.";
+ Text[ japanese ] = "Œ»Ý‰¿’lB“ŠŽ‘‚ÌŒ»Ý‰¿’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "²{ª÷­È¡C¤@¶µ§ë¸êªº¥Ø«e»ù­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÍÇáíÉ ááÇÓÊËãÇÑ.";
+ Text[ dutch ] = "Huidige waarde van de investering.";
+ Text[ chinese_simplified ] = "ÏÖ½ðÖµ¡£Ò»ÏîͶ×ʵÄÄ¿Ç°¼ÛÖµ¡£";
+ Text[ greek ] = "Ðáñïýóá áîßá. Ç ðáñïýóá áîßá ìéáò åðÝíäõóçò.";
+ Text[ korean ] = "ÇöÀç°ª. ÅõÀÚÀÇ ÇöÀç °ª";
+ Text[ turkish ] = "Bugünkü deðer. Yatýrýmýn bugünkü deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "ZW" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "ZW" ;
+ Text [ italian ] = "VAL.FUT" ;
+ Text [ portuguese_brazilian ] = "ZW" ;
+ Text [ portuguese ] = "VF" ;
+ Text [ finnish ] = "ZW" ;
+ Text [ danish ] = "FV" ;
+ Text [ french ] = "VC" ;
+ Text [ swedish ] = "FV" ;
+ Text [ dutch ] = "TW" ;
+ Text [ spanish ] = "vf" ;
+ Text [ english_us ] = "fv" ;
+ Text[ chinese_simplified ] = "FV";
+ Text[ russian ] = "Áñ";
+ Text[ polish ] = "FV";
+ Text[ japanese ] = "«—ˆ‰¿’l";
+ Text[ chinese_traditional ] = "FV";
+ Text[ arabic ] = "FV";
+ Text[ dutch ] = "TW";
+ Text[ chinese_simplified ] = "FV";
+ Text[ greek ] = "FV";
+ Text[ korean ] = "fv";
+ Text[ turkish ] = "Gelecek deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zukünftiger Wert der Einlage. : Zuk³nftiger Wert der Einlage. */
+ Text = "Zukünftiger Wert der Investition." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zukünftiger Wert der Einlage." ;
+ Text [ italian ] = "Valore futuro dell'investimento." ;
+ Text [ portuguese_brazilian ] = "Zukünftiger Wert der Einlage." ;
+ Text [ portuguese ] = "Representa o valor futuro de um investimento." ;
+ Text [ finnish ] = "Zukünftiger Wert der Einlage." ;
+ Text [ danish ] = "Investeringens fremtidværdi." ;
+ Text [ french ] = "Représente la valeur future d'un investissement." ;
+ Text [ swedish ] = "Framtida värdet av investeringen." ;
+ Text [ dutch ] = "Toekomstige waarde van de investering." ;
+ Text [ spanish ] = "Valor futuro de la inversión." ;
+ Text [ english_us ] = "The future value of the investment." ;
+ Text[ chinese_simplified ] = "Ò»ÏîͶ×ʵÄδÀ´Öµ¡£";
+ Text[ russian ] = "Áóäóùåå çíà÷åíèå âëîæåíèÿ.";
+ Text[ polish ] = "Wartoœæ przysz³a inwestycji.";
+ Text[ japanese ] = "“ŠŽ‘‚Ì«—ˆ‰¿’lB";
+ Text[ chinese_traditional ] = "¤@¶µ§ë¸êªº¥¼¨Ó­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÓÊÞÈáíÉ ááÇÓÊËãÇÑ.";
+ Text[ dutch ] = "Toekomstige waarde van de investering.";
+ Text[ chinese_simplified ] = "Ò»ÏîͶ×ʵÄδÀ´Öµ¡£";
+ Text[ greek ] = "ÌåëëïíôéêÞ ôéìÞ ôçò åðÝíäõóçò.";
+ Text[ korean ] = "ÅõÀÚÀÇ ¹Ì·¡ °¡Ä¡ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Yatýrýmýn gelecek deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTBEZUG #*=-
+ Resource SC_OPCODE_IS_REF
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn der Wert ein Bezug ist." ;
+ Text [ english ] = "Returns TRUE if value refers to a reference." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert ein Bezug ist." ;
+ Text [ italian ] = "Restituisce VERO se il valore è un riferimento." ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein Bezug ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se o valor é uma referência." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert ein Bezug ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien er en reference." ;
+ Text [ french ] = "Renvoie VRAI si la valeur est une référence." ;
+ Text [ swedish ] = "Returnerar SANT om värdet är en referens." ;
+ Text [ dutch ] = "Resulteert in WAAR als de waarde een verwijzing is." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es una referencia." ;
+ Text [ english_us ] = "Returns TRUE if value is a reference." ;
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµÊÇÒ»¸öÒýÓã¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå ÿâëÿåòñÿ ññûëêîé.";
+ Text[ polish ] = "Zwraca PRAWDA, jeœli wartoœæ jest adresem.";
+ Text[ japanese ] = "’l‚ªŽQÆ‚ÌꇤTRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG³o­Ó¼Æ­È¬O¤@­Ó°Ñ·Ó¡M¨º´N¶Ç¦^ TRUE ¡C";
+ Text[ arabic ] = "ÊÞÏã TRUE¡ ÅÐÇ ßÇäÊ value ãÑÌÚÇð.";
+ Text[ dutch ] = "Resulteert in WAAR als de waarde een verwijzing is.";
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµÊÇÒ»¸öÒýÓã¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE áí ç ôéìÞ åßíáé ìéá áíáöïñÜ.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀÌÂüÁ¶¶ó¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer bir referans ise sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_ISTBEZUG );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "is the value you want tested." ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "è il valore da esaminare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die u wilt testen." ;
+ Text [ spanish ] = "Es el valor que desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß.";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù.";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTFEHL #*=-
+ Resource SC_OPCODE_IS_ERR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn der Wert ein Fehlerwert ungleich #NV ist." ;
+ Text [ english ] = "Returns TRUE if value refers to any error value except #N/A." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert ein Fehlerwert ungleich #NV ist." ;
+ Text [ italian ] = "Restituisce VERO se il valore è un valore di errore diverso da #N/D." ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein Fehlerwert ungleich #NV ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se o valor se refere a qualquer valor de erro diferente de #N/D." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert ein Fehlerwert ungleich #NV ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien er en hvilken som helst fejlværdi forskellig fra #I/T" ;
+ Text [ french ] = "Renvoie VRAI si la valeur fait référence à une des valeurs d'erreur, à l'exception de #N/A." ;
+ Text [ swedish ] = "Returnerar SANT när värdet är ett felvärde som ej är lika med #NV." ;
+ Text [ dutch ] = "Resulteert in WAAR als de waarde een foutwaarde ongelijk aan #NV is." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es cualquier valor de error distinto de #N/A." ;
+ Text [ english_us ] = "Returns TRUE if the value is an error value not equal to #N/A." ;
+ Text[ chinese_simplified ] = "Èç¹ûÒ»¸ö´íÎóÊýÖµ²»µÈÓÚ #NV £¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå ÿâëÿåòñÿ ëþáûì îøèáî÷íûì çíà÷åíèåì, êðîìå Í/Ä.";
+ Text[ polish ] = "Zwraca wartoœæ PRAWDA, je¿eli wartoœæ b³êdu jest ró¿na od #N/D.";
+ Text[ japanese ] = "¾Ù‚ª#N/A‚Å‚È‚¢´×°‚Ìê‡ATRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG¤@­Ó¿ù»~¼Æ­È¤£µ¥©ó #NV ¡M¨º´N¶Ç¦^ TRUE ¡C";
+ Text[ arabic ] = "ÊÞÏã TRUE¡ ÅÐÇ ßÇäÊ value åí ÞíãÉ ÎØà ÈÇÓÊËäÇÁ #N/A.";
+ Text[ dutch ] = "Resulteert in WAAR als de waarde een foutwaarde ongelijk aan #NV is.";
+ Text[ chinese_simplified ] = "Èç¹ûÒ»¸ö´íÎóÊýÖµ²»µÈÓÚ #NV £¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE áí ç ôéìÞ óöÜëìáôïò åßíáé äéÜöïñç ôïõ #N/A.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀÌ #N/A¿Íµ¿ÀÏÇÏÁö ¾ÊÀº ¿À·ù °ªÀ̶ó¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer, #NV/A deðerine eþit olmayan bir hata deðeri ise sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_ISTFEHL );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "is the value you want tested." ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "è il valore da esaminare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die u wilt testen." ;
+ Text [ spanish ] = "Es el valor que desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTFEHLER #*=-
+ Resource SC_OPCODE_IS_ERROR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn der Wert ein Fehlerwert ist." ;
+ Text [ english ] = "Returns TRUE if value refers to any error value (#N/A, #VALUE!, #REF! or #NAME?)." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert ein Fehlerwert ist." ;
+ Text [ italian ] = "Restituisce VERO se il valore è un valore di errore." ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein Fehlerwert ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se o valor se refere a qualquer valor de erro (#N/A,#VALOR!,'REF! ou NOME?)." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert ein Fehlerwert ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien er en hvilken som helst fejlværdi." ;
+ Text [ french ] = "Renvoie VRAI si la valeur fait référence à une valeur d'erreur." ;
+ Text [ swedish ] = "Returnerar SANT om värdet är ett felvärde." ;
+ Text [ dutch ] = "Resulteert in WAAR als de waarde een foutwaarde is." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es un valor de error." ;
+ Text [ english_us ] = "Returns TRUE if the value is an error value." ;
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµÊÇÒ»¸ö´íÎóÊýÖµ£¬ÄÇô¾Í·´À¡ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå ÿâëÿåòñÿ ëþáûì îøèáî÷íûì çíà÷åíèåì.";
+ Text[ polish ] = "Zwraca PRAWDA, jeœli wartoœæ jest dowoln¹ wartoœci¹ b³êdu.";
+ Text[ japanese ] = "’l‚ª´×°’l‚ÌꇤTRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG³o­Ó¼Æ­È¬O¤@­Ó¿ù»~¼Æ­È¡M¨º»ò´N¶Ç¦^ TRUE ¡C";
+ Text[ arabic ] = "ÊÞÏã TRUE¡ ÅÐÇ ßÇäÊ value åí ÃíÉ ÞíãÉ ÎØÃ.";
+ Text[ dutch ] = "Resulteert in WAAR als de waarde een foutwaarde is.";
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµÊÇÒ»¸ö´íÎóÊýÖµ£¬ÄÇô¾Í·´À¡ TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE áí ç ôéìÞ åßíáé ôéìÞ óöÜëìáôïò.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀÌ ¿À·ù °ªÀ̶ó¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer, bir hata deðeri ise sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_ISTFEHLER );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "is the value you want tested." ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "è il valore da esaminare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die wilt testen." ;
+ Text [ spanish ] = "Es el valor que desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù.";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTLEER #*=-
+ Resource SC_OPCODE_IS_EMPTY
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn der Wert ein Bezug auf eine leere Zelle ist." ;
+ Text [ english ] = "Returns TRUE if value refers to an empty cell." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert ein Bezug auf eine leere Zelle ist." ;
+ Text [ italian ] = "Restituisce VERO se il valore è un riferimento ad una cella vuota." ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein Bezug auf eine leere Zelle ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO; se o valor se refere a uma célula vazia." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert ein Bezug auf eine leere Zelle ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien refererer til en tom celle." ;
+ Text [ french ] = "Renvoie VRAI si la valeur fait référence à une cellule vide." ;
+ Text [ swedish ] = "Returnerar SANT om värdet refererar till en tom cell." ;
+ Text [ dutch ] = "Resulteert in WAAR als de waarde een verwijzing naar een lege cel is." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es una celda vacía." ;
+ Text [ english_us ] = "Returns TRUE if value refers to an empty cell." ;
+ Text[ chinese_simplified ] = "Èç¹ûÊýÖµÊÇÒ»¸ö¿Õ°×µÄµ¥Ôª¸ñµÄÒýÓã¬ÄÇô¾Í·´À¡ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå ÿâëÿåòñÿ ññûëêîé íà ïóñòóþ ÿ÷åéêó.";
+ Text[ polish ] = "Zwraca PRAWDA, jeœli wartoœæ odnosi siê do pustej komórki.";
+ Text[ japanese ] = "’l‚ª‹ó”’¾Ù‚ðŽQÆ‚µ‚Ä‚¢‚éꇤTRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG¼Æ­È¬O¤@­ÓªÅ¥ÕªºÀx¦s®æ°Ñ·Ó¡M¨º»ò´N¶Ç¦^ TRUE ¡C";
+ Text[ arabic ] = "ÊÞÏã TRUE¡ ÅÐÇ ßÇäÊ value ÊÔíÑ Åáì ÎáíÉ ÝÇÑÛÉ.";
+ Text[ dutch ] = "Resulteert in WAAR als de waarde een verwijzing naar een lege cel is.";
+ Text[ chinese_simplified ] = "Èç¹ûÊýÖµÊÇÒ»¸ö¿Õ°×µÄµ¥Ôª¸ñµÄÒýÓã¬ÄÇô¾Í·´À¡ TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE áí ç ôéìÞ åßíáé ìéá áíáöïñÜ óå Ýíá êåíü êåëß.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀÌ ºó ¼¿À» ÂüÁ¶ÇÑ´Ù¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer, boþ bir hücreyi referans alýyorsa sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_ISTLEER );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "is the value you want tested." ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "è il valore da esaminare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die u wilt testen." ;
+ Text [ spanish ] = "Es el valor que desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù.";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTLOG #*=-
+ Resource SC_OPCODE_IS_LOGICAL
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Liefert WAHR, wenn der Wert ein logisches Zahlformat trägt. : Liefert WAHR, wenn der Wert ein logisches Zahlformat trõgt. */
+ Text = "Liefert WAHR, wenn der Wert ein logisches Zahlformat trägt." ;
+ Text [ english ] = "Returns TRUE if value refers to a logical value." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert ein logisches Zahlformat trägt." ;
+ Text [ italian ] = "Restituisce VERO se il valore ha un formato numerico logico." ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein logisches Zahlformat trägt." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se o valor se refere a um valor lógico." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert ein logisches Zahlformat trägt." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien er en logisk værdi." ;
+ Text [ french ] = "Renvoie VRAI si la valeur fait référence à une valeur logique." ;
+ Text [ swedish ] = "Returnerar SANT om värdet har ett logiskt talformat." ;
+ Text [ dutch ] = "Geeft als resultaat WAAR als de waarde een logische waarde is." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es un valor lógico." ;
+ Text [ english_us ] = "Returns TRUE if the value carries a logical number format." ;
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµÊÇÒ»¸öÂß¼­Öµ£¬ÄǾͷ´À¡TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå ÿâëÿåòñÿ ëîãè÷åñêèì.";
+ Text[ polish ] = "Zwraca PRAWDA, jeœli wartoœæ jest wartoœci¹ logiczn¹.";
+ Text[ japanese ] = "’l‚ª˜_—’l‚Ìê‡TRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG³o­Ó¼Æ­È¬O¤@­ÓÅÞ¿è­È¡M¨º´N¶Ç¦^TRUE ¡C";
+ Text[ arabic ] = "ÊÞÏã TRUE¡ ÅÐÇ ßÇäÊ value ÊÔíÑ Åáì ÊäÓíÞ ÃÑÞÇã ãäØÞí.";
+ Text[ dutch ] = "Geeft als resultaat WAAR als de waarde een logische waarde is.";
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµÊÇÒ»¸öÂß¼­Öµ£¬ÄǾͷ´À¡TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE (ÁËÇÈÇÓ) áí ç ôéìÞ ðåñéÝ÷åé ìéá ëïãéêÞ ìïñöÞ áñéèìïý.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀÌ³í¸®Àû ¼ýÀÚ ¼­½ÄÀ» Àü´ÞÇÑ´Ù¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer, mantýksal bir sayý formatý içeriyorsa sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_ISTLOG );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "is the value you want tested." ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "è il valore da esaminare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die u wilt testen." ;
+ Text [ spanish ] = "Es el valor que desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß.";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTNV #*=-
+ Resource SC_OPCODE_IS_NV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn der Wert gleich #NV ist." ;
+ Text [ english ] = "Returns TRUE if value refers to the #N/A (value not available) error value." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert gleich #NV ist." ;
+ Text [ italian ] = "Restituisce VERO se il valore è uguale a #N/D (valore non disponibile)." ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert gleich #NV ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se o valor é igual ao valor de erro #N/A.." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert gleich #NV ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien er lig med #I/T." ;
+ Text [ french ] = "Renvoie VRAI si la valeur fait référence à la valeur d'erreur #N/A." ;
+ Text [ swedish ] = "Returnerar SANT om värdet är lika med #N/A." ;
+ Text [ dutch ] = "Resulteert in WAAR als de waarde gelijk is aan #NV." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es el valor de error #N/A." ;
+ Text [ english_us ] = "Returns TRUE if value equals #N/A." ;
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµµÈÓÚ #NV £¬ÄǾͷ´À¡TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå ÿâëÿåòñÿ îøèáî÷íûì çíà÷åíèåì #Í/Ä.";
+ Text[ polish ] = "Zwraca wartoœæ PRAWDA, jeœli wartoœci¹ b³êdu jest #NV.";
+ Text[ japanese ] = "’l‚ª#N/A‚ÌꇤTRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG³o­Ó¼Æ­Èµ¥©ó #NV ¡M¨º´N¶Ç¦^TRUE ¡C";
+ Text[ arabic ] = "ÊÞÏã TRUE¡ ÅÐÇ ßÇäÊ Value åí ÇáÞíãÉ ÇáÎØà #N/A.";
+ Text[ dutch ] = "Resulteert in WAAR als de waarde gelijk is aan #NV.";
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµµÈÓÚ #NV £¬ÄǾͷ´À¡TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE (ÁËÇÈÇÓ) åÜí ç ôéìÞ åßíáé ßóç ìå #NV.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀÌ #N/A¿Íµ¿ÀÏÇÏ´Ù¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer eþittir #NV ise sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_ISTNV );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "is the value you want tested." ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "è il valore da esaminare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die u wilt testen." ;
+ Text [ spanish ] = "Es el valor que desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß.";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù.";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTKTEXT #*=-
+ Resource SC_OPCODE_IS_NON_STRING
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn der Wert kein Text ist." ;
+ Text [ english ] = "Returns TRUE if value refers to any item that is not text." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert kein Text ist." ;
+ Text [ italian ] = "Restituisce VERO se il valore non è un testo." ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert kein Text ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO; se o valor não for texto." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert kein Text ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien ikke er tekst." ;
+ Text [ french ] = "Renvoie VRAI si la valeur n'est pas du texte." ;
+ Text [ swedish ] = "Returnerar SANT om värdet inte är en text." ;
+ Text [ dutch ] = "Resulteert in WAAR als de waarde geen tekst is." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es un valor que no sea texto." ;
+ Text [ english_us ] = "Returns TRUE if the value is not text." ;
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµ²»ÊÇÎÄ×Ö£¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå íå ÿâëÿåòñÿ òåêñòîì.";
+ Text[ polish ] = "Zwraca PRAWDA, jeœli wartoœæ nie jest tekstem.";
+ Text[ japanese ] = "’l‚ª•¶Žš—ñ‚Å‚È‚¢ê‡¤TRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG³o­Ó¼Æ­È¤£¬O¤å¦r¡M¨º´N¶Ç¦^ TRUE ¡C";
+ Text[ arabic ] = "ÊÞÏã TRUE¡ ÅÐÇ ßÇäÊ value áíÓÊ äÕÇð.";
+ Text[ dutch ] = "Resulteert in WAAR als de waarde geen tekst is.";
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµ²»ÊÇÎÄ×Ö£¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE (ÁËÇÈÇÓ) åÜí ç ôéìÞ äåí åßíáé êåßìåíï.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀÌÅؽºÆ®°¡ ¾Æ´Ï¶ó¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer bir metin deðil ise sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_ISTKTEXT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "is the value you want tested." ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "è il valore da esaminare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die u wilt testen." ;
+ Text [ spanish ] = "Es el valor que desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß.";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTTEXT #*=-
+ Resource SC_OPCODE_IS_STRING
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn der Wert ein Text ist." ;
+ Text [ english ] = "Returns TRUE if value refers to text." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert ein Text ist." ;
+ Text [ italian ] = "Restituisce VERO se il valore è un testo." ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein Text ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se o valor é um texto." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert ein Text ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien er en tekst." ;
+ Text [ french ] = "Renvoie VRAI si la valeur est un texte." ;
+ Text [ swedish ] = "Returnerar SANT om värdet är en text." ;
+ Text [ dutch ] = "Resulteert in WAAR als de waarde een tekst is." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es texto." ;
+ Text [ english_us ] = "Returns TRUE if value is text." ;
+ Text[ chinese_simplified ] = "Èç¹ûÊýÖµÊÇÒ»¸öÎÄ×Ö£¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå ÿâëÿåòñÿ òåêñòîì.";
+ Text[ polish ] = "Zwraca PRAWDA, jeœli wartoœæ jest tekstem.";
+ Text[ japanese ] = "’l‚ªÃ·½Ä‚ÌꇤTRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG¼Æ­È¬O¤@­Ó¤å¦r¡M¨º´N¶Ç¦^ TRUE ¡C";
+ Text[ arabic ] = "ÊÞÏã TRUE¡ ÅÐÇ ßÇäÊ value äÕÇð.";
+ Text[ dutch ] = "Resulteert in WAAR als de waarde een tekst is.";
+ Text[ chinese_simplified ] = "Èç¹ûÊýÖµÊÇÒ»¸öÎÄ×Ö£¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE (ÁËÇÈÇÓ) åÜí ç ôéìÞ åßíáé êåßìåíï.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀÌÅؽºÆ®¶ó¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer bir metin ise sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_ISTTEXT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "is the value you want tested." ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "è il valore da esaminare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die u wilt testen." ;
+ Text [ spanish ] = "Es el valor que desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß.";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù.";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTZAHL #*=-
+ Resource SC_OPCODE_IS_VALUE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn der Wert eine Zahl ist." ;
+ Text [ english ] = "Returns TRUE if value refers to a number." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert eine Zahl ist." ;
+ Text [ italian ] = "Restituisce VERO se il valore è un numero." ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert eine Zahl ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se o valor é um número." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert eine Zahl ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien er et tal." ;
+ Text [ french ] = "Renvoie VRAI si la valeur est un nombre." ;
+ Text [ swedish ] = "Returnerar SANT om värdet är ett tal." ;
+ Text [ dutch ] = "Resulteert in WAAR als de waarde een getal is." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es un número." ;
+ Text [ english_us ] = "Returns TRUE if value is a number." ;
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµÊÇÒ»¸öÊý×Ö£¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå ÿâëÿåòñÿ ÷èñëîì.";
+ Text[ polish ] = "Zwraca PRAWDA, jeœli wartoœæ jest liczb¹.";
+ Text[ japanese ] = "’l‚ª”’l‚ÌꇤTRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG³o­Ó¼Æ­È¬O¤@­Ó¼Æ¦r¡M¨º´N¶Ç¦^ TRUE ¡C";
+ Text[ arabic ] = "ÊÞÏã TRUE¡ ÅÐÇ ßÇäÊ value ÑÞãÇð.";
+ Text[ dutch ] = "Resulteert in WAAR als de waarde een getal is.";
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµÊÇÒ»¸öÊý×Ö£¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE (ÁËÇÈÇÓ) åÜí ç ôéìÞ åßíáé áñéèìüò.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀÌ ¼ýÀÚ¶ó¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer bir sayý ise sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_ISTZAHL );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "è il valore da esaminare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die u wilt testen." ;
+ Text [ spanish ] = "Es el valor que desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß.";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù.";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTFORMEL #*=-
+ Resource SC_OPCODE_IS_FORMULA
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn die Zelle eine Formelzelle ist." ;
+ Text [ english ] = "Returns TRUE if cell is cell with a formula." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn die Zelle eine Formelzelle ist." ;
+ Text [ italian ] = "Restituisce VERO se la cella è una cella di formula" ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn die Zelle eine Formelzelle ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se o conteúdo da célula é uma fórmula." ;
+ Text [ finnish ] = "Liefert WAHR, wenn die Zelle eine Formelzelle ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis cellen er en formelcelle." ;
+ Text [ french ] = "Renvoie VRAI si la cellule est une cellule de formule." ;
+ Text [ swedish ] = "Returnerar SANT om cellen är en formelcell." ;
+ Text [ dutch ] = "Resulteert in WAAR als de cel een formule bevat." ;
+ Text [ spanish ] = "Devuelve VERDADERO si la celda es una celda de fórmula." ;
+ Text [ english_us ] = "Returns TRUE if the cell is a formula cell." ;
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öµ¥Ôª¸ñÊÇÒ»¸ö¹«Ê½µ¥Ôª¸ñ£¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè ÿ÷åéêà ÿâëÿåòñÿ ÿ÷åéêîé ôîðìóëû.";
+ Text[ polish ] = "Zwraca PRAWDA, jeœli komórka jest komórk¹ formu³y.";
+ Text[ japanese ] = "¾Ù‚ª”Ž®‚Ìê‡TRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG³o­ÓÀx¦s®æ¬O¤@­Ó¤½¦¡Àx¦s®æ¡M¨º´N¶Ç¦^ TRUE ¡C";
+ Text[ arabic ] = "ÊÞÏã TRUE¡ ÅÐÇ ßÇäÊ ÇáÎáíÉ ÎáíÉ ÕíÛÉ.";
+ Text[ dutch ] = "Resulteert in WAAR als de cel een formule bevat.";
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öµ¥Ôª¸ñÊÇÒ»¸ö¹«Ê½µ¥Ôª¸ñ£¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE (ÁËÇÈÇÓ) áí ôï êåëß åßíáé êåëß ôýðïõ.";
+ Text[ korean ] = "¸¸ÀÏ ¼¿ÀÌ ¼ö½Ä ¼¿À̶ó¸é TRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Hücre bir formül hücresi ise sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_ISTFORMEL );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "reference" ;
+ Text [ norwegian ] = "Bezug" ;
+ Text [ italian ] = "Riferimento" ;
+ Text [ portuguese_brazilian ] = "Bezug" ;
+ Text [ portuguese ] = "Referência" ;
+ Text [ finnish ] = "Bezug" ;
+ Text [ danish ] = "Reference" ;
+ Text [ french ] = "Référence" ;
+ Text [ swedish ] = "referens" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ spanish ] = "Referencia" ;
+ Text [ english_us ] = "reference" ;
+ Text[ chinese_simplified ] = "reference";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ chinese_traditional ] = "reference";
+ Text[ arabic ] = "Reference";
+ Text[ dutch ] = "Verwijzing";
+ Text[ chinese_simplified ] = "reference";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Zelle, die überprüft werden soll. : Die Zelle, die ³berpr³ft werden soll. */
+ Text = "Die Zelle, die überprüft werden soll." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Die Zelle, die überprüft werden soll." ;
+ Text [ italian ] = "La cella da testare" ;
+ Text [ portuguese_brazilian ] = "Die Zelle, die überprüft werden soll." ;
+ Text [ portuguese ] = "é a célula a ser testada." ;
+ Text [ finnish ] = "Die Zelle, die überprüft werden soll." ;
+ Text [ danish ] = "Den celle som skal testes." ;
+ Text [ french ] = "La cellule à examiner." ;
+ Text [ swedish ] = "Cellen som skall testas." ;
+ Text [ dutch ] = "De cel die u wilt testen." ;
+ Text [ spanish ] = "Es la celda que se desea probar." ;
+ Text [ english_us ] = "The cell to be checked." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄµ¥Ôª¸ñ¡£";
+ Text[ russian ] = "Ññûëêà íà ÿ÷åéêó, êîòîðóþ íåîáõîäèìî ïðîâåðèòü.";
+ Text[ polish ] = "Komórka do sprawdzenia.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺Àx¦s®æ¡C";
+ Text[ arabic ] = "ÇáÎáíÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De cel die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄµ¥Ôª¸ñ¡£";
+ Text[ greek ] = "Ôï êåëß ðïõ ðñüêåéôáé íá åëåã÷èåß.";
+ Text[ korean ] = "°Ë»çµÇ¾î¾ß ÇÒ ¼¿ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function FORMEL #*=-
+ Resource SC_OPCODE_FORMULA
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert die Formel einer Formelzelle." ;
+ Text [ english ] = "Returns the formula of a formula cell." ;
+ Text[ english_us ] = "Returns the formula of a formula cell.";
+ Text[ portuguese ] = "Devolve a fórmula de uma célula de fórmulas.";
+ Text[ russian ] = "Âîçâðàùàåò ôîðìóëó ÿ÷åéêè ôîðìóëû.";
+ Text[ greek ] = "Äßíåé ôïí ôýðï åíüò êåëéïý ôýðïõ.";
+ Text[ dutch ] = "Geeft als resultaat de formule van een formulecel.";
+ Text[ french ] = "Renvoie la formule d'une cellule de formule.";
+ Text[ spanish ] = "Devuelve la fórmula de una celda de fórmula.";
+ Text[ italian ] = "restituisce la formula di una cella di formula.";
+ Text[ danish ] = "Returnerer formlen for en formelcelle.";
+ Text[ swedish ] = "Returnerar formeln för en formelcell.";
+ Text[ polish ] = "Dostarcza formu³ê komórki formu³y.";
+ Text[ portuguese_brazilian ] = "Returns the formula of a formula cell.";
+ Text[ japanese ] = "”Ž®¾Ù‚ÌŽ®‚ð•Ô‚µ‚Ü‚·B";
+ Text[ korean ] = "¼ö½Ä¼¿ÀÇ ¼ö½ÄÀ» ¹Ýȯ";
+ Text[ chinese_simplified ] = "·´À¡Ò»¸ö¹«Ê½µ¥Ôª¸ñµÄ¹«Ê½¡£";
+ Text[ chinese_traditional ] = "¤ÏõX¤@­Ó³æ¤¸®æªº¤½¦¡¡C";
+ Text[ arabic ] = "íÞÏã ÇáÕíÛÉ áÃÍÏ ÎáÇíÇ ÇáÕíÛÉ.";
+ Text[ turkish ] = "Formül hücresinin formülünü verir.";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_FORMEL );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "Reference" ;
+ Text[ english_us ] = "Reference";
+ Text[ portuguese ] = "Referência";
+ Text[ russian ] = "Ññûëêà";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ dutch ] = "Referentie";
+ Text[ french ] = "Référence";
+ Text[ spanish ] = "Referencia";
+ Text[ italian ] = "riferimento";
+ Text[ danish ] = "Reference";
+ Text[ swedish ] = "Referens";
+ Text[ polish ] = "Odwo³anie";
+ Text[ portuguese_brazilian ] = "Reference";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ chinese_simplified ] = "ÒýÓÃ";
+ Text[ chinese_traditional ] = "¤Þ¥Î";
+ Text[ arabic ] = "ÇáãÑÌÚ";
+ Text[ turkish ] = "Referans";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Formelzelle." ;
+ Text [ english ] = "The formula cell." ;
+ Text[ english_us ] = "The formula cell.";
+ Text[ portuguese ] = "A célula de fórmulas.";
+ Text[ russian ] = "ß÷åéêà ôîðìóëû.";
+ Text[ greek ] = "Ôï êåëß ôýðïõ.";
+ Text[ dutch ] = "De formulecel";
+ Text[ french ] = "La cellule de formule.";
+ Text[ spanish ] = "La celda de fórmula.";
+ Text[ italian ] = "la cella di formula";
+ Text[ danish ] = "Formelcellen.";
+ Text[ swedish ] = "Formelcellen.";
+ Text[ polish ] = "Komórka formu³y.";
+ Text[ portuguese_brazilian ] = "The formula cell.";
+ Text[ japanese ] = "”Ž®¾Ù¡";
+ Text[ korean ] = "¼ö½Ä ¼¿";
+ Text[ chinese_simplified ] = "¹«Ê½µ¥Ôª¸ñ¡£";
+ Text[ chinese_traditional ] = "¤½¦¡Àx¦s®æ¡C";
+ Text[ arabic ] = "ÎáíÉ ÇáÕíÛÉ.";
+ Text[ turkish ] = "Formül hücresi.";
+ };
+ };
+ // -=*# Resource for function N #*=-
+ Resource SC_OPCODE_N
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Wandelt einen Wert in eine Zahl." ;
+ Text [ english ] = "Returns a value converted to a number." ;
+ Text [ norwegian ] = "Wandelt einen Wert in eine Zahl." ;
+ Text [ italian ] = "Restituisce un valore convertito in numero." ;
+ Text [ portuguese_brazilian ] = "Wandelt einen Wert in eine Zahl." ;
+ Text [ portuguese ] = "Converte um valor em número." ;
+ Text [ finnish ] = "Wandelt einen Wert in eine Zahl." ;
+ Text [ danish ] = "Konverterer en værdi til et tal." ;
+ Text [ french ] = "Renvoie une valeur convertie en nombre." ;
+ Text [ swedish ] = "Omvandlar ett värde till ett tal." ;
+ Text [ dutch ] = "Converteert een waarde naar een getal." ;
+ Text [ spanish ] = "Convierte un valor en un número." ;
+ Text [ english_us ] = "Converts a value to a number." ;
+ Text[ chinese_simplified ] = "ת»»Ò»¸öÊýÖµ³ÉÒ»¸öÊý×Ö¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò çíà÷åíèå â ÷èñëî.";
+ Text[ polish ] = "Przekszta³ca wartoœæ w liczbê.";
+ Text[ japanese ] = "’l‚ð”’l‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "Âà´«¤@­Ó¼Æ­È¦¨¤@­Ó¼Æ¦r¡C";
+ Text[ arabic ] = "ÊÍæá ÞíãÉ Åáì ÑÞã.";
+ Text[ dutch ] = "Converteert een waarde naar een getal.";
+ Text[ chinese_simplified ] = "ת»»Ò»¸öÊýÖµ³ÉÒ»¸öÊý×Ö¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé ìéá ôéìÞ óå Ýíáí áñéèìü.";
+ Text[ korean ] = "°¡Ä¡¸¦ ¼ö·Î º¯È¯µË´Ï´Ù.";
+ Text[ turkish ] = "Bir deðeri sayýya çevirir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_N );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, der als Zahl interpretiert wird." ;
+ Text [ english ] = "is the value you want converted." ;
+ Text [ norwegian ] = "Der Wert, der als Zahl interpretiert wird." ;
+ Text [ italian ] = "è il valore che si desidera convertire." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der als Zahl interpretiert wird." ;
+ Text [ portuguese ] = "é o valor que se deseja converter." ;
+ Text [ finnish ] = "Der Wert, der als Zahl interpretiert wird." ;
+ Text [ danish ] = "Den værdi som skal konverteres." ;
+ Text [ french ] = "La valeur à convertir." ;
+ Text [ swedish ] = "Värdet som tolkas som tal." ;
+ Text [ dutch ] = "De waarde die als getal wordt geïnterpreteerd." ;
+ Text [ spanish ] = "es el valor que desea convertir." ;
+ Text [ english_us ] = "The value to be interpreted as a number." ;
+ Text[ chinese_simplified ] = "Òª±»×ª»»µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, ïðåîáðàçóåìîå â ÷èñëî.";
+ Text[ polish ] = "Wartoœæ, która jest interpretowana jako liczba.";
+ Text[ japanese ] = "”’l‚É•ÏŠ·‚³‚ê‚é’l";
+ Text[ chinese_traditional ] = "­n³QÂà´«ªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÊÍæíáåÇ.";
+ Text[ dutch ] = "De waarde die als getal wordt geïnterpreteerd.";
+ Text[ chinese_simplified ] = "Òª±»×ª»»µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ðïõ åñìçíåýåôáé ùò áñéèìüò.";
+ Text[ korean ] = "°ªÀÌ ¼ýÀÚ·Î Çؼ®µË´Ï´Ù.";
+ Text[ turkish ] = "Sayý olarak yorumlanan deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function NV #*=-
+ Resource SC_OPCODE_NO_VALUE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Nicht verfügbar. Setzt eine Zelle auf den Fehlerwert #NV. : Nicht verf³gbar. Setzt eine Zelle auf den Fehlerwert #NV. */
+ Text = "Nicht verfügbar. Setzt eine Zelle auf den Fehlerwert #NV." ;
+ Text [ english ] = "Returns the error value #N/A." ;
+ Text [ norwegian ] = "Nicht verfügbar. Setzt eine Zelle auf den Fehlerwert #NV." ;
+ Text [ italian ] = "Non disponibile. Imposta nella cella il valore di errore #N/D." ;
+ Text [ portuguese_brazilian ] = "Nicht verfügbar. Setzt eine Zelle auf den Fehlerwert #NV." ;
+ Text [ portuguese ] = "Devolve o valor de erro #N/A." ;
+ Text [ finnish ] = "Nicht verfügbar. Setzt eine Zelle auf den Fehlerwert #NV." ;
+ Text [ danish ] = "Ikke tilgængelig. Sætter en celle på fejlværdien #NV." ;
+ Text [ french ] = "Aucune valeur disponible. Renvoie la valeur d'erreur #N/A pour une cellule." ;
+ Text [ swedish ] = "Inte tillgänglig. Returnerar felvärdet #Saknas för en cell." ;
+ Text [ dutch ] = "Niet beschikbaar. Geeft als resultaat de foutwaarde #N/B." ;
+ Text [ spanish ] = "No disponible. Devuelve el valor de error #N/A que significa que el valor no está disponible." ;
+ Text [ english_us ] = "Not available. Returns the error value #N/A." ;
+ Text[ chinese_simplified ] = "²»´æÔÚ¡£·´À¡Ò»¸ö´íÎóÊýÖµ #NV ¡£";
+ Text[ russian ] = "Âîçâðàùàåò çíà÷åíèå îøèáêè #Í/Ä (çíà÷åíèå íåäîñòóïíî).";
+ Text[ polish ] = "Niedostêpne. Zwraca wartoœæ b³êdu #N/D.";
+ Text[ japanese ] = "´×°’l#N/A‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤£¦s¦b¡C¶Ç¦^¤@­Ó¿ù»~¼Æ­È #NV ¡C";
+ Text[ arabic ] = "ÛíÑ ãÊÇÍÉ. ÊÑÌÚ ÞíãÉ ÇáÎØà #N/A.";
+ Text[ dutch ] = "Niet beschikbaar. Geeft als resultaat de foutwaarde #N/B.";
+ Text[ chinese_simplified ] = "²»´æÔÚ¡£·´À¡Ò»¸ö´íÎóÊýÖµ #NV ¡£";
+ Text[ greek ] = "Äåí åßíáé äéáèÝóéìï. Ïñßæåé ãéá Ýíá êåëß ôçí ôéìÞ óöÜëìáôïò #N/A.";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù. ¿À·ù °ª #N/AÀ» ¹ÝȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Mevcut deðil. #N/A hata mesajýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_NV );
+ 0;
+ };
+ };
+ // -=*# Resource for function TYP #*=-
+ Resource SC_OPCODE_TYPE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt den Datentyp eines Werts." ;
+ Text [ english ] = "Returns the type of value." ;
+ Text [ norwegian ] = "Bestimmt den Datentyp eines Werts." ;
+ Text [ italian ] = "Restituisce il tipo di dati di un valore." ;
+ Text [ portuguese_brazilian ] = "Bestimmt den Datentyp eines Werts." ;
+ Text [ portuguese ] = "Determina o tipo de dados de um valor." ;
+ Text [ finnish ] = "Bestimmt den Datentyp eines Werts." ;
+ Text [ danish ] = "Bestemmer en værdis datatype." ;
+ Text [ french ] = "Définit le type de données d'une valeur." ;
+ Text [ swedish ] = "Bestämmer datatypen för ett värde." ;
+ Text [ dutch ] = "Geeft het gegevenstype van een waarde aan." ;
+ Text [ spanish ] = "Determina el tipo de dato de un valor." ;
+ Text [ english_us ] = "Defines the data type of a value." ;
+ Text[ chinese_simplified ] = "È·¶¨ÊýÖµµÄÊý¾ÝÀàÐÍ¡£";
+ Text[ russian ] = "Îïðåäåëÿåò òèï äàííûõ çíà÷åíèÿ.";
+ Text[ polish ] = "Okreœla typ danych wartoœci.";
+ Text[ japanese ] = "ÃÞ°ÀŒ^‚ð•\\‚·”’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¼Æ­Èªº¸ê®ÆÃþ«¬¡C";
+ Text[ arabic ] = "ÊÍÏÏ äæÚ ÈíÇäÇÊ ÞíãÉ ãÇ.";
+ Text[ dutch ] = "Geeft het gegevenstype van een waarde aan.";
+ Text[ chinese_simplified ] = "È·¶¨ÊýÖµµÄÊý¾ÝÀàÐÍ¡£";
+ Text[ greek ] = "Ïñßæåé ôïí ôýðï äåäïìÝíùí ìéáò ôéìÞò.";
+ Text[ korean ] = "°ªÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ» Á¤ÀÇ";
+ Text[ turkish ] = "Deðerin veri tipini belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_TYP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, dessen Datentyp bestimmt wird." ;
+ Text [ english ] = "is the value you want tested." ;
+ Text [ norwegian ] = "Der Wert, dessen Datentyp bestimmt wird." ;
+ Text [ italian ] = "è il valore." ;
+ Text [ portuguese_brazilian ] = "Der Wert, dessen Datentyp bestimmt wird." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, dessen Datentyp bestimmt wird." ;
+ Text [ danish ] = "Den værdi hvis datatype skal bestemmes." ;
+ Text [ french ] = "Représente la valeur à examiner." ;
+ Text [ swedish ] = "Värdet vars datatyp bestäms." ;
+ Text [ dutch ] = "De waarde waarvan het gegevenstype wordt aangegeven." ;
+ Text [ spanish ] = "es un valor cuyo tipo de dato se desea determinar." ;
+ Text [ english_us ] = "The value for which the data type is to be determined." ;
+ Text[ chinese_simplified ] = "Êý¾ÝÀàÐÍÒÑÈ·¶¨µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, òèï äàííûõ êîòîðîãî îïðåäåëÿåòñÿ.";
+ Text[ polish ] = "Wartoœæ, której typ danych bêdzie okreœlony.";
+ Text[ japanese ] = "ÃÞ°ÀŒ^‚𒲂ׂé’l";
+ Text[ chinese_traditional ] = "¸ê®ÆÃþ«¬¤w½T©wªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÊÍÏíÏ äæÚ ÈíÇäÇÊåÇ.";
+ Text[ dutch ] = "De waarde waarvan het gegevenstype wordt aangegeven.";
+ Text[ chinese_simplified ] = "Êý¾ÝÀàÐÍÒÑÈ·¶¨µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá ïñßæåôáé ï ôýðïò.";
+ Text[ korean ] = "µ¥ÀÌÅÍ Å¸ÀÔÀ» °áÁ¤ÇÒ °ª";
+ Text[ turkish ] = "Veri tipi belirlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function AKTUELL #*=-
+ Resource SC_OPCODE_CURRENT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Ermittelt den aktuellen Wert der Formel an der Position, an der diese Funktion steht." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Ermittelt den aktuellen Wert der Formel an der Position, an der diese Funktion steht." ;
+ Text [ italian ] = "Calcola il valore corrente della formula alla posizione della funzione." ;
+ Text [ portuguese_brazilian ] = "Ermittelt den aktuellen Wert der Formel an der Position, an der diese Funktion steht." ;
+ Text [ portuguese ] = "Devolve o valor actual da fórmula na posição em que esta função se encontra." ;
+ Text [ finnish ] = "Ermittelt den aktuellen Wert der Formel an der Position, an der diese Funktion steht." ;
+ Text [ danish ] = "Returnerer formlens aktuelle værdi på denne funktions position." ;
+ Text [ french ] = "Détermine la valeur courante de la formule à la position de cette fonction." ;
+ Text [ swedish ] = "Beräknar det aktuella värdet av en formel vid positionen där funktionen står." ;
+ Text [ dutch ] = "Berekent de actuele waarde van de formule op de plaats waar deze functie zich bevindt." ;
+ Text [ spanish ] = "Devuelve el valor actual de la fórmula en la posición en la esté esta función." ;
+ Text [ english_us ] = "Calculates the current value of the formula at the present location. " ;
+ Text[ chinese_simplified ] = "¼ÆË㺯Êý¹«Ê½ËùÔÚλÖõÄÏÖÖµ¡£";
+ Text[ russian ] = "Ïåðåäàåò çíà÷åíèå ôîðìóëû â òåêóùåé ïîçèöèè ôóíêöèè.";
+ Text[ polish ] = "Wyznacza aktualn¹ wartoœæ formu³y przy aktualnej pozycji funkcji.";
+ Text[ japanese ] = "‚±‚̈ʒu‚Ì‚±‚ÌŠÖ”‚Å‚Ì”Ž®‚Ì”’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ language_user1 ] = "Fehler im Deutschen: Posktion";
+ Text[ chinese_traditional ] = "­pºâ¨ç¼Æ¤½¦¡©Ò¦b¦ì¸mªº²{­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÞíãÉ ÇáÍÇáíÉ ááÕíÛÉ Ýí ÇáãæÖÚ ÇáÍÇáí.";
+ Text[ dutch ] = "Berekent de actuele waarde van de formule op de plaats waar deze functie zich bevindt.";
+ Text[ chinese_simplified ] = "¼ÆË㺯Êý¹«Ê½ËùÔÚλÖõÄÏÖÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ôñÝ÷ïõóá ôéìÞ ôïõ ôýðïõ óôç èÝóç óôçí ïðïßá âñßóêåôáé.";
+ Text[ korean ] = "ÇöÀçÀÇ À§Ä¡¿¡ ´ëÇÑ ¼ö½ÄÀÇ ÇöÀç °ªÀ» °è»ê";
+ Text[ turkish ] = "Formulün güncel deðerini, bu fonksiyonun bulunduðu konumda hesaplar.";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_INFO;
+ U2S( HID_FUNC_AKTUELL );
+ 0;
+ };
+ };
+ // -=*# Resource for function FALSCH #*=-
+ Resource SC_OPCODE_FALSE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Setzt den Wahrheitswert FALSCH." ;
+ Text [ english ] = "Returns the logical value FALSE." ;
+ Text [ norwegian ] = "Setzt den Wahrheitswert FALSCH." ;
+ Text [ italian ] = "Restituisce il valore logico FALSO." ;
+ Text [ portuguese_brazilian ] = "Setzt den Wahrheitswert FALSCH." ;
+ Text [ portuguese ] = "Devolve o valor lógico FALSO." ;
+ Text [ finnish ] = "Setzt den Wahrheitswert FALSCH." ;
+ Text [ danish ] = "Returnerer den logiske værdi FALSK." ;
+ Text [ french ] = "Renvoie la valeur logique FAUX." ;
+ Text [ swedish ] = "Returnerar det logiska värdet FALSKT." ;
+ Text [ dutch ] = "Geeft de logische waarde ONWAAR." ;
+ Text [ spanish ] = "Devuelve el valor lógico FALSO." ;
+ Text [ english_us ] = "Defines the logical value as FALSE." ;
+ Text[ chinese_simplified ] = "É趨Âß¼­Öµ FALSE ¡£";
+ Text[ russian ] = "Óñòàíàâëèâàåò ëîãè÷åñêîå çíà÷åíèå ËÎÆÜ.";
+ Text[ polish ] = "Zwraca wartoœæ logiczn¹ FA£SZ.";
+ Text[ japanese ] = "˜_—’lFALSE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "³]©wÅÞ¿è­È FALSE ¡C";
+ Text[ arabic ] = "ÊÚíä ÇáÞíãÉ ÇáãäØÞíÉ FALSE.";
+ Text[ dutch ] = "Geeft de logische waarde ONWAAR.";
+ Text[ chinese_simplified ] = "É趨Âß¼­Öµ FALSE ¡£";
+ Text[ greek ] = "Ïñßæåé ôç ëïãéêÞ ôéìÞ ØÅÕÄÇÓ (FALSE).";
+ Text[ korean ] = "³í¸®°ªÀ» FALSE·Î Á¤ÀÇ";
+ Text[ turkish ] = "Mantýksal deðeri YANLIÞ olarak tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_LOGIC;
+ U2S( HID_FUNC_FALSCH );
+ 0;
+ };
+ };
+ // -=*# Resource for function NICHT #*=-
+ Resource SC_OPCODE_NOT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Kehrt den Wert des Argumentes um." ;
+ Text [ english ] = "Reverses the value of its argument." ;
+ Text [ norwegian ] = "Kehrt den Wert des Argumentes um." ;
+ Text [ italian ] = "Inverte il valore dell'argomento." ;
+ Text [ portuguese_brazilian ] = "Kehrt den Wert des Argumentes um." ;
+ Text [ portuguese ] = "Reverte a lógica do argumento." ;
+ Text [ finnish ] = "Kehrt den Wert des Argumentes um." ;
+ Text [ danish ] = "Vender det logiske arguments værdi om." ;
+ Text [ french ] = "Inverse la valeur logique de l'argument." ;
+ Text [ swedish ] = "Kastar om argumentets värde." ;
+ Text [ dutch ] = "Keert de logische waarde van het argument om." ;
+ Text [ spanish ] = "Invierte el valor lógico del argumento." ;
+ Text [ english_us ] = "Reverses the value of the argument." ;
+ Text[ chinese_simplified ] = "¶Ô²ÎÊýÖµÇó·´¡£";
+ Text[ russian ] = "Ìåíÿåò íà ïðîòèâîïîëîæíîå ëîãè÷åñêîå çíà÷åíèå àðãóìåíòà.";
+ Text[ polish ] = "Odwraca wartoϾ argumentu.";
+ Text[ japanese ] = "ˆø”‚ªTRUE‚Ì‚Æ‚«FALSE‚ðAFALSE‚Ì‚Æ‚«TRUE ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¹ï°Ñ¼Æ­È¨D¤Ï¡C";
+ Text[ arabic ] = "ÊÚßÓ ÞíãÉ ÇáæÓíØ.";
+ Text[ dutch ] = "Keert de logische waarde van het argument om.";
+ Text[ chinese_simplified ] = "¶Ô²ÎÊýÖµÇó·´¡£";
+ Text[ greek ] = "ÁíôéóôñÝöåé ôçí ôéìÞ ôïõ ïñßóìáôïò.";
+ Text[ korean ] = "µ¶¸³ º¯¼öÀÇ °ªÀ» ¿ªÀ¸·Î ¹Ù²ß´Ï´Ù.";
+ Text[ turkish ] = "Deðiþkenin deðerini tersine çevirir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_LOGIC;
+ U2S( HID_FUNC_NICHT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wahrheitswert" ;
+ Text [ english ] = "logical" ;
+ Text [ norwegian ] = "Wahrheitswert" ;
+ Text [ italian ] = "Valore logico" ;
+ Text [ portuguese_brazilian ] = "Wahrheitswert" ;
+ Text [ portuguese ] = "Valor lógico" ;
+ Text [ finnish ] = "Wahrheitswert" ;
+ Text [ danish ] = "Logisk værdi" ;
+ Text [ french ] = "Valeur_logique" ;
+ Text [ swedish ] = "logiskt värde" ;
+ Text [ dutch ] = "Logische waarde" ;
+ Text [ spanish ] = "valor_lógico" ;
+ Text [ english_us ] = "Logical value" ;
+ Text[ chinese_simplified ] = "Âß¼­Öµ";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå";
+ Text[ polish ] = "WartoϾ logiczna";
+ Text[ japanese ] = "˜_—’l";
+ Text[ chinese_traditional ] = "Boolean Value";
+ Text[ arabic ] = "Boolean Value";
+ Text[ dutch ] = "Logische waarde";
+ Text[ chinese_simplified ] = "Âß¼­Öµ";
+ Text[ greek ] = "ËïãéêÞ ôéìÞ";
+ Text[ korean ] = "³í¸®°ª";
+ Text[ turkish ] = "Mantýksal deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Ein Ausdruck, der WAHR oder FALSCH annehmen kann." ;
+ Text [ english ] = "is a value or expression that can be evaluated to TRUE or FALSE." ;
+ Text [ norwegian ] = "Ein Ausdruck, der WAHR oder FALSCH annehmen kann." ;
+ Text [ italian ] = "è un valore o un'espressione che può dare come risultato VERO o FALSO." ;
+ Text [ portuguese_brazilian ] = "Ein Ausdruck, der WAHR oder FALSCH annehmen kann." ;
+ Text [ portuguese ] = "é um valor ou uma expressão que pode ser avaliado como VERDADEIRO ou FALSO." ;
+ Text [ finnish ] = "Ein Ausdruck, der WAHR oder FALSCH annehmen kann." ;
+ Text [ danish ] = "Et udtryk som kan evalueres som SAND eller FALSK." ;
+ Text [ french ] = "Une expression qui peut prendre la valeur VRAI ou FAUX." ;
+ Text [ swedish ] = "Ett uttryck som kan vara SANT eller FALSKT." ;
+ Text [ dutch ] = "Een uitdrukking die WAAR of ONWAAR kan zijn." ;
+ Text [ spanish ] = "es un valor o expresión que se puede evaluar como VERDADERO o FALSO." ;
+ Text [ english_us ] = "An expression that can be either TRUE or FALSE." ;
+ Text[ chinese_simplified ] = "Ò»¸öÄܹ»¼ÆËã³ö TRUE »ò FALSE µÄ±í´ïʽ¡£";
+ Text[ russian ] = "Çíà÷åíèå, êîòîðîå ìîæåò äàâàòü ÈÑÒÈÍÀ èëè ËÎÆÜ.";
+ Text[ polish ] = "Wyra¿enie, które mo¿e przyj¹æ wartoœæ PRAWDA lub FA£SZ.";
+ Text[ japanese ] = "˜_—’l‚ ‚é‚¢‚ÍŒ‹‰Ê‚ªTRUE‚Ü‚½‚ÍFALSE‚É‚È‚é˜_—Ž®B";
+ Text[ chinese_traditional ] = "¤@­Ó¯à°÷­pºâ¥X TRUE ©Î FALSE ªºªí¹F¦¡¡C";
+ Text[ arabic ] = "ÞíãÉ íãßä Ãä ÊÞíã Åáì TRUE Ãæ Åáì FALSE.";
+ Text[ dutch ] = "Een uitdrukking die WAAR of ONWAAR kan zijn.";
+ Text[ chinese_simplified ] = "Ò»¸öÄܹ»¼ÆËã³ö TRUE »ò FALSE µÄ±í´ïʽ¡£";
+ Text[ greek ] = "Ìéá ðáñÜóôáóç, ç ïðïßá ìðïñåß íá åßíáé ÁËÇÈÇÓ Þ ØÅÕÄÇÓ.";
+ Text[ korean ] = "TRUE ¶Ç´Â FALSEÀÏ ¼ö ÀÖ´Â ½ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "DOÐRU ya da YANLIÞ olabilen bir terim.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function WAHR #*=-
+ Resource SC_OPCODE_TRUE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Setzt den Wahrheitswert WAHR." ;
+ Text [ english ] = "Returns the logical value TRUE." ;
+ Text [ norwegian ] = "Setzt den Wahrheitswert WAHR." ;
+ Text [ italian ] = "Restituisce il valore logico VERO." ;
+ Text [ portuguese_brazilian ] = "Setzt den Wahrheitswert WAHR." ;
+ Text [ portuguese ] = "Devolve o valor lógico VERDADEIRO." ;
+ Text [ finnish ] = "Setzt den Wahrheitswert WAHR." ;
+ Text [ danish ] = "Returnerer den logiske værdi SAND." ;
+ Text [ french ] = "Renvoie la valeur logique VRAI." ;
+ Text [ swedish ] = "Returnerar det logiska värdet SANT." ;
+ Text [ dutch ] = "Geeft als resultaat de logische waarde WAAR." ;
+ Text [ spanish ] = "Devuelve el valor lógico VERDADERO." ;
+ Text [ english_us ] = "Returns the logical value TRUE." ;
+ Text[ chinese_simplified ] = "É趨Âß¼­Öµ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ëîãè÷åñêîå çíà÷åíèå ÈÑÒÈÍÀ.";
+ Text[ polish ] = "Zwraca wartoœæ logiczn¹ FA£SZ.";
+ Text[ japanese ] = "˜_—’l TRUE ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "ªð¦^ÅÞ¿è¼Æ­È TRUE ¡C";
+ Text[ arabic ] = "ÊÚíä ÇáÞíãÉ ÇáãäØÞíÉ TRUE.";
+ Text[ dutch ] = "Geeft als resultaat de logische waarde WAAR.";
+ Text[ chinese_simplified ] = "É趨Âß¼­Öµ TRUE ¡£";
+ Text[ greek ] = "Ïñßæåé ôç ëïãéêÞ ôéìÞ ÁËÇÈÇÓ (TRUE).";
+ Text[ korean ] = "³í¸®°ª TRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "DOÐRU mantýksal deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_LOGIC;
+ U2S( HID_FUNC_WAHR );
+ 0;
+ };
+ };
+ // -=*# Resource for function WENN #*=-
+ Resource SC_OPCODE_IF
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Gibt eine Wahrheitsprüfung an, die durchgeführt werden soll. : Gibt eine Wahrheitspr³fung an, die durchgef³hrt werden soll. */
+ Text = "Gibt eine Wahrheitsprüfung an, die durchgeführt werden soll." ;
+ Text [ english ] = "Returns one value if logical_test evaluates to TRUE and another value if it evaluates to FALSE." ;
+ Text [ norwegian ] = "Gibt eine Wahrheitsprüfung an, die durchgeführt werden soll." ;
+ Text [ italian ] = "Specifica un test logico da eseguire." ;
+ Text [ portuguese_brazilian ] = "Gibt eine Wahrheitsprüfung an, die durchgeführt werden soll." ;
+ Text [ portuguese ] = "Especifica um teste lógico a ser efectuado." ;
+ Text [ finnish ] = "Gibt eine Wahrheitsprüfung an, die durchgeführt werden soll." ;
+ Text [ danish ] = "Angiver en logisk test, somr skal udføres." ;
+ Text [ french ] = "Spécifie un test logique à effectuer." ;
+ Text [ swedish ] = "Anger ett logiskt test som skall genomföras." ;
+ Text [ dutch ] = "Geeft logische test op." ;
+ Text [ spanish ] = "Especifica una prueba lógica que se desea efectuar." ;
+ Text [ english_us ] = "Specifies a logical test to be performed." ;
+ Text[ chinese_simplified ] = "Ö¸¶¨Ò»¸öÒªÖ´ÐеÄÂß¼­Öµ¼ì²é¡£";
+ Text[ russian ] = "Çàäàåò ëîãè÷åñêèé êîíòðîëü, êîòîðûé íåîáõîäèìî âûïîëíèòü.";
+ Text[ polish ] = "Definiuje test logiczny, który ma zostaæ wykonany.";
+ Text[ japanese ] = "’l‚Ü‚½‚Í”Ž®‚ªðŒ‚ð–ž‚½‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©‚ðTRUE‚©FALSE‚Å•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "°õ¦æÅÞ¿è­ÈÀˬd¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÇÎÊÈÇÑ ãäØÞí íÌÈ ÊäÝíÐå.";
+ Text[ dutch ] = "Geeft logische test op.";
+ Text[ chinese_simplified ] = "Ö¸¶¨Ò»¸öÒªÖ´ÐеÄÂß¼­Öµ¼ì²é¡£";
+ Text[ greek ] = "Ïñßæåé Ýíáí ëïãéêü Ýëåã÷ï ðïõ èá äéåîá÷èåß.";
+ Text[ korean ] = "¼öÇàµÉ ³í¸®Àû Å×½ºÆ®¸¦ ÁöÁ¤";
+ Text[ turkish ] = "Yapýlacak bir mantýksal denetim belirtir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_LOGIC;
+ U2S( HID_FUNC_WENN );
+ 3; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Prüfung : Pr³fung */
+ Text = "Prüfung" ;
+ Text [ english ] = "logical_test" ;
+ Text [ norwegian ] = "Prüfung" ;
+ Text [ italian ] = "test" ;
+ Text [ portuguese_brazilian ] = "Prüfung" ;
+ Text [ portuguese ] = "Teste_lógico" ;
+ Text [ finnish ] = "Prüfung" ;
+ Text [ danish ] = "Logisk_test" ;
+ Text [ french ] = "Test" ;
+ Text [ swedish ] = "test" ;
+ Text [ dutch ] = "Test" ;
+ Text [ spanish ] = "Prueba_lógica" ;
+ Text [ english_us ] = "Test" ;
+ Text[ chinese_simplified ] = "logical_test";
+ Text[ russian ] = "Ëîã_êîíòðîëü";
+ Text[ polish ] = "test_logiczny";
+ Text[ japanese ] = "ýÄ";
+ Text[ chinese_traditional ] = "logical_test";
+ Text[ arabic ] = "Logical_test";
+ Text[ dutch ] = "Test";
+ Text[ chinese_simplified ] = "logical_test";
+ Text[ greek ] = "¸ëåã÷ïò";
+ Text[ korean ] = "Å×½ºÆ®";
+ Text[ turkish ] = "Denetim";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Ein beliebiger Wert oder Ausdruck, der WAHR oder FALSCH sein kann." ;
+ Text [ english ] = "is any value or expression that can be evaluated to TRUE or FALSE." ;
+ Text [ norwegian ] = "Ein beliebiger Wert oder Ausdruck, der WAHR oder FALSCH sein kann." ;
+ Text [ italian ] = "è un valore o un'espressione qualsiasi che può dare come risultato VERO o FALSO." ;
+ Text [ portuguese_brazilian ] = "Ein beliebiger Wert oder Ausdruck, der WAHR oder FALSCH sein kann." ;
+ Text [ portuguese ] = "é qualquer valor ou expressão que pode ser VERDADEIRO ou FALSO." ;
+ Text [ finnish ] = "Ein beliebiger Wert oder Ausdruck, der WAHR oder FALSCH sein kann." ;
+ Text [ danish ] = "En vilkårlig værdi eller et vilkårligt udtryk som kan være SAND eller FALSK." ;
+ Text [ french ] = "Toute valeur ou expression dont le résultat peut être VRAI ou FAUX." ;
+ Text [ swedish ] = "Ett valfritt värde eller uttryck som kan beräknas till SANT eller FALSKT." ;
+ Text [ dutch ] = "Een willekeurige waarde of uitdrukking die WAAR of ONWAAR kan zijn." ;
+ Text [ spanish ] = "Es cualquier valor o expresión que pueda evaluarse como VERDADERO o FALSO." ;
+ Text [ english_us ] = "Any value or expression which can be either TRUE or FALSE." ;
+ Text[ chinese_simplified ] = "Ò»¸öÂß¼­ÖµÎª TRUE »ò FALSE µÄÈÎÒâÊýÖµ»ò±í´ïʽ¡£";
+ Text[ russian ] = "Ëþáîå çíà÷åíèå èëè âûðàæåíèå, êîòîðîå ïðè âû÷èñëåíèè äàåò çíà÷åíèå ÈÑÒÈÍÀ èëè ËÎÆÜ.";
+ Text[ polish ] = "Dowolna wartoœæ lub wyra¿enie, które mog¹ byæ PRAWDA lub FA£SZ.";
+ Text[ japanese ] = "ýĂ̌‹‰Ê‚ªTRUE‚Ü‚½‚ÍFALSE‚Æ‚È‚é’l‚Ü‚½‚ÍŽ®¡";
+ Text[ chinese_traditional ] = "¤@­ÓÅÞ¿è­È¬° TRUE ©Î FALSE ªº¥ô·N¼Æ­È©Îªí¹F¦¡¡C";
+ Text[ arabic ] = "ÃíÉ ÞíãÉ Ãæ ÚÈÇÑÉ¡ ÞÏ Êßæä TRUE¡ Ãæ FALSE.";
+ Text[ dutch ] = "Een willekeurige waarde of uitdrukking die WAAR of ONWAAR kan zijn.";
+ Text[ chinese_simplified ] = "Ò»¸öÂß¼­ÖµÎª TRUE »ò FALSE µÄÈÎÒâÊýÖµ»ò±í´ïʽ¡£";
+ Text[ greek ] = "ÏðïéáäÞðïôå ôéìÞ Þ ðáñÜóôáóç, ç ïðïßá ìðïñåß íá åßíáé ÁËÇÈÇÓ Þ ØÅÕÄÇÓ.";
+ Text[ korean ] = "TRUE ¶Ç´Â FALSE ÀÌ µÉ ¾î¶² °ª¶Ç´ÂÇ¥Çö";
+ Text[ turkish ] = "DOÐRU ya da YANLIÞ olabilecek herhangi bir deðer ya da terim.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Dann_Wert" ;
+ Text [ english ] = "value_if_true" ;
+ Text [ norwegian ] = "Dann_Wert" ;
+ Text [ italian ] = "se_vero" ;
+ Text [ portuguese_brazilian ] = "Dann_Wert" ;
+ Text [ portuguese ] = "Valor_se_verdadeiro" ;
+ Text [ finnish ] = "Dann_Wert" ;
+ Text [ danish ] = "Værdi_hvis_sand" ;
+ Text [ french ] = "Valeur_si_vrai" ;
+ Text [ swedish ] = "värde_om_sant" ;
+ Text [ dutch ] = "W_waarde" ;
+ Text [ spanish ] = "Valor_si_verdadero" ;
+ Text [ english_us ] = "Then_value" ;
+ Text[ chinese_simplified ] = "value_if_true";
+ Text[ russian ] = "Çíà÷åíèå_åñëè_èñòèíà";
+ Text[ polish ] = "wartoœæ_je¿eli_prawda";
+ Text[ japanese ] = "TRUE‚Ìꇂ̒l";
+ Text[ chinese_traditional ] = "value_if_true";
+ Text[ arabic ] = "Value_if_true";
+ Text[ dutch ] = "W_waarde";
+ Text[ chinese_simplified ] = "value_if_true";
+ Text[ greek ] = "Then_value";
+ Text[ korean ] = "TRUEÀÏ ¶§ °ª";
+ Text[ turkish ] = "O halde_deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Das Resultat der Funktion, wenn die Wahrheitsprüfung WAHR ergibt. : Das Resultat der Funktion, wenn die Wahrheitspr³fung WAHR ergibt. */
+ Text = "Das Resultat der Funktion, wenn die Wahrheitsprüfung WAHR ergibt." ;
+ Text [ english ] = "is the value that is returned if logical_test is TRUE." ;
+ Text [ norwegian ] = "Das Resultat der Funktion, wenn die Wahrheitsprüfung WAHR ergibt." ;
+ Text [ italian ] = "è il valore che viene restituito se test è VERO." ;
+ Text [ portuguese_brazilian ] = "Das Resultat der Funktion, wenn die Wahrheitsprüfung WAHR ergibt." ;
+ Text [ portuguese ] = "é o valor devolvido se teste_lógico for VERDADEIRO." ;
+ Text [ finnish ] = "Das Resultat der Funktion, wenn die Wahrheitsprüfung WAHR ergibt." ;
+ Text [ danish ] = "Funktionens resultat hvis logisk_test er SAND." ;
+ Text [ french ] = "La valeur renvoyée si le test logique est VRAI." ;
+ Text [ swedish ] = "Resultatet av funktionen om det logiska testet är SANT." ;
+ Text [ dutch ] = "Het resultaat van een functie als de logische test WAAR oplevert." ;
+ Text [ spanish ] = "Es el valor que se devolverá si prueba_lógica es VERDADERO." ;
+ Text [ english_us ] = "The result of the function if the logical test returns a TRUE." ;
+ Text[ chinese_simplified ] = "Èç¹ûÂß¼­²âÊÔ½á¹ûΪ TRUE £¬Ôò·´À¡º¯ÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, êîòîðîå âîçâðàùàåòñÿ, åñëè ëîã_êîíòðîëü èìååò çíà÷åíèå ÈÑÒÈÍÀ.";
+ Text[ polish ] = "Wynik funkcji, jeœli test_logiczny wyznaczy wartoœæ PRAWDA.";
+ Text[ japanese ] = "ýČ‹‰Ê‚ªTRUE‚Ì‚Æ‚«‚ÉIFŠÖ”‚ª•Ô‚·’lB";
+ Text[ chinese_traditional ] = "¦pªGÅÞ¿è´ú¸Õµ²ªG¬° TRUE ¡M«h¶Ç¦^¨ç¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÌÚÉ ÅÐÇ ßÇä Logical_test åæ TRUE.";
+ Text[ dutch ] = "Het resultaat van een functie als de logische test WAAR oplevert.";
+ Text[ chinese_simplified ] = "Èç¹ûÂß¼­²âÊÔ½á¹ûΪ TRUE £¬Ôò·´À¡º¯ÊýÖµ¡£";
+ Text[ greek ] = "Ôï áðïôÝëåóìá ôçò óõíÜñôçóçò áí ï ëïãéêüò Ýëåã÷ïò áðïäåé÷èåß ùò TRUE (ÁËÇÈÇÓ).";
+ Text[ korean ] = "³í¸®Àû Å×½ºÆ®°¡ TRUE¸¦ ¹Ýȯ ÇÒ¶§ ÇÔ¼öÀÇ °á°ú";
+ Text[ turkish ] = "Mantýksal denetim DOÐRU sonucuna ulaþtýðýnda fonksiyonun sonucu.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Sonst_Wert" ;
+ Text [ english ] = "value_if_false" ;
+ Text [ norwegian ] = "Sonst_Wert" ;
+ Text [ italian ] = "se_falso" ;
+ Text [ portuguese_brazilian ] = "Sonst_Wert" ;
+ Text [ portuguese ] = "Valor_se_falso" ;
+ Text [ finnish ] = "Sonst_Wert" ;
+ Text [ danish ] = "Værdi_hvis_falsk" ;
+ Text [ french ] = "Valeur_si_faux" ;
+ Text [ swedish ] = "värde_om_falskt" ;
+ Text [ dutch ] = "O_waarde" ;
+ Text [ spanish ] = "Valor_si_falso" ;
+ Text [ english_us ] = "Otherwise_value" ;
+ Text[ chinese_simplified ] = "value_if_false";
+ Text[ russian ] = "Çíà÷åíèå_åñëè_ëîæü";
+ Text[ polish ] = "wartoœæ_je¿eli_fa³sz";
+ Text[ japanese ] = "FALSE‚Ìꇂ̒l";
+ Text[ chinese_traditional ] = "value_if_false";
+ Text[ arabic ] = "Value_if_false";
+ Text[ dutch ] = "O_waarde";
+ Text[ chinese_simplified ] = "value_if_false";
+ Text[ greek ] = "Áëëéþò_ÔéìÞ";
+ Text[ korean ] = "FALSEÀÏ ¶§ °ª";
+ Text[ turkish ] = "Yoksa_deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Das Resultat der Funktion, wenn die Wahrheitsprüfung FALSCH ergibt. : Das Resultat der Funktion, wenn die Wahrheitspr³fung FALSCH ergibt. */
+ Text = "Das Resultat der Funktion, wenn die Wahrheitsprüfung FALSCH ergibt." ;
+ Text [ english ] = "is the value that is returned if logical_test is FALSE." ;
+ Text [ norwegian ] = "Das Resultat der Funktion, wenn die Wahrheitsprüfung FALSCH ergibt." ;
+ Text [ italian ] = "è il valore che viene restituito se test è FALSO." ;
+ Text [ portuguese_brazilian ] = "Das Resultat der Funktion, wenn die Wahrheitsprüfung FALSCH ergibt." ;
+ Text [ portuguese ] = "é o valor devolvido se teste_lógico for FALSO" ;
+ Text [ finnish ] = "Das Resultat der Funktion, wenn die Wahrheitsprüfung FALSCH ergibt." ;
+ Text [ danish ] = "Funktionens resultat hvis logisk_test er FALSK." ;
+ Text [ french ] = "La valeur renvoyée si le test logique est FAUX." ;
+ Text [ swedish ] = "Resultatet av funktionen om det logiska testet är FALSKT." ;
+ Text [ dutch ] = "Het resultaat van een functie als de logische test ONWAAR oplevert." ;
+ Text [ spanish ] = "Es el valor que se devolverá si prueba_lógica es FALSO." ;
+ Text [ english_us ] = "The result of the function if the logical test returns FALSE." ;
+ Text[ chinese_simplified ] = "Èç¹ûÂß¼­²âÊÔ½á¹ûΪ FALSE £¬Ôò·´À¡º¯ÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, êîòîðîå âîçâðàùàåòñÿ, åñëè ëîã_êîíòðîëü èìååò çíà÷åíèå ËÎÆÜ.";
+ Text[ polish ] = "Wynik funkcji, jeœli test_logiczny wyznaczy wartoœæ FA£SZ.";
+ Text[ japanese ] = "ýČ‹‰Ê‚ªFALSE‚Ì‚Æ‚«‚ÉIFŠÖ”‚ª•Ô‚·’lB";
+ Text[ chinese_traditional ] = "¦pªGÅÞ¿è´ú¸Õµ²ªG¬° FALSE ¡M«h¶Ç¦^¨ç¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÌÚÉ ÅÐÇ ßÇä Logical_test åæ FALSE.";
+ Text[ dutch ] = "Het resultaat van een functie als de logische test ONWAAR oplevert.";
+ Text[ chinese_simplified ] = "Èç¹ûÂß¼­²âÊÔ½á¹ûΪ FALSE £¬Ôò·´À¡º¯ÊýÖµ¡£";
+ Text[ greek ] = "Ôï áðïôÝëåóìá ôçò óõíÜñôçóçò áí ï ëïãéêüò Ýëåã÷ïò áðïäåé÷èåß ùò FALSE (ËÁÈÏÓ).";
+ Text[ korean ] = "³í¸®Àû Å×½ºÆ®°¡ FALSE¸¦ ¹Ýȯ ÇÒ¶§ ÇÔ¼öÀÇ °á°ú";
+ Text[ turkish ] = "Mantýksal denetim YANLIÞ sonucuna ulaþtýðýnda fonksiyonun sonucu.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ODER #*=-
+ Resource SC_OPCODE_OR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Setzt WAHR, wenn ein Argument WAHR ist." ;
+ Text [ english ] = "Returns TRUE if any argument is TRUE; returns FALSE if all arguments are FALSE." ;
+ Text [ norwegian ] = "Setzt WAHR, wenn ein Argument WAHR ist." ;
+ Text [ italian ] = "Restituisce VERO se almeno un argomento è VERO." ;
+ Text [ portuguese_brazilian ] = "Setzt WAHR, wenn ein Argument WAHR ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se algum dos argumentos for VERDADEIRO." ;
+ Text [ finnish ] = "Setzt WAHR, wenn ein Argument WAHR ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis et argument er SAND." ;
+ Text [ french ] = "Renvoie VRAI si un argument est VRAI." ;
+ Text [ swedish ] = "Returnerar SANT om ett argument är SANT." ;
+ Text [ dutch ] = "Geeft als resultaat WAAR als één argument WAAR is" ;
+ Text [ spanish ] = "Devuelve VERDADERO si alguno de los argumentos es VERDADERO." ;
+ Text [ english_us ] = "Returns TRUE if an argument is TRUE." ;
+ Text[ chinese_simplified ] = "Èç¹ûÒ»¸ö²ÎÊýµÄÂß¼­ÖµÎª TRUE£¬¼´·´À¡ TRUE¡£";
+ Text[ russian ] = "Óñòàíàâëèâàåò çíà÷åíèå ÈÑÒÈÍÀ, åñëè îäèí èç àðãóìåíòîâ ñîîòâåòñòâóåò çíà÷åíèþ ÈÑÒÈÍÀ.";
+ Text[ polish ] = "Zwraca wartoœæ PRAWDA, jeœli dowolny z argumentów funkcji ma wartoœæ PRAWDA.";
+ Text[ japanese ] = "‚¢‚¸‚ê‚©‚̈ø”‚ªTRUE‚Ì‚Æ‚«ATRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG¤@­Ó°Ñ¼ÆªºÅÞ¿è­È¬° TRUE¡M§Y¶Ç¦^ TRUE¡C";
+ Text[ arabic ] = "ÊÖÚ TRUE¡ ÅÐÇ ßÇä ÃÍÏ ÇáæÓÇÆØ TRUE.";
+ Text[ dutch ] = "Geeft als resultaat WAAR als één argument WAAR is";
+ Text[ chinese_simplified ] = "Èç¹ûÒ»¸ö²ÎÊýµÄÂß¼­ÖµÎª TRUE£¬¼´·´À¡ TRUE¡£";
+ Text[ greek ] = "Äßíåé TRUE áí Ýíá üñéóìá åßíáé ÁËÇÈÇÓ.";
+ Text[ korean ] = "µ¶¸³ º¯¼ö°¡ TRUEÀ̸é TRUE¸¦ ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþken DOÐRU ise DOÐRU sonucunu verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_LOGIC;
+ U2S( HID_FUNC_ODER );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wahrheitswert " ;
+ Text [ english ] = "logical " ;
+ Text [ norwegian ] = "Wahrheitswert " ;
+ Text [ italian ] = "Valore logico " ;
+ Text [ portuguese_brazilian ] = "Wahrheitswert " ;
+ Text [ portuguese ] = "Valor_lógico " ;
+ Text [ finnish ] = "Wahrheitswert " ;
+ Text [ danish ] = "Logisk værdi " ;
+ Text [ french ] = "Valeur_logique " ;
+ Text [ swedish ] = "Logiskt värde " ;
+ Text [ dutch ] = "Logische waarde " ;
+ Text [ spanish ] = "valor_lógico " ;
+ Text [ english_us ] = "Logical value " ;
+ Text[ chinese_simplified ] = "Âß¼­Öµ ";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ logiczna ";
+ Text[ japanese ] = "˜_—’l ";
+ Text[ chinese_traditional ] = "Logical Value ";
+ Text[ arabic ] = "Logical Value ";
+ Text[ dutch ] = "Logische waarde ";
+ Text[ chinese_simplified ] = "Âß¼­Öµ ";
+ Text[ greek ] = "ËïãéêÞ ôéìÞ ";
+ Text[ korean ] = "³í¸®°ª ";
+ Text[ turkish ] = "Mantýksal deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die Überprüft werden sollen und jeweils entweder WAHR oder FALSCH liefern. : Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die šberpr³ft werden sollen und jeweils entweder WAHR oder FALSCH liefern. */
+ Text = "Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die Überprüft werden sollen und jeweils entweder WAHR oder FALSCH liefern." ;
+ Text [ english ] = "are 1 to 30 conditions you want to test that can be either TRUE or FALSE." ;
+ Text [ norwegian ] = "Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die Überprüft werden sollen und jeweils entweder WAHR oder FALSCH liefern." ;
+ Text [ italian ] = "Valore logico 1; Valore logico 2;... sono da 1 a 30 condizioni da verificare che possono avere valore VERO o FALSO." ;
+ Text [ portuguese_brazilian ] = "Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die Überprüft werden sollen und jeweils entweder WAHR oder FALSCH liefern." ;
+ Text [ portuguese ] = "é 1 até 30 condições a testar como VERDADEIRA ou FALSA." ;
+ Text [ finnish ] = "Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die Überprüft werden sollen und jeweils entweder WAHR oder FALSCH liefern." ;
+ Text [ danish ] = "Logisk 1; logisk 2; ... er 1 til 30 betingelser, der skal testes og hver kan være enten SAND eller FALSK." ;
+ Text [ french ] = "Valeur_logique 1, valeur_logique 2, ... sont de 1 à 30 conditions que vous souhaitez tester, et qui peuvent être soit VRAI, soit FAUX." ;
+ Text [ swedish ] = "logisk1; logisk 2;... är 1 till 30 villkor som skall testas och som kan returnera antingen SANT eller FALSKT." ;
+ Text [ dutch ] = "Logisch 1; Logisch 2;... zijn maximaal 30 voorwaarden die getest worden en die WAAR of ONWAAR kunnen zijn." ;
+ Text [ spanish ] = "Valor_lógico; Valor_lógico 2;...son de 1 a 30 condiciones que se desea verificar y que pueden ser VERDADERO o FALSO." ;
+ Text [ english_us ] = "Logical value 1, logical value 2,... are 1 to 30 conditions to be tested and which return either TRUE or FALSE." ;
+ Text[ chinese_simplified ] = "Âß¼­Öµ 1; Âß¼­Öµ 2;... ΪÐèÒª½øÐмìÑéµÄ 1 µ½ 30 ¸ö\nÌõ¼þ£¬Îª TRUE »ò FALSE¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå 1, ëîãè÷åñêîå çíà÷åíèå 2, ... îò 1 äî 30 ïðîâåðÿåìûõ óñëîâèé, êîòîðûå ìîãóò èìåòü çíà÷åíèå ëèáî ÈÑÒÈÍÀ, ëèáî ËÎÆÜ.";
+ Text[ polish ] = "Od 1 do 30 warunków, które maj¹ zostaæ sprawdzone i zwracaj¹ PRAWDA lub FA£SZ.";
+ Text[ japanese ] = "˜_—’l1¤˜_—’l2¤...‚ÍTRUE‚©FALSE‚©‚𒲂ׂé1‚©‚ç30ŒÂ‚Ü‚Å‚ÌðŒB";
+ Text[ chinese_traditional ] = "ÅÞ¿è­È 1; ÅÞ¿è­È 2;... ¬°»Ý­n¶i¦æÀËÅ窺 1 ¨ì 30 ­Ó±ø¥ó¡M¬° TRUE ©Î FALSE¡C";
+ Text[ arabic ] = "ãä 1 Åáì 30 ÔÑØÇð ÊÑíÏ ÝÍÕåÇ áãÚÑÝÉ ãÇ ÅÐÇ ßÇäÊ TRUE Ãæ FALSE.";
+ Text[ dutch ] = "Logisch 1; Logisch 2;... zijn maximaal 30 voorwaarden die getest worden en die WAAR of ONWAAR kunnen zijn.";
+ Text[ chinese_simplified ] = "Âß¼­Öµ 1; Âß¼­Öµ 2;... ΪÐèÒª½øÐмìÑéµÄ 1 µ½ 30 ¸ö\nÌõ¼þ£¬Îª TRUE »ò FALSE¡£";
+ Text[ greek ] = "ËïãéêÞ ôéìÞ 1, ËïãéêÞ ôéìÞ 2;...åßíáé áðü 1 Ýùò 30 óõíèÞêåò ïé ïðïßåò ðñÝðåé íá åëåã÷èïýí êáé äßíïõí Þ TRUE (ÁËÇÈÇÓ) Þ FALSE (ËÁÈÏÓ).";
+ Text[ korean ] = "·ÎÄà °ª 1, ·ÎÄà °ª 2,... Àº 1¿¡¼­ 30±îÁöÀÇ Å×½ºÆ®µÈ Á¶°ÇÀÌ°íTRUE ³ª FALSE¸¦ ¹ÝȯÇÕ´Ï´Ù. .";
+ Text[ turkish ] = "Mantýksal deðer 1;mantýksal deðer 2;... Denetlenmeleri istenen ve DOÐRU ya da YANLIÞ sonucunu veren 1 - 30 arasý koþuldur.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function UND #*=-
+ Resource SC_OPCODE_AND
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Setzt WAHR, wenn alle Argumente WAHR sind." ;
+ Text [ english ] = "Returns TRUE if all its arguments are TRUE; returns FALSE if one or more arguments is FALSE." ;
+ Text [ norwegian ] = "Setzt WAHR, wenn alle Argumente WAHR sind." ;
+ Text [ italian ] = "Restituisce VERO solo se tutti gli argomenti hanno valore VERO." ;
+ Text [ portuguese_brazilian ] = "Setzt WAHR, wenn alle Argumente WAHR sind." ;
+ Text [ portuguese ] = "Devolver VERDADEIRO, se todos os argumentos forem VERDADEIROS" ;
+ Text [ finnish ] = "Setzt WAHR, wenn alle Argumente WAHR sind." ;
+ Text [ danish ] = "Returnerer SAND, hvis alle argumenter er SAND." ;
+ Text [ french ] = "Renvoie VRAI si tous les arguments sont VRAI." ;
+ Text [ swedish ] = "Returnerar SANT om alla argument är lika med SANT.." ;
+ Text [ dutch ] = "Zet WAAR als alle argumenten WAAR zijn." ;
+ Text [ spanish ] = "Devuelve VERDADERO si todos los argumentos son VERDADEROS." ;
+ Text [ english_us ] = "Returns TRUE if all arguments are TRUE." ;
+ Text[ chinese_simplified ] = "É趨³É TRUE £¬Èç¹ûËùÓÐÔªËØÊÇ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò çíà÷åíèå ÈÑÒÈÍÀ, åñëè âñå àðãóìåíòû ñîîòâåòñòâóþò çíà÷åíèþ ÈÑÒÈÍÀ.";
+ Text[ polish ] = "Zwraca PRAWDA, jeœli wszystkie argumenty maj¹ wartoœæ PRAWDA.";
+ Text[ japanese ] = "‚·‚ׂĂ̈ø”‚ªTRUE‚ÌꇤTRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "³]©w¦¨ TRUE ¡M¦pªG©Ò¦³¤¸¯À¬O TRUE ¡C";
+ Text[ arabic ] = "ÊÚííä TRUE ÅÐÇ ßÇäÊ ßÇÝÉ ÇáæÓÇÆØ TRUEº ÊÚííä FALSE ÅÐÇ ßÇä Ãí ãä ÇáæÓÇÆØ FALSE.";
+ Text[ dutch ] = "Zet WAAR als alle argumenten WAAR zijn.";
+ Text[ chinese_simplified ] = "É趨³É TRUE £¬Èç¹ûËùÓÐÔªËØÊÇ TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE áí üëá ôá ïñßóìáôá åßíáé ÁËÇÈÇÓ.";
+ Text[ korean ] = "¸¸ÀÏ ¸ðµç µ¶¸³ º¯¼ö°¡ TRUEÀ̸é TRUE¸¦ ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Tüm deðiþkenler DOÐRU ise DOÐRU verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_LOGIC;
+ U2S( HID_FUNC_UND );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wahrheitswert " ;
+ Text [ english ] = "logical " ;
+ Text [ norwegian ] = "Wahrheitswert " ;
+ Text [ italian ] = "Valore logico " ;
+ Text [ portuguese_brazilian ] = "Wahrheitswert " ;
+ Text [ portuguese ] = "Valor lógico " ;
+ Text [ finnish ] = "Wahrheitswert " ;
+ Text [ danish ] = "Logisk værdi " ;
+ Text [ french ] = "Valeur logique " ;
+ Text [ swedish ] = "logiskt värde " ;
+ Text [ dutch ] = "Logische waarde " ;
+ Text [ spanish ] = "Valor_lógico " ;
+ Text [ english_us ] = "Logical value " ;
+ Text[ chinese_simplified ] = "Âß¼­Öµ ";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ logiczna ";
+ Text[ japanese ] = "˜_—’l ";
+ Text[ chinese_traditional ] = "Logical Value ";
+ Text[ arabic ] = "Logical Value ";
+ Text[ dutch ] = "Logische waarde ";
+ Text[ chinese_simplified ] = "Âß¼­Öµ ";
+ Text[ greek ] = "ËïãéêÞ ôéìÞ ";
+ Text[ korean ] = "³í¸®°ª ";
+ Text[ turkish ] = "Mantýksal deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die Überprüft werden sollen und jeweils entweder WAHR oder FALSCH liefern. : Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die šberpr³ft werden sollen und jeweils entweder WAHR oder FALSCH liefern. */
+ Text = "Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die Überprüft werden sollen und jeweils entweder WAHR oder FALSCH liefern." ;
+ Text [ english ] = "are 1 to 30 conditions you want to test that can be either TRUE or FALSE." ;
+ Text [ norwegian ] = "Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die Überprüft werden sollen und jeweils entweder WAHR oder FALSCH liefern." ;
+ Text [ italian ] = "Valore logico 1; Valore logico 2;... sono da 1 a 30 condizioni da verificare che possono avere valore VERO o FALSO." ;
+ Text [ portuguese_brazilian ] = "Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die Überprüft werden sollen und jeweils entweder WAHR oder FALSCH liefern." ;
+ Text [ portuguese ] = "Valor lógico 1;Valor lógico 2;...são 1 a 30 condições a ser verificadas e a devolver como VERDADEIRO ou FALSO." ;
+ Text [ finnish ] = "Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die Überprüft werden sollen und jeweils entweder WAHR oder FALSCH liefern." ;
+ Text [ danish ] = "Logisk 1; logisk 2; ... er 1 til 30 betingelser, der skal testes og hver kan være enten SAND eller FALSK." ;
+ Text [ french ] = "Valeur logique 1, valeur logique 2, ... représentent 1 à 30 conditions qui doivent être testées et qui renvoient soit VRAI, soit FAUX." ;
+ Text [ swedish ] = "Logisk1; logisk2;... är de 1 till 30 villkor som skall kontrolleras och som vardera returnerar antingen SANN eller FALSK." ;
+ Text [ dutch ] = "Logisch 1;Logisch 2;... zijn 1 tot 30 voorwaarden die moeten worden gecontroleerd en die ofwel WAAR of FOUT opleveren." ;
+ Text [ spanish ] = "Valor lógico 1; Valor lógico 2;...son de 1 a 30 condiciones que desea comprobar y que pueden ser VERDADERO o FALSO." ;
+ Text [ english_us ] = "Logical value 1, logical value 2;...are 1 to 30 conditions to be tested and each returns either TRUE or FALSE." ;
+ Text[ chinese_simplified ] = "Âß¼­Öµ 1;Âß¼­Öµ 2;... ÊÇ 1 ÖÁ 30 ¸ö´ý¼ì²éµÄÌõ¼þÖµ£¬\n½á¹ûΪ TRUE »ò FALSE ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå 1, ëîãè÷åñêîå çíà÷åíèå 2, ... îò 1 äî 30 ïðîâåðÿåìûõ óñëîâèé, êîòîðûå ìîãóò èìåòü çíà÷åíèå ëèáî ÈÑÒÈÍÀ, ëèáî ËÎÆÜ.";
+ Text[ polish ] = "Wartoœæ prawdziwoœci 1;wartoœæ prawdziwoœci 2;... s¹ warunkami od 1 do 30, które musz¹ zostaæ sprawdzone i które wyznaczaj¹ ka¿dorazowo PRAWDA lub FA£SZ.";
+ Text[ japanese ] = "˜_—Ž®1¤˜_—Ž®2¤...‚Í TRUE‚©FALSE ‚©‚ð•]‰¿‚·‚é1‚©‚ç30ŒÂ‚܂ł̘_—Ž®B";
+ Text[ chinese_traditional ] = "ÅÞ¿è­È 1;ÅÞ¿è­È 2;... ¬O 1 ¦Ü 30 ­Ó«ÝÀˬdªº±ø¥ó­È¡Mµ²ªG¬° TRUE ©Î FALSE ¡C";
+ Text[ arabic ] = "logical1;logical 2;... ãä 1 Åáì 30 ÔÑØÇð íÌÈ ÝÍÕåÇ æãä Çáããßä Ãä Êßæä TRUE Ãæ FALSE.";
+ Text[ dutch ] = "Logisch 1;Logisch 2;... zijn 1 tot 30 voorwaarden die moeten worden gecontroleerd en die ofwel WAAR of FOUT opleveren.";
+ Text[ chinese_simplified ] = "Âß¼­Öµ 1;Âß¼­Öµ 2;... ÊÇ 1 ÖÁ 30 ¸ö´ý¼ì²éµÄÌõ¼þÖµ£¬\n½á¹ûΪ TRUE »ò FALSE ¡£";
+ Text[ greek ] = "ËïãéêÞ ôéìÞ 1, ËïãéêÞ ôéìÞ 2;...åßíáé áðü 1 Ýùò 30 óõíèÞêåò ïé ïðïßåò ðñÝðåé íá åëåã÷èïýí êáé äßíïõí Þ TRUE (ÁËÇÈÇÓ) Þ FALSE (ËÁÈÏÓ).";
+ Text[ korean ] = "³í¸®°ª 1, ³í¸®°ª 2;...´Â Å×½ºÆ®µÇ´Â 1¿¡¼­ 30±îÁöÀÇ Á¶°ÇÀÔ´Ï´Ù. ±×¸®°í°¢°¢Àº TRUE ¶Ç´Â FALSE¸¦ ¹ÝȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Mantýksal deðer 1;Mantýksal deðer 2;... kontrol edilmesi istenen, DOÐRU ya da YANLIÞ veren 1 - 30 arasý koþuldur.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ABS #*=-
+ Resource SC_OPCODE_ABS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Absolutwert einer Zahl." ;
+ Text [ english ] = "Returns the absolute value of a number." ;
+ Text [ norwegian ] = "Absolutwert einer Zahl." ;
+ Text [ italian ] = "Restituisce il valore assoluto di un numero." ;
+ Text [ portuguese_brazilian ] = "Absolutwert einer Zahl." ;
+ Text [ portuguese ] = "Valor absoluto de um número." ;
+ Text [ finnish ] = "Absolutwert einer Zahl." ;
+ Text [ danish ] = "Et tals absolutte værdi." ;
+ Text [ french ] = "Valeur absolue d'un nombre." ;
+ Text [ swedish ] = "Absolutvärdet av ett tal." ;
+ Text [ dutch ] = "Absolute waarde van een getal" ;
+ Text [ spanish ] = "Valor absoluto de un número." ;
+ Text [ english_us ] = "Absolute value of a number." ;
+ Text[ chinese_simplified ] = "Ò»¸öÊý×ֵľø¶ÔÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò àáñîëþòíîå çíà÷åíèå ÷èñëà.";
+ Text[ polish ] = "Oblicza wartoœæ bezwzglêdn¹ liczby.";
+ Text[ japanese ] = "”’l‚Ìâ‘Î’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤@­Ó¼Æ¦rªºµ´¹ï­È¡C";
+ Text[ arabic ] = "ÅÑÌÇÚ ÇáÞíãÉ ÇáãØáÞÉ áÑÞã.";
+ Text[ dutch ] = "Absolute waarde van een getal";
+ Text[ chinese_simplified ] = "Ò»¸öÊý×ֵľø¶ÔÖµ¡£";
+ Text[ greek ] = "Áðüëõôç ôéìÞ åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ Àý´ë°ª";
+ Text[ turkish ] = "Bir sayýnýn mutlak deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ABS );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl dessen Absolutwert berechnet werden soll." ;
+ Text [ english ] = "is the real number of which you want the absolute value." ;
+ Text [ norwegian ] = "Zahl dessen Absolutwert berechnet werden soll." ;
+ Text [ italian ] = "È il numero di cui si desidera calcolare il valore assoluto." ;
+ Text [ portuguese_brazilian ] = "Zahl dessen Absolutwert berechnet werden soll." ;
+ Text [ portuguese ] = "Número do qual deve ser calculado valor absoluto." ;
+ Text [ finnish ] = "Zahl dessen Absolutwert berechnet werden soll." ;
+ Text [ danish ] = "Tal som den absolutte værdi skal beregnes for." ;
+ Text [ french ] = "Le nombre dont la valeur absolue doit être calculée." ;
+ Text [ swedish ] = "Tal vars absoluta värde skall beräknas." ;
+ Text [ dutch ] = "Getal waarvan de absolute waarde moet worden berekend." ;
+ Text [ spanish ] = "número real cuyo valor absoluto se desea obtener." ;
+ Text [ english_us ] = "The number whose absolute value is to be returned." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä¾ø¶ÔÖµµÄÊý×Ö¡£";
+ Text[ russian ] = "×èñëî, äëÿ êîòîðîãî âû÷èñëÿåòñÿ àáñîëþòíîå çíà÷åíèå.";
+ Text[ polish ] = "Liczba, której wartoœæ bezwzglêdna ma zostaæ obliczona.";
+ Text[ japanese ] = "â‘Î’l‚ð‹‚ß‚éŽÀ”B";
+ Text[ chinese_traditional ] = "­n­pºâ¨äµ´¹ï­Èªº¼Æ¦r¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáÐí ÊÑíÏ ÍÓÇÈ ÇáÞíãÉ ÇáãØáÞÉ áå.";
+ Text[ dutch ] = "Getal waarvan de absolute waarde moet worden berekend.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä¾ø¶ÔÖµµÄÊý×Ö¡£";
+ Text[ greek ] = "Áñéèìüò, ôïõ ïðïßïõ èá õðïëïãéóôåß ç áðüëõôç ôéìÞ.";
+ Text[ korean ] = "¼öÀÇ Àý´ë°ª¸¦ ¹ÝȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Mutlak deðeri hesaplanan sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function POTENZ #*=-
+ Resource SC_OPCODE_POWER
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Potenziert eine Zahl mit einer anderen." ;
+ Text [ english ] = "Returns the result of a number raised to a power." ;
+ Text [ norwegian ] = "Potenziert eine Zahl mit einer anderen." ;
+ Text [ italian ] = "Restituisce il risultato del un numero elevato alla potenza indicata." ;
+ Text [ portuguese_brazilian ] = "Potenziert eine Zahl mit einer anderen." ;
+ Text [ portuguese ] = "Devolve o valor de um número elevado a uma potência." ;
+ Text [ finnish ] = "Potenziert eine Zahl mit einer anderen." ;
+ Text [ danish ] = "Beregner resultatet af et tal opløftet til en potens." ;
+ Text [ french ] = "Renvoie la valeur du nombre élevé à une puissance." ;
+ Text [ swedish ] = "Resultatet av ett tal upphöjt till en exponent." ;
+ Text [ dutch ] = "Verheft een getal tot een bepaalde macht." ;
+ Text [ spanish ] = "Devuelve el resultado de elevar el argumento número a una potencia." ;
+ Text [ english_us ] = "Raises a number to the power of another." ;
+ Text[ chinese_simplified ] = "Êý×ֵijËÃÝ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ðåçóëüòàò âîçâåäåíèÿ â ñòåïåíü.";
+ Text[ polish ] = "Podaje wartoœæ liczby podniesionej do potêgi.";
+ Text[ japanese ] = "”’l‚ׂ̂«æ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¼Æ¦rªº­¼¾­¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáäÊíÌÉ áÚÏÏ ãÑÝæÚ Åáì ÞæÉ.";
+ Text[ dutch ] = "Verheft een getal tot een bepaalde macht.";
+ Text[ chinese_simplified ] = "Êý×ֵijËÃÝ¡£";
+ Text[ greek ] = "Õøþíåé Ýíáí áñéèìü óå äýíáìç åíüò Üëëïõ áñéèìïý.";
+ Text[ korean ] = "¼ö¸¦ ´Ù¸¥ Á¦°öÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Sayýyý baþka bir sayýnýn kuvvetine çýkarýr.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_POTENZ );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Basis" ;
+ Text [ english ] = "base" ;
+ Text [ norwegian ] = "Basis" ;
+ Text [ italian ] = "base" ;
+ Text [ portuguese_brazilian ] = "Basis" ;
+ Text [ portuguese ] = "Base" ;
+ Text [ finnish ] = "Basis" ;
+ Text [ danish ] = "Basis" ;
+ Text [ french ] = "Base" ;
+ Text [ swedish ] = "bas" ;
+ Text [ dutch ] = "Basis" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Base" ;
+ Text[ chinese_simplified ] = "Base";
+ Text[ russian ] = "Îñíîâàíèå";
+ Text[ polish ] = "Podstawa";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Base";
+ Text[ arabic ] = "Base";
+ Text[ dutch ] = "Basis";
+ Text[ chinese_simplified ] = "Base";
+ Text[ greek ] = "ÂÜóç";
+ Text[ korean ] = "±âÃÊ";
+ Text[ turkish ] = "Taban";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die potenziert wird." ;
+ Text [ english ] = "is the base number." ;
+ Text [ norwegian ] = "Die Zahl, die potenziert wird." ;
+ Text [ italian ] = "è il numero della base." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die potenziert wird." ;
+ Text [ portuguese ] = "é o número a ser elevado." ;
+ Text [ finnish ] = "Die Zahl, die potenziert wird." ;
+ Text [ danish ] = "Det tal som skal opløftes." ;
+ Text [ french ] = "Le nombre de base, un nombre réel quelconque." ;
+ Text [ swedish ] = "Basen." ;
+ Text [ dutch ] = "Het getal dat u tot een bepaalde macht wilt verheffen." ;
+ Text [ spanish ] = "es el número base que se desea elevar." ;
+ Text [ english_us ] = "The number that is to be raised to the power of another." ;
+ Text[ chinese_simplified ] = "µ×Êý¡£";
+ Text[ russian ] = "×èñëî, âîçâîäèìîå â ñòåïåíü.";
+ Text[ polish ] = "Podstawa potêgi.";
+ Text[ japanese ] = "‚ׂ«æ‚Ì’ê‚É‚È‚é”’lB";
+ Text[ chinese_traditional ] = "©³¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáÃÓÇÓí.";
+ Text[ dutch ] = "Het getal dat u tot een bepaalde macht wilt verheffen.";
+ Text[ chinese_simplified ] = "µ×Êý¡£";
+ Text[ greek ] = "Ï áñéèìüò ðïõ èá õøùèåß óå êÜðïéá äýíáìç.";
+ Text[ korean ] = "Á¦°öµÉ ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Kuvveti alýnacak sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Potenz" ;
+ Text [ english ] = "power" ;
+ Text [ norwegian ] = "Potenz" ;
+ Text [ italian ] = "potenza" ;
+ Text [ portuguese_brazilian ] = "Potenz" ;
+ Text [ portuguese ] = "Potência" ;
+ Text [ finnish ] = "Potenz" ;
+ Text [ danish ] = "Potens" ;
+ Text [ french ] = "Puissance" ;
+ Text [ swedish ] = "potens" ;
+ Text [ dutch ] = "Macht" ;
+ Text [ spanish ] = "Potencia" ;
+ Text [ english_us ] = "Power" ;
+ Text[ chinese_simplified ] = "Power";
+ Text[ russian ] = "Ñòåïåíü";
+ Text[ polish ] = "Potêga";
+ Text[ japanese ] = "Žw”";
+ Text[ chinese_traditional ] = "Power";
+ Text[ arabic ] = "Power";
+ Text[ dutch ] = "Macht";
+ Text[ chinese_simplified ] = "Power";
+ Text[ greek ] = "Äýíáìç";
+ Text[ korean ] = "°ÅµìÁ¦°ö";
+ Text[ turkish ] = "Kuvvet";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Hochzahl, mit der die Zahl potenziert wird." ;
+ Text [ english ] = "is the exponent, to which the base number is raised." ;
+ Text [ norwegian ] = "Die Hochzahl, mit der die Zahl potenziert wird." ;
+ Text [ italian ] = "è l'esponente a cui è elevato il numero della base." ;
+ Text [ portuguese_brazilian ] = "Die Hochzahl, mit der die Zahl potenziert wird." ;
+ Text [ portuguese ] = "é o expoente com o qual a base é elevada." ;
+ Text [ finnish ] = "Die Hochzahl, mit der die Zahl potenziert wird." ;
+ Text [ danish ] = "Den eksponent, som grundtallet skal opløftes til." ;
+ Text [ french ] = "L'exposant auquel le nombre de base est élevé." ;
+ Text [ swedish ] = "Exponenten som basen skall upphöjas till." ;
+ Text [ dutch ] = "Macht is de exponent die de macht aangeeft tot welke u getal wilt verheffen." ;
+ Text [ spanish ] = "es el exponente al que desea elevar el número base." ;
+ Text [ english_us ] = "The power by which the number is to be raised." ;
+ Text[ chinese_simplified ] = "Ö¸Êý£¬µ×Êý°´¸ÃÖ¸Êý´ÎÃݳ˷½¡£";
+ Text[ russian ] = "Ïîêàçàòåëü ñòåïåíè, â êîòîðóþ âîçâîäèòñÿ îñíîâàíèå.";
+ Text[ polish ] = "Wyk³adnik potêgi.";
+ Text[ japanese ] = "”’l‚ð’ê‚Æ‚·‚é‚ׂ«æ‚ÌŽw”B";
+ Text[ chinese_traditional ] = "«ü¼Æ¡M©³¼Æ«ö¸Ó«ü¼Æ¦¸¾­­¼¤è¡C";
+ Text[ arabic ] = "ÇáÃÓ ÇáÐí ÓíÑÝÚ Åáíå ÇáÃÓÇÓ.";
+ Text[ dutch ] = "Macht is de exponent die de macht aangeeft tot welke u getal wilt verheffen.";
+ Text[ chinese_simplified ] = "Ö¸Êý£¬µ×Êý°´¸ÃÖ¸Êý´ÎÃݳ˷½¡£";
+ Text[ greek ] = "Ç äýíáìç åéò ôçí ïðïßá èá õøùèåß ï áñéèìüò.";
+ Text[ korean ] = "¼ö¸¦ Á¦°öÇÒ Áö¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayýnýn kuvvetinin alýnacaðý üs";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ANZAHLLEEREZELLEN #*=-
+ Resource SC_OPCODE_COUNT_EMPTY_CELLS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Zählt die leeren Zellen in einem Bereich." ;
+ Text [ english ] = "Counts blank cells in the specified range." ;
+ Text [ norwegian ] = "Zählt die Zellen in einem Bereich." ;
+ Text [ italian ] = "Conta il numero di celle vuote in un intervallo." ;
+ Text [ portuguese_brazilian ] = "Zählt die Zellen in einem Bereich." ;
+ Text [ portuguese ] = "Conta as células vazias num determinado intervalo." ;
+ Text [ finnish ] = "Zählt die Zellen in einem Bereich." ;
+ Text [ danish ] = "Tæller antal blanke celler indenfor et område." ;
+ Text [ french ] = "Compte les cellules vides d'une plage." ;
+ Text [ swedish ] = "Räknar de tomma cellerna i ett område." ;
+ Text [ dutch ] = "Telt het aantal cellen in een bereik." ;
+ Text [ spanish ] = "Cuenta el número de celdas vacías dentro de un área." ;
+ Text [ english_us ] = "Counts the blank cells in a specified range." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÇøÓòÖпհ׵¥Ôª¸ñµÄÊýÄ¿¡£";
+ Text[ russian ] = "Ïîäñ÷èòûâàåò ïóñòûå ÿ÷åéêè â çàäàííîé îáëàñòè.";
+ Text[ polish ] = "Liczy puste komórki w wyznaczonym obszarze.";
+ Text[ japanese ] = "Žw’è”͈͂̋󔒾ق̔‚𔂦‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó°Ï°ì¤¤ªÅ¥ÕÀx¦s®æªº¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÊÚÏ ÇáÎáÇíÇ ÇáÝÇÑÛÉ Ýí äØÇÞ ãÍÏÏ.";
+ Text[ dutch ] = "Telt het aantal cellen in een bereik.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÇøÓòÖпհ׵¥Ôª¸ñµÄÊýÄ¿¡£";
+ Text[ greek ] = "Áñéèìåß ôá êåíÜ êåëéÜ ìéáò ðåñéï÷Þò.";
+ Text[ korean ] = "ÁöÁ¤µÈ ¿µ¿ª¿¡¼­ ºó ¼¿À» Ä«¿îÆ®";
+ Text[ turkish ] = "Belirli bir aralýktaki boþ hücreleri sayar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ANZAHLLEEREZELLEN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bereich" ;
+ Text [ english ] = "range" ;
+ Text [ norwegian ] = "Bereich" ;
+ Text [ italian ] = "Intervallo" ;
+ Text [ portuguese_brazilian ] = "Bereich" ;
+ Text [ portuguese ] = "Intervalo" ;
+ Text [ finnish ] = "Bereich" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Plage" ;
+ Text [ swedish ] = "område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Área" ;
+ Text [ english_us ] = "range" ;
+ Text[ chinese_simplified ] = "range";
+ Text[ russian ] = "Äèàïàçîí";
+ Text[ polish ] = "Zakres";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "range";
+ Text[ arabic ] = "Range";
+ Text[ dutch ] = "Bereik";
+ Text[ chinese_simplified ] = "range";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¿µ¿ª";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Bereich in dem leere Zellen gezählt werden." ;
+ Text [ english ] = "is the range from which you want to count the blank cells." ;
+ Text [ norwegian ] = "Bereich in den leere Zellen gezählt werden." ;
+ Text [ italian ] = "È l'intervallo nel quale si desidera contare le celle vuote." ;
+ Text [ portuguese_brazilian ] = "Bereich in den leere Zellen gezählt werden." ;
+ Text [ portuguese ] = "é o intervalo onde se deseja contar as células vazias." ;
+ Text [ finnish ] = "Bereich in den leere Zellen gezählt werden." ;
+ Text [ danish ] = "Området hvori antallet af tomme celler skal tælles." ;
+ Text [ french ] = "Plage dans laquelle compter les cellules vides." ;
+ Text [ swedish ] = "Område där tomma celler beräknas." ;
+ Text [ dutch ] = "Bereik waarin lege cellen worden geteld." ;
+ Text [ spanish ] = "área en el que se contarán las celdas vacías." ;
+ Text [ english_us ] = "The range in which empty cells are to be counted." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÖпհ׵¥Ôª¸ñÊýÄ¿µÄÇøÓò¡£";
+ Text[ russian ] = "Äèàïàçîí, â êîòîðîì òðåáóåòñÿ ïîäñ÷èòàòü êîëè÷åñòâî ïóñòûõ ÿ÷ååê.";
+ Text[ polish ] = "Obszar, w którym liczone bêd¹ puste komórki.";
+ Text[ japanese ] = "‹ó”’¾Ù‚Ì”‚𔂦‚é”͈Í";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä¤¤ªÅ¥ÕÀx¦s®æ¼Æ¥Øªº°Ï°ì¡C";
+ Text[ arabic ] = "ÇáäØÇÞ ÇáÐí ÓæÝ íÊã ÚÏ ÎáÇíÇ ÝÇÑÛÉ Ýíå.";
+ Text[ dutch ] = "Bereik waarin lege cellen worden geteld.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÖпհ׵¥Ôª¸ñÊýÄ¿µÄÇøÓò¡£";
+ Text[ greek ] = "Ðåñéï÷Þ óôçí ïðïßá áñéèìïýíôáé ôá êåíÜ êåëéÜ.";
+ Text[ korean ] = "ºó ¼¿ÀÌ Ä«¿îÆ®µÈ ¿µ¿ª";
+ Text[ turkish ] = "Boþ hücrelerin sayýldýðý aralýk.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function PI #*=-
+ Resource SC_OPCODE_PI
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert den Wert der Zahl Pi." ;
+ Text [ english ] = "Returns the number 3.14159265358979, the mathematical constant p." ;
+ Text [ norwegian ] = "Liefert den Wert der Zahl Pi." ;
+ Text [ italian ] = "Restituisce il numero 3,14159265358979, la costante matematica Pi." ;
+ Text [ portuguese_brazilian ] = "Liefert den Wert der Zahl Pi." ;
+ Text [ portuguese ] = "Devolve o número 3,14159265358979, a constante matemática p, com precisão de até 15 dígitos." ;
+ Text [ finnish ] = "Liefert den Wert der Zahl Pi." ;
+ Text [ danish ] = "Returnerer værdien af tallet pi." ;
+ Text [ french ] = "Renvoie la valeur du nombre pi." ;
+ Text [ swedish ] = "Returnerar värdet av talet pi." ;
+ Text [ dutch ] = "Geeft als resultaat de waarde van pi." ;
+ Text [ spanish ] = "Devuelve el valor del número Pi." ;
+ Text [ english_us ] = "Returns the value of the number Pi." ;
+ Text[ chinese_simplified ] = "Çó³öÊýѧ³£Êý ¦Ð¡£";
+ Text[ russian ] = "Âîçâðàùàåò çíà÷åíèå ÷èñëà Ïè.";
+ Text[ polish ] = "Podaje wartoϾ liczby Pi.";
+ Text[ japanese ] = "‰~Žü—¦ƒÎ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¨D¥X¼Æ¾Ç±`¼Æ £k¡C";
+ Text[ arabic ] = "ÊÞÏã ÞíãÉ ÇáÑÞã Pi.";
+ Text[ dutch ] = "Geeft als resultaat de waarde van pi.";
+ Text[ chinese_simplified ] = "Çó³öÊýѧ³£Êý ¦Ð¡£";
+ Text[ greek ] = "Äßíåé ôçí ôéìÞ ôïõ áñéèìïý ð.";
+ Text[ korean ] = "¿øÁÖÀ²ÀÇ °ªÀ» ¹Ýȯ";
+ Text[ turkish ] = "Pi sayýsýnýn deðerini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_PI );
+ 0;
+ };
+ };
+ // -=*# Resource for function SUMME #*=-
+ Resource SC_OPCODE_SUM
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Summiert die Argumente." ;
+ Text [ english ] = "Returns the sum of all the numbers in the list of arguments." ;
+ Text [ norwegian ] = "Summiert die Argumente." ;
+ Text [ italian ] = "Restituisce la somma degli argomenti indicati." ;
+ Text [ portuguese_brazilian ] = "Summiert die Argumente." ;
+ Text [ portuguese ] = "Soma todos os argumentos." ;
+ Text [ finnish ] = "Summiert die Argumente." ;
+ Text [ danish ] = "Lægger argumenterne sammen." ;
+ Text [ french ] = "Calcule la somme des arguments." ;
+ Text [ swedish ] = "Summerar argumenten." ;
+ Text [ dutch ] = "Geeft als resultaat de som der argumenten." ;
+ Text [ spanish ] = "Devuelve la suma de los argumentos." ;
+ Text [ english_us ] = "Returns the sum of all arguments." ;
+ Text[ chinese_simplified ] = "ÔªËØ»ã×ÜÇóºÍ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñóììó âñåõ àðãóìåíòîâ.";
+ Text[ polish ] = "Sumuje argumenty.";
+ Text[ japanese ] = "ˆø”‚̇Œv‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤¸¯À¶×Á`¨D©M¡C";
+ Text[ arabic ] = "ÊÌãÚ ÇáæÓÇÆØ.";
+ Text[ dutch ] = "Geeft als resultaat de som der argumenten.";
+ Text[ chinese_simplified ] = "ÔªËØ»ã×ÜÇóºÍ¡£";
+ Text[ greek ] = "Áèñïßæåé ôá ïñßóìáôá.";
+ Text[ korean ] = "µ¶¸³ º¯¼ö¸¦ ÇÕ»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþkenlerin toplamýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_SUMME );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "Number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "Number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "Number ";
+ Text[ greek ] = "Áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Summe berechnet werden soll." ;
+ Text [ english ] = "are 1 to 30 arguments for which you want the sum." ;
+ Text [ norwegian ] = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Summe berechnet werden soll." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti di cui si desidera la somma." ;
+ Text [ portuguese_brazilian ] = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Summe berechnet werden soll." ;
+ Text [ portuguese ] = "Núm1, núm2,... são os argumentos entre 1 e 30 que se desejam somar." ;
+ Text [ finnish ] = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Summe berechnet werden soll." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 argumenter, som skal lægges sammen." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... représentent de 1 à 30 arguments dont vous voulez calculer la somme." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 argument vars summa skall beräknas." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten waarvan de som wordt berekend." ;
+ Text [ spanish ] = "Número 1; Número 2;...son entre 1 y 30 números cuya suma se desea obtener." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 arguments whose total is to be calculated." ;
+ Text[ chinese_simplified ] = "ÔªËØ 1; ÔªËØ 2;... ÊÇ 1 µ½ 30 ¸öÐèÒªÇóºÍµÄÔªËØ¡£";
+ Text[ russian ] = "×èñëî 1;÷èñëî 2;... îò 1 äî 30 àðãóìåíòîâ, ñóììó êîòîðûõ íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Od 1 do 30 argumentów, które zostan¹ zszmowane.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚͇Œv‚ð‹‚ß‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¤¸¯À 1; ¤¸¯À 2;... ¬O 1 ¨ì 30 ­Ó»Ý­n¨D©Mªº¤¸¯À¡C";
+ Text[ arabic ] = "number1;number2;... ãä 1 Åáì 30 ÑÞãÇð íÑÇÏ ÌãÚåÇ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten waarvan de som wordt berekend.";
+ Text[ chinese_simplified ] = "ÔªËØ 1; ÔªËØ 2;... ÊÇ 1 µ½ 30 ¸öÐèÒªÇóºÍµÄÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá ðñüêåéôáé íá õðïëïãéóôåß ôï Üèñïéóìá.";
+ Text[ korean ] = "°ª 1, °ª 2,... Àº ÇÕ°è°¡ °è»êµÉ 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Toplamý hesaplanacak 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function QUADRATESUMME #*=-
+ Resource SC_OPCODE_SUM_SQ
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Summiert die Quadrate der Argumente." ;
+ Text [ english ] = "Returns the sum of the squares of the arguments." ;
+ Text [ norwegian ] = "Summiert die Quadrate der Argumente." ;
+ Text [ italian ] = "Restituisce la somma dei quadrati degli argomenti." ;
+ Text [ portuguese_brazilian ] = "Summiert die Quadrate der Argumente." ;
+ Text [ portuguese ] = "Devolve a soma dos quadrados dos argumentos." ;
+ Text [ finnish ] = "Summiert die Quadrate der Argumente." ;
+ Text [ danish ] = "Beregner summen af kvadrater for argumenterne." ;
+ Text [ french ] = "Renvoie la somme des carrés des arguments." ;
+ Text [ swedish ] = "Summerar argumentens kvadrater." ;
+ Text [ dutch ] = "Berekent de som van de kwadraten van de argumenten." ;
+ Text [ spanish ] = "Devuelve la suma de los cuadrados de los argumentos." ;
+ Text [ english_us ] = "Returns the sum of the squares of the arguments." ;
+ Text[ chinese_simplified ] = "¼ÆËãÔªËصÄƽ·½ºÍ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñóììó êâàäðàòîâ àðãóìåíòîâ.";
+ Text[ polish ] = "Sumuje kwadraty argumentów.";
+ Text[ japanese ] = "ˆø”‚Ì2æ‚̘a(•½•û˜a)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤¸¯Àªº¥­¤è©M¡C";
+ Text[ arabic ] = "ÊÌãÚ ãÑÈÚÇÊ ÇáæÓÇÆØ.";
+ Text[ dutch ] = "Berekent de som van de kwadraten van de argumenten.";
+ Text[ chinese_simplified ] = "¼ÆËãÔªËصÄƽ·½ºÍ¡£";
+ Text[ greek ] = "Áèñïßæåé ôéò ôåôñáãùíéêÝò ôéìÝò ôùí ïñéóìÜôùí.";
+ Text[ korean ] = "µ¶¸³ º¯¼öÀÇ Á¦°öÀ» ÇÕ»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþkenlerin karelerini toplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_QUADRATESUMME );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "Number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "Number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "Number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Quadratesumme berechnet werden soll." ;
+ Text [ english ] = "are 1 to 30 arguments for which you want the sum of the squares." ;
+ Text [ norwegian ] = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Quadratesumme berechnet werden soll." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti di cui si desidera la somma dei quadrati." ;
+ Text [ portuguese_brazilian ] = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Quadratesumme berechnet werden soll." ;
+ Text [ portuguese ] = "Núm1, núm2,... são argumentos entre 1 e 30 para os quais deseja a soma dos quadrados." ;
+ Text [ finnish ] = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Quadratesumme berechnet werden soll." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 argumenter, som summen af kvadrater skal beregnes for." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... représentent de 1 à 30 arguments pour lesquels vous souhaitez obtenir la somme des carrés." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 argument vars kvadratsumma skall beräknas." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten waarvan u kwadratensom wilt berekenen." ;
+ Text [ spanish ] = "Número 1; Número 2;...son de 1 a 30 argumentos para los cuales desea obtener la suma de sus cuadrados." ;
+ Text [ english_us ] = "Number 1, number 2,... are 1 to 30 arguments for which the sum of the squares is to be calculated." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1;Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸öÐèÒªÇóÆäƽ·½ºÍµÄ²ÎÊý¡£";
+ Text[ russian ] = "×èñëî 1;÷èñëî 2;... îò 1 äî 30 àðãóìåíòîâ, ñóììó êâàäðàòîâ êîòîðûõ íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Od 1 do 30 argumentów, których kwadraty maj¹ zostaæ zsumowane.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í•½•û˜a‚ð‹‚ß‚é1‚©‚ç30ŒÂ‚Ü‚Å‚Ì”’lB";
+ Text[ chinese_traditional ] = "¼Æ¦r 1;¼Æ¦r 2;... ¬O 1 ¦Ü 30 ­Ó»Ý­n¨D¨ä¥­¤è©Mªº°Ñ¼Æ¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 ÑÞãÇð ÊÑíÏ ÍÓÇÈ ãÌãæÚ ãÑÈÚÇÊåÇ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten waarvan u kwadratensom wilt berekenen.";
+ Text[ chinese_simplified ] = "Êý×Ö 1;Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸öÐèÒªÇóÆäƽ·½ºÍµÄ²ÎÊý¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 ïñßóìáôá ôùí ïðïßùí ðñüêåéôáé íá õðïëïãéóôåß ôï Üèñïéóìá ôùí ôåôñáãùíéêþí ôïõò ôéìþí";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... Àº Á¦°öÀÇ ÇÕÀÌ °è»êµÉ 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Karelerinin toplamý alýnacak 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function PRODUKT #*=-
+ Resource SC_OPCODE_PRODUCT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Multipliziert die Argumente." ;
+ Text [ english ] = "Multiplies all the numbers given as arguments and returns the product." ;
+ Text [ norwegian ] = "Multipliziert die Argumente." ;
+ Text [ italian ] = "Restituisce il prodotto di tutti i numeri indicati come argomenti." ;
+ Text [ portuguese_brazilian ] = "Multipliziert die Argumente." ;
+ Text [ portuguese ] = "Multiplica os argumentos." ;
+ Text [ finnish ] = "Multipliziert die Argumente." ;
+ Text [ danish ] = "Multiplicerer argumenterne." ;
+ Text [ french ] = "Multiplie les arguments." ;
+ Text [ swedish ] = "Multiplicerar argumenten." ;
+ Text [ dutch ] = "Vermenigvuldigt de argumenten." ;
+ Text [ spanish ] = "Multiplica los argumentos." ;
+ Text [ english_us ] = "Multiplies the arguments." ;
+ Text[ chinese_simplified ] = "ËùÓÐÔªËصij˻ý¡£";
+ Text[ russian ] = "Ïåðåìíîæàåò âñå àðãóìåíòû.";
+ Text[ polish ] = "Mno¿y argumenty.";
+ Text[ japanese ] = "ˆø”ؽĂÌÏ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "©Ò¦³¤¸¯Àªº­¼¿n¡C";
+ Text[ arabic ] = "ÊÖÑÈ ßá ÇáæÓÇÆØ.";
+ Text[ dutch ] = "Vermenigvuldigt de argumenten.";
+ Text[ chinese_simplified ] = "ËùÓÐÔªËصij˻ý¡£";
+ Text[ greek ] = "ÐïëëáðëáóéÜæåé ôá ïñßóìáôá.";
+ Text[ korean ] = "µ¶¸³ º¯¼ö¸¦ °öÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþkenleri çarpar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_PRODUKT );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "Numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "Number " ;
+ Text[ chinese_simplified ] = "Number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "Number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "Number ";
+ Text[ greek ] = "Áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Produkt berechnet werden soll." ;
+ Text [ english ] = "are 1 to 30 numbers that you want to multiply." ;
+ Text [ norwegian ] = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Produkt berechnet werden soll." ;
+ Text [ italian ] = "sono da 1 a 30 numeri che si desidera moltiplicare." ;
+ Text [ portuguese_brazilian ] = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Produkt berechnet werden soll." ;
+ Text [ portuguese ] = "é de 1 até 30 argumentos, cujo produto se deseja calcular." ;
+ Text [ finnish ] = "Zahl 1;Zahl 2;... sind 1 bis 30 Argumente, deren Produkt berechnet werden soll." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 argumenter, som skal multipliceres." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... représentent de 1 à 30 arguments dont vous souhaitez calculer le produit." ;
+ Text [ swedish ] = "tal 1;tal 2;... är 1 till 30 argument vars produkt skall beräknas." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die u wilt vermenigvuldigen." ;
+ Text [ spanish ] = "Número 1; Número 2;...son de 1 a 30 argumentos cuyo producto se desea conocer." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 arguments to be multiplied and a result returned." ;
+ Text[ chinese_simplified ] = "ÔªËØ 1; ÔªËØ 2;... Ϊ 1 µ½ 30 ¸öÐèÒªÏà³ËµÄÊý×ÖÔªËØ¡£";
+ Text[ russian ] = "×èñëî 1;÷èñëî 2;... îò 1 äî 30 àðãóìåíòîâ, ïðîèçâåäåíèå êîòîðûõ âû÷èñëÿåòñÿ.";
+ Text[ polish ] = "Od 1 do 30 argumentów, których iloczyn ma zostaæ obliczony";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚ÍÏ‚ð‹‚ß‚é1‚©‚ç30ŒÂ‚̈ø”B";
+ Text[ chinese_traditional ] = "¤¸¯À 1; ¤¸¯À 2;... ¬° 1 ¨ì 30 ­Ó»Ý­n¬Û­¼ªº¼Æ¦r¤¸¯À¡C";
+ Text[ arabic ] = "number1;number2 ãä 1 Åáì 30 ÑÞã íÑÇÏ ÖÑÈåÇ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die u wilt vermenigvuldigen.";
+ Text[ chinese_simplified ] = "ÔªËØ 1; ÔªËØ 2;... Ϊ 1 µ½ 30 ¸öÐèÒªÏà³ËµÄÊý×ÖÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò 2,... åßíáé 1 Ýùò 30 ïñßóìáôá ôùí ïðïßùí ðñüêåéôáé íá õðïëïãéóôåß ôï ãéíüìåíï.";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... °öÀÌ °è»êµÉ 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Çarpýmlarý alýnmak istenen 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SUMMEWENN #*=-
+ Resource SC_OPCODE_SUM_IF
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Summiert die Argumente, die den Bedingungen genügen. : Summiert die Argumente, die den Bedingungen gen³gen. */
+ Text = "Summiert die Argumente, die den Bedingungen genügen." ;
+ Text [ english ] = "Adds the cells specified by a given criteria." ;
+ Text [ norwegian ] = "Summiert die Argumente, die den Bedingungen genügen." ;
+ Text [ italian ] = "Somma gli argomenti specificati secondo il criterio dato." ;
+ Text [ portuguese_brazilian ] = "Summiert die Argumente, die den Bedingungen genügen." ;
+ Text [ portuguese ] = "Adiciona as células que preenchem os critérios dados." ;
+ Text [ finnish ] = "Summiert die Argumente, die den Bedingungen genügen." ;
+ Text [ danish ] = "Lægger de argumenter sammen, som er specificeret af kriterierne." ;
+ Text [ french ] = "Additionne des cellules spécifiées si elles répondent aux critères." ;
+ Text [ swedish ] = "Summerar argumenten som uppfyller villkoren." ;
+ Text [ dutch ] = "Geeft als resultaat de som van de argumenten die aan de opgegeven criteria voldoen." ;
+ Text [ spanish ] = "Suma los argumentos que coinciden con el argumento criterio." ;
+ Text [ english_us ] = "Totals the arguments that meet the conditions." ;
+ Text[ chinese_simplified ] = "¸ù¾ÝÖ¸¶¨Ìõ¼þ¶ÔÈô¸ÉÔªËØÇóºÍ¡£";
+ Text[ russian ] = "Ñêëàäûâàåò òàêèå àðãóìåíòû, êîòîðûå ñîîòâåòñòâóþò óñëîâèÿì.";
+ Text[ polish ] = "Sumuje argumenty, które spe³niaj¹ podane warunki.";
+ Text[ japanese ] = "Žw’è‚ÌðŒ‚É‚ ‚Á‚½¾Ù‚Ì’l‚ð‡Œv‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "®Ú¾Ú«ü©w±ø¥ó¹ï­Y¤z¤¸¯À¨D©M¡C";
+ Text[ arabic ] = "ÊÌãÚ ÇáÎáÇíÇ ÇáÊí ÊÝí ÈÇáÔÑæØ.";
+ Text[ dutch ] = "Geeft als resultaat de som van de argumenten die aan de opgegeven criteria voldoen.";
+ Text[ chinese_simplified ] = "¸ù¾ÝÖ¸¶¨Ìõ¼þ¶ÔÈô¸ÉÔªËØÇóºÍ¡£";
+ Text[ greek ] = "Áèñïßæåé ôá ïñßóìáôá ôá ïðïßá åêðëçñïýí ôéò óõíèÞêåò.";
+ Text[ korean ] = "Á¶°ÇÀ» ÃæÁ·½ÃÅ°´Â µ¶¸³ º¯¼ö¸¦ ÇÕĨ´Ï´Ù.";
+ Text[ turkish ] = "Koþullara uyan deðiþkenlerin toplamýný alýr.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_SUMMEWENN );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bereich" ;
+ Text [ english ] = "range" ;
+ Text [ norwegian ] = "Bereich" ;
+ Text [ italian ] = "area" ;
+ Text [ portuguese_brazilian ] = "Bereich" ;
+ Text [ portuguese ] = "Intervalo" ;
+ Text [ finnish ] = "Bereich" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Plage" ;
+ Text [ swedish ] = "område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Área" ;
+ Text [ english_us ] = "range" ;
+ Text[ chinese_simplified ] = "range";
+ Text[ russian ] = "Äèàïàçîí";
+ Text[ polish ] = "Zakres";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "range";
+ Text[ arabic ] = "Range";
+ Text[ dutch ] = "Bereik";
+ Text[ chinese_simplified ] = "range";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¿µ¿ª";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Bereich, auf den die Kriterien angewendet werden." ;
+ Text [ english ] = "is the range of cells you want evaluated." ;
+ Text [ norwegian ] = "Bereich, auf den die Kriterien angewendet werden." ;
+ Text [ italian ] = "è l'area alla quale vengono applicati i criteri." ;
+ Text [ portuguese_brazilian ] = "Bereich, auf den die Kriterien angewendet werden." ;
+ Text [ portuguese ] = "é o intervalo de células ao qual se aplicam os critérios dados." ;
+ Text [ finnish ] = "Bereich, auf den die Kriterien angewendet werden." ;
+ Text [ danish ] = "Området kriterierne skal anvendes på." ;
+ Text [ french ] = "Plage sur laquelle utiliser les critères." ;
+ Text [ swedish ] = "Området som kriterierna skall tillämpas på." ;
+ Text [ dutch ] = "Bereik waarop de criteria worden toegepast." ;
+ Text [ spanish ] = "área de celdas que desea evaluar." ;
+ Text [ english_us ] = "The range to be evaluated by the criteria given." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚÌõ¼þÅжϵĵ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê, ê êîòîðîìó ïðèìåíÿþòñÿ êðèòåðèè.";
+ Text[ polish ] = "Zakres komórek, do którego maj¹ zostaæ zastosowane kryteria.";
+ Text[ japanese ] = "ðŒ‚ð‚ ‚Ä‚Í‚ß‚é”͈ÍB";
+ Text[ chinese_traditional ] = "¥Î©ó±ø¥ó§PÂ_ªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáãÑÇÏ ÊØÈíÞ ÇáãÚÇííÑ Úáíå.";
+ Text[ dutch ] = "Bereik waarop de criteria worden toegepast.";
+ Text[ chinese_simplified ] = "ÓÃÓÚÌõ¼þÅжϵĵ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ðåñéï÷Þ óôçí ïðïßá èá åöáñìïóôïýí ôá êñéôÞñéá.";
+ Text[ korean ] = "ÁÖ¾îÁø ±âÁØ¿¡ ÀÇÇؼ­ °è»êµÉ ¿µ¿ª";
+ Text[ turkish ] = "Ölçütlerin uygulanacaðý aralýk.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Kriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Kriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Kriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Kriterien" ;
+ Text [ danish ] = "Kriterier" ;
+ Text [ french ] = "Critères" ;
+ Text [ swedish ] = "kriterier" ;
+ Text [ dutch ] = "Criteria" ;
+ Text [ spanish ] = "criterios" ;
+ Text [ english_us ] = "criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè";
+ Text[ polish ] = "Kryteria";
+ Text[ japanese ] = "ðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Criteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá";
+ Text[ korean ] = "±âÁØ";
+ Text[ turkish ] = "Ölçütler";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Zellbereich, in dem die Suchkriterien angegeben sind." ;
+ Text [ english ] = "is the criteria in the form of a number, expression, or text that defines which cells will be added." ;
+ Text [ norwegian ] = "Zellbereich, in dem die Suchkriterien angegeben sind." ;
+ Text [ italian ] = "Area di celle in cui sono specificati i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Zellbereich, in dem die Suchkriterien angegeben sind." ;
+ Text [ portuguese ] = "são os critérios na forma de número, expressão ou texto, que definem quais as células a adicionar." ;
+ Text [ finnish ] = "Zellbereich, in dem die Suchkriterien angegeben sind." ;
+ Text [ danish ] = "Celleområdet søgekriterierne er angivet i." ;
+ Text [ french ] = "Plage de cellules où les critères de recherche sont spécifiés." ;
+ Text [ swedish ] = "Cellområdet där sökkriterierna är angivna." ;
+ Text [ dutch ] = "Cellenbereik waarin de zoekcriteria worden aangegeven." ;
+ Text [ spanish ] = "área en el que se especifican los valores buscados." ;
+ Text [ english_us ] = "The cell range in which the search criteria are given." ;
+ Text[ chinese_simplified ] = "Ö¸¶¨µÄÌõ¼þ¡£";
+ Text[ russian ] = "Îáëàñòü ÿ÷åéêè, â êîòîðîé çàäàíû êðèòåðèè ïîèñêà.";
+ Text[ polish ] = "Zakres komórek, dla którego zostan¹ podane kryteria wyszukiwania.";
+ Text[ japanese ] = "ðŒ‚ªŽw’肳‚ê‚Ä‚¢‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "«ü©wªº±ø¥ó¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íæÌÏ Èå ãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Cellenbereik waarin de zoekcriteria worden aangegeven.";
+ Text[ chinese_simplified ] = "Ö¸¶¨µÄÌõ¼þ¡£";
+ Text[ greek ] = "Ðåñéï÷Þ êåëéþí, óôçí ïðïßá õðÜñ÷ïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ÁÖ¾îÁø ã±â ±âÁØÀÌ ÀÖ´Â ¼¿ ¿µ¿ª";
+ Text[ turkish ] = "Arama ölçütlerinin belirtildiði hücre aralýðý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Summenbereich" ;
+ Text [ english ] = "sum_range" ;
+ Text [ norwegian ] = "Summenbereich" ;
+ Text [ italian ] = "int_somma" ;
+ Text [ portuguese_brazilian ] = "Summenbereich" ;
+ Text [ portuguese ] = "Intervalo_soma" ;
+ Text [ finnish ] = "Summenbereich" ;
+ Text [ danish ] = "Sum_område" ;
+ Text [ french ] = "Plage_somme" ;
+ Text [ swedish ] = "summaområde" ;
+ Text [ dutch ] = "Som-bereik" ;
+ Text [ spanish ] = "Área de suma" ;
+ Text [ english_us ] = "sum_range" ;
+ Text[ chinese_simplified ] = "sum_range";
+ Text[ russian ] = "Äèàïàçîí_ñóììèðîâàíèÿ";
+ Text[ polish ] = "Zakres sumowania";
+ Text[ japanese ] = "‡Œv”͈Í";
+ Text[ chinese_traditional ] = "sum_range";
+ Text[ arabic ] = "Sum_range";
+ Text[ dutch ] = "Som-bereik";
+ Text[ chinese_simplified ] = "sum_range";
+ Text[ greek ] = "Sum_range";
+ Text[ korean ] = "ÇÕ°è_¿µ¿ª";
+ Text[ turkish ] = "Toplam aralýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Bereich, aus dem die Werte summiert werden." ;
+ Text [ english ] = "are the actual cells to sum." ;
+ Text [ norwegian ] = "Bereich, aus dem die Werte summiert werden." ;
+ Text [ italian ] = "è l'area contenente i valori da sommare." ;
+ Text [ portuguese_brazilian ] = "Bereich, aus dem die Werte summiert werden." ;
+ Text [ portuguese ] = "é o intervalo de células cujos valores serão somados." ;
+ Text [ finnish ] = "Bereich, aus dem die Werte summiert werden." ;
+ Text [ danish ] = "Området hvis værdier skal summeres." ;
+ Text [ french ] = "Plage dont les valeurs sont à additionner." ;
+ Text [ swedish ] = "Område ur vilket värdena summeras." ;
+ Text [ dutch ] = "Bereik waarvan de waarden worden opgeteld." ;
+ Text [ spanish ] = "son las celdas que se desean sumar." ;
+ Text [ english_us ] = "The range from which the values are to be totalled." ;
+ Text[ chinese_simplified ] = "ÐèÒªÇóºÍµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê, çíà÷åíèÿ êîòîðûõ ñóììèðóþòñÿ.";
+ Text[ polish ] = "Zakres, z którego wartoœci zostan¹ zsumowane.";
+ Text[ japanese ] = "’l‚ð‡Œv‚·‚é”͈ÍB";
+ Text[ chinese_traditional ] = "»Ý­n¨D©MªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáãÑÇÏ ÌãÚ ÇáÞíã ÇáãæÌæÏÉ Èå.";
+ Text[ dutch ] = "Bereik waarvan de waarden worden opgeteld.";
+ Text[ chinese_simplified ] = "ÐèÒªÇóºÍµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ðåñéï÷Þ áðü ôçí ïðïßá áèñïßæïíôáé ïé ôéìÝò.";
+ Text[ korean ] = "°ªÀÌ ÇÕ°èµÉ ¿µ¿ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Toplanacak deðerlerin bulunduðu aralýk.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZÄHLENWENN #*=-
+ Resource SC_OPCODE_COUNT_IF
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zählt die Argumente, die den Bedingungen genügen. : Zõhlt die Argumente, die den Bedingungen gen³gen. */
+ Text = "Zählt die Argumente, die den Bedingungen genügen." ;
+ Text [ english ] = "Counts the number of cells within a range which meet the given criteria." ;
+ Text [ norwegian ] = "Zählt die Argumente, die den Bedingungen genügen." ;
+ Text [ italian ] = "Conta gli argomenti che soddisfano i criteri specificati." ;
+ Text [ portuguese_brazilian ] = "Zählt die Argumente, die den Bedingungen genügen." ;
+ Text [ portuguese ] = "Conta o número de argumentos que obedece às condições dadas." ;
+ Text [ finnish ] = "Zählt die Argumente, die den Bedingungen genügen." ;
+ Text [ danish ] = "Tæller de argumenter som opfylder betingelserne." ;
+ Text [ french ] = "Compte les arguments répondant aux critères." ;
+ Text [ swedish ] = "Räknar de argument som uppfyller villkoren." ;
+ Text [ dutch ] = "Telt de argumenten die aan de criteria voldoen." ;
+ Text [ spanish ] = "Cuenta los argumentos que cumplen con las condiciones dadas." ;
+ Text [ english_us ] = "Counts the arguments which meet the set conditions." ;
+ Text[ chinese_simplified ] = "¼ÆËã·ûºÏÌõ¼þµÄµ¥Ôª¸ñÊýÄ¿¡£";
+ Text[ russian ] = "Ïîäñ÷èòûâàåò àðãóìåíòû, êîòîðûå ñîîòâåòñòâóþò óñëîâèÿì.";
+ Text[ polish ] = "Liczy iloœæ argumumentów, spe³niaj¹cych podane warunki.";
+ Text[ japanese ] = "Žw’è‚ÌðŒ‚ɇ‚¤ˆø”‚Ì”‚𔂦‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ²Å¦X±ø¥óªºÀx¦s®æ¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÊÚÏ ÇáæÓÇÆØ ÇáÊí ÊÝí ÈÇáÔÑæØ ÇáãÚØÇÉ.";
+ Text[ dutch ] = "Telt de argumenten die aan de criteria voldoen.";
+ Text[ chinese_simplified ] = "¼ÆËã·ûºÏÌõ¼þµÄµ¥Ôª¸ñÊýÄ¿¡£";
+ Text[ greek ] = "Áñéèìåß ôá ïñßóìáôá ðïõ åêðëçñïýí ôéò óõíèÞêåò.";
+ Text[ korean ] = "¼³Á¤ Á¶°Ç¿¡ ¸Â´Â ¾ÆÅ¥¸ÕÆ®¸¦ Ä«¿îÆ®";
+ Text[ turkish ] = "Koþullara uyan deðiþkenleri sayar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ZAEHLENWENN );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bereich" ;
+ Text [ english ] = "range" ;
+ Text [ norwegian ] = "Bereich" ;
+ Text [ italian ] = "Intervallo" ;
+ Text [ portuguese_brazilian ] = "Bereich" ;
+ Text [ portuguese ] = "Intervalo" ;
+ Text [ finnish ] = "Bereich" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Plage" ;
+ Text [ swedish ] = "område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Área" ;
+ Text [ english_us ] = "range" ;
+ Text[ chinese_simplified ] = "range";
+ Text[ russian ] = "Äèàïàçîí";
+ Text[ polish ] = "Zakres";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "range";
+ Text[ arabic ] = "Range";
+ Text[ dutch ] = "Bereik";
+ Text[ chinese_simplified ] = "range";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¿µ¿ª";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Bereich, auf den die Kriterien angewendet werden." ;
+ Text [ english ] = "is the range of cells from which you want to count cells." ;
+ Text [ norwegian ] = "Bereich, auf den die Kriterien angewendet werden." ;
+ Text [ italian ] = "È l'intervallo al quale vengono applicati i criteri." ;
+ Text [ portuguese_brazilian ] = "Bereich, auf den die Kriterien angewendet werden." ;
+ Text [ portuguese ] = "é o intervalo de células, ao qual se deseja aplicar os critérios." ;
+ Text [ finnish ] = "Bereich, auf den die Kriterien angewendet werden." ;
+ Text [ danish ] = "Området kriterierne skal anvendes på." ;
+ Text [ french ] = "Plage à laquelle les critères doivent être appliqués." ;
+ Text [ swedish ] = "Område på vilket kriterierna tillämpas." ;
+ Text [ dutch ] = "Bereik waarop de criteria worden toegepast." ;
+ Text [ spanish ] = "área a la que se le aplican los criterios." ;
+ Text [ english_us ] = "The range of cells on which the criteria are to be applied." ;
+ Text[ chinese_simplified ] = "²ÉÓÃËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê, ê êîòîðîìó ïðèìåíÿþòñÿ êðèòåðèè.";
+ Text[ polish ] = "Zakres komórek, do którego nale¿y zastosowaæ kryteria.";
+ Text[ japanese ] = "ðŒ‚ð“–‚Ä‚Í‚ß‚é”͈Í";
+ Text[ chinese_traditional ] = "±Ä¥Î´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáãÑÇÏ ÊØÈíÞ ÇáãÚÇííÑ Úáíå.";
+ Text[ dutch ] = "Bereik waarop de criteria worden toegepast.";
+ Text[ chinese_simplified ] = "²ÉÓÃËÑÑ°Ìõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ðåñéï÷Þ óôçí ïðïßá èá åöáñìïóôïýí ôá êñéôÞñéá.";
+ Text[ korean ] = "Àû¿ëµÈ ±âÁØÀÇ ¼¿ÀÇ ¿µ¿ª.";
+ Text[ turkish ] = "Ölçütlerin uygulandýðý aralýk.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Kriterien" ;
+ Text [ english ] = "criteria" ;
+ Text [ norwegian ] = "Kriterien" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Kriterien" ;
+ Text [ portuguese ] = "Critérios" ;
+ Text [ finnish ] = "Kriterien" ;
+ Text [ danish ] = "Kriterier" ;
+ Text [ french ] = "Critères" ;
+ Text [ swedish ] = "kriterier" ;
+ Text [ dutch ] = "Criteria" ;
+ Text [ spanish ] = "Criterios" ;
+ Text [ english_us ] = "criteria" ;
+ Text[ chinese_simplified ] = "criteria";
+ Text[ russian ] = "Êðèòåðèè";
+ Text[ polish ] = "Kryteria";
+ Text[ japanese ] = "ðŒ";
+ Text[ chinese_traditional ] = "criteria";
+ Text[ arabic ] = "Criteria";
+ Text[ dutch ] = "Criteria";
+ Text[ chinese_simplified ] = "criteria";
+ Text[ greek ] = "ÊñéôÞñéá";
+ Text[ korean ] = "±âÁØ";
+ Text[ turkish ] = "Ölçütler";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Zellbereich, in dem die Suchkriterien angegeben sind." ;
+ Text [ english ] = "is the criteria in the form of a number, expression, or text that defines which cells will be counted." ;
+ Text [ norwegian ] = "Zellbereich, in dem die Suchkriterien angegeben sind." ;
+ Text [ italian ] = "È l'area di celle in cui sono specificati i criteri di ricerca." ;
+ Text [ portuguese_brazilian ] = "Zellbereich, in dem die Suchkriterien angegeben sind." ;
+ Text [ portuguese ] = "é o critério na forma de um número, expressão ou texto que define quais as células que serão contadas." ;
+ Text [ finnish ] = "Zellbereich, in dem die Suchkriterien angegeben sind." ;
+ Text [ danish ] = "Celleområdet søgekriterierne er angivet i." ;
+ Text [ french ] = "Plage de cellule dans laquelle sont spécifiés les critères." ;
+ Text [ swedish ] = "Cellområde där sökkriterierna är angivna." ;
+ Text [ dutch ] = "Cellenbereik waarin de zoekcriteria zijn aangegeven." ;
+ Text [ spanish ] = "área de celda en el que se especifican los valores buscados." ;
+ Text [ english_us ] = "The cell range in which the search criteria are given." ;
+ Text[ chinese_simplified ] = "±»Ö¸¶¨²ÉÓÃÑ°ÕÒÌõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Îáëàñòü ÿ÷åéêè, â êîòîðîé çàäàíû êðèòåðèè ïîèñêà.";
+ Text[ polish ] = "Zakres komórek, w którym wyznaczone zostan¹ kryteria wyszukiwania.";
+ Text[ japanese ] = "ŒŸõðŒ‚ð“–‚Ä‚Í‚ß‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "³Q«ü©w±Ä¥Î´M§ä±ø¥óªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáÐí íæÌÏ Èå ãÚÇííÑ ÇáÈÍË.";
+ Text[ dutch ] = "Cellenbereik waarin de zoekcriteria zijn aangegeven.";
+ Text[ chinese_simplified ] = "±»Ö¸¶¨²ÉÓÃÑ°ÕÒÌõ¼þµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ðåñéï÷Þ êåëéþí, óôçí ïðïßá õðÜñ÷ïõí ôá êñéôÞñéá áíáæÞôçóçò.";
+ Text[ korean ] = "ÁÖ¾îÁø ã±â ±âÁØÀÌ ÀÖ´Â ¼¿ ¿µ¿ª";
+ Text[ turkish ] = "Arama ölçütlerinin belirtildiði hücre aralýðý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function WURZEL #*=-
+ Resource SC_OPCODE_SQRT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet die Quadratwurzel einer Zahl. : Liefert die Quadratwurzel einer Zahl. */
+ Text = "Berechnet die Quadratwurzel einer Zahl." ;
+ Text [ english ] = "Returns a positive square root." ;
+ Text [ norwegian ] = "Berechnet die Quadratwurzel einer Zahl." ;
+ Text [ italian ] = "Restituisce la radice quadrata di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Quadratwurzel einer Zahl." ;
+ Text [ portuguese ] = "Devolve a raíz quadrada de um número." ;
+ Text [ finnish ] = "Berechnet die Quadratwurzel einer Zahl." ;
+ Text [ danish ] = "Beregner et tals kvadratrod." ;
+ Text [ french ] = "Renvoie la racine carrée d'un nombre." ;
+ Text [ swedish ] = "Beräknar ett tals kvadratrot." ;
+ Text [ dutch ] = "Geeft als resultaat de vierkantswortel van een getal." ;
+ Text [ spanish ] = "Devuelve la raíz cuadrada de un número." ;
+ Text [ english_us ] = "Returns the square root of a number." ;
+ Text[ chinese_simplified ] = "ÇóÒ»¸öÊýµÄÕýƽ·½¸ù¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êâàäðàòíûé êîðåíü ÷èñëà.";
+ Text[ polish ] = "Oblicza piewiastek kwadratowy liczby.";
+ Text[ japanese ] = "”’l‚Ì•½•ûª‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¨D¤@­Ó¼Æªº¥¿¥­¤è®Ú¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÌÐÑ ÇáÊÑÈíÚí áÑÞã.";
+ Text[ dutch ] = "Geeft als resultaat de vierkantswortel van een getal.";
+ Text[ chinese_simplified ] = "ÇóÒ»¸öÊýµÄÕýƽ·½¸ù¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ôåôñáãùíéêÞ ñßæá åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ Á¦°ö±ÙÀ» ¹Ýȯ";
+ Text[ turkish ] = "Sayýnýn karekökünü verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_WURZEL );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein positiver Wert, dessen Quadratwurzel berechnet werden soll. : Die Zahl deren Quadratwurzel berechnet werden soll. */
+ Text = "Ein positiver Wert, dessen Quadratwurzel berechnet werden soll." ;
+ Text [ english ] = "is the number for which you want the square root." ;
+ Text [ norwegian ] = "Ein positiver Wert, dessen Quadratwurzel berechnet werden soll." ;
+ Text [ italian ] = "è il numero di cui si desidera calcolare la radice quadrata." ;
+ Text [ portuguese_brazilian ] = "Ein positiver Wert, dessen Quadratwurzel berechnet werden soll." ;
+ Text [ portuguese ] = "é o número do qual deseja calcular a raiz quadrada." ;
+ Text [ finnish ] = "Ein positiver Wert, dessen Quadratwurzel berechnet werden soll." ;
+ Text [ danish ] = "Et positivt tal som kvadratroden skal beregnes for." ;
+ Text [ french ] = "Une valeur positive dont vous voulez obtenir la racine carrée." ;
+ Text [ swedish ] = "Ett positivt värde vars kvadratrot skall beräknas." ;
+ Text [ dutch ] = "Het getal waarvan u de vierkantswortel wilt berekenen." ;
+ Text [ spanish ] = "es el número cuya raíz cuadrada desea obtener." ;
+ Text [ english_us ] = "A positive value for which the square root is to be calculated." ;
+ Text[ chinese_simplified ] = "ÐèÒªÇóƽ·½¸ùµÄÕýÊýÖµ¡£";
+ Text[ russian ] = "Ïîëîæèòåëüíîå çíà÷åíèå, êâàäðàòíûé êîðåíü êîòîðîãî íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Wartoœæ dodatnia, dla której ma zostaæ obliczony pierwiastek kwadratowy.";
+ Text[ japanese ] = "•½•ûª‚ð‹‚߂鳂̔B";
+ Text[ chinese_traditional ] = "»Ý­n¨D¥­¤è®Úªº¥¿¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãæÌÈ ÇáÐí ÊÑíÏ ÍÓÇÈ ÌÐÑå ÇáÊÑÈíÚí.";
+ Text[ dutch ] = "Het getal waarvan u de vierkantswortel wilt berekenen.";
+ Text[ chinese_simplified ] = "ÐèÒªÇóƽ·½¸ùµÄÕýÊýÖµ¡£";
+ Text[ greek ] = "Ìéá èåôéêÞ ôéìÞ ôçò ïðïßáò èá õðïëïãéóôåß ç ôåôñáãùíéêÞ ñßæá.";
+ Text[ korean ] = "»êÃâµÉ Á¦°ö±Ù¿¡´ëÇÑ ¾ç °ª.";
+ Text[ turkish ] = "Karekökü hesaplanmak istenen pozitif deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZUFALLSZAHL #*=-
+ Resource SC_OPCODE_RANDOM
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert eine Zufallszahl zwischen 0 und 1." ;
+ Text [ english ] = "Returns an evenly distributed random number greater than or equal to 0 and less than 1." ;
+ Text [ norwegian ] = "Liefert eine Zufallszahl zwischen 0 und 1." ;
+ Text [ italian ] = "Restituisce un numero casuale compreso tra 0 e 1." ;
+ Text [ portuguese_brazilian ] = "Liefert eine Zufallszahl zwischen 0 und 1." ;
+ Text [ portuguese ] = "Devolve um número aleatório entre 0 e 1." ;
+ Text [ finnish ] = "Liefert eine Zufallszahl zwischen 0 und 1." ;
+ Text [ danish ] = "Returnerer et tilfældigt tal mellem 0 og 1." ;
+ Text [ french ] = "Renvoie un nombre aléatoire entre 0 et 1." ;
+ Text [ swedish ] = "Returnerar ett slumptal mellan 0 och 1." ;
+ Text [ dutch ] = "Geeft als resultaat een toevallige waarde tussen 0 en 1." ;
+ Text [ spanish ] = "Devuelve un número aleatorio entre 0 y 1." ;
+ Text [ english_us ] = "Returns a random number between 0 and 1." ;
+ Text[ chinese_simplified ] = "Éú³ÉÒ»¸ö´óÓÚ 0 СÓÚ 1 µÄËæ»úÊý¡£";
+ Text[ russian ] = "Âîçâðàùàåò ñëó÷àéíîå ÷èñëî ìåæäó 0 è 1.";
+ Text[ polish ] = "Podaje liczbê losow¹ z zakresu od 0 do 1.";
+ Text[ japanese ] = "0ˆÈã‚Å1‚æ‚謂³‚¢—”‚ð”­¶‚³‚¹‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥Í¦¨¤@­Ó¤j©ó 0 ¤p©ó 1 ªºÀH¾÷¼Æ¡C";
+ Text[ arabic ] = "ÊÞÏã ÑÞã ÚÔæÇÆí Èíä 0 æ 1.";
+ Text[ dutch ] = "Geeft als resultaat een toevallige waarde tussen 0 en 1.";
+ Text[ chinese_simplified ] = "Éú³ÉÒ»¸ö´óÓÚ 0 СÓÚ 1 µÄËæ»úÊý¡£";
+ Text[ greek ] = "Äßíåé ôõ÷áßï áñéèìü ìåôáîý 0 êáé 1.";
+ Text[ korean ] = "0°ú 1»çÀÌÀÇ ÀÓÀÇÀÇ ¼ö¸¦ ¹Ýȯ";
+ Text[ turkish ] = "0 ile 1 arasýnda bulunan bir rasgele sayý verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ZUFALLSZAHL );
+ 0;
+ };
+ };
+ // -=*# Resource for function ISTGERADE #*=-
+ Resource SC_OPCODE_IS_EVEN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn der Wert eine gerade Zahl ist." ;
+ Text [ english ] = "Returns TRUE if value is an even integer." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert eine gerade Zahl ist." ;
+ Text [ italian ] = "Restituisce VERO se il valore è un numero pari." ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert eine gerade Zahl ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se o valor é um número par." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert eine gerade Zahl ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien er et lige tal." ;
+ Text [ french ] = "Renvoie VRAI si la valeur est un nombre pair." ;
+ Text [ swedish ] = "Returnerar SANT om värdet är ett jämnt tal." ;
+ Text [ dutch ] = "Resulteert in WAAR als de waarde een even getal is." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es un número par." ;
+ Text [ english_us ] = "Returns TRUE if value is an even integer." ;
+ Text[ chinese_simplified ] = "Èç¹ûÊýÖµÊÇÒ»¸öżÊý£¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå ÿâëÿåòñÿ ÷åòíûì ÷èñëîì.";
+ Text[ polish ] = "Zwraca wartoœæ PRAWDA, jeœli liczba jest parzysta.";
+ Text[ japanese ] = "’l‚ª‹ô”‚ÌꇤTRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG¼Æ­È¬O¤@­Ó°¸¼Æ¡M¨º´N¶Ç¦^ TRUE ¡C";
+ Text[ arabic ] = "ÊÚííä TRUE ÒæÌíÇð ÅÐÇ ßÇäÊ ÇáÞíãÉ ÚÏÏÇð ÕÍíÍÇð.";
+ Text[ dutch ] = "Resulteert in WAAR als de waarde een even getal is.";
+ Text[ chinese_simplified ] = "Èç¹ûÊýÖµÊÇÒ»¸öżÊý£¬ÄǾͷ´À¡ TRUE ¡£";
+ Text[ greek ] = "Äßíåé TRUE (ÁËÇÈÇÓ) áí ï áñéèìüò åßíáé ðåñéôôüò.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀ̦¼ö Á¤¼ö¶ó¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer bir çift sayý ise sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ISTGERADE );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "is the value to test." ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "Il valore da controllare" ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die u wilt testen." ;
+ Text [ spanish ] = "Es el valor que se desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ISTUNGERADE #*=-
+ Resource SC_OPCODE_IS_ODD
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert WAHR, wenn der Wert eine ungerade Zahl ist." ;
+ Text [ english ] = "Returns TRUE if value is an odd integer." ;
+ Text [ norwegian ] = "Liefert WAHR, wenn der Wert eine ungerade Zahl ist." ;
+ Text [ italian ] = "Restituisce VERO se il valore è un numero dispari" ;
+ Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert eine ungerade Zahl ist." ;
+ Text [ portuguese ] = "Devolve VERDADEIRO, se o valor é um número inteiro ímpar." ;
+ Text [ finnish ] = "Liefert WAHR, wenn der Wert eine ungerade Zahl ist." ;
+ Text [ danish ] = "Returnerer SAND, hvis værdien er et ulige tal." ;
+ Text [ french ] = "Renvoie VRAI si la valeur est un nombre impair." ;
+ Text [ swedish ] = "Returnerar SANT om värdet är ett udda tal." ;
+ Text [ dutch ] = "Resulteert in WAAR als de waarde een oneven getal is." ;
+ Text [ spanish ] = "Devuelve VERDADERO si el valor es un número impar." ;
+ Text [ english_us ] = "Returns TRUE if value is an odd integer." ;
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµÊÇÆæÕûÊý£¬ÄǾͷ´À¡ TRUE¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÈÑÒÈÍÀ, åñëè çíà÷åíèå ÿâëÿåòñÿ íå÷åòíûì ÷èñëîì.";
+ Text[ polish ] = "Zwraca wartoœæ PRAWDA, jeœli wartoœæ jest liczb¹ nieparzyst¹.";
+ Text[ japanese ] = "’l‚ªŠï”‚ÌꇤTRUE‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG³o­Ó¼Æ­È¬O©_¾ã¼Æ¡M¨º´N¶Ç¦^ TRUE¡C";
+ Text[ arabic ] = "ÊÚííä TRUE ÅÐÇ ßÇäÊ ÇáÞíãÉ ÚÏÏÇð ÕÍíÍÇð ÝÑÏíÇð.";
+ Text[ dutch ] = "Resulteert in WAAR als de waarde een oneven getal is.";
+ Text[ chinese_simplified ] = "Èç¹ûÕâ¸öÊýÖµÊÇÆæÕûÊý£¬ÄǾͷ´À¡ TRUE¡£";
+ Text[ greek ] = "Äßíåé TRUE (ÁËÇÈÇÓ) áí ç ôéìÞ åßíáé ðåñéôôüò áñéèìüò.";
+ Text[ korean ] = "¸¸ÀÏ °ªÀÌȦ¼ö Á¤¼ö¶ó¸éTRUE¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Deðer bir tek sayý ise sonuç DOÐRU olur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ISTUNGERADE );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der geprüft werden soll. : Der Wert, der gepr³ft werden soll. */
+ Text = "Der Wert, der geprüft werden soll." ;
+ Text [ english ] = "is the value to test." ;
+ Text [ norwegian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ italian ] = "Il valore da controllare" ;
+ Text [ portuguese_brazilian ] = "Der Wert, der geprüft werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der geprüft werden soll." ;
+ Text [ danish ] = "Den værdi som skal testes." ;
+ Text [ french ] = "La valeur à examiner." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die u wilt testen." ;
+ Text [ spanish ] = "Es el valor que se desea probar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ sprawdzona.";
+ Text[ japanese ] = "’²‚ׂé’l";
+ Text[ chinese_traditional ] = "­nÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die u wilt testen.";
+ Text[ chinese_simplified ] = "Òª¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß.";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù.";
+ Text[ turkish ] = "Denetlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KOMBINATIONEN #*=-
+ Resource SC_OPCODE_KOMBIN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Anzahl der Kombinationen von Elementen ohne Wiederholung." ;
+ Text [ english ] = "Returns the number of combinations for a given number of objects." ;
+ Text [ norwegian ] = "Berechnet die Anzahl der Kombinationen von Elementen ohne Wiederholung." ;
+ Text [ italian ] = "Restituisce il numero delle combinazioni di elementi senza ripetizione." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Anzahl der Kombinationen von Elementen ohne Wiederholung." ;
+ Text [ portuguese ] = "Devolve o número de combinações de determinado número de elementos, sem repetições." ;
+ Text [ finnish ] = "Berechnet die Anzahl der Kombinationen von Elementen ohne Wiederholung." ;
+ Text [ danish ] = "Beregner antallet af kombinationer for elementer uden gentagelse." ;
+ Text [ french ] = "Renvoie le nombre de combinaisons que l'on peut former avec les éléments, sans répétition." ;
+ Text [ swedish ] = "Beräknar antalet kombinationer av element utan upprepning." ;
+ Text [ dutch ] = "Berekent het aantal combinaties van elementen zonder herhaling." ;
+ Text [ spanish ] = "Devuelve el número de combinaciones para un número determinado de objetos." ;
+ Text [ english_us ] = "Calculates the number of combinations for elements without repetition." ;
+ Text[ chinese_simplified ] = "ÔªËصÄËùÓпÉÄܵÄ×éºÏÊýÄ¿(²»Öظ´¼ÆËã)¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êîëè÷åñòâî êîìáèíàöèé äëÿ çàäàííîãî ÷èñëà îáúåêòîâ (áåç ïîâòîðåíèé).";
+ Text[ polish ] = "Zwraca liczbê kombinacji w podanej liczbie elementów bez powtarzania.";
+ Text[ japanese ] = "Žw’肳‚ꂽ€–Ú‚Ì‘g‚݇‚킹‚Ì”(ŒJ‚è•Ô‚µ‚È‚µ)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤¸¯Àªº©Ò¦³¥i¯àªº²Õ¦X¼Æ¥Ø(¤£­«½Æ­pºâ)¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÚÏÏ ÇáÊæÇÝíÞ áÚÏÏ ãä ÇáÚäÇÕÑ ÈÏæä ÊßÑÇÑ.";
+ Text[ dutch ] = "Berekent het aantal combinaties van elementen zonder herhaling.";
+ Text[ chinese_simplified ] = "ÔªËصÄËùÓпÉÄܵÄ×éºÏÊýÄ¿(²»Öظ´¼ÆËã)¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ðëÞèïò óõíäõáóìþí óôïé÷åßùí ÷ùñßò åðáíÜëçøç.";
+ Text[ korean ] = "¹Ýº¹¾øÀÌ ¿ä¼ÒÀÇ Á¶ÇÕ ¼ö¸¦ »êÃâ";
+ Text[ turkish ] = "Yinelenmeyen öðe kombinasyonlarýnýn sayýsýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_KOMBINATIONEN );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Anzahl_1" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Anzahl 1" ;
+ Text [ italian ] = "num_1" ;
+ Text [ portuguese_brazilian ] = "Anzahl 1" ;
+ Text [ portuguese ] = "Número_1" ;
+ Text [ finnish ] = "Anzahl 1" ;
+ Text [ danish ] = "Antal_1" ;
+ Text [ french ] = "Nombre_1" ;
+ Text [ swedish ] = "antal_1" ;
+ Text [ dutch ] = "Aantal_1" ;
+ Text [ spanish ] = "Cantidad_1" ;
+ Text [ english_us ] = "number_1" ;
+ Text[ chinese_simplified ] = "number_1";
+ Text[ russian ] = "×èñëî_1";
+ Text[ polish ] = "Liczba_1";
+ Text[ japanese ] = "‘”1";
+ Text[ chinese_traditional ] = "number_1";
+ Text[ arabic ] = "ÇáÚÏÏ_1";
+ Text[ dutch ] = "Aantal_1";
+ Text[ chinese_simplified ] = "number_1";
+ Text[ greek ] = "Áñéèìüò_1";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Adet sayýsý_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Gesamtanzahl der Elemente." ;
+ Text [ english ] = "is the number of objects." ;
+ Text [ norwegian ] = "Gesamtanzahl der Elemente." ;
+ Text [ italian ] = "è il numero degli oggetti." ;
+ Text [ portuguese_brazilian ] = "Gesamtanzahl der Elemente." ;
+ Text [ portuguese ] = "é a quantidade total de elementos." ;
+ Text [ finnish ] = "Gesamtanzahl der Elemente." ;
+ Text [ danish ] = "Det samlede antal elementer." ;
+ Text [ french ] = "Le nombre total d'éléments." ;
+ Text [ swedish ] = "Det totala antalet element." ;
+ Text [ dutch ] = "Totaal aantal elementen." ;
+ Text [ spanish ] = "Es el número de objetos." ;
+ Text [ english_us ] = "The total number of elements." ;
+ Text[ chinese_simplified ] = "ÔªËصÄ×ÜÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî îáúåêòîâ.";
+ Text[ polish ] = "Ogólna liczba elementów.";
+ Text[ japanese ] = "€–Ú‚Ì‘”B";
+ Text[ chinese_traditional ] = "¤¸¯ÀªºÁ`¼Æ¡C";
+ Text[ arabic ] = "ÇáÚÏÏ ÇáÅÌãÇáí ááÚäÇÕÑ.";
+ Text[ dutch ] = "Totaal aantal elementen.";
+ Text[ chinese_simplified ] = "ÔªËصÄ×ÜÊý¡£";
+ Text[ greek ] = "Óõíïëéêüò áñéèìüò óôïé÷åßùí.";
+ Text[ korean ] = "¿ä¼ÒÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Toplam öðe sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl_2" ;
+ Text [ english ] = "number_chosen" ;
+ Text [ norwegian ] = "Anzahl 2" ;
+ Text [ italian ] = "num_2" ;
+ Text [ portuguese_brazilian ] = "Anzahl 2" ;
+ Text [ portuguese ] = "Número_2" ;
+ Text [ finnish ] = "Anzahl 2" ;
+ Text [ danish ] = "Antal_2" ;
+ Text [ french ] = "Nombre_2" ;
+ Text [ swedish ] = "antal_2" ;
+ Text [ dutch ] = "Aantal_2" ;
+ Text [ spanish ] = "Cantidad_2" ;
+ Text [ english_us ] = "number_2" ;
+ Text[ chinese_simplified ] = "number_2";
+ Text[ russian ] = "×èñëî_2";
+ Text[ polish ] = "Liczba_2";
+ Text[ japanese ] = "‘”2";
+ Text[ chinese_traditional ] = "number_2";
+ Text[ arabic ] = "ÇáÚÏÏ_2";
+ Text[ dutch ] = "Aantal_2";
+ Text[ chinese_simplified ] = "number_2";
+ Text[ greek ] = "Áñéèìüò_2";
+ Text[ korean ] = "¼ö_2";
+ Text[ turkish ] = "Adet sayýsý_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Auswahlanzahl aus den Elementen." ;
+ Text [ english ] = "is the number of objects in each combination." ;
+ Text [ norwegian ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ italian ] = "è il numero degli oggetti in ciascuna combinazione." ;
+ Text [ portuguese_brazilian ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ portuguese ] = "é o número de elementos em cada combinação." ;
+ Text [ finnish ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ danish ] = "Antallet af elementer i hver kombination." ;
+ Text [ french ] = "Le nombre d'éléments dans chaque combinaison." ;
+ Text [ swedish ] = "Urvalsantal från elementen." ;
+ Text [ dutch ] = "Het aantal elementen in een combinatie." ;
+ Text [ spanish ] = "Es el número de objetos en cada combinación." ;
+ Text [ english_us ] = "The number of elements selected." ;
+ Text[ chinese_simplified ] = "ÿһ×éºÏÖÐÔªËصÄÊýÄ¿¡£";
+ Text[ russian ] = "Âûáðàííîå ÷èñëî îáúåêòîâ èç êàæäîé êîìáèíàöèè.";
+ Text[ polish ] = "Liczba elementów do wyboru.";
+ Text[ japanese ] = "‘g‚݇‚킹‚é1‘g‚ÉŠÜ‚Ü‚ê‚逖ڂ̔B";
+ Text[ chinese_traditional ] = "¨C¤@²Õ¦X¤¤¤¸¯Àªº¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáßÇÆäÇÊ Ýí ßá ÊÈÏíáÉ.";
+ Text[ dutch ] = "Het aantal elementen in een combinatie.";
+ Text[ chinese_simplified ] = "ÿһ×éºÏÖÐÔªËصÄÊýÄ¿¡£";
+ Text[ greek ] = "ÐëÞèïò åðéëåãìÝíùí óôïé÷åßùí.";
+ Text[ korean ] = "¼±ÅÃµÈ ¿ä¼ÒÀÇ ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Seçilen öðe sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KOMBINATIONEN2 #*=-
+ Resource SC_OPCODE_KOMBIN_2
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Anzahl der Kombinationen von Elementen mit Wiederholung." ;
+ Text [ english ] = "Returns the number of combinations for a given number of objects (repetetition included)." ;
+ Text [ norwegian ] = "Berechnet die Anzahl der Kombinationen von Elementen mit Wiederholung." ;
+ Text [ italian ] = "Restituisce il numero delle combinazioni di elementi con ripetizione." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Anzahl der Kombinationen von Elementen mit Wiederholung." ;
+ Text [ portuguese ] = "Devolve o número de combinações de determinado número de objectos, com repetição." ;
+ Text [ finnish ] = "Berechnet die Anzahl der Kombinationen von Elementen mit Wiederholung." ;
+ Text [ danish ] = "Beregner antallet af kombinationer for elementer med gentagelse." ;
+ Text [ french ] = "Renvoie le nombre de combinaisons que l'on peut former avec les éléments, avec répétition." ;
+ Text [ swedish ] = "Beräknar antalet kombinationer av element med upprepning." ;
+ Text [ dutch ] = "Bepaalt het aantal combinaties voor een gegeven aantal objecten." ;
+ Text [ spanish ] = "Devuelve el número de combinaciones de elementos incluyendo las repeticiones." ;
+ Text [ english_us ] = "Calculates the number of combinations of elements including repetition." ;
+ Text[ chinese_simplified ] = "ÔªËصÄËùÓпÉÄܵÄ×éºÏÊýÄ¿(Öظ´¼ÆËã)¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êîëè÷åñòâî êîìáèíàöèé äëÿ çàäàííîãî ÷èñëà îáúåêòîâ (ñ ïîâòîðåíèåì).";
+ Text[ polish ] = "Oblicza liczbê kombinacji elementów w³¹cznie z powtórzeniem.";
+ Text[ japanese ] = "Žw’肳‚ꂽ€–Ú‚Ì‘g‚݇‚킹‚Ì”(ŒJ‚è•Ô‚µ‚ ‚è)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤¸¯Àªº©Ò¦³¥i¯àªº²Õ¦X¼Æ¥Ø(­«½Æ­pºâ)¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÚÏÏ ÇáÊæÇÝíÞ áÚÏÏ ãä ÇáÚäÇÕÑ ãÚ ÇáÊßÑÇÑ.";
+ Text[ dutch ] = "Bepaalt het aantal combinaties voor een gegeven aantal objecten.";
+ Text[ chinese_simplified ] = "ÔªËصÄËùÓпÉÄܵÄ×éºÏÊýÄ¿(Öظ´¼ÆËã)¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ðëÞèïò óõíäõáóìþí óôïé÷åßùí ìå åðáíÜëçøç.";
+ Text[ korean ] = "¹Ýº¹À» Æ÷ÇÔÇؼ­ ¿ä¼ÒÀÇ Á¶ÇÕ ¼ö¸¦ »êÃâ";
+ Text[ turkish ] = "Yinelenen öðe kombinasyonlarýnýn sayýsýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_KOMBINATIONEN2 );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Anzahl_1" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Anzahl 1" ;
+ Text [ italian ] = "num_1" ;
+ Text [ portuguese_brazilian ] = "Anzahl 1" ;
+ Text [ portuguese ] = "Número_1" ;
+ Text [ finnish ] = "Anzahl 1" ;
+ Text [ danish ] = "Antal_1" ;
+ Text [ french ] = "Nombre_1" ;
+ Text [ swedish ] = "antal_1" ;
+ Text [ dutch ] = "Aantal_1" ;
+ Text [ spanish ] = "Cantidad_1" ;
+ Text [ english_us ] = "number_1" ;
+ Text[ chinese_simplified ] = "number_1";
+ Text[ russian ] = "×èñëî_1";
+ Text[ polish ] = "Liczba_1";
+ Text[ japanese ] = "‘”1";
+ Text[ chinese_traditional ] = "number_1";
+ Text[ arabic ] = "ÇáÚÏÏ_1";
+ Text[ dutch ] = "Aantal_1";
+ Text[ chinese_simplified ] = "number_1";
+ Text[ greek ] = "Áñéèìüò_1";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Adet sayýsý_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Gesamtanzahl der Elemente." ;
+ Text [ english ] = "is the number of objects." ;
+ Text [ norwegian ] = "Gesamtanzahl der Elemente." ;
+ Text [ italian ] = "Numero totale degli elementi" ;
+ Text [ portuguese_brazilian ] = "Gesamtanzahl der Elemente." ;
+ Text [ portuguese ] = "é a quantidade total de elementos." ;
+ Text [ finnish ] = "Gesamtanzahl der Elemente." ;
+ Text [ danish ] = "Det samlede antal elementer." ;
+ Text [ french ] = "Le nombre total d'éléments." ;
+ Text [ swedish ] = "Det totala antalet element." ;
+ Text [ dutch ] = "Het totale aantal elementen." ;
+ Text [ spanish ] = "Es el número total de objetos." ;
+ Text [ english_us ] = "The total number of elements." ;
+ Text[ chinese_simplified ] = "ÔªËصÄ×ÜÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî îáúåêòîâ.";
+ Text[ polish ] = "Ogólna liczba elementów.";
+ Text[ japanese ] = "€–Ú‚Ì‘”";
+ Text[ chinese_traditional ] = "¤¸¯ÀªºÁ`¼Æ¡C";
+ Text[ arabic ] = "ÇáÚÏÏ ÇáÅÌãÇáí ááÚäÇÕÑ.";
+ Text[ dutch ] = "Het totale aantal elementen.";
+ Text[ chinese_simplified ] = "ÔªËصÄ×ÜÊý¡£";
+ Text[ greek ] = "Óõíïëéêüò áñéèìüò óôïé÷åßùí.";
+ Text[ korean ] = "¿ä¼ÒÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Toplam öðe sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl_2" ;
+ Text [ english ] = "number_chosen" ;
+ Text [ norwegian ] = "Anzahl 2" ;
+ Text [ italian ] = "quantità_2" ;
+ Text [ portuguese_brazilian ] = "Anzahl 2" ;
+ Text [ portuguese ] = "Número_2" ;
+ Text [ finnish ] = "Anzahl 2" ;
+ Text [ danish ] = "Antal_2" ;
+ Text [ french ] = "Nombre_2" ;
+ Text [ swedish ] = "antal_2" ;
+ Text [ dutch ] = "Aantal_2" ;
+ Text [ spanish ] = "Cantidad_2" ;
+ Text [ english_us ] = "number_2" ;
+ Text[ chinese_simplified ] = "number_2";
+ Text[ russian ] = "×èñëî_2";
+ Text[ polish ] = "Liczba_2";
+ Text[ japanese ] = "‘”2";
+ Text[ chinese_traditional ] = "number_2";
+ Text[ arabic ] = "ÇáÚÏÏ_2";
+ Text[ dutch ] = "Aantal_2";
+ Text[ chinese_simplified ] = "number_2";
+ Text[ greek ] = "Áñéèìüò_2";
+ Text[ korean ] = "¼ö_2";
+ Text[ turkish ] = "Adet sayýsý_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Auswahlanzahl aus den Elementen." ;
+ Text [ english ] = "is the number of objects in each combination." ;
+ Text [ norwegian ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ italian ] = "Quantità scelta di elementi" ;
+ Text [ portuguese_brazilian ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ portuguese ] = "é o número de elementos em cada combinação." ;
+ Text [ finnish ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ danish ] = "Antallet af elementer i hver kombination." ;
+ Text [ french ] = "Le nombre d'éléments dans chaque combinaison." ;
+ Text [ swedish ] = "Urvalsantal från elementen." ;
+ Text [ dutch ] = "Het aantal gekozen elementen in elke combinatie." ;
+ Text [ spanish ] = "Es el número de objetos en cada combinación." ;
+ Text [ english_us ] = "The number of elements selected." ;
+ Text[ chinese_simplified ] = "ÿһ×éºÏÖÐÔªËصÄÊýÄ¿¡£";
+ Text[ russian ] = "Âûáðàííîå ÷èñëî îáúåêòîâ èç êàæäîé êîìáèíàöèè.";
+ Text[ polish ] = "Liczba elementów do wyboru.";
+ Text[ japanese ] = "‘g‚݇‚킹‚é1‘g‚ÉŠÜ‚Ü‚ê‚逖ڂ̔B";
+ Text[ chinese_traditional ] = "¨C¤@²Õ¦X¤¤¤¸¯Àªº¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáßÇÆäÇÊ Ýí ßá ÊÈÏíáÉ.";
+ Text[ dutch ] = "Het aantal gekozen elementen in elke combinatie.";
+ Text[ chinese_simplified ] = "ÿһ×éºÏÖÐÔªËصÄÊýÄ¿¡£";
+ Text[ greek ] = "ÐëÞèïò åðéëåãìÝíùí óôïé÷åßùí.";
+ Text[ korean ] = "¼±ÅÃµÈ ¿ä¼ÒÀÇ ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Seçilen öðe sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ARCCOS #*=-
+ Resource SC_OPCODE_ARC_COS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Arkuskosinus einer Zahl. : Arcus Cosinus Funktion */
+ Text = "Berechnet den Arkuskosinus einer Zahl." ;
+ Text [ english ] = "Returns the arccosine of a number." ;
+ Text [ norwegian ] = "Berechnet den Arkuskosinus einer Zahl." ;
+ Text [ italian ] = "Restituisce l'arcocoseno di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Arkuskosinus einer Zahl." ;
+ Text [ portuguese ] = "Devolve o arco coseno de um número." ;
+ Text [ finnish ] = "Berechnet den Arkuskosinus einer Zahl." ;
+ Text [ danish ] = "Beregner et tals arcus cosinus." ;
+ Text [ french ] = "Renvoie l'arc cosinus d'un nombre." ;
+ Text [ swedish ] = "Beräknar arcos cosinus för ett tal." ;
+ Text [ dutch ] = "Geeft de boogcosinus van een getal." ;
+ Text [ spanish ] = "Devuelve el arco coseno de un número." ;
+ Text [ english_us ] = "Returns the arccosine of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´ÓàÏÒÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò àðêêîñèíóñ ÷èñëà.";
+ Text[ polish ] = "Wyznacza arcus cosinus liczby.";
+ Text[ japanese ] = "”’l‚̱°¸º»²Ý‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¤Ï§E©¶­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÌíÈ ÞæÓ ÇáÊãÇã áÑÞã.";
+ Text[ dutch ] = "Geeft de boogcosinus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´ÓàÏÒÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ôüîï óõíçìéôüíïõ åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ¾ÆÅ©ÄÚ»çÀÎ °ªÀ» ¹ÝȯÇÕ´Ï´Ù..";
+ Text[ turkish ] = "Bir sayýnýn arksinüsünü verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ARCCOS );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert zwischen -1 und 1, dessen Arkuskosinus berechnet werden soll. : Der Cosinuswert zwischen -1 und 1 */
+ Text = "Ein Wert zwischen -1 und 1, dessen Arkuskosinus berechnet werden soll." ;
+ Text [ english ] = "is the cosine of the angle you want and must be from -1 to 1." ;
+ Text [ norwegian ] = "Ein Wert zwischen -1 und 1, dessen Arkuskosinus bestimmt werden soll" ;
+ Text [ italian ] = "È un valore tra -1 e 1 di cui bisogna calcolare l'arcoseno." ;
+ Text [ portuguese_brazilian ] = "Ein Wert zwischen -1 und 1, dessen Arkuskosinus berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor entre -1 e 1, cujo arco coseno deverá ser calculado." ;
+ Text [ finnish ] = "Ein Wert zwischen -1 und 1, dessen Arkuskosinus berechnet werden soll." ;
+ Text [ danish ] = "En værdi mellem -1 og 1, som arcus cosinus skal beregnes for." ;
+ Text [ french ] = "Une valeur entre -1 et 1 dont l'arc cosinus doit être calculé." ;
+ Text [ swedish ] = "Ett värde mellan 1 och 1 vars arcus cosinus skall beräknas." ;
+ Text [ dutch ] = "Een waarde tussen -1 en 1, waarvan de boogcosinus moet worden berekend." ;
+ Text [ spanish ] = "valor entre -1 y 1, cuyo arcocoseno se desea calcular." ;
+ Text [ english_us ] = "A value between -1 and 1 for which the arccosine is to be returned." ;
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´ÓàÏÒÖµµÄÔÚ -1 ºÍ 1 Ö®¼äµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå îò -1 äî 1, àðêêîñèíóñ êîòîðîãî íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Wartoœæ z przedzia³u od -1 do 1, dla której ma zostaæ obliczony arcus cosinus.";
+ Text[ japanese ] = "±°¸º»²Ý‚ð‹‚ß‚é-1‚©‚ç1‚Ü‚Å‚Ì”’lB";
+ Text[ chinese_traditional ] = "¤@­Ó­n­pºâ¨ä¤Ï§E©¶­Èªº¦b -1 ©M 1 ¤§¶¡ªº¼Æ­È¡C";
+ Text[ arabic ] = "ÌíÈ ÊãÇã ÇáÒÇæíÉ ÇáÊí ÊÑíÏ ÍÓÇÈåÇ æíÌÈ Ãä íßæä ãä -1 Åáì 1.";
+ Text[ dutch ] = "Een waarde tussen -1 en 1, waarvan de boogcosinus moet worden berekend.";
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´ÓàÏÒÖµµÄÔÚ -1 ºÍ 1 Ö®¼äµÄÊýÖµ¡£";
+ Text[ greek ] = "Ìéá ôéìÞ ìåôáîý -1 êáé 1, ãéá ôçí ïðïßá èá õðïëïãéóôåß ôï óõíçìßôïíü ôçò.";
+ Text[ korean ] = "¾ÆÅ©ÄÚ»çÀο¡´ëÇÑ -1 °ú 1»çÀÌÀÇ °ªÀ» ¹ÝȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Arksinüsü hesaplanacak -1 ile 1 arasý deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ARCSIN #*=-
+ Resource SC_OPCODE_ARC_SIN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Arkussinus einer Zahl. : Arcus Sinus Funktion */
+ Text = "Berechnet den Arkussinus einer Zahl." ;
+ Text [ english ] = "Returns the arcsine of a number." ;
+ Text [ norwegian ] = "Berechnet den Arkussinus einer Zahl." ;
+ Text [ italian ] = "Restituisce l'arcoseno di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Arkussinus einer Zahl." ;
+ Text [ portuguese ] = "Devolve o arco seno de um número." ;
+ Text [ finnish ] = "Berechnet den Arkussinus einer Zahl." ;
+ Text [ danish ] = "Beregner et tals arcus sinus." ;
+ Text [ french ] = "Renvoie l'arc sinus d'un nombre." ;
+ Text [ swedish ] = "Beräknar invers sinus för ett tal." ;
+ Text [ dutch ] = "Berekent de boogsinus van een getal." ;
+ Text [ spanish ] = "Devuelve el arco seno de un número." ;
+ Text [ english_us ] = "Returns the arcsine of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´ÕýÏÒÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò àðêñèíóñ ÷èñëà.";
+ Text[ polish ] = "Oblicza arcus sinus liczby.";
+ Text[ japanese ] = "”’l‚̱°¸»²Ý‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¤Ï¥¿©¶­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÞæÓ ÌíÈ ÇáÊãÇã áÑÞã.";
+ Text[ dutch ] = "Berekent de boogsinus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´ÕýÏÒÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ôüîï çìéôüíïõ åíüò áñéèìïý.";
+ Text[ korean ] = "¾ÆÅ©»çÀÎ °ªÀ» ¹Ýȯ";
+ Text[ turkish ] = "Bir sayýnýn arksinüsünü hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ARCSIN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert zwischen -1 und 1, dessen Arkussinus berechnet werden soll. : Der Sinuswert zwischen -1 und 1 */
+ Text = "Ein Wert zwischen -1 und 1, dessen Arkussinus berechnet werden soll." ;
+ Text [ english ] = "is the sine of the angle you want and must be from -1 to 1." ;
+ Text [ norwegian ] = "Ein Wert zwischen -1 und 1, dessen Arkussinus berechnet werden soll." ;
+ Text [ italian ] = "È un valore tra -1 e 1 di cui bisogna calcolare l'arcoseno." ;
+ Text [ portuguese_brazilian ] = "Ein Wert zwischen -1 und 1, dessen Arkussinus berechnet werden soll." ;
+ Text [ portuguese ] = "é o seno do ângulo a ser calculado e tem de estar entre -1 e 1." ;
+ Text [ finnish ] = "Ein Wert zwischen -1 und 1, dessen Arkussinus berechnet werden soll." ;
+ Text [ danish ] = "En værdi mellem -1 og 1, som arcus sinus skal beregnes for." ;
+ Text [ french ] = "Une valeur entre -1 et 1 dont l'arc sinus doit être calculé." ;
+ Text [ swedish ] = "Ett värde mellan 1 och 1 vars inversa sinus skall beräknas." ;
+ Text [ dutch ] = "Een waarde tussen -1 en 1, waarvan de boogsinus moet worden berekend." ;
+ Text [ spanish ] = "es el valor entre -1 y 1, cuyo arco seno se desea calcular." ;
+ Text [ english_us ] = "A value between -1 and 1 for which the arcsine is to be returned." ;
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´ÕýÏÒÖµµÄÔÚ -1 ºÍ 1 Ö®¼äµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå îò -1 äî 1, àðêñèíóñ êîòîðîãî íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Wartoœæ z przedzia³u od -1 do 1, dla której ma zostaæ obliczony arcus sinus.";
+ Text[ japanese ] = "±°¸»²Ý‚ð‹‚ß‚é-1‚©‚ç1‚Ü‚Å‚Ì”’l";
+ Text[ chinese_traditional ] = "¤@­Ó­n­pºâ¨ä¤Ï¥¿©¶­Èªº¦b -1 ©M 1 ¤§¶¡ªº¼Æ­È¡C";
+ Text[ arabic ] = "ÌíÈ ÇáÒÇæíÉ æíÌÈ Ãä íßæä ãä -1 Åáì 1.";
+ Text[ dutch ] = "Een waarde tussen -1 en 1, waarvan de boogsinus moet worden berekend.";
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´ÕýÏÒÖµµÄÔÚ -1 ºÍ 1 Ö®¼äµÄÊýÖµ¡£";
+ Text[ greek ] = "Ìéá ôéìÞ ìåôáîý -1 êáé 1 ãéá ôçí ïðïßá èá õðïëïãéóôåß ôï ôüîï çìéôüíïõ ôçò.";
+ Text[ korean ] = "¾ÆÅ©»çÀο¡ ´ëÇÑ -1 °ú 1 »çÀÌÀÇ °ªÀÌ ¹ÝȯµË´Ï´Ù.";
+ Text[ turkish ] = "Arksinüsü hesaplanacak -1 ile 1 arasý deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ARCCOSHYP #*=-
+ Resource SC_OPCODE_ARC_COS_HYP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Areakosinus (inverser hyperbolischer Kosinus) einer Zahl. : Area Cosinus Funktion */
+ Text = "Berechnet den Areakosinus (inverser hyperbolischer Kosinus) einer Zahl." ;
+ Text [ english ] = "Returns the inverse hyperbolic cosine of a number." ;
+ Text [ norwegian ] = "Berechnet den Areakosinus (inverser hyperbolischer Kosinus) einer Zahl." ;
+ Text [ italian ] = "Restituisce l'inversa del coseno iperbolico di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Areakosinus (inverser hyperbolischer Kosinus) einer Zahl." ;
+ Text [ portuguese ] = "Devolve o coseno hiperbólico inverso de um número." ;
+ Text [ finnish ] = "Berechnet den Areakosinus (inverser hyperbolischer Kosinus) einer Zahl." ;
+ Text [ danish ] = "Beregner et tals inverse hyperbolske cosinus." ;
+ Text [ french ] = "Renvoie le cosinus hyperbolique inverse d'un nombre." ;
+ Text [ swedish ] = "Beräknar invers hyperbolisk cosinus för ett tal." ;
+ Text [ dutch ] = "Berekent de inverse cosinus hyperbolicus van een getal." ;
+ Text [ spanish ] = "Devuelve el coseno hiperbólico inverso de un número." ;
+ Text [ english_us ] = "Returns the inverse hyperbolic cosine of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´Ë«ÇúÏßÓàÏÒÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ãèïåðáîëè÷åñêèé àðêêîñèíóñ ÷èñëà.";
+ Text[ polish ] = "Oblicza arcus cosinus hiperboliczny liczby.";
+ Text[ japanese ] = "”’l‚Ì‘o‹Èü‹t—]Œ·(ʲÊß°ÎÞد¸ º»²Ý‚Ì‹tŠÖ”)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¤ÏÂù¦±½u§E©¶­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÌíÈ ÇáÊãÇã ÇáÚßÓí ááÞØÚ ÇáÒÇÆÏ áÑÞã.";
+ Text[ dutch ] = "Berekent de inverse cosinus hyperbolicus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´Ë«ÇúÏßÓàÏÒÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï áíôßóôñïöï õðåñâïëéêü óõíçìßôïíï åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ¿ª ½Ö°î¼± ÄÚ»çÀÎÀ» ¹ÝȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Bir sayýnýn ters hiperbolik kosinüsünü verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ARCOSHYP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert größer oder gleich 1, dessen Areakosinus berechnet werden soll. : Der hyperbolische Cosinuswert */
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert größer oder gleich 1, dessen Areakosinus berechnet werden soll. : Ein Wert gr÷˜er oder gleich 1, dessen Areakosinus berechnet werden soll. */
+ Text = "Ein Wert größer oder gleich 1, dessen Areakosinus berechnet werden soll." ;
+ Text [ english ] = "is any real number equal to or greater than 1." ;
+ Text [ norwegian ] = "Ein Wert größer oder gleich 1, dessen Areakosinus berechnet werden soll." ;
+ Text [ italian ] = "È un valore maggiore o uguale a 1 di cui bisogna calcolare l'inversa del coseno iperbolico." ;
+ Text [ portuguese_brazilian ] = "Ein Wert größer oder gleich 1, dessen Areakosinus berechnet werden soll." ;
+ Text [ portuguese ] = "é qualquer número real igual ou maior a 1" ;
+ Text [ finnish ] = "Ein Wert größer oder gleich 1, dessen Areakosinus berechnet werden soll." ;
+ Text [ danish ] = "En værdi større eller lig med 1, som den inverse hyperbolske cosinus skal beregnes for." ;
+ Text [ french ] = "Une valeur supérieure ou égale à 1 dont le cosinus hyperbolique inverse doit être calculé." ;
+ Text [ swedish ] = "Ett värde större eller lika med 1, för vilket inverterad hyperbolisk cosinus skall beräknas." ;
+ Text [ dutch ] = "Een waarde groter of gelijk aan 1, waarvan de inverse cosinus hyperbolecus moet worden berekend." ;
+ Text [ spanish ] = "es el valor mayor o igual a 1,cuyo coseno hiperbólico inverso se desea calcular." ;
+ Text [ english_us ] = "A value greater than or equal to 1 for which the hyperbolic cosine is to be returned." ;
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´Ë«ÇúÓàÏÒÖµµÄ´óÓÚ»òµÈÓÚ 1 µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, êîòîðîå áîëüøå èëè ðàâíî 1, ãèïåðáîëè÷åñêèé àðêêîñèíóñ êîòîðîãî íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Dowolna liczba rzeczywista równa lub wiêksza od 1, dla której ma zostaæ obliczony arcus cosinus hiperboliczny.";
+ Text[ japanese ] = "ʲÊß°ÎÞد¸ º»²Ý‚Ì‹tŠÖ”‚ð‹‚ß‚é1ˆÈã‚Ì”’l¡";
+ Text[ chinese_traditional ] = "¤@­Ó­n­pºâ¨ä¤ÏÂù¦±§E©¶­Èªº¤j©ó©Îµ¥©ó 1 ªº¼Æ­È¡C";
+ Text[ arabic ] = "Åí ÑÞã ÍÞíÞí íÓÇæí Ãæ ÃßÈÑ ãä 1.";
+ Text[ dutch ] = "Een waarde groter of gelijk aan 1, waarvan de inverse cosinus hyperbolecus moet worden berekend.";
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´Ë«ÇúÓàÏÒÖµµÄ´óÓÚ»òµÈÓÚ 1 µÄÊýÖµ¡£";
+ Text[ greek ] = "Ìéá ôéìÞ ìåãáëýôåñç Þ ßóç ôïõ 1, ôçò ïðïßáò èá õðïëïãéóôåß ôï õðåñâïëéêü óõíçìßôïíï.";
+ Text[ korean ] = "½Ö°î¼± ÄÚ»çÀο¡´ëÇÑ 1ÀÌ»óÀÇ °ªÀ» ¹ÝȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Hiperbolik kosinüsü hesaplanacak 1'den büyük ya da eþit deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ARCSINHYP #*=-
+ Resource SC_OPCODE_ARC_SIN_HYP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Areasinus (inverser hyperbolischer Sinus) einer Zahl. : Area Sinus Funktion */
+ Text = "Berechnet den Areasinus (inverser hyperbolischer Sinus) einer Zahl." ;
+ Text [ english ] = "Returns the inverse hyperbolic sine of a number." ;
+ Text [ norwegian ] = "Berechnet den Areasinus (inverser hyperbolischer Sinus) einer Zahl." ;
+ Text [ italian ] = "Restituisce l'inversa del seno iperbolico di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Areasinus (inverser hyperbolischer Sinus) einer Zahl." ;
+ Text [ portuguese ] = "Devolve o seno hiperbólico inverso de um número.." ;
+ Text [ finnish ] = "Berechnet den Areasinus (inverser hyperbolischer Sinus) einer Zahl." ;
+ Text [ danish ] = "Beregner et tals inverse hyperbolske sinus." ;
+ Text [ french ] = "Renvoie le sinus hyperbolique inverse d'un nombre." ;
+ Text [ swedish ] = "Beräknar invers hyperbolisk sinus för ett tal." ;
+ Text [ dutch ] = "Berekent de inverse sinus hyperbolicus van een getal." ;
+ Text [ spanish ] = "Devuelve el seno hiperbólico inverso de un número." ;
+ Text [ english_us ] = "Returns the inverse hyperbolic sine of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´Ë«ÇúÕýÏÒÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ãèïåðáîëè÷åñêèé àðêñèíóñ ÷èñëà.";
+ Text[ polish ] = "Oblicza arcus sinus hiperboliczny liczby.";
+ Text[ japanese ] = "”’l‚Ì‘o‹Èü‹t³Œ·(ʲÊß°ÎÞد¸ »²Ý‚Ì‹tŠÖ”)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¤ÏÂù¦±¥¿©¶­È¡C";
+ Text[ arabic ] = "ÍÓÇÈ ÌíÈ ÇáÒÇæíÉ ÇáÚßÓí áÞØÚ ÒÇÆÏ áÑÞã.";
+ Text[ dutch ] = "Berekent de inverse sinus hyperbolicus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´Ë«ÇúÕýÏÒÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï áíôßóôñïöï õðåñâïëéêü çìßôïíï åíüò áñéèìïý.";
+ Text[ korean ] = "¿ª ½Ö°î¼± »çÀÎÀ» ¹Ýȯ";
+ Text[ turkish ] = "Bir sayýnýn (ters hiperbolik sinüsünü) verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ARSINHYP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, dessen Areasinus berechnet werden soll. : Der hyperbolische Sinuswert */
+ Text = "Der Wert, dessen Areasinus berechnet werden soll." ;
+ Text [ english ] = "is any real number equal to or greater than 1." ;
+ Text [ norwegian ] = "Der Wert, dessen Areasinus berechnet werden soll." ;
+ Text [ italian ] = "È il valore di cui bisogna calcolare l'inversa del seno iperbolico." ;
+ Text [ portuguese_brazilian ] = "Der Wert, dessen Areasinus berechnet werden soll." ;
+ Text [ portuguese ] = "é qualquer número real maior ou maior a 1." ;
+ Text [ finnish ] = "Der Wert, dessen Areasinus berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som den inverse hyperbolske sinus skal beregnes for." ;
+ Text [ french ] = "La valeur dont le sinus hyperbolique inverse doit être calculé." ;
+ Text [ swedish ] = "Värdet vars inversa hyperboliska sinus skall beräknas." ;
+ Text [ dutch ] = "Waarde, waarvan de inverse sinus hyperbolicus moet worden berekend" ;
+ Text [ spanish ] = "es el valor cuyo seno hiperbólico inverso se desea calcular." ;
+ Text [ english_us ] = "The value for which the inverse hyperbolic sine is to be returned." ;
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´Ë«ÇúÕýÏÒÖµµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, ãèïåðáîëè÷åñêèé àðêñèíóñ êîòîðîãî íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony arcus sinus hiperboliczny.";
+ Text[ japanese ] = "‘o‹Èü‹t³Œ·‚ð‹‚ß‚é”’lB";
+ Text[ chinese_traditional ] = "¤@­Ó­n­pºâ¨ä¤ÏÂù¦±¥¿©¶­Èªº¼Æ­È¡C";
+ Text[ arabic ] = "Ãí ÑÞã ÍÞíÞí íÓÇæí 1 Ãæ ÃßÈÑ ãäå.";
+ Text[ dutch ] = "Waarde, waarvan de inverse sinus hyperbolicus moet worden berekend";
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´Ë«ÇúÕýÏÒÖµµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ïðïßáò èá õðïëïãéóôåß ôï áíôßóôñïöï õðåñâïëéêü çìßôïíï.";
+ Text[ korean ] = "¿ª ½Ö°î¼± »çÀο¡ ´ëÇÑ °ªÀº ¹ÝȯµË´Ï´Ù.";
+ Text[ turkish ] = "Ters hiperbolik sinüsü hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ARCCOT #*=-
+ Resource SC_OPCODE_ARC_COT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Arkuskotangens einer Zahl. : Arcus Cotangens Funktion */
+ Text = "Berechnet den Arkuskotangens einer Zahl." ;
+ Text [ english ] = "Returns the inverse cotangent of the given angle." ;
+ Text [ norwegian ] = "Berechnet den Arkuskotangens einer Zahl." ;
+ Text [ italian ] = "Restituisce l'arcocotangente di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Arkuskotangens einer Zahl." ;
+ Text [ portuguese ] = "Devolve o arco tangente de um número." ;
+ Text [ finnish ] = "Berechnet den Arkuskotangens einer Zahl." ;
+ Text [ danish ] = "Beregner et tals arcus cotangens." ;
+ Text [ french ] = "Calcule l'arc cotangente d'un nombre." ;
+ Text [ swedish ] = "Beräknar invers cotangent för ett tal." ;
+ Text [ dutch ] = "Berekent de boogcotangens van een getal." ;
+ Text [ spanish ] = "Devuelve el arco cotangente de un número." ;
+ Text [ english_us ] = "Returns the inverse cotangent of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´ÓàÇÐÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò àðêêîòàíãåíñ ÷èñëà.";
+ Text[ polish ] = "Oblicza arcus cotangens k¹ta.";
+ Text[ japanese ] = "”’l‚̱°¸ºÀݼުÝÄ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¤Ï§E¤Á­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ Ùá ÇáÊãÇã ÇáÚßÓí áÑÞã.";
+ Text[ dutch ] = "Berekent de boogcotangens van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´ÓàÇÐÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ôüîï óõíåöáðôïìÝíçò åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ¿ª ÄÚźÁ¨Æ®¸¦ ¹ÝȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Bir sayýnýn ters kotanjantýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ARCCOT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, dessen Arkuskotangens berechnet werden soll. : Der Cotangenswert */
+ Text = "Der Wert, dessen Arkuskotangens berechnet werden soll." ;
+ Text [ english ] = "is any real number." ;
+ Text [ norwegian ] = "Der Wert, dessen Arkuskotangens berechnet werden soll." ;
+ Text [ italian ] = "È il valore di cui bisogna calcolare l'arcocotangente." ;
+ Text [ portuguese_brazilian ] = "Der Wert, dessen Arkuskotangens berechnet werden soll." ;
+ Text [ portuguese ] = "é a tangente do ângulo a ser calculado." ;
+ Text [ finnish ] = "Der Wert, dessen Arkuskotangens berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som arkus cotangens skal beregnes for." ;
+ Text [ french ] = "La valeur dont l'arc cotangente doit être calculé." ;
+ Text [ swedish ] = "Värdet för vilket invers cotangens skall beräknas." ;
+ Text [ dutch ] = "Waarde , waarvan de boogcotangens moet worden berekend." ;
+ Text [ spanish ] = "es el valor cuyo arco cotangente se desea calcular." ;
+ Text [ english_us ] = "The value for which the inverse cotangent is to be returned." ;
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´ÓàÇÐÖµµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, àðêêîòàíãåíñ êîòîðîãî íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony arcus cotangens.";
+ Text[ japanese ] = "±°¸ºÀݼުÝÄ‚ð‹‚ß‚é”’l¡";
+ Text[ chinese_traditional ] = "¤@­Ó­n­pºâ¨ä¤Ï§E¤Á­Èªº¼Æ­È¡C";
+ Text[ arabic ] = "ÞíãÉ Ùá ÇáÊãÇã.";
+ Text[ dutch ] = "Waarde , waarvan de boogcotangens moet worden berekend.";
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´ÓàÇÐÖµµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ôï ôüîï óõíåöáðôïìÝíçò";
+ Text[ korean ] = "¿ª ÄÚźÁ¨Æ®¿¡´ëÇÑ °ªÀ» ¹ÝȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Ters kotanjantý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ARCTAN #*=-
+ Resource SC_OPCODE_ARC_TAN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Arkustangens einer Zahl. : Arcus Tangens Funktion */
+ Text = "Berechnet den Arkustangens einer Zahl." ;
+ Text [ english ] = "Returns the arctangent of a number." ;
+ Text [ norwegian ] = "Berechnet den Arkustangens einer Zahl." ;
+ Text [ italian ] = "Restituisce l'arcotangente di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Arkustangens einer Zahl." ;
+ Text [ portuguese ] = "Devolve o arco tangente de um número." ;
+ Text [ finnish ] = "Berechnet den Arkustangens einer Zahl." ;
+ Text [ danish ] = "Beregner et tals arcus tangens." ;
+ Text [ french ] = "Renvoie l'arc tangente d'un nombre." ;
+ Text [ swedish ] = "Beräknar invers tangens för ett tal." ;
+ Text [ dutch ] = "Berekent de boogtangens van een getal." ;
+ Text [ spanish ] = "Devuelve el arco tangente de un número." ;
+ Text [ english_us ] = "Returns the arctangent of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´ÕýÇÐÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò àðêòàíãåíñ ÷èñëà.";
+ Text[ polish ] = "Wyznacza arcus tangens liczby.";
+ Text[ japanese ] = "”’l‚̱°¸ÀݼުÝÄ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¤Ï¥¿¤Á­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÞæÓ ÇáÙá áÑÞã.";
+ Text[ dutch ] = "Berekent de boogtangens van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´ÕýÇÐÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ôüîï åöáðôïìÝíçò åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ¾ÆũźÁ¨Æ® ¹Ýȯ";
+ Text[ turkish ] = "Bir sayýnýn arktanjantýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ARCTAN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, dessen Arkustangens berechnet werden soll. : Der Tangenswert */
+ Text = "Der Wert, dessen Arkustangens berechnet werden soll." ;
+ Text [ english ] = "is the tangent of the angle you want." ;
+ Text [ norwegian ] = "Der Wert, dessen Arkustangens berechnet werden soll." ;
+ Text [ italian ] = "È il valore di cui bisogna calcolare l'arcotangente." ;
+ Text [ portuguese_brazilian ] = "Der Wert, dessen Arkustangens berechnet werden soll." ;
+ Text [ portuguese ] = "é a tangente do ângulo a ser calculado." ;
+ Text [ finnish ] = "Der Wert, dessen Arkustangens berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som arkus tangens skal beregnes for." ;
+ Text [ french ] = "La valeur dont l'arc tangente doit être calculé." ;
+ Text [ swedish ] = "Värdet som invers tangens skall beräknas för." ;
+ Text [ dutch ] = "Waarde, waarvan de boogtangens moet worden berekend." ;
+ Text [ spanish ] = "es el valor cuyo arco tangente se desea calcular." ;
+ Text [ english_us ] = "The value for which the arctangent is to be returned." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä·´ÕýÇÐÖµµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, àðêòàíãåíñ êîòîðîãî âû÷èñëÿåòñÿ.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony arcus tangens.";
+ Text[ japanese ] = "±°¸ÀݼުÝÄ‚ð‹‚ß‚é”’lB";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä¤Ï¥¿¤Á­Èªº¼Æ­È¡C";
+ Text[ arabic ] = "Ùá ÇáÒÇæíÉ ÇáÊí ÊÑíÏåÇ.";
+ Text[ dutch ] = "Waarde, waarvan de boogtangens moet worden berekend.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä·´ÕýÇÐÖµµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ôï ôüîï ôçò åöáðôïìÝíçò ôçò.";
+ Text[ korean ] = "¾ÆũźÁ¨Æ® °ªÀ» ¹Ýȯ";
+ Text[ turkish ] = "Arktanjantý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ARCCOTHYP #*=-
+ Resource SC_OPCODE_ARC_COT_HYP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Areakotanges (inverser hyperbolischer Kotangens) einer Zahl. : Area Cotangens Funktion */
+ Text = "Berechnet den Areakotanges (inverser hyperbolischer Kotangens) einer Zahl." ;
+ Text [ english ] = "Returns the inverse hyperbolic cotangent of the given angle." ;
+ Text [ norwegian ] = "Berechnet den Areakotanges (inverser hyperbolischer Kotangens) einer Zahl." ;
+ Text [ italian ] = "Restituisce l'inversa della cotangente iperbolica di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Areakotanges (inverser hyperbolischer Kotangens) einer Zahl." ;
+ Text [ portuguese ] = "Devolve a cotangente hiperbólica inversa do ângulo" ;
+ Text [ finnish ] = "Berechnet den Areakotanges (inverser hyperbolischer Kotangens) einer Zahl." ;
+ Text [ danish ] = "Beregner et tals inverse hyperbolske cotangens." ;
+ Text [ french ] = "Renvoie la cotangente hyperbolique inverse d'un nombre." ;
+ Text [ swedish ] = "Beräknar invers hyperbolisk cotangens för ett tal." ;
+ Text [ dutch ] = "Berekent de inverse cotangens hyperbolicus van een getal." ;
+ Text [ spanish ] = "Devuelve la cotangente hiperbólica inversa de un número." ;
+ Text [ english_us ] = "Returns the inverse hyperbolic cotangent of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´Ë«ÇúÓàÇÐÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ãèïåðáîëè÷åñêèé àðêêîòàíãåíñ ÷èñëà.";
+ Text[ polish ] = "Wyznacza arcus cotangens hiperboliczny k¹ta.";
+ Text[ japanese ] = "”’l‚ÌʲÊß°ÎÞد¸ ºÀݼުÝÄ‚Ì‹tŠÖ”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¤ÏÂù¦±§E¤Á­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ Ùá ÇáÊãÇã ÇáÚßÓí áÞØÚ ÒÇÆÏ áÑÞã.";
+ Text[ dutch ] = "Berekent de inverse cotangens hyperbolicus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´Ë«ÇúÓàÇÐÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí áíôßóôñïöç õðåñâïëéêÞ óõíåöáðôïìÝíç åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ¿ª ½Ö°î¼± ÄÚźÁ¨Æ®¸¦ ¹ÝȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Bir sayýnýn (ters hiperbolik kotanjantýný) verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ARCOTHYP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert kleiner als -1 oder größer als 1, dessen Areakotanges berechnet werden soll. : Der hyperbolische Cotangenswert */
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert kleiner als -1 oder größer als 1, dessen Areakotanges berechnet werden soll. : Ein Wert kleiner als -1 oder gr÷˜er als 1, dessen Areakotanges berechnet werden soll. */
+ Text = "Ein Wert kleiner als -1 oder größer als 1, dessen Areakotanges berechnet werden soll." ;
+ Text [ english ] = "is any real number." ;
+ Text [ norwegian ] = "Ein Wert kleiner als -1 oder größer als 1, dessen Areakotanges berechnet werden soll." ;
+ Text [ italian ] = "È un valore minore di -1 o maggiore di 1 di cui bisogna calcolare l'inversa della cotangente iperbolica." ;
+ Text [ portuguese_brazilian ] = "Ein Wert kleiner als -1 oder größer als 1, dessen Areakotanges berechnet werden soll." ;
+ Text [ portuguese ] = "Valor menor do que -1 ou superior a 1, cuja cotangente hiperbólica inversa deverá ser calculada." ;
+ Text [ finnish ] = "Ein Wert kleiner als -1 oder größer als 1, dessen Areakotanges berechnet werden soll." ;
+ Text [ danish ] = "En værdi mindre end -1 eller større end 1, som den inverse hyperbolske cotangens skal beregnes for." ;
+ Text [ french ] = "Une valeur inférieure à -1 ou supérieure à 1 dont la cotangente hyperbolique inverse doit être calculée." ;
+ Text [ swedish ] = "Ett värde mindre än 1 eller större än 1, vars inversa hyperboliska cotangent skall beräknas." ;
+ Text [ dutch ] = "Een waarde kleiner dan -1 of groter dan 1, waarvan de inverse cotangens hyperbolicus moet worden berekend." ;
+ Text [ spanish ] = "es el valor menor que -1 o mayor que 1, cuyas cotangentes hiperbólicas inversas se desea calcular." ;
+ Text [ english_us ] = "A value smaller than -1 or greater than 1 for which the inverse hyperbolic cotangent is to be returned." ;
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´Ë«ÇúÓàÇÐÖµµÄÔÚ -1 ºÍ 1 Ö®¼äµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, êîòîðîå ìåíüøå -1 èëè áîëüøå 1, ãèïåðáîëè÷åñêèé àðêêîòàíãåíñ êîòîðîãî íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Wartoœæ równa lub wiêksza od 1, dla którejma zostaæ obliczony arcus cotangens hiperboliczny.";
+ Text[ japanese ] = "ʲÊß°ÎÞد¸ ºÀݼުÝÄ‚ð‹‚ß‚é-1‚©‚ç1‚Ü‚Å‚Ì”’lB";
+ Text[ chinese_traditional ] = "¤@­Ó­n­pºâ¨ä¤ÏÂù¦±§E¤Á­Èªº¦b -1 ©M 1 ¤§¶¡ªº¼Æ­È¡C";
+ Text[ arabic ] = "ÞãíÉ ÃÕÛÑ ãä -1¡ Ãæ ÃßÈÑ ãä 1¡ æÇáÊí ÊÑíÏ ÍÓÇÈ Ùá ÊãÇã ÞØÚåÇ ÇáÒÇÆÏ.";
+ Text[ dutch ] = "Een waarde kleiner dan -1 of groter dan 1, waarvan de inverse cotangens hyperbolicus moet worden berekend.";
+ Text[ chinese_simplified ] = "Ò»¸öÒª¼ÆËãÆä·´Ë«ÇúÓàÇÐÖµµÄÔÚ -1 ºÍ 1 Ö®¼äµÄÊýÖµ¡£";
+ Text[ greek ] = "Ìéá ôéìÞ ìéêñüôåñç ôïõ -1 Þ ìåãáëýôåñç ôïõ 1, ãéá ôçí ïðïßá èá õðïëïãéóôåß ç áíôßóôñïöç õðåñâïëéêÞ óõíåöáðôïìÝíç";
+ Text[ korean ] = "¿ª ½Ö°î¼± ÄÚźÁ¨Æ®¿¡´ëÇÑ -1 º¸´Ù ÀÛ°í 1º¸´Ù Å« °ªÀÌ ¹ÝȯµË´Ï´Ù.";
+ Text[ turkish ] = "Ters hiperbolik kotanjantý hesaplanacak -1'den küçük ya da 1'den büyük deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ARCTANHYP #*=-
+ Resource SC_OPCODE_ARC_TAN_HYP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Areatangens (inverser hyperbolischer Tangens) einer Zahl. : Area Tangens Hyperbolicus Funktion */
+ Text = "Berechnet den Areatangens (inverser hyperbolischer Tangens) einer Zahl." ;
+ Text [ english ] = "Returns the inverse hyperbolic tangent of a number." ;
+ Text [ norwegian ] = "Berechnet den Areatanges (inverser hyperbolischer Tangens) einer Zahl." ;
+ Text [ italian ] = "Restituisce l'inversa della tangente iperbolica di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Areatanges (inverser hyperbolischer Tangens) einer Zahl." ;
+ Text [ portuguese ] = "Devolve a tangente hiperbólica inversa de uma número." ;
+ Text [ finnish ] = "Berechnet den Areatanges (inverser hyperbolischer Tangens) einer Zahl." ;
+ Text [ danish ] = "Beregner et tals inverse hyperbolske tangens." ;
+ Text [ french ] = "Renvoie la tangente hyperbolique inverse d'un nombre." ;
+ Text [ swedish ] = "Beräknar invers hyperbolisk tangens för ett tal." ;
+ Text [ dutch ] = "Berekent de inverse tangens hyperbolicus van een getal." ;
+ Text [ spanish ] = "Devuelve la tangente de área (tangente hiperbólica inversa) de un número." ;
+ Text [ english_us ] = "Returns the inverse hyperbolic tangent of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´Ë«ÇúÕýÇÐÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ãèïåðáîëè÷åñêèé àðêòàíãåíñ ÷èñëà.";
+ Text[ polish ] = "Oblicza arcus tangens hiperboliczny liczby.";
+ Text[ japanese ] = "”’l‚Ì‘o‹Èü‹t³Ú(ʲÊß°ÎÞد¸ ÀݼުÝÄ‚Ì‹tŠÖ”)‚ð•Ô‚µ‚Ü‚·¡";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¤ÏÂù¦±¥¿¤Á­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÙá ÇáÚßÓí áÞØÚ ÒÇÆÏ áÑÞã.";
+ Text[ dutch ] = "Berekent de inverse tangens hyperbolicus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ·´Ë«ÇúÕýÇÐÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí áíôßóôñïöç õðåñâïëéêÞ åöáðôïìÝíç åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ¿ª ½Ö°î¼± źÁ¨Æ® ¹Ýȯ";
+ Text[ turkish ] = "Sayýnýn ters hiperbolik tanjantýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ARTANHYP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert zwischen -1 und 1, dessen Areatanges berechnet werden soll. : Der hyperbolische Tangenswert */
+ Text = "Ein Wert zwischen -1 und 1, dessen Areatanges berechnet werden soll." ;
+ Text [ english ] = "is any real number between 1 and -1." ;
+ Text [ norwegian ] = "Ein Wert zwischen -1 und 1, dessen Areatanges berechnet werden soll." ;
+ Text [ italian ] = "È un numero compreso tra -1 e 1di cui bisogna calcolare l'inversa della tangente iperbolica." ;
+ Text [ portuguese_brazilian ] = "Ein Wert zwischen -1 und 1, dessen Areatanges berechnet werden soll." ;
+ Text [ portuguese ] = "é qualquer número real entre -1 e 1, excluíndo -1 e 1." ;
+ Text [ finnish ] = "Ein Wert zwischen -1 und 1, dessen Areatanges berechnet werden soll." ;
+ Text [ danish ] = "En værdi mellem -1 og 1, som den inverse hyperbolske tangens skal beregnes for." ;
+ Text [ french ] = "Une valeur entre -1 et 1 dont la tangente hyperbolique inverse doit être calculée." ;
+ Text [ swedish ] = "Ett värde mellan 1 och 1 för vilket invers hyperbolisk tangens skall beräknas." ;
+ Text [ dutch ] = "Een waarde tussen -1 en 1, waarvan de inverse tangens hyperbolicus wordt berekend." ;
+ Text [ spanish ] = "es el valor entre -1 y 1, cuya tangente hiperbólica inversa se desea calcular." ;
+ Text [ english_us ] = "A value between -1 and 1 for which the inverse hyperbolic tangent is to be returned." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä·´Ë«ÇúÕýÇÐÖµµÄÔÚ -1 ºÍ 1 Ö®¼äµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå îò -1 äî 1, ãèïåðáîëè÷åñêèé àðêòàíãåíñ êîòîðîãî íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Wartoœæ z przedzia³u -1 i 1, dla której nale¿y obliczyæ arcus tangens hiperboliczny.";
+ Text[ japanese ] = "”’l‚Ì‘o‹Èü‹t³Ú‚ð‹‚ß‚é -1‚©‚ç1‚Ü‚Å‚Ì”’lB";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä¤ÏÂù¦±¥¿¤Á­Èªº¦b -1 ©M 1 ¤§¶¡ªº¼Æ­È¡C";
+ Text[ arabic ] = "Ãí ÑÞã ÍÞíÞí Èíä -1 æ1 ÈÇÓÊËäÇÁ -1 æ1.";
+ Text[ dutch ] = "Een waarde tussen -1 en 1, waarvan de inverse tangens hyperbolicus wordt berekend.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä·´Ë«ÇúÕýÇÐÖµµÄÔÚ -1 ºÍ 1 Ö®¼äµÄÊýÖµ¡£";
+ Text[ greek ] = "Ìéá ôéìÞ ìåôáîý ôïõ -1 êáé 1, ôçò ïðïßáò èá õðïëïãéóôåß ç õðåñâïëéêÞ åöáðôïìÝíç.";
+ Text[ korean ] = "¿ª ½Ö°î¼± źÁ¨Æ® -1 °ú 1»çÀÌ °ªÀÌ ¹ÝȯµË´Ï´Ù.";
+ Text[ turkish ] = "Ters hiperbolik tanjantý hesaplanacak -1 ile 1 arasý deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function COS #*=-
+ Resource SC_OPCODE_COS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Kosinus einer Zahl. : Cosinusfunktion */
+ Text = "Berechnet den Kosinus einer Zahl." ;
+ Text [ english ] = "Returns the cosine of the given angle." ;
+ Text [ norwegian ] = "Berechnet den Kosinus einer Zahl." ;
+ Text [ italian ] = "Restituisce il coseno di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Kosinus einer Zahl." ;
+ Text [ portuguese ] = "Devolve o coseno de um número." ;
+ Text [ finnish ] = "Berechnet den Kosinus einer Zahl." ;
+ Text [ danish ] = "Beregner et tals cosinus." ;
+ Text [ french ] = "Renvoie le cosinus d'un nombre." ;
+ Text [ swedish ] = "Beräknar cosinus för ett tal." ;
+ Text [ dutch ] = "Berekent de cosinus van een getal." ;
+ Text [ spanish ] = "Devuelve el coseno de un número." ;
+ Text [ english_us ] = "Returns the cosine of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö½Ç¶ÈµÄÓàÏÒÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êîñèíóñ ÷èñëà.";
+ Text[ polish ] = "Oblicza cosinus liczby.";
+ Text[ japanese ] = "”’l‚̺»²Ý‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¨¤«×ªº§E©¶­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÌíÈ ÇáÊãÇã áÑÞã.";
+ Text[ dutch ] = "Berekent de cosinus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö½Ç¶ÈµÄÓàÏÒÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï óõíçìßôïíï åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ÄÚ»çÀÎÀ» ¹Ýȯ";
+ Text[ turkish ] = "Bir sayýnýn kosinüsünü verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_COS );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Winkel im Bogenmaß (Radiant), dessen Kosinus berechnet werden soll. : Der Winkel, gemessen in Radiant */
+ /* ### ACHTUNG: Neuer Text in Resource? Der Winkel im Bogenmaß (Radiant), dessen Kosinus berechnet werden soll. : Der Winkel im Bogenma˜ (Radiant), dessen Kosinus berechnet werden soll. */
+ Text = "Der Winkel im Bogenmaß (Radiant), dessen Kosinus berechnet werden soll." ;
+ Text [ english ] = "is the angle in radians for which you want the cosine." ;
+ Text [ norwegian ] = "Der Winkel im Bogenmaß (Radiant), dessen Kosinus berechnet werden soll." ;
+ Text [ italian ] = "È l'angolo in radianti di cui si desidera calcolare il coseno." ;
+ Text [ portuguese_brazilian ] = "Der Winkel im Bogenmaß (Radiant), dessen Kosinus berechnet werden soll." ;
+ Text [ portuguese ] = "é o ângulo em radianos para o qual deseja obter o coseno." ;
+ Text [ finnish ] = "Der Winkel im Bogenmaß (Radiant), dessen Kosinus berechnet werden soll." ;
+ Text [ danish ] = "Den vinkel i radianer hvis cosinus skal beregnes." ;
+ Text [ french ] = "L'angle exprimé en radians dont vous voulez obtenir le cosinus." ;
+ Text [ swedish ] = "Vinkeln i radianer som cosinus skall beräknas för." ;
+ Text [ dutch ] = "De hoek, gemeten in radiant, waarvan de cosinus moet worden berekend." ;
+ Text [ spanish ] = "es el ángulo en radianes cuyo coseno desea obtener." ;
+ Text [ english_us ] = "The angle in the radians for which the cosine is to be returned." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÓàÏÒÖµµÄ½Ç¶È£¬ÒÔ»¡¶È±íʾ¡£";
+ Text[ russian ] = "Óãîë â ðàäèàíàõ, äëÿ êîòîðîãî îïðåäåëÿåòñÿ êîñèíóñ.";
+ Text[ polish ] = "K¹t wyra¿ony w radianach, dla którego ma zostaæ obliczony cosinus.";
+ Text[ japanese ] = "º»²Ý‚ð‹‚ß‚éŠp“x(×¼Þ±Ý)B";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä¾l©¶­Èªº¨¤«×¡M¥H©·«×ªí¥Ü¡C";
+ Text[ arabic ] = "ÇáÒÇæíÉ ÈÇáÑÇÏíÇä ÇáÊí ÊÑíÏ ÍÓÇÈ ÌíÈ ÊãÇãåÇ.";
+ Text[ dutch ] = "De hoek, gemeten in radiant, waarvan de cosinus moet worden berekend.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÓàÏÒÖµµÄ½Ç¶È£¬ÒÔ»¡¶È±íʾ¡£";
+ Text[ greek ] = "Ç ãùíßá óå áêôßíéá (Radiant) , ôçò ïðïßáò èá õðïëïãéóôåß ôï óõíçìßôïíï.";
+ Text[ korean ] = "ÄÚ»çÀο¡´ëÇÑ ¶óµð¾ÈÀÇ °¢ÀÌ ¹ÝȯµË´Ï´Ù.";
+ Text[ turkish ] = "Kosinüs deðeri hesaplanacak radyan cinsinden açý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SIN #*=-
+ Resource SC_OPCODE_SIN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Sinus einer Zahl. : Sinusfunktion */
+ Text = "Berechnet den Sinus einer Zahl." ;
+ Text [ english ] = "Returns the sine of the given angle." ;
+ Text [ norwegian ] = "Berechnet den Sinus einer Zahl." ;
+ Text [ italian ] = "Restituisce il seno dell'angolo specificato." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Sinus einer Zahl." ;
+ Text [ portuguese ] = "Devolve o seno de um número." ;
+ Text [ finnish ] = "Berechnet den Sinus einer Zahl." ;
+ Text [ danish ] = "Beregner et tals sinus." ;
+ Text [ french ] = "Renvoie le sinus d'un nombre." ;
+ Text [ swedish ] = "Beräknar sinus för ett tal." ;
+ Text [ dutch ] = "Berekent de sinus van een getal." ;
+ Text [ spanish ] = "Devuelve el seno de un ángulo determinado." ;
+ Text [ english_us ] = "Returns the sine of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËã¸ø¶¨½Ç¶ÈµÄÕýÏÒÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñèíóñ ÷èñëà.";
+ Text[ polish ] = "Oblicza sinus podanego k¹ta.";
+ Text[ japanese ] = "Žw’肵‚½Šp“x‚Ì»²Ý‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¿é¤J¨¤«×ªº¥¿©¶­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÌíÈ ÇáÒÇæíÉ áÑÞã.";
+ Text[ dutch ] = "Berekent de sinus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËã¸ø¶¨½Ç¶ÈµÄÕýÏÒÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï çìßôïíï åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ »çÀÎÀ» ¹Ýȯ";
+ Text[ turkish ] = "Sayýnýn sinüsünü verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_SIN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Winkel im Bogenmaß (Radiant), dessen Sinus berechnet werden soll. : Der Winkel, gemessen in Radiant */
+ /* ### ACHTUNG: Neuer Text in Resource? Der Winkel im Bogenmaß (Radiant), dessen Sinus berechnet werden soll. : Der Winkel im Bogenma˜ (Radiant), dessen Sinus berechnet werden soll. */
+ Text = "Der Winkel im Bogenmaß (Radiant), dessen Sinus berechnet werden soll." ;
+ Text [ english ] = "is the angle in radians for which you want the sine." ;
+ Text [ norwegian ] = "Der Winkel im Bogenmaß (Radiant), dessen Sinus berechnet werden soll." ;
+ Text [ italian ] = "è l'angolo espresso in radianti di cui si desidera il seno." ;
+ Text [ portuguese_brazilian ] = "Der Winkel im Bogenmaß (Radiant), dessen Sinus berechnet werden soll." ;
+ Text [ portuguese ] = "é o ângulo em radianos cujo seno se deseja calcular." ;
+ Text [ finnish ] = "Der Winkel im Bogenmaß (Radiant), dessen Sinus berechnet werden soll." ;
+ Text [ danish ] = "Den vinkel i radianer hvis sinus skal beregnes." ;
+ Text [ french ] = "L'angle exprimé en radians dont vous voulez obtenir le sinus." ;
+ Text [ swedish ] = "Vinkeln i radianer vars sinus skall beräknas." ;
+ Text [ dutch ] = "De hoek gemeten in radialen waarvan u de sinus wilt berekenen." ;
+ Text [ spanish ] = "es el ángulo en radianes cuyo seno se desea calcular." ;
+ Text [ english_us ] = "The angle in radians for which the sine is to be calculated." ;
+ Text[ chinese_simplified ] = "ÐèÒªÇóÆäÕýÏÒÖµµÄ½Ç¶È£¬ÒÔ»¡¶È±íʾ¡£";
+ Text[ russian ] = "Óãîë â ðàäèàíàõ, äëÿ êîòîðîãî âû÷èñëÿåòñÿ ñèíóñ.";
+ Text[ polish ] = "K¹t wyra¿ony w radianach, dla którego ma zostaæ obliczony sinus.";
+ Text[ japanese ] = "»²Ý‚ð‹‚ß‚éŠp“x(×¼Þ±Ý)B";
+ Text[ chinese_traditional ] = "»Ý­n¨D¨ä¥¿©¶­Èªº¨¤«×¡M¥H©·«×ªí¥Ü¡C";
+ Text[ arabic ] = "ÇáÒÇæíÉ ÈÇáÑÇÏíÇä ÇáãÑÇÏ ãÚÑÝÉ ÌíÈåÇ.";
+ Text[ dutch ] = "De hoek gemeten in radialen waarvan u de sinus wilt berekenen.";
+ Text[ chinese_simplified ] = "ÐèÒªÇóÆäÕýÏÒÖµµÄ½Ç¶È£¬ÒÔ»¡¶È±íʾ¡£";
+ Text[ greek ] = "Ç ãùíßá óå áêôßíéá (Radiant) , ôçò ïðïßáò èá õðïëïãéóôåß ôï çìßôïíï.";
+ Text[ korean ] = "»êÃâµÉ »çÀÎÇÔ¼ö¿¡´ëÇÑ ¶óµð¾ÈÀÇ °¢";
+ Text[ turkish ] = "Sinüsü hesaplanacak radyan cinsinden açý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function COT #*=-
+ Resource SC_OPCODE_COT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Kotangens einer Zahl. : Cotangensfunktion */
+ Text = "Berechnet den Kotangens einer Zahl." ;
+ Text [ english ] = "Returns the cotangent of the given angle." ;
+ Text [ norwegian ] = "Berechnet den Kotangens einer Zahl." ;
+ Text [ italian ] = "Restituisce la cotangente di un angolo dato" ;
+ Text [ portuguese_brazilian ] = "Berechnet den Kotangens einer Zahl." ;
+ Text [ portuguese ] = "Devolve a cotangente de um determinado ângulo." ;
+ Text [ finnish ] = "Berechnet den Kotangens einer Zahl." ;
+ Text [ danish ] = "Beregner et tals cotangens." ;
+ Text [ french ] = "Renvoie la cotangente d'un nombre" ;
+ Text [ swedish ] = "Beräknar cotangens för ett tal." ;
+ Text [ dutch ] = "Berekent de cotangens van een getal." ;
+ Text [ spanish ] = "Devuelve la cotangente de un número." ;
+ Text [ english_us ] = "Returns the cotangent of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö½Ç¶ÈµÄÓàÇÐÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êîòàíãåíñ ÷èñëà.";
+ Text[ polish ] = "Oblicza cotangens liczby.";
+ Text[ japanese ] = "”’l‚̺ÀݼުÝÄ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¨¤«×ªº§E¤Á­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ Ùá ÇáÊãÇã áÑÞã.";
+ Text[ dutch ] = "Berekent de cotangens van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö½Ç¶ÈµÄÓàÇÐÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôç óõíåöáðôïìÝíç åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ÄÚźÁ¨Æ® ¹Ýȯ.";
+ Text[ turkish ] = "Bir sayýnýn kotanjantýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_COT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Winkel im Bogenmaß (Radiant), dessen Kotangens berechnet werden soll. : Der Winkel, gemessen in Radiant */
+ /* ### ACHTUNG: Neuer Text in Resource? Der Winkel im Bogenmaß (Radiant), dessen Kotangens berechnet werden soll. : Der Winkel im Bogenma˜ (Radiant), dessen Kotangens berechnet werden soll. */
+ Text = "Der Winkel im Bogenmaß (Radiant), dessen Kotangens berechnet werden soll." ;
+ Text [ english ] = "is any real number." ;
+ Text [ norwegian ] = "Der Winkel im Bogenmaß (Radiant), dessen Kotangens berechnet werden soll." ;
+ Text [ italian ] = "L'angolo in radianti di cui si desidera calcolare la cotangente." ;
+ Text [ portuguese_brazilian ] = "Der Winkel im Bogenmaß (Radiant), dessen Kotangens berechnet werden soll." ;
+ Text [ portuguese ] = "é o ângulo em radianos para o qual deseja obter o valor da cotangente." ;
+ Text [ finnish ] = "Der Winkel im Bogenmaß (Radiant), dessen Kotangens berechnet werden soll." ;
+ Text [ danish ] = "Den vinkel i radianer hvis cotangens skal beregnes." ;
+ Text [ french ] = "L'angle exprimé en radians dont vous voulez obtenir la cotangente." ;
+ Text [ swedish ] = "Vinkeln i radianer vars cotangens skall beräknas." ;
+ Text [ dutch ] = "De hoek, gemeten in radiant, waarvan de cotangens moet worden berekend." ;
+ Text [ spanish ] = "es el ángulo en radianes cuya cotangente se desea calcular." ;
+ Text [ english_us ] = "The angle in radians whose cotangent value is to be returned." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÓàÇÐÖµµÄ½Ç¶È£¬ÒÔ»¡¶È±íʾ¡£";
+ Text[ russian ] = "Óãîë â ðàäèàíàõ, äëÿ êîòîðîãî îïðåäåëÿåòñÿ êîòàíãåíñ.";
+ Text[ polish ] = "K¹t wyra¿ony w radianach, dla którego ma zostaæ obliczony cotangens.";
+ Text[ japanese ] = "ºÀݼުÝÄ‚ð‹‚ß‚éŠp“x‚ð׼ޱ݂ð’PˆÊ‚Æ‚µ‚ÄŽw’èB";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä¾l¤Á­Èªº¨¤«×¡M¥H©·«×ªí¥Ü¡C";
+ Text[ arabic ] = "ÇáÒÇæíÉ ÈÇáÑÇÏíÇä ÇáÊí ÊÑíÏ ÍÓÇÈ Ùá ÇáÊãÇã áåÇ.";
+ Text[ dutch ] = "De hoek, gemeten in radiant, waarvan de cotangens moet worden berekend.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÓàÇÐÖµµÄ½Ç¶È£¬ÒÔ»¡¶È±íʾ¡£";
+ Text[ greek ] = "Ç ãùíßá óå áêôßíéá (Radiant) , ôçò ïðïßáò èá õðïëïãéóôåß ç óõíåöáðôïìÝíç çìéôüíïõ.";
+ Text[ korean ] = "ÄÚźÁ¨Æ®¿¡´ëÇÑ ¶óµð¾ÈÀÇ °¢ÀÌ ¹ÝȯµË´Ï´Ù.";
+ Text[ turkish ] = "Kotanjant deðeri hesaplanacak radyan cinsinden açý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TAN #*=-
+ Resource SC_OPCODE_TAN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Tangens einer Zahl. : Tangensfunktion */
+ Text = "Berechnet den Tangens einer Zahl." ;
+ Text [ english ] = "Returns the tangent of the given angle." ;
+ Text [ norwegian ] = "Berechnet den Tangens einer Zahl." ;
+ Text [ italian ] = "Restituisce la tangente dell'angolo specificato." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Tangens einer Zahl." ;
+ Text [ portuguese ] = "Devolve a tangente de um número." ;
+ Text [ finnish ] = "Berechnet den Tangens einer Zahl." ;
+ Text [ danish ] = "Beregner et tals tangens." ;
+ Text [ french ] = "Renvoie la tangente d'un nombre" ;
+ Text [ swedish ] = "Beräknar ett tals tangens." ;
+ Text [ dutch ] = "Berekent de tangens van een getal." ;
+ Text [ spanish ] = "Devuelve la tangente de un número dado." ;
+ Text [ english_us ] = "Returns the tangent of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄÕýÇÐÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò òàíãåíñ ÷èñëà.";
+ Text[ polish ] = "Oblicza tangens liczby.";
+ Text[ japanese ] = "”’l‚ÌÀݼުÝÄ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¥¿¤Á­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ Ùá ÇáÒÇæíÉ áÑÞã.";
+ Text[ dutch ] = "Berekent de tangens van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄÕýÇÐÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí åöáðôïìÝíç åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ÅºÁ¨Æ®¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Sayýnýn tanjantýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_TAN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Winkel im Bogenmaß (Radiant), dessen Tangens berechnet werden soll. : Der Winkel, gemessen in Radiant */
+ /* ### ACHTUNG: Neuer Text in Resource? Der Winkel im Bogenmaß (Radiant), dessen Tangens berechnet werden soll. : Der Winkel im Bogenma˜ (Radiant), dessen Tangens berechnet werden soll. */
+ Text = "Der Winkel im Bogenmaß (Radiant), dessen Tangens berechnet werden soll." ;
+ Text [ english ] = "is the angle in radians for which you want the tangent." ;
+ Text [ norwegian ] = "Der Winkel im Bogenmaß (Radiant), dessen Tangens berechnet werden soll." ;
+ Text [ italian ] = "è l'angolo espresso in radianti di cui si desidera la tangente." ;
+ Text [ portuguese_brazilian ] = "Der Winkel im Bogenmaß (Radiant), dessen Tangens berechnet werden soll." ;
+ Text [ portuguese ] = "é o ângulo em radianos para o qual deseja uma tangente." ;
+ Text [ finnish ] = "Der Winkel im Bogenmaß (Radiant), dessen Tangens berechnet werden soll." ;
+ Text [ danish ] = "Den vinkel i radianer hvis tangens skal beregnes." ;
+ Text [ french ] = "L'angle exprimé en radians dont vous voulez calculer la tangente." ;
+ Text [ swedish ] = "Vinkeln i radianer som tangens skall beräknas för." ;
+ Text [ dutch ] = "De hoek gemeten in radialen waarvan u de tangens wilt berekenen." ;
+ Text [ spanish ] = "es el ángulo en radianes cuya tangente se desea obtener." ;
+ Text [ english_us ] = "The angle in radians for which the tangent is to be calculated." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÕýÇÐÖµµÄ½Ç¶È£¬ÒÔ»¡¶È±íʾ¡£";
+ Text[ russian ] = "Óãîë â ðàäèàíàõ, òàíãåíñ êîòîðîãî íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "K¹t wyra¿ony w radianach, dla którego ma zostaæ obliczony tangens.";
+ Text[ japanese ] = "ÀݼުÝÄ‚ð‹‚ß‚éŠp“x(×¼Þ±Ý)B";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä¥¿¤Á­Èªº¨¤«×¡M¥H©·«×ªí¥Ü¡C";
+ Text[ arabic ] = "ÇáÒÇæíÉ ÈÇáÑÇÏíÇä ÇáÊí ÊÑíÏ ÍÓÇÈ ÙáåÇ.";
+ Text[ dutch ] = "De hoek gemeten in radialen waarvan u de tangens wilt berekenen.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÕýÇÐÖµµÄ½Ç¶È£¬ÒÔ»¡¶È±íʾ¡£";
+ Text[ greek ] = "Ç ãùíßá óå áêôßíéá (Radiant) , ôçò ïðïßáò èá õðïëïãéóôåß ç åöáðôïìÝíç.";
+ Text[ korean ] = "»êÃâµÉ źÁ¨Æ®¿¡´ëÇÑ ¶óµð¾ÈÀÇ °¢.";
+ Text[ turkish ] = "Tanjantý hesaplanacak radyan cinsinden açý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function COSHYP #*=-
+ Resource SC_OPCODE_COS_HYP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Hyperbelkosinus (hyperbolischer Kosinus) einer Zahl. : Cosinus Hyperbolicus Funktion */
+ Text = "Berechnet den Hyperbelkosinus (hyperbolischer Kosinus) einer Zahl." ;
+ Text [ english ] = "Returns the hyperbolic cosine of a number." ;
+ Text [ norwegian ] = "Berechnet den Hyperbelkosinus (hyperbolischer Kosinus) einer Zahl." ;
+ Text [ italian ] = "Restituisce il coseno iperbolico di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Hyperbelkosinus (hyperbolischer Kosinus) einer Zahl." ;
+ Text [ portuguese ] = "Devolve o coseno hiperbólico de um número." ;
+ Text [ finnish ] = "Berechnet den Hyperbelkosinus (hyperbolischer Kosinus) einer Zahl." ;
+ Text [ danish ] = "Beregner et tals hyperbolske cosinus." ;
+ Text [ french ] = "Renvoie le cosinus hyperbolique d'un nombre." ;
+ Text [ swedish ] = "Beräknar hyperbolisk cosinus för ett tal." ;
+ Text [ dutch ] = "Berekent de cosinus hyperbolicus van een getal." ;
+ Text [ spanish ] = "Devuelve el coseno hiperbólico de un número." ;
+ Text [ english_us ] = "Returns the hyperbolic cosine of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄË«ÇúÓàÏÒÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ãèïåðáîëè÷åñêèé êîñèíóñ ÷èñëà.";
+ Text[ polish ] = "Oblicza cosinus hiperboliczny liczby.";
+ Text[ japanese ] = "”’l‚Ì‘o‹Èü³Œ·(ʲÊß°ÎÞد¸ º»²Ý)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼ÆªºÂù¦±§E©¶­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÌíÈ ÇáÊãÇã ááÞØÚ ÇáÒÇÆÏ áÑÞã.";
+ Text[ dutch ] = "Berekent de cosinus hyperbolicus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄË«ÇúÓàÏÒÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï õðåñâïëéêü óõíçìßôïíï åíüò áñéèìïý.";
+ Text[ korean ] = "½Ö°î¼± ÄÚ»çÀÎ ¹Ýȯ";
+ Text[ turkish ] = "Bir sayýnýn hiperbolik kosinüsünü hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_COSHYP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, dessen Hyperbelkosinus berechnet werden soll. : ??? */
+ Text = "Der Wert, dessen Hyperbelkosinus berechnet werden soll." ;
+ Text [ english ] = "is any real number." ;
+ Text [ norwegian ] = "Der Wert, dessen Hyperbelkosinus berechnet werden soll." ;
+ Text [ italian ] = "È il numero di cui si desidera calcolare il coseno iperbolico." ;
+ Text [ portuguese_brazilian ] = "Der Wert, dessen Hyperbelkosinus berechnet werden soll." ;
+ Text [ portuguese ] = "é qualquer número real maior ou igual a 1." ;
+ Text [ finnish ] = "Der Wert, dessen Hyperbelkosinus berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som den hyperbolske cosinus skal beregnes for." ;
+ Text [ french ] = "La valeur dont vous souhaitez obtenir le cosinus hyperbolique." ;
+ Text [ swedish ] = "Värdet vars hyperboliska cosinus skall beräknas." ;
+ Text [ dutch ] = "De waarde waarvan de cosinus hyperbolicus moet worden berekend." ;
+ Text [ spanish ] = "es el valor cuyo coseno hiperbólico se desea calcular." ;
+ Text [ english_us ] = "The value for which the hyperbolic cosine is to be returned." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäË«ÇúÓàÏÒÖµµÄÊý¡£";
+ Text[ russian ] = "Çíà÷åíèå, ãèïåðáîëè÷åñêèé êîñèíóñ êîòîðîãî âû÷èñëÿåòñÿ.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony cosinus hiperboliczny.";
+ Text[ japanese ] = "‘o‹Èü³Œ·‚ð‹‚ß‚é”’lB";
+ Text[ chinese_traditional ] = "­n­pºâ¨äÂù¦±§E©¶­Èªº¼Æ¡C";
+ Text[ arabic ] = "Ãí ÑÞã ÍÞíÞí.";
+ Text[ dutch ] = "De waarde waarvan de cosinus hyperbolicus moet worden berekend.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäË«ÇúÓàÏÒÖµµÄÊý¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ôï õðåñâïëéêü óõíçìßôïíï.";
+ Text[ korean ] = "½Ö°î¼± ÄÚ»çÀÎÀÇ °ªÀÌ ¹ÝȯµË´Ï´Ù.";
+ Text[ turkish ] = "Hiperbolik kosinüsü hesaplanacak sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SINHYP #*=-
+ Resource SC_OPCODE_SIN_HYP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Hyperbelsinus (hyperbolischer Sinus) einer Zahl. : Sinus Hyperbolicus Funktion */
+ Text = "Berechnet den Hyperbelsinus (hyperbolischer Sinus) einer Zahl." ;
+ Text [ english ] = "Returns the hyperbolic sine of a number." ;
+ Text [ norwegian ] = "Berechnet den Hyperbelsinus (hyperbolischer Sinus) einer Zahl." ;
+ Text [ italian ] = "Restituisce il seno iperbolico dell'angolo specificato." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Hyperbelsinus (hyperbolischer Sinus) einer Zahl." ;
+ Text [ portuguese ] = "Devolve o seno hiperbólico de um número." ;
+ Text [ finnish ] = "Berechnet den Hyperbelsinus (hyperbolischer Sinus) einer Zahl." ;
+ Text [ danish ] = "Beregner et tals hyperbolske sinus." ;
+ Text [ french ] = "Renvoie le sinus hyperbolique d'un nombre." ;
+ Text [ swedish ] = "Beräknar hyperboliska sinus för ett tal." ;
+ Text [ dutch ] = "Berekent de sinus hyperbolicus van een getal." ;
+ Text [ spanish ] = "Devuelve el seno hiperbólico de un número." ;
+ Text [ english_us ] = "Returns the hyperbolic sine of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄË«ÇúÕýÏÒÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ãèïåðáîëè÷åñêèé ñèíóñ ÷èñëà.";
+ Text[ polish ] = "Oblicza sinus hiperboliczny liczby.";
+ Text[ japanese ] = "”’l‚Ì‘o‹Èü³Œ·(Êß²Êß°ÎÞد¸ »²Ý)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼ÆªºÂù¦±¥¿©¶­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÌíÈ ÇáÒÇæíÉ ááÞØÚ ÇáÒÇÆÏ áÑÞã.";
+ Text[ dutch ] = "Berekent de sinus hyperbolicus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄË«ÇúÕýÏÒÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï õðåñâïëéêü çìßôïíï åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ½Ö°î¼± »çÀÎÀ» ¹Ýȯ";
+ Text[ turkish ] = "Sayýnýn hiperbolik sinüsünü hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_SINHYP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, dessen Hyperbelsinus berechnet werden soll. : ??? */
+ Text = "Der Wert, dessen Hyperbelsinus berechnet werden soll." ;
+ Text [ english ] = "is any real number." ;
+ Text [ norwegian ] = "Der Wert, dessen Hyperbelsinus berechnet werden soll." ;
+ Text [ italian ] = "è un numero reale qualsiasi." ;
+ Text [ portuguese_brazilian ] = "Der Wert, dessen Hyperbelsinus berechnet werden soll." ;
+ Text [ portuguese ] = "é qualquer número real." ;
+ Text [ finnish ] = "Der Wert, dessen Hyperbelsinus berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som den hyperbolske sinus skal beregnes for." ;
+ Text [ french ] = "La valeur dont vous souhaitez obtenir le cosinus hyperbolique." ;
+ Text [ swedish ] = "Värde vars hyperboliska sinus skall beräknas." ;
+ Text [ dutch ] = "De waarde waarvan u de sinus hyperbolicus wilt berekenen." ;
+ Text [ spanish ] = "es el valor cuyo seno hiperbólico se desea calcular." ;
+ Text [ english_us ] = "The value for which the hyperbolic sine is to be calculated." ;
+ Text[ chinese_simplified ] = "ÐèÒª¼ÆËãÆäË«ÇúÕýÏÒÖµµÄÈÎÒâʵÊý¡£";
+ Text[ russian ] = "Çíà÷åíèå, ãèïåðáîëè÷åñêèé ñèíóñ êîòîðîãî íåîáõîäèìî âû÷èñëèòü.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony sinus hiperboliczny.";
+ Text[ japanese ] = "‘o‹Èü³Œ·‚ð‹‚ß‚é”’lB";
+ Text[ chinese_traditional ] = "»Ý­n­pºâ¨äÂù¦±¥¿©¶­Èªº¥ô·N¹ê¼Æ¡C";
+ Text[ arabic ] = "Ãí ÑÞã ÍÞíÞí.";
+ Text[ dutch ] = "De waarde waarvan u de sinus hyperbolicus wilt berekenen.";
+ Text[ chinese_simplified ] = "ÐèÒª¼ÆËãÆäË«ÇúÕýÏÒÖµµÄÈÎÒâʵÊý¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ôï õðåñâïëéêü çìßôïíï.";
+ Text[ korean ] = "»êÃâµÉ ½Ö°î¼± ÇÔ¼ö¿¡ ´ëÇÑ °ª";
+ Text[ turkish ] = "Hiperbolik sinüsü hesaplanmak istenen deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function COTHYP #*=-
+ Resource SC_OPCODE_COT_HYP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Hyperbelkotangens (hyperbolischer Kotangens) einer Zahl. : Cotangens Hyperbolicus Funktion */
+ Text = "Berechnet den Hyperbelkotangens (hyperbolischer Kotangens) einer Zahl." ;
+ Text [ english ] = "Returns the hyperbolic cotangent of the given angle." ;
+ Text [ norwegian ] = "Berechnet den Hyperbelkotangens (hyperbolischer Kotangens) einer Zahl." ;
+ Text [ italian ] = "Restituisce la cotangente iperbolica di un angolo dato." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Hyperbelkotangens (hyperbolischer Kotangens) einer Zahl." ;
+ Text [ portuguese ] = "Devolve a cotangente hiperbólica de um determinado ângulo." ;
+ Text [ finnish ] = "Berechnet den Hyperbelkotangens (hyperbolischer Kotangens) einer Zahl." ;
+ Text [ danish ] = "Beregner et tals hyperbolske cotangens." ;
+ Text [ french ] = "Renvoie la cotangente hyperbolique d'un nombre." ;
+ Text [ swedish ] = "Beräknar hyperbolisk cotangens för ett tal." ;
+ Text [ dutch ] = "Berekent de cotangens hyperbolicus van een getal." ;
+ Text [ spanish ] = "Devuelve la cotangente hiperbólica de un número." ;
+ Text [ english_us ] = "Returns the hyperbolic cotangent of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄË«ÇúÓàÇÐÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ãèïåðáîëè÷åñêèé êîòàíãåíñ ÷èñëà.";
+ Text[ polish ] = "Oblicza cotangens hyperboliczny liczby.";
+ Text[ japanese ] = "”’l‚ÌʲÊß°ÎÞد¸ ºÀݼުÝÄ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼ÆªºÂù¦±§E¤Á­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ Ùá ÊãÇã ÇáÞØÚ ÇáÒÇÆÏ áÑÞã.";
+ Text[ dutch ] = "Berekent de cotangens hyperbolicus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄË«ÇúÓàÇÐÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ôüîï ôçò õðåñâïëéêÞò åöáðôïìÝíçò åíüò áñéèìïý.";
+ Text[ korean ] = "½Ö°î¼± ÄÚźÁ¨Æ®¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Bir sayýnýn hiperbolik kotanjantýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_COTHYP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert ungleich 0, dessen Hyperbelkotangens berechnet werden soll. : ??? */
+ Text = "Ein Wert ungleich 0, dessen Hyperbelkotangens berechnet werden soll." ;
+ Text [ english ] = "is any real number." ;
+ Text [ norwegian ] = "Ein Wert ungleich 0, dessen Hyperbelkotangens berechnet werden soll." ;
+ Text [ italian ] = "È un valore diverso da 0 di cui si desidera calcolare la cotangente iperbolica." ;
+ Text [ portuguese_brazilian ] = "Ein Wert ungleich 0, dessen Hyperbelkotangens berechnet werden soll." ;
+ Text [ portuguese ] = "é um valor diferente de 0, cuja cotangente hiperbólica deseja obter." ;
+ Text [ finnish ] = "Ein Wert ungleich 0, dessen Hyperbelkotangens berechnet werden soll." ;
+ Text [ danish ] = "En værdi forskellig fra 0, som den hyperbolske cotangens skal beregnes for." ;
+ Text [ french ] = "Une valeur différente de 0 dont vous souhaitez obtenir la cotangente hyberbolique." ;
+ Text [ swedish ] = "Ett värde ej lika med 0 vars hyperboliska cotangent skall beräknas." ;
+ Text [ dutch ] = "Een waarde ongelijk aan 0, waarvan de cotangens hyperbolicus moet worden berekend." ;
+ Text [ spanish ] = "Es el valor diferente de 0 cuya cotangente hiperbólica se desea calcular." ;
+ Text [ english_us ] = "A value not equal to 0 for which the hyperbolic cotangent is to be returned." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäË«ÇúÓàÇÐÖµµÄ²»µÈÓÚÁãµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, íå ðàâíîå íóëþ, äëÿ êîòîðîãî âû÷èñëÿåòñÿ ãèïåðáîëè÷åñêèé êîòàíãåíñ.";
+ Text[ polish ] = "Wartoœæ ró¿na od zera, dla której ma zostaæ obliczony cotangens hyperboliczny.";
+ Text[ japanese ] = "ʲÊß°ÎÞد¸ ºÀݼުÝÄ‚ð‹‚ß‚é0‚Å‚È‚¢”’lB";
+ Text[ chinese_traditional ] = "­n­pºâ¨äÂù¦±§E¤Á­Èªº¤£µ¥©ó¹sªº¼Æ­È¡C";
+ Text[ arabic ] = "Ãí ÑÞã ÍÞíÞí.";
+ Text[ dutch ] = "Een waarde ongelijk aan 0, waarvan de cotangens hyperbolicus moet worden berekend.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäË«ÇúÓàÇÐÖµµÄ²»µÈÓÚÁãµÄÊýÖµ¡£";
+ Text[ greek ] = "Ìéá ôéìÞ äéÜöïñç ôïõ 0, ôçò ïðïßáò èá õðïëïãéóôåß ç õðåñâïëéêÞ óõíåöáðôïìÝíç.";
+ Text[ korean ] = "½Ö°î¼± ÄÚźÁ¨Æ®¿¡´ëÇÑ 0ÀÌ ¾Æ´Ñ °ªÀÌ ¹ÝȯµË´Ï´Ù.";
+ Text[ turkish ] = "Hiperbolik kotanjantý hesaplanacak sýfýra eþit olmayan deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TANHYP #*=-
+ Resource SC_OPCODE_TAN_HYP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Hyperbeltangens (hyperbolischer Tangens) einer Zahl. : Tangens Hyperbolicus Funktion */
+ Text = "Berechnet den Hyperbeltangens (hyperbolischer Tangens) einer Zahl." ;
+ Text [ english ] = "Returns the hyperbolic tangent of a number." ;
+ Text [ norwegian ] = "Berechnet den Hyperbeltangens (hyperbolischer Tangens) einer Zahl." ;
+ Text [ italian ] = "Restituisce la tangente iperbolica dell'angolo specficato." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Hyperbeltangens (hyperbolischer Tangens) einer Zahl." ;
+ Text [ portuguese ] = "Devolve a tangente hiperbólica de um número." ;
+ Text [ finnish ] = "Berechnet den Hyperbeltangens (hyperbolischer Tangens) einer Zahl." ;
+ Text [ danish ] = "Beregner et tals hyperbolske tangens." ;
+ Text [ french ] = "Renvoie la tangente hyperbolique d'un nombre." ;
+ Text [ swedish ] = "Beräknar hyperbolisk tangens för ett tal." ;
+ Text [ dutch ] = "Berekent de tangens hyperbolicus van een getal." ;
+ Text [ spanish ] = "Devuelve la tangente hiperbólica de un número." ;
+ Text [ english_us ] = "Returns the hyperbolic tangent of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄË«ÇúÕýÇÐÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ãèïåðáîëè÷åñêèé òàíãåíñ ÷èñëà.";
+ Text[ polish ] = "Oblicza tangens hiperboliczny liczby.";
+ Text[ japanese ] = "”’l‚Ì‘o‹Èü³Ú(ʲÊß°ÎÞد¸ ÀݼުÝÄ)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼ÆªºÂù¦±¥¿¤Á­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ Ùá ÇáÒÇæíÉ ááÞØÚ ÇáÒÇÆÏ áÑÞã.";
+ Text[ dutch ] = "Berekent de tangens hyperbolicus van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄË«ÇúÕýÇÐÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí õðåñâïëéêÞ åöáðôïìÝíç åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ½Ö°î¼± źÁ¨Æ®¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Sayýnýn hiperbolik tanjantýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_TANHYP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, dessen Hyperbeltangens berechnet werden soll. : ??? */
+ Text = "Der Wert, dessen Hyperbeltangens berechnet werden soll." ;
+ Text [ english ] = "is any real number." ;
+ Text [ norwegian ] = "Der Wert, dessen Hyperbeltangens berechnet werden soll." ;
+ Text [ italian ] = "è un numero reale qualsiasi" ;
+ Text [ portuguese_brazilian ] = "Der Wert, dessen Hyperbeltangens berechnet werden soll." ;
+ Text [ portuguese ] = "é qualquer número real." ;
+ Text [ finnish ] = "Der Wert, dessen Hyperbeltangens berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som den hyperbolske tangens skal beregnes for." ;
+ Text [ french ] = "La valeur vous souhaitez obtenir la tangente hyperbolique." ;
+ Text [ swedish ] = "Värdet vars hyperboliska tangens skall beräknas." ;
+ Text [ dutch ] = "De waarde waarvan u de tangens hyperbolicus wilt berekenen." ;
+ Text [ spanish ] = "es el número real cuya tangente hiperbólica se desea calcular." ;
+ Text [ english_us ] = "The value for which the hyperbolic tangent is to be calculated." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäË«ÇúÕýÇÐÖµµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî íåîáõîäèìî âû÷èñëèòü ãèïåðáîëè÷åñêèé òàíãåíñ.";
+ Text[ polish ] = "Wartoœæ, dla której ma byæ obliczony tangens hiperboliczny.";
+ Text[ japanese ] = "ʲÊß° ÎÞد¸ ÀݼުÝÄ‚ð‹‚ß‚é’l";
+ Text[ chinese_traditional ] = "­n­pºâ¨äÂù¦±¥¿¤Á­Èªº¼Æ­È¡C";
+ Text[ arabic ] = "Ãí ÑÞã ÍÞíÞí.";
+ Text[ dutch ] = "De waarde waarvan u de tangens hyperbolicus wilt berekenen.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäË«ÇúÕýÇÐÖµµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç õðåñâïëéêÞ åöáðôïìÝíç.";
+ Text[ korean ] = "»êÃâµÉ ½Ö°î¼± źÁ¨Æ® ÇÔ¼ö¿¡ ´ëÇÑ °ª";
+ Text[ turkish ] = "Hiperbolik tanjantý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ARCTAN2 #*=-
+ Resource SC_OPCODE_ARC_TAN_2
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Arkustangens zu den angegebenen Koordinaten. : Tangens Funktion in Koordinatendarstellung */
+ Text = "Berechnet den Arkustangens zu den angegebenen Koordinaten." ;
+ Text [ english ] = "Returns the arctangent of the specified x- and y- coordinates." ;
+ Text [ norwegian ] = "Berechnet den Arkustangens zu den angegebenen Koordinaten." ;
+ Text [ italian ] = "Restituisce l'arcotangente rispetto alle coordinate specificate." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Arkustangens zu den angegebenen Koordinaten." ;
+ Text [ portuguese ] = "Devolve o arco tangente das coordenadas x e y especificadas." ;
+ Text [ finnish ] = "Berechnet den Arkustangens zu den angegebenen Koordinaten." ;
+ Text [ danish ] = "Beregner de specificerede x- og y-koordinaters arcus tangens." ;
+ Text [ french ] = "Renvoie l'arc tangente des coordonnées spécifiées." ;
+ Text [ swedish ] = "Beräknar invers tangens för de angivna koordinaterna." ;
+ Text [ dutch ] = "Berekent de boogtangens van de aangegeven coördinaten." ;
+ Text [ spanish ] = "Devuelve el arco tangente de las coordenadas especificadas." ;
+ Text [ english_us ] = "Returns the arctangent for the specified coordinates." ;
+ Text[ chinese_simplified ] = "¼ÆËã¸ø¶¨×ø±êÖµµÄµãµÄ·´ÕýÇÐÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò àðêòàíãåíñ äëÿ çàäàííûõ êîîðäèíàò .";
+ Text[ polish ] = "Oblicza arcus tangens na podstawie wspó³rzêdnych x i y.";
+ Text[ japanese ] = "Žw’肳‚ꂽx-yÀ•W‚̱°¸ÀݼުÝÄ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâµ¹©w§¤¼Ð­ÈªºÂIªº¤Ï¥¿¤Á­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÒÇæíÉ ÇáÙá ááÅÍÏÇËíÇÊ ÇáãÚØÇÉ.";
+ Text[ dutch ] = "Berekent de boogtangens van de aangegeven coördinaten.";
+ Text[ chinese_simplified ] = "¼ÆËã¸ø¶¨×ø±êÖµµÄµãµÄ·´ÕýÇÐÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ôüîï åöáðôïìÝíçò ôùí åéóçãìÝíùí óõíôåôáãìÝíùí.";
+ Text[ korean ] = "ÁöÁ¤µÈ ÁÂÇ¥´ëÇÑ ¾ÆũźÁ¨Æ® ¹Ýȯ";
+ Text[ turkish ] = "Belirtilen koordinatlarýn arktanjantýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ARCTAN2 );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl_x" ;
+ Text [ english ] = "x_num" ;
+ Text [ norwegian ] = "Zahl x" ;
+ Text [ italian ] = "num_x" ;
+ Text [ portuguese_brazilian ] = "Zahl x" ;
+ Text [ portuguese ] = "Número_x" ;
+ Text [ finnish ] = "Zahl x" ;
+ Text [ danish ] = "Tal_x" ;
+ Text [ french ] = "Nombre_x" ;
+ Text [ swedish ] = "tal_x" ;
+ Text [ dutch ] = "Getal_x" ;
+ Text [ spanish ] = "Número_x" ;
+ Text [ english_us ] = "number_x" ;
+ Text[ chinese_simplified ] = "Êý×Ö_x";
+ Text[ russian ] = "×èñëî_x";
+ Text[ polish ] = "Liczba_x";
+ Text[ japanese ] = "”_x";
+ Text[ chinese_traditional ] = "number_x";
+ Text[ arabic ] = "ÑÞãx_";
+ Text[ dutch ] = "Getal_x";
+ Text[ chinese_simplified ] = "Êý×Ö_x";
+ Text[ greek ] = "Áñéèìüò_x";
+ Text[ korean ] = "¼ö_x";
+ Text[ turkish ] = "Sayý_x";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wert für die X-Koordinate. : Wert f³r die X-Koordinate. */
+ Text = "Wert für die X-Koordinate." ;
+ Text [ english ] = "is the x-coordinate of the point." ;
+ Text [ norwegian ] = "Wert für die X-Koordinate." ;
+ Text [ italian ] = "È il valore della coordinata X." ;
+ Text [ portuguese_brazilian ] = "Wert für die X-Koordinate." ;
+ Text [ portuguese ] = "é o valor para a coordenada x do ponto." ;
+ Text [ finnish ] = "Wert für die X-Koordinate." ;
+ Text [ danish ] = "X-koordinatens værdi." ;
+ Text [ french ] = "Valeur de la coordonnée x." ;
+ Text [ swedish ] = "Värde för x-koordinaterna." ;
+ Text [ dutch ] = "Waarde voor de X-coördinaat." ;
+ Text [ spanish ] = "valor para la coordenada X." ;
+ Text [ english_us ] = "The value for the x coordinate." ;
+ Text[ chinese_simplified ] = "µãµÄ x-×ø±êÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå äëÿ êîîðäèíàòû X.";
+ Text[ polish ] = "Wartoœæ dla wspó³rzêdnej X.";
+ Text[ japanese ] = "“_‚ÌxÀ•W‚ðŽw’èB";
+ Text[ chinese_traditional ] = "ÂIªº X-§¤¼Ð­È¡C";
+ Text[ arabic ] = "ÞíãÉ ÇáÅÍÏÇËí Ó.";
+ Text[ dutch ] = "Waarde voor de X-coördinaat.";
+ Text[ chinese_simplified ] = "µãµÄ x-×ø±êÖµ¡£";
+ Text[ greek ] = "ÔéìÞ ôçò óõíôåôáãìÝíçò ×.";
+ Text[ korean ] = "x ÁÂÇ¥¿¡´ëÇÑ °ª";
+ Text[ turkish ] = "X koordinatýnýn deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Zahl_y" ;
+ Text [ english ] = "y_num" ;
+ Text [ norwegian ] = "Zahl y" ;
+ Text [ italian ] = "num_y" ;
+ Text [ portuguese_brazilian ] = "Zahl y" ;
+ Text [ portuguese ] = "Número_y" ;
+ Text [ finnish ] = "Zahl y" ;
+ Text [ danish ] = "Tal_y" ;
+ Text [ french ] = "Nombre_y" ;
+ Text [ swedish ] = "tal_y" ;
+ Text [ dutch ] = "Getal_y" ;
+ Text [ spanish ] = "Número_y" ;
+ Text [ english_us ] = "number_y" ;
+ Text[ chinese_simplified ] = "Êý×Ö_y";
+ Text[ russian ] = "×èñëî_y";
+ Text[ polish ] = "Liczba_y";
+ Text[ japanese ] = "”_y";
+ Text[ chinese_traditional ] = "number_y";
+ Text[ arabic ] = "ÑÞãy_";
+ Text[ dutch ] = "Getal_y";
+ Text[ chinese_simplified ] = "Êý×Ö_y";
+ Text[ greek ] = "Áñéèìüò_y";
+ Text[ korean ] = "¼ö y";
+ Text[ turkish ] = "Sayý_y";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wert für die Y-Koordinate. : Wert f³r die Y-Koordinate. */
+ Text = "Wert für die Y-Koordinate." ;
+ Text [ english ] = "is the y-coordinate of the point." ;
+ Text [ norwegian ] = "Wert für die Y-Koordinate." ;
+ Text [ italian ] = "È il valore della coordinata Y." ;
+ Text [ portuguese_brazilian ] = "Wert für die Y-Koordinate." ;
+ Text [ portuguese ] = "é o valor para coordenada y do ponto." ;
+ Text [ finnish ] = "Wert für die Y-Koordinate." ;
+ Text [ danish ] = "Y-koordinatens værdi." ;
+ Text [ french ] = "Valeur de la coordonnée y." ;
+ Text [ swedish ] = "Värde för y-koordinaterna." ;
+ Text [ dutch ] = "Waarde voor de Y-coördinaat." ;
+ Text [ spanish ] = "valor para la coordenada Y." ;
+ Text [ english_us ] = "The value for the y coordinate." ;
+ Text[ chinese_simplified ] = "µãµÄ y-×ø±êÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå äëÿ êîîðäèíàòû Y.";
+ Text[ polish ] = "Wartoœæ dla wspó³rzêdnej Y.";
+ Text[ japanese ] = "“_‚ÌyÀ•W‚ðŽw’èB";
+ Text[ chinese_traditional ] = "ÂIªº Y-§¤¼Ð­È¡C";
+ Text[ arabic ] = "ÞíãÉ ÇáÅÍÏÇËí Õ.";
+ Text[ dutch ] = "Waarde voor de Y-coördinaat.";
+ Text[ chinese_simplified ] = "µãµÄ y-×ø±êÖµ¡£";
+ Text[ greek ] = "ÔéìÞ ôçò óõíôåôáãìÝíçò Õ.";
+ Text[ korean ] = "y ÁÂÇ¥ÀÇ °ª";
+ Text[ turkish ] = "Y koordinatýnýn deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DEG #*=-
+ Resource SC_OPCODE_DEG
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wandelt Bogenmaß (Radiant) in Grad um. : Berechnet die Gradzahl eines Winkels aus einer Variantzahl. */
+ /* ### ACHTUNG: Neuer Text in Resource? Wandelt Bogenmaß (Radiant) in Grad um. : Wandelt Bogenma˜ (Radiant) in Grad um. */
+ Text = "Wandelt Bogenmaß (Radiant) in Grad um." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Wandelt Bogenmaß (Radiant) in Grad um." ;
+ Text [ italian ] = "Converte radianti in gradi." ;
+ Text [ portuguese_brazilian ] = "Wandelt Bogenmaß (Radiant) in Grad um." ;
+ Text [ portuguese ] = "Converte radianos em graus." ;
+ Text [ finnish ] = "Wandelt Bogenmaß (Radiant) in Grad um." ;
+ Text [ danish ] = "Konverterer radianer til grader." ;
+ Text [ french ] = "Convertit des radians en degrés" ;
+ Text [ swedish ] = "Omvandlar radianer till grader." ;
+ Text [ dutch ] = "Converteert radialen naar graden." ;
+ Text [ spanish ] = "Convierte radianes en grados." ;
+ Text [ english_us ] = "Converts a radian to degrees" ;
+ Text[ chinese_simplified ] = "ת»»»¡¶È³É½Ç¶È¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò ðàäèàíû â ãðàäóñû.";
+ Text[ polish ] = "Zamienia radiany na stopnie.";
+ Text[ japanese ] = "׼ޱ݂ð“x‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "Âà´«©·«×¦¨¨¤«×¡C";
+ Text[ arabic ] = "ÊÍæá ãä ÑÇÏíÇä Åáì ÏÑÌÇÊ.";
+ Text[ dutch ] = "Converteert radialen naar graden.";
+ Text[ chinese_simplified ] = "ת»»»¡¶È³É½Ç¶È¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé áêôßíéá óå ìïßñåò.";
+ Text[ korean ] = "¶óµð¾ÈÀ» °¢µµ·Î º¯È¯";
+ Text[ turkish ] = "Radyaný dereceye dönüþtürür";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_DEG );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Angle";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "Šp“x";
+ Text[ chinese_traditional ] = "Angle";
+ Text[ arabic ] = "Angle";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Angle";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Winkel im Bogenmaß (Radiant). : Der Winkel in Radiant */
+ /* ### ACHTUNG: Neuer Text in Resource? Der Winkel im Bogenmaß (Radiant). : Der Winkel im Bogenma˜ (Radiant). */
+ Text = "Der Winkel im Bogenmaß (Radiant)." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Winkel im Bogenmaß (Radiant)." ;
+ Text [ italian ] = "È l'angolo espresso in radianti." ;
+ Text [ portuguese_brazilian ] = "Der Winkel im Bogenmaß (Radiant)." ;
+ Text [ portuguese ] = "é o ângulo em radianos." ;
+ Text [ finnish ] = "Der Winkel im Bogenmaß (Radiant)." ;
+ Text [ danish ] = "Vinklen i radianer." ;
+ Text [ french ] = "L'angle en radians." ;
+ Text [ swedish ] = "Vinkeln i radianer." ;
+ Text [ dutch ] = "De hoek in radialen." ;
+ Text [ spanish ] = "es el ángulo en radianes." ;
+ Text [ english_us ] = "The angle in a radian" ;
+ Text[ chinese_simplified ] = "Óû¡¶È±íʾµÄ½Ç¶È¡£";
+ Text[ russian ] = "Óãîë â ðàäèàíàõ.";
+ Text[ polish ] = "K¹t wyra¿ony w radianach";
+ Text[ japanese ] = "“x‚É•ÏŠ·‚·‚éŠp“x(×¼Þ±Ý)B";
+ Text[ chinese_traditional ] = "¥Î©·«×ªí¥Üªº¨¤«×¡C";
+ Text[ arabic ] = "ÇáÒÇæíÉ ÈÇáÑÇÏíÇä.";
+ Text[ dutch ] = "De hoek in radialen.";
+ Text[ chinese_simplified ] = "Óû¡¶È±íʾµÄ½Ç¶È¡£";
+ Text[ greek ] = "Ç ãùíßá óå áêôßíéá (Radiant).";
+ Text[ korean ] = "¶óµð¾ÈÀÇ °¢";
+ Text[ turkish ] = "Radyan içindeki açý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function RAD #*=-
+ Resource SC_OPCODE_RAD
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wandelt Grad in Bogenmaß (Radiant) um. : Berechnet die Variantzahl eines Winkels aus einer Gradangabe. */
+ /* ### ACHTUNG: Neuer Text in Resource? Wandelt Grad in Bogenmaß (Radiant) um. : Wandelt Grad in Bogenma˜ (Radiant) um. */
+ Text = "Wandelt Grad in Bogenmaß (Radiant) um." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Wandelt Grad in Bogenmaß (Radiant) um." ;
+ Text [ italian ] = "Converte gradi in radianti." ;
+ Text [ portuguese_brazilian ] = "Wandelt Grad in Bogenmaß (Radiant) um." ;
+ Text [ portuguese ] = "Converte graus em radianos." ;
+ Text [ finnish ] = "Wandelt Grad in Bogenmaß (Radiant) um." ;
+ Text [ danish ] = "Konverterer grader til radianer." ;
+ Text [ french ] = "Convertit des degrés en radians" ;
+ Text [ swedish ] = "Omvandlar grader till radianer." ;
+ Text [ dutch ] = "Converteert graden naar radialen" ;
+ Text [ spanish ] = "Covierte grados en radianes." ;
+ Text [ english_us ] = "Converts degrees to radians" ;
+ Text[ chinese_simplified ] = "½«½Ç¶Èת»»Îª»¡¶È¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò ãðàäóñû â ðàäèàíû.";
+ Text[ polish ] = "Zamienia stopnie na radiany.";
+ Text[ japanese ] = "“x‚ð׼ޱ݂ɕϊ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¨¤«×Âà´«¬°©·«×¡C";
+ Text[ arabic ] = "ÊÍæá ÏÑÌÇÊ Åáì ÑÇÏíÇä.";
+ Text[ dutch ] = "Converteert graden naar radialen";
+ Text[ chinese_simplified ] = "½«½Ç¶Èת»»Îª»¡¶È¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé ìïßñåò óå áêôßíéá.";
+ Text[ korean ] = "°¢µµ¸¦ ¶óµð¾ÈÀ¸·Î º¯È¯ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Dereceyi radyana dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_RAD );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "gradi" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Ângulo" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "grados" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Angle";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "Šp“x";
+ Text[ chinese_traditional ] = "Angle";
+ Text[ arabic ] = "Angle";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Angle";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Winkel in Grad." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Winkel in Grad." ;
+ Text [ italian ] = "L'angolo in gradi." ;
+ Text [ portuguese_brazilian ] = "Der Winkel in Grad." ;
+ Text [ portuguese ] = "é o ângulo em graus que se deseja converter." ;
+ Text [ finnish ] = "Der Winkel in Grad." ;
+ Text [ danish ] = "Vinklen i grader." ;
+ Text [ french ] = "L'angle en degrés." ;
+ Text [ swedish ] = "Vinkeln i grader." ;
+ Text [ dutch ] = "De hoek in graden." ;
+ Text [ spanish ] = "es el ángulo en grados que se desea convertir." ;
+ Text [ english_us ] = "The angle in degrees." ;
+ Text[ chinese_simplified ] = "ÐèҪת»»³É»¡¶ÈµÄ½Ç¶È¡£";
+ Text[ russian ] = "Óãîë â ãðàäóñàõ.";
+ Text[ polish ] = "K¹t wyra¿ony w stopniach.";
+ Text[ japanese ] = "׼ޱ݂ɕϊ·‚·‚éŠp“xB";
+ Text[ chinese_traditional ] = "»Ý­nÂà´«¦¨©·«×ªº¨¤«×¡C";
+ Text[ arabic ] = "ÇáÒÇæíÉ ÈÇáÏÑÌÇÊ ÇáãÑÇÏ ÊÍæíáåÇ.";
+ Text[ dutch ] = "De hoek in graden.";
+ Text[ chinese_simplified ] = "ÐèҪת»»³É»¡¶ÈµÄ½Ç¶È¡£";
+ Text[ greek ] = "Ç ãùíßá óå ìïßñåò.";
+ Text[ korean ] = "µµ·Î ³ªÅ¸³½ °¢ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Derece biriminden açý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function EXP #*=-
+ Resource SC_OPCODE_EXP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet die Exponentialfunktion zur Basis e. : Exponentialfunktion. */
+ Text = "Berechnet die Exponentialfunktion zur Basis e." ;
+ Text [ english ] = "Returns e raised to the power of number." ;
+ Text [ norwegian ] = "Berechnet die Exponentialfunktion zur Basis e." ;
+ Text [ italian ] = "Restituisce l'esponente a base e del numero indicato." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Exponentialfunktion zur Basis e." ;
+ Text [ portuguese ] = "Devolve 'e' elevado à potência de núm." ;
+ Text [ finnish ] = "Berechnet die Exponentialfunktion zur Basis e." ;
+ Text [ danish ] = "Beregner e opløftet til en potens af et tal." ;
+ Text [ french ] = "Renvoie e (2,718) élevé à la puissance spécifiée." ;
+ Text [ swedish ] = "Beräknar exponentialfunktionen för basen e." ;
+ Text [ dutch ] = "Berekent de exponentiële functie tot de basis e." ;
+ Text [ spanish ] = "Devuelve 'e' elevada a la potencia del argumento número." ;
+ Text [ english_us ] = "Calculates the exponent for basis e." ;
+ Text[ chinese_simplified ] = "¼ÆËãµ×ÊýΪ e µÄÖ¸Êýº¯ÊýÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ýêñïîíåíöèàëüíóþ ôóíêöèþ ñ îñíîâàíèåì e.";
+ Text[ polish ] = "Oblicza funkcjê wyk³adnicz¹ podstawy e.";
+ Text[ japanese ] = "e‚ð’ê‚Æ‚·‚é”’l‚ׂ̂«æ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ©³¼Æ¬° e ªº«ü¼Æ¨ç¼Æ­È¡C";
+ Text[ arabic ] = "ÊÑÌÚ e ÇáãÑÝæÚÉ Åáì ÇáÑÞã ÇáãÚØì.";
+ Text[ dutch ] = "Berekent de exponentiële functie tot de basis e.";
+ Text[ chinese_simplified ] = "¼ÆËãµ×ÊýΪ e µÄÖ¸Êýº¯ÊýÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí åêèÝôç ôçò âÜóçò e.";
+ Text[ korean ] = "¹Ø eÀÇ ¸èÁö¼ö °è»ê";
+ Text[ turkish ] = "Sayý e tabanýnýn üssünü alýr.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_EXP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Exponent zur Basis e." ;
+ Text [ english ] = "is the exponent applied to the base e." ;
+ Text [ norwegian ] = "Der Exponent zur Basis e." ;
+ Text [ italian ] = "è l'esponente applicato alla base e." ;
+ Text [ portuguese_brazilian ] = "Der Exponent zur Basis e." ;
+ Text [ portuguese ] = "é o expoente aplicado à base e." ;
+ Text [ finnish ] = "Der Exponent zur Basis e." ;
+ Text [ danish ] = "Eksponenten som anvendes sammen med grundtallet e." ;
+ Text [ french ] = "L'exposant de la base e." ;
+ Text [ swedish ] = "Exponenten för bas e." ;
+ Text [ dutch ] = "De exponent tot de basis e." ;
+ Text [ spanish ] = "Es el exponente aplicado a la base 'e'." ;
+ Text [ english_us ] = "The exponent applied to base e." ;
+ Text[ chinese_simplified ] = "µ×ÊýΪ e µÄÖ¸Êý¡£";
+ Text[ russian ] = "×èñëî, äëÿ êîòîðîãî âû÷èñëÿåòñÿ ýêñïîíåíòà ñ îñíîâàíèåì e.";
+ Text[ polish ] = "Wyk³adnik potêgi o podstawie e.";
+ Text[ japanese ] = "e‚ð’ê‚Æ‚·‚é‚ׂ«æ‚ÌŽw”B";
+ Text[ chinese_traditional ] = "©³¼Æ¬° e ªº«ü¼Æ¡C";
+ Text[ arabic ] = "ÇáÃÓ ÇáãØÈÞ Úáì ÇáÃÓÇÓ e.";
+ Text[ dutch ] = "De exponent tot de basis e.";
+ Text[ chinese_simplified ] = "µ×ÊýΪ e µÄÖ¸Êý¡£";
+ Text[ greek ] = "Ï åêèÝôçò ùò ðñïò ôç âÜóç e.";
+ Text[ korean ] = "¹Ø e¿¡ Àû¿ëµÇ´Â ¸èÁö¼ö.";
+ Text[ turkish ] = "Sayý e tabanýna uygulanan üs.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function LOG #*=-
+ Resource SC_OPCODE_LOG
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Logarithmus zu einer beliebigen Basis. : Logarithmusfunktion. Berechnet den Logarithmus zu einer beliebigen Basis. */
+ Text = "Berechnet den Logarithmus zu einer beliebigen Basis." ;
+ Text [ english ] = "Returns the logarithm of a number to the base you specify." ;
+ Text [ norwegian ] = "Berechnet den Logarithmus zu einer beliebigen Basis." ;
+ Text [ italian ] = "Restituisce il logaritmo di un numero nella base specificata." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Logarithmus zu einer beliebigen Basis." ;
+ Text [ portuguese ] = "Devolve o logaritmo de um número para uma base determinada." ;
+ Text [ finnish ] = "Berechnet den Logarithmus zu einer beliebigen Basis." ;
+ Text [ danish ] = "Beregner logaritmen til et vilkårligt grundtal." ;
+ Text [ french ] = "Renvoie le logarithme d'un nombre dans la base spécifiée." ;
+ Text [ swedish ] = "Beräknar logaritmen med en valfri bas." ;
+ Text [ dutch ] = "Berekent de logaritme tot een willekeurige basis." ;
+ Text [ spanish ] = "Devuelve el logaritmo de un número en la base especificada." ;
+ Text [ english_us ] = "Calculates the logarithm to any specified base." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÖ¸¶¨µ×ÊýµÄÊýµÄ¶ÔÊý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ëîãàðèôì ÷èñëà ïî çàäàííîìó îñíîâàíèþ.";
+ Text[ polish ] = "Oblicza logarytm liczby przy podanej podstawie.";
+ Text[ japanese ] = "Žw’肳‚ꂽ”‚ð’ê‚Æ‚·‚é”’l‚̑Δ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó«ü©w©³¼Æªº¼Æªº¹ï¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ áæÛÇÑíÊã ÑÞã ÈÇáÃÓÇÓ ÇáÐí ÊÍÏÏå.";
+ Text[ dutch ] = "Berekent de logaritme tot een willekeurige basis.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÖ¸¶¨µ×ÊýµÄÊýµÄ¶ÔÊý¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí ëïãÜñéèìï ìå âÜóç Ýíáí äåäïìÝíï áñéèìü.";
+ Text[ korean ] = "ÁöÁ¤µÈ ±â¼öÀÇ ·Î±×¸¦ »êÃâ";
+ Text[ turkish ] = "Herhangi bir tabandaki logaritmayý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_LOG );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert größer als 0, dessen Logarithmus berechnet wird. : Der Wert, dessen Logarithmus bestimmt wird. */
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert größer als 0, dessen Logarithmus berechnet wird. : Ein Wert gr÷˜er als 0, dessen Logarithmus berechnet wird. */
+ Text = "Ein Wert größer als 0, dessen Logarithmus berechnet wird." ;
+ Text [ english ] = "is the positive real number for which you want the logarithm." ;
+ Text [ norwegian ] = "Ein Wert größer als 0, dessen Logarithmus berechnet wird." ;
+ Text [ italian ] = "è il numero reale positivo di cui si desidera calcolare il logaritmo." ;
+ Text [ portuguese_brazilian ] = "Ein Wert größer als 0, dessen Logarithmus berechnet wird." ;
+ Text [ portuguese ] = "é um número real maior que 0 para o qual deseja calcular o logaritmo." ;
+ Text [ finnish ] = "Ein Wert größer als 0, dessen Logarithmus berechnet wird." ;
+ Text [ danish ] = "En værdi større end 0, som logaritmen skal beregnes for." ;
+ Text [ french ] = "Un nombre réel positif dont vous souhaitez obtenir le logarithme." ;
+ Text [ swedish ] = "Ett värde större än 0 vars logaritm beräknas." ;
+ Text [ dutch ] = "De waarde groter dan 0 waarvan de logaritme wordt berekend." ;
+ Text [ spanish ] = "Es el número real positivo cuyo logaritmo desea obtener." ;
+ Text [ english_us ] = "A value greater than 0 for which the logarithm is to be calculated." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä¶ÔÊýµÄÒ»¸ö´óÓÚÁãµÄÊý¡£";
+ Text[ russian ] = "Çíà÷åíèå, áîëüøåå íóëÿ, äëÿ êîòîðîãî âû÷èñëÿåòñÿ ëîãàðèôì.";
+ Text[ polish ] = "Wartoœæ wiêksza od zera, dla której ma zostaæ obliczony logarytm.";
+ Text[ japanese ] = "Ž©‘R‘Δ‚ð‹‚߂鳂̎À”B";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä¹ï¼Æªº¤@­Ó¤j©ó¹sªº¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáÍÞíÞí ÇáÃßÈÑ ãä 0 ÇáÐí ÊÑíÏ ÍÓÇÈ áæÛÇÑíÊãå.";
+ Text[ dutch ] = "De waarde groter dan 0 waarvan de logaritme wordt berekend.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä¶ÔÊýµÄÒ»¸ö´óÓÚÁãµÄÊý¡£";
+ Text[ greek ] = "Ìéá ôéìÞ ìåãáëýôåñç ôïõ 0, ôçò ïðïßáò èá õðïëïãéóôåß ï ëïãÜñéèìïò.";
+ Text[ korean ] = "´ë¼ö°¡ °è»êµÉ 0ÀÌ»óÀÇ °ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Logaritmasý hesaplanan 0'dan büyük deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Basis" ;
+ Text [ english ] = "base" ;
+ Text [ norwegian ] = "Basis" ;
+ Text [ italian ] = "Base" ;
+ Text [ portuguese_brazilian ] = "Basis" ;
+ Text [ portuguese ] = "Base" ;
+ Text [ finnish ] = "Basis" ;
+ Text [ danish ] = "Basis" ;
+ Text [ french ] = "Base" ;
+ Text [ swedish ] = "bas" ;
+ Text [ dutch ] = "Basis" ;
+ Text [ spanish ] = "Base" ;
+ Text [ english_us ] = "Base" ;
+ Text[ chinese_simplified ] = "Base";
+ Text[ russian ] = "Îñíîâàíèå";
+ Text[ polish ] = "Podstawa";
+ Text[ japanese ] = "’ê";
+ Text[ chinese_traditional ] = "Base";
+ Text[ arabic ] = "Base";
+ Text[ dutch ] = "Basis";
+ Text[ chinese_simplified ] = "Base";
+ Text[ greek ] = "ÂÜóç";
+ Text[ korean ] = "±âÃÊ";
+ Text[ turkish ] = "Taban";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Basis für die Logarithmusberechnung. : Die Basis f³r die Logarithmusberechnung. */
+ Text = "Die Basis für die Logarithmusberechnung." ;
+ Text [ english ] = "is the base of the logarithm." ;
+ Text [ norwegian ] = "Die Basis für die Logarithmusberechnung." ;
+ Text [ italian ] = "è la base del logaritmo." ;
+ Text [ portuguese_brazilian ] = "Die Basis für die Logarithmusberechnung." ;
+ Text [ portuguese ] = "é a base para o cálculo do logaritmo." ;
+ Text [ finnish ] = "Die Basis für die Logarithmusberechnung." ;
+ Text [ danish ] = "Logaritmens grundtal." ;
+ Text [ french ] = "La base pour le calcul du logarithme." ;
+ Text [ swedish ] = "Basen för logaritmberäkningen." ;
+ Text [ dutch ] = "De basis voor de logaritmeberekening." ;
+ Text [ spanish ] = "Es la base del logaritmo." ;
+ Text [ english_us ] = "The base of the logarithm." ;
+ Text[ chinese_simplified ] = "¶ÔÊýµÄµ×Êý¡£";
+ Text[ russian ] = "Îñíîâàíèå ëîãàðèôìà.";
+ Text[ polish ] = "Podstawa dla obliczenia logarytmu.";
+ Text[ japanese ] = "‘Δ‚Ì’êB";
+ Text[ chinese_traditional ] = "¹ï¼Æªº©³¼Æ¡C";
+ Text[ arabic ] = "ÃÓÇÓ ÇááæÛÇÑíÊã.";
+ Text[ dutch ] = "De basis voor de logaritmeberekening.";
+ Text[ chinese_simplified ] = "¶ÔÊýµÄµ×Êý¡£";
+ Text[ greek ] = "Ç âÜóç ãéá ôïí õðïëïãéóìü ôïõ ëïãáñßèìïõ.";
+ Text[ korean ] = "´ë¼ö °è»êÀÇ ±âÃÊ";
+ Text[ turkish ] = "Logaritma hesabýnýn tabaný.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function LN #*=-
+ Resource SC_OPCODE_LN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den natürlichen Logarithmus einer Zahl. : Natürlicher Logarithmus. Berechnet den Logarithmus zu der Basis e. */
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den natürlichen Logarithmus einer Zahl. : Berechnet den nat³rlichen Logarithmus einer Zahl. */
+ Text = "Berechnet den natürlichen Logarithmus einer Zahl." ;
+ Text [ english ] = "Returns the natural logarithm of a number." ;
+ Text [ norwegian ] = "Berechnet den natürlichen Logarithmus einer Zahl." ;
+ Text [ italian ] = "Restituisce il logaritmo naturale di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den natürlichen Logarithmus einer Zahl." ;
+ Text [ portuguese ] = "Devolve o logaritmo natural de um número." ;
+ Text [ finnish ] = "Berechnet den natürlichen Logarithmus einer Zahl." ;
+ Text [ danish ] = "Beregner et tals naturlige logaritme." ;
+ Text [ french ] = "Donne le logarithme népérien d'un nombre." ;
+ Text [ swedish ] = "Beräknar den naturliga logaritmen för ett tal." ;
+ Text [ dutch ] = "Berekent de natuurlijke logaritme van een getal." ;
+ Text [ spanish ] = "Devuelve el logaritmo natural de un número." ;
+ Text [ english_us ] = "Calculates the natural logarithm of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ×ÔÈ»¶ÔÊý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò íàòóðàëüíûé ëîãàðèôì ÷èñëà.";
+ Text[ polish ] = "Oblicza logarytm naturalny podanej liczby.";
+ Text[ japanese ] = "”’l‚ÌŽ©‘R‘Δ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¦ÛµM¹ï¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇááæÛÇÑíÊã ÇáØÈíÚí áÑÞã.";
+ Text[ dutch ] = "Berekent de natuurlijke logaritme van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ×ÔÈ»¶ÔÊý¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí öõóéêü ëïãÜñéèìï åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ ·Î±×¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Sayýnýn doðal logaritmasýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_LN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert größer als 0, dessen natürlicher Logarithmus berechnet wird. : Der Wert, dessen natürlicher Logarithmus bestimmt wird. */
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert größer als 0, dessen natürlicher Logarithmus berechnet wird. : Ein Wert gr÷˜er als 0, dessen nat³rlicher Logarithmus berechnet wird. */
+ Text = "Ein Wert größer als 0, dessen natürlicher Logarithmus berechnet wird." ;
+ Text [ english ] = "is the positive real number for which you want the natural logarithm." ;
+ Text [ norwegian ] = "Ein Wert größer als 0, dessen natürlicher Logarithmus berechnet wird." ;
+ Text [ italian ] = "è il numero reale positivo di cui si desidera calcolare il logaritmo naturale." ;
+ Text [ portuguese_brazilian ] = "Ein Wert größer als 0, dessen natürlicher Logarithmus berechnet wird." ;
+ Text [ portuguese ] = "é um número real maior que 0 para o qual deseja calcular o logaritmo." ;
+ Text [ finnish ] = "Ein Wert größer als 0, dessen natürlicher Logarithmus berechnet wird." ;
+ Text [ danish ] = "En værdi større end 0, som den naturlige logaritme skal beregnes for." ;
+ Text [ french ] = "Un nombre réel positif dont vous souhaitez obtenir le logarithme népérien." ;
+ Text [ swedish ] = "Ett värde större än 0 vars naturliga logaritm beräknas." ;
+ Text [ dutch ] = "Een waarde groter dan 0, waarvan de natuurlijke logaritme wordt berekend." ;
+ Text [ spanish ] = "Es el número real mayor que 0 cuyo logaritmo natural desea obtener." ;
+ Text [ english_us ] = "A value greater than 0 for which the natural logarithm is to be calculated." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö´óÓÚÁãµÄÊýµÄ×ÔÈ»¶ÔÊý¡£";
+ Text[ russian ] = "Çíà÷åíèå, áîëüøåå íóëÿ, äëÿ êîòîðîãî âû÷èñëÿåòñÿ íàòóðàëüíûé ëîãàðèôì.";
+ Text[ polish ] = "Wartoœæ wiêksza od zera, dla której ma zostaæ obliczony logarytm naturalny.";
+ Text[ japanese ] = "Ž©‘R‘Δ‚ð‹‚߂鳂̎À”B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¤j©ó¹sªº¼Æªº¦ÛµM¹ï¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÚã ÇáÍÞíÞí ÇáÃßÈÑ ãä 0 ÇáÐí ÊÑíÏ ÍÓÇÈ ÇááæÛÇÑíÊã ÇáØÈíÚí áå.";
+ Text[ dutch ] = "Een waarde groter dan 0, waarvan de natuurlijke logaritme wordt berekend.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö´óÓÚÁãµÄÊýµÄ×ÔÈ»¶ÔÊý¡£";
+ Text[ greek ] = "Ìéá ôéìÞ ìåãáëýôåñç ôïõ 0, ôçò ïðïßáò èá õðïëïãéóôåß ï öõóéêüò ëïãÜñéèìïò.";
+ Text[ korean ] = "0ÀÌ»óÀÇ °ªÀÌ¸ç ±× ÀÚ¿¬ ´ë¼ö°¡ °è»êµË´Ï´Ù.";
+ Text[ turkish ] = "Doðal logaritmasý hesaplanan 0'dan büyük deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function LOG10 #*=-
+ Resource SC_OPCODE_LOG10
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Logarithmus zu der Basis 10. : Zehnerlogarithmus. Berechnet den Logarithmus zu der Basis 10. */
+ Text = "Berechnet den Logarithmus zu der Basis 10." ;
+ Text [ english ] = "Returns the base-10 logarithm of a number." ;
+ Text [ norwegian ] = "Berechnet den Logarithmus zu der Basis 10." ;
+ Text [ italian ] = "Restituisce il logaritmo in base 10 di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Logarithmus zu der Basis 10." ;
+ Text [ portuguese ] = "Devolve o logaritmo de base 10 de um número." ;
+ Text [ finnish ] = "Berechnet den Logarithmus zu der Basis 10." ;
+ Text [ danish ] = "Beregner titalslogaritmen for et tal." ;
+ Text [ french ] = "Calcule le logarithme en base 10 d'un nombre." ;
+ Text [ swedish ] = "Beräknar logaritmen med basen 10." ;
+ Text [ dutch ] = "Berekent de logaritme tot de basis 10." ;
+ Text [ spanish ] = "Devuelve el logaritmo en base 10 de un número." ;
+ Text [ english_us ] = "Calculates the base-10 logarithm of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãµ×ÊýΪ 10 µÄ¶ÔÊý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò äåñÿòè÷íûé ëîãàðèôì ÷èñëà.";
+ Text[ polish ] = "Oblicza logarytm dziesiêtny podanej liczby.";
+ Text[ japanese ] = "10‚ð’ê‚Æ‚·‚é”’l‚̑Δ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ©³¼Æ¬° 10 ªº¹ï¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇááæÛÇÑíÊã ÇáÚÔÑí áÑÞã.";
+ Text[ dutch ] = "Berekent de logaritme tot de basis 10.";
+ Text[ chinese_simplified ] = "¼ÆËãµ×ÊýΪ 10 µÄ¶ÔÊý¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí ëïãÜñéèìï ìå âÜóç 10.";
+ Text[ korean ] = "±âÃÊ 10¿¡ ´ëÇÑ ´ë¼ö¸¦ °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Bir sayýnýn 10 tabanýnda logaritmasýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_LOG10 );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert größer als 0, dessen Logarithmus berechnet wird. : Der Wert, dessen Logarithmus bestimmt wird. */
+ /* ### ACHTUNG: Neuer Text in Resource? Ein Wert größer als 0, dessen Logarithmus berechnet wird. : Ein Wert gr÷˜er als 0, dessen Logarithmus berechnet wird. */
+ Text = "Ein Wert größer als 0, dessen Logarithmus berechnet wird." ;
+ Text [ english ] = "is the positive real number for which you want the base-10 logarithm." ;
+ Text [ norwegian ] = "Ein Wert größer als 0, dessen Logarithmus berechnet wird." ;
+ Text [ italian ] = "è il numero reale positivo di cui si desidera calcolare il logaritmo in base 10." ;
+ Text [ portuguese_brazilian ] = "Ein Wert größer als 0, dessen Logarithmus berechnet wird." ;
+ Text [ portuguese ] = "é um número real maior que 0 para o qual deseja calcular o logaritmo." ;
+ Text [ finnish ] = "Ein Wert größer als 0, dessen Logarithmus berechnet wird." ;
+ Text [ danish ] = "En værdi større end 0, som logaritmen skal beregnes for." ;
+ Text [ french ] = "Un nombre réel positif dont vous souhaitez obtenir le logarithme." ;
+ Text [ swedish ] = "Ett värde större än 0 vars logaritm beräknas." ;
+ Text [ dutch ] = "De waarde groter dan 0 waarvan de logaritme wordt berekend." ;
+ Text [ spanish ] = "Un valor mayor que 0 cuyo logaritmo desea obtener." ;
+ Text [ english_us ] = "A value greater than 0 for which the logarithm is to be calculated." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ³£ÓöÔÊý¼ÆËãµÄÕýʵÊý¡£";
+ Text[ russian ] = "Çíà÷åíèå, áîëüøåå íóëÿ, äëÿ êîòîðîãî âû÷èñëÿåòñÿ ëîãàðèôì.";
+ Text[ polish ] = "Wartoœæ wiêksza od zera, dla której ma zostaæ obliczony logarytm.";
+ Text[ japanese ] = "Ž©‘R‘Δ‚ð‹‚߂鳂̎À”B";
+ Text[ chinese_traditional ] = "¥Î©ó±`¥Î¹ï¼Æ­pºâªº¥¿¹ê¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáÍÞíÞí ÇáÃßÈÑ ãä 0 ÇáÐí ÊÑíÏ ÍÓÇÈ áæÛÇÑíÊãå ÇáÚÔÑí.";
+ Text[ dutch ] = "De waarde groter dan 0 waarvan de logaritme wordt berekend.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ³£ÓöÔÊý¼ÆËãµÄÕýʵÊý¡£";
+ Text[ greek ] = "Ìéá ôéìÞ ìåãáëýôåñç ôïõ 0, ôçò ïðïßáò èá õðïëïãéóôåß ï ëïãÜñéèìïò.";
+ Text[ korean ] = "´ë¼ö°¡ °è»êµÉ 0ÀÌ»óÀÇ °ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Logaritmasý hesaplanan 0'dan büyük deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function FAKULTÄT #*=-
+ Resource SC_OPCODE_FACT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet die Fakultät einer Zahl. : Berechnet die Fakultõt einer Zahl. */
+ Text = "Berechnet die Fakultät einer Zahl." ;
+ Text [ english ] = "Returns the factorial of a number." ;
+ Text [ norwegian ] = "Berechnet die Fakultät einer Zahl." ;
+ Text [ italian ] = "Restituisce il fattoriale di un numero." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Fakultät einer Zahl." ;
+ Text [ portuguese ] = "Calcula o factorial de um número." ;
+ Text [ finnish ] = "Berechnet die Fakultät einer Zahl." ;
+ Text [ danish ] = "Beregner et tals fakultet." ;
+ Text [ french ] = "Donne la factorielle d'un nombre." ;
+ Text [ swedish ] = "Beräknar fakulteten av ett tal." ;
+ Text [ dutch ] = "Berekent de faculteit van een getal." ;
+ Text [ spanish ] = "Calcula el factorial de un número." ;
+ Text [ english_us ] = "Calculates the factorial of a number." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ½×³Ë¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ôàêòîðèàë ÷èñëà.";
+ Text[ polish ] = "Oblicza silniê liczby.";
+ Text[ japanese ] = "”’l‚ÌŠKæ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æªº¶¥­¼¡C";
+ Text[ arabic ] = "ÊÍÓÈ ãÖÑæÈ ÑÞã.";
+ Text[ dutch ] = "Berekent de faculteit van een getal.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýµÄ½×³Ë¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ðáñáãïíôéêü åíüò áñéèìïý.";
+ Text[ korean ] = "¼öÀÇ °è½ÂÀ» °è»ê";
+ Text[ turkish ] = "Sayýnýn çarpýmýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_FAKULTAET );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Zahl, deren Fakultät berechnet wird. : Die Zahl, deren Fakultõt berechnet wird. */
+ Text = "Die Zahl, deren Fakultät berechnet wird." ;
+ Text [ english ] = "is the nonnegative number you want the factorial of. If number is not an integer, it is truncated." ;
+ Text [ norwegian ] = "Die Zahl, deren Fakultät berechnet wird." ;
+ Text [ italian ] = "è il numero non negativo di cui si desidera calcolare il fattoriale." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, deren Fakultät berechnet wird." ;
+ Text [ portuguese ] = "é um número positivo do qual deseja obter o factorial." ;
+ Text [ finnish ] = "Die Zahl, deren Fakultät berechnet wird." ;
+ Text [ danish ] = "Det tal fakultetet skal beregnesfor." ;
+ Text [ french ] = "Le nombre dont vous voulez obtenir la factorielle." ;
+ Text [ swedish ] = "Talet vars fakultet beräknas." ;
+ Text [ dutch ] = "Het getal waarvan de faculteit berekend wordt." ;
+ Text [ spanish ] = "Es el número cuyo factorial se desea obtener." ;
+ Text [ english_us ] = "The number for which the factorial is to be calculated." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä½×³ËµÄ·Ç¸ºÊý¡£";
+ Text[ russian ] = "×èñëî, äëÿ êîòîðîãî âû÷èñëÿåòñÿ ôàêòîðèàë.";
+ Text[ polish ] = "Liczba, której silnia ma zostaæ obliczona.";
+ Text[ japanese ] = "ŠKæ‚ð‹‚ß‚é”’lB";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä¶¥­¼ªº«D­t¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ãÚÑÝÉ ãÖÑæÈå.";
+ Text[ dutch ] = "Het getal waarvan de faculteit berekend wordt.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä½×³ËµÄ·Ç¸ºÊý¡£";
+ Text[ greek ] = "Ï áñéèìüò ôïõ ïðïßïõ èá õðïëïãéóôåß ôï ðáñáãïíôéêü ôïõ.";
+ Text[ korean ] = "°è½ÂÀ¸·Î °è»êµÉ ¼ö";
+ Text[ turkish ] = "Çarpýmý hesaplanan sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function REST #*=-
+ Resource SC_OPCODE_MOD
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den Rest einer Division." ;
+ Text [ english ] = "Returns the remainder after number is divided by divisor." ;
+ Text [ norwegian ] = "Berechnet den Rest einer Division." ;
+ Text [ italian ] = "Restituisce il resto della divisione del dividendo per il divisore." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Rest einer Division." ;
+ Text [ portuguese ] = "Devolve o resto de uma divisão." ;
+ Text [ finnish ] = "Berechnet den Rest einer Division." ;
+ Text [ danish ] = "Beregner resten efter en division." ;
+ Text [ french ] = "Donne le reste d'une division." ;
+ Text [ swedish ] = "Beräknar resten av en division." ;
+ Text [ dutch ] = "Bepaalt het restgetal van een deling." ;
+ Text [ spanish ] = "Devuelve el residuo o resto de una división." ;
+ Text [ english_us ] = "Calculates the remainder of a division." ;
+ Text[ chinese_simplified ] = "¼ÆËãÓàÊý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò îñòàòîê îò äåëåíèÿ.";
+ Text[ polish ] = "Oblicza resztê z dzielenia.";
+ Text[ japanese ] = "”’l‚𜔂Ŋ„‚Á‚½—]‚è‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ§E¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÈÇÞí ÇáÞÓãÉ.";
+ Text[ dutch ] = "Bepaalt het restgetal van een deling.";
+ Text[ chinese_simplified ] = "¼ÆËãÓàÊý¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï õðüëïéðï ìéáò äéáßñåóçò.";
+ Text[ korean ] = "³ª´©±âÀÇ ³ª¸ÓÁö¸¦ »êÃâ";
+ Text[ turkish ] = "Bölüm iþleminden kalaný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_REST );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Dividend" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Divident" ;
+ Text [ italian ] = "dividendo" ;
+ Text [ portuguese_brazilian ] = "Divident" ;
+ Text [ portuguese ] = "Dividendo" ;
+ Text [ finnish ] = "Divident" ;
+ Text [ danish ] = "Dividend" ;
+ Text [ french ] = "Dividende" ;
+ Text [ swedish ] = "dividend" ;
+ Text [ dutch ] = "Dividend" ;
+ Text [ spanish ] = "Dividendo" ;
+ Text [ english_us ] = "Dividend" ;
+ Text[ chinese_simplified ] = "Dividend";
+ Text[ russian ] = "Äåëèìîå";
+ Text[ polish ] = "Dzielna";
+ Text[ japanese ] = "”휔";
+ Text[ chinese_traditional ] = "Dividend";
+ Text[ arabic ] = "Dividend";
+ Text[ dutch ] = "Dividend";
+ Text[ chinese_simplified ] = "Dividend";
+ Text[ greek ] = "ÄéáéñåôÝïò";
+ Text[ korean ] = "ÇÇÁ¦¼ö";
+ Text[ turkish ] = "Kar payý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die geteilt wird." ;
+ Text [ english ] = "is the number for which you want to find the remainder." ;
+ Text [ norwegian ] = "Die Zahl, die geteilt wird." ;
+ Text [ italian ] = "è il numero che viene diviso." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die geteilt wird." ;
+ Text [ portuguese ] = "é o número a ser dividido." ;
+ Text [ finnish ] = "Die Zahl, die geteilt wird." ;
+ Text [ danish ] = "Det tal som skal divideres." ;
+ Text [ french ] = "Le nombre à diviser." ;
+ Text [ swedish ] = "Talet som divideras." ;
+ Text [ dutch ] = "Het getal dat wordt gedeeld." ;
+ Text [ spanish ] = "es el número que desea dividir y para el cual desea encontrar el residuo." ;
+ Text [ english_us ] = "The number to be divided." ;
+ Text[ chinese_simplified ] = "±»³ýÊý¡£";
+ Text[ russian ] = "×èñëî, êîòîðîå äåëèòñÿ, è îñòàòîê îò äåëåíèÿ êîòîðîãî îïðåäåëÿåòñÿ.";
+ Text[ polish ] = "Liczba, która zostanie podzielona.";
+ Text[ japanese ] = "Š„‚ç‚ê‚é”";
+ Text[ chinese_traditional ] = "³Q°£¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ãÚÑÝÉ ÇáãÊÈÞí ãäå ÈÚÏ ÊÞÓíãå.";
+ Text[ dutch ] = "Het getal dat wordt gedeeld.";
+ Text[ chinese_simplified ] = "±»³ýÊý¡£";
+ Text[ greek ] = "Ï áñéèìüò ðïõ äéáéñåßôáé.";
+ Text[ korean ] = "³ª´²Áö´Â ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Bölünen sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Divisor" ;
+ Text [ english ] = "divisor" ;
+ Text [ norwegian ] = "Divisor" ;
+ Text [ italian ] = "divisore" ;
+ Text [ portuguese_brazilian ] = "Divisor" ;
+ Text [ portuguese ] = "Divisor" ;
+ Text [ finnish ] = "Divisor" ;
+ Text [ danish ] = "Divisor" ;
+ Text [ french ] = "Diviseur" ;
+ Text [ swedish ] = "divisor" ;
+ Text [ dutch ] = "Deler" ;
+ Text [ spanish ] = "Divisor" ;
+ Text [ english_us ] = "Divisor" ;
+ Text[ chinese_simplified ] = "Divisor";
+ Text[ russian ] = "Äåëèòåëü";
+ Text[ polish ] = "Dzielnik";
+ Text[ japanese ] = "œ”";
+ Text[ chinese_traditional ] = "Divisor";
+ Text[ arabic ] = "Divisor";
+ Text[ dutch ] = "Deler";
+ Text[ chinese_simplified ] = "Divisor";
+ Text[ greek ] = "ÄéáéñÝôçò";
+ Text[ korean ] = "Á¦¼ö";
+ Text[ turkish ] = "Bölen";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Zahl, durch die geteilt wird." ;
+ Text [ english ] = "is the number by which you want to divide number." ;
+ Text [ norwegian ] = "Die Zahl, durch die geteilt wird." ;
+ Text [ italian ] = "è il numero per il quale si desidera dividere il dividendo." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, durch die geteilt wird." ;
+ Text [ portuguese ] = "é o número de divisão." ;
+ Text [ finnish ] = "Die Zahl, durch die geteilt wird." ;
+ Text [ danish ] = "Det tal som skal divideres med." ;
+ Text [ french ] = "Le nombre par lequel diviser." ;
+ Text [ swedish ] = "Talet som det divideras med." ;
+ Text [ dutch ] = "Het getal waardoor wordt gedeeld." ;
+ Text [ spanish ] = "es el número por el cual desea dividir el número." ;
+ Text [ english_us ] = "The number by which the dividend is divided." ;
+ Text[ chinese_simplified ] = "³ýÊý¡£";
+ Text[ russian ] = "×èñëî, íà êîòîðîå íåîáõîäèìî ðàçäåëèòü.";
+ Text[ polish ] = "Liczba, przez któr¹ siê dzieli.";
+ Text[ japanese ] = "Š„‚é”";
+ Text[ chinese_traditional ] = "°£¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáÐí ÊÑíÏ ÇáÞÓãÉ Úáíå.";
+ Text[ dutch ] = "Het getal waardoor wordt gedeeld.";
+ Text[ chinese_simplified ] = "³ýÊý¡£";
+ Text[ greek ] = "Ï áñéèìüò äéá ôïõ ïðïßïõ èá äéáéñåèåß.";
+ Text[ korean ] = "³ª´²Áö´Â ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Bölen sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VORZEICHEN #*=-
+ Resource SC_OPCODE_PLUS_MINUS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Liefert das Vorzeichen einer Zahl. : Die Signum Funktion. Berechnet das Vorzeichen einer Zahl. */
+ Text = "Liefert das Vorzeichen einer Zahl." ;
+ Text [ english ] = "Determines the sign of a number." ;
+ Text [ norwegian ] = "Liefert das Vorzeichen einer Zahl." ;
+ Text [ italian ] = "Restituisce il segno di un numero." ;
+ Text [ portuguese_brazilian ] = "Liefert das Vorzeichen einer Zahl." ;
+ Text [ portuguese ] = "Determina o sinal de um número." ;
+ Text [ finnish ] = "Liefert das Vorzeichen einer Zahl." ;
+ Text [ danish ] = "Returnerer et tals fortegn." ;
+ Text [ french ] = "Donne le signe d'un nombre." ;
+ Text [ swedish ] = "Returnerar förtecknet för ett tal." ;
+ Text [ dutch ] = "Berekent of een getal positief of negatief is." ;
+ Text [ spanish ] = "Devuelve el signo de un número." ;
+ Text [ english_us ] = "Returns the algebraic sign of a number." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÊý×ÖµÄÕý¸º·ûºÅ¡£";
+ Text[ russian ] = "Âîçâðàùàåò çíàê ÷èñëà.";
+ Text[ polish ] = "Okreœla znak liczby.";
+ Text[ japanese ] = "”’l‚̳•‰‚𒲂ׂ܂·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó¼Æ¦rªº¥¿­t²Å¸¹¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÅÔÇÑÉ ÑÞã.";
+ Text[ dutch ] = "Berekent of een getal positief of negatief is.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÊý×ÖµÄÕý¸º·ûºÅ¡£";
+ Text[ greek ] = "Äßíåé ôï ðñüóçìï åíüò áñéèìïý";
+ Text[ korean ] = "¼öÀÇ ´ë¼ö ±âÈ£¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Sayýnýn iþaretini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_VORZEICHEN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, deren Vorzeichen bestimmt wird." ;
+ Text [ english ] = "is any real number." ;
+ Text [ norwegian ] = "Die Zahl, deren Vorzeichen bestimmt wird." ;
+ Text [ italian ] = "è un numero reale qualsiasi." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, deren Vorzeichen bestimmt wird." ;
+ Text [ portuguese ] = "é qualquer número real." ;
+ Text [ finnish ] = "Die Zahl, deren Vorzeichen bestimmt wird." ;
+ Text [ danish ] = "Det tal hvis fortegn skal bestemmes." ;
+ Text [ french ] = "Le nombre réel dont vous souhaitez déterminer le signe." ;
+ Text [ swedish ] = "Talet vars förtecken bestäms." ;
+ Text [ dutch ] = "Het getal waarvan het voorteken wordt bepaald." ;
+ Text [ spanish ] = "es un número real cuyo signo desea saber." ;
+ Text [ english_us ] = "The number for which the algebraic sign is to be determined." ;
+ Text[ chinese_simplified ] = "ÐèҪȷ¶¨·ûºÅµÄÊý×Ö¡£";
+ Text[ russian ] = "×èñëî, çíàê êîòîðîãî îïðåäåëÿåòñÿ.";
+ Text[ polish ] = "Liczba, której znak ma zostaæ okreœlony.";
+ Text[ japanese ] = "³•‰‚𒲂ׂ锒lB";
+ Text[ chinese_traditional ] = "»Ý­n½T©w²Å¸¹ªº¼Æ¦r¡C";
+ Text[ arabic ] = "Ãí ÑÞã ÍÞíÞí.";
+ Text[ dutch ] = "Het getal waarvan het voorteken wordt bepaald.";
+ Text[ chinese_simplified ] = "ÐèҪȷ¶¨·ûºÅµÄÊý×Ö¡£";
+ Text[ greek ] = "Ï áñéèìüò ôïõ ïðïßïõ èá ïñéóôåß ôï ðñüóçìï ôïõ.";
+ Text[ korean ] = "´ë¼ö ºÎÈ£°¡ ÁöÁ¤µÉ ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýþareti belirlenen sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TEILERGEBNIS #*=-
+ Resource SC_OPCODE_SUB_TOTAL
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Funktion zur Berechnung von Zwischenergebnissen in Tabellen." ;
+ Text [ english ] = "Returns a subtotal in a list or database." ;
+ Text [ norwegian ] = "Funktion zur Berechnung von Zwischenergebnissen in Tabellen." ;
+ Text [ italian ] = "Restituisce un subtotale in un elenco o in un database." ;
+ Text [ portuguese_brazilian ] = "Funktion zur Berechnung von Zwischenergebnissen in Tabellen." ;
+ Text [ portuguese ] = "Calcula subtotais numa folha de cálculo ou base de dados." ;
+ Text [ finnish ] = "Funktion zur Berechnung von Zwischenergebnissen in Tabellen." ;
+ Text [ danish ] = "Funktion til beregning af subtotaler i tabeller." ;
+ Text [ french ] = "Renvoie un sous-total dans une feuille de calcul ou table de base de données." ;
+ Text [ swedish ] = "Funktion för beräkning av delresultat i tabeller." ;
+ Text [ dutch ] = "Functie ter berekening van subtotalen in werkbladen" ;
+ Text [ spanish ] = "Devuelve un subtotal en una hoja de cálculo." ;
+ Text [ english_us ] = "Calculates subtotals in a spreadsheet." ;
+ Text[ chinese_simplified ] = "¼ÆËãÊý¾Ýµ¥»òÊý¾Ý¿âÖеķÖÀà»ã×Ü¡£";
+ Text[ russian ] = "Ôóíêöèÿ äëÿ ïîäâåäåíèÿ ïðîìåæóòî÷íûõ èòîãîâ â ýëåêòðîííîé òàáëèöå èëè áàçå äàííûõ.";
+ Text[ polish ] = "Funkcja do obliczania sum poœrednich w arkuszach kalkulacyjnych.";
+ Text[ japanese ] = "•\\‚Ü‚½‚ÍؽĂÌWŒv’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¸ê®Æ³æ©Î¸ê®Æ®w¤¤ªº¤p­p¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáãÌÇãíÚ ÇáÝÑÚíÉ Ýí ÌÏæá Ãæ ÞÇÚÏÉ ÈíÇäÇÊ.";
+ Text[ dutch ] = "Functie ter berekening van subtotalen in werkbladen";
+ Text[ chinese_simplified ] = "¼ÆËãÊý¾Ýµ¥»òÊý¾Ý¿âÖеķÖÀà»ã×Ü¡£";
+ Text[ greek ] = "ÓõíÜñôçóç ãéá ôïí õðïëïãéóìü ôùí ìåñéêþí áðïôåëåóìÜôùí óå ðßíáêåò.";
+ Text[ korean ] = "½ºÇÁ·¹µå ½ÃÆ®¿¡¼­ ¼Ò°è °è»ê";
+ Text[ turkish ] = "Tablolarda ara toplam hesaplama fonksiyonu.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_TEILERGEBNIS );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Funktion" ;
+ Text [ english ] = "function_num" ;
+ Text [ norwegian ] = "Funktion" ;
+ Text [ italian ] = "num_funzione" ;
+ Text [ portuguese_brazilian ] = "Funktion" ;
+ Text [ portuguese ] = "Núm_função" ;
+ Text [ finnish ] = "Funktion" ;
+ Text [ danish ] = "Funktion" ;
+ Text [ french ] = "Fonction" ;
+ Text [ swedish ] = "funktion" ;
+ Text [ dutch ] = "Functie" ;
+ Text [ spanish ] = "núm_función" ;
+ Text [ english_us ] = "Function" ;
+ Text[ chinese_simplified ] = "function";
+ Text[ russian ] = "Íîìåð_ôóíêöèè";
+ Text[ polish ] = "Funkcja";
+ Text[ japanese ] = "ŠÖ”";
+ Text[ chinese_traditional ] = "function";
+ Text[ arabic ] = "Function_num";
+ Text[ dutch ] = "Functie";
+ Text[ chinese_simplified ] = "function";
+ Text[ greek ] = "function_num";
+ Text[ korean ] = "ÇÔ¼ö";
+ Text[ turkish ] = "Fonksiyon";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Funktionsindex. Ist ein Index auf die möglichen Funktion Summe, Max, ... : Funktionsindex. Ist ein Index auf die m÷glichen Funktion Summe, Max, ... */
+ Text = "Funktionsindex. Ist ein Index auf die möglichen Funktion Summe, Max, ..." ;
+ Text [ english ] = "is the number 1 to 11 that specifies which function to use in calculating subtotals within a list." ;
+ Text [ norwegian ] = "Funktionsindex. Ist ein Index auf die möglichen Funktion Summe, Max, ..." ;
+ Text [ italian ] = "è l'indice che specifica quale delle funzioni possibili utilizzare" ;
+ Text [ portuguese_brazilian ] = "Funktionsindex. Ist ein Index auf die möglichen Funktion Summe, Max, ..." ;
+ Text [ portuguese ] = "é um número de 1 a 11 que determina qual a função a ser usada para o cálculo dos subtotais de uma lista." ;
+ Text [ finnish ] = "Funktionsindex. Ist ein Index auf die möglichen Funktion Summe, Max, ..." ;
+ Text [ danish ] = "Funktionsindeks. Et indeks for den mulige funktion sum, maks, ..." ;
+ Text [ french ] = "Un nombre compris entre 1 et 11 indiquant quelle fonction utiliser pour calculer les sous-totaux d'une liste." ;
+ Text [ swedish ] = "Funktionsindex. Är ett index för den möjliga funktionen summa, max." ;
+ Text [ dutch ] = "Functie index. Een index van de mogelijke functie Som, Max, ..." ;
+ Text [ spanish ] = "es un número que indica qué función debe ser utilizada." ;
+ Text [ english_us ] = "Function index. Is an index of the possible functions Total, Max, ..." ;
+ Text[ chinese_simplified ] = "º¯ÊýË÷Òý£¬ÓÃÓÚÖ¸¶¨Ê¹Óõĺ¯Êý£¬Èç Sum, Max µÈ¡£";
+ Text[ russian ] = "×èñëî, êîòîðîå óêàçûâàåò, êàêóþ ôóíêöèþ èñïîëüçîâàòü ïðè ïîäâåäåíèè ïðîìåæóòî÷íûõ èòîãîâ âíóòðè ñïèñêà.";
+ Text[ polish ] = "Indeks funkcji okreœlaj¹cy mo¿liwe funkcje.";
+ Text[ japanese ] = "ŠÖ”²ÝÃÞ¯¸½BŽg—p‚·‚éŠÖ”‚̲ÝÃÞ¯¸½B";
+ Text[ chinese_traditional ] = "¨ç¼Æ°Ñ·Ó¡C¥Î©ó«ü©w¨Ï¥Îªº¨ç¼Æ¡A¦p SUM¡AMAX µ¥¡C";
+ Text[ arabic ] = "ÑÞã ãä 1 Åáì 11 íÍÏÏ ÏÇáÉ ÇáÊáÎíÕ ááãÌãæÚ ÇáÝÑÚí.";
+ Text[ dutch ] = "Functie index. Een index van de mogelijke functie Som, Max, ...";
+ Text[ chinese_simplified ] = "º¯ÊýË÷Òý£¬ÓÃÓÚÖ¸¶¨Ê¹Óõĺ¯Êý£¬Èç Sum, Max µÈ¡£";
+ Text[ greek ] = "ÅõñåôÞñéï óõíáñôÞóåùí. ÅõñåôÞñéï ìå ôéò ðéèáíÝò óõíáñôÞóåéò Total, Max, ...";
+ Text[ korean ] = "ÇÔ¼ö »öÀÎ. Àüü, ÃÖ´ë... µî °¡´ÉÇÑ ÇÔ¼öÀÇ »öÀÎ";
+ Text[ turkish ] = "Fonksiyon dizini. Muhtemel fonksiyonlar Sum, Max ile ilgili bir dizindir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Bereich " ;
+ Text [ english ] = "ref1" ;
+ Text [ norwegian ] = "Bereich " ;
+ Text [ italian ] = "Area " ;
+ Text [ portuguese_brazilian ] = "Bereich " ;
+ Text [ portuguese ] = "Intervalo " ;
+ Text [ finnish ] = "Bereich " ;
+ Text [ danish ] = "Område " ;
+ Text [ french ] = "Plage " ;
+ Text [ swedish ] = "område " ;
+ Text [ dutch ] = "Bereik " ;
+ Text [ spanish ] = "ref1 " ;
+ Text [ english_us ] = "range " ;
+ Text[ chinese_simplified ] = "Range ";
+ Text[ russian ] = "Äèàïàçîí ";
+ Text[ polish ] = "Zakres ";
+ Text[ japanese ] = "”ÍˆÍ ";
+ Text[ chinese_traditional ] = "Range ";
+ Text[ arabic ] = "Range ";
+ Text[ dutch ] = "Bereik ";
+ Text[ chinese_simplified ] = "Range ";
+ Text[ greek ] = "Ðåñéï÷Þ ";
+ Text[ korean ] = "¿µ¿ª ";
+ Text[ turkish ] = "Aralýk ";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Bereich, dessen Zellen berücksichtigt werden. : Der Bereich, dessen Zellen ber³cksichtigt werden. */
+ Text = "Der Bereich, dessen Zellen berücksichtigt werden." ;
+ Text [ english ] = "is range or reference for which you want the subtotal." ;
+ Text [ norwegian ] = "Der Bereich, dessen Zellen berücksichtigt werden." ;
+ Text [ italian ] = "L'area le cui celle devono essere prese in considerazione." ;
+ Text [ portuguese_brazilian ] = "Der Bereich, dessen Zellen berücksichtigt werden." ;
+ Text [ portuguese ] = "é o intervalo ou a referência dos quais se deseja calcular o subtotal." ;
+ Text [ finnish ] = "Der Bereich, dessen Zellen berücksichtigt werden." ;
+ Text [ danish ] = "Området hvis celler skal inkluderes i beregningen." ;
+ Text [ french ] = "La plage dont les cellules doivent être prises en considération." ;
+ Text [ swedish ] = "Området vars celler skall tas med." ;
+ Text [ dutch ] = "Het cellenbereik waarover u een berekening wilt maken." ;
+ Text [ spanish ] = "área o referencia cuyas celdas se tendrán en cuenta." ;
+ Text [ english_us ] = "The cells of the range which are to be taken into account." ;
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ÆËã·ÖÀà»ã×ܵĵ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Äèàïàçîí, ÿ÷åéêè êîòîðîãî ó÷èòûâàþòñÿ ïðè ïîäâåäåíèè ïðîìåæóòî÷íûõ èòîãîâ.";
+ Text[ polish ] = "Obszar, którego komórki zostan¹ uwzglêdnione.";
+ Text[ japanese ] = "ŒvŽZ‚·‚é¾Ù”͈ÍB";
+ Text[ chinese_traditional ] = "¥Î¨Ó­pºâ¤p­pªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ Ãæ ãÑÌÚ ÊÑíÏ ÇáãÌãæÚ ÇáÝÑÚí áåÇ.";
+ Text[ dutch ] = "Het cellenbereik waarover u een berekening wilt maken.";
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ÆËã·ÖÀà»ã×ܵĵ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ðåñéï÷Þ, ôçò ïðïßáò ôá êåëéÜ èá ëçöèïýí õðüøç.";
+ Text[ korean ] = "°í·ÁÇÒ ¿µ¿ªÀÇ ¼¿ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Hücreleri dikkate alýnacak aralýk.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GANZZAHL #*=-
+ Resource SC_OPCODE_INT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Rundet eine Zahl auf die nächst kleinere ganze Zahl ab. : Rundet eine Zahl auf die nõchst kleinere ganze Zahl ab. */
+ Text = "Rundet eine Zahl auf die nächst kleinere ganze Zahl ab." ;
+ Text [ english ] = "Rounds a number down to the nearest integer." ;
+ Text [ norwegian ] = "Rundet eine Zahl auf die nächst kleinere ganze Zahl ab." ;
+ Text [ italian ] = "Arrotonda un numero per difetto all'intero più vicino." ;
+ Text [ portuguese_brazilian ] = "Rundet eine Zahl auf die nächst kleinere ganze Zahl ab." ;
+ Text [ portuguese ] = "Arredonda um número até ao número inteiro inferior mais próximo." ;
+ Text [ finnish ] = "Rundet eine Zahl auf die nächst kleinere ganze Zahl ab." ;
+ Text [ danish ] = "Runder et tal ned til nærmeste mindre heltal." ;
+ Text [ french ] = "Arrondit un nombre au nombre entier inférieur le plus proche." ;
+ Text [ swedish ] = "Avrundar ett tal nedåt till närmaste mindre heltal." ;
+ Text [ dutch ] = "Rondt een getal naar beneden af op het dichtsbijzijnde gehele getal." ;
+ Text [ spanish ] = "Redondea un número hasta el entero inferior más próximo." ;
+ Text [ english_us ] = "Rounds a number down to the nearest integer." ;
+ Text[ chinese_simplified ] = "½«Ò»¸öÊýÉáÈëΪ×î½Ó½üµÄ(ÊýÖµ¼õС)ÕûÊý¡£";
+ Text[ russian ] = "Îêðóãëÿåò ÷èñëî äî áëèæàéøåãî ìåíüøåãî öåëîãî.";
+ Text[ polish ] = "Zaokr¹gla liczbê w dó³ do najbli¿szej liczby ca³kowitej.";
+ Text[ japanese ] = "¬”“_ˆÈ‰º‚ðØ‚èŽÌ‚Ä‚Ä®”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¤@­Ó¼ÆªÙ¤J¬°³Ì±µªñªº(¼Æ­È´î¤p)¾ã¼Æ¡C";
+ Text[ arabic ] = "ÊÞÑÈ ÑÞã ááÃÏäì Åáì ÃÞÑÈ ÚÏÏ ÕÍíÍ.";
+ Text[ dutch ] = "Rondt een getal naar beneden af op het dichtsbijzijnde gehele getal.";
+ Text[ chinese_simplified ] = "½«Ò»¸öÊýÉáÈëΪ×î½Ó½üµÄ(ÊýÖµ¼õС)ÕûÊý¡£";
+ Text[ greek ] = "Óôñïããõëïðïéåß Ýíáí áñéèìü ðñïò ôá êÜôù ðñïò ôïí åðüìåíï ìéêñüôåñï áêÝñáéï.";
+ Text[ korean ] = "°¡Àå °¡±î¿î Á¤¼ö·Î ¹Ý¹ö¸²";
+ Text[ turkish ] = "Sayýyý, bir alt tamsayýya yuvarlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_GANZZAHL );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die abgerundet wird." ;
+ Text [ english ] = "is the real number you want to round down to an integer." ;
+ Text [ norwegian ] = "Die Zahl, die abgerundet wird." ;
+ Text [ italian ] = "è il numero reale che si desidera arrotondare per difetto ad un intero." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die abgerundet wird." ;
+ Text [ portuguese ] = "é o valor numérico a arredondar para baixo." ;
+ Text [ finnish ] = "Die Zahl, die abgerundet wird." ;
+ Text [ danish ] = "Det tal som skal rundes ned." ;
+ Text [ french ] = "La valeur à arrondir en tendant vers zéro." ;
+ Text [ swedish ] = "Talet som avrundas neråt." ;
+ Text [ dutch ] = "Het getal dat wordt afgerond." ;
+ Text [ spanish ] = "Es el número real que desea redondear al número entero." ;
+ Text [ english_us ] = "The number to be rounded down." ;
+ Text[ chinese_simplified ] = "Òª±»ÉáÈëµÄÊý¡£";
+ Text[ russian ] = "Îêðóãëÿåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba do zaokr¹glenia.";
+ Text[ japanese ] = "Ø‚èŽÌ‚Ä‚³‚ê‚é”";
+ Text[ chinese_traditional ] = "­n³QªÙ¤Jªº¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÞÑíÈå ááÃÏäì.";
+ Text[ dutch ] = "Het getal dat wordt afgerond.";
+ Text[ chinese_simplified ] = "Òª±»ÉáÈëµÄÊý¡£";
+ Text[ greek ] = "Ï áñéèìüò ôïõ ïðïßïõ èá ãßíåé óôñïããõëïðïßçóç ðñïò ôá êÜôù.";
+ Text[ korean ] = "³»¸²µÇ´Â ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Aþaðý yuvarlanan sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KÜRZEN #*=-
+ Resource SC_OPCODE_TRUNC
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Schneidet Nachkommastellen einer Zahl ab." ;
+ Text [ english ] = "Truncates a number to an integer by removing the fractional part of the number." ;
+ Text [ norwegian ] = "Schneidet Nachkommastellen einer Zahl ab." ;
+ Text [ italian ] = "Elimina la parte decimale di un numero." ;
+ Text [ portuguese_brazilian ] = "Schneidet Nachkommastellen einer Zahl ab." ;
+ Text [ portuguese ] = "Trunca um número para um inteiro, suprimindo-lhe a casa decimal." ;
+ Text [ finnish ] = "Schneidet Nachkommastellen einer Zahl ab." ;
+ Text [ danish ] = "Afkorter et tals decimaler." ;
+ Text [ french ] = "Réduit le nombre de décimales d'un nombre." ;
+ Text [ swedish ] = "Kortar av ett tals decimaler." ;
+ Text [ dutch ] = "Beperkt het aantal cijfers achter de komma." ;
+ Text [ spanish ] = "Trunca un número a un entero." ;
+ Text [ english_us ] = "Truncates the decimal places of a number." ;
+ Text[ chinese_simplified ] = "È¥³ýÊý×ÖµÄСÊý²¿·Ö¡£";
+ Text[ russian ] = "Îòáðàñûâàåò äðîáíóþ ÷àñòü ÷èñëà. òàê ÷òî îñòàåòñÿ öåëîå ÷èñëî.";
+ Text[ polish ] = "Obcina w liczbie miejsca po przecinku ";
+ Text[ japanese ] = "”’l‚Ì”CˆÓ‚Ì­”ˆÊ‚ðØ‚èŽÌ‚Ä‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥h°£¼Æ¦rªº¤p¼Æ³¡¥÷¡C";
+ Text[ arabic ] = "ÊÞØÚ ãäÇÒá ÚÔÑíÉ ãä ÑÞã.";
+ Text[ dutch ] = "Beperkt het aantal cijfers achter de komma.";
+ Text[ chinese_simplified ] = "È¥³ýÊý×ÖµÄСÊý²¿·Ö¡£";
+ Text[ greek ] = "Áðïêüðôåé ôá äåêáäéêÜ øçößá åíüò áñéèìïý.";
+ Text[ korean ] = "¼ýÀÚÀÇ ¼Ò¼öÁ¡ÀÌÇϸ¦ Àý»ç";
+ Text[ turkish ] = "Sayýnýn, ondalýk hanelerini keser.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_KUERZEN );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, deren Nachkommastellen abgeschnitten werden." ;
+ Text [ english ] = "is the number you want to truncate." ;
+ Text [ norwegian ] = "Die Zahl, deren Nachkommastellen abgeschnitten werden." ;
+ Text [ italian ] = "è il numero che si desidera troncare." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, deren Nachkommastellen abgeschnitten werden." ;
+ Text [ portuguese ] = "é o número cuja casa decimal deseja truncar." ;
+ Text [ finnish ] = "Die Zahl, deren Nachkommastellen abgeschnitten werden." ;
+ Text [ danish ] = "Det tal hvis decimaler skal afkortes." ;
+ Text [ french ] = "Représente le nombre dont les décimales sont à réduire." ;
+ Text [ swedish ] = "Det tal vars decimaler skall avkortas." ;
+ Text [ dutch ] = "Het getal waarvan de decimalen worden afgekapt." ;
+ Text [ spanish ] = "es el número al que se le eliminan los decimales." ;
+ Text [ english_us ] = "The number to be truncated." ;
+ Text[ chinese_simplified ] = "Òª³ýȥСÊý²¿·ÖµÄÊý×Ö¡£";
+ Text[ russian ] = "Óñåêàåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba, której miejsca po przecinku bêdê obciête.";
+ Text[ japanese ] = "¬”ˆÊ‚ðØ‚èŽÌ‚Ä‚é”’lB";
+ Text[ chinese_traditional ] = "­n°£¥h¤p¼Æ³¡¥÷ªº¼Æ¦r¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÞØÚå.";
+ Text[ dutch ] = "Het getal waarvan de decimalen worden afgekapt.";
+ Text[ chinese_simplified ] = "Òª³ýȥСÊý²¿·ÖµÄÊý×Ö¡£";
+ Text[ greek ] = "Ï áñéèìüò ôïõ ïðïßïõ èá áðïêïðïýí ôá äåêáäéêÜ øçößá.";
+ Text[ korean ] = "¹ö·ÁÁú ¼ö";
+ Text[ turkish ] = "Ondalýk haneleri kesilecek sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl" ;
+ Text [ english ] = "num_digits" ;
+ Text [ norwegian ] = "Anzahl" ;
+ Text [ italian ] = "num_cifre" ;
+ Text [ portuguese_brazilian ] = "Anzahl" ;
+ Text [ portuguese ] = "Núm_dígitos" ;
+ Text [ finnish ] = "Anzahl" ;
+ Text [ danish ] = "Antal" ;
+ Text [ french ] = "Nb_décimales" ;
+ Text [ swedish ] = "antal" ;
+ Text [ dutch ] = "Aantal" ;
+ Text [ spanish ] = "núm_decimales" ;
+ Text [ english_us ] = "count" ;
+ Text[ chinese_simplified ] = "count";
+ Text[ russian ] = "Êîëè÷åñòâî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "Œ…”";
+ Text[ chinese_traditional ] = "count";
+ Text[ arabic ] = "Num_digits";
+ Text[ dutch ] = "Aantal";
+ Text[ chinese_simplified ] = "count";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Hane sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Anzahl der Nachkommastellen, die nicht abgeschnitten werden." ;
+ Text [ english ] = "is a number specifying the precision of the truncation." ;
+ Text [ norwegian ] = "Die Anzahl der Nachkommastellen, die nicht abgeschnitten werden." ;
+ Text [ italian ] = "è un numero che specifica le cifre decimali da non troncare." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Nachkommastellen, die nicht abgeschnitten werden." ;
+ Text [ portuguese ] = "é um número de casas decimais que aparecem à direita da vírgula." ;
+ Text [ finnish ] = "Die Anzahl der Nachkommastellen, die nicht abgeschnitten werden." ;
+ Text [ danish ] = "Det antal decimaler som ikke skal afkortes." ;
+ Text [ french ] = "Le nombre de décimales à conserver." ;
+ Text [ swedish ] = "Antalet decimaler som inte skall avkortas." ;
+ Text [ dutch ] = "Het aantal decimalen dat wordt weergegeven." ;
+ Text [ spanish ] = "el número de decimales que no se debe truncar." ;
+ Text [ english_us ] = "The number of places after the decimal point that are not to be truncated." ;
+ Text[ chinese_simplified ] = "Òª±£ÁôµÄСÊýµãλÊý¡£";
+ Text[ russian ] = "×èñëî, îïðåäåëÿþùåå òî÷íîñòü óñå÷åíèÿ.";
+ Text[ polish ] = "Liczba miejsc po przecinku, które nie zostan¹ obciête.";
+ Text[ japanese ] = "Ø‚èŽÌ‚Ä‚ðs‚Á‚½Œã‚ÌŒ…”B";
+ Text[ chinese_traditional ] = "­n«O¯dªº¤p¼ÆÂI¦ì¼Æ¡C";
+ Text[ arabic ] = "ÑÞã íÍÏÏ ÏÞÉ ÇáÞØÚ.";
+ Text[ dutch ] = "Het aantal decimalen dat wordt weergegeven.";
+ Text[ chinese_simplified ] = "Òª±£ÁôµÄСÊýµãλÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí äåêáäéêþí øçößùí ðïõ äåí áðïêüðôïíôáé.";
+ Text[ korean ] = "¹ö¸®Áö ¾Ê´Â ¼Ò¼öÁ¡ ÀÌÈÄÀÇ ÀÚ¸´¼ö";
+ Text[ turkish ] = "Kesilmeyen ondalýk hanelerin sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function RUNDEN #*=-
+ Resource SC_OPCODE_ROUND
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Runden einer Zahl auf eine vorgegebene Genauigkeit." ;
+ Text [ english ] = "Rounds a number to a specified number of digits." ;
+ Text [ norwegian ] = "Runden einer Zahl auf eine vorgegebene Genauigkeit." ;
+ Text [ italian ] = "Arrotonda un numero ad una precisione data." ;
+ Text [ portuguese_brazilian ] = "Runden einer Zahl auf eine vorgegebene Genauigkeit." ;
+ Text [ portuguese ] = "Arredonda um número até uma uantidade de dígitos dada." ;
+ Text [ finnish ] = "Runden einer Zahl auf eine vorgegebene Genauigkeit." ;
+ Text [ danish ] = "Runder et tal til et angivet antal decimaler." ;
+ Text [ french ] = "Arrondit un nombre au nombre de chiffres spécifié." ;
+ Text [ swedish ] = "Avrundar ett tal uppåt till en fördefinierad exakthet." ;
+ Text [ dutch ] = "Rondt een getal af op het opgegeven aantal decimalen." ;
+ Text [ spanish ] = "Redondea un número al número de decimales especificado." ;
+ Text [ english_us ] = "Rounds a number to a predefined accuracy." ;
+ Text[ chinese_simplified ] = "°´Ö¸¶¨Î»ÊýÏòÉÏ(Ñؾø¶ÔÖµÔö´óµÄ·½Ïò)ÉáÈëÊý×Ö¡£";
+ Text[ russian ] = "Îêðóãëÿåò ÷èñëî äî óêàçàííîãî êîëè÷åñòâà äåñÿòè÷íûõ ðàçðÿäîâ.";
+ Text[ polish ] = "Zaokr¹gla liczbê do okreœlonej iloœci cyfr.";
+ Text[ japanese ] = "”’l‚ðŽlŽÌŒÜ“ü‚µ‚ÄŽw’肳‚ꂽŒ…”‚É‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ö«ü©w¦ì¼Æ¦V¤W(ªuµ´¹ï­È¼W¤jªº¤è¦V)ªÙ¤J¼Æ¦r¡C";
+ Text[ arabic ] = "ÊÞÑÈ ÑÞãÇð Åáì ÚÏÏ ÎÇäÇÊ ÑÞãíÉ ãÍÏÏ.";
+ Text[ dutch ] = "Rondt een getal af op het opgegeven aantal decimalen.";
+ Text[ chinese_simplified ] = "°´Ö¸¶¨Î»ÊýÏòÉÏ(Ñؾø¶ÔÖµÔö´óµÄ·½Ïò)ÉáÈëÊý×Ö¡£";
+ Text[ greek ] = "Óôñïããõëïðïßçóç åíüò áñéèìïý ìå ôç äåäïìÝíç áêñßâåéá.";
+ Text[ korean ] = "ÁöÁ¤µÈ ÀÚ¸´¼ö·Î ¹Ý¿Ã¸²";
+ Text[ turkish ] = "Sayýyý önceden belirlenen bir doðrulukta yuvarlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_RUNDEN );
+ 2; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die gerundet werden soll." ;
+ Text [ english ] = "is the number you want to round." ;
+ Text [ norwegian ] = "Die Zahl, die gerundet werden soll." ;
+ Text [ italian ] = "è il numero che si desidera arrotondare." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die gerundet werden soll." ;
+ Text [ portuguese ] = "é o número que se deseja arredondar." ;
+ Text [ finnish ] = "Die Zahl, die gerundet werden soll." ;
+ Text [ danish ] = "Det tal som skal rundes." ;
+ Text [ french ] = "Le nombre à arrondir." ;
+ Text [ swedish ] = "Talet som skall avrundas." ;
+ Text [ dutch ] = "Het getal dat wordt afgerond." ;
+ Text [ spanish ] = "es el número que se desea redondear." ;
+ Text [ english_us ] = "The number to be rounded." ;
+ Text[ chinese_simplified ] = "ÐèÒª½øÐÐÉáÈëµÄÊý×Ö¡£";
+ Text[ russian ] = "Îêðóãëÿåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba, która ma byæ zaokr¹glona.";
+ Text[ japanese ] = "ŽlŽÌŒÜ“ü‚³‚ê‚é”";
+ Text[ chinese_traditional ] = "»Ý­n¶i¦æªÙ¤Jªº¼Æ¦r¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÞÑíÈå.";
+ Text[ dutch ] = "Het getal dat wordt afgerond.";
+ Text[ chinese_simplified ] = "ÐèÒª½øÐÐÉáÈëµÄÊý×Ö¡£";
+ Text[ greek ] = "Ï áñéèìüò, ôïõ ïðïßïõ èá ãßíåé óôñïããõëïðïßçóç.";
+ Text[ korean ] = "¹Ý¿Ã¸²µÉ ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Yuvarlanacak sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl" ;
+ Text [ english ] = "num_digits" ;
+ Text [ norwegian ] = "Anzahl" ;
+ Text [ italian ] = "num_cifre" ;
+ Text [ portuguese_brazilian ] = "Anzahl" ;
+ Text [ portuguese ] = "Núm_dígitos" ;
+ Text [ finnish ] = "Anzahl" ;
+ Text [ danish ] = "Antal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "antal" ;
+ Text [ dutch ] = "Aantal" ;
+ Text [ spanish ] = "núm_decimales" ;
+ Text [ english_us ] = "count" ;
+ Text[ chinese_simplified ] = "count";
+ Text[ russian ] = "Êîëè÷åñòâî_öèôð";
+ Text[ polish ] = "liczba_cyfr";
+ Text[ japanese ] = "Œ…”";
+ Text[ chinese_traditional ] = "count";
+ Text[ arabic ] = "count";
+ Text[ dutch ] = "Aantal";
+ Text[ chinese_simplified ] = "count";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Anzahl der Stellen, auf die gerundet werden soll." ;
+ Text [ english ] = "specifies the number of digits to which you want to round number." ;
+ Text [ norwegian ] = "Die Anzahl der Stellen, auf die gerundet werden soll." ;
+ Text [ italian ] = "specifica il numero di cifre a cui si desidera arrotondare num." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Stellen, auf die gerundet werden soll." ;
+ Text [ portuguese ] = "determina a quantidade de dígitos para a qual se deseja arredondar." ;
+ Text [ finnish ] = "Die Anzahl der Stellen, auf die gerundet werden soll." ;
+ Text [ danish ] = "Det antal decimaler tallet skal rundes til." ;
+ Text [ french ] = "Le nombre de chiffres auquel vous voulez arrondir le nombre." ;
+ Text [ swedish ] = "Antalet decimaler som talet skall avrundas till." ;
+ Text [ dutch ] = "Het aantal decimalen waarop wordt afgerond." ;
+ Text [ spanish ] = "especifica el número de decimales al que se desea redondear." ;
+ Text [ english_us ] = "The number of places to which a number is to be rounded." ;
+ Text[ chinese_simplified ] = "Ö¸¶¨µÄλÊý£¬°´´ËλÊý½øÐÐÉáÈë¡£";
+ Text[ russian ] = "Êîëè÷åñòâî äåñÿòè÷íûõ ðàçðÿäîâ, äî êîòîðîãî íóæíî îêðóãëèòü ÷èñëî.";
+ Text[ polish ] = "Okreœla liczbê cyfr, do których ma byæ zaokr¹glona liczba.";
+ Text[ japanese ] = "ŽlŽÌŒÜ“ü‚µ‚½Œã‚ÌŒ…”B";
+ Text[ chinese_traditional ] = "«ü©wªº¦ì¼Æ¡M«ö¦¹¦ì¼Æ¶i¦æªÙ¤J¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáãäÇÒá ÇáÊí ÓæÝ íÊã ÇáÊÞÑíÈ ÅáíåÇ.";
+ Text[ dutch ] = "Het aantal decimalen waarop wordt afgerond.";
+ Text[ chinese_simplified ] = "Ö¸¶¨µÄλÊý£¬°´´ËλÊý½øÐÐÉáÈë¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí øçößùí ùò ðñïò ôï ïðïßï èá ãßíåé ç óôñïããõëïðïßçóç.";
+ Text[ korean ] = "¹Ý¿Ã¸² µÉ ¼ýÀÚÀÇ ÀÚ¸´¼ö";
+ Text[ turkish ] = "Yuvarlanacak rakam sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function AUFRUNDEN #*=-
+ Resource SC_OPCODE_ROUND_UP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Rundet eine Zahl auf eine vorgegebene Genauigkeit auf." ;
+ Text [ english ] = "Rounds a number up, away from zero." ;
+ Text [ norwegian ] = "Rundet eine Zahl auf eine vorgegebene Genauigkeit auf." ;
+ Text [ italian ] = "Arrotonda per eccesso il numero ad una precisione data." ;
+ Text [ portuguese_brazilian ] = "Rundet eine Zahl auf eine vorgegebene Genauigkeit auf." ;
+ Text [ portuguese ] = "Arredonda um número até uma quantidade de dígitos dada." ;
+ Text [ finnish ] = "Rundet eine Zahl auf eine vorgegebene Genauigkeit auf." ;
+ Text [ danish ] = "Runder et tal op til et angivet antal decimaler." ;
+ Text [ french ] = "Arrondit un nombre en s'éloignant de zéro." ;
+ Text [ swedish ] = "Avrundar ett tal uppåt till en fördefinierad exakthet." ;
+ Text [ dutch ] = "Rondt een getal naar boven af op het opgegeven aantal decimalen." ;
+ Text [ spanish ] = "Redondea un número hacia arriba, en dirección contraria a cero." ;
+ Text [ english_us ] = "Rounds a number up to the predefined accuracy." ;
+ Text[ chinese_simplified ] = "°´Ö¸¶¨Î»ÊýÀ´ÉáÈëÊý×Ö¡£";
+ Text[ russian ] = "Îêðóãëÿåò ÷èñëî ïî ìîäóëþ äî áëèæàéøåãî áîëüøåãî öåëîãî.";
+ Text[ polish ] = "Zaokr¹gla liczbê do podanej iloœci cyfr.";
+ Text[ japanese ] = "”’l‚ðØ‚èã‚°‚µ‚ÄŽw’肳‚ꂽŒ…”‚É‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ö«ü©w¦ì¼ÆªÙ¤J¼Æ¦r¡C";
+ Text[ arabic ] = "ÊÞÑÈ ÑÞãÇð ááÃÚáì¡ ÈÚíÏÇð Úä ÇáÕÝÑ.";
+ Text[ dutch ] = "Rondt een getal naar boven af op het opgegeven aantal decimalen.";
+ Text[ chinese_simplified ] = "°´Ö¸¶¨Î»ÊýÀ´ÉáÈëÊý×Ö¡£";
+ Text[ greek ] = "Óôñïããõëïðïéåß Ýíáí áñéèìü ðñïò ôá åðÜíù ìå ôçí åðéëåãìÝíç áêñßâåéá.";
+ Text[ korean ] = "ÁöÁ¤µÈ ¼¼ºÎ»çÇ×´ë·Î ¼ö¸¦ ¹Ý¿Ã¸²ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Sayýyý önceden belirlenen bir doðrulukla yukarý yuvarlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_AUFRUNDEN );
+ 2; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die aufgerundet werden soll." ;
+ Text [ english ] = "is any real number that you want rounded up." ;
+ Text [ norwegian ] = "Die Zahl, die aufgerundet werden soll." ;
+ Text [ italian ] = "è un qualsiasi numero reale che si desidera arrotondare per eccesso." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die aufgerundet werden soll." ;
+ Text [ portuguese ] = "é o número que se deseja arredondar." ;
+ Text [ finnish ] = "Die Zahl, die aufgerundet werden soll." ;
+ Text [ danish ] = "Det tal som skal rundes op." ;
+ Text [ french ] = "La valeur à arrondir en s'éloignant de zéro." ;
+ Text [ swedish ] = "Talet som skall avrundas uppåt." ;
+ Text [ dutch ] = "Het getal dat wordt afgerond." ;
+ Text [ spanish ] = "es cualquier número real que desee redondear." ;
+ Text [ english_us ] = "The number to be rounded up." ;
+ Text[ chinese_simplified ] = "ÐèÒªÏòÉÏÉáÈëµÄÈÎÒâʵÊý¡£";
+ Text[ russian ] = "Îêðóãëÿåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba do zaokr¹glenia.";
+ Text[ japanese ] = "Ø‚èã‚°‚³‚ê‚é”";
+ Text[ chinese_traditional ] = "»Ý­n¦V¤WªÙ¤Jªº¥ô·N¹ê¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÞÑíÈå ááÃÚáì.";
+ Text[ dutch ] = "Het getal dat wordt afgerond.";
+ Text[ chinese_simplified ] = "ÐèÒªÏòÉÏÉáÈëµÄÈÎÒâʵÊý¡£";
+ Text[ greek ] = "Ï áñéèìüò, ôïõ ïðïßïõ èá ãßíåé óôñïããõëïðïßçóç ðñïò ôá åðÜíù.";
+ Text[ korean ] = "¹Ý ¿Ã¸²µÉ ¼ö";
+ Text[ turkish ] = "Yukarý yuvarlanacak sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl" ;
+ Text [ english ] = "num_digits" ;
+ Text [ norwegian ] = "Anzahl" ;
+ Text [ italian ] = "num_cifre" ;
+ Text [ portuguese_brazilian ] = "Anzahl" ;
+ Text [ portuguese ] = "Núm_dígitos" ;
+ Text [ finnish ] = "Anzahl" ;
+ Text [ danish ] = "Antal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "antal" ;
+ Text [ dutch ] = "Aantal" ;
+ Text [ spanish ] = "núm_decimales" ;
+ Text [ english_us ] = "count" ;
+ Text[ chinese_simplified ] = "count";
+ Text[ russian ] = "Êîëè÷åñòâî_öèôð";
+ Text[ polish ] = "liczba_cyfr";
+ Text[ japanese ] = "Œ…”";
+ Text[ chinese_traditional ] = "count";
+ Text[ arabic ] = "count";
+ Text[ dutch ] = "Aantal";
+ Text[ chinese_simplified ] = "count";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Hane sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Anzahl der Stellen, auf die aufgerundet werden soll." ;
+ Text [ english ] = "is the number of digits to which you want to round number." ;
+ Text [ norwegian ] = "Die Anzahl der Stellen, auf die aufgerundet werden soll." ;
+ Text [ italian ] = "è il numero di cifre a cui si desidera arrotondare num." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Stellen, auf die aufgerundet werden soll." ;
+ Text [ portuguese ] = "determina a quantidade de dígitos para a qual se deseja arredondar." ;
+ Text [ finnish ] = "Die Anzahl der Stellen, auf die aufgerundet werden soll." ;
+ Text [ danish ] = "Det antal decimaler tallet skal rundes op til." ;
+ Text [ french ] = "Le nombre de chiffres à prendre en compte pour arrondir l'argument nombre." ;
+ Text [ swedish ] = "Antalet decimaler som talet skall avrundas till uppåt." ;
+ Text [ dutch ] = "Het aantal decimalen waarop wordt afgerond." ;
+ Text [ spanish ] = "es el número de decimales al cual se desea redondear el número." ;
+ Text [ english_us ] = "The number of places to which a number is to be rounded." ;
+ Text[ chinese_simplified ] = "ÉáÈëºóµÄÊý×ÖµÄλÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî öèôð, äî êîòîðîãî îêðóãëÿåòñÿ ÷èñëî.";
+ Text[ polish ] = "Okreœla liczbê cyfr, do których ma byæ zaokr¹glona liczba.";
+ Text[ japanese ] = "Ø‚èã‚°‚ð‚µ‚½Œã‚ÌŒ…”B";
+ Text[ chinese_traditional ] = "ªÙ¤J«áªº¼Æ¦rªº¦ì¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáãäÇÒá ÇáÊí ÊÑíÏ ÇáÊÞÑíÈ áåÇ.";
+ Text[ dutch ] = "Het aantal decimalen waarop wordt afgerond.";
+ Text[ chinese_simplified ] = "ÉáÈëºóµÄÊý×ÖµÄλÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí øçößùí ùò ðñïò ôï ïðïßï èá ãßíåé ç óôñïããõëïðïßçóç ðñïò ôá åðÜíù.";
+ Text[ korean ] = "¹Ý ¿Ã¸²µÉ ¼öÀÇ ÀÚ¸®¼ö";
+ Text[ turkish ] = "Yukarý yuvarlanacak rakam sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ABRUNDEN #*=-
+ Resource SC_OPCODE_ROUND_DOWN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Rundet eine Zahl auf eine vorgegebene Genauigkeit ab." ;
+ Text [ english ] = "Rounds a number down, toward zero." ;
+ Text [ norwegian ] = "Rundet eine Zahl auf eine vorgegebene Genauigkeit ab." ;
+ Text [ italian ] = "Arrotonda per difetto il numero ad una precisione data." ;
+ Text [ portuguese_brazilian ] = "Rundet eine Zahl auf eine vorgegebene Genauigkeit ab." ;
+ Text [ portuguese ] = "Arredonda um número até uma quantidade de dígitos dada." ;
+ Text [ finnish ] = "Rundet eine Zahl auf eine vorgegebene Genauigkeit ab." ;
+ Text [ danish ] = "Runder et tal ned til et angivet antal decimaler." ;
+ Text [ french ] = "Arrondit un nombre en tendant vers zéro." ;
+ Text [ swedish ] = "Avrundar ett tal nedåt till en fördefinierad exakthet." ;
+ Text [ dutch ] = "Rondt een getal naar beneden af op het opgegeven aantal decimalen." ;
+ Text [ spanish ] = "Redondea un número hacia abajo, en dirección hacia cero." ;
+ Text [ english_us ] = "Rounds a number down to a predefined accuracy." ;
+ Text[ chinese_simplified ] = "°´Ö¸¶¨Î»ÊýÏòÏÂ(Ñؾø¶ÔÖµ¼õСµÄ·½Ïò)ÉáÈëÊý×Ö¡£";
+ Text[ russian ] = "Îêðóãëÿåò ÷èñëî äî áëèæàéøåãî ìåíüøåãî ïî ìîäóëþ öåëîãî.";
+ Text[ polish ] = "Zaokr¹gla liczbê do okreœlonej iloœci cyfr.";
+ Text[ japanese ] = "”’l‚ðØ‚èŽÌ‚Ä‚µ‚ÄŽw’肳‚ꂽŒ…”‚É‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ö«ü©w¦ì¼Æ¦V¤U(ªuµ´¹ï­È´î¤pªº¤è¦V)ªÙ¤J¼Æ¦r¡C";
+ Text[ arabic ] = "ÊÞÑÈ ÑÞãÇð ááÃÓÝá¡ ÈÇÊÌÇå ÇáÕÝÑ.";
+ Text[ dutch ] = "Rondt een getal naar beneden af op het opgegeven aantal decimalen.";
+ Text[ chinese_simplified ] = "°´Ö¸¶¨Î»ÊýÏòÏÂ(Ñؾø¶ÔÖµ¼õСµÄ·½Ïò)ÉáÈëÊý×Ö¡£";
+ Text[ greek ] = "Óôñïããõëïðïéåß Ýíáí áñéèìü ðñïò ôá êÜôù ìå ôçí åðéëåãìÝíç áêñßâåéá.";
+ Text[ korean ] = "ÁöÁ¤µÈ ÀÚ¸´¼ö·Î ¹Ý¹ö¸²";
+ Text[ turkish ] = "Sayýyý önceden belirlenen bir doðrulukla aþaðý yuvarlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_ABRUNDEN );
+ 2; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die abgerundet werden soll." ;
+ Text [ english ] = "is any real number that you want rounded down." ;
+ Text [ norwegian ] = "Die Zahl, die abgerundet werden soll." ;
+ Text [ italian ] = "è un qualsiasi numero reale che si desidera arrotondare per difetto." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die abgerundet werden soll." ;
+ Text [ portuguese ] = "é o número que se deseja arredondar." ;
+ Text [ finnish ] = "Die Zahl, die abgerundet werden soll." ;
+ Text [ danish ] = "Det tal som skal rundes ned." ;
+ Text [ french ] = "La valeur à arrondir en tendant vers zéro." ;
+ Text [ swedish ] = "Talet som skall avrundas neråt." ;
+ Text [ dutch ] = "Het getal dat moet worden afgerond." ;
+ Text [ spanish ] = "es cualquier número real que desea redondear." ;
+ Text [ english_us ] = "The number to be rounded down." ;
+ Text[ chinese_simplified ] = "ÐèÒªÏòÏÂÉáÈëµÄÈÎÒâʵÊý¡£";
+ Text[ russian ] = "Îêðóãëÿåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba, która ma byæ zaokr¹glona.";
+ Text[ japanese ] = "Ø‚èŽÌ‚Ä‚³‚ê‚é”";
+ Text[ chinese_traditional ] = "»Ý­n¦V¤UªÙ¤Jªº¥ô·N¹ê¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÞÑíÈå ááÃÏäì.";
+ Text[ dutch ] = "Het getal dat moet worden afgerond.";
+ Text[ chinese_simplified ] = "ÐèÒªÏòÏÂÉáÈëµÄÈÎÒâʵÊý¡£";
+ Text[ greek ] = "Ï áñéèìüò ôïõ ïðïßïõ èá ãßíåé óôñïããõëïðïßçóç ðñïò ôá êÜôù.";
+ Text[ korean ] = "¹Ý ¹ö¸²µÉ ¼ö ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Aþaðý yuvarlanacak sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl" ;
+ Text [ english ] = "num_digits" ;
+ Text [ norwegian ] = "Anzahl" ;
+ Text [ italian ] = "num_cifre" ;
+ Text [ portuguese_brazilian ] = "Anzahl" ;
+ Text [ portuguese ] = "Núm_dígitos" ;
+ Text [ finnish ] = "Anzahl" ;
+ Text [ danish ] = "Antal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "antal" ;
+ Text [ dutch ] = "Aantal" ;
+ Text [ spanish ] = "núm_decimales" ;
+ Text [ english_us ] = "count" ;
+ Text[ chinese_simplified ] = "count";
+ Text[ russian ] = "Êîëè÷åñòâî_öèôð";
+ Text[ polish ] = "liczba_cyfr";
+ Text[ japanese ] = "Œ…”";
+ Text[ chinese_traditional ] = "count";
+ Text[ arabic ] = "count";
+ Text[ dutch ] = "Aantal";
+ Text[ chinese_simplified ] = "count";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Hane sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Anzahl der Stellen, auf die abgerundet werden soll." ;
+ Text [ english ] = "is the number of digits to which you want to round number." ;
+ Text [ norwegian ] = "Die Anzahl der Stellen, auf die abgerundet werden soll." ;
+ Text [ italian ] = "è il numero di cifre a cui si desidera arrotondare num." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Stellen, auf die abgerundet werden soll." ;
+ Text [ portuguese ] = "determina a quantidade de dígitos para a qual se deseja arredondar." ;
+ Text [ finnish ] = "Die Anzahl der Stellen, auf die abgerundet werden soll." ;
+ Text [ danish ] = "Det antal decimaler tallet skal rundes ned til." ;
+ Text [ french ] = "Le nombre de chiffres à prendre en compte pour arrondir l'argument nombre." ;
+ Text [ swedish ] = "Antalet decimaler som talet skall avrundas till." ;
+ Text [ dutch ] = "Het aantal decimalen waarop wordt afgerond" ;
+ Text [ spanish ] = "es el número de decimales al cual desea redondear el número." ;
+ Text [ english_us ] = "The number of places down to which a number is to be rounded." ;
+ Text[ chinese_simplified ] = "ÉáÈëºóµÄÊý×ÖµÄλÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî öèôð, äî êîòîðîãî îêðóãëÿåòñÿ ÷èñëî.";
+ Text[ polish ] = "Okreœla liczbê cyfr, do których ma byæ zaokr¹glona liczba.";
+ Text[ japanese ] = "Ø‚èŽÌ‚Ä‚ð‚µ‚½Œã‚ÌŒ…”B";
+ Text[ chinese_traditional ] = "ªÙ¤J«áªº¼Æ¦rªº¦ì¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáãäÇÒá ÇáÊí ÊÑíÏ ÇáÊÞÑíÈ áåÇ.";
+ Text[ dutch ] = "Het aantal decimalen waarop wordt afgerond";
+ Text[ chinese_simplified ] = "ÉáÈëºóµÄÊý×ÖµÄλÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí øçößùí ùò ðñïò ôï ïðïßï èá ãßíåé ç óôñïããõëïðïßçóç ðñïò ôá êÜôù.";
+ Text[ korean ] = "³»¸²ÇÒ ÀÚ¸®¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Aþaðý yuvarlanacak rakam sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GERADE #*=-
+ Resource SC_OPCODE_EVEN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Rundet eine Zahl auf die nächste gerade ganze Zahl auf. : Rundet eine Zahl auf die nõchste gerade ganze Zahl auf. */
+ Text = "Rundet eine Zahl auf die nächste gerade ganze Zahl auf." ;
+ Text [ english ] = "Returns number rounded up to the nearest even integer." ;
+ Text [ norwegian ] = "Rundet eine Zahl auf die nächste gerade ganze Zahl auf." ;
+ Text [ italian ] = "Arrotonda per eccesso un numero all'intero pari più vicino." ;
+ Text [ portuguese_brazilian ] = "Rundet eine Zahl auf die nächste gerade ganze Zahl auf." ;
+ Text [ portuguese ] = "Arredonda um número para o número inteiro par mais próximo." ;
+ Text [ finnish ] = "Rundet eine Zahl auf die nächste gerade ganze Zahl auf." ;
+ Text [ danish ] = "Runder et tal op til nærmeste lige heltal." ;
+ Text [ french ] = "Arrondi un nombre au nombre entier pair le plus proche en s'éloignant de zéro." ;
+ Text [ swedish ] = "Avrundar ett tal uppåt till närmaste jämna heltal." ;
+ Text [ dutch ] = "Rondt een getal naar boven af op het dichtsbijzijnde even gehele getal." ;
+ Text [ spanish ] = "Devuelve un número redondeado hasta el número entero par más próximo." ;
+ Text [ english_us ] = "Rounds a number up to the nearest even integer." ;
+ Text[ chinese_simplified ] = "½«Ò»¸öÊý×ÖÑؾø¶ÔÖµÔö´ó·½ÏòÉáÈë³ÉÒ»¸ö×î½Ó½üµÄżÊý¡£";
+ Text[ russian ] = "Îêðóãëÿåò ÷èñëî äî áëèæàéøåãî ÷åòíîãî öåëîãî.";
+ Text[ polish ] = "Zaokr¹gla liczbê do nastêpnej ca³kowitej liczby parzystej.";
+ Text[ japanese ] = "”’l‚ðÅ‚à‹ß‚¢‹ô”‚Ì’l‚ÉØ‚èã‚°‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¤@­Ó¼Æ¦r¦V¤WªÙ¤J¦¨¤@­Ó³Ì±µªñªº°¸¼Æ¡C";
+ Text[ arabic ] = "ÊÞÑÈ ÑÞã Åáì ÇáÃÚáì áÃÞÑÈ ÑÞã ÕÍíÍ ÒæÌí.";
+ Text[ dutch ] = "Rondt een getal naar boven af op het dichtsbijzijnde even gehele getal.";
+ Text[ chinese_simplified ] = "½«Ò»¸öÊý×ÖÑؾø¶ÔÖµÔö´ó·½ÏòÉáÈë³ÉÒ»¸ö×î½Ó½üµÄżÊý¡£";
+ Text[ greek ] = "Óôñïããõëïðïéåß Ýíáí áñéèìü ðñïò ôá åðÜíù ðñïò ôïí åðüìåíï ìåãáëýôåñï Üñôéï áêÝñáéï.";
+ Text[ korean ] = "°¡Àå °¡±î¿î ¦¼ö Á¤¼ö·Î ¹Ý¿Ã¸²";
+ Text[ turkish ] = "Sayýyý bir üst çift tamsayýya yuvarlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_GERADE );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die aufgerundet wird." ;
+ Text [ english ] = "is the value to round." ;
+ Text [ norwegian ] = "Die Zahl, die aufgerundet wird." ;
+ Text [ italian ] = "è il valore da arrotondare." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die aufgerundet wird." ;
+ Text [ portuguese ] = "é o valor a ser arredondado." ;
+ Text [ finnish ] = "Die Zahl, die aufgerundet wird." ;
+ Text [ danish ] = "Det tal som skal rundes op." ;
+ Text [ french ] = "La valeur à arrondir en s'éloignant de zéro." ;
+ Text [ swedish ] = "Talet som avrundas." ;
+ Text [ dutch ] = "Het getal dat naar boven afgerond wordt." ;
+ Text [ spanish ] = "Es el valor que desea redondear." ;
+ Text [ english_us ] = "The number to be rounded up." ;
+ Text[ chinese_simplified ] = "ҪȡÕûÉáÈëµÄÊý×Ö¡£";
+ Text[ russian ] = "Îêðóãëÿåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba do zaokr¹glenia.";
+ Text[ japanese ] = "Ø‚èã‚°‚³‚ê‚é”";
+ Text[ chinese_traditional ] = "­n¨ú¾ãªº¼Æ¦r¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÞÑíÈå ááÃÚáì.";
+ Text[ dutch ] = "Het getal dat naar boven afgerond wordt.";
+ Text[ chinese_simplified ] = "ҪȡÕûÉáÈëµÄÊý×Ö¡£";
+ Text[ greek ] = "Ï áñéèìüò, ôïõ ïðïßïõ èá ãßíåé óôñïããõëïðïßçóç ðñïò ôá åðÜíù.";
+ Text[ korean ] = "¹Ý¿Ã¸²µÉ ¼ö";
+ Text[ turkish ] = "Yuvarlanan sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function UNGERADE #*=-
+ Resource SC_OPCODE_ODD
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Rundet eine Zahl auf die nächste ungerade ganze Zahl auf. : Rundet eine Zahl auf die nõchste ungerade ganze Zahl auf. */
+ Text = "Rundet eine Zahl auf die nächste ungerade ganze Zahl auf." ;
+ Text [ english ] = "Returns number rounded up to the nearest odd integer." ;
+ Text [ norwegian ] = "Rundet eine Zahl auf die nächste ungerade ganze Zahl auf." ;
+ Text [ italian ] = "Arrotonda per eccesso un numero all'intero dispari più vicino." ;
+ Text [ portuguese_brazilian ] = "Rundet eine Zahl auf die nächste ungerade ganze Zahl auf." ;
+ Text [ portuguese ] = "Arredonda um número para cima até ao número ímpar mais próximo." ;
+ Text [ finnish ] = "Rundet eine Zahl auf die nächste ungerade ganze Zahl auf." ;
+ Text [ danish ] = "Runder et tal op til nærmeste ulige heltal." ;
+ Text [ french ] = "Arrondi un nombre au nombre entier impair le plus proche en s'éloignant de zéro." ;
+ Text [ swedish ] = "Avrundar ett tal uppåt till närmaste udda heltal." ;
+ Text [ dutch ] = "Rondt een getal naar boven af op het dichtsbijzijnde oneven gehele getal." ;
+ Text [ spanish ] = "Redondea un número hasta el próximo entero impar." ;
+ Text [ english_us ] = "Rounds a number up to the nearest odd integer." ;
+ Text[ chinese_simplified ] = "½«Ò»¸öÊýÏòÉÏÉáÈë³É×î½Ó½üµÄÒ»¸öÆæÕûÊý¡£";
+ Text[ russian ] = "Îêðóãëÿåò ÷èñëî äî áëèæàéøåãî íå÷åòíîãî öåëîãî.";
+ Text[ polish ] = "Zaokr¹gla liczbê do nastêpnej nieparzystej liczby ca³kowitej.";
+ Text[ japanese ] = "”’l‚ðØ‚èã‚°‚Ĥ‚»‚ÌŒ‹‰Ê‚ÉÅ‚à‹ß‚¢Šï”‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¤@­Ó¼Æ¦V¤WªÙ¤J¦¨³Ì±µªñªº¤@­Ó©_¾ã¼Æ¡C";
+ Text[ arabic ] = "ÊÞÑÈ ÑÞã ááÃÚáì Åáì ÃÞÑÈ ÚÏÏ ÝÑÏí ÕÍíÍ.";
+ Text[ dutch ] = "Rondt een getal naar boven af op het dichtsbijzijnde oneven gehele getal.";
+ Text[ chinese_simplified ] = "½«Ò»¸öÊýÏòÉÏÉáÈë³É×î½Ó½üµÄÒ»¸öÆæÕûÊý¡£";
+ Text[ greek ] = "Óôñïããõëïðïéåß Ýíáí áñéèìü ðñïò ôá åðÜíù ðñïò ôïí åðüìåíï ìåãáëýôåñï ðåñéôôü áêÝñáéï.";
+ Text[ korean ] = "°¡Àå °¡±î¿î Ȧ¼ö Á¤¼ö·Î ¹Ý¿Ã¸²";
+ Text[ turkish ] = "Sayýyý bir üst tek tamsayýya yuvarlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_UNGERADE );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die aufgerundet wird." ;
+ Text [ english ] = "is the value to round." ;
+ Text [ norwegian ] = "Die Zahl, die aufgerundet wird." ;
+ Text [ italian ] = "è il valore da arrotondare." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die aufgerundet wird." ;
+ Text [ portuguese ] = "é o valor a ser arredondado." ;
+ Text [ finnish ] = "Die Zahl, die aufgerundet wird." ;
+ Text [ danish ] = "Det tal som skal rundes op." ;
+ Text [ french ] = "La valeur à arrondir en s'éloignant de zéro." ;
+ Text [ swedish ] = "Talet som avrundas uppåt." ;
+ Text [ dutch ] = "Het getal dat wordt afgerond." ;
+ Text [ spanish ] = "es el valor que desea redondear." ;
+ Text [ english_us ] = "The number to be rounded up." ;
+ Text[ chinese_simplified ] = "ÐèÒªÏòÉÏÉáÈëµÄÊý¡£";
+ Text[ russian ] = "Îêðóãëÿåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba do zaokr¹glenia.";
+ Text[ japanese ] = "Ø‚èã‚°‚³‚ê‚é”";
+ Text[ chinese_traditional ] = "»Ý­n¦V¤WªÙ¤Jªº¼Æ¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÞÑíÈå ááÃÚáì.";
+ Text[ dutch ] = "Het getal dat wordt afgerond.";
+ Text[ chinese_simplified ] = "ÐèÒªÏòÉÏÉáÈëµÄÊý¡£";
+ Text[ greek ] = "Ï áñéèìüò, ôïõ ïðïßïõ èá ãßíåé óôñïããõëïðïßçóç ðñïò ôá åðÜíù.";
+ Text[ korean ] = "¹Ý ¿Ã¸²µÈ ¼ö";
+ Text[ turkish ] = "Bir üst sayýya yuvarlanan sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function OBERGRENZE #*=-
+ Resource SC_OPCODE_CEIL
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Rundet eine Zahl auf das nächste Vielfache der Schrittweite auf. : Rundet eine Zahl auf das nõchste Vielfache der Schrittweite auf. */
+ Text = "Rundet eine Zahl auf das nächste Vielfache der Schrittweite auf." ;
+ Text [ english ] = "Returns number rounded up, away from zero, to the nearest multiple of significance." ;
+ Text [ norwegian ] = "Rundet eine Zahl auf das nächste Vielfache der Schrittweite auf." ;
+ Text [ italian ] = "Arrotonda per eccesso il numero al multiplo più prossimo al peso." ;
+ Text [ portuguese_brazilian ] = "Rundet eine Zahl auf das nächste Vielfache der Schrittweite auf." ;
+ Text [ portuguese ] = "Arredonda um número até ao número inteiro ou múltiplo mais próximos de significância." ;
+ Text [ finnish ] = "Rundet eine Zahl auf das nächste Vielfache der Schrittweite auf." ;
+ Text [ danish ] = "Runder et tal op til nærmste heltal eller til nærmste multiplum af betydning." ;
+ Text [ french ] = "Arrondit un nombre au multiple de l'argument précision en s'éloignant de zéro." ;
+ Text [ swedish ] = "Avrundar ett tal uppåt till närmaste heltal eller närmaste signifikanta multipel." ;
+ Text [ dutch ] = "Rondt een getal af op het volgende veelvoud van de stapgrootte." ;
+ Text [ spanish ] = "Redondea un número al próximo múltiplo del argumento cifra_significativa, en dirección contraria a cero." ;
+ Text [ english_us ] = "Rounds a number up to the nearest multiple of significance." ;
+ Text[ chinese_simplified ] = "½«Ò»¸öÊý×ÖÉáÈë³É×î½Ó½üµÄÕûÊý»òÆä»ùÊýµÄ×îС±¶Êý¡£";
+ Text[ russian ] = "Îêðóãëÿåò ÷èñëî äî áëèæàéøåãî öåëîãî èëè äî áëèæàéøåãî êðàòíîãî óêàçàííîìó çíà÷åíèþ.";
+ Text[ polish ] = "Podaje wartoœæ liczby zaokr¹glonej do podanej wielokrotnoœci.";
+ Text[ japanese ] = "”’l‚ð‹²‚ÞŠî€’l‚Ì”{”‚Ì‚¤‚¿A‘å‚«‚¢•û‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¤@­Ó¼Æ¦rªÙ¤J¦¨³Ì±µªñªº¾ã¼Æ©Î¨ä°ò¼Æªº³Ì¤p­¿¼Æ¡C";
+ Text[ arabic ] = "ÊÞÑíÈ ÑÞã Åáì ÇáÃÚáì¡ Åáì ÃÞÑÈ ãÖÇÚÝ ãä ãÖÇÚÝÇÊ significance.";
+ Text[ dutch ] = "Rondt een getal af op het volgende veelvoud van de stapgrootte.";
+ Text[ chinese_simplified ] = "½«Ò»¸öÊý×ÖÉáÈë³É×î½Ó½üµÄÕûÊý»òÆä»ùÊýµÄ×îС±¶Êý¡£";
+ Text[ greek ] = "Óôñïããõëïðïéåß Ýíáí áñéèìü ðñïò ôá åðÜíù ðñïò ôïí åðüìåíï ðïëëáðëÜóéï ôïõ åðéëåãìÝíïõ âÞìáôïò.";
+ Text[ korean ] = "°¡Àå ±Ù»çÄ¡ÀÇ À¯È¿¼ýÀÚÀÇ ¹è¼ö·Î ¹Ý¿Ã¸²";
+ Text[ turkish ] = "Bir sayýyý, adýmýn bir sonraki katýna yuvarlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_OBERGRENZE );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die aufgerundet wird." ;
+ Text [ english ] = "is the value you want to round." ;
+ Text [ norwegian ] = "Die Zahl, die aufgerundet wird." ;
+ Text [ italian ] = "È il valore che si desidera arrotondare." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die aufgerundet wird." ;
+ Text [ portuguese ] = "é o valor que deseja arredondar." ;
+ Text [ finnish ] = "Die Zahl, die aufgerundet wird." ;
+ Text [ danish ] = "Det tal som skal rundes op." ;
+ Text [ french ] = "La valeur à arrondir en s'éloignant de zéro." ;
+ Text [ swedish ] = "Talet som avrundas uppåt." ;
+ Text [ dutch ] = "Het getal dat wordt afgerond." ;
+ Text [ spanish ] = "es el valor que se desea redondear." ;
+ Text [ english_us ] = "The number to be rounded up." ;
+ Text[ chinese_simplified ] = "Òª±»ÉáÈëµÄÊý×Ö¡£";
+ Text[ russian ] = "Îêðóãëÿåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba do zaokr¹glenia.";
+ Text[ japanese ] = "ŒvŽZ‚Ì‘ÎÛ‚Æ‚È‚é”B";
+ Text[ chinese_traditional ] = "­n³QªÙ¤Jªº¼Æ¦r¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÞÑíÈå ááÃÚáì.";
+ Text[ dutch ] = "Het getal dat wordt afgerond.";
+ Text[ chinese_simplified ] = "Òª±»ÉáÈëµÄÊý×Ö¡£";
+ Text[ greek ] = "Ï áñéèìüò, ôïõ ïðïßïõ èá ãßíåé óôñïããõëïðïßçóç ðñïò ôá åðÜíù.";
+ Text[ korean ] = "¹Ý¿Ã¸²ÇÑ °ª";
+ Text[ turkish ] = "Yukarý yuvarlanacak sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Schrittweite" ;
+ Text [ english ] = "significance" ;
+ Text [ norwegian ] = "Schrittweite" ;
+ Text [ italian ] = "Peso" ;
+ Text [ portuguese_brazilian ] = "Schrittweite" ;
+ Text [ portuguese ] = "Significância" ;
+ Text [ finnish ] = "Schrittweite" ;
+ Text [ danish ] = "Betydning" ;
+ Text [ french ] = "Précision" ;
+ Text [ swedish ] = "signifikans" ;
+ Text [ dutch ] = "Stapgrootte" ;
+ Text [ spanish ] = "cifra_significativa" ;
+ Text [ english_us ] = "Significance" ;
+ Text[ chinese_simplified ] = "significance";
+ Text[ russian ] = "Çíà÷èìîñòü";
+ Text[ polish ] = "IstotnoϾ";
+ Text[ japanese ] = "Šî€’l";
+ Text[ chinese_traditional ] = "significance";
+ Text[ arabic ] = "significance";
+ Text[ dutch ] = "Stapgrootte";
+ Text[ chinese_simplified ] = "significance";
+ Text[ greek ] = "ÂÞìá";
+ Text[ korean ] = "ÀǹÌ";
+ Text[ turkish ] = "Adým";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Zahl, auf deren Vielfaches der Wert aufgerundet wird." ;
+ Text [ english ] = "is the multiple to which you want to round." ;
+ Text [ norwegian ] = "Die Zahl, auf deren Vielfaches der Wert aufgerundet wird." ;
+ Text [ italian ] = "È il multiplo per il quale si desidera arrotondare." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, auf deren Vielfaches der Wert aufgerundet wird." ;
+ Text [ portuguese ] = "é o múltiplo para o qual o valor é arredondado." ;
+ Text [ finnish ] = "Die Zahl, auf deren Vielfaches der Wert aufgerundet wird." ;
+ Text [ danish ] = "Det multiplum der skal rundes op til." ;
+ Text [ french ] = "Le multiple auquel arrondir le nombre." ;
+ Text [ swedish ] = "Talet till vars multipel värdet skall avrundas uppåt." ;
+ Text [ dutch ] = "Het getal, op een veelvoud waarvan de waarde wordt afgerond." ;
+ Text [ spanish ] = "es el múltiplo al que desea redondear." ;
+ Text [ english_us ] = "The number to whose multiple the value is rounded." ;
+ Text[ chinese_simplified ] = "»ùÊý£¬ÊÇÖ¸ÉáÈë³ÉÆ䱶ÊýµÄÊý×Ö¡£";
+ Text[ russian ] = "Êðàòíîå, äî êîòîðîãî òðåáóåòñÿ îêðóãëèòü.";
+ Text[ polish ] = "Wielokrotnoœæ, do której wartoœæ ma zostaæ zaokr¹glona.";
+ Text[ japanese ] = "”{”‚̊ƂȂ锒lB";
+ Text[ chinese_traditional ] = "°ò¼Æ¡M¬O«üªÙ¤J¦¨¨ä­¿¼Æªº¼Æ¦r¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÞÑíÈ ÇáÞíãÉ Åáì ãÖÇÚÝå.";
+ Text[ dutch ] = "Het getal, op een veelvoud waarvan de waarde wordt afgerond.";
+ Text[ chinese_simplified ] = "»ùÊý£¬ÊÇÖ¸ÉáÈë³ÉÆ䱶ÊýµÄÊý×Ö¡£";
+ Text[ greek ] = "Ï áñéèìüò ùò ðñïò ôï ðïëëáðëÜóéï ôïõ ïðïßïõ èá ãßíåé ç óôñïããõëïðïßçóç ôçò ôéìÞò ðñïò ôá åðÜíù.";
+ Text[ korean ] = "¹Ý¿Ã¸²ÇÑ °ªÀÇ ¹è¼ö";
+ Text[ turkish ] = "Deðerin, katlarýndan birine yuvarlandýðý sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ {
+ Text = "Modus" ;
+ Text [ english ] = "Mode" ;
+ Text [ portuguese ] = "Modo" ;
+ Text [ english_us ] = "Mode" ;
+ Text [ portuguese_brazilian ] = "Modus" ;
+ Text [ swedish ] = "läge" ;
+ Text [ danish ] = "Modus" ;
+ Text [ italian ] = "Modo" ;
+ Text [ spanish ] = "Modo" ;
+ Text [ french ] = "Mode" ;
+ Text [ dutch ] = "Modus" ;
+ Text[ chinese_simplified ] = "mode";
+ Text[ russian ] = "Ñïîñîá";
+ Text[ polish ] = "Tryb";
+ Text[ japanese ] = "Ó°ÄÞ";
+ Text[ chinese_traditional ] = "mode";
+ Text[ arabic ] = "Mode";
+ Text[ dutch ] = "Modus";
+ Text[ chinese_simplified ] = "mode";
+ Text[ greek ] = "ÊáôÜóôáóç";
+ Text[ korean ] = "¸ðµå";
+ Text[ turkish ] = "Kip";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ {
+ Text = "Wenn angegeben und ungleich Null wird bei negativer Zahl und Schrittweite betragsmäßig aufgerundet." ;
+ Text [ english ] = "If specified and not zero a negative value and significance is rounded absolute." ;
+ Text [ portuguese ] = "Se o modo não estiver definido para zero, os números negativos com significâncias negativas serão arredondados para valores absolutos." ;
+ Text [ english_us ] = "If given and not equal to zero then rounded up according to amount when a negative number and significance." ;
+ Text [ portuguese_brazilian ] = "Wenn angegeben und ungleich Null wird bei negativer Zahl und Schrittweite betragsmäßig aufgerundet." ;
+ Text [ swedish ] = "Om angiven och ej lika med noll avrundas vid negativt tal och signifikans beloppsmässigt uppåt." ;
+ Text [ danish ] = "Hvis angivet og forskellig fra nul, bliver et negativt tal med en negativ betydning rundet op til en absolut værdi." ;
+ Text [ italian ] = "Se il modo non è definito come zero, nel caso di numero e peso negativi, l'arrotondamento avverrà rispetto al valore assoluto." ;
+ Text [ spanish ] = "Si el modo no está definido como cero, un número negativo con significado negativo se redondeará hasta conseguir un valor absoluto." ;
+ Text [ french ] = "Si le mode défini est différent de zero, un nombre négatif avec une précision négative sera arrondi à un nombre absolu." ;
+ Text [ dutch ] = "Als aangegeven en niet gelijk aan nul, dan wordt bij een negatief getal en stapgrootte naar boven afgerond.." ;
+ Text[ chinese_simplified ] = "Èç¹ûÉ趨²»µÈÓÚÁ㣬ÔÚ¸ºÊýºÍ¸º»ùÊýµÄÇé¿öÏÂÑØ\n¾ø¶ÔÖµÔö´óµÄ·½ÏòÉáÈë¡£";
+ Text[ russian ] = "Åñëè ñïîñîá çàäàí è íå ðàâåí íóëþ, òî â ñëó÷àå îòðèöàòåëüíîãî ÷èñëà è îòðèöàòåëüíîé çíà÷èìîñòè îêðóãëåíèå ïîñëåäóåò äî àáñîëþòíîãî çíà÷åíèÿ.";
+ Text[ polish ] = "Jeœli tryb nie jest zerem, zaokr¹gla siê w przypadku liczby ujemnej i ujemnej wa¿noœcido wartoœci absolutnej.";
+ Text[ japanese ] = "‘ÎÛ‚Ì”’l‚ªÏ²Å½‚ÌŽžA‚±‚±‚É0ˆÈŠO‚Ì”’l‚ðŽw’è‚·‚é‚ÆA”’l‚ð‹²‚ÞŠî€’l‚̂‚¬‚Ì”{”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG³]©w¤£µ¥©ó¹s¡M¦b­t¼Æ©M­t°ò¼Æªº±¡ªp¤Uªuµ´¹ï­È¼W¤jªº¤è¦VªÙ¤J¡C";
+ Text[ arabic ] = "ÅÐÇ Êã ÅÏÎÇá ÞíãÉ ÑÞãíÉ ÛíÑ ãÓÇæíÉ ááÕÝÑ¡ íÊã ÊÞÑíÈåÇ ÑÞãíÇð ááÃÚáì ÊÈÚÇð ááÒíÇÏÉ ÇáãÚØÇÉ¡ æÐáß ÅÐÇ ßÇäÊ ÇáÞíãÉ ÓÇáÈÉ.";
+ Text[ dutch ] = "Als aangegeven en niet gelijk aan nul, dan wordt bij een negatief getal en stapgrootte naar boven afgerond..";
+ Text[ chinese_simplified ] = "Èç¹ûÉ趨²»µÈÓÚÁ㣬ÔÚ¸ºÊýºÍ¸º»ùÊýµÄÇé¿öÏÂÑØ\n¾ø¶ÔÖµÔö´óµÄ·½ÏòÉáÈë¡£";
+ Text[ greek ] = "Áí ïñßæåôáé êáé åßíáé äéÜöïñï ôïõ ìçäåíüò, ôüôå óôç ðåñßðôùóç áñíçôéêïý áñéèìïý êáé âÞìáôïò ãßíåôáé óôñïããõëïðïßçóç ðñïò ôá ðÜíù áíáëïãéêÜ ðñïò ôï ðïóü.";
+ Text[ korean ] = "¸ðµå°¡ 0À¸·Î ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ¸¶À̳ʽº¼ö¿Í À¯È¿¼ýÀÚÀÇ °æ¿ì ±Ý¾×¿¡ µû¶ó ¹Ý¿Ã¸²µË´Ï´Ù.";
+ Text[ turkish ] = "Belirtildiðinde ve sýfýra eþit olmadýðýnda, negatif sayýlar ve adýmlar için meblaða göre yukarý yuvarlama yapýlýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function UNTERGRENZE #*=-
+ Resource SC_OPCODE_FLOOR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Rundet eine Zahl auf das nächste Vielfache der Schrittweite ab. : Rundet eine Zahl auf das nõchste Vielfache der Schrittweite ab. */
+ Text = "Rundet eine Zahl auf das nächste Vielfache der Schrittweite ab." ;
+ Text [ english ] = "Rounds number down, toward zero, to the nearest multiple of significance." ;
+ Text [ norwegian ] = "Rundet eine Zahl auf das nächste Vielfache der Schrittweite ab." ;
+ Text [ italian ] = "Arrotonda per difetto il numero al multiplo più prossimo a peso." ;
+ Text [ portuguese_brazilian ] = "Rundet eine Zahl auf das nächste Vielfache der Schrittweite ab." ;
+ Text [ portuguese ] = "Arredonda um número para baixo, aproximando-o de zero, até ao múltiplo mais próximo de significância." ;
+ Text [ finnish ] = "Rundet eine Zahl auf das nächste Vielfache der Schrittweite ab." ;
+ Text [ danish ] = "Runder et tal ned til nærmeste multiplum af betydning." ;
+ Text [ french ] = "Arrondit un nombre au multiple de l'argument précision en tendant vers zéro." ;
+ Text [ swedish ] = "Avrundar ett tal nedåt till närmaste multipel av signifikans." ;
+ Text [ dutch ] = "Rondt een getal naar beneden af op het dichtstbijzijnde veelvoud van de stapgrootte." ;
+ Text [ spanish ] = "Redondea un número al próximo múltiplo del argumento cifra_significativa, en dirección hacia cero." ;
+ Text [ english_us ] = "Rounds number down to the nearest multiple of significance." ;
+ Text[ chinese_simplified ] = "½«Ò»¸öÊý×ÖȥβÉáÈë³É×î½Ó½üµÄ»ùÊýµÄ±¶Êý¡£";
+ Text[ russian ] = "Îêðóãëÿåò ÷èñëî äî áëèæàéøåãî ìåíüøåãî ïî ìîäóëþ öåëîãî.";
+ Text[ polish ] = "Podaje wartoœæ liczby zaokr¹glonej do podanej wielokrotnoœci.";
+ Text[ japanese ] = "”’l‚ð‹²‚ÞŠî€’l‚Ì”{”‚Ì‚¤‚¿A¬‚³‚¢•û‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¤@­Ó¼Æ¦rªÙ¤J¦¨³Ì±µªñªº°ò¼Æªº­¿¼Æ¡C";
+ Text[ arabic ] = "ÊÞÑÈ ÑÞã Åáì ÇáÃÏäì¡ Åáì ÃÞÑÈ ÑÞã ãä ãÖÇÚÝÇÊ significance.";
+ Text[ dutch ] = "Rondt een getal naar beneden af op het dichtstbijzijnde veelvoud van de stapgrootte.";
+ Text[ chinese_simplified ] = "½«Ò»¸öÊý×ÖȥβÉáÈë³É×î½Ó½üµÄ»ùÊýµÄ±¶Êý¡£";
+ Text[ greek ] = "Óôñïããõëïðïéåß Ýíáí áñéèìü ðñïò ôá êÜôù ðñïò ôïí åðüìåíï ðïëëáðëÜóéï ôïõ åðéëåãìÝíïõ âÞìáôïò.";
+ Text[ korean ] = "°¡Àå ±Ù»çÄ¡ À¯È¿ ¼ýÀÚÀÇ ¹è¼ö·Î ¹Ý ¹ö¸²";
+ Text[ turkish ] = "Sayýyý, adýmýn bir alt katýna yuvarlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_UNTERGRENZE );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Número" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die abgerundet wird." ;
+ Text [ english ] = "is the numeric value you want to round." ;
+ Text [ norwegian ] = "Die Zahl, die abgerundet wird." ;
+ Text [ italian ] = "è il valore numerico che si desidera arrotondare." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die abgerundet wird." ;
+ Text [ portuguese ] = "é o valor numérico a ser arredondado." ;
+ Text [ finnish ] = "Die Zahl, die abgerundet wird." ;
+ Text [ danish ] = "Det tal som skal rundes ned." ;
+ Text [ french ] = "La valeur à arrondir en tendant vers zéro." ;
+ Text [ swedish ] = "Talet som avrundas." ;
+ Text [ dutch ] = "Het getal dat wordt afgerond." ;
+ Text [ spanish ] = "Es el valor numérico que se desea redondear." ;
+ Text [ english_us ] = "The number to be rounded down." ;
+ Text[ chinese_simplified ] = "Òª±»ÉáÈëµÄÊý×Ö¡£";
+ Text[ russian ] = "Îêðóãëÿåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba do zaokr¹glenia.";
+ Text[ japanese ] = "ŒvŽZ‚Ì‘ÎÛ‚É‚È‚é”’lB";
+ Text[ chinese_traditional ] = "­n³QªÙ¤Jªº¼Æ¦r¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÞÑíÈå ááÃÏäì.";
+ Text[ dutch ] = "Het getal dat wordt afgerond.";
+ Text[ chinese_simplified ] = "Òª±»ÉáÈëµÄÊý×Ö¡£";
+ Text[ greek ] = "Ï áñéèìüò ðïõ ðñüêåéôáé íá óôñïããõëïðïéçèåß ðñïò ôá êÜôù.";
+ Text[ korean ] = "¹Ý¹ö¸²µÉ ¼ö";
+ Text[ turkish ] = "Aþaðý yuvarlanan sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Schrittweite" ;
+ Text [ english ] = "significance" ;
+ Text [ norwegian ] = "Schrittweite" ;
+ Text [ italian ] = "peso" ;
+ Text [ portuguese_brazilian ] = "Schrittweite" ;
+ Text [ portuguese ] = "Significância" ;
+ Text [ finnish ] = "Schrittweite" ;
+ Text [ danish ] = "Betydning" ;
+ Text [ french ] = "Précision" ;
+ Text [ swedish ] = "signifikans" ;
+ Text [ dutch ] = "Stapgrootte" ;
+ Text [ spanish ] = "cifra_significativa" ;
+ Text [ english_us ] = "Significance" ;
+ Text[ chinese_simplified ] = "significance";
+ Text[ russian ] = "Çíà÷èìîñòü";
+ Text[ polish ] = "IstotnoϾ";
+ Text[ japanese ] = "Šî€’l";
+ Text[ chinese_traditional ] = "significance";
+ Text[ arabic ] = "significance";
+ Text[ dutch ] = "Stapgrootte";
+ Text[ chinese_simplified ] = "significance";
+ Text[ greek ] = "ÂÞìá";
+ Text[ korean ] = "ÀǹÌ";
+ Text[ turkish ] = "Adým";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Zahl, auf deren Vielfaches der Wert abgerundet wird." ;
+ Text [ english ] = "is the multiple to which you want to round." ;
+ Text [ norwegian ] = "Die Zahl, auf deren Vielfaches der Wert abgerundet wird." ;
+ Text [ italian ] = "è il multiplo per il quale si desidera arrotondare." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, auf deren Vielfaches der Wert abgerundet wird." ;
+ Text [ portuguese ] = "é o múltiplo do valor que deseja arredondar." ;
+ Text [ finnish ] = "Die Zahl, auf deren Vielfaches der Wert abgerundet wird." ;
+ Text [ danish ] = "Det multiplum der skal rundes ned til." ;
+ Text [ french ] = "Le multiple auquel vous souhaitez arrondir." ;
+ Text [ swedish ] = "Det tal till vars multipel värdet avrundas neråt." ;
+ Text [ dutch ] = "Het getal, op een veelvoud waarvan wordt afgerond." ;
+ Text [ spanish ] = "Es el múltiplo al que desea redondear." ;
+ Text [ english_us ] = "The number to whose multiple the value is to be rounded down." ;
+ Text[ chinese_simplified ] = "»ùÊý£¬ÊÇÖ¸ÉáÈë³ÉÆ䱶ÊýµÄÊý×Ö¡£";
+ Text[ russian ] = "Êîëè÷åñòâî öèôð, äî êîòîðîãî îêðóãëÿåòñÿ ÷èñëî.";
+ Text[ polish ] = "Wielokrotnoœæ, do której zostanie zaaokr¹glona wartoœæ.";
+ Text[ japanese ] = "”{”‚̊ƂȂ锒lB";
+ Text[ chinese_traditional ] = "°ò¼Æ¡M¬O«üªÙ¤J¦¨¨ä­¿¼Æªº¼Æ¦r¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÞÑíÈ ÇáÞíãÉ Åáì ãÖÇÚÝå.";
+ Text[ dutch ] = "Het getal, op een veelvoud waarvan wordt afgerond.";
+ Text[ chinese_simplified ] = "»ùÊý£¬ÊÇÖ¸ÉáÈë³ÉÆ䱶ÊýµÄÊý×Ö¡£";
+ Text[ greek ] = "Ï áñéèìüò ùò ðñïò ôï ðïëëáðëÜóéï ôïõ ïðïßïõ èá ãßíåé ç óôñïããõëïðïßçóç ôçò ôéìÞò ðñïò ôá êÜôù.";
+ Text[ korean ] = "¹Ý ¹ö¸²ÇÑ °ªÀÇ ¹è¼ö";
+ Text[ turkish ] = "Deðerin, bir alt katýna yuvarlandýðý sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ {
+ Text = "Modus" ;
+ Text [ english ] = "Mode" ;
+ Text [ portuguese ] = "Modo" ;
+ Text [ english_us ] = "Mode" ;
+ Text [ portuguese_brazilian ] = "Modus" ;
+ Text [ swedish ] = "läge" ;
+ Text [ danish ] = "Modus" ;
+ Text [ italian ] = "Modo" ;
+ Text [ spanish ] = "Modo" ;
+ Text [ french ] = "Mode" ;
+ Text [ dutch ] = "Modus" ;
+ Text[ chinese_simplified ] = "mode";
+ Text[ russian ] = "Ñïîñîá";
+ Text[ polish ] = "Tryb";
+ Text[ japanese ] = "Ó°ÄÞ";
+ Text[ chinese_traditional ] = "mode";
+ Text[ arabic ] = "Mode";
+ Text[ dutch ] = "Modus";
+ Text[ chinese_simplified ] = "mode";
+ Text[ greek ] = "ÊáôÜóôáóç";
+ Text[ korean ] = "¸ðµå";
+ Text[ turkish ] = "Kip";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ {
+ Text = "Wenn angegeben und ungleich Null wird bei negativer Zahl und Schrittweite betragsmäßig abgerundet." ;
+ Text [ english ] = "If specified and not zero a negative value and significance is rounded absolute." ;
+ Text [ portuguese ] = "Se o modo não estiver definido para zero, os números negativos com significância negativa serão arredondados para um valor absoluto." ;
+ Text [ english_us ] = "If given and not equal to zero then rounded down according to amount when a negative number and significance." ;
+ Text [ portuguese_brazilian ] = "Wenn angegeben und ungleich Null wird bei negativer Zahl und Schrittweite betragsmäßig abgerundet." ;
+ Text [ swedish ] = "Om angivet och ej lika med noll avrundas vid ett negativt tal och signifikans beloppsmässigt." ;
+ Text [ danish ] = "Hvis angivet og forskellig fra nul, bliver et negativt tal med en negativ betydning rundet ned til en absolut værdi." ;
+ Text [ italian ] = "Se il modo non è definito come zero, e con numeri negativi, arrotondamento in alto ad un valore assoluto." ;
+ Text [ spanish ] = "Si el modo no está definido como cero, un número negativo con un significado negativo se redondea hasta conseguir un valor absoluto." ;
+ Text [ french ] = "Si le mode défini est différent de zero, un nombre négatif avec une précision négative sera arrondi à un nombre absolu." ;
+ Text [ dutch ] = "Indfien aangegeven en niet gelijk aan nul dan wordt bij een negatief getal en bij negatieve stapgrootte afgerond." ;
+ Text[ chinese_simplified ] = "Èç¹ûÉ趨²»µÈÓÚÁ㣬ÔÚ¸ºÊýºÍ¸º»ùÊýµÄÇé¿öÏÂÑØ\n¾ø¶ÔÖµ¼õСµÄ·½ÏòȥβÉáÈë¡£";
+ Text[ russian ] = "Åñëè ñïîñîá çàäàí è íåðàâåí íóëþ, òî â ñëó÷àå îòðèöàòåëüíîãî ÷èñëà è îòðèöàòåëüíîé çíà÷èìîñòè îêðóãëåíèå ïîñëåäóåò äî àáñîëþòíîãî çíà÷åíèÿ.";
+ Text[ polish ] = "Jeœli tryb nie jest zerem, zaokr¹gla siê w przypadku liczby ujemnej i ujemnej wa¿noœcido wartoœci absolutnej.";
+ Text[ japanese ] = "‘ÎÛ‚Ì”’l‚ªÏ²Å½‚ÌŽžA‚±‚±‚É0ˆÈŠO‚Ì”’l‚ðŽw’è‚·‚é‚ÆA”’l‚ð‹²‚ÞŠî€’l‚̂‚¬‚Ì”{”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG³]©w¤£µ¥©ó¹s¡M¦b­t¼Æ©M­t°ò¼Æªº±¡ªp¤Uªuµ´¹ï­È´î¤pªº¤è¦V¥h§ÀªÙ¤J¡C";
+ Text[ arabic ] = "ÅÐÇ Êã ÅÏÎÇá ÞíãÉ ÑÞãíÉ ÛíÑ ãÓÇæíÉ ááÕÝÑ¡ íÊã ÊÞÑíÈåÇ ÑÞãíÇð ááÃÚáì ÊÈÚÇð ááÒíÇÏÉ ÇáãÚØÇÉ¡ æÐáß ÅÐÇ ßÇäÊ ÇáÞíãÉ ÓÇáÈÉ.";
+ Text[ dutch ] = "Indfien aangegeven en niet gelijk aan nul dan wordt bij een negatief getal en bij negatieve stapgrootte afgerond.";
+ Text[ chinese_simplified ] = "Èç¹ûÉ趨²»µÈÓÚÁ㣬ÔÚ¸ºÊýºÍ¸º»ùÊýµÄÇé¿öÏÂÑØ\n¾ø¶ÔÖµ¼õСµÄ·½ÏòȥβÉáÈë¡£";
+ Text[ greek ] = "Áí ïñßæåôáé êáé åßíáé äéÜöïñï ôïõ ìçäÝí, ôüôå óôç ðåñßðôùóç áñíçôéêïý áñéèìïý êáé âÞìáôïò ãßíåôáé óôñïããõëïðïßçóç ðñïò ôá êÜôù áíáëïãéêÜ ðñïò ôï ðïóü.";
+ Text[ korean ] = "¸ðµå°¡ 0À¸·Î ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ¸¶À̳ʽº¼ö¿Í À¯È¿¼ýÀÚÀÇ °æ¿ì ±Ý¾×¿¡ µû¶ó ¹Ý¿Ã¸²µË´Ï´Ù.";
+ Text[ turkish ] = "Belirtildiðinde ve sýfýra eþit olmadýðýnda, negatif sayý ve adým için meblaða göre aþaðý yuvarlanýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GGT #*=-
+ Resource SC_OPCODE_GGT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Größter gemeinsamer Teiler. : Gr÷˜ter gemeinsamer Teiler. */
+ Text = "Größter gemeinsamer Teiler." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Größter gemeinsamer Teiler." ;
+ Text [ italian ] = "Restituisce il massimo comune divisiore dei numeri indicati." ;
+ Text [ portuguese_brazilian ] = "Größter gemeinsamer Teiler." ;
+ Text [ portuguese ] = "Máximo divisor comum." ;
+ Text [ finnish ] = "Größter gemeinsamer Teiler." ;
+ Text [ danish ] = "Største fælles divisor." ;
+ Text [ french ] = "Renvoie le plus grand commun diviseur." ;
+ Text [ swedish ] = "Största gemensamma divisor." ;
+ Text [ dutch ] = "Grootste gemene deler." ;
+ Text [ spanish ] = "Máximo común divisor." ;
+ Text [ english_us ] = "Greatest Common Divisor" ;
+ Text[ chinese_simplified ] = "×î´ó¹«Ô¼Êý¡£";
+ Text[ russian ] = "Íàèáîëüøèé îáùèé äåëèòåëü.";
+ Text[ polish ] = "Najwiêkszy wspólny dzielnik.";
+ Text[ japanese ] = "Å‘åŒö–ñ”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "³Ì¤j¤½¬ù¼Æ¡C";
+ Text[ arabic ] = "ÇáÞÇÓã ÇáãÔÊÑß ÇáÃßÈÑ.";
+ Text[ dutch ] = "Grootste gemene deler.";
+ Text[ chinese_simplified ] = "×î´ó¹«Ô¼Êý¡£";
+ Text[ greek ] = "ÌÝãéóôïò êïéíüò äéáéñÝôçò.";
+ Text[ korean ] = "ÃÖ´ë °ø¾à¼ö";
+ Text[ turkish ] = "En büyük ortak bölen.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_GGT );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Ganzzahl " ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Ganzzahl " ;
+ Text [ italian ] = "Numero intero " ;
+ Text [ portuguese_brazilian ] = "Ganzzahl " ;
+ Text [ portuguese ] = "Número inteiro " ;
+ Text [ finnish ] = "Ganzzahl " ;
+ Text [ danish ] = "Heltal " ;
+ Text [ french ] = "Nombre entier " ;
+ Text [ swedish ] = "heltal " ;
+ Text [ dutch ] = "Integer " ;
+ Text [ spanish ] = "Número " ;
+ Text [ english_us ] = "Integer " ;
+ Text[ chinese_simplified ] = "Integer ";
+ Text[ russian ] = "Öåëîå ÷èñëî ";
+ Text[ polish ] = "Liczba ca³kowita ";
+ Text[ japanese ] = "®” ";
+ Text[ chinese_traditional ] = "Integer ";
+ Text[ arabic ] = "Integer ";
+ Text[ dutch ] = "Integer ";
+ Text[ chinese_simplified ] = "Integer ";
+ Text[ greek ] = "ÁêÝñáéïò ";
+ Text[ korean ] = "Á¤¼ö ";
+ Text[ turkish ] = "Tamsayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren größter gemeinsamer Teiler berechnet wird. : Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren gr÷˜ter gemeinsamer Teiler berechnet wird. */
+ Text = "Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren größter gemeinsamer Teiler berechnet wird." ;
+ Text [ english ] = "1;2,... " ;
+ Text [ norwegian ] = "Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren größter gemeinsamer Teiler berechnet wird." ;
+ Text [ italian ] = "1;2,... valori interi per i quali calcolare il massimo comune divisore" ;
+ Text [ portuguese_brazilian ] = "Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren größter gemeinsamer Teiler berechnet wird." ;
+ Text [ portuguese ] = "1; 2,... são números inteiros para os quais será calculado o máximo divisor comum." ;
+ Text [ finnish ] = "Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren größter gemeinsamer Teiler berechnet wird." ;
+ Text [ danish ] = "Heltal 1; heltal 2,... er hele tal, for hvilke den største fællesnævner skal beregnes." ;
+ Text [ french ] = "Nombre entier 1, nombre entier 2, ... sont les nombres entiers dont le plus grand commun diviseur doit être calculé." ;
+ Text [ swedish ] = "heltal 1; heltal 2,... är heltal vars största gemensamma nämnare beräknas." ;
+ Text [ dutch ] = "Integer 1;Integer 2,... zijn gehele getallen waarvan de grootste gemene deler wordt berekend." ;
+ Text [ spanish ] = "Número 1. número 2, ... números enteros, cuyo máximo común divisor se desea calcular." ;
+ Text [ english_us ] = "Integer 1; integer 2,... are integers for which the greatest common divisor is to be calculated." ;
+ Text[ chinese_simplified ] = "ÕûÊý 1;ÕûÊý 2,... ÊÇÒª¼ÆËãÆä×î´ó¹«Ô¼ÊýµÄÕûÊý¡£";
+ Text[ russian ] = "Öåëîå ÷èñëî 1; öåëîå ÷èñëî 2,... öåëûå ÷èñëà, äëÿ êîòîðûõ âû÷èñëÿåòñÿ íàèáîëüøèé îáùèé äåëèòåëü.";
+ Text[ polish ] = "1;2,... s¹ liczbami ca³kowitymi, dla których zostanie obliczony ich najwiêkszy wspólny dzielnik.";
+ Text[ japanese ] = "®”1¤®”2¤...‚ÍÅ‘åŒö–ñ”‚ð‹‚ß‚é”’lB";
+ Text[ chinese_traditional ] = "¾ã¼Æ 1;¾ã¼Æ 2,... ¬O­n­pºâ¨ä³Ì¤j¤½¬ù¼Æªº¾ã¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÕÍíÍ 1¡ ÚÏÏ ÕÍíÍ 2¡... ÃÚÏÇÏ ÕÍíÍÉ ÊÑíÏ ÍÓÇÈ ÇáÞÇÓã ÇáãÔÊÑß ÇáÃßÈÑ áåÇ.";
+ Text[ dutch ] = "Integer 1;Integer 2,... zijn gehele getallen waarvan de grootste gemene deler wordt berekend.";
+ Text[ chinese_simplified ] = "ÕûÊý 1;ÕûÊý 2,... ÊÇÒª¼ÆËãÆä×î´ó¹«Ô¼ÊýµÄÕûÊý¡£";
+ Text[ greek ] = "ÁêÝñáéïò 1 , ÁêÝñáéïò 2,... åßíáé áêÝñáéïé áñéèìïß ôùí ïðïßùí õðïëïãßæåôáé ï ìÝãéóôïò êïéíüò äéáéñÝôçò.";
+ Text[ korean ] = "Integer 1; integer 2,...Àº »êÃâµÈ ÃÖ´ë°ø¾à¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Tamsayý 1;Tamsayý 2,... en büyük ortak bölenleri hesaplanan tamsayýlardýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KGV #*=-
+ Resource SC_OPCODE_KGV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Kleinstes gemeinsames Vielfaches." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Kleinstes gemeinsames Vielfaches." ;
+ Text [ italian ] = "Restituisce il minimo comune multiplo dei numeri indicati." ;
+ Text [ portuguese_brazilian ] = "Kleinstes gemeinsames Vielfaches." ;
+ Text [ portuguese ] = "Mínimo múltiplo comum." ;
+ Text [ finnish ] = "Kleinstes gemeinsames Vielfaches." ;
+ Text [ danish ] = "Mindste fælles multiplum." ;
+ Text [ french ] = "Le plus petit commun multiple." ;
+ Text [ swedish ] = "Minsta gemensamma multipel." ;
+ Text [ dutch ] = "Kleinste gemene veelvoud." ;
+ Text [ spanish ] = "Mínimo común múltiplo." ;
+ Text [ english_us ] = "Lowest common multiple" ;
+ Text[ chinese_simplified ] = "×îС¹«±¶Êý¡£";
+ Text[ russian ] = "Íàèìåíüøåå îáùåå êðàòíîå.";
+ Text[ polish ] = "Najmniejsza wspólna wielokrotnoœæ.";
+ Text[ japanese ] = "ŬŒö”{”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "³Ì¤p¤½­¿¼Æ¡C";
+ Text[ arabic ] = "ÃÕÛÑ ãÖÇÚÝ ãÔÊÑß.";
+ Text[ dutch ] = "Kleinste gemene veelvoud.";
+ Text[ chinese_simplified ] = "×îС¹«±¶Êý¡£";
+ Text[ greek ] = "Ìéêñüôåñï êïéíü ðïëëáðëÜóéï";
+ Text[ korean ] = "ÃÖ¼Ò °ø ¹è¼ö";
+ Text[ turkish ] = "En küçük ortak kat.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_KGV );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Ganzzahl " ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Ganzzahl " ;
+ Text [ italian ] = "Numero intero " ;
+ Text [ portuguese_brazilian ] = "Ganzzahl " ;
+ Text [ portuguese ] = "Número inteiro " ;
+ Text [ finnish ] = "Ganzzahl " ;
+ Text [ danish ] = "Heltal " ;
+ Text [ french ] = "Nombre entier " ;
+ Text [ swedish ] = "Heltal " ;
+ Text [ dutch ] = "Integer " ;
+ Text [ spanish ] = "Número " ;
+ Text [ english_us ] = "Integer " ;
+ Text[ chinese_simplified ] = "Integer ";
+ Text[ russian ] = "Öåëîå ÷èñëî ";
+ Text[ polish ] = "Liczba ca³kowita ";
+ Text[ japanese ] = "®” ";
+ Text[ chinese_traditional ] = "Integer ";
+ Text[ arabic ] = "Integer ";
+ Text[ dutch ] = "Integer ";
+ Text[ chinese_simplified ] = "Integer ";
+ Text[ greek ] = "ÁêÝñáéïò ";
+ Text[ korean ] = "Á¤¼ö ";
+ Text[ turkish ] = "Tamsayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren kleinstes gemeinsames Vielfaches berechnet wird." ;
+ Text [ english ] = "1;2,... " ;
+ Text [ norwegian ] = "Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren kleinstes gemeinsames Vielfaches berechnet wird." ;
+ Text [ italian ] = "1;2,... numeri interi per i quali calcolare il minimo comune multiplo" ;
+ Text [ portuguese_brazilian ] = "Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren kleinstes gemeinsames Vielfaches berechnet wird." ;
+ Text [ portuguese ] = "1; 2,... são números inteiros para os quais será calculado o mínimo múltiplo comum." ;
+ Text [ finnish ] = "Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren kleinstes gemeinsames Vielfaches berechnet wird." ;
+ Text [ danish ] = "Heltal 1; heltal 2,... er hele tal, for hvilke det mindste fælles multiplum skal beregnes." ;
+ Text [ french ] = "Nombre entier 1, nombre entier 2, ... sont les nombres entiers dont le plus petit commun diviseur doit être calculé" ;
+ Text [ swedish ] = "heltal 1;heltal 2,... är heltal vars minsta gemensamma multipel beräknas." ;
+ Text [ dutch ] = "Integer 1;Integer 2,... zijn gehele getallen waarvan het kleinste gemene veelvoud wordt berekend." ;
+ Text [ spanish ] = "Número 1; número 2.... son números enteros cuyo mínimo común múltiplo se desea calcular." ;
+ Text [ english_us ] = "Integer 1; integer 2,... are integers whose smallest common multiple is to be calculated." ;
+ Text[ chinese_simplified ] = "ÕûÊý 1;ÕûÊý 2,... ÊÇÒª¼ÆËãÆä×îС¹«±¶ÊýµÄÕûÊý¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2,... öåëûå ÷èñëà, äëÿ êîòîðûõ âû÷èñëÿåòñÿ íàèìåíüøåå îáùåå êðàòíîå.";
+ Text[ polish ] = "1; 2,... s¹ liczbami ca³kowitymi, dla których ma zostaæ obliczona najmniejsza wspólna wielokrotnoœæ.";
+ Text[ japanese ] = "®”1¤®”2¤...‚ÍŬŒö”{”‚ð‹‚ß‚é”’lB";
+ Text[ chinese_traditional ] = "¾ã¼Æ 1;¾ã¼Æ 2,... ¬O­n­pºâ¨ä³Ì¤p¤½­¿¼Æªº¾ã¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÕÍíÍ 1¡ ÚÏÏ ÕÍíÍ 2¡... ÃÚÏÇÏ ÕÍíÍÉ ÊÑíÏ ÍÓÇÈ ÇáãÖÇÚÝ ÇáãÔÊÑß ÇáÃÕÛÑ áåÇ.";
+ Text[ dutch ] = "Integer 1;Integer 2,... zijn gehele getallen waarvan het kleinste gemene veelvoud wordt berekend.";
+ Text[ chinese_simplified ] = "ÕûÊý 1;ÕûÊý 2,... ÊÇÒª¼ÆËãÆä×îС¹«±¶ÊýµÄÕûÊý¡£";
+ Text[ greek ] = "ÁêÝñáéïò 1;ÁêÝñáéïò 2,... åßíáé áêÝñáéïé áñéèìïß ãéá ôïõò ïðïßïõò èá õðïëïãéóôåß ôï åëÜ÷éóôï êïéíü ðïëëáðëÜóéï.";
+ Text[ korean ] = "Integer 1; integer 2,...Àº »êÃâµÈ ÃÖ¼Ò °ø¹è¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Tamsayý 1;Tamsayý 2,... en küçük ortak katlarý hesaplanan tamsayýlardýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MTRANS #*=-
+ Resource SC_OPCODE_MAT_TRANS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Matrixtransponierung. Vertauscht Zeilen und Spalten einer Matrix." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Matrixtransponierung. Vertauscht Zeilen und Spalten einer Matrix." ;
+ Text [ italian ] = "Trasposizione di matrice. Scambia righe e colonne della matrice." ;
+ Text [ portuguese_brazilian ] = "Matrixtransponierung. Vertauscht Zeilen und Spalten einer Matrix." ;
+ Text [ portuguese ] = "Devolve a matriz inversa, transpondo as linhas e colunas da matriz especiificada." ;
+ Text [ finnish ] = "Matrixtransponierung. Vertauscht Zeilen und Spalten einer Matrix." ;
+ Text [ danish ] = "Matrixtransponering. Bytter om på rækker og kolonner i en matrix." ;
+ Text [ french ] = "Donne la transposée d'une matrice en transposant lignes et colonnes." ;
+ Text [ swedish ] = "Matristransponering. Byter rader och kolumner i en matris." ;
+ Text [ dutch ] = "Matrix transpositie. Verwisselt rijen en kolommen van een matrix." ;
+ Text [ spanish ] = "Devuelve la transposición de una matriz dada." ;
+ Text [ english_us ] = "Matrix transposition. Exchanges the rows and columns of an aray." ;
+ Text[ chinese_simplified ] = "¾ØÕóתÖá£×ªÖÃÒ»¸ö¾ØÕóµÄÁкÍÐС£";
+ Text[ russian ] = "Ïåðåñòàíîâêà ìàòðèöû: ìåíÿåò ìåñòàìè ñòðîêè ñî ñòîëáöàìè";
+ Text[ polish ] = "Transponowanie macierzy. Zamienia wiersze i kolumny macierzy.";
+ Text[ japanese ] = "”z—ñ‚Ìc•ûŒü‚Ɖ¡•ûŒü‚͈̾ٔ͂̕ϊ·‚ðs‚¢‚Ü‚·B";
+ Text[ chinese_traditional ] = "¯x°}Âà¸m¡CÂà¸m¤@­Ó¯x°}ªº¦CÄæ¡C";
+ Text[ arabic ] = "ÊäÞá ÇáãÕÝæÝÉ ãä ãßÇä áÂÎÑ. ÊÓÊÈÏá ÕÝæÝ æÃÚãÏÉ ãÕÝæÝÉ.";
+ Text[ dutch ] = "Matrix transpositie. Verwisselt rijen en kolommen van een matrix.";
+ Text[ chinese_simplified ] = "¾ØÕóתÖá£×ªÖÃÒ»¸ö¾ØÕóµÄÁкÍÐС£";
+ Text[ greek ] = "ÁíôéìåôÜèåóç ìÞôñáò. ÁíôáëëáãÞ ãñáììþí êáé óôçëþí ìéáò ìÞôñáò.";
+ Text[ korean ] = "Çà·ÄÀÇ Ä¡È¯. Çà·ÄÀÇ ¿­°ú ÇàÀ» ġȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Matris transpozisyonu. Bir matrisin satýr ve sütunlarýný birbirleri ile deðiþtirir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_MTRANS );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Matrix" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "Matrice" ;
+ Text [ portuguese_brazilian ] = "Matrix" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Matrix" ;
+ Text [ danish ] = "Matrix" ;
+ Text [ french ] = "Matrice" ;
+ Text [ swedish ] = "matris" ;
+ Text [ dutch ] = "Matrix" ;
+ Text [ spanish ] = "matriz" ;
+ Text [ english_us ] = "array" ;
+ Text[ chinese_simplified ] = "Array";
+ Text[ russian ] = "Ìàññèâ";
+ Text[ polish ] = "Macierz";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "Array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Matrix";
+ Text[ chinese_simplified ] = "Array";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä";
+ Text[ turkish ] = "Matris";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix, deren Zeilen und Spalten vertauscht werden." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Die Matrix, deren Zeilen und Spalten vertauscht werden." ;
+ Text [ italian ] = "La matrice le cui righe e colonne vanno scambiate." ;
+ Text [ portuguese_brazilian ] = "Die Matrix, deren Zeilen und Spalten vertauscht werden." ;
+ Text [ portuguese ] = "é a matriz cujas linhas e colunas deseja transpor." ;
+ Text [ finnish ] = "Die Matrix, deren Zeilen und Spalten vertauscht werden." ;
+ Text [ danish ] = "Den matrix som skal transponeres." ;
+ Text [ french ] = "La matrice dont les lignes et les colonnes vont être transposées." ;
+ Text [ swedish ] = "Matrisen vars rader och kolumner byter plats." ;
+ Text [ dutch ] = "De matrix waarvan de rijen en kolommen worden verwisseld." ;
+ Text [ spanish ] = "es la matriz cuyas filas y columnas desea transponer." ;
+ Text [ english_us ] = "The array in which the rows and columns have been transposed." ;
+ Text[ chinese_simplified ] = "ÆäÁкÍÐÐÐèÒª½øÐÐתÖõľØÕó¡£";
+ Text[ russian ] = "Ìàññèâ, ñòðîêè è ñòîëáöû êîòîðîãî ïåðåñòàâëÿþòñÿ.";
+ Text[ polish ] = "Macierz, której wiersze i kolumny zosta³y zamienione.";
+ Text[ japanese ] = "s—ñ‚Ì•ÏŠ·‚ðs‚¤”z—ñB";
+ Text[ chinese_traditional ] = "¨ä¦CÄæ»Ý­n¶i¦æÂà¸mªº¯x°}¡C";
+ Text[ arabic ] = "ÕÝíÝ ÚÏÏí íÍÊæí Úáì ÚÏÏò ãÊÓÇæò ãä ÇáÕÝæÝ æÇáÃÚãÏÉ.";
+ Text[ dutch ] = "De matrix waarvan de rijen en kolommen worden verwisseld.";
+ Text[ chinese_simplified ] = "ÆäÁкÍÐÐÐèÒª½øÐÐתÖõľØÕó¡£";
+ Text[ greek ] = "Ç ìÞôñá óôçí ïðïßá ðñüêåéôáé íá ãßíåé áíôéìåôÜèåóç ôùí ãñáììþí ìå ôéò óôÞëåò.";
+ Text[ korean ] = "¿­°ú ÇàÀÌ Ä¡È¯µÇ´Â Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Satýr ve sütunlarý birbirleri ile deðiþtirilen matris.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MMULT #*=-
+ Resource SC_OPCODE_MAT_MULT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Matrixmultiplikation. Bildet das Produkt zweier Matrizen." ;
+ Text [ english ] = "Returns the matrix product of two arrays." ;
+ Text [ norwegian ] = "Matrixmultiplikation. Bildet das Produkt zweier Matrizen." ;
+ Text [ italian ] = "Restituisce il prodotto di due matrici." ;
+ Text [ portuguese_brazilian ] = "Matrixmultiplikation. Bildet das Produkt zweier Matrizen." ;
+ Text [ portuguese ] = "Devolve o produto matricial de duas matrizes." ;
+ Text [ finnish ] = "Matrixmultiplikation. Bildet das Produkt zweier Matrizen." ;
+ Text [ danish ] = "Beregner produktet af to matrixer." ;
+ Text [ french ] = "Calcule le produit de deux matrices." ;
+ Text [ swedish ] = "Matrismultiplikation. Bildar produkten av två matriser." ;
+ Text [ dutch ] = "Vermenigvuldigt twee matrices." ;
+ Text [ spanish ] = "Devuelve la matriz producto de dos matrices." ;
+ Text [ english_us ] = "Matrix multiplication. Returns the product of two arrays." ;
+ Text[ chinese_simplified ] = "¾ØÕó³Ë»ý¡£¼ÆËãÁ½¸ö¾ØÕóµÄ³Ë»ý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ïðîèçâåäåíèå ìàòðèö.";
+ Text[ polish ] = "Mno¿enie macierzy. Jest iloczynem dwóch tablic.";
+ Text[ japanese ] = "2‚‚̔z—ñ‚Ìs—ñÏ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¯x°}­¼¿n¡C­pºâ¨â­Ó¯x°}ªº­¼¿n¡C";
+ Text[ arabic ] = "ÊÚØí ÇáãÕÝæÝÉ ÇáäÇÊÌÉ Úä ÖÑÈ ÕÝíÝíä.";
+ Text[ dutch ] = "Vermenigvuldigt twee matrices.";
+ Text[ chinese_simplified ] = "¾ØÕó³Ë»ý¡£¼ÆËãÁ½¸ö¾ØÕóµÄ³Ë»ý¡£";
+ Text[ greek ] = "Ðïëëáðëáóéáóìüò ìÞôñáò. Ó÷çìáôßæåé ôï ãéíüìåíï äýï ìçôñþí.";
+ Text[ korean ] = "Çà·ÄÀÇ °ö. µÎ Çà·ÄÀÇ °öÀ» ±¸¼ºÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Matris çarpýmý. Ýki matrisin çarpým sonucunu verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_MMULT );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Matrix" ;
+ Text [ english ] = "array 1" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "matrice 1" ;
+ Text [ portuguese_brazilian ] = "Matrix" ;
+ Text [ portuguese ] = "Matriz 1" ;
+ Text [ finnish ] = "Matrix" ;
+ Text [ danish ] = "Matrix" ;
+ Text [ french ] = "Matrice" ;
+ Text [ swedish ] = "matris" ;
+ Text [ dutch ] = "Matrix" ;
+ Text [ spanish ] = "matriz" ;
+ Text [ english_us ] = "array" ;
+ Text[ chinese_simplified ] = "Array";
+ Text[ russian ] = "Ìàòðèöà 1";
+ Text[ polish ] = "Macierz";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "Array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Matrix";
+ Text[ chinese_simplified ] = "Array";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä";
+ Text[ turkish ] = "Matris";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die erste Matrix für das Matrixprodukt. : Die erste Matrix f³r das Matrixprodukt. */
+ Text = "Die erste Matrix für das Matrixprodukt." ;
+ Text [ english ] = "are the arrays you want to multiply." ;
+ Text [ norwegian ] = "Die erste Matrix für das Matrixprodukt." ;
+ Text [ italian ] = "la prima matrice che si desidera moltiplicare." ;
+ Text [ portuguese_brazilian ] = "Die erste Matrix für das Matrixprodukt." ;
+ Text [ portuguese ] = "é a primeira matriz para obter o produto matricial." ;
+ Text [ finnish ] = "Die erste Matrix für das Matrixprodukt." ;
+ Text [ danish ] = "Den første matrix som skal indgå i produktet." ;
+ Text [ french ] = "Matrice1 pour le produit des deux matrices." ;
+ Text [ swedish ] = "Den första matrisen för matrisprodukten." ;
+ Text [ dutch ] = "De eerste matrix voor de vermenigvuldiging." ;
+ Text [ spanish ] = "Es la primera matriz para el producto de matrices." ;
+ Text [ english_us ] = "The first matrix for the matrix product." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËã¾ØÕó³Ë»ýµÄµÚÒ»¸ö¾ØÕó¡£";
+ Text[ russian ] = "Ïåðâàÿ ìàòðèöà äëÿ âû÷èñëåíèÿ ïðîèçâåäåíèÿ ìàòðèö.";
+ Text[ polish ] = "Pierwsza macierz dla iloczynu macierzy.";
+ Text[ japanese ] = "s—ñÏ‚ð‹‚ß‚é1‚–ڂ̔z—ñB";
+ Text[ chinese_traditional ] = "¥Î©ó¯x°}­¼¿nªº²Ä¤@­Ó¯x°}¡C";
+ Text[ arabic ] = "ÇáãÕÝæÝÉ ÇáÃæáì ãä ÇáÃÑÞÇã ÇáãÑÇÏ ÖÑÈåÇ.";
+ Text[ dutch ] = "De eerste matrix voor de vermenigvuldiging.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËã¾ØÕó³Ë»ýµÄµÚÒ»¸ö¾ØÕó¡£";
+ Text[ greek ] = "Ç ðñþôç ìÞôñá ãéá ôï ãéíüìåíï ìçôñþí.";
+ Text[ korean ] = "Çà·Ä°öÀ» À§ÇÑ Ã¹ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Matris çarpýmý için birinci matris.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Matrix" ;
+ Text [ english ] = "array 2" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "matrice 2" ;
+ Text [ portuguese_brazilian ] = "Matrix" ;
+ Text [ portuguese ] = "Matriz 2" ;
+ Text [ finnish ] = "Matrix" ;
+ Text [ danish ] = "Matrix" ;
+ Text [ french ] = "Matrice" ;
+ Text [ swedish ] = "matris" ;
+ Text [ dutch ] = "Matrix" ;
+ Text [ spanish ] = "matriz" ;
+ Text [ english_us ] = "array" ;
+ Text[ chinese_simplified ] = "Array";
+ Text[ russian ] = "Ìàòðèöà 2";
+ Text[ polish ] = "Macierz";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "Array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Matrix";
+ Text[ chinese_simplified ] = "Array";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä";
+ Text[ turkish ] = "Matris";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die zweite Matrix mit der gleichen Anzahl von Zeilen, wie die erste Matrix Spalten hat." ;
+ Text [ english ] = "are the arrays you want to multiply." ;
+ Text [ norwegian ] = "Die zweite Matrix mit der gleichen Anzahl von Zeilen, wie die erste Matrix Spalten hat." ;
+ Text [ italian ] = "La seconda matrice con lo stesso numero di righe pari al numero di colonne della prima matrice." ;
+ Text [ portuguese_brazilian ] = "Die zweite Matrix mit der gleichen Anzahl von Zeilen, wie die erste Matrix Spalten hat." ;
+ Text [ portuguese ] = "é a segunda matriz com um número de linhas igual ao número de colunas da primeira matriz." ;
+ Text [ finnish ] = "Die zweite Matrix mit der gleichen Anzahl von Zeilen, wie die erste Matrix Spalten hat." ;
+ Text [ danish ] = "Den anden matrix med samme antal rækker som den første matrix har kolonner." ;
+ Text [ french ] = "Matrice2 pour le produit des deux matrices. Elle comporte autant de lignes que matrice1 a de colonnes." ;
+ Text [ swedish ] = "Den andra matrisen med samma antal rader som den första matrisen har kolumner." ;
+ Text [ dutch ] = "De tweede matrix met hetzelde aantal rijen als de eerste matrix kolommen heeft." ;
+ Text [ spanish ] = "Es la segunda matriz con el mismo número de filas y columnas que la primera." ;
+ Text [ english_us ] = "The second matrix with the same number of rows as the first matrix has columns." ;
+ Text[ chinese_simplified ] = "µÚ¶þ¸ö¾ØÕóµÄÐÐÊýºÍµÚÒ»¸ö¾ØÕóºÍÁÐÊýÏàµÈ¡£";
+ Text[ russian ] = "Âòîðàÿ ìàòðèöà. Êîëè÷åñòâî ñòðîê âòîðîé ìàòðèöû è êîëè÷åñòâî ñòîëáöîâ ïåðâîé ìàòðèöû äîëæíî áûòü îäèíàêîâûì.";
+ Text[ polish ] = "Druga macierz zawiera tak¹ sam¹ iloœæ wierszy, jak pierwsza kolumn.";
+ Text[ japanese ] = "1‚–ڂ̔z—ñ‚Æ“™‚µ‚¢s”‚Ì2‚–ڂ̔z—ñB";
+ Text[ chinese_traditional ] = "²Ä¤G­Ó¯x°}ªº¦C¼Æ©M²Ä¤@­Ó¯x°}©MÄæ¼Æ¬Ûµ¥¡C";
+ Text[ arabic ] = "ÇáãÕÝæÝÉ ÇáËÇäíÉ ÇáÊí ÊÍÊæí Úáì ÚÏÏ ãä ÇáÕÝæÝ ãÓÇæò áÚÏÏ ÃÚãÏÉ ÇáãÕÝæÝÉ ÇáÃæáì.";
+ Text[ dutch ] = "De tweede matrix met hetzelde aantal rijen als de eerste matrix kolommen heeft.";
+ Text[ chinese_simplified ] = "µÚ¶þ¸ö¾ØÕóµÄÐÐÊýºÍµÚÒ»¸ö¾ØÕóºÍÁÐÊýÏàµÈ¡£";
+ Text[ greek ] = "Ç äåýôåñç ìÞôñá ìå ðëÞèïò ãñáììþí ßóï ìå ôïí ðëÞèïò óôçëþí ôçò ðñþôçò ìÞôñáò.";
+ Text[ korean ] = "ù¹ø° Çà·Ä ¿­ÀÇ ¼ö¿Í °°Àº ÇàÀÇ ¼ö¸¦ °¡Áø µÎ¹ø° Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Birinci matrisin sütun sayýsýna eþit satýr sayýsý olan ikinci matris.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MDET #*=-
+ Resource SC_OPCODE_MAT_DET
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Matrixdeterminante." ;
+ Text [ english ] = "Returns the matrix determinant of an array." ;
+ Text [ norwegian ] = "Bestimmt die Matrixdeterminante." ;
+ Text [ italian ] = "Restituisce il determinante di una matrice." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Matrixdeterminante." ;
+ Text [ portuguese ] = "Devolve o determinante de uma matriz." ;
+ Text [ finnish ] = "Bestimmt die Matrixdeterminante." ;
+ Text [ danish ] = "Beregner determinanten for en matrix." ;
+ Text [ french ] = "Renvoie le déterminant d'une matrice." ;
+ Text [ swedish ] = "Bestämmer matrisdeterminanten." ;
+ Text [ dutch ] = "Berekent de determinant van een matrix." ;
+ Text [ spanish ] = "Devuelve la matriz determinante." ;
+ Text [ english_us ] = "Returns the matrix determinant of an array." ;
+ Text[ chinese_simplified ] = "È·¶¨¾ØÕóÐÐÁÐʽµÄÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò îïðåäåëèòåëü ìàòðèöû.";
+ Text[ polish ] = "Okreœla wyznacznik macierzy.";
+ Text[ japanese ] = "”z—ñ‚Ìs—ñŽ®‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó¼Æ²Õªº¯x°}¦æ¦C¦¡ªº­È¡C";
+ Text[ arabic ] = "ÊÚíä ãÍÏÏ ÇáÊäÙíãÉ áÕÝíÝ.";
+ Text[ dutch ] = "Berekent de determinant van een matrix.";
+ Text[ chinese_simplified ] = "È·¶¨¾ØÕóÐÐÁÐʽµÄÖµ¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ïñßæïõóá ìéáò ìÞôñáò.";
+ Text[ korean ] = "Çà·Ä½ÄÀ» ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Matris determinantýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_MDET );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Matrix" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Matrix" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Matrix" ;
+ Text [ danish ] = "Matrix" ;
+ Text [ french ] = "Matrice" ;
+ Text [ swedish ] = "matris" ;
+ Text [ dutch ] = "Matrix" ;
+ Text [ spanish ] = "Matriz" ;
+ Text [ english_us ] = "array" ;
+ Text[ chinese_simplified ] = "Array";
+ Text[ russian ] = "Ìàòðèöà";
+ Text[ polish ] = "Macierz";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "Array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Matrix";
+ Text[ chinese_simplified ] = "Array";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä";
+ Text[ turkish ] = "Matris";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix, deren Determinante bestimmt wird." ;
+ Text [ english ] = "is a numeric array with an equal number of rows and columns." ;
+ Text [ norwegian ] = "Die Matrix, deren Determinante bestimmt wird." ;
+ Text [ italian ] = "è la matrice della quale calcolare il determinante." ;
+ Text [ portuguese_brazilian ] = "Die Matrix, deren Determinante bestimmt wird." ;
+ Text [ portuguese ] = "é uma matriz numérica com um número igual de linhas e colunas." ;
+ Text [ finnish ] = "Die Matrix, deren Determinante bestimmt wird." ;
+ Text [ danish ] = "Den matrix determinanten skal bestemmes for." ;
+ Text [ french ] = "La matrice dont vous souhaitez calculer la déterminante." ;
+ Text [ swedish ] = "Matris vars determinant bestäms." ;
+ Text [ dutch ] = "De matrix waarvan de determinant wordt berekend." ;
+ Text [ spanish ] = "Es una matriz numérica con el mismo número de filas y columnas." ;
+ Text [ english_us ] = "The array for which the determinant is to be determined." ;
+ Text[ chinese_simplified ] = "Ҫȷ¶¨ÆäÐÐÁÐʽֵµÄÊý×é¡£";
+ Text[ russian ] = "Ìàòðèöà, îïðåäåëèòåëü êîòîðîé âîçâðàùàåòñÿ.";
+ Text[ polish ] = "Macierz, dla której maj¹ zostaæ obliczone wyznaczniki.";
+ Text[ japanese ] = "s—ñŽ®‚ð‹‚ß‚é”z—ñB";
+ Text[ chinese_traditional ] = "­n½T©w¨ä¦æ¦C¦¡­Èªº¼Æ²Õ¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÚÏÏíÉ ÊÍÊæí Úáì ÚÏÏò ãÊÓÇæò ãä ÇáÕÝæÝ æÇáÃÚãÏÉ.";
+ Text[ dutch ] = "De matrix waarvan de determinant wordt berekend.";
+ Text[ chinese_simplified ] = "Ҫȷ¶¨ÆäÐÐÁÐʽֵµÄÊý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá, ôçò ïðïßáò ðñüêåéôáé íá ïñéóôåß ç ïñßæïõóá.";
+ Text[ korean ] = "½ÄÀÌ ÁöÁ¤µÉ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Determinantý belirlenen matris.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MINV #*=-
+ Resource SC_OPCODE_MAT_INV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Inverse einer Matrix." ;
+ Text [ english ] = "Returns the inverse matrix for the matrix stored in an array." ;
+ Text [ norwegian ] = "Bestimmt die Inverse einer Matrix." ;
+ Text [ italian ] = "Restituisce l'inversa di una matrice." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Inverse einer Matrix." ;
+ Text [ portuguese ] = "Devolve a matriz inversa da matriz especificada." ;
+ Text [ finnish ] = "Bestimmt die Inverse einer Matrix." ;
+ Text [ danish ] = "Beregner den inverse matrix." ;
+ Text [ french ] = "Donne l'inverse d'une matrice." ;
+ Text [ swedish ] = "Bestämmer inversen för en matris." ;
+ Text [ dutch ] = "Berekent de inverse van een matrix." ;
+ Text [ spanish ] = "Devuelve la inversa de una matriz." ;
+ Text [ english_us ] = "Returns the inverse of an array." ;
+ Text[ chinese_simplified ] = "ÇóÒ»¸ö¾ØÕóµÄÄæ¾ØÕó¡£";
+ Text[ russian ] = "Îïðåäåëÿåò îáðàòíóþ ìàòðèöó äëÿ ìàòðèöû.";
+ Text[ polish ] = "Wyznacza odwrotnoϾ macierzy.";
+ Text[ japanese ] = "”z—ñ‚Ì‹ts—ñ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¨D¤@­Ó¯x°}ªº°f¯x°}¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÇáÊäÙíãÉ ÛíÑ ÇáãäÝÑÏÉ ááÊäÙíãÉ ÇáãÎÒäÉ Ýí ÕÝíÝ.";
+ Text[ dutch ] = "Berekent de inverse van een matrix.";
+ Text[ chinese_simplified ] = "ÇóÒ»¸ö¾ØÕóµÄÄæ¾ØÕó¡£";
+ Text[ greek ] = "Ïñßæåé ôçí áíÜóôñïöç ìÞôñá ìéáò ìÞôñáò.";
+ Text[ korean ] = "Çà·ÄÀÇ ¿ªÀ» ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Matrisin tersini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_MINV );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Matrix" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Matrix" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Matrix" ;
+ Text [ danish ] = "Matrix" ;
+ Text [ french ] = "Matrice" ;
+ Text [ swedish ] = "matris" ;
+ Text [ dutch ] = "Matrix" ;
+ Text [ spanish ] = "Matriz" ;
+ Text [ english_us ] = "array" ;
+ Text[ chinese_simplified ] = "Array";
+ Text[ russian ] = "Ìàòðèöà";
+ Text[ polish ] = "Macierz";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "Array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Matrix";
+ Text[ chinese_simplified ] = "Array";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä";
+ Text[ turkish ] = "Matris";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix, die invertiert wird." ;
+ Text [ english ] = "is a numeric array with an equal number of rows and columns." ;
+ Text [ norwegian ] = "Die Matrix, die invertiert wird." ;
+ Text [ italian ] = "è la matrice da invertire." ;
+ Text [ portuguese_brazilian ] = "Die Matrix, die invertiert wird." ;
+ Text [ portuguese ] = "é a matriz que será invertida." ;
+ Text [ finnish ] = "Die Matrix, die invertiert wird." ;
+ Text [ danish ] = "Den matrix som skal inverteres." ;
+ Text [ french ] = "La matrice à invertir." ;
+ Text [ swedish ] = "Matrisen som inverteras." ;
+ Text [ dutch ] = "De matrix waarvan de inverse wordt berekend." ;
+ Text [ spanish ] = "La matriz que será invertida." ;
+ Text [ english_us ] = "The array to be inverted." ;
+ Text[ chinese_simplified ] = "ÒªÇóÆäÄæ¾ØÕóµÄ¾ØÕó¡£";
+ Text[ russian ] = "Èíâåðòèðóåìàÿ ìàòðèöà.";
+ Text[ polish ] = "Macierz, która zostanie odwrócona.";
+ Text[ japanese ] = "‹ts—ñ‚ð‹‚ß‚é”z—ñB";
+ Text[ chinese_traditional ] = "­n¨D¨ä°f¯x°}ªº¯x°}¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÚÏÏíÉ ÊÍÊæí Úáì ÚÏÏò ãÊÓÇæò ãä ÇáÕÝæÝ æÇáÃÚãÏÉ.";
+ Text[ dutch ] = "De matrix waarvan de inverse wordt berekend.";
+ Text[ chinese_simplified ] = "ÒªÇóÆäÄæ¾ØÕóµÄ¾ØÕó¡£";
+ Text[ greek ] = "Ç ìÞôñá ðïõ ðñüêåéôáé íá áíôéóôñáöåß.";
+ Text[ korean ] = "¿ªÀ¸·Î µÉ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Tersine çevirilen matris.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function EINHEITSMATRIX #*=-
+ Resource SC_OPCODE_MATRIX_UNIT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Bestimmt die quadratische Einheitsmatrix einer bestimmten Größe. : Bestimmt die quadratische Einheitsmatrix einer bestimmten Gr÷˜e. */
+ Text = "Bestimmt die quadratische Einheitsmatrix einer bestimmten Größe." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Bestimmt die quadratische Einheitsmatrix einer bestimmten Größe." ;
+ Text [ italian ] = "Determina la matrice quadrata unitaria di una certa dimensione." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die quadratische Einheitsmatrix einer bestimmten Größe." ;
+ Text [ portuguese ] = "Devolve a matriz quadrada unitária de uma dada dimensão." ;
+ Text [ finnish ] = "Bestimmt die quadratische Einheitsmatrix einer bestimmten Größe." ;
+ Text [ danish ] = "Returnerer den kvadratiske enhedsmatrix for en bestemt størrelse." ;
+ Text [ french ] = "Renvoie la matrice unitaire carrée pour une dimension spécifiée." ;
+ Text [ swedish ] = "Bestämmer den kvadratiska enhetsmatrisen för en bestämd storlek." ;
+ Text [ dutch ] = "Bepaalt de vierkante eenheidsmatrix van een bepaalde grootte." ;
+ Text [ spanish ] = "Devuelve la matriz unitaria (con el mismo número de filas y columnas) de un tamaño determinado." ;
+ Text [ english_us ] = "Returns the unitary square matrix of a certain size." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸ö¸ø¶¨ÐÐÁÐÊýµÄÕý·½µ¥Ôª¾ØÕó¡£";
+ Text[ russian ] = "Îïðåäåëÿåò êâàäðàòíóþ åäèíè÷íóþ ìàòðèöó çàäàííîãî ðàçìåðà.";
+ Text[ polish ] = "Okreœla kwadratow¹ macierz unitarn¹ pewnego rozmiaru.";
+ Text[ japanese ] = "‚ ‚éˆê’è‚Ì‘å‚«‚³‚ð’PˆÊ‚Æ‚µ‚½³•ûs—ñ(ÏÄظ½)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó¿é¤JÄæ¦C¼Æªº¥¿¤è³æ¤¸¯x°}¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáãÕÝæÝÉ ÇáæÍÏæíÉ ÇáÊÑÈíÚíÉ áÍÌã ãÍÏÏ.";
+ Text[ dutch ] = "Bepaalt de vierkante eenheidsmatrix van een bepaalde grootte.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸ö¸ø¶¨ÐÐÁÐÊýµÄÕý·½µ¥Ôª¾ØÕó¡£";
+ Text[ greek ] = "Ïñßæåé ôçí ôåôñáãùíéêÞ ìïíáäéáßá ìÞôñá åíüò óõãêåêñéìÝíïõ ìåãÝèïõò.";
+ Text[ korean ] = "ƯÁ¤ Å©±âÀÇ Á¦°ö ´ÜÀ§Çà·ÄÀ» ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Belirli bir büyüklüðün üniter kare matrisini verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_EINHEITSMATRIX );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Dimension" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Dimension" ;
+ Text [ italian ] = "Dimensioni" ;
+ Text [ portuguese_brazilian ] = "Dimension" ;
+ Text [ portuguese ] = "Dimensão" ;
+ Text [ finnish ] = "Dimension" ;
+ Text [ danish ] = "Dimension" ;
+ Text [ french ] = "Dimension" ;
+ Text [ swedish ] = "dimension" ;
+ Text [ dutch ] = "Dimensie" ;
+ Text [ spanish ] = "Dimensión" ;
+ Text [ english_us ] = "Dimensions" ;
+ Text[ chinese_simplified ] = "Dimensions";
+ Text[ russian ] = "Ðàçìåðíîñòü";
+ Text[ polish ] = "Wymiar";
+ Text[ japanese ] = "ŽŸŒ³";
+ Text[ chinese_traditional ] = "©w¤Ø¤o";
+ Text[ arabic ] = "Dimensions";
+ Text[ dutch ] = "Dimensie";
+ Text[ chinese_simplified ] = "Dimensions";
+ Text[ greek ] = "ÄéáóôÜóåéò";
+ Text[ korean ] = "Â÷¿ø";
+ Text[ turkish ] = "Boyut";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Größe der Einheitsmatrix. : Die Gr÷˜e der Einheitsmatrix. */
+ Text = "Die Größe der Einheitsmatrix." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Die Größe der Einheitsmatrix." ;
+ Text [ italian ] = "Le dimensioni della matrice unitaria" ;
+ Text [ portuguese_brazilian ] = "Die Größe der Einheitsmatrix." ;
+ Text [ portuguese ] = "é o tamanho da matriz unitária." ;
+ Text [ finnish ] = "Die Größe der Einheitsmatrix." ;
+ Text [ danish ] = "Enhedsmatrixens størrelse." ;
+ Text [ french ] = "La dimension de la matrice unitaire." ;
+ Text [ swedish ] = "Storleken på enhetsmatrisen." ;
+ Text [ dutch ] = "De grootte van de eenheidsmatrix." ;
+ Text [ spanish ] = "Es el tamaño de la matriz unitaria." ;
+ Text [ english_us ] = "The size of the unitary matrix." ;
+ Text[ chinese_simplified ] = "Ö¸¶¨µ¥Ôª¾ØÕóµÄ´óС¡£";
+ Text[ russian ] = "Ðàçìåð åäèíè÷íîé ìàòðèöû.";
+ Text[ polish ] = "Rozmiar macierzy unitarnej.";
+ Text[ japanese ] = "”z—ñ(ÏÄظ½)‚Ì’PˆÊ‚Æ‚È‚é‘å‚«‚³B";
+ Text[ chinese_traditional ] = "«ü©w³æ¤¸¯x°}ªº¤j¤p¡C";
+ Text[ arabic ] = "ÍÌã ÇáãÕÝæÝÉ ÇáæÍÏæíøÉ.";
+ Text[ dutch ] = "De grootte van de eenheidsmatrix.";
+ Text[ chinese_simplified ] = "Ö¸¶¨µ¥Ôª¾ØÕóµÄ´óС¡£";
+ Text[ greek ] = "Ôï ìÝãåèïò ôïõ ìïíáäéáßïõ ðßíáêá.";
+ Text[ korean ] = "´ÜÀ§Çà·ÄÀÇ Å©±âÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Üniter matris büyüklüðü.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SUMMENPRODUKT #*=-
+ Resource SC_OPCODE_SUM_PRODUCT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "(Skalarprodukt) Summiert die Produkte der Argumente von Matrizen." ;
+ Text [ english ] = "Multiplies corresponding components in the given arrays and returns the sum of those products." ;
+ Text [ norwegian ] = "(Skalarprodukt) Summiert die Produkte der Argumente von Matrizen." ;
+ Text [ italian ] = "Restitusce la somma dei prodotti degli argomenti delle matrici (prodotto scalare)." ;
+ Text [ portuguese_brazilian ] = "(Skalarprodukt) Summiert die Produkte der Argumente von Matrizen." ;
+ Text [ portuguese ] = "Devolve a soma dos produtos dos componentes das matrizes correspondentes." ;
+ Text [ finnish ] = "(Skalarprodukt) Summiert die Produkte der Argumente von Matrizen." ;
+ Text [ danish ] = "(Skalarprodukt) Beregner summeren af produkter af argumenter i matrixer." ;
+ Text [ french ] = "Revoie la somme des produits des éléments correspondants des matrices." ;
+ Text [ swedish ] = "(Skalärprodukt) Summerar produkterna av argument från matriser." ;
+ Text [ dutch ] = "Berekent de som van de producten van matrixcomponenten." ;
+ Text [ spanish ] = "Devuelve la suma de los productos de los argumentos de las matrices suministradas." ;
+ Text [ english_us ] = "(Inner products) Returns the sum of the products of array arguments." ;
+ Text[ chinese_simplified ] = "½«Êý×é¼ä¶ÔÓ¦µÄÔªËØÏà³Ë£¬È»ºó½«³Ë»ýÏà¼Ó¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñóììó ïðîèçâåäåíèé àðãóìåíòîâ ìàññèâîâ.";
+ Text[ polish ] = "Oblicza sumê iloczynów odpowiadaj¹cych sobie sk³adników tablic.";
+ Text[ japanese ] = "ˆø”‚Æ‚µ‚ÄŽw’肵‚½”z—ñ‚̑Ήž‚·‚é—v‘fŠÔ‚ÌÏ‚ð‚Ü‚¸ŒvŽZ‚µA‚³‚ç‚É‚»‚̘a‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¼Æ²Õ¶¡¹ïÀ³ªº¤¸¯À¬Û­¼¡MµM«á±N­¼¿n¬Û¥[¡C";
+ Text[ arabic ] = "ÊÌãÚ äÊÇÆÌ ÖÑÈ æÓÇÆØ ÇáÕÝÇÆÝ.";
+ Text[ dutch ] = "Berekent de som van de producten van matrixcomponenten.";
+ Text[ chinese_simplified ] = "½«Êý×é¼ä¶ÔÓ¦µÄÔªËØÏà³Ë£¬È»ºó½«³Ë»ýÏà¼Ó¡£";
+ Text[ greek ] = "(Åóùôåñéêü ãéíüìåíï) Áèñïßæåé ôá ãéíüìåíá ôùí ïñéóìÜôùí ôùí ðéíÜêùí.";
+ Text[ korean ] = "(½Ç¼ö°ö)Çà·Ä µ¶¸³º¯¼öÀÇ °öÀ» ÇÕ»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Matris deðiþkenlerinin çarpýmlarýný toplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_SUMMENPRODUKT );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Matrix " ;
+ Text [ english ] = "array " ;
+ Text [ norwegian ] = "Matrix " ;
+ Text [ italian ] = "matrice " ;
+ Text [ portuguese_brazilian ] = "Matrix " ;
+ Text [ portuguese ] = "Matriz " ;
+ Text [ finnish ] = "Matrix " ;
+ Text [ danish ] = "Matrix " ;
+ Text [ french ] = "Matrice " ;
+ Text [ swedish ] = "matris " ;
+ Text [ dutch ] = "Matrix " ;
+ Text [ spanish ] = "matriz " ;
+ Text [ english_us ] = "Array " ;
+ Text[ chinese_simplified ] = "Array ";
+ Text[ russian ] = "Ìàññèâ ";
+ Text[ polish ] = "Macierz ";
+ Text[ japanese ] = "ÏÄظ½ ";
+ Text[ chinese_traditional ] = "Array ";
+ Text[ arabic ] = "Array ";
+ Text[ dutch ] = "Matrix ";
+ Text[ chinese_simplified ] = "Array ";
+ Text[ greek ] = "ÌÞôñá ";
+ Text[ korean ] = "Çà·Ä ";
+ Text[ turkish ] = "Matris ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Matrix 1; Matrix 2,... sind bis zu 30 Matrizen, deren Argumente multipliziert werden." ;
+ Text [ english ] = "are 2 to 30 arrays whose components you want to multiply and then add." ;
+ Text [ norwegian ] = "Matrix 1; Matrix 2,... sind bis zu 30 Matrizen, deren Argumente multipliziert werden." ;
+ Text [ italian ] = "sono da 2 a 30 matrici di cui si desidera moltiplicare gli elementi." ;
+ Text [ portuguese_brazilian ] = "Matrix 1; Matrix 2,... sind bis zu 30 Matrizen, deren Argumente multipliziert werden." ;
+ Text [ portuguese ] = "Matriz1, matriz2,... são matrizes até 30, cujos componentes se desejam multiplicar e depois somar." ;
+ Text [ finnish ] = "Matrix 1; Matrix 2,... sind bis zu 30 Matrizen, deren Argumente multipliziert werden." ;
+ Text [ danish ] = "Matrix 1; matrix 2,... er op til 30 matrixer, hvis argumenter skal ganges." ;
+ Text [ french ] = "Matrice 1, matrice 2, ... sont jusqu'à 30 matrices dont vous souhaitez multiplier les éléments." ;
+ Text [ swedish ] = "matris 1; matris 2;... är upp till 30 matriser vars argument multipliceras." ;
+ Text [ dutch ] = "Matrix 1; Matrix 2,... zijn maximaal 30 matrices waarvan de argumenten worden vermenigvuldigd." ;
+ Text [ spanish ] = "Matriz 1; Matriz 2;...son hasta 30 matrices cuyos argumentos se desea multiplicar." ;
+ Text [ english_us ] = "Array 1, array 2, ... are up to 30 arrays whose arguments are to be multiplied." ;
+ Text[ chinese_simplified ] = "Êý×é 1; Êý×é 2,... ÊÇ1ÖÁ 30 ¸öÊý×飬ÆäÏàÓ¦ÔªËØÐèÒª½øÐÐÏà³Ë²¢ÇóºÍ¡£";
+ Text[ russian ] = "Ìàññèâ 1; ìàññèâ 2,... äî 30 ìàññèâîâ, àðãóìåíòû êîòîðûõ ïåðåìíîæàþòñÿ.";
+ Text[ polish ] = "Od 1 do 30 tablic, których sk³adniki maj¹ zostaæ wymno¿one.";
+ Text[ japanese ] = "ÏÄظ½1¤ÏÄظ½2¤...‚ÍŒvŽZ‚Ì‘ÎÛ‚Æ‚È‚é—v‘f‚ðŠÜ‚Þ30ŒÂ‚Ü‚Å‚Ì”z—ñB";
+ Text[ chinese_traditional ] = "¼Æ²Õ 1; ¼Æ²Õ 2,... ¬O1¦Ü 30 ­Ó¼Æ²Õ¡M¨ä¬ÛÀ³¤¸¯À»Ý­n¶i¦æ¬Û­¼¨Ã¨D©M¡C";
+ Text[ arabic ] = "array1;array2... ÍÊì 30 ÕÝíÝÇð ÊÑíÏ ÖÑÈ ãßæäÇÊåÇ.";
+ Text[ dutch ] = "Matrix 1; Matrix 2,... zijn maximaal 30 matrices waarvan de argumenten worden vermenigvuldigd.";
+ Text[ chinese_simplified ] = "Êý×é 1; Êý×é 2,... ÊÇ1ÖÁ 30 ¸öÊý×飬ÆäÏàÓ¦ÔªËØÐèÒª½øÐÐÏà³Ë²¢ÇóºÍ¡£";
+ Text[ greek ] = "ÌÞôñá 1, ÌÞôñá 2,... åßíáé Ýùò êáé 30 ìÞôñåò ôùí ïðïßùí èá ðïëëáðëáóéáóôïýí ôá ïñßóìáôÜ ôïõò.";
+ Text[ korean ] = "Çà·Ä 1, Çà·Ä 2,... ´Â µ¶¸³º¯¼ö°¡ °öÇØÁú 30 Çà·Ä±îÁöÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Matris 1; matris 2,... Deðiþkenleri çarpýlan ve sayýlarý 30'u bulan matrislerdir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SUMMEX2MY2 #*=-
+ Resource SC_OPCODE_SUM_X2MY2
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Summiert die Differenzen der Quadrate zweier Matrizen." ;
+ Text [ english ] = "Returns the sum of the difference of squares of corresponding values in two arrays." ;
+ Text [ norwegian ] = "Summiert die Differenzen der Quadrate zweier Matrizen." ;
+ Text [ italian ] = "Restituisce la somma delle differenze dei quadrati di due matrici." ;
+ Text [ portuguese_brazilian ] = "Summiert die Differenzen der Quadrate zweier Matrizen." ;
+ Text [ portuguese ] = "Soma as diferenças dos quadrados de duas matrizes." ;
+ Text [ finnish ] = "Summiert die Differenzen der Quadrate zweier Matrizen." ;
+ Text [ danish ] = "Beregner summen af differenser i kvadrater mellem tilsvarende værdier i to matrixer." ;
+ Text [ french ] = "Renvoie la somme de la différence des carrés des valeurs correspondantes de deux matrices" ;
+ Text [ swedish ] = "Summerar kvadraternas differenser för två matriser." ;
+ Text [ dutch ] = "Berekent de som van het verschil tussen de kwadraten van twee matrices." ;
+ Text [ spanish ] = "Devuelve la sumatoria de la diferencia de cuadrados de dos matrices." ;
+ Text [ english_us ] = "Returns the sum of the difference of squares of two arrays." ;
+ Text[ chinese_simplified ] = "Á½¸öÊý×éÖжÔÓ¦ÊýÖµµÄƽ·½²îÖ®ºÍ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñóììó ðàçíîñòåé êâàäðàòîâ ñîîòâåòñòâóþùèõ çíà÷åíèé â äâóõ ìàññèâàõ.";
+ Text[ polish ] = "Sumuje ró¿nicê kwadratów dwóch macierzy.";
+ Text[ japanese ] = "2‚‚̔z—ñ‚őΉž‚·‚é”z—ñ—v‘f‚Ì•½•û·‚ð‡Œv‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¨â­Ó¼Æ²Õ¤¤¹ïÀ³¼Æ­Èªº¥­¤è®t¤§©M¡C";
+ Text[ arabic ] = "ÊÌãÚ ÇáÝÇÑÞ Èíä ãÑÈÚÇÊ ÕÝíÝíä.";
+ Text[ dutch ] = "Berekent de som van het verschil tussen de kwadraten van twee matrices.";
+ Text[ chinese_simplified ] = "Á½¸öÊý×éÖжÔÓ¦ÊýÖµµÄƽ·½²îÖ®ºÍ¡£";
+ Text[ greek ] = "Áèñïßæåé ôéò äéáöïñÝò ôùí ôåôñáãþíùí äýï ìçôñþí.";
+ Text[ korean ] = "µÎ°öÀÇ ¹è¿­ÀÇ Â÷ÀÌÀÇ Çհ踦 ¹Ýȯ";
+ Text[ turkish ] = "Ýki matrisin karelerinin farklarýný toplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_SUMMEX2MY2 );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Matrix_X" ;
+ Text [ english ] = "array_x" ;
+ Text [ norwegian ] = "Matrix X" ;
+ Text [ italian ] = "matrice_x" ;
+ Text [ portuguese_brazilian ] = "Matrix X" ;
+ Text [ portuguese ] = "Matriz_X" ;
+ Text [ finnish ] = "Matrix X" ;
+ Text [ danish ] = "Matrix_X" ;
+ Text [ french ] = "Matrice_X" ;
+ Text [ swedish ] = "matris_x" ;
+ Text [ dutch ] = "Matrix_X" ;
+ Text [ spanish ] = "Matriz_X" ;
+ Text [ english_us ] = "array_x" ;
+ Text[ chinese_simplified ] = "array_X";
+ Text[ russian ] = "Ìàññèâ_X";
+ Text[ polish ] = "macierz_X";
+ Text[ japanese ] = "”z—ñX";
+ Text[ chinese_traditional ] = "array_x";
+ Text[ arabic ] = "ãÕÝæÝÉ_X";
+ Text[ dutch ] = "Matrix_X";
+ Text[ chinese_simplified ] = "array_X";
+ Text[ greek ] = "ÌÞôñá_×";
+ Text[ korean ] = "Çà·Ä_x";
+ Text[ turkish ] = "Matris_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Erste Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ english ] = "is the first array or range of values." ;
+ Text [ norwegian ] = "Erste Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ italian ] = "è la prima matrice o il primo intervallo di valori." ;
+ Text [ portuguese_brazilian ] = "Erste Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ portuguese ] = "é a primeira matriz ou intervalo de valores." ;
+ Text [ finnish ] = "Erste Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ danish ] = "Første matrix hvis kvadrerede argumenter summeres." ;
+ Text [ french ] = "La première matrice dont les carrés des éléments vont être additionnés" ;
+ Text [ swedish ] = "Första matrisen vars argument skall summeras kvadrerade." ;
+ Text [ dutch ] = "De eerste matrix waarvan de argumenten in het kwadraat worden opgeteld." ;
+ Text [ spanish ] = "es la primera matriz o área de valores." ;
+ Text [ english_us ] = "First array where the square of the arguments are totalled." ;
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Ïåðâûé ìàññèâ, àðãóìåíòû êîòîðîãî âîçâîäÿòñÿ â êâàäðàò, à çàòåì ñêëàäûâàþòñÿ.";
+ Text[ polish ] = "Pierwsza macierz, której argumenty zostan¹ podniesione do kwadratu i zsumowane.";
+ Text[ japanese ] = "‘ÎÛ‚Æ‚È‚éˆê•û‚Ì”’l”z—ñ‚Ü‚½‚͔͈ÍB";
+ Text[ chinese_traditional ] = "²Ä¤@­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ Ãæ ÇáäØÇÞ ÇáÃæá ãä ÇáÞíã.";
+ Text[ dutch ] = "De eerste matrix waarvan de argumenten in het kwadraat worden opgeteld.";
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Ðñþôç ìÞôñá, ôçò ïðïßáò áèñïßæïíôáé ôá ôåôñÜãùíá ôùí ïñéóìÜôùí ôçò.";
+ Text[ korean ] = "µ¶¸³ º¯¼öÀÇ Á¦°öÀÌ ÇÕ»êµÉ ù° Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýçerdiði deðiþkenlerin karelerinin toplandýðý birinci matris.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Matrix_Y" ;
+ Text [ english ] = "array_y" ;
+ Text [ norwegian ] = "Matrix Y" ;
+ Text [ italian ] = "matrice_y" ;
+ Text [ portuguese_brazilian ] = "Matrix Y" ;
+ Text [ portuguese ] = "Matriz_Y" ;
+ Text [ finnish ] = "Matrix Y" ;
+ Text [ danish ] = "Matrix_Y" ;
+ Text [ french ] = "Matrice_Y" ;
+ Text [ swedish ] = "matris_y" ;
+ Text [ dutch ] = "Matrix_Y" ;
+ Text [ spanish ] = "Matriz_Y" ;
+ Text [ english_us ] = "array_y" ;
+ Text[ chinese_simplified ] = "array_Y";
+ Text[ russian ] = "Ìàññèâ_Y";
+ Text[ polish ] = "macierz_Y";
+ Text[ japanese ] = "”z—ñY";
+ Text[ chinese_traditional ] = "array_y";
+ Text[ arabic ] = "ãÕÝæÝÉ_Y";
+ Text[ dutch ] = "Matrix_Y";
+ Text[ chinese_simplified ] = "array_Y";
+ Text[ greek ] = "ÌÞôñá_Y";
+ Text[ korean ] = "Çà·Ä_y";
+ Text[ turkish ] = "Matris_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Zweite Matrix, deren Argumente quadriert abgezogen werden." ;
+ Text [ english ] = "is the second array or range of values." ;
+ Text [ norwegian ] = "Zweite Matrix, deren Argumente quadriert abgezogen werden." ;
+ Text [ italian ] = "è la seconda matrice o il secondo intervallo di valori." ;
+ Text [ portuguese_brazilian ] = "Zweite Matrix, deren Argumente quadriert abgezogen werden." ;
+ Text [ portuguese ] = "é a segunda matriz ou intervalo de valores." ;
+ Text [ finnish ] = "Zweite Matrix, deren Argumente quadriert abgezogen werden." ;
+ Text [ danish ] = "Anden matrix hvis kvadrerede argumenter trækkes fra." ;
+ Text [ french ] = "La seconde matrice dont les carrés des éléments vont être soustraits." ;
+ Text [ swedish ] = "Andra matrisen vars argument dras ifrån kvadrerade." ;
+ Text [ dutch ] = "De tweede matrix waarvan de argumenten in het kwadraat worden afgetrokken." ;
+ Text [ spanish ] = "es la segunda matriz o área de valores." ;
+ Text [ english_us ] = "Second array where the square of the arguments is to be subtracted." ;
+ Text[ chinese_simplified ] = "ÆäÔª¼þµÄƽ·½ÖµÏà¼õµÄµÚ¶þ¸ö¾ØÕó¡£";
+ Text[ russian ] = "Âòîðîé ìàññèâ, àðãóìåíòû êîòîðîãî âîçâîäÿòñÿ â êâàäðàò, à çàòåì âû÷èòàþòñÿ.";
+ Text[ polish ] = "Druga macierz, której argumenty zostan¹ podniesione do kwadratu i odjête.";
+ Text[ japanese ] = "‘ÎÛ‚Æ‚È‚é‚à‚¤ˆê•û‚Ì”’l”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "¨ä¤¸¥óªº¥­¤è­È¬Û´îªº²Ä¤G­Ó¯x°}¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ Ãæ ÇáäØÇÞ ÇáËÇäí ãä ÇáÞíã.";
+ Text[ dutch ] = "De tweede matrix waarvan de argumenten in het kwadraat worden afgetrokken.";
+ Text[ chinese_simplified ] = "ÆäÔª¼þµÄƽ·½ÖµÏà¼õµÄµÚ¶þ¸ö¾ØÕó¡£";
+ Text[ greek ] = "Äåýôåñç ìÞôñá, ôçò ïðïßáò èá áöáéñåèïýí ôá ôåôñÜãùíá ôùí ïñéóìÜôùí ôçò.";
+ Text[ korean ] = "µ¶¸³ º¯¼öÀÇ Á¦°öÀÌ °¨»êµÉ µÑ° Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýçerdiði deðiþkenlerin karelerinin çýkartýldýðý ikinci matris.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SUMMEX2PY2 #*=-
+ Resource SC_OPCODE_SUM_X2DY2
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Summiert die Quadratesummen zweier Matrizen." ;
+ Text [ english ] = "Returns the sum of the sum of squares of corresponding values in two arrays." ;
+ Text [ norwegian ] = "Summiert die Quadratesummen zweier Matrizen." ;
+ Text [ italian ] = "Restituisce la somma della somma dei quadrati dei valori di due matrici." ;
+ Text [ portuguese_brazilian ] = "Summiert die Quadratesummen zweier Matrizen." ;
+ Text [ portuguese ] = "Devolve as somas dos quadrados de duas matrizes." ;
+ Text [ finnish ] = "Summiert die Quadratesummen zweier Matrizen." ;
+ Text [ danish ] = "Beregner summen af summen af kvadrater af tilsvarende værdier i to matrixer." ;
+ Text [ french ] = "Additionne les sommes des carrés de deux matrices." ;
+ Text [ swedish ] = "Summerar kvadratsummorna av två matriser." ;
+ Text [ dutch ] = "Telt de sommen van de kwadraten van twee matrices bij elkaar op." ;
+ Text [ spanish ] = "Devuelve la sumatoria de la suma de los cuadrados de dos matrices." ;
+ Text [ english_us ] = "Returns the total of the square sum of two arrays." ;
+ Text[ chinese_simplified ] = "Á½¸öÊý×éÖжÔÓ¦ÊýÖµµÄƽ·½ºÍÖ®ºÍ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñóììó ñóìì êâàäðàòîâ ñîîòâåòñòâóþùèõ ýëåìåíòîâ äâóõ ìàññèâîâ.";
+ Text[ polish ] = "Sumuje sumy kwadratów dwóch tablic.";
+ Text[ japanese ] = "2‚‚̔z—ñ‚őΉž‚·‚é”z—ñ—v‘f‚Ì•½•û˜a‚ð‡Œv‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¨â­Ó¼Æ²Õ¤¤¹ïÀ³¼Æ­Èªº¥­¤è©M¤§©M¡C";
+ Text[ arabic ] = "ÊÌãÚ ãÌãæÚ ãÑÈÚÇÊ ÕÝíÝíä.";
+ Text[ dutch ] = "Telt de sommen van de kwadraten van twee matrices bij elkaar op.";
+ Text[ chinese_simplified ] = "Á½¸öÊý×éÖжÔÓ¦ÊýÖµµÄƽ·½ºÍÖ®ºÍ¡£";
+ Text[ greek ] = "Áèñïßæåé ôá åðéìÝñïõò áèñïßóìáôá ôùí ôåôñáãþíùí äýï ìçôñþí.";
+ Text[ korean ] = "µÎ ¹è¿­ÀÇÇÕ°èÀÇ Á¦°öÀÇ Àüü¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Ýki matrisin karelerinin toplamýný alýr.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_SUMMEX2PY2 );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Matrix_X" ;
+ Text [ english ] = "array_x" ;
+ Text [ norwegian ] = "Matrix X" ;
+ Text [ italian ] = "matrice_x" ;
+ Text [ portuguese_brazilian ] = "Matrix X" ;
+ Text [ portuguese ] = "Matriz_X" ;
+ Text [ finnish ] = "Matrix X" ;
+ Text [ danish ] = "Matrix_X" ;
+ Text [ french ] = "Matrice_X" ;
+ Text [ swedish ] = "matris_x" ;
+ Text [ dutch ] = "Matrix_X" ;
+ Text [ spanish ] = "Matriz_X" ;
+ Text [ english_us ] = "array_x" ;
+ Text[ chinese_simplified ] = "array_X";
+ Text[ russian ] = "Ìàññèâ_X";
+ Text[ polish ] = "macierz_X";
+ Text[ japanese ] = "”z—ñX";
+ Text[ chinese_traditional ] = "array_x";
+ Text[ arabic ] = "ãÕÝæÝÉ_X";
+ Text[ dutch ] = "Matrix_X";
+ Text[ chinese_simplified ] = "array_X";
+ Text[ greek ] = "ÌÞôñá_×";
+ Text[ korean ] = "Çà·Ä_x";
+ Text[ turkish ] = "Matris_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Erste Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ english ] = "is the first array or range of values." ;
+ Text [ norwegian ] = "Erste Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ italian ] = "è la prima matrice o il primo intervallo di valori." ;
+ Text [ portuguese_brazilian ] = "Erste Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ portuguese ] = "é a primeira matriz ou intervalo de valores." ;
+ Text [ finnish ] = "Erste Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ danish ] = "Første matrix hvis kvadrerede argumenter summeres." ;
+ Text [ french ] = "La première matrice dont les carrés des éléments vont être additionnés." ;
+ Text [ swedish ] = "Första matrisen vars argument summeras kvadrerade." ;
+ Text [ dutch ] = "De eerste matrix waarvan de argumenten in het kwadraat worden opgeteld." ;
+ Text [ spanish ] = "es la primera matriz o área de valores." ;
+ Text [ english_us ] = "First array where the square of the arguments are totalled." ;
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Ïåðâûé ìàññèâ, àðãóìåíòû êîòîðîãî âîçâîäÿòñÿ â êâàäðàò, à çàòåì ñêëàäûâàþòñÿ.";
+ Text[ polish ] = "Pierwsza macierz, której argumenty zostan¹ podniesione do kwadratu i zsumowane.";
+ Text[ japanese ] = "‘ÎÛ‚Æ‚È‚éˆê•û‚Ì”’l”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "²Ä¤@­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ Ãæ ÇáäØÇÞ ÇÇáÃæá ãä ÇáÞíã.";
+ Text[ dutch ] = "De eerste matrix waarvan de argumenten in het kwadraat worden opgeteld.";
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Ðñþôç ìÞôñá, ôçò ïðïßáò áèñïßæïíôáé ôá ôåôñÜãùíá ôùí ïñéóìÜôùí ôçò.";
+ Text[ korean ] = "µ¶¸³ º¯¼öÀÇ Á¦°öÀÌ ÇÕ»êµÉ ù° Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýçerdiði deðiþkenlerin karelerinin toplandýðý birinci matris.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Matrix_Y" ;
+ Text [ english ] = "array_y" ;
+ Text [ norwegian ] = "Matrix Y" ;
+ Text [ italian ] = "matrice_y" ;
+ Text [ portuguese_brazilian ] = "Matrix Y" ;
+ Text [ portuguese ] = "Matriz _Y" ;
+ Text [ finnish ] = "Matrix Y" ;
+ Text [ danish ] = "Matrix_Y" ;
+ Text [ french ] = "Matrice_Y" ;
+ Text [ swedish ] = "matris_y" ;
+ Text [ dutch ] = "Matrix_Y" ;
+ Text [ spanish ] = "Matriz_Y" ;
+ Text [ english_us ] = "array_y" ;
+ Text[ chinese_simplified ] = "array_Y";
+ Text[ russian ] = "Ìàññèâ_Y";
+ Text[ polish ] = "macierz_Y";
+ Text[ japanese ] = "”z—ñY";
+ Text[ chinese_traditional ] = "array_y";
+ Text[ arabic ] = "ãÕÝæÝÉ_Y";
+ Text[ dutch ] = "Matrix_Y";
+ Text[ chinese_simplified ] = "array_Y";
+ Text[ greek ] = "ÌÞôñá_Y";
+ Text[ korean ] = "Çà·Ä_y";
+ Text[ turkish ] = "Matris_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Zweite Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ english ] = "is the second array or range of values." ;
+ Text [ norwegian ] = "Zweite Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ italian ] = "è la seconda matrice i cui argomenti al quadrato vengono sommati." ;
+ Text [ portuguese_brazilian ] = "Zweite Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ portuguese ] = "é a segunda matriz ou intervalo de valores." ;
+ Text [ finnish ] = "Zweite Matrix, deren Argumente quadriert summiert werden." ;
+ Text [ danish ] = "Anden matrix hvis kvadrerede argumenter summeres." ;
+ Text [ french ] = "La seconde matrice dont les carrés des éléments vont être additionnés" ;
+ Text [ swedish ] = "Andra matrisen vars argument summeras kvadrerade" ;
+ Text [ dutch ] = "De tweede matrix waarvan de argumenten in het kwadraat worden opgeteld." ;
+ Text [ spanish ] = "es la segunda matriz o área de valores." ;
+ Text [ english_us ] = "Second array where the square of the arguments is to be totalled." ;
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Âòîðîé ìàññèâ, àðãóìåíòû êîòîðîãî âîçâîäÿòñÿ â êâàäðàò, à çàòåì ñêëàäûâàþòñÿ.";
+ Text[ polish ] = "Druga macierz, której argumenty zostan¹ podniesione do kwadratu i zsumowane.";
+ Text[ japanese ] = "‘ÎÛ‚Æ‚È‚é‚à‚¤ˆê•û‚Ì”’l”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "²Ä¤G­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ Ãæ ÇáäØÇÞ ÇáËÇäí ãä ÇáÞíã.";
+ Text[ dutch ] = "De tweede matrix waarvan de argumenten in het kwadraat worden opgeteld.";
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Äåýôåñç ìÞôñá, ôçò ïðïßáò ðñüêåéôáé íá ðñïóôåèïýí ôá ôåôñÜãùíá ôùí ïñéóìÜôùí ôçò.";
+ Text[ korean ] = "µ¶¸³ º¯¼öÀÇ Á¦°öÀÌ ÇÕ»êµÉ µÎ¹ø° Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýçerdiði deðiþkenlerin karelerinin toplandýðý ikinci matris.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SUMMEXMY2 #*=-
+ Resource SC_OPCODE_SUM_XMY2
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Summiert die Quadrate der Differenzen zweier Matrizen." ;
+ Text [ english ] = "Returns the sum of squares of differences of corresponding values in two arrays." ;
+ Text [ norwegian ] = "Summiert die Quadrate der Differenzen zweier Matrizen." ;
+ Text [ italian ] = "Restituisce la somma dei quadrati delle differenze di due matrici." ;
+ Text [ portuguese_brazilian ] = "Summiert die Quadrate der Differenzen zweier Matrizen." ;
+ Text [ portuguese ] = "Soma os quadrados das diferenças obtidas em duas matrizes." ;
+ Text [ finnish ] = "Summiert die Quadrate der Differenzen zweier Matrizen." ;
+ Text [ danish ] = "Beregner summen af kvadrater af differenser mellem tilsvarende værdier i to matrixer." ;
+ Text [ french ] = "Renvoie la somme des carrés des différences entre deux matrices." ;
+ Text [ swedish ] = "Summerar kvadraterna av två matrisers differenser." ;
+ Text [ dutch ] = "Berekent de som van de kwadraten van de verschillen van twee matrices." ;
+ Text [ spanish ] = "Devuelve la sumatoria del cuadrado de la diferencia entre dos matrices." ;
+ Text [ english_us ] = "Returns the sum of squares of differences of two arrays." ;
+ Text[ chinese_simplified ] = "Á½¸öÊý×éÖжÔÓ¦ÊýÖµÖ®²îµÄƽ·½ºÍ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñóììó êâàäðàòîâ ðàçíîñòåé ñîîòâåòñòâóþùèõ çíà÷åíèé â äâóõ ìàññèâàõ.";
+ Text[ polish ] = "Oblicza sumê kwadratów odpowiadaj¹cych sobie wartoœci dwóch tablic.";
+ Text[ japanese ] = "2‚‚̔z—ñ‚őΉž‚·‚é”z—ñ—v‘f‚Ì·‚ð2悵A‚³‚ç‚É‚»‚̇Œv‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¨â­Ó¼Æ²Õ¤¤¹ïÀ³¼Æ­È¤§®tªº¥­¤è©M¡C";
+ Text[ arabic ] = "ÊÌãÚ ãÑÈÚÇÊ ÇáÝÇÑÞ Èíä ÕÝíÝíä.";
+ Text[ dutch ] = "Berekent de som van de kwadraten van de verschillen van twee matrices.";
+ Text[ chinese_simplified ] = "Á½¸öÊý×éÖжÔÓ¦ÊýÖµÖ®²îµÄƽ·½ºÍ¡£";
+ Text[ greek ] = "Áèñïßæåé ôá ôåôñÜãùíá ôùí äéáöïñþí (õðïëïßðùí) äýï ìçôñþí.";
+ Text[ korean ] = "µÎ ¹è¿­ÀÇ Â÷ÀÌÀÇ °öÀÇ Çհ踦 ¹Ýȯ";
+ Text[ turkish ] = "Ýki matrisin farklarýnýn karelerini toplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_SUMMEXMY2 );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Matrix_X" ;
+ Text [ english ] = "array_x" ;
+ Text [ norwegian ] = "Matrix X" ;
+ Text [ italian ] = "matrice_x" ;
+ Text [ portuguese_brazilian ] = "Matrix X" ;
+ Text [ portuguese ] = "Matriz_X" ;
+ Text [ finnish ] = "Matrix X" ;
+ Text [ danish ] = "Matrix_X" ;
+ Text [ french ] = "Matrice_X" ;
+ Text [ swedish ] = "matris_x" ;
+ Text [ dutch ] = "Matrix_X" ;
+ Text [ spanish ] = "Matriz_X" ;
+ Text [ english_us ] = "array_x" ;
+ Text[ chinese_simplified ] = "array_X";
+ Text[ russian ] = "Ìàññèâ_X";
+ Text[ polish ] = "macierz_X";
+ Text[ japanese ] = "”z—ñX";
+ Text[ chinese_traditional ] = "array_x";
+ Text[ arabic ] = "ãÕÝæÝÉ_X";
+ Text[ dutch ] = "Matrix_X";
+ Text[ chinese_simplified ] = "array_X";
+ Text[ greek ] = "ÌÞôñá_×";
+ Text[ korean ] = "Çà·Ä_x";
+ Text[ turkish ] = "Matris_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Erste Matrix zur Bildung der Argumentdifferenzen." ;
+ Text [ english ] = "is the first array or range of values." ;
+ Text [ norwegian ] = "Erste Matrix zur Bildung der Argumentdifferenzen." ;
+ Text [ italian ] = "È la prima matrice per il calcolo delle differenze tra gli elementi." ;
+ Text [ portuguese_brazilian ] = "Erste Matrix zur Bildung der Argumentdifferenzen." ;
+ Text [ portuguese ] = "é a primeira matriz ou intervalo de valores." ;
+ Text [ finnish ] = "Erste Matrix zur Bildung der Argumentdifferenzen." ;
+ Text [ danish ] = "Den første matrix til dannelse af argumentdifferenser." ;
+ Text [ french ] = "La première matrice pour le calcul des différences entre les éléments." ;
+ Text [ swedish ] = "Första matrisen för bildning av argumentdifferenserna." ;
+ Text [ dutch ] = "De eerste matrix voor het vormen van de verschillen tussen de argumenten." ;
+ Text [ spanish ] = "es la primera matriz o área de valores." ;
+ Text [ english_us ] = "First array for forming argument differences." ;
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Ïåðâûé ìàññèâ äëÿ îáðàçîâàíèÿ ðàçíîñòåé àðãóìåíòîâ.";
+ Text[ polish ] = "Pierwsza macierz do tworzenia ró¿nic argumentów.";
+ Text[ japanese ] = "‘ÎÛ‚Æ‚È‚éˆê•û‚Ì”’l”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "²Ä¤@­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ Ãæ ÇáäØÇÞ ÇáÃæá ãä ÇáÞíã.";
+ Text[ dutch ] = "De eerste matrix voor het vormen van de verschillen tussen de argumenten.";
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Ðñþôç ìÞôñá ãéá ôïí ó÷çìáôéóìü ôùí äéáöïñþí ïñéóìÜôùí.";
+ Text[ korean ] = "µ¶¸³ º¯¼öÀÇ Â÷¸¦ ±¸¼ºÇϱâ À§ÇÑ Ã¹Â° Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþken farklarýnýn oluþturulmasý için birinci matris.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Matrix_Y" ;
+ Text [ english ] = "array_y" ;
+ Text [ norwegian ] = "Matrix Y" ;
+ Text [ italian ] = "matrice_y" ;
+ Text [ portuguese_brazilian ] = "Matrix Y" ;
+ Text [ portuguese ] = "Matriz_Y" ;
+ Text [ finnish ] = "Matrix Y" ;
+ Text [ danish ] = "Matrix_Y" ;
+ Text [ french ] = "Matrice_Y" ;
+ Text [ swedish ] = "matris_y" ;
+ Text [ dutch ] = "Matrix_Y" ;
+ Text [ spanish ] = "Matriz_Y" ;
+ Text [ english_us ] = "array_y" ;
+ Text[ chinese_simplified ] = "array_Y";
+ Text[ russian ] = "Ìàññèâ_Y";
+ Text[ polish ] = "macierz_Y";
+ Text[ japanese ] = "”z—ñY";
+ Text[ chinese_traditional ] = "array_y";
+ Text[ arabic ] = "ãÕÝæÝÉ_Y";
+ Text[ dutch ] = "Matrix_Y";
+ Text[ chinese_simplified ] = "array_Y";
+ Text[ greek ] = "ÌÞôñá_Y";
+ Text[ korean ] = "Çà·Ä_y";
+ Text[ turkish ] = "Matris_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Zweite Matrix zur Bildung der Argumentdifferenzen." ;
+ Text [ english ] = "is the second array or range of values." ;
+ Text [ norwegian ] = "Zweite Matrix zur Bildung der Argumentdifferenzen." ;
+ Text [ italian ] = "È la seconda matrice per il calcolo delle differenze tra gli argomenti." ;
+ Text [ portuguese_brazilian ] = "Zweite Matrix zur Bildung der Argumentdifferenzen." ;
+ Text [ portuguese ] = "é a segunda matriz ou intervalo de valores." ;
+ Text [ finnish ] = "Zweite Matrix zur Bildung der Argumentdifferenzen." ;
+ Text [ danish ] = "Den anden matrix til dannelse af argumentdifferenser." ;
+ Text [ french ] = "La seconde matrice pour le calcul des différences entre les éléments." ;
+ Text [ swedish ] = "Andra matrisen för bildning av argumentdifferenserna." ;
+ Text [ dutch ] = "De tweede matrix voor het vormen van de verschillen tussen de argumenten." ;
+ Text [ spanish ] = "es la segunda matriz o área de valores." ;
+ Text [ english_us ] = "Second array for forming the argument differences." ;
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Âòîðîé ìàññèâ äëÿ îáðàçîâàíèÿ ðàçíîñòåé àðãóìåíòîâ.";
+ Text[ polish ] = "Druga macierz do tworzenia ró¿nic argumentów.";
+ Text[ japanese ] = "‘ÎÛ‚Æ‚È‚é‚à‚¤ˆê•û‚Ì”’l”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "²Ä¤G­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ Ãæ ÇáäØÇÞ ÇáËÇäí ãä ÇáÞíã.";
+ Text[ dutch ] = "De tweede matrix voor het vormen van de verschillen tussen de argumenten.";
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Äåýôåñç ìÞôñá, ãéá ôïí ó÷çìáôéóìü ôùí äéáöïñþí ôùí ïñéóìÜôùí.";
+ Text[ korean ] = "µ¶¸³ º¯¼öÀÇ Â÷¸¦ ±¸¼ºÇϱâ À§ÇÑ µÑ° Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþken farklarýnýn oluþturulmasý için birinci matris.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+Resource RID_SC_FUNCTION_DESCRIPTIONS2
+{
+ // -=*# Resource for function DBANZAHL2 #*=-
+ // -=*# Resource for function HÄUFIGKEIT #*=-
+ Resource SC_OPCODE_FREQUENCY
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Erstellt eine Häufigkeitsverteilung als Spaltenmatrix. : Erstellt eine Hõufigkeitsverteilung als Spaltenmatrix. */
+ Text = "Erstellt eine Häufigkeitsverteilung als Spaltenmatrix." ;
+ Text [ english ] = "Returns a frequency distribution as a vertical array." ;
+ Text [ norwegian ] = "Erstellt eine Häufigkeitsverteilung als Spaltenmatrix." ;
+ Text [ italian ] = "Restituisce una distribuzione di frequenza sotto forma di matrice verticale." ;
+ Text [ portuguese_brazilian ] = "Erstellt eine Häufigkeitsverteilung als Spaltenmatrix." ;
+ Text [ portuguese ] = "Devolve uma distribuição de frequência como matriz vertical." ;
+ Text [ finnish ] = "Erstellt eine Häufigkeitsverteilung als Spaltenmatrix." ;
+ Text [ danish ] = "Returnerer en frekvensfordeling som lodret matrix." ;
+ Text [ french ] = "Renvoie une distribution fréquentielle sous forme de matrice verticale." ;
+ Text [ swedish ] = "Returnerar en frekvensfördelning som en kolumnmatris." ;
+ Text [ dutch ] = "Maakt een frequentieverdeling als verticale matrix." ;
+ Text [ spanish ] = "Devuelve una distribución de frecuencia como una matriz vertical." ;
+ Text [ english_us ] = "Returns a frequency distribution as a vertical array." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öƵÂÊ·Ö²¼£¬ÒÔÁоØÕó·½Ê½ÏÔʾ½á¹û¡£";
+ Text[ russian ] = "Âîçâðàùàåò ðàñïðåäåëåíèå ÷àñòîò â âèäå âåðòèêàëüíîãî ìàññèâà.";
+ Text[ polish ] = "Wyznacza rozk³ad czêstoœci w postaci pionowej tablicy.";
+ Text[ japanese ] = "”͈͓à‚Å‚ÌÃÞ°À‚Ì•p“x•ª•z‚ðAc•ûŒü‚Ì”z—ñ‚Æ‚µ‚Ä•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­ÓÀW²v¤À§G¡M¥H¼Æ¾Ú¦C§Î¦¡Åã¥Üµ²ªG¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÊæÒíÚ ÇáÊæÇÊÑ ßÕÝíÝ ÚãæÏí.";
+ Text[ dutch ] = "Maakt een frequentieverdeling als verticale matrix.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öƵÂÊ·Ö²¼£¬ÒÔÁоØÕó·½Ê½ÏÔʾ½á¹û¡£";
+ Text[ greek ] = "Ó÷çìáôßæåé ôçí êáôáíïìÞ óõ÷íüôçôáò ùò êáôáêüñõöç ìÞôñá.";
+ Text[ korean ] = "ºóµµ ºÐÆ÷¸¦ ¿­ Çà·Ä·Î ÀÛ¼ºÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Sütun matrisi þeklinde bir sýklýk daðýtýmý oluþturur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_HAEUFIGKEIT );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten" ;
+ Text [ english ] = "data_array" ;
+ Text [ norwegian ] = "Daten" ;
+ Text [ italian ] = "matrice_dati" ;
+ Text [ portuguese_brazilian ] = "Daten" ;
+ Text [ portuguese ] = "Matriz_dados" ;
+ Text [ finnish ] = "Daten" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "datos" ;
+ Text [ english_us ] = "data" ;
+ Text[ chinese_simplified ] = "data_array";
+ Text[ russian ] = "Ìàññèâ_äàííûõ";
+ Text[ polish ] = "tablica_dane";
+ Text[ japanese ] = "ÃÞ°À”z—ñ";
+ Text[ chinese_traditional ] = "data_array";
+ Text[ arabic ] = "Data_array";
+ Text[ dutch ] = "Gegevens";
+ Text[ chinese_simplified ] = "data_array";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veriler";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Daten." ;
+ Text [ english ] = "is an array of or reference to a set of values for which you want to count frequencies." ;
+ Text [ norwegian ] = "Die Matrix der Daten." ;
+ Text [ italian ] = "è una matrice o un riferimento ad un insieme di valori di cui si desidera calcolare la frequenza." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Daten." ;
+ Text [ portuguese ] = "é uma matriz ou referência a um conjunto de valores, dos quais deseja contar as frequências.." ;
+ Text [ finnish ] = "Die Matrix der Daten." ;
+ Text [ danish ] = "Den matrix af data som hyppigheden skal beregnes af." ;
+ Text [ french ] = "La matrice des données." ;
+ Text [ swedish ] = "Matris med data som frekvensen skall beräknas för." ;
+ Text [ dutch ] = "De matrix van de gegevens." ;
+ Text [ spanish ] = "es una matriz de, o una referencia a, un conjunto de valores cuyas frecuencias desea contar." ;
+ Text [ english_us ] = "The array of the data." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäƵÂÊ·Ö²¼µÄÊý¾Ý¾ØÕó¡£";
+ Text[ russian ] = "Ìàññèâ èëè ññûëêà íà ìíîæåñòâî äàííûõ, äëÿ êîòîðûõ âû÷èñëÿþòñÿ ÷àñòîòû.";
+ Text[ polish ] = "Macierz danych.";
+ Text[ japanese ] = "ÃÞ°À”z—ñB";
+ Text[ chinese_traditional ] = "­n­pºâ¨äÀW²v¤À§Gªº¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãäÙæãÉ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "De matrix van de gegevens.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäƵÂÊ·Ö²¼µÄÊý¾Ý¾ØÕó¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí.";
+ Text[ korean ] = "µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Veri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Klassen" ;
+ Text [ english ] = "bins_array" ;
+ Text [ norwegian ] = "Klassen" ;
+ Text [ italian ] = "matrice_classi" ;
+ Text [ portuguese_brazilian ] = "Klassen" ;
+ Text [ portuguese ] = "Matriz_grupo" ;
+ Text [ finnish ] = "Klassen" ;
+ Text [ danish ] = "Grupper" ;
+ Text [ french ] = "Classes" ;
+ Text [ swedish ] = "klasser" ;
+ Text [ dutch ] = "Klassen" ;
+ Text [ spanish ] = "grupos" ;
+ Text [ english_us ] = "classes" ;
+ Text[ chinese_simplified ] = "group_array";
+ Text[ russian ] = "Ìàññèâ_ãðóïïû";
+ Text[ polish ] = "Klasy";
+ Text[ japanese ] = "‹æŠÔ";
+ Text[ chinese_traditional ] = "group_array";
+ Text[ arabic ] = "Group_array";
+ Text[ dutch ] = "Klassen";
+ Text[ chinese_simplified ] = "group_array";
+ Text[ greek ] = "ÊëÜóç";
+ Text[ korean ] = "Ŭ·¡½º";
+ Text[ turkish ] = "Sýnýf";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix zur Klassenbildung." ;
+ Text [ english ] = "is an array of or reference to intervals into which you want to group the values in data_array." ;
+ Text [ norwegian ] = "Die Matrix zur Klassenbildung." ;
+ Text [ italian ] = "è una matrice o un riferimento agli intervalli in cui si desidera raggruppare i valori contenuti in matrice_dati." ;
+ Text [ portuguese_brazilian ] = "Die Matrix zur Klassenbildung." ;
+ Text [ portuguese ] = "é uma matriz ou referência a intervalos de dados nos quais deseja agrupar os valores da matriz_dados." ;
+ Text [ finnish ] = "Die Matrix zur Klassenbildung." ;
+ Text [ danish ] = "Den matrix hvor værdierne fra datamatrix skal grupperes." ;
+ Text [ french ] = "La matrice pour la formation de classes." ;
+ Text [ swedish ] = "Matrisen för klassificering" ;
+ Text [ dutch ] = "De matrix voor waardegroepen." ;
+ Text [ spanish ] = "es una matriz de, o una referencia a, intervalos dentro de los cuales se desea agrupar los valores del argumento datos." ;
+ Text [ english_us ] = "The array for forming classes." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ¹¹³ÉƵÂʼÆËã·Ö¶ÎµãµÄÊý¾Ý¾ØÕó¡£";
+ Text[ russian ] = "Ìàññèâ èëè ññûëêà íà äèàïàçîí, â êîòîðîì ãðóïïèðóþòñÿ çíà÷åíèÿ â ìàññèâå äàííûõ.";
+ Text[ polish ] = "Macierz dla tworzenia klas.";
+ Text[ japanese ] = "‹æŠÔ”z—ñB";
+ Text[ chinese_traditional ] = "¥Î©óºc¦¨ÀW²v­pºâ¤À¬qÂIªº¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÕÝíÝ ãä ÇáÝæÇÕá Ãæ ãÑÌÚ Åáì ÝæÇÕá ÍíË ÊÑíÏ ÊÌãíÚ ÇáÞíã ÇáãæÌæÏÉ Ýí data_array.";
+ Text[ dutch ] = "De matrix voor waardegroepen.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ¹¹³ÉƵÂʼÆËã·Ö¶ÎµãµÄÊý¾Ý¾ØÕó¡£";
+ Text[ greek ] = "Ç ìÞôñá ãéá ôïí ó÷çìáôéóìü ôçò êëÜóçò.";
+ Text[ korean ] = "Ŭ·¡½º ±¸¼ºÀ» À§ÇÑ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sýnýf oluþturma matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function RGP #*=-
+ Resource SC_OPCODE_RGP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet Kenngrößen der linearen Regression als Matrix. : Berechnet Kenngr÷˜en der linearen Regression als Matrix. */
+ Text = "Berechnet Kenngrößen der linearen Regression als Matrix." ;
+ Text [ english ] = "Uses the least squares method to calculate a straight line that best fits your data and returns an array that describes the line." ;
+ Text [ norwegian ] = "Berechnet Kenngrößen der linearen Regression als Matrix." ;
+ Text [ italian ] = "Restituisce le grandezze caratteristiche della regressione lineare sotto forma di matrice." ;
+ Text [ portuguese_brazilian ] = "Berechnet Kenngrößen der linearen Regression als Matrix." ;
+ Text [ portuguese ] = "Devolve os parâmetros de uma tendência linear." ;
+ Text [ finnish ] = "Berechnet Kenngrößen der linearen Regression als Matrix." ;
+ Text [ danish ] = "Bruger de mindste kvadraters metode til at beregne den lige linje, som svarer bedst til dataene, og returnerer en tilsvarende matrix." ;
+ Text [ french ] = "Renvoie les paramètres de la regression linéaire sous forme de matrice." ;
+ Text [ swedish ] = "Beräknar parametrarna för den linjära regressionen som matris." ;
+ Text [ dutch ] = "Berekent de parameters van een lineaire trend als matrix." ;
+ Text [ spanish ] = "Devuelve la recta que mejor se ajusta a sus datos y devuelve una matriz que describe dicha recta." ;
+ Text [ english_us ] = "Calculates parameters of the linear regression as an array." ;
+ Text[ chinese_simplified ] = "¼ÆËãÏßÐԻعéµÄÊý×éÐÍϵÊý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ïàðàìåòðû ëèíåéíîé ðåãðåññèè â âèäå ìàññèâà.";
+ Text[ polish ] = "Oblicza parametry regresji liniowej jako macierzy.";
+ Text[ japanese ] = "üŒ`ÄÚÝÄÞ‚ÌÊß×Ò°À‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ½u©Ê¦^Âkªº¼Æ²Õ«¬«Y¼Æ¡C";
+ Text[ arabic ] = "ÊÑÌÚ ÕÝíÝÇð íÚÈÑ Úä ÇáÎØ ÇáãÓÊÞíã ÇáãáÇÆã ÈÇáÔßá ÇáÃãËá ááÈíÇäÇÊ Úä ØÑíÞ ÇÓÊÎÏÇã ØÑíÞÉ ÇáÞíãÉ ÇáÕÛÑì áãÌãæÚ ÇáãÑÈÚÇÊ.";
+ Text[ dutch ] = "Berekent de parameters van een lineaire trend als matrix.";
+ Text[ chinese_simplified ] = "¼ÆËãÏßÐԻعéµÄÊý×éÐÍϵÊý¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôéò ðáñáìÝôñïõò ôçò ãñáììéêÞò ðáëéíäñüìçóçò ùò ìÞôñá.";
+ Text[ korean ] = "¼±Çü ȸ±ÍÀÇ ÆĶó¹ÌÅ͸¦ Çà·Ä·Î °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Doðrusal regresyonun parametrelerini matris olarak hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_RGP );
+ 4; 0; 1; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_Y" ;
+ Text [ english ] = "known_y's" ;
+ Text [ norwegian ] = "Daten Y" ;
+ Text [ italian ] = "dati_y" ;
+ Text [ portuguese_brazilian ] = "Daten Y" ;
+ Text [ portuguese ] = "Dados_Y" ;
+ Text [ finnish ] = "Daten Y" ;
+ Text [ danish ] = "Data_Y" ;
+ Text [ french ] = "Données_Y" ;
+ Text [ swedish ] = "data_y" ;
+ Text [ dutch ] = "Gegevens_Y" ;
+ Text [ spanish ] = "Datos_Y" ;
+ Text [ english_us ] = "data_Y" ;
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ russian ] = "Èçâ_äàííûå_Y";
+ Text[ polish ] = "Dane_Y";
+ Text[ japanese ] = "Šù’m‚ÌY";
+ Text[ chinese_traditional ] = "data_Y";
+ Text[ arabic ] = "ÈíÇäÇÊ_Y";
+ Text[ dutch ] = "Gegevens_Y";
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ greek ] = "ÄåäïìÝíá_Y";
+ Text[ korean ] = "µ¥ÀÌÅÍ_Y";
+ Text[ turkish ] = "Veri_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Y-Daten." ;
+ Text [ english ] = "is the set of y-values you already know in the relationship y = mx + b." ;
+ Text [ norwegian ] = "Die Matrix der Y-Daten." ;
+ Text [ italian ] = "è l'insieme dei valori y già noti dalla relazione y = mx + b." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
+ Text [ portuguese ] = "é o conjunto de valores já conhecidos na relação y = mx + b." ;
+ Text [ finnish ] = "Die Matrix der Y-Daten." ;
+ Text [ danish ] = "Matrixen med Y-data." ;
+ Text [ french ] = "La matrice des données Y." ;
+ Text [ swedish ] = "Matrisen med y-data." ;
+ Text [ dutch ] = "De matrix van de Y-gegevens" ;
+ Text [ spanish ] = "es el conjunto de valores y que se conocen en la relación y = mx+b." ;
+ Text [ english_us ] = "The Y data array." ;
+ Text[ chinese_simplified ] = "Y Êý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ Y.";
+ Text[ polish ] = "Macierz danych Y.";
+ Text[ japanese ] = "Šù’m‚Ìy‚Ì’l‚Ì”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "Y-¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ãä Þíã Õ.";
+ Text[ dutch ] = "De matrix van de Y-gegevens";
+ Text[ chinese_simplified ] = "Y Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí Y.";
+ Text[ korean ] = "Y µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Y verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_X" ;
+ Text [ english ] = "known_x's" ;
+ Text [ norwegian ] = "Daten X" ;
+ Text [ italian ] = "dati_x" ;
+ Text [ portuguese_brazilian ] = "Daten X" ;
+ Text [ portuguese ] = "Dados_X" ;
+ Text [ finnish ] = "Daten X" ;
+ Text [ danish ] = "Data_X" ;
+ Text [ french ] = "Données_X" ;
+ Text [ swedish ] = "data_x" ;
+ Text [ dutch ] = "Gegevens_X" ;
+ Text [ spanish ] = "Datos_X" ;
+ Text [ english_us ] = "data_X" ;
+ Text[ chinese_simplified ] = "data_X";
+ Text[ russian ] = "Èçâ_äàííûå_X";
+ Text[ polish ] = "Dane_X";
+ Text[ japanese ] = "Šù’m‚ÌX";
+ Text[ chinese_traditional ] = "data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X";
+ Text[ dutch ] = "Gegevens_X";
+ Text[ chinese_simplified ] = "data_X";
+ Text[ greek ] = "ÄåäïìÝíá_×";
+ Text[ korean ] = "µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der X-Daten." ;
+ Text [ english ] = "is an optional set of x-values that you may already know in the relationship y = mx + b." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten." ;
+ Text [ italian ] = "è un insieme facoltativo di valori x" ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
+ Text [ portuguese ] = "é um conjunto facultativo de valores de x já conhecidos na relação y = mx + b." ;
+ Text [ finnish ] = "Die Matrix der X-Daten." ;
+ Text [ danish ] = "Matrixen med X-data." ;
+ Text [ french ] = "La matrice des données X." ;
+ Text [ swedish ] = "Matrisen med x-data." ;
+ Text [ dutch ] = "De matrix van de X-gegevens" ;
+ Text [ spanish ] = "es en conjunto de valores x opcionales que ya se conocen en la relación y = mx+b." ;
+ Text [ english_us ] = "The X data array." ;
+ Text[ chinese_simplified ] = "X Êý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ X.";
+ Text[ polish ] = "Macierz danych X.";
+ Text[ japanese ] = "Šù’m‚Ìx‚Ì’l‚Ì”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "X-¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ÇÎÊíÇÑíÉ ãä Þíã Ó.";
+ Text[ dutch ] = "De matrix van de X-gegevens";
+ Text[ chinese_simplified ] = "X Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí X.";
+ Text[ korean ] = "X µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "X verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Art_der_Geraden" ;
+ Text [ english ] = "const" ;
+ Text [ norwegian ] = "Art der Geraden" ;
+ Text [ italian ] = "tipo_rette" ;
+ Text [ portuguese_brazilian ] = "Art der Geraden" ;
+ Text [ portuguese ] = "Tipo_de_rectas" ;
+ Text [ finnish ] = "Art der Geraden" ;
+ Text [ danish ] = "Konstant" ;
+ Text [ french ] = "Type_de_droite" ;
+ Text [ swedish ] = "typ_av_linje" ;
+ Text [ dutch ] = "Lijn_type" ;
+ Text [ spanish ] = "tipo_lineal" ;
+ Text [ english_us ] = "Linear_type" ;
+ Text[ chinese_simplified ] = "Linear_type";
+ Text[ russian ] = "Òèï_ïðÿìîé";
+ Text[ polish ] = "Typ_prostej";
+ Text[ japanese ] = "üŒ`";
+ Text[ chinese_traditional ] = "Linear_type";
+ Text[ arabic ] = "äæÚ_ÇáÎØ_ÇáãÓÊÞíã";
+ Text[ dutch ] = "Lijn_type";
+ Text[ chinese_simplified ] = "Linear_type";
+ Text[ greek ] = "Ôýðïò_ôçò_åõèåßáò";
+ Text[ korean ] = "linear_type";
+ Text[ turkish ] = "Doðru_türü";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Ist Art=0, so werden Geraden durch den Nullpunkt berechnet, sonst auch verschobene Geraden." ;
+ Text [ english ] = "is a logical value specifying whether to force the constant b to equal 0." ;
+ Text [ norwegian ] = "Ist Art=0, so werden Geraden durch den Nullpunkt berechnet, sonst auch verschobene Geraden." ;
+ Text [ italian ] = "è un valore logico che specifica se la costante b deve essere uguale a 0." ;
+ Text [ portuguese_brazilian ] = "Ist Art=0, so werden Geraden durch den Nullpunkt berechnet, sonst auch verschobene Geraden." ;
+ Text [ portuguese ] = "é um valor lógico que determina se a constante b deve ser igual a 0." ;
+ Text [ finnish ] = "Ist Art=0, so werden Geraden durch den Nullpunkt berechnet, sonst auch verschobene Geraden." ;
+ Text [ danish ] = "Er Konstant=0 går konstanten gennem nulpunktet, ellers beregnes konstanten på normal vis." ;
+ Text [ french ] = "Calcule les droites par le point zéro si Type = 0 ; sinon droites déplacées." ;
+ Text [ swedish ] = "Om typ=0 beräknas linjer genom nollpunkten, annars även förflyttade linjer." ;
+ Text [ dutch ] = "Indien type=0 dan worden de lijnen door het nulpunt berekend; verschoven lijnen zijn ook mogelijk." ;
+ Text [ spanish ] = "es un valor lógico que especifica si la constante b debe ser igual a 0." ;
+ Text [ english_us ] = "If type = 0 the linears will be calculated through the zero point, or else moved linears." ;
+ Text[ chinese_simplified ] = "Èç¹ûtype=0£¬ÄÇôֱÏß¾­¹ýÁãµã¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå, êîòîðîå óêàçûâàåò, òðåáóåòñÿ ëè, ÷òîáû êîíñòàíòà b áûëà ðàâíà 0.";
+ Text[ polish ] = "Wartoœæ logiczna okreœlaj¹ca, czy dla sta³ej b ma zostaæ wymuszona wartoœæ 0.";
+ Text[ japanese ] = "’è”=0‚É‚·‚é‚Æ’l‚ª0‚Éݒ肳‚êA‚»‚¤‚Å‚È‚¢ê‡‚Í’l‚ª’²®‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªGconst=0¡Mªí¥Üª½½u¸g¹L¹sÂI¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ: íÍÓÈ ÇáËÇÈÊ b ÈÔßá ÚÇÏí ÅÐÇ ßÇä Const = TRUE Ãæ ãåãáÇðº æíÚíä b ãÓÇæíÇð 0 ÅÐÇ ßÇä Const = FALSE.";
+ Text[ dutch ] = "Indien type=0 dan worden de lijnen door het nulpunt berekend; verschoven lijnen zijn ook mogelijk.";
+ Text[ chinese_simplified ] = "Èç¹ûtype=0£¬ÄÇôֱÏß¾­¹ýÁãµã¡£";
+ Text[ greek ] = "ÅÜí åßíáé Ôýðïò=0, ôüôå õðïëïãßæïíôáé åõèåßåò ïé ïðïßåò äéÝñ÷ïíôáé áðü ôï ìçäåíéêü óçìåßï, áëëéþò êáé ìåôáöåñüìåíåò åõèåßåò.";
+ Text[ korean ] = "type=0ÀÌ¸é ¿øÁ¡À» Åë°úÇÏ´Â Á÷¼±µéÀÌ °è»êµÇ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì¿¡´Â À̵¿µÈ Á÷¼±µéµµ °è»êµË´Ï´Ù.";
+ Text[ turkish ] = "Tür=0 olursa doðrular, sýfýr noktasý üzerinden hesaplanýr. Diðer durumlarda taþýnmýþ doðrular da hesaplanýr.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Kenngrößen : Kenngr÷˜en */
+ Text = "Kenngrößen" ;
+ Text [ english ] = "stats" ;
+ Text [ norwegian ] = "Kenngrößen" ;
+ Text [ italian ] = "stat" ;
+ Text [ portuguese_brazilian ] = "Kenngrößen" ;
+ Text [ portuguese ] = "Estatística" ;
+ Text [ finnish ] = "Kenngrößen" ;
+ Text [ danish ] = "Statistik" ;
+ Text [ french ] = "Paramètres" ;
+ Text [ swedish ] = "statistik" ;
+ Text [ dutch ] = "Parameter" ;
+ Text [ spanish ] = "estadística" ;
+ Text [ english_us ] = "stats" ;
+ Text[ chinese_simplified ] = "stats";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Parametry";
+ Text[ japanese ] = "•â³";
+ Text[ chinese_traditional ] = "stats";
+ Text[ arabic ] = "Stats";
+ Text[ dutch ] = "Parameter";
+ Text[ chinese_simplified ] = "stats";
+ Text[ greek ] = "ÐáñÜìåôñïé";
+ Text[ korean ] = "stats";
+ Text[ turkish ] = "Parametreler";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ist Kenngrößen=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte. : Ist Kenngr÷˜en=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte. */
+ Text = "Ist Kenngrößen=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte." ;
+ Text [ english ] = "is a logical value specifying whether to return additional regression statistics." ;
+ Text [ norwegian ] = "Ist Kenngrößen=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte." ;
+ Text [ italian ] = "è un valore logico che specifica se restituire statistiche aggiuntive di regressione." ;
+ Text [ portuguese_brazilian ] = "Ist Kenngrößen=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte." ;
+ Text [ portuguese ] = "é um valor lógico que determina se estatísticas adicionais de regressão serão calculadas ou não." ;
+ Text [ finnish ] = "Ist Kenngrößen=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte." ;
+ Text [ danish ] = "Er Statistik=0 beregnes kun regressionskoefficienten, ellers returneres også andre værdier." ;
+ Text [ french ] = "Si paramètres = 0, seuls les coefficients de regression seront calculés ; sinon d'autres valeurs." ;
+ Text [ swedish ] = "om statistik=0 så beräknas endast regressionskoefficienterna, annars beräknas ytterligare värden." ;
+ Text [ dutch ] = "Indien parameter=0 dan worden alleen de regressiecoëfficiënten berekend; ook andere waarden zijn mogelijk." ;
+ Text [ spanish ] = "es un valor lógico que especifica si se han de devolver estadísticas de regresión adicionales." ;
+ Text [ english_us ] = "If parameter = 0 then only the regression coefficient will be calculated, otherwise other values as well." ;
+ Text[ chinese_simplified ] = "Èç¹û stats=0 £¬Ö»¼ÆËã»Ø¹éϵÊý£¬·ñÔòͬʱ¼ÆËãÆäËû¸½¼ÓÊýÖµ¡£";
+ Text[ russian ] = "Åñëè ïàðàìåòðû ðàâíû íóëþ, òî âû÷èñëÿþòñÿ òîëüêî êîýôôèöèåíòû ðåãðåññèè, â ïðîòèâíîì ñëó÷àå òàêæå äîïîëíèòåëüíûå çíà÷åíèÿ.";
+ Text[ polish ] = "Jeœli parametry wynosz¹ 0, obliczane bêd¹ tylko wspó³czynniki regresji, w innych przypadkach równie¿ pozosta³e wartoœci.";
+ Text[ japanese ] = "•â³=0‚É‚·‚é‚Ɖñ‹A’¼ü‚Ì•â³€‚¾‚¯‚ð’ljÁî•ñ‚Æ‚µ‚Ä•Ô‚µA‚»‚¤‚Å‚È‚¢ê‡‚Í‚»‚Ì‘¼‚Ì’l‚à•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG stats=0 ¡M¥u­pºâ¦^Âk¬ÛÃö«Y¼Æ¡M§_«h¦P®É­pºâ¨ä¥Lªþ¥[¼Æ­È¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ: ÅÑÌÇÚ ÅÍÕÇÆíÇÊ ÇäÍÏÇÑ ÅÖÇÝíÉ TRUE =º ÅÑÌÇÚ ãÚÇãáÇÊ m æÇáËÇÈÊ b = FALSE Ãæ ãåãá.";
+ Text[ dutch ] = "Indien parameter=0 dan worden alleen de regressiecoëfficiënten berekend; ook andere waarden zijn mogelijk.";
+ Text[ chinese_simplified ] = "Èç¹û stats=0 £¬Ö»¼ÆËã»Ø¹éϵÊý£¬·ñÔòͬʱ¼ÆËãÆäËû¸½¼ÓÊýÖµ¡£";
+ Text[ greek ] = "ÅÜí åßíáé ðáñÜìåôñïò = 0 , ôüôå èá ãßíåé ìüíï ï õðïëïãéóìüò ôùí óõíôåëåóôþí ðáëéíäñüìçóçò, äéáöïñåôéêÜ èá õðïëïãéóôïýí êáé Üëëåò ôéìÝò.";
+ Text[ korean ] = "ÆĶó¹ÌÅÍ=0À̸é ȸ±Í °è¼ö¸¸ °è»êµÇ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì´Â ´Ù¸¥ °ªµéµµ °è»êµË´Ï´Ù.";
+ Text[ turkish ] = "Parametreler=0 olursa yalnýzca regresyon katsayýlarý hesaplanýr. Diðer durumlarda diðer deðerler de hesaplanýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function RKP #*=-
+ Resource SC_OPCODE_RKP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet Kenngrößen der exponentiellen Regression als Matrix. : Berechnet Kenngr÷˜en der exponentiellen Regression als Matrix. */
+ Text = "Berechnet Kenngrößen der exponentiellen Regression als Matrix." ;
+ Text [ english ] = "Calculates an exponential curve that fits your data and returns an array that describes the curve." ;
+ Text [ norwegian ] = "Berechnet Kenngrößen der exponentiellen Regression als Matrix." ;
+ Text [ italian ] = "Restituisce le grandezze caratteristiche della regressione esponenziale sotto forma di matrice." ;
+ Text [ portuguese_brazilian ] = "Berechnet Kenngrößen der exponentiellen Regression als Matrix." ;
+ Text [ portuguese ] = "Calcula os parâmetros da curva de regressão exponencial na forma de matriz." ;
+ Text [ finnish ] = "Berechnet Kenngrößen der exponentiellen Regression als Matrix." ;
+ Text [ danish ] = "Bruger regressionsanalyse til at beregne en eksponentialkurve, som svarer bedst til dataene, og returnerer en tilsvarende matrix." ;
+ Text [ french ] = "Renvoie les paramètres de la regression exponentielle sous forme de matrice." ;
+ Text [ swedish ] = "Beräknar parametrar för den exponentiella regressionen som matris." ;
+ Text [ dutch ] = "Berekent de parameters van een exponentiële trend als matrix." ;
+ Text [ spanish ] = "Devuelve los parámetros de una curva de tendencia exponencial." ;
+ Text [ english_us ] = "Calculates the parameters of the exponential regression curve as an array." ;
+ Text[ chinese_simplified ] = "¼ÆËãÃèÊöÖ¸Êý»Ø¹éÇúÏßµÄÊý×é¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ïàðàìåòðû ýêñïîíåíöèàëüíîé ðåãðåññèè â âèäå ìàññèâà.";
+ Text[ polish ] = "Wyznacza parametry regresji wyk³adniczej jako macierz.";
+ Text[ japanese ] = "Žw”ÄÚÝÄÞ‚ÌÊß×Ò°À‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ´y­z«ü¼Æ¦^Âk¦±½uªº¼Æ²Õ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÕÝíÝ ãä ÇáÞíã ÊÚÈÑ Úä ÇáãäÍäì ÇáÃÓí ÇáãÍÓæÈ Ýí ÊÍáíá ÇáÇäÍÏÇÑ áíäÇÓÈ ÇáÈíÇäÇÊ ÇáÎÇÕÉ Èß.";
+ Text[ dutch ] = "Berekent de parameters van een exponentiële trend als matrix.";
+ Text[ chinese_simplified ] = "¼ÆËãÃèÊöÖ¸Êý»Ø¹éÇúÏßµÄÊý×é¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôéò ðáñáìÝôñïõò ôçò åêèåôéêÞò ðáëéíäñüìçóçò ùò ìÞôñá.";
+ Text[ korean ] = "Áö¼ö ȸ±ÍÀÇ ÆĶó¹ÌÅ͸¦ Çà·Ä·Î °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Üstel regresyonun parametrelerini matris olarak hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_RKP );
+ 4; 0; 1; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_Y" ;
+ Text [ english ] = "known_y's" ;
+ Text [ norwegian ] = "Daten Y" ;
+ Text [ italian ] = "dati_y" ;
+ Text [ portuguese_brazilian ] = "Daten Y" ;
+ Text [ portuguese ] = "Dados_Y" ;
+ Text [ finnish ] = "Daten Y" ;
+ Text [ danish ] = "Data_Y" ;
+ Text [ french ] = "Données_Y" ;
+ Text [ swedish ] = "data_y" ;
+ Text [ dutch ] = "Gegevens_Y" ;
+ Text [ spanish ] = "Datos_Y" ;
+ Text [ english_us ] = "data_Y" ;
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ russian ] = "Èçâ_äàííûå_Y";
+ Text[ polish ] = "Dane_Y";
+ Text[ japanese ] = "Šù’m‚Ì‚x";
+ Text[ chinese_traditional ] = "data_Y";
+ Text[ arabic ] = "ÈíÇäÇÊ_Y";
+ Text[ dutch ] = "Gegevens_Y";
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ greek ] = "ÄåäïìÝíá_Y";
+ Text[ korean ] = "µ¥ÀÌÅÍ_Y";
+ Text[ turkish ] = "Veri_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Y-Daten." ;
+ Text [ english ] = "is the set of y-values you already know in the relationship y = b*m^x." ;
+ Text [ norwegian ] = "Die Matrix der Y-Daten." ;
+ Text [ italian ] = "è l'insieme dei valori y già noti dalla relazione y = b*m^x." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
+ Text [ portuguese ] = "é o conjunto dos valores y." ;
+ Text [ finnish ] = "Die Matrix der Y-Daten." ;
+ Text [ danish ] = "Matrixen med Y-data." ;
+ Text [ french ] = "La matrice des données Y." ;
+ Text [ swedish ] = "Matrisen med y-data." ;
+ Text [ dutch ] = "De matrix van de Y-gegevens." ;
+ Text [ spanish ] = "es el conjunto de valores que ya se conocen en la ecuación y = b*m^x." ;
+ Text [ english_us ] = "The Y data array." ;
+ Text[ chinese_simplified ] = "Êý¾Ý×é Y¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ Y.";
+ Text[ polish ] = "Macierz danych Y.";
+ Text[ japanese ] = "Šù’m‚Ìy‚Ì’l‚Ì”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "¼Æ¾Ú²Õ Y¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ãä Þíã Õ.";
+ Text[ dutch ] = "De matrix van de Y-gegevens.";
+ Text[ chinese_simplified ] = "Êý¾Ý×é Y¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí Y.";
+ Text[ korean ] = "Y µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Y verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_X" ;
+ Text [ english ] = "known_x's" ;
+ Text [ norwegian ] = "Daten X" ;
+ Text [ italian ] = "dati_x" ;
+ Text [ portuguese_brazilian ] = "Daten X" ;
+ Text [ portuguese ] = "Dados_X" ;
+ Text [ finnish ] = "Daten X" ;
+ Text [ danish ] = "Data_X" ;
+ Text [ french ] = "Données_X" ;
+ Text [ swedish ] = "data_x" ;
+ Text [ dutch ] = "Gegevens_X" ;
+ Text [ spanish ] = "Datos_X" ;
+ Text [ english_us ] = "data_X" ;
+ Text[ chinese_simplified ] = "data_X";
+ Text[ russian ] = "Èçâ_äàííûå_X";
+ Text[ polish ] = "Dane_X";
+ Text[ japanese ] = "Šù’m‚Ì‚w";
+ Text[ chinese_traditional ] = "data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X";
+ Text[ dutch ] = "Gegevens_X";
+ Text[ chinese_simplified ] = "data_X";
+ Text[ greek ] = "ÄåäïìÝíá_×";
+ Text[ korean ] = "µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der X-Daten." ;
+ Text [ english ] = "is an optional set of x-values that you may already know in the relationship y = b*m^x." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten." ;
+ Text [ italian ] = "è un insieme facoltativo di valori x che possono essere già noti dalla relazione y = b*m^x." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
+ Text [ portuguese ] = "é um conjunto facultativo de valores x." ;
+ Text [ finnish ] = "Die Matrix der X-Daten." ;
+ Text [ danish ] = "Matrixen med X-data." ;
+ Text [ french ] = "La matrice des données X." ;
+ Text [ swedish ] = "Matrisen med x-data." ;
+ Text [ dutch ] = "De matrix van de X-gegevens" ;
+ Text [ spanish ] = "es un conjunto de valores x opcionales que ya se conocen en la ecuación y = b*m^x." ;
+ Text [ english_us ] = "The X data array." ;
+ Text[ chinese_simplified ] = "Êý¾Ý×é X¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ X.";
+ Text[ polish ] = "Macierz danych X.";
+ Text[ japanese ] = "Šù’m‚Ìx‚Ì’l‚Ì”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "¼Æ¾Ú²Õ X¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ÇÎÊíÇÑíÉ ãä Þíã Ó.";
+ Text[ dutch ] = "De matrix van de X-gegevens";
+ Text[ chinese_simplified ] = "Êý¾Ý×é X¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí X.";
+ Text[ korean ] = "X µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "X verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Art_der_Funktion" ;
+ Text [ english ] = "const" ;
+ Text [ norwegian ] = "Art der Funktion" ;
+ Text [ italian ] = "tipo_funzione" ;
+ Text [ portuguese_brazilian ] = "Art der Funktion" ;
+ Text [ portuguese ] = "Tipo_de_função" ;
+ Text [ finnish ] = "Art der Funktion" ;
+ Text [ danish ] = "Konstant" ;
+ Text [ french ] = "Type_de_fonction" ;
+ Text [ swedish ] = "typ_av_funktion" ;
+ Text [ dutch ] = "Functie_type" ;
+ Text [ spanish ] = "Tipo_de_función" ;
+ Text [ english_us ] = "Function_type" ;
+ Text[ chinese_simplified ] = "Function_type";
+ Text[ russian ] = "Òèï_ôóíêöèè";
+ Text[ polish ] = "Typ_funkcji";
+ Text[ japanese ] = "ŒvŽZ•ûŽ®";
+ Text[ chinese_traditional ] = "Function_type";
+ Text[ arabic ] = "äæÚ_ÇáÏÇáÉ";
+ Text[ dutch ] = "Functie_type";
+ Text[ chinese_simplified ] = "Function_type";
+ Text[ greek ] = "Ôýðïò_ôçò_óõíÜñôçóçò";
+ Text[ korean ] = "ÇÔ¼ö_ÇüÅÂ";
+ Text[ turkish ] = "Fonksiyon_türü";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Ist Art=0, so werden Funktionen der Form y=m^x berechnet, sonst auch Funktionen y=b*m^x." ;
+ Text [ english ] = "is a logical value specifying whether to force the constant b to equal 1." ;
+ Text [ norwegian ] = "Ist Art=0, so werden Funktionen der Form y=m^x berechnet, sonst auch Funktionen y=b*m^x." ;
+ Text [ italian ] = "è un valore logico che specifica se la costante b deve essere uguale a 1." ;
+ Text [ portuguese_brazilian ] = "Ist Art=0, so werden Funktionen der Form y=m^x berechnet, sonst auch Funktionen y=b*m^x." ;
+ Text [ portuguese ] = "é um valor lógico que determina se a constante b deve ser igual a 0." ;
+ Text [ finnish ] = "Ist Art=0, so werden Funktionen der Form y=m^x berechnet, sonst auch Funktionen y=b*m^x." ;
+ Text [ danish ] = "Er Konstant=0 beregnes funktionerer af formen y=m^x ellers også funktioner af formen y=b*m^x." ;
+ Text [ french ] = "Si Type = 0, ce sont des fonctions de relation y=m^x qui seront calculées, sinon des fonctions y=b*m^x." ;
+ Text [ swedish ] = "Om typ=0, så beräknas funktioner med formen y=m^x, annars även funktioner y=b*m^x." ;
+ Text [ dutch ] = "Indien type=0 dan worden de functies van de vorm y=m^x berekend, anders ook functies y=b*m^x. " ;
+ Text [ spanish ] = "es un valor lógico que especifica si la constante b debe ser igual a 1." ;
+ Text [ english_us ] = "If type = 0 then the functions will be calculated in the form of y=m^x, or also functions y=b*m^x." ;
+ Text[ chinese_simplified ] = "ÊÇÒ»¸öÂß¼­Öµ¡£Èç¹ûÊýֵΪÁ㣬¾Í°´ÕÕ¹«Ê½ y=m^x \n¼ÆË㣬·ñÔò¾Í°´ÕÕ y=b*m^x ¼ÆËã¡£";
+ Text[ russian ] = "Åñëè òèï ðàâåí íóëþ, òî ôóíêöèÿ âû÷èñëÿåòñÿ ïî ôîðìóëå y=m^x, â ïðîòèâíîì ñëó÷àå ôóíêöèÿ âû÷èñëÿåòñÿ ïî ôîðìóëå y=b*m^x.";
+ Text[ polish ] = "Jeœli typ wynosi 0, obliczane bêd¹ funkcje postaci y=m^x, w pozosta³ych przypadkach równie¿ funkcje y=b*m^x.";
+ Text[ japanese ] = "ŒvŽZ•ûŽ®=0 ‚Ìê‡‚Í Y=m^x‚Ť‚»‚¤‚Å‚È‚¢ê‡‚Í Y=b*m^x‚ÅŒvŽZ‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "¬O¤@­ÓÅÞ¿è­È¡C¦pªG¼Æ­È¬°¹s¡M´N«ö·Ó¤½¦¡ y=m^x ­pºâ¡M\n§_«h´N«ö·Ó y=b*m^x ­pºâ¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ:íÍÓÈ ÇáËÇÈÊ b ÈÔßá ÇÚÊíÇÏí ÅÐÇ ßÇä = TRUE Constº æíÚíä b ãÓÇæíÇð 1 ÅÐÇ ßÇä Const = FALSE Ãæ ãåãáÇð.";
+ Text[ dutch ] = "Indien type=0 dan worden de functies van de vorm y=m^x berekend, anders ook functies y=b*m^x. ";
+ Text[ chinese_simplified ] = "ÊÇÒ»¸öÂß¼­Öµ¡£Èç¹ûÊýֵΪÁ㣬¾Í°´ÕÕ¹«Ê½ y=m^x \n¼ÆË㣬·ñÔò¾Í°´ÕÕ y=b*m^x ¼ÆËã¡£";
+ Text[ greek ] = "ÅÜí åßíáé Ôýðïò=0, ôüôå õðïëïãßæïíôáé óõíáñôÞóåéò ôçò ìïñöÞò y=m^x, áëëéþò êáé óõíáñôÞóåéòy=b*m^x.";
+ Text[ korean ] = "type=0À̸é, ÆûÀÇ ÇÔ¼ö y=m^x°¡ °è»êµÇ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì¿¡´Â ÇÔ¼ö y=b*m^xµµ °è»êµË´Ï´Ù.";
+ Text[ turkish ] = "Tür=0 olursa y=m^x biçiminde fonksiyonlar hesaplanýr. Diðer durumlarda y=b*m^x þeklinde fonksiyonlar da hesaplanýr.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Kenngrößen : Kenngr÷˜en */
+ Text = "Kenngrößen" ;
+ Text [ english ] = "stats" ;
+ Text [ norwegian ] = "Kenngrößen" ;
+ Text [ italian ] = "stat" ;
+ Text [ portuguese_brazilian ] = "Kenngrößen" ;
+ Text [ portuguese ] = "Estatística" ;
+ Text [ finnish ] = "Kenngrößen" ;
+ Text [ danish ] = "Statistik" ;
+ Text [ french ] = "Paramètres" ;
+ Text [ swedish ] = "statistik" ;
+ Text [ dutch ] = "Parameter" ;
+ Text [ spanish ] = "estadística" ;
+ Text [ english_us ] = "stats" ;
+ Text[ chinese_simplified ] = "stats";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Parametry";
+ Text[ japanese ] = "•â³";
+ Text[ chinese_traditional ] = "stats";
+ Text[ arabic ] = "Stats";
+ Text[ dutch ] = "Parameter";
+ Text[ chinese_simplified ] = "stats";
+ Text[ greek ] = "ÐáñÜìåôñïé";
+ Text[ korean ] = "Åë°è";
+ Text[ turkish ] = "Parametreler";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ist Kenngrößen=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte. : Ist Kenngr÷˜en=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte. */
+ Text = "Ist Kenngrößen=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte." ;
+ Text [ english ] = "is a logical value specifying whether to return additional regression statistics." ;
+ Text [ norwegian ] = "Ist Kenngrößen=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte." ;
+ Text [ italian ] = "è un valore logico che specifica se restituire statistiche aggiuntive di regressione." ;
+ Text [ portuguese_brazilian ] = "Ist Kenngrößen=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte." ;
+ Text [ portuguese ] = "é um valor lógico que determina se estatísticas adicionais de regressão serão calculadas ou não." ;
+ Text [ finnish ] = "Ist Kenngrößen=0, so werden nur die Regressionskoeffizienten berechnet, sonst noch weitere Werte." ;
+ Text [ danish ] = "Er Statistik=0 beregnes kun regressionskoefficienten, ellers returneres også andre værdier." ;
+ Text [ french ] = "Si paramètres = 0, seuls les coefficients de regression seront calculés ; sinon d'autres valeurs." ;
+ Text [ swedish ] = "om statistik=0 så beräknas bara regressionskoefficienterna, annars beräknas ytterligare värden." ;
+ Text [ dutch ] = "Indien parameter=0 worden alleen de regressiecëfficiëenten berekend; andere waarden zijn ook mogelijk." ;
+ Text [ spanish ] = "es un valor lógico que especifica si se deberán devolver estadísticas de regresión adicionales." ;
+ Text [ english_us ] = "If parameter = 0 then only the regression coefficient will be calculated, otherwise other values as well." ;
+ Text[ chinese_simplified ] = "ÊÇÒ»¸öÂß¼­Öµ¡£Èç¹ûÊýֵΪÁ㣬¾ÍÖ»¼ÆËã»Ø¹éÏà¹ØϵÊý£¬\n·ñÔò»¹¼ÆËãÆäËû¸½¼ÓÊýÖµ¡£";
+ Text[ russian ] = "Åñëè ïàðàìåòðû ðàâíû íóëþ, òî âû÷èñëÿþòñÿ òîëüêî êîýôôèöèåíòû ðåãðåññèè, â ïðîòèâíîì ñëó÷àå åùå è äîïîëíèòåëüíûå çíà÷åíèÿ.";
+ Text[ polish ] = "Jeœli parametry wynosz¹ 0, obliczane bêd¹ tylko wspó³czynniki regresji, w innych przypadkach równie¿ pozosta³e wartoœci.";
+ Text[ japanese ] = "•â³=0‚É‚·‚é‚Æ ‰ñ‹AŽw”‹Èü‚Ì•â³€‚¾‚¯‚ð’ljÁî•ñ‚Æ‚µ‚Ä•Ô‚µA‚»‚¤‚Å‚È‚¢ê‡‚Í‚Ù‚©‚Ì’l‚à•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¬O¤@­ÓÅÞ¿è­È¡C¦pªG¼Æ­È¬°¹s¡M´N¥u­pºâ¦^Âk¬ÛÃö«Y¼Æ¡M\n§_«hÁÙ­pºâ¨ä¥Lªþ¥[¼Æ­È¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ: ÅÑÌÇÚ ÅÍÕÇÆíÇÊ ÇäÍÏÇÑ ÅÖÇÝíÉ TRUE =º ÅÑÌÇÚ ãÚÇãáÇÊ m æÇáËÇÈÊ b = FALSE Ãæ ãåãá.";
+ Text[ dutch ] = "Indien parameter=0 worden alleen de regressiecëfficiëenten berekend; andere waarden zijn ook mogelijk.";
+ Text[ chinese_simplified ] = "ÊÇÒ»¸öÂß¼­Öµ¡£Èç¹ûÊýֵΪÁ㣬¾ÍÖ»¼ÆËã»Ø¹éÏà¹ØϵÊý£¬\n·ñÔò»¹¼ÆËãÆäËû¸½¼ÓÊýÖµ¡£";
+ Text[ greek ] = "ÅÜí åßíáé ðáñÜìåôñïò = 0 , ôüôå èá ãßíåé ìüíï ï õðïëïãéóìüò ôùí óõíôåëåóôþí ðáëéíäñüìçóçò, äéáöïñåôéêÜ èá õðïëïãéóôïýí êáé Üëëåò ôéìÝò.";
+ Text[ korean ] = "ÆĶó¹ÌÅÍ=0À̸é ȸ±Í °è¼ö¸¸ °è»êµÇ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì¿¡´Â ¶Ç ´Ù¸¥ °ªµµ °è»êµË´Ï´Ù.";
+ Text[ turkish ] = "Parametreler=0 olursa, yalnýzca regresyon katsayýlarý hesaplanýr. Diðer durumlarda diðer deðerler de hesaplanýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TREND #*=-
+ Resource SC_OPCODE_TREND
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet Punkte auf der Regressiongeraden." ;
+ Text [ english ] = "Returns values along a linear trend." ;
+ Text [ norwegian ] = "Berechnet Punkte auf der Regressiongeraden." ;
+ Text [ italian ] = "Restituisce i valori di una tendenza lineare." ;
+ Text [ portuguese_brazilian ] = "Berechnet Punkte auf der Regressiongeraden." ;
+ Text [ portuguese ] = "Devolve os valores de uma tendência linear." ;
+ Text [ finnish ] = "Berechnet Punkte auf der Regressiongeraden." ;
+ Text [ danish ] = "Bruger de mindste kvadraters metode til at returnere værdier under antagelse af en lineær tendes." ;
+ Text [ french ] = "Calcule des points sur la droite de regression." ;
+ Text [ swedish ] = "Beräknar punkter på regressionslinjen." ;
+ Text [ dutch ] = "Berekent waarden voor een lineaire trend." ;
+ Text [ spanish ] = "Devuelve valores que resultan de una tendencia lineal." ;
+ Text [ english_us ] = "Calculates points along a regression line." ;
+ Text[ chinese_simplified ] = "¼ÆËã»Ø¹éÖ±ÏßÉϵÄÒ»×é×Ý×ø±êÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò çíà÷åíèÿ â ñîîòâåòñòâèè ñ ëèíåéíûì òðåíäîì.";
+ Text[ polish ] = "Wyznacza wartoœæ przy za³o¿eniu trendu liniowego.";
+ Text[ japanese ] = "ÃÞ°À‚ð’¼ü‚É“–‚Ă͂ߤ‚»‚Ì’¼üã‚ÅŒvŽZ‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¦^Âkª½½u¤Wªº¤@²ÕÁa§¤¼Ð­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ äÞÇØ Úáì ÌÇäÈ ÇáÇÊÌÇå ÇáÎØí ÈãáÇÁãÉ ÎØ ãÓÊÞíã.";
+ Text[ dutch ] = "Berekent waarden voor een lineaire trend.";
+ Text[ chinese_simplified ] = "¼ÆËã»Ø¹éÖ±ÏßÉϵÄÒ»×é×Ý×ø±êÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé óçìåßá óôçí åõèåßá ðáëéíäñüìçóçò.";
+ Text[ korean ] = "ȸ±Í¼±À» µû¸£´Â Á¡À» °è»ê.";
+ Text[ turkish ] = "Regresyon doðrusu üzerinde nokta hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_TREND );
+ 4; 0; 1; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_Y" ;
+ Text [ english ] = "known_y's" ;
+ Text [ norwegian ] = "Daten Y" ;
+ Text [ italian ] = "dati_y" ;
+ Text [ portuguese_brazilian ] = "Daten Y" ;
+ Text [ portuguese ] = "Dados_Y" ;
+ Text [ finnish ] = "Daten Y" ;
+ Text [ danish ] = "Data_Y" ;
+ Text [ french ] = "Données_Y" ;
+ Text [ swedish ] = "data_y" ;
+ Text [ dutch ] = "Gegevens_Y" ;
+ Text [ spanish ] = "Datos_Y" ;
+ Text [ english_us ] = "data_Y" ;
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ russian ] = "Èçâ_äàííûå_Y";
+ Text[ polish ] = "Dane_Y";
+ Text[ japanese ] = "Šù’m‚ÌY";
+ Text[ chinese_traditional ] = "data_Y";
+ Text[ arabic ] = "ÈíÇäÇÊ_Y";
+ Text[ dutch ] = "Gegevens_Y";
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ greek ] = "ÄåäïìÝíá_Y";
+ Text[ korean ] = "µ¥ÀÌÅÍ_Y";
+ Text[ turkish ] = "Veri_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Y-Daten." ;
+ Text [ english ] = "is the set of y-values you already know in the relationship y = mx + b." ;
+ Text [ norwegian ] = "Die Matrix der Y-Daten." ;
+ Text [ italian ] = "La matrice dei dati X" ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
+ Text [ portuguese ] = "é o conjunto de valores já conhecidos na relação y = mx + b." ;
+ Text [ finnish ] = "Die Matrix der Y-Daten." ;
+ Text [ danish ] = "Matrixen med Y-data." ;
+ Text [ french ] = "La matrice des données Y." ;
+ Text [ swedish ] = "Matrisen med y-data." ;
+ Text [ dutch ] = "De matrix van de Y-gegevens." ;
+ Text [ spanish ] = "es el conjunto de valores de y que se conocen en la relación y = mx+b." ;
+ Text [ english_us ] = "The Y data array." ;
+ Text[ chinese_simplified ] = "Y-Êý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ Y.";
+ Text[ polish ] = "Macierz danych Y.";
+ Text[ japanese ] = "Šù’m‚Ìy‚Ì’l‚Ì”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "Y-¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ãä Þíã Õ ÊÚÑÝåÇ ãÓÈÞÇð ãä ÇáÚáÇÞÉ y = mx + b.";
+ Text[ dutch ] = "De matrix van de Y-gegevens.";
+ Text[ chinese_simplified ] = "Y-Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí Y.";
+ Text[ korean ] = "Y µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Y verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_X" ;
+ Text [ english ] = "known_x's" ;
+ Text [ norwegian ] = "Daten X" ;
+ Text [ italian ] = "dati_x" ;
+ Text [ portuguese_brazilian ] = "Daten X" ;
+ Text [ portuguese ] = "Dados_X" ;
+ Text [ finnish ] = "Daten X" ;
+ Text [ danish ] = "Data_X" ;
+ Text [ french ] = "Données_X" ;
+ Text [ swedish ] = "data_x" ;
+ Text [ dutch ] = "Gegevens_X" ;
+ Text [ spanish ] = "Datos_X" ;
+ Text [ english_us ] = "data_X" ;
+ Text[ chinese_simplified ] = "data_X";
+ Text[ russian ] = "Èçâ_äàííûå_X";
+ Text[ polish ] = "Dane_X";
+ Text[ japanese ] = "Šù’m‚ÌX";
+ Text[ chinese_traditional ] = "data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X";
+ Text[ dutch ] = "Gegevens_X";
+ Text[ chinese_simplified ] = "data_X";
+ Text[ greek ] = "ÄåäïìÝíá_×";
+ Text[ korean ] = "µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der X-Daten als Grundlage zur Regression." ;
+ Text [ english ] = "is an optional set of x-values that you may already know in the relationship y = mx + b." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten als Grundlage zur Regression." ;
+ Text [ italian ] = "è un insieme facoltativo di valori x che possono essere già noti dalla relazione y = mx + b." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten als Grundlage zur Regression." ;
+ Text [ portuguese ] = "é um conjunto facultativo de valores x já conhecidos na relação y = mx + b." ;
+ Text [ finnish ] = "Die Matrix der X-Daten als Grundlage zur Regression." ;
+ Text [ danish ] = "Matrixen med X-data som er grundlag for regressionsberegningen." ;
+ Text [ french ] = "La matrice des données X comme base pour la regression." ;
+ Text [ swedish ] = "Matrisen med x-data som ligger till grund för regressionen." ;
+ Text [ dutch ] = "De matrix van de X-gegevens als basis voor de regressie." ;
+ Text [ spanish ] = "es un conjunto opcional de valores x en la relación y = mx+b." ;
+ Text [ english_us ] = "The X data array as the basis for the regression." ;
+ Text[ chinese_simplified ] = "×÷Ϊ»Ø¹é¼ÆËã»ù´¡µÄ X-Êý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ X êàê îñíîâà äëÿ ðåãðåññèè.";
+ Text[ polish ] = "Macierz danych X jako podstawa regresji.";
+ Text[ japanese ] = "“–‚Ä‚Í‚ß‚½’¼üã‚ÌŠù’m‚Ìx‚Ì’l‚Ì”z—ñ‚Ü‚½‚;ق͈̔ÍB";
+ Text[ chinese_traditional ] = "§@¬°¦^Âk­pºâ°ò¦ªº X-¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãäÙæãÉ Þíã Ó ßÃÓÇÓ ááÇäÍÏÇÑ.";
+ Text[ dutch ] = "De matrix van de X-gegevens als basis voor de regressie.";
+ Text[ chinese_simplified ] = "×÷Ϊ»Ø¹é¼ÆËã»ù´¡µÄ X-Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí × ùò âÜóç ãéá ôçí ðáëéíäñüìçóç.";
+ Text[ korean ] = "ȸ±Í ±âÃʷμ­ÀÇ X µ¥ÀÌÅÍ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Regresyon temeli olarak X verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Neue_Daten_X" ;
+ Text [ english ] = "new_x's" ;
+ Text [ norwegian ] = "Neue Daten X" ;
+ Text [ italian ] = "nuovi_dati_x" ;
+ Text [ portuguese_brazilian ] = "Neue Daten X" ;
+ Text [ portuguese ] = "Novos_dados_X" ;
+ Text [ finnish ] = "Neue Daten X" ;
+ Text [ danish ] = "Nye_data_X" ;
+ Text [ french ] = "Nouv_données_X" ;
+ Text [ swedish ] = "nya_data_x" ;
+ Text [ dutch ] = "Nieuwe_gegevens_X" ;
+ Text [ spanish ] = "Nuevos_datos_X" ;
+ Text [ english_us ] = "new data_X" ;
+ Text[ chinese_simplified ] = "new data_X";
+ Text[ russian ] = "Íîâ_äàííûå_X";
+ Text[ polish ] = "Nowe_dane_X";
+ Text[ japanese ] = "V‚µ‚¢ÃÞ°ÀX";
+ Text[ chinese_traditional ] = "new data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X_ÌÏíÏÉ";
+ Text[ dutch ] = "Nieuwe_gegevens_X";
+ Text[ chinese_simplified ] = "new data_X";
+ Text[ greek ] = "ÍÝá_äåäïìÝíá_×";
+ Text[ korean ] = "»õ µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Yeni_veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Matrix der X-Daten zur Neuberechnung von Werten." ;
+ Text [ english ] = "are new x-values for which you want TREND to return corresponding y-values." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten zur Neuberechnung von Werten." ;
+ Text [ italian ] = "La matrice dei dati X per il ricalcolo di valori." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten zur Neuberechnung von Werten." ;
+ Text [ portuguese ] = "são novos valores de x para os quais deseja que TENDÊNCIA devolva valores de y correspondentes." ;
+ Text [ finnish ] = "Die Matrix der X-Daten zur Neuberechnung von Werten." ;
+ Text [ danish ] = "Matrixen med X-data som nye værdier skal beregnes for." ;
+ Text [ french ] = "La matrice des données X pour le nouveau calcul des valeurs." ;
+ Text [ swedish ] = "Matrisen av x-data för ny beräkning av värden." ;
+ Text [ dutch ] = "De matrix van de X-gegevens voor de herberekening van waarden." ;
+ Text [ spanish ] = "son nuevos valores de x para los cuales se desea que TENDENCIA devuelva los valores de y correspondientes." ;
+ Text [ english_us ] = "The array of X data for recalculating the values." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËãÐÂÊýÖµµÄ X-Êý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ íîâûõ äàííûõ x, äëÿ êîòîðûõ ÒÅÍÄÅÍÖÈß âû÷èñëÿåò ñîîòâåòñòâóþùèå çíà÷åíèÿ y.";
+ Text[ polish ] = "Macierz danych X dla ponownego obliczenia wartoœci.";
+ Text[ japanese ] = "‘Ήž‚·‚éy‚Ì’l‚ðŒvŽZ‚·‚éV‚µ‚¢x‚Ì’l‚Ì”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "¥Î¨Ó­pºâ·s¼Æ­Èªº X-¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "Þíã Ó ÌÏíÏÉ ãØÇÈÞÉ áÞíã Õ¡ ÇáÊí ÊÑíÏ ãä TREND ÍÓÇÈåÇ.";
+ Text[ dutch ] = "De matrix van de X-gegevens voor de herberekening van waarden.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËãÐÂÊýÖµµÄ X-Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí × ãéá ôïí åê íÝïõ õðïëïãéóìü ôùí ôéìþí.";
+ Text[ korean ] = "°ªÀ» Àç°è»êÇϱâ À§ÇÑ X µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðerlerin yeniden hesaplanmasý için X verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Art_der_Geraden" ;
+ Text [ english ] = "const" ;
+ Text [ norwegian ] = "Art der Geraden" ;
+ Text [ italian ] = "tipo_rette" ;
+ Text [ portuguese_brazilian ] = "Art der Geraden" ;
+ Text [ portuguese ] = "Tipo_de_rectas" ;
+ Text [ finnish ] = "Art der Geraden" ;
+ Text [ danish ] = "Konstant" ;
+ Text [ french ] = "Type_de_droite" ;
+ Text [ swedish ] = "typ_av_linje" ;
+ Text [ dutch ] = "Lijn_type" ;
+ Text [ spanish ] = "tipo_lineal" ;
+ Text [ english_us ] = "Linear_type" ;
+ Text[ chinese_simplified ] = "Linear_type";
+ Text[ russian ] = "Òèï_ïðÿìûõ";
+ Text[ polish ] = "Typ_prostej";
+ Text[ japanese ] = "üŒ`";
+ Text[ chinese_traditional ] = "Linear_type";
+ Text[ arabic ] = "äæÚ_ÇáÎØ_ÇáãÓÊÞíã";
+ Text[ dutch ] = "Lijn_type";
+ Text[ chinese_simplified ] = "Linear_type";
+ Text[ greek ] = "Ôýðïò_ôçò_åõèåßáò";
+ Text[ korean ] = "¼±Çü_ŸÀÔ";
+ Text[ turkish ] = "Doðru_türü";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Ist Art=0, so werden Geraden durch den Nullpunkt berechnet, sonst auch verschobene Geraden." ;
+ Text [ english ] = "is a logical value specifying whether to force the constant b to equal 0." ;
+ Text [ norwegian ] = "Ist Art=0, so werden Geraden durch den Nullpunkt berechnet, sonst auch verschobene Geraden." ;
+ Text [ italian ] = "è un valore logico che specifica se la costante b deve essere uguale a 0." ;
+ Text [ portuguese_brazilian ] = "Ist Art=0, so werden Geraden durch den Nullpunkt berechnet, sonst auch verschobene Geraden." ;
+ Text [ portuguese ] = "é um valor lógico que determina se a constante b deve ser igual a 0 ou não." ;
+ Text [ finnish ] = "Ist Art=0, so werden Geraden durch den Nullpunkt berechnet, sonst auch verschobene Geraden." ;
+ Text [ danish ] = "Er Konstant=0 går konstanten gennem nulpunktet, ellers beregnes konstanten på normal vis." ;
+ Text [ french ] = "Calcule les droites par le point zéro si Type = 0 ; sinon droites déplacées." ;
+ Text [ swedish ] = "Om typ=0 beräknas linjer genom nollpunkten, annars även flyttade linjer." ;
+ Text [ dutch ] = "Indien type=0 dan worden de lijnen door het nulpunt berekend. Ook verschoven lijnen zijn mogelijk." ;
+ Text [ spanish ] = "es un valor lógico qque especifica si la constante debe ser igual a 0." ;
+ Text [ english_us ] = "If type = 0 the linears will be calculated through the zero point, or else moved linears." ;
+ Text[ chinese_simplified ] = "Èç¹û type=0£¬ÄÇôֱÏßµ±×÷¾­¹ýÁãµã¼ÆËã¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå, êîòîðîå óêàçûâàåò, òðåáóåòñÿ ëè, ÷òîáû êîíñòàíòà b áûëà ðàâíà 0.";
+ Text[ polish ] = "Wartoœæ logiczna okreœlaj¹ca, czy wymusiæ 0 dla sta³ej b.";
+ Text[ japanese ] = "’è”=0‚É‚·‚é‚Æ0‚Éݒ肳‚êA‚»‚¤‚Å‚È‚¢ê‡‚Í’²®‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG const=0 ¡M­n­pºâªºª½½u¸g¹L¹sÂI¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ: íÍÓÈ ÇáËÇÈÊ b ÈÔßá ÚÇÏí ÅÐÇ ßÇä Const = TRUE Ãæ ãåãáÇðº æíÚíä b ãÓÇæíÇð 0 ÅÐÇ ßÇä Const = FALSE.";
+ Text[ dutch ] = "Indien type=0 dan worden de lijnen door het nulpunt berekend. Ook verschoven lijnen zijn mogelijk.";
+ Text[ chinese_simplified ] = "Èç¹û type=0£¬ÄÇôֱÏßµ±×÷¾­¹ýÁãµã¼ÆËã¡£";
+ Text[ greek ] = "ÅÜí åßíáé Ôýðïò=0, ôüôå õðïëïãßæïíôáé åõèåßåò ïé ïðïßåò äéÝñ÷ïíôáé áðü ôï ìçäåíéêü óçìåßï, áëëéþò êáé ìåôáöåñüìåíåò åõèåßåò.";
+ Text[ korean ] = "type=0ÀÌ¸é ¿øÁ¡À» Åë°úÇÏ´Â Á÷¼±µéÀÌ °è»êµÇ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì¿¡´Â À̵¿µÈ Á÷¼±µéµµ °è»êµË´Ï´Ù.";
+ Text[ turkish ] = "Tür=0 olursa doðrular, sýfýr noktasý üzerinden hesaplanýr. Diðer durumlarda taþýnmýþ doðrular da hesaplanýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VARIATION #*=-
+ Resource SC_OPCODE_GROWTH
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet Punkte auf der exponentiellen Regressionsfunktion." ;
+ Text [ english ] = "Fits an exponential curve to the data known_y's and known_x's, and returns the y-values along that curve for the array of new_x's that you specify. " ;
+ Text [ norwegian ] = "Berechnet Punkte auf der exponentiellen Regressionsfunktion." ;
+ Text [ italian ] = "Restituisce i valori lungo una curva esponenziale in una matrice" ;
+ Text [ portuguese_brazilian ] = "Berechnet Punkte auf der exponentiellen Regressionsfunktion." ;
+ Text [ portuguese ] = "Devolve os valores de Y em função de uma curva exponencial." ;
+ Text [ finnish ] = "Berechnet Punkte auf der exponentiellen Regressionsfunktion." ;
+ Text [ danish ] = "Beregner prognosticeret eksponentiel vækst og returnerer tilsvarende værdier." ;
+ Text [ french ] = "Calcule des points sur la fonction de regression exponentielle." ;
+ Text [ swedish ] = "Beräknar punkter på den exponentiella regressionsfunktionen." ;
+ Text [ dutch ] = "Berekent de waarden voor een exponentiële trend." ;
+ Text [ spanish ] = "Devuelve los valores a lo largo de una curva exponencial." ;
+ Text [ english_us ] = "Calculates points on the exponential regression function." ;
+ Text[ chinese_simplified ] = "¼ÆËãÖ¸Êý»Ø¹éº¯ÊýÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò çíà÷åíèÿ â ñîîòâåòñòâèè ñ ýêñïîíåíöèàëüíûì òðåíäîì.";
+ Text[ polish ] = "Wyznacza wartoœæ przy za³o¿eniu trendu wyk³adniczego.";
+ Text[ japanese ] = "Žw”‹Èüã‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ«ü¼Æ¦^Âk¨ç¼Æ­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ Þíã Úáì ÏÇáÉ ÇäÍÏÇÑ ÃÓíÉ.";
+ Text[ dutch ] = "Berekent de waarden voor een exponentiële trend.";
+ Text[ chinese_simplified ] = "¼ÆËãÖ¸Êý»Ø¹éº¯ÊýÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé óçìåßá óôçí åêèåôéêÞ óõíÜñôçóç ðáëéíäñüìçóçò.";
+ Text[ korean ] = "Áö¼ö ȸ±Í¼± ÇÔ¼öÀÇ À§Ä¡¸¦ °è»ê";
+ Text[ turkish ] = "Üstel regresyon fonksiyonu üzerinde nokta hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATRIX;
+ U2S( HID_FUNC_VARIATION );
+ 4; 0; 1; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_Y" ;
+ Text [ english ] = "known_y's" ;
+ Text [ norwegian ] = "Daten Y" ;
+ Text [ italian ] = "dati_y" ;
+ Text [ portuguese_brazilian ] = "Daten Y" ;
+ Text [ portuguese ] = "Dados_Y" ;
+ Text [ finnish ] = "Daten Y" ;
+ Text [ danish ] = "Data_Y" ;
+ Text [ french ] = "Données_Y" ;
+ Text [ swedish ] = "data_y" ;
+ Text [ dutch ] = "Gegevens_Y" ;
+ Text [ spanish ] = "Datos_Y" ;
+ Text [ english_us ] = "data_Y" ;
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ russian ] = "Èçâ_çíà÷_y";
+ Text[ polish ] = "Dane_Y";
+ Text[ japanese ] = "Šù’m‚ÌY";
+ Text[ chinese_traditional ] = "data_Y";
+ Text[ arabic ] = "ÈíÇäÇÊ_Y";
+ Text[ dutch ] = "Gegevens_Y";
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ greek ] = "ÄåäïìÝíá_Y";
+ Text[ korean ] = "µ¥ÀÌÅÍ_Y";
+ Text[ turkish ] = "Veri_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Y-Daten." ;
+ Text [ english ] = "is the set of y-values you already know in the relationship y = b*m^x." ;
+ Text [ norwegian ] = "Die Matrix der Y-Daten." ;
+ Text [ italian ] = "è l'insieme dei valori y" ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
+ Text [ portuguese ] = "é o conjunto de valores y na relação y = b*m^x." ;
+ Text [ finnish ] = "Die Matrix der Y-Daten." ;
+ Text [ danish ] = "Matrixen med Y-data." ;
+ Text [ french ] = "La matrice des données Y." ;
+ Text [ swedish ] = "Matrisen med y-värden." ;
+ Text [ dutch ] = "De matrix van de Y-gegevens." ;
+ Text [ spanish ] = "es el conjunto de valores y conocidos en la relación y=b*m^x." ;
+ Text [ english_us ] = "The Y data array." ;
+ Text[ chinese_simplified ] = "Êý¾Ý×é Y ¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ y.";
+ Text[ polish ] = "Macierz danych Y.";
+ Text[ japanese ] = "Šù’m‚Ìy‚Ì”z—ñB";
+ Text[ chinese_traditional ] = "¼Æ¾Ú²Õ Y ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ãä Þíã Õ.";
+ Text[ dutch ] = "De matrix van de Y-gegevens.";
+ Text[ chinese_simplified ] = "Êý¾Ý×é Y ¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí Y.";
+ Text[ korean ] = "Y µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Y verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_X" ;
+ Text [ english ] = "known_x's" ;
+ Text [ norwegian ] = "Daten X" ;
+ Text [ italian ] = "dati_x" ;
+ Text [ portuguese_brazilian ] = "Daten X" ;
+ Text [ portuguese ] = "Dados_X" ;
+ Text [ finnish ] = "Daten X" ;
+ Text [ danish ] = "Data_X" ;
+ Text [ french ] = "Données_X" ;
+ Text [ swedish ] = "data_x" ;
+ Text [ dutch ] = "Gegevens_X" ;
+ Text [ spanish ] = "Datos_X" ;
+ Text [ english_us ] = "data_X" ;
+ Text[ chinese_simplified ] = "data_X";
+ Text[ russian ] = "Èçâ_çíà÷_x";
+ Text[ polish ] = "Dane_X";
+ Text[ japanese ] = "Šù’m‚ÌX";
+ Text[ chinese_traditional ] = "data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X";
+ Text[ dutch ] = "Gegevens_X";
+ Text[ chinese_simplified ] = "data_X";
+ Text[ greek ] = "ÄåäïìÝíá_×";
+ Text[ korean ] = "µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der X-Daten als Grundlage zur Regression." ;
+ Text [ english ] = "is an optional set of x-values that you may already know in the relationship y = b*m^x." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten als Grundlage zur Regression." ;
+ Text [ italian ] = "è un insieme facoltativo di valori x che possono essere già noti dalla relazione y = b*m^x." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten als Grundlage zur Regression." ;
+ Text [ portuguese ] = "é um conjunto opcional de valores x na relação y = b*m^x." ;
+ Text [ finnish ] = "Die Matrix der X-Daten als Grundlage zur Regression." ;
+ Text [ danish ] = "Matrixen med X-data som er grundlag for regressionsberegningen." ;
+ Text [ french ] = "La matrice des données X comme base pour la regression." ;
+ Text [ swedish ] = "Matrisen med x-data som grund för regressionen." ;
+ Text [ dutch ] = "De matrix van de X-gegevens als basis voor de regressie." ;
+ Text [ spanish ] = "es un conjunto opcional de valores x en la relación y=b*m^x." ;
+ Text [ english_us ] = "The X data array as the basis for the regression." ;
+ Text[ chinese_simplified ] = "X-Êý¾Ý×éµ±×÷»Ø¹éµÄ»ùÊý¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ x êàê îñíîâà äëÿ ðåãðåññèè.";
+ Text[ polish ] = "Macierz danych X jako podstawa regresji.";
+ Text[ japanese ] = "Šù‚É•ª‚©‚Á‚Ä‚¢‚éx‚Ì”z—ñB";
+ Text[ chinese_traditional ] = "X-¼Æ¾Ú²Õ·í§@¦^Âkªº°ò¼Æ¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ Þíã Ó ßÃÓÇÓ ááÇäÍÏÇÑ.";
+ Text[ dutch ] = "De matrix van de X-gegevens als basis voor de regressie.";
+ Text[ chinese_simplified ] = "X-Êý¾Ý×éµ±×÷»Ø¹éµÄ»ùÊý¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí × ùò âÜóç ãéá ôçí ðáëéíäñüìçóç.";
+ Text[ korean ] = "ȸ±Í ±âÃʷμ­ÀÇ X µ¥ÀÌÅÍ Çà·Ä";
+ Text[ turkish ] = "Regresyon baz olarak X veri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Neue_Daten_X" ;
+ Text [ english ] = "new_x's" ;
+ Text [ norwegian ] = "Neue Daten X" ;
+ Text [ italian ] = "nuovi_dati_x" ;
+ Text [ portuguese_brazilian ] = "Neue Daten X" ;
+ Text [ portuguese ] = "Novos_valores_X" ;
+ Text [ finnish ] = "Neue Daten X" ;
+ Text [ danish ] = "Nye_data_X" ;
+ Text [ french ] = "Nouv_données_X" ;
+ Text [ swedish ] = "nya_data_x" ;
+ Text [ dutch ] = "Nieuwe_gegevens_X" ;
+ Text [ spanish ] = "Nuevos_Datos_X" ;
+ Text [ english_us ] = "new_data_X" ;
+ Text[ chinese_simplified ] = "new_data_X";
+ Text[ russian ] = "Íîâ_çíà÷_x";
+ Text[ polish ] = "Nowe_dane_X";
+ Text[ japanese ] = "V‚µ‚¢ÃÞ°ÀX";
+ Text[ chinese_traditional ] = "new_data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X_ÌÏíÏÉ";
+ Text[ dutch ] = "Nieuwe_gegevens_X";
+ Text[ chinese_simplified ] = "new_data_X";
+ Text[ greek ] = "ÍÝá_äåäïìÝíá_×";
+ Text[ korean ] = "»õ_µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Yeni_veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Matrix der X-Daten zur Neuberechnung von Werten." ;
+ Text [ english ] = "are new x-values for which you want GROWTH to return corresponding y-values." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten zur Neuberechnung von Werten." ;
+ Text [ italian ] = "sono i nuovi valori x per i quali CRESCITA restituirà i valori y corrispondenti." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten zur Neuberechnung von Werten." ;
+ Text [ portuguese ] = "são novas variáveis x para as quais deseja que CRESCIMENTO forneça os valores y correspondentes." ;
+ Text [ finnish ] = "Die Matrix der X-Daten zur Neuberechnung von Werten." ;
+ Text [ danish ] = "Matrixen med X-data som nye værdier skal beregnes for." ;
+ Text [ french ] = "La matrice des données X pour le nouveau calcul des valeurs." ;
+ Text [ swedish ] = "Matrisen av x-data för omberäkning av värden." ;
+ Text [ dutch ] = "De matrix van de X-gegevens ter berekening van nieuwe waarden." ;
+ Text [ spanish ] = "son nuevos valores de x nuevos para los cuales se desea que CRECIMIENTO devuelva los valores de y correspondientes." ;
+ Text [ english_us ] = "The array of X data for recalculating the values." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚÖØÐÂÔ¤²âÖ¸ÊýÇ÷ÊÆÖµµÄÐ嵀 X Êý¾Ý×é¡£";
+ Text[ russian ] = "Íîâûå çíà÷åíèÿ x, äëÿ êîòîðûõ ÐÎÑÒ âû÷èñëÿåò ñîîòâåòñòâóþùèå çíà÷åíèÿ y.";
+ Text[ polish ] = "Macierz danych X dla ponownego obliczania wartoœci.";
+ Text[ japanese ] = "‘Ήž‚·‚éy‚Ì’l‚ðŒvŽZ‚·‚éV‚µ‚¢x‚Ì”z—ñB";
+ Text[ chinese_traditional ] = "¥Î¨Ó¹w´ú«ü¼ÆÁͶխȪº·sªº X - ¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "Þíã Ó ÌÏíÏÉ ãØÇÈÞÉ áÞíã Õ¡ ÇáÊí ÊÑíÏ ãä GROWTH ÍÓÇÈåÇ.";
+ Text[ dutch ] = "De matrix van de X-gegevens ter berekening van nieuwe waarden.";
+ Text[ chinese_simplified ] = "ÓÃÓÚÖØÐÂÔ¤²âÖ¸ÊýÇ÷ÊÆÖµµÄÐ嵀 X Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí × ãéá ôïí åê íÝïõ õðïëïãéóìü ôùí ôéìþí.";
+ Text[ korean ] = "°ªÀ» »õ·Î °è»êÇϱâ À§ÇÑ X µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðerlerin yeniden hesaplanmasý için X veri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Art_der_Funktion" ;
+ Text [ english ] = "const" ;
+ Text [ norwegian ] = "Art der Funktion" ;
+ Text [ italian ] = "tipo_funzione" ;
+ Text [ portuguese_brazilian ] = "Art der Funktion" ;
+ Text [ portuguese ] = "Tipo_de_função" ;
+ Text [ finnish ] = "Art der Funktion" ;
+ Text [ danish ] = "Konstant" ;
+ Text [ french ] = "Type_de_fonction" ;
+ Text [ swedish ] = "typ_av_funktion" ;
+ Text [ dutch ] = "Functie_type" ;
+ Text [ spanish ] = "Tipo_de_función" ;
+ Text [ english_us ] = "Function_type" ;
+ Text[ chinese_simplified ] = "Function_type";
+ Text[ russian ] = "Òèï_ôóíêöèè";
+ Text[ polish ] = "Typ_funkcji";
+ Text[ japanese ] = "ŒvŽZ•ûŽ®";
+ Text[ chinese_traditional ] = "Function_type";
+ Text[ arabic ] = "äæÚ_ÇáÏÇáÉ";
+ Text[ dutch ] = "Functie_type";
+ Text[ chinese_simplified ] = "Function_type";
+ Text[ greek ] = "Ôýðïò_ôçò_óõíÜñôçóçò";
+ Text[ korean ] = "ÇÔ¼ö_ŸÀÔ";
+ Text[ turkish ] = "Fonksiyon_türü";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Ist Art=0, so werden Funktionen der Form y=m^x berechnet, sonst auch Funktionen y=b*m^x." ;
+ Text [ english ] = "is a logical value specifying whether to force the constant b to equal 1." ;
+ Text [ norwegian ] = "Ist Art=0, so werden Funktionen der Form y=m^x berechnet, sonst auch Funktionen y=b*m^x." ;
+ Text [ italian ] = "è un valore logico che specifica se la costante b deve essere uguale a 1." ;
+ Text [ portuguese_brazilian ] = "Ist Art=0, so werden Funktionen der Form y=m^x berechnet, sonst auch Funktionen y=b*m^x." ;
+ Text [ portuguese ] = "é um valor lógico que especifica se a constante b deve ser igual a 1." ;
+ Text [ finnish ] = "Ist Art=0, so werden Funktionen der Form y=m^x berechnet, sonst auch Funktionen y=b*m^x." ;
+ Text [ danish ] = "Er Konstant=0 beregnes funktionerer af formen y=m^x ellers også funktioner af formen y=b*m^x." ;
+ Text [ french ] = "Si Type = 0, ce sont des fonctions de relation y=m^x qui seront calculées, sinon des fonctions y=b*m^x." ;
+ Text [ swedish ] = "Om typ=0 så beräknas funktioner med formen y=m^x, annars även funktioner y=b*m^x." ;
+ Text [ dutch ] = "Is Type=0, dan worden functies van de vorm y=m^x berekend, verder ook functies y=b*m^x." ;
+ Text [ spanish ] = "es un valor lógico que especifica si la constante b debe ser igual a 1." ;
+ Text [ english_us ] = "If type = 0 then the functions will be calculated in the form of y=m^x, or also functions y=b*m^x." ;
+ Text[ chinese_simplified ] = "Èç¹û type=0 £¬º¯Êý¾Í°´ÕÕ¹«Ê½ y=m^x ¼ÆË㣬\n·ñÔò±ã°´ÕÕ¹«Ê½ y=b*m^x ¼ÆËã¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå, åñëè îíî ðàâíî 0, òî ôóíêöèè âû÷èñëÿþòñÿ ïî ôîðìóëå y=m^x, ïðè íàëè÷èè çíà÷åíèÿ - ïî ôîðìóëå y=b*m^x.";
+ Text[ polish ] = "Jeœli typ wynosi 0, bêd¹ obliczane funkcje rodzaju y=m^x, w pozosta³ych wypadkach równie¿ funkcje y=b*m^x.";
+ Text[ japanese ] = "ŒvŽZ•ûŽ®=0 ‚Ìê‡‚Í Y=m^x‚Ť‚»‚¤‚Å‚È‚¢ê‡‚Í Y=b*m^x‚ÅŒvŽZ‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG const=0 ¡M¨º»ò¨ç¼Æ´N«ö·Ó¤½¦¡ y=m^x ­pºâ¡M§_«h´N«ö·Ó y=b*m^x ­pºâ¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ:íÍÓÈ ÇáËÇÈÊ b ÈÔßá ÇÚÊíÇÏí ÅÐÇ ßÇä = TRUE Constº æíÚíä b ãÓÇæíÇð 1 ÅÐÇ ßÇä Const = FALSE Ãæ ãåãáÇð.";
+ Text[ dutch ] = "Is Type=0, dan worden functies van de vorm y=m^x berekend, verder ook functies y=b*m^x.";
+ Text[ chinese_simplified ] = "Èç¹û type=0 £¬º¯Êý¾Í°´ÕÕ¹«Ê½ y=m^x ¼ÆË㣬\n·ñÔò±ã°´ÕÕ¹«Ê½ y=b*m^x ¼ÆËã¡£";
+ Text[ greek ] = "ÅÜí åßíáé Ôýðïò=0, ôüôå õðïëïãßæïíôáé óõíáñôÞóåéò ôçò ìïñöÞò y=m^x, áëëéþò êáé óõíáñôÞóåéòy=b*m^x.";
+ Text[ korean ] = "¸¸ÀÏ Å¸ÀÔ = 0 ÀÌ°í ÇÔ¼ö°¡y=m^x ¾ç½Ä¿¡¼­ °è»êµÇ¾îÁø´Ù¸é, ÇÔ¼ö´Â y=b*m^x ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Art=0 ise y=m^x biçimindeki fonksiyonlar hesaplanýr, diðer hallerde y=b*m^x fonksiyonlarý da hesaplanýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ANZAHL #*=-
+ Resource SC_OPCODE_COUNT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zählt, wie viele Zahlen eine Liste von Argumenten enthält. : Zõhlt, wie viele Zahlen eine Liste von Argumenten enthõlt. */
+ Text = "Zählt, wie viele Zahlen eine Liste von Argumenten enthält." ;
+ Text [ english ] = "Counts how many numbers are in the list of arguments." ;
+ Text [ norwegian ] = "Zählt, wie viele Zahlen eine Liste von Argumenten enthält." ;
+ Text [ italian ] = "Conta i numeri presenti nell'elenco degli argomenti." ;
+ Text [ portuguese_brazilian ] = "Zählt, wie viele Zahlen eine Liste von Argumenten enthält." ;
+ Text [ portuguese ] = "Conta quantos números existem numa lista de argumentos." ;
+ Text [ finnish ] = "Zählt, wie viele Zahlen eine Liste von Argumenten enthält." ;
+ Text [ danish ] = "Tæller antallet af tal i en liste af argumenter." ;
+ Text [ french ] = "Détermine combien de nombres sont compris dans la liste des arguments." ;
+ Text [ swedish ] = "Räknar hur många tal en lista med argument innehåller." ;
+ Text [ dutch ] = "Telt hoeveel getallen een lijst van argumenten bevat." ;
+ Text [ spanish ] = "Cuenta los números que hay en la lista de argumentos." ;
+ Text [ english_us ] = "Counts how many numbers are in the list of arguments." ;
+ Text[ chinese_simplified ] = "¼ÆËãÊý×ÖÏîµÄ¸öÊý¡£";
+ Text[ russian ] = "Ïîäñ÷èòûâàåò, ñêîëüêî ÷èñåë ñîäåðæèòñÿ â ñïèñêå àðãóìåíòîâ.";
+ Text[ polish ] = "Oblicza, ile liczb zawiera lista argumentów.";
+ Text[ japanese ] = "ˆø”ؽĂ̊e€–Ú‚ÉŠÜ‚Ü‚ê‚é”’l‚̌”‚̇Œv‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¼Æ¦r¶µªº­Ó¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÚÏÏ ÇáÃÑÞÇã ÇáãæÌæÏÉ Ýí ÞÇÆãÉ ãä ÇáæÓÇÆØ.";
+ Text[ dutch ] = "Telt hoeveel getallen een lijst van argumenten bevat.";
+ Text[ chinese_simplified ] = "¼ÆËãÊý×ÖÏîµÄ¸öÊý¡£";
+ Text[ greek ] = "Áñéèìåß ðüóïé áñéèìïß ðåñéÝ÷ïíôáé óå ìßá ëßóôá ïñéóìÜôùí.";
+ Text[ korean ] = "Àμö ¸ñ·ÏÀÌ Æ÷ÇÔÇÏ°í ÀÖ´Â ¼ö¸¦ ¼Á´Ï´Ù.";
+ Text[ turkish ] = "Deðiþken listesinin içerdiði sayý miktarýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_ANZAHL );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text [ norwegian ] = "Wert " ;
+ Text [ italian ] = "valore " ;
+ Text [ portuguese_brazilian ] = "Wert " ;
+ Text [ portuguese ] = "Valor " ;
+ Text [ finnish ] = "Wert " ;
+ Text [ danish ] = "Værdi " ;
+ Text [ french ] = "Valeur " ;
+ Text [ swedish ] = "värde " ;
+ Text [ dutch ] = "Waarde " ;
+ Text [ spanish ] = "valor " ;
+ Text [ english_us ] = "value " ;
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "Waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wert 1; Wert 2;... sind 1 bis 30 Argumente mit unterschiedlichen Datentypen, wobei nur Zahlen in die Zählung eingehen. : Wert 1; Wert 2;... sind 1 bis 30 Argumente mit unterschiedlichen Datentypen, wobei nur Zahlen in die Zõhlung eingehen. */
+ Text = "Wert 1; Wert 2;... sind 1 bis 30 Argumente mit unterschiedlichen Datentypen, wobei nur Zahlen in die Zählung eingehen." ;
+ Text [ english ] = "are 1 to 30 arguments that can contain or refer to a variety of data types, but only numbers are counted." ;
+ Text [ norwegian ] = "Wert 1; Wert 2;... sind 1 bis 30 Argumente mit unterschiedlichen Datentypen, wobei nur Zahlen in die Zählung eingehen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti che possono contenere o riferirsi a più dati, di cui vengono contati soltanto i numeri." ;
+ Text [ portuguese_brazilian ] = "Wert 1; Wert 2;... sind 1 bis 30 Argumente mit unterschiedlichen Datentypen, wobei nur Zahlen in die Zählung eingehen." ;
+ Text [ portuguese ] = "Valor1; valor2,...são argumentos entre 1 e 30 que podem conter ou referir-se a uma variedade de tipos de dados, mas só são contados os números." ;
+ Text [ finnish ] = "Wert 1; Wert 2;... sind 1 bis 30 Argumente mit unterschiedlichen Datentypen, wobei nur Zahlen in die Zählung eingehen." ;
+ Text [ danish ] = "Værdi 1; værdi 2; ... er 1 til 30 argumenter med forskellige datatyper, men kun tal tælles." ;
+ Text [ french ] = "Valeur 1, valeur 2, ... sont de 1 à 30 arguments contenant différents types de données dont seuls les nombres sont comptés." ;
+ Text [ swedish ] = "värde 1; värde 2;... är 1 till 30 argument med olika datatyper, men bara tal räknas." ;
+ Text [ dutch ] = "Waarde 1; Waarde 2;...zijn maximaal 30 argumenten met verschillende typen gegevens, waarbij alleen de getallen worden geteld." ;
+ Text [ spanish ] = "Ref 1; ref 2; ...son entre 1 y 30 argumentos que pueden contener o hacer referencia a distintos tipos de datos, pero solo se cuentan los números." ;
+ Text [ english_us ] = "Value 1, value 2, ... are 1 to 30 arguments containing different data types but where only numbers are counted." ;
+ Text[ chinese_simplified ] = "ÊýÖµ1; ÊýÖµ 2;... ÊÇ 1 ÖÁ 30¸öº¬Óи÷ÖÖÀàÐÍÊý¾ÝµÄ\n²ÎÊý£¬µ«Ö»¼ÆÊýÊý×ÖÀàÐ͵ÄÊý¾Ý¡£";
+ Text[ russian ] = "Çíà÷åíèå 1; çíà÷åíèå 2;... îò 1 äî 30 àðãóìåíòîâ, êîòîðûå ìîãóò ñîäåðæàòü èëè ññûëàòüñÿ íà äàííûå ðàçëè÷íûõ òèïîâ, íî â ïîäñ÷åòå ó÷àñòâóþò òîëüêî ÷èñëà.";
+ Text[ polish ] = "Od 1 do 30 argumentów, które mog¹ odnosiæ siê do argumentów ró¿nych typów danych, przy czym zliczane bêd¹ tylko liczby.";
+ Text[ japanese ] = "’l1¤’l2¤...‚Í 1‚©‚ç30ŒÂ‚܂ł͈̾ٔ͂ŔCˆÓ‚ÌÃÞ°À‚ð‘ÎÛ‚Æ‚µ‚Ü‚·‚ª¤”’l‚̾ق݂̂𔂦‚Ü‚·B";
+ Text[ chinese_traditional ] = "¼Æ­È1; ¼Æ­È 2;... ¬O 1 ¦Ü 30­Ó§t¦³¦UºØÃþ«¬¸ê®Æªº°Ñ¼Æ¡M\n¦ý¥u­p¼Æ¼Æ¦rÃþ«¬ªº¸ê®Æ¡C";
+ Text[ arabic ] = "value1;value2;... ãä 1 Åáì 30 æÓíØÉ ÐÇÊ ÃäãÇØ ÈíÇäÇÊ ãÎÊáÝɺ ÅáÇ Ãä ÇáÃÑÞÇã ÝÞØ åí ÇáÊí ÓæÝ ÊÚÏ.";
+ Text[ dutch ] = "Waarde 1; Waarde 2;...zijn maximaal 30 argumenten met verschillende typen gegevens, waarbij alleen de getallen worden geteld.";
+ Text[ chinese_simplified ] = "ÊýÖµ1; ÊýÖµ 2;... ÊÇ 1 ÖÁ 30¸öº¬Óи÷ÖÖÀàÐÍÊý¾ÝµÄ\n²ÎÊý£¬µ«Ö»¼ÆÊýÊý×ÖÀàÐ͵ÄÊý¾Ý¡£";
+ Text[ greek ] = "ÔéìÞ 1, ÔéìÞ2, ... åßíáé 1 Ýùò 30 ïñßóìáôá ìå äéáöïñåôéêÝò ìïñöÝò äåäïìÝíùí, áðü ôá ïðïßá èá ãßíåé áñßèìçóç ìüíï ôùí áñéèìþí.";
+ Text[ korean ] = "°ª 1, °ª 2,... Àº ¼ýÀÚ¸¸ ¼À¿¡ Æ÷ÇԵǴ »óÀÌÇÑ µ¥ÀÌÅÍ À¯ÇüÀ» Áö´Ñ 1ºÎÅÍ 30±îÁö µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1; deðer 2;... Deðiþik veri tipleri içeren ancak yalnýzca sayýlarýn sayýldýðý 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ANZAHL2 #*=-
+ Resource SC_OPCODE_COUNT_2
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zählt, wie viele Werte eine Liste von Argumenten enthält. : Zõhlt, wie viele Werte eine Liste von Argumenten enthõlt. */
+ Text = "Zählt, wie viele Werte eine Liste von Argumenten enthält." ;
+ Text [ english ] = "Counts the number of nonblank values in the list of arguments." ;
+ Text [ norwegian ] = "Zählt, wie viele Werte eine Liste von Argumenten enthält." ;
+ Text [ italian ] = "Conta il numero di valori presenti nell'elenco degli argomenti." ;
+ Text [ portuguese_brazilian ] = "Zählt, wie viele Werte eine Liste von Argumenten enthält." ;
+ Text [ portuguese ] = "Conta quantos valores existem na lista de argumentos." ;
+ Text [ finnish ] = "Zählt, wie viele Werte eine Liste von Argumenten enthält." ;
+ Text [ danish ] = "Tæller antallet af værdier i en liste af argumenter." ;
+ Text [ french ] = "Détermine combien de valeurs sont comprises dans la liste des arguments." ;
+ Text [ swedish ] = "Räknar hur många värden en argumentlista innehåller." ;
+ Text [ dutch ] = "Telt hoeveel waarden een lijst van argumenten bevat." ;
+ Text [ spanish ] = "Cuenta los valores que hay en la lista de argumentos." ;
+ Text [ english_us ] = "Counts how many values are in the list of arguments." ;
+ Text[ chinese_simplified ] = "¼ÆËãÊý¾ÝÏîµÄ¸öÊý¡£";
+ Text[ russian ] = "Ïîäñ÷èòûâàåò, ñêîëüêî çíà÷åíèé ñîäåðæèòñÿ â ñïèñêå àðãóìåíòîâ.";
+ Text[ polish ] = "Oblicza, ile wartoœci zawiera lista argumentów.";
+ Text[ japanese ] = "ˆø”‚ÌؽĂɊ܂܂ê‚é”’l‚̌”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¼Æ¾Ú¶µªº­Ó¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÚÏÏ ÇáÞíã ÇáãæÌæÏÉ Ýí ÞÇÆãÉ ãä ÇáæÓÇÆØ.";
+ Text[ dutch ] = "Telt hoeveel waarden een lijst van argumenten bevat.";
+ Text[ chinese_simplified ] = "¼ÆËãÊý¾ÝÏîµÄ¸öÊý¡£";
+ Text[ greek ] = "Áñéèìåß ðüóåò ôéìÝò ðåñéÝ÷ïíôáé óå ìßá ëßóôá ïñéóìÜôùí";
+ Text[ korean ] = "Àμö ¸ñ·ÏÀÌ Æ÷ÇÔÇÏ°í ÀÖ´Â °ªÀÇ ¼ö¸¦ ¼Á´Ï´Ù.";
+ Text[ turkish ] = "Deðiþken listesinin içerdiði deðer sayýsýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_ANZAHL2 );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text [ norwegian ] = "Wert " ;
+ Text [ italian ] = "valore " ;
+ Text [ portuguese_brazilian ] = "Wert " ;
+ Text [ portuguese ] = "Valor " ;
+ Text [ finnish ] = "Wert " ;
+ Text [ danish ] = "Værdi " ;
+ Text [ french ] = "Valeur " ;
+ Text [ swedish ] = "värde " ;
+ Text [ dutch ] = "Waarde " ;
+ Text [ spanish ] = "valor " ;
+ Text [ english_us ] = "value " ;
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "Waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wert 1; Wert 2;... sind 1 bis 30 Argumente, die den zu zählenden Werten entsprechen. : Wert 1; Wert 2;... sind 1 bis 30 Argumente, die den zu zõhlenden Werten entsprechen. */
+ Text = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, die den zu zählenden Werten entsprechen." ;
+ Text [ english ] = " are 1 to 30 arguments representing the values you want to count." ;
+ Text [ norwegian ] = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, die den zu zählenden Werten entsprechen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti che rappresentano i valori che si desidera contare." ;
+ Text [ portuguese_brazilian ] = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, die den zu zählenden Werten entsprechen." ;
+ Text [ portuguese ] = "Valor1; valor2,...são argumentos entre 1 e 30 e que representam os valores a contar." ;
+ Text [ finnish ] = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, die den zu zählenden Werten entsprechen." ;
+ Text [ danish ] = "Værdi 1; værdi 2; ... er 1 til 30 argumenter, som repræsenterer de værdi der skal tælles." ;
+ Text [ french ] = "Valeur 1, valeur 2, ... sont de 1 à 30 arguments correspondant aux valeurs à compter." ;
+ Text [ swedish ] = "värde 1; värde 2;... är 1 till 30 argument som motsvarar de värden som skall räknas." ;
+ Text [ dutch ] = "Waarde 1; Waarde 2;... zijn maximaal 30 argumenten met de waarden die geteld moeten worden." ;
+ Text [ spanish ] = "Valor 1; valor 2;... son de 1 a 30 argumentos que representan los valores que desea contar." ;
+ Text [ english_us ] = "Value 1, value 2, ... are 1 to 30 arguments representing the values to be counted." ;
+ Text[ chinese_simplified ] = "ÊýÖµ 1; ÊýÖµ 2;... ÊÇ 1 ÖÁ 30 ¸öÒª¼ÆÊýµÄ²ÎÊý¡£";
+ Text[ russian ] = "Çíà÷åíèå 1; çíà÷åíèå 2;... îò 1 äî 30 àðãóìåíòîâ, êîëè÷åñòâî êîòîðûõ òðåáóåòñÿ ñîñ÷èòàòü.";
+ Text[ polish ] = "Od 1 do 30 argumentów, które odpowiadaj¹ wartoœciom do zliczania.";
+ Text[ japanese ] = "’l1¤’l2¤...‚Í 1‚©‚ç30ŒÂ‚܂ł͈̾ٔ͂ŔCˆÓ‚ÌÃÞ°À‚ð‘ÎÛ‚Æ‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¼Æ­È 1; ¼Æ­È 2;... ¬O 1 ¦Ü 30 ­Ó­n­p¼Æªº°Ñ¼Æ¡C";
+ Text[ arabic ] = "value1;value2... ãä 1 Åáì 30 æÓíØÉ ÊãËá ÇáÞíã ÇáãÑÇÏ ÚÏåÇ.";
+ Text[ dutch ] = "Waarde 1; Waarde 2;... zijn maximaal 30 argumenten met de waarden die geteld moeten worden.";
+ Text[ chinese_simplified ] = "ÊýÖµ 1; ÊýÖµ 2;... ÊÇ 1 ÖÁ 30 ¸öÒª¼ÆÊýµÄ²ÎÊý¡£";
+ Text[ greek ] = "ÔéìÞ 1, ÔéìÞ2, ... åßíáé 1 Ýùò 30 ïñßóìáôá ôá ïðïßá áíôïéóôïé÷ïýí óôéò ôéìÝò ðïõ ðñüêåéôáé íá áñéèìçèïýí.";
+ Text[ korean ] = "°ª 1; °ª 2;... Àº ±¸ÇÒ °ª¿¡ »óÀÀÇÏ´Â 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1; deðer 2;... Sayýlacak deðerler temsil eden 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MAX #*=-
+ Resource SC_OPCODE_MAX
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Liefert die größte Zahl einer Argumentliste. : Liefert die gr÷˜te Zahl einer Argumentliste. */
+ Text = "Liefert die größte Zahl einer Argumentliste." ;
+ Text [ english ] = "Returns the maximum value in a list of arguments." ;
+ Text [ norwegian ] = "Liefert die größte Zahl einer Argumentliste." ;
+ Text [ italian ] = "Restituisce il valore massimo di un elenco di argomenti." ;
+ Text [ portuguese_brazilian ] = "Liefert die größte Zahl einer Argumentliste." ;
+ Text [ portuguese ] = "Devolve o valor máximo numa lista de argumentos." ;
+ Text [ finnish ] = "Liefert die größte Zahl einer Argumentliste." ;
+ Text [ danish ] = "Beregner den største værdi på en liste med argumenter." ;
+ Text [ french ] = "Renvoie le plus grand nombre de la liste d'arguments." ;
+ Text [ swedish ] = "Returnerar det största talet i en lista med argument." ;
+ Text [ dutch ] = "Geeft als resultaat de hoogste waarde in een lijst met argumenten." ;
+ Text [ spanish ] = "Devuelve el valor máximo de una lista de argumentos." ;
+ Text [ english_us ] = "Returns the maximum value in a list of arguments." ;
+ Text[ chinese_simplified ] = "Êý¾Ý×éÖеÄ×î´óÊýÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ìàêñèìàëüíîå çíà÷åíèå ñïèñêà àðãóìåíòîâ.";
+ Text[ polish ] = "Wyznacza maksymaln¹ wartoœæ listy argumentów.";
+ Text[ japanese ] = "ˆø”ؽĂɊ܂܂ê‚éÅ‘å‚Ì”’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¼Æ¾Ú²Õ¤¤ªº³Ì¤j¼Æ­È¡C";
+ Text[ arabic ] = "ÊÞÏã ÇáÞíãÉ ÇáßÈÑì Ýí ÞÇÆãÉ æÓÇÆØ.";
+ Text[ dutch ] = "Geeft als resultaat de hoogste waarde in een lijst met argumenten.";
+ Text[ chinese_simplified ] = "Êý¾Ý×éÖеÄ×î´óÊýÖµ¡£";
+ Text[ greek ] = "Äßíåé ôïí ìÝãéóôï áñéèìü ìéáò ëßóôáò ïñéóìÜôùí";
+ Text[ korean ] = "µ¶¸³ º¯¼ö ¸ñ·ÏÀÇ ÃÖ´ëÄ¡¸¦ Á¦½ÃÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþken listesinin en büyük sayýsýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_MAX );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "Numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Núm1; núm2;... " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, deren größte Zahl bestimmt werden soll. : Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, deren gr÷˜te Zahl bestimmt werden soll. */
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, deren größte Zahl bestimmt werden soll." ;
+ Text [ english ] = "are 1 to 30 numbers for which you want to find the maximum value." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, deren größte Zahl bestimmt werden soll." ;
+ Text [ italian ] = "sono da 1 a 30 numeri di cui si desidera trovare il valore massimo." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, deren größte Zahl bestimmt werden soll." ;
+ Text [ portuguese ] = "são números de 1 a 30 cujo valor máximo deseja localizar." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, deren größte Zahl bestimmt werden soll." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, for hvilke den største værdi skal findes." ;
+ Text [ french ] = "Nombre 1, nombre 2 ... sont de 1 à 30 arguments parmi lesquels le nombre le plus grand doit être déterminé." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument vars största tal skall bestämmas." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten waarvan de hoogste waarde moet worden bepaald." ;
+ Text [ spanish ] = "Número 1; número 2;...son entre 1 y 30 números para los que se desea encontrar el valor máximo." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments for which the largest number is to be determined." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸öÒªÕÒ³öÆä×î´óÊýÖµµÄÊý¾Ý¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2;... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ìàêñèìàëüíîå çíà÷åíèå êîòîðûõ òðåáóåòñÿ îïðåäåëèòü.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów, dla których ma zostaæ okreœlona maksymalna wartoœæ.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚ÍÅ‘å‚Ì”’l‚ðŒ©‚Â‚¯‚é1‚©‚ç30ŒÂ‚Ü‚Å‚Ì”’lB";
+ Text[ chinese_traditional ] = "¼Æ¦r 1; ¼Æ¦r 2;... ¬O 1 ¦Ü 30 ­Ó­n§ä¥X¨ä³Ì¤j¼Æ­Èªº¼Æ¾Ú¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 ÑÞãÇð ÊÑíÏ ÊÍÏíÏ ÇáÞíãÉ ÇáÚÙãì áåÇ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten waarvan de hoogste waarde moet worden bepaald.";
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸öÒªÕÒ³öÆä×î´óÊýÖµµÄÊý¾Ý¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôùí ïðïßùí ðñüêåéôáé íá ïñéóôåß ï ìÝãéóôïò áñéèìüò.";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... ÃÖ´ëÄ¡°¡ ÁöÁ¤µÉ 1¿¡¼­ 30±îÁöÀÇ ¼ýÀÚ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... En büyük sayýlarý belirlenecek 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MAXA #*=-
+ Resource SC_OPCODE_MAX_A
+ {
+ String 1 // Description
+ {
+ Text = "Liefert den größten Wert einer Argumentliste. Text wird als Null gewertet." ;
+ Text [ english ] = "Returns the maximum value in a list of arguments. Text is evaluated as Zero." ;
+ Text[ italian ] = "Restituisce il valore massimo di una lista di argomenti. Il testo viene considerato come avente valore 0.";
+ Text[ portuguese_brazilian ] = "Returns the maximum value in a list of arguments. Text is evaluated as Zero.";
+ Text[ portuguese ] = "Devolve o valor máximo numa lista de argumentos. Ao texto é atribuído o valor zero.";
+ Text[ danish ] = "Returnerer den største værdi fra en liste med argumenter. Tekst tolkes som nul.";
+ Text[ french ] = "Renvoie la plus grande valeur d'une liste d'arguments. La valeur 0 est attribuée au texte.";
+ Text[ swedish ] = "Returnerar det största värdet ur en lista med argument. Text värderas till noll.";
+ Text[ dutch ] = "Geeft als resultaat de maximale waarde in een reeks van argumenten. Tekst heeft de waarde 0.";
+ Text[ spanish ] = "Devuelve el valor máximo de una lista de argumentos. El texto se valorará como cero.";
+ Text[ english_us ] = "Returns the maximum value in a list of arguments. Text is evaluated as Zero.";
+ Text[ chinese_simplified ] = "ÕÒ³öÒ»¸ö²ÎÊýÁе¥ÖеÄ×î´óÊýÖµ¡£ÎÄ×ÖÊDZ»µ±×÷Áã¡£";
+ Text[ russian ] = "Âîçâðàùàåò íàèáîëüøåå çíà÷åíèå â ñïèñêå àðãóìåíòîâ. Òåêñò ó÷èòûâàåòñÿ êàê íóëü.";
+ Text[ polish ] = "Wyznacza najwiêksz¹ wartoœæ listy argumentów. Tekst jest oznaczony jako Zero.";
+ Text[ japanese ] = "ˆø”ؽĂÌÅ‘å’l‚ð•Ô‚µ‚Ü‚·B•¶Žš—ñ‚;ÞÛ‚Æ‚Ý‚È‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "§ä¥X¤@­Ó°Ñ¼Æ²M³æ¤¤ªº³Ì¤j¼Æ­È¡C¤å¦r¬O³Q·í§@¹s¡C";
+ Text[ arabic ] = "ÊÞÏã ÇáÞíãÉ ÇáßÈÑì áÞÇÆãÉ æÓÇÆØ. íÊã ÊÞííã ÇáäÕ ßÕÝÑ.";
+ Text[ dutch ] = "Geeft als resultaat de maximale waarde in een reeks van argumenten. Tekst heeft de waarde 0.";
+ Text[ chinese_simplified ] = "ÕÒ³öÒ»¸ö²ÎÊýÁе¥ÖеÄ×î´óÊýÖµ¡£ÎÄ×ÖÊDZ»µ±×÷Áã¡£";
+ Text[ greek ] = "Äßíåé ôçí ìÝãéóôç ôéìÞ ìéáò ëßóôáò ïñéóìÜôùí. Êåßìåíá èá èåùñçèïýí ùò ìçäÝí.";
+ Text[ korean ] = "µ¶¸³ º¯¼ö ¸ñ·ÏÀÇ ÃÖ´ëÄ¡¸¦ Á¦½ÃÇÕ´Ï´Ù. ÅؽºÆ®ÀÇ °ªÀº 0ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþken listesinin en büyük deðerini verir. Metin sýfýr olarak deðerlendirme.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_MAXA );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text[ italian ] = "valore ";
+ Text[ portuguese_brazilian ] = "value ";
+ Text[ portuguese ] = "valor ";
+ Text[ danish ] = "Værdi ";
+ Text[ french ] = "Valeur ";
+ Text[ swedish ] = "värde ";
+ Text[ dutch ] = "waarde ";
+ Text[ spanish ] = "Valor ";
+ Text[ english_us ] = "value ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, deren größter Wert bestimmt werden soll." ;
+ Text [ english ] = "are 1 to 30 arguments of which to determine the maximum value." ;
+ Text[ italian ] = "val 1, val 2; ... sono da 1 a 30 argomenti per i quali si determina il volore massimo.";
+ Text[ portuguese_brazilian ] = "are 1 to 30 arguments of which to determine the maximum value.";
+ Text[ portuguese ] = "núm1; núm2; ... são argumentos entre 1 e 30 para os quais deverá ser encontrado o valor máximo.";
+ Text[ danish ] = "Værdi 1; værdi 2; ... er 1 til 30 argumenter, for hvilke den største værdi skal findes.";
+ Text[ french ] = "Valeur 1, valeur 2, ... représentent de 1 à 30 arguments dont la valeur maximale doit être déterminée.";
+ Text[ swedish ] = "värde 1; värde 2;... är 1 till 30 argument vars största värde skall bestämmas. ";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten waarvan u de grootste waarde wilt bepalen.";
+ Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos para los que se desea encontrar el valor máximo.";
+ Text[ english_us ] = "Value 1, value 2, are 1 to 30 arguments whose largest value is to be determined.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30¸öÒªÕÒ³öÆä×î´óÊýÖµµÄ²ÎÊý¡£";
+ Text[ russian ] = "Çíà÷åíèå 1, çíà÷åíèå 2,... îò 1 äî 30 àðãóìåíòîâ, ñðåäè êîòîðûõ èùåòñÿ íàèáîëüøåå.";
+ Text[ polish ] = "Od 1 do 30 argumentów, dla których ma zostaæ okreœlona maksymalna wartoœæ.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í Å‘å‚Ì”’l‚ðŒ©‚Â‚¯‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ­È1¡Q¼Æ­È2¡Q...¬O 1 ¦Ü 30­Ó­n§ä¥X¨ä³Ì¤j¼Æ­Èªº°Ñ¼Æ¡C";
+ Text[ arabic ] = "value1;value2... ãä 1 Åáì 30 æÓíØÉ ÊÑíÏ ÊÍÏíÏ ÇáÞíãÉ ÇáÚÙãì áåÇ.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten waarvan u de grootste waarde wilt bepalen.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30¸öÒªÕÒ³öÆä×î´óÊýÖµµÄ²ÎÊý¡£";
+ Text[ greek ] = "ÔéìÞ 1, ÔéìÞ2, ... åßíáé 1 Ýùò 30 ïñßóìáôá ôùí ïðïßùí èá ïñéóôåß ç ìåãáëýôåñç ôéìÞ.";
+ Text[ korean ] = "°ª 1, °ª 2,... Àº ÃÖ´ë°ªÀÌ ÁöÁ¤µÉ 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1; deðer 2;... En büyük deðerleri belirlenecek olan 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MIN #*=-
+ Resource SC_OPCODE_MIN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert die kleinste Zahl einer Argumentliste." ;
+ Text [ english ] = "Returns the smallest number in the list of arguments." ;
+ Text [ norwegian ] = "Liefert die kleinste Zahl einer Argumentliste." ;
+ Text [ italian ] = "Restituisce il valore minimo di un elenco di argomenti." ;
+ Text [ portuguese_brazilian ] = "Liefert die kleinste Zahl einer Argumentliste." ;
+ Text [ portuguese ] = "Devolve o mínimo valor de uma lista de argumentos." ;
+ Text [ finnish ] = "Liefert die kleinste Zahl einer Argumentliste." ;
+ Text [ danish ] = "Returnerer den mindste værdi fra en liste med argumenter." ;
+ Text [ french ] = "Renvoie le plus petit nombre de la liste d'arguments." ;
+ Text [ swedish ] = "Returnerar det minsta talet i en lista med argument." ;
+ Text [ dutch ] = "Geeft als resultaat de laagste waarde in een lijst met argumenten." ;
+ Text [ spanish ] = "Devuelve el valor mínimo de una lista de argumentos." ;
+ Text [ english_us ] = "Returns the minimum value in a list of arguments." ;
+ Text[ chinese_simplified ] = "È·¶¨²ÎÊý±íÖеÄ×îСֵ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ìèíèìàëüíîå çíà÷åíèå ñïèñêà àðãóìåíòîâ.";
+ Text[ polish ] = "Wyznacza minimaln¹ wartoœæ w liœcie argumentów.";
+ Text[ japanese ] = "ˆø”ؽĂɊ܂܂ê‚éŬ‚Ì”’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w°Ñ¼Æªí¤¤ªº³Ì¤p­È¡C";
+ Text[ arabic ] = "ÊÞÏã ÇáÞíãÉ ÇáÏäíÇ Ýí ÞÇÆãÉ æÓÇÆØ.";
+ Text[ dutch ] = "Geeft als resultaat de laagste waarde in een lijst met argumenten.";
+ Text[ chinese_simplified ] = "È·¶¨²ÎÊý±íÖеÄ×îСֵ¡£";
+ Text[ greek ] = "Äßíåé ôïí åëÜ÷éóôï áñéèìü ìéáò ëßóôáò ïñéóìÜôùí.";
+ Text[ korean ] = "µ¶¸³ º¯¼ö ¸ñ·ÏÀÇ ÃÖ¼ÒÄ¡¸¦ Á¦½ÃÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþken listesinin en küçük sayýsýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_MIN );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Núm1; núm2;... " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, deren kleinste Zahl bestimmt werden soll." ;
+ Text [ english ] = "are 1 to 30 numbers for which you want to find the minimum value." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, deren kleinste Zahl bestimmt werden soll." ;
+ Text [ italian ] = "sono da 1 a 30 numeri di cui si desidera trovare il valore minimo." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, deren kleinste Zahl bestimmt werden soll." ;
+ Text [ portuguese ] = "são números de 1 a 30 dos quais deseja calcular o mínimo valor." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, deren kleinste Zahl bestimmt werden soll." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, for hvilke den mindste værdi skal findes." ;
+ Text [ french ] = "Nombre 1, nombre 2 ... sont de 1 à 30 arguments parmi lesquels le nombre le plus petit doit être déterminé." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument vars minsta tal skall bestämmas." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten waarvan de laagste waarde moet worden bepaald." ;
+ Text [ spanish ] = "Número 1; número 2;...son entre 1 a 30 números cuyos valores mínimos desea encontrar." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments for which the smallest number is to be determined." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸öҪȷ¶¨Æä×îСֵµÄ²ÎÊý¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2;... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ìèíèìàëüíîå çíà÷åíèå êîòîðûõ òðåáóåòñÿ îïðåäåëèòü.";
+ Text[ polish ] = "Od 1 do 30 liczb, wœród których nast¹pi wyszukanie liczby najmniejszej.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚ÍŬ‚Ì”’l‚ðŒ©‚Â‚¯‚é1‚©‚ç30ŒÂ‚Ü‚Å‚Ì”’lB";
+ Text[ chinese_traditional ] = "¼Æ¦r 1; ¼Æ¦r 2;... ¬O 1 ¦Ü 30 ­Ó­n½T©w¨ä³Ì¤p­Èªº°Ñ¼Æ¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 ÑÞãÇð ÊÑíÏ ÊÍÏíÏ ÇáÞíãÉ ÇáÕÛÑì áåÇ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten waarvan de laagste waarde moet worden bepaald.";
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸öҪȷ¶¨Æä×îСֵµÄ²ÎÊý¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôùí ïðïßùí ðñüêåéôáé íá ïñéóôåß ï åëÜ÷éóôïò áñéèìüò.";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... ÃÖ¼ÒÄ¡°¡ ÁöÁ¤µÉ 1¿¡¼­ 30±îÁöÀÇ ¼ýÀÚ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... En küçük sayýlarý belirlenecek 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MINA #*=-
+ Resource SC_OPCODE_MIN_A
+ {
+ String 1 // Description
+ {
+ Text = "Liefert den kleinsten Wert einer Argumentliste. Text wird als Null gewertet." ;
+ Text [ english ] = "Returns the minimum value in a list of arguments. Text is evaluated as zero." ;
+ Text[ italian ] = "Restituisce il valore minimo di una lista di argomenti. Il testo viene considerato come avente valore 0.";
+ Text[ portuguese_brazilian ] = "Returns the minimum value in a list of arguments. Text is evaluated as zero.";
+ Text[ portuguese ] = "Devolve o valor mínimo numa lista de argumentos. Ao texto é atribuído o valor zero.";
+ Text[ danish ] = "Returnerer den mindste værdi fra en liste med argumenter. Tekst tolkes som nul.";
+ Text[ french ] = "Renvoie la plus petite valeur d'une liste d'arguments. La valeur 0 est attribuée au texte.";
+ Text[ swedish ] = "Returnerar det minsta värdet ur en lista med argument. Text värderas till noll.";
+ Text[ dutch ] = "Geeft als resultaat de minimale waarde in een reeks van argumenten. Tekst heeft de waarde 0.";
+ Text[ spanish ] = "Devuelve el valor mínimo de una lista de argumentos. El texto se valorará como cero.";
+ Text[ english_us ] = "Returns the smallest value in a list of arguments. Text is evaluated as zero.";
+ Text[ chinese_simplified ] = "ÕÒ³öÒ»¸ö²ÎÊýÁе¥ÖеÄ×îСÊýÖµ¡£ÎÄ×ÖÊDZ»µ±×÷Áã¡£";
+ Text[ russian ] = "Âîçâðàùàåò íàèìåíüøåå çíà÷åíèå â ñïèñêå àðãóìåíòîâ. Òåêñò ó÷èòûâàåòñÿ êàê íóëü.";
+ Text[ polish ] = "Wyznacza minimaln¹ wartoœæ listy argumentów. Tekst jest oznaczony jako Zero.";
+ Text[ japanese ] = "ˆø”ؽĂÌŬ’l‚ð•Ô‚µ‚Ü‚·B•¶Žš—ñ‚;ÞÛ‚Æ‚Ý‚È‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "§ä¥X¤@­Ó°Ñ¼Æ²M³æ¤¤ªº³Ì¤p¼Æ­È¡C¤å¦r¬O³Q·í§@¹s¡C";
+ Text[ arabic ] = "ÊÞÏã ÇáÞíãÉ ÇáÕÛÑì Ýí ÞÇÆãÉ æÓÇÆØ. íÊã ÊÞííã ÇáäÕ ßÕÝÑ.";
+ Text[ dutch ] = "Geeft als resultaat de minimale waarde in een reeks van argumenten. Tekst heeft de waarde 0.";
+ Text[ chinese_simplified ] = "ÕÒ³öÒ»¸ö²ÎÊýÁе¥ÖеÄ×îСÊýÖµ¡£ÎÄ×ÖÊDZ»µ±×÷Áã¡£";
+ Text[ greek ] = "Äßíåé ôçí åëÜ÷éóôç ôéìÞ ìéáò ëßóôáò ïñéóìÜôùí. Êåßìåíá èá èåùñçèïýí ùò ìçäÝí.";
+ Text[ korean ] = "µ¶¸³ º¯¼ö ¸ñ·ÏÀÇ ÃÖ¼ÒÄ¡¸¦ Á¦½ÃÇÕ´Ï´Ù. ÅؽºÆ® ÀÇ °ªÀº 0ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþken listesinin en küçük deðerini verir. Metin sýfýr olarak deðerlendirilir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_MINA );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text[ italian ] = "valore ";
+ Text[ portuguese_brazilian ] = "value ";
+ Text[ portuguese ] = "valor ";
+ Text[ danish ] = "Værdi ";
+ Text[ french ] = "Valeur ";
+ Text[ swedish ] = "värde ";
+ Text[ dutch ] = "waarde ";
+ Text[ spanish ] = "Valor ";
+ Text[ english_us ] = "value ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, deren kleinste Zahl bestimmt werden soll." ;
+ Text [ english ] = "are 1 to 30 arguments of which to determine the minimum value." ;
+ Text[ italian ] = "val 1, val 2; ... sono da 1 a 30 argomenti per i quali si determina il volore minimo.";
+ Text[ portuguese_brazilian ] = "are 1 to 30 arguments of which to determine the minimum value.";
+ Text[ portuguese ] = "núm1; núm2;...são argumentos entre 1 e 30 para os quais se deverá encontrar o valor mínimo.";
+ Text[ danish ] = "Værdi 1; værdi 2; ... er 1 til 30 argumenter, for hvilke den mindste værdi skal findes.";
+ Text[ french ] = "Valeur 1, valeur 2, ... représentent de 1 à 30 arguments dont la valeur minimale doit être déterminée.";
+ Text[ swedish ] = "värde 1; värde 2;... är 1 till 30 argument vars minsta tal skall bestämmas. ";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten waarvan u de kleinste waarde wilt bepalen..";
+ Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos para los que se desea encontrar el valor mínimo.";
+ Text[ english_us ] = "Value 1; value 2;... are 1 to 30 arguments whose smallest number is to be determined.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30 ¸öҪȷ¶¨Æä×îСֵµÄ²ÎÊý¡£";
+ Text[ russian ] = "Çíà÷åíèå 1, çíà÷åíèå 2,... îò 1 äî 30 àðãóìåíòîâ, ñðåäè êîòîðûõ èùåòñÿ íàèìåíüøåå.";
+ Text[ polish ] = "Od 1 do 30 argumentów, dla których ma zostaæ okreœlona minimalna wartoœæ.";
+ Text[ japanese ] = "”’l1¤ ”’l2¤...‚ÍŬ’l‚ðŒ©‚Â‚¯‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ­È1¡Q¼Æ­È2¡Q...¬O 1 ¦Ü 30 ­Ó­n½T©w¨ä³Ì¤p­Èªº°Ñ¼Æ¡C";
+ Text[ arabic ] = "value1;value2... ãä 1 Åáì 30 æÓíØÉ ÊÑíÏ ÊÍÏíÏ ÇáÞíãÉ ÇáÚÙãì áåÇ.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten waarvan u de kleinste waarde wilt bepalen..";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30 ¸öҪȷ¶¨Æä×îСֵµÄ²ÎÊý¡£";
+ Text[ greek ] = "ÔéìÞ 1, ÔéìÞ2, ... åßíáé 1 Ýùò 30 ïñßóìáôá ôùí ïðïßùí èá ïñéóôåß ç åëÜ÷éóôç ôéìÞ.";
+ Text[ korean ] = "°ª 1; °ª 2;... ÃÖ¼ÒÄ¡°¡ ÁöÁ¤µÉ 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1; deðer 2;... En küçük sayýlarý belirlenecek olan 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VARIANZ #*=-
+ Resource SC_OPCODE_VAR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Varianz, ausgehend von einer Stichprobe." ;
+ Text [ english ] = "Estimates variance based on a sample." ;
+ Text [ norwegian ] = "Berechnet die Varianz, ausgehend von einer Stichprobe." ;
+ Text [ italian ] = "Restituisce la stima della varianza sulla base di un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Varianz, ausgehend von einer Stichprobe." ;
+ Text [ portuguese ] = "Calcula a variância partindo de uma amostra." ;
+ Text [ finnish ] = "Berechnet die Varianz, ausgehend von einer Stichprobe." ;
+ Text [ danish ] = "Beregner variansen baseret på en stikprøve." ;
+ Text [ french ] = "Calcule la variance en se basant sur un échantillon." ;
+ Text [ swedish ] = "Beräknar variansen baserat på ett stickprov." ;
+ Text [ dutch ] = "Berekent de variantie op basis van een steekproef." ;
+ Text [ spanish ] = "Calcula la varianza de una muestra." ;
+ Text [ english_us ] = "Calculates the variance based on a sample." ;
+ Text[ chinese_simplified ] = "¹ÀËãÒ»¸ö³éÑùµÄ·½²î¡£";
+ Text[ russian ] = "Âû÷èñëÿåò äèñïåðñèþ ïî âûáîðêå.";
+ Text[ polish ] = "Oblicza wariancjê na podstawie próbki.";
+ Text[ japanese ] = "ˆø”‚ð•êW’c‚Ì•W–{‚Å‚ ‚é‚ÆŒ©‚È‚µ‚ÄA•êW’c‚ɑ΂·‚镪ŽU‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦ôºâ¤@­Ó©â¼Ëªº¤è®t¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÊÈÇíä ÇÓÊäÇÏÇð Åáì ÚíäÉ.";
+ Text[ dutch ] = "Berekent de variantie op basis van een steekproef.";
+ Text[ chinese_simplified ] = "¹ÀËãÒ»¸ö³éÑùµÄ·½²î¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôç äéáêýìáíóç ìå âÜóç Ýíá äåßãìá.";
+ Text[ korean ] = "Ç¥º»¿¡ ±Ù°ÅÇÑ º¯µ¿À» »êÃâ";
+ Text[ turkish ] = "Örneðe dayanarak varyansý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_VARIANZ );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "Numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "Áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 number arguments corresponding to a sample of a population." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti numerici corrispondenti ad un campione della popolazione." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ portuguese ] = "são argumentos numéricos de 1 a 30 correspondentes a uma amostra de população." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, der svarer til en stikprøve fra en population." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques qui représentent l'échantillon d'une population." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov från en population." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die resulteren uit een steekproef onder een populatie." ;
+ Text [ spanish ] = "Número 1; número 2;...son de 1 a 30 argumentos numéricos que se corresponden con una muestra de población." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample of a population." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1£»Êý×Ö 2£»ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ russian ] = "×èñëî1, ÷èñëî2, ... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ñîîòâåòñòâóþùèõ âûáîðêå èç ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów, które przedstawiaj¹ próbkê, odpowiadaj¹c¹ populacji.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í•êW’c‚Ì•W–{‚ɑΉž‚·‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ¦r 1¡Q¼Æ¦r 2¡Q¬O 1 ¦Ü 30 ­Óªí¥Ü¤@­Ó©â¼Ëªº¼Æ¦r¤¸¯À¡C";
+ Text[ arabic ] = "Number 1, Number 2;... ãä 1 Åáì 30 æÓíØÉ ÚÏÏíÉ ÊãËá ÚíäÉ ãÃÎæÐÉ ãä ÇáãÌÊãÚ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die resulteren uit een steekproef onder een populatie.";
+ Text[ chinese_simplified ] = "Êý×Ö 1£»Êý×Ö 2£»ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá ðëçèõóìïý.";
+ Text[ korean ] = "¼ö 1; ¼ö 2;... Àº ¸ðÁý´Ü¿¡¼­ »©¿Â Ç¥º»À» ³ªÅ¸³»´Â 1¿¡¼­ 30±îÁöÀÇ ¼ýÀÚ ÀμöÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Popülasyondan alýnmýþ bir örneði temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VARIANZ #*=-
+ Resource SC_OPCODE_VAR_A
+ {
+ String 1 // Description
+ {
+ Text = "Berechnet die Varianz, ausgehend von einer Stichprobe. Text wird als Null gewertet." ;
+ Text [ english ] = "Estimates the variance based on a sample. Text is evaluated as zero." ;
+ Text[ italian ] = "Restituisce la varianza sulla base di un campione. Il testo viene considerato come avente valore 0.";
+ Text[ portuguese_brazilian ] = "Estimates the variance based on a sample. Text is evaluated as zero.";
+ Text[ portuguese ] = "Calcula a variância a partir de uma amostra. Ao texto é atribuído o valor zero.";
+ Text[ danish ] = "Beregner variansen baseret på en stikprøve. Tekst tolkes som nul.";
+ Text[ french ] = "Estime la variance d'une population à partir d'un échantillon. La valeur 0 est attribuée au texte.";
+ Text[ swedish ] = "Beräknar variansen baserat på ett stickprov. Text värderas till noll.";
+ Text[ dutch ] = "Berekent de variantie op basis van een steekproef. Tekst heeft de waarde 0.";
+ Text[ spanish ] = "Calcula la varianza a partir de una muestra. El texto se valorará como cero.";
+ Text[ english_us ] = "Returns the variance based on a sample. Text is evaluated as zero.";
+ Text[ chinese_simplified ] = "¹ÀËã³éÑùµÄ·½²î£¬ÎÄ×Ö±»¶¨ÖµÎªÁã¡£";
+ Text[ russian ] = "Âû÷èñëÿåò äèñïåðñèþ ïî âûáîðêå. Òåêñò ñ÷èòåòñÿ 0.";
+ Text[ polish ] = "Oblicza wariancjê, bazuj¹c na próbce. Tekst jest oznaczony jako Zero.";
+ Text[ japanese ] = "ˆø”‚ð•êW’c‚Ì•W–{‚ÆŒ©‚È‚µ‚ÄA•ªŽU‚ðŒvŽZ‚µ‚Ü‚·B•¶Žš—ñ‚;ÞÛ‚ÆŒ©‚È‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦ôºâ©â¼Ëªº¤è®t¡M¤å¦r³Q©w­È¬°¹s¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÊÈÇíä ÇÓÊäÇÏÇð Åáì ÚíäÉ. íÊã ÊÞííã ÇáäÕ ßÕÝÑ.";
+ Text[ dutch ] = "Berekent de variantie op basis van een steekproef. Tekst heeft de waarde 0.";
+ Text[ chinese_simplified ] = "¹ÀËã³éÑùµÄ·½²î£¬ÎÄ×Ö±»¶¨ÖµÎªÁã¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôç äéáêýìáíóç ìå âÜóç Ýíá äåßãìá. Êåßìåíï ðáßñíåé ôéìÝò ìçäÝí.";
+ Text[ korean ] = "Ç¥º»¿¡ ±Ù°ÅÇÑ º¯µ¿À» »êÃâ. ÅؽºÆ® °ªÀº 0ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Bir örnekten yola çýkarak varyansý hesaplar. Metin sýfýr olarak deðerlendirilir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_VARIANZA );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text[ italian ] = "valore ";
+ Text[ portuguese_brazilian ] = "value ";
+ Text[ portuguese ] = "valor ";
+ Text[ danish ] = "Værdi ";
+ Text[ french ] = "Valeur ";
+ Text[ swedish ] = "värde ";
+ Text[ dutch ] = "waarde ";
+ Text[ spanish ] = "Valor ";
+ Text[ english_us ] = "value ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 arguments corresponding to a sample population." ;
+ Text[ italian ] = "val 1; val 2; ... sono da 1 a 30 argomenti che rappresentano un campione di popolazione.";
+ Text[ portuguese_brazilian ] = "are 1 to 30 arguments corresponding to a sample population.";
+ Text[ portuguese ] = "núm1; núm2;... são argumentos entre 1 e 30 correspondentes a uma amostra de população.";
+ Text[ danish ] = "Værdi 1; værdi 2; ... er 1 til 30 numeriske argumenter, der svarer til en stikprøve fra en population.";
+ Text[ french ] = "Valeur 1, valeur 2, ... représentent de 1 à 30 arguments qui constituent un échantillon de la population.";
+ Text[ swedish ] = "värde 1; värde 2;... är 1 till 30 argument som utgör ett stickprov ur en population.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten die resulteren uit een steekproef onder een populatie.";
+ Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos que se corresponden con una muestra de población.";
+ Text[ english_us ] = "Value 1; value 2;.. .are 1 to 30 arguments representing a sample taken from a basic total population.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30¸ö±í´ïÒ»¸ö³éÑùµÄÔªËØ¡£";
+ Text[ russian ] = "Çíà÷åíèå 1 ,çíà÷åíèå 2,... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ñîîòâåòñòâóþùèõ âûáîðêå èç ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Od 1 do 30 argumentów, które odpowiadaj¹ próbce populacji.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í•êW’c‚Ì•W–{‚ɑΉž‚·‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ­È1¡Q¼Æ­È2¡Q...¬O 1 ¦Ü 30­Óªí¹F¤@­Ó©â¼Ëªº¤¸¯À¡C";
+ Text[ arabic ] = "value1;value2... ãä 1 Åáì 30 æÓíØÉ ÊãËá ÚíäÉ ãÃÎæÐÉ ãä ÇáãÌÊãÚ.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten die resulteren uit een steekproef onder een populatie.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30¸ö±í´ïÒ»¸ö³éÑùµÄÔªËØ¡£";
+ Text[ greek ] = "ÔéìÞ 1, ÔéìÞ2, ... åßíáé 1 Ýùò 30 ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá ôïõ âáóéêïý óõíïëéêïý ðëçèõóìïý.";
+ Text[ korean ] = "°ª 1; °ª 2;... Àº ¸ðÁý´Ü¿¡¼­ ²ø¾î³½ Ç¥º» ÃßÃâÀ» Ç¥ÇöÇÏ´Â1¿¡¼­ 30±îÁöÀÇ ÀμöÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1; deðer 2;... Popülasyondan alýnan bir örneði temsil eden 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VARIANZEN #*=-
+ Resource SC_OPCODE_VAR_P
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Varianz, ausgehend von der Grundgesamtheit." ;
+ Text [ english ] = "Calculates variance based on the entire population." ;
+ Text [ norwegian ] = "Berechnet die Varianz, ausgehend von der Grundgesamtheit." ;
+ Text [ italian ] = "Restituisce la varianza sulla base dell'intera popolazione." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Varianz, ausgehend von der Grundgesamtheit." ;
+ Text [ portuguese ] = "Calcula a variância com base na totalidade da população." ;
+ Text [ finnish ] = "Berechnet die Varianz, ausgehend von der Grundgesamtheit." ;
+ Text [ danish ] = "Beregner variansen baseret på en hel population." ;
+ Text [ french ] = "Calcule la variance en se basant sur la population." ;
+ Text [ swedish ] = "Beräknar variansen baserat på populationen." ;
+ Text [ dutch ] = "Berekent de variantie op basis van de volledige populatie." ;
+ Text [ spanish ] = "Calcula la varianza de la población total." ;
+ Text [ english_us ] = "Calculates variance based on the entire population." ;
+ Text[ chinese_simplified ] = "¼ÆËã³éÑù×ÜÌåµÄ·½²î¡£";
+ Text[ russian ] = "Âû÷èñëÿåò äèñïåðñèþ, èñõîäÿ èç ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Oblicza wariancjê, bazuj¹c na populacji.";
+ Text[ japanese ] = "ˆø”‚ð•êW’c‘S‘Ì‚Å‚ ‚é‚ÆŒ©‚È‚µ‚ÄA•êW’c‚Ì•ªŽU‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ©â¼ËÁ`Å骺¤è®t¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÊÈÇíä ÇÓÊäÇÏÇð Åáì ÇáãÌÊãÚ ßáå.";
+ Text[ dutch ] = "Berekent de variantie op basis van de volledige populatie.";
+ Text[ chinese_simplified ] = "¼ÆËã³éÑù×ÜÌåµÄ·½²î¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôç äéáêýìáíóç ìå âÜóç ôïí óõíïëéêü ðëçèõóìü.";
+ Text[ korean ] = "¸ðÁý´Ü¿¡ ±Ù°ÅÇÏ¿© ºÐ»êÀ» °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Popülasyona dayanarak varyansý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_VARIANZEN );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen. : Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen. */
+ /* ### ACHTUNG: Neuer Text in Resource? Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen. : Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen. */
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen." ;
+ Text [ english ] = "are 1 to 30 number arguments corresponding to a population." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti numerici corrispondenti ad una popolazione." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen." ;
+ Text [ portuguese ] = "são argumentos numéricos de 1 a 30, representando a totalidade de uma população." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, der svarer til en hel population." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques correspondant à une population." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som motsvarar en population." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die overeenkomen met een populatie." ;
+ Text [ spanish ] = "Número 1; número 2;...son de 1 a 30 argumentos numéricos que se corresponden con una población." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which represent a population." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1£»Êý×Ö 2£»ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ russian ] = "×èñëî1, ÷èñëî2, ... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ñîîòâåòñòâóþùèõ ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów, które odpowiadaj¹ populacji.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í•êW’c‘S‘̂ɑΉž‚·‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ¦r 1¡Q¼Æ¦r 2¡Q¬O 1 ¦Ü 30 ­Óªí¥Ü¤@­Ó©â¼Ëªº¼Æ¦r¤¸¯À¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 æÓíØÉ ÊãËá ÇáãÌÊãÚ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die overeenkomen met een populatie.";
+ Text[ chinese_simplified ] = "Êý×Ö 1£»Êý×Ö 2£»ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áíôéðñïóùðåýïõí Ýíáí ðëçèõóìü.";
+ Text[ korean ] = "¼ö 1, ¼ö 2... Àº ¸ðÁýÇÕ¿¡ »óÀÀÇÏ´Â 1¿¡¼­ 30±îÁöÀÇ ¼ýÀÚ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Bir popülasyonu temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VARIANZENA #*=-
+ Resource SC_OPCODE_VAR_P_A
+ {
+ String 1 // Description
+ {
+ Text = "Berechnet die Varianz, ausgehend von der Grundgesamtheit. Text wird als Null gewertet." ;
+ Text [ english ] = "Calculates variance based on the entire population. Text is evaluated as zero." ;
+ Text[ italian ] = "Restituisce la varianza sulla base dell'intera popolazione. Il testo viene considerato come avente valore 0.";
+ Text[ portuguese_brazilian ] = "Calculates variance based on the entire population. Text is evaluated as zero.";
+ Text[ portuguese ] = "Calcula a variância a partir da população total. Ao texto é atribuído o valor zero.";
+ Text[ danish ] = "Beregner variansen baseret på populationen. Tekst tolkes som nul.";
+ Text[ french ] = "Calcule la variance d'une population à partir de la population entière. La valeur 0 est attribuée au texte.";
+ Text[ swedish ] = "Beräknar variansen baserat på populationen. Text värderas till noll.";
+ Text[ dutch ] = "Berekent de variantie op basis van een steekproef onder een populatie. Aan tekst wordt de waarde 0 toegewezen.";
+ Text[ spanish ] = "Calcula la varianza a partir de la población total. El texto se valorará como cero.";
+ Text[ english_us ] = "Returns the variance based on the entire population. Text is evaluated as zero.";
+ Text[ chinese_simplified ] = "¼ÆËã³éÑù×ÜÌåµÄ·½²î¡£ÎÄ×Ö±»¶¨ÖµÎªÁã¡£";
+ Text[ russian ] = "Âû÷èñëÿåò äèñïåðñèþ ïî ãåíåðàëüíîé ñîâîêóïíîñòè. Òåêñò ñ÷èòàåòñÿ 0.";
+ Text[ polish ] = "Oblicza wariancjê, bazuj¹c na populacji. Tekst jest oznaczony jako Zero.";
+ Text[ japanese ] = "ˆø”‚ð•êW’c‘S‘Ì‚ÆŒ©‚È‚µ‚ÄA•ªŽU‚ðŒvŽZ‚µ‚Ü‚·B•¶Žš—ñ‚;ÞÛ‚ÆŒ©‚È‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ©â¼ËÁ`Å骺¤è®t¡C¤å¦r³Q©w­È¬°¹s¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÊÈÇíä ÇÓÊäÇÏÇð Åáì ÇáãÌÊãÚ ßáå. íÊã ÊÞííã ÇáäÕ ßÕÝÑ.";
+ Text[ dutch ] = "Berekent de variantie op basis van een steekproef onder een populatie. Aan tekst wordt de waarde 0 toegewezen.";
+ Text[ chinese_simplified ] = "¼ÆËã³éÑù×ÜÌåµÄ·½²î¡£ÎÄ×Ö±»¶¨ÖµÎªÁã¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôç äéáêýìáíóç ìå âÜóç ôïí óõíïëéêü ðëçèõóìü. Êåßìåíï ðáßñíåé ôéìÝò ìçäÝí.";
+ Text[ korean ] = "¸ðÁý´Ü¿¡ ±âÃÊÇÑ ºÐ»êÀ» »êÃâÇÕ´Ï´Ù. ÅؽºÆ®ÀÇ °ªÀº 0ÀÌ µË´Ï´Ù.";
+ Text[ turkish ] = "Popülasyondan yola çýkarak varyansý hesaplar. Metin sýfýr olarak deðerlendirilir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_VARIANZENA );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text[ italian ] = "valore ";
+ Text[ portuguese_brazilian ] = "value ";
+ Text[ portuguese ] = "valor ";
+ Text[ danish ] = "Værdi ";
+ Text[ french ] = "Valeur ";
+ Text[ swedish ] = "värde ";
+ Text[ dutch ] = "waarde ";
+ Text[ spanish ] = "Valor ";
+ Text[ english_us ] = "value ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, die einer Grundgesamtheit entsprechen." ;
+ Text [ english ] = "are 1 to 30 arguments representing a population." ;
+ Text[ italian ] = "val 1, val 2; ... sono da 1 a 30 argomenti che rappresentano una popolazione.";
+ Text[ portuguese_brazilian ] = "are 1 to 30 arguments representing a population.";
+ Text[ portuguese ] = "valor1; valor2;... são argumentos entre 1 e 30 e que representam uma população.";
+ Text[ danish ] = "Værdi 1; værdi 2; ... er 1 til 30 numeriske argumenter, der svarer til en hel population.";
+ Text[ french ] = "Valeur 1, valeur 2, ... représentent de 1 à 30 arguments correspondant à une population.";
+ Text[ swedish ] = "värde 1; värde 2;... är 1 till 30 argument som motsvarar en population.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten die overeenkomen met een populatie.";
+ Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos que se corresponden con una población.";
+ Text[ english_us ] = "Value 1; value 2;... are 1 to 30 arguments representing a population.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»... ÊÇ 1 ÖÁ 30¸ö±íʾ³éÑù×ÜÌåµÄÊý×ÖÔªËØ¡£";
+ Text[ russian ] = "Çíà÷åíèå 1, çíà÷åíèå 2, ... îò1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ñîîòâåòñòâóþùèõ ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Od 1 do 30 argumentów, które reprezentuj¹ populacjê.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í•êW’c‘S‘̂ɑΉž‚·‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ­È1¡Q¼Æ­È2¡Q... ¬O 1 ¦Ü 30­Óªí¥Ü©â¼ËÁ`Å骺¼Æ¦r¤¸¯À¡C";
+ Text[ arabic ] = "value1;value2... ãä 1 Åáì 30 æÓíØÉ ÊãËá ãÌÊãÚ.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten die overeenkomen met een populatie.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»... ÊÇ 1 ÖÁ 30¸ö±íʾ³éÑù×ÜÌåµÄÊý×ÖÔªËØ¡£";
+ Text[ greek ] = "ÔéìÞ 1, ÔéìÞ2, ... åßíáé 1 Ýùò 30 ïñßóìáôá ôá ïðïßá áíôéðñïóùðåýïõí Ýíáí ðëçèõóìü.";
+ Text[ korean ] = "°ª 1; °ª 2;... Àº ¸ðÁý´Ü¿¡ ÀÏÄ¡ÇÏ´Â 1¿¡¼­ 30±îÁöÀÇ ÀμöÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1; Deðer 2;... Bir popülasyonu temsil eden 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function STABW #*=-
+ Resource SC_OPCODE_ST_DEV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Standardabweichung, ausgehend von einer Stichprobe." ;
+ Text [ english ] = "Estimates standard deviation based on a sample." ;
+ Text [ norwegian ] = "Berechnet die Standardabweichung, ausgehend von einer Stichprobe." ;
+ Text [ italian ] = "Restituisce una stima della deviazione standard a partire da un campione" ;
+ Text [ portuguese_brazilian ] = "Berechnet die Standardabweichung, ausgehend von einer Stichprobe." ;
+ Text [ portuguese ] = "Calcula o desvio padrão a partir de uma amostra." ;
+ Text [ finnish ] = "Berechnet die Standardabweichung, ausgehend von einer Stichprobe." ;
+ Text [ danish ] = "Beregner standardafvigelsen på basis af en stikprøve." ;
+ Text [ french ] = "Calcule l'écart-type en se basant sur un échantillon." ;
+ Text [ swedish ] = "Beräknar standardavvikelsen baserat på ett stickprov." ;
+ Text [ dutch ] = "Berekent de standaarddeviatie op basis van een steekproef." ;
+ Text [ spanish ] = "Calcula la desviación estándar de una muestra." ;
+ Text [ english_us ] = "Calculates the standard deviation based on a sample." ;
+ Text[ chinese_simplified ] = "¹ÀËã³éÑùµÄ±ê׼ƫ²î¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñòàíäàðòíîå îòêëîíåíèå, èñõîäÿ èç âûáîðêè.";
+ Text[ polish ] = "Oblicza odchylenie standardowe, bazuj¹c na próbce.";
+ Text[ japanese ] = "ˆø”‚ð•êW’c‚Ì•W–{‚Å‚ ‚é‚ÆŒ©‚È‚µ‚ÄA•êW’c‚ɑ΂·‚é•W€•Î·‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦ôºâ©â¼Ëªº¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ÇÓÊäÇÏÇð Åáì ÚíäÉ.";
+ Text[ dutch ] = "Berekent de standaarddeviatie op basis van een steekproef.";
+ Text[ chinese_simplified ] = "¹ÀËã³éÑùµÄ±ê׼ƫ²î¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ôõðéêÞ áðüêëéóç, ìå âÜóç Ýíá äåßãìá.";
+ Text[ korean ] = "Ç¥º»¿¡ ±Ù°ÅÇÑ Ç¥ÁØ ÆíÂ÷¸¦ »êÃâ";
+ Text[ turkish ] = "Örneðe dayanarak standart sapmayý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_STABW );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 number arguments corresponding to a sample of a population." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti numerici corrispondenti ad un campione della popolazione." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ portuguese ] = "são argumentos numéricos de 1 a 30 correspondentes a uma parte da população." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, der svarer til en stikprøve fra en population." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques qui représentent l'échantillon d'une population." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov från en population." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die resulteren uit een steekproef onder een populatie." ;
+ Text [ spanish ] = "Número 1; número 2;...son de 1 a 30 argumentos numéricos que corresponden a una muestra de población." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample of a population." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1£»Êý×Ö 2£»ÊÇ 1 ÖÁ 30 ¸ö±íʾ³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ russian ] = "×èñëî1, ÷èñëî2, ... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ñîîòâåòñòâóþùèõ âûáîðêå èç ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów, które przedstawiaj¹ próbkê, odpowiadaj¹c¹ populacji.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í•êW’c‚Ì•W–{‚ɑΉž‚·‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ¦r 1¡Q¼Æ¦r 2¡Q¬O 1 ¦Ü 30 ­Óªí¥Ü©â¼Ëªº¼Æ¦r¤¸¯À¡C";
+ Text[ arabic ] = "Number 1, Number 2;... ãä 1 Åáì 30 æÓíØÉ ÚÏÏíÉ ÊãËá ÚíäÉ ãÃÎæÐÉ ãä ÇáãÌÊãÚ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die resulteren uit een steekproef onder een populatie.";
+ Text[ chinese_simplified ] = "Êý×Ö 1£»Êý×Ö 2£»ÊÇ 1 ÖÁ 30 ¸ö±íʾ³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá ðëçèõóìïý.";
+ Text[ korean ] = "¼ö 1; ¼ö 2;... Àº ¸ðÁý´Ü¿¡¼­ »©¿Â Ç¥º»À» ³ªÅ¸³»´Â 1¿¡¼­ 30±îÁöÀÇ ¼ýÀÚ ÀμöÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Popülasyondan alýnmýþ bir örneði temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function STABWA #*=-
+ Resource SC_OPCODE_ST_DEV_A
+ {
+ String 1 // Description
+ {
+ Text = "Berechnet die Standardabweichung, ausgehend von einer Stichprobe. Text wird als Null gewertet." ;
+ Text [ english ] = "Estimates the standard deviation based on a sample. Text is evaluated as zero." ;
+ Text[ italian ] = "Restituisce la deviazione standard sulla base di un campione. Il testo viene considerato come avente valore 0.";
+ Text[ portuguese_brazilian ] = "Estimates the standard deviation based on a sample. Text is evaluated as zero.";
+ Text[ portuguese ] = "Calcula o desvio-padrão a partir de uma amostra. Ao texto é atribuído o valor zero.";
+ Text[ danish ] = "Beregner standardafvigelsen baseret på en stikprøve. Tekst tolkes som nul.";
+ Text[ french ] = "Évalue l'écart-type à partir d'un échantillon. La valeur 0 est attribuée au texte.";
+ Text[ swedish ] = "Beräknar standardavvikelsen baserat på ett stickprov. Text värderas till noll.";
+ Text[ dutch ] = "Berekent de standaardafwijking op basis van een steekproef. Aan tekst wordt de waarde 0 toegewezen.";
+ Text[ spanish ] = "Calcula la desviación estándar a partir de una muestra. El texto se valorará como cero.";
+ Text[ english_us ] = "Returns the standard deviation based on a sample. Text is evaluated as zero.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÑù±¾×ÜÌåµÄ±ê׼ƫ²î¡£ÎÄ×Öµ±×÷Áã¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñòàíäàðòíîå îòêëîíåíèå, èñõîäÿ èç âûáîðêè. Òåêñò ñ÷èòàåòñÿ êàê 0.";
+ Text[ polish ] = "Oblicza odchylenie standardowe, bazuj¹c na próbce. Tekst jest oznaczony jako Zero.";
+ Text[ japanese ] = "ˆø”‚ð•êW’c‚Ì•W–{‚ÆŒ©‚È‚µ‚ÄA•W€•Î·‚ðŒvŽZ‚µ‚Ü‚·B•¶Žš—ñ‚;ÞÛ‚ÆŒ©‚È‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Ë¥»Á`Å骺¼Ð·Ç°¾®t¡C¤å¦r·í§@¹s¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ÇÓÊäÇÏÇð Åáì ÚíäÉ. íÊã ÊÞííã ÇáäÕ ßÕÝÑ.";
+ Text[ dutch ] = "Berekent de standaardafwijking op basis van een steekproef. Aan tekst wordt de waarde 0 toegewezen.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÑù±¾×ÜÌåµÄ±ê׼ƫ²î¡£ÎÄ×Öµ±×÷Áã¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ôõðéêÞ áðüêëéóç, ìå âÜóç Ýíá äåßãìá. Ôï êåßìåíï ðáßñíåé ôéìÝò ìçäÝí.";
+ Text[ korean ] = "Ç¥º»¿¡ ±Ù°ÅÇÑ Ç¥ÁØ ÆíÂ÷¸¦ »êÃâ. ÅؽºÆ® °ªÀº 0ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Bir örnekten yola çýkarak standart sapmayý hesaplar. metin sýfýr olarak deðerlendirilir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_STABWA );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text[ italian ] = "valore ";
+ Text[ portuguese_brazilian ] = "value ";
+ Text[ portuguese ] = "valor ";
+ Text[ danish ] = "Værdi ";
+ Text[ french ] = "Valeur ";
+ Text[ swedish ] = "värde ";
+ Text[ dutch ] = "waarde ";
+ Text[ spanish ] = "Valor ";
+ Text[ english_us ] = "value ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 arguments corresponding to a sample of a population." ;
+ Text[ italian ] = "val 1; val 2; ... sono da 1 a 30 argomenti che rappresentano un campione di popolazione.";
+ Text[ portuguese_brazilian ] = "are 1 to 30 arguments corresponding to a sample of a population.";
+ Text[ portuguese ] = "valor1; valor2;... são argumentos entre 1 e 30 correspondentes a uma amostra de população.";
+ Text[ danish ] = "Værdi 1; værdi 2; ... er 1 til 30 numeriske argumenter, der svarer til en stikprøve fra en population.";
+ Text[ french ] = "Valeur 1, valeur 2, ... représentent de 1 à 30 arguments qui constituent un échantillon d'une population.";
+ Text[ swedish ] = "värde 1; värde 2;... är 1 till 30 argument som utgör ett stickprov ur en population.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten die resulteren uit een steekproef onder een populatie.";
+ Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos que se corresponden con una muestra de población.";
+ Text[ english_us ] = "Value 1; value 2;.. .are 1 to 30 arguments representing a sample taken from a basic total population.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå 1 ,çíà÷åíèå 2,... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ñîîòâåòñòâóþùèõ âûáîðêå èç ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Od 1 do 30 argumentów, które odpowiadaj¹ próbce populacji.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í•êW’c‚Ì•W–{‚ɑΉž‚·‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ­È1¡Q¼Æ­È2¡Q...¬O 1 ¦Ü 30 ­Óªí¥Ü¤@­Ó©â¼Ëªº¼Æ­È¡C";
+ Text[ arabic ] = "value1;value2... ãä 1 Åáì 30 æÓíØÉ ÊãËá ÚíäÉ ãÃÎæÐÉ ãä ÇáãÌÊãÚ.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten die resulteren uit een steekproef onder een populatie.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÊýÖµ¡£";
+ Text[ greek ] = "ÔéìÞ 1, ÔéìÞ 2, ... åßíáé áðü 1 Ýùò êáé 30 ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá ôïõ âáóéêïý óõíïëéêïý ðëçèõóìïý.";
+ Text[ korean ] = "°ª 1; °ª 2;... Àº ¸ðÁý´Ü¿¡¼­ ²ø¾î³½ Ç¥º» ÃßÃâÀ» Ç¥ÇöÇÏ´Â1¿¡¼­ 30±îÁöÀÇ ÀμöÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1; Deðer 2;... Bir popülasyondan alýnan bir örneði temsil eden 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function STABWN #*=-
+ Resource SC_OPCODE_ST_DEV_P
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Standardabweichung, ausgehend von der Grundgesamtheit." ;
+ Text [ english ] = "Calculates standard deviation based on the entire population given as arguments." ;
+ Text [ norwegian ] = "Berechnet die Standardabweichung, ausgehend von der Grundgesamtheit." ;
+ Text [ italian ] = "Calcola la deviazione standard sulla base dell'intera popolazione." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Standardabweichung, ausgehend von der Grundgesamtheit." ;
+ Text [ portuguese ] = "Calcula o desvio padrão, baseando-se na totalidade da população fornecida." ;
+ Text [ finnish ] = "Berechnet die Standardabweichung, ausgehend von der Grundgesamtheit." ;
+ Text [ danish ] = "Beregner standardafvigelsen på basis af en hel population." ;
+ Text [ french ] = "Calcule l'écart-type à partir de la population entière." ;
+ Text [ swedish ] = "Beräknar standardavvikelsen baserat på populationen." ;
+ Text [ dutch ] = "Berekent de standaarddeviatie op basis van de volledige populatie." ;
+ Text [ spanish ] = "Calcula la desviación estándar de la población total determinada por los argumentos." ;
+ Text [ english_us ] = "Calculates the standard deviation based on the entire population." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÑù±¾×ÜÌåµÄ±ê׼ƫ²î¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñòàíäàðòíîå îòêëîíåíèå, èñõîäÿ èç ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Oblicza odchylenie standardowe, bazuj¹c na populacji.";
+ Text[ japanese ] = "ˆø”‚ð•êW’c‘S‘Ì‚Å‚ ‚é‚ÆŒ©‚È‚µ‚ÄA•êW’c‚Ì•W€•Î·‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Ë¥»Á`Å骺¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ÇÓÊäÇÏÇð Åáì ÇáãÌÊãÚ.";
+ Text[ dutch ] = "Berekent de standaarddeviatie op basis van de volledige populatie.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÑù±¾×ÜÌåµÄ±ê׼ƫ²î¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ôõðéêÞ áðüêëéóç, ìå âÜóç ïëüêëçñï ôïí ðëçèõóìü.";
+ Text[ korean ] = "¸ðÁý´Ü¿¡ ±Ù°ÅÇÏ¿© Ç¥ÁØ ÆíÂ÷¸¦ °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Popülasyona dayanarak standart sapmayý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_STABWN );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen. : Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen. */
+ /* ### ACHTUNG: Neuer Text in Resource? Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen. : Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen. */
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen." ;
+ Text [ english ] = "are 1 to 30 number arguments corresponding to a population." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti corrispondenti ad una popolazione." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen." ;
+ Text [ portuguese ] = "são argumentos numéricos de 1 a 30 representando uma população." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die einer Grundgesamtheit entsprechen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, der svarer til en hel population." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques correspondant à une population." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som motsvarar en population." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die betrekking hebben op een populatie." ;
+ Text [ spanish ] = "Número 1; número 2;...son de 1 a 30 argumentos numéricos que corresponden a la población." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample of a population." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1£»Êý×Ö 2£»ÊÇ1 µ½ 30 ¸ö±íʾºÍÑù±¾×ÜÌåÏà¶ÔÓ¦µÄÊý×ÖÔªËØ¡£";
+ Text[ russian ] = "×èñëî1, ÷èñëî2, ... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ñîîòâåòñòâóþùèõ ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów, reprezentuj¹cych populacjê.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í •êW’c‘S‘̂ɑΉž‚·‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ¦r 1¡Q¼Æ¦r 2¡Q¬O1 ¨ì 30 ­Óªí¥Ü©M¼Ë¥»Á`Åé¬Û¹ïÀ³ªº¼Æ¦r¤¸¯À¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 æÓíØÉ ÊãËá ÇáãÌÊãÚ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die betrekking hebben op een populatie.";
+ Text[ chinese_simplified ] = "Êý×Ö 1£»Êý×Ö 2£»ÊÇ1 µ½ 30 ¸ö±íʾºÍÑù±¾×ÜÌåÏà¶ÔÓ¦µÄÊý×ÖÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áíôéðñïóùðåýïõí Ýíáí ðëçèõóìü.";
+ Text[ korean ] = "¼ö 1;¼ö 2;... Àº ¸ðÁý´Ü¿¡ ÀÏÄ¡ÇÏ´Â 1¿¡¼­ 30±îÁöÀÇ ¼ýÀÚ ÀμöÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Popülasyonu temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function STABWNA #*=-
+ Resource SC_OPCODE_ST_DEV_P_A
+ {
+ String 1 // Description
+ {
+ Text = "Berechnet die Standardabweichung, ausgehend von der Grundgesamtheit. Text wird als Null gewertet." ;
+ Text [ english ] = "Calculates the standard deviation based on the entire population. Text is evaluated as zero." ;
+ Text[ italian ] = "Restituisce la deviazione standard sulla base sull'intera popolazione. Il testo viene considerato come avente valore 0.";
+ Text[ portuguese_brazilian ] = "Calculates the standard deviation based on the entire population. Text is evaluated as zero.";
+ Text[ portuguese ] = "Calcula o desvio-padrão a partir da população total. Ao texto é atribuído o valor zero.";
+ Text[ danish ] = "Beregner standardafvigelsen baseret på en hel population. Tekst tolkes som nul.";
+ Text[ french ] = "Évalue l'écart-type à partir de la population entière. La valeur 0 est attribuée au texte.";
+ Text[ swedish ] = "Beräknar standardavvikelsen baserat på populationen. Text värderas till noll.";
+ Text[ dutch ] = "Berekent de standaarddeviatie uitgaande van een populatie. Aan tekst wordt de waarde 0 toegewezen.";
+ Text[ spanish ] = "Calcula la desviación estándar a partir de la población total. El texto se valorará como cero.";
+ Text[ english_us ] = "Returns the standard deviation based on the entire population. Text is evaluated as zero.";
+ Text[ chinese_simplified ] = "¹ÀËãÒ»¸ö³éÑùµÄ±ê׼ƫ²î¡£ÎÄ×Öµ±×÷Áã¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñòàíäàðòíîå îòêëîíåíèå, èñõîäÿ èç ãåíåðàëüíîé ñîâîêóïíîñòè. Òåêñò ñ÷èòàåòñÿ êàê 0.";
+ Text[ polish ] = "Oblicza odchylenie standardowe, bazuj¹c na populacji. Tekst jest oznaczony jako Zero.";
+ Text[ japanese ] = "ˆø”‚ð•êW’c‘S‘Ì‚Å‚ ‚é‚ÆŒ©‚È‚µ‚ÄA•êW’c‚Ì•W€•Î·‚ð•Ô‚µ‚Ü‚·B•¶Žš—ñ‚;ÞÛ‚ÆŒ©‚È‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦ôºâ¤@­Ó©â¼Ëªº¼Ð·Ç°¾®t¡C¤å¦r·í§@¹s¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ÇÓÊäÇÏÇð Åáì ÇáãÌÊãÚ. íÊã ÊÞííã ÇáäÕ ßÕÝÑ.";
+ Text[ dutch ] = "Berekent de standaarddeviatie uitgaande van een populatie. Aan tekst wordt de waarde 0 toegewezen.";
+ Text[ chinese_simplified ] = "¹ÀËãÒ»¸ö³éÑùµÄ±ê׼ƫ²î¡£ÎÄ×Öµ±×÷Áã¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ôõðéêÞ áðüêëéóç, ìå âÜóç ïëüêëçñï ôïí ðëçèõóìü. Ôï êåßìåíï ðáßñíåé ôéìÝò ìçäÝí.";
+ Text[ korean ] = "¸ðÁý´Ü¿¡ ±Ù°ÅÇÑ Ç¥ÁØ ÆíÂ÷¸¦ »êÃâÇÕ´Ï´Ù.ÅؽºÆ®ÀÇ °ªÀº 0ÀÌ µË´Ï´Ù.";
+ Text[ turkish ] = "Bir popülasyondan yola çýkarak standart sapmayý hesaplar. Metin sýfýr olarak deðerlendirilir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_STABWNA );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text[ italian ] = "valore ";
+ Text[ portuguese_brazilian ] = "value ";
+ Text[ portuguese ] = "valor ";
+ Text[ danish ] = "Værdi ";
+ Text[ french ] = "Valeur ";
+ Text[ swedish ] = "värde ";
+ Text[ dutch ] = "waarde ";
+ Text[ spanish ] = "Valor ";
+ Text[ english_us ] = "value ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, die einer Grundgesamtheit entsprechen." ;
+ Text [ english ] = "are 1 to 30 arguments representing a population." ;
+ Text[ italian ] = "val 1, val 2; ... sono da 1 a 30 argomenti che rappresentano una popolazione.";
+ Text[ portuguese_brazilian ] = "are 1 to 30 arguments representing a population.";
+ Text[ portuguese ] = "valor1; valor2;... são argumetnos entre 1 e 30 que representam uma população.";
+ Text[ danish ] = "Værdi 1; værdi 2; ... er 1 til 30 numeriske argumenter, der svarer til en hel population.";
+ Text[ french ] = "Valeur 1, valeur 2, ... représentent de 1 à 30 arguments correspondant à une population.";
+ Text[ swedish ] = "värde 1; värde 2;... är 1 till 30 argument som motsvarar en population.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten die resulteren uit een steekproef onder een populatie.";
+ Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos que se corresponden con una población.";
+ Text[ english_us ] = "Value 1; value 2;... are 1 to 30 arguments corresponding to a population.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30¸ö±íʾÑù±¾×ÜÌåµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå 1, çíà÷åíèå 2, ... îò1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ñîîòâåòñòâóþùèõ ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Od 1 do 30 argumentów, które reprezentuj¹ populacjê.";
+ Text[ japanese ] = "”’l1¤”’l2...‚Í•êW’c‘S‘̂ɑΉž‚·‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ­È1¡Q¼Æ­È2¡Q...¬O 1 ¦Ü 30­Óªí¥Ü¼Ë¥»Á`Å骺¼Æ­È¡C";
+ Text[ arabic ] = "value1;value2... ãä 1 Åáì 30 æÓíØÉ ÊãËá ãÌÊãÚ.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten die resulteren uit een steekproef onder een populatie.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30¸ö±íʾÑù±¾×ÜÌåµÄÊýÖµ¡£";
+ Text[ greek ] = "ÔéìÞ 1, ÔéìÞ2, ... åßíáé 1 Ýùò 30 ïñßóìáôá ôá ïðïßá áíôéðñïóùðåýïõí Ýíáí ðëçèõóìü.";
+ Text[ korean ] = "°ª 1; °ª 2;... Àº ¸ðÁý´Ü¿¡ ÀÏÄ¡ÇÏ´Â 1¿¡¼­ 30±îÁöÀÇ ÀμöÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1; Deðer 2;... Bir popülasyonu temsil eden 1 - 30 arasý deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MITTELWERT #*=-
+ Resource SC_OPCODE_AVERAGE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den Mittelwert einer Stichprobe." ;
+ Text [ english ] = "Returns the average (arithmetic mean) of the arguments." ;
+ Text [ norwegian ] = "Berechnet den Mittelwert einer Stichprobe." ;
+ Text [ italian ] = "Restituisce la media aritmetica di un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Mittelwert einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve a média dos argumentos." ;
+ Text [ finnish ] = "Berechnet den Mittelwert einer Stichprobe." ;
+ Text [ danish ] = "Beregner middelværdien i en stikprøve." ;
+ Text [ french ] = "Calcule la moyenne d'un échantillon." ;
+ Text [ swedish ] = "Beräknar medelvärdet för ett stickprov." ;
+ Text [ dutch ] = "Berekent de gemiddelde waarde van een steekproef" ;
+ Text [ spanish ] = "Devuelve el promedio de los argumentos." ;
+ Text [ english_us ] = "Returns the average of a sample." ;
+ Text[ chinese_simplified ] = "Ò»´Î³éÑùµÄƽ¾ùÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ñðåäíåå (àðèôìåòè÷åñêîå) ñâîèõ àðãóìåíòîâ.";
+ Text[ polish ] = "Oblicza œredni¹ argumentu w próbce.";
+ Text[ japanese ] = "ˆø”‚Ì•½‹Ï’l‚ðŒvŽZ‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤@¦¸©â¼Ëªº¥­§¡­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáæÓØ ÇáÍÓÇÈí áÚíäÉ ÚÔæÇÆíÉ.";
+ Text[ dutch ] = "Berekent de gemiddelde waarde van een steekproef";
+ Text[ chinese_simplified ] = "Ò»´Î³éÑùµÄƽ¾ùÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ìÝóç ôéìÞ åíüò äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»ÀÇ Æò±ÕÀ» ¹Ýȯ";
+ Text[ turkish ] = "Örneðin ortalamasýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_MITTELWERT );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 numeric arguments for which you want the average." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti numerici di cui si desidera calcolare la media." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ portuguese ] = "Núm1; núm2;... são de 1 a 30 argumentos numéricos para os quais deseja calcular a média." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, der svarer til en stikprøve fra en population." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques qui représentent l'échantillon d'une population." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov från en population." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten waarvan het gemiddelde moet worden berekend." ;
+ Text [ spanish ] = "Número 1; Número2; ...son de 1 a 30 argumentos numéricos de una muestra cuyo promedio se desea obtener." ;
+ Text [ english_us ] = "Number 1, number 2;...are 1 to 30 numeric arguments representing a population sample." ;
+ Text[ chinese_simplified ] = "Êý×Ö1; Êý×Ö2;... ÊÇ 1 ÖÁ 30¸öÊý×Ö×Ô±äÁ¿, ËüÃDZíʾ\nÒª¼ÆËãÆäƽ¾ùÖµµÄÒ»¸ö³éÑù¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2;... îò 1 äî 30 àðãóìåíòîâ, äëÿ êîòîðûõ âû÷èñëÿåòñÿ ñðåäíåå âûáîðêè, âûäåëåííîé èç îáùåé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów, które przedstawiaj¹ próbkê, odpowiadaj¹c¹ populacji.";
+ Text[ japanese ] = "”’l1¤ ”’l2¤...‚Í•½‹Ï‚ð‹‚ß‚é1‚©‚ç30ŒÂ‚܂ł̈ø”¡";
+ Text[ chinese_traditional ] = "¼Æ¦r1; ¼Æ¦r2;... ¬O 1 ¦Ü 30­Ó¼Æ¦r¦ÛÅܶq, ¥¦­Ìªí¥Ü­n­pºâ¨ä¥­§¡­Èªº¤@­Ó©â¼Ë¡C";
+ Text[ arabic ] = "Number 1, Number 2;... ãä 1 Åáì 30 æÓíØÉ ÚÏÏíÉ ÊãËá ÚíäÉ ãÃÎæÐÉ ãä ÇáãÌÊãÚ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten waarvan het gemiddelde moet worden berekend.";
+ Text[ chinese_simplified ] = "Êý×Ö1; Êý×Ö2;... ÊÇ 1 ÖÁ 30¸öÊý×Ö×Ô±äÁ¿, ËüÃDZíʾ\nÒª¼ÆËãÆäƽ¾ùÖµµÄÒ»¸ö³éÑù¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá ðëçèõóìïý.";
+ Text[ korean ] = "¼ö 1, ¼ö 2;... ´Â ¸ðÁý´Ü¿¡¼­ »©¿Â Ç¥º»À» ³ªÅ¸³»´Â 1ºÎÅÍ 30±îÁöÀÇ ÀμöÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Bir popülasyondan alýnmýþ örneði temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MITTELWERTA #*=-
+ Resource SC_OPCODE_AVERAGE_A
+ {
+ String 1 // Description
+ {
+ Text = "Berechnet den Mittelwert einer Stichprobe. Text wird als Null gewertet." ;
+ Text [ english ] = "Returns the average of the arguments. Text is evaluated as zero." ;
+ Text[ italian ] = "Restituisce la media di un campione. Il testo viene considerato come avente valore 0.";
+ Text[ portuguese_brazilian ] = "Returns the average of the arguments. Text is evaluated as zero.";
+ Text[ portuguese ] = "Devolve a média aritmética dos argumentos. Ao texto é atribuído o valor zero.";
+ Text[ danish ] = "Beregner en stikprøves middelværdi. Tekst tolkes som nul.";
+ Text[ french ] = "Renvoie la moyenne d'un échantillon. La valeur 0 est attribuée au texte.";
+ Text[ swedish ] = "Beräknar ett stickprovs medelvärde. Text värderas till noll.";
+ Text[ dutch ] = "Berekent de gemiddelde waarde van een steekproef. Aan tekst wordt de waarde 0 toegewezen.";
+ Text[ spanish ] = "Calcula la media de una muestra. El texto se valorará como cero.";
+ Text[ english_us ] = "Returns the average value for a sample. Text is evaluated as zero.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùµÄƽ¾ùÖµ¡£ÎÄ×Öµ±×÷Áã¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñðåäíåå çíà÷åíèå âûáîðêè. Òåêñò ñ÷èòàåòñÿ êàê íóëü.";
+ Text[ polish ] = "Wyznacza œredni¹ próbki. Tekst jest oznaczony jako Zero.";
+ Text[ japanese ] = "•W–{ŒŸ¸‚Ì•½‹Ï’l‚ð•Ô‚µ‚Ü‚·B•¶Žš—ñ‚;ÞÛ‚ÆŒ©‚È‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó©â¼Ëªº¥­§¡­È¡C¤å¦r·í§@¹s¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáæÓØ ÇáÍÓÇÈí áÚíäÉ ÚÔæÇÆíÉ. ÊÞíã ÇáäÕ ßÕÝÑ.";
+ Text[ dutch ] = "Berekent de gemiddelde waarde van een steekproef. Aan tekst wordt de waarde 0 toegewezen.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùµÄƽ¾ùÖµ¡£ÎÄ×Öµ±×÷Áã¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ìÝóç ôéìÞ åíüò äåßãìáôïò. Êåßìåíï èá áðïôéìÜôáé ùò ìçäÝí.";
+ Text[ korean ] = "Ç¥º»ÀÇ Æò±Õ °ªÀ» ¹Ýȯ. ÅؽºÆ® °ªÀº 0ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Bir örneðin ortalamasýný verir. Metin sýfýr olarak deðerlendirilir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_MITTELWERTA );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text[ italian ] = "valore ";
+ Text[ portuguese_brazilian ] = "value ";
+ Text[ portuguese ] = "valor ";
+ Text[ danish ] = "Værdi ";
+ Text[ french ] = "Valeur ";
+ Text[ swedish ] = "värde ";
+ Text[ dutch ] = "waarde ";
+ Text[ spanish ] = "Valor ";
+ Text[ english_us ] = "value ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Wert 1; Wert 2;... sind 1 bis 30 Argumente, die eine, aus einer Grundgesamtheit gezogene, Stichprobe darstellen." ;
+ Text [ english ] = "Value 1, value 2;... are 1 to 30 arguments representing a population sample, for which to find the average." ;
+ Text[ italian ] = "val 1, val 2;... sono da 1 a 30 argomenti che rappresentano un campione di popolazione.";
+ Text[ portuguese_brazilian ] = "Value 1, value 2;... are 1 to 30 arguments representing a population sample, for which to find the average.";
+ Text[ portuguese ] = "valor1; valor2;... são argumentos entre 1 e 30 que representam uma amostra de população para a qual se deverá calcular a média aritmética.";
+ Text[ danish ] = "Værdi 1; værdi 2; ... er 1 til 30 numeriske argumenter, der svarer til en stikprøve fra en population.";
+ Text[ french ] = "Valeur 1, valeur 2, ... représentent de 1 à 30 arguments qui constituent un échantillon d'une population.";
+ Text[ swedish ] = "värde 1; värde 2;... är 1 till 30 argument som utgör ett stickprov ur en population.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten waarvan u het gemiddelde wilt bepalen.";
+ Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos que se corresponden con una muestra de población.";
+ Text[ english_us ] = "Value 1; value 2;.. .are 1 to 30 arguments representing a sample taken from a basic total population.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30¸öÒª¼ÆËãÆä³éÑùƽ¾ùÖµµÄÔªËØ¡£";
+ Text[ language_user1 ] = " ";
+ Text[ russian ] = "Çíà÷åíèå 1 ,çíà÷åíèå 2,... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ñîîòâåòñòâóþùèõ âûáîðêå èç ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Od 1 do 30 argumentów, które reprezentuj¹ próbkê.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í•êW’c‚Ì•W–{‚ɑΉž‚·‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ­È1¡Q¼Æ­È2¡Q...¬O 1 ¦Ü 30­Ó­n­pºâ¨ä©â¼Ë¥­§¡­Èªº¤¸¯À¡C";
+ Text[ arabic ] = "Value 1, value 2;.. ãä 1 Åáì 30 æÓíØÉ ÊãËá ÚíäÉ ãÃÎæÐÉ ãä ÇáãÌÊãÚ.";
+ Text[ dutch ] = "waarde 1; waarde 2;... zijn 1 tot 30 argumenten waarvan u het gemiddelde wilt bepalen.";
+ Text[ chinese_simplified ] = "ÊýÖµ1£»ÊýÖµ2£»...ÊÇ 1 ÖÁ 30¸öÒª¼ÆËãÆä³éÑùƽ¾ùÖµµÄÔªËØ¡£";
+ Text[ greek ] = "ÔéìÞ 1, ÔéìÞ 2, ... åßíáé áðü 1 Ýùò êáé 30 ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá ôïõ âáóéêïý óõíïëéêïý ðëçèõóìïý.";
+ Text[ korean ] = "°ª1; °ª2;... Àº ¸ðÁý´Ü¿¡¼­ ÃßÃâÇÑ Ç¥º»À» º¸¿©ÁÖ´Â 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1; Deðer 2;... Bir popülasyondan alýnan bir örneði temsil eden 1 - 30 arasý deðiþkendir.";
+ };
+ };
+ // -=*# Resource for function SUMQUADABW #*=-
+ Resource SC_OPCODE_DEV_SQ
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Summe der quadratischen Abweichung einer Stichprobe vom Mittelwert." ;
+ Text [ english ] = "Returns the sum of squares of deviations of data points from their sample mean" ;
+ Text [ norwegian ] = "Berechnet die Summe der quadratischen Abweichung einer Stichprobe vom Mittelwert." ;
+ Text [ italian ] = "Calcola la somma dei quadrati delle deviazioni della media relativa ad un esempio." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Summe quadratischen Abweichung einer Stichprobe vom Mittelwert." ;
+ Text [ portuguese ] = "Devolve a soma dos quadrados dos desvios em relação a um dado exemplo." ;
+ Text [ finnish ] = "Berechnet die Summe der quadratischen Abweichung einer Stichprobe vom Mittelwert." ;
+ Text [ danish ] = "Beregner summen af datapunkternes kvadrerede afvigelser fra middelværdien." ;
+ Text [ french ] = "Renvoie la somme des écarts carrés d'un échantillon de la moyenne." ;
+ Text [ swedish ] = "Beräknar summan av den kvadratiska avvikelsen från medelvärdet hos ett stickprov." ;
+ Text [ dutch ] = "Berekent de som van de deviaties in het kwadraat in een steekproef." ;
+ Text [ spanish ] = "Devuelve la suma de los cuadrados de las desviaciones entre la media y la muestra." ;
+ Text [ english_us ] = "Returns the sum of squares of deviations of a sample from the mean value." ;
+ Text[ chinese_simplified ] = "¼ÆËã³éÑùÓëƽ¾ùÖµµÄÆ«²îµÄƽ·½ºÍ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñóììó êâàäðàòîâ îòêëîíåíèÿ âûáîðêè îò ñðåäíåãî çíà÷åíèÿ.";
+ Text[ polish ] = "Oblicza sumê kwadratów odchyleñ próbki od wartoœci œredniej.";
+ Text[ japanese ] = "•W–{‚Ì•½‹Ï’l‚ɑ΂·‚éŠeÃÞ°À‚̕η‚Ì•½•û˜a‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ©â¼Ë»P¥­§¡­Èªº°¾®tªº¥­¤è©M¡C";
+ Text[ arabic ] = "ÊÍÓÈ ãÌãæÚ ãÑÈÚÇÊ ÇäÍÑÇÝÇÊ ÚíäÉ ãÇ ãä ÇáãõÚÏá.";
+ Text[ dutch ] = "Berekent de som van de deviaties in het kwadraat in een steekproef.";
+ Text[ chinese_simplified ] = "¼ÆËã³éÑùÓëƽ¾ùÖµµÄÆ«²îµÄƽ·½ºÍ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï óýíïëï ôùí ôåôñáãþíùí ôùí áðïêëßóåùí åíüò äåßãìáôïò áðü ôç ìÝóç ôéìÞ.";
+ Text[ korean ] = "Æò±ÕÀ¸·ÎºÎÅÍ Ç¥º»ÀÇ ÆíÂ÷ÀÇ Á¦°öÀÇ ÇÕÀ» ¹Ýȯ";
+ Text[ turkish ] = "Örneðin, ortalamadan sapma deðeri karesinin toplamýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_SUMQUADABW );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 arguments for which you want to calculate the sum of squared deviations." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti di cui si desidera calcolare la somma dei quadrati delle deviazioni." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ portuguese ] = "Núm1;núm2;... são argumentos de 1 a 30 dos quais deseja obter a soma dos quadrados dos desvios." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, som udgør en stikprøve." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques représentant un échantillon." ;
+ Text [ swedish ] = "Tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die een steekproef weergeven." ;
+ Text [ spanish ] = "Número 1; número 2;...son de 1 a 30 argumentos numéricos cuya suma de las desviaciones cuadradas se desea calcular." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
+ Text[ chinese_simplified ] = "Êý×Ö1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸ö±íʾ³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2;... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, äëÿ êîòîðûõ âû÷èñëÿåòñÿ ñóììà êâàäðàòîâ îòêëîíåíèé.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów reprezentuj¹cych próbkê.";
+ Text[ japanese ] = "”’l1A”’l2A...‚͕η‚Ì•½•û˜a‚ð‹‚ß‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ¦r1; ¼Æ¦r 2;... ¬O 1 ¦Ü 30 ­Óªí¥Ü©â¼Ëªº¼Æ¦r¤¸¯À¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 æÓíØÉ ÚÏÏíÉ ÊãËá ÚíäÉ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die een steekproef weergeven.";
+ Text[ chinese_simplified ] = "Êý×Ö1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸ö±íʾ³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá.";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... Àº Ç¥º»À» º¸¿©ÁÖ±â À§ÇÑ 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Bir örneði temsil eden 1- 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MITTELABW #*=-
+ Resource SC_OPCODE_AVE_DEV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die durchschnittliche absolute Abweichung einer Stichprobe vom Mittelwert." ;
+ Text [ english ] = "Returns the average of the absolute deviations of data points from their mean." ;
+ Text [ norwegian ] = "Berechnet die durchschnittliche absolute Abweichung einer Stichprobe vom Mittelwert." ;
+ Text [ italian ] = "Restituisce la deviazione media assoluta di un campione dalla media." ;
+ Text [ portuguese_brazilian ] = "Berechnet die durchschnittliche absolute Abweichung einer Stichprobe vom Mittelwert." ;
+ Text [ portuguese ] = "Devolve a média aritmética dos desvios absolutos a partir da média dos pontos de dados." ;
+ Text [ finnish ] = "Berechnet die durchschnittliche absolute Abweichung einer Stichprobe vom Mittelwert." ;
+ Text [ danish ] = "Beregner den gennemsnitlige absolute afvigelse fra en stikprøvens af middelværdien." ;
+ Text [ french ] = "Calcule l'écart moyen absolu d'un échantillon de la moyenne." ;
+ Text [ swedish ] = "Beräknar den genomsnittliga absoluta avvikelsen hos ett stickprov från medelvärdet." ;
+ Text [ dutch ] = "Berekent de gemiddelde absolute deviatie van een steekproef ten opzichte van de gemiddelde waarde." ;
+ Text [ spanish ] = "Devuelve el promedio de las desviaciones absolutas de la media de los puntos de datos." ;
+ Text [ english_us ] = "Returns the average of the absolute deviations of a sample from the mean." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùÓëƽ¾ùÖµµÄ¾ø¶Ôƽ¾ùÆ«²î¡£";
+ Text[ russian ] = "Âîçâðàùàåò ñðåäíåå àáñîëþòíûõ çíà÷åíèé îòêëîíåíèé òî÷åê äàííûõ îò ñðåäíåãî.";
+ Text[ polish ] = "Oblicza odchylenie œrednie (œrednia z odchyleñ bezwzglêdnych) punktów danych od ich wartoœci œredniej.";
+ Text[ japanese ] = "ÃÞ°À‘S‘Ì‚Ì•½‹Ï’l‚ɑ΂·‚é‚»‚ꂼ‚ê‚ÌÃÞ°À‚Ìâ‘Εη‚Ì•½‹Ï‚ðŒvŽZ‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó©â¼Ë»P¥­§¡­Èªºµ´¹ï¥­§¡°¾®t¡C";
+ Text[ arabic ] = "ÊÍÓÈ ãÚÏá ÇáÇäÍÑÇÝ ÇáãØáÞ áÚíäÉ ÚÔæÇÆíÉ Úä ÇáãõÚÏá.";
+ Text[ dutch ] = "Berekent de gemiddelde absolute deviatie van een steekproef ten opzichte van de gemiddelde waarde.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùÓëƽ¾ùÖµµÄ¾ø¶Ôƽ¾ùÆ«²î¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôç ìåóáßá áðüëõôç áðüêëéóç åíüò äåßãìáôïò áðü ôçí ìÝóç ôéìÞ.";
+ Text[ korean ] = "Æò±ÕÀ¸·ÎºÎÅÍ Ç¥º»ÀÇ Àý´ëÆíÂ÷ÀÇ Æò±ÕÀ» ¹Ýȯ";
+ Text[ turkish ] = "Örneðin, ortalama deðerden mutlak sapmasýnýn ortalamasýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_MITTELABW );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 arguments for which you want the average of the absolute deviations." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti di cui si desidera calcolare la media delle deviazioni assolute." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ portuguese ] = "Núm1; núm2; ... são de 1 a 30 argumentos para os quais deseja calcular a média aritmética dos desvios absolutos." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, som udgør en stikprøve." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques représentant un échantillon." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die een steekproef weegeven." ;
+ Text [ spanish ] = "Número 1; Número2;...son de 1 a 30 argumentos numéricos que componen una muestra." ;
+ Text [ english_us ] = "Number 1, number 2;...are 1 to 30 numerical arguments representing a sample." ;
+ Text[ chinese_simplified ] = "Êý×Ö1; Êý×Ö2;... ÊÇ 1 ÖÁ 30 ¸öÊý×Ö×Ô±äÁ¿, ËüÃDZíʾһ¸ö³éÑù¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2;... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, äëÿ êîòîðûõ îïðåäåëÿåòñÿ ñðåäíåå àáñîëþòíûõ îòêëîíåíèé.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów, reprezentuj¹cych próbkê.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í•½‹Ï‚ð‹‚ß‚é1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ¦r1; ¼Æ¦r2;... ¬O 1 ¦Ü 30 ­Ó¼Æ¦r¦ÛÅܶq, ¥¦­Ìªí¥Ü¤@­Ó©â¼Ë¡C";
+ Text[ arabic ] = "Number 1, Number 2;... ãä 1 Åáì 30 æÓíØÉ ÚÏÏíÉ ÊãËá ÚíäÉ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die een steekproef weegeven.";
+ Text[ chinese_simplified ] = "Êý×Ö1; Êý×Ö2;... ÊÇ 1 ÖÁ 30 ¸öÊý×Ö×Ô±äÁ¿, ËüÃDZíʾһ¸ö³éÑù¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá.";
+ Text[ korean ] = "¼ö 1, ¼ö 2;... ´Â Ç¥º»À» ³ªÅ¸³»´Â 1¿¡¼­ 30±îÁöÀÇ ¼ýÀÚ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Bir örneði temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SCHIEFE #*=-
+ Resource SC_OPCODE_SCHIEFE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Schiefe einer Verteilung." ;
+ Text [ english ] = "Returns the skewness of a distribution." ;
+ Text [ norwegian ] = "Berechnet die Schiefe einer Verteilung." ;
+ Text [ italian ] = "Restituisce il grado di asimmetria di una distribuzione." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Schiefe einer Verteilung." ;
+ Text [ portuguese ] = "Devolve a assimetria de uma distribuição." ;
+ Text [ finnish ] = "Berechnet die Schiefe einer Verteilung." ;
+ Text [ danish ] = "Beregner skævheden af en distribution." ;
+ Text [ french ] = "Renvoie l'asymétrie d'une distribution." ;
+ Text [ swedish ] = "Beräknar snedheten för en fördelning." ;
+ Text [ dutch ] = "Berekent de mate van asymmetrie van een verdeling." ;
+ Text [ spanish ] = "Devuelve la asimetría de una distribución." ;
+ Text [ english_us ] = "Returns the skewness of a distribution." ;
+ Text[ chinese_simplified ] = "¼ÆËã·Ö²¼µÄƫб¶È¡£";
+ Text[ russian ] = "Âû÷èñëÿåò àññèìåòðèþ ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Wyznacza skoœnoœæ rozk³adu prawdopodobieñstwa.";
+ Text[ japanese ] = "•ª•z‚̘c“x‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤À§Gªº°¾±×«×¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÊÎÇáÝ ÇáÊæÒíÚ.";
+ Text[ dutch ] = "Berekent de mate van asymmetrie van een verdeling.";
+ Text[ chinese_simplified ] = "¼ÆËã·Ö²¼µÄƫб¶È¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí áóõììåôñßá ìéáò êáôáíïìÞò.";
+ Text[ korean ] = "¹èºÐÀÇ ºñ´ëĪÀ» ¹Ýȯ";
+ Text[ turkish ] = "Daðýtýmýn eðriliðini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_SCHIEFE );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe der Verteilung darstellen." ;
+ Text [ english ] = "are 1 to 30 arguments for which you want to calculate skewness." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe der Verteilung darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti dei quali si desidera calcolare l'asimmetria." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe der Verteilung darstellen." ;
+ Text [ portuguese ] = "são argumentos numéricos de 1 a 30 para os quais deseja calcular a distribuição." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe der Verteilung darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 argumenter, som udgør en stikprøve fra distributionen." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques représentant un échantillon de la distribution." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov för fördelningen." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die een steekproef van de verdeling weergeven." ;
+ Text [ spanish ] = "Número 1; número 2;...son de 1 a 30 argumentos cuya asimetría desea calcular." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments portraying a sample of the distribution." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1£»Êý×Ö 2£»ÊDZíʾ³éÑù·Ö²¼µÄ 1 µ½ 30 ¸öÊý×ÖÔªËØ¡£";
+ Text[ russian ] = "×èñëî1, ÷èñëî2, ... îò 1 äî 30 àðãóìåíòîâ, äëÿ êîòîðûõ âû÷èñëÿåòñÿ àñèììåòðè÷íîñòü.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów reprezentuj¹cych próbkê rozk³adu.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Í•ª•z‚Ì•W–{‚ð•\\‚·‚½‚ß‚Ì1‚©‚ç30ŒÂ‚Ü‚Å‚Ì”’lÃÞ°ÀB";
+ Text[ chinese_traditional ] = "¼Æ¦r 1¡Q¼Æ¦r 2¡Q¬Oªí¥Ü©â¼Ë¤À§Gªº 1 ¨ì 30 ­Ó¼Æ¦r¤¸¯À¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 æÓíØÉ ÊãËá ÚíäÉ ááÊæÒíÚ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die een steekproef van de verdeling weergeven.";
+ Text[ chinese_simplified ] = "Êý×Ö 1£»Êý×Ö 2£»ÊDZíʾ³éÑù·Ö²¼µÄ 1 µ½ 30 ¸öÊý×ÖÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá ôçò êáôáíïìÞò.";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... Àº ºÐÆ÷ÀÇ Ç¥º»À» ³ªÅ¸³»±â À§ÇÑ 1¿¡¼­ 30±îÁöÀÇ ¼ýÀÚ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Daðýtýmýn bir örneðini temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KURT #*=-
+ Resource SC_OPCODE_KURT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Kurtosis einer Verteilung." ;
+ Text [ english ] = "Returns the kurtosis of a data set." ;
+ Text [ norwegian ] = "Berechnet die Kurtosis einer Verteilung." ;
+ Text [ italian ] = "Restituisce la curtosi di una distribuzione." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Kurtosis einer Verteilung." ;
+ Text [ portuguese ] = "Devolve a kurtosis de um conjunto de dados." ;
+ Text [ finnish ] = "Berechnet die Kurtosis einer Verteilung." ;
+ Text [ danish ] = "Beregner kurtosisværdien for en distribution." ;
+ Text [ french ] = "Renvoie le kurtosis d'une distribution." ;
+ Text [ swedish ] = "Beräknar en fördelnings toppighet." ;
+ Text [ dutch ] = "Berekent de kurtosis van een verdeling." ;
+ Text [ spanish ] = "Devuelve la curtosis de un conjunto de datos." ;
+ Text [ english_us ] = "Returns the kurtosis of a distribution." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö·Ö²¼µÄ¼âÈñ¶È¡£";
+ Text[ russian ] = "Âîçâðàùàåò ýêñöåññ ìíîæåñòâà äàííûõ.";
+ Text[ polish ] = "Oblicza kurtozê rozk³adu.";
+ Text[ japanese ] = "ˆø”‚Æ‚µ‚ÄŽw’肵‚½ÃÞ°À•ª•z‚Ìë“x‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¤À§Gªº¦y¾U«×¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÊÝÑØÍ áãÌãæÚÉ ÈíÇäÇÊ.";
+ Text[ dutch ] = "Berekent de kurtosis van een verdeling.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö·Ö²¼µÄ¼âÈñ¶È¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí êýñôùóç ìéáò êáôáíïìÞò.";
+ Text[ korean ] = "¹èºÐÀÇ Äí¸£Åä½Ã½º¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Daðýtýmýn eðriliðini (Kurtosis) hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_KURT );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe der Verteilung darstellen." ;
+ Text [ english ] = "are 1 to 30 arguments for which you want to calculate kurtosis." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe der Verteilung darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti per i quali si desidera calcolare la curtosi." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe der Verteilung darstellen." ;
+ Text [ portuguese ] = "são argumentos numéricos de 1 a 30, representando uma amostra da população e para a qual deseja calcular a kurtosis." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe der Verteilung darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 argumenter, som udgør en stikprøve fra distributionen." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques représentant un échantillon de la distribution." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov för fördelningen." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die een steekproef uit de verdeling weergeven." ;
+ Text [ spanish ] = "Número 1; número 2;...son de 1 a 30 argumentos cuya curtosis desea calcular." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments, representing a sample of the distribution." ;
+ Text[ chinese_simplified ] = "Êý×Ö1; Êý×Ö2;... ÊÇ 1 ÖÁ 30¸öÊý×ÖÔªËØ, ËüÃDZíʾ\nÒ»¸ö³éÑùµÄ·Ö²¼¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2;... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ïðåäñòàâëÿþùèå âûáîðêó ðàñïðåäëåíèÿ, äëÿ êîòîðûõ âû÷èñëÿåòñÿ ýêñöåññ.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów reprezentuj¹cych próbkê rozk³adu.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚Íë“x‚ðŒvŽZ‚·‚邽‚ß‚Ì1‚©‚ç 30ŒÂ‚Ü‚Å‚Ì”’lB";
+ Text[ chinese_traditional ] = "¼Æ¦r1; ¼Æ¦r2;... ¬O 1 ¦Ü 30­Ó¼Æ¦r¤¸¯À, ¥¦­Ìªí¥Ü¤@­Ó©â¼Ëªº¤À§G¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 æÓíØÉ ÚÏÏíÉ ÊãËá ÚíäÉ ÇáÊæÒíÚ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die een steekproef uit de verdeling weergeven.";
+ Text[ chinese_simplified ] = "Êý×Ö1; Êý×Ö2;... ÊÇ 1 ÖÁ 30¸öÊý×ÖÔªËØ, ËüÃDZíʾ\nÒ»¸ö³éÑùµÄ·Ö²¼¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áíôéðñïóùðåýïõí Ýíá äåßãìá ôçò êáôáíïìÞò.";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... Àº ºÐÆ÷ÀÇ Ç¥º»À» ³ªÅ¸³»±â À§ÇÑ 1¿¡¼­ 30±îÁöÀÇ ¼ýÀÚ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Daðýtýmýn bir örneðini oluþturan 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GEOMITTEL #*=-
+ Resource SC_OPCODE_GEO_MEAN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den geometrischen Mittelwert einer Stichprobe." ;
+ Text [ english ] = "Returns the geometric mean of an array or range of positive data." ;
+ Text [ norwegian ] = "Berechnet den geometrischen Mittelwert einer Stichprobe." ;
+ Text [ italian ] = "Restituisce la media geometrica di un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet den geometrischen Mittelwert einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve a média geométrica de uma matriz ou de um intervalo de dados." ;
+ Text [ finnish ] = "Berechnet den geometrischen Mittelwert einer Stichprobe." ;
+ Text [ danish ] = "Beregner det geometriske gennemsnit af en stikprøve." ;
+ Text [ french ] = "Calcule la moyenne géométrique d'un échantillon." ;
+ Text [ swedish ] = "Beräknar det geometriska medelvärdet av ett stickprov." ;
+ Text [ dutch ] = "Berekent het meetkundige gemiddelde van een steekproef." ;
+ Text [ spanish ] = "Devuelve la media geométrica de una matriz o área de datos positivos." ;
+ Text [ english_us ] = "Returns the geometric mean of a sample." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùµÄ¼¸ºÎƽ¾ùÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ñðåäíåå ãåîìåòðè÷åñêîå âûáîðêè.";
+ Text[ polish ] = "Oblicza œredni¹ geometryczn¹ przyk³adu.";
+ Text[ japanese ] = "•W–{‚ÌŠô‰½•½‹Ï‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó©â¼Ëªº´X¦ó¥­§¡­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáãÚÏá ÇáåäÏÓí áÚíäÉ.";
+ Text[ dutch ] = "Berekent het meetkundige gemiddelde van een steekproef.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùµÄ¼¸ºÎƽ¾ùÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ãåùìåôñéêÞ ìÝóç ôéìÞ åíüò äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»ÀÇ ±âÇÏÆò±ÕÀ» ¹Ýȯ";
+ Text[ turkish ] = "Örneðin geometrik ortalamasýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_GEOMITTEL );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 arguments for which you want to calculate the mean." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti di cui si desidera calcolare la media." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ portuguese ] = "são argumentos de 1 a 30 cujas médias deseja calcular." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, som udgør en stikprøve." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques représentant un échantillon." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn 1 tot 30 numerieke argumenten die een steekproef weergeven." ;
+ Text [ spanish ] = "Número 1; número 2;... son de 1 a 30 argumentos cuya media desea calcular." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÊý×Ö²ÎÊý¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2;... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, äëÿ êîòîðûõ âû÷èñëÿåòñÿ ñðåäíåå.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów, dla których ma zostaæ wyznaczona œrednia wartoœæ geometryczna.";
+ Text[ japanese ] = "”’l1A”’l2...‚Í•W–{‚ð•\\‚·1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ¦r 1; ¼Æ¦r 2;... ¬O 1 ¦Ü 30ªí¥Ü¤@­Ó©â¼Ëªº¼Æ¦r°Ñ¼Æ¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 æÓíØÉ íÑÇÏ ÍÓÇÈ ÇáæÓØ áåÇ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn 1 tot 30 numerieke argumenten die een steekproef weergeven.";
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÊý×Ö²ÎÊý¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá ôçò êáôáíïìÞò.";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... Àº Ç¥º»À» ³ªÅ¸³»±â À§ÇÑ 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Bir örneði temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function HARMITTEL #*=-
+ Resource SC_OPCODE_HAR_MEAN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den harmonischen Mittelwert einer Stichprobe." ;
+ Text [ english ] = "Returns the harmonic mean of a data set." ;
+ Text [ norwegian ] = "Berechnet den harmonischen Mittelwert einer Stichprobe." ;
+ Text [ italian ] = "Restituisce la media armonica di un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet den harmonischen Mittelwert einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve a média harmónica de um conjunto de dados." ;
+ Text [ finnish ] = "Berechnet den harmonischen Mittelwert einer Stichprobe." ;
+ Text [ danish ] = "Beregner det harmoniske gennemsnit af en stikprøve." ;
+ Text [ french ] = "Renvoie la moyenne harmonique d'un échantillon." ;
+ Text [ swedish ] = "Beräknar det harmoniska medelvärdet av ett stickprov." ;
+ Text [ dutch ] = "Berekent het harmonische gemiddelde van een steekproef." ;
+ Text [ spanish ] = "Devuelve la media armónica de un conjunto de datos." ;
+ Text [ english_us ] = "Returns the harmonic mean of a sample." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùµÄµ÷ºÍƽ¾ùÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ãàðìîíè÷åñêîå ñðåäíåå íàáîðà äàííûõ.";
+ Text[ polish ] = "Oblicz¹ œredni¹ harmoniczn¹ zbioru danych.";
+ Text[ japanese ] = "1‘g‚Ì”’l‚Ì’²˜a•½‹Ï‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó©â¼Ëªº½Õ©M¥­§¡­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáãÚÏá ÇáÊæÇÝÞí áÚíäÉ.";
+ Text[ dutch ] = "Berekent het harmonische gemiddelde van een steekproef.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùµÄµ÷ºÍƽ¾ùÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí áñìïíéêÞ ìÝóç ôéìÞ åíüò äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»ÀÇ Á¶È­ Æò±ÕÀ» ¹Ýȯ";
+ Text[ turkish ] = "Örneðin armonik ortalamasýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_HARMITTEL );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Número " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "Zahl ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 arguments for which you want to calculate the mean." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti di cui si desidera calcolare la media." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ portuguese ] = "são argumentos de 1 a 30 cujas médias deseja calcular." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, som udgør en stikprøve." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques représentant un échantillon." ;
+ Text [ swedish ] = "Tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die een steekproef weergeven." ;
+ Text [ spanish ] = "Número 1; número 2;...son de 1 a 30 argumentos numéricos cuya media desea calcular." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 µÄ±íʾһ¸ö³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2;... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, äëÿ êîòîðûõ âû÷èñëÿåòñÿ ãàðìîíè÷åñêîå ñðäíåå.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów, dla których ma zostaæ wyznaczona œrednia wartoœæ geometryczna.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚ÍŒvŽZ‚Ì‘ÎÛ‚Æ‚È‚é1‚©‚ç30ŒÂ‚Ü‚Å‚Ì”’lB";
+ Text[ chinese_traditional ] = "¼Æ¦r 1; ¼Æ¦r 2;... ¬O 1 ¦Ü 30 ªºªí¥Ü¤@­Ó©â¼Ëªº¼Æ¦r¤¸¯À¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 æÓíØÉ íÑÇÏ ÍÓÇÈ ÇáæÓØ áåÇ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die een steekproef weergeven.";
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 µÄ±íʾһ¸ö³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá ôçò êáôáíïìÞò.";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... Àº Ç¥º»À» º¸¿©ÁÖ±â À§ÇÑ 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Bir örneði temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MODALWERT #*=-
+ Resource SC_OPCODE_MODAL_VALUE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den häufigsten Wert in einer Stichprobe. : Berechnet den hõufigsten Wert in einer Stichprobe. */
+ Text = "Berechnet den häufigsten Wert in einer Stichprobe." ;
+ Text [ english ] = "Returns the most frequently occurring value in an array or range of data." ;
+ Text [ norwegian ] = "Berechnet den häufigsten Wert in einer Stichprobe." ;
+ Text [ italian ] = "Restituisce il valore più ricorrente in un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet den häufigsten Wert in einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve o valor mais frequente numa série de dados." ;
+ Text [ finnish ] = "Berechnet den häufigsten Wert in einer Stichprobe." ;
+ Text [ danish ] = "Returnerer den hyppigste værdi i en stikprøve." ;
+ Text [ french ] = "Renvoie la valeur la plus fréquente dans un échantillon." ;
+ Text [ swedish ] = "Beräknar det vanligaste värdet i ett stickprov." ;
+ Text [ dutch ] = "Berekent de meest voorkomende waarde in een steekproef." ;
+ Text [ spanish ] = "Devuelve el valor que se repite con más frecuencia en una matriz o área de datos." ;
+ Text [ english_us ] = "Returns the most common value in a sample." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùÖÐƵÂÊ×î¸ßµÄÊýÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò çíà÷åíèå ìîäû äëÿ ìíîæåñòâà äàííûõ.";
+ Text[ polish ] = "Podaje najczêœciej wystêpuj¹c¹ wartoœæ w zbiorze danych.";
+ Text[ japanese ] = "Žw’肳‚ꂽÃÞ°À‚Ì’†‚ÅÅ‚à•p”É‚ÉoŒ»‚·‚é’l(Å•p’l)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó©â¼Ë¤¤ÀW²v³Ì°ªªº¼Æ­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÞíãÉ ÇáÃßËÑ ÇÓÊÎÏÇãÇð Ýí ÚíäÉ ãÇ.";
+ Text[ dutch ] = "Berekent de meest voorkomende waarde in een steekproef.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùÖÐƵÂÊ×î¸ßµÄÊýÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí óõ÷íüôåñç ôéìÞ åíüò äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»ÀÇ °¡Àå ÀϹÝÀûÀÎ °ª ¹Ýȯ";
+ Text[ turkish ] = "Örnek içinde en sýk bulunan deðeri hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_MODALWERT );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Núm1; núm2;... " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 arguments for which you want to calculate the mode." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 argomenti di cui si desidera calcolare la moda." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ portuguese ] = "são números de 1 a 30 para os quais deseja calcular o modo." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, som udgør en stikprøve." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques représentant un échantillon." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die een steekproef weergeven." ;
+ Text [ spanish ] = "Número 1; número 2;...son entre 1 y 30 argumentos cuya moda desea calcular." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2;... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ïðåäñòàâëÿþùèå âûáîðêó, è äëÿ êîòîðûõ âû÷èñëÿåòñÿ ìîäà.";
+ Text[ polish ] = "Od 1 do 30 argumentów, wœród których ma zostaæ znaleziona wartoœæ wystêpuj¹ca najczêœciej.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚ÍŒvŽZ‚·‚邽‚ß‚Ì1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ¦r 1; ¼Æ¦r 2;... ¬O 1 ¦Ü 30 ­Óªí¥Ü¤@­Ó©â¼Ëªº¼Æ¦r¤¸¯À¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 æÓíØÉ ÊÑíÏ ÍÓÇÈ ÇáãäæÇá áåÇ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die een steekproef weergeven.";
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÊý×ÖÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá ôçò êáôáíïìÞò.";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... Àº Ç¥º»À» º¸¿©ÁÖ±â À§ÇÑ 1¿¡¼­ 30±îÁöÀÇ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... Bir örneði temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function MEDIAN #*=-
+ Resource SC_OPCODE_MEDIAN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den Median einer Stichprobe." ;
+ Text [ english ] = "Returns the median of the given numbers." ;
+ Text [ norwegian ] = "Berechnet den Median einer Stichprobe." ;
+ Text [ italian ] = "Restituisce la mediana di un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Median einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve a mediana de um exemplo dado." ;
+ Text [ finnish ] = "Berechnet den Median einer Stichprobe." ;
+ Text [ danish ] = "Beregner medianen for en stikprøve." ;
+ Text [ french ] = "Renvoie la médiane d'un échantillon." ;
+ Text [ swedish ] = "Beräknar medianen för ett stickprov." ;
+ Text [ dutch ] = "Berekent de mediaan van een steekproef." ;
+ Text [ spanish ] = "Devuelve la mediana de los números." ;
+ Text [ english_us ] = "Returns the median of a given sample." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùµÄÖÐλÊý¡£";
+ Text[ russian ] = "Âîçâðàùàåò ìåäèàíó óêàçàííîé âûáîðêè.";
+ Text[ polish ] = "Oblicza medianê podanej próbki.";
+ Text[ japanese ] = "Žw’肵‚½•W–{‚ÌÒ¼Þ±Ý(’†‰›’l)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó©â¼Ëªº¤¤¦ì¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáæÓíØ áÚíäÉ ãÚØÇÉ.";
+ Text[ dutch ] = "Berekent de mediaan van een steekproef.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùµÄÖÐλÊý¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï äéÜìåóï åíüò äåßãìáôïò.";
+ Text[ korean ] = "ÁÖ¾îÁø Ç¥º»À¸·Î ºÎÅÍ Áß¾Ó°ª ¹Ýȯ";
+ Text[ turkish ] = "Örneðin ortalamasýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_MEDIAN );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl " ;
+ Text [ english ] = "number " ;
+ Text [ norwegian ] = "Zahl " ;
+ Text [ italian ] = "Numero " ;
+ Text [ portuguese_brazilian ] = "Zahl " ;
+ Text [ portuguese ] = "Núm1; núm2;... " ;
+ Text [ finnish ] = "Zahl " ;
+ Text [ danish ] = "Tal " ;
+ Text [ french ] = "Nombre " ;
+ Text [ swedish ] = "tal " ;
+ Text [ dutch ] = "Getal " ;
+ Text [ spanish ] = "número " ;
+ Text [ english_us ] = "number " ;
+ Text[ chinese_simplified ] = "number ";
+ Text[ russian ] = "×èñëî ";
+ Text[ polish ] = "Liczba ";
+ Text[ japanese ] = "”’l ";
+ Text[ chinese_traditional ] = "number ";
+ Text[ arabic ] = "ÇáÑÞã ";
+ Text[ dutch ] = "Getal ";
+ Text[ chinese_simplified ] = "number ";
+ Text[ greek ] = "Áñéèìüò ";
+ Text[ korean ] = "¼ö ";
+ Text[ turkish ] = "Sayý ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ english ] = "are 1 to 30 numbers for which you want the median." ;
+ Text [ norwegian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ italian ] = "sono da 1 a 30 numeri che rappresentano un campione." ;
+ Text [ portuguese_brazilian ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ portuguese ] = "são números de 1 a 30 dos quais deseja calcular a mediana." ;
+ Text [ finnish ] = "Zahl 1; Zahl 2;... sind 1 bis 30 numerische Argumente, die eine Stichprobe darstellen." ;
+ Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, som udgør en stikprøve." ;
+ Text [ french ] = "Nombre 1, nombre 2, ... sont de 1 à 30 arguments numériques représentant un échantillon." ;
+ Text [ swedish ] = "tal 1; tal 2;... är 1 till 30 numeriska argument som utgör ett stickprov." ;
+ Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die een steekproef weergeven." ;
+ Text [ spanish ] = "Número 1; número 2;...son entre 1 y 30 números cuya mediana desea obtener." ;
+ Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÔªËØ¡£";
+ Text[ russian ] = "×èñëî 1; ÷èñëî 2;... îò 1 äî 30 ÷èñëîâûõ àðãóìåíòîâ, ïðåäñòàâëÿþùèå âûáîðêó, è äëÿ êîòîðûõ îïðåäåëÿåòñÿ ìåäèàíà.";
+ Text[ polish ] = "Od 1 do 30 numerycznych argumentów, które okreœlaj¹ medianê.";
+ Text[ japanese ] = "”’l1¤”’l2¤...‚ÍҼޱ݂ðŒvŽZ‚·‚邽‚ß‚Ì1‚©‚ç30ŒÂ‚܂ł̈ø”B";
+ Text[ chinese_traditional ] = "¼Æ¦r 1; ¼Æ¦r 2;... ¬O 1 ¦Ü 30 ­Óªí¥Ü¤@­Ó©â¼Ëªº¤¸¯À¡C";
+ Text[ arabic ] = "number1;number2... ãä 1 Åáì 30 ÑÞãÇð ÊÑíÏ ÊÍÏíÏ æÓíØåÇ.";
+ Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 argumenten die een steekproef weergeven.";
+ Text[ chinese_simplified ] = "Êý×Ö 1; Êý×Ö 2;... ÊÇ 1 ÖÁ 30 ¸ö±íʾһ¸ö³éÑùµÄÔªËØ¡£";
+ Text[ greek ] = "Áñéèìüò 1, Áñéèìüò2, ... åßíáé 1 Ýùò 30 áñéèìçôéêÜ ïñßóìáôá ôá ïðïßá áðïôåëïýí Ýíá äåßãìá.";
+ Text[ korean ] = "¼ö 1, ¼ö 2,... Àº Ç¥º»À» º¸¿©ÁÖ±â À§ÇÑ 1¿¡¼­ 30±îÁöÀÇ ¼ýÀÚ µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sayý 1; sayý 2;... bir örneði temsil eden 1 - 30 arasý nümerik deðiþkendir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function QUANTIL #*=-
+ Resource SC_OPCODE_PERCENTILE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet ein Alpha-Quantil einer Stichprobe." ;
+ Text [ english ] = "Returns the k-th percentile of values in a range." ;
+ Text [ norwegian ] = "Berechnet ein Alpha-Quantil einer Stichprobe." ;
+ Text [ italian ] = "Restituisce il k-esimo percentile di un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet ein Alpha-Quantil einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve o k-ésimo percentil de valores num intervalo." ;
+ Text [ finnish ] = "Berechnet ein Alpha-Quantil einer Stichprobe." ;
+ Text [ danish ] = "Beregner den k'te fraktil for en stikprøve." ;
+ Text [ french ] = "Calcule le quantile Alpha d'un échantillon." ;
+ Text [ swedish ] = "Beräknar en alfa-kvantil för ett stickprov." ;
+ Text [ dutch ] = "Bepaalt het alfa-kwantiel van waarden in een bereik." ;
+ Text [ spanish ] = "Devuelve el k-ésimo percentil de los valores de un área." ;
+ Text [ english_us ] = "Returns the alpha quantile of a sample." ;
+ Text[ chinese_simplified ] = "¼ÆËãÊýÖµÇøÓòµÄ K °Ù·Ö±ÈÊýÖµµã¡£";
+ Text[ russian ] = "Âîçâðàùàåò k-óþ ïåðñåíòèëü äëÿ çíà÷åíèé äèàïàçîíà.";
+ Text[ polish ] = "Wyznacza k-ty percentyl ci¹gu danych.";
+ Text[ japanese ] = "”z—ñ‚ÌÃÞ°À‚Ì’†‚Å •S•ª—¦‚Å—¦‚Ɉʒu‚·‚é’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¼Æ­È°Ï°ìªº K ¦Ê¤À¤ñ¼Æ­ÈÂI¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáãÆæí Ðí ÇáãæÞÚ k ãä ÚíäÉ ãÇ.";
+ Text[ dutch ] = "Bepaalt het alfa-kwantiel van waarden in een bereik.";
+ Text[ chinese_simplified ] = "¼ÆËãÊýÖµÇøÓòµÄ K °Ù·Ö±ÈÊýÖµµã¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ðïóïóôçìüñéï á åíüò äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»ÀÇ ¾ËÆÄ quantileÀ» °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Örneðin alfa kuvantilini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_QUANTIL );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Daten" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Daten" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Daten" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "Datos" ;
+ Text [ english_us ] = "data" ;
+ Text[ chinese_simplified ] = "array";
+ Text[ russian ] = "Ìàññèâ";
+ Text[ polish ] = "Dane";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Gegevens";
+ Text[ chinese_simplified ] = "array";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veri";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ english ] = "is the array or range of data that defines relative standing." ;
+ Text [ norwegian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ italian ] = "è la matrice o l'intervallo di dati che definisce la condizione relativa." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ portuguese ] = "é a matriz ou intervalo de dados que define a posição relativa." ;
+ Text [ finnish ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ danish ] = "Matrix af data i stikprøven." ;
+ Text [ french ] = "La matrice des données de l'échantillon." ;
+ Text [ swedish ] = "Matrisen av data i stickprovet." ;
+ Text [ dutch ] = "De matrix van de gegevens in de steekproef." ;
+ Text [ spanish ] = "es la matriz o área de datos que define la posición relativa." ;
+ Text [ english_us ] = "The array of the data in the sample." ;
+ Text[ chinese_simplified ] = "¶¨ÒåÏà¶ÔλÖõÄÊý×é»òÊýÖµÇøÓò¡£";
+ Text[ russian ] = "Ìàññèâ èëè äèàïàçîí ñ ÷èñëåííûìè çíà÷åíèÿìè, êîòîðûé îïðåäåëÿåò îòíîñèòåëüíîå ïîëîæåíèå.";
+ Text[ polish ] = "Macierz danych w próbce.";
+ Text[ japanese ] = "”’lÃÞ°À‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "©w¸q¬Û¹ï¦ì¸mªº¼Æ²Õ©Î¼Æ­È°Ï°ì¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÈíÇäÇÊ Ýí ÇáÚíäÉ.";
+ Text[ dutch ] = "De matrix van de gegevens in de steekproef.";
+ Text[ chinese_simplified ] = "¶¨ÒåÏà¶ÔλÖõÄÊý×é»òÊýÖµÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí óôï äåßãìá.";
+ Text[ korean ] = "Ç¥º»¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Örnekteki verilerin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Alpha" ;
+ Text [ english ] = "k" ;
+ Text [ norwegian ] = "Alpha" ;
+ Text [ italian ] = "alfa" ;
+ Text [ portuguese_brazilian ] = "Alpha" ;
+ Text [ portuguese ] = "Alfa" ;
+ Text [ finnish ] = "Alpha" ;
+ Text [ danish ] = "K" ;
+ Text [ french ] = "Alpha" ;
+ Text [ swedish ] = "alfa" ;
+ Text [ dutch ] = "Alfa" ;
+ Text [ spanish ] = "k" ;
+ Text [ english_us ] = "Alpha" ;
+ Text[ chinese_simplified ] = "k";
+ Text[ russian ] = "Ê";
+ Text[ polish ] = "Alfa";
+ Text[ japanese ] = "—¦";
+ Text[ chinese_traditional ] = "k";
+ Text[ arabic ] = "K";
+ Text[ dutch ] = "Alfa";
+ Text[ chinese_simplified ] = "k";
+ Text[ greek ] = "á";
+ Text[ korean ] = "¾ËÆÄ";
+ Text[ turkish ] = "Alfa";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Prozentwert des Quantils zwischen 0 und 1." ;
+ Text [ english ] = "is the percentile value in the range 0..1, inclusive." ;
+ Text [ norwegian ] = "Der Prozentwert des Quantils zwischen 0 und 1." ;
+ Text [ italian ] = "è il valore percentile nell'intervallo 0..1 compresi." ;
+ Text [ portuguese_brazilian ] = "Der Prozentwert des Quantils zwischen 0 und 1." ;
+ Text [ portuguese ] = "é o valor do percentil entre 0 e 1, inclusive." ;
+ Text [ finnish ] = "Der Prozentwert des Quantils zwischen 0 und 1." ;
+ Text [ danish ] = "K er en fraktilværdi mellem 0 og 1." ;
+ Text [ french ] = "La valeur de pourcentage du quantile comprise entre 0 et 1." ;
+ Text [ swedish ] = "Procentvärdet för kvantilen mellan 0 och 1." ;
+ Text [ dutch ] = "De procentwaarde van het kwantiel tussen 0 en 1." ;
+ Text [ spanish ] = "es el valor de percentil, debe estar en el intervalo de 0 a 1, inclusive." ;
+ Text [ english_us ] = "The percentage rate of the quantile between 0 and 1." ;
+ Text[ chinese_simplified ] = "°Ù·Ö±ÈÊýÖµ£¬ÔÚ 0 µ½ 1 Ö®¼ä£¬°üº¬ 0 ºÍ 1¡£";
+ Text[ russian ] = "Çíà÷åíèå ïåðñåíòèëÿ â èíòåðâàëå îò 0 äî 1 âêëþ÷èòåëüíî.";
+ Text[ polish ] = "Wartoœæ procentowa kwantylu w zakresie miêdzy 0 lub 1.";
+ Text[ japanese ] = "0`1‚͈̔͂ÅA–Ú“I‚Ì•S•ªˆÊ‚Ì’l‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦Ê¤À¤ñ¼Æ­È¡M¦b 0 ¨ì 1 ¤§¶¡¡M¥]§t 0 ©M 1¡C";
+ Text[ arabic ] = "ÞíãÉ ÇáãÆæí æåí Èíä 0 æ 1.";
+ Text[ dutch ] = "De procentwaarde van het kwantiel tussen 0 en 1.";
+ Text[ chinese_simplified ] = "°Ù·Ö±ÈÊýÖµ£¬ÔÚ 0 µ½ 1 Ö®¼ä£¬°üº¬ 0 ºÍ 1¡£";
+ Text[ greek ] = "Ç ðïóïóôéáßá ôéìÞ ôïõ ðïóïóôçìïñßïõ ìåôáîý ôïõ 0 êáé 1.";
+ Text[ korean ] = "0°ú 1»çÀÌ quantileÀÇ ¹éºÐÀ²ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "0 ile 1 arasýndaki kuvantilin yüzde deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function QUARTILE #*=-
+ Resource SC_OPCODE_QUARTILE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet ein Quartil einer Stichprobe." ;
+ Text [ english ] = "Returns the quartile of a data set." ;
+ Text [ norwegian ] = "Berechnet ein Quartil einer Stichprobe." ;
+ Text [ italian ] = "Restituisce il quartile di un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet ein Quartil einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve um quartil de um conjunto de dados." ;
+ Text [ finnish ] = "Berechnet ein Quartil einer Stichprobe." ;
+ Text [ danish ] = "Beregner kvartilen i en stikprøve." ;
+ Text [ french ] = "Renvoie le quartile d'un échantillon." ;
+ Text [ swedish ] = "Beräknar en kvartil för ett stickprov." ;
+ Text [ dutch ] = "Bepaalt het kwartiel van een gegevensverzameling." ;
+ Text [ spanish ] = "Devuelve el cuartil de un conjunto de datos." ;
+ Text [ english_us ] = "Returns the quartile of a sample." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùµÄËÄ·ÖλÊý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êâàðòèëü ìíîæåñòâà äàííûõ.";
+ Text[ polish ] = "Wyznacza kwartyl zbioru danych.";
+ Text[ japanese ] = "1‘g‚ÌÃÞ°À‚©‚çŽl•ªˆÊ”‚ð’Šo‚µ‚Ü‚·¡";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó©â¼Ëªº¥|¤À¦ì¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÑÈÚí ÚíäÉ ãÇ.";
+ Text[ dutch ] = "Bepaalt het kwartiel van een gegevensverzameling.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùµÄËÄ·ÖλÊý¡£";
+ Text[ greek ] = "Õðïëïãßæåé Ýíá ðïóïóôçìüñéï åíüò äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»ÀÇ 4ºÐÀÇ 1À» ¹Ýȯ";
+ Text[ turkish ] = "Örneðin kartilini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_QUARTILE );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Daten" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Daten" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Daten" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "Datos" ;
+ Text [ english_us ] = "data" ;
+ Text[ chinese_simplified ] = "array";
+ Text[ russian ] = "Ìàññèâ";
+ Text[ polish ] = "Dane";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Gegevens";
+ Text[ chinese_simplified ] = "array";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veri";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ english ] = "is the array or cell range of numeric values for which you want the quartile value." ;
+ Text [ norwegian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ italian ] = "è la matrice o l'intervallo di celle a valori numerici per cui si desidera calcolare il valore quartile." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ portuguese ] = "é a matriz ou intervalo de células de valores numéricos para o qual deseja calcular o valor quartil." ;
+ Text [ finnish ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ danish ] = "Matrix af data i stikprøven." ;
+ Text [ french ] = "La matrice des données de l'échantillon." ;
+ Text [ swedish ] = "Matrisen av data i stickprovet." ;
+ Text [ dutch ] = "De matrix van de gegevens in de steekproef." ;
+ Text [ spanish ] = "es la matriz o área de celdas de valores numéricos cuyo cuartil desea obtener." ;
+ Text [ english_us ] = "The array of the data in the sample." ;
+ Text[ chinese_simplified ] = "ÐèÒªÇóµÃËÄ·ÖλÊýÖµµÄ³éÑùÊý×é»òÊý×ÖÐ͵¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Ìàññèâ èëè äèàïàçîí ÿ÷ååê ñ ÷èñëîâûìè çíà÷åíèÿìè,äëÿ êîòîðûõ îïðåäåëÿåòñÿ çíà÷åíèå êâàðòèëÿ.";
+ Text[ polish ] = "Macierz danych w próbce.";
+ Text[ japanese ] = "‘ÎÛ‚Æ‚È‚é”’lÃÞ°À‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "»Ý­n¨D±o¥|¤À¦ì¼Æ­Èªº©â¼Ë¼Æ²Õ©Î¼Æ¦r«¬Àx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "ÕÝíÝ Ãæ äØÇÞ ãä ÇáÞíã ÇáÚÏÏíÉ ÇáãÑÇÏ ÊÚííä ÞíãÉ ÇáÑÈÚí áåÇ.";
+ Text[ dutch ] = "De matrix van de gegevens in de steekproef.";
+ Text[ chinese_simplified ] = "ÐèÒªÇóµÃËÄ·ÖλÊýÖµµÄ³éÑùÊý×é»òÊý×ÖÐ͵¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí óôï äåßãìá.";
+ Text[ korean ] = "Ç¥º»¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Örnekteki verilerin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Typ" ;
+ Text [ english ] = "quart" ;
+ Text [ norwegian ] = "Typ" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "Typ" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "Typ" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "typ" ;
+ Text [ dutch ] = "Type" ;
+ Text [ spanish ] = "cuartil" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "–ß‚è’l";
+ Text[ chinese_traditional ] = "type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "Type";
+ Text[ chinese_simplified ] = "type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Typ des Quartils (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)." ;
+ Text [ english ] = "indicates which value to return." ;
+ Text [ norwegian ] = "Der Typ des Quartils (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)." ;
+ Text [ italian ] = "Il tipo del quartile (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)" ;
+ Text [ portuguese_brazilian ] = "Der Typ des Quartils (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)." ;
+ Text [ portuguese ] = "indica qual o valor quartil a devolver (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)." ;
+ Text [ finnish ] = "Der Typ des Quartils (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)." ;
+ Text [ danish ] = "Kvartilens type (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAKS)." ;
+ Text [ french ] = "Le type du quartile (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)." ;
+ Text [ swedish ] = "Typ av kvartil (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)." ;
+ Text [ dutch ] = "Kwartieltype (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)." ;
+ Text [ spanish ] = "indica qué valor devolver (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)." ;
+ Text [ english_us ] = "The type of the quartile (0 = MIN, 1 = 25%, 2 = 50 %, 3 = 75 %, 4 =MAX)." ;
+ Text[ chinese_simplified ] = "ËÄ·Öλֵ (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)¡£";
+ Text[ russian ] = "Òèï êâàðòèëÿ (0=ÌÈÍ, 1=25%, 2=50%, 3=75%, 4=ÌÀÊÑ).";
+ Text[ polish ] = "Typ kwartylu (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX).";
+ Text[ japanese ] = "Žl•ªˆÊ”‚ª•Ô‚·–ß‚è’l(0=Ŭ’lA1=25%A2=50%A3=75%A4=Å‘å’l)B";
+ Text[ chinese_traditional ] = "¥|¤À¦ì­È (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)¡C";
+ Text[ arabic ] = "äãØ ÞíãÉ ÇáÑÈÚí (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX).";
+ Text[ dutch ] = "Kwartieltype (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX).";
+ Text[ chinese_simplified ] = "ËÄ·Öλֵ (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX)¡£";
+ Text[ greek ] = "Ï ôýðïò ôïõ ôåôáñôçìïñßïõ (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX).";
+ Text[ korean ] = "»çºÐÀ§¼öÀÇ typeÀÔ´Ï´Ù (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX).";
+ Text[ turkish ] = "Kartil tipi (0=ASG., 1=%25, 2=%50, 3=%75, 4=AZM.).";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KGRÖSSTE #*=-
+ Resource SC_OPCODE_LARGE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den k-größten Wert einer Stichprobe. : Berechnet den k-gr÷˜ten Wert einer Stichprobe. */
+ Text = "Berechnet den k-größten Wert einer Stichprobe." ;
+ Text [ english ] = "Returns the k-th largest value in a data set." ;
+ Text [ norwegian ] = "Berechnet den k-größten Wert einer Stichprobe." ;
+ Text [ italian ] = "Restituisce il k-esimo valore più grande di un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet den k-größten Wert einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve o maior valor k-ésimo de uma série de dados." ;
+ Text [ finnish ] = "Berechnet den k-größten Wert einer Stichprobe." ;
+ Text [ danish ] = "Beregner den k'te største værdi i en stikprøve." ;
+ Text [ french ] = "Renvoie la k-ième plus grande valeur d'un échantillon." ;
+ Text [ swedish ] = "Beräknar det k:te största värdet i ett stickprov." ;
+ Text [ dutch ] = "Bepaalt de k-grootste waarde van een steekproef." ;
+ Text [ spanish ] = "Devuelve el k-ésimo mayor valor de un conjunto de datos." ;
+ Text [ english_us ] = "Returns the k-th largest value of a sample." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùÖÐµÄµÚ k ¸ö×î´óÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò k-îå íàèáîëüøåå çíà÷åíèå èç ìíîæåñòâà äàííûõ.";
+ Text[ polish ] = "Zwraca k-t¹ najwiêksz¹ wartoœæ ze zbioru danych.";
+ Text[ japanese ] = "1‘g‚ÌÃÞ°À‚Ì’†‚ŇˆÊ”Ô–Ú‚É‘å‚«‚ÈÃÞ°À‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó©â¼Ë¤¤ªº²Ä k ­Ó³Ì¤j­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÃßÈÑ ÞíãÉ k áÚíäÉ.";
+ Text[ dutch ] = "Bepaalt de k-grootste waarde van een steekproef.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸ö³éÑùÖÐµÄµÚ k ¸ö×î´óÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí k-óôÞ ìåãáëýôåñç ôéìÞ åíüò äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»ÀÇ k¹ø° ÃÖ´ë °ªÀ» ¹Ýȯ";
+ Text[ turkish ] = "Örneðin k'ýncý büyük deðerini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_KGROESSTE );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Daten" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Daten" ;
+ Text [ portuguese ] = "Dados" ;
+ Text [ finnish ] = "Daten" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "Datos" ;
+ Text [ english_us ] = "data" ;
+ Text[ chinese_simplified ] = "Êý¾Ý";
+ Text[ russian ] = "Ìàññèâ";
+ Text[ polish ] = "Dane";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "¸ê®Æ";
+ Text[ arabic ] = "Data";
+ Text[ dutch ] = "Gegevens";
+ Text[ chinese_simplified ] = "Êý¾Ý";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veri";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ english ] = "is the array or range of data for which you want to determine the k-th largest value." ;
+ Text [ norwegian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ italian ] = "è la matrice o l'intervallo di dati di cui si desidera determinare il k-esimo valore più grande." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ portuguese ] = "é a matriz ou intervalo de dados para os quais deseja calcular o maior valor k-ésimo." ;
+ Text [ finnish ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ danish ] = "Matrix af data i stikprøven." ;
+ Text [ french ] = "La matrice des données de l'échantillon." ;
+ Text [ swedish ] = "Matrisen med data i stickprovet." ;
+ Text [ dutch ] = "De matrix van de gegevens van de steekproef." ;
+ Text [ spanish ] = "es la matriz o área de datos cuyo k-ésimo mayor valor desea determinar." ;
+ Text [ english_us ] = "The array of the data in the sample." ;
+ Text[ chinese_simplified ] = "ÓɳéÑù×é³ÉµÄÊý¾Ý×é»òÊý¾ÝÇøÓò¡£";
+ Text[ russian ] = "Ìàññèâ èëè äèàïàçîí äàííûõ, äëÿ êîòîðûõ îïðåäåëÿåòñÿ k-îå íàèáîëüøåå çíà÷åíèå.";
+ Text[ polish ] = "Macierz danych w próbce.";
+ Text[ japanese ] = "’Šo‚Ì‘ÎÛ‚Æ‚È‚éÃÞ°À‚ª“ü—Í‚³‚ê‚Ä‚¢‚é¾Ù”͈͂܂½‚Í”z—ñ¡";
+ Text[ chinese_traditional ] = "¥Ñ©â¼Ë²Õ¦¨ªº¼Æ¾Ú²Õ©Î¼Æ¾Ú°Ï°ì¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÈíÇäÇÊ Ýí ÇáÚíäÉ.";
+ Text[ dutch ] = "De matrix van de gegevens van de steekproef.";
+ Text[ chinese_simplified ] = "ÓɳéÑù×é³ÉµÄÊý¾Ý×é»òÊý¾ÝÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí óôï äåßãìá.";
+ Text[ korean ] = "Ç¥º»¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Örnekteki verilerin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Rang_K" ;
+ Text [ english ] = "k" ;
+ Text [ norwegian ] = "Rang K" ;
+ Text [ italian ] = "k" ;
+ Text [ portuguese_brazilian ] = "Rang K" ;
+ Text [ portuguese ] = "MAIOR" ;
+ Text [ finnish ] = "Rang K" ;
+ Text [ danish ] = "K" ;
+ Text [ french ] = "Rang_K" ;
+ Text [ swedish ] = "rang_k" ;
+ Text [ dutch ] = "Rang_c" ;
+ Text [ spanish ] = "rango_k" ;
+ Text [ english_us ] = "Rank_c" ;
+ Text[ chinese_simplified ] = "µØλ_K";
+ Text[ russian ] = "K";
+ Text[ polish ] = "Rz¹d_K";
+ Text[ japanese ] = "‡ˆÊ_K";
+ Text[ chinese_traditional ] = "Rank_c";
+ Text[ arabic ] = "K";
+ Text[ dutch ] = "Rang_c";
+ Text[ chinese_simplified ] = "µØλ_K";
+ Text[ greek ] = "ÈÝóç_Ê";
+ Text[ korean ] = "¼øÀ§_K";
+ Text[ turkish ] = "Derece_C";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Rang des Werts." ;
+ Text [ english ] = "is the position (from the largest) in the array or cell range of data to return." ;
+ Text [ norwegian ] = "Der Rang des Werts." ;
+ Text [ italian ] = "è la posizione nella matrice o nell'intervallo di celle dei dati da restituire (partendo dal più grande)." ;
+ Text [ portuguese_brazilian ] = "Der Rang des Werts." ;
+ Text [ portuguese ] = "representa a posição dos dados a devolver, determinada a partir do maior valor." ;
+ Text [ finnish ] = "Der Rang des Werts." ;
+ Text [ danish ] = "K er værdiens position." ;
+ Text [ french ] = "Le rang de la valeur." ;
+ Text [ swedish ] = "Värdets rang." ;
+ Text [ dutch ] = "De rangwaarde." ;
+ Text [ spanish ] = "representa la posición del dato a devolver, determinada a partir del mayor de los valores." ;
+ Text [ english_us ] = "The ranking of the value." ;
+ Text[ chinese_simplified ] = "ÊýÖµÔÚÊý¾Ý×éÀïµÄλÖá£";
+ Text[ russian ] = "Ïîçèöèÿ çíà÷åíèé â ìàññèâå èëè äèàïàçîíå.";
+ Text[ polish ] = "Pozycja wartoœci.";
+ Text[ japanese ] = "’Šo‚·‚é’l‚̇ˆÊ(‘å‚«‚¢•û‚©‚甂¦‚½)¡";
+ Text[ chinese_traditional ] = "¼Æ­È¦b¼Æ¾Ú²Õ¸Ìªº¦ì¸m¡C";
+ Text[ arabic ] = "ãæÖÚ ÇáÞíãÉ ÇáÊí ÓÊÑÌÚ Ýí ÇáÕÝíÝ Ãæ äØÇÞ ÇáÎáÇíÇ.";
+ Text[ dutch ] = "De rangwaarde.";
+ Text[ chinese_simplified ] = "ÊýÖµÔÚÊý¾Ý×éÀïµÄλÖá£";
+ Text[ greek ] = "Ç èÝóç êáôÜôáîçò ôçò ôéìÞò.";
+ Text[ korean ] = "°ªÀÇ ¼øÀ§";
+ Text[ turkish ] = "Deðerin derecesi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KKLEINSTE #*=-
+ Resource SC_OPCODE_SMALL
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den k-kleinsten Wert einer Stichprobe." ;
+ Text [ english ] = "Returns the k-th smallest value in a data set." ;
+ Text [ norwegian ] = "Berechnet den k-kleinsten Wert einer Stichprobe." ;
+ Text [ italian ] = "Restituisce il k-esimo valore più piccolo di un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet den k-kleinsten Wert einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve o menor valor k-ésimo de um conjunto de dados." ;
+ Text [ finnish ] = "Berechnet den k-kleinsten Wert einer Stichprobe." ;
+ Text [ danish ] = "Beregner den k'te mindste værdi i en stikprøve." ;
+ Text [ french ] = "Renvoie la k-ième plus petite valeur d'un échantillon." ;
+ Text [ swedish ] = "Beräknar det k:te minsta värdet i ett stickprov." ;
+ Text [ dutch ] = "Berekent de k-kleinste waarde van een steekproef." ;
+ Text [ spanish ] = "Devuelve el k-ésimo menor valor de un conjunto de datos." ;
+ Text [ english_us ] = "Returns the k-th smallest value of a sample." ;
+ Text[ chinese_simplified ] = "¼ÆËãÊý¾Ý×éÖÐµÄµÚ k ¸ö×îСֵ¡£";
+ Text[ russian ] = "Âîçâðàùàåò k-îå íàèìåíüøåå çíà÷åíèå â ìíîæåñòâå äàííûõ.";
+ Text[ polish ] = "Podaje k-t¹ najmniejsz¹ wartoœæ w zbiorze danych.";
+ Text[ japanese ] = "1‘g‚ÌÃÞ°À‚Ì’†‚ŇˆÊ”Ԗڂɬ‚³‚ÈÃÞ°À‚ð•Ô‚µ‚Ü‚·¡";
+ Text[ chinese_traditional ] = "­pºâ¼Æ¾Ú²Õ¤¤ªº²Ä k ­Ó³Ì¤p­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÞíãÉ ÇáÃÕÛÑ áÜ k Ýí ÚíäÉ.";
+ Text[ dutch ] = "Berekent de k-kleinste waarde van een steekproef.";
+ Text[ chinese_simplified ] = "¼ÆËãÊý¾Ý×éÖÐµÄµÚ k ¸ö×îСֵ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí k-óôÞ ìéêñüôåñç ôéìÞ åíüò äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»ÀÇ k¹ø° ÃÖ´ë °ªÀ» ¹Ýȯ";
+ Text[ turkish ] = "Örneðin k'ýncý küçük deðerini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_KKLEINSTE );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Daten" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Daten" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Daten" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "Datos" ;
+ Text [ english_us ] = "data" ;
+ Text[ chinese_simplified ] = "array";
+ Text[ russian ] = "Äàííûå";
+ Text[ polish ] = "Dane";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Gegevens";
+ Text[ chinese_simplified ] = "array";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veri";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ english ] = "is an array or range of numerical data for which you want to determine the k-th smallest value." ;
+ Text [ norwegian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ italian ] = "è una matrice o un intervallo di dati numerici di cui si desidera determinare il k-esimo valore più piccolo." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ portuguese ] = "é uma matriz ou intervalo de dados numéricos para os quais deseja calcular o menor valor k-ésimo." ;
+ Text [ finnish ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ danish ] = "Matrix af data i stikprøven." ;
+ Text [ french ] = "La matrice des données de l'échantillon." ;
+ Text [ swedish ] = "Matrisen av data i stickprovet." ;
+ Text [ dutch ] = "De matrix van de gegevens in de steekproef." ;
+ Text [ spanish ] = "es una matriz o área de datos numéricos cuyo k-ésimo menor valor desea determinar." ;
+ Text [ english_us ] = "The array of the data in the sample." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚÕÒµ½µÚ k ¸ö×îСֵµÄÊý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ â âûáîðêå.";
+ Text[ polish ] = "Macierz danych w próbce.";
+ Text[ japanese ] = "’Šo‚Ì‘ÎÛ‚Æ‚È‚éÃÞ°À‚ª“ü—Í‚³‚ê‚Ä‚¢‚é¾Ù”͈͂܂½‚Í”z—ñ¡";
+ Text[ chinese_traditional ] = "¥Î¨Ó§ä¨ì²Ä k ­Ó³Ì¤p­Èªº¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ Ãæ äØÇÞ ÇáÈíÇäÇÊ ÇáÐí ÊÑíÏ ÊÍÏíÏ ÇáÞíãÉ ÇáÃÕÛÑ Ýíå ÈÚÏ ÚÏÏ ãä ÇáÞíã k ÇáÃÕÛÑ ãäåÇ.";
+ Text[ dutch ] = "De matrix van de gegevens in de steekproef.";
+ Text[ chinese_simplified ] = "ÓÃÓÚÕÒµ½µÚ k ¸ö×îСֵµÄÊý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí óôï äåßãìá.";
+ Text[ korean ] = "Ç¥º»¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Örnekteki verilerin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Rang_K" ;
+ Text [ english ] = "k" ;
+ Text [ norwegian ] = "Rang K" ;
+ Text [ italian ] = "k" ;
+ Text [ portuguese_brazilian ] = "Rang K" ;
+ Text [ portuguese ] = "MENOR" ;
+ Text [ finnish ] = "Rang K" ;
+ Text [ danish ] = "K" ;
+ Text [ french ] = "Rang_K" ;
+ Text [ swedish ] = "rang_k" ;
+ Text [ dutch ] = "Rang_c" ;
+ Text [ spanish ] = "rango_k" ;
+ Text [ english_us ] = "Rank_c" ;
+ Text[ chinese_simplified ] = "µØλ_K";
+ Text[ russian ] = "Äèàïàçîí_K";
+ Text[ polish ] = "Rz¹d_K";
+ Text[ japanese ] = "‡ˆÊ_K";
+ Text[ chinese_traditional ] = "Rank_c";
+ Text[ arabic ] = "K";
+ Text[ dutch ] = "Rang_c";
+ Text[ chinese_simplified ] = "µØλ_K";
+ Text[ greek ] = "ÈÝóç_Ê";
+ Text[ korean ] = "¼øÀ§_K";
+ Text[ turkish ] = "Derece_C";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Rang des Werts." ;
+ Text [ english ] = "is the position (from the smallest) in the array or range of data to return." ;
+ Text [ norwegian ] = "Der Rang des Werts." ;
+ Text [ italian ] = "è la posizione nella matrice o nell'intervallo di celle dei dati da restituire (partendo dal più piccolo)." ;
+ Text [ portuguese_brazilian ] = "Der Rang des Werts." ;
+ Text [ portuguese ] = "representa dentro da matriz ou intervalo de dados, a posição do dado a devolver, calculada a partir do menor dos valores." ;
+ Text [ finnish ] = "Der Rang des Werts." ;
+ Text [ danish ] = "K er værdiens position." ;
+ Text [ french ] = "Le rang de la valeur." ;
+ Text [ swedish ] = "Värdets rang" ;
+ Text [ dutch ] = "De rang van de waarde." ;
+ Text [ spanish ] = "representa dentro de la matriz o área de datos, la posición del dato a devolver, determinada a partir del menor de los valores." ;
+ Text [ english_us ] = "The ranking of the value." ;
+ Text[ chinese_simplified ] = "ÇóµÃµÄÊýÖµÔÚÊý¾Ý×éÀïµÄλÖá£";
+ Text[ russian ] = "Äèàïàçîí çíà÷åíèé.";
+ Text[ polish ] = "Rz¹d wartoœci.";
+ Text[ japanese ] = "”͈͂Ŏw’肵‚½ÃÞ°À‚©‚ç’Šo‚·‚é’l‚̇ˆÊ(¬‚³‚¢•û‚©‚甂¦‚½)¡";
+ Text[ chinese_traditional ] = "¨D±oªº¼Æ­È¦b¼Æ¾Ú²Õ¸Ìªº¦ì¸m¡C";
+ Text[ arabic ] = "ãæÖÚ ÇáÞíãÉ ÇáÊí ÓÊÑÌÚ Ýí ÇáÕÝíÝ Ãæ äØÇÞ ÇáÎáÇíÇ.";
+ Text[ dutch ] = "De rang van de waarde.";
+ Text[ chinese_simplified ] = "ÇóµÃµÄÊýÖµÔÚÊý¾Ý×éÀïµÄλÖá£";
+ Text[ greek ] = "Ç èÝóç êáôÜôáîçò ôçò ôéìÞò.";
+ Text[ korean ] = "°ªÀÇ ¼øÀ§";
+ Text[ turkish ] = "Deðerin derecesi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function QUANTILSRANG #*=-
+ Resource SC_OPCODE_PERCENT_RANK
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den prozentualen Rang eines Wertes in einer Stichprobe. : Berechnet den prozentualen Rang eines Wert in einer Stichprobe. */
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den prozentualen Rang eines Wertes in einer Stichprobe. : Berechnet den prozentualen Rang eines Wert in einer Stichprobe. */
+ Text = "Berechnet den prozentualen Rang eines Wertes in einer Stichprobe." ;
+ Text [ english ] = "Returns the percentage rank of a value in a data set." ;
+ Text [ norwegian ] = "Berechnet den prozentualen Rang eines Wertes in einer Stichprobe." ;
+ Text [ italian ] = "Restituisce il rango percentuale di un valore in un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet den prozentualen Rang eines Wertes in einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve a ordem percentual de um valor num conjunto de dados." ;
+ Text [ finnish ] = "Berechnet den prozentualen Rang eines Wertes in einer Stichprobe." ;
+ Text [ danish ] = "Beregner den procentuelle rang for en værdi i en stikprøve." ;
+ Text [ french ] = "Renvoie le rang en pourcentage d'une valeur d'un échantillon." ;
+ Text [ swedish ] = "Beräknar den procentuella rangen för ett värde i ett stickprov." ;
+ Text [ dutch ] = "Bepaalt de procentuele rang van een waarde in een steekproef." ;
+ Text [ spanish ] = "Devuelve el área de percentil de un valor en un conjunto de datos." ;
+ Text [ english_us ] = "Returns the percentage rank of a value in a sample." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýÖµÔÚÊý¾Ý¼¯ÖеİٷֱÈÅÅλ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ïðîöåíòíóþ ñòåïåíü çíà÷åíèÿ â âûáîðêå.";
+ Text[ polish ] = "Wyznacza pozycjê procentow¹ wartoœci w próbce.";
+ Text[ japanese ] = "1‘g‚ÌÃÞ°À‚Ì’†‚Ì’l‚ð•S•ª—¦‚ðŽg‚Á‚½‡ˆÊ‚Å•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æ­È¦b¼Æ¾Ú¶°¤¤ªº¦Ê¤À¤ñ±Æ¦ì¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáãÑÊÈÉ ÇáãÆæíÉ áÞíãÉ ãÇ Ýí ÅÍÏì ÇáÚíäÇÊ.";
+ Text[ dutch ] = "Bepaalt de procentuele rang van een waarde in een steekproef.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýÖµÔÚÊý¾Ý¼¯ÖеİٷֱÈÅÅλ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ðïóïóôéáßá èÝóç êáôÜôáîçò ìéáò ôéìÞò åíüò äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»¿¡ À־ ¹éºÐÀ² ¼øÀ§¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Örnek içinde bir deðerin yüzde sýrasýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_QUANTILSRANG );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Daten" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Daten" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Daten" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "Datos" ;
+ Text [ english_us ] = "data" ;
+ Text[ chinese_simplified ] = "array";
+ Text[ russian ] = "Ìàññèâ";
+ Text[ polish ] = "Dane";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Gegevens";
+ Text[ chinese_simplified ] = "array";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veri";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ english ] = "is the array or range of data with numeric values that defines relative standing." ;
+ Text [ norwegian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ italian ] = "è la matrice o l'intervallo di dati con valori numerici che definisce la condizione relativa." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ portuguese ] = "é a matriz ou intervalo de dados com valores numéricos que define uma posição relativa." ;
+ Text [ finnish ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ danish ] = "Matrix af data i stikprøven." ;
+ Text [ french ] = "La matrice des données de l'échantillon." ;
+ Text [ swedish ] = "Matrisen av data i ett stickprov." ;
+ Text [ dutch ] = "De matrix van de gegevens in de steekproef." ;
+ Text [ spanish ] = "es la matriz o área de datos con valores numéricos que define la posición relativa." ;
+ Text [ english_us ] = "The array of the data in the sample." ;
+ Text[ chinese_simplified ] = "Êý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ èëè äèàïàçîí äàííûõ ñ ÷èñëîâûìè çíà÷åíèÿìè, îïðåäåëÿþùèé îòíîñèòåëüíîå ïîëîæåíèå.";
+ Text[ polish ] = "Macierz danych w próbce.";
+ Text[ japanese ] = "”’lÃÞ°À‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÈíÇäÇÊ Ýí ÇáÚíäÉ.";
+ Text[ dutch ] = "De matrix van de gegevens in de steekproef.";
+ Text[ chinese_simplified ] = "Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí óôï äåßãìá.";
+ Text[ korean ] = "Ç¥º»¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Örnekteki verilerin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Wert" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Wert, dessen prozentualer Rang bestimmt wird." ;
+ Text [ english ] = "is the value for which you want to know the rank." ;
+ Text [ norwegian ] = "Der Wert, dessen prozentualer Rang bestimmt wird." ;
+ Text [ italian ] = "è il valore del quale si desidera conoscere il rango percentuale." ;
+ Text [ portuguese_brazilian ] = "Der Wert, dessen prozentualer Rang bestimmt wird." ;
+ Text [ portuguese ] = "é o valor cuja ordem percentual se deseja calcular." ;
+ Text [ finnish ] = "Der Wert, dessen prozentualer Rang bestimmt wird." ;
+ Text [ danish ] = "Den værdi hvis rang skal bestemmes." ;
+ Text [ french ] = "La valeur dont vous voulez déterminer le rang en pourcentage." ;
+ Text [ swedish ] = "Värdet vars procentuella rang bestäms." ;
+ Text [ dutch ] = "De waarde waarvan de procentuele rang wordt bepaald." ;
+ Text [ spanish ] = "es el valor cuyo área percentil desea conocer." ;
+ Text [ english_us ] = "The value for which percentage ranking is to be determined." ;
+ Text[ chinese_simplified ] = "Ҫȷ¶¨Æä°Ù·Ö±ÈÅÅλµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî îïðåäåëÿåòñÿ ïðîöåíòíûé ðàíã.";
+ Text[ polish ] = "Wartoœæ, dla której okreœlana bêdzie pozycja procentowa.";
+ Text[ japanese ] = "•S•ª—¦‚ðŽg‚Á‚½‡ˆÊ‚ðŒvŽZ‚·‚é’lB";
+ Text[ chinese_traditional ] = "­n½T©w¨ä¦Ê¤À¤ñ±Æ¦ìªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ãÚÑÝÉ ãÑÊÈÊåÇ.";
+ Text[ dutch ] = "De waarde waarvan de procentuele rang wordt bepaald.";
+ Text[ chinese_simplified ] = "Ҫȷ¶¨Æä°Ù·Ö±ÈÅÅλµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ïðïßáò èá ïñéóôåß ç ðïóïóôéáßá èÝóç êáôÜôáîçò ôçò.";
+ Text[ korean ] = "°áÁ¤µÈ ¹éºÐÀ²ÀÇ ¼øÀ§¿¡´ëÇÑ °ª.";
+ Text[ turkish ] = "Yüzde sýrasý belirlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function RANG #*=-
+ Resource SC_OPCODE_RANK
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Rang eines Wertes in einer Stichprobe. : Berechnet den Rang eines Wert in einer Stichprobe. */
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Rang eines Wertes in einer Stichprobe. : Berechnet den Rang eines Wert in einer Stichprobe. */
+ Text = "Berechnet den Rang eines Wertes in einer Stichprobe." ;
+ Text [ english ] = "Returns the rank of a number in a list of numbers." ;
+ Text [ norwegian ] = "Berechnet den Rang eines Wertes in einer Stichprobe." ;
+ Text [ italian ] = "Restituisce il rango di un valore in un campione." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Rang eines Wertes in einer Stichprobe." ;
+ Text [ portuguese ] = "Devolve a posição de um número num exemplo dado." ;
+ Text [ finnish ] = "Berechnet den Rang eines Wertes in einer Stichprobe." ;
+ Text [ danish ] = "Beregner rangen for en værdi i en stikprøve." ;
+ Text [ french ] = "Renvoie le rang d'une valeur d'un échantillon." ;
+ Text [ swedish ] = "Beräknar rangen för ett värde i ett stickprov." ;
+ Text [ dutch ] = "Berekent de rang van een waarde in een steekproef." ;
+ Text [ spanish ] = "Devuelve el área de un valor en una muestra." ;
+ Text [ english_us ] = "Returns the ranking of a value in a sample." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýÖµÔÚÒ»×éÊýÖµÖеÄÅÅλ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ðàíã çíà÷åíèÿ â âûáîðêå.";
+ Text[ polish ] = "Wyznacza pozycjê wartoœci w próbce.";
+ Text[ japanese ] = "•W–{“à‚Ì”’l‚ª‰½”ԖڂɈʒu‚·‚é‚©‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó¼Æ­È¦b¤@²Õ¼Æ­È¤¤ªº±Æ¦ì¡C";
+ Text[ arabic ] = "ÊÍÓÈ ãÑÊÈÉ ÞíãÉ ãÇ Ýí ÅÍÏì ÇáÚíäÇÊ.";
+ Text[ dutch ] = "Berekent de rang van een waarde in een steekproef.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÊýÖµÔÚÒ»×éÊýÖµÖеÄÅÅλ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí èÝóç êáôÜôáîçò ìéáò ôéìÞò åíüò äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»¿¡ À־ °ªÀÇ ¼øÀ§¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Örnek içindeki bir deðerin derecesini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_RANG );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "number";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, dessen Rang bestimmt wird." ;
+ Text [ english ] = "is the number whose rank you want to find." ;
+ Text [ norwegian ] = "Der Wert, dessen Rang bestimmt wird." ;
+ Text [ italian ] = "è il numero di cui si desidera ricercare il rango." ;
+ Text [ portuguese_brazilian ] = "Der Wert, dessen Rang bestimmt wird." ;
+ Text [ portuguese ] = "é o valor do qual deseja determinar a posição." ;
+ Text [ finnish ] = "Der Wert, dessen Rang bestimmt wird." ;
+ Text [ danish ] = "Den værdi hvis rang skal bestemmes." ;
+ Text [ french ] = "La valeur dont vous voulez déterminer le rang." ;
+ Text [ swedish ] = "Värdet vars rang bestäms." ;
+ Text [ dutch ] = "De waarde waarvan de rang wordt bepaald." ;
+ Text [ spanish ] = "es el número cuya jerarquía desea conocer." ;
+ Text [ english_us ] = "The value for which the rank is to be determined." ;
+ Text[ chinese_simplified ] = "ÐèÒªÕÒµ½ÅÅλµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî îïðåäåëÿåòñÿ ðàíã.";
+ Text[ polish ] = "Liczba, której pozycja zostanie okreœlona";
+ Text[ japanese ] = "”͈͓à‚ł̇ˆÊ‚𒲂ׂ锒lB";
+ Text[ chinese_traditional ] = "»Ý­n§ä¨ì±Æ¦ìªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÍÏíÏ ãÑÊÈÊå.";
+ Text[ dutch ] = "De waarde waarvan de rang wordt bepaald.";
+ Text[ chinese_simplified ] = "ÐèÒªÕÒµ½ÅÅλµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ïðïßáò èá ïñéóôåß ç èÝóç êáôÜôáîçò ôçò.";
+ Text[ korean ] = "¼øÀ§°¡ ÁöÁ¤µÉ °ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Derecesi belirlenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten" ;
+ Text [ english ] = "ref" ;
+ Text [ norwegian ] = "Daten" ;
+ Text [ italian ] = "rif" ;
+ Text [ portuguese_brazilian ] = "Daten" ;
+ Text [ portuguese ] = "Referência" ;
+ Text [ finnish ] = "Daten" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "Datos" ;
+ Text [ english_us ] = "Data" ;
+ Text[ chinese_simplified ] = "ref";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Dane";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "ref";
+ Text[ arabic ] = "Ref";
+ Text[ dutch ] = "Gegevens";
+ Text[ chinese_simplified ] = "ref";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veri";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ english ] = "is an array of, or a reference to, a list of numbers." ;
+ Text [ norwegian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ italian ] = "è una matrice di numeri o un riferimento ad un elenco di numeri." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ portuguese ] = "é uma matriz de, ou referência a, uma lista de números." ;
+ Text [ finnish ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ danish ] = "Matrix af data i stikprøven." ;
+ Text [ french ] = "La matrice des données de l'échantillon." ;
+ Text [ swedish ] = "Matrisen av data i stickprovet." ;
+ Text [ dutch ] = "De matrix met de gegevens van de steekproef." ;
+ Text [ spanish ] = "es una matriz de, o una referencia a, una lista de números." ;
+ Text [ english_us ] = "The array of the data in the sample." ;
+ Text[ chinese_simplified ] = "°üº¬Ò»×éÊý×ÖµÄÊý×é»òÒýÓá£";
+ Text[ russian ] = "Ìàññèâ èëè ññûëêà íà ñïèñîê ÷èñåë (âûáîðêó).";
+ Text[ polish ] = "Macierz danych w próbce.";
+ Text[ japanese ] = "”’l‚ðŠÜ‚޾͈ٔ͂̎QÆ‚Ü‚½‚Í”’l”z—ñ¡";
+ Text[ chinese_traditional ] = "¥]§t¤@²Õ¼Æ¦rªº¼Æ²Õ©Î°Ñ·Ó¡C";
+ Text[ arabic ] = "ÕÝíÝ ãä ÞÇÆãÉ ÃÑÞÇã Ãæ ãÑÌÚ Åáì ÞÇÆãÉ ÃÑÞÇã.";
+ Text[ dutch ] = "De matrix met de gegevens van de steekproef.";
+ Text[ chinese_simplified ] = "°üº¬Ò»×éÊý×ÖµÄÊý×é»òÒýÓá£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí óôï äåßãìá.";
+ Text[ korean ] = "Ç¥º»¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Örnekteki verilerin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Art" ;
+ Text [ english ] = "order" ;
+ Text [ norwegian ] = "Art" ;
+ Text [ italian ] = "ordine" ;
+ Text [ portuguese_brazilian ] = "Art" ;
+ Text [ portuguese ] = "Ordem" ;
+ Text [ finnish ] = "Art" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "typ" ;
+ Text [ dutch ] = "Volgorde" ;
+ Text [ spanish ] = "Orden" ;
+ Text [ english_us ] = "Type" ;
+ Text[ chinese_simplified ] = "Order";
+ Text[ russian ] = "Ïîðÿäîê";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "‡˜";
+ Text[ chinese_traditional ] = "Order";
+ Text[ arabic ] = "Order";
+ Text[ dutch ] = "Volgorde";
+ Text[ chinese_simplified ] = "Order";
+ Text[ greek ] = "ÄéÜôáîç";
+ Text[ korean ] = "ŸÀÔ";
+ Text[ turkish ] = "Tür";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Anordnung der Rangfolge: 0 bedeutet aufsteigend, 1 bedeutet absteigend." ;
+ Text [ english ] = "is a number specifying how to rank number." ;
+ Text [ norwegian ] = "Die Anordnung der Rangfolge: 0 bedeutet aufsteigend, 1 bedeutet absteigend." ;
+ Text [ italian ] = "specifica in che modo si devono disporre i numeri: 0 significa crescente, 1 significa decrescente." ;
+ Text [ portuguese_brazilian ] = "Die Anordnung der Rangfolge: 0 bedeutet aufsteigend, 1 bedeutet absteigend." ;
+ Text [ portuguese ] = "especifica a ordem de posicionamento do número. 0 = ascendente; 1 = descendente." ;
+ Text [ finnish ] = "Die Anordnung der Rangfolge: 0 bedeutet aufsteigend, 1 bedeutet absteigend." ;
+ Text [ danish ] = "Rangens sorteringsrækkefølge: 0 betyder stigende, 1 betyder faldende." ;
+ Text [ french ] = "Le type d'ordre de la série : 0 pour croissant, 1 pour décroissant." ;
+ Text [ swedish ] = "Rangordningen: 0 betyder stigande, 1 betyder fallande." ;
+ Text [ dutch ] = "De volgorde 0 betekent oplopend, 1 aflopend." ;
+ Text [ spanish ] = "es un número que especifica cómo clasificar el argumento número." ;
+ Text [ english_us ] = "Sequence order: 0 means ascending, 1 means descending." ;
+ Text[ chinese_simplified ] = "Ö¸Ã÷ÅÅλµÄ·½Ê½£º0 = °´½µÐòÅÅλ, 1 = °´ÉýÐòÅÅλ¡£";
+ Text[ russian ] = "×èñëî, îïðåäåëÿþùåå ñïîñîá óïîðÿäî÷åíèÿ: 0 îçíà÷àåò â ïîðÿäêå âîçðàñòàíèÿ, 1 îçíà÷àåò â ïîðÿäêå óáûâàíèÿ.";
+ Text[ polish ] = "Wyznacza kolejnoœæ pozycji liczb: 0 oznacza rosn¹co, 1 oznacza malej¹co.";
+ Text[ japanese ] = "”͈͓à‚Ì”’l‚ð•À‚בւ¦‚é•û–@: 0‚ðŽw’è‚·‚é‚Ƹ‡A1‚ðŽw’è‚·‚é‚Æ~‡B";
+ Text[ chinese_traditional ] = "«ü©ú±Æ¦ìªº¤è¦¡¡R0 = «ö­°§Ç±Æ¦ì, 1 = «ö¤É§Ç±Æ¦ì¡C";
+ Text[ arabic ] = "ÑÞã: 0 ÊÚäí ãÑÊÈÉ Ýí ÞÇÆãÉ ãÝÑæÒÉ ÊÕÇÚÏíÇðº 1 ÊÚäí ãÑÊÈÉ Ýí ÞÇÆãÉ ãÝÑæÒÉ ÊäÇÒáíÇð.";
+ Text[ dutch ] = "De volgorde 0 betekent oplopend, 1 aflopend.";
+ Text[ chinese_simplified ] = "Ö¸Ã÷ÅÅλµÄ·½Ê½£º0 = °´½µÐòÅÅλ, 1 = °´ÉýÐòÅÅλ¡£";
+ Text[ greek ] = "Ç äéÜôáîç ôçò èÝóçò êáôÜôáîçò: 0 óçìáßíåé áýîïõóá, 1 óçìáßíåé öèßíïõóá.";
+ Text[ korean ] = "ÀÏ·Ã ¼ø¼­: 0 Àº ¿À¸§ Â÷¼ø, 1 Àº ³»¸² Â÷¼øÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Derece sýrasý: 0 artan, 1 ise azalan anlamýna gelir.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GESTUTZTMITTEL #*=-
+ Resource SC_OPCODE_TRIM_MEAN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den Mittelwert einer Stichprobe ohne die Randwerte." ;
+ Text [ english ] = "Returns the mean of the interior of a data set." ;
+ Text [ norwegian ] = "Berechnet den Mittelwert einer Stichprobe ohne die Randwerte." ;
+ Text [ italian ] = "Restituisce la media di un campione non considerando i valori marginali" ;
+ Text [ portuguese_brazilian ] = "Berechnet den Mittelwert einer Stichprobe ohne die Randwerte." ;
+ Text [ portuguese ] = "Devolve a média interna de uma série de dados sem alterar os valores." ;
+ Text [ finnish ] = "Berechnet den Mittelwert einer Stichprobe ohne die Randwerte." ;
+ Text [ danish ] = "Beregner det trimmede gennemsnit for en stikprøve." ;
+ Text [ french ] = "Renvoie la moyenne d'un échantillon sans tenir compte des valeurs aux limites." ;
+ Text [ swedish ] = "Beräknar medelvärdet av ett stickprov utan marginalvärdena." ;
+ Text [ dutch ] = "Berekent de gemiddelde waarde van een steekproef zonder de grenswaarden." ;
+ Text [ spanish ] = "Devuelve la media del interior del conjunto de datos." ;
+ Text [ english_us ] = "Returns the mean of a sample without including the marginal values." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»×éÊý¾ÝÔÚ³ýÈ¥Á½¶Ë²¿·ÖÊý¾ÝºóµÄƽ¾ùÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñðåäíåå çíà÷åíèå âíóòðåííåé ÷àñòè ìíîæåñòâà äàííûõ.";
+ Text[ polish ] = "Wyznacza wartoœæ œredni¹ z wnêtrza zbioru danych.";
+ Text[ japanese ] = "ÃÞ°À‘S‘Ì‚ÌãŒÀ‚ƉºŒÀ‚©‚çˆê’è‚ÌŠ„‡‚ÌÃÞ°À‚ðØ‚è—Ž‚Æ‚µAŽc‚è‚Ì€‚Ì•½‹Ï’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@²Õ¼Æ¾Ú¦b°£¥h¨âºÝ³¡¥÷¼Æ¾Ú«áªº¥­§¡­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáãÚÏá áÚíäÉ ÈÏæä ÇáÞíã ÇáØÑÝíÉ.";
+ Text[ dutch ] = "Berekent de gemiddelde waarde van een steekproef zonder de grenswaarden.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»×éÊý¾ÝÔÚ³ýÈ¥Á½¶Ë²¿·ÖÊý¾ÝºóµÄƽ¾ùÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ìÝóç ôéìÞ åíüò äåßãìáôïò ÷ùñßò ôéò ïñéáêÝò ôéìÝò.";
+ Text[ korean ] = "ÇÑ°è°ªÀ» Æ÷ÇÔÇÏÁö ¾Ê°í Ç¥º»ÀÇ Æò±Õ°ªÀ» ¹Ýȯ";
+ Text[ turkish ] = "Örneðin ortalamasýný, marj deðerler hariç hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_GESTUTZTMITTEL );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Daten" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Daten" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Daten" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "Datos" ;
+ Text [ english_us ] = "data" ;
+ Text[ chinese_simplified ] = "Data";
+ Text[ russian ] = "Äàííûå";
+ Text[ polish ] = "Dane";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "Data";
+ Text[ arabic ] = "Data";
+ Text[ dutch ] = "Gegevens";
+ Text[ chinese_simplified ] = "Data";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veri";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ english ] = "is the array or range of values to trim and average." ;
+ Text [ norwegian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ italian ] = "è la matrice o l'intervallo di valori da troncare e di cui calcolare la media." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ portuguese ] = "é a matriz ou intervalo de valores cuja média deseja calcular." ;
+ Text [ finnish ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ danish ] = "Matrix af data i stikprøven." ;
+ Text [ french ] = "La matrice des données de l'échantillon." ;
+ Text [ swedish ] = "Matrisen av data i stickprovet." ;
+ Text [ dutch ] = "De matrix van de gegevens in de steekproef." ;
+ Text [ spanish ] = "es la matriz o área de valores que desea acotar y de los cuales se calculará la media." ;
+ Text [ english_us ] = "The array of the data in the sample." ;
+ Text[ chinese_simplified ] = "ÒªÇóÆäƽ¾ùÖµµÄÊý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ èëè èíòåðâàë óñðåäíÿåìûõ çíà÷åíèé â âûáîðêå.";
+ Text[ polish ] = "Macierz danych w próbce.";
+ Text[ japanese ] = "‘ÎÛ‚Æ‚È‚éÃÞ°À‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "­n¨D¨ä¥­§¡­Èªº¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÈíÇäÇÊ Ýí ÇáÚíäÉ.";
+ Text[ dutch ] = "De matrix van de gegevens in de steekproef.";
+ Text[ chinese_simplified ] = "ÒªÇóÆäƽ¾ùÖµµÄÊý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí óôï äåßãìá.";
+ Text[ korean ] = "Ç¥º»¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Örnekteki verilerin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Alpha" ;
+ Text [ english ] = "percent" ;
+ Text [ norwegian ] = "Alpha" ;
+ Text [ italian ] = "Alfa" ;
+ Text [ portuguese_brazilian ] = "Alpha" ;
+ Text [ portuguese ] = "Alfa" ;
+ Text [ finnish ] = "Alpha" ;
+ Text [ danish ] = "Procent" ;
+ Text [ french ] = "Alpha" ;
+ Text [ swedish ] = "alfa" ;
+ Text [ dutch ] = "Alfa" ;
+ Text [ spanish ] = "Alfa" ;
+ Text [ english_us ] = "Alpha" ;
+ Text[ chinese_simplified ] = "Alpha";
+ Text[ russian ] = "Àëüôà";
+ Text[ polish ] = "Alfa";
+ Text[ japanese ] = "Š„‡";
+ Text[ chinese_traditional ] = "Alpha";
+ Text[ arabic ] = "Alpha";
+ Text[ dutch ] = "Alfa";
+ Text[ chinese_simplified ] = "Alpha";
+ Text[ greek ] = "á";
+ Text[ korean ] = "¾ËÆÄ";
+ Text[ turkish ] = "Alfa";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Prozentsatz der Randdaten, die nicht berücksichtigt werden. : Der Prozentsatz der Randdaten, die nicht ber³cksichtigt werden. */
+ Text = "Der Prozentsatz der Randdaten, die nicht berücksichtigt werden." ;
+ Text [ english ] = "is the fractional number of data points to exclude from the calculation." ;
+ Text [ norwegian ] = "Der Prozentsatz der Randdaten, die nicht berücksichtigt werden." ;
+ Text [ italian ] = "è il numero di dati frazionario da escludere dal calcolo." ;
+ Text [ portuguese_brazilian ] = "Der Prozentsatz der Randdaten, die nicht berücksichtigt werden." ;
+ Text [ portuguese ] = "é o número fraccionário de observações a ser excluídas do cálculo." ;
+ Text [ finnish ] = "Der Prozentsatz der Randdaten, die nicht berücksichtigt werden." ;
+ Text [ danish ] = "Den procentvise andel af data som skal ekskluderes fra toppen og bunden." ;
+ Text [ french ] = "Le pourcentage des données aux limites qui ne doivent pas être prises en compte." ;
+ Text [ swedish ] = "Procentsatsen av marginaldata som inte inkluderas." ;
+ Text [ dutch ] = "Het percentage grensgegevens dat niet in de berekening is opgenomen." ;
+ Text [ spanish ] = "es el número fraccionario de observaciones que se excluyen del cálculo." ;
+ Text [ english_us ] = "The percentage of marginal data that is not to be taken into account." ;
+ Text[ chinese_simplified ] = "Òª³ýÈ¥µÄÁ½¶ËÊý¾ÝµãÔÚÊý¾Ý×éÖÐÕ¼µÄ°Ù·Ö±È¡£";
+ Text[ russian ] = "Ïðîöåíòíàÿ äîëÿ òî÷åê äàííûõ, èñêëþ÷àåìûõ èç âû÷èñëåíèé.";
+ Text[ polish ] = "Stawka procentowa danych, które nie bêd¹ uwzglêdnione.";
+ Text[ japanese ] = "•½‹Ï’l‚ÌŒvŽZ‚©‚ç”rœ‚·‚éÃÞ°À‚ÌŠ„‡B";
+ Text[ chinese_traditional ] = "­n°£¥hªº¨âºÝ¼Æ¾ÚÂI¦b¼Æ¾Ú²Õ¤¤¦ûªº¦Ê¤À¤ñ¡C";
+ Text[ arabic ] = "ÇáÚÏÏ ÇáßÓÑí áÈíÇäÇÊ ÇáØÑÝ ÇáÊí áÇ ÊÄÎÐ Ýí ÇáÇÚÊÈÇÑ.";
+ Text[ dutch ] = "Het percentage grensgegevens dat niet in de berekening is opgenomen.";
+ Text[ chinese_simplified ] = "Òª³ýÈ¥µÄÁ½¶ËÊý¾ÝµãÔÚÊý¾Ý×éÖÐÕ¼µÄ°Ù·Ö±È¡£";
+ Text[ greek ] = "Ôï ðïóïóôü % ôùí ïñéáêþí ôéìþí ðïõ äåí èá ëçöèåß õðüøç.";
+ Text[ korean ] = "°í·ÁµÇÁö ¾ÊÀ» ÁÖº¯ µ¥ÀÌÅÍÀÇ ¹éºÐÀ²ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Dikkate alýnmayacak marj verilerinin yüzde oraný.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function WAHRSCHBEREICH #*=-
+ Resource SC_OPCODE_PROB
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet diskrete Wahrscheinlichkeiten eines Intervalls." ;
+ Text [ english ] = "Returns the probability that values in a range are between two limits." ;
+ Text [ norwegian ] = "Berechnet diskrete Wahrscheinlichkeiten eines Intervalls." ;
+ Text [ italian ] = "Restituisce le probabilità discrete in un intervallo." ;
+ Text [ portuguese_brazilian ] = "Berechnet diskrete Wahrscheinlichkeiten eines Intervalls." ;
+ Text [ portuguese ] = "Devolve a probabilidade de que valores num intervalo se encontrem entre dois limites." ;
+ Text [ finnish ] = "Berechnet diskrete Wahrscheinlichkeiten eines Intervalls." ;
+ Text [ danish ] = "Beregner sandsynligheden for værdier i et interval." ;
+ Text [ french ] = "Renvoie la probabilité discrète d'un intervalle." ;
+ Text [ swedish ] = "Beräknar diskreta sannolikheter för ett intervall." ;
+ Text [ dutch ] = "Berekent de discrete kans van een interval." ;
+ Text [ spanish ] = "Devuelve la probabilidad de que los valores de un área se encuentren entre dos límites." ;
+ Text [ english_us ] = "Returns the discreet probability of an interval." ;
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÇøÓòÄڵĸÅÂÊÖµÖ®ºÍ¡£";
+ Text[ russian ] = "Âîçâðàùàåò âåðîÿòíîñòü òîãî, ÷òî çíà÷åíèÿ äèàïàçîíà íàõîäÿòñÿ âíóòðè çàäàííûõ ïðåäåëîâ.";
+ Text[ polish ] = "Wyznacza prawdopodobieñstwo przy ci¹gu wartoœci ograniczonych z do³u i z góry.";
+ Text[ japanese ] = "‰ºŒÀ‚ÆãŒÀ‚Æ‚ÌŠÔ‚ÉŽû‚Ü‚éŠm—¦‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤@­Ó°Ï°ì¤ºªº·§²v­È¤§©M¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇÍÊãÇáÇÊ æÞæÚ Þíã Ýí äØÇÞ Èíä ÍÏíä.";
+ Text[ dutch ] = "Berekent de discrete kans van een interval.";
+ Text[ chinese_simplified ] = "¼ÆËãÒ»¸öÇøÓòÄڵĸÅÂÊÖµÖ®ºÍ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôéò äéáêñéôéêÝò ðéèáíüôçôåò åíüò äéáóôÞìáôïò.";
+ Text[ korean ] = "°£°ÝÀÇ ½ÅÁßÇÑ È®À²À» ¹Ýȯ";
+ Text[ turkish ] = "Aralýðýn ihtiyatlý olasýlýklarýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_WAHRSCHBEREICH );
+ 4; 0; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten" ;
+ Text [ english ] = "x_range" ;
+ Text [ norwegian ] = "Daten" ;
+ Text [ italian ] = "int_x" ;
+ Text [ portuguese_brazilian ] = "Daten" ;
+ Text [ portuguese ] = "Intervalo_x" ;
+ Text [ finnish ] = "Daten" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "intervalo_x" ;
+ Text [ english_us ] = "data" ;
+ Text[ chinese_simplified ] = "x_range";
+ Text[ russian ] = "Õ_äèàïàçîí";
+ Text[ polish ] = "zakres_x";
+ Text[ japanese ] = "X”͈Í";
+ Text[ chinese_traditional ] = "x_range";
+ Text[ arabic ] = "X_range";
+ Text[ dutch ] = "Gegevens";
+ Text[ chinese_simplified ] = "x_range";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veri";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ english ] = "is the range of numeric values of x with which there are associated probabilities." ;
+ Text [ norwegian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ italian ] = "è l'intervallo dei valori numerici per x a cui sono associate delle probabilità." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ portuguese ] = "é o intervalo de valores numéricos de x com probabilidades associadas." ;
+ Text [ finnish ] = "Die Matrix der Daten in der Stichprobe." ;
+ Text [ danish ] = "Matrix af data i stikprøven." ;
+ Text [ french ] = "La matrice des données de l'échantillon." ;
+ Text [ swedish ] = "Matrisen av data i ett stickprov." ;
+ Text [ dutch ] = "De matrix van de gegevens in de steekproef." ;
+ Text [ spanish ] = "es el área de valores numéricos de x con que se asocian las probabilidades." ;
+ Text [ english_us ] = "The sample data array." ;
+ Text[ chinese_simplified ] = "¾ßÓи÷×ÔÏàÓ¦¸ÅÂÊÖµµÄ x ÊýÖµÇøÓò¡£";
+ Text[ russian ] = "Äèàïàçîí ÷èëîâûõ çíà÷åíèé õ, ñ êîòîðûìè ñâÿçàíû âåðîÿòíîñòè.";
+ Text[ polish ] = "Macierz danych w próbce.";
+ Text[ japanese ] = "Šm—¦”͈͂ƑΉžŠÖŒW‚É‚ ‚é”’l‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "¨ã¦³¦U¦Û¬ÛÀ³·§²v­Èªº x ¼Æ­È°Ï°ì¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÈíÇäÇÊ Ýí ÇáÚíäÉ.";
+ Text[ dutch ] = "De matrix van de gegevens in de steekproef.";
+ Text[ chinese_simplified ] = "¾ßÓи÷×ÔÏàÓ¦¸ÅÂÊÖµµÄ x ÊýÖµÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí óôï äåßãìá.";
+ Text[ korean ] = "Ç¥º»¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Örnekteki verilerin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Wahrscheinlichkeiten" ;
+ Text [ english ] = "prob_range" ;
+ Text [ norwegian ] = "Wahrscheinlichkeiten" ;
+ Text [ italian ] = "prob_int" ;
+ Text [ portuguese_brazilian ] = "Wahrscheinlichkeiten" ;
+ Text [ portuguese ] = "Intervalo_prob" ;
+ Text [ finnish ] = "Wahrscheinlichkeiten" ;
+ Text [ danish ] = "Sandsynligheder" ;
+ Text [ french ] = "Probabilités" ;
+ Text [ swedish ] = "sannolikheter" ;
+ Text [ dutch ] = "Kansen" ;
+ Text [ spanish ] = "intervalo_probabilidad" ;
+ Text [ english_us ] = "probability" ;
+ Text[ chinese_simplified ] = "pro_range";
+ Text[ russian ] = "Äèàïàçîí_âåðîÿò";
+ Text[ polish ] = "zakres_prawdop";
+ Text[ japanese ] = "Šm—¦”͈Í";
+ Text[ chinese_traditional ] = "pro_range";
+ Text[ arabic ] = "Prob_range";
+ Text[ dutch ] = "Kansen";
+ Text[ chinese_simplified ] = "pro_range";
+ Text[ greek ] = "Prob_range";
+ Text[ korean ] = "È®À²";
+ Text[ turkish ] = "Olasýlýklar";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Matrix der dazugehörigen Wahrscheinlichkeiten. : Die Matrix der dazugeh÷rigen Wahrscheinlichkeiten. */
+ Text = "Die Matrix der dazugehörigen Wahrscheinlichkeiten." ;
+ Text [ english ] = "is a set of probabilities associated with values in x_range." ;
+ Text [ norwegian ] = "Die Matrix der dazugehörigen Wahrscheinlichkeiten." ;
+ Text [ italian ] = "è l'insieme delle probabilità associate ai valori di int_x." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der dazugehörigen Wahrscheinlichkeiten." ;
+ Text [ portuguese ] = "é um conjunto de probabilidades associado a valores no intervalo_x." ;
+ Text [ finnish ] = "Die Matrix der dazugehörigen Wahrscheinlichkeiten." ;
+ Text [ danish ] = "De tilhørende sandsynligheders matrix." ;
+ Text [ french ] = "La matrice des probabilités associées aux données." ;
+ Text [ swedish ] = "Matrisen för de tillhörande sannolikheterna." ;
+ Text [ dutch ] = "De matrix van de bijbehorende kansen." ;
+ Text [ spanish ] = "es un conjunto de probabilidades asociado con valores en intervalo_x." ;
+ Text [ english_us ] = "The array of the associated probabilities." ;
+ Text[ chinese_simplified ] = "Óë x_range ÖÐÊýÖµÏà¶ÔÓ¦µÄÒ»×é¸ÅÂÊÖµ¡£";
+ Text[ russian ] = "Ìíîæåñòâî âåðîÿòíîñòåé, ñîîòâåòñòâóþùèõ çíà÷åíèÿì â õ_äèàïàçîíå.";
+ Text[ polish ] = "Macierz z nale¿¹cymi do niej prawdopodobieñstwami.";
+ Text[ japanese ] = "”͈͂Ɋ܂܂ê‚é‚»‚ꂼ‚ê‚Ì”’l‚ɑΉž‚·‚éŠm—¦¡";
+ Text[ chinese_traditional ] = "»P x_range ¤¤¼Æ­È¬Û¹ïÀ³ªº¤@²Õ·§²v­È¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ÇÍÊãÇáÇÊ ãÞÊÑäÉ ãÚ ÇáÞíã ÇáãæÌæÏÉ Ýí x_range.";
+ Text[ dutch ] = "De matrix van de bijbehorende kansen.";
+ Text[ chinese_simplified ] = "Óë x_range ÖÐÊýÖµÏà¶ÔÓ¦µÄÒ»×é¸ÅÂÊÖµ¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí áíôßóôïé÷ùí ðéèáíïôÞôùí.";
+ Text[ korean ] = "¼ö¹Ý È®·üÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýlgili olasýlýklarýn matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Anfang" ;
+ Text [ english ] = "lower_limit" ;
+ Text [ norwegian ] = "Anfang" ;
+ Text [ italian ] = "limite_inf" ;
+ Text [ portuguese_brazilian ] = "Anfang" ;
+ Text [ portuguese ] = "Limite_inferior" ;
+ Text [ finnish ] = "Anfang" ;
+ Text [ danish ] = "Nedre_grænse" ;
+ Text [ french ] = "Début" ;
+ Text [ swedish ] = "start" ;
+ Text [ dutch ] = "Begin" ;
+ Text [ spanish ] = "límite_inf" ;
+ Text [ english_us ] = "Start" ;
+ Text[ chinese_simplified ] = "lower_limit";
+ Text[ russian ] = "Íèæíèé_ïðåäåë";
+ Text[ polish ] = "dolna_granica";
+ Text[ japanese ] = "‰ºŒÀ";
+ Text[ chinese_traditional ] = "lower_limit";
+ Text[ arabic ] = "Lower_limit";
+ Text[ dutch ] = "Begin";
+ Text[ chinese_simplified ] = "lower_limit";
+ Text[ greek ] = "Áñ÷Þ";
+ Text[ korean ] = "½ÃÀÛ";
+ Text[ turkish ] = "Baþlangýç";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Der Anfang des Werteintervalls, dessen Wahrscheinlichkeiten aufsummiert werden." ;
+ Text [ english ] = "is the lower bound on the value for which you want a probability." ;
+ Text [ norwegian ] = "Der Anfang des Werteintervalls, dessen Wahrscheinlichkeiten aufsummiert werden." ;
+ Text [ italian ] = "è il limite inferiore del valore per il quale si desidera calcolare la probabilità." ;
+ Text [ portuguese_brazilian ] = "Der Anfang des Werteintervalls, dessen Wahrscheinlichkeiten aufsummiert werden." ;
+ Text [ portuguese ] = "representa o limite inferior do valor para o qual procura uma probabilidade." ;
+ Text [ finnish ] = "Der Anfang des Werteintervalls, dessen Wahrscheinlichkeiten aufsummiert werden." ;
+ Text [ danish ] = "Den nedre grænse i det ønskede interval." ;
+ Text [ french ] = "La limite inférieure de l'intervalle de valeurs dont les probabilités doivent être totalisées." ;
+ Text [ swedish ] = "Starten på värdeintervallet vars sannolikheter summeras." ;
+ Text [ dutch ] = "Het begin van het waarde-interval waarvan de kansen worden berekend." ;
+ Text [ spanish ] = "es el límite inferior del valor para el que desea una probabilidad." ;
+ Text [ english_us ] = "The start of the value interval whose probabilities is to be totalled." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ¸ÅÂÊÇóºÍ¼ÆËãµÄÊýֵϽ硣";
+ Text[ russian ] = "Íèæíÿÿ ãðàíèöà çíà÷åíèÿ, äëÿ êîòîðîãî âû÷èñëÿåòñÿ âåðîÿòíîñòü.";
+ Text[ polish ] = "Opcjonalne górne ograniczenie przedzia³u wartoœci, dla którego nale¿y obliczyæ prawdopodobieñstwo.";
+ Text[ japanese ] = "‘ÎÛ‚Æ‚È‚é”’l‚̉ºŒÀB";
+ Text[ chinese_traditional ] = "¥Î¨Ó·§²v¨D©M­pºâªº¼Æ­È¤U¬É¡C";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÏäì ááÞíãÉ ÇáÊí ÊÑíÏ ÇáÇÍÊãÇá áåÇ.";
+ Text[ dutch ] = "Het begin van het waarde-interval waarvan de kansen worden berekend.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ¸ÅÂÊÇóºÍ¼ÆËãµÄÊýֵϽ硣";
+ Text[ greek ] = "Ç áñ÷Þ ôïõ äéáóôÞìáôïò ôçò ôéìÞò, ôïõ ïðïßá èá õðïëïãéóôåß ôï óõíïëéêü Üèñïéóìá ôùí ðéèáíïôÞôùí ôïõ..";
+ Text[ korean ] = "È®·üÀÌ ÃÑ°èµÉ °ª ±¸°£ÀÇ ½ÃÀÛÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Olasýlýklarý toplanacak deðer aralýðýnýn baþlangýcý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Ende" ;
+ Text [ english ] = "upper_limit" ;
+ Text [ norwegian ] = "Ende" ;
+ Text [ italian ] = "limite_sup" ;
+ Text [ portuguese_brazilian ] = "Ende" ;
+ Text [ portuguese ] = "Limite_superior" ;
+ Text [ finnish ] = "Ende" ;
+ Text [ danish ] = "Øvre_grænse" ;
+ Text [ french ] = "Fin" ;
+ Text [ swedish ] = "slut" ;
+ Text [ dutch ] = "Einde" ;
+ Text [ spanish ] = "límite_sup" ;
+ Text [ english_us ] = "End" ;
+ Text[ chinese_simplified ] = "upper_limit";
+ Text[ russian ] = "Âåðõíèé_ïðåäåë";
+ Text[ polish ] = "górna_granica";
+ Text[ japanese ] = "ãŒÀ";
+ Text[ chinese_traditional ] = "upper_limit";
+ Text[ arabic ] = "Upper_limit";
+ Text[ dutch ] = "Einde";
+ Text[ chinese_simplified ] = "upper_limit";
+ Text[ greek ] = "ÔÝëïò";
+ Text[ korean ] = "Á¾·á";
+ Text[ turkish ] = "Son";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Das Ende des Werteintervalls, dessen Wahrscheinlichkeiten aufsummiert werden." ;
+ Text [ english ] = "is the optional upper bound on the value for which you want a probability." ;
+ Text [ norwegian ] = "Das Ende des Werteintervalls, dessen Wahrscheinlichkeiten aufsummiert werden." ;
+ Text [ italian ] = "è il limite superiore facoltativo del valore per il quale si desidera calcolare la probabilità." ;
+ Text [ portuguese_brazilian ] = "Das Ende des Werteintervalls, dessen Wahrscheinlichkeiten aufsummiert werden." ;
+ Text [ portuguese ] = "representa o limite superior facultativo do valor para o qual procura uma probabilidade." ;
+ Text [ finnish ] = "Das Ende des Werteintervalls, dessen Wahrscheinlichkeiten aufsummiert werden." ;
+ Text [ danish ] = "Den øvre grænse i det ønskede interval." ;
+ Text [ french ] = "La limite supérieure de l'intervalle de valeurs dont les probabilités doivent être totalisées." ;
+ Text [ swedish ] = "Slutet på värdeintervallet vars sannolikheter summeras." ;
+ Text [ dutch ] = "Het einde van het waarde-interval waarvan de kansen worden berekend." ;
+ Text [ spanish ] = "es el límite superior opcional del valor para el que desea una probabilidad." ;
+ Text [ english_us ] = "The end of the value interval where the probabilities are to be totalled." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ¸ÅÂÊÇóºÍ¼ÆËãµÄÊýÖµ¿ÉÑ¡ÉϽ硣";
+ Text[ russian ] = "Âåðõíÿÿ ãðàíèöà çíà÷åíèÿ, äëÿ êîòîðîãî òðåáóåòñÿ âû÷èñëèòü âåðîÿòíîñòü.";
+ Text[ polish ] = "Opcjonalne dolne ograniczenie przedzia³u wartoœci, dla którego nale¿y obliczyæ prawdopodobieñstwo.";
+ Text[ japanese ] = "‘ÎÛ‚Æ‚È‚é”’l‚ÌãŒÀB";
+ Text[ chinese_traditional ] = "¥Î¨Ó·§²v¨D©M­pºâªº¼Æ­È¥i¿ï¤W¬É¡C";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÚáì ÇáÇÎÊíÇÑí ááÞíãÉ.";
+ Text[ dutch ] = "Het einde van het waarde-interval waarvan de kansen worden berekend.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ¸ÅÂÊÇóºÍ¼ÆËãµÄÊýÖµ¿ÉÑ¡ÉϽ硣";
+ Text[ greek ] = "Ôï ôÝëïò ôïõ äéáóôÞìáôïò ôçò ôéìÞò, ôïõ ïðïßá èá õðïëïãéóôåß ôï óõíïëéêü Üèñïéóìá ôùí ðéèáíïôÞôùí ôïõ.";
+ Text[ korean ] = "È®·üÀÌ ÃÑ°èµÉ °ª ±¸°£ÀÇ ³¡ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Olasýlýklarý toplanacak deðer aralýðýnýn sonu.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function B #*=-
+ Resource SC_OPCODE_B
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Wahrscheinlichkeit eines Versuchsergebnisses mit der Binomialverteilung." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Berechnet die Wahrscheinlichkeit eines Versuchsergebnisses mit der Binomialverteilung." ;
+ Text [ italian ] = "Restituisce la probabilità di successo di ogni tentativo con la distribuzione binomiale." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Wahrscheinlichkeit eines Versuchsergebnisses mit der Binomialverteilung." ;
+ Text [ portuguese ] = "Calcula a probabilidade de uma variável aleatória seguindo a distribuição binomial." ;
+ Text [ finnish ] = "Berechnet die Wahrscheinlichkeit eines Versuchsergebnisses mit der Binomialverteilung." ;
+ Text [ danish ] = "Beregner sandsynligheden for et forsøgsresultat med binomialfordelingen." ;
+ Text [ french ] = "Renvoie la probabilité d'un résultat de tentative suivant la loi binomiale." ;
+ Text [ swedish ] = "Beräknar sannolikheten för ett försöksresultat med hjälp av binomialfördelningen." ;
+ Text [ dutch ] = "Berekent de kans op succes bij een test met de binomiale verdeling." ;
+ Text [ spanish ] = "Calcula la probabilidad de un ensayo siguiendo la distribución binomial." ;
+ Text [ english_us ] = "Returns the probabilityof a trial result using binomial distribution." ;
+ Text[ chinese_simplified ] = "¼ÆËã¶þÏîʽ·Ö²¼µÄÊÔÑé½á¹û¸ÅÂÊ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò çíà÷åíèå âåðîÿòíîñòè ðåçóëüòàòà èñïûòàíèé ñ áèíîìèàëüíûì ðàñïðåäåëåíèåì.";
+ Text[ polish ] = "Oblicza pojedynczy sk³adnik dwumianowego rozk³adu prawdopodobieñstwa.";
+ Text[ japanese ] = "ŒÂ•Ê€‚Ì“ñ€•ª•z‚ÌŠm—¦‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¤G¶µ¦¡¤À§Gªº¸ÕÅçµ²ªG·§²v¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇÍÊãÇá äÊíÌÉ ÊÌÑÈÉ ÈÊæÒíÚ Ðí ÍÏíä.";
+ Text[ dutch ] = "Berekent de kans op succes bij een test met de binomiale verdeling.";
+ Text[ chinese_simplified ] = "¼ÆËã¶þÏîʽ·Ö²¼µÄÊÔÑé½á¹û¸ÅÂÊ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí ðéèáíüôçôá åíüò äïêéìáóôéêïý áðïôåëÝóìáôïò ìå ôçí äéùíõìéêÞ êáôáíïìÞ.";
+ Text[ korean ] = "ÀÌÇ× ¹èºÐÀ» »ç¿ëÇÏ´Â ½ÇÇè°á°ú¸¦ È®À²À» ¹Ýȯ";
+ Text[ turkish ] = "Binom daðýlým kullanýlan bir deney sonucunun olasýlýðýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_B );
+ 4; 0; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "N" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "N" ;
+ Text [ italian ] = "Tentativi" ;
+ Text [ portuguese_brazilian ] = "N" ;
+ Text [ portuguese ] = "Tentativas" ;
+ Text [ finnish ] = "N" ;
+ Text [ danish ] = "Forsøg" ;
+ Text [ french ] = "Tentatives" ;
+ Text [ swedish ] = "försök" ;
+ Text [ dutch ] = "N" ;
+ Text [ spanish ] = "ensayos" ;
+ Text [ english_us ] = "trials" ;
+ Text[ chinese_simplified ] = "trials";
+ Text[ russian ] = "Èñïûòàíèÿ";
+ Text[ polish ] = "N";
+ Text[ japanese ] = "ŽŽs‰ñ”";
+ Text[ chinese_traditional ] = "trials";
+ Text[ arabic ] = "Trials";
+ Text[ dutch ] = "N";
+ Text[ chinese_simplified ] = "trials";
+ Text[ greek ] = "ÄïêéìÝò";
+ Text[ korean ] = "½ÃÇè¿ë";
+ Text[ turkish ] = "Deney";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Anzahl der Versuche" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Anzahl der Versuche" ;
+ Text [ italian ] = "Numero dei tentativi" ;
+ Text [ portuguese_brazilian ] = "Anzahl der Versuche" ;
+ Text [ portuguese ] = "é o número de tentativas independentes." ;
+ Text [ finnish ] = "Anzahl der Versuche" ;
+ Text [ danish ] = "Antallet af forsøg" ;
+ Text [ french ] = "Nombre de tentatives" ;
+ Text [ swedish ] = "Antalet försök." ;
+ Text [ dutch ] = "Aantal tests" ;
+ Text [ spanish ] = "es el número de los ensayos" ;
+ Text [ english_us ] = "The number of trials." ;
+ Text[ chinese_simplified ] = "ÊÔÑé´ÎÊý";
+ Text[ russian ] = "Êîëè÷åñòâî èñïûòàíèé";
+ Text[ polish ] = "Liczba prób";
+ Text[ japanese ] = "“Æ—§ŽŽs‚̉ñ”B";
+ Text[ chinese_traditional ] = "¸ÕÅ禸¼Æ";
+ Text[ arabic ] = "ÚÏÏ ÇáÊÌÇÑÈ.";
+ Text[ dutch ] = "Aantal tests";
+ Text[ chinese_simplified ] = "ÊÔÑé´ÎÊý";
+ Text[ greek ] = "Áñéèìüò äïêéìþí";
+ Text[ korean ] = "½ÃµµÀÇ È½¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deney sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "W" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "W" ;
+ Text [ italian ] = "probabilità" ;
+ Text [ portuguese_brazilian ] = "W" ;
+ Text [ portuguese ] = "Probabilidade_s" ;
+ Text [ finnish ] = "W" ;
+ Text [ danish ] = "Sandsynlighed_s" ;
+ Text [ french ] = "Probabilité" ;
+ Text [ swedish ] = "sannolikhet" ;
+ Text [ dutch ] = "Kans" ;
+ Text [ spanish ] = "prob_éxito" ;
+ Text [ english_us ] = "SP" ;
+ Text[ chinese_simplified ] = "probability_s";
+ Text[ russian ] = "ÂÅÐÎßÒÍÎÑÒÜ";
+ Text[ polish ] = "P";
+ Text[ japanese ] = "Šm—¦";
+ Text[ chinese_traditional ] = "probability_s";
+ Text[ arabic ] = "Probability_s";
+ Text[ dutch ] = "Kans";
+ Text[ chinese_simplified ] = "probability_s";
+ Text[ greek ] = "Probability_s";
+ Text[ korean ] = "È®·ü";
+ Text[ turkish ] = "Olasýlýk";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Einzelwahrscheinlichkeit eines Versuchsergebnis" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Einzelwahrscheinlichkeit eines Versuchsergebnis" ;
+ Text [ italian ] = "Probabilità singola per una prova" ;
+ Text [ portuguese_brazilian ] = "Einzelwahrscheinlichkeit eines Versuchsergebnis" ;
+ Text [ portuguese ] = "é a probabilidade de sucesso em cada tentativa." ;
+ Text [ finnish ] = "Einzelwahrscheinlichkeit eines Versuchsergebnis" ;
+ Text [ danish ] = "Enkeltsandsynligheden for et forsøgsresultat." ;
+ Text [ french ] = "La probabilité individuelle d'un succès de tentative." ;
+ Text [ swedish ] = "Enskild sannolikhet för ett försöksresultat." ;
+ Text [ dutch ] = "Kans op succes bij een test." ;
+ Text [ spanish ] = "cada probabilidad de un resultado de ensayo" ;
+ Text [ english_us ] = "The individual probability of a trial result." ;
+ Text[ chinese_simplified ] = "µ¥¸öÊÔÑéµÄ³É¹¦¸ÅÂÊ";
+ Text[ russian ] = "Âåðîÿòíîñòü óñïåõà êàæäîãî ðåçóëüòàòà èñïûòàíèé";
+ Text[ polish ] = "Prawdopodobieñstwo sukcesu próby.";
+ Text[ japanese ] = "ŽŽsŒ‹‰Ê‚Ì1‰ñ‚ ‚½‚è‚ÌŠm—¦B";
+ Text[ chinese_traditional ] = "³æ­Ó¸ÕÅ窺¦¨¥\\·§²v";
+ Text[ arabic ] = "ÇÍÊãÇá ÇáäÌÇÍ Ýí ßá ÊÌÑÈÉ.";
+ Text[ dutch ] = "Kans op succes bij een test.";
+ Text[ chinese_simplified ] = "µ¥¸öÊÔÑéµÄ³É¹¦¸ÅÂÊ";
+ Text[ greek ] = "ÌåìïíùìÝíç ðéèáíüôçôá åíüò áðïôåëÝóìáôïò äïêéìÞò";
+ Text[ korean ] = "½ÇÇè°á°úÀÇ °³º° È®·ü";
+ Text[ turkish ] = "Deney sonucunun bireysel olasýlýðý";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "S_1" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "S 1" ;
+ Text [ italian ] = "T_1" ;
+ Text [ portuguese_brazilian ] = "S 1" ;
+ Text [ portuguese ] = "Limite_inf" ;
+ Text [ finnish ] = "S 1" ;
+ Text [ danish ] = "Nedre_grænse" ;
+ Text [ french ] = "L_1" ;
+ Text [ swedish ] = "G_1" ;
+ Text [ dutch ] = "L 1" ;
+ Text [ spanish ] = "límite_inf" ;
+ Text [ english_us ] = "T_1" ;
+ Text[ chinese_simplified ] = "T_1";
+ Text[ russian ] = "T_1";
+ Text[ polish ] = "T_1";
+ Text[ japanese ] = "‰ºŒÀ";
+ Text[ chinese_traditional ] = "T_1";
+ Text[ arabic ] = "T_1";
+ Text[ dutch ] = "L 1";
+ Text[ chinese_simplified ] = "T_1";
+ Text[ greek ] = "T_1";
+ Text[ korean ] = "T_1";
+ Text[ turkish ] = "T_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Untere Schranke der Versuchsanzahl." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Untere Schranke der Versuchsanzahl." ;
+ Text [ italian ] = "Limite inferiore del numero di tentativi" ;
+ Text [ portuguese_brazilian ] = "Untere Schranke der Versuchsanzahl." ;
+ Text [ portuguese ] = "é o número inferior da possibilidade de tentativas." ;
+ Text [ finnish ] = "Untere Schranke der Versuchsanzahl." ;
+ Text [ danish ] = "Nedre grænse for antal forsøg." ;
+ Text [ french ] = "Limite inférieure du nombre de tentatives." ;
+ Text [ swedish ] = "Undre gräns för försöksantal." ;
+ Text [ dutch ] = "Onderste limiet van het aantal tests" ;
+ Text [ spanish ] = "es el límite inferior de la cantidad de ensayos." ;
+ Text [ english_us ] = "Lower limit for the number of trials." ;
+ Text[ chinese_simplified ] = "ÊÔÑé³É¹¦´ÎÊýµÄÏÂÏÞ¡£";
+ Text[ russian ] = "Êîëè÷åñòâî èñïûòàíèé (íèæíèé ïðåäåë).";
+ Text[ polish ] = "Liczba prób (dolny limit).";
+ Text[ japanese ] = "ŽŽs‰ñ”‚̉ºŒÀB";
+ Text[ chinese_traditional ] = "¸ÕÅ禨¥\\¦¸¼Æªº¤U­­¡C";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÏäì áÚÏÏ ÇáÊÌÇÑÈ.";
+ Text[ dutch ] = "Onderste limiet van het aantal tests";
+ Text[ chinese_simplified ] = "ÊÔÑé³É¹¦´ÎÊýµÄÏÂÏÞ¡£";
+ Text[ greek ] = "Áñéèìüò äïêéìþí (êÜôù üñéï)";
+ Text[ korean ] = "ÃÖ¼Ò ½ÇÇè ¼ö";
+ Text[ turkish ] = "Deney sayýsý alt limiti.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "S_2" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "S 2" ;
+ Text [ italian ] = "T_2" ;
+ Text [ portuguese_brazilian ] = "S 2" ;
+ Text [ portuguese ] = "Limite_sup" ;
+ Text [ finnish ] = "S 2" ;
+ Text [ danish ] = "Øvre_grænse" ;
+ Text [ french ] = "L_2" ;
+ Text [ swedish ] = "G_2" ;
+ Text [ dutch ] = "L 2" ;
+ Text [ spanish ] = "límite_sup" ;
+ Text [ english_us ] = "T_2" ;
+ Text[ chinese_simplified ] = "T_2";
+ Text[ russian ] = "T_2";
+ Text[ polish ] = "T_2";
+ Text[ japanese ] = "ãŒÀ";
+ Text[ chinese_traditional ] = "T_2";
+ Text[ arabic ] = "T_2";
+ Text[ dutch ] = "L 2";
+ Text[ chinese_simplified ] = "T_2";
+ Text[ greek ] = "T_2";
+ Text[ korean ] = "T_2";
+ Text[ turkish ] = "T_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Obere Schranke der Versuchsanzahl." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Obere Schranke der Versuchsanzahl." ;
+ Text [ italian ] = "Limite superiore del numero di tentativi" ;
+ Text [ portuguese_brazilian ] = "Obere Schranke der Versuchsanzahl." ;
+ Text [ portuguese ] = "é o número superior da possibilidade de tentativas." ;
+ Text [ finnish ] = "Obere Schranke der Versuchsanzahl." ;
+ Text [ danish ] = "Øvre grænse for antal forsøg." ;
+ Text [ french ] = "Limite supérieure du nombre de tentatives." ;
+ Text [ swedish ] = "Övre gräns för försöksantal." ;
+ Text [ dutch ] = "Bovenste limiet van het aantal tests." ;
+ Text [ spanish ] = "es el límite superior de la cantidad de ensayos." ;
+ Text [ english_us ] = "Upper limit for the number of trials." ;
+ Text[ chinese_simplified ] = "ÊÔÑé³É¹¦´ÎÊýµÄÉÏÏÞ¡£";
+ Text[ russian ] = "Êîëè÷åñòâî èñïûòàíèé (âåðõíèé ïðåäåë).";
+ Text[ polish ] = "Liczba prób (górny limit).";
+ Text[ japanese ] = "ŽŽs‰ñ”‚ÌãŒÀB";
+ Text[ chinese_traditional ] = "¸ÕÅ禨¥\\¦¸¼Æªº¤W­­¡C";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÞÕì áÚÏÏ ÇáÊÌÇÑÈ.";
+ Text[ dutch ] = "Bovenste limiet van het aantal tests.";
+ Text[ chinese_simplified ] = "ÊÔÑé³É¹¦´ÎÊýµÄÉÏÏÞ¡£";
+ Text[ greek ] = "Áñéèìüò äïêéìþí (¢íù üñéï)";
+ Text[ korean ] = "ÃÖ´ë ½ÇÇè ¼ö";
+ Text[ turkish ] = "Deney sayýsý üst limiti.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function PHI #*=-
+ Resource SC_OPCODE_PHI
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Verteilungsfunktion zur Standardnormalverteilung" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Werte der Verteilungsfunktion zur Standardnormalverteilung" ;
+ Text [ italian ] = "Restituisce i valori della funzione di distribuzione per una distribuzione normale standard." ;
+ Text [ portuguese_brazilian ] = "Werte der Verteilungsfunktion zur Standardnormalverteilung" ;
+ Text [ portuguese ] = "Devolve os valores da função de distribuição para uma distribuição padrão normal." ;
+ Text [ finnish ] = "Werte der Verteilungsfunktion zur Standardnormalverteilung" ;
+ Text [ danish ] = "Værdier for standardnormalfordelingen" ;
+ Text [ french ] = "Valeurs de la fonction de distribution pour la distribution normale standard." ;
+ Text [ swedish ] = "Värdet av fördelningsfunktionen för standardnormalfördelningen." ;
+ Text [ dutch ] = "Waarden van de verdelingsfunctie voor een standaardnormale verdeling." ;
+ Text [ spanish ] = "Devuelve los valores de la función de distribución para una distribución normal estándar" ;
+ Text [ english_us ] = "Values of the distribution function for a standard normal distribution." ;
+ Text[ chinese_simplified ] = "±ê×¼Õý̬·Ö²¼µÄ·Ö²¼º¯ÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèÿ ôóíêöèè ðàñïðåäåëåíèÿ äëÿ ñòàíäàðòíîãî íîðìàëüíîãî ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Wartoœci funkcji rozk³adu dla standardowego rozk³adu normalnego.";
+ Text[ japanese ] = "•W€³‹K•ª•zŠÖ”‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¼Ð·Ç¥¿ºA¤À§Gªº¤À§G¨ç¼Æ­È¡C";
+ Text[ arabic ] = "Þíã ÏÇáÉ ÇáÊæÒíÚ ááÊæÒíÚ ÇáØÈíÚí ÇáÞíÇÓí.";
+ Text[ dutch ] = "Waarden van de verdelingsfunctie voor een standaardnormale verdeling.";
+ Text[ chinese_simplified ] = "±ê×¼Õý̬·Ö²¼µÄ·Ö²¼º¯ÊýÖµ¡£";
+ Text[ greek ] = "ÔéìÝò ôçò óõíÜñôçóçò êáôáíïìÞò ãéá ôçí ôõðéêÞ êáíïíéêÞ êáôáíïìÞ";
+ Text[ korean ] = "Ç¥ÁØ ÀÏ¹Ý ³ª´©±â¸¦ À§ÇÑ ³ª´©±âÇÔ¼öÀÇ °ª";
+ Text[ turkish ] = "Daðýtým fonksiyonunun, standart normal daðýtým ile ilgili deðerleri.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_PHI );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die Standardnormalverteilung berechnet wird." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Wert, zu dem die Standardnormalverteilung berechnet wird." ;
+ Text [ italian ] = "Il valore per il quale calcolare la distribuzione normale standard." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die Standardnormalverteilung berechnet wird." ;
+ Text [ portuguese ] = "é o valor para o qual deseja calcular a distribuição padrão normal." ;
+ Text [ finnish ] = "Der Wert, zu dem die Standardnormalverteilung berechnet wird." ;
+ Text [ danish ] = "Den værdi som standardnormalfordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle vous voulez calculer la distribution normale standard." ;
+ Text [ swedish ] = "Värdet för vilket standardnormalfördelningen beräknas." ;
+ Text [ dutch ] = "De waarde waarvan de standaardnormale verdeling wordt berekend." ;
+ Text [ spanish ] = "representa el valor para el que se desea obtener la distribución normal estándar." ;
+ Text [ english_us ] = "The value for which the standard normal distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËã±ê×¼Õý̬·Ö²¼µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî âû÷èñëÿåòñÿ ñòàíäàðòíîå íîðìàëüíîå ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony standardowy rozk³ad normalny.";
+ Text[ japanese ] = "•W€³‹K•ª•zŠÖ”‚É‘ã“ü‚·‚é’lB";
+ Text[ chinese_traditional ] = "¥Î¤_­pºâ¼Ð·Ç¥¿ºA¤À§Gªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÊí ÓíÊã ÍÓÇÈ ÇáÊæÒíÚ ÇáØÈíÚí ÇáÞíÇÓí áåÇ.";
+ Text[ dutch ] = "De waarde waarvan de standaardnormale verdeling wordt berekend.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËã±ê×¼Õý̬·Ö²¼µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç ôõðéêÞ êáíïíéêÞ êáôáíïìÞ.";
+ Text[ korean ] = "»êÃâµÉ Ç¥ÁØ ÀÏ¹Ý ¹èºÐ¿¡ ´ëÇÑ °ª";
+ Text[ turkish ] = "Standart normal daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GAUSS #*=-
+ Resource SC_OPCODE_GAUSS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Integralwerte der Standardnormalverteilung." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Integralwerte der Standardnormalverteilung." ;
+ Text [ italian ] = "Restituisce i valori integrali della distribuzione normale standard." ;
+ Text [ portuguese_brazilian ] = "Integralwerte der Standardnormalverteilung." ;
+ Text [ portuguese ] = "Devolve os valores da integral de distribuição normal padrão." ;
+ Text [ finnish ] = "Integralwerte der Standardnormalverteilung." ;
+ Text [ danish ] = "Integralværdier for standardnormalfordelingen." ;
+ Text [ french ] = "Renvoie les valeurs de l'intégrale de la distribution normale standard." ;
+ Text [ swedish ] = "Integralvärdet av standardnormalfördelningen." ;
+ Text [ dutch ] = "Integrale waarden van de standaardnormale verdeling." ;
+ Text [ spanish ] = "Devuelve el valor de la integral de la distribución normal estándar." ;
+ Text [ english_us ] = "Returns the integral values of the standard normal cumulative distribution." ;
+ Text[ chinese_simplified ] = "±ê×¼Õý̬·Ö²¼µÄ»ý·ÖÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò èíòåãðàëüíîå çíà÷åíèå ñòàíäàðòíîãî íîðìàëüíîãî ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Wyznacza standardowy rozk³ad normalny.";
+ Text[ japanese ] = "•W€³‹K•ª•z‚ÌÏ•ª’lB";
+ Text[ chinese_traditional ] = "¼Ð·Ç¥¿ºA¤À§Gªº¿n¤À­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÊæÒíÚ ÇáÊÑÇßãí ÇáØÈíÚí ÇáÞíÇÓí.";
+ Text[ dutch ] = "Integrale waarden van de standaardnormale verdeling.";
+ Text[ chinese_simplified ] = "±ê×¼Õý̬·Ö²¼µÄ»ý·ÖÖµ¡£";
+ Text[ greek ] = "ÔéìÝò ïëïêëçñþìáôïò ôçò ôõðéêÞò êáíïíéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Ç¥ÁØ ÀÏ¹Ý ´©Àû ¹èºÐÀÇ Á¤¼ö °ª ¹Ýȯ";
+ Text[ turkish ] = "Standart normal sapmanýn integral deðerleri.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_GAUSS );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "Z (richiesto)" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Z" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "z" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "z";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "z";
+ Text[ arabic ] = "Z";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "z";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem der Integralwert der Standardnormalverteilung berechnet wird" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Wert, zu dem der Integralwert der Standardnormalverteilung berechnet wird" ;
+ Text [ italian ] = "Il valore del quale si vuole la distribuzione normale standard" ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem der Integralwert der Standardnormalverteilung berechnet wird" ;
+ Text [ portuguese ] = "é o valor para o qual deseja calcular a distribuição normal padrão." ;
+ Text [ finnish ] = "Der Wert, zu dem der Integralwert der Standardnormalverteilung berechnet wird" ;
+ Text [ danish ] = "Den værdi som standardnormalfordelingens integralværdi skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle vous voulez calculer la distribution normale standard." ;
+ Text [ swedish ] = "Värdet som standardnormalfördelningen skall beräknas för" ;
+ Text [ dutch ] = "De waarde, waarvoor de integrale waarde van de standaardnormale verdeling wordt berekend." ;
+ Text [ spanish ] = "es el valor para el cual se desea calcular el valor de la integral de la distribución normal estándar" ;
+ Text [ english_us ] = "The value for which the integral value of the standard normal distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËã±ê×¼Õý̬·Ö²¼»ý·ÖÖµµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî íåîáõîäèìî âû÷èñëèòü èíòåãðàëüíîå çíà÷åíèå ñòàíäàðòíîãî íîðìàëüíîãî ðàñïðåäàëåíèÿ.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony standardowy rozk³ad normalny.";
+ Text[ japanese ] = "•W€³‹K•ª•z‚ÌÏ•ª’l‚ð‹‚ß‚é”’lB";
+ Text[ chinese_traditional ] = "¥Î©ó­pºâ¼Ð·Ç¥¿ºA¤À§G¿n¤À­Èªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÍÓÇÈ ÇáÊæÒíÚ ÇáØÈíÚí ÇáÞíÇÓí áåÇ.";
+ Text[ dutch ] = "De waarde, waarvoor de integrale waarde van de standaardnormale verdeling wordt berekend.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËã±ê×¼Õý̬·Ö²¼»ý·ÖÖµµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç ôéìÞ ôïõ ïëïêëçñþìáôïò ôçò ôõðéêÞò êáíïíéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "»êÃâµÉ Ç¥ÁØ ÀÏ¹Ý ¹èºÐÀÇ Á¤¼ö °ª ´ëÇÑ °ª";
+ Text[ turkish ] = "Standart normal sapmanýn integral deðeri hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function FISHER #*=-
+ Resource SC_OPCODE_FISHER
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnung der Fisher-Transformation" ;
+ Text [ english ] = "Returns the Fisher transformation at x." ;
+ Text [ norwegian ] = "Berechnung der Fisher-Transformation" ;
+ Text [ italian ] = "Restituisce la trasformazione di Fisher." ;
+ Text [ portuguese_brazilian ] = "Berechnung der Fisher-Transformation" ;
+ Text [ portuguese ] = "Devolve a transformação Fisher." ;
+ Text [ finnish ] = "Berechnung der Fisher-Transformation" ;
+ Text [ danish ] = "Beregner Fisher-transformationen" ;
+ Text [ french ] = "Renvoie la transformation de Fisher." ;
+ Text [ swedish ] = "Beräknar Fishertransformationen." ;
+ Text [ dutch ] = "Berekent de Fisher-Transformatie." ;
+ Text [ spanish ] = "Devuelve la transformación Fisher o coeficiente Z" ;
+ Text [ english_us ] = "Returns the Fisher transformation." ;
+ Text[ chinese_simplified ] = "¼ÆËã Fisher ±ä»»¡£";
+ Text[ russian ] = "Âîçâðàùàåò ïðåîáðàçîâàíèå Ôèøåðà.";
+ Text[ polish ] = "Oblicza przekszta³cenie Fishera";
+ Text[ japanese ] = "Žw’肵‚½”’l‚ɑ΂·‚ę́¯¼¬°•ÏŠ·‚ð•Ô‚µ‚Ü‚·¡";
+ Text[ chinese_traditional ] = "­pºâ Fisher -ÅÜ´«";
+ Text[ arabic ] = "ÍÓÇÈ ÊÍæíá Fisher.";
+ Text[ dutch ] = "Berekent de Fisher-Transformatie.";
+ Text[ chinese_simplified ] = "¼ÆËã Fisher ±ä»»¡£";
+ Text[ greek ] = "Õðïëïãéóìüò ôïõ ìåôáó÷çìáôéóìïý Fisher.";
+ Text[ korean ] = "Fisher º¯È¯À» ¹Ýȯ";
+ Text[ turkish ] = "Fisher transformasyonunun hesaplanmasý";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_FISHER );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, der transformiert wird (-1 < WERT < 1)." ;
+ Text [ english ] = "is a numeric value for which you want the transformation." ;
+ Text [ norwegian ] = "Der Wert, der transformiert wird (-1 < WERT < 1)." ;
+ Text [ italian ] = "è un valore numerico di cui si desidera la trasformazione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der transformiert wird (-1 < WERT < 1)." ;
+ Text [ portuguese ] = "é um valor numérico a ser transformado." ;
+ Text [ finnish ] = "Der Wert, der transformiert wird (-1 < WERT < 1)." ;
+ Text [ danish ] = "Værdien som skal transformeres (-1 < VÆRDI < 1)." ;
+ Text [ french ] = "La valeur pour laquelle vous voulez effectuer la transformation (-1 < VALEUR < 1)." ;
+ Text [ swedish ] = "Värdet som transformeras. (-1 < VÄRDE < 1)" ;
+ Text [ dutch ] = "De waarde die wordt getransformeerd (-1 < WAARDE < 1)." ;
+ Text [ spanish ] = "es el valor numérico para el cual se desea calcular la transformación." ;
+ Text [ english_us ] = "The value to be transformed (-1 < VALUE < 1)." ;
+ Text[ chinese_simplified ] = "ÐèÒª±ä»»µÄÊýÖµ (-1 < ÊýÖµ < 1)¡£";
+ Text[ russian ] = "Òðàíñôîðìèðóåìîå ÷èñëîâîå çíà÷åíèå (÷èñëî â èíòåðâàëå îò -1 äî 1).";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ przekszta³cona (-1 < x < 1).";
+ Text[ japanese ] = "•ÏŠ·‚·‚é”’l(-1 < ’l < 1)B";
+ Text[ chinese_traditional ] = "»Ý­nÅÜ´«ªº¼Æ­È (-1 < ¼Æ­È < 1)¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÊí ÊÑíÏ ÊÍæíáåÇ (ÑÞã Èíä -1 æ 1¡ ãÇ ÚÏÇ -1 æ 1).";
+ Text[ dutch ] = "De waarde die wordt getransformeerd (-1 < WAARDE < 1).";
+ Text[ chinese_simplified ] = "ÐèÒª±ä»»µÄÊýÖµ (-1 < ÊýÖµ < 1)¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ïðïßáò èá ãßíåé ìåôáó÷çìáôéóìüò (-1 < ÔÉÌÇ < 1).";
+ Text[ korean ] = "º¯È¯µÉ °ª (-1 < °ª < 1).";
+ Text[ turkish ] = "Dönüþtürülecek deðer (-1 < DEÐER < 1).";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function FISHERINV #*=-
+ Resource SC_OPCODE_FISHER_INV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnung der inversen Fisher-Transformation" ;
+ Text [ english ] = "Returns the inverse of the Fisher transformation." ;
+ Text [ norwegian ] = "Berechnung der inversen Fisher-Transformation" ;
+ Text [ italian ] = "Restituisce l'inversa della trasformazione di Fisher." ;
+ Text [ portuguese_brazilian ] = "Berechnung der inversen Fisher-Transformation" ;
+ Text [ portuguese ] = "Devolve o inverso da transformação Fisher." ;
+ Text [ finnish ] = "Berechnung der inversen Fisher-Transformation" ;
+ Text [ danish ] = "Beregner den inverse Fisher-transformation" ;
+ Text [ french ] = "Renvoie la transformation de Fisher inverse." ;
+ Text [ swedish ] = "Beräkning av den inversa Fischertransformationen." ;
+ Text [ dutch ] = "Berekent de inverse Fisher-transformatie" ;
+ Text [ spanish ] = "devuelve la función inversa de la transformación Fisher" ;
+ Text [ english_us ] = "Returns the inverse of the Fisher transformation." ;
+ Text[ chinese_simplified ] = "¼ÆËã Fisher ±ä»»µÄÄ溯ÊýÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò îáðàòíîå ïðåîáðàçîâàíèå Ôèøåðà.";
+ Text[ polish ] = "Oblicza odwrotne przekszta³cenie Fishera.";
+ Text[ japanese ] = "Žw’肵‚½”’l‚ɑ΂·‚ę́¯¼¬°•ÏŠ·‚Ì‹tŠÖ”‚ð•Ô‚µ‚Ü‚·¡";
+ Text[ chinese_traditional ] = "­pºâ Fisher ÅÜ´«ªº°f¨ç¼Æ­È¡C";
+ Text[ arabic ] = "ÍÓÇÈ ÊÍæíá Fisher ÇáÚßÓí.";
+ Text[ dutch ] = "Berekent de inverse Fisher-transformatie";
+ Text[ chinese_simplified ] = "¼ÆËã Fisher ±ä»»µÄÄ溯ÊýÖµ¡£";
+ Text[ greek ] = "Õðïëïãéóìüò ôïõ áíôßóôñïöïõ ìåôáó÷çìáôéóìïý Fisher.";
+ Text[ korean ] = "¿ª Fisher º¯È¯À» ¹Ýȯ.";
+ Text[ turkish ] = "Ters Fisher transformasyonunun hesaplanmasý";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_FISHERINV );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "y" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "y" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Y" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "y" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "y";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "y";
+ Text[ arabic ] = "Y";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "y";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, der rücktransformiert wird. : Der Wert, der r³cktransformiert wird. */
+ Text = "Der Wert, der rücktransformiert wird." ;
+ Text [ english ] = "is the value for which you want to perform the inverse of the transformation." ;
+ Text [ norwegian ] = "Der Wert, der rücktransformiert wird." ;
+ Text [ italian ] = "è il valore per il quale si desidera eseguire l'inversa della trasformazione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der rücktransformiert wird." ;
+ Text [ portuguese ] = "é o valor para o qual se deseja o inverso da transformação." ;
+ Text [ finnish ] = "Der Wert, der rücktransformiert wird." ;
+ Text [ danish ] = "Værdien som den inverse transformation skal udføres på." ;
+ Text [ french ] = "La valeur pour laquelle vous voulez effectuer la transformation inverse." ;
+ Text [ swedish ] = "Värdet som återtransformeras." ;
+ Text [ dutch ] = "De waarde waarop inverse rransformatie toegepast wordt." ;
+ Text [ spanish ] = "es el valor al que se le realizará la transformación inversa." ;
+ Text [ english_us ] = "The value that is to be transformed back." ;
+ Text[ chinese_simplified ] = "ÐèÒª½øÐÐÄæ±ä»»µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî ïðîèçâîäèòñÿ îáðàòíîå ïðåîáðàçîâàíèå.";
+ Text[ polish ] = "Wartoœæ, dla której zostanie wyznaczona odwrotnoœæ transformacji.";
+ Text[ japanese ] = "‹t•ÏŠ·‚Ì‘ÎÛ‚Æ‚È‚é’l‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "»Ý­n¶i¦æ°fÅÜ´«ªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÊí ÊÑíÏ ÊÍæíáåÇ ÚßÓíÇð.";
+ Text[ dutch ] = "De waarde waarop inverse rransformatie toegepast wordt.";
+ Text[ chinese_simplified ] = "ÐèÒª½øÐÐÄæ±ä»»µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá åêôåëåóôåß ç áíôéóôñïöÞ ôïõ ìåôáó÷çìáôéóìïý.";
+ Text[ korean ] = "º¯ÇüµÉ °ª";
+ Text[ turkish ] = "Geriye dönüþtürülen deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function BINOMVERT #*=-
+ Resource SC_OPCODE_BINOM_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Binomialverteilung." ;
+ Text [ english ] = "Returns the individual term binomial distribution probability." ;
+ Text [ norwegian ] = "Werte der Binomialverteilung." ;
+ Text [ italian ] = "Restituisce la distribuzione binomiale." ;
+ Text [ portuguese_brazilian ] = "Werte der Binomialverteilung." ;
+ Text [ portuguese ] = "Calcula a probabilidade de uma variável aleatória seguindo a distribuição binomial." ;
+ Text [ finnish ] = "Werte der Binomialverteilung." ;
+ Text [ danish ] = "Værdier for binomialfordelingen" ;
+ Text [ french ] = "Valeurs la distribution binomiale." ;
+ Text [ swedish ] = "Binomialfördelningens värden." ;
+ Text [ dutch ] = "Geeft als resultaat de binomiale verdeling." ;
+ Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria discreta siguiendo una distribución binomial." ;
+ Text [ english_us ] = "Values of the binomial distribution." ;
+ Text[ chinese_simplified ] = "¶þÏîʽ·Ö²¼µÄ¸ÅÂÊÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò îòäåëüíîå çíà÷åíèå áèíîìèàëüíîãî ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Wyznacza rozk³ad dwumianowy.";
+ Text[ japanese ] = "ŒÂ•Ê€‚Ì“ñ€•ª•z‚ÌŠm—¦‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤G¶µ¦¡¤À§Gªº·§²v­È¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ Ðí ÇáÍÏíä.";
+ Text[ dutch ] = "Geeft als resultaat de binomiale verdeling.";
+ Text[ chinese_simplified ] = "¶þÏîʽ·Ö²¼µÄ¸ÅÂÊÖµ¡£";
+ Text[ greek ] = "ÔéìÝò ôçò äéùíõìéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "ÀÌÇ× ¹èºÐÀÇ °ª.";
+ Text[ turkish ] = "Binom daðýtýmýnýn deðerleri.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_BINOMVERT );
+ 4; 0; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "X" ;
+ Text [ english ] = "number_s" ;
+ Text [ norwegian ] = "X" ;
+ Text [ italian ] = "num_successi" ;
+ Text [ portuguese_brazilian ] = "X" ;
+ Text [ portuguese ] = "Núm_s" ;
+ Text [ finnish ] = "X" ;
+ Text [ danish ] = "Tal_s" ;
+ Text [ french ] = "X" ;
+ Text [ swedish ] = "x" ;
+ Text [ dutch ] = "X" ;
+ Text [ spanish ] = "X" ;
+ Text [ english_us ] = "X" ;
+ Text[ chinese_simplified ] = "number_s";
+ Text[ russian ] = "X";
+ Text[ polish ] = "X";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number_s";
+ Text[ arabic ] = "Number_s";
+ Text[ dutch ] = "X";
+ Text[ chinese_simplified ] = "number_s";
+ Text[ greek ] = "×";
+ Text[ korean ] = "X";
+ Text[ turkish ] = "X";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Anzahl der Erfolge in der Versuchsreihe." ;
+ Text [ english ] = "is the number of successes in trials." ;
+ Text [ norwegian ] = "Die Anzahl der Erfolge in der Versuchsreihe." ;
+ Text [ italian ] = "è il numero dei successi in prove." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Erfolge in der Versuchsreihe." ;
+ Text [ portuguese ] = "é o número de tentativas bem sucedidas." ;
+ Text [ finnish ] = "Die Anzahl der Erfolge in der Versuchsreihe." ;
+ Text [ danish ] = "Antallet af gunstige udfald af forsøgene." ;
+ Text [ french ] = "Le nombre de succès dans la série de tentatives." ;
+ Text [ swedish ] = "Antalet framgångar i en rad försök." ;
+ Text [ dutch ] = "Het aantal successen in een reeks experimenten." ;
+ Text [ spanish ] = "es el número de éxitos en los ensayos." ;
+ Text [ english_us ] = "The number of successes in a series of trials." ;
+ Text[ chinese_simplified ] = "ÊÔÑéϵÁеijɹ¦´ÎÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî óñïåøíûõ èñïûòàíèé.";
+ Text[ polish ] = "Liczba sukcesów podczas prób.";
+ Text[ japanese ] = "ŽŽs‰ñ”‚ÉŠÜ‚Ü‚ê‚鬌÷‚̉ñ”‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¸ÕÅç¨t¦Cªº¦¨¥\\¦¸¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáäÌÇÍÇÊ Ýí ÓáÓáÉ ÇáÊÌÇÑÈ.";
+ Text[ dutch ] = "Het aantal successen in een reeks experimenten.";
+ Text[ chinese_simplified ] = "ÊÔÑéϵÁеijɹ¦´ÎÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí åðéôõ÷éþí ôçò óåéñÜò äïêéìþí.";
+ Text[ korean ] = "ÀÏ·ÃÀÇ ½Ãµµ¿¡¼­ ¼º°øÇÑ È½¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deney dizisindeki baþarý sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "N" ;
+ Text [ english ] = "trials" ;
+ Text [ norwegian ] = "N" ;
+ Text [ italian ] = "prove" ;
+ Text [ portuguese_brazilian ] = "N" ;
+ Text [ portuguese ] = "Tentativa_s" ;
+ Text [ finnish ] = "N" ;
+ Text [ danish ] = "Forsøg" ;
+ Text [ french ] = "Tentatives" ;
+ Text [ swedish ] = "försök" ;
+ Text [ dutch ] = "N" ;
+ Text [ spanish ] = "ensayos" ;
+ Text [ english_us ] = "trials" ;
+ Text[ chinese_simplified ] = "trials";
+ Text[ russian ] = "Èñïûòàíèÿ";
+ Text[ polish ] = "Próby";
+ Text[ japanese ] = "ŽŽs‰ñ”";
+ Text[ chinese_traditional ] = "trials";
+ Text[ arabic ] = "Trials";
+ Text[ dutch ] = "N";
+ Text[ chinese_simplified ] = "trials";
+ Text[ greek ] = "ÄïêéìÝò";
+ Text[ korean ] = "½ÃÇè¿ë";
+ Text[ turkish ] = "Deney";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Gesamtanzahl der Versuche." ;
+ Text [ english ] = "is the number of independent trials." ;
+ Text [ norwegian ] = "Die Gesamtanzahl der Versuche." ;
+ Text [ italian ] = "è il numero di prove indipendenti." ;
+ Text [ portuguese_brazilian ] = "Die Gesamtanzahl der Versuche." ;
+ Text [ portuguese ] = "é o número de tentativas independentes." ;
+ Text [ finnish ] = "Die Gesamtanzahl der Versuche." ;
+ Text [ danish ] = "Det samlede antal forsøg." ;
+ Text [ french ] = "Le nombre de tentatives." ;
+ Text [ swedish ] = "Det totala antalet försök." ;
+ Text [ dutch ] = "Het totale aantal tests." ;
+ Text [ spanish ] = "es el número de ensayos independientes." ;
+ Text [ english_us ] = "The total number of trials." ;
+ Text[ chinese_simplified ] = "ÊÔÑé×Ü´ÎÊý¡£";
+ Text[ russian ] = "×èñëî íåçàâèñèìûõ èñïûòàíèé.";
+ Text[ polish ] = "Ogólna liczba prób.";
+ Text[ japanese ] = "“Æ—§ŽŽs‚̉ñ”B";
+ Text[ chinese_traditional ] = "¸ÕÅçÁ`¦¸¼Æ¡C";
+ Text[ arabic ] = "ÇáÚÏÏ ÇáÅÌãÇáí ááÊÌÇÑÈ.";
+ Text[ dutch ] = "Het totale aantal tests.";
+ Text[ chinese_simplified ] = "ÊÔÑé×Ü´ÎÊý¡£";
+ Text[ greek ] = "Ôï óõíïëéêü ðëÞèïò ôùí äïêéìþí.";
+ Text[ korean ] = "½ÃµµÀÇ ÃÑ È½¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Toplam deney sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "W" ;
+ Text [ english ] = "probability_s" ;
+ Text [ norwegian ] = "W" ;
+ Text [ italian ] = "probabilità_s" ;
+ Text [ portuguese_brazilian ] = "W" ;
+ Text [ portuguese ] = "Probabilidades_s" ;
+ Text [ finnish ] = "W" ;
+ Text [ danish ] = "Sandsynlighed_s" ;
+ Text [ french ] = "Probabilité" ;
+ Text [ swedish ] = "sannolikhet" ;
+ Text [ dutch ] = "K" ;
+ Text [ spanish ] = "prob_éxito" ;
+ Text [ english_us ] = "SP" ;
+ Text[ chinese_simplified ] = "probabiltiy_s";
+ Text[ russian ] = "ÂÅÐÎßÒÍÎÑÒÜ";
+ Text[ polish ] = "prawdopodob_s";
+ Text[ japanese ] = "¬Œ÷—¦";
+ Text[ chinese_traditional ] = "probabiltiy_s";
+ Text[ arabic ] = "Probability_s";
+ Text[ dutch ] = "K";
+ Text[ chinese_simplified ] = "probabiltiy_s";
+ Text[ greek ] = "Probability_s";
+ Text[ korean ] = "È®·ü";
+ Text[ turkish ] = "Olasýlýk";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ english ] = "is the probability of success on each trial." ;
+ Text [ norwegian ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ italian ] = "è la probabilità di successo per ciascuna prova." ;
+ Text [ portuguese_brazilian ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ portuguese ] = "é a probabilidade de sucesso em cada tentativa." ;
+ Text [ finnish ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ danish ] = "Sandsynligheden for et gunstigt udfald." ;
+ Text [ french ] = "La probabilité de succès d'une tentative." ;
+ Text [ swedish ] = "Sannolikheten att ett försök lyckas." ;
+ Text [ dutch ] = "De kans op succes bij een experiment." ;
+ Text [ spanish ] = "es la probabilidad de éxito en cada ensayo." ;
+ Text [ english_us ] = "The success probability of a trial." ;
+ Text[ chinese_simplified ] = "µ¥¸öÊÔÑéµÄ³É¹¦¸ÅÂÊ¡£";
+ Text[ russian ] = "Âåðîÿòíîñòü óñïåõà êàæäîãî èñïûòàíèÿ.";
+ Text[ polish ] = "Prawdopodobieñstwo sukcesu próby.";
+ Text[ japanese ] = "1‰ñ‚ÌŽŽs‚ª¬Œ÷‚·‚éŠm—¦‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "³æ­Ó¸ÕÅ窺¦¨¥\\·§²v¡C";
+ Text[ arabic ] = "ÇÍÊãÇá äÌÇÍ ÊÌÑÈÉ.";
+ Text[ dutch ] = "De kans op succes bij een experiment.";
+ Text[ chinese_simplified ] = "µ¥¸öÊÔÑéµÄ³É¹¦¸ÅÂÊ¡£";
+ Text[ greek ] = "Ç ðéèáíüôçôá åðéôõ÷ßáò ìéáò äïêéìÞò.";
+ Text[ korean ] = "½ÇÇèÀÇ ¼º°ø È®À²";
+ Text[ turkish ] = "Deneyin baþarý olasýlýðý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "K" ;
+ Text [ english ] = "cumulative" ;
+ Text [ norwegian ] = "K" ;
+ Text [ italian ] = "Cumulativo" ;
+ Text [ portuguese_brazilian ] = "K" ;
+ Text [ portuguese ] = "Cumulativo" ;
+ Text [ finnish ] = "K" ;
+ Text [ danish ] = "Kumulativ" ;
+ Text [ french ] = "C" ;
+ Text [ swedish ] = "K" ;
+ Text [ dutch ] = "C" ;
+ Text [ spanish ] = "acumulado" ;
+ Text [ english_us ] = "C" ;
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ russian ] = "Èíòåãðàëüíûé";
+ Text[ polish ] = "Skumulowany";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®";
+ Text[ chinese_traditional ] = "cumulative";
+ Text[ arabic ] = "Cumulative";
+ Text[ dutch ] = "C";
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ greek ] = "cumulative";
+ Text[ korean ] = "´©Àû";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "K";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Kumuliert. K = 0 berechnet die Einzel-, K = 1 die kumulierte Wahrscheinlichkeit." ;
+ Text [ english ] = "is a logical value that determines the form of the function." ;
+ Text [ norwegian ] = "Kumuliert. K = 0 berechnet die Einzel-, K = 1 die kumulierte Wahrscheinlichkeit." ;
+ Text [ italian ] = "è un valore logico che determina la forma assunta dalla funzione." ;
+ Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Einzel-, K = 1 die kumulierte Wahrscheinlichkeit." ;
+ Text [ portuguese ] = "é um valor lógico que determina a forma da função. 1 devolve a densidade de probabilidade, 0 devolve a função cumulativa." ;
+ Text [ finnish ] = "Kumuliert. K = 0 berechnet die Einzel-, K = 1 die kumulierte Wahrscheinlichkeit." ;
+ Text [ danish ] = "Kumulativ. K = 0 beregner enkeltsandsynligheden, K = 1 den kumulerede sandsynlighed." ;
+ Text [ french ] = "Cumulative. C = 0 calcule la probabilité individuelle, C = 1 la probabilité cumulative." ;
+ Text [ swedish ] = "Kumulerat. K = 0 beräknar den enskilda, K = 1 den kumulerade sannolikheten." ;
+ Text [ dutch ] = "Cumulatief. C = 0 berekent de enkele, C = 1 de cumulatieve kans." ;
+ Text [ spanish ] = "es un valor lógico que determina la forma de la función. 1 devuelve la densidad de probabilidad, 0 devuelve la función acumulada." ;
+ Text [ english_us ] = "Cumulated. C=0 calculates the individual probability, C=1 the cumulated probability." ;
+ Text[ chinese_simplified ] = "Âß¼­Öµ¡£K = 0 ¼ÆËã¸ÅÂÊÃܶȣ¬K = 1 ¼ÆËãÀÛ»ý¸ÅÂÊ¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå, îïðåäåëÿþùåå âèä ôóíêöèè: èíòåãðàëüíàÿ ôóíêöèÿ ðàñïðåäåëåíèÿ (1) èëè âåñîâàÿ ôóíêöèÿ ðàñïðåäåëåíèÿ (0).";
+ Text[ polish ] = "Skumulowany. K = 0 oblicza pojedyncze prawdopodobieñstwo, K = 1 skumulowane prawdopodobieñstwo.";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®B ŠÖ”‚ÌŒ`Ž®‚ð˜_—’l‚ÅŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "ÅÞ¿è­È¡CK = 0 ªí¥Ü­pºâ·§²v±K«×¡MK = 1 ªí¥Ü­pºâ²Ö¿n·§²v¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ ÊÍÏÏ äãØ ÇáÏÇáÉ.";
+ Text[ dutch ] = "Cumulatief. C = 0 berekent de enkele, C = 1 de cumulatieve kans.";
+ Text[ chinese_simplified ] = "Âß¼­Öµ¡£K = 0 ¼ÆËã¸ÅÂÊÃܶȣ¬K = 1 ¼ÆËãÀÛ»ý¸ÅÂÊ¡£";
+ Text[ greek ] = "ÁèñïéóôéêÜ. Ê = 0 õðïëïãßæåé ôçí ìåìïíùìÝíç ðéèáíüôçôá, Ê = 1 ôçí áèñïéóôéêÞ ðéèáíüôçôá.";
+ Text[ korean ] = "´©Àû. ´©Àû=0Àº °³º° È®·üÀ», ´©Àû=1Àº ´©Àû È®·üÀ» »êÃâÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Kümülasyon. K = 0 bireysel, K = 1 ise birikmiþ olasýlýðý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function NEGBINOMVERT #*=-
+ Resource SC_OPCODE_NEG_BINOM_VERT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der negativen Binomialverteilung." ;
+ Text [ english ] = "Returns the negative binomial distribution." ;
+ Text [ norwegian ] = "Werte der negativen Binomialverteilung." ;
+ Text [ italian ] = "Restituisce la distribuzione binomiale negativa." ;
+ Text [ portuguese_brazilian ] = "Werte der negativen Binomialverteilung." ;
+ Text [ portuguese ] = "Devolve a distribuição binomial negativa." ;
+ Text [ finnish ] = "Werte der negativen Binomialverteilung." ;
+ Text [ danish ] = "Værdier for den negative binomialfordeling" ;
+ Text [ french ] = "Valeurs de la distribution binomiale négative." ;
+ Text [ swedish ] = "Värden för den negativa binomialfördelningen." ;
+ Text [ dutch ] = "Geeft als resultaat de negatieve binomiaalverdeling." ;
+ Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria discreta siguiendo una distribución binomial negativa." ;
+ Text [ english_us ] = "Values of the negative binomial distribution." ;
+ Text[ chinese_simplified ] = "¸º¶þÏîʽ·Ö²¼¡£";
+ Text[ russian ] = "Âîçâðàùàåò îòðèöàòåëüíîå áèíîìèàëüíîå ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wyznacza rozk³ad dwumianowy przeciwny.";
+ Text[ japanese ] = "•‰‚Ì“ñ€•ª•z‚Ì’lB";
+ Text[ chinese_traditional ] = "­t¤G¶µ¦¡¤À§G¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ ÇáÓÇáÈ Ðí ÇáÍÏíä.";
+ Text[ dutch ] = "Geeft als resultaat de negatieve binomiaalverdeling.";
+ Text[ chinese_simplified ] = "¸º¶þÏîʽ·Ö²¼¡£";
+ Text[ greek ] = "ÔéìÝò ôçò áñíçôéêÞò äéùíõìéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "À½ ÀÌÇ× ¹èºÐÀÇ °ª.";
+ Text[ turkish ] = "Negatif binom daðýtýmý deðerleri.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_NEGBINOMVERT );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "X" ;
+ Text [ english ] = "number_f" ;
+ Text [ norwegian ] = "X" ;
+ Text [ italian ] = "num_insuccessi" ;
+ Text [ portuguese_brazilian ] = "X" ;
+ Text [ portuguese ] = "Núm_insucessos" ;
+ Text [ finnish ] = "X" ;
+ Text [ danish ] = "Tal_f" ;
+ Text [ french ] = "N_échecs" ;
+ Text [ swedish ] = "x" ;
+ Text [ dutch ] = "X" ;
+ Text [ spanish ] = "núm_fracasos" ;
+ Text [ english_us ] = "X" ;
+ Text[ chinese_simplified ] = "number_f";
+ Text[ russian ] = "X";
+ Text[ polish ] = "X";
+ Text[ japanese ] = "Ž¸”s”";
+ Text[ chinese_traditional ] = "number_f";
+ Text[ arabic ] = "Number_f";
+ Text[ dutch ] = "X";
+ Text[ chinese_simplified ] = "number_f";
+ Text[ greek ] = "×";
+ Text[ korean ] = "X";
+ Text[ turkish ] = "X";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Anzahl der Mißerfolge in der Versuchsreihe. : Die Anzahl der Mi˜erfolge in der Versuchsreihe. */
+ Text = "Die Anzahl der Misserfolge in der Versuchsreihe." ;
+ Text [ english ] = "is the number of failures." ;
+ Text [ norwegian ] = "Die Anzahl der Mißerfolge in der Versuchsreihe." ;
+ Text [ italian ] = "è il numero degli insuccessi." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Mißerfolge in der Versuchsreihe." ;
+ Text [ portuguese ] = "é o número de insucessos na série de tentativas." ;
+ Text [ finnish ] = "Die Anzahl der Mißerfolge in der Versuchsreihe." ;
+ Text [ danish ] = "Antallet af mislykkede forsøg." ;
+ Text [ french ] = "Le nombre d'échecs dans une série de tentatives." ;
+ Text [ swedish ] = "Antalet misslyckanden i en rad försök." ;
+ Text [ dutch ] = "Het aantal ongunstige uitkomsten in een reeks van experimenten." ;
+ Text [ spanish ] = "es el número de fracasos." ;
+ Text [ english_us ] = "The number of failures in the trial range." ;
+ Text[ chinese_simplified ] = "ÊÔÑéʧ°ÜµÄ´ÎÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî íåóäà÷íûõ èñïûòàíèé.";
+ Text[ polish ] = "Liczba niepowodzeñ w serii prób.";
+ Text[ japanese ] = "ŽŽs‚ªŽ¸”s‚·‚é‰ñ”B";
+ Text[ chinese_traditional ] = "¸ÕÅ祢±Ñªº¦¸¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÅÎÝÇÞÇÊ Ýí ÓáÓáÉ ÇáÊÌÇÑÈ.";
+ Text[ dutch ] = "Het aantal ongunstige uitkomsten in een reeks van experimenten.";
+ Text[ chinese_simplified ] = "ÊÔÑéʧ°ÜµÄ´ÎÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí áðïôõ÷éþí ôçò óåéñÜò äïêéìþí.";
+ Text[ korean ] = "ÀÏ·ÃÀÇ ½Ãµµ¿¡¼­ ÀϾ ½ÇÆÐÀÇ È½¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deneme aralýðýndaki baþarýsýzlýklarýn sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "R" ;
+ Text [ english ] = "number_s" ;
+ Text [ norwegian ] = "R" ;
+ Text [ italian ] = "num_successi" ;
+ Text [ portuguese_brazilian ] = "R" ;
+ Text [ portuguese ] = "Núm_sucessos" ;
+ Text [ finnish ] = "R" ;
+ Text [ danish ] = "Tal_s" ;
+ Text [ french ] = "N_succès" ;
+ Text [ swedish ] = "R" ;
+ Text [ dutch ] = "R" ;
+ Text [ spanish ] = "núm_éxitos" ;
+ Text [ english_us ] = "R" ;
+ Text[ chinese_simplified ] = "number_s";
+ Text[ russian ] = "×èñëî_s";
+ Text[ polish ] = "liczba_s";
+ Text[ japanese ] = "¬Œ÷”";
+ Text[ chinese_traditional ] = "number_s";
+ Text[ arabic ] = "Number_s";
+ Text[ dutch ] = "R";
+ Text[ chinese_simplified ] = "number_s";
+ Text[ greek ] = "Number_s";
+ Text[ korean ] = "R";
+ Text[ turkish ] = "R";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Anzahl der Erfolge in der Versuchsreihe." ;
+ Text [ english ] = "is the threshold number of successes." ;
+ Text [ norwegian ] = "Die Anzahl der Erfolge in der Versuchsreihe." ;
+ Text [ italian ] = "è il numero dei successi nella serie." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Erfolge in der Versuchsreihe." ;
+ Text [ portuguese ] = "é o número de sucessos na série de tentativas." ;
+ Text [ finnish ] = "Die Anzahl der Erfolge in der Versuchsreihe." ;
+ Text [ danish ] = "Antallet af gunstige udfald." ;
+ Text [ french ] = "Le nombre de succès dans la série de tentatives." ;
+ Text [ swedish ] = "Antalet framgångar i en rad försök." ;
+ Text [ dutch ] = "Het aantal gunstige uitkomsten in een reeks van experimenten." ;
+ Text [ spanish ] = "es el número de éxitos." ;
+ Text [ english_us ] = "The number of successes in the trial sequence." ;
+ Text[ chinese_simplified ] = "ÊÔÑé³É¹¦µÄ´ÎÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî óäà÷íûõ èñïûòàíèé.";
+ Text[ polish ] = "Liczba sukcesów w serii prób.";
+ Text[ japanese ] = "ŽŽs‚ª¬Œ÷‚·‚é‰ñ”B";
+ Text[ chinese_traditional ] = "¸ÕÅ禨¥\\ªº¦¸¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáäÌÇÍÇÊ Ýí ÓáÓáÉ ÇáÊÌÇÑÈ.";
+ Text[ dutch ] = "Het aantal gunstige uitkomsten in een reeks van experimenten.";
+ Text[ chinese_simplified ] = "ÊÔÑé³É¹¦µÄ´ÎÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí åðéôõ÷éþí ôçò óåéñÜò äïêéìþí.";
+ Text[ korean ] = "ÀÏ·ÃÀÇ ½Ãµµ¿¡¼­ ¼º°øÇÑ È½¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deney dizisindeki baþarý sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "W" ;
+ Text [ english ] = "probability_s" ;
+ Text [ norwegian ] = "W" ;
+ Text [ italian ] = "probabilità_s" ;
+ Text [ portuguese_brazilian ] = "W" ;
+ Text [ portuguese ] = "Probabilidade_s" ;
+ Text [ finnish ] = "W" ;
+ Text [ danish ] = "Sandsynlighed_s" ;
+ Text [ french ] = "Probabilité" ;
+ Text [ swedish ] = "sannolikhet" ;
+ Text [ dutch ] = "Kans" ;
+ Text [ spanish ] = "prob_éxito" ;
+ Text [ english_us ] = "SP" ;
+ Text[ chinese_simplified ] = "probability_s";
+ Text[ russian ] = "ÂÅÐÎßÒÍÎÑÒÜ";
+ Text[ polish ] = "prawdopodob_s";
+ Text[ japanese ] = "¬Œ÷—¦";
+ Text[ chinese_traditional ] = "probability_s";
+ Text[ arabic ] = "Probability_s";
+ Text[ dutch ] = "Kans";
+ Text[ chinese_simplified ] = "probability_s";
+ Text[ greek ] = "Probability_s";
+ Text[ korean ] = "probability_s";
+ Text[ turkish ] = "Olasýlýk";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ english ] = "is the probability of a success." ;
+ Text [ norwegian ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ italian ] = "è la probabilità di successo per ogni singola prova." ;
+ Text [ portuguese_brazilian ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ portuguese ] = "é a probabilidade de obter um sucesso." ;
+ Text [ finnish ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ danish ] = "Sandsynligheden for et gunstigt udfald." ;
+ Text [ french ] = "La probabilité de succès d'une tentative." ;
+ Text [ swedish ] = "Sannolikheten att ett försök lyckas." ;
+ Text [ dutch ] = "De kans op een gunstige uitkomst." ;
+ Text [ spanish ] = "es la probabilidad de obtener un éxito." ;
+ Text [ english_us ] = "The success probability of a trial." ;
+ Text[ chinese_simplified ] = "ÿ¸öÊÔÑéµÄ³É¹¦¸ÅÂÊ¡£";
+ Text[ russian ] = "Âåðîÿòíîñòü óñïåõà êàæäîãî èñïûòàíèÿ.";
+ Text[ polish ] = "Prawdopodobieñstwo sukcesu.";
+ Text[ japanese ] = "ŽŽs‚ª¬Œ÷‚·‚éŠm—¦B";
+ Text[ chinese_traditional ] = "¨C­Ó¸ÕÅ窺¦¨¥\\·§²v¡C";
+ Text[ arabic ] = "ÇÍÊãÇá äÌÇÍ ÊÌÑÈÉ.";
+ Text[ dutch ] = "De kans op een gunstige uitkomst.";
+ Text[ chinese_simplified ] = "ÿ¸öÊÔÑéµÄ³É¹¦¸ÅÂÊ¡£";
+ Text[ greek ] = "Ç ðéèáíüôçôá åðéôõ÷ßáò ìéáò äïêéìÞò.";
+ Text[ korean ] = "½ÇÇèÀÇ ¼º°ø È®À²";
+ Text[ turkish ] = "Deneyin baþarý olasýlýðý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KRITBINOM #*=-
+ Resource SC_OPCODE_KRIT_BINOM
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Grenzargumente der Binomialverteilung." ;
+ Text [ english ] = "Returns the smallest value for which the cumulative binomial distribution is greater than or equal to a criterion value." ;
+ Text [ norwegian ] = "Grenzargumente der Binomialverteilung." ;
+ Text [ italian ] = "Restituisce gli argomenti limite della distribuzione binomiale." ;
+ Text [ portuguese_brazilian ] = "Grenzargumente der Binomialverteilung." ;
+ Text [ portuguese ] = "Devolve o menor valor, sendo a distribuição binomial cumulativa maior ou igual ao valor de critério." ;
+ Text [ finnish ] = "Grenzargumente der Binomialverteilung." ;
+ Text [ danish ] = "Binomialfordelingens grænseargumenter." ;
+ Text [ french ] = "Arguments limites de la distribution binomiale." ;
+ Text [ swedish ] = "Binomialfördelningens gränsargument." ;
+ Text [ dutch ] = "Berekent de grenswaarden voor een binomiale verdeling." ;
+ Text [ spanish ] = "Devuelve el menor valor cuya distribución binomial acumulativa es menor o igual que un valor de criterio." ;
+ Text [ english_us ] = "Border arguments of the binomial distribution." ;
+ Text[ chinese_simplified ] = "¶þÏîʽ·Ö²¼µÄ×îСֵ¡£";
+ Text[ russian ] = "Âîçâðàùàåò íàèìåíüøåå çíà÷åíèå, äëÿ êîòîðîãî áèíîìèàëüíàÿ ôóíêöèÿ ðàñïðåäåëíèÿ áîëüøå èëè ðàâíà çàäàííãî çíà÷åíèÿ.";
+ Text[ polish ] = "Podaje najmniejsz¹ wartoœæ, dla której ³¹czny rozk³ad dwumianowy jest wiêkszy lub równy wartoœci kryterialnej.";
+ Text[ japanese ] = "“ñ€•ª•z‚Ì’l‚ªŠî€’lˆÈã‚É‚È‚é‚悤‚ÈŬ‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤G¶µ¦¡¤À§Gªº³Ì¤p­È¡C";
+ Text[ arabic ] = "ÇáæÓÇÆØ ÇáÍÏæÏíÉ ááÊæÒíÚ Ðí ÇáÍÏíä.";
+ Text[ dutch ] = "Berekent de grenswaarden voor een binomiale verdeling.";
+ Text[ chinese_simplified ] = "¶þÏîʽ·Ö²¼µÄ×îСֵ¡£";
+ Text[ greek ] = "ÏñéáêÜ ïñßóìáôá ôçò äéùíõìéêÞò êáôáíïìÞò";
+ Text[ korean ] = "ÀÌÇ× ºÐÆ÷ÀÇ °æ°è µ¶¸³ º¯¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Binom daðýtýmýnýn sýnýr deðiþkenleri.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_KRITBINOM );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "N" ;
+ Text [ english ] = "trials" ;
+ Text [ norwegian ] = "N" ;
+ Text [ italian ] = "prove" ;
+ Text [ portuguese_brazilian ] = "N" ;
+ Text [ portuguese ] = "Tentativas" ;
+ Text [ finnish ] = "N" ;
+ Text [ danish ] = "Forsøg" ;
+ Text [ french ] = "Tentatives" ;
+ Text [ swedish ] = "försök" ;
+ Text [ dutch ] = "N" ;
+ Text [ spanish ] = "ensayos" ;
+ Text [ english_us ] = "trials" ;
+ Text[ chinese_simplified ] = "trials";
+ Text[ russian ] = "Èñïûòàíèÿ";
+ Text[ polish ] = "Próby";
+ Text[ japanese ] = "ŽŽs‰ñ”";
+ Text[ chinese_traditional ] = "trials";
+ Text[ arabic ] = "Trials";
+ Text[ dutch ] = "N";
+ Text[ chinese_simplified ] = "trials";
+ Text[ greek ] = "ÄïêéìÝò";
+ Text[ korean ] = "½ÃÇè¿ë";
+ Text[ turkish ] = "Deney";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Gesamtanzahl der Versuche." ;
+ Text [ english ] = "is the number of Bernoulli trials." ;
+ Text [ norwegian ] = "Die Gesamtanzahl der Versuche." ;
+ Text [ italian ] = "è il numero delle prove di Bernoulli." ;
+ Text [ portuguese_brazilian ] = "Die Gesamtanzahl der Versuche." ;
+ Text [ portuguese ] = "é o número total de tentativas." ;
+ Text [ finnish ] = "Die Gesamtanzahl der Versuche." ;
+ Text [ danish ] = "Det samlede antal forsøg." ;
+ Text [ french ] = "Le nombre de tentatives." ;
+ Text [ swedish ] = "Det totala antalet försök." ;
+ Text [ dutch ] = "Het totale aantal experimenten." ;
+ Text [ spanish ] = "es el número total de intentos." ;
+ Text [ english_us ] = "The total number of trials." ;
+ Text[ chinese_simplified ] = "ÊÔÑé´ÎÊý¡£";
+ Text[ russian ] = "×èñëî èñïûòàíèé Áåðíóëëè.";
+ Text[ polish ] = "Liczba prób Bernoulli'ego.";
+ Text[ japanese ] = "ŽŽs‚̉ñ”B";
+ Text[ chinese_traditional ] = "¸ÕÅ禸¼Æ¡C";
+ Text[ arabic ] = "ÇáÚÏÏ ÇáÅÌãÇáí áÊÌÇÑÈ Bernoulli.";
+ Text[ dutch ] = "Het totale aantal experimenten.";
+ Text[ chinese_simplified ] = "ÊÔÑé´ÎÊý¡£";
+ Text[ greek ] = "Ôï óõíïëéêü ðëÞèïò ôùí äïêéìþí.";
+ Text[ korean ] = "½ÃµµÀÇ ÃÑ È½¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Toplam deney sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "W" ;
+ Text [ english ] = "probability_s" ;
+ Text [ norwegian ] = "W" ;
+ Text [ italian ] = "probabilità_s" ;
+ Text [ portuguese_brazilian ] = "W" ;
+ Text [ portuguese ] = "Probabilidade_s" ;
+ Text [ finnish ] = "W" ;
+ Text [ danish ] = "Sandsynlighed_s" ;
+ Text [ french ] = "Probabilité" ;
+ Text [ swedish ] = "sannolikhet" ;
+ Text [ dutch ] = "K" ;
+ Text [ spanish ] = "prob_éxito" ;
+ Text [ english_us ] = "SP" ;
+ Text[ chinese_simplified ] = "probability_s";
+ Text[ russian ] = "ÂÅÐÎßÒÍÎÑÒÜ";
+ Text[ polish ] = "P";
+ Text[ japanese ] = "¬Œ÷—¦";
+ Text[ chinese_traditional ] = "probability_s";
+ Text[ arabic ] = "Probability_s";
+ Text[ dutch ] = "K";
+ Text[ chinese_simplified ] = "probability_s";
+ Text[ greek ] = "Probability_s";
+ Text[ korean ] = "probability_s";
+ Text[ turkish ] = "Olasýlýk";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ english ] = "is the probability of a success on each trial." ;
+ Text [ norwegian ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ italian ] = "è la probabilità di un successo per ogni singola prova." ;
+ Text [ portuguese_brazilian ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ portuguese ] = "é a probabilidade de sucesso de uma tentativa." ;
+ Text [ finnish ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
+ Text [ danish ] = "Sandsynligheden for et gunstigt udfald." ;
+ Text [ french ] = "La probabilité de succès d'une tentative." ;
+ Text [ swedish ] = "Sannolikheten att ett försök skall lyckas." ;
+ Text [ dutch ] = "De kans op een gunstige uitkomst" ;
+ Text [ spanish ] = "es la probabilidad de éxito en cada ensayo." ;
+ Text [ english_us ] = "The success probability of a trial." ;
+ Text[ chinese_simplified ] = "ÿ¸öÊÔÑéµÄ³É¹¦¸ÅÂÊ¡£";
+ Text[ russian ] = "Âåðîÿòíîñòü óñïåõà â êàæäîì èñïûòàíèè.";
+ Text[ polish ] = "Prawdopodobieñstwo sukcesu próby.";
+ Text[ japanese ] = "1‰ñ‚ÌŽŽs‚ª¬Œ÷‚·‚éŠm—¦B";
+ Text[ chinese_traditional ] = "¨C­Ó¸ÕÅ窺¦¨¥\\·§²v¡C";
+ Text[ arabic ] = "ÇÍÊãÇá äÌÇÍ ÊÌÑÈÉ.";
+ Text[ dutch ] = "De kans op een gunstige uitkomst";
+ Text[ chinese_simplified ] = "ÿ¸öÊÔÑéµÄ³É¹¦¸ÅÂÊ¡£";
+ Text[ greek ] = "Ç ðéèáíüôçôá åðéôõ÷ßáò ìéáò äïêéìÞò.";
+ Text[ korean ] = "½ÇÇèÀÇ ¼º°ø È®À²";
+ Text[ turkish ] = "Deneyin baþarý olasýlýðý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Alpha" ;
+ Text [ english ] = "alpha" ;
+ Text [ norwegian ] = "Alpha" ;
+ Text [ italian ] = "alfa" ;
+ Text [ portuguese_brazilian ] = "Alpha" ;
+ Text [ portuguese ] = "Alfa" ;
+ Text [ finnish ] = "Alpha" ;
+ Text [ danish ] = "Alfa" ;
+ Text [ french ] = "Alpha" ;
+ Text [ swedish ] = "alfa" ;
+ Text [ dutch ] = "Alfa" ;
+ Text [ spanish ] = "alfa" ;
+ Text [ english_us ] = "alpha" ;
+ Text[ chinese_simplified ] = "alpha";
+ Text[ russian ] = "Àëüôà";
+ Text[ polish ] = "Alfa";
+ Text[ japanese ] = "ƒ¿";
+ Text[ chinese_traditional ] = "alpha";
+ Text[ arabic ] = "Alpha";
+ Text[ dutch ] = "Alfa";
+ Text[ chinese_simplified ] = "alpha";
+ Text[ greek ] = "á";
+ Text[ korean ] = "¾ËÆÄ";
+ Text[ turkish ] = "Alfa";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Grenzwahrscheinlichkeit, die erreicht oder überschritten wird. : Die Grenzwahrscheinlichkeit, die erreicht oder ³berschritten wird. */
+ Text = "Die Grenzwahrscheinlichkeit, die erreicht oder überschritten wird." ;
+ Text [ english ] = "is the criterion value." ;
+ Text [ norwegian ] = "Die Grenzwahrscheinlichkeit, die erreicht oder überschritten wird." ;
+ Text [ italian ] = "è il valore di criterio." ;
+ Text [ portuguese_brazilian ] = "Die Grenzwahrscheinlichkeit, die erreicht oder überschritten wird." ;
+ Text [ portuguese ] = "é o critério de valor." ;
+ Text [ finnish ] = "Die Grenzwahrscheinlichkeit, die erreicht oder überschritten wird." ;
+ Text [ danish ] = "Grænsesandsynligheden som opnås eller overskrides." ;
+ Text [ french ] = "La probabilité limite qui doit être égalée ou excédée." ;
+ Text [ swedish ] = "Gränssannolikheten som uppnås eller överskrids." ;
+ Text [ dutch ] = "De grenzen van een kansbereik." ;
+ Text [ spanish ] = "es el valor del criterio." ;
+ Text [ english_us ] = "The border probability that is attained or exceeded." ;
+ Text[ chinese_simplified ] = "ÁÙ½çÖµ¡£";
+ Text[ russian ] = "Ïðåäåëüíàÿ âåðîÿòíîñòü, êîòîðàÿ áóäåò äîñòèãíóòà èëè ïðåâûøåíà.";
+ Text[ polish ] = "Wartoœæ progowa, która zostanie osi¹gniêta lub przekroczona.";
+ Text[ japanese ] = "Šî€’lB";
+ Text[ chinese_traditional ] = "Á{¬É­È¡C";
+ Text[ arabic ] = "ÞíãÉ ÇáãÚíÇÑ.";
+ Text[ dutch ] = "De grenzen van een kansbereik.";
+ Text[ chinese_simplified ] = "ÁÙ½çÖµ¡£";
+ Text[ greek ] = "Ç ïñéáêÞ ðéèáíüôçôá ðïõ èá åðéôåõ÷èåß Þ èá õðåñâåß.";
+ Text[ korean ] = "À̸£°Ô µÉ ¶Ç´Â ÃÊ°úÇÏ°Ô µÉ °æ°è È®·üÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Eriþilen ya da aþýlan sýnýr olasýlýðý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function POISSON #*=-
+ Resource SC_OPCODE_POISSON_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Poisson-Verteilung" ;
+ Text [ english ] = "Returns the Poisson distribution." ;
+ Text [ norwegian ] = "Werte der Poisson-Verteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione di Poisson." ;
+ Text [ portuguese_brazilian ] = "Werte der Poisson-Verteilung" ;
+ Text [ portuguese ] = "Devolve a distribuição Poisson." ;
+ Text [ finnish ] = "Werte der Poisson-Verteilung" ;
+ Text [ danish ] = "Værdier for Poisson-fordelingen" ;
+ Text [ french ] = "Valeurs de la distribution Poisson." ;
+ Text [ swedish ] = "Värden för Poissonfördelningen." ;
+ Text [ dutch ] = "Waarden van de Poisson-verdeling" ;
+ Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria siguiendo la distribución de Poisson" ;
+ Text [ english_us ] = "Returns the Poisson distribution." ;
+ Text[ chinese_simplified ] = "¼ÆËã²´ËÉ·Ö²¼¡£";
+ Text[ russian ] = "Âîçâðàùàåò ðàñïðåäåëåíèå Ïóàññîíà.";
+ Text[ polish ] = "Wyznacza rozk³ad Poissona.";
+ Text[ japanese ] = "Îß±¿ÝŠm—¦•ª•z‚Ì’lB";
+ Text[ chinese_traditional ] = "­pºâªyªQ¤À§G¡C";
+ Text[ arabic ] = "Þíã ÊæÒíÚ Poisson.";
+ Text[ dutch ] = "Waarden van de Poisson-verdeling";
+ Text[ chinese_simplified ] = "¼ÆËã²´ËÉ·Ö²¼¡£";
+ Text[ greek ] = "ÔéìÝò ôçò êáôáíïìÞò Poisson.";
+ Text[ korean ] = "Poisson ¹èºÐÀ» ¹Ýȯ.";
+ Text[ turkish ] = "Poisson daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_POISSON );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die Poisson-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is the number of events." ;
+ Text [ norwegian ] = "Der Wert, zu dem die Poisson-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è il numero degli eventi." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die Poisson-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor para o qual se deseja calcular a distribuição Poisson." ;
+ Text [ finnish ] = "Der Wert, zu dem die Poisson-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som Poisson-fordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle vous voulez calculer la distribution Poisson." ;
+ Text [ swedish ] = "Värdet för vilket Poissonfördelningen skall beräknas." ;
+ Text [ dutch ] = "De waarde waarbij de Poisson-verdeling moet worden berekend." ;
+ Text [ spanish ] = "es el número de sucesos." ;
+ Text [ english_us ] = "The value for which the Poisson distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "ʼþÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ñîáûòèé.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony rozk³ad Poissona.";
+ Text[ japanese ] = "¶‚¶‚鎖ۂ̔¡";
+ Text[ chinese_traditional ] = "¨Æ¥ó¼Æ¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÍÓÇÈ ÊæÒíÚ Poisson áåÇ.";
+ Text[ dutch ] = "De waarde waarbij de Poisson-verdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "ʼþÊý¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç êáôáíïìÞ Poisson.";
+ Text[ korean ] = "Æ÷¾Æ¼Û ºÐÆ÷ÇÔ¼ö¸¦ °è»êÇÒ °ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Poisson daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "MW" ;
+ Text [ english ] = "mean" ;
+ Text [ norwegian ] = "MW" ;
+ Text [ italian ] = "media" ;
+ Text [ portuguese_brazilian ] = "MW" ;
+ Text [ portuguese ] = "Média" ;
+ Text [ finnish ] = "MW" ;
+ Text [ danish ] = "Middelværdi" ;
+ Text [ french ] = "Moyenne" ;
+ Text [ swedish ] = "MV" ;
+ Text [ dutch ] = "Gemiddelde" ;
+ Text [ spanish ] = "media" ;
+ Text [ english_us ] = "mean" ;
+ Text[ chinese_simplified ] = "mean";
+ Text[ russian ] = "Ñðåäíåå";
+ Text[ polish ] = "Œrednia";
+ Text[ japanese ] = "•½‹Ï";
+ Text[ chinese_traditional ] = "mean";
+ Text[ arabic ] = "Mean";
+ Text[ dutch ] = "Gemiddelde";
+ Text[ chinese_simplified ] = "mean";
+ Text[ greek ] = "Mean";
+ Text[ korean ] = "Æò±Õ";
+ Text[ turkish ] = "Ortalama";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Mittelwert. Der Mittelwert der Poisson-Verteilung." ;
+ Text [ english ] = "is the expected numeric value." ;
+ Text [ norwegian ] = "Mittelwert. Der Mittelwert der Poisson-Verteilung." ;
+ Text [ italian ] = "è il valore numerico previsto." ;
+ Text [ portuguese_brazilian ] = "Mittelwert. Der Mittelwert der Poisson-Verteilung." ;
+ Text [ portuguese ] = "é o valor numérico esperado." ;
+ Text [ finnish ] = "Mittelwert. Der Mittelwert der Poisson-Verteilung." ;
+ Text [ danish ] = "Middelværdi. Poisson-fordelingens middelværdi." ;
+ Text [ french ] = "La moyenne de la distribution Poisson." ;
+ Text [ swedish ] = "Medelvärde. Medelvärdet för Poissonfördelningen." ;
+ Text [ dutch ] = "De gemiddelde waarde van de Poisson-verdeling." ;
+ Text [ spanish ] = "es el valor numérico esperado." ;
+ Text [ english_us ] = "Mean. The mean value of the Poisson distribution." ;
+ Text[ chinese_simplified ] = "ÆÚÍûÖµ¡£";
+ Text[ russian ] = "Îæèäàåìîå ÷èñëîâîå çíà÷åíèå.";
+ Text[ polish ] = "Œrednia rozk³adu Poissona.";
+ Text[ japanese ] = "ˆê’è‚ÌŽžŠÔ“à‚É‹N‚«‚鎖ۂ̕½‹Ï’lB";
+ Text[ chinese_traditional ] = "´Á±æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÚÏÏíÉ ÇáãÊæÞÚÉ.";
+ Text[ dutch ] = "De gemiddelde waarde van de Poisson-verdeling.";
+ Text[ chinese_simplified ] = "ÆÚÍûÖµ¡£";
+ Text[ greek ] = "ÌÝóç ôéìÞ. Ç ìÝóç ôéìÞ ôçò êáôáíïìÞò Poisson.";
+ Text[ korean ] = "Æò±Õ. Poisson ¹èºÐÀÇ Æò±Õ °ª";
+ Text[ turkish ] = "Ortalama deðer. Poisson daðýtýmýnýn ortalama deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "K" ;
+ Text [ english ] = "cumulative" ;
+ Text [ norwegian ] = "K" ;
+ Text [ italian ] = "cumulativo" ;
+ Text [ portuguese_brazilian ] = "K" ;
+ Text [ portuguese ] = "Cumulativo" ;
+ Text [ finnish ] = "K" ;
+ Text [ danish ] = "Kumulativ" ;
+ Text [ french ] = "C" ;
+ Text [ swedish ] = "K" ;
+ Text [ dutch ] = "C" ;
+ Text [ spanish ] = "acumulado" ;
+ Text [ english_us ] = "C" ;
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ russian ] = "Èíòåãðàëüíûé";
+ Text[ polish ] = "Skumulowany";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®";
+ Text[ chinese_traditional ] = "cumulative";
+ Text[ arabic ] = "Cumulative";
+ Text[ dutch ] = "C";
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ greek ] = "cumulative";
+ Text[ korean ] = "´©Àû";
+ Text[ turkish ] = "C";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ english ] = "is a logical value that determines the form of the probability distribution returned." ;
+ Text [ norwegian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ italian ] = "è un valore logico che determina la forma per la distribuzione di probabilità." ;
+ Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ portuguese ] = "é um valor lógico que determina a forma da distribuição de probabilidades. 0 calcula a função cumulativa; 1 a distribuição." ;
+ Text [ finnish ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ danish ] = "Kumulativ. K = 0 beregner tæthedsfunktionen, K = 1 fordelingen." ;
+ Text [ french ] = "Cumulative. C = 0 calcule la fonction de densité, C = 1 la distribution." ;
+ Text [ swedish ] = "Kumulerat. K = 0 beräknar täthetsfunktionen, K = 1 fördelningen." ;
+ Text [ dutch ] = "Cumulatief. C = 0 berekent de vorm (dichtheid), C = 1 de verdeling." ;
+ Text [ spanish ] = "es un valor lógico que determina la forma de la distribución de probabilidad. Si es 0 calcula la función acumulada, si es 1 la distribución." ;
+ Text [ english_us ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
+ Text[ chinese_simplified ] = "È·¶¨¸ÅÂÊ·Ö²¼ÐÎʽµÄÂß¼­Öµ¡£ K = 0 ±íʾ¼ÆËãÃܶÈ\nº¯Êý£¬ K = 1 ±íʾ¼ÆËã·Ö²¼º¯Êý¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå, îïðåäåëÿþùåå âèä ôóíêöèè: ôóíêöèÿ ïëîòíîñòè (0) èëè ôóíêöèÿ ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Skumulowany. 0 wyznacza gêstoœæ, 1 - rozk³ad.";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®BŠÖ”Œ`Ž®=0‚É‚·‚é‚ÆŠm—¦–§“xŠÖ”‚ªAŠÖ”Œ`Ž®=1‚É‚·‚é‚ÆŠm—¦•ª•zŠÖ”‚ªŒvŽZ‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w·§²v¤À§G§Î¦¡ªºÅÞ¿è­È¡C K = 0 ­pºâ±K«×¨ç¼Æ¡M K = 1 ­pºâ¤À§G¨ç¼Æ¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ ÊÍÏÏ äãØ ÇÍÊãÇá ÇáÊæÒíÚ.";
+ Text[ dutch ] = "Cumulatief. C = 0 berekent de vorm (dichtheid), C = 1 de verdeling.";
+ Text[ chinese_simplified ] = "È·¶¨¸ÅÂÊ·Ö²¼ÐÎʽµÄÂß¼­Öµ¡£ K = 0 ±íʾ¼ÆËãÃܶÈ\nº¯Êý£¬ K = 1 ±íʾ¼ÆËã·Ö²¼º¯Êý¡£";
+ Text[ greek ] = "ÁèñïéóôéêÜ. Ê = 0 õðïëïãßæåé ôçí óõíÜñôçóç ðõêíüôçôáò, Ê = 1 ôçí êáôáíïìÞ.";
+ Text[ korean ] = "´©Àû. ´©Àû=0Àº ¹ÐµµÇÔ¼ö¸¦ °è»êÇÏ°í, ´©Àû=1Àº ºÐÆ÷ÇÔ¼ö¸¦ °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Kümülasyon. K = 0 yoðunluk fonksiyonunu, K = 1 ise daðýtýmý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function NORMVERT #*=-
+ Resource SC_OPCODE_NORM_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Normalverteilung" ;
+ Text [ english ] = "Returns the normal cumulative distribution for the specified mean and standard deviation." ;
+ Text [ norwegian ] = "Werte der Normalverteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione normale." ;
+ Text [ portuguese_brazilian ] = "Werte der Normalverteilung" ;
+ Text [ portuguese ] = "Devolve a distribuição cumulativa normal." ;
+ Text [ finnish ] = "Werte der Normalverteilung" ;
+ Text [ danish ] = "Værdier for normalfordelingen" ;
+ Text [ french ] = "Valeurs de la distribution normale." ;
+ Text [ swedish ] = "Värden för normalfördelningen." ;
+ Text [ dutch ] = "Geeft als resultaat de normale verdeling." ;
+ Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribución acumulativa normal" ;
+ Text [ english_us ] = "Values of the normal distribution." ;
+ Text[ chinese_simplified ] = "Õý̬·Ö²¼º¯Êý¡£";
+ Text[ russian ] = "Âîçâðàùàåò íîðìàëüíóþ ôóíêöèþ ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Wyznacza skumulowany rozk³ad normalny.";
+ Text[ japanese ] = "³‹K•ª•z‚Ì’lB";
+ Text[ chinese_traditional ] = "¥¿ºA¤À§G¨ç¼Æ¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ ÇáØÈíÚí.";
+ Text[ dutch ] = "Geeft als resultaat de normale verdeling.";
+ Text[ chinese_simplified ] = "Õý̬·Ö²¼º¯Êý¡£";
+ Text[ greek ] = "ÔéìÝò ôçò êáíïíéêÞò êáôáíïìÞò";
+ Text[ korean ] = "ÀÏ¹Ý ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Normal daðýtým deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_NORMVERT );
+ 4; 0; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "probability" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "probabilità" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die Normalverteilung berechnet werden soll." ;
+ Text [ english ] = "is the value for which you want the distribution." ;
+ Text [ norwegian ] = "Der Wert, zu dem die Normalverteilung berechnet werden soll." ;
+ Text [ italian ] = "è il valore per il quale si desidera la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die Normalverteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor para o qual deseja calcular a distribuição normal." ;
+ Text [ finnish ] = "Der Wert, zu dem die Normalverteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som normalfordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle vous voulez calculer la distribution normale." ;
+ Text [ swedish ] = "Värdet för vilket normalfördelningen skall beräknas." ;
+ Text [ dutch ] = "De waarde waarvan de normale verdeling moet worden berekend." ;
+ Text [ spanish ] = "es el valor cuya distribución desea obtener." ;
+ Text [ english_us ] = "The value for which the normal distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÕý̬·Ö²¼µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî îïðåäåëÿåòñÿ ðàñïðåäåëíèå.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony skumulowany rozk³ad normalny.";
+ Text[ japanese ] = "ŠÖ”‚É‘ã“ü‚·‚é’lB";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä¥¿ºA¤À§Gªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÍÓÇÈ ÇáÊæÒíÚ ÇáØÈíÚí áåÇ.";
+ Text[ dutch ] = "De waarde waarvan de normale verdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆäÕý̬·Ö²¼µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç êáíïíéêÞ êáôáíïìÞ.";
+ Text[ korean ] = "»êÃâµÉ ÀÏ¹Ý ¹èºÐ¿¡ ´ëÇÑ °ª";
+ Text[ turkish ] = "Normal daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "MW" ;
+ Text [ english ] = "mean" ;
+ Text [ norwegian ] = "MW" ;
+ Text [ italian ] = "media" ;
+ Text [ portuguese_brazilian ] = "MW" ;
+ Text [ portuguese ] = "Média" ;
+ Text [ finnish ] = "MW" ;
+ Text [ danish ] = "Middelværdi" ;
+ Text [ french ] = "Moyenne" ;
+ Text [ swedish ] = "MV" ;
+ Text [ dutch ] = "Gemiddelde" ;
+ Text [ spanish ] = "media" ;
+ Text [ english_us ] = "mean" ;
+ Text[ chinese_simplified ] = "mean";
+ Text[ russian ] = "Ñðåäíåå";
+ Text[ polish ] = "Œrednia";
+ Text[ japanese ] = "•½‹Ï";
+ Text[ chinese_traditional ] = "mean";
+ Text[ arabic ] = "Mean";
+ Text[ dutch ] = "Gemiddelde";
+ Text[ chinese_simplified ] = "mean";
+ Text[ greek ] = "Mean";
+ Text[ korean ] = "Æò±Õ";
+ Text[ turkish ] = "Ortalama";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Mittelwert. Der Mittelwert der Normalverteilung." ;
+ Text [ english ] = "is the arithmetic mean of the distribution." ;
+ Text [ norwegian ] = "Mittelwert. Der Mittelwert der Normalverteilung." ;
+ Text [ italian ] = "è la media aritmetica della distribuzione." ;
+ Text [ portuguese_brazilian ] = "Mittelwert. Der Mittelwert der Normalverteilung." ;
+ Text [ portuguese ] = "é a média aritmética da distribuição." ;
+ Text [ finnish ] = "Mittelwert. Der Mittelwert der Normalverteilung." ;
+ Text [ danish ] = "Middelværdi. Normalfordelingens middelværdi." ;
+ Text [ french ] = "La moyenne de la distribution normale." ;
+ Text [ swedish ] = "Medelvärde. Medelvärdet för normalfördelningen." ;
+ Text [ dutch ] = "De gemiddelde waarde van de normale verdeling." ;
+ Text [ spanish ] = "es la media aritmética de la distribución." ;
+ Text [ english_us ] = "The mean value. The mean value of the normal distribution." ;
+ Text[ chinese_simplified ] = "ƽ¾ùÖµ¡£Õý̬·Ö²¼µÄƽ¾ùÖµ¡£";
+ Text[ russian ] = "Ñðåäíåå àðèôìåòè÷åñêîå ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Œrednia arytmetyczna rozk³adu normalnego.";
+ Text[ japanese ] = "•½‹ÏB•ª•z‚ÌŽZp•½‹Ï(‘Š‰Á•½‹Ï)B";
+ Text[ chinese_traditional ] = "¥­§¡­È¡C¥¿ºA¤À§Gªº¥­§¡­È¡C";
+ Text[ arabic ] = "ÇáæÓØ ÇáÍÓÇÈí ááÊæÒíÚ.";
+ Text[ dutch ] = "De gemiddelde waarde van de normale verdeling.";
+ Text[ chinese_simplified ] = "ƽ¾ùÖµ¡£Õý̬·Ö²¼µÄƽ¾ùÖµ¡£";
+ Text[ greek ] = "ÌÝóç ôéìÞ. Ç ìÝóç ôéìÞ ôçò êáíïíéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Áß°£°ª. Á¤±Ô ºÐÆ÷ÀÇ Áß°£°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ortalama deðer. Normal daðýtýmýn ortalama deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "STD" ;
+ Text [ english ] = "standard_dev" ;
+ Text [ norwegian ] = "STD" ;
+ Text [ italian ] = "dev_standard" ;
+ Text [ portuguese_brazilian ] = "STD" ;
+ Text [ portuguese ] = "Desvio_padrão" ;
+ Text [ finnish ] = "STD" ;
+ Text [ danish ] = "Standardafv" ;
+ Text [ french ] = "ET" ;
+ Text [ swedish ] = "STD" ;
+ Text [ dutch ] = "STDEV" ;
+ Text [ spanish ] = "desv_estándar" ;
+ Text [ english_us ] = "STDEV" ;
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ russian ] = "Ñòàíäàðòíîå_îòêë";
+ Text[ polish ] = "odchylenie_std";
+ Text[ japanese ] = "•W€•Î·";
+ Text[ chinese_traditional ] = "standard_dev";
+ Text[ arabic ] = "Standard_dev";
+ Text[ dutch ] = "STDEV";
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ greek ] = "standard_dev";
+ Text[ korean ] = "standard_dev";
+ Text[ turkish ] = "STDEV";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Standardabweichung. Die Standardabweichung der Normalverteilung." ;
+ Text [ english ] = "is the standard deviation of the distribution." ;
+ Text [ norwegian ] = "Standardabweichung. Die Standardabweichung der Normalverteilung." ;
+ Text [ italian ] = "è la deviazione standard della distribuzione." ;
+ Text [ portuguese_brazilian ] = "Standardabweichung. Die Standardabweichung der Normalverteilung." ;
+ Text [ portuguese ] = "é o desvio padrão da distribuição." ;
+ Text [ finnish ] = "Standardabweichung. Die Standardabweichung der Normalverteilung." ;
+ Text [ danish ] = "Standardafvigelse. Normalfordelingens standardafvigelse." ;
+ Text [ french ] = "L'écart-type de la distribution normale." ;
+ Text [ swedish ] = "Standardavvikelse. Standardavvikelsen för normalfördelningen." ;
+ Text [ dutch ] = "De standaarddeviatie van de normale verdeling." ;
+ Text [ spanish ] = "es la desviación estándar de la distribución." ;
+ Text [ english_us ] = "Standard deviation. The standard deviation of the normal distribution." ;
+ Text[ chinese_simplified ] = "±ê׼ƫ²î¡£Õý̬·Ö²¼µÄ±ê׼ƫ²î¡£";
+ Text[ russian ] = "Ñòàíäàðòíîå îòêëîíåíèå ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Odchylenie standardowe rozk³adu.";
+ Text[ japanese ] = "•W€•Î·B•ª•z‚Ì•W€•Î·B";
+ Text[ chinese_traditional ] = "¼Ð·Ç°¾®t¡C¥¿ºA¤À§Gªº¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ááÊæÒíÚ ÇáØÈíÚí.";
+ Text[ dutch ] = "De standaarddeviatie van de normale verdeling.";
+ Text[ chinese_simplified ] = "±ê׼ƫ²î¡£Õý̬·Ö²¼µÄ±ê׼ƫ²î¡£";
+ Text[ greek ] = "ÔõðéêÞ áðüêëéóç. Ç ôõðéêÞ áðüêëéóç ôçò êáíïíéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Ç¥ÁØ ÆíÂ÷. ÀÏ¹Ý ¹èºÐÀÇ Ç¥ÁØ ÆíÂ÷";
+ Text[ turkish ] = "Standart sapma. Normal daðýtýmýn standart sapmasý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "K" ;
+ Text [ english ] = "cumulative" ;
+ Text [ norwegian ] = "K" ;
+ Text [ italian ] = "cumulativo" ;
+ Text [ portuguese_brazilian ] = "K" ;
+ Text [ portuguese ] = "Cumulativo" ;
+ Text [ finnish ] = "K" ;
+ Text [ danish ] = "Kumulativ" ;
+ Text [ french ] = "C" ;
+ Text [ swedish ] = "K" ;
+ Text [ dutch ] = "C" ;
+ Text [ spanish ] = "acum" ;
+ Text [ english_us ] = "C" ;
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ russian ] = "Èíòåãðàëüíûé";
+ Text[ polish ] = "Skumulowany";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®";
+ Text[ chinese_traditional ] = "cumulative";
+ Text[ arabic ] = "Cumulative";
+ Text[ dutch ] = "C";
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ greek ] = "cumulative";
+ Text[ korean ] = "´©Àû";
+ Text[ turkish ] = "C";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ english ] = "is a logical value that determines the form of the function." ;
+ Text [ norwegian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ italian ] = "è un valore logico che determina la forma assunta dalla funzione." ;
+ Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ portuguese ] = "é um valor lógico que determina a forma da função. 0 calcula a função cumulativa; 1 a distribuição." ;
+ Text [ finnish ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ danish ] = "Kumulativ. K = 0 beregner tæthedsfunktionen, K = 1 fordelingen." ;
+ Text [ french ] = "Cumulative. C = 0 calcule la fonction de densité, C = 1 la distribution." ;
+ Text [ swedish ] = "Kumulerat. K = 0 beräknar täthetsfunktionen, K = 1 fördelningen." ;
+ Text [ dutch ] = "Cumulatief. C = 0 berekent de vorm (dichtheid) van de functie, C = 1 de verdeling." ;
+ Text [ spanish ] = "es un valor lógico que determina la forma de la función." ;
+ Text [ english_us ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
+ Text[ chinese_simplified ] = "Âß¼­Öµ£¬Ö¸Ã÷º¯ÊýÀàÐÍ¡£ K = 0 ±íʾ¼ÆËãÃܶȺ¯Êý£¬ \nK = 1 ¼ÆËã·Ö²¼º¯Êý¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå, îïðåäåëÿþùåå âèä ôóíêöèè: ôóíêöèÿ ïëîòíîñòè (0) èëè ôóíêöèÿ ðàñïðåäåëåíèÿ (1).";
+ Text[ polish ] = "Skumulowany. 0 oblicza gêstoœæ, 1 - rozk³ad.";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®BŠÖ”Œ`Ž®=0‚É‚·‚é‚ÆŠm—¦–§“xŠÖ”‚Ì’l‚ªAŠÖ”Œ`Ž®=1‚É‚·‚é‚Æ—ÝÏ•ª•zŠÖ”‚Ì’l‚ªŒvŽZ‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "ÅÞ¿è­È¡M«ü©ú¨ç¼ÆÃþ«¬¡C K = 0 ªí¥Ü­pºâ±K«×¨ç¼Æ¡M K = 1 ªí¥Ü­pºâ¤À§G¨ç¼Æ¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ ÊÍÏÏ äãØ ÇáÏÇáÉ.";
+ Text[ dutch ] = "Cumulatief. C = 0 berekent de vorm (dichtheid) van de functie, C = 1 de verdeling.";
+ Text[ chinese_simplified ] = "Âß¼­Öµ£¬Ö¸Ã÷º¯ÊýÀàÐÍ¡£ K = 0 ±íʾ¼ÆËãÃܶȺ¯Êý£¬ \nK = 1 ¼ÆËã·Ö²¼º¯Êý¡£";
+ Text[ greek ] = "ÁèñïéóôéêÜ. Ê = 0 õðïëïãßæåé ôçí óõíÜñôçóç ðõêíüôçôáò, Ê = 1 ôçí êáôáíïìÞ.";
+ Text[ korean ] = "´©Àû. ´©Àû=0Àº ¹ÐµµÇÔ¼ö¸¦ °è»êÇÏ°í, ´©Àû=1Àº ºÐÆ÷¸¦ °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Kümülasyon. K = 0 yoðunluk fonksiyonunu, K = 1 ise daðýtýmý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function NORMINV #*=-
+ Resource SC_OPCODE_NORM_INV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der inversen Normalverteilung" ;
+ Text [ english ] = "Returns the inverse of the normal cumulative distribution for the specified mean and standard deviation." ;
+ Text [ norwegian ] = "Werte der inversen Normalverteilung" ;
+ Text [ italian ] = "Restituisce l'inversa della distribuzione normale." ;
+ Text [ portuguese_brazilian ] = "Werte der inversen Normalverteilung" ;
+ Text [ portuguese ] = "Devolve o inverso da distribuição cumulativa normal." ;
+ Text [ finnish ] = "Werte der inversen Normalverteilung" ;
+ Text [ danish ] = "Værdier for den inverse normalfordeling" ;
+ Text [ french ] = "Valeurs de la distribution normale inverse." ;
+ Text [ swedish ] = "Värden för den inversa normalfördelningen." ;
+ Text [ dutch ] = "Geeft als resultaat de inverse normale verdeling." ;
+ Text [ spanish ] = "Devuelve, para una probabilidad dada, el valor de la variable aleatoria siguiendo una distribución acumulativa normal" ;
+ Text [ english_us ] = "Values of the inverse normal distribution." ;
+ Text[ chinese_simplified ] = "Õý̬·Ö²¼º¯ÊýµÄÄ溯Êý¡£";
+ Text[ russian ] = "Âîçâðàùàåò îáðàòíîå íîðìàëüíîãî ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Wyznacza odwrotnoœæ normalnego rozk³adu skumulowanego.";
+ Text[ japanese ] = "³‹K•ª•z‚Ì‹tŠÖ”‚Ì’lB";
+ Text[ chinese_traditional ] = "¥¿ºA¤À§G¨ç¼Æªº°f¨ç¼Æ¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ ÇáØÈíÚí ÇáÚßÓí.";
+ Text[ dutch ] = "Geeft als resultaat de inverse normale verdeling.";
+ Text[ chinese_simplified ] = "Õý̬·Ö²¼º¯ÊýµÄÄ溯Êý¡£";
+ Text[ greek ] = "ÔéìÝò ôçò áíôßóôñïöçò êáíïíéêÞò êáôáíïìÞò";
+ Text[ korean ] = "¿ª ÀÏ¹Ý ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Ters normal daðýtým deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_NORMINV );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "probability" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "probabilità" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Probabilidade" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Sandsynlighed" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "probabilidad" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "probability";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "Šm—¦";
+ Text[ chinese_traditional ] = "probability";
+ Text[ arabic ] = "Probability";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "probability";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wahrscheinlichkeitswert, zu dem die inverse Normalverteilung berechnet werden soll." ;
+ Text [ english ] = "is a probability corresponding to the normal distribution." ;
+ Text [ norwegian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Normalverteilung berechnet werden soll." ;
+ Text [ italian ] = "è la probabilità corrispondente alla distribuzione normale." ;
+ Text [ portuguese_brazilian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Normalverteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é a probabilidade para a qual se deseja a distribuição normal." ;
+ Text [ finnish ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Normalverteilung berechnet werden soll." ;
+ Text [ danish ] = "Sandsynligheden som den inverse normalfordeling skal beregnes for." ;
+ Text [ french ] = "La valeur de probabilité pour laquelle vous voulez calculer la distribution normale inverse." ;
+ Text [ swedish ] = "Sannolikhetsvärdet för vilket den inversa normalfördelningen skall beräknas." ;
+ Text [ dutch ] = "De kans die overeenkomt met een normale verdeling." ;
+ Text [ spanish ] = "es una probabilidad asociada a la distribución normal." ;
+ Text [ english_us ] = "The probability value for which the inverse normal distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "Õý̬·Ö²¼µÄ¸ÅÂÊÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå âåðîÿòíîñòè, äëÿ êîòîðîãî òðåáóåòñÿ âû÷èñëèòü îáðàòíîå íîðìàëüíîå ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Prawdopodobieñstwo, dla którego ma zostaæ obliczona odwrotnoœæ normalnego rozk³adu.";
+ Text[ japanese ] = "³‹K•ª•z‚É‚¨‚¯‚éŠm—¦B";
+ Text[ chinese_traditional ] = "¥¿ºA¤À§Gªº·§²v­È¡C";
+ Text[ arabic ] = "ÇáÇÍÊãÇá ÇáãÑÇÏ ÍÓÇÈ ÇáÊæÒíÚ ÇáØÈíÚí ÇáÚßÓí áå.";
+ Text[ dutch ] = "De kans die overeenkomt met een normale verdeling.";
+ Text[ chinese_simplified ] = "Õý̬·Ö²¼µÄ¸ÅÂÊÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ðéèáíüôçôáò ãéá ôçí ïðïßá èá õðïëïãéóôåß ç áíôßóôñïöç êáíïíéêÞ êáôáíïìÞ.";
+ Text[ korean ] = "È®·ü°ª¿¡ ´ëÇÑ Á¤±Ô ºÐÆ÷ÇÔ¼öÀÇ ¿ªÀ» °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Ters normal daðýtýmý hesaplanacak olasýlýk deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "MW" ;
+ Text [ english ] = "mean" ;
+ Text [ norwegian ] = "MW" ;
+ Text [ italian ] = "media" ;
+ Text [ portuguese_brazilian ] = "MW" ;
+ Text [ portuguese ] = "Média" ;
+ Text [ finnish ] = "MW" ;
+ Text [ danish ] = "Middelværdi" ;
+ Text [ french ] = "Moyenne" ;
+ Text [ swedish ] = "MV" ;
+ Text [ dutch ] = "Gemiddelde" ;
+ Text [ spanish ] = "media" ;
+ Text [ english_us ] = "mean" ;
+ Text[ chinese_simplified ] = "mean";
+ Text[ russian ] = "Ñðåäíåå";
+ Text[ polish ] = "Œrednia";
+ Text[ japanese ] = "•½‹Ï";
+ Text[ chinese_traditional ] = "mean";
+ Text[ arabic ] = "Mean";
+ Text[ dutch ] = "Gemiddelde";
+ Text[ chinese_simplified ] = "mean";
+ Text[ greek ] = "Mean";
+ Text[ korean ] = "Æò±Õ";
+ Text[ turkish ] = "Ortalama";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Mittelwert. Der Mittelwert der Normalverteilung." ;
+ Text [ english ] = "is the arithmetic mean of the distribution." ;
+ Text [ norwegian ] = "Mittelwert. Der Mittelwert der Normalverteilung." ;
+ Text [ italian ] = "è la media aritmetica della distribuzione." ;
+ Text [ portuguese_brazilian ] = "Mittelwert. Der Mittelwert der Normalverteilung." ;
+ Text [ portuguese ] = "é a média aritmética da distribuição." ;
+ Text [ finnish ] = "Mittelwert. Der Mittelwert der Normalverteilung." ;
+ Text [ danish ] = "Middelværdi. Normalfordelingens middelværdi." ;
+ Text [ french ] = "La moyenne de la distribution normale." ;
+ Text [ swedish ] = "Medelvärde. Medelvärdet för normalfördelningen." ;
+ Text [ dutch ] = "De gemiddelde waarde van de verdeling." ;
+ Text [ spanish ] = "es la media aritmética de la distribución." ;
+ Text [ english_us ] = "The mean value. The mean value of the normal distribution." ;
+ Text[ chinese_simplified ] = "ƽ¾ùÖµ¡£Õý̬·Ö²¼µÄƽ¾ùÖµ¡£";
+ Text[ russian ] = "Ñðåäíåå àðèôìåòè÷åñêîå ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Œrednia arytmetyczna rozk³adu normalnego.";
+ Text[ japanese ] = "•½‹ÏB•ª•z‚ÌŽZp•½‹Ï(‘Š‰Á•½‹Ï)B";
+ Text[ chinese_traditional ] = "¥­§¡­È¡C¥¿ºA¤À§Gªº¥­§¡­È¡C";
+ Text[ arabic ] = "ÇáæÓØ ÇáÍÓÇÈí ááÊæÒíÚ.";
+ Text[ dutch ] = "De gemiddelde waarde van de verdeling.";
+ Text[ chinese_simplified ] = "ƽ¾ùÖµ¡£Õý̬·Ö²¼µÄƽ¾ùÖµ¡£";
+ Text[ greek ] = "ÌÝóç ôéìÞ. Ç ìÝóç ôéìÞ ôçò êáíïíéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Áß°£°ª. Á¤±Ô ºÐÆ÷ÇÔ¼öÀÇ Áß°£°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ortalama deðer. Normal daðýtýmýn ortalama deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "STD" ;
+ Text [ english ] = "standard_dev" ;
+ Text [ norwegian ] = "STD" ;
+ Text [ italian ] = "dev_standard" ;
+ Text [ portuguese_brazilian ] = "STD" ;
+ Text [ portuguese ] = "Desvio_padrão" ;
+ Text [ finnish ] = "STD" ;
+ Text [ danish ] = "Standardafv" ;
+ Text [ french ] = "ET" ;
+ Text [ swedish ] = "STD" ;
+ Text [ dutch ] = "STDEV" ;
+ Text [ spanish ] = "desv_estándar" ;
+ Text [ english_us ] = "STDEV" ;
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ russian ] = "Ñòàíäàðòíîå_îòêë";
+ Text[ polish ] = "odchylenie_std";
+ Text[ japanese ] = "•W€•Î·";
+ Text[ chinese_traditional ] = "standard_dev";
+ Text[ arabic ] = "Standard_dev";
+ Text[ dutch ] = "STDEV";
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ greek ] = "standard_dev";
+ Text[ korean ] = "standard_dev";
+ Text[ turkish ] = "STDEV";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Standardabweichung. Die Standardabweichung der Normalverteilung." ;
+ Text [ english ] = "is the standard deviation of the distribution." ;
+ Text [ norwegian ] = "Standardabweichung. Die Standardabweichung der Normalverteilung." ;
+ Text [ italian ] = "è la deviazione standard della distribuzione." ;
+ Text [ portuguese_brazilian ] = "Standardabweichung. Die Standardabweichung der Normalverteilung." ;
+ Text [ portuguese ] = "é o desvio padrão da distribuição." ;
+ Text [ finnish ] = "Standardabweichung. Die Standardabweichung der Normalverteilung." ;
+ Text [ danish ] = "Standardafvigelse. Normalfordelingens standardafvigelse." ;
+ Text [ french ] = "L'écart-type de la distribution normale." ;
+ Text [ swedish ] = "Standardavvikelse. Standardavvikelsen för normalfördelningen." ;
+ Text [ dutch ] = "De standaarddeviatie van de verdeling." ;
+ Text [ spanish ] = "es la desviación estándar de la distribución." ;
+ Text [ english_us ] = "Standard deviation. The standard deviation of the normal distribution." ;
+ Text[ chinese_simplified ] = "±ê׼ƫ²î¡£Õý̬·Ö²¼µÄ±ê׼ƫ²î¡£";
+ Text[ russian ] = "Ñòàíäàðòíîå îòêëîíåíèå ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Odchylenie standardowe rozk³adu normalnego.";
+ Text[ japanese ] = "•W€•Î·B•ª•z‚Ì•W€•Î·B";
+ Text[ chinese_traditional ] = "¼Ð·Ç°¾®t¡C¥¿ºA¤À§Gªº¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ááÊæÒíÚ ÇáØÈíÚí.";
+ Text[ dutch ] = "De standaarddeviatie van de verdeling.";
+ Text[ chinese_simplified ] = "±ê׼ƫ²î¡£Õý̬·Ö²¼µÄ±ê׼ƫ²î¡£";
+ Text[ greek ] = "ÔõðéêÞ áðüêëéóç. Ç ôõðéêÞ áðüêëéóç ôçò êáíïíéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Ç¥ÁØ ÆíÂ÷. ÀÏ¹Ý ¹èºÐÀÇ Ç¥ÁØ ÆíÂ÷";
+ Text[ turkish ] = "Standart sapma. Normal daðýtýmýn standart sapmasý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function STANDNORMVERT #*=-
+ Resource SC_OPCODE_STD_NORM_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Standardnormalverteilung" ;
+ Text [ english ] = "Returns the standard normal cumulative distribution function." ;
+ Text [ norwegian ] = "Werte der Standardnormalverteilung" ;
+ Text [ italian ] = "Restituisce i valori della distribuzione normale standard." ;
+ Text [ portuguese_brazilian ] = "Werte der Standardnormalverteilung" ;
+ Text [ portuguese ] = "Devolve a distribuição cumulativa normal padrão." ;
+ Text [ finnish ] = "Werte der Standardnormalverteilung" ;
+ Text [ danish ] = "Værdier for standardnormalfordelingen" ;
+ Text [ french ] = "Valeurs de la distribution normale standard." ;
+ Text [ swedish ] = "Värden för standardnormalfördelningen." ;
+ Text [ dutch ] = "Geeft als resultaat de cumulatieve standaardnormale verdeling." ;
+ Text [ spanish ] = "Valores de una distribución normal estándar acumulativa" ;
+ Text [ english_us ] = "The values of the standard normal cumulative distribution." ;
+ Text[ chinese_simplified ] = "±ê×¼Õý̬·Ö²¼º¯Êý¡£";
+ Text[ russian ] = "Çíà÷åíèÿ ñòàíäàðòíîãî íîðìàëüíîãî èíòåãðàëüíîãî ðàñïðåäåëåíèÿ";
+ Text[ polish ] = "Wyznacza standardowy skumulowany rozk³ad normalny";
+ Text[ japanese ] = "³‹K•ª•zŠÖ”‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¼Ð·Ç¥¿ºA¤À§G¨ç¼Æ¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ ÇáØÈíÚí ÇáÞíÇÓí.";
+ Text[ dutch ] = "Geeft als resultaat de cumulatieve standaardnormale verdeling.";
+ Text[ chinese_simplified ] = "±ê×¼Õý̬·Ö²¼º¯Êý¡£";
+ Text[ greek ] = "ÔéìÝò ôçò ôõðéêÞò êáíïíéêÞò êáôáíïìÞò";
+ Text[ korean ] = "Ç¥ÁØ ÀÏ¹Ý ´©Àû ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Standart normal daðýtým deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_STANDNORMVERT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "z" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "z" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Z" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "z" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "z";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "z";
+ Text[ arabic ] = "Z";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "z";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die Standardnormalverteilung berechnet werden soll." ;
+ Text [ english ] = "is the value for which you want the distribution." ;
+ Text [ norwegian ] = "Der Wert, zu dem die Standardnormalverteilung berechnet werden soll." ;
+ Text [ italian ] = "è il valore per il quale si desidera la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die Standardnormalverteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o o valor para o qual deseja calcular a distribuição." ;
+ Text [ finnish ] = "Der Wert, zu dem die Standardnormalverteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som standardnormalfordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle vous voulez calculer la distribution normale standard." ;
+ Text [ swedish ] = "Värdet för vilket standardnormalfördelningen skall beräknas." ;
+ Text [ dutch ] = "De waarde waarvan u de cumulatieve standaardnormale verdeling wilt berekenen." ;
+ Text [ spanish ] = "es el valor cuya distribución desea obtener." ;
+ Text [ english_us ] = "The value for which the standard normal distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä±ê×¼Õý̬·Ö²¼µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî âû÷èñëÿåòñÿ ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony standardowy skumulowany rozk³ad normalny.";
+ Text[ japanese ] = "³‹K•ª•zŠÖ”‚ð‹‚ß‚é’l";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä¼Ð·Ç¥¿ºA¤À§Gªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÍÓÇÈ ÇáÊæÒíÚ ÇáØÈíÚí ÇáÞíÇÓí áåÇ.";
+ Text[ dutch ] = "De waarde waarvan u de cumulatieve standaardnormale verdeling wilt berekenen.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä±ê×¼Õý̬·Ö²¼µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç ôõðéêÞ êáíïíéêÞ êáôáíïìÞ.";
+ Text[ korean ] = "»êÃâµÉ Ç¥ÁØ ÀÏ¹Ý ¹èºÐ¿¡´ëÇÑ °ª";
+ Text[ turkish ] = "Standart normal daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function STANDNORMINV #*=-
+ Resource SC_OPCODE_S_NORM_INV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der inversen Standardnormalverteilung" ;
+ Text [ english ] = "Returns the inverse of the standard normal cumulative distribution." ;
+ Text [ norwegian ] = "Werte der inversen Standardnormalverteilung" ;
+ Text [ italian ] = "Restituisce l'inversa della distribuzione normale standard." ;
+ Text [ portuguese_brazilian ] = "Werte der inversen Standardnormalverteilung" ;
+ Text [ portuguese ] = "Devolve o inverso da distribuição padrão normal." ;
+ Text [ finnish ] = "Werte der inversen Standardnormalverteilung" ;
+ Text [ danish ] = "Værdier for den inverse standardnormalfordeling" ;
+ Text [ french ] = "Valeurs de la distribution normale standard inverse." ;
+ Text [ swedish ] = "Värden för den inversa standardnormalfördelningen." ;
+ Text [ dutch ] = "Berekent de inverse standaardnormale verdeling." ;
+ Text [ spanish ] = "Devuelve, para una probabilidad dada, el valor de la variable aleatoria siguiendo una distribución normal estándar acumulativa" ;
+ Text [ english_us ] = "Values of the inverse standard normal distribution." ;
+ Text[ chinese_simplified ] = "±ê×¼Õý̬·Ö²¼º¯ÊýµÄÄ溯Êý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò îáðàòíîå çíà÷åíèå ñòàíäàðòíîãî íîðìàëüíîãî ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Wyznacza odwrotnoœæ standardowego rozk³adu";
+ Text[ japanese ] = "•W€³‹K•ª•z‚Ì‹tŠÖ”‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¼Ð·Ç¥¿ºA¤À§G¨ç¼Æªº°f¨ç¼Æ¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ ÇáØÈíÚí ÇáÞíÇÓí ÇáÚßÓí.";
+ Text[ dutch ] = "Berekent de inverse standaardnormale verdeling.";
+ Text[ chinese_simplified ] = "±ê×¼Õý̬·Ö²¼º¯ÊýµÄÄ溯Êý¡£";
+ Text[ greek ] = "ÔéìÝò ôçò áíôßóôñïöçò ôõðéêÞò êáíïíéêÞò êáôáíïìÞò";
+ Text[ korean ] = "¿ª Ç¥ÁØ ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Ters standart normal daðýtým deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_STANDNORMINV );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "probability" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "probabilità" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Sandsynlighed" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "probabilidad" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "Šm—¦";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wahrscheinlichkeitswert, zu dem die inverse Standardnormalverteilung berechnet werden soll." ;
+ Text [ english ] = "is a probability corresponding to the normal distribution." ;
+ Text [ norwegian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Standardnormalverteilung berechnet werden soll." ;
+ Text [ italian ] = "è la probabilità corrispondente alla distribuzione normale." ;
+ Text [ portuguese_brazilian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Standardnormalverteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é a probabilidade para q qual deseja calcular a distribuição padrão normal." ;
+ Text [ finnish ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Standardnormalverteilung berechnet werden soll." ;
+ Text [ danish ] = "Sandsynligheden som den inverse standardnormalfordeling skal beregnes for." ;
+ Text [ french ] = "La valeur de probabilité pour laquelle la distribution normale standard inverse doît être calculée." ;
+ Text [ swedish ] = "Sannolikhetsvärdet för vilket den inversa standardnormalfördelningen skall beräknas." ;
+ Text [ dutch ] = "De kans die overeenkomt met de inverse standaardnormale verdeling." ;
+ Text [ spanish ] = "es una probabilidad que corresponde a la distribución normal." ;
+ Text [ english_us ] = "The probability value for which the inverse standard normal distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "±ê×¼Õý̬·Ö²¼µÄ¸ÅÂÊÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå âåðîÿòíîñòè, äëÿ êîòîðîãî íåîáõîäèìî âû÷èñëèòü îáðàòíîå çíà÷åíèå ñòàíäàðòíîãî íîðìàëüíîãî ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Prawdopodobieñstwo, dla którego ma zostaæ obliczona odwrotnoœæ standardowego rozk³adu normalnego.";
+ Text[ japanese ] = "³‹K•ª•z‚É‚¨‚¯‚é‹tŠÖ”‚ðŒvŽZ‚·‚é‚Ì‚ÉŽg‚í‚ê‚éŠm—¦B";
+ Text[ chinese_traditional ] = "¼Ð·Ç¥¿ºA¤À§Gªº·§²v­È¡C";
+ Text[ arabic ] = "ÇáÇÍÊãÇá ÇáãÑÇÏ ÍÓÇÈ ÇáÊæÒíÚ ÇáØÈíÚí ÇáÞíÇÓí ÇáÚßÓí áå.";
+ Text[ dutch ] = "De kans die overeenkomt met de inverse standaardnormale verdeling.";
+ Text[ chinese_simplified ] = "±ê×¼Õý̬·Ö²¼µÄ¸ÅÂÊÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ðéèáíüôçôáò ãéá ôçí ïðïßá èá õðïëïãéóôåß ç áíôßóôñïöç ôõðéêÞ êáíïíéêÞ êáôáíïìÞ.";
+ Text[ korean ] = "»êÃâµÉ ¿ª Ç¥ÁØ ÀÏ¹Ý ¹èºÐ¿¡ ´ëÇÑ È®À² °ª";
+ Text[ turkish ] = "Ters standart normal daðýtýmý hesaplanacak olasýlýk deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function LOGNORMVERT #*=-
+ Resource SC_OPCODE_LOG_NORM_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Lognormalverteilung" ;
+ Text [ english ] = "Returns the cumulative lognormal distribution of x, where ln(x) is normally distributed with parameters mean and standard_dev." ;
+ Text [ norwegian ] = "Werte der Lognormalverteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione lognormale." ;
+ Text [ portuguese_brazilian ] = "Werte der Lognormalverteilung" ;
+ Text [ portuguese ] = "Devolve a distribuição cumulativa log-normal." ;
+ Text [ finnish ] = "Werte der Lognormalverteilung" ;
+ Text [ danish ] = "Værdier for lognormalfordelingen" ;
+ Text [ french ] = "Valeurs de la distribution lognormale." ;
+ Text [ swedish ] = "Värden för lognormalfördelningen." ;
+ Text [ dutch ] = "Waarden van de logaritmische normale verdeling" ;
+ Text [ spanish ] = "Devuelve la probabilidad para una variable aleatoria continua siguiendo una distribución logarítmico-normal acumulativa" ;
+ Text [ english_us ] = "Values of the log normal distribution." ;
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯ÊýÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò èíòåãðàëüíîå ëîãíîðìàëüíîå ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wyznacza skumulowany rozk³ad logarytmo-normalny.";
+ Text[ japanese ] = "‘Δ³‹K—ÝÏ•ª•zŠÖ”‚Ì’lB";
+ Text[ chinese_traditional ] = "¹ï¼Æ¥¿ºA¤À§G¨ç¼Æ­È¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ ÇááæÛÇÑíÊãí ÇáØÈíÚí.";
+ Text[ dutch ] = "Waarden van de logaritmische normale verdeling";
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯ÊýÖµ¡£";
+ Text[ greek ] = "ÔéìÝò ôçò ëïãáñéèìéêÞò êáíïíéêÞò êáôáíïìÞò";
+ Text[ korean ] = "·Î±× ÀÏ¹Ý ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Lognormal daðýtýmýn deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_LOGNORMVERT );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die Lognormalverteilung berechnet werden soll." ;
+ Text [ english ] = "is the value at which to evaluate the function." ;
+ Text [ norwegian ] = "Der Wert, zu dem die Lognormalverteilung berechnet werden soll." ;
+ Text [ italian ] = "è il valore in cui calcolare la funzione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die Lognormalverteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor para o qual se deseja calcular a distribuição log-normal." ;
+ Text [ finnish ] = "Der Wert, zu dem die Lognormalverteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som lognormalfordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle la distribution lognormale doit être calculée." ;
+ Text [ swedish ] = "Värdet för vilket lognormalfördelningen skall beräknas." ;
+ Text [ dutch ] = "De waarde waarop de logaritmische normale verdeling moet worden berekend." ;
+ Text [ spanish ] = "es el valor al que desea evaluar la función." ;
+ Text [ english_us ] = "The value for which the log normal distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ÆËã¶ÔÊýÕý̬·Ö²¼µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðãî âû÷èñëÿåòñÿ ôóíêöèÿ.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ wyznaczony rozk³ad logarytmo-normalny.";
+ Text[ japanese ] = "‘Δ³‹K•ª•zŠÖ”‚É‘ã“ü‚·‚é’lB";
+ Text[ chinese_traditional ] = "¥Î¨Ó­pºâ¹ï¼Æ¥¿ºA¤À§Gªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÊí ÊÑíÏ ÚäÏåÇ ÍÓÇÈ ÇáÊæÒíÚ ÇááæÛÇÑíÊãí ÇáØÈíÚí.";
+ Text[ dutch ] = "De waarde waarop de logaritmische normale verdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ÆËã¶ÔÊýÕý̬·Ö²¼µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç ëïãáñéèìéêÞ êáíïíéêÞ êáôáíïìÞ.";
+ Text[ korean ] = "»êÃâµÉ ·Î±× ÀÏ¹Ý ¹èºÐ¿¡ ´ëÇÑ °ª";
+ Text[ turkish ] = "Lognormal daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "MW" ;
+ Text [ english ] = "mean" ;
+ Text [ norwegian ] = "MW" ;
+ Text [ italian ] = "media" ;
+ Text [ portuguese_brazilian ] = "MW" ;
+ Text [ portuguese ] = "Média" ;
+ Text [ finnish ] = "MW" ;
+ Text [ danish ] = "Middelværdi" ;
+ Text [ french ] = "Moyenne" ;
+ Text [ swedish ] = "MV" ;
+ Text [ dutch ] = "Gemiddelde" ;
+ Text [ spanish ] = "media" ;
+ Text [ english_us ] = "mean" ;
+ Text[ chinese_simplified ] = "mean";
+ Text[ russian ] = "Ñðåäíåå";
+ Text[ polish ] = "Œrednia wartoœæ";
+ Text[ japanese ] = "•½‹Ï";
+ Text[ chinese_traditional ] = "mean";
+ Text[ arabic ] = "Mean";
+ Text[ dutch ] = "Gemiddelde";
+ Text[ chinese_simplified ] = "mean";
+ Text[ greek ] = "Mean";
+ Text[ korean ] = "Æò±Õ";
+ Text[ turkish ] = "Ortalama";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Mittelwert. Der Mittelwert der Lognormalverteilung." ;
+ Text [ english ] = "is the mean of ln(x)." ;
+ Text [ norwegian ] = "Mittelwert. Der Mittelwert der Lognormalverteilung." ;
+ Text [ italian ] = "è la media di ln(x)." ;
+ Text [ portuguese_brazilian ] = "Mittelwert. Der Mittelwert der Lognormalverteilung." ;
+ Text [ portuguese ] = "é o valor médio da distribuição log-normal [ln(x)]." ;
+ Text [ finnish ] = "Mittelwert. Der Mittelwert der Lognormalverteilung." ;
+ Text [ danish ] = "Middelværdi. Lognormalfordelingens middelværdi." ;
+ Text [ french ] = "La moyenne de la distribution lognormale." ;
+ Text [ swedish ] = "Medelvärdet. Medelvärdet för lognormalfördelningen." ;
+ Text [ dutch ] = "Berekent het rekenkundige gemiddelde van de logaritmische normale verdeling." ;
+ Text [ spanish ] = "es la media de In(x)." ;
+ Text [ english_us ] = "Mean value. The mean value of the log normal distribution." ;
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯Êý ln(x) µÄƽ¾ùÖµ¡£";
+ Text[ russian ] = "Ñðåäíåå In(x).";
+ Text[ polish ] = "Wartoœæ œrednia dla rozk³adu logarytmo-normalnego ln(x).";
+ Text[ japanese ] = "•½‹ÏB‘Δ³‹K•ª•z‚Ì•½‹Ï’lB";
+ Text[ chinese_traditional ] = "¹ï¼Æ¥¿ºA¤À§G¨ç¼Æ ln(x) ªº¥­§¡­È¡C";
+ Text[ arabic ] = "ãÚÏá ÇáÊæÒíÚ ÇááæÛÇÑíÊãí ÇáØÈíÚí.";
+ Text[ dutch ] = "Berekent het rekenkundige gemiddelde van de logaritmische normale verdeling.";
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯Êý ln(x) µÄƽ¾ùÖµ¡£";
+ Text[ greek ] = "ÌÝóç ôéìÞ. Ç ìÝóç ôéìÞ ôçò ëïãáñéèìéêÞò êáíïíéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Áß°£°ª. ·Î±× Á¤±Ô ºÐÆ÷ÀÇ Áß°£°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ortalama deðer. Lognormal daðýtýmýn ortalama deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "STD" ;
+ Text [ english ] = "standard_dev" ;
+ Text [ norwegian ] = "STD" ;
+ Text [ italian ] = "dev_standard" ;
+ Text [ portuguese_brazilian ] = "STD" ;
+ Text [ portuguese ] = "Desvio_padrão" ;
+ Text [ finnish ] = "STD" ;
+ Text [ danish ] = "Standardafv" ;
+ Text [ french ] = "ET" ;
+ Text [ swedish ] = "STD" ;
+ Text [ dutch ] = "STDEV" ;
+ Text [ spanish ] = "desv_estándar" ;
+ Text [ english_us ] = "STDEV" ;
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ russian ] = "Ñòàíäàðòíîå_îòêë";
+ Text[ polish ] = "Odchylenie standardowe";
+ Text[ japanese ] = "•W€•Î·";
+ Text[ chinese_traditional ] = "standard_dev";
+ Text[ arabic ] = "Standard_dev";
+ Text[ dutch ] = "STDEV";
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ greek ] = "standard_dev";
+ Text[ korean ] = "standard_dev";
+ Text[ turkish ] = "STDEV";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Standardabweichung. Die Standardabweichung der Lognormalverteilung." ;
+ Text [ english ] = "is the standard deviation of ln(x)." ;
+ Text [ norwegian ] = "Standardabweichung. Die Standardabweichung der Lognormalverteilung." ;
+ Text [ italian ] = "è la deviazione standard di ln(x)." ;
+ Text [ portuguese_brazilian ] = "Standardabweichung. Die Standardabweichung der Lognormalverteilung." ;
+ Text [ portuguese ] = "é o desvio padrão da distribuição log-normal [ln(x)]." ;
+ Text [ finnish ] = "Standardabweichung. Die Standardabweichung der Lognormalverteilung." ;
+ Text [ danish ] = "Standardafvigelse. Lognormalfordelingens standardafvigelse." ;
+ Text [ french ] = "L'écart-type de la distribution lognormale." ;
+ Text [ swedish ] = "Standardavvikelse. Standardavvikelsen för lognormalfördelningen." ;
+ Text [ dutch ] = "De standaarddeviatie geeft aan in hoeverre waarden afwijken van de lognormalre verdeling." ;
+ Text [ spanish ] = "es la desviación estándar de In(x)." ;
+ Text [ english_us ] = "Standard deviation. The standard deviation of the log normal distribution." ;
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯Êý ln(x) µÄ±ê׼ƫ²î¡£";
+ Text[ russian ] = "Ñòàíäàðòíîå îòêëîíåíèå In(x).";
+ Text[ polish ] = "Odchylenie standardowe dla ln(x).";
+ Text[ japanese ] = "•W€•Î·B‘Δ³‹K•ª•z‚Ì•W€•Î·B";
+ Text[ chinese_traditional ] = "¹ï¼Æ¥¿ºA¤À§G¨ç¼Æ ln(x) ªº¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ááÊæÒíÚ ÇááæÛÇÑíÊãí ÇáØÈíÚí.";
+ Text[ dutch ] = "De standaarddeviatie geeft aan in hoeverre waarden afwijken van de lognormalre verdeling.";
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯Êý ln(x) µÄ±ê׼ƫ²î¡£";
+ Text[ greek ] = "ÔõðéêÞ áðüêëéóç. Ç ôõðéêÞ áðüêëéóç ôçò êáíïíéêÞò ëïãáñéèìéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Ç¥ÁØ ÆíÂ÷. ·Î±× ÀÏ¹Ý ¹èºÐÀÇÇ¥ÁØ ÆíÂ÷";
+ Text[ turkish ] = "Standart sapma. Lognormal daðýtýmýn standart sapmasý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function LOGINV #*=-
+ Resource SC_OPCODE_LOG_INV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der inversen Lognormalverteilung" ;
+ Text [ english ] = "Returns the inverse of the lognormal cumulative distribution function of x, where ln(x) is normally distributed with parameters mean and standard_dev." ;
+ Text [ norwegian ] = "Werte der inversen Lognormalverteilung" ;
+ Text [ italian ] = "Restituisce l'inversa della funzione di distribuzione lognormale." ;
+ Text [ portuguese_brazilian ] = "Werte der inversen Lognormalverteilung" ;
+ Text [ portuguese ] = "Devolve o inverso da distribuição log-normal." ;
+ Text [ finnish ] = "Werte der inversen Lognormalverteilung" ;
+ Text [ danish ] = "Værdier for den inverse lognormalfordeling" ;
+ Text [ french ] = "Valeurs de la distribution lognormale inverse." ;
+ Text [ swedish ] = "Värden för den inversa lognormalfördelningen." ;
+ Text [ dutch ] = "Geeft als resultaat de inverse van de logaritmische normale verdeling." ;
+ Text [ spanish ] = "Devuelve el valor de la variable aleatoria siguiendo una distribución logarítmico-normal de x" ;
+ Text [ english_us ] = "Values of the inverse of the lognormal distribution." ;
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯ÊýµÄÄ溯ÊýÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò îáðàòíîå ëîãàðèôìè÷åñêîå íîðìàëüíîå ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wyznacza odwrotnoœæ rozk³adu logarytmo-naturalnego.";
+ Text[ japanese ] = "‘Δ³‹KŒ^•ª•z‚Ì‹tŠÖ”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¹ï¼Æ¥¿ºA¤À§G¨ç¼Æªº°f¨ç¼Æ­È¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ ÇááæÛÇÑíÊãí ÇáØÈíÚí ÇáÚßÓí.";
+ Text[ dutch ] = "Geeft als resultaat de inverse van de logaritmische normale verdeling.";
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯ÊýµÄÄ溯ÊýÖµ¡£";
+ Text[ greek ] = "ÔéìÝò ôçò áíôßóôñïöçò ëïãáñéèìéêÞò êáíïíéêÞò êáôáíïìÞò";
+ Text[ korean ] = "¿ª ·Î±× ÀÏ¹Ý ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Ters lognormal daðýtýmýn deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_LOGINV );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "probability" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "probabilità" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Probabilidade" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Sandsynlighed" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "probabilidad" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "probability";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "Šm—¦";
+ Text[ chinese_traditional ] = "probability";
+ Text[ arabic ] = "Probability";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "probability";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wahrscheinlichkeitswert, zu dem die inverse Lognormalverteilung berechnet werden soll." ;
+ Text [ english ] = "is a probability associated with the lognormal distribution." ;
+ Text [ norwegian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Lognormalverteilung berechnet werden soll." ;
+ Text [ italian ] = "è la probabilità associata alla distribuzione lognormale." ;
+ Text [ portuguese_brazilian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Lognormalverteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é a probabilidade associada à distribuição log-normal." ;
+ Text [ finnish ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Lognormalverteilung berechnet werden soll." ;
+ Text [ danish ] = "Sandsynligheden som den inverse lognormalfordeling skal beregnes for." ;
+ Text [ french ] = "La valeur de probabilité pour laquelle la distribution lognormale inverse doit être calculée." ;
+ Text [ swedish ] = "Sannolikhetsvärdet som den inversa lognormalfördelningen skall beräknas för." ;
+ Text [ dutch ] = "De kans die samenhangt met de inverse logaritmische verdeling." ;
+ Text [ spanish ] = "es una probabilidad asociada con la distribución logarítmico-normal." ;
+ Text [ english_us ] = "The probability value for which the inverse log normal distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "Óë¶ÔÊýÕý̬·Ö²¼Ïà¹ØµÄ¸ÅÂÊÖµ¡£";
+ Text[ russian ] = "Âåðîÿòíîñòü, ñâÿçàííàÿ ñ íîðìàëüíûì ëîãàðèôìè÷åñêèì ðàñïðåäåëåíèåì.";
+ Text[ polish ] = "Prawdopodobieñstwo, dla którego ma zostaæ obliczona odwrotnoœæ rozk³adu logarytmo-naturalnego.";
+ Text[ japanese ] = "‘Δ³‹KŒ^•ª•z‚É”º‚¤Šm—¦B";
+ Text[ chinese_traditional ] = "»P¹ï¼Æ¥¿ºA¤À§G¬ÛÃöªº·§²v­È¡C";
+ Text[ arabic ] = "ÇáÇÍÊãÇá ÇáãÞÊÑä ãÚ ÇáÊæÒíÚ ÇááæÛÇÑíÊãí ÇáØÈíÚí.";
+ Text[ dutch ] = "De kans die samenhangt met de inverse logaritmische verdeling.";
+ Text[ chinese_simplified ] = "Óë¶ÔÊýÕý̬·Ö²¼Ïà¹ØµÄ¸ÅÂÊÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ðéèáíüôçôáò ãéá ôçí ïðïßá èá õðïëïãéóôåß ç áíôßóôñïöç ëïãáñéèìéêÞ êáíïíéêÞ êáôáíïìÞ.";
+ Text[ korean ] = "·Î±× Á¤±Ô ºÐÆ÷ÇÔ¼öÀÇ ¿ªÀÌ °è»êµÇ¾î¾ß ÇÒ È®·ü°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ters lognormal daðýtýmý hesaplanacak olasýlýk deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "MW" ;
+ Text [ english ] = "mean" ;
+ Text [ norwegian ] = "MW" ;
+ Text [ italian ] = "media" ;
+ Text [ portuguese_brazilian ] = "MW" ;
+ Text [ portuguese ] = "Média" ;
+ Text [ finnish ] = "MW" ;
+ Text [ danish ] = "Middelværdi" ;
+ Text [ french ] = "Moyenne" ;
+ Text [ swedish ] = "MV" ;
+ Text [ dutch ] = "Gemiddelde" ;
+ Text [ spanish ] = "media" ;
+ Text [ english_us ] = "mean" ;
+ Text[ chinese_simplified ] = "mean";
+ Text[ russian ] = "Ñðåäíåå";
+ Text[ polish ] = "Œrednia wartoœæ";
+ Text[ japanese ] = "•½‹Ï";
+ Text[ chinese_traditional ] = "mean";
+ Text[ arabic ] = "Mean";
+ Text[ dutch ] = "Gemiddelde";
+ Text[ chinese_simplified ] = "mean";
+ Text[ greek ] = "Mean";
+ Text[ korean ] = "Æò±Õ";
+ Text[ turkish ] = "Ortalama";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Mittelwert. Der Mittelwert der Lognormalverteilung." ;
+ Text [ english ] = "is the mean of ln(x)." ;
+ Text [ norwegian ] = "Mittelwert. Der Mittelwert der Lognormalverteilung." ;
+ Text [ italian ] = "è la media di ln(x)." ;
+ Text [ portuguese_brazilian ] = "Mittelwert. Der Mittelwert der Lognormalverteilung." ;
+ Text [ portuguese ] = "é o valor médio da distribuição log-normal [ln(x)]." ;
+ Text [ finnish ] = "Mittelwert. Der Mittelwert der Lognormalverteilung." ;
+ Text [ danish ] = "Middelværdi. Lognormalfordelingens middelværdi." ;
+ Text [ french ] = "La moyenne de la distribution lognormale." ;
+ Text [ swedish ] = "Medelvärde. Medelvärdet för lognormalfördelningen." ;
+ Text [ dutch ] = "Berekent het rekenkundige gemiddelde van de logaritmische normale verdeling." ;
+ Text [ spanish ] = "es la media de ln(x)." ;
+ Text [ english_us ] = "Mean value. The mean value of the log normal distribution." ;
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯Êý ln(x) µÄƽ¾ùÖµ¡£";
+ Text[ russian ] = "Ñðåäíåå In(x).";
+ Text[ polish ] = "Wartoœæ œrednia dla rozk³adu logarytmo-normalnego ln(x).";
+ Text[ japanese ] = "•½‹ÏB‘Δ³‹KŒ^•ª•z‚Ì•½‹Ï’lB";
+ Text[ chinese_traditional ] = "¹ï¼Æ¥¿ºA¤À§G¨ç¼Æ ln(x) ªº¥­§¡­È¡C";
+ Text[ arabic ] = "ãÚÏá ÇáÊæÒíÚ ÇááæÛÇÑíÊãí ÇáØÈíÚí.";
+ Text[ dutch ] = "Berekent het rekenkundige gemiddelde van de logaritmische normale verdeling.";
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯Êý ln(x) µÄƽ¾ùÖµ¡£";
+ Text[ greek ] = "ÌÝóç ôéìÞ. Ç ìÝóç ôéìÞ ôçò ëïãáñéèìéêÞò êáíïíéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Áß°£°ª. ·Î±× Á¤±Ô ºÐÆ÷ÀÇ Áß°£°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ortalama deðer. Lognormal daðýlýmýn ortalama deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "STD" ;
+ Text [ english ] = "standard_dev" ;
+ Text [ norwegian ] = "STD" ;
+ Text [ italian ] = "dev_standard" ;
+ Text [ portuguese_brazilian ] = "STD" ;
+ Text [ portuguese ] = "Desvio_padrão" ;
+ Text [ finnish ] = "STD" ;
+ Text [ danish ] = "Standardafv" ;
+ Text [ french ] = "ET" ;
+ Text [ swedish ] = "STD" ;
+ Text [ dutch ] = "STDEV" ;
+ Text [ spanish ] = "desv_estándar" ;
+ Text [ english_us ] = "STDEV" ;
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ russian ] = "Ñòàíäàðòíîå_îòêë";
+ Text[ polish ] = "Odchylenie standardowe";
+ Text[ japanese ] = "•W€•Î·";
+ Text[ chinese_traditional ] = "standard_dev";
+ Text[ arabic ] = "Standard_dev";
+ Text[ dutch ] = "STDEV";
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ greek ] = "standard_dev";
+ Text[ korean ] = "standard_dev";
+ Text[ turkish ] = "STDEV";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Standardabweichung. Die Standardabweichung der Lognormalverteilung." ;
+ Text [ english ] = "is the standard deviation of ln(x)." ;
+ Text [ norwegian ] = "Standardabweichung. Die Standardabweichung der Lognormalverteilung." ;
+ Text [ italian ] = "è la deviazione standard di ln(x)." ;
+ Text [ portuguese_brazilian ] = "Standardabweichung. Die Standardabweichung der Lognormalverteilung." ;
+ Text [ portuguese ] = "é o desvio padrão da distribuição log-normal [ln(x)]." ;
+ Text [ finnish ] = "Standardabweichung. Die Standardabweichung der Lognormalverteilung." ;
+ Text [ danish ] = "Standardafvigelse. Lognormalfordelingens standardafvigelse." ;
+ Text [ french ] = "L'écart-type de la distribution lognormale." ;
+ Text [ swedish ] = "Standardavvikelse. Standardavvikelsen för lognormalfördelningen." ;
+ Text [ dutch ] = "De standaarddeviatie geeft aan in hoeverre waarden afwijken van de logaritmische normale verdeling." ;
+ Text [ spanish ] = "es la desviación estándar de ln(x)." ;
+ Text [ english_us ] = "Standard deviation. The standard deviation of the log normal distribution." ;
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯Êý ln(x) µÄ±ê׼ƫ²î¡£";
+ Text[ russian ] = "Ñòàíäàðòíîå îòêëîíåíèå In(x).";
+ Text[ polish ] = "Odchylenie standardowe dal ln(x).";
+ Text[ japanese ] = "•W€•Î·B‘Δ³‹KŒ^•ª•z‚Ì•W€•Î·B";
+ Text[ chinese_traditional ] = "¹ï¼Æ¥¿ºA¤À§G¨ç¼Æ ln(x) ªº¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ááÊæÒíÚ ÇááæÛÇÑíÊãí ÇáØÈíÚí.";
+ Text[ dutch ] = "De standaarddeviatie geeft aan in hoeverre waarden afwijken van de logaritmische normale verdeling.";
+ Text[ chinese_simplified ] = "¶ÔÊýÕý̬·Ö²¼º¯Êý ln(x) µÄ±ê׼ƫ²î¡£";
+ Text[ greek ] = "ÔõðéêÞ áðüêëéóç. Ç ôõðéêÞ áðüêëéóç ôçò êáíïíéêÞò ëïãáñéèìéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Ç¥ÁØ ÆíÂ÷. ·Î±× ÀÏ¹Ý ¹èºÐÀÇÇ¥ÁØ ÆíÂ÷";
+ Text[ turkish ] = "Standart sapma. Lognormal daðýtýmýn standart sapmasý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function EXPONVERT #*=-
+ Resource SC_OPCODE_EXP_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Exponentialverteilung" ;
+ Text [ english ] = "Returns the exponential distribution." ;
+ Text [ norwegian ] = "Werte der Exponentialverteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione esponenziale." ;
+ Text [ portuguese_brazilian ] = "Werte der Exponentialverteilung" ;
+ Text [ portuguese ] = "Devolve a distribuição exponencial." ;
+ Text [ finnish ] = "Werte der Exponentialverteilung" ;
+ Text [ danish ] = "Værdier for eksponentialfordelingen" ;
+ Text [ french ] = "Valeurs de la distribution exponentielle." ;
+ Text [ swedish ] = "Värden för exponentialfördelningen." ;
+ Text [ dutch ] = "Geeft als resultaat de exponentiële verdeling." ;
+ Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribución exponencial" ;
+ Text [ english_us ] = "Values of the exponential distribution." ;
+ Text[ chinese_simplified ] = "¼ÆËãÖ¸Êý·Ö²¼¡£";
+ Text[ russian ] = "Âîçâðàùàåò ýêñïîíåíöèàëüíîå çíà÷åíèå.";
+ Text[ polish ] = "Wyznacza rozk³ad wyk³adniczy";
+ Text[ japanese ] = "Žw”•ª•zŠÖ”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ«ü¼Æ¤À§G¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ ÇáÃÓí.";
+ Text[ dutch ] = "Geeft als resultaat de exponentiële verdeling.";
+ Text[ chinese_simplified ] = "¼ÆËãÖ¸Êý·Ö²¼¡£";
+ Text[ greek ] = "ÔéìÝò ôçò åêèåôéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Áö¼ö ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Üstel daðýtýmýn deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_EXPONVERT );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die Exponentialverteilung berechnet werden soll." ;
+ Text [ english ] = "is the value of the function." ;
+ Text [ norwegian ] = "Der Wert, zu dem die Exponentialverteilung berechnet werden soll." ;
+ Text [ italian ] = "è il valore della funzione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die Exponentialverteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor para o qual se deseja calcular a distribuição exponencial." ;
+ Text [ finnish ] = "Der Wert, zu dem die Exponentialverteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som eksponentialfordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle la distribution exponentielle doit être calculée." ;
+ Text [ swedish ] = "Värdet som exponentialfördelningen skall beräknas för." ;
+ Text [ dutch ] = "De waarde waarop de exponentiële verdeling moet worden berekend." ;
+ Text [ spanish ] = "es el valor de la función." ;
+ Text [ english_us ] = "The value to which the exponential distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "º¯ÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå ôóíêöèè.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony rozk³ad wyk³adniczy.";
+ Text[ japanese ] = "Žw”•ª•zŠÖ”‚ð•Ô‚·”’lB";
+ Text[ chinese_traditional ] = "¨ç¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÍÓÇÈ ÇáÊæÒíÚ ÇáÃÓí áåÇ.";
+ Text[ dutch ] = "De waarde waarop de exponentiële verdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "º¯ÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ïðïßáò èá õðïëïãéóôåß ç åêèåôéêÞ êáôáíïìÞ.";
+ Text[ korean ] = "»êÃâµÉ Áö¼öÀÇ ¹èºÐ ÀÇ °ª";
+ Text[ turkish ] = "Üstel daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Lambda" ;
+ Text [ english ] = "lambda" ;
+ Text [ norwegian ] = "Lambda" ;
+ Text [ italian ] = "lambda" ;
+ Text [ portuguese_brazilian ] = "Lambda" ;
+ Text [ portuguese ] = "Lambda" ;
+ Text [ finnish ] = "Lambda" ;
+ Text [ danish ] = "Lambda" ;
+ Text [ french ] = "Lambda" ;
+ Text [ swedish ] = "lambda" ;
+ Text [ dutch ] = "Lambda" ;
+ Text [ spanish ] = "lambda" ;
+ Text [ english_us ] = "lambda" ;
+ Text[ chinese_simplified ] = "lambda";
+ Text[ russian ] = "Ëÿìáäà";
+ Text[ polish ] = "Lambda";
+ Text[ japanese ] = "ă";
+ Text[ chinese_traditional ] = "lambda";
+ Text[ arabic ] = "Lambda";
+ Text[ dutch ] = "Lambda";
+ Text[ chinese_simplified ] = "lambda";
+ Text[ greek ] = "ë";
+ Text[ korean ] = "lambda";
+ Text[ turkish ] = "Lambda";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Parameter der Exponentialverteilung." ;
+ Text [ english ] = "is the parameter value." ;
+ Text [ norwegian ] = "Der Parameter der Exponentialverteilung." ;
+ Text [ italian ] = "è il valore del parametro." ;
+ Text [ portuguese_brazilian ] = "Der Parameter der Exponentialverteilung." ;
+ Text [ portuguese ] = "é o valor do parâmetro." ;
+ Text [ finnish ] = "Der Parameter der Exponentialverteilung." ;
+ Text [ danish ] = "Eksponentialfordelingens parameter." ;
+ Text [ french ] = "Le paramètre de la distribution exponentielle." ;
+ Text [ swedish ] = "Exponentialfördelningens parameter." ;
+ Text [ dutch ] = "De parameter van de exponentiële verdeling." ;
+ Text [ spanish ] = "es el valor del parámetro^de la distribución exponencial." ;
+ Text [ english_us ] = "The parameters of the exponential distribution." ;
+ Text[ chinese_simplified ] = "²ÎÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå ïàðàìåòðà.";
+ Text[ polish ] = "Parametr rozk³adu wyk³adniczego.";
+ Text[ japanese ] = "Êß×Ò°À‚Ì’l¡";
+ Text[ chinese_traditional ] = "°Ñ¼Æ­È¡C";
+ Text[ arabic ] = "ãÚáãÉ ÇáÊæÒíÚ ÇáÃÓí.";
+ Text[ dutch ] = "De parameter van de exponentiële verdeling.";
+ Text[ chinese_simplified ] = "²ÎÊýÖµ¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò ôçò åêèåôéêÞò êáôáíïìÞò.";
+ Text[ korean ] = "Áö¼ö ¹èºÐÀÇ ÆĶó¹ÌÅÍ";
+ Text[ turkish ] = "Üstel daðýtýmýn parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "K" ;
+ Text [ english ] = "cumulative" ;
+ Text [ norwegian ] = "K" ;
+ Text [ italian ] = "cumulativo" ;
+ Text [ portuguese_brazilian ] = "K" ;
+ Text [ portuguese ] = "Cumulativo" ;
+ Text [ finnish ] = "K" ;
+ Text [ danish ] = "Kumulativ" ;
+ Text [ french ] = "C" ;
+ Text [ swedish ] = "kumulativ" ;
+ Text [ dutch ] = "C" ;
+ Text [ spanish ] = "acum" ;
+ Text [ english_us ] = "C" ;
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ russian ] = "Èíòåãðàëüíûé";
+ Text[ polish ] = "Skumulowany";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®";
+ Text[ chinese_traditional ] = "cumulative";
+ Text[ arabic ] = "Cumulative";
+ Text[ dutch ] = "C";
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ greek ] = "cumulative";
+ Text[ korean ] = "´©Àû";
+ Text[ turkish ] = "C";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ english ] = "is a logical value that indicates which form of the exponential function to provide." ;
+ Text [ norwegian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ italian ] = "è un valore logico che determina la forma assunta dalla funzione esponenziale." ;
+ Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ portuguese ] = "é um valor lógico que indica a forma da função. 0 devolve a função de distribuição cumulativa e 1 a distribuição." ;
+ Text [ finnish ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ danish ] = "Kumulativ. K = 0 beregner tæthedsfunktionen, K = 1 fordelingen." ;
+ Text [ french ] = "Cumulative. C = 0 calcule la fonction de densité, C = 1 la distribution." ;
+ Text [ swedish ] = "Kumulerat. K = 0 beräknar täthetsfunktionen, K = 1 fördelningen." ;
+ Text [ dutch ] = "Cumulatief. C = 0 berekent de dichtheid, C = 1 de verdeling." ;
+ Text [ spanish ] = "es un valor lógico que indica la forma de la función. 0 devuelve la función de distribución acumulativa, 1 la distribución." ;
+ Text [ english_us ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
+ Text[ chinese_simplified ] = "Ö¸¶¨º¯ÊýÀàÐ͵ÄÂß¼­Öµ¡£ K = 0 ΪÃܶȺ¯Êý£¬ \nK = 1 ΪÀÛ»ý·Ö²¼º¯Êý¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå, êîòîðîå óêàçûâàåò, ôóíêöèþ êàêîãî âèäà èñïîëüçîâàòü: ôóíêöèþ ïëîòíîñòè (0) èëè ôóíêöèþ ðàñïðåäåëåíèÿ (1).";
+ Text[ polish ] = "Skumulowany. 0 wyznacza gêstoœæ, 1 - rozk³ad.";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®BŠÖ”Œ`Ž®=0‚É‚·‚é‚Æ—ÝÏ•ª•zŠÖ”‚ªAŠÖ”Œ`Ž®=1‚É‚·‚é‚ÆŠm—¦–§“xŠÖ”‚ª•Ô‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ü©w¨ç¼ÆÃþ«¬ªºÅÞ¿è­È¡C K = 0 ¬°±K«×¨ç¼Æ¡M K = 1 ¬°²Ö¿n¤À§G¨ç¼Æ¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ ÊÍÏÏ äãØ ÇáÏÇáÉ.";
+ Text[ dutch ] = "Cumulatief. C = 0 berekent de dichtheid, C = 1 de verdeling.";
+ Text[ chinese_simplified ] = "Ö¸¶¨º¯ÊýÀàÐ͵ÄÂß¼­Öµ¡£ K = 0 ΪÃܶȺ¯Êý£¬ \nK = 1 ΪÀÛ»ý·Ö²¼º¯Êý¡£";
+ Text[ greek ] = "ÁèñïéóôéêÜ. Ê = 0 õðïëïãßæåé ôçí óõíÜñôçóç ðõêíüôçôáò, Ê = 1 ôçí êáôáíïìÞ.";
+ Text[ korean ] = "´©Àû. ´©Àû=0Àº ¹Ðµµ ÇÔ¼ö¸¦ »êÃâÇÏ°í ´©Àû=1Àº ºÐÆ÷¸¦ »êÃâÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Kümülasyon. K = 0 yoðunluk fonksiyonunu, K = 1 ise daðýtýmý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GAMMAVERT #*=-
+ Resource SC_OPCODE_GAMMA_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Gamma-Verteilung" ;
+ Text [ english ] = "Returns the gamma distribution." ;
+ Text [ norwegian ] = "Werte der Gamma-Verteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione gamma." ;
+ Text [ portuguese_brazilian ] = "Werte der Gamma-Verteilung" ;
+ Text [ portuguese ] = "Devolve a distribuição gama." ;
+ Text [ finnish ] = "Werte der Gamma-Verteilung" ;
+ Text [ danish ] = "Værdier for gammafordelingen" ;
+ Text [ french ] = "Valeurs de la distribution Gamma." ;
+ Text [ swedish ] = "Värden för gammafördelningen." ;
+ Text [ dutch ] = "Geeft als resultaat de gamma-verdeling." ;
+ Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria siguiendo una distribución gamma" ;
+ Text [ english_us ] = "Values of the gamma distribution." ;
+ Text[ chinese_simplified ] = "¼ÆËãÙ¤Âê·Ö²¼¡£";
+ Text[ russian ] = "Âîçâðàùàåò ãàììà-ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wartoœci rozk³adu gamma";
+ Text[ japanese ] = "¶ÞÝÏ•ª•zŠÖ”‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¦÷º¿¤À§G¡C";
+ Text[ arabic ] = "Þíã ÊæÒíÚ ÛÇãÇ.";
+ Text[ dutch ] = "Geeft als resultaat de gamma-verdeling.";
+ Text[ chinese_simplified ] = "¼ÆËãÙ¤Âê·Ö²¼¡£";
+ Text[ greek ] = "ÔéìÝò ôçò êáôáíïìÞò ÃÜììá.";
+ Text[ korean ] = "°¨¸¶ ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Gamma daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_GAMMAVERT );
+ 4; 0; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die Gamma-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is the value at which you want to evaluate the distribution." ;
+ Text [ norwegian ] = "Der Wert, zu dem die Gamma-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "Il valore per il quale si vuole calcolare la distribuzione gamma" ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die Gamma-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor para o qual deseja calcular a distribuição gama." ;
+ Text [ finnish ] = "Der Wert, zu dem die Gamma-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som gammafordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle vous voulez calculer la distribution Gamma." ;
+ Text [ swedish ] = "Värdet som gammafördelningen skall beräknas för." ;
+ Text [ dutch ] = "De waarde, waarop de gamma-verdeling moet worden berekend." ;
+ Text [ spanish ] = "es el valor al que desea evaluar la distribución." ;
+ Text [ english_us ] = "The value for which the gamma distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ÆËãÙ¤Âê·Ö²¼µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî òðåáóåòñÿ âû÷èñëèòü ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony rozk³ad gamma.";
+ Text[ japanese ] = "ŠÖ”‚É‘ã“ü‚·‚é’lB";
+ Text[ chinese_traditional ] = "¥Î¨Ó­pºâ¦÷º¿¤À§Gªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÊí ÊÑíÏ ÚäÏåÇ ÍÓÇÈ ÊæÒíÚ ÛÇãÇ.";
+ Text[ dutch ] = "De waarde, waarop de gamma-verdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ÆËãÙ¤Âê·Ö²¼µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç êáôáíïìÞ ÃÜììá.";
+ Text[ korean ] = "»êÃâµÉ °¨¸¶ ¹èºÐ¿¡ ´ëÇÑ °ª";
+ Text[ turkish ] = "Gamma daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Alpha" ;
+ Text [ english ] = "alpha" ;
+ Text [ norwegian ] = "Alpha" ;
+ Text [ italian ] = "alfa" ;
+ Text [ portuguese_brazilian ] = "Alpha" ;
+ Text [ portuguese ] = "Alfa" ;
+ Text [ finnish ] = "Alpha" ;
+ Text [ danish ] = "Alfa" ;
+ Text [ french ] = "Alpha" ;
+ Text [ swedish ] = "alfa" ;
+ Text [ dutch ] = "Alfa" ;
+ Text [ spanish ] = "alfa" ;
+ Text [ english_us ] = "alpha" ;
+ Text[ chinese_simplified ] = "alpha";
+ Text[ russian ] = "Àëüôà";
+ Text[ polish ] = "Alfa";
+ Text[ japanese ] = "ƒ¿";
+ Text[ chinese_traditional ] = "alpha";
+ Text[ arabic ] = "Alpha";
+ Text[ dutch ] = "Alfa";
+ Text[ chinese_simplified ] = "alpha";
+ Text[ greek ] = "á";
+ Text[ korean ] = "¾ËÆÄ";
+ Text[ turkish ] = "Alfa";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Parameter Alpha der Gamma-Verteilung." ;
+ Text [ english ] = "is a parameter to the distribution." ;
+ Text [ norwegian ] = "Der Parameter Alpha der Gamma-Verteilung." ;
+ Text [ italian ] = "Il parametro della distribuzione gamma" ;
+ Text [ portuguese_brazilian ] = "Der Parameter Alpha der Gamma-Verteilung." ;
+ Text [ portuguese ] = "é o parâmetro alfa da distribuição gama." ;
+ Text [ finnish ] = "Der Parameter Alpha der Gamma-Verteilung." ;
+ Text [ danish ] = "Parameter alfa i gammafordelingen." ;
+ Text [ french ] = "Le paramètre Alpha de la distribution Gamma." ;
+ Text [ swedish ] = "Parametern alfa till fördelningen." ;
+ Text [ dutch ] = "De paramter Alfa van de gamma-verdeling." ;
+ Text [ spanish ] = "es un parámetro de la distribución." ;
+ Text [ english_us ] = "The Alpha parameter of the Gamma distribution." ;
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄ²ÎÊý°¢¶û·¨¡£";
+ Text[ russian ] = "Ïàðàìåòð ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Parametr alfa w rozk³adzie gamma.";
+ Text[ japanese ] = "•ª•z‚ɑ΂·‚éÊß×Ò°ÀB";
+ Text[ chinese_traditional ] = "¦÷º¿¤À§Gªº°Ñ¼Æªüº¸ªk¡C";
+ Text[ arabic ] = "ÇáãÚáãÉ ÃáÝÇ áÊæÒíÚ ÛÇãÇ.";
+ Text[ dutch ] = "De paramter Alfa van de gamma-verdeling.";
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄ²ÎÊý°¢¶û·¨¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò á ôçò êáôáíïìÞò ÃÜììá.";
+ Text[ korean ] = "°¨¸¶ ºÐÆ÷ÀÇ ÆĶó¹ÌÅÍ ¾ËÆÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Gamma daðýtýmýnýn alfa parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Beta" ;
+ Text [ english ] = "beta" ;
+ Text [ norwegian ] = "Beta" ;
+ Text [ italian ] = "Beta" ;
+ Text [ portuguese_brazilian ] = "Beta" ;
+ Text [ portuguese ] = "Beta" ;
+ Text [ finnish ] = "Beta" ;
+ Text [ danish ] = "Beta" ;
+ Text [ french ] = "Bêta" ;
+ Text [ swedish ] = "beta" ;
+ Text [ dutch ] = "Beta" ;
+ Text [ spanish ] = "beta" ;
+ Text [ english_us ] = "beta" ;
+ Text[ chinese_simplified ] = "beta";
+ Text[ russian ] = "Áåòà";
+ Text[ polish ] = "Beta";
+ Text[ japanese ] = "ƒÀ";
+ Text[ chinese_traditional ] = "beta";
+ Text[ arabic ] = "Beta";
+ Text[ dutch ] = "Beta";
+ Text[ chinese_simplified ] = "beta";
+ Text[ greek ] = "ÂÞôá";
+ Text[ korean ] = "º£Å¸";
+ Text[ turkish ] = "Beta";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Der Parameter Beta der Gamma-Verteilung." ;
+ Text [ english ] = "is a parameter to the distribution." ;
+ Text [ norwegian ] = "Der Parameter Beta der Gamma-Verteilung." ;
+ Text [ italian ] = "Il parametro beta della distribuzione gamma" ;
+ Text [ portuguese_brazilian ] = "Der Parameter Beta der Gamma-Verteilung." ;
+ Text [ portuguese ] = "é o parâmetro beta da distribuição gama." ;
+ Text [ finnish ] = "Der Parameter Beta der Gamma-Verteilung." ;
+ Text [ danish ] = "Parameter beta i gammafordelingen." ;
+ Text [ french ] = "Le paramètre Bêta de la distribution Gamma." ;
+ Text [ swedish ] = "Parametern beta för gammafördelningen." ;
+ Text [ dutch ] = "De parameter Beta van de gamma-verdeling." ;
+ Text [ spanish ] = "es un parámetro de la distribución." ;
+ Text [ english_us ] = "The Beta parameter of the Gamma distribution." ;
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄ²ÎÊý±´Ëþ¡£";
+ Text[ russian ] = "Ïàðàìåòð ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Parametr beta w rozk³adzie gamma.";
+ Text[ japanese ] = "•ª•z‚ɑ΂·‚éÊß×Ò°ÀB";
+ Text[ chinese_traditional ] = "¦÷º¿¤À§Gªº°Ñ¼Æ¨©¶ð¡C";
+ Text[ arabic ] = "ÇáãÚáãÉ ÈíÊÇ áÊæÒíÚ ÛÇãÇ.";
+ Text[ dutch ] = "De parameter Beta van de gamma-verdeling.";
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄ²ÎÊý±´Ëþ¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò â ôçò êáôáíïìÞò ÃÜììá.";
+ Text[ korean ] = "°¨¸¶ ºÐÆ÷ÀÇ ÆĶó¹ÌÅÍ º£Å¸ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Gamma daðýtýmýnýn beta parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "K" ;
+ Text [ english ] = "cumulative" ;
+ Text [ norwegian ] = "K" ;
+ Text [ italian ] = "cumulativo" ;
+ Text [ portuguese_brazilian ] = "K" ;
+ Text [ portuguese ] = "Cumulativo" ;
+ Text [ finnish ] = "K" ;
+ Text [ danish ] = "K" ;
+ Text [ french ] = "C" ;
+ Text [ swedish ] = "kumulativ" ;
+ Text [ dutch ] = "C" ;
+ Text [ spanish ] = "acum" ;
+ Text [ english_us ] = "C" ;
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ russian ] = "Èíòåãðàëüíûé";
+ Text[ polish ] = "Skumulowany";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®";
+ Text[ chinese_traditional ] = "cumulative";
+ Text[ arabic ] = "Cumulative";
+ Text[ dutch ] = "C";
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ greek ] = "cumulative";
+ Text[ korean ] = "´©Àû";
+ Text[ turkish ] = "C";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ english ] = "is a logical value that determines the form of the function." ;
+ Text [ norwegian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ italian ] = "Cumulativo. Se K=0 viene calcolata la funzione massa di probabilità, se K=1 viene calcolata la distribuzione cumulativa." ;
+ Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ portuguese ] = "é um valor lógico que determina o modo da função. 0 devolve a função cumulativa; 1 devolve a distribuição." ;
+ Text [ finnish ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ danish ] = "Kumulativ. K = 0 beregner tæthedsfunktionen, K = 1 fordelingen." ;
+ Text [ french ] = "Cumulative. C = 0 calcule la fonction de densité, C = 1 la distribution." ;
+ Text [ swedish ] = "Kumulerat. K = 0 beräknar täthetsfunktionen, K = 1 fördelningen." ;
+ Text [ dutch ] = "Cumulatief. C = 0 berekent vorm van de functie, C = 1 de verdeling." ;
+ Text [ spanish ] = "es un valor lógico que determina la forma de la función. Si es 0 devuelve la función de distribución acumulativa, si es 1 devuelve la distribución." ;
+ Text [ english_us ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
+ Text[ chinese_simplified ] = "Ö¸¶¨º¯ÊýÀàÐ͵ÄÂß¼­Öµ¡£ K = 0 ΪÃܶȺ¯Êý£¬ \nK = 1 ΪÀÛ»ý·Ö²¼º¯Êý¡£";
+ Text[ russian ] = "Ëîãè÷åñêîå çíà÷åíèå, îïðåäåëÿþùåå âèä ôóíêöèè: ôóíêöèÿ ïëîòíîñòè (0) èëè ôóíêöèÿ ðàñïðåäåëåíèÿ (1).";
+ Text[ polish ] = "Skumulowany. 0 wyznacza gêstoœæ, 1 - rozk³ad.";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®BŠÖ”Œ`Ž®=0‚É‚·‚é‚ÆŠm—¦—ÊŠÖ”‚Ì’l‚ÉAŠÖ”Œ`Ž®=1‚É‚·‚é‚Æ—ÝÏ•ª•zŠÖ”‚Ì’l‚Æ‚È‚è‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ü©w¨ç¼ÆÃþ«¬ªºÅÞ¿è­È¡C K = 0 ¬°±K«×¨ç¼Æ¡M K = 1 ¬°²Ö¿n¤À§G¨ç¼Æ¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ ÊÍÏÏ äãØ ÇáÏÇáÉ.";
+ Text[ dutch ] = "Cumulatief. C = 0 berekent vorm van de functie, C = 1 de verdeling.";
+ Text[ chinese_simplified ] = "Ö¸¶¨º¯ÊýÀàÐ͵ÄÂß¼­Öµ¡£ K = 0 ΪÃܶȺ¯Êý£¬ \nK = 1 ΪÀÛ»ý·Ö²¼º¯Êý¡£";
+ Text[ greek ] = "ÁèñïéóôéêÜ. Ê = 0 õðïëïãßæåé ôçí óõíÜñôçóç ðõêíüôçôáò, Ê = 1 ôçí êáôáíïìÞ.";
+ Text[ korean ] = "´©Àû. ´©Àû=0Àº ¹Ðµµ ÇÔ¼ö¸¦ °è»êÇÏ°í, ´©Àû=1Àº ºÐÆ÷¸¦ °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Kümülasyon. K = 0 yoðunluk fonksiyonunu, K = 1 ise daðýtýmý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GAMMAINV #*=-
+ Resource SC_OPCODE_GAMMA_INV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der inversen Gamma-Verteilung" ;
+ Text [ english ] = "Returns the inverse of the gamma cumulative distribution." ;
+ Text [ norwegian ] = "Werte der inversen Gamma-Verteilung" ;
+ Text [ italian ] = "Restituisce l'inversa della distribuzione gamma." ;
+ Text [ portuguese_brazilian ] = "Werte der inversen Gamma-Verteilung" ;
+ Text [ portuguese ] = "Devolve o inverso da distribuição cumulativa gama." ;
+ Text [ finnish ] = "Werte der inversen Gamma-Verteilung" ;
+ Text [ danish ] = "Værdier for den inverse gammafordeling" ;
+ Text [ french ] = "Valeurs de la distribution Gamma inverse." ;
+ Text [ swedish ] = "Värden för den inversa gammafördelningen." ;
+ Text [ dutch ] = "Berekent de inverse gamma-verdeling." ;
+ Text [ spanish ] = "Devuelve, para una probabilidad dada, el valor inverso de la variable aleatoria siguiendo una distribución gamma acumulativa" ;
+ Text [ english_us ] = "Values of the inverse gamma distribution." ;
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄÄ溯ÊýÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò îáðàòíîå ãàììà-ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wyznacza odwrotnoœæ rozk³adu gamma";
+ Text[ japanese ] = "¶ÞÝÏ•ª•zŠÖ”‚Ì‹tŠÖ”‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦÷º¿¤À§Gªº°f¨ç¼Æ­È¡C";
+ Text[ arabic ] = "Þíã ÊæÒíÚ ÛÇãÇ ÇáÚßÓí.";
+ Text[ dutch ] = "Berekent de inverse gamma-verdeling.";
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄÄ溯ÊýÖµ¡£";
+ Text[ greek ] = "ÔéìÝò ôçò áíôßóôñïöçò êáôáíïìÞò ÃÜììá.";
+ Text[ korean ] = "¿ª °¨¸¶ ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Ters gamma daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_GAMMAINV );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "probability" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "probabilità" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Sandsynlighed" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "probabilidad" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wahrscheinlichkeitswert, zu dem die inverse Gamma-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is the probability associated with the gamma distribution." ;
+ Text [ norwegian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Gamma-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è la probabilità associata alla distribuzione gamma." ;
+ Text [ portuguese_brazilian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Gamma-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é a probabilidade associada à distribuição gama." ;
+ Text [ finnish ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Gamma-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Sandsynligheden som den inverse gammafordeling skal beregnes for." ;
+ Text [ french ] = "La valeur de probabilité pour laquelle vous voulez calculer la distribution Gamma inverse." ;
+ Text [ swedish ] = "Sannolikhetsvärdet för vilket den inversa gammafördelningen skall beräknas." ;
+ Text [ dutch ] = "De kans die met de inverse gamma-verdeling wordt berekend." ;
+ Text [ spanish ] = "es la probabilidad asociada con la distribución gamma." ;
+ Text [ english_us ] = "The probability value for which the inverse gamma distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄ¸ÅÂÊÖµ¡£";
+ Text[ russian ] = "Âåðîÿòíîñòü, ñâÿçàííàÿ ñ ãàììà-ðàñïðåäåëåíèåì.";
+ Text[ polish ] = "Prawdopodobieñstwo, dla którego ma zostaæ obliczona odwrotnoœæ rozk³adu gamma.";
+ Text[ japanese ] = "‹tŠÖ”‚É‘ã“ü‚·‚éŠm—¦‚Ì’lB";
+ Text[ chinese_traditional ] = "¦÷º¿¤À§Gªº·§²v­È¡C";
+ Text[ arabic ] = "ÇáÇÍÊãÇá ÇáãÑÇÏ ÍÓÇÈ ÊæÒíÚ ÌÇãÇ ÇáÚßÓí áå.";
+ Text[ dutch ] = "De kans die met de inverse gamma-verdeling wordt berekend.";
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄ¸ÅÂÊÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ðéèáíüôçôáò ãéá ôçí ïðïßá ðñüêåéôáé íá õðïëïãéóôåß ç áíôßóôñïöç êáôáíïìÞ ÃÜììá.";
+ Text[ korean ] = "»êÃâµÉ ¿ª°¨¸¶ ¹èºÐ¿¡ ´ëÇÑ È®À² °ª";
+ Text[ turkish ] = "Ters gamma daðýtýmý hesaplanacak olasýlýk deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Alpha" ;
+ Text [ english ] = "alpha" ;
+ Text [ norwegian ] = "Alpha" ;
+ Text [ italian ] = "alfa" ;
+ Text [ portuguese_brazilian ] = "Alpha" ;
+ Text [ portuguese ] = "Alfa" ;
+ Text [ finnish ] = "Alpha" ;
+ Text [ danish ] = "Alfa" ;
+ Text [ french ] = "Alpha" ;
+ Text [ swedish ] = "alfa" ;
+ Text [ dutch ] = "Alfa" ;
+ Text [ spanish ] = "alfa" ;
+ Text [ english_us ] = "alpha" ;
+ Text[ chinese_simplified ] = "alpha";
+ Text[ russian ] = "Àëüôà";
+ Text[ polish ] = "Alfa";
+ Text[ japanese ] = "ƒ¿";
+ Text[ chinese_traditional ] = "alpha";
+ Text[ arabic ] = "Alpha";
+ Text[ dutch ] = "Alfa";
+ Text[ chinese_simplified ] = "alpha";
+ Text[ greek ] = "á";
+ Text[ korean ] = "¾ËÆÄ";
+ Text[ turkish ] = "Alfa";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Parameter Alpha der Gamma-Verteilung." ;
+ Text [ english ] = "is a parameter to the distribution." ;
+ Text [ norwegian ] = "Der Parameter Alpha der Gamma-Verteilung." ;
+ Text [ italian ] = "è un parametro per la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Parameter Alpha der Gamma-Verteilung." ;
+ Text [ portuguese ] = "é o parâmetro alfa da distribuição gama." ;
+ Text [ finnish ] = "Der Parameter Alpha der Gamma-Verteilung." ;
+ Text [ danish ] = "Parameter alfa i gammafordelingen." ;
+ Text [ french ] = "Le paramètre Alpha de la distribution Gamma." ;
+ Text [ swedish ] = "Parametern alfa till gammafördelningen." ;
+ Text [ dutch ] = "De parameter Alfa van de gamma-verdeling." ;
+ Text [ spanish ] = "es un parámetro de la distribución." ;
+ Text [ english_us ] = "The Alpha parameter of the Gamma distribution." ;
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄ²ÎÊý°¢¶û·¨¡£";
+ Text[ russian ] = "Ïàðàìåòð ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Parametr alfa rozk³adu gamma.";
+ Text[ japanese ] = "¶ÞÝÏ•ª•z‚ÌÊß×Ò°ÀB";
+ Text[ chinese_traditional ] = "¦÷º¿¤À§Gªº°Ñ¼Æªüº¸ªk¡C";
+ Text[ arabic ] = "ÇáãÚáãÉ ÃáÝÇ áÊæÒíÚ ÛÇãÇ.";
+ Text[ dutch ] = "De parameter Alfa van de gamma-verdeling.";
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄ²ÎÊý°¢¶û·¨¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò á ôçò êáôáíïìÞò ÃÜììá.";
+ Text[ korean ] = "°¨¸¶ ºÐÆ÷ÀÇ ÆĶó¹ÌÅÍ ¾ËÆÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Gamma daðýtýmýnýn alfa parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Beta" ;
+ Text [ english ] = "beta" ;
+ Text [ norwegian ] = "Beta" ;
+ Text [ italian ] = "Beta" ;
+ Text [ portuguese_brazilian ] = "Beta" ;
+ Text [ portuguese ] = "Beta" ;
+ Text [ finnish ] = "Beta" ;
+ Text [ danish ] = "Beta" ;
+ Text [ french ] = "Bêta" ;
+ Text [ swedish ] = "beta" ;
+ Text [ dutch ] = "Beta" ;
+ Text [ spanish ] = "beta" ;
+ Text [ english_us ] = "beta" ;
+ Text[ chinese_simplified ] = "beta";
+ Text[ russian ] = "Áåòà";
+ Text[ polish ] = "Beta";
+ Text[ japanese ] = "ƒÀ";
+ Text[ chinese_traditional ] = "beta";
+ Text[ arabic ] = "Beta";
+ Text[ dutch ] = "Beta";
+ Text[ chinese_simplified ] = "beta";
+ Text[ greek ] = "ÂÞôá";
+ Text[ korean ] = "º£Å¸";
+ Text[ turkish ] = "Beta";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Der Parameter Beta der Gamma-Verteilung." ;
+ Text [ english ] = "is a parameter to the distribution." ;
+ Text [ norwegian ] = "Der Parameter Beta der Gamma-Verteilung." ;
+ Text [ italian ] = "è un parametro per la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Parameter Beta der Gamma-Verteilung." ;
+ Text [ portuguese ] = "é o parâmetro beta da distribuição gama." ;
+ Text [ finnish ] = "Der Parameter Beta der Gamma-Verteilung." ;
+ Text [ danish ] = "Parameter beta i gammafordelingen." ;
+ Text [ french ] = "Le paramètre Bêta de la distribution Bêta." ;
+ Text [ swedish ] = "Parametern beta till gammafördelningen." ;
+ Text [ dutch ] = "De parameter Beta van de gamma-verdeling." ;
+ Text [ spanish ] = "es un parámetro de la distribución." ;
+ Text [ english_us ] = "The Beta parameter of the Gamma distribution." ;
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄ²ÎÊý±´Ëþ¡£";
+ Text[ russian ] = "Ïàðàìåòð ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Parametr beta rozk³adu gamma.";
+ Text[ japanese ] = "¶ÞÝÏ•ª•z‚ÌÊß×Ò°ÀB";
+ Text[ chinese_traditional ] = "¦÷º¿¤À§Gªº°Ñ¼Æ¨©¶ð¡C";
+ Text[ arabic ] = "ÇáãÚáãÉ ÈíÊÇ áÊæÒíÚ ÛÇãÇ.";
+ Text[ dutch ] = "De parameter Beta van de gamma-verdeling.";
+ Text[ chinese_simplified ] = "Ù¤Âê·Ö²¼µÄ²ÎÊý±´Ëþ¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò â ôçò êáôáíïìÞò ÃÜììá.";
+ Text[ korean ] = "°¨¸¶ ºÐÆ÷ÀÇ ÆĶó¹ÌÅÍ º£Å¸ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Gamma daðýtýmýnýn beta parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GAMMALN #*=-
+ Resource SC_OPCODE_GAMMA_LN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Logarithmische Werte der Gamma-Funktion" ;
+ Text [ english ] = "Returns the natural logarithm of the gamma function, G(x)." ;
+ Text [ norwegian ] = "Logarithmische Werte der Gamma-Funktion" ;
+ Text [ italian ] = "Restituisce il logaritmo naturale di una funzione gamma." ;
+ Text [ portuguese_brazilian ] = "Logarithmische Werte der Gamma-Funktion" ;
+ Text [ portuguese ] = "Devolve o logaritmo natural da função gama." ;
+ Text [ finnish ] = "Logarithmische Werte der Gamma-Funktion" ;
+ Text [ danish ] = "Logaritmeværdier til gammafunktionen." ;
+ Text [ french ] = "Renvoie le logarithme népérien de la fonction Gamma." ;
+ Text [ swedish ] = "Logaritmiska värden för gammafunktionen." ;
+ Text [ dutch ] = "Berekent de natuurlijke logaritme van de gamma-functie." ;
+ Text [ spanish ] = "Devuelve el logaritmo natural de la función gamma" ;
+ Text [ english_us ] = "Returns the natural logarithm of the gamma function." ;
+ Text[ chinese_simplified ] = "Ù¤Â꺯ÊýµÄ×ÔÈ»¶ÔÊýÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ãàììà-ôóíêöèè.";
+ Text[ polish ] = "Oblicza logarytm naturalny funkcji gamma";
+ Text[ japanese ] = "¶ÞÝÏŠÖ”‚ÌŽ©‘R‘Δ‚ð•Ô‚µ‚Ü‚·¡";
+ Text[ chinese_traditional ] = "¦÷º¿¨ç¼Æªº¦ÛµM¹ï¼Æ­È¡C";
+ Text[ arabic ] = "Þíã áæÛÇÑíÊãíÉ áÏÇáÉ ÛÇãÇ.";
+ Text[ dutch ] = "Berekent de natuurlijke logaritme van de gamma-functie.";
+ Text[ chinese_simplified ] = "Ù¤Â꺯ÊýµÄ×ÔÈ»¶ÔÊýÖµ¡£";
+ Text[ greek ] = "ËïãáñéèìéêÝò ôéìÝò ôçò óõíÜñôçóçò ÃÜììá.";
+ Text[ korean ] = "°¨¸¶ ÇÔ¼öÀÇ ·Î±×¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Gamma fonksiyonunun logaritmik deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_GAMMALN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Wert, zu dem der natürliche Logarithmus der Gamma-Funktion berechnet werden soll. : Der Wert, zu dem der nat³rliche Logarithmus der Gamma-Funktion berechnet werden soll. */
+ Text = "Der Wert, zu dem der natürliche Logarithmus der Gamma-Funktion berechnet werden soll." ;
+ Text [ english ] = "is the value for which you want to calculate GAMMALN." ;
+ Text [ norwegian ] = "Der Wert, zu dem der natürliche Logarithmus der Gamma-Funktion berechnet werden soll." ;
+ Text [ italian ] = "è il valore per il quale si desidera calcolare LN.GAMMA." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem der natürliche Logarithmus der Gamma-Funktion berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor para o qual deseja calcular o logaritmo natural gama (LNGAMA)." ;
+ Text [ finnish ] = "Der Wert, zu dem der natürliche Logarithmus der Gamma-Funktion berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som gammafunktionens naturlige logaritme skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle vous voulez calculer le logarithme népérien de la fonction Gamma." ;
+ Text [ swedish ] = "Värdet som den naturliga logaritmen för gammafunktionen skall beräknas för." ;
+ Text [ dutch ] = "De waarde waarvoor het natuurlijke logaritme van de gamma-functie moet worden berekend." ;
+ Text [ spanish ] = "es el valor cuya función GAMMA.LN desea calcular." ;
+ Text [ english_us ] = "The value for which the natural logarithm of the gamma function is to be calculated." ;
+ Text[ chinese_simplified ] = "ÐèÒª¼ÆËãÙ¤Â꺯ÊýµÄ×ÔÈ»¶ÔÊýµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî íåîáõîäèìî âû÷èñëèòü íàòóðàëüíûé ëîãàðèôì ãàììà-ôóíêöèè.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony rozk³ad liniowy gamma (GAMMLN).";
+ Text[ japanese ] = "¶ÞÝÏŠÖ”‚ÌŽ©‘R‘Δ‚É‘ã“ü‚·‚é’lB";
+ Text[ chinese_traditional ] = "»Ý­n­pºâ¦÷º¿¨ç¼Æªº¦ÛµM¹ï¼Æªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÍÓÇÈ GAMMALN áåÇ.";
+ Text[ dutch ] = "De waarde waarvoor het natuurlijke logaritme van de gamma-functie moet worden berekend.";
+ Text[ chinese_simplified ] = "ÐèÒª¼ÆËãÙ¤Â꺯ÊýµÄ×ÔÈ»¶ÔÊýµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ïðïßáò èá õðïëïãéóôåß ï öõóéêüò ëïãÜñéèìïò ôçò óõíÜñôçóçò ÃÜììá.";
+ Text[ korean ] = "°¨¸¶ ÇÔ¼öÀÇ ÀÚ¿¬ ·Î±×°¡ °è»êµÉ °ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Gamma fonksiyonunun doðal logaritmasýnýn hesaplanacaðý deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function BETAVERT #*=-
+ Resource SC_OPCODE_BETA_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Beta-Verteilung" ;
+ Text [ english ] = "Returns the cumulative beta probability density function." ;
+ Text [ norwegian ] = "Werte der Beta-Verteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione beta." ;
+ Text [ portuguese_brazilian ] = "Werte der Beta-Verteilung" ;
+ Text [ portuguese ] = "Devolve a função de densidade da probabilidade beta cumulativa." ;
+ Text [ finnish ] = "Werte der Beta-Verteilung" ;
+ Text [ danish ] = "Værdier for betafordelingen" ;
+ Text [ french ] = "Valeurs de la distribution Bêta." ;
+ Text [ swedish ] = "Betafördelningens värden." ;
+ Text [ dutch ] = "Waarden van de beta-verdeling" ;
+ Text [ spanish ] = "Devuelve la probabilidad para una variable aleatoria continua siguiendo una función de densidad de probabilidad beta acumulativa" ;
+ Text [ english_us ] = "Values of the beta distribution." ;
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼ÀÛ»ýº¯ÊýµÄº¯ÊýÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò èíòåãðàëüíóþ ôóíêöèþ ïëîòíîñòè áåòà-âåðîÿòíîñòè.";
+ Text[ polish ] = "Wartoœci podzia³u beta.";
+ Text[ japanese ] = "—ÝσÀŠm—¦–§“xŠÖ”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¨©¶ð¤À§G²Ö¿n¨ç¼Æªº¨ç¼Æ­È¡C";
+ Text[ arabic ] = "Þíã ÊæÒíÚ ÈíÊÇ.";
+ Text[ dutch ] = "Waarden van de beta-verdeling";
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼ÀÛ»ýº¯ÊýµÄº¯ÊýÖµ¡£";
+ Text[ greek ] = "ÔéìÝò ôçò êáôáíïìÞò ÂÞôá.";
+ Text[ korean ] = "º£Å¸ ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Beta daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_BETAVERT );
+ 5; 0; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "probability" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die Beta-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is the value between A and B at which to evaluate the function." ;
+ Text [ norwegian ] = "Der Wert, zu dem die Beta-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è il valore compreso tra A e B in cui calcolare la funzione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die Beta-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor entre A e B com o qual se avalia a função." ;
+ Text [ finnish ] = "Der Wert, zu dem die Beta-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som betafordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur à laquelle la distribution Bêta doit être calculée." ;
+ Text [ swedish ] = "Värdet för vilket betafördelningen skall beräknas." ;
+ Text [ dutch ] = "De waarde waarbij de beta-verdeling moet worden berekend." ;
+ Text [ spanish ] = "es el valor dentro del intervalo [A, B] con el que se evalúa la función." ;
+ Text [ english_us ] = "The value for which the beta distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "ÓÃÀ´½øÐб´Ëþ-·Ö²¼º¯Êý¼ÆËãµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå â èíòåðâàëå ìåæäó À è Â, äëÿ êîòîðîãî âû÷èñëÿåòñÿ ôóíêöèÿ.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony rozk³ad beta.";
+ Text[ japanese ] = "ŠÖ”‚ðŽg—p‚µ‚Ä•]‰¿‚·‚é”’lB";
+ Text[ chinese_traditional ] = "¥Î¨Ó¶i¦æ¨©¶ð¤À§G¨ç¼Æ­pºâªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÊí ÊÑíÏ ÍÓÇÈ ÊæÒíÚ ÈíÊÇ áåÇ.";
+ Text[ dutch ] = "De waarde waarbij de beta-verdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "ÓÃÀ´½øÐб´Ëþ-·Ö²¼º¯Êý¼ÆËãµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ïðïßáò èá õðïëïãéóôåß ç êáôáíïìÞ ÂÞôá.";
+ Text[ korean ] = "»êÃâµÉ º£Å¸ ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Beta daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Alpha" ;
+ Text [ english ] = "alpha" ;
+ Text [ norwegian ] = "Alpha" ;
+ Text [ italian ] = "alfa" ;
+ Text [ portuguese_brazilian ] = "Alpha" ;
+ Text [ portuguese ] = "Alfa" ;
+ Text [ finnish ] = "Alpha" ;
+ Text [ danish ] = "Alfa" ;
+ Text [ french ] = "Alpha" ;
+ Text [ swedish ] = "alfa" ;
+ Text [ dutch ] = "Alfa" ;
+ Text [ spanish ] = "alfa" ;
+ Text [ english_us ] = "alpha" ;
+ Text[ chinese_simplified ] = "alpha";
+ Text[ russian ] = "Àëüôà";
+ Text[ polish ] = "Alfa";
+ Text[ japanese ] = "ƒ¿";
+ Text[ chinese_traditional ] = "alpha";
+ Text[ arabic ] = "Alpha";
+ Text[ dutch ] = "Alfa";
+ Text[ chinese_simplified ] = "alpha";
+ Text[ greek ] = "á";
+ Text[ korean ] = "¾ËÆÄ";
+ Text[ turkish ] = "Alfa";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Parameter Alpha der Beta-Verteilung." ;
+ Text [ english ] = "is a parameter to the distribution." ;
+ Text [ norwegian ] = "Der Parameter Alpha der Beta-Verteilung." ;
+ Text [ italian ] = "è un parametro per la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Parameter Alpha der Beta-Verteilung." ;
+ Text [ portuguese ] = "é o parâmetro alfa da distribuição-beta." ;
+ Text [ finnish ] = "Der Parameter Alpha der Beta-Verteilung." ;
+ Text [ danish ] = "Parameter alfa i betafordelingen." ;
+ Text [ french ] = "Le paramètre Alpha de la distribution Bêta." ;
+ Text [ swedish ] = "Parametern alfa för betafördelningen." ;
+ Text [ dutch ] = "De parameter alfa van de beta-verdeling" ;
+ Text [ spanish ] = "es un parámetro de la distribución." ;
+ Text [ english_us ] = "The Alpha parameter of the Beta distribution." ;
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼µÄ²Î±äÁ¿°¢¶û·¨¡£";
+ Text[ russian ] = "Ïàðàìåòð ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Parametr alfa w rozk³adzie beta.";
+ Text[ japanese ] = "Šm—¦•ª•z‚ɑ΂·‚éÊß×Ò°À‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¨©¶ð¤À§Gªº°ÑÅܶqªüº¸ªk¡C";
+ Text[ arabic ] = "ÇáãÚáãÉ ÃáÝÇ áÊæÒíÚ ÈíÊÇ.";
+ Text[ dutch ] = "De parameter alfa van de beta-verdeling";
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼µÄ²Î±äÁ¿°¢¶û·¨¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò á ôçò êáôáíïìÞò Â.";
+ Text[ korean ] = "º£Å¸ ¹èºÐÀÇ ¾ËÆÄ ÆĶó¹ÌÅÍ";
+ Text[ turkish ] = "Beta daðýtýmýnýn alfa parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Beta" ;
+ Text [ english ] = "beta" ;
+ Text [ norwegian ] = "Beta" ;
+ Text [ italian ] = "Beta" ;
+ Text [ portuguese_brazilian ] = "Beta" ;
+ Text [ portuguese ] = "Beta" ;
+ Text [ finnish ] = "Beta" ;
+ Text [ danish ] = "Beta" ;
+ Text [ french ] = "Bêta" ;
+ Text [ swedish ] = "beta" ;
+ Text [ dutch ] = "Beta" ;
+ Text [ spanish ] = "beta" ;
+ Text [ english_us ] = "beta" ;
+ Text[ chinese_simplified ] = "beta";
+ Text[ russian ] = "Áåòà";
+ Text[ polish ] = "Beta";
+ Text[ japanese ] = "ƒÀ";
+ Text[ chinese_traditional ] = "beta";
+ Text[ arabic ] = "Beta";
+ Text[ dutch ] = "Beta";
+ Text[ chinese_simplified ] = "beta";
+ Text[ greek ] = "ÂÞôá";
+ Text[ korean ] = "º£Å¸";
+ Text[ turkish ] = "Beta";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Der Parameter Beta der Beta-Verteilung." ;
+ Text [ english ] = "is a parameter to the distribution." ;
+ Text [ norwegian ] = "Der Parameter Beta der Beta-Verteilung." ;
+ Text [ italian ] = "è un parametro per la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Parameter Beta der Beta-Verteilung." ;
+ Text [ portuguese ] = "é o parâmetro da distribuição-beta." ;
+ Text [ finnish ] = "Der Parameter Beta der Beta-Verteilung." ;
+ Text [ danish ] = "Parameter beta i betafordelingen." ;
+ Text [ french ] = "Le paramètre Bêta de la distribution Bêta." ;
+ Text [ swedish ] = "Parametern beta för betafördelningen." ;
+ Text [ dutch ] = "De parameter beta van de beta-verdeling" ;
+ Text [ spanish ] = "es un parámetro de la distribución." ;
+ Text [ english_us ] = "The Beta parameter of the Beta distribution." ;
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼µÄ²Î±äÁ¿±´Ëþ¡£";
+ Text[ russian ] = "Ïàðàìåòð ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Parametr beta w rozk³adzie beta.";
+ Text[ japanese ] = "Šm—¦•ª•z‚ɑ΂·‚éÊß×Ò°À‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¨©¶ð¤À§Gªº°ÑÅܶq¨©¶ð¡C";
+ Text[ arabic ] = "ÇáãÚáãÉ ÈíÊÇ áÊæÒíÚ ÈíÊÇ.";
+ Text[ dutch ] = "De parameter beta van de beta-verdeling";
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼µÄ²Î±äÁ¿±´Ëþ¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò ÂÞôá ôçò êáôáíïìÞò ÂÞôá.";
+ Text[ korean ] = "º£Å¸ ºÐÆ÷ÀÇ º£Å¸ ÆĶó¹ÌÅÍÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Beta daðýtýmýnýn beta parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Anfang" ;
+ Text [ english ] = "A" ;
+ Text [ norwegian ] = "Anfang" ;
+ Text [ italian ] = "Inizio" ;
+ Text [ portuguese_brazilian ] = "Anfang" ;
+ Text [ portuguese ] = "A" ;
+ Text [ finnish ] = "Anfang" ;
+ Text [ danish ] = "Start" ;
+ Text [ french ] = "Début" ;
+ Text [ swedish ] = "start" ;
+ Text [ dutch ] = "Begin" ;
+ Text [ spanish ] = "Comienzo" ;
+ Text [ english_us ] = "Start" ;
+ Text[ chinese_simplified ] = "A";
+ Text[ russian ] = "A";
+ Text[ polish ] = "A";
+ Text[ japanese ] = "‰ºŒÀ";
+ Text[ chinese_traditional ] = "A";
+ Text[ arabic ] = "A";
+ Text[ dutch ] = "Begin";
+ Text[ chinese_simplified ] = "A";
+ Text[ greek ] = "Áñ÷Þ";
+ Text[ korean ] = "½ÃÀÛ";
+ Text[ turkish ] = "Baþlangýç";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Anfangswert für das Werteintervall der Verteilung. : Der Anfangswert f³r das Werteintervall der Verteilung. */
+ Text = "Der Anfangswert für das Werteintervall der Verteilung." ;
+ Text [ english ] = "is an optional lower bound to the interval of x." ;
+ Text [ norwegian ] = "Der Anfangswert für das Werteintervall der Verteilung." ;
+ Text [ italian ] = "è un valore facoltativo per l'estremo inferiore dell'intervallo di x." ;
+ Text [ portuguese_brazilian ] = "Der Anfangswert für das Werteintervall der Verteilung." ;
+ Text [ portuguese ] = "é um limite inferior opcional para o intervalo de x." ;
+ Text [ finnish ] = "Der Anfangswert für das Werteintervall der Verteilung." ;
+ Text [ danish ] = "Startværdien for fordelingens værdiinterval." ;
+ Text [ french ] = "La valeur initiale pour l'intervalle de valeurs de la distribution." ;
+ Text [ swedish ] = "Startvärdet för fördelningens värdeintervall." ;
+ Text [ dutch ] = "De beginwaarde voor het waarde-interval van de verdeling." ;
+ Text [ spanish ] = "es un límite inferior opcional del intervalo de x." ;
+ Text [ english_us ] = "The starting value for the value interval of the distribution." ;
+ Text[ chinese_simplified ] = "·Ö²¼µÄÊýÖµÇø¼äµÄÏÂÏÞ¡£";
+ Text[ russian ] = "Íåîáÿçàòåëüíàÿ íèæíÿÿ ãðàíèöà èíòåðâàëà èçìåíåíèÿ x.";
+ Text[ polish ] = "Górna granica dla przedzia³u wartoœci rozk³adu.";
+ Text[ japanese ] = "‹æŠÔ‚̉ºŒÀB";
+ Text[ chinese_traditional ] = "¤À§Gªº¼Æ­È°Ï¶¡ªº¤U­­¡C";
+ Text[ arabic ] = "ÞíãÉ ÇáÈÏÁ áÝÇÕá Þíã ÇáÊæÒíÚ.";
+ Text[ dutch ] = "De beginwaarde voor het waarde-interval van de verdeling.";
+ Text[ chinese_simplified ] = "·Ö²¼µÄÊýÖµÇø¼äµÄÏÂÏÞ¡£";
+ Text[ greek ] = "Ç áñ÷éêÞ ôéìÞ ôïõ äéáóôÞìáôïò ôçò ôéìÞò ôçò êáôáíïìÞò.";
+ Text[ korean ] = "ºÐÆ÷ÀÇ °¡Ä¡ ±¸°£À» À§ÇÑ ½ÃÀÛ°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Daðýtýmýn deðer aralýklarýnýn baþlangýç deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "Ende" ;
+ Text [ english ] = "B" ;
+ Text [ norwegian ] = "Ende" ;
+ Text [ italian ] = "B" ;
+ Text [ portuguese_brazilian ] = "Ende" ;
+ Text [ portuguese ] = "B" ;
+ Text [ finnish ] = "Ende" ;
+ Text [ danish ] = "Slut" ;
+ Text [ french ] = "Fin" ;
+ Text [ swedish ] = "slut" ;
+ Text [ dutch ] = "Einde" ;
+ Text [ spanish ] = "Fin" ;
+ Text [ english_us ] = "End" ;
+ Text[ chinese_simplified ] = "B";
+ Text[ russian ] = "Â";
+ Text[ polish ] = "B";
+ Text[ japanese ] = "ãŒÀ";
+ Text[ chinese_traditional ] = "B";
+ Text[ arabic ] = "B";
+ Text[ dutch ] = "Einde";
+ Text[ chinese_simplified ] = "B";
+ Text[ greek ] = "ÔÝëïò";
+ Text[ korean ] = "Á¾·á";
+ Text[ turkish ] = "Son";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Endwert für das Werteintervall der Verteilung. : Der Endwert f³r das Werteintervall der Verteilung. */
+ Text = "Der Endwert für das Werteintervall der Verteilung." ;
+ Text [ english ] = "is an optional upper bound to the interval of x." ;
+ Text [ norwegian ] = "Der Endwert für das Werteintervall der Verteilung." ;
+ Text [ italian ] = "è un valore facoltativo per l'estremo superiore dell'intervallo di x." ;
+ Text [ portuguese_brazilian ] = "Der Endwert für das Werteintervall der Verteilung." ;
+ Text [ portuguese ] = "é um limite superior opcional para o intervalo de x." ;
+ Text [ finnish ] = "Der Endwert für das Werteintervall der Verteilung." ;
+ Text [ danish ] = "Slutværdien for fordelingens værdiinterval." ;
+ Text [ french ] = "La valeur finale pour l'intervalle de valeurs de la distribution." ;
+ Text [ swedish ] = "Slutvärdet för fördelningens värdeintervall." ;
+ Text [ dutch ] = "De eindwaarde voor het waardeinterval van de verdeling." ;
+ Text [ spanish ] = "es un límite superior opcional del intervalo de x." ;
+ Text [ english_us ] = "The final value for the value interval of the distribution." ;
+ Text[ chinese_simplified ] = "·Ö²¼µÄÊýÖµÇø¼äµÄÉÏÏÞ¡£";
+ Text[ russian ] = "Íåîáÿçàòåëüíàÿ âåðõíÿÿ ãðàíèöà èíòåðâàëà èçìåíåíèÿ x.";
+ Text[ polish ] = "Dolna granica dla przedzia³u wartoœci rozk³adu.";
+ Text[ japanese ] = "‹æŠÔ‚ÌãŒÀB";
+ Text[ chinese_traditional ] = "¤À§Gªº¼Æ­È°Ï¶¡ªº¤W­­¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáäåÇÆíÉ áÝÇÕá Þíã ÇáÊæÒíÚ.";
+ Text[ dutch ] = "De eindwaarde voor het waardeinterval van de verdeling.";
+ Text[ chinese_simplified ] = "·Ö²¼µÄÊýÖµÇø¼äµÄÉÏÏÞ¡£";
+ Text[ greek ] = "Ç ôåëéêÞ ôéìÞ ôïõ äéáóôÞìáôïò ôçò ôéìÞò ôçò êáôáíïìÞò.";
+ Text[ korean ] = "ºÐÆ÷ÀÇ °¡Ä¡±¸°£À» À§ÇÑ ÃÖÁ¾°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Daðýtýmýn deðer aralýklarýnýn son deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function BETAINV #*=-
+ Resource SC_OPCODE_BETA_INV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der inversen Beta-Verteilung" ;
+ Text [ english ] = "Returns the inverse of the cumulative beta probability density function." ;
+ Text [ norwegian ] = "Werte der inversen Beta-Verteilung" ;
+ Text [ italian ] = "Restituisce l'inversa della distribuzione beta." ;
+ Text [ portuguese_brazilian ] = "Werte der inversen Beta-Verteilung" ;
+ Text [ portuguese ] = "Devolve o inverso da função de densidade da probabilidade beta cumulativa." ;
+ Text [ finnish ] = "Werte der inversen Beta-Verteilung" ;
+ Text [ danish ] = "Værdier for den inverse betafordelingen" ;
+ Text [ french ] = "Valeurs de la distribution Bêta inverse." ;
+ Text [ swedish ] = "Värden för den inversa betafördelningen." ;
+ Text [ dutch ] = "Berekent de inverse van de bèta-kansdichtheidsfunctie" ;
+ Text [ spanish ] = "Devuelve, para una probabilidad dada, el valor de la variable aleatoria siguiendo una distribución beta." ;
+ Text [ english_us ] = "Values of the inverse beta distribution." ;
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼ÀÛ»ýº¯ÊýµÄÄ溯ÊýÖµ";
+ Text[ russian ] = "Âîçâðàùàåò îáðàòíóþ ôóíêöèþ ê èíòåãðàëüíîé ôóíêöèè ïëîòíîñòè áåòà-âåðîÿòíîñòè.";
+ Text[ polish ] = "Wyznacza odwrotnoœæ rozk³adu beta";
+ Text[ japanese ] = "—ÝσÀŠm—¦–§“xŠÖ”‚Ì‹tŠÖ”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¨©¶ð¤À§G²Ö¿n¨ç¼Æªº°f¨ç¼Æ­È";
+ Text[ arabic ] = "Þíã ÚßÓ ÊæÒíÚ ÈíÊÇ";
+ Text[ dutch ] = "Berekent de inverse van de bèta-kansdichtheidsfunctie";
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼ÀÛ»ýº¯ÊýµÄÄ溯ÊýÖµ";
+ Text[ greek ] = "ÔéìÝò ôçò áíôßóôñïöçò êáôáíïìÞò ÂÞôá.";
+ Text[ korean ] = "¿ª º£Å¸ ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Ters beta daðýtýmýnýn deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_BETAINV );
+ 5; 0; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "probability" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "probabilità" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Probabilidade" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Sandsynlighed" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "probabilidad" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wahrscheinlichkeitswert, zu dem die inverse Beta-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is a probability associated with the beta distribution." ;
+ Text [ norwegian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Beta-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è la probabilità associata alla distribuzione beta." ;
+ Text [ portuguese_brazilian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Beta-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é uma probabilidade associada à distribuição beta." ;
+ Text [ finnish ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Beta-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Sandsynligheden som den inverse betafordeling skal beregnes for." ;
+ Text [ french ] = "La valeur de probabilité à laquelle la distribution bêta inverse doit être calculée." ;
+ Text [ swedish ] = "Sannolikhetsvärdet för vilket betafördelningen skall beräknas." ;
+ Text [ dutch ] = "De kans die met de inverse beta-verdeling wordt berekend." ;
+ Text [ spanish ] = "es una probabilidad asociada con la distribución beta." ;
+ Text [ english_us ] = "The probability value for which the inverse beta distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ±´Ëþ·Ö²¼Ä溯ÊýÖµ¼ÆËãµÄ¸ÅÂÊÖµ¡£";
+ Text[ russian ] = "Âåðîÿòíîñòü, ñâÿçàííàÿ ñ áåòà-ðàñïðåäåëåíèåì.";
+ Text[ polish ] = "Wyznacza prawdopodobieñstwo, dla którego ma zostaæ obliczona odwrotnoœæ rozk³adu beta.";
+ Text[ japanese ] = "ƒÀŠm—¦•ª•z‚É”º‚¤Šm—¦B";
+ Text[ chinese_traditional ] = "¥Î©ó¨©¶ð¤À§G°f¨ç¼Æ­È­pºâªº·§²v­È¡C";
+ Text[ arabic ] = "ÇáÇÍÊãÇá ÇáãÞÊÑä ãÚ ÊæÒíÚ ÈíÊÇ.";
+ Text[ dutch ] = "De kans die met de inverse beta-verdeling wordt berekend.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ±´Ëþ·Ö²¼Ä溯ÊýÖµ¼ÆËãµÄ¸ÅÂÊÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ðéèáíüôçôáò ãéá ôçí ïðïßá ðñüêåéôáé íá õðïëïãéóôåß ç áíôßóôñïöç êáôáíïìÞ ÂÞôá.";
+ Text[ korean ] = "º£Å¸ ºÐÆ÷ÇÔ¼öÀÇ ¿ªÀÌ °è»êµÇ¾î¾ß ÇÒ È®·ü°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ters beta daðýlýmý hesaplanacak olasýlýk deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Alpha" ;
+ Text [ english ] = "alpha" ;
+ Text [ norwegian ] = "Alpha" ;
+ Text [ italian ] = "Alfa" ;
+ Text [ portuguese_brazilian ] = "Alpha" ;
+ Text [ portuguese ] = "Alfa" ;
+ Text [ finnish ] = "Alpha" ;
+ Text [ danish ] = "Alfa" ;
+ Text [ french ] = "Alpha" ;
+ Text [ swedish ] = "alfa" ;
+ Text [ dutch ] = "Alfa" ;
+ Text [ spanish ] = "alfa" ;
+ Text [ english_us ] = "alpha" ;
+ Text[ chinese_simplified ] = "alpha";
+ Text[ russian ] = "Àëüôà";
+ Text[ polish ] = "Alfa";
+ Text[ japanese ] = "ƒ¿";
+ Text[ chinese_traditional ] = "alpha";
+ Text[ arabic ] = "Alpha";
+ Text[ dutch ] = "Alfa";
+ Text[ chinese_simplified ] = "alpha";
+ Text[ greek ] = "á";
+ Text[ korean ] = "¾ËÆÄ";
+ Text[ turkish ] = "Alfa";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Parameter Alpha der Beta-Verteilung." ;
+ Text [ english ] = "is a parameter to the distribution." ;
+ Text [ norwegian ] = "Der Parameter Alpha der Beta-Verteilung." ;
+ Text [ italian ] = "è un parametro per la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Parameter Alpha der Beta-Verteilung." ;
+ Text [ portuguese ] = "é o parâmetro alfa da distribuição-beta." ;
+ Text [ finnish ] = "Der Parameter Alpha der Beta-Verteilung." ;
+ Text [ danish ] = "Parameter alfa i betafordelingen." ;
+ Text [ french ] = "Le paramètre Alpha de la distribution Bêta." ;
+ Text [ swedish ] = "Parametern alfa för betafördelningen." ;
+ Text [ dutch ] = "De parameter alfa van de beta-verdeling." ;
+ Text [ spanish ] = "es un parámetro de la distribución." ;
+ Text [ english_us ] = "The Alpha parameter of the Beta distribution." ;
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼µÄ²Î±äÁ¿°¢¶û·¨¡£";
+ Text[ russian ] = "Ïàðàìåòð ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Parametr alfa w rozk³adzie beta.";
+ Text[ japanese ] = "Šm—¦•ª•z‚ÌÊß×Ò°ÀB";
+ Text[ chinese_traditional ] = "¨©¶ð¤À§Gªº°ÑÅܶqªüº¸ªk¡C";
+ Text[ arabic ] = "ÇáãÚáãÉ ÃáÝÇ áÊæÒíÚ ÈíÊÇ.";
+ Text[ dutch ] = "De parameter alfa van de beta-verdeling.";
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼µÄ²Î±äÁ¿°¢¶û·¨¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò á ôçò êáôáíïìÞò Â.";
+ Text[ korean ] = "º£Å¸ ºÐÆ÷ÀÇ ¾ËÆÄ ÆĶó¹ÌÅÍ";
+ Text[ turkish ] = "Beta daðýtýmýn alfa parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Beta" ;
+ Text [ english ] = "beta" ;
+ Text [ norwegian ] = "Beta" ;
+ Text [ italian ] = "Beta" ;
+ Text [ portuguese_brazilian ] = "Beta" ;
+ Text [ portuguese ] = "Beta" ;
+ Text [ finnish ] = "Beta" ;
+ Text [ danish ] = "Beta" ;
+ Text [ french ] = "Bêta" ;
+ Text [ swedish ] = "beta" ;
+ Text [ dutch ] = "Beta" ;
+ Text [ spanish ] = "beta" ;
+ Text [ english_us ] = "beta" ;
+ Text[ chinese_simplified ] = "beta";
+ Text[ russian ] = "Áåòà";
+ Text[ polish ] = "Beta";
+ Text[ japanese ] = "ƒÀ";
+ Text[ chinese_traditional ] = "beta";
+ Text[ arabic ] = "Beta";
+ Text[ dutch ] = "Beta";
+ Text[ chinese_simplified ] = "beta";
+ Text[ greek ] = "ÂÞôá";
+ Text[ korean ] = "º£Å¸";
+ Text[ turkish ] = "Beta";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Der Parameter Beta der Beta-Verteilung." ;
+ Text [ english ] = "is a parameter to the distribution." ;
+ Text [ norwegian ] = "Der Parameter Beta der Beta-Verteilung." ;
+ Text [ italian ] = "è un parametro per la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Parameter Beta der Beta-Verteilung." ;
+ Text [ portuguese ] = "é o parâmetro da distribuição-beta." ;
+ Text [ finnish ] = "Der Parameter Beta der Beta-Verteilung." ;
+ Text [ danish ] = "Parameter beta i betafordelingen." ;
+ Text [ french ] = "Le paramètre Bêta de la distribution Bêta." ;
+ Text [ swedish ] = "Parametern beta för betafördelningen." ;
+ Text [ dutch ] = "De parameter beta van de beta-verdeling." ;
+ Text [ spanish ] = "es un parámetro de la distribución." ;
+ Text [ english_us ] = "The Beta parameter of the Beta distribution." ;
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼µÄ²Î±äÁ¿±´Ëþ¡£";
+ Text[ russian ] = "Ïàðàìåòð ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Parametr beta w rozk³adzie beta.";
+ Text[ japanese ] = "Šm—¦•ª•z‚ÌÊß×Ò°ÀB";
+ Text[ chinese_traditional ] = "¨©¶ð¤À§Gªº°ÑÅܶq¨©¶ð¡C";
+ Text[ arabic ] = "ÇáãÚáãÉ ÈíÊÇ áÊæÒíÚ ÈíÊÇ.";
+ Text[ dutch ] = "De parameter beta van de beta-verdeling.";
+ Text[ chinese_simplified ] = "±´Ëþ·Ö²¼µÄ²Î±äÁ¿±´Ëþ¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò ÂÞôá ôçò êáôáíïìÞò ÂÞôá.";
+ Text[ korean ] = "º£Å¸ ºÐÆ÷ÀÇ º£Å¸ ÆĶó¹ÌÅÍ";
+ Text[ turkish ] = "Beta daðýtýmýn beta parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Anfang" ;
+ Text [ english ] = "A" ;
+ Text [ norwegian ] = "Anfang" ;
+ Text [ italian ] = "Inizio" ;
+ Text [ portuguese_brazilian ] = "Anfang" ;
+ Text [ portuguese ] = "A" ;
+ Text [ finnish ] = "Anfang" ;
+ Text [ danish ] = "Start" ;
+ Text [ french ] = "Début" ;
+ Text [ swedish ] = "start" ;
+ Text [ dutch ] = "Begin" ;
+ Text [ spanish ] = "Comienzo" ;
+ Text [ english_us ] = "Start" ;
+ Text[ chinese_simplified ] = "A";
+ Text[ russian ] = "À";
+ Text[ polish ] = "Pocz¹tek";
+ Text[ japanese ] = "‰ºŒÀ";
+ Text[ chinese_traditional ] = "A";
+ Text[ arabic ] = "A";
+ Text[ dutch ] = "Begin";
+ Text[ chinese_simplified ] = "A";
+ Text[ greek ] = "Áñ÷Þ";
+ Text[ korean ] = "½ÃÀÛ";
+ Text[ turkish ] = "Baþlangýç";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Anfangswert für das Werteintervall der Verteilung. : Der Anfangswert f³r das Werteintervall der Verteilung. */
+ Text = "Der Anfangswert für das Werteintervall der Verteilung." ;
+ Text [ english ] = "is an optional lower bound to the interval of x." ;
+ Text [ norwegian ] = "Der Anfangswert für das Werteintervall der Verteilung." ;
+ Text [ italian ] = "è un valore facoltativo per l'estremo inferiore dell'intervallo di x." ;
+ Text [ portuguese_brazilian ] = "Der Anfangswert für das Werteintervall der Verteilung." ;
+ Text [ portuguese ] = "é um limite inferior opcional para o intervalo de x." ;
+ Text [ finnish ] = "Der Anfangswert für das Werteintervall der Verteilung." ;
+ Text [ danish ] = "Startværdien for fordelingens værdiinterval." ;
+ Text [ french ] = "La valeur initiale pour l'intervalle de valeurs de la distribution." ;
+ Text [ swedish ] = "Startvärdet för fördelningens värdeintervall." ;
+ Text [ dutch ] = "De beginwaarde voor het waarde-interval van de verdeling." ;
+ Text [ spanish ] = "es un límite inferior opcional del intervalo de x." ;
+ Text [ english_us ] = "The starting value for the value interval of the distribution." ;
+ Text[ chinese_simplified ] = "·Ö²¼µÄÊýÖµÇø¼äµÄÏÂÏÞ¡£";
+ Text[ russian ] = "Íåîáÿçàòåëüíàÿ íèæíÿÿ ãðàíèöà èíòåðâàëà èçìåíåíèÿ x.";
+ Text[ polish ] = "Górna granica dla przedzia³u wartoœci rozk³adu.";
+ Text[ japanese ] = "‹æŠÔ‚̉ºŒÀB";
+ Text[ chinese_traditional ] = "¤À§Gªº¼Æ­È°Ï¶¡ªº¤U­­¡C";
+ Text[ arabic ] = "ÞíãÉ ÇáÈÏÁ áÝÇÕá Þíã ÇáÊæÒíÚ.";
+ Text[ dutch ] = "De beginwaarde voor het waarde-interval van de verdeling.";
+ Text[ chinese_simplified ] = "·Ö²¼µÄÊýÖµÇø¼äµÄÏÂÏÞ¡£";
+ Text[ greek ] = "Ç áñ÷éêÞ ôéìÞ ôïõ äéáóôÞìáôïò ôçò ôéìÞò ôçò êáôáíïìÞò.";
+ Text[ korean ] = "ºÐÆ÷ÀÇ °¡Ä¡ ±¸°£À» À§ÇÑ ½ÃÀÛ°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Daðýtýmýn deðer aralýklarýnýn baþlangýç deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "Ende" ;
+ Text [ english ] = "B" ;
+ Text [ norwegian ] = "Ende" ;
+ Text [ italian ] = "Fine" ;
+ Text [ portuguese_brazilian ] = "Ende" ;
+ Text [ portuguese ] = "B" ;
+ Text [ finnish ] = "Ende" ;
+ Text [ danish ] = "Slut" ;
+ Text [ french ] = "Fin" ;
+ Text [ swedish ] = "slut" ;
+ Text [ dutch ] = "Einde" ;
+ Text [ spanish ] = "Fin" ;
+ Text [ english_us ] = "End" ;
+ Text[ chinese_simplified ] = "B";
+ Text[ russian ] = "Â";
+ Text[ polish ] = "Koniec";
+ Text[ japanese ] = "ãŒÀ";
+ Text[ chinese_traditional ] = "B";
+ Text[ arabic ] = "B";
+ Text[ dutch ] = "Einde";
+ Text[ chinese_simplified ] = "B";
+ Text[ greek ] = "ÔÝëïò";
+ Text[ korean ] = "Á¾·á";
+ Text[ turkish ] = "Son";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Endwert für das Werteintervall der Verteilung. : Der Endwert f³r das Werteintervall der Verteilung. */
+ Text = "Der Endwert für das Werteintervall der Verteilung." ;
+ Text [ english ] = "is an optional upper bound to the interval of x." ;
+ Text [ norwegian ] = "Der Endwert für das Werteintervall der Verteilung." ;
+ Text [ italian ] = "è un valore facoltativo per l'estremo superiore dell'intervallo di x." ;
+ Text [ portuguese_brazilian ] = "Der Endwert für das Werteintervall der Verteilung." ;
+ Text [ portuguese ] = "é um limite superior opcional para o intervalo de x." ;
+ Text [ finnish ] = "Der Endwert für das Werteintervall der Verteilung." ;
+ Text [ danish ] = "Slutværdien for fordelingens værdiinterval." ;
+ Text [ french ] = "La valeur finale pour l'intervalle de valeurs de la distribution." ;
+ Text [ swedish ] = "Slutvärdet för fördelningens värdeintervall." ;
+ Text [ dutch ] = "Der eindwaarde voor het waarde-interval van de verdeling" ;
+ Text [ spanish ] = "es un límite superior opcional del intervalo de x." ;
+ Text [ english_us ] = "The final value for the value interval of the distribution." ;
+ Text[ chinese_simplified ] = "·Ö²¼µÄÊýÖµÇø¼äµÄÉÏÏÞ¡£";
+ Text[ russian ] = "Íåîáÿçàòåëüíàÿ âåðõíÿÿ ãðàíèöà èíòåðâàëà èçìåíåíèÿ x.";
+ Text[ polish ] = "Dolna granica dla przedzia³u wartoœci rozk³adu.";
+ Text[ japanese ] = "‹æŠÔ‚ÌãŒÀB";
+ Text[ chinese_traditional ] = "¤À§Gªº¼Æ­È°Ï¶¡ªº¤W­­¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáäåÇÆíÉ áÝÇÕá Þíã ÇáÊæÒíÚ.";
+ Text[ dutch ] = "Der eindwaarde voor het waarde-interval van de verdeling";
+ Text[ chinese_simplified ] = "·Ö²¼µÄÊýÖµÇø¼äµÄÉÏÏÞ¡£";
+ Text[ greek ] = "Ç ôåëéêÞ ôéìÞ ôïõ äéáóôÞìáôïò ôçò ôéìÞò ôçò êáôáíïìÞò.";
+ Text[ korean ] = "ºÐÆ÷ÀÇ °¡Ä¡ ±¸°£À» À§ÇÑ ÃÖÁ¾°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Daðýtýmýn deðer aralýklarýnýn son deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function WEIBULL #*=-
+ Resource SC_OPCODE_WEIBULL
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Weibull-Verteilung" ;
+ Text [ english ] = "Returns the Weibull distribution." ;
+ Text [ norwegian ] = "Werte der Weibull-Verteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione di Weibull." ;
+ Text [ portuguese_brazilian ] = "Werte der Weibull-Verteilung" ;
+ Text [ portuguese ] = "Devolve os valores da distribuição Weibull." ;
+ Text [ finnish ] = "Werte der Weibull-Verteilung" ;
+ Text [ danish ] = "Værdier for Weibull-fordelingen" ;
+ Text [ french ] = "Valeurs de la distribution Weibull." ;
+ Text [ swedish ] = "Värden för Weibullfördelningen" ;
+ Text [ dutch ] = "Geeft als resultaat de Weibull-verdeling" ;
+ Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria siguiendo una distribución de Weibull" ;
+ Text [ english_us ] = "Returns the values of the Weibull distribution." ;
+ Text[ chinese_simplified ] = "Τ²®·Ö²¼";
+ Text[ russian ] = "Âû÷èñëÿåò çíà÷åíèå ðàñïðåäåëåíèÿ Âåéáóëëà.";
+ Text[ polish ] = "Wyznacza rozk³ad Weibulla.";
+ Text[ japanese ] = "ܲÌÞÙ•ª•z‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­³§B¤À§G";
+ Text[ arabic ] = "Þíã ÊæÒíÚ Weibull.";
+ Text[ dutch ] = "Geeft als resultaat de Weibull-verdeling";
+ Text[ chinese_simplified ] = "Τ²®·Ö²¼";
+ Text[ greek ] = "ÔéìÝò ôçò äéáíïìÞò Weibull.";
+ Text[ korean ] = "¿ÍÀÌºí ºÐÆ÷ÇÔ¼öÀÇ °ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Weibull daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_WEIBULL );
+ 4; 0; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die Weibull-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is the value at which to evaluate the function." ;
+ Text [ norwegian ] = "Der Wert, zu dem die Weibull-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è il valore in cui calcolare la funzione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die Weibull-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor em que se avalia a função." ;
+ Text [ finnish ] = "Der Wert, zu dem die Weibull-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som Weibull-fordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle la distribution Weibull doit être calculée." ;
+ Text [ swedish ] = "Värdet för vilket Weibullfördelningen skall beräknas." ;
+ Text [ dutch ] = "De waarde waarvan de Weibull-verdeling moet worden berekend." ;
+ Text [ spanish ] = "es el valor al que desea evaluar la función." ;
+ Text [ english_us ] = "The value for which the Weibull distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ÆËãΤ²®·Ö²¼µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî âû÷èñëÿåòñÿ ðàñïðåäåëåíèå Âåéáóëëà.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ wyznaczony rozk³ad Weibulla.";
+ Text[ japanese ] = "ܲÌÞÙ•ª•z‚ÌŒvŽZ‚É‘ã“ü‚·‚é’lB";
+ Text[ chinese_traditional ] = "¥Î¨Ó­pºâ­³§B¤À§Gªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÊÞííã ÇáÏÇáÉ ÚäÏåÇ.";
+ Text[ dutch ] = "De waarde waarvan de Weibull-verdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ÆËãΤ²®·Ö²¼µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç êáôáíïìÞ Weibull.";
+ Text[ korean ] = "»êÃâµÉ Weibull ¹èºÐ¿¡ ´ëÇÑ °ª";
+ Text[ turkish ] = "Weibull daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Alpha" ;
+ Text [ english ] = "alpha" ;
+ Text [ norwegian ] = "Alpha" ;
+ Text [ italian ] = "alfa" ;
+ Text [ portuguese_brazilian ] = "Alpha" ;
+ Text [ portuguese ] = "Alfa" ;
+ Text [ finnish ] = "Alpha" ;
+ Text [ danish ] = "Alfa" ;
+ Text [ french ] = "Alpha" ;
+ Text [ swedish ] = "alfa" ;
+ Text [ dutch ] = "Alfa" ;
+ Text [ spanish ] = "alfa" ;
+ Text [ english_us ] = "Alpha" ;
+ Text[ chinese_simplified ] = "Alpha";
+ Text[ russian ] = "Àëüôà";
+ Text[ polish ] = "Alfa";
+ Text[ japanese ] = "ƒ¿";
+ Text[ chinese_traditional ] = "Alpha";
+ Text[ arabic ] = "Alpha";
+ Text[ dutch ] = "Alfa";
+ Text[ chinese_simplified ] = "Alpha";
+ Text[ greek ] = "á";
+ Text[ korean ] = "¾ËÆÄ";
+ Text[ turkish ] = "Alfa";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Parameter Alpha der Weibull-Verteilung." ;
+ Text [ english ] = "is a parameter to the distribution." ;
+ Text [ norwegian ] = "Der Parameter Alpha der Weibull-Verteilung." ;
+ Text [ italian ] = "è un parametro per la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Parameter Alpha der Weibull-Verteilung." ;
+ Text [ portuguese ] = "é um parâmetro de distribuição." ;
+ Text [ finnish ] = "Der Parameter Alpha der Weibull-Verteilung." ;
+ Text [ danish ] = "Parameter alfa i Weibull-fordelingen." ;
+ Text [ french ] = "Le paramètre Alpha de la distribution Weibull." ;
+ Text [ swedish ] = "Parametern alfa för Weibull-fördelningen." ;
+ Text [ dutch ] = "De parameter alfa van de Weibull-verdeling." ;
+ Text [ spanish ] = "es un parámetro de la distribución." ;
+ Text [ english_us ] = "The Alpha parameter of the Weibull distribution." ;
+ Text[ chinese_simplified ] = "Τ²®·Ö²¼µÄ°¢¶û·¨²ÎÊý¡£";
+ Text[ russian ] = "Ïàðàìåòð ðàñïðåäåëåíèÿ Âåéáóëëà.";
+ Text[ polish ] = "Parametr alfa rozk³adu Weibulla.";
+ Text[ japanese ] = "ܲÌÞÙ•ª•z‚ÌÊß×Ò°À¡";
+ Text[ chinese_traditional ] = "­³§B¤À§Gªºªüº¸ªk°Ñ¼Æ¡C";
+ Text[ arabic ] = "ãÚáãÉ ááÊæÒíÚ.";
+ Text[ dutch ] = "De parameter alfa van de Weibull-verdeling.";
+ Text[ chinese_simplified ] = "Τ²®·Ö²¼µÄ°¢¶û·¨²ÎÊý¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò á ôçò êáôáíïìÞò Weibull.";
+ Text[ korean ] = "¿ÍÀÌºí ºÐÆ÷ÀÇ ¾ËÆÄ ÆĶó¹ÌÅÍÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Weibull daðýtýmýnýn alfa parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Beta" ;
+ Text [ english ] = "beta" ;
+ Text [ norwegian ] = "Beta" ;
+ Text [ italian ] = "Beta" ;
+ Text [ portuguese_brazilian ] = "Beta" ;
+ Text [ portuguese ] = "Beta" ;
+ Text [ finnish ] = "Beta" ;
+ Text [ danish ] = "Beta" ;
+ Text [ french ] = "Bêta" ;
+ Text [ swedish ] = "beta" ;
+ Text [ dutch ] = "Beta" ;
+ Text [ spanish ] = "beta" ;
+ Text [ english_us ] = "beta" ;
+ Text[ chinese_simplified ] = "Beta";
+ Text[ russian ] = "Áåòà";
+ Text[ polish ] = "Beta";
+ Text[ japanese ] = "ƒÀ";
+ Text[ chinese_traditional ] = "Beta";
+ Text[ arabic ] = "Beta";
+ Text[ dutch ] = "Beta";
+ Text[ chinese_simplified ] = "Beta";
+ Text[ greek ] = "ÂÞôá";
+ Text[ korean ] = "º£Å¸";
+ Text[ turkish ] = "Beta";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Der Parameter Beta der Weibull-Verteilung." ;
+ Text [ english ] = "is a parameter to the distribution." ;
+ Text [ norwegian ] = "Der Parameter Beta der Weibull-Verteilung." ;
+ Text [ italian ] = "è un parametro per la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Parameter Beta der Weibull-Verteilung." ;
+ Text [ portuguese ] = "é o parâmetro beta de distribuição." ;
+ Text [ finnish ] = "Der Parameter Beta der Weibull-Verteilung." ;
+ Text [ danish ] = "Parameter beta i Weibull-fordelingen." ;
+ Text [ french ] = "Le paramètre Bêta de la distribution Weibull." ;
+ Text [ swedish ] = "Parametern beta för Weibull-fördelningen." ;
+ Text [ dutch ] = "De parameter beta van de Weibull-verdeling." ;
+ Text [ spanish ] = "es un parámetro de la distribución." ;
+ Text [ english_us ] = "The Beta parameter of the Weibull distribution." ;
+ Text[ chinese_simplified ] = "Τ²®·Ö²¼µÄ±´Ëþ²ÎÊý¡£";
+ Text[ russian ] = "Ïàðàìåòð ðàñïðåäåëåíèÿ Âåéáóëëà.";
+ Text[ polish ] = "Parametr beta rozk³adu Weibulla.";
+ Text[ japanese ] = "ܲÌÞÙ•ª•z‚ÌÊß×Ò°À¡";
+ Text[ chinese_traditional ] = "­³§B¤À§Gªº¨©¶ð°Ñ¼Æ¡C";
+ Text[ arabic ] = "ãÚáãÉ ááÊæÒíÚ.";
+ Text[ dutch ] = "De parameter beta van de Weibull-verdeling.";
+ Text[ chinese_simplified ] = "Τ²®·Ö²¼µÄ±´Ëþ²ÎÊý¡£";
+ Text[ greek ] = "Ç ðáñÜìåôñïò ÂÞôá ôçò êáôáíïìÞò Weibull.";
+ Text[ korean ] = "¿ÍÀÌºí ºÐÆ÷ÀÇ º£Å¸ ÆĶó¹ÌÅÍÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Weibull daðýtýmýnýn beta parametresi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "K" ;
+ Text [ english ] = "cumulative" ;
+ Text [ norwegian ] = "K" ;
+ Text [ italian ] = "cumulativo" ;
+ Text [ portuguese_brazilian ] = "K" ;
+ Text [ portuguese ] = "Cumulativo" ;
+ Text [ finnish ] = "K" ;
+ Text [ danish ] = "Kumulativ" ;
+ Text [ french ] = "C" ;
+ Text [ swedish ] = "K" ;
+ Text [ dutch ] = "C" ;
+ Text [ spanish ] = "acumulado" ;
+ Text [ english_us ] = "C" ;
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ russian ] = "Èíòåãðàëüíûé";
+ Text[ polish ] = "Skumulowany";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®";
+ Text[ chinese_traditional ] = "cumulative";
+ Text[ arabic ] = "Cumulative";
+ Text[ dutch ] = "C";
+ Text[ chinese_simplified ] = "cumulative";
+ Text[ greek ] = "cumulative";
+ Text[ korean ] = "´©Àû";
+ Text[ turkish ] = "C";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ english ] = "determines the form of the function." ;
+ Text [ norwegian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ italian ] = "cumulativo. K = 0 calcola la funzione densità, K = 1 la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ portuguese ] = "é um valor lógico que determina a forma da função. 0 devolve a função de probabilidade; 1 devolve a distribuição cumulativa." ;
+ Text [ finnish ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
+ Text [ danish ] = "Kumulativ. K = 0 beregner tæthedsfunktionen, K = 1 fordelingen." ;
+ Text [ french ] = "Cumulative. C = 0 calcule la fonction de densité, C = 1 la distribution." ;
+ Text [ swedish ] = "Kumulerat. K = 0 beräknar täthetsfunktionen, K = 1 fördelningen." ;
+ Text [ dutch ] = "Cumulatief. C = 0 berekent de vorm (dichtheid), C = 1 de verdeling." ;
+ Text [ spanish ] = "es el valor lógico que determina la forma de la función. Si es 0 calcula la función acumulada, si es 1 la distribución." ;
+ Text [ english_us ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
+ Text[ chinese_simplified ] = "Âß¼­Öµ£¬ÓÃÓÚÈ·¶¨º¯ÊýµÄÀàÐÍ¡£ K = 0 ±íʾ¼ÆËã\nÃܶȺ¯Êý£¬ K = 1 ±íʾ¼ÆËãÀÛ»ý·Ö²¼º¯Êý¡£";
+ Text[ russian ] = "Îïðåäåëÿåò âèä ôóíêöèè: ôóíêöèÿ ïëîòíîñòè (0) èëè ôóíêöèÿ ðàñïðåäåëåíèÿ (1).";
+ Text[ polish ] = "Skumulowany. 0 oblicza gêstoœæ, 1 - rozk³ad.";
+ Text[ japanese ] = "ŠÖ”Œ`Ž®BŠÖ”Œ`Ž®=0‚É‚·‚é‚ÆŠm—¦–§“xŠÖ”‚Ì’l‚ªAŠÖ”Œ`Ž®=1‚É‚·‚é‚Æ•ª•zŠÖ”‚Ì’l‚ªŒvŽZ‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "ÅÞ¿è­È¡M¥Î¨Ó½T©w¨ç¼ÆªºÃþ«¬¡C K = 0 ªí¥Ü­pºâ±K«×¨ç¼Æ¡M K = 1 \nªí¥Ü­pºâ²Ö¿n¤À§G¨ç¼Æ¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ: ãä ÃÌá ÏÇáÉ ÇáÊæÒíÚ ÇáÊÑÇßãí¡ ÇÓÊÎÏã TRUEº ãä ÃÌá ÏÇáÉ ÇáÇÍÊãÇáÇÊ ÛíÑ ÇáÊÑÇßãíÉ¡ ÇÓÊÎÏã FALSE.";
+ Text[ dutch ] = "Cumulatief. C = 0 berekent de vorm (dichtheid), C = 1 de verdeling.";
+ Text[ chinese_simplified ] = "Âß¼­Öµ£¬ÓÃÓÚÈ·¶¨º¯ÊýµÄÀàÐÍ¡£ K = 0 ±íʾ¼ÆËã\nÃܶȺ¯Êý£¬ K = 1 ±íʾ¼ÆËãÀÛ»ý·Ö²¼º¯Êý¡£";
+ Text[ greek ] = "ÁèñïéóôéêÜ. Ê = 0 õðïëïãßæåé ôçí óõíÜñôçóç ðõêíüôçôáò, Ê = 1 ôçí êáôáíïìÞ.";
+ Text[ korean ] = "´©Àû. ´©Àû=0Àº ¹Ðµµ ÇÔ¼ö¸¦ °è»êÇÏ°í ´©Àû=1Àº ºÐÆ÷ÇÔ¼ö¸¦ °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Kümülasyon. K = 0 yoðunluk fonksiyonunu, K = 1 ise daðýtýmý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function HYPGEOMVERT #*=-
+ Resource SC_OPCODE_HYP_GEOM_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der hypergeometrischen Verteilung" ;
+ Text [ english ] = "Returns the hypergeometric distribution." ;
+ Text [ norwegian ] = "Werte der hypergeometrischen Verteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione ipergeometrica." ;
+ Text [ portuguese_brazilian ] = "Werte der hypergeometrischen Verteilung" ;
+ Text [ portuguese ] = "Devolve a distribuição hipergeométrica." ;
+ Text [ finnish ] = "Werte der hypergeometrischen Verteilung" ;
+ Text [ danish ] = "Værdier for den hypergeometriske fordeling" ;
+ Text [ french ] = "Valeurs de la distribution hypergéométrique." ;
+ Text [ swedish ] = "Värden för den hypergeometriska fördelningen." ;
+ Text [ dutch ] = "Geeft als resultaat de hypergeometrische verdeling." ;
+ Text [ spanish ] = "Devuelve la probabilidad para una variable aleatoria discreta siguiendo una distribución hipergeométrica" ;
+ Text [ english_us ] = "Values of the hypergeometric distribution." ;
+ Text[ chinese_simplified ] = "³¬¼¸ºÎ·Ö²¼Öµ";
+ Text[ russian ] = "Âîçâðàùàåò ãèïåðãåîìåòðè÷åñêîå ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Oblicza rozk³ad hipergeometryczny.";
+ Text[ japanese ] = "’´Šô‰½•ª•zŠÖ”‚Ì’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¶W´X¦ó¤À§G­È";
+ Text[ arabic ] = "Þíã ÊæÒíÚ ÇáåäÏÓÉ ÇáÝæÞíÉ";
+ Text[ dutch ] = "Geeft als resultaat de hypergeometrische verdeling.";
+ Text[ chinese_simplified ] = "³¬¼¸ºÎ·Ö²¼Öµ";
+ Text[ greek ] = "ÔéìÝò ôçò õðåñãåùìåôñéêÞò êáôáíïìÞò";
+ Text[ korean ] = "ÃÊ ±âÇÏÇÐ ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Hipergeometrik daðýtýmýn deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_HYPGEOMVERT );
+ 4; 0; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "X" ;
+ Text [ english ] = "sample_s" ;
+ Text [ norwegian ] = "X" ;
+ Text [ italian ] = "successi_camp" ;
+ Text [ portuguese_brazilian ] = "X" ;
+ Text [ portuguese ] = "Exemplo_s" ;
+ Text [ finnish ] = "X" ;
+ Text [ danish ] = "Udfald_s" ;
+ Text [ french ] = "S_échantillon" ;
+ Text [ swedish ] = "X" ;
+ Text [ dutch ] = "X" ;
+ Text [ spanish ] = "núm_éxito" ;
+ Text [ english_us ] = "X" ;
+ Text[ chinese_simplified ] = "sample_s";
+ Text[ russian ] = "X";
+ Text[ polish ] = "próbka_s";
+ Text[ japanese ] = "•W–{‚̬Œ÷”";
+ Text[ chinese_traditional ] = "sample_s";
+ Text[ arabic ] = "Sample_s";
+ Text[ dutch ] = "X";
+ Text[ chinese_simplified ] = "sample_s";
+ Text[ greek ] = "Sample_s";
+ Text[ korean ] = "X";
+ Text[ turkish ] = "Örn";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Anzahl der Erfolge in der Stichprobe." ;
+ Text [ english ] = "is the number of successes in the sample." ;
+ Text [ norwegian ] = "Die Anzahl der Erfolge in der Stichprobe." ;
+ Text [ italian ] = "è il numero di successi nel campione." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Erfolge in der Stichprobe." ;
+ Text [ portuguese ] = "é o número de sucessos num exemplo." ;
+ Text [ finnish ] = "Die Anzahl der Erfolge in der Stichprobe." ;
+ Text [ danish ] = "Antallet af gunstige udfald i stikprøven." ;
+ Text [ french ] = "Le nombre de succès de l'échantillon." ;
+ Text [ swedish ] = "Antalet lyckade försök i stickprovet." ;
+ Text [ dutch ] = "Het aantal gunstige uitkomsten in de steekproef." ;
+ Text [ spanish ] = "es el número de éxitos en la muestra." ;
+ Text [ english_us ] = "The numbe rof successes in the sample." ;
+ Text[ chinese_simplified ] = "³éÑùµÄ³É¹¦ÊýÄ¿¡£";
+ Text[ russian ] = "Êîëè÷åñòâî óñïåøíûõ èñïûòàíèé â âûáîðêå.";
+ Text[ polish ] = "Liczba sukcesów w próbce.";
+ Text[ japanese ] = "•W–{“à‚ŬŒ÷‚·‚é”B";
+ Text[ chinese_traditional ] = "©â¼Ëªº¦¨¥\\¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáäÌÇÍÇÊ Ýí ÇáÚíäÉ.";
+ Text[ dutch ] = "Het aantal gunstige uitkomsten in de steekproef.";
+ Text[ chinese_simplified ] = "³éÑùµÄ³É¹¦ÊýÄ¿¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí åðéôõ÷éþí ôïõ äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»ÀÇ ÀÏ·Ã ¹øÈ£";
+ Text[ turkish ] = "Örnekteki baþarý sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "N_Stich" ;
+ Text [ english ] = "number_sample" ;
+ Text [ norwegian ] = "N Stich" ;
+ Text [ italian ] = "num_campione" ;
+ Text [ portuguese_brazilian ] = "N Stich" ;
+ Text [ portuguese ] = "n_amostra" ;
+ Text [ finnish ] = "N Stich" ;
+ Text [ danish ] = "Størrelse" ;
+ Text [ french ] = "N_échantillon" ;
+ Text [ swedish ] = "storlek" ;
+ Text [ dutch ] = "N_steekproef" ;
+ Text [ spanish ] = "n_muestra" ;
+ Text [ english_us ] = "n_sample" ;
+ Text[ chinese_simplified ] = "n_sample";
+ Text[ russian ] = "Ðàçìåð_âûáîðêè";
+ Text[ polish ] = "wielk_próbki";
+ Text[ japanese ] = "•W–{”";
+ Text[ chinese_traditional ] = "n_sample";
+ Text[ arabic ] = "Number_sample";
+ Text[ dutch ] = "N_steekproef";
+ Text[ chinese_simplified ] = "n_sample";
+ Text[ greek ] = "Number_sample";
+ Text[ korean ] = "n_Ç¥º»";
+ Text[ turkish ] = "N_örnek";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Größe der Stichprobe. : Die Gr÷˜e der Stichprobe. */
+ Text = "Die Größe der Stichprobe." ;
+ Text [ english ] = "is the size of the sample." ;
+ Text [ norwegian ] = "Die Größe der Stichprobe." ;
+ Text [ italian ] = "è la dimensione del campione." ;
+ Text [ portuguese_brazilian ] = "Die Größe der Stichprobe." ;
+ Text [ portuguese ] = "é o tamanho do exemplo." ;
+ Text [ finnish ] = "Die Größe der Stichprobe." ;
+ Text [ danish ] = "Stikprøvens størrelse." ;
+ Text [ french ] = "La taille de l'échantillon." ;
+ Text [ swedish ] = "Storleken på stickprovet." ;
+ Text [ dutch ] = "De omvang van de steekproef." ;
+ Text [ spanish ] = "es el tamaño de la muestra." ;
+ Text [ english_us ] = "The size of the sample." ;
+ Text[ chinese_simplified ] = "³éÑù´óС¡£";
+ Text[ russian ] = "Ðàçìåð âûáîðêè.";
+ Text[ polish ] = "Rozmiar próbki.";
+ Text[ japanese ] = "•W–{”‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "©â¼Ë¤j¤p¡C";
+ Text[ arabic ] = "ÍÌã ÇáÚíäÉ.";
+ Text[ dutch ] = "De omvang van de steekproef.";
+ Text[ chinese_simplified ] = "³éÑù´óС¡£";
+ Text[ greek ] = "Ôï ìÝãåèïò ôïõ äåßãìáôïò.";
+ Text[ korean ] = "Ç¥º»ÀÇ Å©±â";
+ Text[ turkish ] = "Örneðin büyüklüðü.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "M" ;
+ Text [ english ] = "population_s" ;
+ Text [ norwegian ] = "M" ;
+ Text [ italian ] = "successi_pop" ;
+ Text [ portuguese_brazilian ] = "M" ;
+ Text [ portuguese ] = "Sucesso_popul." ;
+ Text [ finnish ] = "M" ;
+ Text [ danish ] = "Population_s" ;
+ Text [ french ] = "S_population" ;
+ Text [ swedish ] = "population" ;
+ Text [ dutch ] = "M" ;
+ Text [ spanish ] = "pobl_éxito" ;
+ Text [ english_us ] = "successes" ;
+ Text[ chinese_simplified ] = "population_s";
+ Text[ russian ] = "Ãåí_ñîâîêóïíîñòü_s";
+ Text[ polish ] = "populacja_s";
+ Text[ japanese ] = "•êW’c‚̬Œ÷”";
+ Text[ chinese_traditional ] = "population_s";
+ Text[ arabic ] = "Population_s";
+ Text[ dutch ] = "M";
+ Text[ chinese_simplified ] = "population_s";
+ Text[ greek ] = "Population_s";
+ Text[ korean ] = "population_s";
+ Text[ turkish ] = "Baþarý";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Anzahl der Erfolge in der Grundgesamtheit." ;
+ Text [ english ] = "is the number of successes in the population." ;
+ Text [ norwegian ] = "Die Anzahl der Erfolge in der Grundgesamtheit." ;
+ Text [ italian ] = "è il numero di successi nella popolazione." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Erfolge in der Grundgesamtheit." ;
+ Text [ portuguese ] = "é o número de sucessos na população." ;
+ Text [ finnish ] = "Die Anzahl der Erfolge in der Grundgesamtheit." ;
+ Text [ danish ] = "Antallet af gunstige udfald i populationen." ;
+ Text [ french ] = "Le nombre de succès de la population." ;
+ Text [ swedish ] = "Antalet lyckade försök i populationen." ;
+ Text [ dutch ] = "Het aantal gunstige uitkomsten in de populatie." ;
+ Text [ spanish ] = "es el número de éxitos en la población." ;
+ Text [ english_us ] = "The number of successes in the population." ;
+ Text[ chinese_simplified ] = "³éÑù×ÜÌåÖеijɹ¦´ÎÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî óñïåøíûõ èñïûòàíèé â ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Liczba sukcesów w populacji.";
+ Text[ japanese ] = "•êW’c“à‚ŬŒ÷‚·‚é”B";
+ Text[ chinese_traditional ] = "©â¼ËÁ`Å餤ªº¦¨¥\\¦¸¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáäÌÇÍÇÊ Ýí ÇáãÌÊãÚ.";
+ Text[ dutch ] = "Het aantal gunstige uitkomsten in de populatie.";
+ Text[ chinese_simplified ] = "³éÑù×ÜÌåÖеijɹ¦´ÎÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò åðéôõ÷éþí óôïí ðëçèõóìü.";
+ Text[ korean ] = "¸ðÁý´Ü¿¡¼­ÀÇ ¼º°ø Ƚ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Popülasyondaki baþarý sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "N_Gesamt" ;
+ Text [ english ] = "number_population" ;
+ Text [ norwegian ] = "N Gesamt" ;
+ Text [ italian ] = "num_popolazione" ;
+ Text [ portuguese_brazilian ] = "N Gesamt" ;
+ Text [ portuguese ] = "n_total" ;
+ Text [ finnish ] = "N Gesamt" ;
+ Text [ danish ] = "Populationsstørrelse" ;
+ Text [ french ] = "N_population" ;
+ Text [ swedish ] = "populationsstorlek" ;
+ Text [ dutch ] = "P-grootte" ;
+ Text [ spanish ] = "n_total" ;
+ Text [ english_us ] = "n_population" ;
+ Text[ chinese_simplified ] = "n_×ܼÆ";
+ Text[ russian ] = "Ðàçìåð_ãåí_ñîâîêóïíîñòè";
+ Text[ polish ] = "N_³¹cznie";
+ Text[ japanese ] = "•êW’c‚Ì‘å‚«‚³";
+ Text[ chinese_traditional ] = "n_population";
+ Text[ arabic ] = "ãÌÊãÚn_";
+ Text[ dutch ] = "P-grootte";
+ Text[ chinese_simplified ] = "n_×ܼÆ";
+ Text[ greek ] = "n_ðëçèõóìüò";
+ Text[ korean ] = "n_ÃÑ°è";
+ Text[ turkish ] = "N_toplam";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Größe der Grundgesamtheit. : Die Gr÷˜e der Grundgesamtheit. */
+ Text = "Die Größe der Grundgesamtheit." ;
+ Text [ english ] = "is the population size." ;
+ Text [ norwegian ] = "Die Größe der Grundgesamtheit." ;
+ Text [ italian ] = "è la dimensione della popolazione." ;
+ Text [ portuguese_brazilian ] = "Die Größe der Grundgesamtheit." ;
+ Text [ portuguese ] = "é o tamanho da população." ;
+ Text [ finnish ] = "Die Größe der Grundgesamtheit." ;
+ Text [ danish ] = "Populationens størrelse." ;
+ Text [ french ] = "La taille de la population." ;
+ Text [ swedish ] = "Storleken på populationen." ;
+ Text [ dutch ] = "De grootte van de populatie" ;
+ Text [ spanish ] = "es el tamaño de la población." ;
+ Text [ english_us ] = "The population size." ;
+ Text[ chinese_simplified ] = "³éÑùµÄ×ÜÌåÊýÄ¿¡£";
+ Text[ russian ] = "Ðàçìåð ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "WielkoϾ populacji.";
+ Text[ japanese ] = "•êW’c‘S‘Ì‚Ì”B";
+ Text[ chinese_traditional ] = "©â¼ËªºÁ`Åé¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÍÌã ÇáãÌÊãÚ.";
+ Text[ dutch ] = "De grootte van de populatie";
+ Text[ chinese_simplified ] = "³éÑùµÄ×ÜÌåÊýÄ¿¡£";
+ Text[ greek ] = "Ôï ìÝãåèïò ôïõ ðëçèõóìïý.";
+ Text[ korean ] = "¸ðÁý´ÜÀÇ Å©±âÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Popülasyonun büyüklüðü.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TVERT #*=-
+ Resource SC_OPCODE_T_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Werte der (Student'schen) t-Verteilung : Werte der (Student''schen) t-Verteilung */
+ /* ### ACHTUNG: Neuer Text in Resource? Werte der (Student'schen) t-Verteilung : Werte der (Student''schen) t-Verteilung */
+ /* ### ACHTUNG: Neuer Text in Resource? Werte der (Student'schen) t-Verteilung : Werte der (Student''schen) t-Verteilung */
+ /* ### ACHTUNG: Neuer Text in Resource? Werte der (Student'schen) t-Verteilung : Werte der (Student''schen) t-Verteilung */
+ Text = "Werte der (Student'schen) t-Verteilung" ;
+ Text [ english ] = "Returns the Student's t-distribution." ;
+ Text [ norwegian ] = "Werte der (Student'schen) t-Verteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione t di Student." ;
+ Text [ portuguese_brazilian ] = "Werte der (Student'schen) t-Verteilung" ;
+ Text [ portuguese ] = "Devolve a distribuição T." ;
+ Text [ finnish ] = "Werte der (Student'schen) t-Verteilung" ;
+ Text [ danish ] = "Værdier for Students t-fordeling" ;
+ Text [ french ] = "Valeurs de la distribution T (de Student)." ;
+ Text [ swedish ] = "Värden för (Students) t-fördelning." ;
+ Text [ dutch ] = "Waarden van de Student T-verdeling" ;
+ Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria siguiendo una distribución t de Student" ;
+ Text [ english_us ] = "Returns the t-distribution." ;
+ Text[ chinese_simplified ] = "¼ÆËãѧÉúÊÏ t ·Ö²¼¡£";
+ Text[ russian ] = "Âû÷èñëÿåò çíà÷åíèå t-ðàñïðåäåëåíèå Ñòüþäåíòà.";
+ Text[ polish ] = "Wartoœci rozk³adu t";
+ Text[ japanese ] = "(½Á­°ÃÞÝÄ‚Ì)t•ª•z‚Ì’lB";
+ Text[ chinese_traditional ] = "­pºâ¾Ç¥Í¤ó t ¤À§G¡C";
+ Text[ arabic ] = "Þíã ÊæÒíÚ t.";
+ Text[ dutch ] = "Waarden van de Student T-verdeling";
+ Text[ chinese_simplified ] = "¼ÆËãѧÉúÊÏ t ·Ö²¼¡£";
+ Text[ greek ] = "ÔéìÝò ôçò êáôáíïìÞò t-Student.";
+ Text[ korean ] = "t-¹èºÐ ¹Ýȯ";
+ Text[ turkish ] = "T daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_TVERT );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die t-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is the numeric value at which to evaluate the distribution." ;
+ Text [ norwegian ] = "Der Wert, zu dem die t-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è il valore numerico in cui calcolare la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die t-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor numérico pelo qual se avalia a distribuição." ;
+ Text [ finnish ] = "Der Wert, zu dem die t-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som t-fordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle la distribution T doit être calculée." ;
+ Text [ swedish ] = "Värdet som t-fördelningen skall beräknas för." ;
+ Text [ dutch ] = "De waarde waarvan de T-verdeling wordt berekend." ;
+ Text [ spanish ] = "es el valor numérico al que se ha de evaluar la distribución." ;
+ Text [ english_us ] = "The value for which the T distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä t-·Ö²¼µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî òðåáóåòñÿ âû÷èñëèòü ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony rozk³ad t.";
+ Text[ japanese ] = "t•ª•z‚ðŒvŽZ‚·‚é”’lB";
+ Text[ chinese_traditional ] = "­n­pºâ¨ä t-¤À§Gªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÑÞãíÉ ÇáãÑÇÏ ÍÓÇÈ ÇáÊæÒíÚ ÚäÏåÇ.";
+ Text[ dutch ] = "De waarde waarvan de T-verdeling wordt berekend.";
+ Text[ chinese_simplified ] = "Òª¼ÆËãÆä t-·Ö²¼µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç êáôáíïìÞ t.";
+ Text[ korean ] = "»êÃâµÉ T ¹èºÐ¿¡ ´ëÇÑ °ª";
+ Text[ turkish ] = "T daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Freiheitsgrade" ;
+ Text [ english ] = "degrees_freedom" ;
+ Text [ norwegian ] = "Freiheitsgrade" ;
+ Text [ italian ] = "gradi_libertà" ;
+ Text [ portuguese_brazilian ] = "Freiheitsgrade" ;
+ Text [ portuguese ] = "Graus_liberdade" ;
+ Text [ finnish ] = "Freiheitsgrade" ;
+ Text [ danish ] = "Frihedsgrader" ;
+ Text [ french ] = "Degrés_liberté" ;
+ Text [ swedish ] = "frihetsgrader" ;
+ Text [ dutch ] = "Vrijheidsgraden" ;
+ Text [ spanish ] = "grados_libertad" ;
+ Text [ english_us ] = "degrees_freedom" ;
+ Text[ chinese_simplified ] = "degrees_freedom";
+ Text[ russian ] = "Ñòåïåíè_ñâîáîäû";
+ Text[ polish ] = "Stopnie swobody";
+ Text[ japanese ] = "Ž©—R“x";
+ Text[ chinese_traditional ] = "degrees_freedom";
+ Text[ arabic ] = "Degrees_freedom";
+ Text[ dutch ] = "Vrijheidsgraden";
+ Text[ chinese_simplified ] = "degrees_freedom";
+ Text[ greek ] = "Âáèìïß_åëåõèåñßáò";
+ Text[ korean ] = "degrees_freedom";
+ Text[ turkish ] = "Özgürlük dereceleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Freiheitsgrade der t-Verteilung." ;
+ Text [ english ] = "is an integer indicating the number of degrees of freedom." ;
+ Text [ norwegian ] = "Die Freiheitsgrade der t-Verteilung." ;
+ Text [ italian ] = "è un intero che indica il numero di gradi di libertà." ;
+ Text [ portuguese_brazilian ] = "Die Freiheitsgrade der t-Verteilung." ;
+ Text [ portuguese ] = "é um número inteiro que indica o número de graus de liberdade." ;
+ Text [ finnish ] = "Die Freiheitsgrade der t-Verteilung." ;
+ Text [ danish ] = "T-fordelingens frihedsgrader." ;
+ Text [ french ] = "Les degrés de liberté de la distribution T." ;
+ Text [ swedish ] = "T-fördelningens frihetsgrader." ;
+ Text [ dutch ] = "Het aantal vrijheidsgraden van de verdeling." ;
+ Text [ spanish ] = "es un entero que indica el número de grados de libertad." ;
+ Text [ english_us ] = "The degrees of freedom of the T distribution." ;
+ Text[ chinese_simplified ] = "t-·Ö²¼µÄ×ÔÓɶȡ£";
+ Text[ russian ] = "Êîëè÷åñòâî ñòåïåíåé ñâîáîäû t-ðàñïðåäåëíèÿ.";
+ Text[ polish ] = "Stopnie swobody w rozk³adzie t.";
+ Text[ japanese ] = "t•ª•z‚ÌŽ©—R“xB";
+ Text[ chinese_traditional ] = "t-¤À§Gªº¦Û¥Ñ«×¡C";
+ Text[ arabic ] = "ÑÞã ÕÍíÍ íÔíÑ Åáì ÚÏÏ ÏÑÌÇÊ ÇáÍÑíÉ.";
+ Text[ dutch ] = "Het aantal vrijheidsgraden van de verdeling.";
+ Text[ chinese_simplified ] = "t-·Ö²¼µÄ×ÔÓɶȡ£";
+ Text[ greek ] = "Ïé âáèìïß åëåõèåñßáò ôçò êáôáíïìÞò Ô.";
+ Text[ korean ] = "T ºÐÆ÷ÀÇ ÀÚÀ¯µµÀÔ´Ï´Ù.";
+ Text[ turkish ] = "T daðýtýmýnýn özgürlük dereceleri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Modus" ;
+ Text [ english ] = "tails" ;
+ Text [ norwegian ] = "Modus" ;
+ Text [ italian ] = "modo" ;
+ Text [ portuguese_brazilian ] = "Modus" ;
+ Text [ portuguese ] = "Modo" ;
+ Text [ finnish ] = "Modus" ;
+ Text [ danish ] = "Modus" ;
+ Text [ french ] = "Mode" ;
+ Text [ swedish ] = "läge" ;
+ Text [ dutch ] = "Modus" ;
+ Text [ spanish ] = "Modo" ;
+ Text [ english_us ] = "mode" ;
+ Text[ chinese_simplified ] = "tails";
+ Text[ russian ] = "Õâîñòû";
+ Text[ polish ] = "Tryb";
+ Text[ japanese ] = "”ö•”";
+ Text[ chinese_traditional ] = "tails";
+ Text[ arabic ] = "Tails";
+ Text[ dutch ] = "Modus";
+ Text[ chinese_simplified ] = "tails";
+ Text[ greek ] = "ÊáôÜóôáóç";
+ Text[ korean ] = "¸ðµå";
+ Text[ turkish ] = "Kip";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = " Modus = 1 berechnet den einseitigen Test, Modus = 2 den zweiseitigen." ;
+ Text [ english ] = "specifies the number of distribution tails to return." ;
+ Text [ norwegian ] = " Modus = 1 berechnet den einseitigen Test, Modus = 2 den zweiseitigen." ;
+ Text [ italian ] = "specifica il numero di code di distribuzione da restituire." ;
+ Text [ portuguese_brazilian ] = "Modus = 1 berechnet den einseitigen Test, Modus = 2 den zweiseitigen." ;
+ Text [ portuguese ] = "determina o modo de distribuição a devolver: 1 = unilateral; 2 = bilateral." ;
+ Text [ finnish ] = " Modus = 1 berechnet den einseitigen Test, Modus = 2 den zweiseitigen." ;
+ Text [ danish ] = "Modus = 1 beregner en ensidet test, Modus = 2 en tosidet." ;
+ Text [ french ] = "Mode = 1 calcule le test unilatéral ; mode = 2 calcule le test bilatéral." ;
+ Text [ swedish ] = "Läge = 1 beräknar det ensidiga testet, läge =2 beräknas det tvåsidiga." ;
+ Text [ dutch ] = "Modus = 1 berekent de eenzijdige test, modus = 2 de tweezijdige." ;
+ Text [ spanish ] = "especifica el número de colas de la distribución que se ha de devolver." ;
+ Text [ english_us ] = "Mode = 1calculates the one-tailed test, 2 = two-tailed distribution." ;
+ Text[ chinese_simplified ] = "tails = 1 ¼ÆËãµ¥Ò³µÄÊÔÑ飬tails = 2 ¼ÆËãË«Ò³µÄÊÔÑé¡£";
+ Text[ russian ] = "Åñëè õâîñòû = 1, òî ôóíêöèÿ ÑÒÜÞÄÐÀÑÏ âû÷èñëÿåò îäíîñòîðîííåå ðàñïðåäåëåíèå. Åñëè õâîñòû = 2, òî ôóíêöèÿ ÑÒÜÞÄÐÀÑÏ âîçâðàùàåò äâóñòîðîííåå ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Tryb = 1 oblicza jednoœladowy test, Tryb = 2 dwuœladowy.";
+ Text[ japanese ] = "”ö•”=1‚É‚·‚é‚ƕБ¤•ª•z‚Ì’l‚ªA”ö•”= 2‚É‚·‚é‚Æ—¼‘¤•ª•z‚Ì’l‚ªŒvŽZ‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "tails = 1 ­pºâ³æ­¶ªº¸ÕÅç¡Mtails = 2 ­pºâÂù­¶ªº¸ÕÅç¡C";
+ Text[ arabic ] = "ÊõÍÏÏ ÚÏÏ ÃØÑÇÝ ÇáÊæÒíÚ ááÅÑÌÇÚº ÊæÒíÚ ÃÍÇÏí ÇáØÑÝ = 1º ÊæÒíÚ ËäÇÆí ÇáØÑÝ = 2.";
+ Text[ dutch ] = "Modus = 1 berekent de eenzijdige test, modus = 2 de tweezijdige.";
+ Text[ chinese_simplified ] = "tails = 1 ¼ÆËãµ¥Ò³µÄÊÔÑ飬tails = 2 ¼ÆËãË«Ò³µÄÊÔÑé¡£";
+ Text[ greek ] = "Ôýðïò =1 õðïëïãßæåé ôïí ìïíüðëåõñï Ýëåã÷ï Ôýðïò = 2 ôïí äßðëåõñï Ýëåã÷ï.";
+ Text[ korean ] = "Mode=1Àº ÇѸéÀÇ Å×½ºÆ®¸¦ °è»êÇÏ°í Mod=2´Â µÎ¸éÀÇ Å×½ºÆ®¸¦ °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Kip = 1, tek kuyruklu deneyi, Kip = 2 ise iki kuyruklu deneyi hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TINV #*=-
+ Resource SC_OPCODE_T_INV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Werte der inversen (Student'schen) t-Verteilung : Werte der inversen (Student''schen) t-Verteilung */
+ /* ### ACHTUNG: Neuer Text in Resource? Werte der inversen (Student'schen) t-Verteilung : Werte der inversen (Student''schen) t-Verteilung */
+ /* ### ACHTUNG: Neuer Text in Resource? Werte der inversen (Student'schen) t-Verteilung : Werte der inversen (Student''schen) t-Verteilung */
+ /* ### ACHTUNG: Neuer Text in Resource? Werte der inversen (Student'schen) t-Verteilung : Werte der inversen (Student''schen) t-Verteilung */
+ Text = "Werte der inversen (Student'schen) t-Verteilung" ;
+ Text [ english ] = "Returns the inverse of the Student's t-distribution for the specified degrees of freedom." ;
+ Text [ norwegian ] = "Werte der inversen (Student'schen) t-Verteilung" ;
+ Text [ italian ] = "Restituisce l'inversa della distribuzione t di Student." ;
+ Text [ portuguese_brazilian ] = "Werte der inversen (Student'schen) t-Verteilung" ;
+ Text [ portuguese ] = "Devolve o inverso da distribuição T." ;
+ Text [ finnish ] = "Werte der inversen (Student'schen) t-Verteilung" ;
+ Text [ danish ] = "Værdier for den inverse Students t-fordeling" ;
+ Text [ french ] = "Valeurs de la distribution T (de Student) inverse." ;
+ Text [ swedish ] = "Värden för den inversa (Students) t-fördelningen." ;
+ Text [ dutch ] = "Waarden van de inverse Student T-verdeling" ;
+ Text [ spanish ] = "Devuelve, para una probabilidad dada, el valor de la variable aleatoria siguiendo una distribución t inversa de Student" ;
+ Text [ english_us ] = "Values of the inverse t-distribution." ;
+ Text[ chinese_simplified ] = "˫βѧÉúÊÏ t ·Ö²¼µÄÄ溯Êý¡£";
+ Text[ russian ] = "Âû÷èñëÿåò îáðàòíîå çíà÷åíèå t-ðàñïðåäåëåíèÿ Ñòüþäåíòà.";
+ Text[ polish ] = "Wyznacza odwrotnoœæ rozk³adu t Studenta.";
+ Text[ japanese ] = "(½Á­°ÃÞÝÄ‚Ì)t•ª•z‚Ì‹tŠÖ”‚Ì’lB";
+ Text[ chinese_traditional ] = "Âù§À¾Ç¥Í¤ó t ¤À§Gªº°f¨ç¼Æ¡C";
+ Text[ arabic ] = "Þíã ÊæÒíÚ t ÇáÚßÓí.";
+ Text[ dutch ] = "Waarden van de inverse Student T-verdeling";
+ Text[ chinese_simplified ] = "˫βѧÉúÊÏ t ·Ö²¼µÄÄ溯Êý¡£";
+ Text[ greek ] = "ÔéìÝò ôçò áíôßóôñïöçò êáôáíïìÞò t-Student.";
+ Text[ korean ] = "¿ª t ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Ters T daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_TINV );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "probability" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "probabilità" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Probabilidade" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Sandsynlighed" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "probabilidad" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wahrscheinlichkeitswert, zu dem die inverse t-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is the probability associated with the two-tailed Student's t-distribution." ;
+ Text [ norwegian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse t-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è la probabilità associata alla distribuzione t di Student a due code." ;
+ Text [ portuguese_brazilian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse t-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é a probabilidade para a qual deseja calcular a distribuição T." ;
+ Text [ finnish ] = "Der Wahrscheinlichkeitswert, zu dem die inverse t-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Sandsynligheden som den inverse t-fordeling skal beregnes for." ;
+ Text [ french ] = "La valeur de probabilité pour laquelle la distribution T inverse doit être calculée." ;
+ Text [ swedish ] = "Sannolikhetsvärdet för vilket den inversa t-fördelningen skall beräknas." ;
+ Text [ dutch ] = "De kans die samenhangt met de inverse T-verdeling." ;
+ Text [ spanish ] = "es la probabilidad asociada con la distribución t de Student dos colas." ;
+ Text [ english_us ] = "The probability value for which the inverse T distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "¶ÔÓ¦ÓÚ˫βѧÉúÊÏ t ·Ö²¼µÄ¸ÅÂÊ¡£";
+ Text[ russian ] = "Çíà÷åíèå âåðîÿòíîñòè, äëÿ êîòîðîãî íåîáõîäèìî âû÷èñëèòü îáðàòîíîå t-ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Prawdopodobieñstwo, dla którego ma zostaæ obliczona odwrotnoœæ rozk³adu t Studenta.";
+ Text[ japanese ] = "t•ª•z‚Ì‹tŠÖ”‚ÌŒvŽZ‚ÉŽg‚¤Šm—¦B";
+ Text[ chinese_traditional ] = "¹ïÀ³¤_Âù§À¾Ç¥Í¤ó t ¤À§Gªº·§²v¡C";
+ Text[ arabic ] = "ÇáÇÍÊãÇá ÇáãÑÇÏ ÍÓÇÈ ÊæÒíÚ t ÇáÚßÓí ÚäÏå.";
+ Text[ dutch ] = "De kans die samenhangt met de inverse T-verdeling.";
+ Text[ chinese_simplified ] = "¶ÔÓ¦ÓÚ˫βѧÉúÊÏ t ·Ö²¼µÄ¸ÅÂÊ¡£";
+ Text[ greek ] = "Ç ôéìÞ ðéèáíüôçôáò ãéá ôçí ïðïßá ðñüêåéôáé íá õðïëïãéóôåß ç áíôßóôñïöç êáôáíïìÞ t.";
+ Text[ korean ] = "»êÃâµÉ ¿ªt ¹èºÐ¿¡ ´ëÇÑ È®À² °ª";
+ Text[ turkish ] = "Ters T daðýtýmý hesaplanacak olasýlýk deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Freiheitsgrade" ;
+ Text [ english ] = "degrees_freedom" ;
+ Text [ norwegian ] = "Freiheitsgrade" ;
+ Text [ italian ] = "gradi_libertà" ;
+ Text [ portuguese_brazilian ] = "Freiheitsgrade" ;
+ Text [ portuguese ] = "Graus_liberdade" ;
+ Text [ finnish ] = "Freiheitsgrade" ;
+ Text [ danish ] = "Frihedsgrader" ;
+ Text [ french ] = "Degrés_liberté" ;
+ Text [ swedish ] = "frihetsgrader" ;
+ Text [ dutch ] = "Vrijheidsgraden" ;
+ Text [ spanish ] = "grados_libertad" ;
+ Text [ english_us ] = "degrees_freedom" ;
+ Text[ chinese_simplified ] = "degrees_freedom";
+ Text[ russian ] = "Ñòåïåíè_ñâîáîäû";
+ Text[ polish ] = "Stopnie swobody";
+ Text[ japanese ] = "Ž©—R“x";
+ Text[ chinese_traditional ] = "degrees_freedom";
+ Text[ arabic ] = "Degrees_freedom";
+ Text[ dutch ] = "Vrijheidsgraden";
+ Text[ chinese_simplified ] = "degrees_freedom";
+ Text[ greek ] = "Âáèìïß_åëåõèåñßáò";
+ Text[ korean ] = "degrees_freedom";
+ Text[ turkish ] = "Özgürlük dereceleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Freiheitsgrade der t-Verteilung." ;
+ Text [ english ] = "is the number of degrees of freedom to characterize the distribution." ;
+ Text [ norwegian ] = "Die Freiheitsgrade der t-Verteilung." ;
+ Text [ italian ] = "è il numero di gradi di libertà che caratterizza la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Die Freiheitsgrade der t-Verteilung." ;
+ Text [ portuguese ] = "é o número de graus de liberdade para a distribuição." ;
+ Text [ finnish ] = "Die Freiheitsgrade der t-Verteilung." ;
+ Text [ danish ] = "T-fordelingens frihedsgrader." ;
+ Text [ french ] = "Les degrés de liberté de la distribution T." ;
+ Text [ swedish ] = "T-fördelningens frihetsgrader." ;
+ Text [ dutch ] = "Het aantal vrijheidsgraden van de verdeling." ;
+ Text [ spanish ] = "es el número de grados de libertad para diferenciar la distribución." ;
+ Text [ english_us ] = "The degrees of freedom of the T distribution." ;
+ Text[ chinese_simplified ] = "t-·Ö²¼µÄ×ÔÓɶȡ£";
+ Text[ russian ] = "×èñëî ñòåïåíåé ñâîáîäû t-ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Stopnie swobody w rozk³adzie t.";
+ Text[ japanese ] = "t•ª•z‚ÌŽ©—R“xB";
+ Text[ chinese_traditional ] = "t-¤À§Gªº¦Û¥Ñ«×¡C";
+ Text[ arabic ] = "ÑÞã íÔíÑ Åáì ÏÑÌÇÊ ÇáÍÑíÉ ááÊæÒíÚ.";
+ Text[ dutch ] = "Het aantal vrijheidsgraden van de verdeling.";
+ Text[ chinese_simplified ] = "t-·Ö²¼µÄ×ÔÓɶȡ£";
+ Text[ greek ] = "Ïé âáèìïß åëåõèåñßáò ôçò êáôáíïìÞò Ô.";
+ Text[ korean ] = "T ºÐÆ÷ÀÇ ÀÚÀ¯µµÀÔ´Ï´Ù.";
+ Text[ turkish ] = "T daðýtýmý özgürlük dereceleri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function FVERT #*=-
+ Resource SC_OPCODE_F_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der F-Verteilung" ;
+ Text [ english ] = "is the second array or range of data." ;
+ Text [ norwegian ] = "Werte der F-Verteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione F." ;
+ Text [ portuguese_brazilian ] = "Werte der F-Verteilung" ;
+ Text [ portuguese ] = "Devolve a distribuição da probabilidade F." ;
+ Text [ finnish ] = "Werte der F-Verteilung" ;
+ Text [ danish ] = "Værdier for F-fordelingen" ;
+ Text [ french ] = "Valeurs de la distribution F." ;
+ Text [ swedish ] = "Värden för F-fördelningen." ;
+ Text [ dutch ] = "Geeft als resultaat de F-verdeling." ;
+ Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria siguiendo una distribución de probabilidad F" ;
+ Text [ english_us ] = "Values of the F probability distribution." ;
+ Text[ chinese_simplified ] = "¼ÆËã F - ¸ÅÂÊ·Ö²¼¡£";
+ Text[ russian ] = "Âîçâðàùàåò F-ðàñïðåäåëåíèå âåðîÿòíîñòè.";
+ Text[ polish ] = "Wyznacza rozk³ad F prawdopodobieñstwa";
+ Text[ japanese ] = "FŠm—¦•ª•z‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ F - ·§²v¤À§G¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ ÇáÇÍÊãÇáí F.";
+ Text[ dutch ] = "Geeft als resultaat de F-verdeling.";
+ Text[ chinese_simplified ] = "¼ÆËã F - ¸ÅÂÊ·Ö²¼¡£";
+ Text[ greek ] = "ÔéìÝò ôçò êáôáíïìÞò F.";
+ Text[ korean ] = "F È®À² ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "F daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_FVERT );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die F-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is the value at which to evaluate the function." ;
+ Text [ norwegian ] = "Der Wert, zu dem die F-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è il valore in cui calcolare la funzione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die F-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor de avaliação da função." ;
+ Text [ finnish ] = "Der Wert, zu dem die F-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som F-fordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle la distribution F doit être calculée." ;
+ Text [ swedish ] = "Värdet för vilket F-fördelningen skall beräknas." ;
+ Text [ dutch ] = "De waarde waarop de F-verdeling moet worden berekend." ;
+ Text [ spanish ] = "es el valor al que desea evaluar la función." ;
+ Text [ english_us ] = "The value for which the F distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËã F - ¸ÅÂÊ·Ö²¼µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî âû÷èñëÿåòñÿ F-ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wartoœæ, dla której ma zostaæ obliczony rozk³ad F prawdopodobieñstwa.";
+ Text[ japanese ] = "FŠm—¦•ª•zŠÖ”‚É‘ã“ü‚·‚é’lB";
+ Text[ chinese_traditional ] = "¥Î¨Ó­pºâ F-·§²v¤À§Gªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÊÞííã ÇáÏÇáÉ ÚäÏåÇ.";
+ Text[ dutch ] = "De waarde waarop de F-verdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËã F - ¸ÅÂÊ·Ö²¼µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ãéá ôçí ïðïßá èá õðïëïãéóôåß ç êáôáíïìÞ F.";
+ Text[ korean ] = "»êÃâµÉ F ¹èºÐ¿¡ ´ëÇÑ °ª";
+ Text[ turkish ] = "F daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Freiheitsgrade_1" ;
+ Text [ english ] = "degrees_freedom 1" ;
+ Text [ norwegian ] = "Freiheitsgrade 1" ;
+ Text [ italian ] = "gradi_libertà_1" ;
+ Text [ portuguese_brazilian ] = "Freiheitsgrade 1" ;
+ Text [ portuguese ] = "Graus_liberdade_1" ;
+ Text [ finnish ] = "Freiheitsgrade 1" ;
+ Text [ danish ] = "Frihedsgrader_1" ;
+ Text [ french ] = "Degrés_liberté 1" ;
+ Text [ swedish ] = "frihetsgrader_1" ;
+ Text [ dutch ] = "Vrijheidsgraden_1" ;
+ Text [ spanish ] = "grados_libertad 1" ;
+ Text [ english_us ] = "degrees_freedom_1" ;
+ Text[ chinese_simplified ] = "×ÔÓɶÈ_1";
+ Text[ russian ] = "Ñòåïåíè_ñâîáîäû_1";
+ Text[ polish ] = "Stopnie swobody_1";
+ Text[ japanese ] = "Ž©—R“x1";
+ Text[ chinese_traditional ] = "degrees_freedom_1";
+ Text[ arabic ] = "ÏÑÌÇÊ_ÇáÍÑíÉ_1";
+ Text[ dutch ] = "Vrijheidsgraden_1";
+ Text[ chinese_simplified ] = "×ÔÓɶÈ_1";
+ Text[ greek ] = "Âáèìïß_åëåõèåñßáò 1";
+ Text[ korean ] = "degrees_freedom 1";
+ Text[ turkish ] = "Özgürlük_dereceleri_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Freiheitsgrade im Zähler der F-Verteilung. : Die Freiheitsgrade im Zõhler der F-Verteilung. */
+ Text = "Die Freiheitsgrade im Zähler der F-Verteilung." ;
+ Text [ english ] = "is the numerator degrees of freedom." ;
+ Text [ norwegian ] = "Die Freiheitsgrade im Zähler der F-Verteilung." ;
+ Text [ italian ] = "sono i gradi di libertà al numeratore." ;
+ Text [ portuguese_brazilian ] = "Die Freiheitsgrade im Zähler der F-Verteilung." ;
+ Text [ portuguese ] = "são os graus de liberdade no numerador da distribuição F." ;
+ Text [ finnish ] = "Die Freiheitsgrade im Zähler der F-Verteilung." ;
+ Text [ danish ] = "Frihedsgrader i F-fordelingens tæller." ;
+ Text [ french ] = "Les degrés de liberté du numérateur de la distribution F." ;
+ Text [ swedish ] = "Frihetsgraderna i F-fördelningens täljare." ;
+ Text [ dutch ] = "De vrijheidsgraden in de teller van de F-verdeling." ;
+ Text [ spanish ] = "es el número de grados de libertad del numerador." ;
+ Text [ english_us ] = "The degrees of freedom in the numerator of the F distribution." ;
+ Text[ chinese_simplified ] = "F - ¸ÅÂÊ·Ö²¼µÄ·Ö×Ó×ÔÓɶȡ£";
+ Text[ russian ] = "×èñëèòåëü ñòåïåíåé ñâîáîäû.";
+ Text[ polish ] = "Licznik stopni swobody w rozk³adzie F.";
+ Text[ japanese ] = "Ž©—R“x‚Ì•ªŽqB";
+ Text[ chinese_traditional ] = "F-·§²v¤À§Gªº¤À¤l¦Û¥Ñ«×¡C";
+ Text[ arabic ] = "ÈÓØ ÏÑÌÇÊ ÇáÍÑíÉ.";
+ Text[ dutch ] = "De vrijheidsgraden in de teller van de F-verdeling.";
+ Text[ chinese_simplified ] = "F - ¸ÅÂÊ·Ö²¼µÄ·Ö×Ó×ÔÓɶȡ£";
+ Text[ greek ] = "Ïé âáèìïß åëåõèåñßáò óôïí áñéèìçôÞ ôçò êáôáíïìÞò F.";
+ Text[ korean ] = "F ºÐÆ÷ÀÇ ºÐÀÚ¿¡ ÀÖ´Â ÀÚÀ¯µµÀÔ´Ï´Ù.";
+ Text[ turkish ] = "F daðýtýmýnýn payýndaki özgürlük dereceleri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Freiheitsgrade_2" ;
+ Text [ english ] = "degrees_freedom 1" ;
+ Text [ norwegian ] = "Freiheitsgrade 2" ;
+ Text [ italian ] = "gradi_libertà_2" ;
+ Text [ portuguese_brazilian ] = "Freiheitsgrade 2" ;
+ Text [ portuguese ] = "Graus_liberdade_2" ;
+ Text [ finnish ] = "Freiheitsgrade 2" ;
+ Text [ danish ] = "Frihedsgrader_2" ;
+ Text [ french ] = "Degrés_liberté 2" ;
+ Text [ swedish ] = "frihetsgrader_2" ;
+ Text [ dutch ] = "Vrijheidsgraden_2" ;
+ Text [ spanish ] = "grados_libertad 2" ;
+ Text [ english_us ] = "degrees_freedom_2" ;
+ Text[ chinese_simplified ] = "×ÔÓɶÈ_2";
+ Text[ russian ] = "Ñòåïåíè_ñâîáîäû_2";
+ Text[ polish ] = "Stopnie swobody_2";
+ Text[ japanese ] = "Ž©—R“x2";
+ Text[ chinese_traditional ] = "degrees_freedom_2";
+ Text[ arabic ] = "ÏÑÌÇÊ_ÇáÍÑíÉ_2";
+ Text[ dutch ] = "Vrijheidsgraden_2";
+ Text[ chinese_simplified ] = "×ÔÓɶÈ_2";
+ Text[ greek ] = "Âáèìïß_åëåõèåñßáò 2";
+ Text[ korean ] = "degrees_freedom 2";
+ Text[ turkish ] = "Özgürlük_dereceleri_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Freiheitsgrade im Nenner der F-Verteilung." ;
+ Text [ english ] = "is the denominator degrees of freedom." ;
+ Text [ norwegian ] = "Die Freiheitsgrade im Nenner der F-Verteilung." ;
+ Text [ italian ] = "sono i gradi di libertà al denominatore." ;
+ Text [ portuguese_brazilian ] = "Die Freiheitsgrade im Nenner der F-Verteilung." ;
+ Text [ portuguese ] = "são os graus de liberdade no denominador da distribuição F." ;
+ Text [ finnish ] = "Die Freiheitsgrade im Nenner der F-Verteilung." ;
+ Text [ danish ] = "Frihedsgrader i F-fordelingens nævner." ;
+ Text [ french ] = "Les degrés de liberté du dénominateur de la distribution F." ;
+ Text [ swedish ] = "Frihetsgraderna i F-fördelningens nämnare." ;
+ Text [ dutch ] = "De vrijheidsgraden in de noemer van de F-verdeling." ;
+ Text [ spanish ] = "es el número de grados de libertad del denominador." ;
+ Text [ english_us ] = "The degrees of freedom in the denominator of the F distribution." ;
+ Text[ chinese_simplified ] = "F - ¸ÅÂÊ·Ö²¼µÄ·Öĸ×ÔÓɶȡ£";
+ Text[ russian ] = "Çíàìåíàòåëü ñòåïåíåé ñâîáîäû.";
+ Text[ polish ] = "Mianownik stopni swobody w rozk³adzie F.";
+ Text[ japanese ] = "Ž©—R“x‚Ì•ª•êB";
+ Text[ chinese_traditional ] = "F-·§²v¤À§Gªº¤À¥À¦Û¥Ñ«×¡C";
+ Text[ arabic ] = "ãÞÇã ÏÑÌÇÊ ÇáÍÑíÉ.";
+ Text[ dutch ] = "De vrijheidsgraden in de noemer van de F-verdeling.";
+ Text[ chinese_simplified ] = "F - ¸ÅÂÊ·Ö²¼µÄ·Öĸ×ÔÓɶȡ£";
+ Text[ greek ] = "Ïé âáèìïß åëåõèåñßáò óôïí ðáñïíïìáóôÞ ôçò êáôáíïìÞò F.";
+ Text[ korean ] = "F ºÐÆ÷ÀÇ ºÐ¸ð¿¡ ÀÖ´Â ÀÚÀ¯µµÀÔ´Ï´Ù.";
+ Text[ turkish ] = "F daðýtýmýnýn paydasýndaki özgürlük dereceleri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function FINV #*=-
+ Resource SC_OPCODE_F_INV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der inversen F-Verteilung" ;
+ Text [ english ] = "Returns the inverse of the F probability distribution." ;
+ Text [ norwegian ] = "Werte der inversen F-Verteilung" ;
+ Text [ italian ] = "Restituisce l'inversa della distribuzione F." ;
+ Text [ portuguese_brazilian ] = "Werte der inversen F-Verteilung" ;
+ Text [ portuguese ] = "Devolve o inverso de distribuição da probabilidade F." ;
+ Text [ finnish ] = "Werte der inversen F-Verteilung" ;
+ Text [ danish ] = "Værdier for den inverse F-fordeling" ;
+ Text [ french ] = "Valeurs de la distribution F inverse." ;
+ Text [ swedish ] = "Värden för den inversa F-fördelningen." ;
+ Text [ dutch ] = "Berekent de inverse van de F-verdeling." ;
+ Text [ spanish ] = "Devuelve la inversa del valor de la variable aleatoria siguiendo una distribución de probabilidad F" ;
+ Text [ english_us ] = "Values of the inverse F distribution." ;
+ Text[ chinese_simplified ] = "¼ÆËã F - ¸ÅÂÊ·Ö²¼µÄÄ溯ÊýÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò îáðàòíîå çíà÷åíèå äëÿ F-ðàñïðåäåëåíèÿ âåðîÿòíîñòåé.";
+ Text[ polish ] = "Wyznacza odwrotnoœæ rozk³adu F prawdopodobieñstwa.";
+ Text[ japanese ] = "FŠm—¦•ª•z‚Ì‹tŠÖ”‚ð•Ô‚µ‚Ü‚·";
+ Text[ chinese_traditional ] = "­pºâ F-·§²v¤À§Gªº°f¨ç¼Æ­È¡C";
+ Text[ arabic ] = "Þíã ÇáÊæÒíÚ ÇáÇÍÊãÇáí ÇáÚßÓí F.";
+ Text[ dutch ] = "Berekent de inverse van de F-verdeling.";
+ Text[ chinese_simplified ] = "¼ÆËã F - ¸ÅÂÊ·Ö²¼µÄÄ溯ÊýÖµ¡£";
+ Text[ greek ] = "ÔéìÝò ôçò áíôßóôñïöçò êáôáíïìÞò F.";
+ Text[ korean ] = "¿ª F È®À² ¹èºÐ °ª";
+ Text[ turkish ] = "Ters F daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_FINV );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "probability" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "probabilità" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Probabilidade" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Sandsynlighed" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "probabilidad" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Probability";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "Šm—¦";
+ Text[ chinese_traditional ] = "Probability";
+ Text[ arabic ] = "Probability";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Probability";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wahrscheinlichkeitswert, zu dem die inverse F-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is a probability associated with the F cumulative distribution." ;
+ Text [ norwegian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse F-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è la probabilità associata alla distribuzione cumulativa F." ;
+ Text [ portuguese_brazilian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse F-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é uma probabilidade associada à distribuição cumulativa F." ;
+ Text [ finnish ] = "Der Wahrscheinlichkeitswert, zu dem die inverse F-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Sandsynligheden som den inverse F-fordeling skal beregnes for." ;
+ Text [ french ] = "La valeur de probabilité pour laquelle la distribution F inverse doit être calculée." ;
+ Text [ swedish ] = "Sannolikhetsvärdet för vilket den inversa F-fördelningen skall beräknas." ;
+ Text [ dutch ] = "Der kans waarop de inverse F-verdeling moet worden berekend." ;
+ Text [ spanish ] = "es una probabilidad asociada con la función de distribución acumulativa F." ;
+ Text [ english_us ] = "The probability value for which the inverse F distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "F-·Ö²¼µÄ¸ÅÂÊÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå âåðîÿòíîñòè, äëÿ êîòîðîãî âû÷èñëÿåòñÿ îáðàòíîå F-ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Prawdopodobieñstwo, dla którego ma zostaæ obliczona odwrotnoœæ rozk³adu F.";
+ Text[ japanese ] = "FŠm—¦•ª•zŠÖ”‚É‘ã“ü‚·‚éŠm—¦B";
+ Text[ chinese_traditional ] = "F-¤À§Gªº·§²v­È¡C";
+ Text[ arabic ] = "ÇÍÊãÇá ãÞÊÑä ãÚ ÇáÊæÒíÚ ÇáÇÍÊãÇáí F.";
+ Text[ dutch ] = "Der kans waarop de inverse F-verdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "F-·Ö²¼µÄ¸ÅÂÊÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ðéèáíüôçôáò ãéá ôçí ïðïßá ðñüêåéôáé íá õðïëïãéóôåß ç áíôßóôñïöç êáôáíïìÞ F.";
+ Text[ korean ] = "F ºÐÆ÷ÇÔ¼öÀÇ ¿ªÀÌ °è»êµÇ¾î¾ß ÇÒ È®·ü°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ters F daðýtýmý hesaplanacak olasýlýk deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Freiheitsgrade_1" ;
+ Text [ english ] = "degrees_freedom 1" ;
+ Text [ norwegian ] = "Freiheitsgrade 1" ;
+ Text [ italian ] = "gradi_libertà_1" ;
+ Text [ portuguese_brazilian ] = "Freiheitsgrade 1" ;
+ Text [ portuguese ] = "Graus_liberdade_1" ;
+ Text [ finnish ] = "Freiheitsgrade 1" ;
+ Text [ danish ] = "Frihedsgrader_1" ;
+ Text [ french ] = "Degrés_liberté 1" ;
+ Text [ swedish ] = "frihetsgrader_1" ;
+ Text [ dutch ] = "Vrijheidsgraden_1" ;
+ Text [ spanish ] = "grados_libertad 1" ;
+ Text [ english_us ] = "degrees_freedom_1" ;
+ Text[ chinese_simplified ] = "×ÔÓɶÈ_1";
+ Text[ russian ] = "Ñòåïåíè_ñâîáîäû_1";
+ Text[ polish ] = "Stopnie swobody_1";
+ Text[ japanese ] = "Ž©—R“x1";
+ Text[ chinese_traditional ] = "degrees_freedom_1";
+ Text[ arabic ] = "ÏÑÌÇÊ_ÇáÍÑíÉ_1";
+ Text[ dutch ] = "Vrijheidsgraden_1";
+ Text[ chinese_simplified ] = "×ÔÓɶÈ_1";
+ Text[ greek ] = "Âáèìïß_åëåõèåñßáò 1";
+ Text[ korean ] = "degrees_freedom 1";
+ Text[ turkish ] = "Özgürlük_dereceleri_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Freiheitsgrade im Zähler der F-Verteilung. : Die Freiheitsgrade im Zõhler der F-Verteilung. */
+ Text = "Die Freiheitsgrade im Zähler der F-Verteilung." ;
+ Text [ english ] = "is the numerator degrees of freedom." ;
+ Text [ norwegian ] = "Die Freiheitsgrade im Zähler der F-Verteilung." ;
+ Text [ italian ] = "sono i gradi di libertà al numeratore." ;
+ Text [ portuguese_brazilian ] = "Die Freiheitsgrade im Zähler der F-Verteilung." ;
+ Text [ portuguese ] = "são os graus de liberdade no numerador da distribuição F." ;
+ Text [ finnish ] = "Die Freiheitsgrade im Zähler der F-Verteilung." ;
+ Text [ danish ] = "Frihedsgraderne i F-fordelingens tæller." ;
+ Text [ french ] = "Les degrés de liberté du numérateur de la distribution F." ;
+ Text [ swedish ] = "Frihetsgraderna i F-fördelningens täljare." ;
+ Text [ dutch ] = "De vrijheidsgraden in de teller van de F-verdeling." ;
+ Text [ spanish ] = "es el número de grados de libertad del numerador." ;
+ Text [ english_us ] = "The degrees of freedom in the numerator of the F distribution." ;
+ Text[ chinese_simplified ] = "F - ¸ÅÂÊ·Ö²¼µÄ·Ö×Ó×ÔÓɶȡ£";
+ Text[ russian ] = "×èñëèòåëü ñòåïåíåé ñâîáîäû.";
+ Text[ polish ] = "Licznik stopni swobody w rozk³adzie F.";
+ Text[ japanese ] = "Ž©—R“x‚Ì•ªŽqB";
+ Text[ chinese_traditional ] = "F - ·§²v¤À§Gªº¤À¤l¦Û¥Ñ«×¡C";
+ Text[ arabic ] = "ÈÓØ ÏÑÌÇÊ ÇáÍÑíÉ.";
+ Text[ dutch ] = "De vrijheidsgraden in de teller van de F-verdeling.";
+ Text[ chinese_simplified ] = "F - ¸ÅÂÊ·Ö²¼µÄ·Ö×Ó×ÔÓɶȡ£";
+ Text[ greek ] = "Ïé âáèìïß åëåõèåñßáò óôïí áñéèìçôÞ ôçò êáôáíïìÞò F.";
+ Text[ korean ] = "F ºÐÆ÷ÀÇ ºÐÀÚ¿¡ ÀÖ´Â ÀÚÀ¯µµÀÔ´Ï´Ù.";
+ Text[ turkish ] = "F daðýtýmýnýn payýndaki özgürlük dereceleri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Freiheitsgrade_2" ;
+ Text [ english ] = "degrees_freedom 2" ;
+ Text [ norwegian ] = "Freiheitsgrade 2" ;
+ Text [ italian ] = "gradi_libertà_2" ;
+ Text [ portuguese_brazilian ] = "Freiheitsgrade 2" ;
+ Text [ portuguese ] = "Graus_liberdade_2" ;
+ Text [ finnish ] = "Freiheitsgrade 2" ;
+ Text [ danish ] = "Frihedsgrader_2" ;
+ Text [ french ] = "Degrés_liberté 2" ;
+ Text [ swedish ] = "frihetsgrader_2" ;
+ Text [ dutch ] = "Vrijheidsgraden_2" ;
+ Text [ spanish ] = "grados_libertad 2" ;
+ Text [ english_us ] = "degrees_freedom_2" ;
+ Text[ chinese_simplified ] = "×ÔÓɶÈ_2";
+ Text[ russian ] = "Ñòåïåíè_ñâîáîäû_2";
+ Text[ polish ] = "Stopnie swobody_2";
+ Text[ japanese ] = "Ž©—R“x2";
+ Text[ chinese_traditional ] = "degrees_freedom_2";
+ Text[ arabic ] = "ÏÑÌÇÊ_ÇáÍÑíÉ_2";
+ Text[ dutch ] = "Vrijheidsgraden_2";
+ Text[ chinese_simplified ] = "×ÔÓɶÈ_2";
+ Text[ greek ] = "Âáèìïß_åëåõèåñßáò 2";
+ Text[ korean ] = "degrees_freedom 2";
+ Text[ turkish ] = "Özgürlük_dereceleri_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Freiheitsgrade im Nenner der F-Verteilung." ;
+ Text [ english ] = "is the denominator degrees of freedom." ;
+ Text [ norwegian ] = "Die Freiheitsgrade im Nenner der F-Verteilung." ;
+ Text [ italian ] = "sono i gradi libertà al denominatore." ;
+ Text [ portuguese_brazilian ] = "Die Freiheitsgrade im Nenner der F-Verteilung." ;
+ Text [ portuguese ] = "são os graus de liberdade no denominador da distribuição F." ;
+ Text [ finnish ] = "Die Freiheitsgrade im Nenner der F-Verteilung." ;
+ Text [ danish ] = "Frihedsgraderne i F-fordelingens nævner." ;
+ Text [ french ] = "Les degrés de liberté du dénominateur de la distribution F." ;
+ Text [ swedish ] = "Frihetsgraderna i F-fördelningens nämnare." ;
+ Text [ dutch ] = "De vrijheidsgraden in de noemer van de F-verdeling." ;
+ Text [ spanish ] = "es el número de grados de libertad del denominador." ;
+ Text [ english_us ] = "The degrees of freedom in the denominator of the F distribution." ;
+ Text[ chinese_simplified ] = "F - ¸ÅÂÊ·Ö²¼µÄ·Öĸ×ÔÓɶȡ£";
+ Text[ russian ] = "Çíàìåíàòåëü ñòåïåíåé ñâîáîäû.";
+ Text[ polish ] = "Mianownik stopni swobody w rozk³adzie F.";
+ Text[ japanese ] = "Ž©—R“x‚Ì•ª•êB";
+ Text[ chinese_traditional ] = "F - ·§²v¤À§Gªº¤À¥À¦Û¥Ñ«×¡C";
+ Text[ arabic ] = "ãÞÇã ÏÑÌÇÊ ÇáÍÑíÉ.";
+ Text[ dutch ] = "De vrijheidsgraden in de noemer van de F-verdeling.";
+ Text[ chinese_simplified ] = "F - ¸ÅÂÊ·Ö²¼µÄ·Öĸ×ÔÓɶȡ£";
+ Text[ greek ] = "Ïé âáèìïß åëåõèåñßáò óôïí ðáñïíïìáóôÞ ôçò êáôáíïìÞò F.";
+ Text[ korean ] = "F ºÐÆ÷ÀÇ ºÐ¸ð¿¡ ÀÖ´Â ÀÚÀ¯µµÀÔ´Ï´Ù.";
+ Text[ turkish ] = "F daðýtýmýnýn paydasýndaki özgürlük dereceleri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function CHIVERT #*=-
+ Resource SC_OPCODE_CHI_DIST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der Chi-Quadrat-Verteilung" ;
+ Text [ english ] = "Returns the one-tailed probability of the chi-squared distribution." ;
+ Text [ norwegian ] = "Werte der Chi-Quadrat-Verteilung" ;
+ Text [ italian ] = "Restituisce la distribuzione CHI al quadrato." ;
+ Text [ portuguese_brazilian ] = "Werte der Chi-Quadrat-Verteilung" ;
+ Text [ portuguese ] = "Devolve a probabilidade de uma varíável aleatória contínua seguindo a distribuição do Qui-quadrado." ;
+ Text [ finnish ] = "Werte der Chi-Quadrat-Verteilung" ;
+ Text [ danish ] = "Værdier for chi2-fordelingen" ;
+ Text [ french ] = "Valeurs de la distribution Khi-deux." ;
+ Text [ swedish ] = "Chi-två-fördelningens värden." ;
+ Text [ dutch ] = "Berekent de kans van de chikwadraatsverdeling" ;
+ Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribución ji cuadrado de una sola cola" ;
+ Text [ english_us ] = "Values of the chi square distribution." ;
+ Text[ chinese_simplified ] = "Chi ƽ·½·Ö²¼µÄµ¥Î²¸ÅÂÊ¡£";
+ Text[ russian ] = "Âîçâðàùàåò îäíîñòîðîííþþ âåðîÿòíîñòü ðàñïðåäåëåíèÿ õè-êâàäðàò.";
+ Text[ polish ] = "Wyznacza wartoœci rozk³adu chi-kwadrat";
+ Text[ japanese ] = "¶²2æ(ƒÔ2)•ª•z‚ð•]‰¿‚·‚é’l‚ðŽw’肵‚Ü‚·";
+ Text[ chinese_traditional ] = "Chi ¥­¤è¤À§Gªº³æ§À·§²v¡C";
+ Text[ arabic ] = "Þíã ÊæÒíÚ Chi ÇáÊÑÈíÚí.";
+ Text[ dutch ] = "Berekent de kans van de chikwadraatsverdeling";
+ Text[ chinese_simplified ] = "Chi ƽ·½·Ö²¼µÄµ¥Î²¸ÅÂÊ¡£";
+ Text[ greek ] = "ÔéìÝò ôçò êáôáíïìÞò ×-ôåôñÜãùíï.";
+ Text[ korean ] = "Chi ¸éÀû ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Chi-kare daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_CHIVERT );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, zu dem die Chi-Quadrat-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is the value at which you want to evaluate the distribution." ;
+ Text [ norwegian ] = "Der Wert, zu dem die Chi-Quadrat-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è il valore in cui si desidera calcolare la distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Wert, zu dem die Chi-Quadrat-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "é o valor de avaliação da distribuição do Qui-quadrado." ;
+ Text [ finnish ] = "Der Wert, zu dem die Chi-Quadrat-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Den værdi som chi2-fordelingen skal beregnes for." ;
+ Text [ french ] = "La valeur pour laquelle vous voulez calculer la distribution Khi-deux." ;
+ Text [ swedish ] = "Värdet för vilket chi-två-fördelningen skall beräknas." ;
+ Text [ dutch ] = "De waarde, waarop de chikwadraatsverdeling moet worden berekend." ;
+ Text [ spanish ] = "es el valor al que desea evaluar la distribución." ;
+ Text [ english_us ] = "The value for which the chi square distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ÆËã Chi ƽ·½·Ö²¼µ¥Î²¸ÅÂʵÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, äëÿ êîòîðîãî òðåáóåòñÿ âû÷èñëèòü ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Wartoœæ, dla kórej ma zostaæ obliczony rozk³ad chi-kwadrat.";
+ Text[ japanese ] = "¶²2æ(ƒÔ2)•ª•z‚ÌŠm—¦‚ð•Ô‚·’lB";
+ Text[ chinese_traditional ] = "¥Î¨Ó­pºâ Chi ¥­¤è¤À§G³æ§À·§²vªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÊí ÊÑíÏ ÚäÏåÇ ÊÞííã ÇáÊæÒíÚ.";
+ Text[ dutch ] = "De waarde, waarop de chikwadraatsverdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ÆËã Chi ƽ·½·Ö²¼µ¥Î²¸ÅÂʵÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ôçò ïðïßáò èá õðïëïãéóôåß ç êáôáíïìÞ ÷-ôåôñÜãùíï.";
+ Text[ korean ] = "»êÃâµÉ Chi ¸éÀû ¹èºÐ¿¡ ´ëÇÑ °ª.";
+ Text[ turkish ] = "Chi-kare daðýtýmý hesaplanacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Freiheitsgrade" ;
+ Text [ english ] = "degrees_freedom" ;
+ Text [ norwegian ] = "Freiheitsgrade" ;
+ Text [ italian ] = "gradi_libertà" ;
+ Text [ portuguese_brazilian ] = "Freiheitsgrade" ;
+ Text [ portuguese ] = "Graus_liberdade" ;
+ Text [ finnish ] = "Freiheitsgrade" ;
+ Text [ danish ] = "Frihedsgrader" ;
+ Text [ french ] = "Degrés_liberté" ;
+ Text [ swedish ] = "frihetsgrader" ;
+ Text [ dutch ] = "Vrijheidsgraden" ;
+ Text [ spanish ] = "grados_libertad" ;
+ Text [ english_us ] = "degrees_freedom" ;
+ Text[ chinese_simplified ] = "degrees_freedom";
+ Text[ russian ] = "Ñòåïåíè_ñâîáîäû";
+ Text[ polish ] = "Stopnie swobody";
+ Text[ japanese ] = "Ž©—R“x";
+ Text[ chinese_traditional ] = "degrees_freedom";
+ Text[ arabic ] = "Degrees_freedom";
+ Text[ dutch ] = "Vrijheidsgraden";
+ Text[ chinese_simplified ] = "degrees_freedom";
+ Text[ greek ] = "Âáèìïß_åëåõèåñßáò";
+ Text[ korean ] = "ÀÚÀ¯µµ";
+ Text[ turkish ] = "Özgürlük dereceleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Freiheitsgrade der Chi-Quadrat-Verteilung." ;
+ Text [ english ] = "is the number of degrees of freedom." ;
+ Text [ norwegian ] = "Die Freiheitsgrade der Chi-Quadrat-Verteilung." ;
+ Text [ italian ] = "è il numero di gradi di libertà." ;
+ Text [ portuguese_brazilian ] = "Die Freiheitsgrade der Chi-Quadrat-Verteilung." ;
+ Text [ portuguese ] = "é o número de graus de liberdade do Qui-quadrado." ;
+ Text [ finnish ] = "Die Freiheitsgrade der Chi-Quadrat-Verteilung." ;
+ Text [ danish ] = "Frihedsgraderne i chi2-fordelingen." ;
+ Text [ french ] = "Les degrés de liberté de la distribution Khi-deux." ;
+ Text [ swedish ] = "Chi-två-fördelningens frihetsgrader." ;
+ Text [ dutch ] = "Het aantal vrijheidsgraden van de chikwadraatsverdeling" ;
+ Text [ spanish ] = "es el número de grados de libertad." ;
+ Text [ english_us ] = "The degrees of freedom of the chi square distribution." ;
+ Text[ chinese_simplified ] = "Chi ƽ·½·Ö²¼µÄ×ÔÓɶȡ£";
+ Text[ russian ] = "×èñëî ñòåïåíåé ñâîáîäû.";
+ Text[ polish ] = "Stopnie swobody w rozk³adzie chi-kwadrat.";
+ Text[ japanese ] = "Ž©—R“x‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "Chi ¥­¤è¤À§Gªº¦Û¥Ñ«×¡C";
+ Text[ arabic ] = "ÚÏÏ ÏÑÌÇÊ ÇáÍÑíÉ.";
+ Text[ dutch ] = "Het aantal vrijheidsgraden van de chikwadraatsverdeling";
+ Text[ chinese_simplified ] = "Chi ƽ·½·Ö²¼µÄ×ÔÓɶȡ£";
+ Text[ greek ] = "Ïé âáèìïß åëåõèåñßáò ôçò êáôáíïìÞò ×-ôåôñÜãùíï.";
+ Text[ korean ] = "Ä«ÀÌ Á¦°ö ºÐÆ÷ÀÇ ÀÚÀ¯µµ";
+ Text[ turkish ] = "Chi-kare daðýtýmýnýn özgürlük dereceleri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function CHIINV #*=-
+ Resource SC_OPCODE_CHI_INV
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Werte der inversen Chi-Quadrat-Verteilung" ;
+ Text [ english ] = "Returns the inverse of the one-tailed probability of the chi-squared distribution." ;
+ Text [ norwegian ] = "Werte der inversen Chi-Quadrat-Verteilung" ;
+ Text [ italian ] = "Restituisce l'inversa della distribuzione del chi quadrato." ;
+ Text [ portuguese_brazilian ] = "Werte der inversen Chi-Quadrat-Verteilung" ;
+ Text [ portuguese ] = "Devolve o inverso da probabilidade de uma varíável aleatória contínua seguindo a distribuição do Qui-quadrado." ;
+ Text [ finnish ] = "Werte der inversen Chi-Quadrat-Verteilung" ;
+ Text [ danish ] = "Værdier for den inverse chi2-fordeling" ;
+ Text [ french ] = "Valeurs de la distribution Khi-deux inverse." ;
+ Text [ swedish ] = "Den inversa chi-två-fördelningens värden." ;
+ Text [ dutch ] = "Waarden van de inverse chi kwadraatverdeling." ;
+ Text [ spanish ] = "Devuelve los valores de la distribución ji cuadrado inversa" ;
+ Text [ english_us ] = "Values of the inverse chi-squared distribution." ;
+ Text[ chinese_simplified ] = "Chi ƽ·½·Ö²¼µ¥Î²¸ÅÂʵÄÄ溯Êý¡£";
+ Text[ russian ] = "Âîçâðàùàåò çíà÷åíèå, îáðàòíîå ê îäíîñòîðîííåé âåðîÿòíîñòè ðàñïðåäåëíèÿ õè-êâàäðàò.";
+ Text[ polish ] = "Wyznacza odwrotnoœæ rozk³adu chi-kwadrat.";
+ Text[ japanese ] = "¶²2æ(ƒÔ2)•ª•z‚Ì‹tŠÖ”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "Chi ¥­¤è¤À§G³æ§À·§²vªº°f¨ç¼Æ¡C";
+ Text[ arabic ] = "Þíã ÚßÓ ÊæÒíÚ Chi ÇáÊÑÈíÚí.";
+ Text[ dutch ] = "Waarden van de inverse chi kwadraatverdeling.";
+ Text[ chinese_simplified ] = "Chi ƽ·½·Ö²¼µ¥Î²¸ÅÂʵÄÄ溯Êý¡£";
+ Text[ greek ] = "ÔéìÝò ôçò áíôßóôñïöçò êáôáíïìÞò ×-ôåôñÜãùíï.";
+ Text[ korean ] = "¿ª Chi ¸éÀû ¹èºÐÀÇ °ª";
+ Text[ turkish ] = "Ters chi-kare daðýtýmý deðerleri";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_CHIINV );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "probability" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "probabilità" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Sandsynlighed" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "probabilidad" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wahrscheinlichkeitswert, zu dem die inverse Chi-Quadrat-Verteilung berechnet werden soll." ;
+ Text [ english ] = "is a probability associated with the chi-squared distribution." ;
+ Text [ norwegian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Chi-Quadrat-Verteilung berechnet werden soll." ;
+ Text [ italian ] = "è la probabilità associata alla distribuzione del chi quadrato." ;
+ Text [ portuguese_brazilian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Chi-Quadrat-Verteilung berechnet werden soll." ;
+ Text [ portuguese ] = "representa uma probabilidade associada à lei do Qui-quadrado." ;
+ Text [ finnish ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Chi-Quadrat-Verteilung berechnet werden soll." ;
+ Text [ danish ] = "Sandsynligheden som den inverse ch2-fordeling skal beregnes for." ;
+ Text [ french ] = "La valeur de probabilité pour laquelle vous voulez calculer la distribution Khi-deux inverse." ;
+ Text [ swedish ] = "Sannolikhetsvärdet för vilket den inversa chi-två-fördelningen skall beräknas." ;
+ Text [ dutch ] = "De kansdichtheid, waarop de inverse chi-kwadraatverdeling moet worden berekend." ;
+ Text [ spanish ] = "es una probabilidad asociada con la distribución ji cuadrado." ;
+ Text [ english_us ] = "The probability value for which the inverse chi square distribution is to be calculated." ;
+ Text[ chinese_simplified ] = "Chi ƽ·½·Ö²¼µÄµ¥Î²¸ÅÂÊ¡£";
+ Text[ russian ] = "Âåðîÿòíîñòü, ñâÿçàííàÿ ñ ðàñïðåäåëåíèåì õè-êâàäðàò";
+ Text[ polish ] = "Prawdopodobieñstwo, dla którego ma zostaæ obliczona odwrotnoœæ rozk³adu chi-kwadrat.";
+ Text[ japanese ] = "‹tŠÖ”¶²2æ(ƒÔ2)•ª•z‚É”º‚¤Šm—¦‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "Chi ¥­¤è¤À§Gªº³æ§À·§²v¡C";
+ Text[ arabic ] = "ÇÍÊãÇá ãÞÊÑä ãÚ ÊæÒíÚ ßÇí ÊÑÈíÚ.";
+ Text[ dutch ] = "De kansdichtheid, waarop de inverse chi-kwadraatverdeling moet worden berekend.";
+ Text[ chinese_simplified ] = "Chi ƽ·½·Ö²¼µÄµ¥Î²¸ÅÂÊ¡£";
+ Text[ greek ] = "Ç ôéìÞ ðéèáíüôçôáò ãéá ôçí ïðïßá ðñüêåéôáé íá õðïëïãéóôåß ç áíôßóôñïöç êáôáíïìÞ ÷-ôåôñÜãùíï.";
+ Text[ korean ] = "Ä«ÀÌ Á¦°ö ºÐÆ÷ÇÔ¼öÀÇ ¿ªÀÌ °è»êµÇ¾î¾ß ÇÒ È®·ü°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ters chi-kare daðýtýmý hesaplanacak olasýlýk deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Freiheitsgrade" ;
+ Text [ english ] = "degrees_freedom" ;
+ Text [ norwegian ] = "Freiheitsgrade" ;
+ Text [ italian ] = "gradi_libertà" ;
+ Text [ portuguese_brazilian ] = "Freiheitsgrade" ;
+ Text [ portuguese ] = "Graus_liberdade" ;
+ Text [ finnish ] = "Freiheitsgrade" ;
+ Text [ danish ] = "Frihedsgrader" ;
+ Text [ french ] = "Degrés_liberté" ;
+ Text [ swedish ] = "frihetsgrader" ;
+ Text [ dutch ] = "Vrijheidsgraden" ;
+ Text [ spanish ] = "grados_libertad" ;
+ Text [ english_us ] = "degrees_freedom" ;
+ Text[ chinese_simplified ] = "degrees_freedom";
+ Text[ russian ] = "Ñòåïåíè_ñâîáîäû";
+ Text[ polish ] = "Stopnie swobody";
+ Text[ japanese ] = "Ž©—R“x";
+ Text[ chinese_traditional ] = "degrees_freedom";
+ Text[ arabic ] = "Degrees_freedom";
+ Text[ dutch ] = "Vrijheidsgraden";
+ Text[ chinese_simplified ] = "degrees_freedom";
+ Text[ greek ] = "Âáèìïß_åëåõèåñßáò";
+ Text[ korean ] = "ÀÚÀ¯µµ";
+ Text[ turkish ] = "Özgürlük dereceleri";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Freiheitsgrade der Chi-Quadrat-Verteilung." ;
+ Text [ english ] = "is the number of degrees of freedom." ;
+ Text [ norwegian ] = "Die Freiheitsgrade der Chi-Quadrat-Verteilung." ;
+ Text [ italian ] = "è il numero di gradi di libertà." ;
+ Text [ portuguese_brazilian ] = "Die Freiheitsgrade der Chi-Quadrat-Verteilung." ;
+ Text [ portuguese ] = "é o número de graus de liberdade do Qui-quadrado." ;
+ Text [ finnish ] = "Die Freiheitsgrade der Chi-Quadrat-Verteilung." ;
+ Text [ danish ] = "Frihedsgraderne i chi2-fordelingen." ;
+ Text [ french ] = "Les degrés de liberté de la distribution Khi-deux." ;
+ Text [ swedish ] = "Chi-två-fördelningens frihetsgrader." ;
+ Text [ dutch ] = "De vrijheidsgraden van de chi-kwadraatverdeling." ;
+ Text [ spanish ] = "es el número de grados de libertad." ;
+ Text [ english_us ] = "The degrees of freedom of the chi square distribution." ;
+ Text[ chinese_simplified ] = "Chi ƽ·½·Ö²¼µÄ×ÔÓɶȡ£";
+ Text[ russian ] = "×èñëî ñòåïåíåé ñâîáîäû.";
+ Text[ polish ] = "Stopnie swobody w rozk³adzie chi-kwadrat.";
+ Text[ japanese ] = "¶²2æ(ƒÔ2)•ª•z‚ÌŽ©—R“xB";
+ Text[ chinese_traditional ] = "Chi ¥­¤è¤À§Gªº¦Û¥Ñ«×¡C";
+ Text[ arabic ] = "ÚÏÏ ÏÑÌÇÊ ÇáÍÑíÉ.";
+ Text[ dutch ] = "De vrijheidsgraden van de chi-kwadraatverdeling.";
+ Text[ chinese_simplified ] = "Chi ƽ·½·Ö²¼µÄ×ÔÓɶȡ£";
+ Text[ greek ] = "Ïé âáèìïß åëåõèåñßáò ôçò êáôáíïìÞò ×-ôåôñÜãùíï.";
+ Text[ korean ] = "Ä«ÀÌ Á¦°ö ºÐÆ÷ÀÇ ÀÚÀ¯µµ";
+ Text[ turkish ] = "Chi-kare daðýtýmýnýn özgürlük dereceleri.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function STANDARDISIERUNG #*=-
+ Resource SC_OPCODE_STANDARD
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Umrechnung einer Zufallsvariablen auf standardisierte Werte." ;
+ Text [ english ] = "Returns a normalized value from a distribution characterized by mean and standard_dev." ;
+ Text [ norwegian ] = "Umrechnung einer Zufallsvariablen auf standardisierte Werte." ;
+ Text [ italian ] = "Converte una variabile casuale in valori standardizzati." ;
+ Text [ portuguese_brazilian ] = "Umrechnung einer Zufallsvariablen auf standardisierte Werte." ;
+ Text [ portuguese ] = "Devolve um valor normalizado de uma distribuição caracterizada por média e desv_padrão." ;
+ Text [ finnish ] = "Umrechnung einer Zufallsvariablen auf standardisierte Werte." ;
+ Text [ danish ] = "Konverterer en tilfældig variabel til en standardværdi." ;
+ Text [ french ] = "Convertit une variable aléatoire en valeur standardisée." ;
+ Text [ swedish ] = "Omräkning av en slumpvariabel till standardiserade värden." ;
+ Text [ dutch ] = "Converteert een willekeurig getal naar een standaardwaarde." ;
+ Text [ spanish ] = "Devuelve un valor normalizado." ;
+ Text [ english_us ] = "Converts a random variable to a normalized value." ;
+ Text[ chinese_simplified ] = "·Ö²¼µÄÕý̬»¯ÊýÖµ¡£";
+ Text[ russian ] = "Ïðåîáðàçîâàíèå ñëó÷àéíîé ïåðåìåííîé â íîðìàëèçîâàííîå çíà÷åíèå.";
+ Text[ polish ] = "Zamienia zmienn¹ losow¹ na wartoœci znormalizowane.";
+ Text[ japanese ] = "•W€‰»•Ï—Ê‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤À§Gªº¥¿ºA¤Æ¼Æ­È¡C";
+ Text[ arabic ] = "ÊÍæá ãÊÛíÑÉ ÚÔæÇÆíÉ Åáì ÞíãÉ ÞíÇÓíÉ.";
+ Text[ dutch ] = "Converteert een willekeurig getal naar een standaardwaarde.";
+ Text[ chinese_simplified ] = "·Ö²¼µÄÕý̬»¯ÊýÖµ¡£";
+ Text[ greek ] = "ÌåôáôñïðÞ ìéáò ôõ÷áßáò ìåôáâëçôÞò óå êáèïñéóìÝíåò ôéìÝò..";
+ Text[ korean ] = "ÀÓÀÇ º¯¼ö¸¦ Ç¥ÁØ°ªÀ¸·Î ȯ»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Raslantý deðiþkenini standartlaþtýrýlmýþ deðerlere dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_STANDARDISIERUNG );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, der standardisiert werden soll." ;
+ Text [ english ] = "is the value you want to normalize." ;
+ Text [ norwegian ] = "Der Wert, der standardisiert werden soll." ;
+ Text [ italian ] = "è il valore che si desidera normalizzare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der standardisiert werden soll." ;
+ Text [ portuguese ] = "é o valor que deseja normalizar." ;
+ Text [ finnish ] = "Der Wert, der standardisiert werden soll." ;
+ Text [ danish ] = "Den værdi som skal standardiseres." ;
+ Text [ french ] = "La valeur à standardiser." ;
+ Text [ swedish ] = "Värdet som skall standardiseras." ;
+ Text [ dutch ] = "De waarde die gestandaardiseerd wordt." ;
+ Text [ spanish ] = "es el valor que desea normalizar." ;
+ Text [ english_us ] = "The value to be standardized." ;
+ Text[ chinese_simplified ] = "ÒªÕý̬»¯µÄÊýÖµ¡£";
+ Text[ russian ] = "Íîðìàëèçóåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ znormalizowana.";
+ Text[ japanese ] = "•W€‰»•Ï—Ê‚ðŒvŽZ‚·‚é”’lB";
+ Text[ chinese_traditional ] = "­n¥¿ºA¤Æªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÊí ÊÑíÏ Ãä ÊÞíøÓåÇ.";
+ Text[ dutch ] = "De waarde die gestandaardiseerd wordt.";
+ Text[ chinese_simplified ] = "ÒªÕý̬»¯µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ðïõ ðñüêåéôáé íá óôáèåñïðïéçèåß.";
+ Text[ korean ] = "Ç¥ÁØÈ­µÈ °ª";
+ Text[ turkish ] = "Standartlaþtýrýlacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "MW" ;
+ Text [ english ] = "mean" ;
+ Text [ norwegian ] = "MW" ;
+ Text [ italian ] = "media" ;
+ Text [ portuguese_brazilian ] = "MW" ;
+ Text [ portuguese ] = "Média" ;
+ Text [ finnish ] = "MW" ;
+ Text [ danish ] = "Middelværdi" ;
+ Text [ french ] = "Moyenne" ;
+ Text [ swedish ] = "MV" ;
+ Text [ dutch ] = "Gemiddelde" ;
+ Text [ spanish ] = "media" ;
+ Text [ english_us ] = "mean" ;
+ Text[ chinese_simplified ] = "mean";
+ Text[ russian ] = "Ñðåäíåå";
+ Text[ polish ] = "Œrednia";
+ Text[ japanese ] = "•½‹Ï";
+ Text[ chinese_traditional ] = "mean";
+ Text[ arabic ] = "Mean";
+ Text[ dutch ] = "Gemiddelde";
+ Text[ chinese_simplified ] = "mean";
+ Text[ greek ] = "Mean";
+ Text[ korean ] = "Æò±Õ";
+ Text[ turkish ] = "Ortalama";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Mittelwert, um den verschoben wird." ;
+ Text [ english ] = "is the arithmetic mean of the distribution." ;
+ Text [ norwegian ] = "Der Mittelwert, um den verschoben wird." ;
+ Text [ italian ] = "è la media aritmetica della distribuzione." ;
+ Text [ portuguese_brazilian ] = "Der Mittelwert, um den verschoben wird." ;
+ Text [ portuguese ] = "é a média aritmética da distribuição." ;
+ Text [ finnish ] = "Der Mittelwert, um den verschoben wird." ;
+ Text [ danish ] = "Middelværdien for forskydningen." ;
+ Text [ french ] = "La moyenne à utiliser pour le décalage." ;
+ Text [ swedish ] = "Medelvärdet för förflyttningen." ;
+ Text [ dutch ] = "Berekent het gemiddelde van de verschuiving" ;
+ Text [ spanish ] = "es la media aritmética de la distribución." ;
+ Text [ english_us ] = "The mean value used for moving." ;
+ Text[ chinese_simplified ] = "·Ö²¼µÄËãÊõƽ¾ùÖµ¡£";
+ Text[ russian ] = "Ñðåäíåå àðèôìåòè÷åñêîå ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Œrednia arytmetyczna przesuniêcia.";
+ Text[ japanese ] = "‘ÎۂƂȂ镪•z‚ÌŽZp(‘Š‰Á)•½‹ÏB";
+ Text[ chinese_traditional ] = "¤À§Gªººâ³N¥­§¡­È¡C";
+ Text[ arabic ] = "ÇáæÓØ ÇáÍÓÇÈí ááÊæÒíÚ.";
+ Text[ dutch ] = "Berekent het gemiddelde van de verschuiving";
+ Text[ chinese_simplified ] = "·Ö²¼µÄËãÊõƽ¾ùÖµ¡£";
+ Text[ greek ] = "Ç ìÝóç ôéìÞ êáôÜ ôçí ïðïßá èá ãßíåé ç ìåôáêßíçóç.";
+ Text[ korean ] = "À̵¿¿¡ ÀÌ¿ëµÉ Áß°£°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Taþýma için kullanýlan ortalama deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "STD" ;
+ Text [ english ] = "standard_dev" ;
+ Text [ norwegian ] = "STD" ;
+ Text [ italian ] = "dev_standard" ;
+ Text [ portuguese_brazilian ] = "STD" ;
+ Text [ portuguese ] = "Desvio_padrão" ;
+ Text [ finnish ] = "STD" ;
+ Text [ danish ] = "Standardafv" ;
+ Text [ french ] = "ET" ;
+ Text [ swedish ] = "STD" ;
+ Text [ dutch ] = "STDEV" ;
+ Text [ spanish ] = "desv_estándar" ;
+ Text [ english_us ] = "STDEV" ;
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ russian ] = "Ñòàíäàðòíîå_îòêë";
+ Text[ polish ] = "Odchylenie standardowe";
+ Text[ japanese ] = "•W€•Î·";
+ Text[ chinese_traditional ] = "standard_dev";
+ Text[ arabic ] = "Standard_dev";
+ Text[ dutch ] = "STDEV";
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ greek ] = "standard_dev";
+ Text[ korean ] = "standard_dev";
+ Text[ turkish ] = "STDEV";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Standardabweichung, um die skaliert wird." ;
+ Text [ english ] = "is the standard deviation of the distribution." ;
+ Text [ norwegian ] = "Die Standardabweichung, um die skaliert wird." ;
+ Text [ italian ] = "è la deviazione standard della distribuzione." ;
+ Text [ portuguese_brazilian ] = "Die Standardabweichung, um die skaliert wird." ;
+ Text [ portuguese ] = "é o desvio padrão da distribuição." ;
+ Text [ finnish ] = "Die Standardabweichung, um die skaliert wird." ;
+ Text [ danish ] = "Standardafvigelsen for skaleringen." ;
+ Text [ french ] = "L'écart-type à utiliser pour l'étalonnage." ;
+ Text [ swedish ] = "Standardavvikelsen för skalering." ;
+ Text [ dutch ] = "De standaarddeviatie die gebruikt wordt voor de schaalberekening." ;
+ Text [ spanish ] = "es la desviación estándar de la distribución." ;
+ Text [ english_us ] = "The standard deviation used for scaling." ;
+ Text[ chinese_simplified ] = "ÊÇ·Ö²¼µÄ±ê׼ƫ²î¡£";
+ Text[ russian ] = "Ñòàíäàðòíîå îòêëîíåíèå ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Odchylenie standardowe, o które nast¹pi skalowanie.";
+ Text[ japanese ] = "‘ÎۂƂȂ镪•z‚Ì•W€•Î·B";
+ Text[ chinese_traditional ] = "¬O¤À§Gªº¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ááÊæÒíÚ.";
+ Text[ dutch ] = "De standaarddeviatie die gebruikt wordt voor de schaalberekening.";
+ Text[ chinese_simplified ] = "ÊÇ·Ö²¼µÄ±ê׼ƫ²î¡£";
+ Text[ greek ] = "Ç ôõðéêÞ áðüêëéóç ç ïðïßá ÷ñçóéìïðïéåßôáé ãéá ôç êëéìÜêùóç.";
+ Text[ korean ] = "¹èÀ²¿¡ »ç¿ëµÉ Ç¥ÁØ ÆíÂ÷ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ölçekleme için kullanýlan standart sapma.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VARIATIONEN #*=-
+ Resource SC_OPCODE_VARIATIONEN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Anzahl der Variationen von Elementen ohne Wiederholung." ;
+ Text [ english ] = "Returns the number of permutations for a given number of objects that can be selected from number objects." ;
+ Text [ norwegian ] = "Berechnet die Anzahl der Variationen von Elementen ohne Wiederholung." ;
+ Text [ italian ] = "Restituisce il numero delle permutazioni di elementi senza ripetizioni." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Anzahl der Variationen von Elementen ohne Wiederholung." ;
+ Text [ portuguese ] = "Devolve a quantidade de permutações de um determinado número de objectos (sem repetições)." ;
+ Text [ finnish ] = "Berechnet die Anzahl der Variationen von Elementen ohne Wiederholung." ;
+ Text [ danish ] = "Beregner antallet af permutationer for elementer uden gentagelse." ;
+ Text [ french ] = "Renvoie le nombre de permutations d'éléments, sans répétition." ;
+ Text [ swedish ] = "Beräknar antalet variationer av element utan upprepning." ;
+ Text [ dutch ] = "Berekent het aantal variaties van elementen zonder herhaling." ;
+ Text [ spanish ] = "Devuelve el número de permutaciones para un número determinado de objetos." ;
+ Text [ english_us ] = "Returns the number of permutations for a given number of elements without repetition." ;
+ Text[ chinese_simplified ] = "ÔÚ¸ø¶¨ÔªËØ×ÜÊýµÄÇé¿öϼÆËãÑ¡È¡Èô¸ÉÔªËصÄ\nÅÅÁÐÊý(²»ÔÊÐíÖظ´ÅÅÁÐ)¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êîëè÷åñòâî ïåðåñòàíîâîê ýëåìåíòîâ (áåç ïîâòîðåíèé).";
+ Text[ polish ] = "Wyznacza liczbê permutacji dla podanej liczby elementów.";
+ Text[ japanese ] = "Žw’肳‚ꂽ€–ڂ̇—ñ‚Ì”(ŒJ‚è•Ô‚µ‚È‚µ)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦b«ü©w¤¸¯ÀÁ`¼Æªº±¡ªp¤U­pºâ¿ï¨ú­Y¤z¤¸¯Àªº±Æ¦C¼Æ(¤£¤¹³\\­«½Æ±Æ¦C)¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÚÏÏ ÇáÊÈÇÏíá áÚÏÏ ãä ÇáßÇÆäÇÊ ÈÏæä ÊßÑÇÑ.";
+ Text[ dutch ] = "Berekent het aantal variaties van elementen zonder herhaling.";
+ Text[ chinese_simplified ] = "ÔÚ¸ø¶¨ÔªËØ×ÜÊýµÄÇé¿öϼÆËãÑ¡È¡Èô¸ÉÔªËصÄ\nÅÅÁÐÊý(²»ÔÊÐíÖظ´ÅÅÁÐ)¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ðëÞèïò ìåôáèÝóåùí óôïé÷åßùí ÷ùñßò åðáíÜëçøç.";
+ Text[ korean ] = "¹Ýº¹ ¾øÀÌ ¿ä¼ÒÀÇ ÁÖ¾îÁø ¹øÈ£ÀÇ Ä¡È¯µÈ ¼ö¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Yinelenmeyen öðeler varyasyonlarý sayýsýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_VARIATIONEN );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Anzahl_1" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Anzahl 1" ;
+ Text [ italian ] = "num_1" ;
+ Text [ portuguese_brazilian ] = "Anzahl 1" ;
+ Text [ portuguese ] = "Número_1" ;
+ Text [ finnish ] = "Anzahl 1" ;
+ Text [ danish ] = "Antal_1" ;
+ Text [ french ] = "Nombre_1" ;
+ Text [ swedish ] = "antal_1" ;
+ Text [ dutch ] = "Aantal_1" ;
+ Text [ spanish ] = "Cantidad_1" ;
+ Text [ english_us ] = "Count_1" ;
+ Text[ chinese_simplified ] = "Count_1";
+ Text[ russian ] = "×èñëî_1";
+ Text[ polish ] = "Liczba_1";
+ Text[ japanese ] = "”’l1";
+ Text[ chinese_traditional ] = "Count_1";
+ Text[ arabic ] = "ÇáÚÏÏ_1";
+ Text[ dutch ] = "Aantal_1";
+ Text[ chinese_simplified ] = "Count_1";
+ Text[ greek ] = "ÐëÞèïò_1";
+ Text[ korean ] = "Ä«¿îÆ®_1";
+ Text[ turkish ] = "Adet sayýsý_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Gesamtanzahl der Elemente." ;
+ Text [ english ] = "is an integer that describes the number of objects." ;
+ Text [ norwegian ] = "Gesamtanzahl der Elemente." ;
+ Text [ italian ] = "è un intero che descrive il numero di oggetti." ;
+ Text [ portuguese_brazilian ] = "Gesamtanzahl der Elemente." ;
+ Text [ portuguese ] = "é um número inteiro que descreve a quantidade de objectos." ;
+ Text [ finnish ] = "Gesamtanzahl der Elemente." ;
+ Text [ danish ] = "Det samlede antal elementer." ;
+ Text [ french ] = "Le nombre total d'éléments." ;
+ Text [ swedish ] = "Det totala antalet element." ;
+ Text [ dutch ] = "Totaal aantal elementen." ;
+ Text [ spanish ] = "es un número entero que corresponde al número de objetos." ;
+ Text [ english_us ] = "The total number of elements." ;
+ Text[ chinese_simplified ] = "ÔªËصÄ×ÜÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî ýëåìåíòîâ.";
+ Text[ polish ] = "Ogólna liczba obiektów.";
+ Text[ japanese ] = "€–Ú‚Ì‘”B";
+ Text[ chinese_traditional ] = "¤¸¯ÀªºÁ`¼Æ¡C";
+ Text[ arabic ] = "ÇáÚÏÏ ÇáÅÌãÇáí ááÚäÇÕÑ.";
+ Text[ dutch ] = "Totaal aantal elementen.";
+ Text[ chinese_simplified ] = "ÔªËصÄ×ÜÊý¡£";
+ Text[ greek ] = "Óõíïëéêüò áñéèìüò óôïé÷åßùí.";
+ Text[ korean ] = "¿ä¼ÒÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Toplam öðe sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl_2" ;
+ Text [ english ] = "number_chosen" ;
+ Text [ norwegian ] = "Anzahl 2" ;
+ Text [ italian ] = "num_2" ;
+ Text [ portuguese_brazilian ] = "Anzahl 2" ;
+ Text [ portuguese ] = "Número_2" ;
+ Text [ finnish ] = "Anzahl 2" ;
+ Text [ danish ] = "Antal_2" ;
+ Text [ french ] = "Nombre_2" ;
+ Text [ swedish ] = "antal_2" ;
+ Text [ dutch ] = "Aantal_2" ;
+ Text [ spanish ] = "Cantidad_2" ;
+ Text [ english_us ] = "Count_2" ;
+ Text[ chinese_simplified ] = "Count_2";
+ Text[ russian ] = "×èñëî_2";
+ Text[ polish ] = "Liczba_2";
+ Text[ japanese ] = "”’l2";
+ Text[ chinese_traditional ] = "Count_2";
+ Text[ arabic ] = "ÇáÚÏÏ_2";
+ Text[ dutch ] = "Aantal_2";
+ Text[ chinese_simplified ] = "Count_2";
+ Text[ greek ] = "ÐëÞèïò_2";
+ Text[ korean ] = "Ä«¿îÆ®_2";
+ Text[ turkish ] = "Adet sayýsý_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Auswahlanzahl aus den Elementen." ;
+ Text [ english ] = "is an integer that describes the number of objects in each permutation." ;
+ Text [ norwegian ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ italian ] = "è un intero che descrive il numero di oggetti per ogni permutazione." ;
+ Text [ portuguese_brazilian ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ portuguese ] = "é um número inteiro que descreve a quantidade de objectos em cada permutação." ;
+ Text [ finnish ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ danish ] = "Antallet af elementer i hver permutation." ;
+ Text [ french ] = "Le nombre d'éléments dans chaque permutation." ;
+ Text [ swedish ] = "Urvalsantal från elementen." ;
+ Text [ dutch ] = "Aantal gekozen elementen." ;
+ Text [ spanish ] = "es un número entero que corresponde al número de objetos contenidos en cada permutación." ;
+ Text [ english_us ] = "The selection number taken from the elements." ;
+ Text[ chinese_simplified ] = "ÿ¸öÅÅÁÐÖеÄÔªËØÊýÄ¿¡£";
+ Text[ russian ] = "×èñëî ýëåìåíòîâ â êàæäîé ïåðåñòàíîâêå.";
+ Text[ polish ] = "Liczba elementów do wyboru.";
+ Text[ japanese ] = "‘g‚݇‚킹‚é1‘g‚ÉŠÜ‚Ü‚ê‚逖ڂ̔B";
+ Text[ chinese_traditional ] = "¨C­Ó±Æ¦C¤¤ªº¤¸¯À¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáßÇÆäÇÊ Ýí ßá ÊÈÏíáÉ.";
+ Text[ dutch ] = "Aantal gekozen elementen.";
+ Text[ chinese_simplified ] = "ÿ¸öÅÅÁÐÖеÄÔªËØÊýÄ¿¡£";
+ Text[ greek ] = "ÐëÞèïò åðéëåãìÝíùí óôïé÷åßùí.";
+ Text[ korean ] = "¿ä¼Ò¿¡¼­ ¼±ÅÃÇÑ È½¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Seçilen öðe sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VARIATIONEN2 #*=-
+ Resource SC_OPCODE_VARIATIONEN_2
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Anzahl der Variationen von Elementen mit Wiederholung." ;
+ Text [ english ] = "Returns the number of permutations for a given number of objects that can be selected from number objects (repetition allowed)." ;
+ Text [ norwegian ] = "Berechnet die Anzahl der Variationen von Elementen mit Wiederholung." ;
+ Text [ italian ] = "Calcola il numero di permutazioni di elementi con ripetizione." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Anzahl der Variationen von Elementen mit Wiederholung." ;
+ Text [ portuguese ] = "Devolve a quantidade de permutações de um determinado número de objectos (com repetições)." ;
+ Text [ finnish ] = "Berechnet die Anzahl der Variationen von Elementen mit Wiederholung." ;
+ Text [ danish ] = "Beregner antallet af permutationer for elementer med gentagelse." ;
+ Text [ french ] = "Renvoie le nombre de permutations d'éléments, avec répétition." ;
+ Text [ swedish ] = "Beräknar antalet variationer av element med upprepning." ;
+ Text [ dutch ] = "Berekent het aantal variaties van elementen met herhaling." ;
+ Text [ spanish ] = "Devuelve la cantidad de permutaciones para un número determinado de elementos con repeticiones." ;
+ Text [ english_us ] = "Returns the number of permutations for a given number of objects (repetition allowed)." ;
+ Text[ chinese_simplified ] = "ÔÚ¸ø¶¨ÔªËØ×ÜÊýµÄÇé¿öϼÆËãÑ¡È¡Èô¸ÉÔªËصÄ\nÅÅÁÐÊý(ÔÊÐíÖظ´ÅÅÁÐ)¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êîëè÷åñòâî ïåðåñòàíîâîê ýëåìåíòîâ (ñ ïîâòîðåíèåì).";
+ Text[ polish ] = "Wyznacza liczbê permutacji dla podanej liczby elementów.";
+ Text[ japanese ] = "Žw’肳‚ꂽ€–ڂ̇—ñ‚Ì”(ŒJ‚è•Ô‚µ‚ ‚è)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦b«ü©w¤¸¯ÀÁ`¼Æªº±¡ªp¤U­pºâ¿ï¨ú­Y¤z¤¸¯Àªº±Æ¦C¼Æ(¤¹³\\­«½Æ±Æ¦C)¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÚÏÏ ÊÈÇÏíá ÇáÚäÇÕÑ ãÚ ÇáÊßÑÇÑ.";
+ Text[ dutch ] = "Berekent het aantal variaties van elementen met herhaling.";
+ Text[ chinese_simplified ] = "ÔÚ¸ø¶¨ÔªËØ×ÜÊýµÄÇé¿öϼÆËãÑ¡È¡Èô¸ÉÔªËصÄ\nÅÅÁÐÊý(ÔÊÐíÖظ´ÅÅÁÐ)¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ðëÞèïò ìåôáèÝóåùí óôïé÷åßùí ìå åðáíÜëçøç.";
+ Text[ korean ] = "°³Ã¼ÀÇ ÁÖ¾îÁø ¹øÈ£ÀÇ Ä¡È¯µÈ ¼ö¸¦ ¹Ýȯ(¹Ýº¹ Çã¿ë).";
+ Text[ turkish ] = "Yinelenen öðeler varyasyonlarý sayýsýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_VARIATIONEN2 );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Anzahl_1" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Anzahl 1" ;
+ Text [ italian ] = "num_1" ;
+ Text [ portuguese_brazilian ] = "Anzahl 1" ;
+ Text [ portuguese ] = "Número_1" ;
+ Text [ finnish ] = "Anzahl 1" ;
+ Text [ danish ] = "Antal_1" ;
+ Text [ french ] = "Nombre_1" ;
+ Text [ swedish ] = "antal_1" ;
+ Text [ dutch ] = "Aantal_1" ;
+ Text [ spanish ] = "Cantidad_1" ;
+ Text [ english_us ] = "Count_1" ;
+ Text[ chinese_simplified ] = "Count_1";
+ Text[ russian ] = "×èñëî_1";
+ Text[ polish ] = "Liczba_1";
+ Text[ japanese ] = "”’l1";
+ Text[ chinese_traditional ] = "Count_1";
+ Text[ arabic ] = "ÇáÚÏÏ_1";
+ Text[ dutch ] = "Aantal_1";
+ Text[ chinese_simplified ] = "Count_1";
+ Text[ greek ] = "ÐëÞèïò_1";
+ Text[ korean ] = "Ä«¿îÆ®_1";
+ Text[ turkish ] = "Adet sayýsý_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Gesamtanzahl der Elemente." ;
+ Text [ english ] = "is an integer that describes the number of objects." ;
+ Text [ norwegian ] = "Gesamtanzahl der Elemente." ;
+ Text [ italian ] = "Numero totale degli elementi" ;
+ Text [ portuguese_brazilian ] = "Gesamtanzahl der Elemente." ;
+ Text [ portuguese ] = "é um número inteiro que descreve a quantidade de objectos." ;
+ Text [ finnish ] = "Gesamtanzahl der Elemente." ;
+ Text [ danish ] = "Det samlede antal elementer." ;
+ Text [ french ] = "Le nombre total d'éléments." ;
+ Text [ swedish ] = "Totalt antal element." ;
+ Text [ dutch ] = "Totaal aantal elementen." ;
+ Text [ spanish ] = "es el número total de elementos." ;
+ Text [ english_us ] = "The total number of elements." ;
+ Text[ chinese_simplified ] = "ÔªËصÄ×ÜÊý¡£";
+ Text[ russian ] = "Îáùåå ÷èñëî ýëåìåíòîâ.";
+ Text[ polish ] = "Ogólna liczba obiektów.";
+ Text[ japanese ] = "€–Ú‚Ì‘”B";
+ Text[ chinese_traditional ] = "¤¸¯ÀªºÁ`¼Æ¡C";
+ Text[ arabic ] = "ÇáÚÏÏ ÇáÅÌãÇáí ááÚäÇÕÑ.";
+ Text[ dutch ] = "Totaal aantal elementen.";
+ Text[ chinese_simplified ] = "ÔªËصÄ×ÜÊý¡£";
+ Text[ greek ] = "Óõíïëéêüò áñéèìüò óôïé÷åßùí.";
+ Text[ korean ] = "¿ä¼ÒÀÇ Àüü ¼ö";
+ Text[ turkish ] = "Toplam öðe sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl_2" ;
+ Text [ english ] = "number_chosen" ;
+ Text [ norwegian ] = "Anzahl 2" ;
+ Text [ italian ] = "num_2" ;
+ Text [ portuguese_brazilian ] = "Anzahl 2" ;
+ Text [ portuguese ] = "Número_2" ;
+ Text [ finnish ] = "Anzahl 2" ;
+ Text [ danish ] = "Antal_2" ;
+ Text [ french ] = "Nombre_2" ;
+ Text [ swedish ] = "antal_2" ;
+ Text [ dutch ] = "Aantal_2" ;
+ Text [ spanish ] = "Cantidad_2" ;
+ Text [ english_us ] = "Count_2" ;
+ Text[ chinese_simplified ] = "Count_2";
+ Text[ russian ] = "×èñëî_2";
+ Text[ polish ] = "Liczba_2";
+ Text[ japanese ] = "”’l2";
+ Text[ chinese_traditional ] = "Count_2";
+ Text[ arabic ] = "ÇáÚÏÏ_2";
+ Text[ dutch ] = "Aantal_2";
+ Text[ chinese_simplified ] = "Count_2";
+ Text[ greek ] = "ÐëÞèïò_2";
+ Text[ korean ] = "Ä«¿îÆ®_2";
+ Text[ turkish ] = "Adet sayýsý_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Auswahlanzahl aus den Elementen." ;
+ Text [ english ] = "is an integer that describes the number of objects in each permutation." ;
+ Text [ norwegian ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ italian ] = "Il numero degli oggetti di ogni permutazione." ;
+ Text [ portuguese_brazilian ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ portuguese ] = "é um número inteiro que descreve a quantidade de objectos em cada permutação." ;
+ Text [ finnish ] = "Auswahlanzahl aus den Elementen." ;
+ Text [ danish ] = "Antallet af elementer i hver kombination." ;
+ Text [ french ] = "Le nombre d'éléments dans chaque permutation." ;
+ Text [ swedish ] = "Urvalsantal från elementen." ;
+ Text [ dutch ] = "Aantal gekozen elementen." ;
+ Text [ spanish ] = "es el número entero que corresponde al número de objetos." ;
+ Text [ english_us ] = "The selection number taken from the elements." ;
+ Text[ chinese_simplified ] = "ÿ¸öÅÅÁÐÖеÄÔªËØÊýÄ¿¡£";
+ Text[ russian ] = "×èñëî ýëåìåíòîâ â êàæäîé ïåðåñòàíîâêå.";
+ Text[ polish ] = "Liczba elementów do wyboru.";
+ Text[ japanese ] = "‘g‚݇‚킹‚é1‘g‚ÉŠÜ‚Ü‚ê‚逖ڂ̔B";
+ Text[ chinese_traditional ] = "¨C­Ó±Æ¦C¤¤ªº¤¸¯À¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáßÇÆäÇÊ Ýí ßá ÊÈÏíáÉ.";
+ Text[ dutch ] = "Aantal gekozen elementen.";
+ Text[ chinese_simplified ] = "ÿ¸öÅÅÁÐÖеÄÔªËØÊýÄ¿¡£";
+ Text[ greek ] = "ÐëÞèïò åðéëåãìÝíùí óôïé÷åßùí.";
+ Text[ korean ] = "¿ä¼Ò¿¡¼­ ¼±ÅÃÇÑ È½¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Seçilen öðe sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KONFIDENZ #*=-
+ Resource SC_OPCODE_CONFIDENCE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet ein (1-alpha)-Konfidenzintervall zur Normalverteilung." ;
+ Text [ english ] = "Returns the confidence interval for a population mean." ;
+ Text [ norwegian ] = "Berechnet ein (1-alpha)-Konfidenzintervall zur Normalverteilung." ;
+ Text [ italian ] = "Restituisce un (1 alpha) intervallo di confidenza per la distribuzione normale." ;
+ Text [ portuguese_brazilian ] = "Berechnet ein (1-alpha)-Konfidenzintervall zur Normalverteilung." ;
+ Text [ portuguese ] = "Devolve o intervalo de confiança para estabelecer uma média populacional." ;
+ Text [ finnish ] = "Berechnet ein (1-alpha)-Konfidenzintervall zur Normalverteilung." ;
+ Text [ danish ] = "Beregner konfidensintervallet for normalfordelingen." ;
+ Text [ french ] = "Renvoie un intervalle de confiance (1 -alpha) pour la distribution normale." ;
+ Text [ swedish ] = "Beräknar ett (1-alfa)-konfidensintervall för normalfördelningen." ;
+ Text [ dutch ] = "Berekent een (1-alfa)-confidentie-interval voor een normale verdeling." ;
+ Text [ spanish ] = "Devuelve el intervalo de confianza para la media de una población." ;
+ Text [ english_us ] = "Returns a (1 alpha) confidence interval for a normal distribution." ;
+ Text[ chinese_simplified ] = "¼ÆËãÕý̬·Ö²¼ (1-alpha) µÄÖÃÐÅÇø¼ä¡£";
+ Text[ russian ] = "Âîçâðàùàåò äîâåðèòåëüíûé èíòåðâàë äëÿ ñðåäíåãî ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Wyznacza przedzia³ ufnoœci dla œredniej z populacji.";
+ Text[ japanese ] = "(1-ƒ¿)M—Š“x‚ð•W–{•½‹Ï‚É•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¥¿ºA¤À§G (1-alpha) ªº¸m«H°Ï¶¡¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÝÇÕá ÇáËÞÉ (1-alpha) Åáì ÇáÊæÒíÚ ÇáØÈíÚí.";
+ Text[ dutch ] = "Berekent een (1-alfa)-confidentie-interval voor een normale verdeling.";
+ Text[ chinese_simplified ] = "¼ÆËãÕý̬·Ö²¼ (1-alpha) µÄÖÃÐÅÇø¼ä¡£";
+ Text[ greek ] = "Õðïëïãßæåé Ýíá äéÜóôçìá åìðéóôïóýíçò (1-á) ãéá ìéá êáíïíéêÞ êáôáíïìÞ.";
+ Text[ korean ] = "Á¤±Ô ºÐÆ÷¸¦ À§ÇÑ (1-¾ËÆÄ) ½Å·Ú±¸°£À» »êÃâÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Normal daðýtým ile ilgili (1-alfa)-güven aralýðýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_KONFIDENZ );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Alpha" ;
+ Text [ english ] = "alpha" ;
+ Text [ norwegian ] = "Alpha" ;
+ Text [ italian ] = "alfa" ;
+ Text [ portuguese_brazilian ] = "Alpha" ;
+ Text [ portuguese ] = "Alfa" ;
+ Text [ finnish ] = "Alpha" ;
+ Text [ danish ] = "Alfa" ;
+ Text [ french ] = "Alpha" ;
+ Text [ swedish ] = "alfa" ;
+ Text [ dutch ] = "Alfa" ;
+ Text [ spanish ] = "alfa" ;
+ Text [ english_us ] = "alpha" ;
+ Text[ chinese_simplified ] = "alpha";
+ Text[ russian ] = "Àëüôà";
+ Text[ polish ] = "Alfa";
+ Text[ japanese ] = "ƒ¿";
+ Text[ chinese_traditional ] = "alpha";
+ Text[ arabic ] = "Alpha";
+ Text[ dutch ] = "Alfa";
+ Text[ chinese_simplified ] = "alpha";
+ Text[ greek ] = "á";
+ Text[ korean ] = "¾ËÆÄ";
+ Text[ turkish ] = "Alfa";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Das Niveau des Konfidenzintervalls." ;
+ Text [ english ] = "is the significance level used to compute the confidence level." ;
+ Text [ norwegian ] = "Das Niveau des Konfidenzintervalls." ;
+ Text [ italian ] = "è il livello di significatività utilizzato per calcolare il livello di confidenza." ;
+ Text [ portuguese_brazilian ] = "Das Niveau des Konfidenzintervalls." ;
+ Text [ portuguese ] = "é o nível de significância utilizado para calcular o nível de confiança." ;
+ Text [ finnish ] = "Das Niveau des Konfidenzintervalls." ;
+ Text [ danish ] = "Konfidensintervallets niveau." ;
+ Text [ french ] = "Le niveau de l'intervalle de confiance." ;
+ Text [ swedish ] = "Nivån för konfidensintervallet." ;
+ Text [ dutch ] = "Het niveau van de confidentie-interval." ;
+ Text [ spanish ] = "es el nivel de significación empleado para calcular el nivel de confianza." ;
+ Text [ english_us ] = "The level of the confidence interval." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËãÖÃÐŶȵÄÏÔÖøˮƽ²ÎÊý¡£";
+ Text[ russian ] = "Óðîâåíü çíà÷íîñòè, èñïîëüçóåìûé äëÿ âû÷èñëåíèÿ óðîâíÿ íàäåæíîñòè.";
+ Text[ polish ] = "Poziom przedzia³u ufnoœci.";
+ Text[ japanese ] = "M—Š“x‚Ì—LˆÓ…€B";
+ Text[ chinese_traditional ] = "¥Î©ó­pºâ¸m«H«×ªºÅãµÛ¤ô¥­°Ñ¼Æ¡C";
+ Text[ arabic ] = "ãÓÊæì ÇáÃåãíÉ ÇáÐí íÊã ÇÓÊÎÏÇãå áÍÓÇÈ ãÓÊæì ÇáËÞÉ.";
+ Text[ dutch ] = "Het niveau van de confidentie-interval.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËãÖÃÐŶȵÄÏÔÖøˮƽ²ÎÊý¡£";
+ Text[ greek ] = "Ôï åðßðåäï ôïõ äéáóôÞìáôïò åìðéóôïóýíçò.";
+ Text[ korean ] = "½Å·Ú±¸°£ÀÇ ¼öÁØÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Güven aralýðýnýn düzeyi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "STD" ;
+ Text [ english ] = "standard_dev" ;
+ Text [ norwegian ] = "STD" ;
+ Text [ italian ] = "dev_standard" ;
+ Text [ portuguese_brazilian ] = "STD" ;
+ Text [ portuguese ] = "Desv_padrão" ;
+ Text [ finnish ] = "STD" ;
+ Text [ danish ] = "Standardafv" ;
+ Text [ french ] = "ET" ;
+ Text [ swedish ] = "STD" ;
+ Text [ dutch ] = "STD" ;
+ Text [ spanish ] = "desv_estándar" ;
+ Text [ english_us ] = "STDEV" ;
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ russian ] = "Ñòàíäàðòíîå_îòêë";
+ Text[ polish ] = "odchylenie_std";
+ Text[ japanese ] = "•W€•Î·";
+ Text[ chinese_traditional ] = "standard_dev";
+ Text[ arabic ] = "Standard_dev";
+ Text[ dutch ] = "STD";
+ Text[ chinese_simplified ] = "standard_dev";
+ Text[ greek ] = "standard_dev";
+ Text[ korean ] = "standard_dev";
+ Text[ turkish ] = "STDEV";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Standardabweichung der Grundgesamtheit." ;
+ Text [ english ] = "is the population standard deviation for the data range and is assumed to be known." ;
+ Text [ norwegian ] = "Die Standardabweichung der Grundgesamtheit." ;
+ Text [ italian ] = "è la deviazione standard della popolazione per l'intervallo di dati." ;
+ Text [ portuguese_brazilian ] = "Die Standardabweichung der Grundgesamtheit." ;
+ Text [ portuguese ] = "é o desvio padrão da população para o intervalo de dados." ;
+ Text [ finnish ] = "Die Standardabweichung der Grundgesamtheit." ;
+ Text [ danish ] = "Populationens standardafvigelse." ;
+ Text [ french ] = "L'écart-type de la population." ;
+ Text [ swedish ] = "Populationens standardavvikelse." ;
+ Text [ dutch ] = "De standaardafwijking van de populatie" ;
+ Text [ spanish ] = "es la desviación estándar de la población y se asume que es conocida." ;
+ Text [ english_us ] = "The standard deviation of the population." ;
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓòµÄ×ÜÌå±ê׼ƫ²î¡£";
+ Text[ russian ] = "Ñòàíäàðòíîå îòêëîíåíèå ãåíåðàëüíîé ñîâîêóïíîñòè äëÿ èíòåðâàëà äàííûõ.";
+ Text[ polish ] = "Odchylenie standardowe populacji.";
+ Text[ japanese ] = "•êW’c‚Ì•W€•Î·B";
+ Text[ chinese_traditional ] = "¼Æ¾Ú°Ï°ìªºÁ`Åé¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ááãÌÊãÚ.";
+ Text[ dutch ] = "De standaardafwijking van de populatie";
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓòµÄ×ÜÌå±ê׼ƫ²î¡£";
+ Text[ greek ] = "Ç ôõðéêÞ áðüêëéóç ôïõ óõíïëéêïý ðëçèõóìïý.";
+ Text[ korean ] = "¸ðÁý´ÜÀÇ Ç¥ÁØ ÆíÂ÷ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Popülasyonun standart sapmasý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "N" ;
+ Text [ english ] = "size" ;
+ Text [ norwegian ] = "N" ;
+ Text [ italian ] = "dimens" ;
+ Text [ portuguese_brazilian ] = "N" ;
+ Text [ portuguese ] = "Tamanho" ;
+ Text [ finnish ] = "N" ;
+ Text [ danish ] = "Størrelse" ;
+ Text [ french ] = "T" ;
+ Text [ swedish ] = "storlek" ;
+ Text [ dutch ] = "N" ;
+ Text [ spanish ] = "tamaño" ;
+ Text [ english_us ] = "size" ;
+ Text[ chinese_simplified ] = "size";
+ Text[ russian ] = "Ðàçìåð";
+ Text[ polish ] = "Rozmiar";
+ Text[ japanese ] = "•W–{”";
+ Text[ chinese_traditional ] = "size";
+ Text[ arabic ] = "Size";
+ Text[ dutch ] = "N";
+ Text[ chinese_simplified ] = "size";
+ Text[ greek ] = "Size";
+ Text[ korean ] = "Å©±â";
+ Text[ turkish ] = "Büyüklük";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Größe der Grundgesamtheit. : Die Gr÷˜e der Grundgesamtheit. */
+ Text = "Die Größe der Grundgesamtheit." ;
+ Text [ english ] = "is the sample size." ;
+ Text [ norwegian ] = "Die Größe der Grundgesamtheit." ;
+ Text [ italian ] = "è la dimensione del campione." ;
+ Text [ portuguese_brazilian ] = "Die Größe der Grundgesamtheit." ;
+ Text [ portuguese ] = "é o tamanho do exemplo." ;
+ Text [ finnish ] = "Die Größe der Grundgesamtheit." ;
+ Text [ danish ] = "Populationens størrelse." ;
+ Text [ french ] = "La taille de la population." ;
+ Text [ swedish ] = "Populationens storlek." ;
+ Text [ dutch ] = "De grootte van de populatie." ;
+ Text [ spanish ] = "es el tamaño de la muestra." ;
+ Text [ english_us ] = "The size of the population." ;
+ Text[ chinese_simplified ] = "³éÑù×ÜÊý¡£";
+ Text[ russian ] = "Ðàçìåð ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Rozmiar populacji.";
+ Text[ japanese ] = "•êW’c‚Ì•W–{”B";
+ Text[ chinese_traditional ] = "©â¼ËÁ`¼Æ¡C";
+ Text[ arabic ] = "ÍÌã ÇáãÌÊãÚ.";
+ Text[ dutch ] = "De grootte van de populatie.";
+ Text[ chinese_simplified ] = "³éÑù×ÜÊý¡£";
+ Text[ greek ] = "Ôï ìÝãåèïò ôïõ ðëçèõóìïý.";
+ Text[ korean ] = "¸ðÁý´ÜÀÇ Å©±â";
+ Text[ turkish ] = "Popülasyonun büyüklüðü.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GTEST #*=-
+ Resource SC_OPCODE_Z_TEST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? (Gauss-Test) Berechnet die zweiseitige Prüfstatistik zur Normalverteilung. : (Gauss-Test) Berechnet die zweiseitige Pr³fstatistik zur Normalverteilung. */
+ Text = "(Gauss-Test) Berechnet die zweiseitige Prüfstatistik zur Normalverteilung." ;
+ Text [ english ] = "Returns the two-tailed P-value of a z-test." ;
+ Text [ norwegian ] = "(Gauss-Test) Berechnet die zweiseitige Prüfstatistik zur Normalverteilung." ;
+ Text [ italian ] = "(Test di Gauss), restituisce il livello di significatività a due code per un test z." ;
+ Text [ portuguese_brazilian ] = "(Gauss-Test) Berechnet die zweiseitige Prüfstatistik zur Normalverteilung." ;
+ Text [ portuguese ] = "Devolve o valor P bilateral do teste Z" ;
+ Text [ finnish ] = "(Gauss-Test) Berechnet die zweiseitige Prüfstatistik zur Normalverteilung." ;
+ Text [ danish ] = "Beregner den tosidede P-værdi til en z-test." ;
+ Text [ french ] = "Calcule la probabilité bilatérale pour la distribution normale." ;
+ Text [ swedish ] = "(Gauss-test) Beräknar den tvåsidiga kontrollstatistiken för normalfördelning." ;
+ Text [ dutch ] = "(Gauss-toets) Berekent de tweezijdige toetsstatistiekbij de normale verdeling." ;
+ Text [ spanish ] = "Devuelve el valor P de dos colas de una prueba z." ;
+ Text [ english_us ] = "Returns the two-tailed P value of a z test." ;
+ Text[ chinese_simplified ] = "(¸ß˹-¼ìÑé)¼ÆËãÕý̬·Ö²¼µÄ˫β¸ÅÂÊ¡£";
+ Text[ russian ] = "(Òåñò Ãàóññà) Âû÷èñëÿåò äâóñòîðîííþþ âåðîÿòíîñòü äëÿ íîðìàëüíîãî ðàñïðåäåëåíèÿ.";
+ Text[ polish ] = "Wyznacza wartoœæ P o dwóch œladach oraz test z.";
+ Text[ japanese ] = "(¶Þ³½ŒŸ’è)³‹K•ª•z‚É]‚¤—¼‘¤‚o’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "(°ª´µ-ÀËÅç)­pºâ¥¿ºA¤À§GªºÂù§À·§²v¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÞíãÉ P ÇáËäÇÆíÉ ÇáÃØÑÇÝ z test.";
+ Text[ dutch ] = "(Gauss-toets) Berekent de tweezijdige toetsstatistiekbij de normale verdeling.";
+ Text[ chinese_simplified ] = "(¸ß˹-¼ìÑé)¼ÆËãÕý̬·Ö²¼µÄ˫β¸ÅÂÊ¡£";
+ Text[ greek ] = "(ÄïêéìÞ ôïõ Gauss) Õðïëïãßæåé ôçí äßðëåõñç óôáôéóôéêÞ åëÝã÷ïõ (ôéìÞ Ñ) ôçò êáíïíéêÞò êáôáíïìÞò (z test).";
+ Text[ korean ] = "(°¡¿ì½º Å×½ºÆ®) Á¤±Ô ºÐÆ÷¸¦ À§ÇÑ µÎ¸éÀÇ ½ÃÇèÅë°è¸¦ °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "(Gauss deneyi) normal daðýtým ile ilgili iki kuyruklu denetim istatistiðini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_GTEST );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Daten" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Daten" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Daten" ;
+ Text [ danish ] = "Data" ;
+ Text [ french ] = "Données" ;
+ Text [ swedish ] = "data" ;
+ Text [ dutch ] = "Gegevens" ;
+ Text [ spanish ] = "Datos" ;
+ Text [ english_us ] = "data" ;
+ Text[ chinese_simplified ] = "data";
+ Text[ russian ] = "Äàííûå";
+ Text[ polish ] = "Dane";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "data";
+ Text[ arabic ] = "Data";
+ Text[ dutch ] = "Gegevens";
+ Text[ chinese_simplified ] = "data";
+ Text[ greek ] = "ÄåäïìÝíá";
+ Text[ korean ] = "µ¥ÀÌÅÍ";
+ Text[ turkish ] = "Veri";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Daten." ;
+ Text [ english ] = "is the array or range of data against which to test x." ;
+ Text [ norwegian ] = "Die Matrix der Daten." ;
+ Text [ italian ] = "è la matrice o l'intervallo di dati con cui esaminare x." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Daten." ;
+ Text [ portuguese ] = "é a matriz ou intervalo de dados em que x será testado." ;
+ Text [ finnish ] = "Die Matrix der Daten." ;
+ Text [ danish ] = "Den matrix af data som X skal testes mod." ;
+ Text [ french ] = "La matrice des données." ;
+ Text [ swedish ] = "Matrisen för data." ;
+ Text [ dutch ] = "De matrix van de gegevens." ;
+ Text [ spanish ] = "La matriz de los datos" ;
+ Text [ english_us ] = "The data array." ;
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ìÑé x µÄÊý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ.";
+ Text[ polish ] = "Macierz danych.";
+ Text[ japanese ] = "ÃÞ°À‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "¥Î¨ÓÀËÅç x ªº¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÕÝíÝ Ãæ äØÇÞ ÇáÈíÇäÇÊ ÇáãÑÇÏ ÇÎÊÈÇÑ x ãÞÇÑäÉ Èå.";
+ Text[ dutch ] = "De matrix van de gegevens.";
+ Text[ chinese_simplified ] = "ÓÃÀ´¼ìÑé x µÄÊý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí.";
+ Text[ korean ] = "µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Veri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "X" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "X" ;
+ Text [ italian ] = "x" ;
+ Text [ portuguese_brazilian ] = "X" ;
+ Text [ portuguese ] = "X" ;
+ Text [ finnish ] = "X" ;
+ Text [ danish ] = "X" ;
+ Text [ french ] = "X" ;
+ Text [ swedish ] = "x" ;
+ Text [ dutch ] = "X" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "Number" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "X";
+ Text[ polish ] = "X";
+ Text[ japanese ] = "X";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "X";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "X";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Örn";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Wert, der getestet werden soll." ;
+ Text [ english ] = "is the value to test." ;
+ Text [ norwegian ] = "Der Wert, der getestet werden soll." ;
+ Text [ italian ] = "è il valore da esaminare." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der getestet werden soll." ;
+ Text [ portuguese ] = "é o valor a ser testado." ;
+ Text [ finnish ] = "Der Wert, der getestet werden soll." ;
+ Text [ danish ] = "Værdien som skal testes." ;
+ Text [ french ] = "La valeur à tester." ;
+ Text [ swedish ] = "Värdet som skall testas." ;
+ Text [ dutch ] = "De waarde die moet worden getest." ;
+ Text [ spanish ] = "es el valor a comprobar." ;
+ Text [ english_us ] = "The value to be tested." ;
+ Text[ chinese_simplified ] = "Òª±»¼ìÑéµÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðîâåðÿåìîå çíà÷åíèå.";
+ Text[ polish ] = "WartoϾ do testowania.";
+ Text[ japanese ] = "ŒŸ’è‚·‚é’lB";
+ Text[ chinese_traditional ] = "­n³QÀËÅ窺¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊÈÇÑåÇ.";
+ Text[ dutch ] = "De waarde die moet worden getest.";
+ Text[ chinese_simplified ] = "Òª±»¼ìÑéµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ç ïðïßá ðñüêåéôáé íá åëåã÷èåß.";
+ Text[ korean ] = "°ªÀÌ Å×½ºÆ®µË´Ï´Ù.";
+ Text[ turkish ] = "Denenecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "STD" ;
+ Text [ english ] = "sigma" ;
+ Text [ norwegian ] = "STD" ;
+ Text [ italian ] = "sigma" ;
+ Text [ portuguese_brazilian ] = "STD" ;
+ Text [ portuguese ] = "Sigma" ;
+ Text [ finnish ] = "STD" ;
+ Text [ danish ] = "Sigma" ;
+ Text [ french ] = "ET" ;
+ Text [ swedish ] = "STD" ;
+ Text [ dutch ] = "STDEV" ;
+ Text [ spanish ] = "sigma" ;
+ Text [ english_us ] = "sigma" ;
+ Text[ chinese_simplified ] = "sigma";
+ Text[ russian ] = "Ñèãìà";
+ Text[ polish ] = "odchylenie_std";
+ Text[ japanese ] = "•W€•Î·";
+ Text[ chinese_traditional ] = "sigma";
+ Text[ arabic ] = "Sigma";
+ Text[ dutch ] = "STDEV";
+ Text[ chinese_simplified ] = "sigma";
+ Text[ greek ] = "ó";
+ Text[ korean ] = "½Ã±×¸¶";
+ Text[ turkish ] = "Sigma";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Standardabweichung der Grundgesamtheit." ;
+ Text [ english ] = "is the population (known) standard deviation." ;
+ Text [ norwegian ] = "Die Standardabweichung der Grundgesamtheit." ;
+ Text [ italian ] = "è la deviazione standard della popolazione (nota)." ;
+ Text [ portuguese_brazilian ] = "Die Standardabweichung der Grundgesamtheit." ;
+ Text [ portuguese ] = "é o desvio padrão da população (conhecido)." ;
+ Text [ finnish ] = "Die Standardabweichung der Grundgesamtheit." ;
+ Text [ danish ] = "Populationens standardafvigelse." ;
+ Text [ french ] = "L'écart-type de la population." ;
+ Text [ swedish ] = "Standardavvikelsen för populationen." ;
+ Text [ dutch ] = "De standaarddeviatie van de populatie." ;
+ Text [ spanish ] = "es la desviación estándar (conocida) de la población." ;
+ Text [ english_us ] = "The standard deviation of the population." ;
+ Text[ chinese_simplified ] = "Ñù±¾×ÜÌåµÄ±ê׼ƫ²î¡£";
+ Text[ russian ] = "Ñòàíäàðòíîå îòêëîíåíèå ãåíåðàëüíîé ñîâîêóïíîñòè.";
+ Text[ polish ] = "Odchylenie standardowe populacji.";
+ Text[ japanese ] = "•êW’c‚Ì•W€•Î·B";
+ Text[ chinese_traditional ] = "¼Ë¥»Á`Å骺¼Ð·Ç°¾®t¡C";
+ Text[ arabic ] = "ÇáÇäÍÑÇÝ ÇáãÚíÇÑí ááãÌÊãÚ.";
+ Text[ dutch ] = "De standaarddeviatie van de populatie.";
+ Text[ chinese_simplified ] = "Ñù±¾×ÜÌåµÄ±ê׼ƫ²î¡£";
+ Text[ greek ] = "Ç ôõðéêÞ áðüêëéóç ôïõ óõíïëéêïý ðëçèõóìïý.";
+ Text[ korean ] = "¸ðÁý´ÜÀÇ Ç¥ÁØ ÆíÂ÷ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Popülasyonun standart sapmasý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function CHITEST #*=-
+ Resource SC_OPCODE_CHI_TEST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet den Chi-Quadrat-Unabhängigkeitstest. : Berechnet den Chi-Quadrat-Unabhõngigkeitstest. */
+ Text = "Berechnet den Chi-Quadrat-Unabhängigkeitstest." ;
+ Text [ english ] = "Returns the test for independence." ;
+ Text [ norwegian ] = "Berechnet den Chi-Quadrat-Unabhängigkeitstest." ;
+ Text [ italian ] = "Restituisce il CHI al quadrato del test per l'indipendenza." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Chi-Quadrat-Unabhängigkeitstest." ;
+ Text [ portuguese ] = "Devolve o teste de independência do Qui-quadrado." ;
+ Text [ finnish ] = "Berechnet den Chi-Quadrat-Unabhängigkeitstest." ;
+ Text [ danish ] = "Returnerer chi2-uafhængighedstesten." ;
+ Text [ french ] = "Renvoie le test d'indépendance Khi-deux." ;
+ Text [ swedish ] = "Beräknar chi-två-oberoendetestet." ;
+ Text [ dutch ] = "Geeft als resultaat van de onafhankelijkheidstoets." ;
+ Text [ spanish ] = "Devuelve la prueba de independencia." ;
+ Text [ english_us ] = "Returns the chi square independence test." ;
+ Text[ chinese_simplified ] = "¼ÆËã Chi ƽ·½µÄ¶ÀÁ¢ÐÔ¼ìÑéÖµ¡£";
+ Text[ russian ] = "Âîçâðàùàåò òåñò íà íåçàâèñèìîñòü.";
+ Text[ polish ] = "Oblicza test na niezale¿noœæ rozk³adu chi-kwadrat.";
+ Text[ japanese ] = "¶²2æ(ƒÔ2)ŒŸ’è‚ðs‚¢‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ Chi ¥­¤èªº¿W¥ß©ÊÀËÅç­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇÎÊÈÇÑ ÇÓÊÞáÇá Chi ÇáÊÑÈíÚí.";
+ Text[ dutch ] = "Geeft als resultaat van de onafhankelijkheidstoets.";
+ Text[ chinese_simplified ] = "¼ÆËã Chi ƽ·½µÄ¶ÀÁ¢ÐÔ¼ìÑéÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí Ýëåã÷ï áíåîáñôçóßáò ôïõ ÷-ôåôñáãþíïõ.";
+ Text[ korean ] = "Ä«ÀÌ Á¦°ö µ¶¸³ Å×½ºÆ®¸¦ »êÃâÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Chi-kare baðýmsýzlýk deneyini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_CHITEST );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_B" ;
+ Text [ english ] = "actual_range" ;
+ Text [ norwegian ] = "Daten B" ;
+ Text [ italian ] = "dati_B" ;
+ Text [ portuguese_brazilian ] = "Daten B" ;
+ Text [ portuguese ] = "Dados_B" ;
+ Text [ finnish ] = "Daten B" ;
+ Text [ danish ] = "Observeret_værdi" ;
+ Text [ french ] = "Données_O" ;
+ Text [ swedish ] = "data_B" ;
+ Text [ dutch ] = "Gegevens_B" ;
+ Text [ spanish ] = "Datos_B" ;
+ Text [ english_us ] = "Data_B" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_B";
+ Text[ russian ] = "Äàííûå_B";
+ Text[ polish ] = "zakres_bie¿¹cy";
+ Text[ japanese ] = "ŽÀ‘ª’l”͈Í";
+ Text[ chinese_traditional ] = "data_B";
+ Text[ arabic ] = "ÈíÇäÇÊ_B";
+ Text[ dutch ] = "Gegevens_B";
+ Text[ chinese_simplified ] = "Êý¾Ý_B";
+ Text[ greek ] = "ÄåäïìÝíá_Â";
+ Text[ korean ] = "µ¥ÀÌÅÍ_B";
+ Text[ turkish ] = "Veri_B";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der beobachteten Daten." ;
+ Text [ english ] = "is the range of data that contains observations to test against expected values." ;
+ Text [ norwegian ] = "Die Matrix der beobachteten Daten." ;
+ Text [ italian ] = "è l'intervallo di dati contenente le osservazioni da confrontare con i valori attesi." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der beobachteten Daten." ;
+ Text [ portuguese ] = "é o intervalo de dados que contém observações para serem comparadas com os valores esperados." ;
+ Text [ finnish ] = "Die Matrix der beobachteten Daten." ;
+ Text [ danish ] = "Matrixen med de observerede værdier." ;
+ Text [ french ] = "La plage des données observées." ;
+ Text [ swedish ] = "Matrisen för observerade data." ;
+ Text [ dutch ] = "De matrix van de waargenomen gegevens." ;
+ Text [ spanish ] = "es el área de datos que contiene observaciones para probar frente a valores esperados." ;
+ Text [ english_us ] = "The observed data array." ;
+ Text[ chinese_simplified ] = "º¬¹Û²ìÊý¾ÝµÄÐÐÁС£";
+ Text[ russian ] = "Äèàïàçîí, ñîäåðæàùèé íàáëþäåíèÿ, ïîäëåæàùèå ñðàâíåíèþ ñ îæèäàåìûìè çíà÷åíèÿìè.";
+ Text[ polish ] = "Macierz obserwowanych danych.";
+ Text[ japanese ] = "Šú‘Ò’l‚ɑ΂·‚錟’è‚ÌŽÀ‘ª’l‚ª“ü—Í‚³‚ê‚Ä‚¢‚éƒf[ƒ^”͈͂ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "§tÆ[¹î¼Æ¾Úªº¦æ¦C¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÈíÇäÇÊ ÇáÊí Êã ãÔÇåÏÊåÇ.";
+ Text[ dutch ] = "De matrix van de waargenomen gegevens.";
+ Text[ chinese_simplified ] = "º¬¹Û²ìÊý¾ÝµÄÐÐÁС£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí ðáñáôÞñçóçò.";
+ Text[ korean ] = "°üÃøµÈ µ¥ÀÌÅÍÀÇ Çà·Ä";
+ Text[ turkish ] = "Ýzlenen deðerlerin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_E" ;
+ Text [ english ] = "expected_range" ;
+ Text [ norwegian ] = "Daten E" ;
+ Text [ italian ] = "dati_E" ;
+ Text [ portuguese_brazilian ] = "Daten E" ;
+ Text [ portuguese ] = "Dados_E" ;
+ Text [ finnish ] = "Daten E" ;
+ Text [ danish ] = "Forventet_værdi" ;
+ Text [ french ] = "Données_P" ;
+ Text [ swedish ] = "data_F" ;
+ Text [ dutch ] = "Gegevens_E" ;
+ Text [ spanish ] = "Datos_E" ;
+ Text [ english_us ] = "data_E" ;
+ Text[ chinese_simplified ] = "data_E";
+ Text[ russian ] = "Äàííûå_Å";
+ Text[ polish ] = "zakres_przewidywany";
+ Text[ japanese ] = "Šú‘Ò’l”͈Í";
+ Text[ chinese_traditional ] = "data_E";
+ Text[ arabic ] = "ÈíÇäÇÊ_E";
+ Text[ dutch ] = "Gegevens_E";
+ Text[ chinese_simplified ] = "data_E";
+ Text[ greek ] = "expected_range";
+ Text[ korean ] = "µ¥ÀÌÅÍ_E";
+ Text[ turkish ] = "Veri_E";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der erwarteten Daten." ;
+ Text [ english ] = "is the range of data that contains the ratio of the product of row totals and column totals to the grand total." ;
+ Text [ norwegian ] = "Die Matrix der erwarteten Daten." ;
+ Text [ italian ] = "è l'intervallo di dati contenente la proporzione del prodotto dei totali di riga e di colonna per il totale complessivo." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der erwarteten Daten." ;
+ Text [ portuguese ] = "é o intervalo de dados que contém a proporção entre o produto dos totais das linhas e das colunas em relação à soma total." ;
+ Text [ finnish ] = "Die Matrix der erwarteten Daten." ;
+ Text [ danish ] = "Matrixen med de forventede værdier." ;
+ Text [ french ] = "La plage des données prévues." ;
+ Text [ swedish ] = "Matrisen för förväntade data." ;
+ Text [ dutch ] = "De matrix van de verwachte gegevens." ;
+ Text [ spanish ] = "es el área de datos que contiene los valores esperados." ;
+ Text [ english_us ] = "The expected data array." ;
+ Text[ chinese_simplified ] = "º¬ÆÚ´ýÊý¾ÝµÄÐÐÁС£";
+ Text[ russian ] = "Äèàïàçîí, ñîäåðæàùèé îòíîøåíèå ïðîèçâåäåíèé èòîãîâ ïî ñòðîêàì è ñòîëáöàì ê îáùåìó èòîãó.";
+ Text[ polish ] = "Macierz oczekiwanych danych.";
+ Text[ japanese ] = "Šú‘Ò’l‚ª“ü—Í‚³‚ê‚Ä‚¢‚éƒf[ƒ^”͈͂ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "§t´Á«Ýªº¼Æ¾Úªº¦æ¦C¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÈíÇäÇÊ ÇáãÊæÞÚÉ.";
+ Text[ dutch ] = "De matrix van de verwachte gegevens.";
+ Text[ chinese_simplified ] = "º¬ÆÚ´ýÊý¾ÝµÄÐÐÁС£";
+ Text[ greek ] = "Ç ìÞôñá ôùí áíáìåíüìåíùí äåäïìÝíùí.";
+ Text[ korean ] = "¿¹»óµÇ´Â µ¥ÀÌÅÍ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Beklenen deðerlerin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function FTEST #*=-
+ Resource SC_OPCODE_F_TEST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den F-Varianztest." ;
+ Text [ english ] = "Returns the result of a F-test." ;
+ Text [ norwegian ] = "Berechnet den F-Varianztest." ;
+ Text [ italian ] = "Restituisce il test di varianza F." ;
+ Text [ portuguese_brazilian ] = "Berechnet den F-Varianztest." ;
+ Text [ portuguese ] = "Devolve o resultado de um teste F." ;
+ Text [ finnish ] = "Berechnet den F-Varianztest." ;
+ Text [ danish ] = "Returnerer F-varianstesten." ;
+ Text [ french ] = "Renvoie le résultat d'un test F." ;
+ Text [ swedish ] = "Beräknar F-varianstestet." ;
+ Text [ dutch ] = "Berekent de F-variantietest" ;
+ Text [ spanish ] = "Devuelve el resultado de una prueba F." ;
+ Text [ english_us ] = "Calculates the F test." ;
+ Text[ chinese_simplified ] = "¼ÆËã F - ·½²î¼ìÑéµÄ½á¹û¡£";
+ Text[ russian ] = "Âîçâðàùàåò ðåçóëüòàò F-òåñòà.";
+ Text[ polish ] = "Podaje wynik testu F.";
+ Text[ japanese ] = "FŒŸ’è‚ÌŒ‹‰Ê‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ F - ¤è®tÀËÅ窺µ²ªG¡C";
+ Text[ arabic ] = "ÊÍÓÈ äÊíÌÉ ÇÎÊÈÇÑ F.";
+ Text[ dutch ] = "Berekent de F-variantietest";
+ Text[ chinese_simplified ] = "¼ÆËã F - ·½²î¼ìÑéµÄ½á¹û¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí Ýëåã÷ï äéáêýìáíóçò F.";
+ Text[ korean ] = "F Å×½ºÆ® °è»ê";
+ Text[ turkish ] = "F varyans deneyini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_FTEST );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_1" ;
+ Text [ english ] = "array 1" ;
+ Text [ norwegian ] = "Daten 1" ;
+ Text [ italian ] = "dati_1" ;
+ Text [ portuguese_brazilian ] = "Daten 1" ;
+ Text [ portuguese ] = "Dados_1" ;
+ Text [ finnish ] = "Daten 1" ;
+ Text [ danish ] = "Data_1" ;
+ Text [ french ] = "Données_1" ;
+ Text [ swedish ] = "data_1" ;
+ Text [ dutch ] = "Gegevens_1" ;
+ Text [ spanish ] = "Datos_1" ;
+ Text [ english_us ] = "data_1" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_1";
+ Text[ russian ] = "Äàííûå_1";
+ Text[ polish ] = "Dane_1";
+ Text[ japanese ] = "”z—ñ1";
+ Text[ chinese_traditional ] = "data_1";
+ Text[ arabic ] = "ÈíÇäÇÊ_1";
+ Text[ dutch ] = "Gegevens_1";
+ Text[ chinese_simplified ] = "Êý¾Ý_1";
+ Text[ greek ] = "ÄåäïìÝíá_1";
+ Text[ korean ] = "µ¥ÀÌÅÍ_1";
+ Text[ turkish ] = "Veri_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix des ersten Datensatzes." ;
+ Text [ english ] = "is the first array or range of data." ;
+ Text [ norwegian ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ italian ] = "è la prima matrice o il primo intervallo di dati." ;
+ Text [ portuguese_brazilian ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ portuguese ] = "é a primeira matriz ou intervalo de dados." ;
+ Text [ finnish ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ danish ] = "Den første dataposts matrix." ;
+ Text [ french ] = "La matrice du premier enregistrement." ;
+ Text [ swedish ] = "Den första datapostens matris." ;
+ Text [ dutch ] = "De matrix van de eerste record." ;
+ Text [ spanish ] = "es la primera matriz o área de datos." ;
+ Text [ english_us ] = "The first record array." ;
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Ïåðâûé ìàññèâ èëè äèàïàçîí äàííûõ.";
+ Text[ polish ] = "Macierz pierwszego zbioru danych.";
+ Text[ japanese ] = "•ªÍ‚·‚é1‚–ڂÌÃÞ°À‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "²Ä¤@­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ Ãæ ÇáäØÇÞ ÇáÃæá ãä ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "De matrix van de eerste record.";
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôçò ðñþôçò åããñáöÞò.";
+ Text[ korean ] = "ù µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Birinci veri kümesinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_2" ;
+ Text [ english ] = "array 2" ;
+ Text [ norwegian ] = "Daten 2" ;
+ Text [ italian ] = "dati_2" ;
+ Text [ portuguese_brazilian ] = "Daten 2" ;
+ Text [ portuguese ] = "Dados_2" ;
+ Text [ finnish ] = "Daten 2" ;
+ Text [ danish ] = "Data_2" ;
+ Text [ french ] = "Données_2" ;
+ Text [ swedish ] = "data_2" ;
+ Text [ dutch ] = "Gegevens_2" ;
+ Text [ spanish ] = "Datos_2" ;
+ Text [ english_us ] = "data_2" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_2";
+ Text[ russian ] = "Äàííûå_2";
+ Text[ polish ] = "Dane_2";
+ Text[ japanese ] = "”z—ñ2";
+ Text[ chinese_traditional ] = "data_2";
+ Text[ arabic ] = "ÈíÇäÇÊ_2";
+ Text[ dutch ] = "Gegevens_2";
+ Text[ chinese_simplified ] = "Êý¾Ý_2";
+ Text[ greek ] = "ÄåäïìÝíá_2";
+ Text[ korean ] = "µ¥ÀÌÅÍ_2";
+ Text[ turkish ] = "Veri_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix des zweiten Datensatzes." ;
+ Text [ english ] = "is the second array or range of data." ;
+ Text [ norwegian ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ italian ] = "è la seconda matrice o il secondo intervallo di dati." ;
+ Text [ portuguese_brazilian ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ portuguese ] = "é a segunda matriz ou intervalo de dados." ;
+ Text [ finnish ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ danish ] = "Den anden dataposts matrix." ;
+ Text [ french ] = "La matrice du deuxième enregistrement." ;
+ Text [ swedish ] = "Den andra datapostens matris." ;
+ Text [ dutch ] = "De matrix van de tweede record." ;
+ Text [ spanish ] = "es la segunda matriz o área de datos." ;
+ Text [ english_us ] = "The second record array." ;
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Âòîðîé ìàññèâ èëè äèàïàçîí äàííûõ.";
+ Text[ polish ] = "Macierz drugiego zbioru danych.";
+ Text[ japanese ] = "•ªÍ‚·‚é2‚–ڂÌÃÞ°À‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "²Ä¤G­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ Ãæ ÇáäØÇÞ ÇáËÇäí ãä ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "De matrix van de tweede record.";
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôçò äåýôåñçò åããñáöÞò.";
+ Text[ korean ] = "µÑ° µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýkinci veri kümesinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TTEST #*=-
+ Resource SC_OPCODE_T_TEST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den T-Test." ;
+ Text [ english ] = "Returns the probability associated with a Student's t-Test." ;
+ Text [ norwegian ] = "Berechnet den T-Test." ;
+ Text [ italian ] = "Restituisce il test T." ;
+ Text [ portuguese_brazilian ] = "Berechnet den T-Test." ;
+ Text [ portuguese ] = "Devolve a probabilidade associada a um teste T." ;
+ Text [ finnish ] = "Berechnet den T-Test." ;
+ Text [ danish ] = "Beregner t-test." ;
+ Text [ french ] = "Calcule le test T." ;
+ Text [ swedish ] = "Beräknar t-testet." ;
+ Text [ dutch ] = "Berekent de Student T-toets." ;
+ Text [ spanish ] = "Devuelve la probabilidad asociada con la prueba t de Student." ;
+ Text [ english_us ] = "Calculates the T test." ;
+ Text[ chinese_simplified ] = "¼ÆËãÓëѧÉúÊÏT-¼ìÑéÏà¹ØµÄ¸ÅÂÊ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò âåðîÿòíîñòü, ñîîòâåòñòâóþùóþ t-òåñòó Ñòüþäåíòà.";
+ Text[ polish ] = "Wyznacza rozk³ad t Studenta.";
+ Text[ japanese ] = "t•ª•z‚É]‚¤Šm—¦‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ»P¾Ç¥Í¤óT-ÀËÅç¬ÛÃöªº·§²v¡C";
+ Text[ arabic ] = "ÊÍÓÈ t-Test.";
+ Text[ dutch ] = "Berekent de Student T-toets.";
+ Text[ chinese_simplified ] = "¼ÆËãÓëѧÉúÊÏT-¼ìÑéÏà¹ØµÄ¸ÅÂÊ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí Ýëåã÷ï T.";
+ Text[ korean ] = "T Å×½ºÆ® °è»ê";
+ Text[ turkish ] = "T deneyini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_TTEST );
+ 4; 0; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_1" ;
+ Text [ english ] = "array 1" ;
+ Text [ norwegian ] = "Daten 1" ;
+ Text [ italian ] = "dati_1" ;
+ Text [ portuguese_brazilian ] = "Daten 1" ;
+ Text [ portuguese ] = "Dados_1" ;
+ Text [ finnish ] = "Daten 1" ;
+ Text [ danish ] = "Data_1" ;
+ Text [ french ] = "Données_1" ;
+ Text [ swedish ] = "data_1" ;
+ Text [ dutch ] = "Gegevens_1" ;
+ Text [ spanish ] = "Datos_1" ;
+ Text [ english_us ] = "data_1" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_1";
+ Text[ russian ] = "Äàííûå_1";
+ Text[ polish ] = "Dane_1";
+ Text[ japanese ] = "”z—ñ1";
+ Text[ chinese_traditional ] = "data_1";
+ Text[ arabic ] = "ÈíÇäÇÊ_1";
+ Text[ dutch ] = "Gegevens_1";
+ Text[ chinese_simplified ] = "Êý¾Ý_1";
+ Text[ greek ] = "ÄåäïìÝíá_1";
+ Text[ korean ] = "µ¥ÀÌÅÍ_1";
+ Text[ turkish ] = "Veri_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix des ersten Datensatzes." ;
+ Text [ english ] = "is the first data set." ;
+ Text [ norwegian ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ italian ] = "è il primo insieme di dati." ;
+ Text [ portuguese_brazilian ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ portuguese ] = "é o primeiro conjunto de dados." ;
+ Text [ finnish ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ danish ] = "Den første dataposts matrix." ;
+ Text [ french ] = "La matrice du premier enregistrement." ;
+ Text [ swedish ] = "Den första datapostens matris." ;
+ Text [ dutch ] = "De matrix van de eerste record.." ;
+ Text [ spanish ] = "es el primer conjunto de datos." ;
+ Text [ english_us ] = "The first record array." ;
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ ïåðâîãî ìíîæåñòâà äàííûõ.";
+ Text[ polish ] = "Macierz pierwszego zbioru danych.";
+ Text[ japanese ] = "ˆê•û‚Ì‘g‚ÌÃÞ°À‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "²Ä¤@­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ÇáÈíÇäÇÊ ÇáÃæáì.";
+ Text[ dutch ] = "De matrix van de eerste record..";
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôçò ðñþôçò åããñáöÞò.";
+ Text[ korean ] = "ù° µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Birinci veri kümesinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_2" ;
+ Text [ english ] = "array 2" ;
+ Text [ norwegian ] = "Daten 2" ;
+ Text [ italian ] = "dati_2" ;
+ Text [ portuguese_brazilian ] = "Daten 2" ;
+ Text [ portuguese ] = "Dados_2" ;
+ Text [ finnish ] = "Daten 2" ;
+ Text [ danish ] = "Data_2" ;
+ Text [ french ] = "Données_2" ;
+ Text [ swedish ] = "data_2" ;
+ Text [ dutch ] = "Gegevens_2" ;
+ Text [ spanish ] = "Datos_2" ;
+ Text [ english_us ] = "data_2" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_2";
+ Text[ russian ] = "Äàííûå_2";
+ Text[ polish ] = "Dane_2";
+ Text[ japanese ] = "”z—ñ2";
+ Text[ chinese_traditional ] = "data_2";
+ Text[ arabic ] = "ÈíÇäÇÊ_2";
+ Text[ dutch ] = "Gegevens_2";
+ Text[ chinese_simplified ] = "Êý¾Ý_2";
+ Text[ greek ] = "ÄåäïìÝíá_2";
+ Text[ korean ] = "µ¥ÀÌÅÍ_2";
+ Text[ turkish ] = "Veri_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix des zweiten Datensatzes." ;
+ Text [ english ] = "is the second data set." ;
+ Text [ norwegian ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ italian ] = "è il secondo insieme di dati." ;
+ Text [ portuguese_brazilian ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ portuguese ] = "é o segundo conjunto de dados." ;
+ Text [ finnish ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ danish ] = "Den anden dataposts matrix." ;
+ Text [ french ] = "La matrice du deuxième enregistrement." ;
+ Text [ swedish ] = "Den andra datapostens matris." ;
+ Text [ dutch ] = "De matrix van de tweede record." ;
+ Text [ spanish ] = "es el segundo conjunto de datos." ;
+ Text [ english_us ] = "The second record array." ;
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ âòîðîãî ìíîæåñòâà äàííûõ.";
+ Text[ polish ] = "Macierz drugiego zbioru danych.";
+ Text[ japanese ] = "‚à‚¤ˆê•û‚Ì‘g‚ÌÃÞ°À‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "²Ä¤G­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ÇáÈíÇäÇÊ ÇáËÇäíÉ.";
+ Text[ dutch ] = "De matrix van de tweede record.";
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôçò äåýôåñçò åããñáöÞò.";
+ Text[ korean ] = "µÑ° µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýkinci veri kümesinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Modus" ;
+ Text [ english ] = "tails" ;
+ Text [ norwegian ] = "Modus" ;
+ Text [ italian ] = "modo" ;
+ Text [ portuguese_brazilian ] = "Modus" ;
+ Text [ portuguese ] = "Modo" ;
+ Text [ finnish ] = "Modus" ;
+ Text [ danish ] = "Modus" ;
+ Text [ french ] = "Mode" ;
+ Text [ swedish ] = "läge" ;
+ Text [ dutch ] = "Modus" ;
+ Text [ spanish ] = "Modo" ;
+ Text [ english_us ] = "mode" ;
+ Text[ chinese_simplified ] = "Tails";
+ Text[ russian ] = "Õâîñòû";
+ Text[ polish ] = "Tryb";
+ Text[ japanese ] = "”ö•”";
+ Text[ chinese_traditional ] = "Tails";
+ Text[ arabic ] = "Tails";
+ Text[ dutch ] = "Modus";
+ Text[ chinese_simplified ] = "Tails";
+ Text[ greek ] = "ÊáôÜóôáóç";
+ Text[ korean ] = "¸ðµå";
+ Text[ turkish ] = "Kip";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Modus = 1 berechnet den einseitigen Test, Modus = 2 den zweiseitigen." ;
+ Text [ english ] = "specifies the number of distribution tails." ;
+ Text [ norwegian ] = "Modus = 1 berechnet den einseitigen Test, Modus = 2 den zweiseitigen." ;
+ Text [ italian ] = "specifica il numero di code di distribuzione." ;
+ Text [ portuguese_brazilian ] = "Modus = 1 berechnet den einseitigen Test, Modus = 2 den zweiseitigen." ;
+ Text [ portuguese ] = "determina o modo de distribuição a devolver: 1 = unilateral; 2 = bilateral." ;
+ Text [ finnish ] = "Modus = 1 berechnet den einseitigen Test, Modus = 2 den zweiseitigen." ;
+ Text [ danish ] = "Modus = 1 beregner en ensidet test, Modus = 2 en tosidet." ;
+ Text [ french ] = "Mode = 1 calcule le test unilatéral ; mode = 2 calcule le test bilatéral." ;
+ Text [ swedish ] = "läge = 1 beräknar det ensidiga testet, läge = 2 det tvåsidiga." ;
+ Text [ dutch ] = "Modus = 1 berekent de eenzijdige test, modus = 2 de tweezijdige." ;
+ Text [ spanish ] = "especifica el número de colas de distribución." ;
+ Text [ english_us ] = "Mode specifies the number of distribution tails to return. 1= one-tailed, 2 = two-tailed distribution" ;
+ Text[ chinese_simplified ] = "tails = 1 ¼ÆË㵥β·Ö²¼£¬tails = 2 ¼ÆËã˫β·Ö²¼¡£";
+ Text[ russian ] = "Åñëè õâîñòû = 1, òî ôóíêöèÿ ÒÒÅÑÒ èñïîëüçóåò îäíîñòîðîííåå ðàñïðåäåëåíèå. Åñëè õâîñòû = 2, òî ôóíêöèÿ ÒÒÅÑÒ èñïîëüçóåò äâóñòîðîííåå ðàñïðåäåëåíèå.";
+ Text[ polish ] = "Tryb = 1 oblicza jednoœladowy test, Tryb = 2 dwuœladowy.";
+ Text[ japanese ] = "”ö•”=1‚É‚·‚é‚ƕБ¤•ª•z‚Ì’l‚ªA”ö•”= 2‚É‚·‚é‚Æ—¼‘¤•ª•z‚Ì’l‚ªŒvŽZ‚³‚ê‚Ü‚·B";
+ Text[ chinese_traditional ] = "tails = 1 ­pºâ³æ§À¤À§G¡Mtails = 2 ­pºâÂù§À¤À§G¡C";
+ Text[ arabic ] = "ÊõÍÏÏ ÚÏÏ ÃØÑÇÝ ÇáÊæÒíÚ ááÅÑÌÇÚº ÊæÒíÚ ÃÍÇÏí ÇáØÑÝ = 1º ÊæÒíÚ ËäÇÆí ÇáØÑÝ = 2.";
+ Text[ dutch ] = "Modus = 1 berekent de eenzijdige test, modus = 2 de tweezijdige.";
+ Text[ chinese_simplified ] = "tails = 1 ¼ÆË㵥β·Ö²¼£¬tails = 2 ¼ÆËã˫β·Ö²¼¡£";
+ Text[ greek ] = "Ôýðïò =1 õðïëïãßæåé ôïí ìïíüðëåõñï Ýëåã÷ï Ôýðïò = 2 ôïí äßðëåõñï Ýëåã÷ï.";
+ Text[ korean ] = "Mode = 1 ÇѸéÀÇ Å×½ºÆ®¸¦, Mode = 2´Â µÎ¸éÀÇ Å×½ºÆ®¸¦ °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Kip = 1, tek kuyruklu deneyi, Kip = 2 ise iki kuyruklu deneyi hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Typ" ;
+ Text [ english ] = "type" ;
+ Text [ norwegian ] = "Typ" ;
+ Text [ italian ] = "tipo" ;
+ Text [ portuguese_brazilian ] = "Typ" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "Typ" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "typ" ;
+ Text [ dutch ] = "Type" ;
+ Text [ spanish ] = "tipo" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "Type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Ží—Þ";
+ Text[ chinese_traditional ] = "Type";
+ Text[ arabic ] = "ÇáäæÚ";
+ Text[ dutch ] = "Type";
+ Text[ chinese_simplified ] = "Type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ÇüÅÂ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Der Typ des T-Tests." ;
+ Text [ english ] = "is the kind of t-test to perform." ;
+ Text [ norwegian ] = "Der Typ des T-Tests." ;
+ Text [ italian ] = "è il tipo di test t da eseguire." ;
+ Text [ portuguese_brazilian ] = "Der Typ des T-Tests." ;
+ Text [ portuguese ] = "é o tipo de teste T a ser executado." ;
+ Text [ finnish ] = "Der Typ des T-Tests." ;
+ Text [ danish ] = "T-testens type." ;
+ Text [ french ] = "Le type du test T." ;
+ Text [ swedish ] = "Typen av t-test." ;
+ Text [ dutch ] = "Het type T-test." ;
+ Text [ spanish ] = "es el tipo de prueba t que se realiza." ;
+ Text [ english_us ] = "The type of the T test." ;
+ Text[ chinese_simplified ] = "T-¼ìÑéµÄÀàÐÍ¡£";
+ Text[ russian ] = "Òèï èñïîëíÿåìîãî t-òåñòà.";
+ Text[ polish ] = "Typ testu T.";
+ Text[ japanese ] = "ŽÀs‚·‚étŒŸ’è‚ÌŽí—ÞB";
+ Text[ chinese_traditional ] = "T-ÀËÅ窺Ãþ«¬¡C";
+ Text[ arabic ] = "äæÚ t-test.";
+ Text[ dutch ] = "Het type T-test.";
+ Text[ chinese_simplified ] = "T-¼ìÑéµÄÀàÐÍ¡£";
+ Text[ greek ] = "Ï ôýðïò ôçò äïêéìÞò Ô (T test).";
+ Text[ korean ] = "T Å×½ºÆ®ÀÇ À¯ÇüÀÔ´Ï´Ù.";
+ Text[ turkish ] = "T deneyi tipi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function BESTIMMTHEITSMASS #*=-
+ Resource SC_OPCODE_RSQ
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den Pearsonschen Korrelationskoeffizienten in quadrierter Form." ;
+ Text [ english ] = "Returns the square of the Pearson product moment correlatin coefficient through data points in known_y's and known_x's." ;
+ Text [ norwegian ] = "Berechnet den Pearsonschen Korrelationskoeffizienten in quadrierter Form." ;
+ Text [ italian ] = "Restituisce il quadrato del coefficiente di correlazione di Pearson." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Pearsonschen Korrelationskoeffizienten in quadrierter Form." ;
+ Text [ portuguese ] = "Devolve o valor R quadrado para uma linha de regressão criada com os dados dos argumentos matriz_x e matriz_y." ;
+ Text [ finnish ] = "Berechnet den Pearsonschen Korrelationskoeffizienten in quadrierter Form." ;
+ Text [ danish ] = "Beregner kvadratet på Pearsons korrelationskoefficient." ;
+ Text [ french ] = "Calcule le coefficient de corrélation de Pearson au carré." ;
+ Text [ swedish ] = "Beräknar den Pearsonska korrelationskoefficenten i kvadrerad form." ;
+ Text [ dutch ] = "Berekent de correlatiecoëfficiënt van Peorson in kwadraatvorm." ;
+ Text [ spanish ] = "Devuelve el valor R cuadrado para una línea de regresión lineal creada con los datos de los argumentos matriz_x y matriz_y." ;
+ Text [ english_us ] = "Returns the square of the Pearson product moment correlation coefficient." ;
+ Text[ chinese_simplified ] = "¼ÆËã Pearson ³Ë»ý¾ØÏà¹ØϵÊýµÄƽ·½¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êâàäðàò êîýôôèöèåíòà êîððåëÿöèè Ïèðñîíà ïî òî÷êàì äàííûõ.";
+ Text[ polish ] = "Wyznacza kwadrat chwilowego wspó³czynnika korelacji iloczynu Pearsona.";
+ Text[ japanese ] = "Ëß±¿Ý‚ÌÏ—¦‘ŠŠÖŒW”‚Ì’l‚ð2悵‚Ä•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ Pearson ­¼¿n¯x¬ÛÃö«Y¼Æªº¥­¤è¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÊÑÈíÚ ãÚÇãá Pearson ááÇÑÊÈÇØ ÇáÚÒæãí.";
+ Text[ dutch ] = "Berekent de correlatiecoëfficiënt van Peorson in kwadraatvorm.";
+ Text[ chinese_simplified ] = "¼ÆËã Pearson ³Ë»ý¾ØÏà¹ØϵÊýµÄƽ·½¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ôåôñÜãùíï ôïõ óõíôåëåóôÞ óõó÷Ýôéóçò ôïõ Pearson.";
+ Text[ korean ] = "Pearson ÀÇ Á¦°ö ¼ø°£ »ó°ü°è¼öÀÇ Á¦°öÀ» ¹Ýȯ .";
+ Text[ turkish ] = "Pearson korelasyon katsayýsýnýn karesini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_BESTIMMTHEITSMASS );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_Y" ;
+ Text [ english ] = "known_y's" ;
+ Text [ norwegian ] = "Daten Y" ;
+ Text [ italian ] = "dati_y" ;
+ Text [ portuguese_brazilian ] = "Daten Y" ;
+ Text [ portuguese ] = "Dados_Y" ;
+ Text [ finnish ] = "Daten Y" ;
+ Text [ danish ] = "Data_Y" ;
+ Text [ french ] = "Données_Y" ;
+ Text [ swedish ] = "data_y" ;
+ Text [ dutch ] = "Gegevens_Y" ;
+ Text [ spanish ] = "Datos_Y" ;
+ Text [ english_us ] = "data_Y" ;
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ russian ] = "Èçâ_äàííûå_Y";
+ Text[ polish ] = "Dane_Y";
+ Text[ japanese ] = "Šù’m‚ÌY";
+ Text[ chinese_traditional ] = "data_Y";
+ Text[ arabic ] = "ÈíÇäÇÊ_Y";
+ Text[ dutch ] = "Gegevens_Y";
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ greek ] = "ÄåäïìÝíá_Y";
+ Text[ korean ] = "µ¥ÀÌÅÍ_Y";
+ Text[ turkish ] = "Veri_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Y-Daten." ;
+ Text [ english ] = "is an array or range of data points." ;
+ Text [ norwegian ] = "Die Matrix der Y-Daten." ;
+ Text [ italian ] = "è una matrice o un intervallo di valori (Y)." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
+ Text [ portuguese ] = "é a matriz dos dados y." ;
+ Text [ finnish ] = "Die Matrix der Y-Daten." ;
+ Text [ danish ] = "Matrixen med Y-data." ;
+ Text [ french ] = "La matrice des données Y." ;
+ Text [ swedish ] = "Matrisen med y-data." ;
+ Text [ dutch ] = "De matrix van de Y-gegevens" ;
+ Text [ spanish ] = "es una matriz o área de puntos de datos." ;
+ Text [ english_us ] = "The Y data array." ;
+ Text[ chinese_simplified ] = "Y - Êý×é»òÊý¾ÝµãÇøÓò¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ Y.";
+ Text[ polish ] = "Macierz danych Y.";
+ Text[ japanese ] = "Šù’m‚Ìy‚ÌÃÞ°À‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔÍ.";
+ Text[ chinese_traditional ] = "Y - ¼Æ²Õ©Î¼Æ¾ÚÂI°Ï°ì¡C";
+ Text[ arabic ] = "ÕÝíÝ Ãæ äØÇÞ ãä äÞÇØ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "De matrix van de Y-gegevens";
+ Text[ chinese_simplified ] = "Y - Êý×é»òÊý¾ÝµãÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí Y.";
+ Text[ korean ] = "Y µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Y verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_X" ;
+ Text [ english ] = "known_x's" ;
+ Text [ norwegian ] = "Daten X" ;
+ Text [ italian ] = "dati_x" ;
+ Text [ portuguese_brazilian ] = "Daten X" ;
+ Text [ portuguese ] = "Dados_X" ;
+ Text [ finnish ] = "Daten X" ;
+ Text [ danish ] = "Data_X" ;
+ Text [ french ] = "Données_X" ;
+ Text [ swedish ] = "data_x" ;
+ Text [ dutch ] = "Gegevens_X" ;
+ Text [ spanish ] = "Datos_X" ;
+ Text [ english_us ] = "data_X" ;
+ Text[ chinese_simplified ] = "data_X";
+ Text[ russian ] = "Èçâ_äàííûå_X";
+ Text[ polish ] = "Dane_X";
+ Text[ japanese ] = "Šù’m‚ÌX";
+ Text[ chinese_traditional ] = "data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X";
+ Text[ dutch ] = "Gegevens_X";
+ Text[ chinese_simplified ] = "data_X";
+ Text[ greek ] = "ÄåäïìÝíá_×";
+ Text[ korean ] = "µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der X-Daten." ;
+ Text [ english ] = "is an array or range of data points." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten." ;
+ Text [ italian ] = "è una matrice o un intervallo di valori (X)." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
+ Text [ portuguese ] = "é a matriz dos dados x." ;
+ Text [ finnish ] = "Die Matrix der X-Daten." ;
+ Text [ danish ] = "Matrixen med X-data." ;
+ Text [ french ] = "La matrice des données X." ;
+ Text [ swedish ] = "Matrisen med x-data." ;
+ Text [ dutch ] = "De matrix van de X-gegevens" ;
+ Text [ spanish ] = "es una matriz o área de puntos de datos." ;
+ Text [ english_us ] = "The X data array." ;
+ Text[ chinese_simplified ] = "X - Êý×é»òÊý¾ÝµãÇøÓò¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ X.";
+ Text[ polish ] = "Macierz danych X.";
+ Text[ japanese ] = "Šù’m‚Ìx‚ðŠÜ‚Þ”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "X - ¼Æ²Õ©Î¼Æ¾ÚÂI°Ï°ì¡C";
+ Text[ arabic ] = "ÕÝíÝ Ãæ äØÇÞ ãä äÞÇØ ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "De matrix van de X-gegevens";
+ Text[ chinese_simplified ] = "X - Êý×é»òÊý¾ÝµãÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí X.";
+ Text[ korean ] = "X µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "X verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ACHSENABSCHNITT #*=-
+ Resource SC_OPCODE_INTERCEPT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den Schnittpunkt der Regressionsgeraden mit der Y-Achse." ;
+ Text [ english ] = "Returns the intercept of the linear regression line through data points in known_x's and known_y's." ;
+ Text [ norwegian ] = "Berechnet den Schnittpunkt der Regressionsgeraden mit der Y-Achse." ;
+ Text [ italian ] = "Restituisce il punto di intersezione della retta di regressione con l'asse Y." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Schnittpunkt der Regressionsgeraden mit der Y-Achse." ;
+ Text [ portuguese ] = "Devolve a intercepção da regressão linear com o eixo Y." ;
+ Text [ finnish ] = "Berechnet den Schnittpunkt der Regressionsgeraden mit der Y-Achse." ;
+ Text [ danish ] = "Beregner skæringspunktet på y-aksen i en lineær regression." ;
+ Text [ french ] = "Renvoie le point d'intersection de la droite de régression et de l'axe Y." ;
+ Text [ swedish ] = "Beräknar skärningspunkten för den linjära regressionslinjen med y-axeln." ;
+ Text [ dutch ] = "Berekent het snijpunt met de Y-as van de lineaire regressielijn" ;
+ Text [ spanish ] = "Devuelve la intersección del eje de ordenadas con la recta de regresión lineal." ;
+ Text [ english_us ] = "Returns the intercept of the linear regression line and the Y axis." ;
+ Text[ chinese_simplified ] = "¼ÆËãÏßÐԻعéÏßÓë Y ÖáµÄ½»µã¡£";
+ Text[ russian ] = "Âîçâðàùàåò îòðåçîê, îòñåêàåìûé íà îñè ëèíèåé ëèíåéíîé ðåãðåññèè.";
+ Text[ polish ] = "Oblicza punkt przeciêcia prostej regresji z osi¹ Y.";
+ Text[ japanese ] = "üŒ`‰ñ‹A’¼ü‚ÆyŽ²‚ªŒð‚í‚éؕЂðŒvŽZ‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ½u©Ê¦^Âk½u©MY¶bªº¥æÂI¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáäÞØÉ ÇáÊí íÊÞÇØÚ ÝíåÇ ÎØ ÇáÇäÍÏÇÑ ãÚ ãÍæÑ Õ.";
+ Text[ dutch ] = "Berekent het snijpunt met de Y-as van de lineaire regressielijn";
+ Text[ chinese_simplified ] = "¼ÆËãÏßÐԻعéÏßÓë Y ÖáµÄ½»µã¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï óçìåßï ôïìÞò ôçò åõèåßáò ðáëéíäñüìçóçò ìå ôïí Üîïíá Y.";
+ Text[ korean ] = "¼±Çü ȸ±Í¼± °ú Y ÃàÀÇ ±¸È¹À» ¹Ýȯ.";
+ Text[ turkish ] = "Regresyon doðrusunun Y ekseni ile kesiþme noktasýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_ACHSENABSCHNITT );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_Y" ;
+ Text [ english ] = "known_y's" ;
+ Text [ norwegian ] = "Daten Y" ;
+ Text [ italian ] = "dati_y" ;
+ Text [ portuguese_brazilian ] = "Daten Y" ;
+ Text [ portuguese ] = "Dados_Y" ;
+ Text [ finnish ] = "Daten Y" ;
+ Text [ danish ] = "Data_Y" ;
+ Text [ french ] = "Données_Y" ;
+ Text [ swedish ] = "data_y" ;
+ Text [ dutch ] = "Gegevens_Y" ;
+ Text [ spanish ] = "Datos_Y" ;
+ Text [ english_us ] = "data_Y" ;
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ russian ] = "Èçâ_çíà÷_y";
+ Text[ polish ] = "Dane_Y";
+ Text[ japanese ] = "Šù’m‚ÌY";
+ Text[ chinese_traditional ] = "data_Y";
+ Text[ arabic ] = "ÈíÇäÇÊ_Y";
+ Text[ dutch ] = "Gegevens_Y";
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ greek ] = "ÄåäïìÝíá_Y";
+ Text[ korean ] = "µ¥ÀÌÅÍ_Y";
+ Text[ turkish ] = "Veri_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Y-Daten." ;
+ Text [ english ] = "is the dependent set of observations or data." ;
+ Text [ norwegian ] = "Die Matrix der Y-Daten." ;
+ Text [ italian ] = "è l'insieme dipendente di osservazioni o di dati." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
+ Text [ portuguese ] = "é o conjunto dependente de observações ou dados." ;
+ Text [ finnish ] = "Die Matrix der Y-Daten." ;
+ Text [ danish ] = "Matrixen med Y-data." ;
+ Text [ french ] = "La matrice des données Y." ;
+ Text [ swedish ] = "Matrisen med y-data." ;
+ Text [ dutch ] = "De matrix van de Y-gegevens." ;
+ Text [ spanish ] = "representa la serie dependiente de observaciones o de datos." ;
+ Text [ english_us ] = "The Y data array." ;
+ Text[ chinese_simplified ] = "Y-Òò±äÁ¿Êý¾Ý×é¡£";
+ Text[ russian ] = "Çàâèñèìîå ìíîæåñòâî íàáëþäåíèé èëè äàííûõ..";
+ Text[ polish ] = "Macierz danych Y.";
+ Text[ japanese ] = "ŠÏ‘ª‚Ü‚½‚ÍÃÞ°À‚Ì]‘®”͈ÍB";
+ Text[ chinese_traditional ] = "Y-¦]Åܶq¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ÊÇÈÚÉ ãä ÇáÈíÇäÇÊ Ãæ ÇáãÔÇåÏÇÊ.";
+ Text[ dutch ] = "De matrix van de Y-gegevens.";
+ Text[ chinese_simplified ] = "Y-Òò±äÁ¿Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí Y.";
+ Text[ korean ] = "Y µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Y verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_X" ;
+ Text [ english ] = "known_x's" ;
+ Text [ norwegian ] = "Daten X" ;
+ Text [ italian ] = "dati_x" ;
+ Text [ portuguese_brazilian ] = "Daten X" ;
+ Text [ portuguese ] = "Dados_X" ;
+ Text [ finnish ] = "Daten X" ;
+ Text [ danish ] = "Data_X" ;
+ Text [ french ] = "Données_X" ;
+ Text [ swedish ] = "data_x" ;
+ Text [ dutch ] = "Gegevens_X" ;
+ Text [ spanish ] = "Datos_X" ;
+ Text [ english_us ] = "data_X" ;
+ Text[ chinese_simplified ] = "data_X";
+ Text[ russian ] = "Èçâ_çíà÷_x";
+ Text[ polish ] = "Dane_X";
+ Text[ japanese ] = "Šù’m‚ÌX";
+ Text[ chinese_traditional ] = "data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X";
+ Text[ dutch ] = "Gegevens_X";
+ Text[ chinese_simplified ] = "data_X";
+ Text[ greek ] = "ÄåäïìÝíá_×";
+ Text[ korean ] = "µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der X-Daten." ;
+ Text [ english ] = "is the independent set of observations or data." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten." ;
+ Text [ italian ] = "è l'insieme indipendente di osservazioni o di dati." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
+ Text [ portuguese ] = "é o conjunto independente de observações ou dados." ;
+ Text [ finnish ] = "Die Matrix der X-Daten." ;
+ Text [ danish ] = "Matrixen med X-data." ;
+ Text [ french ] = "La matrice des données X." ;
+ Text [ swedish ] = "Matrisen med x-data." ;
+ Text [ dutch ] = "De matrix van de X-gegevens." ;
+ Text [ spanish ] = "representa la serie independiente de observaciones o de datos." ;
+ Text [ english_us ] = "The X data array." ;
+ Text[ chinese_simplified ] = "X-×Ô±äÁ¿Êý¾Ý×é¡£";
+ Text[ russian ] = "Íåçàâèñèìîå ìíîæåñòâî íàáëþäåíèé èëè äàííûõ.";
+ Text[ polish ] = "Macierz danych X.";
+ Text[ japanese ] = "ŠÏ‘ª‚Ü‚½‚ÍÃÞ°À‚Ì“Æ—§”͈͡";
+ Text[ chinese_traditional ] = "X-¦ÛÅܶq¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ ãÓÊÞáÉ ãä ÇáÈíÇäÇÊ Ãæ ÇáãÔÇåÏÇÊ.";
+ Text[ dutch ] = "De matrix van de X-gegevens.";
+ Text[ chinese_simplified ] = "X-×Ô±äÁ¿Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí ×.";
+ Text[ korean ] = "X µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "X verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function STEIGUNG #*=-
+ Resource SC_OPCODE_SLOPE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Steigung der Regressionsgeraden." ;
+ Text [ english ] = "Returns the slope of the linear regression line through data points in known_y's and known_x's." ;
+ Text [ norwegian ] = "Berechnet die Steigung der Regressionsgeraden." ;
+ Text [ italian ] = "Restituisce la pendenza della retta di regressione." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Steigung der Regressionsgeraden." ;
+ Text [ portuguese ] = "Devolve o declive da recta de regressão linear." ;
+ Text [ finnish ] = "Berechnet die Steigung der Regressionsgeraden." ;
+ Text [ danish ] = "Beregner hældningen fra en simpel lineær regression." ;
+ Text [ french ] = "Renvoie la pente d'une droite de régression." ;
+ Text [ swedish ] = "Beräknar lutningen av en linjär regressionslinje." ;
+ Text [ dutch ] = "Berekent de stijging van regressielijnen." ;
+ Text [ spanish ] = "Devuelve la pendiente de una línea de regresión lineal." ;
+ Text [ english_us ] = "Returns the slope of the linear regression line." ;
+ Text[ chinese_simplified ] = "¼ÆËãÏßÐԻعéÖ±ÏßµÄбÂÊ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò íàêëîí ëèíèè ëèíåéíîé ðåãðåññèè.";
+ Text[ polish ] = "Wyznacza nachylenie wykresu regresji liniowej.";
+ Text[ japanese ] = "ÃÞ°À‚©‚ç‰ñ‹A’¼ü‚ÌŒX‚«‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ½u©Ê¦^Âkª½½uªº±×²v¡C";
+ Text[ arabic ] = "ÊÍÓÈ Çáãíá áÎØ ÇáÇäÍÏÇÑ ÇáÎØí.";
+ Text[ dutch ] = "Berekent de stijging van regressielijnen.";
+ Text[ chinese_simplified ] = "¼ÆËãÏßÐԻعéÖ±ÏßµÄбÂÊ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí êëßóç ôçò åõèåßáò ðáëéíäñüìçóçò.";
+ Text[ korean ] = "¼±Çü ȸ±Í¼± °æ»ç¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Regresyon doðrularýnýn yükseliþini hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_STEIGUNG );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_Y" ;
+ Text [ english ] = "known_y's" ;
+ Text [ norwegian ] = "Daten Y" ;
+ Text [ italian ] = "dati_y" ;
+ Text [ portuguese_brazilian ] = "Daten Y" ;
+ Text [ portuguese ] = "Dados_Y" ;
+ Text [ finnish ] = "Daten Y" ;
+ Text [ danish ] = "Data_Y" ;
+ Text [ french ] = "Données_Y" ;
+ Text [ swedish ] = "data_y" ;
+ Text [ dutch ] = "Gegevens_Y" ;
+ Text [ spanish ] = "Datos_Y" ;
+ Text [ english_us ] = "data_Y" ;
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ russian ] = "Èçâ_äàííûå_Y";
+ Text[ polish ] = "Dane_Y";
+ Text[ japanese ] = "Šù’m‚ÌY";
+ Text[ chinese_traditional ] = "data_Y";
+ Text[ arabic ] = "ÈíÇäÇÊ_Y";
+ Text[ dutch ] = "Gegevens_Y";
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ greek ] = "ÄåäïìÝíá_Y";
+ Text[ korean ] = "µ¥ÀÌÅÍ_Y";
+ Text[ turkish ] = "Veri_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Y-Daten." ;
+ Text [ english ] = "is an array or cell range of numeric dependent data points." ;
+ Text [ norwegian ] = "Die Matrix der Y-Daten." ;
+ Text [ italian ] = "è una matrice dei dati Y." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
+ Text [ portuguese ] = "é uma matriz ou intervalo de célula de dados numéricos dependentes." ;
+ Text [ finnish ] = "Die Matrix der Y-Daten." ;
+ Text [ danish ] = "Matrixen med Y-data." ;
+ Text [ french ] = "La matrice des données Y." ;
+ Text [ swedish ] = "Matrisen med y-data." ;
+ Text [ dutch ] = "De matrix van de Y-gegevens." ;
+ Text [ spanish ] = "es una matriz o área de observaciones numéricos dependientes." ;
+ Text [ english_us ] = "The Y data array." ;
+ Text[ chinese_simplified ] = "Êý×ÖÐÍÒò±äÁ¿Êý×é»òµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ Y.";
+ Text[ polish ] = "Macierz danych Y.";
+ Text[ japanese ] = "]‘®•Ï”‚Ì’l‚ðŠÜ‚Þ”’l”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "¼Æ¦r«¬¦]Åܶq¼Æ²Õ©ÎÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "ÕÝíÝ Ãæ äØÇÞ ÎáÇíÇ íÍÊæí Úáì äÞÇØ ÈíÇäÇÊ ÚÏÏíÉ ÊÇÈÚÉ.";
+ Text[ dutch ] = "De matrix van de Y-gegevens.";
+ Text[ chinese_simplified ] = "Êý×ÖÐÍÒò±äÁ¿Êý×é»òµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí Y.";
+ Text[ korean ] = "Y µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Y verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_X" ;
+ Text [ english ] = "known_x's" ;
+ Text [ norwegian ] = "Daten X" ;
+ Text [ italian ] = "dati_x" ;
+ Text [ portuguese_brazilian ] = "Daten X" ;
+ Text [ portuguese ] = "Dados_X" ;
+ Text [ finnish ] = "Daten X" ;
+ Text [ danish ] = "Data_X" ;
+ Text [ french ] = "Données_X" ;
+ Text [ swedish ] = "data_x" ;
+ Text [ dutch ] = "Gegevens_X" ;
+ Text [ spanish ] = "Datos_X" ;
+ Text [ english_us ] = "data_X" ;
+ Text[ chinese_simplified ] = "data_X";
+ Text[ russian ] = "Èçâ_äàííûå_X";
+ Text[ polish ] = "Dane_X";
+ Text[ japanese ] = "Šù’m‚ÌX";
+ Text[ chinese_traditional ] = "data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X";
+ Text[ dutch ] = "Gegevens_X";
+ Text[ chinese_simplified ] = "data_X";
+ Text[ greek ] = "ÄåäïìÝíá_×";
+ Text[ korean ] = "µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der X-Daten." ;
+ Text [ english ] = "is the set of independent data points." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten." ;
+ Text [ italian ] = "è una matrice dei dati X." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
+ Text [ portuguese ] = "é o conjunto de dados independentes." ;
+ Text [ finnish ] = "Die Matrix der X-Daten." ;
+ Text [ danish ] = "Matrixen med X-data." ;
+ Text [ french ] = "La matrice des données X." ;
+ Text [ swedish ] = "Matrisen med x-data." ;
+ Text [ dutch ] = "De matrix van de X-gegevens." ;
+ Text [ spanish ] = "es el conjunto de observaciones independientes." ;
+ Text [ english_us ] = "The X data array." ;
+ Text[ chinese_simplified ] = "×Ô±äÁ¿Êý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ X.";
+ Text[ polish ] = "Macierz danych X.";
+ Text[ japanese ] = "“Æ—§•Ï”‚Ì’l‚ðŠÜ‚Þ”’l”z—ñ‚Ü‚½‚;͈ٔ͡";
+ Text[ chinese_traditional ] = "¦ÛÅܶq¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ äÞÇØ ÈíÇäÇÊ ãÓÊÞáÉ.";
+ Text[ dutch ] = "De matrix van de X-gegevens.";
+ Text[ chinese_simplified ] = "×Ô±äÁ¿Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí ×.";
+ Text[ korean ] = "X µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "X verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function STFEHLERYX #*=-
+ Resource SC_OPCODE_STEYX
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den Standardfehler bei der linearen Regression." ;
+ Text [ english ] = "Returns the standard error of the predicted y-value for each x in the regression." ;
+ Text [ norwegian ] = "Berechnet den Standardfehler bei der linearen Regression." ;
+ Text [ italian ] = "Restituisce l'errore standard nella regressione lineare." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Standardfehler bei der linearen Regression." ;
+ Text [ portuguese ] = "Devolve o erro padrão do valor y previsto para cada x na regressão linear." ;
+ Text [ finnish ] = "Berechnet den Standardfehler bei der linearen Regression." ;
+ Text [ danish ] = "Beregner standardfejlen for den linære regression." ;
+ Text [ french ] = "Renvoie l'erreur-type de la régression linéaire." ;
+ Text [ swedish ] = "Beräknar standardfelet vid den linjära regressionen." ;
+ Text [ dutch ] = "Berekent de standaardfout bij de lineaire regressie." ;
+ Text [ spanish ] = "Devuelve el error típico del valor a la regresión lineal." ;
+ Text [ english_us ] = "Returns the standard error of the linear regression." ;
+ Text[ chinese_simplified ] = "ÓÃÏßÐԻع鷨¼ÆËãÔ¤²âֵʱËù²úÉúµÄ±ê×¼Îó²î¡£";
+ Text[ russian ] = "Âû÷èñëÿåò ñòàíäàðòíóþ îøèáêó ïðåäñêàçàííûõ çíà÷åíèé y äëÿ êàæäîãî çíà÷åíèÿ x â ðåãðåññèè.";
+ Text[ polish ] = "Oblicza standardowy b³¹d regresji liniowej.";
+ Text[ japanese ] = "‰ñ‹A’¼ü‚Ì•W€Œë·‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥Î½u©Ê¦^Âkªk­pºâ¹w´ú­È®É©Ò²£¥Íªº¼Ð·Ç»~®t¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÎØà ÇáÞíÇÓí áÞíã Õ ÇáãÊæÞÚÉ æÐáß áßá Ó Ýí ÇáÇäÍÏÇÑ.";
+ Text[ dutch ] = "Berekent de standaardfout bij de lineaire regressie.";
+ Text[ chinese_simplified ] = "ÓÃÏßÐԻع鷨¼ÆËãÔ¤²âֵʱËù²úÉúµÄ±ê×¼Îó²î¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ôõðéêü óöÜëìá ôçò ãñáììéêÞò ðáëéíäñüìçóçò.";
+ Text[ korean ] = "¼±Çü ȸ±Í¼±ÀÇ Ç¥ÁØ ¿À·ù ¹Ýȯ";
+ Text[ turkish ] = "Doðrusal regresyondaki standart hatayý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_STFEHLERYX );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_Y" ;
+ Text [ english ] = "known_y's" ;
+ Text [ norwegian ] = "Daten Y" ;
+ Text [ italian ] = "dati_y" ;
+ Text [ portuguese_brazilian ] = "Daten Y" ;
+ Text [ portuguese ] = "Dados_Y" ;
+ Text [ finnish ] = "Daten Y" ;
+ Text [ danish ] = "Data_Y" ;
+ Text [ french ] = "Données_Y" ;
+ Text [ swedish ] = "data_y" ;
+ Text [ dutch ] = "Gegevens_Y" ;
+ Text [ spanish ] = "Datos_Y" ;
+ Text [ english_us ] = "data_Y" ;
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ russian ] = "Èçâ_äàííûå_Y";
+ Text[ polish ] = "Dane_Y";
+ Text[ japanese ] = "Šù’m‚ÌY";
+ Text[ chinese_traditional ] = "data_Y";
+ Text[ arabic ] = "ÈíÇäÇÊ_Y";
+ Text[ dutch ] = "Gegevens_Y";
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ greek ] = "ÄåäïìÝíá_Y";
+ Text[ korean ] = "µ¥ÀÌÅÍ_Y";
+ Text[ turkish ] = "Veri_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix der Y-Daten." ;
+ Text [ english ] = "is an array or range of dependent data points." ;
+ Text [ norwegian ] = "Die Matrix der Y-Daten." ;
+ Text [ italian ] = "è una matrice o un intervallo di dati dipendenti." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
+ Text [ portuguese ] = "é uma matriz ou intervalo de dados dependentes." ;
+ Text [ finnish ] = "Die Matrix der Y-Daten." ;
+ Text [ danish ] = "Matrixen med Y-data." ;
+ Text [ french ] = "La matrice des données Y." ;
+ Text [ swedish ] = "Matrisen med y-data." ;
+ Text [ dutch ] = "De matrix van de Y-gegevens." ;
+ Text [ spanish ] = "es una matriz o área de puntos de datos dependientes." ;
+ Text [ english_us ] = "The Y data array." ;
+ Text[ chinese_simplified ] = "Y-Êý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ Y.";
+ Text[ polish ] = "Macierz danych Y.";
+ Text[ japanese ] = "Šù’m‚Ìy‚Ì’l‚Ì”z—ñ‚Ü‚½‚;ق͈̔ÍB";
+ Text[ chinese_traditional ] = "Y-¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÕÝíÝ Ãæ äØÇÞ äÞÇØ ÈíÇäÇÊ ÊÇÈÚÉ.";
+ Text[ dutch ] = "De matrix van de Y-gegevens.";
+ Text[ chinese_simplified ] = "Y-Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí Y.";
+ Text[ korean ] = "Y µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Y verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_X" ;
+ Text [ english ] = "known_x's" ;
+ Text [ norwegian ] = "Daten X" ;
+ Text [ italian ] = "dati_x" ;
+ Text [ portuguese_brazilian ] = "Daten X" ;
+ Text [ portuguese ] = "Dados_X" ;
+ Text [ finnish ] = "Daten X" ;
+ Text [ danish ] = "Data_X" ;
+ Text [ french ] = "Données_X" ;
+ Text [ swedish ] = "data_x" ;
+ Text [ dutch ] = "Gegevens_X" ;
+ Text [ spanish ] = "Datos_X" ;
+ Text [ english_us ] = "data_X" ;
+ Text[ chinese_simplified ] = "data_X";
+ Text[ russian ] = "Èçâ_äàííûå_X";
+ Text[ polish ] = "Dane_X";
+ Text[ japanese ] = "Šù’m‚ÌX";
+ Text[ chinese_traditional ] = "data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X";
+ Text[ dutch ] = "Gegevens_X";
+ Text[ chinese_simplified ] = "data_X";
+ Text[ greek ] = "ÄåäïìÝíá_×";
+ Text[ korean ] = "µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der X-Daten." ;
+ Text [ english ] = "is an array or range of independent data points." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten." ;
+ Text [ italian ] = "è una matrice o un intervallo di dati indipendenti." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
+ Text [ portuguese ] = "é uma matriz ou intervalo de dados independentes.." ;
+ Text [ finnish ] = "Die Matrix der X-Daten." ;
+ Text [ danish ] = "Matrixen med X-data." ;
+ Text [ french ] = "La matrice des données X." ;
+ Text [ swedish ] = "Matrisen med x-data." ;
+ Text [ dutch ] = "De matrix van de X-gegevens." ;
+ Text [ spanish ] = "es una matriz o área de puntos de datos independientes." ;
+ Text [ english_us ] = "The X data array." ;
+ Text[ chinese_simplified ] = "X-Êý¾Ý×é¡£";
+ Text[ russian ] = "Ìàññèâ äàííûõ X.";
+ Text[ polish ] = "Macierz danych X.";
+ Text[ japanese ] = "Šù’m‚Ìx‚Ì’l‚Ì”z—ñ‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "X-¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ÕÝíÝ Ãæ äØÇÞ äÞÇØ ÈíÇäÇÊ ãÓÊÞáÉ.";
+ Text[ dutch ] = "De matrix van de X-gegevens.";
+ Text[ chinese_simplified ] = "X-Êý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí X.";
+ Text[ korean ] = "X µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "X verileri matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function PEARSON #*=-
+ Resource SC_OPCODE_PEARSON
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den Pearsonschen Korrelationskoeffizienten." ;
+ Text [ english ] = "Returns the Pearson product moment correlation coefficient." ;
+ Text [ norwegian ] = "Berechnet den Pearsonschen Korrelationskoeffizienten." ;
+ Text [ italian ] = "Restituisce il coefficiente di correlazione di Pearson." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Pearsonschen Korrelationskoeffizienten." ;
+ Text [ portuguese ] = "Devolve o coeficiente de correlação momentânea do produto Pearson." ;
+ Text [ finnish ] = "Berechnet den Pearsonschen Korrelationskoeffizienten." ;
+ Text [ danish ] = "Beregner Pearsons korrelationskoefficient." ;
+ Text [ french ] = "Calcule le coefficient de corrélation de Pearson." ;
+ Text [ swedish ] = "Beräknar den Pearsonska korrelationskoefficienten." ;
+ Text [ dutch ] = "Berekent de correlatiecoëfficiënt van Pearson." ;
+ Text [ spanish ] = "Devuelve el coeficiente de correlación producto o momento r de Pearson.." ;
+ Text [ english_us ] = "Returns the Pearson product moment correlation coefficient." ;
+ Text[ chinese_simplified ] = "¼ÆËãƤ¶ûÉúÏà¹ØϵÊý¡£";
+ Text[ russian ] = "Âîçâðàùàåò êîýôôèöèåíò êîððåëÿöèè Ïèðñîíà.";
+ Text[ polish ] = "Oblicza chwilowy wspó³czynnik korelacji iloczynu Pearsona.";
+ Text[ japanese ] = "Ëß±¿Ý‚ÌÏ—¦‘ŠŠÖŒW”r‚Ì’l(-1.0‚©‚ç1.0‚͈̔͂̔’l)‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¥Öº¸¥Í¬ÛÃö«Y¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ãÚÇãá Pearson ááÇÑÊÈÇØ ÇáÚÒæãí.";
+ Text[ dutch ] = "Berekent de correlatiecoëfficiënt van Pearson.";
+ Text[ chinese_simplified ] = "¼ÆËãƤ¶ûÉúÏà¹ØϵÊý¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí óõíôåëåóôÞ óõó÷Ýôéóçò ôïõ Pearson.";
+ Text[ korean ] = "PearsonÀÇ Á¦°ö ¼ø°£ »ó°ü°è¼ö¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Pearson korelasyon katsayýsýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_PEARSON );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_1" ;
+ Text [ english ] = "array 1" ;
+ Text [ norwegian ] = "Daten 1" ;
+ Text [ italian ] = "dati_1" ;
+ Text [ portuguese_brazilian ] = "Daten 1" ;
+ Text [ portuguese ] = "Dados_1" ;
+ Text [ finnish ] = "Daten 1" ;
+ Text [ danish ] = "Data_1" ;
+ Text [ french ] = "Données_1" ;
+ Text [ swedish ] = "data_1" ;
+ Text [ dutch ] = "Gegevens_1" ;
+ Text [ spanish ] = "Datos_1" ;
+ Text [ english_us ] = "Data_1" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_1";
+ Text[ russian ] = "Äàííûå_1";
+ Text[ polish ] = "Dane_1";
+ Text[ japanese ] = "”z—ñ1";
+ Text[ chinese_traditional ] = "data_1";
+ Text[ arabic ] = "ÈíÇäÇÊ_1";
+ Text[ dutch ] = "Gegevens_1";
+ Text[ chinese_simplified ] = "Êý¾Ý_1";
+ Text[ greek ] = "ÄåäïìÝíá_1";
+ Text[ korean ] = "µ¥ÀÌÅÍ_1";
+ Text[ turkish ] = "Veri_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix des ersten Datensatzes." ;
+ Text [ english ] = "is a set of independent values." ;
+ Text [ norwegian ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ italian ] = "La matrice del primo record di dati." ;
+ Text [ portuguese_brazilian ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ portuguese ] = "é um conjunto de valores independentes." ;
+ Text [ finnish ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ danish ] = "Den første dataposts matrix." ;
+ Text [ french ] = "La matrice du premier enregistrement." ;
+ Text [ swedish ] = "Den första datapostens matris." ;
+ Text [ dutch ] = "De matrix van het eerste gegevensbereik." ;
+ Text [ spanish ] = "es un conjunto de valores independientes." ;
+ Text [ english_us ] = "The first record array." ;
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Ìíîæåñòâî íåçàâèñèìûõ çíà÷åíèé.";
+ Text[ polish ] = "Macierz drugiego zbioru danych.";
+ Text[ japanese ] = "•¡”‚Ì“Æ—§•Ï”‚ɑΉž‚·‚éÃÞ°À¡";
+ Text[ chinese_traditional ] = "²Ä¤@­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ Þíã ãÓÊÞáÉ.";
+ Text[ dutch ] = "De matrix van het eerste gegevensbereik.";
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôçò ðñþôçò åããñáöÞò.";
+ Text[ korean ] = "ù° µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Birinci veri kümesinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_2" ;
+ Text [ english ] = "array 2" ;
+ Text [ norwegian ] = "Daten 2" ;
+ Text [ italian ] = "dati_2" ;
+ Text [ portuguese_brazilian ] = "Daten 2" ;
+ Text [ portuguese ] = "Dados_2" ;
+ Text [ finnish ] = "Daten 2" ;
+ Text [ danish ] = "Data_2" ;
+ Text [ french ] = "Données_2" ;
+ Text [ swedish ] = "data_2" ;
+ Text [ dutch ] = "Gegevens_2" ;
+ Text [ spanish ] = "Datos_2" ;
+ Text [ english_us ] = "Data_2" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_2";
+ Text[ russian ] = "Äàííûå_2";
+ Text[ polish ] = "Dane_2";
+ Text[ japanese ] = "”z—ñ2";
+ Text[ chinese_traditional ] = "data_2";
+ Text[ arabic ] = "ÈíÇäÇÊ_2";
+ Text[ dutch ] = "Gegevens_2";
+ Text[ chinese_simplified ] = "Êý¾Ý_2";
+ Text[ greek ] = "ÄåäïìÝíá_2";
+ Text[ korean ] = "µ¥ÀÌÅÍ_2";
+ Text[ turkish ] = "Veri_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix des zweiten Datensatzes." ;
+ Text [ english ] = "is a set of independent values." ;
+ Text [ norwegian ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ italian ] = "La matrice del secondo record di dati." ;
+ Text [ portuguese_brazilian ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ portuguese ] = "é um conjunto de valores dependentes." ;
+ Text [ finnish ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ danish ] = "Den anden dataposts matrix." ;
+ Text [ french ] = "La matrice du deuxième enregistrement." ;
+ Text [ swedish ] = "Den andra datapostens matris." ;
+ Text [ dutch ] = "De matrix van het tweede gegevensbereik." ;
+ Text [ spanish ] = "es un conjunto de valores dependientes." ;
+ Text [ english_us ] = "The second record array." ;
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×é¡£";
+ Text[ russian ] = "Ìíîæåñòâî çàâèñèìûõ çíà÷åíèé.";
+ Text[ polish ] = "Macierz drugiego zbioru danych.";
+ Text[ japanese ] = "•¡”‚Ì]‘®•Ï”‚ɑΉž‚·‚éÃÞ°À¡";
+ Text[ chinese_traditional ] = "²Ä¤G­Ó¼Æ¾Ú²Õ¡C";
+ Text[ arabic ] = "ãÌãæÚÉ Þíã ÊÇÈÚÉ.";
+ Text[ dutch ] = "De matrix van het tweede gegevensbereik.";
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×é¡£";
+ Text[ greek ] = "Ç ìÞôñá ôçò äåýôåñçò åããñáöÞò.";
+ Text[ korean ] = "µÑ° µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýkinci veri kümesinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KORREL #*=-
+ Resource SC_OPCODE_CORREL
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet den Korrelationskoeffizienten." ;
+ Text [ english ] = "Returns the correlation coefficient of the array1 and array2 cell ranges." ;
+ Text [ norwegian ] = "Berechnet den Korrelationskoeffizienten." ;
+ Text [ italian ] = "Restituisce il coefficiente di correlazione." ;
+ Text [ portuguese_brazilian ] = "Berechnet den Korrelationskoeffizienten." ;
+ Text [ portuguese ] = "Calcula o quociente de correlação entre duas matrizes de dados." ;
+ Text [ finnish ] = "Berechnet den Korrelationskoeffizienten." ;
+ Text [ danish ] = "Beregner korrelationskoefficienten." ;
+ Text [ french ] = "Renvoie le coefficient de corrélation." ;
+ Text [ swedish ] = "Beräknar korrelationskoefficienten." ;
+ Text [ dutch ] = "Berekent het correlatiecoëfficiënt" ;
+ Text [ spanish ] = "Devuelve el coeficiente de correlación entre dos conjuntos de datos." ;
+ Text [ english_us ] = "Returns the correlation coefficient." ;
+ Text[ chinese_simplified ] = "¼ÆËãÏà¹ØϵÊý¡£";
+ Text[ russian ] = "Âîçâðàùàåò êîýôôèöèåíò êîððåëÿöèè ìåæäó äâóìÿ ìíîæåñòâàìè äàííûõ.";
+ Text[ polish ] = "Oblicza wspó³czynnik korelacji miêdzy dwoma zbiorami danych.";
+ Text[ japanese ] = "2‚‚̔z—ñÃÞ°À‚Ì‘ŠŠÖŒW”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¬ÛÃö«Y¼Æ¡C";
+ Text[ arabic ] = "ÊÍÓÈ ãÚÇãá ÇáÇÑÊÈÇØ.";
+ Text[ dutch ] = "Berekent het correlatiecoëfficiënt";
+ Text[ chinese_simplified ] = "¼ÆËãÏà¹ØϵÊý¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôïí óõíôåëåóôÞ óõó÷Ýôéóçò.";
+ Text[ korean ] = "»ó°ü °è¼ö ¹Ýȯ.";
+ Text[ turkish ] = "Korelasyon katsayýsýný hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_KORREL );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_1" ;
+ Text [ english ] = "array 1" ;
+ Text [ norwegian ] = "Daten 1" ;
+ Text [ italian ] = "dati_1" ;
+ Text [ portuguese_brazilian ] = "Daten 1" ;
+ Text [ portuguese ] = "Dados_1" ;
+ Text [ finnish ] = "Daten 1" ;
+ Text [ danish ] = "Data_1" ;
+ Text [ french ] = "Données_1" ;
+ Text [ swedish ] = "data_1" ;
+ Text [ dutch ] = "Gegevens_1" ;
+ Text [ spanish ] = "Datos_1" ;
+ Text [ english_us ] = "Data_1" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_1";
+ Text[ russian ] = "Äàííûå_1";
+ Text[ polish ] = "Dane_1";
+ Text[ japanese ] = "”z—ñ1";
+ Text[ chinese_traditional ] = "data_1";
+ Text[ arabic ] = "ÈíÇäÇÊ_1";
+ Text[ dutch ] = "Gegevens_1";
+ Text[ chinese_simplified ] = "Êý¾Ý_1";
+ Text[ greek ] = "ÄåäïìÝíá_1";
+ Text[ korean ] = "µ¥ÀÌÅÍ_1";
+ Text[ turkish ] = "Veri_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix des ersten Datensatzes." ;
+ Text [ english ] = "is a cell range of values." ;
+ Text [ norwegian ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ italian ] = "è un intervallo di celle di valori." ;
+ Text [ portuguese_brazilian ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ portuguese ] = "é um intervalo de valores numa célula." ;
+ Text [ finnish ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ danish ] = "Den første dataposts matrix." ;
+ Text [ french ] = "La matrice du premier enregistrement." ;
+ Text [ swedish ] = "Den första datapostens matris." ;
+ Text [ dutch ] = "De matrix van de eerste record." ;
+ Text [ spanish ] = "primer área de celdas de valores." ;
+ Text [ english_us ] = "The first record array." ;
+ Text[ chinese_simplified ] = "µÚÒ»×éÊý¾Ýµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Ïåðâûé äèàïàçîí çíà÷åíèé.";
+ Text[ polish ] = "Macierz pierwszego zbioru danych.";
+ Text[ japanese ] = "ÃÞ°À‚ª“ü—Í‚³‚ꂽ1‚–ڂ̔z—ñB";
+ Text[ chinese_traditional ] = "²Ä¤@²Õ¼Æ¾ÚÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÓÌá ÇáÃæá.";
+ Text[ dutch ] = "De matrix van de eerste record.";
+ Text[ chinese_simplified ] = "µÚÒ»×éÊý¾Ýµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôçò ðñþôçò åããñáöÞò.";
+ Text[ korean ] = "ù° µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Birinci veri kümesinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_2" ;
+ Text [ english ] = "array 2" ;
+ Text [ norwegian ] = "Daten 2" ;
+ Text [ italian ] = "dati_2" ;
+ Text [ portuguese_brazilian ] = "Daten 2" ;
+ Text [ portuguese ] = "Dados_2" ;
+ Text [ finnish ] = "Daten 2" ;
+ Text [ danish ] = "Data_2" ;
+ Text [ french ] = "Données_2" ;
+ Text [ swedish ] = "data_2" ;
+ Text [ dutch ] = "Gegevens_2" ;
+ Text [ spanish ] = "Datos_2" ;
+ Text [ english_us ] = "Data_2" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_2";
+ Text[ russian ] = "Äàííûå_2";
+ Text[ polish ] = "Dane_2";
+ Text[ japanese ] = "”z—ñ2";
+ Text[ chinese_traditional ] = "data_2";
+ Text[ arabic ] = "ÈíÇäÇÊ_2";
+ Text[ dutch ] = "Gegevens_2";
+ Text[ chinese_simplified ] = "Êý¾Ý_2";
+ Text[ greek ] = "ÄåäïìÝíá_2";
+ Text[ korean ] = "µ¥ÀÌÅÍ_2";
+ Text[ turkish ] = "Veri_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix des zweiten Datensatzes." ;
+ Text [ english ] = "is a second cell range of values." ;
+ Text [ norwegian ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ italian ] = "è il secondo intervallo di celle di valori." ;
+ Text [ portuguese_brazilian ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ portuguese ] = "é o segundo intervalo de valores numa célula." ;
+ Text [ finnish ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ danish ] = "Den anden dataposts matrix." ;
+ Text [ french ] = "La matrice du deuxième enregistrement." ;
+ Text [ swedish ] = "Den andra datapostens matris." ;
+ Text [ dutch ] = "De matrix met de tweede record." ;
+ Text [ spanish ] = "segunda área de celdas de valores." ;
+ Text [ english_us ] = "The second record array." ;
+ Text[ chinese_simplified ] = "µÚ¶þ×éÊý¾Ýµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Âòîðîé äèàïàçîí çíà÷åíèé.";
+ Text[ polish ] = "Macierz drugiego zbioru danych.";
+ Text[ japanese ] = "ÃÞ°À‚ª“ü—Í‚³‚ꂽ‚à‚¤1‚‚̔z—ñB";
+ Text[ chinese_traditional ] = "²Ä¤G²Õ¼Æ¾ÚÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÓÌá ÇáËÇäí.";
+ Text[ dutch ] = "De matrix met de tweede record.";
+ Text[ chinese_simplified ] = "µÚ¶þ×éÊý¾Ýµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôçò äåýôåñçò åããñáöÞò.";
+ Text[ korean ] = "µÑ° µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýkinci veri kümesinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KOVAR #*=-
+ Resource SC_OPCODE_COVAR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet die Kovarianz." ;
+ Text [ english ] = "Returns covariance, the average of the products of deviations for each data point pair." ;
+ Text [ norwegian ] = "Berechnet die Kovarianz." ;
+ Text [ italian ] = "Restituisce la covarianza." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Kovarianz." ;
+ Text [ portuguese ] = "Devolve a covariância, a média dos produtos de desvios para cada par dos pontos de dados." ;
+ Text [ finnish ] = "Berechnet die Kovarianz." ;
+ Text [ danish ] = "Beregner kovariansen." ;
+ Text [ french ] = "Calcule la covariance." ;
+ Text [ swedish ] = "Beräknar kovariansen." ;
+ Text [ dutch ] = "Berekent de covariantie" ;
+ Text [ spanish ] = "Devuelve la covarianza, o promedio de los productos entre las desviaciones, de los valores por pares." ;
+ Text [ english_us ] = "Calculates the covariance." ;
+ Text[ chinese_simplified ] = "¼ÆËãЭ·½²î¡£";
+ Text[ russian ] = "Âîçâðàùàåò êîâàðèàöèþ, ñðåäíåå ïîïàðíûõ ïðîèçâåäåíèé îòêëîíåíèé.";
+ Text[ polish ] = "Oblicza kowariancjê.";
+ Text[ japanese ] = "‹¤•ªŽU‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ¨ó¤è®t¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÇáÊÈÇíä ÇáãÔÊÑß.";
+ Text[ dutch ] = "Berekent de covariantie";
+ Text[ chinese_simplified ] = "¼ÆËãЭ·½²î¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôçí óõíäéáêýìáíóç";
+ Text[ korean ] = "°øºÐ»êÀ» °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Kovaryansý hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_KOVAR );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Daten_1" ;
+ Text [ english ] = "array 1" ;
+ Text [ norwegian ] = "Daten 1" ;
+ Text [ italian ] = "dati_1" ;
+ Text [ portuguese_brazilian ] = "Daten 1" ;
+ Text [ portuguese ] = "Dados_1" ;
+ Text [ finnish ] = "Daten 1" ;
+ Text [ danish ] = "Data_1" ;
+ Text [ french ] = "Données_1" ;
+ Text [ swedish ] = "data_1" ;
+ Text [ dutch ] = "Gegevens_1" ;
+ Text [ spanish ] = "Datos_1" ;
+ Text [ english_us ] = "Data_1" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_1";
+ Text[ russian ] = "Äàííûå_1";
+ Text[ polish ] = "Dane_1";
+ Text[ japanese ] = "”z—ñ1";
+ Text[ chinese_traditional ] = "data_1";
+ Text[ arabic ] = "ÈíÇäÇÊ_1";
+ Text[ dutch ] = "Gegevens_1";
+ Text[ chinese_simplified ] = "Êý¾Ý_1";
+ Text[ greek ] = "ÄåäïìÝíá_1";
+ Text[ korean ] = "µ¥ÀÌÅÍ_1";
+ Text[ turkish ] = "Veri_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix des ersten Datensatzes." ;
+ Text [ english ] = "is the first cell range of integers." ;
+ Text [ norwegian ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ italian ] = "è il primo intervallo di celle costituito da interi." ;
+ Text [ portuguese_brazilian ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ portuguese ] = "é o primeiro intervalo de números inteiros." ;
+ Text [ finnish ] = "Die Matrix des ersten Datensatzes." ;
+ Text [ danish ] = "Den første dataposts matrix." ;
+ Text [ french ] = "La matrice du premier enregistrement." ;
+ Text [ swedish ] = "Den första datapostens matris." ;
+ Text [ dutch ] = "De matrix met de eerste record." ;
+ Text [ spanish ] = "primer área de celdas de números enteros." ;
+ Text [ english_us ] = "The first record array." ;
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×éµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Ïåðâûé äèàïàçîí ÿ÷ååê öåëûõ ÷èñåë.";
+ Text[ polish ] = "Macierz pierwszego zbioru danych.";
+ Text[ japanese ] = "ÃÞ°À‚ª“ü—Í‚³‚ê‚Ä‚¢‚é1‚–ڂ͈̾ٔÍB";
+ Text[ chinese_traditional ] = "²Ä¤@­Ó¼Æ¾Ú²ÕªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÓÌá ÇáÃæá.";
+ Text[ dutch ] = "De matrix met de eerste record.";
+ Text[ chinese_simplified ] = "µÚÒ»¸öÊý¾Ý×éµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôçò ðñþôçò åããñáöÞò.";
+ Text[ korean ] = "ù° µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Birinci veri kümesinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_2" ;
+ Text [ english ] = "array 2" ;
+ Text [ norwegian ] = "Daten 2" ;
+ Text [ italian ] = "dati_2" ;
+ Text [ portuguese_brazilian ] = "Daten 2" ;
+ Text [ portuguese ] = "Dados_2" ;
+ Text [ finnish ] = "Daten 2" ;
+ Text [ danish ] = "Data_2" ;
+ Text [ french ] = "Données_2" ;
+ Text [ swedish ] = "data_2" ;
+ Text [ dutch ] = "Gegevens_2" ;
+ Text [ spanish ] = "Datos_2" ;
+ Text [ english_us ] = "Data_2" ;
+ Text[ chinese_simplified ] = "Êý¾Ý_2";
+ Text[ russian ] = "Äàííûå_2";
+ Text[ polish ] = "Dane_2";
+ Text[ japanese ] = "”z—ñ2";
+ Text[ chinese_traditional ] = "data_2";
+ Text[ arabic ] = "ÈíÇäÇÊ_2";
+ Text[ dutch ] = "Gegevens_2";
+ Text[ chinese_simplified ] = "Êý¾Ý_2";
+ Text[ greek ] = "ÄåäïìÝíá_2";
+ Text[ korean ] = "µ¥ÀÌÅÍ_2";
+ Text[ turkish ] = "Veri_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix des zweiten Datensatzes." ;
+ Text [ english ] = "is the second cell range of integers." ;
+ Text [ norwegian ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ italian ] = "è il secondo intervallo di celle." ;
+ Text [ portuguese_brazilian ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ portuguese ] = "é o segundo intervalo de números inteiros." ;
+ Text [ finnish ] = "Die Matrix des zweiten Datensatzes." ;
+ Text [ danish ] = "Den anden dataposts matrix." ;
+ Text [ french ] = "La matrice du deuxième enregistrement." ;
+ Text [ swedish ] = "Den andra datapostens matris." ;
+ Text [ dutch ] = "De matrix met de tweede record." ;
+ Text [ spanish ] = "segunda área de celdas de números enteros." ;
+ Text [ english_us ] = "The second record array." ;
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×éµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Âòîðîé äèàïàçîí ÿ÷ååê öåëûõ ÷èñåë.";
+ Text[ polish ] = "Macierz drugiego zbioru danych.";
+ Text[ japanese ] = "ÃÞ°À‚ª“ü—Í‚³‚ê‚Ä‚¢‚é‚à‚¤1‚‚͈̾ٔÍB";
+ Text[ chinese_traditional ] = "²Ä¤G­Ó¼Æ¾Ú²ÕªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "ãÕÝæÝÉ ÇáÓÌá ÇáËÇäí.";
+ Text[ dutch ] = "De matrix met de tweede record.";
+ Text[ chinese_simplified ] = "µÚ¶þ¸öÊý¾Ý×éµÄµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá ôçò äåýôåñçò åããñáöÞò.";
+ Text[ korean ] = "µÑ° µ¥ÀÌÅÍ ·¹ÄÚµåÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýkinci veri kümesinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SCHÄTZER #*=-
+ Resource SC_OPCODE_FORECAST
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Berechnet einen Wert auf der Regressionsgeraden." ;
+ Text [ english ] = "Returns a predicted value for x based on a linear regression of known x- and y-arrays or ranges of data." ;
+ Text [ norwegian ] = "Berechnet einen Wert auf der Regressionsgeraden." ;
+ Text [ italian ] = "Restituisce un valore su una regressione lineare." ;
+ Text [ portuguese_brazilian ] = "Berechnet einen Wert auf der Regressionsgeraden." ;
+ Text [ portuguese ] = "Devolve um valor baseando-se numa regressão linear." ;
+ Text [ finnish ] = "Berechnet einen Wert auf der Regressionsgeraden." ;
+ Text [ danish ] = "Beregner en værdi baseret på lineær regression." ;
+ Text [ french ] = "Renvoie une valeur suivant une ligne de regression." ;
+ Text [ swedish ] = "Beräknar ett värde baserat på linjär regression." ;
+ Text [ dutch ] = "Berekent een waarde op de basis van een lineaire regressie." ;
+ Text [ spanish ] = "Devuelve un valor basándose en una regresión lineal." ;
+ Text [ english_us ] = "Returns a value along a linear regression" ;
+ Text[ chinese_simplified ] = "¼ÆËãÏßÐԻعéÔ¤²âÖµ¡£";
+ Text[ russian ] = "Âû÷èñëÿåò çíà÷åíèå ïî ëèíåéíîé ðåãðåññèè.";
+ Text[ polish ] = "Oblicza wartoœæ przy za³o¿eniu regresji liniowej.";
+ Text[ japanese ] = "Šù’m‚Ìx‚ÆŠù’m‚Ìy‚©‚瓾‚ç‚ê‚é‰ñ‹Aüã‚ÅAx‚Ì’l‚ɑ΂·‚é]‘®•Ï”(y)‚Ì’l‚ð—\\‘ª‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "­pºâ½u©Ê¦^Âk¹w´ú­È¡C";
+ Text[ arabic ] = "ÊÍÓÈ ÞíãÉ ãÇ ÈÇÊÌÇå ÎØí ãÓÊÎÏãÉ Þíã ãæÌæÏÉ.";
+ Text[ dutch ] = "Berekent een waarde op de basis van een lineaire regressie.";
+ Text[ chinese_simplified ] = "¼ÆËãÏßÐԻعéÔ¤²âÖµ¡£";
+ Text[ greek ] = "Õðïëïãßæåé ìéá ôéìÞ ôçò åõèåßáò ðáëéíäñüìçóçò.";
+ Text[ korean ] = "ȸ±Í Á÷¼± »óÀÇ °ªÀ» °è»êÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Regresyon doðrusu üzerinde bir deðer hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_STATISTIC;
+ U2S( HID_FUNC_SCHAETZER );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "x" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor_X" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "x" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "x";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "Šù’m‚Ìx";
+ Text[ chinese_traditional ] = "x";
+ Text[ arabic ] = "X";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "x";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der X-Wert, zu dem der Y-Wert auf der Regressionsgeraden berechnet wird." ;
+ Text [ english ] = "is the data point for which you want to predict a value." ;
+ Text [ norwegian ] = "Der X-Wert, zu dem der Y-Wert auf der Regressionsgeraden berechnet wird." ;
+ Text [ italian ] = "è la variabile di cui si desidera prevedere un valore." ;
+ Text [ portuguese_brazilian ] = "Der X-Wert, zu dem der Y-Wert auf der Regressionsgeraden berechnet wird." ;
+ Text [ portuguese ] = "é o dado cujo valor deseja calcular." ;
+ Text [ finnish ] = "Der X-Wert, zu dem der Y-Wert auf der Regressionsgeraden berechnet wird." ;
+ Text [ danish ] = "Den X-værdi som Y-værdien skal beregnes til." ;
+ Text [ french ] = "La valeur X pour laquelle vous voulez calculer la valeur Y sur la ligne de regression." ;
+ Text [ swedish ] = "X-värdet för vilket y-värdet på regressionslinjen beräknas." ;
+ Text [ dutch ] = "De X-waarde, waarop de Y-waarde op basis van de lineaire regressie wordt berekend." ;
+ Text [ spanish ] = "es el dato cuyo valor desea predecir." ;
+ Text [ english_us ] = "The X value for which the Y value on the regression linear is to be calculated." ;
+ Text[ chinese_simplified ] = "Êý¾Ýµã X£¬»ùÓÚÒÑÖªµÄ x Öµ¿ÉÓÃÏßÐԻع麯Êý\nÍƵ¼³ö y Öµ(Ô¤²âÖµ)¡£";
+ Text[ russian ] = "Çíà÷åíèå X, äëÿ êîòîðîãî ïðåäñêàçûâàåòñÿ çíà÷åíèå Y ïî ëèíåéíîé ðåãðåññèè.";
+ Text[ polish ] = "Wartoœæ X, dla której obliczona zostanie n a prostej regresji wartoœæ Y.";
+ Text[ japanese ] = "‰ñ‹Aüã‚ÌŠù’m‚Ìy‚©‚瓾‚ç‚ê‚éŠù’m‚ÌxB";
+ Text[ chinese_traditional ] = "¼Æ¾ÚÂI X¡M°ò©ó¤wª¾ªº x ­È¥i¥Î½u©Ê¦^Âk¨ç¼Æ±À¾É¥X y ­È(¹w´ú­È)¡C";
+ Text[ arabic ] = "äÞØÉ ÇáÈíÇäÇÊ ÇáãÑÇÏ ÊæÞÚ ÞíãÉ áåÇ.";
+ Text[ dutch ] = "De X-waarde, waarop de Y-waarde op basis van de lineaire regressie wordt berekend.";
+ Text[ chinese_simplified ] = "Êý¾Ýµã X£¬»ùÓÚÒÑÖªµÄ x Öµ¿ÉÓÃÏßÐԻع麯Êý\nÍƵ¼³ö y Öµ(Ô¤²âÖµ)¡£";
+ Text[ greek ] = "Ç ôéìÞ × ãéá ôçí ïðïßá èá õðïëïãéóôåß ç ôéìÞ Õ óôçí åõèåßá ðáëéíäñüìçóçò.";
+ Text[ korean ] = "ȸ±Í¼± »óÀÇ Y°ª °è»ê¿¡¼­ Ç¥ÁØÀÌ µÇ´Â X°ªÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Regresyon doðrusu üzerinde Y deðeri hesaplanacak X deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Daten_Y" ;
+ Text [ english ] = "known_y's" ;
+ Text [ norwegian ] = "Daten Y" ;
+ Text [ italian ] = "dati_y" ;
+ Text [ portuguese_brazilian ] = "Daten Y" ;
+ Text [ portuguese ] = "Dados_Y" ;
+ Text [ finnish ] = "Daten Y" ;
+ Text [ danish ] = "Data_Y" ;
+ Text [ french ] = "Données_Y" ;
+ Text [ swedish ] = "data_y" ;
+ Text [ dutch ] = "Gegevens_Y" ;
+ Text [ spanish ] = "Datos_Y" ;
+ Text [ english_us ] = "data_Y" ;
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ russian ] = "Èçâ_çíà÷_y";
+ Text[ polish ] = "Dane_Y";
+ Text[ japanese ] = "Šù’m‚ÌY";
+ Text[ chinese_traditional ] = "data_Y";
+ Text[ arabic ] = "ÈíÇäÇÊ_Y";
+ Text[ dutch ] = "Gegevens_Y";
+ Text[ chinese_simplified ] = "data_Y";
+ Text[ greek ] = "ÄåäïìÝíá_Y";
+ Text[ korean ] = "µ¥ÀÌÅÍ_Y";
+ Text[ turkish ] = "Veri_Y";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix der Y-Daten." ;
+ Text [ english ] = "is the dependent array or range of data." ;
+ Text [ norwegian ] = "Die Matrix der Y-Daten." ;
+ Text [ italian ] = "è la matrice o l'intervallo di dati dipendente." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
+ Text [ portuguese ] = "é a matriz ou o intervalo de célula de dados dependentes." ;
+ Text [ finnish ] = "Die Matrix der Y-Daten." ;
+ Text [ danish ] = "Matrixen med Y-data." ;
+ Text [ french ] = "La matrice des données Y." ;
+ Text [ swedish ] = "Matrisen med y-data." ;
+ Text [ dutch ] = "De matrix van de Y-gegevens." ;
+ Text [ spanish ] = "matriz o área de datos dependientes." ;
+ Text [ english_us ] = "The Y data array." ;
+ Text[ chinese_simplified ] = "Êý¾Ý×é Y ¡£";
+ Text[ russian ] = "Çàâèñèìûé ìàññèâ èëè äèàïàçîí äàííûõ.";
+ Text[ polish ] = "Macierz danych Y.";
+ Text[ japanese ] = "Šù’m‚Ìy‚Ì”z—ñB";
+ Text[ chinese_traditional ] = "¼Æ¾Ú²Õ Y ¡C";
+ Text[ arabic ] = "ÕÝíÝ ÊÇÈÚ Ãæ äØÇÞ ãä ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "De matrix van de Y-gegevens.";
+ Text[ chinese_simplified ] = "Êý¾Ý×é Y ¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí Y.";
+ Text[ korean ] = "Y µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Y verilerinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Daten_X" ;
+ Text [ english ] = "known_x's" ;
+ Text [ norwegian ] = "Daten X" ;
+ Text [ italian ] = "dati_x" ;
+ Text [ portuguese_brazilian ] = "Daten X" ;
+ Text [ portuguese ] = "Dados_X" ;
+ Text [ finnish ] = "Daten X" ;
+ Text [ danish ] = "Data_X" ;
+ Text [ french ] = "Données_X" ;
+ Text [ swedish ] = "data_x" ;
+ Text [ dutch ] = "Gegevens_X" ;
+ Text [ spanish ] = "Datos_X" ;
+ Text [ english_us ] = "data_X" ;
+ Text[ chinese_simplified ] = "data_X";
+ Text[ russian ] = "Èçâ_çíà÷_x";
+ Text[ polish ] = "Dane_X";
+ Text[ japanese ] = "Šù’m‚ÌX";
+ Text[ chinese_traditional ] = "data_X";
+ Text[ arabic ] = "ÈíÇäÇÊ_X";
+ Text[ dutch ] = "Gegevens_X";
+ Text[ chinese_simplified ] = "data_X";
+ Text[ greek ] = "ÄåäïìÝíá_×";
+ Text[ korean ] = "µ¥ÀÌÅÍ_X";
+ Text[ turkish ] = "Veri_X";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Matrix der X-Daten." ;
+ Text [ english ] = "is the independent array or range of data." ;
+ Text [ norwegian ] = "Die Matrix der X-Daten." ;
+ Text [ italian ] = "è la matrice o l'intervallo di dati indipendente." ;
+ Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
+ Text [ portuguese ] = "é a matriz ou o intervalo de célula de dados independentes." ;
+ Text [ finnish ] = "Die Matrix der X-Daten." ;
+ Text [ danish ] = "Matrixen med X-data." ;
+ Text [ french ] = "La matrice des données X." ;
+ Text [ swedish ] = "Matrisen med x-data." ;
+ Text [ dutch ] = "De matrix van de X-gegevens." ;
+ Text [ spanish ] = "matriz o área de datos independiente." ;
+ Text [ english_us ] = "The X data array." ;
+ Text[ chinese_simplified ] = "Êý¾Ý×é X¡£";
+ Text[ russian ] = "Íåçàâèñèìûé ìàññèâ èëè äèàïàçîí äàííûõ.";
+ Text[ polish ] = "Macierz danych X.";
+ Text[ japanese ] = "Šù’m‚Ìx‚Ì”z—ñB";
+ Text[ chinese_traditional ] = "¼Æ¾Ú²Õ X¡C";
+ Text[ arabic ] = "ÕÝíÝ ãÓÊÞá Ãæ äØÇÞ ãä ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "De matrix van de X-gegevens.";
+ Text[ chinese_simplified ] = "Êý¾Ý×é X¡£";
+ Text[ greek ] = "Ç ìÞôñá ôùí äåäïìÝíùí ×.";
+ Text[ korean ] = "X µ¥ÀÌÅÍÀÇ Çà·ÄÀÔ´Ï´Ù.";
+ Text[ turkish ] = "X verilerinin matrisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ADRESSE #*=-
+ Resource SC_OPCODE_ADRESS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt den Bezug auf eine Zelle als Text." ;
+ Text [ english ] = "Creates a cell address as text, given specified row and column numbers." ;
+ Text [ norwegian ] = "Bestimmt den Bezug auf eine Zelle als Text." ;
+ Text [ italian ] = "Restituisce il riferimento ad una cella come testo." ;
+ Text [ portuguese_brazilian ] = "Bestimmt den Bezug auf eine Zelle als Text." ;
+ Text [ portuguese ] = "Devolve a referência de uma célula na forma de texto." ;
+ Text [ finnish ] = "Bestimmt den Bezug auf eine Zelle als Text." ;
+ Text [ danish ] = "Returnerer en reference til en celle som tekst." ;
+ Text [ french ] = "Donne la référence, sous forme de texte, d'une cellule." ;
+ Text [ swedish ] = "Bestämmer referensen till en cell som text." ;
+ Text [ dutch ] = "Interpreteert verwijzing naar een cel als tekst" ;
+ Text [ spanish ] = "Devuelve una referencia de celda con formato de texto." ;
+ Text [ english_us ] = "Returns the reference to a cell as text." ;
+ Text[ chinese_simplified ] = "ÓÃÎÄ×ÖÀ´È·¶¨Ò»¸öµ¥Ôª¸ñµÄÒýÓõØÖ·¡£";
+ Text[ russian ] = "Âîçâðàùàåò ññûëêó íà îäíó ÿ÷åéêó â ðàáî÷åì ëèñòå â âèäå òåêñòà.";
+ Text[ polish ] = "Okreœla odwo³anie do komórki jako tekst.";
+ Text[ japanese ] = "¾Ù‚ÌŽQƂ𕶎š‚Æ‚µ‚ÄŒˆ‚ß‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó·í§@¤å¦rªºÀx¦s®æªº°Ñ·Ó¡C";
+ Text[ arabic ] = "ÊÍÏÏ ãÑÌÚ ÎáíÉ ßäÕ.";
+ Text[ dutch ] = "Interpreteert verwijzing naar een cel als tekst";
+ Text[ chinese_simplified ] = "ÓÃÎÄ×ÖÀ´È·¶¨Ò»¸öµ¥Ôª¸ñµÄÒýÓõØÖ·¡£";
+ Text[ greek ] = "Ïñßæåé ôçí áíáöïñÜ óå Ýíá êåëß ùò êåßìåíï.";
+ Text[ korean ] = "ÅؽºÆ®·Î ¼¿¿¡ ÂüÁ¶¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Bir hücreye alýnan referansý metin olarak belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_ADRESSE );
+ 4; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zeile" ;
+ Text [ english ] = "row_num" ;
+ Text [ norwegian ] = "Zeile" ;
+ Text [ italian ] = "riga" ;
+ Text [ portuguese_brazilian ] = "Zeile" ;
+ Text [ portuguese ] = "Núm_linha" ;
+ Text [ finnish ] = "Zeile" ;
+ Text [ danish ] = "Række" ;
+ Text [ french ] = "Ligne" ;
+ Text [ swedish ] = "rad" ;
+ Text [ dutch ] = "Rij" ;
+ Text [ spanish ] = "núm_fila" ;
+ Text [ english_us ] = "row" ;
+ Text[ chinese_simplified ] = "row_num";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "nr_wiersza";
+ Text[ japanese ] = "s";
+ Text[ chinese_traditional ] = "row_num";
+ Text[ arabic ] = "row_num";
+ Text[ dutch ] = "Rij";
+ Text[ chinese_simplified ] = "row_num";
+ Text[ greek ] = "ÃñáììÞ";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zeilennummer der Zelle." ;
+ Text [ english ] = "is the row number to use in the cell reference." ;
+ Text [ norwegian ] = "Die Zeilennummer der Zelle." ;
+ Text [ italian ] = "è il numero di riga da utilizzare nel riferimento di cella." ;
+ Text [ portuguese_brazilian ] = "Die Zeilennummer der Zelle." ;
+ Text [ portuguese ] = "é o número da linha a usar na referência da célula." ;
+ Text [ finnish ] = "Die Zeilennummer der Zelle." ;
+ Text [ danish ] = "Cellens rækkenummer." ;
+ Text [ french ] = "Le numéro de ligne de la cellule." ;
+ Text [ swedish ] = "Radnumret för cellen." ;
+ Text [ dutch ] = "Het rijnummer van de cel." ;
+ Text [ spanish ] = "Número de fila de la celda." ;
+ Text [ english_us ] = "The row number of the cell." ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñµÄÐкÅ";
+ Text[ russian ] = "Íîìåð ñòðîêè, èñïîëüçóåìûé â ññûëêå ÿ÷åéêè.";
+ Text[ polish ] = "Numer wiersza komórki.";
+ Text[ japanese ] = "¾Ù‚Ìs”Ô†B";
+ Text[ chinese_traditional ] = "Àx¦s®æ¦C¸¹";
+ Text[ arabic ] = "ÑÞã ÇáÕÝ ÇáÎÇÕ ÈÇáÎáíÉ.";
+ Text[ dutch ] = "Het rijnummer van de cel.";
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñµÄÐкÅ";
+ Text[ greek ] = "Ï áñéèìüò ãñáììÞò ôïõ êåëéïý.";
+ Text[ korean ] = "¼¿ÀÇ Çà ¹øÈ£";
+ Text[ turkish ] = "Hücrenin satýr numarasý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Spalte" ;
+ Text [ english ] = "column_num" ;
+ Text [ norwegian ] = "Spalte" ;
+ Text [ italian ] = "colonna" ;
+ Text [ portuguese_brazilian ] = "Spalte" ;
+ Text [ portuguese ] = "Núm_coluna" ;
+ Text [ finnish ] = "Spalte" ;
+ Text [ danish ] = "Kolonne" ;
+ Text [ french ] = "Colonne" ;
+ Text [ swedish ] = "kolumn" ;
+ Text [ dutch ] = "Kolom" ;
+ Text [ spanish ] = "Columna" ;
+ Text [ english_us ] = "column" ;
+ Text[ chinese_simplified ] = "column_num";
+ Text[ russian ] = "Ñòîëáåö";
+ Text[ polish ] = "Kolumna";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "column_num";
+ Text[ arabic ] = "column_num";
+ Text[ dutch ] = "Kolom";
+ Text[ chinese_simplified ] = "column_num";
+ Text[ greek ] = "ÓôÞëç";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Spaltennummer der Zelle." ;
+ Text [ english ] = "is the column number to use in the cell reference." ;
+ Text [ norwegian ] = "Die Spaltennummer der Zelle." ;
+ Text [ italian ] = "è il numero di colonna da utilizzare nel riferimento di cella." ;
+ Text [ portuguese_brazilian ] = "Die Spaltennummer der Zelle." ;
+ Text [ portuguese ] = "é o número da coluna a usar na referência da célula." ;
+ Text [ finnish ] = "Die Spaltennummer der Zelle." ;
+ Text [ danish ] = "Cellens kolonnenummer." ;
+ Text [ french ] = "Le numéro de colonne de la cellule." ;
+ Text [ swedish ] = "Cellens kolumnnummer." ;
+ Text [ dutch ] = "Het kolomnummer van de cel." ;
+ Text [ spanish ] = "Número de columna de la celda." ;
+ Text [ english_us ] = "The column number of the cell." ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñµÄÁкÅ";
+ Text[ russian ] = "Íîìåð ñòîëáöà, èñïîëüçóåìûé â ññûëêå ÿ÷åéêè.";
+ Text[ polish ] = "Numer kolumny komórki.";
+ Text[ japanese ] = "¾Ù‚Ì—ñ”Ô†B";
+ Text[ chinese_traditional ] = "Àx¦s®æÄ渹";
+ Text[ arabic ] = "ÑÞã ÚãæÏ ÇáÎáíÉ.";
+ Text[ dutch ] = "Het kolomnummer van de cel.";
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñµÄÁкÅ";
+ Text[ greek ] = "Ï áñéèìüò óôÞëçò ôïõ êåëéïý.";
+ Text[ korean ] = "¼¿ÀÇ ¿­¹øÈ£ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Hücrenin sütun numarasý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "ABS" ;
+ Text [ english ] = "abs_num" ;
+ Text [ norwegian ] = "ABS" ;
+ Text [ italian ] = "ASS" ;
+ Text [ portuguese_brazilian ] = "ABS" ;
+ Text [ portuguese ] = "ABS" ;
+ Text [ finnish ] = "ABS" ;
+ Text [ danish ] = "ABS" ;
+ Text [ french ] = "ABS" ;
+ Text [ swedish ] = "ABS" ;
+ Text [ dutch ] = "ABS" ;
+ Text [ spanish ] = "ABS" ;
+ Text [ english_us ] = "ABS" ;
+ Text[ chinese_simplified ] = "abs_num";
+ Text[ russian ] = "ABS";
+ Text[ polish ] = "MODU£.LICZBY";
+ Text[ japanese ] = "â‘Î’l";
+ Text[ chinese_traditional ] = "abs_num";
+ Text[ arabic ] = "ABS";
+ Text[ dutch ] = "ABS";
+ Text[ chinese_simplified ] = "abs_num";
+ Text[ greek ] = "ABS";
+ Text[ korean ] = "ABS";
+ Text[ turkish ] = "ABS";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Gibt an, ob absolute oder relative Referenzierung verwendet wird." ;
+ Text [ english ] = "specifies the type of reference to return." ;
+ Text [ norwegian ] = "Gibt an, ob absolute oder relative Referenzierung verwendet wird." ;
+ Text [ italian ] = "specifica il tipo di riferimento da restituire." ;
+ Text [ portuguese_brazilian ] = "Gibt an, ob absolute oder relative Referenzierung verwendet wird." ;
+ Text [ portuguese ] = "determina se será usada uma referência absoluta ou relativa." ;
+ Text [ finnish ] = "Gibt an, ob absolute oder relative Referenzierung verwendet wird." ;
+ Text [ danish ] = "Specificerer om en absolut eller relativ referencetype skal bruges." ;
+ Text [ french ] = "Indique le type de référence à utiliser (absolue ou relative)." ;
+ Text [ swedish ] = "Anger om absolut eller relativ referens används." ;
+ Text [ dutch ] = "Geeft aan of er een absolute of relatieve verwijzing gebruikt wordt." ;
+ Text [ spanish ] = "Especifica si la referencia usada es absoluta o relativa." ;
+ Text [ english_us ] = "Specifies whether absolute or relative referencing is to be used." ;
+ Text[ chinese_simplified ] = "Ö¸¶¨Ê¹ÓõÄÊǾø¶ÔÒýÓû¹ÊÇÏà¶ÔÒýÓá£";
+ Text[ russian ] = "Çàäàíèå òèïà (àáñîëþòíûé èëè îòíîñèòåëüíûé) âîçâðàùàåìîé ññûëêè.";
+ Text[ polish ] = "Okreœla, czy zostan¹ u¿yte wzglêdne lub bezwzglêdne adresy.";
+ Text[ japanese ] = "â‘ΓI‚Ü‚½‚Í‘Š‘ΓIŽQÆ‚ðŽg—p‚·‚é‚©Žw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ü©w¨Ï¥Îªº¬Oµ´¹ï°Ñ·ÓÁÙ¬O¬Û¹ï°Ñ·Ó¡C";
+ Text[ arabic ] = "ÊÍÏÏ ãÇ ÅÐÇ ßÇä ÇáãÑÌÚ ÇáãÓÊÎÏã ãØáÞÇð Ãæ äÓÈíÇð.";
+ Text[ dutch ] = "Geeft aan of er een absolute of relatieve verwijzing gebruikt wordt.";
+ Text[ chinese_simplified ] = "Ö¸¶¨Ê¹ÓõÄÊǾø¶ÔÒýÓû¹ÊÇÏà¶ÔÒýÓá£";
+ Text[ greek ] = "Ïñßæåé áí èá ãßíåé ÷ñÞóç ôçò áðüëõôçò Þ ôçò ó÷åôéêÞò êáôá÷þñéóçò.";
+ Text[ korean ] = "»ç¿ëµÇ¾îÁú Àý´ë ¶Ç´Â °ü°è ÂüÁ¶¸¦ ÁöÁ¤ÇϽʽÿÀ.";
+ Text[ turkish ] = "Mutlak ya da göreceli referanstan hangisinin kullanýlacaðýný belirtir.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Tabelle" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Tabelle" ;
+ Text [ italian ] = "tabella" ;
+ Text [ portuguese_brazilian ] = "Tabelle" ;
+ Text [ portuguese ] = "Nome_texto" ;
+ Text [ finnish ] = "Tabelle" ;
+ Text [ danish ] = "Regneark" ;
+ Text [ french ] = "Feuille" ;
+ Text [ swedish ] = "tabell" ;
+ Text [ dutch ] = "Werkblad" ;
+ Text [ spanish ] = "hoja" ;
+ Text [ english_us ] = "sheet" ;
+ Text[ chinese_simplified ] = "sheet_text";
+ Text[ russian ] = "Òåêñò_ëèñòà";
+ Text[ polish ] = "Arkusz";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "sheet_text";
+ Text[ arabic ] = "sheet_text";
+ Text[ dutch ] = "Werkblad";
+ Text[ chinese_simplified ] = "sheet_text";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "½ÃÆ®";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Der Tabellenname des Zellbezugs." ;
+ Text [ english ] = "is text specifying the name of the worksheet or macro sheet to be used as the external reference." ;
+ Text [ norwegian ] = "Der Tabellenname des Zellbezugs." ;
+ Text [ italian ] = "è il testo indicante il nome del foglio di lavoro o del foglio macro che deve essere utilizzato come riferimento esterno." ;
+ Text [ portuguese_brazilian ] = "Der Tabellenname des Zellbezugs." ;
+ Text [ portuguese ] = "especifica o nome da folha de cálculo ou da folha da macro como referência externa." ;
+ Text [ finnish ] = "Der Tabellenname des Zellbezugs." ;
+ Text [ danish ] = "Cellereferencens regnearksnavn." ;
+ Text [ french ] = "Le nom de la feuille de calcul de la référence." ;
+ Text [ swedish ] = "Tabellnamnet för cellreferensen." ;
+ Text [ dutch ] = "De werkbladnaam van de celverwijzing" ;
+ Text [ spanish ] = "El nombre de la hoja de cálculo de la referencia de celda." ;
+ Text [ english_us ] = "The spreadsheet name of the cell reference." ;
+ Text[ chinese_simplified ] = "ʹÓõ¥Ôª¸ñÒýÓõŤ×÷±íÃû³Æ¡£";
+ Text[ russian ] = "Ñòðîêà, çàäàþùàÿ èìÿ ëèñòà, êîòîðûé èñïîëüçóåòñÿ êàê âíåøíÿÿ ññûëêà.";
+ Text[ polish ] = "Nazwa arkusza kalulacyjnego jako odwo³ania do komórki";
+ Text[ japanese ] = "¾ÙŽQÆ‚Ì•\\–¼";
+ Text[ chinese_traditional ] = "Àx¦s®æ°Ñ·Óªº¤u§@ªí¦WºÙ¡C";
+ Text[ arabic ] = "ÇÓã ÌÏæá ãÑÌÚ ÇáÎáíÉ.";
+ Text[ dutch ] = "De werkbladnaam van de celverwijzing";
+ Text[ chinese_simplified ] = "ʹÓõ¥Ôª¸ñÒýÓõŤ×÷±íÃû³Æ¡£";
+ Text[ greek ] = "Ôï üíïìá ôïõ ðßíáêá ìéáò áíáöïñÜò êåëéïý.";
+ Text[ korean ] = "¼¿ ÂüÁ¶ÀÇ ½ºÇÁ·¹µå ½ÃÆ® À̸§";
+ Text[ turkish ] = "Hücre referansýnýn tablo adý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function BEREICHE #*=-
+ Resource SC_OPCODE_AREAS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Bestimmt die Anzahl der Einzelbereiche, die zu einem (Mehrfach-)Bereich gehören. : Bestimmt die Anzahl der Einzelbereiche, die zu einem (Mehrfach-)Bereich geh÷ren. */
+ Text = "Bestimmt die Anzahl der Einzelbereiche, die zu einem (Mehrfach-)Bereich gehören." ;
+ Text [ english ] = "Returns the number of areas in a reference." ;
+ Text [ norwegian ] = "Bestimmt die Anzahl der Einzelbereiche, die zu einem (Mehrfach-)Bereich gehören." ;
+ Text [ italian ] = "Restituisce il numero delle singole aree appartenenti ad un'area (multipla)." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Anzahl der Einzelbereiche, die zu einem (Mehrfach-)Bereich gehören." ;
+ Text [ portuguese ] = "Devolve o número de áreas numa referência." ;
+ Text [ finnish ] = "Bestimmt die Anzahl der Einzelbereiche, die zu einem (Mehrfach-)Bereich gehören." ;
+ Text [ danish ] = "Bestemmer antallet af enkeltområder, som tilhører et (multi-)område." ;
+ Text [ french ] = "Renvoie le nombre de zones dans une plage (multiple)." ;
+ Text [ swedish ] = "Bestämmer antalet enskilda områden som tillhör ett (multi-)område." ;
+ Text [ dutch ] = "Geeft het aantal bereiken in een (meervoudige) verwijzing." ;
+ Text [ spanish ] = "Devuelve el número de áreas que pertenecen a un área de celdas (múltiple)." ;
+ Text [ english_us ] = "Returns the number of individual ranges that belong to a (multiple) range." ;
+ Text[ chinese_simplified ] = "È·¶¨ÒýÓÃÖаüº¬µÄÇøÓò¸öÊý¡£";
+ Text[ russian ] = "Îïðåäåëÿåò êîëè÷åñòâî îáëàñòåé â ññûëêå, îáðàçóþùèå äèàïàçîí.";
+ Text[ polish ] = "Okreœla iloœæ pojedynczych obszarów, które tworz¹ obszar z³o¿ony.";
+ Text[ japanese ] = "”͈͂Ɋ܂܂ê‚é—̈æ‚̌”‚ð•Ô‚µ‚Ü‚·B—̈æ‚Æ‚ÍA˜A‘±‚·‚éƒZƒ‹‚͈̔ÍA‚Ü‚½‚Í 1 ‚‚̃Zƒ‹‚Ì‚±‚Æ‚Å‚·B";
+ Text[ chinese_traditional ] = "½T©w°Ñ·Ó¤¤¥]§tªº°Ï°ì­Ó¼Æ¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÚÏÏ ÇáãäÇØÞ ÇáÝÑÏíÉ ÇáÊí ÊäÊãí Åáì ãäØÞÉ (ãÊÚÏÏÉ).";
+ Text[ dutch ] = "Geeft het aantal bereiken in een (meervoudige) verwijzing.";
+ Text[ chinese_simplified ] = "È·¶¨ÒýÓÃÖаüº¬µÄÇøÓò¸öÊý¡£";
+ Text[ greek ] = "Ïñßæåé ôï ðëÞèïò ôùí ìåìïíùìÝíùí ôìçìÜôùí ðïõ áíÞêïõí óå ìéá (ðïëëáðëÞ) ðåñéï÷Þ åðéëïãÞò.";
+ Text[ korean ] = "(´ÙÁß)¿µ¿ª¿¡ ¼ÓÇÏ´Â °³º°ÀûÀÎ ¿µ¿ªÀÇ ¼ö¸¦ ¹Ýȯ";
+ Text[ turkish ] = "(Çoklu) aralýða dahil bireysel aralýklarýn sayýsýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_BEREICHE );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "reference" ;
+ Text [ norwegian ] = "Bezug" ;
+ Text [ italian ] = "rif" ;
+ Text [ portuguese_brazilian ] = "Bezug" ;
+ Text [ portuguese ] = "Referência" ;
+ Text [ finnish ] = "Bezug" ;
+ Text [ danish ] = "Reference" ;
+ Text [ french ] = "Référence" ;
+ Text [ swedish ] = "referens" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ spanish ] = "ref" ;
+ Text [ english_us ] = "reference" ;
+ Text[ chinese_simplified ] = "reference";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ chinese_traditional ] = "reference";
+ Text[ arabic ] = "reference";
+ Text[ dutch ] = "Verwijzing";
+ Text[ chinese_simplified ] = "reference";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Bezug auf einen (Mehrfach-)Bereich." ;
+ Text [ english ] = "is a reference to a cell or range of cells and can refer to multiple areas." ;
+ Text [ norwegian ] = "Der Bezug auf einen (Mehrfach-)Bereich." ;
+ Text [ italian ] = "Il riferimento ad un'area (multipla)." ;
+ Text [ portuguese_brazilian ] = "Der Bezug auf einen (Mehrfach-)Bereich." ;
+ Text [ portuguese ] = "é uma referência a uma célula ou intervalo de células e pode referir-se a várias áreas." ;
+ Text [ finnish ] = "Der Bezug auf einen (Mehrfach-)Bereich." ;
+ Text [ danish ] = "En reference til et (multi-)område." ;
+ Text [ french ] = "La référence à une plage (multiple)." ;
+ Text [ swedish ] = "Referensen till ett (multi-)område." ;
+ Text [ dutch ] = "De verwijzing naar een (meervoudig) bereik." ;
+ Text [ spanish ] = "es la referencia a un área múltiple." ;
+ Text [ english_us ] = "The reference to a (multiple) range." ;
+ Text[ chinese_simplified ] = "ÒýÓÃÒ»¸ö(¶àÖØ)ÇøÓò¡£";
+ Text[ russian ] = "Ññûëêà íà îäíó îáëàñòü èëè äèàïàçîí.";
+ Text[ polish ] = "Odwo³anie do obszaru z³o¿onego.";
+ Text[ japanese ] = "•¡”‚̗̈æ‚ɑ΂·‚éŽQÆ(•¡”‘I‘ð‚µ‚½”͈Í)B";
+ Text[ chinese_traditional ] = "°Ñ·Ó¤@­Ó(¦h­«)°Ï°ì¡C";
+ Text[ arabic ] = "ãÑÌÚ äØÇÞ (ãÊÚÏÏ).";
+ Text[ dutch ] = "De verwijzing naar een (meervoudig) bereik.";
+ Text[ chinese_simplified ] = "ÒýÓÃÒ»¸ö(¶àÖØ)ÇøÓò¡£";
+ Text[ greek ] = "Ç áíáöïñÜ óå ìéá (ðïëëáðëÞ) ðåñéï÷Þ.";
+ Text[ korean ] = "¹üÀ§(´ÙÁß ¹üÀ§)¿¡ ´ëÇÑ ÂüÁ¶ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "(Çoklu) aralýða referans.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function WAHL #*=-
+ Resource SC_OPCODE_CHOSE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wählt einen Wert aus bis zu 30 Argumenten. : Wõhlt einen Wert aus bis zu 30 Argumenten. */
+ Text = "Wählt einen Wert aus bis zu 30 Argumenten." ;
+ Text [ english ] = "Uses index_num to return a value from the list of value arguments." ;
+ Text [ norwegian ] = "Wählt einen Wert aus bis zu 30 Argumenten." ;
+ Text [ italian ] = "Restituisce un valore da un massimo di 30 argomenti" ;
+ Text [ portuguese_brazilian ] = "Wählt einen Wert aus bis zu 30 Argumenten." ;
+ Text [ portuguese ] = "Selecciona um valor de uma lista com 30 argumentos." ;
+ Text [ finnish ] = "Wählt einen Wert aus bis zu 30 Argumenten." ;
+ Text [ danish ] = "Vælger en værdi fra en liste med op til 30 argumenter." ;
+ Text [ french ] = "Choisit une valeur dans une liste de 30 arguments maximum." ;
+ Text [ swedish ] = "Väljer ett värde från upp till 30 argument." ;
+ Text [ dutch ] = "Kiest een waarde uit een lijst van maximaal 30 argumenten." ;
+ Text [ spanish ] = "Elige un valor de una lista de hasta 30 argumentos." ;
+ Text [ english_us ] = "Selects a value from a list of up to 30 value arguments." ;
+ Text[ chinese_simplified ] = "´Ó 30 ¸öÊýÖµÖÐÑ¡Ò»¸öÊýÖµ¡£";
+ Text[ russian ] = "Âûáèðàåò çíà÷åíèå èç ñïèñêà äî 30 àðãóìåíòîâ.";
+ Text[ polish ] = "Wybiera wartoœæ z listy zawieraj¹cej do 30 argumentów.";
+ Text[ japanese ] = "²ÝÃÞ¯¸½‚ðŽg‚Á‚ÄAˆø”ؽĂ̒l(1`29)‚Ì’†‚©‚ç“Á’è‚Ì’l‚ð1‚‘I‘ð‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±q 30 ­Ó¼Æ­È¤¤¿ï¤@­Ó¼Æ­È¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÞíãÉ ãä ÞÇÆãÉ ÈåÇ 30 æÓíØÉ ßÍÏ ÃÞÕì.";
+ Text[ dutch ] = "Kiest een waarde uit een lijst van maximaal 30 argumenten.";
+ Text[ chinese_simplified ] = "´Ó 30 ¸öÊýÖµÖÐÑ¡Ò»¸öÊýÖµ¡£";
+ Text[ greek ] = "ÅðéëÝãåé ìéá ôéìÞ áðü Ýùò êáé 30 ïñßóìáôá.";
+ Text[ korean ] = "30±îÁöÀÇ µ¶¸³ º¯¼ö ¸ñ·Ï¿¡¼­ °ªÀ» ¼±ÅÃÇÕ´Ï´Ù.";
+ Text[ turkish ] = "En fazla 30 deðer arasýndan bir deðer seçer.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_WAHL );
+ VAR_ARGS+1; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Index" ;
+ Text [ english ] = "index_num" ;
+ Text [ norwegian ] = "Index" ;
+ Text [ italian ] = "indice" ;
+ Text [ portuguese_brazilian ] = "Index" ;
+ Text [ portuguese ] = "Núm_índice" ;
+ Text [ finnish ] = "Index" ;
+ Text [ danish ] = "Indeks" ;
+ Text [ french ] = "Indice" ;
+ Text [ swedish ] = "index" ;
+ Text [ dutch ] = "Index" ;
+ Text [ spanish ] = "índice" ;
+ Text [ english_us ] = "Index" ;
+ Text[ chinese_simplified ] = "index_num";
+ Text[ russian ] = "Íîìåð_èíäåêñà";
+ Text[ polish ] = "Indeks";
+ Text[ japanese ] = "²ÝÃÞ¯¸½";
+ Text[ chinese_traditional ] = "index_num";
+ Text[ arabic ] = "Index_num";
+ Text[ dutch ] = "Index";
+ Text[ chinese_simplified ] = "index_num";
+ Text[ greek ] = "ÅõñåôÞñéï";
+ Text[ korean ] = "»öÀÎ";
+ Text[ turkish ] = "Ýndis";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Index des Wertes (1..30), der ausgewählt wird. : Der Index des Wertes (1..30), der ausgewõhlt wird. */
+ Text = "Der Index des Wertes (1..30), der ausgewählt wird." ;
+ Text [ english ] = "specifies which value argument is selected." ;
+ Text [ norwegian ] = "Der Index des Wertes (1..30), der ausgewählt wird." ;
+ Text [ italian ] = "specifica quale argomento val viene selezionato." ;
+ Text [ portuguese_brazilian ] = "Der Index des Wertes (1..30), der ausgewählt wird." ;
+ Text [ portuguese ] = "determina qual o argumento de valor (1..30) que será seleccionado." ;
+ Text [ finnish ] = "Der Index des Wertes (1..30), der ausgewählt wird." ;
+ Text [ danish ] = "Indekset til værdien (1..30) som skal vælges." ;
+ Text [ french ] = "L'indice de la valeur (1...30) qui sera sélectionnée." ;
+ Text [ swedish ] = "Index för värdet (1..30) som väljs ut." ;
+ Text [ dutch ] = "De index van de gekozen waarde (1..30)." ;
+ Text [ spanish ] = "especifica el argumento de valor que se selecciona." ;
+ Text [ english_us ] = "The index of the value (1..30) selected." ;
+ Text[ chinese_simplified ] = "Ñ¡ÔñµÄÊý¾Ý (1..30) µÄË÷Òý¡£";
+ Text[ russian ] = "Çàäàíèå âûáèðàåìîãî çíà÷åíèÿ-àðãóìåíòà â äèàïàçîíå îò 1 äî 30.";
+ Text[ polish ] = "Okreœla, które wartoœci argumentu (1..30) zostan¹ wybrane.";
+ Text[ japanese ] = "‘I‘ð‚µ‚½’l(1`30)‚̲ÝÃÞ¯¸½B";
+ Text[ chinese_traditional ] = "¿ï¾Üªº¼Æ¾Ú (1..30) ªº¯Á¤Þ¡C";
+ Text[ arabic ] = "ÊÍÏíÏ æÓíØÉ ÇáÞíãÉ ÇáãÑÇÏ ÇÎÊíÇÑåÇ.";
+ Text[ dutch ] = "De index van de gekozen waarde (1..30).";
+ Text[ chinese_simplified ] = "Ñ¡ÔñµÄÊý¾Ý (1..30) µÄË÷Òý¡£";
+ Text[ greek ] = "Ôï åõñåôÞñéï ôçò ôéìÞò (1..30) ôï ïðïßï åðéëÝ÷èçêå.";
+ Text[ korean ] = "°ªÀÇ »öÀÎ (1..30)ÀÌ ¼±ÅõǾú½À´Ï´Ù.";
+ Text[ turkish ] = "Seçilen deðerin (1..30) indisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Wert " ;
+ Text [ english ] = "value " ;
+ Text [ norwegian ] = "Wert " ;
+ Text [ italian ] = "Valore " ;
+ Text [ portuguese_brazilian ] = "Wert " ;
+ Text [ portuguese ] = "Valor " ;
+ Text [ finnish ] = "Wert " ;
+ Text [ danish ] = "Værdi " ;
+ Text [ french ] = "Valeur " ;
+ Text [ swedish ] = "värde " ;
+ Text [ dutch ] = "Waarde " ;
+ Text [ spanish ] = "valor " ;
+ Text [ english_us ] = "value " ;
+ Text[ chinese_simplified ] = "value ";
+ Text[ russian ] = "Çíà÷åíèå ";
+ Text[ polish ] = "WartoϾ ";
+ Text[ japanese ] = "’l ";
+ Text[ chinese_traditional ] = "value ";
+ Text[ arabic ] = "ÇáÞíãÉ ";
+ Text[ dutch ] = "Waarde ";
+ Text[ chinese_simplified ] = "value ";
+ Text[ greek ] = "ÔéìÞ ";
+ Text[ korean ] = "°ª ";
+ Text[ turkish ] = "Deðer ";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wert 1; Wert 2;... Die Liste der Argumente, aus der ein Wert ausgewählt wird. : Wert 1; Wert 2;... Die Liste der Argumente, aus der ein Wert ausgewõhlt wird. */
+ Text = "Wert 1; Wert 2;... Die Liste der Argumente, aus der ein Wert ausgewählt wird." ;
+ Text [ english ] = "are 1 to 29 value arguments from which CHOOSE selects a value or an action to perform based on index_num." ;
+ Text [ norwegian ] = "Wert 1; Wert 2;... Die Liste der Argumente, aus der ein Wert ausgewählt wird." ;
+ Text [ italian ] = "sono da 1 a 29 argomenti tra i quali SCEGLI seleziona un valore o un'operazione da eseguire in base a indice." ;
+ Text [ portuguese_brazilian ] = "Wert 1; Wert 2;... Die Liste der Argumente, aus der ein Wert ausgewählt wird." ;
+ Text [ portuguese ] = "Valor1; valor2 ... são de 1 a 29 argumentos de valor a partir dos quais SELECCIONAR escolhe um valor ou uma acção a ser realizada com base no núm_índice." ;
+ Text [ finnish ] = "Wert 1; Wert 2;... Die Liste der Argumente, aus der ein Wert ausgewählt wird." ;
+ Text [ danish ] = "Værdi 1; værdi 2; ... listen af argumenter som en værdi skal vælges fra." ;
+ Text [ french ] = "Valeur 1, valeur 2, ... constituent la liste des arguments dans laquelle la fonction sélectionne une valeur." ;
+ Text [ swedish ] = "värde 1; värde 2;... Argumentlistan från vilken ett värde väljs ut." ;
+ Text [ dutch ] = "Waarde 1; Waarde 2;... De lijst van argumenten waaruit een waarde wordt gekozen." ;
+ Text [ spanish ] = "Valor 1: Valor 2; ... es la lista de argumentos de la cual se desea elegir un valor." ;
+ Text [ english_us ] = "Value 1, value 2,... The list of arguments from which a value is chosen." ;
+ Text[ chinese_simplified ] = "ÊýÖµ 1; ÊýÖµ 2;... ÓÃÓÚ½øÐÐÊý¾ÝÑ¡ÔñµÄÊý¾Ý±í¡£";
+ Text[ russian ] = "Çíà÷åíèå 1; çíà÷åíèå 2;... îò 1 äî 29 àðãóìåíòîâ-çíà÷åíèé, èç êîòîðûõ ÂÛÁÎÐ, èïîëüçóÿ íîìåð_èíäåêñà, âûáèðàåò çíà÷åíèå èëè âûïîëíÿåìîå äåéñòâèå.";
+ Text[ polish ] = "Wartoœæ 1; Wartoœæ 2;... Lista argumentów, z której ma zostaæ wybrana wartoœæ.";
+ Text[ japanese ] = "’l1¤’l2¤...‚͈ø”ؽẰ–Ú‚Æ‚È‚è‘I‘ð‚³‚ê‚é’lB";
+ Text[ chinese_traditional ] = "¼Æ­È 1; ¼Æ­È 2;... ¥Î¤_¶i¦æ¼Æ¾Ú¿ï¾Üªº¼Æ¾Úªí¡C";
+ Text[ arabic ] = "value1;value2... ÞÇÆãÉ ÇáæÓÇÆØ ÇáÊí ÊÑíÏ ÊÍÏíÏ ÃÍÏ ÇáÞíã ãäåÇ.";
+ Text[ dutch ] = "Waarde 1; Waarde 2;... De lijst van argumenten waaruit een waarde wordt gekozen.";
+ Text[ chinese_simplified ] = "ÊýÖµ 1; ÊýÖµ 2;... ÓÃÓÚ½øÐÐÊý¾ÝÑ¡ÔñµÄÊý¾Ý±í¡£";
+ Text[ greek ] = "ÔéìÞ 1;ÔéìÞ2;... Ç ëßóôá ôùí ïñéóìÜôùí áðü ôçí ïðïßá èá ãßíåé åðéëïãÞ ìéáò ôéìÞò.";
+ Text[ korean ] = "°ª 1, °ª 2,... °ªÀÌ ¼±ÅÃµÉ µ¶¸³ º¯¼ö ¸ñ·ÏÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer 1; deðer 2;... Deðer seçimi yapýlacak deðiþken listesi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SPALTE #*=-
+ Resource SC_OPCODE_COLUMN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die interne Spaltennummer eines Bezugs." ;
+ Text [ english ] = "Returns the column number of the given reference." ;
+ Text [ norwegian ] = "Bestimmt die interne Spaltennummer eines Bezugs." ;
+ Text [ italian ] = "Restituisce il numero di colonna interno di un riferimento." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die interne Spaltennummer eines Bezugs." ;
+ Text [ portuguese ] = "Devolve o número de colunas da referência dada." ;
+ Text [ finnish ] = "Bestimmt die interne Spaltennummer eines Bezugs." ;
+ Text [ danish ] = "Bestemmer en references interne kolonnenummer." ;
+ Text [ french ] = "Renvoie le numéro de colonne interne d'une référence." ;
+ Text [ swedish ] = "Bestämmer det interna kolumnnumret för en referens." ;
+ Text [ dutch ] = "Geeft het kolomnummer van een verwijzing." ;
+ Text [ spanish ] = "Devuelve el número interno de columna de una referencia dada." ;
+ Text [ english_us ] = "Returns the internal column number of a reference." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÒýÓõÄÄÚ²¿Áкš£";
+ Text[ russian ] = "Âîçâðàùàåò íîìåð ñòîëáöà, íà êîòîðûé óêàçûâàåò ññûëêà.";
+ Text[ polish ] = "Okreœla wewnêtrzny numer kolumny podanego odwo³ania.";
+ Text[ japanese ] = "ˆø”‚Æ‚µ‚ÄŽw’肵‚½”͈̗͂ñ”Ô†‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó°Ñ·Óªº¤º³¡Ä渹¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÑÞã ÇáÚãæÏ Ýí ÇáãÑÌÚ ÇáãÚØì.";
+ Text[ dutch ] = "Geeft het kolomnummer van een verwijzing.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÒýÓõÄÄÚ²¿Áкš£";
+ Text[ greek ] = "Ïñßæåé ôïí åóùôåñéêü áñéèìü óôÞëçò ìéáò áíáöïñÜò.";
+ Text[ korean ] = "ÂüÁ¶ÀÇ ³»ºÎ ¿­ ¹øÈ£¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Referansýn iç sütun numarasýný bulur.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_SPALTE );
+ 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "reference" ;
+ Text [ norwegian ] = "Bezug" ;
+ Text [ italian ] = "rif" ;
+ Text [ portuguese_brazilian ] = "Bezug" ;
+ Text [ portuguese ] = "Referência" ;
+ Text [ finnish ] = "Bezug" ;
+ Text [ danish ] = "Reference" ;
+ Text [ french ] = "Référence" ;
+ Text [ swedish ] = "referens" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ spanish ] = "ref" ;
+ Text [ english_us ] = "reference" ;
+ Text[ chinese_simplified ] = "reference";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ chinese_traditional ] = "reference";
+ Text[ arabic ] = "reference";
+ Text[ dutch ] = "Verwijzing";
+ Text[ chinese_simplified ] = "reference";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Bezug auf eine Zelle oder einen Bereich." ;
+ Text [ english ] = "is the cell or range of cells for which you want the column number." ;
+ Text [ norwegian ] = "Der Bezug auf eine Zelle oder einen Bereich." ;
+ Text [ italian ] = "Il riferimento a una cella o a un'area." ;
+ Text [ portuguese_brazilian ] = "Der Bezug auf eine Zelle oder einen Bereich." ;
+ Text [ portuguese ] = "é a referência de células ou intervalos para os quais se deseja encontrar o número de colunas." ;
+ Text [ finnish ] = "Der Bezug auf eine Zelle oder einen Bereich." ;
+ Text [ danish ] = "Referencen til en celle eller et område." ;
+ Text [ french ] = "La référence à une cellule ou une plage." ;
+ Text [ swedish ] = "Referensen till en cell eller ett område." ;
+ Text [ dutch ] = "Verwijzing naar een cel of een bereik." ;
+ Text [ spanish ] = "es la referencia a una celda o un área de celdas cuyo número de columna se desea conocer." ;
+ Text [ english_us ] = "The reference to a cell or a range." ;
+ Text[ chinese_simplified ] = "Òª»ñµÃÆäÁбêµÄµ¥Ôª¸ñ»òµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "ß÷åéêà èëè äèàïàçîí, äëÿ êîòîðûõ îïðåäåëÿåòñÿ íîìåð ñòîëáöà.";
+ Text[ polish ] = "Odwo³anie do komórki lub obszaru.";
+ Text[ japanese ] = "—ñ”Ô†‚𒲂ׂé¾Ù‚Ü‚½‚;͈ٔ͂̎QÆ‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "­nÀò±o¨ä¦C¼ÐªºÀx¦s®æ©ÎÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "ÇáãÑÌÚ Åáì ÎáíÉ Ãæ äØÇÞ.";
+ Text[ dutch ] = "Verwijzing naar een cel of een bereik.";
+ Text[ chinese_simplified ] = "Òª»ñµÃÆäÁбêµÄµ¥Ôª¸ñ»òµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç áíáöïñÜ óå Ýíá êåëß Þ óå ìéá ðåñéï÷Þ.";
+ Text[ korean ] = "¼¿À̳ª ¹üÀ§¿¡ ´ëÇÑ ÂüÁ¶ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Hücre ya da aralýða alýnan referans.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZEILE #*=-
+ Resource SC_OPCODE_ROW
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die interne Zeilennummer eines Bezugs." ;
+ Text [ english ] = "Returns the row number of a reference." ;
+ Text [ norwegian ] = "Bestimmt die interne Zeilennummer eines Bezugs." ;
+ Text [ italian ] = "Restituisce il numero di riga interno di un riferimento." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die interne Zeilennummer eines Bezugs." ;
+ Text [ portuguese ] = "Devolve o número de linha de uma referência." ;
+ Text [ finnish ] = "Bestimmt die interne Zeilennummer eines Bezugs." ;
+ Text [ danish ] = "Bestemmer en references interne rækkenummer." ;
+ Text [ french ] = "Détermine le numéro de ligne interne d'une référence." ;
+ Text [ swedish ] = "Bestämmer det interna radnumret för en referens." ;
+ Text [ dutch ] = "Geeft als resultaat het rijnummer van een verwijzing." ;
+ Text [ spanish ] = "Devuelve el número de fila de una referencia." ;
+ Text [ english_us ] = "Defines the internal row number of a reference." ;
+ Text[ chinese_simplified ] = "¸ø¶¨ÒýÓõÄÐкš£";
+ Text[ russian ] = "Îïðåäåëÿåò íîìåð ñòðîêè ññûëêè.";
+ Text[ polish ] = "Okreœla wewnêtrzny numer wiersza w odwo³aniu.";
+ Text[ japanese ] = "Žw’肵‚½¾Ù‚Ü‚½‚;͈ٔ͂Ìs”Ô†‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ü©w°Ñ·Óªº¦C¸¹¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÑÞã ÇáÕÝ ÇáÏÇÎáí áãÑÌÚ.";
+ Text[ dutch ] = "Geeft als resultaat het rijnummer van een verwijzing.";
+ Text[ chinese_simplified ] = "¸ø¶¨ÒýÓõÄÐкš£";
+ Text[ greek ] = "Ïñßæåé ôïí åóùôåñéêü áñéèìü ôçò ãñáììÞò ìéáò áíáöïñÜò.";
+ Text[ korean ] = "ÂüÁ¶ÀÇ ³»ºÎÇàÀÇ ¼ö¸¦ Á¤ÀÇ";
+ Text[ turkish ] = "Referansýn iç satýr numarasýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_ZEILE );
+ 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "reference" ;
+ Text [ norwegian ] = "Bezug" ;
+ Text [ italian ] = "rif" ;
+ Text [ portuguese_brazilian ] = "Bezug" ;
+ Text [ portuguese ] = "Referência" ;
+ Text [ finnish ] = "Bezug" ;
+ Text [ danish ] = "Reference" ;
+ Text [ french ] = "Référence" ;
+ Text [ swedish ] = "referens" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ spanish ] = "ref" ;
+ Text [ english_us ] = "reference" ;
+ Text[ chinese_simplified ] = "reference";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "reference";
+ Text[ arabic ] = "reference";
+ Text[ dutch ] = "Verwijzing";
+ Text[ chinese_simplified ] = "reference";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Bezug auf eine Zelle oder einen Bereich." ;
+ Text [ english ] = "is the cell or range of cells for which you want the row number." ;
+ Text [ norwegian ] = "Der Bezug auf eine Zelle oder einen Bereich." ;
+ Text [ italian ] = "Íl riferimento a una cella o a un'area." ;
+ Text [ portuguese_brazilian ] = "Der Bezug auf eine Zelle oder einen Bereich." ;
+ Text [ portuguese ] = "é a célula ou intervalo de células para os quais deseja obter o número de linha." ;
+ Text [ finnish ] = "Der Bezug auf eine Zelle oder einen Bereich." ;
+ Text [ danish ] = "Referencen til en celle eller et område." ;
+ Text [ french ] = "La référence à une cellule ou une plage." ;
+ Text [ swedish ] = "Referensen till en cell eller ett område." ;
+ Text [ dutch ] = "De verwijzing naar een cel of een cellenbereik." ;
+ Text [ spanish ] = "es la celda o área de celdas de los que se desea conocer el número de fila." ;
+ Text [ english_us ] = "The reference to a cell or a range." ;
+ Text[ chinese_simplified ] = "ÊÇÐèÒªµÃµ½ÆäÐкŵĵ¥Ôª¸ñ»òµ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "ß÷åéêà èëè äèàïàçîí ÿ÷ååê, äëÿ êîòîðûõ îïðåäåëÿåòñÿ íîìåð ñòðîêè.";
+ Text[ polish ] = "Odwo³anie do komórki lub obszaru.";
+ Text[ japanese ] = "s”Ô†‚𒲂ׂé¾Ù‚Ü‚½‚;͈ٔÍB";
+ Text[ chinese_traditional ] = "¬O»Ý­n±o¨ì¨äÄ渹ªºÀx¦s®æ©ÎÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "ÇáÎáíÉ Ãæ äØÇÞ ÇáÎáÇíÇ ÇáãÑÇÏ ãÚÑÝÉ ÑÞã ÇáÕÝ ÇáÎÇÕ Èå.";
+ Text[ dutch ] = "De verwijzing naar een cel of een cellenbereik.";
+ Text[ chinese_simplified ] = "ÊÇÐèÒªµÃµ½ÆäÐкŵĵ¥Ôª¸ñ»òµ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç áíáöïñÜ óå Ýíá êåëß Þ óå ìéá ðåñéï÷Þ.";
+ Text[ korean ] = "¼¿ ¶Ç´Â ¹üÀ§¿¡ ´ëÇÑ ÂüÁ¶ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Hücre ya da aralýk referansý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TABELLE #*=-
+ Resource SC_OPCODE_TABLE
+ {
+ String 1 // Description
+ {
+ Text = "Bestimmt die interne Tabellennummer eines Bezugs oder einer Zeichenkette." ;
+ Text [ english ] = "Returns the sheet number of the given reference or string." ;
+ Text [ portuguese ] = "Devolve o número da folha das referência ou série de caracteres fornecidas." ;
+ Text [ english_us ] = "Returns the internal sheet number of a reference or a string." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die interne Tabellennummer eines Bezugs oder einer Zeichenkette." ;
+ Text [ swedish ] = "Bestämmer det interna tabellnumret för en referens eller en teckensträng." ;
+ Text [ danish ] = "Bestemmer en references eller strengs interne regnearksnummer." ;
+ Text [ italian ] = "Stabilisce il numero interno di tabella di un riferimento o di una stringa di caratteri." ;
+ Text [ spanish ] = "Establece el número interno de hoja de una referencia o de una cadena de caracteres." ;
+ Text [ french ] = "Détermine le numéro de feuille interne d'une référence ou d'une chaîne de caractères." ;
+ Text [ dutch ] = "Bepaalt het interne werkbladnummer van een verwijzing of een tekenreeks." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÒýÓûòÒ»¸ö×Ö´®µÄ¹¤×÷±íºÅÂë¡£";
+ Text[ russian ] = "Îïðåäåëÿåò íîìåð ëèñòà çàäàííîé ññûëêè èëè ñòðîêè.";
+ Text[ polish ] = "Wyznacza wewnêtrzny numer tabeli odwo³ania lub ci¹gu znaków.";
+ Text[ japanese ] = "ŽQÆ‚Ü‚½‚Í•¶Žš—ñ‚©‚çÜ°¸¼°ÄÅÝÊÞ°‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó°Ñ·Ó©Î¤@­Ó¦r¦êªº¤u§@ªí¸¹½X¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÑÞã ÇáÌÏæá ÇáÏÇÎáí áãÑÌÚ Ãæ áÓáÓáÉ äÕíÉ.";
+ Text[ dutch ] = "Bepaalt het interne werkbladnummer van een verwijzing of een tekenreeks.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÒýÓûòÒ»¸ö×Ö´®µÄ¹¤×÷±íºÅÂë¡£";
+ Text[ greek ] = "Ïñßæåé ôïí åóùôåñéêü áñéèìü ðßíáêá ìéáò áíáöïñÜò Þ ìéáò áêïëïõèßáò ÷áñáêôÞñùí.";
+ Text[ korean ] = "ÂüÁ¶¶Ç´Â ¹®ÀÚ¿­ÀÇ ³»ºÎ ½ÃÆ® ¼ö¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Referans ya da karakter zincirinin iç tablo numarasýný verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_TABELLE );
+ 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "reference" ;
+ Text [ english_us ] = "reference" ;
+ Text [ portuguese_brazilian ] = "Bezug" ;
+ Text [ swedish ] = "Referens" ;
+ Text [ danish ] = "Reference" ;
+ Text [ italian ] = "Riferimento" ;
+ Text [ spanish ] = "Referencia" ;
+ Text [ french ] = "Référence" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ portuguese ] = "Referência" ;
+ Text[ chinese_simplified ] = "Reference";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ chinese_traditional ] = "Reference";
+ Text[ arabic ] = "Reference";
+ Text[ dutch ] = "Verwijzing";
+ Text[ chinese_simplified ] = "Reference";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Der Bezug auf eine Zelle oder einen Bereich oder die Zeichenkette eines Tabellennamens." ;
+ Text [ english ] = "is the cell or range of cells or the string of a sheet name for which you want the sheet number." ;
+ Text [ english_us ] = "The reference to a cell or a range or the character string of a sheet name." ;
+ Text [ portuguese_brazilian ] = "Der Bezug auf eine Zelle oder einen Bereich oder die Zeichenkette eines Tabellennamens." ;
+ Text [ swedish ] = "Referensen till en cell eller ett område eller till ett tabellnamns teckensträng." ;
+ Text [ danish ] = "Referencen til en celle, et område eller et tabelnavns streng." ;
+ Text [ italian ] = "Il riferimento ad una cella o ad un'area o la stringa di caratteri del nome di una tabella." ;
+ Text [ spanish ] = "La referencia a una celda, a un área o la cadena de caracteres de un nombre de hoja." ;
+ Text [ french ] = "La référence à une cellule ou une plage ou une chaîne de caractères d'un nom de feuille." ;
+ Text [ dutch ] = "De verwijzing naar een cel, een bereik of naar de tekenreeks van een werkbladnaam." ;
+ Text [ portuguese ] = "A referência a uma célula ou intervalo de células ou a série de caracteres do nome da folha." ;
+ Text[ chinese_simplified ] = "¶ÔÒ»¸öµ¥Ôª¸ñ»òÒ»¸öÇøÓò»òÒ»¸ö¹¤×÷±íÃû³Æ×Ö´®µÄÒýÓá£";
+ Text[ russian ] = "Ññûëêà íà ÿ÷åéêó, äèàïàçîí ÿ÷ååê èëè ñòðîêó èìåíè ëèñòà.";
+ Text[ polish ] = "Odwo³anie do komórki lub obszaru lub ci¹g znaków nazwy arkusza.";
+ Text[ japanese ] = "¼°Äã‚̾ÙA¾Ù”͈͂܂½‚Í•¶Žš—ñ‚Ö‚ÌŽQÆB";
+ Text[ chinese_traditional ] = "°Ñ·Ó¤@­Ó¤u§@ªíªºÀx¦s®æ©Î¤@­Ó°Ï°ì©Î¤@­Ó¦r¦ê¡C";
+ Text[ arabic ] = "ÇáãÑÌÚ Åáì ÎáíÉ Ãæ äØÇÞ Ãæ ÓáÓáÉ ÃÍÑÝ ãä ÇÓã ÌÏæá.";
+ Text[ dutch ] = "De verwijzing naar een cel, een bereik of naar de tekenreeks van een werkbladnaam.";
+ Text[ chinese_simplified ] = "¶ÔÒ»¸öµ¥Ôª¸ñ»òÒ»¸öÇøÓò»òÒ»¸ö¹¤×÷±íÃû³Æ×Ö´®µÄÒýÓá£";
+ Text[ greek ] = "Ç áíáöïñÜ óå Ýíá êåëß Þ óå ìéá ðåñéï÷Þ Þ ç áêïëïõèßá ÷áñáêôÞñùí åíüò ïíüìáôïò ðßíáêá.";
+ Text[ korean ] = "¼¿À̳ª ¹üÀ§ ¶Ç´Â ½ÃÆ® À̸§ÀÇ ¹®ÀÚ¿­¿¡ ´ëÇÑ ÂüÁ¶ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Hücre ya da aralýk ya da bir tablo adýnýn karakter zincirine referans.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SPALTEN #*=-
+ Resource SC_OPCODE_COLUMNS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Anzahl der Spalten eines Bezugs oder einer Matrix." ;
+ Text [ english ] = "Returns the number of columns in an array or reference." ;
+ Text [ norwegian ] = "Bestimmt die Anzahl der Spalten eines Bezugs oder einer Matrix." ;
+ Text [ italian ] = "Restituisce il numero di colonne in una matrice o in un riferimento." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Anzahl der Spalten eines Bezugs oder einer Matrix." ;
+ Text [ portuguese ] = "Devolve o número de colunas numa referência ou matriz." ;
+ Text [ finnish ] = "Bestimmt die Anzahl der Spalten eines Bezugs oder einer Matrix." ;
+ Text [ danish ] = "Bestemmer antallet af kolonner i en reference eller en matrix." ;
+ Text [ french ] = "Renvoie le nombre de colonnes d'une référence ou d'une matrice." ;
+ Text [ swedish ] = "Bestämmer antalet kolumner för en referens eller en matris." ;
+ Text [ dutch ] = "Bepaalt het aantal kolommen in een verwijzing of een matrix." ;
+ Text [ spanish ] = "Determina el número de columnas de una referencia o una matriz." ;
+ Text [ english_us ] = "Returns the number of columns in an array or reference." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÒýÓûòÊý×é(¾ØÕó)µÄÁÐÊý¡£";
+ Text[ russian ] = "Âîçâðàùàåò êîëè÷åñòâî ñòîëáöîâ â ìàññèâå èëè ññûëêå.";
+ Text[ polish ] = "Wyznacza liczbê kolumn odwo³ania lub macierzy.";
+ Text[ japanese ] = "¾Ù‚ÌŽQÆ‚Ü‚½‚Í”z—ñ‚Ì—ñ”Ô†‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó°Ñ·Ó©Î¼Æ²ÕªºÄæ¼Æ¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÑÞã ÇáÃÚãÏÉ Ýí ãÑÌÚ Ãæ ÕÝíÝ.";
+ Text[ dutch ] = "Bepaalt het aantal kolommen in een verwijzing of een matrix.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÒýÓûòÊý×é(¾ØÕó)µÄÁÐÊý¡£";
+ Text[ greek ] = "Ïñßæåé ôï ðëÞèïò ôùí óôçëþí ìéáò áíáöïñÜò Þ ìéáò ìÞôñáò.";
+ Text[ korean ] = "Çà·Ä ¶Ç´Â ÂüÁ¶ ¿­ÀÇ ¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Referans ya da matrisin sütun sayýsýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_SPALTEN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Matrix" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Matrix" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Matrix" ;
+ Text [ danish ] = "Matrix" ;
+ Text [ french ] = "Matrice" ;
+ Text [ swedish ] = "matris" ;
+ Text [ dutch ] = "Matrix" ;
+ Text [ spanish ] = "matriz" ;
+ Text [ english_us ] = "array" ;
+ Text[ chinese_simplified ] = "array";
+ Text[ russian ] = "Ìàññèâ";
+ Text[ polish ] = "Macierz";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Matrix";
+ Text[ chinese_simplified ] = "array";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä";
+ Text[ turkish ] = "Matris";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix (der Bezug), deren Spaltenanzahl bestimmt wird." ;
+ Text [ english ] = "is an array or array formula, or a reference to a range of cells for which you want the number of columns." ;
+ Text [ norwegian ] = "Die Matrix (der Bezug), deren Spaltenanzahl bestimmt wird." ;
+ Text [ italian ] = "è una matrice o una formula matrice oppure un riferimento ad un intervallo di celle di cui si desidera il numero di colonne." ;
+ Text [ portuguese_brazilian ] = "Die Matrix (der Bezug), deren Spaltenanzahl bestimmt wird." ;
+ Text [ portuguese ] = "é uma matriz, fórmula matricial ou uma referência a um intervalo de células cujo número de colunas deseja obter." ;
+ Text [ finnish ] = "Die Matrix (der Bezug), deren Spaltenanzahl bestimmt wird." ;
+ Text [ danish ] = "Den matrix (den reference) hvis kolonneantal skal bestemmes." ;
+ Text [ french ] = "La matrice (référence) dont vous voulez obtenir le nombre de colonnes." ;
+ Text [ swedish ] = "Matrisen (referensen) vars kolumnantal bestäms." ;
+ Text [ dutch ] = "De matrix (de verwijzing), waarvan het aantal kolommen wordt bepaald." ;
+ Text [ spanish ] = "es la matriz (la referencia), cuyo número de columnas se desea determinar." ;
+ Text [ english_us ] = "The array (reference) for which the number of columns is to be determined." ;
+ Text[ chinese_simplified ] = "Ҫȷ¶¨ÆäÁÐÊýµÄµ¥Ôª¸ñÇøÓò(ÒýÓÃ)¡£";
+ Text[ russian ] = "Ìàññèâ (èëè ññûëêà íà äèàïàçîí), â êîòîðîì îïðåäåëÿåòñÿ êîëè÷åñòâî ñòîëáöîâ.";
+ Text[ polish ] = "Macierz (odwo³anie), której liczba kolumn ma zostaæ obliczona.";
+ Text[ japanese ] = "—ñ”Ô†‚ª•Ô‚³‚ê‚é”z—ñ‚Ü‚½‚;َQÆB";
+ Text[ chinese_traditional ] = "­n­pºâ¨äÄæ¼Æªº¼Æ²Õ©ÎÀx¦s®æ°Ï°ì°Ñ·Ó¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ (ÇáãÑÌÚ) ÇáÐí íÌÈ ÊÍÏíÏ ÚÏÏ ÃÚãÏÊå.";
+ Text[ dutch ] = "De matrix (de verwijzing), waarvan het aantal kolommen wordt bepaald.";
+ Text[ chinese_simplified ] = "Ҫȷ¶¨ÆäÁÐÊýµÄµ¥Ôª¸ñÇøÓò(ÒýÓÃ)¡£";
+ Text[ greek ] = "Ç ìÞôñá (ç áíáöïñÜ) ôçò ïðïßáò ïñßæåôáé ôï ðëÞèïò óôçëþí.";
+ Text[ korean ] = "¿­ÀÇ ¼ö°¡ ÁöÁ¤µÉ Çà·Ä(ÂüÁ¶)ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sütun sayýsý belirlenecek matris (referans).";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZEILEN #*=-
+ Resource SC_OPCODE_ROWS
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Anzahl der Zeilen eines Bezugs oder einer Matrix." ;
+ Text [ english ] = "Returns the number of rows in a reference or array." ;
+ Text [ norwegian ] = "Bestimmt die Anzahl der Zeilen eines Bezugs oder einer Matrix." ;
+ Text [ italian ] = "Restituisce il numero di righe in un riferimento o in una matrice." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Anzahl der Zeilen eines Bezugs oder einer Matrix." ;
+ Text [ portuguese ] = "Devolve o número de linhas numa referência ou matriz." ;
+ Text [ finnish ] = "Bestimmt die Anzahl der Zeilen eines Bezugs oder einer Matrix." ;
+ Text [ danish ] = "Bestemmer antallet af rækker i en reference eller en matrix." ;
+ Text [ french ] = "Donne le nombre de lignes d'une référence ou d'une matrice." ;
+ Text [ swedish ] = "Bestämmer antalet rader i en referens eller matris." ;
+ Text [ dutch ] = "Geeft als resultaat het aantal rijen in een verwijzing of matrix." ;
+ Text [ spanish ] = "Devuelve el número de filas de una referencia o matriz." ;
+ Text [ english_us ] = "Returns the number of rows in a reference or array." ;
+ Text[ chinese_simplified ] = "¸ø¶¨ÒýÓûòÊý×éµÄÐÐÊý¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ÷èñëî ñòðîê â ññûëêå èëè ìàññèâå.";
+ Text[ polish ] = "Wyznacza liczbê wierszy w adresie lub macierzy.";
+ Text[ japanese ] = "¾Ù”͈͂܂½‚Í”z—ñ‚Ìs”‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ü©w°Ñ·Ó©Î¼Æ²Õªº¦C¼Æ¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÚÏÏ ÕÝæÝ ãÑÌÚ Ãæ ÕÝíÝ.";
+ Text[ dutch ] = "Geeft als resultaat het aantal rijen in een verwijzing of matrix.";
+ Text[ chinese_simplified ] = "¸ø¶¨ÒýÓûòÊý×éµÄÐÐÊý¡£";
+ Text[ greek ] = "Ïñßæåé ôï ðëÞèïò ôùí ãñáììþí ìéáò áíáöïñÜò Þ ìéáò ìÞôñáò.";
+ Text[ korean ] = "ÂüÁ¶ ¶Ç´Â Çà·Ä¿¡ ÀÖ´Â ÇàÀÇ ¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Referans ya da matris satýr sayýsýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_ZEILEN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Matrix" ;
+ Text [ english ] = "array" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Matrix" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Matrix" ;
+ Text [ danish ] = "Matrix" ;
+ Text [ french ] = "Matrice" ;
+ Text [ swedish ] = "matris" ;
+ Text [ dutch ] = "Matrix" ;
+ Text [ spanish ] = "matriz" ;
+ Text [ english_us ] = "array" ;
+ Text[ chinese_simplified ] = "array";
+ Text[ russian ] = "Ìàññèâ";
+ Text[ polish ] = "Macierz";
+ Text[ japanese ] = "”z—ñ";
+ Text[ chinese_traditional ] = "array";
+ Text[ arabic ] = "Array";
+ Text[ dutch ] = "Matrix";
+ Text[ chinese_simplified ] = "array";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä";
+ Text[ turkish ] = "Matris";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Matrix (der Bezug), deren Zeilenanzahl bestimmt wird." ;
+ Text [ english ] = "is an array, an array formula or a reference to a range of cells for which you want the number of rows." ;
+ Text [ norwegian ] = "Die Matrix (der Bezug), deren Zeilenanzahl bestimmt wird." ;
+ Text [ italian ] = "è una matrice o una formula matrice oppure un riferimento ad un intervallo di celle di cui si desidera il numero di righe." ;
+ Text [ portuguese_brazilian ] = "Die Matrix (der Bezug), deren Zeilenanzahl bestimmt wird." ;
+ Text [ portuguese ] = "é uma matriz, uma fórmula matricial ou uma referência a um intervalo de células cujo número de linhas deseja obter." ;
+ Text [ finnish ] = "Die Matrix (der Bezug), deren Zeilenanzahl bestimmt wird." ;
+ Text [ danish ] = "Den matrix (den reference) hvis rækkeantal skal bestemmes." ;
+ Text [ french ] = "La matrice (référence) dont vous voulez obtenir le nombre de lignes." ;
+ Text [ swedish ] = "Matrisen (referensen) vars radantal bestäms." ;
+ Text [ dutch ] = "De matrix (de verwijzing) waarvan het aantal rijen wordt bepaald." ;
+ Text [ spanish ] = "es una matriz, fórmula matricial o referencia a un área de celdas de la cual se desea saber el número de filas." ;
+ Text [ english_us ] = "The array (reference) for which the number of rows is to be determined." ;
+ Text[ chinese_simplified ] = "ÊÇÐèÒªµÃµ½ÆäÐкŵľØÕó»òÒýÓõĵ¥Ôª¸ñÇøÓò¡£";
+ Text[ russian ] = "Ìàññèâ (èëè ññûëêà) íà èíòåðâàë ÿ÷ååê, äëÿ êîòîðîãî îïðåäåëÿåòñÿ ÷èñëî ñòðîê.";
+ Text[ polish ] = "Macierz (odwo³anie), dla której zostanie okreœlona liczba wierszy.";
+ Text[ japanese ] = "s”‚ðŒvŽZ‚·‚é”z—ñA”z—ñ”Ž®A‚Ü‚½‚;͈ٔ͂̎QÆ¡";
+ Text[ chinese_traditional ] = "¬O»Ý­n±o¨ì¨ä¦C¸¹ªº¯x°}©Î°Ñ·ÓªºÀx¦s®æ°Ï°ì¡C";
+ Text[ arabic ] = "ÇáÕÝíÝ (ÇáãÑÌÚ) ÇáãÑÇÏ ÊÍÏíÏ ÚÏÏ ÕÝæÝå.";
+ Text[ dutch ] = "De matrix (de verwijzing) waarvan het aantal rijen wordt bepaald.";
+ Text[ chinese_simplified ] = "ÊÇÐèÒªµÃµ½ÆäÐкŵľØÕó»òÒýÓõĵ¥Ôª¸ñÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá (ç áíáöïñÜ) ôçò ïðïßáò ïñßæåôáé ôï ðëÞèïò ãñáììþí.";
+ Text[ korean ] = "ÇàÀÇ ¼ö°¡ ÁöÁ¤µÇ´Â Çà·Ä(ÂüÁ¶)ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Satýr sayýsý belirlenen matris (referans).";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TABELLEN #*=-
+ Resource SC_OPCODE_TABLES
+ {
+ String 1 // Description
+ {
+ Text = "Bestimmt die Anzahl Tabellen eines Bezugs. Ist kein Parameter angegeben, wird die Anzahl Tabellen des Dokuments zurückgegeben." ;
+ Text [ english ] = "Returns the number of sheets of the given reference. If no parameter specified the number of sheets in the document is returned." ;
+ Text [ english_us ] = "Returns the number of sheets of a given reference. If no parameter has been entered, the total number of sheets in the document is returned." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Anzahl Tabellen eines Bezugs." ;
+ Text [ swedish ] = "Bestämmer antalet tabeller för en referens. Om ingen parameter är angiven, returneras antalet tabeller i dokumentet. " ;
+ Text [ danish ] = "Bestemmer antallet af regneark i en reference. Hvis ingen parameter angives, returneres antallet af regneark i dokumentet " ;
+ Text [ italian ] = "Restituisce il numero di tabelle di un riferimento. Se non è stato digitato nessun parametro, verrà restituito il numero delle tabelle del documento." ;
+ Text [ spanish ] = "Determina la cantidad de hojas de una referencia. Si no existe parámetros, la cantidad de hojas de un documento será devuelta." ;
+ Text [ french ] = "Détermine le nombre de feuilles d'une référence. Si aucun paramètre n'est indiqué, le nombre total des feuilles du document sera renvoyé." ;
+ Text [ dutch ] = "Bepaalt het aantal werkbladen van een verwijzing. Is er geen parameter aangegeven, dan wordt het aantal werkbladen van het document teruggegeven." ;
+ Text [ portuguese ] = "Devolve o número de folhas da referência especificada. Se não forneceu quaisquer parâmetros, ser-lhe-á devolvido o número de folhas do documento." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÒýÓõŤ×÷±íÊýÄ¿¡£Èç¹ûûÓиø¶¨²ÎÊý£¬\nÄÇô·´À¡µÄÊÇÎĵµµÄ¹¤×÷±í×ÜÊý¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ÷èñëî ëèñòîâ çàäàííîé ññûëêè. Åñëè ïàðàìåòð íå çàäàí, òî ÷èñëî ëèñòîâ äîêóìåíòà âîçâðàùàåòñÿ.";
+ Text[ polish ] = "Okreœla liczbê tabel odwo³añ. Jeœli nie podano parametru, zostanie zwrócona liczba tabel w dokumencie.";
+ Text[ japanese ] = "ŽQƂ̼°Ä”‚𔂦‚Ü‚·B‰½‚à“ü—Í‚µ‚È‚¯‚ê‚ÎA‚»‚ÌÄÞ·­ÒÝĂ̼°Ä”‚ª–ß‚è‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó°Ñ·Óªº¤u§@ªí¼Æ¥Ø¡C¦pªG¨S¦³«ü©w°Ñ¼Æ¡M¨º»ò¶Ç¦^¤å¥óªº¤u§@ªíÁ`¼Æ¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÚÏÏ ÌÏÇæá ÇáãÑÌÚ ÇáãÚØì. ÅÐÇ áã íÊã ÅÏÎÇá ãÚáãÉ¡ ÝÓæÝ íÊã ÅÑÌÇÚ ÚÏÏ ÇáÌÏÇæá Ýí ÇáãÓÊäÏ.";
+ Text[ dutch ] = "Bepaalt het aantal werkbladen van een verwijzing. Is er geen parameter aangegeven, dan wordt het aantal werkbladen van het document teruggegeven.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÒýÓõŤ×÷±íÊýÄ¿¡£Èç¹ûûÓиø¶¨²ÎÊý£¬\nÄÇô·´À¡µÄÊÇÎĵµµÄ¹¤×÷±í×ÜÊý¡£";
+ Text[ greek ] = "Ïñßæåé ôï ðëÞèïò ôùí ôùí ðéíÜêùí ìéáò áíáöïñÜò. Áí äåí ïñéóôåß ðáñÜìåôñïò, åðéóôñÝöåé ï ðëÞèïò ðéíÜêùí åíüò åããñÜöïõ..";
+ Text[ korean ] = "ÁÖ¾îÁø ÂüÁ¶ÀÇ ½ÃÆ® ¼ö ¸¦ ¹Ýȯ. ¸¸ÀÏ ÀÔ·ÂµÈ ÆĶó¹ÌÅÍ°¡ ¾ø´Ù¸é, ¹®¼­¿¡ ÀÖ´Â ½ÃÆ®ÀÇ Àüü ¹øÈ£°¡ ¹ÝȯµË´Ï´Ù.";
+ Text[ turkish ] = "Referansýn tablo sayýsýný belirler. Parametre girilmemiþse, belgedeki toplam tablo sayýsý verilir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_TABELLEN );
+ 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "reference" ;
+ Text [ english_us ] = "reference" ;
+ Text [ portuguese_brazilian ] = "Bezug" ;
+ Text [ swedish ] = "Referens" ;
+ Text [ danish ] = "Reference" ;
+ Text [ italian ] = "Riferimento" ;
+ Text [ spanish ] = "Referencia" ;
+ Text [ french ] = "Référence" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ portuguese ] = "Referência" ;
+ Text[ chinese_simplified ] = "Reference";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ chinese_traditional ] = "Reference";
+ Text[ arabic ] = "Reference";
+ Text[ dutch ] = "Verwijzing";
+ Text[ chinese_simplified ] = "Reference";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Der Bezug auf eine Zelle oder einen Bereich." ;
+ Text [ english ] = "is the cell or range of cells for which you want the number of sheets." ;
+ Text [ english_us ] = "The reference to a cell or a range." ;
+ Text [ portuguese_brazilian ] = "Der Bezug auf eine Zelle oder einen Bereich." ;
+ Text [ swedish ] = "Referensen till en cell eller ett område." ;
+ Text [ danish ] = "Referencen til en celle eller et område." ;
+ Text [ italian ] = "Il riferimento a una cella o a un'area." ;
+ Text [ spanish ] = "La referencia a una celda o un área." ;
+ Text [ french ] = "La référence à une cellule ou une plage." ;
+ Text [ dutch ] = "De verwijzing naar een cel of een bereik." ;
+ Text [ portuguese ] = "A referência de uma célula ou de um intervalo de células" ;
+ Text[ chinese_simplified ] = "Ò»¸öµ¥Ôª¸ñÒýÓûòÒ»¸öÇøÓòÒýÓá£";
+ Text[ russian ] = "Ññûëêà íà ÿ÷åéêó èëè äèàïàçîí ÿ÷ååê, äëÿ êîòîðûõ îïðåäåëÿåòñÿ ÷èñëî ëèñòîâ.";
+ Text[ polish ] = "Odwo³anie do komórki lub obszaru.";
+ Text[ japanese ] = "¾Ù‚Ü‚½‚;͈ٔ͂̎QÆB";
+ Text[ chinese_traditional ] = "¤@­ÓÀx¦s®æ©Î¤@­Ó°Ï°ìªº°Ñ·Ó¡C";
+ Text[ arabic ] = "ÇáãÑÌÚ Åáì ÎáíÉ Ãæ äØÇÞ.";
+ Text[ dutch ] = "De verwijzing naar een cel of een bereik.";
+ Text[ chinese_simplified ] = "Ò»¸öµ¥Ôª¸ñÒýÓûòÒ»¸öÇøÓòÒýÓá£";
+ Text[ greek ] = "Ç áíáöïñÜ óå Ýíá êåëß Þ óå ìéá ðåñéï÷Þ.";
+ Text[ korean ] = "¼¿À̳ª ¹üÀ§¿¡ ´ëÇÑ ÂüÁ¶ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Hücre ya da aralýða referans.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function WVERWEIS #*=-
+ Resource SC_OPCODE_H_LOOKUP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Waagerechte Suche und Verweis auf darüber- oder darunterstehende Zellen. : Waagerechte Suche und Verweis auf dar³ber- oder darunterstehende Zellen. */
+ Text = "Waagerechte Suche und Verweis auf darunter stehende Zellen." ;
+ Text [ english ] = "Searches the top row of an array for a particular value and returns the value in the indicated cell. " ;
+ Text [ norwegian ] = "Waagerechte Suche und Verweis auf darunterstehende Zellen." ;
+ Text [ italian ] = "ricerca orizzontale e rimando alle celle sottostanti." ;
+ Text [ portuguese_brazilian ] = "Waagerechte Suche und Verweis auf darüber- oder darunterstehende Zellen." ;
+ Text [ portuguese ] = "Procura horizontal e referência a células situadas abaixo." ;
+ Text [ finnish ] = "Waagerechte Suche und Verweis auf darunterstehende Zellen." ;
+ Text [ danish ] = "Vandret søgning og henvisning til celler nedenfor." ;
+ Text [ french ] = "Recherche horizontale et renvoi à des cellules situées en dessous." ;
+ Text [ swedish ] = "Vågrät sökning och hänvisning till underliggande celler." ;
+ Text [ dutch ] = "Horizontaal zoeken en verwijzen naar de zich daaronder bevindende cellen." ;
+ Text [ spanish ] = "Busca por filas y devuelve el valor de la celda indicada." ;
+ Text [ english_us ] = "Horizontal search and reference to the cells located below." ;
+ Text[ chinese_simplified ] = "ˮƽËÑÑ°¸÷¸öµ¥Ôª¸ñ²¢²ÎÔÄÆäÏ·½µÄµ¥Ôª¸ñ¡£";
+ Text[ russian ] = "Ïîèñê ïî ñòðîêàì è ññûëêà íà ÿ÷åéêè, íàõîäÿùèåñÿ ñíèçó.";
+ Text[ polish ] = "Wyszukiwanie poziome i odsy³acz do komórek powy¿ej i poni¿ej.";
+ Text[ japanese ] = "s‚²‚Æ‚ÉŒŸõ‚µAŽw’肵‚½s‚َ̾QÆ‚ðã’[‚Æ‚µ‚ĉº‚ðŒŸõ‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤ô¥­¤W¤U´M§ä¦U­ÓÀx¦s®æ¨Ã¶Ç¦^­n¬d§äªºÀx¦s®æ¡C";
+ Text[ arabic ] = "ÈÍË ÃÝÞí æÅÔÇÑÉ Åáì ÇáÎáÇíÇ ÇáãæÌæÏÉ ÈÇáÃÓÝá.";
+ Text[ dutch ] = "Horizontaal zoeken en verwijzen naar de zich daaronder bevindende cellen.";
+ Text[ chinese_simplified ] = "ˮƽËÑÑ°¸÷¸öµ¥Ôª¸ñ²¢²ÎÔÄÆäÏ·½µÄµ¥Ôª¸ñ¡£";
+ Text[ greek ] = "Ïñéæüíôéá áíáæÞôçóç êáé áíáöïñÜ óå ðáñáêÜôù ôïðïèåôçìÝíá êåëéÜ.";
+ Text[ korean ] = "±× ¾Æ·¡ À§Ä¡ÇÑ ¼¿¿¡ ´ëÇÑ ¼öÆò °Ë»ö°ú ÂüÁ¶ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Altýnda bulunan hücrelere yatay referans ve arama.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_WVERWEIS );
+ 4; 0; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Suchkriterium" ;
+ Text [ english ] = "lookup_value" ;
+ Text [ norwegian ] = "Suchkriterium" ;
+ Text [ italian ] = "criterio di ricerca" ;
+ Text [ portuguese_brazilian ] = "Suchkriterium" ;
+ Text [ portuguese ] = "Critério_procura" ;
+ Text [ finnish ] = "Suchkriterium" ;
+ Text [ danish ] = "Opslagsværdi" ;
+ Text [ french ] = "Critère_rech" ;
+ Text [ swedish ] = "sökkriterium" ;
+ Text [ dutch ] = "Zoeklcriterium" ;
+ Text [ spanish ] = "valor_buscado" ;
+ Text [ english_us ] = "search_criteria" ;
+ Text[ chinese_simplified ] = "search_criteria";
+ Text[ russian ] = "Êðèòåðèé ïîèñêà";
+ Text[ polish ] = "Kryterium wyszukiwania";
+ Text[ japanese ] = "ŒŸõ’l";
+ Text[ chinese_traditional ] = "search_criteria";
+ Text[ arabic ] = "Search_criteria";
+ Text[ dutch ] = "Zoeklcriterium";
+ Text[ chinese_simplified ] = "search_criteria";
+ Text[ greek ] = "ÊñéôÞñéï áíáæÞôçóçò";
+ Text[ korean ] = "ã±â_±âÁØ";
+ Text[ turkish ] = "Arama ölçütü";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, nach dem in der ersten Zeile gesucht wird." ;
+ Text [ english ] = "is the value to be found in the first row of the table." ;
+ Text [ norwegian ] = "Der Wert, nach dem in der ersten Zeile gesucht wird." ;
+ Text [ italian ] = "è il valore da ricercare nella prima riga della tabella." ;
+ Text [ portuguese_brazilian ] = "Der Wert, nach dem in der ersten Zeile gesucht wird." ;
+ Text [ portuguese ] = "é o valor a ser localizado na primeira linha da tabela." ;
+ Text [ finnish ] = "Der Wert, nach dem in der ersten Zeile gesucht wird." ;
+ Text [ danish ] = "Den værdi som der skal søges efter i første række." ;
+ Text [ french ] = "La valeur à rechercher dans la première ligne." ;
+ Text [ swedish ] = "Värdet som söks i första raden." ;
+ Text [ dutch ] = "De waarde waarnaar in de eerste rij wordt gezocht." ;
+ Text [ spanish ] = "es el valor que se busca en la primera fila de matriz_buscar_en." ;
+ Text [ english_us ] = "The value to be found in the first row." ;
+ Text[ chinese_simplified ] = "ÒªÔÚÊý¾Ý±íµÄµÚÒ»ÐÐÖвéÕÒµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, êîòîðîå òðåáóåòñÿ íàéòè â ïåðâîé ñòðîêå òàáëèöû..";
+ Text[ polish ] = "Wartoœæ, która jest szukana w pierwszym wierszu tabeli.";
+ Text[ japanese ] = "Žw’肵‚½s‚ÅŒŸõ‚·‚é’lB";
+ Text[ chinese_traditional ] = "­n¦b¼Æ¾Úªíªº²Ä¤@¦C¤¤¬d§äªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇáÈÍË ÚäåÇ Ýí ÇáÕÝ ÇáÃæá.";
+ Text[ dutch ] = "De waarde waarnaar in de eerste rij wordt gezocht.";
+ Text[ chinese_simplified ] = "ÒªÔÚÊý¾Ý±íµÄµÚÒ»ÐÐÖвéÕÒµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ áíáæÞôçóçò ôçò ðñþôçò óåéñÜò.";
+ Text[ korean ] = "ù¹ø° Çà¿¡¼­ ¹ß°ßµÈ °ª";
+ Text[ turkish ] = "Birinci satýrda aranacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Matrix" ;
+ Text [ english ] = "table_array" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "matrice_tabella" ;
+ Text [ portuguese_brazilian ] = "Matrix" ;
+ Text [ portuguese ] = "Matriz_tabela" ;
+ Text [ finnish ] = "Matrix" ;
+ Text [ danish ] = "Matrix" ;
+ Text [ french ] = "Matrice" ;
+ Text [ swedish ] = "matris" ;
+ Text [ dutch ] = "Matrix" ;
+ Text [ spanish ] = "matriz_buscar_en" ;
+ Text [ english_us ] = "array" ;
+ Text[ chinese_simplified ] = "table_array";
+ Text[ russian ] = "Ìàññèâ òàáëèöû";
+ Text[ polish ] = "Macierz";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "table_array";
+ Text[ arabic ] = "Table_array";
+ Text[ dutch ] = "Matrix";
+ Text[ chinese_simplified ] = "table_array";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä";
+ Text[ turkish ] = "Matris";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Matrix oder der Bereich für den Verweis. : Die Matrix oder der Bereich f³r den Verweis. */
+ Text = "Die Matrix oder der Bereich für den Verweis." ;
+ Text [ english ] = "is a table of information in which data is looked up." ;
+ Text [ norwegian ] = "Die Matrix oder der Bereich für den Verweis." ;
+ Text [ italian ] = "La matrice o l'area per il riferimento." ;
+ Text [ portuguese_brazilian ] = "Die Matrix oder der Bereich für den Verweis." ;
+ Text [ portuguese ] = "é uma tabela de informações para a procura dos dados." ;
+ Text [ finnish ] = "Die Matrix oder der Bereich für den Verweis." ;
+ Text [ danish ] = "Matrixen eller området for henvisningen." ;
+ Text [ french ] = "La matrice ou la plage pour le renvoi." ;
+ Text [ swedish ] = "Matrisen eller området för hänvisningen." ;
+ Text [ dutch ] = "De matrix of het bereik voor de verwijzing." ;
+ Text [ spanish ] = "es una tabla de información en la que se buscan los datos." ;
+ Text [ english_us ] = "The array or the range for the reference." ;
+ Text[ chinese_simplified ] = "ÊǾØÕó»òÓÃÀ´ËÑÑ°Êý¾ÝµÄÇøÓò¡£";
+ Text[ russian ] = "Ìàññèâ èëè äèàïàçîí, â êîòîðîì ïðîèçâîäèòñÿ ïîèñê äàííûõ.";
+ Text[ polish ] = "Macierz lub obszar dla odsy³acza.";
+ Text[ japanese ] = "–Ú“I‚ÌÃÞ°À‚ªŠÜ‚Ü‚ê‚é”͈ÍB";
+ Text[ chinese_traditional ] = "¬O¯x°}©Î¥Î¨Ó´M§ä¼Æ¾Úªº°Ï°ì¡C";
+ Text[ arabic ] = "ÕÝíÝ Ãæ äØÇÞ íõÈÍË Ýíå Úä ÇáÈíÇäÇÊ.";
+ Text[ dutch ] = "De matrix of het bereik voor de verwijzing.";
+ Text[ chinese_simplified ] = "ÊǾØÕó»òÓÃÀ´ËÑÑ°Êý¾ÝµÄÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá Þ ç ðåñéï÷Þ ãéá ôçí áíáöïñÜ.";
+ Text[ korean ] = "Çà·Ä ¶Ç´Â ÂüÁ¶ ¹üÀ§ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Referans matrisi ya da aralýðý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Index" ;
+ Text [ english ] = "row_index_num" ;
+ Text [ norwegian ] = "Index" ;
+ Text [ italian ] = "indice" ;
+ Text [ portuguese_brazilian ] = "Index" ;
+ Text [ portuguese ] = "Índice" ;
+ Text [ finnish ] = "Index" ;
+ Text [ danish ] = "Indeks" ;
+ Text [ french ] = "Indice" ;
+ Text [ swedish ] = "index" ;
+ Text [ dutch ] = "Index" ;
+ Text [ spanish ] = "Índice" ;
+ Text [ english_us ] = "Index" ;
+ Text[ chinese_simplified ] = "row_index_num";
+ Text[ russian ] = "Íîìåð_ñòðîêè";
+ Text[ polish ] = "Indeks";
+ Text[ japanese ] = "s”Ô†";
+ Text[ chinese_traditional ] = "row_index_num";
+ Text[ arabic ] = "Row_index_num";
+ Text[ dutch ] = "Index";
+ Text[ chinese_simplified ] = "row_index_num";
+ Text[ greek ] = "ÅõñåôÞñéï";
+ Text[ korean ] = "»öÀÎ";
+ Text[ turkish ] = "Ýndis";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Zeilenindex in der Matrix." ;
+ Text [ english ] = "is the row number in table_array from which the matching value should be returned." ;
+ Text [ norwegian ] = "Zeilenindex in der Matrix." ;
+ Text [ italian ] = "è il numero di riga in tabella_matrice dal quale deve essere restituito il valore corrispondente." ;
+ Text [ portuguese_brazilian ] = "Zeilenindex in der Matrix." ;
+ Text [ portuguese ] = "é o número da linha em matriz_tabela, da qual são retirados os valores correspondentes." ;
+ Text [ finnish ] = "Zeilenindex in der Matrix." ;
+ Text [ danish ] = "Rækkeindeks i matrixen." ;
+ Text [ french ] = "L'indice de ligne dans la matrice." ;
+ Text [ swedish ] = "Radnumret i matrisen." ;
+ Text [ dutch ] = "Rijnummer in de matrix." ;
+ Text [ spanish ] = "es el número de fila en matriz_buscar_en desde el cual se deberá devolver el valor coincidente." ;
+ Text [ english_us ] = "The row index in the array." ;
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÄÚµÄÐÐÐòºÅ¡£";
+ Text[ russian ] = "Íîìåð ñòðîêè â ìàññèâå.";
+ Text[ polish ] = "Indeks wierszy w macierzy.";
+ Text[ japanese ] = "”͈͓à‚Å–Ú“I‚ÌÃÞ°À‚ª“ü—Í‚³‚ê‚Ä‚¢‚és”Ô†B";
+ Text[ chinese_traditional ] = "¼Æ¾Ú°Ï¤ºªº¦C§Ç¸¹¡C";
+ Text[ arabic ] = "ÑÞã ÇáÕÝ Ýí ÇáÕÝíÝ ÇáÐí íÌÈ ÅÑÌÇÚ ÇáÞíã ÇáãØÇÈÞÉ ãäå.";
+ Text[ dutch ] = "Rijnummer in de matrix.";
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÄÚµÄÐÐÐòºÅ¡£";
+ Text[ greek ] = "Äåßêôçò ãñáììþí óôç ìÞôñá.";
+ Text[ korean ] = "Çà·Ä¿¡ ÀÖ´Â Çà »öÀÎ";
+ Text[ turkish ] = "Matrisdeki satýr indisi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Sortiert" ;
+ Text [ english ] = "range_lookup" ;
+ Text [ norwegian ] = "Sortiert" ;
+ Text [ italian ] = "intervallo" ;
+ Text [ portuguese_brazilian ] = "Sortiert" ;
+ Text [ portuguese ] = "Localizar_intervalo" ;
+ Text [ finnish ] = "Sortiert" ;
+ Text [ danish ] = "Sorteret" ;
+ Text [ french ] = "Tri" ;
+ Text [ swedish ] = "sorterad" ;
+ Text [ dutch ] = "Gesorteerd" ;
+ Text [ spanish ] = "ordenado" ;
+ Text [ english_us ] = "sorted" ;
+ Text[ chinese_simplified ] = "range_lookup";
+ Text[ russian ] = "Ñîðòèðîâêà";
+ Text[ polish ] = "Przesortowany";
+ Text[ japanese ] = "ŒŸõ‚ÌŒ^";
+ Text[ chinese_traditional ] = "range_lookup";
+ Text[ arabic ] = "Range_lookup";
+ Text[ dutch ] = "Gesorteerd";
+ Text[ chinese_simplified ] = "range_lookup";
+ Text[ greek ] = "Range_lookup";
+ Text[ korean ] = "Á¤·ÄµÊ";
+ Text[ turkish ] = "Sýralanmýþ";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ist der Wert WAHR oder nicht angegeben, muß die Suchzeile der Matrix aufsteigend sortiert sein. : Ist der Wert WAHR oder nicht angegeben, mu˜ die Suchzeile der Matrix aufsteigend sortiert sein. */
+ Text = "Ist der Wert WAHR oder nicht angegeben, muss die Suchzeile der Matrix aufsteigend sortiert sein." ;
+ Text [ english ] = "Is a logical value that specifies whether you want HLOOKUP to find an exact match or an approximate match." ;
+ Text [ norwegian ] = "Ist der Wert WAHR oder nicht angegeben, muß die Suchzeile der Matrix aufsteigend sortiert sein." ;
+ Text [ italian ] = "se il valore è VERO o non presente la riga di ricerca per la matrice deve essere ordinata in modo crescente." ;
+ Text [ portuguese_brazilian ] = "Ist der Wert WAHR oder nicht angegeben, muß die Suchzeile der Matrix aufsteigend sortiert sein." ;
+ Text [ portuguese ] = "Se o valor for VERDADEIRO ou não indicado, a linha de procura da matriz terá que ser ordenada de forma ascendente." ;
+ Text [ finnish ] = "Ist der Wert WAHR oder nicht angegeben, muß die Suchzeile der Matrix aufsteigend sortiert sein." ;
+ Text [ danish ] = "Hvis værdien er SAND eller ikke er angivet, skal matrixens søgerække sorteres i stigende orden." ;
+ Text [ french ] = "Si la valeur est VRAI ou n'a pas été spécifiée, la ligne de recherche de la matrice doit être triée dans l'ordre croissant." ;
+ Text [ swedish ] = "Om värdet är SANT eller inte angivet, måste matrisens sökrad vara sorterad i stigande ordning." ;
+ Text [ dutch ] = "Is de logische waarde WAAR of niet aangegeven dan moet de zoekrij van de matrix oplopend gesorteerd zijn." ;
+ Text [ spanish ] = "Si el valor es VERDADERO o se omite, la línea de búsqueda de la matriz debe ser ordenada ascendentemente." ;
+ Text [ english_us ] = "If the value is TRUE or not given, the search row of the array must be sorted in ascending order." ;
+ Text[ chinese_simplified ] = "ÈôÖµÊÇ¡°true¡±»òûÓÐÖ¸¶¨£¬ÄÇôÊý×é\nµÄ²éÕÒÐоͱØÐë°´ÉÏÉý˳ÐòÅÅÁС£";
+ Text[ russian ] = "Ïðè çíà÷åíèè ÈÑÒÈÍÀ èëè îòñóòñòâóþùåì çíà÷åíèè ïîèñêîâàÿ ñòðîêà ìàññèâà äîëæíà ñîðòèðîâàòüñÿ ïî âîçðàñòàíèþ.";
+ Text[ polish ] = "Jeœli wartoœæ jest PRAWDA lub jeœli nie jest ona podana, wiersz wyszukiwania macierzy musi zostaæ przesortowany w porz¹dku rosn¹cym.";
+ Text[ japanese ] = "ŒŸõ‚ÌŒ^‚ÉTRUE‚ðŽw’肵‚½ê‡‚Ü‚½‚Í‹ó”’‚Ì‚Ü‚Ü‚É‚µ‚Ä‚¨‚­ê‡A”͈͂Ìs‚ÌÃÞ°À‚͸‡‚É•À‚בւ¦‚Ä‚¨‚­•K—v‚ª‚ ‚è‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªGÅÞ¿è­È¬O¡§TRUE¡¨©Î¨S¦³«ü©w¡A¼Æ²Õ¬d§ä¦C´N«ö·Ó¦V¤W±Æ¦C¡C";
+ Text[ arabic ] = "ÅÐÇ ßÇäÊ ÇáÞíãÉ TRUE Ãæ ãåãáÉ¡ íÌÈ ÊÑÊíÈ ÕÝ ÈÍË ÇáÕÝíÝ ÊÑÊíÈÇð ÊÕÇÚÏíÇð.";
+ Text[ dutch ] = "Is de logische waarde WAAR of niet aangegeven dan moet de zoekrij van de matrix oplopend gesorteerd zijn.";
+ Text[ chinese_simplified ] = "ÈôÖµÊÇ¡°true¡±»òûÓÐÖ¸¶¨£¬ÄÇôÊý×é\nµÄ²éÕÒÐоͱØÐë°´ÉÏÉý˳ÐòÅÅÁС£";
+ Text[ greek ] = "Áí ç ôéìÞ åßíáé TRUE Þ äåí ïñßóôçêå, ðñÝðåé ç ãñáììÞ áíáæÞôçóçò ôçò ìÞôñáò íá åßíáé ôáîéíïìçìÝíç êáôÜ áýîïõóá óåéñÜ.";
+ Text[ korean ] = "°ªÀÌ TRUEÀ̰ųª ÁÖ¾îÁ® ÀÖÁö ¾ÊÀ» ¶§´Â Çà·ÄÀÇ °Ë»öÇàÀ» ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄÇØ¾ß ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Deðer DOÐRU ya da belirtilmemiþse, matrisin arama satýrý artan düzende sýralanmalýdýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SVERWEIS #*=-
+ Resource SC_OPCODE_V_LOOKUP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Senkrechte Suche und Verweis auf nebenliegende Zellen." ;
+ Text [ english ] = "Searches the leftmost column of an array for a particular value, and returns the value in the cell indicated." ;
+ Text [ norwegian ] = "Senkrechte Suche und Verweis auf nebenliegende Zellen." ;
+ Text [ italian ] = "Ricerca verticale e rimando alle celle adiacenti." ;
+ Text [ portuguese_brazilian ] = "Senkrechte Suche und Verweis auf nebenliegende Zellen." ;
+ Text [ portuguese ] = "Procura um valor específico na primeira coluna esquerda de uma matriz e devolve o valor na célula indicada." ;
+ Text [ finnish ] = "Senkrechte Suche und Verweis auf nebenliegende Zellen." ;
+ Text [ danish ] = "Lodret søgning og henvisning til celler, som ligger ved siden af." ;
+ Text [ french ] = "Recherche verticale et renvoi aux cellules adjacentes." ;
+ Text [ swedish ] = "Lodrätt sökning och hänvisning till intilliggande celler." ;
+ Text [ dutch ] = "Verticaal zoeken en verwijzing naar naastliggende cellen." ;
+ Text [ spanish ] = "Busca un valor específico en la primera columna y se desplaza a través de la fila y devuelve el valor de la celda indicada." ;
+ Text [ english_us ] = "Vertical search and reference to indicated cells." ;
+ Text[ chinese_simplified ] = "ÔÚÊý¾Ý×éµÄÊ×ÁвéÕÒÖ¸¶¨µÄÊýÖµ£¬²¢·µ»ØÊýÖµËùÔÚÐÐ\nÖÐÖ¸¶¨Á䦵ÄÊýÖµ¡£";
+ Text[ russian ] = "Ïîèñê â âåðòèêàëüíîì ïîðÿäêå è ññûëêà íà áëèçëåæàùèå ÿ÷åéêè.";
+ Text[ polish ] = "Wyszukiwanie pionowe i adres wskazanej komórki.";
+ Text[ japanese ] = "”͈͓à‚Ì—ñ‚©‚ç1s‚ðŒŸõ‚µA‚»‚Ìs‚É‚ ‚éŽQƾق̒l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦b¸ê®Æ²Õªº­º¦C¬d§ä«ü©wªº¼Æ­È¡M¨Ãªð¦^¼Æ­È©Ò¦b¦æ¤¤«ü©w¦C³Bªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÈÍË ÚãæÏíÇð Ëã ÇáÅÔÇÑÉ Åáì ÇáÎáÇíÇ ÇáãÌÇæÑÉ.";
+ Text[ dutch ] = "Verticaal zoeken en verwijzing naar naastliggende cellen.";
+ Text[ chinese_simplified ] = "ÔÚÊý¾Ý×éµÄÊ×ÁвéÕÒÖ¸¶¨µÄÊýÖµ£¬²¢·µ»ØÊýÖµËùÔÚÐÐ\nÖÐÖ¸¶¨Á䦵ÄÊýÖµ¡£";
+ Text[ greek ] = "Êáôáêüñõöç áíáæÞôçóç êáé áíáöïñÜ óôá äéðëáíÜ êåëéÜ.";
+ Text[ korean ] = "Áö½ÃµÈ ¼¿¿¡¼­ ¼öÁ÷ã±â¿Í ÂüÁ¶";
+ Text[ turkish ] = "Komþu hücrelere referans ve dikey arama.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_SVERWEIS );
+ 4; 0; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Suchkriterium" ;
+ Text [ english ] = "lookup_value" ;
+ Text [ norwegian ] = "Suchkriterium" ;
+ Text [ italian ] = "criterio di ricerca" ;
+ Text [ portuguese_brazilian ] = "Suchkriterium" ;
+ Text [ portuguese ] = "Valor_procurado" ;
+ Text [ finnish ] = "Suchkriterium" ;
+ Text [ danish ] = "Opslagsværdi" ;
+ Text [ french ] = "Critère_rech" ;
+ Text [ swedish ] = "sökkriterium" ;
+ Text [ dutch ] = "Zoekcriterium" ;
+ Text [ spanish ] = "valor_buscado" ;
+ Text [ english_us ] = "Search criterion" ;
+ Text[ chinese_simplified ] = "lookup_value";
+ Text[ russian ] = "Êðèòåðèé ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõ’l";
+ Text[ chinese_traditional ] = "lookup_value";
+ Text[ arabic ] = "Lookup_value";
+ Text[ dutch ] = "Zoekcriterium";
+ Text[ chinese_simplified ] = "lookup_value";
+ Text[ greek ] = "ÊñéôÞñéï áíáæÞôçóçò";
+ Text[ korean ] = "±âÁØ Ã£±â";
+ Text[ turkish ] = "Arama ölçütü";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, nach dem in der ersten Spalte gesucht wird." ;
+ Text [ english ] = "is the value to be found in the first column of the array." ;
+ Text [ norwegian ] = "Der Wert, nach dem in der ersten Spalte gesucht wird." ;
+ Text [ italian ] = "è il valore da ricercare nella prima colonna della matrice." ;
+ Text [ portuguese_brazilian ] = "Der Wert, nach dem in der ersten Spalte gesucht wird." ;
+ Text [ portuguese ] = "é o valor a localizar na primeira coluna da matriz." ;
+ Text [ finnish ] = "Der Wert, nach dem in der ersten Spalte gesucht wird." ;
+ Text [ danish ] = "Den værdi som der skal søges efter i første kolonne." ;
+ Text [ french ] = "La valeur à rechercher dans la première colonne." ;
+ Text [ swedish ] = "Värdet som skall sökas i den första kolumnen." ;
+ Text [ dutch ] = "De waarde waarnaar in de eerste kolom wordt gezocht." ;
+ Text [ spanish ] = "es el valor que se busca en la primera columna de la matriz." ;
+ Text [ english_us ] = "The value to be found in the first column." ;
+ Text[ chinese_simplified ] = "ÒªÔÚÊý¾Ý×éµÄµÚÒ»ÁÐÖÐËÑÑ°µÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, êîòîðîå íåîáõîäèìî íàéòè â ïåðâîì ñòîëáöå.";
+ Text[ polish ] = "Wyszukiwana wartoϾ w pierwszej kolumnie macierzy.";
+ Text[ japanese ] = "Žw’肵‚½—ñ‚ÅŒŸõ‚·‚é’lB";
+ Text[ chinese_traditional ] = "­n¦b¼Æ¾Ú²Õªº²Ä¤@¦C¤¤´M§äªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇáÈÍË ÚäåÇ Ýí ÇáÚãæÏ ÇáÃæá.";
+ Text[ dutch ] = "De waarde waarnaar in de eerste kolom wordt gezocht.";
+ Text[ chinese_simplified ] = "ÒªÔÚÊý¾Ý×éµÄµÚÒ»ÁÐÖÐËÑÑ°µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ áíáæÞôçóçò ôçò ðñþôçò óôÞëçò";
+ Text[ korean ] = "ù¹ø° ¿­¿¡¼­ ¹ß°ßµÈ °ª";
+ Text[ turkish ] = "Birinci sütunda aranan deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Matrix" ;
+ Text [ english ] = "table_array" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "matrice_tabella" ;
+ Text [ portuguese_brazilian ] = "Matrix" ;
+ Text [ portuguese ] = "Matriz_tabela" ;
+ Text [ finnish ] = "Matrix" ;
+ Text [ danish ] = "Matrix" ;
+ Text [ french ] = "Matrice" ;
+ Text [ swedish ] = "matris" ;
+ Text [ dutch ] = "Matrix" ;
+ Text [ spanish ] = "matriz_buscar_en" ;
+ Text [ english_us ] = "array" ;
+ Text[ chinese_simplified ] = "table_array";
+ Text[ russian ] = "Ìàññèâ";
+ Text[ polish ] = "Macierz";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "table_array";
+ Text[ arabic ] = "Table_array";
+ Text[ dutch ] = "Matrix";
+ Text[ chinese_simplified ] = "table_array";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä";
+ Text[ turkish ] = "Matris";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Matrix oder der Bereich für den Verweis. : Die Matrix oder der Bereich f³r den Verweis. */
+ Text = "Die Matrix oder der Bereich für den Verweis." ;
+ Text [ english ] = "is the table of information in which data is looked up." ;
+ Text [ norwegian ] = "Die Matrix oder der Bereich für den Verweis." ;
+ Text [ italian ] = "La matrice o l'area per il riferimento." ;
+ Text [ portuguese_brazilian ] = "Die Matrix oder der Bereich für den Verweis." ;
+ Text [ portuguese ] = "é a tabela de informações para a procura de dados." ;
+ Text [ finnish ] = "Die Matrix oder der Bereich für den Verweis." ;
+ Text [ danish ] = "Matrixen eller området for henvisningen." ;
+ Text [ french ] = "La matrice ou la plage pour le renvoi." ;
+ Text [ swedish ] = "Matrisen eller området för hänvisningen." ;
+ Text [ dutch ] = "De matrix of het bereik voor de verwijzing." ;
+ Text [ spanish ] = "es el conjunto de datos donde se buscan el valor." ;
+ Text [ english_us ] = "The array or range for referencing." ;
+ Text[ chinese_simplified ] = "ÒªÔÚÆäÖвéÕÒÊý¾ÝµÄÊý¾Ý×é»òÒýÓõÄÇøÓò¡£";
+ Text[ russian ] = "Ìàññèâ èëè äèàïàçîí äëÿ ññûëêè.";
+ Text[ polish ] = "Macierz lub obszar dla odsy³acza.";
+ Text[ japanese ] = "–Ú“I‚ÌÃÞ°À‚ªŠÜ‚Ü‚ê‚é”͈ÍB";
+ Text[ chinese_traditional ] = "­n¦b¨ä¤¤¬d§ä¼Æ¾Úªº¼Æ¾Ú²Õ©Î°Ñ·Óªº°Ï°ì¡C";
+ Text[ arabic ] = "ÕÝíÝ Ãæ äØÇÞ íÊã ÇÓÊÑÏÇÏ ÇáÈíÇäÇÊ Ýíå.";
+ Text[ dutch ] = "De matrix of het bereik voor de verwijzing.";
+ Text[ chinese_simplified ] = "ÒªÔÚÆäÖвéÕÒÊý¾ÝµÄÊý¾Ý×é»òÒýÓõÄÇøÓò¡£";
+ Text[ greek ] = "Ç ìÞôñá Þ ç ðåñéï÷Þ ãéá ôçí áíáöïñÜ.";
+ Text[ korean ] = "ÂüÁ¶ÇÒ Çà·Ä ¶Ç´Â ¹üÀ§ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Referans ile ilgili matris ya da aralýk.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Index" ;
+ Text [ english ] = "col_index_num" ;
+ Text [ norwegian ] = "Index" ;
+ Text [ italian ] = "indice" ;
+ Text [ portuguese_brazilian ] = "Index" ;
+ Text [ portuguese ] = "Índice" ;
+ Text [ finnish ] = "Index" ;
+ Text [ danish ] = "Indeks" ;
+ Text [ french ] = "Indice" ;
+ Text [ swedish ] = "index" ;
+ Text [ dutch ] = "Index" ;
+ Text [ spanish ] = "Índice" ;
+ Text [ english_us ] = "Index" ;
+ Text[ chinese_simplified ] = "col_index";
+ Text[ russian ] = "Èíäåêñ";
+ Text[ polish ] = "Indeks";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "col_index";
+ Text[ arabic ] = "Col_index";
+ Text[ dutch ] = "Index";
+ Text[ chinese_simplified ] = "col_index";
+ Text[ greek ] = "Äåßêôçò";
+ Text[ korean ] = "»öÀÎ";
+ Text[ turkish ] = "Ýndis";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Spaltenindex in der Matrix." ;
+ Text [ english ] = "is the column number in table_array from which the matching value should be returned." ;
+ Text [ norwegian ] = "Spaltenindex in der Matrix." ;
+ Text [ italian ] = "è il numero di colonna in tabella_matrice dal quale deve essere restituito il valore corrispondente." ;
+ Text [ portuguese_brazilian ] = "Spaltenindex in der Matrix." ;
+ Text [ portuguese ] = "é o número da coluna numa matriz_tabela da qual se devolve o valor correspondente." ;
+ Text [ finnish ] = "Spaltenindex in der Matrix." ;
+ Text [ danish ] = "Kolonneindeks i matrixen." ;
+ Text [ french ] = "L'indice de colonnes dans la matrice." ;
+ Text [ swedish ] = "Kolumnindex i matrisen." ;
+ Text [ dutch ] = "Kolommenindex in de matrix" ;
+ Text [ spanish ] = "es el número de columna de matriz_buscar_en desde la cual debe devolverse el valor coincidente." ;
+ Text [ english_us ] = "Column index number in the array." ;
+ Text[ chinese_simplified ] = "Êý¾Ý×éÄÚ²¿µÄÁÐÐòºÅ¡£";
+ Text[ russian ] = "Èíäåêñ ñòîëáöà â ìàññèâå.";
+ Text[ polish ] = "Indeks kolumn w macierzy.";
+ Text[ japanese ] = "”͈͓à‚Å–Ú“I‚ÌÃÞ°À‚ªŠÜ‚Ü‚ê‚é—ñ";
+ Text[ chinese_traditional ] = "¼Æ¾Ú²Õ¤º³¡ªº¦C§Ç¸¹¡C";
+ Text[ arabic ] = "ÑÞã ÇáÚãæÏ Ýí table_array ÇáÐí íÌÈ ÅÑÌÇÚ ÇáÞíãÉ ÇáãØÇÈÞÉ ãäå.";
+ Text[ dutch ] = "Kolommenindex in de matrix";
+ Text[ chinese_simplified ] = "Êý¾Ý×éÄÚ²¿µÄÁÐÐòºÅ¡£";
+ Text[ greek ] = "Äåßêôçò óôçëþí óôç ìÞôñá.";
+ Text[ korean ] = "Çà·Ä¿¡ ÀÖ´Â ¿­ »öÀÎÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Matrisin sütun dizini.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Sortiert" ;
+ Text [ english ] = "range_lookup" ;
+ Text [ norwegian ] = "Sortiert" ;
+ Text [ italian ] = "intervallo" ;
+ Text [ portuguese_brazilian ] = "Sortiert" ;
+ Text [ portuguese ] = "Ordem_correspondência" ;
+ Text [ finnish ] = "Sortiert" ;
+ Text [ danish ] = "Sorteret" ;
+ Text [ french ] = "Tri" ;
+ Text [ swedish ] = "sorterad" ;
+ Text [ dutch ] = "Gesorteerd" ;
+ Text [ spanish ] = "ordenado" ;
+ Text [ english_us ] = "sort order" ;
+ Text[ chinese_simplified ] = "sort order";
+ Text[ russian ] = "Ïîðÿäîê_ñîðòèðîâêè";
+ Text[ polish ] = "Porz¹dek sortowania";
+ Text[ japanese ] = "ŒŸõ‚ÌŒ^";
+ Text[ chinese_traditional ] = "sort order";
+ Text[ arabic ] = "Sort order";
+ Text[ dutch ] = "Gesorteerd";
+ Text[ chinese_simplified ] = "sort order";
+ Text[ greek ] = "ÔáîéíïìçìÝíá";
+ Text[ korean ] = "Á¤·Ä ¼ø¼­";
+ Text[ turkish ] = "Sýralama";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ist der Wert WAHR oder nicht angegeben, muß die Suchspalte der Matrix aufsteigend sortiert sein. : Ist der Wert WAHR oder nicht angegeben, mu˜ die Suchspalte der Matrix aufsteigend sortiert sein. */
+ Text = "Ist der Wert WAHR oder nicht angegeben, muss die Suchspalte der Matrix aufsteigend sortiert sein." ;
+ Text [ english ] = "is a logical value that specifies whether you want VLOOKUP to find an exact match or an approximate match." ;
+ Text [ norwegian ] = "Ist der Wert WAHR oder nicht angegeben, muß die Suchspalte der Matrix aufsteigend sortiert sein." ;
+ Text [ italian ] = "se il valore è VERO o non è indicato, la colonna di ricerca per la matrice deve essere ordinata verticalmente." ;
+ Text [ portuguese_brazilian ] = "Ist der Wert WAHR oder nicht angegeben, muß die Suchspalte der Matrix aufsteigend sortiert sein." ;
+ Text [ portuguese ] = "Se o valor for VERDADEIRO ou não indicado, a linha de procura da matriz terá que ser ordenada de forma ascendente." ;
+ Text [ finnish ] = "Ist der Wert WAHR oder nicht angegeben, muß die Suchspalte der Matrix aufsteigend sortiert sein." ;
+ Text [ danish ] = "Hvis værdien er SAND eller ikke er angivet, skal matrixens søgekolonne sorteres i stigende orden." ;
+ Text [ french ] = "Si la valeur est VRAI ou n'a pas été spécifiée, la colonne de recherche de la matrice doit être triée dans l'ordre croissant." ;
+ Text [ swedish ] = "Om värdet är SANT eller inte angivet, måste sökkolumnen i matrisen vara sorterad stigande." ;
+ Text [ dutch ] = "Is het resultaat WAAR of niet aangegeven, dan moet de zoekkolom van de matrix oplopend gesorteerd zijn." ;
+ Text [ spanish ] = "Si el valor es VERDADERO o se omite, la columna de búsqueda de la matriz debe ser ordenada ascendentemente." ;
+ Text [ english_us ] = "if the value is TRUE or not given, the search column of the array must be sorted in ascending order." ;
+ Text[ chinese_simplified ] = "ÈôÖµÊÇTRUE»òûÓÐÖ¸¶¨£¬ÄÇôÊý×éµÄÁÐÔÚ²éÕÒʱ¾Í°´ÉÏÉý˳ÐòÅÅÁС£";
+ Text[ russian ] = "Ïðè çíà÷åíèè ÈÑÒÈÍÀ èëè îïóùåííîì çíà÷åíèè ñòîëáåö ïîèñêà ìàññèâà äîëæåí ñîðòèðîâàòüñÿ ïî âîçðàñòàíèþ.";
+ Text[ polish ] = "Jeœli wartoœæ jest PRAWDA lub jeœli nie jest ona podana, kolumna wyszukiwania macierzy musi zostaæ przesortowana w porz¹dku rosn¹cym.";
+ Text[ japanese ] = "ŒŸõ‚ÌŒ^‚ÉTRUE‚ðŽw’肵‚½ê‡‚Ü‚½‚Í‹ó”’‚Ì‚Ü‚Ü‚É‚µ‚Ä‚¨‚­ê‡A”͈̗͂ñ‚ÌÃÞ°À‚͸‡‚É•À‚בւ¦‚Ä‚¨‚­•K—v‚ª‚ ‚è‚Ü‚·BI";
+ Text[ chinese_traditional ] = "­Y¼Æ­È¬O TRUE ©ÎªÌ¨S¦³«ü©w¼Æ­È¡M·j´M¦C°}Äæ¦ìªº¤è¦¡´N¥²¶·¬O¦V¤W¡C";
+ Text[ arabic ] = "ÅÐÇ ßÇäÊ ÇáÞíãÉ TRUE Ãæ ãåãáÉ¡ íÌÈ ÊÑÊíÈ ÕÝ ÈÍË ÇáÕÝíÝ ÊÑÊíÈÇð ÊÕÇÚÏíÇð.";
+ Text[ dutch ] = "Is het resultaat WAAR of niet aangegeven, dan moet de zoekkolom van de matrix oplopend gesorteerd zijn.";
+ Text[ chinese_simplified ] = "ÈôÖµÊÇTRUE»òûÓÐÖ¸¶¨£¬ÄÇôÊý×éµÄÁÐÔÚ²éÕÒʱ¾Í°´ÉÏÉý˳ÐòÅÅÁС£";
+ Text[ greek ] = "Áí ç ôéìÞ åßíáé TRUE Þ äåí ïñßóôçêå, ðñÝðåé ç óôÞëç áíáæÞôçóçò ôçò ìÞôñáò íá åßíáé ôáîéíïìçìÝíç êáôÜ áýîïõóá óåéñÜ.";
+ Text[ korean ] = "°ªÀÌ TRUEÀ̰ųª ÁÖ¾îÁ® ÀÖÁö ¾ÊÀ» ¶§´Â Çà·ÄÀÇ °Ë»ö¿­À» ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄÇØ¾ß ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Deðer DOÐRU ya da belirtilmemiþse, matrisin arama sütunu artan düzende sýralanmalýdýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function INDEX #*=-
+ Resource SC_OPCODE_INDEX
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt einen Bezug auf eine Zelle aus einem angegebenen Bereich." ;
+ Text [ english ] = "Returns the reference of the cell at the intersection of a particular row and column." ;
+ Text [ norwegian ] = "Bestimmt einen Bezug auf eine Zelle aus einem angegebenen Bereich." ;
+ Text [ italian ] = "Restituisce il riferimento della cella da un'area indicata." ;
+ Text [ portuguese_brazilian ] = "Bestimmt einen Bezug auf eine Zelle aus einem angegebenen Bereich." ;
+ Text [ portuguese ] = "Utiliza um índice para seleccionar um valor de uma referência ou matriz." ;
+ Text [ finnish ] = "Bestimmt einen Bezug auf eine Zelle aus einem angegebenen Bereich." ;
+ Text [ danish ] = "Bestemmer en reference til en celle fra et angivet område." ;
+ Text [ french ] = "Détermine une référence à une cellule de la plage indiquée." ;
+ Text [ swedish ] = "Bestämmer en referens till en cell från ett angivet område." ;
+ Text [ dutch ] = "Definieert een verwijzing naar een cel uit een aangegeven bereik." ;
+ Text [ spanish ] = "Devuelve una referencia a una celda o a varias celdas determinada dentro del argumento ref." ;
+ Text [ english_us ] = "Returns a reference to a cell from a defined range." ;
+ Text[ chinese_simplified ] = "·´À¡Ò»¸ö¸ø¶¨ÇøÓòÖеĵ¥Ôª¸ñÒýÓÃÄÚÈÝ¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ññûëêó íà ÿ÷åéêó èç çàäàííîãî äèàïàçîíà.";
+ Text[ polish ] = "Okreœla odwo³anie do komórki z podanego obszaru.";
+ Text[ japanese ] = "Žw’肵‚½”͈͂̾ق̒l‚ÌŽQÆ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¦b«ü©w°Ï°ì¤ºªºÀx¦s®æªº°Ñ·Ó¡C";
+ Text[ arabic ] = "ÊÍÏÏ ãÑÌÚ Åáì ÎáíÉ Ýí äØÇÞ ãÚØì.";
+ Text[ dutch ] = "Definieert een verwijzing naar een cel uit een aangegeven bereik.";
+ Text[ chinese_simplified ] = "·´À¡Ò»¸ö¸ø¶¨ÇøÓòÖеĵ¥Ôª¸ñÒýÓÃÄÚÈÝ¡£";
+ Text[ greek ] = "Ïñßæåé ìéá áíáöïñÜ óå Ýíá êåëß ìéá åðéëåãìÝíçò ðåñéï÷Þò.";
+ Text[ korean ] = "Á¤ÀÇµÈ ¿µ¿ªÀ¸·ÎºÎÅÍ ¼¿ ÂüÁ¶¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Belirtilen aralýktan bir hücre referansý tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_INDEX );
+ 4; 0; 1; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "reference" ;
+ Text [ norwegian ] = "Bezug" ;
+ Text [ italian ] = "rif" ;
+ Text [ portuguese_brazilian ] = "Bezug" ;
+ Text [ portuguese ] = "Referência" ;
+ Text [ finnish ] = "Bezug" ;
+ Text [ danish ] = "Reference" ;
+ Text [ french ] = "Réference" ;
+ Text [ swedish ] = "referens" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ spanish ] = "ref" ;
+ Text [ english_us ] = "reference" ;
+ Text[ chinese_simplified ] = "reference";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "reference";
+ Text[ arabic ] = "reference";
+ Text[ dutch ] = "Verwijzing";
+ Text[ chinese_simplified ] = "reference";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Bezug auf einen (Mehrfach-)Bereich." ;
+ Text [ english ] = "is a reference to one or more cell ranges." ;
+ Text [ norwegian ] = "Der Bezug auf einen (Mehrfach-)Bereich." ;
+ Text [ italian ] = "Il riferimento ad un'area (multipla)." ;
+ Text [ portuguese_brazilian ] = "Der Bezug auf einen (Mehrfach-)Bereich." ;
+ Text [ portuguese ] = "é a referência a um ou vários intervalos de células." ;
+ Text [ finnish ] = "Der Bezug auf einen (Mehrfach-)Bereich." ;
+ Text [ danish ] = "En reference til et (multi-)område." ;
+ Text [ french ] = "La référence à une plage (multiple)." ;
+ Text [ swedish ] = "Referensen till ett (multi-)område." ;
+ Text [ dutch ] = "De verwijzing naar één of meer cellenbereiken." ;
+ Text [ spanish ] = "es una referencia a una o más áreas de referencia (puede ser una selección múltiple)." ;
+ Text [ english_us ] = "The reference to a (multiple) range." ;
+ Text[ chinese_simplified ] = "Ò»¸ö(¶àÖØ)ÇøÓòµÄÒýÓá£";
+ Text[ russian ] = "Ññûëêà íà îäèí èëè íåñêîëüêî äèàïàçîíîâ.";
+ Text[ polish ] = "Odwo³anie do obszaru z³o¿onego.";
+ Text[ japanese ] = "1‚‚܂½‚Í•¡”‚̾ق̗̈æ¡";
+ Text[ chinese_traditional ] = "¤@­Ó(¦h­«)°Ï°ìªº°Ñ·Ó¡C";
+ Text[ arabic ] = "ÇáãÑÌÚ Åáì äØÇÞ (ãÊÚÏÏ).";
+ Text[ dutch ] = "De verwijzing naar één of meer cellenbereiken.";
+ Text[ chinese_simplified ] = "Ò»¸ö(¶àÖØ)ÇøÓòµÄÒýÓá£";
+ Text[ greek ] = "Ç áíáöïñÜ óå ìéá (ðïëëáðëÞ) ðåñéï÷Þ.";
+ Text[ korean ] = "¹üÀ§(´ÙÁß¹üÀ§)¿¡ ´ëÇÑ ÂüÁ¶ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "(Çoklu) aralýða alýnan referans.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Zeile" ;
+ Text [ english ] = "row_num" ;
+ Text [ norwegian ] = "Zeile" ;
+ Text [ italian ] = "riga" ;
+ Text [ portuguese_brazilian ] = "Zeile" ;
+ Text [ portuguese ] = "Núm_linha" ;
+ Text [ finnish ] = "Zeile" ;
+ Text [ danish ] = "Række" ;
+ Text [ french ] = "Ligne" ;
+ Text [ swedish ] = "rad" ;
+ Text [ dutch ] = "Rij" ;
+ Text [ spanish ] = "núm_fila" ;
+ Text [ english_us ] = "row" ;
+ Text[ chinese_simplified ] = "row_num";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "s”Ô†";
+ Text[ chinese_traditional ] = "row_num";
+ Text[ arabic ] = "row_num";
+ Text[ dutch ] = "Rij";
+ Text[ chinese_simplified ] = "row_num";
+ Text[ greek ] = "ÃñáììÞ";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Zeile in dem Bereich." ;
+ Text [ english ] = "is the number of the row in reference from which to return a reference." ;
+ Text [ norwegian ] = "Die Zeile in dem Bereich." ;
+ Text [ italian ] = "La riga nell'area." ;
+ Text [ portuguese_brazilian ] = "Die Zeile in dem Bereich." ;
+ Text [ portuguese ] = "é o númera da linha da qual se deseja obter uma referência." ;
+ Text [ finnish ] = "Die Zeile in dem Bereich." ;
+ Text [ danish ] = "Rækken i området." ;
+ Text [ french ] = "La ligne de la plage." ;
+ Text [ swedish ] = "Raden i området." ;
+ Text [ dutch ] = "De rij in het bereik." ;
+ Text [ spanish ] = "es el número de fila en el argumento ref desde el cual se devolverá una referencia." ;
+ Text [ english_us ] = "The row in the range." ;
+ Text[ chinese_simplified ] = "ÇøÓòÄÚµÄÐÐ";
+ Text[ russian ] = "Êîëè÷åñòâî ñòðîê â îáëàñòè, èç êîòîðûõ âîçâðàùàåòñÿ ññûëêà.";
+ Text[ polish ] = "Wiersz w obszarze.";
+ Text[ japanese ] = "”͈͓à‚Ìs‚̔ԆB";
+ Text[ chinese_traditional ] = "°Ï°ì¤ºªº¦C";
+ Text[ arabic ] = "ÇáÕÝ ÇáãæÌæÏ Ýí ÇáäØÇÞ.";
+ Text[ dutch ] = "De rij in het bereik.";
+ Text[ chinese_simplified ] = "ÇøÓòÄÚµÄÐÐ";
+ Text[ greek ] = "Ç ãñáììÞ óôçí ðåñéï÷Þ.";
+ Text[ korean ] = "¿µ¿ª¾ÈÀÇ Çà";
+ Text[ turkish ] = "Aralýktaki satýr.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Spalte" ;
+ Text [ english ] = "column_num" ;
+ Text [ norwegian ] = "Spalte" ;
+ Text [ italian ] = "Colonna" ;
+ Text [ portuguese_brazilian ] = "Spalte" ;
+ Text [ portuguese ] = "Núm_coluna" ;
+ Text [ finnish ] = "Spalte" ;
+ Text [ danish ] = "Kolonne" ;
+ Text [ french ] = "Colonne" ;
+ Text [ swedish ] = "kolumn" ;
+ Text [ dutch ] = "Kolom" ;
+ Text [ spanish ] = "núm_columna" ;
+ Text [ english_us ] = "column" ;
+ Text[ chinese_simplified ] = "column_num";
+ Text[ russian ] = "Ñòîëáåö";
+ Text[ polish ] = "Kolumna";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "column_num";
+ Text[ arabic ] = "column_num";
+ Text[ dutch ] = "Kolom";
+ Text[ chinese_simplified ] = "column_num";
+ Text[ greek ] = "ÓôÞëç";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Spalte in dem Bereich." ;
+ Text [ english ] = "is the number of the column in reference from which to return a reference." ;
+ Text [ norwegian ] = "Die Spalte in dem Bereich." ;
+ Text [ italian ] = "La colonna nell'area." ;
+ Text [ portuguese_brazilian ] = "Die Spalte in dem Bereich." ;
+ Text [ portuguese ] = "é o número da coluna da qual se deseja obter uma referência." ;
+ Text [ finnish ] = "Die Spalte in dem Bereich." ;
+ Text [ danish ] = "Kolonnen i området." ;
+ Text [ french ] = "La colonne de la plage." ;
+ Text [ swedish ] = "Kolumnen i området." ;
+ Text [ dutch ] = "De kolom in het bereik." ;
+ Text [ spanish ] = "es el número de la columna en el argumento ref desde el cual se devolverá una referencia." ;
+ Text [ english_us ] = "The column in the range." ;
+ Text[ chinese_simplified ] = "ÇøÓòÄÚµÄÁС£";
+ Text[ russian ] = "Êîëè÷åñòâî ñòîëáöîâ â îáëàñòè, èç êîòîðûõ âîçâðàùàåòñÿ ññûëêà.";
+ Text[ polish ] = "Kolumna w obszarze.";
+ Text[ japanese ] = "”͈͓à‚Ì—ñB";
+ Text[ chinese_traditional ] = "°Ï°ì¤ºªºÄæ¡C";
+ Text[ arabic ] = "ÇáÚãæÏ ÇáãæÌæÏ Ýí ÇáäØÇÞ.";
+ Text[ dutch ] = "De kolom in het bereik.";
+ Text[ chinese_simplified ] = "ÇøÓòÄÚµÄÁС£";
+ Text[ greek ] = "Ç óôÞëç óôçí ðåñéï÷Þ.";
+ Text[ korean ] = "¿µ¿ª¾ÈÀÇ ¿­";
+ Text[ turkish ] = "Aralýktaki sütun.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Bereich" ;
+ Text [ english ] = "area_num" ;
+ Text [ norwegian ] = "Bereich" ;
+ Text [ italian ] = "Area" ;
+ Text [ portuguese_brazilian ] = "Bereich" ;
+ Text [ portuguese ] = "Núm_área" ;
+ Text [ finnish ] = "Bereich" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Plage" ;
+ Text [ swedish ] = "område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Área" ;
+ Text [ english_us ] = "range" ;
+ Text[ chinese_simplified ] = "area_num";
+ Text[ russian ] = "Íîìåð_îáëàñòè";
+ Text[ polish ] = "Obszar";
+ Text[ japanese ] = "—̈æ”Ô†";
+ Text[ chinese_traditional ] = "area_num";
+ Text[ arabic ] = "Area_num";
+ Text[ dutch ] = "Bereik";
+ Text[ chinese_simplified ] = "area_num";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¿µ¿ª";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Der Index des Teilbereichs, falls es sich um einen Mehrfachbereich handelt." ;
+ Text [ english ] = "selects a range in reference from which to return the intersection of row_num and column_num." ;
+ Text [ norwegian ] = "Der Index des Teilbereichs, falls es sich um einen Mehrfachbereich handelt." ;
+ Text [ italian ] = "L'indice di una sezione dell'area in caso si tratti di un'area multipla." ;
+ Text [ portuguese_brazilian ] = "Der Index des Teilbereichs, falls es sich um einen Mehrfachbereich handelt." ;
+ Text [ portuguese ] = "selecciona um intervalo em referência do qual se deseja obter a intersecção de núm_linha com núm_coluna." ;
+ Text [ finnish ] = "Der Index des Teilbereichs, falls es sich um einen Mehrfachbereich handelt." ;
+ Text [ danish ] = "Delområdets indeks i tilfælde af at det drejer sig om et multiområde." ;
+ Text [ french ] = "L'indice de la section de la plage, s'il s'agit d'une plage multiple." ;
+ Text [ swedish ] = "Index för delområdet om det rör sig om ett multiområde." ;
+ Text [ dutch ] = "De index van een bereik uit meer cellenbereiken." ;
+ Text [ spanish ] = "Selecciona un área en el argumento ref desde el cual se devolverá la intersección entre fila y columna dadas." ;
+ Text [ english_us ] = "The index of the subrange if referring to a multiple range." ;
+ Text[ chinese_simplified ] = "Èç¹ûÊÇÒ»¸ö¶àÖØÇøÓò£¬ÄǾÍÊÇÒ»¸ö²¿·ÖÇøÓòµÄË÷Òý¡£";
+ Text[ russian ] = "Íîìåð îäíîãî äèàïàçîíà, â ñëó÷àå, åñëè ðå÷ü èäåò î íåñêîëüêèõ äèàïàçîíàõ.";
+ Text[ polish ] = "Indeks obszaru czêœciowego, jeœli chodzi o obszar z³o¿ony.";
+ Text[ japanese ] = "”͈͂ɕ¡”‚̗̈æ‚ð‘I‘ð‚µ‚½ê‡A‚»‚Ì’†‚Ì1‚‚̗̈æ‚ð”’l‚ÅŽw’èB";
+ Text[ chinese_traditional ] = "¦pªG¬O¤@­Ó¦h­«°Ï°ì¡M¨º´N¬O¤@­Ó³¡¥÷°Ï°ìªº¯Á¤Þ¡C";
+ Text[ arabic ] = "ÇáäØÇÞ Ýí ÇáãÑÌÚ ÇáÐí ÓÊÑÌÚ ãäå ÇáÞíãÉ.";
+ Text[ dutch ] = "De index van een bereik uit meer cellenbereiken.";
+ Text[ chinese_simplified ] = "Èç¹ûÊÇÒ»¸ö¶àÖØÇøÓò£¬ÄǾÍÊÇÒ»¸ö²¿·ÖÇøÓòµÄË÷Òý¡£";
+ Text[ greek ] = "Ôï åõñåôÞñéï ôïõ ôìÞìáôïò ôçò ðåñéï÷Þò, óôçí ðåñßðôùóç ðïõ ðñüêåéôáé ãéá ìéá ðïëëáðëÞ ðåñéï÷Þ.";
+ Text[ korean ] = "´ÙÁß¹üÀ§¿Í °ü·ÃµÉ °æ¿ì ºÎºÐ¹üÀ§ÀÇ »öÀÎÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Çoklu aralýk olmasý durumunda kýsmi aralýðýn indisi.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function INDIREKT #*=-
+ Resource SC_OPCODE_INDIRECT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt den Inhalt einer als Bezug in Textform angegebenen Zelle." ;
+ Text [ english ] = "Returns the reference specified by ref_text." ;
+ Text [ norwegian ] = "Bestimmt den Inhalt einer als Bezug in Textform angegebenen Zelle." ;
+ Text [ italian ] = "Restituisce il contenuto di una cella indicata quale riferimento in forma testuale." ;
+ Text [ portuguese_brazilian ] = "Bestimmt den Inhalt einer als Bezug in Textform angegebenen Zelle." ;
+ Text [ portuguese ] = "Devolve uma referência indicada no argumento texto_ref." ;
+ Text [ finnish ] = "Bestimmt den Inhalt einer als Bezug in Textform angegebenen Zelle." ;
+ Text [ danish ] = "Bestemmer indholdet i en celle, som er angivet som reference i tekstform." ;
+ Text [ french ] = "Renvoie le contenu d'une cellule indiquée comme référence sous forme de texte." ;
+ Text [ swedish ] = "Bestämmer innehållet i en cell som är angiven som referens i textform." ;
+ Text [ dutch ] = "Definieert de inhoud van een aangegeven cel die een verwijzing bevat in de vorm van tekst." ;
+ Text [ spanish ] = "Devuelve una referencia especificada por un valor de texto." ;
+ Text [ english_us ] = "Returns the contents of a cell that is referenced in text form." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÒÔÎÄ×Ö¸ñʽÊäÈëµÄµ¥Ôª¸ñÒýÓõÄÄÚÈÝ¡£";
+ Text[ russian ] = "Âîçâðàùàåò ññûëêó, çàäàííóþ òåêñòîâûì çíà÷åíèåì.";
+ Text[ polish ] = "Okreœla zawartoœæ podanej komórki jako odwo³ania w formie tekstu.";
+ Text[ japanese ] = "Žw’肳‚ê‚镶Žš—ñ‚Ö‚ÌŽQÆ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó¥H¤å¦r®æ¦¡¿é¤JªºÀx¦s®æ°Ñ·Ó¤º®e¡C";
+ Text[ arabic ] = "ÊÍÏÏ ãÍÊæíÇÊ ÎáíÉ ãÍÏÏÉ ßãÑÌÚ Ýí ÓáÓáÉ äÕíÉ";
+ Text[ dutch ] = "Definieert de inhoud van een aangegeven cel die een verwijzing bevat in de vorm van tekst.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸öÒÔÎÄ×Ö¸ñʽÊäÈëµÄµ¥Ôª¸ñÒýÓõÄÄÚÈÝ¡£";
+ Text[ greek ] = "Ïñßæåé ôï ðåñéå÷üìåíï åíüò êåëéïý ôï ïðïßï Ý÷åé ïñéóôåß ùò áíáöïñÜ óå ìïñöÞ êåéìÝíïõ.";
+ Text[ korean ] = "ÅؽºÆ® ¾ç½Ä¿¡¼­ ÂüÁ¶µÈ ¼¿ÀÇ ³»¿ëÀ» ¹Ýȯ.";
+ Text[ turkish ] = "Metin þeklinde referans alýnan bir hücrenin içeriðini tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_INDIREKT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "ref_text" ;
+ Text [ norwegian ] = "Bezug" ;
+ Text [ italian ] = "rif" ;
+ Text [ portuguese_brazilian ] = "Bezug" ;
+ Text [ portuguese ] = "Texto_ref" ;
+ Text [ finnish ] = "Bezug" ;
+ Text [ danish ] = "Reference" ;
+ Text [ french ] = "Référence" ;
+ Text [ swedish ] = "Referens" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ spanish ] = "ref" ;
+ Text [ english_us ] = "ref " ;
+ Text[ chinese_simplified ] = "ref_text";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "ŽQÆ•¶Žš—ñ";
+ Text[ chinese_traditional ] = "ref_text";
+ Text[ arabic ] = "Ref_text";
+ Text[ dutch ] = "Verwijzing";
+ Text[ chinese_simplified ] = "ref_text";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶_ÅؽºÆ®";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zelle, deren Inhalt ausgewertet werden soll als Bezug in Textform (z.B. \"A1\")." ;
+ Text [ english ] = "is a reference to a cell that contains a reference or a name defined as a reference." ;
+ Text [ norwegian ] = "Die Zelle, deren Inhalt ausgewertet werden soll als Bezug in Textform (z.B. \"A1\")." ;
+ Text [ italian ] = "è un valore logico che specifica il tipo di riferimento contenuto nella cella rif." ;
+ Text [ portuguese_brazilian ] = "Die Zelle, deren Inhalt ausgewertet werden soll als Bezug in Textform (z.B. \"A1\")." ;
+ Text [ portuguese ] = "é a referência a uma célula que contém uma referência ou um nome definido como referência (por ex. \"A1\")." ;
+ Text [ finnish ] = "Die Zelle, deren Inhalt ausgewertet werden soll als Bezug in Textform (z.B. \"A1\")." ;
+ Text [ danish ] = "Den celle hvis indhold skal fortolkes som reference i tekstform (fx \"A1\")." ;
+ Text [ french ] = "Une cellule dont le contenu doit être interprété comme référence sous forme de texte (par ex. \"A1\")." ;
+ Text [ swedish ] = "Cellen vars innehåll skall utvärderas som referens i textform ( t. ex. \"A1\")." ;
+ Text [ dutch ] = "De cel waarvan de inhoud moet worden geïnterpreteerd als een verwijzing in de vorm van tekst (bijv. \"A1\")." ;
+ Text [ spanish ] = "es una referencia a una celda, cuyo contenido se desea comprobar y que contiene una referencia en forma de texto (por ej. \"A1\")." ;
+ Text [ english_us ] = "The cell whose contents are to be evaluated is to be referenced in text form (e.g. \"A1\")." ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñ£¬ÆäÄÚÈÝʹÓÃÎÄ×Ö¸ñʽµÄÒýÓÃ(Èç \"A1\")¡£";
+ Text[ russian ] = "Ññûëêà íà ÿ÷åéêó, ñîäåðæèìîå êîòîðîé äîëæíî èíòåðïðåòèðîâàòüñÿ êàê ññûëêà â âèäå òåêñòà, íàïð. \"A1\".";
+ Text[ polish ] = "Komórka, której zawartoœæ ma zostaæ oceniona jako odwo³anie w postaci tekstu (n.p. \"A1\").";
+ Text[ japanese ] = "ŽQÆ•¶Žš—ñ(‚½‚Æ‚¦‚Î\"A1\")‚ÅŽw’肳‚ê‚é¾ÙŽQÆ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "Àx¦s®æ¡M¨ä¤º®e¨Ï¥Î¤å¦r®æ¦¡ªº°Ñ·Ó(¦p¡§A1¡¨)";
+ Text[ arabic ] = "ÇáÎáíÉ ÇáãÑÇÏ ÊÞííã ãÍÊæíÇÊåÇ ßãÑÌÚ Úáì Ôßá äÕ ( Úáì ÓÈíá ÇáãËÇá\"A1\").";
+ Text[ dutch ] = "De cel waarvan de inhoud moet worden geïnterpreteerd als een verwijzing in de vorm van tekst (bijv. \"A1\").";
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñ£¬ÆäÄÚÈÝʹÓÃÎÄ×Ö¸ñʽµÄÒýÓÃ(Èç \"A1\")¡£";
+ Text[ greek ] = "Ôï êåëß, ôïõ ïðïßïõ ðñüêåéôáé íá áðïôéìçèåß ôï ðåñéå÷üìåíï ùò áíáöïñÜ óå ìïñöÞ êåéìÝíïõ (ð.÷. \"A1\").";
+ Text[ korean ] = "ÅؽºÆ® ÇüÅÂ(¿¹: \"A1\")ÀÇ ÂüÁ¶·Î¼­ ³»¿ëÀÇ °ªÀ» ±¸ÇÏ°Ô µÉ ¼¿ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýçeriði deðerlendirilecek hücre metin þeklinde (Örn. \"A1\") referans alýnacak.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VERWEIS #*=-
+ Resource SC_OPCODE_LOOKUP
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt einen Wert in einem Vektor durch Wertvergleich in einem anderen Vektor." ;
+ Text [ english ] = "looks up values in a vector or array." ;
+ Text [ norwegian ] = "Bestimmt einen Wert in einem Vektor durch Wertvergleich in einem anderen Vektor." ;
+ Text [ italian ] = "Restituisce un valore di un vettore tramite confronto di valori in un altro vettore." ;
+ Text [ portuguese_brazilian ] = "Bestimmt einen Wert in einem Vektor durch Wertvergleich in einem anderen Vektor." ;
+ Text [ portuguese ] = "Determina um valor num vector ou numa matriz pela comparação dos valores de outro vector." ;
+ Text [ finnish ] = "Bestimmt einen Wert in einem Vektor durch Wertvergleich in einem anderen Vektor." ;
+ Text [ danish ] = "Bestemmer en værdi i en vektor ved at sammenligne værdier i en anden vektor." ;
+ Text [ french ] = "Détermine une valeur dans un vecteur en comparant les valeurs dans un autre vecteur." ;
+ Text [ swedish ] = "Bestämmer ett värde i en vektor genom värdejämförelse i en annan vektor." ;
+ Text [ dutch ] = "Bepaalt de waarde op een vector door vergelijking van waarden op een andere vector." ;
+ Text [ spanish ] = "Busca valores en una referencia o matriz." ;
+ Text [ english_us ] = "Determines a value in a vector by comparison to values in another vector." ;
+ Text[ chinese_simplified ] = "ͨ¹ýͬÁíÒ»¸öʸÁ¿µÄÊýÖµ±È½ÏÀ´È·¶¨ÔÚÒ»¸öʸÁ¿ÖеÄÊýÖµ¡£";
+ Text[ russian ] = "Îïðåäåëÿåò çíà÷åíèå â âåêòîðå ïóòåì ñðàâíåíèÿ çíà÷åíèé ñ äðóãèì âåêòîðîì.";
+ Text[ polish ] = "Okreœla wartoœæ wektoru przez porównanie wartoœci w innym wektorze.";
+ Text[ japanese ] = "Žw’肵‚½ÍÞ¸ÄÙ(1s‚Ü‚½‚Í1—ñ‚©‚ç‚È‚é¾Ù”͈Í)‚Ì’l‚𑼂ÌÍÞ¸ÄÙ‚Æ”äŠr‚µ‚Ä’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "³q¹L¦P¥t¤@­Ó¦V¶qªº¼Æ­È¤ñ¸û¨Ó½T©w¦b¤@­Ó¦V¶q¤¤ªº¼Æ­È¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÞíãÉ ãÇ ãä äØÇÞ ÕÝ æÇÍÏ¡ Ãæ äØÇÞ ÚãæÏ æÇÍÏ¡ Ãæ ãä ÕÝíÝ.";
+ Text[ dutch ] = "Bepaalt de waarde op een vector door vergelijking van waarden op een andere vector.";
+ Text[ chinese_simplified ] = "ͨ¹ýͬÁíÒ»¸öʸÁ¿µÄÊýÖµ±È½ÏÀ´È·¶¨ÔÚÒ»¸öʸÁ¿ÖеÄÊýÖµ¡£";
+ Text[ greek ] = "Ïñßæåé ìéá ôéìÞ óå Ýíá äéÜíõóìá ìå ôç óýãêñéóç ôéìþí óå Ýíá Üëëï äéÜíõóìá.";
+ Text[ korean ] = "´Ù¸¥ º¤ÅÍ»óÀÇ °ª°ú ºñ±³ÇÏ¿© º¤ÅÍ»óÀÇ °ªÀ» °áÁ¤";
+ Text[ turkish ] = "Vektördeki deðeri, baþka bir vektör ile deðer karþýlaþtýrmasý yaparak tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_VERWEIS );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Suchkriterium" ;
+ Text [ english ] = "lookup_value" ;
+ Text [ norwegian ] = "Suchkriterium" ;
+ Text [ italian ] = "criterio di ricerca" ;
+ Text [ portuguese_brazilian ] = "Suchkriterium" ;
+ Text [ portuguese ] = "Valor_procurado" ;
+ Text [ finnish ] = "Suchkriterium" ;
+ Text [ danish ] = "Opslagsværdi" ;
+ Text [ french ] = "Critère_rech" ;
+ Text [ swedish ] = "sökkriterium" ;
+ Text [ dutch ] = "Zoekcriterium" ;
+ Text [ spanish ] = "valor_buscado" ;
+ Text [ english_us ] = "Search criterion" ;
+ Text[ chinese_simplified ] = "lookup_value";
+ Text[ russian ] = "Êðèòåðèé ïîèñêà";
+ Text[ polish ] = "Kryteria wyszukiwania";
+ Text[ japanese ] = "ŒŸõ’l";
+ Text[ chinese_traditional ] = "lookup_value";
+ Text[ arabic ] = "Lookup_value";
+ Text[ dutch ] = "Zoekcriterium";
+ Text[ chinese_simplified ] = "lookup_value";
+ Text[ greek ] = "ÊñéôÞñéï áíáæÞôçóçò";
+ Text[ korean ] = "±âÁØ Ã£±â";
+ Text[ turkish ] = "Arama ölçütü";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, mit dem verglichen wird." ;
+ Text [ english ] = "is a value that LOOKUP searches for in the first vector." ;
+ Text [ norwegian ] = "Der Wert, mit dem verglichen wird." ;
+ Text [ italian ] = "è un valore che CERCA ricerca nel primo vettore." ;
+ Text [ portuguese_brazilian ] = "Der Wert, mit dem verglichen wird." ;
+ Text [ portuguese ] = "é o valor a procurar no primeiro vector." ;
+ Text [ finnish ] = "Der Wert, mit dem verglichen wird." ;
+ Text [ danish ] = "Den værdi der skal sammenlignes med." ;
+ Text [ french ] = "La valeur à utiliser pour la comparaison." ;
+ Text [ swedish ] = "Värdet som det jämförs med." ;
+ Text [ dutch ] = "De waarde waarmee wordt vergeleken." ;
+ Text [ spanish ] = "es un valor que BUSCAR busca en la matriz." ;
+ Text [ english_us ] = "The value to be used for comparison." ;
+ Text[ chinese_simplified ] = "ÓÃÀ´±È½Ï»òÒª²éÕÒµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, ñ êîòîðûì ñëåäóåò ñðàâíèòü.";
+ Text[ polish ] = "Wartoœæ, do której nast¹pi porównanie.";
+ Text[ japanese ] = "ŒŸ¸”͈͂ŔäŠr‚·‚é’lB";
+ Text[ chinese_traditional ] = "¥Î¨Ó¤ñ¸û©Î­n¬d§äªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÇáÈÍË ÚäåÇ Ýí Look_vector.";
+ Text[ dutch ] = "De waarde waarmee wordt vergeleken.";
+ Text[ chinese_simplified ] = "ÓÃÀ´±È½Ï»òÒª²éÕÒµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ìå ôçí ïðïßá èá ðñáãìáôïðïéçèåß ç óýãêñéóç.";
+ Text[ korean ] = "ºñ±³¿¡ »ç¿ëµÈ °ª";
+ Text[ turkish ] = "Karþýlaþtýrma için kullanýlacak deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Suchvektor" ;
+ Text [ english ] = "lookup_vector" ;
+ Text [ norwegian ] = "Suchvektor" ;
+ Text [ italian ] = "vettore" ;
+ Text [ portuguese_brazilian ] = "Suchvektor" ;
+ Text [ portuguese ] = "Vector_procurado" ;
+ Text [ finnish ] = "Suchvektor" ;
+ Text [ danish ] = "Opslagsvektor" ;
+ Text [ french ] = "V_recherche" ;
+ Text [ swedish ] = "sökvektor" ;
+ Text [ dutch ] = "Zoekvector" ;
+ Text [ spanish ] = "vector_comparación" ;
+ Text [ english_us ] = "Search vector" ;
+ Text[ chinese_simplified ] = "lookup_vector";
+ Text[ russian ] = "Âåêòîð_ïðîñìîòðà";
+ Text[ polish ] = "Przeszukiwany wektor";
+ Text[ japanese ] = "ŒŸõÍÞ¸ÄÙ";
+ Text[ chinese_traditional ] = "lookup_vector";
+ Text[ arabic ] = "Lookup_vector";
+ Text[ dutch ] = "Zoekvector";
+ Text[ chinese_simplified ] = "lookup_vector";
+ Text[ greek ] = "ÄéÜíõóìá áíáæÞôçóçò";
+ Text[ korean ] = "º¤ÅÍ Ã£±â";
+ Text[ turkish ] = "Arama vektörü";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Vektor (die Zeile oder die Spalte), in dem gesucht wird." ;
+ Text [ english ] = "is a range that contains only one row or one column." ;
+ Text [ norwegian ] = "Der Vektor (die Zeile oder die Spalte), in dem gesucht wird." ;
+ Text [ italian ] = "è un intervallo che contiene solo una riga o una colonna." ;
+ Text [ portuguese_brazilian ] = "Der Vektor (die Zeile oder die Spalte), in dem gesucht wird." ;
+ Text [ portuguese ] = "é um intervalo que contém apenas uma linha ou coluna." ;
+ Text [ finnish ] = "Der Vektor (die Zeile oder die Spalte), in dem gesucht wird." ;
+ Text [ danish ] = "Den vektor (den række eller den kolonner) der skal søges i." ;
+ Text [ french ] = "Le vecteur (colonne ou ligne) dans lequel la recherche doit être effectuée." ;
+ Text [ swedish ] = "Vektorn (raden eller kolumnen) som det söks i." ;
+ Text [ dutch ] = "De vector (de rij of de kolom) waarin wordt gezocht." ;
+ Text [ spanish ] = "es un área que solo contiene una columna o una fila." ;
+ Text [ english_us ] = "The vector (row or column) in which to search." ;
+ Text[ chinese_simplified ] = "ÒªÔÚÆäÖÐËÑÑ°µÄʸÁ¿(ÐлòÕßÁÐ)¡£";
+ Text[ russian ] = "Âåêòîð (äèàïàçîí, ñîäåðæàùèé òîëüêî îäíó ñòðîêó èëè ñòîëáåö), â êîòîðîì ñëåäóåò èñêàòü.";
+ Text[ polish ] = "Wektor (wiersz lub kolumna), w którym nast¹pi wyszukiwanie.";
+ Text[ japanese ] = "ŒŸ¸”͈͂ÌÍÞ¸ÄÙ¡";
+ Text[ chinese_traditional ] = "­n¦b¨ä¤¤´M§äªº¦V¶q(Äæ©Î¦C)¡C";
+ Text[ arabic ] = "äØÇÞ íÍÊæí Úáì ÕÝ Ãæ ÚãæÏ æÇÍÏ.";
+ Text[ dutch ] = "De vector (de rij of de kolom) waarin wordt gezocht.";
+ Text[ chinese_simplified ] = "ÒªÔÚÆäÖÐËÑÑ°µÄʸÁ¿(ÐлòÕßÁÐ)¡£";
+ Text[ greek ] = "Ôï äéÜíõóìá (ç ãñáììÞ Þ ç óåéñÜ) áðï ôï ïðïßï èá ãßíåé ç áíáæÞôçóç.";
+ Text[ korean ] = "°Ë»ö ¹üÀ§°¡ µÉ º¤ÅÍ(Çà ¶Ç´Â ¿­)ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Arama yapýlan vektör (satýr ya da sütun).";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Ergebnisvektor" ;
+ Text [ english ] = "result_vector" ;
+ Text [ norwegian ] = "Ergebnisvektor" ;
+ Text [ italian ] = "risultato" ;
+ Text [ portuguese_brazilian ] = "Ergebnisvektor" ;
+ Text [ portuguese ] = "Vector_result" ;
+ Text [ finnish ] = "Ergebnisvektor" ;
+ Text [ danish ] = "Resultatvektor" ;
+ Text [ french ] = "V_résultat" ;
+ Text [ swedish ] = "resultatvektor" ;
+ Text [ dutch ] = "Uitkomstvector" ;
+ Text [ spanish ] = "vector_resultado" ;
+ Text [ english_us ] = "result_vector" ;
+ Text[ chinese_simplified ] = "result_vector";
+ Text[ russian ] = "Âåêòîð_ðåçóëüòàòà";
+ Text[ polish ] = "Wektor wynikowy";
+ Text[ japanese ] = "Œ‹‰ÊÍÞ¸ÄÙ";
+ Text[ chinese_traditional ] = "result_vector";
+ Text[ arabic ] = "Result_vector";
+ Text[ dutch ] = "Uitkomstvector";
+ Text[ chinese_simplified ] = "result_vector";
+ Text[ greek ] = "ÄéÜíõóìá áðïôåëÝóìáôïò";
+ Text[ korean ] = "°á°ú_º¤ÅÍ";
+ Text[ turkish ] = "Sonuç vektörü";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Der Vektor (die Zeile oder die Spalte), aus dem der Wert bestimmt wird." ;
+ Text [ english ] = "is a range that contains only one row or column." ;
+ Text [ norwegian ] = "Der Vektor (die Zeile oder die Spalte), aus dem der Wert bestimmt wird." ;
+ Text [ italian ] = "è un intervallo che contiene solo una riga o una colonna." ;
+ Text [ portuguese_brazilian ] = "Der Vektor (die Zeile oder die Spalte), aus dem der Wert bestimmt wird." ;
+ Text [ portuguese ] = "é um intervalo que contém apenas uma linha ou coluna." ;
+ Text [ finnish ] = "Der Vektor (die Zeile oder die Spalte), aus dem der Wert bestimmt wird." ;
+ Text [ danish ] = "Den vektor (den række eller den kolonner) værdien skal bestemmes ud fra." ;
+ Text [ french ] = "Le vecteur (ligne ou colonne) duquel la valeur doit être déterminée." ;
+ Text [ swedish ] = "Vektorn (raden eller kolumnen) från vilket värdet bestäms." ;
+ Text [ dutch ] = "De vector (de rij of de kolom) waaruit de waarde resulteert." ;
+ Text [ spanish ] = "es un área que solo contiene una columna o una fila." ;
+ Text [ english_us ] = "The vector (row or range) from which the value is to be determined." ;
+ Text[ chinese_simplified ] = "Òª´ÓÖеóöÊýÖµµÄʸÁ¿(ÐлòÕßÁÐ)¡£";
+ Text[ russian ] = "Âåêòîð (äèàïàçîí, ñîäåðæàùèé îäíó ñòðîêó èëè ñòîëáåö), èç êîòîðîãî îïðåäåëÿåòñÿ çíà÷åíèå.";
+ Text[ polish ] = "Wektor (wiersz lub kolumna), na podstawie którego zostanie okreœlona wartoœæ.";
+ Text[ japanese ] = "‘Ήž”͈͂ÌÍÞ¸ÄÙ¡";
+ Text[ chinese_traditional ] = "­n±q¤¤±o¥X¼Æ­Èªº¦V¶q(Äæ©Î¦C)¡C";
+ Text[ arabic ] = "äØÇÞ íÍÊæí Úáì ÕÝ Ãæ ÚãæÏ æÇÍÏ.";
+ Text[ dutch ] = "De vector (de rij of de kolom) waaruit de waarde resulteert.";
+ Text[ chinese_simplified ] = "Òª´ÓÖеóöÊýÖµµÄʸÁ¿(ÐлòÕßÁÐ)¡£";
+ Text[ greek ] = "Ôï äéÜíõóìá (ç ãñáììÞ Þ ç óåéñÜ) áðï ôï ïðïßï èá ïñéóôåß ç ôéìÞ.";
+ Text[ korean ] = "°ªÀ» ÁöÁ¤ÇØ ³¾ º¤ÅÍ(Çà ¶Ç´Â ¿­)ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðerin belirleme için esas alýnan vektör (satýr ya da sütun).";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VERGLEICH #*=-
+ Resource SC_OPCODE_MATCH
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt eine Position in einer Matrix nach einem Wertvergleich." ;
+ Text [ english ] = "Returns the relative position of an element in an array that matches a specified value in a specified way." ;
+ Text [ norwegian ] = "Bestimmt eine Position in einer Matrix nach einem Wertvergleich." ;
+ Text [ italian ] = "Restituisce una posizione di un elemento in una matrice dopo un confronto di valori." ;
+ Text [ portuguese_brazilian ] = "Bestimmt eine Position in einer Matrix nach einem Wertvergleich." ;
+ Text [ portuguese ] = "Define a posição de um elemento numa matriz, baseando-se na comparação de valores." ;
+ Text [ finnish ] = "Bestimmt eine Position in einer Matrix nach einem Wertvergleich." ;
+ Text [ danish ] = "Bestemmer en position i en matrix baseret på en sammenligning af værdier." ;
+ Text [ french ] = "Détermine une position dans une matrice après comparaison des valeurs." ;
+ Text [ swedish ] = "Bestämmer en position i en matris enligt en värdejämförelse." ;
+ Text [ dutch ] = "Bepaalt een positie in een matrix na een vergelijking van de waarden." ;
+ Text [ spanish ] = "Devuelve la posición relativa de un elemento en una matriz que coincida con un valor especificado." ;
+ Text [ english_us ] = "Defines a position in a matrix after a comparison of values." ;
+ Text[ chinese_simplified ] = "ͨ¹ýÊýÖµ±È½ÏÀ´È·¶¨Êý¾ÝÔÚÊý¾Ý×éÖеÄλÖá£";
+ Text[ russian ] = "Îïðåäåëÿåò ïóòåì ñðàâíåíèÿ çíà÷åíèé ïîçèöèþ â ìàññèâå.";
+ Text[ polish ] = "Okreœla pozycjê w matrycy bazuj¹c na porównaniu wartoœci.";
+ Text[ japanese ] = "Žw’肳‚ꂽƇ‚ÌŒ^‚É]‚Á‚Ä ŒŸ¸”͈͓à‚ðŒŸõ‚µAŒŸ¸’l‚ƈê’v‚·‚é—v‘f‚Ì‘Š‘ΓI‚Ȉʒu‚ð•\\‚·”’l‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "³q¹L¼Æ­È¤ñ¸û¨Ó½T©w¼Æ¾Ú¦b¼Æ¾Ú²Õ¤¤ªº¦ì¸m¡C";
+ Text[ arabic ] = "ÊÍÏÏ ãæÖÚ ãÇ Ýí ÇáãÕÝæÝÉ Úáì ÃÓÇÓ ãÞÇÑäÉ ÇáÞíã.";
+ Text[ dutch ] = "Bepaalt een positie in een matrix na een vergelijking van de waarden.";
+ Text[ chinese_simplified ] = "ͨ¹ýÊýÖµ±È½ÏÀ´È·¶¨Êý¾ÝÔÚÊý¾Ý×éÖеÄλÖá£";
+ Text[ greek ] = "Êáèïñßæåé ôçí èÝóç óå Ýíáí ðßíáêá ìåôÜ áðü óýãêñéóç ôùí ôéìþí.";
+ Text[ korean ] = "°ª ºñ±³ ÈÄ¿¡ Çà·Ä ³»ÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Deðer karþýlaþtýrýlmasýndan sonra matrisdeki bir konumu tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_VERGLEICH );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Suchkriterium" ;
+ Text [ english ] = "lookup_value" ;
+ Text [ norwegian ] = "Suchkriterium" ;
+ Text [ italian ] = "criterio di ricerca" ;
+ Text [ portuguese_brazilian ] = "Suchkriterium" ;
+ Text [ portuguese ] = "Valor_procurado" ;
+ Text [ finnish ] = "Suchkriterium" ;
+ Text [ danish ] = "Opslagsværdi" ;
+ Text [ french ] = "Critère_rech" ;
+ Text [ swedish ] = "sökkriterium" ;
+ Text [ dutch ] = "Zoekcriterium" ;
+ Text [ spanish ] = "valor_buscado" ;
+ Text [ english_us ] = "Search criterion" ;
+ Text[ chinese_simplified ] = "lookup_value";
+ Text[ russian ] = "Êðèòåðèé ïîèñêà";
+ Text[ polish ] = "Kryterium wyszukiwania";
+ Text[ japanese ] = "ŒŸ¸’l";
+ Text[ chinese_traditional ] = "lookup_value";
+ Text[ arabic ] = "Lookup_value";
+ Text[ dutch ] = "Zoekcriterium";
+ Text[ chinese_simplified ] = "lookup_value";
+ Text[ greek ] = "ÊñéôÞñéï áíáæÞôçóçò";
+ Text[ korean ] = "±âÁØ Ã£±â";
+ Text[ turkish ] = "Arama ölçütü";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, mit dem verglichen wird." ;
+ Text [ english ] = "is the value you use to find the value you want in a table." ;
+ Text [ norwegian ] = "Der Wert, mit dem verglichen wird." ;
+ Text [ italian ] = "è il valore utilizzato per ricercare il valore desiderato all'interno di una tabella." ;
+ Text [ portuguese_brazilian ] = "Der Wert, mit dem verglichen wird." ;
+ Text [ portuguese ] = "é o valor usado para determinar o valor numa tabela." ;
+ Text [ finnish ] = "Der Wert, mit dem verglichen wird." ;
+ Text [ danish ] = "Den værdi der skal sammenlignes med." ;
+ Text [ french ] = "La valeur à utiliser pour la comparaison." ;
+ Text [ swedish ] = "Värdet som det skall jämföras med." ;
+ Text [ dutch ] = "De waarde waarmee wordt vergeleken." ;
+ Text [ spanish ] = "es el valor que se usa para encontrar el valor deseado en la tabla." ;
+ Text [ english_us ] = "The value to be used for comparison." ;
+ Text[ chinese_simplified ] = "ÓÃÀ´±È½ÏµÄÊýÖµ¡£";
+ Text[ russian ] = "Çíà÷åíèå, ñ êîòîðûì ñëåäóåò ñðàâíèòü.";
+ Text[ polish ] = "Wartoœæ, dla której nast¹pi porównanie.";
+ Text[ japanese ] = "•\\‚Ì’†‚Å•K—v‚È€–Ú‚ðŒŸõ‚·‚邽‚ß‚ÉŽg—p‚·‚é’l¡";
+ Text[ chinese_traditional ] = "¥Î¨Ó¤ñ¸û©Î­n¬d§äªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÓÊÎÏãÉ áÊÍÏíÏ ÞíãÉ Ýí ÇáÕÝíÝ.";
+ Text[ dutch ] = "De waarde waarmee wordt vergeleken.";
+ Text[ chinese_simplified ] = "ÓÃÀ´±È½ÏµÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ìå ôçí ïðïßá èá ðñáãìáôïðïéçèåß ç óýãêñéóç.";
+ Text[ korean ] = "ºñ±³¿¡ »ç¿ëµÈ °ª";
+ Text[ turkish ] = "Karþýlaþtýrma yapýlan deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Suchmatrix" ;
+ Text [ english ] = "lookup_array" ;
+ Text [ norwegian ] = "Suchmatrix" ;
+ Text [ italian ] = "matrice" ;
+ Text [ portuguese_brazilian ] = "Suchmatrix" ;
+ Text [ portuguese ] = "Matriz_procurada" ;
+ Text [ finnish ] = "Suchmatrix" ;
+ Text [ danish ] = "Opslagsmatrix" ;
+ Text [ french ] = "M_recherche" ;
+ Text [ swedish ] = "sökmatris" ;
+ Text [ dutch ] = "Zoekmatrix" ;
+ Text [ spanish ] = "matriz_buscada" ;
+ Text [ english_us ] = "lookup_array" ;
+ Text[ chinese_simplified ] = "lookup_array";
+ Text[ russian ] = "Ìàññèâ_ïðîñìîòðà";
+ Text[ polish ] = "przeszukiwana_tab";
+ Text[ japanese ] = "ŒŸ¸”͈Í";
+ Text[ chinese_traditional ] = "lookup_array";
+ Text[ arabic ] = "Lookup_array";
+ Text[ dutch ] = "Zoekmatrix";
+ Text[ chinese_simplified ] = "lookup_array";
+ Text[ greek ] = "ÌÞôñá áíáæÞôçóçò";
+ Text[ korean ] = "lookup_array";
+ Text[ turkish ] = "Arama matrisi";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Matrix (der Bereich), in der gesucht wird." ;
+ Text [ english ] = "is a contiguous range of cells containing possible lookup values." ;
+ Text [ norwegian ] = "Die Matrix (der Bereich), in der gesucht wird." ;
+ Text [ italian ] = "La matrice (l'area) nella quale si effettua la ricerca." ;
+ Text [ portuguese_brazilian ] = "Die Matrix (der Bereich), in der gesucht wird." ;
+ Text [ portuguese ] = "é um intervalo de células adjacentes contendo os possíveis valores de equivalência." ;
+ Text [ finnish ] = "Die Matrix (der Bereich), in der gesucht wird." ;
+ Text [ danish ] = "Den matrix (det område) der skal søges i." ;
+ Text [ french ] = "La matrice (la plage) à utiliser pour la recherche." ;
+ Text [ swedish ] = "Matrisen (området) som det skall sökas i." ;
+ Text [ dutch ] = "De matrix (het bereik) waarin wordt gezocht." ;
+ Text [ spanish ] = "es un área múltiple de celdas que contienen posibles valores a buscar." ;
+ Text [ english_us ] = "The array (range) in which the search is made." ;
+ Text[ chinese_simplified ] = "ÒªÔÚÆäÖÐËÑÑ°µÄÊý¾Ý×é(ÇøÓò)¡£";
+ Text[ russian ] = "Ìàññèâ (äèàïàçîí), â êîòîðîì ñëåäóåò èñêàòü.";
+ Text[ polish ] = "Macierz (zakres), w którym nast¹pi wyszukiwanie.";
+ Text[ japanese ] = "ŒŸ¸’l‚ðŠÜ‚޾͈ٔ͡";
+ Text[ chinese_traditional ] = "­n¦b¨ä¤¤´M§äªº¼Æ¾Ú²Õ(°Ï°ì)¡C";
+ Text[ arabic ] = "ÇáãÕÝæÝÉ (ÇáäØÇÞ) ÇáÊí ÓæÝ íÊã ÇáÈÍË ÝíåÇ.";
+ Text[ dutch ] = "De matrix (het bereik) waarin wordt gezocht.";
+ Text[ chinese_simplified ] = "ÒªÔÚÆäÖÐËÑÑ°µÄÊý¾Ý×é(ÇøÓò)¡£";
+ Text[ greek ] = "Ç ìÞôñá (ç ðåñéï÷Þ) óôç ïðïßá ãßíåôáé ç áíáæÞôçóç";
+ Text[ korean ] = "ãÀ» ±¸¿ªÀÎ Çà·Ä(¹üÀ§)ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Arama yapýlan matris (aralýk).";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Typ" ;
+ Text [ english ] = "match_type" ;
+ Text [ norwegian ] = "Typ" ;
+ Text [ italian ] = "Tipo" ;
+ Text [ portuguese_brazilian ] = "Typ" ;
+ Text [ portuguese ] = "Tipo" ;
+ Text [ finnish ] = "Typ" ;
+ Text [ danish ] = "Type" ;
+ Text [ french ] = "Type" ;
+ Text [ swedish ] = "typ" ;
+ Text [ dutch ] = "Type" ;
+ Text [ spanish ] = "tipo_de_coincidencia" ;
+ Text [ english_us ] = "type" ;
+ Text[ chinese_simplified ] = "match_type";
+ Text[ russian ] = "Òèï";
+ Text[ polish ] = "Typ";
+ Text[ japanese ] = "Ƈ‚ÌŒ^";
+ Text[ chinese_traditional ] = "match_type";
+ Text[ arabic ] = "Match_type";
+ Text[ dutch ] = "Type";
+ Text[ chinese_simplified ] = "match_type";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "ŸÀÔ";
+ Text[ turkish ] = "Tip";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Typ kann die Werte 1, 0 oder -1 annehmen und bestimmt, nach welchen Kriterien verglichen wird." ;
+ Text [ english ] = "is the number -1, 0 or 1." ;
+ Text [ norwegian ] = "Typ kann die Werte 1, 0 oder -1 annehmen und bestimmt, nach welchen Kriterien verglichen wird." ;
+ Text [ italian ] = "è il numero -1, 0 o 1 e specifica sulla base di quali criteri si effettui il confronto." ;
+ Text [ portuguese_brazilian ] = "Typ kann die Werte 1, 0 oder -1 annehmen und bestimmt, nach welchen Kriterien verglichen wird." ;
+ Text [ portuguese ] = "determina os critérios de procura em função do valor de tipo (valores possíveis: 1,0 e -1)." ;
+ Text [ finnish ] = "Typ kann die Werte 1, 0 oder -1 annehmen und bestimmt, nach welchen Kriterien verglichen wird." ;
+ Text [ danish ] = "Type kan antage værdierne 1, 0 eller -1 og definerer sammenligningskriterierne." ;
+ Text [ french ] = "Type peut avoir la valeur 1, 0 ou -1 et détermine les critères à utiliser pour la comparaison." ;
+ Text [ swedish ] = "Typ kan anta värdena 1, 0 eller -1 och bestämmer vilka kriterier som används för jämförelse." ;
+ Text [ dutch ] = "Type kan de waarden 1, 0 of -1 aannemen en bepaalt volgens welke criteria er wordt vergeleken." ;
+ Text [ spanish ] = "es el número -1, 0 ó 1." ;
+ Text [ english_us ] = "Type can take the value 1, 0 or -1 and determines the criteria are to be used for comparison purposes." ;
+ Text[ chinese_simplified ] = "ΪÊýÖµ 1, 0 »ò -1£¬ÓÃÓÚÈ·¶¨±È½ÏµÄ¹æÔò¡£";
+ Text[ russian ] = "×èñëî â èíòåðâàëå îò 1, 0 èëè -1 è îïðåäåëÿåò, ïî êàêèì êðèòåðèÿì ñëåäóåò ñðàâíèâàòü.";
+ Text[ polish ] = "Typ mo¿e przyjmowaæ wartoœci 1, 0 lub -1 i okreœliæ, wed³ug jakich kryteriów ma zostaæ porównane.";
+ Text[ japanese ] = "Ƈ‚ÌŒ^‚Í 1A0A-1A‚Ì”’l‚Ì‚¢‚¸‚ê‚©‚ðŽw’肵AŒŸ¸”͈͂̒†‚ÅŒŸ¸’l‚ð’T‚·•û–@‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¬°¼Æ­È 1, 0 ©Î -1¡M¥Î¨Ó½T©w¤ñ¸ûªº³W«h¡C";
+ Text[ arabic ] = "ÇáÑÞã 1¡ Ãæ 0¡ Ãæ -1 æíÍÏÏ ãÚÇííÑ ÇáãØÇÈÞÉ.";
+ Text[ dutch ] = "Type kan de waarden 1, 0 of -1 aannemen en bepaalt volgens welke criteria er wordt vergeleken.";
+ Text[ chinese_simplified ] = "ΪÊýÖµ 1, 0 »ò -1£¬ÓÃÓÚÈ·¶¨±È½ÏµÄ¹æÔò¡£";
+ Text[ greek ] = "Ï ôýðïò ìðïñåß íá äå÷ôåß ôéò ôéìÝò 1, 0 Þ -1 êáé ïñßæåé óýìöùíá ìå ðïéÜ êñéôÞñéá èá ãßíåé ç óýãêñéóç.";
+ Text[ korean ] = "TypeÀº 1, 0 ȤÀº -1 °ªÀ» °¡Áú ¼ö ÀÖ°í ¾î´À ±âÁØ¿¡ µû¶ó ºñ±³µÉÁö ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "1, 0 ya da -1 deðerlerini alabilen tip, yapýlacak aramanýn ölçütlerini belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VERSCHIEBUNG #*=-
+ Resource SC_OPCODE_OFFSET
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Bestimmt einen Bezug, der gegenüber dem Ausgangspunkt verschoben ist. : Bestimmt einen Bezug, der gegenüber dem Augangspunkt verschoben ist. */
+ /* ### ACHTUNG: Neuer Text in Resource? Bestimmt einen Bezug, der gegenüber dem Ausgangspunkt verschoben ist. : Bestimmt einen Bezug, der gegenüber dem Augangspunkt verschoben ist. */
+ /* ### ACHTUNG: Neuer Text in Resource? Bestimmt einen Bezug, der gegenüber dem Ausgangspunkt verschoben ist. : Bestimmt einen Bezug, der gegen³ber dem Ausgangspunkt verschoben ist. */
+ Text = "Bestimmt einen Bezug, der gegenüber dem Ausgangspunkt verschoben ist." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Bestimmt einen Bezug, der gegenüber dem Ausgangspunkt verschoben ist." ;
+ Text [ italian ] = "Restituisce un riferimento che è spostato rispetto al punto di partenza." ;
+ Text [ portuguese_brazilian ] = "Bestimmt einen Bezug, der gegenüber dem Ausgangspunkt verschoben ist." ;
+ Text [ portuguese ] = "Devolve uma referência (altura/largura) em função de outra referência de um determinado número de linhas e colunas." ;
+ Text [ finnish ] = "Bestimmt einen Bezug, der gegenüber dem Ausgangspunkt verschoben ist." ;
+ Text [ danish ] = "Bestemmer en reference, som er forskudt i forhold til udgangspunktet." ;
+ Text [ french ] = "Détermine une référence décalée par rapport au point de départ." ;
+ Text [ swedish ] = "Bestämmer en referens som är förflyttad i förhållande till utgångspunkten." ;
+ Text [ dutch ] = "Geeft als resultaat een verwijzing die is verschoven ten opzichte van het uitgangspunt." ;
+ Text [ spanish ] = "Devuelve una referencia especificada y la desvía respecto a otra referencia." ;
+ Text [ english_us ] = "Returns a reference which has been moved in relation to the starting point." ;
+ Text[ chinese_simplified ] = "È·¶¨´ÓÖ¸¶¨»ùµã³ö·¢Òƶ¯ºóµÄÒýÓÃÇøÓò¡£";
+ Text[ russian ] = "Âîçâðàùàåò ññûëêó, ñìåùàåìóþ îòíîñèòåëüíî çàäàííîé ññûëêè.";
+ Text[ polish ] = "Okreœla odwo³anie, które zosta³o przesuniête w porównaniu z punktem wyjœciowym.";
+ Text[ japanese ] = "Žw’肵‚½¼ÌĂ̈ʒu‚É‚ ‚é¾Ù‚Ü‚½‚;͈ٔ͂̎QÆ‚ð•Ô‚µ‚Ü‚·¡";
+ Text[ chinese_traditional ] = "½T©w±q«ü©w°òÂI¥Xµo²¾°Ê«áªº°Ñ·Ó°Ï°ì¡C";
+ Text[ arabic ] = "ÊÍÏÏ ãÑÌÚ Êã ÅÒÇÍÊå Úä äÞØÉ ÇáÅäØáÇÞ.";
+ Text[ dutch ] = "Geeft als resultaat een verwijzing die is verschoven ten opzichte van het uitgangspunt.";
+ Text[ chinese_simplified ] = "È·¶¨´ÓÖ¸¶¨»ùµã³ö·¢Òƶ¯ºóµÄÒýÓÃÇøÓò¡£";
+ Text[ greek ] = "Ïñßæåé ìéá áíáöïñÜ ç ïðïßá ìåôáêéíÞèçêå ó÷åôéêÜ ìå ôï áñ÷éêü óçìåßï.";
+ Text[ korean ] = "½ÃÀÛ ÁöÁ¡¿¡ °ü·ÃÇؼ­ À̵¿µÈ ÂüÁ¶¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Çýkýþ noktasýna göre taþýnan bir referans tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_VERSCHIEBUNG );
+ 5; 0; 0; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Bezug" ;
+ Text [ italian ] = "Riferimento" ;
+ Text [ portuguese_brazilian ] = "Bezug" ;
+ Text [ portuguese ] = "Referência" ;
+ Text [ finnish ] = "Bezug" ;
+ Text [ danish ] = "Reference" ;
+ Text [ french ] = "Référence" ;
+ Text [ swedish ] = "referens" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ spanish ] = "ref" ;
+ Text [ english_us ] = "reference" ;
+ Text[ chinese_simplified ] = "reference";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "Šî€";
+ Text[ chinese_traditional ] = "reference";
+ Text[ arabic ] = "reference";
+ Text[ dutch ] = "Verwijzing";
+ Text[ chinese_simplified ] = "reference";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Bezug (die Zelle), von der ab die Verschiebung bestimmt wird." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Bezug (die Zelle), von der ab die Verschiebung bestimmt wird." ;
+ Text [ italian ] = "Il riferimento (la cella) dalla quale viene determinato lo spostamento." ;
+ Text [ portuguese_brazilian ] = "Der Bezug (die Zelle), von der ab die Verschiebung bestimmt wird." ;
+ Text [ portuguese ] = "é a referência (célula) de base para o deslocamento." ;
+ Text [ finnish ] = "Der Bezug (die Zelle), von der ab die Verschiebung bestimmt wird." ;
+ Text [ danish ] = "Den reference (den celle) som forskydningen skal baseres på." ;
+ Text [ french ] = "La référence (cellule) sur laquelle baser le décalage." ;
+ Text [ swedish ] = "Referensen (cellen) från vilken förflyttningen bestäms." ;
+ Text [ dutch ] = "De verwijzing (de cel) van waaruit de verschuiving wordt bepaald." ;
+ Text [ spanish ] = "es la referencia a la celda desde la cual se determina la desviación." ;
+ Text [ english_us ] = "The reference (cell) from which to base the movement." ;
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËãÒƶ¯µÄÖ¸¶¨»ùµã(µ¥Ôª¸ñ)¡£";
+ Text[ russian ] = "Ññûëêà (èëè ÿ÷åéêà), íà÷èíàÿ ñ êîòîðîé îïðåäåëÿåòñÿ ñìåùåíèå.";
+ Text[ polish ] = "Odwo³anie (komórka), od której nast¹pi przesuniêcie.";
+ Text[ japanese ] = "¼ÌÄ‚ð‚·‚éŠî€‚̈ʒu‚É‚ ‚é¾Ù”͈͂̎QÆB";
+ Text[ chinese_traditional ] = "¥Î¨Ó­pºâ²¾°Êªº«ü©w°òÂI(Àx¦s®æ)¡C";
+ Text[ arabic ] = "ÇáãÑÌÚ ááÎáíÉ ÇáÊí ÊÑíÏ ÊÍÏíÏ ÇáÅÒÇÍÉ ÈÏÁ ãäåÇ.";
+ Text[ dutch ] = "De verwijzing (de cel) van waaruit de verschuiving wordt bepaald.";
+ Text[ chinese_simplified ] = "ÓÃÓÚ¼ÆËãÒƶ¯µÄÖ¸¶¨»ùµã(µ¥Ôª¸ñ)¡£";
+ Text[ greek ] = "Ç áíáöïñÜ (ôï êåëß) áðü ôçí ïðïßá ïñßæåôáé ç ìåôáêßíçóç.";
+ Text[ korean ] = "À̵¿ÀÇ ±Ù°Å°¡µÇ´Â ÂüÁ¶ (¼¿)";
+ Text[ turkish ] = "Taþýnmanýn belirlenmeye baþlanacaðý referans (hücre).";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Zeilen" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Zeilen" ;
+ Text [ italian ] = "Righe" ;
+ Text [ portuguese_brazilian ] = "Zeilen" ;
+ Text [ portuguese ] = "Linhas" ;
+ Text [ finnish ] = "Zeilen" ;
+ Text [ danish ] = "Rækker" ;
+ Text [ french ] = "Lignes" ;
+ Text [ swedish ] = "rader" ;
+ Text [ dutch ] = "Rijen" ;
+ Text [ spanish ] = "filas" ;
+ Text [ english_us ] = "rows" ;
+ Text[ chinese_simplified ] = "rows";
+ Text[ russian ] = "Ñòðîêè";
+ Text[ polish ] = "Wiersze";
+ Text[ japanese ] = "s”";
+ Text[ chinese_traditional ] = "rows";
+ Text[ arabic ] = "Rows";
+ Text[ dutch ] = "Rijen";
+ Text[ chinese_simplified ] = "rows";
+ Text[ greek ] = "ÃñáììÝò";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Anzahl der Zeilen, um die nach oben oder unten verschoben wird." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Die Anzahl der Zeilen, um die nach oben oder unten verschoben wird." ;
+ Text [ italian ] = "Il numero di righe dello spostamento verso l'alto o verso il basso." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Zeilen, um die nach oben oder unten verschoben wird." ;
+ Text [ portuguese ] = "é o número de linhas a deslocar para cima ou para baixo." ;
+ Text [ finnish ] = "Die Anzahl der Zeilen, um die nach oben oder unten verschoben wird." ;
+ Text [ danish ] = "Antallet af rækker der skal forskydes op eller ned med." ;
+ Text [ french ] = "Le nombre de lignes à décaler vers le haut ou vers le bas." ;
+ Text [ swedish ] = "Antalet rader som förflyttas uppåt eller neråt." ;
+ Text [ dutch ] = "Het aantal cellen ten opzichte waarvan naar boven of naar beneden wordt verschoven." ;
+ Text [ spanish ] = "es el número de filas en que se desvía el área. Si se omite, se utilizará cero." ;
+ Text [ english_us ] = "The number of rows to be moved either up or down." ;
+ Text[ chinese_simplified ] = "ÉÏÏÂÒƶ¯µÄÐÐÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ñòðîê, îòíîñèòåëüíî êîòîðûõ ñëåäóåò ñìåñòèòü ââåðõ èëè âíèç.";
+ Text[ polish ] = "Iloœæ wierszy, o któr¹ nast¹pi przesuniêcie w górê lub w dó³.";
+ Text[ japanese ] = "Šî€‚̾قðã•ûŒü‚Ü‚½‚͉º•ûŒü‚Ö¼ÌÄ‚·‚é‹——£‚ðs”’PˆÊ‚Å•\\‚µ‚½”B";
+ Text[ chinese_traditional ] = "¤W¤U²¾°Êªº¦C¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÕÝæÝ ÇáÊí ÓíÊã ÍæáåÇ ÇáÅÒÇÍÉ áÃÚáì Ãæ áÃÓÝá.";
+ Text[ dutch ] = "Het aantal cellen ten opzichte waarvan naar boven of naar beneden wordt verschoven.";
+ Text[ chinese_simplified ] = "ÉÏÏÂÒƶ¯µÄÐÐÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí ãñáììþí ðïõ ðñüêåéôáé íá ãßíåé ç ìåôáêßíçóç ðñïò ôá ðÜíù Þ êÜôù.";
+ Text[ korean ] = "À§ ¶Ç´Â ¾Æ·¡·Î À̵¿ÇÒ ÇàÀÇ ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Yukarý ya da aþaðý taþýnacak satýr sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Spalten" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Spalten" ;
+ Text [ italian ] = "Colonne" ;
+ Text [ portuguese_brazilian ] = "Spalten" ;
+ Text [ portuguese ] = "Colunas" ;
+ Text [ finnish ] = "Spalten" ;
+ Text [ danish ] = "Kolonner" ;
+ Text [ french ] = "Colonnes" ;
+ Text [ swedish ] = "kolumner" ;
+ Text [ dutch ] = "Kolommen" ;
+ Text [ spanish ] = "col" ;
+ Text [ english_us ] = "columns" ;
+ Text[ chinese_simplified ] = "columns";
+ Text[ russian ] = "Ñòîëáöû";
+ Text[ polish ] = "kolumny";
+ Text[ japanese ] = "—ñ”";
+ Text[ chinese_traditional ] = "cols";
+ Text[ arabic ] = "Cols";
+ Text[ dutch ] = "Kolommen";
+ Text[ chinese_simplified ] = "columns";
+ Text[ greek ] = "ÓôÞëåò";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Anzahl der Spalten, um die nach links oder rechts verschoben wird." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Die Anzahl der Spalten, um die nach links oder rechts verschoben wird." ;
+ Text [ italian ] = "Il numero di colonne dello spostamento verso sinistra o destra." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Spalten, um die nach links oder rechts verschoben wird." ;
+ Text [ portuguese ] = "é o número de colunas a deslocar para a esquerda ou direita." ;
+ Text [ finnish ] = "Die Anzahl der Spalten, um die nach links oder rechts verschoben wird." ;
+ Text [ danish ] = "Antallet af rækker der skal forskydes til venstre eller højre med." ;
+ Text [ french ] = "Le nombre de colonnes à décaler vers la gauche ou vers la droite." ;
+ Text [ swedish ] = "Antalet kolumner som förflyttas till vänster eller till höger." ;
+ Text [ dutch ] = "Het aantal kolommen ten opzichte waarvan naar links of naar rechts wordt verschoven." ;
+ Text [ spanish ] = "es el número de columnas en que se desvía el área. Si se omite, se utilizará cero." ;
+ Text [ english_us ] = "The number of columns that are to be moved to the left or to the right." ;
+ Text[ chinese_simplified ] = "×óÓÒÒƶ¯µÄÁÐÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ñòîëáöîâ, îòíîñèòåëüíî êîòîðûõ ñëåäóåò ñìåñòèòü âëåâî èëè âïðàâî.";
+ Text[ polish ] = "Liczba kolumn, o któr¹ nast¹pi przesuniêcie w lewo lub prawo.";
+ Text[ japanese ] = "Šî€‚̾قð¶•ûŒü‚Ü‚½‚͉E‰º•ûŒü‚Ö¼ÌÄ‚·‚é‹——£‚ð—ñ”’PˆÊ‚Å•\\‚µ‚½”B";
+ Text[ chinese_traditional ] = "¥ª¥k²¾°ÊªºÄæ¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÚãÏÉ ÇáÊí ÓíÊã ÍæáåÇ ÇáÅÒÇÍÉ ááíÓÇÑ Ãæááíãíä.";
+ Text[ dutch ] = "Het aantal kolommen ten opzichte waarvan naar links of naar rechts wordt verschoven.";
+ Text[ chinese_simplified ] = "×óÓÒÒƶ¯µÄÁÐÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí óôçëþí ðïõ ðñüêåéôáé íá ãßíåé ç ìåôáêßíçóç ðñïò ôá áñéóôåñÜ Þ äåîéÜ.";
+ Text[ korean ] = "¿ÞÂÊ ¶Ç´Â ¿À¸¥ÂÊÀ¸·Î À̵¿ÇÒ ¿­ÀÇ ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sola ya da saða taþýnacak sütun sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Höhe : H÷he */
+ Text = "Höhe" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Höhe" ;
+ Text [ italian ] = "Altezza" ;
+ Text [ portuguese_brazilian ] = "Höhe" ;
+ Text [ portuguese ] = "Altura" ;
+ Text [ finnish ] = "Höhe" ;
+ Text [ danish ] = "Højde" ;
+ Text [ french ] = "Hauteur" ;
+ Text [ swedish ] = "höjd" ;
+ Text [ dutch ] = "Hoogte" ;
+ Text [ spanish ] = "Altura" ;
+ Text [ english_us ] = "height" ;
+ Text[ chinese_simplified ] = "height";
+ Text[ russian ] = "Âûñîòà";
+ Text[ polish ] = "WysokoϾ";
+ Text[ japanese ] = "‚‚³";
+ Text[ chinese_traditional ] = "height";
+ Text[ arabic ] = "Height";
+ Text[ dutch ] = "Hoogte";
+ Text[ chinese_simplified ] = "height";
+ Text[ greek ] = "¾øïò";
+ Text[ korean ] = "³ôÀÌ";
+ Text[ turkish ] = "Yükseklik";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Die Anzahl der Zeilen des verschobenen Bezugs." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Die Anzahl der Zeilen des verschobenen Bezugs." ;
+ Text [ italian ] = "Il numero di righe del riferimento spostato." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Zeilen des verschobenen Bezugs." ;
+ Text [ portuguese ] = "é o número de linhas da referência deslocada." ;
+ Text [ finnish ] = "Die Anzahl der Zeilen des verschobenen Bezugs." ;
+ Text [ danish ] = "Antallet af rækker i den forskudte reference." ;
+ Text [ french ] = "Le nombre de lignes de la référence décalée." ;
+ Text [ swedish ] = "Antalet rader i den förflyttade referensen." ;
+ Text [ dutch ] = "Het aantal rijen van de verschoven verwijzing." ;
+ Text [ spanish ] = "es la altura, en filas, de la referencia desviada." ;
+ Text [ english_us ] = "The number of rows of the moved reference." ;
+ Text[ chinese_simplified ] = "ÒýÓÃÇøÓòµÄÐÐÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ñòðîê ñìåùàåìîé ññûëêè.";
+ Text[ polish ] = "Liczba wierszy przesuniêtego odwo³ania.";
+ Text[ japanese ] = "¼ÌÄ‚µ‚½ˆÊ’u‚É‚ ‚éŽQÆ‚Ìs”B";
+ Text[ chinese_traditional ] = "°Ñ·Ó°Ï°ìªº¦C¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÕÝæÝ ÇáãÑÌÚ ÇáÐí ÊãÊ ÅÒÇÍÊå.";
+ Text[ dutch ] = "Het aantal rijen van de verschoven verwijzing.";
+ Text[ chinese_simplified ] = "ÒýÓÃÇøÓòµÄÐÐÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí ãñáììþí ôçò áíáöïñÜò ðïõ ìåôáêéíÞèçêå.";
+ Text[ korean ] = "À̵¿ÇÒ ÂüÁ¶ÀÇ Çà °³¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Taþýnan referansýn satýr sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 10 // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ // Name of Parameter 5
+ {
+ Text = "Breite" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Breite" ;
+ Text [ italian ] = "Larghezza" ;
+ Text [ portuguese_brazilian ] = "Breite" ;
+ Text [ portuguese ] = "Largura" ;
+ Text [ finnish ] = "Breite" ;
+ Text [ danish ] = "Bredde" ;
+ Text [ french ] = "Largeur" ;
+ Text [ swedish ] = "bredd" ;
+ Text [ dutch ] = "Breedte" ;
+ Text [ spanish ] = "Ancho" ;
+ Text [ english_us ] = "width" ;
+ Text[ chinese_simplified ] = "width";
+ Text[ russian ] = "Øèðèíà";
+ Text[ polish ] = "SzerokoϾ";
+ Text[ japanese ] = "•";
+ Text[ chinese_traditional ] = "width";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ dutch ] = "Breedte";
+ Text[ chinese_simplified ] = "width";
+ Text[ greek ] = "ÐëÜôïò";
+ Text[ korean ] = "³Êºñ";
+ Text[ turkish ] = "Geniþlik";
+ Text[ language_user1 ] = " ";
+ };
+ String 11 // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ // Description of Parameter 5
+ {
+ Text = "Die Anzahl der Spalten des verschobenen Bezugs." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Die Anzahl der Spalten des verschobenen Bezugs." ;
+ Text [ italian ] = "Il numero di colonne del riferimento spostato." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Spalten des verschobenen Bezugs." ;
+ Text [ portuguese ] = "é o número de colunas da referência fornecida." ;
+ Text [ finnish ] = "Die Anzahl der Spalten des verschobenen Bezugs." ;
+ Text [ danish ] = "Antallet af kolonner i den forskudte reference." ;
+ Text [ french ] = "Le nombre de colonnes de la référence décalée." ;
+ Text [ swedish ] = "Antalet kolumner i den flyttade referensen." ;
+ Text [ dutch ] = "Het aantal kolommen van de verschoven verwijzing." ;
+ Text [ spanish ] = "es el ancho, en columnas, de la referencia desviada." ;
+ Text [ english_us ] = "The number of columns in the moved reference." ;
+ Text[ chinese_simplified ] = "ÒýÓÃÇøÓòµÄÁÐÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ñòîëáöîâ ñìåùàåìîé ññûëêè.";
+ Text[ polish ] = "Iloœæ kolumn przesuniêtego odwo³ania.";
+ Text[ japanese ] = "¼ÌÄ‚µ‚½ˆÊ’u‚É‚ ‚éŽQÆ‚Ì—ñ”B";
+ Text[ chinese_traditional ] = "°Ñ·Ó°Ï°ìªºÄæ¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÃÚãÏÉ ÇáãÑÌÚ ÇáÐí ÊãÊ ÅÒÇÍÊå.";
+ Text[ dutch ] = "Het aantal kolommen van de verschoven verwijzing.";
+ Text[ chinese_simplified ] = "ÒýÓÃÇøÓòµÄÁÐÊý¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí óôçëþí ôçò áíáöïñÜò ðïõ ìåôáêéíÞèçêå.";
+ Text[ korean ] = "À̵¿µÈ ÂüÁ¶¿¡¼­ ¿­ÀÇ ¼ö";
+ Text[ turkish ] = "Taþýnan referansýn sütun sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function FEHLERTYP #*=-
+ Resource SC_OPCODE_ERROR_TYPE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt die Fehlernummer zu aufgetretenen Fehlern." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Bestimmt die Fehlernummer zu aufgetretenen Fehlern." ;
+ Text [ italian ] = "Restituisce il numero degli errori presentatisi." ;
+ Text [ portuguese_brazilian ] = "Bestimmt die Fehlernummer zu aufgetretenen Fehlern." ;
+ Text [ portuguese ] = "Devolve um número correspondente a um erro." ;
+ Text [ finnish ] = "Bestimmt die Fehlernummer zu aufgetretenen Fehlern." ;
+ Text [ danish ] = "Returnerer et tal der svarer til en fejltype." ;
+ Text [ french ] = "Détermine le numéro d'erreur correspondant à une erreur survenue." ;
+ Text [ swedish ] = "Returnerar felnumret på uppkomna fel." ;
+ Text [ dutch ] = "Bepaalt het foutnummer bij de opgetreden fouten." ;
+ Text [ spanish ] = "Devuelve un número que corresponde a un tipo de error." ;
+ Text [ english_us ] = "Returns a number corresponding to an error type" ;
+ Text[ chinese_simplified ] = "È·¶¨´íÎóÖµµÄ¶ÔÓ¦ºÅÂë¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÷èñëî, ñîîòâåòñòâóþùåå òèïó îøèáêè.";
+ Text[ polish ] = "Zwraca numer dotycz¹cy danego b³êdu.";
+ Text[ japanese ] = "”­¶‚µ‚½´×°‚ÌŽí—ނ𒲂ׂ邱‚Æ‚ª‚Å‚«‚Ü‚·¡";
+ Text[ chinese_traditional ] = "½T©w¿ù»~­Èªº¹ïÀ³¸¹½X¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÚÏÏ ÇáÃÎØÇÁ áäæÚ ãÚíä ãä ÇáÃÎØÇÁ";
+ Text[ dutch ] = "Bepaalt het foutnummer bij de opgetreden fouten.";
+ Text[ chinese_simplified ] = "È·¶¨´íÎóÖµµÄ¶ÔÓ¦ºÅÂë¡£";
+ Text[ greek ] = "Äßíåé ôïí áñéèìü óöÜëìáôïò ôùí óöáëìÜôùí ðïõ ðáñïõóéÜæïíôáé.";
+ Text[ korean ] = "¿À·ù ŸÀÔ¿¡ »óÀÀÇϴ¼ö¸¦ ¹Ýȯ";
+ Text[ turkish ] = "Hata tipleri ile ilgili hata numaralarýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_FEHLERTYP );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Bezug" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Bezug" ;
+ Text [ italian ] = "Riferimento" ;
+ Text [ portuguese_brazilian ] = "Bezug" ;
+ Text [ portuguese ] = "Referência" ;
+ Text [ finnish ] = "Bezug" ;
+ Text [ danish ] = "Reference" ;
+ Text [ french ] = "Référence" ;
+ Text [ swedish ] = "referens" ;
+ Text [ dutch ] = "Verwijzing" ;
+ Text [ spanish ] = "ref" ;
+ Text [ english_us ] = "reference" ;
+ Text[ chinese_simplified ] = "reference";
+ Text[ russian ] = "Ññûëêà";
+ Text[ polish ] = "Odwo³anie";
+ Text[ japanese ] = "ŽQÆ";
+ Text[ chinese_traditional ] = "reference";
+ Text[ arabic ] = "reference";
+ Text[ dutch ] = "Verwijzing";
+ Text[ chinese_simplified ] = "reference";
+ Text[ greek ] = "ÁíáöïñÜ";
+ Text[ korean ] = "ÂüÁ¶";
+ Text[ turkish ] = "Referans";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Bezug (die Zelle), in der der Fehler aufgetreten ist." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Bezug (die Zelle), in der der Fehler aufgetreten ist." ;
+ Text [ italian ] = "Riferimento (cella) nella quale si è avuto l'errore" ;
+ Text [ portuguese_brazilian ] = "Der Bezug (die Zelle), in der der Fehler aufgetreten ist." ;
+ Text [ portuguese ] = "é a referência (célula) na qual ocorreu o erro." ;
+ Text [ finnish ] = "Der Bezug (die Zelle), in der der Fehler aufgetreten ist." ;
+ Text [ danish ] = "Den reference (den celle) som fejlen er opstået i." ;
+ Text [ french ] = "La référence (cellule) dans laquelle l'erreur est survenue." ;
+ Text [ swedish ] = "Referensen (cellen) där felet har uppkommit." ;
+ Text [ dutch ] = "De verwijzing (cel) waarin de fout is opgetreden." ;
+ Text [ spanish ] = "es la referencia (la celda) en la que el error ha ocurrido." ;
+ Text [ english_us ] = "The reference (cell) in which the error occurred." ;
+ Text[ chinese_simplified ] = "³öÏÖ´íÎóµÄµ¥Ôª¸ñÒýÓá£";
+ Text[ russian ] = "Ññûëêà íà ÿ÷åéêó, â êîòîðîé ïðîèçîøëà îøèáêà.";
+ Text[ polish ] = "Adres komórki, w której wyst¹pi³ b³¹d.";
+ Text[ japanese ] = "´×°‚ª”­¶‚µ‚½¾Ù‚ÌŽQÆB";
+ Text[ chinese_traditional ] = "¥X²{¿ù»~ªº(Àx¦s®æ)°Ñ·Ó¡C";
+ Text[ arabic ] = "ãÑÌÚ ááÎáíÉ ÇáÊí ÍÏË ÝíåÇ ÇáÎØÃ.";
+ Text[ dutch ] = "De verwijzing (cel) waarin de fout is opgetreden.";
+ Text[ chinese_simplified ] = "³öÏÖ´íÎóµÄµ¥Ôª¸ñÒýÓá£";
+ Text[ greek ] = "Ç áíáöïñÜ (ôï êåëß) óôçí ïðïßá ðáñïõóéÜóôçêå óöÜëìá.";
+ Text[ korean ] = "¿À·ù°¡ ¹ß»ýÇÑ ÂüÁ¶(¼¿)ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Hatanýn meydana geldiði referans (hücre).";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VORLAGE #*=-
+ Resource SC_OPCODE_STYLE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Weist der Formelzelle eine Formatvorlage zu." ;
+ Text [ english ] = "Applies a stylesheet to the cell." ;
+ Text [ norwegian ] = "Weist der Formelzelle eine Formatvorlage zu." ;
+ Text [ italian ] = "Assegna alla cella un modello." ;
+ Text [ portuguese_brazilian ] = "Weist der Formelzelle eine Formatvorlage zu." ;
+ Text [ portuguese ] = "Aplica um formato predefinido à célula." ;
+ Text [ finnish ] = "Weist der Formelzelle eine Formatvorlage zu." ;
+ Text [ danish ] = "Tildeler en formattypografi til en formelcelle." ;
+ Text [ french ] = "Applique un style de format à une cellule contenant une formule." ;
+ Text [ swedish ] = "Tilldelar formelcellen en formatmall." ;
+ Text [ dutch ] = "Wijst de formulecel een opmaakprofiel toe." ;
+ Text [ spanish ] = "Asigna a la celda un formato predeterminado." ;
+ Text [ english_us ] = "Applies a Style to the formula cell." ;
+ Text[ chinese_simplified ] = "·ÖÅäÒ»¸ö¸ñʽÑùʽ¸øÒ»¸öµ¥Ôª¸ñ¡£";
+ Text[ russian ] = "Çàäàåò ÿ÷åéêå ôîðìóëû ñòèëü ôîðìàòà.";
+ Text[ polish ] = "Przypisuje komórce formu³y styl formatu.";
+ Text[ japanese ] = "¾Ù‚Ì‘Ž®‚ð‘Ž®½À²Ù‚É“K—p‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤À°t¤@­Ó®æ¦¡¼Ë¦¡µ¹¤@­ÓÀx¦s®æ¡C";
+ Text[ arabic ] = "ÊØÈÞ äãØ ÊäÓíÞ Úáì ÎáíÉ ÇáÕíÛÉ.";
+ Text[ dutch ] = "Wijst de formulecel een opmaakprofiel toe.";
+ Text[ chinese_simplified ] = "·ÖÅäÒ»¸ö¸ñʽÑùʽ¸øÒ»¸öµ¥Ôª¸ñ¡£";
+ Text[ greek ] = "Åöáñìüæåé Ýíá ðñüôõðï ìéáò ìïñöÞò óôï êåëß ôýðïõ.";
+ Text[ korean ] = "¼ö½Ä¼¿¿¡ ¼­½ÄÀ¯Çü Àû¿ë.";
+ Text[ turkish ] = "Formül hücresine bir biçim uygular.";
+ Text[ language_user1 ] = "All \"Vorlagen\" /Styles are written with a capital S.10.5.00EMp.s. Formatvorlage ist Style im Gegensatz zu Dok-vorlage (template). ODER ist es in Calc was Besonderes?";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_VORLAGE );
+ 3; 0; 1; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Vorlage" ;
+ Text [ english ] = "Stylesheet" ;
+ Text [ norwegian ] = "Vorlage" ;
+ Text [ italian ] = "Modello" ;
+ Text [ portuguese_brazilian ] = "Vorlage" ;
+ Text [ portuguese ] = "Estilo" ;
+ Text [ finnish ] = "Vorlage" ;
+ Text [ danish ] = "Typografi" ;
+ Text [ french ] = "Style" ;
+ Text [ swedish ] = "formatmall" ;
+ Text [ dutch ] = "Profiel" ;
+ Text [ spanish ] = "Estilo" ;
+ Text [ english_us ] = "Style" ;
+ Text[ chinese_simplified ] = "Style";
+ Text[ russian ] = "Ñòèëü";
+ Text[ polish ] = "Styl";
+ Text[ japanese ] = "½À²Ù";
+ Text[ chinese_traditional ] = "Style";
+ Text[ arabic ] = "Style";
+ Text[ dutch ] = "Profiel";
+ Text[ chinese_simplified ] = "Style";
+ Text[ greek ] = "Ðñüôõðï";
+ Text[ korean ] = "À¯Çü";
+ Text[ turkish ] = "Biçim";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Name der Vorlage, die zugewiesen wird." ;
+ Text [ english ] = "The time (in seconds) the stylesheet is valid." ;
+ Text [ norwegian ] = "Der Name der Vorlage, die zugewiesen wird." ;
+ Text [ italian ] = "Il nome del modello da assegnare alla cella." ;
+ Text [ portuguese_brazilian ] = "Der Name der Vorlage, die zugewiesen wird." ;
+ Text [ portuguese ] = "é o nome do estilo a ser aplicado." ;
+ Text [ finnish ] = "Der Name der Vorlage, die zugewiesen wird." ;
+ Text [ danish ] = "Navnet på den typografi, som skal tildeles." ;
+ Text [ french ] = "Le nom du style qui doit être attribué." ;
+ Text [ swedish ] = "Namnet på formatmallen som tilldelas." ;
+ Text [ dutch ] = "De naam van het opmaakprofiel dat wordt toegewezen." ;
+ Text [ spanish ] = "Nombre del estilo que se desea aplicar." ;
+ Text [ english_us ] = "The name of the Style to be applied." ;
+ Text[ chinese_simplified ] = "ÒªÖ¸¶¨µÄÑùʽÃû³Æ¡£";
+ Text[ russian ] = "Íàçíà÷àåìîå èìÿ ñòèëÿ.";
+ Text[ polish ] = "Nazwa szablonu, który ma zostaæ zastosowany.";
+ Text[ japanese ] = "Žw’肳‚ê‚é½À²Ù–¼¡";
+ Text[ chinese_traditional ] = "­n«ü©wªº¼Ë¦¡¦WºÙ¡C";
+ Text[ arabic ] = "ÇÓã ÇáäãØ ÇáãÑÇÏ ÊÚíäå.";
+ Text[ dutch ] = "De naam van het opmaakprofiel dat wordt toegewezen.";
+ Text[ chinese_simplified ] = "ÒªÖ¸¶¨µÄÑùʽÃû³Æ¡£";
+ Text[ greek ] = "¼íïìá ôïõ ðñïôýðïõ ðïõ ðñüêåéôáé íá åöáñìïóôåß.";
+ Text[ korean ] = "Àû¿ëµÈ À¯ÇüÀÇ À̸§";
+ Text[ turkish ] = "Uygulanacak biçimin adý.";
+ Text[ language_user1 ] = "All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Zeit" ;
+ Text [ english ] = "time" ;
+ Text [ norwegian ] = "Zeit" ;
+ Text [ italian ] = "tempo" ;
+ Text [ portuguese_brazilian ] = "Zeit" ;
+ Text [ portuguese ] = "Tempo" ;
+ Text [ finnish ] = "Zeit" ;
+ Text [ danish ] = "Tid" ;
+ Text [ french ] = "Temps" ;
+ Text [ swedish ] = "tid" ;
+ Text [ dutch ] = "Tijd" ;
+ Text [ spanish ] = "tiempo" ;
+ Text [ english_us ] = "Time" ;
+ Text[ chinese_simplified ] = "Time";
+ Text[ russian ] = "Âðåìÿ";
+ Text[ polish ] = "Czas";
+ Text[ japanese ] = "ŽžŠÔ";
+ Text[ chinese_traditional ] = "Time";
+ Text[ arabic ] = "ÇáæÞÊ";
+ Text[ dutch ] = "Tijd";
+ Text[ chinese_simplified ] = "Time";
+ Text[ greek ] = "¿ñá";
+ Text[ korean ] = "½Ã°£";
+ Text[ turkish ] = "Zaman";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Zeit (in Sekunden), die die Vorlage gültig bleibt. : Die Zeit (in Sekunden), die die Vorlage g³ltig bleibt. */
+ Text = "Die Zeit (in Sekunden), die die Vorlage gültig bleibt." ;
+ Text [ english ] = "The stylesheet to apply after time has expired." ;
+ Text [ norwegian ] = "Die Zeit (in Sekunden), die die Vorlage gültig bleibt." ;
+ Text [ italian ] = "Il tempo (in secondi) in cui il modello rimane assegnato." ;
+ Text [ portuguese_brazilian ] = "Die Zeit (in Sekunden), die die Vorlage gültig bleibt." ;
+ Text [ portuguese ] = "é o tempo (em segundos) em que o estilo permanece válido." ;
+ Text [ finnish ] = "Die Zeit (in Sekunden), die die Vorlage gültig bleibt." ;
+ Text [ danish ] = "Tidsrummet (i sekunder) som typografien skal gælde for." ;
+ Text [ french ] = "La durée (en secondes) de validité du style." ;
+ Text [ swedish ] = "Tiden (i sekunder) då formatmallen är giltig." ;
+ Text [ dutch ] = "De tijd (in seconden) waarin het opmaakprofiel geldig blijft." ;
+ Text [ spanish ] = "Tiempo de validez (en seg.) del estilo." ;
+ Text [ english_us ] = "The time (in seconds) that the Style is to remain valid." ;
+ Text[ chinese_simplified ] = "Ñùʽ±£³ÖÓÐЧµÄʱ¼ä(ÒÔÃëΪµ¥Î»)¡£";
+ Text[ russian ] = "Âðåìÿ (â ñåêóíäàõ), â òå÷åíèå êîòîðîãî ñòèëü îñòàåòñÿ àêòóàëüíûì.";
+ Text[ polish ] = "Limit czasu (w sekundach), w ci¹gu którego ten szablon zachowa wa¿noœæ.";
+ Text[ japanese ] = "½À²Ù‚Ì—LŒøŽžŠÔ(•b)";
+ Text[ chinese_traditional ] = "¼Ë¦¡«O«ù¦³®Äªº®É¶¡(¥H¬í¬°³æ¦ì)¡C";
+ Text[ arabic ] = "ÇáãÏÉ (ÈÇáËæÇäí) ÇáÊí íÈÞì ÝíåÇ ÇáäãØ ÕÇáÍÇð.";
+ Text[ dutch ] = "De tijd (in seconden) waarin het opmaakprofiel geldig blijft.";
+ Text[ chinese_simplified ] = "Ñùʽ±£³ÖÓÐЧµÄʱ¼ä(ÒÔÃëΪµ¥Î»)¡£";
+ Text[ greek ] = "Ç äéÜñêåéá (óå äåõôåñüëåðôá) êáôÜ ôçí ïðïßá ôï ðñüôõðï ðáñáìÝíåé Ýãêõñï.";
+ Text[ korean ] = "À¯ÇüÀÌ À¯È¿ÇÏ°Ô ³²¾ÆÀÖ´Â ½Ã°£(ÃÊ´ÜÀ§)";
+ Text[ turkish ] = "Biçimin geçerli olacaðý süre (saniye biriminden).";
+ Text[ language_user1 ] = "All \"Vorlagen\" /Styles are written with a capital S.10.5.00EM";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Vorlage2" ;
+ Text [ english ] = "Stylesheet 2" ;
+ Text [ norwegian ] = "Vorlage2" ;
+ Text [ italian ] = "modello 2" ;
+ Text [ portuguese_brazilian ] = "Vorlage2" ;
+ Text [ portuguese ] = "Estilo 2" ;
+ Text [ finnish ] = "Vorlage2" ;
+ Text [ danish ] = "Typografi2" ;
+ Text [ french ] = "Style2" ;
+ Text [ swedish ] = "formatmall2" ;
+ Text [ dutch ] = "Profiel2" ;
+ Text [ spanish ] = "Estilo2" ;
+ Text [ english_us ] = "Style2" ;
+ Text[ chinese_simplified ] = "Style2";
+ Text[ russian ] = "Ñòèëü2";
+ Text[ polish ] = "Styl2";
+ Text[ japanese ] = "½À²Ù2";
+ Text[ chinese_traditional ] = "Style2";
+ Text[ arabic ] = "Style2";
+ Text[ dutch ] = "Profiel2";
+ Text[ chinese_simplified ] = "Style2";
+ Text[ greek ] = "Ðñüôõðï2";
+ Text[ korean ] = "À¯Çü2";
+ Text[ turkish ] = "Biçim2";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Vorlage, die nach Ablauf der Zeit zugewiesen wird." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Die Vorlage, die nach Ablauf der Zeit zugewiesen wird." ;
+ Text [ italian ] = "Il modello da assegnare dopo che il tempo è trascorso." ;
+ Text [ portuguese_brazilian ] = "Die Vorlage, die nach Ablauf der Zeit zugewiesen wird." ;
+ Text [ portuguese ] = "é o estilo a ser aplicado depois de terminado o tempo." ;
+ Text [ finnish ] = "Die Vorlage, die nach Ablauf der Zeit zugewiesen wird." ;
+ Text [ danish ] = "Den typografi som tildeles efter at tiden er udløbet." ;
+ Text [ french ] = "Le style à appliquer après écoulement de la durée fixée." ;
+ Text [ swedish ] = "Formatmallen som tilldelas när tiden har gått ut." ;
+ Text [ dutch ] = "Het opmaakprofiel dat na afloop van de tijd wordt toegewezen." ;
+ Text [ spanish ] = "Estilo que se aplicará al transcurrir el tiempo asignado." ;
+ Text [ english_us ] = "The Style to be applied after time expires." ;
+ Text[ chinese_simplified ] = "ÔÚʱ¼ä¹ýÆÚºóÒªÖ¸¶¨µÄÑùʽ¡£";
+ Text[ russian ] = "Ñòèëü, êîòîðûé áóäåò íàçíà÷åí ïî èñòå÷åíèè óêàçàííîãî âðåìåíè.";
+ Text[ polish ] = "Szablon, który zostanie przydzielony po up³ywie czasu.";
+ Text[ japanese ] = "—LŒøŽžŠÔ‚ª‰ß‚¬‚é‚ÆŽw’肳‚ê‚é½À²ÙB";
+ Text[ chinese_traditional ] = "¦b®É¶¡¹L´Á«á­n«ü©wªº¼Ë¦¡¡C";
+ Text[ arabic ] = "ÇáäãØ ÇáÐí ÓæÝ íÊã ÊØÈíÞå ÈÚÏ ÇäÊåÇÁ ÇáæÞÊ.";
+ Text[ dutch ] = "Het opmaakprofiel dat na afloop van de tijd wordt toegewezen.";
+ Text[ chinese_simplified ] = "ÔÚʱ¼ä¹ýÆÚºóÒªÖ¸¶¨µÄÑùʽ¡£";
+ Text[ greek ] = "Ôï óôõë ðïõ èá åöáñìïóôåß ìåôÜ ôçí ëÞîç ôïõ ÷ñüíïõ.";
+ Text[ korean ] = "½Ã°£ÀÌ Á¾·áµÈÈÄ ±× À¯ÇüÀÌ Àû¿ëµË´Ï´Ù.";
+ Text[ turkish ] = "Süre dolduktan sonra uygulanacak biçim.";
+ Text[ language_user1 ] = "All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
+ };
+ };
+ // -=*# Resource for function DDE #*=-
+ Resource SC_OPCODE_DDE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ergebnis einer DDE-Verknüpfung. : Ergebnis einer DDE-Verkn³pfung. */
+ Text = "Ergebnis einer DDE-Verknüpfung." ;
+ Text [ english ] = "Result of a DDE link." ;
+ Text [ norwegian ] = "Ergebnis einer DDE-Verknüpfung." ;
+ Text [ italian ] = "Risultato di un collegamento DDE." ;
+ Text [ portuguese_brazilian ] = "Ergebnis einer DDE-Verknüpfung." ;
+ Text [ portuguese ] = "Resultado de uma ligação DDE." ;
+ Text [ finnish ] = "Ergebnis einer DDE-Verknüpfung." ;
+ Text [ danish ] = "Resultatet af en DDE-kæde." ;
+ Text [ french ] = "Résultat d'un lien DDE." ;
+ Text [ swedish ] = "Resultatet av en DDD-länkning." ;
+ Text [ dutch ] = "Resultaat van een DDE-koppeling." ;
+ Text [ spanish ] = "Resultado de un vínculo DDE." ;
+ Text [ english_us ] = "Result of a DDE link." ;
+ Text[ chinese_simplified ] = "Ò»¸ö DDE Á´½ÓµÄ½á¹û¡£";
+ Text[ russian ] = "Ðåçóëüòàò ññûëêè DDE.";
+ Text[ polish ] = "Rezultat ³¹cza DDE.";
+ Text[ japanese ] = "DDEØݸ‚ÌŒ‹‰Ê";
+ Text[ chinese_traditional ] = "¤@­Ó DDE ³sµ²ªºµ²ªG¡C";
+ Text[ arabic ] = "äÊíÌÉ ÇáÇÑÊÈÇØ DDE.";
+ Text[ dutch ] = "Resultaat van een DDE-koppeling.";
+ Text[ chinese_simplified ] = "Ò»¸ö DDE Á´½ÓµÄ½á¹û¡£";
+ Text[ greek ] = "ÁðïôÝëåóìá óýíäåóçò DDE.";
+ Text[ korean ] = "DDE ¸µÅ©ÀÇ °á°ú";
+ Text[ turkish ] = "DDE baðlantýsýnýn sonucu.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TABLE;
+ U2S( HID_FUNC_DDE );
+ 4; 0; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Server" ;
+ Text [ english ] = "server" ;
+ Text [ norwegian ] = "Server" ;
+ Text [ italian ] = "server" ;
+ Text [ portuguese_brazilian ] = "Server" ;
+ Text [ portuguese ] = "Servidor" ;
+ Text [ finnish ] = "Server" ;
+ Text [ danish ] = "Server" ;
+ Text [ french ] = "Serveur" ;
+ Text [ swedish ] = "server" ;
+ Text [ dutch ] = "Server" ;
+ Text [ spanish ] = "servidor" ;
+ Text [ english_us ] = "server" ;
+ Text[ chinese_simplified ] = "server";
+ Text[ russian ] = "Ñåðâåð";
+ Text[ polish ] = "Serwer";
+ Text[ japanese ] = "»°ÊÞ°";
+ Text[ chinese_traditional ] = "server";
+ Text[ arabic ] = "ÇáãÒæøÏ";
+ Text[ dutch ] = "Server";
+ Text[ chinese_simplified ] = "server";
+ Text[ greek ] = "ÄéáêïìéóôÞò";
+ Text[ korean ] = "¼­¹ö";
+ Text[ turkish ] = "Sunucu";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Name der Server-Applikation." ;
+ Text [ english ] = "Name of the server application." ;
+ Text [ norwegian ] = "Der Name der Server-Applikation." ;
+ Text [ italian ] = "Il nome dell'applicazione Server." ;
+ Text [ portuguese_brazilian ] = "Der Name der Server-Applikation." ;
+ Text [ portuguese ] = "é o nome da aplicação do servidor." ;
+ Text [ finnish ] = "Der Name der Server-Applikation." ;
+ Text [ danish ] = "Server-applikationens navn." ;
+ Text [ french ] = "Le nom de l'application du serveur" ;
+ Text [ swedish ] = "Namnet på servertillämpningen." ;
+ Text [ dutch ] = "De naam van de server-applicatie." ;
+ Text [ spanish ] = "nombre de la aplicación del servidor." ;
+ Text [ english_us ] = "The name of the server application." ;
+ Text[ chinese_simplified ] = "·þÎñÆ÷Ó¦ÓóÌÐòµÄÃû³Æ¡£";
+ Text[ russian ] = "Èìÿ ïðèëîæåíèÿ ñåðâåðà.";
+ Text[ polish ] = "Nazwa aplikacji serwera.";
+ Text[ japanese ] = "»°ÊÞ°±Ìßع°¼®Ý‚Ì–¼‘OB";
+ Text[ chinese_traditional ] = "¦øªA¾¹À³¥Îµ{¦¡¦WºÙ¡C";
+ Text[ arabic ] = "ÇÓã ÊØÈíÞ ÇáãÒæøÏ.";
+ Text[ dutch ] = "De naam van de server-applicatie.";
+ Text[ chinese_simplified ] = "·þÎñÆ÷Ó¦ÓóÌÐòµÄÃû³Æ¡£";
+ Text[ greek ] = "Ôï üíïìá ôçò åöáñìïãÞò ôïõ äéáêïìéóôÞ.";
+ Text[ korean ] = "¼­¹ö ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ À̸§ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sunucu uygulamasýnýn adý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Datei" ;
+ Text [ english ] = "file" ;
+ Text [ norwegian ] = "Datei" ;
+ Text [ italian ] = "file" ;
+ Text [ portuguese_brazilian ] = "Datei" ;
+ Text [ portuguese ] = "Ficheiro" ;
+ Text [ finnish ] = "Datei" ;
+ Text [ danish ] = "Fil" ;
+ Text [ french ] = "Fichier" ;
+ Text [ swedish ] = "fil" ;
+ Text [ dutch ] = "Bestand" ;
+ Text [ spanish ] = "archivo" ;
+ Text [ english_us ] = "File" ;
+ Text[ chinese_simplified ] = "file";
+ Text[ russian ] = "Ôàéë";
+ Text[ polish ] = "Plik";
+ Text[ japanese ] = "̧²Ù";
+ Text[ chinese_traditional ] = "file";
+ Text[ arabic ] = "File";
+ Text[ dutch ] = "Bestand";
+ Text[ chinese_simplified ] = "file";
+ Text[ greek ] = "Áñ÷åßï";
+ Text[ korean ] = "ÆÄÀÏ";
+ Text[ turkish ] = "Dosya";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Name der Datei." ;
+ Text [ english ] = "Range of cells the values are read from." ;
+ Text [ norwegian ] = "Der Name der Datei." ;
+ Text [ italian ] = "Nome del file." ;
+ Text [ portuguese_brazilian ] = "Der Name der Datei." ;
+ Text [ portuguese ] = "é o nome do ficheiro." ;
+ Text [ finnish ] = "Der Name der Datei." ;
+ Text [ danish ] = "Filens navn." ;
+ Text [ french ] = "Le nom du fichier." ;
+ Text [ swedish ] = "Namnet på filen." ;
+ Text [ dutch ] = "De naam van het bestand" ;
+ Text [ spanish ] = "nombre del archivo." ;
+ Text [ english_us ] = "The name of the file." ;
+ Text[ chinese_simplified ] = "ÎļþÃû¡£";
+ Text[ russian ] = "Èìÿ ôàéëà.";
+ Text[ polish ] = "Nazwa pliku.";
+ Text[ japanese ] = "̧²Ù–¼B";
+ Text[ chinese_traditional ] = "ÀɮצW¡C";
+ Text[ arabic ] = "ÇÓã ÇáãáÝ.";
+ Text[ dutch ] = "De naam van het bestand";
+ Text[ chinese_simplified ] = "ÎļþÃû¡£";
+ Text[ greek ] = "Ôï üíïìá ôïõ áñ÷åßïõ.";
+ Text[ korean ] = "ÆÄÀÏ À̸§";
+ Text[ turkish ] = "Dosya adý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Bereich" ;
+ Text [ english ] = "range" ;
+ Text [ norwegian ] = "Bereich" ;
+ Text [ italian ] = "area" ;
+ Text [ portuguese_brazilian ] = "Bereich" ;
+ Text [ portuguese ] = "Intervalo" ;
+ Text [ finnish ] = "Bereich" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Plage" ;
+ Text [ swedish ] = "område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Área" ;
+ Text [ english_us ] = "range" ;
+ Text[ chinese_simplified ] = "range";
+ Text[ russian ] = "Äèàïàçîí";
+ Text[ polish ] = "Zakres";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "range";
+ Text[ arabic ] = "Range";
+ Text[ dutch ] = "Bereik";
+ Text[ chinese_simplified ] = "range";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¿µ¿ª";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Der Bereich, aus dem Daten gelesen werden sollen." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Bereich, aus dem Daten gelesen werden sollen." ;
+ Text [ italian ] = "L'area dalla quale i dati devono essere letti." ;
+ Text [ portuguese_brazilian ] = "Der Bereich, aus dem Daten gelesen werden sollen." ;
+ Text [ portuguese ] = "é o intervalo de células do qual deseja ler os valores." ;
+ Text [ finnish ] = "Der Bereich, aus dem Daten gelesen werden sollen." ;
+ Text [ danish ] = "Det område dataene skal læses fra." ;
+ Text [ french ] = "La plage dont les données doivent être lues." ;
+ Text [ swedish ] = "Området från vilket data skall läsas." ;
+ Text [ dutch ] = "Het bereik waaruit de gegevens moeten worden gelezen." ;
+ Text [ spanish ] = "área de celdas de la que se deben leer datos." ;
+ Text [ english_us ] = "The range from which data is to be taken." ;
+ Text[ chinese_simplified ] = "Òª¶ÁÈ¡Êý¾ÝµÄÇøÓò¡£";
+ Text[ russian ] = "Äèàïàçîí ÿ÷ååê, èç êîòîðîãî äîëæíû áûòü ïðî÷èòàíû äàííûå .";
+ Text[ polish ] = "Zakres, z którego maj¹ byæ odczytane dane.";
+ Text[ japanese ] = "ÃÞ°À‚ª“Ç‚ÝŽæ‚ç‚ê‚é”͈ÍB";
+ Text[ chinese_traditional ] = "­nŪ¥Xªº¼Æ¾Ú°Ï°ì¡C";
+ Text[ arabic ] = "äØÇÞ ÇáÎáÇíÇ ÇáãÑÇÏ ÞÑÇÁÉ ÇáÈíÇäÇÊ ãäå.";
+ Text[ dutch ] = "Het bereik waaruit de gegevens moeten worden gelezen.";
+ Text[ chinese_simplified ] = "Òª¶ÁÈ¡Êý¾ÝµÄÇøÓò¡£";
+ Text[ greek ] = "Ç ðåñéï÷Þ áíÜãíùóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅ͸¦ Àо ¹üÀ§ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Verilerin alýndýðý aralýk.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ {
+ Text = "Modus" ;
+ Text [ english ] = "mode" ;
+ Text [ portuguese ] = "Modo" ;
+ Text [ english_us ] = "mode" ;
+ Text [ portuguese_brazilian ] = "Modus" ;
+ Text [ swedish ] = "läge" ;
+ Text [ danish ] = "Modus" ;
+ Text [ italian ] = "modo" ;
+ Text [ spanish ] = "Modo" ;
+ Text [ french ] = "Mode" ;
+ Text [ dutch ] = "Modus" ;
+ Text[ chinese_simplified ] = "Mode";
+ Text[ russian ] = "Ñïîñîá";
+ Text[ polish ] = "Tryb";
+ Text[ japanese ] = "Ó°ÄÞ";
+ Text[ chinese_traditional ] = "Mode";
+ Text[ arabic ] = "Mode";
+ Text[ dutch ] = "Modus";
+ Text[ chinese_simplified ] = "Mode";
+ Text[ greek ] = "ÊáôÜóôáóç";
+ Text[ korean ] = "¸ðµå";
+ Text[ turkish ] = "Kip";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ {
+ Text = "Definiert, wie die Daten in Zahlen umgewandelt werden." ;
+ Text [ english ] = "Controls how data are converted into numbers." ;
+ Text [ portuguese ] = "Define como converter os dados para números." ;
+ Text [ english_us ] = "Defines how data is to be converted to numbers." ;
+ Text [ portuguese_brazilian ] = "Definiert, wie die Daten in Zahlen umgewandelt werden." ;
+ Text [ swedish ] = "Definierar hur data omvandlas till tal." ;
+ Text [ danish ] = "Definerer hvordan dataene skal konverteres til tal." ;
+ Text [ italian ] = "Definisce come i dati vengono convertiti in numeri." ;
+ Text [ spanish ] = "Define cómo los datos se convierten en números." ;
+ Text [ french ] = "Définit comment convertir les données en nombres." ;
+ Text [ dutch ] = "Definieert, hoe de gegevens worden veranderd in getallen." ;
+ Text[ chinese_simplified ] = "¶¨ÒåÊý¾ÝÈçºÎת»»³ÉÊý×Ö¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ñïîñîá ïðåîáðàçîâàíèÿ äàííûõ â ÷èñëà.";
+ Text[ polish ] = "Okreœla, jak zamieniaæ dane w liczby.";
+ Text[ japanese ] = "ÃÞ°À‚ª‚ǂ̂悤‚É”’l‚É•ÏŠ·‚³‚ê‚é‚©‚Ì’è‹`B";
+ Text[ chinese_traditional ] = "©w¸q¼Æ¾Ú¦p¦óÂà´«¦¨¼Æ¦r¡C";
+ Text[ arabic ] = "ÊÍÏÏ ßíÝíÉ ÊÍæíá ÇáÈíÇäÇÊ Åáì ÃÑÞÇã.";
+ Text[ dutch ] = "Definieert, hoe de gegevens worden veranderd in getallen.";
+ Text[ chinese_simplified ] = "¶¨ÒåÊý¾ÝÈçºÎת»»³ÉÊý×Ö¡£";
+ Text[ greek ] = "Êáèïñßæåé ôïí ôñüðï ìå ôïí ïðïßï èá ãßíåé ç ìåôáôñïðÞ ôùí äåäïìÝíùí óå áñéèìïýò";
+ Text[ korean ] = "¾î¶»°Ô µ¥ÀÌÅÍ°¡ ¼ýÀÚ·Î º¯È¯µÇ´ÂÁö Á¤ÀÇÇϽʽÿÀ.";
+ Text[ turkish ] = "Verilerin ne þekilde sayýlara dönüþtüreleceðini belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function CODE #*=-
+ Resource SC_OPCODE_CODE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Liefert den Code des ersten Zeichens eines Textes." ;
+ Text [ english ] = "Returns a numeric code for the first character in a text string." ;
+ Text [ norwegian ] = "Liefert den Code des ersten Zeichens eines Textes." ;
+ Text [ italian ] = "Restituisce il codice numerico del primo carattere di un testo." ;
+ Text [ portuguese_brazilian ] = "Liefert den Code des ersten Zeichens eines Textes." ;
+ Text [ portuguese ] = "Devolve o código numérico do primeiro carácter de um texto." ;
+ Text [ finnish ] = "Liefert den Code des ersten Zeichens eines Textes." ;
+ Text [ danish ] = "Returnerer koden for det første tegn i en tekst." ;
+ Text [ french ] = "Renvoie le code du premier caractère d'un texte." ;
+ Text [ swedish ] = "Returnerar koden för det första tecknet i en text." ;
+ Text [ dutch ] = "Levert de code bij het eerste teken van een tekst." ;
+ Text [ spanish ] = "Devuelve el número de código del primer carácter del texto." ;
+ Text [ english_us ] = "Returns a numeric code for the first character in a text string." ;
+ Text[ chinese_simplified ] = "Ìṩһ¸ö×Ö´®µÄµÚÒ»¸ö×Ö·ûµÄ±àÂë¡£";
+ Text[ russian ] = "Âîçâðàùàåò ÷èñëîâîé êîä ïåðâîãî ñèìâîëà â òåêñòîâîé ñòðîêå.";
+ Text[ polish ] = "Wyznacza numer kodu dla pierwszego znaku w tekœcie.";
+ Text[ japanese ] = "•¶Žš—ñ‚Ì擪•¶Žš‚ɑΉž‚·‚éƒR[ƒh”Ô†‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "´£¨Ñ¤@­Ó¦r¦êªº²Ä¤@­Ó¦r¤¸ªº½s½X¡C";
+ Text[ arabic ] = "ÊæÑÏ ÇáßæÏ ááÍÑÝ ÇáÃæá ãä ÇáäÕ.";
+ Text[ dutch ] = "Levert de code bij het eerste teken van een tekst.";
+ Text[ chinese_simplified ] = "Ìṩһ¸ö×Ö´®µÄµÚÒ»¸ö×Ö·ûµÄ±àÂë¡£";
+ Text[ greek ] = "Äßíåé ôïí êùäéêü ôïõ ðñþôïõ ÷áñáêôÞñá åíüò êåéìÝíïõ.";
+ Text[ korean ] = "ÅؽºÆ® ¹®ÀÚ¿­¿¡¼­ ù ¹®ÀÚÀÇ ¼ýÀÚ Äڵ带 ¹Ýȯ";
+ Text[ turkish ] = "Metnin ilk karakterinin kodunu verir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_CODE );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Ist der Text, für den der Code des ersten Zeichens ermittelt werden soll. : Ist der Text, f³r den der Code des ersten Zeichens ermittelt werden soll. */
+ Text = "Ist der Text, für den der Code des ersten Zeichens ermittelt werden soll." ;
+ Text [ english ] = "is the text for which you want the code of the first character." ;
+ Text [ norwegian ] = "Ist der Text, für den der Code des ersten Zeichens ermittelt werden soll." ;
+ Text [ italian ] = "è il testo di cui si desidera il codice del primo carattere." ;
+ Text [ portuguese_brazilian ] = "Ist der Text, für den der Code des ersten Zeichens ermittelt werden soll." ;
+ Text [ portuguese ] = "é o texto para o qual deseja encontrar o código do primeiro carácter." ;
+ Text [ finnish ] = "Ist der Text, für den der Code des ersten Zeichens ermittelt werden soll." ;
+ Text [ danish ] = "Den tekst som koden skal oplyses for." ;
+ Text [ french ] = "Représente le texte dont vous voulez obtenir le code du premier caractère." ;
+ Text [ swedish ] = "Är texten för vilken det första tecknets kod skall hittas." ;
+ Text [ dutch ] = "Is de tekst waarvoor de code voor het eerste teken moet worden vastgesteld." ;
+ Text [ spanish ] = "es el texto para el cual se desea obtener el código del primer carácter." ;
+ Text [ english_us ] = "This is the text for which the code of the first character is to be found." ;
+ Text[ chinese_simplified ] = "ÊÇÐèÒªµÃµ½ÆäµÚÒ»¸ö×Ö·û±àÂëµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, â êîòîðîì òðåáóåòñÿ óçíàòü êîä ïåðâîãî ñèìâîëà.";
+ Text[ polish ] = "Jest tekstem, dla którego ma zostaæ wyznaczony kod dla pierwszego znaku.";
+ Text[ japanese ] = "擪•¶Žš‚̃R[ƒh”Ô†‚𒲂ׂ镶Žš—ñ‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¬O»Ý­n±o¨ì¨ä²Ä¤@­Ó¦r¤¸½s½Xªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÊÑíÏ ãÚÑÝÉ ÑãÒ ÇáÍÑÝ ÇáÃæá Ýíå ";
+ Text[ dutch ] = "Is de tekst waarvoor de code voor het eerste teken moet worden vastgesteld.";
+ Text[ chinese_simplified ] = "ÊÇÐèÒªµÃµ½ÆäµÚÒ»¸ö×Ö·û±àÂëµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï ôïõ ïðïßïõ èá âñåèåß ï êùäéêüò ôïõ ðñþôïõ ÷áñáêôÞñá.";
+ Text[ korean ] = "ÀÌ°ÍÀº ¹ß°ßµÉ ù¹®ÀÚÀÇ Äڵ忡 ´ëÇÑ ÅؽºÆ®ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýlk karakterinin kodu bulunacak metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DM #*=-
+ Resource SC_OPCODE_CURRENCY
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wandelt einen Zahlenwert in einen Text im Währungsformat um. : Wandelt einen Zahlenwert in einen Text im Wõhrungsformat um. */
+ Text = "Wandelt einen Zahlenwert in einen Text im Währungsformat um." ;
+ Text [ english ] = "Converts a number to text using currency format, with the decimals rounded to the specified place." ;
+ Text [ norwegian ] = "Wandelt einen Zahlenwert in einen Text im Währungsformat um." ;
+ Text [ italian ] = "Converte un valore numerico in un testo avente il formato valuta." ;
+ Text [ portuguese_brazilian ] = "Wandelt einen Zahlwert in einen Text im Währungsformat um." ;
+ Text [ portuguese ] = "Converte um valor numérico em texto, usando o formato moeda." ;
+ Text [ finnish ] = "Wandelt einen Zahlenwert in einen Text im Währungsformat um." ;
+ Text [ danish ] = "Konverterer et tal til tekst i valutaformat." ;
+ Text [ french ] = "Convertit une valeur numérique en texte dans un format monétaire." ;
+ Text [ swedish ] = "Omvandlar ett tal till en text i valutaformat." ;
+ Text [ dutch ] = "Converteert een getal naar tekst op basis van de valutanotatie." ;
+ Text [ spanish ] = "Convierte un número en texto usando un formato monetario" ;
+ Text [ english_us ] = "Converts a number to text in currency format." ;
+ Text[ chinese_simplified ] = "ת»»Îı¾ÖеÄÊý×Ö³ÉÒ»¸ö»õ±Ò¸ñʽ¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò ÷èñëîâîå çíà÷åíèå â òåêñò â äåíåæíîì ôîðìàòå.";
+ Text[ polish ] = "Przekszta³ca liczbê na tekst w formacie walutowym.";
+ Text[ japanese ] = "”’l‚ð’ʉÝÌ«°Ï¯Ä‚Ì•¶Žš—ñ‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "Âà´«¤å¥»¤¤ªº¼Æ¦r¦¨¤@­Ó³f¹ô®æ¦¡¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞã Åáì äÕ ÈÇÓÊÎÏÇã ÊäÓíÞ ÇáÚãáÉ.";
+ Text[ dutch ] = "Converteert een getal naar tekst op basis van de valutanotatie.";
+ Text[ chinese_simplified ] = "ת»»Îı¾ÖеÄÊý×Ö³ÉÒ»¸ö»õ±Ò¸ñʽ¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé ìéá áñéèìçôéêÞ ôéìÞ óå Ýíá êåßìåíï ìå íïìéóìáôéêÞ ìïñöÞ.";
+ Text[ korean ] = "ÇöÀçÀÇ ¼­½Ä¿¡¼­ ¼ö¸¦ ÅؽºÆ®·Î º¯È¯";
+ Text[ turkish ] = "Sayý deðerini, para birimi formatýndaki bir metne dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_DM );
+ 2; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wert ist eine Zahl, ein Bezug auf eine Zelle, die eine Zahl enthält, oder eine Formel, die eine Zahl ergibt. : Wert ist eine Zahl, ein Bezug auf eine Zelle, die eine Zahl enthõlt, oder eine Formel, die eine Zahl ergibt. */
+ Text = "Wert ist eine Zahl, ein Bezug auf eine Zelle, die eine Zahl enthält, oder eine Formel, die eine Zahl ergibt." ;
+ Text [ english ] = "is a number, a reference to a cell containing a number, or a formula that evaluates to a number." ;
+ Text [ norwegian ] = "Wert ist eine Zahl, ein Bezug auf eine Zelle, die eine Zahl enthält, oder eine Formel, die eine Zahl ergibt." ;
+ Text [ italian ] = "è un numero, un riferimento ad una cella che contiene un numero oppure una formula che calcola un numero." ;
+ Text [ portuguese_brazilian ] = "Wert ist eine Zahl, ein Bezug auf eine Zelle, die eine Zahl enthält, oder eine Formel, die eine Zahl ergibt." ;
+ Text [ portuguese ] = "é um número, uma referência a uma célula contendo um número ou uma fórmula que calcula um número." ;
+ Text [ finnish ] = "Wert ist eine Zahl, ein Bezug auf eine Zelle, die eine Zahl enthält, oder eine Formel, die eine Zahl ergibt." ;
+ Text [ danish ] = "Værdi er et tal, en reference til en celle, som indeholder et tal, eller en formel, som udgør et tal." ;
+ Text [ french ] = "Valeur est un nombre, une référence à une cellule contenant un nombre, ou une formule renvoyant un nombre." ;
+ Text [ swedish ] = "Värde är ett tal, en referens till en cell som innehåller ett tal eller en formel som resulterar i ett tal." ;
+ Text [ dutch ] = "Waarde is een getal, een verwijzing naar een cel die een getal bevat, of een formule die een getal als resultaat te zien geeft." ;
+ Text [ spanish ] = "es un número, una referencia a una celda que contiene un número o una fórmula que evalúa un número." ;
+ Text [ english_us ] = "Value is a number, a reference to a cell containing a number or a formula that results in a number." ;
+ Text[ chinese_simplified ] = "ÊÇÒ»¸öÊý×Ö£¬Ò»¸öº¬ÓÐÊý×ֵĵ¥Ôª¸ñÒýÓã¬\n»òÕßÊÇÒ»¸ö¼ÆËãÊý×ֵĹ«Ê½¡£";
+ Text[ russian ] = "×èñëî ëèáî ññûëêà íà ÿ÷åéêó, ñîäåðæàùóþ ÷èñëî, ëèáî ôîðìóëà, âû÷èñëåíèå ïî êîòîðîé äàåò ÷èñëî.";
+ Text[ polish ] = "Wartoœæ jest liczb¹, odwo³aniem do komórki, która zawiera liczbê lub równaniem, którego wynikiem jest liczba.";
+ Text[ japanese ] = "’l‚ÍA”’l‚ðŠÜ‚Þ¾Ù‚ÌŽQÆA‚ ‚é‚¢‚Í”’l‚ðŒ‹‰Ê‚Æ‚·‚锎®‚Ì”’lB";
+ Text[ chinese_traditional ] = "¬O¤@­Ó¼Æ¦r¡M¤@­Ó§t¦³¼Æ¦rªºÀx¦s®æ°Ñ·Ó¡M©ÎªÌ¬O¤@­Ó­pºâ¼Æ¦rªº¤½¦¡¡C";
+ Text[ arabic ] = "ÑÞã¡ Ãæ ãÑÌÚ Åáì ÎáíÉ ÈåÇ ÑÞã¡ Ãæ ÕíÛÉ ÊÞíã Åáì ÑÞã.";
+ Text[ dutch ] = "Waarde is een getal, een verwijzing naar een cel die een getal bevat, of een formule die een getal als resultaat te zien geeft.";
+ Text[ chinese_simplified ] = "ÊÇÒ»¸öÊý×Ö£¬Ò»¸öº¬ÓÐÊý×ֵĵ¥Ôª¸ñÒýÓã¬\n»òÕßÊÇÒ»¸ö¼ÆËãÊý×ֵĹ«Ê½¡£";
+ Text[ greek ] = "ÔéìÞ åßíáé Ýíáò áñéèìüò, ìéá áíáöïñÜ óå Ýíá êåëß ôï ïðïßá ðåñéÝ÷åé Ýíáí áñéèìü, Þ Ýíáò ôýðïò ðïõ Ý÷åé ùò áðïôÝëåóìá Ýíáí áñéèìü.";
+ Text[ korean ] = "°ªÀº ¼öÀÌ¸ç ¼ö¸¦ Æ÷ÇÔÇÏ´Â ¼¿À̳ª ¼ö°¡ ³ª¿À´Â ¼ö½Ä¿¡ ´ëÇÑ ÂüÁ¶ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðer, bir sayý, sayý içeren bir hücre referansý ya da sayý veren bir formüldür.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "D" ;
+ Text [ english ] = "decimals" ;
+ Text [ norwegian ] = "D" ;
+ Text [ italian ] = "decimali" ;
+ Text [ portuguese_brazilian ] = "D" ;
+ Text [ portuguese ] = "Decimais" ;
+ Text [ finnish ] = "D" ;
+ Text [ danish ] = "Decimaler" ;
+ Text [ french ] = "D" ;
+ Text [ swedish ] = "D" ;
+ Text [ dutch ] = "D" ;
+ Text [ spanish ] = "núm_de_decimales" ;
+ Text [ english_us ] = "decimals" ;
+ Text[ chinese_simplified ] = "decimals";
+ Text[ russian ] = "Äåñ_öèôðû";
+ Text[ polish ] = "Dziesiêtne";
+ Text[ japanese ] = "­”ˆÊ";
+ Text[ chinese_traditional ] = "decimals";
+ Text[ arabic ] = "Decimals";
+ Text[ dutch ] = "D";
+ Text[ chinese_simplified ] = "decimals";
+ Text[ greek ] = "ÄåêáäéêÜ";
+ Text[ korean ] = "¼Ò¼ö";
+ Text[ turkish ] = "Ondalýk haneler";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Dezimalstellen. Ist die Anzahl der Ziffern rechts vom Dezimalkomma." ;
+ Text [ english ] = "is the number of digits to the right of the decimal point." ;
+ Text [ norwegian ] = "Dezimalstellen. Ist die Anzahl der Ziffern rechts vom Dezimalkomma." ;
+ Text [ italian ] = "è il numero di cifre a destra della virgola decimale." ;
+ Text [ portuguese_brazilian ] = "Dezimalstellen. Ist die Anzahl der Ziffern rechts vom Dezimalkomma." ;
+ Text [ portuguese ] = "é o número de dígitos à direita da vírgula decimal." ;
+ Text [ finnish ] = "Dezimalstellen. Ist die Anzahl der Ziffern rechts vom Dezimalkomma." ;
+ Text [ danish ] = "Decimaler. Antallet af cifre til højre for decimaltegnet." ;
+ Text [ french ] = "Décimales. Représente le nombre de chiffres à droite de la virgule." ;
+ Text [ swedish ] = "Decimaler. Är antalet siffror till höger om decimalkommat." ;
+ Text [ dutch ] = "Decimalen. Is het aantal decimalen rechts van de decimale komma." ;
+ Text [ spanish ] = "es el número de dígitos a la derecha del separador decimal." ;
+ Text [ english_us ] = "Decimal places. Denotes the number of digits to the right of the decimal point." ;
+ Text[ chinese_simplified ] = "СÊýµãλÊý¡£ÊÇСÊýµãÓұߵÄλÊý¡£";
+ Text[ russian ] = "Êîëè÷åñòâî öèôð ñïðàâà îò äåñÿòè÷íîé çàïÿòîé.";
+ Text[ polish ] = "Jest liczb¹ cyfr na prawo od przecinka.";
+ Text[ japanese ] = "Œ…”B¬”“_ˆÈ‰º‚ÌŒ…”B";
+ Text[ chinese_traditional ] = "¤p¼ÆÂI¦ì¼Æ¡C¬O¤p¼ÆÂI¥kÃ䪺¦ì¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÑÞÇã Úáì íãíä ÇáÝÇÕáÉ ÇáÚÔÑíÉ.";
+ Text[ dutch ] = "Decimalen. Is het aantal decimalen rechts van de decimale komma.";
+ Text[ chinese_simplified ] = "СÊýµãλÊý¡£ÊÇСÊýµãÓұߵÄλÊý¡£";
+ Text[ greek ] = "ÈÝóåéò äåêáäéêþí. Åßíáé ôï ðëÞèïò ôùí øçößùí äåîéÜ áðü ôï êüììá äåêáäéêïý.";
+ Text[ korean ] = "¼Ò¼ö ÀÚ¸®. ¼Ò¼ýÁ¡À¸·Î ºÎÅÍ ¿À¸¥ÂÊ¿¡ ÀÖ´Â ¼ýÀÚÀÇ °³¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ondalýk haneler. Virgülün saðýndaki hanelerin sayýsýdýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ZEICHEN #*=-
+ Resource SC_OPCODE_CHAR
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Wandelt eine Codezahl in ein Zeichen oder Buchstaben um." ;
+ Text [ english ] = "Returns the character specified by the code number." ;
+ Text [ norwegian ] = "Wandelt eine Codezahl in ein Zeichen oder Buchstaben um." ;
+ Text [ italian ] = "Restituisce il carattere specificato dal numero di codice." ;
+ Text [ portuguese_brazilian ] = "Wandelt eine Codezahl in ein Zeichen oder Buchstaben um." ;
+ Text [ portuguese ] = "Devolve o carácter especificado pelo número de código." ;
+ Text [ finnish ] = "Wandelt eine Codezahl in ein Zeichen oder Buchstaben um." ;
+ Text [ danish ] = "Konverterer en kode til et tegn eller bogstav." ;
+ Text [ french ] = "Convertit un code numérique en caractère ou lettre." ;
+ Text [ swedish ] = "Omvandlar ett kodtal till ett tecken eller bokstav." ;
+ Text [ dutch ] = "Verandert een codegetal in een teken of letter." ;
+ Text [ spanish ] = "Transforma un código número en un carácter." ;
+ Text [ english_us ] = "Converts a code number into a character or letter." ;
+ Text[ chinese_simplified ] = "½«Êý×Ö´úÂëת»¯³É×Ö·û¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò êîäîâîå ÷èñëî â ñèìâîë èëè áóêâó.";
+ Text[ polish ] = "Zamienia liczbê kodu w znak lub literê.";
+ Text[ japanese ] = "º°ÄÞ”Ô†‚ÅŽw’肵‚½•¶Žš‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¼Æ¦r¥N½XÂà¤Æ¦¨¦r¤¸¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞã ßæÏí Åáì ÑãÒ Ãæ ÍÑÝ.";
+ Text[ dutch ] = "Verandert een codegetal in een teken of letter.";
+ Text[ chinese_simplified ] = "½«Êý×Ö´úÂëת»¯³É×Ö·û¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé Ýíáí áñéèìü êùäéêïý óå Ýíá ÷áñáêôÞñá Þ Ýíá ãñÜììá ôïõ áëöÜâçôïõ.";
+ Text[ korean ] = "ÄÚµå ¹øÈ£¸¦ ¹®ÀÚ·Î º¯È¯";
+ Text[ turkish ] = "Kod sayýsýný karakter ya da harfe dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_ZEICHEN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Codewert für das Zeichen : Der Codewert f³r das Zeichen */
+ Text = "Der Codewert für das Zeichen" ;
+ Text [ english ] = "is a number between 1 and 255 specifying which character you want." ;
+ Text [ norwegian ] = "Der Codewert für das Zeichen" ;
+ Text [ italian ] = "Il codice per il carattere" ;
+ Text [ portuguese_brazilian ] = "Der Codewert für das Zeichen" ;
+ Text [ portuguese ] = "é um número entre 1 e 255 que especifica o carácter desejado." ;
+ Text [ finnish ] = "Der Codewert für das Zeichen" ;
+ Text [ danish ] = "Tegnets kodeværdi" ;
+ Text [ french ] = "Valeur codée pour le caractère" ;
+ Text [ swedish ] = "Kodvärdet för tecknet." ;
+ Text [ dutch ] = "De codewaarde voor het teken." ;
+ Text [ spanish ] = "es un número entre 1 y 255 que especifica el carácter deseado" ;
+ Text [ english_us ] = "The code value for the character." ;
+ Text[ chinese_simplified ] = "×Ö·ûµÄ´úÂëÖµ¡£";
+ Text[ russian ] = "×èñëî â èíòåðâàëå îò 1 äî 255, óêàçûâàþùåå íà íóæíûé ñèìâîë.";
+ Text[ polish ] = "WartoϾ kodu dla znaku";
+ Text[ japanese ] = "”’l‚É‚Í•Ô‚µ‚½‚¢•¶Žš‚ð•\\‚·1‚©‚ç255A‚¨‚æ‚Ñ8481‚©‚ç39038‚Ü‚Å‚Ì”’l‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦r¤¸ªº¥N½X­È¡C";
+ Text[ arabic ] = "ÑÞã Èíä 1 æ 255 íÍÏÏ ÇáÍÑÝ ÇáãÑÇÏ.";
+ Text[ dutch ] = "De codewaarde voor het teken.";
+ Text[ chinese_simplified ] = "×Ö·ûµÄ´úÂëÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ êùäéêïý ãéá ôïí ÷áñáêôÞñá.";
+ Text[ korean ] = "¹®ÀÚ¸¦ À§ÇÑ Äڵ尪ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Karakterin kod deðeri";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SÄUBERN #*=-
+ Resource SC_OPCODE_CLEAN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Löscht nichtdruckbare Zeichen aus dem Text. : L÷scht nichtdruckbare Zeichen aus dem Text. */
+ Text = "Löscht Nicht druckbare Zeichen aus dem Text." ;
+ Text [ english ] = "Removes all nonprintable characters from text." ;
+ Text [ norwegian ] = "Löscht nichtdruckbare Zeichen aus dem Text." ;
+ Text [ italian ] = "Rimuove dal testo tutti i caratteri non stampabili." ;
+ Text [ portuguese_brazilian ] = "Löscht nichtdruckbare Zeichen aus dem Text." ;
+ Text [ portuguese ] = "Elimina do texto todos os caracteres não imprimíveis." ;
+ Text [ finnish ] = "Löscht nichtdruckbare Zeichen aus dem Text." ;
+ Text [ danish ] = "Fjerner alle tegn, som ikke kan udskrives, fra teksten." ;
+ Text [ french ] = "Supprime tous les caractères non-imprimables du texte." ;
+ Text [ swedish ] = "Raderar tecken som inte kan skrivas ut från en text." ;
+ Text [ dutch ] = "Verwijdert niet-afdrukbare tekens uit de tekst." ;
+ Text [ spanish ] = "Elimina del texto caracteres no imprimibles." ;
+ Text [ english_us ] = "Removes all nonprintable characters from text." ;
+ Text[ chinese_simplified ] = "ɾ³ýÎı¾Öв»ÄÜ´òÓ¡µÄ×Ö·û¡£";
+ Text[ russian ] = "Óäàëÿåò èç òåêñòà âñå íåïå÷àòàåìûå ñèìâîëû.";
+ Text[ polish ] = "Usuwa niedrukowalne znaki z tekstu.";
+ Text[ japanese ] = "ˆóü‚Å‚«‚È‚¢•¶Žš‚𕶎š—ñ‚©‚ç휂µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "§R°£¤å¦r¤¤¤£¯à¦C¦Lªº¦r¤¸¡C";
+ Text[ arabic ] = "ÊÍÐÝ ÇáÃÍÑÝ ÇáÊí áÇ ÊõØÈÚ ãä ÇáäÕ.";
+ Text[ dutch ] = "Verwijdert niet-afdrukbare tekens uit de tekst.";
+ Text[ chinese_simplified ] = "ɾ³ýÎı¾Öв»ÄÜ´òÓ¡µÄ×Ö·û¡£";
+ Text[ greek ] = "ÄéáãñÜöåé áðü ôï êåßìåíï ôïõò ÷áñáêôÞñåò ïé ïðïßïé äåí åßíáé äõíáôüí íá åêôõðùèïýí.";
+ Text[ korean ] = "ÅؽºÆ®¿¡¼­ Àμ⠺Ұ¡´ÉÇÑ ¹®ÀÚ¸¦ Á¦°Å";
+ Text[ turkish ] = "Yazdýrýlamayan karakterleri metinden siler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_SAEUBERN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Text, aus dem die nicht druckbaren Zeichen entfernt werden." ;
+ Text [ english ] = "is any worksheet information from which you want to remove nonprintable characters." ;
+ Text [ norwegian ] = "Der Text, aus dem die nichtdruckbaren Zeichen entfernt werden." ;
+ Text [ italian ] = "il testo dal quale vengono eliminati i caratteri non stampabili." ;
+ Text [ portuguese_brazilian ] = "Der Text, aus dem die nichtdruckbaren Zeichen entfernt werden." ;
+ Text [ portuguese ] = "É o texto contendo os caracteres não imprimíveis que irão ser eliminados." ;
+ Text [ finnish ] = "Der Text, aus dem die nichtdruckbaren Zeichen entfernt werden." ;
+ Text [ danish ] = "Den tekst hvorfra de tegn, som ikke kan udskrives, skal fjernes." ;
+ Text [ french ] = "Le texte dont vous voulez supprimer les caractères non-imprimables." ;
+ Text [ swedish ] = "Texten från vilken tecknen, som inte kan skrivas ut, tas bort." ;
+ Text [ dutch ] = "De tekst waaruit de niet-afdrukbare tekens worden verwijderd." ;
+ Text [ spanish ] = "Es el texto del que se eliminan los caracteres no imprimibles." ;
+ Text [ english_us ] = "The text from which nonprintable characters are to be removed." ;
+ Text[ chinese_simplified ] = "Òª´ÓÖÐɾ³ýÎÞ·¨´òÓ¡×Ö·ûµÄÎı¾¡£";
+ Text[ russian ] = "Òåêñò, èç êîòîðîãî óäàëÿþòñÿ íåïå÷àòàåìûå ñèìâîëû.";
+ Text[ polish ] = "Tekst, z którego zosta³y usuniête niedrukowalne znaki.";
+ Text[ japanese ] = "ˆóü‚Å‚«‚È‚¢•¶Žš‚ð휂µ‚½•¶Žš—ñB";
+ Text[ chinese_traditional ] = "­n±q¤¤§R°£µLªk¦C¦L¦r¤¸ªº¤å¦r¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÊÑíÏ ÍÐÝ ÇáÚáÇãÇÊ ÇáÛíÑ ÞÇÈáÉ ááØÈÇÚÉ ãäå.";
+ Text[ dutch ] = "De tekst waaruit de niet-afdrukbare tekens worden verwijderd.";
+ Text[ chinese_simplified ] = "Òª´ÓÖÐɾ³ýÎÞ·¨´òÓ¡×Ö·ûµÄÎı¾¡£";
+ Text[ greek ] = "Ôï êåßìåíï áðü ôï ïðïßï èá áðïìáêñõíèïýí ïé ÷áñáêôÞñåò ðïõ äåí åßíáé äõíáôüí íá åêôõðùèïýí.";
+ Text[ korean ] = "Á¦°ÅµÉ ÀμâµÉ¼ö ¾ø´Â ¹®ÀڷκÎÅÍ ÅؽºÆ®";
+ Text[ turkish ] = "Yazdýrýlamayan karakterlerin silineceði metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function VERKETTEN #*=-
+ Resource SC_OPCODE_CONCAT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Verbindet Texte zu einem einzigen." ;
+ Text [ english ] = "Joins several text items into one text item." ;
+ Text [ norwegian ] = "Verbindet Texte zu einem einzigen." ;
+ Text [ italian ] = "Unisce fino a 30 diversi testi." ;
+ Text [ portuguese_brazilian ] = "Verbindet Texte zu einem einzigen." ;
+ Text [ portuguese ] = "Agrupa vários textos num só." ;
+ Text [ finnish ] = "Verbindet Texte zu einem einzigen." ;
+ Text [ danish ] = "Sammenkæder flere tekster til en enkelt tekst." ;
+ Text [ french ] = "Assemble plusieurs textes pour n'en former qu'un." ;
+ Text [ swedish ] = "Sammanfogar texter till en enda." ;
+ Text [ dutch ] = "Verschillende teksten tot één enkele samenvoegen." ;
+ Text [ spanish ] = "Agrupa varios textos en uno solo." ;
+ Text [ english_us ] = "Combines several text items into one." ;
+ Text[ chinese_simplified ] = "½«Èô¸ÉÎÄ×Ö´®ºÏ²¢µ½Ò»¸öÎÄ×Ö´®ÖС£";
+ Text[ russian ] = "Îáúåäèíÿåò íåñêîëüêî òåêñòîâ â îäèí.";
+ Text[ polish ] = "£¹czy elementy tekstu w jeden.";
+ Text[ japanese ] = "•¡”‚Ì•¶Žš—ñ‚ðŒ‹‡‚µ‚Ä1‚‚̕¶Žš—ñ‚É‚Ü‚Æ‚ß‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N­Y¤z¤å¦r¦ê¦X¨Ö¨ì¤@­Ó¤å¦r¦ê¤¤¡C";
+ Text[ arabic ] = "ÊÕá ÚÏÉ äÕæÕ Ýí äÕ æÇÍÏ.";
+ Text[ dutch ] = "Verschillende teksten tot één enkele samenvoegen.";
+ Text[ chinese_simplified ] = "½«Èô¸ÉÎÄ×Ö´®ºÏ²¢µ½Ò»¸öÎÄ×Ö´®ÖС£";
+ Text[ greek ] = "Åíþíåé êåßìåíá óå Ýíá.";
+ Text[ korean ] = "¸î°³ÀÇ ÅؽºÆ® Ç׸ñÀÌÇϳª·Î ¹­¿´½À´Ï´Ù.";
+ Text[ turkish ] = "Metinleri tek bir metinde birleþtirir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_VERKETTEN );
+ VAR_ARGS; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text " ;
+ Text [ english ] = "text " ;
+ Text [ norwegian ] = "Text " ;
+ Text [ italian ] = "testo " ;
+ Text [ portuguese_brazilian ] = "Text " ;
+ Text [ portuguese ] = "Texto " ;
+ Text [ finnish ] = "Text " ;
+ Text [ danish ] = "Tekst " ;
+ Text [ french ] = "Texte " ;
+ Text [ swedish ] = "text " ;
+ Text [ dutch ] = "Tekst " ;
+ Text [ spanish ] = "texto " ;
+ Text [ english_us ] = "text " ;
+ Text[ chinese_simplified ] = "text ";
+ Text[ russian ] = "Òåêñò ";
+ Text[ polish ] = "Tekst ";
+ Text[ japanese ] = "•¶Žš—ñ ";
+ Text[ chinese_traditional ] = "text ";
+ Text[ arabic ] = "ÇáäÕ ";
+ Text[ dutch ] = "Tekst ";
+ Text[ chinese_simplified ] = "text ";
+ Text[ greek ] = "Êåßìåíï ";
+ Text[ korean ] = "ÅؽºÆ® ";
+ Text[ turkish ] = "Metin ";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Text für die Textverkettung. : Text f³r die Textverkettung. */
+ Text = "Text für die Textverkettung." ;
+ Text [ english ] = "are 1 to 30 text items to be joined into a single text item." ;
+ Text [ norwegian ] = "Text für die Textverkettung." ;
+ Text [ italian ] = "sono gli elementi di testo da unire in un unico elemento." ;
+ Text [ portuguese_brazilian ] = "Text für die Textverkettung." ;
+ Text [ portuguese ] = "é 1 de 30 textos a serem agrupados num único." ;
+ Text [ finnish ] = "Text für die Textverkettung." ;
+ Text [ danish ] = "Tekst som skal sammenkædes." ;
+ Text [ french ] = "Élément de texte pour la concaténation." ;
+ Text [ swedish ] = "Text för textsammanlänkningen." ;
+ Text [ dutch ] = "Tekst voor de samenvoeging." ;
+ Text [ spanish ] = "Texto 1; texto 2 ;...son los textos que se agruparán en uno solo." ;
+ Text [ english_us ] = "Text for the concatentation." ;
+ Text[ chinese_simplified ] = "Êǽ«ÒªºÏ²¢µÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò 1; òåêñò 2;...îò 1 äî 30 ýëåìåíòîâ òåêñòà, îáúäèíÿåìûõ â îäèí ýëåìåíò òåêñòà.";
+ Text[ polish ] = "Od 1 do 30 ci¹gów znaków, które maj¹ byæ po³¹czone w jeden ci¹g.";
+ Text[ japanese ] = "•¡”‚Ì•¶Žš—ñ‚ðŒ‹‡‚µ‚Ä1‚‚ɂ܂Ƃ߂镶Žš—ñB";
+ Text[ chinese_traditional ] = "¬O±N­n¦X¨Öªº¦r¦ê¡C";
+ Text[ arabic ] = "ãä 1 Åáì 30 ÓáÓáÉ äÕíÉ áæÕáåÇ áÊÕÈÍ ÓáÓáÉ äÕíÉ æÇÍÏÉ.";
+ Text[ dutch ] = "Tekst voor de samenvoeging.";
+ Text[ chinese_simplified ] = "Êǽ«ÒªºÏ²¢µÄ×Ö´®¡£";
+ Text[ greek ] = "Êåßìåíï ãéá óýíäåóç êáôÜ óåéñÜ.";
+ Text[ korean ] = "ÅؽºÆ® °áÇÕÀ» À§ÇÑ ÅؽºÆ®";
+ Text[ turkish ] = "Metin birleþtirmesi ile ilgili metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function IDENTISCH #*=-
+ Resource SC_OPCODE_EXACT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Gibt an, ob zwei Texte gleich sind" ;
+ Text [ english ] = "Compares two text strings and returns TRUE if they are exactly the same, FALSE otherwise." ;
+ Text [ norwegian ] = "Gibt an, ob zwei Texte gleich sind" ;
+ Text [ italian ] = "Stabilisce se due testi sono uguali." ;
+ Text [ portuguese_brazilian ] = "Gibt an, ob zwei Texte gleich sind" ;
+ Text [ portuguese ] = "Compara se dois textos são iguais, indicando VERDADEIRO no caso de o serem; FALSO no caso contrário." ;
+ Text [ finnish ] = "Gibt an, ob zwei Texte gleich sind" ;
+ Text [ danish ] = "Kontrollerer, om to tekster er identiske." ;
+ Text [ french ] = "Indique si deux textes sont identiques." ;
+ Text [ swedish ] = "Anger om två texter är lika." ;
+ Text [ dutch ] = "Geeft aan of twee teksten gelijk zijn." ;
+ Text [ spanish ] = "Compara si dos textos son idénticos" ;
+ Text [ english_us ] = "Specifies whether two texts are identical." ;
+ Text[ chinese_simplified ] = "±È½ÏÁ½¸ö×Ö·û´®ÊÇ·ñÏàͬ¡£";
+ Text[ russian ] = "Ïðîâåðÿåò èäåíòè÷íîñòü äâóõ òåêñòîâ.";
+ Text[ polish ] = "Podaje, czy dwa teksty s¹ identyczne.";
+ Text[ japanese ] = "2‚‚̕¶Žš—ñ‚ª“¯‚¶‚©‚Ç‚¤‚©‚ð”äŠr‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤ñ¸û¨â­Ó¦r¤¸¦ê¬O§_¬Û¦P¡C";
+ Text[ arabic ] = "ÊÍÏÏ ãÇ ÅÐÇ ßÇä åäÇß ÊÔÇÈå Èíä äÕíä.";
+ Text[ dutch ] = "Geeft aan of twee teksten gelijk zijn.";
+ Text[ chinese_simplified ] = "±È½ÏÁ½¸ö×Ö·û´®ÊÇ·ñÏàͬ¡£";
+ Text[ greek ] = "Äçëþíåé áí äýï êåßìåíá åßíáé ßäéá";
+ Text[ korean ] = "µÎ ÅؽºÆ®ÀÇ µ¿ÀÏ ¿©ºÎ¸¦ ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Ýki metnin ayný olup olmadýðýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_IDENTISCH );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text_1" ;
+ Text [ english ] = "text 1" ;
+ Text [ norwegian ] = "Text 1" ;
+ Text [ italian ] = "testo_1" ;
+ Text [ portuguese_brazilian ] = "Text 1" ;
+ Text [ portuguese ] = "Texto_1" ;
+ Text [ finnish ] = "Text 1" ;
+ Text [ danish ] = "Tekst_1" ;
+ Text [ french ] = "Texte_1" ;
+ Text [ swedish ] = "text_1" ;
+ Text [ dutch ] = "Tekst_1" ;
+ Text [ spanish ] = "texto_1" ;
+ Text [ english_us ] = "text_1" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö_1";
+ Text[ russian ] = "Òåêñò_1";
+ Text[ polish ] = "Tekst_1";
+ Text[ japanese ] = "•¶Žš—ñ1";
+ Text[ chinese_traditional ] = "text_1";
+ Text[ arabic ] = "äÕ_1";
+ Text[ dutch ] = "Tekst_1";
+ Text[ chinese_simplified ] = "ÎÄ×Ö_1";
+ Text[ greek ] = "Êåßìåíï_1";
+ Text[ korean ] = "ÅؽºÆ®_1";
+ Text[ turkish ] = "Metin_1";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der erste Text für den Textvergleich. : Der erste Text f³r den Textvergleich. */
+ Text = "Der erste Text für den Textvergleich." ;
+ Text [ english ] = "is the first text string." ;
+ Text [ norwegian ] = "Der erste Text für den Textvergleich." ;
+ Text [ italian ] = "è la prima stringa di testo." ;
+ Text [ portuguese_brazilian ] = "Der erste Text für den Textvergleich." ;
+ Text [ portuguese ] = "é o primeiro texto para a comparação." ;
+ Text [ finnish ] = "Der erste Text für den Textvergleich." ;
+ Text [ danish ] = "Den første tekst til sammenligning." ;
+ Text [ french ] = "Le premier texte pour la comparaison." ;
+ Text [ swedish ] = "Den första texten för textjämförelsen." ;
+ Text [ dutch ] = "De eerste tekst voor de tekstvergelijking." ;
+ Text [ spanish ] = "es la primera cadena de texto, entre comillas." ;
+ Text [ english_us ] = "The first text to be used for comparing texts." ;
+ Text[ chinese_simplified ] = "ÓÃÓڱȽϵĵÚÒ»¸ö×Ö´®¡£";
+ Text[ russian ] = "Ïåðâûé òåêñò äëÿ ñðàâíåíèÿ òåêñòîâ.";
+ Text[ polish ] = "Pierwszy tekst dla porównania.";
+ Text[ japanese ] = "”äŠr‚·‚é1‚–ڂ̕¶Žš—ñB";
+ Text[ chinese_traditional ] = "¥Î©ó¤ñ¸ûªº²Ä¤@­Ó¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÃæá áãÞÇÑäÉ ÇáäÕ.";
+ Text[ dutch ] = "De eerste tekst voor de tekstvergelijking.";
+ Text[ chinese_simplified ] = "ÓÃÓڱȽϵĵÚÒ»¸ö×Ö´®¡£";
+ Text[ greek ] = "Ôï ðñþôï êåßìåíï ãéá ôçí óýãêñéóç êåéìÝíùí.";
+ Text[ korean ] = "ÅؽºÆ® ºñ±³¸¦ À§ÇÑ Ã¹ ÅؽºÆ®ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Karþýlaþtýrma için kullanýlacak birinci metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Text_2" ;
+ Text [ english ] = "text 2" ;
+ Text [ norwegian ] = "Text 2" ;
+ Text [ italian ] = "testo_2" ;
+ Text [ portuguese_brazilian ] = "Text 2" ;
+ Text [ portuguese ] = "Texto_2" ;
+ Text [ finnish ] = "Text 2" ;
+ Text [ danish ] = "Tekst_2" ;
+ Text [ french ] = "Texte_2" ;
+ Text [ swedish ] = "text_2" ;
+ Text [ dutch ] = "Tekst_2" ;
+ Text [ spanish ] = "texto_2" ;
+ Text [ english_us ] = "text_2" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö_2";
+ Text[ russian ] = "Òåêñò_2";
+ Text[ polish ] = "Tekst_2";
+ Text[ japanese ] = "•¶Žš—ñ2";
+ Text[ chinese_traditional ] = "text_2";
+ Text[ arabic ] = "äÕ_2";
+ Text[ dutch ] = "Tekst_2";
+ Text[ chinese_simplified ] = "ÎÄ×Ö_2";
+ Text[ greek ] = "Êåßìåíï 2";
+ Text[ korean ] = "ÅؽºÆ®_2";
+ Text[ turkish ] = "Metin_2";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der zweite Text für den Textvergleich. : Der zweite Text f³r den Textvergleich. */
+ Text = "Der zweite Text für den Textvergleich." ;
+ Text [ english ] = "is the second text string." ;
+ Text [ norwegian ] = "Der zweite Text für den Textvergleich." ;
+ Text [ italian ] = "è la seconda stringa di testo." ;
+ Text [ portuguese_brazilian ] = "Der zweite Text für den Textvergleich." ;
+ Text [ portuguese ] = "é o segundo texto para a comparação." ;
+ Text [ finnish ] = "Der zweite Text für den Textvergleich." ;
+ Text [ danish ] = "Den anden tekst til sammenligning." ;
+ Text [ french ] = "Le deuxième texte pour la comparaison." ;
+ Text [ swedish ] = "Den andra texten för textjämförelsen." ;
+ Text [ dutch ] = "De tweede tekst voor de tekstvergelijking." ;
+ Text [ spanish ] = "es la segunda cadena de texto, entre comillas." ;
+ Text [ english_us ] = "The second text for comparing texts." ;
+ Text[ chinese_simplified ] = "ÓÃÓڱȽϵĵڶþ¸ö×Ö´®¡£";
+ Text[ russian ] = "Âòîðîé òåêñò äëÿ ñðàâíåíèÿ òåêñòîâ.";
+ Text[ polish ] = "Drugi tekst dla porównania.";
+ Text[ japanese ] = "”äŠr‚·‚é‚à‚¤1‚‚̕¶Žš—ñB";
+ Text[ chinese_traditional ] = "¥Î©ó¤ñ¸ûªº²Ä¤G­Ó¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáËÇäí áãÞÇÑäÉ ÇáäÕ.";
+ Text[ dutch ] = "De tweede tekst voor de tekstvergelijking.";
+ Text[ chinese_simplified ] = "ÓÃÓڱȽϵĵڶþ¸ö×Ö´®¡£";
+ Text[ greek ] = "Ôï äåýôåñï êåßìåíï ãéá ôç óýãêñéóç êåéìÝíïõ.";
+ Text[ korean ] = "ÅؽºÆ® ºñ±³¸¦ À§ÇÑ µÎ¹ø° ÅؽºÆ®";
+ Text[ turkish ] = "Karþýlaþtýrma için kullanýlacak ikinci metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function FINDEN #*=-
+ Resource SC_OPCODE_FIND
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Sucht ein Teilwort in einem Text unter Berücksichtigung von Groß- und Kleinschreibung. : Sucht ein Teilwort in einem Text unter Ber³cksichtigung von Gro˜- und Kleinschreibung. */
+ Text = "Sucht ein Teilwort in einem Text unter Berücksichtigung von Groß- und Kleinschreibung." ;
+ Text [ english ] = "Finds one string of text within another string of text and returns the number of the character at which find_text first occurs." ;
+ Text [ norwegian ] = "Sucht ein Teilwort in einem Text unter Berücksichtigung von Groß- und Kleinschreibung." ;
+ Text [ italian ] = "Cerca una stringa di testo all'interno di un'altra stringa tenendo conto di maiuscole/minuscole." ;
+ Text [ portuguese_brazilian ] = "Sucht ein Teilwort in einem Text unter Berücksichtigung von Groß- und Kleinschreibung." ;
+ Text [ portuguese ] = "Procura um texto dentro de um outro texto, distinguindo as maiúsculas e as minúsculas." ;
+ Text [ finnish ] = "Sucht ein Teilwort in einem Text unter Berücksichtigung von Groß- und Kleinschreibung." ;
+ Text [ danish ] = "Finder en tekststreng i en tekst (skelner mellem store og små bogstaver)." ;
+ Text [ french ] = "Recherche une chaîne de texte dans un texte en respectant la casse (majuscules et minuscules)." ;
+ Text [ swedish ] = "Söker efter en textsträng i en text under beaktande av versaler och gemener." ;
+ Text [ dutch ] = "Zoekt een gedeelte van een woord (er wordt daarbij onderscheid gemaakt tussen hoofdletters en kleine letters)." ;
+ Text [ spanish ] = "Busca un valor de texto dentro de otro tomando en cuenta las mayúsculas y minúsculas." ;
+ Text [ english_us ] = "Looks for a string of text within another (case sensitive)" ;
+ Text[ chinese_simplified ] = "ÒÔÇø·Ö´óСд×ÖĸµÄ·½Ê½ÔÚÒ»¸ö×Ö´®ÄÚ²éÕÒijһ¸ö×Ö´®¡£";
+ Text[ russian ] = "Èùåò ÷àñòü ñëîâà â òåêñòå ñ ó÷åòîì ðåãèñòðà.";
+ Text[ polish ] = "Wyszukuje czêœæ s³owa w tekœcie uwzglêdniaj¹c du¿e i ma³e litery.";
+ Text[ japanese ] = "Žw’肵‚½•¶Žš—ñ‚𑼂Ì(‰pŽš‚̑啶Žš‚Ƭ•¶Žš‚ð‹æ•Ê‚Å‚«‚é)•¶Žš—ñ‚Ì’†‚ÅŒŸõ‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥H°Ï¤À¤j¤p¼g¦r¥Àªº¤è¦¡¦b¤@­Ó¦r¦ê¤º¬d§ä¬Y¤@­Ó¦r¦ê¡C";
+ Text[ arabic ] = "ÊÈÍË Úä ÌÒÁ ãä ßáãÉ Ýí äÕ ãÚ ãÑÇÚÇÉ ÇáÃÍÑÝ ÇáßÈíÑÉ æÇáÕÛíÑÉ.";
+ Text[ dutch ] = "Zoekt een gedeelte van een woord (er wordt daarbij onderscheid gemaakt tussen hoofdletters en kleine letters).";
+ Text[ chinese_simplified ] = "ÒÔÇø·Ö´óСд×ÖĸµÄ·½Ê½ÔÚÒ»¸ö×Ö´®ÄÚ²éÕÒijһ¸ö×Ö´®¡£";
+ Text[ greek ] = "Áíáæçôåß ôìÞìá ìéáò ëÝîçò óå Ýíá êåßìåíï ëáìâÜíïíôáò õðüøç ôçò ãñáöÞò (Êåöáëáßá-ÐåæÜ).";
+ Text[ korean ] = "´Ù¸¥°Íµé »çÀÌ¿¡ ÅؽºÆ®ÀÇ ¹®ÀÚ¿­À» ã±â (´ë/¼Ò¹®ÀÚ ±¸º°)";
+ Text[ turkish ] = "Metin içinde sözcük parçalarý arar (büyük/küçük harf duyarlý).";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_FINDEN );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Suchtext" ;
+ Text [ english ] = "find_text" ;
+ Text [ norwegian ] = "Suchtext" ;
+ Text [ italian ] = "stringa" ;
+ Text [ portuguese_brazilian ] = "Suchtext" ;
+ Text [ portuguese ] = "texto_a_localizar" ;
+ Text [ finnish ] = "Suchtext" ;
+ Text [ danish ] = "Find_tekst" ;
+ Text [ french ] = "Texte_cherché" ;
+ Text [ swedish ] = "söktext" ;
+ Text [ dutch ] = "Zoektekst" ;
+ Text [ spanish ] = "texto a buscar" ;
+ Text [ english_us ] = "find_text" ;
+ Text[ chinese_simplified ] = "find_text";
+ Text[ russian ] = "Íàéòè_òåêñò";
+ Text[ polish ] = "znajdŸ_tekst";
+ Text[ japanese ] = "ŒŸõ•¶Žš—ñ";
+ Text[ chinese_traditional ] = "find_text";
+ Text[ arabic ] = "Find_text";
+ Text[ dutch ] = "Zoektekst";
+ Text[ chinese_simplified ] = "find_text";
+ Text[ greek ] = "Êåßìåíï_áíáæÞôçóçò";
+ Text[ korean ] = "ã±â_ÅؽºÆ®";
+ Text[ turkish ] = "Aranan metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Text, der gesucht wird." ;
+ Text [ english ] = "is the text you want to find." ;
+ Text [ norwegian ] = "Der Text, der gesucht wird." ;
+ Text [ italian ] = "è il testo che si desidera trovare." ;
+ Text [ portuguese_brazilian ] = "Der Text, der gesucht wird." ;
+ Text [ portuguese ] = "é o texto que se deseja localizar." ;
+ Text [ finnish ] = "Der Text, der gesucht wird." ;
+ Text [ danish ] = "Den tekst som søges." ;
+ Text [ french ] = "Le texte que vous recherchez." ;
+ Text [ swedish ] = "Texten som söks." ;
+ Text [ dutch ] = "De tekst die wordt gezocht." ;
+ Text [ spanish ] = "es el texto que se desea encontrar." ;
+ Text [ english_us ] = "The text to be found." ;
+ Text[ chinese_simplified ] = "ÊÇÄúÒª²éÕÒµÄÎÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, êîòîðûé ñëåäóåò íàéòè.";
+ Text[ polish ] = "Szukany tekst.";
+ Text[ japanese ] = "ŒŸõ‚·‚镶Žš—ñB";
+ Text[ chinese_traditional ] = "¬O±z­n¬d§äªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÊÈÍË Úäå.";
+ Text[ dutch ] = "De tekst die wordt gezocht.";
+ Text[ chinese_simplified ] = "ÊÇÄúÒª²éÕÒµÄÎÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï áíáæÞôçóçò";
+ Text[ korean ] = "¹ß°ßµÉ ÅؽºÆ®";
+ Text[ turkish ] = "Aranacak metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Text" ;
+ Text [ english ] = "within_text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "dentro_del_texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "within_text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "within_text";
+ Text[ arabic ] = "Within_text";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "within_text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Text, in dem gesucht wird." ;
+ Text [ english ] = "is the text containing the text you want to find." ;
+ Text [ norwegian ] = "Der Text, in dem gesucht wird." ;
+ Text [ italian ] = "è il testo contenente il testo che si desidera trovare." ;
+ Text [ portuguese_brazilian ] = "Der Text, in dem gesucht wird." ;
+ Text [ portuguese ] = "é o texto que contém o texto que deseja localizar." ;
+ Text [ finnish ] = "Der Text, in dem gesucht wird." ;
+ Text [ danish ] = "Den tekst der skal søges i." ;
+ Text [ french ] = "Le texte dans lequel effectuer la recherche." ;
+ Text [ swedish ] = "Texten som det söks i." ;
+ Text [ dutch ] = "De tekst waarin wordt gezocht." ;
+ Text [ spanish ] = "es el texto que a su vez contiene el texto que se desea encontrar." ;
+ Text [ english_us ] = "The text in which a search is to be made." ;
+ Text[ chinese_simplified ] = "ÊÇ°üº¬ÄúËùÒª²éÕÒÄÚÈݵÄÎÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, â êîòîðîì ñëåäóåò èñêàòü.";
+ Text[ polish ] = "Tekst, w którym nastêpuje wyszukiwanie.";
+ Text[ japanese ] = "‘ÎÛ‚ÌŒŸõ‚³‚ê‚镶Žš—ñB";
+ Text[ chinese_traditional ] = "¬O¥]§t±z©Ò­n¬d§ä¤º®eªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÊÑíÏ ÇáÈÍË Ýíå.";
+ Text[ dutch ] = "De tekst waarin wordt gezocht.";
+ Text[ chinese_simplified ] = "ÊÇ°üº¬ÄúËùÒª²éÕÒÄÚÈݵÄÎÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï óôï ïðïßï èá ãßíåé ç áíáæÞôçóç.";
+ Text[ korean ] = "ã±â¸¦ ÇÒ ÅؽºÆ®";
+ Text[ turkish ] = "Arama yapýlacak metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Position" ;
+ Text [ english ] = "start_num" ;
+ Text [ norwegian ] = "Position" ;
+ Text [ italian ] = "inizio" ;
+ Text [ portuguese_brazilian ] = "Position" ;
+ Text [ portuguese ] = "Posição_inicial" ;
+ Text [ finnish ] = "Position" ;
+ Text [ danish ] = "Start_ved" ;
+ Text [ french ] = "Position" ;
+ Text [ swedish ] = "position" ;
+ Text [ dutch ] = "Positie" ;
+ Text [ spanish ] = "núm_inicial" ;
+ Text [ english_us ] = "position" ;
+ Text[ chinese_simplified ] = "start_num";
+ Text[ russian ] = "Ïîçèöèÿ";
+ Text[ polish ] = "liczba_pocz¹tkowa";
+ Text[ japanese ] = "ŠJŽnˆÊ’u";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "start_num";
+ Text[ arabic ] = "Start_num";
+ Text[ dutch ] = "Positie";
+ Text[ chinese_simplified ] = "start_num";
+ Text[ greek ] = "ÈÝóç";
+ Text[ korean ] = "À§Ä¡";
+ Text[ turkish ] = "Konum";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Position im Text, ab der gesucht wird" ;
+ Text [ english ] = "specifies the character at which to start the search." ;
+ Text [ norwegian ] = "Die Position im Text, ab der gesucht wird" ;
+ Text [ italian ] = "specifica il carattere in corrispondenza del quale si desidera iniziare la ricerca." ;
+ Text [ portuguese_brazilian ] = "Die Position im Text, ab der gesucht wird" ;
+ Text [ portuguese ] = "especifica a posição do texto a partir da qual será iniciada a procura." ;
+ Text [ finnish ] = "Die Position im Text, ab der gesucht wird" ;
+ Text [ danish ] = "Den position i teksten søgningen skal starte fra." ;
+ Text [ french ] = "La position dans le texte à partir de laquelle la recherche doit commencer." ;
+ Text [ swedish ] = "Positionen i texten varifrån sökningen sker." ;
+ Text [ dutch ] = "De plaats in de tekst vanaf welke wordt gezocht." ;
+ Text [ spanish ] = "especifica el carácter a partir del que comenzará la búsqueda" ;
+ Text [ english_us ] = "The position in the text from which the search starts." ;
+ Text[ chinese_simplified ] = "¿ªÊ¼²éÕÒµÄÆðʼ×Ö·ûλÖá£";
+ Text[ russian ] = "Ïîçèöèÿ â òåêñòå, ñ êîòîðîé ñëåäóåò íà÷àòü ïîèñê.";
+ Text[ polish ] = "Pozycja w tekœcie, od której nast¹pi wyszukiwanie";
+ Text[ japanese ] = "•¶Žš—ñ‚ÅŒŸõ‚·‚éŠJŽnˆÊ’uB";
+ Text[ chinese_traditional ] = "¶}©l¬d§äªº°_©l¦r¤¸¦ì¸m¡C";
+ Text[ arabic ] = "ãæÞÚ ÇáäÕ ÇáÐí ÓíÊã ÇáÈÍË ÈÏÇíÉ ãäå.";
+ Text[ dutch ] = "De plaats in de tekst vanaf welke wordt gezocht.";
+ Text[ chinese_simplified ] = "¿ªÊ¼²éÕÒµÄÆðʼ×Ö·ûλÖá£";
+ Text[ greek ] = "Ç èÝóç óôï êåßìåíï, áðü ôçí ïðïßá èá åêêéíÞóåé ç áíáæÞôçóç.";
+ Text[ korean ] = "ã±â ½ÃÀÛÀ» ÇÒ ¹®¼­³»ÀÇ À§Ä¡";
+ Text[ turkish ] = "Aramanýn baþlatýlacaðý metin konumu.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function SUCHEN #*=-
+ Resource SC_OPCODE_SEARCH
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Sucht ein Teilwort in einem Text ohne Berücksichtigung von Groß- und Kleinschreibung. : Sucht ein Teilwort in einem Text ohne Ber³cksichtigung von Gro˜- und Kleinschreibung. */
+ Text = "Sucht ein Teilwort in einem Text ohne Berücksichtigung von Groß- und Kleinschreibung." ;
+ Text [ english ] = "Returns the number of the character at which a specific character or text string is first found, reading from left to right." ;
+ Text [ norwegian ] = "Sucht ein Teilwort in einem Text ohne Berücksichtigung von Groß- und Kleinschreibung." ;
+ Text [ italian ] = "Cerca una stringa di testo all'interno di un'altra stringa non tenendo conto di maiuscole/minuscole." ;
+ Text [ portuguese_brazilian ] = "Sucht ein Teilwort in einem Text ohne Berücksichtigung von Groß- und Kleinschreibung." ;
+ Text [ portuguese ] = "Localiza um valor de texto dentro de outro, sem fazer a distinção entre maiúsculas e minúsculas." ;
+ Text [ finnish ] = "Sucht ein Teilwort in einem Text ohne Berücksichtigung von Groß- und Kleinschreibung." ;
+ Text [ danish ] = "Finder en tekststreng i en tekst (skelner ikke mellem store og små bogstaver)." ;
+ Text [ french ] = "Recherche une chaîne de texte dans un texte sans respecter la casse (majuscules et minuscules)." ;
+ Text [ swedish ] = "Söker en textsträng i en text utan att beakta stora och små bokstäver." ;
+ Text [ dutch ] = "Zoekt een tekenreeks in een tekst (er wordt geen onderscheid gemaakt tussen hoofdletters en kleine letters)." ;
+ Text [ spanish ] = "Busca un valor de texto dentro de otro sin reconocer mayúsculas o minúsculas." ;
+ Text [ english_us ] = "Looks for one text value within another (not case-sensitive)." ;
+ Text[ chinese_simplified ] = "ÔÚ×Ö´®ÄÚ²éÕÒ×Ö·û»ò×Ö´®µÄλÖ㬲»Çø·Ö´óСд¡£";
+ Text[ russian ] = "Íàõîäèò ÷àñòü ñëîâà â òåêñòå áåç ó÷åòà ðåãèñòðà.";
+ Text[ polish ] = "Znajduje wyst¹pienie tekstu w innym ³añcuchu tekstowym (nie rozró¿niaj¹c du¿ych i ma³ych liter).";
+ Text[ japanese ] = "‘啶Žš/¬•¶Žš‚Ì‹æ•Ê‚È‚­AŽw’肵‚½•¶Žš‚̈ʒu‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦b¦r¦ê¤º¬d§ä¦r²Å©Î¦r²Å¦êªº¦ì¸m¡M¤£°Ï¤À¤j¤p¼g¡C";
+ Text[ arabic ] = "ÊÈÍË Úä ÌÒÁ ãä ßáãÉ Ýí äÕ ÈÏæä ãÑÇÚÇÉ ÇáÃÍÑÝ ÇáßÈíÑÉ æÇáÕÛíÑÉ.";
+ Text[ dutch ] = "Zoekt een tekenreeks in een tekst (er wordt geen onderscheid gemaakt tussen hoofdletters en kleine letters).";
+ Text[ chinese_simplified ] = "ÔÚ×Ö´®ÄÚ²éÕÒ×Ö·û»ò×Ö´®µÄλÖ㬲»Çø·Ö´óСд¡£";
+ Text[ greek ] = "Áíáæçôåß Ýíá ôìÞìá åíüò êåéìÝíïõ ÷ùñßò íá äéáêñßíåé ìåôáîý êåöáëáßùí êáé ðåæþí.";
+ Text[ korean ] = "´Ù¸¥°Íµé »çÀÌ¿¡ ÅؽºÆ®ÀÇ ¹®ÀÚ¿­À» ã±â (´ë/¼Ò¹®ÀÚ ±¸º° ¾ÈÇÔ)";
+ Text[ turkish ] = "Metin içinde metin öðesi arar (Büyük/küçük harf duyarlý deðil).";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_SUCHEN );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Suchtext" ;
+ Text [ english ] = "find_text" ;
+ Text [ norwegian ] = "Suchtext" ;
+ Text [ italian ] = "stringa" ;
+ Text [ portuguese_brazilian ] = "Suchtext" ;
+ Text [ portuguese ] = "texto_a_localizar" ;
+ Text [ finnish ] = "Suchtext" ;
+ Text [ danish ] = "Find_tekst" ;
+ Text [ french ] = "Texte_cherché" ;
+ Text [ swedish ] = "söktext" ;
+ Text [ dutch ] = "Zoektekst" ;
+ Text [ spanish ] = "texto a buscar" ;
+ Text [ english_us ] = "find_text" ;
+ Text[ chinese_simplified ] = "find_text";
+ Text[ russian ] = "Èñêîìûé òåêñò";
+ Text[ polish ] = "Szukany_tekst";
+ Text[ japanese ] = "ŒŸõ•¶Žš—ñ";
+ Text[ chinese_traditional ] = "find_text";
+ Text[ arabic ] = "Find_text";
+ Text[ dutch ] = "Zoektekst";
+ Text[ chinese_simplified ] = "find_text";
+ Text[ greek ] = "Êåßìåíï_áíáæÞôçóçò";
+ Text[ korean ] = "ã±â_ÅؽºÆ®";
+ Text[ turkish ] = "Aranan metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Text, der gesucht wird." ;
+ Text [ english ] = "is the text you want to find." ;
+ Text [ norwegian ] = "Der Text, der gesucht wird." ;
+ Text [ italian ] = "è il testo che si desidera trovare." ;
+ Text [ portuguese_brazilian ] = "Der Text, der gesucht wird." ;
+ Text [ portuguese ] = "é o texto que deseja localizar." ;
+ Text [ finnish ] = "Der Text, der gesucht wird." ;
+ Text [ danish ] = "Den tekst som søges." ;
+ Text [ french ] = "Le texte que vous recherchez." ;
+ Text [ swedish ] = "Texten som söks." ;
+ Text [ dutch ] = "De tekst die wordt gezocht." ;
+ Text [ spanish ] = "es el texto que se desea encontrar." ;
+ Text [ english_us ] = "The text to be found." ;
+ Text[ chinese_simplified ] = "ÐèÒª²éÕÒµÄ×Ö·û»ò×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, êîòîðûé íåîáõîäèìî íàéòè.";
+ Text[ polish ] = "Tekst, który nale¿y znaleŸæ.";
+ Text[ japanese ] = "ŒŸõ‚·‚镶Žš—ñ¡";
+ Text[ chinese_traditional ] = "»Ý­n¬d§äªº¦r¤¸©Î¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÊÈÍË Úäå.";
+ Text[ dutch ] = "De tekst die wordt gezocht.";
+ Text[ chinese_simplified ] = "ÐèÒª²éÕÒµÄ×Ö·û»ò×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï áíáæÞôçóçò";
+ Text[ korean ] = "¹ß°ßµÉ ÅؽºÆ®";
+ Text[ turkish ] = "Aranacak metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Text" ;
+ Text [ english ] = "within_text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "dentro_del_texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "within_text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "‘ÎÛ";
+ Text[ chinese_traditional ] = "within_text";
+ Text[ arabic ] = "Within_text";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "within_text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Text, in dem gesucht wird." ;
+ Text [ english ] = "is the text in which you want to search for find_text." ;
+ Text [ norwegian ] = "Der Text, in dem gesucht wird." ;
+ Text [ italian ] = "è il testo all'interno del quale si desidera effettuare la ricerca di testo." ;
+ Text [ portuguese_brazilian ] = "Der Text, in dem gesucht wird." ;
+ Text [ portuguese ] = "é o texto que contém o texto que deseja localizar." ;
+ Text [ finnish ] = "Der Text, in dem gesucht wird." ;
+ Text [ danish ] = "Den tekst der skal søges i." ;
+ Text [ french ] = "Le texte dans lequel effectuer la recherche." ;
+ Text [ swedish ] = "Texten där det skall sökas." ;
+ Text [ dutch ] = "Der tekst waarin wordt gezocht." ;
+ Text [ spanish ] = "es el texto en el que se desea encontrar texto_buscado." ;
+ Text [ english_us ] = "The text in which a search is to be made." ;
+ Text[ chinese_simplified ] = "ÒªÔÚÆäÖвéÕÒµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, â êîòîðîì âåäåòñÿ ïîèñê.";
+ Text[ polish ] = "Tekst, w którym nale¿y szukaæ.";
+ Text[ japanese ] = "ŒŸõ•¶Žš—ñ‚ðŠÜ‚Þ•¶Žš—ñ¡";
+ Text[ chinese_traditional ] = "­n¦b¨ä¤¤¬d§äªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÊÑíÏ ÇáÈÍË Ýíå.";
+ Text[ dutch ] = "Der tekst waarin wordt gezocht.";
+ Text[ chinese_simplified ] = "ÒªÔÚÆäÖвéÕÒµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï ìÝóá óôï ïðïßï ãßíåôáé ç áíáæÞôçóç.";
+ Text[ korean ] = "ã±â¸¦ ÇÒ ÅؽºÆ®";
+ Text[ turkish ] = "Arama yapýlan metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Position" ;
+ Text [ english ] = "start_num" ;
+ Text [ norwegian ] = "Position" ;
+ Text [ italian ] = "inizio" ;
+ Text [ portuguese_brazilian ] = "Position" ;
+ Text [ portuguese ] = "Posição_inicial" ;
+ Text [ finnish ] = "Position" ;
+ Text [ danish ] = "Start_ved" ;
+ Text [ french ] = "Position" ;
+ Text [ swedish ] = "position" ;
+ Text [ dutch ] = "Positie" ;
+ Text [ spanish ] = "núm_inicial" ;
+ Text [ english_us ] = "position" ;
+ Text[ chinese_simplified ] = "start_num";
+ Text[ russian ] = "Ïîçèöèÿ";
+ Text[ polish ] = "liczba_pocz¹tkowa";
+ Text[ japanese ] = "ŠJŽnˆÊ’u";
+ Text[ chinese_traditional ] = "start_num";
+ Text[ arabic ] = "Start_num";
+ Text[ dutch ] = "Positie";
+ Text[ chinese_simplified ] = "start_num";
+ Text[ greek ] = "start_num";
+ Text[ korean ] = "À§Ä¡";
+ Text[ turkish ] = "Konum";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Position im Text, ab der gesucht wird" ;
+ Text [ english ] = "is the character number in within_text, counting from the left, at which you want to start searching." ;
+ Text [ norwegian ] = "Die Position im Text, ab der gesucht wird" ;
+ Text [ italian ] = "è il numero del carattere in stringa, a partire da sinistra, dal quale si desidera iniziare la ricerca." ;
+ Text [ portuguese_brazilian ] = "Die Position im Text, ab der gesucht wird" ;
+ Text [ portuguese ] = "especifica a posição do texto a partir da qual será iniciada a procura." ;
+ Text [ finnish ] = "Die Position im Text, ab der gesucht wird" ;
+ Text [ danish ] = "Den position i teksten søgningen skal starte fra." ;
+ Text [ french ] = "La position dans le texte à partir de laquelle la recherche doit commencer." ;
+ Text [ swedish ] = "Positionen i texten där sökningen skall börja." ;
+ Text [ dutch ] = "De positie in de tekst van waaruit wordt gezocht." ;
+ Text [ spanish ] = "es, contando desde la izquierda, el número de carácter en dentro_del_texto en donde se desea iniciar la búsqueda" ;
+ Text [ english_us ] = "The position in the text where the search is started." ;
+ Text[ chinese_simplified ] = "¿ªÊ¼²éÕÒµÄ×Ö·ûλÖá£";
+ Text[ russian ] = "Ïîçèöèÿ â òåêñòå, íà÷èíàÿ ñ êîòîðîé âåäåòñÿ ïîèñê.";
+ Text[ polish ] = "Pozycja w tekœcie, od której nast¹pi wyszukiwanie";
+ Text[ japanese ] = "ŒŸõ‚ðŠJŽn‚·‚éˆÊ’u¡";
+ Text[ chinese_traditional ] = "¶}©l¬d§äªº¦r¤¸¦ì¸m¡C";
+ Text[ arabic ] = "ãæÖÚ ÇáäÕ ÇáÐí ÓíÊã ÇáÈÍË ÈÏÇíÉ ãäå.";
+ Text[ dutch ] = "De positie in de tekst van waaruit wordt gezocht.";
+ Text[ chinese_simplified ] = "¿ªÊ¼²éÕÒµÄ×Ö·ûλÖá£";
+ Text[ greek ] = "Ç èÝóç óôï êåßìåíï, áðü ôçí ïðïßá èá åêêéíÞóåé ç áíáæÞôçóç.";
+ Text[ korean ] = "°Ë»öÀ» ½ÃÀÛÇÒ ÅؽºÆ® À§Ä¡ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Aramanýn baþlatýlacaðý metin konumu.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GLÄTTEN #*=-
+ Resource SC_OPCODE_TRIM
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Löscht überflüssige Leerzeichen zwischen Worten. : L÷scht ³berfl³ssige Leerzeichen zwischen Worten. */
+ Text = "Löscht überflüssige Leerzeichen zwischen Worten." ;
+ Text [ english ] = "Removes all spaces from text except for single spaces between words." ;
+ Text [ norwegian ] = "Löscht überflüssige Leerzeichen zwischen Worten." ;
+ Text [ italian ] = "Rimuove gli spazi superflui dal testo lasciando tra le parole un solo spazio." ;
+ Text [ portuguese_brazilian ] = "Löscht überflüssige Leerzeichen zwischen Worten." ;
+ Text [ portuguese ] = "Elimina espaços desnecessários entre as palavras." ;
+ Text [ finnish ] = "Löscht überflüssige Leerzeichen zwischen Worten." ;
+ Text [ danish ] = "Sletter overflødige mellemrum mellem ord." ;
+ Text [ french ] = "Supprime tous les espaces surperflus entre les mots." ;
+ Text [ swedish ] = "Raderar alla överflödiga mellanslag mellan ord." ;
+ Text [ dutch ] = "Verwijdert overbodige spaties tussen woorden." ;
+ Text [ spanish ] = "Elimina los espacios del texto, excepto el espacio normal que se deja entre palabras." ;
+ Text [ english_us ] = "Removes extra spaces from text." ;
+ Text[ chinese_simplified ] = "ɾ³ý×Ö´®ÖеĿոñ¡£";
+ Text[ russian ] = "Óäàëÿåò ëèøíèå ïðîáåëû ìåæäó ñëîâàìè.";
+ Text[ polish ] = "Usuwa niepotrzebne spacje miêdzy s³owami.";
+ Text[ japanese ] = "•s•K—v‚ÈŒêŠÔ‚̽Íß°½‚ð휂µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "§R°£¦r¦ê¤¤ªºªÅ®æ¡C";
+ Text[ arabic ] = "ÊÍÐÝ ÃÍÑÝ ÇáãÓÇÝÉ ÇáÒÇÆÏÉ Èíä ÇáßáãÇÊ.";
+ Text[ dutch ] = "Verwijdert overbodige spaties tussen woorden.";
+ Text[ chinese_simplified ] = "ɾ³ý×Ö´®ÖеĿոñ¡£";
+ Text[ greek ] = "ÄéáãñÜöåé ðåñéôôÜ êåíÜ ìåôáîý ôùí ëÝîåùí.";
+ Text[ korean ] = "ÅؽºÆ®¿¡¼­ ¿©ºÐÀÇ °ø¹éÀ» Á¦°Å";
+ Text[ turkish ] = "Sözcükler arasýndaki fazla boþluklarý siler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_GLAETTEN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "Text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "Text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "Text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Text, in dem überflüssige Leerzeichen zwischen Worten gelöscht werden. : Der Text, in dem ³berfl³ssige Leerzeichen zwischen Worten gel÷scht werden. */
+ Text = "Der Text, in dem überflüssige Leerzeichen zwischen Worten gelöscht werden." ;
+ Text [ english ] = "is the text from which you want spaces removed." ;
+ Text [ norwegian ] = "Der Text, in dem überflüssige Leerzeichen zwischen Worten gelöscht werden." ;
+ Text [ italian ] = "è il testo da cui si desidera rimuovere gli spazi." ;
+ Text [ portuguese_brazilian ] = "Der Text, in dem überflüssige Leerzeichen zwischen Worten gelöscht werden." ;
+ Text [ portuguese ] = "é o texto no qual serão eliminados os espaços desnecessários." ;
+ Text [ finnish ] = "Der Text, in dem überflüssige Leerzeichen zwischen Worten gelöscht werden." ;
+ Text [ danish ] = "Den tekst hvorfra der skal fjernes overflødige mellemrum." ;
+ Text [ french ] = "Le texte dans lequel vous voulez supprimer les espaces superflus entre les mots." ;
+ Text [ swedish ] = "Texten där överflödiga mellanslag mellan ord tas bort." ;
+ Text [ dutch ] = "De tekst waarin overbodige spaties tussen woorden worden verwijderd." ;
+ Text [ spanish ] = "es el texto del que desea quitar espacios adicionales.." ;
+ Text [ english_us ] = "The text in which extra spaces between words are to be deleted." ;
+ Text[ chinese_simplified ] = "ÐèҪɾ³ýÆäÖпոñµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, èç êîòîðîãî óäàëÿþòñÿ ëèøíèå ïðîáåëû ìåæäó ñëîâàìè.";
+ Text[ polish ] = "Tekst, w którym zosta³y usuniête zbêdne spacje miêdzy s³owami.";
+ Text[ japanese ] = "•s•K—v‚ÈŒêŠÔ‚̽Íß°½‚ð휂·‚镶Žš—ñB";
+ Text[ chinese_traditional ] = "»Ý­n§R°£¨ä¤¤ªÅ®æªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÊÑíÏ ÍÐÝ ÃÍÑÝ ÇáãÓÇÝÉ ÇáÒÇÆÏÉ ãäå.";
+ Text[ dutch ] = "De tekst waarin overbodige spaties tussen woorden worden verwijderd.";
+ Text[ chinese_simplified ] = "ÐèҪɾ³ýÆäÖпոñµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï óôï ïðïßï èá ãßíåé äéáãñáöÞ ôùí ðåñéôôþí êåíþí ìåôáîý ôùí ëÝîåùí.";
+ Text[ korean ] = "»èÁ¦µÉ ´Ü¾î »çÀÌÀÇ ¿©ºÐÀÇ °ø¹éÀÌ ÀÖ´Â ÅؽºÆ®";
+ Text[ turkish ] = "Sözcükler arasýndaki fazla boþluklarýn silineceði metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GROSS2 #*=-
+ Resource SC_OPCODE_PROPPER
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wandelt alle Wortanfänge in Großbuchstaben um. : Wandelt alle Wortanfõnge in Gro˜buchstaben um. */
+ Text = "Wandelt alle Wortanfänge in Großbuchstaben um." ;
+ Text [ english ] = "Capitalizes the first letter in text and any other letters in text that follow any character other than a letter." ;
+ Text [ norwegian ] = "Wandelt alle Wortanfänge in Großbuchstaben um." ;
+ Text [ italian ] = "Converte in maiuscolo la prima lettera di ciascuna parola presente in testo." ;
+ Text [ portuguese_brazilian ] = "Wandelt alle Wortanfänge in Großbuchstaben um." ;
+ Text [ portuguese ] = "Começa todas as palavras com letra maiúscula." ;
+ Text [ finnish ] = "Wandelt alle Wortanfänge in Großbuchstaben um." ;
+ Text [ danish ] = "Konverterer første bogstav i hvert ord til store bogstav." ;
+ Text [ french ] = "Met en majuscule la première lettre de chaque mot." ;
+ Text [ swedish ] = "Omvandlar begynnelsebokstäverna i alla ord till stora bokstäver." ;
+ Text [ dutch ] = "Verandert de eerste letter van elk woord in een hoofdletter." ;
+ Text [ spanish ] = "Convierte en mayúscula la primera letra de cada palabra de un valor de texto." ;
+ Text [ english_us ] = "Capitalizes the first letter in all words." ;
+ Text[ chinese_simplified ] = "½«ËùÓÐÊ××Öĸ¼°ÈκηÇ×Öĸ×Ö·ûÖ®ºóµÄÊ××Öĸת»»³É´óд¡£";
+ Text[ russian ] = "Äåëàåò ïåðâûå áóêâû âñåõ ñëîâ ïðîïèñíûìè.";
+ Text[ polish ] = "Zamienia pierwsz¹ literê na pocz¹tku s³owa na du¿¹ literê.";
+ Text[ japanese ] = "•¶Žš—ñ’†‚̱Ù̧ÍޯĒPŒê‚Ì擪•¶Žš‚ð‘啶Žš‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N©Ò¦³­º¦r¥À¤Î¥ô¦ó«D¦r¥À¦r¤¸¤§«áªº­º¦r¥ÀÂà´«¦¨¤j¼g¡C";
+ Text[ arabic ] = "ÊÍæá ßÇÝÉ ÇáÃÍÑÝ ÇáÃæáì Åáì ÃÍÑÝ ßÈíÑÉ.";
+ Text[ dutch ] = "Verandert de eerste letter van elk woord in een hoofdletter.";
+ Text[ chinese_simplified ] = "½«ËùÓÐÊ××Öĸ¼°ÈκηÇ×Öĸ×Ö·ûÖ®ºóµÄÊ××Öĸת»»³É´óд¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé üëá ôá áñ÷éêÜ ãñÜììáôá ìéáò ëÝîçò óå êåöáëáßá.";
+ Text[ korean ] = "¸ðµç ´Ü¾î¿¡ ù±ÛÀÚ¸¦ ´ë¹®ÀÚ·Î";
+ Text[ turkish ] = "Tüm sözcüklerde ilk harfi büyük harfe dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_GROSS2 );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Text, in dem Wortanfänge durch Großbuchstaben ersetzt werden. : Der Text, in dem Wortanfõnge durch Gro˜buchstaben ersetzt werden. */
+ Text = "Der Text, in dem Wortanfänge durch Großbuchstaben ersetzt werden." ;
+ Text [ english ] = "is text enclosed in quotation marks, a formula that returns text, or a reference to a cell containing the text you want to partially capitalize." ;
+ Text [ norwegian ] = "Der Text, in dem Wortanfänge durch Großbuchstaben ersetzt werden." ;
+ Text [ italian ] = "è del testo le iniziali delle cui parole si desidera convertire in maiuscolo." ;
+ Text [ portuguese_brazilian ] = "Der Text, in dem Wortanfänge durch Großbuchstaben ersetzt werden." ;
+ Text [ portuguese ] = "é um texto entre aspas, uma fórmula que devolve um texto ou uma referência a uma célula e que contém o texto que se deseja com maiúsculas iniciais." ;
+ Text [ finnish ] = "Der Text, in dem Wortanfänge durch Großbuchstaben ersetzt werden." ;
+ Text [ danish ] = "Teksten i hvilken første bogstav i hvert ord skal konverteres til stort." ;
+ Text [ french ] = "Le texte dont des débuts de mots doivent être remplacés par des majuscules." ;
+ Text [ swedish ] = "Texten där begynnelsebokstäver ersätts av stora bokstäver." ;
+ Text [ dutch ] = "De tekst waarin de eerste letter van ieder woord veranderd wordt in een hoofdletter." ;
+ Text [ spanish ] = "es el texto entre comillas, una fórmula que devuelve texto o una referencia a una celda que contiene el texto al que se desea añadir mayúsculas iniciales." ;
+ Text [ english_us ] = "The text in which the beginning of words are to be replaced by capital letters." ;
+ Text[ chinese_simplified ] = "ÐèÒª½øÐÐת»»µÄ×Ö·û´®¡£";
+ Text[ russian ] = "Òåêñò, â êîòîðîì ïåðâûå áóêâû çàìåíÿþòñÿ íà ïðîïèñíûå.";
+ Text[ polish ] = "Tekst, w którym pocz¹tki s³ów zamienione zostan¹ na du¿e litery.";
+ Text[ japanese ] = "±Ù̧ÍޯĒPŒê‚Ì擪•¶Žš‚ð‘啶Žš‚É•ÏŠ·‚·‚镶Žš—ñB";
+ Text[ chinese_traditional ] = "»Ý­n¶i¦æÂà´«ªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÓæÝ íÊã ÇÓÊÈÏÇá ÇáÃÍÑÝ ÇáÃæáì áßáãÇÊå ÈÃÍÑÝ ßÈíÑÉ.";
+ Text[ dutch ] = "De tekst waarin de eerste letter van ieder woord veranderd wordt in een hoofdletter.";
+ Text[ chinese_simplified ] = "ÐèÒª½øÐÐת»»µÄ×Ö·û´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï, óôï ïðïßï èá ãßíåé áíôéêáôÜóôáóç ôùí áñ÷éêþí ãñáììÜôùí ôùí ëÝîåùí ìå êåöáëáßá.";
+ Text[ korean ] = "óÀ½ ´Ü¾îµéÀ» ´ë¹®ÀÚ·Î ¹Ù²Ü ÅؽºÆ®ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Sözcüklerin ilk harfleri büyük harfe dönüþtürülen metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function GROSS #*=-
+ Resource SC_OPCODE_UPPER
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wandelt alle Buchstaben eines Textes in Großbuchstaben um. : Wandelt alle Buchstaben eines Textes in Gro˜buchstaben. */
+ Text = "Wandelt alle Buchstaben eines Textes in Großbuchstaben um." ;
+ Text [ english ] = "Converts text to uppercase." ;
+ Text [ norwegian ] = "Wandelt alle Buchstaben eines Textes in Großbuchstaben um." ;
+ Text [ italian ] = "Converte il testo in maiuscolo." ;
+ Text [ portuguese_brazilian ] = "Verwandelt alle Buchstaben eines Textes in Großbuchstaben." ;
+ Text [ portuguese ] = "Converte todas as letras de um texto em maiúsculas." ;
+ Text [ finnish ] = "Wandelt alle Buchstaben eines Textes in Großbuchstaben um." ;
+ Text [ danish ] = "Konverterer alle bogstaver i en tekst til store bogstaver." ;
+ Text [ french ] = "Convertit toutes les lettres d'un texte en majuscules." ;
+ Text [ swedish ] = "Omvandlar alla bokstäver i en text till stora bokstäver." ;
+ Text [ dutch ] = "Verandert alle letters in een tekst in hoofdletters." ;
+ Text [ spanish ] = "Convierte el texto en mayúsculas." ;
+ Text [ english_us ] = "Converts text to uppercase." ;
+ Text[ chinese_simplified ] = "½«×Ö´®ÄÚµÄËùÓÐ×Öĸת»»³É´óд×Öĸ¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò âñå áóêâû òåêñòà â ïðîïèñíûå.";
+ Text[ polish ] = "Zamienia wszystkie litery tekstu na du¿e.";
+ Text[ japanese ] = "•¶Žš—ñ‚ÉŠÜ‚Ü‚ê‚é±Ù̧ÍÞ¯Ä‚ð‚·‚×‚Ä‘å•¶Žš‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¦r¦ê¤ºªº©Ò¦³¦r¥ÀÂà´«¦¨¤j¼g¦r¥À¡C";
+ Text[ arabic ] = "ÊÍæá ßá ÇáÃÍÑÝ ÇáãæÌæÏÉ Ýí äÕ Åáì ÃÍÑÝ ßÈíÑÉ.";
+ Text[ dutch ] = "Verandert alle letters in een tekst in hoofdletters.";
+ Text[ chinese_simplified ] = "½«×Ö´®ÄÚµÄËùÓÐ×Öĸת»»³É´óд×Öĸ¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé óå êåöáëáßá üëá ôá ãñÜììáôá åíüò êåéìÝíïõ.";
+ Text[ korean ] = "ÅؽºÆ®¸¦ ´ë¹®ÀÚ·Î Àüȯ";
+ Text[ turkish ] = "Metin içindeki tüm harfleri büyük harflere dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_GROSS );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Text, in dem Kleinbuchstaben durch Großbuchstaben ersetzt werden. : Der Text, in dem Kleinbuchstaben durch Gro˜buchstaben ersetzt werden. */
+ Text = "Der Text, in dem Kleinbuchstaben durch Großbuchstaben ersetzt werden." ;
+ Text [ english ] = "is the text you want converted to uppercase." ;
+ Text [ norwegian ] = "Der Text, in dem Kleinbuchstaben durch Großbuchstaben ersetzt werden." ;
+ Text [ italian ] = "è il testo che si desidera convertire in maiuscolo." ;
+ Text [ portuguese_brazilian ] = "Der Text, in dem Kleinbuchstaben durch Großbuchstaben ersetzt werden." ;
+ Text [ portuguese ] = "é o texto no qual as minúsculas serão substituídas por maiúsculas." ;
+ Text [ finnish ] = "Der Text, in dem Kleinbuchstaben durch Großbuchstaben ersetzt werden." ;
+ Text [ danish ] = "Teksten som skal konverteres." ;
+ Text [ french ] = "Le texte dont vous voulez remplacer les minuscules par des majuscules." ;
+ Text [ swedish ] = "Texten där små bokstäver skall omvandlas till stora bokstäver." ;
+ Text [ dutch ] = "De tekst waarin de kleine letters door hoofdletters worden vervangen." ;
+ Text [ spanish ] = "es el texto que se desea convertir en mayúsculas." ;
+ Text [ english_us ] = "The text in which lower case letters are to be converted to capitals." ;
+ Text[ chinese_simplified ] = "Òª½«Ð¡Ð´×Öĸת»»³É´óд×ÖĸµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, â êîòîðîì ñòðî÷íûå áóêâû çàìåíÿþòñÿ ïðîïèñíûìè.";
+ Text[ polish ] = "Tekst, w którym ma³e litery zosta³y zamienione przez du¿e.";
+ Text[ japanese ] = "‘啶Žš‚É•ÏŠ·‚·‚镶Žš—ñB";
+ Text[ chinese_traditional ] = "­n±N¤p¼g¦r¥ÀÂà´«¦¨¤j¼g¦r¥Àªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÓæÝ íÊã ÇÓÊÈÏÇá ÃÍÑÝå ÇáÕÛíÑÉ ÈÃÎÑì ßÈíÑÉ.";
+ Text[ dutch ] = "De tekst waarin de kleine letters door hoofdletters worden vervangen.";
+ Text[ chinese_simplified ] = "Òª½«Ð¡Ð´×Öĸת»»³É´óд×ÖĸµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï óôï ïðïßï èá ãßíåé áíôéêáôÜóôáóç ôùí ðåæþí ãñáììÜôùí ìå êåöáëáßá.";
+ Text[ korean ] = "¼Ò¹®ÀÚ°¡ ´ë¹®ÀÚ·Î º¯È¯µÉ ÅؽºÆ®";
+ Text[ turkish ] = "Küçük harflerin, büyük harfler ile deðiþtirildiði metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function KLEIN #*=-
+ Resource SC_OPCODE_LOWER
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Wandelt alle Buchstaben eines Textes in Kleinbuchstaben um." ;
+ Text [ english ] = "Converts all uppercase letters in a text string to lowercase." ;
+ Text [ norwegian ] = "Wandelt alle Buchstaben eines Textes in Kleinbuchstaben um." ;
+ Text [ italian ] = "Converte il testo in minuscolo." ;
+ Text [ portuguese_brazilian ] = "Verwandelt alle Buchstaben eines Textes in Kleinbuchstaben." ;
+ Text [ portuguese ] = "Converte todas as letras de um texto em minúsculas." ;
+ Text [ finnish ] = "Wandelt alle Buchstaben eines Textes in Kleinbuchstaben um." ;
+ Text [ danish ] = "Konverterer alle bogstaver i en tekst til små bogstaver." ;
+ Text [ french ] = "Convertit toutes les lettres d'un texte minuscules." ;
+ Text [ swedish ] = "Omvandlar alla bokstäver i en text till små bokstäver." ;
+ Text [ dutch ] = "Verandert alle letters in een tekst in kleine letters." ;
+ Text [ spanish ] = "Convierte todas las mayúsculas de una cadena de texto en minúsculas." ;
+ Text [ english_us ] = "Converts text to lowercase." ;
+ Text[ chinese_simplified ] = "½«ÎÄ×Ö´®ÖеÄËùÓÐ×Öĸת»»ÎªÐ¡Ð´×Öĸ¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò âñå áóêâû òåêñòà â ñòðî÷íûå.";
+ Text[ polish ] = "Zamienia wszystkie litery tekstu na ma³e.";
+ Text[ japanese ] = "•¶Žš—ñ‚ÉŠÜ‚Ü‚ê‚é±Ù̧ÍÞ¯Ä‚ð‚·‚×‚Ä¬•¶Žš‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¦r¦ê¤¤ªº©Ò¦³¦r¥ÀÂà´«¬°¤p¼g¦r¥À¡C";
+ Text[ arabic ] = "ÊÍæá ßá ÇáÃÍÑÝ ÇáãæÌæÏÉ Ýí äÕ Åáì ÃÍÑÝ ÕÛíÑÉ.";
+ Text[ dutch ] = "Verandert alle letters in een tekst in kleine letters.";
+ Text[ chinese_simplified ] = "½«ÎÄ×Ö´®ÖеÄËùÓÐ×Öĸת»»ÎªÐ¡Ð´×Öĸ¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé óå ðåæÜ üëá ôá ãñÜììáôá åíüò êåéìÝíïõ.";
+ Text[ korean ] = "ÅؽºÆ®¸¦ ¼Ò¹®ÀÚ·Î °è»ê";
+ Text[ turkish ] = "Metin içindeki tüm harfleri küçük harflere dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_KLEIN );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Text, in dem Großbuchstaben durch Kleinbuchstaben ersetzt werden. : Der Text, in dem Gro˜buchstaben durch Kleinbuchstaben ersetzt werden. */
+ Text = "Der Text, in dem Großbuchstaben durch Kleinbuchstaben ersetzt werden." ;
+ Text [ english ] = "is the text you want to convert to lowercase." ;
+ Text [ norwegian ] = "Der Text, in dem Großbuchstaben durch Kleinbuchstaben ersetzt werden." ;
+ Text [ italian ] = "è il testo che si desidera convertire in minuscolo." ;
+ Text [ portuguese_brazilian ] = "Der Text, in dem Großbuchstaben durch Kleinbuchstaben ersetzt werden." ;
+ Text [ portuguese ] = "é o texto no qual as maiúsculas serão substituídas por minúsculas." ;
+ Text [ finnish ] = "Der Text, in dem Großbuchstaben durch Kleinbuchstaben ersetzt werden." ;
+ Text [ danish ] = "Den tekst som skal konverteres til små bogstaver." ;
+ Text [ french ] = "Le texte dont vous voulez remplacer les majuscules par des minuscules." ;
+ Text [ swedish ] = "Texten där stora bokstäver ersätts med små." ;
+ Text [ dutch ] = "De tekst waarin hoofdletters worden vervangen door kleine letters." ;
+ Text [ spanish ] = "es el texto que desea convertir en minúsculas." ;
+ Text [ english_us ] = "The text in which capitals are converted to lower case letters." ;
+ Text[ chinese_simplified ] = "Ҫת»»ÎªÐ¡Ð´×ÖĸµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, â êîòîðîì ïðîïèñíûå áóêâû çàìåíÿþòñÿ ñòðî÷íûìè.";
+ Text[ polish ] = "Tekst, w którym du¿e litery s¹ zamieniane na ma³e.";
+ Text[ japanese ] = "‘啶Žš‚ª¬•¶Žš‚Å•ÏŠ·‚³‚ê‚镶Žš—ñ¡";
+ Text[ chinese_traditional ] = "­nÂà´«¬°¤p¼g¦r¥Àªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÓæÝ íÊã ÇÓÊÈÏÇá ÃÍÑÝå ÇáßÈíÑÉ ÈÃÎÑì ÕÛíÑÉ.";
+ Text[ dutch ] = "De tekst waarin hoofdletters worden vervangen door kleine letters.";
+ Text[ chinese_simplified ] = "Ҫת»»ÎªÐ¡Ð´×ÖĸµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï óôï ïðïßï èá ãßíåé áíôéêáôÜóôáóç ôùí êåöáëáßùí ãñáììÜôùí ìå ðåæÜ.";
+ Text[ korean ] = "´ë¹®ÀÚ°¡ ¼Ò¹®ÀÚ·Î º¯È¯µÉ ÅؽºÆ®";
+ Text[ turkish ] = "Büyük harflerin, küçük harflerle deðiþtirileceði metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function WERT #*=-
+ Resource SC_OPCODE_VALUE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Wandelt einen Text in eine Zahl um." ;
+ Text [ english ] = "Converts text to a number." ;
+ Text [ norwegian ] = "Wandelt einen Text in eine Zahl um." ;
+ Text [ italian ] = "Converte testo in un numero." ;
+ Text [ portuguese_brazilian ] = "Verwandelt einen Text in eine Zahl um." ;
+ Text [ portuguese ] = "Converte um texto em número." ;
+ Text [ finnish ] = "Wandelt einen Text in eine Zahl um." ;
+ Text [ danish ] = "Konverterer en tekst til et tal." ;
+ Text [ french ] = "Convertit un texte en nombre." ;
+ Text [ swedish ] = "Omvandlar en text till ett tal." ;
+ Text [ dutch ] = "Converteert een tekst naar een getal." ;
+ Text [ spanish ] = "Convierte un texto en un número." ;
+ Text [ english_us ] = "Converts text to a number." ;
+ Text[ chinese_simplified ] = "½«ÎÄ×Öת»»³ÉÊý×Ö¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò òåêñò â ÷èñëî";
+ Text[ polish ] = "Zamienia tekst na liczbê.";
+ Text[ japanese ] = "”’l‚ð•\\‚·•¶Žš—ñ‚ð”’l‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "±N¤å¦rÂà´«¦¨¼Æ¦r¡C";
+ Text[ arabic ] = "ÊÍæá äÕ Åáì ÑÞã.";
+ Text[ dutch ] = "Converteert een tekst naar een getal.";
+ Text[ chinese_simplified ] = "½«ÎÄ×Öת»»³ÉÊý×Ö¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé êåßìåíï óå áñéèìü.";
+ Text[ korean ] = "ÅؽºÆ®¸¦ ¼ö·Î º¯È¯";
+ Text[ turkish ] = "Metni sayýya dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_WERT );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Text, der in eine Zahl gewandelt wird." ;
+ Text [ english ] = "is the text enclosed in quotation marks or a reference to a cell containing the text you want to convert." ;
+ Text [ norwegian ] = "Der Text, der in eine Zahl gewandelt wird." ;
+ Text [ italian ] = "il testo che viene convertito in un numero." ;
+ Text [ portuguese_brazilian ] = "Der Text, der in eine Zahl verwandelt wird." ;
+ Text [ portuguese ] = "é o texto a converter em número." ;
+ Text [ finnish ] = "Der Text, der in eine Zahl gewandelt wird." ;
+ Text [ danish ] = "Teksten som skal konverteres til et tal." ;
+ Text [ french ] = "Représente le texte à convertir en nombre." ;
+ Text [ swedish ] = "Texten som skall omvandlas till ett tal." ;
+ Text [ dutch ] = "De tekst die naar een getal wordt geconverteerd." ;
+ Text [ spanish ] = "El texto a convertir en un número." ;
+ Text [ english_us ] = "The text to be converted to a number." ;
+ Text[ chinese_simplified ] = "Ҫת»»³ÉÒ»¸öÊý×ÖµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, ïðåîáðàçóåìûé â ÷èñëî.";
+ Text[ polish ] = "Tekst przekszta³cony na liczbê.";
+ Text[ japanese ] = "”’l‚É•ÏŠ·‚·‚镶Žš—ñB";
+ Text[ chinese_traditional ] = "­nÂà´«¦¨¤@­Ó¼Æ¦rªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáãÑÇÏ ÊÍæíáå Åáì ÑÞã.";
+ Text[ dutch ] = "De tekst die naar een getal wordt geconverteerd.";
+ Text[ chinese_simplified ] = "Ҫת»»³ÉÒ»¸öÊý×ÖµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï ðïõ èá ìåôáôñáðåß óå Ýíáí áñéèìü.";
+ Text[ korean ] = "¼ýÀÚ·Î º¯È¯µÉ ÅؽºÆ®";
+ Text[ turkish ] = "Sayýya dönüþtürülecek metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TEXT #*=-
+ Resource SC_OPCODE_TEXT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Wandelt eine Zahl gemäß einer Formatangabe in einen Text. : Wandelt eine Zahl gemõ˜ einer Formatangabe in einen Text. */
+ Text = "Wandelt eine Zahl gemäß einer Formatangabe in einen Text um." ;
+ Text [ english ] = "Converts a value to text in a specific number format." ;
+ Text [ norwegian ] = "Wandelt eine Zahl gemäß einer Formatangabe in einen Text." ;
+ Text [ italian ] = "Converte un valore in un testo conformemente a un formato indicato." ;
+ Text [ portuguese_brazilian ] = "Wandelt eine Zahl gemäß einer Formatangabe in einen Text." ;
+ Text [ portuguese ] = "Converte um número em texto de acordo com um formato dado." ;
+ Text [ finnish ] = "Wandelt eine Zahl gemäß einer Formatangabe in einen Text." ;
+ Text [ danish ] = "Konverterer et tal til en tekst i henhold til et givet format." ;
+ Text [ french ] = "Convertit une valeur en texte selon un format spécifié." ;
+ Text [ swedish ] = "Omvandlar ett tal till en text enligt en formatangivelse." ;
+ Text [ dutch ] = "Converteert een getal overeenkomstig een opgegeven notatie naar tekst." ;
+ Text [ spanish ] = "Convierte un número en texto según un formato especificado." ;
+ Text [ english_us ] = "Converts a number to text according to a given format." ;
+ Text[ chinese_simplified ] = "°´¸ø¶¨µÄ¸ñʽת»»Ò»¸öÊý×Ö³ÉÎÄ×Ö¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò ÷èñëî â òåêñò â ñîîòâåòñòâèè ñ çàäàííûì ôîðìàòîì.";
+ Text[ polish ] = "Przekszta³ca liczbê odpowiednio do podanego formatu w tekst.";
+ Text[ japanese ] = "”’l‚𑎮ݒ肵‚½•¶Žš—ñ‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ö«ü©wªº®æ¦¡Âà´«¤@­Ó¼Æ¦r¦¨¤å¦r¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞãÇð Åáì äÕ ÊÈÚÇð ááÊäÓíÞ ÇáãÚØì.";
+ Text[ dutch ] = "Converteert een getal overeenkomstig een opgegeven notatie naar tekst.";
+ Text[ chinese_simplified ] = "°´¸ø¶¨µÄ¸ñʽת»»Ò»¸öÊý×Ö³ÉÎÄ×Ö¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé Ýíáí áñéèìü óå êåßìåíï óýìöùíá ìå ôç ìïñöÞ ðïõ åðéëÝãåôáé.";
+ Text[ korean ] = "¼ýÀÚ°¡ ÁöÁ¤µÈ ¼­½Ä¿¡ µû¶ó ÅؽºÆ®·Î ÀüȯµË´Ï´Ù.";
+ Text[ turkish ] = "Sayýyý belirtilen formata göre metne dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_TEXT );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "Número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Zahlenwert, der umgewandelt wird." ;
+ Text [ english ] = "is a numeric value, a formula that evaluates to a numeric value, or a reference to a cell containing a numeric value." ;
+ Text [ norwegian ] = "Der Zahlenwert, der umgewandelt wird." ;
+ Text [ italian ] = "è un valore numerico che viene convertito." ;
+ Text [ portuguese_brazilian ] = "Der Zahlwert, der umgewandelt wird." ;
+ Text [ portuguese ] = "é um valor numérico a ser convertido." ;
+ Text [ finnish ] = "Der Zahlenwert, der umgewandelt wird." ;
+ Text [ danish ] = "Talværdien som skal konverteres." ;
+ Text [ french ] = "Représente la valeur numérique à convertir." ;
+ Text [ swedish ] = "är talvärdet som skall omvandlas." ;
+ Text [ dutch ] = "Het getal dat wordt geconverteerd." ;
+ Text [ spanish ] = "El valor numérico a convertir." ;
+ Text [ english_us ] = "The numeric value to be converted." ;
+ Text[ chinese_simplified ] = "Òª±»×ª»»µÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðåîáðàçóåìîå ÷èñëîâîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ liczbowa, która zostanie przekszta³cona.";
+ Text[ japanese ] = "•ÏŠ·‚³‚ê‚é”’lB";
+ Text[ chinese_traditional ] = "­n³QÂà´«ªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáÚÏÏíÉ ÇáãÑÇÏ ÊÍæíáåÇ.";
+ Text[ dutch ] = "Het getal dat wordt geconverteerd.";
+ Text[ chinese_simplified ] = "Òª±»×ª»»µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç áñéèìçôéêÞ ôéìÞ ðïõ ðñüêåéôáé íá ìåôáôñáðåß.";
+ Text[ korean ] = "º¯È¯µÉ ¼öÄ¡°ª";
+ Text[ turkish ] = "Dönüþtürülecek sayý deðeri.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Format" ;
+ Text [ english ] = "format_text" ;
+ Text [ norwegian ] = "Format" ;
+ Text [ italian ] = "formato" ;
+ Text [ portuguese_brazilian ] = "Format" ;
+ Text [ portuguese ] = "Formato" ;
+ Text [ finnish ] = "Format" ;
+ Text [ danish ] = "Format" ;
+ Text [ french ] = "Format" ;
+ Text [ swedish ] = "format" ;
+ Text [ dutch ] = "Notatie" ;
+ Text [ spanish ] = "formato" ;
+ Text [ english_us ] = "Format" ;
+ Text[ chinese_simplified ] = "Format";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ polish ] = "Format";
+ Text[ japanese ] = "‘Ž®";
+ Text[ chinese_traditional ] = "Format";
+ Text[ arabic ] = "Format_text";
+ Text[ dutch ] = "Notatie";
+ Text[ chinese_simplified ] = "Format";
+ Text[ greek ] = "Format";
+ Text[ korean ] = "¼­½Ä";
+ Text[ turkish ] = "Format";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Der Text, der das Format beschreibt." ;
+ Text [ english ] = " is a number format in text form from the Number tab in the Cell Properties dialog box." ;
+ Text [ norwegian ] = "Der Text, der das Format beschreibt." ;
+ Text [ italian ] = "Il testo che descrive il formato." ;
+ Text [ portuguese_brazilian ] = "Der Text, der das Format beschreibt." ;
+ Text [ portuguese ] = "é o texto que descreve o formato." ;
+ Text [ finnish ] = "Der Text, der das Format beschreibt." ;
+ Text [ danish ] = "Den tekst som beskriver formatet." ;
+ Text [ french ] = "Le texte qui décrit le format." ;
+ Text [ swedish ] = "Texten som beskriver formatet." ;
+ Text [ dutch ] = "De tekst die de notatie weergeeft." ;
+ Text [ spanish ] = "es un número de formato entre comillas del cuadro de diálogo Número." ;
+ Text [ english_us ] = "The text that describes the format." ;
+ Text[ chinese_simplified ] = "ҪѡÓõÄÓÃÎÄ×Ö±í´ïµÄ¸ñʽ¡£";
+ Text[ russian ] = "×èñëîâîé ôîðìàò â òåêñòîâîé ôîðìå.";
+ Text[ polish ] = "Tekst, który opisuje format.";
+ Text[ japanese ] = "‘Ž®‚ð•\\‚·•¶Žš—ñB";
+ Text[ chinese_traditional ] = "­n¿ï¥Îªº¥Î¤å¦rªí¹Fªº®æ¦¡¡C";
+ Text[ arabic ] = "äÕ íæÕÝ ÇáÊäÓíÞ.";
+ Text[ dutch ] = "De tekst die de notatie weergeeft.";
+ Text[ chinese_simplified ] = "ҪѡÓõÄÓÃÎÄ×Ö±í´ïµÄ¸ñʽ¡£";
+ Text[ greek ] = "Ôï êåßìåíï ðïõ ðåñéãñÜöåé ôç ìïñöÞ";
+ Text[ korean ] = "¼­½ÄÈ­µÈ ÅؽºÆ®";
+ Text[ turkish ] = "Formatý tanýmlayan metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function T #*=-
+ Resource SC_OPCODE_T
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Wandelt einen Wert in einen Text." ;
+ Text [ english ] = "Returns the text referred to by value." ;
+ Text [ norwegian ] = "Wandelt einen Wert in einen Text." ;
+ Text [ italian ] = "Converte un numero in una stringa vuota." ;
+ Text [ portuguese_brazilian ] = "Wandelt einen Wert in einen Text." ;
+ Text [ portuguese ] = "Converte um valor em texto." ;
+ Text [ finnish ] = "Wandelt einen Wert in einen Text." ;
+ Text [ danish ] = "Konverterer en værdi til en tekst." ;
+ Text [ french ] = "Convertit une valeur en texte." ;
+ Text [ swedish ] = "Omvandlar ett värde till en text." ;
+ Text [ dutch ] = "Converteert een waarde naar een tekst." ;
+ Text [ spanish ] = "Convierte un valor en un texto." ;
+ Text [ english_us ] = "Converts a value into text." ;
+ Text[ chinese_simplified ] = "ת»»Ò»¸öÊýÖµ³ÉÎÄ×Ö¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò çíà÷åíèå â òåêñò.";
+ Text[ polish ] = "Zamienia wartoϾ w tekst.";
+ Text[ japanese ] = "’l‚𕶎š—ñ‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "Âà´«¤@­Ó¼Æ­È¦¨¤å¦r¡C";
+ Text[ arabic ] = "ÊÍæá ÞíãÉ Åáì äÕ.";
+ Text[ dutch ] = "Converteert een waarde naar een tekst.";
+ Text[ chinese_simplified ] = "ת»»Ò»¸öÊýÖµ³ÉÎÄ×Ö¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé ìéá ôéìÞ óå êåßìåíï.";
+ Text[ korean ] = "°ªÀ» ÅؽºÆ®·Î º¯È¯";
+ Text[ turkish ] = "Deðeri metne dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_T );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "Value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "’l";
+ Text[ chinese_traditional ] = "Value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "Value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Wert, der umgewandelt wird." ;
+ Text [ english ] = "is the value you want to test." ;
+ Text [ norwegian ] = "Der Wert, der umgewandelt wird." ;
+ Text [ italian ] = "è il valore che si desidera convertire.." ;
+ Text [ portuguese_brazilian ] = "Der Wert, der umgewandelt wird." ;
+ Text [ portuguese ] = "é o valor a converter." ;
+ Text [ finnish ] = "Der Wert, der umgewandelt wird." ;
+ Text [ danish ] = "Den værdi som skal konverteres." ;
+ Text [ french ] = "La valeur à convertir." ;
+ Text [ swedish ] = "Värdet som omvandlas." ;
+ Text [ dutch ] = "De waarde die wordt geconverteerd." ;
+ Text [ spanish ] = "es el valor que desea convertir." ;
+ Text [ english_us ] = "The value to be converted." ;
+ Text[ chinese_simplified ] = "ÐèҪת»»µÄÊýÖµ¡£";
+ Text[ russian ] = "Ïðåîáðàçóåìîå çíà÷åíèå.";
+ Text[ polish ] = "Wartoœæ, która ma zostaæ przekszta³cona.";
+ Text[ japanese ] = "•ÏŠ·‚·‚é’lB";
+ Text[ chinese_traditional ] = "»Ý­nÂà´«ªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÊÍæíáåÇ.";
+ Text[ dutch ] = "De waarde die wordt geconverteerd.";
+ Text[ chinese_simplified ] = "ÐèҪת»»µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ðïõ ðñüêåéôáé íá ìåôáôñáðåß.";
+ Text[ korean ] = "º¯È¯µÈ °ª";
+ Text[ turkish ] = "Dönüþtürülecek deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function ERSETZEN #*=-
+ Resource SC_OPCODE_REPLACE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Ersetzt einen Teil eines Textes durch einen anderen Text." ;
+ Text [ english ] = "Replaces part of a text string with a different text string." ;
+ Text [ norwegian ] = "Ersetzt einen Teil eines Textes durch einen anderen Text." ;
+ Text [ italian ] = "Sostituisce parte di una stringa di testo con un'altra." ;
+ Text [ portuguese_brazilian ] = "Ersetzt einen Teil eines Textes durch einen anderen Text." ;
+ Text [ portuguese ] = "Substitui caracteres numa cadeia de texto por outra diferente." ;
+ Text [ finnish ] = "Ersetzt einen Teil eines Textes durch einen anderen Text." ;
+ Text [ danish ] = "Erstatter en del af en tekst med en anden tekst." ;
+ Text [ french ] = "Remplace une chaîne de texte par une autre." ;
+ Text [ swedish ] = "Ersätter en del av en text med en annan text." ;
+ Text [ dutch ] = "Vervangt een deel van een tekst door een andere tekst" ;
+ Text [ spanish ] = "Reemplaza caracteres dentro de una cadena de texto por una cadena de texto diferente." ;
+ Text [ english_us ] = "Replaces characters within a text string with a different text string." ;
+ Text[ chinese_simplified ] = "ÓÃijһ×Ö´®Ìæ»»ÆäËü×Ö´®ÖеIJ¿·ÖÄÚÈÝ¡£";
+ Text[ russian ] = "Çàìåíÿåò ñèìâîëû âíóòðè òåêñòà ñèìâîëàìè äðóãîãî òåêñòà.";
+ Text[ polish ] = "Zastêpuje czêœæ tekstu innym tekstem.";
+ Text[ japanese ] = "•¶Žš—ñ’†‚ÌŽw’肳‚ꂽ”‚Ì•¶Žš‚𑼂̕¶Žš‚É’u‚«Š·‚¦‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥Î¬Y¤@¦r¦ê´À´«¨ä¥¦¦r¦ê¤¤ªº³¡¥÷¤º®e¡C";
+ Text[ arabic ] = "ÊÓÊÈÏá ÌÒÁ ãä äÕ ãÇ ÈäÕ ÃÎÑ.";
+ Text[ dutch ] = "Vervangt een deel van een tekst door een andere tekst";
+ Text[ chinese_simplified ] = "ÓÃijһ×Ö´®Ìæ»»ÆäËü×Ö´®ÖеIJ¿·ÖÄÚÈÝ¡£";
+ Text[ greek ] = "ÁíôéêáèéóôÜ Ýíá ôìÞìá ôïõ êåéìÝíïõ ìå Ýíá Üëëï êåßìåíï.";
+ Text[ korean ] = "´Ù¸¥ ÅؽºÆ® ¹®ÀÚ¿­°ú ÅؽºÆ® ¹®ÀÚ¿­ »çÀÌÀÇ ¹®ÀÚ¸¦ ¹Ýȯ.";
+ Text[ turkish ] = "Metnin bir bölümünü baþka bir metin ile deðiþtirir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_ERSETZEN );
+ 4; 0; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "old_text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto_antigo" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Gammel_tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "Text" ;
+ Text[ chinese_simplified ] = "old_text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "old_text";
+ Text[ arabic ] = "Old_text";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "old_text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Text, in dem ein Teil ersetzt wird." ;
+ Text [ english ] = "is text in which you want to replace some characters." ;
+ Text [ norwegian ] = "Der Text, in dem ein Teil ersetzt wird." ;
+ Text [ italian ] = "è il testo nel quale si desidera sostituire alcuni caratteri." ;
+ Text [ portuguese_brazilian ] = "Der Text, in dem ein Teil ersetzt wird." ;
+ Text [ portuguese ] = "é o texto no qual se deseja substituir alguns caracteres." ;
+ Text [ finnish ] = "Der Text, in dem ein Teil ersetzt wird." ;
+ Text [ danish ] = "Den tekst hvor der skal udskiftes et antal tegn." ;
+ Text [ french ] = "Le texte dont vous voulez remplacer certains caractères." ;
+ Text [ swedish ] = "Texten där en del ersätts." ;
+ Text [ dutch ] = "De tekst waarvan een deel wordt vervangen" ;
+ Text [ spanish ] = "es el texto en el que desea reemplazar el número específico de caracteres." ;
+ Text [ english_us ] = "The text in which some characters are to be replaced." ;
+ Text[ chinese_simplified ] = "ÐèÒª½øÐв¿·Ö×Ö·ûÌæ»»µÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, â êîòîðîì ñëåäóåò ïðîèçâåñòè çàìåíó.";
+ Text[ polish ] = "Tekst, którego czêœæ zostanie zast¹piona.";
+ Text[ japanese ] = "‚»‚̈ꕔ‚ð’u‚«Š·‚¦‚镶Žš—ñB";
+ Text[ chinese_traditional ] = "»Ý­n¶i¦æ³¡¥÷¦r¤¸´À´«ªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáãÑÇÏ ÊÛííÑ ÈÚÖ ÃÍÑÝå.";
+ Text[ dutch ] = "De tekst waarvan een deel wordt vervangen";
+ Text[ chinese_simplified ] = "ÐèÒª½øÐв¿·Ö×Ö·ûÌæ»»µÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï, óôï ïðïßï èá áíôéêáôáóôáèåß Ýíá ôìÞìá.";
+ Text[ korean ] = "ÀϺΰ¡ ´ëüµÉ ÅؽºÆ®ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Bir bölümü deðiþtirilen metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Position" ;
+ Text [ english ] = "start_num" ;
+ Text [ norwegian ] = "Position" ;
+ Text [ italian ] = "inizio" ;
+ Text [ portuguese_brazilian ] = "Position" ;
+ Text [ portuguese ] = "Núm_inicial" ;
+ Text [ finnish ] = "Position" ;
+ Text [ danish ] = "Start_ved" ;
+ Text [ french ] = "Position" ;
+ Text [ swedish ] = "position" ;
+ Text [ dutch ] = "Positie" ;
+ Text [ spanish ] = "núm_inicial" ;
+ Text [ english_us ] = "position" ;
+ Text[ chinese_simplified ] = "start_num";
+ Text[ russian ] = "Ïîçèöèÿ";
+ Text[ polish ] = "liczba_pocz¹tkowa";
+ Text[ japanese ] = "ŠJŽnˆÊ’u";
+ Text[ chinese_traditional ] = "start_num";
+ Text[ arabic ] = "Start_num";
+ Text[ dutch ] = "Positie";
+ Text[ chinese_simplified ] = "start_num";
+ Text[ greek ] = "start_num";
+ Text[ korean ] = "À§Ä¡";
+ Text[ turkish ] = "Konum";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Zeichenposition, ab der ersetzt wird." ;
+ Text [ english ] = "is the position of the character in old_text that you want to replace with new_text." ;
+ Text [ norwegian ] = "Die Zeichenposition, ab der ersetzt wird." ;
+ Text [ italian ] = "è la posizione del carattere in testo_prec che si desidera sostituire con nuovo_testo." ;
+ Text [ portuguese_brazilian ] = "Die Zeichenposition, ab der ersetzt wird." ;
+ Text [ portuguese ] = "é a posição do carácter em texto_antigo que deseja substituir por novo_texto." ;
+ Text [ finnish ] = "Die Zeichenposition, ab der ersetzt wird." ;
+ Text [ danish ] = "Den tegnposition hvorfra der skal begyndes med at erstatte." ;
+ Text [ french ] = "La position du caractère à partir duquel le remplacement doit être effectué." ;
+ Text [ swedish ] = "Teckenpositionen där ersättningen skall börja." ;
+ Text [ dutch ] = "De positie van het teken, vanaf waar wordt vervangen." ;
+ Text [ spanish ] = "es la posición del carácter en el argumento texto_original en la cual debe comenzar el reemplazo con el argumento texto_nuevo." ;
+ Text [ english_us ] = "The character position from which text is to be replaced." ;
+ Text[ chinese_simplified ] = "Ìæ»»µÄ×Ö·ûµÄÆðʼλÖá£";
+ Text[ russian ] = "Ïîçèöèÿ ñèìâîëîâ, íà÷èíàÿ ñ êîòîðîé ñëåäóåò ïðîèçâåñòè çàìåíó.";
+ Text[ polish ] = "Pozycja w tekœcie, od której stary_tekst zostanie zamieniony na nowy_tekst.";
+ Text[ japanese ] = "’uŠ·•¶Žš—ñ‚Æ’u‚«Š·‚¦‚é擪•¶Žš‚̈ʒu(•¶Žš”Ô†)B";
+ Text[ chinese_traditional ] = "´À´«ªº¦r¤¸ªº°_©l¦ì¸m¡C";
+ Text[ arabic ] = "ãæÖÚ ÇáÍÑÝ ÇáÐí ÓæÝ íÊã ÇáÇÓÊÈÏÇá ÈÏÇíÉ ãäå.";
+ Text[ dutch ] = "De positie van het teken, vanaf waar wordt vervangen.";
+ Text[ chinese_simplified ] = "Ìæ»»µÄ×Ö·ûµÄÆðʼλÖá£";
+ Text[ greek ] = "Ç èÝóç ôïõ ÷áñáêôÞñá, áðü ôçí ïðïßá êáé ìåôÜ èá ãßíåé ç áíôéêáôÜóôáóç.";
+ Text[ korean ] = "´ëÄ¡µÉ ÅؽºÆ®·ÎºÎÅÍ ¹®ÀÚÀÇ À§Ä¡";
+ Text[ turkish ] = "Deðiþtirmenin baþlatýlacaðý karakter konumu.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Länge : Lõnge */
+ Text = "Länge" ;
+ Text [ english ] = "num_chars" ;
+ Text [ norwegian ] = "Länge" ;
+ Text [ italian ] = "num_caratt" ;
+ Text [ portuguese_brazilian ] = "Länge" ;
+ Text [ portuguese ] = "Núm_carácter" ;
+ Text [ finnish ] = "Länge" ;
+ Text [ danish ] = "Antal_tegn" ;
+ Text [ french ] = "Longueur" ;
+ Text [ swedish ] = "längd" ;
+ Text [ dutch ] = "Lengte" ;
+ Text [ spanish ] = "núm_de_caracteres" ;
+ Text [ english_us ] = "length" ;
+ Text[ chinese_simplified ] = "num_chars";
+ Text[ russian ] = "Äëèíà";
+ Text[ polish ] = "liczba_znaków";
+ Text[ japanese ] = "•¶Žš”";
+ Text[ chinese_traditional ] = "num_chars";
+ Text[ arabic ] = "Num_chars";
+ Text[ dutch ] = "Lengte";
+ Text[ chinese_simplified ] = "num_chars";
+ Text[ greek ] = "ÌÞêïò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Uzunluk";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Die Anzahl der Zeichen, die ersetzt werden." ;
+ Text [ english ] = "is the number of characters in old_text that you want to replace with new_text." ;
+ Text [ norwegian ] = "Die Anzahl der Zeichen, die ersetzt werden." ;
+ Text [ italian ] = "è il numero di caratteri in testo_prec che si desidera sostituire con nuovo_testo." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Zeichen, die ersetzt werden." ;
+ Text [ portuguese ] = "é o número de caracteres em texto_antigo que deseja substituir por novo_texto." ;
+ Text [ finnish ] = "Die Anzahl der Zeichen, die ersetzt werden." ;
+ Text [ danish ] = "Antal tegn som skal erstattes." ;
+ Text [ french ] = "Le nombre de caractères à remplacer." ;
+ Text [ swedish ] = "Antalet tecken som ersätts." ;
+ Text [ dutch ] = "Het aantal tekens dat wordt vervangen." ;
+ Text [ spanish ] = "es el número de caracteres en el argumento texto_original, comenzando por núm_inicial, que desea reemplazar con el argumento texto_nuevo." ;
+ Text [ english_us ] = "The number of characters to be replaced." ;
+ Text[ chinese_simplified ] = "¸üÌæ×Ö·ûµÄÊýÄ¿¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ñèìâîëîâ, êîòîðûå òðåáóåòñÿ çàìåíèòü.";
+ Text[ polish ] = "Liczba znaków, które maj¹ zostaæ zast¹pione.";
+ Text[ japanese ] = "’uŠ·•¶Žš—ñ‚Æ’u‚«Š·‚¦‚镶Žš—ñ‚Ì’†‚Ì•¶Žš”B";
+ Text[ chinese_traditional ] = "§ó´À¦r¤¸ªº¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÍÑÝ ÇáÊí ÊÑíÏ ÇÓÊÈÏÇáåÇ.";
+ Text[ dutch ] = "Het aantal tekens dat wordt vervangen.";
+ Text[ chinese_simplified ] = "¸üÌæ×Ö·ûµÄÊýÄ¿¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí ÷áñáêôÞñùí ðïõ èá áíôéêáôáóôáèïýí.";
+ Text[ korean ] = "´ëüµÉ ¹®ÀÚÀÇ °³¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Deðiþtirilecek karakter sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Textersatz" ;
+ Text [ english ] = "new_text" ;
+ Text [ norwegian ] = "Textersatz" ;
+ Text [ italian ] = "nuovo_testo" ;
+ Text [ portuguese_brazilian ] = "Textersatz" ;
+ Text [ portuguese ] = "Novo_texto" ;
+ Text [ finnish ] = "Textersatz" ;
+ Text [ danish ] = "Ny_tekst" ;
+ Text [ french ] = "Nouveau_texte" ;
+ Text [ swedish ] = "textersättning" ;
+ Text [ dutch ] = "Nieuwe tekst" ;
+ Text [ spanish ] = "texto_nuevo" ;
+ Text [ english_us ] = "new text" ;
+ Text[ chinese_simplified ] = "new_text";
+ Text[ russian ] = "Íîâû_òåêñò";
+ Text[ polish ] = "Nowy_tekst";
+ Text[ japanese ] = "’uŠ·•¶Žš—ñ";
+ Text[ chinese_traditional ] = "new_text";
+ Text[ arabic ] = "New_text";
+ Text[ dutch ] = "Nieuwe tekst";
+ Text[ chinese_simplified ] = "new_text";
+ Text[ greek ] = "ÍÝï_êåßìåíï";
+ Text[ korean ] = "»õ ÅؽºÆ®";
+ Text[ turkish ] = "Yeni metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Der Text, der eingesetzt wird." ;
+ Text [ english ] = "is the text that will replace characters in old_text." ;
+ Text [ norwegian ] = "Der Text, der eingesetzt wird." ;
+ Text [ italian ] = "è il testo che sostituirà i caratteri in testo_prec." ;
+ Text [ portuguese_brazilian ] = "Der Text, der eingesetzt wird." ;
+ Text [ portuguese ] = "é o texto que substitui os caracteres do texto_antigo." ;
+ Text [ finnish ] = "Der Text, der eingesetzt wird." ;
+ Text [ danish ] = "Den tekst som skal erstatte den gamle tekst." ;
+ Text [ french ] = "Le texte à utiliser pour le remplacement." ;
+ Text [ swedish ] = "Texten som sätts in." ;
+ Text [ dutch ] = "Die tekst die wordt ingevoegd." ;
+ Text [ spanish ] = "es el texto con el que reemplazará los caracteres en el argumento texto_original." ;
+ Text [ english_us ] = "The text to be inserted." ;
+ Text[ chinese_simplified ] = "²åÈëµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, êîòîðûì çàìåíÿþòñÿ ñèìâîëû ñòàðîãî òåêñòà.";
+ Text[ polish ] = "Tekst, który zostanie wstawiony.";
+ Text[ japanese ] = "•¶Žš—ñ‚̈ꕔ‚Æ’u‚«Š·‚¦‚镶Žš—ñB";
+ Text[ chinese_traditional ] = "´¡¤Jªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáÐí ÓæÝ íÈÏá ÇáÃÍÑÝ Ýí old_text.";
+ Text[ dutch ] = "Die tekst die wordt ingevoegd.";
+ Text[ chinese_simplified ] = "²åÈëµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï ðïõ èá åéóá÷èåß.";
+ Text[ korean ] = "»ðÀ﵃ ÅؽºÆ®";
+ Text[ turkish ] = "Eklenecek metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function FEST #*=-
+ Resource SC_OPCODE_FIXED
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Formatiert eine Zahl mit einer festen Anzahl von Nachkommastellen und Tausenderpunkt." ;
+ Text [ english ] = "Rounds a number to the specified number of decimals, formats the number in decimal format using a period and commas, and returns the result as text." ;
+ Text [ norwegian ] = "Formatiert eine Zahl mit einer festen Anzahl von Nachkommastellen und Tausenderpunkt." ;
+ Text [ italian ] = "Formatta un numero al numero specificato di decimali con i separatori delle migliaia" ;
+ Text [ portuguese_brazilian ] = "Formatiert eine Zahl mit einer festen Anzahl von Nachkommastellen und Tausenderpunkt." ;
+ Text [ portuguese ] = "Formata um número como texto com um número fixo de casas decimais." ;
+ Text [ finnish ] = "Formatiert eine Zahl mit einer festen Anzahl von Nachkommastellen und Tausenderpunkt." ;
+ Text [ danish ] = "Formaterer en tekst med et fast antal decimaler og tusindtalsseparator." ;
+ Text [ french ] = "Formate un nombre avec un nombre spécifié de décimales et séparateurs de milliers (espaces)." ;
+ Text [ swedish ] = "Formaterar ett tal med ett fast antal decimaler och tusentalsavgränsare." ;
+ Text [ dutch ] = "Geeft een getal weer met een vast aantal plaatsen achter de komma en scheidingsteken voor duizendtallen." ;
+ Text [ spanish ] = "Da formato de texto a un número con una cantidad determinada de decimales." ;
+ Text [ english_us ] = "Formats a number with a fixed number of places after the decimal point and with thousand delimiters." ;
+ Text[ chinese_simplified ] = "ÓÃСÊýµãλÊýºÍǧλµãÀ´¸ñʽ»¯Ò»¸öÊý×Ö¡£";
+ Text[ russian ] = "Ôîðìàòèðóåò ÷èñëî ñ ôèêñèðîâàííûì êîëè÷åñòâîì ýëåìåíòîâ äåñÿòè÷íûõ ðàçðÿäîâ.";
+ Text[ polish ] = "Formatuje liczbê jako tekst, przyjmuj¹c podan¹ liczbê miejsc po przecinku.";
+ Text[ japanese ] = "”’l‚ðŽlŽÌŒÜ“ü‚µAËßصÄÞ(.)‚ƶÝÏ(,)‚ðŽg‚Á‚Ä‘Ž®Ý’肵‚½•¶Žš—ñ‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥Î¤p¼ÆÂI¦ì¼Æ©M¤d¦ìÂI¨Ó®æ¦¡¤Æ¤@­Ó¼Æ¦r¡C";
+ Text[ arabic ] = "ÊäÓÞ ÑÞã ÈÚÏÏ ËÇÈÊ ãä ÇáãäÇÒá ÇáÚÔÑíÉ.";
+ Text[ dutch ] = "Geeft een getal weer met een vast aantal plaatsen achter de komma en scheidingsteken voor duizendtallen.";
+ Text[ chinese_simplified ] = "ÓÃСÊýµãλÊýºÍǧλµãÀ´¸ñʽ»¯Ò»¸öÊý×Ö¡£";
+ Text[ greek ] = "Ìïñöïðïéåß Ýíáí áñéèìü ìå óôáèåñü ðëÞèïò äåêáäéêþí øçößùí êáé äéá÷ùñéóôéêü ÷éëßùí.";
+ Text[ korean ] = "°íÁ¤ °³¼öÀÇ ¼Ò¼öÀÌÇÏ ÀÚ¸®¿Í õÀÚ¸® Á¡À» Áö´Ñ ¼ö¸¦ ¼­½Ä¼³Á¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Sabit sayýda ondalýk haneli ve binler hanesi ayýrýcýlý bir sayýyý formatlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_FEST );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ norwegian ] = "Zahl" ;
+ Text [ italian ] = "num" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ portuguese ] = "Número" ;
+ Text [ finnish ] = "Zahl" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "tal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "Number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Number";
+ Text[ arabic ] = "Number";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "Number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Die Zahl, die formatiert wird." ;
+ Text [ english ] = "is the number you want to round and convert to text." ;
+ Text [ norwegian ] = "Die Zahl, die formatiert wird." ;
+ Text [ italian ] = "è il numero che si desidera convertire." ;
+ Text [ portuguese_brazilian ] = "Die Zahl, die formatiert wird." ;
+ Text [ portuguese ] = "é o número que deseja formatar." ;
+ Text [ finnish ] = "Die Zahl, die formatiert wird." ;
+ Text [ danish ] = "Det tal som skal formateres." ;
+ Text [ french ] = "Le nombre à formater." ;
+ Text [ swedish ] = "Talet som formateras." ;
+ Text [ dutch ] = "Het getal dat wordt geconverteerd." ;
+ Text [ spanish ] = "es el número que desea redondear y convertir en texto." ;
+ Text [ english_us ] = "The number to be formatted." ;
+ Text[ chinese_simplified ] = "Òª¸ñʽ»¯µÄÊý×Ö¡£";
+ Text[ russian ] = "Ôîðìàòèðóåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba, która ma zostaæ sformatowana.";
+ Text[ japanese ] = "•ÏŠ·‚·‚é”’lB";
+ Text[ chinese_traditional ] = "­n®æ¦¡¤Æªº¼Æ¦r¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊäÓíÞå.";
+ Text[ dutch ] = "Het getal dat wordt geconverteerd.";
+ Text[ chinese_simplified ] = "Òª¸ñʽ»¯µÄÊý×Ö¡£";
+ Text[ greek ] = "Ï áñéèìüò ðïõ èá ìïñöïðïéçèåß.";
+ Text[ korean ] = "¼­½Ä¼³Á¤µÉ ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Formatlacak sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "D" ;
+ Text [ english ] = "decimals" ;
+ Text [ norwegian ] = "D" ;
+ Text [ italian ] = "decimali" ;
+ Text [ portuguese_brazilian ] = "D" ;
+ Text [ portuguese ] = "Decimais" ;
+ Text [ finnish ] = "D" ;
+ Text [ danish ] = "Decimaler" ;
+ Text [ french ] = "D" ;
+ Text [ swedish ] = "decimaler" ;
+ Text [ dutch ] = "D" ;
+ Text [ spanish ] = "decimales" ;
+ Text [ english_us ] = "decimals" ;
+ Text[ chinese_simplified ] = "decimals";
+ Text[ russian ] = "Äåñ_öèôðû";
+ Text[ polish ] = "Dziesiêtne";
+ Text[ japanese ] = "Œ…”";
+ Text[ language_user1 ] = " ";
+ Text[ chinese_traditional ] = "decimals";
+ Text[ arabic ] = "Decimals";
+ Text[ dutch ] = "D";
+ Text[ chinese_simplified ] = "decimals";
+ Text[ greek ] = "ÄåêáäéêÜ";
+ Text[ korean ] = "¼Ò¼ö";
+ Text[ turkish ] = "Ondalýk haneler";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Dezimalstellen. Anzahl des festen Dezimalstellen, die dargestellt werden." ;
+ Text [ english ] = "is the number of digits to the right of the decimal point." ;
+ Text [ norwegian ] = "Dezimalstellen. Anzahl des festen Dezimalstellen, die dargestellt werden." ;
+ Text [ italian ] = "è il numero di cifre a destra della virgola decimale." ;
+ Text [ portuguese_brazilian ] = "Dezimalstellen. Anzahl des festen Dezimalstellen, die dargestellt werden." ;
+ Text [ portuguese ] = "é o número de dígitos fixado à direita da vírgula decimal." ;
+ Text [ finnish ] = "Dezimalstellen. Anzahl des festen Dezimalstellen, die dargestellt werden." ;
+ Text [ danish ] = "Decimaler. Antallet af cifre til højre for decimaltegnet." ;
+ Text [ french ] = "Décimales. Le nombre de chiffres après la virgule." ;
+ Text [ swedish ] = "Decimaler. Antalet fasta decimaler som visas." ;
+ Text [ dutch ] = "Decimalen. Aantal plaatsen achter de decimale komma die worden weergegeven." ;
+ Text [ spanish ] = "es el número de dígitos a la derecha del separador decimal." ;
+ Text [ english_us ] = "Decimal places. The number of fixed decimal places that are to be displayed." ;
+ Text[ chinese_simplified ] = "Ó¦ÏÔʾµÄСÊýµãλÊý¡£";
+ Text[ russian ] = "×èñëî ôèêñèðîâàííûõ öèôð ñïðàâà îò äåñÿòè÷íîé çàïÿòîé.";
+ Text[ polish ] = "Liczba sta³ych miejsc dziesiêtnych.";
+ Text[ japanese ] = "¬”“_ˆÈ‰º‚ÌŒ…”B";
+ Text[ chinese_traditional ] = "­nÅã¥Üªº¤p¼ÆÂI¦ì¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÑÞÇã Åáì íãíä ÇáÝÇÕáÉ ÇáÚÔÑíÉ.";
+ Text[ dutch ] = "Decimalen. Aantal plaatsen achter de decimale komma die worden weergegeven.";
+ Text[ chinese_simplified ] = "Ó¦ÏÔʾµÄСÊýµãλÊý¡£";
+ Text[ greek ] = "ÄåêáäéêÜ øçößá. Áñéèìüò ôùí óôáèåñþí äåêáäéêþí øçößùí ðïõ åìöáíßæïíôáé.";
+ Text[ korean ] = "¼Ò¼ö ÀÚ¸®. ³ªÅ¸³¾ °íÁ¤ ¼Ò¼öÀÚ¸®ÀÇ ¼öÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ondalýk haneler. Görüntülenecek sabit ondalýk hane sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "T" ;
+ Text [ english ] = "no_commas" ;
+ Text [ norwegian ] = "T" ;
+ Text [ italian ] = "Nessun_separatore" ;
+ Text [ portuguese_brazilian ] = "T" ;
+ Text [ portuguese ] = "Sem_vírgulas" ;
+ Text [ finnish ] = "T" ;
+ Text [ danish ] = "T" ;
+ Text [ french ] = "S" ;
+ Text [ swedish ] = "tusentalsavgränsare" ;
+ Text [ dutch ] = "D" ;
+ Text [ spanish ] = "no_separar_millares" ;
+ Text [ english_us ] = "T" ;
+ Text[ chinese_simplified ] = "T";
+ Text[ russian ] = "Ïðîáåë";
+ Text[ polish ] = "bez_przecinka";
+ Text[ japanese ] = "T";
+ Text[ chinese_traditional ] = "T";
+ Text[ arabic ] = "T";
+ Text[ dutch ] = "D";
+ Text[ chinese_simplified ] = "T";
+ Text[ greek ] = "Ô";
+ Text[ korean ] = "T";
+ Text[ turkish ] = "Binler hanesi ayýrýcýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Tausenderpunkte. Gibt an, ob Tausenderpunkte gesetzt werden." ;
+ Text [ english ] = "is a logical value that, if TRUE, prevents FIXED from including commas in the returned text." ;
+ Text [ norwegian ] = "Tausenderpunkte. Gibt an, ob Tausenderpunkte gesetzt werden." ;
+ Text [ italian ] = "è una valore logico che, se VERO, non consente a FISSO di includere i separatori delle migliaia nel testo restituito." ;
+ Text [ portuguese_brazilian ] = "Tausenderpunkte. Gibt an, ob Tausenderpunkte gesetzt werden." ;
+ Text [ portuguese ] = "é um valor lógico que determina se o número terá vírgulas ou não." ;
+ Text [ finnish ] = "Tausenderpunkte. Gibt an, ob Tausenderpunkte gesetzt werden." ;
+ Text [ danish ] = "Tusindtalsseparator. Angiver, om en tusindtalsseparator skal sættes." ;
+ Text [ french ] = "Séparateur de milliers. Indique si des espaces doivent être insérés ou non." ;
+ Text [ swedish ] = "anger om tusentalsavgränsare skall användas." ;
+ Text [ dutch ] = "Duizendtallen. Geeft aan of punten als scheidingsteken voor duizendtallen moeten worden weergegeven." ;
+ Text [ spanish ] = "es un valor lógico que especifica si el signo de separador de millares debe ser mostrado en número o no." ;
+ Text [ english_us ] = "Thousand delimiter. Defines if thousand delimitersare to be set." ;
+ Text[ chinese_simplified ] = "ǧλµã¡£¸ø¶¨ÊÇ·ñʹÓÃǧλµã¡£";
+ Text[ russian ] = "Îïðåäåëÿåò, äîëæåí ëè ïîÿâèòüñÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ ãðóïï ðàçðÿäîâ.";
+ Text[ polish ] = "Znak tysiêczny. Okreœla, czy znak tysiêczny ma zostaæ wstawiony.";
+ Text[ japanese ] = "ŒvŽZŒ‹‰Ê‚ð¶ÝÏ(,)‚ÅŒ…‹æØ‚è‚·‚é‚©‚Ç‚¤‚©‚ðA˜_—’l‚ÅŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¤d¦ìÂI¡C«ü©w¬O§_¨Ï¥Î¤d¦ìÂI¡C";
+ Text[ arabic ] = "ÞíãÉ ãäØÞíÉ ÊÍÏÏ ãÇ ÅÐÇ ßÇä ãä ÇáÖÑæÑí æÖÚ ÝæÇÕá Èíä ÇáÃÑÞÇã.";
+ Text[ dutch ] = "Duizendtallen. Geeft aan of punten als scheidingsteken voor duizendtallen moeten worden weergegeven.";
+ Text[ chinese_simplified ] = "ǧλµã¡£¸ø¶¨ÊÇ·ñʹÓÃǧλµã¡£";
+ Text[ greek ] = "Äéá÷ùñéóôéêü ÷éëßùí. Ïñßæåé áí åìöáíßæïíôáé äéá÷ùñéóôéêÜ ÷éëßùí.";
+ Text[ korean ] = "õÀÚ¸® Á¡. õÀÚ¸® Á¡À» ÂïÀ»ÁöÀÇ ¿©ºÎ¸¦ ÁöÁ¤ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Binler hanesi ayýrýcýsý. Binler hanesi ayýrýcýlarý kullanýlýp kullanýlmayacaðýný belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function LÄNGE #*=-
+ Resource SC_OPCODE_LEN
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Berechnet die Länge eines Textes. : Berechnet die Lõnge eines Textes. */
+ Text = "Berechnet die Länge eines Textes." ;
+ Text [ english ] = "Returns the number of characters in a text string." ;
+ Text [ norwegian ] = "Berechnet die Länge eines Textes." ;
+ Text [ italian ] = "Restituisce il numero di caratteri che compongono un testo." ;
+ Text [ portuguese_brazilian ] = "Berechnet die Länge eines Textes." ;
+ Text [ portuguese ] = "Calcula o número de caracteres numa cadeia de texto." ;
+ Text [ finnish ] = "Berechnet die Länge eines Textes." ;
+ Text [ danish ] = "Beregner en teksts længde." ;
+ Text [ french ] = "Donne la longueur d'une chaîne de texte." ;
+ Text [ swedish ] = "Beräknar längden på en text." ;
+ Text [ dutch ] = "Berekent de lengte van een tekst." ;
+ Text [ spanish ] = "Devuelve la longitud de una cadena de texto." ;
+ Text [ english_us ] = "Calculates length of a text string." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸ö×Ö´®µÄ³¤¶È¡£";
+ Text[ russian ] = "Âû÷èñëÿåò êîëè÷åñòâî ñèìâîëîâ â òåêñòîâîé ñòðîêå.";
+ Text[ polish ] = "Oblicza d³ugoœæ tekstu.";
+ Text[ japanese ] = "•¶Žš—ñ‚Ì•¶Žš”‚Ü‚½‚ÍÊ޲Ĕ‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó¦r¦êªºªø«×¡C";
+ Text[ arabic ] = "ÊÍÓÈ Øæá äÕ.";
+ Text[ dutch ] = "Berekent de lengte van een tekst.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸ö×Ö´®µÄ³¤¶È¡£";
+ Text[ greek ] = "Õðïëïãßæåé ôï ìÞêïò åíüò êåéìÝíïõ.";
+ Text[ korean ] = "ÅؽºÆ® ¹®ÀÚ¿­ÀÇ ±æÀ̸¦ °è»ê";
+ Text[ turkish ] = "Metnin uzunluðunu hesaplar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_LAENGE );
+ 1; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Der Text, dessen Länge bestimmt wird. : Der Text, dessen Lõnge bestimmt wird. */
+ Text = "Der Text, dessen Länge bestimmt wird." ;
+ Text [ english ] = "is the text whose length you want to find." ;
+ Text [ norwegian ] = "Der Text, dessen Länge bestimmt wird." ;
+ Text [ italian ] = "è il testo di cui si desidera conoscere la lunghezza." ;
+ Text [ portuguese_brazilian ] = "Der Text, dessen Länge bestimmt wird." ;
+ Text [ portuguese ] = "é o texto do qual deseja definir o comprimento." ;
+ Text [ finnish ] = "Der Text, dessen Länge bestimmt wird." ;
+ Text [ danish ] = "Den tekst hvis længde skal beregnes." ;
+ Text [ french ] = "Le texte dont vous voulez déterminer la longueur." ;
+ Text [ swedish ] = "Texten vars längd bestäms." ;
+ Text [ dutch ] = "De tekst waarvan de lengte wordt bepaald." ;
+ Text [ spanish ] = "es el texto cuya longitud desea conocer." ;
+ Text [ english_us ] = "The text in which the length is to be determined." ;
+ Text[ chinese_simplified ] = "Ҫȷ¶¨Æ䳤¶ÈµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñòîâàÿ ñòðîêà, äëèíó êîòîðîé ñëåäóåò îïðåäåëèòü.";
+ Text[ polish ] = "Tekst, którego d³ugoœæ trzeba okreœliæ.";
+ Text[ japanese ] = "•¶Žš”‚Ü‚½‚ÍÊ޲Ĕ‚𒲂ׂ镶Žš—ñ¡";
+ Text[ chinese_traditional ] = "­n½T©w¨äªø«×ªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáãÑÇÏ ÊÍÏíÏ Øæáå.";
+ Text[ dutch ] = "De tekst waarvan de lengte wordt bepaald.";
+ Text[ chinese_simplified ] = "Ҫȷ¶¨Æ䳤¶ÈµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï ôïõ ïðïßïõ ïñßæåôáé ôï ìÞêïò.";
+ Text[ korean ] = "°áÁ¤µÈ ±æÀÌ°¡ ÀÖ´Â ÅؽºÆ®";
+ Text[ turkish ] = "Uzunluðu belirlenecek metin.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function LINKS #*=-
+ Resource SC_OPCODE_LEFT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt das Anfangsteilwort eines Textes." ;
+ Text [ english ] = "Returns the first (or leftmost) character or characters in a text string." ;
+ Text [ norwegian ] = "Bestimmt das Anfangsteilwort eines Textes." ;
+ Text [ italian ] = "Restituisce una parte iniziale di un testo." ;
+ Text [ portuguese_brazilian ] = "Bestimmt das Anfangsteilwort eines Textes." ;
+ Text [ portuguese ] = "Devolve o primeiro carácter ou caracteres situados no extremo esquerdo de uma cadeia de texto." ;
+ Text [ finnish ] = "Bestimmt das Anfangsteilwort eines Textes." ;
+ Text [ danish ] = "Bestemmer tegnene længst til venstre i en tekst." ;
+ Text [ french ] = "Extrait le(s) caractère(s) à l'extrême gauche d'une chaîne de texte." ;
+ Text [ swedish ] = "Bestämmer begynnelsedelordet i en text." ;
+ Text [ dutch ] = "Geeft als resultaat het begin van een tekenreeks in een tekst." ;
+ Text [ spanish ] = "Extrae el carácter o los caracteres situados en el extremo izquierdo de una cadena de texto." ;
+ Text [ english_us ] = "Defines the first character or characters in a text string." ;
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸ö×Ö´®µÄ¿ªÊ¼²¿·Ö×Ö·û¡£";
+ Text[ russian ] = "Îïðåäåëÿåò ïåðâûé ñèìâîë èëè ñèìâîëû íåïîëíîãî ñëîâà èç òåêñòîâîé ñòðîêè.";
+ Text[ polish ] = "Wyznacza pierwszy znak w ci¹gu danych tekstu.";
+ Text[ japanese ] = "•¶Žš—ñ‚Ì擪(¶’[)‚©‚çŽw’肳‚ꂽ”‚Ì•¶Žš‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "½T©w¤@­Ó¦r¦êªº¶}©l³¡¥÷¦r¤¸¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÇáÍÑÝ ÇáÃæá Ãæ ÇáÃÍÑÝ ÇáÃæáì Ýí äÕ ãÇ.";
+ Text[ dutch ] = "Geeft als resultaat het begin van een tekenreeks in een tekst.";
+ Text[ chinese_simplified ] = "È·¶¨Ò»¸ö×Ö´®µÄ¿ªÊ¼²¿·Ö×Ö·û¡£";
+ Text[ greek ] = "Ïñßæåé ôï áñ÷éêü ôìÞìá ìéáò ëÝîçò åíüò êåéìÝíïõ.";
+ Text[ korean ] = "ÅؽºÆ® ¹®ÀÚ¿­ »ó¿¡ ù ¹®ÀÚ¸¦ Á¤ÀÇ";
+ Text[ turkish ] = "Metnin ilk karakteri ya da karakterlerini tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_LINKS );
+ 2; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Text, dessen Anfangsteilwort bestimmt wird." ;
+ Text [ english ] = "is the text string containing the characters you want to extract." ;
+ Text [ norwegian ] = "Der Text, dessen Anfangsteilwort bestimmt wird." ;
+ Text [ italian ] = "è la stringa di testo che contiene i caratteri che si desidera estrarre." ;
+ Text [ portuguese_brazilian ] = "Der Text, dessen Anfangsteilwort bestimmt wird." ;
+ Text [ portuguese ] = "é a cadeia de texto que contém os caracteres a extrair." ;
+ Text [ finnish ] = "Der Text, dessen Anfangsteilwort bestimmt wird." ;
+ Text [ danish ] = "Den tekst, som indeholder de tegn, der skal uddrages." ;
+ Text [ french ] = "Le texte contenant les caractères que vous voulez extraire." ;
+ Text [ swedish ] = "Texten vars begynnelsedelord bestäms." ;
+ Text [ dutch ] = "De tekst waarvan de begintekens worden bepaald." ;
+ Text [ spanish ] = "es la cadena de texto que contiene los caracteres que desea extraer." ;
+ Text [ english_us ] = "The text where the initial partial words are to be determined." ;
+ Text[ chinese_simplified ] = "Ҫȷ¶¨Æ俪¶Ë²¿·ÖµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñòîâàÿ ñòðîêà, èç êîòîðîé ñëåäóåò èçâëå÷ü ñîäåðæàùèåñÿ â íåé ñèìâîëû íåïîëíîãî ñëîâà.";
+ Text[ polish ] = "Tekst, w którego okreœlany bêdzie pocz¹tkowy znak.";
+ Text[ japanese ] = "Žæ‚èo‚·•¶Žš‚ðŠÜ‚Þ•¶Žš—ñB";
+ Text[ chinese_traditional ] = "­n½T©w¨ä¶}ºÝ³¡¥÷ªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáÓáÓáÉ ÇáäÕíÉ ÇáÊí ÊÍÊæí Úáì ÇáÃÍÑÝ ÇáãÑÇÏ ÇÓÊÎÑÇÌåÇ.";
+ Text[ dutch ] = "De tekst waarvan de begintekens worden bepaald.";
+ Text[ chinese_simplified ] = "Ҫȷ¶¨Æ俪¶Ë²¿·ÖµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï ôïõ ïðïßïõ ïñßæåôáé ôï áñ÷éêü ôìÞìá ëÝîçò.";
+ Text[ korean ] = "óÀ½ÀÇ ºÎºÐ¹®ÀÚ°¡ ÁöÁ¤µÉ ÅؽºÆ®ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Ýlk karakterleri belirlenecek metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl" ;
+ Text [ english ] = "num_chars" ;
+ Text [ norwegian ] = "Anzahl" ;
+ Text [ italian ] = "num_caratt" ;
+ Text [ portuguese_brazilian ] = "Anzahl" ;
+ Text [ portuguese ] = "Núm_caracteres" ;
+ Text [ finnish ] = "Anzahl" ;
+ Text [ danish ] = "Antal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "antal" ;
+ Text [ dutch ] = "Aantal" ;
+ Text [ spanish ] = "núm_de_caracteres" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "num_chars";
+ Text[ russian ] = "×èñëî_ñèìâîëîâ";
+ Text[ polish ] = "liczba_znaków";
+ Text[ japanese ] = "•¶Žš”";
+ Text[ chinese_traditional ] = "num_chars";
+ Text[ arabic ] = "Num_chars";
+ Text[ dutch ] = "Aantal";
+ Text[ chinese_simplified ] = "num_chars";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Karakter sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Anzahl der Zeichen für das Anfangsteilwort. : Die Anzahl der Zeichen f³r das Anfangsteilwort. */
+ Text = "Die Anzahl der Zeichen für das Anfangsteilwort." ;
+ Text [ english ] = "specifies how many characters you want LEFT to return." ;
+ Text [ norwegian ] = "Die Anzahl der Zeichen für das Anfangsteilwort." ;
+ Text [ italian ] = "specifica il numero di caratteri che si desidera vengano restituiti da SINISTRA." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Zeichen für das Anfangsteilwort." ;
+ Text [ portuguese ] = "especifica o número de caracteres a devolver." ;
+ Text [ finnish ] = "Die Anzahl der Zeichen für das Anfangsteilwort." ;
+ Text [ danish ] = "Antal tegn VENSTRE skal returnere." ;
+ Text [ french ] = "Le nombre de caractères que vous voulez extraire." ;
+ Text [ swedish ] = "Antalet tecken för begynnelsedelordet." ;
+ Text [ dutch ] = "Het aantal begintekens voor de tekenreeks." ;
+ Text [ spanish ] = "especifica cuántos caracteres se desea extraer." ;
+ Text [ english_us ] = "The number of characters for the start text." ;
+ Text[ chinese_simplified ] = "¿ª¶Ë²¿·ÖµÄ×Ö·ûÊýÄ¿¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ñèìâîëîâ, êîòîðîå ñëåäóåò èçâëå÷ü.";
+ Text[ polish ] = "Liczba znaków dla pocz¹tkowej czêœci s³owa.";
+ Text[ japanese ] = "Žæ‚èo‚·•¶Žš”(•¶Žš—ñ‚Ì擪‚©‚ç‚Ì•¶Žš”)B";
+ Text[ chinese_traditional ] = "¶}ºÝ³¡¥÷ªº¦r¤¸¼Æ¥Ø¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÚÏÏ ÇáÃÍÑÝ ÇáÊí ÓæÝ ÊÓÊÎÑÌåÇ LEFT.";
+ Text[ dutch ] = "Het aantal begintekens voor de tekenreeks.";
+ Text[ chinese_simplified ] = "¿ª¶Ë²¿·ÖµÄ×Ö·ûÊýÄ¿¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí ÷áñáêôÞñùí ãéá ôï áñ÷éêü ôìÞìá ôçò ëÝîçò.";
+ Text[ korean ] = "ÅؽºÆ® ½ÃÀÛ¿¡ ´ëÇÑ ¹®ÀÚÀÇ ¼ö";
+ Text[ turkish ] = "Baþlangýç metninin ilk karakterlerin sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function RECHTS #*=-
+ Resource SC_OPCODE_RIGHT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt das Endteilwort eines Textes." ;
+ Text [ english ] = "Returns the last (or rightmost) character or characters in a text string." ;
+ Text [ norwegian ] = "Bestimmt das Endteilwort eines Textes." ;
+ Text [ italian ] = "Restituisce una parte finale di un testo." ;
+ Text [ portuguese_brazilian ] = "Bestimmt das Endteilwort eines Textes." ;
+ Text [ portuguese ] = "Define o(s) último(s) caracter(es) de um texto." ;
+ Text [ finnish ] = "Bestimmt das Endteilwort eines Textes." ;
+ Text [ danish ] = "Bestemmer tegnene længst til højre i en tekst." ;
+ Text [ french ] = "Extrait le(s) caractère(s) à l'extrême droite d'une chaîne de texte." ;
+ Text [ swedish ] = "Bestämmer slutdelordet i en text." ;
+ Text [ dutch ] = "Geeft als resultaat de tekens aan het einde van een tekenreeks in een tekst." ;
+ Text [ spanish ] = "Extrae los caracteres del extremo derecho de una cadena de texto." ;
+ Text [ english_us ] = "Defines the last character or characters in a text string." ;
+ Text[ chinese_simplified ] = "ÌáÈ¡×Ö´®ÖÐ×îºóÒ»¸ö»ò¶à¸ö×Ö·û¡£";
+ Text[ russian ] = "Îïðåäåëÿåò êîíå÷íóþ ÷àñòü ñëîâà â òåêñòå.";
+ Text[ polish ] = "Okreœla ostatni znak w ci¹gu znaków.";
+ Text[ japanese ] = "•¶Žš—ñ‚Ì––”ö(‰E’[)‚©‚çŽw’肳‚ꂽ”‚Ì•¶Žš‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "´£¨ú¦r¦ê¤¤³Ì«á¤@­Ó©Î¦h­Ó¦r¤¸¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÇáÍÑÝ ÇáÃÎíÑ Ãæ ÇáÃÍÑÝ ÇáÃÎíÑÉ áäÕ ãÇ.";
+ Text[ dutch ] = "Geeft als resultaat de tekens aan het einde van een tekenreeks in een tekst.";
+ Text[ chinese_simplified ] = "ÌáÈ¡×Ö´®ÖÐ×îºóÒ»¸ö»ò¶à¸ö×Ö·û¡£";
+ Text[ greek ] = "Ïñßæåé ôï ôåëéêü ôìÞìá ìéáò ëÝîçò åíüò êåéìÝíïõ.";
+ Text[ korean ] = "ÅؽºÆ® ¹®ÀÚ¿­ »ó¿¡ ¸¶Áö¸· ¹®ÀÚ¸¦ Á¤ÀÇ";
+ Text[ turkish ] = "Metin içindeki son bir ya da birkaç karakteri tanýmlar.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_RECHTS );
+ 2; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Text, dessen Endteilwort bestimmt wird." ;
+ Text [ english ] = "is the text string containing the characters you want to extract." ;
+ Text [ norwegian ] = "Der Text, dessen Endteilwort bestimmt wird." ;
+ Text [ italian ] = "è la stringa di testo che contiene i caratteri che si desidera estrarre." ;
+ Text [ portuguese_brazilian ] = "Der Text, dessen Endteilwort bestimmt wird." ;
+ Text [ portuguese ] = "é a cadeia de texto contendo os caracteres a extrair." ;
+ Text [ finnish ] = "Der Text, dessen Endteilwort bestimmt wird." ;
+ Text [ danish ] = "Den tekst, som indeholder de tegn, der skal uddrages." ;
+ Text [ french ] = "Le texte contenant les caractères que vous voulez extraire." ;
+ Text [ swedish ] = "Texten vars slutdelord skall bestämmas." ;
+ Text [ dutch ] = "De tekst waarvan u de eindtekens wilt ophalen." ;
+ Text [ spanish ] = "es la cadena de texto que contiene los caracteres que desea extraer." ;
+ Text [ english_us ] = "The text in which the end partial words are to be determined." ;
+ Text[ chinese_simplified ] = "ÐèÒª´ÓÖÐÌáÈ¡×Ö·ûµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, êîíå÷íàÿ ÷àñòü êîòîðîãî îïðåäåëÿåòñÿ.";
+ Text[ polish ] = "Tekst, w którym zostanie okreœlony ostatni znak.";
+ Text[ japanese ] = "Žæ‚èo‚·•¶Žš‚ðŠÜ‚Þ•¶Žš—ñB";
+ Text[ chinese_traditional ] = "»Ý­n±q¤¤´£¨ú¦r¤¸ªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáÓáÓáÉ ÇáäÕíÉ ÇáÊí ÊÍÊæí Úáì ÇáÃÍÑÝ ÇáãÑÇÏ ÇÓÊÎÑÇÌåÇ.";
+ Text[ dutch ] = "De tekst waarvan u de eindtekens wilt ophalen.";
+ Text[ chinese_simplified ] = "ÐèÒª´ÓÖÐÌáÈ¡×Ö·ûµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï, ãéá ôï ïðïßï ïñßæåôáé ôï ôåëéêü ôìÞìá ëÝîçò.";
+ Text[ korean ] = "°áÁ¤µÉ ´Ü¾îÀÇ ¸¶Áö¸· ºÎºÐÀÌ ÀÖ´Â ÅؽºÆ®";
+ Text[ turkish ] = "Son metin öðeleri belirlenecek metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl" ;
+ Text [ english ] = "num_chars" ;
+ Text [ norwegian ] = "Anzahl" ;
+ Text [ italian ] = "num_caratt" ;
+ Text [ portuguese_brazilian ] = "Anzahl" ;
+ Text [ portuguese ] = "Núm_caracteres" ;
+ Text [ finnish ] = "Anzahl" ;
+ Text [ danish ] = "Antal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "antal" ;
+ Text [ dutch ] = "Getal" ;
+ Text [ spanish ] = "núm_de_caracteres" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "num_chars";
+ Text[ russian ] = "×èñëî ñèìâîëîâ";
+ Text[ polish ] = "liczba_znaków";
+ Text[ japanese ] = "•¶Žš”";
+ Text[ chinese_traditional ] = "num_chars";
+ Text[ arabic ] = "Num_chars";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "num_chars";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Karakter sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Anzahl der Zeichen für das Endteilwort. : Die Anzahl der Zeichen f³r das Endteilwort. */
+ Text = "Die Anzahl der Zeichen für das Endteilwort." ;
+ Text [ english ] = "specifies how many characters you want to extract." ;
+ Text [ norwegian ] = "Die Anzahl der Zeichen für das Endteilwort." ;
+ Text [ italian ] = "specifica il numero dei caratteri che si desidera estrarre." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Zeichen für das Endteilwort." ;
+ Text [ portuguese ] = "é o número de caracteres a extrair do texto." ;
+ Text [ finnish ] = "Die Anzahl der Zeichen für das Endteilwort." ;
+ Text [ danish ] = "Antal tegn HØJRE skal returnere." ;
+ Text [ french ] = "Le nombre de caractères que vous voulez extraire." ;
+ Text [ swedish ] = "Antalet tecken för slutdelordet." ;
+ Text [ dutch ] = "Het aantal eindtekens in de tekenreeks." ;
+ Text [ spanish ] = "especifica el número de caracteres que se desea extraer." ;
+ Text [ english_us ] = "The number of characters for the end text." ;
+ Text[ chinese_simplified ] = "ÒªÌáÈ¡µÄ×Ö´®µÄ³¤¶È¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ñèìâîëîâ â êîíå÷íîé ÷àñòè ñëîâà.";
+ Text[ polish ] = "Liczba znaków dla koñcowej czêœci s³owa.";
+ Text[ japanese ] = "Žæ‚èo‚·•¶Žš”(•¶Žš—ñ‚Ì––”ö‚©‚ç‚Ì•¶Žš”)B";
+ Text[ chinese_traditional ] = "­n´£¨úªº¦r¦êªºªø«×¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÍÑÝ ÇáãÑÇÏ ÅÑÌÇÚåÇ ãä Text.";
+ Text[ dutch ] = "Het aantal eindtekens in de tekenreeks.";
+ Text[ chinese_simplified ] = "ÒªÌáÈ¡µÄ×Ö´®µÄ³¤¶È¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí ÷áñáêôÞñùí ãéá ôï ôåëéêü ôìÞìá ôçò ëÝîçò.";
+ Text[ korean ] = "¸¶Áö¸· ÅؽºÆ®¸¦ À§ÇÑ ¹®ÀÚ ¼ö";
+ Text[ turkish ] = "Son metin öðesinin karakter sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function TEIL #*=-
+ Resource SC_OPCODE_MID
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Bestimmt ein Teilwort eines Textes." ;
+ Text [ english ] = "Returns a specific number of characters from a text string, starting at the position you specify." ;
+ Text [ norwegian ] = "Bestimmt ein Teilwort eines Textes." ;
+ Text [ italian ] = "Restituisce una stringa parziale di un testo a partire dalla posizione e di lunghezza specificate." ;
+ Text [ portuguese_brazilian ] = "Bestimmt ein Teilwort eines Textes." ;
+ Text [ portuguese ] = "Devolve um número específico de caracteres de uma cadeia de texto." ;
+ Text [ finnish ] = "Bestimmt ein Teilwort eines Textes." ;
+ Text [ danish ] = "Bestemmer et bestemt antal tegn i en tekst." ;
+ Text [ french ] = "Renvoie une chaîne de caractères partielle d'un texte." ;
+ Text [ swedish ] = "Bestämmer ett delord i en text" ;
+ Text [ dutch ] = "Geeft een bepaald aantal tekens van een tekst." ;
+ Text [ spanish ] = "Devuelve un número específico de caracteres de una cadena de texto, comenzando en la posición que especifique." ;
+ Text [ english_us ] = "Returns a partial text string of a text." ;
+ Text[ chinese_simplified ] = "ÕÒ³öÖ¸¶¨µÄ×Ö´®²¿·Ö¡£";
+ Text[ russian ] = "Âîçâðàùàåò çàäàííîå ÷èñëî ñèìâîëîâ èç ñòðîêè òåêñòà.";
+ Text[ polish ] = "Zwraca okreœlon¹ liczbê znaków z podanego ci¹gu znaków.";
+ Text[ japanese ] = "•¶Žš—ñ‚Ì”CˆÓ‚̈ʒu‚©‚çŽw’肳‚ꂽ”‚Ì•¶Žš‚ð•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "§ä¥X«ü©wªº¦r¦ê³¡¥÷¡C";
+ Text[ arabic ] = "ÊÍÏÏ ÚÏÏ ãÍÏÏ ãä ÇáÃÍÑÝ Ýí äÕ ãÇ.";
+ Text[ dutch ] = "Geeft een bepaald aantal tekens van een tekst.";
+ Text[ chinese_simplified ] = "ÕÒ³öÖ¸¶¨µÄ×Ö´®²¿·Ö¡£";
+ Text[ greek ] = "Ïñßæåé Ýíá ôìÞìá ëÝîçò åíüò êåéìÝíïõ.";
+ Text[ korean ] = "ÅؽºÆ®ÀÇ ºÎºÐÀû ¹®ÀÚ¿­À» ¹Ýȯ";
+ Text[ turkish ] = "Metin içindeki metin öðelerini belirler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_TEIL );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Text, dessen Teilwort bestimmt wird." ;
+ Text [ english ] = "is the text string containing the characters you want to extract." ;
+ Text [ norwegian ] = "Der Text, dessen Teilwort bestimmt wird." ;
+ Text [ italian ] = "è la stringa di testo che contiene i caratteri che si desidera estrarre." ;
+ Text [ portuguese_brazilian ] = "Der Text, dessen Teilwort bestimmt wird." ;
+ Text [ portuguese ] = "é a cadeia do texto contendo os caracteres que deseja extrair." ;
+ Text [ finnish ] = "Der Text, dessen Teilwort bestimmt wird." ;
+ Text [ danish ] = "Den tekst, som indeholder de tegn, der skal uddrages." ;
+ Text [ french ] = "Le texte contenant les caractères à extraire." ;
+ Text [ swedish ] = "Texten vars delord bestäms." ;
+ Text [ dutch ] = "De tekst waarvan de tekenreeks wordt bepaald." ;
+ Text [ spanish ] = "es la cadena de texto que contiene los caracteres que desea extraer." ;
+ Text [ english_us ] = "The text in which partial words are to be determined." ;
+ Text[ chinese_simplified ] = "ÊÇÓÃÓÚ´ÓÖÐÌáÈ¡×Ö·ûµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñòîâàÿ ñòðîêà, èç êîòîðîé ñëåäóåò èçâëå÷ü ñèìâîëû.";
+ Text[ polish ] = "Tekst zawieraj¹cy znaki do okreœlenia.";
+ Text[ japanese ] = "Žæ‚èo‚·•¶Žš‚ðŠÜ‚Þ•¶Žš—ñB";
+ Text[ chinese_traditional ] = "¬O¥Î©ó±q¤¤´£¨ú¦r¤¸ªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáÓáÓáÉ ÇáäÕíÉ ÇáÊí ÊÍÊæí Úáì ÇáÃÍÑÝ ÇáãÑÇÏ ÇÓÊÎÑÇÌåÇ.";
+ Text[ dutch ] = "De tekst waarvan de tekenreeks wordt bepaald.";
+ Text[ chinese_simplified ] = "ÊÇÓÃÓÚ´ÓÖÐÌáÈ¡×Ö·ûµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï, ãéá ôï ïðïßï ïñßæåôáé ôï ôìÞìá ëÝîçò.";
+ Text[ korean ] = "ºÎºÐ¹®ÀÚ°¡ ÁöÁ¤µÉ ÅؽºÆ®ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Metin öðeleri belirlenen metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anfang" ;
+ Text [ english ] = "start_num" ;
+ Text [ norwegian ] = "Anfang" ;
+ Text [ italian ] = "inizio" ;
+ Text [ portuguese_brazilian ] = "Anfang" ;
+ Text [ portuguese ] = "Núm_inicial" ;
+ Text [ finnish ] = "Anfang" ;
+ Text [ danish ] = "Start_ved" ;
+ Text [ french ] = "Début" ;
+ Text [ swedish ] = "start" ;
+ Text [ dutch ] = "Begin" ;
+ Text [ spanish ] = "posición_inicial" ;
+ Text [ english_us ] = "start" ;
+ Text[ chinese_simplified ] = "start_num";
+ Text[ russian ] = "Íà÷_íîì";
+ Text[ polish ] = "liczba_pocz¹tkowa";
+ Text[ japanese ] = "ŠJŽnˆÊ’u";
+ Text[ chinese_traditional ] = "start_num";
+ Text[ arabic ] = "Start_num";
+ Text[ dutch ] = "Begin";
+ Text[ chinese_simplified ] = "start_num";
+ Text[ greek ] = "Áñ÷Þ";
+ Text[ korean ] = "½ÃÀÛ";
+ Text[ turkish ] = "Baþlangýç";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Position, ab der das Teilwort bestimmt wird." ;
+ Text [ english ] = "is the position of the first character you want to extract in text." ;
+ Text [ norwegian ] = "Die Position, ab der das Teilwort bestimmt wird." ;
+ Text [ italian ] = "è la posizione del primo carattere che si desidera estrarre da testo." ;
+ Text [ portuguese_brazilian ] = "Die Position, ab der das Teilwort bestimmt wird." ;
+ Text [ portuguese ] = "é a posição do primeiro carácter do texto a ser extraído." ;
+ Text [ finnish ] = "Die Position, ab der das Teilwort bestimmt wird." ;
+ Text [ danish ] = "Den position i teksten hvorfra der skal begyndes med at uddrage." ;
+ Text [ french ] = "La position à partir de laquelle vous voulez déterminer la chaîne de caractères." ;
+ Text [ swedish ] = "Positionen från vilket delordet bestäms." ;
+ Text [ dutch ] = "De positie van het eerste teken dat u wilt ophalen." ;
+ Text [ spanish ] = "es la posición del primer carácter que desea extraer del argumento texto." ;
+ Text [ english_us ] = "The position from which the part word is to be determined." ;
+ Text[ chinese_simplified ] = "ÊÇÒª´Ó×Ö´®ÖÐÌáÈ¡×Ö·ûµÄÆðʼλÖá£";
+ Text[ russian ] = "Ïîçèöèÿ, íà÷èíàÿ ñ êîòîðîé ñëåäóåò èçâëå÷ü ñèìâîëû.";
+ Text[ polish ] = "Pozycja, od której bêdzie okreœlony pierwszy znak w tekœcie.";
+ Text[ japanese ] = "•¶Žš—ñ‚©‚çŽæ‚èo‚·æ“ª•¶Žš‚̈ʒu(•¶Žš”Ô†)B";
+ Text[ chinese_traditional ] = "¬O­n±q¦r¦ê¤¤´£¨ú¦r¤¸ªº°_©l¦ì¸m¡C";
+ Text[ arabic ] = "ãæÖÚ ÇáÍÑÝ ÇáÃæá ÇáãÑÇÏ ÇÓÊÎÑÇÌå.";
+ Text[ dutch ] = "De positie van het eerste teken dat u wilt ophalen.";
+ Text[ chinese_simplified ] = "ÊÇÒª´Ó×Ö´®ÖÐÌáÈ¡×Ö·ûµÄÆðʼλÖá£";
+ Text[ greek ] = "Ç èÝóç, áðü ôçí ïðïßá èá åêêéíÞóåé ï ïñéóìüò ôïõ ôìÞìáôïò ôçò ëÝîçò.";
+ Text[ korean ] = "ºÎºÐ¹®ÀÚ°¡ ÁöÁ¤µÉ À§Ä¡ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Metin öðesi tespitinin baþlayacaðý konum.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Anzahl" ;
+ Text [ english ] = "num_chars" ;
+ Text [ norwegian ] = "Anzahl" ;
+ Text [ italian ] = "num_caratt" ;
+ Text [ portuguese_brazilian ] = "Anzahl" ;
+ Text [ portuguese ] = "Núm_caracteres" ;
+ Text [ finnish ] = "Anzahl" ;
+ Text [ danish ] = "Antal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "antal" ;
+ Text [ dutch ] = "Aantal" ;
+ Text [ spanish ] = "núm_de_caracteres" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "num_chars";
+ Text[ russian ] = "×èñëî_ñèìâîëîâ";
+ Text[ polish ] = "liczba_znaków";
+ Text[ japanese ] = "•¶Žš”";
+ Text[ chinese_traditional ] = "num_chars";
+ Text[ arabic ] = "Num_chars";
+ Text[ dutch ] = "Aantal";
+ Text[ chinese_simplified ] = "num_chars";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Karakter sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Anzahl der Zeichen für das Teilwort. : Die Anzahl der Zeichen f³r das Teilwort. */
+ Text = "Die Anzahl der Zeichen für das Teilwort." ;
+ Text [ english ] = "specifies how many characters to return from text." ;
+ Text [ norwegian ] = "Die Anzahl der Zeichen für das Teilwort." ;
+ Text [ italian ] = "specifica il numero di caratteri che devono essere restituiti da testo." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl der Zeichen für das Teilwort." ;
+ Text [ portuguese ] = "indica a quantidade de caracteres a extrair do texto." ;
+ Text [ finnish ] = "Die Anzahl der Zeichen für das Teilwort." ;
+ Text [ danish ] = "Antal tegn som skal returnere." ;
+ Text [ french ] = "Le nombre de caractères contenus dans la chaîne à extraire du texte." ;
+ Text [ swedish ] = "Antalet tecken för delordet." ;
+ Text [ dutch ] = "Het aantal tekens van de tekenreeks." ;
+ Text [ spanish ] = "especifica el número de caracteres de texto que se han de devolver." ;
+ Text [ english_us ] = "The number of characters for the text." ;
+ Text[ chinese_simplified ] = "ÒªÕÒ³öµÄ×Ö´®µÄ³¤¶È¡£";
+ Text[ russian ] = "Êîëè÷åñòâî ñèìâîëîâ, êîòîðîå ñëåäóåò èçâëå÷ü èç òåêñòà.";
+ Text[ polish ] = "Liczba znaków dla czêœci s³owa.";
+ Text[ japanese ] = "Žæ‚èo‚·•¶Žš”B";
+ Text[ chinese_traditional ] = "­n§ä¥Xªº¦r¦êªºªø«×¡C";
+ Text[ arabic ] = "ÚÏÏ ÇáÃÍÑÝ ÇáãÑÇÏ ÅÑÌÇÚåÇ ãä Text.";
+ Text[ dutch ] = "Het aantal tekens van de tekenreeks.";
+ Text[ chinese_simplified ] = "ÒªÕÒ³öµÄ×Ö´®µÄ³¤¶È¡£";
+ Text[ greek ] = "Ôï ðëÞèïò ôùí ÷áñáêôÞñùí ãéá ôï ôìÞìá ôçò ëÝîçò.";
+ Text[ korean ] = "ÅؽºÆ®¿¡ ´ëÇÑ ¹®ÀÚÀÇ ¼ö";
+ Text[ turkish ] = "Metin öðesinin karakter sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function WIEDERHOLEN #*=-
+ Resource SC_OPCODE_REPT
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Wiederholt einen Text so oft wie angegeben." ;
+ Text [ english ] = "Repeats text a given number of times." ;
+ Text [ norwegian ] = "Wiederholt einen Text so oft wie angegeben." ;
+ Text [ italian ] = "Ripete un testo per il numero di volte specificato." ;
+ Text [ portuguese_brazilian ] = "Wiederholt einen Text so oft wie angegeben." ;
+ Text [ portuguese ] = "Repete o texto de acordo com as vezes especificadas." ;
+ Text [ finnish ] = "Wiederholt einen Text so oft wie angegeben." ;
+ Text [ danish ] = "Gentager en tekst et givet antal gange." ;
+ Text [ french ] = "Répète un texte autant de fois que spécifié." ;
+ Text [ swedish ] = "Upprepar en text ett bestämt antal gånger." ;
+ Text [ dutch ] = "Herhaalt een tekst zo vaak als aangegeven." ;
+ Text [ spanish ] = "Repite el texto un número de veces determinado." ;
+ Text [ english_us ] = "Repeats text a given number of times." ;
+ Text[ chinese_simplified ] = "°´ÕÕ¸ø¶¨µÄ´ÎÊýÖظ´×Ö´®¡£";
+ Text[ russian ] = "Ïîâòîðÿåò òåêñò çàäàííîå ÷èñëî ðàç.";
+ Text[ polish ] = "Powtarza tekst przez dan¹ liczbê razy.";
+ Text[ japanese ] = "•¶Žš—ñ‚ðŽw’肳‚ꂽ‰ñ”‚¾‚¯ŒJ‚è•Ô‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ö·Ó«ü©wªº¦¸¼Æ­«½Æ¦r¦ê¡C";
+ Text[ arabic ] = "ÊßÑÑ äÕ ãÇ ÈÚÏÏ ãÑÇÊ ãÚØì.";
+ Text[ dutch ] = "Herhaalt een tekst zo vaak als aangegeven.";
+ Text[ chinese_simplified ] = "°´ÕÕ¸ø¶¨µÄ´ÎÊýÖظ´×Ö´®¡£";
+ Text[ greek ] = "ÅðáíáëáìâÜíåé Ýíá êåßìåíï üóåò öïñÝò æçôçèåß.";
+ Text[ korean ] = "ÅؽºÆ®¸¦ ÁÖ¾îÁø Ƚ¼ö ¸¸Å­ ¹Ýº¹";
+ Text[ turkish ] = "Metni belirtilen sýklýkta yineler.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_WIEDERHOLEN );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Text, der wiederholt wird." ;
+ Text [ english ] = "is the text you want to repeat." ;
+ Text [ norwegian ] = "Der Text, der wiederholt wird." ;
+ Text [ italian ] = "è il testo che si desidera ripetere." ;
+ Text [ portuguese_brazilian ] = "Der Text, der wiederholt wird." ;
+ Text [ portuguese ] = "é o texto a ser repetido." ;
+ Text [ finnish ] = "Der Text, der wiederholt wird." ;
+ Text [ danish ] = "Den tekst der skal gentages." ;
+ Text [ french ] = "Le texte à répéter." ;
+ Text [ swedish ] = "Texten som upprepas." ;
+ Text [ dutch ] = "De tekst die wordt herhaald." ;
+ Text [ spanish ] = "es el texto que desea repetir." ;
+ Text [ english_us ] = "The text to be repeated." ;
+ Text[ chinese_simplified ] = "ÒªÖظ´µÄ×Ö´®¡£";
+ Text[ russian ] = "Ïîâòîðÿåìûé òåêñò.";
+ Text[ polish ] = "Tekst, który ma zostaæ powtórzony.";
+ Text[ japanese ] = "ŒJ‚è•Ô‚·•¶Žš—ñB";
+ Text[ chinese_traditional ] = "­n­«½Æªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáãÑÇÏ ÊßÑÇÑå.";
+ Text[ dutch ] = "De tekst die wordt herhaald.";
+ Text[ chinese_simplified ] = "ÒªÖظ´µÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï ðïõ åðáíáëáìâÜíåôáé.";
+ Text[ korean ] = "¹ß°ßµÉ ÅؽºÆ®";
+ Text[ turkish ] = "Yinelenecek metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Anzahl" ;
+ Text [ english ] = "num_chars" ;
+ Text [ norwegian ] = "Anzahl" ;
+ Text [ italian ] = "num_caratt" ;
+ Text [ portuguese_brazilian ] = "Anzahl" ;
+ Text [ portuguese ] = "Núm_vezes" ;
+ Text [ finnish ] = "Anzahl" ;
+ Text [ danish ] = "Antal" ;
+ Text [ french ] = "Nombre" ;
+ Text [ swedish ] = "antal" ;
+ Text [ dutch ] = "Aantal" ;
+ Text [ spanish ] = "núm_de_veces" ;
+ Text [ english_us ] = "number" ;
+ Text[ chinese_simplified ] = "num_times";
+ Text[ russian ] = "×èñëî ïîâòîðåíèé";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "ŒJ‚è•Ô‚µ‰ñ”";
+ Text[ chinese_traditional ] = "num_times";
+ Text[ arabic ] = "Num_times";
+ Text[ dutch ] = "Aantal";
+ Text[ chinese_simplified ] = "num_times";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Yineleme sayýsý";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Die Anzahl, wie oft der Text wiederholt wird." ;
+ Text [ english ] = "is a positive number specifying the number of times to repeat text." ;
+ Text [ norwegian ] = "Die Anzahl, wie oft der Text wiederholt wird." ;
+ Text [ italian ] = "è un numero positivo che specifica il numero di volte che si desidera ripetere il testo." ;
+ Text [ portuguese_brazilian ] = "Die Anzahl, wie oft der Text wiederholt wird." ;
+ Text [ portuguese ] = "especifica o número de vezes de repetição do texto." ;
+ Text [ finnish ] = "Die Anzahl, wie oft der Text wiederholt wird." ;
+ Text [ danish ] = "Det antal gange som teksten skal gentages." ;
+ Text [ french ] = "Le nombre indiquant combien de fois répéter le texte." ;
+ Text [ swedish ] = "Antalet gånger texten upprepas." ;
+ Text [ dutch ] = "Het aantal keren dat een tekst wordt herhaald." ;
+ Text [ spanish ] = "es un número positivo que especifica el número de veces que se deberá repetir el texto." ;
+ Text [ english_us ] = "The number of times the text is to be repeated." ;
+ Text[ chinese_simplified ] = "Öظ´µÄ´ÎÊý¡£";
+ Text[ russian ] = "×èñëî, îïðåäåëÿþùåå ñêîëüêî ðàç äîëæåí ïîâòîðÿòüñÿ òåêñò.";
+ Text[ polish ] = "Okreœla liczbê razy powtórzenia tekstu.";
+ Text[ japanese ] = "•¶Žš—ñ‚ðŒJ‚è•Ô‚·‰ñ”B";
+ Text[ chinese_traditional ] = "­«½Æªº¦¸¼Æ¡C";
+ Text[ arabic ] = "ÚÏÏ ãÑÇÊ ÊßÑÇÑ ÇáäÕ.";
+ Text[ dutch ] = "Het aantal keren dat een tekst wordt herhaald.";
+ Text[ chinese_simplified ] = "Öظ´µÄ´ÎÊý¡£";
+ Text[ greek ] = "Ï áñéèìüò, ðüóåò öïñÝò íá åðáíáëçöèåß Ýíá êåßìåíï.";
+ Text[ korean ] = "ÅؽºÆ®°¡ ¹Ýº¹µÉ Ƚ¼ö";
+ Text[ turkish ] = "Metni yineleme sayýsý.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function WECHSELN #*=-
+ Resource SC_OPCODE_SUBSTITUTE
+ {
+ String 1 // Description
+ // Description
+ // Description
+ // Description
+ // Description
+ {
+ Text = "Ersetzt mehrfach Teilworte in einem Text." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Ersetzt mehrfach Teilworte in einem Text." ;
+ Text [ italian ] = "Sostituisce testi parziali presenti più volte in un testo." ;
+ Text [ portuguese_brazilian ] = "Ersetzt mehrfach Teilworte in einem Text." ;
+ Text [ portuguese ] = "Substitui várias vezes texto_antigo por novo_texto." ;
+ Text [ finnish ] = "Ersetzt mehrfach Teilworte in einem Text." ;
+ Text [ danish ] = "Udskifter delord i en tekst." ;
+ Text [ french ] = "Remplace des caractères dans un texte." ;
+ Text [ swedish ] = "Ersätter textsträngar flera gånger i en text." ;
+ Text [ dutch ] = "Vervangt meermaals tekens in een tekst." ;
+ Text [ spanish ] = "Reemplaza caracteres dentro del texto." ;
+ Text [ english_us ] = "Substitutes new text for old text in a string." ;
+ Text[ chinese_simplified ] = "¶àÖظüÌæÒ»¸ö×Ö´®ÄÚµÄ×Ö·û¡£";
+ Text[ russian ] = "Çàìåíÿåò ìíîãîêðàòíî ÷àñòè ñëîâ â òåêñòå.";
+ Text[ polish ] = "Podstawia nowy tekst w miejsce starego we wskazanym ci¹gu znaków.";
+ Text[ japanese ] = "•¶Žš—ñ’†‚ÌŽw’肳‚ꂽ•¶Žš‚𑼂̕¶Žš‚É’u‚«Š·‚¦‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦h­«§ó´À¤@­Ó¦r¦ê¤ºªº¦r¤¸¡C";
+ Text[ arabic ] = "ÊÓÊÈÏá ÇáäÕ ÇáÞÏíã ÈÃÎÑ ÌÏíÏ Ýí ÇáÓáÓáÉ ÇáäÕíÉ.";
+ Text[ dutch ] = "Vervangt meermaals tekens in een tekst.";
+ Text[ chinese_simplified ] = "¶àÖظüÌæÒ»¸ö×Ö´®ÄÚµÄ×Ö·û¡£";
+ Text[ greek ] = "Åêôåëåß ðïëëáðëÞ áíôéêáôÜóôáóç ôìçìÜôùí ëÝîåùí óå Ýíá êåßìåíï.";
+ Text[ korean ] = "¹®ÀÚ¿­¿¡¼­ ¿À·¡µÈ ÅؽºÆ®¸¦ »õ·Î¿î ÅؽºÆ®·Î ´ëÄ¡";
+ Text[ turkish ] = "Metin içinde metin öðeleri deðiþtirir.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_WECHSELN );
+ 4; 0; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ portuguese_brazilian ] = "Text" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Text" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "texto" ;
+ Text [ english_us ] = "text" ;
+ Text[ chinese_simplified ] = "text";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ // Description of Parameter 1
+ {
+ Text = "Der Text, in dem Teilworte ausgetauscht werden." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Text, in dem Teilworte ausgetauscht werden." ;
+ Text [ italian ] = "Il testo nel quale sostituire le parole parziali." ;
+ Text [ portuguese_brazilian ] = "Der Text, in dem Teilworte ausgetauscht werden." ;
+ Text [ portuguese ] = "é o texto ou a referência a uma célula que contém o texto a ser substituído." ;
+ Text [ finnish ] = "Der Text, in dem Teilworte ausgetauscht werden." ;
+ Text [ danish ] = "Den tekst hvor der skal udskiftes nogle delord." ;
+ Text [ french ] = "Le texte dans lequel vous voulez remplacer des caractères." ;
+ Text [ swedish ] = "Texten där textsträngar byts ut." ;
+ Text [ dutch ] = "De tekst waarin tekens worden vervangen." ;
+ Text [ spanish ] = "es el texto o la referencia a una celda que contiene texto en el que se desea cambiar caracteres." ;
+ Text [ english_us ] = "The text in which partial words are to be replaced." ;
+ Text[ chinese_simplified ] = "ÒªÌæ»»ÆäÖÐ×Ö·ûµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, â êîòîðîì çàìåíÿþòñÿ ÷àñòè ñëîâ.";
+ Text[ polish ] = "Tekst, w którym czêœci s³owa zostan¹ wymienione.";
+ Text[ japanese ] = "’u‚«Š·‚¦‚镶Žš‚ðŠÜ‚Þ•¶Žš—ñ‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "­n´À´«¨ä¤¤¦r¤¸ªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáãÑÇÏ ÇÓÊÈÏÇá ÃÌÒÇÁ ãä ßáãÇÊå.";
+ Text[ dutch ] = "De tekst waarin tekens worden vervangen.";
+ Text[ chinese_simplified ] = "ÒªÌæ»»ÆäÖÐ×Ö·ûµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï óôï ïðïßï èá ãßíåé áíôéêáôÜóôáóç ôùí ôìçìÜôùí ëÝîåùí.";
+ Text[ korean ] = "ºÎºÐÀû ´Ü¾î°¡ ´ëÄ¡µÉ ÅؽºÆ®";
+ Text[ turkish ] = "Metin öðeleri deðiþtirilecek metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ // Name of Parameter 2
+ {
+ Text = "Suchtext" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Suchtext" ;
+ Text [ italian ] = "cerca_testo" ;
+ Text [ portuguese_brazilian ] = "Suchtext" ;
+ Text [ portuguese ] = "Texto_antigo" ;
+ Text [ finnish ] = "Suchtext" ;
+ Text [ danish ] = "Find_tekst" ;
+ Text [ french ] = "Texte_cherché" ;
+ Text [ swedish ] = "söktext" ;
+ Text [ dutch ] = "Zoektekst" ;
+ Text [ spanish ] = "texto_original" ;
+ Text [ english_us ] = "search_text" ;
+ Text[ chinese_simplified ] = "search_text";
+ Text[ russian ] = "Èñêîìûé òåêñò";
+ Text[ polish ] = "szukany_tekst";
+ Text[ japanese ] = "ŒŸõ•¶Žš—ñ";
+ Text[ chinese_traditional ] = "search_text";
+ Text[ arabic ] = "Search_text";
+ Text[ dutch ] = "Zoektekst";
+ Text[ chinese_simplified ] = "search_text";
+ Text[ greek ] = "Êåßìåíï áíáæÞôçóçò";
+ Text[ korean ] = "ã±â_ÅؽºÆ®";
+ Text[ turkish ] = "Aranan metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ // Description of Parameter 2
+ {
+ Text = "Das Teilwort, das (mehrfach) ersetzt werden soll." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Das Teilwort, das (mehrfach) ersetzt werden soll." ;
+ Text [ italian ] = "La parola parziale che deve essere (più volte) sostituita." ;
+ Text [ portuguese_brazilian ] = "Das Teilwort, das (mehrfach) ersetzt werden soll." ;
+ Text [ portuguese ] = "é o texto antigo a ser substituído (várias vezes)." ;
+ Text [ finnish ] = "Das Teilwort, das (mehrfach) ersetzt werden soll." ;
+ Text [ danish ] = "Det delord som skal udskiftes (flere gange)." ;
+ Text [ french ] = "La chaîne de caractères à remplacer (plusieurs fois)." ;
+ Text [ swedish ] = "Textsträngen som skall bytas ut (flera gånger)." ;
+ Text [ dutch ] = "Het woorddeel dat (meermaals) moeten worden vervangen." ;
+ Text [ spanish ] = "es el texto que se desea sustituir." ;
+ Text [ english_us ] = "The partial string to be (repeatedly) replaced." ;
+ Text[ chinese_simplified ] = "Òª(¶àÖØ)¸üÌæµÄ×Ö·û¡£";
+ Text[ russian ] = "×àñòü ñëîâà, êîòîðóþ íåîáõîäèìî (ìíîãîêðàòíî) çàìåíèòü.";
+ Text[ polish ] = "S³owo cz¹stkowe, które ma zostaæ (wielokrotnie) zast¹pione.";
+ Text[ japanese ] = "’u‚«Š·‚¦‚镶Žš—ñ‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "­n(¦h­«)§ó´Àªº¦r¤¸¡C";
+ Text[ arabic ] = "ÇáÌÒÁ ãä ÇáßáãÉ ÇáãÑÇÏ ÇÓÊÈÏÇáå ÃßËÑ ãä ãÑÉ.";
+ Text[ dutch ] = "Het woorddeel dat (meermaals) moeten worden vervangen.";
+ Text[ chinese_simplified ] = "Òª(¶àÖØ)¸üÌæµÄ×Ö·û¡£";
+ Text[ greek ] = "Ôï ôìÞìá ôçò ëÝîçò ðïõ ðñüêåéôáé íá áíôéêáôáóôáèåß (ðïëëáðëÜ).";
+ Text[ korean ] = "ºÎºÐÀûÀÎ ¹®ÀÚ¿­ÀÌ(¹Ýº¹ÀûÀ¸·Î) ´ëÄ¡µË´Ï´Ù";
+ Text[ turkish ] = "(Birçok kez) deðiþtirilecek metin öðesi.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ // Name of Parameter 3
+ {
+ Text = "Textersatz" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Textersatz" ;
+ Text [ italian ] = "nuovo_testo" ;
+ Text [ portuguese_brazilian ] = "Textersatz" ;
+ Text [ portuguese ] = "Novo_texto" ;
+ Text [ finnish ] = "Textersatz" ;
+ Text [ danish ] = "Ny_tekst" ;
+ Text [ french ] = "Nouveau_texte" ;
+ Text [ swedish ] = "textersättning" ;
+ Text [ dutch ] = "Vervangende tekst" ;
+ Text [ spanish ] = "texto_nuevo" ;
+ Text [ english_us ] = "new text" ;
+ Text[ chinese_simplified ] = "new_text";
+ Text[ russian ] = "Íîâûé_òåêñò";
+ Text[ polish ] = "Nowy tekst";
+ Text[ japanese ] = "’uŠ·•¶Žš—ñ";
+ Text[ chinese_traditional ] = "new_text";
+ Text[ arabic ] = "New_text";
+ Text[ dutch ] = "Vervangende tekst";
+ Text[ chinese_simplified ] = "new_text";
+ Text[ greek ] = "ÍÝï_êåßìåíï";
+ Text[ korean ] = "»õ ÅؽºÆ®";
+ Text[ turkish ] = "Yeni metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ // Description of Parameter 3
+ {
+ Text = "Der Text, der das Teilwort ersetzen soll." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Der Text, der das Teilwort ersetzen soll." ;
+ Text [ italian ] = "Il testo che deve sostituire la parola parziale" ;
+ Text [ portuguese_brazilian ] = "Der Text, der das Teilwort ersetzen soll." ;
+ Text [ portuguese ] = "é o texto que irá substituir texto_antigo." ;
+ Text [ finnish ] = "Der Text, der das Teilwort ersetzen soll." ;
+ Text [ danish ] = "Den tekst som skal erstatte delordet." ;
+ Text [ french ] = "Le texte qui doit remplacer la chaîne de caractères." ;
+ Text [ swedish ] = "Texten som skall ersätta textsträngen." ;
+ Text [ dutch ] = "De tekst die het woorddeel vervangt." ;
+ Text [ spanish ] = "es el texto con el que se reemplaza el texto_original." ;
+ Text [ english_us ] = "The text which is to replace the text string." ;
+ Text[ chinese_simplified ] = "ÓÃÀ´Ìæ»»Ô­À´×Ö·ûµÄ×Ö´®¡£";
+ Text[ russian ] = "Òåêñò, çàìåíÿþùèé ÷àñòü ñëîâà.";
+ Text[ polish ] = "Tekst, który ma zast¹piæ ci¹g znaków.";
+ Text[ japanese ] = "ŒŸõ•¶Žš—ñ‚Æ’u‚«Š·‚¦‚镶Žš—ñ‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "¥Î¨Ó´À´«­ì¨Ó¦r¤¸ªº¦r¦ê¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáãÓÊÎÏã áÇÓÊÈÏÇá ÇáÓáÓáÉ ÇáäÕíÉ.";
+ Text[ dutch ] = "De tekst die het woorddeel vervangt.";
+ Text[ chinese_simplified ] = "ÓÃÀ´Ìæ»»Ô­À´×Ö·ûµÄ×Ö´®¡£";
+ Text[ greek ] = "Ôï êåßìåíï ðïõ ðñüêåéôáé íá áíôéêáôáóôÞóåé ôï ôìÞìá ëÝîçò.";
+ Text[ korean ] = "ÅؽºÆ® ½ºÆ®¸µÀ¸·Î ´ëüµÈ ÅؽºÆ®";
+ Text[ turkish ] = "Metin öðesi yerine gelecek metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 8 // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ // Name of Parameter 4
+ {
+ Text = "Auftreten" ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Auftreten" ;
+ Text [ italian ] = "Occorrenze" ;
+ Text [ portuguese_brazilian ] = "Auftreten" ;
+ Text [ portuguese ] = "Ocorrência" ;
+ Text [ finnish ] = "Auftreten" ;
+ Text [ danish ] = "Forekomst" ;
+ Text [ french ] = "Occurrence" ;
+ Text [ swedish ] = "förekomst" ;
+ Text [ dutch ] = "Optreden" ;
+ Text [ spanish ] = "múm_de_ocurrencia" ;
+ Text [ english_us ] = "occurrence" ;
+ Text[ chinese_simplified ] = "occurrence";
+ Text[ russian ] = "Íîìåð_âõîæäåíèÿ";
+ Text[ polish ] = "Wyst¹pienie";
+ Text[ japanese ] = "’uŠ·‘ÎÛ";
+ Text[ chinese_traditional ] = "occurrence";
+ Text[ arabic ] = "Occurrence";
+ Text[ dutch ] = "Optreden";
+ Text[ chinese_simplified ] = "occurrence";
+ Text[ greek ] = "Occurrence";
+ Text[ korean ] = "¹ß»ý";
+ Text[ turkish ] = "Vaka";
+ Text[ language_user1 ] = " ";
+ };
+ String 9 // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ // Description of Parameter 4
+ {
+ Text = "Das wievielte Auftreten des Teilwortes ersetzt werden soll." ;
+ Text [ english ] = "???" ;
+ Text [ norwegian ] = "Das wievielte Auftreten des Teilwortes ersetzt werden soll." ;
+ Text [ italian ] = "Quale occorrenza della parola parziale deve essere sostituita" ;
+ Text [ portuguese_brazilian ] = "Das wievielte Auftreten des Teilwortes ersetzt werden soll." ;
+ Text [ portuguese ] = "especifica qual a ocorrência de texto_antigo a ser substituída." ;
+ Text [ finnish ] = "Das wievielte Auftreten des Teilwortes ersetzt werden soll." ;
+ Text [ danish ] = "Angiver hvilken forekomst af delordet der skal udskiftes." ;
+ Text [ french ] = "L'occurrence de la chaîne de caractères qui doit être remplacée." ;
+ Text [ swedish ] = "Vid vilken förekomst delordet skall ersättas." ;
+ Text [ dutch ] = "Geeft aan bij het hoeveelste optreden het woorddeel moet worden vervangen." ;
+ Text [ spanish ] = "especifica la ocurrencia del texto que se desea reemplazar." ;
+ Text [ english_us ] = "Which occurence of the old text is to be replaced." ;
+ Text[ chinese_simplified ] = "Òª±»¸üÌæµÄÊǵڼ¸´Î³öÏÖµÄ×Ö·û¡£";
+ Text[ russian ] = "Îïðåäåëÿåò, êàêîå âõîæäåíèå òåêñòà íóæíî çàìåíèòü.";
+ Text[ polish ] = "Okreœla, które powtórzenie ci¹gu znaków ma zostaæ zast¹pione.";
+ Text[ japanese ] = "•¶Žš—ñ‚ÉŠÜ‚Ü‚ê‚鉽”Ô–Ú‚Ì•¶Žš—ñ‚ð’uŠ·•¶Žš—ñ‚Æ’u‚«Š·‚¦‚é‚©‚ðŽw’肵‚Ü‚·B";
+ Text[ chinese_traditional ] = "­n³Q§ó´Àªº¬O²Ä´X¦¸¥X²{ªº¦r¤¸¡C";
+ Text[ arabic ] = "ÊÍÏÏ Ãí ÙåæÑ ááäÕ íÌÈ ÇÓÊÈÏÇáå.";
+ Text[ dutch ] = "Geeft aan bij het hoeveelste optreden het woorddeel moet worden vervangen.";
+ Text[ chinese_simplified ] = "Òª±»¸üÌæµÄÊǵڼ¸´Î³öÏÖµÄ×Ö·û¡£";
+ Text[ greek ] = "Ç ðïóïóôÞ åìöÜíéóç ôïõ ôìÞìáôïò ëÝîçò ðïõ èÝëåôå íá áíôéêáôáóôáèåß.";
+ Text[ korean ] = "¸î ¹ø°¿¡ ³ªÅ¸³ª´Â ºÎºÐ´Ü¾î¸¦ ´ëüÇÒ °ÍÀΰ¡ÀÔ´Ï´Ù.";
+ Text[ turkish ] = "Metin öðesinin hangi vakasý deðiþtirilecek.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function BASIS #*=-
+ Resource SC_OPCODE_BASE
+ {
+ String 1 // Description
+ {
+ Text = "Wandelt eine positive Ganzzahl in einen Text aus einem Zahlensystem zur angegebenen Basis." ;
+ Text [ english ] = "Converts a positive integer number to a string of a specified number system." ;
+ Text [ portuguese ] = "Converte um número inteiro positivo para texto de um sistema numérico específico" ;
+ Text [ english_us ] = "Converts a positive integer to text from a number system to the base defined." ;
+ Text [ portuguese_brazilian ] = "Wandelt eine positive Ganzzahl in einen Text aus einem Zahlensystem zur angegebenen Basis." ;
+ Text [ swedish ] = "Omvandlar ett positivt heltal till en text från ett talsystem till den angivna basen. " ;
+ Text [ danish ] = "Konverterer et positivt heltal fra et specificeret talsystem." ;
+ Text [ italian ] = "Converte un numero positivo intero in un testo da un sistema numerico alla base indicata." ;
+ Text [ spanish ] = "Convierte un número entero positivo en un texto de un sistema numérico para la base dada." ;
+ Text [ french ] = "Convertit un nombre entier positif en texte d'un système de numérotation dans la base spécifiée." ;
+ Text [ dutch ] = "Verandert een positief rond getal in een tekst uit een aangegeven getalsysteem." ;
+ Text[ chinese_simplified ] = "°´ÕÕ¸ø¶¨µÄÊý×Öϵͳת»»Ò»¸öÕýÕûÊý³ÉÎÄ×Ö¡£";
+ Text[ russian ] = "Ïðåîáðàçóåò ïîëîæèòåëüíîå öåëîå ÷èñëî â òåêñò èç ÷èñëîâîé ñèñòåìû â çàäàííîì áàçèñå.";
+ Text[ polish ] = "Konwertuje dodatni¹ liczbê ca³kowit¹ na tekst z podanego systemu liczbowego o podanej podstawie.";
+ Text[ japanese ] = "‹L”–@‚©‚糂̮”‚𕶎š‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "«ö·Ó¿é¤Jªº¼Æ¦r¨t²ÎÂà´«¤@­Ó¥¿¾ã¼Æ¦¨¤å¦r¡C";
+ Text[ arabic ] = "ÊÍæá ÑÞãÇð ÕÍíÍÇð ãæÌÈÇð Åáì äÕ ãä äÙÇã ÃÑÞÇã ãÍÏÏ.";
+ Text[ dutch ] = "Verandert een positief rond getal in een tekst uit een aangegeven getalsysteem.";
+ Text[ chinese_simplified ] = "°´ÕÕ¸ø¶¨µÄÊý×Öϵͳת»»Ò»¸öÕýÕûÊý³ÉÎÄ×Ö¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé Ýíáí èåôéêü áêÝñáéï áñéèìü óå Ýíá êåßìåíï åíüò óõóôÞìáôïò áñéèìþí ùò ðñïò ôç åðéëåãìÝíç âÜóç.";
+ Text[ korean ] = "¾çÀÇ Á¤¼ö¸¦ ÁöÁ¤µÈ ±âÃÊÀÇ ¼öü°è¿¡¼­ ÅؽºÆ®·Î º¯È¯ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Pozitif bir tamsayýyý belirtilen tabanda sayý sisteminden metne dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_BASIS );
+ 3; 0; 0; 1;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Zahl" ;
+ Text [ english ] = "number" ;
+ Text [ portuguese ] = "número" ;
+ Text [ english_us ] = "number" ;
+ Text [ portuguese_brazilian ] = "Zahl" ;
+ Text [ swedish ] = "tal" ;
+ Text [ danish ] = "Tal" ;
+ Text [ italian ] = "Numero" ;
+ Text [ spanish ] = "Número" ;
+ Text [ french ] = "Nombre" ;
+ Text [ dutch ] = "Getal" ;
+ Text[ chinese_simplified ] = "number";
+ Text[ russian ] = "×èñëî";
+ Text[ polish ] = "Liczba";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "number";
+ Text[ arabic ] = "ÇáÑÞã";
+ Text[ dutch ] = "Getal";
+ Text[ chinese_simplified ] = "number";
+ Text[ greek ] = "Áñéèìüò";
+ Text[ korean ] = "¼ö";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Die umzuwandelnde Zahl." ;
+ Text [ english ] = "The number to be converted." ;
+ Text [ portuguese ] = "O número a ser convertido." ;
+ Text [ english_us ] = "The number to be converted." ;
+ Text [ portuguese_brazilian ] = "Die umzuwandelnde Zahl." ;
+ Text [ swedish ] = "Talet som skall omvandlas." ;
+ Text [ danish ] = "Det tal som skal konverteres." ;
+ Text [ italian ] = "Il numero da convertire." ;
+ Text [ spanish ] = "Número a convertir." ;
+ Text [ french ] = "Le nombre à convertir." ;
+ Text [ dutch ] = "Het te converteren getal" ;
+ Text[ chinese_simplified ] = "Ҫת»»µÄÊý×Ö¡£";
+ Text[ russian ] = "Ïðåîáðàçóåìîå ÷èñëî.";
+ Text[ polish ] = "Liczba do przekszta³cenia.";
+ Text[ japanese ] = "•ÏŠ·‚·‚é”’lB";
+ Text[ chinese_traditional ] = "­nÂà´«ªº¼Æ¦r¡C";
+ Text[ arabic ] = "ÇáÑÞã ÇáãÑÇÏ ÊÍæíáå.";
+ Text[ dutch ] = "Het te converteren getal";
+ Text[ chinese_simplified ] = "Ҫת»»µÄÊý×Ö¡£";
+ Text[ greek ] = "Ï áñéèìüò ðïõ ðñüêåéôáé íá ìåôáôñáðåß.";
+ Text[ korean ] = "º¯È¯µÈ ¼ö";
+ Text[ turkish ] = "Dönüþtürülecek sayý.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ {
+ Text = "Radix" ;
+ Text [ english ] = "radix" ;
+ Text [ portuguese ] = "Raíz" ;
+ Text [ english_us ] = "radix" ;
+ Text [ portuguese_brazilian ] = "Radix" ;
+ Text [ swedish ] = "roten ur" ;
+ Text [ danish ] = "Radix" ;
+ Text [ italian ] = "Radice" ;
+ Text [ spanish ] = "Raíz" ;
+ Text [ french ] = "Radix" ;
+ Text [ dutch ] = "Radix" ;
+ Text[ chinese_simplified ] = "radix";
+ Text[ russian ] = "Îñíîâàíèå";
+ Text[ polish ] = "Podstawa";
+ Text[ japanese ] = "Šî”";
+ Text[ chinese_traditional ] = "radix";
+ Text[ arabic ] = "Radix";
+ Text[ dutch ] = "Radix";
+ Text[ chinese_simplified ] = "radix";
+ Text[ greek ] = "Radix";
+ Text[ korean ] = "񃬔";
+ Text[ turkish ] = "Kök";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ {
+ Text = "Die Zahlenbasis, in die konvertiert wird, muss im Bereich 2 - 36 liegen." ;
+ Text [ english ] = "Specifies the base of the number system, must be in the range 2 - 36." ;
+ Text [ portuguese ] = "A base numérica para a conversão terá que estar compreendida entre 2 e 36." ;
+ Text [ english_us ] = "The base number for conversion must be in the range 2 - 36." ;
+ Text [ portuguese_brazilian ] = "Die Zahlenbasis, in die konvertiert wird, muß im Bereich 2 - 36 liegen." ;
+ Text [ swedish ] = "Talbasen till vilken konvertering sker, måste ligga i området 2 - 36." ;
+ Text [ danish ] = "Den talbasis, som skal konverteres til, skal ligge indenfor området 2 - 36." ;
+ Text [ italian ] = "La base numerica nella quale si converte deve essere compresa tra 2 e 36." ;
+ Text [ spanish ] = "La base numérica para la conversión debe ser entre 2 y 36." ;
+ Text [ french ] = "La base numérique pour la conversion doit être comprise entre 2 et 36." ;
+ Text [ dutch ] = "De getalwaarde waarnaar wordt geconverteerd moet tussen 2 - 36 liggen." ;
+ Text[ chinese_simplified ] = "ת»»ºóµÄÊý×Ö±ØÐëλÓÚ 2 ºÍ 36 Ö®¼ä¡£";
+ Text[ russian ] = "×èñëîâîé áàçèñ, â êîòîðûé îñóùåñòâëÿåòñÿ ïðåîáðàçîâàíèå, äîëæåí íàõîäèòüñÿ â äèàïàçîíå îò 2 äî 36.";
+ Text[ polish ] = "Podstawa systemu liczbowego do konwersji musi byæ zawarta w przedziale 2 - 36.";
+ Text[ japanese ] = "•ÏŠ·‚³‚ê‚é‹L”–@‚̊Í2`36‚͈̔͂ɂȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñB";
+ Text[ chinese_traditional ] = "©Ò­nÂà´«ªº°ò¼Æ¥²¶·¦b 2 - 36 ¤§¶¡¡C";
+ Text[ arabic ] = "ÃÓÇÓ ÇáÃÑÞÇã ÇáÊí ÓæÝ íÊã ÇáÊÍæíá ÅáíåÇ íÌÈ Ãä íßæä Ýí ÇáäØÇÞ ÇáÐí íÊÑÇæÍ Èíä 2 æ 36.";
+ Text[ dutch ] = "De getalwaarde waarnaar wordt geconverteerd moet tussen 2 - 36 liggen.";
+ Text[ chinese_simplified ] = "ת»»ºóµÄÊý×Ö±ØÐëλÓÚ 2 ºÍ 36 Ö®¼ä¡£";
+ Text[ greek ] = "Ç âÜóç ôïõ áñéèìïý ðïõ èá ìåôáôñáðåß ðñÝðåé íá Ý÷åé ôéìÞ áðü 2 Ýùò 36.";
+ Text[ korean ] = "º¯È¯À»À§ÇÑ ±âº»¼ö´Â 2-36 ÀÇ ¿µ¿ª¿¡ ÀÖ¾î¾ßÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Dönüþüm hedefi taban sayýsý 2 - 36 aralýðýnda bulunmalýdýr.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ {
+ Text = "Mindestlänge" ;
+ Text [ english ] = "minimum width" ;
+ Text [ portuguese ] = "Comprimento mínimo" ;
+ Text [ english_us ] = "Minimum length" ;
+ Text [ portuguese_brazilian ] = "Mindestlänge" ;
+ Text [ swedish ] = "minimilängd" ;
+ Text [ danish ] = "Mindstelængde" ;
+ Text [ italian ] = "Lunghezza minima" ;
+ Text [ spanish ] = "Longitud mínima" ;
+ Text [ french ] = "Longueur_min" ;
+ Text [ dutch ] = "Minimum lengte" ;
+ Text[ chinese_simplified ] = "Minimum length";
+ Text[ russian ] = "Ìèíèìàëüíàÿ äëèíà";
+ Text[ polish ] = "Minimalna d³ugoœæ";
+ Text[ japanese ] = "Å’á‚Ì’·‚³";
+ Text[ chinese_traditional ] = "Minimum length";
+ Text[ arabic ] = "Minimum length";
+ Text[ dutch ] = "Minimum lengte";
+ Text[ chinese_simplified ] = "Minimum length";
+ Text[ greek ] = "ÅëÜ÷éóôï ìÞêïò";
+ Text[ korean ] = "ÃÖ¼Ò ±æÀÌ";
+ Text[ turkish ] = "Asgari uzunluk";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ {
+ Text = "Wenn der Text kürzer ist, wird er links mit Nullen aufgefüllt." ;
+ Text [ english ] = "Zeros are added to the left of the string if it is shorter." ;
+ Text [ portuguese ] = "Adicionar zeros à esquerda do texto, se este for menor que o comprimento especificado." ;
+ Text [ english_us ] = "If the text is shorter than the specified length, zeros are added to the left of the string." ;
+ Text [ portuguese_brazilian ] = "Wenn der Text kürzer ist, wird er links mit Nullen aufgefüllt." ;
+ Text [ swedish ] = "Om texten är kortare fylls den ut till vänster med nollor." ;
+ Text [ danish ] = "Hvis teksten er kortere, bliver den fyldt op med nuller til venstre." ;
+ Text [ italian ] = "Se il testo è più breve, esso verrà completato con a sinistra degli zeri." ;
+ Text [ spanish ] = "Si el texto es más corto, se rellenará a la izquierda con ceros." ;
+ Text [ french ] = "Si le texte est plus court que la longueur spécifiée, des zéros seront ajoutés à sa gauche." ;
+ Text [ dutch ] = "Als de tekst korter is wordt deze links met nullen opgevuld." ;
+ Text[ chinese_simplified ] = "Èç¹ûÎÄ×Ö¶ÌÓÚÖ¸¶¨³¤¶È£¬¾ÍÇëÔÚÎÄ×Ö×ó·½Ìí¼ÓÁã¡£";
+ Text[ russian ] = "Åñëè òåêñò ÿâëÿåòñÿ êîðî÷å, îí áóäåò ñëåâà çàïîëíÿòüñÿ íóëÿìè.";
+ Text[ polish ] = "Jeœli tekst jest krótszy ni¿ podana d³ugoœæ, zostanie uzupe³niony zerami.";
+ Text[ japanese ] = "•¶Žš—ñ‚ªŽw’肵‚½’·‚³‚æ‚è’Z‚¯‚ê‚ÎA¶‚ɾÞÛ‚ð’ljÁ‚µ‚Ü‚·B";
+ Text[ chinese_traditional ] = "¦pªG¤å¦rµu¤_«ü©wªø«×¡M´N½Ð¦b¤å¦r¥ª¤è²K¥[¹s¡C";
+ Text[ arabic ] = "ÅÐÇ ßÇä ÇáäÕ ÃÞÕÑ ãä ÇáØæá ÇáãÚØì¡ ÝÓæÝ íÊã æÖÚ ÃÕÝÇÑ Úáì íÓÇÑå.";
+ Text[ dutch ] = "Als de tekst korter is wordt deze links met nullen opgevuld.";
+ Text[ chinese_simplified ] = "Èç¹ûÎÄ×Ö¶ÌÓÚÖ¸¶¨³¤¶È£¬¾ÍÇëÔÚÎÄ×Ö×ó·½Ìí¼ÓÁã¡£";
+ Text[ greek ] = "Óôç ðåñßðôùóç ðïõ ôï ìÞêïò ôïõ êåßìåíï åßíáé ìéêñüôåñï, óõìðëçñþíåôáé áðü áñéóôåñÜ ìå ìçäåíéêÜ.";
+ Text[ korean ] = "ÅؽºÆ®°¡ ´õ ªÀ¸¸é ¹®ÀÚ¿­ÀÇ ¿ÞÂÊÀÌ 0À¸·Î ¸Þ²ãÁý´Ï´Ù.";
+ Text[ turkish ] = "Metin daha kýsa olursa, sol tarafý sýfýrlar ile doldurulacak.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function DEZIMAL #*=-
+ Resource SC_OPCODE_DECIMAL
+ {
+ String 1 // Description
+ {
+ Text = "Wandelt einen Text aus einem Zahlensystem zur angegebenen Basis in eine positive Ganzzahl." ;
+ Text [ english ] = "Converts a text of a specified number system to positive integer." ;
+ Text [ english_us ] = "Converts a text of a specified number system to a positive integer in the base given." ;
+ Text[ portuguese ] = "Converte o texto de um determinado sistema numérico em número inteiro positivo numa dada base.";
+ Text[ russian ] = "Ïðåîáðàçóåò òåêñò èç ÷èñëîâîé ñèñòåìû çàäàííîãî îñíîâàíèÿ â öåëîå ïîëîæèòåëüíîå ÷èñëî.";
+ Text[ dutch ] = "Converteert een tekst uit een aangegeven getalsysteem in een positief geheel getal.";
+ Text[ french ] = "Convertit un texte à partir d'un système de nombre .en un nombre entier positif d'une base donnée";
+ Text[ spanish ] = "Convierte un texto de un sistema numérico en un número entero positivo para la base dada.";
+ Text[ italian ] = "Converte un testo indicante un numero in un determinato sistema numerico con la base indicata tramite la radice in un numero intero positivo.";
+ Text[ danish ] = "Konverterer en tekst fra et specificeret talsystem til et positivt heltal.";
+ Text[ swedish ] = "Omvandlar en text från ett talsystem för den angivna basen till ett positivt heltal.";
+ Text[ polish ] = "Konwertuje tekst z systemu liczbowego o podanej podstawie na dodatni¹ liczbê ca³kowit¹.";
+ Text[ portuguese_brazilian ] = "Converts a text of a specified number system to positive integer.";
+ Text[ japanese ] = "”’l¼½ÃÑ‚Ì•¶Žš—ñ‚ðŽw’肳‚ꂽÍÞ°½‚ų‚Ì®”‚É•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_simplified ] = "°ÑÒ»¸öÊôÓÚÊý×ÖϵͳµÄÎÄ×Öת»»³ÉÕýÕûÊý¡£";
+ Text[ chinese_traditional ] = "§â¤@­ÓÄÝ©ó¼Æ¦r¨t²Îªº¤å¦rÂà´«¦¨¥¿¾ã¼Æ¡C";
+ Text[ arabic ] = "ÊÍæá äÕÇð ãä äÙÇã ÃÑÞÇã ãÍÏÏ Åáì ÑÞã ÕÍíÍ ãæÌÈ.";
+ Text[ dutch ] = "Converteert een tekst uit een aangegeven getalsysteem in een positief geheel getal.";
+ Text[ chinese_simplified ] = "°ÑÒ»¸öÊôÓÚÊý×ÖϵͳµÄÎÄ×Öת»»³ÉÕýÕûÊý¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé Ýíá êåßìåíï åíüò óõóôÞìáôïò áñéèìþí ùò ðñïò ôç åðéëåãìÝíç âÜóç óå Ýíáí èåôéêü áêÝñáéï áñéèìü.";
+ Text[ korean ] = "ÁöÁ¤µÈ ±âÃʸ¦ À§ÇÑ ¼öü°è·Î µÈ ÅؽºÆ®¸¦ ¾çÀÇ Á¤¼ö·Î ÀüȯÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Belirli bir sayý sistemindeki metni, belirtilen tabanda pozitif tamsayýya dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_TEXT;
+ U2S( HID_FUNC_DEZIMAL );
+ 2; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ english_us ] = "text" ;
+ Text[ portuguese ] = "Texto";
+ Text[ russian ] = "Òåêñò";
+ Text[ dutch ] = "tekst";
+ Text[ french ] = "Texte";
+ Text[ spanish ] = "Texto";
+ Text[ italian ] = "Testo";
+ Text[ danish ] = "Tekst";
+ Text[ swedish ] = "text";
+ Text[ polish ] = "Tekst";
+ Text[ portuguese_brazilian ] = "text";
+ Text[ japanese ] = "•¶Žš—ñ";
+ Text[ chinese_simplified ] = "text";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Der umzuwandelnde Text." ;
+ Text [ english ] = "The text to be converted." ;
+ Text [ english_us ] = "The text to be converted." ;
+ Text[ portuguese ] = "é o texto a converter.";
+ Text[ russian ] = "Ïðåîáðàçóåìûé òåêñò.";
+ Text[ dutch ] = "De te converteren tekst.";
+ Text[ french ] = "Texte à convertir.";
+ Text[ spanish ] = "El texto a convertir.";
+ Text[ italian ] = "Testo da convertire.";
+ Text[ danish ] = "Den tekst som skal konverteres.";
+ Text[ swedish ] = "Texten som skall omvandlas.";
+ Text[ polish ] = "Tekst do przekszta³cenia.";
+ Text[ portuguese_brazilian ] = "The text to be converted.";
+ Text[ japanese ] = "•ÏŠ·‚·‚镶Žš—ñB";
+ Text[ chinese_simplified ] = "Ҫת»»µÄÎÄ×Ö¡£";
+ Text[ chinese_traditional ] = "­nÂà´«ªº¤å¦r¡C";
+ Text[ arabic ] = "ÇáäÕ ÇáãÑÇÏ ÊÍæíáå.";
+ Text[ dutch ] = "De te converteren tekst.";
+ Text[ chinese_simplified ] = "Ҫת»»µÄÎÄ×Ö¡£";
+ Text[ greek ] = "Ôï êåßìåíï ðïõ èá ìåôáôñáðåß.";
+ Text[ korean ] = "º¯È¯µÈ ÅؽºÆ®";
+ Text[ turkish ] = "Dönüþtürülecek metin.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ {
+ Text = "Radix" ;
+ Text [ english ] = "radix" ;
+ Text [ portuguese ] = "Raíz" ;
+ Text [ english_us ] = "radix" ;
+ Text [ portuguese_brazilian ] = "Radix" ;
+ Text [ swedish ] = "rot" ;
+ Text [ danish ] = "Radix" ;
+ Text [ italian ] = "Radice" ;
+ Text [ spanish ] = "Raíz" ;
+ Text [ french ] = "Racine" ;
+ Text [ dutch ] = "radix" ;
+ Text[ chinese_simplified ] = "radix";
+ Text[ russian ] = "Îñíîâàíèå";
+ Text[ polish ] = "Podstawa";
+ Text[ japanese ] = "Šî”";
+ Text[ chinese_traditional ] = "radix";
+ Text[ arabic ] = "Radix";
+ Text[ dutch ] = "radix";
+ Text[ chinese_simplified ] = "radix";
+ Text[ greek ] = "Radix";
+ Text[ korean ] = "񃬔";
+ Text[ turkish ] = "Taban";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ {
+ Text = "Die Zahlenbasis, aus der konvertiert wird, muss im Bereich 2 - 36 liegen." ;
+ Text [ english ] = "The base of the number system for conversion must be in the range 2 - 36." ;
+ Text [ english_us ] = "The base number for conversion must be in the range 2 - 36." ;
+ Text[ portuguese ] = "A base numérica, a partir da qual será efectuada a conversão, terá que estar compreendida entre 2 e 36.";
+ Text[ russian ] = "×èñëîâîå îñíîâàíèå, èç êîòîðîãî îñóùåñòâëÿåòñÿ ïðåîáðàçîâàíèå, äîëæíî íàõîäèòüñÿ â èíòåðâàëå îò 2 äî 36.";
+ Text[ dutch ] = "De basis van het getalsysteem waaruit wordt geconverteerd moet tussen 2 - 36 liggen.";
+ Text[ french ] = "La base numérique, à partir de laquelle convertir, doit être comprise entre 2 et 36.";
+ Text[ spanish ] = "La base numérica de la que se convertirá debe ser entre 2 - 36.";
+ Text[ italian ] = "La base numerica dalla quale si deve effettuare la conversione, deve essere compresa tra 2 e 36.";
+ Text[ danish ] = "Den talbasis, som skal konverteres fra, skal ligge indenfor området 2 - 36.";
+ Text[ swedish ] = "Talbasen från vilken konverteringen sker, måste ligga i området 2 - 36.";
+ Text[ polish ] = "Podstawa liczb do konwersji musi byæ zawarta w przedziale pomiêdzy 2 - 36.";
+ Text[ portuguese_brazilian ] = "The base of the number system for conversion must be in the range 2 - 36.";
+ Text[ japanese ] = "•ÏŠ·‚³‚ê‚é‹L”–@‚̊Í2`36‚͈̔͂ɂȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñB";
+ Text[ chinese_simplified ] = "ת»»ºóµÄÊý×Ö±ØÐëλÓÚ 2 ºÍ 36 Ö®¼ä¡£";
+ Text[ chinese_traditional ] = "©Ò­nÂà´«°ò¼Æ¥²¶·¬O¦b 2 - 36 ¤§¶¡¡C";
+ Text[ arabic ] = "ÃÓÇÓ ÇáÃÑÞÇã ÇáÊí ÓæÝ íÊã ÇáÊÍæíá ãäåÇ íÌÈ Ãä íßæä Ýí ÇáäØÇÞ ÇáÐí íÊÑÇæÍ Èíä 2 æ 36.";
+ Text[ dutch ] = "De basis van het getalsysteem waaruit wordt geconverteerd moet tussen 2 - 36 liggen.";
+ Text[ chinese_simplified ] = "ת»»ºóµÄÊý×Ö±ØÐëλÓÚ 2 ºÍ 36 Ö®¼ä¡£";
+ Text[ greek ] = "Ç âÜóç ôïõ áñéèìïý ðïõ èá ìåôáôñáðåß ðñÝðåé íá Ý÷åé ôéìÞ áðü 2 Ýùò 36.";
+ Text[ korean ] = "º¯È¯À»À§ÇÑ ±âº»¼ö´Â 2-36 ÀÇ ¿µ¿ª¿¡ ÀÖ¾î¾ßÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Dönüþüm kaynaðý taban sayýsý 2 - 36 aralýðýnda bulunmalýdýr.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ // -=*# Resource for function UMRECHNEN #*=-
+ Resource SC_OPCODE_CONVERT
+ {
+ String 1 // Description
+ {
+ Text = "Rechnet einen Wert anhand eines Eintrags der convert.ini Tabelle um." ;
+ Text [ english ] = "Converts a value according to an entry of the convert.ini table." ;
+ Text[ english_us ] = "Converts a value according to an entry in the convert.ini table.";
+ Text[ portuguese ] = "Converte um valor a partir de uma entrada da tabela convert.ini.";
+ Text[ russian ] = "Ïðåîáðàçóåò çíà÷åíèå íà îñíîâàíèè ýëåìåíòîâ òàáëèöû convert.ini.";
+ Text[ dutch ] = "Converteert een waarde aan de hand van een item in de tabel convert.ini.";
+ Text[ french ] = "Convertit une valeur à partir d'une entrée de la table du fichier convert.ini.";
+ Text[ spanish ] = "Convierte un valor en base a una entrada de la tabla convert.ini";
+ Text[ italian ] = "Converte un valore in base a una voce della tabella convert.ini.";
+ Text[ danish ] = "Konverterer en værdi ved hjælp af et element i convert.ini tabellen.";
+ Text[ swedish ] = "Räknar om ett värde med hjälp av en post i convert.ini-tabellen.";
+ Text[ polish ] = "Konwertuje wartoϾ na podstawie wpisu tabeli convert.ini.";
+ Text[ portuguese_brazilian ] = "Converts a value according to an entry of the convert.ini table.";
+ Text[ japanese ] = "convert.ini ðÌÞÙ‚Ì“ü—Í€–Ú‚ð‚à‚Æ‚É‚µ‚Ä”’l‚Ì’PˆÊ‚ð•ÏŠ·‚µ‚Ü‚·B";
+ Text[ chinese_simplified ] = "¸ù¾Ý convert.ini ÎļþÄÚµÄÌõĿת»»Ò»¸öÊýÖµµÄ»õ±Òµ¥Î»¡£";
+ Text[ chinese_traditional ] = "®Ú¾Ú¤@­Ó convert.ini ¤å¥óªº¶µ¥ØÂà´«¤@­Ó¼Æ­È¡C";
+ Text[ arabic ] = "ÊÍæá ÞíãÉ ÊÈÚÇð áÅÏÎÇá Ýí ÌÏæá convert.ini.";
+ Text[ dutch ] = "Converteert een waarde aan de hand van een item in de tabel convert.ini.";
+ Text[ chinese_simplified ] = "¸ù¾Ý convert.ini ÎļþÄÚµÄÌõĿת»»Ò»¸öÊýÖµµÄ»õ±Òµ¥Î»¡£";
+ Text[ greek ] = "ÌåôáôñÝðåé ìéá ôéìÞ óýìöùíá ìå ìéá åããñáöÞ ôïõ ðßíáêá convert.ini.";
+ Text[ korean ] = "convert.ini¿¡ ÀÖ´Â Ç׸ñ¿¡µû¶ó °ªÀ» Å×À̺í·Î º¯È¯";
+ Text[ turkish ] = "convert.ini tablosundaki giriþe göre deðeri dönüþtürür.";
+ Text[ language_user1 ] = " ";
+ };
+ ExtraData =
+ {
+ ID_FUNCTION_GRP_MATH;
+ U2S( HID_FUNC_UMRECHNEN );
+ 3; 0; 0; 0;
+ };
+ String 2 // Name of Parameter 1
+ {
+ Text = "Wert" ;
+ Text [ english ] = "value" ;
+ Text [ norwegian ] = "Wert" ;
+ Text [ italian ] = "val" ;
+ Text [ portuguese_brazilian ] = "Wert" ;
+ Text [ portuguese ] = "Valor" ;
+ Text [ finnish ] = "Wert" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ french ] = "Valeur" ;
+ Text [ swedish ] = "Värde" ;
+ Text [ dutch ] = "Waarde" ;
+ Text [ spanish ] = "Valor" ;
+ Text [ english_us ] = "value" ;
+ Text[ chinese_simplified ] = "Value";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "Value";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ dutch ] = "Waarde";
+ Text[ chinese_simplified ] = "Value";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª";
+ Text[ turkish ] = "Deðer";
+ Text[ language_user1 ] = " ";
+ };
+ String 3 // Description of Parameter 1
+ {
+ Text = "Der umzurechnende Wert." ;
+ Text [ english ] = "The value to be converted." ;
+ Text[ english_us ] = "The value to be converted.";
+ Text[ portuguese ] = "Valor a converter.";
+ Text[ russian ] = "Ïðåîáðàçóåìîå çíà÷åíèå.";
+ Text[ dutch ] = "De waarde die u wilt coverteren";
+ Text[ french ] = "Valeur à convertir.";
+ Text[ spanish ] = "El valor a convertir.";
+ Text[ italian ] = "Valore da convertire.";
+ Text[ danish ] = "Den værdi som skal konverteres.";
+ Text[ swedish ] = "Värdet som skall räknas om.";
+ Text[ polish ] = "Wartoœæ do przekszta³cenia.";
+ Text[ portuguese_brazilian ] = "The value to be converted.";
+ Text[ japanese ] = "•ÏŠ·‚·‚é’lB";
+ Text[ chinese_simplified ] = "Ҫת»»µÄÊýÖµ¡£";
+ Text[ chinese_traditional ] = "­nÂà´«ªº¼Æ­È¡C";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãÑÇÏ ÊÍæíáåÇ.";
+ Text[ dutch ] = "De waarde die u wilt coverteren";
+ Text[ chinese_simplified ] = "Ҫת»»µÄÊýÖµ¡£";
+ Text[ greek ] = "Ç ôéìÞ ðïõ ðñüêåéôáé íá ìåôáôñáðåß";
+ Text[ korean ] = "º¯È¯µÈ °ª";
+ Text[ turkish ] = "Dönüþtürülen deðer.";
+ Text[ language_user1 ] = " ";
+ };
+ String 4 // Name of Parameter 2
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ english_us ] = "text" ;
+ Text[ portuguese ] = "Texto";
+ Text[ russian ] = "Òåêñò";
+ Text[ dutch ] = "Tekst";
+ Text[ french ] = "Texte";
+ Text[ spanish ] = "Texto";
+ Text[ italian ] = "testo";
+ Text[ danish ] = "Tekst";
+ Text[ swedish ] = "text";
+ Text[ polish ] = "tekst";
+ Text[ portuguese_brazilian ] = "text";
+ Text[ japanese ] = "•ÏŠ·‘O’PˆÊ";
+ Text[ chinese_simplified ] = "text";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 5 // Description of Parameter 2
+ {
+ Text = "Einheit, aus der umgerechnet wird, Groß-/Kleinschreibung ist relevant." ;
+ Text [ english ] = "Unit to convert from, case sensitive." ;
+ Text[ english_us ] = "Unit to which something is converted, case sensitivity is relevant.";
+ Text[ portuguese ] = "Unidade de conversão; relevância de Maiúsculas/Minúsculas.";
+ Text[ russian ] = "Åäèíèöà, èç êîòîðîé îñóùåñòâëÿåòñÿ ïðåîáðàçîâàíèå, ñ ó÷åòîì ðåãèñòðà.";
+ Text[ dutch ] = "Eenheid van waaruit wordt omgerekend, hoofd-/kleine letters zijn relevant.";
+ Text[ french ] = "Unité à partir de laquelle convertir ; respecter la casse.";
+ Text[ spanish ] = "Unidad de la que se convierte; diferenciación mayúsculas/minúsculas";
+ Text[ italian ] = "Unità a partire dalla quale si converte; sensibile all'utilizzo delle maiuscole/minuscole.";
+ Text[ danish ] = "Enhed som konverteres fra (skelner mellem store og små bogstaver).";
+ Text[ swedish ] = "Enhet från vilken omräkning sker, stora/små bokstäver är relevant.";
+ Text[ polish ] = "Jednostka, z której bêdzie siê przeliczaæ; wa¿na jest pisownia ma³ych i du¿ych liter.";
+ Text[ portuguese_brazilian ] = "Unit to convert from, case sensitive.";
+ Text[ japanese ] = "•ÏŠ·‘O‚Ì”’l‚Ì’PˆÊB’PˆÊ–¼‚Æ—ªŒê‚̑啶Žš‚Ƭ•¶Žš‚Í‹æ•Ê‚³‚ê‚Ü‚·B";
+ Text[ chinese_simplified ] = "Òª±»×ª»»µÄÔ­ÓеĻõ±Òµ¥Î»£¬Çø·Ö´óСд¡£";
+ Text[ chinese_traditional ] = "­n³QÂà´«ªº­ì¦³ªº³f¹ô³æ¦ì¡M°Ï¤À¤j¤p¼g¡C";
+ Text[ arabic ] = "ÇáæÍÏÉ ÇáÊí íÊã ÇáÊÍæíá ãäåÇ (ãÑÇÚÇÉ ÇáÃÍÑÝ ÇáßÈíÑÉ æÇáÕÛíÑÉ).";
+ Text[ dutch ] = "Eenheid van waaruit wordt omgerekend, hoofd-/kleine letters zijn relevant.";
+ Text[ chinese_simplified ] = "Òª±»×ª»»µÄÔ­ÓеĻõ±Òµ¥Î»£¬Çø·Ö´óСд¡£";
+ Text[ greek ] = "ÌïíÜäá áðü ôçí ïðïßá ãßíåôáé ç ìåôáôñïðÞ. ÐåæÜ/Êåöáëáßá ãñÜììáôá èá ëáìâÜíïíôáé õðüøç.";
+ Text[ korean ] = "ȯ»êµÇ´Â ´ÜÀ§¿¡ À־ ´ë/¼Ò¹®ÀÚ´Â Áß¿äÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Dönüþtürme kaynak birimi, büyük/küçük harf duyarlýlýðý önemli.";
+ Text[ language_user1 ] = " ";
+ };
+ String 6 // Name of Parameter 3
+ {
+ Text = "Text" ;
+ Text [ english ] = "text" ;
+ Text [ english_us ] = "text" ;
+ Text[ portuguese ] = "Texto";
+ Text[ russian ] = "Òåêñò";
+ Text[ dutch ] = "Tekst";
+ Text[ french ] = "Texte";
+ Text[ spanish ] = "Texto";
+ Text[ italian ] = "Testo";
+ Text[ danish ] = "Tekst";
+ Text[ swedish ] = "text";
+ Text[ polish ] = "tekst";
+ Text[ portuguese_brazilian ] = "text";
+ Text[ japanese ] = "•ÏŠ·Œã’PˆÊ";
+ Text[ chinese_simplified ] = "text";
+ Text[ chinese_traditional ] = "text";
+ Text[ arabic ] = "ÇáäÕ";
+ Text[ dutch ] = "Tekst";
+ Text[ chinese_simplified ] = "text";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ String 7 // Description of Parameter 3
+ {
+ Text = "Einheit, in die umgerechnet wird, Groß-/Kleinschreibung ist relevant." ;
+ Text [ english ] = "Unit to convert to, case sensitive." ;
+ Text[ english_us ] = "Unit to which something is converted, case sensitivity is relevant.";
+ Text[ portuguese ] = "Unidade de conversão; relevância de Maiúsculas/Minúsculas";
+ Text[ russian ] = "Åäèíèöà, â êîòîðóþ îñóùåñòâëÿåòñÿ ïðåîáðàçîâàíèå, ñ ó÷åòîì ðåãèñòðà.";
+ Text[ dutch ] = "Eenheid waarnaar wordt geconverteerd, hoofd-/kleine letters zijn relevant.";
+ Text[ french ] = "Unité de conversion ; respecter la casse.";
+ Text[ spanish ] = "Unidad a convertir; diferenciación mayúsculas/minúsculas";
+ Text[ italian ] = "Unità nella quale si converte; sensibile all'utilizzo delle maiuscole/minuscole.";
+ Text[ danish ] = "Enhed som konverteres til (skelner mellem store og små bogstaver).";
+ Text[ swedish ] = "Enhet till vilken omräkning sker, stora/små bokstäver är relevant.";
+ Text[ polish ] = "Jednostka do przeliczenia (uwzglêdnij du¿e i ma³e litery).";
+ Text[ portuguese_brazilian ] = "Unit to convert to, case sensitive.";
+ Text[ japanese ] = "•ÏŠ·Œã‚Ì”’l‚Ì’PˆÊB’PˆÊ–¼‚Æ—ªŒê‚̑啶Žš‚Ƭ•¶Žš‚Í‹æ•Ê‚³‚ê‚Ü‚·B";
+ Text[ chinese_simplified ] = "Ҫת»»³ÉµÄ»õ±Òµ¥Î»£¬Çø·Ö´óСд¡£";
+ Text[ chinese_traditional ] = "­nÂà´«¦¨ªº³f¹ô³æ¦ì¡M°Ï¤À¤j¤p¼g¡C";
+ Text[ arabic ] = "ÇáæÍÏÉ ÇáÊí íÊã ÇáÊÍæíá ÅáíåÇ (ãÑÇÚÇÉ ÇáÃÍÑÝ ÇáßÈíÑÉ æÇáÕÛíÑÉ).";
+ Text[ dutch ] = "Eenheid waarnaar wordt geconverteerd, hoofd-/kleine letters zijn relevant.";
+ Text[ chinese_simplified ] = "Ҫת»»³ÉµÄ»õ±Òµ¥Î»£¬Çø·Ö´óСд¡£";
+ Text[ greek ] = "ÌïíÜäá áðü ôçí ïðïßá ãßíåôáé ç ìåôáôñïðÞ. ÐåæÜ/Êåöáëáßá ãñÜììáôá èá ëáìâÜíïíôáé õðüøç.";
+ Text[ korean ] = "ȯ»êµÇ´Â ´ÜÀ§¿¡ À־ ´ë/¼Ò¹®ÀÚ´Â Áß¿äÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Dönüþtürme hedef birimi, büyük/küçük harf duyarlýlýðý önemli.";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+#if defined(U2S)
+#undef U2S
+#endif
diff --git a/sc/source/ui/src/scstring.src b/sc/source/ui/src/scstring.src
new file mode 100644
index 000000000000..f55f56e59e54
--- /dev/null
+++ b/sc/source/ui/src/scstring.src
@@ -0,0 +1,2855 @@
+/*************************************************************************
+ *
+ * $RCSfile: scstring.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+
+
+
+
+
+
+
+
+
+
+#include "sc.hrc" // -> #include <sfx.hrc>
+
+
+
+ // Strings fuer Interface-Namen ------------------------------------------
+
+String SCSTR_APPLICATION
+{
+ Text = "StarCalc 5.0" ;
+ Text [ ENGLISH ] = "StarCalc 5.0" ;
+ Text [ norwegian ] = "StarCalc 5.0" ;
+ Text [ italian ] = "StarCalc 5.0" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc 4.0" ;
+ Text [ portuguese ] = "StarCalc 5.0" ;
+ Text [ finnish ] = "StarCalc 5.0" ;
+ Text [ danish ] = "StarCalc 5.0" ;
+ Text [ french ] = "StarCalc 5.0" ;
+ Text [ swedish ] = "StarCalc 5.0" ;
+ Text [ dutch ] = "StarCalc 5.0" ;
+ Text [ spanish ] = "StarCalc 5.0" ;
+ Text [ english_us ] = "StarCalc 5.0" ;
+ Text[ chinese_simplified ] = "StarCalc 5.0";
+ Text[ russian ] = "StarCalc 5.0";
+ Text[ polish ] = "StarCalc 5.0";
+ Text[ japanese ] = "StarCalc 5.0";
+ Text[ chinese_traditional ] = "StarOffice Calc 5.0";
+ Text[ arabic ] = "StarCalc 5.0";
+ Text[ greek ] = "Star Calc 5.0";
+ Text[ korean ] = "StarOffice Calc 5.0";
+ Text[ turkish ] = "StarCalc 5.0";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_40_APPLICATION
+{
+ Text = "StarCalc 4.0" ;
+ Text [ ENGLISH ] = "StarCalc 4.0" ;
+ Text [ norwegian ] = "StarCalc 4.0" ;
+ Text [ italian ] = "StarCalc 4.0" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc 4.0" ;
+ Text [ portuguese ] = "StarCalc 4.0" ;
+ Text [ finnish ] = "StarCalc 4.0" ;
+ Text [ danish ] = "StarCalc 4.0" ;
+ Text [ french ] = "StarCalc 4.0" ;
+ Text [ swedish ] = "StarCalc 4.0" ;
+ Text [ dutch ] = "Star Calc 4.0" ;
+ Text [ spanish ] = "StarCalc 4.0" ;
+ Text [ english_us ] = "StarCalc 4.0" ;
+ Text[ chinese_simplified ] = "StarCalc 4.0";
+ Text[ russian ] = "StarCalc 4.0";
+ Text[ polish ] = "StarCalc 4.0";
+ Text[ japanese ] = "StarCalc 4.0";
+ Text[ chinese_traditional ] = "StarOffice Calc 4.0";
+ Text[ arabic ] = "Star Calc 4.0";
+ Text[ greek ] = "StarCalc 4.0";
+ Text[ korean ] = "StarOffice Calc 4.0";
+ Text[ turkish ] = "StarCalc 4.0";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_30_APPLICATION
+{
+ Text = "StarCalc 3.0" ;
+ Text [ ENGLISH ] = "StarCalc 3.0" ;
+ Text [ norwegian ] = "StarCalc 3.0" ;
+ Text [ italian ] = "StarCalc 3.0" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc 3.0" ;
+ Text [ portuguese ] = "StarCalc 3.0" ;
+ Text [ finnish ] = "StarCalc 3.0" ;
+ Text [ danish ] = "StarCalc 3.0" ;
+ Text [ french ] = "StarCalc 3.0" ;
+ Text [ swedish ] = "StarCalc 3.0" ;
+ Text [ dutch ] = "StarCalc 3.0" ;
+ Text [ spanish ] = "StarCalc 3.0" ;
+ Text [ english_us ] = "StarCalc 3.0" ;
+ Text[ chinese_simplified ] = "StarCalc 3.0";
+ Text[ russian ] = "StarCalc 3.0";
+ Text[ polish ] = "StarCalc 3.0";
+ Text[ japanese ] = "StarCalc 3.0";
+ Text[ chinese_traditional ] = "StarOffice Calc 3.0";
+ Text[ arabic ] = "Star Calc 3.0";
+ Text[ greek ] = "Star Calc 3.0";
+ Text[ korean ] = "StarOffice Calc 3.0";
+ Text[ turkish ] = "StarCalc 3.0";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_LONG_SCDOC_NAME
+{
+ Text = "StarOffice 5.0 Tabelle" ;
+ Text [ ENGLISH ] = "StarOffice 5.0 Table" ;
+ Text [ dutch ] = "StarOffice 5.0 werkblad" ;
+ Text [ english_us ] = "StarOffice 5.0 Spreadsheet" ;
+ Text [ swedish ] = "StarOffice 5.0 tabell" ;
+ Text [ danish ] = "StarOffice Calc 5.0 regneark" ;
+ Text [ italian ] = "Foglio di calcolo StarOffice 5.0" ;
+ Text [ spanish ] = "Hoja de cálculo de StarOffice 5.0" ;
+ Text [ french ] = "Classeur StarOffice 5.0" ;
+ Text [ portuguese ] = "StarOffice 5.0 Folha de cálculo" ;
+ Text [ portuguese_brazilian ] = "StarOffice 4.0 Tabelle" ;
+ Text[ chinese_simplified ] = "StarOffice 5.0 ¹¤×÷±í";
+ Text[ russian ] = "Ëèñò â StarOffice 5.0";
+ Text[ polish ] = "Arkusz kalkulacyjny StarOffice 5.0";
+ Text[ japanese ] = "StarOffice 5.0 •\\";
+ Text[ chinese_traditional ] = "StarOffice 5.0 ¤u§@ªí";
+ Text[ arabic ] = "ÌÏæá StarOffice Calc 5.0";
+ Text[ greek ] = "ÄéÜãñáììá StarOffice 5.0";
+ Text[ korean ] = "StarOffice Calc 5.0 ½ºÇÁ·¹µå ½ÃÆ®";
+ Text[ turkish ] = "StarOffice 5.0 tablosu";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_40_LONG_DOCNAME
+{
+ Text = "StarOffice 4.0 Tabelle" ;
+ Text [ ENGLISH ] = "StarOffice 4.0 Table" ;
+ Text [ dutch ] = "StarCalc 4.0 werkblad" ;
+ Text [ english_us ] = "Spreadsheet (StarCalc 4.0)" ;
+ Text [ swedish ] = "Star 4.0 tabell" ;
+ Text [ danish ] = "StarCalc 4.0 regneark" ;
+ Text [ italian ] = "Foglio elettronico StarOffice 4.0" ;
+ Text [ spanish ] = "Hoja de cálculo de StarOffice 4.0" ;
+ Text [ french ] = "Classeur StarCalc 4.0" ;
+ Text [ portuguese ] = "Folha de cálculo StarCalc 4.0" ;
+ Text [ portuguese_brazilian ] = "StarOffice 4.0 Tabelle" ;
+ Text[ chinese_simplified ] = "StarCalc 4.0 ¹¤×÷±í";
+ Text[ russian ] = "Ëèñò â StarOffice 4.0";
+ Text[ polish ] = "Arkusz kalkulacyjny StarCalc 4.0";
+ Text[ japanese ] = "StarCalc 4.0 •\\ŒvŽZ";
+ Text[ chinese_traditional ] = "StarOffice 4.0 ¤u§@ªí";
+ Text[ arabic ] = "ÌÏæá StarCalc 4.0";
+ Text[ greek ] = "Star Calc 4.0 - Ðßíáêáò";
+ Text[ korean ] = "½ºÇÁ·¹µå ½ÃÆ® (StarOffice Calc 4.0)";
+ Text[ turkish ] = "StarCalc 4.0 tablosu";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_30_LONG_DOCNAME
+{
+ Text = "StarCalc 3.0 Tabelle" ;
+ Text [ ENGLISH ] = "StarCalc 3.0 Table" ;
+ Text [ dutch ] = "StarCalc 3.0 werkblad" ;
+ Text [ english_us ] = "StarCalc 3.0 Spreadsheet" ;
+ Text [ swedish ] = "StarCalc 3.0 tabell" ;
+ Text [ danish ] = "StarCalc 3.0 regneark" ;
+ Text [ italian ] = "Foglio elettronico StarCalc 3.0" ;
+ Text [ spanish ] = "Hoja de cálculo de StarCalc 3.0" ;
+ Text [ french ] = "Classeur StarCalc 3.0" ;
+ Text [ portuguese ] = "StarCalc 3.0 Folha de cálculo" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc 3.0 Tabelle" ;
+ Text[ chinese_simplified ] = "StaCalc 3.0 ¹¤×÷±í";
+ Text[ russian ] = "Ëèñò â StarCalc 3.0";
+ Text[ polish ] = "Arkusz kalkulacyjny StarCalc 3.0";
+ Text[ japanese ] = "StarCalc 3.0 •\\ŒvŽZ";
+ Text[ chinese_traditional ] = "StarOffice Calc 3.0 ¤u§@ªí";
+ Text[ arabic ] = "ÌÏæá Star Calc 3.0";
+ Text[ greek ] = "StarCalc 3.0 - Ðßíáêáò";
+ Text[ korean ] = "StarOffice Calc 3.0 ½ºÇÁ·¹µå ½ÃÆ®";
+ Text[ turkish ] = "StarCalc 3.0 tablosu";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_SHORT_SCDOC_NAME
+{
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Tabelle" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Foglio di calcolo" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Folha de cálculo" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Regneark" ;
+ Text [ french ] = "Feuille de calcul" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Werkblad" ;
+ Text [ spanish ] = "Hoja de cálculo" ;
+ Text [ english_us ] = "Spreadsheet" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ russian ] = "Ëèñò";
+ Text[ polish ] = "Arkusz kalkulacyjny";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "¤u§@ªí";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "½ºÇÁ·¹µå ½ÃÆ®";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_HUMAN_SCDOC_NAME
+{
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Tabelle" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Foglio di calcolo" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Folha de cálculo" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Regneark" ;
+ Text [ french ] = "Feuille de calcul" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Werkblad" ;
+ Text [ spanish ] = "Hoja de cálculo" ;
+ Text [ english_us ] = "Spreadsheet" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ russian ] = "Ëèñò";
+ Text[ polish ] = "Arkusz kalkulacyjny";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "¤u§@ªí";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "Ðßíáêáò";
+ Text[ korean ] = "½ºÇÁ·¹µå ½ÃÆ®";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_DOCSHELL
+{
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Folha" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Ark" ;
+ Text [ french ] = "Feuille" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Werkblad" ;
+ Text [ spanish ] = "Hoja" ;
+ Text [ english_us ] = "Sheet" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ russian ] = "Ëèñò";
+ Text[ polish ] = "Arkusz";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "¤u§@ªí";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "Öýëëï";
+ Text[ korean ] = "½ÃÆ®";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_TABVIEWSHELL
+{
+ Text = "Zellen" ;
+ Text [ ENGLISH ] = "Cells" ;
+ Text [ norwegian ] = "Celler" ;
+ Text [ italian ] = "Celle" ;
+ Text [ portuguese_brazilian ] = "Células" ;
+ Text [ portuguese ] = "Células" ;
+ Text [ finnish ] = "Solut" ;
+ Text [ danish ] = "Celler" ;
+ Text [ french ] = "Cellules" ;
+ Text [ swedish ] = "Celler" ;
+ Text [ dutch ] = "Cellen" ;
+ Text [ spanish ] = "Celdas" ;
+ Text [ english_us ] = "Cells" ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñ";
+ Text[ russian ] = "ß÷åéêè";
+ Text[ polish ] = "Komórki";
+ Text[ japanese ] = "¾Ù";
+ Text[ chinese_traditional ] = "Àx¦s®æ";
+ Text[ arabic ] = "ÇáÎáÇíÇ";
+ Text[ greek ] = "ÊåëéÜ";
+ Text[ korean ] = "¼¿";
+ Text[ turkish ] = "Hücre";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CELLSHELL
+{
+ Text = "Zellfunktionen" ;
+ Text [ ENGLISH ] = "Functions for Cells" ;
+ Text[ english_us ] = "Functions for Cells";
+ Text[ portuguese ] = "Funções de células";
+ Text[ russian ] = "Ôóíêöèè ÿ÷åéêè";
+ Text[ greek ] = "Ëåéôïõñãßåò êåëéþí";
+ Text[ dutch ] = "Celfuncties";
+ Text[ french ] = "Fonctions de cellule";
+ Text[ spanish ] = "Funciones de celda";
+ Text[ italian ] = "Funzione delle celle";
+ Text[ danish ] = "Cellefunktioner";
+ Text[ swedish ] = "Cellfunktioner";
+ Text[ polish ] = "Funkcje komórek";
+ Text[ portuguese_brazilian ] = "Functions for Cells";
+ Text[ japanese ] = "¾Ù‚ÌŠÖ”";
+ Text[ korean ] = "¼¿ ±â´É";
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñº¯Êý";
+ Text[ chinese_traditional ] = "Àx¦s®æ¥\\¯à";
+ Text[ arabic ] = "ãåÇã ÇáÎáÇíÇ";
+ Text[ turkish ] = "Hücre iþlevi";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_FORMATSHELL
+{
+ Text = "Zellformate" ;
+ Text [ ENGLISH ] = "Formats for Cells" ;
+ Text[ english_us ] = "Formats for Cells";
+ Text[ portuguese ] = "Formatos de células";
+ Text[ russian ] = "Ôîðìàòû ÿ÷åéêè";
+ Text[ greek ] = "ÌïñöÝò êåëéþí";
+ Text[ dutch ] = "Celformaten";
+ Text[ french ] = "Formats de cellule";
+ Text[ spanish ] = "Formatos de celda";
+ Text[ italian ] = "Formato delle celle";
+ Text[ danish ] = "Celleformater";
+ Text[ swedish ] = "Cellformat";
+ Text[ polish ] = "Formaty komórek";
+ Text[ portuguese_brazilian ] = "Formats for Cells";
+ Text[ japanese ] = "¾Ù‚Ì‘Ž®";
+ Text[ korean ] = "¼¿ ¼­½Ä";
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñ¸ñʽ";
+ Text[ chinese_traditional ] = "Àx¦s®æ®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞÇÊ ÇáÎáÇíÇ";
+ Text[ turkish ] = "Hücre formatý";
+ Text[ language_user1 ] = " ";
+};
+
+
+String SCSTR_DRAWSHELL
+{
+ Text = "Grafikobjekte" ;
+ Text [ ENGLISH ] = "Grafical objects" ;
+ Text [ norwegian ] = "Grafiske objekter " ;
+ Text [ italian ] = "Oggetti grafici" ;
+ Text [ portuguese_brazilian ] = "Objetos gráficos" ;
+ Text [ portuguese ] = "Objectos gráficos" ;
+ Text [ finnish ] = "Graafiset objektit" ;
+ Text [ danish ] = "Grafiske objekter" ;
+ Text [ french ] = "Objets graphiques" ;
+ Text [ swedish ] = "Grafiska objekt" ;
+ Text [ dutch ] = "Grafische objecten" ;
+ Text [ spanish ] = "Objetos gráficos" ;
+ Text [ english_us ] = "Graphics objects" ;
+ Text[ chinese_simplified ] = "ͼÐζÔÏó";
+ Text[ russian ] = "Ãðàôè÷åñêèå îáúåêòû";
+ Text[ polish ] = "Obiekty graficzne";
+ Text[ japanese ] = "}Œ`•`‰æµÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "¹Ï¤ùª«¥ó";
+ Text[ arabic ] = "ßÇÆäÇÊ ÕæÑÉ";
+ Text[ greek ] = "Áíôéêåßìåíá ãñáöéêþí";
+ Text[ korean ] = "±×·¡ÇÈ °³Ã¼";
+ Text[ turkish ] = "Grafik nesnesi";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_DRAWTEXTSHELL
+{
+ Text = "Textobjekte" ;
+ Text [ ENGLISH ] = "Text objects" ;
+ Text [ norwegian ] = "Tekst objekter" ;
+ Text [ italian ] = "Oggetti di testo" ;
+ Text [ portuguese_brazilian ] = "Objetos de texto" ;
+ Text [ portuguese ] = "Objectos de texto" ;
+ Text [ finnish ] = "Tekstiobjektit" ;
+ Text [ danish ] = "Tekstobjekter" ;
+ Text [ french ] = "Objets de texte" ;
+ Text [ swedish ] = "Textobjekt" ;
+ Text [ dutch ] = "Tekstobjecten" ;
+ Text [ spanish ] = "Objetos de texto" ;
+ Text [ english_us ] = "Text objects" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö¶ÔÏó";
+ Text[ russian ] = "Òåêñòîâûå îáúåêòû";
+ Text[ polish ] = "Obiekty tekstowe";
+ Text[ japanese ] = "÷½ÄµÌÞ¼Þª¸Ä";
+ Text[ chinese_traditional ] = "¤å¦rª«¥ó";
+ Text[ arabic ] = "ßÇÆäÇÊ ÇáäÕ";
+ Text[ greek ] = "Áíôéêåßìåíá êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® °³Ã¼";
+ Text[ turkish ] = "Metin nesnesi";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_DRAWFORMSHELL
+{
+ Text = "Formularobjekte" ;
+ Text [ ENGLISH ] = "Form objects" ;
+ Text[ english_us ] = "Form objects";
+ Text[ portuguese ] = "Objectos de formulário";
+ Text[ russian ] = "Îáúåêòû ôîðìóëÿðà";
+ Text[ dutch ] = "Formulierobjecten";
+ Text[ french ] = "Objets de formulaire";
+ Text[ spanish ] = "Objetos de formulario";
+ Text[ italian ] = "Oggetti per formulario";
+ Text[ danish ] = "Formularobjekter";
+ Text[ swedish ] = "Formulärobjekt";
+ Text[ polish ] = "Obiekty formularzy";
+ Text[ portuguese_brazilian ] = "Form objects";
+ Text[ japanese ] = "Ì«°Ñ µÌÞ¼Þª¸Ä";
+ Text[ chinese_simplified ] = "±íµ¥¶ÔÏó";
+ Text[ chinese_traditional ] = "ªí³æª«¥ó";
+ Text[ arabic ] = "ßÇÆäÇÊ ÇáÇÓÊãÇÑÉ";
+ Text[ greek ] = "Áíôéêåßìåíá öüñìáò";
+ Text[ korean ] = "¾ç½Ä °³Ã¼";
+ Text[ turkish ] = "Form nesnesi";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CHARTSHELL
+{
+ Text = "Chart-Objekte" ;
+ Text [ ENGLISH ] = "Chart-objects" ;
+ Text[ english_us ] = "Chart objects";
+ Text[ portuguese ] = "Objectos de gráficos";
+ Text[ russian ] = "Îáúåêòû äèàãðàììû";
+ Text[ greek ] = "Áíôéêåßìåíá äéáãñÜììáôïò";
+ Text[ dutch ] = "Chart-objecten";
+ Text[ french ] = "Objets de diagramme";
+ Text[ spanish ] = "Objetos de diagrama";
+ Text[ italian ] = "Diagrammi";
+ Text[ danish ] = "Diagram-objekter";
+ Text[ swedish ] = "Chart-objekt";
+ Text[ polish ] = "Obiekty wykresu";
+ Text[ portuguese_brazilian ] = "Chart-objects";
+ Text[ japanese ] = "¸Þ×̵̂ÌÞ¼Þª¸Ä";
+ Text[ korean ] = "Â÷Æ®°³Ã¼";
+ Text[ chinese_simplified ] = "ͼ±í¶ÔÏó";
+ Text[ chinese_traditional ] = "¹Ïªíª«É²";
+ Text[ arabic ] = "ßÇÆäÇÊ ÇáÑÓã ÇáÈíÇäí";
+ Text[ turkish ] = "Þema nesnesi";
+};
+
+String SCSTR_OLEOBJECTSHELL
+{
+ Text = "OLE-Objekte" ;
+ Text [ ENGLISH ] = "OLE-objects" ;
+ Text[ english_us ] = "OLE objects";
+ Text[ portuguese ] = "Objectos OLE";
+ Text[ russian ] = "Îáúåêòû OLE";
+ Text[ greek ] = "Áíôéêåßìåíá OLE";
+ Text[ dutch ] = "OLE-objecten";
+ Text[ french ] = "Objets OLE";
+ Text[ spanish ] = "Objetos OLE";
+ Text[ italian ] = "Oggetti OLE";
+ Text[ danish ] = "OLE-objekter";
+ Text[ swedish ] = "OLE-objekt";
+ Text[ polish ] = "Obiekty OLE";
+ Text[ portuguese_brazilian ] = "OLE-objects";
+ Text[ japanese ] = "OLEµÌÞ¼Þª¸Ä";
+ Text[ korean ] = "OLE °³Ã¼";
+ Text[ chinese_simplified ] = "OLE ¶ÔÏó";
+ Text[ chinese_traditional ] = "OLE ª«É²";
+ Text[ arabic ] = "ßÇÆäÇÊ OLE";
+ Text[ turkish ] = "OLE nesnesi";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_GRAPHICSHELL
+{
+ Text = "Grafik" ;
+ Text [ ENGLISH ] = "Graphic" ;
+ Text[ english_us ] = "Graphics";
+ Text[ portuguese ] = "Gráfico";
+ Text[ russian ] = "Ðèñóíîê";
+ Text[ greek ] = "Ãñáöéêü";
+ Text[ dutch ] = "Afbeeldingen";
+ Text[ french ] = "Image";
+ Text[ spanish ] = "Imagen";
+ Text[ italian ] = "Immagine";
+ Text[ danish ] = "Grafik";
+ Text[ swedish ] = "Grafik";
+ Text[ polish ] = "Grafika";
+ Text[ portuguese_brazilian ] = "Graphic";
+ Text[ japanese ] = "¸Þ×̨¯¸";
+ Text[ korean ] = "±×·¡ÇÈ";
+ Text[ chinese_simplified ] = "ͼÐÎ";
+ Text[ chinese_traditional ] = "¹Ï§Î";
+ Text[ arabic ] = "ÕæÑÉ";
+ Text[ turkish ] = "Grafik";
+};
+String SCSTR_PAGEBREAKSHELL
+{
+ Text = "Seitenumbruch" ;
+ Text [ ENGLISH ] = "Pagebreak" ;
+ Text[ english_us ] = "Pagebreak";
+ Text[ portuguese ] = "Quebra de página";
+ Text[ russian ] = "Ðàçðûâ ñòðàíèöû";
+ Text[ greek ] = "ÁëëáãÞ óåëßäáò";
+ Text[ dutch ] = "Pagina-einde";
+ Text[ french ] = "Saut de page";
+ Text[ spanish ] = "Salto de página";
+ Text[ italian ] = "Interruzione di pagina";
+ Text[ danish ] = "Sideskift";
+ Text[ swedish ] = "Sidbrytning";
+ Text[ polish ] = "Podzia³ strony";
+ Text[ portuguese_brazilian ] = "Pagebreak";
+ Text[ japanese ] = "‰üÍß°¼Þ";
+ Text[ korean ] = "ÆäÀÌÁö³ª´©±â";
+ Text[ chinese_simplified ] = "»»Ò³";
+ Text[ chinese_traditional ] = "´«­¶";
+ Text[ arabic ] = "ÝÇÕá ÕÝÍÇÊ";
+ Text[ turkish ] = "Sayfa sonu";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_EDITSHELL
+{
+ Text = "Textbearbeitung" ;
+ Text [ ENGLISH ] = "Text editing" ;
+ Text [ norwegian ] = "Tekst redigering" ;
+ Text [ italian ] = "Modifica testo" ;
+ Text [ portuguese_brazilian ] = "Edição de texto" ;
+ Text [ portuguese ] = "Edição de texto" ;
+ Text [ finnish ] = "Tekstin muokkaus" ;
+ Text [ danish ] = "Tekstredigering" ;
+ Text [ french ] = "Édition de texte" ;
+ Text [ swedish ] = "Textredigering" ;
+ Text [ dutch ] = "Tekstbewerking" ;
+ Text [ spanish ] = "Edición de texto" ;
+ Text [ english_us ] = "Text editing" ;
+ Text[ chinese_simplified ] = "ÎÄ×ֱ༭";
+ Text[ russian ] = "Ðåäàêòèðîâàíèå òåêñòà";
+ Text[ polish ] = "Edycja tekstu";
+ Text[ japanese ] = "÷½Ä‚Ì•ÒW";
+ Text[ chinese_traditional ] = "¤å¦r½s¿è";
+ Text[ arabic ] = "ÊÍÑíÑ ÇáäÕ";
+ Text[ greek ] = "Åðåîåñãáóßá êåéìÝíïõ";
+ Text[ korean ] = "ÅؽºÆ® ÆíÁý";
+ Text[ turkish ] = "Metin düzenleme";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_PREVIEWSHELL
+{
+ Text = "Druckvorschau" ;
+ Text [ ENGLISH ] = "Print preview" ;
+ Text [ norwegian ] = "Skriv ut forhåndsvisning" ;
+ Text [ italian ] = "Anteprima stampa" ;
+ Text [ portuguese_brazilian ] = "Examinar impressão" ;
+ Text [ portuguese ] = "Previsualizar impressão" ;
+ Text [ finnish ] = "Esikatselu" ;
+ Text [ danish ] = "Udskriftsvisning" ;
+ Text [ french ] = "Aperçu" ;
+ Text [ swedish ] = "Skärmutskrift" ;
+ Text [ dutch ] = "Afdrukvoorbeeld" ;
+ Text [ spanish ] = "Presentación preliminar" ;
+ Text [ english_us ] = "Print Preview" ;
+ Text[ chinese_simplified ] = "´òÓ¡Ô¤ÊÓ";
+ Text[ russian ] = "Ïðîñìîòð ïå÷àòè";
+ Text[ polish ] = "Podgl¹d wydruku";
+ Text[ japanese ] = "ˆóüÌßÚËÞ­°";
+ Text[ chinese_traditional ] = "¦C¦LÀ˵ø";
+ Text[ arabic ] = "ãÚÇíäÉ ÞÈá ÇáØÈÇÚÉ";
+ Text[ greek ] = "Ðñïåðéóêüðçóç åêôýðùóçò";
+ Text[ korean ] = "Àμ⠹̸®º¸±â";
+ Text[ turkish ] = "Baský önizleme";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_PIVOTSHELL
+{
+ Text = "Datenpilot-Tabellen" ;
+ Text [ ENGLISH ] = "Data Pilot Tables" ;
+ Text [ norwegian ] = "Data Pilot Tables" ;
+ Text [ italian ] = "Tabelle DataPilot" ;
+ Text [ portuguese_brazilian ] = "Data Pilot Tables" ;
+ Text [ portuguese ] = "Tabelas do Piloto de Dados" ;
+ Text [ finnish ] = "???-taulukot" ;
+ Text [ danish ] = "DataPilot-tabeller" ;
+ Text [ french ] = "Tables du DataPilote" ;
+ Text [ swedish ] = "Datapilottabeller" ;
+ Text [ dutch ] = "DataPiloot-tabellen" ;
+ Text [ spanish ] = "Tablas del piloto de datos" ;
+ Text [ english_us ] = "Data Pilot Tables" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÖúÀí¹¤×÷±í";
+ Text[ russian ] = "Ñâîäíàÿ òàáëèöà";
+ Text[ polish ] = "Tabele Pilota danych";
+ Text[ japanese ] = "ÃÞ°ÀÊ߲ۯĂ̕\\";
+ Text[ chinese_traditional ] = "¸ê®Æ§U²z¤u§@ªí";
+ Text[ arabic ] = "ÌÏÇæá ãÑÔÏ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "Ðßíáêåò ðéëüôïõ äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅÍ ÆÄÀÏ·µ Å×À̺í";
+ Text[ turkish ] = "Veri pilotu tablosu";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_AUDITSHELL
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Detektiv-Füll-Modus : Detektiv-F³ll-Modus */
+ Text = "Detektiv-Füll-Modus" ;
+ Text [ ENGLISH ] = "Auditing Fill Mode" ;
+ Text [ dutch ] = "Verkenner opvulmodus" ;
+ Text [ english_us ] = "Detective Fill Mode" ;
+ Text [ italian ] = "Modo di riempimento detective" ;
+ Text [ spanish ] = "Modo Detective de relleno" ;
+ Text [ french ] = "Mode Remplissage d'audit" ;
+ Text [ swedish ] = "Detektiv-fyllningsläge" ;
+ Text [ danish ] = "Detektiv-fyldmodus" ;
+ Text [ portuguese ] = "Modo preenchimento de auditoria" ;
+ Text [ portuguese_brazilian ] = "Detektiv-Füll-Modus" ;
+ Text[ chinese_simplified ] = "Õì̽-³äÌîģʽ";
+ Text[ russian ] = "Ðåæèì çàëèâêè çàâèñèìîñòåé";
+ Text[ polish ] = "Tryb wype³niania detektywa";
+ Text[ japanese ] = "’T’m —šsÓ°ÄÞ";
+ Text[ chinese_traditional ] = "°»±´-¥R¶ñ¼Ò¦¡";
+ Text[ arabic ] = "æÖÚ ÊÚÈÆÉ ÇáãÎÈÑ";
+ Text[ greek ] = "ÊáôÜóôáóç ãåìßóìáôïò áíé÷íåõôÞ";
+ Text[ korean ] = "ÃßÀû ä¿ì±â ¸ðµå";
+ Text[ turkish ] = "Dedektif doldurma kipi";
+ Text[ language_user1 ] = " ";
+};
+
+ // -----------------------------------------------------------------------
+
+String STR_ROWHEIGHT
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Höhe : H÷he */
+ Text = "Höhe" ;
+ Text [ ENGLISH ] = "Height" ;
+ Text [ norwegian ] = "Høyde " ;
+ Text [ italian ] = "Altezza" ;
+ Text [ portuguese_brazilian ] = "Altura" ;
+ Text [ portuguese ] = "Altura" ;
+ Text [ finnish ] = "Korkeus" ;
+ Text [ danish ] = "Højde" ;
+ Text [ french ] = "Hauteur" ;
+ Text [ swedish ] = "Höjd" ;
+ Text [ dutch ] = "Hoogte" ;
+ Text [ spanish ] = "Altura" ;
+ Text [ english_us ] = "Height" ;
+ Text[ chinese_simplified ] = "¸ß";
+ Text[ russian ] = "Âûñîòà";
+ Text[ polish ] = "WysokoϾ";
+ Text[ japanese ] = "‚‚³";
+ Text[ chinese_traditional ] = "°ª";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ";
+ Text[ greek ] = "¾øïò";
+ Text[ korean ] = "³ôÀÌ";
+ Text[ turkish ] = "Yükseklik";
+ Text[ language_user1 ] = " ";
+};
+String STR_OPT_ROWHEIGHT
+{
+ Text = "Extra" ;
+ Text [ ENGLISH ] = "Extra" ;
+ Text [ norwegian ] = "Ekstra " ;
+ Text [ italian ] = "Extra" ;
+ Text [ portuguese_brazilian ] = "Extra" ;
+ Text [ portuguese ] = "Adicionar" ;
+ Text [ finnish ] = "Muut" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "Outils" ;
+ Text [ swedish ] = "Extra" ;
+ Text [ dutch ] = "Extra" ;
+ Text [ spanish ] = "Añadir" ;
+ Text [ english_us ] = "Add" ;
+ Text[ chinese_simplified ] = "¸½¼Ó";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "Ú×Ý’è";
+ Text[ chinese_traditional ] = "ªþ¥[";
+ Text[ arabic ] = "ÅÖÇÝí";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "Ãß°¡";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_ROWHEIGHT_TITLE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Zeilenhöhe : Zeilenh÷he */
+ Text = "Zeilenhöhe" ;
+ Text [ ENGLISH ] = "Row height" ;
+ Text [ norwegian ] = "Høyde på rad " ;
+ Text [ italian ] = "Altezza riga" ;
+ Text [ portuguese_brazilian ] = "Altura da fileira" ;
+ Text [ portuguese ] = "Altura da linha" ;
+ Text [ finnish ] = "Rivikorkeus" ;
+ Text [ danish ] = "Rækkehøjde" ;
+ Text [ french ] = "Hauteur de ligne" ;
+ Text [ swedish ] = "Radhöjd" ;
+ Text [ dutch ] = "Rijhoogte" ;
+ Text [ spanish ] = "Altura de fila" ;
+ Text [ english_us ] = "Row Height" ;
+ Text[ chinese_simplified ] = "Ðиß";
+ Text[ russian ] = "Âûñîòà ñòðîêè";
+ Text[ polish ] = "WysokoϾ wierszy";
+ Text[ japanese ] = "s‚Ì‚‚³";
+ Text[ chinese_traditional ] = "¦C°ª";
+ Text[ arabic ] = "ÇÑÊÝÇÚ ÇáÕÝ";
+ Text[ greek ] = "¾øïò ãñáììÞò";
+ Text[ korean ] = "Çà ³ôÀÌ";
+ Text[ turkish ] = "Satýr yüksekliði";
+ Text[ language_user1 ] = " ";
+};
+String STR_OPT_ROWHEIGHT_TITLE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Optimale Zeilenhöhe : Optimale Zeilenh÷he */
+ Text = "Optimale Zeilenhöhe" ;
+ Text [ ENGLISH ] = "Optimal row height" ;
+ Text [ norwegian ] = "Optimal høyde på rad " ;
+ Text [ italian ] = "Altezza riga ottimale" ;
+ Text [ portuguese_brazilian ] = "Altura ótima da fileira" ;
+ Text [ portuguese ] = "Optimizar altura da linha" ;
+ Text [ finnish ] = "Sopivin rivikorkeus" ;
+ Text [ danish ] = "Optimal rækkehøjde" ;
+ Text [ french ] = "Hauteur de ligne optimale" ;
+ Text [ swedish ] = "Optimal radhöjd" ;
+ Text [ dutch ] = "Optimale rijhoogte" ;
+ Text [ spanish ] = "Altura de fila óptima" ;
+ Text [ english_us ] = "Optimal Row Height" ;
+ Text[ chinese_simplified ] = "×î¼ÑÐиß";
+ Text[ russian ] = "Îïòèìàëüíàÿ âûñîòà ñòðîêè";
+ Text[ polish ] = "Optymalna wysokoϾ wierszy";
+ Text[ japanese ] = "Å“K‚Ès‚Ì‚‚³";
+ Text[ chinese_traditional ] = "³ÌÓì¦C°ª";
+ Text[ arabic ] = "ÇáÇÑÊÝÇÚ ÇáÃãËá ááÕÝ";
+ Text[ greek ] = "ÂÝëôéóôï ýøïò ãñáììÞò";
+ Text[ korean ] = "ÃÖÀûÀÇ Çà ³ôÀÌ";
+ Text[ turkish ] = "Optimum satýr yüksekliði";
+ Text[ language_user1 ] = " ";
+};
+String STR_COLWIDTH
+{
+ Text = "Breite" ;
+ Text [ ENGLISH ] = "Width" ;
+ Text [ norwegian ] = "Bredde " ;
+ Text [ italian ] = "Larghezza" ;
+ Text [ portuguese_brazilian ] = "Largura" ;
+ Text [ portuguese ] = "Largura" ;
+ Text [ finnish ] = "Leveys" ;
+ Text [ danish ] = "Bredde" ;
+ Text [ french ] = "Largeur" ;
+ Text [ swedish ] = "Bredd" ;
+ Text [ dutch ] = "Breedte" ;
+ Text [ spanish ] = "Ancho" ;
+ Text [ english_us ] = "Width" ;
+ Text[ chinese_simplified ] = "¿í";
+ Text[ russian ] = "Øèðèíà";
+ Text[ polish ] = "SzerokoϾ";
+ Text[ japanese ] = "•";
+ Text[ chinese_traditional ] = "¼e";
+ Text[ arabic ] = "ÇáÚÑÖ";
+ Text[ greek ] = "ÐëÜôïò";
+ Text[ korean ] = "³Êºñ";
+ Text[ turkish ] = "Geniþlik";
+ Text[ language_user1 ] = " ";
+};
+String STR_OPT_COLWIDTH
+{
+ Text = "Extra" ;
+ Text [ ENGLISH ] = "Extra" ;
+ Text [ norwegian ] = "Ekstra " ;
+ Text [ italian ] = "Extra" ;
+ Text [ portuguese_brazilian ] = "Extra" ;
+ Text [ portuguese ] = "Adicionar" ;
+ Text [ finnish ] = "Muut" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "Outils" ;
+ Text [ swedish ] = "Extra" ;
+ Text [ dutch ] = "Extra" ;
+ Text [ spanish ] = "Añadir" ;
+ Text [ english_us ] = "Add" ;
+ Text[ chinese_simplified ] = "¸½¼Ó";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "Ú×Ý’è";
+ Text[ chinese_traditional ] = "ªþ¥[";
+ Text[ arabic ] = "ÅÖÇÝí";
+ Text[ greek ] = "Ðñüóèåôá";
+ Text[ korean ] = "Ãß°¡";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+};
+String STR_COLWIDTH_TITLE
+{
+ Text = "Spaltenbreite" ;
+ Text [ ENGLISH ] = "Column width" ;
+ Text [ norwegian ] = "Bredde på kolonne " ;
+ Text [ italian ] = "Larghezza colonna" ;
+ Text [ portuguese_brazilian ] = "Largura da coluna" ;
+ Text [ portuguese ] = "Largura da coluna" ;
+ Text [ finnish ] = "Sarakeleveys" ;
+ Text [ danish ] = "Kolonnebredde" ;
+ Text [ french ] = "Largeur de colonne" ;
+ Text [ swedish ] = "Kolumnbredd" ;
+ Text [ dutch ] = "Kolombreedte" ;
+ Text [ spanish ] = "Ancho de columna" ;
+ Text [ english_us ] = "Column Width" ;
+ Text[ chinese_simplified ] = "Áпí";
+ Text[ russian ] = "Øèðèíà ñòîëáöîâ";
+ Text[ polish ] = "SzerokoϾ kolumn";
+ Text[ japanese ] = "—ñ•";
+ Text[ chinese_traditional ] = "Äæ¼e";
+ Text[ arabic ] = "ÚÑÖ ÇáÃÚãÏÉ";
+ Text[ greek ] = "ÐëÜôïò óôÞëçò";
+ Text[ korean ] = "¿­ ³Êºñ";
+ Text[ turkish ] = "Sütun geniþliði";
+ Text[ language_user1 ] = " ";
+};
+String STR_OPT_COLWIDTH_TITLE
+{
+ Text = "Optimale Spaltenbreite" ;
+ Text [ ENGLISH ] = "Optimal column width" ;
+ Text [ norwegian ] = "Optimal bredde på kolonne " ;
+ Text [ italian ] = "Larghezza colonna ottimale" ;
+ Text [ portuguese_brazilian ] = "Largura ótima da coluna" ;
+ Text [ portuguese ] = "Optimizar largura da coluna" ;
+ Text [ finnish ] = "Sopivin sarakeleveys" ;
+ Text [ danish ] = "Optimal kolonnebredde" ;
+ Text [ french ] = "Largeur de colonne optimale" ;
+ Text [ swedish ] = "Optimal kolumnbredd" ;
+ Text [ dutch ] = "Optimale kolombreedte" ;
+ Text [ spanish ] = "Ancho de columna óptimo" ;
+ Text [ english_us ] = "Optimal Column Width" ;
+ Text[ chinese_simplified ] = "×î¼ÑÁпí";
+ Text[ russian ] = "Îïòèìàëüíàÿ øèðèíà ñòîëáöà";
+ Text[ polish ] = "Optymalna szerokoϾ kolumn";
+ Text[ japanese ] = "Å“K‚È—ñ•";
+ Text[ chinese_traditional ] = "³ÌÓìÄæ¼e";
+ Text[ arabic ] = "ÇáÚÑÖ ÇáÃãËá ááÃÚãÏÉ";
+ Text[ greek ] = "ÂÝëôéóôï ðëÜôïò óôÞëçò";
+ Text[ korean ] = "ÃÖÀûÀÇ ¿­ ³Êºñ";
+ Text[ turkish ] = "Optimum sütun geniþliði";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_UNDEFINED
+{
+ Text = "- undefiniert -" ;
+ Text [ ENGLISH ] = "- undefined -" ;
+ Text [ norwegian ] = "- ubestemt -" ;
+ Text [ italian ] = "- non definito -" ;
+ Text [ portuguese_brazilian ] = "- não definido -" ;
+ Text [ portuguese ] = "- indefinido -" ;
+ Text [ finnish ] = "- määrittämätön -" ;
+ Text [ danish ] = "- udefineret -" ;
+ Text [ french ] = "- indéfini -" ;
+ Text [ swedish ] = "- odefinierad -" ;
+ Text [ dutch ] = "- niet gedefinieerd -" ;
+ Text [ spanish ] = "- no definido -" ;
+ Text [ english_us ] = "- undefined -" ;
+ Text[ chinese_simplified ] = "- 䶨ÒåµÄ -";
+ Text[ russian ] = "- íåîïðåäåëåí -";
+ Text[ polish ] = "- niezdefiniowany -";
+ Text[ japanese ] = "- Žw’è‚È‚µ -";
+ Text[ chinese_traditional ] = "- ¥¼©w¸qªº -";
+ Text[ arabic ] = "- ÛíÑ ãõÚÑøÝ -";
+ Text[ greek ] = "- ìç ïñéóìÝíï -";
+ Text[ korean ] = "- Á¤ÀǵÇÁö ¾ÊÀ½ -";
+ Text[ turkish ] = "- tanýmlanmamýþ -";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_NONE
+{
+ Text = "- keiner -" ;
+ Text [ ENGLISH ] = "- none -" ;
+ Text [ norwegian ] = "- none -" ;
+ Text [ italian ] = "- senza -" ;
+ Text [ portuguese_brazilian ] = "- nenhum -" ;
+ Text [ portuguese ] = "- nenhuma -" ;
+ Text [ finnish ] = "- ei ole -" ;
+ Text [ danish ] = "- ingen -" ;
+ Text [ french ] = "- aucun -" ;
+ Text [ swedish ] = "- ingen -" ;
+ Text [ dutch ] = "- geen -" ;
+ Text [ spanish ] = "- ninguno -" ;
+ Text [ english_us ] = "- none -" ;
+ Text[ chinese_simplified ] = "- ÎÞ -";
+ Text[ russian ] = "- áåç -";
+ Text[ polish ] = "-brak -";
+ Text[ japanese ] = "- ‚È‚µ -";
+ Text[ chinese_traditional ] = "- µL -";
+ Text[ arabic ] = "- ÈÏæä -";
+ Text[ greek ] = "- êáíÝíá -";
+ Text[ korean ] = "- ¾øÀ½ -";
+ Text[ turkish ] = "- yok -";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_EMPTY
+{
+ Text = "- leer -" ;
+ Text [ ENGLISH ] = "- empty -" ;
+ Text [ norwegian ] = "- tom -" ;
+ Text [ italian ] = "- vuoto -" ;
+ Text [ portuguese_brazilian ] = "- vazio -" ;
+ Text [ portuguese ] = "- vazio -" ;
+ Text [ finnish ] = "- tyhjä -" ;
+ Text [ danish ] = "- tom -" ;
+ Text [ french ] = "- vide -" ;
+ Text [ swedish ] = "- tom -" ;
+ Text [ dutch ] = "- leeg -" ;
+ Text [ spanish ] = "- vacío -" ;
+ Text [ english_us ] = "- empty -" ;
+ Text[ chinese_simplified ] = "- ¿Õ°× -";
+ Text[ russian ] = "-ïóñòî -";
+ Text[ polish ] = "- pusty -";
+ Text[ japanese ] = "- ‹ó”’ -";
+ Text[ chinese_traditional ] = "- ªÅ¥Õ -";
+ Text[ arabic ] = "- ÝÇÑÛ -";
+ Text[ greek ] = "- êåíü -";
+ Text[ korean ] = "- ºñ¾úÀ½ -";
+ Text[ turkish ] = "- boþ -";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_NOTEMPTY
+{
+ Text = "- nicht leer -" ;
+ Text [ ENGLISH ] = "- not empty -" ;
+ Text [ norwegian ] = "- ikke tom -" ;
+ Text [ italian ] = "- non vuoto -" ;
+ Text [ portuguese_brazilian ] = "- não vazio -" ;
+ Text [ portuguese ] = "- não vazio -" ;
+ Text [ finnish ] = "- ei tyhjä -" ;
+ Text [ danish ] = "- ikke tom -" ;
+ Text [ french ] = "- non vide -" ;
+ Text [ swedish ] = "- inte tom -" ;
+ Text [ dutch ] = "- niet leeg -" ;
+ Text [ spanish ] = "- no vacío -" ;
+ Text [ english_us ] = "- not empty -" ;
+ Text[ chinese_simplified ] = "- ²»¿Õ°× -";
+ Text[ russian ] = "- íå ïóñòî -";
+ Text[ polish ] = "-nie pusty -";
+ Text[ japanese ] = "- ‹ó”’‚È‚µ -";
+ Text[ chinese_traditional ] = "- ¤£ªÅ¥Õ -";
+ Text[ arabic ] = "- ÛíÑ ÝÇÑÛ -";
+ Text[ greek ] = "- ü÷é êåíü -";
+ Text[ korean ] = "- ºñ¾îÀÖÁö ¾ÊÀ½ -";
+ Text[ turkish ] = "- boþ deðil -";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_NEWTABLE
+{
+ Text = "- neue Tabelle -" ;
+ Text [ ENGLISH ] = "- new table -" ;
+ Text [ norwegian ] = "- ny tabell -" ;
+ Text [ italian ] = "- nuova tabella -" ;
+ Text [ portuguese_brazilian ] = "- nova tabela -" ;
+ Text [ portuguese ] = "- nova folha -" ;
+ Text [ finnish ] = "- new table -" ;
+ Text [ danish ] = "- nyt ark -" ;
+ Text [ french ] = "- nouvelle feuille -" ;
+ Text [ swedish ] = "- ny tabell -" ;
+ Text [ dutch ] = "- nieuw werkblad -" ;
+ Text [ spanish ] = "- nueva hoja -" ;
+ Text [ english_us ] = "- new sheet -" ;
+ Text[ chinese_simplified ] = "- н¨¹¤×÷±í -";
+ Text[ russian ] = "- íîâûé ëèñò -";
+ Text[ polish ] = "- nowy arkusz -";
+ Text[ japanese ] = "- V‚µ‚¢•\\ -";
+ Text[ chinese_traditional ] = "- ·s«Ø¤u§@ªí -";
+ Text[ arabic ] = "- ÌÏæá ÌÏíÏ -";
+ Text[ greek ] = "- Äçìéïõñãßá ðßíáêá -";
+ Text[ korean ] = "- »õ ½ÃÆ® -";
+ Text[ turkish ] = "- yeni tablo -";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_ALL
+{
+ Text = "- alle -" ;
+ Text [ ENGLISH ] = "- all -" ;
+ Text [ norwegian ] = "- all -" ;
+ Text [ italian ] = "- tutto -" ;
+ Text [ portuguese_brazilian ] = "- all -" ;
+ Text [ portuguese ] = "- tudo -" ;
+ Text [ french ] = "- tout -" ;
+ Text [ dutch ] = "- alle-" ;
+ Text [ spanish ] = "- todo -" ;
+ Text [ danish ] = "- alle -" ;
+ Text [ swedish ] = "- alla -" ;
+ Text [ finnish ] = "- all -" ;
+ Text [ english_us ] = "- all -" ;
+ Text[ chinese_simplified ] = "- È«²¿ -";
+ Text[ russian ] = "- âñå -";
+ Text[ polish ] = "- wszystkie -";
+ Text[ japanese ] = "- ‚·‚×‚Ä -";
+ Text[ chinese_traditional ] = "- ¥þ³¡ -";
+ Text[ arabic ] = "- Çáßá -";
+ Text[ greek ] = "- üëá -";
+ Text[ korean ] = "- Àüü -";
+ Text[ turkish ] = "- tümü -";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_STDFILTER
+{
+ Text = "- Standard -" ;
+ Text [ ENGLISH ] = "- Standard -" ;
+ Text [ english_us ] = "- Standard -" ;
+ Text [ italian ] = "- Standard -" ;
+ Text [ spanish ] = "- Estándar -" ;
+ Text [ french ] = "- Standard -" ;
+ Text [ dutch ] = "- Standaard -" ;
+ Text [ swedish ] = "- Standard -" ;
+ Text [ danish ] = "- Standard -" ;
+ Text [ portuguese ] = "- Padrão -" ;
+ Text [ portuguese_brazilian ] = "- Standard -" ;
+ Text[ chinese_simplified ] = "- ±ê×¼ -";
+ Text[ russian ] = "- Ñòàíäàðò -";
+ Text[ polish ] = "- Domyœlnie-";
+ Text[ japanese ] = "- •W€ -";
+ Text[ chinese_traditional ] = "- ¼Ð·Ç -";
+ Text[ arabic ] = "- ÞíÇÓí -";
+ Text[ greek ] = "- ÔõðéêÜ -";
+ Text[ korean ] = "- Ç¥ÁØ -";
+ Text[ turkish ] = "- Standart -";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_TOP10FILTER
+{
+ Text = "- Top 10 -" ;
+ Text [ ENGLISH ] = "- Top 10 -" ;
+ Text [ portuguese ] = "- Top 10 -" ;
+ Text [ english_us ] = "- Top 10 -" ;
+ Text [ portuguese_brazilian ] = "- Top 10 -" ;
+ Text [ swedish ] = "- Top 10 -" ;
+ Text [ danish ] = "- Top 10 -" ;
+ Text [ italian ] = "- Top 10 -" ;
+ Text [ spanish ] = "- Los 10 primeros -" ;
+ Text [ french ] = "- Top 10 -" ;
+ Text [ dutch ] = "- Top 10 -" ;
+ Text[ chinese_simplified ] = "- Ç° 10 ¸ö -";
+ Text[ russian ] = "- 10 ïåðâûõ -";
+ Text[ polish ] = "- 10 pierwszych -";
+ Text[ japanese ] = "- įÌß 10 -";
+ Text[ chinese_traditional ] = "- «e 10 ­Ó -";
+ Text[ arabic ] = "- Top 10 -";
+ Text[ greek ] = "- Ðñþôá 10 -";
+ Text[ korean ] = "- ȗˤ 10 -";
+ Text[ turkish ] = "- Top 10 -";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_NONAME
+{
+ Text = "unbenannt" ;
+ Text [ ENGLISH ] = "unknown" ;
+ Text [ norwegian ] = "ukjent" ;
+ Text [ italian ] = "Senza nome" ;
+ Text [ portuguese_brazilian ] = "desconhecido" ;
+ Text [ portuguese ] = "sem nome" ;
+ Text [ finnish ] = "tuntematon" ;
+ Text [ danish ] = "ikke-navngivet" ;
+ Text [ french ] = "sans nom" ;
+ Text [ swedish ] = "namnlös" ;
+ Text [ dutch ] = "naamloos" ;
+ Text [ spanish ] = "Sin nombre" ;
+ Text [ english_us ] = "unnamed" ;
+ Text[ chinese_simplified ] = "δÃüÃû";
+ Text[ russian ] = "áåç èìåíè";
+ Text[ polish ] = "bez nazwy";
+ Text[ japanese ] = "–³–¼";
+ Text[ chinese_traditional ] = "¥¼©R¦W";
+ Text[ arabic ] = "ÈÏæä ÚäæÇä";
+ Text[ greek ] = "Äß÷ùò üíïìá";
+ Text[ korean ] = "À̸§¾øÀ½";
+ Text[ turkish ] = "bilinmeyen";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_COLUMN
+{
+ Text = "Spalte" ;
+ Text [ ENGLISH ] = "Column" ;
+ Text [ norwegian ] = "Column" ;
+ Text [ italian ] = "Colonna" ;
+ Text [ portuguese_brazilian ] = "Coluna" ;
+ Text [ portuguese ] = "Coluna" ;
+ Text [ finnish ] = "Sarake" ;
+ Text [ danish ] = "Kolonne" ;
+ Text [ french ] = "Colonne" ;
+ Text [ swedish ] = "Kolumn" ;
+ Text [ dutch ] = "Kolom" ;
+ Text [ spanish ] = "Columna" ;
+ Text [ english_us ] = "Column" ;
+ Text[ chinese_simplified ] = "ÁÐ";
+ Text[ russian ] = "Ñòîëáåö";
+ Text[ polish ] = "Kolumna";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "Äæ";
+ Text[ arabic ] = "ÇáÚãæÏ";
+ Text[ greek ] = "ÓôÞëç";
+ Text[ korean ] = "¿­";
+ Text[ turkish ] = "Sütun";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_ROW
+{
+ Text = "Zeile" ;
+ Text [ ENGLISH ] = "Row" ;
+ Text [ norwegian ] = "Row" ;
+ Text [ italian ] = "Riga" ;
+ Text [ portuguese_brazilian ] = "Fileira" ;
+ Text [ portuguese ] = "Linha" ;
+ Text [ finnish ] = "Rivi" ;
+ Text [ danish ] = "Række" ;
+ Text [ french ] = "Ligne" ;
+ Text [ swedish ] = "Rad" ;
+ Text [ dutch ] = "Rij" ;
+ Text [ spanish ] = "Fila" ;
+ Text [ english_us ] = "Row" ;
+ Text[ chinese_simplified ] = "ÐÐ";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "—ñ";
+ Text[ chinese_traditional ] = "¦C";
+ Text[ arabic ] = "ÕÝ";
+ Text[ greek ] = "ÃñáììÞ";
+ Text[ korean ] = "Çà";
+ Text[ turkish ] = "Satýr";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_NEW
+{
+ Text = "~Neu" ;
+ Text [ ENGLISH ] = "~New" ;
+ Text [ norwegian ] = "~New" ;
+ Text [ italian ] = "~Nuovo" ;
+ Text [ portuguese_brazilian ] = "~Novo" ;
+ Text [ portuguese ] = "~Novo" ;
+ Text [ finnish ] = "~Uusi" ;
+ Text [ danish ] = "Ny" ;
+ Text [ french ] = "Nou~veau" ;
+ Text [ swedish ] = "~Nytt" ;
+ Text [ dutch ] = "~Nieuw" ;
+ Text [ spanish ] = "~Nuevo" ;
+ Text [ english_us ] = "~New" ;
+ Text[ chinese_simplified ] = "н¨(~N)";
+ Text[ russian ] = "Ñîçä~àòü";
+ Text[ polish ] = "Nowy";
+ Text[ japanese ] = "V‹Kì¬(~N)";
+ Text[ chinese_traditional ] = "¶}±Ò·sÀÉ(~N)";
+ Text[ arabic ] = "ÌÏíÏ";
+ Text[ greek ] = "Äçìéïõñãßá";
+ Text[ korean ] = "»õ·Î(~N)";
+ Text[ turkish ] = "~Yeni";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_ADD
+{
+ /* ### ACHTUNG: Neuer Text in Resource? ~Hinzufügen : ~Hinzuf³gen */
+ Text = "~Hinzufügen" ;
+ Text [ ENGLISH ] = "~Add" ;
+ Text [ norwegian ] = "Leg~g til" ;
+ Text [ italian ] = "A~ggiungi" ;
+ Text [ portuguese_brazilian ] = "~Acrescentar" ;
+ Text [ portuguese ] = "~Adicionar" ;
+ Text [ finnish ] = "~Lisää" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "~Ajouter" ;
+ Text [ swedish ] = "~Lägg till" ;
+ Text [ dutch ] = "Toe~voegen" ;
+ Text [ spanish ] = "~Añadir" ;
+ Text [ english_us ] = "~Add" ;
+ Text[ chinese_simplified ] = "ÐÂÔö(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "’ljÁ(~A)";
+ Text[ chinese_traditional ] = "·s¼W(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ";
+ Text[ greek ] = "ÐñïóèÞêç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "~Ekle";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_REMOVE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen : ~L÷schen */
+ Text = "~Löschen" ;
+ Text [ ENGLISH ] = "~Remove" ;
+ Text [ norwegian ] = "~Fjern" ;
+ Text [ italian ] = "Elimina" ;
+ Text [ portuguese_brazilian ] = "~Remover" ;
+ Text [ portuguese ] = "~Remover" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "~Wissen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Delete" ;
+ Text[ chinese_simplified ] = "ɾ³ý(~D)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~D)";
+ Text[ chinese_traditional ] = "§R°£(~D)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦(~D)";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_CANCEL
+{
+ Text = "Ab~brechen" ;
+ Text [ ENGLISH ] = "Cance~l" ;
+ Text [ norwegian ] = "Avbry~t" ;
+ Text [ italian ] = "Annulla" ;
+ Text [ portuguese_brazilian ] = "Cancela~r" ;
+ Text [ portuguese ] = "Cancela~r" ;
+ Text [ finnish ] = "~Peruuta" ;
+ Text [ danish ] = "Annuller" ;
+ Text [ french ] = "~Annuler" ;
+ Text [ swedish ] = "Av~bryt" ;
+ Text [ dutch ] = "~Annuleren" ;
+ Text [ spanish ] = "Can~celar" ;
+ Text [ english_us ] = "Cance~l" ;
+ Text[ chinese_simplified ] = "È¡Ïû(~L)";
+ Text[ russian ] = "Îòìåíà";
+ Text[ polish ] = "Anuluj";
+ Text[ japanese ] = "·¬Ý¾Ù(~L)";
+ Text[ chinese_traditional ] = "¨ú®ø(~L)";
+ Text[ arabic ] = "ÅáÛÇÁ ÇáÃãÑ";
+ Text[ greek ] = "Áêýñùóç";
+ Text[ korean ] = "Ãë¼Ò(~L)";
+ Text[ turkish ] = "~Ýptal";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_MODIFY
+{
+ /* ### ACHTUNG: Neuer Text in Resource? ~Ändern : ~Žndern */
+ Text = "~Ändern" ;
+ Text [ ENGLISH ] = "Modif~y" ;
+ Text [ norwegian ] = "Modif~y" ;
+ Text [ italian ] = "~Cambia" ;
+ Text [ portuguese_brazilian ] = "Modif~icar" ;
+ Text [ portuguese ] = "Modif~icar" ;
+ Text [ finnish ] = "~Muokkaa" ;
+ Text [ danish ] = "Modificer" ;
+ Text [ french ] = "~Modifier" ;
+ Text [ swedish ] = "~Ändra" ;
+ Text [ dutch ] = "Wij~zigen" ;
+ Text [ spanish ] = "~Modificar" ;
+ Text [ english_us ] = "Modif~y" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä(~Y)";
+ Text[ russian ] = "Èçìåíèòü";
+ Text[ polish ] = "Modyfikuj";
+ Text[ japanese ] = "•ÏX(~Y)";
+ Text[ chinese_traditional ] = "­×§ï(~Y)";
+ Text[ arabic ] = "ÊÚÏíá";
+ Text[ greek ] = "Ôñïðïðïßçóç";
+ Text[ korean ] = "¼öÁ¤(~Y)";
+ Text[ turkish ] = "~Deðiþtir";
+ Text[ language_user1 ] = " ";
+};
+
+
+String SCSTR_SHOWTABLE
+{
+ Text = "Tabelle einblenden" ;
+ Text [ ENGLISH ] = "Show table" ;
+ Text [ norwegian ] = "Vis tabell" ;
+ Text [ italian ] = "Mostra tabella" ;
+ Text [ portuguese_brazilian ] = "Mostrar tabela" ;
+ Text [ portuguese ] = "Mostrar folha" ;
+ Text [ finnish ] = "Näytä taulukko" ;
+ Text [ danish ] = "Vis ark" ;
+ Text [ french ] = "Afficher la feuille" ;
+ Text [ swedish ] = "Visa tabell" ;
+ Text [ dutch ] = "Werkblad weergeven" ;
+ Text [ spanish ] = "Mostrar hoja" ;
+ Text [ english_us ] = "Show Sheet" ;
+ Text[ chinese_simplified ] = "ÏÔʾ¹¤×÷±í";
+ Text[ russian ] = "Ïîêàçàòü ëèñò";
+ Text[ polish ] = "Poka¿ tabelê";
+ Text[ japanese ] = "•\\‚Ì•\\Ž¦";
+ Text[ chinese_traditional ] = "Åã¥Ü¤u§@ªí";
+ Text[ arabic ] = "ÅÙåÇÑ ÇáÌÏæá";
+ Text[ greek ] = "ÅìöÜíéóç ðßíáêá";
+ Text[ korean ] = "½ÃÆ® º¸À̱â";
+ Text[ turkish ] = "Tabloyu görüntüle";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_HIDDENTABLES
+{
+ Text = "Ausgeblendete Tabellen" ;
+ Text [ ENGLISH ] = "Hidden tables" ;
+ Text [ norwegian ] = "Skjulte tabeller" ;
+ Text [ italian ] = "Tabelle nascoste" ;
+ Text [ portuguese_brazilian ] = "Ocultar tabelas" ;
+ Text [ portuguese ] = "Folhas de cálculo ocultas" ;
+ Text [ finnish ] = "Piilotetut taulukot" ;
+ Text [ danish ] = "Skjulte ark" ;
+ Text [ french ] = "Feuilles masquées" ;
+ Text [ swedish ] = "Dolda tabeller" ;
+ Text [ dutch ] = "Verborgen werkbladen" ;
+ Text [ spanish ] = "Hojas ocultas" ;
+ Text [ english_us ] = "Hidden Sheets" ;
+ Text[ chinese_simplified ] = "ÒþÈëµÄ¹¤×÷±í";
+ Text[ russian ] = "Ñêðûòûå ëèñòû";
+ Text[ polish ] = "Ukryte arkusze";
+ Text[ japanese ] = "”ñ•\\Ž¦‚Ì•\\";
+ Text[ chinese_traditional ] = "Áô¤Jªº¤u§@ªí";
+ Text[ arabic ] = "ÇáÌÏÇæá ÇáãÎÝíÉ";
+ Text[ greek ] = "Êñõöïß ðßíáêåò";
+ Text[ korean ] = "¼û°ÜÁø ½ÃÆ®";
+ Text[ turkish ] = "Gizlenmiþ tablolar";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_SELECTDB
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Datenbankbereich wählen : Datenbankbereich wõhlen */
+ Text = "Datenbankbereich wählen" ;
+ Text [ ENGLISH ] = "Select Database" ;
+ Text [ norwegian ] = "Velg database" ;
+ Text [ italian ] = "Seleziona area database" ;
+ Text [ portuguese_brazilian ] = "Selecionar Base de Dados" ;
+ Text [ portuguese ] = "Seleccionar área da base de dados" ;
+ Text [ finnish ] = "Valitse tietokanta" ;
+ Text [ danish ] = "Vælg databaseområde" ;
+ Text [ french ] = "Sélectionner une plage de base de données" ;
+ Text [ swedish ] = "Välj databasområde" ;
+ Text [ dutch ] = "Database-bereik selecteren" ;
+ Text [ spanish ] = "Seleccionar área de base de datos" ;
+ Text [ english_us ] = "Select Database Range" ;
+ Text[ chinese_simplified ] = "Ñ¡ÔñÊý¾Ý¿âÇøÓò";
+ Text[ russian ] = "Âûáðàòü îáëàñòü áàçû äàííûõ";
+ Text[ polish ] = "Zaznacz obszar bazy danych";
+ Text[ japanese ] = "ÃÞ°ÀÍÞ°½‚͈̔͂ð‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü¸ê®Æ®w°Ï°ì";
+ Text[ arabic ] = "ÇÎÊíÇÑ äØÇÞ ÞÇÚÏÉ ÇáÈíÇäÇÊ";
+ Text[ greek ] = "ÅðéëïãÞ ðåñéï÷Þò âÜóçò äåäïìÝíùí";
+ Text[ korean ] = "µ¥ÀÌÅͺ£À̽º ¿µ¿ª ¼±ÅÃ";
+ Text[ turkish ] = "Veritabaný aralýðýný seç";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_AREAS
+{
+ Text = "Bereiche" ;
+ Text [ ENGLISH ] = "Table areas" ;
+ Text [ norwegian ] = "Tabellområde" ;
+ Text [ italian ] = "Aree" ;
+ Text [ portuguese_brazilian ] = "Áreas da tabela" ;
+ Text [ portuguese ] = "Áreas" ;
+ Text [ finnish ] = "Taulukkoalueet" ;
+ Text [ danish ] = "Områder" ;
+ Text [ french ] = "Plages" ;
+ Text [ swedish ] = "Områden" ;
+ Text [ dutch ] = "Bereiken" ;
+ Text [ spanish ] = "Áreas" ;
+ Text [ english_us ] = "Ranges" ;
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ russian ] = "Îáëàñòè";
+ Text[ polish ] = "Obszary";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "ÇáäØÇÞÇÊ";
+ Text[ greek ] = "Ðåñéï÷Ýò";
+ Text[ korean ] = "¿µ¿ª";
+ Text[ turkish ] = "Aralýklar";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_TABLE
+{
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Folha" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Ark" ;
+ Text [ french ] = "Feuille" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Werkblad" ;
+ Text [ spanish ] = "Hoja" ;
+ Text [ english_us ] = "Sheet" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ russian ] = "Ëèñò";
+ Text[ polish ] = "Arkusz";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "¤u§@ªí";
+ Text[ arabic ] = "ÇáÌÏæá";
+ Text[ greek ] = "Öýëëï";
+ Text[ korean ] = "½ÃÆ®";
+ Text[ turkish ] = "Tablo";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_NAME
+{
+ Text = "Name" ;
+ Text [ ENGLISH ] = "Name" ;
+ Text [ norwegian ] = "Navn" ;
+ Text [ italian ] = "Nome" ;
+ Text [ portuguese_brazilian ] = "Nomear" ;
+ Text [ portuguese ] = "Nome" ;
+ Text [ finnish ] = "Nimi" ;
+ Text [ danish ] = "Navn" ;
+ Text [ french ] = "Nom" ;
+ Text [ swedish ] = "Namn" ;
+ Text [ dutch ] = "Naam" ;
+ Text [ spanish ] = "Nombre" ;
+ Text [ english_us ] = "Name" ;
+ Text[ chinese_simplified ] = "Ãû³Æ";
+ Text[ russian ] = "Èìÿ";
+ Text[ polish ] = "Nazwa";
+ Text[ japanese ] = "–¼‘O";
+ Text[ chinese_traditional ] = "¦WºÙ";
+ Text[ arabic ] = "ÇáÇÓã";
+ Text[ greek ] = "¼íïìá";
+ Text[ korean ] = "À̸§";
+ Text[ turkish ] = "Ad";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_INSTABLE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Tabelle einfügen : Tabelle einf³gen */
+ Text = "Tabelle einfügen" ;
+ Text [ ENGLISH ] = "Insert Table" ;
+ Text [ norwegian ] = "Sett inn tabell" ;
+ Text [ italian ] = "Inserisci tabella" ;
+ Text [ portuguese_brazilian ] = "Insere Tabela" ;
+ Text [ portuguese ] = "Inserir folha de cálculo" ;
+ Text [ finnish ] = "Lisää taulukko" ;
+ Text [ danish ] = "Indsæt ark" ;
+ Text [ french ] = "Insérer une feuille" ;
+ Text [ swedish ] = "Infoga tabell" ;
+ Text [ dutch ] = "Werkblad invoegen" ;
+ Text [ spanish ] = "Insertar hoja" ;
+ Text [ english_us ] = "Insert Sheet" ;
+ Text[ chinese_simplified ] = "²åÈ빤×÷±í";
+ Text[ russian ] = "Âñòàâèòü ëèñò";
+ Text[ polish ] = "Wstaw arkusz";
+ Text[ japanese ] = "•\\‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¤u§@ªí";
+ Text[ arabic ] = "ÅÏÑÇÌ ÌÏæá";
+ Text[ greek ] = "ÅéóáãùãÞ ðßíáêá";
+ Text[ korean ] = "½ÃÆ® »ðÀÔ";
+ Text[ turkish ] = "Tablo ekle";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_APDTABLE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Tabelle anhängen : Tabelle anhõngen */
+ Text = "Tabelle anhängen" ;
+ Text [ ENGLISH ] = "Append Table" ;
+ Text [ norwegian ] = "Føy til tabell" ;
+ Text [ italian ] = "Allega tabella" ;
+ Text [ portuguese_brazilian ] = "Anexar Tabela" ;
+ Text [ portuguese ] = "Anexar folha" ;
+ Text [ finnish ] = "Lisää taulukon loppuun" ;
+ Text [ danish ] = "Vedhæft ark" ;
+ Text [ french ] = "Annexer la feuille" ;
+ Text [ swedish ] = "Tillfoga tabell" ;
+ Text [ dutch ] = "Werkblad toevoegen" ;
+ Text [ spanish ] = "Adjuntar hoja" ;
+ Text [ english_us ] = "Append Sheet" ;
+ Text[ chinese_simplified ] = "¸½¼Ó¹¤×÷±í";
+ Text[ russian ] = "Äîáàâèòü ëèñò";
+ Text[ polish ] = "Do³¹cz arkusz";
+ Text[ japanese ] = "•\\‚ð“Y•t‚·‚é";
+ Text[ chinese_traditional ] = "ªþ¥[¤u§@ªí";
+ Text[ arabic ] = "ÅÑÝÇÞ ÌÏæá";
+ Text[ greek ] = "Ðñïóêüëëçóç ðßíáêá";
+ Text[ korean ] = "÷ºÎµÈ ½ÃÆ®";
+ Text[ turkish ] = "Tablo ekle";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_RENAMETAB
+{
+ Text = "Tabelle umbenennen" ;
+ Text [ ENGLISH ] = "Rename Table" ;
+ Text [ english_us ] = "Rename Sheet" ;
+ Text [ italian ] = "Rinomina tabella" ;
+ Text [ spanish ] = "Cambiar nombre a hoja" ;
+ Text [ french ] = "Renommer la feuille" ;
+ Text [ dutch ] = "Werkbladnaam wijzigen" ;
+ Text [ swedish ] = "Byt namn på tabell" ;
+ Text [ danish ] = "Omdøb ark" ;
+ Text [ portuguese ] = "Mudar nome da folha" ;
+ Text [ portuguese_brazilian ] = "Tabelle umbenennen" ;
+ Text[ chinese_simplified ] = "ÖØÃüÃû¹¤×÷±í";
+ Text[ russian ] = "Ïåðåèìåíîâàòü ëèñò";
+ Text[ polish ] = "Zmieñ nazwê arkusza";
+ Text[ japanese ] = "•\\‚Ì–¼‘O•ÏX";
+ Text[ chinese_traditional ] = "­«·s©R¦W¤u§@ªí";
+ Text[ arabic ] = "ÅÚÇÏÉ ÊÓãíÉ ÇáÌÏæá";
+ Text[ greek ] = "Ìåôïíïìáóßá ðßíáêá";
+ Text[ korean ] = "½ÃÆ® À̸§ ¹Ù²Ù±â";
+ Text[ turkish ] = "Tabloyu yeniden adlandýr";
+ Text[ language_user1 ] = " ";
+};
+String STR_INSERTGRAPHIC
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Grafik einfügen : Grafik einf³gen */
+ Text = "Grafik einfügen" ;
+ Text [ ENGLISH ] = "Insert image" ;
+ Text [ norwegian ] = "Sett inn bilde" ;
+ Text [ italian ] = "Inserisci immagine" ;
+ Text [ portuguese_brazilian ] = "Insere imagem" ;
+ Text [ portuguese ] = "Inserir imagem" ;
+ Text [ finnish ] = "Lisää kuva" ;
+ Text [ danish ] = "Indsæt billede" ;
+ Text [ french ] = "Insérer une image" ;
+ Text [ swedish ] = "Infoga grafik" ;
+ Text [ dutch ] = "Afbeelding invoegen" ;
+ Text [ spanish ] = "Insertar imagen" ;
+ Text [ english_us ] = "Insert Graphics" ;
+ Text[ chinese_simplified ] = "²åÈëͼÐÎ";
+ Text[ russian ] = "Âñòàâèòü ðèñóíîê";
+ Text[ polish ] = "Wstaw obraz";
+ Text[ japanese ] = "¸Þ×̨¯¸‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤J¹Ï¤ù";
+ Text[ arabic ] = "ÅÏÑÇÌ ÕæÑÉ";
+ Text[ greek ] = "ÅéóáãùãÞ ãñáöéêïý";
+ Text[ korean ] = "±×·¡ÇÈ »ðÀÔ";
+ Text[ turkish ] = "Grafik ekle";
+ Text[ language_user1 ] = " ";
+};
+
+ // Attribute
+
+String SCSTR_HOR_JUSTIFY_LEFT
+{
+ Text = "Ausrichtung nach links" ;
+ Text [ ENGLISH ] = "Adjust left" ;
+ Text [ norwegian ] = "Juster til venstre" ;
+ Text [ italian ] = "Allinea a sinistra" ;
+ Text [ portuguese_brazilian ] = "Ajustar o esquerda" ;
+ Text [ portuguese ] = "Ajustar à esquerda" ;
+ Text [ finnish ] = "Tasaa vasemmalle" ;
+ Text [ danish ] = "Venstrejusteret" ;
+ Text [ french ] = "Alignement à gauche" ;
+ Text [ swedish ] = "Vänsterjustera" ;
+ Text [ dutch ] = "Linkslijnend" ;
+ Text [ spanish ] = "Alinear a la izquierda" ;
+ Text [ english_us ] = "Align left" ;
+ Text[ chinese_simplified ] = "Ïò×ó¶ÔÆë";
+ Text[ russian ] = "Âûðàâíèâàíèå ïî ëåâîìó êðàþ";
+ Text[ polish ] = "Wyrównaj do lewej";
+ Text[ japanese ] = "¶‘µ‚¦";
+ Text[ chinese_traditional ] = "¦V¥ª¹ï»ô";
+ Text[ arabic ] = "ãÍÇÐÇÉ Åáì ÇáíÓÇÑ";
+ Text[ greek ] = "Óôïß÷éóç áñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ ¸ÂÃã";
+ Text[ turkish ] = "Sola hizala";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_HOR_JUSTIFY_CENTER
+{
+ Text = "Horizontal zentriert" ;
+ Text [ ENGLISH ] = "Center horizontally" ;
+ Text [ norwegian ] = "Midtstill horisontal " ;
+ Text [ italian ] = "Centra in senso orizzontale" ;
+ Text [ portuguese_brazilian ] = "Centrar horizontalmente" ;
+ Text [ portuguese ] = "Centrado na horizontal" ;
+ Text [ finnish ] = "Keskitä vaakasuunnassa" ;
+ Text [ danish ] = "Vandret centreret" ;
+ Text [ french ] = "Centré horizontalement" ;
+ Text [ swedish ] = "Horisontellt centrerad" ;
+ Text [ dutch ] = "Horizontaal gecentreerd" ;
+ Text [ spanish ] = "Centrado horizontal" ;
+ Text [ english_us ] = "Centered horizontally" ;
+ Text[ chinese_simplified ] = "ˮƽ¾ÓÖÐ";
+ Text[ russian ] = "Ãîðèçîíòàëüíî ïî öåíòðó";
+ Text[ polish ] = "Wyrównany w poziomie";
+ Text[ japanese ] = "…•½‚É’†‰›‘µ‚¦";
+ Text[ chinese_traditional ] = "¤ô¥­¸m¤¤";
+ Text[ arabic ] = "ãæÓØ ÃÝÞíÇ";
+ Text[ greek ] = "ÊåíôñáñéóìÝíá ïñéæüíôéá";
+ Text[ korean ] = "¼öÆòÀ¸·Î °¡¿îµ¥";
+ Text[ turkish ] = "Yatay ortala";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_HOR_JUSTIFY_RIGHT
+{
+ Text = "Ausrichtung nach rechts" ;
+ Text [ ENGLISH ] = "Adjust right" ;
+ Text [ norwegian ] = "Juster til høyre " ;
+ Text [ italian ] = "Allinea a destra" ;
+ Text [ portuguese_brazilian ] = "Ajustar o direita" ;
+ Text [ portuguese ] = "Ajustar à direita" ;
+ Text [ finnish ] = "Tasaa oikealle" ;
+ Text [ danish ] = "Højrejusteret" ;
+ Text [ french ] = "Alignement à droite" ;
+ Text [ swedish ] = "Högerjustera" ;
+ Text [ dutch ] = "Rechtlijnend" ;
+ Text [ spanish ] = "Alinear a la derecha" ;
+ Text [ english_us ] = "Align right" ;
+ Text[ chinese_simplified ] = "ÏòÓÒ¶ÔÆë";
+ Text[ russian ] = "Âûðàâíèâàíèå ïî ïðàâîìó êðàþ";
+ Text[ polish ] = "Wyrównaj do prawej";
+ Text[ japanese ] = "‰E‘µ‚¦";
+ Text[ chinese_traditional ] = "¦V¥k¹ï»ô";
+ Text[ arabic ] = "ãÍÇÐÇÉ Åáì Çáíãíä";
+ Text[ greek ] = "Óôïß÷éóç äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ ¸ÂÃã";
+ Text[ turkish ] = "Saða hizala";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_HOR_JUSTIFY_BLOCK
+{
+ Text = "Blockausrichtung" ;
+ Text [ ENGLISH ] = "Block" ;
+ Text [ norwegian ] = "Datablokk " ;
+ Text [ italian ] = "Allineamento blocco" ;
+ Text [ portuguese_brazilian ] = "Bloco" ;
+ Text [ portuguese ] = "Justificar" ;
+ Text [ finnish ] = "Lohko" ;
+ Text [ danish ] = "Lige margener" ;
+ Text [ french ] = "Alignement bloc" ;
+ Text [ swedish ] = "Blockjustering" ;
+ Text [ dutch ] = "Uitgevuld" ;
+ Text [ spanish ] = "Justificado" ;
+ Text [ english_us ] = "Justify" ;
+ Text[ chinese_simplified ] = "×óÓÒ¶ÔÆë";
+ Text[ russian ] = "Âûðàâíèâàíèå ïî øèðèíå";
+ Text[ polish ] = "Wyjustowany";
+ Text[ japanese ] = "‹Ï“™Š„•t";
+ Text[ chinese_traditional ] = "¥ª¥k¹ï»ô";
+ Text[ arabic ] = "ÖÈØ";
+ Text[ greek ] = "ÐëÞñçò óôïß÷éóç";
+ Text[ korean ] = "¾çÂÊ ¸ÂÃã";
+ Text[ turkish ] = "Ýki yana yasla";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_HOR_JUSTIFY_REPEAT
+{
+ Text = "Ausrichtung wiederholen" ;
+ Text [ ENGLISH ] = "Adjust repeat" ;
+ Text [ norwegian ] = "Juster gjenta+++Adjust repeat" ;
+ Text [ italian ] = "Ripeti allineamento" ;
+ Text [ portuguese_brazilian ] = "Ajuste repetido" ;
+ Text [ portuguese ] = "Repetir alinhamento" ;
+ Text [ finnish ] = "Toisto" ;
+ Text [ danish ] = "Gentag justeringen" ;
+ Text [ french ] = "Répéter l'alignement" ;
+ Text [ swedish ] = "Upprepa justering" ;
+ Text [ dutch ] = "Uitlijnen herhalen" ;
+ Text [ spanish ] = "Repetir alineación" ;
+ Text [ english_us ] = "Repeat alignment" ;
+ Text[ chinese_simplified ] = "Öظ´¶ÔÆë";
+ Text[ russian ] = "Ïîâòîðèòü âûðàâíèâàíèå";
+ Text[ polish ] = "Powtórz wyrównanie";
+ Text[ japanese ] = "”z’u‚ÌØËß°Ä";
+ Text[ chinese_traditional ] = "­«½Æ¹ï»ô";
+ Text[ arabic ] = "ÊßÑÇÑ ÇáãÍÇÐÇÉ";
+ Text[ greek ] = "ÅðáíÜëçøç óôïß÷éóçò";
+ Text[ korean ] = "¸ÂÃ㠹ݺ¹";
+ Text[ turkish ] = "Hizalamayý yinele";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_HOR_JUSTIFY_STANDARD
+{
+ Text = "Horizontale Ausrichtung Standard" ;
+ Text [ ENGLISH ] = "Adjust standard" ;
+ Text [ norwegian ] = "Tilpass Standard " ;
+ Text [ italian ] = "Allineamento standard orizzontale" ;
+ Text [ portuguese_brazilian ] = "Ajuste padrão" ;
+ Text [ portuguese ] = "Ajuste padrão na horizontal" ;
+ Text [ finnish ] = "Vakiotasaus" ;
+ Text [ danish ] = "Standard vandret justering" ;
+ Text [ french ] = "Alignement horizontal par défaut" ;
+ Text [ swedish ] = "Horisontell justering standard" ;
+ Text [ dutch ] = "Standaard horizontaal uitlijnen" ;
+ Text [ spanish ] = "Alineación horizontal preterminada" ;
+ Text [ english_us ] = "Horizontal alignment default" ;
+ Text[ chinese_simplified ] = "ˮƽ¶ÔÆë±ê×¼";
+ Text[ russian ] = "Ãîðèçîíòàëüíîå âûðàâíèâàíèå (ñòàíäàðò)";
+ Text[ polish ] = "Domyœlne wyrównanie w poziomie";
+ Text[ japanese ] = "•W€‰¡ˆÊ’u";
+ Text[ chinese_traditional ] = "¤ô¥­¹ï»ô¼Ð·Ç";
+ Text[ arabic ] = "ãÍÇÐÇÉ ÃÝÞíÉ ÇÝÊÑÇÖíÉ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "ÐñïåðéëïãÞ: Ïñéæüíôéá óôïß÷éóç";
+ Text[ korean ] = "±âº» ¼öÆò ¸ÂÃã";
+ Text[ turkish ] = "Standart yatay hizalama";
+};
+String SCSTR_VER_JUSTIFY_TOP
+{
+ Text = "Ausrichtung nach oben" ;
+ Text [ ENGLISH ] = "Adjust top" ;
+ Text [ norwegian ] = "Tilpass Topp " ;
+ Text [ italian ] = "Allinea in alto" ;
+ Text [ portuguese_brazilian ] = "Ajustar topo" ;
+ Text [ portuguese ] = "Ajustar para cima" ;
+ Text [ finnish ] = "Tasaa ylös" ;
+ Text [ danish ] = "Juster opad" ;
+ Text [ french ] = "Alignement au bord supérieur" ;
+ Text [ swedish ] = "Justera uppåt" ;
+ Text [ dutch ] = "Op bovenkant uitlijnen" ;
+ Text [ spanish ] = "Alineación hacia arriba" ;
+ Text [ english_us ] = "Align to top" ;
+ Text[ chinese_simplified ] = "ÏòÉ϶ÔÆë";
+ Text[ russian ] = "Âûðàâíèâàíèå ïî âåðõíåìó êðàþ";
+ Text[ polish ] = "Wyrównanie do góry";
+ Text[ japanese ] = "㑵‚¦";
+ Text[ chinese_traditional ] = "¦V¤W¹ï»ô";
+ Text[ arabic ] = "ãÍÇÐÇÉ Åáì ÃÚáì";
+ Text[ greek ] = "Óôïß÷éóç ðÜíù";
+ Text[ korean ] = "À§¿¡ ¸ÂÃã";
+ Text[ turkish ] = "Yukarý hizala";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_VER_JUSTIFY_CENTER
+{
+ Text = "Vertikal zentriert" ;
+ Text [ ENGLISH ] = "Center vertically" ;
+ Text [ norwegian ] = "Midtstill vertikal " ;
+ Text [ italian ] = "Centra verticalmente" ;
+ Text [ portuguese_brazilian ] = "Centrar verticalmente" ;
+ Text [ portuguese ] = "Centrado na vertical" ;
+ Text [ finnish ] = "Pystykeskitys" ;
+ Text [ danish ] = "Lodret centreret" ;
+ Text [ french ] = "Centré verticalement" ;
+ Text [ swedish ] = "Vertikalt centrerad" ;
+ Text [ dutch ] = "Verticaal gecentreerd" ;
+ Text [ spanish ] = "Centrado vertical" ;
+ Text [ english_us ] = "Centered vertically" ;
+ Text[ chinese_simplified ] = "´¹Ö±¾ÓÖÐ";
+ Text[ russian ] = "Âåðòèêàëüíî ïî öåíòðó";
+ Text[ polish ] = "Wyœrodkowany w pionie";
+ Text[ japanese ] = "‚’¼‚É’†‰›‘µ‚¦";
+ Text[ chinese_traditional ] = "««ª½¸m¤¤";
+ Text[ arabic ] = "ãæÓØ ÚãæÏíÇ";
+ Text[ greek ] = "ÊåíôñáñéóìÝíá êáôáêüñõöá";
+ Text[ korean ] = "¼öÁ÷À¸·Î °¡¿îµ¥";
+ Text[ turkish ] = "Dikey ortala";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_VER_JUSTIFY_BOTTOM
+{
+ Text = "Ausrichtung nach unten" ;
+ Text [ ENGLISH ] = "Adjust bottom" ;
+ Text [ norwegian ] = "Tilpass Bunn" ;
+ Text [ italian ] = "Allinea in basso" ;
+ Text [ portuguese_brazilian ] = "Ajuste na base" ;
+ Text [ portuguese ] = "Ajustar para baixo" ;
+ Text [ finnish ] = "Tasaa alas" ;
+ Text [ danish ] = "Juster nedad" ;
+ Text [ french ] = "Alignement en bas" ;
+ Text [ swedish ] = "Justera nedåt" ;
+ Text [ dutch ] = "Op onderkant uitlijnen" ;
+ Text [ spanish ] = "Alineación hacia abajo" ;
+ Text [ english_us ] = "Align to bottom" ;
+ Text[ chinese_simplified ] = "Ïò϶ÔÆë";
+ Text[ russian ] = "Âûðàâíèâàíèå ïî íèæíåìó êðàþ";
+ Text[ polish ] = "Wyrówanie do do³u";
+ Text[ japanese ] = "‰º‘µ‚¦";
+ Text[ chinese_traditional ] = "¦V¤U¹ï»ô";
+ Text[ arabic ] = "ãÍÇÐÇÉ Åáì ÃÓÝá";
+ Text[ greek ] = "Óôïß÷éóç ðñïò ôá êÜôù";
+ Text[ korean ] = "¾Æ·¡¿¡ ¸ÂÃã";
+ Text[ turkish ] = "Aþaðý hizala";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_VER_JUSTIFY_STANDARD
+{
+ Text = "Vertikale Ausrichtung Standard" ;
+ Text [ ENGLISH ] = "Adjust Standard" ;
+ Text [ norwegian ] = "Tilpass Standard" ;
+ Text [ italian ] = "Allineamento standard verticale" ;
+ Text [ portuguese_brazilian ] = "Ajustar Padrão" ;
+ Text [ portuguese ] = "Ajustar padrão na vertical" ;
+ Text [ finnish ] = "Vakiotasaus" ;
+ Text [ danish ] = "Standard lodret justering" ;
+ Text [ french ] = "Alignement vertical par défaut" ;
+ Text [ swedish ] = "Vertikal justering standard" ;
+ Text [ dutch ] = "Standaard verticaal uitlijnen" ;
+ Text [ spanish ] = "Alineación vertical predeterminada" ;
+ Text [ english_us ] = "Vertical alignment default" ;
+ Text[ chinese_simplified ] = "´¹Ö±¶ÔÆë ±ê×¼";
+ Text[ russian ] = "Âûðàâíèâàíèå ïî âåðòèêàëè (ñòàíäàðò)";
+ Text[ polish ] = "Domyœlne wyrównanie w pionie";
+ Text[ japanese ] = "•W€‚’¼‘µ‚¦";
+ Text[ chinese_traditional ] = "««ª½¹ï»ô ¼Ð·Ç";
+ Text[ arabic ] = "ãÍÇÐÇÉ ÑÃÓíÉ ÇÝÊÑÇÖíÉ";
+ Text[ greek ] = "ÐñïåðéëïãÞ: Êáôáêüñõöç óôïß÷éóç";
+ Text[ korean ] = "±âº» ¼öÁ÷ ¸ÂÃã";
+ Text[ turkish ] = "Standart dikey hizalama";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_ORIENTATION_TOPBOTTOM
+{
+ Text = "Von oben nach unten" ;
+ Text [ ENGLISH ] = "Top to bottom" ;
+ Text [ norwegian ] = "Topp til bunn " ;
+ Text [ italian ] = "Dall'alto in basso" ;
+ Text [ portuguese_brazilian ] = "Topo para a base" ;
+ Text [ portuguese ] = "De cima para baixo" ;
+ Text [ finnish ] = "Ylhäältä alas" ;
+ Text [ danish ] = "Fra øverst til nederst" ;
+ Text [ french ] = "Du haut vers le bas" ;
+ Text [ swedish ] = "Uppifrån och ned" ;
+ Text [ dutch ] = "Van boven naar beneden" ;
+ Text [ spanish ] = "De arriba hacia abajo" ;
+ Text [ english_us ] = "Top to bottom" ;
+ Text[ chinese_simplified ] = "´ÓÉÏÏòÏÂ";
+ Text[ russian ] = "Ñâåðõó âíèç";
+ Text[ polish ] = "Z góry do do³u";
+ Text[ japanese ] = "ã‚©‚牺‚Ö";
+ Text[ chinese_traditional ] = "±q¤W¦V¤U";
+ Text[ arabic ] = "ãä ÃÚáì áÃÓÝá";
+ Text[ greek ] = "Áðü ðÜíù ðñïò ôá êÜôù";
+ Text[ korean ] = "À§¿¡¼­ ¾Æ·¡·Î";
+ Text[ turkish ] = "Yukardan aþaðý";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_ORIENTATION_BOTTOMTOP
+{
+ Text = "Von unten nach oben" ;
+ Text [ ENGLISH ] = "Bottom to Top" ;
+ Text [ norwegian ] = "Bunn til topp " ;
+ Text [ italian ] = "Dal basso in alto" ;
+ Text [ portuguese_brazilian ] = "Base para o topo" ;
+ Text [ portuguese ] = "De baixo para cima" ;
+ Text [ finnish ] = "Alhaalta ylös" ;
+ Text [ danish ] = "Fra nederst til øverst" ;
+ Text [ french ] = "Du bas vers le haut" ;
+ Text [ swedish ] = "Nedifrån och upp" ;
+ Text [ dutch ] = "Van beneden naar boven" ;
+ Text [ spanish ] = "Desde abajo hacia arriba" ;
+ Text [ english_us ] = "Bottom to Top" ;
+ Text[ chinese_simplified ] = "´ÓÏÂÏòÉÏ";
+ Text[ russian ] = "Ñíèçó ââåðõ";
+ Text[ polish ] = "Z do³u do góry";
+ Text[ japanese ] = "‰º‚©‚çã‚Ö";
+ Text[ chinese_traditional ] = "±q¤U¦V¤W";
+ Text[ arabic ] = "ãä ÃÓÝá Åáì ÃÚáì";
+ Text[ greek ] = "Áðü êÜôù ðñïò ôá ðÜíù";
+ Text[ korean ] = "¾Æ·¡¼­ À§·Î";
+ Text[ turkish ] = "Aþaðýdan yukarýya";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_ORIENTATION_STANDARD
+{
+ Text = "Schreibrichtung Standard" ;
+ Text [ ENGLISH ] = "Orientation standard" ;
+ Text [ norwegian ] = "Retningsstandard" ;
+ Text [ italian ] = "Orientamento standard" ;
+ Text [ portuguese_brazilian ] = "Orientação padrão" ;
+ Text [ portuguese ] = "Orientação padrão" ;
+ Text [ finnish ] = "Vakiosuunta" ;
+ Text [ danish ] = "Standard skriveretning" ;
+ Text [ french ] = "Sens d'écriture par défaut" ;
+ Text [ swedish ] = "Standardorientering" ;
+ Text [ dutch ] = "Standaard afdrukrichting" ;
+ Text [ spanish ] = "Orientación predeterminada" ;
+ Text [ english_us ] = "Default orientation" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö·½Ïò ±ê×¼";
+ Text[ russian ] = "Ñòàíäàðòíîå íàïðàâëåíèå ïèñüìà";
+ Text[ polish ] = "Orientacja domyœlna";
+ Text[ japanese ] = "‹L“ü•ûŒü •W€";
+ Text[ chinese_traditional ] = "¤å¦r¤è¦V ¼Ð·Ç";
+ Text[ arabic ] = "ÇÊÌÇå ÇáßÊÇÈÉ ÇáÇÝÊÑÇÖí";
+ Text[ greek ] = "ÐñïåðéëïãÞ êáôåýèõíóçò ãñáöÞò";
+ Text[ korean ] = "±âº» ¾²±â¹æÇâ";
+ Text[ turkish ] = "Standart metin yönü";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CLIP_STRING
+{
+ Text = "Unformatierter Text" ;
+ Text [ ENGLISH ] = "Unformatted Text" ;
+ Text [ norwegian ] = "Uformatert Tekst" ;
+ Text [ italian ] = "Testo non formattato" ;
+ Text [ portuguese_brazilian ] = "Texto Não Formatado" ;
+ Text [ portuguese ] = "Texto não formatado" ;
+ Text [ finnish ] = "Muotoilematon teksti" ;
+ Text [ danish ] = "Uformateret tekst" ;
+ Text [ french ] = "Texte non formaté" ;
+ Text [ swedish ] = "Oformaterad text" ;
+ Text [ dutch ] = "Tekst zonder opmaak" ;
+ Text [ spanish ] = "Texto no formateado" ;
+ Text [ english_us ] = "Unformatted text" ;
+ Text[ chinese_simplified ] = "δ¸ñʽµÄÎı¾";
+ Text[ russian ] = "Íåôîðìàòèðîâàííûé òåêñò";
+ Text[ polish ] = "Tekst niesformatowany";
+ Text[ japanese ] = "‘Ž®Ý’肳‚ê‚Ä‚È‚¢Ã·½Ä";
+ Text[ chinese_traditional ] = "¥¼®æ¦¡ªº¥»¤å";
+ Text[ arabic ] = "äÕ ÛíÑ ãäÓÞ";
+ Text[ greek ] = "Ìç ìïñöïðïéçìÝíï êåßìåíï";
+ Text[ korean ] = "¼­½ÄÈ­ µÇÁö ¾ÊÀº ÅؽºÆ®";
+ Text[ turkish ] = "Formatlanmamýþ metin";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_CLIP_RTF
+{
+ Text = "Formatierter Text [RTF]" ;
+ Text [ ENGLISH ] = "Formatted text [RTF]" ;
+ Text [ norwegian ] = "Formatert tekst [RTF]" ;
+ Text [ italian ] = "Testo formattato [RTF]" ;
+ Text [ portuguese_brazilian ] = "Texto formatado [RTF]" ;
+ Text [ portuguese ] = "Texto formatado [RTF]" ;
+ Text [ finnish ] = "Muotoiltu teksti [RTF]" ;
+ Text [ danish ] = "Formateret tekst [RTF]" ;
+ Text [ french ] = "Texte formaté [RTF]" ;
+ Text [ swedish ] = "Formaterad text [RTF]" ;
+ Text [ dutch ] = "Opgemaakte tekst [RTF]" ;
+ Text [ spanish ] = "Texto formateado [RTF]" ;
+ Text [ english_us ] = "Formatted text [RTF]" ;
+ Text[ chinese_simplified ] = "¸ñʽ»¯µÄÎı¾ [RTF]";
+ Text[ russian ] = "Ôîðìàòèðîâàííûé òåêñò [RTF]";
+ Text[ polish ] = "Sformatowany tekst [RTF]";
+ Text[ japanese ] = "‘Ž®Ý’èÏ‚Ý÷½Ä [RTF]";
+ Text[ greek ] = "ÌïñöùðïéçìÝíï êåßìåíï [RTF]";
+ Text[ korean ] = "¼­½Ä ÅؽºÆ® [RTF]";
+ Text[ chinese_traditional ] = "¤w¸g®æ¦¡¤Æªº¤å¦r[RTF]";
+ Text[ arabic ] = "äÕ ãõäÓøóÞ [RTF]";
+ Text[ turkish ] = "Formatlý metin [RTF]";
+};
+String SCSTR_CLIP_DDE
+{
+ /* ### ACHTUNG: Neuer Text in Resource? DDE Verknüpfung : DDE Verkn³pfung */
+ Text = "DDE Verknüpfung" ;
+ Text [ ENGLISH ] = "DDE link" ;
+ Text [ norwegian ] = "DDE link" ;
+ Text [ italian ] = "Collegamento DDE" ;
+ Text [ portuguese_brazilian ] = "Ligação do DDE" ;
+ Text [ portuguese ] = "Ligação DDE" ;
+ Text [ finnish ] = "DDE-linkki" ;
+ Text [ danish ] = "DDE-kæde" ;
+ Text [ french ] = "Lien DDE" ;
+ Text [ swedish ] = "DDE-länk" ;
+ Text [ dutch ] = "DDE-koppeling" ;
+ Text [ spanish ] = "Vínculo DDE" ;
+ Text [ english_us ] = "DDE link" ;
+ Text[ chinese_simplified ] = "DDE Á´½Ó";
+ Text[ russian ] = "Ññûëêà DDE";
+ Text[ polish ] = "£¹cze DDE";
+ Text[ japanese ] = "DDEØݸ";
+ Text[ chinese_traditional ] = "DDE ±¶®|";
+ Text[ arabic ] = "ÇÑÊÈÇØ DDE";
+ Text[ greek ] = "Óýíäåóç DDE";
+ Text[ korean ] = "DDE ¿¬°á";
+ Text[ turkish ] = "DDE baðlantýsý";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_CLIP_DIF
+{
+ Text = "DIF" ;
+ Text [ ENGLISH ] = "DIF" ;
+ Text [ english_us ] = "DIF" ;
+ Text [ italian ] = "DIF" ;
+ Text [ spanish ] = "DIF" ;
+ Text [ french ] = "DIF" ;
+ Text [ dutch ] = "DIF" ;
+ Text [ swedish ] = "DIF" ;
+ Text [ danish ] = "DIF" ;
+ Text [ portuguese ] = "DIF" ;
+ Text [ portuguese_brazilian ] = "DIF" ;
+ Text[ chinese_simplified ] = "DIF";
+ Text[ russian ] = "DIF";
+ Text[ polish ] = "DIF";
+ Text[ japanese ] = "DIF";
+ Text[ chinese_traditional ] = "DIF";
+ Text[ arabic ] = "DIF";
+ Text[ greek ] = "DIF";
+ Text[ korean ] = "DIF";
+ Text[ turkish ] = "DIF";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_PROTECTDOC
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Dokument schützen : Dokument sch³tzen */
+ Text = "Dokument schützen" ;
+ Text [ ENGLISH ] = "Protect document" ;
+ Text [ norwegian ] = "Protect document" ;
+ Text [ italian ] = "Proteggi documento" ;
+ Text [ portuguese_brazilian ] = "Prodígio um documento" ;
+ Text [ portuguese ] = "Proteger documento" ;
+ Text [ finnish ] = "Suojaa asiakirjan" ;
+ Text [ danish ] = "Beskyt dokument" ;
+ Text [ french ] = "Protéger le document" ;
+ Text [ swedish ] = "Skydda dokument" ;
+ Text [ dutch ] = "Document beveiligen" ;
+ Text [ spanish ] = "Proteger documento" ;
+ Text [ english_us ] = "Protect Document" ;
+ Text[ chinese_simplified ] = "±£»¤Îĵµ";
+ Text[ russian ] = "Çàùèòà äîêóìåíòà";
+ Text[ polish ] = "Chroñ arkusz";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ‚Ì•ÛŒì";
+ Text[ chinese_traditional ] = "«OÅ@¤å¥ó";
+ Text[ arabic ] = "ÍãÇíÉ ÇáãÓÊäÏ";
+ Text[ greek ] = "Ðñïóôáóßá åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ º¸È£";
+ Text[ turkish ] = "Belgeyi koru";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_UNPROTECTDOC
+{
+ Text = "Dokumentschutz aufheben" ;
+ Text [ ENGLISH ] = "Unprotect document" ;
+ Text [ norwegian ] = "Fjern dokumentbeskyttelse" ;
+ Text [ italian ] = "Disattiva protezione documento" ;
+ Text [ portuguese_brazilian ] = "Documento desprotegido" ;
+ Text [ portuguese ] = "Desproteger documento" ;
+ Text [ finnish ] = "Poista asiakirjan suojaus" ;
+ Text [ danish ] = "Ophæv dokumentbeskyttelse" ;
+ Text [ french ] = "Supprimer la protection du document" ;
+ Text [ swedish ] = "Upphäv dokumentskydd" ;
+ Text [ dutch ] = "Documentbeveiliging opheffen" ;
+ Text [ spanish ] = "Desproteger documento" ;
+ Text [ english_us ] = "Unprotect document" ;
+ Text[ chinese_simplified ] = "È¡ÏûÎĵµ±£»¤";
+ Text[ russian ] = "Ñíÿòü çàùèòó ñ äîêóìåíòà";
+ Text[ polish ] = "Nie chroñ dokumentu";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ‚Ì•ÛŒì‚ð‰ðœ";
+ Text[ chinese_traditional ] = "¨ú®øª«¥ó«OÅ@";
+ Text[ arabic ] = "ÅÒÇáÉ ÍãÇíÉ ÇáãÓÊäÏ";
+ Text[ greek ] = "ÊáôÜñãçóç ðñïóôáóßáò åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ º¸È£ ÇØÁ¦";
+ Text[ turkish ] = "Belge korumasýný kaldýr";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_PROTECTTAB
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Tabelle schützen : Tabelle sch³tzen */
+ Text = "Tabelle schützen" ;
+ Text [ ENGLISH ] = "Protect table" ;
+ Text [ english_us ] = "Protect Sheet" ;
+ Text [ dutch ] = "Werkblad beveiligen" ;
+ Text [ italian ] = "Proteggi tabella" ;
+ Text [ spanish ] = "Proteger hoja" ;
+ Text [ french ] = "Protéger la feuille" ;
+ Text [ swedish ] = "Skydda tabell" ;
+ Text [ danish ] = "Beskyt ark" ;
+ Text [ portuguese ] = "Proteger folha" ;
+ Text [ portuguese_brazilian ] = "Tabelle schützen" ;
+ Text[ chinese_simplified ] = "±£»¤¹¤×÷±í";
+ Text[ russian ] = "Çàùèòà ëèñòà";
+ Text[ polish ] = "Chroñ tabelê";
+ Text[ japanese ] = "•\\‚Ì•ÛŒì";
+ Text[ chinese_traditional ] = "«OÅ@¤u§@ªí";
+ Text[ arabic ] = "ÍãÇíÉ ÇáÌÏæá";
+ Text[ greek ] = "Ðñïóôáóßá ðßíáêá";
+ Text[ korean ] = "½ÃÆ® º¸È£";
+ Text[ turkish ] = "Tabloyu koru";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_UNPROTECTTAB
+{
+ Text = "Tabellenschutz aufheben" ;
+ Text [ ENGLISH ] = "Unprotect table" ;
+ Text [ english_us ] = "Unprotect sheet" ;
+ Text [ italian ] = "Disattiva protezione tabella" ;
+ Text [ spanish ] = "Desproteger hoja" ;
+ Text [ french ] = "Annuler la protection de la feuille" ;
+ Text [ dutch ] = "Werkbladbeveiliging opheffen" ;
+ Text [ swedish ] = "Upphäv tabellskydd" ;
+ Text [ danish ] = "Ophæv arkbeskyttelse" ;
+ Text [ portuguese ] = "Desproteger folha" ;
+ Text [ portuguese_brazilian ] = "Tabellenschutz aufheben" ;
+ Text[ chinese_simplified ] = "È¡Ïû¹¤×÷±í±£»¤";
+ Text[ russian ] = "Ñíÿòü çàùèòó ñ ëèñòà";
+ Text[ polish ] = "Nie chroñ arkusza";
+ Text[ japanese ] = "•\\‚Ì•ÛŒì‚ð‰ðœ";
+ Text[ chinese_traditional ] = "¨ú®ø¤u§@ªí«OÅ@";
+ Text[ arabic ] = "ÅáÛÇÁ ÍãÇíÉ ÇáÌÏæá";
+ Text[ greek ] = "ÊáôÜñãçóç ðñïóôáóßáò ðßíáêá";
+ Text[ korean ] = "½ÃÆ® º¸È£ ÇØÁ¦";
+ Text[ turkish ] = "Tablo korumasýný kaldýr";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_PASSWORD
+{
+ Text = "Kennwort:" ;
+ Text [ ENGLISH ] = "Password:" ;
+ Text [ norwegian ] = "Passord:" ;
+ Text [ italian ] = "Password:" ;
+ Text [ portuguese_brazilian ] = "Senha:" ;
+ Text [ portuguese ] = "Senha:" ;
+ Text [ finnish ] = "Salasana:" ;
+ Text [ danish ] = "Adgangskode:" ;
+ Text [ french ] = "Mot de passe :" ;
+ Text [ swedish ] = "Lösenord:" ;
+ Text [ dutch ] = "Wachtwoord:" ;
+ Text [ spanish ] = "Contraseña:" ;
+ Text [ english_us ] = "Password:" ;
+ Text[ chinese_simplified ] = "¿ÚÁ";
+ Text[ russian ] = "Ïàðîëü:";
+ Text[ polish ] = "Has³o:";
+ Text[ japanese ] = "Ê߽ܰÄÞ:";
+ Text[ chinese_traditional ] = "±K½X¡G";
+ Text[ arabic ] = "ßáãÉ ÇáÓÑ:";
+ Text[ greek ] = "Êùäéêüò ðñüóâáóçò:";
+ Text[ korean ] = "Æнº¿öµå:";
+ Text[ turkish ] = "Þifre:";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_PASSWORDOPT
+{
+ Text = "Kennwort (optional):" ;
+ Text [ ENGLISH ] = "Password (optional):" ;
+ Text [ norwegian ] = "Passord (valgfri):" ;
+ Text [ italian ] = "Password (facoltativa):" ;
+ Text [ portuguese_brazilian ] = "Senha (opcional):" ;
+ Text [ portuguese ] = "Senha (opcional):" ;
+ Text [ finnish ] = "Salasana (valinnainen):" ;
+ Text [ danish ] = "Adgangskode (valgfri):" ;
+ Text [ french ] = "Mot de passe (facultatif) :" ;
+ Text [ swedish ] = "Lösenord (valfritt):" ;
+ Text [ dutch ] = "Wachtwoord (optioneel):" ;
+ Text [ spanish ] = "Contraseña (opcional):" ;
+ Text [ english_us ] = "Password (optional):" ;
+ Text[ chinese_simplified ] = "¿ÚÁî(¿ÉÊ¡ÂÔ)£º";
+ Text[ russian ] = "Ïàðîëü (íå îáÿçàòåëüíî):";
+ Text[ polish ] = "Has³o (opcjonalne):";
+ Text[ japanese ] = "Ê߽ܰÄÞ(µÌß¼®Ý):";
+ Text[ chinese_traditional ] = "±K½X(¥i¬Ù²¤)¡G";
+ Text[ arabic ] = "ßáãÉ ÇáÓÑ (ÇÎÊíÇÑíÉ):";
+ Text[ greek ] = "Êùäéêüò ðñüóâáóçò (ðñïáéñåôéêÜ):";
+ Text[ korean ] = "Æнº¿öµå (¼±ÅÃ):";
+ Text[ turkish ] = "Þifre (isteðe baðlý):";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_WRONGPASSWORD
+{
+ Text = "Falsches Kennwort" ;
+ Text [ ENGLISH ] = "Wrong password" ;
+ Text [ norwegian ] = "Feil passord" ;
+ Text [ italian ] = "Password errata" ;
+ Text [ portuguese_brazilian ] = "Senha incorreta" ;
+ Text [ portuguese ] = "Senha incorrecta" ;
+ Text [ finnish ] = "Väärä salasana" ;
+ Text [ danish ] = "Forkert adgangskode" ;
+ Text [ french ] = "Mot de passe incorrect" ;
+ Text [ swedish ] = "Felaktigt lösenord" ;
+ Text [ dutch ] = "Dit wachtwoord is niet correct." ;
+ Text [ spanish ] = "Contraseña incorrecta" ;
+ Text [ english_us ] = "Incorrect Password" ;
+ Text[ chinese_simplified ] = "¿ÚÁîÎÞЧ";
+ Text[ russian ] = "Íåïðàâèëüíûé ïàðîëü";
+ Text[ polish ] = "Niepoprawne has³o";
+ Text[ japanese ] = "³‚µ‚­‚È‚¢Ê߽ܰÄÞ";
+ Text[ chinese_traditional ] = "±K½XµL®Ä";
+ Text[ arabic ] = "ßáãÉ ÓÑ ÛíÑ ÕÍíÍÉ";
+ Text[ greek ] = "ÅóöáëìÝíïò êùäéêüò ðñüóâáóçò";
+ Text[ korean ] = "À߸øµÈ Æнº¿öµå";
+ Text[ turkish ] = "Þifre yanlýþ";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_END
+{
+ Text = "~Ende" ;
+ Text [ ENGLISH ] = "~End" ;
+ Text [ norwegian ] = "~End" ;
+ Text [ italian ] = "~Fine" ;
+ Text [ portuguese_brazilian ] = "~Fim" ;
+ Text [ portuguese ] = "~Fim" ;
+ Text [ finnish ] = "~Loppu" ;
+ Text [ danish ] = "Slutning" ;
+ Text [ french ] = "~Fin" ;
+ Text [ swedish ] = "~Slut" ;
+ Text [ dutch ] = "~Eind" ;
+ Text [ spanish ] = "~Fin" ;
+ Text [ english_us ] = "~End" ;
+ Text[ chinese_simplified ] = "½áÊø(~E)";
+ Text[ russian ] = "Êîíåö";
+ Text[ polish ] = "Koniec";
+ Text[ japanese ] = "I—¹(~E)";
+ Text[ chinese_traditional ] = "µ²§ô(~E)";
+ Text[ arabic ] = "ÇáäåÇíÉ";
+ Text[ greek ] = "ÔÝëïò";
+ Text[ korean ] = "Á¾·á(~E)";
+ Text[ turkish ] = "~Son";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_STAT_PRINT
+{
+ Text = "Drucke..." ;
+ Text [ English ] = "Printing..." ;
+ Text [ norwegian ] = "Skriver ut..." ;
+ Text [ italian ] = "Stampa..." ;
+ Text [ portuguese_brazilian ] = "Imprimindo..." ;
+ Text [ portuguese ] = "A imprimir..." ;
+ Text [ finnish ] = "Tulostus..." ;
+ Text [ danish ] = "Udskriver..." ;
+ Text [ french ] = "Impression..." ;
+ Text [ swedish ] = "Skriver ut..." ;
+ Text [ dutch ] = "Bezig met afdrukken..." ;
+ Text [ spanish ] = "Imprimiendo..." ;
+ Text [ english_us ] = "Printing..." ;
+ Text[ chinese_simplified ] = "´òÓ¡...";
+ Text[ russian ] = "Ïå÷àòü...";
+ Text[ polish ] = "Drukowanie..";
+ Text[ japanese ] = "ˆóü...";
+ Text[ chinese_traditional ] = "¦C¦L...";
+ Text[ arabic ] = "ØÈÇÚÉ...";
+ Text[ greek ] = "Åêôýðùóç...";
+ Text[ korean ] = "Àμâ...";
+ Text[ turkish ] = "Yazdýr...";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_UNKNOWN
+{
+ Text = "Unbekannt" ;
+ Text [ English ] = "Unknown" ;
+ Text [ norwegian ] = "Unknown" ;
+ Text [ italian ] = "Senza nome" ;
+ Text [ portuguese_brazilian ] = "Desconhecido" ;
+ Text [ portuguese ] = "Desconhecido" ;
+ Text [ french ] = "Inconnu" ;
+ Text [ dutch ] = "Onbekend" ;
+ Text [ spanish ] = "Desconocido" ;
+ Text [ danish ] = "Ukendt" ;
+ Text [ swedish ] = "Okänd" ;
+ Text [ finnish ] = "Unknown" ;
+ Text [ english_us ] = "Unknown" ;
+ Text[ chinese_simplified ] = "δÃüÃû";
+ Text[ russian ] = "Íåèçâåñòíûé";
+ Text[ polish ] = "Nieznany";
+ Text[ japanese ] = "–³–¼";
+ Text[ chinese_traditional ] = "¥¼©R¦W";
+ Text[ arabic ] = "ÛíÑ ãÚÑæÝ";
+ Text[ greek ] = "¢ãíùóôï";
+ Text[ korean ] = "¾Ë¼ö¾øÀ½";
+ Text[ turkish ] = "Bilinmiyor";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CHAR_ATTRS
+{
+ Text = "Zeichenattribute" ;
+ Text [ ENGLISH ] = "Character Attributes" ;
+ Text [ norwegian ] = "Character Attributes" ;
+ Text [ italian ] = "Attributi carattere" ;
+ Text [ portuguese_brazilian ] = "Character Attributes" ;
+ Text [ portuguese ] = "Atributos de caracteres" ;
+ Text [ french ] = "Attributs de caractères" ;
+ Text [ dutch ] = "Schriftteken-attributen" ;
+ Text [ spanish ] = "Atributos de caracteres" ;
+ Text [ danish ] = "Tegnattributter" ;
+ Text [ swedish ] = "Teckenattribut" ;
+ Text [ finnish ] = "Character Attributes" ;
+ Text [ english_us ] = "Font Attributes" ;
+ Text[ chinese_simplified ] = "×ÖÌåÊôÐÔ";
+ Text[ russian ] = "Àòðèáóòû øðèôòà";
+ Text[ polish ] = "Atrybuty czcionek";
+ Text[ japanese ] = "•¶Žš‚Ì‘®«";
+ Text[ chinese_traditional ] = "¦r¤¸ÄÝ©Ê";
+ Text[ arabic ] = "ÓãÇÊ ÇáÎØ";
+ Text[ greek ] = "Éäéüôçôåò ÷áñáêôÞñùí";
+ Text[ korean ] = "±Û²Ã ¼Ó¼º";
+ Text[ turkish ] = "Yazýtipi öznitelikleri";
+ Text[ language_user1 ] = " ";
+};
+
+
+String SCSTR_CLPBRD_CLEAR
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Sie haben größere Datenmengen in die Zwischenablage gestellt.\nSoll der Inhalt der Zwischenablage anderen Applikationen zur Verfügung gestellt werden? : Sie haben gr÷˜ere Datenmengen in die Zwischenablage gestellt.\nSoll der Inhalt der Zwischenablage anderen Applikationen zur Verf³gung gestellt werden? */
+ Text = "Sie haben größere Datenmengen in die Zwischenablage gestellt.\nSoll der Inhalt der Zwischenablage anderen Applikationen zur Verfügung gestellt werden?" ;
+ Text [ English ] = "Shall the Clipboard Content be available for other Applications?" ;
+ Text [ norwegian ] = "Vil du at Innholdet på Utklippstavlen skal være tilgjengelig til andre applikasjoner?" ;
+ Text [ italian ] = "Negli appunti ci sono molti dati.\nRenderli disponibili per altre applicazioni?" ;
+ Text [ portuguese_brazilian ] = "O Conteúdo do Clipboard deve estar disponível para outros Aplicativos?" ;
+ Text [ portuguese ] = "Na área de transferência encontram-se grandes quantidades de dados.\nColocar o conteúdo da área de transferência à disposição de outras aplicações?" ;
+ Text [ english_us ] = "You have a large amount of data saved in the clipboard.\nDo you want the clipboard contents to be available in other applications?" ;
+ Text [ finnish ] = "Pitääkö leikepöydän sisällön olla muiden sovellusten käytettävissä?" ;
+ Text [ danish ] = "Du har placeret en stor mængde data i udklipsholderen.\nSkal udklipholderens indhold være tilgængeligt for andre applikationer?" ;
+ Text [ french ] = "Vous avez déposé un grand nombre de données dans le presse-papiers. \nSouhaitez-vous en conserver le contenu pour une utilisation ultérieure sous une autre application ?" ;
+ Text [ swedish ] = "Du har stora datamängder i urklippet. \nSkall innehållet i urklippet vara tillgängligt för andra tillämpningar?" ;
+ Text [ dutch ] = "U hebt een groot aantal gegevens op het Klembord geplaatst.\nWilt u dat de inhoud van het Klembord beschikbaar blijft voor andere toepassingen?" ;
+ Text [ spanish ] = "Ha copiado una gran cantidad de datos en el portapapeles.\n¿Desea que el contenido del portapapeles esté disponible para otras aplicaciones?" ;
+ Text[ chinese_simplified ] = "ÔÚ¼ôÌù°åÄÚÁô´æ´óÁ¿Êý¾Ý¡£\nÄúÒªÈÃÆäËûµÄÓ¦ÓóÌÐòҲʹÓÃÕâЩÊý¾ÝÂð£¿";
+ Text[ russian ] = "Âû ïîìåñòèëè â áóôåð îáìåíà áîëüøåå êîëè÷åñòâî äàííûõ.\nÑäåëàòü äîñòóïíûì ñîäåðæèìîå áóôåðà îáìåíà äëÿ äðóãèõ ïðèëîæåíèé?";
+ Text[ polish ] = "Wprowadzi³eœ wiêksze iloœci danych do schowka.\nCzy zawartoœæ schowka ma zostaæ udostêpniona innym aplikacjom?";
+ Text[ japanese ] = "‚©‚È‚è‚ÌÃÞ°À—Ê‚ª¸Ø¯ÌßÎÞ°ÄÞ‚É•ÛŠÇ‚³‚ê‚Ä‚¢‚Ü‚·B\n¸Ø¯ÌßÎÞ°ÄÞ‚Ì“à—e‚𑼂̱Ìßع°¼®Ý‚ÉŽg‚¤‚悤‚É‚µ‚Ä‚à‚æ‚낵‚¢‚Å‚·‚©?";
+ Text[ chinese_traditional ] = "¦b°Å¶K鷺¯d¦s¤j¶q¸ê®Æ¡C\n±z­nÅý¨ä¥LªºÀ³¥Îµ{§Ç¤]¨Ï¥Î³o¨Ç¸ê®Æ¡H";
+ Text[ arabic ] = "áÞÏ ÞãÊ ÈÍÝÙ ßãíÇÊ ßÈíÑÉ ãä ÇáÈíÇäÇÊ Ýí ÇáÍÇÝÙÉ.\nåá ÊÑíÏ æÖÚ ãÍÊæíÇÊ ÇáÍÇÝÙÉ ÊÍÊ ÊÕÑÝ ÊØÈíÞÇÊ ÃÎÑì¿";
+ Text[ greek ] = "¸÷åôå áðïèçêåýóåé ìåãÜëç ðïóüôçôá äåäïìÝíùí óôï ðñü÷åéñï.\nÈÝëåôå ôá äåäïìÝíá áõôÜ íá åßíáé äéáèÝóéìá êáé ãéá Üëëåò åöáñìïãÝò;";
+ Text[ korean ] = "Ŭ¸³º¸µå¿¡ ¸¹Àº ·®ÀÇ µ¥ÀÌÅÍ°¡ ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù .\nŬ¸³º¸µåÀÇ ³»¿ëÀ» ´Ù¸¥ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­µµ °¡´ÉÇÏ°Ô ÇÏ°Ú½À´Ï±î?";
+ Text[ turkish ] = "Panoya büyük miktarda veri aktardýnýz.\nPano içeriðini baþka uygulamalarda kullanmak istiyor musunuz?";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CFG_APP
+{
+ Text = "Systemoptionen" ;
+ Text [ ENGLISH ] = "System Options" ;
+ Text [ dutch ] = "Systeemopties" ;
+ Text [ english_us ] = "System Options" ;
+ Text [ italian ] = "Opzioni di sistema" ;
+ Text [ spanish ] = "Opciones del sistema" ;
+ Text [ french ] = "Options de système" ;
+ Text [ swedish ] = "Systemalternativ" ;
+ Text [ danish ] = "Systemindstillinger" ;
+ Text [ portuguese ] = "Opções do sistema" ;
+ Text [ portuguese_brazilian ] = "Systemoptionen" ;
+ Text[ chinese_simplified ] = "ϵͳѡÏî";
+ Text[ russian ] = "Ïàðàìåòðû ñèñòåìû";
+ Text[ polish ] = "Opcje systemu";
+ Text[ japanese ] = "¼½ÃÑ µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¨t²Î¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ ÇáäÙÇã";
+ Text[ greek ] = "ÅðéëïãÝò óõóôÞìáôïò";
+ Text[ korean ] = "½Ã½ºÅÛ ¿É¼Ç";
+ Text[ turkish ] = "Sistem seçenekleri";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CFG_DOC
+{
+ Text = "Dokumentoptionen" ;
+ Text [ ENGLISH ] = "Document Options" ;
+ Text [ english_us ] = "Document Options" ;
+ Text [ italian ] = "Opzioni di documento" ;
+ Text [ spanish ] = "Opciones del documento" ;
+ Text [ french ] = "Options de document" ;
+ Text [ dutch ] = "Documentopties" ;
+ Text [ swedish ] = "Dokumentalternativ" ;
+ Text [ danish ] = "Dokumentindstillinger" ;
+ Text [ portuguese ] = "Opções do documento" ;
+ Text [ portuguese_brazilian ] = "Dokumentoptionen" ;
+ Text[ chinese_simplified ] = "ÎĵµÑ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû äîêóìåíòà";
+ Text[ polish ] = "Opcje dokumentu";
+ Text[ japanese ] = "ÄÞ·­ÒÝÄ µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¤å¥ó¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ ÇáãÓÊäÏ";
+ Text[ greek ] = "ÅðéëïãÝò åããñÜöïõ";
+ Text[ korean ] = "¹®¼­ ¿É¼Ç";
+ Text[ turkish ] = "Belge seçenekleri";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CFG_VIEW
+{
+ Text = "Ansichtoptionen" ;
+ Text [ ENGLISH ] = "View Options" ;
+ Text [ english_us ] = "View Options" ;
+ Text [ italian ] = "Opzioni vista" ;
+ Text [ spanish ] = "Opciones de visualización" ;
+ Text [ french ] = "Options d'affichage" ;
+ Text [ dutch ] = "Beeldschermopties" ;
+ Text [ swedish ] = "Vyalternativ" ;
+ Text [ danish ] = "Visningsindstillinger" ;
+ Text [ portuguese ] = "Opções de visualização" ;
+ Text [ portuguese_brazilian ] = "Ansichtoptionen" ;
+ Text[ chinese_simplified ] = "ÊÓͼѡÏî";
+ Text[ russian ] = "Ïàðàìåòðû âèäà";
+ Text[ polish ] = "Opcje widoku";
+ Text[ japanese ] = "•\\Ž¦µÌß¼®Ý";
+ Text[ chinese_traditional ] = "À˵ø¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ ÇáÚÑÖ";
+ Text[ greek ] = "ÅðéëïãÝò ðñïâïëÞò";
+ Text[ korean ] = "º¸±â ¿É¼Ç";
+ Text[ turkish ] = "Görünüm seçenekleri";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CFG_INPUT
+{
+ Text = "Eingabeoptionen" ;
+ Text [ ENGLISH ] = "Input Options" ;
+ Text [ dutch ] = "Invoeropties" ;
+ Text [ english_us ] = "Input Options" ;
+ Text [ swedish ] = "Inmatningsalternativ" ;
+ Text [ danish ] = "Inputindstillinger" ;
+ Text [ italian ] = "Opzioni di digitazione" ;
+ Text [ spanish ] = "Opciones de entrada" ;
+ Text [ french ] = "Options de saisie" ;
+ Text [ portuguese ] = "Opções de entrada" ;
+ Text [ portuguese_brazilian ] = "Eingabeoptionen" ;
+ Text[ chinese_simplified ] = "ÊäÈëÑ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû ââîäà";
+ Text[ polish ] = "Opcje wprowadzania";
+ Text[ japanese ] = "“ü—͵Ìß¼®Ý";
+ Text[ chinese_traditional ] = "¿é¤J¿ï¶µ";
+ Text[ arabic ] = "ÎÕÇÆÕ ÇáÅÏÎÇá";
+ Text[ greek ] = "ÅðéëïãÝò åéóáãùãÞò";
+ Text[ korean ] = "ÀÔ·Â ¿É¼Ç";
+ Text[ turkish ] = "Giriþ seçenekleri";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CFG_SPELLCHECK
+{
+ Text = "Rechtschreiboptionen" ;
+ Text [ ENGLISH ] = "Spellchecker Options" ;
+ Text [ dutch ] = "Spellingsopties" ;
+ Text [ english_us ] = "Spelling Options" ;
+ Text [ italian ] = "Opzioni controllo ortografico" ;
+ Text [ spanish ] = "Opciones de ortografía" ;
+ Text [ french ] = "Options Orthographe" ;
+ Text [ swedish ] = "Rättstavningsalternativ" ;
+ Text [ danish ] = "Stavekontrol-indstillinger" ;
+ Text [ portuguese ] = "Opções de ortografia" ;
+ Text [ portuguese_brazilian ] = "Rechtschreiboptionen" ;
+ Text[ chinese_simplified ] = "Õý×Ö·¨Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû îðôîãðàôèè";
+ Text[ polish ] = "Opcje pisowni";
+ Text[ japanese ] = "½ÍßÙÁª¯¸ µÌß¼®Ý";
+ Text[ chinese_traditional ] = "«÷¦r";
+ Text[ arabic ] = "ÎíÇÑÇÊ ÇáÊÏÞíÞ ÇáÅãáÇÆí";
+ Text[ greek ] = "ÅðéëïãÝò ïñèïãñáößáò";
+ Text[ korean ] = "¸ÂÃã¹ý ¿É¼Ç";
+ Text[ turkish ] = "Yazým seçenekleri";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CFG_PRINT
+{
+ Text = "Druckoptionen" ;
+ Text [ ENGLISH ] = "Print Options" ;
+ Text [ dutch ] = "Afdrukopties" ;
+ Text [ english_us ] = "Print Options" ;
+ Text [ italian ] = "Opzioni di stampa" ;
+ Text [ spanish ] = "Opciones de impresión" ;
+ Text [ french ] = "Options d'impression" ;
+ Text [ swedish ] = "Utskriftsalternativ" ;
+ Text [ danish ] = "Udskriftsindstillinger" ;
+ Text [ portuguese ] = "Opções de impressão" ;
+ Text [ portuguese_brazilian ] = "Druckoptionen" ;
+ Text[ chinese_simplified ] = "´òÓ¡Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû ïå÷àòè";
+ Text[ polish ] = "Opcje wydruku";
+ Text[ japanese ] = "ˆóüµÌß¼®Ý";
+ Text[ chinese_traditional ] = "¦C¦L¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ ÇáØÈÇÚÉ";
+ Text[ greek ] = "ÅðéëïãÝò åêôýðùóçò";
+ Text[ korean ] = "Àμ⠿ɼÇ";
+ Text[ turkish ] = "Yazdýrma seçenekleri";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_CFG_NAVIPI
+{
+ Text = "Navigator-Einstellungen" ;
+ Text [ ENGLISH ] = "Navigator Settings" ;
+ Text [ portuguese ] = "Parâmetros - Navegador" ;
+ Text [ english_us ] = "Navigator Settings" ;
+ Text [ portuguese_brazilian ] = "Navigator-Einstellungen" ;
+ Text [ swedish ] = "Navigatorinställningar" ;
+ Text [ danish ] = "Navigator-indstillinger" ;
+ Text [ italian ] = "Impostazioni navigatore" ;
+ Text [ spanish ] = "Configuración del Navegador" ;
+ Text [ french ] = "Paramètres du Navigateur" ;
+ Text [ dutch ] = "Navigator-instellingen" ;
+ Text[ chinese_simplified ] = "É趨ÖúÊÖ";
+ Text[ russian ] = "Íàñòðîéêè Íàâèãàòîðà";
+ Text[ polish ] = "Ustawienia nawigatora";
+ Text[ japanese ] = "ÅËÞ¹Þ°À‚ÌÝ’è";
+ Text[ chinese_traditional ] = "³]©w§U¤â";
+ Text[ arabic ] = "ÅÚÏÇÏÇÊ ÇáäÇÝíÌíÊæÑ";
+ Text[ greek ] = "Ñõèìßóåéò Navigator";
+ Text[ korean ] = "³×¹Ì°ÔÀÌÅÍ ¼³Á¤";
+ Text[ turkish ] = "Navigatör ayarlarý";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_MINIMUM
+{
+ Text = "~Minimum" ;
+ Text [ ENGLISH ] = "~Minimum" ;
+ Text [ dutch ] = "~Minimum" ;
+ Text [ english_us ] = "~Minimum" ;
+ Text [ swedish ] = "~Minimum" ;
+ Text [ danish ] = "Minimum" ;
+ Text [ italian ] = "~Minimo" ;
+ Text [ spanish ] = "~Mínimo" ;
+ Text [ french ] = "~Minimum" ;
+ Text [ portuguese ] = "~Mínimo" ;
+ Text [ portuguese_brazilian ] = "~Minimum" ;
+ Text[ chinese_simplified ] = "×îС(~M)";
+ Text[ russian ] = "Ìèíèìóì";
+ Text[ polish ] = "Minimum";
+ Text[ japanese ] = "Ŭ’l(~M)";
+ Text[ chinese_traditional ] = "³Ì¤p(~M)";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÏäì";
+ Text[ greek ] = "ÅëÜ÷éóôï";
+ Text[ korean ] = "ÃÖ¼Ò(~M)";
+ Text[ turkish ] = "A~sgari";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_MAXIMUM
+{
+ Text = "~Maximum" ;
+ Text [ ENGLISH ] = "~Maximum" ;
+ Text [ dutch ] = "~Maximum" ;
+ Text [ english_us ] = "~Maximum" ;
+ Text [ swedish ] = "~Maximum" ;
+ Text [ danish ] = "Maksimum" ;
+ Text [ italian ] = "~Massimo" ;
+ Text [ spanish ] = "~Máximo" ;
+ Text [ french ] = "~Maximum" ;
+ Text [ portuguese ] = "~Máximo" ;
+ Text [ portuguese_brazilian ] = "~Maximum" ;
+ Text[ chinese_simplified ] = "×î´ó(~M)";
+ Text[ russian ] = "Ìàêñèìóì";
+ Text[ polish ] = "Maksimum";
+ Text[ japanese ] = "Å‘å’l(~M)";
+ Text[ chinese_traditional ] = "³Ì¤j(~M)";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÞÕì";
+ Text[ greek ] = "ÌÝãéóôï";
+ Text[ korean ] = "ÃÖ´ë(~M)";
+ Text[ turkish ] = "A~zami";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_VALUE
+{
+ Text = "~Wert" ;
+ Text [ ENGLISH ] = "~Value" ;
+ Text [ dutch ] = "~Waarde" ;
+ Text [ english_us ] = "~Value" ;
+ Text [ swedish ] = "~Värde" ;
+ Text [ danish ] = "Værdi" ;
+ Text [ italian ] = "~Valore" ;
+ Text [ spanish ] = "~Valor" ;
+ Text [ french ] = "~Valeur" ;
+ Text [ portuguese ] = "~Valor" ;
+ Text [ portuguese_brazilian ] = "~Wert" ;
+ Text[ chinese_simplified ] = "ÊýÖµ(~V)";
+ Text[ russian ] = "Çíà÷åíèå";
+ Text[ polish ] = "WartoϾ";
+ Text[ japanese ] = "”’l(~V)";
+ Text[ chinese_traditional ] = "¼Æ­È(~V)";
+ Text[ arabic ] = "ÇáÞíãÉ";
+ Text[ greek ] = "ÔéìÞ";
+ Text[ korean ] = "°ª(~V)";
+ Text[ turkish ] = "~Deðer";
+ Text[ language_user1 ] = " ";
+};
+
+ // fuer Dialoge:
+
+String SCSTR_CHARSET_USER
+{
+ Text = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);System" ;
+ Text [ ENGLISH ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);System" ;
+ Text [ english_us ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);System" ;
+ Text [ italian ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);Sistema" ;
+ Text [ spanish ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);Sistema" ;
+ Text [ french ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);Systeme" ;
+ Text [ dutch ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);System" ;
+ Text [ swedish ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);System" ;
+ Text [ danish ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);System" ;
+ Text [ portuguese ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);Sistema" ;
+ Text [ portuguese_brazilian ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);System" ;
+ Text[ chinese_simplified ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);ϵͳ";
+ Text[ russian ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);Ñèñòåìà";
+ Text[ polish ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);System";
+ Text[ japanese ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);¼½ÃÑ";
+ Text[ chinese_traditional ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);¨t²Î";
+ Text[ arabic ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);äÙÇã";
+ Text[ greek ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);Óýóôçìá";
+ Text[ korean ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);½Ã½ºÅÛ";
+ Text[ turkish ] = "Ansi;Mac;IBMPC;IBMPC (437);IBMPC (850);IBMPC (860);IBMPC (861);IBMPC (863);IBMPC (865);Sistem";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_COLUMN_USER
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Standard;Text;Datum (TMJ);Datum (MTJ);Datum (JMT);US-Englisch;ausblenden : Standard;Text;Datum (TMJ);Datum (MTJ);Datum (JMT);ausblenden */
+ Text = "Standard;Text;Datum (TMJ);Datum (MTJ);Datum (JMT);US-Englisch;ausblenden" ;
+ Text [ ENGLISH ] = "Standard;Text;Date (DMY);Date (MDY);Date (YMD);English (US);hide" ;
+ Text [ english_us ] = "Standard;Text;Date (DMY);Date (MDY);Date (YMD);US English;Hide" ;
+ Text [ italian ] = "Standard;Testo;Data (GMA);Data (MGA);Data (AMG);Inglese US;Nascondi" ;
+ Text [ spanish ] = "Estándar;Texto;Fecha (DMA);Fecha (MDA);Fecha (AMD);Inglés (US);Ocultar" ;
+ Text [ french ] = "Standard;Texte;Date (JMA);Date (MJA);Date (AMJ);Anglais US;Masquer" ;
+ Text [ dutch ] = "Standaard;Tekst;Datum (DMJ);Datum (MDJ);Datum (JMD);VS-Engels;verbergen" ;
+ Text [ swedish ] = "Standard;Text;Datum (DMÅ);Datum (MDÅ);Datum (ÅMD);Engelska (US);Dölj" ;
+ Text [ danish ] = "Standard;Tekst;Dato (DMÅ);Dato (MDÅ);Dato (ÅMD);Engelsk (US);skjul" ;
+ Text [ portuguese ] = "Padrão;Texto;Data (DMA);Data (MDA);Data (AMD);Inglês (E.U.),ocultar" ;
+ Text [ portuguese_brazilian ] = "Standard;Text;Datum (TMJ);Datum (MTJ);Datum (JMT);ausblenden" ;
+ Text[ chinese_simplified ] = "±ê×¼;ÎÄ×Ö;ÈÕÆÚ(DMY);ÈÕÆÚ(MDY);ÈÕÆÚ(YMD);ÃÀ¹úÓ¢Óï;ÒþÈë";
+ Text[ russian ] = "Ñòàíäàðò;Òåêñò;Äàòà (ÄÌÃ);Äàòà (ÌÄÃ);Äàòà (ÃÌÄ);Àíãëèéñêèé ÑØÀ;ñêðûòü";
+ Text[ polish ] = "Standard;Tekst;Data (DMY);Data (DMY);Data (YMD);Angielski (USA);ukryj";
+ Text[ japanese ] = "•W€;÷½Ä;“ú•t(DMY);“ú•t(MDY);“ú•t (YMD);‰pŒê(US);”ñ•\\Ž¦";
+ Text[ chinese_traditional ] = "¼Ð·Ç;¤å¦r;¤é´Á(DMY);¤é´Á(MDY);¤é´Á(YMD);¬ü»y;Áô¤J";
+ Text[ arabic ] = "ÞíÇÓíºäÕºÊÇÑíÎ (DMY)ºÊÇÑíÎ (MDY)º ÊÇÑíÎ (YMD)º ÅäßáíÒí ÇáæáÇíÇÊ ÇáãÊÍÏɺÅÎÝÇÁ";
+ Text[ greek ] = "ÐñïåðéëïãÞ;Êåßìåíï;Çìåñïìçíßá (ÇÌÅ);Çìåñïìçíßá (ÌÇÅ);Çìåñïìçíßá (ÅÌÇ);ÁããëéêÜ (Ç.Ð.Á.);Áðüêñõøç";
+ Text[ korean ] = "Ç¥ÁØ;ÅؽºÆ®;ÀÏÀÚ (DMY);ÀÏÀÚ (MDY);ÀÏÀÚ (YMD);US-English;¼û±â±â";
+ Text[ turkish ] = "Standart;Metin;Tarih (GAY);Tarih (AGY);Tarih(YAG);Ýngilizce (ABD);gizle";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_FIELDSEP
+{
+ Text = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Leer}\t32" ;
+ Text [ ENGLISH ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Space}\t32" ;
+ Text [ norwegian ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Space}\t32" ;
+ Text [ italian ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Spazio}\t32" ;
+ Text [ portuguese_brazilian ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Space}\t32" ;
+ Text [ portuguese ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{espaço}\t32" ;
+ Text [ french ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Espace}\t32" ;
+ Text [ dutch ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Leeg}\t32" ;
+ Text [ spanish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{vacío}\t32" ;
+ Text [ danish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{tom}\t32" ;
+ Text [ swedish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{tom}\t32" ;
+ Text [ finnish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Space}\t32" ;
+ Text [ english_us ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{space}\t32 " ;
+ Text[ chinese_simplified ] = ",\t44\t;\t59\t:\t58\t{ÖƱí·û}\t9\t{¿Õ°×}\t32";
+ Text[ russian ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Ïðîáåë}\t32";
+ Text[ polish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Pusty}\t32";
+ Text[ japanese ] = ",\t44\t;\t59\t:\t58\t{ÀÌÞ}\t9\t{‹ó”’}\t32";
+ Text[ chinese_traditional ] = ",\t44\t;\t59\t:\t58\t{»sªí²Å}\t9\t{ªÅ¥Õ}\t32";
+ Text[ arabic ] = ",\t44\t;\t59\t:\t58\t{ÚáÇãÉ ÌÏæáÉ}\t9\t{ãÓÇÝÉ}\t32";
+ Text[ greek ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{êåíü}\t32";
+ Text[ korean ] = ",\t44\t;\t59\t:\t58\t{ÅÇ}\t9\t{°ø¹é}\t32";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Boþluk}\t32";
+};
+
+String SCSTR_TEXTSEP
+{
+ Text = "\"\t34\t'\t39" ;
+};
+
+String SCSTR_FORMULA_AUTOCORRECTION
+{
+ Text = "StarOffice Calc hat einen Fehler in der eingegebenen Formel gefunden.\nWollen Sie die unten vorgeschlagene Korrektur akzeptieren?\n\n" ;
+ Text [ ENGLISH ] = "StarCalc found an error in the formula you entered.\nDo you want to accept the correction proposed below?\n\n" ;
+ Text [ portuguese ] = "O StarOffice Calc encontrou um erro na fórmula indicada. \nAceitar a correcção proposta em baixo?\n\n" ;
+ Text [ english_us ] = "StarOffice Calc found an error in the formula entered.\nDo you want to accept the correction proposed below?\n\n" ;
+ Text [ portuguese_brazilian ] = "StarOffice Calc hat einen Fehler in der eingegebenen Formel gefunden.\nWollen Sie die unten vorgeschlagene Korrektur akzeptieren?\n\n" ;
+ Text [ swedish ] = "StarOffice Calc har hittat ett fel i den angivna formeln.\nSkall korrigeringen som föreslås nedan accepteras?\n\n" ;
+ Text [ danish ] = "StarOffice Calc har fundet en fejl i den indtastede formel.\nVil du acceptere den rettelse, som foreslås nedenfor?\n" ;
+ Text [ italian ] = "StarOffice Calc ha trovato un errore nella formula digitata.\nVolete accettare la correzione proposta?\n\n" ;
+ Text [ spanish ] = "StarOffice Calc encontró un error en la fórmula dada.\n¿Desea aceptar la corrección sugerida abajo?\n\n" ;
+ Text [ french ] = "StarOffice Calc a détecté une erreur dans la formule.\nAcceptez-vous la correction proposée ci-dessous ?\n\n" ;
+ Text [ dutch ] = "StarOffice Calc heeft een fout in de formule gevonden.\nWilt u de hieronder voorgestelde correctie accepteren?\n\n" ;
+ Text[ chinese_simplified ] = "StarOffice Calc ·¢ÏÖÊäÈëµÄ¹«Ê½º¬ÓÐÒ»¸ö´íÎó¡£\nÄú½ÓÊÜÏÂÃ潨ÒéµÄÐÞ¸ÄÂð£¿\n\n";
+ Text[ russian ] = "StarOffice Calc íàøåë îøèáêó â ââåäåííîé ôîðìóëå.\nÂû õîòèòå ïðèíÿòü èñïðàâëåíèå, ïðåäëîæåííîå âíèçó?\n\n";
+ Text[ polish ] = "StarOffice Calc znalaz³ b³¹d we wprowadzonej formule.\nCzy akceptujesz podan¹ na dole korektê?\n\n";
+ Text[ japanese ] = "StarOffice Calc‚Í“ü—Í‚³‚ꂽ”Ž®‚É´×°‚ðŒ©‚Â‚¯‚Ü‚µ‚½B\nŽŸ‚ÌC³Œó•â‚ð“K—p‚µ‚Ü‚·‚©?\n\n";
+ Text[ chinese_traditional ] = "StarOffice Calc µo²{¿é¤Jªº¤½¦¡§t¦³¤@­Ó¿ù»~¡C\n±z±µ¨ü¤U­±ªº­×§ï«Øij¡H\n\n";
+ Text[ arabic ] = "StarOffice Calc æÌÏ ÎØà Ýí ÇáÕíÛÉ ÇáÊí ÞãÊ ÈÅÏÎÇáåÇ.\nåá ÊÑíÏ ÞÈæá ÇáÊÕÍíÍ ÇáãñÞÊÑÍ ÃÏäÇå¿\n\n";
+ Text[ greek ] = "Ôï StarOffice Calc åíôüðéóå Ýíá óöÜëìá óôïí ôýðï ðïõ åéóÜãáôå.\nÈÝëåôå íá ãßíåé áðïäï÷Þ ôçò ðñïôåéíüìåíçò äéüñèùóçò óôï êÜôù ìÝñïò;\n\n";
+ Text[ korean ] = "StarOffice Calc°¡ ÀÔ·ÂµÈ ¼ö½Ä¿¡¼­ ¿À·ù¸¦ ã¾Æ³Â½À´Ï´Ù.\n´ÙÀ½ÀÇ Á¦¾ÈµÈ ¸ðÀ½À» ¹Þ¾ÆµéÀ̽ðڽÀ´Ï±î ?\n\n";
+ Text[ turkish ] = "StarOffice Calc, girilen formülde bir hata buldu.\nAþaðýda önerilen düzeltmeyi kabul etmek istiyor musunuz?\n\n";
+ Text[ language_user1 ] = " ";
+};
+
+//! the graphics filter error strings should be moved to svx or offapp!
+
+String SCSTR_GRFILTER_OPENERROR
+{
+ Text = "Grafikdatei kann nicht geöffnet werden" ;
+ Text [ English ] = "Can't open graphic file" ;
+ Text [ norwegian ] = "Can't open graphic file" ;
+ Text [ italian ] = "Impossibile aprire il file grafico" ;
+ Text [ portuguese_brazilian ] = "NÆo consigo abrir arquivo gr fico" ;
+ Text [ portuguese ] = "Impossível abrir ficheiro gráfico." ;
+ Text [ finnish ] = "Grafiikkatiedostoa ei voi avata" ;
+ Text [ danish ] = "Det er ikke muligt at åbne grafikfilen" ;
+ Text [ french ] = "Impossible d'ouvrir le fichier graphique !" ;
+ Text [ swedish ] = "Grafikfil kan inte öppnas" ;
+ Text [ dutch ] = "Grafisch bestand kan niet worden geopend" ;
+ Text [ spanish ] = "No es posible abrir el archivo gráfico" ;
+ Text [ english_us ] = "Graphics file can not be opened" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨´ò¿ªÍ¼ÐÎÎļþ";
+ Text[ russian ] = "Îòêðûòü ãðàôè÷åñêèé ôàéë íåâîçìîæíî";
+ Text[ polish ] = "Pliku graficznego nie mo¿na by³o otworzyæ";
+ Text[ japanese ] = "¸Þ×̨¯¸Ì§²Ù‚ðŠJ‚¯‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªk¶}±Ò¹Ï¤ùÀÉ®×";
+ Text[ arabic ] = "áÇ íãßä ÝÊÍ ãáÝ ÇáÑÓæãÇÊ";
+ Text[ dutch ] = "Grafisch bestand kan niet worden geopend";
+ Text[ chinese_simplified ] = "ÎÞ·¨´ò¿ªÍ¼ÐÎÎļþ";
+ Text[ greek ] = "Äåí åßíáé äõíáôüí íá áíïé÷èåß ôï áñ÷åßï ãñáöéêþí";
+ Text[ korean ] = "±×·¡ÇÈ ÆÄÀÏÀÌ ¿­¸®Áö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Grafik dosyasý açýlamýyor";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_GRFILTER_IOERROR
+{
+ Text = "Grafikdatei kann nicht gelesen werden" ;
+ Text [ English ] = "Can't read graphic file" ;
+ Text [ norwegian ] = "Can't read graphic file" ;
+ Text [ italian ] = "Impossibile leggere il file grafico" ;
+ Text [ portuguese_brazilian ] = "NÆo consigo ler arquivo gr fico" ;
+ Text [ portuguese ] = "Impossível ler o ficheiro gráfico." ;
+ Text [ finnish ] = "Grafiikkatiedostoa ei voi lukea" ;
+ Text [ danish ] = "Det er ikke muligt at læse grafikfilen" ;
+ Text [ french ] = "Impossible de lire le fichier graphique !" ;
+ Text [ swedish ] = "Grafikfil kan inte läsas" ;
+ Text [ dutch ] = "Grafisch bestand kan niet worden gelezen" ;
+ Text [ spanish ] = "No es posible leer el archivo gráfico" ;
+ Text [ english_us ] = "Graphics file can not be read" ;
+ Text[ chinese_simplified ] = "ÎÞ·¨¶ÁȡͼÐÎÎļþ";
+ Text[ russian ] = "Ïðî÷èòàòü ãðàôè÷åñêèé ôàéë íåâîçìîæíî";
+ Text[ polish ] = "Pliku graficznego nie mo¿na by³o odczytaæ";
+ Text[ japanese ] = "¸Þ×̨¯¸Ì§²Ù‚ð“Ç‚Ýž‚ß‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "µLªkŪ¨ú¹Ï¤ùÀÉ®×";
+ Text[ arabic ] = "áÇ íãßä ÞÑÇÁÉ ãáÝ ÇáÑÓæãÇÊ";
+ Text[ dutch ] = "Grafisch bestand kan niet worden gelezen";
+ Text[ chinese_simplified ] = "ÎÞ·¨¶ÁȡͼÐÎÎļþ";
+ Text[ greek ] = "Äåí åßíáé äõíáôÞ ç áíÜãíùóç ôïõ áñ÷åßïõ ãñáöéêþí";
+ Text[ korean ] = "±×·¡ÇÈ ÆÄÀÏÀÌ ÀÐÇôÁú ¼ö ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Grafik dosyasý okunamýyor";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_GRFILTER_FORMATERROR
+{
+ Text = "Unbekanntes Grafikformat" ;
+ Text [ English ] = "Unknown graphic format" ;
+ Text [ norwegian ] = "Unknown graphic format" ;
+ Text [ italian ] = "Formato grafico sconosciuto" ;
+ Text [ portuguese_brazilian ] = "Formato gr fico desconhecido" ;
+ Text [ portuguese ] = "Formato de gráfico desconhecido." ;
+ Text [ finnish ] = "Tuntematon grafiikkamuoto" ;
+ Text [ danish ] = "Ukendt grafikformat" ;
+ Text [ french ] = "Format graphique inconnu !" ;
+ Text [ swedish ] = "Okänt grafikformat" ;
+ Text [ dutch ] = "Onbekend afbeeldingsformaat" ;
+ Text [ spanish ] = "Formato de imagen desconocido" ;
+ Text [ english_us ] = "Unknown graphic format" ;
+ Text[ chinese_simplified ] = "²»Ã÷µÄͼÐθñʽ";
+ Text[ russian ] = "Íåèçâåñòíûé ãðàôè÷åñêèé ôîðìàò";
+ Text[ polish ] = "Nieznany format graficzny";
+ Text[ japanese ] = "–³‘è‚̸Þ×̨¯¸‘Ž®";
+ Text[ chinese_traditional ] = "¤£©úªº¹Ï¤ù®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞ ÑÓæãÇÊ ÛíÑ ãÚÑæÝ";
+ Text[ dutch ] = "Onbekend afbeeldingsformaat";
+ Text[ chinese_simplified ] = "²»Ã÷µÄͼÐθñʽ";
+ Text[ greek ] = "¢ãíùóôç ìïñöÞ ãñáöéêþí";
+ Text[ korean ] = "¾Ë¼ö¾ø´Â ±×·¡ÇÈ ¼­½Ä";
+ Text[ turkish ] = "Bilinmeyen grafik dosyasý";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_GRFILTER_VERSIONERROR
+{
+ Text = "Die Version der Grafikdatei wird nicht unterstützt" ;
+ Text [ English ] = "Version of graphic file not supported" ;
+ Text [ norwegian ] = "Version of graphic file not supported" ;
+ Text [ italian ] = "Versione del file grafico non supportata" ;
+ Text [ portuguese_brazilian ] = "VersÆo de arquivo gr fico nÆo suportada" ;
+ Text [ portuguese ] = "Versão do ficheiro gráfico não tem suporte." ;
+ Text [ finnish ] = "Ei tukea grafiikkatiedoston versiolle" ;
+ Text [ danish ] = "Grafikfilens version bliver ikke understøttet" ;
+ Text [ french ] = "Cette version du fichier graphique n'est pas supportée !" ;
+ Text [ swedish ] = "Grafikfilens version stöds inte" ;
+ Text [ dutch ] = "Deze versie van het grafische bestand wordt niet ondersteund" ;
+ Text [ spanish ] = "No se soporta la versión del archivo gráfico" ;
+ Text [ english_us ] = "This graphic file version is not supported" ;
+ Text[ chinese_simplified ] = "²»Ö§³ÖÕâ¸öͼÐÎÎļþ°æ±¾";
+ Text[ russian ] = "Âåðñèÿ ãðàôè÷åñêîãî ôàéëà íå ïîääåðæèâàåòñÿ";
+ Text[ polish ] = "Wersja pliku graficznego nie bêdzie obs³ugiwana";
+ Text[ japanese ] = "¸Þ×̨¯¸Ì§²Ù‚ÌÊÞ°¼Þ®Ý‚ÍŽx‰‡‚³‚ê‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¤£¤ä´©³o­Óª©¥»ªº¹Ï¤ùÀÉ®×";
+ Text[ arabic ] = "áÇ íÊã ÏÚã ÅÕÏÇÑ ãáÝ ÇáÑÓæãÇÊ";
+ Text[ dutch ] = "Deze versie van het grafische bestand wordt niet ondersteund";
+ Text[ chinese_simplified ] = "²»Ö§³ÖÕâ¸öͼÐÎÎļþ°æ±¾";
+ Text[ greek ] = "Äåí õðïóôçñßæåôáé ç Ýêäïóç áõôïý ôïõ áñ÷åßïõ ãñáöéêþí";
+ Text[ korean ] = "ÀÌ ±×·¡ÇÈ ÆÄÀÏ ¹öÁ¯Àº Áö¿øµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Bu grafik dosyasý sürümü desteklenmiyor";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_GRFILTER_FILTERERROR
+{
+ Text = "Grafikfilter nicht gefunden" ;
+ Text [ English ] = "Graphic filter not found" ;
+ Text [ norwegian ] = "Graphic filter not found" ;
+ Text [ italian ] = "Filtro grafico non trovato" ;
+ Text [ portuguese_brazilian ] = "Filtro gr fico nÆo encontrado" ;
+ Text [ portuguese ] = "Filtro gráfico não encontrado." ;
+ Text [ finnish ] = "Grafiikkasuodinta ei löydy" ;
+ Text [ danish ] = "Grafikfilter blev ikke fundet" ;
+ Text [ french ] = "Filtre graphique introuvable" ;
+ Text [ swedish ] = "Grafikfilter hittades inte" ;
+ Text [ dutch ] = "Grafische filter niet gevonden" ;
+ Text [ spanish ] = "No se encontró el filtro de imagen" ;
+ Text [ english_us ] = "Graphics filter not found" ;
+ Text[ chinese_simplified ] = "ûÓÐÕÒµ½Í¼ÐιýÂËÆ÷";
+ Text[ russian ] = "Ãðàôè÷åñêèé ôèëüòð íå íàéäåí";
+ Text[ polish ] = "Nie znaleziono filtrów graficznych";
+ Text[ japanese ] = "¸Þ×̨¯¸Ì¨ÙÀ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "¨S¦³§ä¨ì¹Ï¤ù¹LÂo¾¹";
+ Text[ arabic ] = "ÊÚÐÑ ÇáÚËæÑ Úáì ÝáÊÑ ÇáÑÓæãÇÊ";
+ Text[ dutch ] = "Grafische filter niet gevonden";
+ Text[ chinese_simplified ] = "ûÓÐÕÒµ½Í¼ÐιýÂËÆ÷";
+ Text[ greek ] = "Äåí âñÝèçêå ôï ößëôñï ãñáöéêþí";
+ Text[ korean ] = "±×·¡ÇÈ ÇÊÅÍ°¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Grafik filtresi bulunamadý";
+ Text[ language_user1 ] = " ";
+};
+String SCSTR_GRFILTER_TOOBIG
+{
+ Text = "Nicht genug Speicher zum Einfügen der Grafik" ;
+ Text [ English ] = "Not enough memory to insert graphic" ;
+ Text [ norwegian ] = "Not enough memory to insert graphic" ;
+ Text [ italian ] = "Memoria insufficiente per inserire l'immagine" ;
+ Text [ portuguese_brazilian ] = "Mem¢ria insuficiente para inserir o gr fico" ;
+ Text [ portuguese ] = "Memória insuficiente para inserir a imagem." ;
+ Text [ finnish ] = "Muisti ei riitä grafiikan lisäämiseen" ;
+ Text [ danish ] = "Ikke nok hukommelse til at indsætte billedet" ;
+ Text [ french ] = "Impossible d'insérer l'image, mémoire insuffisante !" ;
+ Text [ swedish ] = "Inte tillräckligt med minne för att infoga grafiken" ;
+ Text [ dutch ] = "Niet genoeg vrij geheugen om de afbeelding in te voegen" ;
+ Text [ spanish ] = "No hay suficiente memoria para insertar la imagen" ;
+ Text [ english_us ] = "Not enough memory available to insert graphics." ;
+ Text[ chinese_simplified ] = "ûÓÐ×ã¹»µÄÄÚ´æÓÃÓÚ²åÈëͼÐÎ";
+ Text[ russian ] = "Íåäîñòàòî÷íî ïàìÿòè äëÿ âñòàâêè ðèñóíêà";
+ Text[ polish ] = "Za ma³o pamiêci do wstawienia grafiki";
+ Text[ japanese ] = "¸Þׯ̨¯¸‚ð‘}“ü‚·‚é‚Ì‚É\\•ª‚Ì‹ó‚«—e—Ê‚ª‚ ‚è‚Ü‚¹‚ñ";
+ Text[ chinese_traditional ] = "°O¾ÐÅ餣¨¬¡AµLªk´¡¤J¹Ï¤ù";
+ Text[ arabic ] = "áÇ íæÌÏ ÐÇßÑÉ ßÇÝíÉ áÅÏÑÇÌ ÇáÑÓã";
+ Text[ dutch ] = "Niet genoeg vrij geheugen om de afbeelding in te voegen";
+ Text[ chinese_simplified ] = "ûÓÐ×ã¹»µÄÄÚ´æÓÃÓÚ²åÈëͼÐÎ";
+ Text[ greek ] = "Ç ìíÞìç äåí åðáñêåß ãéá ôçí ðñïóèÞêç ôïõ ãñáöéêïý.";
+ Text[ korean ] = "±×·¡ÇÈÀ» »ðÀÔÇϱ⿡ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Grafiðin eklenmesi için yeterli bellek yok";
+ Text[ language_user1 ] = " ";
+};
+
diff --git a/sc/source/ui/src/scwarngs.src b/sc/source/ui/src/scwarngs.src
new file mode 100644
index 000000000000..e2fa73cf514d
--- /dev/null
+++ b/sc/source/ui/src/scwarngs.src
@@ -0,0 +1,127 @@
+/*************************************************************************
+ *
+ * $RCSfile: scwarngs.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define __RSC
+#include "scwarngs.hxx"
+#include "sc.hrc"
+
+
+
+#define SH_MAX 0x7fff
+
+Resource RID_WRNHDLSC
+{
+ String ERRCODE_SC_EXPORT_WRN_ASCII & SH_MAX
+ {
+ Text = "Es wurde nur die aktuelle Tabelle gespeichert." ;
+ Text [ ENGLISH ] = "The current table has only been saved." ;
+ Text [ english_us ] = "Only the active sheet could be saved." ;
+ Text [ italian ] = "È stata salvata solo la tabella corrente." ;
+ Text [ spanish ] = "Solo se ha guardado la hoja actual." ;
+ Text [ french ] = "Seule la feuille active a été enregistrée." ;
+ Text [ dutch ] = "Alleen de actuele tabel werd opgeslagen." ;
+ Text [ swedish ] = "Endast den aktuella tabellen sparades." ;
+ Text [ danish ] = "Kun det aktuelle ark blev gemt." ;
+ Text [ portuguese_brazilian ] = "Es wurde nur die aktuelle Tabelle gespeichert." ;
+ Text [ portuguese ] = "Só foi guardada a tabela activa." ;
+ Text[ chinese_simplified ] = "Ö»´æÅÌÁ˵±Ç°µÄ±í¸ñ¡£";
+ Text[ russian ] = "Ñîõðàíåíà òîëüêî òåêóùàÿ òàáëèöà.";
+ Text[ polish ] = "Tylko aktualny arkusz zosta³ zapisany.";
+ Text[ japanese ] = "Œ»Ý‚Ì•\\‚¾‚¯‚ª•Û‘¶‚³‚ê‚Ü‚µ‚½B";
+ Text[ chinese_traditional ] = "¥uÀx¦s¤F·í«eªºªí®æ¡C";
+ Text[ arabic ] = "Êã ÍÝÙ ÇáÌÏæá ÇáÍÇáí ÝÞØ.";
+ Text[ greek ] = "Áðïèçêåýôçêå ìüíï ï ôñÝ÷ùí ðßíáêáò.";
+ Text[ korean ] = "È°¼ºµÈ ½ÃÆ®¸¸ÀÌ ÀúÀåµË´Ï´Ù.";
+ Text[ turkish ] = "Yalnýzca yürürlükteki tablo kaydedildi.";
+ Text[ language_user1 ] = " ";
+ };
+ String ERRCODE_SC_IMPORT_WRN_RNGOVRFLW & SH_MAX
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Die Maximalanzahl von Zeilen wurde überschritten. überzählige Zeilen wurden nicht mitimportiert! : Die Maximalanzahl von Zeilen wurde ³berschritten. ³berzõhlige Zeilen wurden nicht mitimportiert! */
+ Text = "Die Maximalanzahl von Zeilen wurde überschritten. überzählige Zeilen wurden nicht mitimportiert!" ;
+ Text [ ENGLISH ] = "The number of rows exceeded the maximum. Additional rows were not importet!" ;
+ Text [ dutch ] = "Het maximale aantal regels werd overschreden. Het teveel aan regels werd niet geïmporteerd." ;
+ Text [ english_us ] = "The number of rows exceeded the maximum. Additional rows were not imported!" ;
+ Text [ italian ] = "È stato superato il numero massimo di righe. Le righe in eccesso non sono state importate!" ;
+ Text [ spanish ] = "¡Se ha excedido el número máximo de filas, las filas adicionales no se importaron!" ;
+ Text [ french ] = "Le nombre de lignes maximum a été dépassé. Les lignes en surplus n'ont pas été importées !" ;
+ Text [ swedish ] = "Maximala radantalet överskreds. Övertaliga rader blev inte medimporterade!" ;
+ Text [ danish ] = "Det maksimale antal rækker blev overskredet. De overtallige rækker blev ikke importeret!" ;
+ Text [ portuguese ] = "O número máximo de linhas foi ultrapassado. As linhas em excesso não foram importadas!" ;
+ Text [ portuguese_brazilian ] = "Die Maximalanzahl von Zeilen wurde überschritten. überzählige Zeilen wurden nicht mitimportiert!" ;
+ Text[ chinese_simplified ] = "ÒѾ­³¬¹ýÐеÄ×î´óÊýÄ¿£¬³¬¹ýµÄÐÐûÓб»ÊäÈ룡";
+ Text[ russian ] = "Ìàêñèìàëüíîå ÷èñëî ñòðîê ïðåâûøåíî. Ñòðîêè, ïðåâûøàþùèå çàäàííîå ÷èñëî, èìïîðòèðîâàíû íå áóäóò!";
+ Text[ polish ] = "Maksymalna liczba wierszy zosta³a przekroczona. Pozosta³e wiersze nie bêd¹ importowane!";
+ Text[ japanese ] = "s‚ÌÅ‚”‚ð’´‚¦‚Ü‚µ‚½B‰ßè‚Ìs‚ͲÝÎß°Ä‚³‚ê‚Ü‚¹‚ñ‚Å‚µ‚½!";
+ Text[ chinese_traditional ] = "¤w¸g¶W¹L¦Cªº³Ì¤j¼Æ¥Ø¡A¶W¹Lªº¦C¨S¦³³Q¿é¤J¡I";
+ Text[ arabic ] = "Êã ÊÌÇæÒ ÇáÚÏÏ ÇáÃÞÕì ááÕÝæÝ¡ áåÐÇ áã íÊã ÇÓÊíÑÇÏ ÇáÕÝæÝ ÇáÒÇÆÏÉ!";
+ Text[ greek ] = "¸ãéíå õðÝñâáóç ôïõ ìÝãéóôïõ áñéèìïý ãñáììþí. Äåí èá ãßíåé åéóáãùãÞ ôùí ãñáììþí ðïõ îåðåñíïýí ôï üñéï!";
+ Text[ korean ] = "ÇàÀÇ °¹¼ö°¡ Ãִ븦 ÃÊ°úÇß½À´Ï´Ù. Ãß°¡ÀûÀÎ ÇàÀ» °¡Á® ¿Ã ¼ö ¾ø½À´Ï´Ù !";
+ Text[ turkish ] = "Azami satýr sayýsý aþýldý. Fazla satýrlar içe aktarýlmadý!";
+ Text[ language_user1 ] = " ";
+ };
+ /*
+ String ERRCODE_SC_ & SH_MAX
+ {
+ Text = "";
+ Text[ENGLISH] = "";
+ };
+*/
+};
diff --git a/sc/source/ui/src/simpref.src b/sc/source/ui/src/simpref.src
new file mode 100644
index 000000000000..0ce18f8da6a9
--- /dev/null
+++ b/sc/source/ui/src/simpref.src
@@ -0,0 +1,164 @@
+/*************************************************************************
+ *
+ * $RCSfile: simpref.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+ //============================================================================
+ // Dialogfenster Datenbankbereich: Namen festlegen
+ //
+ // (C) 1994-96 StarDivision GmbH, Hamburg, Germany
+ //
+ // $Workfile: simpref.src $
+ // $Author: hr $
+ // $Date: 2000-09-18 16:45:06 $
+ // $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/source/ui/src/simpref.srv $
+ //----------------------------------------------------------------------------
+
+#include "simpref.hrc"
+ModelessDialog RID_SCDLG_SIMPLEREF
+{
+ OutputSize = TRUE ;
+ //HelpId = SID_DEFINE_DBNAME ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 222 , 60 ) ;
+ Text = "Bereich festlegen" ;
+ Moveable = TRUE ;
+ // Closeable = TRUE; // Dieser Dialog hat einen Cancel-Button !
+ FixedText FT_ASSIGN
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Text = "Bereich" ;
+ Text [ ENGLISH ] = "Refers to" ;
+ Text [ norwegian ] = "Refers to" ;
+ Text [ italian ] = "Area" ;
+ Text [ portuguese_brazilian ] = "Remente a" ;
+ Text [ portuguese ] = "Área" ;
+ Text [ finnish ] = "Viittaa:" ;
+ Text [ danish ] = "Område" ;
+ Text [ french ] = "Plage" ;
+ Text [ swedish ] = "Område" ;
+ Text [ dutch ] = "Bereik" ;
+ Text [ spanish ] = "Área" ;
+ Text [ english_us ] = "Area" ;
+ Text[ chinese_simplified ] = "ÇøÓò";
+ Text[ russian ] = "Îáëàñòü";
+ Text[ polish ] = "Obszar";
+ Text[ japanese ] = "”͈Í";
+ Text[ chinese_traditional ] = "°Ï°ì";
+ Text[ arabic ] = "ÇáäØÇÞ";
+ Text[ greek ] = "Ðåñéï÷Þ";
+ Text[ korean ] = "¿µ¿ª";
+ Text[ turkish ] = "Bölüm";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_ASSIGN
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 48 , 6 ) ;
+ Size = MAP_APPFONT ( 90 , 12 ) ;
+ TabStop = TRUE ;
+ // Text = "<Tabellenbereich>" ;
+ };
+ ImageButton RB_ASSIGN
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 142 , 6 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 166 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 166 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 166 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+};
diff --git a/sc/source/ui/src/solvrdlg.src b/sc/source/ui/src/solvrdlg.src
new file mode 100644
index 000000000000..71b58c22d34b
--- /dev/null
+++ b/sc/source/ui/src/solvrdlg.src
@@ -0,0 +1,418 @@
+/*************************************************************************
+ *
+ * $RCSfile: solvrdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+ //============================================================================
+ // Dialogfenster Zielwertsuche
+ //
+ // (C) 1994-96 StarDivision GmbH, Hamburg, Germany
+ //
+ // $Workfile: solvrdlg.src $
+ // $Author: hr $
+ // $Date: 2000-09-18 16:45:06 $
+ // $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/source/ui/src/solvrdlg.srv $
+ //----------------------------------------------------------------------------
+
+#include "solvrdlg.hrc"
+ModelessDialog RID_SCDLG_SOLVER
+{
+ OutputSize = TRUE ;
+ HelpId = SID_OPENDLG_SOLVE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 222 , 68 ) ;
+ Text = "Zielwertsuche" ;
+ Text [ ENGLISH ] = "Solver" ;
+ Text [ norwegian ] = "+++ Problemløser Solver" ;
+ Text [ italian ] = "Ricerca valore destinazione" ;
+ Text [ portuguese_brazilian ] = "Resolver" ;
+ Text [ portuguese ] = "Atingir objectivo" ;
+ Text [ finnish ] = "Ratkaisija" ;
+ Text [ danish ] = "Målsøgning" ;
+ Text [ french ] = "Recherche de valeur cible" ;
+ Text [ swedish ] = "Målvärdessökning" ;
+ Text [ dutch ] = "Doelwaarde zoeken" ;
+ Text [ spanish ] = "Buscar valor destino" ;
+ Text [ english_us ] = "Goal Seek" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ FixedText FT_FORMULACELL
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Formelzelle" ;
+ Text [ ENGLISH ] = "~formula cell" ;
+ Text [ norwegian ] = "~formelcelle" ;
+ Text [ italian ] = "~Cella formula" ;
+ Text [ portuguese_brazilian ] = "~célula de fórmula" ;
+ Text [ portuguese ] = "Célula ~fórmula" ;
+ Text [ finnish ] = "~kaavasolu" ;
+ Text [ danish ] = "~Formelcelle" ;
+ Text [ french ] = "Cellule de formule" ;
+ Text [ swedish ] = "~Formelcell" ;
+ Text [ dutch ] = "~Formulecel" ;
+ Text [ spanish ] = "Celda de ~fórmula" ;
+ Text [ english_us ] = "Formula cell" ;
+ Text[ chinese_simplified ] = "¹«Ê½µ¥Ôª¸ñ(~F)";
+ Text[ russian ] = "ß÷åéêà ôîðìóë";
+ Text[ polish ] = "Komórka formu³y";
+ Text[ japanese ] = "”Ž®¾Ù";
+ Text[ chinese_traditional ] = "¤½¦¡Àx¦s®æ(~F)";
+ Text[ arabic ] = "ÎáíÉ ÕíÛÉ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "Êåëß ôýðïõ";
+ Text[ korean ] = "¼ö½Ä ¼¿";
+ Text[ turkish ] = "~Formül hücresi";
+ };
+ Edit ED_FORMULACELL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 64 , 14 ) ;
+ Size = MAP_APPFONT ( 76 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_FORMULACELL
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 142 , 14 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_TARGETVAL
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Zielwert" ;
+ Text [ ENGLISH ] = "~target value" ;
+ Text [ norwegian ] = "~målverdi " ;
+ Text [ italian ] = "Valore di destin." ;
+ Text [ portuguese_brazilian ] = "~target value" ;
+ Text [ portuguese ] = "~Valor de destino" ;
+ Text [ finnish ] = "~target value" ;
+ Text [ danish ] = "Målværdi" ;
+ Text [ french ] = "Valeur ~cible" ;
+ Text [ swedish ] = "~Målvärde" ;
+ Text [ dutch ] = "~Doelwaarde" ;
+ Text [ spanish ] = "Valor ~destino" ;
+ Text [ english_us ] = "Target ~value" ;
+ Text[ chinese_simplified ] = "Ä¿±êÖµ(~V)";
+ Text[ russian ] = "Êîíå÷íîå çíà÷åíèå";
+ Text[ polish ] = "WartoϾ docelowa";
+ Text[ japanese ] = "–Ú•W’l(~V)";
+ Text[ chinese_traditional ] = "¥Ø¼Ð­È(~V)";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáåÏÝ";
+ Text[ greek ] = "ÔéìÞ ~ðñïïñéóìïý";
+ Text[ korean ] = "¸ñÇ¥ °ª(~V)";
+ Text[ turkish ] = "~Hedef deðer";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_TARGETVAL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 64 , 29 ) ;
+ Size = MAP_APPFONT ( 90 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_VARCELL
+ {
+ Pos = MAP_APPFONT ( 12 , 46 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~variable Zelle" ;
+ Text [ ENGLISH ] = "~variable cell" ;
+ Text [ norwegian ] = "~cellevariabel l" ;
+ Text [ italian ] = "Cella ~variabile" ;
+ Text [ portuguese_brazilian ] = "~célula variável" ;
+ Text [ portuguese ] = "Célula ~variável" ;
+ Text [ finnish ] = "~muuttujasolu" ;
+ Text [ danish ] = "Variabel celle" ;
+ Text [ french ] = "Cellule ~variable" ;
+ Text [ swedish ] = "~Variabel cell" ;
+ Text [ dutch ] = "~Variabele cel" ;
+ Text [ spanish ] = "Celda ~variable" ;
+ Text [ english_us ] = "Variable ~cell" ;
+ Text[ chinese_simplified ] = "¿É±äµÄµ¥Ôª¸ñ(~C)";
+ Text[ russian ] = "èçìåíÿåìàÿ ÿ÷åéêà";
+ Text[ polish ] = "Zmienna komórka";
+ Text[ japanese ] = "•Ï‰»‚³‚¹‚é¾Ù(~C)";
+ Text[ chinese_traditional ] = "¥iÅܪºÀx¦s®æ(~C)";
+ Text[ arabic ] = "ÎáíÉ ãÊÛíÑÉ";
+ Text[ greek ] = "ìåôáâëçôü êåëß";
+ Text[ korean ] = "º¯¼ö ¼¿(~C)";
+ Text[ turkish ] = "~Deðiþken hücre";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_VARCELL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 64 , 44 ) ;
+ Size = MAP_APPFONT ( 76 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ ImageButton RB_VARCELL
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 142 , 44 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ GroupBox GB_VARIABLES
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 154 , 59 ) ;
+ Text = "Vorgaben" ;
+ Text [ ENGLISH ] = "Variables" ;
+ Text [ norwegian ] = "Variabler" ;
+ Text [ italian ] = "Preimpostazioni" ;
+ Text [ portuguese_brazilian ] = "Variáveis" ;
+ Text [ portuguese ] = "Definir variáveis" ;
+ Text [ finnish ] = "Muuttujat" ;
+ Text [ danish ] = "Forudindstillinger" ;
+ Text [ french ] = "Définir les variables" ;
+ Text [ swedish ] = "Förinställningar" ;
+ Text [ dutch ] = "Standaard" ;
+ Text [ spanish ] = "Variables" ;
+ Text [ english_us ] = "Set defaults" ;
+ Text[ chinese_simplified ] = "Ô¤ÖÃ";
+ Text[ russian ] = "Çàäàííûå çíà÷åíèÿ";
+ Text[ polish ] = "Ustawienia domyœlne";
+ Text[ japanese ] = "Žw’è";
+ Text[ chinese_traditional ] = "¹w¸m";
+ Text[ arabic ] = "ÅÚÏÇÏÇÊ ÇÝÊÑÇÖíÉ";
+ Text[ greek ] = "ÐñïåðéëïãÝò";
+ Text[ korean ] = "±âº»°ª ¼³Á¤";
+ Text[ turkish ] = "Varsayýlan belirle";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ DefButton = TRUE ;
+ Pos = MAP_APPFONT ( 166 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 166 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 166 , 48 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ String STR_INVALIDVAL
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Unzulässiger Zielwert! : Unzulõssiger Zielwert! */
+ Text = "Unzulässiger Zielwert!" ;
+ Text [ ENGLISH ] = "Invalid target value!" ;
+ Text [ norwegian ] = "Ugyldig målverdi!" ;
+ Text [ italian ] = "Valore di destinazione non valido!" ;
+ Text [ portuguese_brazilian ] = "Valor do alvo inválido!" ;
+ Text [ portuguese ] = "Valor de destino incorreto!" ;
+ Text [ finnish ] = "Virheellinen kohdearvo!" ;
+ Text [ danish ] = "Ugyldig målværdi!" ;
+ Text [ french ] = "La valeur cible est incorrecte !" ;
+ Text [ swedish ] = "Ogiltigt målvärde!" ;
+ Text [ dutch ] = "Ongeldige doelwaarde!" ;
+ Text [ spanish ] = "¡Valor de destino no válido!" ;
+ Text [ english_us ] = "Invalid target value." ;
+ Text[ chinese_simplified ] = "Ä¿±êÊýÖµÎÞЧ£¡";
+ Text[ russian ] = "Íåäîïóñòèìîå êîíå÷íîå çíà÷åíèå!";
+ Text[ polish ] = "Nieprawid³owa wartoœæ docelowa!";
+ Text[ japanese ] = "‹–‚³‚ê‚È‚¢–Ú•W’l!";
+ Text[ chinese_traditional ] = "¥Ø¼Ð¼Æ­ÈµL®Ä¡I";
+ Text[ arabic ] = "ÞíãÉ åÏÝ ÛíÑ ÕÇáÍÉ!";
+ Text[ greek ] = "Ìç Ýãêõñç ôéìÞ ðñïïñéóìïý!";
+ Text[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº ¸ñÇ¥°ª.";
+ Text[ turkish ] = "Geçerli olmayan hedef deðer!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALIDVAR
+ {
+ Text = "Undefinierter Name als variable Zelle!" ;
+ Text [ ENGLISH ] = "Undefined name for variable cell!" ;
+ Text [ norwegian ] = "Udefinert navn for cellevariabel!" ;
+ Text [ italian ] = "Nome non definito per la cella-variabile!" ;
+ Text [ portuguese_brazilian ] = "Nome indefinido para célula variável!" ;
+ Text [ portuguese ] = "Nome indefinido para célula variável!" ;
+ Text [ finnish ] = "Muuttujasolun nimi on määrittämätön!" ;
+ Text [ danish ] = "Udefineret navn som variabelcelle!" ;
+ Text [ french ] = "Le nom pour la cellule variable n'a pas été défini !" ;
+ Text [ swedish ] = "Odefinierat namn som variabel cell!" ;
+ Text [ dutch ] = "Niet-gedefinieerde naam voor variabele cel!" ;
+ Text [ spanish ] = "¡Nombre no definido como celda de variable!" ;
+ Text [ english_us ] = "Undefined name for variable cell." ;
+ Text[ chinese_simplified ] = "䶨ÒåµÄÃû³Æµ±×÷¿É±äÁ¿µÄµ¥Ôª¸ñ£¡";
+ Text[ russian ] = "Íåîïðåäåëåííîå èìÿ äëÿ èçìåíÿåìîé ÿ÷åéêè!";
+ Text[ polish ] = "Nie zdefiniowana nazwa jako komórka zmienna!";
+ Text[ japanese ] = "•Ï‰»‚³‚¹‚é¾Ù‚ªŽw’肳‚ê‚Ä‚¢‚Ü‚¹‚ñ!";
+ Text[ chinese_traditional ] = "¥¼©w¸qªº¦WºÙ³Q·í§@¥iÅܶqªºÀx¦s®æ¡I";
+ Text[ arabic ] = "ÇÓã ÛíÑ ãõÚÑøÝ ßÎáíÉ ãÊÛíÑÉ!";
+ Text[ greek ] = "Áüñéóôï üíïìá ùò ìåôáâëçôü êåëß!";
+ Text[ korean ] = "º¯¼ö ¼¿¿¡ À̸§ÀÌ Á¤ÀǵÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Tanýmlanmamýþ hücresi için tanýmlanmamýþ ad!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_INVALIDFORM
+ {
+ Text = "Undefinierter Name als Formelzelle!" ;
+ Text [ ENGLISH ] = "Undefined name for formula cell!" ;
+ Text [ norwegian ] = "Udefinert navn for formelcelle!" ;
+ Text [ italian ] = "Nome non definito per la cella-formula!" ;
+ Text [ portuguese_brazilian ] = "Nome indefinido para célula de fórmula!" ;
+ Text [ portuguese ] = "Nome indefinido para célula fórmula!" ;
+ Text [ finnish ] = "Kaavasolun nimi on määrittämätön!" ;
+ Text [ danish ] = "Udefineret navn som formelcelle!" ;
+ Text [ french ] = "Le nom de la cellule de formule n'a pas été défini !" ;
+ Text [ swedish ] = "Odefinierat namn som formelcell!" ;
+ Text [ dutch ] = "Niet-gedefinieerde naam voor formulecel!" ;
+ Text [ spanish ] = "¡Nombre no definido como celda de fórmula!" ;
+ Text [ english_us ] = "Undefined name as formula cell." ;
+ Text[ chinese_simplified ] = "䶨ÒåµÄÃû³Æµ±×÷¹«Ê½µ¥Ôª¸ñ£¡";
+ Text[ russian ] = "Íåîïðåäåëåííîå èìÿ äëÿ ÿ÷åéêè ôîðìóëû!";
+ Text[ polish ] = "Nie zdefiniowana nazwa jako formu³a komórek!";
+ Text[ japanese ] = "”Ž®¾Ù‚ªŽw’肳‚ê‚Ä‚¢‚Ü‚¹‚ñ!";
+ Text[ chinese_traditional ] = "¥¼©w¸qªº¦WºÙ³Q·í§@¤½¦¡Àx¦s®æ¡I";
+ Text[ arabic ] = "ÇÓã ÛíÑ ãõÚÑøÝ ßÎáíÉ ÕíÛÉ!";
+ Text[ greek ] = "Áüñéóôï üíïìá ùò êåëß ôýðïõ!";
+ Text[ korean ] = "¼ö½Ä ¼¿¿¡ À̸§ÀÌ Á¤ÀǵÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Formül hücresi için tanýmlanmamýþ ad!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NOFORMULA
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Zelle muß eine Formel enthalten! : Zelle mu˜ eine Formel enthalten! */
+ Text = "Zelle muss eine Formel enthalten!" ;
+ Text [ ENGLISH ] = "No formula cell!" ;
+ Text [ norwegian ] = "Ingen formelcelle!" ;
+ Text [ italian ] = "La cella deve contenere una formula!" ;
+ Text [ portuguese_brazilian ] = "Sem célula de fórmula!" ;
+ Text [ portuguese ] = "A célula tem de conter uma fórmula!" ;
+ Text [ finnish ] = "Ei kaavasolua!" ;
+ Text [ danish ] = "Cellen skal indeholde en formel!" ;
+ Text [ french ] = "La cellule doit contenir une formule !" ;
+ Text [ swedish ] = "Cell måste innehålla en formel!" ;
+ Text [ dutch ] = "Cel moet een formule bevatten" ;
+ Text [ spanish ] = "¡La celda debe contener una fórmula!" ;
+ Text [ english_us ] = "Cell must contain a formula." ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñÄÚ±ØÐ뺬ÓÐÒ»¸ö¹«Ê½£¡";
+ Text[ russian ] = "ß÷åéêà äîëæíà ñîäåðæòü ôîðìóëó!";
+ Text[ polish ] = "Komórka musi zawieraæ formu³ê!";
+ Text[ japanese ] = "¾Ù‚Í”Ž®‚ðŠÜ‚ñ‚Å‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ!";
+ Text[ chinese_traditional ] = "Àx¦s®æ¥²¶·§t¦³¤@­Ó¤½¦¡¡I";
+ Text[ arabic ] = "íÌÈ Ãä ÊÍÊæí ÇáÎáíÉ Úáì ÕíÛÉ.";
+ Text[ greek ] = "Ôï êåëß ðñÝðåé íá ðåñéÝ÷åé Ýíáí ôýðï!";
+ Text[ korean ] = "¼¿¿¡´Â ¼ö½ÄÀÌ Æ÷ÇԵǾî¾ß¸¸ ÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Hücre, formül içermeli!";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "µ¥±äÁ¿Çó½â";
+ Text[ russian ] = "Ïîäáîð ïàðàìåòðà";
+ Text[ polish ] = "Szukaj wyniku";
+ Text[ japanese ] = "ºÞ°Ù¼°¸";
+ Text[ chinese_traditional ] = "¥Ø¼Ð·j´M";
+ Text[ arabic ] = "ÇáÈÍË Úä ÇáÞíãÉ ÇáåÏÝ";
+ Text[ greek ] = "ÁíáæÞôçóç óôü÷ïõ";
+ Text[ korean ] = "¸ñÇ¥ ã±â";
+ Text[ turkish ] = "Hedef deðer ara";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/src/sortdlg.src b/sc/source/ui/src/sortdlg.src
new file mode 100644
index 000000000000..d61fd01b43d9
--- /dev/null
+++ b/sc/source/ui/src/sortdlg.src
@@ -0,0 +1,829 @@
+/*************************************************************************
+ *
+ * $RCSfile: sortdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sortdlg.hrc"
+TabPage RID_SCPAGE_SORT_FIELDS
+{
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpId = HID_SCPAGE_SORT_FIELDS ;
+ Size = MAP_APPFONT ( 208 , 170 ) ;
+ ListBox LB_SORT1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 19 ) ;
+ Size = MAP_APPFONT ( 120 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ RadioButton BTN_UP1
+ {
+ Pos = MAP_APPFONT ( 140 , 14 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "A~ufsteigend" ;
+ Text [ ENGLISH ] = "~Ascending" ;
+ Text [ norwegian ] = "St~igende" ;
+ Text [ italian ] = "Crescente" ;
+ Text [ portuguese_brazilian ] = "~Ascendente" ;
+ Text [ portuguese ] = "~Ascendente" ;
+ Text [ finnish ] = "~Nouseva" ;
+ Text [ danish ] = "Stigende" ;
+ Text [ french ] = "~Croissant" ;
+ Text [ swedish ] = "Stig~ande" ;
+ Text [ dutch ] = "Op~lopend" ;
+ Text [ spanish ] = "~Ascendente" ;
+ Text [ english_us ] = "~Ascending" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÉÏ(~A)";
+ Text[ russian ] = "Ïî âîçðàñòàíèþ";
+ Text[ polish ] = "Rosn¹co";
+ Text[ japanese ] = "¸‡(~A)";
+ Text[ chinese_traditional ] = "¦V¤W(~A)";
+ Text[ arabic ] = "ÊÕÇÚÏí";
+ Text[ greek ] = "Áýîïõóá";
+ Text[ korean ] = "¿À¸§Â÷¼ø(~A)";
+ Text[ turkish ] = "A~rtan düzende";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DOWN1
+ {
+ Pos = MAP_APPFONT ( 140 , 27 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "A~bsteigend" ;
+ Text [ ENGLISH ] = "~Descending" ;
+ Text [ norwegian ] = "~Synkende" ;
+ Text [ italian ] = "Decrescente" ;
+ Text [ portuguese_brazilian ] = "~Descendente" ;
+ Text [ portuguese ] = "~Descendente" ;
+ Text [ finnish ] = "~Laskeva" ;
+ Text [ danish ] = "Faldende" ;
+ Text [ french ] = "~Décroissant" ;
+ Text [ swedish ] = "Fallan~de" ;
+ Text [ dutch ] = "A~flopend" ;
+ Text [ spanish ] = "~Descendente" ;
+ Text [ english_us ] = "~Descending" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÏÂ(~D)";
+ Text[ russian ] = "Ïî óáûâàíèþ";
+ Text[ polish ] = "Malej¹co";
+ Text[ japanese ] = "~‡";
+ Text[ chinese_traditional ] = "¦V¤U(~D)";
+ Text[ arabic ] = "ÊäÇÒáí";
+ Text[ greek ] = "Öèßíïõóá";
+ Text[ korean ] = "³»¸²Â÷¼ø(~D)";
+ Text[ turkish ] = "A~zalan düzende";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_SORT1
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 196 , 40 ) ;
+ Text = "Sortieren nach" ;
+ Text [ ENGLISH ] = "Sort by" ;
+ Text [ norwegian ] = "Sortere etter" ;
+ Text [ italian ] = "Ordina per" ;
+ Text [ portuguese_brazilian ] = "Ordenar por" ;
+ Text [ portuguese ] = "Ordenar por" ;
+ Text [ finnish ] = "Lajitteluavain" ;
+ Text [ danish ] = "Sorter efter" ;
+ Text [ french ] = "Trier selon" ;
+ Text [ swedish ] = "Sortera efter" ;
+ Text [ dutch ] = "Sorteren op" ;
+ Text [ spanish ] = "Ordenar según" ;
+ Text [ english_us ] = "Sort by" ;
+ Text[ chinese_simplified ] = "ÅÅÐò°´";
+ Text[ russian ] = "Ñîðòèðîâàòü ïî";
+ Text[ polish ] = "Sortuj wed³ug";
+ Text[ japanese ] = "Å—Dæ·°";
+ Text[ chinese_traditional ] = "±Æ§Ç«ö·Ó";
+ Text[ arabic ] = "ÝÑÒ ÍÓÈ";
+ Text[ greek ] = "Ôáîéíüìçóç êáôÜ";
+ Text[ korean ] = "·Î Á¤·Ä";
+ Text[ turkish ] = "Sýralama esasý";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_SORT2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 68 ) ;
+ Size = MAP_APPFONT ( 120 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ RadioButton BTN_UP2
+ {
+ Pos = MAP_APPFONT ( 140 , 63 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "Au~fsteigend" ;
+ Text [ ENGLISH ] = "Ascend~ing" ;
+ Text [ norwegian ] = "Stige~nde" ;
+ Text [ italian ] = "Crescente" ;
+ Text [ portuguese_brazilian ] = "Ascend~ente" ;
+ Text [ portuguese ] = "Ascenden~te" ;
+ Text [ finnish ] = "N~ouseva" ;
+ Text [ danish ] = "Stigende" ;
+ Text [ french ] = "Croiss~ant" ;
+ Text [ swedish ] = "St~igande" ;
+ Text [ dutch ] = "Oplope~nd" ;
+ Text [ spanish ] = "A~scendente" ;
+ Text [ english_us ] = "A~scending" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÉÏ(~S)";
+ Text[ russian ] = "Ïî âîçðàñòàíèþ";
+ Text[ polish ] = "Rosn¹co";
+ Text[ japanese ] = "¸‡(~S)";
+ Text[ chinese_traditional ] = "¦V¤W(~S)";
+ Text[ arabic ] = "ÊÕÇÚÏí";
+ Text[ greek ] = "Áýîïõóá";
+ Text[ korean ] = "¿À¸§Â÷¼ø(~S)";
+ Text[ turkish ] = "Ar~tan düzende";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DOWN2
+ {
+ Pos = MAP_APPFONT ( 140 , 76 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "Abstei~gend" ;
+ Text [ ENGLISH ] = "D~escending" ;
+ Text [ norwegian ] = "S~ynkende" ;
+ Text [ italian ] = "Decrescente" ;
+ Text [ portuguese_brazilian ] = "D~escendente" ;
+ Text [ portuguese ] = "D~escendente" ;
+ Text [ finnish ] = "L~askeva" ;
+ Text [ danish ] = "Faldende" ;
+ Text [ french ] = "D~écroissant" ;
+ Text [ swedish ] = "Falland~e" ;
+ Text [ dutch ] = "Aflo~pend" ;
+ Text [ spanish ] = "D~escendente" ;
+ Text [ english_us ] = "D~escending" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÉÏ(~E)";
+ Text[ russian ] = "Ïî óáûâàíèþ";
+ Text[ polish ] = "Malej¹co";
+ Text[ japanese ] = "~‡";
+ Text[ chinese_traditional ] = "¦V¤W(~E)";
+ Text[ arabic ] = "ÊäÇÒáí";
+ Text[ greek ] = "Öèßíïõóá";
+ Text[ korean ] = "³»¸²Â÷¼ø(~E)";
+ Text[ turkish ] = "Aza~lan düzende";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_SORT2
+ {
+ Pos = MAP_APPFONT ( 6 , 52 ) ;
+ Size = MAP_APPFONT ( 196 , 40 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Anschließend nach : Anschlie˜end nach */
+ Text = "Anschließend nach" ;
+ Text [ ENGLISH ] = "Then by" ;
+ Text [ norwegian ] = "Og så etter" ;
+ Text [ italian ] = "poi per" ;
+ Text [ portuguese_brazilian ] = "Em seguida por" ;
+ Text [ portuguese ] = "Concluíndo por" ;
+ Text [ finnish ] = "2. lajittelujärjestys" ;
+ Text [ danish ] = "Og derefter" ;
+ Text [ french ] = "Puis selon" ;
+ Text [ swedish ] = "Sedan efter" ;
+ Text [ dutch ] = "Daarna op" ;
+ Text [ spanish ] = "Después según" ;
+ Text [ english_us ] = "Then by" ;
+ Text[ chinese_simplified ] = "È»ºó°´";
+ Text[ russian ] = "Çàòåì ïî";
+ Text[ polish ] = "Nastêpnie wed³ug";
+ Text[ japanese ] = "2”Ô–Ú‚É—D悳‚ê‚é·°";
+ Text[ chinese_traditional ] = "µM«á«ö·Ó";
+ Text[ arabic ] = "Ëã ÍÓÈ";
+ Text[ greek ] = "Êáôüðéí êáôÜ";
+ Text[ korean ] = "À̾";
+ Text[ turkish ] = "Sonraki sýralama esasý";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_SORT3
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 117 ) ;
+ Size = MAP_APPFONT ( 120 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ RadioButton BTN_UP3
+ {
+ Pos = MAP_APPFONT ( 140 , 112 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "Aufs~teigend" ;
+ Text [ ENGLISH ] = "Ascendin~g" ;
+ Text [ norwegian ] = "Stigend~e" ;
+ Text [ italian ] = "Crescen~te" ;
+ Text [ portuguese_brazilian ] = "Ascenden~te" ;
+ Text [ portuguese ] = "Ascenden~te" ;
+ Text [ finnish ] = "No~useva" ;
+ Text [ danish ] = "Stigende" ;
+ Text [ french ] = "Croissan~t" ;
+ Text [ swedish ] = "Sti~gande" ;
+ Text [ dutch ] = "~Oplopend" ;
+ Text [ spanish ] = "As~cendente" ;
+ Text [ english_us ] = "As~cending" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÉÏ(~C)";
+ Text[ russian ] = "Ïî âîçðàñòàíèþ";
+ Text[ polish ] = "Rosn¹co";
+ Text[ japanese ] = "¸‡(~C)";
+ Text[ chinese_traditional ] = "¦V¤W(~C)";
+ Text[ arabic ] = "ÊÕÇÚÏí";
+ Text[ greek ] = "Áýîïõóá";
+ Text[ korean ] = "¿À¸§Â÷¼ø(~C)";
+ Text[ turkish ] = "Art~an düzende";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DOWN3
+ {
+ Pos = MAP_APPFONT ( 140 , 125 ) ;
+ Size = MAP_APPFONT ( 55 , 10 ) ;
+ Text = "Absteigen~d" ;
+ Text [ ENGLISH ] = "De~scending" ;
+ Text [ norwegian ] = "Sy~nkende" ;
+ Text [ italian ] = "Decrescente" ;
+ Text [ portuguese_brazilian ] = "De~scendente" ;
+ Text [ portuguese ] = "De~scendente" ;
+ Text [ finnish ] = "La~skeva" ;
+ Text [ danish ] = "Faldende" ;
+ Text [ french ] = "Dé~croissant" ;
+ Text [ swedish ] = "Falla~nde" ;
+ Text [ dutch ] = "Aflopen~d" ;
+ Text [ spanish ] = "Desce~ndente" ;
+ Text [ english_us ] = "Desce~nding" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÏÂ(~N)";
+ Text[ russian ] = "Ïî óáûâàíèþ";
+ Text[ polish ] = "Malej¹co";
+ Text[ japanese ] = "~‡";
+ Text[ chinese_traditional ] = "¦V¤U(~N)";
+ Text[ arabic ] = "ÊäÇÒáí";
+ Text[ greek ] = "Öèßíïõóá";
+ Text[ korean ] = "³»¸²Â÷¼ø(~N)";
+ Text[ turkish ] = "Azala~n düzende";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_SORT3
+ {
+ Pos = MAP_APPFONT ( 6 , 101 ) ;
+ Size = MAP_APPFONT ( 196 , 40 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Anschließend nach : Anschlie˜end nach */
+ Text = "Anschließend nach" ;
+ Text [ ENGLISH ] = "Then by" ;
+ Text [ norwegian ] = "Og så etter" ;
+ Text [ italian ] = "poi per" ;
+ Text [ portuguese_brazilian ] = "Em seguida por" ;
+ Text [ portuguese ] = "Concluíndo por" ;
+ Text [ finnish ] = "2. lajittelujärjestys" ;
+ Text [ danish ] = "Og derefter" ;
+ Text [ french ] = "Puis selon" ;
+ Text [ swedish ] = "Sedan efter" ;
+ Text [ dutch ] = "Daarna op" ;
+ Text [ spanish ] = "Después según" ;
+ Text [ english_us ] = "Then by" ;
+ Text[ chinese_simplified ] = "È»ºó°´";
+ Text[ russian ] = " ïîñëåäíþþ î÷åðåäü ïî";
+ Text[ polish ] = "Nastêpnie wed³ug";
+ Text[ japanese ] = "3”Ô–Ú‚É—D悳‚ê‚é·°";
+ Text[ chinese_traditional ] = "µM«á«ö·Ó";
+ Text[ arabic ] = "Ëã ÍÓÈ";
+ Text[ greek ] = "Êáôüðéí êáôÜ";
+ Text[ korean ] = "À̾";
+ Text[ turkish ] = "Sonraki sýralama esasý";
+ Text[ language_user1 ] = " ";
+ };
+};
+TabPage RID_SCPAGE_SORT_OPTIONS
+{
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpId = HID_SCPAGE_SORT_OPTIONS ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 208 , 170 ) ;
+ CheckBox BTN_CASESENSITIVE
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 196 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Groß-/Kleinschreibung beachten : ~Gro˜-/Kleinschreibung beachten */
+ Text = "~Groß-/Kleinschreibung beachten" ;
+ Text [ ENGLISH ] = "~Case sensitive" ;
+ Text [ norwegian ] = "~Case sensitive" ;
+ Text [ italian ] = "~Maiuscole/minuscole" ;
+ Text [ portuguese_brazilian ] = "~Sensível a maiúsculas/minúsculas" ;
+ Text [ portuguese ] = "~Maiúsculas/Minúsculas" ;
+ Text [ finnish ] = "~Kirjainkoko vaikuttaa" ;
+ Text [ danish ] = "Forskel på store og små bogstaver" ;
+ Text [ french ] = "~Respecter la casse" ;
+ Text [ swedish ] = "Obser~vera stora och små bokstäver" ;
+ Text [ dutch ] = "~Hoofdletters/kleine letters belangrijk" ;
+ Text [ spanish ] = "~Mayúsculas/minúsculas" ;
+ Text [ english_us ] = "Case ~sensitive" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Çø·Ö×Öĸ´óСд(~S)";
+ Text[ russian ] = "Ó÷èòûâàòü ðåãèñòð";
+ Text[ polish ] = "Uwzglêdnij du¿e i ma³e litery";
+ Text[ japanese ] = "‘啶Žš/¬•¶Žš‚ð‹æ•Ê(~S)";
+ Text[ chinese_traditional ] = "°Ï¤À¦r¥À¤j¤p¼g(~S)";
+ Text[ arabic ] = "ãÑÇÚÇÉ ÇáÃÍÑÝ ÇáßÈíÑÉ/ÇáÕÛíÑÉ";
+ Text[ greek ] = "Óõìöùíßá ðåæþí-êåöáëáßùí";
+ Text[ korean ] = "´ë/¼Ò¹®ÀÚ ±¸ºÐ(~S)";
+ Text[ turkish ] = "~Büyük/küçük harf duyarlý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_LABEL
+ {
+ Pos = MAP_APPFONT ( 6 , 19 ) ;
+ Size = MAP_APPFONT ( 196 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Bereich enthält XXköpfe : Bereich enthõlt XXk÷pfe */
+ Text = "Bereich enthält XXköpfe" ;
+ Text [ ENGLISH ] = "~XX headers" ;
+ Text [ norwegian ] = "~XX topptekster" ;
+ Text [ italian ] = "L'area contiene le intestazioni ~XX" ;
+ Text [ portuguese_brazilian ] = "~cabeçalhos XX" ;
+ Text [ portuguese ] = "Área contém XX ~cabeçalhos" ;
+ Text [ finnish ] = "~XX-tunnisteet" ;
+ Text [ danish ] = "Området indeholder XXoverskrifter" ;
+ Text [ french ] = "Plage contient XX en-têtes" ;
+ Text [ swedish ] = "Området innehåller XXhuvuden" ;
+ Text [ dutch ] = "Bereik bevat XX koppen" ;
+ Text [ spanish ] = "Area contiene XX encabezamientos" ;
+ Text [ english_us ] = "~Area contains column headers" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÇøÓòº¬ÓÐ XX ±êÇ©(~H)";
+ Text[ russian ] = "Îáëàñòü ñîäåðæèò çàãîëîâêèXX";
+ Text[ polish ] = "Obszar zawiera XXnag³ówki (ów)";
+ Text[ japanese ] = "”͈͂ÉXX‚Ì€–Ú—“‚ðŠÜ‚Þ(~H)";
+ Text[ chinese_traditional ] = "°Ï°ì§t¦³ XX ¼ÐÅÒ(~H)";
+ Text[ arabic ] = "ÑÃÓÇðXX ÊÊÖãä ÇáãäØÞÉ";
+ Text[ greek ] = "Ç ðåñéï÷Þ ðåñéÝ÷åé XX êåöáëßäåò";
+ Text[ korean ] = "¿µ¿ªÀº XX ~ ¸Ó¸®±ÛÀ» Æ÷ÇÔÇÕ´Ï´Ù.";
+ Text[ turkish ] = "Bölüm XXbaþlýklarý içeriyor";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_COL_LABEL
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Bereich enthält ~Spaltenköpfe : Bereich enthõlt ~Spaltenk÷pfe */
+ Text = "Bereich enthält ~Spaltenköpfe" ;
+ Text [ ENGLISH ] = "Source with ~column headers" ;
+ Text [ norwegian ] = "Kilde med ~kolonne topptekst" ;
+ Text [ italian ] = "L'area ~contiene intestazioni colonna" ;
+ Text [ portuguese_brazilian ] = "Fonte com ~cabeçalhos de colunas" ;
+ Text [ portuguese ] = "Área contém ~cabeçalhos de colunas" ;
+ Text [ finnish ] = "Lähde ja sarak~eotsikot" ;
+ Text [ danish ] = "Området indeholder kolonneoverskrifter" ;
+ Text [ french ] = "La plage contient des en-têtes de ~colonnes" ;
+ Text [ swedish ] = "Område innehåller ~kolumnhuvuden" ;
+ Text [ dutch ] = "Bereik bevat ~kolomkoppen" ;
+ Text [ spanish ] = "Area contiene encabezamientos de ~columnas" ;
+ Text [ english_us ] = "Area contains column ~headers" ;
+ Text[ chinese_simplified ] = "ÇøÓòº¬ÓÐÁбêÇ©(~H)";
+ Text[ russian ] = "Îáëàñòü ñîäåðæèò çàãîëîâêè ñòîëáöîâ";
+ Text[ polish ] = "Obszar zawiera nag³ówki kolumn";
+ Text[ japanese ] = "”͈͂ɗñ‚Ì€–Ú—“‚ðŠÜ‚Þ(~H)";
+ Text[ chinese_traditional ] = "°Ï°ì§t¦³Äæ¼ÐÃD(~H)";
+ Text[ arabic ] = "ÊÊÖãä ÇáãäØÞÉ ÑÄæÓ ÃÚãÏÉ";
+ Text[ greek ] = "Ç ðåñéï÷Þ ðåñéÝ÷åé êåöáëßäåò óôçëþí";
+ Text[ korean ] = "¿µ¿ªÀº ¿­ ¸Ó¸®±ÛÀ» Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù.(~H)";
+ Text[ turkish ] = "Bölüm ~sütun baþlýklarý içeriyor";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_ROW_LABEL
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Bereich enthält Zeilenk~öpfe : Bereich enthõlt Zeilenk~÷pfe */
+ Text = "Bereich enthält Zeilenk~öpfe" ;
+ Text [ ENGLISH ] = "Source with ~row headers" ;
+ Text [ norwegian ] = "Kilde med rad topptekst" ;
+ Text [ italian ] = "Origine con intestazioni ~riga" ;
+ Text [ portuguese_brazilian ] = "Fonte com ~cabeçalhos de fileiras" ;
+ Text [ portuguese ] = "Área contém ~cabeçalhos de linhas" ;
+ Text [ finnish ] = "Lähde ja ~riviotsikot" ;
+ Text [ danish ] = "Området indeholder rækkeoverskrifter" ;
+ Text [ french ] = "La plage contient des en-têtes de ~lignes" ;
+ Text [ swedish ] = "Område innehåller radh~uvuden" ;
+ Text [ dutch ] = "Bereik bevat ~rijkoppen" ;
+ Text [ spanish ] = "Area contiene títulos de ~filas" ;
+ Text [ english_us ] = "Area contains ~row headers" ;
+ Text[ chinese_simplified ] = "ÇøÓòº¬ÓÐÐбêÇ©(~R)";
+ Text[ russian ] = "Îáëàñòü ñîäåðæèò çàãîëîâêè ñòðîê";
+ Text[ polish ] = "Obszar zawiera nag³ówki wierszy";
+ Text[ japanese ] = "”͈͂És‚Ì€–Ú—“‚ðŠÜ‚Þ(~R)";
+ Text[ chinese_traditional ] = "°Ï°ì§t¦³¦C¼ÐÃD(~R)";
+ Text[ arabic ] = "ÊÊÖãä ÇáãäØÞÉ ÑÄæÓ ÕÝæÝ";
+ Text[ greek ] = "Ç ðåñéï÷Þ ðåñéÝ÷åé êåöáëßäåò ãñáììþí";
+ Text[ korean ] = "¿µ¿ªÀº Çà ¸Ó¸®±ÛÀ» Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù.(~R)";
+ Text[ turkish ] = "Bölüm sa~týr baþlýklarý içeriyor";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_FORMATS
+ {
+ Pos = MAP_APPFONT ( 6 , 32 ) ;
+ Size = MAP_APPFONT ( 196 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Formate einschließen : ~Formate einschlie˜en */
+ Text = "~Formate einschließen" ;
+ Text [ ENGLISH ] = "Include ~formats" ;
+ Text [ norwegian ] = "Inkluder formater " ;
+ Text [ italian ] = "Includi ~formati" ;
+ Text [ portuguese_brazilian ] = "Inserir ~formatos" ;
+ Text [ portuguese ] = "Incluir ~formatos" ;
+ Text [ finnish ] = "Sisällytä ~muodot" ;
+ Text [ danish ] = "Inkluder formater" ;
+ Text [ french ] = "Inclure ~formats" ;
+ Text [ swedish ] = "Inkludera ~format" ;
+ Text [ dutch ] = "~Opmaak opnemen" ;
+ Text [ spanish ] = "Incluir ~formatos" ;
+ Text [ english_us ] = "Include ~formats" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "°üº¬¸ñʽ(~F)";
+ Text[ russian ] = "Âêëþ÷èòü ôîðìàòû";
+ Text[ polish ] = "Uwzglêdnij formaty";
+ Text[ japanese ] = "‘Ž®‚ðŠÜ‚Þ(~F)";
+ Text[ chinese_traditional ] = "¥]§t®æ¦¡(~F)";
+ Text[ arabic ] = "ÊÖãíä ÇáÊäÓíÞÇÊ";
+ Text[ greek ] = "Íá óõìðåñéëç~öèïýí êáé ïé ìïñöÝò";
+ Text[ korean ] = "¼­½Ä Æ÷ÇÔ(~F)";
+ Text[ turkish ] = "~Formatlamayý da dikkate al";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_COPYRESULT
+ {
+ Pos = MAP_APPFONT ( 6 , 45 ) ;
+ Size = MAP_APPFONT ( 196 , 10 ) ;
+ Text = "Sortierergebnis ~ausgeben nach" ;
+ Text [ ENGLISH ] = "Result destinat~ion area" ;
+ Text [ norwegian ] = "Resultat målområde" ;
+ Text [ italian ] = "Area destina~zione risultato" ;
+ Text [ portuguese_brazilian ] = "~Área de destino do resultado" ;
+ Text [ portuguese ] = "~Copiar resultados da classificação para:" ;
+ Text [ finnish ] = "Tuloksen koh~dealue" ;
+ Text [ danish ] = "Sorteringsresultat-output til" ;
+ Text [ french ] = "~Copier le résultat du tri vers" ;
+ Text [ swedish ] = "~Målområde för resultat" ;
+ Text [ dutch ] = "~Sorteerresultaat brengen naar" ;
+ Text [ spanish ] = "C~opiar resultado de clasificación en" ;
+ Text [ english_us ] = "~Copy sort results to:" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¸´ÖÆÅÅÐò½á¹ûµ½(~C)";
+ Text[ russian ] = "Âûäàâàòü ðåçóëüòàòû ñîðòèðîâêè â";
+ Text[ polish ] = "Kopiuj rezultat sortowania do";
+ Text[ japanese ] = "•À‚בւ¦Œ‹‰Ê‚Ì“\\‚è•t‚¯æ(~C)";
+ Text[ chinese_traditional ] = "½Æ»s±Æ§Çµ²ªG¨ì(~C)";
+ Text[ arabic ] = "äÓÎ äÊíÌÉ ÇáÝÑÒ Åáì";
+ Text[ greek ] = "ÁíôéãñáöÞ áðïôåëåóìÜôùí ôáîéíüìçóçò óôï";
+ Text[ korean ] = "¿¡ Á¤·ÄµÈ °á°ú¸¦º¹»ç :(~C)";
+ Text[ turkish ] = "Sýralama sonuçlarýnýn kopyalanacaðý ~yer";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_OUTAREA
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 17 , 57 ) ;
+ Size = MAP_APPFONT ( 90 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ Edit ED_OUTAREA
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 111 , 57 ) ;
+ Size = MAP_APPFONT ( 90 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ CheckBox BTN_SORT_USER
+ {
+ Pos = MAP_APPFONT ( 6 , 72 ) ;
+ Size = MAP_APPFONT ( 196 , 10 ) ;
+ Text = "~Benutzerdefinierte Sortierreihenfolge" ;
+ Text [ ENGLISH ] = "~Userdefined sort precedence" ;
+ Text [ norwegian ] = "~Brukerdefinert sorteringsrekkefølge " ;
+ Text [ italian ] = "Sequenza d'ordine ~definita dall'utente" ;
+ Text [ portuguese_brazilian ] = "~Precedência de ordenação definida pelo usuário" ;
+ Text [ portuguese ] = "Ordem de classificação definida pelo ~utilizador" ;
+ Text [ finnish ] = "Mukautettu laj~ittelujärjestys" ;
+ Text [ danish ] = "Brugerdefineret sorteringsrækkefølge" ;
+ Text [ french ] = "Ordre de tri ~utilisateur" ;
+ Text [ swedish ] = "~Användardefinierad sorteringsordning" ;
+ Text [ dutch ] = "~Gebruikergedefinieerde sorteervolgorde" ;
+ Text [ spanish ] = "Orden de clasificación definida por el ~usuario" ;
+ Text [ english_us ] = "Custom sort ~order" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ʹÓÃÕß×Ô¶¨µÄÅÅÐò¹æÔò(~O)";
+ Text[ russian ] = "Ïîðÿäîê ñîðòèðîâêè, îïðåäåëåííûé ïîëüçîâàòåëåì";
+ Text[ polish ] = "Kolejnoœæ sortowania okreœlona przez u¿ytkownika";
+ Text[ japanese ] = "‡˜‚ÌŽw’è(~O)";
+ Text[ chinese_traditional ] = "¦Û­q±Æ§Ç³W«h(~O)";
+ Text[ arabic ] = "ÊÑÊíÈ ÇáÝÑÒ ÊÈÚÇð áÊÚÑíÝ ÇáãÓÊÎÏã";
+ Text[ greek ] = "ÓåéñÜ ôáîéíüìçóçò ïñéæüìåíç áðü ôïí ÷ñÞóôç";
+ Text[ korean ] = "¿ÜºÎ Á¤·Ä ¼ø¼­(~O)";
+ Text[ turkish ] = "~Kullanýcý tanýmlý sýralama düzeni";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_SORT_USER
+ {
+ Disable = TRUE ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 17 , 84 ) ;
+ Size = MAP_APPFONT ( 184 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ RadioButton BTN_TOP_DOWN
+ {
+ Pos = MAP_APPFONT ( 12 , 113 ) ;
+ Size = MAP_APPFONT ( 184 , 10 ) ;
+ Text = "Von ~oben nach unten (Zeilen sortieren)" ;
+ Text [ ENGLISH ] = "~Top to bottom (sort rows)" ;
+ Text [ norwegian ] = "~Topp til bunn (sorter rader)" ;
+ Text [ italian ] = "Dall'~alto verso il basso (ordina righe)" ;
+ Text [ portuguese_brazilian ] = "~Topo para a base (ordenar fileiras)" ;
+ Text [ portuguese ] = "De ~cima para baixo (ordenar linhas)" ;
+ Text [ finnish ] = "~Ylhäältä alas (lajittelee rivit)" ;
+ Text [ danish ] = "Fra øverst til nederst (sorter rækker)" ;
+ Text [ french ] = "De ~haut en bas (tri de lignes)" ;
+ Text [ swedish ] = "Uppifrån ~och ned (sortera rader)" ;
+ Text [ dutch ] = "Van ~boven naar beneden (rijen sorteren)" ;
+ Text [ spanish ] = "De ~arriba hacia abajo (ordenar filas)" ;
+ Text [ english_us ] = "~Top to bottom (sort rows)" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "´ÓÉÏÏòÏÂ(ÐÐÅÅÐò) (~T)";
+ Text[ russian ] = "Ñâåðõó âíèç (ñîðòèðîâêà ñòðîê)";
+ Text[ polish ] = "Sortuj wiersze od góry do do³u";
+ Text[ japanese ] = "ã‚©‚牺‚Ö(s‚ð•À‚בւ¦‚é) (~T)";
+ Text[ chinese_traditional ] = "±q¤W¦V¤U(±Æ§Ç¦C) (~T)";
+ Text[ arabic ] = "ãä ÃÚáì Åáì ÃÓÝá (ÝÑÒ ÇáÕÝæÝ)";
+ Text[ greek ] = "Áðü ðÜíù ðñ~ïò ôá êÜôù (ôáîéíüìçóç ãñáììþí)";
+ Text[ korean ] = "À§ ¿¡¼­ ¾Æ·¡·Î (Çà Á¤·Ä)(~T)";
+ Text[ turkish ] = "~Yukarýdan aþaðý (satýrlarý sýrala)";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_LEFT_RIGHT
+ {
+ Pos = MAP_APPFONT ( 12 , 126 ) ;
+ Size = MAP_APPFONT ( 184 , 10 ) ;
+ Text = "Von ~links nach rechts (Spalten sortieren)" ;
+ Text [ ENGLISH ] = "~Left to right (sort columns)" ;
+ Text [ norwegian ] = "~Venstre til høyre (sorter kolonner)" ;
+ Text [ italian ] = "~Da sinistra a destra (ordina colonne)" ;
+ Text [ portuguese_brazilian ] = "~Da esquerda para a direita (ordenar colunas)" ;
+ Text [ portuguese ] = "Da ~esquerda para a direita (ordenar colunas)" ;
+ Text [ finnish ] = "~Vasemmalta oikealle (lajittelee sarakkeet)" ;
+ Text [ danish ] = "Fra venstre til højre (sorter kolonner)" ;
+ Text [ french ] = "De ~gauche à droite (tri de colonnes)" ;
+ Text [ swedish ] = "Från vänster til~l höger (sortera kolumner)" ;
+ Text [ dutch ] = "Van ~links naar rechts (kolommen sorteren)" ;
+ Text [ spanish ] = "De ~izquierda a derecha (ordenar columnas)" ;
+ Text [ english_us ] = "~Left to right (sort columns)" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "´Ó×óÏòÓÒ(ÁÐÅÅÐò) (~L)";
+ Text[ russian ] = "Ñëåâà íàïðàâî (ñîðòèðîâêà ñòîëáöîâ)";
+ Text[ polish ] = "Sortuj kolumny od lewej do prawej";
+ Text[ japanese ] = "¶‚©‚ç‰E‚Ö(—ñ‚ð•À‚בւ¦‚é) (~L)";
+ Text[ chinese_traditional ] = "±q¥ª¦V¥k(Äæ±Æ§Ç)(~L)";
+ Text[ arabic ] = "ãä ÇáíÓÇÑ Åáì Çáíãíä (ÝÑÒ ÇáÃÚãÏÉ)";
+ Text[ greek ] = "Áðü áñéóôåñÜ ðñïò äåîéÜ (Ôáîéíüìçóç óôçëþí)";
+ Text[ korean ] = "¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î (¿­ Á¤·Ä)(~L)";
+ Text[ turkish ] = "S~oldan saða (sütunlarý sýrala)";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_DIRECTION
+ {
+ Pos = MAP_APPFONT ( 6 , 102 ) ;
+ Size = MAP_APPFONT ( 196 , 40 ) ;
+ Text = "Richtung" ;
+ Text [ ENGLISH ] = "Direction" ;
+ Text [ norwegian ] = "Retning" ;
+ Text [ italian ] = "Direzione" ;
+ Text [ portuguese_brazilian ] = "Direção" ;
+ Text [ portuguese ] = "Direcção" ;
+ Text [ finnish ] = "Suunta" ;
+ Text [ danish ] = "Retning" ;
+ Text [ french ] = "Direction" ;
+ Text [ swedish ] = "Riktning" ;
+ Text [ dutch ] = "Richting" ;
+ Text [ spanish ] = "Dirección" ;
+ Text [ english_us ] = "Direction" ;
+ Text[ chinese_simplified ] = "·½Ïò";
+ Text[ russian ] = "Íàïðàâëåíèå";
+ Text[ polish ] = "Kierunek";
+ Text[ japanese ] = "•ûŒü";
+ Text[ chinese_traditional ] = "¤è¦V";
+ Text[ arabic ] = "ÇáÇÊÌÇå";
+ Text[ greek ] = "Êáôåýèõíóç";
+ Text[ korean ] = "¹æÇâ";
+ Text[ turkish ] = "Yön";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_AREA_LABEL
+ {
+ Pos = MAP_APPFONT ( 6 , 146 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "Datenbereich:" ;
+ Text [ ENGLISH ] = "Source data:" ;
+ Text [ norwegian ] = "Kildedata:" ;
+ Text [ italian ] = "Dati area:" ;
+ Text [ portuguese_brazilian ] = "Dados de origem:" ;
+ Text [ portuguese ] = "Área de dados:" ;
+ Text [ finnish ] = "Lähdetiedot:" ;
+ Text [ danish ] = "Dataområde:" ;
+ Text [ french ] = "Plage de données :" ;
+ Text [ swedish ] = "Dataområde:" ;
+ Text [ dutch ] = "Gegevensbereik:" ;
+ Text [ spanish ] = "Área de datos:" ;
+ Text [ english_us ] = "Data Area:" ;
+ Text[ chinese_simplified ] = "Êý¾ÝÇøÓò£º";
+ Text[ russian ] = "Îáëàñòü äàííûõ:";
+ Text[ polish ] = "Obszar danych:";
+ Text[ japanese ] = "ÃÞ°À”͈Í:";
+ Text[ chinese_traditional ] = "¸ê®Æ°Ï°ì¡G";
+ Text[ arabic ] = "äØÇÞ ÇáÈíÇäÇÊ:";
+ Text[ greek ] = "Ðåñéï÷Þ åðéöÜíåéáò:";
+ Text[ korean ] = "µ¥ÀÌÅÍ ¿µ¿ª:";
+ Text[ turkish ] = "Veri alaný:";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText FT_AREA
+ {
+ Pos = MAP_APPFONT ( 6 , 157 ) ;
+ Size = MAP_APPFONT ( 196 , 10 ) ;
+ Text = "< Bereich > (<Name>)" ;
+ };
+};
+TabDialog RID_SCDLG_SORT
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 220 , 175 ) ;
+ Text = "Sortieren" ;
+ Text [ ENGLISH ] = "Sort" ;
+ Text [ norwegian ] = "Sorter" ;
+ Text [ italian ] = "Ordina" ;
+ Text [ portuguese_brazilian ] = "Ordenar" ;
+ Text [ portuguese ] = "Ordenar" ;
+ Text [ finnish ] = "Lajittelu" ;
+ Text [ danish ] = "Sorter" ;
+ Text [ french ] = "Tri" ;
+ Text [ swedish ] = "Sortera" ;
+ Text [ dutch ] = "Sorteren" ;
+ Text [ spanish ] = "Ordenar" ;
+ Text [ english_us ] = "Sort" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 210 , 170 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_FIELDS ;
+ PageResID = TP_FIELDS ;
+ Text = "Sortierkriterien" ;
+ Text [ ENGLISH ] = "Criteria" ;
+ Text [ norwegian ] = "Criteria" ;
+ Text [ italian ] = "Criteri" ;
+ Text [ portuguese_brazilian ] = "Critérios" ;
+ Text [ portuguese ] = "Critérios de classificação" ;
+ Text [ finnish ] = "Ehdot" ;
+ Text [ danish ] = "Sorteringskriterier" ;
+ Text [ french ] = "Critères de tri" ;
+ Text [ swedish ] = "Sorteringskriterier" ;
+ Text [ dutch ] = "Sorteercriteria" ;
+ Text [ spanish ] = "Criterios" ;
+ Text [ english_us ] = "Sort Criteria" ;
+ Text[ chinese_simplified ] = "ÅÅÐò±ê×¼";
+ Text[ russian ] = "Óñëîâèÿ ñîðòèðîâêè";
+ Text[ polish ] = "Kryteria sortowania";
+ Text[ japanese ] = "•À‚בւ¦ðŒ";
+ Text[ chinese_traditional ] = "±Æ§Ç¼Ð·Ç";
+ Text[ arabic ] = "ãÚÇííÑ ÇáÝÑÒ";
+ Text[ greek ] = "ÊñéôÞñéá ôáîéíüìçóçò";
+ Text[ korean ] = "Á¤·Ä ±âÁØ";
+ Text[ turkish ] = "Sýralama ölçütleri";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_OPTIONS ;
+ PageResID = TP_OPTIONS ;
+ Text = "Optionen" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Opções" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ french ] = "Options" ;
+ Text [ swedish ] = "Alternativ" ;
+ Text [ dutch ] = "Opties" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ english_us ] = "Options" ;
+ Text[ chinese_simplified ] = "Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Opcje";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¿ï¶µ";
+ Text[ arabic ] = "ÇáÎíÇÑÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ OKButton 1
+ {
+ Pos = MAP_APPFONT ( 3 , 157 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton 1
+ {
+ Pos = MAP_APPFONT ( 49 , 157 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton 1
+ {
+ Pos = MAP_APPFONT ( 137 , 157 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Text = "Zurück" ;
+ TabStop = TRUE ;
+ };
+ HelpButton 1
+ {
+ Pos = MAP_APPFONT ( 94 , 157 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ Text[ chinese_simplified ] = "ÅÅÐò";
+ Text[ russian ] = "Ñîðòèðîâêà";
+ Text[ polish ] = "Sortuj";
+ Text[ japanese ] = "•À‚בւ¦";
+ Text[ chinese_traditional ] = "±Æ§Ç";
+ Text[ arabic ] = "ÇáÝÑÒ";
+ Text[ greek ] = "Ôáîéíüìçóç";
+ Text[ korean ] = "Á¤·Ä";
+ Text[ turkish ] = "Sýrala";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/src/subtdlg.src b/sc/source/ui/src/subtdlg.src
new file mode 100644
index 000000000000..a6202028c187
--- /dev/null
+++ b/sc/source/ui/src/subtdlg.src
@@ -0,0 +1,952 @@
+/*************************************************************************
+ *
+ * $RCSfile: subtdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "subtdlg.hrc"
+
+TabPage RID_SCPAGE_SUBT_OPTIONS
+{
+ HelpId = HID_SCPAGE_SUBT_OPTIONS ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 240 , 150 ) ;
+ Hide = TRUE ;
+ CheckBox BTN_PAGEBREAK
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 170 , 10 ) ;
+ Text = "Neue Seite bei Gru~ppenwechsel" ;
+ Text [ ENGLISH ] = "Pagebreak for each grou~p" ;
+ Text [ NORWEGIAN ] = "Sideskift for hver grupp~e" ;
+ Text [ DANISH ] = "Sideskift mellem grupper" ;
+ Text [ ENGLISH_US ] = "~Page break between groups" ;
+ Text [ SPANISH ] = "~Nueva página entre grupos" ;
+ Text [ FINNISH ] = "Sivunvaihto joka ~ryhmõssõ" ;
+ Text [ FRENCH ] = "Saut de page entre les grou~pes" ;
+ Text [ ITALIAN ] = "Interruzione di pagina ~per ogni cambio di gruppo" ;
+ Text [ DUTCH ] = "~Nieuwe pagina voor elke groep" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Quebra de pßgina para cada grup~o" ;
+ Text [ SWEDISH ] = "Sidbrytning för varje grupp" ;
+ Text [ PORTUGUESE ] = "Nova página para cada grupo" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "С×éÖ®¼ä»»Ò³(~P)";
+ Text[ russian ] = "Ðàçðûâ ñòðàíèöû ìåæäó ãðóïïàìè";
+ Text[ polish ] = "Nowa strona przy podziale grup";
+ Text[ japanese ] = "¸ÞÙ°Ìß‚²‚ƂɉüÍß°¼Þ(~P)";
+ Text[ chinese_traditional ] = "¸s²Õ¤§¶¡´«­¶(~P)";
+ Text[ arabic ] = "ÕÝÍÉ ÌÏíÏÉ ÚäÏ ÊÛííÑ ÇáãÌãæÚÉ";
+ Text[ greek ] = "ÍÝá óåëßäá ìå êÜèå áëëáãÞ ïìÜäáò";
+ Text[ korean ] = "±×·ì »çÀÌ¿¡ ÆäÀÌÁö ³ª´©±â(~P)";
+ Text[ turkish ] = "~Her grup için yeni sayfa baþlat";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_CASE
+ {
+ Pos = MAP_APPFONT ( 6 , 19 ) ;
+ Size = MAP_APPFONT ( 170 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Groß-/Kleinschreibung beachten : ~Gro˜-/Kleinschreibung beachten */
+ Text = "~Groß-/Kleinschreibung beachten" ;
+ Text [ ENGLISH ] = "~Case sensitive" ;
+ Text [ NORWEGIAN ] = "~Case sensitive" ;
+ Text [ DANISH ] = "Forskel på store og små bogstaver" ;
+ Text [ ENGLISH_US ] = "~Case sensitive" ;
+ Text [ SPANISH ] = "~Mayúsculas/minúsculas" ;
+ Text [ FINNISH ] = "~Kirjainkoko vaikuttaa" ;
+ Text [ FRENCH ] = "~Respecter la casse" ;
+ Text [ ITALIAN ] = "~Maiuscole/minuscole" ;
+ Text [ DUTCH ] = "~Hoofdletters/kleine letters belangrijk" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~SensÝvel a mai sculas/min sculas" ;
+ Text [ SWEDISH ] = "Observera ~versaler/gemener" ;
+ Text [ PORTUGUESE ] = "~Maiúsculas/Minúsculas" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "Çø·Ö×Öĸ´óСд(~C)";
+ Text[ russian ] = "Ó÷èòûâàòü ðåãèñòð";
+ Text[ polish ] = "U~wzglêdnij du¿e i ma³e litery";
+ Text[ japanese ] = "‘啶Žš/¬•¶Žš‚ð‹æ•Ê(~C)";
+ Text[ chinese_traditional ] = "°Ï¤À¦r¥À¤j¤p¼g(~C)";
+ Text[ arabic ] = "ãÑÇÚÇÉ ÇáÃÍÑÝ ÇáßÈíÑÉ/ÇáÕÛíÑÉ";
+ Text[ greek ] = "Óõìöùíßá ðåæþí-êåöáëáßùí";
+ Text[ korean ] = "´ë/¼Ò¹®ÀÚ ±¸ºÐ(~C)";
+ Text[ turkish ] = "~Büyük/küçük harf duyarlý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_SORT
+ {
+ Pos = MAP_APPFONT ( 6 , 32 ) ;
+ Size = MAP_APPFONT ( 170 , 10 ) ;
+ Text = "Bereich vorher nach Gruppen ~sortieren" ;
+ Text [ ENGLISH ] = "~Sort area" ;
+ Text [ NORWEGIAN ] = "~Sorter omrÕde" ;
+ Text [ DANISH ] = "Sorter området først efter grupper" ;
+ Text [ ENGLISH_US ] = "Pre-~sort area according to groups" ;
+ Text [ SPANISH ] = "Ordenar primero e~l área por grupos" ;
+ Text [ FINNISH ] = "~Lajittelualue" ;
+ Text [ FRENCH ] = "~Trier au préalable la plage selon les groupes" ;
+ Text [ ITALIAN ] = "Ordinare prima l'area a gruppi" ;
+ Text [ DUTCH ] = "~Bereik eerst op groepen sorteren" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Pre~classificar área de acordo com os grupos" ;
+ Text [ SWEDISH ] = "~Sortera området efter grupper först" ;
+ Text [ PORTUGUESE ] = "~Ordenar primeiro área de acordo com os grupos" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÇøÓòÏÈ°´ÕÕС×éÅÅÐò(~S)";
+ Text[ russian ] = "Ñîðòèðîâàòü îáëàñòü ñíà÷àëà ïî ãðóïïàì";
+ Text[ polish ] = "Przesortuj wczeœniej o~bszar wed³ug grup";
+ Text[ japanese ] = "”ÍˆÍ‚ð‚ ‚ç‚©‚¶‚߸ÞÙ°Ìß•Ê‚É•À‚ׂé(~S)";
+ Text[ chinese_traditional ] = "°Ï°ì¥ý«ö·Ó¸s²Õ±Æ§Ç(~S)";
+ Text[ arabic ] = "ÝÑÒ ÇáäØÇÞ ÞÈá Ðáß ÍÓÈ ÇáãÌãæÚÇÊ";
+ Text[ greek ] = "Íá ãßíåé ðñéí ôáîéíüìç~óç ôçò ðåñéï÷Þò êáôÜ ïìÜäåò";
+ Text[ korean ] = "±×·ì¿¡ µû¶ó ¿µ¿ªÀ» ¹Ì¸® Á¤·Ä(~S)";
+ Text[ turkish ] = "Bölümü önce gruplara göre ~sýrala";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_FORMATS
+ {
+ Pos = MAP_APPFONT ( 12 , 59 ) ;
+ Size = MAP_APPFONT ( 137 , 12 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Formate einschließen : ~Formate einschlie˜en */
+ Text = "~Formate einschließen" ;
+ Text [ ENGLISH ] = "Include ~formats" ;
+ Text [ NORWEGIAN ] = "Inkluder formater " ;
+ Text [ DANISH ] = "Inkluder formater" ;
+ Text [ ENGLISH_US ] = "I~nclude formats" ;
+ Text [ SPANISH ] = "~Incluir formatos" ;
+ Text [ FINNISH ] = "Sisõllytõ ~muodot" ;
+ Text [ FRENCH ] = "Inclure ~formats" ;
+ Text [ ITALIAN ] = "Includi ~formati" ;
+ Text [ DUTCH ] = "Op~maak opnemen" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Inserir ~formatos" ;
+ Text [ SWEDISH ] = "Inkludera ~format" ;
+ Text [ PORTUGUESE ] = "Incluir ~formatos" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "°üº¬¸ñʽ(~F)";
+ Text[ russian ] = "Âêëþ÷àòü ôîðìàòû";
+ Text[ polish ] = "Uwzglêdnij f~ormaty";
+ Text[ japanese ] = "‘Ž®‚ðŠÜ‚Þ(~F)";
+ Text[ chinese_traditional ] = "¥]§t®æ¦¡(~F)";
+ Text[ arabic ] = "ÊÖãíä ÇáÊäÓíÞÇÊ";
+ Text[ greek ] = "Íá óõìðåñéëç~öèïýí ïé ìïñöÝò";
+ Text[ korean ] = "¼­½Ä Æ÷ÇÔ(~N)";
+ Text[ turkish ] = "~Formatlamayý da dikkate al";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox BTN_USERDEF
+ {
+ Pos = MAP_APPFONT ( 12 , 72 ) ;
+ Size = MAP_APPFONT ( 130 , 12 ) ;
+ Text = "~Benutzerdefinierte Sortierreihenfolge" ;
+ Text [ ENGLISH ] = "~Userdefined sort precedence" ;
+ Text [ NORWEGIAN ] = "~Brukerdefinert sorteringsrekkef°lge " ;
+ Text [ DANISH ] = "Brugerdefineret sorteringsrækkefølge" ;
+ Text [ ENGLISH_US ] = "C~ustom sort order" ;
+ Text [ SPANISH ] = "~Orden de clasificación definido por el usuario" ;
+ Text [ FINNISH ] = "Mukautettu laj~ittelujõrjestys" ;
+ Text [ FRENCH ] = "Ordre de tri ~utilisateur" ;
+ Text [ ITALIAN ] = "Sequenza d'ordine ~definita dall'utente" ;
+ Text [ DUTCH ] = "~Gebruikergedefinieerde sorteervolgorde" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~PrecedÛncia de ordenaþÒo definida pelo usußrio" ;
+ Text [ SWEDISH ] = "A~nvändardefinierad sorteringsordning" ;
+ Text [ PORTUGUESE ] = "Ordem de classificação definida pelo ~utilizador" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ʹÓÃÕß×Ô¶¨µÄÅÅÐò¹æÔò(~C)";
+ Text[ russian ] = "Ïîðÿäîê ñîðòèðîâêè ïîëüçîâàòåëÿ";
+ Text[ polish ] = "~Kolejnoœæ sortowania okreœl. przez u¿ytkownika";
+ Text[ japanese ] = "‡˜‚ÌŽw’è(~C)";
+ Text[ chinese_traditional ] = "¦Û­q±Æ§Ç³W«h(~C)";
+ Text[ arabic ] = "ÊÑÊíÈ ÇáÝÑÒ ÊÈÚÇð áÊÚÑíÝ ÇáãÓÊÎÏã";
+ Text[ greek ] = "ÓåéñÜ ôáîéíüìçóçò ïñéæüìåíç áðü ôïí ÷ñÞóôç";
+ Text[ korean ] = "¿ÜºÎ Á¤·Ä ¼ø¼­(~U)";
+ Text[ turkish ] = "~Kullanýcý tanýmlý sýralama düzeni";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_USERDEF
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 23 , 85 ) ;
+ Size = MAP_APPFONT ( 200 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ RadioButton BTN_ASCENDING
+ {
+ Pos = MAP_APPFONT ( 12 , 102 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "A~ufsteigend" ;
+ Text [ ENGLISH ] = "~Ascending" ;
+ Text [ NORWEGIAN ] = "St~igende" ;
+ Text [ DANISH ] = "Stigende" ;
+ Text [ ENGLISH_US ] = "~Ascending" ;
+ Text [ SPANISH ] = "~Ascendente" ;
+ Text [ FINNISH ] = "~Nouseva" ;
+ Text [ FRENCH ] = "~Croissant" ;
+ Text [ ITALIAN ] = "Crescente" ;
+ Text [ DUTCH ] = "~Oplopend" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Ascendente" ;
+ Text [ SWEDISH ] = "Stig~ande" ;
+ Text [ PORTUGUESE ] = "~Ascendente" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÉÏ(~A)";
+ Text[ russian ] = "Ïî âîçðàñòàíèþ";
+ Text[ polish ] = "Rosn¹co";
+ Text[ japanese ] = "¸‡(~A)";
+ Text[ chinese_traditional ] = "¦V¤W(~A)";
+ Text[ arabic ] = "ÊÕÇÚÏí";
+ Text[ greek ] = "Áýîïõóá";
+ Text[ korean ] = "¿À¸§Â÷¼ø(~A)";
+ Text[ turkish ] = "A~rtan düzende";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton BTN_DESCENDING
+ {
+ Pos = MAP_APPFONT ( 12 , 115 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Text = "A~bsteigend" ;
+ Text [ ENGLISH ] = "~Descending" ;
+ Text [ NORWEGIAN ] = "~Synkende" ;
+ Text [ DANISH ] = "Faldende" ;
+ Text [ ENGLISH_US ] = "D~escending" ;
+ Text [ SPANISH ] = "~Descendente" ;
+ Text [ FINNISH ] = "~Laskeva" ;
+ Text [ FRENCH ] = "~Décroissant" ;
+ Text [ ITALIAN ] = "Descrescente" ;
+ Text [ DUTCH ] = "~Aflopend" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "~Descendente" ;
+ Text [ SWEDISH ] = "Fallan~de" ;
+ Text [ PORTUGUESE ] = "~Descendente" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ÏòÏÂ(~E)";
+ Text[ russian ] = "Ïî óáûâàíèþ";
+ Text[ polish ] = "Malej¹co";
+ Text[ japanese ] = "~‡";
+ Text[ chinese_traditional ] = "¦V¤U(~E)";
+ Text[ arabic ] = "ÊäÇÒáí";
+ Text[ greek ] = "Öèßíïõóá";
+ Text[ korean ] = "³»¸²Â÷¼ø(~E)";
+ Text[ turkish ] = "A~zalan düzende";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox GB_OPTIONS
+ {
+ Pos = MAP_APPFONT ( 5 , 48 ) ;
+ Size = MAP_APPFONT ( 228 , 84 ) ;
+ Text = "Sortieren" ;
+ Text [ ENGLISH ] = "Sort" ;
+ Text [ NORWEGIAN ] = "Sorter" ;
+ Text [ DANISH ] = "Sorter" ;
+ Text [ ENGLISH_US ] = "Sort" ;
+ Text [ SPANISH ] = "Ordenar" ;
+ Text [ FINNISH ] = "Lajittelu" ;
+ Text [ FRENCH ] = "Trier" ;
+ Text [ ITALIAN ] = "Ordina" ;
+ Text [ DUTCH ] = "Sorteren" ;
+ Text [ PORTUGUESE_BRAZILIAN ] = "Ordenar" ;
+ Text [ SWEDISH ] = "Sortera" ;
+ Text [ PORTUGUESE ] = "Ordenar" ;
+ Text[ chinese_simplified ] = "ÅÅÐò";
+ Text[ russian ] = "Ñîðòèðîâàòü";
+ Text[ polish ] = "Sortuj";
+ Text[ japanese ] = "•À‚בւ¦";
+ Text[ chinese_traditional ] = "±Æ§Ç";
+ Text[ arabic ] = "ÝÑÒ";
+ Text[ greek ] = "Ôáîéíüìçóç";
+ Text[ korean ] = "Á¤·Ä";
+ Text[ turkish ] = "Sýralama";
+ Text[ language_user1 ] = " ";
+ };
+};
+
+
+TabPage RID_SUBTBASE
+{
+ // Die Elemente haben hart vergebene Hilfe-IDs, weil automatisch generierte
+ // aus den Ableitungen nicht in der HID-Liste auftauchen wuerden
+ HelpId = HID_SCPAGE_SUBT_GROUP ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 240 , 150 ) ;
+ Hide = TRUE ;
+ FixedText FT_GROUP
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Gruppieren nach" ;
+ Text [ ENGLISH ] = "~Group by" ;
+ Text [ norwegian ] = "~Gruppe ved " ;
+ Text [ italian ] = "~Raggruppa per" ;
+ Text [ portuguese_brazilian ] = "~Agrupar por" ;
+ Text [ portuguese ] = "~Agrupar por" ;
+ Text [ finnish ] = "Ry~hmitä" ;
+ Text [ danish ] = "~Grupper efter" ;
+ Text [ french ] = "~Grouper selon" ;
+ Text [ swedish ] = "~Gruppera efter" ;
+ Text [ dutch ] = "~Groeperen per" ;
+ Text [ spanish ] = "~Agrupar por" ;
+ Text [ english_us ] = "~Group by" ;
+ Text[ chinese_simplified ] = "·Ö×é°´ÕÕ(~G)";
+ Text[ russian ] = "Ãðóïïèðîâàòü ïî";
+ Text[ polish ] = "Grupuj wed³ug";
+ Text[ japanese ] = "¸ÞÙ°Ìß‚ÌŠî€(~G)";
+ Text[ chinese_traditional ] = "¸s²Õ«ö·Ó(~G)";
+ Text[ arabic ] = "ÊÌãíÚ ÍÓÈ";
+ Text[ greek ] = "Ïìáäïðïßçóç êáôÜ";
+ Text[ korean ] = "¿¡ÀÇÇÑ ±×·ì(~G)";
+ Text[ turkish ] = "~Gruplama esasý";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_GROUP
+ {
+ HelpId = HID_SC_SUBT_GROUP ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 16 ) ;
+ Size = MAP_APPFONT ( 110 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText FT_COLUMNS
+ {
+ Pos = MAP_APPFONT ( 6 , 34 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Teilergebnisse berechnen für : ~Teilergebnisse berechnen f³r */
+ Text = "~Teilergebnisse berechnen für" ;
+ Text [ ENGLISH ] = "Calculate sub~totals on" ;
+ Text [ norwegian ] = "Regn ut su~m på" ;
+ Text [ italian ] = "Calcola sub~totali per" ;
+ Text [ portuguese_brazilian ] = "Calcular sub~totais em" ;
+ Text [ portuguese ] = "Calcular sub~totais para" ;
+ Text [ finnish ] = "Laske ~välisummat" ;
+ Text [ danish ] = "Beregn subtotaler for" ;
+ Text [ french ] = "~Calculer les sous-totaux pour" ;
+ Text [ swedish ] = "Beräkna delresul~tat för" ;
+ Text [ dutch ] = "~Subtotalen berekenen van" ;
+ Text [ spanish ] = "~Calcular subtotales para" ;
+ Text [ english_us ] = "~Calculate subtotals for" ;
+ Text[ chinese_simplified ] = "·ÖÀà»ã×ܼÆËã(~C)";
+ Text[ russian ] = "Âû÷èñëèòü ïðîìåæóòî÷íûå èòîãè äëÿ";
+ Text[ polish ] = "Oblicz sumy poœrednie dla";
+ Text[ japanese ] = "¬Œv‚ðo‚·€–Ú(~C)";
+ Text[ chinese_traditional ] = "¤p­p¥Î©ó(~C)";
+ Text[ arabic ] = "ÍÓÇÈ ÇáäÊÇÆÌ ÇáÌÒÆíÉ áÜ";
+ Text[ greek ] = "Õðïëïãéóìüò ìåñéêþí áèñïéóìÜ~ôùí ãéá";
+ Text[ korean ] = "¿¡ ´ëÇÑ ¼Ò°è °è»ê(~C)";
+ Text[ turkish ] = "~Ara toplamlarý hesaplanacak sütun(lar)";
+ Text[ language_user1 ] = " ";
+ };
+ Control WND_COLUMNS
+ {
+ HelpId = HID_SC_SUBT_COLS ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 47 ) ;
+ Size = MAP_APPFONT ( 110 , 90 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_FUNCTIONS
+ {
+ Pos = MAP_APPFONT ( 123 , 34 ) ;
+ Size = MAP_APPFONT ( 100 , 10 ) ;
+ Text = "~Berechnungsvorschrift" ;
+ Text [ ENGLISH ] = "Funct~ion" ;
+ Text [ norwegian ] = "Funks~jon" ;
+ Text [ italian ] = "Funz~ione" ;
+ Text [ portuguese_brazilian ] = "Funç~ao" ;
+ Text [ portuguese ] = "Usar fu~nção" ;
+ Text [ finnish ] = "~Funktio" ;
+ Text [ danish ] = "Beregningsfunktion" ;
+ Text [ french ] = "~Fonction" ;
+ Text [ swedish ] = "~Beräkningsregler" ;
+ Text [ dutch ] = "~Functie" ;
+ Text [ spanish ] = "~Usar función" ;
+ Text [ english_us ] = "Use ~function" ;
+ Text[ chinese_simplified ] = "¼ÆËã¹æÔò(~F)";
+ Text[ russian ] = "Èíñòðóêöèÿ ïî âû÷èñëåíèÿì";
+ Text[ polish ] = "Instrukcja obliczania";
+ Text[ japanese ] = "ŒvŽZ•û–@(~F)";
+ Text[ chinese_traditional ] = "­pºâ³W«h(~F)";
+ Text[ arabic ] = "ÇáÏÇáÉ";
+ Text[ greek ] = "Êáíüíáò õðïëïãéóìïý";
+ Text[ korean ] = "ÇÔ¼ö »ç¿ë(~F)";
+ Text[ turkish ] = "K~ullanýlacak fonksiyon";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox LB_FUNCTIONS
+ {
+ HelpId = HID_SC_SUBT_FUNC ;
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 47 ) ;
+ Size = MAP_APPFONT ( 110 , 90 ) ;
+ TabStop = TRUE ;
+ StringList =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ /* ### ACHTUNG: Neuer Eintrag in Liste? 7 : Anzahl (nur Zahlen)*/
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ ENGLISH ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ norwegian ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ italian ] =
+ {
+ < "Somma" ; Default ; > ;
+ < "Numero" ; Default ; > ;
+ < "Valore medio" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Prodotto" ; Default ; > ;
+ < "Numero (solo numeri)" ; Default ; > ;
+ < "DevStd (campione)" ; Default ; > ;
+ < "DevStdP (popolazione)" ; Default ; > ;
+ < "Varianza (campione)" ; Default ; > ;
+ < "VarP (popolazione)" ; Default ; > ;
+ };
+ StringList [ portuguese_brazilian ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl2 (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "VarP" ; Default ; > ;
+ };
+ StringList [ portuguese ] =
+ {
+ < "Total" ; Default ; > ;
+ < "Quantidade" ; Default ; > ;
+ < "Valor médio" ; Default ; > ;
+ < "Máx." ; Default ; > ;
+ < "Min." ; Default ; > ;
+ < "Produto" ; Default ; > ;
+ < "Contar (só números)" ; Default ; > ;
+ < "DesvPad (amostra)" ; Default ; > ;
+ < "DesvPadN (população)" ; Default ; > ;
+ < "Variância (amostra)" ; Default ; > ;
+ < "Variâncias (população)" ; Default ; > ;
+ };
+ StringList [ finnish ] =
+ {
+ < "Summe" ; Default ; > ;
+ < "Anzahl" ; Default ; > ;
+ < "Mittelwert" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Anzahl (nur Zahlen)" ; Default ; > ;
+ < "StAbw (Stichprobe)" ; Default ; > ;
+ < "StAbwN (Grundgesamtheit)" ; Default ; > ;
+ < "Varianz (Stichprobe)" ; Default ; > ;
+ < "Varianzen (Grundgesamtheit)" ; Default ; > ;
+ };
+ StringList [ danish ] =
+ {
+ < "Sum" ; Default ; > ;
+ < "Antal" ; Default ; > ;
+ < "Middel" ; Default ; > ;
+ < "Maks" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Antal (kun tal)" ; Default ; > ;
+ < "Stdafv (stikprøve)" ; Default ; > ;
+ < "StdafvP (population)" ; Default ; > ;
+ < "Varians (stikprøve)" ; Default ; > ;
+ < "VariansP (population)" ; Default ; > ;
+ };
+ StringList [ french ] =
+ {
+ < "Total" ; Default ; > ;
+ < "Nombre" ; Default ; > ;
+ < "Moyenne" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produit" ; Default ; > ;
+ < "Nombre (uniquement les nombres)" ; Default ; > ;
+ < "Ecartype (échantillon)" ; Default ; > ;
+ < "EcarTypeP (population)" ; Default ; > ;
+ < "Variance (échantillon)" ; Default ; > ;
+ < "VarP (population)" ; Default ; > ;
+ };
+ StringList [ swedish ] =
+ {
+ < "Summa" ; Default ; > ;
+ < "Antal" ; Default ; > ;
+ < "Medelvärde" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "Antal (endast tal)" ; Default ; > ;
+ < "StdAv (stickprov)" ; Default ; > ;
+ < "StdAvP (population)" ; Default ; > ;
+ < "Varians (stickprov)" ; Default ; > ;
+ < "Varians (population)" ; Default ; > ;
+ };
+ StringList [ dutch ] =
+ {
+ < "Som" ; Default ; > ;
+ < "Aantal" ; Default ; > ;
+ < "Gemiddelde" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "Aantal (alleen getallen)" ; Default ; > ;
+ < "StAfw (steekproef)" ; Default ; > ;
+ < "StAfwN (populatie)" ; Default ; > ;
+ < "Var (steekproef)" ; Default ; > ;
+ < "VarP (populatie)" ; Default ; > ;
+ };
+ StringList [ spanish ] =
+ {
+ < "Suma" ; Default ; > ;
+ < "Cantidad" ; Default ; > ;
+ < "Promedio" ; Default ; > ;
+ < "Máx." ; Default ; > ;
+ < "Mín." ; Default ; > ;
+ < "Producto" ; Default ; > ;
+ < "Cantidad (solo números)" ; Default ; > ;
+ < "DesvEst (Muestra)" ; Default ; > ;
+ < "DesvEstP (Población)" ; Default ; > ;
+ < "Varianza (Muestra)" ; Default ; > ;
+ < "VarP (Población)" ; Default ; > ;
+ };
+ StringList [ english_us ] =
+ {
+ < "Sum" ; Default ; > ;
+ < "Count" ; Default ; > ;
+ < "Average" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "Count (numbers only)" ; Default ; > ;
+ < "StDev (Sample)" ; Default ; > ;
+ < "StDevP (Population)" ; Default ; > ;
+ < "Var (Sample)" ; Default ; > ;
+ < "VarP (Population)" ; Default ; > ;
+ };
+ StringList [ chinese_simplified ] =
+ {
+ < "×ܼÆ" ; Default ; > ;
+ < "ÊýÄ¿" ; Default ; > ;
+ < "ƽ¾ùÖµ" ; Default ; > ;
+ < "×î´óÖµ" ; Default ; > ;
+ < "×îСֵ" ; Default ; > ;
+ < "³Ë»ý" ; Default ; > ;
+ < "ÊýÄ¿(Ö»ÊÇÊý×Ö)" ; Default ; > ;
+ < "±ê׼ƫ²î(³éÑù)" ; Default ; > ;
+ < "±ê׼ƫ²î(È«²¿»ùÊý)" ; Default ; > ;
+ < "·½²î(³éÑù)" ; Default ; > ;
+ < "·½²î(È«²¿»ùÊý)" ; Default ; > ;
+ };
+ StringList [ russian ] =
+ {
+ < "Ñóììà" ; Default ; > ;
+ < "Êîëè÷åñòâî" ; Default ; > ;
+ < "Ñðåäíåå çíà÷åíèå" ; Default ; > ;
+ < "Ìàêñèìóì" ; Default ; > ;
+ < "Ìèíèìóì" ; Default ; > ;
+ < "Ïðîèçâåäåíèå" ; Default ; > ;
+ < "Êîëè÷åñòâî (òîëüêî ÷èñëà)" ; Default ; > ;
+ < "Ñìåùåííîå îòêëîíåíèå (îáðàçåö)" ; Default ; > ;
+ < "Íåñìåùåííîå îòêëîíåíèå (ñîâîêóïíîñòü)" ; Default ; > ;
+ < "Ñìåùåííàÿ äèñïåðñèÿ (îáðàçåö)" ; Default ; > ;
+ < "Ñìåùåííàÿ äèñïåðñèÿ (ñîâîêóïíîñòü)" ; Default ; > ;
+ };
+ StringList [ polish ] =
+ {
+ < "Suma" ; Default ; > ;
+ < "Liczba" ; Default ; > ;
+ < "Œrednia wartoœæ" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Produkt" ; Default ; > ;
+ < "IloϾ (tylko cyfry)" ; Default ; > ;
+ < "Odchylenie standardowe (Próbka)" ; Default ; > ;
+ < "OdchStdc (Populacja)" ; Default ; > ;
+ < "Wariancja (Próbka)" ; Default ; > ;
+ < "Wariancje (Populacja)" ; Default ; > ;
+ };
+ StringList [ japanese ] =
+ {
+ < "‡Œv" ; Default ; > ;
+ < "‘”" ; Default ; > ;
+ < "•½‹Ï" ; Default ; > ;
+ < "Å‘å" ; Default ; > ;
+ < "Ŭ" ; Default ; > ;
+ < "Ï" ; Default ; > ;
+ < "‘”(”’l‚Ì‚Ý)" ; Default ; > ;
+ < "•W€•Î·(•W–{’²¸)" ; Default ; > ;
+ < "•W€•Î·(•êW’c)" ; Default ; > ;
+ < "•ªŽU(•W–{’²¸)" ; Default ; > ;
+ < "•ªŽU(•êW’c)" ; Default ; > ;
+ };
+ StringList [ chinese_traditional ] =
+ {
+ < "Á`¼Æ" ; Default ; > ;
+ < "¼Æ¥Ø" ; Default ; > ;
+ < "¥­§¡­È" ; Default ; > ;
+ < "³Ì¤j­È" ; Default ; > ;
+ < "³Ì¤p­È" ; Default ; > ;
+ < "­¼¿n" ; Default ; > ;
+ < "¼Æ¥Ø(¥u¬O¼Æ¦r)" ; Default ; > ;
+ < "¼Ð·Ç°¾®t(©â¼Ë)" ; Default ; > ;
+ < "¼Ð·Ç°¾®t(¥þ³¡°ò¼Æ)" ; Default ; > ;
+ < "¤è®t(©â¼Ë)" ; Default ; > ;
+ < "¤è®t(¥þ³¡°ò¼Æ)" ; Default ; > ;
+ };
+ StringList [ arabic ] =
+ {
+ < "ÇáãÌãæÚ" ; Default ; > ;
+ < "Count" ; Default ; > ;
+ < "Average" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "Count (ÇáÃÑÞÇã ÝÞØ)" ; Default ; > ;
+ < "StDev (򒊃)" ; Default ; > ;
+ < "StDevP (ÇáãÌÊãÚ)" ; Default ; > ;
+ < "Variance (򒊃)" ; Default ; > ;
+ < "VarP (ÇáãÌÊãÚ)" ; Default ; > ;
+ };
+ StringList [ greek ] =
+ {
+ < "¢èñïéóìá" ; Default ; > ;
+ < "ÐëÞèïò" ; Default ; > ;
+ < "ÌÝóç ôéìÞ" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Ãéíüìåíï" ; Default ; > ;
+ < "ÐëÞèïò (ìüíï áñéèìïß)" ; Default ; > ;
+ < "StDev (Äåßãìá)" ; Default ; > ;
+ < "StDevP (Ðëçèõóìüò)" ; Default ; > ;
+ < "Variance (Äåßãìá)" ; Default ; > ;
+ < "VarP (Ðëçèõóìïý)" ; Default ; > ;
+ };
+ StringList [ korean ] =
+ {
+ < "ÇÕ°è" ; Default ; > ;
+ < "Ä«¿îÆ®" ; Default ; > ;
+ < "Æò±Õ" ; Default ; > ;
+ < "ÃÖ´ë" ; Default ; > ;
+ < "ÃÖ¼Ò" ; Default ; > ;
+ < "Á¦Ç°" ; Default ; > ;
+ < "Ä«¿îÆ® (¼ýÀÚ ¸¸)" ; Default ; > ;
+ < "StDev (»ùÇÃ)" ; Default ; > ;
+ < "Ç¥ÁØ ÆíÂ÷(¸ðÁý´Ü)" ; Default ; > ;
+ < "º¯¼ö (»ùÇÃ)" ; Default ; > ;
+ < "ºÐ»ê (¸ðÁý´Ü)" ; Default ; > ;
+ };
+ StringList [ turkish ] =
+ {
+ < "Sum" ; Default ; > ;
+ < "Count" ; Default ; > ;
+ < "Average" ; Default ; > ;
+ < "Max" ; Default ; > ;
+ < "Min" ; Default ; > ;
+ < "Product" ; Default ; > ;
+ < "Count (numbers only)" ; Default ; > ;
+ < "StDev (sample)" ; Default ; > ;
+ < "StDevP (population)" ; Default ; > ;
+ < "Var (sample)" ; Default ; > ;
+ < "VarP (population)" ; Default ; > ;
+ };
+ StringList [ language_user1 ] =
+ {
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ < " " ; Default ; > ;
+ };
+ };
+};
+
+ // "Control" braucht immer eigene HelpId - ansonsten aus RID_SUBTBASE kopiert
+
+TabPage RID_SCPAGE_SUBT_GROUP1 < RID_SUBTBASE
+{
+ HelpId = HID_SCPAGE_SUBT_GROUP1 ;
+};
+TabPage RID_SCPAGE_SUBT_GROUP2 < RID_SUBTBASE
+{
+ HelpId = HID_SCPAGE_SUBT_GROUP2 ;
+};
+TabPage RID_SCPAGE_SUBT_GROUP3 < RID_SUBTBASE
+{
+ HelpId = HID_SCPAGE_SUBT_GROUP3 ;
+};
+
+TabDialog RID_SCDLG_SUBTOTALS
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 294 , 176 ) ;
+ Text = "Teilergebnisse" ;
+ Text [ ENGLISH ] = "Subtotals" ;
+ Text [ norwegian ] = "Subtotals" ;
+ Text [ italian ] = "Subtotali" ;
+ Text [ portuguese_brazilian ] = "Sub-totais" ;
+ Text [ portuguese ] = "Subtotais" ;
+ Text [ finnish ] = "Välisummat" ;
+ Text [ danish ] = "Subtotaler" ;
+ Text [ french ] = "Sous-totaux" ;
+ Text [ swedish ] = "Delresultat" ;
+ Text [ dutch ] = "Subtotalen" ;
+ Text [ spanish ] = "Subtotales" ;
+ Text [ english_us ] = "Subtotals" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 3 ) ;
+ Size = MAP_APPFONT ( 240 , 150 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = PAGE_GROUP1 ;
+ Text = "1. Gruppe" ;
+ Text [ ENGLISH ] = "1. Group" ;
+ Text [ norwegian ] = "1. Gruppe" ;
+ Text [ italian ] = "1. Gruppo" ;
+ Text [ portuguese_brazilian ] = "1. Grupo" ;
+ Text [ portuguese ] = "1° Grupo" ;
+ Text [ finnish ] = "1. ryhmä" ;
+ Text [ danish ] = "1. gruppe" ;
+ Text [ french ] = "1er groupe" ;
+ Text [ swedish ] = "Grupp 1" ;
+ Text [ dutch ] = "Groep 1" ;
+ Text [ spanish ] = "Grupo 1" ;
+ Text [ english_us ] = "1st Group" ;
+ Text[ chinese_simplified ] = "µÚÒ»×é";
+ Text[ russian ] = "1-àÿ ãðóïïà";
+ Text[ polish ] = "1. grupa";
+ Text[ japanese ] = "¸ÞÙ°Ìß 1";
+ Text[ chinese_traditional ] = "²Ä¤@²Õ";
+ Text[ arabic ] = "ÇáãÌãæÚÉ ÇáÃæáì";
+ Text[ greek ] = "1ç ÏìÜäá";
+ Text[ korean ] = "1¹ø° ±×·ì";
+ Text[ turkish ] = "1. Grup";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = PAGE_GROUP2 ;
+ Text = "2. Gruppe" ;
+ Text [ ENGLISH ] = "2. Group" ;
+ Text [ norwegian ] = "2. Gruppe" ;
+ Text [ italian ] = "2. Gruppo" ;
+ Text [ portuguese_brazilian ] = "2. Grupo" ;
+ Text [ portuguese ] = "2° Grupo" ;
+ Text [ finnish ] = "2. ryhmä" ;
+ Text [ danish ] = "2. gruppe" ;
+ Text [ french ] = "2ème groupe" ;
+ Text [ swedish ] = "Grupp 2" ;
+ Text [ dutch ] = "Groep 2" ;
+ Text [ spanish ] = "Grupo 2" ;
+ Text [ english_us ] = "2nd Group" ;
+ Text[ chinese_simplified ] = "µÚ¶þ×é";
+ Text[ russian ] = "2-àÿ ãðóïïà";
+ Text[ polish ] = "2. grupa";
+ Text[ japanese ] = "¸ÞÙ°Ìß 2";
+ Text[ chinese_traditional ] = "²Ä¤G²Õ";
+ Text[ arabic ] = "ÇáãÌãæÚÉ ÇáËÇäíÉ";
+ Text[ greek ] = "2ç. ÏìÜäá";
+ Text[ korean ] = "2¹ø° ±×·ì";
+ Text[ turkish ] = "2. Grup";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = PAGE_GROUP3 ;
+ Text = "3. Gruppe" ;
+ Text [ ENGLISH ] = "3. Group" ;
+ Text [ norwegian ] = "3. Gruppe" ;
+ Text [ italian ] = "3. Gruppo" ;
+ Text [ portuguese_brazilian ] = "3. Grupo" ;
+ Text [ portuguese ] = "3° Grupo" ;
+ Text [ finnish ] = "3. ryhmä" ;
+ Text [ danish ] = "3. gruppe" ;
+ Text [ french ] = "3ème groupe" ;
+ Text [ swedish ] = "Grupp 3" ;
+ Text [ dutch ] = "Groep 3" ;
+ Text [ spanish ] = "Grupo 3" ;
+ Text [ english_us ] = "3rd Group" ;
+ Text[ chinese_simplified ] = "µÚÈý×é";
+ Text[ russian ] = "3-üÿ ãðóïïà";
+ Text[ polish ] = "3. grupa";
+ Text[ japanese ] = "¸ÞÙ°Ìß 3";
+ Text[ chinese_traditional ] = "²Ä¤T²Õ";
+ Text[ arabic ] = "ÇáãÌãæÚÉ ÇáËÇáËÉ";
+ Text[ greek ] = "3ç ÏìÜäá";
+ Text[ korean ] = "3¹ø° ±×·ì";
+ Text[ turkish ] = "3. Grup";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = PAGE_OPTIONS ;
+ Text = "Optionen" ;
+ Text [ ENGLISH ] = "Options" ;
+ Text [ norwegian ] = "Options" ;
+ Text [ italian ] = "Opzioni" ;
+ Text [ portuguese_brazilian ] = "Opções" ;
+ Text [ portuguese ] = "Opções" ;
+ Text [ finnish ] = "Määritykset" ;
+ Text [ danish ] = "Indstillinger" ;
+ Text [ french ] = "Options" ;
+ Text [ swedish ] = "Alternativ" ;
+ Text [ dutch ] = "Opties" ;
+ Text [ spanish ] = "Opciones" ;
+ Text [ english_us ] = "Options" ;
+ Text[ chinese_simplified ] = "Ñ¡Ïî";
+ Text[ russian ] = "Ïàðàìåòðû";
+ Text[ polish ] = "Opcje";
+ Text[ japanese ] = "µÌß¼®Ý";
+ Text[ chinese_traditional ] = "¿ï¶µ";
+ Text[ arabic ] = "ÇáÎíÇÑÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò";
+ Text[ korean ] = "¿É¼Ç";
+ Text[ turkish ] = "Seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ PushButton BTN_REMOVE
+ {
+ Pos = MAP_APPFONT ( 143 , 160 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Löschen : ~L÷schen */
+ Text = "~Löschen" ;
+ Text [ ENGLISH ] = "~Remove" ;
+ Text [ norwegian ] = "~Fjern" ;
+ Text [ italian ] = "Elimina" ;
+ Text [ portuguese_brazilian ] = "~Remover" ;
+ Text [ portuguese ] = "~Remover" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "Slet" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "~Wissen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Delete" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "ɾ³ý(~D)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~D)";
+ Text[ chinese_traditional ] = "§R°£(~D)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦(~D)";
+ Text[ turkish ] = "~Sil";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "·ÖÀà»ã×Ü";
+ Text[ russian ] = "Ïðîìåæóòî÷íûå èòîãè";
+ Text[ polish ] = "Sumy poœrednie";
+ Text[ japanese ] = "¬Œv";
+ Text[ chinese_traditional ] = "¤p­p";
+ Text[ arabic ] = "ÇáãÌÇãíÚ ÇáÌÒÆíÉ";
+ Text[ greek ] = "ÌåñéêÜ áèñïßóìáôá";
+ Text[ korean ] = "¼Ò°è";
+ Text[ turkish ] = "Ara toplamlar";
+ Text[ language_user1 ] = " ";
+};
+
+
diff --git a/sc/source/ui/src/tabopdlg.src b/sc/source/ui/src/tabopdlg.src
new file mode 100644
index 000000000000..2cca1487d22e
--- /dev/null
+++ b/sc/source/ui/src/tabopdlg.src
@@ -0,0 +1,489 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabopdlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+ //============================================================================
+ // Dialogfenster Mehrfachoperationen
+ //
+ // (C) 1994-96 StarDivision GmbH, Hamburg, Germany
+ //
+ // $Workfile: tabopdlg.src $
+ // $Author: hr $
+ // $Date: 2000-09-18 16:45:06 $
+ // $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/source/ui/src/tabopdlg.srv $
+ //----------------------------------------------------------------------------
+
+#include "tabopdlg.hrc"
+ModelessDialog RID_SCDLG_TABOP
+{
+ OutputSize = TRUE ;
+ HelpId = SID_OPENDLG_TABOP ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 222 , 68 ) ;
+ Text = "Mehrfachoperationen" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Operações múltiplas" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Multioperationer" ;
+ Text [ french ] = "Opérations multiples" ;
+ Text [ swedish ] = "Multipla räkneoperationer" ;
+ Text [ dutch ] = "Meervoudige operaties" ;
+ Text [ spanish ] = "Operaciones múltiples" ;
+ Text [ english_us ] = "Multiple operations" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ FixedText FT_FORMULARANGE
+ {
+ Pos = MAP_APPFONT ( 12 , 16 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Formeln" ;
+ Text [ ENGLISH ] = "~formulas" ;
+ Text [ norwegian ] = "~formler" ;
+ Text [ italian ] = "~Formule" ;
+ Text [ portuguese_brazilian ] = "~formulas" ;
+ Text [ portuguese ] = "~Fórmulas" ;
+ Text [ finnish ] = "~formulas" ;
+ Text [ danish ] = "~Formler" ;
+ Text [ french ] = "~Formules" ;
+ Text [ swedish ] = "~Formler" ;
+ Text [ dutch ] = "~Formules" ;
+ Text [ spanish ] = "~Fórmulas" ;
+ Text [ english_us ] = "~Formulas" ;
+ Text[ chinese_simplified ] = "¹«Ê½(~F)";
+ Text[ russian ] = "Ôîðìóëà";
+ Text[ polish ] = "Formu³y";
+ Text[ japanese ] = "”Ž®(~F)";
+ Text[ chinese_traditional ] = "¤½¦¡(~F)";
+ Text[ arabic ] = "ÕíÛ";
+ Text[ greek ] = "~Ôýðïé";
+ Text[ korean ] = "¼ö½Ä(~F)";
+ Text[ turkish ] = "~Formül";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_FORMULARANGE
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 64 , 14 ) ;
+ Size = MAP_APPFONT ( 76 , 12 ) ;
+ };
+ ImageButton RB_FORMULARANGE
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 142 , 14 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС/·Å´ó";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_ROWCELL
+ {
+ Pos = MAP_APPFONT ( 12 , 31 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Zeile" ;
+ Text [ ENGLISH ] = "~row" ;
+ Text [ norwegian ] = "~rad" ;
+ Text [ italian ] = "Riga" ;
+ Text [ portuguese_brazilian ] = "filei~ra" ;
+ Text [ portuguese ] = "~Linha" ;
+ Text [ finnish ] = "~row" ;
+ Text [ danish ] = "Række" ;
+ Text [ french ] = "~Ligne" ;
+ Text [ swedish ] = "~Rad" ;
+ Text [ dutch ] = "~Rij" ;
+ Text [ spanish ] = "Fil~a" ;
+ Text [ english_us ] = "~Row input cell" ;
+ Text[ chinese_simplified ] = "ÐÐ(~R)";
+ Text[ russian ] = "Ñòðîêà";
+ Text[ polish ] = "Wiersz";
+ Text[ japanese ] = "s(~R)";
+ Text[ chinese_traditional ] = "¦C(~R)";
+ Text[ arabic ] = "ÇáÕÝ";
+ Text[ greek ] = "~ÃñáììÞ";
+ Text[ korean ] = "¼¿¿¡ Çà »ðÀÔ(~R)";
+ Text[ turkish ] = "~Satýr";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_ROWCELL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 64 , 29 ) ;
+ Size = MAP_APPFONT ( 76 , 12 ) ;
+ };
+ ImageButton RB_ROWCELL
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 142 , 29 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ FixedText FT_COLCELL
+ {
+ Pos = MAP_APPFONT ( 12 , 46 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Text = "~Spalte" ;
+ Text [ ENGLISH ] = "~column" ;
+ Text [ norwegian ] = "~kolonne" ;
+ Text [ italian ] = "~Colonna" ;
+ Text [ portuguese_brazilian ] = "~coluna" ;
+ Text [ portuguese ] = "~Coluna" ;
+ Text [ finnish ] = "~column" ;
+ Text [ danish ] = "Kolonne" ;
+ Text [ french ] = "~Colonne" ;
+ Text [ swedish ] = "~Kolumn" ;
+ Text [ dutch ] = "~Kolom" ;
+ Text [ spanish ] = "~Columna" ;
+ Text [ english_us ] = "~Column input cell" ;
+ Text[ chinese_simplified ] = "ÁÐ(~C)";
+ Text[ russian ] = "Ñòîëáåö";
+ Text[ polish ] = "Kolumna";
+ Text[ japanese ] = "—ñ(~C)";
+ Text[ chinese_traditional ] = "Äæ(~C)";
+ Text[ arabic ] = "ÇáÚãæÏ";
+ Text[ greek ] = "~ÓôÞëç";
+ Text[ korean ] = "¼¿¿¡ ¿­ »ðÀÔ(~C)";
+ Text[ turkish ] = "~Sütun";
+ Text[ language_user1 ] = " ";
+ };
+ Edit ED_COLCELL
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 64 , 44 ) ;
+ Size = MAP_APPFONT ( 76 , 12 ) ;
+ };
+ ImageButton RB_COLCELL
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+ Pos = MAP_APPFONT ( 142 , 44 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+ QuickHelpText [ portuguese_brazilian ] = "Verkleinern" ;
+ QuickHelpText [ swedish ] = "Förminska" ;
+ QuickHelpText [ danish ] = "Formindsk" ;
+ QuickHelpText [ italian ] = "Zoom indietro" ;
+ QuickHelpText [ spanish ] = "Reducir" ;
+ QuickHelpText [ french ] = "Réduire" ;
+ QuickHelpText [ dutch ] = "Verkleinen" ;
+ QuickHelpText [ portuguese ] = "Afastar" ;
+ QuickHelpText[ russian ] = "Óìåíüøèòü";
+ QuickHelpText[ polish ] = "Pomniejsz";
+ QuickHelpText[ japanese ] = "k¬";
+ QuickHelpText[ chinese_simplified ] = "ËõС";
+ QuickHelpText[ chinese_traditional ] = "ÁY¤p";
+ QuickHelpText[ arabic ] = "ÊÕÛíÑ";
+ QuickHelpText[ greek ] = "Óìßêñõíóç";
+ QuickHelpText[ korean ] = "Min/Max";
+ QuickHelpText[ language_user1 ] = " ";
+ QuickHelpText[ language_user1 ] = " ";
+ };
+ GroupBox GB_VARIABLES
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 154 , 59 ) ;
+ Text = "Vorgaben" ;
+ Text [ ENGLISH ] = "Variables" ;
+ Text [ norwegian ] = "Variabler" ;
+ Text [ italian ] = "Dati" ;
+ Text [ portuguese_brazilian ] = "Variáveis" ;
+ Text [ portuguese ] = "Definir variáveis" ;
+ Text [ finnish ] = "Muuttujat" ;
+ Text [ danish ] = "Forudindstillinger" ;
+ Text [ french ] = "Définir les variables" ;
+ Text [ swedish ] = "Förinställningar" ;
+ Text [ dutch ] = "Standaard" ;
+ Text [ spanish ] = "Variables" ;
+ Text [ english_us ] = "Settings" ;
+ Text[ chinese_simplified ] = "Ô¤ÖÃ";
+ Text[ russian ] = "Íàñòðîéêè";
+ Text[ polish ] = "Ustawienia domyœlne";
+ Text[ japanese ] = "Šî€’l";
+ Text[ chinese_traditional ] = "¹w¸m";
+ Text[ arabic ] = "ÅÚÏÇÏÇÊ ÇÝÊÑÇÖíÉ";
+ Text[ greek ] = "ÐñïåðéëïãÞ";
+ Text[ korean ] = "¼³Á¤";
+ Text[ turkish ] = "Varsayýlan";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 166 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ DefButton = TRUE ;
+ };
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 166 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 166 , 48 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ String STR_NOFORMULA
+ {
+ Text = "Keine Formel eingetragen!" ;
+ Text [ ENGLISH ] = "No formula specified!" ;
+ Text [ norwegian ] = "Ingen formel er spesifisert!" ;
+ Text [ italian ] = "Nessuna formula specificata!" ;
+ Text [ portuguese_brazilian ] = "No formula specified!" ;
+ Text [ portuguese ] = "Fórmula não especificada!" ;
+ Text [ finnish ] = "No formula specified!" ;
+ Text [ danish ] = "Der er ikke specificeret nogen formel!" ;
+ Text [ french ] = "Aucune formule n'a été spécifiée !" ;
+ Text [ swedish ] = "Ingen formel specificerad!" ;
+ Text [ dutch ] = "Geen formule gespecificeerd." ;
+ Text [ spanish ] = "¡No se ha especificado ninguna fórmula!" ;
+ Text [ english_us ] = "No formula specified." ;
+ Text[ chinese_simplified ] = "ûÓÐÊäÈ빫ʽ£¡";
+ Text[ russian ] = "Íå âíåñåíà ôîðìóëà!";
+ Text[ polish ] = "Nie wpisano formu³y!";
+ Text[ japanese ] = "”Ž®‚Í‹L“ü‚µ‚È‚¢‚ʼnº‚³‚¢!";
+ Text[ chinese_traditional ] = "¨S¦³«ü©w¤½¦¡¡I";
+ Text[ arabic ] = "áã íÊã ÊÍÏíÏ ÃíÉ ÇáÕíÛÉ!";
+ Text[ greek ] = "Äåí ïñßóôçêáí ôýðïé!";
+ Text[ korean ] = "ÁöÁ¤µÈ ¼ö½ÄÀÌ ¾ø½À´Ï´Ù.";
+ Text[ turkish ] = "Formül girilmedi!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NOCOLROW
+ {
+ Text = "Weder Zeile noch Spalte eingetragen!" ;
+ Text [ ENGLISH ] = "Neither row nor column specified!" ;
+ Text [ norwegian ] = "Hverken rad eller kolonne er spesifisert!" ;
+ Text [ italian ] = "Non è stata specificata nessuna riga o colonna!" ;
+ Text [ portuguese_brazilian ] = "Neither row nor column specified!" ;
+ Text [ portuguese ] = "Linha e coluna indefinidas!" ;
+ Text [ finnish ] = "Neither row nor column specified!" ;
+ Text [ danish ] = "Der er hverken specificeret række eller kolonne!" ;
+ Text [ french ] = "Ni ligne ni colonne n'ont été spécifiées !" ;
+ Text [ swedish ] = "Varken rad eller kolumn specificerad!" ;
+ Text [ dutch ] = "Noch rij, noch kolom gespecificeerd!" ;
+ Text [ spanish ] = "¡No se ha especificado ni la fila ni la columna!" ;
+ Text [ english_us ] = "Neither row or column specified." ;
+ Text[ chinese_simplified ] = "ûÓÐÖ¸¶¨ÐкÍÁУ¡";
+ Text[ russian ] = "Íè ñòðîêè, íè ñòîëáöû íå çàäàíû!";
+ Text[ polish ] = "Nie wpisano ani wiersza ani kolumny!";
+ Text[ japanese ] = "s‚à—ñ‚à‹L“ü‚µ‚È‚¢‚ʼnº‚³‚¢!";
+ Text[ chinese_traditional ] = "¨S¦³«ü©wÄæ©M¦C¡I";
+ Text[ arabic ] = "áã íÊã ÊÍÏíÏ ÇáÕÝ æáÇ ÇáÚãæÏ!";
+ Text[ greek ] = "Äåí ïñßóôçêå ïýôå ãñáììÞ, ïýôå óôÞëç!";
+ Text[ korean ] = "¿­ ¶Ç´Â ÇàÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò½À´Ï´Ù.";
+ Text[ turkish ] = "Ne satýr ne de sütun belirtildi!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_WRONGFORMULA
+ {
+ Text = "Undefinierter Name oder Bereich!" ;
+ Text [ ENGLISH ] = "Undefined name or range for formula!" ;
+ Text [ norwegian ] = "Udefinert navn eller verdimengde for formel !" ;
+ Text [ italian ] = "Nome o area non definiti!" ;
+ Text [ portuguese_brazilian ] = "Undefined name or range for formula!" ;
+ Text [ portuguese ] = "Nome ou área indefinidos!" ;
+ Text [ finnish ] = "Undefined name or range for formula!" ;
+ Text [ danish ] = "Udefineret navn eller område!" ;
+ Text [ french ] = "Nom ou plage indéfini(e) !" ;
+ Text [ swedish ] = "Odefinierat namn eller område!" ;
+ Text [ dutch ] = "Ongedefinieerde naam of bereik!" ;
+ Text [ spanish ] = "¡Nombre o área no definidos!" ;
+ Text [ english_us ] = "Undefined name or range." ;
+ Text[ chinese_simplified ] = "ûÓж¨ÒåÃû³Æ»òÇøÓò£¡";
+ Text[ russian ] = "Èìÿ èëè îáëàñòü íå îïðåäåëåíû!";
+ Text[ polish ] = "Nie zdefiniowana nazwa lub obszar!";
+ Text[ japanese ] = "’è‹`‚È‚µ‚Ì–¼‘O‚Ü‚½‚͔͈Í!";
+ Text[ chinese_traditional ] = "¨S¦³©w¸q¦WºÙ©Î°Ï°ì¡I";
+ Text[ arabic ] = "ÇÓã Ãæ äØÇÞ ÛíÑ ãõÚÑøÝ!";
+ Text[ greek ] = "Ìç ïñéóìÝíï üíïìá Þ ìç ïñéóìÝíç ðåñéï÷Þ!";
+ Text[ korean ] = "ÁöÁ¤µÇÁö ¾ÊÀº À̸§¶Ç´Â ¿µ¿ª";
+ Text[ turkish ] = "Tanýmlanmamýþ ad ya da alan!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_WRONGROWCOL
+ {
+ Text = "Undefinierter Name oder falsche Zellreferenz!" ;
+ Text [ ENGLISH ] = "Row: no formula cell!" ;
+ Text [ norwegian ] = "Rad: ingen formelcelle!" ;
+ Text [ italian ] = "Nome non definito o riferimento a celle errato!" ;
+ Text [ portuguese_brazilian ] = "Row: no formula cell!" ;
+ Text [ portuguese ] = "Nome ou referência da célula indefinidos!" ;
+ Text [ finnish ] = "Row: no formula cell!" ;
+ Text [ danish ] = "Udefineret navn eller forkert cellereference!" ;
+ Text [ french ] = "Nom indéfini ou référence de cellule incorrecte !" ;
+ Text [ swedish ] = "Odefinierat namn eller fel cellreferens!" ;
+ Text [ dutch ] = "Ongedefinieerde naam of verkeerde celverwijzing." ;
+ Text [ spanish ] = "¡Nombre no definido o ref. a celda incorrecta!" ;
+ Text [ english_us ] = "Undefined name or wrong cell reference." ;
+ Text[ chinese_simplified ] = "ûÓж¨ÒåÃû³Æ»ò´íÎóµÄµ¥Ôª¸ñÒýÓã¡";
+ Text[ russian ] = "Íåîïðåäåëåíî èìÿ èëè íåïðàâèëüíàÿ ññûëêà ÿ÷åéêè!";
+ Text[ polish ] = "Nie zdefiniowana nazwa lub z³y adres komórki!";
+ Text[ japanese ] = "’è‹`‚È‚µ‚Ì–¼‘O‚Ü‚½‚ͳ‚µ‚­‚È‚¢¾ÙŽQÆ!";
+ Text[ chinese_traditional ] = "¨S¦³©w¸q¦WºÙ©Î¿ù»~ªºÀx¦s®æ°Ñ·Ó¡I";
+ Text[ arabic ] = "ÇÓã ÛíÑ ãõÚÑøÝ Ãæ ãÑÌÚ ÎáíÉ ÎÇØÆ!";
+ Text[ greek ] = "Ìç ïñéóìÝíï üíïìá Þ ëÜèïò áíáöïñÜ êåëéïý!.";
+ Text[ korean ] = "ÁöÁ¤µÇÁö ¾ÊÀº À̸§ ¶Ç´Â À߸øµÈ ¼¿ ÂüÁ¶";
+ Text[ turkish ] = "Tanýmlanmamýþ ad ya da yanlýþ hücre referansý!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NOCOLFORMULA
+ {
+ Text = "Formeln bilden keine Spalte!" ;
+ Text [ ENGLISH ] = "Formulas form no column!" ;
+ Text [ norwegian ] = "Formelblanketten har ingen kolonne!" ;
+ Text [ italian ] = "Le formule non producono una colonna!" ;
+ Text [ portuguese_brazilian ] = "Formulas form no column!" ;
+ Text [ portuguese ] = "Fórmulas não formam coluna!" ;
+ Text [ finnish ] = "Formulas form no column!" ;
+ Text [ danish ] = "Formler danner ikke kolonne!" ;
+ Text [ french ] = "Les formules ne forment pas de colonne !" ;
+ Text [ swedish ] = "Formlerna bildar ingen kolumn!" ;
+ Text [ dutch ] = "Formules vormen geen kolom!" ;
+ Text [ spanish ] = "¡Las fórmulas no forman columna!" ;
+ Text [ english_us ] = "Formulas don't form a column." ;
+ Text[ chinese_simplified ] = "¹«Ê½²¢²»¹¹³ÉÁУ¡";
+ Text[ russian ] = "Ôîðìóëû íå îáðàçóþò ñòîëáåö!";
+ Text[ polish ] = "Formu³y nie tworz¹ kolumny!";
+ Text[ japanese ] = "”Ž®‚Í—ñ‚ðŒ`¬‚µ‚Ü‚¹‚ñ!";
+ Text[ chinese_traditional ] = "¤½¦¡¨Ã¤£ºc¦¨Äæ¡I";
+ Text[ arabic ] = "ÇáÕíÛ áÇ ÊõÔßá ÚãæÏÇð!";
+ Text[ greek ] = "Ïé ôýðïé äåí áðïôåëïýí ìéá óôÞëç!";
+ Text[ korean ] = "¼ö½ÄÀº ¿­À» ±¸¼ºÇÏÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Formüller sütun oluþturmuyor!";
+ Text[ language_user1 ] = " ";
+ };
+ String STR_NOROWFORMULA
+ {
+ Text = "Formeln bilden keine Zeile!" ;
+ Text [ ENGLISH ] = "Formulas form no row!" ;
+ Text [ norwegian ] = "Formelblanketten har ingen rad!" ;
+ Text [ italian ] = "Le formule non producono una riga!" ;
+ Text [ portuguese_brazilian ] = "Formulas form no row!" ;
+ Text [ portuguese ] = "Fórmulas não formam linha!" ;
+ Text [ finnish ] = "Formulas form no row!" ;
+ Text [ danish ] = "Formler danner ikke række!" ;
+ Text [ french ] = "Les formules ne forment pas de ligne !" ;
+ Text [ swedish ] = "Formlerna bildar ingen rad!" ;
+ Text [ dutch ] = "Formules vormen geen rij!" ;
+ Text [ spanish ] = "¡Fórmulas no forman una fila!" ;
+ Text [ english_us ] = "Formulas don't form a row." ;
+ Text[ chinese_simplified ] = "¹«Ê½²»¹¹³ÉÐУ¡";
+ Text[ russian ] = "Ôîðìóëû íå îáðàçóþò ñòðîêó!";
+ Text[ polish ] = "Formu³y nie tworz¹ wiersza!";
+ Text[ japanese ] = "”Ž®‚Ís‚ðŒ`¬‚µ‚Ü‚¹‚ñ!";
+ Text[ chinese_traditional ] = "¤½¦¡¤£ºc¦¨¦C¡I";
+ Text[ arabic ] = "ÇáÕíÛ áÇ ÊõÔßá ÕÝÇð!";
+ Text[ greek ] = "Ïé ôýðïé äåí áðïôåëïýí ìéá ãñáììÞ!";
+ Text[ korean ] = "¼ö½ÄÀº ÇàÀ» ±¸¼ºÇÏÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Formüller satýr oluþturmuyor!";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "¶àÖؼÆËã";
+ Text[ russian ] = "Òàáëèöà ïîäñòàíîâîê";
+ Text[ polish ] = "Operacje wielokrotne";
+ Text[ japanese ] = "•¡”‰‰ŽZ";
+ Text[ chinese_traditional ] = "¼Ï¯Ã¤ÀªRªí";
+ Text[ arabic ] = "ÚãáíÇÊ ãÊÚÏÏÉ";
+ Text[ greek ] = "ÐïëëáðëÝò ëåéôïõñãßåò";
+ Text[ korean ] = "º¹ÇÕ ¿¬»ê";
+ Text[ turkish ] = "Çoklu iþlemler";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/src/textdlgs.src b/sc/source/ui/src/textdlgs.src
new file mode 100644
index 000000000000..97e2dd604280
--- /dev/null
+++ b/sc/source/ui/src/textdlgs.src
@@ -0,0 +1,404 @@
+/*************************************************************************
+ *
+ * $RCSfile: textdlgs.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+#include <svx/dialogs.hrc>
+#include "sc.hrc"
+
+TabDialog RID_SCDLG_CHAR
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 289 , 176 ) ;
+ Text = "Zeichen" ;
+ Text [ ENGLISH ] = "Character" ;
+ Text [ norwegian ] = "Character" ;
+ Text [ italian ] = "Carattere" ;
+ Text [ portuguese_brazilian ] = "Caractere" ;
+ Text [ portuguese ] = "Caracteres" ;
+ Text [ finnish ] = "Merkki" ;
+ Text [ danish ] = "Tegn" ;
+ Text [ french ] = "Caractères" ;
+ Text [ swedish ] = "Tecken" ;
+ Text [ dutch ] = "Teken" ;
+ Text [ spanish ] = "Carácter" ;
+ Text [ english_us ] = "Character" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_CHAR_STD ;
+ Text = "Schrift" ;
+ Text [ ENGLISH ] = "Character" ;
+ Text [ norwegian ] = "Character" ;
+ Text [ italian ] = "Carattere" ;
+ Text [ portuguese_brazilian ] = "Caractere" ;
+ Text [ portuguese ] = "Tipo de letra" ;
+ Text [ finnish ] = "Merkki" ;
+ Text [ danish ] = "Skrifttype" ;
+ Text [ french ] = "Police" ;
+ Text [ swedish ] = "Teckensnitt" ;
+ Text [ dutch ] = "Lettertype" ;
+ Text [ spanish ] = "Fuente" ;
+ Text [ english_us ] = "Font" ;
+ PageResID = RID_SVXPAGE_CHAR_STD ;
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ russian ] = "Øðèôò";
+ Text[ polish ] = "Czcionka";
+ Text[ japanese ] = "Ì«ÝÄ";
+ Text[ chinese_traditional ] = "¦r«¬";
+ Text[ arabic ] = "ÇáÎØ";
+ Text[ greek ] = "ÃñáììáôïóåéñÜ";
+ Text[ korean ] = "±Û²Ã";
+ Text[ turkish ] = "Yazýtipi";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_CHAR_EXT ;
+ Text = "Schrifteffekt" ;
+ Text [ ENGLISH ] = "Character Extension" ;
+ Text [ norwegian ] = "Character Extension" ;
+ Text [ italian ] = "Effetto carattere" ;
+ Text [ portuguese_brazilian ] = "Extensão de Caracter" ;
+ Text [ portuguese ] = "Efeitos do tipo de letra" ;
+ Text [ finnish ] = "Merkin tehosteet" ;
+ Text [ danish ] = "Skrifteffekt" ;
+ Text [ french ] = "Effet de caractère" ;
+ Text [ swedish ] = "Teckensnittseffekt" ;
+ Text [ dutch ] = "Schrifteffecten" ;
+ Text [ spanish ] = "Efectos de fuente" ;
+ Text [ english_us ] = "Font Effects" ;
+ PageResID = RID_SVXPAGE_CHAR_EXT ;
+ Text[ chinese_simplified ] = "×ÖÌåЧ¹û";
+ Text[ russian ] = "Ýôôåêòû øðèôòà";
+ Text[ polish ] = "Efekty czcionek";
+ Text[ japanese ] = "Ì«ÝÄŒø‰Ê";
+ Text[ chinese_traditional ] = "¦r«¬®ÄªG";
+ Text[ arabic ] = "ÊÃËíÑÇÊ ÇáÎØæØ";
+ Text[ greek ] = "ÅöÝ ÷áñáêôÞñùí";
+ Text[ korean ] = "±Û²Ã È¿°ú";
+ Text[ turkish ] = "Yazýtipi efektleri";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ OKButton 1
+ {
+ Pos = MAP_APPFONT ( 6 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton 1
+ {
+ Pos = MAP_APPFONT ( 60 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton 1
+ {
+ Pos = MAP_APPFONT ( 114 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton 1
+ {
+ Pos = MAP_APPFONT ( 169 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zurück : Zur³ck */
+ Text = "Zurück" ;
+ Text [ ENGLISH ] = "Return" ;
+ Text [ norwegian ] = "Return" ;
+ Text [ italian ] = "Indietro" ;
+ Text [ portuguese_brazilian ] = "Devolver" ;
+ Text [ portuguese ] = "Anterior" ;
+ Text [ finnish ] = "Palaa" ;
+ Text [ danish ] = "Tilbage" ;
+ Text [ french ] = "Précédent" ;
+ Text [ swedish ] = "Tillbaka" ;
+ Text [ dutch ] = "Ongedaan" ;
+ Text [ spanish ] = "Regresar" ;
+ Text [ english_us ] = "Back" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "·µ»Ø";
+ Text[ russian ] = "Íàçàä";
+ Text[ polish ] = "Wstecz";
+ Text[ japanese ] = "–ß‚é";
+ Text[ chinese_traditional ] = "ªð¦^";
+ Text[ arabic ] = "ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðßóù";
+ Text[ korean ] = "µÚ·Î";
+ Text[ turkish ] = "Geri";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "×Ö·û";
+ Text[ russian ] = "Çíàê";
+ Text[ polish ] = "Znak";
+ Text[ japanese ] = "•¶Žš";
+ Text[ chinese_traditional ] = "¦r¤¸";
+ Text[ arabic ] = "ÇáÍÑÝ";
+ Text[ greek ] = "×áñáêôÞñåò";
+ Text[ korean ] = "¹®ÀÚ";
+ Text[ turkish ] = "Karakter";
+ Text[ language_user1 ] = " ";
+};
+
+TabDialog RID_SCDLG_PARAGRAPH
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 289 , 176 ) ;
+ Text = "Absatz" ;
+ Text [ ENGLISH ] = "Paragraph" ;
+ Text [ norwegian ] = "Avsnitt" ;
+ Text [ italian ] = "Paragrafo" ;
+ Text [ portuguese_brazilian ] = "Parágrafo" ;
+ Text [ portuguese ] = "Parágrafo" ;
+ Text [ finnish ] = "Kappale" ;
+ Text [ danish ] = "Afsnit" ;
+ Text [ french ] = "Paragraphe" ;
+ Text [ swedish ] = "Stycke" ;
+ Text [ dutch ] = "Alinea" ;
+ Text [ spanish ] = "Párrafo" ;
+ Text [ english_us ] = "Paragraph" ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_STD_PARAGRAPH ;
+ /* ### ACHTUNG: Neuer Text in Resource? Einzüge und Abstände : Einz³ge und Abstõnde */
+ Text = "Einzüge und Abstände" ;
+ Text [ ENGLISH ] = "Indent and Spacing" ;
+ Text [ norwegian ] = "Indent and Spacing" ;
+ Text [ italian ] = "Rientri e distanze" ;
+ Text [ portuguese_brazilian ] = "Indentar e Espaçar" ;
+ Text [ portuguese ] = "Avanços e espaçamento" ;
+ Text [ finnish ] = "Sisennys ja välit" ;
+ Text [ danish ] = "Indrykning og mellemrum" ;
+ Text [ french ] = "Retraits et écarts" ;
+ Text [ swedish ] = "Indrag och avstånd" ;
+ Text [ dutch ] = "Inspringingen en afstanden" ;
+ Text [ spanish ] = "Sangrías y espacios" ;
+ Text [ english_us ] = "Indents & Spacing" ;
+ PageResID = RID_SVXPAGE_STD_PARAGRAPH ;
+ Text[ chinese_simplified ] = "Ëõ½øºÍ¼ä¸ô";
+ Text[ russian ] = "Îòñóïû è èíòåðâàëû";
+ Text[ polish ] = "Wciêcia i odstêpy";
+ Text[ japanese ] = "²ÝÃÞÝÄ‚ÆsŠÔŠu";
+ Text[ chinese_traditional ] = "ÁY±Æ©M¶¡¹j";
+ Text[ arabic ] = "ÇáÅÒÇÍÉ æÇáÊÈÇÚÏ";
+ Text[ greek ] = "Åóï÷Ýò êáé áðïóôÜóåéò";
+ Text[ korean ] = "µé¿©¾²±â & °£°Ý";
+ Text[ turkish ] = "Girinti ve aralýklar";
+ Text[ language_user1 ] = " ";
+ };
+ /*
+ PageItem {
+ Identifier = RID_SVXPAGE_EXT_PARAGRAPH;
+ Text = "Absatz (Zusätze)";
+ Text[ ENGLISH ] = "Paragraph (Extensions)";
+ Text[norwegian] = "Avsnitt (Utvidelser)";
+ Text[italian] = "Paragrafo (Estensioni)";
+ Text[portuguese_brazilian] = "Parágrafo (Extens es)";
+ Text[portuguese] = "Parágrafo (Extensões)";
+ Text[finnish] = "Kappale (laajennukset)";
+ Text[danish] = "Afsnit (Filtypenavne)";
+ Text[french] = "Paragraphe (Extensions)";
+ Text[swedish] = "Stycke (tillägg)";
+ Text[dutch] = "Alinea (Extensions)";
+ Text[spanish] = "Párrafo (extensiones)";
+ Text[english_us] = "Paragraph (Extensions)";
+ PageResID = RID_SVXPAGE_EXT_PARAGRAPH;
+ };
+*/
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_ALIGN_PARAGRAPH ;
+ PageResID = RID_SVXPAGE_ALIGN_PARAGRAPH ;
+ Text = "Ausrichtung" ;
+ Text [ ENGLISH ] = "Alignment" ;
+ Text [ english_us ] = "Alignment" ;
+ Text [ portuguese_brazilian ] = "Ausrichtung" ;
+ Text [ swedish ] = "Justering" ;
+ Text [ danish ] = "Justering" ;
+ Text [ italian ] = "Allineamento" ;
+ Text [ spanish ] = "Alineación" ;
+ Text [ french ] = "Alignement" ;
+ Text [ dutch ] = "Uitlijning" ;
+ Text [ portuguese ] = "Alinhamento" ;
+ Text[ chinese_simplified ] = "¶ÔÆë";
+ Text[ russian ] = "Âûðàâíèâàíèå";
+ Text[ polish ] = "Wyrównanie";
+ Text[ japanese ] = "”z’u";
+ Text[ chinese_traditional ] = "¹ï»ô";
+ Text[ arabic ] = "ÇáãÍÇÐÇÉ";
+ Text[ greek ] = "Óôïß÷éóç";
+ Text[ korean ] = "¸ÂÃã";
+ Text[ turkish ] = "Hizalama";
+ Text[ language_user1 ] = " ";
+ };
+
+ PageItem
+ {
+ Identifier = RID_SVXPAGE_TABULATOR ;
+ Text = "Tabulator" ;
+ Text [ ENGLISH ] = "Paragraph (Tabs)" ;
+ Text [ norwegian ] = "Avsnitt (Tabulatorer)" ;
+ Text [ italian ] = "Tabulazione" ;
+ Text [ portuguese_brazilian ] = "Parágrafo (Tabs)" ;
+ Text [ portuguese ] = "Tabulação" ;
+ Text [ finnish ] = "Kappale (sarkaimet)" ;
+ Text [ danish ] = "Tabulator" ;
+ Text [ french ] = "Tabulation" ;
+ Text [ swedish ] = "Tabulator" ;
+ Text [ dutch ] = "Tabs" ;
+ Text [ spanish ] = "Tabulaciones" ;
+ Text [ english_us ] = "Tab" ;
+ PageResID = RID_SVXPAGE_TABULATOR ;
+ Text[ chinese_simplified ] = "ÖƱí·û";
+ Text[ russian ] = "Òàáóëÿöèÿ";
+ Text[ polish ] = "Tabulator";
+ Text[ japanese ] = "ÀÌÞ";
+ Text[ chinese_traditional ] = "»sªí²Å";
+ Text[ arabic ] = "ÚáÇãÉ ÌÏæáÉ";
+ Text[ greek ] = "ÓôçëïèÝôçò";
+ Text[ korean ] = "ÅÇ";
+ Text[ turkish ] = "Sekmeler";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ OKButton 1
+ {
+ Pos = MAP_APPFONT ( 6 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ CancelButton 1
+ {
+ Pos = MAP_APPFONT ( 60 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ HelpButton 1
+ {
+ Pos = MAP_APPFONT ( 114 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton 1
+ {
+ Pos = MAP_APPFONT ( 169 , 151 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zurück : Zur³ck */
+ Text = "Zurück" ;
+ Text [ ENGLISH ] = "Return" ;
+ Text [ norwegian ] = "Return" ;
+ Text [ italian ] = "Indietro" ;
+ Text [ portuguese_brazilian ] = "Devolver" ;
+ Text [ portuguese ] = "Anterior" ;
+ Text [ finnish ] = "Palaa" ;
+ Text [ danish ] = "Tilbage" ;
+ Text [ french ] = "Précédent" ;
+ Text [ swedish ] = "Tillbaka" ;
+ Text [ dutch ] = "Ongedaan" ;
+ Text [ spanish ] = "Regresar" ;
+ Text [ english_us ] = "Back" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "·µ»Ø";
+ Text[ russian ] = "Íàçàä";
+ Text[ polish ] = "Wstecz";
+ Text[ japanese ] = "–ß‚é";
+ Text[ chinese_traditional ] = "ªð¦^";
+ Text[ arabic ] = "ÇáÓÇÈÞ";
+ Text[ greek ] = "Ðßóù";
+ Text[ korean ] = "µÚ·Î";
+ Text[ turkish ] = "Geri";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "¶ÎÂä";
+ Text[ russian ] = "Àáçàö";
+ Text[ polish ] = "Akapit";
+ Text[ japanese ] = "’i—Ž";
+ Text[ chinese_traditional ] = "¬q¸¨";
+ Text[ arabic ] = "ÇáÝÞÑÉ";
+ Text[ greek ] = "ÐáñÜãñáöïò";
+ Text[ korean ] = "´Ü¶ô";
+ Text[ turkish ] = "Paragraf";
+ Text[ language_user1 ] = " ";
+};
+
+
diff --git a/sc/source/ui/src/toolbox.src b/sc/source/ui/src/toolbox.src
new file mode 100644
index 000000000000..aaacc8732b87
--- /dev/null
+++ b/sc/source/ui/src/toolbox.src
@@ -0,0 +1,1719 @@
+/*************************************************************************
+ *
+ * $RCSfile: toolbox.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+ //==================================================================
+ // Toolbox - Resourcen
+ //
+ // (C) 1994 StarDivision GmbH, Hamburg, Germany
+ // $Author: hr $ $Date: 2000-09-18 16:45:06 $ $Revision: 1.1.1.1 $
+ // $Logfile: T:/sc/source/ui/src/toolbox.srv $ $Workfile: TOOLBOX.SRC $
+ //==================================================================
+
+#include "sc.hrc" // -> #include <sfx.hrc>
+#include <basctl/basicide.hrc>
+#include <offmgr/offmenu.hrc>
+#include "tbinsert.hrc" // Sub-IDs
+
+
+
+ // ToolBoxen: ----------------------------------------------------------------
+
+/*
+ * ToolBox mit Eingabezeile: HelpStrings fuer Knoepfe und Fenster:
+ */
+
+#define ITEM_TOOLBAR_SORT_ASCENDING \
+ Identifier = SID_SORT_ASCENDING ; \
+ HelpId = SID_SORT_ASCENDING ;
+
+#define ITEM_TOOLBAR_SORT_DESCENDING \
+ Identifier = SID_SORT_DESCENDING ; \
+ HelpId = SID_SORT_DESCENDING ;
+
+#define ITEM_TOOLBAR_INSERT_FRAME \
+ Identifier = SID_INSERT_FRAME ; \
+ HelpId = SID_INSERT_FRAME ;
+
+
+#define ITEM_TOOLBAR_INSERT_GRAPHIC \
+ Identifier = SID_INSERT_GRAPHIC ; \
+ HelpId = SID_INSERT_GRAPHIC ;
+
+#define ITEM_TOOLBAR_AUTO_FILTER \
+ Identifier = SID_AUTO_FILTER ; \
+ HelpId = SID_AUTO_FILTER ;
+
+
+#define ITEM_TOOLBAR_OUTLINE_MAKE \
+ Identifier = SID_OUTLINE_MAKE ; \
+ HelpId = SID_OUTLINE_MAKE ;
+
+
+#define ITEM_TOOLBAR_OUTLINE_REMOVE \
+ Identifier = SID_OUTLINE_REMOVE ; \
+ HelpId = SID_OUTLINE_REMOVE ;
+
+#define ITEM_TOOLBAR_DRAW_CHART \
+ Identifier = SID_DRAW_CHART ; \
+ HelpId = SID_DRAW_CHART ;
+
+#define ITEM_TOOLBAR_SPELLING \
+ Identifier = SID_SPELLING ; \
+ HelpId = SID_SPELLING ;
+
+#define ITEM_TOOLBAR_THESAURUS \
+ Identifier = SID_THESAURUS ; \
+ HelpId = SID_THESAURUS ;
+
+#define ITEM_TOOLBAR_FILTER \
+ Identifier = SID_FILTER ; \
+ HelpId = SID_FILTER ;
+
+#define ITEM_TOOLBAR_SPECIAL_FILTER \
+ Identifier = SID_SPECIAL_FILTER;\
+ HelpId = SID_SPECIAL_FILTER ;
+
+String SCSTR_QHELP_POSWND
+{
+ Text = "Tabellenbereich" ;
+ Text [ english ] = "Table Area" ;
+ Text [ norwegian ] = "Table Area" ;
+ Text [ italian ] = "Area tabella" ;
+ Text [ portuguese_brazilian ] = "Área da Tabela" ;
+ Text [ portuguese ] = "Área da folha" ;
+ Text [ finnish ] = "Taulukkoalue" ;
+ Text [ danish ] = "Regnearksområde" ;
+ Text [ french ] = "Zone de la feuille" ;
+ Text [ swedish ] = "Tabellområde" ;
+ Text [ dutch ] = "Werkbladbereik" ;
+ Text [ spanish ] = "Área de hoja" ;
+ Text [ english_us ] = "Sheet Area" ;
+ Text[ chinese_simplified ] = "¹¤×÷±íÇøÓò";
+ Text[ russian ] = "Îáëàñòü ëèñòà";
+ Text[ polish ] = "Obszar arkusza";
+ Text[ japanese ] = "•\\”͈Í";
+ Text[ chinese_traditional ] = "¤u§@ªí°Ï°ì";
+ Text[ arabic ] = "äØÇÞ ÇáÌÏæá";
+ Text[ greek ] = "Ðåñéï÷Þ ðßíáêá";
+ Text[ korean ] = "½ÃÆ® ¿µ¿ª";
+ Text[ turkish ] = "Tablo bölümü";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_QHELP_INPUTWND
+{
+ Text = "Eingabezeile" ;
+ Text [ english ] = "Inputline" ;
+ Text [ norwegian ] = "Inputline" ;
+ Text [ italian ] = "Riga di digitazione" ;
+ Text [ portuguese_brazilian ] = "Linha de entrada" ;
+ Text [ portuguese ] = "Linha de entrada" ;
+ Text [ finnish ] = "Syöttörivi" ;
+ Text [ danish ] = "Inputlinje" ;
+ Text [ french ] = "Ligne de saisie" ;
+ Text [ swedish ] = "Inmatningsrad" ;
+ Text [ dutch ] = "Invoerregel" ;
+ Text [ spanish ] = "Línea de entrada" ;
+ Text [ english_us ] = "Input line" ;
+ Text[ chinese_simplified ] = "ÊäÈëÐÐ";
+ Text[ russian ] = "Ñòðîêà ââîäà";
+ Text[ polish ] = "Wiersz wprowadzania";
+ Text[ japanese ] = "”Ž®“ü—ÍÎÞ¯¸½";
+ Text[ chinese_traditional ] = "¿é¤JÄæ";
+ Text[ arabic ] = "ÓØÑ ÇáÅÏÎÇá";
+ Text[ greek ] = "ÃñáììÞ åéóáãùãÞò";
+ Text[ korean ] = "¼± »ðÀÔ";
+ Text[ turkish ] = "Giriþ satýrý";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_QHELP_BTNCALC
+{
+ Text = "Funktionsautopilot" ;
+ Text [ english ] = "Function Autopilot" ;
+ Text [ norwegian ] = "Function Autopilot" ;
+ Text [ italian ] = "Pilota automatico di funzione" ;
+ Text [ portuguese_brazilian ] = "Função Piloto Automático" ;
+ Text [ portuguese ] = "Função AutoPiloto" ;
+ Text [ finnish ] = "AutoPilot-toiminto" ;
+ Text [ danish ] = "FunktionsAutoPilot" ;
+ Text [ french ] = "AutoPilote de fonctions" ;
+ Text [ swedish ] = "Funktionsautopilot" ;
+ Text [ dutch ] = "Functie-AutoPiloot" ;
+ Text [ spanish ] = "AutoPiloto de funciones" ;
+ Text [ english_us ] = "AutoPilot: Functions" ;
+ Text[ chinese_simplified ] = "º¯Êý×Ô¶¯ÖúÀí";
+ Text[ russian ] = "Àâòîïèëîò - Ôóíêöèè";
+ Text[ polish ] = "AutoPilot funkcji";
+ Text[ japanese ] = "ŠÖ”µ°ÄÊß²Û¯Ä";
+ Text[ chinese_traditional ] = "¨ç¼Æ¦Û°Ê§U²z";
+ Text[ arabic ] = "ÇáãÑÔÏ ÇáÂáí ááÏÇáÇÊ";
+ Text[ greek ] = "Function Autopilot";
+ Text[ korean ] = "ÀÚµ¿ ÆÄÀÏ·µ ±â´É";
+ Text[ turkish ] = "Ýþlev OtoPilotu";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_QHELP_BTNOK
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Übernehmen : šbernehmen */
+ Text = "Übernehmen" ;
+ Text [ english ] = "Accept" ;
+ Text [ norwegian ] = "Accept" ;
+ Text [ italian ] = "Accetta" ;
+ Text [ portuguese_brazilian ] = "Aceitar" ;
+ Text [ portuguese ] = "Aceitar" ;
+ Text [ finnish ] = "Hyväksy" ;
+ Text [ danish ] = "Accepter" ;
+ Text [ french ] = "Appliquer" ;
+ Text [ swedish ] = "Överta" ;
+ Text [ dutch ] = "Accepteren" ;
+ Text [ spanish ] = "Aplicar" ;
+ Text [ english_us ] = "Accept" ;
+ Text[ chinese_simplified ] = "½ÓÊÜ";
+ Text[ russian ] = "Ïðèíÿòü";
+ Text[ polish ] = "Zaakceptuj";
+ Text[ japanese ] = "OK";
+ Text[ chinese_traditional ] = "±µ¨ü";
+ Text[ arabic ] = "ÞÈæá";
+ Text[ greek ] = "Accept";
+ Text[ korean ] = "Àû¿ë";
+ Text[ turkish ] = "Kabul";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_QHELP_BTNCANCEL
+{
+ Text = "Verwerfen" ;
+ Text [ english ] = "Cancel" ;
+ Text [ norwegian ] = "Avbryt" ;
+ Text [ italian ] = "~Rigetta" ;
+ Text [ portuguese_brazilian ] = "Cancelar" ;
+ Text [ portuguese ] = "Cancelar" ;
+ Text [ finnish ] = "Peruuta" ;
+ Text [ danish ] = "Forkast" ;
+ Text [ french ] = "Ignorer" ;
+ Text [ swedish ] = "Avslå" ;
+ Text [ dutch ] = "Verwerpen" ;
+ Text [ spanish ] = "Rechazar" ;
+ Text [ english_us ] = "Cancel" ;
+ Text[ chinese_simplified ] = "·ÅÆú";
+ Text[ russian ] = "Îòìåíà";
+ Text[ polish ] = "Odrzuæ";
+ Text[ japanese ] = "·¬Ý¾Ù";
+ Text[ chinese_traditional ] = "©ñ±ó";
+ Text[ arabic ] = "ÑÝÖ";
+ Text[ greek ] = "Áêýñùóç";
+ Text[ korean ] = "Ãë¼Ò";
+ Text[ turkish ] = "Ýptal";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_QHELP_BTNSUM
+{
+ Text = "Summe" ;
+ Text [ english ] = "Sum" ;
+ Text [ norwegian ] = "Sum" ;
+ Text [ italian ] = "Somma" ;
+ Text [ portuguese_brazilian ] = "Soma" ;
+ Text [ portuguese ] = "Soma" ;
+ Text [ finnish ] = "Summa" ;
+ Text [ danish ] = "Sum" ;
+ Text [ french ] = "Somme" ;
+ Text [ swedish ] = "Summa" ;
+ Text [ dutch ] = "Som" ;
+ Text [ spanish ] = "Suma" ;
+ Text [ english_us ] = "Sum" ;
+ Text[ chinese_simplified ] = "×ܼÆ";
+ Text[ russian ] = "Ñóììà";
+ Text[ polish ] = "Suma";
+ Text[ japanese ] = "µ°Ä Sum";
+ Text[ chinese_traditional ] = "Á`¼Æ";
+ Text[ arabic ] = "ÇáãÌãæÚ";
+ Text[ greek ] = "¢èñïéóìá";
+ Text[ korean ] = "ÇÕ°è";
+ Text[ turkish ] = "Toplam";
+ Text[ language_user1 ] = " ";
+};
+
+String SCSTR_QHELP_BTNEQUAL
+{
+ Text = "Funktion" ;
+ Text [ english ] = "Funktion" ;
+ Text [ norwegian ] = "Funktion" ;
+ Text [ italian ] = "Funzione" ;
+ Text [ portuguese_brazilian ] = "Função" ;
+ Text [ portuguese ] = "Função" ;
+ Text [ finnish ] = "Funktio" ;
+ Text [ danish ] = "Funktion" ;
+ Text [ french ] = "Fonction" ;
+ Text [ swedish ] = "Funktion" ;
+ Text [ dutch ] = "Functie" ;
+ Text [ spanish ] = "Función" ;
+ Text [ english_us ] = "Function" ;
+ Text[ chinese_simplified ] = "º¯Êý";
+ Text[ russian ] = "Ôóíêöèÿ";
+ Text[ polish ] = "Funkcja";
+ Text[ japanese ] = "”Ž®‚Ì•ÒW";
+ Text[ chinese_traditional ] = "¨ç¼Æ";
+ Text[ arabic ] = "ÇáÏÇáÉ";
+ Text[ greek ] = "ÓõíÜñôçóç";
+ Text[ korean ] = "±â´É";
+ Text[ turkish ] = "Ýþlev";
+ Text[ language_user1 ] = " ";
+};
+
+ //-----------------------------------------------------------------------------
+ // Applikations-Toolbar
+ //-----------------------------------------------------------------------------
+
+String RID_OBJECTBAR_APP
+{
+ Text = "Funktionsleiste" ;
+ Text [ english ] = "Function Bar" ;
+ Text [ norwegian ] = "Function Bar" ;
+ Text [ italian ] = "Barra delle funzioni" ;
+ Text [ portuguese_brazilian ] = "Barra de Funções" ;
+ Text [ portuguese ] = "Barra de funções" ;
+ Text [ finnish ] = "Toimintorivi" ;
+ Text [ danish ] = "Funktionslinje" ;
+ Text [ french ] = "Barre de fonctions" ;
+ Text [ swedish ] = "Funktionslist" ;
+ Text [ dutch ] = "Werkbalk" ;
+ Text [ spanish ] = "Barra de funciones" ;
+ Text [ english_us ] = "Function Bar" ;
+ Text[ chinese_simplified ] = "¹¦ÄÜÀ¸";
+ Text[ russian ] = "Ïàíåëü ôóíêöèé";
+ Text[ polish ] = "Pasek funkcji";
+ Text[ japanese ] = "̧ݸ¼®ÝÊÞ°";
+ Text[ chinese_traditional ] = "¤u¨ã¦C";
+ Text[ arabic ] = "ÔÑíØ ÇáãåÇã";
+ Text[ greek ] = "ÃñáììÞ ëåéôïõñãéþí";
+ Text[ korean ] = "ÇÔ¼ö ¸ðÀ½";
+ Text[ turkish ] = "Ýþlev çubuðu";
+ Text[ language_user1 ] = " ";
+};
+
+ToolBox RID_OBJECTBAR_APP
+{
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ Customize = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ LineSpacing = TRUE ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ MenuStrings = TRUE ;
+ Scroll = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_NEWDOCDIRECT ;
+ HelpID = SID_NEWDOCDIRECT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_OPENDOC ;
+ HelpID = SID_OPENDOC ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_SAVEDOC ;
+ HelpID = SID_SAVEDOC ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_PRINTDOCDIRECT
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_CUT ;
+ HelpID = SID_CUT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_COPY ;
+ HelpID = SID_COPY ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_PASTE ;
+ HelpID = SID_PASTE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_UNDO ;
+ HelpID = SID_UNDO ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_REDO ;
+ HelpID = SID_REDO ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_INSERT_FRAME
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_INSERT_GRAPHIC
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_IMPORT_DATA ;
+ HelpId = SID_IMPORT_DATA ;
+ };
+ ToolBoxItem
+ {
+ // mit Aufziehen des Zielbereichs
+ ITEM_TOOLBAR_DRAW_CHART
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_INSERT_DRAW
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_GALLERY ;
+ HelpID = SID_GALLERY ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_CHOOSE_CONTROLS
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_STYLE_DESIGNER ;
+ HelpId = SID_STYLE_DESIGNER ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_AUTOFORMAT ;
+ HelpID = SID_AUTOFORMAT ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SORT_ASCENDING
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SORT_DESCENDING
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_AUTO_FILTER
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_OUTLINE_MAKE
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_OUTLINE_REMOVE
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_NAVIGATOR ;
+ HelpId = SID_SC_NAVIGATOR ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_EXTENDEDHELP ;
+ HelpID = SID_EXTENDEDHELP ;
+ };
+ };
+};
+
+ //-----------------------------------------------------------------------------
+ // PlugIn-Toolbar
+ // (mit Aenderungen aus RID_OBJECTBAR_APP kopiert)
+ // nicht Closeable / Customize
+ //-----------------------------------------------------------------------------
+
+String RID_PLUGINTOOLBOX
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Funktionsleiste für PlugIns : Funktionsleiste f³r PlugIns */
+ Text = "Funktionsleiste für PlugIns" ;
+ Text [ english ] = "PlugIn Function Bar" ;
+ Text [ dutch ] = "Functiebalk voor PlugIns" ;
+ Text [ english_us ] = "Function Bar for Plug-Ins" ;
+ Text [ italian ] = "Barra delle funzioni per PlugIn" ;
+ Text [ spanish ] = "Barra de funciones para Plug-ins" ;
+ Text [ french ] = "Barre de fonctions Plug-Ins" ;
+ Text [ swedish ] = "Funktionslist för PlugIns" ;
+ Text [ danish ] = "Funktionslinje for PlugIns" ;
+ Text [ portuguese ] = "Barra para Plugins" ;
+ Text [ portuguese_brazilian ] = "Funktionsleiste für PlugIns" ;
+ Text[ chinese_simplified ] = "Plug-In ¹¦ÄÜÀ¸";
+ Text[ russian ] = "Ïàíåëü ôóíêöèé äëÿ Plug-Ins";
+ Text[ polish ] = "Pasek funkcji dla dodatków PlugIn";
+ Text[ japanese ] = "Ìß׸޲ݗp̧ݸ¼®ÝÊÞ°";
+ Text[ chinese_traditional ] = "Plug-In ¥\\¯à¦C";
+ Text[ arabic ] = "ÔÑíØ æÙíÝÉ Plug-Ins";
+ Text[ greek ] = "ÃñáììÞ ëåéôïõñãéþí ãéá Plug-Ins";
+ Text[ korean ] = "Ç÷¯±×ÀÎÀ» À§ÇÑ ±â´É ¸ðÀ½";
+ Text[ turkish ] = "PlugIn iþlev çubuðu";
+ Text[ language_user1 ] = " ";
+};
+
+ToolBox RID_PLUGINTOOLBOX
+{
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ // Closeable = TRUE; // hier nicht !
+ Zoomable = TRUE ;
+ // Customize = TRUE; // hier nicht !
+ HideWhenDeactivate = TRUE ;
+ LineSpacing = TRUE ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ MenuStrings = TRUE ;
+ Scroll = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_SAVEDOC ;
+ HelpID = SID_SAVEDOC ;
+ };
+ ToolBoxItem
+ {
+ ITEM_FILE_SAVEASDOC
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_MAIL_SENDDOC ;
+ HelpID = SID_MAIL_SENDDOC ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_DOCINFO ;
+ HelpID = SID_DOCINFO ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_PRINTDOCDIRECT
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_CUT ;
+ HelpID = SID_CUT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_COPY ;
+ HelpID = SID_COPY ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_PASTE ;
+ HelpID = SID_PASTE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_UNDO ;
+ HelpID = SID_UNDO ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_REDO ;
+ HelpID = SID_REDO ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_INSERT_FRAME
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_INSERT_GRAPHIC
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SPELLING
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_INSERT_DRAW
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_GALLERY ;
+ HelpID = SID_GALLERY ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_CHOOSE_CONTROLS
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_STYLE_DESIGNER ;
+ HelpId = SID_STYLE_DESIGNER ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_AUTOFORMAT ;
+ HelpID = SID_AUTOFORMAT ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SORT_ASCENDING
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SORT_DESCENDING
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_AUTO_FILTER
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_OUTLINE_MAKE
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_OUTLINE_REMOVE
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_NAVIGATOR ;
+ HelpID = SID_NAVIGATOR ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_SCOPTIONS ;
+ HelpId = SID_SCOPTIONS ;
+ };
+ };
+};
+
+
+String RID_OBJECTBAR_FORMAT
+{
+ Text = "Tabellenobjektleiste" ;
+ Text [ english ] = "Table Object Bar" ;
+ Text [ norwegian ] = "Object Bar" ;
+ Text [ italian ] = "Barra degli oggetti per tabelle" ;
+ Text [ portuguese_brazilian ] = "Object Bar" ;
+ Text [ portuguese ] = "Barra de objectos da folha de cálculo" ;
+ Text [ french ] = "Barre d'objets de classeur" ;
+ Text [ dutch ] = "Werkbladobjectbalk" ;
+ Text [ spanish ] = "Barra de objetos para tablas" ;
+ Text [ danish ] = "Regnearksobjektlinje" ;
+ Text [ swedish ] = "Tabellobjektlist" ;
+ Text [ finnish ] = "Object Bar" ;
+ Text [ english_us ] = "Spreadsheet Object Bar" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í¶ÔÏóÀ¸";
+ Text[ russian ] = "Ïàíåëü îáúåêòà ëèñòà";
+ Text[ polish ] = "Pasek obiektów arkusza kalkulacyjnego.";
+ Text[ japanese ] = "•\\µÌÞ¼Þª¸ÄÊÞ°";
+ Text[ chinese_traditional ] = "¤u§@ªíª«¥ó¦C";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ ÇáÌÏÇæá";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí ðéíÜêùí";
+ Text[ korean ] = "½ºÇÁ·¹µå½ÃÆ® °³Ã¼¸ðÀ½";
+ Text[ turkish ] = "Tablo nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+
+ToolBox RID_OBJECTBAR_FORMAT
+{
+ HelpId = HID_SC_TOOLBOX_TABLE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ Customize = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ LineSpacing = TRUE ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Align = BOXALIGN_TOP ;
+ MenuStrings = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_TEMPLATE_APPLY
+ Hide=TRUE;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_FONT ;
+ HelpID = SID_ATTR_CHAR_FONT ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_FONTHEIGHT ;
+ HelpID = SID_ATTR_CHAR_FONTHEIGHT ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_WEIGHT ;
+ HelpID = SID_ATTR_CHAR_WEIGHT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_POSTURE ;
+ HelpID = SID_ATTR_CHAR_POSTURE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ATTR_CHAR_UNDERLINE ;
+ HelpID = SID_ATTR_CHAR_UNDERLINE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ULINE_VAL_DOUBLE;
+ HelpId = SID_ULINE_VAL_DOUBLE;
+ Hide=TRUE;
+ };
+
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_ATTR_CHAR_COLOR
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ALIGNLEFT ;
+ HelpId = SID_ALIGNLEFT ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ALIGNCENTERHOR ;
+ HelpId = SID_ALIGNCENTERHOR ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ALIGNRIGHT ;
+ HelpId = SID_ALIGNRIGHT ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ALIGNBLOCK ;
+ HelpId = SID_ALIGNBLOCK ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_NUMBER_CURRENCY ;
+ HelpId = SID_NUMBER_CURRENCY ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_NUMBER_PERCENT ;
+ HelpId = SID_NUMBER_PERCENT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_NUMBER_DATE;
+ HelpId = SID_NUMBER_DATE ;
+ Hide=TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_NUMBER_SCIENTIFIC ;
+ HelpId = SID_NUMBER_SCIENTIFIC;
+ Hide=TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_NUMBER_STANDARD ;
+ HelpId = SID_NUMBER_STANDARD ;
+ };
+
+ ToolBoxItem
+ {
+ Identifier = SID_NUMBER_INCDEC ;
+ HelpId = SID_NUMBER_INCDEC ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_NUMBER_DECDEC ;
+ HelpId = SID_NUMBER_DECDEC ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_DEC_INDENT ;
+ HelpId = SID_DEC_INDENT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_INC_INDENT ;
+ HelpId = SID_INC_INDENT ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ // Border: nur noch einfach
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_ATTR_BORDER
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FRAME_LINESTYLE;
+ HelpId = SID_FRAME_LINESTYLE;
+ Hide=TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FRAME_LINECOLOR;
+ HelpId = SID_FRAME_LINECOLOR;
+ Hide=TRUE;
+ };
+ // Hintergrund: nur noch einfach
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_BACKGROUND_COLOR
+ };
+
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_ALIGNTOP ;
+ HelpId = SID_ALIGNTOP ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ALIGNCENTERVER ;
+ HelpId = SID_ALIGNCENTERVER ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ALIGNBOTTOM ;
+ HelpId = SID_ALIGNBOTTOM ;
+ RadioCheck = TRUE ;
+ AutoCheck = TRUE ;
+ };
+ };
+ Scroll = TRUE ;
+};
+
+String RID_OBJECTBAR_PREVIEW
+{
+ Text = "Seitenansichtobjektleiste" ;
+ Text [ english ] = "Page Preview Object Bar" ;
+ Text [ norwegian ] = "Forhåndsvisning av side" ;
+ Text [ italian ] = "Barra degli oggetti dell'anteprima stampa" ;
+ Text [ portuguese_brazilian ] = "Examinar Página" ;
+ Text [ portuguese ] = "Previsualização" ;
+ Text [ finnish ] = "Page Preview" ;
+ Text [ danish ] = "Vis udskrift objektlinje" ;
+ Text [ french ] = "Barre d'objets d'aperçu" ;
+ Text [ swedish ] = "Förhandsgranskningobjektlist" ;
+ Text [ dutch ] = "Afdrukvoorbeeld" ;
+ Text [ spanish ] = "Barra de vista preliminar" ;
+ Text [ english_us ] = "Page Preview Object Bar" ;
+ Text[ chinese_simplified ] = "Ò³Ãæ¶ÔÏóÀ¸";
+ Text[ russian ] = "Ïàíåëü îáúåêòîâ ïðîñìîòðà ñòðàíèöû";
+ Text[ polish ] = "Pasek obiektów podgl¹du strony";
+ Text[ japanese ] = "ÌßÚËÞ­°µÌÞ¼Þª¸ÄÊÞ°";
+ Text[ chinese_traditional ] = "­¶­±À˵øª«¥ó¦C";
+ Text[ arabic ] = "ÔÑíØ ßÇÆäÇÊ ãÚÇíäÉ ÇáÕÝÍÉ";
+ Text[ greek ] = "ÃñáììÞ áíôéêåéìÝíùí ðñïåðéóêüðçóçò óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö ¹Ì¸®º¸±â °³Ã¼ ¸ðÀ½";
+ Text[ turkish ] = "Sayfa önizleme nesne çubuðu";
+ Text[ language_user1 ] = " ";
+};
+
+ToolBox RID_OBJECTBAR_PREVIEW
+{
+ HelpId = HID_SC_TOOLBOX_PREVIEW ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ Customize = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ LineSpacing = TRUE ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Align = BOXALIGN_TOP ;
+ MenuStrings = TRUE ;
+ Scroll = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_PREVIEW_PREVIOUS ;
+ HelpId = SID_PREVIEW_PREVIOUS ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_PREVIEW_NEXT ;
+ HelpId = SID_PREVIEW_NEXT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_PREVIEW_FIRST ;
+ HelpId = SID_PREVIEW_FIRST ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_PREVIEW_LAST ;
+ HelpId = SID_PREVIEW_LAST ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_PREVIEW_ZOOMIN ;
+ HelpId = SID_PREVIEW_ZOOMIN ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_PREVIEW_ZOOMOUT ;
+ HelpId = SID_PREVIEW_ZOOMOUT ;
+ };
+ //! Ganzer Bildschirm nicht auf dem Mac?
+ ToolBoxItem
+ {
+ Identifier = SID_WIN_FULLSCREEN ;
+ HelpID = SID_WIN_FULLSCREEN ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_FORMATPAGE ;
+ HelpId = SID_FORMATPAGE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_HFEDIT;
+ HelpID = SID_HFEDIT;
+ Hide=TRUE;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ // Identifier = SID_CLOSEWIN ;
+ // HelpID = SID_CLOSEWIN ;
+ Identifier = SID_PRINTPREVIEW ;
+ HelpID = SID_PRINTPREVIEW ;
+ };
+ };
+};
+
+ // --------------------------------------------------------------------
+ // Werkzeugleiste
+ // --------------------------------------------------------------------
+
+String RID_OBJECTBAR_TOOLS
+{
+ Text = "Werkzeugleiste" ;
+ Text [ english ] = "Toolbar" ;
+ Text [ dutch ] = "Werktuigbalk" ;
+ Text [ english_us ] = "Main Toolbar" ;
+ Text [ italian ] = "Barra degli strumenti" ;
+ Text [ spanish ] = "Barra de herramientas" ;
+ Text [ french ] = "Barre d'instruments" ;
+ Text [ swedish ] = "Verktygslist" ;
+ Text [ danish ] = "Værktøjslinje" ;
+ Text [ portuguese ] = "Barra de ferramentas" ;
+ Text [ portuguese_brazilian ] = "Werkzeugleiste" ;
+ Text[ chinese_simplified ] = "Ö÷¹¤¾ßÀ¸";
+ Text[ russian ] = "Ïàíåëü èíñòðóìåíòîâ";
+ Text[ polish ] = "Pasek narzêdziowy";
+ Text[ japanese ] = "•W€Â°ÙÊÞ°";
+ Text[ chinese_traditional ] = "¥D¤u¨ã¦C";
+ Text[ arabic ] = "ÔÑíØ ÇáÃÏæÇÊ";
+ Text[ greek ] = "ÃñáììÞ åñãáëåßùí";
+ Text[ korean ] = "ÁÖ µµ±¸¸ðÀ½";
+ Text[ turkish ] = "Ana araç çubuðu";
+ Text[ language_user1 ] = " ";
+};
+
+ToolBox RID_OBJECTBAR_TOOLS
+{
+ HelpId = HID_SC_TOOLBOX_TOOLS ;
+ LineSpacing = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ Scroll = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Customize = TRUE ;
+ Size = MAP_APPFONT ( 0 , 0 ) ;
+ Align = BOXALIGN_LEFT ;
+ MenuStrings = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ DropDown = TRUE ;
+ Identifier = SID_TBXCTL_INSERT ;
+ HelpID = SID_TBXCTL_INSERT ;
+ };
+ ToolBoxItem
+ {
+ DropDown = TRUE ;
+ Identifier = SID_TBXCTL_INSCELLS ;
+ HelpID = SID_TBXCTL_INSCELLS ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_TBXCTL_INSOBJ ;
+ HelpID = SID_TBXCTL_INSOBJ ;
+ DropDown = TRUE ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_INSERT_DRAW
+ };
+ ToolBoxItem
+ {
+ ITEM_FORM_CONFIG
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = SID_AUTOFORMAT ;
+ HelpID = SID_AUTOFORMAT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_CHOOSE_DESIGN ;
+ HelpID = SID_CHOOSE_DESIGN ;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SPELLING
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_AUTOSPELL_CHECK
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_THESAURUS
+ Hide=TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_SEARCH_DLG ;
+ HelpID = SID_SEARCH_DLG ;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_AUTO_FILTER
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_FILTER
+ Hide=TRUE;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SPECIAL_FILTER
+ Hide=TRUE;
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SORT_ASCENDING
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_SORT_DESCENDING
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_OPENDLG_PIVOTTABLE;
+ HelpId = SID_OPENDLG_PIVOTTABLE;
+ Hide=TRUE;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_EURO_CONVERTER ;
+ HelpID = SID_EURO_CONVERTER ;
+ Hide=TRUE;
+ };
+ //--------------------------------------------------------------------
+ ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+ //--------------------------------------------------------------------
+ ToolBoxItem
+ {
+ Identifier = FID_DEFINE_NAME ;
+ HelpId = FID_DEFINE_NAME ;
+ Hide=TRUE;
+ };
+
+ ToolBoxItem
+ {
+ Identifier = SID_OPENDLG_SOLVE;
+ HelpId = SID_OPENDLG_SOLVE;
+ Hide=TRUE;
+ };
+
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_OUTLINE_MAKE
+ };
+ ToolBoxItem
+ {
+ ITEM_TOOLBAR_OUTLINE_REMOVE
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_HYPERLINK_INSERT ;
+ HelpID = SID_HYPERLINK_INSERT ;
+ };
+ };
+};
+
+ // --------------------------------------------------------------------
+ // PopUp's fuer Werkzeugleiste
+ // --------------------------------------------------------------------
+
+FloatingWindow RID_TBXCTL_INSERT
+{
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpID = RID_TBXCTL_INSERT ;
+ /* ### ACHTUNG: Neuer Text in Resource? Einfügen : Einf³gen */
+ Text = "Einfügen" ;
+ Text [ english ] = "Insert" ;
+ Text [ dutch ] = "Invoegen" ;
+ Text [ english_us ] = "Insert" ;
+ Text [ italian ] = "Inserisci" ;
+ Text [ spanish ] = "Insertar" ;
+ Text [ french ] = "Insérer" ;
+ Text [ swedish ] = "Infoga" ;
+ Text [ danish ] = "Indsæt" ;
+ Text [ portuguese ] = "Inserir" ;
+ Text [ portuguese_brazilian ] = "Einfügen" ;
+ Text[ chinese_simplified ] = "²åÈë";
+ Text[ russian ] = "Âñòàâèòü";
+ Text[ polish ] = "Wstaw";
+ Text[ japanese ] = "‘}“ü";
+
+ ToolBox RID_TOOLBOX_INSERT
+ {
+ MenuStrings = TRUE ;
+ SVLook = TRUE ;
+ HelpID = RID_TOOLBOX_INSERT ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_INSERT_GRAPHIC ;
+ HelpID = SID_INSERT_GRAPHIC ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_CHARMAP ;
+ HelpId = SID_CHARMAP ;
+ };
+ };
+ };
+ Text[ chinese_traditional ] = "´¡¤J";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ greek ] = "ÅéóáãùãÞ";
+ Text[ korean ] = "»ðÀÔ";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+};
+
+FloatingWindow RID_TBXCTL_INSCELLS
+{
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+ HelpID = RID_TBXCTL_INSCELLS ;
+ /* ### ACHTUNG: Neuer Text in Resource? Zellen einfügen : Zellen einf³gen */
+ Text = "Zellen einfügen" ;
+ Text [ english ] = "Insert cells" ;
+ Text [ english_us ] = "Insert Cells" ;
+ Text [ italian ] = "Inserisci celle" ;
+ Text [ spanish ] = "Insertar celdas" ;
+ Text [ french ] = "Insérer des cellules" ;
+ Text [ dutch ] = "Cellen invoegen" ;
+ Text [ swedish ] = "Infoga celler" ;
+ Text [ danish ] = "Indsæt celler" ;
+ Text [ portuguese_brazilian ] = "Zellen einfügen" ;
+ Text [ portuguese ] = "Inserir células" ;
+ Text[ chinese_simplified ] = "²åÈëµ¥Ôª¸ñ";
+ Text[ russian ] = "Âñòàâèòü ÿ÷åéêè";
+ Text[ polish ] = "Wstaw komórki";
+ Text[ japanese ] = "¾Ù‚ð‘}“ü";
+
+ ToolBox RID_TOOLBOX_INSCELLS
+ {
+ MenuStrings = TRUE ;
+ SVLook = TRUE ;
+ HelpID = RID_TOOLBOX_INSCELLS ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = FID_INS_CELLSDOWN ;
+ HelpId = FID_INS_CELLSDOWN ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FID_INS_CELLSRIGHT ;
+ HelpId = FID_INS_CELLSRIGHT ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FID_INS_ROW ;
+ HelpId = FID_INS_ROW ;
+ };
+ ToolBoxItem
+ {
+ Identifier = FID_INS_COLUMN ;
+ HelpId = FID_INS_COLUMN ;
+ };
+ };
+ };
+ Text[ chinese_traditional ] = "´¡¤JÀx¦s®æ";
+ Text[ arabic ] = "ÅÏÑÇÌ ÎáÇíÇ";
+ Text[ greek ] = "ÐñïóèÞêç êåëéþí";
+ Text[ korean ] = "¼¿ »ðÀÔ";
+ Text[ turkish ] = "Hücre ekle";
+ Text[ language_user1 ] = " ";
+};
+
+FloatingWindow RID_TBXCTL_INSOBJ
+{
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE ;
+ SVLook = TRUE;
+ HelpID = RID_TBXCTL_INSOBJ ;
+ /* ### ACHTUNG: Neuer Text in Resource? Objekt einfügen : Objekt einf³gen */
+ Text = "Objekt einfügen" ;
+ Text [ english ] = "Insert object" ;
+ Text [ dutch ] = "Object invoegen" ;
+ Text [ english_us ] = "Insert Object" ;
+ Text [ italian ] = "Inserisci oggetto" ;
+ Text [ spanish ] = "Insertar objeto" ;
+ Text [ french ] = "Insérer un objet" ;
+ Text [ swedish ] = "Infoga objekt" ;
+ Text [ danish ] = "Indsæt objekt" ;
+ ToolBox RID_TOOLBOX_INSOBJ
+ {
+ MenuStrings = TRUE ;
+ SVLook = TRUE ;
+ HelpID = RID_TOOLBOX_INSOBJ ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ // mit Aufziehen des Zielbereichs
+ ITEM_TOOLBAR_DRAW_CHART
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_INSERT_SIMAGE ;
+ HelpId = SID_INSERT_SIMAGE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_INSERT_SMATH ;
+ HelpId = SID_INSERT_SMATH ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_INSERT_FLOATINGFRAME ;
+ HelpID = SID_INSERT_FLOATINGFRAME ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_INSERT_OBJECT ;
+ HelpId = SID_INSERT_OBJECT ;
+ };
+#ifdef SOLAR_PLUGIN
+ ToolBoxItem
+ {
+ Identifier = SID_INSERT_PLUGIN ;
+ HelpId = SID_INSERT_PLUGIN ;
+ };
+#endif
+#ifdef SOLAR_JAVA
+ ToolBoxItem
+ {
+ Identifier = SID_INSERT_APPLET ;
+ HelpId = SID_INSERT_APPLET ;
+ };
+#endif
+ };
+ };
+ Text [ portuguese ] = "Inserir objecto" ;
+ Text [ portuguese_brazilian ] = "Objekt einfügen" ;
+ Text[ chinese_simplified ] = "²åÈë¶ÔÏó";
+ Text[ russian ] = "Âñòàâèòü îáúåêò";
+ Text[ polish ] = "Wstaw obiekt";
+ Text[ japanese ] = "µÌÞ¼Þª¸Ä‚Ì‘}“ü";
+ Text[ chinese_traditional ] = "´¡¤Jª«¥ó";
+ Text[ arabic ] = "ÅÏÑÇÌ ßÇÆä";
+ Text[ greek ] = "ÅéóáãùãÞ áíôéêåéìÝíïõ";
+ Text[ korean ] = "°³Ã¼ »ðÀÔ";
+ Text[ turkish ] = "Nesne ekle";
+ Text[ language_user1 ] = " ";
+};
+
+ // Image-Liste fuer ToolBoxen -----------------------------------------------
+
+/* Die gibt es noch nicht (13.10.95):
+ SID_CLOSEDOC_SAVE;
+ SID_DOCMANAGER;
+ SID_DOCINFO;
+ SID_DOCTEMPLATE;
+ SID_ORGANIZER;
+ SID_WRITE_REGFILE;
+ SID_STYLECATALOG;
+ SID_STYLE_CATALOG;
+ SID_ABOUT;
+ SID_MAIL_NOTIFY;
+ SID_MAIL_INBOX;
+ SID_MAIL_SENDDOC;
+ SID_ARRANGEICONS;
+ SID_HORIZONTALWINS;
+ SID_VERTICALWINS;
+ SID_CASCADEWINS;
+ SID_TILEWINS;
+ SID_CLOSEWINS;
+ SID_WIN_MINIMIZED;
+ SID_NEWWINDOW;
+ SID_CLOSEWIN;
+ SID_OPTIMIZEWIN;
+ SID_UPDATECHART;
+ SID_LINKS;
+ SID_MIRROR_VERTICAL;
+ SID_MIRROR_HORIZONTAL;
+ SID_THESAURUS;
+ SID_SEARCH_DLG;
+ SID_HELP_PI;
+
+ Die Office-weite ImageListe sollte zentral zur Verfuegung gestellt
+ werden. Die folgende RID_OFFICEIMAGELIST_xx sorgt nur dafuer, dass
+ im Anpassen/Symbolleiste-Dialog ein paar Bimaps mehr erscheinen :-/
+*/
+
+
+
+
+
+#define OFFICE_IDLIST \
+ IdList = { \
+ SID_NEWDOC; \
+ SID_SAVEASDOC; \
+ SID_PRINTDOC; \
+ SID_CLOSEDOC; \
+ SID_RELOAD; \
+ SID_SETUPPRINTER; \
+ SID_QUITAPP; \
+ SID_PLAYMACRO; \
+ SID_EDITMACRO; \
+ SID_OBJECT_ALIGN_CENTER; \
+ SID_OBJECT_ALIGN_DOWN; \
+ SID_OBJECT_ALIGN_LEFT; \
+ SID_OBJECT_ALIGN_MIDDLE; \
+ SID_OBJECT_ALIGN_RIGHT; \
+ SID_OBJECT_ALIGN_UP; \
+ }; \
+ IdCount = { \
+ 15; \
+ };
+
+#define DEFAULT_IDLIST \
+ IdList = { \
+ /* RID_OBJECTBAR_APP */ \
+ SID_NEWDOCDIRECT; /* 5537 */ \
+ SID_OPENDOC; /* 5501 */ \
+ SID_SAVEDOC; /* 5505 */ \
+ SID_PRINTDOCDIRECT; /* 5509 */ \
+ SID_CUT; /* 5710 */ \
+ SID_COPY; /* 5711 */ \
+ SID_PASTE; /* 5712 */ \
+ SID_UNDO; /* 5701 */ \
+ SID_REDO; /* 5700 */ \
+ SID_INSERT_FRAME; /* 10240 */ \
+ SID_INSERT_GRAPHIC; /* 10241 */ \
+ SID_IMPORT_DATA; /* 20335 */ \
+ SID_DRAW_CHART; /* 20155 */ \
+ SID_INSERT_DRAW; /* 10244 */ \
+ SID_STYLE_DESIGNER; /* 5539 */ \
+ SID_GALLERY; /* 5960 */ \
+ SID_CHOOSE_CONTROLS; /* 10144 */ \
+ SID_AUTOFORMAT; /* 10242 */ \
+ SID_SORT_ASCENDING; /* 20344 */ \
+ SID_SORT_DESCENDING; /* 20343 */ \
+ SID_AUTO_FILTER; /* 20325 */ \
+ SID_OUTLINE_MAKE; /* 20331 */ \
+ SID_OUTLINE_REMOVE; /* 20332 */ \
+ SID_SPELLING; /* 10243 */ \
+ SID_THESAURUS; \
+ SID_EXTENDEDHELP; /* 5402 */ \
+/*27*/ SID_RECORDMACRO; /* xxx */ \
+ SID_FILTER; \
+ SID_SPECIAL_FILTER; \
+ FID_DEFINE_NAME; \
+ SID_OPENDLG_SOLVE; \
+ SID_OPENDLG_PIVOTTABLE; \
+ \
+ /* RID_OBJECTBAR_FORMAT */ \
+ SID_STYLE_APPLY; /* 5552 */ \
+ SID_ATTR_CHAR_FONT; /* 10007 */ \
+ SID_ATTR_CHAR_FONTHEIGHT; /* 10015 */ \
+ SID_ATTR_CHAR_WEIGHT; /* 10009 */ \
+ SID_ATTR_CHAR_POSTURE; /* 10008 */ \
+ SID_ATTR_CHAR_UNDERLINE; /* 10014 */ \
+ SID_ULINE_VAL_DOUBLE; \
+ SID_ATTR_CHAR_COLOR; /* 10017 */ \
+ SID_ALIGNLEFT; /* 20371 */ \
+ SID_ALIGNCENTERHOR; /* 20373 */ \
+ SID_ALIGNRIGHT; /* 20372 */ \
+ SID_ALIGNBLOCK; /* 20374 */ \
+ SID_ALIGNTOP; /* 20375 */ \
+ SID_ALIGNCENTERVER; /* 20377 */ \
+ SID_ALIGNBOTTOM; /* 20376 */ \
+ SID_NUMBER_CURRENCY; /* 20045 */ \
+ SID_NUMBER_PERCENT; /* 20046 */ \
+ SID_NUMBER_DATE; \
+ SID_NUMBER_SCIENTIFIC; \
+ FID_COL_OPT_DIRECT; \
+ SID_ATTR_BORDER; /* 10187 */ \
+ SID_FRAME_LINESTYLE; /* 10200 */ \
+ SID_FRAME_LINECOLOR; /* 10201 */ \
+ SID_BACKGROUND_COLOR; /* 10185 */ \
+/*22*/ SID_BACKGROUND_PATTERN; /* 10186 */ \
+ \
+ /* RID_DRAW_OBJECTBAR */ \
+ SID_ATTRIBUTES_LINE; /* 10143 */ \
+ SID_ATTR_LINEEND_STYLE; \
+ SID_ATTR_LINE_STYLE; /* 10169 */ \
+ SID_ATTR_LINE_WIDTH; /* 10171 */ \
+ SID_ATTR_LINE_COLOR; /* 10172 */ \
+ SID_ATTRIBUTES_AREA; /* 10142 */ \
+ SID_ATTR_FILL_STYLE; /* 10164 */ \
+ SID_OBJECT_ROTATE; /* 10129 */ \
+ SID_BEZIER_EDIT; /* 10126 */ \
+ SID_OBJECT_ALIGN; /* 10130 */ \
+ SID_FRAME_TO_TOP; /* 10286 */ \
+ SID_FRAME_TO_BOTTOM; /* 10287 */ \
+ SID_OBJECT_HEAVEN; /* 10283 */ \
+ SID_OBJECT_HELL; /* 10282 */ \
+/*16*/ SID_ANCHOR_TOGGLE; /* XXX */ \
+ \
+ /* RID_TEXT_TOOLBOX */ \
+ SID_ATTR_PARA_LINESPACE_10; /* 10034 */ \
+ SID_ATTR_PARA_LINESPACE_15; /* 10035 */ \
+ SID_ATTR_PARA_LINESPACE_20; /* 10036 */ \
+ SID_ATTR_PARA_ADJUST_LEFT; /* 10028 */ \
+ SID_ATTR_PARA_ADJUST_CENTER; /* 10030 */ \
+ SID_ATTR_PARA_ADJUST_RIGHT; /* 10029 */ \
+ SID_ATTR_PARA_ADJUST_BLOCK; /* 10031 */ \
+ SID_SET_SUPER_SCRIPT; /* xxxx */ \
+ SID_SET_SUB_SCRIPT; /* xxxx */ \
+ SID_CHAR_DLG; /* xxxx */ \
+/*12*/ SID_PARA_DLG; /* xxxx */ \
+ \
+ /* BASIC-IDE */ \
+ SID_BASICLOAD; /* 5951 */ \
+ SID_BASICSAVEAS; /* 5953 */ \
+ SID_BASICCOMPILE; /* 5954 */ \
+ SID_BASICRUN; /* 5955 */ \
+ SID_BASICSTEPINTO; /* 5956 */ \
+ SID_BASICSTEPOVER; /* 5957 */ \
+ SID_BASICSTOP; /* 5958 */ \
+ SID_BASICIDE_TOGGLEBRKPNT; /* 30768 */ \
+ SID_BASICIDE_ADDWATCH; /* 30769 */ \
+ SID_BASICIDE_MODULEDLG; /* 30773 */ \
+/*12*/ SID_BASICIDE_OBJCAT; /* 30774 */ \
+ \
+ /* RID_OBJECTBAR_PREVIEW */ \
+ SID_PREVIEW_PREVIOUS; /* 20497 */ \
+ SID_PREVIEW_NEXT; /* 20496 */ \
+ SID_PREVIEW_FIRST; /* 20498 */ \
+ SID_PREVIEW_LAST; /* 20499 */ \
+ SID_PREVIEW_ZOOMIN; /* 20501 */ \
+ SID_PREVIEW_ZOOMOUT; /* 20502 */ \
+ SID_WIN_FULLSCREEN; /* 5627 */ \
+ SID_FORMATPAGE; /* 20295 */ \
+/*10*/ SID_NAVIGATOR; /* */ \
+ \
+ /* Eingabezeile */ \
+ SID_INPUT_FUNCTION; /* 20047 */ \
+ SID_INPUT_SUM; /* 20048 */ \
+ SID_INPUT_EQUAL; /* 20049 */ \
+ SID_INPUT_CANCEL; /* 20050 */ \
+/*5*/ SID_INPUT_OK; /* 20051 */ \
+ SID_SCOPTIONS; /* 20309 */ \
+ SID_SAVEASDOC; /**/ \
+ SID_MAIL_SENDDOC; /**/ \
+ SID_DOCINFO; /**/ \
+ SID_NEWDOC; \
+ /*SID_SAVEASDOC; */ \
+ SID_PRINTDOC; \
+ SID_CLOSEDOC; \
+ SID_RELOAD; \
+ SID_SETUPPRINTER; \
+ SID_QUITAPP; \
+ SID_EDITMACRO; \
+ SID_OBJECT_ALIGN_CENTER; \
+ SID_OBJECT_ALIGN_DOWN; \
+ SID_OBJECT_ALIGN_LEFT; \
+ SID_OBJECT_ALIGN_MIDDLE; \
+ SID_OBJECT_ALIGN_RIGHT; \
+ SID_OBJECT_ALIGN_UP; \
+ SID_BASICCHOOSER; \
+ SID_HYPERLINK_INSERT; /* 10360 */ \
+ SID_TBXCTL_INSERT; /* 26626 */ \
+ SID_TBXCTL_INSCELLS; /* 26627 */ \
+ SID_TBXCTL_INSOBJ; /* 26628 */ \
+ FID_INS_CELLSDOWN; /* 26278 */ \
+ FID_INS_CELLSRIGHT; /* 26279 */ \
+ FID_INS_ROW; /* 26267 */ \
+ FID_INS_COLUMN; /* 26268 */ \
+ SID_CHARMAP; /* 10503 (20328 vom Writer) */ \
+ SID_INSERT_SIMAGE; /* 26061 */ \
+ SID_INSERT_SMATH; /* 26063 */ \
+ SID_INSERT_FLOATINGFRAME; /* 5563 */ \
+ SID_INSERT_OBJECT; /* 5561 */ \
+ SID_INSERT_PLUGIN; \
+ SID_INSERT_APPLET; \
+ SID_SEARCH_DLG; /* 5961 */ \
+ SID_AUTOSPELL_CHECK; \
+ SID_INSERT_PUSHBUTTON; \
+ SID_INSERT_CHECKBOX; \
+ SID_INSERT_FIXEDTEXT; \
+ SID_INSERT_LISTBOX; \
+ SID_INSERT_HSCROLLBAR; \
+ SID_INSERT_GROUPBOX; \
+ SID_INSERT_URLBUTTON; \
+ SID_INSERT_SPINBUTTON; \
+ SID_INSERT_RADIOBUTTON; \
+ SID_INSERT_EDIT; \
+ SID_INSERT_COMBOBOX; \
+ SID_INSERT_VSCROLLBAR; \
+ SID_INSERT_PREVIEW; \
+ SID_OBJECT_SELECT; \
+ SID_DEC_INDENT; \
+ SID_INC_INDENT; \
+ SID_DRAW_TEXT; \
+ SID_DRAW_CAPTION; \
+ SID_NUMBER_INCDEC; \
+ SID_NUMBER_DECDEC; \
+ SID_NUMBER_STANDARD; \
+ SID_HFEDIT;\
+ SID_CHOOSE_DESIGN;\
+ SID_EURO_CONVERTER;\
+ }; \
+ IdCount = { \
+ 181; \
+ };
+
+ImageList RID_DEFAULTIMAGELIST_SC
+{
+ ImageBitmap = Bitmap
+ {
+ File = "sc_out.bmp" ;
+ File [ english ] = "sc_out01.bmp" ;
+ File [ english_us ] = "sc_out01.bmp" ;
+ File [ dutch ] = "sc_out31.bmp" ;
+ File [ french ] = "sc_out33.bmp" ;
+ File [ spanish ] = "sc_out34.bmp" ;
+ File [ italian ] = "sc_out39.bmp" ;
+ File [ swedish ] = "sc_out46.bmp" ;
+ File [ danish ] = "sc_out45.bmp" ;
+ File [ russian ] = "sc_out07.bmp" ;
+ File [ polish ] = "sc_out48.bmp" ;
+ File [ greek ] = "sc_out30.bmp" ;
+ File [ japanese ] = "sc_out81.bmp" ;
+ File [ portuguese ] = "sc_out03.bmp" ;
+ File [ turkish ] = "sc_out90.bmp" ;
+ };
+ MaskColor = STD_MASKCOLOR ;
+ DEFAULT_IDLIST
+};
+
+ImageList RID_DEFAULTIMAGELIST_LC
+{
+ ImageBitmap = Bitmap
+ {
+ File = "lc_out.bmp" ;
+ File [ english ] = "lc_out01.bmp" ;
+ File [ english_us ] = "lc_out01.bmp" ;
+ File [ dutch ] = "lc_out31.bmp" ;
+ File [ french ] = "lc_out33.bmp" ;
+ File [ spanish ] = "lc_out34.bmp" ;
+ File [ italian ] = "lc_out39.bmp" ;
+ File [ swedish ] = "lc_out46.bmp" ;
+ File [ danish ] = "lc_out45.bmp" ;
+ File [ russian ] = "lc_out07.bmp" ;
+ File [ polish ] = "lc_out48.bmp" ;
+ File [ greek ] = "lc_out30.bmp" ;
+ File [ japanese ] = "lc_out81.bmp" ;
+ File [ portuguese ] = "lc_out03.bmp" ;
+ File [ turkish ] = "lc_out90.bmp" ;
+ };
+ MaskColor = STD_MASKCOLOR ;
+ DEFAULT_IDLIST
+};
+
+ImageList RID_OFFICEIMAGELIST_SC
+{
+ ImageBitmap = Bitmap { File = "sc_off.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ OFFICE_IDLIST
+};
+
+ImageList RID_OFFICEIMAGELIST_LC
+{
+ ImageBitmap = Bitmap { File = "lc_off.bmp" ; };
+ MaskColor = STD_MASKCOLOR ;
+ OFFICE_IDLIST
+};
+
+
+
+
+
+
diff --git a/sc/source/ui/styleui/makefile.mk b/sc/source/ui/styleui/makefile.mk
new file mode 100644
index 000000000000..12931bdaaf24
--- /dev/null
+++ b/sc/source/ui/styleui/makefile.mk
@@ -0,0 +1,98 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=styleui
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ styledlg.cxx
+
+SLOFILES = \
+ $(SLO)$/styledlg.obj \
+
+SRCFILES = \
+ scstyles.src \
+ styledlg.src
+
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/styleui/scstyles.src b/sc/source/ui/styleui/scstyles.src
new file mode 100644
index 000000000000..63bddcaaba7d
--- /dev/null
+++ b/sc/source/ui/styleui/scstyles.src
@@ -0,0 +1,144 @@
+/*************************************************************************
+ *
+ * $RCSfile: scstyles.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+#include <svtools/style.hrc>
+#define IMPL_FAMILY(family,bmp,filter) \
+ StyleFamily = family; \
+ StyleImage = Image \
+ { \
+ ImageBitmap = Bitmap { File = bmp; }; \
+ MaskColor = STD_MASKCOLOR; \
+ }; \
+ FilterList = { filter }
+
+ //------------------------------------------------------------------------
+SfxStyleFamilies DLG_STYLE_DESIGNER
+{
+ StyleFamilyList =
+ {
+ SfxStyleFamilyItem
+ {
+ IMPL_FAMILY ( SFX_STYLE_FAMILY_PARA ,
+ "scstlcel.bmp" ,
+ < STR_STYLE_FILTER_ALL ; SFXSTYLEBIT_ALL ; > ;
+ < STR_STYLE_FILTER_USED ; SFXSTYLEBIT_USED ; > ;
+ < STR_STYLE_FILTER_USERDEF ; SFXSTYLEBIT_USERDEF ; > ; ) ;
+ Text = "Zellvorlagen" ;
+ Text [ ENGLISH ] = "Cell Styles" ;
+ Text [ norwegian ] = "Celletyper" ;
+ Text [ italian ] = "Modelli di cella" ;
+ Text [ portuguese_brazilian ] = "Estilos da Célula" ;
+ Text [ portuguese ] = "Estilos de células" ;
+ Text [ finnish ] = "Solutyylit" ;
+ Text [ danish ] = "Celletypografier" ;
+ Text [ french ] = "Styles de cellule" ;
+ Text [ swedish ] = "Cellformatmallar" ;
+ Text [ dutch ] = "Celopmaakprofielen" ;
+ Text [ spanish ] = "Estilos de celda" ;
+ Text [ english_us ] = "Cell Styles" ;
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñÑùʽ";
+ Text[ russian ] = "Ñòèëè ÿ÷åéêè";
+ Text[ polish ] = "Style komórki";
+ Text[ japanese ] = "¾Ù½À²Ù";
+ Text[ chinese_traditional ] = "Àx¦s®æ¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ ÇáÎáÇíÇ";
+ Text[ dutch ] = "Celopmaakprofielen";
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñÑùʽ";
+ Text[ greek ] = "Óôõë êåëéïý";
+ Text[ korean ] = "¼¿ À¯Çü";
+ Text[ turkish ] = "Hücre biçimi";
+ Text[ language_user1 ] = " ";
+ };
+ SfxStyleFamilyItem
+ {
+ IMPL_FAMILY ( SFX_STYLE_FAMILY_PAGE ,
+ "catpag.bmp" ,
+ < STR_STYLE_FILTER_ALL ; SFXSTYLEBIT_ALL ; > ;
+ < STR_STYLE_FILTER_USERDEF ; SFXSTYLEBIT_USERDEF ; > ; ) ;
+ Text = "Seitenvorlagen" ;
+ Text [ ENGLISH ] = "Page Styles" ;
+ Text [ norwegian ] = "Sidetyper" ;
+ Text [ italian ] = "Modelli di pagina" ;
+ Text [ portuguese_brazilian ] = "Estilos da Página" ;
+ Text [ portuguese ] = "Estilos de página" ;
+ Text [ finnish ] = "Sivutyylit" ;
+ Text [ danish ] = "Sidetypografier" ;
+ Text [ french ] = "Styles de page" ;
+ Text [ swedish ] = "Sidformatmallar" ;
+ Text [ dutch ] = "Pagina-opmaakprofielen" ;
+ Text [ spanish ] = "Estilos de página" ;
+ Text [ english_us ] = "Page Styles" ;
+ Text[ chinese_simplified ] = "Ò³ÃæÑùʽ";
+ Text[ russian ] = "Ñòèëè ñòðàíèöû";
+ Text[ polish ] = "Style strony";
+ Text[ japanese ] = "Íß°¼Þ½À²Ù";
+ Text[ chinese_traditional ] = "­¶­±¼Ë¦¡";
+ Text[ arabic ] = "ÃäãÇØ ÕÝÍÉ";
+ Text[ dutch ] = "Pagina-opmaakprofielen";
+ Text[ chinese_simplified ] = "Ò³ÃæÑùʽ";
+ Text[ greek ] = "Ðñüôõðá óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö À¯Çü";
+ Text[ turkish ] = "Sayfa biçimi";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
diff --git a/sc/source/ui/styleui/styledlg.cxx b/sc/source/ui/styleui/styledlg.cxx
new file mode 100644
index 000000000000..87da067040b5
--- /dev/null
+++ b/sc/source/ui/styleui/styledlg.cxx
@@ -0,0 +1,213 @@
+/*************************************************************************
+ *
+ * $RCSfile: styledlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/align.hxx>
+#include <svx/backgrnd.hxx>
+#include <svx/border.hxx>
+#include <svx/chardlg.hxx>
+#include <svx/numfmt.hxx>
+#include <svx/page.hxx>
+#include <sfx2/objsh.hxx>
+#include <svtools/style.hxx>
+
+#include "styledlg.hxx"
+#include "tabpages.hxx" // Zellvorlagen
+#include "tphf.hxx" // Seitenvorlage: Kopf-/Fusszeilen
+#include "tptable.hxx" // Seitenvorlage: Tabelle
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "styledlg.hrc"
+
+//==================================================================
+
+ScStyleDlg::ScStyleDlg( Window* pParent,
+ SfxStyleSheetBase& rStyleBase,
+ USHORT nRscId )
+
+ : SfxStyleDialog ( pParent,
+ ScResId( nRscId ),
+ rStyleBase,
+ FALSE ),
+ nDlgRsc ( nRscId )
+{
+ switch ( nRscId )
+ {
+ case RID_SCDLG_STYLES_PAR: // Zellformatvorlagen
+ {
+ AddTabPage( TP_NUMBER, &SvxNumberFormatTabPage::Create, &SvxNumberFormatTabPage::GetRanges );
+ AddTabPage( TP_FONT, &SvxCharStdPage::Create, &SvxCharStdPage::GetRanges );
+ AddTabPage( TP_ALIGNMENT, &SvxAlignmentTabPage::Create, &SvxAlignmentTabPage::GetRanges );
+ AddTabPage( TP_BORDER, &SvxBorderTabPage::Create, &SvxBorderTabPage::GetRanges );
+ AddTabPage( TP_BACKGROUND, &SvxBackgroundTabPage::Create, &SvxBackgroundTabPage::GetRanges );
+ AddTabPage( TP_PROTECTION, &ScTabPageProtection::Create, &ScTabPageProtection::GetRanges );
+ }
+ break;
+
+ case RID_SCDLG_STYLES_PAGE: // Seitenvorlagen
+ {
+ AddTabPage( TP_PAGE_STD, &SvxPageDescPage::Create, &SvxPageDescPage::GetRanges );
+ AddTabPage( TP_BORDER, &SvxBorderTabPage::Create, &SvxBorderTabPage::GetRanges );
+ AddTabPage( TP_BACKGROUND, &SvxBackgroundTabPage::Create, &SvxBackgroundTabPage::GetRanges );
+ AddTabPage( TP_PAGE_HEADER, &ScHeaderPage::Create, &ScHeaderPage::GetRanges );
+ AddTabPage( TP_PAGE_FOOTER, &ScFooterPage::Create, &ScFooterPage::GetRanges );
+ AddTabPage( TP_TABLE, &ScTablePage::Create, &ScTablePage::GetRanges );
+ }
+ break;
+
+ default:
+ DBG_ERROR( "Family not supported" );
+ }
+
+ //--------------------------------------------------------------------
+ FreeResource();
+}
+
+// -----------------------------------------------------------------------
+
+__EXPORT ScStyleDlg::~ScStyleDlg()
+{
+}
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScStyleDlg::PageCreated( USHORT nPageId, SfxTabPage& rTabPage )
+{
+ if ( nDlgRsc == RID_SCDLG_STYLES_PAR )
+ {
+ SfxObjectShell* pDocSh = SfxObjectShell::Current();
+
+ switch ( nPageId )
+ {
+ case TP_NUMBER:
+ {
+ const SfxPoolItem* pInfoItem
+ = pDocSh->GetItem( SID_ATTR_NUMBERFORMAT_INFO );
+
+ DBG_ASSERT( pInfoItem, "NumberInfoItem nicht gefunden!" );
+
+ ((SvxNumberFormatTabPage&)rTabPage).
+ SetNumberFormatList(
+ (const SvxNumberInfoItem&)*pInfoItem ) ;
+ }
+ break;
+
+ case TP_FONT:
+ {
+ const SfxPoolItem* pInfoItem
+ = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
+
+ DBG_ASSERT( pInfoItem, "FontListItem nicht gefunden!" );
+
+ ((SvxCharStdPage&)rTabPage).
+ SetFontList(
+ (const SvxFontListItem&)*pInfoItem );
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ else if ( nDlgRsc == RID_SCDLG_STYLES_PAGE )
+ {
+ switch ( nPageId )
+ {
+ case TP_PAGE_STD:
+ ((SvxPageDescPage&)rTabPage).SetMode( SVX_PAGE_MODE_CENTER );
+ break;
+
+ case TP_PAGE_HEADER:
+ case TP_PAGE_FOOTER:
+ ((ScHFPage&)rTabPage).SetStyleDlg( this );
+ ((ScHFPage&)rTabPage).SetPageStyle( GetStyleSheet().GetName() );
+ ((ScHFPage&)rTabPage).DisableDeleteQueryBox();
+ break;
+ case TP_BACKGROUND:
+ if( nDlgRsc == RID_SCDLG_STYLES_PAGE)
+ ((SvxBackgroundTabPage&)rTabPage).ShowSelector();
+ break;
+
+ default:
+ break;
+ }
+ }
+}
+
+
+// -----------------------------------------------------------------------
+
+const SfxItemSet* __EXPORT ScStyleDlg::GetRefreshedSet()
+{
+ delete GetInputSetImpl();
+
+ return new SfxItemSet( GetStyleSheet().GetItemSet() );
+}
+
+
+
diff --git a/sc/source/ui/styleui/styledlg.src b/sc/source/ui/styleui/styledlg.src
new file mode 100644
index 000000000000..fa4dcd8f9aa4
--- /dev/null
+++ b/sc/source/ui/styleui/styledlg.src
@@ -0,0 +1,468 @@
+/*************************************************************************
+ *
+ * $RCSfile: styledlg.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include "sc.hrc"
+#include "styledlg.hrc" // -> TP_xxx
+TabDialog RID_SCDLG_STYLES_PAR
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 289 , 176 ) ;
+ Text = "Zellvorlage" ;
+ Text [ ENGLISH ] = "Cell Style" ;
+ Text [ norwegian ] = "Celletype" ;
+ Text [ italian ] = "Modello di cella" ;
+ Text [ portuguese_brazilian ] = "Cell Style" ;
+ Text [ portuguese ] = "Estilo da célula" ;
+ Text [ finnish ] = "Cell Style" ;
+ Text [ danish ] = "Celletypografi" ;
+ Text [ french ] = "Style de cellule" ;
+ Text [ swedish ] = "Cellformatmall" ;
+ Text [ dutch ] = "Celopmaakprofiel" ;
+ Text [ spanish ] = "Estilo de celda" ;
+ Text [ english_us ] = "Cell Style" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 3 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_NUMBER ;
+ Text = "Zahlen" ;
+ Text [ ENGLISH ] = "Number" ;
+ Text [ norwegian ] = "Number" ;
+ Text [ italian ] = "Numeri" ;
+ Text [ portuguese_brazilian ] = "Número" ;
+ Text [ portuguese ] = "Números" ;
+ Text [ finnish ] = "Numero" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombres" ;
+ Text [ swedish ] = "Tal" ;
+ Text [ dutch ] = "Getallen" ;
+ Text [ spanish ] = "Números" ;
+ Text [ english_us ] = "Numbers" ;
+ Text[ chinese_simplified ] = "Êý×Ö";
+ Text[ russian ] = "×èñëà";
+ Text[ polish ] = "Liczby";
+ Text[ japanese ] = "”";
+ Text[ chinese_traditional ] = "¼Æ¦r";
+ Text[ arabic ] = "ÃÑÞÇã";
+ Text[ greek ] = "Áñéèìïß";
+ Text[ korean ] = "¼ýÀÚ";
+ Text[ turkish ] = "Sayý";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_FONT ;
+ /* ### ACHTUNG: Neuer Text in Resource? Schrift : Zeichen */
+ Text = "Schrift" ;
+ Text [ ENGLISH ] = "Character" ;
+ Text [ norwegian ] = "Character" ;
+ Text [ italian ] = "Carattere" ;
+ Text [ portuguese_brazilian ] = "Caractere" ;
+ Text [ portuguese ] = "Tipo de letra" ;
+ Text [ finnish ] = "Merkki" ;
+ Text [ danish ] = "Skrifttype" ;
+ Text [ french ] = "Police" ;
+ Text [ swedish ] = "Teckensnitt" ;
+ Text [ dutch ] = "Lettertype" ;
+ Text [ spanish ] = "Fuente" ;
+ Text [ english_us ] = "Font" ;
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ russian ] = "Øðèôò";
+ Text[ polish ] = "Czcionka";
+ Text[ japanese ] = "Ì«ÝÄ";
+ Text[ chinese_traditional ] = "¦r«¬";
+ Text[ arabic ] = "ÎØ";
+ Text[ greek ] = "ÃñáììáôïóåéñÜ";
+ Text[ korean ] = "±Û²Ã";
+ Text[ turkish ] = "Yazýtipi";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_ALIGNMENT ;
+ Text = "Ausrichtung" ;
+ Text [ ENGLISH ] = "Alignment" ;
+ Text [ norwegian ] = "Alignment" ;
+ Text [ italian ] = "Allineamento" ;
+ Text [ portuguese_brazilian ] = "Alinhamento" ;
+ Text [ portuguese ] = "Alinhamento" ;
+ Text [ finnish ] = "Tasaus" ;
+ Text [ danish ] = "Justering" ;
+ Text [ french ] = "Alignement" ;
+ Text [ swedish ] = "Justering" ;
+ Text [ dutch ] = "Uitlijning" ;
+ Text [ spanish ] = "Alineación" ;
+ Text [ english_us ] = "Alignment" ;
+ Text[ chinese_simplified ] = "¶ÔÆë";
+ Text[ russian ] = "Âûðàâíèâàíèå";
+ Text[ polish ] = "Wyrównanie";
+ Text[ japanese ] = "”z’u";
+ Text[ chinese_traditional ] = "¹ï»ô";
+ Text[ arabic ] = "ÇáãÍÇÐÇÉ";
+ Text[ greek ] = "Óôïß÷éóç";
+ Text[ korean ] = "¸ÂÃã";
+ Text[ turkish ] = "Hizalama";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_BORDER ;
+ Text = "Umrandung" ;
+ Text [ ENGLISH ] = "Border" ;
+ Text [ norwegian ] = "Border" ;
+ Text [ italian ] = "Bordo" ;
+ Text [ portuguese_brazilian ] = "Borda" ;
+ Text [ portuguese ] = "Contornos" ;
+ Text [ finnish ] = "Reunaviiva" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "Bordure" ;
+ Text [ swedish ] = "Inramning" ;
+ Text [ dutch ] = "Omranding" ;
+ Text [ spanish ] = "Borde" ;
+ Text [ english_us ] = "Borders" ;
+ Text[ chinese_simplified ] = "±ß¿ò";
+ Text[ russian ] = "Îáðàìëåíèå";
+ Text[ polish ] = "Obramowanie";
+ Text[ japanese ] = "ŠO˜g";
+ Text[ chinese_traditional ] = "Ãä®Ø";
+ Text[ arabic ] = "ÇáÍÏæÏ";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "°æ°è¼±";
+ Text[ turkish ] = "Kenarlýk";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_BACKGROUND ;
+ Text = "Hintergrund" ;
+ Text [ ENGLISH ] = "Background" ;
+ Text [ norwegian ] = "Background" ;
+ Text [ italian ] = "Sfondo" ;
+ Text [ portuguese_brazilian ] = "Fundo" ;
+ Text [ portuguese ] = "Plano de fundo" ;
+ Text [ finnish ] = "Tausta" ;
+ Text [ danish ] = "Baggrund" ;
+ Text [ french ] = "Arrière-plan" ;
+ Text [ swedish ] = "Bakgrund" ;
+ Text [ dutch ] = "Achtergrond" ;
+ Text [ spanish ] = "Fondo" ;
+ Text [ english_us ] = "Background" ;
+ Text[ chinese_simplified ] = "±³¾°";
+ Text[ russian ] = "Ôîí";
+ Text[ polish ] = "T³o";
+ Text[ japanese ] = "”wŒi";
+ Text[ chinese_traditional ] = "­I´º";
+ Text[ arabic ] = "ÎáÝíÉ";
+ Text[ greek ] = "Öüíôï";
+ Text[ korean ] = "¹è°æ";
+ Text[ turkish ] = "Artalan";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_PROTECTION ;
+ Text = "Zellschutz" ;
+ Text [ ENGLISH ] = "Protection" ;
+ Text [ norwegian ] = "Protection" ;
+ Text [ italian ] = "Protezione celle" ;
+ Text [ portuguese_brazilian ] = "Proteção" ;
+ Text [ portuguese ] = "Protecção de célula" ;
+ Text [ finnish ] = "Suojaus" ;
+ Text [ danish ] = "Cellebeskyttelse" ;
+ Text [ french ] = "Protection de cellule" ;
+ Text [ swedish ] = "Cellskydd" ;
+ Text [ dutch ] = "Celbeveiliging" ;
+ Text [ spanish ] = "Protección de celda" ;
+ Text [ english_us ] = "Cell Protection" ;
+ Text[ chinese_simplified ] = "±£»¤µ¥Ôª¸ñ";
+ Text[ russian ] = "Çàùèòà ÿ÷ååê";
+ Text[ polish ] = "Ochrona komórek";
+ Text[ japanese ] = "¾Ù‚Ì•ÛŒì";
+ Text[ chinese_traditional ] = "«OÅ@Àx¦s®æ";
+ Text[ arabic ] = "ÍãÇíÉ ÇáÎáíÉ";
+ Text[ greek ] = "Ðñïóôáóßá êåëéïý";
+ Text[ korean ] = "¼¿ º¸È£";
+ Text[ turkish ] = "Hücre koruma";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "µ¥Ôª¸ñÑùʽ";
+ Text[ russian ] = "Ñòèëü ÿ÷åéêè";
+ Text[ polish ] = "Styl komórki";
+ Text[ japanese ] = "¾Ù‚̽À²Ù";
+ Text[ chinese_traditional ] = "Àx¦s®æ¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÎáíÉ";
+ Text[ greek ] = "Óôõë êåëéïý";
+ Text[ korean ] = "¼¿ À¯Çü";
+ Text[ turkish ] = "Hücre biçimi";
+ Text[ language_user1 ] = " ";
+};
+TabDialog RID_SCDLG_STYLES_PAGE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 280 , 165 ) ;
+ Text = "Seitenvorlage" ;
+ Text [ ENGLISH ] = "Page Style" ;
+ Text [ norwegian ] = "Page Style" ;
+ Text [ italian ] = "Modello di pagina" ;
+ Text [ portuguese_brazilian ] = "Estilo da Página" ;
+ Text [ portuguese ] = "Estilo de página" ;
+ Text [ finnish ] = "Sivutyyli" ;
+ Text [ danish ] = "Sidetypografi" ;
+ Text [ french ] = "Style de page" ;
+ Text [ swedish ] = "Sidformatmall" ;
+ Text [ dutch ] = "Pagina-opmaakprofiel" ;
+ Text [ spanish ] = "Estilo de hoja" ;
+ Text [ english_us ] = "Page Style" ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ TabControl 1
+ {
+ OutputSize = TRUE ;
+ Pos = MAP_APPFONT ( 3 , 6 ) ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ PageList =
+ {
+ PageItem
+ {
+ Identifier = TP_PAGE_STD ;
+ Text = "Seite" ;
+ Text [ ENGLISH ] = "Page" ;
+ Text [ norwegian ] = "Page" ;
+ Text [ italian ] = "Pagina" ;
+ Text [ portuguese_brazilian ] = "Página" ;
+ Text [ portuguese ] = "Página" ;
+ Text [ finnish ] = "Sivu" ;
+ Text [ danish ] = "Side" ;
+ Text [ french ] = "Page" ;
+ Text [ swedish ] = "Sida" ;
+ Text [ dutch ] = "Pagina" ;
+ Text [ spanish ] = "Página" ;
+ Text [ english_us ] = "Page" ;
+ Text[ chinese_simplified ] = "Ò³Âë";
+ Text[ russian ] = "Ñòðàíèöà";
+ Text[ polish ] = "Strona";
+ Text[ japanese ] = "Íß°¼Þ";
+ Text[ chinese_traditional ] = "­¶­±";
+ Text[ arabic ] = "ÕÝÍÉ";
+ Text[ greek ] = "Óåëßäá";
+ Text[ korean ] = "ÆäÀÌÁö";
+ Text[ turkish ] = "Sayfa";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_BORDER ;
+ Text = "Umrandung" ;
+ Text [ ENGLISH ] = "Border" ;
+ Text [ norwegian ] = "Border" ;
+ Text [ italian ] = "Bordo" ;
+ Text [ portuguese_brazilian ] = "Borda" ;
+ Text [ portuguese ] = "Contornos" ;
+ Text [ finnish ] = "Reunaviiva" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ french ] = "Bordure" ;
+ Text [ swedish ] = "Inramning" ;
+ Text [ dutch ] = "Omranding" ;
+ Text [ spanish ] = "Borde" ;
+ Text [ english_us ] = "Borders" ;
+ Text[ chinese_simplified ] = "±ß¿ò";
+ Text[ russian ] = "Îáðàìëåíèå";
+ Text[ polish ] = "Obramowanie";
+ Text[ japanese ] = "ŠO˜g";
+ Text[ chinese_traditional ] = "Ãä®Ø";
+ Text[ arabic ] = "ÇáÍÏæÏ";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "°æ°è¼±";
+ Text[ turkish ] = "Kenarlýk";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_BACKGROUND ;
+ Text = "Hintergrund" ;
+ Text [ ENGLISH ] = "Background" ;
+ Text [ norwegian ] = "Background" ;
+ Text [ italian ] = "Sfondo" ;
+ Text [ portuguese_brazilian ] = "Fundo" ;
+ Text [ portuguese ] = "Plano de fundo" ;
+ Text [ finnish ] = "Tausta" ;
+ Text [ danish ] = "Baggrund" ;
+ Text [ french ] = "Arrière-plan" ;
+ Text [ swedish ] = "Bakgrund" ;
+ Text [ dutch ] = "Achtergrond" ;
+ Text [ spanish ] = "Fondo" ;
+ Text [ english_us ] = "Background" ;
+ Text[ chinese_simplified ] = "±³¾°";
+ Text[ russian ] = "Ôîí";
+ Text[ polish ] = "T³o";
+ Text[ japanese ] = "”wŒi";
+ Text[ chinese_traditional ] = "­I´º";
+ Text[ arabic ] = "ÎáÝíÉ";
+ Text[ greek ] = "Öüíôï";
+ Text[ korean ] = "¹è°æ";
+ Text[ turkish ] = "Artalan";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_PAGE_HEADER ;
+ Text = "Kopfzeile" ;
+ Text [ ENGLISH ] = "Header" ;
+ Text [ norwegian ] = "Header" ;
+ Text [ italian ] = "Riga d'intestazione" ;
+ Text [ portuguese_brazilian ] = "Cabeçalho" ;
+ Text [ portuguese ] = "Cabeçalho" ;
+ Text [ finnish ] = "Yläteksti" ;
+ Text [ danish ] = "Sidehoved" ;
+ Text [ french ] = "En-tête" ;
+ Text [ swedish ] = "Sidhuvud" ;
+ Text [ dutch ] = "Koptekst" ;
+ Text [ spanish ] = "Encabezamiento" ;
+ Text [ english_us ] = "Header" ;
+ Text[ chinese_simplified ] = "ҳü";
+ Text[ russian ] = "Âåðõíèé êîëîíòèòóë";
+ Text[ polish ] = "Nag³ówek";
+ Text[ japanese ] = "ͯÀÞ";
+ Text[ chinese_traditional ] = "­¶­º";
+ Text[ arabic ] = "ÑÃÓ ÇáÕÝÍÉ";
+ Text[ greek ] = "Êåöáëßäá";
+ Text[ korean ] = "¸Ó¸®±Û";
+ Text[ turkish ] = "Üstbilgi";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_PAGE_FOOTER ;
+ Text = "Fußzeile" ;
+ Text [ ENGLISH ] = "Footer" ;
+ Text [ norwegian ] = "Footer" ;
+ Text [ italian ] = "Piè di pagina" ;
+ Text [ portuguese_brazilian ] = "Rodapé" ;
+ Text [ portuguese ] = "Rodapé" ;
+ Text [ finnish ] = "Alateksti" ;
+ Text [ danish ] = "Sidefod" ;
+ Text [ french ] = "Pied de page" ;
+ Text [ swedish ] = "Sidfot" ;
+ Text [ dutch ] = "Voettekst" ;
+ Text [ spanish ] = "Pie de página" ;
+ Text [ english_us ] = "Footer" ;
+ Text[ chinese_simplified ] = "Ò³½Å";
+ Text[ russian ] = "Íèæíèé êîëîíòèòóë";
+ Text[ polish ] = "Stopka";
+ Text[ japanese ] = "̯À";
+ Text[ chinese_traditional ] = "­¶§À";
+ Text[ arabic ] = "ÊÐííá ÇáÕÝÍÉ";
+ Text[ greek ] = "ÕðïóÝëéäï";
+ Text[ korean ] = "¹Ù´Ú±Û";
+ Text[ turkish ] = "Altbilgi";
+ Text[ language_user1 ] = " ";
+ };
+ PageItem
+ {
+ Identifier = TP_TABLE ;
+ Text = "Tabelle" ;
+ Text [ ENGLISH ] = "Table" ;
+ Text [ norwegian ] = "Table" ;
+ Text [ italian ] = "Tabella" ;
+ Text [ portuguese_brazilian ] = "Tabela" ;
+ Text [ portuguese ] = "Folha" ;
+ Text [ finnish ] = "Taulukko" ;
+ Text [ danish ] = "Ark" ;
+ Text [ french ] = "Classeur" ;
+ Text [ swedish ] = "Tabell" ;
+ Text [ dutch ] = "Werkblad" ;
+ Text [ spanish ] = "Hoja" ;
+ Text [ english_us ] = "Sheet" ;
+ Text[ chinese_simplified ] = "¹¤×÷±í";
+ Text[ russian ] = "Ëèñò";
+ Text[ polish ] = "Arkusz";
+ Text[ japanese ] = "•\\";
+ Text[ chinese_traditional ] = "¤u§@ªí";
+ Text[ arabic ] = "ÌÏæá";
+ Text[ greek ] = "Öýëëï";
+ Text[ korean ] = "½ÃÆ®";
+ Text[ language_user1 ] = " ";
+ Text[ turkish ] = "Tablo";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "Ò³ÃæÑùʽ";
+ Text[ russian ] = "Ñòèëü ñòðàíèöû";
+ Text[ polish ] = "Styl strony";
+ Text[ japanese ] = "Íß°¼Þ½À²Ù";
+ Text[ chinese_traditional ] = "­¶­±¼Ë¦¡";
+ Text[ arabic ] = "äãØ ÕÝÍÉ";
+ Text[ greek ] = "Ðñüôõðï óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö À¯Çü";
+ Text[ turkish ] = "Sayfa biçimi";
+ Text[ language_user1 ] = " ";
+};
diff --git a/sc/source/ui/styleui/template.cur b/sc/source/ui/styleui/template.cur
new file mode 100644
index 000000000000..0fb6a1f5d0a9
--- /dev/null
+++ b/sc/source/ui/styleui/template.cur
Binary files differ
diff --git a/sc/source/ui/undo/makefile.mk b/sc/source/ui/undo/makefile.mk
new file mode 100644
index 000000000000..b5242a2bfe6b
--- /dev/null
+++ b/sc/source/ui/undo/makefile.mk
@@ -0,0 +1,119 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:06 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=undo
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ target.cxx \
+ refundo.cxx \
+ undobase.cxx \
+ undoutil.cxx \
+ undocell.cxx \
+ undostyl.cxx \
+ undoolk.cxx \
+ undoblk.cxx \
+ undoblk2.cxx \
+ undoblk3.cxx \
+ undodat.cxx \
+ undodraw.cxx \
+ undotab.cxx
+
+
+
+SLOFILES = \
+ $(SLO)$/target.obj \
+ $(SLO)$/refundo.obj \
+ $(SLO)$/undobase.obj \
+ $(SLO)$/undoutil.obj \
+ $(SLO)$/undocell.obj \
+ $(SLO)$/undostyl.obj \
+ $(SLO)$/undoolk.obj \
+ $(SLO)$/undoblk.obj \
+ $(SLO)$/undoblk2.obj \
+ $(SLO)$/undoblk3.obj \
+ $(SLO)$/undodat.obj \
+ $(SLO)$/undodraw.obj \
+ $(SLO)$/undotab.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/undo/refundo.cxx b/sc/source/ui/undo/refundo.cxx
new file mode 100644
index 000000000000..23c0a8a133f6
--- /dev/null
+++ b/sc/source/ui/undo/refundo.cxx
@@ -0,0 +1,232 @@
+/*************************************************************************
+ *
+ * $RCSfile: refundo.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// -----------------------------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "refundo.hxx"
+#include "undobase.hxx"
+#include "document.hxx"
+#include "dbcolect.hxx"
+#include "rangenam.hxx"
+#include "pivot.hxx"
+#include "chartarr.hxx"
+#include "stlpool.hxx"
+#include "conditio.hxx"
+#include "detdata.hxx"
+#include "prnsave.hxx"
+#include "chartlis.hxx"
+#include "dpobject.hxx"
+
+// -----------------------------------------------------------------------
+
+ScRefUndoData::ScRefUndoData( const ScDocument* pDoc )
+{
+ ScDBCollection* pOldDBColl = pDoc->GetDBCollection();
+ pDBCollection = pOldDBColl ? new ScDBCollection(*pOldDBColl) : NULL;
+
+ ScRangeName* pOldRanges = ((ScDocument*)pDoc)->GetRangeName(); //! const
+ pRangeName = pOldRanges ? new ScRangeName(*pOldRanges) : NULL;
+
+ pPrintRanges = pDoc->CreatePrintRangeSaver(); // neu erzeugt
+
+ ScPivotCollection* pOldPivot = pDoc->GetPivotCollection();
+ pPivotCollection = pOldPivot ? new ScPivotCollection(*pOldPivot) : NULL;
+ //! bei Pivot nur Bereiche merken ???
+
+ ScDPCollection* pOldDP = ((ScDocument*)pDoc)->GetDPCollection(); //! const
+ pDPCollection = pOldDP ? new ScDPCollection(*pOldDP) : NULL;
+
+ ScConditionalFormatList* pOldCond = pDoc->GetCondFormList();
+ pCondFormList = pOldCond ? new ScConditionalFormatList(*pOldCond) : NULL;
+
+ ScDetOpList* pOldDetOp = pDoc->GetDetOpList();
+ pDetOpList = pOldDetOp ? new ScDetOpList(*pOldDetOp) : 0;
+
+ ScChartListenerCollection* pOldChartListenerCollection =
+ pDoc->GetChartListenerCollection();
+ pChartListenerCollection = pOldChartListenerCollection ?
+ new ScChartListenerCollection( *pOldChartListenerCollection ) : NULL;
+}
+
+ScRefUndoData::~ScRefUndoData()
+{
+ delete pDBCollection;
+ delete pRangeName;
+ delete pPrintRanges;
+ delete pPivotCollection;
+ delete pDPCollection;
+ delete pCondFormList;
+ delete pDetOpList;
+ delete pChartListenerCollection;
+}
+
+void ScRefUndoData::DeleteUnchanged( const ScDocument* pDoc )
+{
+ if (pDBCollection)
+ {
+ ScDBCollection* pNewDBColl = pDoc->GetDBCollection();
+ if ( pNewDBColl && *pDBCollection == *pNewDBColl )
+ DELETEZ(pDBCollection);
+ }
+ if (pRangeName)
+ {
+ ScRangeName* pNewRanges = ((ScDocument*)pDoc)->GetRangeName(); //! const
+ if ( pNewRanges && *pRangeName == *pNewRanges )
+ DELETEZ(pRangeName);
+ }
+
+ if (pPrintRanges)
+ {
+ ScPrintRangeSaver* pNewRanges = pDoc->CreatePrintRangeSaver();
+ if ( pNewRanges && *pPrintRanges == *pNewRanges )
+ DELETEZ(pPrintRanges);
+ delete pNewRanges;
+ }
+
+ if (pPivotCollection)
+ {
+ ScPivotCollection* pNewPivot = pDoc->GetPivotCollection();
+ if ( pNewPivot && *pPivotCollection == *pNewPivot )
+ DELETEZ(pPivotCollection);
+ }
+
+ if (pDPCollection)
+ {
+ ScDPCollection* pNewDP = ((ScDocument*)pDoc)->GetDPCollection(); //! const
+ if ( pNewDP && pDPCollection->RefsEqual(*pNewDP) )
+ DELETEZ(pDPCollection);
+ }
+
+ if (pCondFormList)
+ {
+ ScConditionalFormatList* pNewCond = pDoc->GetCondFormList();
+ if ( pNewCond && *pCondFormList == *pNewCond )
+ DELETEZ(pCondFormList);
+ }
+
+ if (pDetOpList)
+ {
+ ScDetOpList* pNewDetOp = pDoc->GetDetOpList();
+ if ( pNewDetOp && *pDetOpList == *pNewDetOp )
+ DELETEZ(pDetOpList);
+ }
+
+ if ( pChartListenerCollection )
+ {
+ ScChartListenerCollection* pNewChartListenerCollection =
+ pDoc->GetChartListenerCollection();
+ if ( pNewChartListenerCollection &&
+ *pChartListenerCollection == *pNewChartListenerCollection )
+ DELETEZ( pChartListenerCollection );
+ }
+}
+
+void ScRefUndoData::DoUndo( ScDocument* pDoc, BOOL bUndoRefFirst )
+{
+ if (pDBCollection)
+ pDoc->SetDBCollection( new ScDBCollection(*pDBCollection) );
+ if (pRangeName)
+ pDoc->SetRangeName( new ScRangeName(*pRangeName) );
+
+ if (pPrintRanges)
+ pDoc->RestorePrintRanges(*pPrintRanges);
+
+ if (pPivotCollection)
+ pDoc->SetPivotCollection( new ScPivotCollection(*pPivotCollection) );
+
+ if (pDPCollection)
+ {
+ ScDPCollection* pDocDP = pDoc->GetDPCollection();
+ if (pDocDP)
+ pDPCollection->WriteRefsTo( *pDocDP );
+ }
+
+ if (pCondFormList)
+ pDoc->SetCondFormList( new ScConditionalFormatList(*pCondFormList) );
+ if (pDetOpList)
+ pDoc->SetDetOpList( new ScDetOpList(*pDetOpList) );
+
+ // #65055# bUndoRefFirst ist bSetChartRangeLists
+ if ( pChartListenerCollection )
+ pDoc->SetChartListenerCollection( new ScChartListenerCollection(
+ *pChartListenerCollection ), bUndoRefFirst );
+
+ if (pDBCollection || pRangeName)
+ {
+ BOOL bOldAutoCalc = pDoc->GetAutoCalc();
+ pDoc->SetAutoCalc( FALSE ); // Mehrfachberechnungen vermeiden
+ pDoc->CompileAll();
+ pDoc->SetDirty();
+ pDoc->SetAutoCalc( bOldAutoCalc );
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/undo/target.cxx b/sc/source/ui/undo/target.cxx
new file mode 100644
index 000000000000..eaf203bde4a3
--- /dev/null
+++ b/sc/source/ui/undo/target.cxx
@@ -0,0 +1,110 @@
+/*************************************************************************
+ *
+ * $RCSfile: target.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "target.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+TYPEINIT1(ScTabViewTarget, SfxRepeatTarget);
+
+SEG_EOFGLOBALS()
+
+#pragma SEG_FUNCDEF(target_01)
+
+__EXPORT ScTabViewTarget::~ScTabViewTarget()
+{
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.3 2000/09/17 14:09:28 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.2 2000/08/31 16:38:39 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.1 1995/10/09 14:48:40 NN
+ Initial revision.
+
+
+ Rev 1.0 09 Oct 1995 15:48:40 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/undo/undobase.cxx b/sc/source/ui/undo/undobase.cxx
new file mode 100644
index 000000000000..2c952af778f9
--- /dev/null
+++ b/sc/source/ui/undo/undobase.cxx
@@ -0,0 +1,374 @@
+/*************************************************************************
+ *
+ * $RCSfile: undobase.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <vcl/virdev.hxx>
+
+#include "undobase.hxx"
+#include "refundo.hxx"
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+#include "undoolk.hxx"
+#include "undodraw.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+TYPEINIT1(ScSimpleUndo, SfxUndoAction);
+TYPEINIT1(ScBlockUndo, SfxUndoAction);
+TYPEINIT1(ScMoveUndo, SfxUndoAction);
+
+// -----------------------------------------------------------------------
+
+ScSimpleUndo::ScSimpleUndo( ScDocShell* pDocSh ) :
+ pDocShell( pDocSh ),
+ pDetectiveUndo( NULL )
+{
+}
+
+__EXPORT ScSimpleUndo::~ScSimpleUndo()
+{
+ delete pDetectiveUndo;
+}
+
+BOOL __EXPORT ScSimpleUndo::Merge( SfxUndoAction *pNextAction )
+{
+ // Zu jeder Undo-Action kann eine SdrUndoGroup fuer das Aktualisieren
+ // der Detektiv-Pfeile gehoeren.
+ // DetectiveRefresh kommt immer hinterher, die SdrUndoGroup ist in
+ // eine ScUndoDraw Action verpackt.
+ // Nur beim automatischen Aktualisieren wird AddUndoAction mit
+ // bTryMerg=TRUE gerufen.
+
+ if ( !pDetectiveUndo && pNextAction->ISA(ScUndoDraw) )
+ {
+ // SdrUndoAction aus der ScUndoDraw Action uebernehmen,
+ // ScUndoDraw wird dann vom UndoManager geloescht
+
+ ScUndoDraw* pCalcUndo = (ScUndoDraw*)pNextAction;
+ pDetectiveUndo = pCalcUndo->GetDrawUndo();
+ pCalcUndo->ForgetDrawUndo();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void ScSimpleUndo::BeginUndo()
+{
+ pDocShell->SetInUndo( TRUE );
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->HideAllCursors(); // z.B. wegen zusammengefassten Zellen
+}
+
+void ScSimpleUndo::EndUndo()
+{
+ if (pDetectiveUndo)
+ pDetectiveUndo->Undo();
+
+ pDocShell->SetDocumentModified();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ pViewShell->UpdateAutoFillMark();
+ pViewShell->UpdateInputHandler();
+ pViewShell->ShowAllCursors();
+ }
+
+ pDocShell->SetInUndo( FALSE );
+}
+
+void ScSimpleUndo::BeginRedo()
+{
+ pDocShell->SetInUndo( TRUE ); //! eigenes Flag fuer Redo?
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->HideAllCursors(); // z.B. wegen zusammengefassten Zellen
+}
+
+void ScSimpleUndo::EndRedo()
+{
+ if (pDetectiveUndo)
+ pDetectiveUndo->Redo();
+
+ pDocShell->SetDocumentModified();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ pViewShell->UpdateAutoFillMark();
+ pViewShell->UpdateInputHandler();
+ pViewShell->ShowAllCursors();
+ }
+
+ pDocShell->SetInUndo( FALSE );
+}
+
+void ScSimpleUndo::ShowTable( USHORT nTab ) // static
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->SetTabNo( nTab );
+}
+
+void ScSimpleUndo::ShowTable( const ScRange& rRange ) // static
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ USHORT nStart = rRange.aStart.Tab();
+ USHORT nEnd = rRange.aEnd.Tab();
+ USHORT nTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nTab < nStart || nTab > nEnd ) // wenn nicht im Bereich:
+ pViewShell->SetTabNo( nStart ); // auf erste des Bereiches
+ }
+}
+
+
+// -----------------------------------------------------------------------
+
+ScBlockUndo::ScBlockUndo( ScDocShell* pDocSh, const ScRange& rRange,
+ ScBlockUndoMode eBlockMode ) :
+ ScSimpleUndo( pDocSh ),
+ aBlockRange( rRange ),
+ eMode( eBlockMode )
+{
+ pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() );
+}
+
+__EXPORT ScBlockUndo::~ScBlockUndo()
+{
+ DeleteSdrUndoAction( pDrawUndo );
+}
+
+void ScBlockUndo::BeginUndo()
+{
+ ScSimpleUndo::BeginUndo();
+ EnableDrawAdjust( pDocShell->GetDocument(), FALSE );
+}
+
+void ScBlockUndo::EndUndo()
+{
+ if (eMode == SC_UNDO_AUTOHEIGHT)
+ AdjustHeight();
+
+ EnableDrawAdjust( pDocShell->GetDocument(), TRUE );
+ if (pDrawUndo)
+ DoSdrUndoAction( pDrawUndo );
+
+ ShowBlock();
+ ScSimpleUndo::EndUndo();
+}
+
+/*
+void ScBlockUndo::BeginRedo()
+{
+ ScSimpleUndo::BeginRedo();
+}
+*/
+
+void ScBlockUndo::EndRedo()
+{
+ if (eMode == SC_UNDO_AUTOHEIGHT)
+ AdjustHeight();
+
+ ShowBlock();
+ ScSimpleUndo::EndRedo();
+}
+
+BOOL ScBlockUndo::AdjustHeight()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ VirtualDevice aVirtDev;
+ Fraction aZoomX( 1, 1 );
+ Fraction aZoomY = aZoomX;
+ double nPPTX, nPPTY;
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ ScViewData* pData = pViewShell->GetViewData();
+ nPPTX = pData->GetPPTX();
+ nPPTY = pData->GetPPTY();
+ aZoomX = pData->GetZoomX();
+ aZoomY = pData->GetZoomY();
+ }
+ else
+ {
+ // Zoom auf 100 lassen
+ nPPTX = ScGlobal::nScreenPPTX;
+ nPPTY = ScGlobal::nScreenPPTY;
+ }
+
+ BOOL bRet = pDoc->SetOptimalHeight( aBlockRange.aStart.Row(), aBlockRange.aEnd.Row(),
+/*!*/ aBlockRange.aStart.Tab(), 0, &aVirtDev,
+ nPPTX, nPPTY, aZoomX, aZoomY, FALSE );
+
+ if (bRet)
+ pDocShell->PostPaint( 0, aBlockRange.aStart.Row(), aBlockRange.aStart.Tab(),
+ MAXCOL, MAXROW, aBlockRange.aEnd.Tab(),
+ PAINT_GRID | PAINT_LEFT );
+
+ return bRet;
+}
+
+void ScBlockUndo::ShowBlock()
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ ShowTable( aBlockRange ); // bei mehreren Tabs im Range ist jede davon gut
+ pViewShell->MoveCursorAbs( aBlockRange.aStart.Col(), aBlockRange.aStart.Row(),
+ SC_FOLLOW_JUMP, FALSE, FALSE );
+ USHORT nTab = pViewShell->GetViewData()->GetTabNo();
+ ScRange aRange = aBlockRange;
+ aRange.aStart.SetTab( nTab );
+ aRange.aEnd.SetTab( nTab );
+ pViewShell->MarkRange( aRange );
+
+ // nicht per SetMarkArea an MarkData, wegen evtl. fehlendem Paint
+ }
+}
+
+
+// -----------------------------------------------------------------------
+
+ScMoveUndo::ScMoveUndo( ScDocShell* pDocSh, ScDocument* pRefDoc, ScRefUndoData* pRefData,
+ ScMoveUndoMode eRefMode ) :
+ ScSimpleUndo( pDocSh ),
+ pRefUndoDoc( pRefDoc ),
+ pRefUndoData( pRefData ),
+ eMode( eRefMode )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ if (pRefUndoData)
+ pRefUndoData->DeleteUnchanged(pDoc);
+ pDrawUndo = GetSdrUndoAction( pDoc );
+}
+
+__EXPORT ScMoveUndo::~ScMoveUndo()
+{
+ delete pRefUndoData;
+ delete pRefUndoDoc;
+ DeleteSdrUndoAction( pDrawUndo );
+}
+
+void ScMoveUndo::UndoRef()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRange aRange(0,0,0, MAXCOL,MAXROW,pRefUndoDoc->GetTableCount()-1);
+ pRefUndoDoc->CopyToDocument( aRange, IDF_FORMULA, FALSE, pDoc, NULL, FALSE );
+ if (pRefUndoData)
+ pRefUndoData->DoUndo( pDoc, (eMode == SC_UNDO_REFFIRST) );
+ // #65055# HACK: ScDragDropUndo ist der einzige mit REFFIRST.
+ // Falls nicht, resultiert daraus evtl. ein zu haeufiges Anpassen
+ // der ChartRefs, nicht schoen, aber auch nicht schlecht..
+}
+
+void ScMoveUndo::BeginUndo()
+{
+ ScSimpleUndo::BeginUndo();
+
+ EnableDrawAdjust( pDocShell->GetDocument(), FALSE );
+
+ if (pRefUndoDoc && eMode == SC_UNDO_REFFIRST)
+ UndoRef();
+}
+
+void ScMoveUndo::EndUndo()
+{
+ if (pDrawUndo) //@17.12.97 Reihenfolge der Fkt.s geaendert
+ DoSdrUndoAction( pDrawUndo );
+
+ if (pRefUndoDoc && eMode == SC_UNDO_REFLAST)
+ UndoRef();
+
+ EnableDrawAdjust( pDocShell->GetDocument(), TRUE );
+
+ ScSimpleUndo::EndUndo();
+}
+
+/*
+void ScMoveUndo::BeginRedo()
+{
+ ScSimpleUndo::BeginRedo();
+}
+*/
+
+/*
+void ScMoveUndo::EndRedo()
+{
+ ScSimpleUndo::EndRedo();
+}
+*/
+
+
+
diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
new file mode 100644
index 000000000000..8ddc8308f4c1
--- /dev/null
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -0,0 +1,1909 @@
+/*************************************************************************
+ *
+ * $RCSfile: undoblk.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#define _MACRODLG_HXX
+#define _BIGINT_HXX
+#define _SVDXOUT_HXX
+#define _SVDATTR_HXX
+#define _SVDSURO_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <vcl/virdev.hxx>
+#include <vcl/waitobj.hxx>
+#include <svx/boxitem.hxx>
+
+#include "undoblk.hxx"
+#include "undoutil.hxx"
+#include "document.hxx"
+#include "patattr.hxx"
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+#include "rangenam.hxx"
+#include "rangeutl.hxx"
+#include "dbcolect.hxx"
+#include "stlpool.hxx"
+#include "stlsheet.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "target.hxx"
+#include "docpool.hxx"
+#include "docfunc.hxx"
+#include "attrib.hxx"
+#include "chgtrack.hxx"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+TYPEINIT1(ScUndoInsertCells, SfxUndoAction);
+TYPEINIT1(ScUndoDeleteCells, SfxUndoAction);
+TYPEINIT1(ScUndoDeleteMulti, SfxUndoAction);
+TYPEINIT1(ScUndoCut, ScBlockUndo);
+TYPEINIT1(ScUndoPaste, SfxUndoAction);
+TYPEINIT1(ScUndoDragDrop, SfxUndoAction);
+TYPEINIT1(ScUndoListNames, SfxUndoAction);
+TYPEINIT1(ScUndoUseScenario, SfxUndoAction);
+TYPEINIT1(ScUndoSelectionStyle, SfxUndoAction);
+TYPEINIT1(ScUndoEnterMatrix, ScBlockUndo);
+TYPEINIT1(ScUndoIndent, ScBlockUndo);
+TYPEINIT1(ScUndoClearItems, ScBlockUndo);
+TYPEINIT1(ScUndoRemoveBreaks, SfxUndoAction);
+TYPEINIT1(ScUndoRemoveMerge, ScBlockUndo);
+TYPEINIT1(ScUndoBorder, ScBlockUndo);
+
+
+
+// To Do:
+/*A*/ // SetOptimalHeight auf Dokument, wenn keine View
+/*B*/ // gelinkte Tabellen
+/*C*/ // ScArea
+//? // spaeter mal pruefen
+
+
+// -----------------------------------------------------------------------
+//
+// Zellen einfuegen
+// Zeilen einfügen
+// einzeln oder Block
+//
+
+ScUndoInsertCells::ScUndoInsertCells( ScDocShell* pNewDocShell,
+ const ScRange& rRange, InsCellCmd eNewCmd,
+ ScDocument* pUndoDocument, ScRefUndoData* pRefData ) :
+ ScMoveUndo( pNewDocShell, pUndoDocument, pRefData, SC_UNDO_REFLAST ),
+ aEffRange( rRange ),
+ eCmd( eNewCmd )
+{
+ if (eCmd == INS_INSROWS) // ganze Zeilen?
+ {
+ aEffRange.aStart.SetCol(0);
+ aEffRange.aEnd.SetCol(MAXCOL);
+ }
+
+ if (eCmd == INS_INSCOLS) // ganze Spalten?
+ {
+ aEffRange.aStart.SetRow(0);
+ aEffRange.aEnd.SetRow(MAXROW);
+ }
+
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoInsertCells::~ScUndoInsertCells()
+{
+}
+
+String __EXPORT ScUndoInsertCells::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_INSERTCELLS ); // "Einfuegen"
+}
+
+void ScUndoInsertCells::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ pChangeTrack->AppendInsert( aEffRange );
+ nEndChangeAction = pChangeTrack->GetActionMax();
+ }
+ else
+ nEndChangeAction = 0;
+}
+
+void ScUndoInsertCells::DoChange( const BOOL bUndo )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ if ( bUndo )
+ {
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nEndChangeAction, nEndChangeAction );
+ }
+ else
+ SetChangeTrack();
+
+ ScRange aWorkRange( aEffRange );
+ if ( pDoc->HasAttrib( aWorkRange, HASATTR_MERGED ) ) // zusammengefasste Zellen?
+ pDoc->ExtendMerge( aWorkRange, TRUE );
+
+ switch (eCmd)
+ {
+ case INS_INSROWS:
+ case INS_CELLSDOWN:
+ if (bUndo)
+ pDoc->DeleteRow( aEffRange );
+ else
+ pDoc->InsertRow( aEffRange );
+ break;
+ case INS_INSCOLS:
+ case INS_CELLSRIGHT:
+ if (bUndo)
+ pDoc->DeleteCol( aEffRange );
+ else
+ pDoc->InsertCol( aEffRange );
+ break;
+ }
+
+//? Undo fuer herausgeschobene Attribute ?
+
+ USHORT nPaint = PAINT_GRID;
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ switch (eCmd)
+ {
+ case INS_INSROWS:
+ nPaint |= PAINT_LEFT;
+ aWorkRange.aEnd.SetRow(MAXROW);
+ break;
+ case INS_CELLSDOWN:
+ aWorkRange.aEnd.SetRow(MAXROW); // bis ganz nach unten
+/*A*/ if ( (pViewShell) && pViewShell->AdjustRowHeight(
+ aWorkRange.aStart.Row(), aWorkRange.aEnd.Row(), FALSE ) )
+ {
+ aWorkRange.aStart.SetCol(0);
+ aWorkRange.aEnd.SetCol(MAXCOL);
+ nPaint |= PAINT_LEFT;
+ }
+ break;
+ case INS_INSCOLS:
+ nPaint |= PAINT_TOP; // obere Leiste
+ case INS_CELLSRIGHT:
+ aWorkRange.aEnd.SetCol(MAXCOL); // bis ganz nach rechts
+/*A*/ if ( (pViewShell) && pViewShell->AdjustRowHeight(
+ aWorkRange.aStart.Row(), aWorkRange.aEnd.Row(), FALSE ) )
+ { // AdjustDraw zeichnet PAINT_TOP nicht,
+ aWorkRange.aStart.SetCol(0); // daher so geloest
+ aWorkRange.aEnd.SetRow(MAXROW);
+ nPaint |= PAINT_LEFT;
+ }
+ break;
+ }
+ pDocShell->PostPaint( aWorkRange, nPaint );
+ pDocShell->PostDataChanged();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+
+ ShowTable( aEffRange.aStart.Tab() );
+}
+
+void __EXPORT ScUndoInsertCells::Undo()
+{
+ WaitObject aWait( pDocShell->GetDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference
+ BeginUndo();
+ DoChange( TRUE );
+ EndUndo();
+}
+
+void __EXPORT ScUndoInsertCells::Redo()
+{
+ WaitObject aWait( pDocShell->GetDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference
+ BeginRedo();
+ DoChange( FALSE );
+ EndRedo();
+}
+
+void __EXPORT ScUndoInsertCells::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->InsertCells( eCmd, TRUE );
+}
+
+BOOL __EXPORT ScUndoInsertCells::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Zellen loeschen
+// Zeilen löschen
+// einzeln oder Block
+//
+
+ScUndoDeleteCells::ScUndoDeleteCells( ScDocShell* pNewDocShell,
+ const ScRange& rRange, DelCellCmd eNewCmd,
+ ScDocument* pUndoDocument, ScRefUndoData* pRefData ) :
+ ScMoveUndo( pNewDocShell, pUndoDocument, pRefData, SC_UNDO_REFLAST ),
+ aEffRange( rRange ),
+ eCmd( eNewCmd )
+{
+ if (eCmd == DEL_DELROWS) // gaze Zeilen?
+ {
+ aEffRange.aStart.SetCol(0);
+ aEffRange.aEnd.SetCol(MAXCOL);
+ }
+
+ if (eCmd == DEL_DELCOLS) // ganze Spalten?
+ {
+ aEffRange.aStart.SetRow(0);
+ aEffRange.aEnd.SetRow(MAXROW);
+ }
+
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoDeleteCells::~ScUndoDeleteCells()
+{
+}
+
+String __EXPORT ScUndoDeleteCells::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_DELETECELLS ); // "Loeschen"
+}
+
+void ScUndoDeleteCells::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->AppendDeleteRange( aEffRange, pRefUndoDoc,
+ nStartChangeAction, nEndChangeAction );
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+void ScUndoDeleteCells::DoChange( const BOOL bUndo )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ if ( bUndo )
+ {
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+ }
+ else
+ SetChangeTrack();
+
+ // Ausfuehren
+ switch (eCmd)
+ {
+ case DEL_DELROWS:
+ case DEL_CELLSUP:
+ if (bUndo)
+ pDoc->InsertRow( aEffRange );
+ else
+ pDoc->DeleteRow( aEffRange );
+ break;
+ case DEL_DELCOLS:
+ case DEL_CELLSLEFT:
+ if (bUndo)
+ pDoc->InsertCol( aEffRange );
+ else
+ pDoc->DeleteCol( aEffRange );
+ break;
+ }
+
+ // bei Undo Referenzen wiederherstellen
+ if (bUndo)
+ pRefUndoDoc->CopyToDocument( aEffRange, IDF_ALL, FALSE, pDoc );
+
+//? Datenbank muss vor ExtendMerge sein ?????
+
+ // Zusammengefasste Zellen?
+ ScRange aWorkRange( aEffRange );
+ if ( pDoc->HasAttrib( aWorkRange, HASATTR_MERGED ) )
+ {
+/*? if ( !bUndo && ( eCmd==DEL_DELCOLS || eCmd==DEL_DELROWS ) )
+ {
+ if (eCmd==DEL_DELCOLS) aWorkRange.aEnd.SetCol(MAXCOL);
+ if (eCmd==DEL_DELROWS) aWorkRange.aEnd.SetRow(MAXROW);
+ ScMarkData aMarkData;
+ aMarkData.SelectOneTable( aWorkRange.aStart.Tab() );
+ ScPatternAttr aPattern( pDoc->GetPool() );
+ aPattern.GetItemSet().Put( ScMergeFlagAttr() );
+ pDoc->ApplyPatternArea( aWorkRange.aStart.Col(), aWorkRange.aStart.Row(),
+ aWorkRange.aEnd.Col(), aWorkRange.aEnd.Row(),
+ aMarkData, aPattern );
+ }
+?*/
+ pDoc->ExtendMerge( aWorkRange, TRUE );
+ }
+
+ // Zeichnen
+ USHORT nPaint = PAINT_GRID;
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ switch (eCmd)
+ {
+ case DEL_DELROWS:
+ nPaint |= PAINT_LEFT;
+ aWorkRange.aEnd.SetRow(MAXROW);
+ break;
+ case DEL_CELLSUP:
+ aWorkRange.aEnd.SetRow(MAXROW);
+/*A*/ if ( (pViewShell) && pViewShell->AdjustRowHeight(
+ aWorkRange.aStart.Row(), aWorkRange.aEnd.Row(), FALSE ) )
+ {
+ aWorkRange.aStart.SetCol(0);
+ aWorkRange.aEnd.SetCol(MAXCOL);
+ nPaint |= PAINT_LEFT;
+ }
+ break;
+ case DEL_DELCOLS:
+ nPaint |= PAINT_TOP; // obere Leiste
+ case DEL_CELLSLEFT:
+ aWorkRange.aEnd.SetCol(MAXCOL); // bis ganz nach rechts
+/*A*/ if ( (pViewShell) && pViewShell->AdjustRowHeight(
+ aWorkRange.aStart.Row(), aWorkRange.aEnd.Row(), FALSE ) )
+ {
+ aWorkRange.aStart.SetCol(0);
+ aWorkRange.aEnd.SetRow(MAXROW);
+ nPaint |= PAINT_LEFT;
+ }
+ }
+ pDocShell->PostPaint( aWorkRange, nPaint, SC_PF_LINES ); //! auf Lines testen
+
+ // Markierung erst nach EndUndo
+
+ pDocShell->PostDataChanged();
+ // CellContentChanged kommt mit der Markierung
+
+ ShowTable( aEffRange.aStart.Tab() );
+}
+
+void __EXPORT ScUndoDeleteCells::Undo()
+{
+ WaitObject aWait( pDocShell->GetDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference
+ BeginUndo();
+ DoChange( TRUE );
+ EndUndo();
+
+ // Markierung erst nach EndUndo
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->MarkRange( aEffRange );
+}
+
+void __EXPORT ScUndoDeleteCells::Redo()
+{
+ WaitObject aWait( pDocShell->GetDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference
+ BeginRedo();
+ DoChange( FALSE);
+ EndRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->DoneBlockMode(); // aktuelle weg
+}
+
+void __EXPORT ScUndoDeleteCells::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->DeleteCells( eCmd, TRUE );
+}
+
+BOOL __EXPORT ScUndoDeleteCells::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Zellen loeschen auf Mehrfachselektion
+//
+
+ScUndoDeleteMulti::ScUndoDeleteMulti( ScDocShell* pNewDocShell,
+ BOOL bNewRows, USHORT nNewTab,
+ const USHORT* pRng, USHORT nRngCnt,
+ ScDocument* pUndoDocument, ScRefUndoData* pRefData ) :
+ ScMoveUndo( pNewDocShell, pUndoDocument, pRefData, SC_UNDO_REFLAST ),
+ bRows( bNewRows ),
+ nTab( nNewTab ),
+ nRangeCnt( nRngCnt )
+{
+ pRanges = new USHORT[ 2 * nRangeCnt ];
+ memcpy(pRanges,pRng,nRangeCnt*2*sizeof(USHORT));
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoDeleteMulti::~ScUndoDeleteMulti()
+{
+ delete pRanges;
+}
+
+String __EXPORT ScUndoDeleteMulti::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_DELETECELLS ); // wie DeleteCells
+}
+
+void ScUndoDeleteMulti::DoChange() const
+{
+ if (bRows)
+ pDocShell->PostPaint( 0,pRanges[0],nTab, MAXCOL,MAXROW,nTab, PAINT_GRID | PAINT_LEFT );
+ else
+ pDocShell->PostPaint( pRanges[0],0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID | PAINT_TOP );
+
+ pDocShell->PostDataChanged();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+
+ ShowTable( nTab );
+}
+
+void ScUndoDeleteMulti::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ nStartChangeAction = pChangeTrack->GetActionMax() + 1;
+ ScRange aRange( 0, 0, nTab, 0, 0, nTab );
+ if ( bRows )
+ aRange.aEnd.SetCol( MAXCOL );
+ else
+ aRange.aEnd.SetRow( MAXROW );
+ // rueckwaerts loeschen
+ USHORT* pOneRange = &pRanges[2*nRangeCnt];
+ for ( USHORT nRangeNo=0; nRangeNo<nRangeCnt; nRangeNo++ )
+ {
+ USHORT nEnd = *(--pOneRange);
+ USHORT nStart = *(--pOneRange);
+ if ( bRows )
+ {
+ aRange.aStart.SetRow( nStart );
+ aRange.aEnd.SetRow( nEnd );
+ }
+ else
+ {
+ aRange.aStart.SetCol( nStart );
+ aRange.aEnd.SetCol( nEnd );
+ }
+ ULONG nDummyStart;
+ pChangeTrack->AppendDeleteRange( aRange, pRefUndoDoc,
+ nDummyStart, nEndChangeAction );
+ }
+ }
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+void __EXPORT ScUndoDeleteMulti::Undo()
+{
+ WaitObject aWait( pDocShell->GetDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT* pOneRange;
+ USHORT nRangeNo;
+
+ // rueckwaerts geloescht -> vorwaerts einfuegen
+ pOneRange = pRanges;
+ for (nRangeNo=0; nRangeNo<nRangeCnt; nRangeNo++)
+ {
+ USHORT nStart = *(pOneRange++);
+ USHORT nEnd = *(pOneRange++);
+ if (bRows)
+ pDoc->InsertRow( 0,nTab, MAXCOL,nTab, nStart,nEnd-nStart+1 );
+ else
+ pDoc->InsertCol( 0,nTab, MAXROW,nTab, nStart,nEnd-nStart+1 );
+ }
+
+ pOneRange = pRanges;
+ for (nRangeNo=0; nRangeNo<nRangeCnt; nRangeNo++)
+ {
+ USHORT nStart = *(pOneRange++);
+ USHORT nEnd = *(pOneRange++);
+ if (bRows)
+ pRefUndoDoc->CopyToDocument( 0,nStart,nTab, MAXCOL,nEnd,nTab, IDF_ALL,FALSE,pDoc );
+ else
+ pRefUndoDoc->CopyToDocument( nStart,0,nTab, nEnd,MAXROW,nTab, IDF_ALL,FALSE,pDoc );
+ }
+
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+
+ DoChange();
+
+ //! Markierung wieder einzeichnen
+ //! geht im Moment nicht, da keine Daten fuer Markierung vorhanden!
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoDeleteMulti::Redo()
+{
+ WaitObject aWait( pDocShell->GetDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ // rueckwaerts loeschen
+ USHORT* pOneRange = &pRanges[2*nRangeCnt];
+ for (USHORT nRangeNo=0; nRangeNo<nRangeCnt; nRangeNo++)
+ {
+ USHORT nEnd = *(--pOneRange);
+ USHORT nStart = *(--pOneRange);
+ if (bRows)
+ pDoc->DeleteRow( 0,nTab, MAXCOL,nTab, nStart,nEnd-nStart+1 );
+ else
+ pDoc->DeleteCol( 0,nTab, MAXROW,nTab, nStart,nEnd-nStart+1 );
+ }
+
+ SetChangeTrack();
+
+ DoChange();
+
+//! Markierung loeschen, derzeit unnoetig (s.o.)
+//! ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+//! if (pViewShell)
+//! DoneBlockMode();
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoDeleteMulti::Repeat(SfxRepeatTarget& rTarget)
+{
+ // DeleteCells, falls einfache Selektion
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->DeleteCells( DEL_DELROWS, TRUE );
+}
+
+BOOL __EXPORT ScUndoDeleteMulti::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Ausschneiden (Cut)
+//
+
+ScUndoCut::ScUndoCut( ScDocShell* pNewDocShell,
+ ScRange aRange, ScAddress aOldEnd,
+ ScDocument* pNewUndoDoc ) :
+ ScBlockUndo( pNewDocShell, ScRange(aRange.aStart, aOldEnd), SC_UNDO_AUTOHEIGHT ),
+ aExtendedRange( aRange ),
+ pUndoDoc( pNewUndoDoc )
+{
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoCut::~ScUndoCut()
+{
+ delete pUndoDoc;
+}
+
+String __EXPORT ScUndoCut::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_CUT ); // "Ausschneiden"
+}
+
+void ScUndoCut::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->AppendContentRange( aBlockRange, pUndoDoc,
+ nStartChangeAction, nEndChangeAction, SC_CACM_CUT );
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+void ScUndoCut::DoChange( const BOOL bUndo )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nExtFlags = 0;
+
+ if (bUndo) // nur bei Undo
+ {
+ pUndoDoc->CopyToDocument( aExtendedRange, IDF_ALL, FALSE, pDoc );
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+ }
+ else // nur bei Redo
+ {
+ if (pDoc->HasAttrib( aExtendedRange, HASATTR_PAINTEXT ))
+ nExtFlags = SC_PF_LINES;
+ pDoc->DeleteAreaTab( aBlockRange, IDF_ALL );
+ SetChangeTrack();
+ }
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if ( !( (pViewShell) && pViewShell->AdjustBlockHeight() ) )
+/*A*/ pDocShell->PostPaint( aExtendedRange, PAINT_GRID, nExtFlags );
+
+ pDocShell->PostDataChanged();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+}
+
+void __EXPORT ScUndoCut::Undo()
+{
+ BeginUndo();
+ DoChange( TRUE );
+ EndUndo();
+}
+
+void __EXPORT ScUndoCut::Redo()
+{
+ BeginRedo();
+ DoChange( FALSE );
+ EndRedo();
+}
+
+void __EXPORT ScUndoCut::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->CutToClip();
+}
+
+BOOL __EXPORT ScUndoCut::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Einfuegen (Paste)
+//
+
+ScUndoPaste::ScUndoPaste( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ const ScMarkData& rMark,
+ ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc,
+ USHORT nNewFlags,
+ ScRangeName* pNewUndoRange, ScRangeName* pNewRedoRange,
+ ScDBCollection* pNewUndoDB, ScDBCollection* pNewRedoDB,
+ BOOL bRedoIsFilled ) :
+ ScSimpleUndo( pNewDocShell ),
+ aRange( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ),
+ aMarkData( rMark ),
+ pUndoDoc( pNewUndoDoc ),
+ pRedoDoc( pNewRedoDoc ),
+ nFlags( nNewFlags ),
+ pUndoRange( pNewUndoRange ),
+ pRedoRange( pNewRedoRange ),
+ pUndoDB( pNewUndoDB ),
+ pRedoDB( pNewRedoDB ),
+ bRedoFilled( bRedoIsFilled )
+{
+ if ( !aMarkData.IsMarked() ) // keine Zelle markiert:
+ aMarkData.SetMarkArea( aRange ); // Paste-Block markieren
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoPaste::~ScUndoPaste()
+{
+ delete pUndoDoc;
+ delete pRedoDoc;
+ delete pUndoRange;
+ delete pRedoRange;
+ delete pUndoDB;
+ delete pRedoDB;
+}
+
+String __EXPORT ScUndoPaste::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_PASTE ); // "Einfuegen"
+}
+
+void ScUndoPaste::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack && (nFlags & IDF_CONTENTS) )
+ pChangeTrack->AppendContentRange( aRange, pUndoDoc,
+ nStartChangeAction, nEndChangeAction, SC_CACM_PASTE );
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+void ScUndoPaste::DoChange( const BOOL bUndo )
+{
+ ScRangeName* pWorkRange = bUndo ? pUndoRange : pRedoRange;
+ ScDBCollection* pWorkDB = bUndo ? pUndoDB : pRedoDB;
+
+ // fuer Undo immer alle oder keine Inhalte sichern
+ USHORT nUndoFlags = IDF_NONE;
+ if (nFlags & IDF_CONTENTS)
+ nUndoFlags |= IDF_CONTENTS;
+ if (nFlags & IDF_ATTRIB)
+ nUndoFlags |= IDF_ATTRIB;
+
+ BOOL bPaintAll = FALSE;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aRange );
+
+ if ( bUndo && !bRedoFilled )
+ {
+ if (!pRedoDoc)
+ {
+ BOOL bColInfo = ( aRange.aStart.Row()==0 && aRange.aEnd.Row()==MAXROW );
+ BOOL bRowInfo = ( aRange.aStart.Col()==0 && aRange.aEnd.Col()==MAXCOL );
+ pRedoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRedoDoc->InitUndo( pDoc, aRange.aStart.Tab(), aRange.aStart.Tab(),
+ bColInfo, bRowInfo );
+ }
+ // Redo-Daten beim ersten Undo aus dem Dokument lesen
+ pDoc->CopyToDocument( aRange, nUndoFlags, FALSE, pRedoDoc );
+ bRedoFilled = TRUE;
+ }
+
+ BOOL bHasLines = pDoc->HasAttrib( aRange, HASATTR_PAINTEXT );
+
+ aMarkData.MarkToMulti();
+ pDoc->DeleteSelection( nUndoFlags, aMarkData );
+ aMarkData.MarkToSimple();
+
+ if ( !bUndo && pRedoDoc ) // Redo: UndoToDocument vorher
+ pRedoDoc->UndoToDocument( aRange, nUndoFlags, FALSE, pDoc );
+
+ if (pWorkRange)
+ pDoc->SetRangeName( new ScRangeName( *pWorkRange ) );
+ if (pWorkDB)
+ {
+ pDoc->SetDBCollection( new ScDBCollection( *pWorkDB ) );
+ if ( pDoc->RefreshAutoFilter( 0,0, MAXCOL,MAXROW, aRange.aStart.Tab() ) )
+ bPaintAll = TRUE;
+ }
+
+ if (bUndo) // Undo: UndoToDocument hinterher
+ pUndoDoc->UndoToDocument( aRange, nUndoFlags, FALSE, pDoc );
+
+ if ( bUndo )
+ {
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+ }
+ else
+ SetChangeTrack();
+
+ ScRange aDrawRange( aRange );
+ USHORT nPaint = PAINT_GRID;
+ USHORT nPaintExt = 0;
+ if (bPaintAll)
+ {
+ aDrawRange.aStart.SetCol(0);
+ aDrawRange.aStart.SetRow(0);
+ aDrawRange.aEnd.SetCol(MAXCOL);
+ aDrawRange.aEnd.SetRow(MAXROW);
+ nPaint |= PAINT_TOP | PAINT_LEFT;
+/*A*/ if (pViewShell)
+ pViewShell->AdjustBlockHeight(FALSE);
+ }
+ else
+ {
+ if ( aRange.aStart.Row() == 0 && aRange.aEnd.Row() == MAXROW ) // ganze Spalte
+ {
+ nPaint |= PAINT_TOP;
+ aDrawRange.aEnd.SetCol(MAXCOL);
+ }
+ if ( aRange.aStart.Col() == 0 && aRange.aEnd.Col() == MAXCOL ) // ganze Zeile
+ {
+ nPaint |= PAINT_LEFT;
+ aDrawRange.aEnd.SetRow(MAXROW);
+ }
+/*A*/ if ((pViewShell) && pViewShell->AdjustBlockHeight(FALSE))
+ {
+ aDrawRange.aStart.SetCol(0);
+ aDrawRange.aStart.SetRow(0);
+ aDrawRange.aEnd.SetCol(MAXCOL);
+ aDrawRange.aEnd.SetRow(MAXROW);
+ nPaint |= PAINT_LEFT;
+ }
+ bHasLines |= pDoc->HasAttrib( aDrawRange, HASATTR_PAINTEXT );
+ if (bHasLines) nPaintExt = SC_PF_LINES;
+ }
+ pDocShell->PostPaint( aDrawRange, nPaint, nPaintExt );
+
+ pDocShell->PostDataChanged();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+}
+
+void __EXPORT ScUndoPaste::Undo()
+{
+ BeginUndo();
+ DoChange( TRUE );
+ ShowTable( aRange );
+ EndUndo();
+}
+
+void __EXPORT ScUndoPaste::Redo()
+{
+ BeginRedo();
+ DoChange( FALSE );
+ EndRedo();
+}
+
+void __EXPORT ScUndoPaste::Repeat(SfxRepeatTarget& rTarget)
+{
+//? Extra-Flags sichern ?
+
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->PasteFromClip( nFlags );
+}
+
+BOOL __EXPORT ScUndoPaste::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Verschieben/Kopieren (Drag & Drop)
+//
+
+ScUndoDragDrop::ScUndoDragDrop( ScDocShell* pNewDocShell,
+ const ScRange& rRange, ScAddress aNewDestPos, BOOL bNewCut,
+ ScDocument* pUndoDocument, ScRefUndoData* pRefData, BOOL bScenario ) :
+ ScMoveUndo( pNewDocShell, pUndoDocument, pRefData, SC_UNDO_REFFIRST ),
+ aSrcRange( rRange ),
+ bCut( bNewCut ),
+ bKeepScenarioFlags( bScenario )
+{
+ ScAddress aDestEnd(aNewDestPos);
+ aDestEnd.IncRow(aSrcRange.aEnd.Row() - aSrcRange.aStart.Row());
+ aDestEnd.IncCol(aSrcRange.aEnd.Col() - aSrcRange.aStart.Col());
+ aDestEnd.IncTab(aSrcRange.aEnd.Tab() - aSrcRange.aStart.Tab());
+
+ aDestRange.aStart = aNewDestPos;
+ aDestRange.aEnd = aDestEnd;
+
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoDragDrop::~ScUndoDragDrop()
+{
+}
+
+String __EXPORT ScUndoDragDrop::GetComment() const
+{ // "Verschieben" : "Kopieren"
+ return bCut ?
+ ScGlobal::GetRscString( STR_UNDO_MOVE ) :
+ ScGlobal::GetRscString( STR_UNDO_COPY );
+}
+
+void ScUndoDragDrop::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ if ( bCut )
+ {
+ nStartChangeAction = pChangeTrack->GetActionMax() + 1;
+ pChangeTrack->AppendMove( aSrcRange, aDestRange, pRefUndoDoc );
+ nEndChangeAction = pChangeTrack->GetActionMax();
+ }
+ else
+ pChangeTrack->AppendContentRange( aDestRange, pRefUndoDoc,
+ nStartChangeAction, nEndChangeAction );
+ }
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+void ScUndoDragDrop::PaintArea( ScRange aRange ) const
+{
+ USHORT nExtFlags = PAINT_GRID;
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ if (pViewShell)
+ {
+ VirtualDevice aVirtDev;
+ ScViewData* pViewData = pViewShell->GetViewData();
+
+ if ( pDoc->SetOptimalHeight( aRange.aStart.Row(), aRange.aEnd.Row(),
+ aRange.aStart.Tab(), 0, &aVirtDev,
+ pViewData->GetPPTX(), pViewData->GetPPTY(),
+ pViewData->GetZoomX(), pViewData->GetZoomY(),
+ FALSE ) )
+ {
+ aRange.aStart.SetCol(0);
+ aRange.aEnd.SetCol(MAXCOL);
+ aRange.aEnd.SetRow(MAXROW);
+ nExtFlags |= PAINT_LEFT;
+ }
+ }
+
+ if ( bKeepScenarioFlags )
+ {
+ // Szenarien mitkopiert -> auch Szenario-Rahmen painten
+ aRange.aStart.SetCol(0);
+ aRange.aStart.SetRow(0);
+ aRange.aEnd.SetCol(MAXCOL);
+ aRange.aEnd.SetRow(MAXROW);
+ }
+
+ pDocShell->PostPaint( aRange, nExtFlags );
+}
+
+
+void ScUndoDragDrop::DoUndo( ScRange aRange ) const
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+
+//? DB-Areas vor Daten, damit bei ExtendMerge die Autofilter-Knoepfe stimmen
+
+ ScRange aPaintRange = aRange;
+ pDoc->ExtendMerge( aPaintRange ); // vor dem Loeschen
+
+ pDoc->DeleteAreaTab( aRange, IDF_ALL );
+ pRefUndoDoc->CopyToDocument( aRange, IDF_ALL, FALSE, pDoc );
+ if ( pDoc->HasAttrib( aRange, HASATTR_MERGED ) )
+ pDoc->ExtendMerge( aRange, TRUE );
+
+ aPaintRange.aEnd.SetCol( Max( aPaintRange.aEnd.Col(), aRange.aEnd.Col() ) );
+ aPaintRange.aEnd.SetRow( Max( aPaintRange.aEnd.Row(), aRange.aEnd.Row() ) );
+ PaintArea( aPaintRange );
+}
+
+void __EXPORT ScUndoDragDrop::Undo()
+{
+ BeginUndo();
+ DoUndo(aDestRange);
+ if (bCut)
+ DoUndo(aSrcRange);
+ EndUndo();
+}
+
+void __EXPORT ScUndoDragDrop::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDocument* pClipDoc = new ScDocument( SCDOCMODE_CLIP );
+
+ USHORT nTab;
+ ScMarkData aSourceMark;
+ for (nTab=aSrcRange.aStart.Tab(); nTab<=aSrcRange.aEnd.Tab(); nTab++)
+ aSourceMark.SelectTable( nTab, TRUE );
+ pDoc->CopyToClip( aSrcRange.aStart.Col(), aSrcRange.aStart.Row(),
+ aSrcRange.aEnd.Col(), aSrcRange.aEnd.Row(),
+ bCut, pClipDoc, FALSE, &aSourceMark, bKeepScenarioFlags );
+
+ if (bCut)
+ {
+ ScRange aSrcPaintRange = aSrcRange;
+ pDoc->ExtendMerge( aSrcPaintRange ); // vor dem Loeschen
+ pDoc->DeleteAreaTab( aSrcRange, IDF_ALL );
+ PaintArea( aSrcPaintRange );
+ }
+
+ ScMarkData aDestMark;
+ for (nTab=aDestRange.aStart.Tab(); nTab<=aDestRange.aEnd.Tab(); nTab++)
+ aDestMark.SelectTable( nTab, TRUE );
+ pDoc->CopyFromClip( aDestRange, aDestMark, IDF_ALL, NULL, pClipDoc, TRUE );
+ for (nTab=aDestRange.aStart.Tab(); nTab<=aDestRange.aEnd.Tab(); nTab++)
+ {
+ USHORT nEndCol = aDestRange.aEnd.Col();
+ USHORT nEndRow = aDestRange.aEnd.Row();
+ pDoc->ExtendMerge( aDestRange.aStart.Col(), aDestRange.aStart.Row(),
+ nEndCol, nEndRow, nTab, TRUE );
+ PaintArea( ScRange( aDestRange.aStart.Col(), aDestRange.aStart.Row(), nTab,
+ nEndCol, nEndRow, nTab ) );
+ }
+
+ SetChangeTrack();
+
+ delete pClipDoc;
+ ShowTable( aDestRange.aStart.Tab() );
+ EndRedo();
+}
+
+void __EXPORT ScUndoDragDrop::Repeat(SfxRepeatTarget& rTarget)
+{
+}
+
+BOOL __EXPORT ScUndoDragDrop::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE; // geht nicht
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Liste der Bereichsnamen einfuegen
+// (Einfuegen|Name|Einfuegen =>[Liste])
+//
+
+ScUndoListNames::ScUndoListNames( ScDocShell* pNewDocShell, const ScRange& rRange,
+ ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc ) :
+ ScBlockUndo( pNewDocShell, rRange, SC_UNDO_AUTOHEIGHT ),
+ pUndoDoc( pNewUndoDoc ),
+ pRedoDoc( pNewRedoDoc )
+{
+}
+
+__EXPORT ScUndoListNames::~ScUndoListNames()
+{
+ delete pUndoDoc;
+ delete pRedoDoc;
+}
+
+String __EXPORT ScUndoListNames::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_LISTNAMES );
+}
+
+void ScUndoListNames::DoChange( ScDocument* pSrcDoc ) const
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ pDoc->DeleteAreaTab( aBlockRange, IDF_ALL );
+ pSrcDoc->CopyToDocument( aBlockRange, IDF_ALL, FALSE, pDoc );
+ pDocShell->PostPaint( aBlockRange, PAINT_GRID );
+ pDocShell->PostDataChanged();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+}
+
+void __EXPORT ScUndoListNames::Undo()
+{
+ BeginUndo();
+ DoChange(pUndoDoc);
+ EndUndo();
+}
+
+void __EXPORT ScUndoListNames::Redo()
+{
+ BeginRedo();
+ DoChange(pRedoDoc);
+ EndRedo();
+}
+
+void __EXPORT ScUndoListNames::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->InsertNameList();
+}
+
+BOOL __EXPORT ScUndoListNames::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Szenario anwenden
+// (Extras|Szenarien)
+//
+
+ScUndoUseScenario::ScUndoUseScenario( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+/*C*/ const ScArea& rDestArea,
+ ScDocument* pNewUndoDoc,
+ const String& rNewName ) :
+ ScSimpleUndo( pNewDocShell ),
+ pUndoDoc( pNewUndoDoc ),
+ aMarkData( rMark ),
+ aName( rNewName )
+{
+ aRange.aStart.SetCol(rDestArea.nColStart);
+ aRange.aStart.SetRow(rDestArea.nRowStart);
+ aRange.aStart.SetTab(rDestArea.nTab);
+ aRange.aEnd.SetCol(rDestArea.nColEnd);
+ aRange.aEnd.SetRow(rDestArea.nRowEnd);
+ aRange.aEnd.SetTab(rDestArea.nTab);
+}
+
+__EXPORT ScUndoUseScenario::~ScUndoUseScenario()
+{
+ delete pUndoDoc;
+}
+
+String __EXPORT ScUndoUseScenario::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_USESCENARIO );
+}
+
+void __EXPORT ScUndoUseScenario::Undo()
+{
+ BeginUndo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ }
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->DeleteSelection( IDF_ALL, aMarkData );
+ pUndoDoc->CopyToDocument( aRange, IDF_ALL, TRUE, pDoc, &aMarkData );
+
+ // Szenario-Tabellen
+ BOOL bFrame = FALSE;
+ USHORT nTab = aRange.aStart.Tab();
+ USHORT nEndTab = nTab;
+ while ( pUndoDoc->HasTable(nEndTab+1) && pUndoDoc->IsScenario(nEndTab+1) )
+ ++nEndTab;
+ for (USHORT i = nTab+1; i<=nEndTab; i++)
+ {
+ // Flags immer
+ String aComment;
+ Color aColor;
+ USHORT nScenFlags;
+ pUndoDoc->GetScenarioData( i, aComment, aColor, nScenFlags );
+ pDoc->SetScenarioData( i, aComment, aColor, nScenFlags );
+ BOOL bActive = pUndoDoc->IsActiveScenario( i );
+ pDoc->SetActiveScenario( i, bActive );
+ // Bei Zurueckkopier-Szenarios auch Inhalte
+ if ( nScenFlags & SC_SCENARIO_TWOWAY )
+ {
+ pDoc->DeleteAreaTab( 0,0, MAXCOL,MAXROW, i, IDF_ALL );
+ pUndoDoc->CopyToDocument( 0,0,i, MAXCOL,MAXROW,i, IDF_ALL,FALSE, pDoc );
+ }
+ if ( nScenFlags & SC_SCENARIO_SHOWFRAME )
+ bFrame = TRUE;
+ }
+
+ // Wenn sichtbare Rahmen, dann alles painten
+ if (bFrame)
+ pDocShell->PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID | PAINT_EXTRAS );
+ else
+ pDocShell->PostPaint( aRange, PAINT_GRID | PAINT_EXTRAS );
+ pDocShell->PostDataChanged();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+
+ ShowTable( aRange.aStart.Tab() );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoUseScenario::Redo()
+{
+ USHORT nTab = aRange.aStart.Tab();
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ pViewShell->SetTabNo( nTab );
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ }
+
+ pDocShell->UseScenario( nTab, aName, FALSE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoUseScenario::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ String aTemp = aName;
+ ((ScTabViewTarget&)rTarget).GetViewShell()->UseScenario(aTemp);
+ }
+}
+
+BOOL __EXPORT ScUndoUseScenario::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScViewData* pViewData = ((ScTabViewTarget&)rTarget).GetViewShell()->GetViewData();
+ return !pViewData->GetDocument()->IsScenario( pViewData->GetTabNo() );
+ }
+ return FALSE;
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Vorlage anwenden
+// (Format|Vorlagenkatalog)
+//
+
+ScUndoSelectionStyle::ScUndoSelectionStyle( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ const ScRange& rRange,
+ const String& rName,
+ ScDocument* pNewUndoDoc ) :
+ ScSimpleUndo( pNewDocShell ),
+ aMarkData( rMark ),
+ aRange( rRange ),
+ aStyleName( rName ),
+ pUndoDoc( pNewUndoDoc )
+{
+ aMarkData.MarkToMulti();
+}
+
+__EXPORT ScUndoSelectionStyle::~ScUndoSelectionStyle()
+{
+ delete pUndoDoc;
+}
+
+String __EXPORT ScUndoSelectionStyle::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_APPLYCELLSTYLE );
+}
+
+void ScUndoSelectionStyle::DoChange( const BOOL bUndo )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+ }
+
+ ScRange aWorkRange( aRange );
+ if ( pDoc->HasAttrib( aWorkRange, HASATTR_MERGED ) ) // zusammengefasste Zellen?
+ pDoc->ExtendMerge( aWorkRange, TRUE );
+
+ BOOL bHasLines = pDoc->HasAttrib( aWorkRange, HASATTR_PAINTEXT );
+
+ if (bUndo) // bei Undo alte Daten wieder reinschubsen
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ ScRange aCopyRange = aWorkRange;
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+ pUndoDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, TRUE, pDoc, &aMarkData );
+ }
+ else // bei Redo Style wieder zuweisen
+ {
+ ScStyleSheetPool* pStlPool = pDoc->GetStyleSheetPool();
+ ScStyleSheet* pStyleSheet =
+ (ScStyleSheet*) pStlPool->Find( aStyleName, SFX_STYLE_FAMILY_PARA );
+ if (!pStyleSheet)
+ {
+ DBG_ERROR("StyleSheet not found");
+ return;
+ }
+ pDoc->ApplySelectionStyle( *pStyleSheet, aMarkData );
+ }
+
+ bHasLines = bHasLines || pDoc->HasAttrib( aWorkRange, HASATTR_PAINTEXT );
+
+ if ( !( (pViewShell) && pViewShell->AdjustBlockHeight() ) )
+/*A*/ pDocShell->PostPaint( aWorkRange, PAINT_GRID | PAINT_EXTRAS, (bHasLines ? SC_PF_LINES : 0) );
+
+ ShowTable( aWorkRange.aStart.Tab() );
+}
+
+void __EXPORT ScUndoSelectionStyle::Undo()
+{
+ BeginUndo();
+ DoChange( TRUE );
+ EndUndo();
+}
+
+void __EXPORT ScUndoSelectionStyle::Redo()
+{
+ BeginRedo();
+ DoChange( FALSE );
+ EndRedo();
+}
+
+void __EXPORT ScUndoSelectionStyle::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScStyleSheetPool* pStlPool = pDoc->GetStyleSheetPool();
+ ScStyleSheet* pStyleSheet = (ScStyleSheet*) pStlPool->
+ Find( aStyleName, SFX_STYLE_FAMILY_PARA );
+ if (!pStyleSheet)
+ {
+ DBG_ERROR("StyleSheet not found");
+ return;
+ }
+
+ ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
+ rViewShell.SetStyleSheetToMarked( pStyleSheet, TRUE );
+ }
+}
+
+BOOL __EXPORT ScUndoSelectionStyle::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+USHORT __EXPORT ScUndoSelectionStyle::GetId() const
+{
+ return STR_UNDO_APPLYCELLSTYLE;
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Matrix-Formel eingeben
+//
+
+ScUndoEnterMatrix::ScUndoEnterMatrix( ScDocShell* pNewDocShell, const ScRange& rArea,
+ ScDocument* pNewUndoDoc, const String& rForm ) :
+ ScBlockUndo( pNewDocShell, rArea, SC_UNDO_SIMPLE ),
+ pUndoDoc( pNewUndoDoc ),
+ aFormula( rForm )
+{
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoEnterMatrix::~ScUndoEnterMatrix()
+{
+ delete pUndoDoc;
+}
+
+String __EXPORT ScUndoEnterMatrix::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_ENTERMATRIX );
+}
+
+void ScUndoEnterMatrix::SetChangeTrack()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->AppendContentRange( aBlockRange, pUndoDoc,
+ nStartChangeAction, nEndChangeAction );
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+void __EXPORT ScUndoEnterMatrix::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ pDoc->DeleteAreaTab( aBlockRange, IDF_ALL );
+ pUndoDoc->CopyToDocument( aBlockRange, IDF_ALL, FALSE, pDoc );
+ pDocShell->PostPaint( aBlockRange, PAINT_GRID );
+ pDocShell->PostDataChanged();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoEnterMatrix::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScMarkData aDestMark;
+ aDestMark.SelectOneTable( aBlockRange.aStart.Tab() );
+ aDestMark.SetMarkArea( aBlockRange );
+
+ pDoc->InsertMatrixFormula( aBlockRange.aStart.Col(), aBlockRange.aStart.Row(),
+ aBlockRange.aEnd.Col(), aBlockRange.aEnd.Row(),
+ aDestMark, aFormula );
+// pDocShell->PostPaint( aBlockRange, PAINT_GRID ); // nicht noetig ???
+
+ SetChangeTrack();
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoEnterMatrix::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ String aTemp = aFormula;
+ ((ScTabViewTarget&)rTarget).GetViewShell()->EnterMatrix(aTemp);
+ }
+}
+
+BOOL __EXPORT ScUndoEnterMatrix::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+// -----------------------------------------------------------------------
+//
+// Einzug vermindern / erhoehen
+//
+
+ScRange lcl_GetMultiMarkRange( const ScMarkData& rMark )
+{
+ ScRange aRange;
+ rMark.GetMultiMarkArea( aRange );
+ return aRange;
+}
+
+ScUndoIndent::ScUndoIndent( ScDocShell* pNewDocShell, const ScMarkData& rMark,
+ ScDocument* pNewUndoDoc, BOOL bIncrement ) :
+ ScBlockUndo( pNewDocShell, lcl_GetMultiMarkRange(rMark), SC_UNDO_AUTOHEIGHT ),
+ aMarkData( rMark ),
+ pUndoDoc( pNewUndoDoc ),
+ bIsIncrement( bIncrement )
+{
+}
+
+__EXPORT ScUndoIndent::~ScUndoIndent()
+{
+ delete pUndoDoc;
+}
+
+String __EXPORT ScUndoIndent::GetComment() const
+{
+ USHORT nId = bIsIncrement ? STR_UNDO_INC_INDENT : STR_UNDO_DEC_INDENT;
+ return ScGlobal::GetRscString( nId );
+}
+
+void __EXPORT ScUndoIndent::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ ScRange aCopyRange = aBlockRange;
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+ pUndoDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, TRUE, pDoc, &aMarkData );
+ pDocShell->PostPaint( aBlockRange, PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoIndent::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->ChangeSelectionIndent( bIsIncrement, aMarkData );
+ pDocShell->PostPaint( aBlockRange, PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoIndent::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->ChangeIndent( bIsIncrement );
+}
+
+BOOL __EXPORT ScUndoIndent::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+// -----------------------------------------------------------------------
+//
+// einzelne Items per Which-IDs aus Bereich loeschen
+//
+
+ScUndoClearItems::ScUndoClearItems( ScDocShell* pNewDocShell, const ScMarkData& rMark,
+ ScDocument* pNewUndoDoc, const USHORT* pW ) :
+ ScBlockUndo( pNewDocShell, lcl_GetMultiMarkRange(rMark), SC_UNDO_AUTOHEIGHT ),
+ aMarkData( rMark ),
+ pUndoDoc( pNewUndoDoc ),
+ pWhich( NULL )
+{
+ DBG_ASSERT( pW, "ScUndoClearItems: Which-Pointer ist 0" );
+
+ USHORT nCount = 0;
+ while ( pW[nCount] )
+ ++nCount;
+ pWhich = new USHORT[nCount+1];
+ for (USHORT i=0; i<=nCount; i++)
+ pWhich[i] = pW[i];
+}
+
+__EXPORT ScUndoClearItems::~ScUndoClearItems()
+{
+ delete pUndoDoc;
+ delete pWhich;
+}
+
+String __EXPORT ScUndoClearItems::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_DELETECONTENTS );
+}
+
+void __EXPORT ScUndoClearItems::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pUndoDoc->CopyToDocument( aBlockRange, IDF_ATTRIB, TRUE, pDoc, &aMarkData );
+ pDocShell->PostPaint( aBlockRange, PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoClearItems::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->ClearSelectionItems( pWhich, aMarkData );
+ pDocShell->PostPaint( aBlockRange, PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoClearItems::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScViewData* pViewData = ((ScTabViewTarget&)rTarget).GetViewShell()->GetViewData();
+ ScDocFunc aFunc(*pViewData->GetDocShell());
+ aFunc.ClearItems( pViewData->GetMarkData(), pWhich, FALSE );
+ }
+}
+
+BOOL __EXPORT ScUndoClearItems::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+// -----------------------------------------------------------------------
+//
+// Alle Umbrueche einer Tabelle loeschen
+//
+
+ScUndoRemoveBreaks::ScUndoRemoveBreaks( ScDocShell* pNewDocShell,
+ USHORT nNewTab, ScDocument* pNewUndoDoc ) :
+ ScSimpleUndo( pNewDocShell ),
+ nTab( nNewTab ),
+ pUndoDoc( pNewUndoDoc )
+{
+}
+
+__EXPORT ScUndoRemoveBreaks::~ScUndoRemoveBreaks()
+{
+ delete pUndoDoc;
+}
+
+String __EXPORT ScUndoRemoveBreaks::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_REMOVEBREAKS );
+}
+
+void __EXPORT ScUndoRemoveBreaks::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ pUndoDoc->CopyToDocument( 0,0,nTab, MAXCOL,MAXROW,nTab, IDF_NONE, FALSE, pDoc );
+ if (pViewShell)
+ pViewShell->UpdatePageBreakData( TRUE );
+ pDocShell->PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoRemoveBreaks::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ pDoc->RemoveManualBreaks(nTab);
+ pDoc->UpdatePageBreaks(nTab);
+ if (pViewShell)
+ pViewShell->UpdatePageBreakData( TRUE );
+ pDocShell->PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoRemoveBreaks::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
+ rViewShell.RemoveManualBreaks();
+ }
+}
+
+BOOL __EXPORT ScUndoRemoveBreaks::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+// -----------------------------------------------------------------------
+//
+// Zusammenfassung aufheben (fuer einen ganzen Bereich)
+//
+
+ScUndoRemoveMerge::ScUndoRemoveMerge( ScDocShell* pNewDocShell,
+ const ScRange& rArea, ScDocument* pNewUndoDoc ) :
+ ScBlockUndo( pNewDocShell, rArea, SC_UNDO_SIMPLE ),
+ pUndoDoc( pNewUndoDoc )
+{
+}
+
+__EXPORT ScUndoRemoveMerge::~ScUndoRemoveMerge()
+{
+ delete pUndoDoc;
+}
+
+String __EXPORT ScUndoRemoveMerge::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_REMERGE ); // "Zusammenfassung aufheben"
+}
+
+void __EXPORT ScUndoRemoveMerge::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScRange aExtended = aBlockRange;
+ pUndoDoc->ExtendMerge( aExtended );
+
+ pDoc->DeleteAreaTab( aExtended, IDF_ATTRIB );
+ pUndoDoc->CopyToDocument( aExtended, IDF_ATTRIB, FALSE, pDoc );
+
+ BOOL bDidPaint = FALSE;
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if ( pViewShell )
+ {
+ pViewShell->SetTabNo( aExtended.aStart.Tab() );
+ bDidPaint = pViewShell->AdjustRowHeight( aExtended.aStart.Row(), aExtended.aEnd.Row() );
+ }
+ if (!bDidPaint)
+ ScUndoUtil::PaintMore( pDocShell, aExtended );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoRemoveMerge::Redo()
+{
+ BeginRedo();
+
+ USHORT nTab = aBlockRange.aStart.Tab();
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRange aExtended = aBlockRange;
+ pDoc->ExtendMerge( aExtended );
+ ScRange aRefresh = aExtended;
+ pDoc->ExtendOverlapped( aRefresh );
+
+ // ausfuehren
+
+ const SfxPoolItem& rDefAttr = pDoc->GetPool()->GetDefaultItem( ATTR_MERGE );
+ ScPatternAttr aPattern( pDoc->GetPool() );
+ aPattern.GetItemSet().Put( rDefAttr );
+ pDoc->ApplyPatternAreaTab( aBlockRange.aStart.Col(), aBlockRange.aStart.Row(),
+ aBlockRange.aEnd.Col(), aBlockRange.aEnd.Row(), nTab,
+ aPattern );
+
+ pDoc->RemoveFlagsTab( aExtended.aStart.Col(), aExtended.aStart.Row(),
+ aExtended.aEnd.Col(), aExtended.aEnd.Row(), nTab,
+ SC_MF_HOR | SC_MF_VER );
+
+ pDoc->ExtendMerge( aRefresh, TRUE, FALSE );
+
+ // Paint
+
+ BOOL bDidPaint = FALSE;
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if ( pViewShell )
+ {
+ pViewShell->SetTabNo( aExtended.aStart.Tab() );
+ bDidPaint = pViewShell->AdjustRowHeight( aExtended.aStart.Row(), aExtended.aEnd.Row() );
+ }
+ if (!bDidPaint)
+ ScUndoUtil::PaintMore( pDocShell, aExtended );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoRemoveMerge::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->RemoveMerge();
+}
+
+BOOL __EXPORT ScUndoRemoveMerge::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+// -----------------------------------------------------------------------
+//
+// nur Umrandung setzen, per ScRangeList (StarOne)
+//
+
+ScRange lcl_TotalRange( const ScRangeList& rRanges )
+{
+ ScRange aTotal;
+ ULONG nCount = rRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScRange aRange = *rRanges.GetObject(i);
+ if (i==0)
+ aTotal = aRange;
+ else
+ {
+ if (aRange.aStart.Col() < aTotal.aStart.Col())
+ aTotal.aStart.SetCol(aRange.aStart.Col());
+ if (aRange.aStart.Row() < aTotal.aStart.Row())
+ aTotal.aStart.SetRow(aRange.aStart.Row());
+ if (aRange.aStart.Tab() < aTotal.aStart.Tab())
+ aTotal.aStart.SetTab(aRange.aStart.Tab());
+ if (aRange.aEnd.Col() > aTotal.aEnd.Col())
+ aTotal.aEnd.SetCol(aRange.aEnd.Col());
+ if (aRange.aEnd.Row() > aTotal.aEnd.Row())
+ aTotal.aEnd.SetRow(aRange.aEnd.Row());
+ if (aRange.aEnd.Tab() > aTotal.aEnd.Tab())
+ aTotal.aEnd.SetTab(aRange.aEnd.Tab());
+ }
+ }
+ return aTotal;
+}
+
+ScUndoBorder::ScUndoBorder( ScDocShell* pNewDocShell,
+ const ScRangeList& rRangeList, ScDocument* pNewUndoDoc,
+ const SvxBoxItem& rNewOuter, const SvxBoxInfoItem& rNewInner ) :
+ ScBlockUndo( pNewDocShell, lcl_TotalRange(rRangeList), SC_UNDO_SIMPLE ),
+ pUndoDoc( pNewUndoDoc )
+{
+ pRanges = new ScRangeList(rRangeList);
+ pOuter = new SvxBoxItem(rNewOuter);
+ pInner = new SvxBoxInfoItem(rNewInner);
+}
+
+__EXPORT ScUndoBorder::~ScUndoBorder()
+{
+ delete pUndoDoc;
+ delete pRanges;
+ delete pOuter;
+ delete pInner;
+}
+
+String __EXPORT ScUndoBorder::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_SELATTRLINES ); //! eigener String?
+}
+
+void __EXPORT ScUndoBorder::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScMarkData aMarkData;
+ aMarkData.MarkFromRangeList( *pRanges, FALSE );
+ pUndoDoc->CopyToDocument( aBlockRange, IDF_ATTRIB, TRUE, pDoc, &aMarkData );
+ pDocShell->PostPaint( aBlockRange, PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoBorder::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument(); //! Funktion an docfunc aufrufen
+ ULONG nCount = pRanges->Count();
+ ULONG i;
+ for (i=0; i<nCount; i++)
+ {
+ ScRange aRange = *pRanges->GetObject(i);
+ USHORT nTab = aRange.aStart.Tab();
+
+ ScMarkData aMark;
+ aMark.SetMarkArea( aRange );
+ aMark.SelectTable( nTab, TRUE );
+
+ pDoc->ApplySelectionFrame( aMark, pOuter, pInner );
+ }
+ for (i=0; i<nCount; i++)
+ pDocShell->PostPaint( *pRanges->GetObject(i), PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoBorder::Repeat(SfxRepeatTarget& rTarget)
+{
+ //! spaeter (wenn die Funktion aus cellsuno nach docfunc gewandert ist)
+}
+
+BOOL __EXPORT ScUndoBorder::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE; // s.o.
+}
+
+
+
+
diff --git a/sc/source/ui/undo/undoblk2.cxx b/sc/source/ui/undo/undoblk2.cxx
new file mode 100644
index 000000000000..041a9f9c2239
--- /dev/null
+++ b/sc/source/ui/undo/undoblk2.cxx
@@ -0,0 +1,308 @@
+/*************************************************************************
+ *
+ * $RCSfile: undoblk2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define _MACRODLG_HXX
+#define _BIGINT_HXX
+#define _SVDXOUT_HXX
+#define _SVDATTR_HXX
+#define _SVDSURO_HXX
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include "scitems.hxx" // SearchItem
+//#include <segmentc.hxx>
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "undoblk.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+#include "olinetab.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "target.hxx"
+
+#include "undoolk.hxx" //! GetUndo ins Document verschieben!
+
+
+// STATIC DATA -----------------------------------------------------------
+
+TYPEINIT1(ScUndoWidthOrHeight, SfxUndoAction);
+
+// -----------------------------------------------------------------------
+
+
+
+//
+// Spaltenbreiten oder Zeilenhoehen aendern
+//
+
+ScUndoWidthOrHeight::ScUndoWidthOrHeight( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ USHORT nNewStart, USHORT nNewStartTab, USHORT nNewEnd, USHORT nNewEndTab,
+ ScDocument* pNewUndoDoc, USHORT nNewCnt, USHORT* pNewRanges,
+ ScOutlineTable* pNewUndoTab,
+ ScSizeMode eNewMode, USHORT nNewSizeTwips, BOOL bNewWidth ) :
+ ScSimpleUndo( pNewDocShell ),
+ aMarkData( rMark ),
+ nStart( nNewStart ),
+ nEnd( nNewEnd ),
+ nStartTab( nNewStartTab ),
+ nEndTab( nNewEndTab ),
+ pUndoDoc( pNewUndoDoc ),
+ nRangeCnt( nNewCnt ),
+ pRanges( pNewRanges ),
+ pUndoTab( pNewUndoTab ),
+ eMode( eNewMode ),
+ nNewSize( nNewSizeTwips ),
+ bWidth( bNewWidth ),
+ pDrawUndo( NULL )
+{
+ pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() );
+}
+
+__EXPORT ScUndoWidthOrHeight::~ScUndoWidthOrHeight()
+{
+ delete[] pRanges;
+ delete pUndoDoc;
+ delete pUndoTab;
+ DeleteSdrUndoAction( pDrawUndo );
+}
+
+String __EXPORT ScUndoWidthOrHeight::GetComment() const
+{
+ // [ "optimale " ] "Spaltenbreite" | "Zeilenhoehe"
+ return ( bWidth ?
+ ( ( eMode == SC_SIZE_OPTIMAL )?
+ ScGlobal::GetRscString( STR_UNDO_OPTCOLWIDTH ) :
+ ScGlobal::GetRscString( STR_UNDO_COLWIDTH )
+ ) :
+ ( ( eMode == SC_SIZE_OPTIMAL )?
+ ScGlobal::GetRscString( STR_UNDO_OPTROWHEIGHT ) :
+ ScGlobal::GetRscString( STR_UNDO_ROWHEIGHT )
+ ) );
+}
+
+void __EXPORT ScUndoWidthOrHeight::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (eMode==SC_SIZE_OPTIMAL)
+ {
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+ }
+ }
+
+ if (pUndoTab) // Outlines mit gespeichert?
+ pDoc->SetOutlineTable( nStartTab, pUndoTab );
+
+ USHORT nPaintStart = nStart ? nStart-1 : 0;
+ if (bWidth) // Width
+ {
+ pUndoDoc->CopyToDocument( nStart, 0, nStartTab, nEnd, MAXROW, nEndTab, IDF_NONE, FALSE, pDoc );
+ for (USHORT i=nStartTab; i<=nEndTab; i++)
+ pDoc->UpdatePageBreaks( i );
+ pDocShell->PostPaint( nPaintStart, 0, nStartTab, MAXCOL, MAXROW, nEndTab, PAINT_GRID | PAINT_TOP );
+ }
+ else // Height
+ {
+ pUndoDoc->CopyToDocument( 0, nStart, nStartTab, MAXCOL, nEnd, nEndTab, IDF_NONE, FALSE, pDoc );
+ for (USHORT i=nStartTab; i<=nEndTab; i++)
+ pDoc->UpdatePageBreaks( i );
+ pDocShell->PostPaint( 0, nPaintStart, nStartTab, MAXCOL, MAXROW, nEndTab, PAINT_GRID | PAINT_LEFT );
+ }
+
+ if (pDrawUndo)
+ DoSdrUndoAction( pDrawUndo );
+
+ if (pViewShell)
+ {
+ pViewShell->UpdateScrollBars();
+
+ USHORT nTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nTab < nStartTab || nTab > nEndTab )
+ pViewShell->SetTabNo( nStartTab );
+ }
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoWidthOrHeight::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (eMode==SC_SIZE_OPTIMAL)
+ {
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+ }
+ }
+
+ if (pViewShell)
+ {
+ USHORT nTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nTab < nStartTab || nTab > nEndTab )
+ pViewShell->SetTabNo( nStartTab );
+ }
+
+ // SetWidthOrHeight aendert aktuelle Tabelle !
+ pViewShell->SetWidthOrHeight( bWidth, nRangeCnt, pRanges, eMode, nNewSize, FALSE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoWidthOrHeight::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->SetMarkedWidthOrHeight( bWidth, eMode, nNewSize, TRUE );
+}
+
+BOOL __EXPORT ScUndoWidthOrHeight::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.18 2000/09/17 14:09:28 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.17 2000/08/31 16:38:39 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.16 1999/10/27 14:46:07 hr
+ #65293#: removed SEG_EOFGLOBALS() SEG_FUNCDEF
+
+ Revision 1.15 1996/09/04 17:46:18 RJ
+ ueberarbeitet
+
+
+ Rev 1.14 04 Sep 1996 19:46:18 RJ
+ ueberarbeitet
+
+ Rev 1.13 19 Aug 1996 21:29:44 NN
+ Markierungen werden nicht mehr am Dokument gehalten
+
+ Rev 1.12 08 Dec 1995 14:31:46 NN
+ ScSimpleUndo
+
+ Rev 1.11 10 Oct 1995 09:52:12 NN
+ Paint beim Ausblenden
+
+ Rev 1.10 09 Oct 1995 15:49:16 NN
+ ScTabViewTarget fuer Repeat
+
+ Rev 1.9 04 Oct 1995 19:51:52 NN
+ Repeat mit ViewShell als RepeatTarget
+
+ Rev 1.8 12 Jul 1995 15:07:26 NN
+ __EXPORT bei Destruktoren
+
+ Rev 1.7 11 Jul 1995 12:39:06 HJS
+ add: __EXPORT
+
+ Rev 1.6 17 Jun 1995 14:00:04 TRI
+ EXPORTS
+
+ Rev 1.5 15 Jun 1995 08:52:46 TRI
+ EXPORT
+
+ Rev 1.4 06 Jun 1995 12:35:28 NN
+ Abfrage, ob ViewShell vorhanden
+
+ Rev 1.3 24 Mar 1995 18:39:00 SC
+ out of keys hack
+
+ Rev 1.2 22 Mar 1995 16:39:10 STE
+ undoblk3 abgesplittet
+
+ Rev 1.1 21 Mar 1995 14:40:08 TRI
+ Out of Keys - Defines eingebaut
+
+ Rev 1.0 08 Mar 1995 02:51:52 SC
+ aufgeteilt
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
diff --git a/sc/source/ui/undo/undoblk3.cxx b/sc/source/ui/undo/undoblk3.cxx
new file mode 100644
index 000000000000..5bd8bcd8a87c
--- /dev/null
+++ b/sc/source/ui/undo/undoblk3.cxx
@@ -0,0 +1,2053 @@
+/*************************************************************************
+ *
+ * $RCSfile: undoblk3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#define _MACRODLG_HXX
+#define _BIGINT_HXX
+#define _SVDXOUT_HXX
+#define _SVDATTR_HXX
+#define _SVDSURO_HXX
+
+// INCLUDE -------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/boxitem.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/linkmgr.hxx>
+#include <sfx2/bindings.hxx>
+#include <vcl/virdev.hxx>
+
+#include "undoblk.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "rangenam.hxx"
+#include "arealink.hxx"
+#include "patattr.hxx"
+#include "target.hxx"
+#include "document.hxx"
+#include "docpool.hxx"
+#include "table.hxx"
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+#include "undoolk.hxx"
+#include "undoutil.hxx"
+#include "chgtrack.hxx"
+#include "dociter.hxx"
+
+// STATIC DATA ---------------------------------------------------------------
+
+TYPEINIT1(ScUndoDeleteContents, SfxUndoAction);
+TYPEINIT1(ScUndoFillTable, SfxUndoAction);
+TYPEINIT1(ScUndoSelectionAttr, SfxUndoAction);
+TYPEINIT1(ScUndoAutoFill, SfxUndoAction);
+TYPEINIT1(ScUndoMerge, SfxUndoAction);
+TYPEINIT1(ScUndoAutoFormat, SfxUndoAction);
+TYPEINIT1(ScUndoReplace, SfxUndoAction);
+TYPEINIT1(ScUndoTabOp, SfxUndoAction);
+TYPEINIT1(ScUndoSpelling, SfxUndoAction);
+TYPEINIT1(ScUndoRefreshLink, SfxUndoAction);
+TYPEINIT1(ScUndoInsertAreaLink, SfxUndoAction);
+TYPEINIT1(ScUndoRemoveAreaLink, SfxUndoAction);
+TYPEINIT1(ScUndoUpdateAreaLink, SfxUndoAction);
+
+
+// To Do:
+/*A*/ // SetOptimalHeight auf Dokument, wenn keine View
+
+
+//============================================================================
+// class ScUndoDeleteContents
+//
+// Inhalte loeschen
+
+//----------------------------------------------------------------------------
+
+ScUndoDeleteContents::ScUndoDeleteContents(
+ ScDocShell* pNewDocShell,
+ const ScMarkData& rMark, const ScRange& rRange,
+ ScDocument* pNewUndoDoc, BOOL bNewMulti,
+ USHORT nNewFlags, BOOL bObjects )
+ //
+ : ScSimpleUndo( pNewDocShell ),
+ //
+ aMarkData ( rMark ),
+ aRange ( rRange ),
+ pUndoDoc ( pNewUndoDoc ),
+ bMulti ( bNewMulti ), // ueberliquid
+ nFlags ( nNewFlags ),
+ pDrawUndo ( NULL )
+{
+ if (bObjects)
+ pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() );
+
+ if ( !(aMarkData.IsMarked() || aMarkData.IsMultiMarked()) ) // keine Zelle markiert:
+ aMarkData.SetMarkArea( aRange ); // Zelle unter Cursor markieren
+
+ SetChangeTrack();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoDeleteContents::~ScUndoDeleteContents()
+{
+ delete pUndoDoc;
+ DeleteSdrUndoAction( pDrawUndo );
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoDeleteContents::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_DELETECONTENTS ); // "Loeschen"
+}
+
+
+void ScUndoDeleteContents::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack && (nFlags & IDF_CONTENTS) )
+ pChangeTrack->AppendContentRange( aRange, pUndoDoc,
+ nStartChangeAction, nEndChangeAction );
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScUndoDeleteContents::DoChange( const BOOL bUndo )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+ }
+
+ BOOL bPaintExt = FALSE;
+
+ if (bUndo) // nur Undo
+ {
+ USHORT nUndoFlags = IDF_NONE; // entweder alle oder keine Inhalte kopieren
+ if (nFlags & IDF_CONTENTS) // (es sind nur die richtigen ins UndoDoc kopiert worden)
+ nUndoFlags |= IDF_CONTENTS;
+ if (nFlags & IDF_ATTRIB)
+ nUndoFlags |= IDF_ATTRIB;
+ if (nFlags & IDF_EDITATTR) // Edit-Engine-Attribute
+ nUndoFlags |= IDF_STRING; // -> Zellen werden geaendert
+
+ ScRange aCopyRange = aRange;
+ USHORT nTabCount = pDoc->GetTableCount();
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+
+ pUndoDoc->CopyToDocument( aCopyRange, nUndoFlags, bMulti, pDoc, &aMarkData );
+
+ if (pDrawUndo)
+ DoSdrUndoAction( pDrawUndo );
+
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+
+ bPaintExt = pDoc->HasAttrib( aRange, HASATTR_PAINTEXT ); // hinterher
+ }
+ else // nur Redo
+ {
+ bPaintExt = pDoc->HasAttrib( aRange, HASATTR_PAINTEXT ); // vorher
+
+ aMarkData.MarkToMulti();
+ if (pDrawUndo)
+ pDoc->DeleteObjectsInSelection( aMarkData );
+ pDoc->DeleteSelection( nFlags, aMarkData );
+ aMarkData.MarkToSimple();
+
+ SetChangeTrack();
+ }
+
+ USHORT nExtFlags = bPaintExt ? SC_PF_LINES : 0;
+ if ( !( (pViewShell) && pViewShell->AdjustRowHeight(
+ aRange.aStart.Row(), aRange.aEnd.Row() ) ) )
+/*A*/ pDocShell->PostPaint( aRange, PAINT_GRID | PAINT_EXTRAS, nExtFlags );
+
+ pDocShell->PostDataChanged();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+
+ ShowTable( aRange );
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoDeleteContents::Undo()
+{
+ BeginUndo();
+ DoChange( TRUE );
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoDeleteContents::Redo()
+{
+ BeginRedo();
+ DoChange( FALSE );
+ EndRedo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoDeleteContents::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->DeleteContents( nFlags, TRUE );
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoDeleteContents::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+//============================================================================
+// class ScUndoFillTable
+//
+// Tabellen ausfuellen
+// (Bearbeiten|Ausfuellen|...)
+
+//----------------------------------------------------------------------------
+
+ScUndoFillTable::ScUndoFillTable( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc, BOOL bNewMulti, USHORT nSrc,
+ USHORT nFlg, USHORT nFunc, BOOL bSkip, BOOL bLink )
+ //
+ : ScSimpleUndo( pNewDocShell ),
+ //
+ aMarkData ( rMark ),
+ aRange ( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ),
+ pUndoDoc ( pNewUndoDoc ),
+ bMulti ( bNewMulti ),
+ nSrcTab ( nSrc ),
+ nFlags ( nFlg ),
+ nFunction ( nFunc ),
+ bSkipEmpty ( bSkip ),
+ bAsLink ( bLink )
+{
+ SetChangeTrack();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoFillTable::~ScUndoFillTable()
+{
+ delete pUndoDoc;
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoFillTable::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_FILL_TAB );
+}
+
+
+void ScUndoFillTable::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ USHORT nTabCount = pDocShell->GetDocument()->GetTableCount();
+ ScRange aWorkRange(aRange);
+ nStartChangeAction = 0;
+ ULONG nTmpAction;
+ for ( USHORT i = 0; i < nTabCount; i++ )
+ {
+ if (i != nSrcTab && aMarkData.GetTableSelect(i))
+ {
+ aWorkRange.aStart.SetTab(i);
+ aWorkRange.aEnd.SetTab(i);
+ pChangeTrack->AppendContentRange( aWorkRange, pUndoDoc,
+ nTmpAction, nEndChangeAction );
+ if ( !nStartChangeAction )
+ nStartChangeAction = nTmpAction;
+ }
+ }
+ }
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScUndoFillTable::DoChange( const BOOL bUndo )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+ }
+
+ if (bUndo) // nur Undo
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ ScRange aWorkRange(aRange);
+ for ( USHORT i = 0; i < nTabCount; i++ )
+ if (i != nSrcTab && aMarkData.GetTableSelect(i))
+ {
+ aWorkRange.aStart.SetTab(i);
+ aWorkRange.aEnd.SetTab(i);
+ if (bMulti)
+ pDoc->DeleteSelectionTab( i, IDF_ALL, aMarkData );
+ else
+ pDoc->DeleteAreaTab( aWorkRange, IDF_ALL );
+ pUndoDoc->CopyToDocument( aWorkRange, IDF_ALL, bMulti, pDoc, &aMarkData );
+ }
+
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+ }
+ else // nur Redo
+ {
+ aMarkData.MarkToMulti();
+ pDoc->FillTabMarked( nSrcTab, aMarkData, nFlags, nFunction, bSkipEmpty, bAsLink );
+ aMarkData.MarkToSimple();
+ SetChangeTrack();
+ }
+
+ pDocShell->PostPaint(0,0,0,MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_EXTRAS);
+ pDocShell->PostDataChanged();
+
+ // CellContentChanged kommt mit der Markierung
+
+ if (pViewShell)
+ {
+ USHORT nTab = pViewShell->GetViewData()->GetTabNo();
+ if ( !aMarkData.GetTableSelect(nTab) )
+ pViewShell->SetTabNo( nSrcTab );
+
+ pViewShell->DoneBlockMode(); // gibt sonst Probleme, weil Markierung auf falscher Tabelle
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoFillTable::Undo()
+{
+ BeginUndo();
+ DoChange( TRUE );
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoFillTable::Redo()
+{
+ BeginRedo();
+ DoChange( FALSE );
+ EndRedo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoFillTable::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->FillTab( nFlags, nFunction, bSkipEmpty, bAsLink );
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoFillTable::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+//============================================================================
+// class ScUndoSelectionAttr
+//
+// Zellformat aendern
+
+//----------------------------------------------------------------------------
+
+ScUndoSelectionAttr::ScUndoSelectionAttr( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc, BOOL bNewMulti,
+ const ScPatternAttr* pNewApply,
+ const SvxBoxItem* pNewOuter, const SvxBoxInfoItem* pNewInner )
+ //
+ : ScSimpleUndo( pNewDocShell ),
+ //
+ aMarkData ( rMark ),
+ aRange ( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ),
+ pUndoDoc ( pNewUndoDoc ),
+ bMulti ( bNewMulti )
+{
+ ScDocumentPool* pPool = pDocShell->GetDocument()->GetPool();
+ pApplyPattern = (ScPatternAttr*) &pPool->Put( *pNewApply );
+ pLineOuter = pNewOuter ? (SvxBoxItem*) &pPool->Put( *pNewOuter ) : NULL;
+ pLineInner = pNewInner ? (SvxBoxInfoItem*) &pPool->Put( *pNewInner ) : NULL;
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoSelectionAttr::~ScUndoSelectionAttr()
+{
+ ScDocumentPool* pPool = pDocShell->GetDocument()->GetPool();
+ pPool->Remove(*pApplyPattern);
+ if (pLineOuter)
+ pPool->Remove(*pLineOuter);
+ if (pLineInner)
+ pPool->Remove(*pLineInner);
+
+ delete pUndoDoc;
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoSelectionAttr::GetComment() const
+{
+ //"Attribute" "/Linien"
+ return ScGlobal::GetRscString( pLineOuter ? STR_UNDO_SELATTRLINES : STR_UNDO_SELATTR );
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScUndoSelectionAttr::DoChange( const BOOL bUndo )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+ }
+
+ ScRange aEffRange( aRange );
+ if ( pDoc->HasAttrib( aEffRange, HASATTR_MERGED ) ) // zusammengefasste Zellen?
+ pDoc->ExtendMerge( aEffRange );
+
+ BOOL bHasLines = pDoc->HasAttrib( aEffRange, HASATTR_PAINTEXT );
+
+ if (bUndo) // nur bei Undo
+ {
+ ScRange aCopyRange = aRange;
+ USHORT nTabCount = pDoc->GetTableCount();
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+ pUndoDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, bMulti, pDoc, &aMarkData );
+ }
+ else // nur bei Redo
+ {
+ aMarkData.MarkToMulti();
+ pDoc->ApplySelectionPattern( *pApplyPattern, aMarkData );
+ aMarkData.MarkToSimple();
+
+ if (pLineOuter)
+ pDoc->ApplySelectionFrame( aMarkData, pLineOuter, pLineInner );
+ }
+
+ if ( !( (pViewShell) && pViewShell->AdjustBlockHeight() ) )
+/*A*/ pDocShell->PostPaint( aEffRange, PAINT_GRID | PAINT_EXTRAS, (bHasLines ? SC_PF_LINES : 0) );
+
+ ShowTable( aRange );
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoSelectionAttr::Undo()
+{
+ BeginUndo();
+ DoChange( TRUE );
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoSelectionAttr::Redo()
+{
+ BeginRedo();
+ DoChange( FALSE );
+ EndRedo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoSelectionAttr::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
+ if (pLineOuter)
+ rViewShell.ApplyPatternLines( *pApplyPattern, pLineOuter, pLineInner, TRUE );
+ else
+ rViewShell.ApplySelectionPattern( *pApplyPattern, TRUE );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoSelectionAttr::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+//============================================================================
+// class ScUndoAutoFill
+//
+// Auto-Fill (nur einfache Bloecke)
+
+//----------------------------------------------------------------------------
+
+ScUndoAutoFill::ScUndoAutoFill( ScDocShell* pNewDocShell,
+ const ScRange& rRange, const ScRange& rSourceArea,
+ ScDocument* pNewUndoDoc, const ScMarkData& rMark,
+ FillDir eNewFillDir, FillCmd eNewFillCmd, FillDateCmd eNewFillDateCmd,
+ double fNewStartValue, double fNewStepValue, double fNewMaxValue,
+ USHORT nMaxShIndex )
+ //
+ : ScBlockUndo( pNewDocShell, rRange, SC_UNDO_AUTOHEIGHT ),
+ //
+ aSource ( rSourceArea ),
+ aMarkData ( rMark ),
+ pUndoDoc ( pNewUndoDoc ),
+ eFillDir ( eNewFillDir ),
+ eFillCmd ( eNewFillCmd ),
+ eFillDateCmd ( eNewFillDateCmd ),
+ fStartValue ( fNewStartValue ),
+ fStepValue ( fNewStepValue ),
+ fMaxValue ( fNewMaxValue ),
+ nMaxSharedIndex ( nMaxShIndex)
+{
+ SetChangeTrack();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoAutoFill::~ScUndoAutoFill()
+{
+ pDocShell->GetDocument()->EraseNonUsedSharedNames(nMaxSharedIndex);
+ delete pUndoDoc;
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoAutoFill::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_AUTOFILL ); //"Ausfuellen"
+}
+
+
+void ScUndoAutoFill::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->AppendContentRange( aBlockRange, pUndoDoc,
+ nStartChangeAction, nEndChangeAction );
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoAutoFill::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ {
+ if (aMarkData.GetTableSelect(nTab))
+ {
+ ScRange aWorkRange = aBlockRange;
+ aWorkRange.aStart.SetTab(nTab);
+ aWorkRange.aEnd.SetTab(nTab);
+
+ BOOL bHasLines = pDoc->HasAttrib( aWorkRange, HASATTR_PAINTEXT );
+ pDoc->DeleteAreaTab( aWorkRange, IDF_ALL );
+ pUndoDoc->CopyToDocument( aWorkRange, IDF_ALL, FALSE, pDoc );
+
+ pDoc->ExtendMerge( aWorkRange, TRUE );
+ pDocShell->PostPaint( aWorkRange, PAINT_GRID, (bHasLines ? SC_PF_LINES : 0) );
+ }
+ }
+ pDocShell->PostDataChanged();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+
+// Shared-Names loeschen
+// Falls Undo ins Dokument gespeichert
+// => automatisches Loeschen am Ende
+// umarbeiten!!
+
+ String aName = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("___SC_"));
+ aName += String::CreateFromInt32(nMaxSharedIndex);
+ aName += '_';
+ ScRangeName* pRangeName = pDoc->GetRangeName();
+ BOOL bHasFound = FALSE;
+ for (USHORT i = 0; i < pRangeName->GetCount(); i++)
+ {
+ ScRangeData* pRangeData = (*pRangeName)[i];
+ if (pRangeData)
+ {
+ String aRName;
+ pRangeData->GetName(aRName);
+ if (aRName.Search(aName) != STRING_NOTFOUND)
+ {
+ pRangeName->AtFree(i);
+ bHasFound = TRUE;
+ }
+ }
+ }
+ if (bHasFound)
+ pRangeName->SetSharedMaxIndex(pRangeName->GetSharedMaxIndex()-1);
+
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoAutoFill::Redo()
+{
+ BeginRedo();
+
+//! Tabellen selektieren
+
+ USHORT nCount;
+ switch (eFillDir)
+ {
+ case FILL_TO_BOTTOM:
+ nCount = aBlockRange.aEnd.Row() - aSource.aEnd.Row();
+ break;
+ case FILL_TO_RIGHT:
+ nCount = aBlockRange.aEnd.Col() - aSource.aEnd.Col();
+ break;
+ case FILL_TO_TOP:
+ nCount = aSource.aStart.Row() - aBlockRange.aStart.Row();
+ break;
+ case FILL_TO_LEFT:
+ nCount = aSource.aStart.Col() - aBlockRange.aStart.Col();
+ break;
+ }
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ if ( fStartValue != MAXDOUBLE )
+ {
+ USHORT nValX = (eFillDir == FILL_TO_LEFT) ? aSource.aEnd.Col() : aSource.aStart.Col();
+ USHORT nValY = (eFillDir == FILL_TO_TOP ) ? aSource.aEnd.Row() : aSource.aStart.Row();
+ USHORT nTab = aSource.aStart.Tab();
+ pDoc->SetValue( nValX, nValY, nTab, fStartValue );
+ }
+ pDoc->Fill( aSource.aStart.Col(), aSource.aStart.Row(),
+ aSource.aEnd.Col(), aSource.aEnd.Row(),
+ aMarkData, nCount,
+ eFillDir, eFillCmd, eFillDateCmd,
+ fStepValue, fMaxValue );
+
+ SetChangeTrack();
+
+ pDocShell->PostPaint( aBlockRange, PAINT_GRID );
+ pDocShell->PostDataChanged();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+
+ EndRedo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoAutoFill::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
+ if (eFillCmd==FILL_SIMPLE)
+ rViewShell.FillSimple( eFillDir, TRUE );
+ else
+ rViewShell.FillSeries( eFillDir, eFillCmd, eFillDateCmd,
+ fStartValue, fStepValue, fMaxValue, TRUE );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoAutoFill::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+//============================================================================
+// class ScUndoMerge
+//
+// Zellen zusammenfassen / Zusammenfassung aufheben
+
+//----------------------------------------------------------------------------
+
+ScUndoMerge::ScUndoMerge( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ BOOL bNewDoMerge, ScDocument* pNewUndoDoc )
+ //
+ : ScSimpleUndo( pNewDocShell ),
+ //
+ aRange ( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ),
+ bDoMerge( bNewDoMerge ),
+ pUndoDoc( pNewUndoDoc )
+{
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoMerge::~ScUndoMerge()
+{
+ delete pUndoDoc;
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoMerge::GetComment() const
+{
+ // "Zusammenfassen" "Zusammenfassung aufheben"
+ return bDoMerge ?
+ ScGlobal::GetRscString( STR_UNDO_MERGE ) :
+ ScGlobal::GetRscString( STR_UNDO_REMERGE );
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScUndoMerge::DoChange( const BOOL bUndo ) const
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aRange );
+
+ if (bDoMerge == bUndo)
+ pDoc->RemoveMerge( aRange.aStart.Col(), aRange.aStart.Row(), aRange.aStart.Tab() );
+//! pDoc->RemoveMerge( aRange.aStart );
+ else
+/*!*/ pDoc->DoMerge( aRange.aStart.Tab(),
+ aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row() );
+
+ if (pUndoDoc)
+ if (bUndo)
+ {
+ pDoc->DeleteAreaTab( aRange, IDF_CONTENTS );
+ pUndoDoc->CopyToDocument( aRange, IDF_ALL, FALSE, pDoc );
+ }
+ else
+/*!*/ pDoc->DoMergeContents( aRange.aStart.Tab(),
+ aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row() );
+
+ BOOL bDidPaint = FALSE;
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if ( pViewShell )
+ {
+ pViewShell->SetTabNo( aRange.aStart.Tab() );
+ bDidPaint = pViewShell->AdjustRowHeight( aRange.aStart.Row(), aRange.aEnd.Row() );
+ }
+
+ if (!bDidPaint)
+ ScUndoUtil::PaintMore( pDocShell, aRange );
+
+ ShowTable( aRange );
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoMerge::Undo()
+{
+ BeginUndo();
+ DoChange( TRUE );
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoMerge::Redo()
+{
+ BeginRedo();
+ DoChange( FALSE );
+ EndRedo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoMerge::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
+
+ if (bDoMerge)
+ {
+ BOOL bCont = FALSE;
+ rViewShell.MergeCells( FALSE, bCont, TRUE );
+ }
+ else
+ rViewShell.RemoveMerge( TRUE );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoMerge::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+//============================================================================
+// class ScUndoAutoFormat
+//
+// Auto-Format (nur einfache Bloecke)
+
+//----------------------------------------------------------------------------
+
+ScUndoAutoFormat::ScUndoAutoFormat( ScDocShell* pNewDocShell,
+ const ScRange& rRange, ScDocument* pNewUndoDoc,
+ const ScMarkData& rMark, BOOL bNewSize, USHORT nNewFormatNo )
+ //
+ : ScBlockUndo( pNewDocShell, rRange, bNewSize ? SC_UNDO_MANUALHEIGHT : SC_UNDO_AUTOHEIGHT ),
+ //
+ aMarkData ( rMark ),
+ pUndoDoc ( pNewUndoDoc ),
+ bSize ( bNewSize ),
+ nFormatNo ( nNewFormatNo )
+{
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoAutoFormat::~ScUndoAutoFormat()
+{
+ delete pUndoDoc;
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoAutoFormat::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_AUTOFORMAT ); //"Auto-Format"
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoAutoFormat::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ // Attribute
+// pDoc->DeleteAreaTab( aBlockRange, IDF_ATTRIB );
+// pUndoDoc->CopyToDocument( aBlockRange, IDF_ATTRIB, FALSE, pDoc );
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ pDoc->DeleteArea( aBlockRange.aStart.Col(), aBlockRange.aStart.Row(),
+ aBlockRange.aEnd.Col(), aBlockRange.aEnd.Row(),
+ aMarkData, IDF_ATTRIB );
+ ScRange aCopyRange = aBlockRange;
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+ pUndoDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, FALSE, pDoc, &aMarkData );
+
+ // Zellhoehen und -breiten (IDF_NONE)
+ if (bSize)
+ {
+ USHORT nStartX = aBlockRange.aStart.Col();
+ USHORT nStartY = aBlockRange.aStart.Row();
+ USHORT nStartZ = aBlockRange.aStart.Tab();
+ USHORT nEndX = aBlockRange.aEnd.Col();
+ USHORT nEndY = aBlockRange.aEnd.Row();
+ USHORT nEndZ = aBlockRange.aEnd.Tab();
+
+ pUndoDoc->CopyToDocument( nStartX, 0, 0, nEndX, MAXROW, nTabCount-1,
+ IDF_NONE, FALSE, pDoc, &aMarkData );
+ pUndoDoc->CopyToDocument( 0, nStartY, 0, MAXCOL, nEndY, nTabCount-1,
+ IDF_NONE, FALSE, pDoc, &aMarkData );
+ pDocShell->PostPaint( 0, 0, nStartZ, MAXCOL, MAXROW, nEndZ,
+ PAINT_GRID | PAINT_LEFT | PAINT_TOP, SC_PF_LINES );
+ }
+ else
+ pDocShell->PostPaint( aBlockRange, PAINT_GRID, SC_PF_LINES );
+
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoAutoFormat::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ USHORT nStartX = aBlockRange.aStart.Col();
+ USHORT nStartY = aBlockRange.aStart.Row();
+ USHORT nStartZ = aBlockRange.aStart.Tab();
+ USHORT nEndX = aBlockRange.aEnd.Col();
+ USHORT nEndY = aBlockRange.aEnd.Row();
+ USHORT nEndZ = aBlockRange.aEnd.Tab();
+
+ pDoc->AutoFormat( nStartX, nStartY, nEndX, nEndY, nFormatNo, aMarkData );
+
+ if (bSize)
+ {
+ VirtualDevice aVirtDev;
+ Fraction aZoomX(1,1);
+ Fraction aZoomY = aZoomX;
+ double nPPTX,nPPTY;
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ ScViewData* pData = pViewShell->GetViewData();
+ nPPTX = pData->GetPPTX();
+ nPPTY = pData->GetPPTY();
+ aZoomX = pData->GetZoomX();
+ aZoomY = pData->GetZoomY();
+ }
+ else
+ {
+ // Zoom auf 100 lassen
+ nPPTX = ScGlobal::nScreenPPTX;
+ nPPTY = ScGlobal::nScreenPPTY;
+ }
+
+ BOOL bFormula = FALSE; //! merken
+
+ for (USHORT nTab=nStartZ; nTab<=nEndZ; nTab++)
+ {
+ ScMarkData aDestMark;
+ aDestMark.SelectOneTable( nTab );
+ aDestMark.SetMarkArea( ScRange( nStartX, nStartY, nTab, nEndX, nEndY, nTab ) );
+ aDestMark.MarkToMulti();
+
+ // wie SC_SIZE_VISOPT
+ for (USHORT nRow=nStartY; nRow<=nEndY; nRow++)
+ {
+ BYTE nOld = pDoc->GetRowFlags(nRow,nTab);
+ if ( (nOld & CR_HIDDEN) == 0 && ( nOld & CR_MANUALSIZE ) )
+ pDoc->SetRowFlags( nRow, nTab, nOld & ~CR_MANUALSIZE );
+ }
+ pDoc->SetOptimalHeight( nStartY, nEndY, nTab, 0, &aVirtDev,
+ nPPTX, nPPTY, aZoomX, aZoomY, FALSE );
+
+ for (USHORT nCol=nStartX; nCol<=nEndX; nCol++)
+ if ((pDoc->GetColFlags( nCol, nTab ) & CR_HIDDEN) == 0)
+ {
+ USHORT nThisSize = STD_EXTRA_WIDTH + pDoc->GetOptimalColWidth( nCol, nTab,
+ &aVirtDev, nPPTX, nPPTY, aZoomX, aZoomY, bFormula,
+ &aDestMark );
+ pDoc->SetColWidth( nCol, nTab, nThisSize );
+ pDoc->ShowCol( nCol, nTab, TRUE );
+ }
+ }
+
+ pDocShell->PostPaint( 0, 0, nStartZ,
+ MAXCOL, MAXROW, nEndZ,
+ PAINT_GRID | PAINT_LEFT | PAINT_TOP, SC_PF_LINES);
+ }
+ else
+ pDocShell->PostPaint( aBlockRange, PAINT_GRID, SC_PF_LINES );
+
+ EndRedo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoAutoFormat::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->AutoFormat( nFormatNo, TRUE );
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoAutoFormat::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+//============================================================================
+// class ScUndoReplace
+//
+// Ersetzen
+
+//----------------------------------------------------------------------------
+
+ScUndoReplace::ScUndoReplace( ScDocShell* pNewDocShell, const ScMarkData& rMark,
+ USHORT nCurX, USHORT nCurY, USHORT nCurZ,
+ const String& rNewUndoStr, ScDocument* pNewUndoDoc,
+ const SvxSearchItem* pItem )
+ //
+ : ScSimpleUndo( pNewDocShell ),
+ //
+ aMarkData ( rMark ),
+ aCursorPos ( nCurX, nCurY, nCurZ ),
+ aUndoStr ( rNewUndoStr ),
+ pUndoDoc ( pNewUndoDoc )
+{
+ pSearchItem = new SvxSearchItem( *pItem );
+ SetChangeTrack();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoReplace::~ScUndoReplace()
+{
+ delete pUndoDoc;
+ delete pSearchItem;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScUndoReplace::SetChangeTrack()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ if ( pUndoDoc )
+ { //! im UndoDoc stehen nur die geaenderten Zellen,
+ // deswegen per Iterator moeglich
+ pChangeTrack->AppendContentsIfInRefDoc( pUndoDoc,
+ nStartChangeAction, nEndChangeAction );
+ }
+ else
+ {
+ nStartChangeAction = pChangeTrack->GetActionMax() + 1;
+ ScAddress aPos( aCursorPos.GetCol(), aCursorPos.GetRow(),
+ aCursorPos.GetTab() );
+ ScChangeActionContent* pContent = new ScChangeActionContent(
+ ScRange( aPos, aPos ) );
+ pContent->SetOldValue( aUndoStr, pDoc );
+ pContent->SetNewValue( pDoc->GetCell( aPos ), pDoc );
+ pChangeTrack->Append( pContent );
+ nEndChangeAction = pChangeTrack->GetActionMax();
+ }
+ }
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoReplace::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_REPLACE ); // "Ersetzen"
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoReplace::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ ShowTable( aCursorPos.GetTab() );
+
+ if (pUndoDoc) // nur bei ReplaceAll !!
+ {
+ DBG_ASSERT(pSearchItem->GetCommand() == SVX_SEARCHCMD_REPLACE_ALL,
+ "ScUndoReplace:: Falscher Modus");
+
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+ }
+
+//! markierte Tabellen
+//! Bereich merken ?
+
+ // Undo-Dokument hat keine Zeilen-/Spalten-Infos, also mit bColRowFlags = FALSE
+ // kopieren, um Outline-Gruppen nicht kaputtzumachen.
+
+ USHORT nUndoFlags = (pSearchItem->GetPattern()) ? IDF_ATTRIB : IDF_CONTENTS;
+ pUndoDoc->CopyToDocument( 0, 0, 0,
+ MAXCOL, MAXROW, MAXTAB,
+ nUndoFlags, FALSE, pDoc, NULL, FALSE ); // ohne Row-Flags
+ pDocShell->PostPaintGridAll();
+ }
+ else if (pSearchItem->GetPattern() &&
+ pSearchItem->GetCommand() == SVX_SEARCHCMD_REPLACE)
+ {
+ String aTempStr = pSearchItem->GetSearchString(); // vertauschen
+ pSearchItem->SetSearchString(pSearchItem->GetReplaceString());
+ pSearchItem->SetReplaceString(aTempStr);
+ pDoc->ReplaceStyle( *pSearchItem,
+ aCursorPos.GetCol(), aCursorPos.GetRow(), aCursorPos.GetTab(),
+ aMarkData, TRUE);
+ pSearchItem->SetReplaceString(pSearchItem->GetSearchString());
+ pSearchItem->SetSearchString(aTempStr);
+ if (pViewShell)
+ pViewShell->MoveCursorAbs( aCursorPos.GetCol(), aCursorPos.GetRow(),
+ SC_FOLLOW_JUMP, FALSE, FALSE );
+ pDocShell->PostPaintGridAll();
+ }
+ else if (pSearchItem->GetCellType() == SVX_SEARCHIN_NOTE)
+ {
+ ScPostIt aNote;
+ if (pDoc->GetNote(aCursorPos.GetCol(), aCursorPos.GetRow(),
+ aCursorPos.GetTab(), aNote))
+ {
+ aNote.SetText(aUndoStr);
+ pDoc->SetNote(aCursorPos.GetCol(), aCursorPos.GetRow(),
+ aCursorPos.GetTab(), aNote);
+ }
+ else
+ DBG_ERROR("ScUndoReplace: Hier ist keine Notizzelle");
+ if (pViewShell)
+ pViewShell->MoveCursorAbs( aCursorPos.GetCol(), aCursorPos.GetRow(),
+ SC_FOLLOW_JUMP, FALSE, FALSE );
+ }
+ else
+ {
+ pDoc->SetString( aCursorPos.GetCol(), aCursorPos.GetRow(), aCursorPos.GetTab(), aUndoStr );
+ if (pViewShell)
+ pViewShell->MoveCursorAbs( aCursorPos.GetCol(), aCursorPos.GetRow(),
+ SC_FOLLOW_JUMP, FALSE, FALSE );
+ pDocShell->PostPaintGridAll();
+ }
+
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoReplace::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (pViewShell)
+ pViewShell->MoveCursorAbs( aCursorPos.GetCol(), aCursorPos.GetRow(),
+ SC_FOLLOW_JUMP, FALSE, FALSE );
+ if (pUndoDoc)
+ {
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+
+ pViewShell->SearchAndReplace( pSearchItem, FALSE, TRUE );
+ }
+ }
+ else if (pSearchItem->GetPattern() &&
+ pSearchItem->GetCommand() == SVX_SEARCHCMD_REPLACE)
+ {
+ pDoc->ReplaceStyle( *pSearchItem,
+ aCursorPos.GetCol(), aCursorPos.GetRow(), aCursorPos.GetTab(),
+ aMarkData, TRUE);
+ pDocShell->PostPaintGridAll();
+ }
+ else
+ if (pViewShell)
+ pViewShell->SearchAndReplace( pSearchItem, FALSE, TRUE );
+
+ SetChangeTrack();
+
+ EndRedo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoReplace::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->SearchAndReplace( pSearchItem, TRUE, FALSE );
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoReplace::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+//============================================================================
+// class ScUndoTabOp
+//
+// Mehrfachoperation (nur einfache Bloecke)
+
+//----------------------------------------------------------------------------
+
+ScUndoTabOp::ScUndoTabOp( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ, ScDocument* pNewUndoDoc,
+ const ScRefTripel& rFormulaCell,
+ const ScRefTripel& rFormulaEnd,
+ const ScRefTripel& rRowCell,
+ const ScRefTripel& rColCell,
+ BYTE nMd )
+ //
+ : ScSimpleUndo( pNewDocShell ),
+ //
+ aRange ( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ),
+ pUndoDoc ( pNewUndoDoc ),
+ theFormulaCell ( rFormulaCell ),
+ theFormulaEnd ( rFormulaEnd ),
+ theRowCell ( rRowCell ),
+ theColCell ( rColCell ),
+ nMode ( nMd )
+{
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoTabOp::~ScUndoTabOp()
+{
+ delete pUndoDoc;
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoTabOp::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_TABOP ); // "Mehrfachoperation"
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoTabOp::Undo()
+{
+ BeginUndo();
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aRange );
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ BOOL bHasLines = pDoc->HasAttrib( aRange, HASATTR_PAINTEXT );
+
+ pDoc->DeleteAreaTab( aRange,IDF_ALL );
+ pUndoDoc->CopyToDocument( aRange, IDF_ALL, FALSE, pDoc );
+ pDocShell->PostPaint( aRange, PAINT_GRID, (bHasLines ? SC_PF_LINES : 0) );
+ pDocShell->PostDataChanged();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoTabOp::Redo()
+{
+ BeginRedo();
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aRange );
+
+ ScTabOpParam aParam( theFormulaCell, theFormulaEnd,
+ theRowCell, theColCell,
+ nMode );
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->TabOp( aParam, FALSE);
+
+ EndRedo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoTabOp::Repeat(SfxRepeatTarget& rTarget)
+{
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoTabOp::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+//============================================================================
+// class ScUndoSpelling
+//
+// Spelling
+
+//----------------------------------------------------------------------------
+
+ScUndoSpelling::ScUndoSpelling( ScDocShell* pNewDocShell,
+ const ScMarkData& rMark,
+ USHORT nCurX, USHORT nCurY, USHORT nCurZ,
+ ScDocument* pNewUndoDoc,
+ USHORT nNewX, USHORT nNewY, USHORT nNewZ,
+ ScDocument* pNewRedoDoc)
+ //
+ : ScSimpleUndo( pNewDocShell ),
+ //
+ aMarkData ( rMark ),
+ aCursorPos ( nCurX, nCurY, nCurZ ),
+ aNewCursorPos ( nNewX, nNewY, nNewZ ),
+ pUndoDoc ( pNewUndoDoc ),
+ pRedoDoc ( pNewRedoDoc )
+{
+ SetChangeTrack();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoSpelling::~ScUndoSpelling()
+{
+ delete pUndoDoc;
+ delete pRedoDoc;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScUndoSpelling::SetChangeTrack()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ if ( pUndoDoc )
+ pChangeTrack->AppendContentsIfInRefDoc( pUndoDoc,
+ nStartChangeAction, nEndChangeAction );
+ else
+ {
+ DBG_ERROR( "ScUndoSpelling::SetChangeTrack: kein UndoDoc" );
+ nStartChangeAction = nEndChangeAction = 0;
+ }
+ }
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoSpelling::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_SPELLING); // "Rechtschreibung"
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScUndoSpelling::DoChange( ScDocument* pRefDoc, const ScTripel& rCursorPos )
+{
+ if (pRefDoc)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ShowTable( rCursorPos.GetTab() );
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+ }
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ // Undo/Redo-doc has only selected tables
+
+ BOOL bMulti = aMarkData.IsMultiMarked();
+ pRefDoc->CopyToDocument( 0, 0, 0,
+ MAXCOL, MAXROW, nTabCount-1,
+ IDF_CONTENTS, bMulti, pDoc, &aMarkData );
+ pDocShell->PostPaintGridAll();
+ }
+ else
+ {
+ DBG_ERROR("Kein Un-/RedoDoc bei Un-/RedoSpelling");
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoSpelling::Undo()
+{
+ BeginUndo();
+ DoChange( pUndoDoc, aCursorPos );
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoSpelling::Redo()
+{
+ BeginRedo();
+ DoChange( pRedoDoc, aNewCursorPos );
+ SetChangeTrack();
+ EndRedo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoSpelling::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->DoSpellingChecker( TRUE );
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoSpelling::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+//============================================================================
+// class ScUndoRefreshLink
+//
+// Link aktualisieren / aendern
+
+//----------------------------------------------------------------------------
+
+ScUndoRefreshLink::ScUndoRefreshLink( ScDocShell* pNewDocShell,
+ ScDocument* pNewUndoDoc )
+ //
+ : ScSimpleUndo( pNewDocShell ),
+ //
+ pUndoDoc( pNewUndoDoc ),
+ pRedoDoc( NULL )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoRefreshLink::~ScUndoRefreshLink()
+{
+ delete pUndoDoc;
+ delete pRedoDoc;
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoRefreshLink::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_UPDATELINK );
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoRefreshLink::Undo()
+{
+ BeginUndo();
+
+ BOOL bMakeRedo = !pRedoDoc;
+ if (bMakeRedo)
+ pRedoDoc = new ScDocument( SCDOCMODE_UNDO );
+
+ BOOL bFirst = TRUE;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nCount; nTab++)
+ if (pUndoDoc->HasTable(nTab))
+ {
+ ScRange aRange(0,0,nTab,MAXCOL,MAXROW,nTab);
+ if (bMakeRedo)
+ {
+ if (bFirst)
+ pRedoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ else
+ pRedoDoc->AddUndoTab( nTab, nTab, TRUE, TRUE );
+ bFirst = FALSE;
+ pDoc->CopyToDocument(aRange, IDF_ALL, FALSE, pRedoDoc);
+// pRedoDoc->TransferDrawPage( pDoc, nTab, nTab );
+ pRedoDoc->SetLink( nTab,
+ pDoc->GetLinkMode(nTab),
+ pDoc->GetLinkDoc(nTab),
+ pDoc->GetLinkFlt(nTab),
+ pDoc->GetLinkOpt(nTab),
+ pDoc->GetLinkTab(nTab) );
+ }
+
+ pDoc->DeleteAreaTab( aRange,IDF_ALL );
+// pDoc->ClearDrawPage(nTab);
+ pUndoDoc->CopyToDocument( aRange, IDF_ALL, FALSE, pDoc );
+// pDoc->TransferDrawPage( pUndoDoc, nTab, nTab );
+ pDoc->SetLink( nTab, pUndoDoc->GetLinkMode(nTab), pUndoDoc->GetLinkDoc(nTab),
+ pUndoDoc->GetLinkFlt(nTab), pUndoDoc->GetLinkOpt(nTab),
+ pUndoDoc->GetLinkTab(nTab) );
+ }
+
+ pDocShell->PostPaintGridAll();
+
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoRefreshLink::Redo()
+{
+ DBG_ASSERT(pRedoDoc, "Kein RedoDoc bei ScUndoRefreshLink::Redo");
+
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nCount; nTab++)
+ if (pRedoDoc->HasTable(nTab))
+ {
+ ScRange aRange(0,0,nTab,MAXCOL,MAXROW,nTab);
+
+ pDoc->DeleteAreaTab( aRange, IDF_ALL );
+// pDoc->ClearDrawPage(nTab);
+ pRedoDoc->CopyToDocument( aRange, IDF_ALL, FALSE, pDoc );
+// pDoc->TransferDrawPage( pRedoDoc, nTab, nTab );
+ pDoc->SetLink( nTab,
+ pRedoDoc->GetLinkMode(nTab),
+ pRedoDoc->GetLinkDoc(nTab),
+ pRedoDoc->GetLinkFlt(nTab),
+ pRedoDoc->GetLinkOpt(nTab),
+ pRedoDoc->GetLinkTab(nTab) );
+ }
+
+ pDocShell->PostPaintGridAll();
+
+ EndUndo();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoRefreshLink::Repeat(SfxRepeatTarget& rTarget)
+{
+ // gippsnich
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoRefreshLink::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+//----------------------------------------------------------------------------
+
+ScAreaLink* lcl_FindAreaLink( SvxLinkManager* pLinkManager, const String& rDoc,
+ const String& rFlt, const String& rOpt,
+ const String& rSrc, const ScRange& rDest )
+{
+ const SvBaseLinks& rLinks = pLinkManager->GetLinks();
+ USHORT nCount = pLinkManager->GetLinks().Count();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ SvBaseLink* pBase = *rLinks[i];
+ if (pBase->ISA(ScAreaLink))
+ if ( ((ScAreaLink*)pBase)->IsEqual( rDoc, rFlt, rOpt, rSrc, rDest ) )
+ return (ScAreaLink*)pBase;
+ }
+
+ DBG_ERROR("ScAreaLink nicht gefunden");
+ return NULL;
+}
+
+
+//============================================================================
+// class ScUndoInsertAreaLink
+//
+// Bereichs-Verknuepfung einfuegen
+
+//----------------------------------------------------------------------------
+
+ScUndoInsertAreaLink::ScUndoInsertAreaLink( ScDocShell* pShell,
+ const String& rDoc,
+ const String& rFlt, const String& rOpt,
+ const String& rArea, const ScRange& rDestRange )
+ //
+ : ScSimpleUndo( pShell ),
+ //
+ aDocName ( rDoc ),
+ aFltName ( rFlt ),
+ aOptions ( rOpt ),
+ aAreaName ( rArea ),
+ aRange ( rDestRange )
+{
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoInsertAreaLink::~ScUndoInsertAreaLink()
+{
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoInsertAreaLink::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_INSERTAREALINK );
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoInsertAreaLink::Undo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+
+ ScAreaLink* pLink = lcl_FindAreaLink( pLinkManager, aDocName, aFltName, aOptions,
+ aAreaName, aRange );
+ if (pLink)
+ pLinkManager->Remove(*pLink);
+
+ SFX_BINDINGS().Invalidate(SID_LINKS);
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoInsertAreaLink::Redo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+
+ ScAreaLink* pLink = new ScAreaLink( pDocShell, aDocName, aFltName, aOptions,
+ aAreaName, aRange.aStart );
+ pLink->SetInCreate( TRUE );
+ pLink->SetDestArea( aRange );
+ pLinkManager->InsertFileLink( *pLink, OBJECT_CLIENT_FILE, aDocName, &aFltName, &aAreaName );
+ pLink->Update();
+ pLink->SetInCreate( FALSE );
+
+ SFX_BINDINGS().Invalidate(SID_LINKS);
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoInsertAreaLink::Repeat(SfxRepeatTarget& rTarget)
+{
+ //! ....
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoInsertAreaLink::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+//============================================================================
+// class ScUndoRemoveAreaLink
+//
+// Bereichs-Verknuepfung loeschen
+
+//----------------------------------------------------------------------------
+
+ScUndoRemoveAreaLink::ScUndoRemoveAreaLink( ScDocShell* pShell,
+ const String& rDoc, const String& rFlt, const String& rOpt,
+ const String& rArea, const ScRange& rDestRange )
+ //
+ : ScSimpleUndo( pShell ),
+ //
+ aDocName ( rDoc ),
+ aFltName ( rFlt ),
+ aOptions ( rOpt ),
+ aAreaName ( rArea ),
+ aRange ( rDestRange )
+{
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoRemoveAreaLink::~ScUndoRemoveAreaLink()
+{
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoRemoveAreaLink::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_REMOVELINK ); //! eigener Text ??
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoRemoveAreaLink::Undo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+
+ ScAreaLink* pLink = new ScAreaLink( pDocShell, aDocName, aFltName, aOptions,
+ aAreaName, aRange.aStart );
+ pLink->SetInCreate( TRUE );
+ pLink->SetDestArea( aRange );
+ pLinkManager->InsertFileLink( *pLink, OBJECT_CLIENT_FILE, aDocName, &aFltName, &aAreaName );
+ pLink->Update();
+ pLink->SetInCreate( FALSE );
+
+ SFX_BINDINGS().Invalidate(SID_LINKS);
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoRemoveAreaLink::Redo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+
+ ScAreaLink* pLink = lcl_FindAreaLink( pLinkManager, aDocName, aFltName, aOptions,
+ aAreaName, aRange );
+ if (pLink)
+ pLinkManager->Remove(*pLink);
+
+ SFX_BINDINGS().Invalidate(SID_LINKS);
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoRemoveAreaLink::Repeat(SfxRepeatTarget& rTarget)
+{
+ // gippsnich
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoRemoveAreaLink::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+//============================================================================
+// class ScUndoUpdateAreaLink
+//
+// Bereichs-Verknuepfung aktualisieren
+
+//----------------------------------------------------------------------------
+
+ScUndoUpdateAreaLink::ScUndoUpdateAreaLink( ScDocShell* pShell,
+ const String& rOldD, const String& rOldF, const String& rOldO,
+ const String& rOldA, const ScRange& rOldR,
+ const String& rNewD, const String& rNewF, const String& rNewO,
+ const String& rNewA, const ScRange& rNewR,
+ ScDocument* pUndo, ScDocument* pRedo, BOOL bDoInsert )
+ //
+ : ScSimpleUndo( pShell ),
+ //
+ aOldDoc ( rOldD ),
+ aOldFlt ( rOldF ),
+ aOldOpt ( rOldO ),
+ aOldArea ( rOldA ),
+ aOldRange ( rOldR ),
+ aNewDoc ( rNewD ),
+ aNewFlt ( rNewF ),
+ aNewOpt ( rNewO ),
+ aNewArea ( rNewA ),
+ aNewRange ( rNewR ),
+ pUndoDoc ( pUndo ),
+ pRedoDoc ( pRedo ),
+ bWithInsert ( bDoInsert )
+{
+ DBG_ASSERT( aOldRange.aStart == aNewRange.aStart, "AreaLink verschoben ??!??" );
+}
+
+
+//----------------------------------------------------------------------------
+
+__EXPORT ScUndoUpdateAreaLink::~ScUndoUpdateAreaLink()
+{
+ delete pUndoDoc;
+ delete pRedoDoc;
+}
+
+
+//----------------------------------------------------------------------------
+
+String __EXPORT ScUndoUpdateAreaLink::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_UPDATELINK ); //! eigener Text ??
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScUndoUpdateAreaLink::DoChange( const BOOL bUndo ) const
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ USHORT nEndX = Max( aOldRange.aEnd.Col(), aNewRange.aEnd.Col() );
+ USHORT nEndY = Max( aOldRange.aEnd.Row(), aNewRange.aEnd.Row() );
+ USHORT nEndZ = Max( aOldRange.aEnd.Tab(), aNewRange.aEnd.Tab() ); //?
+
+ if ( bUndo )
+ {
+ if ( bWithInsert )
+ {
+ pDoc->FitBlock( aNewRange, aOldRange );
+ pUndoDoc->UndoToDocument( aOldRange, IDF_ALL, FALSE, pDoc );
+ }
+ else
+ pUndoDoc->CopyToDocument(
+ ScRange(aOldRange.aStart, ScAddress(nEndX,nEndY,nEndZ)),
+ IDF_ALL, FALSE, pDoc );
+ }
+ else
+ {
+ if ( bWithInsert )
+ {
+ pDoc->FitBlock( aOldRange, aNewRange );
+ pRedoDoc->CopyToDocument( aNewRange, IDF_ALL, FALSE, pDoc );
+ }
+ else
+ pRedoDoc->CopyToDocument(
+ ScRange(aOldRange.aStart, ScAddress(nEndX,nEndY,nEndZ)),
+ IDF_ALL, FALSE, pDoc );
+ }
+
+ ScRange aWorkRange( aNewRange.aStart, ScTripel( nEndX, nEndY, nEndZ ) );
+ pDoc->ExtendMerge( aWorkRange, TRUE );
+
+ // Paint
+
+ if ( aNewRange.aEnd.Col() != aOldRange.aEnd.Col() )
+ aWorkRange.aEnd.SetCol(MAXCOL);
+ if ( aNewRange.aEnd.Row() != aOldRange.aEnd.Row() )
+ aWorkRange.aEnd.SetRow(MAXROW);
+ pDocShell->PostPaint( aWorkRange, PAINT_GRID );
+ pDocShell->PostDataChanged();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->CellContentChanged();
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoUpdateAreaLink::Undo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+ ScAreaLink* pLink = lcl_FindAreaLink( pLinkManager, aNewDoc, aNewFlt, aNewOpt,
+ aNewArea, aNewRange );
+ if (pLink)
+ {
+ pLink->SetSource( aOldDoc, aOldFlt, aOldOpt, aOldArea ); // alte Werte im Link
+ pLink->SetDestArea( aOldRange );
+ }
+
+ DoChange(TRUE);
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoUpdateAreaLink::Redo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+ ScAreaLink* pLink = lcl_FindAreaLink( pLinkManager, aOldDoc, aOldFlt, aOldOpt,
+ aOldArea, aOldRange );
+ if (pLink)
+ {
+ pLink->SetSource( aNewDoc, aNewFlt, aNewOpt, aNewArea ); // neue Werte im Link
+ pLink->SetDestArea( aNewRange );
+ }
+
+ DoChange(FALSE);
+}
+
+
+//----------------------------------------------------------------------------
+
+void __EXPORT ScUndoUpdateAreaLink::Repeat(SfxRepeatTarget& rTarget)
+{
+ // gippsnich
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL __EXPORT ScUndoUpdateAreaLink::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+
+
diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx
new file mode 100644
index 000000000000..41f12d0fdc4c
--- /dev/null
+++ b/sc/source/ui/undo/undocell.cxx
@@ -0,0 +1,1154 @@
+/*************************************************************************
+ *
+ * $RCSfile: undocell.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/editobj.hxx>
+#include <svtools/zforlist.hxx>
+#include <sfx2/app.hxx>
+
+#include "undocell.hxx"
+#include "document.hxx"
+#include "docpool.hxx"
+#include "patattr.hxx"
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "cell.hxx"
+#include "target.hxx"
+#include "undoolk.hxx"
+#include "detdata.hxx"
+#include "stlpool.hxx"
+#include "printfun.hxx"
+#include "rangenam.hxx"
+#include "chgtrack.hxx"
+#include "sc.hrc"
+
+// STATIC DATA -----------------------------------------------------------
+
+TYPEINIT1(ScUndoCursorAttr, ScSimpleUndo);
+TYPEINIT1(ScUndoEnterData, ScSimpleUndo);
+TYPEINIT1(ScUndoEnterValue, ScSimpleUndo);
+TYPEINIT1(ScUndoPutCell, ScSimpleUndo);
+TYPEINIT1(ScUndoPageBreak, ScSimpleUndo);
+TYPEINIT1(ScUndoPrintZoom, ScSimpleUndo);
+TYPEINIT1(ScUndoThesaurus, ScSimpleUndo);
+TYPEINIT1(ScUndoNote, ScSimpleUndo);
+TYPEINIT1(ScUndoEditNote, ScSimpleUndo);
+TYPEINIT1(ScUndoDetective, ScSimpleUndo);
+TYPEINIT1(ScUndoRangeNames, ScSimpleUndo);
+
+
+// -----------------------------------------------------------------------
+//
+// Attribute auf Cursor anwenden
+//
+
+ScUndoCursorAttr::ScUndoCursorAttr( ScDocShell* pNewDocShell,
+ USHORT nNewCol, USHORT nNewRow, USHORT nNewTab,
+ const ScPatternAttr* pOldPat, const ScPatternAttr* pNewPat,
+ const ScPatternAttr* pApplyPat, BOOL bAutomatic ) :
+ ScSimpleUndo( pNewDocShell ),
+ nCol( nNewCol ),
+ nRow( nNewRow ),
+ nTab( nNewTab ),
+ bIsAutomatic( bAutomatic )
+{
+ ScDocumentPool* pPool = pDocShell->GetDocument()->GetPool();
+ pNewPattern = (ScPatternAttr*) &pPool->Put( *pNewPat );
+ pOldPattern = (ScPatternAttr*) &pPool->Put( *pOldPat );
+ pApplyPattern = (ScPatternAttr*) &pPool->Put( *pApplyPat );
+}
+
+__EXPORT ScUndoCursorAttr::~ScUndoCursorAttr()
+{
+ ScDocumentPool* pPool = pDocShell->GetDocument()->GetPool();
+ pPool->Remove(*pNewPattern);
+ pPool->Remove(*pOldPattern);
+ pPool->Remove(*pApplyPattern);
+}
+
+String __EXPORT ScUndoCursorAttr::GetComment() const
+{
+ //! eigener Text fuer automatische Attributierung
+
+ USHORT nId = STR_UNDO_CURSORATTR; // "Attribute"
+ return ScGlobal::GetRscString( nId );
+}
+
+void ScUndoCursorAttr::DoChange( const ScPatternAttr* pWhichPattern ) const
+{
+ pDocShell->GetDocument()->SetPattern( nCol, nRow, nTab, *pWhichPattern, TRUE );
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ pViewShell->SetTabNo( nTab );
+ pViewShell->MoveCursorAbs( nCol, nRow, SC_FOLLOW_JUMP, FALSE, FALSE );
+ pViewShell->AdjustBlockHeight();
+ }
+
+ const SfxItemSet& rApplySet = pApplyPattern->GetItemSet();
+ BOOL bPaintExt = ( rApplySet.GetItemState( ATTR_SHADOW, TRUE ) != SFX_ITEM_DEFAULT ||
+ rApplySet.GetItemState( ATTR_CONDITIONAL, TRUE ) != SFX_ITEM_DEFAULT );
+
+ USHORT nFlags = SC_PF_TESTMERGE;
+ if (bPaintExt)
+ nFlags |= SC_PF_LINES;
+ pDocShell->PostPaint( nCol,nRow,nTab, nCol,nRow,nTab, PAINT_GRID, nFlags );
+}
+
+void __EXPORT ScUndoCursorAttr::Undo()
+{
+ BeginUndo();
+ DoChange(pOldPattern);
+
+ if ( bIsAutomatic )
+ {
+ // wenn automatische Formatierung rueckgaengig gemacht wird,
+ // soll auch nicht weiter automatisch formatiert werden:
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->ForgetFormatArea();
+ }
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoCursorAttr::Redo()
+{
+ BeginRedo();
+ DoChange(pNewPattern);
+ EndRedo();
+}
+
+void __EXPORT ScUndoCursorAttr::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->ApplySelectionPattern( *pApplyPattern );
+}
+
+BOOL __EXPORT ScUndoCursorAttr::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Daten eingeben
+//
+
+ScUndoEnterData::ScUndoEnterData( ScDocShell* pNewDocShell,
+ USHORT nNewCol, USHORT nNewRow, USHORT nNewTab,
+ USHORT nNewCount, USHORT* pNewTabs, ScBaseCell** ppOldData,
+ BOOL* pHasForm, ULONG* pOldForm,
+ const String& rNewStr, EditTextObject* pObj ) :
+ ScSimpleUndo( pNewDocShell ),
+ nCol( nNewCol ),
+ nRow( nNewRow ),
+ nTab( nNewTab ),
+ nCount( nNewCount ),
+ pTabs( pNewTabs ),
+ ppOldCells( ppOldData ),
+ pHasFormat( pHasForm ),
+ pOldFormats( pOldForm ),
+ aNewString( rNewStr ),
+ pNewEditData( pObj )
+{
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoEnterData::~ScUndoEnterData()
+{
+ ScDocumentPool* pPool = pDocShell->GetDocument()->GetPool();
+ for (USHORT i=0; i<nCount; i++)
+ if (ppOldCells[i])
+ ppOldCells[i]->Delete();
+ delete ppOldCells;
+ delete pHasFormat;
+ delete pOldFormats;
+ delete pTabs;
+ delete pNewEditData;
+}
+
+String __EXPORT ScUndoEnterData::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_ENTERDATA ); // "Eingabe"
+}
+
+void ScUndoEnterData::DoChange() const
+{
+ // Zeilenhoehe anpassen
+ //! nur wenn noetig (alte oder neue EditZelle, oder Attribute) ??
+ for (USHORT i=0; i<nCount; i++)
+ pDocShell->AdjustRowHeight( nRow, nRow, pTabs[i] );
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ pViewShell->SetTabNo( nTab );
+ pViewShell->MoveCursorAbs( nCol, nRow, SC_FOLLOW_JUMP, FALSE, FALSE );
+ }
+
+ pDocShell->PostDataChanged();
+}
+
+void ScUndoEnterData::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ nEndChangeAction = pChangeTrack->GetActionMax() + 1;
+ ScAddress aPos( nCol, nRow, nTab );
+ for (USHORT i=0; i<nCount; i++)
+ {
+ aPos.SetTab( pTabs[i] );
+ ULONG nFormat = 0;
+ if ( pHasFormat && pOldFormats )
+ {
+ if ( pHasFormat[i] )
+ nFormat = pOldFormats[i];
+ }
+ pChangeTrack->AppendContent( aPos, ppOldCells[i], nFormat );
+ }
+ if ( nEndChangeAction > pChangeTrack->GetActionMax() )
+ nEndChangeAction = 0; // nichts appended
+ }
+ else
+ nEndChangeAction = 0;
+}
+
+void __EXPORT ScUndoEnterData::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScBaseCell* pNewCell;
+ if ( ppOldCells[i] )
+ {
+ // Formelzelle mit CompileTokenArray() !
+ if ( ppOldCells[i]->GetCellType() == CELLTYPE_FORMULA )
+ pNewCell = ((ScFormulaCell*)ppOldCells[i])->Clone( pDoc,
+ ScAddress( nCol, nRow, pTabs[i] ) );
+ else
+ pNewCell = ppOldCells[i]->Clone(pDoc);
+ }
+ else
+ pNewCell = NULL;
+ pDoc->PutCell( nCol, nRow, pTabs[i], pNewCell );
+
+ if (pHasFormat && pOldFormats)
+ {
+ if ( pHasFormat[i] )
+ pDoc->ApplyAttr( nCol, nRow, pTabs[i],
+ SfxUInt32Item( ATTR_VALUE_FORMAT, pOldFormats[i] ) );
+ else
+ {
+ ScPatternAttr aPattern( *pDoc->GetPattern( nCol, nRow, pTabs[i] ) );
+ aPattern.GetItemSet().ClearItem( ATTR_VALUE_FORMAT );
+ pDoc->SetPattern( nCol, nRow, pTabs[i], aPattern, TRUE );
+ }
+ }
+ pDocShell->PostPaintCell( nCol, nRow, pTabs[i] );
+ }
+
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack && nEndChangeAction >= nCount )
+ pChangeTrack->Undo( nEndChangeAction - nCount + 1, nEndChangeAction );
+
+ DoChange();
+ EndUndo();
+}
+
+void __EXPORT ScUndoEnterData::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ if (pNewEditData)
+ pDoc->PutCell( nCol, nRow, pTabs[i], new ScEditCell( pNewEditData,
+ pDoc, NULL ) );
+ else
+ pDoc->SetString( nCol, nRow, pTabs[i], aNewString );
+ pDocShell->PostPaintCell( nCol, nRow, pTabs[i] );
+ }
+
+ SetChangeTrack();
+
+ DoChange();
+ EndRedo();
+}
+
+void __EXPORT ScUndoEnterData::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ String aTemp = aNewString;
+ ((ScTabViewTarget&)rTarget).GetViewShell()->EnterDataAtCursor( aTemp );
+ }
+}
+
+BOOL __EXPORT ScUndoEnterData::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Wert aendern
+//
+
+ScUndoEnterValue::ScUndoEnterValue( ScDocShell* pNewDocShell, const ScAddress& rNewPos,
+ ScBaseCell* pUndoCell, double nVal, BOOL bHeight ) :
+ ScSimpleUndo( pNewDocShell ),
+ aPos ( rNewPos ),
+ pOldCell ( pUndoCell ),
+ nValue ( nVal ),
+ bNeedHeight ( bHeight )
+{
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoEnterValue::~ScUndoEnterValue()
+{
+ if (pOldCell)
+ pOldCell->Delete();
+}
+
+String __EXPORT ScUndoEnterValue::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_ENTERDATA ); // "Eingabe"
+}
+
+void ScUndoEnterValue::SetChangeTrack()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ nEndChangeAction = pChangeTrack->GetActionMax() + 1;
+ pChangeTrack->AppendContent( aPos, pOldCell );
+ if ( nEndChangeAction > pChangeTrack->GetActionMax() )
+ nEndChangeAction = 0; // nichts appended
+ }
+ else
+ nEndChangeAction = 0;
+}
+
+void __EXPORT ScUndoEnterValue::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScBaseCell* pNewCell;
+ if ( pOldCell )
+ {
+ // Formelzelle mit CompileTokenArray() !
+ if ( pOldCell->GetCellType() == CELLTYPE_FORMULA )
+ pNewCell = ((ScFormulaCell*)pOldCell)->Clone( pDoc, aPos );
+ else
+ pNewCell = pOldCell->Clone(pDoc);
+ }
+ else
+ pNewCell = NULL;
+
+ pDoc->PutCell( aPos.Col(), aPos.Row(), aPos.Tab(), pNewCell );
+
+ pDocShell->PostPaintCell( aPos.Col(), aPos.Row(), aPos.Tab() );
+
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nEndChangeAction, nEndChangeAction );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoEnterValue::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->SetValue( aPos.Col(), aPos.Row(), aPos.Tab(), nValue );
+ pDocShell->PostPaintCell( aPos.Col(), aPos.Row(), aPos.Tab() );
+
+ SetChangeTrack();
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoEnterValue::Repeat(SfxRepeatTarget& rTarget)
+{
+ // gippsnich
+}
+
+BOOL __EXPORT ScUndoEnterValue::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Beliebige Zelle eingeben
+//
+
+ScUndoPutCell::ScUndoPutCell( ScDocShell* pNewDocShell, const ScAddress& rNewPos,
+ ScBaseCell* pUndoCell, ScBaseCell* pRedoCell, BOOL bHeight ) :
+ ScSimpleUndo( pNewDocShell ),
+ aPos ( rNewPos ),
+ pOldCell ( pUndoCell ),
+ pEnteredCell( pRedoCell ),
+ bNeedHeight ( bHeight )
+{
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoPutCell::~ScUndoPutCell()
+{
+ if (pOldCell)
+ pOldCell->Delete();
+ if (pEnteredCell)
+ pEnteredCell->Delete();
+}
+
+String __EXPORT ScUndoPutCell::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_ENTERDATA ); // "Eingabe"
+}
+
+void ScUndoPutCell::SetChangeTrack()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ nEndChangeAction = pChangeTrack->GetActionMax() + 1;
+ pChangeTrack->AppendContent( aPos, pOldCell );
+ if ( nEndChangeAction > pChangeTrack->GetActionMax() )
+ nEndChangeAction = 0; // nichts appended
+ }
+ else
+ nEndChangeAction = 0;
+}
+
+void __EXPORT ScUndoPutCell::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScBaseCell* pNewCell;
+ if ( pOldCell )
+ {
+ // Formelzelle mit CompileTokenArray() !
+ if ( pOldCell->GetCellType() == CELLTYPE_FORMULA )
+ pNewCell = ((ScFormulaCell*)pOldCell)->Clone( pDoc, aPos );
+ else
+ pNewCell = pOldCell->Clone(pDoc);
+ }
+ else
+ pNewCell = NULL;
+
+ pDoc->PutCell( aPos.Col(), aPos.Row(), aPos.Tab(), pNewCell );
+
+ pDocShell->PostPaintCell( aPos.Col(), aPos.Row(), aPos.Tab() );
+
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nEndChangeAction, nEndChangeAction );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoPutCell::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+// pDoc->SetValue( aPos.Col(), aPos.Row(), aPos.Tab(), nValue );
+
+ ScBaseCell* pNewCell;
+ if ( pEnteredCell )
+ {
+ // Formelzelle mit CompileTokenArray() !
+ if ( pEnteredCell->GetCellType() == CELLTYPE_FORMULA )
+ pNewCell = ((ScFormulaCell*)pEnteredCell)->Clone( pDoc, aPos );
+ else
+ pNewCell = pEnteredCell->Clone(pDoc);
+ }
+ else
+ pNewCell = NULL;
+
+ pDoc->PutCell( aPos.Col(), aPos.Row(), aPos.Tab(), pNewCell );
+
+ pDocShell->PostPaintCell( aPos.Col(), aPos.Row(), aPos.Tab() );
+
+ SetChangeTrack();
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoPutCell::Repeat(SfxRepeatTarget& rTarget)
+{
+ // gippsnich
+}
+
+BOOL __EXPORT ScUndoPutCell::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Seitenumbrueche
+//
+
+ScUndoPageBreak::ScUndoPageBreak( ScDocShell* pNewDocShell,
+ USHORT nNewCol, USHORT nNewRow, USHORT nNewTab,
+ BOOL bNewColumn, BOOL bNewInsert ) :
+ ScSimpleUndo( pNewDocShell ),
+ nCol( nNewCol ),
+ nRow( nNewRow ),
+ nTab( nNewTab ),
+ bColumn( bNewColumn ),
+ bInsert( bNewInsert )
+{
+}
+
+__EXPORT ScUndoPageBreak::~ScUndoPageBreak()
+{
+}
+
+String __EXPORT ScUndoPageBreak::GetComment() const
+{
+ //"Spaltenumbruch" | "Zeilenumbruch" "einfuegen" | "loeschen"
+ return String ( bColumn ?
+ ( bInsert ?
+ ScGlobal::GetRscString( STR_UNDO_INSCOLBREAK ) :
+ ScGlobal::GetRscString( STR_UNDO_DELCOLBREAK )
+ ) :
+ ( bInsert ?
+ ScGlobal::GetRscString( STR_UNDO_INSROWBREAK ) :
+ ScGlobal::GetRscString( STR_UNDO_DELROWBREAK )
+ ) );
+}
+
+void ScUndoPageBreak::DoChange( BOOL bInsert ) const
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (pViewShell)
+ {
+ pViewShell->SetTabNo( nTab );
+ pViewShell->MoveCursorAbs( nCol, nRow, SC_FOLLOW_JUMP, FALSE, FALSE );
+
+ if (bInsert)
+ pViewShell->InsertPageBreak(bColumn, FALSE);
+ else
+ pViewShell->DeletePageBreak(bColumn, FALSE);
+ }
+}
+
+void __EXPORT ScUndoPageBreak::Undo()
+{
+ BeginUndo();
+ DoChange(!bInsert);
+ EndUndo();
+}
+
+void __EXPORT ScUndoPageBreak::Redo()
+{
+ BeginRedo();
+ DoChange(bInsert);
+ EndRedo();
+}
+
+void __EXPORT ScUndoPageBreak::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
+
+ if (bInsert)
+ rViewShell.InsertPageBreak(bColumn, TRUE);
+ else
+ rViewShell.DeletePageBreak(bColumn, TRUE);
+ }
+}
+
+BOOL __EXPORT ScUndoPageBreak::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+// -----------------------------------------------------------------------
+//
+// Druck-Skalierung
+//
+
+ScUndoPrintZoom::ScUndoPrintZoom( ScDocShell* pNewDocShell,
+ USHORT nT, USHORT nOS, USHORT nOP, USHORT nNS, USHORT nNP ) :
+ ScSimpleUndo( pNewDocShell ),
+ nTab( nT ),
+ nOldScale( nOS ),
+ nOldPages( nOP ),
+ nNewScale( nNS ),
+ nNewPages( nNP )
+{
+}
+
+__EXPORT ScUndoPrintZoom::~ScUndoPrintZoom()
+{
+}
+
+String __EXPORT ScUndoPrintZoom::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_PRINTSCALE );
+}
+
+void ScUndoPrintZoom::DoChange( BOOL bUndo )
+{
+ USHORT nScale = bUndo ? nOldScale : nNewScale;
+ USHORT nPages = bUndo ? nOldPages : nNewPages;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ String aStyleName = pDoc->GetPageStyle( nTab );
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find( aStyleName, SFX_STYLE_FAMILY_PAGE );
+ DBG_ASSERT( pStyleSheet, "PageStyle not found" );
+ if ( pStyleSheet )
+ {
+ SfxItemSet& rSet = pStyleSheet->GetItemSet();
+ rSet.Put( SfxUInt16Item( ATTR_PAGE_SCALE, nScale ) );
+ rSet.Put( SfxUInt16Item( ATTR_PAGE_SCALETOPAGES, nPages ) );
+
+ ScPrintFunc aPrintFunc( pDocShell, pDocShell->GetPrinter(), nTab );
+ aPrintFunc.UpdatePages();
+ }
+}
+
+void __EXPORT ScUndoPrintZoom::Undo()
+{
+ BeginUndo();
+ DoChange(TRUE);
+ EndUndo();
+}
+
+void __EXPORT ScUndoPrintZoom::Redo()
+{
+ BeginRedo();
+ DoChange(FALSE);
+ EndRedo();
+}
+
+void __EXPORT ScUndoPrintZoom::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
+ ScViewData* pViewData = rViewShell.GetViewData();
+ pViewData->GetDocShell()->SetPrintZoom( pViewData->GetTabNo(), nNewScale, nNewPages );
+ }
+}
+
+BOOL __EXPORT ScUndoPrintZoom::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Thesaurus
+//
+
+ScUndoThesaurus::ScUndoThesaurus( ScDocShell* pNewDocShell,
+ USHORT nNewCol, USHORT nNewRow, USHORT nNewTab,
+ const String& rNewUndoStr, const EditTextObject* pUndoTObj,
+ const String& rNewRedoStr, const EditTextObject* pRedoTObj) :
+ ScSimpleUndo( pNewDocShell ),
+ nCol( nNewCol ),
+ nRow( nNewRow ),
+ nTab( nNewTab ),
+ aUndoStr( rNewUndoStr ),
+ aRedoStr( rNewRedoStr )
+{
+ pUndoTObject = (pUndoTObj) ? pUndoTObj->Clone() : NULL;
+ pRedoTObject = (pRedoTObj) ? pRedoTObj->Clone() : NULL;
+
+ ScBaseCell* pOldCell;
+ if ( pUndoTObject )
+ pOldCell = new ScEditCell( pUndoTObject, pDocShell->GetDocument(), NULL );
+ else
+ pOldCell = new ScStringCell( aUndoStr );
+ SetChangeTrack( pOldCell );
+ pOldCell->Delete();
+}
+
+__EXPORT ScUndoThesaurus::~ScUndoThesaurus()
+{
+ delete pUndoTObject;
+ delete pRedoTObject;
+}
+
+String __EXPORT ScUndoThesaurus::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_THESAURUS ); // "Thesaurus"
+}
+
+void ScUndoThesaurus::SetChangeTrack( ScBaseCell* pOldCell )
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ nEndChangeAction = pChangeTrack->GetActionMax() + 1;
+ pChangeTrack->AppendContent( ScAddress( nCol, nRow, nTab ), pOldCell );
+ if ( nEndChangeAction > pChangeTrack->GetActionMax() )
+ nEndChangeAction = 0; // nichts appended
+ }
+ else
+ nEndChangeAction = 0;
+}
+
+void __EXPORT ScUndoThesaurus::DoChange( BOOL bUndo, const String& rStr,
+ const EditTextObject* pTObj )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ pViewShell->SetTabNo( nTab );
+ pViewShell->MoveCursorAbs( nCol, nRow, SC_FOLLOW_JUMP, FALSE, FALSE );
+ }
+
+ if (pTObj)
+ {
+ ScBaseCell* pCell;
+ pDoc->GetCell( nCol, nRow, nTab, pCell );
+ if (pCell)
+ {
+ if (pCell->GetCellType() == CELLTYPE_EDIT )
+ {
+ ScEditCell* pNewCell = new ScEditCell( pTObj, pDoc, NULL );
+ pDoc->PutCell( nCol, nRow, nTab, pNewCell );
+ if ( !bUndo )
+ SetChangeTrack( pCell );
+ }
+ else
+ {
+ DBG_ERROR("Nicht CELLTYPE_EDIT bei Un/RedoThesaurus");
+ }
+ }
+ }
+ else
+ {
+ ScBaseCell* pCell;
+ if ( !bUndo )
+ pDoc->GetCell( nCol, nRow, nTab, pCell );
+ pDoc->SetString( nCol, nRow, nTab, rStr );
+ if ( !bUndo )
+ SetChangeTrack( pCell );
+ }
+
+ pDocShell->PostPaintCell( nCol, nRow, nTab );
+}
+
+void __EXPORT ScUndoThesaurus::Undo()
+{
+ BeginUndo();
+ DoChange( TRUE, aUndoStr, pUndoTObject );
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nEndChangeAction, nEndChangeAction );
+ EndUndo();
+}
+
+void __EXPORT ScUndoThesaurus::Redo()
+{
+ BeginRedo();
+ DoChange( FALSE, aRedoStr, pRedoTObject );
+ EndRedo();
+}
+
+void __EXPORT ScUndoThesaurus::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->DoThesaurus( TRUE );
+}
+
+BOOL __EXPORT ScUndoThesaurus::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Notizen ein-/ausblenden
+//
+
+ScUndoNote::ScUndoNote( ScDocShell* pNewDocShell, BOOL bShow,
+ const ScAddress& rNewPos, SdrUndoAction* pDraw ) :
+ ScSimpleUndo( pNewDocShell ),
+ bIsShow ( bShow ),
+ aPos ( rNewPos ),
+ pDrawUndo ( pDraw )
+
+{
+}
+
+__EXPORT ScUndoNote::~ScUndoNote()
+{
+ DeleteSdrUndoAction( pDrawUndo );
+}
+
+String __EXPORT ScUndoNote::GetComment() const
+{
+ if ( bIsShow )
+ return ScGlobal::GetRscString( STR_UNDO_SHOWNOTE ); // Notiz anzeigen
+ else
+ return ScGlobal::GetRscString( STR_UNDO_HIDENOTE ); // Notiz ausblenden
+}
+
+
+void __EXPORT ScUndoNote::Undo()
+{
+ BeginUndo();
+
+ if (pDrawUndo)
+ DoSdrUndoAction(pDrawUndo);
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScPostIt aNote;
+ pDoc->GetNote( aPos.Col(), aPos.Row(), aPos.Tab(), aNote );
+ aNote.SetShown( !bIsShow );
+ pDoc->SetNote( aPos.Col(), aPos.Row(), aPos.Tab(), aNote );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoNote::Redo()
+{
+ BeginRedo();
+
+ if (pDrawUndo)
+ RedoSdrUndoAction(pDrawUndo);
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScPostIt aNote;
+ pDoc->GetNote( aPos.Col(), aPos.Row(), aPos.Tab(), aNote );
+ aNote.SetShown( bIsShow );
+ pDoc->SetNote( aPos.Col(), aPos.Row(), aPos.Tab(), aNote );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoNote::Repeat(SfxRepeatTarget& rTarget)
+{
+ // hammanich
+}
+
+BOOL __EXPORT ScUndoNote::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Text von Notiz aendern (ohne Drawing-Krempel)
+//
+
+ScUndoEditNote::ScUndoEditNote( ScDocShell* pNewDocShell, const ScAddress& rNewPos,
+ const ScPostIt& rOld, const ScPostIt& rNew ) :
+ ScSimpleUndo( pNewDocShell ),
+ aPos ( rNewPos ),
+ aOldNote ( rOld ),
+ aNewNote ( rNew )
+{
+}
+
+__EXPORT ScUndoEditNote::~ScUndoEditNote()
+{
+}
+
+String __EXPORT ScUndoEditNote::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_SHOWNOTE );
+}
+
+void __EXPORT ScUndoEditNote::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->SetNote( aPos.Col(), aPos.Row(), aPos.Tab(), aOldNote );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoEditNote::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->SetNote( aPos.Col(), aPos.Row(), aPos.Tab(), aNewNote );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoEditNote::Repeat(SfxRepeatTarget& rTarget)
+{
+ // hammanich
+}
+
+BOOL __EXPORT ScUndoEditNote::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Detektiv
+//
+
+ScUndoDetective::ScUndoDetective( ScDocShell* pNewDocShell,
+ SdrUndoAction* pDraw, const ScDetOpData* pOperation,
+ ScDetOpList* pUndoList ) :
+ ScSimpleUndo( pNewDocShell ),
+ pDrawUndo ( pDraw ),
+ nAction ( 0 ),
+ pOldList ( pUndoList )
+{
+ bIsDelete = ( pOperation == NULL );
+ if (!bIsDelete)
+ {
+ nAction = (USHORT) pOperation->GetOperation();
+ aPos = pOperation->GetPos();
+ }
+}
+
+__EXPORT ScUndoDetective::~ScUndoDetective()
+{
+ DeleteSdrUndoAction( pDrawUndo );
+ delete pOldList;
+}
+
+String __EXPORT ScUndoDetective::GetComment() const
+{
+ USHORT nId = STR_UNDO_DETDELALL;
+ if ( !bIsDelete )
+ switch ( (ScDetOpType) nAction )
+ {
+ case SCDETOP_ADDSUCC: nId = STR_UNDO_DETADDSUCC; break;
+ case SCDETOP_DELSUCC: nId = STR_UNDO_DETDELSUCC; break;
+ case SCDETOP_ADDPRED: nId = STR_UNDO_DETADDPRED; break;
+ case SCDETOP_DELPRED: nId = STR_UNDO_DETDELPRED; break;
+ case SCDETOP_ADDERROR: nId = STR_UNDO_DETADDERROR; break;
+ }
+
+ return ScGlobal::GetRscString( nId );
+}
+
+
+void __EXPORT ScUndoDetective::Undo()
+{
+ BeginUndo();
+
+ if (pDrawUndo)
+ DoSdrUndoAction(pDrawUndo);
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ if (bIsDelete)
+ {
+ if ( pOldList )
+ pDoc->SetDetOpList( new ScDetOpList(*pOldList) );
+ }
+ else
+ {
+ // Eintrag aus der Liste loeschen
+
+ ScDetOpList* pList = pDoc->GetDetOpList();
+ if (pList && pList->Count())
+ {
+ USHORT nPos = pList->Count() - 1;
+ ScDetOpData* pData = (*pList)[nPos];
+ if ( pData->GetOperation() == (ScDetOpType) nAction && pData->GetPos() == aPos )
+ pList->DeleteAndDestroy( nPos, 1 );
+ else
+ DBG_ERROR("Detektiv-Eintrag in der Liste nicht gefunden");
+ }
+ }
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoDetective::Redo()
+{
+ BeginRedo();
+
+ if (pDrawUndo)
+ RedoSdrUndoAction(pDrawUndo);
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ if (bIsDelete)
+ pDoc->ClearDetectiveOperations();
+ else
+ pDoc->AddDetectiveOperation( ScDetOpData( aPos, (ScDetOpType) nAction ) );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoDetective::Repeat(SfxRepeatTarget& rTarget)
+{
+ // hammanich
+}
+
+BOOL __EXPORT ScUndoDetective::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+// -----------------------------------------------------------------------
+//
+// Benannte Bereiche
+//
+
+ScUndoRangeNames::ScUndoRangeNames( ScDocShell* pNewDocShell,
+ ScRangeName* pOld, ScRangeName* pNew ) :
+ ScSimpleUndo( pNewDocShell ),
+ pOldRanges ( pOld ),
+ pNewRanges ( pNew )
+{
+}
+
+__EXPORT ScUndoRangeNames::~ScUndoRangeNames()
+{
+ delete pOldRanges;
+ delete pNewRanges;
+}
+
+String __EXPORT ScUndoRangeNames::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_RANGENAMES );
+}
+
+void ScUndoRangeNames::DoChange( BOOL bUndo )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->CompileNameFormula( TRUE ); // CreateFormulaString
+
+ if ( bUndo )
+ pDoc->SetRangeName( new ScRangeName( *pOldRanges ) );
+ else
+ pDoc->SetRangeName( new ScRangeName( *pNewRanges ) );
+
+ pDoc->CompileNameFormula( FALSE ); // CompileFormulaString
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREAS_CHANGED ) );
+}
+
+void __EXPORT ScUndoRangeNames::Undo()
+{
+ BeginUndo();
+ DoChange( TRUE );
+ EndUndo();
+}
+
+void __EXPORT ScUndoRangeNames::Redo()
+{
+ BeginRedo();
+ DoChange( FALSE );
+ EndRedo();
+}
+
+void __EXPORT ScUndoRangeNames::Repeat(SfxRepeatTarget& rTarget)
+{
+ // hammanich
+}
+
+BOOL __EXPORT ScUndoRangeNames::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+
+
diff --git a/sc/source/ui/undo/undodat.cxx b/sc/source/ui/undo/undodat.cxx
new file mode 100644
index 000000000000..f0562d01b06f
--- /dev/null
+++ b/sc/source/ui/undo/undodat.cxx
@@ -0,0 +1,2147 @@
+/*************************************************************************
+ *
+ * $RCSfile: undodat.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sfx2/app.hxx>
+
+#include "undodat.hxx"
+#include "undoutil.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+#include "olinetab.hxx"
+#include "dbcolect.hxx"
+#include "rangenam.hxx"
+#include "pivot.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "target.hxx"
+#include "chartarr.hxx"
+#include "dbdocfun.hxx"
+#include "olinefun.hxx"
+#include "dpobject.hxx"
+#include "sc.hrc"
+
+// -----------------------------------------------------------------------
+
+TYPEINIT1(ScUndoDoOutline, SfxUndoAction);
+TYPEINIT1(ScUndoMakeOutline, SfxUndoAction);
+TYPEINIT1(ScUndoOutlineLevel, SfxUndoAction);
+TYPEINIT1(ScUndoOutlineBlock, SfxUndoAction);
+TYPEINIT1(ScUndoRemoveAllOutlines, SfxUndoAction);
+TYPEINIT1(ScUndoAutoOutline, SfxUndoAction);
+TYPEINIT1(ScUndoSubTotals, SfxUndoAction);
+TYPEINIT1(ScUndoSort, SfxUndoAction);
+TYPEINIT1(ScUndoQuery, SfxUndoAction);
+TYPEINIT1(ScUndoDBData, SfxUndoAction);
+TYPEINIT1(ScUndoImportData, SfxUndoAction);
+TYPEINIT1(ScUndoRepeatDB, SfxUndoAction);
+TYPEINIT1(ScUndoPivot, SfxUndoAction);
+TYPEINIT1(ScUndoDataPilot, SfxUndoAction);
+TYPEINIT1(ScUndoConsolidate, SfxUndoAction);
+TYPEINIT1(ScUndoChartData, SfxUndoAction);
+
+// -----------------------------------------------------------------------
+
+
+//
+// Outline-Gruppen ein- oder ausblenden
+//
+
+ScUndoDoOutline::ScUndoDoOutline( ScDocShell* pNewDocShell,
+ USHORT nNewStart, USHORT nNewEnd, USHORT nNewTab,
+ ScDocument* pNewUndoDoc, BOOL bNewColumns,
+ USHORT nNewLevel, USHORT nNewEntry, BOOL bNewShow ) :
+ ScSimpleUndo( pNewDocShell ),
+ nStart( nNewStart ),
+ nEnd( nNewEnd ),
+ nTab( nNewTab ),
+ pUndoDoc( pNewUndoDoc ),
+ bColumns( bNewColumns ),
+ nLevel( nNewLevel ),
+ nEntry( nNewEntry ),
+ bShow( bNewShow )
+{
+}
+
+__EXPORT ScUndoDoOutline::~ScUndoDoOutline()
+{
+ delete pUndoDoc;
+}
+
+String __EXPORT ScUndoDoOutline::GetComment() const
+{ // Detail einblenden" "Detail ausblenden"
+ return bShow ?
+ ScGlobal::GetRscString( STR_UNDO_DOOUTLINE ) :
+ ScGlobal::GetRscString( STR_UNDO_REDOOUTLINE );
+}
+
+void __EXPORT ScUndoDoOutline::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ // Tabelle muss vorher umgeschaltet sein (#46952#) !!!
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ // inverse Funktion ausfuehren
+
+ if (bShow)
+ pViewShell->HideOutline( bColumns, nLevel, nEntry, FALSE, FALSE );
+ else
+ pViewShell->ShowOutline( bColumns, nLevel, nEntry, FALSE, FALSE );
+
+ // Original Spalten-/Zeilenstatus
+
+ if (bColumns)
+ pUndoDoc->CopyToDocument( nStart, 0, nTab, nEnd, MAXROW, nTab, IDF_NONE, FALSE, pDoc );
+ else
+ pUndoDoc->CopyToDocument( 0, nStart, nTab, MAXCOL, nEnd, nTab, IDF_NONE, FALSE, pDoc );
+
+ pViewShell->UpdateScrollBars();
+
+ pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PAINT_GRID|PAINT_LEFT|PAINT_TOP);
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoDoOutline::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ // Tabelle muss vorher umgeschaltet sein (#46952#) !!!
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ if (bShow)
+ pViewShell->ShowOutline( bColumns, nLevel, nEntry, FALSE );
+ else
+ pViewShell->HideOutline( bColumns, nLevel, nEntry, FALSE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoDoOutline::Repeat(SfxRepeatTarget& rTarget)
+{
+}
+
+BOOL __EXPORT ScUndoDoOutline::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE; // geht nicht
+}
+
+//
+// Outline-Gruppen erzeugen oder loeschen
+//
+
+ScUndoMakeOutline::ScUndoMakeOutline( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScOutlineTable* pNewUndoTab, BOOL bNewColumns, BOOL bNewMake ) :
+ ScSimpleUndo( pNewDocShell ),
+ aBlockStart( nStartX, nStartY, nStartZ ),
+ aBlockEnd( nEndX, nEndY, nEndZ ),
+ pUndoTable( pNewUndoTab ),
+ bColumns( bNewColumns ),
+ bMake( bNewMake )
+{
+}
+
+__EXPORT ScUndoMakeOutline::~ScUndoMakeOutline()
+{
+ delete pUndoTable;
+}
+
+String __EXPORT ScUndoMakeOutline::GetComment() const
+{ // "Gruppierung" "Gruppierung aufheben"
+ return bMake ?
+ ScGlobal::GetRscString( STR_UNDO_MAKEOUTLINE ) :
+ ScGlobal::GetRscString( STR_UNDO_REMAKEOUTLINE );
+}
+
+void __EXPORT ScUndoMakeOutline::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ USHORT nTab = aBlockStart.GetTab();
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aBlockStart, aBlockEnd );
+
+ pDoc->SetOutlineTable( nTab, pUndoTable );
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PAINT_GRID|PAINT_LEFT|PAINT_TOP|PAINT_SIZE);
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoMakeOutline::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aBlockStart, aBlockEnd );
+
+ if (bMake)
+ pViewShell->MakeOutline( bColumns, FALSE );
+ else
+ pViewShell->RemoveOutline( bColumns, FALSE );
+
+ pDocShell->PostPaint(0,0,aBlockStart.GetTab(),MAXCOL,MAXROW,aBlockEnd.GetTab(),PAINT_GRID);
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoMakeOutline::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
+
+ if (bMake)
+ rViewShell.MakeOutline( bColumns, TRUE );
+ else
+ rViewShell.RemoveOutline( bColumns, TRUE );
+ }
+}
+
+BOOL __EXPORT ScUndoMakeOutline::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+//
+// Outline-Ebene auswaehlen
+//
+
+ScUndoOutlineLevel::ScUndoOutlineLevel( ScDocShell* pNewDocShell,
+ USHORT nNewStart, USHORT nNewEnd, USHORT nNewTab,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ BOOL bNewColumns, USHORT nNewLevel ) :
+ ScSimpleUndo( pNewDocShell ),
+ nStart( nNewStart ),
+ nEnd( nNewEnd ),
+ nTab( nNewTab ),
+ pUndoDoc( pNewUndoDoc ),
+ pUndoTable( pNewUndoTab ),
+ bColumns( bNewColumns ),
+ nLevel( nNewLevel )
+{
+}
+
+__EXPORT ScUndoOutlineLevel::~ScUndoOutlineLevel()
+{
+ delete pUndoDoc;
+ delete pUndoTable;
+}
+
+String __EXPORT ScUndoOutlineLevel::GetComment() const
+{ // "Gliederungsebene auswaehlen";
+ return ScGlobal::GetRscString( STR_UNDO_OUTLINELEVEL );
+}
+
+void __EXPORT ScUndoOutlineLevel::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ // Original Outline-Table
+
+ pDoc->SetOutlineTable( nTab, pUndoTable );
+
+ // Original Spalten-/Zeilenstatus
+
+ if (bColumns)
+ pUndoDoc->CopyToDocument( nStart, 0, nTab, nEnd, MAXROW, nTab, IDF_NONE, FALSE, pDoc );
+ else
+ pUndoDoc->CopyToDocument( 0, nStart, nTab, MAXCOL, nEnd, nTab, IDF_NONE, FALSE, pDoc );
+
+ pDoc->UpdatePageBreaks( nTab );
+
+ pViewShell->UpdateScrollBars();
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PAINT_GRID|PAINT_LEFT|PAINT_TOP);
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoOutlineLevel::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ // Tabelle muss vorher umgeschaltet sein (#46952#) !!!
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ pViewShell->SelectLevel( bColumns, nLevel, FALSE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoOutlineLevel::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->SelectLevel( bColumns, nLevel, TRUE );
+}
+
+BOOL __EXPORT ScUndoOutlineLevel::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+//
+// Outline ueber Blockmarken ein- oder ausblenden
+//
+
+ScUndoOutlineBlock::ScUndoOutlineBlock( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab, BOOL bNewShow ) :
+ ScSimpleUndo( pNewDocShell ),
+ aBlockStart( nStartX, nStartY, nStartZ ),
+ aBlockEnd( nEndX, nEndY, nEndZ ),
+ pUndoDoc( pNewUndoDoc ),
+ pUndoTable( pNewUndoTab ),
+ bShow( bNewShow )
+{
+}
+
+__EXPORT ScUndoOutlineBlock::~ScUndoOutlineBlock()
+{
+ delete pUndoDoc;
+ delete pUndoTable;
+}
+
+String __EXPORT ScUndoOutlineBlock::GetComment() const
+{ // "Detail einblenden" "Detail ausblenden"
+ return bShow ?
+ ScGlobal::GetRscString( STR_UNDO_DOOUTLINEBLK ) :
+ ScGlobal::GetRscString( STR_UNDO_REDOOUTLINEBLK );
+}
+
+void __EXPORT ScUndoOutlineBlock::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ USHORT nTab = aBlockStart.GetTab();
+
+ // Original Outline-Table
+
+ pDoc->SetOutlineTable( nTab, pUndoTable );
+
+ // Original Spalten-/Zeilenstatus
+
+ USHORT nStartCol = aBlockStart.GetCol();
+ USHORT nEndCol = aBlockEnd.GetCol();
+ USHORT nStartRow = aBlockStart.GetRow();
+ USHORT nEndRow = aBlockEnd.GetRow();
+
+ if (!bShow)
+ { // Groesse des ausgeblendeten Blocks
+ USHORT nLevel;
+ pUndoTable->GetColArray()->FindTouchedLevel( nStartCol, nEndCol, nLevel );
+ pUndoTable->GetColArray()->ExtendBlock( nLevel, nStartCol, nEndCol );
+ pUndoTable->GetRowArray()->FindTouchedLevel( nStartRow, nEndRow, nLevel );
+ pUndoTable->GetRowArray()->ExtendBlock( nLevel, nStartRow, nEndRow );
+ }
+
+ pUndoDoc->CopyToDocument( nStartCol, 0, nTab, nEndCol, MAXROW, nTab, IDF_NONE, FALSE, pDoc );
+ pUndoDoc->CopyToDocument( 0, nStartRow, nTab, MAXCOL, nEndRow, nTab, IDF_NONE, FALSE, pDoc );
+
+ pDoc->UpdatePageBreaks( nTab );
+
+ pViewShell->UpdateScrollBars();
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PAINT_GRID|PAINT_LEFT|PAINT_TOP);
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoOutlineBlock::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aBlockStart, aBlockEnd );
+ if (bShow)
+ pViewShell->ShowMarkedOutlines( FALSE );
+ else
+ pViewShell->HideMarkedOutlines( FALSE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoOutlineBlock::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
+
+ if (bShow)
+ rViewShell.ShowMarkedOutlines( TRUE );
+ else
+ rViewShell.HideMarkedOutlines( TRUE );
+ }
+}
+
+BOOL __EXPORT ScUndoOutlineBlock::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+//
+// alle Outlines loeschen
+//
+
+ScUndoRemoveAllOutlines::ScUndoRemoveAllOutlines( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab ) :
+ ScSimpleUndo( pNewDocShell ),
+ aBlockStart( nStartX, nStartY, nStartZ ),
+ aBlockEnd( nEndX, nEndY, nEndZ ),
+ pUndoDoc( pNewUndoDoc ),
+ pUndoTable( pNewUndoTab )
+{
+}
+
+__EXPORT ScUndoRemoveAllOutlines::~ScUndoRemoveAllOutlines()
+{
+ delete pUndoDoc;
+ delete pUndoTable;
+}
+
+String __EXPORT ScUndoRemoveAllOutlines::GetComment() const
+{ // "Gliederung entfernen"
+ return ScGlobal::GetRscString( STR_UNDO_REMOVEALLOTLNS );
+}
+
+void __EXPORT ScUndoRemoveAllOutlines::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ USHORT nTab = aBlockStart.GetTab();
+
+ // Original Outline-Table
+
+ pDoc->SetOutlineTable( nTab, pUndoTable );
+
+ // Original Spalten-/Zeilenstatus
+
+ USHORT nStartCol = aBlockStart.GetCol();
+ USHORT nEndCol = aBlockEnd.GetCol();
+ USHORT nStartRow = aBlockStart.GetRow();
+ USHORT nEndRow = aBlockEnd.GetRow();
+
+ pUndoDoc->CopyToDocument( nStartCol, 0, nTab, nEndCol, MAXROW, nTab, IDF_NONE, FALSE, pDoc );
+ pUndoDoc->CopyToDocument( 0, nStartRow, nTab, MAXCOL, nEndRow, nTab, IDF_NONE, FALSE, pDoc );
+
+ pDoc->UpdatePageBreaks( nTab );
+
+ pViewShell->UpdateScrollBars();
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PAINT_GRID|PAINT_LEFT|PAINT_TOP|PAINT_SIZE);
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoRemoveAllOutlines::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ // Tabelle muss vorher umgeschaltet sein (#46952#) !!!
+
+ USHORT nTab = aBlockStart.GetTab();
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ pViewShell->RemoveAllOutlines( FALSE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoRemoveAllOutlines::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->RemoveAllOutlines( TRUE );
+}
+
+BOOL __EXPORT ScUndoRemoveAllOutlines::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+//
+// Auto-Outline
+//
+
+ScUndoAutoOutline::ScUndoAutoOutline( ScDocShell* pNewDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab ) :
+ ScSimpleUndo( pNewDocShell ),
+ aBlockStart( nStartX, nStartY, nStartZ ),
+ aBlockEnd( nEndX, nEndY, nEndZ ),
+ pUndoDoc( pNewUndoDoc ),
+ pUndoTable( pNewUndoTab )
+{
+}
+
+__EXPORT ScUndoAutoOutline::~ScUndoAutoOutline()
+{
+ delete pUndoDoc;
+ delete pUndoTable;
+}
+
+String __EXPORT ScUndoAutoOutline::GetComment() const
+{ // "Auto-Gliederung"
+ return ScGlobal::GetRscString( STR_UNDO_AUTOOUTLINE );
+}
+
+void __EXPORT ScUndoAutoOutline::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ USHORT nTab = aBlockStart.GetTab();
+
+ // Original Outline-Table
+
+ pDoc->SetOutlineTable( nTab, pUndoTable );
+
+ // Original Spalten-/Zeilenstatus
+
+ if (pUndoDoc && pUndoTable)
+ {
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ pUndoTable->GetColArray()->GetRange( nStartCol, nEndCol );
+ pUndoTable->GetRowArray()->GetRange( nStartRow, nEndRow );
+
+ pUndoDoc->CopyToDocument( nStartCol, 0, nTab, nEndCol, MAXROW, nTab, IDF_NONE, FALSE, pDoc );
+ pUndoDoc->CopyToDocument( 0, nStartRow, nTab, MAXCOL, nEndRow, nTab, IDF_NONE, FALSE, pDoc );
+
+ pViewShell->UpdateScrollBars();
+ }
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PAINT_GRID|PAINT_LEFT|PAINT_TOP|PAINT_SIZE);
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoAutoOutline::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ USHORT nTab = aBlockStart.GetTab();
+ if (pViewShell)
+ {
+ // Tabelle muss vorher umgeschaltet sein (#46952#) !!!
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+ }
+
+ ScRange aRange( aBlockStart.GetCol(), aBlockStart.GetRow(), nTab,
+ aBlockEnd.GetCol(), aBlockEnd.GetRow(), nTab );
+ ScOutlineDocFunc aFunc( *pDocShell );
+ aFunc.AutoOutline( aRange, FALSE, FALSE );
+
+ // auf der View markieren
+ // Wenn's beim Aufruf eine Mehrfachselektion war, ist es jetzt der
+ // umschliessende Bereich...
+
+ if (pViewShell)
+ pViewShell->MarkRange( aRange );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoAutoOutline::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->AutoOutline( TRUE );
+}
+
+BOOL __EXPORT ScUndoAutoOutline::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+//
+// Zwischenergebnisse
+//
+
+ScUndoSubTotals::ScUndoSubTotals( ScDocShell* pNewDocShell, USHORT nNewTab,
+ const ScSubTotalParam& rNewParam, USHORT nNewEndY,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ ScRangeName* pNewUndoRange, ScDBCollection* pNewUndoDB ) :
+ ScSimpleUndo( pNewDocShell ),
+ nTab( nNewTab ),
+ aParam( rNewParam ),
+ nNewEndRow( nNewEndY ),
+ pUndoDoc( pNewUndoDoc ),
+ pUndoTable( pNewUndoTab ),
+ pUndoRange( pNewUndoRange ),
+ pUndoDB( pNewUndoDB )
+{
+}
+
+__EXPORT ScUndoSubTotals::~ScUndoSubTotals()
+{
+ delete pUndoDoc;
+ delete pUndoTable;
+ delete pUndoRange;
+ delete pUndoDB;
+}
+
+String __EXPORT ScUndoSubTotals::GetComment() const
+{ // "Teilergebnisse"
+ return ScGlobal::GetRscString( STR_UNDO_SUBTOTALS );
+}
+
+void __EXPORT ScUndoSubTotals::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ // um einzelnen DB-Bereich anzupassen
+/* ScDBData* pOldDBData = ScUndoUtil::GetOldDBData( pUndoDBData, pDoc, nTab,
+ aParam.nCol1, aParam.nRow1, aParam.nCol2, nNewEndRow );
+*/
+
+ if (nNewEndRow > aParam.nRow2)
+ {
+ pDoc->DeleteRow( 0,nTab, MAXCOL,nTab, aParam.nRow2+1, nNewEndRow-aParam.nRow2 );
+ }
+ else if (nNewEndRow < aParam.nRow2)
+ {
+ pDoc->InsertRow( 0,nTab, MAXCOL,nTab, nNewEndRow+1, nNewEndRow-aParam.nRow2 );
+ }
+
+
+ // Original Outline-Table
+
+ pDoc->SetOutlineTable( nTab, pUndoTable );
+
+ // Original Spalten-/Zeilenstatus
+
+ if (pUndoDoc && pUndoTable)
+ {
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ pUndoTable->GetColArray()->GetRange( nStartCol, nEndCol );
+ pUndoTable->GetRowArray()->GetRange( nStartRow, nEndRow );
+
+ pUndoDoc->CopyToDocument( nStartCol, 0, nTab, nEndCol, MAXROW, nTab, IDF_NONE, FALSE, pDoc );
+ pUndoDoc->CopyToDocument( 0, nStartRow, nTab, MAXCOL, nEndRow, nTab, IDF_NONE, FALSE, pDoc );
+
+ pViewShell->UpdateScrollBars();
+ }
+
+ // Original-Daten & Referenzen
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, 0, aParam.nRow1+1, nTab,
+ MAXCOL, aParam.nRow2, nTab );
+
+ pDoc->DeleteAreaTab( 0,aParam.nRow1+1, MAXCOL,aParam.nRow2, nTab, IDF_ALL );
+
+ pUndoDoc->CopyToDocument( 0, aParam.nRow1+1, nTab, MAXCOL, aParam.nRow2, nTab,
+ IDF_NONE, FALSE, pDoc ); // Flags
+ pUndoDoc->UndoToDocument( 0, aParam.nRow1+1, nTab, MAXCOL, aParam.nRow2, nTab,
+ IDF_ALL, FALSE, pDoc );
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aParam.nCol1,aParam.nRow1,nTab,
+ aParam.nCol2,aParam.nRow2,nTab );
+
+/* if (pUndoDBData)
+ *pOldDBData = *pUndoDBData;
+*/
+ if (pUndoRange)
+ pDoc->SetRangeName( new ScRangeName( *pUndoRange ) );
+ if (pUndoDB)
+ pDoc->SetDBCollection( new ScDBCollection( *pUndoDB ) );
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PAINT_GRID|PAINT_LEFT|PAINT_TOP|PAINT_SIZE);
+ pDocShell->PostDataChanged();
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoSubTotals::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aParam.nCol1,aParam.nRow1,nTab,
+ aParam.nCol2,aParam.nRow2,nTab );
+ pViewShell->DoSubTotals( aParam, FALSE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoSubTotals::Repeat(SfxRepeatTarget& rTarget)
+{
+}
+
+BOOL __EXPORT ScUndoSubTotals::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE; // geht nicht wegen Spaltennummern
+}
+
+//
+// Sortieren
+//
+
+ScUndoSort::ScUndoSort( ScDocShell* pNewDocShell,
+ USHORT nNewTab, const ScSortParam& rParam,
+ BOOL bQuery, ScDocument* pNewUndoDoc, ScDBCollection* pNewUndoDB,
+ const ScRange* pDest ) :
+ ScSimpleUndo( pNewDocShell ),
+ nTab( nNewTab ),
+ aSortParam( rParam ),
+ bRepeatQuery( bQuery ),
+ pUndoDoc( pNewUndoDoc ),
+ pUndoDB( pNewUndoDB ),
+ bDestArea( FALSE )
+{
+ if ( pDest )
+ {
+ bDestArea = TRUE;
+ aDestRange = *pDest;
+ }
+}
+
+__EXPORT ScUndoSort::~ScUndoSort()
+{
+ delete pUndoDoc;
+ delete pUndoDB;
+}
+
+String __EXPORT ScUndoSort::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_SORT );
+}
+
+void __EXPORT ScUndoSort::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ USHORT nStartCol = aSortParam.nCol1;
+ USHORT nStartRow = aSortParam.nRow1;
+ USHORT nEndCol = aSortParam.nCol2;
+ USHORT nEndRow = aSortParam.nRow2;
+ USHORT nSortTab = nTab;
+ if ( !aSortParam.bInplace )
+ {
+ nStartCol = aSortParam.nDestCol;
+ nStartRow = aSortParam.nDestRow;
+ nEndCol = nStartCol + ( aSortParam.nCol2 - aSortParam.nCol1 );
+ nEndRow = nStartRow + ( aSortParam.nRow2 - aSortParam.nRow1 );
+ nSortTab = aSortParam.nDestTab;
+ }
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, nStartCol, nStartRow, nSortTab,
+ nEndCol, nEndRow, nSortTab );
+
+ pDoc->DeleteAreaTab( nStartCol,nStartRow, nEndCol,nEndRow, nSortTab, IDF_ALL );
+
+ pUndoDoc->CopyToDocument( nStartCol, nStartRow, nSortTab, nEndCol, nEndRow, nSortTab,
+ IDF_ALL, FALSE, pDoc );
+
+ if (bDestArea)
+ {
+ pDoc->DeleteAreaTab( aDestRange, IDF_ALL );
+ pUndoDoc->CopyToDocument( aDestRange, IDF_ALL, FALSE, pDoc );
+ }
+
+ // Zeilenhoehen immer (wegen automatischer Anpassung)
+ //! auf ScBlockUndo umstellen
+// if (bRepeatQuery)
+ pUndoDoc->CopyToDocument( 0, nStartRow, nSortTab, MAXCOL, nEndRow, nSortTab,
+ IDF_NONE, FALSE, pDoc );
+
+ if (pUndoDB)
+ pDoc->SetDBCollection( new ScDBCollection( *pUndoDB ) );
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nSortTab )
+ pViewShell->SetTabNo( nSortTab );
+
+ pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PAINT_GRID|PAINT_LEFT|PAINT_TOP|PAINT_SIZE);
+ pDocShell->PostDataChanged();
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoSort::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+// pViewShell->DoneBlockMode();
+// pViewShell->InitOwnBlockMode();
+// pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+
+ pViewShell->MarkRange( ScRange( aSortParam.nCol1, aSortParam.nRow1, nTab,
+ aSortParam.nCol2, aSortParam.nRow2, nTab ) );
+
+ pViewShell->Sort( aSortParam, FALSE );
+
+ // Quellbereich painten wegen Markierung
+ if ( !aSortParam.bInplace )
+ pDocShell->PostPaint( aSortParam.nCol1, aSortParam.nRow1, nTab,
+ aSortParam.nCol2, aSortParam.nRow2, nTab, PAINT_GRID );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoSort::Repeat(SfxRepeatTarget& rTarget)
+{
+}
+
+BOOL __EXPORT ScUndoSort::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE; // geht nicht wegen Spaltennummern
+}
+
+//
+// Filtern
+//
+
+ScUndoQuery::ScUndoQuery( ScDocShell* pNewDocShell, USHORT nNewTab, const ScQueryParam& rParam,
+ ScDocument* pNewUndoDoc, ScDBCollection* pNewUndoDB,
+ const ScRange* pOld, BOOL bSize, const ScRange* pAdvSrc ) :
+ ScSimpleUndo( pNewDocShell ),
+ nTab( nNewTab ),
+ aQueryParam( rParam ),
+ pUndoDoc( pNewUndoDoc ),
+// pUndoDBData( pNewData )
+ pUndoDB( pNewUndoDB ),
+ bIsAdvanced( FALSE ),
+ bDestArea( FALSE ),
+ bDoSize( bSize )
+{
+ if ( pOld )
+ {
+ bDestArea = TRUE;
+ aOldDest = *pOld;
+ }
+ if ( pAdvSrc )
+ {
+ bIsAdvanced = TRUE;
+ aAdvSource = *pAdvSrc;
+ }
+}
+
+__EXPORT ScUndoQuery::~ScUndoQuery()
+{
+ delete pUndoDoc;
+// delete pUndoDBData;
+ delete pUndoDB;
+}
+
+String __EXPORT ScUndoQuery::GetComment() const
+{ // "Filtern";
+ return ScGlobal::GetRscString( STR_UNDO_QUERY );
+}
+
+void __EXPORT ScUndoQuery::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ BOOL bCopy = !aQueryParam.bInplace;
+ USHORT nDestEndCol = 0;
+ USHORT nDestEndRow = 0;
+ if (bCopy)
+ {
+ nDestEndCol = aQueryParam.nDestCol + ( aQueryParam.nCol2-aQueryParam.nCol1 );
+ nDestEndRow = aQueryParam.nDestRow + ( aQueryParam.nRow2-aQueryParam.nRow1 );
+
+ ScDBData* pData = pDoc->GetDBAtCursor( aQueryParam.nDestCol, aQueryParam.nDestRow,
+ aQueryParam.nDestTab, TRUE );
+ if (pData)
+ {
+ ScRange aNewDest;
+ pData->GetArea( aNewDest );
+ nDestEndCol = aNewDest.aEnd.Col();
+ nDestEndRow = aNewDest.aEnd.Row();
+ }
+
+ if ( bDoSize && bDestArea )
+ {
+ // aDestRange ist der alte Bereich
+ pDoc->FitBlock( ScRange(
+ aQueryParam.nDestCol, aQueryParam.nDestRow, aQueryParam.nDestTab,
+ nDestEndCol, nDestEndRow, aQueryParam.nDestTab ),
+ aOldDest );
+ }
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell,
+ aQueryParam.nDestCol, aQueryParam.nDestRow, aQueryParam.nDestTab,
+ nDestEndCol, nDestEndRow, aQueryParam.nDestTab );
+ pDoc->DeleteAreaTab( aQueryParam.nDestCol, aQueryParam.nDestRow,
+ nDestEndCol, nDestEndRow, aQueryParam.nDestTab, IDF_ALL );
+
+ pViewShell->DoneBlockMode();
+
+ pUndoDoc->CopyToDocument( aQueryParam.nDestCol, aQueryParam.nDestRow, aQueryParam.nDestTab,
+ nDestEndCol, nDestEndRow, aQueryParam.nDestTab,
+ IDF_ALL, FALSE, pDoc );
+ // Attribute werden immer mitkopiert (#49287#)
+
+ // Rest von altem Bereich
+ if ( bDestArea && !bDoSize )
+ {
+ pDoc->DeleteAreaTab( aOldDest, IDF_ALL );
+ pUndoDoc->CopyToDocument( aOldDest, IDF_ALL, FALSE, pDoc );
+ }
+ }
+ else
+ pUndoDoc->CopyToDocument( 0, aQueryParam.nRow1, nTab, MAXCOL, aQueryParam.nRow2, nTab,
+ IDF_NONE, FALSE, pDoc );
+
+ if (pUndoDB)
+ pDoc->SetDBCollection( new ScDBCollection( *pUndoDB ) );
+
+ if (!bCopy)
+ pDoc->UpdatePageBreaks( nTab );
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ // Paint
+
+ if (bCopy)
+ {
+ USHORT nEndX = nDestEndCol;
+ USHORT nEndY = nDestEndRow;
+ if (bDestArea)
+ {
+ if ( aOldDest.aEnd.Col() > nEndX )
+ nEndX = aOldDest.aEnd.Col();
+ if ( aOldDest.aEnd.Row() > nEndY )
+ nEndY = aOldDest.aEnd.Row();
+ }
+ if (bDoSize)
+ nEndY = MAXROW;
+ pDocShell->PostPaint( aQueryParam.nDestCol, aQueryParam.nDestRow, aQueryParam.nDestTab,
+ nEndY, nEndY, aQueryParam.nDestTab, PAINT_GRID );
+ }
+ else
+ pDocShell->PostPaint( 0, aQueryParam.nRow1, nTab, MAXCOL, MAXROW, nTab,
+ PAINT_GRID | PAINT_LEFT );
+ pDocShell->PostDataChanged();
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoQuery::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ if ( bIsAdvanced )
+ pViewShell->Query( aQueryParam, &aAdvSource, FALSE );
+ else
+ pViewShell->Query( aQueryParam, NULL, FALSE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoQuery::Repeat(SfxRepeatTarget& rTarget)
+{
+}
+
+BOOL __EXPORT ScUndoQuery::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE; // geht nicht wegen Spaltennummern
+}
+
+//
+// Datenbankbereiche aendern (Dialog)
+//
+
+ScUndoDBData::ScUndoDBData( ScDocShell* pNewDocShell,
+ ScDBCollection* pNewUndoColl, ScDBCollection* pNewRedoColl ) :
+ ScSimpleUndo( pNewDocShell ),
+ pUndoColl( pNewUndoColl ),
+ pRedoColl( pNewRedoColl )
+{
+}
+
+__EXPORT ScUndoDBData::~ScUndoDBData()
+{
+ delete pUndoColl;
+ delete pRedoColl;
+}
+
+String __EXPORT ScUndoDBData::GetComment() const
+{ // "Datenbankbereiche aendern";
+ return ScGlobal::GetRscString( STR_UNDO_DBDATA );
+}
+
+void __EXPORT ScUndoDBData::Undo()
+{
+ BeginUndo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ BOOL bOldAutoCalc = pDoc->GetAutoCalc();
+ pDoc->SetAutoCalc( FALSE ); // unnoetige Berechnungen vermeiden
+ pDoc->CompileDBFormula( TRUE ); // CreateFormulaString
+ pDoc->SetDBCollection( new ScDBCollection(*pUndoColl) );
+ pDoc->CompileDBFormula( FALSE ); // CompileFormulaString
+ pDoc->SetAutoCalc( bOldAutoCalc );
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_DBAREAS_CHANGED ) );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoDBData::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ BOOL bOldAutoCalc = pDoc->GetAutoCalc();
+ pDoc->SetAutoCalc( FALSE ); // unnoetige Berechnungen vermeiden
+ pDoc->CompileDBFormula( TRUE ); // CreateFormulaString
+ pDoc->SetDBCollection( new ScDBCollection(*pRedoColl) );
+ pDoc->CompileDBFormula( FALSE ); // CompileFormulaString
+ pDoc->SetAutoCalc( bOldAutoCalc );
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_DBAREAS_CHANGED ) );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoDBData::Repeat(SfxRepeatTarget& rTarget)
+{
+}
+
+BOOL __EXPORT ScUndoDBData::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE; // geht nicht
+}
+
+//
+// Import
+//
+
+ScUndoImportData::ScUndoImportData( ScDocShell* pNewDocShell, USHORT nNewTab,
+ const ScImportParam& rParam, USHORT nNewEndX, USHORT nNewEndY,
+ USHORT nNewFormula,
+ ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc,
+ ScDBData* pNewUndoData, ScDBData* pNewRedoData ) :
+ ScSimpleUndo( pNewDocShell ),
+ nTab( nNewTab ),
+ aImportParam( rParam ),
+ nEndCol( nNewEndX ),
+ nEndRow( nNewEndY ),
+ pUndoDoc( pNewUndoDoc ),
+ pRedoDoc( pNewRedoDoc ),
+ pUndoDBData( pNewUndoData ),
+ pRedoDBData( pNewRedoData ),
+ nFormulaCols( nNewFormula ),
+ bRedoFilled( FALSE )
+{
+ // redo doc doesn't contain imported data (but everything else)
+}
+
+__EXPORT ScUndoImportData::~ScUndoImportData()
+{
+ delete pUndoDoc;
+ delete pRedoDoc;
+ delete pUndoDBData;
+ delete pRedoDBData;
+}
+
+String __EXPORT ScUndoImportData::GetComment() const
+{ // "Importieren";
+ return ScGlobal::GetRscString( STR_UNDO_IMPORTDATA );
+}
+
+void __EXPORT ScUndoImportData::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aImportParam.nCol1,aImportParam.nRow1,nTab,
+ nEndCol,nEndRow,nTab );
+
+ USHORT nTable, nCol1, nRow1, nCol2, nRow2;
+ ScDBData* pCurrentData = NULL;
+ if (pUndoDBData && pRedoDBData)
+ {
+ pRedoDBData->GetArea( nTable, nCol1, nRow1, nCol2, nRow2 );
+ pCurrentData = ScUndoUtil::GetOldDBData( pRedoDBData, pDoc, nTab,
+ nCol1, nRow1, nCol2, nRow2 );
+
+ if ( !bRedoFilled )
+ {
+ // read redo data from document at first undo
+ // imported data is deleted later anyway,
+ // so now delete each column after copying to save memory (#41216#)
+
+ BOOL bOldAutoCalc = pDoc->GetAutoCalc();
+ pDoc->SetAutoCalc( FALSE ); // outside of the loop
+ for (USHORT nCopyCol = nCol1; nCopyCol <= nCol2; nCopyCol++)
+ {
+ pDoc->CopyToDocument( nCopyCol,nRow1,nTab, nCopyCol,nRow2,nTab,
+ IDF_CONTENTS, FALSE, pRedoDoc );
+ pDoc->DeleteAreaTab( nCopyCol,nRow1, nCopyCol,nRow2, nTab, IDF_CONTENTS );
+ pDoc->DoColResize( nTab, nCopyCol, nCopyCol, 0 );
+ }
+ pDoc->SetAutoCalc( bOldAutoCalc );
+ bRedoFilled = TRUE;
+ }
+ }
+ BOOL bMoveCells = pUndoDBData && pRedoDBData &&
+ pRedoDBData->IsDoSize(); // in alt und neu gleich
+ if (bMoveCells)
+ {
+ // Undo: erst die neuen Daten loeschen, dann FitBlock rueckwaerts
+
+ ScRange aOld, aNew;
+ pUndoDBData->GetArea( aOld );
+ pRedoDBData->GetArea( aNew );
+
+ pDoc->DeleteAreaTab( aNew.aStart.Col(), aNew.aStart.Row(),
+ aNew.aEnd.Col(), aNew.aEnd.Row(), nTab, IDF_ALL );
+
+ aOld.aEnd.SetCol( aOld.aEnd.Col() + nFormulaCols ); // FitBlock auch fuer Formeln
+ aNew.aEnd.SetCol( aNew.aEnd.Col() + nFormulaCols );
+ pDoc->FitBlock( aNew, aOld, FALSE ); // rueckwaerts
+ }
+ else
+ pDoc->DeleteAreaTab( aImportParam.nCol1,aImportParam.nRow1,
+ nEndCol,nEndRow, nTab, IDF_ALL );
+
+ pUndoDoc->CopyToDocument( aImportParam.nCol1,aImportParam.nRow1,nTab,
+ nEndCol+nFormulaCols,nEndRow,nTab,
+ IDF_ALL, FALSE, pDoc );
+
+ if (pCurrentData)
+ {
+ *pCurrentData = *pUndoDBData;
+
+ pUndoDBData->GetArea( nTable, nCol1, nRow1, nCol2, nRow2 );
+ ScUndoUtil::MarkSimpleBlock( pDocShell, nCol1, nRow1, nTable, nCol2, nRow2, nTable );
+ }
+
+// erack! it's broadcasted
+// pDoc->SetDirty();
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ if (bMoveCells)
+ pDocShell->PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID );
+ else
+ pDocShell->PostPaint( aImportParam.nCol1,aImportParam.nRow1,nTab,
+ nEndCol,nEndRow,nTab, PAINT_GRID );
+ pDocShell->PostDataChanged();
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoImportData::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aImportParam.nCol1,aImportParam.nRow1,nTab,
+ nEndCol,nEndRow,nTab );
+
+ USHORT nTable, nCol1, nRow1, nCol2, nRow2;
+ ScDBData* pCurrentData = NULL;
+ if (pUndoDBData && pRedoDBData)
+ {
+ pUndoDBData->GetArea( nTable, nCol1, nRow1, nCol2, nRow2 );
+ pCurrentData = ScUndoUtil::GetOldDBData( pUndoDBData, pDoc, nTab,
+ nCol1, nRow1, nCol2, nRow2 );
+ }
+ BOOL bMoveCells = pUndoDBData && pRedoDBData &&
+ pRedoDBData->IsDoSize(); // in alt und neu gleich
+ if (bMoveCells)
+ {
+ // Redo: FitBlock, dann Daten loeschen (noetig fuer CopyToDocument)
+
+ ScRange aOld, aNew;
+ pUndoDBData->GetArea( aOld );
+ pRedoDBData->GetArea( aNew );
+
+ aOld.aEnd.SetCol( aOld.aEnd.Col() + nFormulaCols ); // FitBlock auch fuer Formeln
+ aNew.aEnd.SetCol( aNew.aEnd.Col() + nFormulaCols );
+ pDoc->FitBlock( aOld, aNew );
+
+ pDoc->DeleteAreaTab( aNew.aStart.Col(), aNew.aStart.Row(),
+ aNew.aEnd.Col(), aNew.aEnd.Row(), nTab, IDF_ALL );
+
+ pRedoDoc->CopyToDocument( aNew, IDF_ALL, FALSE, pDoc ); // incl. Formeln
+ }
+ else
+ {
+ pDoc->DeleteAreaTab( aImportParam.nCol1,aImportParam.nRow1,
+ nEndCol,nEndRow, nTab, IDF_ALL );
+ pRedoDoc->CopyToDocument( aImportParam.nCol1,aImportParam.nRow1,nTab,
+ nEndCol,nEndRow,nTab, IDF_ALL, FALSE, pDoc );
+ }
+
+ if (pCurrentData)
+ {
+ *pCurrentData = *pRedoDBData;
+
+ pRedoDBData->GetArea( nTable, nCol1, nRow1, nCol2, nRow2 );
+ ScUndoUtil::MarkSimpleBlock( pDocShell, nCol1, nRow1, nTable, nCol2, nRow2, nTable );
+ }
+
+// erack! it's broadcasted
+// pDoc->SetDirty();
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ if (bMoveCells)
+ pDocShell->PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID );
+ else
+ pDocShell->PostPaint( aImportParam.nCol1,aImportParam.nRow1,nTab,
+ nEndCol,nEndRow,nTab, PAINT_GRID );
+ pDocShell->PostDataChanged();
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoImportData::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
+
+ USHORT nDummy;
+ ScImportParam aNewParam(aImportParam);
+ ScDBData* pDBData = rViewShell.GetDBData();
+ pDBData->GetArea( nDummy, aNewParam.nCol1,aNewParam.nRow1, aNewParam.nCol2,aNewParam.nRow2 );
+
+ rViewShell.ImportData( aNewParam );
+ }
+}
+
+BOOL __EXPORT ScUndoImportData::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ // Repeat nur fuer Import per DB-Bereich, dann ist pUndoDBData gesetzt
+
+ if (pUndoDBData)
+ return (rTarget.ISA(ScTabViewTarget));
+ else
+ return FALSE; // Adressbuch
+}
+
+//
+// Operationen wiederholen
+//
+
+ScUndoRepeatDB::ScUndoRepeatDB( ScDocShell* pNewDocShell, USHORT nNewTab,
+ USHORT nStartX, USHORT nStartY, USHORT nEndX, USHORT nEndY,
+ USHORT nResultEndRow, USHORT nCurX, USHORT nCurY,
+ ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab,
+ ScRangeName* pNewUndoRange, ScDBCollection* pNewUndoDB,
+ const ScRange* pOldQ, const ScRange* pNewQ ) :
+ ScSimpleUndo( pNewDocShell ),
+ aBlockStart( nStartX,nStartY,nNewTab ),
+ aBlockEnd( nEndX,nEndY,nNewTab ),
+ nNewEndRow( nResultEndRow ),
+ aCursorPos( nCurX,nCurY,nNewTab ),
+ pUndoDoc( pNewUndoDoc ),
+ pUndoTable( pNewUndoTab ),
+ pUndoRange( pNewUndoRange ),
+ pUndoDB( pNewUndoDB ),
+ bQuerySize( FALSE )
+{
+ if ( pOldQ && pNewQ )
+ {
+ aOldQuery = *pOldQ;
+ aNewQuery = *pNewQ;
+ bQuerySize = TRUE;;
+ }
+}
+
+__EXPORT ScUndoRepeatDB::~ScUndoRepeatDB()
+{
+ delete pUndoDoc;
+ delete pUndoTable;
+ delete pUndoRange;
+ delete pUndoDB;
+}
+
+String __EXPORT ScUndoRepeatDB::GetComment() const
+{ // "Wiederholen"; //! bessere Beschreibung!
+ return ScGlobal::GetRscString( STR_UNDO_REPEATDB );
+}
+
+void __EXPORT ScUndoRepeatDB::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ USHORT nTab = aBlockStart.GetTab();
+
+ if (bQuerySize)
+ {
+ pDoc->FitBlock( aNewQuery, aOldQuery, FALSE );
+
+ if ( aNewQuery.aEnd.Col() == aOldQuery.aEnd.Col() )
+ {
+ USHORT nFormulaCols = 0;
+ USHORT nCol = aOldQuery.aEnd.Col() + 1;
+ USHORT nRow = aOldQuery.aStart.Row() + 1; //! Header testen
+ while ( nCol <= MAXCOL &&
+ pDoc->GetCellType(ScAddress( nCol, nRow, nTab )) == CELLTYPE_FORMULA )
+ ++nCol, ++nFormulaCols;
+
+ if ( nFormulaCols )
+ {
+ ScRange aOldForm = aOldQuery;
+ aOldForm.aStart.SetCol( aOldQuery.aEnd.Col() + 1 );
+ aOldForm.aEnd.SetCol( aOldQuery.aEnd.Col() + nFormulaCols );
+ ScRange aNewForm = aOldForm;
+ aNewForm.aEnd.SetRow( aNewQuery.aEnd.Row() );
+ pDoc->FitBlock( aNewForm, aOldForm, FALSE );
+ }
+ }
+ }
+
+ //! Daten von Filter in anderen Bereich fehlen noch !!!!!!!!!!!!!!!!!
+
+ if (nNewEndRow > aBlockEnd.GetRow())
+ {
+ pDoc->DeleteRow( 0,nTab, MAXCOL,nTab, aBlockEnd.GetRow()+1, nNewEndRow-aBlockEnd.GetRow() );
+ }
+ else if (nNewEndRow < aBlockEnd.GetRow())
+ {
+ pDoc->InsertRow( 0,nTab, MAXCOL,nTab, nNewEndRow+1, nNewEndRow-aBlockEnd.GetRow() );
+ }
+
+ // Original Outline-Table
+
+ pDoc->SetOutlineTable( nTab, pUndoTable );
+
+ // Original Spalten-/Zeilenstatus
+
+ if (pUndoDoc && pUndoTable)
+ {
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ pUndoTable->GetColArray()->GetRange( nStartCol, nEndCol );
+ pUndoTable->GetRowArray()->GetRange( nStartRow, nEndRow );
+
+ pUndoDoc->CopyToDocument( nStartCol, 0, nTab, nEndCol, MAXROW, nTab, IDF_NONE, FALSE, pDoc );
+ pUndoDoc->CopyToDocument( 0, nStartRow, nTab, MAXCOL, nEndRow, nTab, IDF_NONE, FALSE, pDoc );
+
+ pViewShell->UpdateScrollBars();
+ }
+
+ // Original-Daten & Referenzen
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, 0, aBlockStart.GetRow(), nTab,
+ MAXCOL, aBlockEnd.GetRow(), nTab );
+ pDoc->DeleteAreaTab( 0, aBlockStart.GetRow(),
+ MAXCOL, aBlockEnd.GetRow(), nTab, IDF_ALL );
+
+ pUndoDoc->CopyToDocument( 0, aBlockStart.GetRow(), nTab, MAXCOL, aBlockEnd.GetRow(), nTab,
+ IDF_NONE, FALSE, pDoc ); // Flags
+ pUndoDoc->UndoToDocument( 0, aBlockStart.GetRow(), nTab, MAXCOL, aBlockEnd.GetRow(), nTab,
+ IDF_ALL, FALSE, pDoc );
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aBlockStart.GetCol(),aBlockStart.GetRow(),nTab,
+ aBlockEnd.GetCol(),aBlockEnd.GetRow(),nTab );
+
+ if (pUndoRange)
+ pDoc->SetRangeName( new ScRangeName( *pUndoRange ) );
+ if (pUndoDB)
+ pDoc->SetDBCollection( new ScDBCollection( *pUndoDB ) );
+
+// erack! it's broadcasted
+// pDoc->SetDirty();
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PAINT_GRID|PAINT_LEFT|PAINT_TOP|PAINT_SIZE);
+ pDocShell->PostDataChanged();
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoRepeatDB::Redo()
+{
+ BeginRedo();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ USHORT nTab = aBlockStart.GetTab();
+
+ USHORT nVisTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nVisTab != nTab )
+ pViewShell->SetTabNo( nTab );
+
+ ScUndoUtil::MarkSimpleBlock( pDocShell, aBlockStart.GetCol(),aBlockStart.GetRow(),nTab,
+ aBlockEnd.GetCol(),aBlockEnd.GetRow(),nTab );
+ pViewShell->SetCursor( aCursorPos.GetCol(), aCursorPos.GetRow() );
+
+ pViewShell->RepeatDB( FALSE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoRepeatDB::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ ((ScTabViewTarget&)rTarget).GetViewShell()->RepeatDB( TRUE );
+}
+
+BOOL __EXPORT ScUndoRepeatDB::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+//
+// Pivot-Tabellen
+//
+
+ScUndoPivot::ScUndoPivot( ScDocShell* pNewDocShell,
+ const ScArea& rOld, const ScArea& rNew,
+ ScDocument* pOldDoc, ScDocument* pNewDoc,
+ const ScPivot* pOldPivot, const ScPivot* pNewPivot ) :
+ ScSimpleUndo( pNewDocShell ),
+ aOldArea( rOld ),
+ aNewArea( rNew ),
+ pOldUndoDoc( pOldDoc ),
+ pNewUndoDoc( pNewDoc )
+{
+ if (pNewPivot)
+ {
+ pNewPivot->GetParam( aNewParam, aNewQuery, aNewSrc );
+ aNewName = pNewPivot->GetName();
+ aNewTag = pNewPivot->GetTag();
+ }
+ if (pOldPivot)
+ {
+ pOldPivot->GetParam( aOldParam, aOldQuery, aOldSrc );
+ aOldName = pOldPivot->GetName();
+ aOldTag = pOldPivot->GetTag();
+ }
+}
+
+__EXPORT ScUndoPivot::~ScUndoPivot()
+{
+ delete pOldUndoDoc;
+ delete pNewUndoDoc;
+}
+
+String __EXPORT ScUndoPivot::GetComment() const
+{
+ USHORT nIndex;
+ if ( pOldUndoDoc && pNewUndoDoc )
+ nIndex = STR_UNDO_PIVOT_MODIFY;
+ else if ( pNewUndoDoc )
+ nIndex = STR_UNDO_PIVOT_NEW;
+ else
+ nIndex = STR_UNDO_PIVOT_DELETE;
+
+ return ScGlobal::GetRscString( nIndex );
+}
+
+void __EXPORT ScUndoPivot::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ if (pNewUndoDoc)
+ {
+ pDoc->DeleteAreaTab( aNewArea.nColStart,aNewArea.nRowStart,
+ aNewArea.nColEnd,aNewArea.nRowEnd, aNewArea.nTab, IDF_ALL );
+ pNewUndoDoc->CopyToDocument( aNewArea.nColStart, aNewArea.nRowStart, aNewArea.nTab,
+ aNewArea.nColEnd, aNewArea.nRowEnd, aNewArea.nTab,
+ IDF_ALL, FALSE, pDoc );
+ }
+ if (pOldUndoDoc)
+ {
+ pDoc->DeleteAreaTab( aOldArea.nColStart,aOldArea.nRowStart,
+ aOldArea.nColEnd,aOldArea.nRowEnd, aOldArea.nTab, IDF_ALL );
+ pOldUndoDoc->CopyToDocument( aOldArea.nColStart, aOldArea.nRowStart, aOldArea.nTab,
+ aOldArea.nColEnd, aOldArea.nRowEnd, aOldArea.nTab,
+ IDF_ALL, FALSE, pDoc );
+ }
+
+ ScPivotCollection* pPivotCollection = pDoc->GetPivotCollection();
+ if ( pNewUndoDoc )
+ {
+ ScPivot* pNewPivot = pPivotCollection->GetPivotAtCursor(
+ aNewParam.nCol, aNewParam.nRow, aNewParam.nTab );
+ if (pNewPivot)
+ pPivotCollection->Free( pNewPivot );
+ }
+ if ( pOldUndoDoc )
+ {
+ ScPivot* pOldPivot = new ScPivot( pDoc );
+ pOldPivot->SetParam( aOldParam, aOldQuery, aOldSrc );
+ pOldPivot->SetName( aOldName );
+ pOldPivot->SetTag( aOldTag );
+ if (pOldPivot->CreateData()) // Felder berechnen
+ pOldPivot->ReleaseData();
+ pPivotCollection->Insert( pOldPivot );
+ }
+
+// erack! it's broadcasted
+// pDoc->SetDirty();
+ if (pNewUndoDoc)
+ pDocShell->PostPaint( aNewArea.nColStart, aNewArea.nRowStart, aNewArea.nTab,
+ aNewArea.nColEnd, aNewArea.nRowEnd, aNewArea.nTab,
+ PAINT_GRID, SC_PF_LINES );
+ if (pOldUndoDoc)
+ pDocShell->PostPaint( aOldArea.nColStart, aOldArea.nRowStart, aOldArea.nTab,
+ aOldArea.nColEnd, aOldArea.nRowEnd, aOldArea.nTab,
+ PAINT_GRID, SC_PF_LINES );
+ pDocShell->PostDataChanged();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ USHORT nTab = pViewShell->GetViewData()->GetTabNo();
+ if ( pOldUndoDoc )
+ {
+ if ( nTab != aOldArea.nTab )
+ pViewShell->SetTabNo( aOldArea.nTab );
+ }
+ else if ( pNewUndoDoc )
+ {
+ if ( nTab != aNewArea.nTab )
+ pViewShell->SetTabNo( aNewArea.nTab );
+ }
+ }
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoPivot::Redo()
+{
+ BeginRedo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScPivotCollection* pPivotCollection = pDoc->GetPivotCollection();
+ ScPivot* pOldPivot = pPivotCollection->GetPivotAtCursor(
+ aOldParam.nCol, aOldParam.nRow, aOldParam.nTab );
+
+ ScPivot* pNewPivot = NULL;
+ if (pNewUndoDoc)
+ {
+ pNewPivot = new ScPivot( pDoc );
+ pNewPivot->SetParam( aNewParam, aNewQuery, aNewSrc );
+ pNewPivot->SetName( aNewName );
+ pNewPivot->SetTag( aNewTag );
+ }
+
+ pDocShell->PivotUpdate( pOldPivot, pNewPivot, FALSE );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoPivot::Repeat(SfxRepeatTarget& rTarget)
+{
+ // Wiederholen: nur loeschen
+
+ if ( pOldUndoDoc && !pNewUndoDoc && rTarget.ISA(ScTabViewTarget) )
+ ((ScTabViewTarget&)rTarget).GetViewShell()->DeletePivotTable();
+}
+
+BOOL __EXPORT ScUndoPivot::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ // Wiederholen: nur loeschen
+
+ return ( pOldUndoDoc && !pNewUndoDoc && rTarget.ISA(ScTabViewTarget) );
+}
+
+
+//
+// data pilot
+//
+
+ScUndoDataPilot::ScUndoDataPilot( ScDocShell* pNewDocShell,
+ ScDocument* pOldDoc, ScDocument* pNewDoc,
+ const ScDPObject* pOldObj, const ScDPObject* pNewObj ) :
+ ScSimpleUndo( pNewDocShell ),
+ pOldDPObject( NULL ),
+ pNewDPObject( NULL ),
+ pOldUndoDoc( pOldDoc ),
+ pNewUndoDoc( pNewDoc )
+{
+ if (pOldObj)
+ pOldDPObject = new ScDPObject( *pOldObj );
+ if (pNewObj)
+ pNewDPObject = new ScDPObject( *pNewObj );
+}
+
+__EXPORT ScUndoDataPilot::~ScUndoDataPilot()
+{
+ delete pOldDPObject;
+ delete pNewDPObject;
+ delete pOldUndoDoc;
+ delete pNewUndoDoc;
+}
+
+String __EXPORT ScUndoDataPilot::GetComment() const
+{
+ USHORT nIndex;
+ if ( pOldUndoDoc && pNewUndoDoc )
+ nIndex = STR_UNDO_PIVOT_MODIFY;
+ else if ( pNewUndoDoc )
+ nIndex = STR_UNDO_PIVOT_NEW;
+ else
+ nIndex = STR_UNDO_PIVOT_DELETE;
+
+ return ScGlobal::GetRscString( nIndex );
+}
+
+void __EXPORT ScUndoDataPilot::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScRange aOldRange;
+ ScRange aNewRange;
+
+ if ( pNewDPObject && pNewUndoDoc )
+ {
+ aNewRange = pNewDPObject->GetOutRange();
+ pDoc->DeleteAreaTab( aNewRange, IDF_ALL );
+ pNewUndoDoc->CopyToDocument( aNewRange, IDF_ALL, FALSE, pDoc );
+ }
+ if ( pOldDPObject && pOldUndoDoc )
+ {
+ aOldRange = pOldDPObject->GetOutRange();
+ pDoc->DeleteAreaTab( aOldRange, IDF_ALL );
+ pOldUndoDoc->CopyToDocument( aOldRange, IDF_ALL, FALSE, pDoc );
+ }
+
+ // update objects in collection
+
+ if ( pNewDPObject )
+ {
+ // find updated object
+ //! find by name!
+
+ ScDPObject* pDocObj = pDoc->GetDPAtCursor(
+ aNewRange.aStart.Col(), aNewRange.aStart.Row(), aNewRange.aStart.Tab() );
+ DBG_ASSERT(pDocObj, "DPObject not found");
+ if (pDocObj)
+ {
+ if ( pOldDPObject )
+ {
+ // restore old settings
+ pOldDPObject->WriteSourceDataTo( *pDocObj );
+ ScDPSaveData* pData = pOldDPObject->GetSaveData();
+ if (pData)
+ pDocObj->SetSaveData(*pData);
+ pDocObj->SetOutRange( pOldDPObject->GetOutRange() );
+ }
+ else
+ {
+ // delete inserted object
+ pDoc->GetDPCollection()->Free(pDocObj);
+ }
+ }
+ }
+ else if ( pOldDPObject )
+ {
+ // re-insert deleted object
+
+ ScDPObject* pDestObj = new ScDPObject( *pOldDPObject );
+ pDestObj->SetAlive(TRUE);
+ if ( !pDoc->GetDPCollection()->Insert(pDestObj) )
+ {
+ DBG_ERROR("cannot insert DPObject");
+ DELETEZ( pDestObj );
+ }
+ }
+
+ if (pNewUndoDoc)
+ pDocShell->PostPaint( aNewRange, PAINT_GRID, SC_PF_LINES );
+ if (pOldUndoDoc)
+ pDocShell->PostPaint( aOldRange, PAINT_GRID, SC_PF_LINES );
+ pDocShell->PostDataChanged();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ //! set current sheet
+ }
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoDataPilot::Redo()
+{
+ BeginRedo();
+
+ //! copy output data instead of repeating the change,
+ //! in case external data have changed!
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScDPObject* pSourceObj = NULL;
+ if ( pOldDPObject )
+ {
+ // find object to modify
+ //! find by name!
+
+ ScRange aOldRange = pOldDPObject->GetOutRange();
+ pSourceObj = pDoc->GetDPAtCursor(
+ aOldRange.aStart.Col(), aOldRange.aStart.Row(), aOldRange.aStart.Tab() );
+ DBG_ASSERT(pSourceObj, "DPObject not found");
+ }
+
+ ScDBDocFunc aFunc( *pDocShell );
+ aFunc.DataPilotUpdate( pSourceObj, pNewDPObject, FALSE, FALSE ); // no new undo action
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoDataPilot::Repeat(SfxRepeatTarget& rTarget)
+{
+ //! allow deletion
+}
+
+BOOL __EXPORT ScUndoDataPilot::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ //! allow deletion
+ return FALSE;
+}
+
+
+//
+// Konsolidieren
+//
+
+ScUndoConsolidate::ScUndoConsolidate( ScDocShell* pNewDocShell, const ScArea& rArea,
+ const ScConsolidateParam& rPar, ScDocument* pNewUndoDoc,
+ BOOL bReference, USHORT nInsCount, ScOutlineTable* pTab,
+ ScDBData* pData ) :
+ ScSimpleUndo( pNewDocShell ),
+ aDestArea( rArea ),
+ aParam( rPar ),
+ pUndoDoc( pNewUndoDoc ),
+ bInsRef( bReference ),
+ nInsertCount( nInsCount ),
+ pUndoTab( pTab ),
+ pUndoData( pData )
+{
+}
+
+__EXPORT ScUndoConsolidate::~ScUndoConsolidate()
+{
+ delete pUndoDoc;
+ delete pUndoTab;
+ delete pUndoData;
+}
+
+String __EXPORT ScUndoConsolidate::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_CONSOLIDATE );
+}
+
+void __EXPORT ScUndoConsolidate::Undo()
+{
+ BeginUndo();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTab = aDestArea.nTab;
+
+ ScRange aOldRange;
+ if (pUndoData)
+ pUndoData->GetArea(aOldRange);
+
+ if (bInsRef)
+ {
+ // Zeilen loeschen
+ pDoc->DeleteRow( 0,nTab, MAXCOL,nTab, aDestArea.nRowStart, nInsertCount );
+
+ // Outlines
+ pDoc->SetOutlineTable( nTab, pUndoTab );
+
+ // Zeilenstatus
+ pUndoDoc->CopyToDocument( 0,0,nTab, MAXCOL,MAXROW,nTab, IDF_NONE, FALSE, pDoc );
+
+ // Daten & Referenzen
+ pDoc->DeleteAreaTab( 0,aDestArea.nRowStart, MAXCOL,aDestArea.nRowEnd, nTab, IDF_ALL );
+ pUndoDoc->UndoToDocument( 0, aDestArea.nRowStart, nTab,
+ MAXCOL, aDestArea.nRowEnd, nTab,
+ IDF_ALL, FALSE, pDoc );
+
+ // Original-Bereich
+ if (pUndoData)
+ {
+ pDoc->DeleteAreaTab(aOldRange, IDF_ALL);
+ pUndoDoc->CopyToDocument(aOldRange, IDF_ALL, FALSE, pDoc);
+ }
+
+ pDocShell->PostPaint( 0,aDestArea.nRowStart,nTab, MAXCOL,MAXROW,nTab,
+ PAINT_GRID | PAINT_LEFT | PAINT_SIZE );
+ }
+ else
+ {
+ pDoc->DeleteAreaTab( aDestArea.nColStart,aDestArea.nRowStart,
+ aDestArea.nColEnd,aDestArea.nRowEnd, nTab, IDF_ALL );
+ pUndoDoc->CopyToDocument( aDestArea.nColStart, aDestArea.nRowStart, nTab,
+ aDestArea.nColEnd, aDestArea.nRowEnd, nTab,
+ IDF_ALL, FALSE, pDoc );
+
+ // Original-Bereich
+ if (pUndoData)
+ {
+ pDoc->DeleteAreaTab(aOldRange, IDF_ALL);
+ pUndoDoc->CopyToDocument(aOldRange, IDF_ALL, FALSE, pDoc);
+ }
+
+ USHORT nEndX = aDestArea.nColEnd;
+ USHORT nEndY = aDestArea.nRowEnd;
+ if ( pUndoData )
+ {
+ if ( aOldRange.aEnd.Col() > nEndX )
+ nEndX = aOldRange.aEnd.Col();
+ if ( aOldRange.aEnd.Row() > nEndY )
+ nEndY = aOldRange.aEnd.Row();
+ }
+ pDocShell->PostPaint( aDestArea.nColStart, aDestArea.nRowStart, nTab,
+ nEndX, nEndY, nTab, PAINT_GRID );
+ }
+
+ // DB-Bereich wieder anpassen
+ if (pUndoData)
+ {
+ ScDBCollection* pColl = pDoc->GetDBCollection();
+ if (pColl)
+ {
+ USHORT nIndex;
+ if (pColl->SearchName( pUndoData->GetName(), nIndex ))
+ {
+ ScDBData* pDocData = (*pColl)[nIndex];
+ if (pDocData)
+ *pDocData = *pUndoData;
+ }
+ else
+ DBG_ERROR("alte DB-Daten nicht gefunden");
+ }
+ }
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ USHORT nViewTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nViewTab != nTab )
+ pViewShell->SetTabNo( nTab );
+ }
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoConsolidate::Redo()
+{
+ BeginRedo();
+
+ pDocShell->DoConsolidate( aParam, FALSE );
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ USHORT nViewTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nViewTab != aParam.nTab )
+ pViewShell->SetTabNo( aParam.nTab );
+ }
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoConsolidate::Repeat(SfxRepeatTarget& rTarget)
+{
+}
+
+BOOL __EXPORT ScUndoConsolidate::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+//
+// Quell-Daten von Chart aendern
+//
+
+void ScUndoChartData::Init()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ BOOL bFound = FALSE;;
+
+ SchMemChart* pOld = pDoc->FindChartData(aChartName);
+ if (pOld)
+ {
+ ScChartArray aData(pDoc,*pOld);
+ aOldRangeListRef = aData.GetRangeList();
+ bOldColHeaders = aData.HasColHeaders();
+ bOldRowHeaders = aData.HasRowHeaders();
+ }
+ else // war vorher nicht initialisiert
+ { //! bei Undo zuruecksetzen ?
+ aOldRangeListRef = aNewRangeListRef;
+ bOldColHeaders = bNewColHeaders;
+ bOldRowHeaders = bNewRowHeaders;
+ }
+}
+
+ScUndoChartData::ScUndoChartData( ScDocShell* pNewDocShell, const String& rName,
+ const ScRange& rNew, BOOL bColHdr, BOOL bRowHdr,
+ BOOL bAdd ) :
+ ScSimpleUndo( pNewDocShell ),
+ aChartName( rName ),
+ bNewColHeaders( bColHdr ),
+ bNewRowHeaders( bRowHdr ),
+ bAddRange( bAdd )
+{
+ aNewRangeListRef = new ScRangeList;
+ aNewRangeListRef->Append( rNew );
+
+ Init();
+}
+
+ScUndoChartData::ScUndoChartData( ScDocShell* pNewDocShell, const String& rName,
+ const ScRangeListRef& rNew, BOOL bColHdr, BOOL bRowHdr,
+ BOOL bAdd ) :
+ ScSimpleUndo( pNewDocShell ),
+ aChartName( rName ),
+ aNewRangeListRef( rNew ),
+ bNewColHeaders( bColHdr ),
+ bNewRowHeaders( bRowHdr ),
+ bAddRange( bAdd )
+{
+ Init();
+}
+
+__EXPORT ScUndoChartData::~ScUndoChartData()
+{
+}
+
+String __EXPORT ScUndoChartData::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_CHARTDATA );
+}
+
+void __EXPORT ScUndoChartData::Undo()
+{
+ BeginUndo();
+
+ Window* pDataWin = NULL;
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if (pViewSh)
+ pDataWin = pViewSh->GetActiveWin();
+
+ pDocShell->GetDocument()->UpdateChartArea( aChartName, aOldRangeListRef,
+ bOldColHeaders, bOldRowHeaders, FALSE, pDataWin );
+
+ EndUndo();
+}
+
+void __EXPORT ScUndoChartData::Redo()
+{
+ BeginRedo();
+
+ Window* pDataWin = NULL;
+ ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+ if (pViewSh)
+ pDataWin = pViewSh->GetActiveWin();
+
+ pDocShell->GetDocument()->UpdateChartArea( aChartName, aNewRangeListRef,
+ bNewColHeaders, bNewRowHeaders, bAddRange, pDataWin );
+
+ EndRedo();
+}
+
+void __EXPORT ScUndoChartData::Repeat(SfxRepeatTarget& rTarget)
+{
+}
+
+BOOL __EXPORT ScUndoChartData::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+
+
+
+
diff --git a/sc/source/ui/undo/undodraw.cxx b/sc/source/ui/undo/undodraw.cxx
new file mode 100644
index 000000000000..712d413fcda6
--- /dev/null
+++ b/sc/source/ui/undo/undodraw.cxx
@@ -0,0 +1,304 @@
+/*************************************************************************
+ *
+ * $RCSfile: undodraw.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+
+#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+#define _SI_NOOTHERFORMS
+#define _SI_NOCONTROL
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdundo.hxx>
+
+#include "undodraw.hxx"
+#include "docsh.hxx"
+
+
+// -----------------------------------------------------------------------
+
+TYPEINIT1(ScUndoDraw, SfxUndoAction);
+
+// -----------------------------------------------------------------------
+
+ScUndoDraw::ScUndoDraw( SfxUndoAction* pUndo, ScDocShell* pDocSh ) :
+ pDrawUndo( pUndo ),
+ pDocShell( pDocSh )
+{
+}
+
+__EXPORT ScUndoDraw::~ScUndoDraw()
+{
+ delete pDrawUndo;
+}
+
+void ScUndoDraw::ForgetDrawUndo()
+{
+ pDrawUndo = NULL; // nicht loeschen (Draw-Undo muss dann von aussen gemerkt werden)
+}
+
+String __EXPORT ScUndoDraw::GetComment() const
+{
+ if (pDrawUndo)
+ return pDrawUndo->GetComment();
+ else
+ return String();
+}
+
+String __EXPORT ScUndoDraw::GetRepeatComment(SfxRepeatTarget& rTarget) const
+{
+ if (pDrawUndo)
+ return pDrawUndo->GetRepeatComment(rTarget);
+ else
+ return String();
+}
+
+USHORT __EXPORT ScUndoDraw::GetId() const
+{
+ if (pDrawUndo)
+ return pDrawUndo->GetId();
+ else
+ return 0;
+}
+
+BOOL __EXPORT ScUndoDraw::IsLinked()
+{
+ if (pDrawUndo)
+ return pDrawUndo->IsLinked();
+ else
+ return FALSE;
+}
+
+void __EXPORT ScUndoDraw::SetLinked( BOOL bIsLinked )
+{
+ if (pDrawUndo)
+ pDrawUndo->SetLinked(bIsLinked);
+}
+
+BOOL __EXPORT ScUndoDraw::Merge( SfxUndoAction* pNextAction )
+{
+ if (pDrawUndo)
+ return pDrawUndo->Merge(pNextAction);
+ else
+ return FALSE;
+}
+
+void __EXPORT ScUndoDraw::Undo()
+{
+ if (pDrawUndo)
+ {
+ pDrawUndo->Undo();
+ pDocShell->SetDrawModified();
+ }
+}
+
+void __EXPORT ScUndoDraw::Redo()
+{
+ if (pDrawUndo)
+ {
+ pDrawUndo->Redo();
+ pDocShell->SetDrawModified();
+ }
+}
+
+void __EXPORT ScUndoDraw::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (pDrawUndo)
+ pDrawUndo->Repeat(rTarget);
+}
+
+BOOL __EXPORT ScUndoDraw::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ if (pDrawUndo)
+ return pDrawUndo->CanRepeat(rTarget);
+ else
+ return FALSE;
+}
+
+
+
diff --git a/sc/source/ui/undo/undoolk.cxx b/sc/source/ui/undo/undoolk.cxx
new file mode 100644
index 000000000000..386afa0a74a0
--- /dev/null
+++ b/sc/source/ui/undo/undoolk.cxx
@@ -0,0 +1,138 @@
+/*************************************************************************
+ *
+ * $RCSfile: undoolk.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+//sfx
+//#define _BASEDLGS_HXX //*
+#define _DLGCFG_HXX
+#define _SFXBASIC_HXX
+#define _MODALDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXTBXCTRL_HXX
+#define _PASSWD_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXREQUEST_HXX
+#define _SFXOBJFACE_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSG_HXX
+#define _INTRO_HXX
+#define _SFX_PRNMON_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdundo.hxx>
+
+#include "document.hxx"
+#include "drwlayer.hxx"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+// -----------------------------------------------------------------------
+
+SdrUndoAction* GetSdrUndoAction( ScDocument* pDoc )
+{
+ ScDrawLayer* pLayer = pDoc->GetDrawLayer();
+ if (pLayer)
+ return pLayer->GetCalcUndo(); // muss vorhanden sein
+ else
+ return NULL;
+}
+
+void DoSdrUndoAction( SdrUndoAction* pUndoAction )
+{
+ pUndoAction->Undo();
+}
+
+
+void RedoSdrUndoAction( SdrUndoAction* pUndoAction )
+{
+ pUndoAction->Redo();
+}
+
+void DeleteSdrUndoAction( SdrUndoAction* pUndoAction )
+{
+ delete pUndoAction;
+}
+
+void EnableDrawAdjust( ScDocument* pDoc, BOOL bEnable )
+{
+ ScDrawLayer* pLayer = pDoc->GetDrawLayer();
+ if (pLayer)
+ pLayer->EnableAdjust(bEnable);
+}
+
+
+
diff --git a/sc/source/ui/undo/undostyl.cxx b/sc/source/ui/undo/undostyl.cxx
new file mode 100644
index 000000000000..6d10173438ac
--- /dev/null
+++ b/sc/source/ui/undo/undostyl.cxx
@@ -0,0 +1,327 @@
+/*************************************************************************
+ *
+ * $RCSfile: undostyl.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svtools/itemset.hxx>
+#include <vcl/virdev.hxx>
+
+#include "undostyl.hxx"
+#include "docsh.hxx"
+#include "stlpool.hxx"
+#include "printfun.hxx"
+#include "globstr.hrc"
+
+// -----------------------------------------------------------------------
+
+TYPEINIT1(ScUndoModifyStyle, ScSimpleUndo);
+TYPEINIT1(ScUndoApplyPageStyle, ScSimpleUndo);
+
+// -----------------------------------------------------------------------
+//
+// modify style (cell or page style)
+//
+
+ScStyleSaveData::ScStyleSaveData() :
+ pItems( NULL )
+{
+}
+
+ScStyleSaveData::ScStyleSaveData( const ScStyleSaveData& rOther ) :
+ aName( rOther.aName ),
+ aParent( rOther.aParent )
+{
+ if (rOther.pItems)
+ pItems = new SfxItemSet( *rOther.pItems );
+ else
+ pItems = NULL;
+}
+
+ScStyleSaveData::~ScStyleSaveData()
+{
+ delete pItems;
+}
+
+ScStyleSaveData& ScStyleSaveData::operator=( const ScStyleSaveData& rOther )
+{
+ aName = rOther.aName;
+ aParent = rOther.aParent;
+
+ delete pItems;
+ if (rOther.pItems)
+ pItems = new SfxItemSet( *rOther.pItems );
+ else
+ pItems = NULL;
+
+ return *this;
+}
+
+void ScStyleSaveData::InitFromStyle( const SfxStyleSheetBase* pSource )
+{
+ if ( pSource )
+ {
+ aName = pSource->GetName();
+ aParent = pSource->GetParent();
+ delete pItems;
+ pItems = new SfxItemSet( ((SfxStyleSheetBase*)pSource)->GetItemSet() );
+ }
+ else
+ *this = ScStyleSaveData(); // empty
+}
+
+// -----------------------------------------------------------------------
+
+ScUndoModifyStyle::ScUndoModifyStyle( ScDocShell* pDocSh, SfxStyleFamily eFam,
+ const ScStyleSaveData& rOld, const ScStyleSaveData& rNew ) :
+ ScSimpleUndo( pDocSh ),
+ eFamily( eFam ),
+ aOldData( rOld ),
+ aNewData( rNew )
+{
+}
+
+ScUndoModifyStyle::~ScUndoModifyStyle()
+{
+}
+
+String ScUndoModifyStyle::GetComment() const
+{
+ USHORT nId = (eFamily == SFX_STYLE_FAMILY_PARA) ?
+ STR_UNDO_EDITCELLSTYLE :
+ STR_UNDO_EDITPAGESTYLE;
+ return ScGlobal::GetRscString( nId );
+}
+
+void lcl_DocStyleChanged( ScDocument* pDoc, SfxStyleSheetBase* pStyle, BOOL bRemoved )
+{
+ //! move to document or docshell
+
+ VirtualDevice aVDev;
+ Point aLogic = aVDev.LogicToPixel( Point(1000,1000), MAP_TWIP );
+ double nPPTX = aLogic.X() / 1000.0;
+ double nPPTY = aLogic.Y() / 1000.0;
+ Fraction aZoom(1,1);
+ pDoc->StyleSheetChanged( pStyle, bRemoved, &aVDev, nPPTX, nPPTY, aZoom, aZoom );
+}
+
+// static
+void ScUndoModifyStyle::DoChange( ScDocShell* pDocSh, const String& rName,
+ SfxStyleFamily eStyleFamily, const ScStyleSaveData& rData )
+{
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScStyleSheetPool* pStlPool = pDoc->GetStyleSheetPool();
+ String aNewName = rData.GetName();
+ BOOL bDelete = ( aNewName.Len() == 0 ); // no new name -> delete style
+ BOOL bNew = ( rName.Len() == 0 && !bDelete ); // creating new style
+
+ SfxStyleSheetBase* pStyle = NULL;
+ if ( rName.Len() )
+ {
+ // find old style to modify
+ pStyle = pStlPool->Find( rName, eStyleFamily );
+ DBG_ASSERT( pStyle, "style not found" );
+
+ if ( pStyle && !bDelete )
+ {
+ // set new name
+ pStyle->SetName( aNewName );
+ }
+ }
+ else if ( !bDelete )
+ {
+ // create style (with new name)
+ pStyle = &pStlPool->Make( aNewName, eStyleFamily, SFXSTYLEBIT_USERDEF );
+ }
+
+ if ( pStyle )
+ {
+ if ( bDelete )
+ {
+ if ( eStyleFamily == SFX_STYLE_FAMILY_PARA )
+ lcl_DocStyleChanged( pDoc, pStyle, TRUE ); // TRUE: remove usage of style
+ else
+ pDoc->RemovePageStyleInUse( rName );
+
+ // delete style
+ pStlPool->Erase( pStyle );
+ }
+ else
+ {
+ // modify style
+
+ String aNewParent = rData.GetParent();
+ if ( aNewParent != pStyle->GetParent() )
+ pStyle->SetParent( aNewParent );
+
+ SfxItemSet& rStyleSet = pStyle->GetItemSet();
+ const SfxItemSet* pNewSet = rData.GetItems();
+ DBG_ASSERT( pNewSet, "no ItemSet for style" );
+ if (pNewSet)
+ rStyleSet.Set( *pNewSet, FALSE );
+
+ if ( eStyleFamily == SFX_STYLE_FAMILY_PARA )
+ {
+ lcl_DocStyleChanged( pDoc, pStyle, FALSE ); // cell styles: row heights
+ }
+ else
+ {
+ // page styles
+
+ if ( bNew && aNewName != rName )
+ pDoc->RenamePageStyleInUse( rName, aNewName );
+
+ if (pNewSet)
+ pDoc->ModifyStyleSheet( *pStyle, *pNewSet );
+
+ pDocSh->PageStyleModified( aNewName, TRUE );
+ }
+ }
+ }
+
+ pDocSh->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_LEFT );
+
+ //! undo/redo document modifications for deleted styles
+ //! undo/redo modifications of number formatter
+}
+
+void ScUndoModifyStyle::Undo()
+{
+ BeginUndo();
+ DoChange( pDocShell, aNewData.GetName(), eFamily, aOldData );
+ EndUndo();
+}
+
+void ScUndoModifyStyle::Redo()
+{
+ BeginRedo();
+ DoChange( pDocShell, aOldData.GetName(), eFamily, aNewData );
+ EndRedo();
+}
+
+void ScUndoModifyStyle::Repeat(SfxRepeatTarget& rTarget)
+{
+}
+
+BOOL ScUndoModifyStyle::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE; // no repeat possible
+}
+
+// -----------------------------------------------------------------------
+//
+// apply page style
+//
+
+ScUndoApplyPageStyle::ScUndoApplyPageStyle( ScDocShell* pDocSh, USHORT nT,
+ const String& rOld, const String& rNew ) :
+ ScSimpleUndo( pDocSh ),
+ nTab( nT ),
+ aOldStyle( rOld ),
+ aNewStyle( rNew )
+{
+}
+
+ScUndoApplyPageStyle::~ScUndoApplyPageStyle()
+{
+}
+
+String ScUndoApplyPageStyle::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_APPLYPAGESTYLE );
+}
+
+void ScUndoApplyPageStyle::Undo()
+{
+ BeginUndo();
+
+ pDocShell->GetDocument()->SetPageStyle( nTab, aOldStyle );
+
+ ScPrintFunc( pDocShell, pDocShell->GetPrinter(), nTab ).UpdatePages();
+ EndUndo();
+}
+
+void ScUndoApplyPageStyle::Redo()
+{
+ BeginRedo();
+
+ pDocShell->GetDocument()->SetPageStyle( nTab, aNewStyle );
+
+ ScPrintFunc( pDocShell, pDocShell->GetPrinter(), nTab ).UpdatePages();
+ EndRedo();
+}
+
+void ScUndoApplyPageStyle::Repeat(SfxRepeatTarget& rTarget)
+{
+ //! set same page style to current tab
+}
+
+BOOL ScUndoApplyPageStyle::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
diff --git a/sc/source/ui/undo/undotab.cxx b/sc/source/ui/undo/undotab.cxx
new file mode 100644
index 000000000000..c8a7fd10cdbb
--- /dev/null
+++ b/sc/source/ui/undo/undotab.cxx
@@ -0,0 +1,1383 @@
+/*************************************************************************
+ *
+ * $RCSfile: undotab.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// ?#define _MACRODLG_HXX
+// ? #define _BIGINT_HXX
+// ? #define _SVDXOUT_HXX
+// ? #define _SVDATTR_HXX
+// ? #define _SVDSURO_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sfx2/app.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <svtools/smplhint.hxx>
+
+#include "undotab.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "sc.hrc"
+#include "undoolk.hxx"
+#include "target.hxx"
+#include "uiitems.hxx"
+#include "prnsave.hxx"
+#include "printfun.hxx"
+#include "chgtrack.hxx"
+
+extern BOOL bDrawIsInUndo; //! irgendwo als Member !!!
+
+// STATIC DATA -----------------------------------------------------------
+
+TYPEINIT1(ScUndoInsertTab, SfxUndoAction);
+TYPEINIT1(ScUndoInsertTables, SfxUndoAction);
+TYPEINIT1(ScUndoDeleteTab, SfxUndoAction);
+TYPEINIT1(ScUndoRenameTab, SfxUndoAction);
+TYPEINIT1(ScUndoMoveTab, SfxUndoAction);
+TYPEINIT1(ScUndoCopyTab, SfxUndoAction);
+TYPEINIT1(ScUndoMakeScenario, SfxUndoAction);
+TYPEINIT1(ScUndoImportTab, SfxUndoAction);
+TYPEINIT1(ScUndoRemoveLink, SfxUndoAction);
+TYPEINIT1(ScUndoShowHideTab, SfxUndoAction);
+TYPEINIT1(ScUndoProtect, SfxUndoAction);
+TYPEINIT1(ScUndoPrintRange, SfxUndoAction);
+TYPEINIT1(ScUndoScenarioFlags, SfxUndoAction);
+
+
+// -----------------------------------------------------------------------
+//
+// Tabelle einfuegen
+//
+
+ScUndoInsertTab::ScUndoInsertTab( ScDocShell* pNewDocShell,
+ USHORT nTabNum,
+ BOOL bApp,
+ const String& rNewName) :
+ ScSimpleUndo( pNewDocShell ),
+ nTab( nTabNum ),
+ bAppend( bApp ),
+ sNewName( rNewName ),
+ pDrawUndo( NULL )
+{
+ pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() );
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoInsertTab::~ScUndoInsertTab()
+{
+ DeleteSdrUndoAction( pDrawUndo );
+}
+
+String __EXPORT ScUndoInsertTab::GetComment() const
+{
+ if (bAppend)
+ return ScGlobal::GetRscString( STR_UNDO_APPEND_TAB );
+ else
+ return ScGlobal::GetRscString( STR_UNDO_INSERT_TAB );
+}
+
+void ScUndoInsertTab::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ ScRange aRange( 0, 0, nTab, MAXCOL, MAXROW, nTab );
+ pChangeTrack->AppendInsert( aRange );
+ nEndChangeAction = pChangeTrack->GetActionMax();
+ }
+ else
+ nEndChangeAction = 0;
+}
+
+void __EXPORT ScUndoInsertTab::Undo()
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ pViewShell->SetTabNo(nTab);
+
+ pDocShell->SetInUndo( TRUE ); //! BeginUndo
+ bDrawIsInUndo = TRUE;
+ pViewShell->DeleteTable( nTab, FALSE );
+ bDrawIsInUndo = FALSE;
+ pDocShell->SetInUndo( FALSE ); //! EndUndo
+
+ if (pDrawUndo)
+ DoSdrUndoAction( pDrawUndo );
+
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nEndChangeAction, nEndChangeAction );
+
+ // SetTabNo(...,TRUE) for all views to sync with drawing layer pages
+ pDocShell->Broadcast( SfxSimpleHint( SC_HINT_FORCESETTAB ) );
+}
+
+void __EXPORT ScUndoInsertTab::Redo()
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (pDrawUndo)
+ RedoSdrUndoAction( pDrawUndo ); // Draw Redo vorneweg
+
+ pDocShell->SetInUndo( TRUE ); //! BeginRedo
+ bDrawIsInUndo = TRUE;
+ if (bAppend)
+ pViewShell->AppendTable( sNewName, FALSE );
+ else
+ {
+ pViewShell->SetTabNo(nTab);
+ pViewShell->InsertTable( sNewName, nTab, FALSE );
+ }
+ bDrawIsInUndo = FALSE;
+ pDocShell->SetInUndo( FALSE ); //! EndRedo
+
+ SetChangeTrack();
+}
+
+void __EXPORT ScUndoInsertTab::Repeat(SfxRepeatTarget& rTarget)
+{
+ SFX_DISPATCHER().Execute(FID_INS_TABLE, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+}
+
+BOOL __EXPORT ScUndoInsertTab::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+// -----------------------------------------------------------------------
+//
+// Tabellen einfuegen
+//
+
+ScUndoInsertTables::ScUndoInsertTables( ScDocShell* pNewDocShell,
+ USHORT nTabNum,
+ BOOL bApp,SvStrings *pNewNameList) :
+ ScSimpleUndo( pNewDocShell ),
+ nTab( nTabNum ),
+ bAppend( bApp ),
+ pDrawUndo( NULL )
+{
+ pNameList = pNewNameList;
+ pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() );
+
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoInsertTables::~ScUndoInsertTables()
+{
+ String *pStr=NULL;
+ if(pNameList!=NULL)
+ {
+ for(int i=0;i<pNameList->Count();i++)
+ {
+ pStr=pNameList->GetObject(i);
+ delete pStr;
+ }
+ pNameList->Remove(0,pNameList->Count());
+ delete pNameList;
+ }
+ DeleteSdrUndoAction( pDrawUndo );
+}
+
+String __EXPORT ScUndoInsertTables::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_INSERT_TAB );
+}
+
+void ScUndoInsertTables::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ nStartChangeAction = pChangeTrack->GetActionMax() + 1;
+ nEndChangeAction = 0;
+ ScRange aRange( 0, 0, nTab, MAXCOL, MAXROW, nTab );
+ for( int i = 0; i < pNameList->Count(); i++ )
+ {
+ aRange.aStart.SetTab( nTab + i );
+ aRange.aEnd.SetTab( nTab + i );
+ pChangeTrack->AppendInsert( aRange );
+ nEndChangeAction = pChangeTrack->GetActionMax();
+ }
+ }
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+void __EXPORT ScUndoInsertTables::Undo()
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ pViewShell->SetTabNo(nTab);
+
+ pDocShell->SetInUndo( TRUE ); //! BeginUndo
+ bDrawIsInUndo = TRUE;
+
+ SvUShorts TheTabs;
+ for(int i=0;i<pNameList->Count();i++)
+ {
+ TheTabs.Insert(nTab+i,TheTabs.Count());
+ }
+
+ pViewShell->DeleteTables( TheTabs, FALSE );
+ TheTabs.Remove(0,TheTabs.Count());
+
+ bDrawIsInUndo = FALSE;
+ pDocShell->SetInUndo( FALSE ); //! EndUndo
+
+ if (pDrawUndo)
+ DoSdrUndoAction( pDrawUndo );
+
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+
+ // SetTabNo(...,TRUE) for all views to sync with drawing layer pages
+ pDocShell->Broadcast( SfxSimpleHint( SC_HINT_FORCESETTAB ) );
+}
+
+void __EXPORT ScUndoInsertTables::Redo()
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (pDrawUndo)
+ RedoSdrUndoAction( pDrawUndo ); // Draw Redo vorneweg
+
+ pDocShell->SetInUndo( TRUE ); //! BeginRedo
+ bDrawIsInUndo = TRUE;
+ pViewShell->SetTabNo(nTab);
+ pViewShell->InsertTables( pNameList, nTab,pNameList->Count(),FALSE );
+
+ bDrawIsInUndo = FALSE;
+ pDocShell->SetInUndo( FALSE ); //! EndRedo
+
+ SetChangeTrack();
+}
+
+void __EXPORT ScUndoInsertTables::Repeat(SfxRepeatTarget& rTarget)
+{
+ SFX_DISPATCHER().Execute(FID_INS_TABLE, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+}
+
+BOOL __EXPORT ScUndoInsertTables::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+//----------------------------------------------------------------------------------
+//
+// Tabelle loeschen
+//
+
+ScUndoDeleteTab::ScUndoDeleteTab( ScDocShell* pNewDocShell,const SvUShorts &aTab, //USHORT nNewTab,
+ ScDocument* pUndoDocument, ScRefUndoData* pRefData ) :
+ ScMoveUndo( pNewDocShell, pUndoDocument, pRefData, SC_UNDO_REFLAST )
+{
+ for(int i=0;i<aTab.Count();i++)
+ theTabs.Insert(aTab[i],theTabs.Count());
+
+ SetChangeTrack();
+}
+
+__EXPORT ScUndoDeleteTab::~ScUndoDeleteTab()
+{
+ theTabs.Remove(0,theTabs.Count());
+}
+
+String __EXPORT ScUndoDeleteTab::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_DELETE_TAB );
+}
+
+void ScUndoDeleteTab::SetChangeTrack()
+{
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ {
+ ULONG nTmpChangeAction;
+ nStartChangeAction = pChangeTrack->GetActionMax() + 1;
+ nEndChangeAction = 0;
+ ScRange aRange( 0, 0, 0, MAXCOL, MAXROW, 0 );
+ for ( int i = 0; i < theTabs.Count(); i++ )
+ {
+ aRange.aStart.SetTab( theTabs[i] );
+ aRange.aEnd.SetTab( theTabs[i] );
+ pChangeTrack->AppendDeleteRange( aRange, pRefUndoDoc,
+ nTmpChangeAction, nEndChangeAction, (short) i );
+ }
+ }
+ else
+ nStartChangeAction = nEndChangeAction = 0;
+}
+
+void __EXPORT ScUndoDeleteTab::Undo()
+{
+ BeginUndo();
+ int i=0;
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ BOOL bLink = FALSE;
+ String aName;
+
+ for(i=0;i<theTabs.Count();i++)
+ {
+ pRefUndoDoc->GetName( theTabs[i], aName );
+
+ bDrawIsInUndo = TRUE;
+ BOOL bOk = pDoc->InsertTab( theTabs[i], aName );
+ bDrawIsInUndo = FALSE;
+ if (bOk)
+ {
+ // Ref-Undo passiert in EndUndo
+ // pUndoDoc->UndoToDocument(0,0,nTab, MAXCOL,MAXROW,nTab, IDF_ALL,FALSE, pDoc );
+ pRefUndoDoc->CopyToDocument(0,0,theTabs[i], MAXCOL,MAXROW,theTabs[i], IDF_ALL,FALSE, pDoc );
+
+ String aOldName;
+ pRefUndoDoc->GetName( theTabs[i], aOldName );
+ pDoc->RenameTab( theTabs[i], aOldName, FALSE );
+ if (pRefUndoDoc->IsLinked(theTabs[i]))
+ {
+ pDoc->SetLink( theTabs[i], pRefUndoDoc->GetLinkMode(theTabs[i]), pRefUndoDoc->GetLinkDoc(theTabs[i]),
+ pRefUndoDoc->GetLinkFlt(theTabs[i]), pRefUndoDoc->GetLinkOpt(theTabs[i]),
+ pRefUndoDoc->GetLinkTab(theTabs[i]) );
+ bLink = TRUE;
+ }
+
+ if ( pRefUndoDoc->IsScenario(theTabs[i]) )
+ {
+ pDoc->SetScenario( theTabs[i], TRUE );
+ String aComment;
+ Color aColor;
+ USHORT nScenFlags;
+ pRefUndoDoc->GetScenarioData( theTabs[i], aComment, aColor, nScenFlags );
+ pDoc->SetScenarioData( theTabs[i], aComment, aColor, nScenFlags );
+ BOOL bActive = pRefUndoDoc->IsActiveScenario( theTabs[i] );
+ pDoc->SetActiveScenario( theTabs[i], bActive );
+ }
+
+ // Drawing-Layer passiert beim MoveUndo::EndUndo
+ // pDoc->TransferDrawPage(pRefUndoDoc, nTab,nTab);
+ }
+ }
+ if (bLink)
+ {
+ pDocShell->UpdateLinks(); // Link-Manager updaten
+ SFX_BINDINGS().Invalidate(SID_LINKS);
+ }
+
+ EndUndo(); // Draw-Undo muss vor dem Broadcast kommen!
+
+ ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
+
+ for(i=0;i<theTabs.Count();i++)
+ {
+ pDocShell->Broadcast( ScTablesHint( SC_TAB_INSERTED, theTabs[i]) );
+ }
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) ); // Navigator
+
+ pDocShell->PostPaint(0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_ALL ); // incl. Extras
+
+ // nicht ShowTable wegen SetTabNo(..., TRUE):
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->SetTabNo( theTabs[0], TRUE );
+
+// EndUndo();
+}
+
+void __EXPORT ScUndoDeleteTab::Redo()
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ pViewShell->SetTabNo( theTabs[0] );
+
+ if (pDrawUndo)
+ RedoSdrUndoAction( pDrawUndo ); // Draw Redo vorneweg
+
+ pDocShell->SetInUndo( TRUE ); //! BeginRedo
+ bDrawIsInUndo = TRUE;
+ pViewShell->DeleteTables( theTabs, FALSE );
+ bDrawIsInUndo = FALSE;
+ pDocShell->SetInUndo( TRUE ); //! EndRedo
+
+ SetChangeTrack();
+
+ // SetTabNo(...,TRUE) for all views to sync with drawing layer pages
+ pDocShell->Broadcast( SfxSimpleHint( SC_HINT_FORCESETTAB ) );
+}
+
+void __EXPORT ScUndoDeleteTab::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ScTabViewShell* pViewShell = ((ScTabViewTarget&)rTarget).GetViewShell();
+ pViewShell->DeleteTable( pViewShell->GetViewData()->GetTabNo(), TRUE );
+ }
+}
+
+BOOL __EXPORT ScUndoDeleteTab::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+//---------------------------------------------------------------------------------
+//
+// Tabelle umbenennen
+//
+
+ScUndoRenameTab::ScUndoRenameTab( ScDocShell* pNewDocShell,
+ USHORT nT,
+ const String& rOldName,
+ const String& rNewName) :
+ ScSimpleUndo( pNewDocShell ),
+ nTab ( nT )
+{
+ sOldName = rOldName;
+ sNewName = rNewName;
+}
+
+__EXPORT ScUndoRenameTab::~ScUndoRenameTab()
+{
+}
+
+String __EXPORT ScUndoRenameTab::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_RENAME_TAB );
+}
+
+void ScUndoRenameTab::DoChange( USHORT nTab, const String& rName ) const
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->RenameTab( nTab, rName );
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) ); // Navigator
+
+ pDocShell->PostPaintGridAll();
+ pDocShell->PostPaintExtras();
+ pDocShell->PostDataChanged();
+
+ // Der Tabellenname koennte in einer Formel vorkommen...
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->UpdateInputHandler();
+}
+
+void __EXPORT ScUndoRenameTab::Undo()
+{
+ DoChange(nTab, sOldName);
+}
+
+void __EXPORT ScUndoRenameTab::Redo()
+{
+ DoChange(nTab, sNewName);
+}
+
+void __EXPORT ScUndoRenameTab::Repeat(SfxRepeatTarget& rTarget)
+{
+ // Repeat macht keinen Sinn
+}
+
+BOOL __EXPORT ScUndoRenameTab::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+//----------------------------------------------------------------------------------
+//
+// Tabelle verschieben
+//
+
+ScUndoMoveTab::ScUndoMoveTab( ScDocShell* pNewDocShell,
+ const SvUShorts &aOldTab,
+ const SvUShorts &aNewTab) :
+ ScSimpleUndo( pNewDocShell )
+{
+ int i;
+ for(i=0;i<aOldTab.Count();i++)
+ theOldTabs.Insert(aOldTab[i],theOldTabs.Count());
+
+ for(i=0;i<aNewTab.Count();i++)
+ theNewTabs.Insert(aNewTab[i],theNewTabs.Count());
+}
+
+__EXPORT ScUndoMoveTab::~ScUndoMoveTab()
+{
+ theNewTabs.Remove(0,theNewTabs.Count());
+ theOldTabs.Remove(0,theOldTabs.Count());
+}
+
+String __EXPORT ScUndoMoveTab::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_MOVE_TAB );
+}
+
+void ScUndoMoveTab::DoChange( BOOL bUndo ) const
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (bUndo) // UnDo
+ {
+ for(int i=theNewTabs.Count()-1;i>=0;i--)
+ {
+ USHORT nDestTab = theNewTabs[i];
+ USHORT nNewTab = theNewTabs[i];
+ USHORT nOldTab = theOldTabs[i];
+ if (nDestTab > MAXCOL) // angehaengt ?
+ nDestTab = pDoc->GetTableCount() - 1;
+
+ pDoc->MoveTab( nDestTab, nOldTab );
+ pViewShell->GetViewData()->MoveTab( nDestTab, nOldTab );
+ pViewShell->SetTabNo( nOldTab, TRUE );
+ }
+ }
+ else
+ {
+ for(int i=0;i<theNewTabs.Count();i++)
+ {
+ USHORT nDestTab = theNewTabs[i];
+ USHORT nNewTab = theNewTabs[i];
+ USHORT nOldTab = theOldTabs[i];
+ if (nDestTab > MAXCOL) // angehaengt ?
+ nDestTab = pDoc->GetTableCount() - 1;
+
+ pDoc->MoveTab( nOldTab, nNewTab );
+ pViewShell->GetViewData()->MoveTab( nOldTab, nNewTab );
+ pViewShell->SetTabNo( nDestTab, TRUE );
+ }
+ }
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) ); // Navigator
+
+ pDocShell->PostPaintGridAll();
+ pDocShell->PostPaintExtras();
+ pDocShell->PostDataChanged();
+}
+
+void __EXPORT ScUndoMoveTab::Undo()
+{
+ DoChange( TRUE );
+}
+
+void __EXPORT ScUndoMoveTab::Redo()
+{
+ DoChange( FALSE );
+}
+
+void __EXPORT ScUndoMoveTab::Repeat(SfxRepeatTarget& rTarget)
+{
+ // kein Repeat ! ? !
+}
+
+BOOL __EXPORT ScUndoMoveTab::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+//----------------------------------------------------------------------------------
+//
+// Tabelle kopieren
+//
+
+ScUndoCopyTab::ScUndoCopyTab( ScDocShell* pNewDocShell,
+ const SvUShorts &aOldTab,
+ const SvUShorts &aNewTab) :
+ ScSimpleUndo( pNewDocShell ),
+ pDrawUndo( NULL )
+{
+ pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() );
+
+ int i;
+ for(i=0;i<aOldTab.Count();i++)
+ theOldTabs.Insert(aOldTab[i],theOldTabs.Count());
+
+ for(i=0;i<aNewTab.Count();i++)
+ theNewTabs.Insert(aNewTab[i],theNewTabs.Count());
+}
+
+__EXPORT ScUndoCopyTab::~ScUndoCopyTab()
+{
+ DeleteSdrUndoAction( pDrawUndo );
+}
+
+String __EXPORT ScUndoCopyTab::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_COPY_TAB );
+}
+
+void ScUndoCopyTab::DoChange() const
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ if (pViewShell)
+ pViewShell->SetTabNo(theOldTabs[0],TRUE);
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) ); // Navigator
+
+ pDocShell->PostPaintGridAll();
+ pDocShell->PostPaintExtras();
+ pDocShell->PostDataChanged();
+}
+
+void __EXPORT ScUndoCopyTab::Undo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ if (pDrawUndo)
+ DoSdrUndoAction( pDrawUndo ); // before the sheets are deleted
+
+ int i;
+ for(i=theNewTabs.Count()-1;i>=0;i--)
+ {
+ USHORT nDestTab = theNewTabs[i];
+ if (nDestTab > MAXTAB) // append?
+ nDestTab = pDoc->GetTableCount() - 1;
+
+ bDrawIsInUndo = TRUE;
+ pDoc->DeleteTab(nDestTab);
+ bDrawIsInUndo = FALSE;
+ }
+
+ // ScTablesHint broadcasts after all sheets have been deleted,
+ // so sheets and draw pages are in sync!
+
+ for(i=theNewTabs.Count()-1;i>=0;i--)
+ {
+ USHORT nDestTab = theNewTabs[i];
+ if (nDestTab > MAXTAB) // append?
+ nDestTab = pDoc->GetTableCount() - 1;
+
+ pDocShell->Broadcast( ScTablesHint( SC_TAB_DELETED, nDestTab ) );
+ }
+
+ DoChange();
+}
+
+void __EXPORT ScUndoCopyTab::Redo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
+ USHORT nDestTab = 0;
+ for(int i=0;i<theNewTabs.Count();i++)
+ {
+ nDestTab = theNewTabs[i];
+ USHORT nNewTab = theNewTabs[i];
+ USHORT nOldTab = theOldTabs[i];
+ if (nDestTab > MAXCOL) // angehaengt ?
+ nDestTab = pDoc->GetTableCount() - 1;
+
+ bDrawIsInUndo = TRUE;
+ pDoc->CopyTab( nOldTab, nNewTab );
+ bDrawIsInUndo = FALSE;
+
+ pViewShell->GetViewData()->MoveTab( nOldTab, nNewTab );
+
+ if ( pDoc->IsScenario(nOldTab) )
+ {
+ pDoc->SetScenario(nNewTab, TRUE );
+ String aComment;
+ Color aColor;
+ USHORT nScenFlags;
+ pDoc->GetScenarioData(nOldTab, aComment, aColor, nScenFlags );
+ pDoc->SetScenarioData(nNewTab, aComment, aColor, nScenFlags );
+ BOOL bActive = pDoc->IsActiveScenario(nOldTab);
+ pDoc->SetActiveScenario(nNewTab, bActive );
+ BOOL bVisible=pDoc->IsVisible(nOldTab);
+ pDoc->SetVisible(nNewTab,bVisible );
+ }
+ }
+
+ if (pDrawUndo)
+ RedoSdrUndoAction( pDrawUndo ); // after the sheets are inserted
+
+ pViewShell->SetTabNo( nDestTab, TRUE ); // after draw-undo
+
+ DoChange();
+
+}
+
+void __EXPORT ScUndoCopyTab::Repeat(SfxRepeatTarget& rTarget)
+{
+ // kein Repeat ! ? !
+}
+
+BOOL __EXPORT ScUndoCopyTab::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Szenario anlegen
+//
+
+ScUndoMakeScenario::ScUndoMakeScenario( ScDocShell* pNewDocShell,
+ USHORT nSrc, USHORT nDest, ScDocument* pUndo,
+ const String& rN, const String& rC,
+ const Color& rCol, USHORT nF,
+ const ScMarkData& rMark ) :
+ ScSimpleUndo( pNewDocShell ),
+ nSrcTab( nSrc ),
+ nDestTab( nDest ),
+ pUndoDoc( pUndo ),
+ aName( rN ),
+ aComment( rC ),
+ aColor( rCol ),
+ nFlags( nF ),
+ aMarkData( rMark )
+{
+}
+
+__EXPORT ScUndoMakeScenario::~ScUndoMakeScenario()
+{
+ delete pUndoDoc;
+}
+
+String __EXPORT ScUndoMakeScenario::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_MAKESCENARIO );
+}
+
+void __EXPORT ScUndoMakeScenario::Undo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->DeleteTab( nDestTab );
+ pDocShell->PostPaint(0,0,nDestTab,MAXCOL,MAXROW,MAXTAB, PAINT_ALL);
+ pDocShell->PostDataChanged();
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->SetTabNo( nSrcTab, TRUE );
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+}
+
+void __EXPORT ScUndoMakeScenario::Redo()
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ pViewShell->DoneBlockMode();
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData() = aMarkData; // CopyMarksTo
+ }
+
+ pDocShell->MakeScenario( nSrcTab, aName, aComment, aColor, nFlags, aMarkData, FALSE );
+
+ if (pViewShell)
+ pViewShell->SetTabNo( nDestTab, TRUE );
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+}
+
+void __EXPORT ScUndoMakeScenario::Repeat(SfxRepeatTarget& rTarget)
+{
+ if (rTarget.ISA(ScTabViewTarget))
+ {
+ ((ScTabViewTarget&)rTarget).GetViewShell()->MakeScenario( aName, aComment, aColor, nFlags );
+ }
+}
+
+BOOL __EXPORT ScUndoMakeScenario::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Tabelle einfuegen
+//
+
+ScUndoImportTab::ScUndoImportTab( ScDocShell* pShell,
+ USHORT nNewTab, USHORT nNewCount, BOOL bNewLink ) :
+ ScSimpleUndo( pShell ),
+ nTab( nNewTab ),
+ nCount( nNewCount ),
+ bLink( bNewLink ),
+ pRedoDoc( NULL ),
+ pDrawUndo( NULL )
+{
+ pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() );
+}
+
+__EXPORT ScUndoImportTab::~ScUndoImportTab()
+{
+ delete pRedoDoc;
+ DeleteSdrUndoAction( pDrawUndo );
+}
+
+String __EXPORT ScUndoImportTab::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_INSERT_TAB );
+}
+
+void ScUndoImportTab::DoChange() const
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nCount = pDoc->GetTableCount();
+ if (pViewShell)
+ {
+ if(nTab<nCount)
+ {
+ pViewShell->SetTabNo(nTab,TRUE);
+ }
+ else
+ {
+ pViewShell->SetTabNo(nTab-1,TRUE);
+ }
+ }
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) ); // Navigator
+ pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB,
+ PAINT_GRID | PAINT_TOP | PAINT_LEFT | PAINT_EXTRAS );
+}
+
+void __EXPORT ScUndoImportTab::Undo()
+{
+ //! eingefuegte Bereichsnamen etc.
+
+ USHORT i;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ BOOL bMakeRedo = !pRedoDoc;
+ if (bMakeRedo)
+ {
+ pRedoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRedoDoc->InitUndo( pDoc, nTab,nTab+nCount-1, TRUE,TRUE );
+
+ String aOldName;
+ for (i=0; i<nCount; i++)
+ {
+ USHORT nTabPos=nTab+i;
+
+ pDoc->CopyToDocument(0,0,nTabPos, MAXCOL,MAXROW,nTabPos, IDF_ALL,FALSE, pRedoDoc );
+ pDoc->GetName( nTabPos, aOldName );
+ pRedoDoc->RenameTab( nTabPos, aOldName, FALSE );
+
+ if ( pDoc->IsScenario(nTabPos) )
+ {
+ pRedoDoc->SetScenario(nTabPos, TRUE );
+ String aComment;
+ Color aColor;
+ USHORT nScenFlags;
+ pDoc->GetScenarioData(nTabPos, aComment, aColor, nScenFlags );
+ pRedoDoc->SetScenarioData(nTabPos, aComment, aColor, nScenFlags );
+ BOOL bActive = pDoc->IsActiveScenario(nTabPos);
+ pRedoDoc->SetActiveScenario(nTabPos, bActive );
+ BOOL bVisible=pDoc->IsVisible(nTabPos);
+ pRedoDoc->SetVisible(nTabPos,bVisible );
+ }
+ }
+
+ }
+
+ if (pDrawUndo)
+ DoSdrUndoAction( pDrawUndo ); // before the sheets are deleted
+
+ bDrawIsInUndo = TRUE;
+ for (i=0; i<nCount; i++)
+ pDoc->DeleteTab( nTab );
+ bDrawIsInUndo = FALSE;
+
+ DoChange();
+}
+
+void __EXPORT ScUndoImportTab::Redo()
+{
+ if (!pRedoDoc)
+ {
+ DBG_ERROR("wo ist mein Redo-Document?");
+ return;
+ }
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ String aName;
+ USHORT i;
+ for (i=0; i<nCount; i++) // first insert all sheets (#63304#)
+ {
+ USHORT nTabPos=nTab+i;
+ pRedoDoc->GetName(nTabPos,aName);
+ bDrawIsInUndo = TRUE;
+ pDoc->InsertTab(nTabPos,aName);
+ bDrawIsInUndo = FALSE;
+ }
+ for (i=0; i<nCount; i++) // then copy into inserted sheets
+ {
+ USHORT nTabPos=nTab+i;
+ pRedoDoc->CopyToDocument(0,0,nTabPos, MAXCOL,MAXROW,nTabPos, IDF_ALL,FALSE, pDoc );
+
+ if ( pRedoDoc->IsScenario(nTabPos) )
+ {
+ pDoc->SetScenario(nTabPos, TRUE );
+ String aComment;
+ Color aColor;
+ USHORT nScenFlags;
+ pRedoDoc->GetScenarioData(nTabPos, aComment, aColor, nScenFlags );
+ pDoc->SetScenarioData(nTabPos, aComment, aColor, nScenFlags );
+ BOOL bActive = pRedoDoc->IsActiveScenario(nTabPos);
+ pDoc->SetActiveScenario(nTabPos, bActive );
+ BOOL bVisible=pRedoDoc->IsVisible(nTabPos);
+ pDoc->SetVisible(nTabPos,bVisible );
+ }
+ }
+
+ if (pDrawUndo)
+ RedoSdrUndoAction( pDrawUndo ); // after the sheets are inserted
+
+ DoChange();
+}
+
+void __EXPORT ScUndoImportTab::Repeat(SfxRepeatTarget& rTarget)
+{
+ SFX_DISPATCHER().Execute(FID_INS_TABLE, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+}
+
+BOOL __EXPORT ScUndoImportTab::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Tabellen-Verknuepfung aufheben
+//
+
+ScUndoRemoveLink::ScUndoRemoveLink( ScDocShell* pShell, const String& rDoc ) :
+ ScSimpleUndo( pShell ),
+ aDocName( rDoc ),
+ nCount( 0 )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ pTabs = new USHORT[nTabCount];
+ pModes = new BYTE[nTabCount];
+ pTabNames = new String[nTabCount];
+
+ for (USHORT i=0; i<nTabCount; i++)
+ {
+ BYTE nMode = pDoc->GetLinkMode(i);
+ if (nMode)
+ if (pDoc->GetLinkDoc(i) == aDocName)
+ {
+ if (!nCount)
+ {
+ aFltName = pDoc->GetLinkFlt(i);
+ aOptions = pDoc->GetLinkOpt(i);
+ }
+ else
+ DBG_ASSERT(aFltName == pDoc->GetLinkFlt(i) &&
+ aOptions == pDoc->GetLinkOpt(i),
+ "verschiedene Filter fuer ein Dokument?");
+ pTabs[nCount] = i;
+ pModes[nCount] = nMode;
+ pTabNames[nCount] = pDoc->GetLinkTab(i);
+ ++nCount;
+ }
+ }
+}
+
+__EXPORT ScUndoRemoveLink::~ScUndoRemoveLink()
+{
+ delete pTabs;
+ delete pModes;
+ delete[] pTabNames;
+}
+
+String __EXPORT ScUndoRemoveLink::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_REMOVELINK );
+}
+
+void ScUndoRemoveLink::DoChange( BOOL bLink ) const
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ String aEmpty;
+ for (USHORT i=0; i<nCount; i++)
+ if (bLink) // establish link
+ pDoc->SetLink( pTabs[i], pModes[i], aDocName, aFltName, aOptions, pTabNames[i] );
+ else // remove link
+ pDoc->SetLink( pTabs[i], SC_LINK_NONE, aEmpty, aEmpty, aEmpty, aEmpty );
+ pDocShell->UpdateLinks();
+ SFX_BINDINGS().Invalidate(SID_LINKS);
+}
+
+void __EXPORT ScUndoRemoveLink::Undo()
+{
+ DoChange( TRUE );
+}
+
+void __EXPORT ScUndoRemoveLink::Redo()
+{
+ DoChange( FALSE );
+}
+
+void __EXPORT ScUndoRemoveLink::Repeat(SfxRepeatTarget& rTarget)
+{
+ // gippsnich
+}
+
+BOOL __EXPORT ScUndoRemoveLink::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+// -----------------------------------------------------------------------
+//
+// Tabellen ein-/ausblenden
+//
+
+ScUndoShowHideTab::ScUndoShowHideTab( ScDocShell* pShell, USHORT nNewTab, BOOL bNewShow ) :
+ ScSimpleUndo( pShell ),
+ nTab( nNewTab ),
+ bShow( bNewShow )
+{
+}
+
+__EXPORT ScUndoShowHideTab::~ScUndoShowHideTab()
+{
+}
+
+void ScUndoShowHideTab::DoChange( BOOL bShow ) const
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->SetVisible( nTab, bShow );
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->SetTabNo(nTab,TRUE);
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ pDocShell->SetDocumentModified();
+}
+
+void __EXPORT ScUndoShowHideTab::Undo()
+{
+ DoChange(!bShow);
+}
+
+void __EXPORT ScUndoShowHideTab::Redo()
+{
+ DoChange(bShow);
+}
+
+void __EXPORT ScUndoShowHideTab::Repeat(SfxRepeatTarget& rTarget)
+{
+ SFX_DISPATCHER().Execute( bShow ? FID_TABLE_SHOW : FID_TABLE_HIDE,
+ SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+}
+
+BOOL __EXPORT ScUndoShowHideTab::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return (rTarget.ISA(ScTabViewTarget));
+}
+
+String __EXPORT ScUndoShowHideTab::GetComment() const
+{
+ USHORT nId = bShow ? STR_UNDO_SHOWTAB : STR_UNDO_HIDETAB;
+ return ScGlobal::GetRscString( nId );
+}
+
+// -----------------------------------------------------------------------
+//
+// Tabelle/Dokument schuetzen oder Schutz aufheben
+//
+
+ScUndoProtect::ScUndoProtect( ScDocShell* pShell, USHORT nNewTab,
+ BOOL bNewProtect, const String& rNewPassword ) :
+ ScSimpleUndo( pShell ),
+ nTab( nNewTab ),
+ bProtect( bNewProtect ),
+ aPassword( rNewPassword )
+{
+}
+
+__EXPORT ScUndoProtect::~ScUndoProtect()
+{
+}
+
+void ScUndoProtect::DoProtect( BOOL bDo )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ if (bDo)
+ {
+ if ( nTab == TABLEID_DOC )
+ pDoc->SetDocProtection( TRUE, aPassword );
+ else
+ pDoc->SetTabProtection( nTab, TRUE, aPassword );
+ }
+ else
+ {
+ if ( nTab == TABLEID_DOC )
+ pDoc->SetDocProtection( FALSE, EMPTY_STRING );
+ else
+ pDoc->SetTabProtection( nTab, FALSE, EMPTY_STRING );
+ }
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ pViewShell->UpdateLayerLocks();
+ pViewShell->UpdateInputHandler(TRUE); // damit sofort wieder eingegeben werden kann
+ }
+
+ pDocShell->PostPaintGridAll();
+}
+
+void __EXPORT ScUndoProtect::Undo()
+{
+ BeginUndo();
+ DoProtect( !bProtect );
+ EndUndo();
+}
+
+void __EXPORT ScUndoProtect::Redo()
+{
+ BeginRedo();
+ DoProtect( bProtect );
+ EndRedo();
+}
+
+void __EXPORT ScUndoProtect::Repeat(SfxRepeatTarget& rTarget)
+{
+ // gippsnich
+}
+
+BOOL __EXPORT ScUndoProtect::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE; // gippsnich
+}
+
+String __EXPORT ScUndoProtect::GetComment() const
+{
+ USHORT nId;
+ if ( nTab == TABLEID_DOC )
+ nId = bProtect ? STR_UNDO_PROTECT_DOC : STR_UNDO_UNPROTECT_DOC;
+ else
+ nId = bProtect ? STR_UNDO_PROTECT_TAB : STR_UNDO_UNPROTECT_TAB;
+ return ScGlobal::GetRscString( nId );
+}
+
+// -----------------------------------------------------------------------
+//
+// Druck-/Wiederholungsbereiche aendern
+//
+
+ScUndoPrintRange::ScUndoPrintRange( ScDocShell* pShell, USHORT nNewTab,
+ ScPrintRangeSaver* pOld, ScPrintRangeSaver* pNew ) :
+ ScSimpleUndo( pShell ),
+ nTab( nNewTab ),
+ pOldRanges( pOld ),
+ pNewRanges( pNew )
+{
+}
+
+__EXPORT ScUndoPrintRange::~ScUndoPrintRange()
+{
+ delete pOldRanges;
+ delete pNewRanges;
+}
+
+void ScUndoPrintRange::DoChange(BOOL bUndo)
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ if (bUndo)
+ pDoc->RestorePrintRanges( *pOldRanges );
+ else
+ pDoc->RestorePrintRanges( *pNewRanges );
+
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->SetTabNo( nTab );
+
+ ScPrintFunc( pDocShell, pDocShell->GetPrinter(), nTab ).UpdatePages();
+
+ pDocShell->PostPaint( ScRange(0,0,nTab,MAXCOL,MAXROW,nTab), PAINT_GRID );
+}
+
+void __EXPORT ScUndoPrintRange::Undo()
+{
+ BeginUndo();
+ DoChange( TRUE );
+ EndUndo();
+}
+
+void __EXPORT ScUndoPrintRange::Redo()
+{
+ BeginRedo();
+ DoChange( FALSE );
+ EndRedo();
+}
+
+void __EXPORT ScUndoPrintRange::Repeat(SfxRepeatTarget& rTarget)
+{
+ // gippsnich
+}
+
+BOOL __EXPORT ScUndoPrintRange::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE; // gippsnich
+}
+
+String __EXPORT ScUndoPrintRange::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_PRINTRANGES );
+}
+
+
+//------------------------------------------------------------------------
+
+//---------------------------------------------------------------------------------
+//
+// Szenario-Flags
+//
+
+ScUndoScenarioFlags::ScUndoScenarioFlags( ScDocShell* pNewDocShell, USHORT nT,
+ const String& rON, const String& rNN, const String& rOC, const String& rNC,
+ const Color& rOCol, const Color& rNCol, USHORT nOF, USHORT nNF ) :
+ ScSimpleUndo( pNewDocShell ),
+ nTab ( nT ),
+ aOldName ( rON ),
+ aNewName ( rNN ),
+ aOldComment ( rOC ),
+ aNewComment ( rNC ),
+ aOldColor ( rOCol ),
+ aNewColor ( rNCol ),
+ nOldFlags ( nOF ),
+ nNewFlags ( nNF )
+{
+}
+
+__EXPORT ScUndoScenarioFlags::~ScUndoScenarioFlags()
+{
+}
+
+String __EXPORT ScUndoScenarioFlags::GetComment() const
+{
+ return ScGlobal::GetRscString( STR_UNDO_EDITSCENARIO );
+}
+
+void __EXPORT ScUndoScenarioFlags::Undo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ pDoc->RenameTab( nTab, aOldName );
+ pDoc->SetScenarioData( nTab, aOldComment, aOldColor, nOldFlags );
+
+ pDocShell->PostPaintGridAll();
+ // Der Tabellenname koennte in einer Formel vorkommen...
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->UpdateInputHandler();
+
+ if ( aOldName != aNewName )
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+}
+
+void __EXPORT ScUndoScenarioFlags::Redo()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ pDoc->RenameTab( nTab, aNewName );
+ pDoc->SetScenarioData( nTab, aNewComment, aNewColor, nNewFlags );
+
+ pDocShell->PostPaintGridAll();
+ // Der Tabellenname koennte in einer Formel vorkommen...
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ pViewShell->UpdateInputHandler();
+
+ if ( aOldName != aNewName )
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+}
+
+void __EXPORT ScUndoScenarioFlags::Repeat(SfxRepeatTarget& rTarget)
+{
+ // Repeat macht keinen Sinn
+}
+
+BOOL __EXPORT ScUndoScenarioFlags::CanRepeat(SfxRepeatTarget& rTarget) const
+{
+ return FALSE;
+}
+
+
+
+
diff --git a/sc/source/ui/undo/undoutil.cxx b/sc/source/ui/undo/undoutil.cxx
new file mode 100644
index 000000000000..d877b832a228
--- /dev/null
+++ b/sc/source/ui/undo/undoutil.cxx
@@ -0,0 +1,229 @@
+/*************************************************************************
+ *
+ * $RCSfile: undoutil.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "undoutil.hxx"
+
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+#include "document.hxx"
+#include "dbcolect.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
+
+#pragma SEG_FUNCDEF(undoutil_01)
+
+void ScUndoUtil::MarkSimpleBlock( ScDocShell* pDocShell,
+ USHORT nStartX, USHORT nStartY, USHORT nStartZ,
+ USHORT nEndX, USHORT nEndY, USHORT nEndZ )
+{
+ ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+ if (pViewShell)
+ {
+ USHORT nViewTab = pViewShell->GetViewData()->GetTabNo();
+ if ( nViewTab < nStartZ || nViewTab > nEndZ )
+ pViewShell->SetTabNo( nStartZ );
+
+ pViewShell->DoneBlockMode();
+ pViewShell->MoveCursorAbs( nStartX, nStartY, SC_FOLLOW_JUMP, FALSE, FALSE );
+ pViewShell->InitOwnBlockMode();
+ pViewShell->GetViewData()->GetMarkData().
+ SetMarkArea( ScRange( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ) );
+ }
+}
+
+#pragma SEG_FUNCDEF(undoutil_02)
+
+void ScUndoUtil::MarkSimpleBlock( ScDocShell* pDocShell,
+ const ScTripel& rBlockStart,
+ const ScTripel& rBlockEnd )
+{
+ MarkSimpleBlock( pDocShell, rBlockStart.GetCol(), rBlockStart.GetRow(), rBlockStart.GetTab(),
+ rBlockEnd.GetCol(), rBlockEnd.GetRow(), rBlockEnd.GetTab() );
+}
+
+#pragma SEG_FUNCDEF(undoutil_05)
+
+void ScUndoUtil::MarkSimpleBlock( ScDocShell* pDocShell,
+ const ScRange& rRange )
+{
+ MarkSimpleBlock( pDocShell, rRange.aStart.Col(), rRange.aStart.Row(), rRange.aStart.Tab(),
+ rRange.aEnd.Col(), rRange.aEnd.Row(), rRange.aEnd.Tab() );
+}
+
+
+#pragma SEG_FUNCDEF(undoutil_03)
+
+ScDBData* ScUndoUtil::GetOldDBData( ScDBData* pUndoData, ScDocument* pDoc, USHORT nTab,
+ USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 )
+{
+ ScDBData* pRet = pDoc->GetDBAtArea( nTab, nCol1, nRow1, nCol2, nRow2 );
+
+ if (!pRet)
+ {
+ BOOL bWasTemp = FALSE;
+ if ( pUndoData )
+ {
+ String aName;
+ pUndoData->GetName( aName );
+ if ( aName == ScGlobal::GetRscString( STR_DB_NONAME ) )
+ bWasTemp = TRUE;
+ }
+ if (!bWasTemp)
+ DBG_ERROR("Undo: DB-Bereich nicht gefunden");
+
+ USHORT nIndex;
+ ScDBCollection* pColl = pDoc->GetDBCollection();
+ if (pColl->SearchName( ScGlobal::GetRscString( STR_DB_NONAME ), nIndex ))
+ pRet = (*pColl)[nIndex];
+ else
+ {
+ pRet = new ScDBData( ScGlobal::GetRscString( STR_DB_NONAME ), nTab,
+ nCol1,nRow1, nCol2,nRow2, TRUE,
+ pDoc->HasColHeader( nCol1,nRow1,nCol2,nRow2,nTab ) );
+ pColl->Insert( pRet );
+ }
+ }
+
+ return pRet;
+}
+
+#pragma SEG_FUNCDEF(undoutil_04)
+
+void ScUndoUtil::PaintMore( ScDocShell* pDocShell,
+ const ScRange& rRange )
+{
+ USHORT nCol1 = rRange.aStart.Col();
+ USHORT nRow1 = rRange.aStart.Row();
+ USHORT nCol2 = rRange.aEnd.Col();
+ USHORT nRow2 = rRange.aEnd.Row();
+ if (nCol1) --nCol1;
+ if (nRow1) --nRow1;
+ if (nCol2<MAXCOL) ++nCol2;
+ if (nRow2<MAXROW) ++nRow2;
+
+ pDocShell->PostPaint( nCol1,nRow1,rRange.aStart.Tab(),
+ nCol2,nRow2,rRange.aEnd.Tab(), PAINT_GRID );
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.11 2000/09/17 14:09:28 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.10 2000/08/31 16:38:40 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.9 1996/09/04 17:48:18 RJ
+ MarkSimpleBlock mit ScRange-Parameter
+
+
+ Rev 1.8 04 Sep 1996 19:48:18 RJ
+ MarkSimpleBlock mit ScRange-Parameter
+
+ Rev 1.7 19 Aug 1996 21:29:56 NN
+ Markierungen werden nicht mehr am Dokument gehalten
+
+ Rev 1.6 16 Aug 1996 13:52:14 RJ
+ kleine Umstellung in ::MarkSimpleBlock
+
+ Rev 1.5 10 Apr 1996 11:14:54 NN
+ MarkSimpleBlock: Tabelle umstellen
+
+ Rev 1.4 10 Oct 1995 12:21:26 NN
+ PaintMore
+
+ Rev 1.3 03 Feb 1995 09:45:34 GT
+ Umstellung auf Resource-Strings
+
+ Rev 1.2 19 Jan 1995 18:51:20 NN
+ GetOldDBArea
+
+ Rev 1.1 18 Jan 1995 15:06:08 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.0 12 Jan 1995 12:19:10 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/unoobj/afmtuno.cxx b/sc/source/ui/unoobj/afmtuno.cxx
new file mode 100644
index 000000000000..9a3392905659
--- /dev/null
+++ b/sc/source/ui/unoobj/afmtuno.cxx
@@ -0,0 +1,857 @@
+/*************************************************************************
+ *
+ * $RCSfile: afmtuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "scitems.hxx"
+#include <tools/debug.hxx>
+#include <tools/shl.hxx>
+#include <svtools/poolitem.hxx>
+#include <svx/unomid.hxx>
+
+#ifndef _RTL_UUID_H_ //autogen wg. rtl_createUuid
+#include <rtl/uuid.h>
+#endif
+
+#ifndef _COM_SUN_STAR_TABLE_BORDERLINE_HPP_
+#include <com/sun/star/table/BorderLine.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLVERTJUSTIFY_HPP_
+#include <com/sun/star/table/CellVertJustify.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_SHADOWLOCATION_HPP_
+#include <com/sun/star/table/ShadowLocation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_TABLEBORDER_HPP_
+#include <com/sun/star/table/TableBorder.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_SHADOWFORMAT_HPP_
+#include <com/sun/star/table/ShadowFormat.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLRANGEADDRESS_HPP_
+#include <com/sun/star/table/CellRangeAddress.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLCONTENTTYPE_HPP_
+#include <com/sun/star/table/CellContentType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_TABLEORIENTATION_HPP_
+#include <com/sun/star/table/TableOrientation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLHORIJUSTIFY_HPP_
+#include <com/sun/star/table/CellHoriJustify.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_SORTFIELD_HPP_
+#include <com/sun/star/util/SortField.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_SORTFIELDTYPE_HPP_
+#include <com/sun/star/util/SortFieldType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLORIENTATION_HPP_
+#include <com/sun/star/table/CellOrientation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_TABLE_CELLADDRESS_HPP_
+#include <com/sun/star/table/CellAddress.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_SIMPLEFONTMETRIC_HPP_
+#include <com/sun/star/awt/SimpleFontMetric.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTWEIGHT_HPP_
+#include <com/sun/star/awt/FontWeight.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTSLANT_HPP_
+#include <com/sun/star/awt/FontSlant.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_CHARSET_HPP_
+#include <com/sun/star/awt/CharSet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTDESCRIPTOR_HPP_
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTWIDTH_HPP_
+#include <com/sun/star/awt/FontWidth.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XFONT_HPP_
+#include <com/sun/star/awt/XFont.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTTYPE_HPP_
+#include <com/sun/star/awt/FontType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTUNDERLINE_HPP_
+#include <com/sun/star/awt/FontUnderline.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTSTRIKEOUT_HPP_
+#include <com/sun/star/awt/FontStrikeout.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTFAMILY_HPP_
+#include <com/sun/star/awt/FontFamily.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTPITCH_HPP_
+#include <com/sun/star/awt/FontPitch.hpp>
+#endif
+
+#include "afmtuno.hxx"
+#include "miscuno.hxx"
+#include "autoform.hxx"
+#include "unoguard.hxx"
+#include "scdll.hxx"
+#include "unonames.hxx"
+
+using namespace ::com::sun::star;
+
+//------------------------------------------------------------------------
+
+// ein AutoFormat hat immer 16 Eintraege
+#define SC_AF_FIELD_COUNT 16
+
+//------------------------------------------------------------------------
+
+// AutoFormat-Map nur fuer PropertySetInfo, ohne Which-IDs
+
+const SfxItemPropertyMap* lcl_GetAutoFormatMap()
+{
+ static SfxItemPropertyMap aAutoFormatMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_INCBACK), 0, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_INCBORD), 0, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_INCFONT), 0, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_INCJUST), 0, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_INCNUM), 0, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_INCWIDTH), 0, &::getBooleanCppuType(), 0, 0 },
+ {0,0,0,0}
+ };
+ return aAutoFormatMap_Impl;
+}
+
+//! Zahlformat (String/Language) ??? (in XNumberFormat nur ReadOnly)
+//! table::TableBorder ??!?
+
+const SfxItemPropertyMap* lcl_GetAutoFieldMap()
+{
+ static SfxItemPropertyMap aAutoFieldMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &::getCppuType((const sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CCOLOR), ATTR_FONT_COLOR, &::getCppuType((const sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_COUTL), ATTR_FONT_CONTOUR, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCROSS), ATTR_FONT_CROSSEDOUT,&::getBooleanCppuType(), 0, MID_CROSSED_OUT },
+ {MAP_CHAR_LEN(SC_UNONAME_CFONT), ATTR_FONT, &::getCppuType((const sal_Int16*)0), 0, MID_FONT_FAMILY },
+ {MAP_CHAR_LEN(SC_UNONAME_CFNAME), ATTR_FONT, &::getCppuType((const ::rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
+ {MAP_CHAR_LEN(SC_UNONAME_CHEIGHT), ATTR_FONT_HEIGHT, &::getCppuType((const Float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CPOST), ATTR_FONT_POSTURE, &::getCppuType((const awt::FontSlant*)0), 0, MID_POSTURE },
+ {MAP_CHAR_LEN(SC_UNONAME_CSHADD), ATTR_FONT_SHADOWED, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CUNDER), ATTR_FONT_UNDERLINE,&::getCppuType((const sal_Int16*)0), 0, MID_UNDERLINE },
+ {MAP_CHAR_LEN(SC_UNONAME_CWEIGHT), ATTR_FONT_WEIGHT, &::getCppuType((const Float*)0), 0, MID_WEIGHT },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &::getCppuType((const table::CellHoriJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &::getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_ORIENTATION, &::getCppuType((const table::CellOrientation*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_PBMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &::getCppuType((const sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &::getCppuType((const table::CellVertJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY, &::getCppuType((const table::CellVertJustify*)0), 0, 0 },
+ {0,0,0,0}
+ };
+ return aAutoFieldMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+#define SCAUTOFORMATSOBJ_SERVICE "com.sun.star.sheet.TableAutoFormats"
+
+SC_SIMPLE_SERVICE_INFO( ScAutoFormatFieldObj, "ScAutoFormatFieldObj", "com.sun.star.sheet.TableAutoFormatField" )
+SC_SIMPLE_SERVICE_INFO( ScAutoFormatObj, "ScAutoFormatObj", "com.sun.star.sheet.TableAutoFormat" )
+SC_SIMPLE_SERVICE_INFO( ScAutoFormatsObj, "ScAutoFormatsObj", SCAUTOFORMATSOBJ_SERVICE )
+
+//------------------------------------------------------------------------
+
+sal_Bool lcl_FindAutoFormatIndex( const ScAutoFormat& rFormats, const String& rName, sal_uInt16& rOutIndex )
+{
+ String aEntryName;
+ sal_uInt16 nCount = rFormats.GetCount();
+ for( sal_uInt16 nPos=0; nPos<nCount; nPos++ )
+ {
+ ScAutoFormatData* pEntry = rFormats[nPos];
+ pEntry->GetName( aEntryName );
+ if ( aEntryName == rName )
+ {
+ rOutIndex = nPos;
+ return sal_True;
+ }
+ }
+ return sal_False; // is nich
+}
+
+//------------------------------------------------------------------------
+
+ScAutoFormatsObj::ScAutoFormatsObj()
+{
+ //! Dieses Objekt darf es nur einmal geben, und es muss an den Auto-Format-Daten
+ //! bekannt sein, damit Aenderungen gebroadcasted werden koennen
+}
+
+ScAutoFormatsObj::~ScAutoFormatsObj()
+{
+}
+
+// stuff for exService_...
+
+uno::Reference<uno::XInterface> SAL_CALL ScAutoFormatsObj_CreateInstance(
+ const uno::Reference<lang::XMultiServiceFactory>& )
+{
+ ScUnoGuard aGuard;
+ SC_DLL()->Load(); // load module
+ static uno::Reference< uno::XInterface > xInst = (::cppu::OWeakObject*) new ScAutoFormatsObj;
+ return xInst;
+}
+
+rtl::OUString ScAutoFormatsObj::getImplementationName_Static()
+{
+ return rtl::OUString::createFromAscii( "stardiv.StarCalc.ScAutoFormatsObj" );
+}
+
+uno::Sequence<rtl::OUString> ScAutoFormatsObj::getSupportedServiceNames_Static()
+{
+ uno::Sequence<rtl::OUString> aRet(1);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCAUTOFORMATSOBJ_SERVICE );
+ return aRet;
+}
+
+// XTableAutoFormats
+
+ScAutoFormatObj* ScAutoFormatsObj::GetObjectByIndex_Impl(sal_uInt16 nIndex)
+{
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ if (pFormats && nIndex < pFormats->GetCount())
+ return new ScAutoFormatObj(nIndex);
+
+ return NULL; // falscher Index
+}
+
+ScAutoFormatObj* ScAutoFormatsObj::GetObjectByName_Impl(const rtl::OUString& aName)
+{
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ if (pFormats)
+ {
+ String aString = aName;
+ sal_uInt16 nIndex;
+ if (lcl_FindAutoFormatIndex( *pFormats, aString, nIndex ))
+ return GetObjectByIndex_Impl(nIndex);
+ }
+ return NULL;
+}
+
+// container::XNameContainer
+
+void SAL_CALL ScAutoFormatsObj::insertByName( const rtl::OUString& aName, const uno::Any& aElement )
+ throw(lang::IllegalArgumentException, container::ElementExistException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ sal_Bool bDone = sal_False;
+ // Reflection muss nicht uno::XInterface sein, kann auch irgendein Interface sein...
+ uno::Reference< uno::XInterface > xInterface;
+ if ( aElement >>= xInterface )
+ {
+ ScAutoFormatObj* pFormatObj = ScAutoFormatObj::getImplementation( xInterface );
+ if ( pFormatObj && !pFormatObj->IsInserted() ) // noch nicht eingefuegt?
+ {
+ String aNameStr = aName;
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+
+ sal_uInt16 nDummy;
+ if (pFormats && !lcl_FindAutoFormatIndex( *pFormats, aNameStr, nDummy ))
+ {
+ ScAutoFormatData* pNew = new ScAutoFormatData();
+ pNew->SetName( aNameStr );
+
+ if (pFormats->Insert( pNew ))
+ {
+ //! Notify fuer andere Objekte
+ pFormats->Save(); // sofort speichern
+
+ sal_uInt16 nNewIndex;
+ if (lcl_FindAutoFormatIndex( *pFormats, aNameStr, nNewIndex ))
+ {
+ pFormatObj->InitFormat( nNewIndex ); // kann jetzt benutzt werden
+ bDone = sal_True;
+ }
+ }
+ else
+ {
+ delete pNew;
+ DBG_ERROR("AutoFormat konnte nicht eingefuegt werden");
+ throw uno::RuntimeException();
+ }
+ }
+ else
+ {
+ throw container::ElementExistException();
+ }
+ }
+ }
+
+ if (!bDone)
+ {
+ // other errors are handled above
+ throw lang::IllegalArgumentException();
+ }
+}
+
+void SAL_CALL ScAutoFormatsObj::replaceByName( const rtl::OUString& aName, const uno::Any& aElement )
+ throw(lang::IllegalArgumentException, container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ //! zusammenfassen?
+ removeByName( aName );
+ insertByName( aName, aElement );
+}
+
+void SAL_CALL ScAutoFormatsObj::removeByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameStr = aName;
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+
+ sal_uInt16 nIndex;
+ if (pFormats && lcl_FindAutoFormatIndex( *pFormats, aNameStr, nIndex ))
+ {
+ pFormats->AtFree( nIndex );
+
+ //! Notify fuer andere Objekte
+ pFormats->Save(); // sofort speichern
+ }
+ else
+ {
+ throw container::NoSuchElementException();
+ }
+}
+
+// container::XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScAutoFormatsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// container::XIndexAccess
+
+sal_Int32 SAL_CALL ScAutoFormatsObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ if (pFormats)
+ return pFormats->GetCount();
+
+ return 0;
+}
+
+uno::Any SAL_CALL ScAutoFormatsObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference< container::XNamed > xFormat = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xFormat.is())
+ aAny <<= xFormat;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScAutoFormatsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ::getCppuType((const uno::Reference< container::XNamed >*)0); // muss zu getByIndex passen
+}
+
+sal_Bool SAL_CALL ScAutoFormatsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+// container::XNameAccess
+
+uno::Any SAL_CALL ScAutoFormatsObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference< container::XNamed > xFormat = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ if (xFormat.is())
+ aAny <<= xFormat;
+ else
+ throw container::NoSuchElementException();
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScAutoFormatsObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ if (pFormats)
+ {
+ String aName;
+ sal_uInt16 nCount = pFormats->GetCount();
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+ for (sal_uInt16 i=0; i<nCount; i++)
+ {
+ (*pFormats)[i]->GetName(aName);
+ pAry[i] = aName;
+ }
+ return aSeq;
+ }
+ return uno::Sequence<rtl::OUString>(0);
+}
+
+sal_Bool SAL_CALL ScAutoFormatsObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ if (pFormats)
+ {
+ String aString = aName;
+ sal_uInt16 nDummy;
+ return lcl_FindAutoFormatIndex( *pFormats, aString, nDummy );
+ }
+ return sal_False;
+}
+
+//------------------------------------------------------------------------
+
+ScAutoFormatObj::ScAutoFormatObj(sal_uInt16 nIndex) :
+ aPropSet( lcl_GetAutoFormatMap() ),
+ nFormatIndex( nIndex )
+{
+ //! Listening !!!
+}
+
+ScAutoFormatObj::~ScAutoFormatObj()
+{
+ // Wenn ein AutoFormat-Objekt losgelassen wird, werden eventuelle Aenderungen
+ // gespeichert, damit sie z.B. im Writer sichtbar sind
+
+ if (IsInserted())
+ {
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ if ( pFormats && pFormats->IsSaveLater() )
+ pFormats->Save();
+
+ // Save() setzt SaveLater Flag zurueck
+ }
+}
+
+void ScAutoFormatObj::InitFormat( sal_uInt16 nNewIndex )
+{
+ DBG_ASSERT( nFormatIndex == SC_AFMTOBJ_INVALID, "ScAutoFormatObj::InitFormat mehrfach" );
+ nFormatIndex = nNewIndex;
+ //! Listening !!!
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScAutoFormatObj::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScAutoFormatObj::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScAutoFormatObj* ScAutoFormatObj::getImplementation(
+ const uno::Reference<uno::XInterface> xObj )
+{
+ ScAutoFormatObj* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScAutoFormatObj*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+void ScAutoFormatObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // spaeter...
+}
+
+// XTableAutoFormat
+
+ScAutoFormatFieldObj* ScAutoFormatObj::GetObjectByIndex_Impl(sal_uInt16 nIndex)
+{
+ if ( IsInserted() && nIndex < SC_AF_FIELD_COUNT )
+ return new ScAutoFormatFieldObj( nFormatIndex, nIndex );
+
+ return NULL;
+}
+
+// container::XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScAutoFormatObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// container::XIndexAccess
+
+sal_Int32 SAL_CALL ScAutoFormatObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (IsInserted())
+ return SC_AF_FIELD_COUNT; // immer 16 Elemente
+ else
+ return 0;
+}
+
+uno::Any SAL_CALL ScAutoFormatObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ if ( nIndex < 0 || nIndex >= getCount() )
+ throw lang::IndexOutOfBoundsException();
+
+ uno::Any aAny;
+ if (IsInserted())
+ {
+ uno::Reference< beans::XPropertySet > xField = GetObjectByIndex_Impl(nIndex);
+ aAny <<= xField;
+ }
+ return aAny;
+}
+
+uno::Type SAL_CALL ScAutoFormatObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ::getCppuType((const uno::Reference< beans::XPropertySet >*)0); // muss zu getByIndex passen
+}
+
+sal_Bool SAL_CALL ScAutoFormatObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+// container::XNamed
+
+rtl::OUString SAL_CALL ScAutoFormatObj::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ if (pFormats && IsInserted() && nFormatIndex < pFormats->GetCount())
+ {
+ String aName;
+ (*pFormats)[nFormatIndex]->GetName(aName);
+ return aName;
+ }
+ return rtl::OUString();
+}
+
+void SAL_CALL ScAutoFormatObj::setName( const rtl::OUString& aNewName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNewString = aNewName;
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+
+ sal_uInt16 nDummy;
+ if (pFormats && IsInserted() && nFormatIndex < pFormats->GetCount() &&
+ !lcl_FindAutoFormatIndex( *pFormats, aNewString, nDummy ))
+ {
+ ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
+ DBG_ASSERT(pData,"AutoFormat Daten nicht da");
+
+ ScAutoFormatData* pNew = new ScAutoFormatData(*pData);
+ pNew->SetName( aNewString );
+
+ pFormats->AtFree( nFormatIndex );
+ if (pFormats->Insert( pNew ))
+ {
+ nFormatIndex = pFormats->IndexOf( pNew ); // ist evtl. anders einsortiert...
+
+ //! Notify fuer andere Objekte
+ pFormats->SetSaveLater(sal_True);
+ }
+ else
+ {
+ delete pNew;
+ DBG_ERROR("AutoFormat konnte nicht eingefuegt werden");
+ nFormatIndex = 0; //! alter Index ist ungueltig
+ }
+ }
+}
+
+// beans::XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScAutoFormatObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScAutoFormatObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ if (pFormats && IsInserted() && nFormatIndex < pFormats->GetCount())
+ {
+ ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
+ DBG_ASSERT(pData,"AutoFormat Daten nicht da");
+
+ String aPropString = aPropertyName;
+ sal_Bool bBool;
+ if (aPropString.EqualsAscii( SC_UNONAME_INCBACK ) && (aValue >>= bBool))
+ pData->SetIncludeBackground( bBool );
+ else if (aPropString.EqualsAscii( SC_UNONAME_INCBORD ) && (aValue >>= bBool))
+ pData->SetIncludeFrame( bBool );
+ else if (aPropString.EqualsAscii( SC_UNONAME_INCFONT ) && (aValue >>= bBool))
+ pData->SetIncludeFont( bBool );
+ else if (aPropString.EqualsAscii( SC_UNONAME_INCJUST ) && (aValue >>= bBool))
+ pData->SetIncludeJustify( bBool );
+ else if (aPropString.EqualsAscii( SC_UNONAME_INCNUM ) && (aValue >>= bBool))
+ pData->SetIncludeValueFormat( bBool );
+ else if (aPropString.EqualsAscii( SC_UNONAME_INCWIDTH ) && (aValue >>= bBool))
+ pData->SetIncludeWidthHeight( bBool );
+
+ // else Fehler
+
+ //! Notify fuer andere Objekte
+ pFormats->SetSaveLater(sal_True);
+ }
+}
+
+uno::Any SAL_CALL ScAutoFormatObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Any aAny;
+
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ if (pFormats && IsInserted() && nFormatIndex < pFormats->GetCount())
+ {
+ ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
+ DBG_ASSERT(pData,"AutoFormat Daten nicht da");
+
+ sal_Bool bValue;
+ sal_Bool bError = sal_False;
+
+ String aPropString = aPropertyName;
+ if (aPropString.EqualsAscii( SC_UNONAME_INCBACK ))
+ bValue = pData->GetIncludeBackground();
+ else if (aPropString.EqualsAscii( SC_UNONAME_INCBORD ))
+ bValue = pData->GetIncludeFrame();
+ else if (aPropString.EqualsAscii( SC_UNONAME_INCFONT ))
+ bValue = pData->GetIncludeFont();
+ else if (aPropString.EqualsAscii( SC_UNONAME_INCJUST ))
+ bValue = pData->GetIncludeJustify();
+ else if (aPropString.EqualsAscii( SC_UNONAME_INCNUM ))
+ bValue = pData->GetIncludeValueFormat();
+ else if (aPropString.EqualsAscii( SC_UNONAME_INCWIDTH ))
+ bValue = pData->GetIncludeWidthHeight();
+ else
+ bError = sal_True; // unbekannte Property
+
+ if (!bError)
+ aAny <<= bValue;
+ }
+
+ return aAny;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScAutoFormatObj )
+
+//------------------------------------------------------------------------
+
+ScAutoFormatFieldObj::ScAutoFormatFieldObj(sal_uInt16 nFormat, sal_uInt16 nField) :
+ aPropSet( lcl_GetAutoFieldMap() ),
+ nFormatIndex( nFormat ),
+ nFieldIndex( nField )
+{
+ //! Listening !!!
+}
+
+ScAutoFormatFieldObj::~ScAutoFormatFieldObj()
+{
+}
+
+void ScAutoFormatFieldObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // spaeter...
+}
+
+// beans::XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScAutoFormatFieldObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScAutoFormatFieldObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ String aPropString = aPropertyName;
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetAutoFieldMap(), aPropString );
+
+ if ( pMap && pMap->nWID && pFormats && nFormatIndex < pFormats->GetCount() )
+ {
+ ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
+ const SfxPoolItem* pItem = pData->GetItem( nFieldIndex, pMap->nWID );
+ if (pItem)
+ {
+ SfxPoolItem* pNewItem = pItem->Clone();
+ sal_Bool bDone = pNewItem->PutValue( aValue, pMap->nMemberId );
+ if (bDone)
+ {
+ pData->PutItem( nFieldIndex, *pNewItem );
+
+ //! Notify fuer andere Objekte?
+ pFormats->SetSaveLater(sal_True);
+ }
+ delete pNewItem;
+ }
+ }
+}
+
+uno::Any SAL_CALL ScAutoFormatFieldObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Any aVal;
+
+ ScAutoFormat* pFormats = ScGlobal::GetAutoFormat();
+ String aPropString = aPropertyName;
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetAutoFieldMap(), aPropString );
+
+ if ( pMap && pMap->nWID && pFormats && nFormatIndex < pFormats->GetCount() )
+ {
+ const ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
+ const SfxPoolItem* pItem = pData->GetItem( nFieldIndex, pMap->nWID );
+ if (pItem)
+ pItem->QueryValue( aVal, pMap->nMemberId );
+ }
+
+ return aVal;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScAutoFormatFieldObj )
+
+//------------------------------------------------------------------------
+
+
+
diff --git a/sc/source/ui/unoobj/appluno.cxx b/sc/source/ui/unoobj/appluno.cxx
new file mode 100644
index 000000000000..6e3ff8e36132
--- /dev/null
+++ b/sc/source/ui/unoobj/appluno.cxx
@@ -0,0 +1,793 @@
+/*************************************************************************
+ *
+ * $RCSfile: appluno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <tools/shl.hxx>
+#include <cppuhelper/factory.hxx>
+#include <osl/diagnose.h>
+
+#include "appluno.hxx"
+#include "afmtuno.hxx"
+#include "miscuno.hxx"
+#include "scmod.hxx"
+#include "appoptio.hxx"
+#include "inputopt.hxx"
+#include "userlist.hxx"
+#include "sc.hrc" // VAR_ARGS
+#include "unoguard.hxx"
+#include "unonames.hxx"
+
+#include <com/sun/star/sheet/FunctionArgument.hpp>
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+// Anzahl der Funktionen, die als zuletzt benutzt gespeichert werden
+//! Define mit funcpage.hxx und dwfunctr.hxx zusammenfassen !!!
+#define LRU_MAX 10
+
+// Spezial-Werte fuer Zoom
+//! irgendwo zentral
+#define SC_ZOOMVAL_OPTIMAL (-1)
+#define SC_ZOOMVAL_WHOLEPAGE (-2)
+#define SC_ZOOMVAL_PAGEWIDTH (-3)
+
+// Anzahl der PropertyValues in einer Function-Description
+#define SC_FUNCDESC_PROPCOUNT 5
+
+//------------------------------------------------------------------------
+
+// alles ohne Which-ID, Map nur fuer PropertySetInfo
+
+const SfxItemPropertyMap* lcl_GetSettingsPropertyMap()
+{
+ static SfxItemPropertyMap aSettingsPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_DOAUTOCP), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_ENTERED), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_EXPREF), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_EXTFMT), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_LINKUPD), 0, &getCppuType((sal_Int16*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_MARKHDR), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_METRIC), 0, &getCppuType((sal_Int16*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_MOVEDIR), 0, &getCppuType((sal_Int16*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_MOVESEL), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_RANGEFIN), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_SCALE), 0, &getCppuType((sal_Int16*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_STBFUNC), 0, &getCppuType((sal_Int16*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_ULISTS), 0, &getCppuType((uno::Sequence<rtl::OUString>*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_USETABCOL),0, &getBooleanCppuType(), 0},
+ {0,0,0,0}
+ };
+ return aSettingsPropertyMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+#define SCFUNCTIONLISTOBJ_SERVICE "com.sun.star.sheet.FunctionDescriptions"
+#define SCRECENTFUNCTIONSOBJ_SERVICE "com.sun.star.sheet.RecentFunctions"
+#define SCSPREADSHEETSETTINGS_SERVICE "com.sun.star.sheet.GlobalSheetSettings"
+
+SC_SIMPLE_SERVICE_INFO( ScFunctionListObj, "ScFunctionListObj", SCFUNCTIONLISTOBJ_SERVICE )
+SC_SIMPLE_SERVICE_INFO( ScRecentFunctionsObj, "ScRecentFunctionsObj", SCRECENTFUNCTIONSOBJ_SERVICE )
+SC_SIMPLE_SERVICE_INFO( ScSpreadsheetSettings, "ScSpreadsheetSettings", SCSPREADSHEETSETTINGS_SERVICE )
+
+//------------------------------------------------------------------------
+
+extern "C" {
+
+void SAL_CALL component_getImplementationEnvironment(
+ const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv )
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
+
+sal_Bool SAL_CALL component_writeInfo(
+ void * pServiceManager, registry::XRegistryKey * pRegistryKey )
+{
+ if (pRegistryKey)
+ {
+ try
+ {
+ INT32 i;
+ uno::Reference<registry::XRegistryKey> xNewKey;
+
+ rtl::OUString aImpl = rtl::OUString::createFromAscii( "/" );
+ aImpl += ScSpreadsheetSettings::getImplementationName_Static();
+ aImpl += rtl::OUString::createFromAscii( "/UNO/SERVICES" );
+ xNewKey = reinterpret_cast<registry::XRegistryKey*>(pRegistryKey)->createKey(aImpl);
+ uno::Sequence <rtl::OUString> aSequ = ScSpreadsheetSettings::getSupportedServiceNames_Static();
+ const rtl::OUString * pArray = aSequ.getConstArray();
+ for( i = 0; i < aSequ.getLength(); i++ )
+ xNewKey->createKey( pArray[i] );
+
+ aImpl = rtl::OUString::createFromAscii( "/" );
+ aImpl += ScRecentFunctionsObj::getImplementationName_Static();
+ aImpl += rtl::OUString::createFromAscii( "/UNO/SERVICES" );
+ xNewKey = reinterpret_cast<registry::XRegistryKey*>(pRegistryKey)->createKey(aImpl);
+ aSequ = ScRecentFunctionsObj::getSupportedServiceNames_Static();
+ pArray = aSequ.getConstArray();
+ for( i = 0; i < aSequ.getLength(); i++ )
+ xNewKey->createKey( pArray[i] );
+
+ aImpl = rtl::OUString::createFromAscii( "/" );
+ aImpl += ScFunctionListObj::getImplementationName_Static();
+ aImpl += rtl::OUString::createFromAscii( "/UNO/SERVICES" );
+ xNewKey = reinterpret_cast<registry::XRegistryKey*>(pRegistryKey)->createKey(aImpl);
+ aSequ = ScFunctionListObj::getSupportedServiceNames_Static();
+ pArray = aSequ.getConstArray();
+ for( i = 0; i < aSequ.getLength(); i++ )
+ xNewKey->createKey( pArray[i] );
+
+ aImpl = rtl::OUString::createFromAscii( "/" );
+ aImpl += ScAutoFormatsObj::getImplementationName_Static();
+ aImpl += rtl::OUString::createFromAscii( "/UNO/SERVICES" );
+ xNewKey = reinterpret_cast<registry::XRegistryKey*>(pRegistryKey)->createKey(aImpl);
+ aSequ = ScAutoFormatsObj::getSupportedServiceNames_Static();
+ pArray = aSequ.getConstArray();
+ for( i = 0; i < aSequ.getLength(); i++ )
+ xNewKey->createKey( pArray[i] );
+
+ return sal_True;
+ }
+ catch (registry::InvalidRegistryException&)
+ {
+ OSL_ENSHURE( sal_False, "### InvalidRegistryException!" );
+ }
+ }
+ return sal_False;
+}
+
+void * SAL_CALL component_getFactory(
+ const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
+{
+ if (!pServiceManager)
+ return NULL;
+
+ uno::Reference<lang::XSingleServiceFactory> xFactory;
+ rtl::OUString aImpl = rtl::OUString::createFromAscii(pImplName);
+
+ if ( aImpl == ScSpreadsheetSettings::getImplementationName_Static() )
+ xFactory = cppu::createOneInstanceFactory(
+ reinterpret_cast<lang::XMultiServiceFactory*>(pServiceManager),
+ ScSpreadsheetSettings::getImplementationName_Static(),
+ ScSpreadsheetSettings_CreateInstance,
+ ScSpreadsheetSettings::getSupportedServiceNames_Static() );
+
+ if ( aImpl == ScRecentFunctionsObj::getImplementationName_Static() )
+ xFactory = cppu::createOneInstanceFactory(
+ reinterpret_cast<lang::XMultiServiceFactory*>(pServiceManager),
+ ScRecentFunctionsObj::getImplementationName_Static(),
+ ScRecentFunctionsObj_CreateInstance,
+ ScRecentFunctionsObj::getSupportedServiceNames_Static() );
+
+ if ( aImpl == ScFunctionListObj::getImplementationName_Static() )
+ xFactory = cppu::createOneInstanceFactory(
+ reinterpret_cast<lang::XMultiServiceFactory*>(pServiceManager),
+ ScFunctionListObj::getImplementationName_Static(),
+ ScFunctionListObj_CreateInstance,
+ ScFunctionListObj::getSupportedServiceNames_Static() );
+
+ if ( aImpl == ScAutoFormatsObj::getImplementationName_Static() )
+ xFactory = cppu::createOneInstanceFactory(
+ reinterpret_cast<lang::XMultiServiceFactory*>(pServiceManager),
+ ScAutoFormatsObj::getImplementationName_Static(),
+ ScAutoFormatsObj_CreateInstance,
+ ScAutoFormatsObj::getSupportedServiceNames_Static() );
+
+ void* pRet = NULL;
+ if (xFactory.is())
+ {
+ xFactory->acquire();
+ pRet = xFactory.get();
+ }
+ return pRet;
+}
+
+} // extern C
+
+//------------------------------------------------------------------------
+
+ScSpreadsheetSettings::ScSpreadsheetSettings() :
+ aPropSet( lcl_GetSettingsPropertyMap() )
+{
+}
+
+ScSpreadsheetSettings::~ScSpreadsheetSettings()
+{
+}
+
+uno::Reference<uno::XInterface> SAL_CALL ScSpreadsheetSettings_CreateInstance(
+ const uno::Reference<lang::XMultiServiceFactory>& rSMgr )
+{
+ ScUnoGuard aGuard;
+ SC_DLL()->Load(); // load module
+ static uno::Reference<uno::XInterface> xInst = (cppu::OWeakObject*)new ScSpreadsheetSettings();
+ return xInst;
+}
+
+rtl::OUString ScSpreadsheetSettings::getImplementationName_Static()
+{
+ return rtl::OUString::createFromAscii( "stardiv.StarCalc.ScSpreadsheetSettings" );
+}
+
+uno::Sequence<rtl::OUString> ScSpreadsheetSettings::getSupportedServiceNames_Static()
+{
+ uno::Sequence<rtl::OUString> aRet(1);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCSPREADSHEETSETTINGS_SERVICE );
+ return aRet;
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScSpreadsheetSettings::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScSpreadsheetSettings::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+
+ ScModule* pScMod = SC_MOD();
+ ScAppOptions aAppOpt = pScMod->GetAppOptions();
+ ScInputOptions aInpOpt = pScMod->GetInputOptions();
+ BOOL bSaveApp = FALSE;
+ BOOL bSaveInp = FALSE;
+
+ if (aString.EqualsAscii( SC_UNONAME_DOAUTOCP ))
+ {
+ aAppOpt.SetAutoComplete( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ bSaveApp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_ENTERED ))
+ {
+ aInpOpt.SetEnterEdit( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ bSaveInp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_EXPREF ))
+ {
+ aInpOpt.SetExpandRefs( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ bSaveInp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_EXTFMT ))
+ {
+ aInpOpt.SetExtendFormat( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ bSaveInp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_LINKUPD ))
+ {
+ aAppOpt.SetLinkMode( (ScLkUpdMode) ScUnoHelpFunctions::GetInt16FromAny( aValue ) );
+ bSaveApp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_MARKHDR ))
+ {
+ aInpOpt.SetMarkHeader( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ bSaveInp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_MOVESEL ))
+ {
+ aInpOpt.SetMoveSelection( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ bSaveInp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_RANGEFIN ))
+ {
+ aInpOpt.SetRangeFinder( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ bSaveInp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_USETABCOL ))
+ {
+ aInpOpt.SetUseTabCol( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ bSaveInp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_METRIC ))
+ {
+ aAppOpt.SetAppMetric( (FieldUnit) ScUnoHelpFunctions::GetInt16FromAny( aValue ) );
+ bSaveApp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_MOVEDIR ))
+ {
+ aInpOpt.SetMoveDir( ScUnoHelpFunctions::GetInt16FromAny( aValue ) );
+ bSaveInp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_SCALE ))
+ {
+ short nVal = ScUnoHelpFunctions::GetInt16FromAny( aValue );
+ if ( nVal < 0 )
+ {
+ SvxZoomType eType = SVX_ZOOM_PERCENT;
+ switch (nVal)
+ {
+ case SC_ZOOMVAL_OPTIMAL: eType = SVX_ZOOM_OPTIMAL; break;
+ case SC_ZOOMVAL_WHOLEPAGE: eType = SVX_ZOOM_WHOLEPAGE; break;
+ case SC_ZOOMVAL_PAGEWIDTH: eType = SVX_ZOOM_PAGEWIDTH; break;
+ }
+ aAppOpt.SetZoomType( eType );
+ }
+ else if ( nVal >= MINZOOM && nVal <= MAXZOOM )
+ {
+ aAppOpt.SetZoom( nVal );
+ aAppOpt.SetZoomType( SVX_ZOOM_PERCENT );
+ }
+ bSaveApp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_STBFUNC ))
+ {
+ aAppOpt.SetStatusFunc( ScUnoHelpFunctions::GetInt16FromAny( aValue ) );
+ bSaveApp = TRUE;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_ULISTS ))
+ {
+ ScUserList* pUserList = ScGlobal::GetUserList();
+ uno::Sequence<rtl::OUString> aSeq;
+ if ( pUserList && ( aValue >>= aSeq ) )
+ {
+ // es wird direkt die "lebende" Liste veraendert,
+ // mehr tut ScGlobal::SetUserList auch nicht
+
+ pUserList->FreeAll(); // alle Eintraege raus
+ USHORT nCount = (USHORT)aSeq.getLength();
+ const rtl::OUString* pAry = aSeq.getConstArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ String aEntry = pAry[i];
+ ScUserListData* pData = new ScUserListData(aEntry);
+ if (!pUserList->Insert(pData)) // hinten anhaengen
+ delete pData; // sollte nicht vorkommen
+ }
+ bSaveApp = TRUE; // Liste wird mit den App-Optionen gespeichert
+ }
+ }
+
+ if ( bSaveApp )
+ pScMod->SetAppOptions( aAppOpt );
+ if ( bSaveInp )
+ pScMod->SetInputOptions( aInpOpt );
+}
+
+uno::Any SAL_CALL ScSpreadsheetSettings::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+ uno::Any aRet;
+
+ ScModule* pScMod = SC_MOD();
+ ScAppOptions aAppOpt = pScMod->GetAppOptions();
+ ScInputOptions aInpOpt = pScMod->GetInputOptions();
+
+ if (aString.EqualsAscii( SC_UNONAME_DOAUTOCP )) ScUnoHelpFunctions::SetBoolInAny( aRet, aAppOpt.GetAutoComplete() );
+ else if (aString.EqualsAscii( SC_UNONAME_ENTERED )) ScUnoHelpFunctions::SetBoolInAny( aRet, aInpOpt.GetEnterEdit() );
+ else if (aString.EqualsAscii( SC_UNONAME_EXPREF )) ScUnoHelpFunctions::SetBoolInAny( aRet, aInpOpt.GetExpandRefs() );
+ else if (aString.EqualsAscii( SC_UNONAME_EXTFMT )) ScUnoHelpFunctions::SetBoolInAny( aRet, aInpOpt.GetExtendFormat() );
+ else if (aString.EqualsAscii( SC_UNONAME_LINKUPD )) aRet <<= (sal_Int16) aAppOpt.GetLinkMode();
+ else if (aString.EqualsAscii( SC_UNONAME_MARKHDR )) ScUnoHelpFunctions::SetBoolInAny( aRet, aInpOpt.GetMarkHeader() );
+ else if (aString.EqualsAscii( SC_UNONAME_MOVESEL )) ScUnoHelpFunctions::SetBoolInAny( aRet, aInpOpt.GetMoveSelection() );
+ else if (aString.EqualsAscii( SC_UNONAME_RANGEFIN )) ScUnoHelpFunctions::SetBoolInAny( aRet, aInpOpt.GetRangeFinder() );
+ else if (aString.EqualsAscii( SC_UNONAME_USETABCOL )) ScUnoHelpFunctions::SetBoolInAny( aRet, aInpOpt.GetUseTabCol() );
+ else if (aString.EqualsAscii( SC_UNONAME_METRIC )) aRet <<= (sal_Int16) aAppOpt.GetAppMetric();
+ else if (aString.EqualsAscii( SC_UNONAME_MOVEDIR )) aRet <<= (sal_Int16) aInpOpt.GetMoveDir();
+ else if (aString.EqualsAscii( SC_UNONAME_STBFUNC )) aRet <<= (sal_Int16) aAppOpt.GetStatusFunc();
+ else if (aString.EqualsAscii( SC_UNONAME_SCALE ))
+ {
+ INT16 nZoomVal = 0;
+ switch ( aAppOpt.GetZoomType() )
+ {
+ case SVX_ZOOM_PERCENT: nZoomVal = aAppOpt.GetZoom(); break;
+ case SVX_ZOOM_OPTIMAL: nZoomVal = SC_ZOOMVAL_OPTIMAL; break;
+ case SVX_ZOOM_WHOLEPAGE: nZoomVal = SC_ZOOMVAL_WHOLEPAGE; break;
+ case SVX_ZOOM_PAGEWIDTH: nZoomVal = SC_ZOOMVAL_PAGEWIDTH; break;
+ }
+ aRet <<= (sal_Int16) nZoomVal;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_ULISTS ))
+ {
+ ScUserList* pUserList = ScGlobal::GetUserList();
+ if (pUserList)
+ {
+ USHORT nCount = pUserList->GetCount();
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ String aEntry = (*pUserList)[i]->GetString();
+ pAry[i] = aEntry;
+ }
+ aRet <<= aSeq;
+ }
+ }
+
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScSpreadsheetSettings )
+
+//------------------------------------------------------------------------
+
+ScRecentFunctionsObj::ScRecentFunctionsObj()
+{
+}
+
+ScRecentFunctionsObj::~ScRecentFunctionsObj()
+{
+}
+
+// stuff for exService_...
+
+uno::Reference<uno::XInterface> SAL_CALL ScRecentFunctionsObj_CreateInstance(
+ const uno::Reference<lang::XMultiServiceFactory>& rSMgr )
+{
+ ScUnoGuard aGuard;
+ SC_DLL()->Load(); // load module
+ static uno::Reference<uno::XInterface> xInst = (cppu::OWeakObject*)new ScRecentFunctionsObj();
+ return xInst;
+}
+
+rtl::OUString ScRecentFunctionsObj::getImplementationName_Static()
+{
+ return rtl::OUString::createFromAscii( "stardiv.StarCalc.ScRecentFunctionsObj" );
+}
+
+uno::Sequence<rtl::OUString> ScRecentFunctionsObj::getSupportedServiceNames_Static()
+{
+ uno::Sequence<rtl::OUString> aRet(1);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCRECENTFUNCTIONSOBJ_SERVICE );
+ return aRet;
+}
+
+// XRecentFunctions
+
+uno::Sequence<sal_Int32> SAL_CALL ScRecentFunctionsObj::getRecentFunctionIds()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScAppOptions& rOpt = SC_MOD()->GetAppOptions();
+ USHORT nCount = rOpt.GetLRUFuncListCount();
+ const USHORT* pFuncs = rOpt.GetLRUFuncList();
+ if (pFuncs)
+ {
+ uno::Sequence<sal_Int32> aSeq(nCount);
+ sal_Int32* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ pAry[i] = pFuncs[i];
+ return aSeq;
+ }
+ return uno::Sequence<sal_Int32>(0);
+}
+
+void SAL_CALL ScRecentFunctionsObj::setRecentFunctionIds(
+ const uno::Sequence<sal_Int32>& aRecentFunctionIds )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = (USHORT) Min( aRecentFunctionIds.getLength(), (INT32) LRU_MAX );
+ const INT32* pAry = aRecentFunctionIds.getConstArray();
+
+ USHORT* pFuncs = nCount ? new USHORT[nCount] : NULL;
+ for (USHORT i=0; i<nCount; i++)
+ pFuncs[i] = (USHORT)pAry[i]; //! auf gueltige Werte testen?
+
+ ScModule* pScMod = SC_MOD();
+ ScAppOptions aNewOpts(pScMod->GetAppOptions());
+ aNewOpts.SetLRUFuncList(pFuncs, nCount);
+ pScMod->SetAppOptions(aNewOpts);
+
+ pScMod->RecentFunctionsChanged(); // update function list child window
+
+ delete[] pFuncs;
+}
+
+sal_Int32 SAL_CALL ScRecentFunctionsObj::getMaxRecentFunctions() throw(uno::RuntimeException)
+{
+ return LRU_MAX;
+}
+
+//------------------------------------------------------------------------
+
+ScFunctionListObj::ScFunctionListObj()
+{
+}
+
+ScFunctionListObj::~ScFunctionListObj()
+{
+}
+
+// stuff for exService_...
+
+uno::Reference<uno::XInterface> SAL_CALL ScFunctionListObj_CreateInstance(
+ const uno::Reference<lang::XMultiServiceFactory>& rSMgr )
+{
+ ScUnoGuard aGuard;
+ SC_DLL()->Load(); // load module
+ static uno::Reference<uno::XInterface> xInst = (cppu::OWeakObject*)new ScFunctionListObj();
+ return xInst;
+}
+
+rtl::OUString ScFunctionListObj::getImplementationName_Static()
+{
+ return rtl::OUString::createFromAscii( "stardiv.StarCalc.ScFunctionListObj" );
+}
+
+uno::Sequence<rtl::OUString> ScFunctionListObj::getSupportedServiceNames_Static()
+{
+ uno::Sequence<rtl::OUString> aRet(1);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCFUNCTIONLISTOBJ_SERVICE );
+ return aRet;
+}
+
+
+void lcl_FillSequence( uno::Sequence<beans::PropertyValue>& rSequence, const ScFuncDesc& rDesc )
+{
+ DBG_ASSERT( rSequence.getLength() == SC_FUNCDESC_PROPCOUNT, "Falscher Count" );
+
+ beans::PropertyValue* pArray = rSequence.getArray();
+
+ pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_ID );
+ pArray[0].Value <<= (sal_Int32) rDesc.nFIndex;
+
+ pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_CATEGORY );
+ pArray[1].Value <<= (sal_Int32) rDesc.nCategory;
+
+ pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_NAME );
+ if (rDesc.pFuncName)
+ pArray[2].Value <<= rtl::OUString( *rDesc.pFuncName );
+
+ pArray[3].Name = rtl::OUString::createFromAscii( SC_UNONAME_DESCRIPTION );
+ if (rDesc.pFuncDesc)
+ pArray[3].Value <<= rtl::OUString( *rDesc.pFuncDesc );
+
+ pArray[4].Name = rtl::OUString::createFromAscii( SC_UNONAME_ARGUMENTS );
+ if (rDesc.aDefArgNames && rDesc.aDefArgDescs && rDesc.aDefArgOpt )
+ {
+ USHORT nCount = rDesc.nArgCount;
+ if (nCount >= VAR_ARGS) nCount = nCount-VAR_ARGS+1;
+
+ uno::Sequence<sheet::FunctionArgument> aArgSeq(nCount);
+ sheet::FunctionArgument* pArgAry = aArgSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ String aArgName;
+ if (rDesc.aDefArgNames[i]) aArgName = *rDesc.aDefArgNames[i];
+ String aArgDesc;
+ if (rDesc.aDefArgDescs[i]) aArgDesc = *rDesc.aDefArgDescs[i];
+ sheet::FunctionArgument aArgument;
+ aArgument.Name = aArgName;
+ aArgument.Description = aArgDesc;
+ aArgument.IsOptional = rDesc.aDefArgOpt[i];
+ pArgAry[i] = aArgument;
+ }
+ pArray[4].Value <<= aArgSeq;
+ }
+}
+
+// XFunctionDescriptions
+
+uno::Sequence<beans::PropertyValue> SAL_CALL ScFunctionListObj::getById( sal_Int32 nId )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList();
+ if ( pFuncList )
+ {
+ USHORT nCount = (USHORT)pFuncList->GetCount();
+ for (USHORT nIndex=0; nIndex<nCount; nIndex++)
+ {
+ const ScFuncDesc* pDesc = pFuncList->GetFunction(nIndex);
+ if ( pDesc && pDesc->nFIndex == nId )
+ {
+ uno::Sequence<beans::PropertyValue> aSeq( SC_FUNCDESC_PROPCOUNT );
+ lcl_FillSequence( aSeq, *pDesc );
+ return aSeq;
+ }
+ }
+ }
+ return uno::Sequence<beans::PropertyValue>(0);
+}
+
+// XNameAccess
+
+uno::Any SAL_CALL ScFunctionListObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameStr = aName;
+ const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList();
+ if ( pFuncList )
+ {
+ USHORT nCount = (USHORT)pFuncList->GetCount();
+ for (USHORT nIndex=0; nIndex<nCount; nIndex++)
+ {
+ const ScFuncDesc* pDesc = pFuncList->GetFunction(nIndex);
+ //! Case-insensitiv ???
+ if ( pDesc && pDesc->pFuncName && aNameStr == *pDesc->pFuncName )
+ {
+ uno::Sequence<beans::PropertyValue> aSeq( SC_FUNCDESC_PROPCOUNT );
+ lcl_FillSequence( aSeq, *pDesc );
+ uno::Any aAny;
+ aAny <<= aSeq;
+ return aAny;
+ }
+ }
+ }
+ return uno::Any();
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScFunctionListObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = 0;
+ const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList();
+ if ( pFuncList )
+ nCount = (USHORT)pFuncList->GetCount();
+ return nCount;
+}
+
+uno::Any SAL_CALL ScFunctionListObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList();
+ if ( pFuncList && nIndex >= 0 && nIndex < pFuncList->GetCount() )
+ {
+ const ScFuncDesc* pDesc = pFuncList->GetFunction(nIndex);
+ if ( pDesc )
+ {
+ uno::Sequence<beans::PropertyValue> aSeq( SC_FUNCDESC_PROPCOUNT );
+ lcl_FillSequence( aSeq, *pDesc );
+ uno::Any aAny;
+ aAny <<= aSeq;
+ return aAny;
+ }
+ }
+ return uno::Any();
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScFunctionListObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XElementAccess
+
+uno::Type SAL_CALL ScFunctionListObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Sequence<beans::PropertyValue>*)0);
+}
+
+sal_Bool SAL_CALL ScFunctionListObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() > 0 );
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScFunctionListObj::getElementNames() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList();
+ if ( pFuncList )
+ {
+ USHORT nCount = (USHORT)pFuncList->GetCount();
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+ for (USHORT nIndex=0; nIndex<nCount; nIndex++)
+ {
+ const ScFuncDesc* pDesc = pFuncList->GetFunction(nIndex);
+ if ( pDesc && pDesc->pFuncName )
+ pAry[nIndex] = *pDesc->pFuncName;
+ }
+ return aSeq;
+ }
+ return uno::Sequence<rtl::OUString>(0);
+}
+
+sal_Bool SAL_CALL ScFunctionListObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameStr = aName;
+ const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList();
+ if ( pFuncList )
+ {
+ USHORT nCount = (USHORT)pFuncList->GetCount();
+ for (USHORT nIndex=0; nIndex<nCount; nIndex++)
+ {
+ const ScFuncDesc* pDesc = pFuncList->GetFunction(nIndex);
+ //! Case-insensitiv ???
+ if ( pDesc && pDesc->pFuncName && aNameStr == *pDesc->pFuncName )
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+
+
+
+
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
new file mode 100644
index 000000000000..6932ce848871
--- /dev/null
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -0,0 +1,7281 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellsuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "scitems.hxx"
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <svx/algitem.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/brshitem.hxx>
+#include <svx/editeng.hxx>
+#include <svx/flditem.hxx>
+#include <svx/fmdpage.hxx>
+#include <svx/langitem.hxx>
+#include <svx/linkmgr.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/unomid.hxx>
+#include <svx/unoprnms.hxx>
+#include <svx/unotext.hxx>
+#include <sfx2/bindings.hxx>
+#include <sch/schdll.hxx> // SchMemChart
+#include <sch/memchrt.hxx>
+#include <svtools/zforlist.hxx>
+#include <svtools/zformat.hxx>
+#include <rtl/uuid.h>
+#include <float.h> // DBL_MIN
+
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/util/CellProtection.hpp>
+#include <com/sun/star/table/CellHoriJustify.hpp>
+#include <com/sun/star/table/CellOrientation.hpp>
+#include <com/sun/star/table/CellVertJustify.hpp>
+#include <com/sun/star/table/ShadowFormat.hpp>
+#include <com/sun/star/table/TableBorder.hpp>
+#include <com/sun/star/sheet/CellFlags.hpp>
+#include <com/sun/star/sheet/FormulaResult.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/text/ControlCharacter.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+
+#include "autoform.hxx"
+#include "cellsuno.hxx"
+#include "cursuno.hxx"
+#include "textuno.hxx"
+#include "editsrc.hxx"
+#include "notesuno.hxx"
+#include "fielduno.hxx"
+#include "docuno.hxx" // ScTableColumnsObj etc
+#include "datauno.hxx"
+#include "dapiuno.hxx"
+#include "chartuno.hxx"
+#include "fmtuno.hxx"
+#include "miscuno.hxx"
+#include "convuno.hxx"
+#include "srchuno.hxx"
+#include "targuno.hxx"
+#include "docsh.hxx"
+#include "markdata.hxx"
+#include "patattr.hxx"
+#include "docpool.hxx"
+#include "docfunc.hxx"
+#include "dbdocfun.hxx"
+#include "olinefun.hxx"
+#include "hints.hxx"
+#include "cell.hxx"
+#include "undocell.hxx"
+#include "undotab.hxx"
+#include "undoblk.hxx" // fuer lcl_ApplyBorder - nach docfunc verschieben!
+#include "stlsheet.hxx"
+#include "dbcolect.hxx"
+#include "attrib.hxx"
+#include "chartarr.hxx"
+#include "chartlis.hxx"
+#include "drwlayer.hxx"
+#include "printfun.hxx"
+#include "prnsave.hxx"
+#include "tablink.hxx"
+#include "dociter.hxx"
+#include "rangeutl.hxx"
+#include "conditio.hxx"
+#include "validat.hxx"
+#include "sc.hrc"
+#include "brdcst.hxx"
+#include "unoguard.hxx"
+#include "cellform.hxx"
+#include "globstr.hrc"
+#include "unonames.hxx"
+#include "styleuno.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+//! ScLinkListener in anderes File verschieben !!!
+
+class ScLinkListener : public SfxListener
+{
+ Link aLink;
+public:
+ ScLinkListener(const Link& rL) : aLink(rL) {}
+ virtual ~ScLinkListener();
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+};
+
+
+class ScNamedEntry
+{
+ String aName;
+ ScRange aRange;
+
+public:
+ ScNamedEntry(const String& rN, const ScRange& rR) :
+ aName(rN), aRange(rR) {}
+
+ const String& GetName() const { return aName; }
+ const ScRange& GetRange() const { return aRange; }
+};
+
+
+//------------------------------------------------------------------------
+
+// Die Namen in den Maps muessen (nach strcmp) sortiert sein!
+//! statt Which-ID 0 special IDs verwenden, und nicht ueber Namen vergleichen !!!!!!!!!
+
+// Left/Right/Top/BottomBorder are mapped directly to the core items,
+// not collected/applied to the borders of a range -> ATTR_BORDER can be used directly
+
+const SfxItemPropertyMap* lcl_GetCellsPropertyMap()
+{
+ static SfxItemPropertyMap aCellsPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCOLOR), ATTR_FONT_COLOR, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_COUTL), ATTR_FONT_CONTOUR, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCROSS), ATTR_FONT_CROSSEDOUT,&getBooleanCppuType(), 0, MID_CROSSED_OUT },
+ {MAP_CHAR_LEN(SC_UNONAME_CFONT), ATTR_FONT, &getCppuType((sal_Int16*)0), 0, MID_FONT_FAMILY },
+ {MAP_CHAR_LEN(SC_UNONAME_CFNAME), ATTR_FONT, &getCppuType((rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
+ {MAP_CHAR_LEN(SC_UNONAME_CHEIGHT), ATTR_FONT_HEIGHT, &getCppuType((float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CLOCAL), ATTR_FONT_LANGUAGE, &getCppuType((lang::Locale*)0), 0, MID_LANG_LOCALE },
+ {MAP_CHAR_LEN(SC_UNONAME_CPOST), ATTR_FONT_POSTURE, &getCppuType((awt::FontSlant*)0), 0, MID_POSTURE },
+ {MAP_CHAR_LEN(SC_UNONAME_CSHADD), ATTR_FONT_SHADOWED, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CUNDER), ATTR_FONT_UNDERLINE,&getCppuType((sal_Int16*)0), 0, MID_UNDERLINE },
+ {MAP_CHAR_LEN(SC_UNONAME_CWEIGHT), ATTR_FONT_WEIGHT, &getCppuType((float*)0), 0, MID_WEIGHT },
+ {MAP_CHAR_LEN(SC_UNONAME_CHCOLHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CHROWHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_ORIENTATION, &getCppuType((table::CellOrientation*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_PBMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PINDENT), ATTR_INDENT, &getCppuType((sal_Int16*)0), 0, 0 }, //! CONVERT_TWIPS
+ {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), 0, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {0,0,0,0}
+ };
+ return aCellsPropertyMap_Impl;
+}
+
+// CellRange enthaelt alle Eintraege von Cells, zusaetzlich eigene Eintraege
+// mit Which-ID 0 (werden nur fuer getPropertySetInfo benoetigt).
+
+const SfxItemPropertyMap* lcl_GetRangePropertyMap()
+{
+ static SfxItemPropertyMap aRangePropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCOLOR), ATTR_FONT_COLOR, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_COUTL), ATTR_FONT_CONTOUR, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCROSS), ATTR_FONT_CROSSEDOUT,&getBooleanCppuType(), 0, MID_CROSSED_OUT },
+ {MAP_CHAR_LEN(SC_UNONAME_CFONT), ATTR_FONT, &getCppuType((sal_Int16*)0), 0, MID_FONT_FAMILY },
+ {MAP_CHAR_LEN(SC_UNONAME_CFNAME), ATTR_FONT, &getCppuType((rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
+ {MAP_CHAR_LEN(SC_UNONAME_CHEIGHT), ATTR_FONT_HEIGHT, &getCppuType((float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CLOCAL), ATTR_FONT_LANGUAGE, &getCppuType((lang::Locale*)0), 0, MID_LANG_LOCALE },
+ {MAP_CHAR_LEN(SC_UNONAME_CPOST), ATTR_FONT_POSTURE, &getCppuType((awt::FontSlant*)0), 0, MID_POSTURE },
+ {MAP_CHAR_LEN(SC_UNONAME_CSHADD), ATTR_FONT_SHADOWED, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CUNDER), ATTR_FONT_UNDERLINE,&getCppuType((sal_Int16*)0), 0, MID_UNDERLINE },
+ {MAP_CHAR_LEN(SC_UNONAME_CWEIGHT), ATTR_FONT_WEIGHT, &getCppuType((float*)0), 0, MID_WEIGHT },
+ {MAP_CHAR_LEN(SC_UNONAME_CHCOLHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CHROWHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_ORIENTATION, &getCppuType((table::CellOrientation*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_PBMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PINDENT), ATTR_INDENT, &getCppuType((sal_Int16*)0), 0, 0 }, //! CONVERT_TWIPS
+ {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_POS), 0, &getCppuType((awt::Point*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_SIZE), 0, &getCppuType((awt::Size*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), 0, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {0,0,0,0}
+ };
+ return aRangePropertyMap_Impl;
+}
+
+// Cell enthaelt alle Eintraege von CellRange, zusaetzlich eigene Eintraege
+// mit Which-ID 0 (werden nur fuer getPropertySetInfo benoetigt).
+
+const SfxItemPropertyMap* lcl_GetCellPropertyMap()
+{
+ static SfxItemPropertyMap aCellPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCOLOR), ATTR_FONT_COLOR, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_COUTL), ATTR_FONT_CONTOUR, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCROSS), ATTR_FONT_CROSSEDOUT,&getBooleanCppuType(), 0, MID_CROSSED_OUT },
+ {MAP_CHAR_LEN(SC_UNONAME_CFONT), ATTR_FONT, &getCppuType((sal_Int16*)0), 0, MID_FONT_FAMILY },
+ {MAP_CHAR_LEN(SC_UNONAME_CFNAME), ATTR_FONT, &getCppuType((rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
+ {MAP_CHAR_LEN(SC_UNONAME_CHEIGHT), ATTR_FONT_HEIGHT, &getCppuType((float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CLOCAL), ATTR_FONT_LANGUAGE, &getCppuType((lang::Locale*)0), 0, MID_LANG_LOCALE },
+ {MAP_CHAR_LEN(SC_UNONAME_CPOST), ATTR_FONT_POSTURE, &getCppuType((awt::FontSlant*)0), 0, MID_POSTURE },
+ {MAP_CHAR_LEN(SC_UNONAME_CSHADD), ATTR_FONT_SHADOWED, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CUNDER), ATTR_FONT_UNDERLINE,&getCppuType((sal_Int16*)0), 0, MID_UNDERLINE },
+ {MAP_CHAR_LEN(SC_UNONAME_CWEIGHT), ATTR_FONT_WEIGHT, &getCppuType((float*)0), 0, MID_WEIGHT },
+ {MAP_CHAR_LEN(SC_UNONAME_CHCOLHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CHROWHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_FORMLOC), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_FORMRT), 0, &getCppuType((table::CellContentType*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_ORIENTATION, &getCppuType((table::CellOrientation*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_PBMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PINDENT), ATTR_INDENT, &getCppuType((sal_Int16*)0), 0, 0 }, //! CONVERT_TWIPS
+ {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_POS), 0, &getCppuType((awt::Point*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_SIZE), 0, &getCppuType((awt::Size*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), 0, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {0,0,0,0}
+ };
+ return aCellPropertyMap_Impl;
+}
+
+// Column und Row enthalten alle Eintraege von CellRange, zusaetzlich eigene Eintraege
+// mit Which-ID 0 (werden nur fuer getPropertySetInfo benoetigt).
+
+const SfxItemPropertyMap* lcl_GetColumnPropertyMap()
+{
+ static SfxItemPropertyMap aColumnPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCOLOR), ATTR_FONT_COLOR, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_COUTL), ATTR_FONT_CONTOUR, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCROSS), ATTR_FONT_CROSSEDOUT,&getBooleanCppuType(), 0, MID_CROSSED_OUT },
+ {MAP_CHAR_LEN(SC_UNONAME_CFONT), ATTR_FONT, &getCppuType((sal_Int16*)0), 0, MID_FONT_FAMILY },
+ {MAP_CHAR_LEN(SC_UNONAME_CFNAME), ATTR_FONT, &getCppuType((rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
+ {MAP_CHAR_LEN(SC_UNONAME_CHEIGHT), ATTR_FONT_HEIGHT, &getCppuType((float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CLOCAL), ATTR_FONT_LANGUAGE, &getCppuType((lang::Locale*)0), 0, MID_LANG_LOCALE },
+ {MAP_CHAR_LEN(SC_UNONAME_CPOST), ATTR_FONT_POSTURE, &getCppuType((awt::FontSlant*)0), 0, MID_POSTURE },
+ {MAP_CHAR_LEN(SC_UNONAME_CSHADD), ATTR_FONT_SHADOWED, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CUNDER), ATTR_FONT_UNDERLINE,&getCppuType((sal_Int16*)0), 0, MID_UNDERLINE },
+ {MAP_CHAR_LEN(SC_UNONAME_CWEIGHT), ATTR_FONT_WEIGHT, &getCppuType((float*)0), 0, MID_WEIGHT },
+ {MAP_CHAR_LEN(SC_UNONAME_CHCOLHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CHROWHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+// {MAP_CHAR_LEN(SC_UNONAME_CELLFILT), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_MANPAGE), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_NEWPAGE), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVIS), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_OWIDTH), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_ORIENTATION, &getCppuType((table::CellOrientation*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_PBMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PINDENT), ATTR_INDENT, &getCppuType((sal_Int16*)0), 0, 0 }, //! CONVERT_TWIPS
+ {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_POS), 0, &getCppuType((awt::Point*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_SIZE), 0, &getCppuType((awt::Size*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), 0, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLWID), 0, &getCppuType((sal_Int32*)0), 0, 0 },
+ {0,0,0,0}
+ };
+ return aColumnPropertyMap_Impl;
+}
+
+const SfxItemPropertyMap* lcl_GetRowPropertyMap()
+{
+ static SfxItemPropertyMap aRowPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCOLOR), ATTR_FONT_COLOR, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_COUTL), ATTR_FONT_CONTOUR, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCROSS), ATTR_FONT_CROSSEDOUT,&getBooleanCppuType(), 0, MID_CROSSED_OUT },
+ {MAP_CHAR_LEN(SC_UNONAME_CFONT), ATTR_FONT, &getCppuType((sal_Int16*)0), 0, MID_FONT_FAMILY },
+ {MAP_CHAR_LEN(SC_UNONAME_CFNAME), ATTR_FONT, &getCppuType((rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
+ {MAP_CHAR_LEN(SC_UNONAME_CHEIGHT), ATTR_FONT_HEIGHT, &getCppuType((float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CLOCAL), ATTR_FONT_LANGUAGE, &getCppuType((lang::Locale*)0), 0, MID_LANG_LOCALE },
+ {MAP_CHAR_LEN(SC_UNONAME_CPOST), ATTR_FONT_POSTURE, &getCppuType((awt::FontSlant*)0), 0, MID_POSTURE },
+ {MAP_CHAR_LEN(SC_UNONAME_CSHADD), ATTR_FONT_SHADOWED, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CUNDER), ATTR_FONT_UNDERLINE,&getCppuType((sal_Int16*)0), 0, MID_UNDERLINE },
+ {MAP_CHAR_LEN(SC_UNONAME_CWEIGHT), ATTR_FONT_WEIGHT, &getCppuType((float*)0), 0, MID_WEIGHT },
+ {MAP_CHAR_LEN(SC_UNONAME_CHCOLHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CHROWHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHGT), 0, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLFILT), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_MANPAGE), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_NEWPAGE), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVIS), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_OHEIGHT), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_ORIENTATION, &getCppuType((table::CellOrientation*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_PBMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PINDENT), ATTR_INDENT, &getCppuType((sal_Int16*)0), 0, 0 }, //! CONVERT_TWIPS
+ {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_POS), 0, &getCppuType((awt::Point*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_SIZE), 0, &getCppuType((awt::Size*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), 0, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {0,0,0,0}
+ };
+ return aRowPropertyMap_Impl;
+}
+
+const SfxItemPropertyMap* lcl_GetSheetPropertyMap()
+{
+ static SfxItemPropertyMap aSheetPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCOLOR), ATTR_FONT_COLOR, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_COUTL), ATTR_FONT_CONTOUR, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCROSS), ATTR_FONT_CROSSEDOUT,&getBooleanCppuType(), 0, MID_CROSSED_OUT },
+ {MAP_CHAR_LEN(SC_UNONAME_CFONT), ATTR_FONT, &getCppuType((sal_Int16*)0), 0, MID_FONT_FAMILY },
+ {MAP_CHAR_LEN(SC_UNONAME_CFNAME), ATTR_FONT, &getCppuType((rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
+ {MAP_CHAR_LEN(SC_UNONAME_CHEIGHT), ATTR_FONT_HEIGHT, &getCppuType((float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CLOCAL), ATTR_FONT_LANGUAGE, &getCppuType((lang::Locale*)0), 0, MID_LANG_LOCALE },
+ {MAP_CHAR_LEN(SC_UNONAME_CPOST), ATTR_FONT_POSTURE, &getCppuType((awt::FontSlant*)0), 0, MID_POSTURE },
+ {MAP_CHAR_LEN(SC_UNONAME_CSHADD), ATTR_FONT_SHADOWED, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CUNDER), ATTR_FONT_UNDERLINE,&getCppuType((sal_Int16*)0), 0, MID_UNDERLINE },
+ {MAP_CHAR_LEN(SC_UNONAME_CWEIGHT), ATTR_FONT_WEIGHT, &getCppuType((float*)0), 0, MID_WEIGHT },
+ {MAP_CHAR_LEN(SC_UNONAME_CHCOLHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CHROWHDR), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), 0, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVIS), 0, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_LINKDISPBIT), 0, &getCppuType((uno::Reference<awt::XBitmap>*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNO_LINKDISPNAME), 0, &getCppuType((rtl::OUString*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_ORIENTATION, &getCppuType((table::CellOrientation*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_PAGESTL), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_PBMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PINDENT), ATTR_INDENT, &getCppuType((sal_Int16*)0), 0, 0 }, //! CONVERT_TWIPS
+ {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_POS), 0, &getCppuType((awt::Point*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_SIZE), 0, &getCppuType((awt::Size*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), 0, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), 0, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY, &getCppuType((table::CellVertJustify*)0), 0, 0 },
+ {0,0,0,0}
+ };
+ return aSheetPropertyMap_Impl;
+}
+
+const SfxItemPropertyMap* lcl_GetEditPropertyMap()
+{
+ static SfxItemPropertyMap aEditPropertyMap_Impl[] =
+ {
+ SVX_UNOEDIT_CHAR_PROPERTIES,
+ SVX_UNOEDIT_FONT_PROPERTIES,
+ SVX_UNOEDIT_PARA_PROPERTIES,
+ {0,0,0,0}
+ };
+ return aEditPropertyMap_Impl;
+}
+
+
+//------------------------------------------------------------------------
+
+//! diese Funktionen in einen allgemeinen Header verschieben
+inline long TwipsToHMM(long nTwips) { return (nTwips * 127 + 36) / 72; }
+inline long HMMToTwips(long nHMM) { return (nHMM * 72 + 63) / 127; }
+
+//------------------------------------------------------------------------
+
+#define SCCHARPROPERTIES_SERVICE "com.sun.star.style.CharacterProperties"
+#define SCCELLPROPERTIES_SERVICE "com.sun.star.table.CellProperties"
+#define SCCELLRANGE_SERVICE "com.sun.star.table.CellRange"
+#define SCCELL_SERVICE "com.sun.star.table.Cell"
+#define SCSHEETCELLRANGES_SERVICE "com.sun.star.sheet.SheetCellRanges"
+#define SCSHEETCELLRANGE_SERVICE "com.sun.star.sheet.SheetCellRange"
+#define SCSPREADSHEET_SERVICE "com.sun.star.sheet.Spreadsheet"
+#define SCSHEETCELL_SERVICE "com.sun.star.sheet.SheetCell"
+
+SC_SIMPLE_SERVICE_INFO( ScCellFormatsEnumeration, "ScCellFormatsEnumeration", "com.sun.star.sheet.CellFormatRangesEnumeration" )
+SC_SIMPLE_SERVICE_INFO( ScCellFormatsObj, "ScCellFormatsObj", "com.sun.star.sheet.CellFormatRanges" )
+SC_SIMPLE_SERVICE_INFO( ScCellRangesBase, "ScCellRangesBase", "stardiv.unknown" )
+SC_SIMPLE_SERVICE_INFO( ScCellsEnumeration, "ScCellsEnumeration", "com.sun.star.sheet.CellsEnumeration" )
+SC_SIMPLE_SERVICE_INFO( ScCellsObj, "ScCellsObj", "com.sun.star.sheet.Cells" )
+SC_SIMPLE_SERVICE_INFO( ScTableColumnObj, "ScTableColumnObj", "com.sun.star.table.TableColumn" )
+SC_SIMPLE_SERVICE_INFO( ScTableRowObj, "ScTableRowObj", "com.sun.star.table.TableRow" )
+
+//------------------------------------------------------------------------
+
+SV_IMPL_PTRARR( XPropertyChangeListenerArr_Impl, XPropertyChangeListenerPtr );
+SV_IMPL_PTRARR( ScNamedEntryArr_Impl, ScNamedEntryPtr );
+
+//------------------------------------------------------------------------
+
+#ifdef DBG_UTIL
+#define TEST_PROPERTY_MAPS
+#endif
+
+#ifdef TEST_PROPERTY_MAPS
+
+void lcl_TestMap( const SfxItemPropertyMap* pMap )
+{
+ while ( pMap->pName )
+ {
+ const SfxItemPropertyMap* pNext = pMap + 1;
+ if ( pNext->pName )
+ {
+ int nDiff = strcmp( pMap->pName, pNext->pName );
+ if ( nDiff >= 0 )
+ {
+ ByteString aErr("Reihenfolge: ");
+ aErr += pMap->pName;
+ aErr += '/';
+ aErr += pNext->pName;
+ DBG_ERROR( aErr.GetBuffer() );
+ }
+ }
+ pMap = pNext;
+ }
+}
+
+struct ScPropertyTester
+{
+ ScPropertyTester();
+};
+
+ScPropertyTester::ScPropertyTester()
+{
+ lcl_TestMap( lcl_GetCellsPropertyMap() );
+ lcl_TestMap( lcl_GetRangePropertyMap() );
+ lcl_TestMap( lcl_GetCellPropertyMap() );
+ lcl_TestMap( lcl_GetColumnPropertyMap() );
+ lcl_TestMap( lcl_GetRowPropertyMap() );
+ lcl_TestMap( lcl_GetSheetPropertyMap() );
+}
+
+ScPropertyTester aPropertyTester;
+
+#endif
+
+//------------------------------------------------------------------------
+
+//! ScLinkListener in anderes File verschieben !!!
+
+ScLinkListener::~ScLinkListener()
+{
+}
+
+void ScLinkListener::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ aLink.Call( (SfxHint*)&rHint );
+}
+
+//------------------------------------------------------------------------
+
+void lcl_CopyProperties( beans::XPropertySet& rDest, beans::XPropertySet& rSource )
+{
+ uno::Reference<beans::XPropertySetInfo> xInfo = rSource.getPropertySetInfo();
+ if (xInfo.is())
+ {
+ uno::Sequence<beans::Property> aSeq = xInfo->getProperties();
+ const beans::Property* pAry = aSeq.getConstArray();
+ ULONG nCount = aSeq.getLength();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ rtl::OUString aName = pAry[i].Name;
+ rDest.setPropertyValue( aName, rSource.getPropertyValue( aName ) );
+ }
+ }
+}
+
+USHORT lcl_FirstTab( const ScRangeList& rRanges )
+{
+ DBG_ASSERT(rRanges.Count() >= 1, "was fuer Ranges ?!?!");
+ const ScRange* pFirst = rRanges.GetObject(0);
+ if (pFirst)
+ return pFirst->aStart.Tab();
+
+ return 0; // soll nicht sein
+}
+
+BOOL lcl_WholeSheet( const ScRangeList& rRanges )
+{
+ if ( rRanges.Count() == 1 )
+ {
+ ScRange* pRange = rRanges.GetObject(0);
+ if ( pRange && pRange->aStart.Col() == 0 && pRange->aEnd.Col() == MAXCOL &&
+ pRange->aStart.Row() == 0 && pRange->aEnd.Row() == MAXROW )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+
+ScSubTotalFunc lcl_SummaryToSubTotal( sheet::GeneralFunction eSummary )
+{
+ ScSubTotalFunc eSubTotal;
+ switch (eSummary)
+ {
+ case sheet::GeneralFunction_SUM:
+ eSubTotal = SUBTOTAL_FUNC_SUM;
+ break;
+ case sheet::GeneralFunction_COUNT:
+ eSubTotal = SUBTOTAL_FUNC_CNT2;
+ break;
+ case sheet::GeneralFunction_AVERAGE:
+ eSubTotal = SUBTOTAL_FUNC_AVE;
+ break;
+ case sheet::GeneralFunction_MAX:
+ eSubTotal = SUBTOTAL_FUNC_MAX;
+ break;
+ case sheet::GeneralFunction_MIN:
+ eSubTotal = SUBTOTAL_FUNC_MIN;
+ break;
+ case sheet::GeneralFunction_PRODUCT:
+ eSubTotal = SUBTOTAL_FUNC_PROD;
+ break;
+ case sheet::GeneralFunction_COUNTNUMS:
+ eSubTotal = SUBTOTAL_FUNC_CNT;
+ break;
+ case sheet::GeneralFunction_STDEV:
+ eSubTotal = SUBTOTAL_FUNC_STD;
+ break;
+ case sheet::GeneralFunction_STDEVP:
+ eSubTotal = SUBTOTAL_FUNC_STDP;
+ break;
+ case sheet::GeneralFunction_VAR:
+ eSubTotal = SUBTOTAL_FUNC_VAR;
+ break;
+ case sheet::GeneralFunction_VARP:
+ eSubTotal = SUBTOTAL_FUNC_VARP;
+ break;
+
+ case sheet::GeneralFunction_NONE:
+ case sheet::GeneralFunction_AUTO:
+ default:
+ eSubTotal = SUBTOTAL_FUNC_NONE;
+ break;
+ }
+ return eSubTotal;
+}
+
+//------------------------------------------------------------------------
+
+const SvxBorderLine* lcl_GetBorderLine( SvxBorderLine& rLine, const table::BorderLine& rStruct )
+{
+ // Calc braucht Twips, im Uno-Struct sind 1/100mm
+
+ rLine.SetOutWidth( HMMToTwips( rStruct.OuterLineWidth ) );
+ rLine.SetInWidth( HMMToTwips( rStruct.InnerLineWidth ) );
+ rLine.SetDistance( HMMToTwips( rStruct.LineDistance ) );
+ rLine.SetColor( ColorData( rStruct.Color ) );
+
+ if ( rLine.GetOutWidth() || rLine.GetInWidth() || rLine.GetDistance() )
+ return &rLine;
+ else
+ return NULL;
+}
+
+void lcl_FillBoxItems( SvxBoxItem& rOuter, SvxBoxInfoItem& rInner, const table::TableBorder& rBorder )
+{
+ SvxBorderLine aLine;
+ rOuter.SetDistance( HMMToTwips( rBorder.Distance ) );
+ rOuter.SetLine( lcl_GetBorderLine( aLine, rBorder.TopLine ), BOX_LINE_TOP );
+ rOuter.SetLine( lcl_GetBorderLine( aLine, rBorder.BottomLine ), BOX_LINE_BOTTOM );
+ rOuter.SetLine( lcl_GetBorderLine( aLine, rBorder.LeftLine ), BOX_LINE_LEFT );
+ rOuter.SetLine( lcl_GetBorderLine( aLine, rBorder.RightLine ), BOX_LINE_RIGHT );
+ rInner.SetLine( lcl_GetBorderLine( aLine, rBorder.HorizontalLine ), BOXINFO_LINE_HORI );
+ rInner.SetLine( lcl_GetBorderLine( aLine, rBorder.VerticalLine ), BOXINFO_LINE_VERT );
+ rInner.SetValid( VALID_TOP, rBorder.IsTopLineValid );
+ rInner.SetValid( VALID_BOTTOM, rBorder.IsBottomLineValid );
+ rInner.SetValid( VALID_LEFT, rBorder.IsLeftLineValid );
+ rInner.SetValid( VALID_RIGHT, rBorder.IsRightLineValid );
+ rInner.SetValid( VALID_HORI, rBorder.IsHorizontalLineValid );
+ rInner.SetValid( VALID_VERT, rBorder.IsVerticalLineValid );
+ rInner.SetValid( VALID_DISTANCE, rBorder.IsDistanceValid );
+ rInner.SetTable( TRUE );
+}
+
+void lcl_FillBorderLine( table::BorderLine& rStruct, const SvxBorderLine* pLine )
+{
+ if (pLine)
+ {
+ rStruct.Color = pLine->GetColor().GetColor();
+ rStruct.InnerLineWidth = TwipsToHMM( pLine->GetInWidth() );
+ rStruct.OuterLineWidth = TwipsToHMM( pLine->GetOutWidth() );
+ rStruct.LineDistance = TwipsToHMM( pLine->GetDistance() );
+ }
+ else
+ rStruct.Color = rStruct.InnerLineWidth =
+ rStruct.OuterLineWidth = rStruct.LineDistance = 0;
+}
+
+void lcl_FillTableBorder( table::TableBorder& rBorder,
+ const SvxBoxItem& rOuter, const SvxBoxInfoItem& rInner )
+{
+ lcl_FillBorderLine( rBorder.TopLine, rOuter.GetTop() );
+ lcl_FillBorderLine( rBorder.BottomLine, rOuter.GetBottom() );
+ lcl_FillBorderLine( rBorder.LeftLine, rOuter.GetLeft() );
+ lcl_FillBorderLine( rBorder.RightLine, rOuter.GetRight() );
+ lcl_FillBorderLine( rBorder.HorizontalLine, rInner.GetHori() );
+ lcl_FillBorderLine( rBorder.VerticalLine, rInner.GetVert() );
+
+ rBorder.Distance = rOuter.GetDistance();
+ rBorder.IsTopLineValid = rInner.IsValid(VALID_TOP);
+ rBorder.IsBottomLineValid = rInner.IsValid(VALID_BOTTOM);
+ rBorder.IsLeftLineValid = rInner.IsValid(VALID_LEFT);
+ rBorder.IsRightLineValid = rInner.IsValid(VALID_RIGHT);
+ rBorder.IsHorizontalLineValid = rInner.IsValid(VALID_HORI);
+ rBorder.IsVerticalLineValid = rInner.IsValid(VALID_VERT);
+ rBorder.IsDistanceValid = rInner.IsValid(VALID_DISTANCE);
+}
+
+//------------------------------------------------------------------------
+
+//! lcl_ApplyBorder nach docfunc verschieben!
+
+void lcl_ApplyBorder( ScDocShell* pDocShell, const ScRangeList& rRanges,
+ const SvxBoxItem& rOuter, const SvxBoxInfoItem& rInner )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ ULONG nCount = rRanges.Count();
+ ULONG i;
+ for (i=0; i<nCount; i++)
+ {
+ ScRange aRange = *rRanges.GetObject(i);
+ USHORT nTab = aRange.aStart.Tab();
+
+ if ( i==0 )
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+ else
+ pUndoDoc->AddUndoTab( nTab, nTab );
+ pDoc->CopyToDocument( aRange, IDF_ATTRIB, FALSE, pUndoDoc );
+
+ ScMarkData aMark;
+ aMark.SetMarkArea( aRange );
+ aMark.SelectTable( nTab, TRUE );
+
+ pDoc->ApplySelectionFrame( aMark, &rOuter, &rInner );
+ // RowHeight bei Umrandung alleine nicht noetig
+ }
+
+ pDocShell->GetUndoManager()->AddUndoAction(
+ new ScUndoBorder( pDocShell, rRanges, pUndoDoc, rOuter, rInner ) );
+
+ for (i=0; i<nCount; i++)
+ pDocShell->PostPaint( *rRanges.GetObject(i), PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+
+ pDocShell->SetDocumentModified();
+}
+
+//------------------------------------------------------------------------
+
+// Default-ctor fuer SMART_REFLECTION Krempel
+ScCellRangesBase::ScCellRangesBase() :
+ pDocShell( NULL ),
+ aPropSet(lcl_GetCellsPropertyMap()),
+ bChartColAsHdr( FALSE ),
+ bChartRowAsHdr( FALSE ),
+ pCurrentFlat( NULL ),
+ pCurrentDeep( NULL ),
+ pValueListener( NULL ),
+ bValueChangePosted( FALSE )
+{
+}
+
+ScCellRangesBase::ScCellRangesBase(ScDocShell* pDocSh, const ScRange& rR) :
+ pDocShell( pDocSh ),
+ aPropSet(lcl_GetCellsPropertyMap()),
+ bChartColAsHdr( FALSE ),
+ bChartRowAsHdr( FALSE ),
+ pCurrentFlat( NULL ),
+ pCurrentDeep( NULL ),
+ pValueListener( NULL ),
+ bValueChangePosted( FALSE )
+{
+ ScRange aCellRange = rR;
+ aCellRange.Justify();
+ aRanges.Append( aCellRange );
+
+ if (pDocShell) // Null, wenn per createInstance erzeugt...
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScCellRangesBase::ScCellRangesBase(ScDocShell* pDocSh, const ScRangeList& rR) :
+ pDocShell( pDocSh ),
+ aRanges( rR ),
+ aPropSet(lcl_GetCellsPropertyMap()),
+ bChartColAsHdr( FALSE ),
+ bChartRowAsHdr( FALSE ),
+ pCurrentFlat( NULL ),
+ pCurrentDeep( NULL ),
+ pValueListener( NULL ),
+ bValueChangePosted( FALSE )
+{
+ if (pDocShell) // Null, wenn per createInstance erzeugt...
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScCellRangesBase::~ScCellRangesBase()
+{
+ ForgetCurrentAttrs();
+
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+
+ delete pValueListener;
+
+ //! XChartDataChangeEventListener abmelden ??
+ //! (ChartCollection haelt dann auch dieses Objekt fest!)
+}
+
+void ScCellRangesBase::ForgetCurrentAttrs()
+{
+ delete pCurrentFlat;
+ delete pCurrentDeep;
+ pCurrentFlat = NULL;
+ pCurrentDeep = NULL;
+}
+
+const ScPatternAttr* ScCellRangesBase::GetCurrentAttrsFlat()
+{
+ // get and cache direct cell attributes for this object's range
+
+ if ( !pCurrentFlat && pDocShell )
+ {
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pCurrentFlat = pDoc->CreateSelectionPattern( aMark, FALSE );
+ }
+ return pCurrentFlat;
+}
+
+const ScPatternAttr* ScCellRangesBase::GetCurrentAttrsDeep()
+{
+ // get and cache cell attributes (incl. styles) for this object's range
+
+ if ( !pCurrentDeep && pDocShell )
+ {
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pCurrentDeep = pDoc->CreateSelectionPattern( aMark, TRUE );
+ }
+ return pCurrentDeep;
+}
+
+void ScCellRangesBase::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+ if ( aRanges.UpdateReference( rRef.GetMode(), pDocShell->GetDocument(), rRef.GetRange(),
+ rRef.GetDx(), rRef.GetDy(), rRef.GetDz() ) )
+ RefChanged();
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) )
+ {
+ ULONG nId = ((const SfxSimpleHint&)rHint).GetId();
+ if ( nId == SFX_HINT_DYING )
+ {
+ ForgetCurrentAttrs();
+ pDocShell = NULL; // invalid
+ }
+ else if ( nId == SFX_HINT_DATACHANGED )
+ {
+ // document content changed -> forget cached attributes
+ ForgetCurrentAttrs();
+ }
+ }
+}
+
+void ScCellRangesBase::RefChanged()
+{
+ //! XChartDataChangeEventListener anpassen
+
+ //! Test !!!
+
+ if ( pValueListener && aValueListeners.Count() != 0 )
+ {
+ pValueListener->EndListeningAll();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ULONG nCount = aRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ pDoc->StartListeningArea( *aRanges.GetObject(i), pValueListener );
+ }
+ //! Test !!!
+}
+
+ScDocument* ScCellRangesBase::GetDocument() const
+{
+ if (pDocShell)
+ return pDocShell->GetDocument();
+ else
+ return NULL;
+}
+
+void ScCellRangesBase::InitInsertRange(ScDocShell* pDocSh, const ScRange& rR)
+{
+ if ( !pDocShell && pDocSh )
+ {
+ pDocShell = pDocSh;
+
+ ScRange aCellRange = rR;
+ aCellRange.Justify();
+ aRanges.RemoveAll();
+ aRanges.Append( aCellRange );
+
+ pDocShell->GetDocument()->AddUnoObject(*this);
+
+ RefChanged(); // Range im Range-Objekt anpassen
+ }
+}
+
+void ScCellRangesBase::SetNewRange(const ScRange& rNew)
+{
+ ScRange aCellRange = rNew;
+ aCellRange.Justify();
+
+ aRanges.RemoveAll();
+ aRanges.Append( aCellRange );
+ RefChanged();
+}
+
+void ScCellRangesBase::SetNewRanges(const ScRangeList& rNew)
+{
+ aRanges = rNew;
+ RefChanged();
+}
+
+uno::Any SAL_CALL ScCellRangesBase::queryInterface( const uno::Type& rType )
+ throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( beans::XPropertySet )
+ SC_QUERYINTERFACE( beans::XPropertyState )
+ SC_QUERYINTERFACE( sheet::XSheetOperation )
+ SC_QUERYINTERFACE( chart::XChartDataArray )
+ SC_QUERYINTERFACE( chart::XChartData )
+ SC_QUERYINTERFACE( util::XIndent )
+ SC_QUERYINTERFACE( sheet::XCellRangesQuery )
+ SC_QUERYINTERFACE( sheet::XFormulaQuery )
+ SC_QUERYINTERFACE( util::XReplaceable )
+ SC_QUERYINTERFACE( util::XSearchable )
+ SC_QUERYINTERFACE( lang::XServiceInfo )
+ SC_QUERYINTERFACE( lang::XUnoTunnel )
+ SC_QUERYINTERFACE( lang::XTypeProvider )
+
+ return OWeakObject::queryInterface( rType );
+}
+
+void SAL_CALL ScCellRangesBase::acquire() throw(uno::RuntimeException)
+{
+ OWeakObject::acquire();
+}
+
+void SAL_CALL ScCellRangesBase::release() throw(uno::RuntimeException)
+{
+ OWeakObject::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScCellRangesBase::getTypes() throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ aTypes.realloc(11);
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[0] = getCppuType((const uno::Reference<beans::XPropertySet>*)0);
+ pPtr[1] = getCppuType((const uno::Reference<beans::XPropertyState>*)0);
+ pPtr[2] = getCppuType((const uno::Reference<sheet::XSheetOperation>*)0);
+ pPtr[3] = getCppuType((const uno::Reference<chart::XChartDataArray>*)0);
+ pPtr[4] = getCppuType((const uno::Reference<util::XIndent>*)0);
+ pPtr[5] = getCppuType((const uno::Reference<sheet::XCellRangesQuery>*)0);
+ pPtr[6] = getCppuType((const uno::Reference<sheet::XFormulaQuery>*)0);
+ pPtr[7] = getCppuType((const uno::Reference<util::XReplaceable>*)0);
+ pPtr[8] = getCppuType((const uno::Reference<lang::XServiceInfo>*)0);
+ pPtr[9] = getCppuType((const uno::Reference<lang::XUnoTunnel>*)0);
+ pPtr[10]= getCppuType((const uno::Reference<lang::XTypeProvider>*)0);
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScCellRangesBase::getImplementationId()
+ throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+// ---
+
+void ScCellRangesBase::PaintRanges_Impl( USHORT nPart )
+{
+ ULONG nCount = aRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ pDocShell->PostPaint( *aRanges.GetObject(i), nPart );
+}
+
+// XSheetOperation
+
+double SAL_CALL ScCellRangesBase::computeFunction( sheet::GeneralFunction nFunction )
+ throw(uno::Exception, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ aMark.MarkToSimple();
+ if (!aMark.IsMarked())
+ aMark.SetMarkNegative(TRUE); // um Dummy Position angeben zu koennen
+
+ ScAddress aDummy; // wenn nicht Marked, ignoriert wegen Negative
+ double fVal;
+ ScSubTotalFunc eFunc = lcl_SummaryToSubTotal( nFunction );
+ ScDocument* pDoc = pDocShell->GetDocument();
+ if ( !pDoc->GetSelectionFunction( eFunc, aDummy, aMark, fVal ) )
+ {
+ throw uno::RuntimeException(); //! own exception?
+ }
+
+ return fVal;
+}
+
+void SAL_CALL ScCellRangesBase::clearContents( sal_Int32 nContentFlags ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( aRanges.Count() )
+ {
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.DeleteContents( aMark, nContentFlags, TRUE, TRUE );
+ }
+ // sonst ist nichts zu tun
+}
+
+// XPropertyState
+
+USHORT lcl_GetPropertyWhich( const String& rName )
+{
+ // Which-ID des betroffenen Items, auch wenn das Item die Property
+ // nicht alleine behandeln kann
+
+ USHORT nWhich = 0;
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), rName );
+ if ( pMap && pMap->nWID )
+ nWhich = pMap->nWID;
+ else if ( rName.EqualsAscii( SC_UNONAME_TBLBORD ) )
+ nWhich = ATTR_BORDER;
+ else if ( rName.EqualsAscii( SC_UNONAME_CONDFMT ) || rName.EqualsAscii( SC_UNONAME_CONDLOC ) )
+ nWhich = ATTR_CONDITIONAL;
+ else if ( rName.EqualsAscii( SC_UNONAME_VALIDAT ) || rName.EqualsAscii( SC_UNONAME_VALILOC ) )
+ nWhich = ATTR_VALIDDATA;
+ return nWhich;
+}
+
+beans::PropertyState SAL_CALL ScCellRangesBase::getPropertyState( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( aRanges.Count() == 0 )
+ throw uno::RuntimeException();
+
+ beans::PropertyState eRet = beans::PropertyState_DIRECT_VALUE;
+ if ( pDocShell )
+ {
+ String aNameString = aPropertyName;
+ USHORT nWhich = lcl_GetPropertyWhich( aNameString );
+
+ if ( nWhich ) // irgendwie zustandegekommene Which-ID
+ {
+ //! Bei Items, die mehrere Properties enthalten (z.B. Hintergrund)
+ //! wird hier evtl. zu oft "Ambiguous" zurueckgegeben
+
+ // for PropertyState, don't look at styles
+ const ScPatternAttr* pPattern = GetCurrentAttrsFlat();
+ if ( pPattern )
+ {
+ SfxItemState eState = pPattern->GetItemSet().GetItemState( nWhich, FALSE );
+
+ // if no rotate value is set, look at orientation
+ //! also for a fixed value of 0 (in case orientation is ambiguous)?
+ if ( nWhich == ATTR_ROTATE_VALUE && eState == SFX_ITEM_DEFAULT )
+ eState = pPattern->GetItemSet().GetItemState( ATTR_ORIENTATION, FALSE );
+
+ if ( eState == SFX_ITEM_SET )
+ eRet = beans::PropertyState_DIRECT_VALUE;
+ else if ( eState == SFX_ITEM_DEFAULT )
+ eRet = beans::PropertyState_DEFAULT_VALUE;
+ else if ( eState == SFX_ITEM_DONTCARE )
+ eRet = beans::PropertyState_AMBIGUOUS_VALUE;
+ else
+ DBG_ERROR("unbekannter ItemState");
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CHCOLHDR ) || aNameString.EqualsAscii( SC_UNONAME_CHROWHDR ) )
+ eRet = beans::PropertyState_DIRECT_VALUE;
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLSTYL ) )
+ {
+ // a style is always set, there's no default state
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ const ScStyleSheet* pStyle = pDocShell->GetDocument()->GetSelectionStyle(aMark);
+ if (pStyle)
+ eRet = beans::PropertyState_DIRECT_VALUE;
+ else
+ eRet = beans::PropertyState_AMBIGUOUS_VALUE;
+ }
+ }
+
+ return eRet;
+}
+
+uno::Sequence<beans::PropertyState> SAL_CALL ScCellRangesBase::getPropertyStates(
+ const uno::Sequence<rtl::OUString>& aPropertyNames )
+ throw(beans::UnknownPropertyException, uno::RuntimeException)
+{
+ // duemmliche Default-Implementierung: alles einzeln per getPropertyState holen
+ //! sollte optimiert werden!
+
+ ScUnoGuard aGuard;
+ const rtl::OUString* pNames = aPropertyNames.getConstArray();
+ uno::Sequence<beans::PropertyState> aRet(aPropertyNames.getLength());
+ beans::PropertyState* pStates = aRet.getArray();
+ for(INT32 i = 0; i < aPropertyNames.getLength(); i++)
+ pStates[i] = getPropertyState(pNames[i]);
+ return aRet;
+}
+
+void SAL_CALL ScCellRangesBase::setPropertyToDefault( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ String aNameString = aPropertyName;
+ USHORT nWhich = lcl_GetPropertyWhich( aNameString );
+
+ if ( nWhich ) // irgendwie zustandegekommene Which-ID
+ {
+ if ( aRanges.Count() ) // leer = nichts zu tun
+ {
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDocFunc aFunc(*pDocShell);
+
+ //! Bei Items, die mehrere Properties enthalten (z.B. Hintergrund)
+ //! wird hier zuviel zurueckgesetzt
+
+ //! for ATTR_ROTATE_VALUE, also reset ATTR_ORIENTATION?
+
+ USHORT aWIDs[3];
+ aWIDs[0] = nWhich;
+ if ( nWhich == ATTR_VALUE_FORMAT )
+ {
+ aWIDs[1] = ATTR_LANGUAGE_FORMAT; // #67847# language for number formats
+ aWIDs[2] = 0;
+ }
+ else
+ aWIDs[1] = 0;
+ aFunc.ClearItems( aMark, aWIDs, TRUE );
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CHCOLHDR ) )
+ bChartColAsHdr = FALSE;
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CHROWHDR ) )
+ bChartRowAsHdr = FALSE;
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLSTYL ) )
+ {
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.ApplyStyle( aMark, ScGlobal::GetRscString(STR_STYLENAME_STANDARD), TRUE, TRUE );
+ }
+ }
+}
+
+uno::Any SAL_CALL ScCellRangesBase::getPropertyDefault( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ //! mit getPropertyValue zusammenfassen
+
+ ScUnoGuard aGuard;
+ uno::Any aAny;
+
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ String aNameString = aPropertyName;
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ {
+ const ScPatternAttr* pPattern = pDoc->GetDefPattern();
+ if ( pPattern )
+ {
+ const SfxItemSet& rSet = pPattern->GetItemSet();
+
+ switch ( pMap->nWID ) // fuer Item-Spezial-Behandlungen
+ {
+ case ATTR_VALUE_FORMAT:
+ // default has no language set
+ aAny <<= (sal_Int32)( ((const SfxUInt32Item&)rSet.Get(pMap->nWID)).GetValue() );
+ break;
+ case ATTR_INDENT:
+ aAny <<= (sal_Int16)( TwipsToHMM(((const SfxUInt16Item&)
+ rSet.Get(pMap->nWID)).GetValue()) );
+ break;
+ default:
+ aAny = aPropSet.getPropertyValue(aNameString, rSet);
+ }
+ }
+ }
+ else // hier direkt implementierte
+ {
+ if ( aNameString.EqualsAscii( SC_UNONAME_CHCOLHDR ) || aNameString.EqualsAscii( SC_UNONAME_CHROWHDR ) )
+ ScUnoHelpFunctions::SetBoolInAny( aAny, FALSE );
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLSTYL ) )
+ aAny <<= rtl::OUString( ScStyleNameConversion::DisplayToProgrammaticName(
+ ScGlobal::GetRscString(STR_STYLENAME_STANDARD), SFX_STYLE_FAMILY_PARA ) );
+ else if ( aNameString.EqualsAscii( SC_UNONAME_TBLBORD ) )
+ {
+ const ScPatternAttr* pPattern = pDoc->GetDefPattern();
+ if ( pPattern )
+ {
+ table::TableBorder aBorder;
+ lcl_FillTableBorder( aBorder,
+ (const SvxBoxItem&)pPattern->GetItem(ATTR_BORDER),
+ (const SvxBoxInfoItem&)pPattern->GetItem(ATTR_BORDER_INNER) );
+ aAny <<= aBorder;
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CONDFMT ) || aNameString.EqualsAscii( SC_UNONAME_CONDLOC ) )
+ {
+ BOOL bEnglish = ( aNameString.EqualsAscii( SC_UNONAME_CONDFMT ) );
+
+ uno::Reference<sheet::XSheetConditionalEntries> xObj =
+ new ScTableConditionalFormat( pDoc, 0, bEnglish );
+ aAny <<= xObj;
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_VALIDAT ) || aNameString.EqualsAscii( SC_UNONAME_VALILOC ) )
+ {
+ BOOL bEnglish = ( aNameString.EqualsAscii( SC_UNONAME_VALIDAT ) );
+
+ uno::Reference<beans::XPropertySet> xObj =
+ new ScTableValidationObj( pDoc, 0, bEnglish );
+ aAny <<= xObj;
+ }
+ }
+ }
+
+ return aAny;
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScCellRangesBase::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScCellRangesBase::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ String aNameString = aPropertyName;
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ {
+ if ( aRanges.Count() ) // leer = nichts zu tun
+ {
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDocFunc aFunc(*pDocShell);
+
+ // Fuer Teile von zusammengesetzten Items mit mehreren Properties (z.B. Hintergrund)
+ // muss vorher das alte Item aus dem Dokument geholt werden
+ //! Das kann hier aber nicht erkannt werden
+ //! -> eigenes Flag im PropertyMap-Eintrag, oder was ???
+ //! Item direkt von einzelner Position im Bereich holen?
+ // ClearInvalidItems, damit auf jeden Fall ein Item vom richtigen Typ da ist
+
+ ScPatternAttr aPattern( *GetCurrentAttrsDeep() );
+ SfxItemSet& rSet = aPattern.GetItemSet();
+ rSet.ClearInvalidItems();
+
+ USHORT nDontClear = 0;
+
+ switch ( pMap->nWID ) // fuer Item-Spezial-Behandlungen
+ {
+ case ATTR_VALUE_FORMAT:
+ {
+ // #67847# language for number formats
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ ULONG nOldFormat = ((const SfxUInt32Item&)
+ rSet.Get( ATTR_VALUE_FORMAT )).GetValue();
+ LanguageType eOldLang = ((const SvxLanguageItem&)
+ rSet.Get( ATTR_LANGUAGE_FORMAT )).GetLanguage();
+ nOldFormat = pFormatter->
+ GetFormatForLanguageIfBuiltIn( nOldFormat, eOldLang );
+
+ sal_Int32 nIntVal;
+ if ( aValue >>= nIntVal )
+ {
+ ULONG nNewFormat = (ULONG)nIntVal;
+ rSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, nNewFormat ) );
+
+ const SvNumberformat* pNewEntry = pFormatter->GetEntry( nNewFormat );
+ LanguageType eNewLang =
+ pNewEntry ? pNewEntry->GetLanguage() : LANGUAGE_DONTKNOW;
+ if ( eNewLang != eOldLang && eNewLang != LANGUAGE_DONTKNOW )
+ {
+ rSet.Put( SvxLanguageItem( eNewLang, ATTR_LANGUAGE_FORMAT ) );
+
+ // #40606# if only language is changed,
+ // don't touch number format attribute
+ ULONG nNewMod = nNewFormat % SV_COUNTRY_LANGUAGE_OFFSET;
+ if ( nNewMod == ( nOldFormat % SV_COUNTRY_LANGUAGE_OFFSET ) &&
+ nNewMod <= SV_MAX_ANZ_STANDARD_FORMATE )
+ rSet.ClearItem( ATTR_VALUE_FORMAT );
+
+ nDontClear = ATTR_LANGUAGE_FORMAT;
+ }
+ }
+ }
+ break;
+ case ATTR_INDENT:
+ {
+ sal_Int16 nIntVal;
+ if ( aValue >>= nIntVal )
+ rSet.Put( SfxUInt16Item( pMap->nWID, HMMToTwips(nIntVal) ) );
+ }
+ break;
+ case ATTR_ROTATE_VALUE:
+ {
+ sal_Int32 nRotVal;
+ if ( aValue >>= nRotVal )
+ {
+ // stored value is always between 0 and 360 deg.
+ nRotVal %= 36000;
+ if ( nRotVal < 0 )
+ nRotVal += 36000;
+
+ // always set rotation value and orientation
+
+ SvxCellOrientation eOrient = SVX_ORIENTATION_STANDARD;
+ BOOL bSetOrient = TRUE;
+
+ if ( nRotVal == 9000 )
+ eOrient = SVX_ORIENTATION_BOTTOMTOP;
+ else if ( nRotVal == 27000 )
+ eOrient = SVX_ORIENTATION_TOPBOTTOM;
+ else if ( nRotVal == 0 )
+ {
+ // don't overwrite stacked orientation by setting
+ // rotation to 0
+
+ SvxCellOrientation eOld = (SvxCellOrientation)
+ ((const SvxOrientationItem&)rSet.Get(ATTR_ORIENTATION)).
+ GetValue();
+ if ( eOld == SVX_ORIENTATION_STACKED )
+ bSetOrient = FALSE;
+ }
+
+ rSet.Put( SfxInt32Item( ATTR_ROTATE_VALUE, nRotVal ) );
+ if (bSetOrient)
+ {
+ rSet.Put( SvxOrientationItem( eOrient, ATTR_ORIENTATION ) );
+ nDontClear = ATTR_ORIENTATION;
+ }
+ }
+ }
+ break;
+ default:
+ aPropSet.setPropertyValue(aNameString, aValue, rSet);
+ }
+
+ // alle anderen Items muessen aber wieder raus...
+ //! oder neues Pattern, nur das betroffene Item putten?
+ for (USHORT nWhich = ATTR_PATTERN_START; nWhich <= ATTR_PATTERN_END; nWhich++)
+ if ( nWhich != pMap->nWID && nWhich != nDontClear )
+ rSet.ClearItem(nWhich);
+
+ aFunc.ApplyAttributes( aMark, aPattern, TRUE, TRUE );
+ }
+ }
+ else // hier direkt implementierte
+ {
+ // Chart-Header Flags werden nur an diesem Objekt gesetzt,
+ // nicht im Dokument gespeichert
+
+ if ( aNameString.EqualsAscii( SC_UNONAME_CHCOLHDR ) )
+ bChartColAsHdr = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CHROWHDR ) )
+ bChartRowAsHdr = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLSTYL ) )
+ {
+ rtl::OUString aStrVal;
+ aValue >>= aStrVal;
+ String aString = ScStyleNameConversion::ProgrammaticToDisplayName(
+ aStrVal, SFX_STYLE_FAMILY_PARA );
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.ApplyStyle( aMark, aString, TRUE, TRUE );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_TBLBORD ) )
+ {
+ table::TableBorder aBorder;
+ if ( aRanges.Count() && ( aValue >>= aBorder ) ) // leer = nichts zu tun
+ {
+ SvxBoxItem aOuter(ATTR_BORDER);
+ SvxBoxInfoItem aInner(ATTR_BORDER_INNER);
+ lcl_FillBoxItems( aOuter, aInner, aBorder );
+
+ lcl_ApplyBorder( pDocShell, aRanges, aOuter, aInner ); //! docfunc
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CONDFMT ) || aNameString.EqualsAscii( SC_UNONAME_CONDLOC ) )
+ {
+ BOOL bEnglish = ( aNameString.EqualsAscii( SC_UNONAME_CONDFMT ) );
+
+ uno::Reference<sheet::XSheetConditionalEntries> xInterface;
+ if ( aRanges.Count() && ( aValue >>= xInterface ) ) // leer = nichts zu tun
+ {
+ ScTableConditionalFormat* pFormat =
+ ScTableConditionalFormat::getImplementation( xInterface );
+ if (pFormat)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScConditionalFormat aNew( 0, pDoc ); // Index wird beim Einfuegen gesetzt
+ pFormat->FillFormat( aNew, pDoc, bEnglish );
+ ULONG nIndex = pDoc->AddCondFormat( aNew );
+
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ ScDocFunc aFunc(*pDocShell);
+
+ ScPatternAttr aPattern( pDoc->GetPool() );
+ aPattern.GetItemSet().Put( SfxUInt32Item( ATTR_CONDITIONAL, nIndex ) );
+ aFunc.ApplyAttributes( aMark, aPattern, TRUE, TRUE );
+ }
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_VALIDAT ) || aNameString.EqualsAscii( SC_UNONAME_VALILOC ) )
+ {
+ BOOL bEnglish = ( aNameString.EqualsAscii( SC_UNONAME_VALIDAT ) );
+
+ uno::Reference<beans::XPropertySet> xInterface;
+ if ( aRanges.Count() && ( aValue >>= xInterface ) ) // leer = nichts zu tun
+ {
+ ScTableValidationObj* pValidObj =
+ ScTableValidationObj::getImplementation( xInterface );
+ if (pValidObj)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScValidationData* pNewData =
+ pValidObj->CreateValidationData( pDoc, bEnglish );
+ ULONG nIndex = pDoc->AddValidationEntry( *pNewData );
+ delete pNewData;
+
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ ScDocFunc aFunc(*pDocShell);
+
+ ScPatternAttr aPattern( pDoc->GetPool() );
+ aPattern.GetItemSet().Put( SfxUInt32Item( ATTR_VALIDDATA, nIndex ) );
+ aFunc.ApplyAttributes( aMark, aPattern, TRUE, TRUE );
+ }
+ }
+ }
+ }
+ }
+}
+
+uno::Any SAL_CALL ScCellRangesBase::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( aRanges.Count() == 0 )
+ throw uno::RuntimeException();
+
+ uno::Any aAny;
+ if ( pDocShell )
+ {
+ String aNameString = aPropertyName;
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ {
+ const ScPatternAttr* pPattern = GetCurrentAttrsDeep();
+ if ( pPattern )
+ {
+ // Dontcare durch Default ersetzen, damit man immer eine Reflection hat
+ SfxItemSet aDataSet( pPattern->GetItemSet() );
+ aDataSet.ClearInvalidItems();
+
+ switch ( pMap->nWID ) // fuer Item-Spezial-Behandlungen
+ {
+ case ATTR_VALUE_FORMAT:
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ULONG nOldFormat = ((const SfxUInt32Item&)
+ aDataSet.Get( ATTR_VALUE_FORMAT )).GetValue();
+ LanguageType eOldLang = ((const SvxLanguageItem&)
+ aDataSet.Get( ATTR_LANGUAGE_FORMAT )).GetLanguage();
+ nOldFormat = pDoc->GetFormatTable()->
+ GetFormatForLanguageIfBuiltIn( nOldFormat, eOldLang );
+ aAny <<= (sal_Int32)( nOldFormat );
+ }
+ break;
+ case ATTR_INDENT:
+ aAny <<= (sal_Int16)( TwipsToHMM(((const SfxUInt16Item&)
+ aDataSet.Get(pMap->nWID)).GetValue()) );
+ break;
+ case ATTR_ROTATE_VALUE:
+ {
+ // if value is 0 and orientation topbottom or bottomtop,
+ // adjust value
+
+ sal_Int32 nRotVal = ((const SfxInt32Item&)
+ aDataSet.Get(ATTR_ROTATE_VALUE)).GetValue();
+ if ( nRotVal == 0 )
+ {
+ SvxCellOrientation eOrient = (SvxCellOrientation)
+ ((const SvxOrientationItem&)aDataSet.Get(ATTR_ORIENTATION)).
+ GetValue();
+ if ( eOrient == SVX_ORIENTATION_BOTTOMTOP )
+ nRotVal = 9000;
+ else if ( eOrient == SVX_ORIENTATION_TOPBOTTOM )
+ nRotVal = 27000;
+ }
+ aAny <<= nRotVal;
+ }
+ break;
+ default:
+ aAny = aPropSet.getPropertyValue(aNameString, aDataSet);
+ }
+ }
+ }
+ else // hier direkt implementierte
+ {
+ if ( aNameString.EqualsAscii( SC_UNONAME_CHCOLHDR ) )
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bChartColAsHdr );
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CHROWHDR ) )
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bChartRowAsHdr );
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLSTYL ) )
+ {
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ String aStyleName;
+ const ScStyleSheet* pStyle = pDocShell->GetDocument()->GetSelectionStyle(aMark);
+ if (pStyle)
+ aStyleName = pStyle->GetName();
+ aAny <<= rtl::OUString( ScStyleNameConversion::DisplayToProgrammaticName(
+ aStyleName, SFX_STYLE_FAMILY_PARA ) );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_TBLBORD ) )
+ {
+ //! alle Ranges durchgehen
+ const ScRange* pFirst = aRanges.GetObject(0);
+ if (pFirst)
+ {
+ SvxBoxItem aOuter(ATTR_BORDER);
+ SvxBoxInfoItem aInner(ATTR_BORDER_INNER);
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScMarkData aMark;
+ aMark.SetMarkArea( *pFirst );
+ aMark.SelectTable( pFirst->aStart.Tab(), TRUE );
+ pDoc->GetSelectionFrame( aMark, aOuter, aInner );
+
+ table::TableBorder aBorder;
+ lcl_FillTableBorder( aBorder, aOuter, aInner );
+ aAny <<= aBorder;
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CONDFMT ) || aNameString.EqualsAscii( SC_UNONAME_CONDLOC ) )
+ {
+ BOOL bEnglish = ( aNameString.EqualsAscii( SC_UNONAME_CONDFMT ) );
+
+ const ScPatternAttr* pPattern = GetCurrentAttrsDeep();
+ if ( pPattern )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ULONG nIndex = ((const SfxUInt32Item&)
+ pPattern->GetItem(ATTR_CONDITIONAL)).GetValue();
+ uno::Reference<sheet::XSheetConditionalEntries> xObj =
+ new ScTableConditionalFormat( pDoc, nIndex, bEnglish );
+ aAny <<= xObj;
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_VALIDAT ) || aNameString.EqualsAscii( SC_UNONAME_VALILOC ) )
+ {
+ BOOL bEnglish = ( aNameString.EqualsAscii( SC_UNONAME_VALIDAT ) );
+
+ const ScPatternAttr* pPattern = GetCurrentAttrsDeep();
+ if ( pPattern )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ULONG nIndex = ((const SfxUInt32Item&)
+ pPattern->GetItem(ATTR_VALIDDATA)).GetValue();
+ uno::Reference<beans::XPropertySet> xObj =
+ new ScTableValidationObj( pDoc, nIndex, bEnglish );
+ aAny <<= xObj;
+ }
+ }
+ }
+ }
+
+ return aAny;
+}
+
+void SAL_CALL ScCellRangesBase::addPropertyChangeListener( const rtl::OUString& aPropertyName,
+ const uno::Reference<beans::XPropertyChangeListener>& aListener)
+ throw(beans::UnknownPropertyException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( aRanges.Count() == 0 )
+ throw uno::RuntimeException();
+
+ //! Test !!!!!
+ if (String(aPropertyName).EqualsAscii( "Test" ))
+ {
+ uno::Reference<beans::XPropertyChangeListener> *pObj =
+ new uno::Reference<beans::XPropertyChangeListener>( aListener );
+ aValueListeners.Insert( pObj, aValueListeners.Count() );
+
+ if ( aValueListeners.Count() == 1 )
+ {
+ if (!pValueListener)
+ pValueListener = new ScLinkListener( LINK( this, ScCellRangesBase, ValueListenerHdl ) );
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ULONG nCount = aRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ pDoc->StartListeningArea( *aRanges.GetObject(i), pValueListener );
+
+ acquire(); // nicht verlieren (eine Ref fuer alle Listener)
+ }
+
+ return;
+ }
+ //! Test !!!!!
+
+ DBG_ERROR("not implemented");
+}
+
+void SAL_CALL ScCellRangesBase::removePropertyChangeListener( const rtl::OUString& aPropertyName,
+ const uno::Reference<beans::XPropertyChangeListener>& aListener)
+ throw(beans::UnknownPropertyException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( aRanges.Count() == 0 )
+ throw uno::RuntimeException();
+
+ //! Test !!!!!
+ if (String(aPropertyName).EqualsAscii( "Test" ))
+ {
+ acquire(); // falls fuer Listener die letzte Ref existiert - wird unten freigegeben
+
+ USHORT nCount = aValueListeners.Count();
+ for ( USHORT n=nCount; n--; )
+ {
+ uno::Reference<beans::XPropertyChangeListener> *pObj = aValueListeners[n];
+ if ( *pObj == aListener )
+ {
+ aValueListeners.DeleteAndDestroy( n );
+
+ if ( aValueListeners.Count() == 0 )
+ {
+ if (pValueListener)
+ pValueListener->EndListeningAll();
+
+ release(); // Listener-Ref freigeben
+ }
+
+ break;
+ }
+ }
+
+ release(); // damit kann dieses Objekt geloescht werden
+ return;
+ }
+ //! Test !!!!!
+
+ DBG_ERROR("not implemented");
+}
+
+void SAL_CALL ScCellRangesBase::addVetoableChangeListener( const rtl::OUString&,
+ const uno::Reference<beans::XVetoableChangeListener>&)
+ throw(beans::UnknownPropertyException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+void SAL_CALL ScCellRangesBase::removeVetoableChangeListener( const rtl::OUString&,
+ const uno::Reference<beans::XVetoableChangeListener>&)
+ throw(beans::UnknownPropertyException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+//! Test !!!
+
+IMPL_LINK( ScCellRangesBase, ValueListenerHdl, SfxHint*, pHint )
+{
+ if ( pDocShell && pHint && pHint->ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint*)pHint)->GetId() & (SC_HINT_DATACHANGED | SC_HINT_DYING) )
+ {
+ // nicht doppelt notifien, wenn sich mehrere Formeln im Bereich aendern...
+
+ if ( aValueListeners.Count() && !bValueChangePosted )
+ {
+ // Die Listener koennen nur asynchron benachrichtigt werden, weil im
+ // Formel-Broadcast auf keinen Fall Reschedule gerufen werden darf
+
+ beans::PropertyChangeEvent* pEvent = new beans::PropertyChangeEvent;
+ pEvent->Source = (cppu::OWeakObject*)this;
+ pEvent->PropertyName = rtl::OUString::createFromAscii( "Test" );
+ pEvent->Further = FALSE;
+ pEvent->PropertyHandle = -1;
+ pEvent->OldValue = uno::Any();
+ pEvent->NewValue = uno::Any();
+
+ // Die Ref im Event-Objekt haelt dieses Objekt fest
+ // Das Event-Objekt wird im Link-Handler geloescht
+
+ bValueChangePosted = TRUE;
+ Application::PostUserEvent( LINK( this, ScCellRangesBase, ValueChanged ), pEvent );
+ }
+ }
+ return 0;
+}
+
+// ValueChanged wird asynchron gerufen
+
+IMPL_LINK( ScCellRangesBase, ValueChanged, beans::PropertyChangeEvent*, pEvent )
+{
+ if ( pEvent )
+ {
+ if ( pDocShell )
+ for ( USHORT n=0; n<aValueListeners.Count(); n++ )
+ (*aValueListeners[n])->propertyChange( *pEvent );
+
+ bValueChangePosted = FALSE;
+
+ delete pEvent; // damit kann auch dieses Objekt geloescht werden
+ }
+ return 0;
+}
+
+//! Test !!!!!
+
+// XIndent
+
+void SAL_CALL ScCellRangesBase::decrementIndent() throw(::com::sun::star::uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell && aRanges.Count() ) // leer = nichts zu tun
+ {
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.ChangeIndent( aMark, FALSE, TRUE );
+ }
+}
+
+void SAL_CALL ScCellRangesBase::incrementIndent() throw(::com::sun::star::uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell && aRanges.Count() ) // leer = nichts zu tun
+ {
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.ChangeIndent( aMark, TRUE, TRUE );
+ }
+}
+
+// XChartData
+
+SchMemChart* ScCellRangesBase::CreateMemChart_Impl() const
+{
+ if ( pDocShell && aRanges.Count() )
+ {
+ ScRangeListRef xChartRanges;
+ if ( aRanges.Count() == 1 )
+ {
+ // ganze Tabelle sinnvoll begrenzen (auf belegten Datenbereich)
+ // (nur hier, Listener werden auf den ganzen Bereich angemeldet)
+ //! direkt testen, ob es ein ScTableSheetObj ist?
+
+ ScRange* pRange = aRanges.GetObject(0);
+ if ( pRange->aStart.Col() == 0 && pRange->aEnd.Col() == MAXCOL &&
+ pRange->aStart.Row() == 0 && pRange->aEnd.Row() == MAXROW )
+ {
+ USHORT nTab = pRange->aStart.Tab();
+
+ USHORT nStartX, nStartY; // Anfang holen
+ if (!pDocShell->GetDocument()->GetDataStart( nTab, nStartX, nStartY ))
+ nStartX = nStartY = 0;
+
+ USHORT nEndX, nEndY; // Ende holen
+ if (!pDocShell->GetDocument()->GetTableArea( nTab, nEndX, nEndY ))
+ nEndX = nEndY = 0;
+
+ xChartRanges = new ScRangeList;
+ xChartRanges->Append( ScRange( nStartX, nStartY, nTab, nEndX, nEndY, nTab ) );
+ }
+ }
+ if (!xChartRanges.Is()) // sonst Ranges direkt uebernehmen
+ xChartRanges = new ScRangeList(aRanges);
+ ScChartArray aArr( pDocShell->GetDocument(), xChartRanges, String() );
+
+ // RowAsHdr = ColHeaders und umgekehrt
+ aArr.SetHeaders( bChartRowAsHdr, bChartColAsHdr );
+
+ return aArr.CreateMemChart();
+ }
+ return NULL;
+}
+
+uno::Sequence< uno::Sequence<double> > SAL_CALL ScCellRangesBase::getData()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SchMemChart* pMemChart = CreateMemChart_Impl();
+ if ( pMemChart )
+ {
+ short nColCount = pMemChart->GetColCount();
+ short nRowCount = pMemChart->GetRowCount();
+
+ uno::Sequence< uno::Sequence<double> > aRowSeq( nRowCount );
+ uno::Sequence<double>* pRowAry = aRowSeq.getArray();
+ for (short nRow = 0; nRow < nRowCount; nRow++)
+ {
+ uno::Sequence<double> aColSeq( nColCount );
+ double* pColAry = aColSeq.getArray();
+ for (short nCol = 0; nCol < nColCount; nCol++)
+ pColAry[nCol] = pMemChart->GetData( nCol, nRow );
+
+ pRowAry[nRow] = aColSeq;
+ }
+
+ delete pMemChart;
+ return aRowSeq;
+ }
+
+ return uno::Sequence< uno::Sequence<double> >(0);
+}
+
+void SAL_CALL ScCellRangesBase::setData( const uno::Sequence< uno::Sequence<double> >& aData )
+ throw(uno::RuntimeException)
+{
+ //! ist das ernst gemeint?
+ DBG_ERROR("not implemented");
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScCellRangesBase::getRowDescriptions()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SchMemChart* pMemChart = CreateMemChart_Impl();
+ if ( pMemChart )
+ {
+ short nRowCount = pMemChart->GetRowCount();
+ uno::Sequence<rtl::OUString> aSeq( nRowCount );
+ rtl::OUString* pAry = aSeq.getArray();
+ for (short nRow = 0; nRow < nRowCount; nRow++)
+ pAry[nRow] = pMemChart->GetRowText(nRow);
+
+ delete pMemChart;
+ return aSeq;
+ }
+ return uno::Sequence<rtl::OUString>(0);
+}
+
+void SAL_CALL ScCellRangesBase::setRowDescriptions(
+ const uno::Sequence<rtl::OUString>& aRowDescriptions )
+ throw(uno::RuntimeException)
+{
+ //! ist das ernst gemeint?
+ DBG_ERROR("not implemented");
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScCellRangesBase::getColumnDescriptions()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SchMemChart* pMemChart = CreateMemChart_Impl();
+ if ( pMemChart )
+ {
+ short nColCount = pMemChart->GetColCount();
+ uno::Sequence<rtl::OUString> aSeq( nColCount );
+ rtl::OUString* pAry = aSeq.getArray();
+ for (short nCol = 0; nCol < nColCount; nCol++)
+ pAry[nCol] = pMemChart->GetColText(nCol);
+
+ delete pMemChart;
+ return aSeq;
+ }
+ return uno::Sequence<rtl::OUString>(0);
+}
+
+void SAL_CALL ScCellRangesBase::setColumnDescriptions(
+ const uno::Sequence<rtl::OUString>& aColumnDescriptions )
+ throw(uno::RuntimeException)
+{
+ //! ist das ernst gemeint?
+ DBG_ERROR("not implemented");
+}
+
+String lcl_UniqueName( StrCollection& rColl, const String& rPrefix )
+{
+ long nNumber = 1;
+ USHORT nCollCount = rColl.GetCount();
+ while (TRUE)
+ {
+ String aName = rPrefix;
+ aName += String::CreateFromInt32( nNumber );
+ BOOL bFound = FALSE;
+ for (USHORT i=0; i<nCollCount; i++)
+ if ( rColl[i]->GetString() == aName )
+ {
+ bFound = TRUE;
+ break;
+ }
+ if (!bFound)
+ return aName;
+ ++nNumber;
+ }
+}
+
+void SAL_CALL ScCellRangesBase::addChartDataChangeEventListener( const uno::Reference<
+ chart::XChartDataChangeEventListener >& aListener )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell && aRanges.Count() )
+ {
+ //! auf doppelte testen?
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRangeListRef aRangesRef( new ScRangeList(aRanges) );
+ ScChartListenerCollection* pColl = pDoc->GetChartListenerCollection();
+ String aName = lcl_UniqueName( *pColl,
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("__Uno")) );
+ ScChartListener* pListener = new ScChartListener( aName, pDoc, aRangesRef );
+ pListener->SetUno( aListener, this );
+ pColl->Insert( pListener );
+ pListener->StartListeningTo();
+ }
+}
+
+void SAL_CALL ScCellRangesBase::removeChartDataChangeEventListener( const uno::Reference<
+ chart::XChartDataChangeEventListener >& aListener )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell && aRanges.Count() )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScChartListenerCollection* pColl = pDoc->GetChartListenerCollection();
+ pColl->FreeUno( aListener, this );
+ }
+}
+
+double SAL_CALL ScCellRangesBase::getNotANumber() throw(::com::sun::star::uno::RuntimeException)
+{
+ // im ScChartArray wird DBL_MIN verwendet, weil das Chart es so will
+ return DBL_MIN;
+}
+
+sal_Bool SAL_CALL ScCellRangesBase::isNotANumber( double nNumber ) throw(uno::RuntimeException)
+{
+ // im ScChartArray wird DBL_MIN verwendet, weil das Chart es so will
+ return (nNumber == DBL_MIN);
+}
+
+// XCellRangesQuery
+
+uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryVisibleCells()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ //! fuer alle Tabellen getrennt, wenn Markierungen pro Tabelle getrennt sind!
+ USHORT nTab = lcl_FirstTab(aRanges);
+
+ ScMarkData aMarkData;
+ aMarkData.MarkFromRangeList( aRanges, FALSE );
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ for (USHORT nCol=0; nCol<=MAXCOL; nCol++)
+ if (pDoc->GetColFlags(nCol,nTab) & CR_HIDDEN)
+ aMarkData.SetMultiMarkArea( ScRange( nCol,0,nTab, nCol,MAXROW,nTab ), FALSE );
+
+ //! nur bis zur letzten selektierten Zeile testen?
+ for (USHORT nRow=0; nRow<=MAXROW; nRow++)
+ if (pDoc->GetRowFlags(nRow,nTab) & CR_HIDDEN)
+ {
+ USHORT nHiddenCount = pDoc->GetHiddenRowCount( nRow, nTab );
+ DBG_ASSERT(nHiddenCount, "huch?");
+ USHORT nLast = nRow + nHiddenCount - 1;
+ aMarkData.SetMultiMarkArea( ScRange( 0,nRow,nTab, MAXCOL,nLast,nTab ), FALSE );
+ nRow = nLast; // +1 wird hinterher addiert
+ }
+
+ ScRangeList aNewRanges;
+ aMarkData.FillRangeListWithMarks( &aNewRanges, FALSE );
+ return new ScCellRangesObj( pDocShell, aNewRanges );
+ }
+
+ return NULL;
+}
+
+uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryEmptyCells()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScMarkData aMarkData;
+ aMarkData.MarkFromRangeList( aRanges, FALSE );
+
+ // belegte Zellen wegmarkieren
+ ULONG nCount = aRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScRange aRange = *aRanges.GetObject(i);
+
+ ScCellIterator aIter( pDoc, aRange );
+ ScBaseCell* pCell = aIter.GetFirst();
+ while (pCell)
+ {
+ // Notizen zaehlen als nicht-leer
+ if ( pCell->GetCellType() != CELLTYPE_NOTE || pCell->GetNotePtr() )
+ aMarkData.SetMultiMarkArea(
+ ScRange( aIter.GetCol(), aIter.GetRow(), aIter.GetTab() ),
+ FALSE );
+
+ pCell = aIter.GetNext();
+ }
+ }
+
+ ScRangeList aNewRanges;
+ // IsMultiMarked reicht hier nicht (wird beim deselektieren nicht zurueckgesetzt)
+ if (aMarkData.HasAnyMultiMarks())
+ aMarkData.FillRangeListWithMarks( &aNewRanges, FALSE );
+
+ return new ScCellRangesObj( pDocShell, aNewRanges ); // aNewRanges kann leer sein
+ }
+
+ return NULL;
+}
+
+uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryContentCells(
+ sal_Int16 nContentFlags )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScMarkData aMarkData;
+
+ // passende Zellen selektieren
+ ULONG nCount = aRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScRange aRange = *aRanges.GetObject(i);
+
+ ScCellIterator aIter( pDoc, aRange );
+ ScBaseCell* pCell = aIter.GetFirst();
+ while (pCell)
+ {
+ BOOL bAdd = FALSE;
+ if ( pCell->GetNotePtr() && ( nContentFlags & sheet::CellFlags::ANNOTATION ) )
+ bAdd = TRUE;
+ else
+ switch ( pCell->GetCellType() )
+ {
+ case CELLTYPE_STRING:
+ case CELLTYPE_EDIT:
+ if ( nContentFlags & sheet::CellFlags::STRING )
+ bAdd = TRUE;
+ break;
+ case CELLTYPE_FORMULA:
+ if ( nContentFlags & sheet::CellFlags::FORMULA )
+ bAdd = TRUE;
+ break;
+ case CELLTYPE_VALUE:
+ if ( (nContentFlags & (sheet::CellFlags::VALUE|sheet::CellFlags::DATETIME))
+ == (sheet::CellFlags::VALUE|sheet::CellFlags::DATETIME) )
+ bAdd = TRUE;
+ else
+ {
+ // Date/Time Erkennung
+
+ ULONG nIndex = (ULONG)((SfxUInt32Item*)pDoc->GetAttr(
+ aIter.GetCol(), aIter.GetRow(), aIter.GetTab(),
+ ATTR_VALUE_FORMAT ))->GetValue();
+ short nTyp = pDoc->GetFormatTable()->GetType(nIndex);
+ if ((nTyp == NUMBERFORMAT_DATE) || (nTyp == NUMBERFORMAT_TIME) ||
+ (nTyp == NUMBERFORMAT_DATETIME))
+ {
+ if ( nContentFlags & sheet::CellFlags::DATETIME )
+ bAdd = TRUE;
+ }
+ else
+ {
+ if ( nContentFlags & sheet::CellFlags::VALUE )
+ bAdd = TRUE;
+ }
+ }
+ break;
+ }
+
+ if (bAdd)
+ aMarkData.SetMultiMarkArea(
+ ScRange( aIter.GetCol(), aIter.GetRow(), aIter.GetTab() ),
+ TRUE );
+
+ pCell = aIter.GetNext();
+ }
+ }
+
+ ScRangeList aNewRanges;
+ if (aMarkData.IsMultiMarked())
+ aMarkData.FillRangeListWithMarks( &aNewRanges, FALSE );
+
+ return new ScCellRangesObj( pDocShell, aNewRanges ); // aNewRanges kann leer sein
+ }
+
+ return NULL;
+}
+
+uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryFormulaCells(
+ sal_Int32 nResultFlags )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScMarkData aMarkData;
+
+ // passende Zellen selektieren
+ ULONG nCount = aRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScRange aRange = *aRanges.GetObject(i);
+
+ ScCellIterator aIter( pDoc, aRange );
+ ScBaseCell* pCell = aIter.GetFirst();
+ while (pCell)
+ {
+ if (pCell->GetCellType() == CELLTYPE_FORMULA)
+ {
+ ScFormulaCell* pFCell = (ScFormulaCell*)pCell;
+ BOOL bAdd = FALSE;
+ if (pFCell->GetErrCode())
+ {
+ if ( nResultFlags & sheet::FormulaResult::ERROR )
+ bAdd = TRUE;
+ }
+ else if (pFCell->IsValue())
+ {
+ if ( nResultFlags & sheet::FormulaResult::VALUE )
+ bAdd = TRUE;
+ }
+ else // String
+ {
+ if ( nResultFlags & sheet::FormulaResult::STRING )
+ bAdd = TRUE;
+ }
+
+ if (bAdd)
+ aMarkData.SetMultiMarkArea(
+ ScRange( aIter.GetCol(), aIter.GetRow(), aIter.GetTab() ),
+ TRUE );
+ }
+
+ pCell = aIter.GetNext();
+ }
+ }
+
+ ScRangeList aNewRanges;
+ if (aMarkData.IsMultiMarked())
+ aMarkData.FillRangeListWithMarks( &aNewRanges, FALSE );
+
+ return new ScCellRangesObj( pDocShell, aNewRanges ); // aNewRanges kann leer sein
+ }
+
+ return NULL;
+}
+
+uno::Reference<sheet::XSheetCellRanges> ScCellRangesBase::QueryDifferences_Impl(
+ const table::CellAddress& aCompare, BOOL bColumnDiff)
+{
+ if (pDocShell)
+ {
+ ULONG nRangeCount = aRanges.Count();
+ ULONG i;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScMarkData aMarkData;
+
+ USHORT nCmpPos = bColumnDiff ? aCompare.Row : aCompare.Column;
+
+ // zuerst alles selektieren, wo ueberhaupt etwas in der Vergleichsspalte steht
+ // (fuer gleiche Zellen wird die Selektion im zweiten Schritt aufgehoben)
+
+ USHORT nTab = lcl_FirstTab(aRanges); //! fuer alle Tabellen, wenn Markierungen pro Tabelle!
+ ScRange aCmpRange, aCellRange;
+ if (bColumnDiff)
+ aCmpRange = ScRange( 0,nCmpPos,nTab, MAXCOL,nCmpPos,nTab );
+ else
+ aCmpRange = ScRange( nCmpPos,0,nTab, nCmpPos,MAXROW,nTab );
+ ScCellIterator aCmpIter( pDoc, aCmpRange );
+ ScBaseCell* pCmpCell = aCmpIter.GetFirst();
+ while (pCmpCell)
+ {
+ if (pCmpCell->GetCellType() != CELLTYPE_NOTE)
+ {
+ USHORT nCellPos = bColumnDiff ? aCmpIter.GetCol() : aCmpIter.GetRow();
+ if (bColumnDiff)
+ aCellRange = ScRange( nCellPos,0,nTab, nCellPos,MAXROW,nTab );
+ else
+ aCellRange = ScRange( 0,nCellPos,nTab, MAXCOL,nCellPos,nTab );
+
+ for (i=0; i<nRangeCount; i++)
+ {
+ ScRange aRange = *aRanges.GetObject(i);
+ if ( aRange.Intersects( aCellRange ) )
+ {
+ if (bColumnDiff)
+ {
+ aRange.aStart.SetCol(nCellPos);
+ aRange.aEnd.SetCol(nCellPos);
+ }
+ else
+ {
+ aRange.aStart.SetRow(nCellPos);
+ aRange.aEnd.SetRow(nCellPos);
+ }
+ aMarkData.SetMultiMarkArea( aRange );
+ }
+ }
+ }
+ pCmpCell = aCmpIter.GetNext();
+ }
+
+ // alle nichtleeren Zellen mit der Vergleichsspalte vergleichen und entsprechend
+ // selektieren oder aufheben
+
+ ScAddress aCmpAddr;
+ for (i=0; i<nRangeCount; i++)
+ {
+ ScRange aRange = *aRanges.GetObject(i);
+
+ ScCellIterator aIter( pDoc, aRange );
+ ScBaseCell* pCell = aIter.GetFirst();
+ while (pCell)
+ {
+ if (bColumnDiff)
+ aCmpAddr = ScAddress( aIter.GetCol(), nCmpPos, aIter.GetTab() );
+ else
+ aCmpAddr = ScAddress( nCmpPos, aIter.GetRow(), aIter.GetTab() );
+ const ScBaseCell* pCmpCell = pDoc->GetCell( aCmpAddr );
+
+ ScRange aCellRange( aIter.GetCol(), aIter.GetRow(), aIter.GetTab() );
+ if ( !ScBaseCell::CellEqual( pCell, pCmpCell ) )
+ aMarkData.SetMultiMarkArea( aCellRange );
+ else
+ aMarkData.SetMultiMarkArea( aCellRange, FALSE ); // aufheben
+
+ pCell = aIter.GetNext();
+ }
+ }
+
+ ScRangeList aNewRanges;
+ if (aMarkData.IsMultiMarked())
+ aMarkData.FillRangeListWithMarks( &aNewRanges, FALSE );
+
+ return new ScCellRangesObj( pDocShell, aNewRanges ); // aNewRanges kann leer sein
+ }
+ return NULL;
+}
+
+uno::Reference<sheet::XSheetCellRanges > SAL_CALL ScCellRangesBase::queryColumnDifferences(
+ const table::CellAddress& aCompare ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return QueryDifferences_Impl( aCompare, TRUE );
+}
+
+uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryRowDifferences(
+ const table::CellAddress& aCompare ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return QueryDifferences_Impl( aCompare, FALSE );
+}
+
+uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryIntersection(
+ const table::CellRangeAddress& aRange ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRange aMask( aRange.StartColumn, aRange.StartRow, aRange.Sheet,
+ aRange.EndColumn, aRange.EndRow, aRange.Sheet );
+
+ ScRangeList aNew;
+ ULONG nCount = aRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScRange aTemp = *aRanges.GetObject(i);
+ if ( aTemp.Intersects( aMask ) )
+ aNew.Join( ScRange( Max( aTemp.aStart.Col(), aMask.aStart.Col() ),
+ Max( aTemp.aStart.Row(), aMask.aStart.Row() ),
+ Max( aTemp.aStart.Tab(), aMask.aStart.Tab() ),
+ Min( aTemp.aEnd.Col(), aMask.aEnd.Col() ),
+ Min( aTemp.aEnd.Row(), aMask.aEnd.Row() ),
+ Min( aTemp.aEnd.Tab(), aMask.aEnd.Tab() ) ) );
+ }
+
+ return new ScCellRangesObj( pDocShell, aNew ); // kann leer sein
+}
+
+// XFormulaQuery
+
+uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryPrecedents(
+ sal_Bool bRecursive ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScRangeList aNewRanges = aRanges;
+ BOOL bFound;
+ do
+ {
+ bFound = FALSE;
+
+ ScMarkData aMarkData;
+ aMarkData.MarkFromRangeList( aNewRanges, FALSE );
+
+ ULONG nCount = aNewRanges.Count();
+ for (USHORT nR=0; nR<nCount; nR++)
+ {
+ ScRange aRange = *aNewRanges.GetObject(nR);
+ ScCellIterator aIter( pDoc, aRange );
+ ScBaseCell* pCell = aIter.GetFirst();
+ while (pCell)
+ {
+ if ( pCell->GetCellType() == CELLTYPE_FORMULA )
+ {
+ ScFormulaCell* pFCell = (ScFormulaCell*) pCell;
+
+ ScDetectiveRefIter aIter( pFCell );
+ ScTripel aRefStart;
+ ScTripel aRefEnd;
+ while ( aIter.GetNextRef( aRefStart, aRefEnd ) )
+ {
+ ScRange aRefRange( aRefStart, aRefEnd );
+ if ( bRecursive && !bFound && !aMarkData.IsAllMarked( aRefRange ) )
+ bFound = TRUE;
+ aMarkData.SetMultiMarkArea( aRefRange, TRUE );
+ }
+ }
+ pCell = aIter.GetNext();
+ }
+ }
+
+ aMarkData.FillRangeListWithMarks( &aNewRanges, TRUE );
+ }
+ while ( bRecursive && bFound );
+
+ return new ScCellRangesObj( pDocShell, aNewRanges );
+ }
+
+ return NULL;
+}
+
+uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryDependents(
+ sal_Bool bRecursive ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ ScRangeList aNewRanges = aRanges;
+ BOOL bFound;
+ do
+ {
+ bFound = FALSE;
+ ULONG nRangesCount = aNewRanges.Count();
+
+ ScMarkData aMarkData;
+ aMarkData.MarkFromRangeList( aNewRanges, FALSE );
+
+ USHORT nTab = lcl_FirstTab(aNewRanges); //! alle Tabellen
+
+ ScCellIterator aCellIter( pDoc, 0,0, nTab, MAXCOL,MAXROW, nTab );
+ ScBaseCell* pCell = aCellIter.GetFirst();
+ while (pCell)
+ {
+ if (pCell->GetCellType() == CELLTYPE_FORMULA)
+ {
+ BOOL bMark = FALSE;
+ ScDetectiveRefIter aIter( (ScFormulaCell*) pCell );
+ ScTripel aRefStart;
+ ScTripel aRefEnd;
+ while ( aIter.GetNextRef( aRefStart, aRefEnd ) )
+ {
+ ScRange aRefRange( aRefStart, aRefEnd );
+ for (USHORT nR=0; nR<nRangesCount; nR++)
+ {
+ ScRange aRange = *aNewRanges.GetObject(nR);
+ if (aRange.Intersects(aRefRange))
+ bMark = TRUE; // von Teil des Ranges abhaengig
+ }
+ }
+ if (bMark)
+ {
+ ScRange aCellRange( aCellIter.GetCol(),
+ aCellIter.GetRow(),
+ aCellIter.GetTab() );
+ if ( bRecursive && !bFound && !aMarkData.IsAllMarked( aCellRange ) )
+ bFound = TRUE;
+ aMarkData.SetMultiMarkArea( aCellRange, TRUE );
+ }
+ }
+ pCell = aCellIter.GetNext();
+ }
+
+ aMarkData.FillRangeListWithMarks( &aNewRanges, TRUE );
+ }
+ while ( bRecursive && bFound );
+
+ return new ScCellRangesObj( pDocShell, aNewRanges );
+ }
+
+ return NULL;
+}
+
+// XSearchable
+
+uno::Reference<util::XSearchDescriptor> SAL_CALL ScCellRangesBase::createSearchDescriptor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScCellSearchObj;
+}
+
+uno::Reference<container::XIndexAccess> SAL_CALL ScCellRangesBase::findAll(
+ const uno::Reference<util::XSearchDescriptor>& xDesc )
+ throw(uno::RuntimeException)
+{
+ // Wenn nichts gefunden wird, soll Null zurueckgegeben werden (?)
+ uno::Reference<container::XIndexAccess> xRet;
+ if ( pDocShell && xDesc.is() )
+ {
+ ScCellSearchObj* pSearch = ScCellSearchObj::getImplementation( xDesc );
+ if (pSearch)
+ {
+ SvxSearchItem* pSearchItem = pSearch->GetSearchItem();
+ if (pSearchItem)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pSearchItem->SetCommand( SVX_SEARCHCMD_FIND_ALL );
+ // immer nur innerhalb dieses Objekts
+ pSearchItem->SetSelection( !lcl_WholeSheet(aRanges) );
+
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+
+ String aDummyUndo;
+ USHORT nCol = 0, nRow = 0, nTab = 0;
+ BOOL bFound = pDoc->SearchAndReplace( *pSearchItem, nCol, nRow, nTab,
+ aMark, aDummyUndo, NULL );
+ if (bFound)
+ {
+ ScRangeList aNewRanges;
+ aMark.FillRangeListWithMarks( &aNewRanges, TRUE );
+ // bei findAll immer CellRanges, egal wieviel gefunden wurde
+ xRet = new ScCellRangesObj( pDocShell, aNewRanges );
+ }
+ }
+ }
+ }
+ return xRet;
+}
+
+uno::Reference<uno::XInterface> ScCellRangesBase::Find_Impl(
+ const uno::Reference<util::XSearchDescriptor>& xDesc,
+ const ScAddress* pLastPos )
+{
+ uno::Reference<uno::XInterface> xRet;
+ if ( pDocShell && xDesc.is() )
+ {
+ ScCellSearchObj* pSearch = ScCellSearchObj::getImplementation( xDesc );
+ if (pSearch)
+ {
+ SvxSearchItem* pSearchItem = pSearch->GetSearchItem();
+ if (pSearchItem)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pSearchItem->SetCommand( SVX_SEARCHCMD_FIND );
+ // immer nur innerhalb dieses Objekts
+ pSearchItem->SetSelection( !lcl_WholeSheet(aRanges) );
+
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+
+ USHORT nCol, nRow, nTab;
+ if (pLastPos)
+ pLastPos->GetVars( nCol, nRow, nTab );
+ else
+ {
+ nTab = lcl_FirstTab(aRanges); //! mehrere Tabellen?
+ ScDocument::GetSearchAndReplaceStart( *pSearchItem, nCol, nRow );
+ }
+
+ String aDummyUndo;
+ BOOL bFound = pDoc->SearchAndReplace( *pSearchItem, nCol, nRow, nTab,
+ aMark, aDummyUndo, NULL );
+ if (bFound)
+ {
+ ScAddress aFoundPos( nCol, nRow, nTab );
+ xRet = (cppu::OWeakObject*) new ScCellObj( pDocShell, aFoundPos );
+ }
+ }
+ }
+ }
+ return xRet;
+}
+
+uno::Reference<uno::XInterface> SAL_CALL ScCellRangesBase::findFirst(
+ const uno::Reference<util::XSearchDescriptor>& xDesc )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return Find_Impl( xDesc, NULL );
+}
+
+uno::Reference<uno::XInterface> SAL_CALL ScCellRangesBase::findNext(
+ const uno::Reference<uno::XInterface>& xStartAt,
+ const uno::Reference<util::XSearchDescriptor >& xDesc )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( xStartAt.is() )
+ {
+ ScCellRangesBase* pRangesImp = ScCellRangesBase::getImplementation( xStartAt );
+ if ( pRangesImp && pRangesImp->GetDocShell() == pDocShell )
+ {
+ const ScRangeList& rStartRanges = pRangesImp->GetRangeList();
+ if ( rStartRanges.Count() == 1 )
+ {
+ ScAddress aStartPos = rStartRanges.GetObject(0)->aStart;
+ return Find_Impl( xDesc, &aStartPos );
+ }
+ }
+ }
+ return NULL;
+}
+
+// XReplaceable
+
+uno::Reference<util::XReplaceDescriptor> SAL_CALL ScCellRangesBase::createReplaceDescriptor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScCellSearchObj;
+}
+
+sal_Int32 SAL_CALL ScCellRangesBase::replaceAll( const uno::Reference<util::XSearchDescriptor>& xDesc )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ INT32 nReplaced = 0;
+ if ( pDocShell && xDesc.is() )
+ {
+ ScCellSearchObj* pSearch = ScCellSearchObj::getImplementation( xDesc );
+ if (pSearch)
+ {
+ SvxSearchItem* pSearchItem = pSearch->GetSearchItem();
+ if (pSearchItem)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pSearchItem->SetCommand( SVX_SEARCHCMD_REPLACE_ALL );
+ // immer nur innerhalb dieses Objekts
+ pSearchItem->SetSelection( !lcl_WholeSheet(aRanges) );
+
+ ScMarkData aMark;
+ aMark.MarkFromRangeList( aRanges, FALSE );
+ USHORT i;
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ BOOL bProtected = pDocShell->IsReadOnly();
+ for (i=0; i<nTabCount; i++)
+ if ( aMark.GetTableSelect(i) && pDoc->IsTabProtected(i) )
+ bProtected = TRUE;
+ if (bProtected)
+ {
+ //! Exception, oder was?
+ }
+ else
+ {
+ USHORT nTab = aMark.GetFirstSelected(); // bei SearchAndReplace nicht benutzt
+ USHORT nCol = 0, nRow = 0;
+
+ String aUndoStr;
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+ for (i=0; i<nTabCount; i++)
+ if ( aMark.GetTableSelect(i) && i != nTab )
+ pUndoDoc->AddUndoTab( i, i );
+ ScMarkData* pUndoMark = new ScMarkData(aMark);
+
+ BOOL bFound = pDoc->SearchAndReplace( *pSearchItem, nCol, nRow, nTab,
+ aMark, aUndoStr, pUndoDoc );
+ if (bFound)
+ {
+ nReplaced = pUndoDoc->GetCellCount();
+
+ pDocShell->GetUndoManager()->AddUndoAction(
+ new ScUndoReplace( pDocShell, *pUndoMark, nCol, nRow, nTab,
+ aUndoStr, pUndoDoc, pSearchItem ) );
+
+ pDocShell->PostPaintGridAll();
+ pDocShell->SetDocumentModified();
+ }
+ else
+ {
+ delete pUndoDoc;
+ delete pUndoMark;
+ // nReplaced bleibt 0
+ }
+ }
+ }
+ }
+ }
+ return nReplaced;
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScCellRangesBase::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScCellRangesBase::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScCellRangesBase* ScCellRangesBase::getImplementation( const uno::Reference<uno::XInterface> xObj )
+{
+ ScCellRangesBase* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScCellRangesBase*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+ScCellRangesObj::ScCellRangesObj(ScDocShell* pDocSh, const ScRangeList& rR) :
+ ScCellRangesBase( pDocSh, rR )
+{
+}
+
+ScCellRangesObj::~ScCellRangesObj()
+{
+ List aNamedEntries;
+}
+
+void ScCellRangesObj::RefChanged()
+{
+ ScCellRangesBase::RefChanged();
+
+ // nix weiter...
+}
+
+uno::Any SAL_CALL ScCellRangesObj::queryInterface( const uno::Type& rType )
+ throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( sheet::XSheetCellRanges )
+ SC_QUERYINTERFACE( container::XIndexAccess )
+ SC_QUERY_MULTIPLE( container::XElementAccess, container::XIndexAccess )
+ SC_QUERYINTERFACE( container::XEnumerationAccess )
+ SC_QUERYINTERFACE( container::XNameContainer )
+ SC_QUERYINTERFACE( container::XNameReplace )
+ SC_QUERYINTERFACE( container::XNameAccess )
+
+ return ScCellRangesBase::queryInterface( rType );
+}
+
+void SAL_CALL ScCellRangesObj::acquire() throw(uno::RuntimeException)
+{
+ ScCellRangesBase::acquire();
+}
+
+void SAL_CALL ScCellRangesObj::release() throw(uno::RuntimeException)
+{
+ ScCellRangesBase::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScCellRangesObj::getTypes() throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ uno::Sequence<uno::Type> aParentTypes = ScCellRangesBase::getTypes();
+ long nParentLen = aParentTypes.getLength();
+ const uno::Type* pParentPtr = aParentTypes.getConstArray();
+
+ aTypes.realloc( nParentLen + 3 );
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[nParentLen + 0] = getCppuType((const uno::Reference<sheet::XSheetCellRanges>*)0);
+ pPtr[nParentLen + 1] = getCppuType((const uno::Reference<container::XNameContainer>*)0);
+ pPtr[nParentLen + 2] = getCppuType((const uno::Reference<container::XEnumerationAccess>*)0);
+
+ for (long i=0; i<nParentLen; i++)
+ pPtr[i] = pParentPtr[i]; // parent types first
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScCellRangesObj::getImplementationId()
+ throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+// XCellRanges
+
+ScCellRangeObj* ScCellRangesObj::GetObjectByIndex_Impl(USHORT nIndex) const
+{
+ ScDocShell* pDocSh = GetDocShell();
+ const ScRangeList& rRanges = GetRangeList();
+ if ( pDocSh && nIndex < rRanges.Count() )
+ {
+ ScRange aRange = *rRanges.GetObject(nIndex);
+ if ( aRange.aStart == aRange.aEnd )
+ return new ScCellObj( pDocSh, aRange.aStart );
+ else
+ return new ScCellRangeObj( pDocSh, aRange );
+ }
+
+ return NULL; // keine DocShell oder falscher Index
+}
+
+uno::Sequence<table::CellRangeAddress> SAL_CALL ScCellRangesObj::getRangeAddresses()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ const ScRangeList& rRanges = GetRangeList();
+ ULONG nCount = rRanges.Count();
+ if ( pDocSh && nCount )
+ {
+ table::CellRangeAddress aRangeAddress;
+ uno::Sequence<table::CellRangeAddress> aSeq(nCount);
+ table::CellRangeAddress* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScUnoConversion::FillAddress( aRangeAddress, *rRanges.GetObject(i) );
+ pAry[i] = aRangeAddress;
+ }
+ return aSeq;
+ }
+
+ return uno::Sequence<table::CellRangeAddress>(0); // leer ist moeglich
+}
+
+uno::Reference<container::XEnumerationAccess> SAL_CALL ScCellRangesObj::getCells()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ // getCells with empty range list is possible (no exception),
+ // the resulting enumeration just has no elements
+ // (same behaviour as a valid range with no cells)
+ // This is handled in ScCellsEnumeration ctor.
+
+ const ScRangeList& rRanges = GetRangeList();
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ return new ScCellsObj( pDocSh, rRanges );
+ return NULL;
+}
+
+rtl::OUString SAL_CALL ScCellRangesObj::getRangeAddressesAsString()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString;
+ ScDocShell* pDocSh = GetDocShell();
+ const ScRangeList& rRanges = GetRangeList();
+ if (pDocSh)
+ rRanges.Format( aString, SCA_VALID | SCA_TAB_3D, pDocSh->GetDocument() );
+ return aString;
+}
+
+// XNameContainer
+
+void lcl_RemoveNamedEntry( ScNamedEntryArr_Impl& rNamedEntries, const String& rName )
+{
+ USHORT nCount = rNamedEntries.Count();
+ for ( USHORT n=nCount; n--; )
+ if ( rNamedEntries[n]->GetName() == rName )
+ rNamedEntries.DeleteAndDestroy( n );
+}
+
+void SAL_CALL ScCellRangesObj::insertByName( const rtl::OUString& aName, const uno::Any& aElement )
+ throw(lang::IllegalArgumentException, container::ElementExistException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ BOOL bDone = FALSE;
+
+ //! Type of aElement can be some specific interface instead of XInterface
+
+ uno::Reference<uno::XInterface> xInterface;
+ if ( pDocSh && ( aElement >>= xInterface ) )
+ {
+ ScCellRangesBase* pRangesImp = ScCellRangesBase::getImplementation( xInterface );
+ if ( pRangesImp && pRangesImp->GetDocShell() == pDocSh )
+ {
+ ScRangeList aNew = GetRangeList();
+ const ScRangeList& rAddRanges = pRangesImp->GetRangeList();
+ ULONG nAddCount = rAddRanges.Count();
+ for (ULONG i=0; i<nAddCount; i++)
+ aNew.Join( *rAddRanges.GetObject(i) );
+ SetNewRanges(aNew);
+ bDone = TRUE;
+
+ if ( aName.getLength() && nAddCount == 1 )
+ {
+ // if a name is given, also insert into list of named entries
+ // (only possible for a single range)
+
+ String aNamStr = aName;
+
+ // remove old entry with this name
+ lcl_RemoveNamedEntry( aNamedEntries, aNamStr );
+
+ ScNamedEntry* pEntry = new ScNamedEntry( aNamStr, *rAddRanges.GetObject(0) );
+ aNamedEntries.Insert( pEntry, aNamedEntries.Count() );
+ }
+ }
+ }
+
+ if (!bDone)
+ {
+ // invalid element - double names are handled above
+ throw lang::IllegalArgumentException();
+ }
+}
+
+BOOL lcl_FindRangeByName( const ScRangeList& rRanges, ScDocShell* pDocSh,
+ const String& rName, ULONG& rIndex )
+{
+ if (pDocSh)
+ {
+ String aRangeStr;
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ULONG nCount = rRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ rRanges.GetObject(i)->Format( aRangeStr, SCA_VALID | SCA_TAB_3D, pDoc );
+ if ( aRangeStr == rName )
+ {
+ rIndex = i;
+ return TRUE;
+ }
+ }
+ }
+ return FALSE; // nicht gefunden
+}
+
+BOOL lcl_FindRangeOrEntry( const ScNamedEntryArr_Impl& rNamedEntries,
+ const ScRangeList& rRanges, ScDocShell* pDocSh,
+ const String& rName, ScRange& rFound )
+{
+ ULONG nIndex = 0;
+ if ( lcl_FindRangeByName( rRanges, pDocSh, rName, nIndex ) )
+ {
+ rFound = *rRanges.GetObject(nIndex);
+ return TRUE;
+ }
+
+ if ( rNamedEntries.Count() )
+ {
+ for ( USHORT n=0; n<rNamedEntries.Count(); n++ )
+ if ( rNamedEntries[n]->GetName() == rName )
+ {
+ // test if named entry is contained in rRanges
+
+ const ScRange& rComp = rNamedEntries[n]->GetRange();
+ ScMarkData aMarkData;
+ aMarkData.MarkFromRangeList( rRanges, FALSE );
+ if ( aMarkData.IsAllMarked( rComp ) )
+ {
+ rFound = rComp;
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE; // not found
+}
+
+void SAL_CALL ScCellRangesObj::removeByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ String aNameStr = aName;
+ ScDocShell* pDocSh = GetDocShell();
+ const ScRangeList& rRanges = GetRangeList();
+ ULONG nIndex = 0;
+ if ( lcl_FindRangeByName( rRanges, pDocSh, aNameStr, nIndex ) )
+ {
+ // einzelnen Range weglassen
+ ScRangeList aNew;
+ ULONG nCount = rRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ if (i != nIndex)
+ aNew.Append( *rRanges.GetObject(i) );
+ SetNewRanges(aNew);
+ bDone = TRUE;
+ }
+ else if (pDocSh)
+ {
+ // deselect any ranges (parsed or named entry)
+ ScRangeList aDiff;
+ BOOL bValid = ( aDiff.Parse( aNameStr, pDocSh->GetDocument() ) & SCA_VALID ) != 0;
+ if ( !bValid && aNamedEntries.Count() )
+ {
+ USHORT nCount = aNamedEntries.Count();
+ for (USHORT n=0; n<nCount && !bValid; n++)
+ if (aNamedEntries[n]->GetName() == aNameStr)
+ {
+ aDiff.RemoveAll();
+ aDiff.Append( aNamedEntries[n]->GetRange() );
+ bValid = TRUE;
+ }
+ }
+ if ( bValid )
+ {
+ ScMarkData aMarkData;
+ aMarkData.MarkFromRangeList( rRanges, FALSE );
+
+ ULONG nDiffCount = aDiff.Count();
+ for (ULONG i=0; i<nDiffCount; i++)
+ {
+ ScRange* pDiffRange = aDiff.GetObject(i);
+ if (aMarkData.GetTableSelect( pDiffRange->aStart.Tab() ))
+ aMarkData.SetMultiMarkArea( *pDiffRange, FALSE );
+ }
+
+ ScRangeList aNew;
+ aMarkData.FillRangeListWithMarks( &aNew, FALSE );
+ SetNewRanges(aNew);
+
+ bDone = TRUE; //! error if range was not selected before?
+ }
+ }
+
+ if (aNamedEntries.Count())
+ lcl_RemoveNamedEntry( aNamedEntries, aNameStr ); // remove named entry
+
+ if (!bDone)
+ throw container::NoSuchElementException(); // not found
+}
+
+// XNameReplace
+
+void SAL_CALL ScCellRangesObj::replaceByName( const rtl::OUString& aName, const uno::Any& aElement )
+ throw(lang::IllegalArgumentException, container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ //! zusammenfassen?
+ removeByName( aName );
+ insertByName( aName, aElement );
+}
+
+// XNameAccess
+
+uno::Any SAL_CALL ScCellRangesObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Any aRet;
+
+ String aNameStr = aName;
+ ScDocShell* pDocSh = GetDocShell();
+ const ScRangeList& rRanges = GetRangeList();
+ ScRange aRange;
+ if ( lcl_FindRangeOrEntry( aNamedEntries, rRanges, pDocSh, aNameStr, aRange ) )
+ {
+ uno::Reference<table::XCellRange> xRange;
+ if ( aRange.aStart == aRange.aEnd )
+ xRange = new ScCellObj( pDocSh, aRange.aStart );
+ else
+ xRange = new ScCellRangeObj( pDocSh, aRange );
+ aRet <<= xRange;
+ }
+ else
+ throw container::NoSuchElementException();
+ return aRet;
+}
+
+BOOL lcl_FindEntryName( const ScNamedEntryArr_Impl& rNamedEntries,
+ const ScRange& rRange, String& rName )
+{
+ USHORT nCount = rNamedEntries.Count();
+ for (USHORT i=0; i<nCount; i++)
+ if (rNamedEntries[i]->GetRange() == rRange)
+ {
+ rName = rNamedEntries[i]->GetName();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScCellRangesObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ ScDocShell* pDocSh = GetDocShell();
+ const ScRangeList& rRanges = GetRangeList();
+ if (pDocSh)
+ {
+ String aRangeStr;
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ULONG nCount = rRanges.Count();
+
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ // use given name if for exactly this range, otherwise just format
+ ScRange aRange = *rRanges.GetObject(i);
+ if ( !aNamedEntries.Count() || !lcl_FindEntryName( aNamedEntries, aRange, aRangeStr ) )
+ aRange.Format( aRangeStr, SCA_VALID | SCA_TAB_3D, pDoc );
+ pAry[i] = aRangeStr;
+ }
+ return aSeq;
+ }
+ return uno::Sequence<rtl::OUString>(0);
+}
+
+sal_Bool SAL_CALL ScCellRangesObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameStr = aName;
+ ScDocShell* pDocSh = GetDocShell();
+ const ScRangeList& rRanges = GetRangeList();
+ ScRange aRange;
+ return lcl_FindRangeOrEntry( aNamedEntries, rRanges, pDocSh, aNameStr, aRange );
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScCellRangesObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScCellRangesObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ return rRanges.Count();
+}
+
+uno::Any SAL_CALL ScCellRangesObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<table::XCellRange> xRange = GetObjectByIndex_Impl((USHORT)nIndex);
+ uno::Any aAny;
+ if (xRange.is())
+ aAny <<= xRange;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScCellRangesObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<table::XCellRange>*)0);
+}
+
+sal_Bool SAL_CALL ScCellRangesObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ return rRanges.Count() != 0;
+}
+
+// XServiceInfo
+
+rtl::OUString SAL_CALL ScCellRangesObj::getImplementationName() throw(uno::RuntimeException)
+{
+ return rtl::OUString::createFromAscii( "ScCellRangesObj" );
+}
+
+sal_Bool SAL_CALL ScCellRangesObj::supportsService( const rtl::OUString& rServiceName )
+ throw(uno::RuntimeException)
+{
+ String aServiceStr(rServiceName);
+ return aServiceStr.EqualsAscii( SCSHEETCELLRANGES_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCELLPROPERTIES_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCHARPROPERTIES_SERVICE );
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScCellRangesObj::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ uno::Sequence<rtl::OUString> aRet(3);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCSHEETCELLRANGES_SERVICE );
+ pArray[1] = rtl::OUString::createFromAscii( SCCELLPROPERTIES_SERVICE );
+ pArray[2] = rtl::OUString::createFromAscii( SCCHARPROPERTIES_SERVICE );
+ return aRet;
+}
+
+//------------------------------------------------------------------------
+
+// static
+uno::Reference<table::XCellRange> ScCellRangeObj::CreateRangeFromDoc( ScDocument* pDoc, const ScRange& rR )
+{
+ SfxObjectShell* pObjSh = pDoc->GetDocumentShell();
+ if ( pObjSh && pObjSh->ISA(ScDocShell) )
+ return new ScCellRangeObj( (ScDocShell*) pObjSh, rR );
+ return NULL;
+}
+
+//------------------------------------------------------------------------
+
+ScCellRangeObj::ScCellRangeObj(ScDocShell* pDocSh, const ScRange& rR) :
+ ScCellRangesBase( pDocSh, rR ),
+ aRangePropSet( lcl_GetRangePropertyMap() ),
+ aRange( rR )
+{
+ aRange.Justify(); // Anfang / Ende richtig
+}
+
+ScCellRangeObj::~ScCellRangeObj()
+{
+}
+
+void ScCellRangeObj::RefChanged()
+{
+ ScCellRangesBase::RefChanged();
+
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT(rRanges.Count() == 1, "was fuer Ranges ?!?!");
+ const ScRange* pFirst = rRanges.GetObject(0);
+ if (pFirst)
+ {
+ aRange = *pFirst;
+ aRange.Justify();
+ }
+}
+
+uno::Any SAL_CALL ScCellRangeObj::queryInterface( const uno::Type& rType )
+ throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( sheet::XCellRangeAddressable )
+ SC_QUERYINTERFACE( table::XCellRange )
+ SC_QUERYINTERFACE( sheet::XSheetCellRange )
+ SC_QUERYINTERFACE( sheet::XArrayFormulaRange )
+ SC_QUERYINTERFACE( sheet::XMultipleOperation )
+ SC_QUERYINTERFACE( util::XMergeable )
+ SC_QUERYINTERFACE( sheet::XCellSeries )
+ SC_QUERYINTERFACE( table::XAutoFormattable )
+ SC_QUERYINTERFACE( util::XSortable )
+ SC_QUERYINTERFACE( sheet::XSheetFilterableEx )
+ SC_QUERYINTERFACE( sheet::XSheetFilterable )
+ SC_QUERYINTERFACE( sheet::XSubTotalCalculatable )
+ SC_QUERYINTERFACE( table::XColumnRowRange )
+ SC_QUERYINTERFACE( util::XImportable )
+ SC_QUERYINTERFACE( sheet::XCellFormatRangesSupplier )
+
+ return ScCellRangesBase::queryInterface( rType );
+}
+
+void SAL_CALL ScCellRangeObj::acquire() throw(uno::RuntimeException)
+{
+ ScCellRangesBase::acquire();
+}
+
+void SAL_CALL ScCellRangeObj::release() throw(uno::RuntimeException)
+{
+ ScCellRangesBase::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScCellRangeObj::getTypes() throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ uno::Sequence<uno::Type> aParentTypes = ScCellRangesBase::getTypes();
+ long nParentLen = aParentTypes.getLength();
+ const uno::Type* pParentPtr = aParentTypes.getConstArray();
+
+ aTypes.realloc( nParentLen + 13 );
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[nParentLen + 0] = getCppuType((const uno::Reference<sheet::XCellRangeAddressable>*)0);
+ pPtr[nParentLen + 1] = getCppuType((const uno::Reference<sheet::XSheetCellRange>*)0);
+ pPtr[nParentLen + 2] = getCppuType((const uno::Reference<sheet::XArrayFormulaRange>*)0);
+ pPtr[nParentLen + 3] = getCppuType((const uno::Reference<sheet::XMultipleOperation>*)0);
+ pPtr[nParentLen + 4] = getCppuType((const uno::Reference<util::XMergeable>*)0);
+ pPtr[nParentLen + 5] = getCppuType((const uno::Reference<sheet::XCellSeries>*)0);
+ pPtr[nParentLen + 6] = getCppuType((const uno::Reference<table::XAutoFormattable>*)0);
+ pPtr[nParentLen + 7] = getCppuType((const uno::Reference<util::XSortable>*)0);
+ pPtr[nParentLen + 8] = getCppuType((const uno::Reference<sheet::XSheetFilterableEx>*)0);
+ pPtr[nParentLen + 9] = getCppuType((const uno::Reference<sheet::XSubTotalCalculatable>*)0);
+ pPtr[nParentLen +10] = getCppuType((const uno::Reference<table::XColumnRowRange>*)0);
+ pPtr[nParentLen +11] = getCppuType((const uno::Reference<util::XImportable>*)0);
+ pPtr[nParentLen +12] = getCppuType((const uno::Reference<sheet::XCellFormatRangesSupplier>*)0);
+
+ for (long i=0; i<nParentLen; i++)
+ pPtr[i] = pParentPtr[i]; // parent types first
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScCellRangeObj::getImplementationId()
+ throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+// XCellRange
+
+// ColumnCount / RowCount sind weggefallen
+//! werden im Writer fuer Tabellen noch gebraucht ???
+
+uno::Reference<table::XCell> SAL_CALL ScCellRangeObj::getCellByPosition(
+ sal_Int32 nColumn, sal_Int32 nRow )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ if ( nColumn >= 0 && nRow >= 0 )
+ {
+ ScDocShell* pDocSh = GetDocShell();
+ sal_Int32 nPosX = aRange.aStart.Col() + nColumn;
+ sal_Int32 nPosY = aRange.aStart.Row() + nRow;
+
+ if ( pDocSh && nPosX <= aRange.aEnd.Col() && nPosY <= aRange.aEnd.Row() )
+ {
+ ScAddress aNew( nPosX, nPosY, aRange.aStart.Tab() );
+ return new ScCellObj( pDocSh, aNew );
+ }
+ }
+
+ throw uno::RuntimeException();
+ return NULL;
+}
+
+uno::Reference<table::XCellRange> SAL_CALL ScCellRangeObj::getCellRangeByPosition(
+ sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ if ( nLeft >= 0 && nTop >= 0 && nRight >= 0 && nBottom >= 0 )
+ {
+ ScDocShell* pDocSh = GetDocShell();
+ sal_Int32 nStartX = aRange.aStart.Col() + nLeft;
+ sal_Int32 nStartY = aRange.aStart.Row() + nTop;
+ sal_Int32 nEndX = aRange.aStart.Col() + nRight;
+ sal_Int32 nEndY = aRange.aStart.Row() + nBottom;
+
+ if ( pDocSh && nStartX <= nEndX && nEndX <= aRange.aEnd.Col() &&
+ nStartY <= nEndY && nEndY <= aRange.aEnd.Row() )
+ {
+ ScRange aNew( nStartX, nStartY, aRange.aStart.Tab(), nEndX, nEndY, aRange.aEnd.Tab() );
+ return new ScCellRangeObj( pDocSh, aNew );
+ }
+ }
+
+ throw uno::RuntimeException();
+ return NULL;
+}
+
+uno::Reference<table::XCellRange> SAL_CALL ScCellRangeObj::getCellRangeByName(
+ const rtl::OUString& aName ) throw(uno::RuntimeException)
+{
+ // name refers to the whole document (with the range's table as default),
+ // valid only if the range is within this range
+
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = aRange.aStart.Tab();
+
+ ScRange aCellRange;
+ BOOL bFound = FALSE;
+ String aString = aName;
+ USHORT nParse = aCellRange.ParseAny( aString, pDoc );
+ if ( nParse & SCA_VALID )
+ {
+ if ( !(nParse & SCA_TAB_3D) ) // keine Tabelle angegeben -> auf dieser Tabelle
+ {
+ aCellRange.aStart.SetTab(nTab);
+ aCellRange.aEnd.SetTab(nTab);
+ }
+ bFound = TRUE;
+ }
+ else
+ {
+ ScRangeUtil aRangeUtil;
+ if ( aRangeUtil.MakeRangeFromName( aString, pDoc, nTab, aCellRange, RUTL_NAMES ) ||
+ aRangeUtil.MakeRangeFromName( aString, pDoc, nTab, aCellRange, RUTL_DBASE ) )
+ bFound = TRUE;
+ }
+
+ if (bFound) // valid only if within this object's range
+ {
+ if (!aRange.In(aCellRange))
+ bFound = FALSE;
+ }
+
+ if (bFound)
+ {
+ if ( aCellRange.aStart == aCellRange.aEnd )
+ return new ScCellObj( pDocSh, aCellRange.aStart );
+ else
+ return new ScCellRangeObj( pDocSh, aCellRange );
+ }
+ }
+
+ throw uno::RuntimeException();
+ return NULL;
+}
+
+// XColumnRowRange
+
+uno::Reference<table::XTableColumns> SAL_CALL ScCellRangeObj::getColumns() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ return new ScTableColumnsObj( pDocSh, aRange.aStart.Tab(),
+ aRange.aStart.Col(), aRange.aEnd.Col() );
+
+ DBG_ERROR("Dokument ungueltig");
+ return NULL;
+}
+
+uno::Reference<table::XTableRows> SAL_CALL ScCellRangeObj::getRows() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ return new ScTableRowsObj( pDocSh, aRange.aStart.Tab(),
+ aRange.aStart.Row(), aRange.aEnd.Row() );
+
+ DBG_ERROR("Dokument ungueltig");
+ return NULL;
+}
+
+// XAddressableCellRange
+
+table::CellRangeAddress SAL_CALL ScCellRangeObj::getRangeAddress() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellRangeAddress aRet;
+ ScUnoConversion::FillAddress( aRet, aRange );
+ return aRet;
+}
+
+// XSheetCellRange
+
+uno::Reference<sheet::XSpreadsheet> SAL_CALL ScCellRangeObj::getSpreadsheet()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ return new ScTableSheetObj( pDocSh, aRange.aStart.Tab() );
+
+ DBG_ERROR("Dokument ungueltig");
+ return NULL;
+}
+
+// XFormulaArray
+
+rtl::OUString SAL_CALL ScCellRangeObj::getArrayFormula() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ // Matrix-Formel, wenn eindeutig Teil einer Matrix,
+ // also wenn Anfang und Ende des Blocks zur selben Matrix gehoeren.
+ // Sonst Leerstring.
+
+ String aFormula;
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ const ScBaseCell* pCell1 = pDoc->GetCell( aRange.aStart );
+ const ScBaseCell* pCell2 = pDoc->GetCell( aRange.aEnd );
+ if ( pCell1 && pCell2 && pCell1->GetCellType() == CELLTYPE_FORMULA &&
+ pCell2->GetCellType() == CELLTYPE_FORMULA )
+ {
+ const ScFormulaCell* pFCell1 = (const ScFormulaCell*)pCell1;
+ const ScFormulaCell* pFCell2 = (const ScFormulaCell*)pCell2;
+ ScAddress aStart1;
+ ScAddress aStart2;
+ if ( pFCell1->GetMatrixOrigin( aStart1 ) && pFCell2->GetMatrixOrigin( aStart2 ) )
+ {
+ if ( aStart1 == aStart2 ) // beides dieselbe Matrix
+ pFCell1->GetFormula( aFormula ); // egal, von welcher Zelle
+ }
+ }
+ }
+ return aFormula;
+}
+
+void SAL_CALL ScCellRangeObj::setArrayFormula( const rtl::OUString& aFormula )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ String aString = aFormula;
+ ScDocFunc aFunc(*pDocSh);
+ if ( aString.Len() )
+ {
+ if ( ScTableSheetObj::getImplementation( (cppu::OWeakObject*)this ) )
+ {
+ // #74681# don't set array formula for sheet object
+ throw uno::RuntimeException();
+ }
+
+ aFunc.EnterMatrix( aRange, NULL, aString, TRUE );
+ }
+ else
+ {
+ // empty string -> erase array formula
+ ScMarkData aMark;
+ aMark.SetMarkArea( aRange );
+ aMark.SelectTable( aRange.aStart.Tab(), TRUE );
+ aFunc.DeleteContents( aMark, IDF_CONTENTS, TRUE, TRUE );
+ }
+ }
+}
+
+// XMultipleOperation
+
+void SAL_CALL ScCellRangeObj::setTableOperation( const table::CellRangeAddress& aFormulaRange,
+ sheet::TableOperationMode nMode,
+ const table::CellAddress& aColumnCell,
+ const table::CellAddress& aRowCell )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ BOOL bError = FALSE;
+ ScTabOpParam aParam;
+ aParam.aRefFormulaCell = ScRefTripel( aFormulaRange.StartColumn,
+ aFormulaRange.StartRow, aFormulaRange.Sheet,
+ FALSE, FALSE, FALSE );
+ aParam.aRefFormulaEnd = ScRefTripel( aFormulaRange.EndColumn,
+ aFormulaRange.EndRow, aFormulaRange.Sheet,
+ FALSE, FALSE, FALSE );
+ aParam.aRefRowCell = ScRefTripel( aRowCell.Column,
+ aRowCell.Row, aRowCell.Sheet,
+ FALSE, FALSE, FALSE );
+ aParam.aRefColCell = ScRefTripel( aColumnCell.Column,
+ aColumnCell.Row, aColumnCell.Sheet,
+ FALSE, FALSE, FALSE );
+ switch (nMode)
+ {
+ case sheet::TableOperationMode_COLUMN:
+ aParam.nMode = 0;
+ break;
+ case sheet::TableOperationMode_ROW:
+ aParam.nMode = 1;
+ break;
+ case sheet::TableOperationMode_BOTH:
+ aParam.nMode = 2;
+ break;
+ default:
+ bError = TRUE;
+ }
+
+ if (!bError)
+ {
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.TabOp( aRange, NULL, aParam, TRUE, TRUE );
+ }
+ }
+}
+
+// XMergeable
+
+void SAL_CALL ScCellRangeObj::merge( sal_Bool bMerge ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocFunc aFunc(*pDocSh);
+ if ( bMerge )
+ aFunc.MergeCells( aRange, FALSE, TRUE, TRUE );
+ else
+ aFunc.UnmergeCells( aRange, TRUE, TRUE );
+
+ //! Fehler abfangen?
+ }
+}
+
+sal_Bool SAL_CALL ScCellRangeObj::getIsMerged() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ return pDocSh && pDocSh->GetDocument()->HasAttrib( aRange, HASATTR_MERGED );
+}
+
+// XCellSeries
+
+void SAL_CALL ScCellRangeObj::fillSeries( sheet::FillDirection nFillDirection,
+ sheet::FillMode nFillMode, sheet::FillDateMode nFillDateMode,
+ double fStep, double fEndValue ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ BOOL bError = FALSE;
+
+ FillDir eDir;
+ switch (nFillDirection)
+ {
+ case sheet::FillDirection_TO_BOTTOM:
+ eDir = FILL_TO_BOTTOM;
+ break;
+ case sheet::FillDirection_TO_RIGHT:
+ eDir = FILL_TO_RIGHT;
+ break;
+ case sheet::FillDirection_TO_TOP:
+ eDir = FILL_TO_TOP;
+ break;
+ case sheet::FillDirection_TO_LEFT:
+ eDir = FILL_TO_LEFT;
+ break;
+ default:
+ bError = TRUE;
+ }
+
+ FillCmd eCmd;
+ switch ( nFillMode )
+ {
+ case sheet::FillMode_SIMPLE:
+ eCmd = FILL_SIMPLE;
+ break;
+ case sheet::FillMode_LINEAR:
+ eCmd = FILL_LINEAR;
+ break;
+ case sheet::FillMode_GROWTH:
+ eCmd = FILL_GROWTH;
+ break;
+ case sheet::FillMode_DATE:
+ eCmd = FILL_DATE;
+ break;
+ case sheet::FillMode_AUTO:
+ eCmd = FILL_AUTO;
+ break;
+ default:
+ bError = TRUE;
+ }
+
+ FillDateCmd eDateCmd;
+ switch ( nFillDateMode )
+ {
+ case sheet::FillDateMode_FILL_DATE_DAY:
+ eDateCmd = FILL_DAY;
+ break;
+ case sheet::FillDateMode_FILL_DATE_WEEKDAY:
+ eDateCmd = FILL_WEEKDAY;
+ break;
+ case sheet::FillDateMode_FILL_DATE_MONTH:
+ eDateCmd = FILL_MONTH;
+ break;
+ case sheet::FillDateMode_FILL_DATE_YEAR:
+ eDateCmd = FILL_YEAR;
+ break;
+ default:
+ bError = TRUE;
+ }
+
+ if (!bError)
+ {
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.FillSeries( aRange, NULL, eDir, eCmd, eDateCmd,
+ MAXDOUBLE, fStep, fEndValue, TRUE, TRUE );
+ }
+ }
+}
+
+void SAL_CALL ScCellRangeObj::fillAuto( sheet::FillDirection nFillDirection,
+ sal_Int32 nSourceCount ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh && nSourceCount )
+ {
+ ScRange aSourceRange = aRange;
+ USHORT nCount; // "Dest-Count"
+ FillDir eDir;
+ BOOL bError = FALSE;
+ switch (nFillDirection)
+ {
+ case sheet::FillDirection_TO_BOTTOM:
+ aSourceRange.aEnd.SetRow( aSourceRange.aStart.Row() + nSourceCount - 1 );
+ nCount = aRange.aEnd.Row() - aSourceRange.aEnd.Row();
+ eDir = FILL_TO_BOTTOM;
+ break;
+ case sheet::FillDirection_TO_RIGHT:
+ aSourceRange.aEnd.SetCol( aSourceRange.aStart.Col() + nSourceCount - 1 );
+ nCount = aRange.aEnd.Col() - aSourceRange.aEnd.Col();
+ eDir = FILL_TO_RIGHT;
+ break;
+ case sheet::FillDirection_TO_TOP:
+ aSourceRange.aStart.SetRow( aSourceRange.aEnd.Row() - nSourceCount + 1 );
+ nCount = aSourceRange.aStart.Row() - aRange.aStart.Row();
+ eDir = FILL_TO_TOP;
+ break;
+ case sheet::FillDirection_TO_LEFT:
+ aSourceRange.aStart.SetCol( aSourceRange.aEnd.Col() - nSourceCount + 1 );
+ nCount = aSourceRange.aStart.Col() - aRange.aStart.Col();
+ eDir = FILL_TO_LEFT;
+ break;
+ default:
+ bError = TRUE;
+ }
+ if (nCount > MAXROW) // Ueberlauf
+ bError = TRUE;
+
+ if (!bError)
+ {
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.FillAuto( aSourceRange, NULL, eDir, nCount, TRUE, TRUE );
+ }
+ }
+}
+
+// XAutoFormattable
+
+void SAL_CALL ScCellRangeObj::autoFormat( const rtl::OUString& aName )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAutoFormat* pAutoFormat = ScGlobal::GetAutoFormat();
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh && pAutoFormat )
+ {
+ String aNameString = aName;
+ USHORT nCount = pAutoFormat->GetCount();
+ USHORT nIndex;
+ String aCompare;
+ for (nIndex=0; nIndex<nCount; nIndex++)
+ {
+ (*pAutoFormat)[nIndex]->GetName(aCompare);
+ if ( aCompare == aNameString ) //! Case-insensitiv ???
+ break;
+ }
+ if (nIndex<nCount)
+ {
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.AutoFormat( aRange, NULL, nIndex, TRUE, TRUE );
+ }
+ }
+}
+
+// XSortable
+
+uno::Sequence<beans::PropertyValue> SAL_CALL ScCellRangeObj::createSortDescriptor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSortParam aParam;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ // DB-Bereich anlegen erst beim Ausfuehren, per API immer genau den Bereich
+ ScDBData* pData = pDocSh->GetDBData( aRange, SC_DB_OLD, TRUE );
+ if (pData)
+ {
+ pData->GetSortParam(aParam);
+
+ // im SortDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ ScRange aDBRange;
+ pData->GetArea(aDBRange);
+ USHORT nFieldStart = aParam.bByRow ? aDBRange.aStart.Col() : aDBRange.aStart.Row();
+ for (USHORT i=0; i<MAXSORT; i++)
+ if ( aParam.bDoSort[i] && aParam.nField[i] >= nFieldStart )
+ aParam.nField[i] -= nFieldStart;
+ }
+ }
+
+ uno::Sequence<beans::PropertyValue> aSeq( ScSortDescriptor::GetPropertyCount() );
+ ScSortDescriptor::FillProperties( aSeq, aParam );
+ return aSeq;
+}
+
+void SAL_CALL ScCellRangeObj::sort( const uno::Sequence<beans::PropertyValue>& aDescriptor )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ USHORT i;
+ ScSortParam aParam;
+ ScDBData* pData = pDocSh->GetDBData( aRange, SC_DB_MAKE, TRUE ); // ggf. Bereich anlegen
+ if (pData)
+ {
+ // alten Einstellungen holen, falls nicht alles neu gesetzt wird
+ pData->GetSortParam(aParam);
+ USHORT nOldStart = aParam.bByRow ? aRange.aStart.Col() : aRange.aStart.Row();
+ for (i=0; i<MAXSORT; i++)
+ if ( aParam.bDoSort[i] && aParam.nField[i] >= nOldStart )
+ aParam.nField[i] -= nOldStart;
+ }
+
+ ScSortDescriptor::FillSortParam( aParam, aDescriptor );
+
+ // im SortDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ // ByRow kann bei FillSortParam umgesetzt worden sein
+ USHORT nFieldStart = aParam.bByRow ? aRange.aStart.Col() : aRange.aStart.Row();
+ for (i=0; i<MAXSORT; i++)
+ aParam.nField[i] += nFieldStart;
+
+ USHORT nTab = aRange.aStart.Tab();
+ aParam.nCol1 = aRange.aStart.Col();
+ aParam.nRow1 = aRange.aStart.Row();
+ aParam.nCol2 = aRange.aEnd.Col();
+ aParam.nRow2 = aRange.aEnd.Row();
+
+ pDocSh->GetDBData( aRange, SC_DB_MAKE, TRUE ); // ggf. Bereich anlegen
+
+ ScDBDocFunc aFunc(*pDocSh); // Bereich muss angelegt sein
+ aFunc.Sort( nTab, aParam, TRUE, TRUE, TRUE );
+ }
+}
+
+// XFilterable
+
+uno::Reference<sheet::XSheetFilterDescriptor> SAL_CALL ScCellRangeObj::createFilterDescriptor(
+ sal_Bool bEmpty ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScFilterDescriptor* pNew = new ScFilterDescriptor;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( !bEmpty && pDocSh )
+ {
+ // DB-Bereich anlegen erst beim Ausfuehren, per API immer genau den Bereich
+ ScDBData* pData = pDocSh->GetDBData( aRange, SC_DB_OLD, TRUE );
+ if (pData)
+ {
+ ScQueryParam aParam;
+ pData->GetQueryParam(aParam);
+ // im FilterDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ ScRange aDBRange;
+ pData->GetArea(aDBRange);
+ USHORT nFieldStart = aParam.bByRow ? aDBRange.aStart.Col() : aDBRange.aStart.Row();
+ USHORT nCount = aParam.GetEntryCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScQueryEntry& rEntry = aParam.GetEntry(i);
+ if (rEntry.bDoQuery && rEntry.nField >= nFieldStart)
+ rEntry.nField -= nFieldStart;
+ }
+ pNew->SetParam(aParam);
+ }
+ }
+ return pNew;
+}
+
+void SAL_CALL ScCellRangeObj::filter( const uno::Reference<sheet::XSheetFilterDescriptor>& xDescriptor )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ // das koennte theoretisch ein fremdes Objekt sein, also nur das
+ // oeffentliche XSheetFilterDescriptor Interface benutzen, um
+ // die Daten in ein ScFilterDescriptor Objekt zu kopieren:
+ //! wenn es schon ein ScFilterDescriptor ist, direkt per getImplementation?
+
+ ScFilterDescriptor aImpl;
+ aImpl.setFilterFields( xDescriptor->getFilterFields() );
+ // Rest sind jetzt Properties...
+
+ uno::Reference<beans::XPropertySet> xPropSet( xDescriptor, uno::UNO_QUERY );
+ if (xPropSet.is())
+ lcl_CopyProperties( aImpl, *(beans::XPropertySet*)xPropSet.get() );
+
+ //
+ // ausfuehren...
+ //
+
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ ScQueryParam aParam = aImpl.GetParam();
+ // im FilterDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ USHORT nFieldStart = aParam.bByRow ? aRange.aStart.Col() : aRange.aStart.Row();
+ USHORT nCount = aParam.GetEntryCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScQueryEntry& rEntry = aParam.GetEntry(i);
+ if (rEntry.bDoQuery)
+ {
+ rEntry.nField += nFieldStart;
+ // Im Dialog wird immer der String angezeigt -> muss zum Wert passen
+ if ( !rEntry.bQueryByString )
+ pDocSh->GetDocument()->GetFormatTable()->
+ GetInputLineString( rEntry.nVal, 0, *rEntry.pStr );
+ }
+ }
+
+ USHORT nTab = aRange.aStart.Tab();
+ aParam.nCol1 = aRange.aStart.Col();
+ aParam.nRow1 = aRange.aStart.Row();
+ aParam.nCol2 = aRange.aEnd.Col();
+ aParam.nRow2 = aRange.aEnd.Row();
+
+ pDocSh->GetDBData( aRange, SC_DB_MAKE, TRUE ); // ggf. Bereich anlegen
+
+ //! keep source range in filter descriptor
+ //! if created by createFilterDescriptorByObject ???
+
+ ScDBDocFunc aFunc(*pDocSh);
+ aFunc.Query( nTab, aParam, NULL, TRUE, TRUE ); // Bereich muss angelegt sein
+ }
+}
+
+//! get/setAutoFilter als Properties!!!
+
+// XAdvancedFilterSource
+
+uno::Reference<sheet::XSheetFilterDescriptor> SAL_CALL ScCellRangeObj::createFilterDescriptorByObject(
+ const uno::Reference<sheet::XSheetFilterable>& xObject )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ // this ist hier nicht der Bereich, der gefiltert wird, sondern der
+ // Bereich mit der Abfrage...
+
+ uno::Reference<sheet::XCellRangeAddressable> xAddr( xObject, uno::UNO_QUERY );
+
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh && xAddr.is() )
+ {
+ //! Test, ob xObject im selben Dokument ist
+
+ ScFilterDescriptor* pNew = new ScFilterDescriptor; //! stattdessen vom Objekt?
+ //XSheetFilterDescriptorRef xNew = xObject->createFilterDescriptor(TRUE);
+
+ ScQueryParam aParam = pNew->GetParam();
+ aParam.bHasHeader = TRUE;
+
+ table::CellRangeAddress aDataAddress = xAddr->getRangeAddress();
+ aParam.nCol1 = aDataAddress.StartColumn;
+ aParam.nRow1 = aDataAddress.StartRow;
+ aParam.nCol2 = aDataAddress.EndColumn;
+ aParam.nRow2 = aDataAddress.EndRow;
+ aParam.nTab = aDataAddress.Sheet;
+
+ ScDocument* pDoc = pDocSh->GetDocument();
+ BOOL bOk = pDoc->CreateQueryParam(
+ aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(),
+ aRange.aStart.Tab(), aParam );
+ if ( bOk )
+ {
+ // im FilterDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ USHORT nFieldStart = aParam.bByRow ? aDataAddress.StartColumn : aDataAddress.StartRow;
+ USHORT nCount = aParam.GetEntryCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScQueryEntry& rEntry = aParam.GetEntry(i);
+ if (rEntry.bDoQuery && rEntry.nField >= nFieldStart)
+ rEntry.nField -= nFieldStart;
+ }
+
+ pNew->SetParam( aParam );
+ return pNew;
+ }
+ else
+ {
+ delete pNew;
+ return NULL; // ungueltig -> null
+ }
+ }
+
+ DBG_ERROR("kein Dokument oder kein Bereich");
+ return NULL;
+}
+
+// XSubTotalSource
+
+uno::Reference<sheet::XSubTotalDescriptor> SAL_CALL ScCellRangeObj::createSubTotalDescriptor(
+ sal_Bool bEmpty ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSubTotalDescriptor* pNew = new ScSubTotalDescriptor;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( !bEmpty && pDocSh )
+ {
+ // DB-Bereich anlegen erst beim Ausfuehren, per API immer genau den Bereich
+ ScDBData* pData = pDocSh->GetDBData( aRange, SC_DB_OLD, TRUE );
+ if (pData)
+ {
+ ScSubTotalParam aParam;
+ pData->GetSubTotalParam(aParam);
+ // im SubTotalDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ ScRange aDBRange;
+ pData->GetArea(aDBRange);
+ USHORT nFieldStart = aDBRange.aStart.Col();
+ for (USHORT i=0; i<MAXSUBTOTAL; i++)
+ {
+ if ( aParam.bGroupActive[i] )
+ {
+ if ( aParam.nField[i] >= nFieldStart )
+ aParam.nField[i] -= nFieldStart;
+ for (USHORT j=0; j<aParam.nSubTotals[i]; j++)
+ if ( aParam.pSubTotals[i][j] >= nFieldStart )
+ aParam.pSubTotals[i][j] -= nFieldStart;
+ }
+ }
+ pNew->SetParam(aParam);
+ }
+ }
+ return pNew;
+}
+
+void SAL_CALL ScCellRangeObj::applySubTotals(
+ const uno::Reference<sheet::XSubTotalDescriptor>& xDescriptor,
+ sal_Bool bReplace ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ if (!xDescriptor.is()) return;
+
+ ScDocShell* pDocSh = GetDocShell();
+ ScSubTotalDescriptorBase* pImp =
+ ScSubTotalDescriptorBase::getImplementation( xDescriptor );
+
+ if (pDocSh && pImp)
+ {
+ ScSubTotalParam aParam;
+ pImp->GetData(aParam); // virtuelle Methode der Basisklasse
+
+ // im SubTotalDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ USHORT nFieldStart = aRange.aStart.Col();
+ for (USHORT i=0; i<MAXSUBTOTAL; i++)
+ {
+ if ( aParam.bGroupActive[i] )
+ {
+ aParam.nField[i] += nFieldStart;
+ for (USHORT j=0; j<aParam.nSubTotals[i]; j++)
+ aParam.pSubTotals[i][j] += nFieldStart;
+ }
+ }
+
+ aParam.bReplace = bReplace;
+
+ USHORT nTab = aRange.aStart.Tab();
+ aParam.nCol1 = aRange.aStart.Col();
+ aParam.nRow1 = aRange.aStart.Row();
+ aParam.nCol2 = aRange.aEnd.Col();
+ aParam.nRow2 = aRange.aEnd.Row();
+
+ pDocSh->GetDBData( aRange, SC_DB_MAKE, TRUE ); // ggf. Bereich anlegen
+
+ ScDBDocFunc aFunc(*pDocSh);
+ aFunc.DoSubTotals( nTab, aParam, NULL, TRUE, TRUE ); // Bereich muss angelegt sein
+ }
+}
+
+void SAL_CALL ScCellRangeObj::removeSubTotals() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ ScSubTotalParam aParam;
+ ScDBData* pData = pDocSh->GetDBData( aRange, SC_DB_OLD, TRUE );
+ if (pData)
+ pData->GetSubTotalParam(aParam); // auch bei Remove die Feld-Eintraege behalten
+
+ aParam.bRemoveOnly = TRUE;
+
+ USHORT nTab = aRange.aStart.Tab();
+ aParam.nCol1 = aRange.aStart.Col();
+ aParam.nRow1 = aRange.aStart.Row();
+ aParam.nCol2 = aRange.aEnd.Col();
+ aParam.nRow2 = aRange.aEnd.Row();
+
+ pDocSh->GetDBData( aRange, SC_DB_MAKE, TRUE ); // ggf. Bereich anlegen
+
+ ScDBDocFunc aFunc(*pDocSh);
+ aFunc.DoSubTotals( nTab, aParam, NULL, TRUE, TRUE ); // Bereich muss angelegt sein
+ }
+}
+
+uno::Sequence<beans::PropertyValue> SAL_CALL ScCellRangeObj::createImportDescriptor( sal_Bool bEmpty )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScImportParam aParam;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( !bEmpty && pDocSh )
+ {
+ // DB-Bereich anlegen erst beim Ausfuehren, per API immer genau den Bereich
+ ScDBData* pData = pDocSh->GetDBData( aRange, SC_DB_OLD, TRUE );
+ if (pData)
+ pData->GetImportParam(aParam);
+ }
+
+ uno::Sequence<beans::PropertyValue> aSeq( ScImportDescriptor::GetPropertyCount() );
+ ScImportDescriptor::FillProperties( aSeq, aParam );
+ return aSeq;
+}
+
+void SAL_CALL ScCellRangeObj::doImport( const uno::Sequence<beans::PropertyValue>& aDescriptor )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ ScImportParam aParam;
+ ScImportDescriptor::FillImportParam( aParam, aDescriptor );
+
+ USHORT nTab = aRange.aStart.Tab();
+ aParam.nCol1 = aRange.aStart.Col();
+ aParam.nRow1 = aRange.aStart.Row();
+ aParam.nCol2 = aRange.aEnd.Col();
+ aParam.nRow2 = aRange.aEnd.Row();
+
+ pDocSh->GetDBData( aRange, SC_DB_MAKE, TRUE ); // ggf. Bereich anlegen
+
+ ScDBDocFunc aFunc(*pDocSh); // Bereich muss angelegt sein
+ aFunc.DoImport( nTab, aParam, NULL, TRUE, FALSE ); //! Api-Flag als Parameter
+ }
+}
+
+// XCellFormatsSupplier
+
+uno::Reference<container::XIndexAccess> SAL_CALL ScCellRangeObj::getCellFormatRanges()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ return new ScCellFormatsObj( pDocSh, aRange );
+ return NULL;
+}
+
+// XPropertySet erweitert fuer Range-Properties
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScCellRangeObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aRangePropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScCellRangeObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ // Range hat nur Position und Size zusaetzlich zu ScCellRangesBase, beide sind ReadOnly
+ // -> hier muss nichts passieren
+
+ ScCellRangesBase::setPropertyValue(aPropertyName, aValue);
+}
+
+uno::Any SAL_CALL ScCellRangeObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+
+ // eigene Properties
+
+ uno::Any aAny;
+ if ( aNameString.EqualsAscii( SC_UNONAME_POS ) )
+ {
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ // GetMMRect rechnet per HMM_PER_TWIPS, also passend zum DrawingLayer
+ Rectangle aMMRect = pDocSh->GetDocument()->GetMMRect(
+ aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(), aRange.aStart.Tab() );
+ awt::Point aPos( aMMRect.Left(), aMMRect.Top() );
+ aAny <<= aPos;
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_SIZE ) )
+ {
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ // GetMMRect rechnet per HMM_PER_TWIPS, also passend zum DrawingLayer
+ Rectangle aMMRect = pDocSh->GetDocument()->GetMMRect(
+ aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(), aRange.aStart.Tab() );
+ Size aSize = aMMRect.GetSize();
+ awt::Size aAwtSize( aSize.Width(), aSize.Height() );
+ aAny <<= aAwtSize;
+ }
+ }
+ else
+ aAny = ScCellRangesBase::getPropertyValue(aPropertyName); // geerbte mit oder ohne WID
+
+ return aAny;
+}
+
+// XServiceInfo
+
+rtl::OUString SAL_CALL ScCellRangeObj::getImplementationName() throw(uno::RuntimeException)
+{
+ return rtl::OUString::createFromAscii( "ScCellRangeObj" );
+}
+
+sal_Bool SAL_CALL ScCellRangeObj::supportsService( const rtl::OUString& rServiceName )
+ throw(uno::RuntimeException)
+{
+ String aServiceStr( rServiceName );
+ return aServiceStr.EqualsAscii( SCSHEETCELLRANGE_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCELLRANGE_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCELLPROPERTIES_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCHARPROPERTIES_SERVICE );
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScCellRangeObj::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ uno::Sequence<rtl::OUString> aRet(4);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCSHEETCELLRANGE_SERVICE );
+ pArray[1] = rtl::OUString::createFromAscii( SCCELLRANGE_SERVICE );
+ pArray[2] = rtl::OUString::createFromAscii( SCCELLPROPERTIES_SERVICE );
+ pArray[3] = rtl::OUString::createFromAscii( SCCHARPROPERTIES_SERVICE );
+ return aRet;
+}
+
+//------------------------------------------------------------------------
+
+const SfxItemPropertyMap* ScCellObj::GetEditPropertyMap() // static
+{
+ return lcl_GetEditPropertyMap();
+}
+
+ScCellObj::ScCellObj(ScDocShell* pDocSh, const ScAddress& rP) :
+ ScCellRangeObj( pDocSh, ScRange(rP,rP) ),
+ aCellPropSet( lcl_GetCellPropertyMap() ),
+ aCellPos( rP ),
+ pUnoText( NULL )
+{
+ // pUnoText is allocated on demand (GetUnoText)
+ // can't be aggregated because getString/setString is handled here
+}
+
+SvxUnoText& ScCellObj::GetUnoText()
+{
+ if (!pUnoText)
+ {
+ ScCellEditSource aEditSource( GetDocShell(), aCellPos );
+ pUnoText = new SvxUnoText( &aEditSource, lcl_GetEditPropertyMap(),
+ uno::Reference<text::XText>() );
+ pUnoText->acquire();
+ }
+ return *pUnoText;
+}
+
+ScCellObj::~ScCellObj()
+{
+ if (pUnoText)
+ pUnoText->release();
+}
+
+void ScCellObj::RefChanged()
+{
+ ScCellRangeObj::RefChanged();
+
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT(rRanges.Count() == 1, "was fuer Ranges ?!?!");
+ const ScRange* pFirst = rRanges.GetObject(0);
+ if (pFirst)
+ aCellPos = pFirst->aStart;
+}
+
+uno::Any SAL_CALL ScCellObj::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( table::XCell )
+ SC_QUERYINTERFACE( sheet::XCellAddressable )
+ SC_QUERYINTERFACE( text::XText )
+ SC_QUERYINTERFACE( text::XSimpleText )
+ SC_QUERYINTERFACE( text::XTextRange )
+ SC_QUERYINTERFACE( container::XEnumerationAccess )
+ SC_QUERYINTERFACE( container::XElementAccess )
+ SC_QUERYINTERFACE( sheet::XSheetAnnotationAnchor )
+ SC_QUERYINTERFACE( text::XTextFieldsSupplier )
+
+ return ScCellRangeObj::queryInterface( rType );
+}
+
+void SAL_CALL ScCellObj::acquire() throw(uno::RuntimeException)
+{
+ ScCellRangeObj::acquire();
+}
+
+void SAL_CALL ScCellObj::release() throw(uno::RuntimeException)
+{
+ ScCellRangeObj::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScCellObj::getTypes() throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ uno::Sequence<uno::Type> aParentTypes = ScCellRangeObj::getTypes();
+ long nParentLen = aParentTypes.getLength();
+ const uno::Type* pParentPtr = aParentTypes.getConstArray();
+
+ aTypes.realloc( nParentLen + 6 );
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[nParentLen + 0] = getCppuType((const uno::Reference<table::XCell>*)0);
+ pPtr[nParentLen + 1] = getCppuType((const uno::Reference<sheet::XCellAddressable>*)0);
+ pPtr[nParentLen + 2] = getCppuType((const uno::Reference<text::XText>*)0);
+ pPtr[nParentLen + 3] = getCppuType((const uno::Reference<container::XEnumerationAccess>*)0);
+ pPtr[nParentLen + 4] = getCppuType((const uno::Reference<sheet::XSheetAnnotationAnchor>*)0);
+ pPtr[nParentLen + 5] = getCppuType((const uno::Reference<text::XTextFieldsSupplier>*)0);
+
+ for (long i=0; i<nParentLen; i++)
+ pPtr[i] = pParentPtr[i]; // parent types first
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScCellObj::getImplementationId() throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+// Hilfsfunktionen
+
+String ScCellObj::GetInputString_Impl(BOOL bEnglish) const // fuer getFormula / FormulaLocal
+{
+ ScDocShell* pDocSh = GetDocShell();
+ String aVal;
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScBaseCell* pCell = pDoc->GetCell( aCellPos );
+ if ( pCell && pCell->GetCellType() != CELLTYPE_NOTE )
+ {
+ CellType eType = pCell->GetCellType();
+ if ( eType == CELLTYPE_FORMULA )
+ {
+ ScFormulaCell* pForm = (ScFormulaCell*)pCell;
+ if (bEnglish)
+ pForm->GetEnglishFormula( aVal );
+ else
+ pForm->GetFormula( aVal );
+ }
+ else
+ {
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ ULONG nNumFmt = bEnglish ?
+ pFormatter->GetStandardIndex(LANGUAGE_ENGLISH_US) :
+ pDoc->GetNumberFormat( aCellPos );
+
+ if ( eType == CELLTYPE_EDIT )
+ {
+ // GetString an der EditCell macht Leerzeichen aus Umbruechen,
+ // hier werden die Umbrueche aber gebraucht
+ const EditTextObject* pData = ((ScEditCell*)pCell)->GetData();
+ if (pData)
+ {
+ EditEngine& rEngine = pDoc->GetEditEngine();
+ rEngine.SetText( *pData );
+ aVal = rEngine.GetText( LINEEND_LF );
+ }
+ }
+ else
+ ScCellFormat::GetInputString( pCell, nNumFmt, aVal, *pFormatter );
+
+ // ggf. ein ' davorhaengen wie in ScTabViewShell::UpdateInputHandler
+ if ( eType == CELLTYPE_STRING || eType == CELLTYPE_EDIT )
+ {
+ double fDummy;
+ if ( pFormatter->IsNumberFormat(aVal, nNumFmt, fDummy) )
+ aVal.Insert('\'',0);
+ }
+ }
+ }
+ }
+ return aVal;
+}
+
+String ScCellObj::GetOutputString_Impl() const
+{
+ ScDocShell* pDocSh = GetDocShell();
+ String aVal;
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScBaseCell* pCell = pDoc->GetCell( aCellPos );
+ if ( pCell && pCell->GetCellType() != CELLTYPE_NOTE )
+ {
+ if ( pCell->GetCellType() == CELLTYPE_EDIT )
+ {
+ // GetString an der EditCell macht Leerzeichen aus Umbruechen,
+ // hier werden die Umbrueche aber gebraucht
+ const EditTextObject* pData = ((ScEditCell*)pCell)->GetData();
+ if (pData)
+ {
+ EditEngine& rEngine = pDoc->GetEditEngine();
+ rEngine.SetText( *pData );
+ aVal = rEngine.GetText( LINEEND_LF );
+ }
+ // Edit-Zellen auch nicht per NumberFormatter formatieren
+ // (passend zur Ausgabe)
+ }
+ else
+ {
+ // wie in GetString am Dokument (column)
+ Color* pColor;
+ ULONG nNumFmt = pDoc->GetNumberFormat( aCellPos );
+ ScCellFormat::GetString( pCell, nNumFmt, aVal, &pColor, *pDoc->GetFormatTable() );
+ }
+ }
+ }
+ return aVal;
+}
+
+void ScCellObj::SetString_Impl(const String& rString, BOOL bInterpret, BOOL bEnglish)
+{
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocFunc aFunc(*pDocSh);
+ BOOL bOk = aFunc.SetCellText( aCellPos, rString, bInterpret, bEnglish, TRUE );
+ }
+}
+
+double ScCellObj::GetValue_Impl() const
+{
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ return pDocSh->GetDocument()->GetValue( aCellPos );
+
+ return 0.0;
+}
+
+void ScCellObj::SetValue_Impl(double fValue)
+{
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocFunc aFunc(*pDocSh);
+ BOOL bOk = aFunc.PutCell( aCellPos, new ScValueCell(fValue), TRUE );
+ }
+}
+
+// only for XML import
+
+void ScCellObj::SetFormulaResultString( const ::rtl::OUString& rResult )
+{
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScBaseCell* pCell = pDocSh->GetDocument()->GetCell( aCellPos );
+ if ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA )
+ ((ScFormulaCell*)pCell)->SetString( rResult );
+ }
+}
+
+void ScCellObj::SetFormulaResultDouble( double fResult )
+{
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScBaseCell* pCell = pDocSh->GetDocument()->GetCell( aCellPos );
+ if ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA )
+ ((ScFormulaCell*)pCell)->SetDouble( fResult );
+ }
+}
+
+// XText
+
+uno::Reference<text::XTextCursor> SAL_CALL ScCellObj::createTextCursor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScCellTextCursor( GetUnoText() );
+}
+
+uno::Reference<text::XTextCursor> SAL_CALL ScCellObj::createTextCursorByRange(
+ const uno::Reference<text::XTextRange>& aTextPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SvxUnoTextCursor* pCursor = new ScCellTextCursor( GetUnoText() );
+ uno::Reference<text::XTextCursor> xCursor = pCursor;
+
+ SvxUnoTextRangeBase* pRange = SvxUnoTextRangeBase::getImplementation( aTextPosition );
+ if(pRange)
+ pCursor->SetSelection( pRange->GetSelection() );
+ else
+ {
+ ScCellTextCursor* pOther = ScCellTextCursor::getImplementation( aTextPosition );
+ if(pOther)
+ pCursor->SetSelection( pOther->GetSelection() );
+ else
+ throw uno::RuntimeException();
+ }
+
+ return xCursor;
+}
+
+rtl::OUString SAL_CALL ScCellObj::getString() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetOutputString_Impl();
+}
+
+void SAL_CALL ScCellObj::setString( const rtl::OUString& aText ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aText;
+ SetString_Impl(aString, FALSE, FALSE); // immer Text
+
+ // don't create pUnoText here if not there
+ if (pUnoText)
+ pUnoText->SetSelection(ESelection( 0,0, 0,aString.Len() ));
+}
+
+void SAL_CALL ScCellObj::insertString( const uno::Reference<text::XTextRange>& xRange,
+ const rtl::OUString& aString, sal_Bool bAbsorb )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ // der SvxUnoText kennt den ScCellTextCursor nicht, darum muss der Fall hier abgefangen werden
+
+ if ( xRange.is() )
+ {
+ ScCellTextCursor* pCursor = ScCellTextCursor::getImplementation( xRange );
+ if ( pCursor )
+ {
+ // setString am Cursor statt selber QuickInsertText und UpdateData,
+ // damit die Selektion am Cursor angepasst wird.
+ //! Eigentlich muessten alle Cursor-Objekte dieses Textes angepasst werden!
+
+ if (!bAbsorb) // nicht ersetzen -> hinten anhaengen
+ pCursor->CollapseToEnd();
+
+ pCursor->setString( aString );
+ return;
+ }
+ }
+
+ GetUnoText().insertString(xRange, aString, bAbsorb);
+}
+
+void SAL_CALL ScCellObj::insertControlCharacter( const uno::Reference<text::XTextRange>& xRange,
+ sal_Int16 nControlCharacter, sal_Bool bAbsorb )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+// GetUnoText().insertControlCharacter(xRange, nControlCharacter, bAbsorb);
+
+ //! Diese Aenderung stattdessen in unotext.cxx:
+
+ if ( nControlCharacter == text::ControlCharacter::PARAGRAPH_BREAK )
+ {
+ String aText( (sal_Unicode)13 ); // '\r' geht auf'm Mac nicht
+ insertString( xRange, aText, bAbsorb );
+ }
+ else
+ throw lang::IllegalArgumentException();
+}
+
+void SAL_CALL ScCellObj::insertTextContent( const uno::Reference<text::XTextRange >& xRange,
+ const uno::Reference<text::XTextContent >& xContent,
+ sal_Bool bAbsorb )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh && xContent.is() )
+ {
+ ScCellFieldObj* pCellField = ScCellFieldObj::getImplementation( xContent );
+ SvxUnoTextRangeBase* pTextRange = ScCellTextCursor::getImplementation( xRange );
+
+#if 0
+ if (!pTextRange)
+ pTextRange = SvxUnoTextRangeBase::getImplementation( xRange );
+
+ //! bei SvxUnoTextRange testen, ob in passendem Objekt !!!
+#endif
+
+ if ( pCellField && !pCellField->IsInserted() && pTextRange )
+ {
+ SvxEditSource* pEditSource = pTextRange->GetEditSource();
+ ESelection aSelection = pTextRange->GetSelection();
+
+ if (!bAbsorb)
+ {
+ // nicht ersetzen -> hinten anhaengen
+ aSelection.Adjust();
+ aSelection.nStartPara = aSelection.nEndPara;
+ aSelection.nStartPos = aSelection.nEndPos;
+ }
+
+ SvxFieldItem aItem = pCellField->CreateFieldItem();
+
+ SvxTextForwarder* pForwarder = pEditSource->GetTextForwarder();
+ pForwarder->QuickInsertField( aItem, aSelection );
+ pEditSource->UpdateData();
+
+ // neue Selektion: ein Zeichen
+ aSelection.Adjust();
+ aSelection.nEndPara = aSelection.nStartPara;
+ aSelection.nEndPos = aSelection.nStartPos + 1;
+ pCellField->InitDoc( pDocSh, aCellPos, aSelection );
+
+ pTextRange->SetSelection( aSelection );
+
+ return;
+ }
+ }
+ GetUnoText().insertTextContent(xRange, xContent, bAbsorb);
+}
+
+void SAL_CALL ScCellObj::removeTextContent( const uno::Reference<text::XTextContent>& xContent )
+ throw(container::NoSuchElementException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( xContent.is() )
+ {
+ ScCellFieldObj* pCellField = ScCellFieldObj::getImplementation( xContent );
+ if ( pCellField && pCellField->IsInserted() )
+ {
+ //! Testen, ob das Feld in dieser Zelle ist
+ pCellField->DeleteField();
+ return;
+ }
+ }
+ GetUnoText().removeTextContent(xContent);
+}
+
+uno::Reference<text::XText> SAL_CALL ScCellObj::getText() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetUnoText().getText();
+}
+
+uno::Reference<text::XTextRange> SAL_CALL ScCellObj::getStart() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetUnoText().getStart();
+}
+
+uno::Reference<text::XTextRange> SAL_CALL ScCellObj::getEnd() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetUnoText().getEnd();
+}
+
+uno::Reference<container::XEnumeration> SAL_CALL ScCellObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetUnoText().createEnumeration();
+}
+
+uno::Type SAL_CALL ScCellObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetUnoText().getElementType();
+}
+
+sal_Bool SAL_CALL ScCellObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetUnoText().hasElements();
+}
+
+// XCell
+
+rtl::OUString SAL_CALL ScCellObj::getFormula() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ // TRUE = englisch
+ return GetInputString_Impl(TRUE);
+}
+
+void SAL_CALL ScCellObj::setFormula( const rtl::OUString& aFormula ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aFormula;
+ SetString_Impl(aString, TRUE, TRUE); // englisch interpretieren
+}
+
+double SAL_CALL ScCellObj::getValue() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetValue_Impl();
+}
+
+void SAL_CALL ScCellObj::setValue( double nValue ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SetValue_Impl(nValue);
+}
+
+table::CellContentType SAL_CALL ScCellObj::getType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellContentType eRet = table::CellContentType_EMPTY;
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ CellType eCalcType = pDocSh->GetDocument()->GetCellType( aCellPos );
+ switch (eCalcType)
+ {
+ case CELLTYPE_VALUE:
+ eRet = table::CellContentType_VALUE;
+ break;
+ case CELLTYPE_STRING:
+ case CELLTYPE_EDIT:
+ eRet = table::CellContentType_TEXT;
+ break;
+ case CELLTYPE_FORMULA:
+ eRet = table::CellContentType_FORMULA;
+ break;
+ default:
+ eRet = table::CellContentType_EMPTY;
+ }
+ }
+ else
+ DBG_ERROR("keine DocShell"); //! Exception oder so?
+
+ return eRet;
+}
+
+table::CellContentType ScCellObj::GetResultType_Impl()
+{
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScBaseCell* pCell = pDocSh->GetDocument()->GetCell(aCellPos);
+ if ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA )
+ {
+ BOOL bValue = ((ScFormulaCell*)pCell)->IsValue();
+ return bValue ? table::CellContentType_VALUE : table::CellContentType_TEXT;
+ }
+ }
+ return getType(); // wenn keine Formel
+}
+
+sal_Int32 SAL_CALL ScCellObj::getError() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nError = 0;
+ ScDocShell* pDocSh = GetDocShell();
+ if (pDocSh)
+ {
+ ScBaseCell* pCell = pDocSh->GetDocument()->GetCell( aCellPos );
+ if ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA )
+ nError = ((ScFormulaCell*)pCell)->GetErrCode();
+ // sonst bleibt's bei 0
+ }
+ else
+ DBG_ERROR("keine DocShell"); //! Exception oder so?
+
+ return nError;
+}
+
+// XCellAddressable
+
+table::CellAddress SAL_CALL ScCellObj::getCellAddress() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellAddress aAdr;
+ aAdr.Sheet = aCellPos.Tab();
+ aAdr.Column = aCellPos.Col();
+ aAdr.Row = aCellPos.Row();
+ return aAdr;
+}
+
+// XSheetAnnotationAnchor
+
+uno::Reference<sheet::XSheetAnnotation> SAL_CALL ScCellObj::getAnnotation()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ return new ScAnnotationObj( pDocSh, aCellPos );
+
+ DBG_ERROR("getAnnotation ohne DocShell");
+ return NULL;
+}
+
+// XFieldTypesSupplier
+
+uno::Reference<container::XEnumerationAccess> SAL_CALL ScCellObj::getTextFields()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ return new ScCellFieldsObj( pDocSh, aCellPos );
+
+ return NULL;
+}
+
+uno::Reference<container::XNameAccess> SAL_CALL ScCellObj::getTextFieldMasters()
+ throw(uno::RuntimeException)
+{
+ // sowas gibts nicht im Calc (?)
+ return NULL;
+}
+
+// XPropertySet erweitert fuer Zell-Properties
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScCellObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aCellPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScCellObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+
+ // Abkuerzung, um Attributs-Properties relativ schnell zu setzen
+
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ {
+ ScCellRangesBase::setPropertyValue(aPropertyName, aValue);
+ return;
+ }
+
+ // eigene Properties
+
+ if ( aNameString.EqualsAscii( SC_UNONAME_FORMLOC ) )
+ {
+ rtl::OUString aStrVal;
+ aValue >>= aStrVal;
+ String aString = aStrVal;
+ SetString_Impl(aString, TRUE, FALSE); // lokal interpretieren
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_FORMRT ) )
+ {
+ // Read-Only
+ //! Exception oder so...
+ }
+ else
+ ScCellRangeObj::setPropertyValue(aPropertyName, aValue); // geerbte ohne WID
+}
+
+uno::Any SAL_CALL ScCellObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+
+ // Abkuerzung, um Attributs-Properties relativ schnell zu bekommen
+
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ return ScCellRangesBase::getPropertyValue(aPropertyName);
+
+ // eigene Properties
+
+ uno::Any aAny;
+ if ( aNameString.EqualsAscii( SC_UNONAME_FORMLOC ) )
+ {
+ // FALSE = lokal
+ String aFormStr = GetInputString_Impl(FALSE);
+ aAny <<= rtl::OUString( aFormStr );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_FORMRT ) )
+ {
+ table::CellContentType eType = GetResultType_Impl();
+ aAny <<= eType;
+ }
+ else
+ aAny = ScCellRangeObj::getPropertyValue(aPropertyName); // geerbte ohne WID
+
+ return aAny;
+}
+
+// XServiceInfo
+
+rtl::OUString SAL_CALL ScCellObj::getImplementationName() throw(uno::RuntimeException)
+{
+ return rtl::OUString::createFromAscii( "ScCellObj" );
+}
+
+sal_Bool SAL_CALL ScCellObj::supportsService( const rtl::OUString& rServiceName )
+ throw(uno::RuntimeException)
+{
+ // CellRange/SheetCellRange are not in SheetCell service description,
+ // but ScCellObj is used instead of ScCellRangeObj in CellRanges collections,
+ // so it must support them
+
+ String aServiceStr(rServiceName);
+ return aServiceStr.EqualsAscii( SCSHEETCELL_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCELL_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCELLPROPERTIES_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCHARPROPERTIES_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCSHEETCELLRANGE_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCELLRANGE_SERVICE );
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScCellObj::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ uno::Sequence<rtl::OUString> aRet(6);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCSHEETCELL_SERVICE );
+ pArray[1] = rtl::OUString::createFromAscii( SCCELL_SERVICE );
+ pArray[2] = rtl::OUString::createFromAscii( SCCELLPROPERTIES_SERVICE );
+ pArray[3] = rtl::OUString::createFromAscii( SCCHARPROPERTIES_SERVICE );
+ pArray[4] = rtl::OUString::createFromAscii( SCSHEETCELLRANGE_SERVICE );
+ pArray[5] = rtl::OUString::createFromAscii( SCCELLRANGE_SERVICE );
+ return aRet;
+}
+
+//------------------------------------------------------------------------
+
+ScTableSheetObj::ScTableSheetObj( ScDocShell* pDocSh, USHORT nTab ) :
+ ScCellRangeObj( pDocSh, ScRange(0,0,nTab, MAXCOL,MAXROW,nTab) ),
+ aSheetPropSet(lcl_GetSheetPropertyMap())
+{
+}
+
+ScTableSheetObj::~ScTableSheetObj()
+{
+}
+
+void ScTableSheetObj::InitInsertSheet(ScDocShell* pDocSh, USHORT nTab)
+{
+ InitInsertRange( pDocSh, ScRange(0,0,nTab, MAXCOL,MAXROW,nTab) );
+}
+
+uno::Any SAL_CALL ScTableSheetObj::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( sheet::XSpreadsheet )
+ SC_QUERYINTERFACE( container::XNamed )
+ SC_QUERYINTERFACE( sheet::XSheetPageBreak )
+ SC_QUERYINTERFACE( sheet::XCellRangeMovement )
+ SC_QUERYINTERFACE( table::XTableChartsSupplier )
+ SC_QUERYINTERFACE( sheet::XDataPilotTablesSupplier )
+ SC_QUERYINTERFACE( sheet::XScenariosSupplier )
+ SC_QUERYINTERFACE( sheet::XSheetAnnotationsSupplier )
+ SC_QUERYINTERFACE( drawing::XDrawPageSupplier )
+ SC_QUERYINTERFACE( sheet::XPrintAreas )
+ SC_QUERYINTERFACE( sheet::XSheetAuditing )
+ SC_QUERYINTERFACE( sheet::XSheetOutline )
+ SC_QUERYINTERFACE( util::XProtectable )
+ SC_QUERYINTERFACE( sheet::XScenario )
+ SC_QUERYINTERFACE( sheet::XSheetLinkable )
+
+ return ScCellRangeObj::queryInterface( rType );
+}
+
+void SAL_CALL ScTableSheetObj::acquire() throw(uno::RuntimeException)
+{
+ ScCellRangeObj::acquire();
+}
+
+void SAL_CALL ScTableSheetObj::release() throw(uno::RuntimeException)
+{
+ ScCellRangeObj::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScTableSheetObj::getTypes() throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ uno::Sequence<uno::Type> aParentTypes = ScCellRangeObj::getTypes();
+ long nParentLen = aParentTypes.getLength();
+ const uno::Type* pParentPtr = aParentTypes.getConstArray();
+
+ aTypes.realloc( nParentLen + 15 );
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[nParentLen + 0] = getCppuType((const uno::Reference<sheet::XSpreadsheet>*)0);
+ pPtr[nParentLen + 1] = getCppuType((const uno::Reference<container::XNamed>*)0);
+ pPtr[nParentLen + 2] = getCppuType((const uno::Reference<sheet::XSheetPageBreak>*)0);
+ pPtr[nParentLen + 3] = getCppuType((const uno::Reference<sheet::XCellRangeMovement>*)0);
+ pPtr[nParentLen + 4] = getCppuType((const uno::Reference<table::XTableChartsSupplier>*)0);
+ pPtr[nParentLen + 5] = getCppuType((const uno::Reference<sheet::XDataPilotTablesSupplier>*)0);
+ pPtr[nParentLen + 6] = getCppuType((const uno::Reference<sheet::XScenariosSupplier>*)0);
+ pPtr[nParentLen + 7] = getCppuType((const uno::Reference<sheet::XSheetAnnotationsSupplier>*)0);
+ pPtr[nParentLen + 8] = getCppuType((const uno::Reference<drawing::XDrawPageSupplier>*)0);
+ pPtr[nParentLen + 9] = getCppuType((const uno::Reference<sheet::XPrintAreas>*)0);
+ pPtr[nParentLen +10] = getCppuType((const uno::Reference<sheet::XSheetAuditing>*)0);
+ pPtr[nParentLen +11] = getCppuType((const uno::Reference<sheet::XSheetOutline>*)0);
+ pPtr[nParentLen +12] = getCppuType((const uno::Reference<util::XProtectable>*)0);
+ pPtr[nParentLen +13] = getCppuType((const uno::Reference<sheet::XScenario>*)0);
+ pPtr[nParentLen +14] = getCppuType((const uno::Reference<sheet::XSheetLinkable>*)0);
+
+ for (long i=0; i<nParentLen; i++)
+ pPtr[i] = pParentPtr[i]; // parent types first
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScTableSheetObj::getImplementationId() throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+// Hilfsfunktionen
+
+USHORT ScTableSheetObj::GetTab_Impl() const
+{
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT(rRanges.Count() == 1, "was fuer Ranges ?!?!");
+ const ScRange* pFirst = rRanges.GetObject(0);
+ if (pFirst)
+ return pFirst->aStart.Tab();
+
+ return 0; // soll nicht sein
+}
+
+// former XSheet
+
+uno::Reference<table::XTableCharts> SAL_CALL ScTableSheetObj::getCharts() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ return new ScChartsObj( pDocSh, GetTab_Impl() );
+
+ DBG_ERROR("kein Dokument");
+ return NULL;
+}
+
+uno::Reference<sheet::XDataPilotTables> SAL_CALL ScTableSheetObj::getDataPilotTables()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ return new ScDataPilotTablesObj( pDocSh, GetTab_Impl() );
+
+ DBG_ERROR("kein Dokument");
+ return NULL;
+}
+
+uno::Reference<sheet::XScenarios> SAL_CALL ScTableSheetObj::getScenarios() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+
+ if ( pDocSh )
+ return new ScScenariosObj( pDocSh, GetTab_Impl() );
+
+ DBG_ERROR("kein Dokument");
+ return NULL;
+}
+
+uno::Reference<sheet::XSheetAnnotations> SAL_CALL ScTableSheetObj::getAnnotations()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+
+ if ( pDocSh )
+ return new ScAnnotationsObj( pDocSh, GetTab_Impl() );
+
+ DBG_ERROR("kein Dokument");
+ return NULL;
+}
+
+uno::Reference<table::XCellRange> SAL_CALL ScTableSheetObj::getCellRangeByName(
+ const rtl::OUString& aRange ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ScCellRangeObj::getCellRangeByName( aRange );
+}
+
+uno::Reference<sheet::XSheetCellCursor> SAL_CALL ScTableSheetObj::createCursor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ //! einzelne Zelle oder ganze Tabelle???????
+ USHORT nTab = GetTab_Impl();
+ return new ScCellCursorObj( pDocSh, ScRange( 0,0,nTab, MAXCOL,MAXROW,nTab ) );
+ }
+ return NULL;
+}
+
+uno::Reference<sheet::XSheetCellCursor> SAL_CALL ScTableSheetObj::createCursorByRange(
+ const uno::Reference<sheet::XSheetCellRange>& aRange )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh && aRange.is() )
+ {
+ ScCellRangesBase* pRangesImp = ScCellRangesBase::getImplementation( aRange );
+ if (pRangesImp)
+ {
+ const ScRangeList& rRanges = pRangesImp->GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ return new ScCellCursorObj( pDocSh, *rRanges.GetObject(0) );
+ }
+ }
+ return NULL;
+}
+
+// XSheetCellRange
+
+uno::Reference<sheet::XSpreadsheet> SAL_CALL ScTableSheetObj::getSpreadsheet()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return this; //!???
+}
+
+// XCellRange
+
+uno::Reference<table::XCell> SAL_CALL ScTableSheetObj::getCellByPosition(
+ sal_Int32 nColumn, sal_Int32 nRow )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ScCellRangeObj::getCellByPosition(nColumn, nRow);
+}
+
+uno::Reference<table::XCellRange> SAL_CALL ScTableSheetObj::getCellRangeByPosition(
+ sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ScCellRangeObj::getCellRangeByPosition(nLeft,nTop,nRight,nBottom);
+}
+
+uno::Sequence<sheet::TablePageBreakData> SAL_CALL ScTableSheetObj::getColumnPageBreaks()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ Size aSize = pDoc->GetPageSize( nTab );
+ if (aSize.Width() && aSize.Height()) // effektive Groesse schon gesetzt?
+ pDoc->UpdatePageBreaks( nTab );
+ else
+ {
+ // Umbrueche updaten wie in ScDocShell::PageStyleModified:
+ ScPrintFunc aPrintFunc( pDocSh, pDocSh->GetPrinter(), nTab );
+ aPrintFunc.UpdatePages();
+ }
+
+ USHORT nCount = 0;
+ USHORT nCol;
+ for (nCol=0; nCol<=MAXCOL; nCol++)
+ if (pDoc->GetColFlags( nCol, nTab ) & ( CR_PAGEBREAK | CR_MANUALBREAK ))
+ ++nCount;
+
+ sheet::TablePageBreakData aData;
+ uno::Sequence<sheet::TablePageBreakData> aSeq(nCount);
+ sheet::TablePageBreakData* pAry = aSeq.getArray();
+ USHORT nPos = 0;
+ for (nCol=0; nCol<=MAXCOL; nCol++)
+ {
+ BYTE nFlags = pDoc->GetColFlags( nCol, nTab );
+ if (nFlags & ( CR_PAGEBREAK | CR_MANUALBREAK ))
+ {
+ aData.Position = nCol;
+ aData.ManualBreak = ( nFlags & CR_MANUALBREAK ) != 0;
+ pAry[nPos] = aData;
+ ++nPos;
+ }
+ }
+ return aSeq;
+ }
+ return uno::Sequence<sheet::TablePageBreakData>(0);
+}
+
+uno::Sequence<sheet::TablePageBreakData> SAL_CALL ScTableSheetObj::getRowPageBreaks()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ Size aSize = pDoc->GetPageSize( nTab );
+ if (aSize.Width() && aSize.Height()) // effektive Groesse schon gesetzt?
+ pDoc->UpdatePageBreaks( nTab );
+ else
+ {
+ // Umbrueche updaten wie in ScDocShell::PageStyleModified:
+ ScPrintFunc aPrintFunc( pDocSh, pDocSh->GetPrinter(), nTab );
+ aPrintFunc.UpdatePages();
+ }
+
+ USHORT nCount = 0;
+ USHORT nRow;
+ for (nRow=0; nRow<=MAXROW; nRow++)
+ if (pDoc->GetRowFlags( nRow, nTab ) & ( CR_PAGEBREAK | CR_MANUALBREAK ))
+ ++nCount;
+
+ sheet::TablePageBreakData aData;
+ uno::Sequence<sheet::TablePageBreakData> aSeq(nCount);
+ sheet::TablePageBreakData* pAry = aSeq.getArray();
+ USHORT nPos = 0;
+ for (nRow=0; nRow<=MAXROW; nRow++)
+ {
+ BYTE nFlags = pDoc->GetRowFlags( nRow, nTab );
+ if (nFlags & ( CR_PAGEBREAK | CR_MANUALBREAK ))
+ {
+ aData.Position = nRow;
+ aData.ManualBreak = ( nFlags & CR_MANUALBREAK ) != 0;
+ pAry[nPos] = aData;
+ ++nPos;
+ }
+ }
+ return aSeq;
+ }
+ return uno::Sequence<sheet::TablePageBreakData>(0);
+}
+
+void SAL_CALL ScTableSheetObj::removeAllManualPageBreaks() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ //! docfunc Funktion, auch fuer ScViewFunc::RemoveManualBreaks
+
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ pDoc->CopyToDocument( 0,0,nTab, MAXCOL,MAXROW,nTab, IDF_NONE, FALSE, pUndoDoc );
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoRemoveBreaks( pDocSh, nTab, pUndoDoc ) );
+
+ pDoc->RemoveManualBreaks(nTab);
+ pDoc->UpdatePageBreaks(nTab);
+
+ //? UpdatePageBreakData( TRUE );
+ pDocSh->SetDocumentModified();
+ pDocSh->PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID );
+ }
+}
+
+// XNamed
+
+rtl::OUString SAL_CALL ScTableSheetObj::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aName;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ pDocSh->GetDocument()->GetName( GetTab_Impl(), aName );
+ return aName;
+}
+
+void SAL_CALL ScTableSheetObj::setName( const rtl::OUString& aNewName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ String aString = aNewName;
+ ScDocFunc aFunc( *pDocSh );
+ aFunc.RenameTable( GetTab_Impl(), aString, TRUE, TRUE );
+ }
+}
+
+// XDrawPageSupplier
+
+uno::Reference<drawing::XDrawPage> SAL_CALL ScTableSheetObj::getDrawPage()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDrawLayer* pDrawLayer = pDocSh->MakeDrawLayer();
+ DBG_ASSERT(pDrawLayer,"kann Draw-Layer nicht anlegen");
+
+ USHORT nTab = GetTab_Impl();
+ SdrPage* pPage = pDrawLayer->GetPage(nTab);
+ DBG_ASSERT(pPage,"Draw-Page nicht gefunden");
+ if (pPage)
+ return new SvxFmDrawPage( pPage );
+
+ // Das DrawPage-Objekt meldet sich als Listener am SdrModel an
+ // und sollte von dort alle Aktionen mitbekommen
+ }
+ return NULL;
+}
+
+// XCellMovement
+
+void SAL_CALL ScTableSheetObj::insertCells( const table::CellRangeAddress& aRange,
+ sheet::CellInsertMode nMode ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ BOOL bDo = TRUE;
+ InsCellCmd eCmd;
+ switch (nMode)
+ {
+ case sheet::CellInsertMode_NONE: bDo = FALSE; break;
+ case sheet::CellInsertMode_DOWN: eCmd = INS_CELLSDOWN; break;
+ case sheet::CellInsertMode_RIGHT: eCmd = INS_CELLSRIGHT; break;
+ case sheet::CellInsertMode_ROWS: eCmd = INS_INSROWS; break;
+ case sheet::CellInsertMode_COLUMNS: eCmd = INS_INSCOLS; break;
+ default:
+ DBG_ERROR("insertCells: falscher Mode");
+ bDo = FALSE;
+ }
+
+ if (bDo)
+ {
+ DBG_ASSERT( aRange.Sheet == GetTab_Impl(), "falsche Tabelle in CellRangeAddress" );
+ ScRange aScRange;
+ ScUnoConversion::FillRange( aScRange, aRange );
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.InsertCells( aScRange, eCmd, TRUE, TRUE );
+ }
+ }
+}
+
+void SAL_CALL ScTableSheetObj::removeRange( const table::CellRangeAddress& aRange,
+ sheet::CellDeleteMode nMode ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ BOOL bDo = TRUE;
+ DelCellCmd eCmd;
+ switch (nMode)
+ {
+ case sheet::CellDeleteMode_NONE: bDo = FALSE; break;
+ case sheet::CellDeleteMode_UP: eCmd = DEL_CELLSUP; break;
+ case sheet::CellDeleteMode_LEFT: eCmd = DEL_CELLSLEFT; break;
+ case sheet::CellDeleteMode_ROWS: eCmd = DEL_DELROWS; break;
+ case sheet::CellDeleteMode_COLUMNS: eCmd = DEL_DELCOLS; break;
+ default:
+ DBG_ERROR("deleteCells: falscher Mode");
+ bDo = FALSE;
+ }
+
+ if (bDo)
+ {
+ DBG_ASSERT( aRange.Sheet == GetTab_Impl(), "falsche Tabelle in CellRangeAddress" );
+ ScRange aScRange;
+ ScUnoConversion::FillRange( aScRange, aRange );
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.DeleteCells( aScRange, eCmd, TRUE, TRUE );
+ }
+ }
+}
+
+void SAL_CALL ScTableSheetObj::moveRange( const table::CellAddress& aDestination,
+ const table::CellRangeAddress& aSource )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ DBG_ASSERT( aSource.Sheet == GetTab_Impl(), "falsche Tabelle in CellRangeAddress" );
+ ScRange aRange;
+ ScUnoConversion::FillRange( aRange, aSource );
+ ScAddress aDestPos( aDestination.Column, aDestination.Row, aDestination.Sheet );
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.MoveBlock( aRange, aDestPos, TRUE, TRUE, TRUE, TRUE );
+ }
+}
+
+void SAL_CALL ScTableSheetObj::copyRange( const table::CellAddress& aDestination,
+ const table::CellRangeAddress& aSource )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ DBG_ASSERT( aSource.Sheet == GetTab_Impl(), "falsche Tabelle in CellRangeAddress" );
+ ScRange aRange;
+ ScUnoConversion::FillRange( aRange, aSource );
+ ScAddress aDestPos( aDestination.Column, aDestination.Row, aDestination.Sheet );
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.MoveBlock( aRange, aDestPos, FALSE, TRUE, TRUE, TRUE );
+ }
+}
+
+// XPrintAreas
+
+void ScTableSheetObj::PrintAreaUndo_Impl( ScPrintRangeSaver* pOldRanges )
+{
+ // Umbrueche und Undo
+
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ ScPrintRangeSaver* pNewRanges = pDoc->CreatePrintRangeSaver();
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoPrintRange( pDocSh, nTab, pOldRanges, pNewRanges ) );
+
+ ScPrintFunc( pDocSh, pDocSh->GetPrinter(), nTab ).UpdatePages();
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_DELETE_PRINTAREA );
+
+ pDocSh->SetDocumentModified();
+ }
+ else
+ delete pOldRanges;
+}
+
+uno::Sequence<table::CellRangeAddress> SAL_CALL ScTableSheetObj::getPrintAreas()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+ USHORT nCount = pDoc->GetPrintRangeCount( nTab );
+
+ table::CellRangeAddress aRangeAddress;
+ uno::Sequence<table::CellRangeAddress> aSeq(nCount);
+ table::CellRangeAddress* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ const ScRange* pRange = pDoc->GetPrintRange( nTab, i );
+ DBG_ASSERT(pRange,"wo ist der Druckbereich");
+ if (pRange)
+ {
+ ScUnoConversion::FillAddress( aRangeAddress, *pRange );
+ pAry[i] = aRangeAddress;
+ }
+ }
+ return aSeq;
+ }
+ return uno::Sequence<table::CellRangeAddress>();
+}
+
+void SAL_CALL ScTableSheetObj::setPrintAreas(
+ const uno::Sequence<table::CellRangeAddress>& aPrintAreas )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ ScPrintRangeSaver* pOldRanges = pDoc->CreatePrintRangeSaver();
+
+ USHORT nCount = (USHORT) aPrintAreas.getLength();
+ pDoc->SetPrintRangeCount( nTab, nCount );
+ if (nCount)
+ {
+ ScRange aRange;
+ const table::CellRangeAddress* pAry = aPrintAreas.getConstArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScUnoConversion::FillRange( aRange, pAry[i] );
+ pDoc->SetPrintRange( nTab, i, aRange );
+ }
+ }
+
+ PrintAreaUndo_Impl( pOldRanges ); // Undo, Umbrueche, Modified etc.
+ }
+}
+
+sal_Bool SAL_CALL ScTableSheetObj::getPrintTitleColumns() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+ return ( pDoc->GetRepeatColRange(nTab) != NULL );
+ }
+ return FALSE;
+}
+
+void SAL_CALL ScTableSheetObj::setPrintTitleColumns( sal_Bool bPrintTitleColumns )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ ScPrintRangeSaver* pOldRanges = pDoc->CreatePrintRangeSaver();
+
+ if ( bPrintTitleColumns )
+ {
+ if ( !pDoc->GetRepeatColRange( nTab ) ) // keinen bestehenden Bereich veraendern
+ {
+ ScRange aNew( 0, 0, nTab, 0, 0, nTab ); // Default
+ pDoc->SetRepeatColRange( nTab, &aNew ); // einschalten
+ }
+ }
+ else
+ pDoc->SetRepeatColRange( nTab, NULL ); // abschalten
+
+ PrintAreaUndo_Impl( pOldRanges ); // Undo, Umbrueche, Modified etc.
+
+ //! zuletzt gesetzten Bereich beim Abschalten merken und beim Einschalten wiederherstellen ???
+ }
+}
+
+table::CellRangeAddress SAL_CALL ScTableSheetObj::getTitleColumns() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellRangeAddress aRet;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+ const ScRange* pRange = pDoc->GetRepeatColRange(nTab);
+ if (pRange)
+ ScUnoConversion::FillAddress( aRet, *pRange );
+ }
+ return aRet;
+}
+
+void SAL_CALL ScTableSheetObj::setTitleColumns( const table::CellRangeAddress& aTitleColumns )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ ScPrintRangeSaver* pOldRanges = pDoc->CreatePrintRangeSaver();
+
+ ScRange aNew;
+ ScUnoConversion::FillRange( aNew, aTitleColumns );
+ pDoc->SetRepeatColRange( nTab, &aNew ); // immer auch einschalten
+
+ PrintAreaUndo_Impl( pOldRanges ); // Undo, Umbrueche, Modified etc.
+ }
+}
+
+sal_Bool SAL_CALL ScTableSheetObj::getPrintTitleRows() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+ return ( pDoc->GetRepeatRowRange(nTab) != NULL );
+ }
+ return FALSE;
+}
+
+void SAL_CALL ScTableSheetObj::setPrintTitleRows( sal_Bool bPrintTitleRows )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ ScPrintRangeSaver* pOldRanges = pDoc->CreatePrintRangeSaver();
+
+ if ( bPrintTitleRows )
+ {
+ if ( !pDoc->GetRepeatRowRange( nTab ) ) // keinen bestehenden Bereich veraendern
+ {
+ ScRange aNew( 0, 0, nTab, 0, 0, nTab ); // Default
+ pDoc->SetRepeatRowRange( nTab, &aNew ); // einschalten
+ }
+ }
+ else
+ pDoc->SetRepeatRowRange( nTab, NULL ); // abschalten
+
+ PrintAreaUndo_Impl( pOldRanges ); // Undo, Umbrueche, Modified etc.
+
+ //! zuletzt gesetzten Bereich beim Abschalten merken und beim Einschalten wiederherstellen ???
+ }
+}
+
+table::CellRangeAddress SAL_CALL ScTableSheetObj::getTitleRows() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellRangeAddress aRet;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+ const ScRange* pRange = pDoc->GetRepeatRowRange(nTab);
+ if (pRange)
+ ScUnoConversion::FillAddress( aRet, *pRange );
+ }
+ return aRet;
+}
+
+void SAL_CALL ScTableSheetObj::setTitleRows( const table::CellRangeAddress& aTitleRows )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ ScPrintRangeSaver* pOldRanges = pDoc->CreatePrintRangeSaver();
+
+ ScRange aNew;
+ ScUnoConversion::FillRange( aNew, aTitleRows );
+ pDoc->SetRepeatRowRange( nTab, &aNew ); // immer auch einschalten
+
+ PrintAreaUndo_Impl( pOldRanges ); // Undo, Umbrueche, Modified etc.
+ }
+}
+
+// XSheetLinkable
+
+sheet::SheetLinkMode SAL_CALL ScTableSheetObj::getLinkMode() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ sheet::SheetLinkMode eRet = sheet::SheetLinkMode_NONE;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ BYTE nMode = pDocSh->GetDocument()->GetLinkMode( GetTab_Impl() );
+ if ( nMode == SC_LINK_NORMAL )
+ eRet = sheet::SheetLinkMode_NORMAL;
+ else if ( nMode == SC_LINK_VALUE )
+ eRet = sheet::SheetLinkMode_VALUE;
+ }
+ return eRet;
+}
+
+void SAL_CALL ScTableSheetObj::setLinkMode( sheet::SheetLinkMode nLinkMode )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ //! Filter und Options aus altem Link suchen
+
+ rtl::OUString aUrl = getLinkUrl();
+ rtl::OUString aSheet = getLinkSheetName();
+
+ rtl::OUString aEmpty;
+ link( aUrl, aSheet, aEmpty, aEmpty, nLinkMode );
+}
+
+rtl::OUString SAL_CALL ScTableSheetObj::getLinkUrl() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aFile;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ aFile = pDocSh->GetDocument()->GetLinkDoc( GetTab_Impl() );
+ return aFile;
+}
+
+void SAL_CALL ScTableSheetObj::setLinkUrl( const rtl::OUString& aLinkUrl )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ //! Filter und Options aus altem Link suchen
+
+ sheet::SheetLinkMode eMode = getLinkMode();
+ rtl::OUString aSheet = getLinkSheetName();
+
+ rtl::OUString aEmpty;
+ link( aLinkUrl, aSheet, aEmpty, aEmpty, eMode );
+}
+
+rtl::OUString SAL_CALL ScTableSheetObj::getLinkSheetName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aSheet;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ aSheet = pDocSh->GetDocument()->GetLinkTab( GetTab_Impl() );
+ return aSheet;
+}
+
+void SAL_CALL ScTableSheetObj::setLinkSheetName( const rtl::OUString& aLinkSheetName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ //! Filter und Options aus altem Link suchen
+
+ sheet::SheetLinkMode eMode = getLinkMode();
+ rtl::OUString aUrl = getLinkUrl();
+
+ rtl::OUString aEmpty;
+ link( aUrl, aLinkSheetName, aEmpty, aEmpty, eMode );
+}
+
+void SAL_CALL ScTableSheetObj::link( const rtl::OUString& aUrl, const rtl::OUString& aSheetName,
+ const rtl::OUString& aFilterName, const rtl::OUString& aFilterOptions,
+ sheet::SheetLinkMode nMode ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ String aFileString = aUrl;
+ String aFilterString = aFilterName;
+ String aOptString = aFilterOptions;
+ String aSheetString = aSheetName;
+
+ aFileString = ScGlobal::GetAbsDocName( aFileString, pDocSh );
+ if ( !aFilterString.Len() )
+ ScDocumentLoader::GetFilterName( aFileString, aFilterString, aOptString );
+
+ BYTE nLinkMode = SC_LINK_NONE;
+ if ( nMode == sheet::SheetLinkMode_NORMAL )
+ nLinkMode = SC_LINK_NORMAL;
+ else if ( nMode == sheet::SheetLinkMode_VALUE )
+ nLinkMode = SC_LINK_VALUE;
+
+ pDoc->SetLink( nTab, nLinkMode, aFileString, aFilterString, aOptString, aSheetString );
+
+ pDocSh->UpdateLinks(); // ggf. Link eintragen oder loeschen
+ SFX_BINDINGS().Invalidate(SID_LINKS);
+
+ //! Undo fuer Link-Daten an der Table
+
+ if ( nLinkMode != SC_LINK_NONE ) // Link updaten
+ {
+ // Update immer, auch wenn der Link schon da war
+ //! Update nur fuer die betroffene Tabelle???
+
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+ USHORT nCount = pLinkManager->GetLinks().Count();
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ SvBaseLink* pBase = *pLinkManager->GetLinks()[i];
+ if (pBase->ISA(ScTableLink))
+ {
+ ScTableLink* pTabLink = (ScTableLink*)pBase;
+ if ( pTabLink->GetFileName() == aFileString )
+ pTabLink->Update(); // inkl. Paint&Undo
+
+ //! Der Dateiname sollte nur einmal vorkommen (?)
+ }
+ }
+ }
+
+ //! Notify fuer ScSheetLinkObj Objekte!!!
+ }
+}
+
+// XSheetAuditing
+
+sal_Bool SAL_CALL ScTableSheetObj::hideDependents( const table::CellAddress& aPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ USHORT nTab = GetTab_Impl();
+ DBG_ASSERT( aPosition.Sheet == nTab, "falsche Tabelle in CellAddress" );
+ ScAddress aPos( aPosition.Column, aPosition.Row, nTab );
+ ScDocFunc aFunc(*pDocSh);
+ return aFunc.DetectiveDelSucc( aPos );
+ }
+ return FALSE;
+}
+
+sal_Bool SAL_CALL ScTableSheetObj::hidePrecedents( const table::CellAddress& aPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ USHORT nTab = GetTab_Impl();
+ DBG_ASSERT( aPosition.Sheet == nTab, "falsche Tabelle in CellAddress" );
+ ScAddress aPos( aPosition.Column, aPosition.Row, nTab );
+ ScDocFunc aFunc(*pDocSh);
+ return aFunc.DetectiveDelPred( aPos );
+ }
+ return FALSE;
+}
+
+sal_Bool SAL_CALL ScTableSheetObj::showDependents( const table::CellAddress& aPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ USHORT nTab = GetTab_Impl();
+ DBG_ASSERT( aPosition.Sheet == nTab, "falsche Tabelle in CellAddress" );
+ ScAddress aPos( aPosition.Column, aPosition.Row, nTab );
+ ScDocFunc aFunc(*pDocSh);
+ return aFunc.DetectiveAddSucc( aPos );
+ }
+ return FALSE;
+}
+
+sal_Bool SAL_CALL ScTableSheetObj::showPrecedents( const table::CellAddress& aPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ USHORT nTab = GetTab_Impl();
+ DBG_ASSERT( aPosition.Sheet == nTab, "falsche Tabelle in CellAddress" );
+ ScAddress aPos( aPosition.Column, aPosition.Row, nTab );
+ ScDocFunc aFunc(*pDocSh);
+ return aFunc.DetectiveAddPred( aPos );
+ }
+ return FALSE;
+}
+
+sal_Bool SAL_CALL ScTableSheetObj::showErrors( const table::CellAddress& aPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ USHORT nTab = GetTab_Impl();
+ DBG_ASSERT( aPosition.Sheet == nTab, "falsche Tabelle in CellAddress" );
+ ScAddress aPos( aPosition.Column, aPosition.Row, nTab );
+ ScDocFunc aFunc(*pDocSh);
+ return aFunc.DetectiveAddError( aPos );
+ }
+ return FALSE;
+}
+
+sal_Bool SAL_CALL ScTableSheetObj::showInvalid() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocFunc aFunc(*pDocSh);
+ return aFunc.DetectiveMarkInvalid( GetTab_Impl() );
+ }
+ return FALSE;
+}
+
+void SAL_CALL ScTableSheetObj::clearArrows() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.DetectiveDelAll( GetTab_Impl() );
+ }
+}
+
+// XSheetOutline
+
+void SAL_CALL ScTableSheetObj::group( const table::CellRangeAddress& aRange,
+ table::TableOrientation nOrientation )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ BOOL bColumns = ( nOrientation == table::TableOrientation_COLUMNS );
+ ScRange aGroupRange;
+ ScUnoConversion::FillRange( aGroupRange, aRange );
+ ScOutlineDocFunc aFunc(*pDocSh);
+ aFunc.MakeOutline( aGroupRange, bColumns, TRUE, TRUE );
+ }
+}
+
+void SAL_CALL ScTableSheetObj::ungroup( const table::CellRangeAddress& aRange,
+ table::TableOrientation nOrientation )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ BOOL bColumns = ( nOrientation == table::TableOrientation_COLUMNS );
+ ScRange aGroupRange;
+ ScUnoConversion::FillRange( aGroupRange, aRange );
+ ScOutlineDocFunc aFunc(*pDocSh);
+ aFunc.RemoveOutline( aGroupRange, bColumns, TRUE, TRUE );
+ }
+}
+
+void SAL_CALL ScTableSheetObj::autoOutline( const table::CellRangeAddress& aRange )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScRange aFormulaRange;
+ ScUnoConversion::FillRange( aFormulaRange, aRange );
+ ScOutlineDocFunc aFunc(*pDocSh);
+ aFunc.AutoOutline( aFormulaRange, TRUE, TRUE );
+ }
+}
+
+void SAL_CALL ScTableSheetObj::clearOutline() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ USHORT nTab = GetTab_Impl();
+ ScOutlineDocFunc aFunc(*pDocSh);
+ aFunc.RemoveAllOutlines( nTab, TRUE, TRUE );
+ }
+}
+
+void SAL_CALL ScTableSheetObj::hideDetail( const table::CellRangeAddress& aRange )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScRange aMarkRange;
+ ScUnoConversion::FillRange( aMarkRange, aRange );
+ ScOutlineDocFunc aFunc(*pDocSh);
+ aFunc.HideMarkedOutlines( aMarkRange, TRUE, TRUE );
+ }
+}
+
+void SAL_CALL ScTableSheetObj::showDetail( const table::CellRangeAddress& aRange )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScRange aMarkRange;
+ ScUnoConversion::FillRange( aMarkRange, aRange );
+ ScOutlineDocFunc aFunc(*pDocSh);
+ aFunc.ShowMarkedOutlines( aMarkRange, TRUE, TRUE );
+ }
+}
+
+void SAL_CALL ScTableSheetObj::showLevel( sal_Int16 nLevel, table::TableOrientation nOrientation )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ BOOL bColumns = ( nOrientation == table::TableOrientation_COLUMNS );
+ USHORT nTab = GetTab_Impl();
+ ScOutlineDocFunc aFunc(*pDocSh);
+ aFunc.SelectLevel( nTab, bColumns, nLevel, TRUE, TRUE, TRUE );
+ }
+}
+
+// XProtectable
+
+void SAL_CALL ScTableSheetObj::protect( const rtl::OUString& aPassword )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ String aString = aPassword;
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.Protect( GetTab_Impl(), aString, TRUE );
+ }
+}
+
+void SAL_CALL ScTableSheetObj::unprotect( const rtl::OUString& aPassword )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ String aString = aPassword;
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.Unprotect( GetTab_Impl(), aString, TRUE );
+
+ //! Rueckgabewert auswerten, Exception oder so
+ }
+}
+
+sal_Bool SAL_CALL ScTableSheetObj::isProtected() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ return pDocSh->GetDocument()->IsTabProtected( GetTab_Impl() );
+
+ DBG_ERROR("keine DocShell"); //! Exception oder so?
+ return FALSE;
+}
+
+// XScenario
+
+sal_Bool SAL_CALL ScTableSheetObj::getIsScenario() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ return pDocSh->GetDocument()->IsScenario( GetTab_Impl() );
+
+ return FALSE;
+}
+
+rtl::OUString SAL_CALL ScTableSheetObj::getScenarioComment() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ String aComment;
+ Color aColor;
+ USHORT nFlags;
+ pDocSh->GetDocument()->GetScenarioData( GetTab_Impl(), aComment, aColor, nFlags );
+ return aComment;
+ }
+ return rtl::OUString();
+}
+
+void SAL_CALL ScTableSheetObj::setScenarioComment( const rtl::OUString& aScenarioComment )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ String aName;
+ String aComment;
+ Color aColor;
+ USHORT nFlags;
+ pDoc->GetName( nTab, aName );
+ pDoc->GetScenarioData( nTab, aComment, aColor, nFlags );
+
+ aComment = String( aScenarioComment );
+
+ pDocSh->ModifyScenario( nTab, aName, aComment, aColor, nFlags );
+ }
+}
+
+void SAL_CALL ScTableSheetObj::addRanges( const uno::Sequence<table::CellRangeAddress>& aRanges )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ ScMarkData aMarkData;
+ aMarkData.SelectTable( nTab, TRUE );
+
+ USHORT nRangeCount = (USHORT)aRanges.getLength();
+ if (nRangeCount)
+ {
+ const table::CellRangeAddress* pAry = aRanges.getConstArray();
+ for (USHORT i=0; i<nRangeCount; i++)
+ {
+ DBG_ASSERT( pAry[i].Sheet == nTab, "addRanges mit falscher Tab" );
+ ScRange aRange( pAry[i].StartColumn, pAry[i].StartRow, nTab,
+ pAry[i].EndColumn, pAry[i].EndRow, nTab );
+
+ aMarkData.SetMultiMarkArea( aRange );
+ }
+ }
+
+ // Szenario-Ranges sind durch Attribut gekennzeichnet
+ ScPatternAttr aPattern( pDoc->GetPool() );
+ aPattern.GetItemSet().Put( ScMergeFlagAttr( SC_MF_SCENARIO ) );
+ aPattern.GetItemSet().Put( ScProtectionAttr( TRUE ) );
+ ScDocFunc aFunc(*pDocSh);
+ aFunc.ApplyAttributes( aMarkData, aPattern, TRUE, TRUE );
+ }
+}
+
+void SAL_CALL ScTableSheetObj::apply() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+ String aName;
+ pDoc->GetName( nTab, aName ); // Name dieses Szenarios
+
+ USHORT nDestTab = nTab;
+ while ( nDestTab > 0 && pDoc->IsScenario(nDestTab) )
+ --nDestTab;
+
+ if ( !pDoc->IsScenario(nDestTab) )
+ pDocSh->UseScenario( nDestTab, aName );
+
+ //! sonst Fehler oder so
+ }
+}
+
+// XPropertySet erweitert fuer Sheet-Properties
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScTableSheetObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aSheetPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScTableSheetObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+
+ // Abkuerzung, um Attributs-Properties relativ schnell zu setzen
+
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ {
+ ScCellRangesBase::setPropertyValue(aPropertyName, aValue);
+ return;
+ }
+
+ // eigene Properties
+
+ ScDocShell* pDocSh = GetDocShell();
+ if (!pDocSh)
+ return; //! Exception oder so?
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+ ScDocFunc aFunc(*pDocSh);
+
+ if ( aNameString.EqualsAscii( SC_UNONAME_PAGESTL ) )
+ {
+ rtl::OUString aStrVal;
+ aValue >>= aStrVal;
+ String aNewStr = ScStyleNameConversion::ProgrammaticToDisplayName(
+ aStrVal, SFX_STYLE_FAMILY_PAGE );
+
+ //! Undo? (auch bei SID_STYLE_APPLY an der View)
+
+ if ( pDoc->GetPageStyle( nTab ) != aNewStr )
+ {
+ pDoc->SetPageStyle( nTab, aNewStr );
+ ScPrintFunc( pDocSh, pDocSh->GetPrinter(), nTab ).UpdatePages();
+ pDocSh->SetDocumentModified();
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_STYLE_FAMILY4 );
+ rBindings.Invalidate( SID_STATUS_PAGESTYLE );
+ rBindings.Invalidate( FID_RESET_PRINTZOOM );
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLVIS ) )
+ {
+ BOOL bVis = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ aFunc.SetTableVisible( nTab, bVis, TRUE );
+ }
+ else
+ ScCellRangeObj::setPropertyValue(aPropertyName, aValue); // geerbte ohne WID
+}
+
+uno::Any SAL_CALL ScTableSheetObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+
+ // Abkuerzung, um Attributs-Properties relativ schnell zu bekommen
+
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ return ScCellRangesBase::getPropertyValue(aPropertyName);
+
+ // eigene Properties
+
+ ScDocShell* pDocSh = GetDocShell();
+ if (!pDocSh)
+ return uno::Any(); //! Exception oder so?
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetTab_Impl();
+
+ uno::Any aAny;
+ if ( aNameString.EqualsAscii( SC_UNONAME_PAGESTL ) )
+ {
+ String aStyle = ScStyleNameConversion::DisplayToProgrammaticName(
+ pDoc->GetPageStyle( nTab ), SFX_STYLE_FAMILY_PAGE );
+ aAny <<= rtl::OUString( aStyle );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLVIS ) )
+ {
+ BOOL bVis = pDoc->IsVisible( nTab );
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bVis );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNO_LINKDISPBIT ) )
+ {
+ // no target bitmaps for individual entries (would be all equal)
+ // ScLinkTargetTypeObj::SetLinkTargetBitmap( aAny, SC_LINKTARGETTYPE_SHEET );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNO_LINKDISPNAME ) )
+ {
+ // LinkDisplayName for hyperlink dialog
+ aAny <<= getName(); // sheet name
+ }
+ else
+ aAny = ScCellRangeObj::getPropertyValue(aPropertyName); // geerbte ohne WID
+
+ return aAny;
+}
+
+// XServiceInfo
+
+rtl::OUString SAL_CALL ScTableSheetObj::getImplementationName() throw(uno::RuntimeException)
+{
+ return rtl::OUString::createFromAscii( "ScTableSheetObj" );
+}
+
+sal_Bool SAL_CALL ScTableSheetObj::supportsService( const rtl::OUString& rServiceName )
+ throw(uno::RuntimeException)
+{
+ String aServiceStr( rServiceName );
+ return aServiceStr.EqualsAscii( SCSPREADSHEET_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCSHEETCELLRANGE_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCELLRANGE_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCELLPROPERTIES_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCHARPROPERTIES_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCLINKTARGET_SERVICE );
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScTableSheetObj::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ uno::Sequence<rtl::OUString> aRet(6);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCSPREADSHEET_SERVICE );
+ pArray[1] = rtl::OUString::createFromAscii( SCSHEETCELLRANGE_SERVICE );
+ pArray[2] = rtl::OUString::createFromAscii( SCCELLRANGE_SERVICE );
+ pArray[3] = rtl::OUString::createFromAscii( SCCELLPROPERTIES_SERVICE );
+ pArray[4] = rtl::OUString::createFromAscii( SCCHARPROPERTIES_SERVICE );
+ pArray[5] = rtl::OUString::createFromAscii( SCLINKTARGET_SERVICE );
+ return aRet;
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScTableSheetObj::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+
+ return ScCellRangeObj::getSomething( rId );
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScTableSheetObj::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScTableSheetObj* ScTableSheetObj::getImplementation( const uno::Reference<uno::XInterface> xObj )
+{
+ ScTableSheetObj* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScTableSheetObj*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+ScTableColumnObj::ScTableColumnObj( ScDocShell* pDocSh, USHORT nCol, USHORT nTab ) :
+ ScCellRangeObj( pDocSh, ScRange(nCol,0,nTab, nCol,MAXROW,nTab) ),
+ aColPropSet(lcl_GetColumnPropertyMap())
+{
+}
+
+ScTableColumnObj::~ScTableColumnObj()
+{
+}
+
+uno::Any SAL_CALL ScTableColumnObj::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( container::XNamed )
+
+ return ScCellRangeObj::queryInterface( rType );
+}
+
+void SAL_CALL ScTableColumnObj::acquire() throw(uno::RuntimeException)
+{
+ ScCellRangeObj::acquire();
+}
+
+void SAL_CALL ScTableColumnObj::release() throw(uno::RuntimeException)
+{
+ ScCellRangeObj::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScTableColumnObj::getTypes() throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ uno::Sequence<uno::Type> aParentTypes = ScCellRangeObj::getTypes();
+ long nParentLen = aParentTypes.getLength();
+ const uno::Type* pParentPtr = aParentTypes.getConstArray();
+
+ aTypes.realloc( nParentLen + 1 );
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[nParentLen + 0] = getCppuType((const uno::Reference<container::XNamed>*)0);
+
+ for (long i=0; i<nParentLen; i++)
+ pPtr[i] = pParentPtr[i]; // parent types first
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScTableColumnObj::getImplementationId() throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+// XNamed
+
+rtl::OUString SAL_CALL ScTableColumnObj::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ const ScRange& rRange = GetRange();
+ DBG_ASSERT(rRange.aStart.Col() == rRange.aEnd.Col(), "too many columns");
+ USHORT nCol = rRange.aStart.Col();
+
+ return ColToAlpha( nCol ); // from global.hxx
+}
+
+void SAL_CALL ScTableColumnObj::setName( const rtl::OUString& aNewName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ throw uno::RuntimeException(); // read-only
+}
+
+// XPropertySet erweitert fuer Spalten-Properties
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScTableColumnObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aColPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScTableColumnObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+
+ // Abkuerzung, um Attributs-Properties relativ schnell zu setzen
+
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ {
+ ScCellRangesBase::setPropertyValue(aPropertyName, aValue);
+ return;
+ }
+
+ // eigene Properties
+
+ ScDocShell* pDocSh = GetDocShell();
+ if (!pDocSh)
+ return; //! Exception oder so?
+ ScDocument* pDoc = pDocSh->GetDocument();
+ const ScRange& rRange = GetRange();
+ DBG_ASSERT(rRange.aStart.Col() == rRange.aEnd.Col(), "zuviele Spalten");
+ USHORT nCol = rRange.aStart.Col();
+ USHORT nTab = rRange.aStart.Tab();
+ ScDocFunc aFunc(*pDocSh);
+
+ USHORT nColArr[2];
+ nColArr[0] = nColArr[1] = nCol;
+
+ if ( aNameString.EqualsAscii( SC_UNONAME_CELLWID ) )
+ {
+ sal_Int32 nNewWidth;
+ if ( aValue >>= nNewWidth )
+ {
+ // property is 1/100mm, column width is twips
+ nNewWidth = HMMToTwips(nNewWidth);
+ aFunc.SetWidthOrHeight( TRUE, 1, nColArr, nTab, SC_SIZE_DIRECT,
+ (USHORT)nNewWidth, TRUE, TRUE );
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLVIS ) )
+ {
+ BOOL bVis = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ ScSizeMode eMode = bVis ? SC_SIZE_SHOW : SC_SIZE_DIRECT;
+ aFunc.SetWidthOrHeight( TRUE, 1, nColArr, nTab, eMode, 0, TRUE, TRUE );
+ // SC_SIZE_DIRECT mit Groesse 0 blendet aus
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_OWIDTH ) )
+ {
+ BOOL bOpt = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ if (bOpt)
+ aFunc.SetWidthOrHeight( TRUE, 1, nColArr, nTab,
+ SC_SIZE_OPTIMAL, STD_EXTRA_WIDTH, TRUE, TRUE );
+ // FALSE bei Spalten momentan ohne Auswirkung
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_NEWPAGE ) || aNameString.EqualsAscii( SC_UNONAME_MANPAGE ) )
+ {
+ BOOL bSet = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ if (bSet)
+ aFunc.InsertPageBreak( TRUE, rRange.aStart, TRUE, TRUE, TRUE );
+ else
+ aFunc.RemovePageBreak( TRUE, rRange.aStart, TRUE, TRUE, TRUE );
+ }
+ else
+ ScCellRangeObj::setPropertyValue(aPropertyName, aValue); // geerbte ohne WID
+}
+
+uno::Any SAL_CALL ScTableColumnObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+
+ // Abkuerzung, um Attributs-Properties relativ schnell zu bekommen
+
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ return ScCellRangesBase::getPropertyValue(aPropertyName);
+
+ // eigene Properties
+
+ ScDocShell* pDocSh = GetDocShell();
+ if (!pDocSh)
+ return uno::Any(); //! Exception oder so?
+ ScDocument* pDoc = pDocSh->GetDocument();
+ const ScRange& rRange = GetRange();
+ DBG_ASSERT(rRange.aStart.Col() == rRange.aEnd.Col(), "zuviele Spalten");
+ USHORT nCol = rRange.aStart.Col();
+ USHORT nTab = rRange.aStart.Tab();
+
+ uno::Any aAny;
+ if ( aNameString.EqualsAscii( SC_UNONAME_CELLWID ) )
+ {
+ USHORT nWidth = pDoc->GetColWidth( nCol, nTab );
+ // Property ist 1/100mm, Spaltenbreite in Twips
+ nWidth = (USHORT) TwipsToHMM(nWidth);
+ aAny <<= (sal_Int32)( nWidth );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLVIS ) )
+ {
+ BOOL bVis = !(pDoc->GetColFlags( nCol, nTab ) & CR_HIDDEN);
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bVis );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_OWIDTH ) )
+ {
+ //! momentan immer gesetzt ??!?!
+ BOOL bOpt = !(pDoc->GetColFlags( nCol, nTab ) & CR_MANUALSIZE);
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bOpt );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_NEWPAGE ) )
+ {
+ BOOL bBreak = ( 0 != (pDoc->GetColFlags( nCol, nTab ) & (CR_PAGEBREAK|CR_MANUALBREAK)) );
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bBreak );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_MANPAGE ) )
+ {
+ BOOL bBreak = ( 0 != (pDoc->GetColFlags( nCol, nTab ) & (CR_MANUALBREAK)) );
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bBreak );
+ }
+ else
+ aAny = ScCellRangeObj::getPropertyValue(aPropertyName); // geerbte ohne WID
+
+ return aAny;
+}
+
+//------------------------------------------------------------------------
+
+ScTableRowObj::ScTableRowObj(ScDocShell* pDocSh, USHORT nRow, USHORT nTab) :
+ ScCellRangeObj( pDocSh, ScRange(0,nRow,nTab, MAXCOL,nRow,nTab) ),
+ aRowPropSet(lcl_GetRowPropertyMap())
+{
+}
+
+ScTableRowObj::~ScTableRowObj()
+{
+}
+
+// XPropertySet erweitert fuer Zeilen-Properties
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScTableRowObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aRowPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScTableRowObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+
+ // Abkuerzung, um Attributs-Properties relativ schnell zu setzen
+
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ {
+ ScCellRangesBase::setPropertyValue(aPropertyName, aValue);
+ return;
+ }
+
+ // eigene Properties
+
+ ScDocShell* pDocSh = GetDocShell();
+ if (!pDocSh)
+ return; //! Exception oder so?
+ ScDocument* pDoc = pDocSh->GetDocument();
+ const ScRange& rRange = GetRange();
+ DBG_ASSERT(rRange.aStart.Row() == rRange.aEnd.Row(), "zuviele Zeilen");
+ USHORT nRow = rRange.aStart.Row();
+ USHORT nTab = rRange.aStart.Tab();
+ ScDocFunc aFunc(*pDocSh);
+
+ USHORT nRowArr[2];
+ nRowArr[0] = nRowArr[1] = nRow;
+
+ if ( aNameString.EqualsAscii( SC_UNONAME_CELLHGT ) )
+ {
+ sal_Int32 nNewHeight;
+ if ( aValue >>= nNewHeight )
+ {
+ // property is 1/100mm, row height is twips
+ nNewHeight = HMMToTwips(nNewHeight);
+ aFunc.SetWidthOrHeight( FALSE, 1, nRowArr, nTab, SC_SIZE_DIRECT,
+ (USHORT)nNewHeight, TRUE, TRUE );
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLVIS ) )
+ {
+ BOOL bVis = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ ScSizeMode eMode = bVis ? SC_SIZE_SHOW : SC_SIZE_DIRECT;
+ aFunc.SetWidthOrHeight( FALSE, 1, nRowArr, nTab, eMode, 0, TRUE, TRUE );
+ // SC_SIZE_DIRECT mit Groesse 0 blendet aus
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLFILT ) )
+ {
+ BOOL bFil = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+// ScSizeMode eMode = bVis ? SC_SIZE_SHOW : SC_SIZE_DIRECT;
+// aFunc.SetWidthOrHeight( FALSE, 1, nRowArr, nTab, eMode, 0, TRUE, TRUE );
+ // SC_SIZE_DIRECT mit Groesse 0 blendet aus
+ Byte nFlags = pDoc->GetRowFlags(nRow, nTab);
+ if (bFil)
+ nFlags |= CR_FILTERED;
+ else
+ nFlags &= ~CR_FILTERED;
+ pDoc->SetRowFlags(nRow, nTab, nFlags);
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_OHEIGHT ) )
+ {
+ BOOL bOpt = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ if (bOpt)
+ aFunc.SetWidthOrHeight( FALSE, 1, nRowArr, nTab, SC_SIZE_OPTIMAL, 0, TRUE, TRUE );
+ else
+ {
+ // alte Hoehe nochmal manuell setzen
+ USHORT nHeight = pDoc->GetRowHeight( nRow, nTab );
+ aFunc.SetWidthOrHeight( FALSE, 1, nRowArr, nTab, SC_SIZE_DIRECT, nHeight, TRUE, TRUE );
+ }
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_NEWPAGE) || aNameString.EqualsAscii( SC_UNONAME_MANPAGE) )
+ {
+ BOOL bSet = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ if (bSet)
+ aFunc.InsertPageBreak( FALSE, rRange.aStart, TRUE, TRUE, TRUE );
+ else
+ aFunc.RemovePageBreak( FALSE, rRange.aStart, TRUE, TRUE, TRUE );
+ }
+ else
+ ScCellRangeObj::setPropertyValue(aPropertyName, aValue); // geerbte ohne WID
+}
+
+uno::Any SAL_CALL ScTableRowObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+
+ // Abkuerzung, um Attributs-Properties relativ schnell zu bekommen
+
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( lcl_GetCellsPropertyMap(), aNameString );
+ if ( pMap && pMap->nWID )
+ return ScCellRangesBase::getPropertyValue(aPropertyName);
+
+ // eigene Properties
+
+ ScDocShell* pDocSh = GetDocShell();
+ if (!pDocSh)
+ return uno::Any(); //! Exception oder so?
+ ScDocument* pDoc = pDocSh->GetDocument();
+ const ScRange& rRange = GetRange();
+ DBG_ASSERT(rRange.aStart.Row() == rRange.aEnd.Row(), "zuviele Zeilen");
+ USHORT nRow = rRange.aStart.Row();
+ USHORT nTab = rRange.aStart.Tab();
+
+ uno::Any aAny;
+ if ( aNameString.EqualsAscii( SC_UNONAME_CELLHGT ) )
+ {
+ USHORT nHeight = pDoc->GetRowHeight( nRow, nTab );
+ // Property ist 1/100mm, Zeilenhoehe in Twips
+ nHeight = (USHORT) TwipsToHMM(nHeight);
+ aAny <<= (sal_Int32)( nHeight );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLVIS ) )
+ {
+ BOOL bVis = !(pDoc->GetRowFlags( nRow, nTab ) & CR_HIDDEN);
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bVis );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_CELLFILT ) )
+ {
+ BOOL bVis = ((pDoc->GetRowFlags( nRow, nTab ) & CR_FILTERED) != 0);
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bVis );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_OHEIGHT ) )
+ {
+ BOOL bOpt = !(pDoc->GetRowFlags( nRow, nTab ) & CR_MANUALSIZE);
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bOpt );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_NEWPAGE ) )
+ {
+ BOOL bBreak = ( 0 != (pDoc->GetRowFlags( nRow, nTab ) & (CR_PAGEBREAK|CR_MANUALBREAK)) );
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bBreak );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_MANPAGE ) )
+ {
+ BOOL bBreak = ( 0 != (pDoc->GetRowFlags( nRow, nTab ) & (CR_MANUALBREAK)) );
+ ScUnoHelpFunctions::SetBoolInAny( aAny, bBreak );
+ }
+ else
+ aAny = ScCellRangeObj::getPropertyValue(aPropertyName); // geerbte ohne WID
+
+ return aAny;
+}
+
+//------------------------------------------------------------------------
+
+ScCellsObj::ScCellsObj(ScDocShell* pDocSh, const ScRangeList& rR) :
+ pDocShell( pDocSh ),
+ aRanges( rR )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScCellsObj::~ScCellsObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScCellsObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+ aRanges.UpdateReference( rRef.GetMode(), pDocShell->GetDocument(), rRef.GetRange(),
+ rRef.GetDx(), rRef.GetDy(), rRef.GetDz() );
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScCellsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return new ScCellsEnumeration( pDocShell, aRanges );
+ return NULL;
+}
+
+uno::Type SAL_CALL ScCellsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<table::XCell>*)0);
+}
+
+sal_Bool SAL_CALL ScCellsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bHas = FALSE;
+ if ( pDocShell )
+ {
+ //! schneller selber testen?
+
+ uno::Reference<container::XEnumeration> xEnum = new ScCellsEnumeration( pDocShell, aRanges );
+ bHas = xEnum->hasMoreElements();
+ }
+ return bHas;
+}
+
+//------------------------------------------------------------------------
+
+ScCellsEnumeration::ScCellsEnumeration(ScDocShell* pDocSh, const ScRangeList& rR) :
+ pDocShell( pDocSh ),
+ aRanges( rR ),
+ bAtEnd( FALSE ),
+ pMark( NULL )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->AddUnoObject(*this);
+
+ if ( aRanges.Count() == 0 )
+ bAtEnd = TRUE;
+ else
+ {
+ USHORT nTab = 0;
+ const ScRange* pFirst = aRanges.GetObject(0);
+ if (pFirst)
+ nTab = pFirst->aStart.Tab();
+ aPos = ScAddress(0,0,nTab);
+ CheckPos_Impl(); // aPos auf erste passende Zelle setzen
+ }
+}
+
+void ScCellsEnumeration::CheckPos_Impl()
+{
+ if (pDocShell)
+ {
+ BOOL bFound = FALSE;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScBaseCell* pCell = pDoc->GetCell(aPos);
+ if ( pCell && pCell->GetCellType() != CELLTYPE_NOTE )
+ {
+ if (!pMark)
+ {
+ pMark = new ScMarkData;
+ pMark->MarkFromRangeList( aRanges, FALSE );
+ pMark->MarkToMulti(); // needed for GetNextMarkedCell
+ }
+ bFound = pMark->IsCellMarked( aPos.Col(), aPos.Row() );
+ }
+ if (!bFound)
+ Advance_Impl();
+ }
+}
+
+ScCellsEnumeration::~ScCellsEnumeration()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+ delete pMark;
+}
+
+void ScCellsEnumeration::Advance_Impl()
+{
+ DBG_ASSERT(!bAtEnd,"zuviel Advance_Impl");
+ if (!pMark)
+ {
+ pMark = new ScMarkData;
+ pMark->MarkFromRangeList( aRanges, FALSE );
+ pMark->MarkToMulti(); // needed for GetNextMarkedCell
+ }
+
+ USHORT nCol = aPos.Col();
+ USHORT nRow = aPos.Row();
+ USHORT nTab = aPos.Tab();
+ BOOL bFound = pDocShell->GetDocument()->GetNextMarkedCell( nCol, nRow, nTab, *pMark );
+ if (bFound)
+ aPos.Set( nCol, nRow, nTab );
+ else
+ bAtEnd = TRUE; // kommt nix mehr
+}
+
+void ScCellsEnumeration::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ if (pDocShell)
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+ aRanges.UpdateReference( rRef.GetMode(), pDocShell->GetDocument(), rRef.GetRange(),
+ rRef.GetDx(), rRef.GetDy(), rRef.GetDz() );
+
+ delete pMark; // aus verschobenen Bereichen neu erzeugen
+ pMark = NULL;
+
+ if (!bAtEnd) // aPos anpassen
+ {
+ ScRangeList aNew;
+ aNew.Append(ScRange(aPos));
+ aNew.UpdateReference( rRef.GetMode(), pDocShell->GetDocument(), rRef.GetRange(),
+ rRef.GetDx(), rRef.GetDy(), rRef.GetDz() );
+ if (aNew.Count()==1)
+ {
+ aPos = aNew.GetObject(0)->aStart;
+ CheckPos_Impl();
+ }
+ }
+ }
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XEnumeration
+
+sal_Bool SAL_CALL ScCellsEnumeration::hasMoreElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return !bAtEnd;
+}
+
+uno::Any SAL_CALL ScCellsEnumeration::nextElement() throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell && !bAtEnd)
+ {
+ // Interface-Typ muss zu ScCellsObj::getElementType passen
+
+ uno::Any aAny;
+ uno::Reference<table::XCell> xCell = new ScCellObj( pDocShell, aPos );
+ aAny <<= xCell;
+ Advance_Impl();
+ return aAny;
+ }
+
+ throw container::NoSuchElementException(); // no more elements
+ return uno::Any();
+}
+
+//------------------------------------------------------------------------
+
+ScCellFormatsObj::ScCellFormatsObj(ScDocShell* pDocSh, const ScRange& rRange) :
+ pDocShell( pDocSh ),
+ aTotalRange( rRange )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->AddUnoObject(*this);
+
+ DBG_ASSERT( aTotalRange.aStart.Tab() == aTotalRange.aEnd.Tab(), "unterschiedliche Tabellen" );
+}
+
+ScCellFormatsObj::~ScCellFormatsObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScCellFormatsObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ //! aTotalRange...
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+ScCellRangeObj* ScCellFormatsObj::GetObjectByIndex_Impl(long nIndex) const
+{
+ //! direkt auf die AttrArrays zugreifen !!!!
+
+ ScCellRangeObj* pRet = NULL;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ long nPos = 0;
+ ScAttrRectIterator aIter( pDoc, aTotalRange.aStart.Tab(),
+ aTotalRange.aStart.Col(), aTotalRange.aStart.Row(),
+ aTotalRange.aEnd.Col(), aTotalRange.aEnd.Row() );
+ USHORT nCol1, nCol2, nRow1, nRow2;
+ while ( aIter.GetNext( nCol1, nCol2, nRow1, nRow2 ) )
+ {
+ if ( nPos == nIndex )
+ {
+ USHORT nTab = aTotalRange.aStart.Tab();
+ ScRange aNext( nCol1, nRow1, nTab, nCol2, nRow2, nTab );
+
+ if ( aNext.aStart == aNext.aEnd )
+ pRet = new ScCellObj( pDocShell, aNext.aStart );
+ else
+ pRet = new ScCellRangeObj( pDocShell, aNext );
+ }
+ ++nPos;
+ }
+ }
+ return pRet;
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScCellFormatsObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ //! direkt auf die AttrArrays zugreifen !!!!
+
+ long nCount = 0;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScAttrRectIterator aIter( pDoc, aTotalRange.aStart.Tab(),
+ aTotalRange.aStart.Col(), aTotalRange.aStart.Row(),
+ aTotalRange.aEnd.Col(), aTotalRange.aEnd.Row() );
+ USHORT nCol1, nCol2, nRow1, nRow2;
+ while ( aIter.GetNext( nCol1, nCol2, nRow1, nRow2 ) )
+ ++nCount;
+ }
+ return nCount;
+}
+
+uno::Any SAL_CALL ScCellFormatsObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ uno::Reference<table::XCellRange> xRange = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xRange.is())
+ aAny <<= xRange;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScCellFormatsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<table::XCellRange>*)0);
+}
+
+sal_Bool SAL_CALL ScCellFormatsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 ); //! immer groesser 0 ??
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScCellFormatsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return new ScCellFormatsEnumeration( pDocShell, aTotalRange );
+ return NULL;
+}
+
+//------------------------------------------------------------------------
+
+ScCellFormatsEnumeration::ScCellFormatsEnumeration(ScDocShell* pDocSh, const ScRange& rRange) :
+ pDocShell( pDocSh ),
+ nTab( rRange.aStart.Tab() ),
+ pIter( NULL ),
+ bAtEnd( FALSE ),
+ bDirty( FALSE )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->AddUnoObject(*this);
+
+ DBG_ASSERT( rRange.aStart.Tab() == rRange.aEnd.Tab(),
+ "CellFormatsEnumeration: unterschiedliche Tabellen" );
+
+ pIter = new ScAttrRectIterator( pDoc, nTab,
+ rRange.aStart.Col(), rRange.aStart.Row(),
+ rRange.aEnd.Col(), rRange.aEnd.Row() );
+ Advance_Impl();
+}
+
+ScCellFormatsEnumeration::~ScCellFormatsEnumeration()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+ delete pIter;
+}
+
+void ScCellFormatsEnumeration::Advance_Impl()
+{
+ DBG_ASSERT(!bAtEnd,"zuviel Advance_Impl");
+
+ if ( pIter )
+ {
+ if ( bDirty )
+ {
+ pIter->DataChanged(); // AttrArray-Index neu suchen
+ bDirty = FALSE;
+ }
+
+ USHORT nCol1, nCol2, nRow1, nRow2;
+ if ( pIter->GetNext( nCol1, nCol2, nRow1, nRow2 ) )
+ aNext = ScRange( nCol1, nRow1, nTab, nCol2, nRow2, nTab );
+ else
+ bAtEnd = TRUE; // kommt nix mehr
+ }
+ else
+ bAtEnd = TRUE; // Dok weggekommen oder so
+}
+
+ScCellRangeObj* ScCellFormatsEnumeration::NextObject_Impl()
+{
+ ScCellRangeObj* pRet = NULL;
+ if (pDocShell && !bAtEnd)
+ {
+ if ( aNext.aStart == aNext.aEnd )
+ pRet = new ScCellObj( pDocShell, aNext.aStart );
+ else
+ pRet = new ScCellRangeObj( pDocShell, aNext );
+ Advance_Impl();
+ }
+ return pRet;
+}
+
+void ScCellFormatsEnumeration::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ //! und nun ???
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) )
+ {
+ ULONG nId = ((const SfxSimpleHint&)rHint).GetId();
+ if ( nId == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ delete pIter;
+ pIter = NULL;
+ }
+ else if ( nId == SFX_HINT_DATACHANGED )
+ {
+ bDirty = TRUE; // AttrArray-Index evtl. ungueltig geworden
+ }
+ }
+}
+
+// XEnumeration
+
+sal_Bool SAL_CALL ScCellFormatsEnumeration::hasMoreElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return !bAtEnd;
+}
+
+uno::Any SAL_CALL ScCellFormatsEnumeration::nextElement() throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ if ( bAtEnd || !pDocShell )
+ throw container::NoSuchElementException(); // no more elements
+
+ // Interface-Typ muss zu ScCellFormatsObj::getElementType passen
+
+ uno::Any aAny;
+ uno::Reference<table::XCellRange> xRange = NextObject_Impl();
+ aAny <<= xRange;
+ return aAny;
+}
+
+
+
diff --git a/sc/source/ui/unoobj/chartuno.cxx b/sc/source/ui/unoobj/chartuno.cxx
new file mode 100644
index 000000000000..94f34be0c194
--- /dev/null
+++ b/sc/source/ui/unoobj/chartuno.cxx
@@ -0,0 +1,642 @@
+/*************************************************************************
+ *
+ * $RCSfile: chartuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <svx/svditer.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdundo.hxx>
+#include <sch/schdll.hxx>
+#include <sch/memchrt.hxx>
+#include <sch/schdll0.hxx>
+#include <so3/svstor.hxx>
+#include <sfx2/app.hxx>
+
+#include "chartuno.hxx"
+#include "miscuno.hxx"
+#include "docsh.hxx"
+#include "drwlayer.hxx"
+#include "undodat.hxx"
+#include "chartarr.hxx"
+#include "chartlis.hxx"
+#include "unoguard.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+SC_SIMPLE_SERVICE_INFO( ScChartObj, "ScChartObj", "com.sun.star.table.TableChart" )
+SC_SIMPLE_SERVICE_INFO( ScChartsObj, "ScChartsObj", "com.sun.star.table.TableCharts" )
+
+//------------------------------------------------------------------------
+
+SdrOle2Obj* lcl_FindChartObj( ScDocShell* pDocShell, USHORT nTab, const String& rName )
+{
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+ if (pDrawLayer)
+ {
+ SdrPage* pPage = pDrawLayer->GetPage(nTab);
+ DBG_ASSERT(pPage, "Page nicht gefunden");
+ if (pPage)
+ {
+ SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject)
+ {
+ if ( pObject->GetObjIdentifier() == OBJ_OLE2 && pDoc->IsChart(pObject) )
+ {
+ SvInPlaceObjectRef aIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
+ if (aIPObj.Is())
+ {
+ SvInfoObject* pInfoObj = pDocShell->Find( aIPObj );
+ if (pInfoObj)
+ {
+ if ( pInfoObj->GetObjName() == rName )
+ return (SdrOle2Obj*)pObject;
+ }
+ }
+ }
+ pObject = aIter.Next();
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+//------------------------------------------------------------------------
+
+ScChartsObj::ScChartsObj(ScDocShell* pDocSh, USHORT nT) :
+ pDocShell( pDocSh ),
+ nTab( nT )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScChartsObj::~ScChartsObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScChartsObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ //! Referenz-Update
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+ScChartObj* ScChartsObj::GetObjectByIndex_Impl(long nIndex) const
+{
+ String aName;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+ if (pDrawLayer)
+ {
+ SdrPage* pPage = pDrawLayer->GetPage(nTab);
+ DBG_ASSERT(pPage, "Page nicht gefunden");
+ if (pPage)
+ {
+ long nPos = 0;
+ SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject)
+ {
+ if ( pObject->GetObjIdentifier() == OBJ_OLE2 && pDoc->IsChart(pObject) )
+ {
+ if ( nPos == nIndex )
+ {
+ SvInPlaceObjectRef aIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
+ if (aIPObj.Is())
+ {
+ SvInfoObject* pInfoObj = pDocShell->Find( aIPObj );
+ if (pInfoObj)
+ aName = pInfoObj->GetObjName();
+ }
+ break; // nicht weitersuchen
+ }
+ ++nPos;
+ }
+ pObject = aIter.Next();
+ }
+ }
+ }
+ }
+
+ if (aName.Len())
+ return new ScChartObj( pDocShell, nTab, aName );
+ return NULL;
+}
+
+ScChartObj* ScChartsObj::GetObjectByName_Impl(const rtl::OUString& aName) const
+{
+ String aNameString = aName;
+ if ( lcl_FindChartObj( pDocShell, nTab, aNameString ) )
+ return new ScChartObj( pDocShell, nTab, aNameString );
+ return NULL;
+}
+
+// XTableCharts
+
+void SAL_CALL ScChartsObj::addNewByName( const rtl::OUString& aName,
+ const awt::Rectangle& aRect,
+ const uno::Sequence<table::CellRangeAddress>& aRanges,
+ sal_Bool bColumnHeaders, sal_Bool bRowHeaders )
+ throw(::com::sun::star::uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (!pDocShell)
+ return;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDrawLayer* pModel = pDocShell->MakeDrawLayer();
+ SdrPage* pPage = pModel->GetPage(nTab);
+ DBG_ASSERT(pPage,"addChart: keine Page");
+ if (!pPage)
+ return;
+
+ //! Name muss fuer OLE ueber alle Tabellen eindeutig sein !?!?!
+ //! Fehler, wenn Name schon vorhanden ????
+
+ String aNameString = aName;
+ if ( lcl_FindChartObj( pDocShell, nTab, aNameString ) )
+ aNameString.Erase(); // dann neu generieren
+
+ ScRangeList* pList = new ScRangeList;
+ USHORT nRangeCount = (USHORT)aRanges.getLength();
+ if (nRangeCount)
+ {
+ const table::CellRangeAddress* pAry = aRanges.getConstArray();
+ for (USHORT i=0; i<nRangeCount; i++)
+ {
+ ScRange aRange( pAry[i].StartColumn, pAry[i].StartRow, pAry[i].Sheet,
+ pAry[i].EndColumn, pAry[i].EndRow, pAry[i].Sheet );
+ pList->Append( aRange );
+ }
+ }
+ ScRangeListRef xNewRanges( pList );
+
+ SvStorageRef aStor = new SvStorage( String() );
+ SvInPlaceObjectRef aIPObj;
+ if ( SFX_APP()->HasFeature(SFX_FEATURE_SCHART) )
+ aIPObj = &((SvFactory*)SvInPlaceObject::ClassFactory())->CreateAndInit(
+ *SCH_MOD()->pSchChartDocShellFactory,
+ aStor );
+ if ( aIPObj.Is() )
+ {
+ SvEmbeddedInfoObject* pInfoObj = pDocShell->InsertObject( aIPObj, aNameString );
+ if ( pInfoObj )
+ {
+ String aObjName = pInfoObj->GetObjName(); // wirklich eingefuegter Name...
+
+ // Rechteck anpassen
+ //! Fehler/Exception, wenn leer/ungueltig ???
+ Point aRectPos( aRect.X, aRect.Y );
+ if (aRectPos.X() < 0) aRectPos.X() = 0;
+ if (aRectPos.Y() < 0) aRectPos.Y() = 0;
+ Size aRectSize( aRect.Width, aRect.Height );
+ if (aRectSize.Width() <= 0) aRectSize.Width() = 5000; // Default-Groesse
+ if (aRectSize.Height() <= 0) aRectSize.Height() = 5000;
+ Rectangle aInsRect( aRectPos, aRectSize );
+
+ Size aSize = aInsRect.GetSize();
+ aSize = Window::LogicToLogic( aSize, MapMode( MAP_100TH_MM ), MapMode( aIPObj->GetMapUnit() ) );
+ aIPObj->SetVisAreaSize(aSize);
+
+ Window* pWin = NULL;
+
+ ScChartArray aParam( pDoc, xNewRanges, String() );
+ aParam.SetHeaders( bColumnHeaders, bRowHeaders );
+ SchMemChart* pMemChart = aParam.CreateMemChart();
+ SchDLL::Update( aIPObj, pMemChart, pWin );
+ delete pMemChart;
+
+ ScChartListener* pChartListener =
+ new ScChartListener( aObjName, pDoc, xNewRanges );
+ pDoc->GetChartListenerCollection()->Insert( pChartListener );
+ pChartListener->StartListeningTo();
+
+ SdrOle2Obj* pObj = new SdrOle2Obj( aIPObj, aObjName, aInsRect );
+ pObj->SetOleLink(pInfoObj); //! erst nach Insert?
+
+ pPage->InsertObject( pObj );
+ pModel->AddUndo( new SdrUndoInsertObj( *pObj ) ); //! Undo-Kommentar?
+
+ // Dies veranlaesst Chart zum sofortigen Update
+ SvData aEmpty;
+ aIPObj->SendDataChanged( aEmpty );
+ aIPObj->SendViewChanged();
+ }
+ }
+}
+
+void SAL_CALL ScChartsObj::removeByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aName;
+ SdrOle2Obj* pObj = lcl_FindChartObj( pDocShell, nTab, aNameString );
+ if (pObj)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer(); // ist nicht 0
+ SdrPage* pPage = pModel->GetPage(nTab); // ist nicht 0
+
+ pModel->AddUndo( new SdrUndoRemoveObj( *pObj ) ); //! Undo-Kommentar?
+ pPage->RemoveObject( pObj->GetOrdNum() );
+
+ //! Notify etc.???
+ }
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScChartsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScChartsObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ INT32 nCount = 0;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+ if (pDrawLayer)
+ {
+ SdrPage* pPage = pDrawLayer->GetPage(nTab);
+ DBG_ASSERT(pPage, "Page nicht gefunden");
+ if (pPage)
+ {
+ SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject)
+ {
+ if ( pObject->GetObjIdentifier() == OBJ_OLE2 && pDoc->IsChart(pObject) )
+ ++nCount;
+ pObject = aIter.Next();
+ }
+ }
+ }
+ }
+ return nCount;
+}
+
+uno::Any SAL_CALL ScChartsObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<table::XTableChart> xChart = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ aAny <<= xChart;
+ return aAny;
+}
+
+uno::Type SAL_CALL ScChartsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<table::XTableChart>*)0);
+}
+
+sal_Bool SAL_CALL ScChartsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCount() != 0;
+}
+
+uno::Any SAL_CALL ScChartsObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<table::XTableChart> xChart = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ aAny <<= xChart;
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScChartsObj::getElementNames() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ long nCount = getCount();
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+
+ long nPos = 0;
+ ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+ if (pDrawLayer)
+ {
+ SdrPage* pPage = pDrawLayer->GetPage(nTab);
+ DBG_ASSERT(pPage, "Page nicht gefunden");
+ if (pPage)
+ {
+ SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject)
+ {
+ if ( pObject->GetObjIdentifier() == OBJ_OLE2 && pDoc->IsChart(pObject) )
+ {
+ String aName;
+ SvInPlaceObjectRef aIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
+ if (aIPObj.Is())
+ {
+ SvInfoObject* pInfoObj = pDocShell->Find( aIPObj );
+ if (pInfoObj)
+ aName = pInfoObj->GetObjName();
+ }
+ DBG_ASSERT(nPos<nCount, "huch, verzaehlt?");
+ pAry[nPos++] = aName;
+ }
+ pObject = aIter.Next();
+ }
+ }
+ }
+ DBG_ASSERT(nPos==nCount, "nanu, verzaehlt?");
+
+ return aSeq;
+ }
+ return uno::Sequence<rtl::OUString>(0);
+}
+
+sal_Bool SAL_CALL ScChartsObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aName;
+ return ( lcl_FindChartObj( pDocShell, nTab, aNameString ) != NULL );
+}
+
+//------------------------------------------------------------------------
+
+ScChartObj::ScChartObj(ScDocShell* pDocSh, USHORT nT, const String& rN) :
+ pDocShell( pDocSh ),
+ nTab( nT ),
+ aChartName( rN )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScChartObj::~ScChartObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScChartObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ //! Referenz-Update
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+void ScChartObj::GetData_Impl( ScRangeListRef& rRanges, BOOL& rColHeaders, BOOL& rRowHeaders ) const
+{
+ BOOL bFound = FALSE;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ SchMemChart* pOld = pDoc->FindChartData(aChartName);
+ if (pOld)
+ {
+ ScChartArray aData(pDoc,*pOld);
+ rRanges = aData.GetRangeList();
+ rColHeaders = aData.HasColHeaders();
+ rRowHeaders = aData.HasRowHeaders();
+ bFound = TRUE;
+ }
+ }
+ if (!bFound) // Default
+ {
+ rRanges = NULL;
+ rColHeaders = FALSE;
+ rRowHeaders = FALSE;
+ }
+}
+
+void ScChartObj::Update_Impl( const ScRangeListRef& rRanges, BOOL bColHeaders, BOOL bRowHeaders )
+{
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ Window* pWin = NULL;
+
+ pDocShell->GetUndoManager()->AddUndoAction(
+ new ScUndoChartData( pDocShell, aChartName, rRanges, bColHeaders, bRowHeaders, FALSE ) );
+ pDoc->UpdateChartArea( aChartName, rRanges, bColHeaders, bRowHeaders, FALSE, pWin );
+ }
+}
+
+// XTableChart
+
+sal_Bool SAL_CALL ScChartObj::getHasColumnHeaders() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRangeListRef xRanges;
+ BOOL bColHeaders, bRowHeaders;
+ GetData_Impl( xRanges, bColHeaders, bRowHeaders );
+ return bColHeaders;
+}
+
+void SAL_CALL ScChartObj::setHasColumnHeaders( sal_Bool bHasColumnHeaders )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRangeListRef xRanges;
+ BOOL bOldColHeaders, bOldRowHeaders;
+ GetData_Impl( xRanges, bOldColHeaders, bOldRowHeaders );
+ if ( bOldColHeaders != bHasColumnHeaders )
+ Update_Impl( xRanges, bHasColumnHeaders, bOldRowHeaders );
+}
+
+sal_Bool SAL_CALL ScChartObj::getHasRowHeaders() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRangeListRef xRanges;
+ BOOL bColHeaders, bRowHeaders;
+ GetData_Impl( xRanges, bColHeaders, bRowHeaders );
+ return bRowHeaders;
+}
+
+void SAL_CALL ScChartObj::setHasRowHeaders( sal_Bool bHasRowHeaders )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRangeListRef xRanges;
+ BOOL bOldColHeaders, bOldRowHeaders;
+ GetData_Impl( xRanges, bOldColHeaders, bOldRowHeaders );
+ if ( bOldRowHeaders != bHasRowHeaders )
+ Update_Impl( xRanges, bOldColHeaders, bHasRowHeaders );
+}
+
+uno::Sequence<table::CellRangeAddress> SAL_CALL ScChartObj::getRanges() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRangeListRef xRanges;
+ BOOL bColHeaders, bRowHeaders;
+ GetData_Impl( xRanges, bColHeaders, bRowHeaders );
+ if ( xRanges.Is() )
+ {
+ ULONG nCount = xRanges->Count();
+
+ table::CellRangeAddress aRangeAddress;
+ uno::Sequence<table::CellRangeAddress> aSeq(nCount);
+ table::CellRangeAddress* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScRange aRange = *xRanges->GetObject(i);
+
+ aRangeAddress.Sheet = aRange.aStart.Tab();
+ aRangeAddress.StartColumn = aRange.aStart.Col();
+ aRangeAddress.StartRow = aRange.aStart.Row();
+ aRangeAddress.EndColumn = aRange.aEnd.Col();
+ aRangeAddress.EndRow = aRange.aEnd.Row();
+
+ pAry[i] = aRangeAddress;
+ }
+ return aSeq;
+ }
+
+ DBG_ERROR("ScChartObj::getRanges: keine Ranges");
+ return uno::Sequence<table::CellRangeAddress>();
+}
+
+void SAL_CALL ScChartObj::setRanges( const uno::Sequence<table::CellRangeAddress>& aRanges )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRangeListRef xOldRanges;
+ BOOL bColHeaders, bRowHeaders;
+ GetData_Impl( xOldRanges, bColHeaders, bRowHeaders );
+
+ ScRangeList* pList = new ScRangeList;
+ USHORT nRangeCount = (USHORT)aRanges.getLength();
+ if (nRangeCount)
+ {
+ const table::CellRangeAddress* pAry = aRanges.getConstArray();
+ for (USHORT i=0; i<nRangeCount; i++)
+ {
+ ScRange aRange( pAry[i].StartColumn, pAry[i].StartRow, pAry[i].Sheet,
+ pAry[i].EndColumn, pAry[i].EndRow, pAry[i].Sheet );
+ pList->Append( aRange );
+ }
+ }
+ ScRangeListRef xNewRanges( pList );
+
+ if ( !xOldRanges.Is() || *xOldRanges != *xNewRanges )
+ Update_Impl( xNewRanges, bColHeaders, bRowHeaders );
+}
+
+// XEmbeddedObjectSupplier
+
+uno::Reference<lang::XComponent> SAL_CALL ScChartObj::getEmbeddedObject() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SdrOle2Obj* pObject = lcl_FindChartObj( pDocShell, nTab, aChartName );
+ if (pObject)
+ {
+ SvInPlaceObjectRef aIPObj = pObject->GetObjRef();
+ if (aIPObj.Is())
+ {
+ SfxInPlaceObjectRef aSfxObj( aIPObj );
+ if (aSfxObj.Is())
+ {
+ SfxObjectShell* pObjSh = aSfxObj->GetObjectShell();
+ if (pObjSh)
+ return pObjSh->GetBaseModel().get();
+ }
+ }
+ }
+ return NULL;
+}
+
+//------------------------------------------------------------------------
+
+
+
diff --git a/sc/source/ui/unoobj/convuno.cxx b/sc/source/ui/unoobj/convuno.cxx
new file mode 100644
index 000000000000..d2186c4cb274
--- /dev/null
+++ b/sc/source/ui/unoobj/convuno.cxx
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: convuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <tools/debug.hxx>
+#include <tools/isolang.hxx>
+
+#include "convuno.hxx"
+#include "global.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+// everything is static...
+
+void ScUnoConversion::FillRange( ScRange& rDest, const table::CellRangeAddress& rSource )
+{
+ rDest.aStart.Set( rSource.StartColumn, rSource.StartRow, rSource.Sheet );
+ rDest.aEnd.Set( rSource.EndColumn, rSource.EndRow, rSource.Sheet );
+}
+
+void ScUnoConversion::FillAddress( table::CellRangeAddress& rDest, const ScRange& rSource )
+{
+ DBG_ASSERT( rSource.aStart.Tab() == rSource.aEnd.Tab(),
+ "FillAddress: unterschiedliche Tabellen" );
+
+ rDest.Sheet = rSource.aStart.Tab();
+ rDest.StartColumn = rSource.aStart.Col();
+ rDest.StartRow = rSource.aStart.Row();
+ rDest.EndColumn = rSource.aEnd.Col();
+ rDest.EndRow = rSource.aEnd.Row();
+}
+
+LanguageType ScUnoConversion::GetLanguage( const lang::Locale& rLocale )
+{
+ // empty language -> LANGUAGE_SYSTEM
+ if ( rLocale.Language.getLength() == 0 )
+ return LANGUAGE_SYSTEM;
+
+ String aLangStr = rLocale.Language;
+ String aCtryStr = rLocale.Country;
+ // Variant is ignored
+
+ LanguageType eRet = ConvertIsoNamesToLanguage( aLangStr, aCtryStr );
+ if ( eRet == LANGUAGE_NONE )
+ eRet = LANGUAGE_SYSTEM; //! or throw an exception?
+
+ return eRet;
+}
+
+void ScUnoConversion::FillLocale( lang::Locale& rLocale, LanguageType eLang )
+{
+ String aLangStr, aCtryStr;
+ ConvertLanguageToIsoNames( eLang, aLangStr, aCtryStr );
+ rLocale.Language = aLangStr;
+ rLocale.Country = aCtryStr;
+}
+
+
+
diff --git a/sc/source/ui/unoobj/cursuno.cxx b/sc/source/ui/unoobj/cursuno.cxx
new file mode 100644
index 000000000000..364d2f7178db
--- /dev/null
+++ b/sc/source/ui/unoobj/cursuno.cxx
@@ -0,0 +1,568 @@
+/*************************************************************************
+ *
+ * $RCSfile: cursuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "scitems.hxx"
+#include <svtools/intitem.hxx>
+#include <svtools/zforlist.hxx>
+#include <rtl/uuid.h>
+
+#include "cursuno.hxx"
+#include "cellsuno.hxx"
+#include "docsh.hxx"
+#include "hints.hxx"
+#include "markdata.hxx"
+#include "dociter.hxx"
+#include "cell.hxx"
+#include "unoguard.hxx"
+#include "miscuno.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+#define SCSHEETCELLCURSOR_SERVICE "com.sun.star.sheet.SheetCellCursor"
+#define SCCELLCURSOR_SERVICE "com.sun.star.table.CellCursor"
+
+//------------------------------------------------------------------------
+
+ScCellCursorObj::ScCellCursorObj(ScDocShell* pDocSh, const ScRange& rR) :
+ ScCellRangeObj( pDocSh, rR )
+{
+}
+
+ScCellCursorObj::~ScCellCursorObj()
+{
+}
+
+uno::Any SAL_CALL ScCellCursorObj::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( sheet::XSheetCellCursor )
+ SC_QUERYINTERFACE( sheet::XUsedAreaCursor )
+ SC_QUERYINTERFACE( table::XCellCursor )
+
+ return ScCellRangeObj::queryInterface( rType );
+}
+
+void SAL_CALL ScCellCursorObj::acquire() throw(uno::RuntimeException)
+{
+ ScCellRangeObj::acquire();
+}
+
+void SAL_CALL ScCellCursorObj::release() throw(uno::RuntimeException)
+{
+ ScCellRangeObj::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScCellCursorObj::getTypes() throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ uno::Sequence<uno::Type> aParentTypes = ScCellRangeObj::getTypes();
+ long nParentLen = aParentTypes.getLength();
+ const uno::Type* pParentPtr = aParentTypes.getConstArray();
+
+ aTypes.realloc( nParentLen + 3 );
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[nParentLen + 0] = getCppuType((const uno::Reference<sheet::XSheetCellCursor>*)0);
+ pPtr[nParentLen + 1] = getCppuType((const uno::Reference<sheet::XUsedAreaCursor>*)0);
+ pPtr[nParentLen + 2] = getCppuType((const uno::Reference<table::XCellCursor>*)0);
+
+ for (long i=0; i<nParentLen; i++)
+ pPtr[i] = pParentPtr[i]; // parent types first
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScCellCursorObj::getImplementationId() throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+// XSheetCellCursor
+
+void SAL_CALL ScCellCursorObj::collapseToCurrentRegion() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aRange = *rRanges.GetObject(0);
+
+ aRange.Justify();
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ USHORT nStartCol = aRange.aStart.Col();
+ USHORT nStartRow = aRange.aStart.Row();
+ USHORT nEndCol = aRange.aEnd.Col();
+ USHORT nEndRow = aRange.aEnd.Row();
+ USHORT nTab = aRange.aStart.Tab();
+
+ pDocSh->GetDocument()->GetDataArea(
+ nTab, nStartCol, nStartRow, nEndCol, nEndRow, TRUE );
+
+ ScRange aNew( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab );
+ SetNewRange( aNew );
+ }
+}
+
+void SAL_CALL ScCellCursorObj::collapseToCurrentArray() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aRange = *rRanges.GetObject(0);
+
+ aRange.Justify();
+ ScAddress aCursor = aRange.aStart; // bei Block immer den Start nehmen
+ ScAddress aOrigin = aCursor;
+ BOOL bFound = FALSE;
+
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScBaseCell* pCell = pDoc->GetCell( aCursor );
+ if (pCell && pCell->GetCellType() == CELLTYPE_FORMULA)
+ {
+ if ( ((ScFormulaCell*)pCell)->GetMatrixOrigin( aOrigin ) )
+ {
+ if ( aOrigin != aCursor )
+ pCell = pDoc->GetCell( aOrigin );
+ if (pCell && pCell->GetCellType() == CELLTYPE_FORMULA)
+ {
+ USHORT nSizeX, nSizeY;
+ ((ScFormulaCell*)pCell)->GetMatColsRows(nSizeX,nSizeY);
+ if ( !(nSizeX && nSizeY) )
+ {
+ // GetMatrixEdge computes also dimensions of the matrix
+ // if not already done (may occur if document is loaded
+ // from old file format).
+ // Needs an "invalid" initialized address.
+ aOrigin = UINT32(0xffffffff);
+ ((ScFormulaCell*)pCell)->GetMatrixEdge(aOrigin);
+ ((ScFormulaCell*)pCell)->GetMatColsRows(nSizeX,nSizeY);
+ }
+ if ( nSizeX && nSizeY )
+ {
+ ScAddress aEnd( aOrigin.Col() + nSizeX - 1,
+ aOrigin.Row() + nSizeY - 1,
+ aOrigin.Tab() );
+ ScRange aNew( aOrigin, aEnd );
+ SetNewRange( aNew );
+ bFound = TRUE;
+ }
+ }
+ }
+ }
+ }
+ // thats a Bug, that this assertion comes; the API Reference says, that
+ // if there is no Matrix, the Range is left unchanged; they says nothing
+ // about a exception
+ /*if (!bFound)
+ {
+ DBG_ERROR("keine Matrix");
+ //! Exception, oder was?
+ }*/
+}
+
+void SAL_CALL ScCellCursorObj::collapseToMergedArea() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aNewRange = *rRanges.GetObject(0);
+
+ ScDocument* pDoc = pDocSh->GetDocument();
+ pDoc->ExtendOverlapped( aNewRange );
+ pDoc->ExtendMerge( aNewRange ); // after ExtendOverlapped!
+
+ SetNewRange( aNewRange );
+ }
+}
+
+void SAL_CALL ScCellCursorObj::expandToEntireColumns() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aNewRange = *rRanges.GetObject(0);
+
+ aNewRange.aStart.SetRow( 0 );
+ aNewRange.aEnd.SetRow( MAXROW );
+
+ SetNewRange( aNewRange );
+}
+
+void SAL_CALL ScCellCursorObj::expandToEntireRows() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aNewRange = *rRanges.GetObject(0);
+
+ aNewRange.aStart.SetCol( 0 );
+ aNewRange.aEnd.SetCol( MAXCOL );
+
+ SetNewRange( aNewRange );
+}
+
+void SAL_CALL ScCellCursorObj::collapseToSize( sal_Int32 nColumns, sal_Int32 nRows )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( nColumns <= 0 || nRows <= 0 )
+ {
+ DBG_ERROR("leerer Range geht nicht");
+ //! und dann?
+ }
+ else
+ {
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aNewRange = *rRanges.GetObject(0);
+
+ aNewRange.Justify(); //! wirklich?
+
+ long nEndX = aNewRange.aStart.Col() + nColumns - 1;
+ long nEndY = aNewRange.aStart.Row() + nRows - 1;
+ if ( nEndX < 0 ) nEndX = 0;
+ if ( nEndX > MAXCOL ) nEndX = MAXCOL;
+ if ( nEndY < 0 ) nEndY = 0;
+ if ( nEndY > MAXROW ) nEndY = MAXROW;
+ //! Fehler/Exception oder so, wenn zu gross/zu klein?
+
+ aNewRange.aEnd.SetCol(nEndX);
+ aNewRange.aEnd.SetRow(nEndY);
+
+ aNewRange.Justify(); //! wirklich?
+
+ SetNewRange( aNewRange );
+ }
+}
+
+// XUsedAreaCursor
+
+void SAL_CALL ScCellCursorObj::gotoStartOfUsedArea( sal_Bool bExpand )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aNewRange = *rRanges.GetObject(0);
+ USHORT nTab = aNewRange.aStart.Tab();
+
+ USHORT nUsedX = 0; // Anfang holen
+ USHORT nUsedY = 0;
+ if (!pDocSh->GetDocument()->GetDataStart( nTab, nUsedX, nUsedY ))
+ nUsedX = nUsedY = 0;
+
+ aNewRange.aStart.SetCol( nUsedX );
+ aNewRange.aStart.SetRow( nUsedY );
+ if (!bExpand)
+ aNewRange.aEnd = aNewRange.aStart;
+ SetNewRange( aNewRange );
+ }
+}
+
+void SAL_CALL ScCellCursorObj::gotoEndOfUsedArea( sal_Bool bExpand )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aNewRange = *rRanges.GetObject(0);
+ USHORT nTab = aNewRange.aStart.Tab();
+
+ USHORT nUsedX = 0; // Ende holen
+ USHORT nUsedY = 0;
+ if (!pDocSh->GetDocument()->GetTableArea( nTab, nUsedX, nUsedY ))
+ nUsedX = nUsedY = 0;
+
+ aNewRange.aEnd.SetCol( nUsedX );
+ aNewRange.aEnd.SetRow( nUsedY );
+ if (!bExpand)
+ aNewRange.aStart = aNewRange.aEnd;
+ SetNewRange( aNewRange );
+ }
+}
+
+// XCellCursor
+
+void SAL_CALL ScCellCursorObj::gotoStart() throw(uno::RuntimeException)
+{
+ // this is similar to collapseToCurrentRegion
+ //! something like gotoEdge with 4 possible directions is needed
+
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aRange = *rRanges.GetObject(0);
+
+ aRange.Justify();
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ USHORT nStartCol = aRange.aStart.Col();
+ USHORT nStartRow = aRange.aStart.Row();
+ USHORT nEndCol = aRange.aEnd.Col();
+ USHORT nEndRow = aRange.aEnd.Row();
+ USHORT nTab = aRange.aStart.Tab();
+
+ pDocSh->GetDocument()->GetDataArea(
+ nTab, nStartCol, nStartRow, nEndCol, nEndRow, FALSE );
+
+ ScRange aNew( nStartCol, nStartRow, nTab );
+ SetNewRange( aNew );
+ }
+}
+
+void SAL_CALL ScCellCursorObj::gotoEnd() throw(uno::RuntimeException)
+{
+ // this is similar to collapseToCurrentRegion
+ //! something like gotoEdge with 4 possible directions is needed
+
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aRange = *rRanges.GetObject(0);
+
+ aRange.Justify();
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ {
+ USHORT nStartCol = aRange.aStart.Col();
+ USHORT nStartRow = aRange.aStart.Row();
+ USHORT nEndCol = aRange.aEnd.Col();
+ USHORT nEndRow = aRange.aEnd.Row();
+ USHORT nTab = aRange.aStart.Tab();
+
+ pDocSh->GetDocument()->GetDataArea(
+ nTab, nStartCol, nStartRow, nEndCol, nEndRow, FALSE );
+
+ ScRange aNew( nEndCol, nEndRow, nTab );
+ SetNewRange( aNew );
+ }
+}
+
+void SAL_CALL ScCellCursorObj::gotoNext() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aRange = *rRanges.GetObject(0);
+
+ aRange.Justify();
+ ScAddress aCursor = aRange.aStart; // bei Block immer den Start nehmen
+
+ ScMarkData aMark; // not used with bMarked=FALSE
+ USHORT nNewX = aCursor.Col();
+ USHORT nNewY = aCursor.Row();
+ USHORT nTab = aCursor.Tab();
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ pDocSh->GetDocument()->GetNextPos( nNewX,nNewY, nTab, 1,0, FALSE,TRUE, aMark );
+ //! sonst Exception oder so
+
+ SetNewRange( ScRange( nNewX, nNewY, nTab ) );
+}
+
+void SAL_CALL ScCellCursorObj::gotoPrevious() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aRange = *rRanges.GetObject(0);
+
+ aRange.Justify();
+ ScAddress aCursor = aRange.aStart; // bei Block immer den Start nehmen
+
+ ScMarkData aMark; // not used with bMarked=FALSE
+ USHORT nNewX = aCursor.Col();
+ USHORT nNewY = aCursor.Row();
+ USHORT nTab = aCursor.Tab();
+ ScDocShell* pDocSh = GetDocShell();
+ if ( pDocSh )
+ pDocSh->GetDocument()->GetNextPos( nNewX,nNewY, nTab, -1,0, FALSE,TRUE, aMark );
+ //! sonst Exception oder so
+
+ SetNewRange( ScRange( nNewX, nNewY, nTab ) );
+}
+
+void SAL_CALL ScCellCursorObj::gotoOffset( sal_Int32 nColumnOffset, sal_Int32 nRowOffset )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ const ScRangeList& rRanges = GetRangeList();
+ DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" );
+ ScRange aRange = *rRanges.GetObject(0);
+ aRange.Justify();
+
+ if ( aRange.aStart.Col() + nColumnOffset >= 0 &&
+ aRange.aEnd.Col() + nColumnOffset <= MAXCOL &&
+ aRange.aStart.Row() + nRowOffset >= 0 &&
+ aRange.aEnd.Row() + nRowOffset <= MAXROW )
+ {
+ ScRange aNew( aRange.aStart.Col() + nColumnOffset,
+ aRange.aStart.Row() + nRowOffset,
+ aRange.aStart.Tab(),
+ aRange.aEnd.Col() + nColumnOffset,
+ aRange.aEnd.Row() + nRowOffset,
+ aRange.aEnd.Tab() );
+ SetNewRange( aNew );
+ }
+}
+
+// XSheetCellRange
+
+uno::Reference<sheet::XSpreadsheet> SAL_CALL ScCellCursorObj::getSpreadsheet()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ScCellRangeObj::getSpreadsheet();
+}
+
+// XCellRange
+
+uno::Reference<table::XCell> SAL_CALL ScCellCursorObj::getCellByPosition(
+ sal_Int32 nColumn, sal_Int32 nRow )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ScCellRangeObj::getCellByPosition(nColumn,nRow);
+}
+
+uno::Reference<table::XCellRange> SAL_CALL ScCellCursorObj::getCellRangeByPosition(
+ sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ScCellRangeObj::getCellRangeByPosition(nLeft,nTop,nRight,nBottom);
+}
+
+uno::Reference<table::XCellRange> SAL_CALL ScCellCursorObj::getCellRangeByName(
+ const rtl::OUString& aRange ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ScCellRangeObj::getCellRangeByName(aRange);
+}
+
+// XServiceInfo
+
+rtl::OUString SAL_CALL ScCellCursorObj::getImplementationName() throw(uno::RuntimeException)
+{
+ return rtl::OUString::createFromAscii( "ScCellCursorObj" );
+}
+
+sal_Bool SAL_CALL ScCellCursorObj::supportsService( const rtl::OUString& rServiceName )
+ throw(uno::RuntimeException)
+{
+ String aServiceStr( rServiceName );
+ return aServiceStr.EqualsAscii( SCSHEETCELLCURSOR_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCCELLCURSOR_SERVICE ) ||
+ ScCellRangeObj::supportsService(rServiceName);
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScCellCursorObj::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ // get all service names from cell range
+ uno::Sequence<rtl::OUString> aParentSeq = ScCellRangeObj::getSupportedServiceNames();
+ UINT32 nParentLen = aParentSeq.getLength();
+ const rtl::OUString* pParentArr = aParentSeq.getConstArray();
+
+ // SheetCellCursor should be first (?)
+ uno::Sequence<rtl::OUString> aTotalSeq( nParentLen + 2 );
+ rtl::OUString* pTotalArr = aTotalSeq.getArray();
+ pTotalArr[0] = rtl::OUString::createFromAscii( SCSHEETCELLCURSOR_SERVICE );
+ pTotalArr[1] = rtl::OUString::createFromAscii( SCCELLCURSOR_SERVICE );
+
+ // append cell range services
+ for (long i=0; i<nParentLen; i++)
+ pTotalArr[i+2] = pParentArr[i];
+
+ return aTotalSeq;
+}
+
+
+
+
diff --git a/sc/source/ui/unoobj/dapiuno.cxx b/sc/source/ui/unoobj/dapiuno.cxx
new file mode 100644
index 000000000000..ef7e54ae8641
--- /dev/null
+++ b/sc/source/ui/unoobj/dapiuno.cxx
@@ -0,0 +1,1740 @@
+/*************************************************************************
+ *
+ * $RCSfile: dapiuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <svtools/smplhint.hxx>
+#include <rtl/uuid.h>
+
+#include "dapiuno.hxx"
+#include "datauno.hxx"
+#include "miscuno.hxx"
+#include "docsh.hxx"
+#include "pivot.hxx"
+#include "rangeutl.hxx"
+#include "unoguard.hxx"
+#include "dpobject.hxx"
+#include "dpshttab.hxx"
+#include "dbdocfun.hxx"
+#include "unonames.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+const SfxItemPropertyMap* lcl_GetDataPilotFieldMap()
+{
+ static SfxItemPropertyMap aDataPilotFieldMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_FUNCTION), 0, &getCppuType((sheet::GeneralFunction*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ORIENT), 0, &getCppuType((sheet::DataPilotFieldOrientation*)0), 0, 0 },
+ {0,0,0,0}
+ };
+ return aDataPilotFieldMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+SC_SIMPLE_SERVICE_INFO( ScDataPilotDescriptor, "ScDataPilotDescriptor", "stardiv::one::sheet::DataPilotDescriptor" )
+SC_SIMPLE_SERVICE_INFO( ScDataPilotFieldObj, "ScDataPilotFieldObj", "com.sun.star.sheet.DataPilotField" )
+SC_SIMPLE_SERVICE_INFO( ScDataPilotFieldsObj, "ScDataPilotFieldsObj", "com.sun.star.sheet.DataPilotFields" )
+SC_SIMPLE_SERVICE_INFO( ScDataPilotTableObj, "ScDataPilotTableObj", "com.sun.star.sheet.DataPilotTable" )
+SC_SIMPLE_SERVICE_INFO( ScDataPilotTablesObj, "ScDataPilotTablesObj", "com.sun.star.sheet.DataPilotTables" )
+
+//------------------------------------------------------------------------
+
+//! irgendwann ueberall die neuen enum-Werte benutzen
+#define DATA_PILOT_HIDDEN sheet::DataPilotFieldOrientation_HIDDEN
+#define DATA_PILOT_COLUMN sheet::DataPilotFieldOrientation_COLUMN
+#define DATA_PILOT_ROW sheet::DataPilotFieldOrientation_ROW
+#define DATA_PILOT_PAGE sheet::DataPilotFieldOrientation_PAGE
+#define DATA_PILOT_DATA sheet::DataPilotFieldOrientation_DATA
+
+//------------------------------------------------------------------------
+
+USHORT lcl_BitCount( USHORT nBits )
+{
+ if (!nBits) return 0;
+
+ USHORT nCount = 0;
+ USHORT nMask = 1;
+ for (USHORT i=0; i<16; i++)
+ {
+ if ( nBits & nMask )
+ ++nCount;
+ nMask <<= 1;
+ }
+ return nCount;
+}
+
+USHORT lcl_DataCount( const ScPivotParam& rParam )
+{
+ USHORT nRet = 0;
+ for ( USHORT i=0; i<rParam.nDataCount; i++ )
+ nRet += lcl_BitCount( rParam.aDataArr[i].nFuncMask ); // nFuncCount stimmt nicht
+ return nRet;
+}
+
+BOOL lcl_GetDataArrayPos( const ScPivotParam& rParam, USHORT nIndex,
+ USHORT& rArrayPos, USHORT& rFuncBit )
+{
+ USHORT nPos = 0;
+ for ( USHORT i=0; i<rParam.nDataCount; i++ )
+ {
+ USHORT nBits = rParam.aDataArr[i].nFuncMask;
+ USHORT nMask = 1;
+ for (USHORT nBP=0; nBP<16; nBP++)
+ {
+ if ( nBits & nMask )
+ {
+ if ( nPos == nIndex )
+ {
+ rArrayPos = nPos;
+ rFuncBit = nMask;
+ return TRUE;
+ }
+ ++nPos;
+ }
+ nMask <<= 1;
+ }
+ }
+ rArrayPos = 0;
+ rFuncBit = 0;
+ return FALSE;
+}
+
+ScDPObject* lcl_GetDPObject( ScDocShell* pDocShell, USHORT nTab, const String& rName )
+{
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDPCollection* pColl = pDoc->GetDPCollection();
+ if ( pColl )
+ {
+ USHORT nCount = pColl->GetCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScDPObject* pDPObj = (*pColl)[i];
+ if ( pDPObj->IsSheetData() &&
+ pDPObj->GetOutRange().aStart.Tab() == nTab &&
+ pDPObj->GetName() == rName )
+ return pDPObj;
+ }
+ }
+ }
+ return NULL; // nicht gefunden
+}
+
+String lcl_ColumnTitle( ScDocument* pDoc, USHORT nCol, USHORT nRow, USHORT nTab )
+{
+ // Spaltennamen, wie sie in der Pivottabelle angezeigt werden
+ String aStr;
+ pDoc->GetString(nCol, nRow, nTab, aStr);
+ if (aStr.Len() == 0)
+ aStr = ColToAlpha( nCol );
+ return aStr;
+}
+
+sheet::GeneralFunction ScDataPilotConversion::FirstFunc( USHORT nBits )
+{
+ if ( nBits & PIVOT_FUNC_SUM ) return sheet::GeneralFunction_SUM;
+ if ( nBits & PIVOT_FUNC_COUNT ) return sheet::GeneralFunction_COUNT;
+ if ( nBits & PIVOT_FUNC_AVERAGE ) return sheet::GeneralFunction_AVERAGE;
+ if ( nBits & PIVOT_FUNC_MAX ) return sheet::GeneralFunction_MAX;
+ if ( nBits & PIVOT_FUNC_MIN ) return sheet::GeneralFunction_MIN;
+ if ( nBits & PIVOT_FUNC_PRODUCT ) return sheet::GeneralFunction_PRODUCT;
+ if ( nBits & PIVOT_FUNC_COUNT_NUM ) return sheet::GeneralFunction_COUNTNUMS;
+ if ( nBits & PIVOT_FUNC_STD_DEV ) return sheet::GeneralFunction_STDEV;
+ if ( nBits & PIVOT_FUNC_STD_DEVP ) return sheet::GeneralFunction_STDEVP;
+ if ( nBits & PIVOT_FUNC_STD_VAR ) return sheet::GeneralFunction_VAR;
+ if ( nBits & PIVOT_FUNC_STD_VARP ) return sheet::GeneralFunction_VARP;
+ if ( nBits & PIVOT_FUNC_AUTO ) return sheet::GeneralFunction_AUTO;
+ return sheet::GeneralFunction_NONE;
+}
+
+USHORT ScDataPilotConversion::FunctionBit( sheet::GeneralFunction eFunc )
+{
+ USHORT nRet = PIVOT_FUNC_NONE; // 0
+ switch (eFunc)
+ {
+ case sheet::GeneralFunction_SUM: nRet = PIVOT_FUNC_SUM; break;
+ case sheet::GeneralFunction_COUNT: nRet = PIVOT_FUNC_COUNT; break;
+ case sheet::GeneralFunction_AVERAGE: nRet = PIVOT_FUNC_AVERAGE; break;
+ case sheet::GeneralFunction_MAX: nRet = PIVOT_FUNC_MAX; break;
+ case sheet::GeneralFunction_MIN: nRet = PIVOT_FUNC_MIN; break;
+ case sheet::GeneralFunction_PRODUCT: nRet = PIVOT_FUNC_PRODUCT; break;
+ case sheet::GeneralFunction_COUNTNUMS: nRet = PIVOT_FUNC_COUNT_NUM; break;
+ case sheet::GeneralFunction_STDEV: nRet = PIVOT_FUNC_STD_DEV; break;
+ case sheet::GeneralFunction_STDEVP: nRet = PIVOT_FUNC_STD_DEVP; break;
+ case sheet::GeneralFunction_VAR: nRet = PIVOT_FUNC_STD_VAR; break;
+ case sheet::GeneralFunction_VARP: nRet = PIVOT_FUNC_STD_VARP; break;
+ case sheet::GeneralFunction_AUTO: nRet = PIVOT_FUNC_AUTO; break;
+ }
+ return nRet;
+}
+
+String lcl_CreatePivotName( ScDocShell* pDocShell )
+{
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDPCollection* pColl = pDoc->GetDPCollection();
+ if ( pColl )
+ return pColl->CreateNewName();
+ }
+ return String(); // sollte nicht vorkommen
+}
+
+//------------------------------------------------------------------------
+
+ScDataPilotTablesObj::ScDataPilotTablesObj(ScDocShell* pDocSh, USHORT nT) :
+ pDocShell( pDocSh ),
+ nTab( nT )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScDataPilotTablesObj::~ScDataPilotTablesObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScDataPilotTablesObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ //! Referenz-Update
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XDataPilotTables
+
+ScDataPilotTableObj* ScDataPilotTablesObj::GetObjectByIndex_Impl(USHORT nIndex)
+{
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDPCollection* pColl = pDoc->GetDPCollection();
+ if ( pColl )
+ {
+ // count tables on this sheet
+ // api only handles sheet data at this time
+ //! allow all data sources!!!
+ USHORT nFound = 0;
+ USHORT nCount = pColl->GetCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScDPObject* pDPObj = (*pColl)[i];
+ if ( pDPObj->IsSheetData() && pDPObj->GetOutRange().aStart.Tab() == nTab )
+ {
+ if ( nFound == nIndex )
+ {
+ String aName = pDPObj->GetName();
+ return new ScDataPilotTableObj( pDocShell, nTab, aName );
+ }
+ ++nFound;
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+ScDataPilotTableObj* ScDataPilotTablesObj::GetObjectByName_Impl(const rtl::OUString& aName)
+{
+ if (hasByName(aName))
+ {
+ String aNamStr = aName;
+ return new ScDataPilotTableObj( pDocShell, nTab, aNamStr );
+ }
+ return NULL;
+}
+
+uno::Reference<sheet::XDataPilotDescriptor> SAL_CALL ScDataPilotTablesObj::createDataPilotDescriptor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return new ScDataPilotDescriptor(pDocShell);
+ return NULL;
+}
+
+void SAL_CALL ScDataPilotTablesObj::insertNewByName( const rtl::OUString& aNewName,
+ const table::CellAddress& aOutputAddress,
+ const uno::Reference<sheet::XDataPilotDescriptor>& xDescriptor )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (!xDescriptor.is()) return;
+
+ // inserting with already existing name?
+ if ( aNewName.getLength() && hasByName( aNewName ) )
+ throw uno::RuntimeException(); // no other exceptions specified
+
+ BOOL bDone = FALSE;
+ ScDataPilotDescriptorBase* pImp = ScDataPilotDescriptorBase::getImplementation( xDescriptor );
+ if ( pDocShell && pImp )
+ {
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pImp->GetParam( aParam, aQuery, aSrcArea );
+
+ aParam.nCol = aOutputAddress.Column;
+ aParam.nRow = aOutputAddress.Row;
+ aParam.nTab = aOutputAddress.Sheet;
+
+ // in den Uno-Objekten sind alle Fields in den Descriptoren innerhalb des Bereichs gezaehlt
+
+ short nFieldStart = aSrcArea.nColStart;
+ USHORT i;
+ for ( i=0; i<aParam.nColCount; i++ )
+ if ( aParam.aColArr[i].nCol != PIVOT_DATA_FIELD )
+ aParam.aColArr[i].nCol += nFieldStart;
+ for ( i=0; i<aParam.nRowCount; i++ )
+ if ( aParam.aRowArr[i].nCol != PIVOT_DATA_FIELD )
+ aParam.aRowArr[i].nCol += nFieldStart;
+ for ( i=0; i<aParam.nDataCount; i++ )
+ if ( aParam.aDataArr[i].nCol != PIVOT_DATA_FIELD )
+ aParam.aDataArr[i].nCol += nFieldStart;
+
+ // Daten-Eintrag hinzufuegen, wenn noch nicht vorhanden
+
+ BOOL bDataFound = FALSE;
+ for ( i=0; i<aParam.nColCount; i++ )
+ if ( aParam.aColArr[i].nCol == PIVOT_DATA_FIELD )
+ bDataFound = TRUE;
+ for ( i=0; i<aParam.nRowCount; i++ )
+ if ( aParam.aRowArr[i].nCol == PIVOT_DATA_FIELD )
+ bDataFound = TRUE;
+ if (!bDataFound)
+ {
+ if ( aParam.nRowCount < PIVOT_MAXFIELD )
+ aParam.aRowArr[aParam.nRowCount++].nCol = PIVOT_DATA_FIELD;
+ else if ( aParam.nColCount < PIVOT_MAXFIELD )
+ aParam.aColArr[aParam.nColCount++].nCol = PIVOT_DATA_FIELD;
+ else
+ throw uno::RuntimeException(); // no space for data field
+ }
+
+ String aName = aNewName;
+ if (!aName.Len())
+ aName = lcl_CreatePivotName( pDocShell );
+ String aTag = xDescriptor->getTag();
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScPivot* pNewPivot = new ScPivot( pDoc );
+ pNewPivot->SetName( aName );
+ pNewPivot->SetTag( aTag );
+ pNewPivot->SetParam( aParam, aQuery, aSrcArea );
+
+ ScDPObject* pNewObj = new ScDPObject( pDoc );
+ pNewObj->InitFromOldPivot( *pNewPivot, pDoc, TRUE );
+
+ ScDBDocFunc aFunc(*pDocShell);
+ bDone = aFunc.DataPilotUpdate( NULL, pNewObj, TRUE, TRUE );
+
+ delete pNewObj; // DataPilotUpdate copies settings from "new" object
+ delete pNewPivot;
+ }
+
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+void SAL_CALL ScDataPilotTablesObj::removeByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameStr = aName;
+ ScDPObject* pDPObj = lcl_GetDPObject( pDocShell, nTab, aNameStr );
+ if (pDPObj && pDocShell)
+ {
+ ScDBDocFunc aFunc(*pDocShell);
+ aFunc.DataPilotUpdate( pDPObj, NULL, TRUE, TRUE ); // remove - incl. undo etc.
+ }
+ else
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScDataPilotTablesObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScDataPilotTablesObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDPCollection* pColl = pDoc->GetDPCollection();
+ if ( pColl )
+ {
+ // count tables on this sheet
+ // api only handles sheet data at this time
+ //! allow all data sources!!!
+
+ USHORT nFound = 0;
+ USHORT nCount = pColl->GetCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScDPObject* pDPObj = (*pColl)[i];
+ if ( pDPObj->IsSheetData() && pDPObj->GetOutRange().aStart.Tab() == nTab )
+ ++nFound;
+ }
+ return nFound;
+ }
+ }
+
+ return 0;
+}
+
+uno::Any SAL_CALL ScDataPilotTablesObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XDataPilotTable> xTable = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xTable.is())
+ aAny <<= xTable;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScDataPilotTablesObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<sheet::XDataPilotTable>*)0);
+}
+
+sal_Bool SAL_CALL ScDataPilotTablesObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+// XNameAccess
+
+uno::Any SAL_CALL ScDataPilotTablesObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XDataPilotTable> xTable = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ if (xTable.is())
+ aAny <<= xTable;
+ else
+ throw container::NoSuchElementException();
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScDataPilotTablesObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDPCollection* pColl = pDoc->GetDPCollection();
+ if ( pColl )
+ {
+ // count tables on this sheet
+ // api only handles sheet data at this time
+ //! allow all data sources!!!
+
+ USHORT nFound = 0;
+ USHORT nCount = pColl->GetCount();
+ USHORT i;
+ for (i=0; i<nCount; i++)
+ {
+ ScDPObject* pDPObj = (*pColl)[i];
+ if ( pDPObj->IsSheetData() && pDPObj->GetOutRange().aStart.Tab() == nTab )
+ ++nFound;
+ }
+
+ USHORT nPos = 0;
+ uno::Sequence<rtl::OUString> aSeq(nFound);
+ rtl::OUString* pAry = aSeq.getArray();
+ for (i=0; i<nCount; i++)
+ {
+ ScDPObject* pDPObj = (*pColl)[i];
+ if ( pDPObj->IsSheetData() && pDPObj->GetOutRange().aStart.Tab() == nTab )
+ pAry[nPos++] = pDPObj->GetName();
+ }
+
+ return aSeq;
+ }
+ }
+ return uno::Sequence<rtl::OUString>(0);
+}
+
+sal_Bool SAL_CALL ScDataPilotTablesObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDPCollection* pColl = pDoc->GetDPCollection();
+ if ( pColl )
+ {
+ String aNamStr = aName;
+ USHORT nCount = pColl->GetCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ // api only handles sheet data at this time
+ //! allow all data sources!!!
+
+ ScDPObject* pDPObj = (*pColl)[i];
+ if ( pDPObj->IsSheetData() &&
+ pDPObj->GetOutRange().aStart.Tab() == nTab &&
+ pDPObj->GetName() == aNamStr )
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+
+ScDataPilotDescriptorBase::ScDataPilotDescriptorBase(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScDataPilotDescriptorBase::~ScDataPilotDescriptorBase()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+uno::Any SAL_CALL ScDataPilotDescriptorBase::queryInterface( const uno::Type& rType )
+ throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( sheet::XDataPilotDescriptor )
+ SC_QUERYINTERFACE( container::XNamed ) // base of XDataPilotDescriptor
+ SC_QUERYINTERFACE( lang::XUnoTunnel )
+ SC_QUERYINTERFACE( lang::XTypeProvider )
+ SC_QUERYINTERFACE( lang::XServiceInfo )
+
+ return OWeakObject::queryInterface( rType );
+}
+
+void SAL_CALL ScDataPilotDescriptorBase::acquire() throw(uno::RuntimeException)
+{
+ OWeakObject::acquire();
+}
+
+void SAL_CALL ScDataPilotDescriptorBase::release() throw(uno::RuntimeException)
+{
+ OWeakObject::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScDataPilotDescriptorBase::getTypes()
+ throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ aTypes.realloc(4);
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[0] = getCppuType((const uno::Reference<sheet::XDataPilotDescriptor>*)0);
+ pPtr[1] = getCppuType((const uno::Reference<lang::XUnoTunnel>*)0);
+ pPtr[2] = getCppuType((const uno::Reference<lang::XTypeProvider>*)0);
+ pPtr[3] = getCppuType((const uno::Reference<lang::XServiceInfo>*)0);
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScDataPilotDescriptorBase::getImplementationId()
+ throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+void ScDataPilotDescriptorBase::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ //! Referenz-Update?
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XDataPilotDescriptor
+
+table::CellRangeAddress SAL_CALL ScDataPilotDescriptorBase::getSourceRange()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ GetParam( aParam, aQuery, aSrcArea );
+
+ table::CellRangeAddress aRet;
+ aRet.Sheet = aSrcArea.nTab;
+ aRet.StartColumn = aSrcArea.nColStart;
+ aRet.StartRow = aSrcArea.nRowStart;
+ aRet.EndColumn = aSrcArea.nColEnd;
+ aRet.EndRow = aSrcArea.nRowEnd;
+ return aRet;
+}
+
+void SAL_CALL ScDataPilotDescriptorBase::setSourceRange(
+ const table::CellRangeAddress& aSourceRange )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ GetParam( aParam, aQuery, aSrcArea );
+
+ aSrcArea.nTab = aSourceRange.Sheet;
+ aSrcArea.nColStart = aSourceRange.StartColumn;
+ aSrcArea.nRowStart = aSourceRange.StartRow;
+ aSrcArea.nColEnd = aSourceRange.EndColumn;
+ aSrcArea.nRowEnd = aSourceRange.EndRow;
+
+ SetParam( aParam, aQuery, aSrcArea );
+}
+
+uno::Reference<sheet::XSheetFilterDescriptor> SAL_CALL ScDataPilotDescriptorBase::getFilterDescriptor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScDataPilotFilterDescriptor( this );
+}
+
+uno::Reference<container::XIndexAccess> SAL_CALL ScDataPilotDescriptorBase::getDataPilotFields()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScDataPilotFieldsObj( this, SC_FIELDORIENT_ALL );
+}
+
+uno::Reference<container::XIndexAccess> SAL_CALL ScDataPilotDescriptorBase::getColumnFields()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScDataPilotFieldsObj( this, DATA_PILOT_COLUMN );
+}
+
+uno::Reference<container::XIndexAccess> SAL_CALL ScDataPilotDescriptorBase::getRowFields()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScDataPilotFieldsObj( this, DATA_PILOT_ROW );
+}
+
+uno::Reference<container::XIndexAccess> SAL_CALL ScDataPilotDescriptorBase::getPageFields()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScDataPilotFieldsObj( this, DATA_PILOT_PAGE );
+}
+
+uno::Reference<container::XIndexAccess> SAL_CALL ScDataPilotDescriptorBase::getDataFields()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScDataPilotFieldsObj( this, DATA_PILOT_DATA );
+}
+
+uno::Reference<container::XIndexAccess> SAL_CALL ScDataPilotDescriptorBase::getHiddenFields()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScDataPilotFieldsObj( this, DATA_PILOT_HIDDEN );
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScDataPilotDescriptorBase::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScDataPilotDescriptorBase::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScDataPilotDescriptorBase* ScDataPilotDescriptorBase::getImplementation(
+ const uno::Reference<sheet::XDataPilotDescriptor> xObj )
+{
+ ScDataPilotDescriptorBase* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScDataPilotDescriptorBase*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+ScDataPilotTableObj::ScDataPilotTableObj(ScDocShell* pDocSh, USHORT nT, const String& rN) :
+ ScDataPilotDescriptorBase( pDocSh ),
+ nTab( nT ),
+ aName( rN )
+{
+}
+
+ScDataPilotTableObj::~ScDataPilotTableObj()
+{
+}
+
+uno::Any SAL_CALL ScDataPilotTableObj::queryInterface( const uno::Type& rType )
+ throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( sheet::XDataPilotTable )
+
+ return ScDataPilotDescriptorBase::queryInterface( rType );
+}
+
+void SAL_CALL ScDataPilotTableObj::acquire() throw(uno::RuntimeException)
+{
+ ScDataPilotDescriptorBase::acquire();
+}
+
+void SAL_CALL ScDataPilotTableObj::release() throw(uno::RuntimeException)
+{
+ ScDataPilotDescriptorBase::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScDataPilotTableObj::getTypes()
+ throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ uno::Sequence<uno::Type> aParentTypes = ScDataPilotDescriptorBase::getTypes();
+ long nParentLen = aParentTypes.getLength();
+ const uno::Type* pParentPtr = aParentTypes.getConstArray();
+
+ aTypes.realloc( nParentLen + 1 );
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[nParentLen + 0] = getCppuType((const uno::Reference<sheet::XDataPilotTable>*)0);
+
+ for (long i=0; i<nParentLen; i++)
+ pPtr[i] = pParentPtr[i]; // parent types first
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScDataPilotTableObj::getImplementationId()
+ throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+// ---
+
+void ScDataPilotTableObj::GetParam( ScPivotParam& rParam, ScQueryParam& rQuery, ScArea& rSrcArea ) const
+{
+ ScDPObject* pDPObj = lcl_GetDPObject(GetDocShell(), nTab, aName);
+ if (pDPObj)
+ {
+ const ScSheetSourceDesc* pSheetDesc = pDPObj->GetSheetDesc();
+ if ( pSheetDesc )
+ {
+ // FALSE -> fields are counted within the source range
+ pDPObj->FillOldParam( rParam, FALSE );
+
+ rSrcArea = ScArea( pSheetDesc->aSourceRange.aStart.Tab(),
+ pSheetDesc->aSourceRange.aStart.Col(),
+ pSheetDesc->aSourceRange.aStart.Row(),
+ pSheetDesc->aSourceRange.aEnd.Col(),
+ pSheetDesc->aSourceRange.aEnd.Row() );
+ rQuery = pSheetDesc->aQueryParam;
+
+ // in the Uno objects all fields in descriptors are counted within the source range
+ // fields in ScPivotParam are correct (bForFile=FALSE in FillOldParam),
+ // ScQueryParam still has to be adjusted:
+
+ short nFieldStart = rSrcArea.nColStart;
+ USHORT nQueryCount = rQuery.GetEntryCount();
+ for ( USHORT i=0; i<nQueryCount; i++ )
+ {
+ ScQueryEntry& rEntry = rQuery.GetEntry(i);
+ if (rEntry.bDoQuery && rEntry.nField >= nFieldStart)
+ rEntry.nField -= nFieldStart;
+ }
+ }
+ }
+}
+
+void ScDataPilotTableObj::SetParam( const ScPivotParam& rParam,
+ const ScQueryParam& rQuery, const ScArea& rSrcArea )
+{
+ ScDocShell* pDocShell = GetDocShell();
+ ScDPObject* pDPObj = lcl_GetDPObject(pDocShell, nTab, aName);
+ if ( pDPObj && pDocShell )
+ {
+ // in den Uno-Objekten sind alle Fields in den Descriptoren innerhalb des Bereichs gezaehlt
+
+ ScPivotParam aNewParam( rParam );
+ short nFieldStart = rSrcArea.nColStart;
+ USHORT i;
+ for ( i=0; i<aNewParam.nColCount; i++ )
+ if ( aNewParam.aColArr[i].nCol != PIVOT_DATA_FIELD )
+ aNewParam.aColArr[i].nCol += nFieldStart;
+ for ( i=0; i<aNewParam.nRowCount; i++ )
+ if ( aNewParam.aRowArr[i].nCol != PIVOT_DATA_FIELD )
+ aNewParam.aRowArr[i].nCol += nFieldStart;
+ for ( i=0; i<aNewParam.nDataCount; i++ )
+ if ( aNewParam.aDataArr[i].nCol != PIVOT_DATA_FIELD )
+ aNewParam.aDataArr[i].nCol += nFieldStart;
+
+ ScQueryParam aNewQuery( rQuery );
+ USHORT nQueryCount = aNewQuery.GetEntryCount();
+ for ( i=0; i<nQueryCount; i++ )
+ {
+ ScQueryEntry& rEntry = aNewQuery.GetEntry(i);
+ if (rEntry.bDoQuery)
+ rEntry.nField += nFieldStart;
+ }
+
+// ScPivot* pNew = new ScPivot(*pPivot); //? behaelt falsche Groessenangaben bei...
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScPivot* pNew = new ScPivot( pDoc );
+ pNew->SetName( pDPObj->GetName() );
+ pNew->SetTag( pDPObj->GetTag() );
+ pNew->SetParam( aNewParam, aNewQuery, rSrcArea );
+
+ ScDPObject* pNewObj = new ScDPObject( pDoc );
+ pNewObj->InitFromOldPivot( *pNew, pDoc, TRUE );
+
+ ScDBDocFunc aFunc(*pDocShell);
+ aFunc.DataPilotUpdate( pDPObj, pNewObj, TRUE, TRUE );
+
+ delete pNewObj; // DataPilotUpdate copies settings from "new" object
+ delete pNew;
+ }
+}
+
+// "rest of XDataPilotDescriptor"
+
+rtl::OUString SAL_CALL ScDataPilotTableObj::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDPObject* pDPObj = lcl_GetDPObject(GetDocShell(), nTab, aName);
+ if (pDPObj)
+ return pDPObj->GetName();
+ return rtl::OUString();
+}
+
+void SAL_CALL ScDataPilotTableObj::setName( const rtl::OUString& aNewName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDPObject* pDPObj = lcl_GetDPObject(GetDocShell(), nTab, aName);
+ if (pDPObj)
+ {
+ //! test for existing names !!!
+
+ String aString = aNewName;
+ pDPObj->SetName( aString ); //! Undo - DBDocFunc ???
+ aName = aString;
+
+ // DataPilotUpdate would do too much (output table is not changed)
+ GetDocShell()->SetDocumentModified();
+ }
+}
+
+rtl::OUString SAL_CALL ScDataPilotTableObj::getTag() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDPObject* pDPObj = lcl_GetDPObject(GetDocShell(), nTab, aName);
+ if (pDPObj)
+ return pDPObj->GetTag();
+ return rtl::OUString();
+}
+
+void SAL_CALL ScDataPilotTableObj::setTag( const ::rtl::OUString& aNewTag )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDPObject* pDPObj = lcl_GetDPObject(GetDocShell(), nTab, aName);
+ if (pDPObj)
+ {
+ String aString = aNewTag;
+ pDPObj->SetTag( aString ); //! Undo - DBDocFunc ???
+
+ // DataPilotUpdate would do too much (output table is not changed)
+ GetDocShell()->SetDocumentModified();
+ }
+}
+
+// XDataPilotTable
+
+table::CellRangeAddress SAL_CALL ScDataPilotTableObj::getOutputRange()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellRangeAddress aRet;
+ ScDPObject* pDPObj = lcl_GetDPObject(GetDocShell(), nTab, aName);
+ if (pDPObj)
+ {
+ ScRange aRange = pDPObj->GetOutRange();
+ aRet.Sheet = aRange.aStart.Tab();
+ aRet.StartColumn = aRange.aStart.Col();
+ aRet.StartRow = aRange.aStart.Row();
+ aRet.EndColumn = aRange.aEnd.Col();
+ aRet.EndRow = aRange.aEnd.Row();
+ }
+ return aRet;
+}
+
+void SAL_CALL ScDataPilotTableObj::refresh() throw(uno::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
+ }
+}
+
+//------------------------------------------------------------------------
+
+ScDataPilotDescriptor::ScDataPilotDescriptor(ScDocShell* pDocSh) :
+ ScDataPilotDescriptorBase( pDocSh )
+{
+}
+
+ScDataPilotDescriptor::~ScDataPilotDescriptor()
+{
+}
+
+void ScDataPilotDescriptor::GetParam( ScPivotParam& rParam, ScQueryParam& rQuery,
+ ScArea& rSrcArea ) const
+{
+ // Fields sind und bleiben innerhalb des Bereichs
+
+ rParam = aParam;
+ rQuery = aQuery;
+ rSrcArea = aSrcArea;
+}
+
+void ScDataPilotDescriptor::SetParam( const ScPivotParam& rParam,
+ const ScQueryParam& rQuery, const ScArea& rSrcArea )
+{
+ // Fields sind und bleiben innerhalb des Bereichs
+
+ aParam = rParam;
+ aQuery = rQuery;
+ aSrcArea = rSrcArea;
+}
+
+// "rest of XDataPilotDescriptor"
+
+rtl::OUString SAL_CALL ScDataPilotDescriptor::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aNameStr;
+}
+
+void SAL_CALL ScDataPilotDescriptor::setName( const rtl::OUString& aNewName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aNameStr = String( aNewName );
+}
+
+rtl::OUString SAL_CALL ScDataPilotDescriptor::getTag() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aTagStr;
+}
+
+void SAL_CALL ScDataPilotDescriptor::setTag( const ::rtl::OUString& aNewTag )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aTagStr = String( aNewTag );
+}
+
+//------------------------------------------------------------------------
+
+ScDataPilotFieldsObj::ScDataPilotFieldsObj(ScDataPilotDescriptorBase* pPar, USHORT nTy) :
+ pParent( pPar ),
+ nType( nTy )
+{
+ pParent->acquire();
+}
+
+ScDataPilotFieldsObj::~ScDataPilotFieldsObj()
+{
+ pParent->release();
+}
+
+USHORT lcl_GetFieldCount( const ScPivotParam& rParam, const ScArea& rSrcArea, USHORT nType )
+{
+ USHORT nRet = 0;
+
+ USHORT nDataCount = lcl_DataCount(rParam);
+ // Daten-Feld bei Spalten oder Zeile, wenn mehr als 1 Eintrag
+
+ USHORT i;
+ switch (nType)
+ {
+ case SC_FIELDORIENT_ALL:
+ // Anzahl Spalten im Datenbereich
+ // plus eins fuer das Datenfeld (immer)
+ nRet = rSrcArea.nColEnd - rSrcArea.nColStart + 2;
+ break;
+ case DATA_PILOT_HIDDEN:
+ {
+ //! Datenfeld auch hier?
+ USHORT nColCount = rSrcArea.nColEnd - rSrcArea.nColStart + 1;
+ for (USHORT nSrcField=0; nSrcField<nColCount; nSrcField++)
+ {
+ BOOL bUsed = FALSE;
+ for (i=0; i<rParam.nColCount; i++)
+ if ( rParam.aColArr[i].nCol == nSrcField ) bUsed = TRUE;
+ for (i=0; i<rParam.nRowCount; i++)
+ if ( rParam.aRowArr[i].nCol == nSrcField ) bUsed = TRUE;
+ for (i=0; i<rParam.nDataCount; i++)
+ if ( rParam.aDataArr[i].nCol == nSrcField ) bUsed = TRUE;
+ if (!bUsed)
+ ++nRet;
+ }
+ }
+ break;
+ case DATA_PILOT_COLUMN:
+ for (i=0; i<rParam.nColCount; i++)
+ if ( rParam.aColArr[i].nCol != PIVOT_DATA_FIELD || nDataCount > 1 )
+ ++nRet;
+ break;
+ case DATA_PILOT_ROW:
+ for (i=0; i<rParam.nRowCount; i++)
+ if ( rParam.aRowArr[i].nCol != PIVOT_DATA_FIELD || nDataCount > 1 )
+ ++nRet;
+ break;
+ case DATA_PILOT_PAGE:
+ nRet = 0; // Page-Fields sind nicht implementiert
+ break;
+ case DATA_PILOT_DATA:
+ nRet = nDataCount;
+ break;
+ }
+
+ return nRet;
+}
+
+BOOL lcl_GetFieldDataByIndex( const ScPivotParam& rParam, const ScArea& rSrcArea,
+ USHORT nType, USHORT nIndex, USHORT& rField )
+{
+ BOOL bOk = FALSE;
+ USHORT nPos = 0;
+
+ USHORT nDataCount = lcl_DataCount(rParam);
+ // Daten-Feld bei Spalten oder Zeile, wenn mehr als 1 Eintrag
+
+ USHORT i;
+ switch (nType)
+ {
+ case SC_FIELDORIENT_ALL:
+ {
+ USHORT nSourceCount = rSrcArea.nColEnd - rSrcArea.nColStart + 1;
+ if ( nIndex < nSourceCount )
+ {
+ rField = nIndex;
+ bOk = TRUE;
+ }
+ else if ( nIndex == nSourceCount )
+ {
+ rField = PIVOT_DATA_FIELD;
+ bOk = TRUE;
+ }
+ }
+ break;
+ case DATA_PILOT_HIDDEN:
+ {
+ //! Datenfeld auch hier?
+ USHORT nColCount = rSrcArea.nColEnd - rSrcArea.nColStart + 1;
+ for (USHORT nSrcField=0; nSrcField<nColCount; nSrcField++)
+ {
+ BOOL bUsed = FALSE;
+ for (i=0; i<rParam.nColCount; i++)
+ if ( rParam.aColArr[i].nCol == nSrcField ) bUsed = TRUE;
+ for (i=0; i<rParam.nRowCount; i++)
+ if ( rParam.aRowArr[i].nCol == nSrcField ) bUsed = TRUE;
+ for (i=0; i<rParam.nDataCount; i++)
+ if ( rParam.aDataArr[i].nCol == nSrcField ) bUsed = TRUE;
+ if (!bUsed)
+ {
+ if ( nPos == nIndex )
+ {
+ rField = nSrcField;
+ bOk = TRUE;
+ }
+ ++nPos;
+ }
+ }
+ }
+ break;
+ case DATA_PILOT_COLUMN:
+ for (i=0; i<rParam.nColCount; i++)
+ if ( rParam.aColArr[i].nCol != PIVOT_DATA_FIELD || nDataCount > 1 )
+ {
+ if ( nPos == nIndex )
+ {
+ rField = rParam.aColArr[i].nCol;
+ bOk = TRUE;
+ }
+ ++nPos;
+ }
+ break;
+ case DATA_PILOT_ROW:
+ for (i=0; i<rParam.nRowCount; i++)
+ if ( rParam.aRowArr[i].nCol != PIVOT_DATA_FIELD || nDataCount > 1 )
+ {
+ if ( nPos == nIndex )
+ {
+ rField = rParam.aRowArr[i].nCol;
+ bOk = TRUE;
+ }
+ ++nPos;
+ }
+ break;
+ case DATA_PILOT_PAGE:
+ break; // Page-Fields sind nicht implementiert
+ case DATA_PILOT_DATA:
+ {
+ USHORT nArrayPos, nFuncBit;
+ if ( lcl_GetDataArrayPos( rParam, nIndex, nArrayPos, nFuncBit ) )
+ {
+ rField = rParam.aDataArr[nArrayPos].nCol;
+ bOk = TRUE;
+ }
+ }
+ break;
+ }
+ return bOk;
+}
+
+String lcl_FieldName( ScDocShell* pDocSh, const ScPivotParam& rParam,
+ const ScArea& rSrcArea, USHORT nField )
+{
+ //! Gespeicherte Namen im Pivot beruecksichtigen !!!!
+
+ String aRet;
+ if ( nField == PIVOT_DATA_FIELD )
+ aRet = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Data")); //! ???
+ else
+ {
+ USHORT nCol = rSrcArea.nColStart + nField;
+ if ( pDocSh && nCol <= rSrcArea.nColEnd )
+ {
+ USHORT nRow = rSrcArea.nRowStart;
+ aRet = lcl_ColumnTitle( pDocSh->GetDocument(), nCol, nRow, rSrcArea.nTab );
+ }
+ }
+ return aRet;
+}
+
+// XDataPilotFields
+
+ScDataPilotFieldObj* ScDataPilotFieldsObj::GetObjectByIndex_Impl(USHORT nIndex) const
+{
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pParent->GetParam( aParam, aQuery, aSrcArea );
+
+ USHORT nField = 0;
+ BOOL bOk = lcl_GetFieldDataByIndex( aParam, aSrcArea, nType, nIndex, nField );
+
+ if (bOk)
+ return new ScDataPilotFieldObj( pParent, nField, nType, nIndex );
+
+ return NULL;
+}
+
+ScDataPilotFieldObj* ScDataPilotFieldsObj::GetObjectByName_Impl(const rtl::OUString& aName) const
+{
+ String aNameStr = aName;
+
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pParent->GetParam( aParam, aQuery, aSrcArea );
+
+ ScDocShell* pDocSh = pParent->GetDocShell();
+ USHORT nCount = lcl_GetFieldCount( aParam, aSrcArea, nType );
+ USHORT nField = 0;
+ for (USHORT i=0; i<nCount; i++)
+ {
+ if (lcl_GetFieldDataByIndex( aParam, aSrcArea, nType, i, nField ))
+ {
+ if ( aNameStr == lcl_FieldName( pDocSh, aParam, aSrcArea, nField ) )
+ return new ScDataPilotFieldObj( pParent, nField, nType, i );
+ }
+ }
+ return NULL;
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScDataPilotFieldsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScDataPilotFieldsObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pParent->GetParam( aParam, aQuery, aSrcArea );
+
+ return lcl_GetFieldCount( aParam, aSrcArea, nType );
+}
+
+uno::Any SAL_CALL ScDataPilotFieldsObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<beans::XPropertySet> xField = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xField.is())
+ aAny <<= xField;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScDataPilotFieldsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<beans::XPropertySet>*)0);
+}
+
+sal_Bool SAL_CALL ScDataPilotFieldsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+uno::Any SAL_CALL ScDataPilotFieldsObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<beans::XPropertySet> xField = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ if (xField.is())
+ aAny <<= xField;
+ else
+ throw container::NoSuchElementException();
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScDataPilotFieldsObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pParent->GetParam( aParam, aQuery, aSrcArea );
+
+ ScDocShell* pDocSh = pParent->GetDocShell();
+ USHORT nCount = lcl_GetFieldCount( aParam, aSrcArea, nType );
+ USHORT nField = 0;
+
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ lcl_GetFieldDataByIndex( aParam, aSrcArea, nType, i, nField );
+ String aName = lcl_FieldName( pDocSh, aParam, aSrcArea, nField );
+ pAry[i] = aName;
+ }
+ return aSeq;
+}
+
+sal_Bool SAL_CALL ScDataPilotFieldsObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameStr = aName;
+
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pParent->GetParam( aParam, aQuery, aSrcArea );
+
+ ScDocShell* pDocSh = pParent->GetDocShell();
+ USHORT nCount = lcl_GetFieldCount( aParam, aSrcArea, nType );
+ USHORT nField = 0;
+ for (USHORT i=0; i<nCount; i++)
+ {
+ if (lcl_GetFieldDataByIndex( aParam, aSrcArea, nType, i, nField ))
+ {
+ if ( aNameStr == lcl_FieldName( pDocSh, aParam, aSrcArea, nField ) )
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+
+ScDataPilotFieldObj::ScDataPilotFieldObj( ScDataPilotDescriptorBase* pPar,
+ USHORT nF, USHORT nST, USHORT nSP ) :
+ aPropSet( lcl_GetDataPilotFieldMap() ),
+ pParent( pPar ),
+ nField( nF ),
+ nSourceType( nST ),
+ nSourcePos( nSP )
+{
+ pParent->acquire();
+}
+
+ScDataPilotFieldObj::~ScDataPilotFieldObj()
+{
+ pParent->release();
+}
+
+// XNamed
+
+rtl::OUString SAL_CALL ScDataPilotFieldObj::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pParent->GetParam( aParam, aQuery, aSrcArea );
+
+ String aRet = lcl_FieldName( pParent->GetDocShell(), aParam, aSrcArea, nField );
+
+ return aRet;
+}
+
+void SAL_CALL ScDataPilotFieldObj::setName( const rtl::OUString& aNewName )
+ throw(uno::RuntimeException)
+{
+ //! muss noch
+ //! (Namen fuer Spalten vergeben, setzen und ueber den Namen wiederfinden)
+ //! -> spaeter...
+}
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScDataPilotFieldObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScDataPilotFieldObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+ if ( aNameString.EqualsAscii( SC_UNONAME_FUNCTION ) )
+ {
+ //! test for correct enum type?
+ sheet::GeneralFunction eFunction = (sheet::GeneralFunction)
+ ScUnoHelpFunctions::GetEnumFromAny( aValue );
+ setFunction( eFunction );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_ORIENT ) )
+ {
+ //! test for correct enum type?
+ sheet::DataPilotFieldOrientation eOrient = (sheet::DataPilotFieldOrientation)
+ ScUnoHelpFunctions::GetEnumFromAny( aValue );
+ setOrientation( eOrient );
+ }
+}
+
+uno::Any SAL_CALL ScDataPilotFieldObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+ uno::Any aRet;
+
+ if ( aNameString.EqualsAscii( SC_UNONAME_FUNCTION ) )
+ {
+ sheet::GeneralFunction eFunction = getFunction();
+ aRet <<= eFunction;
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_ORIENT ) )
+ {
+ sheet::DataPilotFieldOrientation eOrient = getOrientation();
+ aRet <<= eOrient;
+ }
+
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScDataPilotFieldObj )
+
+void lcl_FindUsage( const ScPivotParam& rParam, USHORT nField, USHORT& rType, USHORT& rPos )
+{
+ USHORT i;
+ for (i=0; i<rParam.nColCount; i++)
+ if ( rParam.aColArr[i].nCol == nField )
+ {
+ rType = DATA_PILOT_COLUMN;
+ rPos = i;
+ return;
+ }
+ for (i=0; i<rParam.nRowCount; i++)
+ if ( rParam.aRowArr[i].nCol == nField )
+ {
+ rType = DATA_PILOT_ROW;
+ rPos = i;
+ return;
+ }
+ USHORT nBitCount = 0;
+ for (i=0; i<rParam.nDataCount; i++)
+ {
+ if ( rParam.aDataArr[i].nCol == nField )
+ {
+ rType = DATA_PILOT_DATA;
+ rPos = nBitCount; // Uno-Index der ersten Funktion
+ return;
+ }
+ nBitCount += lcl_BitCount( rParam.aDataArr[i].nFuncMask );
+ }
+ //! DATA_PILOT_HIDDEN zurueck - Position suchen
+}
+
+sheet::DataPilotFieldOrientation ScDataPilotFieldObj::getOrientation(void) const
+{
+ ScUnoGuard aGuard;
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pParent->GetParam( aParam, aQuery, aSrcArea );
+
+ USHORT nType = nSourceType;
+ USHORT nPos = nSourcePos;
+ if ( nType == SC_FIELDORIENT_ALL )
+ lcl_FindUsage( aParam, nField, nType, nPos );
+
+ if ( nType == SC_FIELDORIENT_ALL ) // bei FindUsage nicht gefunden
+ nType = DATA_PILOT_HIDDEN; // nicht verwendet
+
+ return (sheet::DataPilotFieldOrientation)nType;
+}
+
+void lcl_RemoveField( PivotField* pFields, USHORT& rCount, USHORT nField )
+{
+ for (USHORT i=0; i<rCount; i++)
+ if (pFields[i].nCol == nField)
+ {
+ for (USHORT j=i; j+1<rCount; j++)
+ pFields[j] = pFields[j+1];
+ --rCount;
+ return; // nicht weitersuchen
+ }
+}
+
+void ScDataPilotFieldObj::setOrientation(sheet::DataPilotFieldOrientation eNew)
+{
+ ScUnoGuard aGuard;
+ if ( eNew == nSourceType )
+ return; // nix
+
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pParent->GetParam( aParam, aQuery, aSrcArea );
+
+ // aus altem Array entfernen
+
+ switch (nSourceType)
+ {
+ case DATA_PILOT_COLUMN:
+ if ( nSourcePos < aParam.nColCount )
+ {
+ for (USHORT i=nSourcePos; i+1<aParam.nColCount; i++)
+ aParam.aColArr[i] = aParam.aColArr[i+1];
+ --aParam.nColCount;
+ }
+ break;
+ case DATA_PILOT_ROW:
+ if ( nSourcePos < aParam.nRowCount )
+ {
+ for (USHORT i=nSourcePos; i+1<aParam.nRowCount; i++)
+ aParam.aRowArr[i] = aParam.aRowArr[i+1];
+ --aParam.nRowCount;
+ }
+ break;
+ case DATA_PILOT_DATA:
+ {
+ USHORT nArrayPos, nFuncBit;
+ if ( lcl_GetDataArrayPos( aParam, nSourcePos, nArrayPos, nFuncBit ) )
+ {
+ aParam.aDataArr[nArrayPos].nFuncMask &= ~nFuncBit; // Funktion weglassen
+ if (!aParam.aDataArr[nArrayPos].nFuncMask) // war's die letzte?
+ {
+ for (USHORT j=nArrayPos; j+1<aParam.nDataCount; j++)
+ aParam.aDataArr[j] = aParam.aDataArr[j+1];
+ --aParam.nDataCount;
+ }
+ }
+ }
+ break;
+
+ // SC_FIELDORIENT_ALL, DATA_PILOT_HIDDEN: nichts
+ }
+
+ // in neues Array eintragen
+
+ switch (eNew)
+ {
+ case DATA_PILOT_COLUMN:
+ if ( aParam.nColCount < PIVOT_MAXFIELD )
+ {
+ lcl_RemoveField( aParam.aColArr, aParam.nColCount, nField ); // nicht doppelt
+ lcl_RemoveField( aParam.aRowArr, aParam.nRowCount, nField );
+ aParam.aColArr[aParam.nColCount].nCol = nField;
+ aParam.aColArr[aParam.nColCount].nFuncMask = 0;
+ nSourceType = DATA_PILOT_COLUMN;
+ nSourcePos = aParam.nColCount;
+ ++aParam.nColCount;
+ }
+ break;
+ case DATA_PILOT_ROW:
+ if ( aParam.nRowCount < PIVOT_MAXFIELD )
+ {
+ lcl_RemoveField( aParam.aColArr, aParam.nColCount, nField ); // nicht doppelt
+ lcl_RemoveField( aParam.aRowArr, aParam.nRowCount, nField );
+ aParam.aRowArr[aParam.nRowCount].nCol = nField;
+ aParam.aRowArr[aParam.nRowCount].nFuncMask = 0;
+ nSourceType = DATA_PILOT_ROW;
+ nSourcePos = aParam.nRowCount;
+ ++aParam.nRowCount;
+ }
+ break;
+ case DATA_PILOT_DATA:
+ if ( aParam.nDataCount < PIVOT_MAXFIELD )
+ {
+ //! ggf. mit bestehendem Eintrag zusammenfassen (Funktionen verodern) ???
+ aParam.aDataArr[aParam.nDataCount].nCol = nField;
+ aParam.aDataArr[aParam.nDataCount].nFuncMask = PIVOT_FUNC_SUM;
+ nSourceType = DATA_PILOT_DATA;
+ nSourcePos = aParam.nDataCount;
+ ++aParam.nDataCount;
+ }
+ break;
+ }
+
+ pParent->SetParam( aParam, aQuery, aSrcArea );
+}
+
+sheet::GeneralFunction ScDataPilotFieldObj::getFunction(void) const
+{
+ ScUnoGuard aGuard;
+ sheet::GeneralFunction eRet = sheet::GeneralFunction_NONE;
+
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pParent->GetParam( aParam, aQuery, aSrcArea );
+
+ USHORT nType = nSourceType;
+ USHORT nPos = nSourcePos;
+ if ( nType == SC_FIELDORIENT_ALL )
+ lcl_FindUsage( aParam, nField, nType, nPos );
+
+ switch ( nType )
+ {
+ case DATA_PILOT_COLUMN:
+ if ( nPos < aParam.nColCount )
+ eRet = ScDataPilotConversion::FirstFunc( aParam.aColArr[nPos].nFuncMask );
+ break;
+ case DATA_PILOT_ROW:
+ if ( nPos < aParam.nRowCount )
+ eRet = ScDataPilotConversion::FirstFunc( aParam.aRowArr[nPos].nFuncMask );
+ break;
+ case DATA_PILOT_DATA: // Bits zaehlen...
+ {
+ USHORT nArrayPos, nFuncBit;
+ if ( lcl_GetDataArrayPos( aParam, nPos, nArrayPos, nFuncBit ) )
+ eRet = ScDataPilotConversion::FirstFunc( nFuncBit );
+ }
+ break;
+ }
+ return eRet;
+}
+
+void ScDataPilotFieldObj::setFunction(sheet::GeneralFunction eNewFunc)
+{
+ ScUnoGuard aGuard;
+ ScPivotParam aParam;
+ ScQueryParam aQuery;
+ ScArea aSrcArea;
+ pParent->GetParam( aParam, aQuery, aSrcArea );
+
+ USHORT nType = nSourceType;
+ USHORT nPos = nSourcePos;
+ if ( nType == SC_FIELDORIENT_ALL )
+ lcl_FindUsage( aParam, nField, nType, nPos );
+
+ switch ( nType )
+ {
+ case DATA_PILOT_COLUMN:
+ if ( nPos < aParam.nColCount )
+ aParam.aColArr[nPos].nFuncMask = ScDataPilotConversion::FunctionBit(eNewFunc);
+ break;
+ case DATA_PILOT_ROW:
+ if ( nPos < aParam.nRowCount )
+ aParam.aRowArr[nPos].nFuncMask = ScDataPilotConversion::FunctionBit(eNewFunc);
+ break;
+ case DATA_PILOT_DATA: // Bits zaehlen...
+ {
+ USHORT nArrayPos, nFuncBit;
+ if ( lcl_GetDataArrayPos( aParam, nPos, nArrayPos, nFuncBit ) )
+ {
+ // alte Funktion weglassen, neue eintragen
+ aParam.aDataArr[nArrayPos].nFuncMask &= ~nFuncBit;
+ aParam.aDataArr[nArrayPos].nFuncMask |= ScDataPilotConversion::FunctionBit(eNewFunc);
+ }
+ }
+ break;
+ }
+
+ pParent->SetParam( aParam, aQuery, aSrcArea );
+}
+
+
+//------------------------------------------------------------------------
+
+
+
+
diff --git a/sc/source/ui/unoobj/datauno.cxx b/sc/source/ui/unoobj/datauno.cxx
new file mode 100644
index 000000000000..bfdba5d6beec
--- /dev/null
+++ b/sc/source/ui/unoobj/datauno.cxx
@@ -0,0 +1,1972 @@
+/*************************************************************************
+ *
+ * $RCSfile: datauno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <tools/debug.hxx>
+#include <svtools/smplhint.hxx>
+#include <svtools/zforlist.hxx>
+#include <sdb/sdbstat.hxx>
+#include <rtl/uuid.h>
+
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/util/SortField.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/table/TableOrientation.hpp>
+#include <com/sun/star/sheet/DataImportMode.hpp>
+
+#include "datauno.hxx"
+#include "dapiuno.hxx"
+#include "cellsuno.hxx"
+#include "miscuno.hxx"
+#include "targuno.hxx"
+#include "rangeutl.hxx"
+#include "dbcolect.hxx"
+#include "docsh.hxx"
+#include "dbdocfun.hxx"
+#include "unoguard.hxx"
+#include "unonames.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+// alles ohne Which-ID, Map nur fuer PropertySetInfo
+
+const SfxItemPropertyMap* lcl_GetSubTotalPropertyMap()
+{
+ static SfxItemPropertyMap aSubTotalPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_CASE), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_FORMATS), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_INSBRK), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_ULIST), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_UINDEX), 0, &getCppuType((sal_Int32*)0), 0},
+ {0,0,0,0}
+ };
+ return aSubTotalPropertyMap_Impl;
+}
+
+const SfxItemPropertyMap* lcl_GetFilterPropertyMap()
+{
+ static SfxItemPropertyMap aFilterPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_CONTHDR), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_COPYOUT), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_ISCASE), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_MAXFLD), 0, &getCppuType((sal_Int32*)0), beans::PropertyAttribute::READONLY},
+ {MAP_CHAR_LEN(SC_UNONAME_ORIENT), 0, &getCppuType((table::TableOrientation*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_OUTPOS), 0, &getCppuType((table::CellAddress*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_SAVEOUT), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_SKIPDUP), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_USEREGEX), 0, &getBooleanCppuType(), 0},
+ {0,0,0,0}
+ };
+ return aFilterPropertyMap_Impl;
+}
+
+const SfxItemPropertyMap* lcl_GetDBRangePropertyMap()
+{
+ static SfxItemPropertyMap aDBRangePropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_KEEPFORM), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_LINKDISPBIT), 0, &getCppuType((uno::Reference<awt::XBitmap>*)0), beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNO_LINKDISPNAME), 0, &getCppuType((rtl::OUString*)0), beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_MOVCELLS), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_STRIPDAT), 0, &getBooleanCppuType(), 0},
+ {0,0,0,0}
+ };
+ return aDBRangePropertyMap_Impl;
+}
+
+
+//------------------------------------------------------------------------
+
+#define SCDATABASERANGEOBJ_SERVICE "com.sun.star.sheet.DatabaseRange"
+
+SC_SIMPLE_SERVICE_INFO( ScConsolidationDescriptor, "ScConsolidationDescriptor", "com.sun.star.sheet.ConsolidationDescriptor" )
+SC_SIMPLE_SERVICE_INFO( ScDatabaseRangesObj, "ScDatabaseRangesObj", "com.sun.star.sheet.DatabaseRanges" )
+SC_SIMPLE_SERVICE_INFO( ScFilterDescriptorBase, "ScFilterDescriptorBase", "com.sun.star.sheet.SheetFilterDescriptor" )
+SC_SIMPLE_SERVICE_INFO( ScSubTotalDescriptorBase, "ScSubTotalDescriptorBase", "com.sun.star.sheet.SubTotalDescriptor" )
+SC_SIMPLE_SERVICE_INFO( ScSubTotalFieldObj, "ScSubTotalFieldObj", "com.sun.star.sheet.SubTotalField" )
+
+
+//------------------------------------------------------------------------
+
+// static
+ScSubTotalFunc ScDataUnoConversion::GeneralToSubTotal( sheet::GeneralFunction eSummary )
+{
+ ScSubTotalFunc eSubTotal;
+ switch (eSummary)
+ {
+ case sheet::GeneralFunction_NONE: eSubTotal = SUBTOTAL_FUNC_NONE; break;
+ case sheet::GeneralFunction_SUM: eSubTotal = SUBTOTAL_FUNC_SUM; break;
+ case sheet::GeneralFunction_COUNT: eSubTotal = SUBTOTAL_FUNC_CNT2; break;
+ case sheet::GeneralFunction_AVERAGE: eSubTotal = SUBTOTAL_FUNC_AVE; break;
+ case sheet::GeneralFunction_MAX: eSubTotal = SUBTOTAL_FUNC_MAX; break;
+ case sheet::GeneralFunction_MIN: eSubTotal = SUBTOTAL_FUNC_MIN; break;
+ case sheet::GeneralFunction_PRODUCT: eSubTotal = SUBTOTAL_FUNC_PROD; break;
+ case sheet::GeneralFunction_COUNTNUMS: eSubTotal = SUBTOTAL_FUNC_CNT; break;
+ case sheet::GeneralFunction_STDEV: eSubTotal = SUBTOTAL_FUNC_STD; break;
+ case sheet::GeneralFunction_STDEVP: eSubTotal = SUBTOTAL_FUNC_STDP; break;
+ case sheet::GeneralFunction_VAR: eSubTotal = SUBTOTAL_FUNC_VAR; break;
+ case sheet::GeneralFunction_VARP: eSubTotal = SUBTOTAL_FUNC_VARP; break;
+ case sheet::GeneralFunction_AUTO:
+ default:
+ DBG_ERROR("GeneralToSubTotal: falscher enum");
+ eSubTotal = SUBTOTAL_FUNC_NONE;
+ }
+ return eSubTotal;
+}
+
+// static
+sheet::GeneralFunction ScDataUnoConversion::SubTotalToGeneral( ScSubTotalFunc eSubTotal )
+{
+ sheet::GeneralFunction eGeneral;
+ switch (eSubTotal)
+ {
+ case SUBTOTAL_FUNC_NONE: eGeneral = sheet::GeneralFunction_NONE; break;
+ case SUBTOTAL_FUNC_AVE: eGeneral = sheet::GeneralFunction_AVERAGE; break;
+ case SUBTOTAL_FUNC_CNT: eGeneral = sheet::GeneralFunction_COUNTNUMS; break;
+ case SUBTOTAL_FUNC_CNT2: eGeneral = sheet::GeneralFunction_COUNT; break;
+ case SUBTOTAL_FUNC_MAX: eGeneral = sheet::GeneralFunction_MAX; break;
+ case SUBTOTAL_FUNC_MIN: eGeneral = sheet::GeneralFunction_MIN; break;
+ case SUBTOTAL_FUNC_PROD: eGeneral = sheet::GeneralFunction_PRODUCT; break;
+ case SUBTOTAL_FUNC_STD: eGeneral = sheet::GeneralFunction_STDEV; break;
+ case SUBTOTAL_FUNC_STDP: eGeneral = sheet::GeneralFunction_STDEVP; break;
+ case SUBTOTAL_FUNC_SUM: eGeneral = sheet::GeneralFunction_SUM; break;
+ case SUBTOTAL_FUNC_VAR: eGeneral = sheet::GeneralFunction_VAR; break;
+ case SUBTOTAL_FUNC_VARP: eGeneral = sheet::GeneralFunction_VARP; break;
+ default:
+ DBG_ERROR("SubTotalToGeneral: falscher enum");
+ eGeneral = sheet::GeneralFunction_NONE;
+ break;
+ }
+ return eGeneral;
+}
+
+//------------------------------------------------------------------------
+
+// ScImportDescriptor: alles static
+
+long ScImportDescriptor::GetPropertyCount()
+{
+ return 4;
+}
+
+void ScImportDescriptor::FillProperties( uno::Sequence<beans::PropertyValue>& rSeq, const ScImportParam& rParam )
+{
+ DBG_ASSERT( rSeq.getLength() == GetPropertyCount(), "falscher Count" );
+
+ beans::PropertyValue* pArray = rSeq.getArray();
+
+ sheet::DataImportMode eMode = sheet::DataImportMode_NONE;
+ if ( rParam.bImport )
+ {
+ if ( rParam.bSql )
+ eMode = sheet::DataImportMode_SQL;
+ else if ( rParam.nType == dbQuery )
+ eMode = sheet::DataImportMode_QUERY;
+ else
+ eMode = sheet::DataImportMode_TABLE; // Type ist immer dbQuery oder dbTable
+ }
+
+ pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_DBNAME );
+ pArray[0].Value <<= rtl::OUString( rParam.aDBName );
+
+ pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_SRCTYPE );
+ pArray[1].Value <<= eMode;
+
+ pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_SRCOBJ );
+ pArray[2].Value <<= rtl::OUString( rParam.aStatement );
+
+ pArray[3].Name = rtl::OUString::createFromAscii( SC_UNONAME_NATIVE );
+ ScUnoHelpFunctions::SetBoolInAny( pArray[3].Value, rParam.bNative );
+}
+
+void ScImportDescriptor::FillImportParam( ScImportParam& rParam, const uno::Sequence<beans::PropertyValue>& rSeq )
+{
+ rtl::OUString aStrVal;
+ const beans::PropertyValue* pPropArray = rSeq.getConstArray();
+ long nPropCount = rSeq.getLength();
+ for (long i = 0; i < nPropCount; i++)
+ {
+ const beans::PropertyValue& rProp = pPropArray[i];
+ String aPropName = rProp.Name;
+
+ if (aPropName.EqualsAscii( SC_UNONAME_NATIVE ))
+ rParam.bNative = ScUnoHelpFunctions::GetBoolFromAny( rProp.Value );
+ else if (aPropName.EqualsAscii( SC_UNONAME_DBNAME ))
+ {
+ if ( rProp.Value >>= aStrVal )
+ rParam.aDBName = String( aStrVal );
+ }
+ else if (aPropName.EqualsAscii( SC_UNONAME_SRCOBJ ))
+ {
+ if ( rProp.Value >>= aStrVal )
+ rParam.aStatement = String( aStrVal );
+ }
+ else if (aPropName.EqualsAscii( SC_UNONAME_SRCTYPE ))
+ {
+ //! test for correct enum type?
+ sheet::DataImportMode eMode = (sheet::DataImportMode)
+ ScUnoHelpFunctions::GetEnumFromAny( rProp.Value );
+ switch (eMode)
+ {
+ case sheet::DataImportMode_NONE:
+ rParam.bImport = FALSE;
+ break;
+ case sheet::DataImportMode_SQL:
+ rParam.bImport = TRUE;
+ rParam.bSql = TRUE;
+ break;
+ case sheet::DataImportMode_TABLE:
+ rParam.bImport = TRUE;
+ rParam.bSql = FALSE;
+ rParam.nType = dbTable;
+ break;
+ case sheet::DataImportMode_QUERY:
+ rParam.bImport = TRUE;
+ rParam.bSql = FALSE;
+ rParam.nType = dbQuery;
+ break;
+ default:
+ DBG_ERROR("falscher Mode");
+ rParam.bImport = FALSE;
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+// ScSortDescriptor: alles static
+
+//! SortAscending muss aus der SheetSortDescriptor service-Beschreibung raus
+
+long ScSortDescriptor::GetPropertyCount()
+{
+ return 10; // TableSortDescriptor und SheetSortDescriptor
+}
+
+void ScSortDescriptor::FillProperties( uno::Sequence<beans::PropertyValue>& rSeq, const ScSortParam& rParam )
+{
+ DBG_ASSERT( rSeq.getLength() == GetPropertyCount(), "falscher Count" );
+
+ beans::PropertyValue* pArray = rSeq.getArray();
+
+ // Uno-Werte zusammensuchen
+
+ table::TableOrientation eOrient =
+ rParam.bByRow ? table::TableOrientation_ROWS : table::TableOrientation_COLUMNS;
+
+ table::CellAddress aOutPos;
+ aOutPos.Sheet = rParam.nDestTab;
+ aOutPos.Column = rParam.nDestCol;
+ aOutPos.Row = rParam.nDestRow;
+
+ USHORT nSortCount = 0;
+ while ( nSortCount < MAXSORT && rParam.bDoSort[nSortCount] )
+ ++nSortCount;
+
+ uno::Sequence<util::SortField> aFields(nSortCount);
+ if (nSortCount)
+ {
+ util::SortField* pFieldArray = aFields.getArray();
+ for (USHORT i=0; i<nSortCount; i++)
+ {
+ pFieldArray[i].Field = rParam.nField[i];
+ pFieldArray[i].SortAscending = rParam.bAscending[i];
+ pFieldArray[i].FieldType = util::SortFieldType_AUTOMATIC; // immer Automatic
+ }
+ }
+
+ // Sequence fuellen
+
+ pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_ORIENT );
+ pArray[0].Value <<= eOrient;
+
+ pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_CONTHDR );
+ ScUnoHelpFunctions::SetBoolInAny( pArray[1].Value, rParam.bHasHeader );
+
+ pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_MAXFLD );
+ pArray[2].Value <<= (sal_Int32) MAXSORT;
+
+ pArray[3].Name = rtl::OUString::createFromAscii( SC_UNONAME_SORTFLD );
+ pArray[3].Value <<= aFields;
+
+ pArray[4].Name = rtl::OUString::createFromAscii( SC_UNONAME_ISCASE );
+ ScUnoHelpFunctions::SetBoolInAny( pArray[4].Value, rParam.bCaseSens );
+
+ pArray[5].Name = rtl::OUString::createFromAscii( SC_UNONAME_BINDFMT );
+ ScUnoHelpFunctions::SetBoolInAny( pArray[5].Value, rParam.bIncludePattern );
+
+ pArray[6].Name = rtl::OUString::createFromAscii( SC_UNONAME_COPYOUT );
+ ScUnoHelpFunctions::SetBoolInAny( pArray[6].Value, !rParam.bInplace );
+
+ pArray[7].Name = rtl::OUString::createFromAscii( SC_UNONAME_OUTPOS );
+ pArray[7].Value <<= aOutPos;
+
+ pArray[8].Name = rtl::OUString::createFromAscii( SC_UNONAME_ISULIST );
+ ScUnoHelpFunctions::SetBoolInAny( pArray[8].Value, rParam.bUserDef );
+
+ pArray[9].Name = rtl::OUString::createFromAscii( SC_UNONAME_UINDEX );
+ pArray[9].Value <<= (sal_Int32) rParam.nUserIndex;
+}
+
+void ScSortDescriptor::FillSortParam( ScSortParam& rParam, const uno::Sequence<beans::PropertyValue>& rSeq )
+{
+ const beans::PropertyValue* pPropArray = rSeq.getConstArray();
+ long nPropCount = rSeq.getLength();
+ for (long i = 0; i < nPropCount; i++)
+ {
+ const beans::PropertyValue& rProp = pPropArray[i];
+ String aPropName = rProp.Name;
+
+ if (aPropName.EqualsAscii( SC_UNONAME_ORIENT ))
+ {
+ //! test for correct enum type?
+ table::TableOrientation eOrient = (table::TableOrientation)
+ ScUnoHelpFunctions::GetEnumFromAny( rProp.Value );
+ rParam.bByRow = ( eOrient != table::TableOrientation_COLUMNS );
+ }
+ else if (aPropName.EqualsAscii( SC_UNONAME_CONTHDR ))
+ rParam.bHasHeader = ScUnoHelpFunctions::GetBoolFromAny( rProp.Value );
+ else if (aPropName.EqualsAscii( SC_UNONAME_MAXFLD ))
+ {
+ sal_Int32 nVal;
+ if ( (rProp.Value >>= nVal) && nVal > MAXSORT )
+ {
+ //! specify exceptions
+ //! throw lang::IllegalArgumentException();
+ }
+ }
+ else if (aPropName.EqualsAscii( SC_UNONAME_SORTFLD ))
+ {
+ uno::Sequence<util::SortField> aSeq;
+ if ( rProp.Value >>= aSeq )
+ {
+ INT32 nCount = aSeq.getLength();
+ INT32 i;
+ if ( nCount > MAXSORT )
+ {
+ DBG_ERROR("Zu viele Sortierfelder");
+ nCount = MAXSORT;
+ }
+ const util::SortField* pFieldArray = aSeq.getConstArray();
+ for (i=0; i<nCount; i++)
+ {
+ rParam.nField[i] = pFieldArray[i].Field;
+ rParam.bAscending[i] = pFieldArray[i].SortAscending;
+ // FieldType wird ignoriert
+ rParam.bDoSort[i] = TRUE;
+ }
+ for (i=nCount; i<MAXSORT; i++)
+ rParam.bDoSort[i] = FALSE;
+ }
+ }
+ else if (aPropName.EqualsAscii( SC_UNONAME_ISCASE ))
+ rParam.bCaseSens = ScUnoHelpFunctions::GetBoolFromAny( rProp.Value );
+ else if (aPropName.EqualsAscii( SC_UNONAME_BINDFMT ))
+ rParam.bIncludePattern = ScUnoHelpFunctions::GetBoolFromAny( rProp.Value );
+ else if (aPropName.EqualsAscii( SC_UNONAME_COPYOUT ))
+ rParam.bInplace = !ScUnoHelpFunctions::GetBoolFromAny( rProp.Value );
+ else if (aPropName.EqualsAscii( SC_UNONAME_OUTPOS ))
+ {
+ table::CellAddress aAddress;
+ if ( rProp.Value >>= aAddress )
+ {
+ rParam.nDestTab = aAddress.Sheet;
+ rParam.nDestCol = aAddress.Column;
+ rParam.nDestRow = aAddress.Row;
+ }
+ }
+ else if (aPropName.EqualsAscii( SC_UNONAME_ISULIST ))
+ rParam.bUserDef = ScUnoHelpFunctions::GetBoolFromAny( rProp.Value );
+ else if (aPropName.EqualsAscii( SC_UNONAME_UINDEX ))
+ {
+ sal_Int32 nVal;
+ if ( rProp.Value >>= nVal )
+ rParam.nUserIndex = nVal;
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+ScSubTotalFieldObj::ScSubTotalFieldObj( ScSubTotalDescriptorBase* pDesc, USHORT nP ) :
+ rParent( *pDesc ),
+ xRef( pDesc ), // Objekt festhalten
+ nPos( nP )
+{
+ DBG_ASSERT(pDesc, "ScSubTotalFieldObj: Parent ist 0");
+}
+
+ScSubTotalFieldObj::~ScSubTotalFieldObj()
+{
+}
+
+// XSubTotalField
+
+sal_Int32 SAL_CALL ScSubTotalFieldObj::getGroupColumn() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSubTotalParam aParam;
+ rParent.GetData(aParam);
+
+ return aParam.nField[nPos];
+}
+
+void SAL_CALL ScSubTotalFieldObj::setGroupColumn( sal_Int32 nGroupColumn ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSubTotalParam aParam;
+ rParent.GetData(aParam);
+
+ aParam.nField[nPos] = nGroupColumn;
+
+ rParent.PutData(aParam);
+}
+
+uno::Sequence<sheet::SubTotalColumn> SAL_CALL ScSubTotalFieldObj::getSubTotalColumns()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSubTotalParam aParam;
+ rParent.GetData(aParam);
+
+ USHORT nCount = aParam.nSubTotals[nPos];
+ uno::Sequence<sheet::SubTotalColumn> aSeq(nCount);
+ sheet::SubTotalColumn* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ pAry[i].Column = aParam.pSubTotals[nPos][i];
+ pAry[i].Function = ScDataUnoConversion::SubTotalToGeneral(
+ aParam.pFunctions[nPos][i] );
+ }
+ return aSeq;
+}
+
+void SAL_CALL ScSubTotalFieldObj::setSubTotalColumns(
+ const uno::Sequence<sheet::SubTotalColumn>& aSubTotalColumns )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSubTotalParam aParam;
+ rParent.GetData(aParam);
+
+ UINT32 nColCount = aSubTotalColumns.getLength();
+ if ( nColCount <= USHRT_MAX )
+ {
+ USHORT nCount = (USHORT)nColCount;
+ aParam.nSubTotals[nPos] = nCount;
+ if (nCount)
+ {
+ aParam.pSubTotals[nPos] = new USHORT[nCount];
+ aParam.pFunctions[nPos] = new ScSubTotalFunc[nCount];
+
+ const sheet::SubTotalColumn* pAry = aSubTotalColumns.getConstArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ aParam.pSubTotals[nPos][i] = pAry[i].Column;
+ aParam.pFunctions[nPos][i] =
+ ScDataUnoConversion::GeneralToSubTotal( pAry[i].Function );
+ }
+ }
+ else
+ {
+ aParam.pSubTotals[nPos] = NULL;
+ aParam.pFunctions[nPos] = NULL;
+ }
+ }
+ //! sonst Exception oder so? (zuviele Spalten)
+
+ rParent.PutData(aParam);
+}
+
+//------------------------------------------------------------------------
+
+ScSubTotalDescriptorBase::ScSubTotalDescriptorBase() :
+ aPropSet( lcl_GetSubTotalPropertyMap() )
+{
+}
+
+ScSubTotalDescriptorBase::~ScSubTotalDescriptorBase()
+{
+}
+
+// GetData/PutData hier nur wegen NewInstance-Krempel implementiert...
+
+void ScSubTotalDescriptorBase::GetData( ScSubTotalParam& rParam ) const
+{
+ DBG_ERROR("ScSubTotalDescriptorBase::GetData soll nicht gerufen werden");
+}
+
+void ScSubTotalDescriptorBase::PutData( const ScSubTotalParam& rParam )
+{
+ DBG_ERROR("ScSubTotalDescriptorBase::PutData soll nicht gerufen werden");
+}
+
+// XSubTotalDesctiptor
+
+ScSubTotalFieldObj* ScSubTotalDescriptorBase::GetObjectByIndex_Impl(USHORT nIndex)
+{
+ if ( nIndex < getCount() )
+ return new ScSubTotalFieldObj( this, nIndex );
+ return NULL;
+}
+
+void SAL_CALL ScSubTotalDescriptorBase::clear() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSubTotalParam aParam;
+ GetData(aParam);
+
+ for (USHORT i=0; i<MAXSUBTOTAL; i++)
+ aParam.bGroupActive[i] = FALSE;
+
+ //! Notify oder so fuer die Field-Objekte???
+
+ PutData(aParam);
+}
+
+void SAL_CALL ScSubTotalDescriptorBase::addNew(
+ const uno::Sequence<sheet::SubTotalColumn>& aSubTotalColumns,
+ sal_Int32 nGroupColumn ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSubTotalParam aParam;
+ GetData(aParam);
+
+ USHORT nPos = 0;
+ while ( nPos < MAXSUBTOTAL && aParam.bGroupActive[nPos] )
+ ++nPos;
+
+ UINT32 nColCount = aSubTotalColumns.getLength();
+
+ if ( nPos < MAXSUBTOTAL && nColCount <= USHRT_MAX )
+ {
+ aParam.bGroupActive[nPos] = TRUE;
+ aParam.nField[nPos] = nGroupColumn;
+
+ delete aParam.pSubTotals[nPos];
+ delete aParam.pFunctions[nPos];
+
+ USHORT nCount = (USHORT)nColCount;
+ aParam.nSubTotals[nPos] = nCount;
+ if (nCount)
+ {
+ aParam.pSubTotals[nPos] = new USHORT[nCount];
+ aParam.pFunctions[nPos] = new ScSubTotalFunc[nCount];
+
+ const sheet::SubTotalColumn* pAry = aSubTotalColumns.getConstArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ aParam.pSubTotals[nPos][i] = pAry[i].Column;
+ aParam.pFunctions[nPos][i] =
+ ScDataUnoConversion::GeneralToSubTotal( pAry[i].Function );
+ }
+ }
+ else
+ {
+ aParam.pSubTotals[nPos] = NULL;
+ aParam.pFunctions[nPos] = NULL;
+ }
+ }
+ //! sonst Exception oder so? (zuviele Felder / Spalten)
+
+ PutData(aParam);
+}
+
+// Flags/Einstellungen als Properties
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScSubTotalDescriptorBase::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScSubTotalDescriptorBase::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSubTotalParam aParam;
+ GetData(aParam);
+
+ USHORT nCount = 0;
+ while ( nCount < MAXSUBTOTAL && aParam.bGroupActive[nCount] )
+ ++nCount;
+ return nCount;
+}
+
+uno::Any SAL_CALL ScSubTotalDescriptorBase::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XSubTotalField> xField = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ aAny <<= xField;
+ return aAny;
+}
+
+uno::Type SAL_CALL ScSubTotalDescriptorBase::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<sheet::XSubTotalField>*)0);
+}
+
+sal_Bool SAL_CALL ScSubTotalDescriptorBase::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScSubTotalDescriptorBase::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScSubTotalDescriptorBase::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSubTotalParam aParam;
+ GetData(aParam);
+
+ String aString = aPropertyName;
+
+ if (aString.EqualsAscii( SC_UNONAME_CASE ))
+ aParam.bCaseSens = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if (aString.EqualsAscii( SC_UNONAME_FORMATS ))
+ aParam.bIncludePattern = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if (aString.EqualsAscii( SC_UNONAME_INSBRK ))
+ aParam.bPagebreak = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if (aString.EqualsAscii( SC_UNONAME_ULIST ))
+ aParam.bUserDef = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if (aString.EqualsAscii( SC_UNONAME_UINDEX ))
+ {
+ sal_Int32 nVal;
+ if ( aValue >>= nVal )
+ aParam.nUserIndex = nVal;
+ }
+
+ PutData(aParam);
+}
+
+uno::Any SAL_CALL ScSubTotalDescriptorBase::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSubTotalParam aParam;
+ GetData(aParam);
+
+ String aString = aPropertyName;
+ uno::Any aRet;
+
+ if (aString.EqualsAscii( SC_UNONAME_CASE ))
+ ScUnoHelpFunctions::SetBoolInAny( aRet, aParam.bCaseSens );
+ else if (aString.EqualsAscii( SC_UNONAME_FORMATS ))
+ ScUnoHelpFunctions::SetBoolInAny( aRet, aParam.bIncludePattern );
+ else if (aString.EqualsAscii( SC_UNONAME_INSBRK ))
+ ScUnoHelpFunctions::SetBoolInAny( aRet, aParam.bPagebreak );
+ else if (aString.EqualsAscii( SC_UNONAME_ULIST ))
+ ScUnoHelpFunctions::SetBoolInAny( aRet, aParam.bUserDef );
+ else if (aString.EqualsAscii( SC_UNONAME_UINDEX ))
+ aRet <<= (sal_Int32) aParam.nUserIndex;
+
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScSubTotalDescriptorBase )
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScSubTotalDescriptorBase::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScSubTotalDescriptorBase::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScSubTotalDescriptorBase* ScSubTotalDescriptorBase::getImplementation(
+ const uno::Reference<sheet::XSubTotalDescriptor> xObj )
+{
+ ScSubTotalDescriptorBase* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScSubTotalDescriptorBase*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+ScSubTotalDescriptor::ScSubTotalDescriptor()
+{
+}
+
+ScSubTotalDescriptor::~ScSubTotalDescriptor()
+{
+}
+
+void ScSubTotalDescriptor::GetData( ScSubTotalParam& rParam ) const
+{
+ rParam = aStoredParam; // Abfrage fuer Interface
+}
+
+void ScSubTotalDescriptor::PutData( const ScSubTotalParam& rParam )
+{
+ aStoredParam = rParam; // vom Interface gesetzt
+}
+
+void ScSubTotalDescriptor::SetParam( const ScSubTotalParam& rNew )
+{
+ aStoredParam = rNew; // von aussen gesetzt
+}
+
+//------------------------------------------------------------------------
+
+ScRangeSubTotalDescriptor::ScRangeSubTotalDescriptor(ScDatabaseRangeObj* pPar) :
+ pParent(pPar)
+{
+ if (pParent)
+ pParent->acquire();
+}
+
+ScRangeSubTotalDescriptor::~ScRangeSubTotalDescriptor()
+{
+ if (pParent)
+ pParent->release();
+}
+
+void ScRangeSubTotalDescriptor::GetData( ScSubTotalParam& rParam ) const
+{
+ if (pParent)
+ pParent->GetSubTotalParam( rParam );
+}
+
+void ScRangeSubTotalDescriptor::PutData( const ScSubTotalParam& rParam )
+{
+ if (pParent)
+ pParent->SetSubTotalParam( rParam );
+}
+
+//------------------------------------------------------------------------
+
+ScConsolidationDescriptor::ScConsolidationDescriptor()
+{
+}
+
+ScConsolidationDescriptor::~ScConsolidationDescriptor()
+{
+}
+
+void ScConsolidationDescriptor::SetParam( const ScConsolidateParam& rNew )
+{
+ aParam = rNew;
+}
+
+// XConsolidationDescriptor
+
+sheet::GeneralFunction SAL_CALL ScConsolidationDescriptor::getFunction() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ScDataUnoConversion::SubTotalToGeneral(aParam.eFunction);
+}
+
+void SAL_CALL ScConsolidationDescriptor::setFunction( sheet::GeneralFunction nFunction )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aParam.eFunction = ScDataUnoConversion::GeneralToSubTotal(nFunction);
+}
+
+uno::Sequence<table::CellRangeAddress> SAL_CALL ScConsolidationDescriptor::getSources()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = aParam.nDataAreaCount;
+ if (!aParam.ppDataAreas)
+ nCount = 0;
+ table::CellRangeAddress aRange;
+ uno::Sequence<table::CellRangeAddress> aSeq(nCount);
+ table::CellRangeAddress* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScArea* pArea = aParam.ppDataAreas[i];
+ if (pArea)
+ {
+ aRange.Sheet = pArea->nTab;
+ aRange.StartColumn = pArea->nColStart;
+ aRange.StartRow = pArea->nRowStart;
+ aRange.EndColumn = pArea->nColEnd;
+ aRange.EndRow = pArea->nRowEnd;
+ }
+ pAry[i] = aRange;
+ }
+ return aSeq;
+}
+
+void SAL_CALL ScConsolidationDescriptor::setSources(
+ const uno::Sequence<table::CellRangeAddress>& aSources )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = (USHORT)aSources.getLength();
+ if (nCount)
+ {
+ const table::CellRangeAddress* pAry = aSources.getConstArray();
+ ScArea** pNew = new ScArea*[nCount];
+ USHORT i;
+ for (i=0; i<nCount; i++)
+ pNew[i] = new ScArea( pAry[i].Sheet,
+ pAry[i].StartColumn, pAry[i].StartRow,
+ pAry[i].EndColumn, pAry[i].EndRow );
+
+ aParam.SetAreas( pNew, nCount ); // kopiert alles
+
+ for (i=0; i<nCount; i++)
+ delete pNew[i];
+ delete[] pNew;
+ }
+ else
+ aParam.ClearDataAreas();
+}
+
+table::CellAddress SAL_CALL ScConsolidationDescriptor::getStartOutputPosition()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellAddress aPos;
+ aPos.Column = aParam.nCol;
+ aPos.Row = aParam.nRow;
+ aPos.Sheet = aParam.nTab;
+ return aPos;
+}
+
+void SAL_CALL ScConsolidationDescriptor::setStartOutputPosition(
+ const table::CellAddress& aStartOutputPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aParam.nCol = aStartOutputPosition.Column;
+ aParam.nRow = aStartOutputPosition.Row;
+ aParam.nTab = aStartOutputPosition.Sheet;
+}
+
+sal_Bool SAL_CALL ScConsolidationDescriptor::getUseColumnHeaders() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aParam.bByCol;
+}
+
+void SAL_CALL ScConsolidationDescriptor::setUseColumnHeaders( sal_Bool bUseColumnHeaders )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aParam.bByCol = bUseColumnHeaders;
+}
+
+sal_Bool SAL_CALL ScConsolidationDescriptor::getUseRowHeaders() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aParam.bByRow;
+}
+
+void SAL_CALL ScConsolidationDescriptor::setUseRowHeaders( sal_Bool bUseRowHeaders )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aParam.bByRow = bUseRowHeaders;
+}
+
+sal_Bool SAL_CALL ScConsolidationDescriptor::getInsertLinks() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aParam.bReferenceData;
+}
+
+void SAL_CALL ScConsolidationDescriptor::setInsertLinks( sal_Bool bInsertLinks )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aParam.bReferenceData = bInsertLinks;
+}
+
+//------------------------------------------------------------------------
+
+ScFilterDescriptorBase::ScFilterDescriptorBase() :
+ aPropSet( lcl_GetFilterPropertyMap() )
+{
+}
+
+ScFilterDescriptorBase::~ScFilterDescriptorBase()
+{
+}
+
+// XSheetFilterDescriptor
+
+uno::Sequence<sheet::TableFilterField> SAL_CALL ScFilterDescriptorBase::getFilterFields()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScQueryParam aParam;
+ GetData(aParam);
+
+ USHORT nEntries = aParam.GetEntryCount(); // allozierte Eintraege im Param
+ USHORT nCount = 0; // aktive
+ while ( nCount < nEntries &&
+ aParam.GetEntry(nCount).bDoQuery )
+ ++nCount;
+
+ sheet::TableFilterField aField;
+ uno::Sequence<sheet::TableFilterField> aSeq(nCount);
+ sheet::TableFilterField* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ const ScQueryEntry& rEntry = aParam.GetEntry(i);
+ sheet::FilterOperator eFilterOp;
+ switch (rEntry.eOp) // ScQueryOp
+ {
+ case SC_EQUAL: eFilterOp = sheet::FilterOperator_EQUAL; break;
+ case SC_LESS: eFilterOp = sheet::FilterOperator_LESS; break;
+ case SC_GREATER: eFilterOp = sheet::FilterOperator_GREATER; break;
+ case SC_LESS_EQUAL: eFilterOp = sheet::FilterOperator_LESS_EQUAL; break;
+ case SC_GREATER_EQUAL: eFilterOp = sheet::FilterOperator_GREATER_EQUAL; break;
+ case SC_NOT_EQUAL: eFilterOp = sheet::FilterOperator_NOT_EQUAL; break;
+ case SC_TOPVAL: eFilterOp = sheet::FilterOperator_TOP_VALUES; break;
+ case SC_BOTVAL: eFilterOp = sheet::FilterOperator_BOTTOM_VALUES; break;
+ case SC_TOPPERC: eFilterOp = sheet::FilterOperator_TOP_PERCENT; break;
+ case SC_BOTPERC: eFilterOp = sheet::FilterOperator_BOTTOM_PERCENT; break;
+ default:
+ DBG_ERROR("Falscher Filter-enum");
+ eFilterOp = sheet::FilterOperator_EMPTY;
+ }
+ //! FILTER_EMPTY / FILTER_NOTEMPTY umsetzen !!!!!!!!!!!!!!!!!!!!!
+
+ rtl::OUString aStringValue;
+ if (rEntry.pStr)
+ aStringValue = *rEntry.pStr;
+
+ aField.Connection = (rEntry.eConnect == SC_AND) ? sheet::FilterConnection_AND :
+ sheet::FilterConnection_OR;
+ aField.Field = rEntry.nField;
+ aField.Operator = eFilterOp;
+ aField.IsNumeric = !rEntry.bQueryByString;
+ aField.StringValue = aStringValue;
+ aField.NumericValue = rEntry.nVal;
+ pAry[i] = aField;
+ }
+ return aSeq;
+}
+
+void SAL_CALL ScFilterDescriptorBase::setFilterFields(
+ const uno::Sequence<sheet::TableFilterField>& aFilterFields )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScQueryParam aParam;
+ GetData(aParam);
+
+ USHORT nCount = (USHORT)aFilterFields.getLength();
+ DBG_ASSERT( nCount <= MAXQUERY, "setFilterFields: zu viele" );
+
+ aParam.Resize( nCount );
+
+ const sheet::TableFilterField* pAry = aFilterFields.getConstArray();
+ USHORT i;
+ for (i=0; i<nCount; i++)
+ {
+ ScQueryEntry& rEntry = aParam.GetEntry(i);
+ if (!rEntry.pStr)
+ rEntry.pStr = new String; // sollte nicht sein (soll immer initialisiert sein)
+
+ ScQueryOp eQueryOp;
+ switch (pAry[i].Operator) // FilterOperator
+ {
+ case sheet::FilterOperator_EQUAL: eQueryOp = SC_EQUAL; break;
+ case sheet::FilterOperator_LESS: eQueryOp = SC_LESS; break;
+ case sheet::FilterOperator_GREATER: eQueryOp = SC_GREATER; break;
+ case sheet::FilterOperator_LESS_EQUAL: eQueryOp = SC_LESS_EQUAL; break;
+ case sheet::FilterOperator_GREATER_EQUAL: eQueryOp = SC_GREATER_EQUAL; break;
+ case sheet::FilterOperator_NOT_EQUAL: eQueryOp = SC_NOT_EQUAL; break;
+ case sheet::FilterOperator_TOP_VALUES: eQueryOp = SC_TOPVAL; break;
+ case sheet::FilterOperator_BOTTOM_VALUES: eQueryOp = SC_BOTVAL; break;
+ case sheet::FilterOperator_TOP_PERCENT: eQueryOp = SC_TOPPERC; break;
+ case sheet::FilterOperator_BOTTOM_PERCENT: eQueryOp = SC_BOTPERC; break;
+ case sheet::FilterOperator_EMPTY:
+ case sheet::FilterOperator_NOT_EMPTY:
+ //! set SC_EMPTYFIELDS / SC_NONEMPTYFIELDS values !!!!!
+ eQueryOp = SC_EQUAL;
+ break;
+ default:
+ DBG_ERROR("Falscher Query-enum");
+ eQueryOp = SC_EQUAL;
+ }
+
+ rEntry.bDoQuery = TRUE;
+ rEntry.eConnect = (pAry[i].Connection == sheet::FilterConnection_AND) ? SC_AND : SC_OR;
+ rEntry.nField = pAry[i].Field;
+ rEntry.eOp = eQueryOp;
+ rEntry.bQueryByString = !pAry[i].IsNumeric;
+ *rEntry.pStr = String( pAry[i].StringValue );
+ rEntry.nVal = pAry[i].NumericValue;
+ }
+
+ USHORT nParamCount = aParam.GetEntryCount(); // Param wird nicht unter 8 resized
+ for (i=nCount; i<nParamCount; i++)
+ aParam.GetEntry(i).bDoQuery = FALSE; // ueberzaehlige Felder zuruecksetzen
+
+ PutData(aParam);
+}
+
+// Rest sind Properties
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScFilterDescriptorBase::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScFilterDescriptorBase::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScQueryParam aParam;
+ GetData(aParam);
+
+ String aString = aPropertyName;
+ if (aString.EqualsAscii( SC_UNONAME_CONTHDR ))
+ aParam.bHasHeader = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if (aString.EqualsAscii( SC_UNONAME_COPYOUT ))
+ aParam.bInplace = !(ScUnoHelpFunctions::GetBoolFromAny( aValue ));
+ else if (aString.EqualsAscii( SC_UNONAME_ISCASE ))
+ aParam.bCaseSens = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if (aString.EqualsAscii( SC_UNONAME_MAXFLD ))
+ {
+ sal_Int32 nVal;
+ if ( (aValue >>= nVal) && nVal > MAXQUERY )
+ {
+ throw lang::IllegalArgumentException();
+ }
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_ORIENT ))
+ {
+ //! test for correct enum type?
+ table::TableOrientation eOrient = (table::TableOrientation)
+ ScUnoHelpFunctions::GetEnumFromAny( aValue );
+ aParam.bByRow = ( eOrient != table::TableOrientation_COLUMNS );
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_OUTPOS ))
+ {
+ table::CellAddress aAddress;
+ if ( aValue >>= aAddress )
+ {
+ aParam.nDestTab = aAddress.Sheet;
+ aParam.nDestCol = aAddress.Column;
+ aParam.nDestRow = aAddress.Row;
+ }
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_SAVEOUT ))
+ aParam.bDestPers = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if (aString.EqualsAscii( SC_UNONAME_SKIPDUP ))
+ aParam.bDuplicate = !(ScUnoHelpFunctions::GetBoolFromAny( aValue ));
+ else if (aString.EqualsAscii( SC_UNONAME_USEREGEX ))
+ aParam.bRegExp = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+
+ PutData(aParam);
+}
+
+uno::Any SAL_CALL ScFilterDescriptorBase::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScQueryParam aParam;
+ GetData(aParam);
+
+ String aString = aPropertyName;
+ uno::Any aRet;
+
+ if (aString.EqualsAscii( SC_UNONAME_CONTHDR ))
+ ScUnoHelpFunctions::SetBoolInAny( aRet, aParam.bHasHeader );
+ else if (aString.EqualsAscii( SC_UNONAME_COPYOUT ))
+ ScUnoHelpFunctions::SetBoolInAny( aRet, !(aParam.bInplace) );
+ else if (aString.EqualsAscii( SC_UNONAME_ISCASE ))
+ ScUnoHelpFunctions::SetBoolInAny( aRet, aParam.bCaseSens );
+ else if (aString.EqualsAscii( SC_UNONAME_MAXFLD ))
+ aRet <<= (sal_Int32) MAXQUERY;
+ else if (aString.EqualsAscii( SC_UNONAME_ORIENT ))
+ {
+ table::TableOrientation eOrient = aParam.bByRow ? table::TableOrientation_ROWS :
+ table::TableOrientation_COLUMNS;
+ aRet <<= eOrient;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_OUTPOS ))
+ {
+ table::CellAddress aOutPos;
+ aOutPos.Sheet = aParam.nDestTab;
+ aOutPos.Column = aParam.nDestCol;
+ aOutPos.Row = aParam.nDestRow;
+ aRet <<= aOutPos;
+ }
+ else if (aString.EqualsAscii( SC_UNONAME_SAVEOUT ))
+ ScUnoHelpFunctions::SetBoolInAny( aRet, aParam.bDestPers );
+ else if (aString.EqualsAscii( SC_UNONAME_SKIPDUP ))
+ ScUnoHelpFunctions::SetBoolInAny( aRet, !(aParam.bDuplicate) );
+ else if (aString.EqualsAscii( SC_UNONAME_USEREGEX ))
+ ScUnoHelpFunctions::SetBoolInAny( aRet, aParam.bRegExp );
+
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScFilterDescriptorBase )
+
+//------------------------------------------------------------------------
+
+ScFilterDescriptor::ScFilterDescriptor()
+{
+}
+
+ScFilterDescriptor::~ScFilterDescriptor()
+{
+}
+
+void ScFilterDescriptor::GetData( ScQueryParam& rParam ) const
+{
+ rParam = aStoredParam; // Abfrage fuer Interface
+}
+
+void ScFilterDescriptor::PutData( const ScQueryParam& rParam )
+{
+ aStoredParam = rParam; // vom Interface gesetzt
+}
+
+void ScFilterDescriptor::SetParam( const ScQueryParam& rNew )
+{
+ aStoredParam = rNew; // von aussen gesetzt
+}
+
+//------------------------------------------------------------------------
+
+ScRangeFilterDescriptor::ScRangeFilterDescriptor(ScDatabaseRangeObj* pPar) :
+ pParent(pPar)
+{
+ if (pParent)
+ pParent->acquire();
+}
+
+ScRangeFilterDescriptor::~ScRangeFilterDescriptor()
+{
+ if (pParent)
+ pParent->release();
+}
+
+void ScRangeFilterDescriptor::GetData( ScQueryParam& rParam ) const
+{
+ if (pParent)
+ pParent->GetQueryParam( rParam );
+}
+
+void ScRangeFilterDescriptor::PutData( const ScQueryParam& rParam )
+{
+ if (pParent)
+ pParent->SetQueryParam( rParam );
+}
+
+//------------------------------------------------------------------------
+
+ScDataPilotFilterDescriptor::ScDataPilotFilterDescriptor(ScDataPilotDescriptorBase* pPar) :
+ pParent(pPar)
+{
+ if (pParent)
+ pParent->acquire();
+}
+
+ScDataPilotFilterDescriptor::~ScDataPilotFilterDescriptor()
+{
+ if (pParent)
+ pParent->release();
+}
+
+void ScDataPilotFilterDescriptor::GetData( ScQueryParam& rParam ) const
+{
+ if (pParent)
+ {
+ ScPivotParam aPivot;
+ ScArea aArea;
+ pParent->GetParam( aPivot, rParam, aArea );
+ }
+}
+
+void ScDataPilotFilterDescriptor::PutData( const ScQueryParam& rParam )
+{
+ if (pParent)
+ {
+ ScPivotParam aPivot;
+ ScArea aArea;
+ ScQueryParam aOldQuery;
+ pParent->GetParam( aPivot, aOldQuery, aArea );
+ pParent->SetParam( aPivot, rParam, aArea );
+ }
+}
+
+//------------------------------------------------------------------------
+
+ScDatabaseRangeObj::ScDatabaseRangeObj(ScDocShell* pDocSh, const String& rNm) :
+ pDocShell( pDocSh ),
+ aName( rNm ),
+ aPropSet( lcl_GetDBRangePropertyMap() )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScDatabaseRangeObj::~ScDatabaseRangeObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScDatabaseRangeObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Ref-Update interessiert nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) && ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ pDocShell = NULL; // ungueltig geworden
+}
+
+// Hilfsfuntionen
+
+ScDBData* ScDatabaseRangeObj::GetDBData_Impl() const
+{
+ ScDBData* pRet = NULL;
+ if (pDocShell)
+ {
+ ScDBCollection* pNames = pDocShell->GetDocument()->GetDBCollection();
+ if (pNames)
+ {
+ USHORT nPos = 0;
+ if (pNames->SearchName( aName, nPos ))
+ pRet = (*pNames)[nPos];
+ }
+ }
+ return pRet;
+}
+
+// XNamed
+
+rtl::OUString SAL_CALL ScDatabaseRangeObj::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aName;
+}
+
+void SAL_CALL ScDatabaseRangeObj::setName( const rtl::OUString& aNewName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDBDocFunc aFunc(*pDocShell);
+ String aNewStr = aNewName;
+ BOOL bOk = aFunc.RenameDBRange( aName, aNewStr, TRUE );
+ if (bOk)
+ aName = aNewStr;
+ }
+}
+
+// XDatabaseRange
+
+table::CellRangeAddress SAL_CALL ScDatabaseRangeObj::getDataArea() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellRangeAddress aAddress;
+ ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ {
+ ScRange aRange;
+ pData->GetArea(aRange);
+ aAddress.Sheet = aRange.aStart.Tab();
+ aAddress.StartColumn = aRange.aStart.Col();
+ aAddress.StartRow = aRange.aStart.Row();
+ aAddress.EndColumn = aRange.aEnd.Col();
+ aAddress.EndRow = aRange.aEnd.Row();
+ }
+ return aAddress;
+}
+
+void SAL_CALL ScDatabaseRangeObj::setDataArea( const table::CellRangeAddress& aDataArea )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDBData* pData = GetDBData_Impl();
+ if ( pDocShell && pData )
+ {
+ ScDBData aNewData( *pData );
+ //! MoveTo ???
+ aNewData.SetArea( aDataArea.Sheet, aDataArea.StartColumn, aDataArea.StartRow,
+ aDataArea.EndColumn, aDataArea.EndRow );
+ ScDBDocFunc aFunc(*pDocShell);
+ aFunc.ModifyDBData(aNewData, TRUE);
+ }
+}
+
+void ScDatabaseRangeObj::GetSortParam(ScSortParam& rSortParam) const
+{
+ const ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ {
+ pData->GetSortParam(rSortParam);
+
+ // im SortDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ ScRange aDBRange;
+ pData->GetArea(aDBRange);
+ USHORT nFieldStart = rSortParam.bByRow ? aDBRange.aStart.Col() : aDBRange.aStart.Row();
+ for (USHORT i=0; i<MAXSORT; i++)
+ if (rSortParam.bDoSort[i] && rSortParam.nField[i] >= nFieldStart)
+ rSortParam.nField[i] -= nFieldStart;
+ }
+}
+
+void ScDatabaseRangeObj::SetSortParam(const ScSortParam& rSortParam)
+{
+ const ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ {
+ // im SortDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ ScSortParam aParam = rSortParam;
+ ScRange aDBRange;
+ pData->GetArea(aDBRange);
+ USHORT nFieldStart = aParam.bByRow ? aDBRange.aStart.Col() : aDBRange.aStart.Row();
+ for (USHORT i=0; i<MAXSORT; i++)
+ if (aParam.bDoSort[i])
+ aParam.nField[i] += nFieldStart;
+
+ ScDBData aNewData( *pData );
+ aNewData.SetSortParam(aParam);
+ ScDBDocFunc aFunc(*pDocShell);
+ aFunc.ModifyDBData(aNewData, TRUE);
+ }
+}
+
+uno::Sequence<beans::PropertyValue> SAL_CALL ScDatabaseRangeObj::getSortDescriptor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScSortParam aParam;
+ const ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ {
+ pData->GetSortParam(aParam);
+
+ // im SortDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ ScRange aDBRange;
+ pData->GetArea(aDBRange);
+ USHORT nFieldStart = aParam.bByRow ? aDBRange.aStart.Col() : aDBRange.aStart.Row();
+ for (USHORT i=0; i<MAXSORT; i++)
+ if ( aParam.bDoSort[i] && aParam.nField[i] >= nFieldStart )
+ aParam.nField[i] -= nFieldStart;
+ }
+
+ uno::Sequence<beans::PropertyValue> aSeq( ScSortDescriptor::GetPropertyCount() );
+ ScSortDescriptor::FillProperties( aSeq, aParam );
+ return aSeq;
+}
+
+void ScDatabaseRangeObj::GetQueryParam(ScQueryParam& rQueryParam) const
+{
+ const ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ {
+ pData->GetQueryParam(rQueryParam);
+
+ // im FilterDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ ScRange aDBRange;
+ pData->GetArea(aDBRange);
+ USHORT nFieldStart = rQueryParam.bByRow ? aDBRange.aStart.Col() : aDBRange.aStart.Row();
+ USHORT nCount = rQueryParam.GetEntryCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScQueryEntry& rEntry = rQueryParam.GetEntry(i);
+ if (rEntry.bDoQuery && rEntry.nField >= nFieldStart)
+ rEntry.nField -= nFieldStart;
+ }
+ }
+}
+
+void ScDatabaseRangeObj::SetQueryParam(const ScQueryParam& rQueryParam)
+{
+ const ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ {
+ // im FilterDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ ScQueryParam aParam = rQueryParam;
+ ScRange aDBRange;
+ pData->GetArea(aDBRange);
+ USHORT nFieldStart = aParam.bByRow ? aDBRange.aStart.Col() : aDBRange.aStart.Row();
+ USHORT nCount = aParam.GetEntryCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScQueryEntry& rEntry = aParam.GetEntry(i);
+ if (rEntry.bDoQuery)
+ {
+ rEntry.nField += nFieldStart;
+ // Im Dialog wird immer der String angezeigt -> muss zum Wert passen
+ if ( !rEntry.bQueryByString )
+ pDocShell->GetDocument()->GetFormatTable()->
+ GetInputLineString( rEntry.nVal, 0, *rEntry.pStr );
+ }
+ }
+
+ ScDBData aNewData( *pData );
+ aNewData.SetQueryParam(aParam);
+ ScDBDocFunc aFunc(*pDocShell);
+ aFunc.ModifyDBData(aNewData, TRUE);
+ }
+}
+
+uno::Reference<sheet::XSheetFilterDescriptor> SAL_CALL ScDatabaseRangeObj::getFilterDescriptor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScRangeFilterDescriptor(this);
+}
+
+void ScDatabaseRangeObj::GetSubTotalParam(ScSubTotalParam& rSubTotalParam) const
+{
+ const ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ {
+ pData->GetSubTotalParam(rSubTotalParam);
+
+ // im FilterDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ ScRange aDBRange;
+ pData->GetArea(aDBRange);
+ USHORT nFieldStart = aDBRange.aStart.Col();
+ for (USHORT i=0; i<MAXSUBTOTAL; i++)
+ {
+ if ( rSubTotalParam.bGroupActive[i] )
+ {
+ if ( rSubTotalParam.nField[i] >= nFieldStart )
+ rSubTotalParam.nField[i] -= nFieldStart;
+ for (USHORT j=0; j<rSubTotalParam.nSubTotals[i]; j++)
+ if ( rSubTotalParam.pSubTotals[i][j] >= nFieldStart )
+ rSubTotalParam.pSubTotals[i][j] -= nFieldStart;
+ }
+ }
+ }
+}
+
+void ScDatabaseRangeObj::SetSubTotalParam(const ScSubTotalParam& rSubTotalParam)
+{
+ const ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ {
+ // im FilterDescriptor sind die Fields innerhalb des Bereichs gezaehlt
+ ScSubTotalParam aParam = rSubTotalParam;
+ ScRange aDBRange;
+ pData->GetArea(aDBRange);
+ USHORT nFieldStart = aDBRange.aStart.Col();
+ for (USHORT i=0; i<MAXSUBTOTAL; i++)
+ {
+ if ( aParam.bGroupActive[i] )
+ {
+ aParam.nField[i] += nFieldStart;
+ for (USHORT j=0; j<aParam.nSubTotals[i]; j++)
+ aParam.pSubTotals[i][j] += nFieldStart;
+ }
+ }
+
+ ScDBData aNewData( *pData );
+ aNewData.SetSubTotalParam(aParam);
+ ScDBDocFunc aFunc(*pDocShell);
+ aFunc.ModifyDBData(aNewData, TRUE);
+ }
+}
+
+uno::Reference<sheet::XSubTotalDescriptor> SAL_CALL ScDatabaseRangeObj::getSubTotalDescriptor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScRangeSubTotalDescriptor(this);
+}
+
+void ScDatabaseRangeObj::GetImportParam(ScImportParam& rImportParam) const
+{
+ const ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ {
+ pData->GetImportParam(rImportParam);
+ // Fields gibt's hier nicht anzupassen
+ }
+}
+
+void ScDatabaseRangeObj::SetImportParam(const ScImportParam& rImportParam)
+{
+ const ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ {
+ // Fields gibt's hier nicht anzupassen
+
+ ScDBData aNewData( *pData );
+ aNewData.SetImportParam(rImportParam);
+ ScDBDocFunc aFunc(*pDocShell);
+ aFunc.ModifyDBData(aNewData, TRUE);
+ }
+}
+
+uno::Sequence<beans::PropertyValue> SAL_CALL ScDatabaseRangeObj::getImportDescriptor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScImportParam aParam;
+ const ScDBData* pData = GetDBData_Impl();
+ if (pData)
+ pData->GetImportParam(aParam);
+
+ uno::Sequence<beans::PropertyValue> aSeq( ScImportDescriptor::GetPropertyCount() );
+ ScImportDescriptor::FillProperties( aSeq, aParam );
+ return aSeq;
+}
+
+void SAL_CALL ScDatabaseRangeObj::refresh() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDBData* pData = GetDBData_Impl();
+ if ( pDocShell && pData )
+ {
+ ScDBDocFunc aFunc(*pDocShell);
+
+ // Import zu wiederholen?
+ BOOL bContinue = TRUE;
+ ScImportParam aImportParam;
+ pData->GetImportParam( aImportParam );
+ if (aImportParam.bImport && !pData->HasImportSelection())
+ {
+ USHORT nTab, nDummy;
+ pData->GetArea( nTab, nDummy,nDummy,nDummy,nDummy );
+ bContinue = aFunc.DoImport( nTab, aImportParam, NULL, TRUE, FALSE ); //! Api-Flag als Parameter
+ }
+
+ // interne Operationen (sort, query, subtotal) nur, wenn kein Fehler
+ if (bContinue)
+ aFunc.RepeatDB( pData->GetName(), TRUE, TRUE );
+ }
+}
+
+// XCellRangeSource
+
+uno::Reference<table::XCellRange> SAL_CALL ScDatabaseRangeObj::getReferredCells()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRange aRange;
+ ScDBData* pData = GetDBData_Impl();
+ if ( pData )
+ {
+ //! static Funktion um ScCellObj/ScCellRangeObj zu erzeugen am ScCellRangeObj ???
+
+ pData->GetArea(aRange);
+ if ( aRange.aStart == aRange.aEnd )
+ return new ScCellObj( pDocShell, aRange.aStart );
+ else
+ return new ScCellRangeObj( pDocShell, aRange );
+ }
+ return NULL;
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScDatabaseRangeObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScDatabaseRangeObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScDBData* pData = GetDBData_Impl();
+ if ( pDocShell && pData )
+ {
+ ScDBData aNewData( *pData );
+ BOOL bDo = TRUE;
+
+ String aString = aPropertyName;
+ if ( aString.EqualsAscii( SC_UNONAME_KEEPFORM ) )
+ aNewData.SetKeepFmt( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNONAME_MOVCELLS ) )
+ aNewData.SetDoSize( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNONAME_STRIPDAT ) )
+ aNewData.SetStripData( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else
+ bDo = FALSE;
+
+ if (bDo)
+ {
+ ScDBDocFunc aFunc(*pDocShell);
+ aFunc.ModifyDBData(aNewData, TRUE);
+ }
+ }
+}
+
+uno::Any SAL_CALL ScDatabaseRangeObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Any aRet;
+ ScDBData* pData = GetDBData_Impl();
+ if ( pData )
+ {
+ String aString = aPropertyName;
+ if ( aString.EqualsAscii( SC_UNONAME_KEEPFORM ) )
+ ScUnoHelpFunctions::SetBoolInAny( aRet, pData->IsKeepFmt() );
+ else if ( aString.EqualsAscii( SC_UNONAME_MOVCELLS ) )
+ ScUnoHelpFunctions::SetBoolInAny( aRet, pData->IsDoSize() );
+ else if ( aString.EqualsAscii( SC_UNONAME_STRIPDAT ) )
+ ScUnoHelpFunctions::SetBoolInAny( aRet, pData->IsStripData() );
+ else if ( aString.EqualsAscii( SC_UNO_LINKDISPBIT ) )
+ {
+ // no target bitmaps for individual entries (would be all equal)
+ // ScLinkTargetTypeObj::SetLinkTargetBitmap( aRet, SC_LINKTARGETTYPE_DBAREA );
+ }
+ else if ( aString.EqualsAscii( SC_UNO_LINKDISPNAME ) )
+ aRet <<= rtl::OUString( aName );
+ }
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScDatabaseRangeObj )
+
+// XServiceInfo
+
+rtl::OUString SAL_CALL ScDatabaseRangeObj::getImplementationName() throw(uno::RuntimeException)
+{
+ return rtl::OUString::createFromAscii( "ScDatabaseRangeObj" );
+}
+
+sal_Bool SAL_CALL ScDatabaseRangeObj::supportsService( const rtl::OUString& rServiceName )
+ throw(uno::RuntimeException)
+{
+ String aServiceStr( rServiceName );
+ return aServiceStr.EqualsAscii( SCDATABASERANGEOBJ_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCLINKTARGET_SERVICE );
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScDatabaseRangeObj::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ uno::Sequence<rtl::OUString> aRet(2);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCDATABASERANGEOBJ_SERVICE );
+ pArray[1] = rtl::OUString::createFromAscii( SCLINKTARGET_SERVICE );
+ return aRet;
+}
+
+//------------------------------------------------------------------------
+
+ScDatabaseRangesObj::ScDatabaseRangesObj(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScDatabaseRangesObj::~ScDatabaseRangesObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScDatabaseRangesObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XDatabaseRanges
+
+ScDatabaseRangeObj* ScDatabaseRangesObj::GetObjectByIndex_Impl(USHORT nIndex)
+{
+ if (pDocShell)
+ {
+ ScDBCollection* pNames = pDocShell->GetDocument()->GetDBCollection();
+ if (pNames && nIndex < pNames->GetCount())
+ return new ScDatabaseRangeObj( pDocShell, (*pNames)[nIndex]->GetName() );
+ }
+ return NULL;
+}
+
+ScDatabaseRangeObj* ScDatabaseRangesObj::GetObjectByName_Impl(const rtl::OUString& aName)
+{
+ if ( pDocShell && hasByName(aName) )
+ {
+ String aString = aName;
+ return new ScDatabaseRangeObj( pDocShell, aString );
+ }
+ return NULL;
+}
+
+
+void SAL_CALL ScDatabaseRangesObj::addNewByName( const rtl::OUString& aName,
+ const table::CellRangeAddress& aRange )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDBDocFunc aFunc(*pDocShell);
+
+ String aString = aName;
+ ScRange aNameRange( aRange.StartColumn, aRange.StartRow, aRange.Sheet,
+ aRange.EndColumn, aRange.EndRow, aRange.Sheet );
+ aFunc.AddDBRange( aString, aNameRange, TRUE );
+ }
+}
+
+void SAL_CALL ScDatabaseRangesObj::removeByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDBDocFunc aFunc(*pDocShell);
+ String aString = aName;
+ aFunc.DeleteDBRange( aString, TRUE );
+ }
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScDatabaseRangesObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScDatabaseRangesObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ //! "unbenannt" weglassen ?
+
+ if (pDocShell)
+ {
+ ScDBCollection* pNames = pDocShell->GetDocument()->GetDBCollection();
+ if (pNames)
+ return pNames->GetCount();
+ }
+
+ return NULL;
+}
+
+uno::Any SAL_CALL ScDatabaseRangesObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XDatabaseRange> xRange = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ aAny <<= xRange;
+ return aAny;
+}
+
+uno::Type SAL_CALL ScDatabaseRangesObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<sheet::XDatabaseRange>*)0);
+}
+
+sal_Bool SAL_CALL ScDatabaseRangesObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+// XNameAccess
+
+uno::Any SAL_CALL ScDatabaseRangesObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XDatabaseRange> xRange = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ aAny <<= xRange;
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScDatabaseRangesObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ //! "unbenannt" weglassen ?
+
+ if (pDocShell)
+ {
+ ScDBCollection* pNames = pDocShell->GetDocument()->GetDBCollection();
+ if (pNames)
+ {
+ USHORT nCount = pNames->GetCount();
+ String aName;
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ pAry[i] = (*pNames)[i]->GetName();
+
+ return aSeq;
+ }
+ }
+ return uno::Sequence<rtl::OUString>(0);
+}
+
+sal_Bool SAL_CALL ScDatabaseRangesObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ //! "unbenannt" weglassen ?
+
+ if (pDocShell)
+ {
+ ScDBCollection* pNames = pDocShell->GetDocument()->GetDBCollection();
+ if (pNames)
+ {
+ String aString = aName;
+ USHORT nPos = 0;
+ if (pNames->SearchName( aString, nPos ))
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+
+
+
+
+
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
new file mode 100644
index 000000000000..89710bdc8fc4
--- /dev/null
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -0,0 +1,2154 @@
+/*************************************************************************
+ *
+ * $RCSfile: docuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <svx/fmdpage.hxx>
+#include <svx/svdpage.hxx>
+
+#include <svtools/numuno.hxx>
+#include <svtools/smplhint.hxx>
+#include <sfx2/printer.hxx>
+#include <vcl/waitobj.hxx>
+#include <unotools/uno3.hxx>
+#include <unotools/charclass.hxx>
+#include <ctype.h>
+#include <float.h> // DBL_MAX
+
+#include <com/sun/star/util/Date.hpp>
+#include <com/sun/star/sheet/XNamedRanges.hpp>
+#include <com/sun/star/sheet/XLabelRanges.hpp>
+
+#include "docuno.hxx"
+#include "cellsuno.hxx"
+#include "nameuno.hxx"
+#include "datauno.hxx"
+#include "miscuno.hxx"
+#include "notesuno.hxx"
+#include "styleuno.hxx"
+#include "linkuno.hxx"
+#include "servuno.hxx"
+#include "targuno.hxx"
+#include "convuno.hxx"
+#include "docsh.hxx"
+#include "hints.hxx"
+#include "docfunc.hxx"
+#include "dociter.hxx"
+#include "cell.hxx"
+#include "drwlayer.hxx"
+#include "rangeutl.hxx"
+#include "markdata.hxx"
+#include "viewfunc.hxx" // TABLEID_DOC - verschieben!!!
+#include "docoptio.hxx"
+#include "unoguard.hxx"
+#include "unonames.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+// alles ohne Which-ID, Map nur fuer PropertySetInfo
+
+//! umbenennen, sind nicht mehr nur Options
+const SfxItemPropertyMap* lcl_GetDocOptPropertyMap()
+{
+ static SfxItemPropertyMap aDocOptPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNO_AREALINKS), 0, &getCppuType((uno::Reference<sheet::XAreaLinks>*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_CALCASSHOWN), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_CLOCAL), 0, &getCppuType((lang::Locale*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_COLLABELRNG), 0, &getCppuType((uno::Reference<sheet::XLabelRanges>*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_DDELINKS), 0, &getCppuType((uno::Reference<container::XNameAccess>*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_DEFTABSTOP), 0, &getCppuType((sal_Int16*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_IGNORECASE), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_ITERENABLED), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_ITERCOUNT), 0, &getCppuType((sal_Int32*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_ITEREPSILON), 0, &getCppuType((double*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_LOOKUPLABELS), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_MATCHWHOLE), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_NAMEDRANGES), 0, &getCppuType((uno::Reference<sheet::XNamedRanges>*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_DATABASERNG), 0, &getCppuType((uno::Reference<sheet::XDatabaseRanges>*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_NULLDATE), 0, &getCppuType((util::Date*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_ROWLABELRNG), 0, &getCppuType((uno::Reference<sheet::XLabelRanges>*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHEETLINKS), 0, &getCppuType((uno::Reference<container::XNameAccess>*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_SPELLONLINE), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_STANDARDDEC), 0, &getCppuType((sal_Int16*)0), 0},
+ {0,0,0,0}
+ };
+ return aDocOptPropertyMap_Impl;
+}
+
+//! StandardDecimals als Property und vom NumberFormatter ????????
+
+//------------------------------------------------------------------------
+
+#define SCMODELOBJ_SERVICE "com.sun.star.sheet.SpreadsheetDocument"
+#define SCDOCSETTINGS_SERVICE "com.sun.star.sheet.SpreadsheetDocumentSettings"
+
+SC_SIMPLE_SERVICE_INFO( ScAnnotationsObj, "ScAnnotationsObj", "com.sun.star.sheet.CellAnnotations" )
+SC_SIMPLE_SERVICE_INFO( ScDrawPagesObj, "ScDrawPagesObj", "com.sun.star.drawing.DrawPages" )
+SC_SIMPLE_SERVICE_INFO( ScScenariosObj, "ScScenariosObj", "com.sun.star.sheet.Scenarios" )
+SC_SIMPLE_SERVICE_INFO( ScSpreadsheetSettingsObj, "ScSpreadsheetSettingsObj", "com.sun.star.sheet.SpreadsheetDocumentSettings" )
+SC_SIMPLE_SERVICE_INFO( ScTableColumnsObj, "ScTableColumnsObj", "com.sun.star.table.TableColumns" )
+SC_SIMPLE_SERVICE_INFO( ScTableRowsObj, "ScTableRowsObj", "com.sun.star.table.TableRows" )
+SC_SIMPLE_SERVICE_INFO( ScTableSheetsObj, "ScTableSheetsObj", "com.sun.star.sheet.Spreadsheets" )
+
+//------------------------------------------------------------------------
+
+String lcl_ColumnToString( USHORT nCol ) //! irgendwo global ???
+{
+ if ( nCol < 26 )
+ return String( (sal_Unicode) ( 'A' + nCol ) );
+ else if ( nCol <= MAXCOL )
+ {
+ String aStr( (sal_Unicode) ( 'A' + ( nCol / 26 ) - 1 ) );
+ aStr += (sal_Unicode) ( 'A' + ( nCol % 26 ) );
+ return aStr;
+ }
+ return '*'; //! oder #REF oder so ??
+}
+
+BOOL lcl_StringToColumn( const String& rStr, USHORT& rCol ) //! irgendwo global ???
+{
+ BOOL bOk = FALSE;
+ sal_Unicode c = rStr.GetChar(0);
+ if (CharClass::isAsciiAlpha(c))
+ {
+ USHORT nResult = toupper((sal_Char)c) - 'A';
+ c = rStr.GetChar(1);
+ if (CharClass::isAsciiAlpha(c))
+ nResult = ((nResult + 1) * 26) + (toupper((sal_Char)c) - 'A');
+ if (nResult <= MAXCOL)
+ {
+ rCol = nResult;
+ bOk = TRUE;
+ }
+ }
+ return bOk;
+}
+
+//------------------------------------------------------------------------
+
+// static
+void ScModelObj::CreateAndSet(ScDocShell* pDocSh)
+{
+ if (pDocSh)
+ pDocSh->SetBaseModel( new ScModelObj(pDocSh) );
+}
+
+ScModelObj::ScModelObj( ScDocShell* pDocSh ) :
+ SfxBaseModel( pDocSh ),
+ aPropSet( lcl_GetDocOptPropertyMap() ),
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this); // SfxModel is derived from SfxListener
+
+ // setDelegator veraendert den RefCount, darum eine Referenz selber halten
+ // (direkt am m_refCount, um sich beim release nicht selbst zu loeschen)
+ utl::increment( m_refCount );
+
+ // waehrend des queryInterface braucht man ein Ref auf das
+ // SvNumberFormatsSupplierObj, sonst wird es geloescht.
+ uno::Reference<util::XNumberFormatsSupplier> xFormatter = new SvNumberFormatsSupplierObj(
+ pDocShell->GetDocument()->GetFormatTable() );
+ xNumberAgg = uno::Reference<uno::XAggregation>( xFormatter, uno::UNO_QUERY );
+
+ // beim setDelegator darf die zusaetzliche Ref nicht mehr existieren
+ xFormatter = NULL;
+
+ if (xNumberAgg.is())
+ xNumberAgg->setDelegator( (cppu::OWeakObject*)this );
+
+ utl::decrement( m_refCount );
+}
+
+ScModelObj::~ScModelObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+
+ if (xNumberAgg.is())
+ xNumberAgg->setDelegator(uno::Reference<uno::XInterface>());
+}
+
+ScDocument* ScModelObj::GetDocument() const
+{
+ if (pDocShell)
+ return pDocShell->GetDocument();
+ return NULL;
+}
+
+uno::Any SAL_CALL ScModelObj::queryInterface( const uno::Type& rType )
+ throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( sheet::XSpreadsheetDocument )
+ SC_QUERYINTERFACE( document::XActionLockable )
+ SC_QUERYINTERFACE( sheet::XCalculatable )
+ SC_QUERYINTERFACE( util::XProtectable )
+ SC_QUERYINTERFACE( drawing::XDrawPagesSupplier )
+ SC_QUERYINTERFACE( sheet::XGoalSeek )
+ SC_QUERYINTERFACE( sheet::XConsolidatable )
+ SC_QUERYINTERFACE( sheet::XDocumentAuditing )
+ SC_QUERYINTERFACE( style::XStyleFamiliesSupplier )
+ SC_QUERYINTERFACE( document::XLinkTargetSupplier )
+ SC_QUERYINTERFACE( beans::XPropertySet )
+ SC_QUERYINTERFACE( lang::XMultiServiceFactory )
+ SC_QUERYINTERFACE( lang::XUnoTunnel )
+ SC_QUERYINTERFACE( lang::XServiceInfo )
+
+ uno::Any aRet = SfxBaseModel::queryInterface( rType );
+ if ( !aRet.hasValue() && xNumberAgg.is() )
+ aRet = xNumberAgg->queryAggregation( rType );
+
+ return aRet;
+}
+
+void SAL_CALL ScModelObj::acquire() throw(uno::RuntimeException)
+{
+ SfxBaseModel::acquire();
+}
+
+void SAL_CALL ScModelObj::release() throw(uno::RuntimeException)
+{
+ SfxBaseModel::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScModelObj::getTypes() throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ uno::Sequence<uno::Type> aParentTypes = SfxBaseModel::getTypes();
+ long nParentLen = aParentTypes.getLength();
+ const uno::Type* pParentPtr = aParentTypes.getConstArray();
+
+ uno::Sequence<uno::Type> aAggTypes;
+ if ( xNumberAgg.is() )
+ {
+ const uno::Type& rProvType = ::getCppuType((uno::Reference<lang::XTypeProvider>*) 0);
+ uno::Any aNumProv = xNumberAgg->queryAggregation(rProvType);
+ if(aNumProv.getValueType() == rProvType)
+ {
+ uno::Reference<lang::XTypeProvider> xNumProv =
+ *(uno::Reference<lang::XTypeProvider>*)aNumProv.getValue();
+ aAggTypes = xNumProv->getTypes();
+ }
+ }
+ long nAggLen = aAggTypes.getLength();
+ const uno::Type* pAggPtr = aAggTypes.getConstArray();
+
+ const long nThisLen = 14;
+ aTypes.realloc( nParentLen + nAggLen + nThisLen );
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[nParentLen + 0] = getCppuType((const uno::Reference<sheet::XSpreadsheetDocument>*)0);
+ pPtr[nParentLen + 1] = getCppuType((const uno::Reference<document::XActionLockable>*)0);
+ pPtr[nParentLen + 2] = getCppuType((const uno::Reference<sheet::XCalculatable>*)0);
+ pPtr[nParentLen + 3] = getCppuType((const uno::Reference<util::XProtectable>*)0);
+ pPtr[nParentLen + 4] = getCppuType((const uno::Reference<drawing::XDrawPagesSupplier>*)0);
+ pPtr[nParentLen + 5] = getCppuType((const uno::Reference<sheet::XGoalSeek>*)0);
+ pPtr[nParentLen + 6] = getCppuType((const uno::Reference<sheet::XConsolidatable>*)0);
+ pPtr[nParentLen + 7] = getCppuType((const uno::Reference<sheet::XDocumentAuditing>*)0);
+ pPtr[nParentLen + 8] = getCppuType((const uno::Reference<style::XStyleFamiliesSupplier>*)0);
+ pPtr[nParentLen + 9] = getCppuType((const uno::Reference<document::XLinkTargetSupplier>*)0);
+ pPtr[nParentLen +10] = getCppuType((const uno::Reference<beans::XPropertySet>*)0);
+ pPtr[nParentLen +11] = getCppuType((const uno::Reference<lang::XMultiServiceFactory>*)0);
+ pPtr[nParentLen +12] = getCppuType((const uno::Reference<lang::XUnoTunnel>*)0);
+ pPtr[nParentLen +13] = getCppuType((const uno::Reference<lang::XServiceInfo>*)0);
+
+ long i;
+ for (i=0; i<nParentLen; i++)
+ pPtr[i] = pParentPtr[i]; // parent types first
+
+ for (i=0; i<nAggLen; i++)
+ pPtr[nParentLen+nThisLen+i] = pAggPtr[i]; // aggregated types last
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScModelObj::getImplementationId()
+ throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+void ScModelObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ if (xNumberAgg.is())
+ {
+ SvNumberFormatsSupplierObj* pNumFmt =
+ SvNumberFormatsSupplierObj::getImplementation(
+ uno::Reference<util::XNumberFormatsSupplier>(xNumberAgg, uno::UNO_QUERY) );
+ if ( pNumFmt )
+ pNumFmt->SetNumberFormatter( NULL );
+ }
+ }
+ else if ( rHint.ISA( ScPointerChangedHint ) )
+ {
+ USHORT nFlags = ((const ScPointerChangedHint&)rHint).GetFlags();
+ if (nFlags & SC_POINTERCHANGED_NUMFMT)
+ {
+ // NumberFormatter-Pointer am Uno-Objekt neu setzen
+
+ if (xNumberAgg.is())
+ {
+ SvNumberFormatsSupplierObj* pNumFmt =
+ SvNumberFormatsSupplierObj::getImplementation(
+ uno::Reference<util::XNumberFormatsSupplier>(xNumberAgg, uno::UNO_QUERY) );
+ if ( pNumFmt && pDocShell )
+ pNumFmt->SetNumberFormatter( pDocShell->GetDocument()->GetFormatTable() );
+ }
+ }
+ }
+ else
+ SfxBaseModel::Notify( rBC, rHint ); // SfxBaseModel is derived from SfxListener
+}
+
+// XSpreadsheetDocument
+
+uno::Reference<sheet::XSpreadsheets> SAL_CALL ScModelObj::getSheets() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return new ScTableSheetsObj(pDocShell);
+ return NULL;
+}
+
+// XStyleFamiliesSupplier
+
+uno::Reference<container::XNameAccess> SAL_CALL ScModelObj::getStyleFamilies()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return new ScStyleFamiliesObj(pDocShell);
+ return NULL;
+}
+
+// XLinkTargetSupplier
+
+uno::Reference<container::XNameAccess> SAL_CALL ScModelObj::getLinks() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return new ScLinkTargetTypesObj(pDocShell);
+ return NULL;
+}
+
+// XActionLockable
+
+sal_Bool SAL_CALL ScModelObj::isActionLocked() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bLocked = FALSE;
+ if (pDocShell)
+ bLocked = ( pDocShell->GetLockCount() != 0 );
+ return bLocked;
+}
+
+void SAL_CALL ScModelObj::addActionLock() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ pDocShell->LockPaint();
+}
+
+void SAL_CALL ScModelObj::removeActionLock() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ pDocShell->UnlockPaint();
+}
+
+void SAL_CALL ScModelObj::setActionLocks( sal_Int16 nLock ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ pDocShell->SetLockCount(nLock);
+}
+
+sal_Int16 SAL_CALL ScModelObj::resetActionLocks() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nRet = 0;
+ if (pDocShell)
+ {
+ nRet = pDocShell->GetLockCount();
+ pDocShell->SetLockCount(0);
+ }
+ return nRet;
+}
+
+// XCalculate
+
+void SAL_CALL ScModelObj::calculate() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ pDocShell->DoRecalc(TRUE);
+ else
+ DBG_ERROR("keine DocShell"); //! Exception oder so?
+}
+
+void SAL_CALL ScModelObj::calculateAll() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ pDocShell->DoHardRecalc(TRUE);
+ else
+ DBG_ERROR("keine DocShell"); //! Exception oder so?
+}
+
+sal_Bool SAL_CALL ScModelObj::isAutomaticCalculationEnabled() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return pDocShell->GetDocument()->GetAutoCalc();
+
+ DBG_ERROR("keine DocShell"); //! Exception oder so?
+ return FALSE;
+}
+
+void SAL_CALL ScModelObj::enableAutomaticCalculation( sal_Bool bEnabled )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ if ( pDoc->GetAutoCalc() != bEnabled )
+ {
+ pDoc->SetAutoCalc( bEnabled );
+ pDocShell->SetDocumentModified();
+ }
+ }
+ else
+ DBG_ERROR("keine DocShell"); //! Exception oder so?
+}
+
+// XProtectable
+
+void SAL_CALL ScModelObj::protect( const rtl::OUString& aPassword ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ String aString = aPassword;
+
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.Protect( TABLEID_DOC, aString, TRUE );
+ }
+}
+
+void SAL_CALL ScModelObj::unprotect( const rtl::OUString& aPassword )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ String aString = aPassword;
+
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.Unprotect( TABLEID_DOC, aString, TRUE );
+
+ //! Rueckgabewert auswerten, Exception oder so
+ }
+}
+
+sal_Bool SAL_CALL ScModelObj::isProtected() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return pDocShell->GetDocument()->IsDocProtected();
+
+ DBG_ERROR("keine DocShell"); //! Exception oder so?
+ return FALSE;
+}
+
+// XDrawPagesSupplier
+
+uno::Reference<drawing::XDrawPages> SAL_CALL ScModelObj::getDrawPages() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return new ScDrawPagesObj(pDocShell);
+
+ DBG_ERROR("keine DocShell"); //! Exception oder so?
+ return NULL;
+}
+
+#if 0
+// XPrintable
+
+rtl::OUString ScModelObj::getPrinterName(void) const
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ SfxPrinter* pPrinter = pDocShell->GetPrinter();
+ if (pPrinter)
+ return pPrinter->GetName();
+ }
+
+ DBG_ERROR("getPrinterName: keine DocShell oder kein Printer");
+ return rtl::OUString();
+}
+
+void ScModelObj::setPrinterName(const rtl::OUString& PrinterName)
+{
+ ScUnoGuard aGuard;
+ // Drucker setzen - wie in SfxViewShell::ExecPrint_Impl
+
+ if (pDocShell)
+ {
+ SfxPrinter* pPrinter = pDocShell->GetPrinter();
+ if (pPrinter)
+ {
+ String aString = PrinterName;
+ SfxPrinter* pNewPrinter = new SfxPrinter( pPrinter->GetOptions().Clone(), aString );
+ if (pNewPrinter->IsKnown())
+ pDocShell->SetPrinter( pNewPrinter, SFX_PRINTER_PRINTER );
+ else
+ delete pNewPrinter;
+ }
+ }
+}
+
+XPropertySetRef ScModelObj::createPrintOptions(void)
+{
+ ScUnoGuard aGuard;
+ return new ScPrintSettingsObj; //! ScPrintSettingsObj implementieren!
+}
+
+void ScModelObj::print(const XPropertySetRef& xOptions)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ //! xOptions auswerten (wie denn?)
+
+ //! muss noch
+ }
+}
+#endif
+
+// XGoalSeek
+
+sheet::GoalResult SAL_CALL ScModelObj::seekGoal(
+ const table::CellAddress& aFormulaPosition,
+ const table::CellAddress& aVariablePosition,
+ const ::rtl::OUString& aGoalValue )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ sheet::GoalResult aResult;
+ aResult.Divergence = DBL_MAX; // nichts gefunden
+ if (pDocShell)
+ {
+ WaitObject aWait( pDocShell->GetDialogParent() );
+ String aGoalString = aGoalValue;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ double fValue = 0.0;
+ BOOL bFound = pDoc->Solver(
+ aFormulaPosition.Column, aFormulaPosition.Row, aFormulaPosition.Sheet,
+ aVariablePosition.Column, aVariablePosition.Row, aVariablePosition.Sheet,
+ aGoalString, fValue );
+ aResult.Result = fValue;
+ if (bFound)
+ aResult.Divergence = 0.0; //! das ist gelogen
+ }
+ return aResult;
+}
+
+// XConsolidatable
+
+uno::Reference<sheet::XConsolidationDescriptor> SAL_CALL ScModelObj::createConsolidationDescriptor(
+ sal_Bool bEmpty ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScConsolidationDescriptor* pNew = new ScConsolidationDescriptor;
+ if ( pDocShell && !bEmpty )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ const ScConsolidateParam* pParam = pDoc->GetConsolidateDlgData();
+ if (pParam)
+ pNew->SetParam( *pParam );
+ }
+ return pNew;
+}
+
+void SAL_CALL ScModelObj::consolidate(
+ const uno::Reference<sheet::XConsolidationDescriptor>& xDescriptor )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ // das koennte theoretisch ein fremdes Objekt sein, also nur das
+ // oeffentliche XConsolidationDescriptor Interface benutzen, um
+ // die Daten in ein ScConsolidationDescriptor Objekt zu kopieren:
+ //! wenn es schon ein ScConsolidationDescriptor ist, direkt per getImplementation?
+
+ ScConsolidationDescriptor aImpl;
+ aImpl.setFunction( xDescriptor->getFunction() );
+ aImpl.setSources( xDescriptor->getSources() );
+ aImpl.setStartOutputPosition( xDescriptor->getStartOutputPosition() );
+ aImpl.setUseColumnHeaders( xDescriptor->getUseColumnHeaders() );
+ aImpl.setUseRowHeaders( xDescriptor->getUseRowHeaders() );
+ aImpl.setInsertLinks( xDescriptor->getInsertLinks() );
+
+ if (pDocShell)
+ {
+ const ScConsolidateParam& rParam = aImpl.GetParam();
+ pDocShell->DoConsolidate( rParam, TRUE );
+ pDocShell->GetDocument()->SetConsolidateDlgData( &rParam );
+ }
+}
+
+// XDocumentAuditing
+
+void SAL_CALL ScModelObj::refreshArrows() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.DetectiveRefresh();
+ }
+}
+
+// XPropertySet (Doc-Optionen)
+//! auch an der Applikation anbieten?
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScModelObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScModelObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ const ScDocOptions& rOldOpt = pDoc->GetDocOptions();
+ ScDocOptions aNewOpt = rOldOpt;
+
+ if ( aString.EqualsAscii( SC_UNO_CALCASSHOWN ) )
+ aNewOpt.SetCalcAsShown( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_IGNORECASE ) )
+ aNewOpt.SetIgnoreCase( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_ITERENABLED ) )
+ aNewOpt.SetIter( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_LOOKUPLABELS ) )
+ aNewOpt.SetLookUpColRowNames( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_MATCHWHOLE ) )
+ aNewOpt.SetMatchWholeCell( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SPELLONLINE ) )
+ aNewOpt.SetAutoSpell( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_DEFTABSTOP ) )
+ {
+ sal_Int16 nIntVal;
+ if ( aValue >>= nIntVal )
+ aNewOpt.SetTabDistance( nIntVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNO_ITERCOUNT ) )
+ {
+ sal_Int32 nIntVal;
+ if ( aValue >>= nIntVal )
+ aNewOpt.SetIterCount( nIntVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNO_STANDARDDEC ) )
+ {
+ sal_Int16 nIntVal;
+ if ( aValue >>= nIntVal )
+ aNewOpt.SetStdPrecision( nIntVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNO_ITEREPSILON ) )
+ {
+ double fDoubleVal;
+ if ( aValue >>= fDoubleVal )
+ aNewOpt.SetIterEps( fDoubleVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNO_NULLDATE ) )
+ {
+ util::Date aDate;
+ if ( aValue >>= aDate )
+ aNewOpt.SetDate( aDate.Day, aDate.Month, aDate.Year );
+ }
+ else if ( aString.EqualsAscii( SC_UNONAME_CLOCAL ) )
+ {
+ lang::Locale aLocale;
+ if ( aValue >>= aLocale )
+ pDoc->SetLanguage( ScUnoConversion::GetLanguage(aLocale) );
+ }
+
+ if ( aNewOpt != rOldOpt )
+ {
+ pDoc->SetDocOptions( aNewOpt );
+ pDocShell->DoHardRecalc( TRUE ); //! Recalc nur bei entsprechenden Optionen?
+ pDocShell->SetDocumentModified();
+ }
+ }
+}
+
+uno::Any SAL_CALL ScModelObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+ uno::Any aRet;
+
+ if (pDocShell)
+ {
+ const ScDocOptions& rOpt = pDocShell->GetDocument()->GetDocOptions();
+
+ if ( aString.EqualsAscii( SC_UNO_CALCASSHOWN ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.IsCalcAsShown() );
+ else if ( aString.EqualsAscii( SC_UNO_IGNORECASE ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.IsIgnoreCase() );
+ else if ( aString.EqualsAscii( SC_UNO_ITERENABLED ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.IsIter() );
+ else if ( aString.EqualsAscii( SC_UNO_LOOKUPLABELS ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.IsLookUpColRowNames() );
+ else if ( aString.EqualsAscii( SC_UNO_MATCHWHOLE ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.IsMatchWholeCell() );
+ else if ( aString.EqualsAscii( SC_UNO_SPELLONLINE ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.IsAutoSpell() );
+ else if ( aString.EqualsAscii( SC_UNO_DEFTABSTOP ) ) aRet <<= (sal_Int16)( rOpt.GetTabDistance() );
+ else if ( aString.EqualsAscii( SC_UNO_ITERCOUNT ) ) aRet <<= (sal_Int32)( rOpt.GetIterCount() );
+ else if ( aString.EqualsAscii( SC_UNO_STANDARDDEC ) ) aRet <<= (sal_Int16)( rOpt.GetStdPrecision() );
+ else if ( aString.EqualsAscii( SC_UNO_ITEREPSILON ) ) aRet <<= (double)( rOpt.GetIterEps() );
+ else if ( aString.EqualsAscii( SC_UNO_NULLDATE ) )
+ {
+ USHORT nD, nM, nY;
+ rOpt.GetDate( nD, nM, nY );
+ util::Date aDate( nD, nM, nY );
+ aRet <<= aDate;
+ }
+ else if ( aString.EqualsAscii( SC_UNONAME_CLOCAL ) )
+ {
+ lang::Locale aLocale;
+ ScUnoConversion::FillLocale( aLocale, pDocShell->GetDocument()->GetLanguage() );
+ aRet <<= aLocale;
+ }
+ else if ( aString.EqualsAscii( SC_UNO_NAMEDRANGES ) )
+ {
+ uno::Reference<sheet::XNamedRanges> xRanges = new ScNamedRangesObj( pDocShell );
+ aRet <<= xRanges;
+ }
+ else if ( aString.EqualsAscii( SC_UNO_DATABASERNG ) )
+ {
+ uno::Reference<sheet::XDatabaseRanges> xRanges = new ScDatabaseRangesObj( pDocShell );
+ aRet <<= xRanges;
+ }
+ else if ( aString.EqualsAscii( SC_UNO_COLLABELRNG ) )
+ {
+ uno::Reference<sheet::XLabelRanges> xRanges = new ScLabelRangesObj( pDocShell, TRUE );
+ aRet <<= xRanges;
+ }
+ else if ( aString.EqualsAscii( SC_UNO_ROWLABELRNG ) )
+ {
+ uno::Reference<sheet::XLabelRanges> xRanges = new ScLabelRangesObj( pDocShell, FALSE );
+ aRet <<= xRanges;
+ }
+ else if ( aString.EqualsAscii( SC_UNO_AREALINKS ) )
+ {
+ uno::Reference<sheet::XAreaLinks> xLinks = new ScAreaLinksObj( pDocShell );
+ aRet <<= xLinks;
+ }
+ else if ( aString.EqualsAscii( SC_UNO_DDELINKS ) )
+ {
+ uno::Reference<container::XNameAccess> xLinks = new ScDDELinksObj( pDocShell );
+ aRet <<= xLinks;
+ }
+ else if ( aString.EqualsAscii( SC_UNO_SHEETLINKS ) )
+ {
+ uno::Reference<container::XNameAccess> xLinks = new ScSheetLinksObj( pDocShell );
+ aRet <<= xLinks;
+ }
+ }
+
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScModelObj )
+
+// XMultiServiceFactory
+
+uno::Reference<uno::XInterface> SAL_CALL ScModelObj::createInstance(
+ const rtl::OUString& aServiceSpecifier )
+ throw(uno::Exception, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<uno::XInterface> xRet;
+ String aNameStr = aServiceSpecifier;
+ USHORT nType = ScServiceProvider::GetProviderType(aNameStr);
+ if ( nType != SC_SERVICE_INVALID )
+ {
+ xRet = ScServiceProvider::MakeInstance( nType, pDocShell );
+ }
+ else
+ {
+ // alles was ich nicht kenn, werf ich der SvxFmMSFactory an den Hals,
+ // da wird dann 'ne Exception geworfen, wenn's nicht passt...
+
+ xRet = SvxFmMSFactory::createInstance(aServiceSpecifier);
+ }
+ return xRet;
+}
+
+uno::Reference<uno::XInterface> SAL_CALL ScModelObj::createInstanceWithArguments(
+ const rtl::OUString& ServiceSpecifier,
+ const uno::Sequence<uno::Any>& Arguments )
+ throw(uno::Exception, uno::RuntimeException)
+{
+ //! unterscheiden zwischen eigenen Services und denen vom Drawing-Layer?
+
+ ScUnoGuard aGuard;
+ uno::Reference<uno::XInterface> xInt = createInstance(ServiceSpecifier);
+ //die Any-Sequence dient zur Initialisierung von Objekten, die auf
+ //Parameter zwingend angewiesen sind - bis jetzt haben wir das nicht
+ return xInt;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScModelObj::getAvailableServiceNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ //! warum sind die Parameter bei concatServiceNames nicht const ???
+ //! return concatServiceNames( ScServiceProvider::GetAllServiceNames(),
+ //! SvxFmMSFactory::getAvailableServiceNames() );
+
+ uno::Sequence<rtl::OUString> aMyServices = ScServiceProvider::GetAllServiceNames();
+ uno::Sequence<rtl::OUString> aDrawServices = SvxFmMSFactory::getAvailableServiceNames();
+
+ return concatServiceNames( aMyServices, aDrawServices );
+}
+
+// XServiceInfo
+
+rtl::OUString SAL_CALL ScModelObj::getImplementationName() throw(uno::RuntimeException)
+{
+ return rtl::OUString::createFromAscii( "ScModelObj" );
+}
+
+sal_Bool SAL_CALL ScModelObj::supportsService( const rtl::OUString& rServiceName )
+ throw(uno::RuntimeException)
+{
+ String aServiceStr = rServiceName;
+ return aServiceStr.EqualsAscii( SCMODELOBJ_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCDOCSETTINGS_SERVICE );
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScModelObj::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ uno::Sequence<rtl::OUString> aRet(2);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCMODELOBJ_SERVICE );
+ pArray[1] = rtl::OUString::createFromAscii( SCDOCSETTINGS_SERVICE );
+ return aRet;
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScModelObj::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+
+ // aggregated number formats supplier has XUnoTunnel, too
+ // interface from aggregated object must be obtained via queryAggregation
+
+ if ( xNumberAgg.is() )
+ {
+ const uno::Type& rTunnelType = ::getCppuType((uno::Reference<lang::XUnoTunnel>*) 0);
+ uno::Any aNumTunnel = xNumberAgg->queryAggregation(rTunnelType);
+ if(aNumTunnel.getValueType() == rTunnelType)
+ {
+ uno::Reference<lang::XUnoTunnel> xTunnelAgg =
+ *(uno::Reference<lang::XUnoTunnel>*)aNumTunnel.getValue();
+ return xTunnelAgg->getSomething( rId );
+ }
+ }
+
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScModelObj::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScModelObj* ScModelObj::getImplementation( const uno::Reference<uno::XInterface> xObj )
+{
+ ScModelObj* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScModelObj*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+ScDrawPagesObj::ScDrawPagesObj(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScDrawPagesObj::~ScDrawPagesObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScDrawPagesObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+SvxFmDrawPage* ScDrawPagesObj::GetObjectByIndex_Impl(INT32 nIndex) const
+{
+ if (pDocShell)
+ {
+ ScDrawLayer* pDrawLayer = pDocShell->MakeDrawLayer();
+ DBG_ASSERT(pDrawLayer,"kann Draw-Layer nicht anlegen");
+ if ( pDrawLayer && nIndex >= 0 && nIndex < pDocShell->GetDocument()->GetTableCount() )
+ {
+ SdrPage* pPage = pDrawLayer->GetPage(nIndex);
+ DBG_ASSERT(pPage,"Draw-Page nicht gefunden");
+ if (pPage)
+ {
+ return new SvxFmDrawPage( pPage );
+ }
+ }
+ }
+ return NULL;
+}
+
+// XDrawPages
+
+uno::Reference<drawing::XDrawPage> SAL_CALL ScDrawPagesObj::insertNewByIndex( sal_Int32 nPos )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<drawing::XDrawPage> xRet;
+ if (pDocShell)
+ {
+ String aNewName;
+ pDocShell->GetDocument()->CreateValidTabName(aNewName);
+ ScDocFunc aFunc(*pDocShell);
+ if ( aFunc.InsertTable( nPos, aNewName, TRUE, TRUE ) )
+ xRet = GetObjectByIndex_Impl( nPos );
+ }
+ return xRet;
+}
+
+void SAL_CALL ScDrawPagesObj::remove( const uno::Reference<drawing::XDrawPage>& xPage )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SvxDrawPage* pImp = SvxDrawPage::getImplementation( xPage );
+ if ( pDocShell && pImp )
+ {
+ SdrPage* pPage = pImp->GetSdrPage();
+ if (pPage)
+ {
+ USHORT nPageNum = pPage->GetPageNum();
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.DeleteTable( nPageNum, TRUE, TRUE );
+ }
+ }
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScDrawPagesObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return pDocShell->GetDocument()->GetTableCount();
+ return 0;
+}
+
+uno::Any SAL_CALL ScDrawPagesObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<drawing::XDrawPage> xPage = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xPage.is())
+ aAny <<= xPage;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScDrawPagesObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<drawing::XDrawPage>*)0);
+}
+
+sal_Bool SAL_CALL ScDrawPagesObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+//------------------------------------------------------------------------
+
+ScTableSheetsObj::ScTableSheetsObj(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScTableSheetsObj::~ScTableSheetsObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScTableSheetsObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XSpreadsheets
+
+ScTableSheetObj* ScTableSheetsObj::GetObjectByIndex_Impl(USHORT nIndex) const
+{
+ if ( pDocShell && nIndex < pDocShell->GetDocument()->GetTableCount() )
+ return new ScTableSheetObj( pDocShell, nIndex );
+
+ return NULL;
+}
+
+ScTableSheetObj* ScTableSheetsObj::GetObjectByName_Impl(const rtl::OUString& aName) const
+{
+ if (pDocShell)
+ {
+ USHORT nIndex;
+ String aString = aName;
+ if ( pDocShell->GetDocument()->GetTable( aString, nIndex ) )
+ return new ScTableSheetObj( pDocShell, nIndex );
+ }
+ return NULL;
+}
+
+void SAL_CALL ScTableSheetsObj::insertNewByName( const rtl::OUString& aName, sal_Int16 nPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ if (pDocShell)
+ {
+ String aNamStr = aName;
+ ScDocFunc aFunc(*pDocShell);
+ bDone = aFunc.InsertTable( nPosition, aNamStr, TRUE, TRUE );
+ }
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+void SAL_CALL ScTableSheetsObj::moveByName( const rtl::OUString& aName, sal_Int16 nDestination )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ if (pDocShell)
+ {
+ String aNamStr = aName;
+ USHORT nSource;
+ if ( pDocShell->GetDocument()->GetTable( aNamStr, nSource ) )
+ bDone = pDocShell->MoveTable( nSource, nDestination, FALSE, TRUE );
+ }
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+void SAL_CALL ScTableSheetsObj::copyByName( const rtl::OUString& aName,
+ const rtl::OUString& aCopy, sal_Int16 nDestination )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ if (pDocShell)
+ {
+ String aNamStr = aName;
+ String aNewStr = aCopy;
+ USHORT nSource;
+ if ( pDocShell->GetDocument()->GetTable( aNamStr, nSource ) )
+ {
+ bDone = pDocShell->MoveTable( nSource, nDestination, TRUE, TRUE );
+ if (bDone)
+ {
+ ScDocFunc aFunc(*pDocShell);
+ bDone = aFunc.RenameTable( nDestination, aNewStr, TRUE, TRUE );
+ }
+ }
+ }
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+void SAL_CALL ScTableSheetsObj::insertByName( const rtl::OUString& aName, const uno::Any& aElement )
+ throw(lang::IllegalArgumentException, container::ElementExistException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ BOOL bIllArg = FALSE;
+
+ //! Type of aElement can be some specific interface instead of XInterface
+
+ uno::Reference<uno::XInterface> xInterface;
+ if ( pDocShell )
+ {
+ if ( aElement >>= xInterface )
+ {
+ ScTableSheetObj* pSheetObj = ScTableSheetObj::getImplementation( xInterface );
+ if ( pSheetObj && !pSheetObj->GetDocShell() ) // noch nicht eingefuegt?
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ String aNamStr = aName;
+ USHORT nDummy;
+ if ( pDoc->GetTable( aNamStr, nDummy ) )
+ {
+ // name already exists
+ throw container::ElementExistException();
+ }
+ else
+ {
+ USHORT nPosition = pDoc->GetTableCount();
+ ScDocFunc aFunc(*pDocShell);
+ bDone = aFunc.InsertTable( nPosition, aNamStr, TRUE, TRUE );
+ if (bDone)
+ pSheetObj->InitInsertSheet( pDocShell, nPosition );
+ // Dokument und neuen Range am Objekt setzen
+ }
+ }
+ else
+ bIllArg = TRUE;
+ }
+ else
+ bIllArg = TRUE;
+ }
+
+ if (!bDone)
+ {
+ if (bIllArg)
+ throw lang::IllegalArgumentException();
+ else
+ throw uno::RuntimeException(); // ElementExistException is handled above
+ }
+}
+
+void SAL_CALL ScTableSheetsObj::replaceByName( const rtl::OUString& aName, const uno::Any& aElement )
+ throw(lang::IllegalArgumentException, container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ BOOL bIllArg = FALSE;
+
+ //! Type of aElement can be some specific interface instead of XInterface
+
+ uno::Reference<uno::XInterface> xInterface;
+ if ( pDocShell )
+ {
+ if ( aElement >>= xInterface )
+ {
+ ScTableSheetObj* pSheetObj = ScTableSheetObj::getImplementation( xInterface );
+ if ( pSheetObj && !pSheetObj->GetDocShell() ) // noch nicht eingefuegt?
+ {
+ String aNamStr = aName;
+ USHORT nPosition;
+ if ( pDocShell->GetDocument()->GetTable( aNamStr, nPosition ) )
+ {
+ ScDocFunc aFunc(*pDocShell);
+ if ( aFunc.DeleteTable( nPosition, TRUE, TRUE ) )
+ {
+ // InsertTable kann jetzt eigentlich nicht schiefgehen...
+ bDone = aFunc.InsertTable( nPosition, aNamStr, TRUE, TRUE );
+ if (bDone)
+ pSheetObj->InitInsertSheet( pDocShell, nPosition );
+ }
+ }
+ else
+ {
+ // not found
+ throw container::NoSuchElementException();
+ }
+ }
+ else
+ bIllArg = TRUE;
+ }
+ else
+ bIllArg = TRUE;
+ }
+
+ if (!bDone)
+ {
+ if (bIllArg)
+ throw lang::IllegalArgumentException();
+ else
+ throw uno::RuntimeException(); // NoSuchElementException is handled above
+ }
+}
+
+void SAL_CALL ScTableSheetsObj::removeByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ if (pDocShell)
+ {
+ USHORT nIndex;
+ String aString = aName;
+ if ( pDocShell->GetDocument()->GetTable( aString, nIndex ) )
+ {
+ ScDocFunc aFunc(*pDocShell);
+ bDone = aFunc.DeleteTable( nIndex, TRUE, TRUE );
+ }
+ else
+ {
+ // not found
+ throw container::NoSuchElementException();
+ }
+ }
+
+ if (!bDone)
+ throw uno::RuntimeException(); // NoSuchElementException is handled above
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScTableSheetsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScTableSheetsObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ return pDocShell->GetDocument()->GetTableCount();
+ return 0;
+}
+
+uno::Any SAL_CALL ScTableSheetsObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XSpreadsheet> xSheet = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xSheet.is())
+ aAny <<= xSheet;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScTableSheetsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<sheet::XSpreadsheet>*)0);
+}
+
+sal_Bool SAL_CALL ScTableSheetsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+// XNameAccess
+
+uno::Any SAL_CALL ScTableSheetsObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XSpreadsheet> xSheet = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ if (xSheet.is())
+ aAny <<= xSheet;
+ else
+ throw container::NoSuchElementException();
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScTableSheetsObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nCount = pDoc->GetTableCount();
+ String aName;
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ pDoc->GetName( i, aName );
+ pAry[i] = aName;
+ }
+ return aSeq;
+ }
+ return uno::Sequence<rtl::OUString>();
+}
+
+sal_Bool SAL_CALL ScTableSheetsObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ USHORT nIndex;
+ String aString = aName;
+ if ( pDocShell->GetDocument()->GetTable( aString, nIndex ) )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+
+ScTableColumnsObj::ScTableColumnsObj(ScDocShell* pDocSh, USHORT nT, USHORT nSC, USHORT nEC) :
+ pDocShell( pDocSh ),
+ nTab ( nT ),
+ nStartCol( nSC ),
+ nEndCol ( nEC )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScTableColumnsObj::~ScTableColumnsObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScTableColumnsObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+
+ //! Referenz-Update fuer Tab und Start/Ende
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XTableColumns
+
+ScTableColumnObj* ScTableColumnsObj::GetObjectByIndex_Impl(USHORT nIndex) const
+{
+ USHORT nCol = nIndex + nStartCol;
+ if ( pDocShell && nCol <= nEndCol )
+ return new ScTableColumnObj( pDocShell, nCol, nTab );
+
+ return NULL; // falscher Index
+}
+
+ScTableColumnObj* ScTableColumnsObj::GetObjectByName_Impl(const rtl::OUString& aName) const
+{
+ USHORT nCol = 0;
+ String aString = aName;
+ if ( lcl_StringToColumn( aString, nCol ) )
+ if ( pDocShell && nCol >= nStartCol && nCol <= nEndCol )
+ return new ScTableColumnObj( pDocShell, nCol, nTab );
+
+ return NULL;
+}
+
+void SAL_CALL ScTableColumnsObj::insertByIndex( sal_Int32 nPosition, sal_Int32 nCount )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ if ( pDocShell && nCount > 0 && nPosition >= 0 && nStartCol+nPosition <= nEndCol &&
+ nStartCol+nPosition+nCount-1 <= MAXCOL )
+ {
+ ScDocFunc aFunc(*pDocShell);
+ ScRange aRange( nStartCol+nPosition, 0, nTab, nStartCol+nPosition+nCount-1, MAXROW, nTab );
+ bDone = aFunc.InsertCells( aRange, INS_INSCOLS, TRUE, TRUE );
+ }
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+void SAL_CALL ScTableColumnsObj::removeByIndex( sal_Int32 nIndex, sal_Int32 nCount )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ // Der zu loeschende Bereich muss innerhalb des Objekts liegen
+ if ( pDocShell && nCount > 0 && nIndex >= 0 && nStartCol+nIndex+nCount-1 <= nEndCol )
+ {
+ ScDocFunc aFunc(*pDocShell);
+ ScRange aRange( nStartCol+nIndex, 0, nTab, nStartCol+nIndex+nCount-1, MAXROW, nTab );
+ bDone = aFunc.DeleteCells( aRange, DEL_DELCOLS, TRUE, TRUE );
+ }
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScTableColumnsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScTableColumnsObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return nEndCol - nStartCol + 1;
+}
+
+uno::Any SAL_CALL ScTableColumnsObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<table::XCellRange> xColumn = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xColumn.is())
+ aAny <<= xColumn;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScTableColumnsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<table::XCellRange>*)0);
+}
+
+sal_Bool SAL_CALL ScTableColumnsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+uno::Any SAL_CALL ScTableColumnsObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<table::XCellRange> xColumn = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ if (xColumn.is())
+ aAny <<= xColumn;
+ else
+ throw container::NoSuchElementException();
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScTableColumnsObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = nEndCol - nStartCol + 1;
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ pAry[i] = lcl_ColumnToString( nStartCol + i );
+
+ return aSeq;
+}
+
+sal_Bool SAL_CALL ScTableColumnsObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCol = 0;
+ String aString = aName;
+ if ( lcl_StringToColumn( aString, nCol ) )
+ if ( pDocShell && nCol >= nStartCol && nCol <= nEndCol )
+ return TRUE;
+
+ return FALSE; // nicht gefunden
+}
+
+
+//------------------------------------------------------------------------
+
+ScTableRowsObj::ScTableRowsObj(ScDocShell* pDocSh, USHORT nT, USHORT nSR, USHORT nER) :
+ pDocShell( pDocSh ),
+ nTab ( nT ),
+ nStartRow( nSR ),
+ nEndRow ( nER )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScTableRowsObj::~ScTableRowsObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScTableRowsObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+
+ //! Referenz-Update fuer Tab und Start/Ende
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XTableRows
+
+ScTableRowObj* ScTableRowsObj::GetObjectByIndex_Impl(USHORT nIndex) const
+{
+ USHORT nRow = nIndex + nStartRow;
+ if ( pDocShell && nRow <= nEndRow )
+ return new ScTableRowObj( pDocShell, nRow, nTab );
+
+ return NULL; // falscher Index
+}
+
+void SAL_CALL ScTableRowsObj::insertByIndex( sal_Int32 nPosition, sal_Int32 nCount )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ if ( pDocShell && nCount > 0 && nPosition >= 0 && nStartRow+nPosition <= nEndRow &&
+ nStartRow+nPosition+nCount-1 <= MAXROW )
+ {
+ ScDocFunc aFunc(*pDocShell);
+ ScRange aRange( 0, nStartRow+nPosition, nTab, MAXCOL, nStartRow+nPosition+nCount-1, nTab );
+ bDone = aFunc.InsertCells( aRange, INS_INSROWS, TRUE, TRUE );
+ }
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+void SAL_CALL ScTableRowsObj::removeByIndex( sal_Int32 nIndex, sal_Int32 nCount )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ // Der zu loeschende Bereich muss innerhalb des Objekts liegen
+ if ( pDocShell && nCount > 0 && nIndex >= 0 && nStartRow+nIndex+nCount-1 <= nEndRow )
+ {
+ ScDocFunc aFunc(*pDocShell);
+ ScRange aRange( 0, nStartRow+nIndex, nTab, MAXCOL, nStartRow+nIndex+nCount-1, nTab );
+ bDone = aFunc.DeleteCells( aRange, DEL_DELROWS, TRUE, TRUE );
+ }
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScTableRowsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScTableRowsObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return nEndRow - nStartRow + 1;
+}
+
+uno::Any SAL_CALL ScTableRowsObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<table::XCellRange> xRow = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xRow.is())
+ aAny <<= xRow;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScTableRowsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<table::XCellRange>*)0);
+}
+
+sal_Bool SAL_CALL ScTableRowsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+//------------------------------------------------------------------------
+
+ScSpreadsheetSettingsObj::ScSpreadsheetSettingsObj(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScSpreadsheetSettingsObj::~ScSpreadsheetSettingsObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScSpreadsheetSettingsObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScSpreadsheetSettingsObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ //! muss noch
+ return NULL;
+}
+
+void SAL_CALL ScSpreadsheetSettingsObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ //! muss noch
+}
+
+uno::Any SAL_CALL ScSpreadsheetSettingsObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ //! muss noch
+ return uno::Any();
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScSpreadsheetSettingsObj )
+
+//------------------------------------------------------------------------
+
+ScAnnotationsObj::ScAnnotationsObj(ScDocShell* pDocSh, USHORT nT) :
+ pDocShell( pDocSh ),
+ nTab( nT )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScAnnotationsObj::~ScAnnotationsObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScAnnotationsObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ //! nTab bei Referenz-Update anpassen!!!
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+BOOL ScAnnotationsObj::GetAddressByIndex_Impl( ULONG nIndex, ScAddress& rPos ) const
+{
+ if (pDocShell)
+ {
+ ULONG nFound = 0;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScCellIterator aCellIter( pDoc, 0,0, nTab, MAXCOL,MAXROW, nTab );
+ ScBaseCell* pCell = aCellIter.GetFirst();
+ while (pCell)
+ {
+ if (pCell->GetNotePtr())
+ {
+ if (nFound == nIndex)
+ {
+ rPos = ScAddress( aCellIter.GetCol(), aCellIter.GetRow(), aCellIter.GetTab() );
+ return TRUE;
+ }
+ ++nFound;
+ }
+ pCell = aCellIter.GetNext();
+ }
+ }
+ return FALSE; // nicht gefunden
+}
+
+// XSheetAnnotations
+
+ScAnnotationObj* ScAnnotationsObj::GetObjectByIndex_Impl(USHORT nIndex) const
+{
+ if (pDocShell)
+ {
+ ScAddress aPos;
+ if ( GetAddressByIndex_Impl( nIndex, aPos ) )
+ return new ScAnnotationObj( pDocShell, aPos );
+ }
+ return NULL;
+}
+
+void SAL_CALL ScAnnotationsObj::insertNew( const table::CellAddress& aPosition,
+ const ::rtl::OUString& aText )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ DBG_ASSERT( aPosition.Sheet == nTab, "addAnnotation mit falschem Sheet" );
+ ScAddress aPos( aPosition.Column, aPosition.Row, nTab );
+
+ String aString = aText;
+
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.SetNoteText( aPos, aString, TRUE );
+ }
+}
+
+void SAL_CALL ScAnnotationsObj::removeByIndex( sal_Int32 nIndex ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScAddress aPos;
+ if ( GetAddressByIndex_Impl( nIndex, aPos ) )
+ {
+ ScMarkData aMarkData;
+ aMarkData.SelectTable( aPos.Tab(), TRUE );
+ aMarkData.SetMultiMarkArea( ScRange(aPos) );
+
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.DeleteContents( aMarkData, IDF_NOTE, TRUE, TRUE );
+ }
+ }
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScAnnotationsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ //! iterate directly (more efficiently)?
+
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScAnnotationsObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ULONG nCount = 0;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScCellIterator aCellIter( pDoc, 0,0, nTab, MAXCOL,MAXROW, nTab );
+ ScBaseCell* pCell = aCellIter.GetFirst();
+ while (pCell)
+ {
+ if (pCell->GetNotePtr())
+ ++nCount;
+ pCell = aCellIter.GetNext();
+ }
+ }
+ return nCount;
+}
+
+uno::Any SAL_CALL ScAnnotationsObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XSheetAnnotation> xAnnotation = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xAnnotation.is())
+ aAny <<= xAnnotation;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScAnnotationsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<sheet::XSheetAnnotation>*)0);
+}
+
+sal_Bool SAL_CALL ScAnnotationsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+//------------------------------------------------------------------------
+
+ScScenariosObj::ScScenariosObj(ScDocShell* pDocSh, USHORT nT) :
+ pDocShell( pDocSh ),
+ nTab ( nT )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScScenariosObj::~ScScenariosObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScScenariosObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+
+ //! Referenz-Update fuer Tab und Start/Ende
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XScenarios
+
+BOOL ScScenariosObj::GetScenarioIndex_Impl( const rtl::OUString& rName, USHORT& rIndex )
+{
+ //! Case-insensitiv ????
+
+ if ( pDocShell )
+ {
+ String aString = rName;
+
+ String aTabName;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nCount = (USHORT)getCount();
+ for (USHORT i=0; i<nCount; i++)
+ if (pDoc->GetName( nTab+i+1, aTabName ))
+ if ( aTabName == aString )
+ {
+ rIndex = i;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+ScTableSheetObj* ScScenariosObj::GetObjectByIndex_Impl(USHORT nIndex)
+{
+ USHORT nCount = (USHORT)getCount();
+ if ( pDocShell && nIndex < nCount )
+ return new ScTableSheetObj( pDocShell, nTab+nIndex+1 );
+
+ return NULL; // kein Dokument oder falscher Index
+}
+
+ScTableSheetObj* ScScenariosObj::GetObjectByName_Impl(const rtl::OUString& aName)
+{
+ USHORT nIndex;
+ if ( pDocShell && GetScenarioIndex_Impl( aName, nIndex ) )
+ return new ScTableSheetObj( pDocShell, nTab+nIndex+1 );
+
+ return NULL; // nicht gefunden
+}
+
+void SAL_CALL ScScenariosObj::addNewByName( const rtl::OUString& aName,
+ const uno::Sequence<table::CellRangeAddress>& aRanges,
+ const rtl::OUString& aComment )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ ScMarkData aMarkData;
+ aMarkData.SelectTable( nTab, TRUE );
+
+ USHORT nRangeCount = (USHORT)aRanges.getLength();
+ if (nRangeCount)
+ {
+ const table::CellRangeAddress* pAry = aRanges.getConstArray();
+ for (USHORT i=0; i<nRangeCount; i++)
+ {
+ DBG_ASSERT( pAry[i].Sheet == nTab, "addScenario mit falscher Tab" );
+ ScRange aRange( pAry[i].StartColumn, pAry[i].StartRow, nTab,
+ pAry[i].EndColumn, pAry[i].EndRow, nTab );
+
+ aMarkData.SetMultiMarkArea( aRange );
+ }
+ }
+
+ String aNameStr = aName;
+ String aCommStr = aComment;
+
+ Color aColor( COL_LIGHTGRAY ); // Default
+ USHORT nFlags = SC_SCENARIO_SHOWFRAME | SC_SCENARIO_PRINTFRAME | SC_SCENARIO_TWOWAY;
+
+ pDocShell->MakeScenario( nTab, aNameStr, aCommStr, aColor, nFlags, aMarkData );
+ }
+}
+
+void SAL_CALL ScScenariosObj::removeByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nIndex;
+ if ( pDocShell && GetScenarioIndex_Impl( aName, nIndex ) )
+ {
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.DeleteTable( nTab+nIndex+1, TRUE, TRUE );
+ }
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScScenariosObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScScenariosObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = 0;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ if (!pDoc->IsScenario(nTab))
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nNext = nTab + 1;
+ while (nNext < nTabCount && pDoc->IsScenario(nNext))
+ {
+ ++nCount;
+ ++nNext;
+ }
+ }
+ }
+ return nCount;
+}
+
+uno::Any SAL_CALL ScScenariosObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XScenario> xScen = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xScen.is())
+ aAny <<= xScen;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScScenariosObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<sheet::XScenario>*)0);
+}
+
+sal_Bool SAL_CALL ScScenariosObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+uno::Any SAL_CALL ScScenariosObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XScenario> xScen = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ if (xScen.is())
+ aAny <<= xScen;
+ else
+ throw container::NoSuchElementException();
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScScenariosObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = (USHORT)getCount();
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+
+ if ( pDocShell ) // sonst ist auch Count = 0
+ {
+ String aTabName;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ rtl::OUString* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nCount; i++)
+ if (pDoc->GetName( nTab+i+1, aTabName ))
+ pAry[i] = aTabName;
+ }
+
+ return aSeq;
+}
+
+sal_Bool SAL_CALL ScScenariosObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nIndex;
+ return GetScenarioIndex_Impl( aName, nIndex );
+}
+
+
+
+
+
diff --git a/sc/source/ui/unoobj/editsrc.cxx b/sc/source/ui/unoobj/editsrc.cxx
new file mode 100644
index 000000000000..bc92e9de7aef
--- /dev/null
+++ b/sc/source/ui/unoobj/editsrc.cxx
@@ -0,0 +1,400 @@
+/*************************************************************************
+ *
+ * $RCSfile: editsrc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _SFXSMPLHINT_HXX //autogen
+#include <svtools/smplhint.hxx>
+#endif
+
+#include "scitems.hxx"
+#include <tools/debug.hxx>
+#include <svx/editeng.hxx>
+#include <svx/unofored.hxx>
+
+#include "textuno.hxx"
+#include "editsrc.hxx"
+#include "editutil.hxx"
+#include "docsh.hxx"
+#include "docfunc.hxx"
+#include "cell.hxx"
+#include "hints.hxx"
+#include "patattr.hxx"
+#include "scmod.hxx"
+#include "unoguard.hxx"
+
+//------------------------------------------------------------------------
+
+ScHeaderFooterEditSource::ScHeaderFooterEditSource( ScHeaderFooterContentObj* pContent,
+ USHORT nP ) :
+ pContentObj( pContent ),
+ nPart( nP ),
+ pEditEngine( NULL ),
+ pForwarder( NULL )
+
+{
+ if (pContentObj) // pContentObj kann 0 sein bei getReflection-Krempel
+ pContentObj->acquire(); // darf nicht wegkommen
+
+ //! bDataValid oder so...
+}
+
+ScHeaderFooterEditSource::~ScHeaderFooterEditSource()
+{
+ ScUnoGuard aGuard; // needed for EditEngine dtor
+
+ delete pForwarder;
+ delete pEditEngine;
+
+ if (pContentObj)
+ pContentObj->release();
+}
+
+SvxEditSource* ScHeaderFooterEditSource::Clone() const
+{
+ return new ScHeaderFooterEditSource( pContentObj, nPart );
+}
+
+SvxTextForwarder* ScHeaderFooterEditSource::GetTextForwarder()
+{
+ if (!pEditEngine)
+ {
+ ScHeaderEditEngine* pHdrEngine = new ScHeaderEditEngine( EditEngine::CreatePool(), TRUE );
+
+ pHdrEngine->EnableUndo( FALSE );
+ pHdrEngine->SetRefMapMode( MAP_TWIP );
+
+ // default font must be set, independently of document
+ // -> use global pool from module
+
+ Font aDefFont;
+ ((const ScPatternAttr&)SC_MOD()->GetPool().GetDefaultItem(ATTR_PATTERN)).GetFont(aDefFont);
+ SfxItemSet aDefaults( pHdrEngine->GetEmptyItemSet() );
+ EditEngine::SetFontInfoInItemSet( aDefaults, aDefFont );
+ pHdrEngine->SetDefaults( aDefaults );
+
+ ScHeaderFieldData aData;
+ ScHeaderFooterTextObj::FillDummyFieldData( aData );
+ pHdrEngine->SetData( aData );
+
+ pEditEngine = pHdrEngine;
+ pForwarder = new SvxEditEngineForwarder(*pEditEngine);
+ }
+
+ if (pContentObj)
+ {
+ const EditTextObject* pData;
+ if (nPart == SC_HDFT_LEFT)
+ pData = pContentObj->GetLeftEditObject();
+ else if (nPart == SC_HDFT_CENTER)
+ pData = pContentObj->GetCenterEditObject();
+ else
+ pData = pContentObj->GetRightEditObject();
+
+ if (pData)
+ pEditEngine->SetText(*pData);
+ }
+
+ return pForwarder;
+}
+
+void ScHeaderFooterEditSource::UpdateData()
+{
+ if ( pContentObj && pEditEngine )
+ pContentObj->UpdateText( nPart, *pEditEngine );
+}
+
+void ScHeaderFooterEditSource::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // spaeter...
+}
+
+//------------------------------------------------------------------------
+
+ScCellEditSource::ScCellEditSource(ScDocShell* pDocSh, const ScAddress& rP) :
+ pDocShell( pDocSh ),
+ aCellPos( rP ),
+ pEditEngine( NULL ),
+ pForwarder( NULL ),
+ bDataValid( FALSE ),
+ bInUpdate( FALSE )
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScCellEditSource::~ScCellEditSource()
+{
+ ScUnoGuard aGuard; // needed for EditEngine dtor
+
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+
+ delete pForwarder;
+ delete pEditEngine;
+}
+
+SvxEditSource* ScCellEditSource::Clone() const
+{
+ return new ScCellEditSource( pDocShell, aCellPos );
+}
+
+SvxTextForwarder* ScCellEditSource::GetTextForwarder()
+{
+ if (!pEditEngine)
+ {
+ if ( pDocShell )
+ {
+ const ScDocument* pDoc = pDocShell->GetDocument();
+ pEditEngine = new ScFieldEditEngine( pDoc->GetEnginePool(),
+ pDoc->GetEditPool(), FALSE );
+ }
+ else
+ pEditEngine = new ScFieldEditEngine( EditEngine::CreatePool(),
+ NULL, TRUE );
+#if SUPD > 600
+ // currently, GetPortions doesn't work if UpdateMode is FALSE,
+ // this will be fixed (in EditEngine) by src600
+ pEditEngine->SetUpdateMode( FALSE );
+#endif
+ pEditEngine->EnableUndo( FALSE );
+ pEditEngine->SetRefMapMode( MAP_100TH_MM );
+ pForwarder = new SvxEditEngineForwarder(*pEditEngine);
+ }
+
+ if (bDataValid)
+ return pForwarder;
+
+ BOOL bEditCell = FALSE;
+ String aText;
+
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ const ScBaseCell* pCell = pDoc->GetCell( aCellPos );
+ if ( pCell && pCell->GetCellType() == CELLTYPE_EDIT )
+ {
+ pEditEngine->SetText( *((const ScEditCell*)pCell)->GetData() );
+ bEditCell = TRUE;
+ }
+ else
+ pDoc->GetInputString( aCellPos.Col(), aCellPos.Row(), aCellPos.Tab(), aText );
+
+ SfxItemSet aDefaults( pEditEngine->GetEmptyItemSet() );
+ const ScPatternAttr* pPattern =
+ pDoc->GetPattern( aCellPos.Col(), aCellPos.Row(), aCellPos.Tab() );
+ pPattern->FillEditItemSet( &aDefaults );
+ pPattern->FillEditParaItems( &aDefaults ); // auch Ausrichtung etc. auslesbar
+ pEditEngine->SetDefaults( aDefaults );
+ }
+
+ if (!bEditCell)
+ pEditEngine->SetText( aText );
+
+ bDataValid = TRUE;
+ return pForwarder;
+}
+
+void ScCellEditSource::UpdateData()
+{
+ if ( pDocShell && pEditEngine )
+ {
+ // beim eigenen Update darf bDataValid nicht zurueckgesetzt werden,
+ // damit z.B. Attribute hinter dem Text nicht verloren gehen
+ // (werden in die Zelle nicht uebernommen)
+
+ bInUpdate = TRUE; // damit wird bDataValid nicht zurueckgesetzt
+
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.PutData( aCellPos, *pEditEngine, FALSE, TRUE ); // immer Text
+
+ bInUpdate = FALSE;
+ }
+}
+
+void ScCellEditSource::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+
+ //! Ref-Update
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) )
+ {
+ ULONG nId = ((const SfxSimpleHint&)rHint).GetId();
+ if ( nId == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+
+ DELETEZ( pForwarder );
+ DELETEZ( pEditEngine ); // EditEngine uses document's pool
+ }
+ else if ( nId == SFX_HINT_DATACHANGED )
+ {
+ if (!bInUpdate) // eigene Updates zaehlen nicht
+ bDataValid = FALSE; // Text muss neu geholt werden
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+ScAnnotationEditSource::ScAnnotationEditSource(ScDocShell* pDocSh, const ScAddress& rP) :
+ pDocShell( pDocSh ),
+ aCellPos( rP ),
+ pEditEngine( NULL ),
+ pForwarder( NULL ),
+ bDataValid( FALSE )
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScAnnotationEditSource::~ScAnnotationEditSource()
+{
+ ScUnoGuard aGuard; // needed for EditEngine dtor
+
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+
+ delete pForwarder;
+ delete pEditEngine;
+}
+
+SvxEditSource* ScAnnotationEditSource::Clone() const
+{
+ return new ScAnnotationEditSource( pDocShell, aCellPos );
+}
+
+SvxTextForwarder* ScAnnotationEditSource::GetTextForwarder()
+{
+ if (!pEditEngine)
+ {
+ // Notizen haben keine Felder
+ if ( pDocShell )
+ pEditEngine = new ScEditEngineDefaulter(
+ pDocShell->GetDocument()->GetEnginePool(), FALSE );
+ else
+ pEditEngine = new ScEditEngineDefaulter(
+ EditEngine::CreatePool(), TRUE );
+ pForwarder = new SvxEditEngineForwarder(*pEditEngine);
+ }
+
+ if (bDataValid)
+ return pForwarder;
+
+ if ( pDocShell )
+ {
+ ScPostIt aNote;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->GetNote( aCellPos.Col(), aCellPos.Row(), aCellPos.Tab(), aNote );
+
+ pEditEngine->SetText( aNote.GetText() ); // incl. Umbrueche
+ }
+
+ bDataValid = TRUE;
+ return pForwarder;
+}
+
+void ScAnnotationEditSource::UpdateData()
+{
+ if ( pDocShell && pEditEngine )
+ {
+ String aNewText = pEditEngine->GetText( LINEEND_LF ); // im SetNoteText passiert ConvertLineEnd
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.SetNoteText( aCellPos, aNewText, TRUE );
+
+ // bDataValid wird bei SetDocumentModified zurueckgesetzt
+ }
+}
+
+void ScAnnotationEditSource::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+
+ //! Ref-Update
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) )
+ {
+ ULONG nId = ((const SfxSimpleHint&)rHint).GetId();
+ if ( nId == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+
+ DELETEZ( pForwarder );
+ DELETEZ( pEditEngine ); // EditEngine uses document's pool
+ }
+ else if ( nId == SFX_HINT_DATACHANGED )
+ bDataValid = FALSE; // Text muss neu geholt werden
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/unoobj/fielduno.cxx b/sc/source/ui/unoobj/fielduno.cxx
new file mode 100644
index 000000000000..b1967aab56f4
--- /dev/null
+++ b/sc/source/ui/unoobj/fielduno.cxx
@@ -0,0 +1,1103 @@
+/*************************************************************************
+ *
+ * $RCSfile: fielduno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+#ifndef _SFXSMPLHINT_HXX //autogen
+#include <svtools/smplhint.hxx>
+#endif
+
+#pragma hdrstop
+
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <svx/editeng.hxx>
+#include <svx/editobj.hxx>
+#include <svx/flditem.hxx>
+#include <rtl/uuid.h>
+
+#include "fielduno.hxx"
+#include "textuno.hxx"
+#include "miscuno.hxx"
+#include "docsh.hxx"
+#include "hints.hxx"
+#include "editsrc.hxx"
+#include "cellsuno.hxx"
+#include "servuno.hxx" // fuer IDs
+#include "unoguard.hxx"
+#include "unonames.hxx"
+#include "editutil.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+// alles ohne Which-ID, Map nur fuer PropertySetInfo
+
+const SfxItemPropertyMap* lcl_GetURLPropertyMap()
+{
+ static SfxItemPropertyMap aURLPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_REPR), 0, &getCppuType((rtl::OUString*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_TARGET), 0, &getCppuType((rtl::OUString*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_URL), 0, &getCppuType((rtl::OUString*)0), 0},
+ {0,0,0,0}
+ };
+ return aURLPropertyMap_Impl;
+}
+
+const SfxItemPropertyMap* lcl_GetHeaderFieldPropertyMap()
+{
+ static SfxItemPropertyMap aHeaderFieldPropertyMap_Impl[] =
+ {
+ //! Format bei Dateinamen?
+ {0,0,0,0}
+ };
+ return aHeaderFieldPropertyMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+SC_SIMPLE_SERVICE_INFO( ScCellFieldObj, "ScCellFieldObj", "com.sun.star.text.TextField" )
+SC_SIMPLE_SERVICE_INFO( ScCellFieldsObj, "ScCellFieldsObj", "stardiv.unknown" )
+SC_SIMPLE_SERVICE_INFO( ScHeaderFieldObj, "ScHeaderFieldObj", "com.sun.star.text.TextField" )
+SC_SIMPLE_SERVICE_INFO( ScHeaderFieldsObj, "ScHeaderFieldsObj", "stardiv.unknown" )
+
+//------------------------------------------------------------------------
+
+// ScUnoEditEngine nur um aus einer EditEngine die Felder herauszubekommen...
+
+enum ScUnoCollectMode
+{
+ SC_UNO_COLLECT_NONE,
+ SC_UNO_COLLECT_COUNT,
+ SC_UNO_COLLECT_FINDINDEX,
+ SC_UNO_COLLECT_FINDPOS
+};
+
+class ScUnoEditEngine : public ScEditEngineDefaulter
+{
+ ScUnoCollectMode eMode;
+ USHORT nFieldCount;
+ TypeId aFieldType;
+ SvxFieldData* pFound; // lokale Kopie
+ USHORT nFieldPar;
+ xub_StrLen nFieldPos;
+ USHORT nFieldIndex;
+
+public:
+ ScUnoEditEngine(ScEditEngineDefaulter* pSource);
+ ~ScUnoEditEngine();
+
+ //! nPos should be xub_StrLen
+ virtual String CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos,
+ Color*& rTxtColor, Color*& rFldColor );
+
+ USHORT CountFields(TypeId aType);
+ SvxFieldData* FindByIndex(USHORT nIndex, TypeId aType);
+ SvxFieldData* FindByPos(USHORT nPar, xub_StrLen nPos, TypeId aType);
+
+ USHORT GetFieldPar() const { return nFieldPar; }
+ xub_StrLen GetFieldPos() const { return nFieldPos; }
+};
+
+ScUnoEditEngine::ScUnoEditEngine(ScEditEngineDefaulter* pSource) :
+ ScEditEngineDefaulter( *pSource ),
+ eMode( SC_UNO_COLLECT_NONE ),
+ nFieldCount( 0 ),
+ aFieldType( NULL ),
+ pFound( NULL )
+{
+ if (pSource)
+ {
+ EditTextObject* pData = pSource->CreateTextObject();
+ SetText( *pData );
+ delete pData;
+ }
+}
+
+ScUnoEditEngine::~ScUnoEditEngine()
+{
+ delete pFound;
+}
+
+String ScUnoEditEngine::CalcFieldValue( const SvxFieldItem& rField,
+ USHORT nPara, USHORT nPos, Color*& rTxtColor, Color*& rFldColor )
+{
+ String aRet = EditEngine::CalcFieldValue( rField, nPara, nPos, rTxtColor, rFldColor );
+ if (eMode != SC_UNO_COLLECT_NONE)
+ {
+ const SvxFieldData* pFieldData = rField.GetField();
+ if ( pFieldData )
+ {
+ if ( !aFieldType || pFieldData->Type() == aFieldType )
+ {
+ if ( eMode == SC_UNO_COLLECT_FINDINDEX && !pFound && nFieldCount == nFieldIndex )
+ {
+ pFound = pFieldData->Clone();
+ nFieldPar = nPara;
+ nFieldPos = nPos;
+ }
+ if ( eMode == SC_UNO_COLLECT_FINDPOS && !pFound &&
+ nPara == nFieldPar && nPos == nFieldPos )
+ {
+ pFound = pFieldData->Clone();
+ nFieldIndex = nFieldCount;
+ }
+ ++nFieldCount;
+ }
+ }
+ }
+ return aRet;
+}
+
+USHORT ScUnoEditEngine::CountFields(TypeId aType)
+{
+ eMode = SC_UNO_COLLECT_COUNT;
+ aFieldType = aType;
+ nFieldCount = 0;
+ UpdateFields();
+ aFieldType = NULL;
+ eMode = SC_UNO_COLLECT_NONE;
+
+ return nFieldCount;
+}
+
+SvxFieldData* ScUnoEditEngine::FindByIndex(USHORT nIndex, TypeId aType)
+{
+ eMode = SC_UNO_COLLECT_FINDINDEX;
+ nFieldIndex = nIndex;
+ aFieldType = aType;
+ nFieldCount = 0;
+ UpdateFields();
+ aFieldType = NULL;
+ eMode = SC_UNO_COLLECT_NONE;
+
+ return pFound;
+}
+
+SvxFieldData* ScUnoEditEngine::FindByPos(USHORT nPar, xub_StrLen nPos, TypeId aType)
+{
+ eMode = SC_UNO_COLLECT_FINDPOS;
+ nFieldPar = nPar;
+ nFieldPos = nPos;
+ aFieldType = aType;
+ nFieldCount = 0;
+ UpdateFields();
+ aFieldType = NULL;
+ eMode = SC_UNO_COLLECT_NONE;
+
+ return pFound;
+}
+
+//------------------------------------------------------------------------
+
+ScCellFieldsObj::ScCellFieldsObj(ScDocShell* pDocSh, const ScAddress& rPos) :
+ pDocShell( pDocSh ),
+ aCellPos( rPos )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+
+ pEditSource = new ScCellEditSource( pDocShell, aCellPos );
+}
+
+ScCellFieldsObj::~ScCellFieldsObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+
+ delete pEditSource;
+}
+
+void ScCellFieldsObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+
+ //! Ref-Update
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+
+ // EditSource hat sich selber als Listener angemeldet
+}
+
+// XIndexAccess (via XTextFields)
+
+ScCellFieldObj* ScCellFieldsObj::GetObjectByIndex_Impl(INT32 Index) const
+{
+ //! Feld-Funktionen muessen an den Forwarder !!!
+ ScEditEngineDefaulter* pEditEngine = ((ScCellEditSource*)pEditSource)->GetEditEngine();
+ ScUnoEditEngine aTempEngine(pEditEngine);
+
+ if ( aTempEngine.FindByIndex( (USHORT)Index, NULL ) ) // in der Zelle ist der Typ egal
+ {
+ USHORT nPar = aTempEngine.GetFieldPar();
+ xub_StrLen nPos = aTempEngine.GetFieldPos();
+ ESelection aSelection( nPar, nPos, nPar, nPos+1 ); // Feld ist 1 Zeichen
+ return new ScCellFieldObj( pDocShell, aCellPos, aSelection );
+ }
+ return NULL;
+}
+
+sal_Int32 SAL_CALL ScCellFieldsObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ //! Feld-Funktionen muessen an den Forwarder !!!
+ ScEditEngineDefaulter* pEditEngine = ((ScCellEditSource*)pEditSource)->GetEditEngine();
+ ScUnoEditEngine aTempEngine(pEditEngine);
+
+ return aTempEngine.CountFields(NULL); // Felder zaehlen, in Zelle ist der Typ egal
+}
+
+uno::Any SAL_CALL ScCellFieldsObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<text::XTextField> xField = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ aAny <<= xField;
+ return aAny;
+}
+
+uno::Type SAL_CALL ScCellFieldsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<text::XTextField>*)0);
+}
+
+sal_Bool SAL_CALL ScCellFieldsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+uno::Reference<container::XEnumeration> SAL_CALL ScCellFieldsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+void SAL_CALL ScCellFieldsObj::addContainerListener(
+ const uno::Reference<container::XContainerListener>& xListener )
+ throw(uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+void SAL_CALL ScCellFieldsObj::removeContainerListener(
+ const uno::Reference<container::XContainerListener>& xListener )
+ throw(uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+//------------------------------------------------------------------------
+
+// Default-ctor wird fuer SMART_REFLECTION_IMPLEMENTATION gebraucht
+
+ScCellFieldObj::ScCellFieldObj() :
+ aPropSet( lcl_GetURLPropertyMap() ),
+ pDocShell( NULL )
+{
+ pEditSource = NULL;
+}
+
+ScCellFieldObj::ScCellFieldObj(ScDocShell* pDocSh, const ScAddress& rPos,
+ const ESelection& rSel) :
+ aPropSet( lcl_GetURLPropertyMap() ),
+ pDocShell( pDocSh ),
+ aCellPos( rPos ),
+ aSelection( rSel )
+{
+ // pDocShell ist Null, wenn per ServiceProvider erzeugt
+
+ if (pDocShell)
+ {
+ pDocShell->GetDocument()->AddUnoObject(*this);
+ pEditSource = new ScCellEditSource( pDocShell, aCellPos );
+ }
+ else
+ pEditSource = NULL;
+}
+
+void ScCellFieldObj::InitDoc( ScDocShell* pDocSh, const ScAddress& rPos,
+ const ESelection& rSel )
+{
+ if ( pDocSh && !pEditSource )
+ {
+ aCellPos = rPos;
+ aSelection = rSel;
+ pDocShell = pDocSh;
+
+ pDocShell->GetDocument()->AddUnoObject(*this);
+ pEditSource = new ScCellEditSource( pDocShell, aCellPos );
+ }
+}
+
+ScCellFieldObj::~ScCellFieldObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+
+ delete pEditSource;
+}
+
+void ScCellFieldObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ //! Updates fuer aSelection (muessen erst noch erzeugt werden) !!!!!!
+
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+
+ //! Ref-Update
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+
+ // EditSource hat sich selber als Listener angemeldet
+}
+
+// per getImplementation gerufen:
+
+SvxFieldItem ScCellFieldObj::CreateFieldItem()
+{
+ DBG_ASSERT( !pEditSource, "CreateFieldItem mit eingefuegtem Feld" );
+
+ SvxURLField aField;
+ aField.SetFormat(SVXURLFORMAT_APPDEFAULT);
+ aField.SetURL( aUrl );
+ aField.SetRepresentation( aRepresentation );
+ aField.SetTargetFrame( aTarget );
+ return SvxFieldItem( aField );
+}
+
+void ScCellFieldObj::DeleteField()
+{
+ if (pEditSource)
+ {
+ SvxTextForwarder* pForwarder = pEditSource->GetTextForwarder();
+// pEditEngine->QuickDelete( aSelection );
+ pForwarder->QuickInsertText( String(), aSelection );
+ pEditSource->UpdateData();
+
+ aSelection.nEndPara = aSelection.nStartPara;
+ aSelection.nEndPos = aSelection.nStartPos;
+
+ //! Broadcast, um Selektion in anderen Objekten anzupassen
+ //! (auch bei anderen Aktionen)
+ }
+}
+
+// XTextField
+
+rtl::OUString SAL_CALL ScCellFieldObj::getPresentation( sal_Bool bShowCommand )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aRet;
+
+ if (pEditSource)
+ {
+ //! Feld-Funktionen muessen an den Forwarder !!!
+ ScEditEngineDefaulter* pEditEngine = ((ScCellEditSource*)pEditSource)->GetEditEngine();
+ ScUnoEditEngine aTempEngine(pEditEngine);
+
+ // Typ egal (in Zellen gibts nur URLs)
+ SvxFieldData* pField = aTempEngine.FindByPos( aSelection.nStartPara, aSelection.nStartPos, 0 );
+ DBG_ASSERT(pField,"getPresentation: Feld nicht gefunden");
+ if (pField)
+ {
+ SvxURLField* pURL = (SvxURLField*)pField;
+ if (bShowCommand)
+ aRet = pURL->GetURL();
+ else
+ aRet = pURL->GetRepresentation();
+ }
+ }
+
+ return aRet;
+}
+
+// XTextContent
+
+void SAL_CALL ScCellFieldObj::attach( const uno::Reference<text::XTextRange>& xTextRange )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (xTextRange.is())
+ {
+ uno::Reference<text::XText> xText = xTextRange->getText();
+ if (xText.is())
+ {
+ xText->insertTextContent( xTextRange, this, TRUE );
+ }
+ }
+}
+
+uno::Reference<text::XTextRange> SAL_CALL ScCellFieldObj::getAnchor() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pEditSource)
+ return (SvxUnoTextRangeBase*)new SvxUnoText(
+ pEditSource, ScCellObj::GetEditPropertyMap(), uno::Reference<text::XText>() );
+ return NULL;
+}
+
+// XComponent
+
+void SAL_CALL ScCellFieldObj::dispose() throw(uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+void SAL_CALL ScCellFieldObj::addEventListener(
+ const uno::Reference<lang::XEventListener>& xListener )
+ throw(uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+void SAL_CALL ScCellFieldObj::removeEventListener(
+ const uno::Reference<lang::XEventListener>& aListener )
+ throw(uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScCellFieldObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScCellFieldObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+ rtl::OUString aStrVal;
+ if (pEditSource)
+ {
+ //! Feld-Funktionen muessen an den Forwarder !!!
+ ScEditEngineDefaulter* pEditEngine = ((ScCellEditSource*)pEditSource)->GetEditEngine();
+ ScUnoEditEngine aTempEngine(pEditEngine);
+
+ // Typ egal (in Zellen gibts nur URLs)
+ SvxFieldData* pField = aTempEngine.FindByPos( aSelection.nStartPara, aSelection.nStartPos, 0 );
+ DBG_ASSERT(pField,"setPropertyValue: Feld nicht gefunden");
+ if (pField)
+ {
+ SvxURLField* pURL = (SvxURLField*)pField; // ist eine Kopie in der ScUnoEditEngine
+
+ BOOL bOk = TRUE;
+ if ( aNameString.EqualsAscii( SC_UNONAME_URL ) )
+ {
+ if (aValue >>= aStrVal)
+ pURL->SetURL( aStrVal );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_REPR ) )
+ {
+ if (aValue >>= aStrVal)
+ pURL->SetRepresentation( aStrVal );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_TARGET ) )
+ {
+ if (aValue >>= aStrVal)
+ pURL->SetTargetFrame( aStrVal );
+ }
+ else
+ bOk = FALSE;
+
+ if (bOk)
+ {
+ pEditEngine->QuickInsertField( SvxFieldItem(*pField), aSelection );
+ pEditSource->UpdateData();
+ }
+ }
+ }
+ else // noch nicht eingefuegt
+ {
+ if ( aNameString.EqualsAscii( SC_UNONAME_URL ) )
+ {
+ if (aValue >>= aStrVal)
+ aUrl = String( aStrVal );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_REPR ) )
+ {
+ if (aValue >>= aStrVal)
+ aRepresentation = String( aStrVal );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_TARGET ) )
+ {
+ if (aValue >>= aStrVal)
+ aTarget = String( aStrVal );
+ }
+ }
+}
+
+uno::Any SAL_CALL ScCellFieldObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Any aRet;
+ String aNameString = aPropertyName;
+
+ if (pEditSource)
+ {
+ //! Feld-Funktionen muessen an den Forwarder !!!
+ ScEditEngineDefaulter* pEditEngine = ((ScCellEditSource*)pEditSource)->GetEditEngine();
+ ScUnoEditEngine aTempEngine(pEditEngine);
+
+ // Typ egal (in Zellen gibts nur URLs)
+ SvxFieldData* pField = aTempEngine.FindByPos( aSelection.nStartPara, aSelection.nStartPos, 0 );
+ DBG_ASSERT(pField,"getPropertyValue: Feld nicht gefunden");
+ if (pField)
+ {
+ SvxURLField* pURL = (SvxURLField*)pField;
+
+ if ( aNameString.EqualsAscii( SC_UNONAME_URL ) )
+ aRet <<= rtl::OUString( pURL->GetURL() );
+ else if ( aNameString.EqualsAscii( SC_UNONAME_REPR ) )
+ aRet <<= rtl::OUString( pURL->GetRepresentation() );
+ else if ( aNameString.EqualsAscii( SC_UNONAME_TARGET ) )
+ aRet <<= rtl::OUString( pURL->GetTargetFrame() );
+ }
+ }
+ else // noch nicht eingefuegt
+ {
+ if ( aNameString.EqualsAscii( SC_UNONAME_URL ) )
+ aRet <<= rtl::OUString( aUrl );
+ else if ( aNameString.EqualsAscii( SC_UNONAME_REPR ) )
+ aRet <<= rtl::OUString( aRepresentation );
+ else if ( aNameString.EqualsAscii( SC_UNONAME_TARGET ) )
+ aRet <<= rtl::OUString( aTarget );
+ }
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScCellFieldObj )
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScCellFieldObj::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScCellFieldObj::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScCellFieldObj* ScCellFieldObj::getImplementation(
+ const uno::Reference<text::XTextContent> xObj )
+{
+ ScCellFieldObj* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScCellFieldObj*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+ScHeaderFieldsObj::ScHeaderFieldsObj(ScHeaderFooterContentObj* pContent, USHORT nP, USHORT nT) :
+ pContentObj( pContent ),
+ nPart( nP ),
+ nType( nT )
+{
+ DBG_ASSERT( pContentObj, "ScHeaderFieldsObj ohne Objekt?" );
+
+ if (pContentObj)
+ {
+ pContentObj->acquire(); // darf nicht wegkommen
+ pEditSource = new ScHeaderFooterEditSource( pContentObj, nPart );
+ }
+ else
+ pEditSource = NULL;
+}
+
+ScHeaderFieldsObj::~ScHeaderFieldsObj()
+{
+ delete pEditSource;
+
+ if (pContentObj)
+ pContentObj->release();
+}
+
+// XIndexAccess (via XTextFields)
+
+ScHeaderFieldObj* ScHeaderFieldsObj::GetObjectByIndex_Impl(INT32 Index) const
+{
+ //! Feld-Funktionen muessen an den Forwarder !!!
+ ScEditEngineDefaulter* pEditEngine = ((ScHeaderFooterEditSource*)pEditSource)->GetEditEngine();
+ ScUnoEditEngine aTempEngine(pEditEngine);
+
+ TypeId aTypeId = NULL;
+ switch (nType)
+ {
+ case SC_SERVICE_PAGEFIELD: aTypeId = TYPE(SvxPageField); break;
+ case SC_SERVICE_PAGESFIELD: aTypeId = TYPE(SvxPagesField); break;
+ case SC_SERVICE_DATEFIELD: aTypeId = TYPE(SvxDateField); break;
+ case SC_SERVICE_TIMEFIELD: aTypeId = TYPE(SvxTimeField); break;
+ case SC_SERVICE_TITLEFIELD: aTypeId = TYPE(SvxFileField); break;
+ case SC_SERVICE_FILEFIELD: aTypeId = TYPE(SvxExtFileField); break;
+ case SC_SERVICE_SHEETFIELD: aTypeId = TYPE(SvxTableField); break;
+ // bei SC_SERVICE_INVALID bleibt TypeId Null
+ }
+ SvxFieldData* pData = aTempEngine.FindByIndex( (USHORT)Index, aTypeId );
+ if ( pData )
+ {
+ USHORT nPar = aTempEngine.GetFieldPar();
+ xub_StrLen nPos = aTempEngine.GetFieldPos();
+
+ USHORT nFieldType = nType;
+ if ( nFieldType == SC_SERVICE_INVALID )
+ {
+ if ( pData->ISA( SvxPageField ) ) nFieldType = SC_SERVICE_PAGEFIELD;
+ else if ( pData->ISA( SvxPagesField ) ) nFieldType = SC_SERVICE_PAGESFIELD;
+ else if ( pData->ISA( SvxDateField ) ) nFieldType = SC_SERVICE_DATEFIELD;
+ else if ( pData->ISA( SvxTimeField ) ) nFieldType = SC_SERVICE_TIMEFIELD;
+ else if ( pData->ISA( SvxFileField ) ) nFieldType = SC_SERVICE_TITLEFIELD;
+ else if ( pData->ISA( SvxExtFileField ) ) nFieldType = SC_SERVICE_FILEFIELD;
+ else if ( pData->ISA( SvxTableField ) ) nFieldType = SC_SERVICE_SHEETFIELD;
+ }
+
+ ESelection aSelection( nPar, nPos, nPar, nPos+1 ); // Feld ist 1 Zeichen
+ return new ScHeaderFieldObj( pContentObj, nPart, nType, aSelection );
+ }
+ return NULL;
+}
+
+sal_Int32 SAL_CALL ScHeaderFieldsObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ //! Feld-Funktionen muessen an den Forwarder !!!
+ ScEditEngineDefaulter* pEditEngine = ((ScHeaderFooterEditSource*)pEditSource)->GetEditEngine();
+ ScUnoEditEngine aTempEngine(pEditEngine);
+
+ TypeId aTypeId = NULL;
+ switch (nType)
+ {
+ case SC_SERVICE_PAGEFIELD: aTypeId = TYPE(SvxPageField); break;
+ case SC_SERVICE_PAGESFIELD: aTypeId = TYPE(SvxPagesField); break;
+ case SC_SERVICE_DATEFIELD: aTypeId = TYPE(SvxDateField); break;
+ case SC_SERVICE_TIMEFIELD: aTypeId = TYPE(SvxTimeField); break;
+ case SC_SERVICE_TITLEFIELD: aTypeId = TYPE(SvxFileField); break;
+ case SC_SERVICE_FILEFIELD: aTypeId = TYPE(SvxExtFileField); break;
+ case SC_SERVICE_SHEETFIELD: aTypeId = TYPE(SvxTableField); break;
+ }
+ return aTempEngine.CountFields(aTypeId); // Felder zaehlen
+}
+
+uno::Any SAL_CALL ScHeaderFieldsObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<text::XTextField> xField = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ aAny <<= xField;
+ return aAny;
+}
+
+uno::Type SAL_CALL ScHeaderFieldsObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<text::XTextField>*)0);
+}
+
+sal_Bool SAL_CALL ScHeaderFieldsObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+uno::Reference<container::XEnumeration> SAL_CALL ScHeaderFieldsObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+void SAL_CALL ScHeaderFieldsObj::addContainerListener(
+ const uno::Reference<container::XContainerListener>& xListener )
+ throw(uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+void SAL_CALL ScHeaderFieldsObj::removeContainerListener(
+ const uno::Reference<container::XContainerListener>& xListener )
+ throw(uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+//------------------------------------------------------------------------
+
+// Default-ctor wird fuer SMART_REFLECTION_IMPLEMENTATION gebraucht
+
+ScHeaderFieldObj::ScHeaderFieldObj() :
+ aPropSet( lcl_GetHeaderFieldPropertyMap() ),
+ pContentObj( NULL ),
+ nPart( 0 ),
+ nType( 0 )
+{
+ pEditSource = NULL;
+}
+
+ScHeaderFieldObj::ScHeaderFieldObj(ScHeaderFooterContentObj* pContent, USHORT nP,
+ USHORT nT, const ESelection& rSel) :
+ aPropSet( lcl_GetHeaderFieldPropertyMap() ),
+ pContentObj( pContent ),
+ nPart( nP ),
+ nType( nT ),
+ aSelection( rSel )
+{
+ // pContent ist Null, wenn per ServiceProvider erzeugt
+
+ if (pContentObj)
+ {
+ pContentObj->acquire(); // darf nicht wegkommen
+ pEditSource = new ScHeaderFooterEditSource( pContentObj, nPart );
+ }
+ else
+ pEditSource = NULL;
+}
+
+void ScHeaderFieldObj::InitDoc( ScHeaderFooterContentObj* pContent, USHORT nP,
+ const ESelection& rSel )
+{
+ if ( pContent && !pEditSource )
+ {
+ DBG_ASSERT( !pContentObj, "ContentObj, aber kein EditSource?" );
+
+ aSelection = rSel;
+ nPart = nP;
+ pContentObj = pContent;
+
+ pContentObj->acquire(); // darf nicht wegkommen
+ pEditSource = new ScHeaderFooterEditSource( pContentObj, nPart );
+ }
+}
+
+ScHeaderFieldObj::~ScHeaderFieldObj()
+{
+ delete pEditSource;
+
+ if (pContentObj)
+ pContentObj->release();
+}
+
+// per getImplementation gerufen:
+
+SvxFieldItem ScHeaderFieldObj::CreateFieldItem()
+{
+ DBG_ASSERT( !pEditSource, "CreateFieldItem mit eingefuegtem Feld" );
+
+ switch (nType)
+ {
+ case SC_SERVICE_PAGEFIELD:
+ {
+ SvxPageField aField;
+ return SvxFieldItem( aField );
+ }
+ case SC_SERVICE_PAGESFIELD:
+ {
+ SvxPagesField aField;
+ return SvxFieldItem( aField );
+ }
+ case SC_SERVICE_DATEFIELD:
+ {
+ SvxDateField aField;
+ return SvxFieldItem( aField );
+ }
+ case SC_SERVICE_TIMEFIELD:
+ {
+ SvxTimeField aField;
+ return SvxFieldItem( aField );
+ }
+ case SC_SERVICE_TITLEFIELD:
+ {
+ SvxFileField aField;
+ return SvxFieldItem( aField );
+ }
+ case SC_SERVICE_FILEFIELD:
+ {
+ SvxExtFileField aField;
+ return SvxFieldItem( aField );
+ }
+ case SC_SERVICE_SHEETFIELD:
+ {
+ SvxTableField aField;
+ return SvxFieldItem( aField );
+ }
+ }
+
+ return SvxFieldItem( SvxFieldData() );
+}
+
+void ScHeaderFieldObj::DeleteField()
+{
+ if (pEditSource)
+ {
+ SvxTextForwarder* pForwarder = pEditSource->GetTextForwarder();
+// pEditEngine->QuickDelete( aSelection );
+ pForwarder->QuickInsertText( String(), aSelection );
+ pEditSource->UpdateData();
+
+ aSelection.nEndPara = aSelection.nStartPara;
+ aSelection.nEndPos = aSelection.nStartPos;
+
+ //! Broadcast, um Selektion in anderen Objekten anzupassen
+ //! (auch bei anderen Aktionen)
+ }
+}
+
+// XTextField
+
+rtl::OUString SAL_CALL ScHeaderFieldObj::getPresentation( sal_Bool bShowCommand )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aRet;
+
+ if (pEditSource)
+ {
+ // Feld von der EditEngine formatieren lassen, bShowCommand gibt's nicht
+
+ SvxTextForwarder* pForwarder = pEditSource->GetTextForwarder();
+ aRet = pForwarder->GetText( aSelection );
+ }
+
+ return aRet;
+}
+
+// XTextContent
+
+void SAL_CALL ScHeaderFieldObj::attach( const uno::Reference<text::XTextRange>& xTextRange )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (xTextRange.is())
+ {
+ uno::Reference<text::XText> xText = xTextRange->getText();
+ if (xText.is())
+ {
+ xText->insertTextContent( xTextRange, this, TRUE );
+ }
+ }
+}
+
+uno::Reference<text::XTextRange> SAL_CALL ScHeaderFieldObj::getAnchor() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ //! Property-Map fuer Kopf-Fusszeilentext
+ if (pEditSource)
+ return (SvxUnoTextRangeBase*)new SvxUnoText(
+ pEditSource, ScCellObj::GetEditPropertyMap(), uno::Reference<text::XText>() );
+ return NULL;
+}
+
+// XComponent
+
+void SAL_CALL ScHeaderFieldObj::dispose() throw(uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+void SAL_CALL ScHeaderFieldObj::addEventListener(
+ const uno::Reference<lang::XEventListener>& xListener )
+ throw(uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+void SAL_CALL ScHeaderFieldObj::removeEventListener(
+ const uno::Reference<lang::XEventListener>& aListener )
+ throw(uno::RuntimeException)
+{
+ DBG_ERROR("not implemented");
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScHeaderFieldObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScHeaderFieldObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ //! Properties?
+}
+
+uno::Any SAL_CALL ScHeaderFieldObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ //! Properties?
+ uno::Any aRet;
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScHeaderFieldObj )
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScHeaderFieldObj::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScHeaderFieldObj::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScHeaderFieldObj* ScHeaderFieldObj::getImplementation(
+ const uno::Reference<text::XTextContent> xObj )
+{
+ ScHeaderFieldObj* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScHeaderFieldObj*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+
+
+
diff --git a/sc/source/ui/unoobj/fmtuno.cxx b/sc/source/ui/unoobj/fmtuno.cxx
new file mode 100644
index 000000000000..ff8f987d9e3f
--- /dev/null
+++ b/sc/source/ui/unoobj/fmtuno.cxx
@@ -0,0 +1,863 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <tools/debug.hxx>
+#include <rtl/uuid.h>
+
+#include <com/sun/star/sheet/ValidationAlertStyle.hpp>
+#include <com/sun/star/sheet/ValidationType.hpp>
+
+#include "fmtuno.hxx"
+#include "miscuno.hxx"
+#include "conditio.hxx"
+#include "validat.hxx"
+#include "document.hxx"
+#include "unoguard.hxx"
+#include "unonames.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+// Map nur fuer PropertySetInfo
+
+const SfxItemPropertyMap* lcl_GetValidatePropertyMap()
+{
+ static SfxItemPropertyMap aValidatePropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_ERRALSTY), 0, &getCppuType((sheet::ValidationAlertStyle*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_ERRMESS), 0, &getCppuType((rtl::OUString*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_ERRTITLE), 0, &getCppuType((rtl::OUString*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_IGNOREBL), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_INPMESS), 0, &getCppuType((rtl::OUString*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_INPTITLE), 0, &getCppuType((rtl::OUString*)0), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_SHOWERR), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_SHOWINP), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNONAME_TYPE), 0, &getCppuType((sheet::ValidationType*)0), 0},
+ {0,0,0,0}
+ };
+ return aValidatePropertyMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+SC_SIMPLE_SERVICE_INFO( ScTableConditionalEntry, "ScTableConditionalEntry", "com.sun.star.sheet.TableConditionalEntry" )
+SC_SIMPLE_SERVICE_INFO( ScTableConditionalFormat, "ScTableConditionalFormat", "com.sun.star.sheet.TableConditionalFormat" )
+SC_SIMPLE_SERVICE_INFO( ScTableValidationObj, "ScTableValidationObj", "com.sun.star.sheet.TableValidation" )
+
+//------------------------------------------------------------------------
+
+sheet::ConditionOperator lcl_ConditionModeToOperator( ScConditionMode eMode )
+{
+ sheet::ConditionOperator eOper = sheet::ConditionOperator_NONE;
+ switch (eMode)
+ {
+ case SC_COND_EQUAL: eOper = sheet::ConditionOperator_EQUAL; break;
+ case SC_COND_LESS: eOper = sheet::ConditionOperator_LESS; break;
+ case SC_COND_GREATER: eOper = sheet::ConditionOperator_GREATER; break;
+ case SC_COND_EQLESS: eOper = sheet::ConditionOperator_LESS_EQUAL; break;
+ case SC_COND_EQGREATER: eOper = sheet::ConditionOperator_GREATER_EQUAL; break;
+ case SC_COND_NOTEQUAL: eOper = sheet::ConditionOperator_NOT_EQUAL; break;
+ case SC_COND_BETWEEN: eOper = sheet::ConditionOperator_BETWEEN; break;
+ case SC_COND_NOTBETWEEN: eOper = sheet::ConditionOperator_NOT_BETWEEN; break;
+ case SC_COND_DIRECT: eOper = sheet::ConditionOperator_FORMULA; break;
+ }
+ return eOper;
+}
+
+ScConditionMode lcl_ConditionOperatorToMode( sheet::ConditionOperator eOper )
+{
+ ScConditionMode eMode = SC_COND_NONE;
+ switch (eOper)
+ {
+ case sheet::ConditionOperator_EQUAL: eMode = SC_COND_EQUAL; break;
+ case sheet::ConditionOperator_LESS: eMode = SC_COND_LESS; break;
+ case sheet::ConditionOperator_GREATER: eMode = SC_COND_GREATER; break;
+ case sheet::ConditionOperator_LESS_EQUAL: eMode = SC_COND_EQLESS; break;
+ case sheet::ConditionOperator_GREATER_EQUAL: eMode = SC_COND_EQGREATER; break;
+ case sheet::ConditionOperator_NOT_EQUAL: eMode = SC_COND_NOTEQUAL; break;
+ case sheet::ConditionOperator_BETWEEN: eMode = SC_COND_BETWEEN; break;
+ case sheet::ConditionOperator_NOT_BETWEEN: eMode = SC_COND_NOTBETWEEN; break;
+ case sheet::ConditionOperator_FORMULA: eMode = SC_COND_DIRECT; break;
+ }
+ return eMode;
+}
+
+//------------------------------------------------------------------------
+
+ScTableConditionalFormat::ScTableConditionalFormat()
+{
+}
+
+ScTableConditionalFormat::ScTableConditionalFormat(ScDocument* pDoc, ULONG nKey, BOOL bEnglish)
+{
+ // Eintrag aus dem Dokument lesen...
+
+ if ( pDoc && nKey )
+ {
+ ScConditionalFormatList* pList = pDoc->GetCondFormList();
+ if (pList)
+ {
+ const ScConditionalFormat* pFormat = pList->GetFormat( nKey );
+ if (pFormat)
+ {
+ USHORT nEntryCount = pFormat->Count();
+ for (USHORT i=0; i<nEntryCount; i++)
+ {
+ const ScCondFormatEntry* pFormatEntry = pFormat->GetEntry(i);
+ ScConditionMode eMode = pFormatEntry->GetOperation();
+ ScAddress aPos = pFormatEntry->GetSrcPos();
+ String aExpr1 = pFormatEntry->GetExpression( aPos, 0, 0, bEnglish );
+ String aExpr2 = pFormatEntry->GetExpression( aPos, 1, 0, bEnglish );
+ String aStyle = pFormatEntry->GetStyle();
+
+ AddEntry_Impl( eMode, aExpr1, aExpr2, aPos, aStyle );
+ }
+ }
+ }
+ }
+}
+
+void ScTableConditionalFormat::FillFormat( ScConditionalFormat& rFormat,
+ ScDocument* pDoc, BOOL bEnglish ) const
+{
+ // ScConditionalFormat = Core-Struktur, muss leer sein
+
+ DBG_ASSERT( rFormat.IsEmpty(), "FillFormat: Format nicht leer" );
+ USHORT nCount = (USHORT)aEntries.Count();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScTableConditionalEntry* pEntry = (ScTableConditionalEntry*)aEntries.GetObject(i);
+ if (pEntry)
+ {
+ USHORT nMode;
+ String aExpr1, aExpr2, aStyle;
+ ScAddress aPos;
+ pEntry->GetData( nMode, aExpr1, aExpr2, aPos, aStyle );
+ ScCondFormatEntry aCoreEntry( (ScConditionMode)nMode,
+ aExpr1, aExpr2, pDoc, aPos, aStyle, bEnglish );
+ rFormat.AddEntry( aCoreEntry );
+ }
+ }
+}
+
+ScTableConditionalFormat::~ScTableConditionalFormat()
+{
+ ScTableConditionalEntry* pEntry;
+ aEntries.First();
+ while ( pEntry = (ScTableConditionalEntry*)aEntries.Remove() )
+ pEntry->release();
+}
+
+void ScTableConditionalFormat::AddEntry_Impl( USHORT nMode,
+ const String& rExpr1, const String& rExpr2,
+ const ScAddress& rPos, const String& rStyle )
+{
+ ScTableConditionalEntry* pNew = new ScTableConditionalEntry(
+ this, nMode, rExpr1, rExpr2, rPos, rStyle );
+ pNew->acquire();
+ aEntries.Insert( pNew, LIST_APPEND );
+}
+
+void ScTableConditionalFormat::DataChanged()
+{
+ // wenn's mal das "lebende Objekt" ist, muss hier was passieren...
+}
+
+// XSheetConditionalFormat
+
+ScTableConditionalEntry* ScTableConditionalFormat::GetObjectByIndex_Impl(USHORT nIndex) const
+{
+ return (ScTableConditionalEntry*)aEntries.GetObject(nIndex);
+}
+
+void SAL_CALL ScTableConditionalFormat::addNew(
+ const uno::Sequence<beans::PropertyValue >& aConditionalEntry )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScConditionMode eMode = SC_COND_NONE;
+ String aExpr1;
+ String aExpr2;
+ ScAddress aPos;
+ String aStyle;
+
+ const beans::PropertyValue* pPropArray = aConditionalEntry.getConstArray();
+ long nPropCount = aConditionalEntry.getLength();
+ for (long i = 0; i < nPropCount; i++)
+ {
+ const beans::PropertyValue& rProp = pPropArray[i];
+ String aPropName = rProp.Name;
+
+ if ( aPropName.EqualsAscii( SC_UNONAME_OPERATOR ) )
+ {
+ sheet::ConditionOperator eOper = (sheet::ConditionOperator)
+ ScUnoHelpFunctions::GetEnumFromAny( rProp.Value );
+ eMode = lcl_ConditionOperatorToMode( eOper );
+ }
+ else if ( aPropName.EqualsAscii( SC_UNONAME_FORMULA1 ) )
+ {
+ rtl::OUString aStrVal;
+ if ( rProp.Value >>= aStrVal )
+ aExpr1 = String( aStrVal );
+ }
+ else if ( aPropName.EqualsAscii( SC_UNONAME_FORMULA2 ) )
+ {
+ rtl::OUString aStrVal;
+ if ( rProp.Value >>= aStrVal )
+ aExpr2 = String( aStrVal );
+ }
+ else if ( aPropName.EqualsAscii( SC_UNONAME_SOURCEPOS ) )
+ {
+ table::CellAddress aAddress;
+ if ( rProp.Value >>= aAddress )
+ aPos = ScAddress( aAddress.Column, aAddress.Row, aAddress.Sheet );
+ }
+ else if ( aPropName.EqualsAscii( SC_UNONAME_STYLENAME ) )
+ {
+ rtl::OUString aStrVal;
+ if ( rProp.Value >>= aStrVal )
+ aStyle = String( aStrVal );
+ }
+ else
+ {
+ DBG_ERROR("falsche Property");
+ //! Exception...
+ }
+ }
+
+ AddEntry_Impl( eMode, aExpr1, aExpr2, aPos, aStyle );
+ DataChanged();
+}
+
+void SAL_CALL ScTableConditionalFormat::removeByIndex( sal_Int32 nIndex )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTableConditionalEntry* pEntry = (ScTableConditionalEntry*)aEntries.GetObject(nIndex);
+ if (pEntry)
+ {
+ aEntries.Remove(pEntry);
+ pEntry->release();
+ DataChanged();
+ }
+}
+
+void SAL_CALL ScTableConditionalFormat::clear() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTableConditionalEntry* pEntry;
+ aEntries.First();
+ while ( pEntry = (ScTableConditionalEntry*)aEntries.Remove() )
+ pEntry->release();
+
+ DataChanged();
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScTableConditionalFormat::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScTableConditionalFormat::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aEntries.Count();
+}
+
+uno::Any SAL_CALL ScTableConditionalFormat::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XSheetConditionalEntry> xEntry = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ aAny <<= xEntry;
+ return aAny;
+}
+
+uno::Type SAL_CALL ScTableConditionalFormat::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<sheet::XSheetConditionalEntry>*)0);
+}
+
+sal_Bool SAL_CALL ScTableConditionalFormat::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+uno::Any SAL_CALL ScTableConditionalFormat::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ //! was fuer Namen ???
+ return uno::Any();
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScTableConditionalFormat::getElementNames()
+ throw(uno::RuntimeException)
+{
+ //! was fuer Namen ???
+ return uno::Sequence<rtl::OUString>(0);
+}
+
+sal_Bool SAL_CALL ScTableConditionalFormat::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ //! was fuer Namen ???
+ return FALSE;
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScTableConditionalFormat::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScTableConditionalFormat::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScTableConditionalFormat* ScTableConditionalFormat::getImplementation(
+ const uno::Reference<sheet::XSheetConditionalEntries> xObj )
+{
+ ScTableConditionalFormat* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScTableConditionalFormat*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+ScTableConditionalEntry::ScTableConditionalEntry() :
+ pParent( NULL )
+{
+}
+
+ScTableConditionalEntry::ScTableConditionalEntry( ScTableConditionalFormat* pPar,
+ USHORT nM, const String& rEx1, const String& rEx2,
+ const ScAddress& rPos, const String& rSt ) :
+ pParent( pPar ),
+ nMode( nM ),
+ aExpr1( rEx1 ),
+ aExpr2( rEx2 ),
+ aSrcPos( rPos ),
+ aStyle( rSt )
+{
+ if (pParent)
+ pParent->acquire();
+}
+
+ScTableConditionalEntry::~ScTableConditionalEntry()
+{
+ if (pParent)
+ pParent->release();
+}
+
+void ScTableConditionalEntry::GetData( USHORT& rM, String& rEx1, String& rEx2,
+ ScAddress& rPos, String& rSt ) const
+{
+ rM = nMode;
+ rEx1 = aExpr1;
+ rEx2 = aExpr2;
+ rPos = aSrcPos;
+ rSt = aStyle;
+}
+
+// XSheetCondition
+
+sheet::ConditionOperator SAL_CALL ScTableConditionalEntry::getOperator()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return lcl_ConditionModeToOperator( (ScConditionMode)nMode );
+}
+
+void SAL_CALL ScTableConditionalEntry::setOperator( sheet::ConditionOperator nOperator )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ nMode = lcl_ConditionOperatorToMode( nOperator );
+ if (pParent)
+ pParent->DataChanged();
+}
+
+rtl::OUString SAL_CALL ScTableConditionalEntry::getFormula1() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aExpr1;
+}
+
+void SAL_CALL ScTableConditionalEntry::setFormula1( const rtl::OUString& aFormula1 )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aExpr1 = String( aFormula1 );
+ if (pParent)
+ pParent->DataChanged();
+}
+
+rtl::OUString SAL_CALL ScTableConditionalEntry::getFormula2() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aExpr2;
+}
+
+void SAL_CALL ScTableConditionalEntry::setFormula2( const rtl::OUString& aFormula2 )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aExpr2 = String( aFormula2 );
+ if (pParent)
+ pParent->DataChanged();
+}
+
+table::CellAddress SAL_CALL ScTableConditionalEntry::getSourcePosition() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellAddress aRet;
+ aRet.Column = aSrcPos.Col();
+ aRet.Row = aSrcPos.Row();
+ aRet.Sheet = aSrcPos.Tab();
+ return aRet;
+}
+
+void SAL_CALL ScTableConditionalEntry::setSourcePosition( const table::CellAddress& aSourcePosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aSrcPos.Set( aSourcePosition.Column, aSourcePosition.Row, aSourcePosition.Sheet );
+ if (pParent)
+ pParent->DataChanged();
+}
+
+// XSheetConditionalEntry
+
+rtl::OUString SAL_CALL ScTableConditionalEntry::getStyleName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aStyle;
+}
+
+void SAL_CALL ScTableConditionalEntry::setStyleName( const rtl::OUString& aStyleName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aStyle = String( aStyleName );
+ if (pParent)
+ pParent->DataChanged();
+}
+
+//------------------------------------------------------------------------
+
+ScTableValidationObj::ScTableValidationObj() :
+ aPropSet( lcl_GetValidatePropertyMap() )
+{
+}
+
+ScTableValidationObj::ScTableValidationObj(ScDocument* pDoc, ULONG nKey, BOOL bEnglish) :
+ aPropSet( lcl_GetValidatePropertyMap() )
+{
+ // Eintrag aus dem Dokument lesen...
+
+ BOOL bFound = FALSE;
+ if ( pDoc && nKey )
+ {
+ const ScValidationData* pData = pDoc->GetValidationEntry( nKey );
+ if (pData)
+ {
+ nMode = pData->GetOperation();
+ aSrcPos = pData->GetSrcPos();
+ aExpr1 = pData->GetExpression( aSrcPos, 0, 0, bEnglish );
+ aExpr2 = pData->GetExpression( aSrcPos, 1, 0, bEnglish );
+ nValMode = pData->GetDataMode();
+ bIgnoreBlank = pData->IsIgnoreBlank();
+ bShowInput = pData->GetInput( aInputTitle, aInputMessage );
+ ScValidErrorStyle eStyle;
+ bShowError = pData->GetErrMsg( aErrorTitle, aErrorMessage, eStyle );
+ nErrorStyle = eStyle;
+
+ bFound = TRUE;
+ }
+ }
+ if (!bFound)
+ ClearData_Impl(); // Defaults
+}
+
+ScValidationData* ScTableValidationObj::CreateValidationData( ScDocument* pDoc, BOOL bEnglish ) const
+{
+ // ScValidationData = Core-Struktur
+
+ ScValidationData* pRet = new ScValidationData( (ScValidationMode)nValMode,
+ (ScConditionMode)nMode,
+ aExpr1, aExpr2, pDoc, aSrcPos, bEnglish );
+ pRet->SetIgnoreBlank(bIgnoreBlank);
+ if (bShowInput)
+ pRet->SetInput( aInputTitle, aInputMessage );
+ else
+ pRet->ResetInput();
+ if (bShowError)
+ pRet->SetError( aErrorTitle, aErrorMessage, (ScValidErrorStyle)nErrorStyle );
+ else
+ pRet->ResetError();
+
+ return pRet;
+}
+
+void ScTableValidationObj::ClearData_Impl()
+{
+ nMode = SC_COND_NONE;
+ nValMode = SC_VALID_ANY;
+ bIgnoreBlank = TRUE;
+ bShowInput = FALSE;
+ bShowError = FALSE;
+ nErrorStyle = SC_VALERR_STOP;
+ aSrcPos.Set(0,0,0);
+ aExpr1.Erase();
+ aExpr2.Erase();
+ aInputTitle.Erase();
+ aInputMessage.Erase();
+ aErrorTitle.Erase();
+ aErrorMessage.Erase();
+}
+
+ScTableValidationObj::~ScTableValidationObj()
+{
+}
+
+void ScTableValidationObj::DataChanged()
+{
+ // wenn's mal das "lebende Objekt" ist, muss hier was passieren...
+}
+
+// XSheetCondition
+
+sheet::ConditionOperator SAL_CALL ScTableValidationObj::getOperator()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return lcl_ConditionModeToOperator( (ScConditionMode)nMode );
+}
+
+void SAL_CALL ScTableValidationObj::setOperator( sheet::ConditionOperator nOperator )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ nMode = lcl_ConditionOperatorToMode( nOperator );
+ DataChanged();
+}
+
+rtl::OUString SAL_CALL ScTableValidationObj::getFormula1() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aExpr1;
+}
+
+void SAL_CALL ScTableValidationObj::setFormula1( const rtl::OUString& aFormula1 )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aExpr1 = String( aFormula1 );
+ DataChanged();
+}
+
+rtl::OUString SAL_CALL ScTableValidationObj::getFormula2() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aExpr2;
+}
+
+void SAL_CALL ScTableValidationObj::setFormula2( const rtl::OUString& aFormula2 )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aExpr2 = String( aFormula2 );
+ DataChanged();
+}
+
+table::CellAddress SAL_CALL ScTableValidationObj::getSourcePosition() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellAddress aRet;
+ aRet.Column = aSrcPos.Col();
+ aRet.Row = aSrcPos.Row();
+ aRet.Sheet = aSrcPos.Tab();
+ return aRet;
+}
+
+void SAL_CALL ScTableValidationObj::setSourcePosition( const table::CellAddress& aSourcePosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ aSrcPos.Set( aSourcePosition.Column, aSourcePosition.Row, aSourcePosition.Sheet );
+ DataChanged();
+}
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScTableValidationObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScTableValidationObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+
+ if ( aString.EqualsAscii( SC_UNONAME_SHOWINP ) ) bShowInput = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if ( aString.EqualsAscii( SC_UNONAME_SHOWERR ) ) bShowError = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if ( aString.EqualsAscii( SC_UNONAME_IGNOREBL ) ) bIgnoreBlank = ScUnoHelpFunctions::GetBoolFromAny( aValue );
+ else if ( aString.EqualsAscii( SC_UNONAME_INPTITLE ) )
+ {
+ rtl::OUString aStrVal;
+ if ( aValue >>= aStrVal )
+ aInputTitle = String( aStrVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNONAME_INPMESS ) )
+ {
+ rtl::OUString aStrVal;
+ if ( aValue >>= aStrVal )
+ aInputMessage = String( aStrVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNONAME_ERRTITLE ) )
+ {
+ rtl::OUString aStrVal;
+ if ( aValue >>= aStrVal )
+ aErrorTitle = String( aStrVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNONAME_ERRMESS ) )
+ {
+ rtl::OUString aStrVal;
+ if ( aValue >>= aStrVal )
+ aErrorMessage = String( aStrVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNONAME_TYPE ) )
+ {
+ sheet::ValidationType eType = (sheet::ValidationType)
+ ScUnoHelpFunctions::GetEnumFromAny( aValue );
+ switch (eType)
+ {
+ case sheet::ValidationType_ANY: nValMode = SC_VALID_ANY; break;
+ case sheet::ValidationType_WHOLE: nValMode = SC_VALID_WHOLE; break;
+ case sheet::ValidationType_DECIMAL: nValMode = SC_VALID_DECIMAL; break;
+ case sheet::ValidationType_DATE: nValMode = SC_VALID_DATE; break;
+ case sheet::ValidationType_TIME: nValMode = SC_VALID_TIME; break;
+ case sheet::ValidationType_TEXT_LEN: nValMode = SC_VALID_TEXTLEN; break;
+ case sheet::ValidationType_LIST: nValMode = SC_VALID_LIST; break;
+ case sheet::ValidationType_CUSTOM: nValMode = SC_VALID_CUSTOM; break;
+ }
+ }
+ else if ( aString.EqualsAscii( SC_UNONAME_ERRALSTY ) )
+ {
+ sheet::ValidationAlertStyle eStyle = (sheet::ValidationAlertStyle)
+ ScUnoHelpFunctions::GetEnumFromAny( aValue );
+ switch (eStyle)
+ {
+ case sheet::ValidationAlertStyle_STOP: nErrorStyle = SC_VALERR_STOP; break;
+ case sheet::ValidationAlertStyle_WARNING: nErrorStyle = SC_VALERR_WARNING; break;
+ case sheet::ValidationAlertStyle_INFO: nErrorStyle = SC_VALERR_INFO; break;
+ case sheet::ValidationAlertStyle_MACRO: nErrorStyle = SC_VALERR_MACRO; break;
+ }
+ }
+
+ DataChanged();
+}
+
+uno::Any SAL_CALL ScTableValidationObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+ uno::Any aRet;
+
+ if ( aString.EqualsAscii( SC_UNONAME_SHOWINP ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, bShowInput );
+ else if ( aString.EqualsAscii( SC_UNONAME_SHOWERR ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, bShowError );
+ else if ( aString.EqualsAscii( SC_UNONAME_IGNOREBL ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, bIgnoreBlank );
+ else if ( aString.EqualsAscii( SC_UNONAME_INPTITLE ) ) aRet <<= rtl::OUString( aInputTitle );
+ else if ( aString.EqualsAscii( SC_UNONAME_INPMESS ) ) aRet <<= rtl::OUString( aInputMessage );
+ else if ( aString.EqualsAscii( SC_UNONAME_ERRTITLE ) ) aRet <<= rtl::OUString( aErrorTitle );
+ else if ( aString.EqualsAscii( SC_UNONAME_ERRMESS ) ) aRet <<= rtl::OUString( aErrorMessage );
+ else if ( aString.EqualsAscii( SC_UNONAME_TYPE ) )
+ {
+ sheet::ValidationType eType = sheet::ValidationType_ANY;
+ switch (nValMode)
+ {
+ case SC_VALID_ANY: eType = sheet::ValidationType_ANY; break;
+ case SC_VALID_WHOLE: eType = sheet::ValidationType_WHOLE; break;
+ case SC_VALID_DECIMAL: eType = sheet::ValidationType_DECIMAL; break;
+ case SC_VALID_DATE: eType = sheet::ValidationType_DATE; break;
+ case SC_VALID_TIME: eType = sheet::ValidationType_TIME; break;
+ case SC_VALID_TEXTLEN: eType = sheet::ValidationType_TEXT_LEN; break;
+ case SC_VALID_LIST: eType = sheet::ValidationType_LIST; break;
+ case SC_VALID_CUSTOM: eType = sheet::ValidationType_CUSTOM; break;
+ }
+ aRet <<= eType;
+ }
+ else if ( aString.EqualsAscii( SC_UNONAME_ERRALSTY ) )
+ {
+ sheet::ValidationAlertStyle eStyle = sheet::ValidationAlertStyle_STOP;
+ switch (nErrorStyle)
+ {
+ case SC_VALERR_STOP: eStyle = sheet::ValidationAlertStyle_STOP; break;
+ case SC_VALERR_WARNING: eStyle = sheet::ValidationAlertStyle_WARNING; break;
+ case SC_VALERR_INFO: eStyle = sheet::ValidationAlertStyle_INFO; break;
+ case SC_VALERR_MACRO: eStyle = sheet::ValidationAlertStyle_MACRO; break;
+ }
+ aRet <<= eStyle;
+ }
+
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScTableValidationObj )
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScTableValidationObj::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScTableValidationObj::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScTableValidationObj* ScTableValidationObj::getImplementation(
+ const uno::Reference<beans::XPropertySet> xObj )
+{
+ ScTableValidationObj* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScTableValidationObj*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+
+
+
diff --git a/sc/source/ui/unoobj/linkuno.cxx b/sc/source/ui/unoobj/linkuno.cxx
new file mode 100644
index 000000000000..92bbf666d62c
--- /dev/null
+++ b/sc/source/ui/unoobj/linkuno.cxx
@@ -0,0 +1,1314 @@
+/*************************************************************************
+ *
+ * $RCSfile: linkuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <svtools/smplhint.hxx>
+#include <svx/linkmgr.hxx>
+
+#include "linkuno.hxx"
+#include "miscuno.hxx"
+#include "convuno.hxx"
+#include "docsh.hxx"
+#include "docfunc.hxx"
+#include "collect.hxx"
+#include "tablink.hxx"
+#include "arealink.hxx"
+#include "unoguard.hxx"
+#include "hints.hxx"
+#include "unonames.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+// fuer Sheet- und Area-Links benutzt:
+const SfxItemPropertyMap* lcl_GetSheetLinkMap()
+{
+ static SfxItemPropertyMap aSheetLinkMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_FILTER), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_FILTOPT), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_LINKURL), 0, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {0,0,0,0}
+ };
+ return aSheetLinkMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+SV_IMPL_PTRARR( XRefreshListenerArr_Impl, XRefreshListenerPtr );
+
+SC_SIMPLE_SERVICE_INFO( ScAreaLinkObj, "ScAreaLinkObj", "com.sun.star.sheet.CellAreaLink" )
+SC_SIMPLE_SERVICE_INFO( ScAreaLinksObj, "ScAreaLinksObj", "com.sun.star.sheet.CellAreaLinks" )
+SC_SIMPLE_SERVICE_INFO( ScDDELinkObj, "ScDDELinkObj", "com.sun.star.sheet.DDELink" )
+SC_SIMPLE_SERVICE_INFO( ScDDELinksObj, "ScDDELinksObj", "com.sun.star.sheet.DDELinks" )
+SC_SIMPLE_SERVICE_INFO( ScSheetLinkObj, "ScSheetLinkObj", "com.sun.star.sheet.SheetLink" )
+SC_SIMPLE_SERVICE_INFO( ScSheetLinksObj, "ScSheetLinksObj", "com.sun.star.sheet.SheetLinks" )
+
+//------------------------------------------------------------------------
+
+ScSheetLinkObj::ScSheetLinkObj(ScDocShell* pDocSh, const String& rName) :
+ aPropSet( lcl_GetSheetLinkMap() ),
+ pDocShell( pDocSh ),
+ aFileName( rName )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScSheetLinkObj::~ScSheetLinkObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScSheetLinkObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ //! notify if links in document are changed
+ // UpdateRef is not needed here
+
+ if ( rHint.ISA( SfxSimpleHint ) )
+ {
+ if ( ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ pDocShell = NULL; // pointer is invalid
+ }
+ else if ( rHint.ISA( ScLinkRefreshedHint ) )
+ {
+ const ScLinkRefreshedHint& rLH = (const ScLinkRefreshedHint&) rHint;
+ if ( rLH.GetLinkType() == SC_LINKREFTYPE_SHEET && rLH.GetUrl() == aFileName )
+ Refreshed_Impl();
+ }
+}
+
+ScTableLink* ScSheetLinkObj::GetLink_Impl() const
+{
+ if (pDocShell)
+ {
+ SvxLinkManager* pLinkManager = pDocShell->GetDocument()->GetLinkManager();
+ USHORT nCount = pLinkManager->GetLinks().Count();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ SvBaseLink* pBase = *pLinkManager->GetLinks()[i];
+ if (pBase->ISA(ScTableLink))
+ {
+ ScTableLink* pTabLink = (ScTableLink*)pBase;
+ if ( pTabLink->GetFileName() == aFileName )
+ return pTabLink;
+ }
+ }
+ }
+ return NULL; // nicht gefunden
+}
+
+// XNamed
+
+rtl::OUString SAL_CALL ScSheetLinkObj::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getFileName(); // Name ist der Dateiname (URL)
+}
+
+void SAL_CALL ScSheetLinkObj::setName( const rtl::OUString& aName ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ setFileName(aName); // Name ist der Dateiname (URL)
+}
+
+// XRefreshable
+
+void SAL_CALL ScSheetLinkObj::refresh() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTableLink* pLink = GetLink_Impl();
+ if (pLink)
+ pLink->Refresh( pLink->GetFileName(), pLink->GetFilterName() );
+}
+
+void SAL_CALL ScSheetLinkObj::addRefreshListener(
+ const uno::Reference<util::XRefreshListener >& xListener )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<util::XRefreshListener>* pObj =
+ new uno::Reference<util::XRefreshListener>( xListener );
+ aRefreshListeners.Insert( pObj, aRefreshListeners.Count() );
+
+ // hold one additional ref to keep this object alive as long as there are listeners
+ if ( aRefreshListeners.Count() == 1 )
+ acquire();
+}
+
+void SAL_CALL ScSheetLinkObj::removeRefreshListener(
+ const uno::Reference<util::XRefreshListener >& xListener )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = aRefreshListeners.Count();
+ for ( USHORT n=nCount; n--; )
+ {
+ uno::Reference<util::XRefreshListener>* pObj = aRefreshListeners[n];
+ if ( *pObj == xListener )
+ {
+ aRefreshListeners.DeleteAndDestroy( n );
+ if ( aRefreshListeners.Count() == 0 )
+ release(); // release ref for listeners
+ break;
+ }
+ }
+}
+
+void ScSheetLinkObj::Refreshed_Impl()
+{
+ lang::EventObject aEvent;
+ aEvent.Source = (cppu::OWeakObject*)this;
+ for ( USHORT n=0; n<aRefreshListeners.Count(); n++ )
+ (*aRefreshListeners[n])->refreshed( aEvent );
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScSheetLinkObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScSheetLinkObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+ rtl::OUString aValStr;
+ if ( aNameString.EqualsAscii( SC_UNONAME_LINKURL ) )
+ {
+ if ( aValue >>= aValStr )
+ setFileName( aValStr );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_FILTER ) )
+ {
+ if ( aValue >>= aValStr )
+ setFilter( aValStr );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_FILTOPT ) )
+ {
+ if ( aValue >>= aValStr )
+ setFilterOptions( aValStr );
+ }
+}
+
+uno::Any SAL_CALL ScSheetLinkObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+ uno::Any aRet;
+ if ( aNameString.EqualsAscii( SC_UNONAME_LINKURL ) )
+ aRet <<= getFileName();
+ else if ( aNameString.EqualsAscii( SC_UNONAME_FILTER ) )
+ aRet <<= getFilter();
+ else if ( aNameString.EqualsAscii( SC_UNONAME_FILTOPT ) )
+ aRet <<= getFilterOptions();
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScSheetLinkObj )
+
+// internal:
+
+rtl::OUString ScSheetLinkObj::getFileName(void) const
+{
+ ScUnoGuard aGuard;
+ return aFileName;
+}
+
+void ScSheetLinkObj::setFileName(const rtl::OUString& rNewName)
+{
+ ScUnoGuard aGuard;
+ ScTableLink* pLink = GetLink_Impl();
+ if (pLink)
+ {
+ // pLink->Refresh mit neuem Dateinamen bringt SvxLinkManager durcheinander
+ // darum per Hand die Tabellen umsetzen und Link per UpdateLinks neu erzeugen
+
+ String aNewStr = rNewName;
+ aNewStr = ScGlobal::GetAbsDocName( aNewStr, pDocShell );
+
+ // zuerst Tabellen umsetzen
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if ( pDoc->IsLinked(nTab) && pDoc->GetLinkDoc(nTab) == aFileName ) // alte Datei
+ pDoc->SetLink( nTab, pDoc->GetLinkMode(nTab), aNewStr,
+ pDoc->GetLinkFlt(nTab), pDoc->GetLinkOpt(nTab),
+ pDoc->GetLinkTab(nTab) ); // nur Datei aendern
+
+ // Links updaten
+ //! Undo !!!
+
+ pLink = NULL; // wird bei UpdateLinks ungueltig
+ pDocShell->UpdateLinks(); // alter Link raus, evtl. neuen Link anlegen
+
+ // Daten kopieren
+
+ aFileName = aNewStr;
+ pLink = GetLink_Impl(); // neuer Link mit neuem Namen
+ if (pLink)
+ pLink->Update(); // inkl. Paint & Undo fuer Daten
+ }
+}
+
+rtl::OUString ScSheetLinkObj::getFilter(void) const
+{
+ ScUnoGuard aGuard;
+ rtl::OUString aRet;
+ ScTableLink* pLink = GetLink_Impl();
+ if (pLink)
+ aRet = pLink->GetFilterName();
+ return aRet;
+}
+
+void ScSheetLinkObj::setFilter(const rtl::OUString& Filter)
+{
+ ScUnoGuard aGuard;
+ ScTableLink* pLink = GetLink_Impl();
+ if (pLink)
+ {
+ String aFilterStr = Filter;
+ pLink->Refresh( aFileName, aFilterStr );
+ }
+}
+
+rtl::OUString ScSheetLinkObj::getFilterOptions(void) const
+{
+ ScUnoGuard aGuard;
+ rtl::OUString aRet;
+ ScTableLink* pLink = GetLink_Impl();
+ if (pLink)
+ aRet = pLink->GetOptions();
+ return aRet;
+}
+
+void ScSheetLinkObj::setFilterOptions(const rtl::OUString& FilterOptions)
+{
+ ScUnoGuard aGuard;
+ ScTableLink* pLink = GetLink_Impl();
+ if (pLink)
+ {
+ String aOptStr = FilterOptions;
+ pLink->Refresh( aFileName, pLink->GetFilterName(), &aOptStr );
+ }
+}
+
+//------------------------------------------------------------------------
+
+ScSheetLinksObj::ScSheetLinksObj(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScSheetLinksObj::~ScSheetLinksObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScSheetLinksObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XSheetLinks
+
+ScSheetLinkObj* ScSheetLinksObj::GetObjectByIndex_Impl(INT32 nIndex)
+{
+ if (pDocShell)
+ {
+ INT32 nCount = 0;
+ StrCollection aNames; // um doppelte wegzulassen
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if (pDoc->IsLinked(nTab))
+ {
+ String aLinkDoc = pDoc->GetLinkDoc( nTab );
+ StrData* pData = new StrData(aLinkDoc);
+ if (aNames.Insert(pData))
+ {
+ if ( nCount == nIndex )
+ return new ScSheetLinkObj( pDocShell, aLinkDoc );
+ ++nCount;
+ }
+ else
+ delete pData;
+ }
+ }
+ return NULL; // kein Dokument oder Index zu gross
+}
+
+ScSheetLinkObj* ScSheetLinksObj::GetObjectByName_Impl(const rtl::OUString& aName)
+{
+ // Name ist der Dateiname
+
+ if (pDocShell)
+ {
+ String aNameStr = aName;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if (pDoc->IsLinked(nTab))
+ {
+ //! case-insensitiv ???
+ String aLinkDoc = pDoc->GetLinkDoc( nTab );
+ if ( aLinkDoc == aNameStr )
+ return new ScSheetLinkObj( pDocShell, aNameStr );
+ }
+ }
+
+ return NULL;
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScSheetLinksObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScSheetLinksObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ INT32 nCount = 0;
+ if (pDocShell)
+ {
+ StrCollection aNames; // um doppelte wegzulassen
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if (pDoc->IsLinked(nTab))
+ {
+ String aLinkDoc = pDoc->GetLinkDoc( nTab );
+ StrData* pData = new StrData(aLinkDoc);
+ if (aNames.Insert(pData))
+ ++nCount;
+ else
+ delete pData;
+ }
+ }
+ return nCount;
+}
+
+uno::Any SAL_CALL ScSheetLinksObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<beans::XPropertySet> xLink = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xLink.is())
+ aAny <<= xLink;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScSheetLinksObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<beans::XPropertySet>*)0);
+}
+
+sal_Bool SAL_CALL ScSheetLinksObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+uno::Any SAL_CALL ScSheetLinksObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<beans::XPropertySet> xLink = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ if (xLink.is())
+ aAny <<= xLink;
+ else
+ throw container::NoSuchElementException();
+ return aAny;
+}
+
+sal_Bool SAL_CALL ScSheetLinksObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ // Name ist der Dateiname
+
+ if (pDocShell)
+ {
+ String aNameStr = aName;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if (pDoc->IsLinked(nTab))
+ {
+ //! case-insensitiv ???
+ String aLinkDoc = pDoc->GetLinkDoc( nTab );
+ if ( aLinkDoc == aNameStr )
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScSheetLinksObj::getElementNames() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ // Name ist der Dateiname
+
+ if (pDocShell)
+ {
+ StrCollection aNames; // um doppelte wegzulassen
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTabCount = pDoc->GetTableCount();
+ String aName;
+
+ INT32 nLinkCount = getCount();
+ uno::Sequence<rtl::OUString> aSeq(nLinkCount);
+ rtl::OUString* pAry = aSeq.getArray();
+ USHORT nPos = 0;
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ {
+ if (pDoc->IsLinked(nTab))
+ {
+ String aLinkDoc = pDoc->GetLinkDoc( nTab );
+ StrData* pData = new StrData(aLinkDoc);
+ if (aNames.Insert(pData))
+ pAry[nPos++] = aLinkDoc;
+ else
+ delete pData;
+ }
+ }
+ DBG_ASSERT( nPos==nLinkCount, "verzaehlt" );
+ return aSeq;
+ }
+ return uno::Sequence<rtl::OUString>();
+}
+
+//------------------------------------------------------------------------
+
+ScAreaLink* lcl_GetAreaLink( ScDocShell* pDocShell, USHORT nPos )
+{
+ if (pDocShell)
+ {
+ SvxLinkManager* pLinkManager = pDocShell->GetDocument()->GetLinkManager();
+ USHORT nTotalCount = pLinkManager->GetLinks().Count();
+ USHORT nAreaCount = 0;
+ for (USHORT i=0; i<nTotalCount; i++)
+ {
+ SvBaseLink* pBase = *pLinkManager->GetLinks()[i];
+ if (pBase->ISA(ScAreaLink))
+ {
+ if ( nAreaCount == nPos )
+ return (ScAreaLink*)pBase;
+ ++nAreaCount;
+ }
+ }
+ }
+ return NULL; // nicht gefunden
+}
+
+ScAreaLinkObj::ScAreaLinkObj(ScDocShell* pDocSh, USHORT nP) :
+ aPropSet( lcl_GetSheetLinkMap() ),
+ pDocShell( pDocSh ),
+ nPos( nP )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScAreaLinkObj::~ScAreaLinkObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScAreaLinkObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ //! notify if links in document are changed
+ // UpdateRef is not needed here
+
+ if ( rHint.ISA( SfxSimpleHint ) )
+ {
+ if ( ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ pDocShell = NULL; // pointer is invalid
+ }
+ else if ( rHint.ISA( ScLinkRefreshedHint ) )
+ {
+ const ScLinkRefreshedHint& rLH = (const ScLinkRefreshedHint&) rHint;
+ if ( rLH.GetLinkType() == SC_LINKREFTYPE_AREA )
+ {
+ // get this link to compare dest position
+ ScAreaLink* pLink = lcl_GetAreaLink(pDocShell, nPos);
+ if ( pLink && pLink->GetDestArea().aStart == rLH.GetDestPos() )
+ Refreshed_Impl();
+ }
+ }
+}
+
+// XFileLink
+
+void ScAreaLinkObj::Modify_Impl( const rtl::OUString* pNewFile, const rtl::OUString* pNewFilter,
+ const rtl::OUString* pNewOptions, const rtl::OUString* pNewSource,
+ const table::CellRangeAddress* pNewDest )
+{
+ ScAreaLink* pLink = lcl_GetAreaLink(pDocShell, nPos);
+ if (pLink)
+ {
+ String aFile = pLink->GetFile();
+ String aFilter = pLink->GetFilter();
+ String aOptions = pLink->GetOptions();
+ String aSource = pLink->GetSource();
+ ScRange aDest = pLink->GetDestArea();
+
+ //! Undo fuer Loeschen
+ //! Undo zusammenfassen
+
+ SvxLinkManager* pLinkManager = pDocShell->GetDocument()->GetLinkManager();
+ pLinkManager->Remove(*pLink);
+ pLink = NULL; // bei Remove geloescht
+
+ BOOL bFitBlock = TRUE; // verschieben, wenn durch Update Groesse geaendert
+ if (pNewFile)
+ {
+ aFile = String( *pNewFile );
+ aFile = ScGlobal::GetAbsDocName( aFile, pDocShell ); //! in InsertAreaLink?
+ }
+ if (pNewFilter)
+ aFilter = String( *pNewFilter );
+ if (pNewOptions)
+ aOptions = String( *pNewOptions );
+ if (pNewSource)
+ aSource = String( *pNewSource );
+ if (pNewDest)
+ {
+ ScUnoConversion::FillRange( aDest, *pNewDest );
+ bFitBlock = FALSE; // neuer Bereich angegeben -> keine Inhalte verschieben
+ }
+
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.InsertAreaLink( aFile, aFilter, aOptions, aSource, aDest, bFitBlock, TRUE );
+ }
+}
+
+// XRefreshable
+
+void SAL_CALL ScAreaLinkObj::refresh() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAreaLink* pLink = lcl_GetAreaLink(pDocShell, nPos);
+ if (pLink)
+ pLink->Refresh( pLink->GetFile(), pLink->GetFilter(), pLink->GetSource() );
+}
+
+void SAL_CALL ScAreaLinkObj::addRefreshListener(
+ const uno::Reference<util::XRefreshListener >& xListener )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<util::XRefreshListener>* pObj =
+ new uno::Reference<util::XRefreshListener>( xListener );
+ aRefreshListeners.Insert( pObj, aRefreshListeners.Count() );
+
+ // hold one additional ref to keep this object alive as long as there are listeners
+ if ( aRefreshListeners.Count() == 1 )
+ acquire();
+}
+
+void SAL_CALL ScAreaLinkObj::removeRefreshListener(
+ const uno::Reference<util::XRefreshListener >& xListener )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = aRefreshListeners.Count();
+ for ( USHORT n=nCount; n--; )
+ {
+ uno::Reference<util::XRefreshListener>* pObj = aRefreshListeners[n];
+ if ( *pObj == xListener )
+ {
+ aRefreshListeners.DeleteAndDestroy( n );
+ if ( aRefreshListeners.Count() == 0 )
+ release(); // release ref for listeners
+ break;
+ }
+ }
+}
+
+void ScAreaLinkObj::Refreshed_Impl()
+{
+ lang::EventObject aEvent;
+ aEvent.Source = (cppu::OWeakObject*)this;
+ for ( USHORT n=0; n<aRefreshListeners.Count(); n++ )
+ (*aRefreshListeners[n])->refreshed( aEvent );
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScAreaLinkObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScAreaLinkObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+ rtl::OUString aValStr;
+ if ( aNameString.EqualsAscii( SC_UNONAME_LINKURL ) )
+ {
+ if ( aValue >>= aValStr )
+ setFileName( aValStr );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_FILTER ) )
+ {
+ if ( aValue >>= aValStr )
+ setFilter( aValStr );
+ }
+ else if ( aNameString.EqualsAscii( SC_UNONAME_FILTOPT ) )
+ {
+ if ( aValue >>= aValStr )
+ setFilterOptions( aValStr );
+ }
+}
+
+uno::Any SAL_CALL ScAreaLinkObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameString = aPropertyName;
+ uno::Any aRet;
+ if ( aNameString.EqualsAscii( SC_UNONAME_LINKURL ) )
+ aRet <<= getFileName();
+ else if ( aNameString.EqualsAscii( SC_UNONAME_FILTER ) )
+ aRet <<= getFilter();
+ else if ( aNameString.EqualsAscii( SC_UNONAME_FILTOPT ) )
+ aRet <<= getFilterOptions();
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScAreaLinkObj )
+
+// internal:
+
+rtl::OUString ScAreaLinkObj::getFileName(void) const
+{
+ ScUnoGuard aGuard;
+ rtl::OUString aRet;
+ ScAreaLink* pLink = lcl_GetAreaLink(pDocShell, nPos);
+ if (pLink)
+ aRet = pLink->GetFile();
+ return aRet;
+}
+
+void ScAreaLinkObj::setFileName(const rtl::OUString& rNewName)
+{
+ ScUnoGuard aGuard;
+ Modify_Impl( &rNewName, NULL, NULL, NULL, NULL );
+}
+
+rtl::OUString ScAreaLinkObj::getFilter(void) const
+{
+ ScUnoGuard aGuard;
+ rtl::OUString aRet;
+ ScAreaLink* pLink = lcl_GetAreaLink(pDocShell, nPos);
+ if (pLink)
+ aRet = pLink->GetFilter();
+ return aRet;
+}
+
+void ScAreaLinkObj::setFilter(const rtl::OUString& Filter)
+{
+ ScUnoGuard aGuard;
+ Modify_Impl( NULL, &Filter, NULL, NULL, NULL );
+}
+
+rtl::OUString ScAreaLinkObj::getFilterOptions(void) const
+{
+ ScUnoGuard aGuard;
+ rtl::OUString aRet;
+ ScAreaLink* pLink = lcl_GetAreaLink(pDocShell, nPos);
+ if (pLink)
+ aRet = pLink->GetOptions();
+ return aRet;
+}
+
+void ScAreaLinkObj::setFilterOptions(const rtl::OUString& FilterOptions)
+{
+ ScUnoGuard aGuard;
+ Modify_Impl( NULL, NULL, &FilterOptions, NULL, NULL );
+}
+
+// XAreaLink
+
+rtl::OUString SAL_CALL ScAreaLinkObj::getSourceArea() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ rtl::OUString aRet;
+ ScAreaLink* pLink = lcl_GetAreaLink(pDocShell, nPos);
+ if (pLink)
+ aRet = pLink->GetSource();
+ return aRet;
+}
+
+void SAL_CALL ScAreaLinkObj::setSourceArea( const rtl::OUString& aSourceArea )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ Modify_Impl( NULL, NULL, NULL, &aSourceArea, NULL );
+}
+
+table::CellRangeAddress SAL_CALL ScAreaLinkObj::getDestArea() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellRangeAddress aRet;
+ ScAreaLink* pLink = lcl_GetAreaLink(pDocShell, nPos);
+ if (pLink)
+ ScUnoConversion::FillAddress( aRet, pLink->GetDestArea() );
+ return aRet;
+}
+
+void SAL_CALL ScAreaLinkObj::setDestArea( const table::CellRangeAddress& aDestArea )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ Modify_Impl( NULL, NULL, NULL, NULL, &aDestArea );
+}
+
+//------------------------------------------------------------------------
+
+ScAreaLinksObj::ScAreaLinksObj(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScAreaLinksObj::~ScAreaLinksObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScAreaLinksObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XAreaLinks
+
+ScAreaLinkObj* ScAreaLinksObj::GetObjectByIndex_Impl(INT32 nIndex)
+{
+ if ( pDocShell && nIndex >= 0 && nIndex < getCount() )
+ return new ScAreaLinkObj( pDocShell, (USHORT)nIndex );
+
+ return NULL; // nicht gefunden
+}
+
+void SAL_CALL ScAreaLinksObj::insertAtPosition( const table::CellAddress& aDestPos,
+ const rtl::OUString& aFileName,
+ const rtl::OUString& aSourceArea,
+ const rtl::OUString& aFilter,
+ const rtl::OUString& aFilterOptions )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ String aFileStr = aFileName;
+ String aFilterStr = aFilter;
+ String aOptionStr = aFilterOptions;
+ String aSourceStr = aSourceArea;
+ ScAddress aDestAddr( aDestPos.Column, aDestPos.Row, aDestPos.Sheet );
+
+ aFileStr = ScGlobal::GetAbsDocName( aFileStr, pDocShell ); //! in InsertAreaLink ???
+
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.InsertAreaLink( aFileStr, aFilterStr, aOptionStr,
+ aSourceStr, ScRange(aDestAddr),
+ FALSE, TRUE ); // keine Inhalte verschieben
+ }
+}
+
+void SAL_CALL ScAreaLinksObj::removeByIndex( sal_Int32 nIndex ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAreaLink* pLink = lcl_GetAreaLink(pDocShell, nIndex);
+ if (pLink)
+ {
+ //! SetAddUndo oder so
+
+ SvxLinkManager* pLinkManager = pDocShell->GetDocument()->GetLinkManager();
+ pLinkManager->Remove(*pLink);
+ }
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScAreaLinksObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScAreaLinksObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ INT32 nAreaCount = 0;
+ if (pDocShell)
+ {
+ SvxLinkManager* pLinkManager = pDocShell->GetDocument()->GetLinkManager();
+ USHORT nTotalCount = pLinkManager->GetLinks().Count();
+ for (USHORT i=0; i<nTotalCount; i++)
+ {
+ SvBaseLink* pBase = *pLinkManager->GetLinks()[i];
+ if (pBase->ISA(ScAreaLink))
+ ++nAreaCount;
+ }
+ }
+ return nAreaCount;
+}
+
+uno::Any SAL_CALL ScAreaLinksObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XAreaLink> xLink = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xLink.is())
+ aAny <<= xLink;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScAreaLinksObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<sheet::XAreaLink>*)0);
+}
+
+sal_Bool SAL_CALL ScAreaLinksObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+//------------------------------------------------------------------------
+
+ScDDELinkObj::ScDDELinkObj(ScDocShell* pDocSh, const String& rA,
+ const String& rT, const String& rI) :
+ pDocShell( pDocSh ),
+ aAppl( rA ),
+ aTopic( rT ),
+ aItem( rI )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScDDELinkObj::~ScDDELinkObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScDDELinkObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ //! notify if links in document are changed
+ // UpdateRef is not needed here
+
+ if ( rHint.ISA( SfxSimpleHint ) )
+ {
+ if ( ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ pDocShell = NULL; // pointer is invalid
+ }
+ else if ( rHint.ISA( ScLinkRefreshedHint ) )
+ {
+ const ScLinkRefreshedHint& rLH = (const ScLinkRefreshedHint&) rHint;
+ if ( rLH.GetLinkType() == SC_LINKREFTYPE_DDE &&
+ rLH.GetDdeAppl() == aAppl &&
+ rLH.GetDdeTopic() == aTopic &&
+ rLH.GetDdeItem() == aItem ) //! mode is ignored
+ Refreshed_Impl();
+ }
+}
+
+// XNamed
+
+String lcl_BuildDDEName( const String& rAppl, const String& rTopic, const String& rItem )
+{
+ // Appl|Topic!Item (wie Excel)
+ String aRet = rAppl;
+ aRet += '|';
+ aRet += rTopic;
+ aRet += '!';
+ aRet += rItem;
+ return aRet;
+}
+
+rtl::OUString SAL_CALL ScDDELinkObj::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return lcl_BuildDDEName( aAppl, aTopic, aItem );
+}
+
+void SAL_CALL ScDDELinkObj::setName( const rtl::OUString& aName ) throw(uno::RuntimeException)
+{
+ // name can't be changed (formulas wouldn't find the link)
+ throw uno::RuntimeException();
+}
+
+// XDDELink
+
+rtl::OUString SAL_CALL ScDDELinkObj::getApplication() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ //! Test, ob Link noch im Dokument enthalten?
+
+ return aAppl;
+}
+
+rtl::OUString SAL_CALL ScDDELinkObj::getTopic() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ //! Test, ob Link noch im Dokument enthalten?
+
+ return aTopic;
+}
+
+rtl::OUString SAL_CALL ScDDELinkObj::getItem() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ //! Test, ob Link noch im Dokument enthalten?
+
+ return aItem;
+}
+
+// XRefreshable
+
+void SAL_CALL ScDDELinkObj::refresh() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ BOOL bOk = pDoc->UpdateDdeLink( aAppl, aTopic, aItem );
+ //! Fehler abfragen
+ }
+}
+
+void SAL_CALL ScDDELinkObj::addRefreshListener(
+ const uno::Reference<util::XRefreshListener >& xListener )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<util::XRefreshListener>* pObj =
+ new uno::Reference<util::XRefreshListener>( xListener );
+ aRefreshListeners.Insert( pObj, aRefreshListeners.Count() );
+
+ // hold one additional ref to keep this object alive as long as there are listeners
+ if ( aRefreshListeners.Count() == 1 )
+ acquire();
+}
+
+void SAL_CALL ScDDELinkObj::removeRefreshListener(
+ const uno::Reference<util::XRefreshListener >& xListener )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = aRefreshListeners.Count();
+ for ( USHORT n=nCount; n--; )
+ {
+ uno::Reference<util::XRefreshListener>* pObj = aRefreshListeners[n];
+ if ( *pObj == xListener )
+ {
+ aRefreshListeners.DeleteAndDestroy( n );
+ if ( aRefreshListeners.Count() == 0 )
+ release(); // release ref for listeners
+ break;
+ }
+ }
+}
+
+void ScDDELinkObj::Refreshed_Impl()
+{
+ lang::EventObject aEvent;
+ aEvent.Source = (cppu::OWeakObject*)this;
+ for ( USHORT n=0; n<aRefreshListeners.Count(); n++ )
+ (*aRefreshListeners[n])->refreshed( aEvent );
+}
+
+//------------------------------------------------------------------------
+
+ScDDELinksObj::ScDDELinksObj(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScDDELinksObj::~ScDDELinksObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScDDELinksObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XDDELinks
+
+ScDDELinkObj* ScDDELinksObj::GetObjectByIndex_Impl(INT32 nIndex)
+{
+ if (pDocShell)
+ {
+ String aAppl, aTopic, aItem;
+ if ( nIndex <= USHRT_MAX &&
+ pDocShell->GetDocument()->GetDdeLinkData( (USHORT)nIndex, aAppl, aTopic, aItem ) )
+ return new ScDDELinkObj( pDocShell, aAppl, aTopic, aItem );
+ }
+ return NULL;
+}
+
+ScDDELinkObj* ScDDELinksObj::GetObjectByName_Impl(const rtl::OUString& aName)
+{
+ if (pDocShell)
+ {
+ String aNamStr = aName;
+ String aAppl, aTopic, aItem;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nCount = pDoc->GetDdeLinkCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ pDoc->GetDdeLinkData( i, aAppl, aTopic, aItem );
+ if ( lcl_BuildDDEName(aAppl, aTopic, aItem) == aNamStr )
+ return new ScDDELinkObj( pDocShell, aAppl, aTopic, aItem );
+ }
+ }
+ return NULL;
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScDDELinksObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScDDELinksObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ INT32 nAreaCount = 0;
+ if (pDocShell)
+ nAreaCount = pDocShell->GetDocument()->GetDdeLinkCount();
+ return nAreaCount;
+}
+
+uno::Any SAL_CALL ScDDELinksObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XDDELink> xLink = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xLink.is())
+ aAny <<= xLink;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScDDELinksObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<sheet::XDDELink>*)0);
+}
+
+sal_Bool SAL_CALL ScDDELinksObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+uno::Any SAL_CALL ScDDELinksObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XDDELink> xLink = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ if (xLink.is())
+ aAny <<= xLink;
+ else
+ throw container::NoSuchElementException();
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScDDELinksObj::getElementNames() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ String aAppl, aTopic, aItem;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nCount = pDoc->GetDdeLinkCount();
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+
+ for (USHORT i=0; i<nCount; i++)
+ {
+ pDoc->GetDdeLinkData( i, aAppl, aTopic, aItem );
+ pAry[i] = lcl_BuildDDEName(aAppl, aTopic, aItem);
+ }
+ return aSeq;
+ }
+ return uno::Sequence<rtl::OUString>();
+}
+
+sal_Bool SAL_CALL ScDDELinksObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ String aNamStr = aName;
+ String aAppl, aTopic, aItem;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nCount = pDoc->GetDdeLinkCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ pDoc->GetDdeLinkData( i, aAppl, aTopic, aItem );
+ if ( lcl_BuildDDEName(aAppl, aTopic, aItem) == aNamStr )
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+
+
+
+
diff --git a/sc/source/ui/unoobj/makefile.mk b/sc/source/ui/unoobj/makefile.mk
new file mode 100644
index 000000000000..b1c3ad07f44f
--- /dev/null
+++ b/sc/source/ui/unoobj/makefile.mk
@@ -0,0 +1,138 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=unoobj
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+ENABLE_EXCEPTIONS=TRUE
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+CXXFILES = \
+ docuno.cxx \
+ servuno.cxx \
+ cellsuno.cxx \
+ textuno.cxx \
+ notesuno.cxx \
+ cursuno.cxx \
+ srchuno.cxx \
+ fielduno.cxx \
+ miscuno.cxx \
+ appluno.cxx \
+ nameuno.cxx \
+ viewuno.cxx \
+ datauno.cxx \
+ dapiuno.cxx \
+ chartuno.cxx \
+ styleuno.cxx \
+ afmtuno.cxx \
+ fmtuno.cxx \
+ linkuno.cxx \
+ targuno.cxx \
+ convuno.cxx \
+ editsrc.cxx \
+ unoguard.cxx
+
+SLOFILES = \
+ $(SLO)$/docuno.obj \
+ $(SLO)$/servuno.obj \
+ $(SLO)$/cellsuno.obj \
+ $(SLO)$/textuno.obj \
+ $(SLO)$/notesuno.obj \
+ $(SLO)$/cursuno.obj \
+ $(SLO)$/srchuno.obj \
+ $(SLO)$/fielduno.obj \
+ $(SLO)$/miscuno.obj \
+ $(SLO)$/appluno.obj \
+ $(SLO)$/nameuno.obj \
+ $(SLO)$/viewuno.obj \
+ $(SLO)$/datauno.obj \
+ $(SLO)$/dapiuno.obj \
+ $(SLO)$/chartuno.obj \
+ $(SLO)$/styleuno.obj \
+ $(SLO)$/afmtuno.obj \
+ $(SLO)$/fmtuno.obj \
+ $(SLO)$/linkuno.obj \
+ $(SLO)$/targuno.obj \
+ $(SLO)$/convuno.obj \
+ $(SLO)$/editsrc.obj \
+ $(SLO)$/unoguard.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/unoobj/miscuno.cxx b/sc/source/ui/unoobj/miscuno.cxx
new file mode 100644
index 000000000000..bc93a983cb68
--- /dev/null
+++ b/sc/source/ui/unoobj/miscuno.cxx
@@ -0,0 +1,387 @@
+/*************************************************************************
+ *
+ * $RCSfile: miscuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <tools/debug.hxx>
+#include <vos/xception.hxx>
+
+#include "miscuno.hxx"
+#include "unoguard.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+SC_SIMPLE_SERVICE_INFO( ScEmptyEnumeration, "ScEmptyEnumeration", "stardiv.unknown" )
+SC_SIMPLE_SERVICE_INFO( ScEmptyEnumerationAccess, "ScEmptyEnumerationAccess", "stardiv.unknown" )
+SC_SIMPLE_SERVICE_INFO( ScIndexEnumeration, "ScIndexEnumeration", "stardiv.unknown" )
+SC_SIMPLE_SERVICE_INFO( ScPrintSettingsObj, "ScPrintSettingsObj", "stardiv.unknown" )
+
+SC_SIMPLE_SERVICE_INFO( ScNameToIndexAccess, "ScNameToIndexAccess", "stardiv.unknown" )
+
+//------------------------------------------------------------------------
+
+// static
+uno::Reference<uno::XInterface> ScUnoHelpFunctions::AnyToInterface( const uno::Any& rAny )
+{
+ if ( rAny.getValueTypeClass() == uno::TypeClass_INTERFACE )
+ {
+ uno::Reference<uno::XInterface> xInterface;
+ rAny >>= xInterface;
+ return xInterface;
+ }
+ return uno::Reference<uno::XInterface>(); //! Exception?
+}
+
+// static
+BOOL ScUnoHelpFunctions::GetBoolProperty( const uno::Reference<beans::XPropertySet>& xProp,
+ const rtl::OUString& rName, BOOL bDefault )
+{
+ BOOL bRet = bDefault;
+ if ( xProp.is() )
+ {
+ TRY
+ {
+ uno::Any aAny = xProp->getPropertyValue( rName );
+ //! type conversion???
+ // operator >>= shouldn't be used for bool (?)
+ if ( aAny.getValueTypeClass() == uno::TypeClass_BOOLEAN )
+ {
+ //! safe way to get bool value from any???
+ bRet = *(sal_Bool*)aAny.getValue();
+ }
+ }
+ CATCH_ALL()
+ {
+ // keep default
+ }
+ END_CATCH
+ }
+ return bRet;
+}
+
+// static
+long ScUnoHelpFunctions::GetLongProperty( const uno::Reference<beans::XPropertySet>& xProp,
+ const rtl::OUString& rName, long nDefault )
+{
+ sal_Int32 nRet = nDefault;
+ if ( xProp.is() )
+ {
+ TRY
+ {
+ uno::Any aAny = xProp->getPropertyValue( rName );
+ //! type conversion???
+ aAny >>= nRet;
+ }
+ CATCH_ALL()
+ {
+ // keep default
+ }
+ END_CATCH
+ }
+ return nRet;
+}
+
+// static
+long ScUnoHelpFunctions::GetEnumProperty( const uno::Reference<beans::XPropertySet>& xProp,
+ const rtl::OUString& rName, long nDefault )
+{
+ sal_Int32 nRet = nDefault;
+ if ( xProp.is() )
+ {
+ TRY
+ {
+ uno::Any aAny = xProp->getPropertyValue( rName );
+
+ if ( aAny.getValueTypeClass() == uno::TypeClass_ENUM )
+ {
+ //! get enum value from any???
+ nRet = *(Enum*)aAny.getValue();
+ }
+ else
+ {
+ //! type conversion???
+ aAny >>= nRet;
+ }
+ }
+ CATCH_ALL()
+ {
+ // keep default
+ }
+ END_CATCH
+ }
+ return nRet;
+}
+
+// static
+BOOL ScUnoHelpFunctions::GetBoolFromAny( const uno::Any& aAny )
+{
+ if ( aAny.getValueTypeClass() == uno::TypeClass_BOOLEAN )
+ return *(sal_Bool*)aAny.getValue();
+ return FALSE;
+}
+
+// static
+INT16 ScUnoHelpFunctions::GetInt16FromAny( const uno::Any& aAny )
+{
+ sal_Int16 nRet;
+ if ( aAny >>= nRet )
+ return nRet;
+ return 0;
+}
+
+// static
+INT32 ScUnoHelpFunctions::GetEnumFromAny( const uno::Any& aAny )
+{
+ sal_Int32 nRet = 0;
+ if ( aAny.getValueTypeClass() == uno::TypeClass_ENUM )
+ nRet = *(Enum*)aAny.getValue();
+ else
+ aAny >>= nRet;
+ return nRet;
+}
+
+// static
+void ScUnoHelpFunctions::SetBoolInAny( uno::Any& rAny, BOOL bValue )
+{
+ rAny.setValue( &bValue, getBooleanCppuType() );
+}
+
+//------------------------------------------------------------------------
+
+ScIndexEnumeration::ScIndexEnumeration(const uno::Reference<container::XIndexAccess>& rInd) :
+ xIndex( rInd ),
+ nPos( 0 )
+{
+}
+
+ScIndexEnumeration::~ScIndexEnumeration()
+{
+}
+
+// XEnumeration
+
+sal_Bool SAL_CALL ScIndexEnumeration::hasMoreElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( nPos < xIndex->getCount() );
+}
+
+uno::Any SAL_CALL ScIndexEnumeration::nextElement() throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return xIndex->getByIndex(nPos++);
+}
+
+//------------------------------------------------------------------------
+
+ScEmptyEnumerationAccess::ScEmptyEnumerationAccess()
+{
+}
+
+ScEmptyEnumerationAccess::~ScEmptyEnumerationAccess()
+{
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScEmptyEnumerationAccess::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScEmptyEnumeration;
+}
+
+uno::Type SAL_CALL ScEmptyEnumerationAccess::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<uno::XInterface>*)0); // or what?
+}
+
+sal_Bool SAL_CALL ScEmptyEnumerationAccess::hasElements() throw(uno::RuntimeException)
+{
+ return FALSE;
+}
+
+//------------------------------------------------------------------------
+
+ScEmptyEnumeration::ScEmptyEnumeration()
+{
+}
+
+ScEmptyEnumeration::~ScEmptyEnumeration()
+{
+}
+
+// XEnumeration
+
+sal_Bool SAL_CALL ScEmptyEnumeration::hasMoreElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return FALSE;
+}
+
+uno::Any SAL_CALL ScEmptyEnumeration::nextElement() throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return uno::Any();
+}
+
+//------------------------------------------------------------------------
+
+ScNameToIndexAccess::ScNameToIndexAccess( const com::sun::star::uno::Reference<
+ com::sun::star::container::XNameAccess>& rNameObj ) :
+ xNameAccess( rNameObj )
+{
+ //! test for XIndexAccess interface at rNameObj, use that instead!
+
+ if ( xNameAccess.is() )
+ aNames = xNameAccess->getElementNames();
+}
+
+ScNameToIndexAccess::~ScNameToIndexAccess()
+{
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScNameToIndexAccess::getCount( ) throw(::com::sun::star::uno::RuntimeException)
+{
+ return aNames.getLength();
+}
+
+::com::sun::star::uno::Any SAL_CALL ScNameToIndexAccess::getByIndex( sal_Int32 nIndex )
+ throw(::com::sun::star::lang::IndexOutOfBoundsException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException)
+{
+ if ( xNameAccess.is() && nIndex >= 0 && nIndex < aNames.getLength() )
+ return xNameAccess->getByName( aNames.getConstArray()[nIndex] );
+
+ //! IndexOutOfBoundsException / ...
+ return uno::Any();
+}
+
+// XElementAccess
+
+::com::sun::star::uno::Type SAL_CALL ScNameToIndexAccess::getElementType( )
+ throw(::com::sun::star::uno::RuntimeException)
+{
+ if ( xNameAccess.is() )
+ return xNameAccess->getElementType();
+ else
+ return uno::Type();
+}
+
+sal_Bool SAL_CALL ScNameToIndexAccess::hasElements( ) throw(::com::sun::star::uno::RuntimeException)
+{
+ return getCount() > 0;
+}
+
+//------------------------------------------------------------------------
+
+ScPrintSettingsObj::ScPrintSettingsObj()
+{
+}
+
+ScPrintSettingsObj::~ScPrintSettingsObj()
+{
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScPrintSettingsObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ return NULL;
+}
+
+void SAL_CALL ScPrintSettingsObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ //! later...
+}
+
+uno::Any SAL_CALL ScPrintSettingsObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ //! later...
+ return uno::Any();
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScPrintSettingsObj )
+
+
+//------------------------------------------------------------------------
+
+
+
diff --git a/sc/source/ui/unoobj/nameuno.cxx b/sc/source/ui/unoobj/nameuno.cxx
new file mode 100644
index 000000000000..d830c25dbedc
--- /dev/null
+++ b/sc/source/ui/unoobj/nameuno.cxx
@@ -0,0 +1,957 @@
+/*************************************************************************
+ *
+ * $RCSfile: nameuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <svtools/smplhint.hxx>
+
+#include <com/sun/star/sheet/NamedRangeFlag.hpp>
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+
+using namespace ::com::sun::star;
+
+
+#include "nameuno.hxx"
+#include "miscuno.hxx"
+#include "cellsuno.hxx"
+#include "convuno.hxx"
+#include "targuno.hxx"
+#include "docsh.hxx"
+#include "docfunc.hxx"
+#include "rangenam.hxx"
+#include "namecrea.hxx" // NAME_TOP etc.
+#include "unoguard.hxx"
+#include "unonames.hxx"
+
+//------------------------------------------------------------------------
+
+const SfxItemPropertyMap* lcl_GetNamedRangeMap()
+{
+ static SfxItemPropertyMap aNamedRangeMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNO_LINKDISPBIT), 0, &getCppuType((uno::Reference<awt::XBitmap>*)0), beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNO_LINKDISPNAME), 0, &getCppuType((rtl::OUString*)0), beans::PropertyAttribute::READONLY, 0 },
+ {0,0,0,0}
+ };
+ return aNamedRangeMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+#define SCNAMEDRANGEOBJ_SERVICE "com.sun.star.sheet.NamedRange"
+
+SC_SIMPLE_SERVICE_INFO( ScLabelRangeObj, "ScLabelRangeObj", "com.sun.star.sheet.LabelRange" )
+SC_SIMPLE_SERVICE_INFO( ScLabelRangesObj, "ScLabelRangesObj", "com.sun.star.sheet.LabelRanges" )
+SC_SIMPLE_SERVICE_INFO( ScNamedRangesObj, "ScNamedRangesObj", "com.sun.star.sheet.NamedRanges" )
+
+//------------------------------------------------------------------------
+
+sal_Bool lcl_UserVisibleName( const ScRangeData* pData )
+{
+ //! als Methode an ScRangeData
+
+ return ( pData && !pData->HasType( RT_DATABASE ) && !pData->HasType( RT_SHARED ) );
+}
+
+//------------------------------------------------------------------------
+
+ScNamedRangeObj::ScNamedRangeObj(ScDocShell* pDocSh, const String& rNm) :
+ pDocShell( pDocSh ),
+ aName( rNm )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScNamedRangeObj::~ScNamedRangeObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScNamedRangeObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Ref-Update interessiert nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) && ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ pDocShell = NULL; // ungueltig geworden
+}
+
+// Hilfsfuntionen
+
+ScRangeData* ScNamedRangeObj::GetRangeData_Impl()
+{
+ ScRangeData* pRet = NULL;
+ if (pDocShell)
+ {
+ ScRangeName* pNames = pDocShell->GetDocument()->GetRangeName();
+ if (pNames)
+ {
+ sal_uInt16 nPos = 0;
+ if (pNames->SearchName( aName, nPos ))
+ pRet = (*pNames)[nPos];
+ }
+ }
+ return pRet;
+}
+
+// sheet::XNamedRange
+
+void ScNamedRangeObj::Modify_Impl( const String* pNewName, const String* pNewContent,
+ const ScAddress* pNewPos, const sal_uInt16* pNewType )
+{
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRangeName* pNames = pDoc->GetRangeName();
+ if (pNames)
+ {
+ ScRangeName aNewRanges( *pNames );
+ sal_uInt16 nPos = 0;
+ if (aNewRanges.SearchName( aName, nPos ))
+ {
+ ScRangeData* pOld = (*pNames)[nPos];
+
+ String aInsName = pOld->GetName();
+ if (pNewName)
+ aInsName = *pNewName;
+ String aContent; // Inhalt immer ueber Strings ->
+ pOld->GetEnglishSymbol(aContent); // keine Probleme mit geaenderter Position etc.
+ if (pNewContent)
+ aContent = *pNewContent;
+ ScAddress aPos = pOld->GetPos();
+ if (pNewPos)
+ aPos = *pNewPos;
+ sal_uInt16 nType = pOld->GetType();
+ if (pNewType)
+ nType = *pNewType;
+
+ ScRangeData* pNew = new ScRangeData( pDoc, aInsName, aContent,
+ aPos.Col(), aPos.Row(), aPos.Tab(),
+ nType, sal_True );
+ aNewRanges.AtFree( nPos );
+ if ( aNewRanges.Insert(pNew) )
+ {
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.ModifyRangeNames( aNewRanges, sal_True );
+
+ aName = aInsName; //! broadcast?
+ }
+ else
+ delete pNew; //! uno::Exception/Fehler oder so
+ }
+ }
+ }
+}
+
+
+rtl::OUString SAL_CALL ScNamedRangeObj::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aName;
+}
+
+void SAL_CALL ScNamedRangeObj::setName( const rtl::OUString& aNewName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ //! Formeln anpassen ?????
+
+ String aNewStr = aNewName;
+ Modify_Impl( &aNewStr, NULL, NULL, NULL );
+
+ if ( aName != aNewStr ) // some error occured...
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+rtl::OUString SAL_CALL ScNamedRangeObj::getContent() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aContent;
+ ScRangeData* pData = GetRangeData_Impl();
+ if (pData)
+ pData->GetEnglishSymbol(aContent);
+ return aContent;
+}
+
+void SAL_CALL ScNamedRangeObj::setContent( const rtl::OUString& aContent )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aContStr = aContent;
+ Modify_Impl( NULL, &aContStr, NULL, NULL );
+}
+
+table::CellAddress SAL_CALL ScNamedRangeObj::getReferencePosition()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAddress aPos;
+ ScRangeData* pData = GetRangeData_Impl();
+ if (pData)
+ aPos = pData->GetPos();
+ table::CellAddress aAddress;
+ aAddress.Column = aPos.Col();
+ aAddress.Row = aPos.Row();
+ aAddress.Sheet = aPos.Tab();
+ return aAddress;
+}
+
+void SAL_CALL ScNamedRangeObj::setReferencePosition( const table::CellAddress& aReferencePosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAddress aPos( aReferencePosition.Column, aReferencePosition.Row, aReferencePosition.Sheet );
+ Modify_Impl( NULL, NULL, &aPos, NULL );
+}
+
+sal_Int32 SAL_CALL ScNamedRangeObj::getType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ sal_Int32 nType=0;
+ ScRangeData* pData = GetRangeData_Impl();
+ if (pData)
+ {
+ // interne RT_* Flags werden weggelassen
+
+ if ( pData->HasType(RT_CRITERIA) ) nType |= sheet::NamedRangeFlag::FILTER_CRITERIA;
+ if ( pData->HasType(RT_PRINTAREA) ) nType |= sheet::NamedRangeFlag::PRINT_AREA;
+ if ( pData->HasType(RT_COLHEADER) ) nType |= sheet::NamedRangeFlag::COLUMN_HEADER;
+ if ( pData->HasType(RT_ROWHEADER) ) nType |= sheet::NamedRangeFlag::ROW_HEADER;
+ }
+ return nType;
+}
+
+void SAL_CALL ScNamedRangeObj::setType( sal_Int32 nUnoType ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ sal_uInt16 nNewType = RT_NAME;
+ if ( nUnoType & sheet::NamedRangeFlag::FILTER_CRITERIA ) nNewType |= RT_CRITERIA;
+ if ( nUnoType & sheet::NamedRangeFlag::PRINT_AREA ) nNewType |= RT_PRINTAREA;
+ if ( nUnoType & sheet::NamedRangeFlag::COLUMN_HEADER ) nNewType |= RT_COLHEADER;
+ if ( nUnoType & sheet::NamedRangeFlag::ROW_HEADER ) nNewType |= RT_ROWHEADER;
+
+ Modify_Impl( NULL, NULL, NULL, &nNewType );
+}
+
+// XCellRangeSource
+
+uno::Reference<table::XCellRange> SAL_CALL ScNamedRangeObj::getReferredCells()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRange aRange;
+ ScRangeData* pData = GetRangeData_Impl();
+ if ( pData && pData->IsReference( aRange ) )
+ {
+ //! static Funktion um ScCellObj/ScCellRangeObj zu erzeugen am ScCellRangeObj ???
+
+ if ( aRange.aStart == aRange.aEnd )
+ return new ScCellObj( pDocShell, aRange.aStart );
+ else
+ return new ScCellRangeObj( pDocShell, aRange );
+ }
+ return NULL;
+}
+
+// beans::XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScNamedRangeObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo( lcl_GetNamedRangeMap() );
+ return aRef;
+}
+
+void SAL_CALL ScNamedRangeObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ // everything is read-only
+}
+
+uno::Any SAL_CALL ScNamedRangeObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Any aRet;
+ String aString = aPropertyName;
+ if ( aString.EqualsAscii( SC_UNO_LINKDISPBIT ) )
+ {
+ // no target bitmaps for individual entries (would be all equal)
+ // ScLinkTargetTypeObj::SetLinkTargetBitmap( aRet, SC_LINKTARGETTYPE_RANGENAME );
+ }
+ else if ( aString.EqualsAscii( SC_UNO_LINKDISPNAME ) )
+ aRet <<= rtl::OUString( aName );
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScNamedRangeObj )
+
+// lang::XServiceInfo
+
+rtl::OUString SAL_CALL ScNamedRangeObj::getImplementationName() throw(uno::RuntimeException)
+{
+ return rtl::OUString::createFromAscii( "ScNamedRangeObj" );
+}
+
+sal_Bool SAL_CALL ScNamedRangeObj::supportsService( const rtl::OUString& rServiceName )
+ throw(uno::RuntimeException)
+{
+ String aServiceStr( rServiceName );
+ return aServiceStr.EqualsAscii( SCNAMEDRANGEOBJ_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCLINKTARGET_SERVICE );
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScNamedRangeObj::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ uno::Sequence<rtl::OUString> aRet(2);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCNAMEDRANGEOBJ_SERVICE );
+ pArray[1] = rtl::OUString::createFromAscii( SCLINKTARGET_SERVICE );
+ return aRet;
+}
+
+//------------------------------------------------------------------------
+
+ScNamedRangesObj::ScNamedRangesObj(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScNamedRangesObj::~ScNamedRangesObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScNamedRangesObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// sheet::XNamedRanges
+
+ScNamedRangeObj* ScNamedRangesObj::GetObjectByIndex_Impl(sal_uInt16 nIndex)
+{
+ if (pDocShell)
+ {
+ ScRangeName* pNames = pDocShell->GetDocument()->GetRangeName();
+ if (pNames)
+ {
+ sal_uInt16 nCount = pNames->GetCount();
+ sal_uInt16 nPos = 0;
+ for (sal_uInt16 i=0; i<nCount; i++)
+ {
+ ScRangeData* pData = (*pNames)[i];
+ if (lcl_UserVisibleName(pData)) // interne weglassen
+ {
+ if ( nPos == nIndex )
+ return new ScNamedRangeObj( pDocShell, pData->GetName() );
+ ++nPos;
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+ScNamedRangeObj* ScNamedRangesObj::GetObjectByName_Impl(const rtl::OUString& aName)
+{
+ if ( pDocShell && hasByName(aName) )
+ {
+ String aString = aName;
+ return new ScNamedRangeObj( pDocShell, aString );
+ }
+ return NULL;
+}
+
+void SAL_CALL ScNamedRangesObj::addNewByName( const rtl::OUString& aName,
+ const rtl::OUString& aContent, const table::CellAddress& aPosition,
+ sal_Int32 nUnoType ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameStr = aName;
+ String aContStr = aContent;
+ ScAddress aPos( aPosition.Column, aPosition.Row, aPosition.Sheet );
+
+ sal_uInt16 nNewType = RT_NAME;
+ if ( nUnoType & sheet::NamedRangeFlag::FILTER_CRITERIA ) nNewType |= RT_CRITERIA;
+ if ( nUnoType & sheet::NamedRangeFlag::PRINT_AREA ) nNewType |= RT_PRINTAREA;
+ if ( nUnoType & sheet::NamedRangeFlag::COLUMN_HEADER ) nNewType |= RT_COLHEADER;
+ if ( nUnoType & sheet::NamedRangeFlag::ROW_HEADER ) nNewType |= RT_ROWHEADER;
+
+ BOOL bDone = FALSE;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRangeName* pNames = pDoc->GetRangeName();
+ if (pNames)
+ {
+ ScRangeName aNewRanges( *pNames );
+ ScRangeData* pNew = new ScRangeData( pDoc, aNameStr, aContStr,
+ aPos.Col(), aPos.Row(), aPos.Tab(),
+ nNewType, sal_True );
+ if ( aNewRanges.Insert(pNew) )
+ {
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.ModifyRangeNames( aNewRanges, sal_True );
+ bDone = TRUE;
+ }
+ else
+ delete pNew;
+ }
+ }
+
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+void SAL_CALL ScNamedRangesObj::addNewFromTitles( const table::CellRangeAddress& aSource,
+ sheet::Border aBorder ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ //! das darf kein enum sein, weil mehrere Bits gesetzt sein koennen !!!
+
+ sal_Bool bTop = ( aBorder == sheet::Border_TOP );
+ sal_Bool bLeft = ( aBorder == sheet::Border_LEFT );
+ sal_Bool bBottom = ( aBorder == sheet::Border_BOTTOM );
+ sal_Bool bRight = ( aBorder == sheet::Border_RIGHT );
+
+ ScRange aRange;
+ ScUnoConversion::FillRange( aRange, aSource );
+
+ sal_uInt16 nFlags = 0;
+ if (bTop) nFlags |= NAME_TOP;
+ if (bLeft) nFlags |= NAME_LEFT;
+ if (bBottom) nFlags |= NAME_BOTTOM;
+ if (bRight) nFlags |= NAME_RIGHT;
+
+ if (nFlags)
+ {
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.CreateNames( aRange, nFlags, sal_True );
+ }
+}
+
+void SAL_CALL ScNamedRangesObj::removeByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ if (pDocShell)
+ {
+ ScRangeName* pNames = pDocShell->GetDocument()->GetRangeName();
+ if (pNames)
+ {
+ String aString = aName;
+ sal_uInt16 nPos = 0;
+ if (pNames->SearchName( aString, nPos ))
+ if ( lcl_UserVisibleName((*pNames)[nPos]) )
+ {
+ ScRangeName aNewRanges(*pNames);
+ aNewRanges.AtFree(nPos);
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.ModifyRangeNames( aNewRanges, sal_True );
+ bDone = TRUE;
+ }
+ }
+ }
+
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+void SAL_CALL ScNamedRangesObj::outputList( const table::CellAddress& aOutputPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScAddress aPos( aOutputPosition.Column, aOutputPosition.Row, aOutputPosition.Sheet );
+ if (pDocShell)
+ {
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.InsertNameList( aPos, sal_True );
+ }
+}
+
+// container::XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScNamedRangesObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// container::XIndexAccess
+
+sal_Int32 SAL_CALL ScNamedRangesObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ long nRet = 0;
+ if (pDocShell)
+ {
+ ScRangeName* pNames = pDocShell->GetDocument()->GetRangeName();
+ if (pNames)
+ {
+ sal_uInt16 nCount = pNames->GetCount();
+ for (sal_uInt16 i=0; i<nCount; i++)
+ if (lcl_UserVisibleName( (*pNames)[i] )) // interne weglassen
+ ++nRet;
+ }
+ }
+ return nRet;
+}
+
+uno::Any SAL_CALL ScNamedRangesObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference< sheet::XNamedRange > xRange = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if ( xRange.is() )
+ aAny <<= xRange;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScNamedRangesObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ::getCppuType((const uno::Reference< sheet::XNamedRange >*)0); // muss zu getByIndex passen
+}
+
+sal_Bool SAL_CALL ScNamedRangesObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+uno::Any SAL_CALL ScNamedRangesObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference< sheet::XNamedRange > xRange = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ if ( xRange.is() )
+ aAny <<= xRange;
+ else
+ throw container::NoSuchElementException();
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScNamedRangesObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScRangeName* pNames = pDocShell->GetDocument()->GetRangeName();
+ if (pNames)
+ {
+ long nVisCount = getCount(); // Namen mit lcl_UserVisibleName
+ uno::Sequence<rtl::OUString> aSeq(nVisCount);
+ rtl::OUString* pAry = aSeq.getArray();
+
+ sal_uInt16 nCount = pNames->GetCount();
+ sal_uInt16 nVisPos = 0;
+ for (sal_uInt16 i=0; i<nCount; i++)
+ {
+ ScRangeData* pData = (*pNames)[i];
+ if ( lcl_UserVisibleName(pData) )
+ pAry[nVisPos++] = pData->GetName();
+ }
+// DBG_ASSERT(nVisPos == nVisCount, "huch, verzaehlt?");
+ return aSeq;
+ }
+ }
+ return uno::Sequence<rtl::OUString>(0);
+}
+
+sal_Bool SAL_CALL ScNamedRangesObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScRangeName* pNames = pDocShell->GetDocument()->GetRangeName();
+ if (pNames)
+ {
+ String aString = aName;
+ sal_uInt16 nPos = 0;
+ if (pNames->SearchName( aString, nPos ))
+ if ( lcl_UserVisibleName((*pNames)[nPos]) )
+ return sal_True;
+ }
+ }
+ return sal_False;
+}
+
+//------------------------------------------------------------------------
+
+ScLabelRangeObj::ScLabelRangeObj(ScDocShell* pDocSh, sal_Bool bCol, const ScRange& rR) :
+ pDocShell( pDocSh ),
+ bColumn( bCol ),
+ aRange( rR )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScLabelRangeObj::~ScLabelRangeObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScLabelRangeObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ //! Ref-Update !!!
+
+ if ( rHint.ISA( SfxSimpleHint ) && ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ pDocShell = NULL; // ungueltig geworden
+}
+
+// Hilfsfuntionen
+
+ScRangePair* ScLabelRangeObj::GetData_Impl()
+{
+ ScRangePair* pRet = NULL;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRangePairList* pList = bColumn ? pDoc->GetColNameRanges() : pDoc->GetRowNameRanges();
+ if (pList)
+ pRet = pList->Find( aRange );
+ }
+ return pRet;
+}
+
+void ScLabelRangeObj::Modify_Impl( const ScRange* pLabel, const ScRange* pData )
+{
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRangePairList* pOldList = bColumn ? pDoc->GetColNameRanges() : pDoc->GetRowNameRanges();
+ if (pOldList)
+ {
+ ScRangePairListRef xNewList = pOldList->Clone();
+ ScRangePair* pEntry = xNewList->Find( aRange );
+ if (pEntry)
+ {
+ xNewList->Remove( pEntry ); // nur aus der Liste entfernt, nicht geloescht
+
+ if ( pLabel )
+ pEntry->GetRange(0) = *pLabel;
+ if ( pData )
+ pEntry->GetRange(1) = *pData;
+
+ xNewList->Join( *pEntry );
+ delete pEntry;
+
+ if (bColumn)
+ pDoc->GetColNameRangesRef() = xNewList;
+ else
+ pDoc->GetRowNameRangesRef() = xNewList;
+
+ pDoc->CompileColRowNameFormula();
+ pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID );
+ pDocShell->SetDocumentModified();
+
+ //! Undo ?!?! (hier und aus Dialog)
+
+ if ( pLabel )
+ aRange = *pLabel; // Objekt anpassen, um Range wiederzufinden
+ }
+ }
+ }
+}
+
+// sheet::XLabelRange
+
+table::CellRangeAddress SAL_CALL ScLabelRangeObj::getLabelArea()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellRangeAddress aRet;
+ ScRangePair* pData = GetData_Impl();
+ if (pData)
+ ScUnoConversion::FillAddress( aRet, pData->GetRange(0) );
+ return aRet;
+}
+
+void SAL_CALL ScLabelRangeObj::setLabelArea( const table::CellRangeAddress& aLabelArea )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRange aLabelRange;
+ ScUnoConversion::FillRange( aLabelRange, aLabelArea );
+ Modify_Impl( &aLabelRange, NULL );
+}
+
+table::CellRangeAddress SAL_CALL ScLabelRangeObj::getDataArea()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellRangeAddress aRet;
+ ScRangePair* pData = GetData_Impl();
+ if (pData)
+ ScUnoConversion::FillAddress( aRet, pData->GetRange(1) );
+ return aRet;
+}
+
+void SAL_CALL ScLabelRangeObj::setDataArea( const table::CellRangeAddress& aDataArea )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScRange aDataRange;
+ ScUnoConversion::FillRange( aDataRange, aDataArea );
+ Modify_Impl( NULL, &aDataRange );
+}
+
+//------------------------------------------------------------------------
+
+ScLabelRangesObj::ScLabelRangesObj(ScDocShell* pDocSh, sal_Bool bCol) :
+ pDocShell( pDocSh ),
+ bColumn( bCol )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScLabelRangesObj::~ScLabelRangesObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScLabelRangesObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// sheet::XLabelRanges
+
+ScLabelRangeObj* ScLabelRangesObj::GetObjectByIndex_Impl(sal_uInt16 nIndex)
+{
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRangePairList* pList = bColumn ? pDoc->GetColNameRanges() : pDoc->GetRowNameRanges();
+ if ( pList && nIndex < pList->Count() )
+ {
+ ScRangePair* pData = pList->GetObject(nIndex);
+ if (pData)
+ return new ScLabelRangeObj( pDocShell, bColumn, pData->GetRange(0) );
+ }
+ }
+ return NULL;
+}
+
+void SAL_CALL ScLabelRangesObj::addNew( const table::CellRangeAddress& aLabelArea,
+ const table::CellRangeAddress& aDataArea )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRangePairList* pOldList = bColumn ? pDoc->GetColNameRanges() : pDoc->GetRowNameRanges();
+ if (pOldList)
+ {
+ ScRangePairListRef xNewList = pOldList->Clone();
+
+ ScRange aLabelRange;
+ ScRange aDataRange;
+ ScUnoConversion::FillRange( aLabelRange, aLabelArea );
+ ScUnoConversion::FillRange( aDataRange, aDataArea );
+ xNewList->Join( ScRangePair( aLabelRange, aDataRange ) );
+
+ if (bColumn)
+ pDoc->GetColNameRangesRef() = xNewList;
+ else
+ pDoc->GetRowNameRangesRef() = xNewList;
+
+ pDoc->CompileColRowNameFormula();
+ pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID );
+ pDocShell->SetDocumentModified();
+
+ //! Undo ?!?! (hier und aus Dialog)
+ }
+ }
+}
+
+void SAL_CALL ScLabelRangesObj::removeByIndex( sal_Int32 nIndex )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRangePairList* pOldList = bColumn ? pDoc->GetColNameRanges() : pDoc->GetRowNameRanges();
+
+ if ( pOldList && nIndex < pOldList->Count() )
+ {
+ ScRangePairListRef xNewList = pOldList->Clone();
+
+ ScRangePair* pEntry = xNewList->GetObject( nIndex );
+ if (pEntry)
+ {
+ xNewList->Remove( pEntry );
+ delete pEntry;
+
+ if (bColumn)
+ pDoc->GetColNameRangesRef() = xNewList;
+ else
+ pDoc->GetRowNameRangesRef() = xNewList;
+
+ pDoc->CompileColRowNameFormula();
+ pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID );
+ pDocShell->SetDocumentModified();
+ bDone = TRUE;
+
+ //! Undo ?!?! (hier und aus Dialog)
+ }
+ }
+ }
+ if (!bDone)
+ throw uno::RuntimeException(); // no other exceptions specified
+}
+
+// container::XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScLabelRangesObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// container::XIndexAccess
+
+sal_Int32 SAL_CALL ScLabelRangesObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pDocShell)
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScRangePairList* pList = bColumn ? pDoc->GetColNameRanges() : pDoc->GetRowNameRanges();
+ if (pList)
+ return pList->Count();
+ }
+ return 0;
+}
+
+uno::Any SAL_CALL ScLabelRangesObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference< sheet::XLabelRange > xRange = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if ( xRange.is() )
+ aAny <<= xRange;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScLabelRangesObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ::getCppuType((const uno::Reference< sheet::XLabelRange >*)0); // muss zu getByIndex passen
+
+}
+
+sal_Bool SAL_CALL ScLabelRangesObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+//------------------------------------------------------------------------
+
+
+
diff --git a/sc/source/ui/unoobj/notesuno.cxx b/sc/source/ui/unoobj/notesuno.cxx
new file mode 100644
index 000000000000..b3d6c49662c2
--- /dev/null
+++ b/sc/source/ui/unoobj/notesuno.cxx
@@ -0,0 +1,358 @@
+/*************************************************************************
+ *
+ * $RCSfile: notesuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+#ifndef _SFXSMPLHINT_HXX //autogen
+#include <svtools/smplhint.hxx>
+#endif
+
+#pragma hdrstop
+
+#include "rangelst.hxx"
+#include <svx/unotext.hxx>
+
+#include "notesuno.hxx"
+#include "textuno.hxx"
+#include "cellsuno.hxx" // getParent
+#include "docsh.hxx"
+#include "docfunc.hxx"
+#include "hints.hxx"
+#include "editsrc.hxx"
+#include "miscuno.hxx"
+
+// setVisible:
+#include <svx/svdundo.hxx>
+#include "drwlayer.hxx"
+#include "detfunc.hxx"
+#include "undocell.hxx"
+#include "unoguard.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+// keine Properties fuer Text in Notizen
+const SfxItemPropertyMap* lcl_GetAnnotationPropertyMap()
+{
+ static SfxItemPropertyMap aAnnotationPropertyMap_Impl[] =
+ {
+ {0,0,0,0}
+ };
+ return aAnnotationPropertyMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+SC_SIMPLE_SERVICE_INFO( ScAnnotationObj, "ScAnnotationObj", "com.sun.star.sheet.CellAnnotation" )
+
+//------------------------------------------------------------------------
+
+ScAnnotationObj::ScAnnotationObj(ScDocShell* pDocSh, const ScAddress& rPos) :
+ pDocShell( pDocSh ),
+ aCellPos( rPos ),
+ pUnoText( NULL )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+
+ // pUnoText is allocated on demand (GetUnoText)
+ // can't be aggregated because getString/setString is handled here
+}
+
+SvxUnoText& ScAnnotationObj::GetUnoText()
+{
+ if (!pUnoText)
+ {
+ ScAnnotationEditSource aEditSource( pDocShell, aCellPos );
+ pUnoText = new SvxUnoText( &aEditSource, lcl_GetAnnotationPropertyMap(),
+ uno::Reference<text::XText>() );
+ pUnoText->acquire();
+ }
+ return *pUnoText;
+}
+
+ScAnnotationObj::~ScAnnotationObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+
+ if (pUnoText)
+ pUnoText->release();
+}
+
+void ScAnnotationObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( ScUpdateRefHint ) )
+ {
+ const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
+
+ //! Ref-Update
+ }
+ else if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+
+// XChild
+
+uno::Reference<uno::XInterface> SAL_CALL ScAnnotationObj::getParent() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ // Parent der Notiz ist die zugehoerige Zelle
+ //! existierendes Objekt finden und zurueckgeben ???
+
+ if (pDocShell)
+ return (cppu::OWeakObject*)new ScCellObj( pDocShell, aCellPos );
+
+ return NULL;
+}
+
+void SAL_CALL ScAnnotationObj::setParent( const uno::Reference<uno::XInterface>& Parent )
+ throw(lang::NoSupportException, uno::RuntimeException)
+{
+ // hamma nich
+ //! Exception oder so ??!
+}
+
+// XSimpleText
+
+uno::Reference<text::XTextCursor> SAL_CALL ScAnnotationObj::createTextCursor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ // Notizen brauchen keine Extrawurst
+ return GetUnoText().createTextCursor();
+}
+
+uno::Reference<text::XTextCursor> SAL_CALL ScAnnotationObj::createTextCursorByRange(
+ const uno::Reference<text::XTextRange>& aTextPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ // Notizen brauchen keine Extrawurst
+ return GetUnoText().createTextCursorByRange(aTextPosition);
+}
+
+rtl::OUString SAL_CALL ScAnnotationObj::getString() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScPostIt aNote;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->GetNote( aCellPos.Col(), aCellPos.Row(), aCellPos.Tab(), aNote );
+ }
+ return aNote.GetText();
+}
+
+void SAL_CALL ScAnnotationObj::setString( const rtl::OUString& aText ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ String aString = aText;
+ ScDocFunc aFunc(*pDocShell);
+ aFunc.SetNoteText( aCellPos, aString, TRUE );
+
+ // don't create pUnoText here if not there
+ if (pUnoText)
+ pUnoText->SetSelection(ESelection( 0,0, 0,aString.Len() ));
+ }
+}
+
+void SAL_CALL ScAnnotationObj::insertString( const uno::Reference<text::XTextRange>& xRange,
+ const rtl::OUString& aString, sal_Bool bAbsorb )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ GetUnoText().insertString( xRange, aString, bAbsorb );
+}
+
+void SAL_CALL ScAnnotationObj::insertControlCharacter( const uno::Reference<text::XTextRange>& xRange,
+ sal_Int16 nControlCharacter, sal_Bool bAbsorb )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ GetUnoText().insertControlCharacter( xRange, nControlCharacter, bAbsorb );
+}
+
+uno::Reference<text::XText> SAL_CALL ScAnnotationObj::getText() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetUnoText().getText();
+}
+
+uno::Reference<text::XTextRange> SAL_CALL ScAnnotationObj::getStart() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetUnoText().getStart();
+}
+
+uno::Reference<text::XTextRange> SAL_CALL ScAnnotationObj::getEnd() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return GetUnoText().getEnd();
+}
+
+// XSheetAnnotation
+
+table::CellAddress SAL_CALL ScAnnotationObj::getPosition() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellAddress aAdr;
+ aAdr.Sheet = aCellPos.Tab();
+ aAdr.Column = aCellPos.Col();
+ aAdr.Row = aCellPos.Row();
+ return aAdr;
+}
+
+rtl::OUString SAL_CALL ScAnnotationObj::getAuthor() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScPostIt aNote;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->GetNote( aCellPos.Col(), aCellPos.Row(), aCellPos.Tab(), aNote );
+ }
+ return aNote.GetAuthor();
+}
+
+rtl::OUString SAL_CALL ScAnnotationObj::getDate() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScPostIt aNote;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->GetNote( aCellPos.Col(), aCellPos.Row(), aCellPos.Tab(), aNote );
+ }
+ return aNote.GetDate();
+}
+
+sal_Bool SAL_CALL ScAnnotationObj::getIsVisible() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScPostIt aNote;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ pDoc->GetNote( aCellPos.Col(), aCellPos.Row(), aCellPos.Tab(), aNote );
+ }
+ return aNote.IsShown();
+}
+
+void SAL_CALL ScAnnotationObj::setIsVisible( sal_Bool bIsVisible ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ BOOL bDone = FALSE;
+ if ( pDocShell )
+ {
+ //! Funktion an docfunc oder so
+
+ BOOL bSet = bIsVisible ? TRUE : FALSE;
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nCol = aCellPos.Col();
+ USHORT nRow = aCellPos.Row();
+ USHORT nTab = aCellPos.Tab();
+ ScPostIt aNote;
+ if ( pDoc->GetNote( nCol, nRow, nTab, aNote ) )
+ {
+ BOOL bHad = pDoc->HasNoteObject( nCol, nRow, nTab );
+ if ( bHad != bSet )
+ {
+ pDocShell->MakeDrawLayer();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+
+ pModel->BeginCalcUndo();
+ ScDetectiveFunc aFunc( pDoc,nTab );
+ if ( bSet )
+ bDone = ( aFunc.ShowComment( nCol, nRow, FALSE ) != NULL );
+ else
+ bDone = aFunc.HideComment( nCol, nRow );
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (bDone)
+ {
+ aNote.SetShown( bSet );
+ pDoc->SetNote( nCol, nRow, nTab, aNote );
+ if (pUndo)
+ pDocShell->GetUndoManager()->AddUndoAction(
+ new ScUndoNote( pDocShell, bSet, aCellPos, pUndo ) );
+
+ pDocShell->SetDocumentModified();
+ }
+ else
+ delete pUndo;
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+
+
+
diff --git a/sc/source/ui/unoobj/servuno.cxx b/sc/source/ui/unoobj/servuno.cxx
new file mode 100644
index 000000000000..43f397c03fe4
--- /dev/null
+++ b/sc/source/ui/unoobj/servuno.cxx
@@ -0,0 +1,250 @@
+/*************************************************************************
+ *
+ * $RCSfile: servuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <tools/debug.hxx>
+#include <svx/unofill.hxx>
+
+#include "servuno.hxx"
+#include "cellsuno.hxx"
+#include "fielduno.hxx"
+#include "styleuno.hxx"
+#include "afmtuno.hxx"
+#include "docsh.hxx"
+#include "drwlayer.hxx"
+
+using namespace ::com::sun::star;
+
+
+//------------------------------------------------------------------------
+
+static const sal_Char* __FAR_DATA aProvNames[SC_SERVICE_COUNT] =
+ {
+ "com.sun.star.sheet.Spreadsheet", // SC_SERVICE_SHEET
+ "com.sun.star.text.TextField.URL", // SC_SERVICE_URLFIELD
+ "com.sun.star.text.TextField.PageNumber", // SC_SERVICE_PAGEFIELD
+ "com.sun.star.text.TextField.PageCount", // SC_SERVICE_PAGESFIELD
+ "com.sun.star.text.TextField.Date", // SC_SERVICE_DATEFIELD
+ "com.sun.star.text.TextField.Time", // SC_SERVICE_TIMEFIELD
+ "com.sun.star.text.TextField.DocumentTitle",// SC_SERVICE_TITLEFIELD
+ "com.sun.star.text.TextField.FileName", // SC_SERVICE_FILEFIELD
+ "com.sun.star.text.TextField.SheetName", // SC_SERVICE_SHEETFIELD
+ "com.sun.star.style.CellStyle", // SC_SERVICE_CELLSTYLE
+ "com.sun.star.style.PageStyle", // SC_SERVICE_PAGESTYLE
+ "com.sun.star.sheet.TableAutoFormat", // SC_SERVICE_AUTOFORMAT
+ "com.sun.star.sheet.SheetCellRanges", // SC_SERVICE_CELLRANGES
+ "com.sun.star.drawing.GradientTable", // SC_SERVICE_GRADTAB
+ "com.sun.star.drawing.HatchTable", // SC_SERVICE_HATCHTAB
+ "com.sun.star.drawing.BitmapTable", // SC_SERVICE_BITMAPTAB
+ "com.sun.star.drawing.TransparencyGradientTable", // SC_SERVICE_TRGRADTAB
+ "com.sun.star.drawing.MarkerTable", // SC_SERVICE_MARKERTAB
+ "com.sun.star.drawing.DashTable" // SC_SERVICE_DASHTAB
+ };
+
+//
+// old service names that were in 567 still work in createInstance,
+// in case some macro is still using them
+//
+
+static const sal_Char* __FAR_DATA aOldNames[SC_SERVICE_COUNT] =
+ {
+ "", // SC_SERVICE_SHEET
+ "stardiv.one.text.TextField.URL", // SC_SERVICE_URLFIELD
+ "stardiv.one.text.TextField.PageNumber", // SC_SERVICE_PAGEFIELD
+ "stardiv.one.text.TextField.PageCount", // SC_SERVICE_PAGESFIELD
+ "stardiv.one.text.TextField.Date", // SC_SERVICE_DATEFIELD
+ "stardiv.one.text.TextField.Time", // SC_SERVICE_TIMEFIELD
+ "stardiv.one.text.TextField.DocumentTitle", // SC_SERVICE_TITLEFIELD
+ "stardiv.one.text.TextField.FileName", // SC_SERVICE_FILEFIELD
+ "stardiv.one.text.TextField.SheetName", // SC_SERVICE_SHEETFIELD
+ "stardiv.one.style.CellStyle", // SC_SERVICE_CELLSTYLE
+ "stardiv.one.style.PageStyle", // SC_SERVICE_PAGESTYLE
+ "", // SC_SERVICE_AUTOFORMAT
+ "", // SC_SERVICE_CELLRANGES
+ "", // SC_SERVICE_GRADTAB
+ "", // SC_SERVICE_HATCHTAB
+ "", // SC_SERVICE_BITMAPTAB
+ "", // SC_SERVICE_TRGRADTAB
+ "", // SC_SERVICE_MARKERTAB
+ "" // SC_SERVICE_DASHTAB
+ };
+
+
+
+
+//------------------------------------------------------------------------
+
+// alles static
+
+String ScServiceProvider::GetProviderName(sal_uInt16 nObjectType)
+{
+ String sRet;
+ if (nObjectType < SC_SERVICE_COUNT)
+ sRet = String::CreateFromAscii( aProvNames[nObjectType] );
+ return sRet;
+}
+
+sal_uInt16 ScServiceProvider::GetProviderType(const String& rServiceName)
+{
+ if (rServiceName.Len())
+ {
+ USHORT i;
+ for (i=0; i<SC_SERVICE_COUNT; i++)
+ if (rServiceName.EqualsAscii( aProvNames[i] ))
+ return i;
+
+ for (i=0; i<SC_SERVICE_COUNT; i++)
+ if (rServiceName.EqualsAscii( aOldNames[i] ))
+ {
+ DBG_ERROR("old service name used");
+ return i;
+ }
+ }
+ return SC_SERVICE_INVALID;
+}
+
+uno::Reference<uno::XInterface> ScServiceProvider::MakeInstance(
+ sal_uInt16 nType, ScDocShell* pDocShell )
+{
+ uno::Reference<uno::XInterface> xRet;
+ switch (nType)
+ {
+ case SC_SERVICE_SHEET:
+ // noch nicht eingefuegt - DocShell=Null
+ xRet = (sheet::XSpreadsheet*)new ScTableSheetObj(NULL,0);
+ break;
+ case SC_SERVICE_URLFIELD:
+ xRet = (text::XTextField*)new ScCellFieldObj( NULL, ScAddress(), ESelection() );
+ break;
+ case SC_SERVICE_PAGEFIELD:
+ case SC_SERVICE_PAGESFIELD:
+ case SC_SERVICE_DATEFIELD:
+ case SC_SERVICE_TIMEFIELD:
+ case SC_SERVICE_TITLEFIELD:
+ case SC_SERVICE_FILEFIELD:
+ case SC_SERVICE_SHEETFIELD:
+ xRet = (text::XTextField*)new ScHeaderFieldObj( NULL, 0, nType, ESelection() );
+ break;
+ case SC_SERVICE_CELLSTYLE:
+ xRet = (style::XStyle*)new ScStyleObj( NULL, SFX_STYLE_FAMILY_PARA, String() );
+ break;
+ case SC_SERVICE_PAGESTYLE:
+ xRet = (style::XStyle*)new ScStyleObj( NULL, SFX_STYLE_FAMILY_PAGE, String() );
+ break;
+ case SC_SERVICE_AUTOFORMAT:
+ xRet = (container::XIndexAccess*)new ScAutoFormatObj( SC_AFMTOBJ_INVALID );
+ break;
+ case SC_SERVICE_CELLRANGES:
+ // wird nicht eingefuegt, sondern gefuellt
+ // -> DocShell muss gesetzt sein, aber leere Ranges
+ if (pDocShell)
+ xRet = (sheet::XSheetCellRanges*)new ScCellRangesObj( pDocShell, ScRangeList() );
+ break;
+
+ // Drawing layer tables are not in SvxUnoDrawMSFactory,
+ // because SvxUnoDrawMSFactory doesn't have a SdrModel pointer.
+ // Drawing layer is always allocated if not there (MakeDrawLayer).
+
+ case SC_SERVICE_GRADTAB:
+ if (pDocShell)
+ xRet = SvxUnoGradientTable_createInstance( pDocShell->MakeDrawLayer() );
+ break;
+ case SC_SERVICE_HATCHTAB:
+ if (pDocShell)
+ xRet = SvxUnoHatchTable_createInstance( pDocShell->MakeDrawLayer() );
+ break;
+ case SC_SERVICE_BITMAPTAB:
+ if (pDocShell)
+ xRet = SvxUnoBitmapTable_createInstance( pDocShell->MakeDrawLayer() );
+ break;
+ case SC_SERVICE_TRGRADTAB:
+ if (pDocShell)
+ xRet = SvxUnoTransGradientTable_createInstance( pDocShell->MakeDrawLayer() );
+ break;
+ case SC_SERVICE_MARKERTAB:
+ if (pDocShell)
+ xRet = SvxUnoMarkerTable_createInstance( pDocShell->MakeDrawLayer() );
+ break;
+ case SC_SERVICE_DASHTAB:
+ if (pDocShell)
+ xRet = SvxUnoDashTable_createInstance( pDocShell->MakeDrawLayer() );
+ break;
+ }
+ return xRet;
+}
+
+uno::Sequence<rtl::OUString> ScServiceProvider::GetAllServiceNames()
+{
+ uno::Sequence<rtl::OUString> aRet(SC_SERVICE_COUNT);
+ rtl::OUString* pArray = aRet.getArray();
+ for (sal_uInt16 i = 0; i < SC_SERVICE_COUNT; i++)
+ pArray[i] = rtl::OUString::createFromAscii( aProvNames[i] );
+ return aRet;
+}
+
+
+
+
diff --git a/sc/source/ui/unoobj/srchuno.cxx b/sc/source/ui/unoobj/srchuno.cxx
new file mode 100644
index 000000000000..d963d1ea1182
--- /dev/null
+++ b/sc/source/ui/unoobj/srchuno.cxx
@@ -0,0 +1,309 @@
+/*************************************************************************
+ *
+ * $RCSfile: srchuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "scitems.hxx"
+#include <svx/srchitem.hxx>
+#include <osl/mutex.hxx>
+#include <rtl/uuid.h>
+
+#include "srchuno.hxx"
+#include "docsh.hxx"
+#include "undoblk.hxx"
+#include "hints.hxx"
+#include "markdata.hxx"
+#include "unoguard.hxx"
+#include "miscuno.hxx"
+#include "unonames.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+//! SearchWords sucht in ganzen Zellen - umbenennen ???
+
+// SfxItemPropertyMap nur fuer GetPropertySetInfo
+
+const SfxItemPropertyMap* lcl_GetSearchPropertyMap()
+{
+ static SfxItemPropertyMap aSearchPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNO_SRCHBACK), 0, &getBooleanCppuType(), 0, 0},
+ {MAP_CHAR_LEN(SC_UNO_SRCHBYROW), 0, &getBooleanCppuType(), 0, 0},
+ {MAP_CHAR_LEN(SC_UNO_SRCHCASE), 0, &getBooleanCppuType(), 0, 0},
+ {MAP_CHAR_LEN(SC_UNO_SRCHREGEXP), 0, &getBooleanCppuType(), 0, 0},
+ {MAP_CHAR_LEN(SC_UNO_SRCHSIM), 0, &getBooleanCppuType(), 0, 0},
+ {MAP_CHAR_LEN(SC_UNO_SRCHSIMADD), 0, &getCppuType((sal_Int16*)0), 0, 0},
+ {MAP_CHAR_LEN(SC_UNO_SRCHSIMEX), 0, &getCppuType((sal_Int16*)0), 0, 0},
+ {MAP_CHAR_LEN(SC_UNO_SRCHSIMREL), 0, &getBooleanCppuType(), 0, 0},
+ {MAP_CHAR_LEN(SC_UNO_SRCHSIMREM), 0, &getCppuType((sal_Int16*)0), 0, 0},
+ {MAP_CHAR_LEN(SC_UNO_SRCHSTYLES), 0, &getBooleanCppuType(), 0, 0},
+ {MAP_CHAR_LEN(SC_UNO_SRCHTYPE), 0, &getCppuType((sal_Int16*)0), 0, 0}, // enum TableSearch ist weg
+ {MAP_CHAR_LEN(SC_UNO_SRCHWORDS), 0, &getBooleanCppuType(), 0, 0},
+ {0,0,0,0}
+ };
+ return aSearchPropertyMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+#define SCSEARCHDESCRIPTOR_SERVICE "com.sun.star.util.SearchDescriptor"
+#define SCREPLACEDESCRIPTOR_SERVICE "com.sun.star.util.ReplaceDescriptor"
+
+//------------------------------------------------------------------------
+
+ScCellSearchObj::ScCellSearchObj() :
+ aPropSet(lcl_GetSearchPropertyMap())
+{
+ pSearchItem = new SvxSearchItem;
+ // Defaults:
+ pSearchItem->SetWordOnly(FALSE);
+ pSearchItem->SetExact(FALSE);
+ pSearchItem->SetBackward(FALSE);
+ pSearchItem->SetSelection(FALSE);
+ pSearchItem->SetRegExp(FALSE);
+ pSearchItem->SetPattern(FALSE);
+ pSearchItem->SetLevenshtein(FALSE);
+ pSearchItem->SetLEVRelaxed(FALSE);
+ pSearchItem->SetLEVOther(2);
+ pSearchItem->SetLEVShorter(2);
+ pSearchItem->SetLEVLonger(2);
+ // Calc-Flags
+ pSearchItem->SetRowDirection(FALSE);
+ pSearchItem->SetCellType(SVX_SEARCHIN_FORMULA);
+
+ // Selection-Flag wird beim Aufruf gesetzt
+}
+
+ScCellSearchObj::~ScCellSearchObj()
+{
+ delete pSearchItem;
+}
+
+// XSearchDescriptor
+
+rtl::OUString SAL_CALL ScCellSearchObj::getSearchString() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return pSearchItem->GetSearchString();
+}
+
+void SAL_CALL ScCellSearchObj::setSearchString( const rtl::OUString& aString )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ pSearchItem->SetSearchString( aString );
+}
+
+// XReplaceDescriptor
+
+rtl::OUString SAL_CALL ScCellSearchObj::getReplaceString() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return pSearchItem->GetReplaceString();
+}
+
+void SAL_CALL ScCellSearchObj::setReplaceString( const rtl::OUString& aReplaceString )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ pSearchItem->SetReplaceString( aReplaceString );
+}
+
+// XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScCellSearchObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScCellSearchObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+
+ if (aString.EqualsAscii( SC_UNO_SRCHBACK )) pSearchItem->SetBackward( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHBYROW )) pSearchItem->SetRowDirection( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHCASE )) pSearchItem->SetExact( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHREGEXP )) pSearchItem->SetRegExp( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHSIM )) pSearchItem->SetLevenshtein( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHSIMREL )) pSearchItem->SetLEVRelaxed( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHSTYLES )) pSearchItem->SetPattern( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHWORDS )) pSearchItem->SetWordOnly( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHSIMADD )) pSearchItem->SetLEVLonger( ScUnoHelpFunctions::GetInt16FromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHSIMEX )) pSearchItem->SetLEVOther( ScUnoHelpFunctions::GetInt16FromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHSIMREM )) pSearchItem->SetLEVShorter( ScUnoHelpFunctions::GetInt16FromAny( aValue ) );
+ else if (aString.EqualsAscii( SC_UNO_SRCHTYPE )) pSearchItem->SetCellType( ScUnoHelpFunctions::GetInt16FromAny( aValue ) );
+}
+
+uno::Any SAL_CALL ScCellSearchObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+ uno::Any aRet;
+
+ if (aString.EqualsAscii( SC_UNO_SRCHBACK )) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetBackward() );
+ else if (aString.EqualsAscii( SC_UNO_SRCHBYROW )) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetRowDirection() );
+ else if (aString.EqualsAscii( SC_UNO_SRCHCASE )) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetExact() );
+ else if (aString.EqualsAscii( SC_UNO_SRCHREGEXP )) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetRegExp() );
+ else if (aString.EqualsAscii( SC_UNO_SRCHSIM )) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->IsLevenshtein() );
+ else if (aString.EqualsAscii( SC_UNO_SRCHSIMREL )) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->IsLEVRelaxed() );
+ else if (aString.EqualsAscii( SC_UNO_SRCHSTYLES )) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetPattern() );
+ else if (aString.EqualsAscii( SC_UNO_SRCHWORDS )) ScUnoHelpFunctions::SetBoolInAny( aRet, pSearchItem->GetWordOnly() );
+ else if (aString.EqualsAscii( SC_UNO_SRCHSIMADD )) aRet <<= (sal_Int16) pSearchItem->GetLEVLonger();
+ else if (aString.EqualsAscii( SC_UNO_SRCHSIMEX )) aRet <<= (sal_Int16) pSearchItem->GetLEVOther();
+ else if (aString.EqualsAscii( SC_UNO_SRCHSIMREM )) aRet <<= (sal_Int16) pSearchItem->GetLEVShorter();
+ else if (aString.EqualsAscii( SC_UNO_SRCHTYPE )) aRet <<= (sal_Int16) pSearchItem->GetCellType();
+
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScCellSearchObj )
+
+// XServiceInfo
+
+rtl::OUString SAL_CALL ScCellSearchObj::getImplementationName() throw(uno::RuntimeException)
+{
+ return rtl::OUString::createFromAscii( "ScCellSearchObj" );
+}
+
+sal_Bool SAL_CALL ScCellSearchObj::supportsService( const rtl::OUString& rServiceName )
+ throw(uno::RuntimeException)
+{
+ String aServiceStr = rServiceName;
+ return aServiceStr.EqualsAscii( SCSEARCHDESCRIPTOR_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCREPLACEDESCRIPTOR_SERVICE );
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScCellSearchObj::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ uno::Sequence<rtl::OUString> aRet(2);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCSEARCHDESCRIPTOR_SERVICE );
+ pArray[1] = rtl::OUString::createFromAscii( SCREPLACEDESCRIPTOR_SERVICE );
+ return aRet;
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScCellSearchObj::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScCellSearchObj::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScCellSearchObj* ScCellSearchObj::getImplementation(
+ const uno::Reference<util::XSearchDescriptor> xObj )
+{
+ ScCellSearchObj* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScCellSearchObj*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+
+//------------------------------------------------------------------------
+
+
+
+
+
diff --git a/sc/source/ui/unoobj/styleuno.cxx b/sc/source/ui/unoobj/styleuno.cxx
new file mode 100644
index 000000000000..7872d6279bfc
--- /dev/null
+++ b/sc/source/ui/unoobj/styleuno.cxx
@@ -0,0 +1,1507 @@
+/*************************************************************************
+ *
+ * $RCSfile: styleuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "scitems.hxx"
+#include <svx/algitem.hxx>
+#include <svx/langitem.hxx>
+#include <svx/pageitem.hxx>
+#include <svx/unomid.hxx>
+#include <sfx2/bindings.hxx>
+#include <vcl/virdev.hxx>
+#include <svtools/itempool.hxx>
+#include <svtools/itemset.hxx>
+#include <svtools/intitem.hxx>
+#include <svtools/zformat.hxx>
+#include <rtl/uuid.h>
+
+#include <com/sun/star/table/BorderLine.hpp>
+#include <com/sun/star/table/CellVertJustify.hpp>
+#include <com/sun/star/table/TableBorder.hpp>
+#include <com/sun/star/table/ShadowFormat.hpp>
+#include <com/sun/star/table/CellHoriJustify.hpp>
+#include <com/sun/star/table/CellOrientation.hpp>
+#include <com/sun/star/style/PageStyleLayout.hpp>
+#include <com/sun/star/style/GraphicLocation.hpp>
+#include <com/sun/star/sheet/XHeaderFooterContent.hpp>
+#include <com/sun/star/util/CellProtection.hpp>
+#include <com/sun/star/awt/FontSlant.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+
+#include "styleuno.hxx"
+#include "docsh.hxx"
+#include "attrib.hxx"
+#include "stlpool.hxx"
+#include "unoguard.hxx"
+#include "miscuno.hxx"
+#include "convuno.hxx"
+#include "tablink.hxx"
+#include "unonames.hxx"
+#include "globstr.hrc"
+
+using namespace ::com::sun::star;
+
+//------------------------------------------------------------------------
+
+const SfxItemPropertyMap* lcl_GetCellStyleMap()
+{
+ static SfxItemPropertyMap aCellStyleMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &::getCppuType((const sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &::getCppuType((const util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCOLOR), ATTR_FONT_COLOR, &::getCppuType((const sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_COUTL), ATTR_FONT_CONTOUR, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CCROSS), ATTR_FONT_CROSSEDOUT,&::getBooleanCppuType(), 0, MID_CROSSED_OUT },
+ {MAP_CHAR_LEN(SC_UNONAME_CFONT), ATTR_FONT, &::getCppuType((const sal_Int16*)0), 0, MID_FONT_FAMILY },
+ {MAP_CHAR_LEN(SC_UNONAME_CFNAME), ATTR_FONT, &::getCppuType((const ::rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },
+ {MAP_CHAR_LEN(SC_UNONAME_CHEIGHT), ATTR_FONT_HEIGHT, &::getCppuType((const Float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CLOCAL), ATTR_FONT_LANGUAGE, &::getCppuType((const lang::Locale*)0), 0, MID_LANG_LOCALE },
+ {MAP_CHAR_LEN(SC_UNONAME_CPOST), ATTR_FONT_POSTURE, &::getCppuType((const awt::FontSlant*)0), 0, MID_POSTURE },
+ {MAP_CHAR_LEN(SC_UNONAME_CSHADD), ATTR_FONT_SHADOWED, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CUNDER), ATTR_FONT_UNDERLINE,&::getCppuType((const sal_Int16*)0), 0, MID_UNDERLINE },
+ {MAP_CHAR_LEN(SC_UNONAME_CWEIGHT), ATTR_FONT_WEIGHT, &::getCppuType((const Float*)0), 0, MID_WEIGHT },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &::getCppuType((const table::CellHoriJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &::getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNONAME_DISPNAME), 0, &::getCppuType((rtl::OUString*)0), beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &::getCppuType((const sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_ORIENTATION, &::getCppuType((const table::CellOrientation*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_PBMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PINDENT), ATTR_INDENT, &::getCppuType((const sal_Int16*)0), 0, 0 }, //! CONVERT_TWIPS
+ {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &::getCppuType((const sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &::getCppuType((const sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &::getCppuType((const table::CellVertJustify*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &::getCppuType((const table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), 0, &::getCppuType((const table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY, &::getCppuType((const table::CellVertJustify*)0), 0, 0 },
+ {0,0,0,0}
+ };
+ return aCellStyleMap_Impl;
+}
+
+// Map mit allen Seitenattributen, incl. Kopf-/Fusszeilenattribute
+
+const SfxItemPropertyMap* lcl_GetPageStyleMap()
+{
+ static SfxItemPropertyMap aPageStyleMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNO_PAGE_BACKCOLOR), ATTR_BACKGROUND, &::getCppuType((const sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_BOTTBORDER), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_BOTTMARGIN), ATTR_ULSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_CENTERHOR), ATTR_PAGE_HORCENTER,&::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_CENTERVER), ATTR_PAGE_VERCENTER,&::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_DISPNAME), 0, &::getCppuType((rtl::OUString*)0), beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FIRSTPAGE), ATTR_PAGE_FIRSTPAGENO,&::getCppuType((const sal_Int16*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRBACKCOL), ATTR_BACKGROUND, &::getCppuType((const sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRBODYDIST), ATTR_ULSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRBOTTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRDYNAMIC), ATTR_PAGE_DYNAMIC, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFFILT), ATTR_BACKGROUND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAPHIC_FILTER },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFLOC), ATTR_BACKGROUND, &::getCppuType((const style::GraphicLocation*)0), 0, MID_GRAPHIC_POSITION },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFURL), ATTR_BACKGROUND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAPHIC_URL },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRHEIGHT), ATTR_PAGE_SIZE, &::getCppuType((const sal_Int32*)0), 0, MID_SIZE_HEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRLEFTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRLEFTMAR), ATTR_LRSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRON), ATTR_PAGE_ON, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRRIGHTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRRIGHTMAR), ATTR_LRSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRSHADOW), ATTR_SHADOW, &::getCppuType((const table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRSHARED), ATTR_PAGE_SHARED, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRTOPBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_GRAPHICFILT), ATTR_BACKGROUND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAPHIC_FILTER },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_GRAPHICLOC), ATTR_BACKGROUND, &::getCppuType((const style::GraphicLocation*)0), 0, MID_GRAPHIC_POSITION },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_GRAPHICURL), ATTR_BACKGROUND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAPHIC_URL },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRBACKCOL), ATTR_BACKGROUND, &::getCppuType((const sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRBODYDIST), ATTR_ULSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRBOTTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRDYNAMIC), ATTR_PAGE_DYNAMIC, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFFILT), ATTR_BACKGROUND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAPHIC_FILTER },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFLOC), ATTR_BACKGROUND, &::getCppuType((const style::GraphicLocation*)0), 0, MID_GRAPHIC_POSITION },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFURL), ATTR_BACKGROUND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAPHIC_URL },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRHEIGHT), ATTR_PAGE_SIZE, &::getCppuType((const sal_Int32*)0), 0, MID_SIZE_HEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRLEFTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRLEFTMAR), ATTR_LRSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRON), ATTR_PAGE_ON, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRRIGHTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRRIGHTMAR), ATTR_LRSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRSHADOW), ATTR_SHADOW, &::getCppuType((const table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRSHARED), ATTR_PAGE_SHARED, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRTOPBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_BACKTRANS), ATTR_BACKGROUND, &::getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_LANDSCAPE), ATTR_PAGE, &::getBooleanCppuType(), 0, MID_PAGE_ORIENTATION },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_LEFTBORDER), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_LEFTMARGIN), ATTR_LRSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_LEFTFTRCONT), ATTR_PAGE_FOOTERLEFT,&::getCppuType((const uno::Reference< sheet::XHeaderFooterContent >*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_LEFTHDRCONT), ATTR_PAGE_HEADERLEFT,&::getCppuType((const uno::Reference< sheet::XHeaderFooterContent >*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_NUMBERTYPE), ATTR_PAGE, &::getCppuType((const sal_Int16*)0), 0, MID_PAGE_NUMTYPE },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HEIGHT), ATTR_PAGE_SIZE, &::getCppuType((const sal_Int32*)0), 0, MID_SIZE_HEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_SCALEVAL), ATTR_PAGE_SCALE, &::getCppuType((const sal_Int16*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_SYTLELAYOUT), ATTR_PAGE, &::getCppuType((const style::PageStyleLayout*)0), 0, MID_PAGE_LAYOUT },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_WIDTH), ATTR_PAGE_SIZE, &::getCppuType((const sal_Int32*)0), 0, MID_SIZE_WIDTH | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_PRINTANNOT), ATTR_PAGE_NOTES, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_PRINTCHARTS), ATTR_PAGE_CHARTS, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_PRINTDOWN), ATTR_PAGE_TOPDOWN, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_PRINTDRAW), ATTR_PAGE_DRAWINGS, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_PRINTFORMUL), ATTR_PAGE_FORMULAS, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_PRINTGRID), ATTR_PAGE_GRID, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_PRINTHEADER), ATTR_PAGE_HEADERS, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_PRINTOBJS), ATTR_PAGE_OBJECTS, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_PRINTZERO), ATTR_PAGE_NULLVALS, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_PAPERTRAY), ATTR_PAGE_PAPERBIN, &::getCppuType((const sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_RIGHTBORDER), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_RIGHTMARGIN), ATTR_LRSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_RIGHTFTRCON), ATTR_PAGE_FOOTERRIGHT,&::getCppuType((const uno::Reference< sheet::XHeaderFooterContent >*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_RIGHTHDRCON), ATTR_PAGE_HEADERRIGHT,&::getCppuType((const uno::Reference< sheet::XHeaderFooterContent >*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_SCALETOPAG), ATTR_PAGE_SCALETOPAGES,&::getCppuType((const sal_Int16*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_SHADOWFORM), ATTR_SHADOW, &::getCppuType((const table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_SIZE), ATTR_PAGE_SIZE, &::getCppuType((const awt::Size*)0), 0, MID_SIZE_SIZE | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_TOPBORDER), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_TOPMARGIN), ATTR_ULSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRBACKTRAN), ATTR_BACKGROUND, &::getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRBACKTRAN), ATTR_BACKGROUND, &::getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {0,0,0,0}
+ };
+ return aPageStyleMap_Impl;
+}
+
+// Map mit Inhalten des Header-Item-Sets
+
+const SfxItemPropertyMap* lcl_GetHeaderStyleMap()
+{
+ static SfxItemPropertyMap aHeaderStyleMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRBACKCOL), ATTR_BACKGROUND, &::getCppuType((const sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRBODYDIST), ATTR_ULSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_LO_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRBOTTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRDYNAMIC), ATTR_PAGE_DYNAMIC, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFFILT), ATTR_BACKGROUND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAPHIC_FILTER },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFLOC), ATTR_BACKGROUND, &::getCppuType((const style::GraphicLocation*)0), 0, MID_GRAPHIC_POSITION },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRGRFURL), ATTR_BACKGROUND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAPHIC_URL },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRHEIGHT), ATTR_PAGE_SIZE, &::getCppuType((const sal_Int32*)0), 0, MID_SIZE_HEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRLEFTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRLEFTMAR), ATTR_LRSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRON), ATTR_PAGE_ON, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRRIGHTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRRIGHTMAR), ATTR_LRSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRSHADOW), ATTR_SHADOW, &::getCppuType((const table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRSHARED), ATTR_PAGE_SHARED, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRTOPBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_HDRBACKTRAN), ATTR_BACKGROUND, &::getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {0,0,0,0}
+ };
+ return aHeaderStyleMap_Impl;
+}
+
+// Map mit Inhalten des Footer-Item-Sets
+
+const SfxItemPropertyMap* lcl_GetFooterStyleMap()
+{
+ static SfxItemPropertyMap aFooterStyleMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRBACKCOL), ATTR_BACKGROUND, &::getCppuType((const sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRBODYDIST), ATTR_ULSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRBOTTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRDYNAMIC), ATTR_PAGE_DYNAMIC, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFFILT), ATTR_BACKGROUND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAPHIC_FILTER },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFLOC), ATTR_BACKGROUND, &::getCppuType((const style::GraphicLocation*)0), 0, MID_GRAPHIC_POSITION },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRGRFURL), ATTR_BACKGROUND, &::getCppuType((const ::rtl::OUString*)0), 0, MID_GRAPHIC_URL },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRHEIGHT), ATTR_PAGE_SIZE, &::getCppuType((const sal_Int32*)0), 0, MID_SIZE_HEIGHT | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRLEFTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRLEFTMAR), ATTR_LRSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRON), ATTR_PAGE_ON, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRRIGHTBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRRIGHTMAR), ATTR_LRSPACE, &::getCppuType((const sal_Int32*)0), 0, MID_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRSHADOW), ATTR_SHADOW, &::getCppuType((const table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRSHARED), ATTR_PAGE_SHARED, &::getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRTOPBOR), ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNO_PAGE_FTRBACKTRAN), ATTR_BACKGROUND, &::getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {0,0,0,0}
+ };
+ return aFooterStyleMap_Impl;
+}
+
+
+//------------------------------------------------------------------------
+
+// Index-Access auf die Style-Typen: 0 = Cell, 1 = Page
+
+#define SC_STYLE_FAMILY_COUNT 2
+
+#define SC_FAMILYNAME_CELL "CellStyles"
+#define SC_FAMILYNAME_PAGE "PageStyles"
+
+static UINT16 aStyleFamilyTypes[SC_STYLE_FAMILY_COUNT] = { SFX_STYLE_FAMILY_PARA, SFX_STYLE_FAMILY_PAGE };
+
+//------------------------------------------------------------------------
+
+//! diese Funktionen in einen allgemeinen Header verschieben
+inline long TwipsToHMM(long nTwips) { return (nTwips * 127 + 36) / 72; }
+inline long HMMToTwips(long nHMM) { return (nHMM * 72 + 63) / 127; }
+
+//------------------------------------------------------------------------
+
+SC_SIMPLE_SERVICE_INFO( ScStyleFamiliesObj, "ScStyleFamiliesObj", "stardiv.unknown" )
+SC_SIMPLE_SERVICE_INFO( ScStyleFamilyObj, "ScStyleFamilyObj", "stardiv.unknown" )
+SC_SIMPLE_SERVICE_INFO( ScStyleObj, "ScStyleObj", "stardiv.unknown" )
+
+//------------------------------------------------------------------------
+
+// conversion programmatic <-> display (visible) name
+// currently, the core always has the visible names
+// the api is required to use programmatic names for default styles
+// these programmatic names must never change!
+
+#define SC_STYLE_PROG_STANDARD "Default"
+#define SC_STYLE_PROG_RESULT "Result"
+#define SC_STYLE_PROG_RESULT1 "Result2"
+#define SC_STYLE_PROG_HEADLINE "Heading"
+#define SC_STYLE_PROG_HEADLINE1 "Heading1"
+#define SC_STYLE_PROG_REPORT "Report"
+
+struct ScDisplayNameMap
+{
+ String aDispName;
+ String aProgName;
+};
+
+const ScDisplayNameMap* lcl_GetStyleNameMap( UINT16 nType )
+{
+ if ( nType == SFX_STYLE_FAMILY_PARA )
+ {
+ static BOOL bCellMapFilled = FALSE;
+ static ScDisplayNameMap aCellMap[6];
+ if ( !bCellMapFilled )
+ {
+ aCellMap[0].aDispName = ScGlobal::GetRscString( STR_STYLENAME_STANDARD );
+ aCellMap[0].aProgName = String::CreateFromAscii( SC_STYLE_PROG_STANDARD );
+
+ aCellMap[1].aDispName = ScGlobal::GetRscString( STR_STYLENAME_RESULT );
+ aCellMap[1].aProgName = String::CreateFromAscii( SC_STYLE_PROG_RESULT );
+
+ aCellMap[2].aDispName = ScGlobal::GetRscString( STR_STYLENAME_RESULT1 );
+ aCellMap[2].aProgName = String::CreateFromAscii( SC_STYLE_PROG_RESULT1 );
+
+ aCellMap[3].aDispName = ScGlobal::GetRscString( STR_STYLENAME_HEADLINE );
+ aCellMap[3].aProgName = String::CreateFromAscii( SC_STYLE_PROG_HEADLINE );
+
+ aCellMap[4].aDispName = ScGlobal::GetRscString( STR_STYLENAME_HEADLINE1 );
+ aCellMap[4].aProgName = String::CreateFromAscii( SC_STYLE_PROG_HEADLINE1 );
+
+ // last entry remains empty
+
+ bCellMapFilled = TRUE;
+ }
+ return aCellMap;
+ }
+ else if ( nType == SFX_STYLE_FAMILY_PAGE )
+ {
+ static BOOL bPageMapFilled = FALSE;
+ static ScDisplayNameMap aPageMap[3];
+ if ( !bPageMapFilled )
+ {
+ aPageMap[0].aDispName = ScGlobal::GetRscString( STR_STYLENAME_STANDARD );
+ aPageMap[0].aProgName = String::CreateFromAscii( SC_STYLE_PROG_STANDARD );
+
+ aPageMap[1].aDispName = ScGlobal::GetRscString( STR_STYLENAME_REPORT );
+ aPageMap[1].aProgName = String::CreateFromAscii( SC_STYLE_PROG_REPORT );
+
+ // last entry remains empty
+
+ bPageMapFilled = TRUE;
+ }
+ return aPageMap;
+ }
+ DBG_ERROR("invalid family");
+ return NULL;
+}
+
+// static
+const String& ScStyleNameConversion::DisplayToProgrammaticName( const String& rDispName, UINT16 nType )
+{
+ const ScDisplayNameMap* pNames = lcl_GetStyleNameMap( nType );
+ if (pNames)
+ {
+ do
+ {
+ if (pNames->aDispName == rDispName)
+ return pNames->aProgName;
+ }
+ while( (++pNames)->aDispName.Len() );
+ }
+ return rDispName;
+}
+
+// static
+const String& ScStyleNameConversion::ProgrammaticToDisplayName( const String& rProgName, UINT16 nType )
+{
+ const ScDisplayNameMap* pNames = lcl_GetStyleNameMap( nType );
+ if (pNames)
+ {
+ do
+ {
+ if (pNames->aProgName == rProgName)
+ return pNames->aDispName;
+ }
+ while( (++pNames)->aDispName.Len() );
+ }
+ return rProgName;
+}
+
+//------------------------------------------------------------------------
+
+sal_Bool lcl_AnyTabProtected( ScDocument& rDoc )
+{
+ USHORT nTabCount = rDoc.GetTableCount();
+ for (USHORT i=0; i<nTabCount; i++)
+ if (rDoc.IsTabProtected(i))
+ return sal_True;
+ return sal_False;
+}
+
+//------------------------------------------------------------------------
+
+ScStyleFamiliesObj::ScStyleFamiliesObj(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScStyleFamiliesObj::~ScStyleFamiliesObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScStyleFamiliesObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XStyleFamilies
+
+ScStyleFamilyObj*ScStyleFamiliesObj::GetObjectByType_Impl(UINT16 Type) const
+{
+ if ( pDocShell )
+ {
+ if ( Type == SFX_STYLE_FAMILY_PARA )
+ return new ScStyleFamilyObj( pDocShell, SFX_STYLE_FAMILY_PARA );
+ else if ( Type == SFX_STYLE_FAMILY_PAGE )
+ return new ScStyleFamilyObj( pDocShell, SFX_STYLE_FAMILY_PAGE );
+ }
+ DBG_ERROR("getStyleFamilyByType: keine DocShell oder falscher Typ");
+ return NULL;
+}
+
+ScStyleFamilyObj* ScStyleFamiliesObj::GetObjectByIndex_Impl(UINT32 nIndex) const
+{
+ if ( nIndex < SC_STYLE_FAMILY_COUNT )
+ return GetObjectByType_Impl(aStyleFamilyTypes[nIndex]);
+
+ return NULL; // ungueltiger Index
+}
+
+ScStyleFamilyObj* ScStyleFamiliesObj::GetObjectByName_Impl(const rtl::OUString& aName) const
+{
+ if ( pDocShell )
+ {
+ String aNameStr( aName );
+ if ( aNameStr.EqualsAscii( SC_FAMILYNAME_CELL ) )
+ return new ScStyleFamilyObj( pDocShell, SFX_STYLE_FAMILY_PARA );
+ else if ( aNameStr.EqualsAscii( SC_FAMILYNAME_PAGE ) )
+ return new ScStyleFamilyObj( pDocShell, SFX_STYLE_FAMILY_PAGE );
+ }
+ DBG_ERROR("getStyleFamilyByType: keine DocShell oder falscher Typ");
+ return NULL;
+}
+
+// container::XIndexAccess
+
+sal_Int32 SAL_CALL ScStyleFamiliesObj::getCount() throw(uno::RuntimeException)
+{
+ return SC_STYLE_FAMILY_COUNT;
+}
+
+uno::Any SAL_CALL ScStyleFamiliesObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference< container::XNameContainer > xFamily = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ aAny <<= xFamily;
+ return aAny;
+}
+
+uno::Type SAL_CALL ScStyleFamiliesObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ::getCppuType((const uno::Reference< container::XNameContainer >*)0); // muss zu getByIndex passen
+}
+
+sal_Bool SAL_CALL ScStyleFamiliesObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+// container::XNameAccess
+
+uno::Any SAL_CALL ScStyleFamiliesObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference< container::XNameContainer > xFamily = GetObjectByName_Impl(aName);
+ uno::Any aAny;
+ aAny <<= xFamily;
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScStyleFamiliesObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Sequence<rtl::OUString> aNames(SC_STYLE_FAMILY_COUNT);
+ rtl::OUString* pNames = aNames.getArray();
+ pNames[0] = rtl::OUString::createFromAscii( SC_FAMILYNAME_CELL );
+ pNames[1] = rtl::OUString::createFromAscii( SC_FAMILYNAME_PAGE );
+ return aNames;
+}
+
+sal_Bool SAL_CALL ScStyleFamiliesObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aNameStr( aName );
+ return ( aNameStr.EqualsAscii( SC_FAMILYNAME_CELL ) || aNameStr.EqualsAscii( SC_FAMILYNAME_PAGE ) );
+}
+
+// style::XStyleLoader
+
+void SAL_CALL ScStyleFamiliesObj::loadStylesFromURL( const rtl::OUString& aURL,
+ const uno::Sequence<beans::PropertyValue>& aOptions )
+ throw(io::IOException, uno::RuntimeException)
+{
+ //! use aOptions (like Writer)
+ //! set flag to disable filter option dialogs when importing
+
+ String aFilter; // empty - detect
+ String aFiltOpt;
+ ScDocumentLoader aLoader( aURL, aFilter, aFiltOpt );
+
+ ScDocShell* pSource = aLoader.GetDocShell();
+ if ( pSource && pDocShell )
+ {
+ pDocShell->LoadStyles( *pSource );
+ pDocShell->SetDocumentModified(); // paint is inside LoadStyles
+ }
+}
+
+uno::Sequence<beans::PropertyValue> SAL_CALL ScStyleFamiliesObj::getStyleLoaderOptions()
+ throw(uno::RuntimeException)
+{
+ // no options supported
+ return uno::Sequence<beans::PropertyValue>(0);
+}
+
+//------------------------------------------------------------------------
+
+ScStyleFamilyObj::ScStyleFamilyObj(ScDocShell* pDocSh, SfxStyleFamily eFam) :
+ pDocShell( pDocSh ),
+ eFamily( eFam )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+ScStyleFamilyObj::~ScStyleFamilyObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScStyleFamilyObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+// XStyleFamily
+
+ScStyleObj* ScStyleFamilyObj::GetObjectByIndex_Impl(UINT32 nIndex)
+{
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+
+ SfxStyleSheetIterator aIter( pStylePool, eFamily );
+ if ( nIndex < aIter.Count() )
+ {
+ SfxStyleSheetBase* pStyle = aIter[nIndex];
+ if ( pStyle )
+ {
+ String aName = pStyle->GetName();
+ return new ScStyleObj( pDocShell, eFamily, aName );
+ }
+ }
+ }
+ return NULL;
+}
+
+ScStyleObj* ScStyleFamilyObj::GetObjectByName_Impl(const rtl::OUString& aName)
+{
+ if ( pDocShell )
+ {
+ String aString = aName;
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ if ( pStylePool->Find( aString, eFamily ) )
+ return new ScStyleObj( pDocShell, eFamily, aString );
+ }
+ return NULL;
+}
+
+void SAL_CALL ScStyleFamilyObj::insertByName( const rtl::OUString& aName, const uno::Any& aElement )
+ throw(lang::IllegalArgumentException, container::ElementExistException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ sal_Bool bDone = sal_False;
+ // Reflection muss nicht uno::XInterface sein, kann auch irgendein Interface sein...
+ uno::Reference< uno::XInterface > xInterface;
+ if ( aElement >>= xInterface )
+ {
+ ScStyleObj* pStyleObj = ScStyleObj::getImplementation( xInterface );
+ if ( pStyleObj && pStyleObj->GetFamily() == eFamily &&
+ !pStyleObj->IsInserted() ) // noch nicht eingefuegt?
+ {
+ String aNameStr = ScStyleNameConversion::ProgrammaticToDisplayName( aName, eFamily );
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+
+ //! DocFunc-Funktion??
+ //! Undo ?????????????
+
+ if ( !pStylePool->Find( aNameStr, eFamily ) ) // noch nicht vorhanden
+ {
+ SfxStyleSheetBase& rStyle = pStylePool->Make( aNameStr, eFamily, SFXSTYLEBIT_USERDEF );
+
+ pStyleObj->InitDoc( pDocShell, aNameStr ); // Objekt kann benutzt werden
+
+ pDocShell->SetDocumentModified(); // verwendet wird der neue Style noch nicht
+ }
+ }
+ }
+}
+
+void SAL_CALL ScStyleFamilyObj::replaceByName( const rtl::OUString& aName, const uno::Any& aElement )
+ throw(lang::IllegalArgumentException, container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ //! zusammenfassen?
+ removeByName( aName );
+ insertByName( aName, aElement );
+}
+
+void SAL_CALL ScStyleFamilyObj::removeByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ String aString = ScStyleNameConversion::ProgrammaticToDisplayName( aName, eFamily );
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+
+ //! DocFunc-Funktion??
+ //! Undo ?????????????
+
+ SfxStyleSheetBase* pStyle = pStylePool->Find( aString, eFamily );
+ if (pStyle)
+ {
+ if ( eFamily == SFX_STYLE_FAMILY_PARA )
+ {
+ // wie ScViewFunc::RemoveStyleSheetInUse
+ VirtualDevice aVDev;
+ Point aLogic = aVDev.LogicToPixel( Point(1000,1000), MAP_TWIP );
+ double nPPTX = aLogic.X() / 1000.0;
+ double nPPTY = aLogic.Y() / 1000.0;
+ Fraction aZoom(1,1);
+ pDoc->StyleSheetChanged( pStyle, sal_False, &aVDev, nPPTX, nPPTY, aZoom, aZoom );
+ pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_LEFT );
+ pDocShell->SetDocumentModified();
+
+ pStylePool->Erase( pStyle );
+
+ //! InvalidateAttribs(); // Bindings-Invalidate
+ }
+ else
+ {
+ if ( pDoc->RemovePageStyleInUse( aString ) )
+ pDocShell->PageStyleModified( STR_STANDARD, sal_True );
+
+ pStylePool->Erase( pStyle );
+
+ SFX_BINDINGS().Invalidate( SID_STYLE_FAMILY4 );
+ pDocShell->SetDocumentModified();
+ }
+ }
+ }
+}
+
+// container::XIndexAccess
+
+sal_Int32 SAL_CALL ScStyleFamilyObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+
+ SfxStyleSheetIterator aIter( pStylePool, eFamily );
+ return aIter.Count();
+ }
+ return 0;
+}
+
+uno::Any SAL_CALL ScStyleFamilyObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference< style::XStyle > xObj = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ aAny <<= xObj;
+ return aAny;
+}
+
+uno::Type SAL_CALL ScStyleFamilyObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ::getCppuType((const uno::Reference< style::XStyle >*)0); // muss zu getByIndex passen
+}
+
+sal_Bool SAL_CALL ScStyleFamilyObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+// container::XNameAccess
+
+uno::Any SAL_CALL ScStyleFamilyObj::getByName( const rtl::OUString& aName )
+ throw(container::NoSuchElementException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference< style::XStyle > xObj =
+ GetObjectByName_Impl( ScStyleNameConversion::ProgrammaticToDisplayName( aName, eFamily ) );
+ uno::Any aAny;
+ aAny <<= xObj;
+ return aAny;
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScStyleFamilyObj::getElementNames()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+
+ SfxStyleSheetIterator aIter( pStylePool, eFamily );
+ UINT16 nCount = aIter.Count();
+
+ String aName;
+ uno::Sequence<rtl::OUString> aSeq(nCount);
+ rtl::OUString* pAry = aSeq.getArray();
+ SfxStyleSheetBase* pStyle = aIter.First();
+ UINT16 nPos = 0;
+ while (pStyle)
+ {
+ DBG_ASSERT( nPos<nCount, "Anzahl durcheinandergekommen" );
+ if (nPos<nCount)
+ pAry[nPos++] = ScStyleNameConversion::DisplayToProgrammaticName(
+ pStyle->GetName(), eFamily );
+ pStyle = aIter.Next();
+ }
+ return aSeq;
+ }
+ return uno::Sequence<rtl::OUString>();
+}
+
+sal_Bool SAL_CALL ScStyleFamilyObj::hasByName( const rtl::OUString& aName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( pDocShell )
+ {
+ String aString = ScStyleNameConversion::ProgrammaticToDisplayName( aName, eFamily );
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ if ( pStylePool->Find( aString, eFamily ) )
+ return sal_True;
+ }
+ return sal_False;
+}
+
+//------------------------------------------------------------------------
+
+// Default-ctor wird fuer die Reflection gebraucht
+
+ScStyleObj::ScStyleObj() :
+ pDocShell( NULL ),
+ eFamily( SFX_STYLE_FAMILY_PARA ),
+ aPropSet( lcl_GetCellStyleMap() )
+{
+}
+
+ScStyleObj::ScStyleObj(ScDocShell* pDocSh, SfxStyleFamily eFam, const String& rName) :
+ pDocShell( pDocSh ),
+ eFamily( eFam ),
+ aStyleName( rName ),
+ aPropSet( (eFam == SFX_STYLE_FAMILY_PARA) ? lcl_GetCellStyleMap() : lcl_GetPageStyleMap() )
+{
+ // pDocShell ist Null, wenn per ServiceProvider erzeugt
+
+ if (pDocShell)
+ pDocShell->GetDocument()->AddUnoObject(*this);
+}
+
+void ScStyleObj::InitDoc( ScDocShell* pNewDocSh, const String& rNewName )
+{
+ if ( pNewDocSh && !pDocShell )
+ {
+ aStyleName = rNewName;
+ pDocShell = pNewDocSh;
+ pDocShell->GetDocument()->AddUnoObject(*this);
+ }
+}
+
+ScStyleObj::~ScStyleObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScStyleObj::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScStyleObj::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScStyleObj* ScStyleObj::getImplementation(
+ const uno::Reference<uno::XInterface> xObj )
+{
+ ScStyleObj* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScStyleObj*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+void ScStyleObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ // Referenz-Update interessiert hier nicht
+
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ {
+ pDocShell = NULL; // ungueltig geworden
+ }
+}
+
+SfxStyleSheetBase* ScStyleObj::GetStyle_Impl()
+{
+ if ( pDocShell )
+ {
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ return pStylePool->Find( aStyleName, eFamily );
+ }
+ return NULL;
+}
+
+// style::XStyle
+
+sal_Bool SAL_CALL ScStyleObj::isUserDefined() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SfxStyleSheetBase* pStyle = GetStyle_Impl();
+ if (pStyle)
+ return pStyle->IsUserDefined();
+ return sal_False;
+}
+
+sal_Bool SAL_CALL ScStyleObj::isInUse() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SfxStyleSheetBase* pStyle = GetStyle_Impl();
+ if (pStyle)
+ return pStyle->IsUsed();
+ return sal_False;
+}
+
+rtl::OUString SAL_CALL ScStyleObj::getParentStyle() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SfxStyleSheetBase* pStyle = GetStyle_Impl();
+ if (pStyle)
+ return ScStyleNameConversion::DisplayToProgrammaticName( pStyle->GetParent(), eFamily );
+ return rtl::OUString();
+}
+
+void SAL_CALL ScStyleObj::setParentStyle( const rtl::OUString& rParentStyle )
+ throw(container::NoSuchElementException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SfxStyleSheetBase* pStyle = GetStyle_Impl();
+ if (pStyle)
+ {
+ // #70909# cell styles cannot be modified if any sheet is protected
+ if ( eFamily == SFX_STYLE_FAMILY_PARA && lcl_AnyTabProtected( *pDocShell->GetDocument() ) )
+ return; //! exception?
+
+ //! DocFunc-Funktion??
+ //! Undo ?????????????
+
+ String aString = ScStyleNameConversion::ProgrammaticToDisplayName( rParentStyle, eFamily );
+ sal_Bool bOk = pStyle->SetParent( aString );
+ if (bOk)
+ {
+ // wie bei setPropertyValue
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ if ( eFamily == SFX_STYLE_FAMILY_PARA )
+ {
+ // Zeilenhoehen anpassen...
+
+ VirtualDevice aVDev;
+ Point aLogic = aVDev.LogicToPixel( Point(1000,1000), MAP_TWIP );
+ double nPPTX = aLogic.X() / 1000.0;
+ double nPPTY = aLogic.Y() / 1000.0;
+ Fraction aZoom(1,1);
+ pDoc->StyleSheetChanged( pStyle, sal_False, &aVDev, nPPTX, nPPTY, aZoom, aZoom );
+
+ pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_LEFT );
+ pDocShell->SetDocumentModified();
+ }
+ else
+ {
+ //! ModifyStyleSheet am Dokument (alte Werte merken)
+
+ pDocShell->PageStyleModified( aStyleName, sal_True );
+ }
+ }
+ }
+}
+
+// container::XNamed
+
+rtl::OUString SAL_CALL ScStyleObj::getName() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SfxStyleSheetBase* pStyle = GetStyle_Impl();
+ if (pStyle)
+ return ScStyleNameConversion::DisplayToProgrammaticName( pStyle->GetName(), eFamily );
+ return rtl::OUString();
+}
+
+void SAL_CALL ScStyleObj::setName( const rtl::OUString& aNewName )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SfxStyleSheetBase* pStyle = GetStyle_Impl();
+ if (pStyle)
+ {
+ // #71225# cell styles cannot be renamed if any sheet is protected
+ if ( eFamily == SFX_STYLE_FAMILY_PARA && lcl_AnyTabProtected( *pDocShell->GetDocument() ) )
+ return; //! exception?
+
+ //! DocFunc-Funktion??
+ //! Undo ?????????????
+
+ String aString = aNewName;
+ sal_Bool bOk = pStyle->SetName( aString );
+ if (bOk)
+ {
+ aStyleName = aString; //! notify other objects for this style?
+
+ // Zellvorlagen = 2, Seitenvorlagen = 4
+ UINT16 nId = ( eFamily == SFX_STYLE_FAMILY_PARA ) ?
+ SID_STYLE_FAMILY2 : SID_STYLE_FAMILY4;
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( nId );
+ rBindings.Invalidate( SID_STYLE_APPLY );
+ }
+ }
+}
+
+// beans::XPropertyState
+
+const SfxItemSet* ScStyleObj::GetStyleItemSet_Impl( const String& rPropName, UINT16& rWhich )
+{
+ //! OUString as argument?
+
+ SfxStyleSheetBase* pStyle = GetStyle_Impl();
+ if (pStyle)
+ {
+ const SfxItemPropertyMap* pMap = NULL;
+ if ( eFamily == SFX_STYLE_FAMILY_PAGE )
+ {
+ pMap = SfxItemPropertyMap::GetByName( lcl_GetHeaderStyleMap(), rPropName );
+ if ( pMap )
+ {
+ rWhich = pMap->nWID;
+ return &((const SvxSetItem&)pStyle->GetItemSet().Get(ATTR_PAGE_HEADERSET)).GetItemSet();
+ }
+ pMap = SfxItemPropertyMap::GetByName( lcl_GetFooterStyleMap(), rPropName );
+ if ( pMap )
+ {
+ rWhich = pMap->nWID;
+ return &((const SvxSetItem&)pStyle->GetItemSet().Get(ATTR_PAGE_FOOTERSET)).GetItemSet();
+ }
+ }
+ pMap = SfxItemPropertyMap::GetByName( aPropSet.getPropertyMap(), rPropName );
+ if ( pMap && pMap->nWID )
+ {
+ rWhich = pMap->nWID;
+ return &pStyle->GetItemSet();
+ }
+ }
+
+ rWhich = 0;
+ return NULL;
+}
+
+beans::PropertyState SAL_CALL ScStyleObj::getPropertyState( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ beans::PropertyState eRet = beans::PropertyState_DIRECT_VALUE;
+ String aString = aPropertyName;
+ UINT16 nWhich = 0;
+
+ const SfxItemSet* pItemSet = GetStyleItemSet_Impl( aString, nWhich );
+
+ if ( pItemSet && nWhich )
+ {
+ SfxItemState eState = pItemSet->GetItemState( nWhich, sal_False );
+
+ // if no rotate value is set, look at orientation
+ //! also for a fixed value of 0 (in case orientation is ambiguous)?
+ if ( nWhich == ATTR_ROTATE_VALUE && eState == SFX_ITEM_DEFAULT )
+ eState = pItemSet->GetItemState( ATTR_ORIENTATION, sal_False );
+
+ if ( eState == SFX_ITEM_SET )
+ eRet = beans::PropertyState_DIRECT_VALUE;
+ else if ( eState == SFX_ITEM_DEFAULT )
+ eRet = beans::PropertyState_DEFAULT_VALUE;
+ else if ( eState == SFX_ITEM_DONTCARE )
+ eRet = beans::PropertyState_AMBIGUOUS_VALUE; // kann eigentlich nicht sein...
+ else
+ DBG_ERROR("unbekannter ItemState");
+ }
+ return eRet;
+}
+
+uno::Sequence<beans::PropertyState> SAL_CALL ScStyleObj::getPropertyStates(
+ const uno::Sequence<rtl::OUString>& aPropertyNames )
+ throw(beans::UnknownPropertyException, uno::RuntimeException)
+{
+ // duemmliche Default-Implementierung: alles einzeln per getPropertyState holen
+ //! sollte optimiert werden!
+
+ ScUnoGuard aGuard;
+ const rtl::OUString* pNames = aPropertyNames.getConstArray();
+ uno::Sequence<beans::PropertyState> aRet(aPropertyNames.getLength());
+ beans::PropertyState* pStates = aRet.getArray();
+ for(sal_Int32 i = 0; i < aPropertyNames.getLength(); i++)
+ pStates[i] = getPropertyState(pNames[i]);
+ return aRet;
+}
+
+void SAL_CALL ScStyleObj::setPropertyToDefault( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SetOrResetPropertyValue_Impl( aPropertyName, NULL );
+}
+
+uno::Any SAL_CALL ScStyleObj::getPropertyDefault( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+ uno::Any aAny;
+ UINT16 nWhich = 0;
+
+ const SfxItemSet* pStyleSet = GetStyleItemSet_Impl( aString, nWhich );
+
+ if ( pStyleSet && nWhich )
+ {
+ // Default ist Default vom ItemPool, nicht vom Standard-Style,
+ // damit es zu setPropertyToDefault passt
+ SfxItemSet aEmptySet( *pStyleSet->GetPool(), pStyleSet->GetRanges() );
+ // #65253# Default-Items mit falscher Slot-ID funktionieren im SfxItemPropertySet3 nicht
+ //! Slot-IDs aendern...
+ if ( aEmptySet.GetPool()->GetSlotId(nWhich) == nWhich &&
+ aEmptySet.GetItemState(nWhich, sal_False) == SFX_ITEM_DEFAULT )
+ {
+ aEmptySet.Put( aEmptySet.Get( nWhich ) );
+ }
+ const SfxItemSet* pItemSet = &aEmptySet;
+
+ switch ( nWhich ) // fuer Item-Spezial-Behandlungen
+ {
+ case ATTR_VALUE_FORMAT:
+ // default has no language set
+ aAny <<= sal_Int32( ((const SfxUInt32Item&)pItemSet->Get(nWhich)).GetValue() );
+ break;
+ case ATTR_INDENT:
+ aAny <<= sal_Int16( TwipsToHMM(((const SfxUInt16Item&)
+ pItemSet->Get(nWhich)).GetValue()) );
+ break;
+ case ATTR_PAGE_SCALE:
+ case ATTR_PAGE_SCALETOPAGES:
+ case ATTR_PAGE_FIRSTPAGENO:
+ aAny <<= sal_Int16( ((const SfxUInt16Item&)pItemSet->Get(nWhich)).GetValue() );
+ break;
+ case ATTR_PAGE_CHARTS:
+ case ATTR_PAGE_OBJECTS:
+ case ATTR_PAGE_DRAWINGS:
+ //! sal_Bool-MID fuer ScViewObjectModeItem definieren?
+ aAny <<= sal_Bool( ((const ScViewObjectModeItem&)pItemSet->Get(nWhich)).
+ GetValue() == VOBJ_MODE_SHOW );
+ break;
+ default:
+ aAny = aPropSet.getPropertyValue(aString, *pItemSet);
+ }
+ }
+ return aAny;
+}
+
+// beans::XPropertySet
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScStyleObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return aPropSet.getPropertySetInfo();
+}
+
+void SAL_CALL ScStyleObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ SetOrResetPropertyValue_Impl( aPropertyName, &aValue );
+}
+
+void ScStyleObj::SetOrResetPropertyValue_Impl(const rtl::OUString& aPropertyName, const uno::Any* pValue)
+{
+ SfxStyleSheetBase* pStyle = GetStyle_Impl();
+ if (pStyle)
+ {
+ // #70909# cell styles cannot be modified if any sheet is protected
+ if ( eFamily == SFX_STYLE_FAMILY_PARA && lcl_AnyTabProtected( *pDocShell->GetDocument() ) )
+ return; //! exception?
+
+ String aString = aPropertyName;
+ SfxItemSet& rSet = pStyle->GetItemSet(); // direkt im lebenden Style aendern...
+ sal_Bool bDone = sal_False;
+ if ( eFamily == SFX_STYLE_FAMILY_PAGE )
+ {
+ const SfxItemPropertyMap* pHeaderMap =
+ SfxItemPropertyMap::GetByName( lcl_GetHeaderStyleMap(), aString );
+ if ( pHeaderMap && pHeaderMap->nWID )
+ {
+ SvxSetItem aNewHeader( (const SvxSetItem&)rSet.Get(ATTR_PAGE_HEADERSET) );
+ if (pValue)
+ aPropSet.setPropertyValue(aString, *pValue, aNewHeader.GetItemSet());
+ else
+ aNewHeader.GetItemSet().ClearItem( pHeaderMap->nWID );
+ rSet.Put( aNewHeader );
+ bDone = sal_True;
+ }
+ else
+ {
+ const SfxItemPropertyMap* pFooterMap =
+ SfxItemPropertyMap::GetByName( lcl_GetFooterStyleMap(), aString );
+ if ( pFooterMap && pFooterMap->nWID )
+ {
+ SvxSetItem aNewFooter( (const SvxSetItem&)rSet.Get(ATTR_PAGE_FOOTERSET) );
+ if (pValue)
+ aPropSet.setPropertyValue(aString, *pValue, aNewFooter.GetItemSet());
+ else
+ aNewFooter.GetItemSet().ClearItem( pFooterMap->nWID );
+ rSet.Put( aNewFooter );
+ bDone = sal_True;
+ }
+ }
+ }
+ if (!bDone)
+ {
+ const SfxItemPropertyMap* pMap =
+ SfxItemPropertyMap::GetByName( aPropSet.getPropertyMap(), aString );
+ if ( pMap && pMap->nWID )
+ {
+ if (pValue)
+ {
+ switch ( pMap->nWID ) // fuer Item-Spezial-Behandlungen
+ {
+ case ATTR_VALUE_FORMAT:
+ {
+ // #67847# language for number formats
+ SvNumberFormatter* pFormatter =
+ pDocShell->GetDocument()->GetFormatTable();
+ UINT32 nOldFormat = ((const SfxUInt32Item&)
+ rSet.Get( ATTR_VALUE_FORMAT )).GetValue();
+ LanguageType eOldLang = ((const SvxLanguageItem&)
+ rSet.Get( ATTR_LANGUAGE_FORMAT )).GetLanguage();
+ nOldFormat = pFormatter->
+ GetFormatForLanguageIfBuiltIn( nOldFormat, eOldLang );
+
+ UINT32 nNewFormat;
+ *pValue >>= nNewFormat;
+ rSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, nNewFormat ) );
+
+ const SvNumberformat* pNewEntry = pFormatter->GetEntry( nNewFormat );
+ LanguageType eNewLang =
+ pNewEntry ? pNewEntry->GetLanguage() : LANGUAGE_DONTKNOW;
+ if ( eNewLang != eOldLang && eNewLang != LANGUAGE_DONTKNOW )
+ rSet.Put( SvxLanguageItem( eNewLang, ATTR_LANGUAGE_FORMAT ) );
+
+ //! keep default state of number format if only language changed?
+ }
+ break;
+ case ATTR_INDENT:
+ {
+ sal_Int16 nVal;
+ *pValue >>= nVal;
+ rSet.Put( SfxUInt16Item( pMap->nWID, HMMToTwips(nVal) ) );
+ }
+ break;
+ case ATTR_ROTATE_VALUE:
+ {
+ sal_Int32 nRotVal;
+ if ( *pValue >>= nRotVal )
+ {
+ // stored value is always between 0 and 360 deg.
+ nRotVal %= 36000;
+ if ( nRotVal < 0 )
+ nRotVal += 36000;
+
+ // always set rotation value and orientation
+
+ SvxCellOrientation eOrient = SVX_ORIENTATION_STANDARD;
+ BOOL bSetOrient = TRUE;
+
+ if ( nRotVal == 9000 )
+ eOrient = SVX_ORIENTATION_BOTTOMTOP;
+ else if ( nRotVal == 27000 )
+ eOrient = SVX_ORIENTATION_TOPBOTTOM;
+ else if ( nRotVal == 0 )
+ {
+ // don't overwrite stacked orientation by setting
+ // rotation to 0
+
+ SvxCellOrientation eOld = (SvxCellOrientation)
+ ((const SvxOrientationItem&)rSet.Get(ATTR_ORIENTATION)).
+ GetValue();
+ if ( eOld == SVX_ORIENTATION_STACKED )
+ bSetOrient = FALSE;
+ }
+
+ rSet.Put( SfxInt32Item( ATTR_ROTATE_VALUE, nRotVal ) );
+ if (bSetOrient)
+ rSet.Put( SvxOrientationItem( eOrient, ATTR_ORIENTATION ) );
+ }
+ }
+ break;
+ case ATTR_PAGE_SCALE:
+ case ATTR_PAGE_SCALETOPAGES:
+ case ATTR_PAGE_FIRSTPAGENO:
+ {
+ sal_Int16 nVal;
+ *pValue >>= nVal;
+ rSet.Put( SfxUInt16Item( pMap->nWID, nVal ) );
+ }
+ break;
+ case ATTR_PAGE_CHARTS:
+ case ATTR_PAGE_OBJECTS:
+ case ATTR_PAGE_DRAWINGS:
+ {
+ sal_Bool bBool;
+ *pValue >>= bBool;
+ //! sal_Bool-MID fuer ScViewObjectModeItem definieren?
+ rSet.Put( ScViewObjectModeItem( pMap->nWID,
+ bBool ? VOBJ_MODE_SHOW : VOBJ_MODE_HIDE ) );
+ }
+ break;
+ default:
+ // #65253# Default-Items mit falscher Slot-ID
+ // funktionieren im SfxItemPropertySet3 nicht
+ //! Slot-IDs aendern...
+ if ( rSet.GetPool()->GetSlotId(pMap->nWID) == pMap->nWID &&
+ rSet.GetItemState(pMap->nWID, sal_False) == SFX_ITEM_DEFAULT )
+ {
+ rSet.Put( rSet.Get(pMap->nWID) );
+ }
+ aPropSet.setPropertyValue(aString, *pValue, rSet);
+ }
+ }
+ else
+ {
+ rSet.ClearItem( pMap->nWID );
+ // #67847# language for number formats
+ if ( pMap->nWID == ATTR_VALUE_FORMAT )
+ rSet.ClearItem( ATTR_LANGUAGE_FORMAT );
+
+ //! for ATTR_ROTATE_VALUE, also reset ATTR_ORIENTATION?
+ }
+ }
+ }
+
+ //! DocFunc-Funktion??
+ //! Undo ?????????????
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ if ( eFamily == SFX_STYLE_FAMILY_PARA )
+ {
+ // Zeilenhoehen anpassen...
+
+ VirtualDevice aVDev;
+ Point aLogic = aVDev.LogicToPixel( Point(1000,1000), MAP_TWIP );
+ double nPPTX = aLogic.X() / 1000.0;
+ double nPPTY = aLogic.Y() / 1000.0;
+ Fraction aZoom(1,1);
+ pDoc->StyleSheetChanged( pStyle, sal_False, &aVDev, nPPTX, nPPTY, aZoom, aZoom );
+
+ pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_LEFT );
+ pDocShell->SetDocumentModified();
+ }
+ else
+ {
+ //! ModifyStyleSheet am Dokument (alte Werte merken)
+
+ pDocShell->PageStyleModified( aStyleName, sal_True );
+ }
+ }
+}
+
+uno::Any SAL_CALL ScStyleObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+ uno::Any aAny;
+ UINT16 nWhich = 0;
+
+ const SfxItemSet* pItemSet = GetStyleItemSet_Impl( aString, nWhich );
+
+ if ( pItemSet && nWhich )
+ {
+ switch ( nWhich ) // fuer Item-Spezial-Behandlungen
+ {
+ case ATTR_VALUE_FORMAT:
+ if ( pDocShell )
+ {
+ UINT32 nOldFormat = ((const SfxUInt32Item&)
+ pItemSet->Get( ATTR_VALUE_FORMAT )).GetValue();
+ LanguageType eOldLang = ((const SvxLanguageItem&)
+ pItemSet->Get( ATTR_LANGUAGE_FORMAT )).GetLanguage();
+ nOldFormat = pDocShell->GetDocument()->GetFormatTable()->
+ GetFormatForLanguageIfBuiltIn( nOldFormat, eOldLang );
+ aAny <<= nOldFormat;
+ }
+ break;
+ case ATTR_INDENT:
+ aAny <<= sal_Int16( TwipsToHMM(((const SfxUInt16Item&)
+ pItemSet->Get(nWhich)).GetValue()) );
+ break;
+ case ATTR_ROTATE_VALUE:
+ {
+ // if value is 0 and orientation topbottom or bottomtop,
+ // adjust value
+
+ sal_Int32 nRotVal = ((const SfxInt32Item&)
+ pItemSet->Get(ATTR_ROTATE_VALUE)).GetValue();
+ if ( nRotVal == 0 )
+ {
+ SvxCellOrientation eOrient = (SvxCellOrientation)
+ ((const SvxOrientationItem&)pItemSet->Get(ATTR_ORIENTATION)).
+ GetValue();
+ if ( eOrient == SVX_ORIENTATION_BOTTOMTOP )
+ nRotVal = 9000;
+ else if ( eOrient == SVX_ORIENTATION_TOPBOTTOM )
+ nRotVal = 27000;
+ }
+ aAny <<= nRotVal;
+ }
+ break;
+ case ATTR_PAGE_SCALE:
+ case ATTR_PAGE_SCALETOPAGES:
+ case ATTR_PAGE_FIRSTPAGENO:
+ aAny <<= sal_Int16( ((const SfxUInt16Item&)pItemSet->Get(nWhich)).GetValue() );
+ break;
+ case ATTR_PAGE_CHARTS:
+ case ATTR_PAGE_OBJECTS:
+ case ATTR_PAGE_DRAWINGS:
+ //! sal_Bool-MID fuer ScViewObjectModeItem definieren?
+ aAny <<= sal_Bool( ((const ScViewObjectModeItem&)pItemSet->
+ Get(nWhich)).GetValue() == VOBJ_MODE_SHOW );
+ break;
+ default:
+ // #65253# Default-Items mit falscher Slot-ID
+ // funktionieren im SfxItemPropertySet3 nicht
+ //! Slot-IDs aendern...
+ if ( pItemSet->GetPool()->GetSlotId(nWhich) == nWhich &&
+ pItemSet->GetItemState(nWhich, sal_False) == SFX_ITEM_DEFAULT )
+ {
+ SfxItemSet aNoEmptySet( *pItemSet );
+ aNoEmptySet.Put( aNoEmptySet.Get( nWhich ) );
+ aAny = aPropSet.getPropertyValue(aString, aNoEmptySet);
+ }
+ else
+ aAny = aPropSet.getPropertyValue(aString, *pItemSet);
+ }
+ }
+ else if ( aString.EqualsAscii( SC_UNONAME_DISPNAME ) ) // read-only
+ {
+ // core always has the display name
+ SfxStyleSheetBase* pStyle = GetStyle_Impl();
+ if (pStyle)
+ aAny <<= rtl::OUString( pStyle->GetName() );
+ }
+
+ return aAny;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScStyleObj )
+
+//------------------------------------------------------------------------
+
+
+
+
diff --git a/sc/source/ui/unoobj/targuno.cxx b/sc/source/ui/unoobj/targuno.cxx
new file mode 100644
index 000000000000..9af13ab017c7
--- /dev/null
+++ b/sc/source/ui/unoobj/targuno.cxx
@@ -0,0 +1,370 @@
+/*************************************************************************
+ *
+ * $RCSfile: targuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <vcl/image.hxx>
+#include <vcl/virdev.hxx>
+//#include <toolkit/unoiface.hxx>
+#include <toolkit/unohlp.hxx>
+#include <svtools/itemprop.hxx>
+#include <svtools/smplhint.hxx>
+
+#ifndef _COM_SUN_STAR_AWT_XBITMAP_HPP_
+#include <com/sun/star/awt/XBitmap.hpp>
+#endif
+
+#include "targuno.hxx"
+#include "miscuno.hxx"
+#include "docuno.hxx"
+#include "datauno.hxx"
+#include "nameuno.hxx"
+#include "docsh.hxx"
+#include "content.hxx"
+#include "unoguard.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "unonames.hxx"
+
+using namespace ::com::sun::star;
+
+//------------------------------------------------------------------------
+
+sal_uInt16 nTypeResIds[SC_LINKTARGETTYPE_COUNT] =
+{
+ SCSTR_CONTENT_TABLE, // SC_LINKTARGETTYPE_SHEET
+ SCSTR_CONTENT_RANGENAME, // SC_LINKTARGETTYPE_RANGENAME
+ SCSTR_CONTENT_DBAREA // SC_LINKTARGETTYPE_DBAREA
+};
+
+const SfxItemPropertyMap* lcl_GetLinkTargetMap()
+{
+ static SfxItemPropertyMap aLinkTargetMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNO_LINKDISPBIT), 0, &getCppuType((const uno::Reference<awt::XBitmap>*)0), beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNO_LINKDISPNAME), 0, &getCppuType((const ::rtl::OUString*)0), beans::PropertyAttribute::READONLY, 0 },
+ {0,0,0,0}
+ };
+ return aLinkTargetMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+// service for ScLinkTargetTypeObj is not defined
+// must not support document::LinkTarget because the target type cannot be used as a target
+
+SC_SIMPLE_SERVICE_INFO( ScLinkTargetTypesObj, "ScLinkTargetTypesObj", "com.sun.star.document.LinkTargets" )
+SC_SIMPLE_SERVICE_INFO( ScLinkTargetTypeObj, "ScLinkTargetTypeObj", "com.sun.star.document.LinkTargetSupplier" )
+SC_SIMPLE_SERVICE_INFO( ScLinkTargetsObj, "ScLinkTargetsObj", "com.sun.star.document.LinkTargets" )
+
+//------------------------------------------------------------------------
+
+ScLinkTargetTypesObj::ScLinkTargetTypesObj(ScDocShell* pDocSh) :
+ pDocShell( pDocSh )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+
+ for (sal_uInt16 i=0; i<SC_LINKTARGETTYPE_COUNT; i++)
+ aNames[i] = String( ScResId( nTypeResIds[i] ) );
+}
+
+ScLinkTargetTypesObj::~ScLinkTargetTypesObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScLinkTargetTypesObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( SfxSimpleHint ) && ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ pDocShell = NULL; // document gone
+}
+
+// container::XNameAccess
+
+uno::Any SAL_CALL ScLinkTargetTypesObj::getByName(const rtl::OUString& aName)
+ throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ if (pDocShell)
+ {
+ String aNameStr = aName;
+ for (sal_uInt16 i=0; i<SC_LINKTARGETTYPE_COUNT; i++)
+ if ( aNames[i] == aNameStr )
+ {
+ uno::Reference< beans::XPropertySet > xInt = new ScLinkTargetTypeObj( pDocShell, i );
+ uno::Any aRet;
+ aRet <<= xInt;
+ return aRet;
+ }
+ }
+
+ return uno::Any(); //! exception?
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScLinkTargetTypesObj::getElementNames(void) throw( uno::RuntimeException )
+{
+ uno::Sequence<rtl::OUString> aRet(SC_LINKTARGETTYPE_COUNT);
+ rtl::OUString* pArray = aRet.getArray();
+ for (sal_uInt16 i=0; i<SC_LINKTARGETTYPE_COUNT; i++)
+ pArray[i] = aNames[i];
+ return aRet;
+}
+
+sal_Bool SAL_CALL ScLinkTargetTypesObj::hasByName(const rtl::OUString& aName) throw( uno::RuntimeException )
+{
+ String aNameStr = aName;
+ for (sal_uInt16 i=0; i<SC_LINKTARGETTYPE_COUNT; i++)
+ if ( aNames[i] == aNameStr )
+ return sal_True;
+ return sal_False;
+}
+
+// container::XElementAccess
+
+uno::Type SAL_CALL ScLinkTargetTypesObj::getElementType(void) throw( uno::RuntimeException )
+{
+ return ::getCppuType((const uno::Reference< beans::XPropertySet >*)0);
+}
+
+sal_Bool SAL_CALL ScLinkTargetTypesObj::hasElements(void) throw( uno::RuntimeException )
+{
+ return sal_True;
+}
+
+//------------------------------------------------------------------------
+
+ScLinkTargetTypeObj::ScLinkTargetTypeObj(ScDocShell* pDocSh, sal_uInt16 nT) :
+ pDocShell( pDocSh ),
+ nType( nT )
+{
+ pDocShell->GetDocument()->AddUnoObject(*this);
+ aName = String( ScResId( nTypeResIds[nType] ) ); //! on demand?
+}
+
+ScLinkTargetTypeObj::~ScLinkTargetTypeObj()
+{
+ if (pDocShell)
+ pDocShell->GetDocument()->RemoveUnoObject(*this);
+}
+
+void ScLinkTargetTypeObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( SfxSimpleHint ) && ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ pDocShell = NULL; // document gone
+}
+
+// document::XLinkTargetSupplier
+
+uno::Reference< container::XNameAccess > SAL_CALL ScLinkTargetTypeObj::getLinks(void) throw( uno::RuntimeException )
+{
+ uno::Reference< container::XNameAccess > xCollection;
+
+ if ( pDocShell )
+ {
+ switch ( nType )
+ {
+ case SC_LINKTARGETTYPE_SHEET:
+ xCollection = new ScTableSheetsObj(pDocShell);
+ break;
+ case SC_LINKTARGETTYPE_RANGENAME:
+ xCollection = new ScNamedRangesObj(pDocShell);
+ break;
+ case SC_LINKTARGETTYPE_DBAREA:
+ xCollection = new ScDatabaseRangesObj(pDocShell);
+ break;
+ default:
+ DBG_ERROR("invalid type");
+ }
+ }
+
+ // wrap collection in ScLinkTargetsObj because service document::LinkTargets requires
+ // beans::XPropertySet as ElementType in container::XNameAccess.
+ if ( xCollection.is() )
+ return new ScLinkTargetsObj( xCollection );
+ return NULL;
+}
+
+// beans::XPropertySet
+
+uno::Reference< beans::XPropertySetInfo > SAL_CALL ScLinkTargetTypeObj::getPropertySetInfo(void) throw( uno::RuntimeException )
+{
+ ScUnoGuard aGuard;
+ static uno::Reference< beans::XPropertySetInfo > aRef = new SfxItemPropertySetInfo( lcl_GetLinkTargetMap() );
+ return aRef;
+}
+
+void SAL_CALL ScLinkTargetTypeObj::setPropertyValue(const rtl::OUString& aPropertyName,
+ const uno::Any& aValue)
+ throw( beans::UnknownPropertyException,
+ beans::PropertyVetoException,
+ lang::IllegalArgumentException,
+ lang::WrappedTargetException,
+ uno::RuntimeException )
+{
+ // everything is read-only
+ //! exception?
+}
+
+// static
+void ScLinkTargetTypeObj::SetLinkTargetBitmap( uno::Any& rRet, sal_uInt16 nType )
+{
+ sal_uInt16 nImgId = 0;
+ switch ( nType )
+ {
+ case SC_LINKTARGETTYPE_SHEET:
+ nImgId = SC_CONTENT_TABLE;
+ break;
+ case SC_LINKTARGETTYPE_RANGENAME:
+ nImgId = SC_CONTENT_RANGENAME;
+ break;
+ case SC_LINKTARGETTYPE_DBAREA:
+ nImgId = SC_CONTENT_DBAREA;
+ break;
+ }
+ if (nImgId)
+ {
+ ImageList aEntryImages( ScResId( RID_IMAGELIST_NAVCONT ) );
+ const Image& rImage = aEntryImages.GetImage( nImgId );
+ Size aSize = rImage.GetSizePixel();
+
+ VirtualDevice aVDev;
+ aVDev.SetOutputSizePixel( aSize );
+ aVDev.DrawImage( Point(0,0), rImage );
+ Bitmap aBitmap = aVDev.GetBitmap( Point(0,0), aSize );
+
+ BitmapEx aBitmapEx( aBitmap );
+ uno::Reference< awt::XBitmap > xBmp = VCLUnoHelper::CreateBitmap( aBitmapEx );
+ rRet <<= xBmp;
+ }
+}
+
+uno::Any SAL_CALL ScLinkTargetTypeObj::getPropertyValue(const rtl::OUString& PropertyName)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ uno::Any aRet;
+ String aNameStr = PropertyName;
+ if ( aNameStr.EqualsAscii( SC_UNO_LINKDISPBIT ) )
+ SetLinkTargetBitmap( aRet, nType );
+ else if ( aNameStr.EqualsAscii( SC_UNO_LINKDISPNAME ) )
+ aRet <<= rtl::OUString( aName );
+
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScLinkTargetTypeObj )
+
+//------------------------------------------------------------------------
+
+ScLinkTargetsObj::ScLinkTargetsObj( const uno::Reference< container::XNameAccess > & rColl ) :
+ xCollection( rColl )
+{
+ DBG_ASSERT( xCollection.is(), "ScLinkTargetsObj: NULL" );
+}
+
+ScLinkTargetsObj::~ScLinkTargetsObj()
+{
+}
+
+// container::XNameAccess
+
+uno::Any SAL_CALL ScLinkTargetsObj::getByName(const rtl::OUString& aName)
+ throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ uno::Reference< uno::XInterface > xInt = ScUnoHelpFunctions::AnyToInterface( xCollection->getByName(aName) );
+ uno::Reference< beans::XPropertySet > xProp( xInt, uno::UNO_QUERY );
+ if (xProp.is())
+ {
+ uno::Any aRet;
+ aRet <<= xProp;
+ return aRet;
+ }
+
+ return uno::Any(); //! exception?
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScLinkTargetsObj::getElementNames(void) throw( uno::RuntimeException )
+{
+ return xCollection->getElementNames();
+}
+
+sal_Bool SAL_CALL ScLinkTargetsObj::hasByName(const rtl::OUString& aName) throw( uno::RuntimeException )
+{
+ return xCollection->hasByName(aName);
+}
+
+// container::XElementAccess
+
+uno::Type SAL_CALL ScLinkTargetsObj::getElementType(void) throw( uno::RuntimeException )
+{
+ return ::getCppuType((const uno::Reference< beans::XPropertySet >*)0);
+}
+
+sal_Bool SAL_CALL ScLinkTargetsObj::hasElements(void) throw( uno::RuntimeException )
+{
+ return xCollection->hasElements();
+}
+
+
+
diff --git a/sc/source/ui/unoobj/textuno.cxx b/sc/source/ui/unoobj/textuno.cxx
new file mode 100644
index 000000000000..c7181dd03356
--- /dev/null
+++ b/sc/source/ui/unoobj/textuno.cxx
@@ -0,0 +1,614 @@
+/*************************************************************************
+ *
+ * $RCSfile: textuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "scitems.hxx"
+#include <svx/eeitem.hxx>
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <svx/editeng.hxx>
+#include <svx/editobj.hxx>
+#include <svx/flditem.hxx>
+#include <svx/unomid.hxx>
+#include <svx/unoprnms.hxx>
+#include <rtl/uuid.h>
+
+#ifndef _COM_SUN_STAR_AWT_FONTSLANT_HPP_
+#include <com/sun/star/awt/FontSlant.hpp>
+#endif
+
+#include "textuno.hxx"
+#include "fielduno.hxx"
+#include "servuno.hxx"
+#include "editsrc.hxx"
+#include "docsh.hxx"
+#include "editutil.hxx"
+#include "unoguard.hxx"
+#include "miscuno.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+// wie SVX_UNOEDIT_CHAR_PROPERTIES, aber mit CONVERT_TWIPS bei der Font-Hoehe
+// (Kopf-/Fusszeilen sind in Twips)
+
+#define SC_TWIPS_CHAR_PROPERTIES \
+ { MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_COLOR), EE_CHAR_COLOR, &::getCppuType((const sal_Int32*)0), 0, 0 }, \
+ { MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_CROSSEDOUT), EE_CHAR_STRIKEOUT, &::getBooleanCppuType(), 0, MID_CROSSED_OUT }, \
+ { MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_ESCAPEMENT), EE_CHAR_ESCAPEMENT, &::getCppuType((const sal_Int16*)0), 0, MID_ESC }, \
+ { MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_FONTNAME), EE_CHAR_FONTINFO, &::getCppuType((const ::rtl::OUString*)0), 0, MID_FONT_FAMILY_NAME },\
+ { MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_HEIGHT), EE_CHAR_FONTHEIGHT, &::getCppuType((const Float*)0), 0, MID_FONTHEIGHT | CONVERT_TWIPS }, \
+ { MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_POSTURE), EE_CHAR_ITALIC, &::getCppuType((const ::com::sun::star::awt::FontSlant*)0),0, MID_POSTURE }, \
+ { MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_SHADOWED), EE_CHAR_SHADOW, &::getBooleanCppuType(), 0, 0 }, \
+ { MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_STYLE), EE_CHAR_FONTINFO, &::getCppuType((const ::rtl::OUString*)0), 0, MID_FONT_STYLE_NAME }, \
+ { MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_UNDERLINE), EE_CHAR_UNDERLINE, &::getCppuType((const sal_Int16*)0), 0, MID_UNDERLINE }, \
+ { MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_WEIGHT), EE_CHAR_WEIGHT, &::getCppuType((const Float*)0), 0, MID_WEIGHT }
+
+
+const SfxItemPropertyMap* lcl_GetHdFtPropertyMap()
+{
+ static SfxItemPropertyMap aHdFtPropertyMap_Impl[] =
+ {
+ SC_TWIPS_CHAR_PROPERTIES,
+ SVX_UNOEDIT_FONT_PROPERTIES,
+ SVX_UNOEDIT_PARA_PROPERTIES,
+ {0,0,0,0}
+ };
+ return aHdFtPropertyMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+SC_SIMPLE_SERVICE_INFO( ScHeaderFooterContentObj, "ScHeaderFooterContentObj", "com.sun.star.sheet.HeaderFooterContent" )
+SC_SIMPLE_SERVICE_INFO( ScHeaderFooterTextObj, "ScHeaderFooterTextObj", "stardiv.one.Text.Text" )
+
+//------------------------------------------------------------------------
+
+ScHeaderFooterContentObj::ScHeaderFooterContentObj() :
+ pLeftText ( NULL ),
+ pCenterText ( NULL ),
+ pRightText ( NULL )
+{
+ // fuer getReflection
+}
+
+ScHeaderFooterContentObj::ScHeaderFooterContentObj( const EditTextObject* pLeft,
+ const EditTextObject* pCenter,
+ const EditTextObject* pRight ) :
+ pLeftText ( NULL ),
+ pCenterText ( NULL ),
+ pRightText ( NULL )
+{
+ if ( pLeft )
+ pLeftText = pLeft->Clone();
+ if ( pCenter )
+ pCenterText = pCenter->Clone();
+ if ( pRight )
+ pRightText = pRight->Clone();
+}
+
+ScHeaderFooterContentObj::~ScHeaderFooterContentObj()
+{
+ delete pLeftText;
+ delete pCenterText;
+ delete pRightText;
+}
+
+void ScHeaderFooterContentObj::UpdateText( USHORT nPart, EditEngine& rSource )
+{
+ EditTextObject* pNew = rSource.CreateTextObject();
+ switch (nPart)
+ {
+ case SC_HDFT_LEFT:
+ delete pLeftText;
+ pLeftText = pNew;
+ break;
+ case SC_HDFT_CENTER:
+ delete pCenterText;
+ pCenterText = pNew;
+ break;
+ default: // SC_HDFT_RIGHT
+ delete pRightText;
+ pRightText = pNew;
+ break;
+ }
+}
+
+// XHeaderFooterContent
+
+uno::Reference<text::XText> SAL_CALL ScHeaderFooterContentObj::getLeftText()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScHeaderFooterTextObj( *this, SC_HDFT_LEFT );
+}
+
+uno::Reference<text::XText> SAL_CALL ScHeaderFooterContentObj::getCenterText()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScHeaderFooterTextObj( *this, SC_HDFT_CENTER );
+}
+
+uno::Reference<text::XText> SAL_CALL ScHeaderFooterContentObj::getRightText()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScHeaderFooterTextObj( *this, SC_HDFT_RIGHT );
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScHeaderFooterContentObj::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScHeaderFooterContentObj::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScHeaderFooterContentObj* ScHeaderFooterContentObj::getImplementation(
+ const uno::Reference<sheet::XHeaderFooterContent> xObj )
+{
+ ScHeaderFooterContentObj* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScHeaderFooterContentObj*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+
+//------------------------------------------------------------------------
+
+ScHeaderFooterTextObj::ScHeaderFooterTextObj( ScHeaderFooterContentObj& rContent,
+ USHORT nP ) :
+ rContentObj( rContent ),
+ nPart( nP )
+{
+ rContentObj.acquire(); // darf nicht wegkommen
+
+ //! pUnoText erst bei Bedarf anlegen?
+ // nicht einfach aggregieren, weil getString/setString selber gemacht wird
+ ScHeaderFooterEditSource aEditSource( &rContent, nP );
+ pUnoText = new SvxUnoText( &aEditSource, lcl_GetHdFtPropertyMap(), uno::Reference<text::XText>() );
+ pUnoText->acquire();
+}
+
+ScHeaderFooterTextObj::~ScHeaderFooterTextObj()
+{
+ rContentObj.release();
+
+ if (pUnoText)
+ pUnoText->release();
+}
+
+// XText
+
+uno::Reference<text::XTextCursor> SAL_CALL ScHeaderFooterTextObj::createTextCursor()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScHeaderFooterTextCursor( *pUnoText );
+}
+
+uno::Reference<text::XTextCursor> SAL_CALL ScHeaderFooterTextObj::createTextCursorByRange(
+ const uno::Reference<text::XTextRange>& aTextPosition )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return pUnoText->createTextCursorByRange(aTextPosition);
+ //! wie ScCellObj::createTextCursorByRange, wenn SvxUnoTextRange_getReflection verfuegbar
+}
+
+void ScHeaderFooterTextObj::FillDummyFieldData( ScHeaderFieldData& rData ) // static
+{
+ String aDummy = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "???" ));
+ rData.aTitle = aDummy;
+ rData.aLongDocName = aDummy;
+ rData.aShortDocName = aDummy;
+ rData.aTabName = aDummy;
+ rData.nPageNo = 1;
+ rData.nTotalPages = 99;
+}
+
+rtl::OUString SAL_CALL ScHeaderFooterTextObj::getString() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ rtl::OUString aRet;
+ const EditTextObject* pData;
+ if (nPart == SC_HDFT_LEFT)
+ pData = rContentObj.GetLeftEditObject();
+ else if (nPart == SC_HDFT_CENTER)
+ pData = rContentObj.GetCenterEditObject();
+ else
+ pData = rContentObj.GetRightEditObject();
+ if (pData)
+ {
+ // for pure text, no font info is needed in pool defaults
+ ScHeaderEditEngine aEditEngine( EditEngine::CreatePool(), TRUE );
+
+ ScHeaderFieldData aData;
+ FillDummyFieldData( aData );
+ aEditEngine.SetData( aData );
+
+ aEditEngine.SetText(*pData);
+ aRet = ScEditUtil::GetSpaceDelimitedString( aEditEngine );
+ }
+ return aRet;
+}
+
+void SAL_CALL ScHeaderFooterTextObj::setString( const rtl::OUString& aText ) throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aText;
+
+ // for pure text, no font info is needed in pool defaults
+ ScHeaderEditEngine aEditEngine( EditEngine::CreatePool(), TRUE );
+ aEditEngine.SetText( aString );
+
+ rContentObj.UpdateText( nPart, aEditEngine );
+}
+
+void SAL_CALL ScHeaderFooterTextObj::insertString( const uno::Reference<text::XTextRange>& xRange,
+ const rtl::OUString& aString, sal_Bool bAbsorb )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ pUnoText->insertString( xRange, aString, bAbsorb );
+}
+
+void SAL_CALL ScHeaderFooterTextObj::insertControlCharacter(
+ const uno::Reference<text::XTextRange>& xRange,
+ sal_Int16 nControlCharacter, sal_Bool bAbsorb )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ pUnoText->insertControlCharacter( xRange, nControlCharacter, bAbsorb );
+}
+
+void SAL_CALL ScHeaderFooterTextObj::insertTextContent(
+ const uno::Reference<text::XTextRange >& xRange,
+ const uno::Reference<text::XTextContent >& xContent,
+ sal_Bool bAbsorb )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( xContent.is() && xRange.is() )
+ {
+ ScHeaderFieldObj* pHeaderField = ScHeaderFieldObj::getImplementation( xContent );
+
+ SvxUnoTextRangeBase* pTextRange =
+ ScHeaderFooterTextCursor::getImplementation( xRange );
+
+#if 0
+ if (!pTextRange)
+ pTextRange = (SvxUnoTextRange*)xRange->getImplementation(
+ SvxUnoTextRange_getReflection() );
+ //! bei SvxUnoTextRange testen, ob in passendem Objekt !!!
+#endif
+
+ if ( pHeaderField && !pHeaderField->IsInserted() && pTextRange )
+ {
+ SvxEditSource* pEditSource = pTextRange->GetEditSource();
+ ESelection aSelection = pTextRange->GetSelection();
+
+ SvxFieldItem aItem = pHeaderField->CreateFieldItem();
+
+ SvxTextForwarder* pForwarder = pEditSource->GetTextForwarder();
+ pForwarder->QuickInsertField( aItem, aSelection );
+ pEditSource->UpdateData();
+
+ // neue Selektion: ein Zeichen
+ aSelection.Adjust();
+ aSelection.nEndPara = aSelection.nStartPara;
+ aSelection.nEndPos = aSelection.nStartPos + 1;
+ pHeaderField->InitDoc( &rContentObj, nPart, aSelection );
+
+ return;
+ }
+ }
+
+ pUnoText->insertTextContent( xRange, xContent, bAbsorb );
+}
+
+void SAL_CALL ScHeaderFooterTextObj::removeTextContent(
+ const uno::Reference<text::XTextContent>& xContent )
+ throw(container::NoSuchElementException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if ( xContent.is() )
+ {
+ ScHeaderFieldObj* pHeaderField = ScHeaderFieldObj::getImplementation( xContent );
+ if ( pHeaderField && pHeaderField->IsInserted() )
+ {
+ //! Testen, ob das Feld in dieser Zelle ist
+ pHeaderField->DeleteField();
+ return;
+ }
+ }
+ pUnoText->removeTextContent( xContent );
+}
+
+uno::Reference<text::XText> SAL_CALL ScHeaderFooterTextObj::getText() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return pUnoText->getText();
+}
+
+uno::Reference<text::XTextRange> SAL_CALL ScHeaderFooterTextObj::getStart() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return pUnoText->getStart();
+}
+
+uno::Reference<text::XTextRange> SAL_CALL ScHeaderFooterTextObj::getEnd() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return pUnoText->getEnd();
+}
+
+// XTextFieldsSupplier
+
+uno::Reference<container::XEnumerationAccess> SAL_CALL ScHeaderFooterTextObj::getTextFields()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScHeaderFieldsObj( &rContentObj, nPart, SC_SERVICE_INVALID ); // alle Felder
+}
+
+uno::Reference<container::XNameAccess> SAL_CALL ScHeaderFooterTextObj::getTextFieldMasters()
+ throw(uno::RuntimeException)
+{
+ // sowas gibts nicht im Calc (?)
+ return NULL;
+}
+
+// XTextRangeMover
+
+void SAL_CALL ScHeaderFooterTextObj::moveTextRange(
+ const uno::Reference<text::XTextRange>& xRange,
+ sal_Int16 nParagraphs )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ pUnoText->moveTextRange( xRange, nParagraphs );
+}
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScHeaderFooterTextObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return pUnoText->createEnumeration();
+}
+
+// XElementAccess
+
+uno::Type SAL_CALL ScHeaderFooterTextObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return pUnoText->getElementType();
+}
+
+sal_Bool SAL_CALL ScHeaderFooterTextObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return pUnoText->hasElements();
+}
+
+//------------------------------------------------------------------------
+
+ScCellTextCursor::ScCellTextCursor() :
+ SvxUnoTextCursor( SvxUnoText() )
+{
+}
+
+ScCellTextCursor::ScCellTextCursor(const ScCellTextCursor& rOther) :
+ SvxUnoTextCursor( rOther )
+{
+}
+
+ScCellTextCursor::ScCellTextCursor(const SvxUnoText& rText) :
+ SvxUnoTextCursor( rText )
+{
+}
+
+ScCellTextCursor::~ScCellTextCursor()
+{
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScCellTextCursor::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return SvxUnoTextCursor::getSomething( rId );
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScCellTextCursor::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScCellTextCursor* ScCellTextCursor::getImplementation( const uno::Reference<uno::XInterface> xObj )
+{
+ ScCellTextCursor* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScCellTextCursor*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+ScHeaderFooterTextCursor::ScHeaderFooterTextCursor() :
+ SvxUnoTextCursor( SvxUnoText() )
+{
+}
+
+ScHeaderFooterTextCursor::ScHeaderFooterTextCursor(const ScHeaderFooterTextCursor& rOther) :
+ SvxUnoTextCursor( rOther )
+{
+}
+
+ScHeaderFooterTextCursor::ScHeaderFooterTextCursor(const SvxUnoText& rText) :
+ SvxUnoTextCursor( rText )
+{
+}
+
+ScHeaderFooterTextCursor::~ScHeaderFooterTextCursor()
+{
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScHeaderFooterTextCursor::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return SvxUnoTextCursor::getSomething( rId );
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScHeaderFooterTextCursor::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScHeaderFooterTextCursor* ScHeaderFooterTextCursor::getImplementation(
+ const uno::Reference<uno::XInterface> xObj )
+{
+ ScHeaderFooterTextCursor* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScHeaderFooterTextCursor*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+//------------------------------------------------------------------------
+
+
+
diff --git a/sc/source/ui/unoobj/unoguard.cxx b/sc/source/ui/unoobj/unoguard.cxx
new file mode 100644
index 000000000000..9bc2a3bb7cff
--- /dev/null
+++ b/sc/source/ui/unoobj/unoguard.cxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * $RCSfile: unoguard.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <vcl/svapp.hxx>
+#include <tools/debug.hxx>
+
+#include "unoguard.hxx"
+
+//------------------------------------------------------------------------
+
+ScUnoGuard::ScUnoGuard() :
+ OGuard( Application::GetSolarMutex() )
+{
+}
+
+
+
+
diff --git a/sc/source/ui/unoobj/viewuno.cxx b/sc/source/ui/unoobj/viewuno.cxx
new file mode 100644
index 000000000000..8fe5ac5b9ef9
--- /dev/null
+++ b/sc/source/ui/unoobj/viewuno.cxx
@@ -0,0 +1,1428 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewuno.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <svx/fmdpage.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdmark.hxx>
+#include <svx/svdouno.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdpagv.hxx>
+#include <svx/svdview.hxx>
+#include <svx/unoshape.hxx>
+#include <svx/unoshcol.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/printer.hxx>
+#include <sfx2/request.hxx>
+#include <rtl/uuid.h>
+
+#include "viewuno.hxx"
+#include "cellsuno.hxx"
+#include "miscuno.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "drwlayer.hxx"
+#include "drawview.hxx"
+#include "fupoor.hxx"
+#include "sc.hrc"
+#include "unoguard.hxx"
+#include "unonames.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+//! Clipping-Markierungen
+
+// alles ohne Which-ID, Map nur fuer PropertySetInfo
+
+const SfxItemPropertyMap* lcl_GetViewOptPropertyMap()
+{
+ static SfxItemPropertyMap aViewOptPropertyMap_Impl[] =
+ {
+ {MAP_CHAR_LEN(SC_UNO_COLROWHDR), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_GRIDCOLOR), 0, &getCppuType((sal_Int32*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_HIDESPELL), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_HORSCROLL), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_OUTLSYMB), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHEETTABS), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWANCHOR), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWCHARTS), 0, &getCppuType((sal_Int16*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWDRAW), 0, &getCppuType((sal_Int16*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWFORM), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWGRID), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWHELP), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWNOTES), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWOBJ), 0, &getCppuType((sal_Int16*)0), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWPAGEBR), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWZERO), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_SHOWSOLID), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_VALUEHIGH), 0, &getBooleanCppuType(), 0},
+ {MAP_CHAR_LEN(SC_UNO_VERTSCROLL), 0, &getBooleanCppuType(), 0},
+ {0,0,0,0}
+ };
+ return aViewOptPropertyMap_Impl;
+}
+
+//------------------------------------------------------------------------
+
+SV_IMPL_PTRARR( EventListenerArr, XEventListenerPtr );
+SV_IMPL_PTRARR( XSelectionChangeListenerArr_Impl, XSelectionChangeListenerPtr );
+
+#define SCTABVIEWOBJ_SERVICE "com.sun.star.sheet.SpreadsheetView"
+#define SCVIEWSETTINGS_SERVICE "com.sun.star.sheet.SpreadsheetViewSettings"
+
+SC_SIMPLE_SERVICE_INFO( ScViewPaneBase, "ScViewPaneObj", "com.sun.star.sheet.SpreadsheetViewPane" )
+
+//------------------------------------------------------------------------
+
+ScViewPaneBase::ScViewPaneBase(ScTabViewShell* pViewSh, USHORT nP) :
+ pViewShell( pViewSh ),
+ nPane( nP )
+{
+ if (pViewShell)
+ StartListening(*pViewShell);
+}
+
+ScViewPaneBase::~ScViewPaneBase()
+{
+ if (pViewShell)
+ EndListening(*pViewShell);
+}
+
+void ScViewPaneBase::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+{
+ if ( rHint.ISA( SfxSimpleHint ) &&
+ ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
+ pViewShell = NULL;
+}
+
+uno::Any SAL_CALL ScViewPaneBase::queryInterface( const uno::Type& rType )
+ throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( sheet::XViewPane )
+ SC_QUERYINTERFACE( sheet::XCellRangeReferrer )
+ SC_QUERYINTERFACE( view::XControlAccess )
+ SC_QUERYINTERFACE( lang::XServiceInfo )
+ SC_QUERYINTERFACE( lang::XTypeProvider )
+
+ return uno::Any(); // OWeakObject is in derived objects
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScViewPaneBase::getTypes() throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ aTypes.realloc(5);
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[0] = getCppuType((const uno::Reference<sheet::XViewPane>*)0);
+ pPtr[1] = getCppuType((const uno::Reference<sheet::XCellRangeReferrer>*)0);
+ pPtr[2] = getCppuType((const uno::Reference<view::XControlAccess>*)0);
+ pPtr[3] = getCppuType((const uno::Reference<lang::XServiceInfo>*)0);
+ pPtr[4] = getCppuType((const uno::Reference<lang::XTypeProvider>*)0);
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScViewPaneBase::getImplementationId()
+ throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+// XViewPane
+
+sal_Int32 SAL_CALL ScViewPaneBase::getFirstVisibleColumn() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pViewShell)
+ {
+ ScViewData* pViewData = pViewShell->GetViewData();
+ ScSplitPos eWhich = ( nPane == SC_VIEWPANE_ACTIVE ) ?
+ pViewData->GetActivePart() :
+ (ScSplitPos) nPane;
+ ScHSplitPos eWhichH = WhichH( eWhich );
+
+ return pViewData->GetPosX( eWhichH );
+ }
+ DBG_ERROR("keine View ?!?"); //! Exception?
+ return 0;
+}
+
+void SAL_CALL ScViewPaneBase::setFirstVisibleColumn( sal_Int32 nFirstVisibleColumn )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pViewShell)
+ {
+ ScViewData* pViewData = pViewShell->GetViewData();
+ ScSplitPos eWhich = ( nPane == SC_VIEWPANE_ACTIVE ) ?
+ pViewData->GetActivePart() :
+ (ScSplitPos) nPane;
+ ScHSplitPos eWhichH = WhichH( eWhich );
+
+ long nDeltaX = ((long)nFirstVisibleColumn) - pViewData->GetPosX( eWhichH );
+ pViewShell->ScrollX( nDeltaX, eWhichH );
+ }
+}
+
+sal_Int32 SAL_CALL ScViewPaneBase::getFirstVisibleRow() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pViewShell)
+ {
+ ScViewData* pViewData = pViewShell->GetViewData();
+ ScSplitPos eWhich = ( nPane == SC_VIEWPANE_ACTIVE ) ?
+ pViewData->GetActivePart() :
+ (ScSplitPos) nPane;
+ ScVSplitPos eWhichV = WhichV( eWhich );
+
+ return pViewData->GetPosY( eWhichV );
+ }
+ DBG_ERROR("keine View ?!?"); //! Exception?
+ return 0;
+}
+
+void SAL_CALL ScViewPaneBase::setFirstVisibleRow( sal_Int32 nFirstVisibleRow )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pViewShell)
+ {
+ ScViewData* pViewData = pViewShell->GetViewData();
+ ScSplitPos eWhich = ( nPane == SC_VIEWPANE_ACTIVE ) ?
+ pViewData->GetActivePart() :
+ (ScSplitPos) nPane;
+ ScVSplitPos eWhichV = WhichV( eWhich );
+
+ long nDeltaY = ((long)nFirstVisibleRow) - pViewData->GetPosY( eWhichV );
+ pViewShell->ScrollY( nDeltaY, eWhichV );
+ }
+}
+
+table::CellRangeAddress SAL_CALL ScViewPaneBase::getVisibleRange() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ table::CellRangeAddress aAdr;
+ if (pViewShell)
+ {
+ ScViewData* pViewData = pViewShell->GetViewData();
+ ScSplitPos eWhich = ( nPane == SC_VIEWPANE_ACTIVE ) ?
+ pViewData->GetActivePart() :
+ (ScSplitPos) nPane;
+ ScHSplitPos eWhichH = WhichH( eWhich );
+ ScVSplitPos eWhichV = WhichV( eWhich );
+
+ // VisibleCellsX gibt nur komplett sichtbare Zellen,
+ // VisibleRange in Excel auch teilweise sichtbare.
+ //! anpassen ???
+
+ USHORT nVisX = pViewData->VisibleCellsX( eWhichH );
+ USHORT nVisY = pViewData->VisibleCellsY( eWhichV );
+ if (!nVisX) nVisX = 1; // irgendwas muss ja im Range sein
+ if (!nVisY) nVisY = 1;
+ aAdr.Sheet = pViewData->GetTabNo();
+ aAdr.StartColumn = pViewData->GetPosX( eWhichH );
+ aAdr.StartRow = pViewData->GetPosY( eWhichV );
+ aAdr.EndColumn = aAdr.StartColumn + nVisX - 1;
+ aAdr.EndRow = aAdr.StartRow + nVisY - 1;
+ }
+ return aAdr;
+}
+
+// XCellRangeSource
+
+uno::Reference<table::XCellRange> SAL_CALL ScViewPaneBase::getReferredCells()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ if (pViewShell)
+ {
+ ScDocShell* pDocSh = pViewShell->GetViewData()->GetDocShell();
+
+ table::CellRangeAddress aAdr = getVisibleRange(); //! Hilfsfunktion mit ScRange?
+ ScRange aRange( aAdr.StartColumn, aAdr.StartRow, aAdr.Sheet,
+ aAdr.EndColumn, aAdr.EndRow, aAdr.Sheet );
+ if ( aRange.aStart == aRange.aEnd )
+ return new ScCellObj( pDocSh, aRange.aStart );
+ else
+ return new ScCellRangeObj( pDocSh, aRange );
+ }
+
+ return NULL;
+}
+
+// XControlAccess
+
+uno::Reference<awt::XControl> SAL_CALL ScViewPaneBase::getControl(
+ const uno::Reference<awt::XControlModel>& xModel )
+ throw(container::NoSuchElementException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<awt::XControl> xRet;
+ if ( pViewShell )
+ {
+ ScViewData* pViewData = pViewShell->GetViewData();
+ ScSplitPos eWhich = ( nPane == SC_VIEWPANE_ACTIVE ) ?
+ pViewData->GetActivePart() :
+ (ScSplitPos) nPane;
+ Window* pWin = pViewShell->GetWindowByPos( eWhich );
+ SdrModel* pModel = pViewData->GetDocument()->GetDrawLayer();
+ if ( pWin && pModel )
+ {
+ SdrPage* pPage = pModel->GetPage( pViewData->GetTabNo() );
+ if ( pPage )
+ {
+ ULONG nCount = pPage->GetObjCount();
+ for ( ULONG i=0; i<nCount; i++ )
+ {
+ SdrUnoObj* pFormObj = PTR_CAST( SdrUnoObj, pPage->GetObj(i) );
+ if ( pFormObj )
+ {
+ uno::Reference<awt::XControlModel> xCM = pFormObj->GetUnoControlModel();
+ if ( xCM.is() && xModel == xCM )
+ {
+ xRet = pFormObj->GetUnoControl( pWin );
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (!xRet.is())
+ throw container::NoSuchElementException(); // no control found
+
+ return xRet;
+}
+
+//------------------------------------------------------------------------
+
+ScViewPaneObj::ScViewPaneObj(ScTabViewShell* pViewSh, USHORT nP) :
+ ScViewPaneBase( pViewSh, nP )
+{
+}
+
+ScViewPaneObj::~ScViewPaneObj()
+{
+}
+
+uno::Any SAL_CALL ScViewPaneObj::queryInterface( const uno::Type& rType )
+ throw(uno::RuntimeException)
+{
+ // ScViewPaneBase has everything except OWeakObject
+
+ uno::Any aRet = ScViewPaneBase::queryInterface( rType );
+ if (!aRet.hasValue())
+ aRet = OWeakObject::queryInterface( rType );
+ return aRet;
+}
+
+void SAL_CALL ScViewPaneObj::acquire() throw(uno::RuntimeException)
+{
+ OWeakObject::acquire();
+}
+
+void SAL_CALL ScViewPaneObj::release() throw(uno::RuntimeException)
+{
+ OWeakObject::release();
+}
+
+//------------------------------------------------------------------------
+
+// Default-ctor wird fuer SMART_REFLECTION_IMPLEMENTATION gebraucht
+
+ScTabViewObj::ScTabViewObj() :
+ SfxBaseController( NULL ),
+ ScViewPaneBase( NULL, SC_VIEWPANE_ACTIVE ),
+ aPropSet( lcl_GetViewOptPropertyMap() )
+{
+}
+
+ScTabViewObj::ScTabViewObj( ScTabViewShell* pViewSh ) :
+ SfxBaseController( pViewSh ),
+ ScViewPaneBase( pViewSh, SC_VIEWPANE_ACTIVE ),
+ aPropSet( lcl_GetViewOptPropertyMap() )
+{
+ //! Listening oder so
+}
+
+ScTabViewObj::~ScTabViewObj()
+{
+ //! Listening oder so
+}
+
+uno::Any SAL_CALL ScTabViewObj::queryInterface( const uno::Type& rType )
+ throw(uno::RuntimeException)
+{
+ SC_QUERYINTERFACE( sheet::XSpreadsheetView )
+ SC_QUERYINTERFACE( container::XEnumerationAccess )
+ SC_QUERYINTERFACE( container::XIndexAccess )
+ SC_QUERY_MULTIPLE( container::XElementAccess, container::XIndexAccess )
+ SC_QUERYINTERFACE( view::XSelectionSupplier )
+ SC_QUERYINTERFACE( beans::XPropertySet )
+ SC_QUERYINTERFACE( sheet::XViewSplitable )
+ SC_QUERYINTERFACE( sheet::XViewFreezable )
+ SC_QUERYINTERFACE( lang::XUnoTunnel )
+
+ uno::Any aRet = ScViewPaneBase::queryInterface( rType );
+ if (!aRet.hasValue())
+ aRet = SfxBaseController::queryInterface( rType );
+ return aRet;
+}
+
+void SAL_CALL ScTabViewObj::acquire() throw(uno::RuntimeException)
+{
+ SfxBaseController::acquire();
+}
+
+void SAL_CALL ScTabViewObj::release() throw(uno::RuntimeException)
+{
+ SfxBaseController::release();
+}
+
+uno::Sequence<uno::Type> SAL_CALL ScTabViewObj::getTypes() throw(uno::RuntimeException)
+{
+ static uno::Sequence<uno::Type> aTypes;
+ if ( aTypes.getLength() == 0 )
+ {
+ uno::Sequence<uno::Type> aViewPaneTypes = ScViewPaneBase::getTypes();
+ long nViewPaneLen = aViewPaneTypes.getLength();
+ const uno::Type* pViewPanePtr = aViewPaneTypes.getConstArray();
+
+ uno::Sequence<uno::Type> aControllerTypes = SfxBaseController::getTypes();
+ long nControllerLen = aControllerTypes.getLength();
+ const uno::Type* pControllerPtr = aControllerTypes.getConstArray();
+
+ long nParentLen = nViewPaneLen + nControllerLen;
+
+ aTypes.realloc( nParentLen + 8 );
+ uno::Type* pPtr = aTypes.getArray();
+ pPtr[nParentLen + 0] = getCppuType((const uno::Reference<sheet::XSpreadsheetView>*)0);
+ pPtr[nParentLen + 1] = getCppuType((const uno::Reference<container::XEnumerationAccess>*)0);
+ pPtr[nParentLen + 2] = getCppuType((const uno::Reference<container::XIndexAccess>*)0);
+ pPtr[nParentLen + 3] = getCppuType((const uno::Reference<view::XSelectionSupplier>*)0);
+ pPtr[nParentLen + 4] = getCppuType((const uno::Reference<beans::XPropertySet>*)0);
+ pPtr[nParentLen + 5] = getCppuType((const uno::Reference<sheet::XViewSplitable>*)0);
+ pPtr[nParentLen + 6] = getCppuType((const uno::Reference<sheet::XViewFreezable>*)0);
+ pPtr[nParentLen + 7] = getCppuType((const uno::Reference<lang::XUnoTunnel>*)0);
+
+ long i;
+ for (i=0; i<nViewPaneLen; i++)
+ pPtr[i] = pViewPanePtr[i]; // parent types first
+ for (i=0; i<nControllerLen; i++)
+ pPtr[nViewPaneLen+i] = pControllerPtr[i];
+ }
+ return aTypes;
+}
+
+uno::Sequence<sal_Int8> SAL_CALL ScTabViewObj::getImplementationId()
+ throw(uno::RuntimeException)
+{
+ static uno::Sequence< sal_Int8 > aId;
+ if( aId.getLength() == 0 )
+ {
+ aId.realloc( 16 );
+ rtl_createUuid( (sal_uInt8 *)aId.getArray(), 0, sal_True );
+ }
+ return aId;
+}
+
+// XDocumentView
+
+BOOL lcl_TabInRanges( USHORT nTab, const ScRangeList& rRanges )
+{
+ ULONG nCount = rRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ const ScRange* pRange = rRanges.GetObject(i);
+ if ( nTab >= pRange->aStart.Tab() && nTab <= pRange->aEnd.Tab() )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void lcl_ShowObject( ScTabViewShell& rViewSh, ScDrawView& rDrawView, SdrObject* pSelObj )
+{
+ BOOL bFound = FALSE;
+ USHORT nObjectTab = 0;
+
+ SdrModel* pModel = rDrawView.GetModel();
+ USHORT nPageCount = pModel->GetPageCount();
+ for (USHORT i=0; i<nPageCount && !bFound; i++)
+ {
+ SdrPage* pPage = pModel->GetPage(i);
+ if (pPage)
+ {
+ SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject && !bFound)
+ {
+ if ( pObject == pSelObj )
+ {
+ bFound = TRUE;
+ nObjectTab = i;
+ }
+ pObject = aIter.Next();
+ }
+ }
+ }
+
+ if (bFound)
+ {
+ rViewSh.SetTabNo( nObjectTab );
+ rViewSh.ScrollToObject( pSelObj );
+ }
+}
+
+sal_Bool SAL_CALL ScTabViewObj::select( const uno::Any& aSelection )
+ throw(lang::IllegalArgumentException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+
+ if ( !pViewSh )
+ return FALSE;
+
+ //! Type of aSelection can be some specific interface instead of XInterface
+
+ uno::Reference<uno::XInterface> xInterface;
+ aSelection >>= xInterface;
+ if ( !xInterface.is() )
+ return FALSE;
+
+ ScCellRangesBase* pRangesImp = ScCellRangesBase::getImplementation( xInterface );
+ uno::Reference<drawing::XShapes> xShapeColl( xInterface, uno::UNO_QUERY );
+ uno::Reference<drawing::XShape> xShapeSel( xInterface, uno::UNO_QUERY );
+ SvxShape* pShapeImp = SvxShape::getImplementation( xShapeSel );
+
+ BOOL bRet = FALSE;
+ if (pRangesImp) // Zell-Ranges
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ if ( pViewData->GetDocShell() == pRangesImp->GetDocShell() )
+ {
+ // Zuerst evtl. Drawing-Selektion aufheben
+ // (MarkListHasChanged hebt Tabellen-Selektion auf)
+
+ ScDrawView* pDrawView = pViewSh->GetScDrawView();
+ if (pDrawView)
+ {
+ pDrawView->ScEndTextEdit();
+ pDrawView->UnmarkAll();
+ }
+ FuPoor* pFunc = pViewSh->GetDrawFuncPtr();
+ if ( pFunc && pFunc->GetSlotID() != SID_OBJECT_SELECT )
+ {
+ // Slot der Zeichenfunktion nochmal ausfuehren -> abschalten
+ SfxDispatcher* pDisp = pViewSh->GetDispatcher();
+ if (pDisp)
+ pDisp->Execute( pFunc->GetSlotID(), SFX_CALLMODE_SYNCHRON );
+ }
+ pViewSh->SetDrawShell(FALSE);
+ pViewSh->SetDrawSelMode(FALSE); // nach dem Dispatcher-Execute
+
+ // Ranges selektieren
+
+ const ScRangeList& rRanges = pRangesImp->GetRangeList();
+ ULONG nRangeCount = rRanges.Count();
+ // for empty range list, remove selection (cursor remains where it was)
+ if ( nRangeCount == 0 )
+ pViewSh->Unmark();
+ else if ( nRangeCount == 1 )
+ pViewSh->MarkRange( *rRanges.GetObject(0) );
+ else
+ {
+ // Mehrfachselektion
+
+ const ScRange* pFirst = rRanges.GetObject(0);
+ if ( pFirst && !lcl_TabInRanges( pViewData->GetTabNo(), rRanges ) )
+ pViewSh->SetTabNo( pFirst->aStart.Tab() );
+ pViewSh->DoneBlockMode();
+ pViewSh->InitOwnBlockMode();
+ pViewData->GetMarkData().MarkFromRangeList( rRanges, TRUE );
+ pViewData->GetDocShell()->PostPaintGridAll(); // Markierung (alt&neu)
+ if ( pFirst )
+ {
+ pViewSh->AlignToCursor( pFirst->aStart.Col(), pFirst->aStart.Row(),
+ SC_FOLLOW_JUMP );
+ pViewSh->SetCursor( pFirst->aStart.Col(), pFirst->aStart.Row() );
+ }
+
+ //! Methode an der View, um RangeList zu selektieren
+ }
+ bRet = TRUE;
+ }
+ }
+ else if ( pShapeImp || xShapeColl.is() ) // Drawing-Layer
+ {
+ ScDrawView* pDrawView = pViewSh->GetScDrawView();
+ if (pDrawView)
+ {
+ pDrawView->ScEndTextEdit();
+ pDrawView->UnmarkAll();
+
+ if (pShapeImp) // einzelnes Shape
+ {
+ SdrObject *pObj = pShapeImp->GetSdrObject();
+ if (pObj)
+ {
+ lcl_ShowObject( *pViewSh, *pDrawView, pObj );
+ SdrPageView* pPV = pDrawView->GetPageViewPvNum(0);
+ if ( pPV && pObj->GetPage() == pPV->GetPage() )
+ {
+ pDrawView->MarkObj( pObj, pPV );
+ bRet = TRUE;
+ }
+ }
+ }
+ else // Shape-Collection (xShapeColl ist nicht 0)
+ {
+ // Es wird auf die Tabelle des ersten Objekts umgeschaltet,
+ // und alle Objekte selektiert, die auf dieser Tabelle liegen
+ //! Exception, wenn Objekte auf verschiedenen Tabellen?
+
+ SdrPageView* pPV = NULL;
+ long nCount = xShapeColl->getCount();
+ for ( long i = 0; i < nCount; i++ )
+ {
+ uno::Reference<drawing::XShape> xShapeInt;
+ uno::Any aAny = xShapeColl->getByIndex(i);
+ aAny >>= xShapeInt;
+ if (xShapeInt.is())
+ {
+ SvxShape* pShape = SvxShape::getImplementation( xShapeInt );
+ if (pShape)
+ {
+ SdrObject *pObj = pShape->GetSdrObject();
+ if (pObj)
+ {
+ if (!pPV) // erstes Objekt
+ {
+ lcl_ShowObject( *pViewSh, *pDrawView, pObj );
+ pPV = pDrawView->GetPageViewPvNum(0);
+ }
+ if ( pPV && pObj->GetPage() == pPV->GetPage() )
+ {
+ pDrawView->MarkObj( pObj, pPV );
+ bRet = TRUE;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (bRet)
+ pViewSh->SetDrawShell(TRUE);
+ }
+ }
+
+ if (!bRet)
+ throw lang::IllegalArgumentException();
+
+ return bRet;
+}
+
+uno::Any SAL_CALL ScTabViewObj::getSelection() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ ScCellRangesBase* pObj = NULL;
+ if (pViewSh)
+ {
+ // Ist auf dem Drawing-Layer etwas selektiert?
+
+ SdrView* pDrawView = pViewSh->GetSdrView();
+ if (pDrawView)
+ {
+ const SdrMarkList& rMarkList = pDrawView->GetMarkList();
+ ULONG nMarkCount = rMarkList.GetMarkCount();
+ if (nMarkCount)
+ {
+ // ShapeCollection erzeugen (wie in SdXImpressView::getSelection im Draw)
+ // Zurueckgegeben wird XInterfaceRef, das muss das UsrObject-XInterface sein
+
+ SvxShapeCollection* pShapes = new SvxShapeCollection();
+ uno::Reference<uno::XInterface> xRet = static_cast<cppu::OWeakObject*>(pShapes);
+
+ for (ULONG i=0; i<nMarkCount; i++)
+ {
+ SdrObject* pObj = rMarkList.GetMark(i)->GetObj();
+ if (pObj)
+ {
+ SdrPage* pPage = pObj->GetPage();
+ if (pPage)
+ {
+ SvxDrawPage* pPageObj = new SvxFmDrawPage( pPage );
+
+ uno::Reference<drawing::XDrawPage> xPage = pPageObj;
+ uno::Reference<drawing::XShape> xShape = pPageObj->_CreateShape( pObj );
+ if (xShape.is())
+ pShapes->add(xShape);
+ }
+ }
+ }
+ uno::Any aAny;
+ aAny <<= xRet;
+ return aAny;
+ }
+ }
+
+ // sonst Tabellen-(Zellen-)Selektion
+
+ ScViewData* pViewData = pViewSh->GetViewData();
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+
+ const ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nTabs = rMark.GetSelectCount();
+
+ ScRange aRange;
+ if ( nTabs == 1 && pViewData->GetSimpleArea(aRange) )
+ {
+ if (aRange.aStart == aRange.aEnd)
+ pObj = new ScCellObj( pDocSh, aRange.aStart );
+ else
+ pObj = new ScCellRangeObj( pDocSh, aRange );
+ }
+ else // Mehrfachselektion
+ {
+ ScRangeListRef xRanges;
+ pViewData->GetMultiArea( xRanges );
+
+ // bei mehreren Tabellen Ranges kopieren
+ //! sollte eigentlich schon in ScMarkData::FillRangeListWithMarks passieren?
+ if ( nTabs > 1 )
+ rMark.ExtendRangeListTables( xRanges );
+
+ pObj = new ScCellRangesObj( pDocSh, *xRanges );
+ }
+ }
+
+ uno::Reference<uno::XInterface> xRet = static_cast<cppu::OWeakObject*>(pObj);
+ uno::Any aAny;
+ aAny <<= xRet;
+ return aAny;
+}
+
+
+#if 0
+// XPrintable
+
+rtl::OUString ScTabViewObj::getPrinterName(void) const
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ SfxPrinter* pPrinter = pViewSh->GetPrinter(TRUE);
+ if (pPrinter)
+ return pPrinter->GetName();
+ }
+
+ DBG_ERROR("getPrinterName: keine View oder kein Printer");
+ return rtl::OUString();
+}
+
+void ScTabViewObj::setPrinterName(const rtl::OUString& PrinterName)
+{
+ ScUnoGuard aGuard;
+ // Drucker setzen - wie in SfxViewShell::ExecPrint_Impl
+
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ SfxPrinter* pPrinter = pViewSh->GetPrinter(TRUE);
+ if (pPrinter)
+ {
+ String aString = PrinterName;
+ SfxPrinter* pNewPrinter = new SfxPrinter( pPrinter->GetOptions().Clone(), aString );
+ if (pNewPrinter->IsKnown())
+ pViewSh->SetPrinter( pNewPrinter, SFX_PRINTER_PRINTER );
+ else
+ delete pNewPrinter;
+ }
+ }
+}
+
+XPropertySetRef ScTabViewObj::createPrintOptions(void)
+{
+ ScUnoGuard aGuard;
+ return new ScPrintSettingsObj; //! ScPrintSettingsObj implementieren!
+}
+
+void ScTabViewObj::print(const XPropertySetRef& xOptions)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ //! xOptions auswerten (wie denn?)
+
+ SfxRequest aReq( SID_PRINTDOCDIRECT, SFX_CALLMODE_SYNCHRON, pViewSh->GetPool() );
+ pViewSh->ExecuteSlot( aReq );
+ }
+}
+#endif
+
+// XEnumerationAccess
+
+uno::Reference<container::XEnumeration> SAL_CALL ScTabViewObj::createEnumeration()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return new ScIndexEnumeration(this);
+}
+
+// XIndexAccess
+
+sal_Int32 SAL_CALL ScTabViewObj::getCount() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ USHORT nPanes = 0;
+ if (pViewSh)
+ {
+ nPanes = 1;
+ ScViewData* pViewData = pViewSh->GetViewData();
+ if ( pViewData->GetHSplitMode() != SC_SPLIT_NONE )
+ nPanes *= 2;
+ if ( pViewData->GetVSplitMode() != SC_SPLIT_NONE )
+ nPanes *= 2;
+ }
+ return nPanes;
+}
+
+uno::Any SAL_CALL ScTabViewObj::getByIndex( sal_Int32 nIndex )
+ throw(lang::IndexOutOfBoundsException,
+ lang::WrappedTargetException, uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<sheet::XViewPane> xPane = GetObjectByIndex_Impl(nIndex);
+ uno::Any aAny;
+ if (xPane.is())
+ aAny <<= xPane;
+ else
+ throw lang::IndexOutOfBoundsException();
+ return aAny;
+}
+
+uno::Type SAL_CALL ScTabViewObj::getElementType() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return getCppuType((uno::Reference<sheet::XViewPane>*)0);
+}
+
+sal_Bool SAL_CALL ScTabViewObj::hasElements() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ return ( getCount() != 0 );
+}
+
+// XSpreadsheetView
+
+ScViewPaneObj* ScTabViewObj::GetObjectByIndex_Impl(USHORT nIndex) const
+{
+ static ScSplitPos ePosHV[4] =
+ { SC_SPLIT_TOPLEFT, SC_SPLIT_BOTTOMLEFT, SC_SPLIT_TOPRIGHT, SC_SPLIT_BOTTOMRIGHT };
+
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ ScSplitPos eWhich = SC_SPLIT_BOTTOMLEFT; // default Position
+ BOOL bError = FALSE;
+ ScViewData* pViewData = pViewSh->GetViewData();
+ BOOL bHor = ( pViewData->GetHSplitMode() != SC_SPLIT_NONE );
+ BOOL bVer = ( pViewData->GetVSplitMode() != SC_SPLIT_NONE );
+ if ( bHor && bVer )
+ {
+ // links oben, links unten, rechts oben, rechts unten - wie in Excel
+ if ( nIndex < 4 )
+ eWhich = ePosHV[nIndex];
+ else
+ bError = TRUE;
+ }
+ else if ( bHor )
+ {
+ if ( nIndex > 1 )
+ bError = TRUE;
+ else if ( nIndex == 1 )
+ eWhich = SC_SPLIT_BOTTOMRIGHT;
+ // sonst SC_SPLIT_BOTTOMLEFT
+ }
+ else if ( bVer )
+ {
+ if ( nIndex > 1 )
+ bError = TRUE;
+ else if ( nIndex == 0 )
+ eWhich = SC_SPLIT_TOPLEFT;
+ // sonst SC_SPLIT_BOTTOMLEFT
+ }
+ else if ( nIndex > 0 )
+ bError = TRUE; // nicht geteilt: nur 0 gueltig
+
+ if (!bError)
+ return new ScViewPaneObj( pViewSh, eWhich );
+ }
+
+ return NULL;
+}
+
+uno::Reference<sheet::XSpreadsheet> SAL_CALL ScTabViewObj::getActiveSheet()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ ScViewData* pData = pViewSh->GetViewData();
+ USHORT nTab = pData->GetTabNo();
+ return new ScTableSheetObj( pData->GetDocShell(), nTab );
+ }
+ return NULL;
+}
+
+void SAL_CALL ScTabViewObj::setActiveSheet( const uno::Reference<sheet::XSpreadsheet>& xActiveSheet )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+
+ BOOL bDone = FALSE;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if ( pViewSh && xActiveSheet.is() )
+ {
+ // XSpreadsheet und ScCellRangesBase -> muss ein Sheet sein
+
+ ScCellRangesBase* pRangesImp = ScCellRangesBase::getImplementation( xActiveSheet );
+ if ( pRangesImp && pViewSh->GetViewData()->GetDocShell() == pRangesImp->GetDocShell() )
+ {
+ const ScRangeList& rRanges = pRangesImp->GetRangeList();
+ if ( rRanges.Count() == 1 )
+ {
+ USHORT nNewTab = rRanges.GetObject(0)->aStart.Tab();
+ if ( pViewSh->GetViewData()->GetDocument()->HasTable(nNewTab) )
+ pViewSh->SetTabNo( nNewTab );
+ }
+ }
+ }
+}
+
+// PageBreakMode / Zoom sind Properties
+
+#if 0
+
+BOOL ScTabViewObj::getPagebreakMode(void) const
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ return pViewSh->GetViewData()->IsPagebreakMode();
+ return FALSE;
+}
+
+void ScTabViewObj::setPagebreakMode(BOOL PagebreakMode)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ pViewSh->SetPagebreakMode(PagebreakMode);
+}
+
+INT16 ScTabViewObj::getZoom(void) const
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ const Fraction& rZoomY = pViewSh->GetViewData()->GetZoomY(); // Y wird angezeigt
+ return (USHORT)(( rZoomY.GetNumerator() * 100 ) / rZoomY.GetDenominator());
+ }
+ return 0;
+}
+
+void ScTabViewObj::setZoom(INT16 Zoom)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ Fraction aFract( Zoom, 100 );
+ pViewSh->SetZoom( aFract, aFract );
+ pViewSh->PaintGrid();
+ pViewSh->PaintTop();
+ pViewSh->PaintLeft();
+ SFX_BINDINGS().Invalidate( SID_ATTR_ZOOM );
+ }
+}
+
+#endif
+
+sal_Bool SAL_CALL ScTabViewObj::getIsWindowSplit() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ // wie Menue-Slot SID_WINDOW_SPLIT
+
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ return ( pViewData->GetHSplitMode() == SC_SPLIT_NORMAL ||
+ pViewData->GetVSplitMode() == SC_SPLIT_NORMAL );
+ }
+
+ return FALSE;
+}
+
+sal_Bool SAL_CALL ScTabViewObj::hasFrozenPanes() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ // wie Menue-Slot SID_WINDOW_FIX
+
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ return ( pViewData->GetHSplitMode() == SC_SPLIT_FIX ||
+ pViewData->GetVSplitMode() == SC_SPLIT_FIX );
+ }
+
+ return FALSE;
+}
+
+sal_Int32 SAL_CALL ScTabViewObj::getSplitHorizontal() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ if ( pViewData->GetHSplitMode() != SC_SPLIT_NONE )
+ return pViewData->GetHSplitPos();
+ }
+ return 0;
+}
+
+sal_Int32 SAL_CALL ScTabViewObj::getSplitVertical() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ if ( pViewData->GetVSplitMode() != SC_SPLIT_NONE )
+ return pViewData->GetVSplitPos();
+ }
+ return 0;
+}
+
+sal_Int32 SAL_CALL ScTabViewObj::getSplitColumn() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ if ( pViewData->GetHSplitMode() != SC_SPLIT_NONE )
+ {
+ long nSplit = pViewData->GetHSplitPos();
+
+ ScSplitPos ePos = SC_SPLIT_BOTTOMLEFT;
+ if ( pViewData->GetVSplitMode() != SC_SPLIT_NONE )
+ ePos = SC_SPLIT_TOPLEFT;
+
+ short nCol, nRow;
+ pViewData->GetPosFromPixel( nSplit, 0, ePos, nCol, nRow, FALSE );
+ if ( nCol > 0 )
+ return nCol;
+ }
+ }
+ return 0;
+}
+
+sal_Int32 SAL_CALL ScTabViewObj::getSplitRow() throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ if ( pViewData->GetVSplitMode() != SC_SPLIT_NONE )
+ {
+ long nSplit = pViewData->GetVSplitPos();
+
+ ScSplitPos ePos = SC_SPLIT_TOPLEFT; // es ist vertikal geteilt
+ short nCol, nRow;
+ pViewData->GetPosFromPixel( 0, nSplit, ePos, nCol, nRow, FALSE );
+ if ( nRow > 0 )
+ return nRow;
+ }
+ }
+ return 0;
+}
+
+void SAL_CALL ScTabViewObj::splitAtPosition( sal_Int32 nPixelX, sal_Int32 nPixelY )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ pViewSh->SplitAtPixel( Point( nPixelX, nPixelY ), TRUE, TRUE );
+ pViewSh->FreezeSplitters( FALSE );
+ pViewSh->InvalidateSplit();
+ }
+}
+
+void SAL_CALL ScTabViewObj::freezeAtPosition( sal_Int32 nColumns, sal_Int32 nRows )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ // erst alles aufheben -> kein Stress mit Scrolling zwischendurch o.ae.
+
+ pViewSh->RemoveSplit();
+
+ Point aWinStart;
+ Window* pWin = pViewSh->GetWindowByPos( SC_SPLIT_BOTTOMLEFT );
+ if (pWin)
+ aWinStart = pWin->GetPosPixel();
+
+ ScViewData* pViewData = pViewSh->GetViewData();
+ Point aSplit = pViewData->GetScrPos( nColumns, nRows, SC_SPLIT_BOTTOMLEFT, TRUE );
+ aSplit += aWinStart;
+
+ pViewSh->SplitAtPixel( aSplit, TRUE, TRUE );
+ pViewSh->FreezeSplitters( TRUE );
+ pViewSh->InvalidateSplit();
+ }
+}
+
+void SAL_CALL ScTabViewObj::addSelectionChangeListener(
+ const uno::Reference<view::XSelectionChangeListener>& xListener )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ uno::Reference<view::XSelectionChangeListener>* pObj =
+ new uno::Reference<view::XSelectionChangeListener>( xListener );
+ aSelectionListeners.Insert( pObj, aSelectionListeners.Count() );
+}
+
+void SAL_CALL ScTabViewObj::removeSelectionChangeListener(
+ const uno::Reference< view::XSelectionChangeListener >& xListener )
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ USHORT nCount = aSelectionListeners.Count();
+ for ( USHORT n=nCount; n--; )
+ {
+ uno::Reference<view::XSelectionChangeListener> *pObj = aSelectionListeners[n];
+ if ( *pObj == xListener ) //! wozu der Mumpitz mit queryInterface?
+ {
+ aSelectionListeners.DeleteAndDestroy( n );
+ break;
+ }
+ }
+}
+
+void ScTabViewObj::SelectionChanged()
+{
+ lang::EventObject aEvent;
+ aEvent.Source = static_cast<cppu::OWeakObject*>(this);
+ for ( USHORT n=0; n<aSelectionListeners.Count(); n++ )
+ (*aSelectionListeners[n])->selectionChanged( aEvent );
+}
+
+
+// XPropertySet (View-Optionen)
+//! auch an der Applikation anbieten?
+
+uno::Reference<beans::XPropertySetInfo> SAL_CALL ScTabViewObj::getPropertySetInfo()
+ throw(uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ static uno::Reference<beans::XPropertySetInfo> aRef =
+ new SfxItemPropertySetInfo( aPropSet.getPropertyMap() );
+ return aRef;
+}
+
+void SAL_CALL ScTabViewObj::setPropertyValue(
+ const rtl::OUString& aPropertyName, const uno::Any& aValue )
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ const ScViewOptions& rOldOpt = pViewSh->GetViewData()->GetOptions();
+ ScViewOptions aNewOpt = rOldOpt;
+
+ if ( aString.EqualsAscii( SC_UNO_COLROWHDR ) )
+ aNewOpt.SetOption( VOPT_HEADER, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_HORSCROLL ) )
+ aNewOpt.SetOption( VOPT_HSCROLL, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_OUTLSYMB ) )
+ aNewOpt.SetOption( VOPT_OUTLINER, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHEETTABS ) )
+ aNewOpt.SetOption( VOPT_TABCONTROLS, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWANCHOR ) )
+ aNewOpt.SetOption( VOPT_ANCHOR, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWFORM ) )
+ aNewOpt.SetOption( VOPT_FORMULAS, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWGRID ) )
+ aNewOpt.SetOption( VOPT_GRID, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWHELP ) )
+ aNewOpt.SetOption( VOPT_HELPLINES, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWNOTES ) )
+ aNewOpt.SetOption( VOPT_NOTES, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWPAGEBR ) )
+ aNewOpt.SetOption( VOPT_PAGEBREAKS, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWZERO ) )
+ aNewOpt.SetOption( VOPT_NULLVALS, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWSOLID ) )
+ aNewOpt.SetOption( VOPT_SOLIDHANDLES, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_VALUEHIGH ) )
+ aNewOpt.SetOption( VOPT_SYNTAX, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_VERTSCROLL ) )
+ aNewOpt.SetOption( VOPT_VSCROLL, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWOBJ ) )
+ {
+ sal_Int16 nIntVal;
+ if ( aValue >>= nIntVal )
+ aNewOpt.SetObjMode( VOBJ_TYPE_OLE, (ScVObjMode) nIntVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNO_SHOWCHARTS ) )
+ {
+ sal_Int16 nIntVal;
+ if ( aValue >>= nIntVal )
+ aNewOpt.SetObjMode( VOBJ_TYPE_CHART, (ScVObjMode) nIntVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNO_SHOWDRAW ) )
+ {
+ sal_Int16 nIntVal;
+ if ( aValue >>= nIntVal )
+ aNewOpt.SetObjMode( VOBJ_TYPE_DRAW, (ScVObjMode) nIntVal );
+ }
+ else if ( aString.EqualsAscii( SC_UNO_GRIDCOLOR ) )
+ {
+ sal_Int32 nIntVal;
+ if ( aValue >>= nIntVal )
+ aNewOpt.SetGridColor( nIntVal, String() );
+ }
+ else if ( aString.EqualsAscii( SC_UNO_HIDESPELL ) )
+ aNewOpt.SetHideAutoSpell( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
+
+ // Optionen werden an der View und am Dokument (fuer neue Views) gesetzt,
+ // damit sie beim Speichern erhalten bleiben.
+ //! An der App (Module) braeuchte man noch eine Extra-Moeglichkeit,
+ //! das einzustellen (fuer neue Dokumente)
+
+ if ( aNewOpt != rOldOpt )
+ {
+ pViewData->SetOptions( aNewOpt );
+ pViewData->GetDocument()->SetViewOptions( aNewOpt );
+ pViewData->GetDocShell()->SetDocumentModified(); //! wirklich?
+
+ pViewSh->UpdateFixPos();
+ pViewSh->PaintGrid();
+ pViewSh->PaintTop();
+ pViewSh->PaintLeft();
+ pViewSh->PaintExtras();
+ pViewSh->InvalidateBorder();
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( FID_TOGGLEHEADERS ); // -> Checks im Menue
+ rBindings.Invalidate( FID_TOGGLESYNTAX );
+ }
+ }
+}
+
+uno::Any SAL_CALL ScTabViewObj::getPropertyValue( const rtl::OUString& aPropertyName )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException,
+ uno::RuntimeException)
+{
+ ScUnoGuard aGuard;
+ String aString = aPropertyName;
+ uno::Any aRet;
+
+ ScTabViewShell* pViewSh = GetViewShell();
+ if (pViewSh)
+ {
+ const ScViewOptions& rOpt = pViewSh->GetViewData()->GetOptions();
+
+ if ( aString.EqualsAscii( SC_UNO_COLROWHDR ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_HEADER ) );
+ else if ( aString.EqualsAscii( SC_UNO_HORSCROLL ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_HSCROLL ) );
+ else if ( aString.EqualsAscii( SC_UNO_OUTLSYMB ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_OUTLINER ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHEETTABS ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_TABCONTROLS ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWANCHOR ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_ANCHOR ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWFORM ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_FORMULAS ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWGRID ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_GRID ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWHELP ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_HELPLINES ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWNOTES ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_NOTES ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWPAGEBR ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_PAGEBREAKS ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWZERO ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_NULLVALS ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWSOLID ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_SOLIDHANDLES ) );
+ else if ( aString.EqualsAscii( SC_UNO_VALUEHIGH ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_SYNTAX ) );
+ else if ( aString.EqualsAscii( SC_UNO_VERTSCROLL ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.GetOption( VOPT_VSCROLL ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWOBJ ) ) aRet <<= (sal_Int16)( rOpt.GetObjMode( VOBJ_TYPE_OLE ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWCHARTS ) ) aRet <<= (sal_Int16)( rOpt.GetObjMode( VOBJ_TYPE_CHART ) );
+ else if ( aString.EqualsAscii( SC_UNO_SHOWDRAW ) ) aRet <<= (sal_Int16)( rOpt.GetObjMode( VOBJ_TYPE_DRAW ) );
+ else if ( aString.EqualsAscii( SC_UNO_GRIDCOLOR ) ) aRet <<= (sal_Int32)( rOpt.GetGridColor().GetColor() );
+ else if ( aString.EqualsAscii( SC_UNO_HIDESPELL ) ) ScUnoHelpFunctions::SetBoolInAny( aRet, rOpt.IsHideAutoSpell() );
+ }
+
+ return aRet;
+}
+
+SC_IMPL_DUMMY_PROPERTY_LISTENER( ScTabViewObj )
+
+// XServiceInfo
+
+rtl::OUString SAL_CALL ScTabViewObj::getImplementationName() throw(uno::RuntimeException)
+{
+ return rtl::OUString::createFromAscii( "ScTabViewObj" );
+}
+
+sal_Bool SAL_CALL ScTabViewObj::supportsService( const rtl::OUString& rServiceName )
+ throw(uno::RuntimeException)
+{
+ String aServiceStr( rServiceName );
+ return aServiceStr.EqualsAscii( SCTABVIEWOBJ_SERVICE ) ||
+ aServiceStr.EqualsAscii( SCVIEWSETTINGS_SERVICE );
+}
+
+uno::Sequence<rtl::OUString> SAL_CALL ScTabViewObj::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ uno::Sequence<rtl::OUString> aRet(2);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = rtl::OUString::createFromAscii( SCTABVIEWOBJ_SERVICE );
+ pArray[1] = rtl::OUString::createFromAscii( SCVIEWSETTINGS_SERVICE );
+ return aRet;
+}
+
+// XUnoTunnel
+
+sal_Int64 SAL_CALL ScTabViewObj::getSomething(
+ const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
+{
+ if ( rId.getLength() == 16 &&
+ 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+// static
+const uno::Sequence<sal_Int8>& ScTabViewObj::getUnoTunnelId()
+{
+ static uno::Sequence<sal_Int8> * pSeq = 0;
+ if( !pSeq )
+ {
+ osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
+ if( !pSeq )
+ {
+ static uno::Sequence< sal_Int8 > aSeq( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ pSeq = &aSeq;
+ }
+ }
+ return *pSeq;
+}
+
+// static
+ScTabViewObj* ScTabViewObj::getImplementation( const uno::Reference<uno::XInterface> xObj )
+{
+ ScTabViewObj* pRet = NULL;
+ uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
+ if (xUT.is())
+ pRet = (ScTabViewObj*) xUT->getSomething( getUnoTunnelId() );
+ return pRet;
+}
+
+
+//------------------------------------------------------------------------
+
+
+
+
diff --git a/sc/source/ui/view/auditsh.cxx b/sc/source/ui/view/auditsh.cxx
new file mode 100644
index 000000000000..cd330264e3b2
--- /dev/null
+++ b/sc/source/ui/view/auditsh.cxx
@@ -0,0 +1,242 @@
+/*************************************************************************
+ *
+ * $RCSfile: auditsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/srchitem.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/request.hxx>
+
+#define GLOBALOVERFLOW
+#include "segmentc.hxx"
+
+#include "auditsh.hxx"
+#include "tabvwsh.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+
+//------------------------------------------------------------------------
+
+#define ScAuditingShell
+#include "scslots.hxx"
+
+//------------------------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
+//------------------------------------------------------------------------
+
+#pragma SEG_SEGCLASS(SFXMACROS_SEG,STARTWORK_CODE)
+
+
+TYPEINIT1( ScAuditingShell, SfxShell );
+
+SFX_IMPL_INTERFACE(ScAuditingShell, SfxShell, ScResId(SCSTR_AUDITSHELL))
+{
+ SFX_POPUPMENU_REGISTRATION( ScResId(RID_POPUP_AUDIT) );
+}
+
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(auditsh_01)
+
+ScAuditingShell::ScAuditingShell(ScViewData* pData) :
+ SfxShell(pData->GetViewShell()),
+ pViewData( pData ),
+ nFunction( SID_FILL_ADD_PRED )
+{
+ SetPool( &pViewData->GetViewShell()->GetPool() );
+ SetUndoManager( pViewData->GetSfxDocShell()->GetUndoManager() );
+ SetHelpId( HID_SCSHELL_AUDIT );
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Auditing")));
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(auditsh_02)
+
+ScAuditingShell::~ScAuditingShell()
+{
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(auditsh_03)
+
+void ScAuditingShell::Execute( SfxRequest& rReq )
+{
+ SfxBindings& rBindings = SFX_BINDINGS();
+ USHORT nSlot = rReq.GetSlot();
+ switch ( nSlot )
+ {
+ case SID_FILL_ADD_PRED:
+ case SID_FILL_DEL_PRED:
+ case SID_FILL_ADD_SUCC:
+ case SID_FILL_DEL_SUCC:
+ nFunction = nSlot;
+ rBindings.Invalidate( SID_FILL_ADD_PRED );
+ rBindings.Invalidate( SID_FILL_DEL_PRED );
+ rBindings.Invalidate( SID_FILL_ADD_SUCC );
+ rBindings.Invalidate( SID_FILL_DEL_SUCC );
+ break;
+ case SID_CANCEL: // Escape
+ case SID_FILL_NONE:
+ pViewData->GetViewShell()->SetAuditShell( FALSE );
+ break;
+
+ case SID_FILL_SELECT:
+ {
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ if ( pReqArgs )
+ {
+ const SfxPoolItem* pXItem;
+ const SfxPoolItem* pYItem;
+ if ( pReqArgs->GetItemState( SID_RANGE_COL, TRUE, &pXItem ) == SFX_ITEM_SET
+ && pReqArgs->GetItemState( SID_RANGE_ROW, TRUE, &pYItem ) == SFX_ITEM_SET )
+ {
+ DBG_ASSERT( pXItem->ISA(SfxInt16Item) && pYItem->ISA(SfxInt16Item),
+ "falsche Items" );
+ short nCol = ((const SfxInt16Item*) pXItem)->GetValue();
+ short nRow = ((const SfxInt16Item*) pYItem)->GetValue();
+ ScViewFunc* pView = pViewData->GetView();
+ pView->MoveCursorAbs( nCol, nRow, SC_FOLLOW_LINE, FALSE, FALSE );
+ switch ( nFunction )
+ {
+ case SID_FILL_ADD_PRED:
+ pView->DetectiveAddPred();
+ break;
+ case SID_FILL_DEL_PRED:
+ pView->DetectiveDelPred();
+ break;
+ case SID_FILL_ADD_SUCC:
+ pView->DetectiveAddSucc();
+ break;
+ case SID_FILL_DEL_SUCC:
+ pView->DetectiveDelSucc();
+ break;
+ }
+ }
+ }
+ }
+ break;
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(auditsh_04)
+
+void ScAuditingShell::GetState( SfxItemSet& rSet )
+{
+ rSet.Put( SfxBoolItem( nFunction, TRUE ) ); // aktive Funktion markieren
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.11 2000/09/17 14:09:30 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.10 2000/08/31 16:38:44 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.9 2000/05/09 18:30:15 nn
+ use IMPL_INTERFACE macro without IDL
+
+ Revision 1.8 2000/04/14 08:31:36 nn
+ unicode changes
+
+ Revision 1.7 1999/06/02 19:40:56 ANK
+ #66547# SubShells
+
+
+ Rev 1.6 02 Jun 1999 21:40:56 ANK
+ #66547# SubShells
+
+ Rev 1.5 24 Nov 1997 20:04:54 NN
+ includes
+
+ Rev 1.4 04 Sep 1997 19:51:46 RG
+ change header
+
+ Rev 1.3 05 Aug 1997 14:33:14 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.2 29 Oct 1996 13:35:32 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.1 09 Aug 1996 20:34:22 NN
+ Svx-Includes aus scitems.hxx raus
+
+ Rev 1.0 29 May 1996 19:41:46 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx
new file mode 100644
index 000000000000..d28b42385a3e
--- /dev/null
+++ b/sc/source/ui/view/cellsh.cxx
@@ -0,0 +1,794 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+
+#include <svtools/slstitm.hxx>
+#include <svtools/stritem.hxx>
+#include <svtools/whiter.hxx>
+#include <offmgr/sbasltid.hrc>
+#include <sot/formats.hxx>
+#include <svx/hlnkitem.hxx>
+#include <sfx2/app.hxx>
+//#include <sfx2/objitem.hxx>
+#include <svx/langitem.hxx>
+#include <vcl/system.hxx>
+
+#include "cellsh.hxx"
+#include "sc.hrc"
+#include "docsh.hxx"
+#include "attrib.hxx"
+#include "scresid.hxx"
+#include "tabvwsh.hxx"
+#include "impex.hxx"
+#include "cell.hxx"
+#include "scmod.hxx"
+#include "globstr.hrc"
+
+//------------------------------------------------------------------
+
+#define ScCellShell
+#define CellMovement
+#include "scslots.hxx"
+
+#define SearchSettings
+#include <svx/svxslots.hxx>
+
+TYPEINIT1( ScCellShell, ScFormatShell );
+
+SFX_IMPL_INTERFACE(ScCellShell, ScFormatShell , ScResId(SCSTR_CELLSHELL) )
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT | SFX_VISIBILITY_STANDARD |
+ SFX_VISIBILITY_SERVER,
+ ScResId(RID_OBJECTBAR_FORMAT));
+ SFX_OBJECTMENU_REGISTRATION(SID_OBJECTMENU0, ScResId(RID_OBJECTMENU_CELLS));
+ SFX_POPUPMENU_REGISTRATION(ScResId(RID_POPUP_CELLS));
+}
+
+
+ScCellShell::ScCellShell(ScViewData* pData) :
+ ScFormatShell(pData)
+{
+ SetHelpId(HID_SCSHELL_CELLSH);
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Cell")));
+}
+
+ScCellShell::~ScCellShell()
+{
+}
+
+//------------------------------------------------------------------
+
+//! move this function elsewhere
+LanguageType lcl_GetEffLanguage( ScDocument* pDoc, const ScAddress& rPos )
+{
+ const SfxPoolItem* pItem = pDoc->GetAttr(
+ rPos.Col(), rPos.Row(), rPos.Tab(), ATTR_FONT_LANGUAGE);
+ SvxLanguageItem* pLangIt = PTR_CAST( SvxLanguageItem, pItem );
+ LanguageType eLnge;
+ if (pLangIt)
+ {
+ eLnge = (LanguageType) pLangIt->GetValue();
+ if (eLnge == LANGUAGE_DONTKNOW) //! can this happen?
+ eLnge = pDoc->GetLanguage();
+ }
+ else
+ eLnge = LANGUAGE_ENGLISH_US;
+ if ( eLnge == LANGUAGE_SYSTEM )
+ eLnge = System::GetLanguage(); // never use SYSTEM for spelling
+
+ return eLnge;
+}
+
+//------------------------------------------------------------------
+
+void ScCellShell::GetBlockState( SfxItemSet& rSet )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ ScRange aMarkRange;
+ BOOL bSimpleArea = GetViewData()->GetSimpleArea( aMarkRange, TRUE ); //! macht TRUE aerger ?
+ BOOL bOnlyNotBecauseOfMatrix;
+ BOOL bEditable = pTabViewShell->SelectionEditable( &bOnlyNotBecauseOfMatrix );
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nCol1, nCol2, nRow1, nRow2;
+ nCol1 = aMarkRange.aStart.Col();
+ nRow1 = aMarkRange.aStart.Row();
+ nCol2 = aMarkRange.aEnd.Col();
+ nRow2 = aMarkRange.aEnd.Row();
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ BOOL bDisable = FALSE;
+ BOOL bNeedEdit = TRUE; // muss Selektion editierbar sein?
+ switch ( nWhich )
+ {
+ case FID_FILL_TO_BOTTOM: // Fuellen oben/unten
+ case FID_FILL_TO_TOP: // mind. 2 Zeilen markiert?
+ bDisable = (!bSimpleArea) || (nRow1 == nRow2);
+ if ( !bDisable && bEditable )
+ { // Matrix nicht zerreissen
+ if ( nWhich == FID_FILL_TO_BOTTOM )
+ bDisable = pDoc->HasSelectedBlockMatrixFragment(
+ nCol1, nRow1, nCol2, nRow1, rMark ); // erste Zeile
+ else
+ bDisable = pDoc->HasSelectedBlockMatrixFragment(
+ nCol1, nRow2, nCol2, nRow2, rMark ); // letzte Zeile
+ }
+ break;
+
+ case FID_FILL_TO_RIGHT: // Fuellen links/rechts
+ case FID_FILL_TO_LEFT: // mind. 2 Spalten markiert?
+ bDisable = (!bSimpleArea) || (nCol1 == nCol2);
+ if ( !bDisable && bEditable )
+ { // Matrix nicht zerreissen
+ if ( nWhich == FID_FILL_TO_RIGHT )
+ bDisable = pDoc->HasSelectedBlockMatrixFragment(
+ nCol1, nRow1, nCol1, nRow2, rMark ); // erste Spalte
+ else
+ bDisable = pDoc->HasSelectedBlockMatrixFragment(
+ nCol2, nRow1, nCol2, nRow2, rMark ); // letzte Spalte
+ }
+ break;
+
+ case FID_FILL_SERIES: // Block fuellen
+ case SID_OPENDLG_TABOP: // Mehrfachoperationen, mind. 2 Zellen markiert?
+ if (pDoc->GetChangeTrack()!=NULL &&nWhich ==SID_OPENDLG_TABOP)
+ bDisable = TRUE;
+ else
+ bDisable = (!bSimpleArea) || (nCol1 == nCol2 && nRow1 == nRow2);
+
+ if ( !bDisable && bEditable && nWhich == FID_FILL_SERIES )
+ { // Matrix nicht zerreissen
+ bDisable = pDoc->HasSelectedBlockMatrixFragment(
+ nCol1, nRow1, nCol2, nRow1, rMark ) // erste Zeile
+ || pDoc->HasSelectedBlockMatrixFragment(
+ nCol1, nRow2, nCol2, nRow2, rMark ) // letzte Zeile
+ || pDoc->HasSelectedBlockMatrixFragment(
+ nCol1, nRow1, nCol1, nRow2, rMark ) // erste Spalte
+ || pDoc->HasSelectedBlockMatrixFragment(
+ nCol2, nRow1, nCol2, nRow2, rMark ); // letzte Spalte
+ }
+ break;
+
+ case SID_CUT: // Ausschneiden,
+ case FID_INS_ROW: // Zeilen einfuegen
+ case FID_INS_COLUMN: // Spalten einfuegen
+ case FID_INS_CELL: // Zellen einfuegen, nur einf. Selektion
+ case FID_INS_CELLSDOWN:
+ case FID_INS_CELLSRIGHT:
+ bDisable = (!bSimpleArea);
+ break;
+
+ case SID_COPY: // Kopieren
+ bDisable = (!bSimpleArea);
+ // nur wegen Matrix nicht editierbar? Matrix nicht zerreissen
+ //! schlaegt nicht zu, wenn geschuetzt UND Matrix, aber damit
+ //! muss man leben.. wird in Copy-Routine abgefangen, sonst
+ //! muesste hier nochmal Aufwand getrieben werden
+ if ( !(!bEditable && bOnlyNotBecauseOfMatrix) )
+ bNeedEdit = FALSE; // erlaubt, wenn geschuetzt/ReadOnly
+ break;
+
+ case SID_AUTOFORMAT: // Autoformat, mind. 3x3 selektiert
+ bDisable = (!bSimpleArea)
+ || ((nCol2 - nCol1) < 2) || ((nRow2 - nRow1) < 2);
+ break;
+
+ case SID_OPENDLG_CONDFRMT :
+ case FID_CONDITIONAL_FORMAT :
+ case SID_CELL_FORMAT_RESET :
+ case FID_CELL_FORMAT :
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ if ( !bEditable && bOnlyNotBecauseOfMatrix )
+ bNeedEdit = FALSE;
+ break;
+ }
+ if (!bDisable && bNeedEdit && !bEditable)
+ bDisable = TRUE;
+
+ if (bDisable)
+ rSet.DisableItem(nWhich);
+ nWhich = aIter.NextWhich();
+ }
+}
+
+// Funktionen, die je nach Cursorposition disabled sind
+// Default:
+// SID_INSERT_POSTIT, SID_CHARMAP, SID_OPENDLG_FUNCTION
+
+void ScCellShell::GetCellState( SfxItemSet& rSet )
+{
+ ScDocument* pDoc = GetViewData()->GetDocShell()->GetDocument();
+ ScAddress aCursor( GetViewData()->GetCurX(), GetViewData()->GetCurY(),
+ GetViewData()->GetTabNo() );
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ BOOL bDisable = FALSE;
+ BOOL bNeedEdit = TRUE; // muss Cursorposition editierbar sein?
+ switch ( nWhich )
+ {
+ case SID_THESAURUS:
+ {
+ CellType eType = pDoc->GetCellType( aCursor );
+ bDisable = ( eType != CELLTYPE_STRING && eType != CELLTYPE_EDIT);
+ if (!bDisable)
+ {
+ // test for available languages
+ USHORT nLang = lcl_GetEffLanguage( pDoc, aCursor );
+ bDisable = !ScModule::HasThesaurusLanguage( nLang );
+ }
+ }
+ break;
+ case SID_OPENDLG_FUNCTION:
+ {
+ ScMarkData aMarkData=GetViewData()->GetMarkData();
+ ScRange aRange;
+ aMarkData.GetMarkArea(aRange);
+ if(aMarkData.IsMarked())
+ {
+ if (!pDoc->IsBlockEditable( aCursor.Tab(), aRange.aStart.Col(),aRange.aStart.Row(),
+ aRange.aEnd.Col(),aRange.aEnd.Row() ))
+ {
+ bDisable = TRUE;
+ }
+ bNeedEdit=FALSE;
+ }
+
+ }
+ break;
+ }
+ if (!bDisable && bNeedEdit)
+ if (!pDoc->IsBlockEditable( aCursor.Tab(), aCursor.Col(),aCursor.Row(),
+ aCursor.Col(),aCursor.Row() ))
+ bDisable = TRUE;
+ if (bDisable)
+ rSet.DisableItem(nWhich);
+ nWhich = aIter.NextWhich();
+ }
+}
+
+// Einfuegen, Inhalte einfuegen
+
+void __EXPORT ScCellShell::GetClipState( SfxItemSet& rSet )
+{
+ BOOL bDisable = TRUE;
+
+// SID_PASTE
+// FID_PASTE_CONTENTS
+
+ if ( ScGlobal::IsClipCaptured() || ScGlobal::IsClipDraw() )
+ bDisable = FALSE;
+ else
+ {
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (pClipObj.Is())
+ {
+ const SvDataTypeList& rTypeLst = pClipObj->GetTypeList();
+
+ if( rTypeLst.Get( FORMAT_BITMAP ) ||
+ rTypeLst.Get( FORMAT_GDIMETAFILE ) ||
+ rTypeLst.Get( SOT_FORMATSTR_ID_SVXB ) ||
+ rTypeLst.Get( FORMAT_PRIVATE ) ||
+ rTypeLst.Get( FORMAT_RTF ) ||
+ rTypeLst.Get( SOT_FORMATSTR_ID_EMBED_SOURCE ) ||
+ rTypeLst.Get( SOT_FORMATSTR_ID_LINK_SOURCE ) ||
+ rTypeLst.Get( SOT_FORMATSTR_ID_EMBED_SOURCE_OLE ) ||
+ rTypeLst.Get( SOT_FORMATSTR_ID_LINK_SOURCE_OLE ) ||
+ ScImportExport::IsFormatSupported( pClipObj ) )
+ bDisable = FALSE;
+ }
+ }
+
+ // Zellschutz / Multiselektion
+
+ if (!bDisable)
+ {
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDocument* pDoc = GetViewData()->GetDocShell()->GetDocument();
+ if (!pDoc->IsBlockEditable( nTab, nCol,nRow, nCol,nRow ))
+ bDisable = TRUE;
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ if (rMark.IsMultiMarked())
+ bDisable = TRUE;
+ }
+
+ if (bDisable)
+ {
+ rSet.DisableItem( SID_PASTE );
+ rSet.DisableItem( FID_PASTE_CONTENTS );
+ }
+}
+
+// only SID_HYPERLINK_GETLINK:
+
+void ScCellShell::GetHLinkState( SfxItemSet& rSet )
+{
+ // always return an item (or inserting will be disabled)
+ // if the cell at the cursor contains only a link, return that link
+
+ SvxHyperlinkItem aHLinkItem;
+ if ( !GetViewData()->GetView()->HasBookmarkAtCursor( &aHLinkItem ) )
+ {
+ //! put selected text into item?
+ }
+
+ rSet.Put(aHLinkItem);
+}
+
+void ScCellShell::GetState(SfxItemSet &rSet)
+{
+ // removed: SID_BORDER_OBJECT (old Basic)
+
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ BOOL bOle = pTabViewShell->GetViewFrame()->ISA(SfxInPlaceFrame);
+ BOOL bTabProt = GetViewData()->GetDocument()->IsTabProtected(GetViewData()->GetTabNo());
+ SfxApplication* pSfxApp = SFX_APP();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nPosX = pViewData->GetCurX();
+ USHORT nPosY = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nMyId = 0;
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+
+
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case SID_OPENDLG_CHART:
+ if ( bOle || bTabProt || !pSfxApp->HasFeature(SFX_FEATURE_SCHART) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_DETECTIVE_REFRESH:
+ if (!pDoc->HasDetectiveOperations())
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_RANGE_ADDRESS:
+ {
+ ScRange aRange;
+ if ( pViewData->GetSimpleArea( aRange, TRUE ) )
+ {
+ String aStr;
+ USHORT nFlags = SCA_VALID | SCA_TAB_3D;
+ aRange.Format(aStr,nFlags,pDoc);
+ rSet.Put( SfxStringItem( nWhich, aStr ) );
+ }
+ }
+ break;
+
+ case SID_RANGE_NOTETEXT:
+ {
+ USHORT nNoteCol, nNoteRow, nNoteTab;
+
+ // #43343# immer Cursorposition
+#if 0
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange,TRUE))
+ {
+ nNoteCol = aRange.aStart.Col();
+ nNoteRow = aRange.aStart.Row();
+ nNoteTab = aRange.aStart.Tab();
+ }
+ else // Cursor bei Mehrfachselektion
+#endif
+ {
+ nNoteCol = nPosX;
+ nNoteRow = nPosY;
+ nNoteTab = nTab;
+ }
+
+ String aNoteText;
+ ScPostIt aNote;
+ if ( pDoc->GetNote( nNoteCol, nNoteRow, nNoteTab, aNote ) )
+ aNoteText = aNote.GetText();
+
+ rSet.Put( SfxStringItem( nWhich, aNoteText ) );
+ }
+ break;
+
+ case SID_RANGE_ROW:
+ rSet.Put( SfxUInt16Item( nWhich, nPosY+1 ) );
+ break;
+
+ case SID_RANGE_COL:
+ rSet.Put( SfxUInt16Item( nWhich, nPosX+1 ) );
+ break;
+
+ case SID_RANGE_TABLE:
+ rSet.Put( SfxUInt16Item( nWhich, nTab+1 ) );
+ break;
+
+ case SID_RANGE_VALUE:
+ {
+ double nValue;
+ pDoc->GetValue( nPosX, nPosY, nTab, nValue );
+ rSet.Put( ScDoubleItem( nWhich, nValue ) );
+ }
+ break;
+
+ case SID_RANGE_FORMULA:
+ {
+ String aString;
+ pDoc->GetFormula( nPosX, nPosY, nTab, aString );
+ if( aString.Len() == 0 )
+ {
+ pDoc->GetInputString( nPosX, nPosY, nTab, aString );
+ }
+ rSet.Put( SfxStringItem( nWhich, aString ) );
+ }
+ break;
+
+ case SID_RANGE_TEXTVALUE:
+ {
+ String aString;
+ pDoc->GetString( nPosX, nPosY, nTab, aString );
+ rSet.Put( SfxStringItem( nWhich, aString ) );
+ }
+ break;
+
+ case SID_STATUS_SELMODE:
+ {
+ /* 0: STD Click hebt Sel auf
+ * 1: ER Click erweitert Selektion
+ * 2: ERG Click definiert weitere Selektion
+ */
+ USHORT nMode = pTabViewShell->GetLockedModifiers();
+
+ switch ( nMode )
+ {
+ case KEY_SHIFT: nMode = 1; break;
+ case KEY_MOD1: nMode = 2; break; // Control-Taste
+ case 0:
+ default:
+ nMode = 0;
+ }
+
+ rSet.Put( SfxUInt16Item( nWhich, nMode ) );
+ }
+ break;
+
+ case SID_STATUS_DOCPOS:
+ {
+ String aStr( ScGlobal::GetRscString( STR_TABLE ) );
+
+ aStr += ' ';
+ aStr += String::CreateFromInt32( nTab + 1 );
+ aStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " / " ));
+ aStr += String::CreateFromInt32( nTabCount );
+ rSet.Put( SfxStringItem( nWhich, aStr ) );
+ }
+ break;
+
+ // Summe etc. mit Datum/Zeit/Fehler/Pos&Groesse zusammengefasst
+
+ case SID_TABLE_CELL:
+ case SID_ATTR_POSITION:
+ case SID_ATTR_SIZE:
+ {
+ // Testen, ob Fehler unter Cursor
+ // (nicht pDoc->GetErrCode, um keine zirkulaeren Referenzen auszuloesen)
+
+ // In interpreter may happen via rescheduled Basic
+ if ( pDoc->IsInInterpreter() )
+ rSet.Put( SfxStringItem( nWhich,
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("...")) ) );
+ else
+ {
+ USHORT nErrCode = 0;
+ ScBaseCell* pCell;
+ pDoc->GetCell( nPosX, nPosY, nTab, pCell );
+ if ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA )
+ {
+ ScFormulaCell* pFCell = (ScFormulaCell*) pCell;
+ if (!pFCell->IsRunning())
+ nErrCode = pFCell->GetErrCode();
+ }
+
+ if ( nErrCode > 0 )
+ rSet.Put( SfxStringItem( nWhich,
+ ScGlobal::GetLongErrorString( nErrCode ) ) );
+ else
+ {
+ String aFuncStr;
+ if ( pTabViewShell->GetFunction( aFuncStr ) )
+ rSet.Put( SfxStringItem( nWhich, aFuncStr ) );
+ }
+ }
+ }
+ break;
+
+ case SID_DATA_SELECT:
+ // ab 506f wird die ganze Spalte angesehen
+ if ( !pDoc->HasStringCells(ScRange(nPosX,0,nTab, nPosX,MAXROW,nTab)) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_STATUS_SUM:
+ {
+ String aFuncStr;
+ if ( pTabViewShell->GetFunction( aFuncStr ) )
+ rSet.Put( SfxStringItem( nWhich, aFuncStr ) );
+ }
+ break;
+
+ case FID_MERGE_ON:
+ if ( pDoc->GetChangeTrack() || !pTabViewShell->TestMergeCells() )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FID_MERGE_OFF:
+ if ( pDoc->GetChangeTrack() || !pTabViewShell->TestRemoveMerge() )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FID_INS_ROWBRK:
+ if ( nPosY==0 || (pDoc->GetRowFlags(nPosY,nTab) & CR_MANUALBREAK) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FID_INS_COLBRK:
+ if ( nPosX==0 || (pDoc->GetColFlags(nPosX,nTab) & CR_MANUALBREAK) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FID_DEL_ROWBRK:
+ if ( nPosY==0 || (pDoc->GetRowFlags(nPosY,nTab) & CR_MANUALBREAK)==0 )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FID_DEL_COLBRK:
+ if ( nPosX==0 || (pDoc->GetColFlags(nPosX,nTab) & CR_MANUALBREAK)==0 )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FID_FILL_TAB:
+ if ( nTabSelCount < 2 )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_SELECT_SCENARIO:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ List aList;
+
+ Color aDummyCol;
+ USHORT nDummyFlags;
+
+ if ( !pDoc->IsScenario(nTab) )
+ {
+ String aStr;
+ USHORT nScTab = nTab + 1;
+
+ while ( pDoc->IsScenario(nScTab) )
+ {
+ pDoc->GetName( nScTab, aStr );
+ aList.Insert( new String( aStr ), LIST_APPEND );
+ pDoc->GetScenarioData( nScTab, aStr, aDummyCol, nDummyFlags );
+ aList.Insert( new String( aStr ), LIST_APPEND );
+ ++nScTab;
+ }
+ }
+ else
+ {
+ String aComment;
+ pDoc->GetScenarioData( nTab, aComment, aDummyCol, nDummyFlags );
+ DBG_ASSERT( aList.Count() == 0, "List not empty!" );
+ aList.Insert( new String( aComment ) );
+ }
+
+ rSet.Put( SfxStringListItem( nWhich, &aList ) );
+
+ ULONG nCount = aList.Count();
+ for ( ULONG i=0; i<nCount; i++ )
+ delete (String*) aList.GetObject(i);
+ }
+ break;
+
+ case FID_ROW_HIDE:
+ case FID_ROW_SHOW:
+ case FID_COL_HIDE:
+ case FID_COL_SHOW:
+ case FID_COL_OPT_WIDTH:
+ case FID_ROW_OPT_HEIGHT:
+ case SID_DEL_ROWS:
+ case SID_DEL_COLS:
+ case FID_DELETE_CELL:
+ if ( pDoc->IsTabProtected(nTab) || pDocSh->IsReadOnly())
+ rSet.DisableItem( nWhich );
+ break;
+
+/* Zellschutz bei selektierten Zellen wird bei anderen Funktionen auch nicht abgefragt...
+ case SID_DELETE:
+ {
+ if ( pDoc->IsTabProtected(nTab) )
+ {
+ const SfxItemSet& rAttrSet = GetSelectionPattern()->GetItemSet();
+ const ScProtectionAttr& rProtAttr = (const ScProtectionAttr&)rAttrSet.Get( ATTR_PROTECTION, TRUE );
+ if ( rProtAttr.GetProtection() )
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+*/
+ case SID_OUTLINE_MAKE:
+ {
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ if (pDoc->GetChangeTrack()!=NULL || rMark.IsMultiMarked())
+ {
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+ case SID_OUTLINE_SHOW:
+ if (!pTabViewShell->OutlinePossible(FALSE))
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_OUTLINE_HIDE:
+ if (!pTabViewShell->OutlinePossible(TRUE))
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_OUTLINE_REMOVE:
+ {
+ BOOL bCol, bRow;
+ pTabViewShell->TestRemoveOutline( bCol, bRow );
+ if ( !bCol && !bRow )
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case FID_COL_WIDTH:
+ {
+ //GetViewData()->GetCurX();
+ SfxUInt16Item aWidthItem( FID_COL_WIDTH, pDoc->GetColWidth( nPosX , nTab) );
+ rSet.Put( aWidthItem );
+ if ( pDocSh->IsReadOnly())
+ rSet.DisableItem( nWhich );
+
+ //XXX Disablen wenn nicht eindeutig
+ }
+ break;
+
+ case FID_ROW_HEIGHT:
+ {
+ //GetViewData()->GetCurY();
+ SfxUInt16Item aHeightItem( FID_ROW_HEIGHT, pDoc->GetRowHeight( nPosY , nTab) );
+ rSet.Put( aHeightItem );
+ //XXX Disablen wenn nicht eindeutig
+ if ( pDocSh->IsReadOnly())
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_DETECTIVE_FILLMODE:
+ rSet.Put(SfxBoolItem( nWhich, pTabViewShell->IsAuditShell() ));
+ break;
+
+ case FID_INPUTLINE_STATUS:
+ DBG_ERROR( "Old update method. Use ScTabViewShell::UpdateInputHandler()." );
+ break;
+
+ case SID_SCENARIOS: // Szenarios:
+ if (!(rMark.IsMarked() || rMark.IsMultiMarked())) // nur, wenn etwas selektiert
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FID_NOTE_VISIBLE:
+ {
+ ScPostIt aNote;
+ if ( pDoc->IsBlockEditable( nTab, nPosX,nPosY, nPosX,nPosY ) &&
+ pDoc->GetNote( nPosX, nPosY, nTab, aNote ) )
+ {
+ BOOL bShown = aNote.IsShown() &&
+ pDoc->HasNoteObject( nPosX, nPosY, nTab );
+ rSet.Put( SfxBoolItem( nWhich, bShown ) );
+ }
+ else
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_OPENDLG_CONSOLIDATE:
+ case SCITEM_CONSOLIDATEDATA:
+ {
+ if(pDoc->GetChangeTrack()!=NULL)
+ rSet.DisableItem( nWhich);
+ }
+ break;
+
+ } // switch ( nWitch )
+ nWhich = aIter.NextWhich();
+ } // while ( nWitch )
+}
+
+//------------------------------------------------------------------
+
+
+
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
new file mode 100644
index 000000000000..d9510d0fce88
--- /dev/null
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -0,0 +1,1790 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellsh1.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SI_NOSBXCONTROLS
+#define _VCONT_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/viewfrm.hxx>
+
+#define _ZFORLIST_DECLARE_TABLE
+#include <svtools/stritem.hxx>
+#include <svtools/whiter.hxx>
+#include <svtools/zforlist.hxx>
+#include <svtools/zformat.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/request.hxx>
+#include <vcl/msgbox.hxx>
+#include <so3/pastedlg.hxx>
+#include <sot/formats.hxx>
+#include <vcl/clip.hxx>
+#include <svx/postattr.hxx>
+#include <svx/fontitem.hxx>
+#include <svx/charmap.hxx>
+#include <sfx2/passwd.hxx>
+#include <svx/hlnkitem.hxx>
+#include <svtools/sbxcore.hxx>
+#include <vcl/waitobj.hxx>
+
+#include "cellsh.hxx"
+#include "sc.hrc"
+#include "document.hxx"
+#include "patattr.hxx"
+#include "scmod.hxx"
+#include "scresid.hxx"
+#include "tabvwsh.hxx"
+#include "inscldlg.hxx"
+#include "inscodlg.hxx"
+#include "delcldlg.hxx"
+#include "delcodlg.hxx"
+#include "filldlg.hxx"
+#include "groupdlg.hxx"
+#include "impex.hxx"
+#include "reffind.hxx"
+#include "namecrea.hxx"
+#include "uiitems.hxx"
+#include "reffact.hxx"
+#include "namepast.hxx"
+#include "inputhdl.hxx"
+
+#include "globstr.hrc"
+
+
+#define IS_AVAILABLE(WhichId,ppItem) \
+ (pReqArgs->GetItemState((WhichId), TRUE, ppItem ) == SFX_ITEM_SET)
+
+//------------------------------------------------------------------
+void ScCellShell::ExecuteEdit( SfxRequest& rReq )
+{
+ ScModule* pScMod = SC_MOD();
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ SfxBindings& rBindings = pTabViewShell->GetViewFrame()->GetBindings();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+
+ pTabViewShell->HideListBox(); // Autofilter-DropDown-Listbox
+
+ // Eingabe beenden
+ if ( GetViewData()->HasEditView( GetViewData()->GetActivePart() ) )
+ {
+ switch ( nSlot )
+ {
+ case FID_DEFINE_NAME:
+ case FID_USE_NAME:
+ case FID_INSERT_NAME:
+ case SID_SPELLING:
+
+ pScMod->InputEnterHandler();
+ pTabViewShell->UpdateInputHandler();
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ switch ( nSlot )
+ {
+ //
+ // Einfuegen / Loeschen von Zellen / Zeilen / Spalten
+ //
+
+ case FID_INS_ROW:
+ pTabViewShell->InsertCells(INS_INSROWS);
+ rReq.Done();
+ break;
+
+ case FID_INS_COLUMN:
+ pTabViewShell->InsertCells(INS_INSCOLS);
+ rReq.Done();
+ break;
+
+ case FID_INS_CELLSDOWN:
+ pTabViewShell->InsertCells(INS_CELLSDOWN);
+ rReq.Done();
+ break;
+
+ case FID_INS_CELLSRIGHT:
+ pTabViewShell->InsertCells(INS_CELLSRIGHT);
+ rReq.Done();
+ break;
+
+ case SID_DEL_ROWS:
+ pTabViewShell->DeleteCells( DEL_DELROWS );
+ rReq.Done();
+ break;
+
+ case SID_DEL_COLS:
+ pTabViewShell->DeleteCells( DEL_DELCOLS );
+ rReq.Done();
+ break;
+
+ case FID_INS_CELL:
+ {
+ InsCellCmd eCmd=INS_NONE;
+
+ if ( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ String aFlags;
+
+ if( IS_AVAILABLE( FID_INS_CELL, &pItem ) )
+ aFlags = ((const SfxStringItem*)pItem)->GetValue();
+ if( aFlags.Len() )
+ {
+ switch( aFlags.GetChar(0) )
+ {
+ case 'V': eCmd = INS_CELLSDOWN ;break;
+ case '>': eCmd = INS_CELLSRIGHT ;break;
+ case 'R': eCmd = INS_INSROWS ;break;
+ case 'C': eCmd = INS_INSCOLS ;break;
+ }
+ }
+ }
+ else
+ {
+ if ( GetViewData()->SimpleColMarked() )
+ eCmd = INS_INSCOLS;
+ else if ( GetViewData()->SimpleRowMarked() )
+ eCmd = INS_INSROWS;
+ else
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ BOOL bTheFlag=(pDoc->GetChangeTrack()!=NULL);
+
+ ScInsertCellDlg* pDlg = new ScInsertCellDlg( pTabViewShell->GetDialogParent(),
+ bTheFlag);
+ if (pDlg->Execute() == RET_OK)
+ eCmd = pDlg->GetInsCellCmd();
+ delete pDlg;
+ }
+ }
+
+ if (eCmd!=INS_NONE)
+ {
+ pTabViewShell->InsertCells( eCmd );
+
+ if( ! rReq.IsAPI() )
+ {
+ String aParam;
+
+ switch( eCmd )
+ {
+ case INS_CELLSDOWN: aParam='V'; break;
+ case INS_CELLSRIGHT: aParam='>'; break;
+ case INS_INSROWS: aParam='R'; break;
+ case INS_INSCOLS: aParam='C'; break;
+ }
+ rReq.AppendItem( SfxStringItem( FID_INS_CELL, aParam ) );
+ rReq.Done();
+ }
+ }
+ }
+ break;
+
+ case FID_DELETE_CELL:
+ {
+ DelCellCmd eCmd = DEL_NONE;
+
+ if ( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ String aFlags;
+
+ if( IS_AVAILABLE( FID_DELETE_CELL, &pItem ) )
+ aFlags = ((const SfxStringItem*)pItem)->GetValue();
+ if( aFlags.Len() )
+ {
+ switch( aFlags.GetChar(0) )
+ {
+ case 'U': eCmd = DEL_CELLSUP ;break;
+ case 'L': eCmd = DEL_CELLSLEFT ;break;
+ case 'R': eCmd = DEL_DELROWS ;break;
+ case 'C': eCmd = DEL_DELCOLS ;break;
+ }
+ }
+ }
+ else
+ {
+ if ( GetViewData()->SimpleColMarked() )
+ eCmd = DEL_DELCOLS;
+ else if ( GetViewData()->SimpleRowMarked() )
+ eCmd = DEL_DELROWS;
+ else
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ BOOL bTheFlag=GetViewData()->GetMarkData().IsMultiMarked() ||
+ (pDoc->GetChangeTrack()!=NULL);
+
+ ScDeleteCellDlg* pDlg = new ScDeleteCellDlg(
+ pTabViewShell->GetDialogParent(),bTheFlag);
+
+ if (pDlg->Execute() == RET_OK)
+ eCmd = pDlg->GetDelCellCmd();
+ delete pDlg;
+ }
+ }
+
+ if (eCmd != DEL_NONE )
+ {
+ pTabViewShell->DeleteCells( eCmd );
+
+ if( ! rReq.IsAPI() )
+ {
+ String aParam;
+
+ switch( eCmd )
+ {
+ case DEL_CELLSUP: aParam='U'; break;
+ case DEL_CELLSLEFT: aParam='L'; break;
+ case DEL_DELROWS: aParam='R'; break;
+ case DEL_DELCOLS: aParam='C'; break;
+ }
+ rReq.AppendItem( SfxStringItem( FID_DELETE_CELL, aParam ) );
+ rReq.Done();
+ }
+ }
+ }
+ break;
+
+ //
+ // Inhalte von Zellen loeschen
+ //
+
+ case SID_DELETE_CONTENTS:
+ pTabViewShell->DeleteContents( IDF_CONTENTS );
+ rReq.Done();
+ break;
+
+ case SID_DELETE:
+ {
+ USHORT nFlags = IDF_NONE;
+
+ if ( pReqArgs!=NULL && pTabViewShell->SelectionEditable() )
+ {
+ const SfxPoolItem* pItem;
+ String aFlags = 'A';
+
+ if( IS_AVAILABLE( SID_DELETE, &pItem ) )
+ aFlags = ((const SfxStringItem*)pItem)->GetValue();
+
+ aFlags.ToUpperAscii();
+ BOOL bCont = TRUE;
+
+ for( xub_StrLen i=0 ; bCont && i<aFlags.Len() ; i++ )
+ {
+ switch( aFlags.GetChar(i) )
+ {
+ case 'A': // Alle
+ nFlags |= IDF_ALL;
+ bCont = FALSE; // nicht mehr weitermachen!
+ break;
+ case 'S': nFlags |= IDF_STRING; break;
+ case 'V': nFlags |= IDF_VALUE; break;
+ case 'D': nFlags |= IDF_DATETIME; break;
+ case 'F': nFlags |= IDF_FORMULA; break;
+ case 'N': nFlags |= IDF_NOTE; break;
+ case 'T': nFlags |= IDF_ATTRIB; break;
+ case 'O': nFlags |= IDF_OBJECTS; break;
+ }
+ }
+ }
+ else
+ {
+ if (pTabViewShell->SelectionEditable())
+ {
+ ScDeleteContentsDlg* pDlg = new ScDeleteContentsDlg( pTabViewShell->GetDialogParent() );
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ if ( pDoc->IsTabProtected(nTab) )
+ pDlg->DisableObjects();
+ if (pDlg->Execute() == RET_OK)
+ {
+ nFlags = pDlg->GetDelContentsCmdBits();
+ }
+ delete pDlg;
+ }
+ else
+ pTabViewShell->ErrorMessage(STR_PROTECTIONERR);
+ }
+
+ if( nFlags != IDF_NONE )
+ {
+ pTabViewShell->DeleteContents( nFlags );
+
+ if( ! rReq.IsAPI() )
+ {
+ String aFlags;
+
+ if( nFlags == IDF_ALL )
+ {
+ aFlags += 'A';
+ }
+ else
+ {
+ if( nFlags & IDF_STRING ) aFlags += 'S';
+ if( nFlags & IDF_VALUE ) aFlags += 'V';
+ if( nFlags & IDF_DATETIME ) aFlags += 'D';
+ if( nFlags & IDF_FORMULA ) aFlags += 'F';
+ if( nFlags & IDF_NOTE ) aFlags += 'N';
+ if( nFlags & IDF_ATTRIB ) aFlags += 'T';
+ if( nFlags & IDF_OBJECTS ) aFlags += 'O';
+ }
+
+ rReq.AppendItem( SfxStringItem( SID_DELETE, aFlags ) );
+ rReq.Done();
+ }
+ }
+ }
+ break;
+
+ //
+ // Ausfuellen...
+ //
+
+ case FID_FILL_TO_BOTTOM:
+ pTabViewShell->FillSimple( FILL_TO_BOTTOM );
+ rReq.Done();
+ break;
+
+ case FID_FILL_TO_RIGHT:
+ pTabViewShell->FillSimple( FILL_TO_RIGHT );
+ rReq.Done();
+ break;
+
+ case FID_FILL_TO_TOP:
+ pTabViewShell->FillSimple( FILL_TO_TOP );
+ rReq.Done();
+ break;
+
+ case FID_FILL_TO_LEFT:
+ pTabViewShell->FillSimple( FILL_TO_LEFT );
+ rReq.Done();
+ break;
+
+ case FID_FILL_TAB:
+ {
+ USHORT nFlags = IDF_NONE;
+ USHORT nFunction = PASTE_NOFUNC;
+ BOOL bSkipEmpty = FALSE;
+ BOOL bAsLink = FALSE;
+
+ if ( pReqArgs!=NULL && pTabViewShell->SelectionEditable() )
+ {
+ const SfxPoolItem* pItem;
+ String aFlags = 'A';
+
+ if( IS_AVAILABLE( FID_FILL_TAB, &pItem ) )
+ aFlags = ((const SfxStringItem*)pItem)->GetValue();
+
+ aFlags.ToUpperAscii();
+ BOOL bCont = TRUE;
+
+ for( xub_StrLen i=0 ; bCont && i<aFlags.Len() ; i++ )
+ {
+ switch( aFlags.GetChar(i) )
+ {
+ case 'A': // Alle
+ nFlags |= IDF_ALL;
+ bCont = FALSE; // nicht mehr weitermachen!
+ break;
+ case 'S': nFlags |= IDF_STRING; break;
+ case 'V': nFlags |= IDF_VALUE; break;
+ case 'D': nFlags |= IDF_DATETIME; break;
+ case 'F': nFlags |= IDF_FORMULA; break;
+ case 'N': nFlags |= IDF_NOTE; break;
+ case 'T': nFlags |= IDF_ATTRIB; break;
+ }
+ }
+ }
+ else
+ {
+ ScInsertContentsDlg* pDlg =
+ new ScInsertContentsDlg(pTabViewShell->GetDialogParent(),
+ 0, /* nCheckDefaults */
+ &ScGlobal::GetRscString(STR_FILL_TAB) );
+ pDlg->SetFillMode(TRUE);
+
+ if (pDlg->Execute() == RET_OK)
+ {
+ nFlags = pDlg->GetInsContentsCmdBits();
+ nFunction = pDlg->GetFormulaCmdBits();
+ bSkipEmpty = pDlg->IsSkipEmptyCells();
+ bAsLink = pDlg->IsLink();
+ // MoveMode gibt's bei Tabelle fuellen nicht
+ }
+ delete pDlg;
+ }
+
+ if( nFlags != IDF_NONE )
+ {
+ pTabViewShell->FillTab( nFlags, nFunction, bSkipEmpty, bAsLink );
+
+ if( ! rReq.IsAPI() )
+ {
+ String aFlags;
+
+ if( nFlags == IDF_ALL )
+ {
+ aFlags += 'A';
+ }
+ else
+ {
+ if( nFlags & IDF_STRING ) aFlags += 'S';
+ if( nFlags & IDF_VALUE ) aFlags += 'V';
+ if( nFlags & IDF_DATETIME ) aFlags += 'D';
+ if( nFlags & IDF_FORMULA ) aFlags += 'F';
+ if( nFlags & IDF_NOTE ) aFlags += 'N';
+ if( nFlags & IDF_ATTRIB ) aFlags += 'T';
+ }
+
+ rReq.AppendItem( SfxStringItem( FID_FILL_TAB, aFlags ) );
+ rReq.Done();
+ }
+ }
+ }
+ break;
+
+ case FID_FILL_SERIES:
+ {
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+ USHORT nPossDir = FDS_OPT_NONE;
+ FillDir eFillDir = FILL_TO_BOTTOM;
+ FillCmd eFillCmd = FILL_LINEAR;
+ FillDateCmd eFillDateCmd = FILL_DAY;
+ double fStartVal = MAXDOUBLE;
+ double fIncVal = 1;
+ double fMaxVal = MAXDOUBLE;
+ BOOL bDoIt = FALSE;
+
+ GetViewData()->GetSimpleArea( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab );
+
+ if( nStartCol!=nEndCol )
+ {
+ nPossDir |= FDS_OPT_HORZ;
+ eFillDir=FILL_TO_RIGHT;
+ }
+
+ if( nStartRow!=nEndRow )
+ {
+ nPossDir |= FDS_OPT_VERT;
+ eFillDir=FILL_TO_BOTTOM;
+ }
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+
+ if( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ String aFillDir, aFillCmd, aFillDateCmd;
+ String aFillStep, aFillStart, aFillMax;
+ ULONG nKey;
+ double fTmpVal;
+
+ bDoIt=FALSE;
+
+ if( IS_AVAILABLE( FID_FILL_SERIES, &pItem ) )
+ aFillDir = ((const SfxStringItem*)pItem)->GetValue();
+ if( IS_AVAILABLE( FN_PARAM_1, &pItem ) )
+ aFillCmd = ((const SfxStringItem*)pItem)->GetValue();
+ if( IS_AVAILABLE( FN_PARAM_2, &pItem ) )
+ aFillDateCmd = ((const SfxStringItem*)pItem)->GetValue();
+ if( IS_AVAILABLE( FN_PARAM_3, &pItem ) )
+ aFillStep = ((const SfxStringItem*)pItem)->GetValue();
+ if( IS_AVAILABLE( FN_PARAM_4, &pItem ) )
+ aFillStart = ((const SfxStringItem*)pItem)->GetValue();
+ if( IS_AVAILABLE( FN_PARAM_5, &pItem ) )
+ aFillMax = ((const SfxStringItem*)pItem)->GetValue();
+
+ if( aFillDir.Len() )
+ switch( aFillDir.GetChar(0) )
+ {
+ case 'B': case 'b': eFillDir=FILL_TO_BOTTOM; break;
+ case 'R': case 'r': eFillDir=FILL_TO_RIGHT; break;
+ case 'T': case 't': eFillDir=FILL_TO_TOP; break;
+ case 'L': case 'l': eFillDir=FILL_TO_LEFT; break;
+ }
+
+ if( aFillCmd.Len() )
+ switch( aFillCmd.GetChar(0) )
+ {
+ case 'S': case 's': eFillCmd=FILL_SIMPLE; break;
+ case 'L': case 'l': eFillCmd=FILL_LINEAR; break;
+ case 'G': case 'g': eFillCmd=FILL_GROWTH; break;
+ case 'D': case 'd': eFillCmd=FILL_DATE; break;
+ case 'A': case 'a': eFillCmd=FILL_AUTO; break;
+ }
+
+ if( aFillDateCmd.Len() )
+ switch( aFillDateCmd.GetChar(0) )
+ {
+ case 'D': case 'd': eFillDateCmd=FILL_DAY; break;
+ case 'W': case 'w': eFillDateCmd=FILL_WEEKDAY; break;
+ case 'M': case 'm': eFillDateCmd=FILL_MONTH; break;
+ case 'Y': case 'y': eFillDateCmd=FILL_YEAR; break;
+ }
+
+ nKey = 0;
+ if( pFormatter->IsNumberFormat( aFillStart, nKey, fTmpVal ))
+ fStartVal = fTmpVal;
+
+ nKey = 0;
+ if( pFormatter->IsNumberFormat( aFillStep, nKey, fTmpVal ))
+ fIncVal = fTmpVal;
+
+ nKey = 0;
+ if( pFormatter->IsNumberFormat( aFillMax, nKey, fTmpVal ))
+ fMaxVal = fTmpVal;
+
+ bDoIt = TRUE;
+
+ }
+ else // (pReqArgs == NULL) => Dialog hochziehen
+ {
+ //
+ ULONG nPrivFormat;
+ CellType eCellType;
+ pDoc->GetNumberFormat( nStartCol, nStartRow, nStartTab, nPrivFormat );
+ pDoc->GetCellType( nStartCol, nStartRow, nStartTab,eCellType );
+ const SvNumberformat* pPrivEntry = pFormatter->GetEntry( nPrivFormat );
+ if (!pPrivEntry)
+ {
+ DBG_ERROR("Zahlformat nicht gefunden !!!");
+ }
+ else
+ {
+ short nPrivType = pPrivEntry->GetType();
+ if ( ( nPrivType & NUMBERFORMAT_DATE)>0)
+ {
+ eFillCmd=FILL_DATE;
+ }
+ else if(eCellType==CELLTYPE_STRING)
+ {
+ eFillCmd=FILL_AUTO;
+ }
+ }
+
+ //
+ String aStartStr;
+
+ // Startwert nur vorbelegen, wenn nur 1 Zeile oder Spalte:
+ if ( nStartCol == nEndCol || nStartRow == nEndRow )
+ {
+ double fInputEndVal;
+ String aEndStr;
+
+ pDoc->GetInputString( nStartCol, nStartRow, nStartTab, aStartStr);
+ pDoc->GetValue( nStartCol, nStartRow, nStartTab, fStartVal );
+
+
+ if(eFillDir==FILL_TO_BOTTOM && nStartRow < nEndRow )
+ {
+ pDoc->GetInputString( nStartCol, nStartRow+1, nStartTab, aEndStr);
+ if(aEndStr.Len()>0)
+ {
+ pDoc->GetValue( nStartCol, nStartRow+1, nStartTab, fInputEndVal);
+ fIncVal=fInputEndVal-fStartVal;
+ }
+ }
+ else
+ {
+ if(nStartCol < nEndCol)
+ {
+ pDoc->GetInputString( nStartCol+1, nStartRow, nStartTab, aEndStr);
+ if(aEndStr.Len()>0)
+ {
+ pDoc->GetValue( nStartCol+1, nStartRow, nStartTab, fInputEndVal);
+ fIncVal=fInputEndVal-fStartVal;
+ }
+ }
+ }
+ if(eFillCmd==FILL_DATE)
+ {
+ Date aNullDate = *pDoc->GetFormatTable()->GetNullDate();
+ Date aStartDate = aNullDate;
+ aStartDate+= (long)fStartVal;
+ Date aEndDate = aNullDate;
+ aEndDate+= (long)fInputEndVal;
+ double fTempDate=0;
+
+ if(aStartDate.GetYear()!=aEndDate.GetYear())
+ {
+ eFillDateCmd = FILL_YEAR;
+ fTempDate=aEndDate.GetYear()-aStartDate.GetYear();
+ }
+ if(aStartDate.GetMonth()!=aEndDate.GetMonth())
+ {
+ eFillDateCmd = FILL_MONTH;
+ fTempDate=fTempDate*12+aEndDate.GetMonth()-aStartDate.GetMonth();
+ }
+ if(aStartDate.GetDay()==aEndDate.GetDay())
+ {
+ fIncVal=fTempDate;
+ }
+ }
+ }
+ ScFillSeriesDlg* pDlg = new ScFillSeriesDlg(
+ pTabViewShell->GetDialogParent(), *pDoc,
+ eFillDir, eFillCmd, eFillDateCmd,
+ aStartStr, fIncVal, fMaxVal,
+ nPossDir);
+
+ if ( nStartCol != nEndCol && nStartRow != nEndRow )
+ {
+ pDlg->SetEdStartValEnabled(FALSE);
+ }
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ eFillDir = pDlg->GetFillDir();
+ eFillCmd = pDlg->GetFillCmd();
+ eFillDateCmd = pDlg->GetFillDateCmd();
+
+ if(eFillCmd==FILL_AUTO)
+ {
+ String aStr=pDlg->GetStartStr();
+ if(aStr.Len()>0)
+ pTabViewShell->EnterData( nStartCol, nStartRow, nStartTab, aStr );
+ }
+ fStartVal = pDlg->GetStart();
+ fIncVal = pDlg->GetStep();
+ fMaxVal = pDlg->GetMax();
+ bDoIt = TRUE;
+ }
+ delete pDlg;
+ }
+
+ if( bDoIt )
+ {
+ //nScFillModeMouseModifier = 0; // kein Ctrl/Copy
+ pTabViewShell->FillSeries( eFillDir, eFillCmd, eFillDateCmd, fStartVal, fIncVal, fMaxVal );
+
+ if( ! rReq.IsAPI() )
+ {
+ String aPara;
+ Color* pColor=0;
+
+ switch( eFillDir )
+ {
+ case FILL_TO_BOTTOM: aPara = 'B'; break;
+ case FILL_TO_RIGHT: aPara = 'R'; break;
+ case FILL_TO_TOP: aPara = 'T'; break;
+ case FILL_TO_LEFT: aPara = 'L'; break;
+ default: aPara.Erase(); break;
+ }
+ rReq.AppendItem( SfxStringItem( FID_FILL_SERIES, aPara ) );
+
+ switch( eFillCmd )
+ {
+ case FILL_SIMPLE: aPara = 'S'; break;
+ case FILL_LINEAR: aPara = 'L'; break;
+ case FILL_GROWTH: aPara = 'G'; break;
+ case FILL_DATE: aPara = 'D'; break;
+ case FILL_AUTO: aPara = 'A'; break;
+ default: aPara.Erase(); break;
+ }
+ rReq.AppendItem( SfxStringItem( FN_PARAM_1, aPara ) );
+
+ switch( eFillDateCmd )
+ {
+ case FILL_DAY: aPara = 'D'; break;
+ case FILL_WEEKDAY: aPara = 'W'; break;
+ case FILL_MONTH: aPara = 'M'; break;
+ case FILL_YEAR: aPara = 'Y'; break;
+ default: aPara.Erase(); break;
+ }
+ rReq.AppendItem( SfxStringItem( FN_PARAM_2, aPara ) );
+
+ ULONG nFormatKey = pFormatter->GetStandardFormat(NUMBERFORMAT_NUMBER,
+ ScGlobal::eLnge );
+
+ pFormatter->GetOutputString( fIncVal, nFormatKey, aPara, &pColor );
+ rReq.AppendItem( SfxStringItem( FN_PARAM_3, aPara ) );
+
+ pFormatter->GetOutputString( fStartVal, nFormatKey, aPara, &pColor );
+ rReq.AppendItem( SfxStringItem( FN_PARAM_4, aPara ) );
+
+ pFormatter->GetOutputString( fMaxVal, nFormatKey, aPara, &pColor );
+ rReq.AppendItem( SfxStringItem( FN_PARAM_5, aPara ) );
+
+ rReq.Done();
+ }
+ }
+ }
+ break;
+
+ case FID_FILL_AUTO:
+ {
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nStartTab, nEndTab;
+
+ GetViewData()->GetFillData( nStartCol, nStartRow, nEndCol, nEndRow );
+ USHORT nFillCol = GetViewData()->GetRefEndX();
+ USHORT nFillRow = GetViewData()->GetRefEndY();
+
+ if( pReqArgs != NULL )
+ {
+ const SfxPoolItem* pItem;
+
+ if( IS_AVAILABLE( FID_FILL_AUTO, &pItem ) )
+ {
+ ScAddress aScAddress;
+ String aArg = ((const SfxStringItem*)pItem)->GetValue();
+
+ if( aScAddress.Parse( aArg ) & SCA_VALID )
+ {
+ nFillRow = aScAddress.Row();
+ nFillCol = aScAddress.Col();
+ }
+ }
+
+ GetViewData()->GetSimpleArea( nStartCol,nStartRow,nStartTab,
+ nEndCol,nEndRow,nEndTab );
+ }
+ else // Aufruf per Maus
+ {
+ // #55284# nicht innerhalb einer zusammengefassten Zelle
+
+ if ( nStartCol == nEndCol && nStartRow == nEndRow )
+ {
+ USHORT nMergeCol = nStartCol;
+ USHORT nMergeRow = nStartRow;
+ if ( GetViewData()->GetDocument()->ExtendMerge(
+ nStartCol, nStartRow, nMergeCol, nMergeRow,
+ GetViewData()->GetTabNo() ) )
+ {
+ if ( nFillCol <= nMergeCol && nFillRow == nStartRow )
+ nFillCol = nStartCol;
+ if ( nFillRow <= nMergeRow && nFillCol == nStartCol )
+ nFillRow = nStartRow;
+ }
+ }
+ }
+
+ if ( nFillCol != nEndCol || nFillRow != nEndRow )
+ {
+ if ( nFillCol==nEndCol || nFillRow==nEndRow )
+ {
+ FillDir eDir;
+ USHORT nCount = 0;
+
+ if ( nFillCol==nEndCol )
+ {
+ if ( nFillRow > nEndRow )
+ {
+ eDir = FILL_TO_BOTTOM;
+ nCount = nFillRow - nEndRow;
+ }
+ else if ( nFillRow < nStartRow )
+ {
+ eDir = FILL_TO_TOP;
+ nCount = nStartRow - nFillRow;
+ }
+ }
+ else
+ {
+ if ( nFillCol > nEndCol )
+ {
+ eDir = FILL_TO_RIGHT;
+ nCount = nFillCol - nEndCol;
+ }
+ else if ( nFillCol < nStartCol )
+ {
+ eDir = FILL_TO_LEFT;
+ nCount = nStartCol - nFillCol;
+ }
+ }
+
+ if ( nCount )
+ {
+ pTabViewShell->FillAuto( eDir, nStartCol, nStartRow, nEndCol, nEndRow, nCount );
+
+ if( ! rReq.IsAPI() )
+ {
+ String aAdrStr;
+ ScAddress aAdr( nFillCol, nFillRow, 0 );
+ aAdr.Format( aAdrStr, SCR_ABS, GetViewData()->GetDocument() );
+
+ rReq.AppendItem( SfxStringItem( FID_FILL_AUTO, aAdrStr ) );
+ rReq.Done();
+ }
+ }
+
+ }
+ else
+ DBG_ERROR( "Richtung nicht eindeutig fuer AutoFill" );
+ }
+ }
+ break;
+
+ //
+ // Gliederung (Outlines)
+ // SID_AUTO_OUTLINE, SID_OUTLINE_DELETEALL in Execute (in docsh.idl)
+ //
+
+ case SID_OUTLINE_HIDE:
+ pTabViewShell->HideMarkedOutlines();
+ rReq.Done();
+ break;
+
+ case SID_OUTLINE_SHOW:
+ pTabViewShell->ShowMarkedOutlines();
+ rReq.Done();
+ break;
+
+ case SID_OUTLINE_MAKE:
+ {
+ BOOL bColumns;
+ BOOL bOk = TRUE;
+
+ if( pReqArgs != NULL )
+ {
+ const SfxPoolItem* pItem;
+ bOk = FALSE;
+
+ if( IS_AVAILABLE( SID_OUTLINE_MAKE, &pItem ) )
+ {
+ String aCol = ((const SfxStringItem*)pItem)->GetValue();
+ aCol.ToUpperAscii();
+
+ switch( aCol.GetChar(0) )
+ {
+ case 'R': bColumns=FALSE; bOk = TRUE;break;
+ case 'C': bColumns=TRUE; bOk = TRUE;break;
+ }
+ }
+ }
+ else // Dialog, wenn nicht ganze Zeilen/Spalten markiert
+ {
+ if ( GetViewData()->SimpleColMarked() && !GetViewData()->SimpleRowMarked() )
+ bColumns = TRUE;
+ else if ( !GetViewData()->SimpleColMarked() && GetViewData()->SimpleRowMarked() )
+ bColumns = FALSE;
+ else
+ {
+ ScGroupDlg* pDlg = new ScGroupDlg(pTabViewShell->GetDialogParent(),
+ RID_SCDLG_GRP_MAKE, FALSE );
+ if ( pDlg->Execute() == RET_OK )
+ bColumns = pDlg->GetColsChecked();
+ else
+ bOk = FALSE;
+ delete pDlg;
+ }
+ }
+ if (bOk)
+ {
+ pTabViewShell->MakeOutline( bColumns );
+
+ if( ! rReq.IsAPI() )
+ {
+ String aCol = bColumns ? 'C' : 'R';
+ rReq.AppendItem( SfxStringItem( SID_OUTLINE_MAKE, aCol ) );
+ rReq.Done();
+ }
+ }
+ }
+ break;
+
+ case SID_OUTLINE_REMOVE:
+ {
+ BOOL bColumns;
+ BOOL bOk = TRUE;
+
+ if( pReqArgs != NULL )
+ {
+ const SfxPoolItem* pItem;
+ bOk = FALSE;
+
+ if( IS_AVAILABLE( SID_OUTLINE_REMOVE, &pItem ) )
+ {
+ String aCol = ((const SfxStringItem*)pItem)->GetValue();
+ aCol.ToUpperAscii();
+
+ switch( aCol.GetChar(0) )
+ {
+ case 'R': bColumns=FALSE; bOk = TRUE;break;
+ case 'C': bColumns=TRUE; bOk = TRUE;break;
+ }
+ }
+ }
+ else // Dialog nur, wenn Aufheben fuer Zeilen und Spalten moeglich
+ {
+ BOOL bColPoss, bRowPoss;
+ pTabViewShell->TestRemoveOutline( bColPoss, bRowPoss );
+ if ( bColPoss && bRowPoss )
+ {
+ ScGroupDlg* pDlg = new ScGroupDlg( pTabViewShell->GetDialogParent(),
+ RID_SCDLG_GRP_KILL, TRUE );
+ if ( pDlg->Execute() == RET_OK )
+ bColumns = pDlg->GetColsChecked();
+ else
+ bOk = FALSE;
+ delete pDlg;
+ }
+ else if ( bColPoss )
+ bColumns = TRUE;
+ else if ( bRowPoss )
+ bColumns = FALSE;
+ else
+ bOk = FALSE;
+ }
+ if (bOk)
+ {
+ pTabViewShell->RemoveOutline( bColumns );
+
+ if( ! rReq.IsAPI() )
+ {
+ String aCol = bColumns ? 'C' : 'R';
+ rReq.AppendItem( SfxStringItem( SID_OUTLINE_REMOVE, aCol ) );
+ rReq.Done();
+ }
+ }
+ }
+ break;
+
+ //
+ // Clipboard
+ //
+
+ case SID_COPY: // fuer Grafiken in DrawShell
+ {
+ WaitObject aWait( GetViewData()->GetDialogParent() );
+ pTabViewShell->CopyToClip();
+ rReq.Done();
+ }
+ break;
+
+ case SID_CUT: // fuer Grafiken in DrawShell
+ {
+ WaitObject aWait( GetViewData()->GetDialogParent() );
+ pTabViewShell->CutToClip();
+ rReq.Done();
+ }
+ break;
+
+ case SID_PASTE:
+ {
+ WaitObject aWait( GetViewData()->GetDialogParent() );
+ pTabViewShell->PasteFromSystem();
+ rReq.Done();
+ }
+ pTabViewShell->CellContentChanged(); // => PasteFromSystem() ???
+ break;
+
+ case FID_INS_CELL_CONTENTS:
+ {
+ USHORT nFlags = IDF_NONE;
+ USHORT nFunction = PASTE_NOFUNC;
+ BOOL bSkipEmpty = FALSE;
+ BOOL bTranspose = FALSE;
+ BOOL bAsLink = FALSE;
+ InsCellCmd eMoveMode = INS_NONE;
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ BOOL bOtherDoc = !pDoc->IsClipboardSource();
+
+ if ( pReqArgs!=NULL && pTabViewShell->SelectionEditable() )
+ {
+ const SfxPoolItem* pItem;
+ String aFlags = 'A';
+
+ if( IS_AVAILABLE( FID_INS_CELL_CONTENTS, &pItem ) )
+ aFlags = ((const SfxStringItem*)pItem)->GetValue();
+
+ aFlags.ToUpperAscii();
+ BOOL bCont = TRUE;
+
+ for( xub_StrLen i=0 ; bCont && i<aFlags.Len() ; i++ )
+ {
+ switch( aFlags.GetChar(i) )
+ {
+ case 'A': // Alle
+ nFlags |= IDF_ALL;
+ bCont = FALSE; // nicht mehr weitermachen!
+ break;
+ case 'S': nFlags |= IDF_STRING; break;
+ case 'V': nFlags |= IDF_VALUE; break;
+ case 'D': nFlags |= IDF_DATETIME; break;
+ case 'F': nFlags |= IDF_FORMULA; break;
+ case 'N': nFlags |= IDF_NOTE; break;
+ case 'T': nFlags |= IDF_ATTRIB; break;
+ }
+ }
+ }
+ else
+ {
+ if (pTabViewShell->SelectionEditable())
+ {
+ ScInsertContentsDlg* pDlg = new ScInsertContentsDlg( pTabViewShell->GetDialogParent() );
+ pDlg->SetOtherDoc( bOtherDoc );
+ // #53661# bei ChangeTrack MoveMode disablen
+ pDlg->SetChangeTrack( pDoc->GetChangeTrack() != NULL );
+ // #72930# cut/move references may disable shift
+ // directions if source and destination ranges intersect
+ if ( !bOtherDoc )
+ {
+ ScDocument* pClipDoc = ScGlobal::GetClipDoc();
+ if ( pClipDoc->IsCutMode() )
+ {
+ ScViewData* pViewData = GetViewData();
+ if ( pViewData->GetMarkData().GetTableSelect(
+ pViewData->GetTabNo() ) )
+ {
+ USHORT nPosX = pViewData->GetCurX();
+ USHORT nPosY = pViewData->GetCurY();
+ USHORT nClipStartX, nClipStartY, nClipSizeX, nClipSizeY;
+ pClipDoc->GetClipStart( nClipStartX, nClipStartY );
+ pClipDoc->GetClipArea( nClipSizeX, nClipSizeY );
+ int nDisableShift = 0;
+ if ( nClipStartX <= nPosX + nClipSizeX &&
+ nPosX <= nClipStartX + nClipSizeX )
+ nDisableShift |= SC_CELL_SHIFT_DISABLE_DOWN;
+ if ( nClipStartY <= nPosY + nClipSizeY &&
+ nPosY <= nClipStartY + nClipSizeY )
+ nDisableShift |= SC_CELL_SHIFT_DISABLE_RIGHT;
+ if ( nDisableShift )
+ pDlg->SetCellShiftDisabled( nDisableShift );
+ }
+ }
+ }
+ if (pDlg->Execute() == RET_OK)
+ {
+ nFlags = pDlg->GetInsContentsCmdBits();
+ nFunction = pDlg->GetFormulaCmdBits();
+ bSkipEmpty = pDlg->IsSkipEmptyCells();
+ bTranspose = pDlg->IsTranspose();
+ bAsLink = pDlg->IsLink();
+ eMoveMode = pDlg->GetMoveMode();
+ }
+ delete pDlg;
+ }
+ else
+ pTabViewShell->ErrorMessage(STR_PROTECTIONERR);
+ }
+
+ if( nFlags != IDF_NONE )
+ {
+ {
+ WaitObject aWait( GetViewData()->GetDialogParent() );
+ if ( bAsLink && bOtherDoc )
+ pTabViewShell->PasteFromSystem(SOT_FORMATSTR_ID_LINK); // DDE einfuegen
+ else
+ pTabViewShell->PasteFromClip( nFlags, NULL,
+ nFunction, bSkipEmpty, bTranspose, bAsLink,
+ eMoveMode );
+ }
+
+ if( ! rReq.IsAPI() )
+ {
+ String aFlags;
+
+ if( nFlags == IDF_ALL )
+ {
+ aFlags += 'A';
+ }
+ else
+ {
+ if( nFlags & IDF_STRING ) aFlags += 'S';
+ if( nFlags & IDF_VALUE ) aFlags += 'V';
+ if( nFlags & IDF_DATETIME ) aFlags += 'D';
+ if( nFlags & IDF_FORMULA ) aFlags += 'F';
+ if( nFlags & IDF_NOTE ) aFlags += 'N';
+ if( nFlags & IDF_ATTRIB ) aFlags += 'T';
+ }
+
+ rReq.AppendItem( SfxStringItem( FID_INS_CELL_CONTENTS, aFlags ) );
+ rReq.Done();
+ }
+ }
+ }
+ pTabViewShell->CellContentChanged(); // => PasteFromXXX ???
+ break;
+
+ case FID_PASTE_CONTENTS:
+ // Unterscheidung, ob eigene oder fremde Daten,
+ // dadurch FID_INS_CELL_CONTENTS ueberfluessig
+ {
+ // Clipboard-ID als Parameter angegeben? Basic "PasteSpecial(Format)"
+ const SfxPoolItem* pItem;
+ if ( pReqArgs &&
+ pReqArgs->GetItemState(nSlot, TRUE, &pItem) == SFX_ITEM_SET &&
+ pItem->ISA(SfxUInt32Item) )
+ {
+ ULONG nFormat = ((const SfxUInt32Item*)pItem)->GetValue();
+ BOOL bRet;
+ {
+ WaitObject aWait( GetViewData()->GetDialogParent() );
+ bRet = pTabViewShell->PasteFromSystem(nFormat, TRUE); // TRUE: keine Fehlermeldungen
+ }
+ rReq.SetReturnValue(SfxInt16Item(nSlot, bRet)); // 1 = Erfolg, 0 = Fehler
+ rReq.Done();
+ }
+ else if ( ScGlobal::IsClipCaptured() ) // eigene Tabellen-Daten
+ {
+ rReq.SetSlot( FID_INS_CELL_CONTENTS );
+ ExecuteSlot( rReq, GetInterface() );
+ rReq.SetReturnValue(SfxInt16Item(nSlot, 1)); // 1 = Erfolg
+ }
+ else // Zeichenobjekte oder fremde Daten
+ {
+ BOOL bDraw = ScGlobal::IsClipDraw();
+
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (pClipObj.Is())
+ {
+ SvPasteObjectDialog* pDlg = new SvPasteObjectDialog;
+ // nOle ist special, stellvertretend fuer alle vier ?!?
+ ULONG nOle = SOT_FORMATSTR_ID_EMBED_SOURCE;
+ ULONG nSdr = SOT_FORMATSTR_ID_DRAWING;
+ pDlg->Insert( nSdr, Clipboard::GetFormatName( nSdr ) );
+ pDlg->Insert( SOT_FORMATSTR_ID_SVXB,Clipboard::GetFormatName( SOT_FORMATSTR_ID_SVXB ) );
+ pDlg->Insert( FORMAT_GDIMETAFILE, Clipboard::GetFormatName( FORMAT_GDIMETAFILE ) );
+ pDlg->Insert( FORMAT_BITMAP, Clipboard::GetFormatName( FORMAT_BITMAP ) );
+ pDlg->Insert( nOle, String('*') );
+ if (!bDraw)
+ {
+ ULONG nBiff = Exchange::RegisterFormatName(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Biff5")));
+ pDlg->Insert( SOT_FORMATSTR_ID_LINK,ScResId( SCSTR_CLIP_DDE ) );
+ pDlg->Insert( FORMAT_STRING, ScResId( SCSTR_CLIP_STRING ) );
+ pDlg->Insert( SOT_FORMATSTR_ID_DIF, ScResId( SCSTR_CLIP_DIF ) );
+ pDlg->Insert( FORMAT_RTF, ScResId( SCSTR_CLIP_RTF ) );
+ pDlg->Insert( SOT_FORMATSTR_ID_HTML,Clipboard::GetFormatName( SOT_FORMATSTR_ID_HTML ) );
+ pDlg->Insert( SOT_FORMATSTR_ID_HTML_SIMPLE,Clipboard::GetFormatName( SOT_FORMATSTR_ID_HTML_SIMPLE ) );
+ pDlg->Insert( nBiff, Clipboard::GetFormatName( nBiff ) );
+ }
+
+ ULONG nFormat = pDlg->Execute( pTabViewShell->GetDialogParent(), pClipObj );
+ if (nFormat > 0)
+ {
+ {
+ WaitObject aWait( GetViewData()->GetDialogParent() );
+ if ( bDraw && nFormat == nOle )
+ pTabViewShell->PasteDraw();
+ else
+ pTabViewShell->PasteFromSystem(nFormat);
+ }
+ rReq.SetReturnValue(SfxInt16Item(nSlot, 1)); // 1 = Erfolg
+ rReq.Done();
+ }
+ else
+ rReq.SetReturnValue(SfxInt16Item(nSlot, 0)); // 0 = Fehler
+ delete pDlg;
+ }
+ else
+ rReq.SetReturnValue(SfxInt16Item(nSlot, 0)); // 0 = Fehler
+ }
+ }
+ pTabViewShell->CellContentChanged(); // => PasteFromSystem() ???
+ break;
+
+ // Clipboard-Abfrage-Slots wie im Writer (da auch an der Selection)
+
+ case SID_GET_CLPBRD_FORMAT_COUNT:
+ rReq.SetReturnValue( SfxUInt16Item( nSlot, Clipboard::GetFormatCount() ) );
+ break;
+
+ case SID_GET_CLPBRD_FORMAT_BY_IDX:
+ if (pReqArgs)
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs->GetItemState(nSlot, TRUE, &pItem) == SFX_ITEM_SET &&
+ pItem->ISA(SfxUInt16Item) )
+ {
+ USHORT nCount = Clipboard::GetFormatCount();
+ USHORT nPos = ((const SfxUInt16Item*)pItem)->GetValue(); // 1-based
+ if ( nPos && nPos <= nCount )
+ rReq.SetReturnValue( SfxUInt32Item( nSlot, Clipboard::GetFormat(--nPos) ) );
+ }
+ }
+ break;
+
+ case SID_GET_CLPBRD_FORMAT_NAME:
+ if (pReqArgs)
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs->GetItemState(nSlot, TRUE, &pItem) == SFX_ITEM_SET &&
+ pItem->ISA(SfxUInt32Item) )
+ {
+ String aName = Exchange::GetFormatName(
+ ((const SfxUInt32Item*)pItem)->GetValue() );
+ rReq.SetReturnValue( SfxStringItem( nSlot, aName ) );
+ }
+ }
+ break;
+
+ //
+ // sonstiges
+ //
+
+ case FID_INS_ROWBRK:
+ pTabViewShell->InsertPageBreak( FALSE );
+ rReq.Done();
+ break;
+
+ case FID_INS_COLBRK:
+ pTabViewShell->InsertPageBreak( TRUE );
+ rReq.Done();
+ break;
+
+ case FID_DEL_ROWBRK:
+ pTabViewShell->DeletePageBreak( FALSE );
+ rReq.Done();
+ break;
+
+ case FID_DEL_COLBRK:
+ pTabViewShell->DeletePageBreak( TRUE );
+ rReq.Done();
+ break;
+
+ case SID_DETECTIVE_ADD_PRED:
+ pTabViewShell->DetectiveAddPred();
+ rReq.Done();
+ break;
+
+ case SID_DETECTIVE_DEL_PRED:
+ pTabViewShell->DetectiveDelPred();
+ rReq.Done();
+ break;
+
+ case SID_DETECTIVE_ADD_SUCC:
+ pTabViewShell->DetectiveAddSucc();
+ rReq.Done();
+ break;
+
+ case SID_DETECTIVE_DEL_SUCC:
+ pTabViewShell->DetectiveDelSucc();
+ rReq.Done();
+ break;
+
+ case SID_DETECTIVE_ADD_ERR:
+ pTabViewShell->DetectiveAddError();
+ rReq.Done();
+ break;
+
+ case SID_DETECTIVE_INVALID:
+ pTabViewShell->DetectiveMarkInvalid();
+ rReq.Done();
+ break;
+
+ case SID_DETECTIVE_REFRESH:
+ pTabViewShell->DetectiveRefresh();
+ rReq.Done();
+ break;
+
+ case SID_SPELLING:
+ pTabViewShell->DoSpellingChecker();
+ break;
+
+ case SID_THESAURUS:
+ pTabViewShell->DoThesaurus();
+ break;
+
+ case SID_TOGGLE_REL:
+ {
+ BOOL bOk = FALSE;
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ CellType eType;
+ pDoc->GetCellType( nCol, nRow, nTab, eType );
+ if (eType == CELLTYPE_FORMULA)
+ {
+ String aOld;
+ pDoc->GetFormula( nCol, nRow, nTab, aOld );
+ xub_StrLen nLen = aOld.Len();
+ ScRefFinder aFinder( aOld, pDoc );
+ aFinder.ToggleRel( 0, nLen );
+ if (aFinder.GetFound())
+ {
+ String aNew = aFinder.GetText();
+ pTabViewShell->EnterData( nCol, nRow, nTab, aNew );
+ pTabViewShell->UpdateInputHandler();
+ bOk = TRUE;
+ }
+ }
+ if (!bOk)
+ pTabViewShell->ErrorMessage(STR_ERR_NOREF);
+ }
+ break;
+
+ case SID_DEC_INDENT:
+ pTabViewShell->ChangeIndent( FALSE );
+ break;
+ case SID_INC_INDENT:
+ pTabViewShell->ChangeIndent( TRUE );
+ break;
+
+ case FID_USE_NAME:
+ {
+ USHORT nFlags = pTabViewShell->GetCreateNameFlags();
+
+ ScNameCreateDlg* pDlg = new ScNameCreateDlg( pTabViewShell->GetDialogParent(), nFlags );
+
+ if( pDlg->Execute() )
+ {
+ nFlags = pDlg->GetFlags();
+ pTabViewShell->CreateNames(nFlags);
+ rReq.Done();
+ }
+ delete pDlg;
+ }
+ break;
+
+ case SID_CONSOLIDATE:
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && SFX_ITEM_SET ==
+ pReqArgs->GetItemState( SCITEM_CONSOLIDATEDATA, TRUE, &pItem ) )
+ {
+ const ScConsolidateParam& rParam =
+ ((const ScConsolidateItem*)pItem)->GetData();
+
+ pTabViewShell->Consolidate( rParam );
+ GetViewData()->GetDocument()->SetConsolidateDlgData( &rParam );
+
+ rReq.Done();
+ }
+ else if (rReq.IsAPI())
+ SbxBase::SetError(SbxERR_BAD_PARAMETER);
+ }
+ break;
+
+ case SID_INS_FUNCTION:
+ {
+ const SfxBoolItem* pOkItem = (const SfxBoolItem*)&pReqArgs->Get( SID_DLG_RETOK );
+
+// pScMod->SetFunctionDlg( NULL );
+
+ if ( pOkItem->GetValue() ) // OK
+ {
+ String aFormula;
+ const SfxStringItem* pSItem = (const SfxStringItem*)&pReqArgs->Get( SCITEM_STRING );
+ const SfxBoolItem* pMatrixItem = (const SfxBoolItem*) &pReqArgs->Get( SID_DLG_MATRIX );
+
+ aFormula += pSItem->GetValue();
+ pScMod->ActivateInputWindow( &aFormula, pMatrixItem->GetValue() );
+ }
+ else // CANCEL
+ {
+ pScMod->ActivateInputWindow( NULL );
+ }
+ rReq.Done();
+ }
+ break;
+
+ case FID_DEFINE_NAME:
+ if ( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ String aName, aSymbol, aAttrib;
+
+ if( IS_AVAILABLE( FID_DEFINE_NAME, &pItem ) )
+ aName = ((const SfxStringItem*)pItem)->GetValue();
+
+ if( IS_AVAILABLE( FN_PARAM_1, &pItem ) )
+ aSymbol = ((const SfxStringItem*)pItem)->GetValue();
+
+ if( IS_AVAILABLE( FN_PARAM_2, &pItem ) )
+ aAttrib = ((const SfxStringItem*)pItem)->GetValue();
+
+ if ( aName.Len() && aSymbol.Len() )
+ {
+ if (pTabViewShell->InsertName( aName, aSymbol, aAttrib ))
+ rReq.Done();
+ else
+ SbxBase::SetError( SbxERR_BAD_PARAMETER ); // Basic-Fehler
+ }
+ }
+ else
+ {
+ USHORT nId = ScNameDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ break;
+
+ case SID_DEFINE_COLROWNAMERANGES:
+ {
+
+ USHORT nId = ScColRowNameRangesDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+
+ }
+ break;
+
+ case SID_UPDATECHART:
+ {
+ BOOL bAll = FALSE;
+
+ if( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+
+ if( IS_AVAILABLE( SID_UPDATECHART, &pItem ) )
+ bAll = ((const SfxBoolItem*)pItem)->GetValue();
+ }
+
+ pTabViewShell->UpdateCharts( bAll );
+
+ if( ! rReq.IsAPI() )
+ {
+ rReq.AppendItem( SfxBoolItem( SID_UPDATECHART, bAll ) );
+ rReq.Done();
+ }
+ }
+ break;
+
+
+ case SID_TABOP:
+ {
+ const SfxItemSet* pOutSet = rReq.GetArgs();
+ const ScTabOpItem& rItem =
+ (const ScTabOpItem&)
+ pOutSet->Get( SID_TABOP );
+
+ pTabViewShell->TabOp( rItem.GetData() );
+
+ rReq.Done( *pOutSet );
+ }
+ break;
+
+ case SID_SOLVE:
+ {
+ const SfxItemSet* pOutSet = rReq.GetArgs();
+ const ScSolveItem& rItem =
+ (const ScSolveItem&)
+ pOutSet->Get( SCITEM_SOLVEDATA );
+
+ pTabViewShell->Solve( rItem.GetData() );
+
+ rReq.Done( *pOutSet );
+ }
+ break;
+
+ case FID_INSERT_NAME:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScNamePasteDlg* pDlg = new ScNamePasteDlg( pTabViewShell->GetDialogParent(), pDoc->GetRangeName() );
+
+ switch( pDlg->Execute() )
+ {
+ case BTN_PASTE_LIST:
+ pTabViewShell->InsertNameList();
+ break;
+ case BTN_PASTE_NAME:
+ {
+ ScInputHandler* pHdl = pScMod->GetInputHdl( pTabViewShell );
+ if (pHdl)
+ {
+ // das "=" per Key-Event, schaltet in den Eingabe-Modus
+ pScMod->InputKeyEvent( KeyEvent('=',KeyCode()) );
+
+ String aName = pDlg->GetSelectedName();
+ pHdl->InsertFunction( aName, FALSE ); // ohne "()"
+ }
+ }
+ break;
+ }
+ delete pDlg;
+ }
+ break;
+
+ case SID_RANGE_NOTETEXT:
+ if (pReqArgs)
+ {
+ String aNoteStr = ((const SfxStringItem&)pReqArgs->
+ Get( SID_RANGE_NOTETEXT )).GetValue();
+ String aDateStr = ScGlobal::pScInternational->GetDate( Date() );
+ String aAuthorStr = SFX_INIMANAGER()->Get(SFX_KEY_USER_ID);
+ ScPostIt aNote( aNoteStr, aDateStr, aAuthorStr );
+
+ USHORT nCol, nRow, nTab;
+
+ // #43343# immer Cursorposition
+ nCol = GetViewData()->GetCurX();
+ nRow = GetViewData()->GetCurY();
+ nTab = GetViewData()->GetTabNo();
+
+ pTabViewShell->SetNote( nCol, nRow, nTab, aNote );
+ rReq.Done();
+ }
+ break;
+
+ case SID_INSERT_POSTIT:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScPostIt aNote;
+
+ if ( pReqArgs )
+ {
+ const SvxPostItAuthorItem& rAuthorItem = (const SvxPostItAuthorItem&)pReqArgs->Get( SID_ATTR_POSTIT_AUTHOR );
+ const SvxPostItDateItem& rDateItem = (const SvxPostItDateItem&) pReqArgs->Get( SID_ATTR_POSTIT_DATE );
+ const SvxPostItTextItem& rTextItem = (const SvxPostItTextItem&) pReqArgs->Get( SID_ATTR_POSTIT_TEXT );
+ aNote.SetText( rTextItem.GetValue() );
+ aNote.SetDate( rDateItem.GetValue() );
+ aNote.SetAuthor( rAuthorItem.GetValue() );
+
+ pTabViewShell->SetNote( nCol, nRow, nTab, aNote );
+ rReq.Done();
+ }
+ else
+ {
+ pTabViewShell->EditNote(); // Zeichenobjekt zum Editieren
+ }
+ }
+ break;
+
+ case FID_NOTE_VISIBLE:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScPostIt aNote;
+
+ if ( pDoc->GetNote( nCol, nRow, nTab, aNote ) )
+ {
+ BOOL bShow;
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && pReqArgs->GetItemState(
+ FID_NOTE_VISIBLE, TRUE, &pItem ) == SFX_ITEM_SET )
+ bShow = ((const SfxBoolItem*) pItem)->GetValue();
+ else
+ bShow = !pDoc->HasNoteObject( nCol, nRow, nTab );
+
+ if ( bShow )
+ pTabViewShell->ShowNote();
+ else
+ pTabViewShell->HideNote();
+
+ if (!pReqArgs)
+ rReq.AppendItem( SfxBoolItem( FID_NOTE_VISIBLE, bShow ) );
+
+ rReq.Done();
+ rBindings.Invalidate( FID_NOTE_VISIBLE );
+ }
+ else
+ rReq.Ignore();
+ }
+ break;
+
+ case SID_CHARMAP:
+ if( pReqArgs != NULL )
+ {
+ const SvxFontItem& rFontItem = (const SvxFontItem&) rReq.GetArgs()->Get(SID_CHARMAP);
+ const SfxStringItem& rStringItem = (const SfxStringItem&) rReq.GetArgs()->Get(SID_ATTR_SECIALCHAR);
+ Font aFont;
+
+ aFont.SetName( rFontItem.GetFamilyName() );
+ aFont.SetStyleName( rFontItem.GetStyleName() );
+ aFont.SetFamily( rFontItem.GetFamily() );
+ aFont.SetPitch( rFontItem.GetPitch() );
+ aFont.SetCharSet( rFontItem.GetCharSet() );
+
+ pTabViewShell->InsertSpecialChar( rStringItem.GetValue(), aFont );
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ else
+ {
+ SvxCharacterMap* pDlg = new SvxCharacterMap( pTabViewShell->GetDialogParent(), FALSE );
+ Font aCurFont;
+
+ pTabViewShell->GetSelectionPattern()->GetFont( aCurFont );
+ pDlg->SetCharFont( aCurFont );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ Font aNewFont( pDlg->GetCharFont() );
+
+ pTabViewShell->InsertSpecialChar( pDlg->GetCharacters(), aNewFont );
+
+ SfxStringItem aStringItem( SID_ATTR_SECIALCHAR,
+ pDlg->GetCharacters() );
+ SvxFontItem aFontItem( aNewFont.GetFamily(),
+ aNewFont.GetName(),
+ aNewFont.GetStyleName(),
+ aNewFont.GetPitch(),
+ aNewFont.GetCharSet(),
+ SID_CHARMAP );
+
+ rReq.AppendItem( aFontItem );
+ rReq.AppendItem( aStringItem );
+ rReq.Done();
+ }
+ delete pDlg;
+ }
+ break;
+
+ case SID_SELECT_SCENARIO:
+ {
+ // Testing
+
+ if ( pReqArgs )
+ {
+ const SfxStringItem* pItem =
+ (const SfxStringItem*)&pReqArgs->Get( SID_SELECT_SCENARIO );
+
+ if( pItem )
+ {
+ pTabViewShell->UseScenario( pItem->GetValue() );
+ //! wofuer soll der Return-Wert gut sein?!?!
+ rReq.SetReturnValue( SfxStringItem( SID_SELECT_SCENARIO, pItem->GetValue() ) );
+ rReq.Done();
+ }
+ else
+ DBG_ERROR("NULL");
+ }
+ }
+ break;
+
+ case SID_HYPERLINK_SETLINK:
+ if( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ if( IS_AVAILABLE( SID_HYPERLINK_SETLINK, &pItem ) )
+ {
+ const SvxHyperlinkItem* pHyper = (const SvxHyperlinkItem*) pItem;
+ const String& rName = pHyper->GetName();
+ const String& rURL = pHyper->GetURL();
+ const String& rTarget = pHyper->GetTargetFrame();
+ USHORT nType = (USHORT) pHyper->GetInsertMode();
+
+ pTabViewShell->InsertURL( rName, rURL, rTarget, nType );
+ }
+ }
+ break;
+
+ case FID_CONDITIONAL_FORMAT:
+ if( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ if( IS_AVAILABLE( FID_CONDITIONAL_FORMAT, &pItem ) )
+ {
+ // Wenn RefInput auf andere Tabelle als Datentabelle umgeschaltet
+ // hat wieder zurueckschalten:
+ if ( GetViewData()->GetTabNo() != GetViewData()->GetRefTabNo() )
+ {
+ pTabViewShell->SetTabNo( GetViewData()->GetRefTabNo() );
+ pTabViewShell->PaintExtras();
+ }
+
+ const ScCondFrmtItem* pCndFmtItem = (const ScCondFrmtItem*) pItem;
+ pTabViewShell->SetConditionalFormat( pCndFmtItem->GetData() );
+ rReq.Done();
+ }
+ }
+ break;
+
+ //
+ //
+ //
+
+ default:
+ DBG_ERROR("falscher Slot bei ExecuteEdit");
+ break;
+ }
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
new file mode 100644
index 000000000000..7156dd6e8c1f
--- /dev/null
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -0,0 +1,1234 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellsh2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#define _BIGINT_HXX
+//#define _BASEDLGS_HXX ***
+#define _CACHESTR_HXX
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+//#define _FILTER_HXX
+#define _FONTDLG_HXX
+#define _MACRODLG_HXX
+#define _MODALDLG_HXX
+#define _MOREBUTTON_HXX
+#define _OUTLINER_HXX
+#define _PASSWD_HXX
+//#define _PRNDLG_HXX
+#define _POLY_HXX
+#define _PRVWIN_HXX
+#define _QUEUE_HXX
+//#define _RULER_HXX
+#define _SCRWIN_HXX
+#define _SOUND_HXX
+#define _STACK_HXX
+//#define _STATUS_HXX ***
+#define _STDMENU_HXX
+#define _TABBAR_HXX
+//#define _TREELIST_HXX
+#define _SFXBASIC_HXX
+#define _SFX_DOCFILE_HXX
+//#define _SFX_DOCFILT_HXX
+#define _SFX_DOCINF_HXX
+#define _SFX_DOCSH_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXIPFRM_HXX
+#define _SFX_MACRO_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXMULTISEL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXTBXCTRL_HXX
+
+#define _SI_DLL_HXX
+#define _SIDLL_HXX
+#define _SI_NOITEMS
+#define _SI_NOOTHERFORMS
+#define _SI_NOSBXCONTROLS
+#define _SINOSBXCONTROLS
+#define _SI_NODRW //
+#define _SI_NOCONTROL
+
+#define _SVBOXITM_HXX
+//#define _SVCONTNR_HXX
+#define _SVDATTR_HXX
+#define _SVDXOUT_HXX
+#define _SVDEC_HXX
+#define _SVDIO_HXX
+#define _SVDLAYER_HXX
+#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+#define _SVTABBX_HXX
+
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/request.hxx>
+#include <svtools/aeitem.hxx>
+#include <svtools/sbxcore.hxx>
+#include <svtools/whiter.hxx>
+#include <svtools/zforlist.hxx>
+#include <offmgr/sbaitems.hxx>
+#include <offmgr/sbasltid.hrc>
+#include <vcl/msgbox.hxx>
+
+#include "cellsh.hxx"
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "scmod.hxx"
+#include "docsh.hxx"
+#include "document.hxx"
+#include "uiitems.hxx"
+#include "dbfunc.hxx"
+#include "dbdocfun.hxx"
+#include "lbseldlg.hxx"
+#include "sortdlg.hxx"
+#include "filtdlg.hxx"
+#include "dbnamdlg.hxx"
+#include "subtdlg.hxx"
+#include "reffact.hxx"
+#include "pvlaydlg.hxx"
+#include "validat.hxx"
+#include "scresid.hxx"
+#include "validate.hxx"
+#include "pivot.hxx"
+#include "dpobject.hxx"
+#include "dapitype.hxx"
+#include "dapidata.hxx"
+#include "dpsdbtab.hxx" // ScImportSourceDesc
+#include "dpshttab.hxx" // ScSheetSourceDesc
+
+using namespace com::sun::star;
+
+//#include "strindlg.hxx" //! Test !!!!!
+
+//static ScArea aPivotSource; //! wohin? (ueber den Dialog retten)
+
+
+#define IS_AVAILABLE(WhichId,ppItem) \
+ (pReqArgs->GetItemState((WhichId), TRUE, ppItem ) == SFX_ITEM_SET)
+
+//------------------------------------------------------------------
+
+void ScCellShell::ExecuteDB( SfxRequest& rReq )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ USHORT nSlotId = rReq.GetSlot();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ SfxApplication* pSfxApp = SFX_APP();
+ ScModule* pScMod = SC_MOD();
+
+ pTabViewShell->HideListBox(); // Autofilter-DropDown-Listbox
+
+ switch ( nSlotId )
+ {
+ case SID_IMPORT_DATA:
+ {
+ //! was wird mit dem Adressbuch?
+#if 0
+ if( pScApp->GetSbaObject()->IsAddrPIOpen() )
+ {
+ SFX_DISPATCHER().Execute( SID_SBA_ADDRPI,
+ SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD );
+ }
+#endif
+
+ if( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ if( IS_AVAILABLE( SID_IMPORT_DATA, &pItem ) )
+ {
+ String aDBName, aSQLCommand;
+
+ aDBName = ((const SfxStringItem*)pItem)->GetValue();
+
+ if( IS_AVAILABLE( FN_PARAM_1, &pItem ) )
+ aSQLCommand = ((const SfxStringItem*)pItem)->GetValue();
+
+
+ ScImportParam aImportParam;
+ ScDBData* pDBData = pTabViewShell->GetDBData(TRUE,SC_DB_IMPORT); // Namen vergeben
+ pDBData->GetImportParam( aImportParam );
+ aImportParam.aDBName = aDBName;
+ aImportParam.aStatement = aSQLCommand;
+ aImportParam.bSql = TRUE; // kein Name, sondern Sql
+ aImportParam.bImport = TRUE;
+
+ pTabViewShell->ImportData( aImportParam );
+ pDBData->SetImportParam( aImportParam );
+
+ rReq.Done();
+ }
+ else
+ {
+ rReq.Ignore();
+ }
+ }
+ else // DB-Browser anzeigen
+ {
+ ScImportParam aImportParam;
+ ScDBData* pDBData = pTabViewShell->GetDBData(TRUE,SC_DB_OLD); // nicht neu anlegen
+ if (pDBData)
+ pDBData->GetImportParam( aImportParam );
+
+ pTabViewShell->StartQuerySh( aImportParam );
+ }
+ }
+ break;
+
+ case SID_REIMPORT_DATA:
+ {
+ BOOL bOk = FALSE;
+ ScDBData* pDBData = pTabViewShell->GetDBData(TRUE,SC_DB_OLD);
+ if (pDBData)
+ {
+ ScImportParam aImportParam;
+ pDBData->GetImportParam( aImportParam );
+ if (aImportParam.bImport && !pDBData->HasImportSelection())
+ {
+ pTabViewShell->ImportData( aImportParam );
+ pDBData->SetImportParam( aImportParam ); //! Undo ??
+ bOk = TRUE;
+ }
+ }
+
+ if (!bOk && ! rReq.IsAPI() )
+ pTabViewShell->ErrorMessage(STR_REIMPORT_EMPTY);
+
+ if( bOk )
+ rReq.Done();
+ }
+ break;
+
+ case SID_REFRESH_DBAREA:
+ {
+ ScDBData* pDBData = pTabViewShell->GetDBData(TRUE,SC_DB_OLD);
+ if (pDBData)
+ {
+ // Import wiederholen wie SID_REIMPORT_DATA
+
+ BOOL bContinue = TRUE;
+ ScImportParam aImportParam;
+ pDBData->GetImportParam( aImportParam );
+ if (aImportParam.bImport && !pDBData->HasImportSelection())
+ {
+ bContinue = pTabViewShell->ImportData( aImportParam );
+ pDBData->SetImportParam( aImportParam ); //! Undo ??
+
+ // markieren (Groesse kann sich geaendert haben)
+ ScRange aNewRange;
+ pDBData->GetArea(aNewRange);
+ pTabViewShell->MarkRange(aNewRange);
+ }
+
+ if ( bContinue ) // #41905# Fehler beim Import -> Abbruch
+ {
+ // interne Operationen, wenn welche gespeichert
+
+ if ( pDBData->HasQueryParam() || pDBData->HasSortParam() ||
+ pDBData->HasSubTotalParam() )
+ pTabViewShell->RepeatDB();
+
+ // Pivottabellen die den Bereich als Quelldaten haben
+
+ ScRange aRange;
+ pDBData->GetArea(aRange);
+ GetViewData()->GetDocShell()->RefreshPivotTables(aRange);
+ }
+ }
+ rReq.Done();
+ }
+ break;
+
+ case SID_SBA_BRW_INSERT:
+ {
+ if (pReqArgs)
+ {
+ const SfxStringItem &rDBNameItem = (const SfxStringItem&)
+ pReqArgs->Get(SID_ATTR_SBA_DATABASE);
+ const SfxStringItem &rStatementItem = (const SfxStringItem&)
+ pReqArgs->Get(SID_ATTR_SBA_STATEMENT);
+ const SbaSelectionItem &rSelectionItem = (const SbaSelectionItem&)
+ pReqArgs->Get(SID_ATTR_SBA_SELECTION);
+
+ DBG_ASSERT( rDBNameItem.ISA(SfxStringItem), "invalid argument type" );
+ DBG_ASSERT( rStatementItem.ISA(SfxStringItem), "invalid argument type" );
+ DBG_ASSERT( rSelectionItem.ISA(SbaSelectionItem), "invalid argument type" );
+
+ ScViewData* pViewData = GetViewData();
+ ScImportParam aImParam;
+ aImParam.nCol1 = aImParam.nCol2 = pViewData->GetCurX();
+ aImParam.nRow1 = aImParam.nRow2 = pViewData->GetCurY();
+ aImParam.bImport = TRUE;
+ aImParam.aDBName = rDBNameItem.GetValue();
+ aImParam.aStatement = rStatementItem.GetValue();
+
+ ScDBDocFunc( *pViewData->GetDocShell() ).
+ DoImport( pViewData->GetTabNo(), aImParam,
+ rSelectionItem.GetSelectionList(), TRUE, TRUE );
+ rReq.Done();
+ }
+ else
+ DBG_ERROR( "arguments expected" );
+ }
+ break;
+
+ case SID_SUBTOTALS:
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ if ( pArgs )
+ {
+ pTabViewShell->DoSubTotals( ((const ScSubTotalItem&) pArgs->Get( SCITEM_SUBTDATA )).
+ GetSubTotalData() );
+ rReq.Done();
+ }
+ else
+ {
+ ScSubTotalDlg* pDlg = NULL;
+ ScSubTotalParam aSubTotalParam;
+ SfxItemSet aArgSet( GetPool(), SCITEM_SUBTDATA, SCITEM_SUBTDATA );
+
+ ScDBData* pDBData = pTabViewShell->GetDBData();
+ pDBData->GetSubTotalParam( aSubTotalParam );
+ aSubTotalParam.bRemoveOnly = FALSE;
+
+ aArgSet.Put( ScSubTotalItem( SCITEM_SUBTDATA, GetViewData(), &aSubTotalParam ) );
+ pDlg = new ScSubTotalDlg( pTabViewShell->GetDialogParent(), &aArgSet );
+ pDlg->SetCurPageId(1);
+
+ short bResult = pDlg->Execute();
+
+ if ( (bResult == RET_OK) || (bResult == SCRET_REMOVE) )
+ {
+ const SfxItemSet* pOutSet = NULL;
+
+ if ( bResult == RET_OK )
+ {
+ pOutSet = pDlg->GetOutputItemSet();
+ aSubTotalParam =
+ ((const ScSubTotalItem&)
+ pOutSet->Get( SCITEM_SUBTDATA )).
+ GetSubTotalData();
+ }
+ else // if (bResult == SCRET_REMOVE)
+ {
+ pOutSet = &aArgSet;
+ aSubTotalParam.bRemoveOnly = TRUE;
+ aSubTotalParam.bReplace = TRUE;
+ aArgSet.Put( ScSubTotalItem( SCITEM_SUBTDATA,
+ GetViewData(),
+ &aSubTotalParam ) );
+ }
+
+ pTabViewShell->DoSubTotals( aSubTotalParam );
+ rReq.Done( *pOutSet );
+ }
+ delete pDlg;
+ }
+ }
+ break;
+
+ case SID_SORT_DESCENDING:
+ case SID_SORT_ASCENDING:
+ {
+ SfxItemSet aArgSet( GetPool(), SCITEM_SORTDATA, SCITEM_SORTDATA );
+ ScSortParam aSortParam;
+ ScDBData* pDBData = pTabViewShell->GetDBData();
+
+ pDBData->GetSortParam( aSortParam );
+ aSortParam.bHasHeader = FALSE;
+ aSortParam.bByRow = TRUE;
+ aSortParam.bCaseSens = FALSE;
+ aSortParam.bIncludePattern = FALSE;
+ aSortParam.bInplace = TRUE;
+ aSortParam.bDoSort[0] = TRUE;
+ aSortParam.nField[0] = aSortParam.nCol1;
+ aSortParam.bAscending[0] = (nSlotId == SID_SORT_ASCENDING);
+
+ for ( USHORT i=1; i<MAXSORT; i++ )
+ aSortParam.bDoSort[i] = FALSE;
+
+ aArgSet.Put( ScSortItem( SCITEM_SORTDATA, GetViewData(), &aSortParam ) );
+
+ pTabViewShell->UISort( aSortParam ); // Teilergebnisse bei Bedarf neu
+
+ rReq.Done( aArgSet );
+ }
+ break;
+
+ case SID_SORT:
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ if ( pArgs ) // Basic
+ {
+ ScSortParam aSortParam;
+ ScDBData* pDBData = pTabViewShell->GetDBData();
+ pDBData->GetSortParam( aSortParam );
+ aSortParam.bInplace = TRUE; // von Basic immer
+
+ const SfxPoolItem* pItem;
+ if ( pArgs->GetItemState( SID_SORT_BYROW, TRUE, &pItem ) == SFX_ITEM_SET )
+ aSortParam.bByRow = ((const SfxBoolItem*)pItem)->GetValue();
+ if ( pArgs->GetItemState( SID_SORT_HASHEADER, TRUE, &pItem ) == SFX_ITEM_SET )
+ aSortParam.bHasHeader = ((const SfxBoolItem*)pItem)->GetValue();
+ if ( pArgs->GetItemState( SID_SORT_CASESENS, TRUE, &pItem ) == SFX_ITEM_SET )
+ aSortParam.bCaseSens = ((const SfxBoolItem*)pItem)->GetValue();
+ if ( pArgs->GetItemState( SID_SORT_ATTRIBS, TRUE, &pItem ) == SFX_ITEM_SET )
+ aSortParam.bIncludePattern = ((const SfxBoolItem*)pItem)->GetValue();
+ if ( pArgs->GetItemState( SID_SORT_USERDEF, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ USHORT nUserIndex = ((const SfxUInt16Item*)pItem)->GetValue();
+ aSortParam.bUserDef = ( nUserIndex != 0 );
+ if ( nUserIndex )
+ aSortParam.nUserIndex = nUserIndex - 1; // Basic: 1-basiert
+ }
+
+ USHORT nField0 = 0;
+ if ( pArgs->GetItemState( FN_PARAM_1, TRUE, &pItem ) == SFX_ITEM_SET )
+ nField0 = ((const SfxUInt16Item*)pItem)->GetValue();
+ aSortParam.bDoSort[0] = ( nField0 != 0 );
+ aSortParam.nField[0] = nField0 ? (nField0-1) : 0;
+ if ( pArgs->GetItemState( FN_PARAM_2, TRUE, &pItem ) == SFX_ITEM_SET )
+ aSortParam.bAscending[0] = ((const SfxBoolItem*)pItem)->GetValue();
+ USHORT nField1 = 0;
+ if ( pArgs->GetItemState( FN_PARAM_3, TRUE, &pItem ) == SFX_ITEM_SET )
+ nField1 = ((const SfxUInt16Item*)pItem)->GetValue();
+ aSortParam.bDoSort[1] = ( nField1 != 0 );
+ aSortParam.nField[1] = nField1 ? (nField1-1) : 0;
+ if ( pArgs->GetItemState( FN_PARAM_4, TRUE, &pItem ) == SFX_ITEM_SET )
+ aSortParam.bAscending[1] = ((const SfxBoolItem*)pItem)->GetValue();
+ USHORT nField2 = 0;
+ if ( pArgs->GetItemState( FN_PARAM_5, TRUE, &pItem ) == SFX_ITEM_SET )
+ nField2 = ((const SfxUInt16Item*)pItem)->GetValue();
+ aSortParam.bDoSort[2] = ( nField2 != 0 );
+ aSortParam.nField[2] = nField2 ? (nField2-1) : 0;
+ if ( pArgs->GetItemState( FN_PARAM_6, TRUE, &pItem ) == SFX_ITEM_SET )
+ aSortParam.bAscending[2] = ((const SfxBoolItem*)pItem)->GetValue();
+
+ // Teilergebnisse bei Bedarf neu
+ pTabViewShell->UISort( aSortParam );
+ rReq.Done();
+ }
+ else
+ {
+ ScSortDlg* pDlg = NULL;
+ ScSortParam aSortParam;
+ SfxItemSet aArgSet( GetPool(), SCITEM_SORTDATA, SCITEM_SORTDATA );
+
+ ScDBData* pDBData = pTabViewShell->GetDBData();
+ pDBData->GetSortParam( aSortParam );
+
+ aArgSet.Put( ScSortItem( SCITEM_SORTDATA, GetViewData(), &aSortParam ) );
+ pDlg = new ScSortDlg( pTabViewShell->GetDialogParent(), &aArgSet );
+ pDlg->SetCurPageId(1);
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+ const ScSortParam& rOutParam = ((const ScSortItem&)
+ pOutSet->Get( SCITEM_SORTDATA )).GetSortData();
+
+ // Teilergebnisse bei Bedarf neu
+ pTabViewShell->UISort( rOutParam );
+
+ if ( rOutParam.bInplace )
+ {
+ rReq.AppendItem( SfxBoolItem( SID_SORT_BYROW,
+ rOutParam.bByRow ) );
+ rReq.AppendItem( SfxBoolItem( SID_SORT_HASHEADER,
+ rOutParam.bHasHeader ) );
+ rReq.AppendItem( SfxBoolItem( SID_SORT_CASESENS,
+ rOutParam.bCaseSens ) );
+ rReq.AppendItem( SfxBoolItem( SID_SORT_ATTRIBS,
+ rOutParam.bIncludePattern ) );
+ USHORT nUser = rOutParam.bUserDef ? ( rOutParam.nUserIndex + 1 ) : 0;
+ rReq.AppendItem( SfxUInt16Item( SID_SORT_USERDEF, nUser ) );
+ if ( rOutParam.bDoSort[0] )
+ {
+ rReq.AppendItem( SfxUInt16Item( FN_PARAM_1,
+ rOutParam.nField[0] + 1 ) );
+ rReq.AppendItem( SfxBoolItem( FN_PARAM_2,
+ rOutParam.bAscending[0] ) );
+ }
+ if ( rOutParam.bDoSort[1] )
+ {
+ rReq.AppendItem( SfxUInt16Item( FN_PARAM_3,
+ rOutParam.nField[1] + 1 ) );
+ rReq.AppendItem( SfxBoolItem( FN_PARAM_4,
+ rOutParam.bAscending[1] ) );
+ }
+ if ( rOutParam.bDoSort[2] )
+ {
+ rReq.AppendItem( SfxUInt16Item( FN_PARAM_5,
+ rOutParam.nField[2] + 1 ) );
+ rReq.AppendItem( SfxBoolItem( FN_PARAM_6,
+ rOutParam.bAscending[2] ) );
+ }
+ }
+
+ rReq.Done();
+ }
+
+ delete pDlg;
+ }
+ }
+ break;
+
+/*
+ {
+
+ USHORT nId = ScPivotLayoutWrapper::GetChildWindowId();
+ SfxChildWindow* pWnd = pSfxApp->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+
+ }
+ break;
+*/
+
+ case SID_FILTER:
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ if ( pArgs )
+ {
+ DBG_ERROR("SID_FILTER with arguments?");
+ pTabViewShell->Query( ((const ScQueryItem&)
+ pArgs->Get( SCITEM_QUERYDATA )).GetQueryData(), NULL, TRUE );
+ rReq.Done();
+ }
+ else
+ {
+ USHORT nId = ScFilterDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ }
+ break;
+
+ case SID_SPECIAL_FILTER:
+ {
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ if ( pArgs )
+ {
+ DBG_ERROR("SID_SPECIAL_FILTER with arguments?");
+ pTabViewShell->Query( ((const ScQueryItem&)
+ pArgs->Get( SCITEM_QUERYDATA )).GetQueryData(), NULL, TRUE );
+ rReq.Done();
+ }
+ else
+ {
+ USHORT nId = ScSpecialFilterDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ }
+ break;
+
+ case FID_FILTER_OK:
+ {
+ const SfxItemSet* pOutSet = rReq.GetArgs();
+ const ScQueryItem& rItem = (const ScQueryItem&)
+ pOutSet->Get( SCITEM_QUERYDATA );
+
+ USHORT nCurTab = GetViewData()->GetTabNo();
+ USHORT nRefTab = GetViewData()->GetRefTabNo();
+
+ // Wenn RefInput auf andere Tabelle als Datentabelle umgeschaltet
+ // hat wieder zurueckschalten:
+
+ if ( nCurTab != nRefTab )
+ {
+ pTabViewShell->SetTabNo( nRefTab );
+ pTabViewShell->PaintExtras();
+ }
+
+ ScRange aAdvSource;
+ if (rItem.GetAdvancedQuerySource(aAdvSource))
+ pTabViewShell->Query( rItem.GetQueryData(), &aAdvSource, TRUE );
+ else
+ pTabViewShell->Query( rItem.GetQueryData(), NULL, TRUE );
+ rReq.Done( *pOutSet );
+ }
+ break;
+
+ case SID_UNFILTER:
+ {
+ ScQueryParam aParam;
+ ScDBData* pDBData = pTabViewShell->GetDBData();
+
+ pDBData->GetQueryParam( aParam );
+ USHORT nEC = aParam.GetEntryCount();
+ for (USHORT i=0; i<nEC; i++)
+ aParam.GetEntry(i).bDoQuery = FALSE;
+ aParam.bDuplicate = TRUE;
+ pTabViewShell->Query( aParam, NULL, TRUE );
+ rReq.Done();
+ }
+ break;
+
+ case SID_AUTO_FILTER:
+ pTabViewShell->ToggleAutoFilter();
+ rReq.Done();
+ break;
+
+ case SID_AUTOFILTER_HIDE:
+ pTabViewShell->HideAutoFilter();
+ rReq.Done();
+ break;
+
+ case SID_PIVOT_TABLE:
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && SFX_ITEM_SET ==
+ pReqArgs->GetItemState( SCITEM_PIVOTDATA, TRUE, &pItem ) )
+ {
+ USHORT nCurTab = GetViewData()->GetTabNo();
+ USHORT nRefTab = GetViewData()->GetRefTabNo();
+
+ // Wenn RefInput auf andere Tabelle als Datentabelle umgeschaltet
+ // hat wieder zurueckschalten:
+
+ if ( nCurTab != nRefTab )
+ {
+ pTabViewShell->SetTabNo( nRefTab );
+ pTabViewShell->PaintExtras();
+ }
+
+ const ScDPObject* pDPObject = pTabViewShell->GetDialogDPObject();
+ if ( pDPObject )
+ {
+ const ScPivotItem* pPItem = (const ScPivotItem*)pItem;
+ pTabViewShell->MakePivotTable(
+ pPItem->GetData(),
+ pPItem->GetDestRange(),
+ pPItem->IsNewSheet(),
+ *pDPObject );
+ }
+ rReq.Done();
+ }
+ else if (rReq.IsAPI())
+ SbxBase::SetError(SbxERR_BAD_PARAMETER);
+ }
+ break;
+
+ case SID_OPENDLG_PIVOTTABLE:
+ {
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+
+ ScDPObject* pNewDPObject = NULL;
+
+ // ScPivot is no longer used...
+ ScDPObject* pDPObj = pDoc->GetDPAtCursor(
+ pViewData->GetCurX(), pViewData->GetCurY(),
+ pViewData->GetTabNo() );
+ if ( pDPObj ) // on an existing table?
+ {
+ pNewDPObject = new ScDPObject( *pDPObj );
+ }
+ else // create new table
+ {
+ // select database range or data
+ pTabViewShell->GetDBData( TRUE, SC_DB_OLD );
+ if ( !GetViewData()->GetMarkData().IsMarked() )
+ pTabViewShell->MarkDataArea( FALSE );
+
+ // output to cursor position for non-sheet data
+ ScAddress aDestPos( pViewData->GetCurX(), pViewData->GetCurY(),
+ pViewData->GetTabNo() );
+
+ // first select type of source data
+
+ BOOL bEnableExt = ScDPObject::HasRegisteredSources();
+ ScDataPilotSourceTypeDlg* pTypeDlg = new ScDataPilotSourceTypeDlg(
+ pTabViewShell->GetDialogParent(), bEnableExt );
+ if ( pTypeDlg->Execute() == RET_OK )
+ {
+ if ( pTypeDlg->IsExternal() )
+ {
+ uno::Sequence<rtl::OUString> aSources = ScDPObject::GetRegisteredSources();
+ ScDataPilotServiceDlg* pServDlg = new ScDataPilotServiceDlg(
+ pTabViewShell->GetDialogParent(), aSources );
+ if ( pServDlg->Execute() == RET_OK )
+ {
+ ScDPServiceDesc aServDesc(
+ pServDlg->GetServiceName(),
+ pServDlg->GetParSource(),
+ pServDlg->GetParName(),
+ pServDlg->GetParUser(),
+ pServDlg->GetParPass() );
+ pNewDPObject = new ScDPObject( pDoc );
+ pNewDPObject->SetServiceData( aServDesc );
+ }
+ delete pServDlg;
+ }
+ else if ( pTypeDlg->IsDatabase() )
+ {
+ ScDataPilotDatabaseDlg* pDataDlg = new ScDataPilotDatabaseDlg(
+ pTabViewShell->GetDialogParent() );
+ if ( pDataDlg->Execute() == RET_OK )
+ {
+ ScImportSourceDesc aImpDesc;
+ pDataDlg->GetValues( aImpDesc );
+ pNewDPObject = new ScDPObject( pDoc );
+ pNewDPObject->SetImportDesc( aImpDesc );
+ }
+ delete pDataDlg;
+ }
+ else // selection
+ {
+ //! use database ranges (select before type dialog?)
+ ScRange aRange;
+ if ( GetViewData()->GetSimpleArea( aRange ) )
+ {
+ ScSheetSourceDesc aShtDesc;
+ aShtDesc.aSourceRange = aRange;
+ pNewDPObject = new ScDPObject( pDoc );
+ pNewDPObject->SetSheetDesc( aShtDesc );
+
+ // output below source data
+ if ( aRange.aEnd.Row()+2 <= MAXROW - 4 )
+ aDestPos = ScAddress( aRange.aStart.Col(),
+ aRange.aEnd.Row()+2,
+ aRange.aStart.Tab() );
+ }
+ }
+ }
+ delete pTypeDlg;
+
+ if ( pNewDPObject )
+ pNewDPObject->SetOutRange( aDestPos );
+
+#if 0
+ ScDBData* pDBData = pTabViewShell->GetDBData();
+ String aErrMsg;
+
+ pDBData->GetArea( nTab, nCol1, nRow1, nCol2, nRow2 );
+
+ bAreaOk = TRUE;
+ if ( nRow2-nRow1 < 1 )
+ {
+ // "mindestens eine Datenzeile"
+ pTabViewShell->ErrorMessage(STR_PIVOT_INVALID_DBAREA);
+ bAreaOk = FALSE;
+ }
+ else if (!pDBData->HasHeader())
+ {
+ if ( MessBox( pTabViewShell->GetDialogParent(), WinBits(WB_YES_NO | WB_DEF_YES),
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_0 ), // "StarCalc"
+ ScGlobal::GetRscString( STR_MSSG_MAKEAUTOFILTER_0 ) // Koepfe aus erster Zeile?
+ ).Execute() == RET_YES )
+ {
+ pDBData->SetHeader( TRUE ); //! Undo ??
+ }
+ else
+ bAreaOk = FALSE;
+ }
+#endif
+ }
+
+ pTabViewShell->SetDialogDPObject( pNewDPObject ); // is copied
+ if ( pNewDPObject )
+ {
+ // start layout dialog
+
+ USHORT nId = ScPivotLayoutWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ delete pNewDPObject;
+ }
+ break;
+
+ case SID_DEFINE_DBNAME:
+ {
+
+ USHORT nId = ScDbNameDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+
+ }
+ break;
+
+ case SID_SELECT_DB:
+ {
+ if ( pReqArgs )
+ {
+ const SfxStringItem* pItem =
+ (const SfxStringItem*)&pReqArgs->Get( SID_SELECT_DB );
+
+ if( pItem )
+ {
+ pTabViewShell->GotoDBArea( pItem->GetValue() );
+ rReq.Done();
+ }
+ else
+ DBG_ERROR("NULL");
+ }
+ else
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDBCollection* pDBCol = pDoc->GetDBCollection();
+
+ if ( pDBCol )
+ {
+ const String aStrNoName( ScGlobal::GetRscString(STR_DB_NONAME) );
+ List aList;
+ USHORT nDBCount = pDBCol->GetCount();
+ ScDBData* pDbData = NULL;
+ String* pDBName = NULL;
+
+ for ( USHORT i=0; i < nDBCount; i++ )
+ {
+ pDbData = (ScDBData*)(pDBCol->At( i ));
+ if ( pDbData )
+ {
+ pDBName = new String;
+ pDbData->GetName( *pDBName );
+
+ if ( *pDBName != aStrNoName )
+ aList.Insert( pDBName );
+ else
+ DELETEZ(pDBName);
+ }
+ }
+
+ ScSelEntryDlg* pDlg =
+ new ScSelEntryDlg( pTabViewShell->GetDialogParent(), RID_SCDLG_SELECTDB,
+ String(ScResId(SCSTR_SELECTDB)),
+ String(ScResId(SCSTR_AREAS)),
+ aList );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ pTabViewShell->GotoDBArea( pDlg->GetSelectEntry() );
+ rReq.Done();
+ }
+
+ delete pDlg;
+
+ void* pEntry = aList.First();
+ while ( pEntry )
+ {
+ delete (String*) aList.Remove( pEntry );
+ pEntry = aList.Next();
+ }
+ }
+ }
+ }
+ break;
+
+ case FID_VALIDATION:
+ {
+ const SfxPoolItem* pItem;
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ if ( pArgs )
+ {
+ DBG_ERROR("spaeter...");
+ }
+ else
+ {
+ SfxItemSet aArgSet( GetPool(), FID_VALID_MODE, FID_VALID_ERRTEXT );
+
+ ScValidationMode eMode = SC_VALID_ANY;
+ ScConditionMode eOper = SC_COND_EQUAL;
+ String aExpr1, aExpr2;
+ BOOL bBlank = TRUE;
+ BOOL bShowHelp = FALSE;
+ String aHelpTitle, aHelpText;
+ BOOL bShowError = FALSE;
+ ScValidErrorStyle eErrStyle = SC_VALERR_STOP;
+ String aErrTitle, aErrText;
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nCurX = GetViewData()->GetCurX();
+ USHORT nCurY = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScAddress aCursorPos( nCurX, nCurY, nTab );
+ ULONG nIndex = ((SfxUInt32Item*)pDoc->GetAttr(
+ nCurX, nCurY, nTab, ATTR_VALIDDATA ))->GetValue();
+ if ( nIndex )
+ {
+ const ScValidationData* pOldData = pDoc->GetValidationEntry( nIndex );
+ if ( pOldData )
+ {
+ eMode = pOldData->GetDataMode();
+ eOper = pOldData->GetOperation();
+ ULONG nNumFmt = 0;
+ if ( eMode == SC_VALID_DATE || eMode == SC_VALID_TIME )
+ {
+ short nType = ( eMode == SC_VALID_DATE ) ? NUMBERFORMAT_DATE
+ : NUMBERFORMAT_TIME;
+ nNumFmt = pDoc->GetFormatTable()->GetStandardFormat(
+ nType, ScGlobal::eLnge );
+ }
+ aExpr1 = pOldData->GetExpression( aCursorPos, 0, nNumFmt );
+ aExpr2 = pOldData->GetExpression( aCursorPos, 1, nNumFmt );
+ bBlank = pOldData->IsIgnoreBlank();
+
+ bShowHelp = pOldData->GetInput( aHelpTitle, aHelpText );
+ bShowError = pOldData->GetErrMsg( aErrTitle, aErrText, eErrStyle );
+
+ aArgSet.Put( SfxAllEnumItem( FID_VALID_MODE, eMode ) );
+ aArgSet.Put( SfxAllEnumItem( FID_VALID_CONDMODE, eOper ) );
+ aArgSet.Put( SfxStringItem( FID_VALID_VALUE1, aExpr1 ) );
+ aArgSet.Put( SfxStringItem( FID_VALID_VALUE2, aExpr2 ) );
+ aArgSet.Put( SfxBoolItem( FID_VALID_BLANK, bBlank ) );
+ aArgSet.Put( SfxBoolItem( FID_VALID_SHOWHELP, bShowHelp ) );
+ aArgSet.Put( SfxStringItem( FID_VALID_HELPTITLE, aHelpTitle ) );
+ aArgSet.Put( SfxStringItem( FID_VALID_HELPTEXT, aHelpText ) );
+ aArgSet.Put( SfxBoolItem( FID_VALID_SHOWERR, bShowError ) );
+ aArgSet.Put( SfxAllEnumItem( FID_VALID_ERRSTYLE, eErrStyle ) );
+ aArgSet.Put( SfxStringItem( FID_VALID_ERRTITLE, aErrTitle ) );
+ aArgSet.Put( SfxStringItem( FID_VALID_ERRTEXT, aErrText ) );
+ }
+ }
+
+ ScValidationDlg* pDlg = new ScValidationDlg( NULL, &aArgSet );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+
+ if ( pOutSet->GetItemState( FID_VALID_MODE, TRUE, &pItem ) == SFX_ITEM_SET )
+ eMode = (ScValidationMode) ((const SfxAllEnumItem*)pItem)->GetValue();
+ if ( pOutSet->GetItemState( FID_VALID_CONDMODE, TRUE, &pItem ) == SFX_ITEM_SET )
+ eOper = (ScConditionMode) ((const SfxAllEnumItem*)pItem)->GetValue();
+ if ( pOutSet->GetItemState( FID_VALID_VALUE1, TRUE, &pItem ) == SFX_ITEM_SET )
+ aExpr1 = ((const SfxStringItem*)pItem)->GetValue();
+ if ( pOutSet->GetItemState( FID_VALID_VALUE2, TRUE, &pItem ) == SFX_ITEM_SET )
+ aExpr2 = ((const SfxStringItem*)pItem)->GetValue();
+ if ( pOutSet->GetItemState( FID_VALID_BLANK, TRUE, &pItem ) == SFX_ITEM_SET )
+ bBlank = ((const SfxBoolItem*)pItem)->GetValue();
+
+ if ( pOutSet->GetItemState( FID_VALID_SHOWHELP, TRUE, &pItem ) == SFX_ITEM_SET )
+ bShowHelp = ((const SfxBoolItem*)pItem)->GetValue();
+ if ( pOutSet->GetItemState( FID_VALID_HELPTITLE, TRUE, &pItem ) == SFX_ITEM_SET )
+ aHelpTitle = ((const SfxStringItem*)pItem)->GetValue();
+ if ( pOutSet->GetItemState( FID_VALID_HELPTEXT, TRUE, &pItem ) == SFX_ITEM_SET )
+ aHelpText = ((const SfxStringItem*)pItem)->GetValue();
+
+ if ( pOutSet->GetItemState( FID_VALID_SHOWERR, TRUE, &pItem ) == SFX_ITEM_SET )
+ bShowError = ((const SfxBoolItem*)pItem)->GetValue();
+ if ( pOutSet->GetItemState( FID_VALID_ERRSTYLE, TRUE, &pItem ) == SFX_ITEM_SET )
+ eErrStyle = (ScValidErrorStyle) ((const SfxAllEnumItem*)pItem)->GetValue();
+ if ( pOutSet->GetItemState( FID_VALID_ERRTITLE, TRUE, &pItem ) == SFX_ITEM_SET )
+ aErrTitle = ((const SfxStringItem*)pItem)->GetValue();
+ if ( pOutSet->GetItemState( FID_VALID_ERRTEXT, TRUE, &pItem ) == SFX_ITEM_SET )
+ aErrText = ((const SfxStringItem*)pItem)->GetValue();
+
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScValidationData aData( eMode, eOper, aExpr1, aExpr2, pDoc, aCursorPos );
+ aData.SetIgnoreBlank( bBlank );
+ if (bShowHelp)
+ aData.SetInput(aHelpTitle, aHelpText);
+ else
+ aData.ResetInput();
+ if (bShowError)
+ aData.SetError(aErrTitle, aErrText, eErrStyle);
+ else
+ aData.ResetError();
+
+ pTabViewShell->SetValidation( aData );
+ rReq.Done( *pOutSet );
+ }
+ delete pDlg;
+ }
+ }
+ break;
+ }
+}
+
+void __EXPORT ScCellShell::GetDBState( SfxItemSet& rSet )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ ScViewData* pViewData = GetViewData();
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nPosX = pViewData->GetCurX();
+ USHORT nPosY = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+
+ BOOL bAutoFilter;
+ BOOL bAutoFilterTested = FALSE;
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while (nWhich)
+ {
+ switch (nWhich)
+ {
+ case SID_REFRESH_DBAREA:
+ {
+ // importierte Daten ohne Selektion
+ // oder Filter,Sortierung,Teilergebis (auch ohne Import)
+ BOOL bOk = FALSE;
+ ScDBData* pDBData = pTabViewShell->GetDBData(FALSE,SC_DB_OLD);
+ if (pDBData && pDoc->GetChangeTrack() == NULL)
+ {
+ if ( pDBData->HasImportParam() )
+ bOk = !pDBData->HasImportSelection();
+ else
+ {
+ bOk = pDBData->HasQueryParam() ||
+ pDBData->HasSortParam() ||
+ pDBData->HasSubTotalParam();
+ if (!bOk)
+ {
+ // Pivottabelle mit den Daten als Quellbereich ?
+ ScRange aDataRange;
+ pDBData->GetArea(aDataRange);
+ ScPivotCollection* pPivotCollection = pDoc->GetPivotCollection();
+ USHORT nCount = pPivotCollection ? pPivotCollection->GetCount() : 0;
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScPivot* pTemp = (*pPivotCollection)[i];
+ if ( pTemp && pTemp->GetSrcArea().Intersects( aDataRange ) )
+ bOk = TRUE;
+ }
+ }
+ }
+ }
+ if (!bOk)
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_FILTER:
+ case SID_SPECIAL_FILTER:
+ {
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ if (rMark.IsMultiMarked())
+ {
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+
+
+ //Bei Redlining und Multiselektion Disablen
+ case SID_SORT_ASCENDING:
+ case SID_SORT_DESCENDING:
+ case SCITEM_SORTDATA:
+ case SCITEM_SUBTDATA:
+ case SID_OPENDLG_PIVOTTABLE:
+ {
+ //! move ReadOnly check to idl flags
+
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ if ( pDocSh->IsReadOnly() || pDoc->GetChangeTrack()!=NULL ||
+ rMark.IsMultiMarked() )
+ {
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+
+ case SID_REIMPORT_DATA:
+ {
+ // nur importierte Daten ohne Selektion
+ ScDBData* pDBData = pTabViewShell->GetDBData(FALSE,SC_DB_OLD);
+ if (!pDBData || !pDBData->HasImportParam() || pDBData->HasImportSelection() ||
+ pDoc->GetChangeTrack()!=NULL)
+ {
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+
+ case SID_IMPORT_DATA:
+ {
+ if(pDoc->GetChangeTrack()!=NULL)
+ rSet.DisableItem( nWhich );
+/* Import (F4) ist immer moeglich, Default ist Adressbuch
+
+ // importierte Daten auch mit Selektion
+ ScDBData* pDBData = GetDBData(FALSE,SC_DB_OLD);
+ if (!pDBData || !pDBData->HasImportParam())
+ rSet.DisableItem( nWhich );
+*/
+ }
+ break;
+ case SID_SBA_BRW_INSERT:
+ {
+ // SBA will ein BOOL-Item, damit ueberhaupt enabled
+
+ BOOL bEnable = TRUE;
+ rSet.Put(SfxBoolItem(nWhich, bEnable));
+ }
+ break;
+
+ case SID_AUTO_FILTER:
+ case SID_AUTOFILTER_HIDE:
+ {
+ if (!bAutoFilterTested)
+ {
+ bAutoFilter = pDoc->HasAutoFilter( nPosX, nPosY, nTab );
+ bAutoFilterTested = TRUE;
+ }
+ if ( nWhich == SID_AUTO_FILTER )
+ {
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ if (rMark.IsMultiMarked())
+ {
+ rSet.DisableItem( nWhich );
+ }
+ else
+ rSet.Put( SfxBoolItem( nWhich, bAutoFilter ) );
+ }
+ else
+ if (!bAutoFilter)
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_UNFILTER:
+ {
+ USHORT nStartCol, nStartRow, nStartTab;
+ USHORT nEndCol, nEndRow, nEndTab;
+ BOOL bAnyQuery = FALSE;
+
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ BOOL bSelected = rMark.IsMarked();
+
+ if ( bSelected )
+ {
+ GetViewData()->GetSimpleArea( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab );
+ if (nStartCol==nEndCol && nStartRow==nEndRow)
+ bSelected = FALSE;
+ }
+ else
+ {
+ nStartCol = GetViewData()->GetCurX();
+ nStartRow = GetViewData()->GetCurY();
+ nStartTab = GetViewData()->GetTabNo();
+ }
+
+ ScDBData* pDBData = bSelected
+ ? pDoc->GetDBAtArea( nStartTab, nStartCol, nStartRow, nEndCol, nEndRow )
+ : pDoc->GetDBAtCursor( nStartCol, nStartRow, nStartTab );
+
+ if ( pDBData )
+ {
+ ScQueryParam aParam;
+ pDBData->GetQueryParam( aParam );
+ if ( aParam.GetEntry(0).bDoQuery )
+ bAnyQuery = TRUE;
+ }
+
+ if ( !bAnyQuery )
+ rSet.DisableItem( nWhich );
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+
diff --git a/sc/source/ui/view/cellsh3.cxx b/sc/source/ui/view/cellsh3.cxx
new file mode 100644
index 000000000000..78226b58a0ee
--- /dev/null
+++ b/sc/source/ui/view/cellsh3.cxx
@@ -0,0 +1,870 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellsh3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/stritem.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "globstr.hrc"
+#include "scmod.hxx"
+#include "appoptio.hxx"
+#include "tabvwsh.hxx"
+#include "document.hxx"
+#include "sc.hrc"
+#include "docsh.hxx"
+#include "reffact.hxx"
+#include "uiitems.hxx"
+#include "scendlg.hxx"
+#include "mtrindlg.hxx"
+#include "autoform.hxx"
+#include "autofmt.hxx"
+#include "cellsh.hxx"
+
+#define IS_EDITMODE() GetViewData()->HasEditView( GetViewData()->GetActivePart() )
+
+//------------------------------------------------------------------
+
+void ScCellShell::Execute( SfxRequest& rReq )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ SfxBindings& rBindings = pTabViewShell->GetViewFrame()->GetBindings();
+ SfxApplication* pSfxApp = SFX_APP();
+ ScModule* pScMod = SC_MOD();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+
+ if (nSlot != SID_CURRENTCELL) // der kommt beim MouseButtonUp
+ pTabViewShell->HideListBox(); // Autofilter-DropDown-Listbox
+
+ if ( IS_EDITMODE() )
+ {
+ switch ( nSlot )
+ {
+ // beim Oeffnen eines Referenz-Dialogs darf die SubShell nicht umgeschaltet werden
+ // (beim Schliessen des Dialogs wird StopEditShell gerufen)
+ case SID_OPENDLG_FUNCTION:
+ case SID_OPENDLG_CHART:
+ // #53318# inplace macht die EditShell Aerger...
+ //! kann nicht immer umgeschaltet werden ????
+ if (!pTabViewShell->GetViewFrame()->ISA(SfxInPlaceFrame))
+ pTabViewShell->SetDontSwitch(TRUE); // EditShell nicht abschalten
+ // kein break
+
+ case FID_CELL_FORMAT:
+ case SID_DATA_SELECT:
+ case SID_OPENDLG_CONSOLIDATE:
+ case SID_OPENDLG_SOLVE:
+
+ pScMod->InputEnterHandler();
+ pTabViewShell->UpdateInputHandler();
+
+ pTabViewShell->SetDontSwitch(FALSE);
+
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ switch ( nSlot )
+ {
+
+
+
+ case SID_ATTR_SIZE://XXX ???
+ break;
+
+ case SID_STATUS_SELMODE:
+ if ( pReqArgs )
+ {
+ /* 0: STD Click hebt Sel auf
+ * 1: ER Click erweitert Selektion
+ * 2: ERG Click definiert weitere Selektion
+ */
+ UINT16 nMode = ((const SfxUInt16Item&)pReqArgs->Get( nSlot )).GetValue();
+
+ switch ( nMode )
+ {
+ case 1: nMode = KEY_SHIFT; break;
+ case 2: nMode = KEY_MOD1; break; // Control-Taste
+ case 0:
+ default:
+ nMode = 0;
+ }
+
+ pTabViewShell->LockModifiers( nMode );
+ rBindings.Invalidate( SID_STATUS_SELMODE );
+
+ rReq.Done();
+ }
+ break;
+
+ // SID_STATUS_SELMODE_NORM wird nicht benutzt ???
+
+ case SID_STATUS_SELMODE_NORM:
+ pTabViewShell->LockModifiers( 0 );
+ rBindings.Invalidate( SID_STATUS_SELMODE );
+ break;
+
+ // SID_STATUS_SELMODE_ERG / SID_STATUS_SELMODE_ERW als Toggles:
+
+ case SID_STATUS_SELMODE_ERG:
+ if ( pTabViewShell->GetLockedModifiers() & KEY_MOD1 )
+ pTabViewShell->LockModifiers( 0 );
+ else
+ pTabViewShell->LockModifiers( KEY_MOD1 );
+ rBindings.Invalidate( SID_STATUS_SELMODE );
+ break;
+
+ case SID_STATUS_SELMODE_ERW:
+ if ( pTabViewShell->GetLockedModifiers() & KEY_SHIFT )
+ pTabViewShell->LockModifiers( 0 );
+ else
+ pTabViewShell->LockModifiers( KEY_SHIFT );
+ rBindings.Invalidate( SID_STATUS_SELMODE );
+ break;
+
+ case SID_ENTER_STRING:
+ {
+ if ( pReqArgs )
+ {
+ String aStr( ((const SfxStringItem&)pReqArgs->
+ Get( SID_ENTER_STRING )).GetValue() );
+
+ pTabViewShell->EnterData( GetViewData()->GetCurX(),
+ GetViewData()->GetCurY(),
+ GetViewData()->GetTabNo(),
+ aStr );
+
+ rReq.Done();
+
+ // hier kein GrabFocus, weil sonst auf dem Mac die Tabelle vor die
+ // Seitenansicht springt, wenn die Eingabe nicht abgeschlossen war
+ // (GrabFocus passiert in KillEditView)
+ }
+ }
+ break;
+
+ case SID_INSERT_MATRIX:
+ {
+ if ( pReqArgs )
+ {
+ String aStr = ((const SfxStringItem&)pReqArgs->
+ Get( SID_INSERT_MATRIX )).GetValue();
+ pTabViewShell->EnterMatrix( aStr );
+ rReq.Done();
+ }
+ }
+ break;
+
+ case FID_INPUTLINE_ENTER:
+ case FID_INPUTLINE_BLOCK:
+ case FID_INPUTLINE_MATRIX:
+ {
+ if( pReqArgs == 0 ) //XXX vorlaufiger HACK um GPF zu vermeiden
+ break;
+
+ const ScInputStatusItem* pStatusItem
+ = (const ScInputStatusItem*)&pReqArgs->
+ Get( FID_INPUTLINE_STATUS );
+
+ ScAddress aCursorPos = pStatusItem->GetPos();
+ const EditTextObject* pData = pStatusItem->GetEditData();
+ if (pData)
+ {
+ if (nSlot == FID_INPUTLINE_BLOCK)
+ pTabViewShell->EnterBlock( String(), pData );
+ else
+ pTabViewShell->EnterData( aCursorPos.Col(), aCursorPos.Row(), aCursorPos.Tab(), pData );
+ }
+ else
+ {
+ String aString = pStatusItem->GetString();
+ if (nSlot == FID_INPUTLINE_ENTER)
+ {
+ if (
+ aCursorPos.Col() == GetViewData()->GetCurX() &&
+ aCursorPos.Row() == GetViewData()->GetCurY() &&
+ aCursorPos.Tab() == GetViewData()->GetTabNo()
+ )
+ {
+ SfxStringItem aItem( SID_ENTER_STRING, aString );
+
+ SfxBindings& rBindings = pTabViewShell->GetViewFrame()->GetBindings();
+ const SfxPoolItem* aArgs[2];
+ aArgs[0] = &aItem;
+ aArgs[1] = NULL;
+ rBindings.Execute( SID_ENTER_STRING, aArgs );
+ }
+ else
+ {
+ pTabViewShell->EnterData( aCursorPos.Col(),
+ aCursorPos.Row(),
+ aCursorPos.Tab(),
+ aString );
+ rReq.Done();
+ }
+ }
+ else if (nSlot == FID_INPUTLINE_BLOCK)
+ {
+ pTabViewShell->EnterBlock( aString, NULL );
+ rReq.Done();
+ }
+ else
+ {
+ pTabViewShell->EnterMatrix( aString );
+ rReq.Done();
+ }
+
+ }
+
+ // hier kein GrabFocus, weil sonst auf dem Mac die Tabelle vor die
+ // Seitenansicht springt, wenn die Eingabe nicht abgeschlossen war
+ // (GrabFocus passiert in KillEditView)
+ }
+ break;
+
+
+ case SID_OPENDLG_CHART:
+ {
+ BOOL bChartDlgIsEdit = ( nSlot == SID_OPENDLG_MODCHART );
+ pTabViewShell->SetChartDlgEdit(bChartDlgIsEdit);
+
+ if (bChartDlgIsEdit)
+ {
+ pTabViewShell->SetEditChartName(pTabViewShell->GetSelectedChartName());
+ pTabViewShell->DrawDeselectAll(); // flackert sonst bei Ref-Input
+ }
+
+ pTabViewShell->ResetChartArea();
+
+ USHORT nId = ScChartDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ break;
+
+ case SID_OPENDLG_FUNCTION:
+ {
+ USHORT nId = SID_OPENDLG_FUNCTION;
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ break;
+
+ case SID_OPENDLG_CONSOLIDATE:
+ {
+ USHORT nId = ScConsolidateDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ break;
+
+ case FID_CELL_FORMAT:
+ {
+ if ( pReqArgs != NULL )
+ {
+ //----------------------------------
+ // Zellattribute ohne Dialog setzen:
+ //----------------------------------
+ SfxItemSet* pEmptySet =
+ new SfxItemSet( *pReqArgs->GetPool(),
+ ATTR_PATTERN_START,
+ ATTR_PATTERN_END );
+
+ SfxItemSet* pNewSet =
+ new SfxItemSet( *pReqArgs->GetPool(),
+ ATTR_PATTERN_START,
+ ATTR_PATTERN_END );
+
+ const SfxPoolItem* pAttr = NULL;
+ USHORT nWhich = 0;
+
+ for ( nWhich=ATTR_PATTERN_START; nWhich<=ATTR_PATTERN_END; nWhich++ )
+ if ( pReqArgs->GetItemState( nWhich, TRUE, &pAttr ) == SFX_ITEM_SET )
+ pNewSet->Put( *pAttr );
+
+ pTabViewShell->ApplyAttributes( pNewSet, pEmptySet );
+
+ delete pNewSet;
+ delete pEmptySet;
+
+ rReq.Done();
+ }
+ else if ( pReqArgs == NULL )
+ {
+ pTabViewShell->ExecuteCellFormatDlg( rReq );
+ }
+ }
+ break;
+
+ case SID_OPENDLG_SOLVE:
+ {
+ USHORT nId = ScSolverDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ break;
+
+ case SID_OPENDLG_TABOP:
+ {
+ USHORT nId = ScTabOpDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ break;
+
+ case SID_SCENARIOS:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ if ( pDoc->IsScenario(nTab) )
+ {
+ rMark.MarkToMulti();
+ if ( rMark.IsMultiMarked() )
+ {
+ if ( rReq.IsAPI()
+ || RET_YES ==
+ QueryBox( pTabViewShell->GetDialogParent(), WinBits(WB_YES_NO | WB_DEF_YES),
+ ScGlobal::GetRscString(STR_UPDATE_SCENARIO) ).
+ Execute() )
+ {
+ pTabViewShell->ExtendScenario();
+ rReq.Done();
+ }
+ }
+ else if( ! rReq.IsAPI() )
+ {
+ ErrorBox aErrorBox( pTabViewShell->GetDialogParent(), WinBits(WB_OK | WB_DEF_OK),
+ ScGlobal::GetRscString(STR_NOAREASELECTED) );
+ aErrorBox.Execute();
+ }
+ }
+ else
+ {
+ rMark.MarkToMulti();
+ if ( rMark.IsMultiMarked() )
+ {
+ USHORT i=1;
+ String aBaseName;
+ String aName;
+ String aComment;
+ Color aColor;
+ USHORT nFlags;
+
+ pDoc->GetName( nTab, aBaseName );
+ aBaseName += '_';
+ aBaseName += ScGlobal::GetRscString(STR_SCENARIO);
+ aBaseName += '_';
+
+ // vorneweg testen, ob der Prefix als gueltig erkannt wird
+ // wenn nicht, nur doppelte vermeiden
+ BOOL bPrefix = pDoc->ValidTabName( aBaseName );
+ DBG_ASSERT(bPrefix, "ungueltiger Tabellenname");
+
+ while ( pDoc->IsScenario(nTab+i) )
+ i++;
+
+ BOOL bValid;
+ USHORT nDummy;
+ do
+ {
+ aName = aBaseName;
+ aName += String::CreateFromInt32( i );
+ if (bPrefix)
+ bValid = pDoc->ValidNewTabName( aName );
+ else
+ bValid = !pDoc->GetTable( aName, nDummy );
+ ++i;
+ }
+ while ( !bValid && i <= 2*MAXTAB );
+
+ if ( pReqArgs != NULL )
+ {
+ String aName;
+ String aComment;
+ const SfxPoolItem* pItem;
+ if ( pReqArgs->GetItemState( SID_SCENARIOS, TRUE, &pItem ) == SFX_ITEM_SET )
+ aName = ((const SfxStringItem*)pItem)->GetValue();
+ if ( pReqArgs->GetItemState( SID_NEW_TABLENAME, TRUE, &pItem ) == SFX_ITEM_SET )
+ aComment = ((const SfxStringItem*)pItem)->GetValue();
+
+ aColor = Color( COL_LIGHTGRAY ); // Default
+ nFlags = 0; // nicht-TwoWay
+
+ pTabViewShell->MakeScenario( aName, aComment, aColor, nFlags );
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ else
+ {
+ ScNewScenarioDlg* pNewDlg =
+ new ScNewScenarioDlg( pTabViewShell->GetDialogParent(), aName );
+
+ if ( pNewDlg->Execute() == RET_OK )
+ {
+ pNewDlg->GetScenarioData( aName, aComment, aColor, nFlags );
+ pTabViewShell->MakeScenario( aName, aComment, aColor, nFlags );
+
+ rReq.AppendItem( SfxStringItem( SID_SCENARIOS, aName ) );
+ rReq.AppendItem( SfxStringItem( SID_NEW_TABLENAME, aComment ) );
+ rReq.Done();
+ }
+ delete pNewDlg;
+ }
+ }
+ else if( ! rReq.IsAPI() )
+ {
+ pTabViewShell->ErrorMessage(STR_ERR_NEWSCENARIO);
+ }
+ }
+ }
+ break;
+
+
+ case SID_SELECTALL:
+ {
+ pTabViewShell->SelectAll();
+ rReq.Done();
+ }
+ break;
+
+ //----------------------------------------------------------------
+
+ case FID_ROW_HEIGHT:
+ {
+ if ( pReqArgs )
+ {
+ const SfxUInt16Item& rUInt16Item = (const SfxUInt16Item&)pReqArgs->Get( FID_ROW_HEIGHT );
+
+ pTabViewShell->SetMarkedWidthOrHeight( FALSE, SC_SIZE_DIRECT, rUInt16Item.GetValue() );
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ else
+ {
+ ScViewData* pViewData = GetViewData();
+ FieldUnit eMetric = SC_MOD()->GetAppOptions().GetAppMetric();
+ USHORT nCurHeight = pViewData->GetDocument()->
+ GetRowHeight( pViewData->GetCurY(),
+ pViewData->GetTabNo() );
+ ScMetricInputDlg* pDlg =
+ new ScMetricInputDlg( pTabViewShell->GetDialogParent(), RID_SCDLG_ROW_MAN,
+ nCurHeight,
+ ScGlobal::nStdRowHeight,
+ eMetric,
+ 2,
+ MAX_COL_HEIGHT );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ long nVal = pDlg->GetInputValue();
+ pTabViewShell->SetMarkedWidthOrHeight( FALSE, SC_SIZE_DIRECT, (USHORT)nVal );
+
+ rReq.AppendItem( SfxUInt16Item( FID_ROW_HEIGHT, (USHORT)nVal ) );
+ rReq.Done();
+
+ }
+ delete pDlg;
+ }
+ }
+ break;
+
+ case FID_ROW_OPT_HEIGHT:
+ {
+ if ( pReqArgs )
+ {
+ const SfxUInt16Item& rUInt16Item = (const SfxUInt16Item&)pReqArgs->Get( FID_ROW_OPT_HEIGHT );
+
+ pTabViewShell->SetMarkedWidthOrHeight( FALSE, SC_SIZE_OPTIMAL, rUInt16Item.GetValue() );
+ ScGlobal::nLastRowHeightExtra = rUInt16Item.GetValue();
+
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ else
+ {
+ FieldUnit eMetric = SC_MOD()->GetAppOptions().GetAppMetric();
+
+ ScMetricInputDlg* pDlg =
+ new ScMetricInputDlg( pTabViewShell->GetDialogParent(), RID_SCDLG_ROW_OPT,
+ ScGlobal::nLastRowHeightExtra,
+ 0,
+ eMetric,
+ 1,
+ MAX_EXTRA_HEIGHT );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ long nVal = pDlg->GetInputValue();
+ pTabViewShell->SetMarkedWidthOrHeight( FALSE, SC_SIZE_OPTIMAL, (USHORT)nVal );
+ ScGlobal::nLastRowHeightExtra = nVal;
+
+ rReq.AppendItem( SfxUInt16Item( FID_ROW_OPT_HEIGHT, (USHORT)nVal ) );
+ rReq.Done();
+
+ }
+ delete pDlg;
+ }
+ }
+ break;
+
+ case FID_COL_WIDTH:
+ {
+ if ( pReqArgs )
+ {
+ const SfxUInt16Item& rUInt16Item = (const SfxUInt16Item&)pReqArgs->Get( FID_COL_WIDTH );
+
+ pTabViewShell->SetMarkedWidthOrHeight( TRUE, SC_SIZE_DIRECT, rUInt16Item.GetValue() );
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ else
+ {
+ FieldUnit eMetric = SC_MOD()->GetAppOptions().GetAppMetric();
+ ScViewData* pViewData = GetViewData();
+ USHORT nCurHeight = pViewData->GetDocument()->
+ GetColWidth( pViewData->GetCurX(),
+ pViewData->GetTabNo() );
+ ScMetricInputDlg* pDlg =
+ new ScMetricInputDlg( pTabViewShell->GetDialogParent(), RID_SCDLG_COL_MAN,
+ nCurHeight,
+ STD_COL_WIDTH,
+ eMetric,
+ 2,
+ MAX_COL_WIDTH );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ long nVal = pDlg->GetInputValue();
+ pTabViewShell->SetMarkedWidthOrHeight( TRUE, SC_SIZE_DIRECT, (USHORT)nVal );
+
+ rReq.AppendItem( SfxUInt16Item( FID_COL_WIDTH, (USHORT)nVal) );
+ rReq.Done();
+
+ }
+ delete pDlg;
+ }
+ }
+ break;
+
+ case FID_COL_OPT_WIDTH:
+ {
+ if ( pReqArgs )
+ {
+ const SfxUInt16Item& rUInt16Item = (const SfxUInt16Item&)pReqArgs->Get( FID_COL_OPT_WIDTH );
+
+ pTabViewShell->SetMarkedWidthOrHeight( TRUE, SC_SIZE_OPTIMAL, rUInt16Item.GetValue() );
+ ScGlobal::nLastColWidthExtra = rUInt16Item.GetValue();
+
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ else
+ {
+ FieldUnit eMetric = SC_MOD()->GetAppOptions().GetAppMetric();
+
+ ScMetricInputDlg* pDlg =
+ new ScMetricInputDlg( pTabViewShell->GetDialogParent(), RID_SCDLG_COL_OPT,
+ ScGlobal::nLastColWidthExtra,
+ STD_EXTRA_WIDTH,
+ eMetric,
+ 1,
+ MAX_EXTRA_WIDTH );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ long nVal = pDlg->GetInputValue();
+ pTabViewShell->SetMarkedWidthOrHeight( TRUE, SC_SIZE_OPTIMAL, (USHORT)nVal );
+ ScGlobal::nLastColWidthExtra = nVal;
+
+ rReq.AppendItem( SfxUInt16Item( FID_COL_OPT_WIDTH, (USHORT)nVal ) );
+ rReq.Done();
+ }
+ delete pDlg;
+ }
+ }
+ break;
+
+ case FID_COL_OPT_DIRECT:
+ pTabViewShell->SetMarkedWidthOrHeight( TRUE, SC_SIZE_OPTIMAL, STD_EXTRA_WIDTH );
+ rReq.Done();
+ break;
+
+ case FID_ROW_HIDE:
+ pTabViewShell->SetMarkedWidthOrHeight( FALSE, SC_SIZE_DIRECT, 0 );
+ rReq.Done();
+ break;
+ case FID_ROW_SHOW:
+ pTabViewShell->SetMarkedWidthOrHeight( FALSE, SC_SIZE_SHOW, 0 );
+ rReq.Done();
+ break;
+ case FID_COL_HIDE:
+ pTabViewShell->SetMarkedWidthOrHeight( TRUE, SC_SIZE_DIRECT, 0 );
+ rReq.Done();
+ break;
+ case FID_COL_SHOW:
+ pTabViewShell->SetMarkedWidthOrHeight( TRUE, SC_SIZE_SHOW, 0 );
+ rReq.Done();
+ break;
+
+ //----------------------------------------------------------------
+
+
+ case SID_CELL_FORMAT_RESET:
+ {
+ pTabViewShell->DeleteContents( IDF_HARDATTR | IDF_EDITATTR );
+ rReq.Done();
+ }
+ break;
+
+ case FID_MERGE_ON:
+ {
+ if ( !GetViewData()->GetDocument()->GetChangeTrack() )
+ {
+ BOOL bMoveContents = FALSE;
+ BOOL bApi = rReq.IsAPI();
+ const SfxPoolItem* pItem;
+ if ( pReqArgs &&
+ pReqArgs->GetItemState(FID_MERGE_ON, TRUE, &pItem) == SFX_ITEM_SET )
+ {
+ DBG_ASSERT(pItem && pItem->ISA(SfxBoolItem), "falsches Item");
+ bMoveContents = ((const SfxBoolItem*)pItem)->GetValue();
+ }
+
+ if (pTabViewShell->MergeCells( bApi, bMoveContents ))
+ {
+ if (!bApi && bMoveContents) // "ja" im Dialog geklickt
+ {
+ rReq.AppendItem( SfxBoolItem( FID_MERGE_ON, bMoveContents ) );
+ }
+ rReq.Done();
+ }
+ }
+ }
+ break;
+ case FID_MERGE_OFF:
+ if ( !GetViewData()->GetDocument()->GetChangeTrack() )
+ {
+ if (pTabViewShell->RemoveMerge())
+ rReq.Done();
+ }
+ break;
+
+ case SID_AUTOFORMAT:
+ {
+ Window* pDlgParent = pTabViewShell->GetDialogParent();
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+
+ if ( !GetViewData()->GetMarkData().IsMarked() )
+ pTabViewShell->MarkDataArea( TRUE );
+
+ GetViewData()->GetSimpleArea( nStartCol,nStartRow,nStartTab,
+ nEndCol,nEndRow,nEndTab );
+
+ if ( ( Abs((short)nEndCol-(short)nStartCol) > 1 )
+ && ( Abs((short)nEndRow-(short)nStartRow) > 1 ) )
+ {
+ if ( pReqArgs )
+ {
+ const SfxStringItem& rNameItem = (const SfxStringItem&)pReqArgs->Get( SID_AUTOFORMAT );
+ ScAutoFormat* pFormat = ScGlobal::GetAutoFormat();
+ USHORT nIndex = pFormat->FindIndexPerName( rNameItem.GetValue() );
+
+ pTabViewShell->AutoFormat( nIndex );
+
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ else
+ {
+ ScGlobal::ClearAutoFormat();
+ ScAutoFormatData* pNewEntry = pTabViewShell->CreateAutoFormatData();
+ ScAutoFormatDlg* pDlg = new ScAutoFormatDlg(
+ pDlgParent,
+ ScGlobal::GetAutoFormat(),
+ pNewEntry );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ if ( !pTabViewShell->SelectionEditable() )
+ {
+ pTabViewShell->ErrorMessage(STR_PROTECTIONERR);
+ }
+ else
+ {
+ pTabViewShell->AutoFormat( pDlg->GetIndex() );
+
+ rReq.AppendItem( SfxStringItem( SID_AUTOFORMAT, pDlg->GetCurrFormatName() ) );
+ rReq.Done();
+ }
+ }
+ delete pDlg;
+ delete pNewEntry;
+ }
+ }
+ else
+ ErrorBox( pDlgParent, WinBits( WB_OK | WB_DEF_OK ),
+ ScGlobal::GetRscString(STR_INVALID_AFAREA) ).Execute();
+ }
+ break;
+
+ case SID_CANCEL:
+ {
+ if (GetViewData()->HasEditView(GetViewData()->GetActivePart()))
+ pScMod->InputCancelHandler();
+ else if (pTabViewShell->HasHintWindow())
+ pTabViewShell->RemoveHintWindow(); // Eingabemeldung abschalten
+ else
+ {
+ SfxObjectShell* pObjSh = GetViewData()->GetSfxDocShell();
+ if (pObjSh->GetInPlaceObject() &&
+ pObjSh->GetInPlaceObject()->GetIPClient())
+ {
+ GetViewData()->GetDocShell()->
+ DoInPlaceActivate(FALSE); // OLE beenden
+ }
+ }
+
+// SetSumAssignMode(); //ScInputWindow
+ }
+ break;
+
+ case SID_DATA_SELECT:
+ pTabViewShell->StartDataSelect();
+ break;
+
+ case SID_DETECTIVE_FILLMODE:
+ {
+ BOOL bOldMode = pTabViewShell->IsAuditShell();
+ pTabViewShell->SetAuditShell( !bOldMode );
+ pTabViewShell->Invalidate( nSlot );
+ }
+ break;
+
+ case SID_OPENDLG_CONDFRMT:
+ {
+ USHORT nId = ScCondFormatDlgWrapper::GetChildWindowId();
+ SfxViewFrame* pViewFrm = pTabViewShell->GetViewFrame();
+ SfxChildWindow* pWnd = pViewFrm->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ break;
+
+ // ----------------------------------------------------------------
+
+ case FID_INPUTLINE_STATUS:
+ DBG_ERROR("Execute von InputLine-Status");
+ break;
+
+
+ case SID_STATUS_DOCPOS:
+ {
+ //! Navigator an-/ausschalten (wie im Writer) ???
+ //!SFX_DISPATCHER().Execute( SID_NAVIGATOR,
+ //! SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD );
+ }
+ break;
+
+
+ case SID_MARKAREA:
+ // called from Basic at the hidden view to select a range in the visible view
+ DBG_ERROR("old slot SID_MARKAREA");
+ break;
+
+ default:
+ DBG_ERROR("Unbekannter Slot bei ScCellShell::Execute");
+ break;
+ }
+}
+
+
+
diff --git a/sc/source/ui/view/cellsh4.cxx b/sc/source/ui/view/cellsh4.cxx
new file mode 100644
index 000000000000..9319b3bc2245
--- /dev/null
+++ b/sc/source/ui/view/cellsh4.cxx
@@ -0,0 +1,359 @@
+/*************************************************************************
+ *
+ * $RCSfile: cellsh4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#ifdef WNT
+#pragma optimize ("", off)
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sfx2/request.hxx>
+
+#include "cellsh.hxx"
+#include "tabvwsh.hxx"
+#include "global.hxx"
+#include "scmod.hxx"
+#include "sc.hrc"
+
+
+//------------------------------------------------------------------
+
+#define IS_AVAILABLE(WhichId,ppItem) \
+ (pReqArgs->GetItemState((WhichId), TRUE, ppItem ) == SFX_ITEM_SET)
+
+
+void ScCellShell::ExecuteCursor( SfxRequest& rReq )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlotId = rReq.GetSlot();
+ short nRepeat = 1;
+ BOOL bSel = FALSE;
+
+ if ( pReqArgs != NULL )
+ {
+ const SfxPoolItem* pItem;
+ if( IS_AVAILABLE( FN_PARAM_1, &pItem ) )
+ nRepeat = ((const SfxInt16Item*)pItem)->GetValue();
+ if( IS_AVAILABLE( FN_PARAM_2, &pItem ) )
+ bSel = ((const SfxBoolItem*)pItem)->GetValue();
+ }
+
+ // einmal extra, damit der Cursor bei ExecuteInputDirect nicht zuoft gemalt wird:
+ pTabViewShell->HideAllCursors();
+
+ //OS: einmal fuer alle wird doch reichen!
+ pTabViewShell->ExecuteInputDirect();
+ switch ( nSlotId )
+ {
+ case SID_CURSORDOWN:
+ pTabViewShell->MoveCursorRel( 0, nRepeat, SC_FOLLOW_LINE, bSel );
+ break;
+
+ case SID_CURSORBLKDOWN:
+ pTabViewShell->MoveCursorArea( 0, nRepeat, SC_FOLLOW_JUMP, bSel );
+ break;
+
+ case SID_CURSORUP:
+ pTabViewShell->MoveCursorRel( 0, -nRepeat, SC_FOLLOW_LINE, bSel );
+ break;
+
+ case SID_CURSORBLKUP:
+ pTabViewShell->MoveCursorArea( 0, -nRepeat, SC_FOLLOW_JUMP, bSel );
+ break;
+
+ case SID_CURSORLEFT:
+ pTabViewShell->MoveCursorRel( -nRepeat, 0, SC_FOLLOW_LINE, bSel );
+ break;
+
+ case SID_CURSORBLKLEFT:
+ pTabViewShell->MoveCursorArea( -nRepeat, 0, SC_FOLLOW_JUMP, bSel );
+ break;
+
+ case SID_CURSORRIGHT:
+ pTabViewShell->MoveCursorRel( nRepeat, 0, SC_FOLLOW_LINE, bSel );
+ break;
+
+ case SID_CURSORBLKRIGHT:
+ pTabViewShell->MoveCursorArea( nRepeat, 0, SC_FOLLOW_JUMP, bSel );
+ break;
+
+ case SID_CURSORPAGEDOWN:
+ pTabViewShell->MoveCursorPage( 0, nRepeat, SC_FOLLOW_FIX, bSel );
+ break;
+
+ case SID_CURSORPAGEUP:
+ pTabViewShell->MoveCursorPage( 0, -nRepeat, SC_FOLLOW_FIX, bSel );
+ break;
+
+ case SID_CURSORPAGERIGHT_: //XXX !!!
+ pTabViewShell->MoveCursorPage( nRepeat, 0, SC_FOLLOW_FIX, bSel );
+ break;
+
+ case SID_CURSORPAGELEFT_: //XXX !!!
+ pTabViewShell->MoveCursorPage( -nRepeat, 0, SC_FOLLOW_FIX, bSel );
+ break;
+
+ default:
+ DBG_ERROR("Unbekannte Message bei ViewShell (Cursor)");
+ return;
+ }
+
+ pTabViewShell->ShowAllCursors();
+
+ rReq.AppendItem( SfxInt16Item(FN_PARAM_1, nRepeat) );
+ rReq.AppendItem( SfxBoolItem(FN_PARAM_2, bSel) );
+ rReq.Done();
+}
+
+void ScCellShell::GetStateCursor( SfxItemSet& rSet )
+{
+}
+
+void ScCellShell::ExecuteCursorSel( SfxRequest& rReq )
+{
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlotId = rReq.GetSlot();
+ short nRepeat = 1;
+
+ if ( pReqArgs != NULL )
+ {
+ const SfxPoolItem* pItem;
+ if( IS_AVAILABLE( FN_PARAM_1, &pItem ) )
+ nRepeat = ((const SfxInt16Item*)pItem)->GetValue();
+ }
+
+ switch ( nSlotId )
+ {
+ case SID_CURSORDOWN_SEL: rReq.SetSlot( SID_CURSORDOWN ); break;
+ case SID_CURSORBLKDOWN_SEL: rReq.SetSlot( SID_CURSORBLKDOWN ); break;
+ case SID_CURSORUP_SEL: rReq.SetSlot( SID_CURSORUP ); break;
+ case SID_CURSORBLKUP_SEL: rReq.SetSlot( SID_CURSORBLKUP ); break;
+ case SID_CURSORLEFT_SEL: rReq.SetSlot( SID_CURSORLEFT ); break;
+ case SID_CURSORBLKLEFT_SEL: rReq.SetSlot( SID_CURSORBLKLEFT ); break;
+ case SID_CURSORRIGHT_SEL: rReq.SetSlot( SID_CURSORRIGHT ); break;
+ case SID_CURSORBLKRIGHT_SEL: rReq.SetSlot( SID_CURSORBLKRIGHT ); break;
+ case SID_CURSORPAGEDOWN_SEL: rReq.SetSlot( SID_CURSORPAGEDOWN ); break;
+ case SID_CURSORPAGEUP_SEL: rReq.SetSlot( SID_CURSORPAGEUP ); break;
+ case SID_CURSORPAGERIGHT_SEL: rReq.SetSlot( SID_CURSORPAGERIGHT_ ); break;
+ case SID_CURSORPAGELEFT_SEL: rReq.SetSlot( SID_CURSORPAGELEFT_ ); break;
+ default:
+ DBG_ERROR("Unbekannte Message bei ViewShell (CursorSel)");
+ return;
+ }
+ rReq.AppendItem( SfxInt16Item(FN_PARAM_1, nRepeat ) );
+ rReq.AppendItem( SfxBoolItem(FN_PARAM_2, TRUE) );
+ ExecuteSlot( rReq, GetInterface() );
+}
+
+void ScCellShell::ExecuteMove( SfxRequest& rReq )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ USHORT nSlotId = rReq.GetSlot();
+
+ if(nSlotId != SID_CURSORTOPOFSCREEN && nSlotId != SID_CURSORENDOFSCREEN)
+ pTabViewShell->ExecuteInputDirect();
+ switch ( nSlotId )
+ {
+ case SID_NEXT_TABLE:
+ pTabViewShell->SelectNextTab( 1 );
+ break;
+
+ case SID_PREV_TABLE:
+ pTabViewShell->SelectNextTab( -1 );
+ break;
+
+ // Cursorbewegungen in Bloecken gehen nicht von Basic aus,
+ // weil das ScSbxRange-Objekt bei Eingaben die Markierung veraendert
+
+ case SID_NEXT_UNPROTECT:
+ pTabViewShell->FindNextUnprot( FALSE, !rReq.IsAPI() );
+ break;
+
+ case SID_PREV_UNPROTECT:
+ pTabViewShell->FindNextUnprot( TRUE, !rReq.IsAPI() );
+ break;
+
+ case SID_CURSORENTERUP:
+ if (rReq.IsAPI())
+ pTabViewShell->MoveCursorRel( 0, -1, SC_FOLLOW_LINE, FALSE );
+ else
+ pTabViewShell->MoveCursorEnter( TRUE );
+ break;
+
+ case SID_CURSORENTERDOWN:
+ if (rReq.IsAPI())
+ pTabViewShell->MoveCursorRel( 0, 1, SC_FOLLOW_LINE, FALSE );
+ else
+ pTabViewShell->MoveCursorEnter( FALSE );
+ break;
+
+ case SID_SELECT_COL:
+ pTabViewShell->MarkColumns();
+ break;
+
+ case SID_SELECT_ROW:
+ pTabViewShell->MarkRows();
+ break;
+
+ case SID_SELECT_NONE:
+ pTabViewShell->Unmark();
+ break;
+
+ case SID_ALIGNCURSOR:
+ pTabViewShell->AlignToCursor( GetViewData()->GetCurX(), GetViewData()->GetCurY(), SC_FOLLOW_JUMP );
+ break;
+
+ case SID_MARKDATAAREA:
+ pTabViewShell->MarkDataArea();
+ break;
+
+ case SID_SETINPUTMODE:
+ SC_MOD()->SetInputMode( SC_INPUT_TABLE );
+ break;
+
+ case SID_CURSORTOPOFSCREEN:
+ pTabViewShell->MoveCursorScreen( 0, -1, SC_FOLLOW_LINE, FALSE );
+ break;
+
+ case SID_CURSORENDOFSCREEN:
+ pTabViewShell->MoveCursorScreen( 0, 1, SC_FOLLOW_LINE, FALSE );
+ break;
+
+ default:
+ DBG_ERROR("Unbekannte Message bei ViewShell (Cursor)");
+ return;
+ }
+
+ rReq.Done();
+}
+
+void ScCellShell::ExecutePageSel( SfxRequest& rReq )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ USHORT nSlotId = rReq.GetSlot();
+ switch ( nSlotId )
+ {
+ case SID_CURSORHOME_SEL: rReq.SetSlot( SID_CURSORHOME ); break;
+ case SID_CURSOREND_SEL: rReq.SetSlot( SID_CURSOREND ); break;
+ case SID_CURSORTOPOFFILE_SEL: rReq.SetSlot( SID_CURSORTOPOFFILE ); break;
+ case SID_CURSORENDOFFILE_SEL: rReq.SetSlot( SID_CURSORENDOFFILE ); break;
+ default:
+ DBG_ERROR("Unbekannte Message bei ViewShell (ExecutePageSel)");
+ return;
+ }
+ rReq.AppendItem( SfxBoolItem(FN_PARAM_2, TRUE) );
+ ExecuteSlot( rReq, GetInterface() );
+}
+
+void ScCellShell::ExecutePage( SfxRequest& rReq )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlotId = rReq.GetSlot();
+ BOOL bSel = FALSE;
+
+ if ( pReqArgs != NULL )
+ {
+ const SfxPoolItem* pItem;
+ if( IS_AVAILABLE( FN_PARAM_2, &pItem ) )
+ bSel = ((const SfxBoolItem*)pItem)->GetValue();
+ }
+
+ pTabViewShell->ExecuteInputDirect();
+ switch ( nSlotId )
+ {
+ case SID_CURSORHOME:
+ pTabViewShell->MoveCursorEnd( -1, 0, SC_FOLLOW_LINE, bSel );
+ break;
+
+ case SID_CURSOREND:
+ pTabViewShell->MoveCursorEnd( 1, 0, SC_FOLLOW_JUMP, bSel );
+ break;
+
+ case SID_CURSORTOPOFFILE:
+ pTabViewShell->MoveCursorEnd( -1, -1, SC_FOLLOW_LINE, bSel );
+ break;
+
+ case SID_CURSORENDOFFILE:
+ pTabViewShell->MoveCursorEnd( 1, 1, SC_FOLLOW_JUMP, bSel );
+ break;
+
+ default:
+ DBG_ERROR("Unbekannte Message bei ViewShell (ExecutePage)");
+ return;
+ }
+
+ rReq.AppendItem( SfxBoolItem(FN_PARAM_2, bSel) );
+ rReq.Done();
+}
+
+
+
+
diff --git a/sc/source/ui/view/colrowba.cxx b/sc/source/ui/view/colrowba.cxx
new file mode 100644
index 000000000000..2c658013cc3f
--- /dev/null
+++ b/sc/source/ui/view/colrowba.cxx
@@ -0,0 +1,716 @@
+/*************************************************************************
+ *
+ * $RCSfile: colrowba.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX
+//#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+//#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX
+#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+//#define _SFX_DOCFILT_HXX
+#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX
+
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+#define _SFXSTYLE_HXX //*
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+//#define _SVDRAW_HXX
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+//#define _SDR_NOUNDO
+#define _SDR_NOXOUTDEV
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+//svdraw.hxx
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+
+#define _SDR_NOEXTDEV // ExtOutputDevice
+//#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+//#define _SDR_NOTEXTOBJ // SdrTextObj
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+//#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+//#define _SDR_NOOLE2OBJ // SdrOle2Obj
+//#define _SVDLAYER_HXX
+//#define _SVDATTR_HXX
+//#define _SVDIO_HXX
+#define _SVBOXITM_HXX
+#define _SVDEC_HXX
+#define _SVDXOUT_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdtrans.hxx>
+
+#include "colrowba.hxx"
+#include "document.hxx"
+#include "scmod.hxx"
+#include "tabvwsh.hxx"
+#include "appoptio.hxx"
+#include "globstr.hrc"
+
+// STATIC DATA -----------------------------------------------------------
+
+//==================================================================
+
+String lcl_MetricString( long nTwips, const String& rText )
+{
+ if ( nTwips <= 0 )
+ return ScGlobal::GetRscString(STR_TIP_HIDE);
+ else
+ {
+ FieldUnit eUserMet = SC_MOD()->GetAppOptions().GetAppMetric();
+
+ long nUserVal = MetricField::ConvertValue( nTwips*100, 1, 2, FUNIT_TWIP, eUserMet );
+ String aNum = ScGlobal::pScInternational->GetNum( nUserVal, 2 );
+
+ String aStr = rText;
+ aStr += ' ';
+ aStr += aNum;
+ aStr += ' ';
+ aStr += SdrFormatter::GetUnitStr(eUserMet);
+
+ return aStr;
+ }
+}
+
+//==================================================================
+
+ScColBar::ScColBar( Window* pParent, ScViewData* pData, ScHSplitPos eWhichPos,
+ ScHeaderFunctionSet* pFunc, ScHeaderSelectionEngine* pEng ) :
+ ScHeaderControl( pParent, pEng, MAXCOL+1, HDR_HORIZONTAL ),
+ pViewData( pData ),
+ eWhich( eWhichPos ),
+ pFuncSet( pFunc ),
+ pSelEngine( pEng )
+{
+ Show();
+}
+
+ScColBar::~ScColBar()
+{
+}
+
+USHORT ScColBar::GetPos()
+{
+ return pViewData->GetPosX(eWhich);
+}
+
+USHORT ScColBar::GetEntrySize( USHORT nEntryNo )
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ if ( pDoc->GetColFlags( nEntryNo, nTab ) & CR_HIDDEN )
+ return 0;
+ else
+ return (USHORT) ( pDoc->GetColWidth( nEntryNo, nTab ) * pViewData->GetPPTX() );
+}
+
+String ScColBar::GetEntryText( USHORT nEntryNo )
+{
+ return ColToAlpha( nEntryNo );
+}
+
+void ScColBar::SetEntrySize( USHORT nPos, USHORT nNewSize )
+{
+ USHORT nSizeTwips;
+ ScSizeMode eMode = SC_SIZE_DIRECT;
+ if (nNewSize>0 && nNewSize<10) nNewSize=10; // (Pixel)
+
+ if ( nNewSize == HDR_SIZE_OPTIMUM )
+ {
+ nSizeTwips = STD_EXTRA_WIDTH;
+ eMode = SC_SIZE_OPTIMAL;
+ }
+ else
+ nSizeTwips = (USHORT) ( nNewSize / pViewData->GetPPTX() );
+
+ ScMarkData& rMark = pViewData->GetMarkData();
+// USHORT nTab = pViewData->GetTabNo();
+
+ USHORT* pRanges = new USHORT[MAXCOL+1];
+ USHORT nRangeCnt = 0;
+ if ( rMark.IsColumnMarked( nPos ) )
+ {
+ USHORT nStart = 0;
+ while (nStart<=MAXCOL)
+ {
+ while (nStart<MAXCOL && !rMark.IsColumnMarked(nStart))
+ ++nStart;
+ if (rMark.IsColumnMarked(nStart))
+ {
+ USHORT nEnd = nStart;
+ while (nEnd<MAXCOL && rMark.IsColumnMarked(nEnd))
+ ++nEnd;
+ if (!rMark.IsColumnMarked(nEnd))
+ --nEnd;
+ pRanges[2*nRangeCnt ] = nStart;
+ pRanges[2*nRangeCnt+1] = nEnd;
+ ++nRangeCnt;
+ nStart = nEnd+1;
+ }
+ else
+ nStart = MAXCOL+1;
+ }
+ }
+ else
+ {
+ pRanges[0] = nPos;
+ pRanges[1] = nPos;
+ nRangeCnt = 1;
+ }
+
+ pViewData->GetView()->SetWidthOrHeight( TRUE, nRangeCnt, pRanges, eMode, nSizeTwips );
+ delete[] pRanges;
+}
+
+void ScColBar::HideEntries( USHORT nStart, USHORT nEnd )
+{
+ USHORT nRange[2];
+ nRange[0] = nStart;
+ nRange[1] = nEnd;
+ pViewData->GetView()->SetWidthOrHeight( TRUE, 1, nRange, SC_SIZE_DIRECT, 0 );
+}
+
+void ScColBar::SetMarking( BOOL bSet )
+{
+ pViewData->GetMarkData().SetMarking( bSet );
+ if (!bSet)
+ {
+ pFuncSet->SetAnchorFlag(FALSE);
+ pViewData->GetView()->UpdateAutoFillMark();
+ }
+}
+
+void ScColBar::SelectWindow()
+{
+ ScTabViewShell* pViewSh = pViewData->GetViewShell();
+
+ pViewSh->SetActive(); // Appear und SetViewFrame
+ pViewSh->DrawDeselectAll();
+
+ ScSplitPos eActive = pViewData->GetActivePart();
+ if (eWhich==SC_SPLIT_LEFT)
+ {
+ if (eActive==SC_SPLIT_TOPRIGHT) eActive=SC_SPLIT_TOPLEFT;
+ if (eActive==SC_SPLIT_BOTTOMRIGHT) eActive=SC_SPLIT_BOTTOMLEFT;
+ }
+ else
+ {
+ if (eActive==SC_SPLIT_TOPLEFT) eActive=SC_SPLIT_TOPRIGHT;
+ if (eActive==SC_SPLIT_BOTTOMLEFT) eActive=SC_SPLIT_BOTTOMRIGHT;
+ }
+ pViewSh->ActivatePart( eActive );
+
+ pFuncSet->SetColumn( TRUE );
+ pFuncSet->SetWhich( eActive );
+
+ pViewSh->ActiveGrabFocus();
+}
+
+BOOL ScColBar::IsDisabled()
+{
+ ScModule* pScMod = SC_MOD();
+ return pScMod->IsFormulaMode() || pScMod->IsModalMode();
+}
+
+BOOL ScColBar::ResizeAllowed()
+{
+ return !pViewData->HasEditView( pViewData->GetActivePart() );
+}
+
+void ScColBar::DrawInvert( long nDragPos )
+{
+ Rectangle aRect( nDragPos,0, nDragPos+HDR_SLIDERSIZE-1,GetOutputSizePixel().Width()-1 );
+ Update();
+ Invert(aRect);
+
+ pViewData->GetView()->InvertVertical(eWhich,nDragPos);
+}
+
+String ScColBar::GetDragHelp( long nVal )
+{
+ long nTwips = (long) ( nVal / pViewData->GetPPTX() );
+ return lcl_MetricString( nTwips, ScGlobal::GetRscString(STR_TIP_WIDTH) );
+}
+
+//==================================================================
+
+ScRowBar::ScRowBar( Window* pParent, ScViewData* pData, ScVSplitPos eWhichPos,
+ ScHeaderFunctionSet* pFunc, ScHeaderSelectionEngine* pEng ) :
+ ScHeaderControl( pParent, pEng, MAXROW+1, HDR_VERTICAL ),
+ pViewData( pData ),
+ eWhich( eWhichPos ),
+ pFuncSet( pFunc ),
+ pSelEngine( pEng )
+{
+ Show();
+}
+
+ScRowBar::~ScRowBar()
+{
+}
+
+USHORT ScRowBar::GetPos()
+{
+ return pViewData->GetPosY(eWhich);
+}
+
+USHORT ScRowBar::GetEntrySize( USHORT nEntryNo )
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ if ( pDoc->GetRowFlags( nEntryNo, nTab ) & CR_HIDDEN )
+ return 0;
+ else
+ return (USHORT) ( pDoc->GetRowHeight( nEntryNo, nTab ) * pViewData->GetPPTY() );
+}
+
+String ScRowBar::GetEntryText( USHORT nEntryNo )
+{
+ return String::CreateFromInt32( nEntryNo + 1 );
+}
+
+void ScRowBar::SetEntrySize( USHORT nPos, USHORT nNewSize )
+{
+ USHORT nSizeTwips;
+ ScSizeMode eMode = SC_SIZE_DIRECT;
+ if (nNewSize>0 && nNewSize<10) nNewSize=10; // (Pixel)
+
+ if ( nNewSize == HDR_SIZE_OPTIMUM )
+ {
+ nSizeTwips = 0;
+ eMode = SC_SIZE_OPTIMAL;
+ }
+ else
+ nSizeTwips = (USHORT) ( nNewSize / pViewData->GetPPTY() );
+
+ ScMarkData& rMark = pViewData->GetMarkData();
+// USHORT nTab = pViewData->GetTabNo();
+
+ USHORT* pRanges = new USHORT[MAXROW+1];
+ USHORT nRangeCnt = 0;
+ if ( rMark.IsRowMarked( nPos ) )
+ {
+ USHORT nStart = 0;
+ while (nStart<=MAXROW)
+ {
+ while (nStart<MAXROW && !rMark.IsRowMarked(nStart))
+ ++nStart;
+ if (rMark.IsRowMarked(nStart))
+ {
+ USHORT nEnd = nStart;
+ while (nEnd<MAXROW && rMark.IsRowMarked(nEnd))
+ ++nEnd;
+ if (!rMark.IsRowMarked(nEnd))
+ --nEnd;
+ pRanges[2*nRangeCnt ] = nStart;
+ pRanges[2*nRangeCnt+1] = nEnd;
+ ++nRangeCnt;
+ nStart = nEnd+1;
+ }
+ else
+ nStart = MAXROW+1;
+ }
+ }
+ else
+ {
+ pRanges[0] = nPos;
+ pRanges[1] = nPos;
+ nRangeCnt = 1;
+ }
+
+ pViewData->GetView()->SetWidthOrHeight( FALSE, nRangeCnt, pRanges, eMode, nSizeTwips );
+ delete[] pRanges;
+}
+
+void ScRowBar::HideEntries( USHORT nStart, USHORT nEnd )
+{
+ USHORT nRange[2];
+ nRange[0] = nStart;
+ nRange[1] = nEnd;
+ pViewData->GetView()->SetWidthOrHeight( FALSE, 1, nRange, SC_SIZE_DIRECT, 0 );
+}
+
+void ScRowBar::SetMarking( BOOL bSet )
+{
+ pViewData->GetMarkData().SetMarking( bSet );
+ if (!bSet)
+ {
+ pFuncSet->SetAnchorFlag(FALSE);
+ pViewData->GetView()->UpdateAutoFillMark();
+ }
+}
+
+void ScRowBar::SelectWindow()
+{
+ ScTabViewShell* pViewSh = pViewData->GetViewShell();
+
+ pViewSh->SetActive(); // Appear und SetViewFrame
+ pViewSh->DrawDeselectAll();
+
+ ScSplitPos eActive = pViewData->GetActivePart();
+ if (eWhich==SC_SPLIT_TOP)
+ {
+ if (eActive==SC_SPLIT_BOTTOMLEFT) eActive=SC_SPLIT_TOPLEFT;
+ if (eActive==SC_SPLIT_BOTTOMRIGHT) eActive=SC_SPLIT_TOPRIGHT;
+ }
+ else
+ {
+ if (eActive==SC_SPLIT_TOPLEFT) eActive=SC_SPLIT_BOTTOMLEFT;
+ if (eActive==SC_SPLIT_TOPRIGHT) eActive=SC_SPLIT_BOTTOMRIGHT;
+ }
+ pViewSh->ActivatePart( eActive );
+
+ pFuncSet->SetColumn( FALSE );
+ pFuncSet->SetWhich( eActive );
+
+ pViewSh->ActiveGrabFocus();
+}
+
+BOOL ScRowBar::IsDisabled()
+{
+ ScModule* pScMod = SC_MOD();
+ return pScMod->IsFormulaMode() || pScMod->IsModalMode();
+}
+
+BOOL ScRowBar::ResizeAllowed()
+{
+ return !pViewData->HasEditView( pViewData->GetActivePart() );
+}
+
+void ScRowBar::DrawInvert( long nDragPos )
+{
+ Rectangle aRect( 0,nDragPos, GetOutputSizePixel().Width()-1,nDragPos+HDR_SLIDERSIZE-1 );
+ Update();
+ Invert(aRect);
+
+ pViewData->GetView()->InvertHorizontal(eWhich,nDragPos);
+}
+
+String ScRowBar::GetDragHelp( long nVal )
+{
+ long nTwips = (long) ( nVal / pViewData->GetPPTY() );
+ return lcl_MetricString( nTwips, ScGlobal::GetRscString(STR_TIP_HEIGHT) );
+}
+
+// GetHiddenCount ist nur fuer Zeilen ueberladen
+
+USHORT ScRowBar::GetHiddenCount( USHORT nEntryNo )
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ return pDoc->GetHiddenRowCount( nEntryNo, nTab );
+}
+
+
+
diff --git a/sc/source/ui/view/dbfunc.cxx b/sc/source/ui/view/dbfunc.cxx
new file mode 100644
index 000000000000..1cf910eba94e
--- /dev/null
+++ b/sc/source/ui/view/dbfunc.cxx
@@ -0,0 +1,505 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbfunc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <offmgr/app.hxx>
+#include <offmgr/sbaobj.hxx>
+#include <offmgr/sbadb.hxx>
+#include <sfx2/bindings.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "dbfunc.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "attrib.hxx"
+#include "patattr.hxx"
+#include "sc.hrc"
+#include "undodat.hxx"
+#include "dbcolect.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "dbdocfun.hxx"
+
+#ifndef _SV_WAITOBJ_HXX //autogen
+#include <vcl/waitobj.hxx>
+#endif
+
+// STATIC DATA -----------------------------------------------------------
+
+//==================================================================
+
+ScDBFunc::ScDBFunc( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell ) :
+ ScViewFunc( pParent, rDocSh, pViewShell )
+{
+}
+
+ScDBFunc::ScDBFunc( Window* pParent, const ScDBFunc& rDBFunc, ScTabViewShell* pViewShell ) :
+ ScViewFunc( pParent, rDBFunc, pViewShell )
+{
+}
+
+ScDBFunc::~ScDBFunc()
+{
+}
+
+//
+// Hilfsfunktionen
+//
+
+void ScDBFunc::GotoDBArea( const String& rDBName )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDBCollection* pDBCol = pDoc->GetDBCollection();
+
+ USHORT nFoundAt = 0;
+ if ( pDBCol->SearchName( rDBName, nFoundAt ) )
+ {
+ ScDBData* pData = (*pDBCol)[nFoundAt];
+ DBG_ASSERT( pData, "GotoDBArea: Datenbankbereich nicht gefunden!" );
+
+ if ( pData )
+ {
+ USHORT nTab = 0;
+ USHORT nStartCol = 0;
+ USHORT nStartRow = 0;
+ USHORT nEndCol = 0;
+ USHORT nEndRow = 0;
+
+ pData->GetArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow );
+ SetTabNo( nTab );
+
+ MoveCursorAbs( nStartCol, nStartRow, ScFollowMode( SC_FOLLOW_JUMP ),
+ FALSE, FALSE ); // bShift,bControl
+ DoneBlockMode();
+ InitBlockMode( nStartCol, nStartRow, nTab );
+ MarkCursor( nEndCol, nEndRow, nTab );
+ SelectionChanged();
+ }
+ }
+}
+
+// aktuellen Datenbereich fuer Sortieren / Filtern suchen
+
+ScDBData* ScDBFunc::GetDBData( BOOL bMark, ScGetDBMode eMode )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDBData* pData = NULL;
+ ScRange aRange;
+ if ( GetViewData()->GetSimpleArea(aRange) )
+ pData = pDocSh->GetDBData( aRange, eMode, FALSE );
+ else if ( eMode != SC_DB_OLD )
+ pData = pDocSh->GetDBData(
+ ScRange( GetViewData()->GetCurX(), GetViewData()->GetCurY(),
+ GetViewData()->GetTabNo() ),
+ eMode, FALSE );
+
+ if ( pData && bMark )
+ {
+ ScRange aFound;
+ pData->GetArea(aFound);
+ MarkRange( aFound, FALSE );
+ }
+ return pData;
+}
+
+// Datenbankbereiche aendern (Dialog)
+
+void ScDBFunc::NotifyCloseDbNameDlg( const ScDBCollection& rNewColl, const List& rDelAreaList )
+{
+ const BOOL bRecord = TRUE;
+
+ ScDocShell* pDocShell = GetViewData()->GetDocShell();
+ ScDocShellModificator aModificator( *pDocShell );
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScDBCollection* pOldColl = pDoc->GetDBCollection();
+ ScDBCollection* pUndoColl = NULL;
+ ScDBCollection* pRedoColl = NULL;
+
+ long nDelCount = rDelAreaList.Count();
+ for (long nDelPos=0; nDelPos<nDelCount; nDelPos++)
+ {
+ ScRange* pEntry = (ScRange*) rDelAreaList.GetObject(nDelPos);
+
+ if ( pEntry )
+ {
+ ScAddress& rStart = pEntry->aStart;
+ ScAddress& rEnd = pEntry->aEnd;
+ pDocShell->DBAreaDeleted( rStart.Tab(),
+ rStart.Col(), rStart.Row(),
+ rEnd.Col(), rEnd.Row() );
+
+ // Targets am SBA abmelden nicht mehr noetig
+ }
+ }
+
+ if (bRecord)
+ pUndoColl = new ScDBCollection( *pOldColl );
+
+ // neue Targets am SBA anmelden nicht mehr noetig
+
+ pDoc->CompileDBFormula( TRUE ); // CreateFormulaString
+ pDoc->SetDBCollection( new ScDBCollection( rNewColl ) );
+ pDoc->CompileDBFormula( FALSE ); // CompileFormulaString
+ pOldColl = NULL;
+ pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID );
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_DBAREAS_CHANGED ) );
+
+ if (bRecord)
+ {
+ pRedoColl = new ScDBCollection( rNewColl );
+ pDocShell->GetUndoManager()->AddUndoAction(
+ new ScUndoDBData( pDocShell, pUndoColl, pRedoColl ) );
+ }
+}
+
+//
+// wirkliche Funktionen
+//
+
+// Sortieren
+
+void ScDBFunc::UISort( const ScSortParam& rSortParam, BOOL bRecord )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDBData* pDBData = pDoc->GetDBAtArea( nTab, rSortParam.nCol1, rSortParam.nRow1,
+ rSortParam.nCol2, rSortParam.nRow2 );
+ if (!pDBData)
+ {
+ DBG_ERROR( "Sort: keine DBData" );
+ return;
+ }
+
+ ScSubTotalParam aSubTotalParam;
+ pDBData->GetSubTotalParam( aSubTotalParam );
+ if (aSubTotalParam.bGroupActive[0] && !aSubTotalParam.bRemoveOnly)
+ {
+ // Subtotals wiederholen, mit neuer Sortierung
+
+ ScSubTotalParam aSubTotalParam;
+ pDBData->GetSubTotalParam( aSubTotalParam );
+ DoSubTotals( aSubTotalParam, bRecord, &rSortParam );
+ }
+ else
+ {
+ Sort( rSortParam, bRecord ); // nur sortieren
+ }
+}
+
+void ScDBFunc::Sort( const ScSortParam& rSortParam, BOOL bRecord, BOOL bPaint )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDBDocFunc aDBDocFunc( *pDocSh );
+ BOOL bSuccess = aDBDocFunc.Sort( nTab, rSortParam, bRecord, bPaint, FALSE );
+ if ( bSuccess && !rSortParam.bInplace )
+ {
+ // Ziel markieren
+ ScRange aDestRange( rSortParam.nDestCol, rSortParam.nDestRow, rSortParam.nDestTab,
+ rSortParam.nDestCol + rSortParam.nCol2 - rSortParam.nCol1,
+ rSortParam.nDestRow + rSortParam.nRow2 - rSortParam.nRow1,
+ rSortParam.nDestTab );
+ MarkRange( aDestRange );
+ }
+}
+
+// Filtern
+
+void ScDBFunc::Query( const ScQueryParam& rQueryParam, const ScRange* pAdvSource, BOOL bRecord )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDBDocFunc aDBDocFunc( *pDocSh );
+ BOOL bSuccess = aDBDocFunc.Query( nTab, rQueryParam, pAdvSource, bRecord, FALSE );
+
+ if (bSuccess)
+ {
+ BOOL bCopy = !rQueryParam.bInplace;
+ if (bCopy)
+ {
+ // Zielbereich markieren (DB-Bereich wurde ggf. angelegt)
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScDBData* pDestData = pDoc->GetDBAtCursor(
+ rQueryParam.nDestCol, rQueryParam.nDestRow,
+ rQueryParam.nDestTab, TRUE );
+ if (pDestData)
+ {
+ ScRange aDestRange;
+ pDestData->GetArea(aDestRange);
+ MarkRange( aDestRange );
+ }
+ }
+
+ if (!bCopy)
+ UpdateScrollBars();
+
+ GetViewData()->GetViewShell()->GetViewFrame()->GetBindings().Invalidate( SID_UNFILTER );
+ }
+}
+
+// Autofilter-Knoepfe ein-/ausblenden
+
+void ScDBFunc::ToggleAutoFilter()
+{
+ ScDocShellModificator aModificator( *(GetViewData()->GetDocShell()) );
+
+ ScQueryParam aParam;
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDBData* pDBData = GetDBData( FALSE );
+
+ pDBData->SetByRow( TRUE ); //! Undo, vorher abfragen ??
+ pDBData->GetQueryParam( aParam );
+
+
+ USHORT nCol;
+ USHORT nRow = aParam.nRow1;
+ USHORT nTab = GetViewData()->GetTabNo();
+ INT16 nFlag;
+ BOOL bHasAuto = TRUE;
+ BOOL bHeader = pDBData->HasHeader();
+ BOOL bPaint = FALSE;
+
+ //! stattdessen aus DB-Bereich abfragen?
+
+ for (nCol=aParam.nCol1; nCol<=aParam.nCol2 && bHasAuto; nCol++)
+ {
+ nFlag = ((ScMergeFlagAttr*) pDoc->
+ GetAttr( nCol, nRow, nTab, ATTR_MERGE_FLAG ))->GetValue();
+
+ if ( (nFlag & SC_MF_AUTO) == 0 )
+ bHasAuto = FALSE;
+ }
+
+ if (bHasAuto) // aufheben
+ {
+ // Filterknoepfe ausblenden
+
+ for (nCol=aParam.nCol1; nCol<=aParam.nCol2; nCol++)
+ {
+ nFlag = ((ScMergeFlagAttr*) pDoc->
+ GetAttr( nCol, nRow, nTab, ATTR_MERGE_FLAG ))->GetValue();
+ pDoc->ApplyAttr( nCol, nRow, nTab, ScMergeFlagAttr( nFlag & ~SC_MF_AUTO ) );
+ }
+
+ pDBData->SetAutoFilter(FALSE);
+
+ // Filter aufheben (incl. Paint / Undo)
+
+ USHORT nEC = aParam.GetEntryCount();
+ for (USHORT i=0; i<nEC; i++)
+ aParam.GetEntry(i).bDoQuery = FALSE;
+ aParam.bDuplicate = TRUE;
+ Query( aParam, NULL, TRUE );
+
+ bPaint = TRUE;
+ }
+ else // Filterknoepfe einblenden
+ {
+ if ( !pDoc->IsBlockEmpty( nTab,
+ aParam.nCol1, aParam.nRow1,
+ aParam.nCol2, aParam.nRow2 ) )
+ {
+ if (!bHeader)
+ {
+ if ( MessBox( GetViewData()->GetDialogParent(), WinBits(WB_YES_NO | WB_DEF_YES),
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_0 ), // "StarCalc"
+ ScGlobal::GetRscString( STR_MSSG_MAKEAUTOFILTER_0 ) // Koepfe aus erster Zeile?
+ ).Execute() == RET_YES )
+ {
+ pDBData->SetHeader( TRUE ); //! Undo ??
+ bHeader = TRUE;
+ }
+ }
+
+ pDBData->SetAutoFilter(TRUE);
+
+ for (nCol=aParam.nCol1; nCol<=aParam.nCol2; nCol++)
+ {
+ nFlag = ((ScMergeFlagAttr*) pDoc->
+ GetAttr( nCol, nRow, nTab, ATTR_MERGE_FLAG ))->GetValue();
+ pDoc->ApplyAttr( nCol, nRow, nTab, ScMergeFlagAttr( nFlag | SC_MF_AUTO ) );
+ }
+ GetViewData()->GetDocShell()->PostPaint( aParam.nCol1, nRow, nTab,
+ aParam.nCol2, nRow, nTab,
+ PAINT_GRID );
+ bPaint = TRUE;
+ }
+ else
+ {
+ ErrorBox aErrorBox( GetViewData()->GetDialogParent(), WinBits( WB_OK | WB_DEF_OK ),
+ ScGlobal::GetRscString( STR_ERR_AUTOFILTER ) );
+ aErrorBox.Execute();
+ }
+ }
+
+ if ( bPaint )
+ {
+ aModificator.SetDocumentModified();
+
+ SfxBindings& rBindings = GetViewData()->GetViewShell()->
+ GetViewFrame()->GetBindings();
+ rBindings.Invalidate( SID_AUTO_FILTER );
+ rBindings.Invalidate( SID_AUTOFILTER_HIDE );
+ }
+}
+
+// nur ausblenden, keine Daten veraendern
+
+void ScDBFunc::HideAutoFilter()
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+
+ ScQueryParam aParam;
+ ScDBData* pDBData = GetDBData( FALSE );
+
+ USHORT nTab, nCol1, nRow1, nCol2, nRow2;
+ pDBData->GetArea(nTab, nCol1, nRow1, nCol2, nRow2);
+
+ for (USHORT nCol=nCol1; nCol<=nCol2; nCol++)
+ {
+ INT16 nFlag = ((ScMergeFlagAttr*) pDoc->
+ GetAttr( nCol, nRow1, nTab, ATTR_MERGE_FLAG ))->GetValue();
+ pDoc->ApplyAttr( nCol, nRow1, nTab, ScMergeFlagAttr( nFlag & ~SC_MF_AUTO ) );
+ }
+
+ pDBData->SetAutoFilter(FALSE);
+
+ GetViewData()->GetDocShell()->PostPaint( nCol1,nRow1,nTab, nCol2,nRow1,nTab, PAINT_GRID );
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_AUTO_FILTER );
+ rBindings.Invalidate( SID_AUTOFILTER_HIDE );
+}
+
+//
+// Datenbank - Import
+//
+
+void ScDBFunc::StartQuerySh( const ScImportParam& rParam )
+{
+ SbaObject* pSbaObject = OFF_APP()->GetSbaObject();
+ DBG_ASSERT(pSbaObject != NULL,"ScDBFunc::StartQuerySh: pSbaObject == NULL");
+
+ String aDBName;
+ String aLogicName; // Tabellen-/Query-Name
+ String aStatement; // SQL-String
+ BOOL bSql = FALSE;
+ BOOL bNative = FALSE;
+ DBObject eObj = dbTable;
+
+ if (rParam.bImport) // alte Abfrage wieder anzeigen
+ {
+ aDBName = rParam.aDBName;
+//! bNative = rParam.bNative; //! Native gibt momentan Aerger ??!??!?!
+ bSql = rParam.bSql;
+ if ( bSql )
+ aStatement = rParam.aStatement; // Statement direkt
+ else
+ aLogicName = rParam.aStatement; // Name (Tabelle/Abfrage)
+
+ eObj = (DBObject) rParam.nType; // Unterscheidung Tabelle/Abfrage
+ }
+ else // war nix im Parameter -> Adressbuch
+ {
+ aDBName = pSbaObject->GetAddrDBName();
+ aLogicName = pSbaObject->GetAddrTableName();
+ }
+
+ SbaDatabaseRef pDatabase = pSbaObject->GetDatabase(aDBName, TRUE); // TRUE: Fehlermeldungen
+ if (pDatabase.Is())
+ {
+ if ( bSql )
+ pDatabase->ShowStatement(aStatement, bNative);
+ else
+ pDatabase->ShowDBDef(eObj, aLogicName);
+ }
+}
+
+// Re-Import
+
+BOOL ScDBFunc::ImportData( const ScImportParam& rParam, BOOL bRecord )
+{
+ BOOL bSuccess = FALSE;
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ if ( !pDoc->IsBlockEditable( GetViewData()->GetTabNo(), rParam.nCol1,rParam.nRow1,
+ rParam.nCol2,rParam.nRow2 ) )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ ScDBDocFunc aDBDocFunc( *GetViewData()->GetDocShell() );
+ return aDBDocFunc.DoImport( GetViewData()->GetTabNo(), rParam, NULL, bRecord );
+}
+
+
+
diff --git a/sc/source/ui/view/dbfunc2.cxx b/sc/source/ui/view/dbfunc2.cxx
new file mode 100644
index 000000000000..70ecbb5977b0
--- /dev/null
+++ b/sc/source/ui/view/dbfunc2.cxx
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbfunc2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+
+#include "dbfunc.hxx"
+#include "docsh.hxx"
+#include "global.hxx"
+#include "document.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+
+#ifdef WNT
+#pragma optimize ( "", off )
+#endif
+
+//==================================================================
+
+class ScDrawLayer;
+class ScChartCollection;
+
+// wg. CLOOKs in dbfunc4:
+USHORT DoUpdateCharts( ScAddress aPos, ScDocument* pDoc,
+ Window* pActiveWin, BOOL bAllCharts );
+
+
+void ScDBFunc::UpdateCharts( BOOL bAllCharts )
+{
+ USHORT nFound = 0;
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+
+ if ( pDoc->GetDrawLayer() )
+ nFound = DoUpdateCharts( ScAddress( pViewData->GetCurX(),
+ pViewData->GetCurY(),
+ pViewData->GetTabNo()),
+ pDoc,
+ GetActiveWin(),
+ bAllCharts );
+
+ if ( !nFound && !bAllCharts )
+ ErrorMessage(STR_NOCHARTATCURSOR);
+}
+
+
+
+
+
+
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
new file mode 100644
index 000000000000..64f96ca22ba5
--- /dev/null
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -0,0 +1,851 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbfunc3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/bindings.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/sound.hxx>
+#include <vcl/waitobj.hxx>
+
+#include "dbfunc.hxx"
+#include "global.hxx"
+#include "globstr.hrc"
+#include "sc.hrc"
+#include "undotab.hxx"
+#include "undodat.hxx"
+#include "dbcolect.hxx"
+#include "rangenam.hxx"
+#include "rangeutl.hxx"
+#include "docsh.hxx"
+#include "olinetab.hxx"
+#include "consoli.hxx"
+#include "olinefun.hxx"
+#include "dpobject.hxx"
+#include "dpsave.hxx"
+#include "dbdocfun.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+
+//==================================================================
+
+//
+// Outliner
+//
+
+void lcl_InvalidateOutliner()
+{
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_OUTLINE_SHOW );
+ rBindings.Invalidate( SID_OUTLINE_HIDE );
+ rBindings.Invalidate( SID_OUTLINE_REMOVE );
+
+ rBindings.Invalidate( SID_STATUS_SUM ); // wegen ein-/ausblenden
+ rBindings.Invalidate( SID_ATTR_SIZE );
+}
+
+// Outline-Gruppierung erzeugen
+
+void ScDBFunc::MakeOutline( BOOL bColumns, BOOL bRecord )
+{
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScOutlineDocFunc aFunc(*pDocSh);
+ aFunc.MakeOutline( aRange, bColumns, bRecord, FALSE );
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+}
+
+// Outline-Gruppierung loeschen
+
+void ScDBFunc::RemoveOutline( BOOL bColumns, BOOL bRecord )
+{
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScOutlineDocFunc aFunc(*pDocSh);
+ aFunc.RemoveOutline( aRange, bColumns, bRecord, FALSE );
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+}
+
+// Menue-Status: Outlines loeschen
+
+void ScDBFunc::TestRemoveOutline( BOOL& rCol, BOOL& rRow )
+{
+ BOOL bColFound = FALSE;
+ BOOL bRowFound = FALSE;
+
+ USHORT nStartCol, nStartRow, nStartTab;
+ USHORT nEndCol, nEndRow, nEndTab;
+ if (GetViewData()->GetSimpleArea(nStartCol,nStartRow,nStartTab,nEndCol,nEndRow,nEndTab))
+ {
+ USHORT nTab = nStartTab;
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (pTable)
+ {
+ ScOutlineArray* pArray;
+ ScOutlineEntry* pEntry;
+ USHORT nStart;
+ USHORT nEnd;
+ BOOL bColMarked = ( nStartRow == 0 && nEndRow == MAXROW );
+ BOOL bRowMarked = ( nStartCol == 0 && nEndCol == MAXCOL );
+
+ // Spalten
+
+ if ( !bRowMarked || bColMarked ) // nicht wenn ganze Zeilen markiert
+ {
+ pArray = pTable->GetColArray();
+ ScSubOutlineIterator aColIter( pArray );
+ while ((pEntry=aColIter.GetNext()) != NULL && !bColFound)
+ {
+ nStart = pEntry->GetStart();
+ nEnd = pEntry->GetEnd();
+ if ( nStartCol<=nEnd && nEndCol>=nStart )
+ bColFound = TRUE;
+ }
+ }
+
+ // Zeilen
+
+ if ( !bColMarked || bRowMarked ) // nicht wenn ganze Spalten markiert
+ {
+ pArray = pTable->GetRowArray();
+ ScSubOutlineIterator aRowIter( pArray );
+ while ((pEntry=aRowIter.GetNext()) != NULL && !bRowFound)
+ {
+ nStart = pEntry->GetStart();
+ nEnd = pEntry->GetEnd();
+ if ( nStartRow<=nEnd && nEndRow>=nStart )
+ bRowFound = TRUE;
+ }
+ }
+ }
+ }
+
+ rCol = bColFound;
+ rRow = bRowFound;
+}
+
+void ScDBFunc::RemoveAllOutlines( BOOL bRecord )
+{
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScOutlineDocFunc aFunc(*pDocSh);
+
+ HideCursor();
+ BOOL bOk = aFunc.RemoveAllOutlines( nTab, bRecord, FALSE );
+ ShowCursor();
+
+ if (bOk)
+ UpdateScrollBars();
+}
+
+// Auto-Outlines
+
+void ScDBFunc::AutoOutline( BOOL bRecord )
+{
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScRange aRange( 0,0,nTab, MAXCOL,MAXROW,nTab ); // ganze Tabelle, wenn nichts markiert
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ if ( rMark.IsMarked() || rMark.IsMultiMarked() )
+ {
+ rMark.MarkToMulti();
+ rMark.GetMultiMarkArea( aRange );
+ }
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScOutlineDocFunc aFunc(*pDocSh);
+ aFunc.AutoOutline( aRange, bRecord, FALSE );
+}
+
+// Outline-Ebene auswaehlen
+
+void ScDBFunc::SelectLevel( BOOL bColumns, USHORT nLevel, BOOL bRecord, BOOL bPaint )
+{
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScOutlineDocFunc aFunc(*pDocSh);
+
+ HideCursor();
+ BOOL bOk = aFunc.SelectLevel( nTab, bColumns, nLevel, bRecord, bPaint, FALSE );
+ ShowCursor();
+
+ if (bOk)
+ UpdateScrollBars();
+}
+
+// einzelne Outline-Gruppe einblenden
+
+void ScDBFunc::ShowOutline( BOOL bColumns, USHORT nLevel, USHORT nEntry, BOOL bRecord, BOOL bPaint )
+{
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScOutlineDocFunc aFunc(*pDocSh);
+
+ HideCursor();
+ BOOL bOk = aFunc.ShowOutline( nTab, bColumns, nLevel, nEntry, bRecord, bPaint, FALSE );
+ ShowCursor();
+
+ if ( bOk && bPaint )
+ UpdateScrollBars();
+}
+
+// einzelne Outline-Gruppe ausblenden
+
+void ScDBFunc::HideOutline( BOOL bColumns, USHORT nLevel, USHORT nEntry, BOOL bRecord, BOOL bPaint )
+{
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScOutlineDocFunc aFunc(*pDocSh);
+
+ HideCursor();
+ BOOL bOk = aFunc.HideOutline( nTab, bColumns, nLevel, nEntry, bRecord, bPaint, FALSE );
+ ShowCursor();
+
+ if ( bOk && bPaint )
+ UpdateScrollBars();
+}
+
+// Menue-Status: markierten Bereich ein-/ausblenden
+
+BOOL ScDBFunc::OutlinePossible(BOOL bHide)
+{
+ BOOL bEnable = FALSE;
+
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+
+ if (GetViewData()->GetSimpleArea(nStartCol,nStartRow,nStartTab,nEndCol,nEndRow,nEndTab))
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (pTable)
+ {
+ ScOutlineArray* pArray;
+ ScOutlineEntry* pEntry;
+ USHORT nStart;
+ USHORT nEnd;
+
+ // Spalten
+
+ pArray = pTable->GetColArray();
+ ScSubOutlineIterator aColIter( pArray );
+ while ((pEntry=aColIter.GetNext()) != NULL && !bEnable)
+ {
+ nStart = pEntry->GetStart();
+ nEnd = pEntry->GetEnd();
+ if ( bHide )
+ {
+ if ( nStartCol<=nEnd && nEndCol>=nStart )
+ if (!pEntry->IsHidden())
+ bEnable = TRUE;
+ }
+ else
+ {
+ if ( nStart>=nStartCol && nEnd<=nEndCol )
+ if (pEntry->IsHidden())
+ bEnable = TRUE;
+ }
+ }
+
+ // Zeilen
+
+ pArray = pTable->GetRowArray();
+ ScSubOutlineIterator aRowIter( pArray );
+ while ((pEntry=aRowIter.GetNext()) != NULL)
+ {
+ nStart = pEntry->GetStart();
+ nEnd = pEntry->GetEnd();
+ if ( bHide )
+ {
+ if ( nStartRow<=nEnd && nEndRow>=nStart )
+ if (!pEntry->IsHidden())
+ bEnable = TRUE;
+ }
+ else
+ {
+ if ( nStart>=nStartRow && nEnd<=nEndRow )
+ if (pEntry->IsHidden())
+ bEnable = TRUE;
+ }
+ }
+ }
+ }
+
+ return bEnable;
+}
+
+// markierten Bereich einblenden
+
+void ScDBFunc::ShowMarkedOutlines( BOOL bRecord )
+{
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScOutlineDocFunc aFunc(*pDocSh);
+ HideCursor();
+ BOOL bDone = aFunc.ShowMarkedOutlines( aRange, bRecord, FALSE );
+ ShowCursor();
+ if (bDone)
+ UpdateScrollBars();
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+}
+
+// markierten Bereich ausblenden
+
+void ScDBFunc::HideMarkedOutlines( BOOL bRecord )
+{
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScOutlineDocFunc aFunc(*pDocSh);
+ HideCursor();
+ BOOL bDone = aFunc.HideMarkedOutlines( aRange, bRecord, FALSE );
+ ShowCursor();
+ if (bDone)
+ UpdateScrollBars();
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+}
+
+// --------------------------------------------------------------------------
+
+//
+// Teilergebnisse
+//
+
+void ScDBFunc::DoSubTotals( const ScSubTotalParam& rParam, BOOL bRecord,
+ const ScSortParam* pForceNewSort )
+{
+ BOOL bDo = !rParam.bRemoveOnly; // FALSE = nur loeschen
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ ScDBData* pDBData = pDoc->GetDBAtArea( nTab, rParam.nCol1, rParam.nRow1,
+ rParam.nCol2, rParam.nRow2 );
+ if (!pDBData)
+ {
+ DBG_ERROR( "SubTotals: keine DBData" );
+ return;
+ }
+
+ if (!pDoc->IsBlockEditable( nTab, 0,rParam.nRow1+1, MAXCOL,MAXROW ))
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ if (pDoc->HasAttrib( rParam.nCol1, rParam.nRow1+1, nTab,
+ rParam.nCol2, rParam.nRow2, nTab, HASATTR_MERGED | HASATTR_OVERLAPPED ))
+ {
+ ErrorMessage(STR_MSSG_INSERTCELLS_0); // nicht in zusammengefasste einfuegen
+ return;
+ }
+
+ WaitObject aWait( GetViewData()->GetDialogParent() );
+ BOOL bOk = TRUE;
+ BOOL bDelete = FALSE;
+ if (rParam.bReplace)
+ if (pDoc->TestRemoveSubTotals( nTab, rParam ))
+ {
+ bDelete = TRUE;
+ bOk = ( MessBox( GetViewData()->GetDialogParent(), WinBits(WB_YES_NO | WB_DEF_YES),
+ // "StarCalc" "Daten loeschen?"
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_0 ),
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_1 ) ).Execute()
+ == RET_YES );
+ }
+
+ if (bOk)
+ {
+ ScDocShellModificator aModificator( *pDocSh );
+
+ ScSubTotalParam aNewParam( rParam ); // Bereichsende wird veraendert
+ ScDocument* pUndoDoc = NULL;
+ ScOutlineTable* pUndoTab = NULL;
+ ScRangeName* pUndoRange = NULL;
+ ScDBCollection* pUndoDB = NULL;
+ USHORT nTabCount = 0; // fuer Referenz-Undo
+
+ if (bRecord) // alte Daten sichern
+ {
+ BOOL bOldFilter = bDo && rParam.bDoSort;
+
+ nTabCount = pDoc->GetTableCount();
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (pTable)
+ {
+ pUndoTab = new ScOutlineTable( *pTable );
+
+ USHORT nOutStartCol; // Zeilen/Spaltenstatus
+ USHORT nOutStartRow;
+ USHORT nOutEndCol;
+ USHORT nOutEndRow;
+ pTable->GetColArray()->GetRange( nOutStartCol, nOutEndCol );
+ pTable->GetRowArray()->GetRange( nOutStartRow, nOutEndRow );
+
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ pDoc->CopyToDocument( nOutStartCol, 0, nTab, nOutEndCol, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ pDoc->CopyToDocument( 0, nOutStartRow, nTab, MAXCOL, nOutEndRow, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+ else
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, bOldFilter );
+
+ // Datenbereich sichern - incl. Filter-Ergebnis
+ pDoc->CopyToDocument( 0,rParam.nRow1+1,nTab, MAXCOL,rParam.nRow2,nTab,
+ IDF_ALL, FALSE, pUndoDoc );
+
+ // alle Formeln wegen Referenzen
+ pDoc->CopyToDocument( 0,0,0, MAXCOL,MAXROW,nTabCount-1,
+ IDF_FORMULA, FALSE, pUndoDoc );
+
+ // DB- und andere Bereiche
+ ScRangeName* pDocRange = pDoc->GetRangeName();
+ if (pDocRange->GetCount())
+ pUndoRange = new ScRangeName( *pDocRange );
+ ScDBCollection* pDocDB = pDoc->GetDBCollection();
+ if (pDocDB->GetCount())
+ pUndoDB = new ScDBCollection( *pDocDB );
+ }
+
+// pDoc->SetOutlineTable( nTab, NULL );
+ ScOutlineTable* pOut = pDoc->GetOutlineTable( nTab );
+ if (pOut)
+ pOut->GetRowArray()->RemoveAll(); // nur Zeilen-Outlines loeschen
+
+ if (rParam.bReplace)
+ pDoc->RemoveSubTotals( nTab, aNewParam );
+ BOOL bSuccess = TRUE;
+ if (bDo)
+ {
+ // Sortieren
+ if ( rParam.bDoSort || pForceNewSort )
+ {
+ pDBData->SetArea( nTab, aNewParam.nCol1,aNewParam.nRow1, aNewParam.nCol2,aNewParam.nRow2 );
+
+ // Teilergebnis-Felder vor die Sortierung setzen
+ // (doppelte werden weggelassen, kann darum auch wieder aufgerufen werden)
+
+ ScSortParam aOldSort;
+ pDBData->GetSortParam( aOldSort );
+ ScSortParam aSortParam( aNewParam, pForceNewSort ? *pForceNewSort : aOldSort );
+ Sort( aSortParam, FALSE, FALSE );
+ }
+
+ bSuccess = pDoc->DoSubTotals( nTab, aNewParam );
+ }
+ ScRange aDirtyRange( aNewParam.nCol1, aNewParam.nRow1, nTab,
+ aNewParam.nCol2, aNewParam.nRow2, nTab );
+ pDoc->SetDirty( aDirtyRange );
+
+ if (bRecord)
+ {
+// ScDBData* pUndoDBData = pDBData ? new ScDBData( *pDBData ) : NULL;
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoSubTotals( pDocSh, nTab,
+ rParam, aNewParam.nRow2,
+ pUndoDoc, pUndoTab, // pUndoDBData,
+ pUndoRange, pUndoDB ) );
+ }
+
+ if (!bSuccess)
+ {
+ // "Kann keine Zeilen einfuegen"
+ ErrorMessage(STR_MSSG_DOSUBTOTALS_2);
+ }
+
+ // merken
+ pDBData->SetSubTotalParam( aNewParam );
+ pDBData->SetArea( nTab, aNewParam.nCol1,aNewParam.nRow1, aNewParam.nCol2,aNewParam.nRow2 );
+ pDoc->CompileDBFormula();
+
+ DoneBlockMode();
+ InitOwnBlockMode();
+ rMark.SetMarkArea( ScRange( aNewParam.nCol1,aNewParam.nRow1,nTab,
+ aNewParam.nCol2,aNewParam.nRow2,nTab ) );
+
+ pDocSh->PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab,
+ PAINT_GRID | PAINT_LEFT | PAINT_TOP | PAINT_SIZE );
+
+ aModificator.SetDocumentModified();
+
+ SelectionChanged();
+ }
+}
+
+//
+// Consolidate
+//
+
+void ScDBFunc::Consolidate( const ScConsolidateParam& rParam, BOOL bRecord )
+{
+ ScDocShell* pDocShell = GetViewData()->GetDocShell();
+ pDocShell->DoConsolidate( rParam, bRecord );
+ SetTabNo( rParam.nTab, TRUE );
+}
+
+//
+// Pivot
+//
+
+String lcl_MakePivotTabName( const String& rPrefix, USHORT nNumber )
+{
+ String aName = rPrefix;
+ aName += String::CreateFromInt32( nNumber );
+ return aName;
+}
+
+void ScDBFunc::MakePivotTable( const ScDPSaveData& rData, const ScRange& rDest, BOOL bNewTable,
+ const ScDPObject& rSource, BOOL bApi )
+{
+ // #70096# error message if no fields are set
+ // this must be removed when drag&drop of fields from a toolbox is available
+
+ if ( rData.IsEmpty() && !bApi )
+ {
+ ErrorMessage(STR_PIVOT_NODATA);
+ return;
+ }
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+
+ ScRange aDestRange = rDest;
+ if ( bNewTable )
+ {
+ USHORT nSrcTab = GetViewData()->GetTabNo();
+
+ String aName( ScGlobal::GetRscString(STR_PIVOT_TABLE) );
+ String aStr;
+
+ pDoc->GetName( nSrcTab, aStr );
+ aName += '_';
+ aName += aStr;
+ aName += '_';
+
+ USHORT nNewTab = nSrcTab+1;
+
+ USHORT i=1;
+ while ( !pDoc->InsertTab( nNewTab, lcl_MakePivotTabName( aName, i ) ) && i <= MAXTAB )
+ i++;
+
+ BOOL bAppend = ( nNewTab+1 == pDoc->GetTableCount() );
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoInsertTab( pDocSh, nNewTab, bAppend, lcl_MakePivotTabName( aName, i ) ));
+
+ GetViewData()->InsertTab( nNewTab );
+ SetTabNo( nNewTab, TRUE );
+
+ aDestRange = ScRange( 0, 0, nNewTab );
+ }
+
+ ScDPObject* pDPObj = pDoc->GetDPAtCursor(
+ aDestRange.aStart.Col(), aDestRange.aStart.Row(), aDestRange.aStart.Tab() );
+
+ ScDPObject aObj( rSource );
+ aObj.SetOutRange( aDestRange );
+ aObj.SetSaveData( rData );
+
+ ScDBDocFunc aFunc( *pDocSh );
+ aFunc.DataPilotUpdate( pDPObj, &aObj, TRUE, FALSE );
+
+ CursorPosChanged(); // shells may be switched
+
+ if ( bNewTable )
+ {
+ pDocSh->PostPaintExtras();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ }
+}
+
+void ScDBFunc::DeletePivotTable()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScDPObject* pDPObj = pDoc->GetDPAtCursor( GetViewData()->GetCurX(),
+ GetViewData()->GetCurY(),
+ GetViewData()->GetTabNo() );
+ if ( pDPObj )
+ {
+ ScDBDocFunc aFunc( *pDocSh );
+ aFunc.DataPilotUpdate( pDPObj, NULL, TRUE, FALSE );
+ CursorPosChanged(); // shells may be switched
+ }
+ else
+ ErrorMessage(STR_PIVOT_NOTFOUND);
+}
+
+void ScDBFunc::RecalcPivotTable()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+
+ // old pivot not used any more
+
+ ScDPObject* pDPObj = pDoc->GetDPAtCursor( GetViewData()->GetCurX(),
+ GetViewData()->GetCurY(),
+ GetViewData()->GetTabNo() );
+ if ( pDPObj )
+ {
+ ScDBDocFunc aFunc( *pDocSh );
+ aFunc.DataPilotUpdate( pDPObj, pDPObj, TRUE, FALSE );
+ CursorPosChanged(); // shells may be switched
+ }
+ else
+ ErrorMessage(STR_PIVOT_NOTFOUND);
+}
+
+
+//
+// DB-Operationen (Sortieren, Filtern, Teilergebnisse) wiederholen
+//
+
+void ScDBFunc::RepeatDB( BOOL bRecord )
+{
+ USHORT nCurX = GetViewData()->GetCurX();
+ USHORT nCurY = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDBData* pDBData = GetDBData();
+
+ ScQueryParam aQueryParam;
+ pDBData->GetQueryParam( aQueryParam );
+ BOOL bQuery = aQueryParam.GetEntry(0).bDoQuery;
+
+ ScSortParam aSortParam;
+ pDBData->GetSortParam( aSortParam );
+ BOOL bSort = aSortParam.bDoSort[0];
+
+ ScSubTotalParam aSubTotalParam;
+ pDBData->GetSubTotalParam( aSubTotalParam );
+ BOOL bSubTotal = aSubTotalParam.bGroupActive[0] && !aSubTotalParam.bRemoveOnly;
+
+ if ( bQuery || bSort || bSubTotal )
+ {
+ BOOL bQuerySize = FALSE;
+ ScRange aOldQuery;
+ ScRange aNewQuery;
+ if (bQuery && !aQueryParam.bInplace)
+ {
+ ScDBData* pDest = pDoc->GetDBAtCursor( aQueryParam.nDestCol, aQueryParam.nDestRow,
+ aQueryParam.nDestTab, TRUE );
+ if (pDest && pDest->IsDoSize())
+ {
+ pDest->GetArea( aOldQuery );
+ bQuerySize = TRUE;
+ }
+ }
+
+ USHORT nDummy;
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ pDBData->GetArea( nDummy, nStartCol, nStartRow, nEndCol, nEndRow );
+
+ //! Undo nur benoetigte Daten ?
+
+ ScDocument* pUndoDoc = NULL;
+ ScOutlineTable* pUndoTab = NULL;
+ ScRangeName* pUndoRange = NULL;
+ ScDBCollection* pUndoDB = NULL;
+
+ if (bRecord)
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (pTable)
+ {
+ pUndoTab = new ScOutlineTable( *pTable );
+
+ USHORT nOutStartCol; // Zeilen/Spaltenstatus
+ USHORT nOutStartRow;
+ USHORT nOutEndCol;
+ USHORT nOutEndRow;
+ pTable->GetColArray()->GetRange( nOutStartCol, nOutEndCol );
+ pTable->GetRowArray()->GetRange( nOutStartRow, nOutEndRow );
+
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ pDoc->CopyToDocument( nOutStartCol, 0, nTab, nOutEndCol, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ pDoc->CopyToDocument( 0, nOutStartRow, nTab, MAXCOL, nOutEndRow, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+ else
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, TRUE );
+
+ // Datenbereich sichern - incl. Filter-Ergebnis
+ pDoc->CopyToDocument( 0,nStartRow,nTab, MAXCOL,nEndRow,nTab, IDF_ALL, FALSE, pUndoDoc );
+
+ // alle Formeln wegen Referenzen
+ pDoc->CopyToDocument( 0,0,0, MAXCOL,MAXROW,nTabCount-1, IDF_FORMULA, FALSE, pUndoDoc );
+
+ // DB- und andere Bereiche
+ ScRangeName* pDocRange = pDoc->GetRangeName();
+ if (pDocRange->GetCount())
+ pUndoRange = new ScRangeName( *pDocRange );
+ ScDBCollection* pDocDB = pDoc->GetDBCollection();
+ if (pDocDB->GetCount())
+ pUndoDB = new ScDBCollection( *pDocDB );
+ }
+
+ if (bSort && bSubTotal)
+ {
+ // Sortieren ohne SubTotals
+
+ aSubTotalParam.bRemoveOnly = TRUE; // wird unten wieder zurueckgesetzt
+ DoSubTotals( aSubTotalParam, FALSE );
+ }
+
+ if (bSort)
+ {
+ pDBData->GetSortParam( aSortParam ); // Bereich kann sich geaendert haben
+ Sort( aSortParam, FALSE, FALSE);
+ }
+ if (bQuery)
+ {
+ pDBData->GetQueryParam( aQueryParam ); // Bereich kann sich geaendert haben
+ ScRange aAdvSource;
+ if (pDBData->GetAdvancedQuerySource(aAdvSource))
+ Query( aQueryParam, &aAdvSource, FALSE );
+ else
+ Query( aQueryParam, NULL, FALSE );
+
+ // bei nicht-inplace kann die Tabelle umgestellt worden sein
+ if ( !aQueryParam.bInplace && aQueryParam.nDestTab != nTab )
+ SetTabNo( nTab );
+ }
+ if (bSubTotal)
+ {
+ pDBData->GetSubTotalParam( aSubTotalParam ); // Bereich kann sich geaendert haben
+ aSubTotalParam.bRemoveOnly = FALSE;
+ DoSubTotals( aSubTotalParam, FALSE );
+ }
+
+ if (bRecord)
+ {
+ USHORT nDummy;
+ USHORT nNewEndRow;
+ pDBData->GetArea( nDummy, nDummy,nDummy, nDummy,nNewEndRow );
+
+ const ScRange* pOld = NULL;
+ const ScRange* pNew = NULL;
+ if (bQuerySize)
+ {
+ ScDBData* pDest = pDoc->GetDBAtCursor( aQueryParam.nDestCol, aQueryParam.nDestRow,
+ aQueryParam.nDestTab, TRUE );
+ if (pDest)
+ {
+ pDest->GetArea( aNewQuery );
+ pOld = &aOldQuery;
+ pNew = &aNewQuery;
+ }
+ }
+
+ GetViewData()->GetDocShell()->GetUndoManager()->AddUndoAction(
+ new ScUndoRepeatDB( GetViewData()->GetDocShell(), nTab,
+ nStartCol, nStartRow, nEndCol, nEndRow,
+ nNewEndRow,
+ nCurX, nCurY,
+ pUndoDoc, pUndoTab,
+ pUndoRange, pUndoDB,
+ pOld, pNew ) );
+ }
+
+ GetViewData()->GetDocShell()->PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab,
+ PAINT_GRID | PAINT_LEFT | PAINT_TOP | PAINT_SIZE );
+ }
+ else // "Keine Operationen auszufuehren"
+ ErrorMessage(STR_MSSG_REPEATDB_0);
+}
+
+
+
+
diff --git a/sc/source/ui/view/dbfunc4.cxx b/sc/source/ui/view/dbfunc4.cxx
new file mode 100644
index 000000000000..0e4b7dd6ed32
--- /dev/null
+++ b/sc/source/ui/view/dbfunc4.cxx
@@ -0,0 +1,435 @@
+/*************************************************************************
+ *
+ * $RCSfile: dbfunc4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+#define _CLIP_HXX
+//#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+#define _SELENG_HXX
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+#define _STATUS_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+#ifdef WIN
+#define _MENU_HXX
+#endif
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX
+#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+//#define _SFX_DOCFILT_HXX
+#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+//#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+//#define _SVDRAW_HXX
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+//#define _SDR_NOUNDO
+#define _SDR_NOXOUTDEV
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+//svdraw.hxx
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+
+#define _SDR_NOEXTDEV // ExtOutputDevice
+//#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+//#define _SDR_NOTEXTOBJ // SdrTextObj
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+//#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+//#define _SDR_NOOLE2OBJ // SdrOle2Obj
+//#define _SVDLAYER_HXX
+//#define _SVDATTR_HXX
+//#define _SVDIO_HXX
+#define _SVBOXITM_HXX
+#define _SVDEC_HXX
+#define _SVDXOUT_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svditer.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdpage.hxx>
+#include <so3/ipobj.hxx>
+#include <sch/schdll.hxx>
+#include <sch/memchrt.hxx>
+
+#include "chartarr.hxx"
+#include "drwlayer.hxx"
+#include "document.hxx"
+
+// -----------------------------------------------------------------------
+
+#ifdef WNT
+#pragma optimize ( "", off )
+#endif
+
+//==================================================================
+
+USHORT DoUpdateCharts( ScAddress aPos, ScDocument* pDoc,
+ Window* pActiveWin, BOOL bAllCharts )
+{
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ if (!pModel)
+ return 0;
+
+ USHORT nFound = 0;
+
+ USHORT nPageCount = pModel->GetPageCount();
+ for (USHORT nPageNo=0; nPageNo<nPageCount; nPageNo++)
+ {
+ SdrPage* pPage = pModel->GetPage(nPageNo);
+ DBG_ASSERT(pPage,"Page ?");
+
+ SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject)
+ {
+ if ( pObject->GetObjIdentifier() == OBJ_OLE2 )
+ {
+ SvInPlaceObjectRef aIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
+ if (aIPObj.Is())
+ {
+ const SchMemChart* pChartData = SchDLL::GetChartData(aIPObj);
+ if ( pChartData )
+ {
+ ScChartArray aArray( pDoc, *pChartData );
+ if (aArray.IsValid())
+ {
+ if ( bAllCharts || aArray.IsAtCursor(aPos) )
+ {
+ SchMemChart* pMemChart = aArray.CreateMemChart();
+ ScChartArray::CopySettings( *pMemChart, *pChartData );
+
+ SchDLL::Update( aIPObj, pMemChart, pActiveWin );
+ delete pMemChart;
+ ++nFound;
+
+ pObject->SendRepaintBroadcast();
+ }
+ }
+ }
+ }
+ }
+ pObject = aIter.Next();
+ }
+ }
+ return nFound;
+}
+
+
+
+
+
+
diff --git a/sc/source/ui/view/drawattr.cxx b/sc/source/ui/view/drawattr.cxx
new file mode 100644
index 000000000000..1d9c9c768fbd
--- /dev/null
+++ b/sc/source/ui/view/drawattr.cxx
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawattr.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include "segmentc.hxx"
+#include "drawattr.hxx"
+#include "global.hxx"
+
+//------------------------------------------------------------------------
+
+String __EXPORT SvxDrawToolItem::GetValueText() const
+{
+ return GetValueText(GetValue());
+}
+
+//------------------------------------------------------------------------
+
+String __EXPORT SvxDrawToolItem::GetValueText( USHORT nVal ) const
+{
+ const sal_Char* p;
+
+ switch (nVal)
+ {
+ case 0 : p = "SVX_SNAP_DRAW_SELECT" ; break;
+ //
+ case 1 : p = "SVX_SNAP_DRAW_LINE" ; break;
+ case 2 : p = "SVX_SNAP_DRAW_RECT" ; break;
+ case 3 : p = "SVX_SNAP_DRAW_ELLIPSE" ; break;
+ case 4 : p = "SVX_SNAP_DRAW_POLYGON" ; break;
+ case 5 : p = "SVX_SNAP_DRAW_ARC" ; break;
+ case 6 : p = "SVX_SNAP_DRAW_PIE" ; break;
+ case 7 : p = "SVX_SNAP_DRAW_CIRCLECUT" ; break;
+ case 8 : p = "SVX_SNAP_DRAW_TEXT" ; break;
+ default : return EMPTY_STRING;
+ }
+ return String::CreateFromAscii( p );
+}
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT SvxDrawToolItem::Clone( SfxItemPool * ) const
+{
+ return new SvxDrawToolItem(*this);
+}
+
+//------------------------------------------------------------------------
+
+SfxPoolItem* __EXPORT SvxDrawToolItem::Create( SvStream& rStream, USHORT nVer ) const
+{
+ USHORT nVal;
+ rStream >> nVal;
+ return new SvxDrawToolItem(nVal);
+}
+
+
+
diff --git a/sc/source/ui/view/drawutil.cxx b/sc/source/ui/view/drawutil.cxx
new file mode 100644
index 000000000000..cd7eb361d3e5
--- /dev/null
+++ b/sc/source/ui/view/drawutil.cxx
@@ -0,0 +1,126 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawutil.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <vcl/outdev.hxx>
+
+#include "drawutil.hxx"
+#include "document.hxx"
+#include "global.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+// -----------------------------------------------------------------------
+
+
+inline Fraction MakeFraction( long nA, long nB )
+{
+ return ( nA && nB ) ? Fraction(nA,nB) : Fraction(1,1);
+}
+
+void ScDrawUtil::CalcScale( ScDocument* pDoc, USHORT nTab,
+ USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ OutputDevice* pDev,
+ const Fraction& rZoomX, const Fraction& rZoomY,
+ double nPPTX, double nPPTY,
+ Fraction& rScaleX, Fraction& rScaleY )
+{
+ USHORT i;
+
+ long nPixelX = 0;
+ long nTwipsX = 0;
+ long nPixelY = 0;
+ long nTwipsY = 0;
+ for (i=nStartCol; i<nEndCol; i++)
+ {
+ long nWidth = (long) pDoc->GetColWidth(i,nTab);
+ nTwipsX += nWidth;
+ nPixelX += (long) ( nWidth * nPPTX );
+ }
+ for (i=nStartRow; i<nEndRow; i++)
+ {
+ long nHeight = (long) pDoc->GetRowHeight(i,nTab);
+ nTwipsY += nHeight;
+ nPixelY += (long) ( nHeight * nPPTY );
+ }
+
+ MapMode aHMMMode( MAP_100TH_MM, Point(), rZoomX, rZoomY );
+ Point aPixelLog = pDev->PixelToLogic( Point( nPixelX,nPixelY ), aHMMMode );
+
+ rScaleX = MakeFraction( aPixelLog.X() * rZoomX.GetNumerator(),
+ (long) ( nTwipsX * HMM_PER_TWIPS * rZoomX.GetDenominator() ) );
+ rScaleY = MakeFraction( aPixelLog.Y() * rZoomY.GetNumerator(),
+ (long) ( nTwipsY * HMM_PER_TWIPS * rZoomY.GetDenominator() ) );
+
+ rScaleX.ReduceInaccurate( 14 );
+ rScaleY.ReduceInaccurate( 14 );
+}
+
+
+
+
diff --git a/sc/source/ui/view/drawvie2.cxx b/sc/source/ui/view/drawvie2.cxx
new file mode 100644
index 000000000000..20f3dcdd2d6f
--- /dev/null
+++ b/sc/source/ui/view/drawvie2.cxx
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawvie2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "drawview.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+// -----------------------------------------------------------------------
+
+
+// UpdateBrowser in MarkListHasChanged gerufen
+
+void ScDrawView::UpdateBrowser()
+{
+ // VC's und den Browser dazu gibts nicht mehr...
+}
+
+void ScDrawView::VCAddWin( Window* pWin )
+{
+ // GetSbxForm gibt's nicht mehr, muss auch nichts mehr angemeldet werden
+}
+
+void ScDrawView::VCRemoveWin( Window* pWin )
+{
+ // GetSbxForm gibt's nicht mehr, muss auch nichts mehr angemeldet werden
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/drawvie3.cxx b/sc/source/ui/view/drawvie3.cxx
new file mode 100644
index 000000000000..95b5a316e2c3
--- /dev/null
+++ b/sc/source/ui/view/drawvie3.cxx
@@ -0,0 +1,354 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawvie3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+//sfxitems.hxx
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+#define _SFXSLSTITM_HXX
+
+//sfx.hxx
+//#define _SFX_HXX ***
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX ***
+#define _SFXCTRLITEM_HXX
+#define _SFX_PRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSW_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdlg.hxx
+//#define _SFXDLG_HXX ***
+//#define _SFXTABDLG_HXX ***
+#define _BASEDLGS_HXX
+#define _DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+//#define _SFXDOCKWIN_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+
+//sfxsh.hxx
+//#define _SFXSH_HXX
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+#define _SFXDISPATCH_HXX
+#define _SFXMSG_HXX
+#define _SFXOBJFACE_HXX
+#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+//sfxdoc.hxx
+//#define _SFXDOC_HXX ***
+//#define _SFX_OBJSH_HXX ***
+//#define _SFX_CLIENTSH_HXX ***
+#define _SFX_DOCFILT_HACK_HXX
+#define _SFX_FCONTNR_HXX
+#define _SFXDOCFILE_HXX
+//#define _SFXFRAME_HXX ***
+//#define _SFXVIEWFRM_HXX ***
+//#define _SFXVIEWSH_HXX ***
+#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+#define _SFX_INTERNO_HXX
+#define _FSETOBJSH_HXX
+
+//si.hxx
+//#define _SI_HXX ***
+#define _SIDLL_HXX
+#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX ???
+//#define _SI_NOVCSBXFORM ***
+#define SI_NOOTHERFORMS
+#define _SI_NOVCSBXBUTTON
+#define _SI_NOVCSBXCHECKBOX
+#define _SI_NOVCSBXRADIOBUTTON
+#define _SI_NOVCSBXPUSHBUTTON
+#define _SI_NOVCSBXSPINBUTTON
+#define _SI_NOVCSBXFIXEDTEXT
+#define _SI_NOVCSBXGROUPBOX
+#define _SI_NOVCSBXLISTBOX
+#define _SI_NOVCSBXCOMBOBOX
+#define _SI_NOVCSBXEDIT
+//#define _SI_NOVCSBXSCROLLBAR ***
+#define _SI_NOVCSBXHSCROLLBAR
+#define _SI_BOVCSBXVSCROLLBAR
+#define _SI_NOVCSBXPREVIEW
+#define _SI_NOVCSBXURLBUTTON
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX ***
+//#define _SI_NOVCDRAWMODEL
+#define _SI_NOVCDRAWPAGE
+//#define _SI_NOVCDRAWVIEW ***
+#define _VCBRW_HXX
+#define _VCFORM_HXX
+
+//svdrwobt.hxx
+//#define _SVDOATTR_HXX
+//#define _SVDOTEXT_HXX
+#define _SVDRAW_HXX
+
+//svdraw.hxx
+#define _SVDRAW_HXX
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS
+#define _SDR_NOVIEWS
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+#define _SDR_NOUNDO
+#define _SDR_NOXOUTDEV
+
+//svdrwobx.hxx
+//#define _SVDRWOBX_HXX ***
+#define _SVDOUKWN_HXX
+//#define _SVDORECT_HXX ***
+#define _SVDCAPT_HXX
+#define _SVDOCIRC_HXX
+//#define _SVDOEDGE_HXX
+//#define _SVDOGRAF_HXX
+#define _SVDOGRP_HXX
+#define _SVDOMEAS_HXX
+//#define _SVDOOLE2_HXX ***
+#define _SVDOPAGE_HXX
+#define _SVDOPATH_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdograf.hxx>
+#include <svx/svdoole2.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/viewfrm.hxx>
+
+#include "drawview.hxx"
+#include "drwlayer.hxx"
+#include "viewdata.hxx"
+#include "dbfunc.hxx"
+#include "document.hxx"
+#include "userdat.hxx"
+#include "tabvwsh.hxx"
+
+void ScIMapDlgSet( const Graphic& rGraphic, const ImageMap* pImageMap,
+ const TargetList* pTargetList, void* pEditingObj ); // imapwrap
+USHORT ScIMapChildWindowId();
+
+// STATIC DATA -----------------------------------------------------------
+
+ScDrawView::ScDrawView( OutputDevice* pOut, ScViewData* pData ) :
+ FmFormView( pData->GetDocument()->GetDrawLayer(), pOut ),
+ pViewData( pData ),
+ pDev( pOut ),
+ pDoc( pData->GetDocument() ),
+ nTab( pData->GetTabNo() ),
+ pDropMarker( NULL ),
+ pDropMarkObj( NULL ),
+ bDisableHdl( FALSE ),
+ bInConstruct( TRUE )
+{
+ Construct();
+}
+
+ScDrawView::ScDrawView( OutputDevice* pOut, ScDocument* pDocument, USHORT nTable ) :
+ FmFormView( pDocument->GetDrawLayer(), pOut ),
+ pViewData( NULL ),
+ pDev( pOut ),
+ pDoc( pDocument ),
+ nTab( nTable ),
+ pDropMarker( NULL ),
+ pDropMarkObj( NULL ),
+ bDisableHdl( FALSE ),
+ bInConstruct( TRUE )
+{
+ Construct();
+}
+
+// Verankerung setzen
+
+void ScDrawView::SetAnchor( ScAnchorType eType )
+{
+ SdrObject* pObj = NULL;
+ if( HasMarkedObj() )
+ {
+ const SdrMarkList* pMark = &GetMarkList();
+ ULONG nCount = pMark->GetMarkCount();
+ for( ULONG i=0; i<nCount; i++ )
+ {
+ pObj = pMark->GetMark(i)->GetObj();
+ ScDrawLayer::SetAnchor( pObj, eType );
+ }
+ }
+}
+
+ScAnchorType ScDrawView::GetAnchor() const
+{
+ BOOL bPage = FALSE;
+ BOOL bCell = FALSE;
+ const SdrObject* pObj = NULL;
+ if( HasMarkedObj() )
+ {
+ const SdrMarkList* pMark = &GetMarkList();
+ ULONG nCount = pMark->GetMarkCount();
+ Point p0;
+ for( ULONG i=0; i<nCount; i++ )
+ {
+ pObj = pMark->GetMark(i)->GetObj();
+ if( ScDrawLayer::GetAnchor( pObj ) == SCA_CELL )
+ bCell =TRUE;
+ else
+ bPage = TRUE;
+ }
+ }
+ if( bPage && !bCell )
+ return SCA_PAGE;
+ if( !bPage && bCell )
+ return SCA_CELL;
+ return SCA_DONTKNOW;
+}
+
+void __EXPORT ScDrawView::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType )
+{
+ if (rHint.ISA(ScTabDeletedHint)) // Tabelle geloescht
+ {
+ USHORT nDelTab = ((ScTabDeletedHint&)rHint).GetTab();
+ if (nDelTab <= MAXTAB)
+ HidePagePgNum(nDelTab);
+ }
+ else if (rHint.ISA(ScTabSizeChangedHint)) // Groesse geaendert
+ {
+ if ( nTab == ((ScTabSizeChangedHint&)rHint).GetTab() )
+ UpdateWorkArea();
+ }
+ else
+ FmFormView::SFX_NOTIFY( rBC,rBCType,rHint,rHintType );
+}
+
+void ScDrawView::UpdateIMap( SdrObject* pObj )
+{
+ if ( pViewData &&
+ pViewData->GetViewShell()->GetViewFrame()->HasChildWindow( ScIMapChildWindowId() ) &&
+ pObj && ( pObj->ISA(SdrGrafObj) || pObj->ISA(SdrOle2Obj) ) )
+ {
+ Graphic aGraphic;
+ TargetList aTargetList;
+ ScIMapInfo* pIMapInfo = ScDrawLayer::GetIMapInfo( pObj );
+ const ImageMap* pImageMap = NULL;
+ if ( pIMapInfo )
+ pImageMap = &pIMapInfo->GetImageMap();
+
+ // Target-Liste besorgen
+ pViewData->GetViewShell()->GetViewFrame()->GetTargetList( aTargetList );
+
+ // Grafik vom Objekt besorgen
+ if ( pObj->ISA( SdrGrafObj ) )
+ aGraphic = ( (SdrGrafObj*) pObj )->GetGraphic();
+ else
+ aGraphic = ScDrawLayer::GetGraphicFromOle2Obj(
+ (const SdrOle2Obj*) pObj );
+
+ ScIMapDlgSet( aGraphic, pImageMap, &aTargetList, pObj ); // aus imapwrap
+
+ // TargetListe kann von uns wieder geloescht werden
+ String* pEntry = aTargetList.First();
+ while( pEntry )
+ {
+ delete pEntry;
+ pEntry = aTargetList.Next();
+ }
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/view/drawvie4.cxx b/sc/source/ui/view/drawvie4.cxx
new file mode 100644
index 000000000000..74270f2c5d43
--- /dev/null
+++ b/sc/source/ui/view/drawvie4.cxx
@@ -0,0 +1,684 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawvie4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+// -------------------------
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+#define _TABBAR_HXX //*
+#define _VALUESET_HXX //*
+#define _STDMENU_HXX
+#define _STDCTRL_HXX //*
+#define _CTRLBOX_HXX //*
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX
+//#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+//#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//-------------------------
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+#define _SFX_BINDINGS_HXX //???
+#define _SFXDISPATCH_HXX //???
+//#define _SFXMSG_HXX
+//#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX ***
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX
+//#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX
+//#define _SFXDOCTDLG_HXX
+//#define _SFX_TEMPLDLG_HXX
+//#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX //*
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+//#define _ARGS_HXX ***
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+#define _SFXSTYLE_HXX //???
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+//#define _SIDLL_HXX
+
+
+#define _SV_NOXSOUND
+
+#ifdef WIN
+#define _MENUBTN_HXX
+#endif
+
+#define _BASE_DLGS_HXX
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+
+#define _SVBOXITM_HXX
+#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+#define _SVTABBX_HXX
+
+#define _SVX_FRMITEMS_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+//#define _SI_HXX
+#define _SDR_NOTRANSFORM
+#define _SDR_NOTOUCH
+#define _SVDOPAGE_HXX // SdrPageObj
+#define _SVDSURO_HXX // SdrObjSurrogate
+#define _SVDOVIRT_HXX // SdrVirtObj
+#define _SVDOGRP_HXX // SdrGroupObj
+//#define _SVDOTEXT_HXX // SdrTextObj
+#define _SVDOPATH_HXX // SdrPathObj
+//#define _SVDOEDGE_HXX // SdrEdgeObj
+//#define _SVDORECT_HXX // SdrRectObj (+SdrTextObj)
+#define _SVDCAPT_HXX // SdrCaptionObj
+#define _SVDOCIRC_HXX // SdrCircleObj
+//#define _SVDOGRAF_HXX // SdrGrafObj (+SdrRectObj)
+//#define _SVDOOLE2_HXX // SdrOle2Obj (+SdrRectObj)
+
+
+//#define _SVDOATTR_HXX
+//#define _SVDOTEXT_HXX
+
+#define _SVDOUKWN_HXX
+//#define _SVDORECT_HXX
+#define _SVDCAPT_HXX
+#define _SVDOCIRC_HXX
+//#define _SVDOEDGE_HXX
+//#define _SVDOGRAF_HXX
+#define _SVDRAW_HXX
+#define _SVDOGRP_HXX
+#define _SVDOMEAS_HXX
+//#define _SVDOOLE2_HXX
+#define _SVDOPAGE_HXX
+#define _SVDOPATH_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdograf.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdundo.hxx>
+
+#include "drawview.hxx"
+#include "global.hxx"
+#include "drwlayer.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "dataobj.hxx"
+#include "drawutil.hxx"
+#include "scmod.hxx"
+#include "globstr.hrc"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+Point aDragStartDiff;
+
+// -----------------------------------------------------------------------
+
+//! welche Funktionen aus drawview/drawvie4 muessen wirklich ohne Optimierung sein?
+
+#ifdef WNT
+#pragma optimize ( "", off )
+#endif
+
+// -----------------------------------------------------------------------
+
+void lcl_InitMarks( SdrMarkView& rDest, const SdrMarkView& rSource, USHORT nTab )
+{
+ rDest.ShowPagePgNum( nTab, Point() );
+ SdrPageView* pDestPV = rDest.GetPageViewPvNum(0);
+ DBG_ASSERT(pDestPV,"PageView ??!?!");
+
+ const SdrMarkList& rMarkList = rSource.GetMarkList();
+ ULONG nCount = rMarkList.GetMarkCount();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ SdrMark* pMark = rMarkList.GetMark(i);
+ SdrObject* pObj = pMark->GetObj();
+
+ rDest.MarkObj(pObj, pDestPV);
+ }
+}
+
+void lcl_CheckOle( const SdrMarkList& rMarkList, BOOL& rAnyOle, BOOL& rOneOle )
+{
+ rAnyOle = rOneOle = FALSE;
+
+ ULONG nCount = rMarkList.GetMarkCount();
+ if (nCount == 1)
+ {
+ SdrMark* pMark = rMarkList.GetMark(0);
+ SdrObject* pObj = pMark->GetObj();
+ UINT16 nSdrObjKind = pObj->GetObjIdentifier();
+ if (nSdrObjKind == OBJ_OLE2)
+ rAnyOle = rOneOle = TRUE;
+ }
+ else
+ for (ULONG i=0; i<nCount; i++)
+ {
+ SdrMark* pMark = rMarkList.GetMark(i);
+ SdrObject* pObj = pMark->GetObj();
+ UINT16 nSdrObjKind = pObj->GetObjIdentifier();
+ if (nSdrObjKind == OBJ_OLE2)
+ {
+ rAnyOle = TRUE;
+ break;
+ }
+ }
+}
+
+BOOL ScDrawView::BeginDrag( Window* pWindow, const Point& rStartPos )
+{
+ BOOL bReturn = FALSE;
+
+ if ( HasMarkedObj() )
+ {
+ ScModule* pScMod = SC_MOD();
+
+ BrkAction();
+
+ Rectangle aMarkedRect = GetAllMarkedRect();
+ Region aRegion( aMarkedRect );
+
+ aDragStartDiff = rStartPos - aMarkedRect.TopLeft();
+
+ BOOL bAnyOle, bOneOle;
+ const SdrMarkList& rMarkList = GetMarkList();
+ lcl_CheckOle( rMarkList, bAnyOle, bOneOle );
+
+// PageView in MarkList nicht mehr gueltig, wenn Tabelle umgeschaltet !!!
+ SdrView aEditView( GetModel() );
+ lcl_InitMarks( aEditView, *this, nTab );
+
+ BegUndo( ScGlobal::GetRscString( STR_UNDO_DRAGDROP ) );
+
+ //---------------------------------------------------------
+ ScDocShellRef aDragShellRef;
+ if (bAnyOle)
+ {
+ aDragShellRef = new ScDocShell; // ohne Ref lebt die DocShell nicht !!!
+ aDragShellRef->DoInitNew(NULL);
+ }
+ //---------------------------------------------------------
+
+ ScDrawLayer::SetGlobalDrawPersist(aDragShellRef);
+ SdrModel* pDragModel = GetAllMarkedModel();
+ ScDrawLayer::SetGlobalDrawPersist(NULL);
+
+ SvDataObjectRef pDragServer = new ScDataObject(pDragModel,
+ pViewData->GetDocShell(), bOneOle);
+ pScMod->SetDragObject(pDragModel, &aEditView, 0);
+ DropAction eDropAction = pDragServer->ExecuteDrag(pWindow,
+ POINTER_MOVEDATA, POINTER_COPYDATA, POINTER_LINKDATA,
+ DRAG_ALL, &aRegion);
+ BOOL bIntern = pScMod->GetDragIntern();
+ pScMod->ResetDragObject();
+ pDragServer.Clear(); // enthaelt Referenzen auf pDragShell
+
+ //---------------------------------------------------------
+
+ switch (eDropAction)
+ {
+ case DROP_MOVE:
+ case DROP_DISCARD:
+ if (!bIntern)
+ aEditView.DeleteMarked();
+ break;
+
+ case DROP_NONE:
+ case DROP_COPY:
+ case DROP_LINK:
+ case DROP_PRINT:
+ break;
+
+ default:
+ break;
+ }
+
+ if (eDropAction != DROP_NONE)
+ bReturn = TRUE;
+
+ EndUndo();
+ }
+
+ return bReturn;
+}
+
+void ScDrawView::DoCopy()
+{
+ {
+ SvDataObjectRef pDummyObj = new SvDataObject;
+ pDummyObj->CopyClipboard();
+ }
+
+ BOOL bAnyOle, bOneOle;
+ const SdrMarkList& rMarkList = GetMarkList();
+ lcl_CheckOle( rMarkList, bAnyOle, bOneOle );
+
+ //---------------------------------------------------------
+ delete ScGlobal::pDrawClipDocShellRef;
+ if (bAnyOle)
+ {
+ ScGlobal::pDrawClipDocShellRef =
+ new ScDocShellRef(new ScDocShell); // ohne Ref geht's nicht
+ (*ScGlobal::pDrawClipDocShellRef)->DoInitNew(NULL);
+ ScDrawLayer::SetGlobalDrawPersist(*ScGlobal::pDrawClipDocShellRef);
+ }
+ else
+ {
+ ScGlobal::pDrawClipDocShellRef = NULL;
+ ScDrawLayer::SetGlobalDrawPersist(NULL);
+ }
+
+ SdrModel* pModel = GetAllMarkedModel();
+ ScDrawLayer::SetGlobalDrawPersist(NULL);
+
+ ScGlobal::SetClipDraw(pModel);
+ SvDataObjectRef pData = new ScDataObject( pModel, pViewData->GetDocShell(), bOneOle );
+ pData->CopyClipboard();
+}
+
+// Korrektur fuer 100% berechnen, unabhaengig von momentanen Einstellungen
+
+void ScDrawView::CalcNormScale( Fraction& rFractX, Fraction& rFractY ) const
+{
+ Point aLogic = pDev->LogicToPixel( Point(1000,1000), MAP_TWIP );
+ double nPPTX = ScGlobal::nScreenPPTX;
+ double nPPTY = ScGlobal::nScreenPPTY;
+
+ if (pViewData)
+ nPPTX /= pViewData->GetDocShell()->GetOutputFactor();
+
+ USHORT nEndCol = 0;
+ USHORT nEndRow = 0;
+ pDoc->GetTableArea( nTab, nEndCol, nEndRow );
+ if (nEndCol<20)
+ nEndCol = 20;
+ if (nEndRow<20)
+ nEndRow = 20;
+
+ Fraction aZoom(1,1);
+ ScDrawUtil::CalcScale( pDoc, nTab, 0,0, nEndCol,nEndRow, pDev, aZoom,aZoom,
+ nPPTX, nPPTY, rFractX,rFractY );
+}
+
+void ScDrawView::SetMarkedOriginalSize()
+{
+ SdrUndoGroup* pUndoGroup = new SdrUndoGroup(*GetModel());
+
+ const SdrMarkList& rMarkList = GetMarkList();
+ long nDone = 0;
+ ULONG nCount = rMarkList.GetMarkCount();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ SdrObject* pObj = rMarkList.GetMark(i)->GetObj();
+ USHORT nIdent = pObj->GetObjIdentifier();
+ BOOL bDo = FALSE;
+ Size aOriginalSize;
+ if (nIdent == OBJ_OLE2)
+ {
+ SvInPlaceObjectRef xIPObj = ((SdrOle2Obj*)pObj)->GetObjRef();
+ if (xIPObj.Is())
+ {
+ aOriginalSize = OutputDevice::LogicToLogic(
+ xIPObj->GetVisArea().GetSize(),
+ xIPObj->GetMapUnit(), MAP_100TH_MM );
+ bDo = TRUE;
+ }
+ }
+ else if (nIdent == OBJ_GRAF)
+ {
+ const Graphic& rGraphic = ((SdrGrafObj*)pObj)->GetGraphic();
+
+ MapMode aSourceMap = rGraphic.GetPrefMapMode();
+ MapMode aDestMap( MAP_100TH_MM );
+ if (aSourceMap.GetMapUnit() == MAP_PIXEL)
+ {
+ // Pixel-Korrektur beruecksichtigen, damit Bitmap auf dem Bildschirm stimmt
+
+ Fraction aScaleX, aScaleY;
+ CalcNormScale( aScaleX, aScaleY );
+ aDestMap.SetScaleX(aScaleX);
+ aDestMap.SetScaleY(aScaleY);
+ }
+ if (pViewData)
+ {
+ Window* pActWin = pViewData->GetActiveWin();
+ if (pActWin)
+ {
+ aOriginalSize = pActWin->LogicToLogic(
+ rGraphic.GetPrefSize(), &aSourceMap, &aDestMap );
+ bDo = TRUE;
+ }
+ }
+ }
+
+ if ( bDo )
+ {
+ Rectangle aDrawRect = pObj->GetLogicRect();
+
+ pUndoGroup->AddAction( new SdrUndoGeoObj( *pObj ) );
+ pObj->Resize( aDrawRect.TopLeft(), Fraction( aOriginalSize.Width(), aDrawRect.GetWidth() ),
+ Fraction( aOriginalSize.Height(), aDrawRect.GetHeight() ) );
+ ++nDone;
+ }
+ }
+
+ if (nDone)
+ {
+ pUndoGroup->SetComment(ScGlobal::GetRscString( STR_UNDO_ORIGINALSIZE ));
+ pViewData->GetDocShell()->GetUndoManager()->AddUndoAction(pUndoGroup);
+ }
+ else
+ delete pUndoGroup;
+}
+
+
+#ifdef WNT
+#pragma optimize ( "", on )
+#endif
+
+
+
+
diff --git a/sc/source/ui/view/drawview.cxx b/sc/source/ui/view/drawview.cxx
new file mode 100644
index 000000000000..6524c7711084
--- /dev/null
+++ b/sc/source/ui/view/drawview.cxx
@@ -0,0 +1,745 @@
+/*************************************************************************
+ *
+ * $RCSfile: drawview.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svditer.hxx>
+#include <svx/svdograf.hxx>
+#include <svx/svdogrp.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdouno.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdvmark.hxx>
+#include <svx/xoutx.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/ipfrm.hxx>
+#include <so3/ipobj.hxx>
+#include <so3/pseudo.hxx>
+
+#include "drawview.hxx"
+#include "global.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "drawutil.hxx"
+#include "globstr.hrc"
+#include "tabvwsh.hxx"
+#include "client.hxx"
+#include "scmod.hxx"
+#include "drwlayer.hxx"
+
+#include "sc.hrc"
+
+// -----------------------------------------------------------------------
+
+#define SC_HANDLESIZE_BIG 9
+#define SC_HANDLESIZE_SMALL 7
+
+// -----------------------------------------------------------------------
+
+
+#ifdef WNT
+#pragma optimize ( "", off )
+#endif
+
+
+void ScDrawView::Construct()
+{
+ EnableExtendedKeyInputDispatcher(FALSE);
+ EnableExtendedMouseEventDispatcher(FALSE);
+ EnableExtendedCommandEventDispatcher(FALSE);
+
+ SetFrameDragSingles(TRUE);
+// SetSolidMarkHdl(TRUE); // einstellbar -> UpdateUserViewOptions
+
+ SetMinMoveDistancePixel( 2 );
+ SetHitTolerancePixel( 2 );
+
+ if (pViewData)
+ {
+ USHORT nTab = pViewData->GetTabNo();
+ ShowPagePgNum( nTab, Point() );
+
+ BOOL bEx = pViewData->GetViewShell()->IsDrawSelMode();
+ BOOL bProt = pDoc->IsTabProtected( nTab ) ||
+ pViewData->GetSfxDocShell()->IsReadOnly();
+
+ SdrLayer* pLayer;
+ SdrLayerAdmin& rAdmin = GetModel()->GetLayerAdmin();
+ pLayer = rAdmin.GetLayerPerID(SC_LAYER_BACK);
+ if (pLayer)
+ SetLayerLocked( pLayer->GetName(), bProt || !bEx );
+ pLayer = rAdmin.GetLayerPerID(SC_LAYER_INTERN);
+ if (pLayer)
+ SetLayerLocked( pLayer->GetName(), TRUE );
+ pLayer = rAdmin.GetLayerPerID(SC_LAYER_FRONT);
+ if (pLayer)
+ {
+ SetLayerLocked( pLayer->GetName(), bProt );
+ SetActiveLayer( pLayer->GetName() ); // FRONT als aktiven Layer setzen
+ }
+ pLayer = rAdmin.GetLayerPerID(SC_LAYER_CONTROLS);
+ if (pLayer)
+ SetLayerLocked( pLayer->GetName(), bProt );
+
+ SetSwapAsynchron(TRUE);
+ }
+ else
+ ShowPagePgNum( nTab, Point() );
+
+ UpdateUserViewOptions();
+ RecalcScale();
+ UpdateWorkArea();
+
+ bInConstruct = FALSE;
+}
+
+__EXPORT ScDrawView::~ScDrawView()
+{
+ delete pDropMarker;
+}
+
+void ScDrawView::AddCustomHdl()
+{
+ const SdrMarkList &rMrkList = GetMarkList();
+ UINT32 nCount = rMrkList.GetMarkCount();
+ for(UINT32 nPos=0; nPos<nCount; nPos++ )
+ {
+ const SdrObject* pObj = rMrkList.GetMark(nPos)->GetObj();
+ if(ScDrawLayer::GetAnchor(pObj) == SCA_CELL)
+ {
+ const INT32 nDelta = 1;
+
+ Point aPos = pObj->GetBoundRect().TopLeft();
+ long nPosX = (long) (aPos.X() / HMM_PER_TWIPS) + nDelta;
+ long nPosY = (long) (aPos.Y() / HMM_PER_TWIPS) + nDelta;
+
+ UINT16 nCol;
+ INT32 nWidth = 0;
+
+ for(nCol=0; nCol<=MAXCOL && nWidth<=nPosX; nCol++)
+ nWidth += pDoc->GetColWidth(nCol,nTab);
+
+ if(nCol)
+ --nCol;
+
+ UINT16 nRow;
+ INT32 nHeight = 0;
+
+ for(nRow=0; nRow<=MAXROW && nHeight<=nPosY; nRow++)
+ nHeight += pDoc->FastGetRowHeight(nRow,nTab);
+
+ if(nRow)
+ --nRow;
+
+ ScTabView* pView = pViewData->GetView();
+ ScAddress aScAddress(nCol, nRow, nTab);
+ pView->CreateAnchorHandles(aHdl, aScAddress);
+ }
+ }
+}
+
+void ScDrawView::InvalidateAttribs()
+{
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ // echte Statuswerte:
+
+ rBindings.Invalidate( SID_ATTR_FILL_STYLE );
+ rBindings.Invalidate( SID_ATTR_FILL_COLOR );
+
+ rBindings.Invalidate( SID_ATTR_LINE_STYLE );
+ rBindings.Invalidate( SID_ATTR_LINE_WIDTH );
+ rBindings.Invalidate( SID_ATTR_LINE_COLOR );
+
+ rBindings.Invalidate( SID_ANCHOR_PAGE );
+ rBindings.Invalidate( SID_ANCHOR_CELL );
+
+ rBindings.Invalidate( SID_OLE_OBJECT );
+
+ rBindings.Invalidate( SID_HYPERLINK_GETLINK );
+
+ // Funktionen, die nicht immer moeglich sind:
+
+ rBindings.Invalidate( SID_ATTRIBUTES_LINE );
+ rBindings.Invalidate( SID_ATTRIBUTES_AREA );
+ rBindings.Invalidate( SID_ATTR_LINEEND_STYLE ); // Tbx-Controller
+
+ rBindings.Invalidate( SID_GROUP );
+ rBindings.Invalidate( SID_UNGROUP );
+ rBindings.Invalidate( SID_ENTER_GROUP );
+ rBindings.Invalidate( SID_LEAVE_GROUP );
+ rBindings.Invalidate( SID_MIRROR_HORIZONTAL );
+ rBindings.Invalidate( SID_MIRROR_VERTICAL );
+
+ rBindings.Invalidate( SID_IMAP_EXEC );
+
+ rBindings.Invalidate( SID_FRAME_UP );
+ rBindings.Invalidate( SID_FRAME_DOWN );
+ rBindings.Invalidate( SID_FRAME_TO_TOP );
+ rBindings.Invalidate( SID_FRAME_TO_BOTTOM );
+ rBindings.Invalidate( SID_OBJECT_HEAVEN );
+ rBindings.Invalidate( SID_OBJECT_HELL );
+
+ rBindings.Invalidate( SID_OBJECT_ALIGN_LEFT );
+ rBindings.Invalidate( SID_OBJECT_ALIGN_CENTER );
+ rBindings.Invalidate( SID_OBJECT_ALIGN_RIGHT );
+ rBindings.Invalidate( SID_OBJECT_ALIGN_UP );
+ rBindings.Invalidate( SID_OBJECT_ALIGN_MIDDLE );
+ rBindings.Invalidate( SID_OBJECT_ALIGN_DOWN );
+
+ rBindings.Invalidate( SID_DELETE );
+ rBindings.Invalidate( SID_DELETE_CONTENTS );
+ rBindings.Invalidate( SID_CUT );
+ rBindings.Invalidate( SID_COPY );
+
+ rBindings.Invalidate( SID_ANCHOR_TOGGLE );
+ rBindings.Invalidate( SID_ORIGINALSIZE );
+
+ rBindings.Invalidate( SID_ATTR_TRANSFORM );
+}
+
+void ScDrawView::InvalidateDrawTextAttrs()
+{
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ rBindings.Invalidate( SID_ATTR_CHAR_FONT );
+ rBindings.Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
+ rBindings.Invalidate( SID_ATTR_CHAR_WEIGHT );
+ rBindings.Invalidate( SID_ATTR_CHAR_POSTURE );
+ rBindings.Invalidate( SID_ATTR_CHAR_UNDERLINE );
+ rBindings.Invalidate( SID_ULINE_VAL_NONE );
+ rBindings.Invalidate( SID_ULINE_VAL_SINGLE );
+ rBindings.Invalidate( SID_ULINE_VAL_DOUBLE );
+ rBindings.Invalidate( SID_ULINE_VAL_DOTTED );
+ rBindings.Invalidate( SID_ATTR_CHAR_COLOR );
+ rBindings.Invalidate( SID_ATTR_PARA_ADJUST_LEFT );
+ rBindings.Invalidate( SID_ATTR_PARA_ADJUST_CENTER );
+ rBindings.Invalidate( SID_ATTR_PARA_ADJUST_RIGHT );
+ rBindings.Invalidate( SID_ATTR_PARA_ADJUST_BLOCK );
+ rBindings.Invalidate( SID_ATTR_PARA_LINESPACE_10 );
+ rBindings.Invalidate( SID_ATTR_PARA_LINESPACE_15 );
+ rBindings.Invalidate( SID_ATTR_PARA_LINESPACE_20 );
+ rBindings.Invalidate( SID_SET_SUPER_SCRIPT );
+ rBindings.Invalidate( SID_SET_SUB_SCRIPT );
+}
+
+void ScDrawView::DrawMarks( OutputDevice* pOut ) const
+{
+// if (IsMarkHdlShown())
+// DrawMarkHdl(pOut,FALSE);
+
+ USHORT nWinNum = ((ScDrawView*)this)->FindWin(pOut); //! DrawMarks nicht-const
+ if (nWinNum!=SDRVIEWWIN_NOTFOUND)
+ {
+ ((ScDrawView*)this)->AfterInitRedraw(nWinNum); //! DrawMarks nicht-const
+
+ if (IsShownXorVisibleWinNum(nWinNum))
+ ((ScDrawView*)this)->ToggleShownXor(pOut,NULL); //! DrawMarks nicht-const
+ }
+}
+
+void ScDrawView::SetMarkedToLayer( BYTE nLayerNo )
+{
+ //
+ //! Undo !!!
+ //
+
+ if (HasMarkedObj())
+ {
+ const SdrMarkList& rMark = GetMarkList();
+ ULONG nCount = rMark.GetMarkCount();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ SdrObject* pObj = rMark.GetMark(i)->GetObj();
+ if ( !pObj->ISA(SdrUnoObj) )
+ pObj->SetLayer( nLayerNo );
+ }
+
+ // Paint passiert beim SetLayer
+ }
+}
+
+BOOL ScDrawView::HasMarkedControl() const
+{
+ if (HasMarkedObj())
+ {
+ const SdrMarkList& rMark = GetMarkList();
+ ULONG nCount = rMark.GetMarkCount();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ SdrObject* pObj = rMark.GetMark(i)->GetObj();
+ if ( pObj->ISA(SdrUnoObj) )
+ return TRUE;
+ else if ( pObj->ISA(SdrObjGroup) )
+ {
+ SdrObjListIter aIter( *pObj, IM_DEEPWITHGROUPS );
+ SdrObject* pSubObj = aIter.Next();
+ while (pSubObj)
+ {
+ if ( pSubObj->ISA(SdrUnoObj) )
+ return TRUE;
+ pSubObj = aIter.Next();
+ }
+ }
+
+ }
+ }
+ return FALSE; // war nix
+}
+
+void ScDrawView::UpdateWorkArea()
+{
+ SdrPage* pPage = GetModel()->GetPage(nTab);
+ if (pPage)
+ SetWorkArea( Rectangle( Point(), pPage->GetSize() ) );
+ else
+ DBG_ERROR("Page nicht gefunden");
+}
+
+void ScDrawView::DoCut()
+{
+ DoCopy();
+ BegUndo( ScGlobal::GetRscString( STR_UNDO_CUT ) );
+ DeleteMarked(); // auf dieser View - von der 505f Umstellung nicht betroffen
+ EndUndo();
+}
+
+void ScDrawView::GetScale( Fraction& rFractX, Fraction& rFractY ) const
+{
+ rFractX = aScaleX;
+ rFractY = aScaleY;
+}
+
+void ScDrawView::RecalcScale()
+{
+ double nPPTX;
+ double nPPTY;
+ Fraction aZoomX(1,1);
+ Fraction aZoomY(1,1);
+
+ if (pViewData)
+ {
+ nTab = pViewData->GetTabNo();
+ nPPTX = pViewData->GetPPTX();
+ nPPTY = pViewData->GetPPTY();
+ aZoomX = pViewData->GetZoomX();
+ aZoomY = pViewData->GetZoomY();
+ }
+ else
+ {
+ Point aLogic = pDev->LogicToPixel( Point(1000,1000), MAP_TWIP );
+ nPPTX = aLogic.X() / 1000.0;
+ nPPTY = aLogic.Y() / 1000.0;
+ //! Zoom uebergeben ???
+ }
+
+ USHORT nEndCol = 0;
+ USHORT nEndRow = 0;
+ pDoc->GetTableArea( nTab, nEndCol, nEndRow );
+ if (nEndCol<20)
+ nEndCol = 20;
+ if (nEndRow<20)
+ nEndRow = 20;
+
+ ScDrawUtil::CalcScale( pDoc, nTab, 0,0, nEndCol,nEndRow, pDev,aZoomX,aZoomY,nPPTX,nPPTY,
+ aScaleX,aScaleY );
+}
+
+void ScDrawView::PaintObject( SdrObject* pObject, OutputDevice* pDev ) const
+{
+ pXOut->SetOutDev( pDev );
+ SdrPaintInfoRec aInfoRec;
+ pObject->Paint( *pXOut, aInfoRec );
+}
+
+void __EXPORT ScDrawView::MarkListHasChanged()
+{
+ FmFormView::MarkListHasChanged();
+
+ UpdateBrowser();
+
+ ScTabViewShell* pViewSh = pViewData->GetViewShell();
+
+ if (!bInConstruct) // nicht wenn die View gerade angelegt wird
+ {
+ pViewSh->Unmark(); // Selektion auff'm Doc entfernen
+
+ // #65379# end cell edit mode if drawing objects are selected
+ if ( GetMarkList().GetMarkCount() )
+ SC_MOD()->InputEnterHandler();
+ }
+
+ // IP deaktivieren
+
+ ScClient* pClient = (ScClient*) pViewSh->GetIPClient();
+ if ( pClient && pClient->IsInPlaceActive() )
+ {
+ // #41730# beim ViewShell::Activate aus dem Reset2Open nicht die Handles anzeigen
+ bDisableHdl = TRUE;
+
+ pClient->GetProtocol().Reset2Open();
+ SFX_APP()->SetViewFrame(pViewSh->GetViewFrame());
+
+ bDisableHdl = FALSE;
+
+ // Image-Ole wieder durch Grafik ersetzen passiert jetzt in ScClient::UIActivate
+ }
+
+ // Ole-Objekt selektiert?
+
+ SdrOle2Obj* pOle2Obj = NULL;
+ SdrGrafObj* pGrafObj = NULL;
+
+ const SdrMarkList& rMarkList = GetMarkList();
+ ULONG nMarkCount = rMarkList.GetMarkCount();
+
+ if ( nMarkCount == 0 && !pViewData->GetViewShell()->IsDrawSelMode() && !bInConstruct )
+ {
+ // re-lock background layer if it was unlocked in SelectObject
+ SdrLayer* pLayer = GetModel()->GetLayerAdmin().GetLayerPerID(SC_LAYER_BACK);
+ if ( pLayer && !IsLayerLocked( pLayer->GetName() ) )
+ SetLayerLocked( pLayer->GetName(), TRUE );
+ }
+
+ if (nMarkCount == 1)
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+ if (pObj->GetObjIdentifier() == OBJ_OLE2)
+ {
+ pOle2Obj = (SdrOle2Obj*) pObj;
+ if (!pDoc->IsChart(pObj) )
+ pViewSh->SetOleObjectShell(TRUE);
+ else
+ pViewSh->SetChartShell(TRUE);
+ }
+ else if (pObj->GetObjIdentifier() == OBJ_GRAF)
+ {
+ pGrafObj = (SdrGrafObj*) pObj;
+ pViewSh->SetGraphicShell(TRUE);
+ }
+ else if (!pObj->GetObjIdentifier() == OBJ_TEXT // Verhindern, das beim Anlegen
+ || !pViewSh->IsDrawTextShell()) // eines TextObjekts auf die
+ { // DrawShell umgeschaltet wird.
+ pViewSh->SetDrawShell(TRUE); //@#70206#
+ }
+ }
+
+ if (nMarkCount) // VC-Popup, wenn nur VCs markiert sind
+ {
+ BOOL bOnlyControls = TRUE;
+ for (ULONG i=0; i<nMarkCount; i++)
+ {
+ SdrObject* pObj = rMarkList.GetMark(i)->GetObj();
+ if ( pObj->ISA( SdrObjGroup ) )
+ {
+ const SdrObjList *pLst = ((SdrObjGroup*)pObj)->GetSubList();
+ for ( USHORT j = 0; j < pLst->GetObjCount(); ++j )
+ {
+ SdrObject *pSubObj = pLst->GetObj( j );
+
+ if(!pSubObj->ISA(SdrUnoObj))
+ {
+ bOnlyControls = FALSE;
+ break;
+ }
+ }
+
+ if(!bOnlyControls) break;
+ }
+ else if (!pObj->ISA(SdrUnoObj))
+ {
+ bOnlyControls = FALSE;
+ break;
+ }
+ }
+
+ if(bOnlyControls)
+ {
+ pViewSh->SetDrawFormShell(TRUE); // jetzt UNO-Controls
+ }
+ else if(nMarkCount>1)
+ {
+ pViewSh->SetDrawShell(TRUE);
+ }
+ }
+
+
+
+ // Verben anpassen
+
+ BOOL bOle = pViewSh->GetViewFrame()->ISA(SfxInPlaceFrame);
+ if ( pOle2Obj && !bOle )
+ {
+ SvInPlaceObject* pIPObj = pOle2Obj->GetObjRef();
+ if (pIPObj)
+ pViewSh->SetVerbs( &pIPObj->GetVerbList() );
+ else
+ {
+ DBG_ERROR("SdrOle2Obj ohne ObjRef");
+ pViewSh->SetVerbs( 0 );
+ }
+ }
+ else if ( pGrafObj && !bOle && SFX_APP()->HasFeature(SFX_FEATURE_SIMAGE) )
+ {
+ SvVerb aVerb( 0, ScGlobal::GetRscString( STR_UNDO_GRAFEDIT ) );
+ SvVerbList aVerbList;
+ aVerbList.Append( aVerb );
+ pViewSh->SetVerbs( &aVerbList );
+ }
+ else
+ pViewSh->SetVerbs( 0 );
+
+ // Image-Map Editor
+
+ if ( pOle2Obj )
+ UpdateIMap( pOle2Obj );
+ else if ( pGrafObj )
+ UpdateIMap( pGrafObj );
+
+ InvalidateAttribs(); // nach dem IMap-Editor Update
+ InvalidateDrawTextAttrs();
+
+ USHORT nWinCount = GetWinCount();
+ for (USHORT i=0; i<nWinCount; i++)
+ {
+ OutputDevice* pDev = GetWin(i);
+ if (pDev->GetOutDevType() == OUTDEV_WINDOW)
+ ((Window*)pDev)->Update();
+ }
+}
+
+void __EXPORT ScDrawView::ModelHasChanged()
+{
+ FmFormView::ModelHasChanged();
+}
+
+void __EXPORT ScDrawView::UpdateUserViewOptions()
+{
+ if (pViewData)
+ {
+ const ScViewOptions& rOpt = pViewData->GetOptions();
+ const ScGridOptions& rGrid = rOpt.GetGridOptions();
+
+ BOOL bBigHdl = rOpt.GetOption( VOPT_BIGHANDLES );
+
+ SetDragStripes( rOpt.GetOption( VOPT_HELPLINES ) );
+ SetSolidMarkHdl( rOpt.GetOption( VOPT_SOLIDHANDLES ) );
+ SetMarkHdlSizePixel( bBigHdl ? SC_HANDLESIZE_BIG : SC_HANDLESIZE_SMALL );
+
+ SetGridVisible( rGrid.GetGridVisible() );
+ SetSnapEnabled( rGrid.GetUseGridSnap() );
+ SetGridSnap( rGrid.GetUseGridSnap() );
+ SetSnapGrid( Size( rGrid.GetFldSnapX(), rGrid.GetFldSnapY() ) );
+
+ SetGridCoarse( Size( rGrid.GetFldDrawX(), rGrid.GetFldDrawY() ) );
+ SetGridFine( Size( rGrid.GetFldDrawX() / (rGrid.GetFldDivisionX() + 1),
+ rGrid.GetFldDrawY() / (rGrid.GetFldDivisionY() + 1) ) );
+ }
+}
+
+#ifdef WNT
+#pragma optimize ( "", on )
+#endif
+
+BOOL ScDrawView::SelectObject( const String& rName )
+{
+ UnmarkAll();
+
+ USHORT nObjectTab = 0;
+ SdrObject* pFound = NULL;
+
+ SfxObjectShell* pShell = pDoc->GetDocumentShell();
+ if (pShell)
+ {
+ SdrModel* pDrawLayer = GetModel();
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nTabCount && !pFound; i++)
+ {
+ SdrPage* pPage = pDrawLayer->GetPage(i);
+ DBG_ASSERT(pPage,"Page ?");
+ if (pPage)
+ {
+ SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject && !pFound)
+ {
+ if (pObject->GetName() == rName)
+ {
+ pFound = pObject;
+ nObjectTab = i;
+ }
+ pObject = aIter.Next();
+ }
+ }
+ }
+ }
+
+ if ( pFound )
+ {
+ ScTabView* pView = pViewData->GetView();
+ if ( nObjectTab != nTab ) // Tabelle umschalten
+ pView->SetTabNo( nObjectTab );
+
+ DBG_ASSERT( nTab == nObjectTab, "Tabellen umschalten hat nicht geklappt" );
+
+ pView->ScrollToObject( pFound );
+
+ // #61585# to select an object on the background layer, the layer has to
+ // be unlocked even if exclusive drawing selection mode is not active
+ // (this is reversed in MarkListHasChanged when nothing is selected)
+
+ if ( pFound->GetLayer() == SC_LAYER_BACK &&
+ !pViewData->GetViewShell()->IsDrawSelMode() &&
+ !pDoc->IsTabProtected( nTab ) &&
+ !pViewData->GetSfxDocShell()->IsReadOnly() )
+ {
+ SdrLayer* pLayer = GetModel()->GetLayerAdmin().GetLayerPerID(SC_LAYER_BACK);
+ if (pLayer)
+ SetLayerLocked( pLayer->GetName(), FALSE );
+ }
+
+ SdrPageView* pPV = GetPageViewPvNum(0);
+ MarkObj( pFound, pPV );
+ }
+
+ return ( pFound != NULL );
+}
+
+String ScDrawView::GetSelectedChartName() const
+{
+ const SdrMarkList& rMarkList = GetMarkList();
+ if (rMarkList.GetMarkCount() == 1)
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+ if (pObj->GetObjIdentifier() == OBJ_OLE2)
+ if ( pDoc->IsChart(pObj) )
+ return pObj->GetName();
+ }
+
+ return EMPTY_STRING; // nichts gefunden
+}
+
+FASTBOOL ScDrawView::InsertObjectSafe(SdrObject* pObj, SdrPageView& rPV, ULONG nOptions)
+{
+ // Markierung nicht aendern, wenn Ole-Objekt aktiv
+ // (bei Drop aus Ole-Objekt wuerde sonst mitten im ExecuteDrag deaktiviert!)
+
+ if (pViewData)
+ {
+ SfxInPlaceClient* pClient = pViewData->GetViewShell()->GetIPClient();
+ if ( pClient && pClient->IsInPlaceActive() )
+ nOptions |= SDRINSERT_DONTMARK;
+ }
+
+ return InsertObject( pObj, rPV, nOptions );
+}
+
+void __EXPORT ScDrawView::MakeVisible( const Rectangle& rRect, Window& rWin )
+{
+ //! rWin richtig auswerten
+ //! ggf Zoom aendern
+
+ if ( pViewData && pViewData->GetActiveWin() == &rWin )
+ pViewData->GetView()->MakeVisible( rRect );
+}
+
+SdrEndTextEditKind ScDrawView::ScEndTextEdit()
+{
+ BOOL bIsTextEdit = IsTextEdit();
+ SdrEndTextEditKind eKind = EndTextEdit();
+
+ if ( bIsTextEdit && pViewData )
+ pViewData->GetViewShell()->SetDrawTextUndo(NULL); // "normaler" Undo-Manager
+
+ return eKind;
+}
+
+void ScDrawView::MarkDropObj( SdrObject* pObj )
+{
+ if ( pObj )
+ {
+ if ( !pDropMarker )
+ pDropMarker = new SdrViewUserMarker(this);
+ if ( pDropMarkObj != pObj )
+ {
+ pDropMarkObj = pObj;
+ pDropMarker->SetXPolyPolygon(pDropMarkObj, GetPageViewPvNum(0));
+ pDropMarker->Show();
+ }
+ }
+ else // Markierung aufheben
+ {
+ if (pDropMarker)
+ {
+ pDropMarker->Hide();
+ pDropMarkObj = NULL;
+ }
+ }
+}
+
+
+
diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx
new file mode 100644
index 000000000000..f19358c0c2f9
--- /dev/null
+++ b/sc/source/ui/view/editsh.cxx
@@ -0,0 +1,886 @@
+/*************************************************************************
+ *
+ * $RCSfile: editsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <svx/cntritem.hxx>
+#include <svx/chardlg.hxx>
+#include <svx/crsditem.hxx>
+#include <svx/editeng.hxx>
+#include <svx/editview.hxx>
+#include <svx/eeitem.hxx>
+#include <svx/escpitem.hxx>
+#include <svx/flditem.hxx>
+#include <svx/fontitem.hxx>
+#include <svx/hlnkitem.hxx>
+#include <svx/postitem.hxx>
+#include <svx/shdditem.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/udlnitem.hxx>
+#include <svx/wghtitem.hxx>
+#include <sfx2/basedlgs.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/msg.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/request.hxx>
+#include <so3/pastedlg.hxx>
+#include <sot/exchange.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/sound.hxx>
+
+
+#define GLOBALOVERFLOW
+#include <segmentc.hxx>
+
+
+#define _EDITSH_CXX
+#include "editsh.hxx"
+
+#include "scresid.hxx"
+#include "global.hxx"
+#include "sc.hrc"
+#include "scmod.hxx"
+#include "inputhdl.hxx"
+#include "viewutil.hxx"
+#include "viewdata.hxx"
+#include "document.hxx"
+#include "namepast.hxx"
+#include "reffind.hxx"
+#include "tabvwsh.hxx"
+
+#define ScEditShell
+#include "scslots.hxx"
+
+SEG_EOFGLOBALS()
+
+#pragma SEG_SEGCLASS(SFXMACROS_SEG,STARTWORK_CODE)
+
+TYPEINIT1( ScEditShell, SfxShell );
+#pragma SEG_FUNCDEF(editsh_0a)
+
+SFX_IMPL_INTERFACE(ScEditShell, SfxShell, ScResId(SCSTR_EDITSHELL))
+{
+ SFX_POPUPMENU_REGISTRATION( ScResId(RID_POPUP_EDIT) );
+}
+
+
+#pragma SEG_FUNCDEF(editsh_01)
+
+ScEditShell::ScEditShell(EditView* pView, ScViewData* pData) :
+ pEditView (pView),
+ pViewData (pData),
+ bIsInsertMode (TRUE)
+{
+ SetPool( pEditView->GetEditEngine()->GetEmptyItemSet().GetPool() );
+ SetUndoManager( &pEditView->GetEditEngine()->GetUndoManager() );
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("EditCell")));
+}
+
+#pragma SEG_FUNCDEF(editsh_02)
+
+ScEditShell::~ScEditShell()
+{
+}
+
+#pragma SEG_FUNCDEF(editsh_08)
+
+void ScEditShell::SetEditView(EditView* pView)
+{
+ pEditView = pView;
+ pEditView->SetInsertMode( bIsInsertMode );
+ SetPool( pEditView->GetEditEngine()->GetEmptyItemSet().GetPool() );
+ SetUndoManager( &pEditView->GetEditEngine()->GetUndoManager() );
+}
+
+#pragma SEG_FUNCDEF(editsh_04)
+
+void ScEditShell::Execute( SfxRequest& rReq )
+{
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl();
+ DBG_ASSERT(pHdl,"kein ScInputHandler");
+
+ EditView* pTopView = pHdl->GetTopView(); // hat Eingabezeile den Focus?
+ EditView* pTableView = pHdl->GetTableView();
+
+ DBG_ASSERT(pTableView,"keine EditView :-(");
+
+ EditEngine* pEngine = pTableView->GetEditEngine();
+
+ pHdl->DataChanging();
+ BOOL bSetSelIsRef = FALSE;
+
+ switch ( nSlot )
+ {
+ case FID_INS_CELL_CONTENTS: // Insert-Taste, weil als Acc definiert
+ bIsInsertMode = !pTableView->IsInsertMode();
+ pTableView->SetInsertMode( bIsInsertMode );
+ if (pTopView)
+ pTopView->SetInsertMode( bIsInsertMode );
+ SFX_BINDINGS().Invalidate( SID_ATTR_INSERT );
+ break;
+
+ case SID_ATTR_INSERT:
+ if ( pReqArgs )
+ {
+ bIsInsertMode = ((const SfxBoolItem&)pReqArgs->Get(nSlot)).GetValue();
+ pTableView->SetInsertMode( bIsInsertMode );
+ if (pTopView)
+ pTopView->SetInsertMode( bIsInsertMode );
+ SFX_BINDINGS().Invalidate( SID_ATTR_INSERT );
+ }
+ break;
+
+ case SID_COPY:
+ pTableView->Copy();
+ break;
+
+ case SID_CUT:
+ pTableView->Cut();
+ if (pTopView)
+ pTopView->DeleteSelected();
+ break;
+
+ case SID_PASTE:
+ pTableView->PasteSpecial();
+ if (pTopView)
+ pTopView->Paste();
+ break;
+
+ case SID_DELETE:
+ pTableView->DeleteSelected();
+ if (pTopView)
+ pTopView->DeleteSelected();
+ break;
+
+ case SID_CELL_FORMAT_RESET: // "Standard"
+ pTableView->RemoveAttribs(TRUE); // TRUE: auch Absatz-Attribute
+ if (pTopView)
+ pTopView->RemoveAttribs(TRUE);
+ break;
+
+ case FID_PASTE_CONTENTS:
+ {
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (pClipObj.Is())
+ {
+ SvPasteObjectDialog* pDlg = new SvPasteObjectDialog;
+ pDlg->Insert( FORMAT_STRING, ScResId( SCSTR_CLIP_STRING ) );
+ pDlg->Insert( FORMAT_RTF, ScResId( SCSTR_CLIP_RTF ) );
+
+ ULONG nFormat = pDlg->Execute( pViewData->GetDialogParent(), pClipObj );
+ DELETEZ(pDlg);
+
+ // while the dialog was open, edit mode may have been stopped
+ if (!SC_MOD()->IsInputMode())
+ {
+ Sound::Beep();
+ return;
+ }
+
+ if (nFormat > 0)
+ {
+ if (FORMAT_STRING == nFormat)
+ pTableView->Paste();
+ else
+ pTableView->PasteSpecial();
+
+ if (pTopView)
+ pTopView->Paste();
+ }
+
+ if (pTopView)
+ pTopView->GetWindow()->GrabFocus();
+ }
+ }
+ break;
+
+ case SID_SELECTALL:
+ {
+ USHORT nPar = pEngine->GetParagraphCount();
+ if (nPar)
+ {
+ xub_StrLen nLen = pEngine->GetTextLen(nPar-1);
+ pTableView->SetSelection(ESelection(0,0,nPar-1,nLen));
+ if (pTopView)
+ pTopView->SetSelection(ESelection(0,0,nPar-1,nLen));
+ }
+ }
+ break;
+
+ case SID_CHARMAP:
+ {
+ const SvxFontItem& rItem = (const SvxFontItem&)
+ pTableView->GetAttribs().Get(EE_CHAR_FONTINFO);
+
+ String aString;
+ SvxFontItem aNewItem( EE_CHAR_FONTINFO );
+
+ BOOL bOk = ScViewUtil::ExecuteCharMap( rItem, aNewItem, aString );
+
+ // while the dialog was open, edit mode may have been stopped
+ if (!SC_MOD()->IsInputMode())
+ {
+ Sound::Beep();
+ return;
+ }
+
+ if (bOk)
+ {
+ SfxItemSet aSet( pTableView->GetEmptyItemSet() );
+ aSet.Put( aNewItem );
+ // SetAttribs an der View selektiert ein Wort, wenn nichts selektiert ist
+ pTableView->GetEditEngine()->QuickSetAttribs( aSet, pTableView->GetSelection() );
+ pTableView->InsertText(aString);
+ if (pTopView)
+ pTopView->InsertText(aString);
+ }
+
+ if (pTopView)
+ pTopView->GetWindow()->GrabFocus();
+ }
+ break;
+
+ case FID_INSERT_NAME:
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScNamePasteDlg* pDlg = new ScNamePasteDlg( pViewData->GetDialogParent(),
+ pDoc->GetRangeName(), FALSE );
+ // "Liste" disablen
+
+ short nRet = pDlg->Execute();
+ // pDlg is needed below
+
+ // while the dialog was open, edit mode may have been stopped
+ if (!SC_MOD()->IsInputMode())
+ {
+ Sound::Beep();
+ delete pDlg;
+ return;
+ }
+
+ if ( nRet == BTN_PASTE_NAME )
+ {
+ String aName = pDlg->GetSelectedName();
+ pTableView->InsertText(aName);
+ if (pTopView)
+ pTopView->InsertText(aName);
+ }
+ delete pDlg;
+
+ if (pTopView)
+ pTopView->GetWindow()->GrabFocus();
+ }
+ break;
+
+ case SID_CHAR_DLG:
+ {
+ SfxItemSet aAttrs( pTableView->GetAttribs() );
+
+ SfxObjectShell* pObjSh = pViewData->GetSfxDocShell();
+ const SvxFontListItem* pFontListItem =
+ (const SvxFontListItem*) pObjSh->GetItem( SID_ATTR_CHAR_FONTLIST);
+
+ SfxSingleTabDialog* pDlg
+ = new SfxSingleTabDialog( pViewData->GetViewShell()->GetViewFrame(),
+ pViewData->GetDialogParent(),
+ aAttrs, RID_SCDLG_EDITCHAR, FALSE );
+ SfxTabPage* pPage = SvxCharStdPage::Create( pDlg, aAttrs );
+ ((SvxCharStdPage*)pPage)->SetFontList( *pFontListItem );
+ pDlg->SetTabPage( pPage );
+
+ short nRet = pDlg->Execute();
+ // pDlg is needed below
+
+ // while the dialog was open, edit mode may have been stopped
+ if (!SC_MOD()->IsInputMode())
+ {
+ Sound::Beep();
+ delete pDlg;
+ return;
+ }
+
+ if ( nRet == RET_OK )
+ {
+ const SfxItemSet* pOut = pDlg->GetOutputItemSet();
+ pTableView->SetAttribs( *pOut );
+ }
+ delete pDlg;
+ }
+ break;
+
+ case SID_TOGGLE_REL:
+ {
+ BOOL bOk = FALSE;
+ if (pEngine->GetParagraphCount() == 1)
+ {
+ String aText = pEngine->GetText();
+ ESelection aSel = pEditView->GetSelection(); // aktuelle View
+
+ ScRefFinder aFinder( aText, pViewData->GetDocument() );
+ aFinder.ToggleRel( aSel.nStartPos, aSel.nEndPos );
+ if (aFinder.GetFound())
+ {
+ String aNew = aFinder.GetText();
+ ESelection aSel( 0,aFinder.GetSelStart(), 0,aFinder.GetSelEnd() );
+ pEngine->SetText( aNew );
+ pTableView->SetSelection( aSel );
+ if ( pTopView )
+ {
+ pTopView->GetEditEngine()->SetText( aNew );
+ pTopView->SetSelection( aSel );
+ }
+ bOk = TRUE;
+
+ // Referenz wird selektiert -> beim Tippen nicht ueberschreiben
+ bSetSelIsRef = TRUE;
+ }
+ }
+ if (!bOk)
+ Sound::Beep(); // keine Referenzen oder mehrere Absätze
+ }
+ break;
+
+ case SID_HYPERLINK_SETLINK:
+ if( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs->GetItemState( SID_HYPERLINK_SETLINK, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ const SvxHyperlinkItem* pHyper = (const SvxHyperlinkItem*) pItem;
+ const String& rName = pHyper->GetName();
+ const String& rURL = pHyper->GetURL();
+ const String& rTarget = pHyper->GetTargetFrame();
+ SvxLinkInsertMode eMode = pHyper->GetInsertMode();
+
+ BOOL bDone = FALSE;
+ if ( eMode == HLINK_DEFAULT || eMode == HLINK_FIELD )
+ {
+ const SvxURLField* pURLField = GetURLField();
+ if ( pURLField )
+ {
+ // altes Feld selektieren
+
+ ESelection aSel = pTableView->GetSelection();
+ aSel.Adjust();
+ aSel.nEndPara = aSel.nStartPara;
+ aSel.nEndPos = aSel.nStartPos + 1;
+ pTableView->SetSelection( aSel );
+
+ // neues Feld einfuegen
+
+ SvxURLField aURLField( rURL, rName, SVXURLFORMAT_REPR );
+ aURLField.SetTargetFrame( rTarget );
+ SvxFieldItem aURLItem( aURLField );
+ pTableView->InsertField( aURLItem );
+ pTableView->SetSelection( aSel ); // select inserted field
+
+ // #57254# jetzt doch auch Felder in der Top-View
+
+ if ( pTopView )
+ {
+ aSel = pTopView->GetSelection();
+ aSel.nEndPara = aSel.nStartPara;
+ aSel.nEndPos = aSel.nStartPos + 1;
+ pTopView->SetSelection( aSel );
+ pTopView->InsertField( aURLItem );
+ pTopView->SetSelection( aSel ); // select inserted field
+ }
+
+ bDone = TRUE;
+ }
+ }
+
+ if (!bDone)
+ {
+ pViewData->GetViewShell()->
+ InsertURL( rName, rURL, rTarget, (USHORT) eMode );
+
+ // InsertURL an der ViewShell schaltet bei "Button"
+ // die EditShell ab, darum sofort return
+
+ return;
+ }
+ }
+ }
+ break;
+ }
+
+ pHdl->DataChanged();
+ if (bSetSelIsRef)
+ pHdl->SetSelIsRef(TRUE);
+}
+
+#pragma SEG_FUNCDEF(editsh_05)
+
+void __EXPORT ScEditShell::GetState( SfxItemSet& rSet )
+{
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl();
+ EditView* pActiveView = pHdl ? pHdl->GetActiveView() : pEditView;
+
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ while (nWhich)
+ {
+ switch (nWhich)
+ {
+ case SID_ATTR_INSERT: // Statuszeile
+ {
+ if ( pActiveView )
+ rSet.Put( SfxBoolItem( nWhich, pActiveView->IsInsertMode() ) );
+ else
+ rSet.Put( SfxBoolItem( nWhich, 42 ) );
+ }
+ break;
+
+ case SID_HYPERLINK_GETLINK:
+ {
+ SvxHyperlinkItem aHLinkItem;
+ const SvxURLField* pURLField = GetURLField();
+ if ( pURLField )
+ {
+ aHLinkItem.SetName( pURLField->GetRepresentation() );
+ aHLinkItem.SetURL( pURLField->GetURL() );
+ aHLinkItem.SetTargetFrame( pURLField->GetTargetFrame() );
+ }
+ else if ( pActiveView )
+ {
+ // use selected text as name for urls
+ String sReturn = pActiveView->GetSelected();
+ sReturn.Erase(255);
+ sReturn.EraseTrailingChars();
+ aHLinkItem.SetName(sReturn);
+ }
+ rSet.Put(aHLinkItem);
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+#pragma SEG_FUNCDEF(editsh_0c)
+
+const SvxURLField* ScEditShell::GetURLField()
+{
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl();
+ EditView* pActiveView = pHdl ? pHdl->GetActiveView() : pEditView;
+ if ( pActiveView )
+ {
+ const SvxFieldItem* pFieldItem = pActiveView->GetFieldAtSelection();
+ if (pFieldItem)
+ {
+ const SvxFieldData* pField = pFieldItem->GetField();
+ if ( pField && pField->ISA(SvxURLField) )
+ return (const SvxURLField*)pField;
+ }
+ }
+
+ return NULL;
+}
+
+#pragma SEG_FUNCDEF(editsh_09)
+
+void __EXPORT ScEditShell::GetClipState( SfxItemSet& rSet )
+{
+ BOOL bPaste = FALSE;
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (pClipObj.Is())
+ {
+ const SvDataTypeList& rTypeLst = pClipObj->GetTypeList();
+
+ if( rTypeLst.Get( FORMAT_STRING ) || rTypeLst.Get( FORMAT_RTF ) )
+ bPaste = TRUE;
+ }
+
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+ while (nWhich)
+ {
+ switch (nWhich)
+ {
+ case SID_PASTE:
+ case FID_PASTE_CONTENTS:
+ if( !bPaste )
+ rSet.DisableItem( nWhich );
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+void lcl_InvalidateUnder( SfxBindings& rBindings )
+{
+ rBindings.Invalidate( SID_ATTR_CHAR_UNDERLINE );
+ rBindings.Invalidate( SID_ULINE_VAL_NONE );
+ rBindings.Invalidate( SID_ULINE_VAL_SINGLE );
+ rBindings.Invalidate( SID_ULINE_VAL_DOUBLE );
+ rBindings.Invalidate( SID_ULINE_VAL_DOTTED );
+}
+
+#pragma SEG_FUNCDEF(editsh_06)
+
+void ScEditShell::ExecuteAttr(SfxRequest& rReq)
+{
+ SfxItemSet aSet( pEditView->GetEmptyItemSet() );
+ SfxBindings& rBindings = SFX_BINDINGS();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+
+ switch ( nSlot )
+ {
+ case SID_ATTR_CHAR_FONTHEIGHT:
+ case SID_ATTR_CHAR_FONT:
+ case SID_ATTR_CHAR_COLOR:
+ {
+ if (pArgs)
+ {
+ aSet.Put( pArgs->Get( pArgs->GetPool()->GetWhich( nSlot ) ) );
+ rBindings.Invalidate( nSlot );
+ }
+ }
+ break;
+
+ // Toggles
+
+ case SID_ATTR_CHAR_WEIGHT:
+ {
+ BOOL bOld = ((const SvxWeightItem&)pEditView->GetAttribs().
+ Get(EE_CHAR_WEIGHT)).GetValue() > WEIGHT_NORMAL;
+ aSet.Put( SvxWeightItem( bOld ? WEIGHT_NORMAL : WEIGHT_BOLD, EE_CHAR_WEIGHT ) );
+ rBindings.Invalidate( nSlot );
+ }
+ break;
+
+ case SID_ATTR_CHAR_POSTURE:
+ {
+ BOOL bOld = ((const SvxPostureItem&)pEditView->GetAttribs().
+ Get(EE_CHAR_ITALIC)).GetValue() != ITALIC_NONE;
+ aSet.Put( SvxPostureItem( bOld ? ITALIC_NONE : ITALIC_NORMAL, EE_CHAR_ITALIC ) );
+ rBindings.Invalidate( nSlot );
+ }
+ break;
+
+ case SID_ULINE_VAL_NONE:
+ aSet.Put( SvxUnderlineItem( UNDERLINE_NONE, EE_CHAR_UNDERLINE ) );
+ lcl_InvalidateUnder( rBindings );
+ break;
+
+ case SID_ATTR_CHAR_UNDERLINE: // Toggles
+ case SID_ULINE_VAL_SINGLE:
+ case SID_ULINE_VAL_DOUBLE:
+ case SID_ULINE_VAL_DOTTED:
+ {
+ FontUnderline eOld = ((const SvxUnderlineItem&) pEditView->
+ GetAttribs().Get(EE_CHAR_UNDERLINE)).GetUnderline();
+ FontUnderline eNew = eOld;
+ switch (nSlot)
+ {
+ case SID_ATTR_CHAR_UNDERLINE:
+ eNew = ( eOld != UNDERLINE_NONE ) ? UNDERLINE_NONE : UNDERLINE_SINGLE;
+ break;
+ case SID_ULINE_VAL_SINGLE:
+ eNew = ( eOld == UNDERLINE_SINGLE ) ? UNDERLINE_NONE : UNDERLINE_SINGLE;
+ break;
+ case SID_ULINE_VAL_DOUBLE:
+ eNew = ( eOld == UNDERLINE_DOUBLE ) ? UNDERLINE_NONE : UNDERLINE_DOUBLE;
+ break;
+ case SID_ULINE_VAL_DOTTED:
+ eNew = ( eOld == UNDERLINE_DOTTED ) ? UNDERLINE_NONE : UNDERLINE_DOTTED;
+ break;
+ }
+ aSet.Put( SvxUnderlineItem( eNew, EE_CHAR_UNDERLINE ) );
+ lcl_InvalidateUnder( rBindings );
+ }
+ break;
+
+ case SID_ATTR_CHAR_STRIKEOUT:
+ {
+ BOOL bOld = ((const SvxCrossedOutItem&)pEditView->GetAttribs().
+ Get(EE_CHAR_STRIKEOUT)).GetValue() != STRIKEOUT_NONE;
+ aSet.Put( SvxCrossedOutItem( bOld ? STRIKEOUT_NONE : STRIKEOUT_SINGLE, EE_CHAR_STRIKEOUT ) );
+ rBindings.Invalidate( nSlot );
+ }
+ break;
+
+ case SID_ATTR_CHAR_SHADOWED:
+ {
+ BOOL bOld = ((const SvxShadowedItem&)pEditView->GetAttribs().
+ Get(EE_CHAR_SHADOW)).GetValue();
+ aSet.Put( SvxShadowedItem( !bOld, EE_CHAR_SHADOW ) );
+ rBindings.Invalidate( nSlot );
+ }
+ break;
+
+ case SID_ATTR_CHAR_CONTOUR:
+ {
+ BOOL bOld = ((const SvxContourItem&)pEditView->GetAttribs().
+ Get(EE_CHAR_OUTLINE)).GetValue();
+ aSet.Put( SvxContourItem( !bOld, EE_CHAR_OUTLINE ) );
+ rBindings.Invalidate( nSlot );
+ }
+ break;
+
+ case SID_SET_SUPER_SCRIPT:
+ {
+ SvxEscapement eOld = (SvxEscapement) ((const SvxEscapementItem&)
+ pEditView->GetAttribs().Get(EE_CHAR_ESCAPEMENT)).GetEnumValue();
+ SvxEscapement eNew = (eOld == SVX_ESCAPEMENT_SUPERSCRIPT) ?
+ SVX_ESCAPEMENT_OFF : SVX_ESCAPEMENT_SUPERSCRIPT;
+ aSet.Put( SvxEscapementItem( eNew, EE_CHAR_ESCAPEMENT ) );
+ rBindings.Invalidate( nSlot );
+ }
+ break;
+ case SID_SET_SUB_SCRIPT:
+ {
+ SvxEscapement eOld = (SvxEscapement) ((const SvxEscapementItem&)
+ pEditView->GetAttribs().Get(EE_CHAR_ESCAPEMENT)).GetEnumValue();
+ SvxEscapement eNew = (eOld == SVX_ESCAPEMENT_SUBSCRIPT) ?
+ SVX_ESCAPEMENT_OFF : SVX_ESCAPEMENT_SUBSCRIPT;
+ aSet.Put( SvxEscapementItem( eNew, EE_CHAR_ESCAPEMENT ) );
+ rBindings.Invalidate( nSlot );
+ }
+ break;
+ }
+
+ //
+ // anwenden
+ //
+
+ EditEngine* pEngine = pEditView->GetEditEngine();
+ BOOL bOld = pEngine->GetUpdateMode();
+ pEngine->SetUpdateMode(FALSE);
+
+ pEditView->SetAttribs( aSet );
+
+ pEngine->SetUpdateMode(bOld);
+ pEditView->Invalidate();
+
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl();
+ pHdl->SetModified();
+
+ rReq.Done();
+}
+
+#pragma SEG_FUNCDEF(editsh_07)
+
+void ScEditShell::GetAttrState(SfxItemSet &rSet)
+{
+ SfxItemSet aAttribs = pEditView->GetAttribs();
+ rSet.Put( aAttribs );
+
+ // Unterstreichung
+
+ SfxItemState eState = aAttribs.GetItemState( EE_CHAR_UNDERLINE, TRUE );
+ if ( eState == SFX_ITEM_DONTCARE )
+ {
+ rSet.InvalidateItem( SID_ULINE_VAL_NONE );
+ rSet.InvalidateItem( SID_ULINE_VAL_SINGLE );
+ rSet.InvalidateItem( SID_ULINE_VAL_DOUBLE );
+ rSet.InvalidateItem( SID_ULINE_VAL_DOTTED );
+ }
+ else
+ {
+ FontUnderline eUnderline = ((const SvxUnderlineItem&)
+ aAttribs.Get(EE_CHAR_UNDERLINE)).GetUnderline();
+ USHORT nId = SID_ULINE_VAL_NONE;
+ switch (eUnderline)
+ {
+ case UNDERLINE_SINGLE: nId = SID_ULINE_VAL_SINGLE; break;
+ case UNDERLINE_DOUBLE: nId = SID_ULINE_VAL_DOUBLE; break;
+ case UNDERLINE_DOTTED: nId = SID_ULINE_VAL_DOTTED; break;
+ default:
+ break;
+ }
+ rSet.Put( SfxBoolItem( nId, TRUE ) );
+ }
+
+ //! Testen, ob Klammer-Hervorhebung aktiv ist !!!!
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl();
+ if ( pHdl && pHdl->IsFormulaMode() )
+ rSet.ClearItem( EE_CHAR_WEIGHT ); // hervorgehobene Klammern hier nicht
+}
+
+#pragma SEG_FUNCDEF(editsh_0b)
+
+String ScEditShell::GetSelectionText( BOOL bWholeWord )
+{
+ String aStrSelection;
+
+ if ( bWholeWord )
+ {
+ EditEngine* pEngine = pEditView->GetEditEngine();
+ ESelection aSel = pEditView->GetSelection();
+ String aStrCurrentDelimiters = pEngine->GetWordDelimiters();
+
+ pEngine->SetWordDelimiters( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(" .,;\"'")) );
+ aStrSelection = pEngine->GetWord( aSel.nEndPara, aSel.nEndPos );
+ pEngine->SetWordDelimiters( aStrCurrentDelimiters );
+ }
+ else
+ {
+ aStrSelection = pEditView->GetSelected();
+ }
+
+ return aStrSelection;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.85 2000/09/17 14:09:31 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.84 2000/08/31 16:38:45 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.83 2000/07/21 18:21:23 nn
+ select url field after inserting
+
+ Revision 1.82 2000/07/21 10:35:15 nn
+ #75683# SID_HYPERLINK_GETLINK: use selection as text if no link selected
+
+ Revision 1.81 2000/05/09 18:30:15 nn
+ use IMPL_INTERFACE macro without IDL
+
+ Revision 1.80 2000/04/14 08:31:37 nn
+ unicode changes
+
+ Revision 1.79 2000/03/31 17:27:08 nn
+ #74687# after executing dialogs, check for edit mode
+
+ Revision 1.78 2000/02/11 12:37:23 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.77 1999/09/24 15:59:13 nn
+ hlnkitem.hxx moved to svx
+
+ Revision 1.76 1999/06/02 19:41:34 ANK
+ #66547# SubShells
+
+
+ Rev 1.75 02 Jun 1999 21:41:34 ANK
+ #66547# SubShells
+
+ Rev 1.74 14 Jan 1999 16:21:56 NN
+ #60725# SID_CHARMAP: SetAttribs an der EditEngine statt der View
+
+ Rev 1.73 13 Jan 1999 17:05:52 NN
+ #60811# SID_HYPERLINK_SETLINK: Adjust an der Selektion rufen
+
+ Rev 1.72 16 Nov 1998 20:48:28 NN
+ #57254# SID_HYPERLINK_SETLINK: auch TopView
+
+ Rev 1.71 05 Dec 1997 19:21:52 NN
+ Includes
+
+ Rev 1.70 02 Dec 1997 12:38:40 TJ
+ include
+
+ Rev 1.69 24 Nov 1997 20:06:08 NN
+ includes
+
+ Rev 1.68 11 Sep 1997 19:57:02 NN
+ Hyperlink ersetzen: Einfuegen auf Selektion
+
+ Rev 1.67 04 Sep 1997 19:44:22 RG
+ change header
+
+ Rev 1.66 27 Aug 1997 12:19:28 TRI
+ VCL Anpassung
+
+ Rev 1.65 05 Aug 1997 14:29:22 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.64 01 Aug 1997 11:32:58 NN
+ #42327# RemoveAttribs(TRUE)
+
+ Rev 1.63 30 Jul 1997 17:27:10 HJS
+ includes
+
+ Rev 1.62 29 Jul 1997 21:23:02 MH
+ Syntax
+
+ Rev 1.61 29 Jul 1997 09:55:14 OM
+ Hyperlink Statusmethode
+
+ Rev 1.60 16 Jul 1997 21:04:26 NN
+ Hypo-Feature: Klammern hervorheben
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx
new file mode 100644
index 000000000000..73d35153dc48
--- /dev/null
+++ b/sc/source/ui/view/formatsh.cxx
@@ -0,0 +1,1805 @@
+/*************************************************************************
+ *
+ * $RCSfile: formatsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SI_NOSBXCONTROLS
+#define _VCONT_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/request.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+
+#define _ZFORLIST_DECLARE_TABLE
+#include <svtools/stritem.hxx>
+#include <svtools/zformat.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/langitem.hxx>
+#include <svx/numinf.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/templdlg.hxx>
+#include <sfx2/tplpitem.hxx>
+#include <svx/svxenum.hxx>
+#include <svx/algitem.hxx>
+#include <svx/wghtitem.hxx>
+#include <svx/postitem.hxx>
+#include <svx/udlnitem.hxx>
+#include <svx/bolnitem.hxx>
+#include <svx/colritem.hxx>
+#include <svx/brshitem.hxx>
+
+#include "formatsh.hxx"
+#include "sc.hrc"
+#include "docsh.hxx"
+#include "patattr.hxx"
+#include "scmod.hxx"
+#include "styledlg.hxx"
+#include "attrdlg.hrc"
+#include "stlpool.hxx"
+#include "stlsheet.hxx"
+#include "printfun.hxx"
+#include "docpool.hxx"
+#include "scresid.hxx"
+#include "tabvwsh.hxx"
+#include "undostyl.hxx"
+
+
+#define ScFormatShell
+#define TableFont
+#define FormatForSelection
+#include "scslots.hxx"
+
+#define Interior
+#include <svx/svxslots.hxx>
+
+
+TYPEINIT1( ScFormatShell, SfxShell );
+
+SFX_IMPL_INTERFACE(ScFormatShell, SfxShell, ScResId(SCSTR_FORMATSHELL) )
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT | SFX_VISIBILITY_STANDARD |
+ SFX_VISIBILITY_SERVER,
+ ScResId(RID_OBJECTBAR_FORMAT));
+
+}
+
+
+ScFormatShell::ScFormatShell(ScViewData* pData) :
+ SfxShell(pData->GetViewShell()),
+ pViewData(pData)
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+
+ SetPool( &pTabViewShell->GetPool() );
+ SetUndoManager( pViewData->GetSfxDocShell()->GetUndoManager() );
+ SetHelpId(HID_SCSHELL_FORMATSH);
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Format")));
+}
+
+ScFormatShell::~ScFormatShell()
+{
+}
+
+//------------------------------------------------------------------
+
+void __EXPORT ScFormatShell::GetStyleState( SfxItemSet& rSet )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ SfxStyleSheetBasePool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = NULL;
+
+ BOOL bProtected = FALSE;
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nTabCount; i++)
+ if (pDoc->IsTabProtected(i)) // ueberhaupt eine Tabelle geschuetzt?
+ bProtected = TRUE;
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ USHORT nSlotId = 0;
+
+ while ( nWhich )
+ {
+ nSlotId = SfxItemPool::IsWhich( nWhich )
+ ? GetPool().GetSlotId( nWhich )
+ : nWhich;
+
+ switch ( nSlotId )
+ {
+ case SID_STYLE_APPLY:
+ if ( !pStylePool )
+ rSet.DisableItem( nSlotId );
+ break;
+
+ case SID_STYLE_FAMILY2: // Zellvorlagen
+ {
+ SfxStyleSheet* pStyleSheet = (SfxStyleSheet*)
+ pTabViewShell->GetStyleSheetFromMarked();
+
+ if ( pStyleSheet )
+ rSet.Put( SfxTemplateItem( nSlotId, pStyleSheet->GetName() ) );
+ else
+ rSet.Put( SfxTemplateItem( nSlotId, String() ) );
+ }
+ break;
+
+ case SID_STYLE_FAMILY4: // Seitenvorlagen
+ {
+ USHORT nCurTab = GetViewData()->GetTabNo();
+ String aPageStyle = pDoc->GetPageStyle( nCurTab );
+ SfxStyleSheet* pStyleSheet = (SfxStyleSheet*)pStylePool->
+ Find( aPageStyle, SFX_STYLE_FAMILY_PAGE );
+
+ if ( pStyleSheet )
+ rSet.Put( SfxTemplateItem( nSlotId, aPageStyle ) );
+ else
+ rSet.Put( SfxTemplateItem( nSlotId, String() ) );
+ }
+ break;
+
+ case SID_STYLE_WATERCAN:
+ {
+ rSet.Put( SfxBoolItem( nSlotId, SC_MOD()->GetIsWaterCan() ) );
+ }
+ break;
+
+ case SID_STYLE_UPDATE_BY_EXAMPLE:
+ {
+ ISfxTemplateCommon* pDesigner = SFX_APP()->
+ GetCurrentTemplateCommon(pTabViewShell->GetViewFrame()->GetBindings());
+ BOOL bPage = pDesigner && SFX_STYLE_FAMILY_PAGE == pDesigner->GetActualFamily();
+
+ if ( bProtected || bPage )
+ rSet.DisableItem( nSlotId );
+ }
+ break;
+
+ case SID_STYLE_EDIT:
+ case SID_STYLE_DELETE:
+ {
+ ISfxTemplateCommon* pDesigner = SFX_APP()->
+ GetCurrentTemplateCommon(pTabViewShell->GetViewFrame()->GetBindings());
+ BOOL bPage = pDesigner && SFX_STYLE_FAMILY_PAGE == pDesigner->GetActualFamily();
+
+ if ( bProtected && !bPage )
+ rSet.DisableItem( nSlotId );
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+}
+
+//------------------------------------------------------------------
+
+void __EXPORT ScFormatShell::ExecuteStyle( SfxRequest& rReq )
+{
+ // Wenn ToolBar vertikal :
+ if ( !rReq.GetArgs() )
+ {
+ SFX_DISPATCHER().Execute( SID_STYLE_DESIGNER, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
+ return;
+ }
+
+ //--------------------------------------------------------------------
+ SfxBindings& rBindings = SFX_BINDINGS();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ const USHORT nSlotId = rReq.GetSlot();
+ const USHORT nCurTab = GetViewData()->GetTabNo();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScTabViewShell* pTabViewShell= GetViewData()->GetViewShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ ScModule* pScMod = SC_MOD();
+ String aRefName;
+
+ if ( (nSlotId == SID_STYLE_NEW)
+ || (nSlotId == SID_STYLE_EDIT)
+ || (nSlotId == SID_STYLE_DELETE)
+ || (nSlotId == SID_STYLE_APPLY)
+ || (nSlotId == SID_STYLE_WATERCAN)
+ || (nSlotId == SID_STYLE_FAMILY)
+ || (nSlotId == SID_STYLE_NEW_BY_EXAMPLE)
+ || (nSlotId == SID_STYLE_UPDATE_BY_EXAMPLE) )
+ {
+ SfxStyleSheetBasePool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = NULL;
+
+ BOOL bAddUndo = FALSE; // add ScUndoModifyStyle (style modified)
+ ScStyleSaveData aOldData; // for undo/redo
+ ScStyleSaveData aNewData;
+
+ SfxStyleFamily eFamily = SFX_STYLE_FAMILY_PARA;
+ const SfxPoolItem* pFamItem;
+ if ( pArgs && SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_FAMILY, TRUE, &pFamItem ) )
+ eFamily = (SfxStyleFamily)((const SfxUInt16Item*)pFamItem)->GetValue();
+
+ String aStyleName;
+ USHORT nRetMask = 0xffff;
+ BOOL bGrabFocus = ( SID_STYLE_APPLY == nSlotId );
+
+ pStylePool->SetSearchMask( eFamily, SFXSTYLEBIT_ALL );
+
+ switch ( nSlotId )
+ {
+ case SID_STYLE_NEW:
+ {
+ const SfxPoolItem* pNameItem;
+ if (pArgs && SFX_ITEM_SET == pArgs->GetItemState( nSlotId, TRUE, &pNameItem ))
+ aStyleName = ((const SfxStringItem*)pNameItem)->GetValue();
+
+ const SfxPoolItem* pRefItem=NULL;
+ if (pArgs && SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_REFERENCE, TRUE, &pRefItem ))
+ {
+ if(pRefItem!=NULL)
+ aRefName = ((const SfxStringItem*)pRefItem)->GetValue();
+ }
+
+ pStyleSheet = &(pStylePool->Make( aStyleName, eFamily,
+ SFXSTYLEBIT_USERDEF ) );
+
+ if(pStyleSheet!=NULL) pStyleSheet->SetParent(aRefName);
+ }
+ break;
+
+ case SID_STYLE_EDIT:
+ case SID_STYLE_DELETE:
+ case SID_STYLE_APPLY:
+ case SID_STYLE_NEW_BY_EXAMPLE:
+ {
+ const SfxPoolItem* pNameItem;
+ if (pArgs && SFX_ITEM_SET == pArgs->GetItemState( nSlotId, TRUE, &pNameItem ))
+ aStyleName = ((const SfxStringItem*)pNameItem)->GetValue();
+ pStyleSheet = pStylePool->Find( aStyleName, eFamily );
+
+ aOldData.InitFromStyle( pStyleSheet );
+ }
+ break;
+
+ case SID_STYLE_WATERCAN:
+ {
+ BOOL bWaterCan = pScMod->GetIsWaterCan();
+
+ if( !bWaterCan )
+ {
+ const SfxPoolItem* pItem;
+
+ if ( SFX_ITEM_SET ==
+ pArgs->GetItemState( nSlotId, TRUE, &pItem ) )
+ {
+ const SfxStringItem* pStrItem = PTR_CAST(SfxStringItem,pItem);
+ if ( pStrItem )
+ {
+ aStyleName = pStrItem->GetValue();
+ pStyleSheet = pStylePool->Find( aStyleName, eFamily );
+
+ if ( pStyleSheet )
+ {
+ ((ScStyleSheetPool*)pStylePool)->
+ SetActualStyleSheet( pStyleSheet );
+ rReq.Done();
+ }
+ }
+ }
+ }
+
+ if ( !bWaterCan && pStyleSheet )
+ {
+ pScMod->SetWaterCan( TRUE );
+ pTabViewShell->SetActivePointer( Pointer(POINTER_FILL) );
+ rReq.Done();
+ }
+ else
+ {
+ pScMod->SetWaterCan( FALSE );
+ pTabViewShell->SetActivePointer( Pointer(POINTER_ARROW) );
+ rReq.Done();
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ // Neuen Style fuer WaterCan-Mode setzen
+ if ( nSlotId == SID_STYLE_APPLY && pScMod->GetIsWaterCan() && pStyleSheet )
+ ((ScStyleSheetPool*)pStylePool)->SetActualStyleSheet( pStyleSheet );
+
+ switch ( eFamily )
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ {
+ switch ( nSlotId )
+ {
+ case SID_STYLE_DELETE:
+ {
+ if ( pStyleSheet )
+ {
+ pTabViewShell->RemoveStyleSheetInUse( (SfxStyleSheet*)pStyleSheet );
+ pStylePool->Erase( pStyleSheet );
+ pTabViewShell->InvalidateAttribs();
+ nRetMask = TRUE;
+ bAddUndo = TRUE;
+ rReq.Done();
+ }
+ else
+ nRetMask = FALSE;
+ }
+ break;
+
+ case SID_STYLE_APPLY:
+ {
+ if ( pStyleSheet && !pScMod->GetIsWaterCan() )
+ {
+ // Anwenden der Vorlage auf das Dokument
+ pTabViewShell->SetStyleSheetToMarked( (SfxStyleSheet*)pStyleSheet );
+ pTabViewShell->InvalidateAttribs();
+ rReq.Done();
+ }
+ }
+ break;
+
+ case SID_STYLE_NEW_BY_EXAMPLE:
+ case SID_STYLE_UPDATE_BY_EXAMPLE:
+ {
+ // Vorlage erzeugen/ersetzen durch Attribute
+ // an der Cursor-Position:
+
+ const ScPatternAttr* pAttrItem = NULL;
+
+ // Die Abfrage, ob markiert ist, war hier immer falsch,
+ // darum jetzt gar nicht mehr, und einfach vom Cursor.
+ // Wenn Attribute aus der Selektion genommen werden sollen,
+ // muss noch darauf geachtet werden, Items aus Vorlagen nicht
+ // zu uebernehmen (GetSelectionPattern sammelt auch Items aus
+ // Vorlagen zusammen) (#44748#)
+ // pAttrItem = GetSelectionPattern();
+
+ ScViewData* pViewData = GetViewData();
+ USHORT nCol = pViewData->GetCurX();
+ USHORT nRow = pViewData->GetCurY();
+ pAttrItem = pDoc->GetPattern( nCol, nRow, nCurTab );
+
+ SfxItemSet aAttrSet = pAttrItem->GetItemSet();
+ aAttrSet.ClearItem( ATTR_MERGE );
+ aAttrSet.ClearItem( ATTR_MERGE_FLAG );
+ // bedingte Formatierung und Gueltigkeit nicht uebernehmen,
+ // weil sie in der Vorlage nicht editiert werden koennen
+ aAttrSet.ClearItem( ATTR_VALIDDATA );
+ aAttrSet.ClearItem( ATTR_CONDITIONAL );
+
+ if ( SID_STYLE_NEW_BY_EXAMPLE == nSlotId )
+ {
+ BOOL bConvertBack = FALSE;
+ SfxStyleSheet* pSheetInUse = (SfxStyleSheet*)
+ pTabViewShell->GetStyleSheetFromMarked();
+
+ // wenn neuer Style vorhanden und in der Selektion
+ // verwendet wird, so darf der Parent nicht uebernommen
+ // werden:
+
+ if ( pStyleSheet && pSheetInUse && pStyleSheet == pSheetInUse )
+ pSheetInUse = NULL;
+
+ // wenn bereits vorhanden, erstmal entfernen...
+ if ( pStyleSheet )
+ {
+ // Style-Pointer zu Namen vor Erase,
+ // weil Zellen sonst ungueltige Pointer
+ // enthalten.
+ //!!! bei Gelenheit mal eine Methode, die
+ // das fuer einen bestimmten Style macht
+ pDoc->StylesToNames();
+ bConvertBack = TRUE;
+ pStylePool->Erase(pStyleSheet);
+ }
+
+ // ...und neu anlegen
+ pStyleSheet = &pStylePool->Make( aStyleName, eFamily,
+ SFXSTYLEBIT_USERDEF );
+
+ // wenn ein Style vorhanden ist, so wird dieser
+ // Parent der neuen Vorlage:
+ if ( pSheetInUse )
+ pStyleSheet->SetParent( pSheetInUse->GetName() );
+
+ if ( bConvertBack )
+ // Namen zu Style-Pointer
+ pDoc->UpdStlShtPtrsFrmNms();
+
+ // Attribute uebernehmen und Style anwenden
+ pStyleSheet->GetItemSet().Put( aAttrSet );
+ pTabViewShell->UpdateStyleSheetInUse( (SfxStyleSheet*)pStyleSheet );
+ pTabViewShell->SetStyleSheetToMarked( (SfxStyleSheet*)pStyleSheet );
+
+ pTabViewShell->InvalidateAttribs();
+ }
+ else // ( nSlotId == SID_STYLE_UPDATE_BY_EXAMPLE )
+ {
+ pStyleSheet = (SfxStyleSheet*)pTabViewShell->GetStyleSheetFromMarked();
+
+ if ( pStyleSheet )
+ {
+ pStyleSheet->GetItemSet().Put( aAttrSet );
+ pTabViewShell->UpdateStyleSheetInUse( (SfxStyleSheet*)pStyleSheet );
+ pTabViewShell->SetStyleSheetToMarked( (SfxStyleSheet*)pStyleSheet );
+ pTabViewShell->InvalidateAttribs();
+ }
+ }
+
+ aNewData.InitFromStyle( pStyleSheet );
+ bAddUndo = TRUE;
+ rReq.Done();
+ }
+ break;
+
+ default:
+ break;
+ }
+ } // case SFX_STYLE_FAMILY_PARA:
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ {
+ switch ( nSlotId )
+ {
+ case SID_STYLE_DELETE:
+ {
+ nRetMask = ( NULL != pStyleSheet );
+ if ( pStyleSheet )
+ {
+ if ( pDoc->RemovePageStyleInUse( pStyleSheet->GetName() ) )
+ {
+ ScPrintFunc( pDocSh, pTabViewShell->GetPrinter(), nCurTab ).UpdatePages();
+ rBindings.Invalidate( SID_STATUS_PAGESTYLE );
+ rBindings.Invalidate( FID_RESET_PRINTZOOM );
+ }
+ pStylePool->Erase( pStyleSheet );
+ rBindings.Invalidate( SID_STYLE_FAMILY4 );
+ pDocSh->SetDocumentModified();
+ bAddUndo = TRUE;
+ rReq.Done();
+ }
+ }
+ break;
+
+ case SID_STYLE_APPLY:
+ {
+ nRetMask = ( NULL != pStyleSheet );
+ if ( pStyleSheet && !pScMod->GetIsWaterCan() )
+ {
+ String aOldName = pDoc->GetPageStyle( nCurTab );
+ if ( aOldName != aStyleName )
+ {
+ pDoc->SetPageStyle( nCurTab, aStyleName );
+ ScPrintFunc( pDocSh, pTabViewShell->GetPrinter(), nCurTab ).UpdatePages();
+ pDocSh->SetDocumentModified();
+ rBindings.Invalidate( SID_STYLE_FAMILY4 );
+ rBindings.Invalidate( SID_STATUS_PAGESTYLE );
+ rBindings.Invalidate( FID_RESET_PRINTZOOM );
+
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoApplyPageStyle( pDocSh,
+ nCurTab, aOldName, aStyleName ) );
+ }
+ rReq.Done();
+ }
+ }
+ break;
+
+ case SID_STYLE_NEW_BY_EXAMPLE:
+ {
+ const String& rStrCurStyle = pDoc->GetPageStyle( nCurTab );
+
+ if ( rStrCurStyle != aStyleName )
+ {
+ SfxStyleSheetBase* pCurStyle = pStylePool->Find( rStrCurStyle, eFamily );
+ SfxItemSet aAttrSet = pCurStyle->GetItemSet();
+ USHORT nInTab;
+ BOOL bUsed = pDoc->IsPageStyleInUse( aStyleName, &nInTab );
+
+ // wenn bereits vorhanden, erstmal entfernen...
+ if ( pStyleSheet )
+ pStylePool->Erase( pStyleSheet );
+
+ // ...und neu anlegen
+ pStyleSheet = &pStylePool->Make( aStyleName, eFamily,
+ SFXSTYLEBIT_USERDEF );
+
+ // Attribute uebernehmen
+ pStyleSheet->GetItemSet().Put( aAttrSet );
+ pDocSh->SetDocumentModified();
+
+ // wenn in Verwendung -> Update
+ if ( bUsed )
+ ScPrintFunc( pDocSh, pTabViewShell->GetPrinter(), nInTab ).UpdatePages();
+
+ aNewData.InitFromStyle( pStyleSheet );
+ bAddUndo = TRUE;
+ rReq.Done();
+ nRetMask = TRUE;
+ }
+ }
+ break;
+
+ default:
+ break;
+ } // switch ( nSlotId )
+ } // case SFX_STYLE_FAMILY_PAGE:
+ break;
+
+ default:
+ break;
+ } // switch ( eFamily )
+
+ // Neu anlegen oder bearbeiten ueber Dialog:
+ if ( nSlotId == SID_STYLE_NEW || nSlotId == SID_STYLE_EDIT )
+ {
+ if ( pStyleSheet )
+ {
+ SvxNumberInfoItem* pNumberInfoItem = NULL;
+
+ SfxStyleFamily eFam = pStyleSheet->GetFamily();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScStyleDlg* pDlg = NULL;
+ USHORT nRsc = 0;
+
+ // #37034#/#37245# alte Items aus der Vorlage merken
+ SfxItemSet aOldSet = pStyleSheet->GetItemSet();
+ String aOldName = pStyleSheet->GetName();
+
+ switch ( eFam )
+ {
+ case SFX_STYLE_FAMILY_PAGE:
+ nRsc = RID_SCDLG_STYLES_PAGE;
+ break;
+
+ case SFX_STYLE_FAMILY_PARA:
+ default:
+ {
+ SfxItemSet& rSet = pStyleSheet->GetItemSet();
+
+ const SfxPoolItem* pItem;
+ if ( rSet.GetItemState( ATTR_VALUE_FORMAT,
+ FALSE, &pItem ) == SFX_ITEM_SET )
+ {
+ // NumberFormat Value aus Value und Language
+ // erzeugen und eintueten
+ ULONG nFormat =
+ ((SfxUInt32Item*)pItem)->GetValue();
+ LanguageType eLang =
+ ((SvxLanguageItem*)&rSet.Get(
+ ATTR_LANGUAGE_FORMAT ))->GetLanguage();
+ ULONG nLangFormat = pDoc->GetFormatTable()->
+ GetFormatForLanguageIfBuiltIn( nFormat, eLang );
+ if ( nLangFormat != nFormat )
+ {
+ SfxUInt32Item aNewItem( ATTR_VALUE_FORMAT, nLangFormat );
+ rSet.Put( aNewItem );
+ aOldSet.Put( aNewItem );
+ // auch in aOldSet fuer Vergleich nach dem Dialog,
+ // sonst geht evtl. eine Aenderung der Sprache verloren
+ }
+ }
+
+ pTabViewShell->MakeNumberInfoItem( pDoc, GetViewData(), &pNumberInfoItem );
+ pDocSh->PutItem( *pNumberInfoItem );
+ nRsc = RID_SCDLG_STYLES_PAR;
+
+ // auf jeden Fall ein SvxBoxInfoItem mit Table = FALSE im Set:
+ // (wenn gar kein Item da ist, loescht der Dialog auch das
+ // BORDER_OUTER SvxBoxItem aus dem Vorlagen-Set)
+
+ if ( rSet.GetItemState( ATTR_BORDER_INNER, FALSE ) != SFX_ITEM_SET )
+ {
+ SvxBoxInfoItem aBoxInfoItem( ATTR_BORDER_INNER );
+ aBoxInfoItem.SetTable(FALSE); // keine inneren Linien
+ aBoxInfoItem.SetDist(FALSE);
+ aBoxInfoItem.SetMinDist(FALSE);
+ rSet.Put( aBoxInfoItem );
+ }
+ }
+ break;
+ }
+
+ // If GetDefDialogParent is a dialog, it must be used
+ // (style catalog)
+
+ Window* pParent = Application::GetDefDialogParent();
+ if ( !pParent || !pParent->IsDialog() )
+ pParent = pTabViewShell->GetDialogParent();
+
+ pTabViewShell->SetInFormatDialog(TRUE);
+
+ pDlg = new ScStyleDlg( pParent, *pStyleSheet, nRsc );
+ short nResult = pDlg->Execute();
+ pTabViewShell->SetInFormatDialog(FALSE);
+
+ if ( nResult == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+
+ if ( pOutSet )
+ {
+ nRetMask = pStyleSheet->GetMask();
+
+ // #37034#/#37245# Attribut-Vergleiche (frueher in ModifyStyleSheet)
+ // jetzt hier mit den alten Werten (Style ist schon veraendert)
+
+ if ( SFX_STYLE_FAMILY_PARA == eFam )
+ {
+// pDoc->CellStyleChanged( *pStyleSheet, aOldSet );
+
+ SfxItemSet& rNewSet = pStyleSheet->GetItemSet();
+ BOOL bNumFormatChanged;
+ if ( ScGlobal::CheckWidthInvalidate(
+ bNumFormatChanged, aOldSet, rNewSet ) )
+ pDoc->InvalidateTextWidth( NULL, NULL, bNumFormatChanged );
+
+ ULONG nOldFormat = ((const SfxUInt32Item&)aOldSet.
+ Get( ATTR_VALUE_FORMAT )).GetValue();
+ ULONG nNewFormat = ((const SfxUInt32Item&)rNewSet.
+ Get( ATTR_VALUE_FORMAT )).GetValue();
+ if ( nNewFormat != nOldFormat )
+ {
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ const SvNumberformat* pOld = pFormatter->GetEntry( nOldFormat );
+ const SvNumberformat* pNew = pFormatter->GetEntry( nNewFormat );
+ if ( pOld && pNew && pOld->GetLanguage() != pNew->GetLanguage() )
+ rNewSet.Put( SvxLanguageItem(
+ pNew->GetLanguage(), ATTR_LANGUAGE_FORMAT ) );
+ }
+ }
+ else
+ {
+ //! auch fuer Seitenvorlagen die Abfragen hier
+
+ String aNewName = pStyleSheet->GetName();
+ if ( aNewName != aOldName &&
+ pDoc->RenamePageStyleInUse( aOldName, aNewName ) )
+ {
+ rBindings.Invalidate( SID_STATUS_PAGESTYLE );
+ rBindings.Invalidate( FID_RESET_PRINTZOOM );
+ }
+
+ pDoc->ModifyStyleSheet( *pStyleSheet, *pOutSet );
+ rBindings.Invalidate( FID_RESET_PRINTZOOM );
+ }
+
+ pDocSh->SetDocumentModified();
+
+ if ( SFX_STYLE_FAMILY_PARA == eFam )
+ {
+ pTabViewShell->UpdateNumberFormatter( pDoc,
+ (const SvxNumberInfoItem&)
+ *(pDocSh->GetItem(SID_ATTR_NUMBERFORMAT_INFO)) );
+
+ pTabViewShell->UpdateStyleSheetInUse( (SfxStyleSheet*)pStyleSheet );
+ pTabViewShell->InvalidateAttribs();
+ }
+
+ aNewData.InitFromStyle( pStyleSheet );
+ bAddUndo = TRUE;
+ }
+ }
+ else
+ {
+ if ( nSlotId == SID_STYLE_NEW )
+ pStylePool->Erase( pStyleSheet );
+ else
+ {
+ // falls zwischendurch etwas mit dem temporaer geaenderten
+ // ItemSet gepainted wurde:
+ pDocSh->PostPaintGridAll();
+ }
+ }
+ delete pDlg;
+ }
+ }
+
+// if ( nRetMask != 0xffff )// Irgendein Wert MUSS geliefert werden JN
+ rReq.SetReturnValue( SfxUInt16Item( nSlotId, nRetMask ) );
+
+ if ( bGrabFocus )
+ pTabViewShell->GetActiveWin()->GrabFocus();
+
+ if ( bAddUndo )
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoModifyStyle( pDocSh, eFamily, aOldData, aNewData ) );
+ }
+ else
+ {
+ DBG_ERROR( "Unknown slot (ScViewShell::ExecuteStyle)" );
+ }
+}
+
+void ScFormatShell::ExecuteNumFormat( SfxRequest& rReq )
+{
+ ScModule* pScMod = SC_MOD();
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ SfxBindings& rBindings = pTabViewShell->GetViewFrame()->GetBindings();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+
+ pTabViewShell->HideListBox(); // Autofilter-DropDown-Listbox
+
+ // Eingabe beenden
+ if ( GetViewData()->HasEditView( GetViewData()->GetActivePart() ) )
+ {
+ switch ( nSlot )
+ {
+ case SID_NUMBER_TWODEC:
+ case SID_NUMBER_SCIENTIFIC:
+ case SID_NUMBER_DATE:
+ case SID_NUMBER_CURRENCY:
+ case SID_NUMBER_PERCENT:
+ case SID_NUMBER_STANDARD:
+ case SID_NUMBER_FORMAT:
+ case SID_NUMBER_INCDEC:
+ case SID_NUMBER_DECDEC:
+ case FID_DEFINE_NAME:
+ case FID_USE_NAME:
+ case FID_INSERT_NAME:
+ case SID_SPELLING:
+
+ pScMod->InputEnterHandler();
+ pTabViewShell->UpdateInputHandler();
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ switch ( nSlot )
+ {
+ case SID_NUMBER_TWODEC:
+ pTabViewShell->SetNumberFormat( NUMBERFORMAT_NUMBER, 4 ); // Standard+4 = #.##0,00
+ rReq.Done();
+ break;
+ case SID_NUMBER_SCIENTIFIC:
+ pTabViewShell->SetNumberFormat( NUMBERFORMAT_SCIENTIFIC );
+ rReq.Done();
+ break;
+ case SID_NUMBER_DATE:
+ pTabViewShell->SetNumberFormat( NUMBERFORMAT_DATE );
+ rReq.Done();
+ break;
+ case SID_NUMBER_TIME:
+ pTabViewShell->SetNumberFormat( NUMBERFORMAT_TIME );
+ rReq.Done();
+ break;
+ case SID_NUMBER_CURRENCY:
+ pTabViewShell->SetNumberFormat( NUMBERFORMAT_CURRENCY );
+ rReq.Done();
+ break;
+ case SID_NUMBER_PERCENT:
+ pTabViewShell->SetNumberFormat( NUMBERFORMAT_PERCENT );
+ rReq.Done();
+ break;
+ case SID_NUMBER_STANDARD:
+ pTabViewShell->SetNumberFormat( NUMBERFORMAT_NUMBER );
+ rReq.Done();
+ break;
+ case SID_NUMBER_INCDEC:
+ pTabViewShell->ChangeNumFmtDecimals( TRUE );
+ rReq.Done();
+ break;
+ case SID_NUMBER_DECDEC:
+ pTabViewShell->ChangeNumFmtDecimals( FALSE );
+ rReq.Done();
+ break;
+
+ case SID_NUMBER_FORMAT:
+ if ( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ if(pReqArgs->GetItemState(nSlot, TRUE, &pItem) == SFX_ITEM_SET)
+ {
+ String aCode = ((const SfxStringItem*)pItem)->GetValue();
+ pTabViewShell->SetNumFmtByStr( aCode );
+ }
+ }
+ break;
+
+ default:
+ DBG_ERROR("falscher Slot bei ExecuteEdit");
+ break;
+ }
+}
+
+
+//------------------------------------------------------------------
+
+#define APPLY_HOR_JUSTIFY(j) \
+ { \
+ if ( !pHorJustify || (eHorJustify != (j) ) ) \
+ pTabViewShell->ApplyAttr( SvxHorJustifyItem( (j) ) ); \
+ else \
+ pTabViewShell->ApplyAttr( SvxHorJustifyItem( SVX_HOR_JUSTIFY_STANDARD ) ); \
+ }
+
+#define APPLY_VER_JUSTIFY(j) \
+ { \
+ if ( !pVerJustify || (eVerJustify != (j) ) ) \
+ pTabViewShell->ApplyAttr( SvxVerJustifyItem( (j) ) ); \
+ else \
+ pTabViewShell->ApplyAttr( SvxVerJustifyItem( SVX_VER_JUSTIFY_STANDARD ) ); \
+ }
+
+void ScFormatShell::ExecuteAlignment( SfxRequest& rReq )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ SfxBindings& rBindings = SFX_BINDINGS();
+ const SfxItemSet* pSet = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+
+ pTabViewShell->HideListBox(); // Autofilter-DropDown-Listbox
+
+ if( pSet )
+ {
+ const SfxPoolItem* pItem = NULL;
+ if( pSet->GetItemState((nSlot), TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+
+ switch ( nSlot )
+ {
+ case SID_H_ALIGNCELL:
+ {
+ pTabViewShell->ApplyAttr( SvxHorJustifyItem( (SvxCellHorJustify)((const SvxHorJustifyItem*)pItem)->GetValue() ) );
+ }
+ break;
+ case SID_V_ALIGNCELL:
+ {
+ pTabViewShell->ApplyAttr( SvxVerJustifyItem( (SvxCellVerJustify)((const SvxVerJustifyItem*)pItem)->GetValue() ) );
+ }
+ break;
+ default:
+ DBG_ERROR( "ExecuteAlignment: invalid slot" );
+ return;
+ }
+
+ rBindings.Invalidate( SID_ALIGNLEFT );
+ rBindings.Invalidate( SID_ALIGNRIGHT );
+ rBindings.Invalidate( SID_ALIGNCENTERHOR );
+ rBindings.Invalidate( SID_ALIGNBLOCK );
+ rBindings.Invalidate( SID_ALIGNTOP );
+ rBindings.Invalidate( SID_ALIGNBOTTOM );
+ rBindings.Invalidate( SID_ALIGNCENTERVER );
+ rBindings.Invalidate( SID_V_ALIGNCELL );
+ rBindings.Invalidate( SID_H_ALIGNCELL );
+ rBindings.Update();
+
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ }
+}
+
+void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ SfxBindings& rBindings = SFX_BINDINGS();
+ const ScPatternAttr* pAttrs = pTabViewShell->GetSelectionPattern();
+ const SfxItemSet* pSet = rReq.GetArgs();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+ SfxAllItemSet* pNewSet = 0;
+
+ pTabViewShell->HideListBox(); // Autofilter-DropDown-Listbox
+
+ if ( (nSlot == SID_ATTR_CHAR_WEIGHT)
+ ||(nSlot == SID_ATTR_CHAR_POSTURE)
+ ||(nSlot == SID_ATTR_CHAR_UNDERLINE)
+ ||(nSlot == SID_ULINE_VAL_NONE)
+ ||(nSlot == SID_ULINE_VAL_SINGLE)
+ ||(nSlot == SID_ULINE_VAL_DOUBLE)
+ ||(nSlot == SID_ULINE_VAL_DOTTED) )
+ {
+ pNewSet = new SfxAllItemSet( GetPool() );
+
+ switch ( nSlot )
+ {
+ case SID_ATTR_CHAR_WEIGHT:
+ {
+ FontWeight eWeight;
+
+ if( pSet )
+ {
+ const SvxWeightItem& rWeight = (const SvxWeightItem&)pSet->Get( ATTR_FONT_WEIGHT );
+
+ if( rWeight.ISA(SvxWeightItem) )
+ {
+ pTabViewShell->ApplyAttr( rWeight );
+ pNewSet->Put( rWeight,rWeight.Which() );
+ }
+ }
+ else
+ {
+ SvxWeightItem aWeightItem( (const SvxWeightItem&)
+ pAttrs->GetItem( ATTR_FONT_WEIGHT ) );
+
+ eWeight = (WEIGHT_BOLD == aWeightItem.GetWeight())
+ ? WEIGHT_NORMAL
+ : WEIGHT_BOLD;
+
+ aWeightItem.SetWeight( eWeight );
+ pTabViewShell->ApplyAttr( aWeightItem );
+ pNewSet->Put( aWeightItem, aWeightItem.Which() );
+ }
+ }
+ break;
+
+ case SID_ATTR_CHAR_POSTURE:
+ {
+ FontItalic eItalic;
+
+ if( pSet )
+ {
+ const SvxPostureItem& rPosture = (const SvxPostureItem&)pSet->Get( ATTR_FONT_POSTURE );
+
+ if( rPosture.ISA(SvxPostureItem) )
+ {
+ pTabViewShell->ApplyAttr( rPosture );
+ pNewSet->Put( rPosture,rPosture.Which() );
+ }
+ }
+ else
+ {
+ SvxPostureItem aPosture( (const SvxPostureItem&)
+ pAttrs->GetItem( ATTR_FONT_POSTURE ) );
+
+ eItalic = (ITALIC_NORMAL == aPosture.GetPosture())
+ ? ITALIC_NONE
+ : ITALIC_NORMAL;
+
+ aPosture.SetPosture( eItalic );
+ pTabViewShell->ApplyAttr( aPosture );
+ pNewSet->Put( aPosture,aPosture.Which() );
+ }
+ }
+ break;
+
+ case SID_ATTR_CHAR_UNDERLINE:
+ {
+ FontUnderline eUnderline;
+
+ if( pSet )
+ {
+ const SvxUnderlineItem& rUnderline = (const SvxUnderlineItem&)pSet->Get( ATTR_FONT_UNDERLINE );
+
+ if( rUnderline.ISA(SvxUnderlineItem) )
+ {
+ pTabViewShell->ApplyAttr( rUnderline );
+ pNewSet->Put( rUnderline,rUnderline.Which() );
+ }
+ }
+ else
+ {
+ SvxUnderlineItem aUnderline( (const SvxUnderlineItem&)
+ pAttrs->GetItem(
+ ATTR_FONT_UNDERLINE ) );
+ eUnderline = (UNDERLINE_NONE != aUnderline.GetUnderline())
+ ? UNDERLINE_NONE
+ : UNDERLINE_SINGLE;
+ aUnderline.SetUnderline( eUnderline );
+ pTabViewShell->ApplyAttr( aUnderline );
+ pNewSet->Put( aUnderline,aUnderline.Which() );
+ }
+ }
+ break;
+
+ case SID_ULINE_VAL_NONE:
+ pTabViewShell->ApplyAttr( SvxUnderlineItem( UNDERLINE_NONE, ATTR_FONT_UNDERLINE ) );
+ break;
+ case SID_ULINE_VAL_SINGLE: // Toggles
+ case SID_ULINE_VAL_DOUBLE:
+ case SID_ULINE_VAL_DOTTED:
+ {
+ FontUnderline eOld = ((const SvxUnderlineItem&)
+ pAttrs->GetItem(ATTR_FONT_UNDERLINE)).GetUnderline();
+ FontUnderline eNew = eOld;
+ switch (nSlot)
+ {
+ case SID_ULINE_VAL_SINGLE:
+ eNew = ( eOld == UNDERLINE_SINGLE ) ? UNDERLINE_NONE : UNDERLINE_SINGLE;
+ break;
+ case SID_ULINE_VAL_DOUBLE:
+ eNew = ( eOld == UNDERLINE_DOUBLE ) ? UNDERLINE_NONE : UNDERLINE_DOUBLE;
+ break;
+ case SID_ULINE_VAL_DOTTED:
+ eNew = ( eOld == UNDERLINE_DOTTED ) ? UNDERLINE_NONE : UNDERLINE_DOTTED;
+ break;
+ }
+ pTabViewShell->ApplyAttr( SvxUnderlineItem( eNew, ATTR_FONT_UNDERLINE ) );
+ }
+ break;
+
+ default:
+ break;
+ }
+ rBindings.Invalidate( nSlot );
+ }
+ else
+ {
+ /*
+ * "Selbstgemachte" RadioButton-Funktionalitaet
+ * Beim Toggle gibt es den Standard-State, d.h. kein
+ * Button ist gedrueckt
+ */
+
+ const SfxItemSet& rAttrSet = pTabViewShell->GetSelectionPattern()->GetItemSet();
+ const SfxPoolItem* pItem = NULL;
+ const SvxHorJustifyItem* pHorJustify = NULL;
+ const SvxVerJustifyItem* pVerJustify = NULL;
+ SvxCellHorJustify eHorJustify = SVX_HOR_JUSTIFY_STANDARD;
+ SvxCellVerJustify eVerJustify = SVX_VER_JUSTIFY_STANDARD;
+
+ if (rAttrSet.GetItemState(ATTR_HOR_JUSTIFY, TRUE,&pItem ) == SFX_ITEM_SET)
+ {
+ pHorJustify = (const SvxHorJustifyItem*)pItem;
+ eHorJustify = SvxCellHorJustify( pHorJustify->GetValue() );
+ }
+ if (rAttrSet.GetItemState(ATTR_VER_JUSTIFY, TRUE,&pItem ) == SFX_ITEM_SET)
+ {
+ pVerJustify = (const SvxVerJustifyItem*)pItem;
+ eVerJustify = SvxCellVerJustify( pVerJustify->GetValue() );
+ }
+
+ switch ( nSlot )
+ {
+ case SID_ALIGNLEFT:
+ rReq.SetSlot( SID_H_ALIGNCELL );
+ rReq.AppendItem( SvxHorJustifyItem(
+ !pHorJustify || (eHorJustify != SVX_HOR_JUSTIFY_LEFT) ?
+ SVX_HOR_JUSTIFY_LEFT : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) );
+ ExecuteSlot( rReq, GetInterface() );
+ return;
+// APPLY_HOR_JUSTIFY( SVX_HOR_JUSTIFY_LEFT );
+ break;
+
+ case SID_ALIGNRIGHT:
+ rReq.SetSlot( SID_H_ALIGNCELL );
+ rReq.AppendItem( SvxHorJustifyItem(
+ !pHorJustify || (eHorJustify != SVX_HOR_JUSTIFY_RIGHT) ?
+ SVX_HOR_JUSTIFY_RIGHT : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) );
+ ExecuteSlot( rReq, GetInterface() );
+ return;
+// APPLY_HOR_JUSTIFY( SVX_HOR_JUSTIFY_RIGHT );
+ break;
+
+ case SID_ALIGNCENTERHOR:
+ rReq.SetSlot( SID_H_ALIGNCELL );
+ rReq.AppendItem( SvxHorJustifyItem(
+ !pHorJustify || (eHorJustify != SVX_HOR_JUSTIFY_CENTER) ?
+ SVX_HOR_JUSTIFY_CENTER : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) );
+ ExecuteSlot( rReq, GetInterface() );
+ return;
+// APPLY_HOR_JUSTIFY( SVX_HOR_JUSTIFY_CENTER );
+ break;
+
+ case SID_ALIGNBLOCK:
+ rReq.SetSlot( SID_H_ALIGNCELL );
+ rReq.AppendItem( SvxHorJustifyItem(
+ !pHorJustify || (eHorJustify != SVX_HOR_JUSTIFY_BLOCK) ?
+ SVX_HOR_JUSTIFY_BLOCK : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) );
+ ExecuteSlot( rReq, GetInterface() );
+ return;
+// APPLY_HOR_JUSTIFY( SVX_HOR_JUSTIFY_BLOCK );
+ break;
+
+ case SID_ALIGNTOP:
+ rReq.SetSlot( SID_V_ALIGNCELL );
+ rReq.AppendItem( SvxVerJustifyItem(
+ !pVerJustify || (eVerJustify != SVX_VER_JUSTIFY_TOP) ?
+ SVX_VER_JUSTIFY_TOP : SVX_VER_JUSTIFY_STANDARD, SID_V_ALIGNCELL ) );
+ ExecuteSlot( rReq, GetInterface() );
+ return;
+// APPLY_VER_JUSTIFY( SVX_VER_JUSTIFY_TOP );
+ break;
+
+ case SID_ALIGNBOTTOM:
+ rReq.SetSlot( SID_V_ALIGNCELL );
+ rReq.AppendItem( SvxVerJustifyItem(
+ !pVerJustify || (eVerJustify != SVX_VER_JUSTIFY_BOTTOM) ?
+ SVX_VER_JUSTIFY_BOTTOM : SVX_VER_JUSTIFY_STANDARD, SID_V_ALIGNCELL ) );
+ ExecuteSlot( rReq, GetInterface() );
+ return;
+// APPLY_VER_JUSTIFY( SVX_VER_JUSTIFY_BOTTOM );
+ break;
+
+ case SID_ALIGNCENTERVER:
+ rReq.SetSlot( SID_V_ALIGNCELL );
+ rReq.AppendItem( SvxVerJustifyItem(
+ !pVerJustify || (eVerJustify != SVX_VER_JUSTIFY_CENTER) ?
+ SVX_VER_JUSTIFY_CENTER : SVX_VER_JUSTIFY_STANDARD, SID_V_ALIGNCELL ) );
+ ExecuteSlot( rReq, GetInterface() );
+ return;
+// APPLY_VER_JUSTIFY( SVX_VER_JUSTIFY_CENTER );
+ break;
+
+ default:
+ break;
+ }
+
+ }
+
+ rBindings.Update();
+// rReq.Done();
+
+ if( pNewSet )
+ {
+ rReq.Done( *pNewSet );
+ delete pNewSet;
+ }
+ else
+ {
+ rReq.Done();
+ }
+
+}
+
+#undef APPLY_HOR_JUSTIFY
+#undef APPLY_VER_JUSTIFY
+
+//------------------------------------------------------------------
+
+void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ SfxBindings& rBindings = SFX_BINDINGS();
+ const SfxItemSet* pNewAttrs = rReq.GetArgs();
+
+ pTabViewShell->HideListBox(); // Autofilter-DropDown-Listbox
+
+ if ( !pNewAttrs )
+ {
+ USHORT nSlot = rReq.GetSlot();
+
+ switch ( nSlot )
+ {
+ case SID_ATTR_CHAR_FONT:
+ case SID_ATTR_CHAR_FONTHEIGHT:
+ pTabViewShell->ExecuteCellFormatDlg( rReq, TP_FONT ); // wenn ToolBar vertikal
+ break;
+
+ case SID_ATTR_ALIGN_LINEBREAK: // ohne Parameter als Toggle
+ {
+ const ScPatternAttr* pAttrs = pTabViewShell->GetSelectionPattern();
+ BOOL bOld = ((const SfxBoolItem&)pAttrs->GetItem(ATTR_LINEBREAK)).GetValue();
+ SfxBoolItem aBreakItem( ATTR_LINEBREAK, !bOld );
+ pTabViewShell->ApplyAttr( aBreakItem );
+
+ SfxAllItemSet aNewSet( GetPool() );
+ aNewSet.Put( aBreakItem,aBreakItem.Which() );
+ rReq.Done( aNewSet );
+
+ rBindings.Invalidate( nSlot );
+ }
+ break;
+
+ case SID_BACKGROUND_COLOR:
+ {
+ // SID_BACKGROUND_COLOR without arguments -> set transparent background
+
+ SvxBrushItem aBrushItem( (const SvxBrushItem&)
+ pTabViewShell->GetSelectionPattern()->
+ GetItem( ATTR_BACKGROUND ) );
+
+ aBrushItem.SetColor( COL_TRANSPARENT );
+
+ pTabViewShell->ApplyAttr( aBrushItem );
+ }
+ break;
+ }
+ }
+ else
+ {
+ USHORT nSlot = rReq.GetSlot();
+
+ switch ( nSlot )
+ {
+ case SID_ATTR_ALIGN_LINEBREAK:
+ case SID_ATTR_CHAR_FONT:
+ case SID_ATTR_CHAR_FONTHEIGHT:
+ case SID_ATTR_CHAR_COLOR:
+ pTabViewShell->ApplyAttr( pNewAttrs->Get( pNewAttrs->GetPool()->GetWhich( nSlot ) ) );
+ rBindings.Invalidate( nSlot );
+ rBindings.Update( nSlot );
+ break;
+
+ case SID_FRAME_LINESTYLE:
+ {
+ // Default-Linie aktualisieren
+ const SvxBorderLine* pLine =
+ ((const SvxLineItem&)
+ pNewAttrs->Get( SID_FRAME_LINESTYLE )).
+ GetLine();
+
+ if ( pLine )
+ {
+ SvxBorderLine* pDefLine = pTabViewShell->GetDefaultFrameLine();
+
+ if ( pDefLine )
+ {
+ pDefLine->SetOutWidth( pLine->GetOutWidth() );
+ pDefLine->SetInWidth ( pLine->GetInWidth() );
+ pDefLine->SetDistance( pLine->GetDistance() );
+ pTabViewShell->SetSelectionFrameLines( pDefLine, FALSE );
+ }
+ else
+ {
+ pTabViewShell->SetDefaultFrameLine( pLine );
+ pTabViewShell->GetDefaultFrameLine()->SetColor( COL_BLACK );
+ pTabViewShell->SetSelectionFrameLines( pLine, FALSE );
+ }
+ }
+ else
+ {
+ Color aColorBlack( COL_BLACK );
+ SvxBorderLine aDefLine( &aColorBlack, 20, 0, 0 );
+ pTabViewShell->SetDefaultFrameLine( &aDefLine );
+ pTabViewShell->SetSelectionFrameLines( NULL, FALSE );
+ }
+ }
+ break;
+
+ case SID_FRAME_LINECOLOR:
+ {
+ SvxBorderLine* pDefLine = pTabViewShell->GetDefaultFrameLine();
+ const Color& rColor = ((const SvxColorItem&)
+ pNewAttrs->Get( SID_FRAME_LINECOLOR )).
+ GetValue();
+
+ // Default-Linie aktualisieren
+ if ( pDefLine )
+ {
+ pDefLine->SetColor( rColor );
+ pTabViewShell->SetSelectionFrameLines( pDefLine, TRUE );
+ }
+ else
+ {
+ SvxBorderLine aDefLine( &rColor, 20, 0, 0 );
+ pTabViewShell->SetDefaultFrameLine( &aDefLine );
+ pTabViewShell->SetSelectionFrameLines( &aDefLine, FALSE );
+ }
+ }
+ break;
+
+ case SID_ATTR_BORDER_OUTER:
+ case SID_ATTR_BORDER:
+ {
+ SvxBorderLine* pDefLine = pTabViewShell->GetDefaultFrameLine();
+ const ScPatternAttr* pOldAttrs = pTabViewShell->GetSelectionPattern();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ SfxItemSet* pOldSet =
+ new SfxItemSet(
+ *(pDoc->GetPool()),
+ ATTR_PATTERN_START,
+ ATTR_PATTERN_END );
+ SfxItemSet* pNewSet =
+ new SfxItemSet(
+ *(pDoc->GetPool()),
+ ATTR_PATTERN_START,
+ ATTR_PATTERN_END );
+ const SfxPoolItem& rBorderAttr =
+ pOldAttrs->GetItemSet().
+ Get( ATTR_BORDER );
+
+ // Border-Items vom Controller auswerten:
+ const SfxPoolItem* pItem = 0;
+
+ if ( pNewAttrs->GetItemState( ATTR_BORDER, TRUE, &pItem )
+ == SFX_ITEM_SET )
+ {
+ SvxBoxItem aBoxItem ( *(const SvxBoxItem*)pItem );
+ if ( aBoxItem.GetTop() )
+ aBoxItem.SetLine( pDefLine, BOX_LINE_TOP );
+ if ( aBoxItem.GetBottom() )
+ aBoxItem.SetLine( pDefLine, BOX_LINE_BOTTOM );
+ if ( aBoxItem.GetLeft() )
+ aBoxItem.SetLine( pDefLine, BOX_LINE_LEFT );
+ if ( aBoxItem.GetRight() )
+ aBoxItem.SetLine( pDefLine, BOX_LINE_RIGHT );
+ pNewSet->Put( aBoxItem );
+ }
+
+ if ( pNewAttrs->GetItemState( ATTR_BORDER_INNER, TRUE, &pItem )
+ == SFX_ITEM_SET )
+ {
+ SvxBoxInfoItem aBoxInfoItem( *(const SvxBoxInfoItem*)pItem );
+ if ( aBoxInfoItem.GetHori() )
+ aBoxInfoItem.SetLine( pDefLine, BOXINFO_LINE_HORI );
+ if ( aBoxInfoItem.GetVert() )
+ aBoxInfoItem.SetLine( pDefLine, BOXINFO_LINE_VERT );
+ pNewSet->Put( aBoxInfoItem );
+ }
+ else
+ {
+ SvxBoxInfoItem aBoxInfoItem( ATTR_BORDER_INNER );
+ aBoxInfoItem.SetLine( NULL, BOXINFO_LINE_HORI );
+ aBoxInfoItem.SetLine( NULL, BOXINFO_LINE_VERT );
+ pNewSet->Put( aBoxInfoItem );
+ }
+
+ pOldSet->Put( rBorderAttr );
+ pTabViewShell->ApplyAttributes( pNewSet, pOldSet );
+
+ delete pOldSet;
+ delete pNewSet;
+ }
+ break;
+
+ // ATTR_BACKGROUND (=SID_ATTR_BRUSH) muss ueber zwei IDs
+ // gesetzt werden:
+ case SID_BACKGROUND_COLOR:
+ {
+ const SvxColorItem rNewColorItem = (const SvxColorItem&)
+ pNewAttrs->Get( SID_BACKGROUND_COLOR );
+
+ SvxBrushItem aBrushItem( (const SvxBrushItem&)
+ pTabViewShell->GetSelectionPattern()->
+ GetItem( ATTR_BACKGROUND ) );
+
+ aBrushItem.SetColor( rNewColorItem.GetValue() );
+
+ pTabViewShell->ApplyAttr( aBrushItem );
+ }
+ break;
+
+ case SID_ATTR_BRUSH:
+ {
+ SvxBrushItem aBrushItem( (const SvxBrushItem&)
+ pTabViewShell->GetSelectionPattern()->
+ GetItem( ATTR_BACKGROUND ) );
+ const SvxBrushItem& rNewBrushItem = (const SvxBrushItem&)
+ pNewAttrs->Get( GetPool().GetWhich(nSlot) );
+ aBrushItem.SetColor(rNewBrushItem.GetColor());
+ pTabViewShell->ApplyAttr( aBrushItem );
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ if( ! rReq.IsAPI() )
+ if( ! rReq.IsDone() )
+ rReq.Done();
+ }
+}
+
+void ScFormatShell::GetAttrState( SfxItemSet& rSet )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ const SfxItemSet& rAttrSet = pTabViewShell->GetSelectionPattern()->GetItemSet();
+ const SfxItemSet* pParentSet = rAttrSet.GetParent();
+ const SvxBorderLine* pLine = pTabViewShell->GetDefaultFrameLine();
+ const SvxBrushItem& rBrushItem = (const SvxBrushItem&)rAttrSet.Get( ATTR_BACKGROUND );
+ UINT8 nTrans = rBrushItem.GetColor().GetTransparency();
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+
+ rSet.Put( rAttrSet, FALSE );
+
+ while ( nWhich )
+ {
+ switch(nWhich)
+ {
+ case SID_BACKGROUND_COLOR:
+ {
+ Color aColor;
+ if ( nTrans == 255 )
+ aColor = Application::GetSettings().GetStyleSettings().GetWindowColor();
+ else
+ aColor = rBrushItem.GetColor();
+ rSet.Put( SvxColorItem( aColor, SID_BACKGROUND_COLOR ) );
+ }
+ break;
+ case SID_FRAME_LINECOLOR:
+ {
+ rSet.Put( SvxColorItem( pLine ? pLine->GetColor() : Color(),
+ SID_FRAME_LINECOLOR ) );
+ }
+ break;
+ case SID_ATTR_BRUSH:
+ {
+ rSet.Put( rBrushItem, GetPool().GetWhich(nWhich) );
+ }
+ break;
+/* case SID_ATTR_ALIGN_LINEBREAK:
+ {
+ const SfxBoolItem& rBreakItem = (const SfxBoolItem&)rAttrSet.Get( ATTR_LINEBREAK );
+ rSet.Put( rBreakItem, GetPool().GetWhich(nWhich) );
+ }
+ break;
+*/
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+//------------------------------------------------------------------
+
+void ScFormatShell::GetTextAttrState( SfxItemSet& rSet )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ const SfxItemSet& rAttrSet = pTabViewShell->GetSelectionPattern()->GetItemSet();
+ rSet.Put( rAttrSet, FALSE ); // ItemStates mitkopieren
+
+ SfxItemState eState;
+// const SfxPoolItem* pItem;
+
+ //--------------------------------------------------------------------
+ // eigene Kontrolle ueber RadioButton-Funktionalitaet:
+ //--------------------------------------------------------------------
+ // Unterstreichung
+ //------------------------
+
+ eState = rAttrSet.GetItemState( ATTR_FONT_UNDERLINE, TRUE );
+ if ( eState == SFX_ITEM_DONTCARE )
+ {
+ rSet.InvalidateItem( SID_ULINE_VAL_NONE );
+ rSet.InvalidateItem( SID_ULINE_VAL_SINGLE );
+ rSet.InvalidateItem( SID_ULINE_VAL_DOUBLE );
+ rSet.InvalidateItem( SID_ULINE_VAL_DOTTED );
+ }
+ else
+ {
+ FontUnderline eUnderline = ((const SvxUnderlineItem&)
+ rAttrSet.Get(ATTR_FONT_UNDERLINE)).GetUnderline();
+ USHORT nId = SID_ULINE_VAL_NONE;
+ switch (eUnderline)
+ {
+ case UNDERLINE_SINGLE: nId = SID_ULINE_VAL_SINGLE; break;
+ case UNDERLINE_DOUBLE: nId = SID_ULINE_VAL_DOUBLE; break;
+ case UNDERLINE_DOTTED: nId = SID_ULINE_VAL_DOTTED; break;
+ default:
+ break;
+ }
+ rSet.Put( SfxBoolItem( nId, TRUE ) );
+ }
+
+ //------------------------
+ // horizontale Ausrichtung
+ //------------------------
+
+ const SvxHorJustifyItem* pHorJustify = NULL;
+ const SvxVerJustifyItem* pVerJustify = NULL;
+ SvxCellHorJustify eHorJustify = SVX_HOR_JUSTIFY_STANDARD;
+ SvxCellVerJustify eVerJustify = SVX_VER_JUSTIFY_STANDARD;
+ USHORT nWhich = 0;
+ BOOL bJustifyStd = FALSE;
+ SfxBoolItem aBoolItem ( 0, TRUE );
+
+ eState = rAttrSet.GetItemState( ATTR_HOR_JUSTIFY, TRUE,
+ (const SfxPoolItem**)&pHorJustify );
+ switch ( eState )
+ {
+ case SFX_ITEM_SET:
+ {
+ eHorJustify = SvxCellHorJustify( pHorJustify->GetValue() );
+
+ switch ( SvxCellHorJustify( pHorJustify->GetValue() ) )
+ {
+ case SVX_HOR_JUSTIFY_STANDARD:
+ break;
+
+ case SVX_HOR_JUSTIFY_LEFT:
+ nWhich = SID_ALIGNLEFT;
+ break;
+
+ case SVX_HOR_JUSTIFY_RIGHT:
+ nWhich = SID_ALIGNRIGHT;
+ break;
+
+ case SVX_HOR_JUSTIFY_CENTER:
+ nWhich = SID_ALIGNCENTERHOR;
+ break;
+
+ case SVX_HOR_JUSTIFY_BLOCK:
+ nWhich = SID_ALIGNBLOCK;
+ break;
+
+ case SVX_HOR_JUSTIFY_REPEAT:
+ default:
+ bJustifyStd = TRUE;
+ break;
+ }
+ }
+ break;
+
+ case SFX_ITEM_DONTCARE:
+ rSet.InvalidateItem( SID_ALIGNLEFT );
+ rSet.InvalidateItem( SID_ALIGNRIGHT );
+ rSet.InvalidateItem( SID_ALIGNCENTERHOR );
+ rSet.InvalidateItem( SID_ALIGNBLOCK );
+ break;
+
+ default:
+ bJustifyStd = TRUE;
+ break;
+ }
+
+ if ( nWhich )
+ {
+ aBoolItem.SetWhich( nWhich );
+ rSet.Put( aBoolItem );
+ }
+ else if ( bJustifyStd )
+ {
+ aBoolItem.SetValue( FALSE );
+ aBoolItem.SetWhich( SID_ALIGNLEFT ); rSet.Put( aBoolItem );
+ aBoolItem.SetWhich( SID_ALIGNRIGHT ); rSet.Put( aBoolItem );
+ aBoolItem.SetWhich( SID_ALIGNCENTERHOR ); rSet.Put( aBoolItem );
+ aBoolItem.SetWhich( SID_ALIGNBLOCK ); rSet.Put( aBoolItem );
+ bJustifyStd = FALSE;
+ }
+
+ //------------------------
+ // vertikale Ausrichtung
+ //------------------------
+
+ nWhich = 0;
+ aBoolItem.SetValue( TRUE );
+
+ eState = rAttrSet.GetItemState( ATTR_VER_JUSTIFY, TRUE,
+ (const SfxPoolItem**)&pVerJustify );
+
+ switch ( eState )
+ {
+ case SFX_ITEM_SET:
+ {
+ eVerJustify = SvxCellVerJustify( pVerJustify->GetValue() );
+
+ switch ( eVerJustify )
+ {
+ case SVX_VER_JUSTIFY_TOP:
+ nWhich = SID_ALIGNTOP;
+ break;
+
+ case SVX_VER_JUSTIFY_BOTTOM:
+ nWhich = SID_ALIGNBOTTOM;
+ break;
+
+ case SVX_VER_JUSTIFY_CENTER:
+ nWhich = SID_ALIGNCENTERVER;
+ break;
+
+ case SVX_VER_JUSTIFY_STANDARD:
+ default:
+ bJustifyStd = TRUE;
+ break;
+ }
+ }
+ break;
+
+ case SFX_ITEM_DONTCARE:
+ rSet.InvalidateItem( SID_ALIGNTOP );
+ rSet.InvalidateItem( SID_ALIGNBOTTOM );
+ rSet.InvalidateItem( SID_ALIGNCENTERVER );
+ break;
+
+ default:
+ bJustifyStd = TRUE;
+ break;
+ }
+
+ if ( nWhich )
+ {
+ aBoolItem.SetWhich( nWhich );
+ rSet.Put( aBoolItem );
+ }
+ else if ( bJustifyStd )
+ {
+ aBoolItem.SetValue( FALSE );
+ aBoolItem.SetWhich( SID_ALIGNTOP ); rSet.Put( aBoolItem );
+ aBoolItem.SetWhich( SID_ALIGNBOTTOM ); rSet.Put( aBoolItem );
+ aBoolItem.SetWhich( SID_ALIGNCENTERVER ); rSet.Put( aBoolItem );
+ }
+}
+
+
+//------------------------------------------------------------------
+
+void ScFormatShell::GetBorderState( SfxItemSet& rSet )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ SvxBoxItem aBoxItem( ATTR_BORDER );
+ SvxBoxInfoItem aInfoItem( ATTR_BORDER_INNER );
+
+ pTabViewShell->GetSelectionFrame( aBoxItem, aInfoItem );
+
+ if ( rSet.GetItemState( ATTR_BORDER ) != SFX_ITEM_UNKNOWN )
+ rSet.Put( aBoxItem );
+ if ( rSet.GetItemState( ATTR_BORDER_INNER ) != SFX_ITEM_UNKNOWN )
+ rSet.Put( aInfoItem );
+}
+
+//------------------------------------------------------------------
+
+void ScFormatShell::GetAlignState( SfxItemSet& rSet )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ const SfxItemSet& rAttrSet = pTabViewShell->GetSelectionPattern()->GetItemSet();
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ SvxCellHorJustify eHorJustify = SVX_HOR_JUSTIFY_STANDARD;
+ SvxCellVerJustify eVerJustify = SVX_VER_JUSTIFY_STANDARD;
+
+
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case SID_H_ALIGNCELL:
+ {
+ if ( rAttrSet.GetItemState( ATTR_HOR_JUSTIFY ) != SFX_ITEM_DONTCARE )
+ {
+ SvxCellHorJustify eHorJustify = (SvxCellHorJustify)((const SvxHorJustifyItem&)
+ rAttrSet.Get( ATTR_HOR_JUSTIFY )).GetValue();
+ rSet.Put( SvxHorJustifyItem( eHorJustify, nWhich ));
+ }
+ }
+ break;
+ case SID_V_ALIGNCELL:
+ {
+ if ( rAttrSet.GetItemState( ATTR_VER_JUSTIFY ) != SFX_ITEM_DONTCARE )
+ {
+ SvxCellVerJustify eVerJustify = (SvxCellVerJustify)((const SvxVerJustifyItem&)
+ rAttrSet.Get( ATTR_VER_JUSTIFY )).GetValue();
+ rSet.Put( SvxVerJustifyItem( eVerJustify, nWhich ));
+ }
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+void ScFormatShell::ExecBckCol( SfxRequest& rReq )
+{
+ ExecuteAttr( rReq );
+}
+
+void ScFormatShell::GetBckColState( SfxItemSet& rSet )
+{
+ GetAttrState( rSet );
+}
+void ScFormatShell::GetNumFormatState( SfxItemSet& rSet )
+{
+ ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
+ BOOL bOle = pTabViewShell->GetViewFrame()->ISA(SfxInPlaceFrame);
+ BOOL bTabProt = GetViewData()->GetDocument()->IsTabProtected(GetViewData()->GetTabNo());
+ SfxApplication* pSfxApp = SFX_APP();
+
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nPosX = pViewData->GetCurX();
+ USHORT nPosY = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nMyId = 0;
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+
+
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case SID_NUMBER_FORMAT:
+ {
+ String aFormatCode; // bleibt leer, wenn dont-care
+
+ const SfxItemSet& rAttrSet = pTabViewShell->GetSelectionPattern()->GetItemSet();
+ if ( rAttrSet.GetItemState( ATTR_VALUE_FORMAT ) != SFX_ITEM_DONTCARE )
+ {
+ ULONG nNumberFormat = ((const SfxUInt32Item&)rAttrSet.Get(
+ ATTR_VALUE_FORMAT )).GetValue();
+
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ const SvNumberformat* pFormatEntry = pFormatter->GetEntry( nNumberFormat );
+ if ( pFormatEntry )
+ aFormatCode = pFormatEntry->GetFormatstring();
+ }
+
+ rSet.Put( SfxStringItem( nWhich, aFormatCode ) );
+ }
+ break;
+
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+
diff --git a/sc/source/ui/view/galwrap.cxx b/sc/source/ui/view/galwrap.cxx
new file mode 100644
index 000000000000..2b14059826cf
--- /dev/null
+++ b/sc/source/ui/view/galwrap.cxx
@@ -0,0 +1,114 @@
+/*************************************************************************
+ *
+ * $RCSfile: galwrap.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <vcl/graph.hxx>
+#include <svx/gallery.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/explorer.hxx>
+
+// -----------------------------------------------------------------------
+
+Graphic GalleryGetGraphic()
+{
+ GalleryExplorer* pGal = SVX_GALLERY();
+ DBG_ASSERT( pGal, "Wo ist die Gallery?" );
+ return pGal->GetGraphic();
+}
+
+USHORT GallerySGA_FORMAT_GRAPHIC()
+{
+ return SGA_FORMAT_GRAPHIC;
+}
+
+BOOL GalleryIsLinkage()
+{
+ GalleryExplorer* pGal = SVX_GALLERY();
+ DBG_ASSERT( pGal, "Wo ist die Gallery?" );
+ return pGal->IsLinkage();
+}
+
+String GalleryGetFullPath()
+{
+ GalleryExplorer* pGal = SVX_GALLERY();
+ DBG_ASSERT( pGal, "Wo ist die Gallery?" );
+// return pGal->GetPath().GetFull();
+ return pGal->GetURL().GetMainURL();
+}
+
+String GalleryGetFilterName()
+{
+ GalleryExplorer* pGal = SVX_GALLERY();
+ DBG_ASSERT( pGal, "Wo ist die Gallery?" );
+ return pGal->GetFilterName();
+}
+
+
+
+
diff --git a/sc/source/ui/view/gridmerg.cxx b/sc/source/ui/view/gridmerg.cxx
new file mode 100644
index 000000000000..cf065422f156
--- /dev/null
+++ b/sc/source/ui/view/gridmerg.cxx
@@ -0,0 +1,198 @@
+/*************************************************************************
+ *
+ * $RCSfile: gridmerg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <vcl/outdev.hxx>
+
+#include "gridmerg.hxx"
+
+//------------------------------------------------------------------
+
+ScGridMerger::ScGridMerger( OutputDevice* pOutDev, long nOnePixelX, long nOnePixelY ) :
+ pDev( pOutDev ),
+ nOneX( nOnePixelX ),
+ nOneY( nOnePixelY ),
+ bVertical( FALSE ),
+ nCount( 0 )
+{
+ // optimize (DrawGrid) only for pixel MapMode,
+ // to avoid rounding errors
+
+ bOptimize = ( pDev->GetMapMode().GetMapUnit() == MAP_PIXEL );
+}
+
+ScGridMerger::~ScGridMerger()
+{
+ Flush();
+}
+
+void ScGridMerger::AddLine( long nStart, long nEnd, long nPos )
+{
+ if ( nCount )
+ {
+ // not first line - test fix position
+ // more than one previous line - test distance
+
+ if ( nStart != nFixStart || nEnd != nFixEnd )
+ {
+ if ( nCount == 1 && nPos == nVarStart &&
+ ( nStart == nFixEnd ||
+ nStart == nFixEnd + ( bVertical ? nOneY : nOneX ) ) )
+ {
+ // additional optimization: extend connected lines
+ // keep nCount at 1
+ nFixEnd = nEnd;
+ }
+ else
+ Flush();
+ }
+ else if ( nCount == 1 )
+ {
+ nVarDiff = nPos - nVarStart;
+ ++nCount;
+ }
+ else if ( nPos != nVarStart + nCount * nVarDiff ) //! keep VarEnd?
+ Flush();
+ else
+ ++nCount;
+ }
+
+ if ( !nCount )
+ {
+ // first line (or flushed above) - just store
+
+ nFixStart = nStart;
+ nFixEnd = nEnd;
+ nVarStart = nPos;
+ nVarDiff = 0;
+ nCount = 1;
+ }
+}
+
+void ScGridMerger::AddHorLine( long nX1, long nX2, long nY )
+{
+ if ( bOptimize )
+ {
+ if ( bVertical )
+ {
+ Flush();
+ bVertical = FALSE;
+ }
+ AddLine( nX1, nX2, nY );
+ }
+ else
+ pDev->DrawLine( Point( nX1, nY ), Point( nX2, nY ) );
+}
+
+void ScGridMerger::AddVerLine( long nX, long nY1, long nY2 )
+{
+ if ( bOptimize )
+ {
+ if ( !bVertical )
+ {
+ Flush();
+ bVertical = TRUE;
+ }
+ AddLine( nY1, nY2, nX );
+ }
+ else
+ pDev->DrawLine( Point( nX, nY1 ), Point( nX, nY2 ) );
+}
+
+void ScGridMerger::Flush()
+{
+ if (nCount)
+ {
+ if (bVertical)
+ {
+ if ( nCount == 1 )
+ pDev->DrawLine( Point( nVarStart, nFixStart ), Point( nVarStart, nFixEnd ) );
+ else
+ {
+ long nVarEnd = nVarStart + ( nCount - 1 ) * nVarDiff;
+ pDev->DrawGrid( Rectangle( nVarStart, nFixStart, nVarEnd, nFixEnd ),
+ Size( nVarDiff, nFixEnd - nFixStart ),
+ GRID_VERTLINES );
+ }
+ }
+ else
+ {
+ if ( nCount == 1 )
+ pDev->DrawLine( Point( nFixStart, nVarStart ), Point( nFixEnd, nVarStart ) );
+ else
+ {
+ long nVarEnd = nVarStart + ( nCount - 1 ) * nVarDiff;
+ pDev->DrawGrid( Rectangle( nFixStart, nVarStart, nFixEnd, nVarEnd ),
+ Size( nFixEnd - nFixStart, nVarDiff ),
+ GRID_HORZLINES );
+ }
+ }
+ nCount = 0;
+ }
+}
+
+
+
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
new file mode 100644
index 000000000000..0d40b5551db2
--- /dev/null
+++ b/sc/source/ui/view/gridwin.cxx
@@ -0,0 +1,3686 @@
+/*************************************************************************
+ *
+ * $RCSfile: gridwin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+//SV
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#define ITEMID_FIELD EE_FEATURE_FIELD
+
+#include <svx/adjitem.hxx>
+#include <svx/algitem.hxx>
+#include <svx/dbexch.hrc>
+#include <svx/editview.hxx>
+#include <svx/editstat.hxx>
+#include <svx/flditem.hxx>
+#include <svx/svdetc.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/docfile.hxx>
+#include <svtools/stritem.hxx>
+#include <svtools/svlbox.hxx>
+#include <svtools/svtabbx.hxx>
+#include <svtools/urlbmk.hxx>
+#include <tools/urlobj.hxx>
+#include <vcl/sound.hxx>
+#include <vcl/system.hxx>
+#include <offmgr/app.hxx>
+#include <vcl/exchange.hxx>
+#include <vcl/graph.hxx>
+#include <sot/formats.hxx>
+
+#include <svx/svdview.hxx> // fuer Command-Handler (COMMAND_INSERTTEXT)
+#include <svx/outliner.hxx> // fuer Command-Handler (COMMAND_INSERTTEXT)
+
+#include <com/sun/star/sheet/MemberResultFlags.hpp>
+
+#include "gridwin.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "viewdata.hxx"
+#include "tabview.hxx"
+#include "select.hxx"
+#include "scmod.hxx"
+#include "document.hxx"
+#include "attrib.hxx"
+#include "dbcolect.hxx"
+#include "stlpool.hxx"
+#include "printfun.hxx"
+#include "cbutton.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "editutil.hxx"
+#include "scresid.hxx"
+#include "inputhdl.hxx"
+#include "uiitems.hxx" // Filter-Dialog - auslagern !!!
+#include "filtdlg.hxx"
+#include "impex.hxx" // Sylk-ID fuer CB
+#include "cell.hxx" // fuer Edit-Felder
+#include "patattr.hxx"
+#include "notemark.hxx"
+#include "rfindlst.hxx"
+#include "docpool.hxx"
+#include "output.hxx"
+#include "docfunc.hxx"
+#include "dbdocfun.hxx"
+#ifdef AUTOFILTER_POPUP
+#include <vcl/menu.hxx>
+#endif
+#include "dpobject.hxx"
+#include "dpoutput.hxx"
+
+using namespace com::sun::star;
+
+#define SC_AUTOFILTER_ALL 0
+#define SC_AUTOFILTER_CUSTOM 1
+#define SC_AUTOFILTER_TOP10 2
+
+// Modi fuer die FilterListBox
+enum ScFilterBoxMode
+{
+ SC_FILTERBOX_FILTER,
+ SC_FILTERBOX_DATASELECT,
+ SC_FILTERBOX_SCENARIO
+};
+
+extern SfxViewShell* pScActiveViewShell; // global.cxx
+extern USHORT nScClickMouseModifier; // global.cxx
+extern USHORT nScFillModeMouseModifier; // global.cxx
+
+#define SC_FILTERLISTBOX_LINES 12
+
+// STATIC DATA -----------------------------------------------------------
+
+static long nFilterBoxTabs[] =
+ { 1, // Number of Tabs
+ 0
+ };
+
+//==================================================================
+
+/*
+ * Der Autofilter wird auf dem Mac per AutoFilterPopup realisiert.
+ * Die AutoFilterListBox wird trotzdem fuer die Auswahlliste gebraucht.
+ */
+
+//==================================================================
+class ScFilterListBox : public SvTabListBox
+{
+ ScGridWindow* pGridWin;
+ USHORT nCol;
+ USHORT nRow;
+ BOOL bButtonDown;
+ BOOL bInit;
+ BOOL bCancelled;
+ ULONG nSel;
+ ScFilterBoxMode eMode;
+
+protected:
+ virtual void LoseFocus();
+ virtual void SelectHdl();
+
+public:
+ ScFilterListBox( Window* pParent, ScGridWindow* pGrid,
+ USHORT nNewCol, USHORT nNewRow, ScFilterBoxMode eNewMode );
+ ~ScFilterListBox();
+
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+
+ virtual void KeyInput( const KeyEvent& rKEvt );
+
+ USHORT GetCol() const { return nCol; }
+ USHORT GetRow() const { return nRow; }
+ ScFilterBoxMode GetMode() const { return eMode; }
+ BOOL IsDataSelect() const { return (eMode == SC_FILTERBOX_DATASELECT); }
+ void EndInit();
+ void SetCancelled() { bCancelled = TRUE; }
+};
+
+//-------------------------------------------------------------------
+
+// ListBox in einem FloatingWindow (pParent)
+ScFilterListBox::ScFilterListBox( Window* pParent, ScGridWindow* pGrid,
+ USHORT nNewCol, USHORT nNewRow, ScFilterBoxMode eNewMode ) :
+ SvTabListBox( pParent, WinBits(0) ), // ohne Border
+ pGridWin( pGrid ),
+ nCol( nNewCol ),
+ nRow( nNewRow ),
+ eMode( eNewMode ),
+ bButtonDown( FALSE ),
+ bInit( TRUE ),
+ bCancelled( FALSE ),
+ nSel( 0 )
+{
+}
+
+__EXPORT ScFilterListBox::~ScFilterListBox()
+{
+ if (IsMouseCaptured())
+ ReleaseMouse();
+}
+
+void ScFilterListBox::EndInit()
+{
+ SvLBoxEntry* pEntry = FirstSelected();
+ if (pEntry)
+ nSel = GetModel()->GetAbsPos( pEntry );
+ else
+ nSel = 0;
+
+ bInit = FALSE;
+}
+
+void __EXPORT ScFilterListBox::LoseFocus()
+{
+#ifndef UNX
+ Hide();
+#endif
+}
+
+void __EXPORT ScFilterListBox::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ bButtonDown = TRUE;
+ SvTabListBox::MouseButtonDown( rMEvt );
+}
+
+void __EXPORT ScFilterListBox::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ bButtonDown = FALSE;
+ SvTabListBox::MouseButtonUp( rMEvt );
+
+ if (!bCancelled)
+ pGridWin->FilterSelect( nSel );
+}
+
+void __EXPORT ScFilterListBox::KeyInput( const KeyEvent& rKEvt )
+{
+ KeyCode aCode = rKEvt.GetKeyCode();
+ if ( !aCode.GetModifier() ) // ohne alle Modifiers
+ {
+ USHORT nKey = aCode.GetCode();
+ if ( nKey == KEY_RETURN )
+ {
+ SelectHdl(); // auswaehlen
+ return;
+ }
+ else if ( nKey == KEY_ESCAPE )
+ {
+ pGridWin->ClickExtern(); // loescht die List-Box !!!
+ return;
+ }
+ }
+
+ SvTabListBox::KeyInput( rKEvt );
+}
+
+void __EXPORT ScFilterListBox::SelectHdl()
+{
+ if ( !IsTravelSelect() && !bInit && !bCancelled )
+ {
+ SvLBoxEntry* pEntry = FirstSelected();
+ if (pEntry)
+ {
+ nSel = GetModel()->GetAbsPos( pEntry );
+ if (!bButtonDown)
+ pGridWin->FilterSelect( nSel );
+ }
+ }
+}
+
+#ifdef AUTOFILTER_POPUP
+
+//==================================================================
+class AutoFilterPopup : public PopupMenu
+{
+public:
+ AutoFilterPopup( ScGridWindow* _pWin, USHORT _nCol, USHORT _nRow, BOOL bDatSel )
+ : pWin( _pWin ),
+ nCol( _nCol ),
+ nRow( _nRow ),
+ bIsDataSelect( bDatSel ),
+ bSelected( FALSE ) {}
+ ~AutoFilterPopup();
+
+protected:
+ virtual void Select();
+
+private:
+ ScGridWindow* pWin;
+ USHORT nCol;
+ USHORT nRow;
+ BOOL bIsDataSelect;
+ BOOL bSelected;
+};
+
+//-------------------------------------------------------------------
+
+void __EXPORT AutoFilterPopup::Select()
+{
+ // Button vor dem ausfuehren wieder zeichnen
+ if ( !bIsDataSelect )
+ {
+ pWin->HideCursor();
+ pWin->aComboButton.Draw( FALSE );
+ pWin->ShowCursor();
+ }
+ bSelected = TRUE;
+
+ USHORT nCurId = GetCurItemId();
+ pWin->ReleaseMouse();
+ String aStr = GetItemText( nCurId );
+ if ( bIsDataSelect )
+ pWin->ExecDataSelect( nCol, nRow, aStr );
+ else
+ pWin->ExecFilter( nCurId-1, nCol, nRow, aStr );
+}
+
+AutoFilterPopup::~AutoFilterPopup()
+{
+ if ( !bIsDataSelect && !bSelected )
+ {
+ pWin->HideCursor();
+ pWin->aComboButton.Draw( FALSE );
+ pWin->ShowCursor();
+ }
+}
+
+#endif // #ifdef AUTOFILTER_POPUP
+
+//==================================================================
+
+BOOL lcl_IsEditableMatrix( ScDocument* pDoc, const ScRange& rRange )
+{
+ // wenn es ein editierbarer Bereich ist, und rechts unten eine Matrix-Zelle
+ // mit Origin links oben liegt, enthaelt der Bereich genau die Matrix.
+ //! Direkt die MatrixEdges Funktionen von der Column herausreichen ???
+
+ if ( !pDoc->IsBlockEditable( rRange.aStart.Tab(), rRange.aStart.Col(),rRange.aStart.Row(),
+ rRange.aEnd.Col(),rRange.aEnd.Row() ) )
+ return FALSE;
+
+ ScAddress aPos;
+ const ScBaseCell* pCell = pDoc->GetCell( rRange.aEnd );
+ return ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA &&
+ ((ScFormulaCell*)pCell)->GetMatrixOrigin(aPos) && aPos == rRange.aStart );
+}
+
+//==================================================================
+
+// WB_DIALOGCONTROL noetig fuer UNO-Controls
+ScGridWindow::ScGridWindow( Window* pParent, ScViewData* pData, ScSplitPos eWhichPos ) :
+ Window( pParent, WB_CLIPCHILDREN | WB_DIALOGCONTROL ),
+ pViewData( pData ),
+ eWhich( eWhichPos ),
+ pNoteMarker( NULL ),
+ nCursorHideCount( 0 ),
+ bMarking( FALSE ),
+ bEEMouse( FALSE ),
+ nButtonDown( 0 ),
+ nMouseStatus( SC_GM_NONE ),
+ bPivotMouse( FALSE ),
+ bDPMouse( FALSE ),
+ bRFMouse( FALSE ),
+ nPagebreakMouse( SC_PD_NONE ),
+ bDragRect( FALSE ),
+ pFilterBox( NULL ),
+ pFilterFloat( NULL ),
+ nCurrentPointer( 0 ),
+ bIsInScroll( FALSE ),
+ bIsInPaint( FALSE ),
+ aComboButton( this ),
+ aCurMousePos( 0,0 ),
+ nPaintCount( 0 ),
+ bNeedsRepaint( FALSE ),
+ bAutoMarkVisible( FALSE )
+{
+ switch(eWhich)
+ {
+ case SC_SPLIT_TOPLEFT:
+ eHWhich = SC_SPLIT_LEFT;
+ eVWhich = SC_SPLIT_TOP;
+ break;
+ case SC_SPLIT_TOPRIGHT:
+ eHWhich = SC_SPLIT_RIGHT;
+ eVWhich = SC_SPLIT_TOP;
+ break;
+ case SC_SPLIT_BOTTOMLEFT:
+ eHWhich = SC_SPLIT_LEFT;
+ eVWhich = SC_SPLIT_BOTTOM;
+ break;
+ case SC_SPLIT_BOTTOMRIGHT:
+ eHWhich = SC_SPLIT_RIGHT;
+ eVWhich = SC_SPLIT_BOTTOM;
+ break;
+ default:
+ DBG_ERROR("GridWindow: falsche Position");
+ }
+
+ SetBackground();
+
+ SetMapMode(pViewData->GetLogicMode(eWhich));
+ EnableDrop();
+ EnableChildTransparentMode();
+ SetDialogControlFlags( WINDOW_DLGCTRL_RETURN | WINDOW_DLGCTRL_WANTFOCUS );
+
+ SetHelpId( HID_SC_WIN_GRIDWIN );
+ SetUniqueId( HID_SC_WIN_GRIDWIN );
+}
+
+__EXPORT ScGridWindow::~ScGridWindow()
+{
+ delete pFilterBox;
+ if (pFilterFloat)
+ pFilterFloat->EndPopupMode();
+ delete pFilterFloat;
+ delete pNoteMarker;
+}
+
+void __EXPORT ScGridWindow::Resize( const Size& rSize )
+{
+ // gar nix
+}
+
+void ScGridWindow::ClickExtern()
+{
+ DELETEZ(pFilterBox);
+ if (pFilterFloat)
+ pFilterFloat->EndPopupMode();
+ DELETEZ(pFilterFloat);
+}
+
+IMPL_LINK( ScGridWindow, PopupModeEndHdl, FloatingWindow*, pFloat )
+{
+ if (pFilterBox)
+ pFilterBox->SetCancelled(); // nicht mehr auswaehlen
+ GrabFocus();
+ return 0;
+}
+
+void ScGridWindow::DoScenarioMenue( const ScRange& rScenRange )
+{
+ delete pFilterBox;
+ if (pFilterFloat)
+ pFilterFloat->EndPopupMode();
+ delete pFilterFloat;
+
+ USHORT nCol = rScenRange.aEnd.Col(); // Zelle unterhalb des Buttons
+ USHORT nRow = rScenRange.aStart.Row();
+ if (nRow == 0)
+ {
+ nRow = rScenRange.aEnd.Row() + 1; // Bereich ganz oben -> Button unterhalb
+ if (nRow>MAXROW) nRow = MAXROW;
+ //! Texthoehe addieren (wenn sie an der View gespeichert ist...)
+ }
+
+ USHORT i;
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ long nSizeX = 0;
+ long nSizeY = 0;
+ long nHeight = 0;
+ pViewData->GetMergeSizePixel( nCol, nRow, nSizeX, nSizeY );
+ Point aPos = pViewData->GetScrPos( nCol, nRow, eWhich );
+ Rectangle aCellRect( OutputToScreenPixel(aPos), Size(nSizeX,nSizeY) );
+ aCellRect.Top() -= nSizeY;
+ aCellRect.Bottom() -= nSizeY - 1;
+ // Die ListBox direkt unter der schwarzen Linie auf dem Zellgitter
+ // (wenn die Linie verdeckt wird, sieht es komisch aus...)
+
+ pFilterFloat = new FloatingWindow( this, WinBits(WB_BORDER) ); // nicht resizable etc.
+ pFilterFloat->SetPopupModeEndHdl( LINK( this, ScGridWindow, PopupModeEndHdl ) );
+ pFilterBox = new ScFilterListBox( pFilterFloat, this, nCol, nRow, SC_FILTERBOX_SCENARIO );
+
+ nSizeX += 1;
+
+ {
+ Font aOldFont = GetFont(); SetFont( pFilterBox->GetFont() );
+ MapMode aOldMode = GetMapMode(); SetMapMode( MAP_PIXEL );
+
+ nHeight = GetTextHeight();
+ nHeight *= SC_FILTERLISTBOX_LINES;
+
+ SetMapMode( aOldMode );
+ SetFont( aOldFont );
+ }
+
+ // SetSize spaeter
+ pFilterBox->SetSelectionMode( SINGLE_SELECTION );
+ pFilterBox->SetTabs( nFilterBoxTabs, MapUnit( MAP_APPFONT ));
+
+
+ // ParentSize Abfrage fehlt
+
+ Size aSize( nSizeX, nHeight );
+ pFilterBox->SetSizePixel( aSize );
+ pFilterBox->Show(); // Show muss vor SetUpdateMode kommen !!!
+ pFilterBox->SetUpdateMode(FALSE);
+
+ // SetOutputSizePixel/StartPopupMode erst unten, wenn die Groesse feststeht
+
+ // Listbox fuellen
+
+ long nMaxText = 0;
+ String aCurrent;
+ String aTabName;
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nEntryCount = 0;
+ for (i=nTab+1; i<nTabCount && pDoc->IsScenario(i); i++)
+ {
+ if (pDoc->HasScenarioRange( i, rScenRange ))
+ if (pDoc->GetName( i, aTabName ))
+ {
+ pFilterBox->InsertEntry( aTabName );
+ if (pDoc->IsActiveScenario(i))
+ aCurrent = aTabName;
+ long nTextWidth = pFilterBox->GetTextWidth( aTabName );
+ if ( nTextWidth > nMaxText )
+ nMaxText = nTextWidth;
+ ++nEntryCount;
+ }
+ }
+ if (nEntryCount > SC_FILTERLISTBOX_LINES)
+ nMaxText += GetSettings().GetStyleSettings().GetScrollBarSize();
+ nMaxText += 4; // fuer Rand
+ if ( nMaxText > 300 )
+ nMaxText = 300; // auch nicht uebertreiben (Pixel)
+
+ if (nMaxText > nSizeX) // Groesse auf benoetigte Groesse anpassen
+ {
+ long nDiff = nMaxText - nSizeX;
+ aSize = Size( nMaxText, nHeight );
+ pFilterBox->SetSizePixel( aSize );
+ pFilterFloat->SetOutputSizePixel( aSize );
+
+ // auch Startposition verschieben
+ long nNewX = aCellRect.Left() - nDiff;
+ if ( nNewX < 0 )
+ nNewX = 0;
+ aCellRect.Left() = nNewX;
+ }
+
+ pFilterFloat->SetOutputSizePixel( aSize );
+ pFilterFloat->StartPopupMode( aCellRect, FLOATWIN_POPUPMODE_DOWN );
+
+ pFilterBox->SetUpdateMode(TRUE);
+ pFilterBox->GrabFocus();
+
+ // Select erst nach GrabFocus, damit das Focus-Rechteck richtig landet
+ SvLBoxEntry* pSelect = NULL;
+ if (aCurrent.Len())
+ {
+ ULONG nPos = pFilterBox->GetEntryPos( aCurrent );
+ pSelect = pFilterBox->GetEntry( nPos );
+ }
+ if (!pSelect)
+ pSelect = pFilterBox->GetEntry(0); // einer sollte immer selektiert sein
+ if (pSelect)
+ pFilterBox->Select(pSelect);
+
+ pFilterBox->EndInit();
+
+ // Szenario-Auswahl kommt aus MouseButtonDown:
+ // der naechste MouseMove auf die Filterbox ist wie ein ButtonDown
+
+ nMouseStatus = SC_GM_FILTER;
+ CaptureMouse();
+}
+
+void ScGridWindow::DoAutoFilterMenue( USHORT nCol, USHORT nRow, BOOL bDataSelect )
+{
+ // bei AUTOFILTER_POPUP-define fuer AutoFilter das Popup nehmen
+#ifdef AUTOFILTER_POPUP
+ if ( !bDataSelect )
+ {
+ DoAutoFilterPopup( nCol, nRow, bDataSelect );
+ return;
+ }
+#endif
+
+ /*
+ * Standard-Variante mit TreeListBox
+ */
+
+ delete pFilterBox;
+ if (pFilterFloat)
+ pFilterFloat->EndPopupMode();
+ delete pFilterFloat;
+
+ USHORT i;
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ long nSizeX = 0;
+ long nSizeY = 0;
+ long nHeight = 0;
+ pViewData->GetMergeSizePixel( nCol, nRow, nSizeX, nSizeY );
+ Point aPos = pViewData->GetScrPos( nCol, nRow, eWhich );
+
+ Rectangle aCellRect( OutputToScreenPixel(aPos), Size(nSizeX,nSizeY) );
+
+ aPos.X() -= 1;
+ aPos.Y() += nSizeY - 1;
+
+ pFilterFloat = new FloatingWindow( this, WinBits(WB_BORDER) ); // nicht resizable etc.
+ pFilterFloat->SetPopupModeEndHdl( LINK( this, ScGridWindow, PopupModeEndHdl ) );
+ pFilterBox = new ScFilterListBox( pFilterFloat, this, nCol, nRow,
+ bDataSelect ? SC_FILTERBOX_DATASELECT : SC_FILTERBOX_FILTER );
+
+ nSizeX += 1;
+
+ {
+ Font aOldFont = GetFont(); SetFont( pFilterBox->GetFont() );
+ MapMode aOldMode = GetMapMode(); SetMapMode( MAP_PIXEL );
+
+ nHeight = GetTextHeight();
+ nHeight *= SC_FILTERLISTBOX_LINES;
+
+ SetMapMode( aOldMode );
+ SetFont( aOldFont );
+ }
+
+ // SetSize spaeter
+ pFilterBox->SetSelectionMode( SINGLE_SELECTION );
+ pFilterBox->SetTabs( nFilterBoxTabs, MapUnit( MAP_APPFONT ));
+
+ BOOL bEmpty = FALSE;
+ TypedStrCollection aStrings( 128, 128 );
+ if ( bDataSelect ) // Auswahl-Liste
+ {
+ // Liste fuellen
+ aStrings.SetCaseSensitive( TRUE );
+ pDoc->GetDataEntries( nCol, nRow, nTab, aStrings );
+ if ( aStrings.GetCount() == 0 )
+ bEmpty = TRUE;
+ }
+ else // AutoFilter
+ {
+ //! wird der Titel ueberhaupt ausgewertet ???
+ String aString;
+ pDoc->GetString( nCol, nRow, nTab, aString );
+ pFilterBox->SetText( aString );
+
+ // Standard-Eintraege
+ pFilterBox->InsertEntry( String( ScResId( SCSTR_ALL ) ) );
+ pFilterBox->InsertEntry( String( ScResId( SCSTR_STDFILTER ) ) );
+ pFilterBox->InsertEntry( String( ScResId( SCSTR_TOP10FILTER ) ) );
+
+ // Liste fuellen
+ pDoc->GetFilterEntries( nCol, nRow, nTab, aStrings );
+ }
+
+ if (!bEmpty)
+ {
+ // Position und Groesse an Fenster anpassen
+ //! vorher Abfrage, ob die Eintraege hineinpassen (Breite)
+
+ Size aParentSize = GetParent()->GetOutputSizePixel();
+ Size aSize( nSizeX, nHeight );
+
+ if ( aSize.Height() > aParentSize.Height() )
+ aSize.Height() = aParentSize.Height();
+ if ( aPos.Y() + aSize.Height() > aParentSize.Height() )
+ aPos.Y() = aParentSize.Height() - aSize.Height();
+
+ pFilterBox->SetSizePixel( aSize );
+ pFilterBox->Show(); // Show muss vor SetUpdateMode kommen !!!
+ pFilterBox->SetUpdateMode(FALSE);
+
+ pFilterFloat->SetOutputSizePixel( aSize );
+ pFilterFloat->StartPopupMode( aCellRect, FLOATWIN_POPUPMODE_DOWN );
+
+ // Listbox fuellen
+ USHORT nCount = aStrings.GetCount();
+ BOOL bWait = ( nCount > 100 );
+
+ if (bWait)
+ EnterWait();
+
+ for (i=0; i<nCount; i++)
+ pFilterBox->InsertEntry( aStrings[i]->GetString() );
+
+ if (bWait)
+ LeaveWait();
+
+ pFilterBox->SetUpdateMode(TRUE);
+ }
+
+ SvLBoxEntry* pSelect = NULL;
+
+ if (!bDataSelect) // AutoFilter: aktiven Eintrag selektieren
+ {
+ ScDBData* pDBData = pDoc->GetDBAtCursor( nCol, nRow, nTab );
+ if (pDBData)
+ {
+ ScQueryParam aParam;
+ pDBData->GetQueryParam( aParam ); // kann nur MAXQUERY Eintraege ergeben
+
+ BOOL bValid = TRUE;
+ for (i=0; i<MAXQUERY && bValid; i++) // bisherige Filter-Einstellungen
+ if (aParam.GetEntry(i).bDoQuery)
+ {
+ //! Abfrage mit DrawButtons zusammenfassen!
+
+ ScQueryEntry& rEntry = aParam.GetEntry(i);
+ if (i>0)
+ if (rEntry.eConnect != SC_AND)
+ bValid = FALSE;
+ if (rEntry.nField == nCol)
+ {
+ if (rEntry.eOp == SC_EQUAL)
+ {
+ String* pStr = rEntry.pStr;
+ if (pStr)
+ {
+ ULONG nPos = pFilterBox->GetEntryPos( *pStr );
+ pSelect = pFilterBox->GetEntry( nPos );
+ }
+ }
+ else if (rEntry.eOp == SC_TOPVAL && rEntry.pStr &&
+ rEntry.pStr->EqualsAscii("10"))
+ pSelect = pFilterBox->GetEntry( SC_AUTOFILTER_TOP10 );
+ else
+ pSelect = pFilterBox->GetEntry( SC_AUTOFILTER_CUSTOM );
+ }
+ }
+
+ if (!bValid)
+ pSelect = pFilterBox->GetEntry( SC_AUTOFILTER_CUSTOM );
+ }
+ }
+
+ // neu (309): irgendwas muss immer selektiert sein:
+ if (!pSelect)
+ pSelect = pFilterBox->GetEntry(0);
+
+ // keine leere Auswahl-Liste anzeigen:
+
+ if ( bEmpty )
+ {
+ DELETEZ(pFilterBox); // war nix
+ if (pFilterFloat)
+ pFilterFloat->EndPopupMode();
+ DELETEZ(pFilterFloat);
+ Sound::Beep(); // bemerkbar machen
+ }
+ else
+ {
+// pFilterBox->Show(); // schon vorne
+ pFilterBox->GrabFocus();
+
+ // Select erst nach GrabFocus, damit das Focus-Rechteck richtig landet
+ if (pSelect)
+ pFilterBox->Select(pSelect);
+
+ pFilterBox->EndInit();
+
+ if (!bDataSelect)
+ {
+ // AutoFilter (aus MouseButtonDown):
+ // der naechste MouseMove auf die Filterbox ist wie ein ButtonDown
+
+ nMouseStatus = SC_GM_FILTER;
+ CaptureMouse();
+ }
+ }
+}
+
+#ifdef AUTOFILTER_POPUP
+
+ /*
+ * Macintosh-Variante mit Popup-Menue
+ */
+
+void ScGridWindow::DoAutoFilterPopup( USHORT nCol, USHORT nRow, BOOL bDataSelect )
+{
+ AutoFilterPopup* pPopupMenu = new AutoFilterPopup( this, nCol, nRow, bDataSelect );
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ Point aPos = pViewData->GetScrPos( nCol, nRow, eWhich );
+ BOOL bValid = TRUE;
+ String aStrSelect;
+ USHORT nSelPos = 0;
+
+ TypedStrCollection aStrings( 128, 128 );
+ USHORT nFirst = 1;
+ if ( bDataSelect ) // Auswahl-Liste
+ {
+ // Liste fuellen
+ aStrings.SetCaseSensitive( TRUE );
+ pDoc->GetDataEntries( nCol, nRow, nTab, aStrings );
+
+ // nichts selektieren
+ bValid = FALSE;
+ }
+ else // AutoFilter
+ {
+ // Standard-Eintraege
+ pPopupMenu->InsertItem( 1, String( ScResId(SCSTR_ALL) ) );
+ pPopupMenu->InsertItem( 2, String( ScResId(SCSTR_STDFILTER) ) );
+ pPopupMenu->InsertItem( 3, String( ScResId(SCSTR_TOP10FILTER) ) );
+ nFirst = 4;
+
+ // Liste fuellen
+ pDoc->GetFilterEntries( nCol, nRow, nTab, aStrings );
+
+ // aktiven Eintrag suchen
+ ScDBData* pDBData = pDoc->GetDBAtCursor( nCol, nRow, nTab );
+ if (pDBData)
+ {
+ ScQueryParam aParam;
+ pDBData->GetQueryParam( aParam );
+
+ for (USHORT i=0; i<MAXQUERY && bValid; i++) // bisherige Filter-Einstellungen
+ {
+ ScQueryEntry& rEntry = aParam.GetEntry(i);
+ if (rEntry.bDoQuery)
+ {
+ if (i>0)
+ if (rEntry.eConnect != SC_AND)
+ bValid = FALSE;
+ if (rEntry.nField == nCol)
+ {
+ if (rEntry.eOp == SC_EQUAL)
+ {
+ String* pStr = rEntry.pStr;
+ if (pStr)
+ aStrSelect = *pStr;
+ }
+ else if (rEntry.eOp == SC_TOPVAL && rEntry.pStr &&
+ *rEntry.pStr == "10")
+ nSelPos = SC_AUTOFILTER_TOP10;
+ else
+ nSelPos = SC_AUTOFILTER_CUSTOM;
+ }
+ }
+ }
+ if (!bValid)
+ {
+ aStrSelect.Erase();
+ nSelPos = 0;
+ }
+ }
+ }
+
+ // Menue fuellen
+
+ USHORT nCount = aStrings.GetCount();
+ for ( USHORT i=0; i<nCount; i++ )
+ {
+ const String& rStr = aStrings[i]->GetString();
+
+ if ( bValid && nSelPos == 0 )
+ if ( aStrSelect == rStr )
+ nSelPos = i+nFirst;
+
+ pPopupMenu->InsertItem( i+nFirst, rStr );
+ }
+
+ if ( bValid )
+ {
+ pPopupMenu->SetDefaultItem( nSelPos );
+ pPopupMenu->CheckItem( nSelPos );
+ }
+
+ // ausfuehren nur, wenn ueberhaupt was drin ist (bei Auswahl-Liste)
+ if ( nCount+nFirst > 1 )
+ pPopupMenu->Execute( OutputToScreenPixel( aPos ) );
+ else
+ Sound::Beep();
+
+ delete pPopupMenu;
+}
+
+#endif // #ifdef AUTOFILTER_POPUP
+
+void ScGridWindow::FilterSelect( ULONG nSel )
+{
+ String aString;
+ SvLBoxEntry* pEntry = pFilterBox->GetEntry( nSel );
+ if (pEntry)
+ {
+ SvLBoxString* pStringEntry = (SvLBoxString*) pEntry->GetFirstItem( SV_ITEM_ID_LBOXSTRING );
+ if ( pStringEntry )
+ aString = pStringEntry->GetText();
+ }
+
+ USHORT nCol = pFilterBox->GetCol();
+ USHORT nRow = pFilterBox->GetRow();
+ switch ( pFilterBox->GetMode() )
+ {
+ case SC_FILTERBOX_DATASELECT:
+ ExecDataSelect( nCol, nRow, aString );
+ break;
+ case SC_FILTERBOX_FILTER:
+ ExecFilter( nSel, nCol, nRow, aString );
+ break;
+ case SC_FILTERBOX_SCENARIO:
+ pViewData->GetView()->UseScenario( aString );
+ break;
+ }
+
+ if (pFilterFloat)
+ pFilterFloat->EndPopupMode();
+
+ GrabFocus(); // unter OS/2 stimmt der Focus sonst nicht
+}
+
+void ScGridWindow::ExecDataSelect( USHORT nCol, USHORT nRow, const String& rStr )
+{
+ USHORT nTab = pViewData->GetTabNo();
+ if ( rStr.Len() )
+ pViewData->GetView()->EnterData( nCol, nRow, nTab, rStr );
+}
+
+void ScGridWindow::ExecFilter( ULONG nSel,
+ USHORT nCol, USHORT nRow,
+ const String& aValue )
+{
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pViewData->GetDocument();
+
+ ScDBData* pDBData = pDoc->GetDBAtCursor( nCol, nRow, nTab );
+ if (pDBData)
+ {
+ USHORT i;
+ ScQueryParam aParam;
+ pDBData->GetQueryParam( aParam ); // kann nur MAXQUERY Eintraege ergeben
+
+ if (SC_AUTOFILTER_CUSTOM == nSel)
+ {
+// lcl_StartFilterDialog( pViewData, aParam, Application::GetAppWindow() );
+ pViewData->GetView()->SetCursor(nCol,nRow); //! auch ueber Slot ??
+ SFX_DISPATCHER().Execute( SID_FILTER, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD );
+ }
+ else
+ {
+ BOOL bDeleteOld = FALSE;
+ USHORT nQueryPos = 0;
+ BOOL bFound = FALSE;
+ if (!aParam.bInplace)
+ bDeleteOld = TRUE;
+ if (aParam.bRegExp)
+ bDeleteOld = TRUE;
+ for (i=0; i<MAXQUERY && !bDeleteOld; i++) // bisherige Filter-Einstellungen
+ if (aParam.GetEntry(i).bDoQuery)
+ {
+ //! Abfrage mit DrawButtons zusammenfassen!
+
+ ScQueryEntry& rEntry = aParam.GetEntry(i);
+ if (i>0)
+ if (rEntry.eConnect != SC_AND)
+ bDeleteOld = TRUE;
+
+ if (rEntry.nField == nCol)
+ {
+ if (bFound) // diese Spalte zweimal?
+ bDeleteOld = TRUE;
+ nQueryPos = i;
+ bFound = TRUE;
+ }
+ if (!bFound)
+ nQueryPos = i + 1;
+ }
+
+ if (bDeleteOld)
+ {
+ USHORT nEC = aParam.GetEntryCount();
+ for (USHORT i=0; i<nEC; i++)
+ aParam.GetEntry(i).bDoQuery = FALSE;
+ nQueryPos = 0;
+ aParam.bInplace = TRUE;
+ aParam.bRegExp = FALSE;
+ }
+
+ if ( nQueryPos < MAXQUERY || SC_AUTOFILTER_ALL == nSel ) // loeschen geht immer
+ {
+ if (nSel)
+ {
+ ScQueryEntry& rNewEntry = aParam.GetEntry(nQueryPos);
+
+ rNewEntry.bDoQuery = TRUE;
+ rNewEntry.bQueryByString = TRUE;
+ rNewEntry.nField = nCol;
+ if ( nSel == SC_AUTOFILTER_TOP10 )
+ {
+ rNewEntry.eOp = SC_TOPVAL;
+ *rNewEntry.pStr = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("10"));
+ }
+ else
+ {
+ rNewEntry.eOp = SC_EQUAL;
+ *rNewEntry.pStr = aValue;
+ }
+ if (nQueryPos > 0)
+ rNewEntry.eConnect = SC_AND;
+ }
+ else
+ {
+ if (bFound)
+ aParam.DeleteQuery(nQueryPos);
+ }
+
+ pViewData->GetView()->Query( aParam, NULL, TRUE );
+ pDBData->SetQueryParam( aParam ); // speichern
+ }
+ else // "Zuviele Bedingungen"
+ pViewData->GetView()->ErrorMessage( STR_FILTER_TOOMANY );
+ }
+ }
+ else
+ DBG_ERROR("Wo ist der Datenbankbereich?");
+}
+
+void ScGridWindow::SetPointer( const Pointer& rPointer )
+{
+ nCurrentPointer = 0;
+ Window::SetPointer( rPointer );
+}
+
+void ScGridWindow::MoveMouseStatus( ScGridWindow& rDestWin )
+{
+ if (nButtonDown)
+ {
+ rDestWin.nButtonDown = nButtonDown;
+ rDestWin.nMouseStatus = nMouseStatus;
+ }
+
+ if (bRFMouse)
+ {
+ rDestWin.bRFMouse = bRFMouse;
+ rDestWin.bRFSize = bRFSize;
+ rDestWin.nRFIndex = nRFIndex;
+ rDestWin.nRFAddX = nRFAddX;
+ rDestWin.nRFAddY = nRFAddY;
+ bRFMouse = FALSE;
+ }
+
+ if (nPagebreakMouse)
+ {
+ rDestWin.nPagebreakMouse = nPagebreakMouse;
+ rDestWin.nPagebreakBreak = nPagebreakBreak;
+ rDestWin.nPagebreakPrev = nPagebreakPrev;
+ rDestWin.aPagebreakSource = aPagebreakSource;
+ rDestWin.aPagebreakDrag = aPagebreakDrag;
+ nPagebreakMouse = SC_PD_NONE;
+ }
+}
+
+BOOL ScGridWindow::TestMouse( const MouseEvent& rMEvt, BOOL bAction )
+{
+ // MouseEvent buttons must only be checked if bAction==TRUE
+ // to allow changing the mouse pointer in MouseMove,
+ // but not start AutoFill with right button (#74229#).
+ // with bAction==TRUE, SetFillMode / SetDragMode is called
+
+ if ( bAction && !rMEvt.IsLeft() )
+ return FALSE;
+
+ BOOL bNewPointer = FALSE;
+
+ if (pViewData->IsActive())
+ {
+ // Auto-Fill
+
+ ScRange aMarkRange;
+ if (pViewData->GetSimpleArea( aMarkRange, FALSE ))
+ {
+ if ( aMarkRange.aStart.Tab() == pViewData->GetTabNo() )
+ {
+ // Block-Ende wie in DrawAutoFillMark
+ USHORT nX = aMarkRange.aEnd.Col();
+ USHORT nY = aMarkRange.aEnd.Row();
+
+ Point aFillPos = pViewData->GetScrPos( nX, nY, eWhich, TRUE );
+ long nSizeXPix;
+ long nSizeYPix;
+ pViewData->GetMergeSizePixel( nX, nY, nSizeXPix, nSizeYPix );
+ aFillPos.X() += nSizeXPix;
+ aFillPos.Y() += nSizeYPix;
+
+ Point aMousePos = rMEvt.GetPosPixel();
+ // Abfrage hier passend zu DrawAutoFillMark
+ // (ein Pixel mehr als markiert)
+ if ( aMousePos.X() >= aFillPos.X()-3 && aMousePos.X() <= aFillPos.X()+4 &&
+ aMousePos.Y() >= aFillPos.Y()-3 && aMousePos.Y() <= aFillPos.Y()+4 )
+ {
+ SetPointer( Pointer( POINTER_CROSS ) ); //! dickeres Kreuz ?
+ if (bAction)
+ {
+ if ( lcl_IsEditableMatrix( pViewData->GetDocument(), aMarkRange ) )
+ pViewData->SetDragMode(
+ aMarkRange.aStart.Col(), aMarkRange.aStart.Row(), nX, nY, SC_FILL_MATRIX );
+ else
+ pViewData->SetFillMode(
+ aMarkRange.aStart.Col(), aMarkRange.aStart.Row(), nX, nY );
+ }
+ bNewPointer = TRUE;
+ }
+ }
+ }
+
+ // Embedded-Rechteck
+
+ ScDocument* pDoc = pViewData->GetDocument();
+ if (pDoc->IsEmbedded())
+ {
+ ScTripel aStart;
+ ScTripel aEnd;
+ pDoc->GetEmbedded( aStart, aEnd );
+ if ( pViewData->GetTabNo() == aStart.GetTab() )
+ {
+ Point aStartPos = pViewData->GetScrPos( aStart.GetCol(), aStart.GetRow(), eWhich );
+ Point aEndPos = pViewData->GetScrPos( aEnd.GetCol()+1, aEnd.GetRow()+1, eWhich );
+ Point aMousePos = rMEvt.GetPosPixel();
+ BOOL bTop = ( aMousePos.X() >= aStartPos.X()-3 && aMousePos.X() <= aStartPos.X()+1 &&
+ aMousePos.Y() >= aStartPos.Y()-3 && aMousePos.Y() <= aStartPos.Y()+1 );
+ BOOL bBottom = ( aMousePos.X() >= aEndPos.X()-3 && aMousePos.X() <= aEndPos.X()+1 &&
+ aMousePos.Y() >= aEndPos.Y()-3 && aMousePos.Y() <= aEndPos.Y()+1 );
+ if ( bTop || bBottom )
+ {
+ SetPointer( Pointer( POINTER_CROSS ) );
+ if (bAction)
+ {
+ BYTE nMode = bTop ? SC_FILL_EMBED_LT : SC_FILL_EMBED_RB;
+ pViewData->SetDragMode(
+ aStart.GetCol(), aStart.GetRow(),
+ aEnd.GetCol(), aEnd.GetRow(), nMode );
+ }
+ bNewPointer = TRUE;
+ }
+ }
+ }
+ }
+
+ if (!bNewPointer && bAction)
+ {
+// SetPointer( POINTER_ARROW ); // in Fu...
+ pViewData->ResetFillMode();
+ }
+
+ return bNewPointer;
+}
+
+void __EXPORT ScGridWindow::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ aCurMousePos = rMEvt.GetPosPixel();
+
+ // Filter-Popup beendet sich mit eigenem Mausklick, nicht erst beim Klick
+ // in das GridWindow, darum ist die folgende Abfrage nicht mehr noetig:
+#if 0
+ // merken, dass FilterBox geloescht wird, damit sichergestellt
+ // ist, dass in diesem Handler nicht an gleicher Stelle wieder
+ // eine neue geoeffnet wird.
+ BOOL bWasFilterBox = ( pFilterBox != NULL &&
+ ((Window*)pFilterBox)->IsVisible() &&
+ !pFilterBox->IsDataSelect() );
+ USHORT nOldColFBox = bWasFilterBox ? pFilterBox->GetCol() : 0;
+ USHORT nOldRowFBox = bWasFilterBox ? pFilterBox->GetRow() : 0;
+#endif
+
+ ClickExtern(); // loescht FilterBox, wenn vorhanden
+
+ HideNoteMarker(); // Notiz-Anzeige
+
+ bEEMouse = FALSE;
+
+ ScModule* pScMod = SC_MOD();
+ if (pScMod->IsModalMode(pViewData->GetSfxDocShell()))
+ {
+ Sound::Beep();
+ return;
+ }
+
+ pScActiveViewShell = pViewData->GetViewShell(); // falls auf Link geklickt wird
+ nScClickMouseModifier = rMEvt.GetModifier(); // um Control-Klick immer zu erkennen
+
+ BOOL bDetective = pViewData->GetViewShell()->IsAuditShell();
+ BOOL bRefMode = pViewData->IsRefMode(); // Referenz angefangen
+ BOOL bFormulaMode = pScMod->IsFormulaMode(); // naechster Klick -> Referenz
+ BOOL bEditMode = pViewData->HasEditView(eWhich); // auch bei Mode==SC_INPUT_TYPE
+
+ // DeactivateIP passiert nur noch bei MarkListHasChanged
+
+ // im GrabFocus Aufruf kann eine Fehlermeldung hochkommen
+ // (z.B. beim Umbenennen von Tabellen per Tab-Reiter)
+
+ if (!nButtonDown)
+ nButtonDown = rMEvt.GetButtons(); // vorher, damit StopMarking klappt
+
+// pViewData->GetViewShell()->GetViewFrame()->GetWindow().GrabFocus();
+ if (bEditMode || !bFormulaMode)
+ GrabFocus();
+
+ if ( nMouseStatus == SC_GM_IGNORE )
+ {
+ nButtonDown = 0;
+ nMouseStatus = SC_GM_NONE;
+ return;
+ }
+
+ if ( bDetective ) // Detektiv-Fuell-Modus
+ {
+ if ( rMEvt.IsLeft() && !rMEvt.GetModifier() )
+ {
+ Point aPos = rMEvt.GetPosPixel();
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+
+ SfxInt16Item aPosXItem( SID_RANGE_COL, nPosX );
+ SfxInt16Item aPosYItem( SID_RANGE_ROW, nPosY );
+ SFX_DISPATCHER().Execute( SID_FILL_SELECT, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aPosXItem, &aPosYItem, (void*)0L );
+
+ }
+ nButtonDown = 0;
+ nMouseStatus = SC_GM_NONE;
+ return;
+ }
+
+ BOOL bDouble = (rMEvt.GetClicks() == 2);
+ if (!bDouble)
+ nMouseStatus = SC_GM_NONE;
+
+ if (!bFormulaMode)
+ {
+ if ( pViewData->GetActivePart() != eWhich )
+ pViewData->GetView()->ActivatePart( eWhich );
+ }
+ else
+ {
+ ScViewSelectionEngine* pSelEng = pViewData->GetView()->GetSelEngine();
+ pSelEng->SetWindow(this);
+ pSelEng->SetWhich(eWhich);
+ pSelEng->SetVisibleArea( Rectangle(Point(), GetOutputSizePixel()) );
+ }
+
+ if (bEditMode && (pViewData->GetRefTabNo() == pViewData->GetTabNo()))
+ {
+ Point aPos = rMEvt.GetPosPixel();
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+
+ EditView* pEditView;
+ USHORT nEditCol;
+ USHORT nEditRow;
+ pViewData->GetEditView( eWhich, pEditView, nEditCol, nEditRow );
+ USHORT nEndCol = pViewData->GetEditEndCol();
+ USHORT nEndRow = pViewData->GetEditEndRow();
+
+ if ( nPosX >= (short) nEditCol && nPosX <= (short) nEndCol &&
+ nPosY >= (short) nEditRow && nPosY <= (short) nEndRow )
+ {
+ // #53966# beim Klick in die Tabellen-EditView immer den Focus umsetzen
+ if (bFormulaMode) // sonst ist es oben schon passiert
+ GrabFocus();
+
+ pScMod->SetInputMode( SC_INPUT_TABLE );
+ bEEMouse = TRUE;
+ bEditMode = pEditView->MouseButtonDown( rMEvt );
+ return;
+ }
+ }
+
+ if (pScMod->GetIsWaterCan())
+ {
+ //! was is mit'm Mac ???
+ if ( rMEvt.GetModifier() + rMEvt.GetButtons() == MOUSE_RIGHT )
+ {
+ nMouseStatus = SC_GM_WATERUNDO;
+ return;
+ }
+ }
+
+ // Reihenfolge passend zum angezeigten Cursor:
+ // RangeFinder, AutoFill, PageBreak, Drawing
+
+ if ( HitRangeFinder( rMEvt.GetPosPixel(), bRFSize, &nRFIndex, &nRFAddX, &nRFAddY ) )
+ {
+ bRFMouse = TRUE; // die anderen Variablen sind oben initialisiert
+
+ if ( pViewData->GetActivePart() != eWhich )
+ pViewData->GetView()->ActivatePart( eWhich ); //! schon oben immer ???
+
+ // CaptureMouse();
+ StartTracking();
+ return;
+ }
+
+ BOOL bAutoFill = TestMouse( rMEvt, TRUE );
+ if (bAutoFill)
+ pScMod->InputEnterHandler(); // Autofill etc.
+
+ if (!bAutoFill)
+ {
+ nPagebreakMouse = HitPageBreak( rMEvt.GetPosPixel(), &aPagebreakSource,
+ &nPagebreakBreak, &nPagebreakPrev );
+ if (nPagebreakMouse)
+ {
+ bPagebreakDrawn = FALSE;
+ // CaptureMouse();
+ StartTracking();
+ PagebreakMove( rMEvt, FALSE );
+ return;
+ }
+ }
+
+ if (!bFormulaMode && !bEditMode && rMEvt.IsLeft())
+ {
+ if ( !bAutoFill && DrawMouseButtonDown(rMEvt) )
+ {
+ //if (DrawHasMarkedObj())
+ // pViewData->GetViewShell()->SetDrawShellOrSub(); // Draw-Objekt selektiert
+ return;
+ }
+
+ pViewData->GetViewShell()->SetDrawShell( FALSE ); // kein Draw-Objekt selektiert
+
+ // TestMouse schon oben passiert
+ }
+
+ Point aPos = rMEvt.GetPosPixel();
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pViewData->GetDocument();
+
+
+ //
+ // Autofilter - Knoepfe
+ //
+
+ if ( !bDouble && !bFormulaMode ) //! auf rechte Taste abfragen ???
+ {
+ ScMergeFlagAttr* pAttr = (ScMergeFlagAttr*)
+ pDoc->GetAttr( nPosX, nPosY, nTab, ATTR_MERGE_FLAG );
+ if (pAttr->HasAutoFilter())
+ {
+ Point aScrPos = pViewData->GetScrPos(nPosX,nPosY,eWhich);
+ long nSizeX;
+ long nSizeY;
+ Point aDiffPix = aPos;
+
+ aDiffPix -= aScrPos;
+ pViewData->GetMergeSizePixel( nPosX, nPosY, nSizeX, nSizeY );
+
+ // Breite des Buttons ist nicht von der Zellhoehe abhaengig
+ Size aButSize = aComboButton.GetSizePixel();
+ long nButWidth = Min( aButSize.Width(), nSizeX );
+ long nButHeight = Min( aButSize.Height(), nSizeY );
+
+ if ( aDiffPix.X() >= nSizeX - nButWidth &&
+ aDiffPix.Y() >= nSizeY - nButHeight )
+ {
+ BOOL bFilterActive = IsAutoFilterActive( nPosX, nPosY,
+ pViewData->GetTabNo() );
+ Color aColor( bFilterActive ? COL_LIGHTBLUE : COL_BLACK );
+
+ aComboButton.SetOptSizePixel();
+ aComboButton.SetColor( aColor );
+ DrawComboButton( aScrPos, nSizeX, nSizeY, TRUE );
+
+#if 0
+ if ( bWasFilterBox
+ && (short)nOldColFBox == nPosX
+ && (short)nOldRowFBox == nPosY )
+ {
+ // Verhindern, dass an gleicher Stelle eine
+ // FilterBox geoeffnet wird, wenn diese gerade
+ // geloescht wurde
+
+ nMouseStatus = SC_GM_FILTER; // fuer ButtonDraw im MouseButtonUp();
+ return;
+ }
+#endif
+ DoAutoFilterMenue( nPosX, nPosY, FALSE );
+
+ return;
+ }
+ }
+ if (pAttr->HasButton())
+ {
+ DoPushButton( nPosX, nPosY, rMEvt ); // setzt evtl. bPivotMouse / bDPMouse
+ return;
+ }
+ }
+
+ //
+ // Szenario-Auswahl
+ //
+
+ ScRange aScenRange;
+ if ( HasScenarioButton( aPos, aScenRange ) )
+ {
+ DoScenarioMenue( aScenRange );
+ return;
+ }
+
+ //
+ // Doppelklick angefangen ?
+ //
+
+ // StopMarking kann aus DrawMouseButtonDown gerufen werden
+
+ if ( nMouseStatus != SC_GM_IGNORE && !bRefMode )
+ {
+ if (bDouble)
+ {
+ if (nMouseStatus == SC_GM_TABDOWN)
+ nMouseStatus = SC_GM_DBLDOWN;
+ }
+ else
+ nMouseStatus = SC_GM_TABDOWN;
+ }
+
+ //
+ // Links in Edit-Zellen
+ //
+
+ BOOL bAlt = rMEvt.IsMod2();
+ if ( !bAlt && rMEvt.IsLeft() &&
+ GetEditUrl(rMEvt.GetPosPixel()) ) // Klick auf Link: Cursor nicht bewegen
+ {
+ SetPointer( Pointer( POINTER_REFHAND ) );
+ nMouseStatus = SC_GM_URLDOWN; // auch nur dann beim ButtonUp ausfuehren
+ return;
+ }
+
+ //
+ // Gridwin - SelectionEngine
+ //
+
+ if ( rMEvt.IsLeft() )
+ {
+ ScViewSelectionEngine* pSelEng = pViewData->GetView()->GetSelEngine();
+ pSelEng->SetWindow(this);
+ pSelEng->SetWhich(eWhich);
+ pSelEng->SetVisibleArea( Rectangle(Point(), GetOutputSizePixel()) );
+
+ // SelMouseButtonDown an der View setzt noch das bMoveIsShift Flag
+ if ( pViewData->GetView()->SelMouseButtonDown( rMEvt ) )
+ {
+ if (IsMouseCaptured())
+ {
+ // Tracking statt CaptureMouse, damit sauber abgebrochen werden kann
+ //! Irgendwann sollte die SelectionEngine selber StartTracking rufen!?!
+ ReleaseMouse();
+ StartTracking();
+ }
+ pViewData->GetMarkData().SetMarking(TRUE);
+ return;
+ }
+ }
+}
+
+void __EXPORT ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ aCurMousePos = rMEvt.GetPosPixel();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+
+ if (nButtonDown != rMEvt.GetButtons())
+ nMouseStatus = SC_GM_IGNORE; // reset und return
+
+ nButtonDown = 0;
+
+ if (nMouseStatus == SC_GM_IGNORE)
+ {
+ nMouseStatus = SC_GM_NONE;
+ // Selection-Engine: Markieren abbrechen
+ pViewData->GetView()->GetSelEngine()->Reset();
+ rMark.SetMarking(FALSE);
+ if (pViewData->IsAnyFillMode())
+ {
+ pViewData->GetView()->StopRefMode();
+ pViewData->ResetFillMode();
+ }
+ StopMarking();
+ DrawEndAction(); // Markieren/Verschieben auf Drawing-Layer abbrechen
+ ReleaseMouse();
+ return;
+ }
+
+ if (nMouseStatus == SC_GM_FILTER)
+ {
+ if ( pFilterBox && pFilterBox->GetMode() == SC_FILTERBOX_FILTER )
+ {
+ HideCursor();
+ aComboButton.Draw( FALSE );
+ ShowCursor();
+ }
+ nMouseStatus = SC_GM_NONE;
+ ReleaseMouse();
+ return; // da muss nix mehr passieren
+ }
+
+ ScModule* pScMod = SC_MOD();
+ if (pScMod->IsModalMode(pViewData->GetSfxDocShell()))
+ return;
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ if (bEEMouse)
+ {
+ EditView* pEditView;
+ USHORT nEditCol;
+ USHORT nEditRow;
+ pViewData->GetEditView( eWhich, pEditView, nEditCol, nEditRow );
+ pEditView->MouseButtonUp( rMEvt );
+ pScMod->InputSelection( pEditView ); // fuer Klammern etc.
+ pViewData->GetView()->InvalidateAttribs();
+ rBindings.Invalidate( SID_HYPERLINK_GETLINK );
+ bEEMouse = FALSE;
+ return;
+ }
+
+ if (bPivotMouse)
+ {
+ PivotMouseButtonUp( rMEvt );
+ bPivotMouse = FALSE;
+ return;
+ }
+
+ if (bDPMouse)
+ {
+ DPMouseButtonUp( rMEvt ); // resets bDPMouse
+ return;
+ }
+
+ if (bRFMouse)
+ {
+ RFMouseMove( rMEvt, TRUE ); // Range wieder richtigherum
+ bRFMouse = FALSE;
+ SetPointer( Pointer( POINTER_ARROW ) );
+ ReleaseMouse();
+ return;
+ }
+
+ if (nPagebreakMouse)
+ {
+ PagebreakMove( rMEvt, TRUE );
+ nPagebreakMouse = SC_PD_NONE;
+ SetPointer( Pointer( POINTER_ARROW ) );
+ ReleaseMouse();
+ return;
+ }
+
+ if (nMouseStatus == SC_GM_WATERUNDO) // Undo im Giesskannenmodus
+ {
+ SfxUndoManager* pMgr = pViewData->GetDocShell()->GetUndoManager();
+ if ( pMgr->GetUndoActionCount() && pMgr->GetUndoActionId() == STR_UNDO_APPLYCELLSTYLE )
+ pMgr->Undo();
+ else
+ Sound::Beep();
+ return;
+ }
+
+ if (DrawMouseButtonUp(rMEvt))
+ return;
+
+ rMark.SetMarking(FALSE);
+
+ SetPointer( Pointer( POINTER_ARROW ) );
+
+ if (pViewData->IsFillMode() ||
+ ( pViewData->GetFillMode() == SC_FILL_MATRIX && rMEvt.IsMod1() ))
+ {
+ nScFillModeMouseModifier = rMEvt.GetModifier();
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ pViewData->GetFillData( nStartCol, nStartRow, nEndCol, nEndRow );
+// DBG_ASSERT( nStartCol==pViewData->GetRefStartX() && nStartRow==pViewData->GetRefStartY(),
+// "Block falsch fuer AutoFill" );
+ ScRange aDelRange;
+ BOOL bIsDel = pViewData->GetDelMark( aDelRange );
+
+ ScViewFunc* pView = pViewData->GetView();
+ pView->StopRefMode();
+ pViewData->ResetFillMode();
+
+ if ( bIsDel )
+ {
+ pView->MarkRange( aDelRange, FALSE );
+ pView->DeleteContents( IDF_CONTENTS );
+ USHORT nTab = pViewData->GetTabNo();
+ ScRange aBlockRange( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab );
+ if ( aBlockRange != aDelRange )
+ {
+ if ( aDelRange.aStart.Row() == nStartRow )
+ aBlockRange.aEnd.SetCol( aDelRange.aStart.Col() - 1 );
+ else
+ aBlockRange.aEnd.SetRow( aDelRange.aStart.Row() - 1 );
+ pView->MarkRange( aBlockRange, FALSE );
+ }
+ }
+ else
+ SFX_DISPATCHER().Execute( FID_FILL_AUTO, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD );
+ }
+ else if (pViewData->GetFillMode() == SC_FILL_MATRIX)
+ {
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ pViewData->GetFillData( nStartCol, nStartRow, nEndCol, nEndRow );
+ ScRange aBlockRange( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab );
+ USHORT nFillCol = pViewData->GetRefEndX();
+ USHORT nFillRow = pViewData->GetRefEndY();
+ ScAddress aEndPos( nFillCol, nFillRow, nTab );
+
+ pViewData->GetView()->StopRefMode();
+ pViewData->ResetFillMode();
+
+ if ( aEndPos != aBlockRange.aEnd )
+ {
+ pViewData->GetDocShell()->GetDocFunc().ResizeMatrix( aBlockRange, aEndPos, FALSE );
+ pViewData->GetView()->MarkRange( ScRange( aBlockRange.aStart, aEndPos ) );
+ }
+ }
+ else if (pViewData->IsAnyFillMode())
+ {
+ // Embedded-Area veraendert
+ pViewData->GetView()->StopRefMode();
+ pViewData->ResetFillMode();
+ pViewData->GetDocShell()->UpdateOle(pViewData);
+ }
+
+ BOOL bRefMode = pViewData->IsRefMode();
+ if (bRefMode)
+ pScMod->EndReference();
+
+ //
+ // Giesskannen-Modus (Gestalter)
+ //
+
+ if (pScMod->GetIsWaterCan())
+ {
+ // Abfrage auf Undo schon oben
+
+ ScStyleSheetPool* pStylePool = (ScStyleSheetPool*)
+ (pViewData->GetDocument()->
+ GetStyleSheetPool());
+ if ( pStylePool )
+ {
+ SfxStyleSheet* pStyleSheet = (SfxStyleSheet*)
+ pStylePool->GetActualStyleSheet();
+
+ if ( pStyleSheet )
+ {
+ SfxStyleFamily eFamily = pStyleSheet->GetFamily();
+
+ switch ( eFamily )
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ pViewData->GetView()->SetStyleSheetToMarked( pStyleSheet );
+ pViewData->GetView()->DoneBlockMode();
+ break;
+
+ case SFX_STYLE_FAMILY_PAGE:
+ pViewData->GetDocument()->SetPageStyle( pViewData->GetTabNo(),
+ pStyleSheet->GetName() );
+
+ ScPrintFunc( pViewData->GetDocShell(),
+ pViewData->GetViewShell()->GetPrinter(),
+ pViewData->GetTabNo() ).UpdatePages();
+
+ rBindings.Invalidate( SID_STATUS_PAGESTYLE );
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+ }
+
+ //
+ // double click (only left button)
+ //
+
+ BOOL bDouble = ( rMEvt.GetClicks() == 2 && rMEvt.IsLeft() );
+ if ( bDouble && !bRefMode && nMouseStatus == SC_GM_DBLDOWN && !pScMod->IsRefDialogOpen() )
+ {
+ // data pilot table
+ Point aPos = rMEvt.GetPosPixel();
+ short nPosX, nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+ ScDPObject* pDPObj = pDoc->GetDPAtCursor( nPosX, nPosY, pViewData->GetTabNo() );
+ if (pDPObj)
+ {
+ ScAddress aPos( nPosX, nPosY, pViewData->GetTabNo() );
+ ScDPPositionData aData;
+ pDPObj->GetPositionData( aData, aPos );
+
+ if ( ( aData.nFlags & sheet::MemberResultFlags::HASMEMBER ) &&
+ ! ( aData.nFlags & sheet::MemberResultFlags::SUBTOTAL ) )
+ {
+ ScDPObject aNewObj( *pDPObj );
+ pDPObj->ToggleDetails( aData, &aNewObj );
+ ScDBDocFunc aFunc( *pViewData->GetDocShell() );
+ aFunc.DataPilotUpdate( pDPObj, &aNewObj, TRUE, FALSE );
+ pViewData->GetView()->CursorPosChanged(); // shells may be switched
+ }
+ else
+ Sound::Beep(); // nothing to expand/collapse
+
+ return;
+ }
+
+ // edit cell contents
+ pViewData->GetViewShell()->UpdateInputHandler();
+ pScMod->SetInputMode( SC_INPUT_TABLE );
+ if (pViewData->HasEditView(eWhich))
+ {
+ // Text-Cursor gleich an die geklickte Stelle setzen
+ EditView* pEditView = pViewData->GetEditView( eWhich );
+ MouseEvent aEditEvt( rMEvt.GetPosPixel(), 1, MOUSE_SYNTHETIC, MOUSE_LEFT, 0 );
+ pEditView->MouseButtonDown( aEditEvt );
+ pEditView->MouseButtonUp( aEditEvt );
+ }
+ }
+
+ //
+ // Links in Edit-Zellen
+ //
+
+ BOOL bAlt = rMEvt.IsMod2();
+ if ( !bAlt && !bRefMode && !bDouble && nMouseStatus == SC_GM_URLDOWN )
+ {
+ // beim ButtonUp nur ausfuehren, wenn ButtonDown auch ueber einer URL war
+
+ String aName, aUrl, aTarget;
+ if ( GetEditUrl( rMEvt.GetPosPixel(), &aName, &aUrl, &aTarget ) )
+ {
+ nMouseStatus = SC_GM_NONE; // keinen Doppelklick anfangen
+ ScGlobal::OpenURL( aUrl, aTarget );
+ return;
+ }
+ }
+
+ //
+ // Gridwin - SelectionEngine
+ //
+
+ if ( pViewData->GetView()->GetSelEngine()->SelMouseButtonUp( rMEvt ) )
+ {
+// rMark.MarkToSimple();
+ pViewData->GetView()->UpdateAutoFillMark();
+
+ SfxDispatcher* pDisp = pViewData->GetViewShell()->GetDispatcher();
+ BOOL bRefMode = pScMod->IsFormulaMode();
+ DBG_ASSERT( pDisp || bRefMode, "Cursor auf nicht aktiver View bewegen ?" );
+
+ if ( pDisp && !bRefMode ) // noch ein Execute fuer Basic
+ {
+ String aAddr; // CurrentCell
+ if( rMark.IsMarked() )
+ {
+// BOOL bKeep = rMark.IsMultiMarked(); //! wohin damit ???
+
+ ScRange aScRange;
+ rMark.GetMarkArea( aScRange );
+ aScRange.Format( aAddr, SCR_ABS );
+
+ //! SID_MARKAREA gibts nicht mehr ???
+ //! was passiert beim Markieren mit dem Cursor ???
+ }
+ else // nur Cursor bewegen
+ {
+ ScAddress aScAddress( pViewData->GetCurX(), pViewData->GetCurY(), 0 );
+ aScAddress.Format( aAddr, SCA_ABS );
+ }
+
+ SfxStringItem aPosItem( SID_CURRENTCELL, aAddr );
+ pDisp->Execute( SID_CURRENTCELL, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aPosItem, (void*)0L );
+
+ pViewData->GetView()->InvalidateAttribs();
+ }
+ return;
+ }
+}
+
+void ScGridWindow::FakeButtonUp()
+{
+ if ( nButtonDown )
+ {
+ MouseEvent aEvent( aCurMousePos ); // nButtons = 0 -> ignore
+ MouseButtonUp( aEvent );
+ }
+}
+
+void __EXPORT ScGridWindow::MouseMove( const MouseEvent& rMEvt )
+{
+ aCurMousePos = rMEvt.GetPosPixel();
+
+ if ( rMEvt.IsLeaveWindow() )
+ HideNoteMarker();
+
+ ScModule* pScMod = SC_MOD();
+ if (pScMod->IsModalMode(pViewData->GetSfxDocShell()))
+ return;
+
+ // Ob aus dem Edit-Modus Drag&Drop gestartet wurde, bekommt man leider
+ // nicht anders mit:
+
+ if (bEEMouse && nButtonDown && !rMEvt.GetButtons())
+ {
+ bEEMouse = FALSE;
+ nButtonDown = 0;
+ nMouseStatus = SC_GM_NONE;
+ return;
+ }
+
+ if (nMouseStatus == SC_GM_IGNORE)
+ return;
+
+ if (nMouseStatus == SC_GM_WATERUNDO) // Undo im Giesskannenmodus -> nur auf Up warten
+ return;
+
+ if ( pViewData->GetViewShell()->IsAuditShell() ) // Detektiv-Fuell-Modus
+ {
+ SetPointer( Pointer( POINTER_FILL ) );
+ return;
+ }
+
+ if (nMouseStatus == SC_GM_FILTER && pFilterBox)
+ {
+ Point aRelPos = pFilterBox->ScreenToOutputPixel( OutputToScreenPixel( rMEvt.GetPosPixel() ) );
+ if ( Rectangle(Point(),pFilterBox->GetOutputSizePixel()).IsInside(aRelPos) )
+ {
+ nButtonDown = 0;
+ nMouseStatus = SC_GM_NONE;
+ if ( pFilterBox->GetMode() == SC_FILTERBOX_FILTER )
+ {
+ HideCursor();
+ aComboButton.Draw( FALSE );
+ ShowCursor();
+ }
+ ReleaseMouse();
+ pFilterBox->MouseButtonDown( MouseEvent( aRelPos, 1, MOUSE_SIMPLECLICK, MOUSE_LEFT ) );
+ return;
+ }
+ }
+
+ BOOL bRefMode = pViewData->IsRefMode(); // Referenz angefangen
+ BOOL bFormulaMode = pScMod->IsFormulaMode(); // naechster Klick -> Referenz
+
+ if (bEEMouse)
+ {
+ EditView* pEditView;
+ USHORT nEditCol;
+ USHORT nEditRow;
+ pViewData->GetEditView( eWhich, pEditView, nEditCol, nEditRow );
+ pEditView->MouseMove( rMEvt );
+ return;
+ }
+
+ if (bPivotMouse)
+ {
+ PivotMouseMove( rMEvt );
+ return;
+ }
+
+ if (bDPMouse)
+ {
+ DPMouseMove( rMEvt );
+ return;
+ }
+
+ if (bRFMouse)
+ {
+ RFMouseMove( rMEvt, FALSE );
+ return;
+ }
+
+ if (nPagebreakMouse)
+ {
+ PagebreakMove( rMEvt, FALSE );
+ return;
+ }
+
+ // anderen Mauszeiger anzeigen?
+
+ BOOL bEditMode = pViewData->HasEditView(eWhich);
+
+ //! Testen ob RefMode-Dragging !!!
+ if ( bEditMode && (pViewData->GetRefTabNo() == pViewData->GetTabNo()) )
+ {
+ Point aPos = rMEvt.GetPosPixel();
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+
+ EditView* pEditView;
+ USHORT nEditCol;
+ USHORT nEditRow;
+ pViewData->GetEditView( eWhich, pEditView, nEditCol, nEditRow );
+ USHORT nEndCol = pViewData->GetEditEndCol();
+ USHORT nEndRow = pViewData->GetEditEndRow();
+
+ if ( nPosX >= (short) nEditCol && nPosX <= (short) nEndCol &&
+ nPosY >= (short) nEditRow && nPosY <= (short) nEndRow )
+ {
+ // Field can only be URL field
+ BOOL bAlt = rMEvt.IsMod2();
+ if ( !bAlt && !nButtonDown && pEditView && pEditView->GetFieldUnderMousePointer() )
+ SetPointer( Pointer( POINTER_REFHAND ) );
+ else
+ SetPointer( Pointer( POINTER_TEXT ) );
+ return;
+ }
+ }
+
+ BOOL bWater = SC_MOD()->GetIsWaterCan();
+ if (bWater)
+ SetPointer( Pointer(POINTER_FILL) );
+
+ if (!bWater)
+ {
+ BOOL bCross = FALSE;
+
+ // Range-Finder
+
+ BOOL bCorner;
+ if ( HitRangeFinder( rMEvt.GetPosPixel(), bCorner ) )
+ {
+ if (bCorner)
+ SetPointer( Pointer( POINTER_CROSS ) );
+ else
+ SetPointer( Pointer( POINTER_HAND ) );
+ bCross = TRUE;
+ }
+
+ // Page-Break-Modus
+
+ USHORT nBreakType;
+ if ( !nButtonDown && pViewData->IsPagebreakMode() &&
+ ( nBreakType = HitPageBreak( rMEvt.GetPosPixel() ) ) )
+ {
+ PointerStyle eNew = POINTER_ARROW;
+ switch ( nBreakType )
+ {
+ case SC_PD_RANGE_L:
+ case SC_PD_RANGE_R:
+ case SC_PD_BREAK_H:
+ eNew = POINTER_ESIZE;
+ break;
+ case SC_PD_RANGE_T:
+ case SC_PD_RANGE_B:
+ case SC_PD_BREAK_V:
+ eNew = POINTER_SSIZE;
+ break;
+ case SC_PD_RANGE_TL:
+ case SC_PD_RANGE_BR:
+ eNew = POINTER_SESIZE;
+ break;
+ case SC_PD_RANGE_TR:
+ case SC_PD_RANGE_BL:
+ eNew = POINTER_NESIZE;
+ break;
+ }
+ SetPointer( Pointer( eNew ) );
+ bCross = TRUE;
+ }
+
+ // Fill-Cursor anzeigen ?
+
+ if ( !bFormulaMode && !nButtonDown )
+ if (TestMouse( rMEvt, FALSE ))
+ bCross = TRUE;
+
+ if ( nButtonDown && pViewData->IsAnyFillMode() )
+ {
+ SetPointer( Pointer( POINTER_CROSS ) );
+ bCross = TRUE;
+ nScFillModeMouseModifier = rMEvt.GetModifier(); // ausgewertet bei AutoFill und Matrix
+ }
+
+ if (!bCross)
+ {
+ BOOL bAlt = rMEvt.IsMod2();
+
+ if (bEditMode) // Edit-Mode muss zuerst kommen!
+ SetPointer( Pointer( POINTER_ARROW ) );
+ else if ( !bAlt && !nButtonDown &&
+ GetEditUrl(rMEvt.GetPosPixel()) )
+ SetPointer( Pointer( POINTER_REFHAND ) );
+ else if ( DrawMouseMove(rMEvt) ) // setzt Pointer um
+ return;
+ }
+ }
+
+ if ( pViewData->GetView()->GetSelEngine()->SelMouseMove( rMEvt ) )
+ return;
+}
+
+void ScGridWindow::Tracking( const TrackingEvent& rTEvt )
+{
+ // Weil die SelectionEngine kein Tracking kennt, die Events nur auf
+ // die verschiedenen MouseHandler verteilen...
+
+ const MouseEvent& rMEvt = rTEvt.GetMouseEvent();
+
+ if ( rTEvt.IsTrackingCanceled() ) // alles abbrechen...
+ {
+ if (!pViewData->GetView()->IsInActivatePart())
+ {
+ if (bPivotMouse)
+ bPivotMouse = FALSE; // gezeichnet wird per bDragRect
+ if (bDPMouse)
+ bDPMouse = FALSE; // gezeichnet wird per bDragRect
+ if (bDragRect)
+ {
+ pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich );
+ bDragRect = FALSE;
+ }
+ if (bRFMouse)
+ {
+ RFMouseMove( rMEvt, TRUE ); // richtig abbrechen geht dabei nicht...
+ bRFMouse = FALSE;
+ }
+ if (nPagebreakMouse)
+ {
+ if (bPagebreakDrawn)
+ DrawDragRect( aPagebreakDrag.aStart.Col(), aPagebreakDrag.aStart.Row(),
+ aPagebreakDrag.aEnd.Col(), aPagebreakDrag.aEnd.Row(), FALSE );
+ bPagebreakDrawn = FALSE;
+ nPagebreakMouse = SC_PD_NONE;
+ }
+
+ SetPointer( Pointer( POINTER_ARROW ) );
+ StopMarking();
+ MouseButtonUp( rMEvt ); // mit Status SC_GM_IGNORE aus StopMarking
+
+ BOOL bRefMode = pViewData->IsRefMode();
+ if (bRefMode)
+ SC_MOD()->EndReference(); // #63148# Dialog nicht verkleinert lassen
+ }
+ }
+ else if ( rTEvt.IsTrackingEnded() )
+ {
+ // MouseButtonUp immer mit passenden Buttons (z.B. wegen Testtool, #63148#)
+ // Schliesslich behauptet der Tracking-Event ja, dass normal beendet und nicht
+ // abgebrochen wurde.
+
+ MouseEvent aUpEvt( rMEvt.GetPosPixel(), rMEvt.GetClicks(),
+ rMEvt.GetMode(), nButtonDown, rMEvt.GetModifier() );
+ MouseButtonUp( aUpEvt );
+ }
+ else
+ MouseMove( rMEvt );
+}
+
+void __EXPORT ScGridWindow::Command( const CommandEvent& rCEvt )
+{
+ USHORT nCmd = rCEvt.GetCommand();
+ ScModule* pScMod = SC_MOD();
+
+ if ( rCEvt.GetCommand() == COMMAND_STARTEXTTEXTINPUT ||
+ rCEvt.GetCommand() == COMMAND_ENDEXTTEXTINPUT ||
+ rCEvt.GetCommand() == COMMAND_EXTTEXTINPUT ||
+ rCEvt.GetCommand() == COMMAND_EXTTEXTINPUTPOS )
+ {
+ if (!pViewData->HasEditView( eWhich ))
+ {
+ pScMod->SetInputMode( SC_INPUT_TABLE );
+ }
+
+ ScInputHandler* pHdl = pScMod->GetInputHdl( pViewData->GetViewShell() );
+ if ( pHdl && pViewData->HasEditView( eWhich ) )
+ {
+ EditView* pEditView = pViewData->GetEditView( eWhich ); // ist dann nicht 0
+ pHdl->DataChanging();
+ pEditView->Command( rCEvt );
+ pHdl->DataChanged();
+ return; // erledigt
+ }
+ }
+
+ if ( rCEvt.GetCommand() == COMMAND_VOICE )
+ {
+ // Der Handler wird nur gerufen, wenn ein Text-Cursor aktiv ist,
+ // also muss es eine EditView oder ein editiertes Zeichenobjekt geben
+
+ ScInputHandler* pHdl = pScMod->GetInputHdl( pViewData->GetViewShell() );
+ if ( pHdl && pViewData->HasEditView( eWhich ) )
+ {
+ EditView* pEditView = pViewData->GetEditView( eWhich ); // ist dann nicht 0
+ pHdl->DataChanging();
+ pEditView->Command( rCEvt );
+ pHdl->DataChanged();
+ return; // erledigt
+ }
+ SdrView* pSdrView = pViewData->GetView()->GetSdrView();
+ if ( pSdrView )
+ {
+ OutlinerView* pOlView = pSdrView->GetTextEditOutlinerView();
+ if ( pOlView && pOlView->GetWindow() == this )
+ {
+ pOlView->Command( rCEvt );
+ return; // erledigt
+ }
+ }
+ Window::Command(rCEvt); // sonst soll sich die Basisklasse drum kuemmern...
+ return;
+ }
+
+ BOOL bDisable = pScMod->IsFormulaMode() ||
+ pScMod->IsModalMode(pViewData->GetSfxDocShell());
+ if (bDisable)
+ return;
+
+ if ( nCmd == COMMAND_WHEEL || nCmd == COMMAND_STARTAUTOSCROLL || nCmd == COMMAND_AUTOSCROLL )
+ {
+ BOOL bDone = pViewData->GetView()->ScrollCommand( rCEvt, eWhich );
+ if (!bDone)
+ Window::Command(rCEvt);
+ return;
+ }
+
+ if ( nCmd == COMMAND_STARTDRAG && ( pFilterBox || nPagebreakMouse ) )
+ return;
+
+ if ( nCmd == COMMAND_CONTEXTMENU && !SC_MOD()->GetIsWaterCan() )
+ {
+ if (pViewData->IsAnyFillMode())
+ {
+ pViewData->GetView()->StopRefMode();
+ pViewData->ResetFillMode();
+ }
+ ReleaseMouse();
+ StopMarking();
+
+ Point aPosPixel = rCEvt.GetMousePosPixel();
+ BOOL bDone = FALSE;
+ BOOL bEdit = pViewData->HasEditView(eWhich);
+ if ( !bEdit )
+ {
+ // Edit-Zelle mit Spelling-Errors ?
+ if ( GetEditUrlOrError( TRUE, aPosPixel ) )
+ {
+ // GetEditUrlOrError hat den Cursor schon bewegt
+
+ pScMod->SetInputMode( SC_INPUT_TABLE );
+ bEdit = pViewData->HasEditView(eWhich); // hat's geklappt ?
+
+ DBG_ASSERT( bEdit, "kann nicht in Edit-Modus schalten" );
+ }
+ }
+ if ( bEdit )
+ {
+ EditView* pEditView = pViewData->GetEditView( eWhich ); // ist dann nicht 0
+
+ // if edit mode was just started above, online spelling may be incomplete
+ pEditView->GetEditEngine()->CompleteOnlineSpelling();
+
+ if( pEditView->IsWrongSpelledWordAtPos( aPosPixel ) )
+ {
+ // Wenn man unter OS/2 neben das Popupmenue klickt, kommt MouseButtonDown
+ // vor dem Ende des Menue-Execute, darum muss SetModified vorher kommen
+ // (Bug #40968#)
+ ScInputHandler* pHdl = pScMod->GetInputHdl();
+ if (pHdl)
+ pHdl->SetModified();
+
+ pEditView->ExecuteSpellPopup( aPosPixel );
+
+ bDone = TRUE;
+ }
+ }
+
+ if (!bDone)
+ {
+ SfxDispatcher::ExecutePopup();
+ }
+ }
+ else
+ {
+ // #53414# Notiz-/Redlining-Tiphilfe wegnehmen
+ if ( nCmd == COMMAND_STARTDRAG )
+ HideNoteMarker();
+
+ if (bEEMouse)
+ {
+ EditView* pEditView;
+ USHORT nEditCol;
+ USHORT nEditRow;
+ pViewData->GetEditView( eWhich, pEditView, nEditCol, nEditRow );
+
+ // #63263# verhindern, dass die EditView beim View-Umschalten wegkommt
+ pScMod->SetInEditCommand( TRUE );
+
+ pEditView->Command( rCEvt );
+ if ( nCmd == COMMAND_STARTDRAG )
+ {
+ ScInputHandler* pHdl = pScMod->GetInputHdl();
+ if (pHdl)
+ pHdl->DataChanged();
+ }
+
+ pScMod->SetInEditCommand( FALSE );
+ if (!pViewData->IsActive()) // auf andere View gedroppt?
+ {
+ ScInputHandler* pHdl = pScMod->GetInputHdl( pViewData->GetViewShell() );
+ if ( pHdl && pViewData->HasEditView( eWhich ) )
+ {
+ pHdl->CancelHandler();
+ ShowCursor(); // fehlt bei KillEditView
+ }
+ }
+ }
+ else
+ if ( !DrawCommand(rCEvt) )
+ pViewData->GetView()->GetSelEngine()->Command( rCEvt );
+ }
+}
+
+void __EXPORT ScGridWindow::KeyInput(const KeyEvent& rKEvt)
+{
+ // wenn semi-Modeless-SfxChildWindow-Dialog oben, keine KeyInputs:
+ if ( !SC_MOD()->IsRefDialogOpen() && !pViewData->IsAnyFillMode() )
+ {
+ ScTabViewShell* pViewSh = pViewData->GetViewShell();
+
+ if (pViewData->GetDocShell()->GetProgress())
+ return;
+
+ if (DrawKeyInput(rKEvt))
+ return;
+
+ if (!pViewData->GetView()->IsDrawSelMode() && !DrawHasMarkedObj()) // keine Eingaben im Zeichenmodus
+ { //! DrawShell abfragen !!!
+ if (pViewSh->TabKeyInput(rKEvt))
+ return;
+ }
+ else
+ if (pViewSh->SfxViewShell::KeyInput(rKEvt)) // von SfxViewShell
+ return;
+
+ KeyCode aCode = rKEvt.GetKeyCode();
+ if ( aCode.GetCode() == KEY_ESCAPE && aCode.GetModifier() == 0 )
+ {
+ pViewData->GetDocShell()->DoInPlaceActivate(FALSE);
+ return;
+ }
+ }
+
+ Window::KeyInput(rKEvt);
+}
+
+void ScGridWindow::StopMarking()
+{
+ DrawEndAction(); // Markieren/Verschieben auf Drawing-Layer abbrechen
+
+ if (nButtonDown)
+ {
+ pViewData->GetMarkData().SetMarking(FALSE);
+ nMouseStatus = SC_GM_IGNORE;
+ }
+}
+
+//--------------------------------------------------------
+
+BOOL ScGridWindow::QueryDropPrivate( DropEvent& rEvt )
+{
+ if (rEvt.IsLeaveWindow())
+ {
+ if (bDragRect)
+ pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich );
+ bDragRect = FALSE;
+ return TRUE;
+ }
+
+ const ScDragData& rData = SC_MOD()->GetDragData();
+ if ( rData.nSizeX != 0 && rData.nSizeY != 0 )
+ {
+ Point aPos = rEvt.GetPosPixel();
+
+ ScDocument* pSourceDoc = rData.pDoc;
+ ScDocument* pThisDoc = pViewData->GetDocument();
+ if (pSourceDoc == pThisDoc)
+ {
+ if ( pThisDoc->HasChartAtPoint(pViewData->GetTabNo(), PixelToLogic(aPos)) )
+ {
+ if (bDragRect) // Rechteck loeschen
+ {
+ pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich );
+ bDragRect = FALSE;
+ }
+
+ //! Chart mit Rechteck markieren ?
+
+ BOOL bOk = TRUE;
+ if ( rEvt.GetAction() == DROP_LINK )
+ bOk = rEvt.SetAction( DROP_COPY ); // Link auf Chart geht nicht
+ return bOk;
+ }
+ }
+ else
+ if ( rEvt.GetAction() == DROP_MOVE )
+ rEvt.SetAction( DROP_COPY ); // anderes Doc: Default=COPY
+
+
+ if ( rData.nFlags & SC_DROP_TABLE ) // ganze Tabelle ?
+ {
+ BOOL bOk = pThisDoc->IsDocEditable();
+ return bOk; // keinen Rahmen zeichnen
+ }
+
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+
+ short nNewDragX = nPosX-rData.nHandleX;
+ if (nNewDragX<0) nNewDragX=0;
+ if (nNewDragX+(rData.nSizeX-1) > MAXCOL)
+ nNewDragX = MAXCOL-(rData.nSizeX-1);
+ short nNewDragY = nPosY-rData.nHandleY;
+ if (nNewDragY<0) nNewDragY=0;
+ if (nNewDragY+(rData.nSizeY-1) > MAXROW)
+ nNewDragY = MAXROW-(rData.nSizeY-1);
+
+ if ( nNewDragX != (short) nDragStartX || nNewDragY != (short) nDragStartY || !bDragRect )
+ {
+ if (bDragRect)
+ pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich );
+
+ nDragStartX = nNewDragX;
+ nDragStartY = nNewDragY;
+ nDragEndX = nDragStartX+rData.nSizeX-1;
+ nDragEndY = nDragStartY+rData.nSizeY-1;
+ bDragRect = TRUE;
+
+ pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich );
+
+ // Zielposition als Tip-Hilfe anzeigen
+#if 0
+ if (Help::IsQuickHelpEnabled())
+ {
+ USHORT nTab = pViewData->GetTabNo();
+ ScRange aRange( nDragStartX, nDragStartY, nTab, nDragEndX, nDragEndY, nTab );
+ String aHelpStr;
+ aRange.Format( aHelpStr, SCA_VALID ); // nicht-3D
+
+ Point aPos = Pointer::GetPosPixel();
+ USHORT nAlign = QUICKHELP_BOTTOM|QUICKHELP_RIGHT;
+ Rectangle aRect( aPos, aPos );
+ Help::ShowQuickHelp(aRect, aHelpStr, nAlign);
+ }
+#endif
+ }
+ }
+
+ return TRUE;
+}
+
+ // sensitiver Bereich (Pixel)
+#define SCROLL_SENSITIVE 20
+
+BOOL ScGridWindow::DropScroll( const Point& rMousePos )
+{
+/* doch auch auf nicht aktiven Views...
+ if ( !pViewData->IsActive() )
+ return FALSE;
+*/
+ short nDx = 0;
+ short nDy = 0;
+ Size aSize = GetOutputSizePixel();
+
+ if (aSize.Width() > SCROLL_SENSITIVE * 3)
+ {
+ if ( rMousePos.X() < SCROLL_SENSITIVE && pViewData->GetPosX(WhichH(eWhich)) > 0 )
+ nDx = -1;
+ if ( rMousePos.X() >= aSize.Width() - SCROLL_SENSITIVE
+ && pViewData->GetPosX(WhichH(eWhich)) < MAXCOL )
+ nDx = 1;
+ }
+ if (aSize.Height() > SCROLL_SENSITIVE * 3)
+ {
+ if ( rMousePos.Y() < SCROLL_SENSITIVE && pViewData->GetPosY(WhichV(eWhich)) > 0 )
+ nDy = -1;
+ if ( rMousePos.Y() >= aSize.Height() - SCROLL_SENSITIVE
+ && pViewData->GetPosY(WhichV(eWhich)) < MAXROW )
+ nDy = 1;
+ }
+
+ if ( nDx || nDy )
+ {
+ if (bDragRect)
+ pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich );
+
+ if ( nDx )
+ pViewData->GetView()->ScrollX( nDx, WhichH(eWhich) );
+ if ( nDy )
+ pViewData->GetView()->ScrollY( nDy, WhichV(eWhich) );
+
+ if (bDragRect)
+ pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich );
+ }
+
+ return FALSE;
+}
+
+BOOL lcl_TestScenarioRedliningDrop( ScDocument* pDoc, const ScRange& aDragRange)
+{
+ // Testet, ob bei eingeschalteten RedLining,
+ // bei einem Drop ein Scenario betroffen ist.
+
+ BOOL bReturn = FALSE;
+ USHORT nTab = aDragRange.aStart.Tab();
+ USHORT nTabCount = pDoc->GetTableCount();
+
+ if(pDoc->GetChangeTrack()!=NULL)
+ {
+ if( pDoc->IsScenario(nTab) && pDoc->HasScenarioRange(nTab, aDragRange))
+ {
+ bReturn = TRUE;
+ }
+ else
+ {
+ for(USHORT i=nTab+1; i<nTabCount && pDoc->IsScenario(i); i++)
+ {
+ if(pDoc->HasScenarioRange(i, aDragRange))
+ {
+ bReturn = TRUE;
+ break;
+ }
+ }
+ }
+ }
+ return bReturn;
+}
+
+
+ScRange lcl_MakeDropRange(short nPosX, short nPosY,USHORT nTab, const ScDragData& rData)
+{
+ // Liefert den Range fuer einen Drop zurueck
+
+ short nCol1 = nPosX-rData.nHandleX;
+ if (nCol1<0) nCol1=0;
+ if (nCol1+(rData.nSizeX-1) > MAXCOL)
+ nCol1 = MAXCOL-(rData.nSizeX-1);
+ short nRow1 = nPosY-rData.nHandleY;
+ if (nRow1<0) nRow1=0;
+ if (nRow1+(rData.nSizeY-1) > MAXROW)
+ nRow1 = MAXROW-(rData.nSizeY-1);
+
+ USHORT nCol2 = nCol1+rData.nSizeX-1;
+ USHORT nRow2 = nRow1+rData.nSizeY-1;
+
+ return ScRange(nCol1, nRow1, nTab,
+ nCol2, nRow2, nTab);
+}
+
+BOOL __EXPORT ScGridWindow::QueryDrop( DropEvent& rEvt )
+{
+ const ScDragData& rData = SC_MOD()->GetDragData();
+ if (rEvt.IsLeaveWindow())
+ {
+ DrawMarkDropObj( NULL );
+ if (rData.pDoc)
+ return QueryDropPrivate( rEvt ); // internen Drop-Rahmen wegnehmen
+ else
+ return TRUE;
+ }
+
+ if ( pViewData->GetDocShell()->IsReadOnly() )
+ return FALSE;
+
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+
+ short nPosX;
+ short nPosY;
+
+ Point aPos = rEvt.GetPosPixel();
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+
+ ScRange aDropRange = lcl_MakeDropRange(nPosX,nPosY,nTab,rData);
+ ScRange aSourceRange =lcl_MakeDropRange(rData.nStartX,rData.nStartY,nTab,rData);
+
+ if( lcl_TestScenarioRedliningDrop(pDoc, aDropRange)||
+ lcl_TestScenarioRedliningDrop(pDoc, aSourceRange))
+ {
+ if (bDragRect)
+ {
+ bDragRect = FALSE;
+ pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich );
+ }
+ return FALSE;
+ }
+
+ BOOL bReturn = FALSE;
+
+ if (rData.pDoc)
+ {
+ if ( rData.nSizeX<=MAXCOL && rData.nSizeY<=MAXROW && !rEvt.IsLeaveWindow() )
+ DropScroll( rEvt.GetPosPixel() );
+ bReturn = QueryDropPrivate( rEvt );
+ }
+ else
+ {
+ if ( rData.aLinkDoc.Len() )
+ {
+ String aThisName;
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ if (pDocSh && pDocSh->HasName())
+ aThisName = pDocSh->GetMedium()->GetName();
+
+ if ( rData.aLinkDoc != aThisName )
+ bReturn = TRUE;
+ }
+ else if (rData.aJumpTarget.Len())
+ {
+ // interne Bookmarks (aus Navigator)
+ // lokale Spruenge aus unbenanntem Dokument nur in dasselbe Dokument erlaubt
+
+ if ( rData.pJumpLocalDoc )
+ bReturn = ( rData.pJumpLocalDoc == pViewData->GetDocument() );
+ else
+ bReturn = TRUE;
+ }
+ else
+ {
+ // wenn nicht im Dokument, dann Default = COPY
+
+ if ( !IsMyModel(rData.pSdrView) ) // Drawing innerhalb des Doc?
+ if ( rEvt.IsDefaultAction() && rEvt.GetAction() == DROP_MOVE )
+ rEvt.SetAction( DROP_COPY );
+
+ SvDataObjectRef pObject = SvDataObject::PasteDragServer(rEvt);
+ DropAction eAction = rEvt.GetAction();
+
+ ScDocument* pThisDoc = pViewData->GetDocument();
+ SdrObject* pHitObj = pThisDoc->GetObjectAtPoint(
+ pViewData->GetTabNo(), PixelToLogic(rEvt.GetPosPixel()) );
+ if ( pHitObj && eAction == DROP_LINK && !rData.pSdrModel )
+ {
+ if ( pObject->HasFormat(SOT_FORMATSTR_ID_SVXB)
+ || pObject->HasFormat(FORMAT_GDIMETAFILE)
+ || pObject->HasFormat(FORMAT_BITMAP) )
+ {
+ // Grafik auf Zeichenobjekt gezogen
+ DrawMarkDropObj( pHitObj );
+ bReturn = TRUE;
+ }
+ }
+ if (!bReturn)
+ DrawMarkDropObj( NULL );
+
+ if ( !bReturn )
+ {
+ switch (eAction)
+ {
+ case DROP_MOVE:
+ case DROP_COPY:
+ // einfuegen: alles und jeden
+ // aber FORMAT_FILE nicht als MOVE
+ // (sonst wuerde das File vom Beamer geloescht, #40299#)
+
+ if(pThisDoc->GetChangeTrack()!=NULL &&
+ pObject->HasFormat(SOT_FORMATSTR_ID_SBA_DATAEXCHANGE))
+ {
+ bReturn=FALSE;
+ }
+ else
+ {
+ bReturn = pObject->HasFormat(SOT_FORMATSTR_ID_EMBED_SOURCE);
+ bReturn |=pObject->HasFormat(SOT_FORMATSTR_ID_LINK_SOURCE);
+ bReturn |=pObject->HasFormat(SOT_FORMATSTR_ID_EMBED_SOURCE_OLE);
+ bReturn |=pObject->HasFormat(SOT_FORMATSTR_ID_LINK_SOURCE_OLE);
+ bReturn |=ScImportExport::IsFormatSupported( pObject );
+ bReturn |=pObject->HasFormat(SOT_FORMATSTR_ID_LINK); // DDE
+ bReturn |=pObject->HasFormat(SOT_FORMATSTR_ID_DRAWING);
+ bReturn |=pObject->HasFormat(SOT_FORMATSTR_ID_SVXB);
+ bReturn |=pObject->HasFormat(FORMAT_RTF);
+ bReturn |=pObject->HasFormat(FORMAT_GDIMETAFILE);
+ bReturn |=pObject->HasFormat(FORMAT_BITMAP);
+ bReturn |=( pObject->HasFormat(FORMAT_FILE) && eAction != DROP_MOVE );
+ bReturn |=pObject->HasFormat(
+ Exchange::RegisterFormatName(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(
+ SBA_FIELDEXCHANGE_FORMAT))));
+ bReturn |=pObject->HasFormat(SOT_FORMATSTR_ID_SBA_DATAEXCHANGE);
+ bReturn |=( INetBookmark::HasFormat(*pObject) && eAction != DROP_MOVE );
+ }
+ break;
+ case DROP_LINK:
+ // linken: OLE und DDE, Datei weil es eine Grafik (Gallery) sein koennte
+ // Bookmarks, weil sie vom Internet Explorer als Link angeboten werden
+ bReturn = pObject->HasFormat(SOT_FORMATSTR_ID_LINK_SOURCE)
+ || pObject->HasFormat(SOT_FORMATSTR_ID_LINK_SOURCE_OLE)
+ || pObject->HasFormat(SOT_FORMATSTR_ID_LINK)
+ || pObject->HasFormat(FORMAT_FILE)
+ || INetBookmark::HasFormat(*pObject);
+ break;
+ default:
+ bReturn = FALSE; // hamma nich
+ }
+ }
+ }
+
+ // Scrolling nur, wenn wir was damit anfangen koennen
+ if (bReturn)
+ DropScroll( rEvt.GetPosPixel() );
+ }
+
+ return bReturn;
+}
+
+//--------------------------------------------------------
+
+BOOL ScGridWindow::DropPrivate( const DropEvent& rEvt )
+{
+ ScModule* pScMod = SC_MOD();
+ const ScDragData& rData = pScMod->GetDragData();
+
+ BOOL bRet = TRUE;
+ ScDocument* pSourceDoc = rData.pDoc;
+ ScDocument* pThisDoc = pViewData->GetDocument();
+ ScViewFunc* pView = pViewData->GetView();
+ BOOL bIsNavi = ( rData.nFlags & SC_DROP_NAVIGATOR ) != 0;
+ BOOL bIsMove = ( rEvt.GetAction()==DROP_MOVE && !bIsNavi );
+ BOOL bIsLink = ( rEvt.GetAction()==DROP_LINK );
+
+ ScRange aSource( rData.nStartX, rData.nStartY, rData.nTabNo,
+ rData.nStartX+rData.nSizeX-1, rData.nStartY+rData.nSizeY-1, rData.nTabNo );
+
+ if (bDragRect)
+ pView->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich );
+
+ if (pSourceDoc == pThisDoc)
+ {
+ if ( rData.nFlags & SC_DROP_TABLE ) // Tabelle ?
+ {
+ if ( !pThisDoc->IsDocEditable() )
+ bRet = FALSE;
+ else
+ {
+ USHORT nSrcTab = rData.nTabNo;
+ USHORT nDestTab = pViewData->GetTabNo();
+ pViewData->GetDocShell()->MoveTable( nSrcTab, nDestTab, !bIsMove, TRUE ); // mit Undo
+ pView->SetTabNo( nDestTab, TRUE );
+ }
+ }
+ else // Block verschieben/kopieren
+ {
+ Point aPos = rEvt.GetPosPixel();
+ String aChartName;
+ if (pThisDoc->HasChartAtPoint( pViewData->GetTabNo(), PixelToLogic(aPos), &aChartName ))
+ {
+ String aRangeName;
+ aSource.Format( aRangeName, SCR_ABS_3D, pThisDoc );
+ SfxStringItem aNameItem( SID_CHART_NAME, aChartName );
+ SfxStringItem aRangeItem( SID_CHART_SOURCE, aRangeName );
+ USHORT nId = (rEvt.GetAction() == DROP_COPY) ?
+ SID_CHART_ADDSOURCE : SID_CHART_SOURCE;
+ SFX_DISPATCHER().Execute( nId, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD,
+ &aRangeItem, &aNameItem, (void*) NULL );
+ }
+ else if ( nDragStartX != rData.nStartX || nDragStartY != rData.nStartY ||
+ rData.nTabNo != pViewData->GetTabNo() )
+ {
+ ScAddress aDest( nDragStartX, nDragStartY, pViewData->GetTabNo() );
+ if ( bIsLink )
+ pView->LinkBlock( aSource, aDest );
+ else
+ pView->MoveBlockTo( aSource, aDest, bIsMove );
+ }
+
+ pScMod->SetDragIntern(); // bei ExecuteDrag nicht loeschen
+ bRet = TRUE;
+ }
+ }
+ else // zwischen Dokumenten
+ {
+ if ( rData.nFlags & SC_DROP_TABLE ) // Tabelle kopieren ?
+ {
+ if ( !pThisDoc->IsDocEditable() )
+ bRet = FALSE;
+ else
+ {
+ USHORT nTab = rData.nTabNo;
+ ScDocShell* pSrcShell = (ScDocShell*)pSourceDoc->GetDocumentShell();
+//@new 22.12.97
+ USHORT nTabs[MAXTAB+1];
+
+ const ScMarkData& rMark = rData.aMarkData;
+ USHORT nTabCount = pSourceDoc->GetTableCount();
+ USHORT nTabSelCount = 0;
+
+ int i;
+ for(i=0;i<nTabCount;i++)
+ {
+ if(rMark.GetTableSelect(i))
+ {
+ nTabs[nTabSelCount++]=i;
+ for(USHORT j=i+1;j<nTabCount;j++)
+ {
+ if((!pSourceDoc->IsVisible(j))&&(pSourceDoc->IsScenario(j)))
+ {
+ nTabs[nTabSelCount++]=j;
+ i=j;
+ }
+ else break;
+ }
+ }
+ }
+
+//@new 22.12.97
+ pView->ImportTables( pSrcShell,nTabSelCount, nTabs, bIsLink,
+ pViewData->GetTabNo() ); //@ 15.12.97
+ bRet = TRUE;
+ }
+ }
+ else
+ {
+ ScDocument* pDragDoc = new ScDocument( SCDOCMODE_CLIP );
+
+ if ( bIsLink ) // Dde-Link einfuegen
+ {
+ // wie PasteDDE
+ //! oder externe Referenzen einfuegen ???
+
+ SfxObjectShell* pSourceSh = pSourceDoc->GetDocumentShell();
+ DBG_ASSERT(pSourceSh, "Drag-Dokument hat keine Shell");
+ if (pSourceSh)
+ {
+ String aApp = Application::GetAppName();
+ String aTopic = pSourceSh->GetTitle( SFX_TITLE_FULLNAME );
+ String aItem;
+ aSource.Format( aItem, SCR_ABS_3D, pSourceDoc );
+
+ //! use tokens
+ String aFormula( '=' );
+ aFormula += ScCompiler::pSymbolTableNative[SC_OPCODE_DDE];
+ aFormula.AppendAscii(RTL_CONSTASCII_STRINGPARAM("(\""));
+ aFormula += aApp;
+ aFormula.AppendAscii(RTL_CONSTASCII_STRINGPARAM("\";\""));
+ aFormula += aTopic;
+ aFormula.AppendAscii(RTL_CONSTASCII_STRINGPARAM("\";\""));
+ aFormula += aItem;
+ aFormula.AppendAscii(RTL_CONSTASCII_STRINGPARAM("\")"));
+
+ pView->DoneBlockMode();
+ pView->InitBlockMode( nDragStartX, nDragStartY, pViewData->GetTabNo() );
+ pView->MarkCursor( nDragEndX, nDragEndY, pViewData->GetTabNo() );
+
+ pView->EnterMatrix( aFormula );
+ pView->CursorPosChanged();
+ bRet = TRUE;
+ }
+ }
+ else // verschieben
+ {
+ // wie CopyToClip:
+ //! HasSelectedBlockMatrixFragment ohne selektierte Tabelle
+ //! oder Teil einer Matrix nicht losdraggen
+
+ pViewData->GetMarkData().ResetMark();
+
+ USHORT nEndX = rData.nStartX + rData.nSizeX - 1;
+ USHORT nEndY = rData.nStartY + rData.nSizeY - 1;
+ pSourceDoc->CopyTabToClip( rData.nStartX,rData.nStartY, nEndX,nEndY,
+ rData.nTabNo, pDragDoc );
+ USHORT nMergeX = nEndX;
+ USHORT nMergeY = nEndY;
+ pDragDoc->ExtendMerge( rData.nStartX, rData.nStartY, nMergeX, nMergeY, rData.nTabNo, TRUE );
+
+ // einfuegen:
+
+ pView->SetCursor( nDragStartX, nDragStartY );
+ pView->PasteFromClip( IDF_ALL, pDragDoc );
+ pViewData->GetMarkData().ResetMark();
+ pView->CursorPosChanged();
+ Invalidate();
+ delete pDragDoc;
+ bRet = TRUE;
+ }
+ }
+ }
+
+ bDragRect = FALSE; // bei naechstem IsLeave-QueryDrop nicht zeichnen
+ return bRet;
+}
+
+extern BOOL bPasteIsDrop; //! viewfun4 -> in irgendein Headerfile !!!
+extern BOOL bPasteIsMove; //! viewfun7 -> in irgendein Headerfile !!!
+
+BOOL __EXPORT ScGridWindow::Drop( const DropEvent& rEvt )
+{
+ DrawMarkDropObj( NULL );
+
+ ScModule* pScMod = SC_MOD();
+ const ScDragData& rData = pScMod->GetDragData();
+ if (rData.pDoc)
+ return DropPrivate( rEvt );
+
+ if ( rData.aLinkDoc.Len() )
+ {
+ // versuchen, einen Link einzufuegen
+
+ BOOL bOk = TRUE;
+ String aThisName;
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ if (pDocSh && pDocSh->HasName())
+ aThisName = pDocSh->GetMedium()->GetName();
+
+ if ( rData.aLinkDoc == aThisName ) // Fehler - kein Link im selben Dokument
+ bOk = FALSE;
+ else
+ {
+ ScViewFunc* pView = pViewData->GetView();
+ if ( rData.aLinkTable.Len() )
+ pView->InsertTableLink( rData.aLinkDoc, EMPTY_STRING, EMPTY_STRING,
+ rData.aLinkTable );
+ else if ( rData.aLinkArea.Len() )
+ {
+ Point aPos = rEvt.GetPosPixel();
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+ pView->MoveCursorAbs( nPosX, nPosY, SC_FOLLOW_NONE, FALSE, FALSE );
+
+ pView->InsertAreaLink( rData.aLinkDoc, EMPTY_STRING, EMPTY_STRING,
+ rData.aLinkArea );
+ }
+ else
+ {
+ DBG_ERROR("Drop mit Link: weder Tabelle noch Area");
+ bOk = FALSE;
+ }
+ }
+
+ return bOk; // nichts anderes mehr probieren
+ }
+
+ Point aLogicPos = PixelToLogic(rEvt.GetPosPixel());
+
+ if (rData.pSdrModel)
+ {
+ bPasteIsMove = (rEvt.GetAction() == DROP_MOVE && !(rData.nFlags & SC_DROP_NAVIGATOR));
+ pViewData->GetView()->PasteDraw( aLogicPos, rData.pSdrModel );
+ pScMod->SetDragIntern( bPasteIsMove );
+ bPasteIsMove = FALSE;
+ return TRUE;
+ }
+
+ Point aPos = rEvt.GetPosPixel();
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+
+ if (rData.aJumpTarget.Len())
+ {
+ // interner Bookmark (aus Navigator)
+ // Bookmark-Clipboardformat ist in PasteDataObject
+
+ if ( !rData.pJumpLocalDoc || rData.pJumpLocalDoc == pViewData->GetDocument() )
+ {
+ pViewData->GetViewShell()->InsertBookmark( rData.aJumpText, rData.aJumpTarget,
+ nPosX, nPosY );
+ return TRUE;
+ }
+ }
+
+ SvDataObjectRef pObject = SvDataObject::PasteDragServer(rEvt);
+
+ ScDocument* pThisDoc = pViewData->GetDocument();
+ SdrObject* pHitObj = pThisDoc->GetObjectAtPoint( pViewData->GetTabNo(), PixelToLogic(aPos) );
+ if ( pHitObj && rEvt.GetAction() == DROP_LINK )
+ {
+ // auf Zeichenobjekt gezogen
+ // PasteOnDrawObject testet auf erlaubte Formate
+ if ( pViewData->GetView()->PasteOnDrawObject( pObject, pHitObj, TRUE ) )
+ return TRUE;
+ }
+
+ BOOL bRet = FALSE;
+
+ bPasteIsDrop = TRUE;
+ if ( rEvt.GetAction() == DROP_LINK )
+ bRet = pViewData->GetView()->
+ LinkDataObject( pObject, nPosX, nPosY, this, &aLogicPos );
+ else
+ bRet = pViewData->GetView()->
+ PasteDataObject( pObject, nPosX, nPosY, this, &aLogicPos );
+ bPasteIsDrop = FALSE;
+
+ return bRet;
+}
+
+//--------------------------------------------------------
+
+void ScGridWindow::UpdateEditViewPos()
+{
+ if (pViewData->HasEditView(eWhich))
+ {
+ EditView* pView;
+ USHORT nCol;
+ USHORT nRow;
+ pViewData->GetEditView( eWhich, pView, nCol, nRow );
+
+ // EditView verstecken?
+
+ BOOL bHide = ( nCol<pViewData->GetPosX(eHWhich) || nRow<pViewData->GetPosY(eVWhich) );
+ if ( SC_MOD()->IsFormulaMode() )
+ if ( pViewData->GetTabNo() != pViewData->GetRefTabNo() )
+ bHide = TRUE;
+
+ if (bHide)
+ {
+ Rectangle aRect = pView->GetOutputArea();
+ long nHeight = aRect.Bottom() - aRect.Top();
+ aRect.Top() = PixelToLogic(GetOutputSizePixel(), pViewData->GetLogicMode()).
+ Height() * 2;
+ aRect.Bottom() = aRect.Top() + nHeight;
+ pView->SetOutputArea( aRect );
+ pView->HideCursor();
+ }
+ else
+ {
+ Rectangle aPixRect = pViewData->GetEditArea( eWhich, nCol, nRow, this );
+ Point aScrPos = PixelToLogic( aPixRect.TopLeft(), pViewData->GetLogicMode() );
+
+ Rectangle aRect = pView->GetOutputArea();
+ aRect.SetPos( aScrPos );
+ pView->SetOutputArea( aRect );
+ pView->ShowCursor();
+ }
+ }
+}
+
+void ScGridWindow::ScrollPixel( long nDifX, long nDifY )
+{
+ ClickExtern();
+
+ bIsInScroll = TRUE;
+ BOOL bXor=DrawBeforeScroll();
+
+ SetMapMode(MAP_PIXEL);
+ Scroll( nDifX, nDifY, SCROLL_CHILDREN );
+ SetMapMode( GetDrawMapMode() ); // verschobenen MapMode erzeugen
+
+ UpdateEditViewPos();
+
+ DrawAfterScroll(bXor);
+ bIsInScroll = FALSE;
+}
+
+// Formeln neu zeichnen -------------------------------------------------
+
+void ScGridWindow::UpdateFormulas()
+{
+ if (pViewData->GetView()->IsMinimized())
+ return;
+
+ if ( nPaintCount )
+ {
+ // nicht anfangen, verschachtelt zu painten
+ // (dann wuerde zumindest der MapMode nicht mehr stimmen)
+
+ bNeedsRepaint = TRUE; // -> am Ende vom Paint nochmal Invalidate auf alles
+ aRepaintPixel = Rectangle(); // alles
+ return;
+ }
+
+ USHORT nX1 = pViewData->GetPosX( eHWhich );
+ USHORT nY1 = pViewData->GetPosY( eVWhich );
+ USHORT nX2 = nX1 + pViewData->VisibleCellsX( eHWhich );
+ USHORT nY2 = nY1 + pViewData->VisibleCellsY( eVWhich );
+
+ if (nX2 > MAXCOL) nX2 = MAXCOL;
+ if (nY2 > MAXROW) nY2 = MAXROW;
+
+ Draw( nX1, nY1, nX2, nY2, SC_UPDATE_CHANGED );
+}
+
+void ScGridWindow::UpdateAutoFillMark(BOOL bMarked, const ScRange& rMarkRange)
+{
+ if ( bMarked != bAutoMarkVisible || ( bMarked && rMarkRange.aEnd != aAutoMarkPos ) )
+ {
+ HideCursor();
+ bAutoMarkVisible = bMarked;
+ if ( bMarked )
+ aAutoMarkPos = rMarkRange.aEnd;
+ ShowCursor();
+ }
+}
+
+void ScGridWindow::HideCursor()
+{
+ ++nCursorHideCount;
+ if (nCursorHideCount==1)
+ {
+ BOOL bDrawCursor = TRUE;
+ BOOL bDrawAuto = TRUE;
+
+ //! irgendwie erkennen, ob wirklich neu gepainted werden muss
+ //! immer flackert zu viel, weil ein Control sich immer komplett zeichnet
+
+ if (!bIsInPaint)
+ {
+ // Controls unter dem Cursor ?
+
+ ScMarkData& rMark = pViewData->GetMarkData();
+ BOOL bMarked = ( rMark.IsMarked() || rMark.IsMultiMarked() );
+
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nX = pViewData->GetCurX();
+ USHORT nY = pViewData->GetCurY();
+
+ Point aScrPos = pViewData->GetScrPos( nX, nY, eWhich );
+ long nSizeXPix;
+ long nSizeYPix;
+ pViewData->GetMergeSizePixel( nX, nY, nSizeXPix, nSizeYPix );
+ aScrPos.X() -= 2;
+ aScrPos.Y() -= 2;
+ Rectangle aPixRect( aScrPos, Size( nSizeXPix+4,nSizeYPix+4 ) );
+
+ if ( bAutoMarkVisible && aAutoMarkPos == ScAddress(nX,nY,nTab) )
+ {
+ aPixRect.Right() += 2; // Anfasser mit einschliessen
+ aPixRect.Bottom() += 2;
+ }
+
+ MapMode aDrawMode = GetDrawMapMode();
+ Rectangle aLogicRect = PixelToLogic( aPixRect, aDrawMode );
+
+ if (pDoc->HasControl( nTab, aLogicRect ))
+ {
+ Invalidate( PixelToLogic( aPixRect ) );
+ if (bMarked)
+ pDoc->InvalidateControls( this, nTab, aLogicRect );
+
+ Update();
+ bDrawCursor = FALSE; // nicht per XOR malen
+ }
+
+ // Controls unter dem AutoFill-Anfasser ?
+
+ if ( bAutoMarkVisible && aAutoMarkPos.Tab() == nTab )
+ {
+ if ( aAutoMarkPos == ScAddress(nX,nY,nTab) )
+ bDrawAuto = bDrawCursor; // schon erledigt
+ else
+ {
+ USHORT nAutoX = aAutoMarkPos.Col();
+ USHORT nAutoY = aAutoMarkPos.Row();
+ Point aFillPos = pViewData->GetScrPos( nAutoX, nAutoY, eWhich, TRUE );
+ long nSizeXPix;
+ long nSizeYPix;
+ pViewData->GetMergeSizePixel( nAutoX, nAutoY, nSizeXPix, nSizeYPix );
+ aFillPos.X() += nSizeXPix;
+ aFillPos.Y() += nSizeYPix;
+
+ aFillPos.X() -= 2;
+ aFillPos.Y() -= 2;
+ Rectangle aFillRect( aFillPos, Size(6,6) );
+
+ Rectangle aLogicFill = PixelToLogic( aFillRect, aDrawMode );
+ if (pDoc->HasControl( nTab, aLogicFill ))
+ {
+ Invalidate( PixelToLogic( aFillRect ) );
+ if (bMarked)
+ pDoc->InvalidateControls( this, nTab, aLogicFill );
+
+ Update();
+ bDrawAuto = FALSE;
+ }
+ }
+ }
+ }
+
+ if (bDrawCursor)
+ DrawCursor();
+ if (bDrawAuto)
+ DrawAutoFillMark();
+ }
+}
+
+void ScGridWindow::ShowCursor()
+{
+ if (nCursorHideCount==0)
+ {
+ DBG_ERROR("zuviel ShowCursor");
+ return;
+ }
+
+ --nCursorHideCount;
+ if (nCursorHideCount==0)
+ {
+ DrawAutoFillMark();
+ DrawCursor();
+ }
+}
+
+void __EXPORT ScGridWindow::GetFocus()
+{
+ ScTabViewShell* pViewShell = pViewData->GetViewShell();
+ pViewShell->GotFocus();
+
+ if ( !SC_MOD()->IsFormulaMode() )
+ {
+ pViewShell->UpdateInputHandler();
+// StopMarking(); // falls Dialog (Fehler), weil dann kein ButtonUp
+ // MO: nur wenn nicht im RefInput-Modus
+ // -> GetFocus/MouseButtonDown-Reihenfolge
+ // auf dem Mac
+ }
+
+ Window::GetFocus();
+}
+
+void __EXPORT ScGridWindow::LoseFocus()
+{
+ pViewData->GetViewShell()->LostFocus();
+
+ Window::LoseFocus();
+}
+
+Point ScGridWindow::GetMousePosPixel() const { return aCurMousePos; }
+
+//------------------------------------------------------------------------
+
+BOOL ScGridWindow::HitRangeFinder( const Point& rMouse, BOOL& rCorner,
+ USHORT* pIndex, short* pAddX, short* pAddY )
+{
+ BOOL bFound = FALSE;
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl( pViewData->GetViewShell() );
+ if (pHdl)
+ {
+ ScRangeFindList* pRangeFinder = pHdl->GetRangeFindList();
+ if ( pRangeFinder && !pRangeFinder->IsHidden() &&
+ pRangeFinder->GetDocName() == pViewData->GetDocShell()->GetTitle() )
+ {
+ short nPosX, nPosY;
+ pViewData->GetPosFromPixel( rMouse.X(), rMouse.Y(), eWhich, nPosX, nPosY );
+ // zusammengefasste (einzeln/Bereich) ???
+ ScAddress aAddr( nPosX, nPosY, pViewData->GetTabNo() );
+
+// Point aNext = pViewData->GetScrPos( nPosX+1, nPosY+1, eWhich );
+
+ Point aNext = pViewData->GetScrPos( nPosX, nPosY, eWhich, TRUE );
+ long nSizeXPix;
+ long nSizeYPix;
+ pViewData->GetMergeSizePixel( nPosX, nPosY, nSizeXPix, nSizeYPix );
+ aNext.X() += nSizeXPix;
+ aNext.Y() += nSizeYPix;
+
+ BOOL bCellCorner = ( rMouse.X() >= aNext.X() - 8 && rMouse.X() <= aNext.X() &&
+ rMouse.Y() >= aNext.Y() - 8 && rMouse.Y() <= aNext.Y() );
+ // Corner wird nur erkannt, wenn noch innerhalb der Zelle
+
+ USHORT nCount = (USHORT)pRangeFinder->Count();
+ for (USHORT i=nCount; i;)
+ {
+ // rueckwaerts suchen, damit der zuletzt gepaintete Rahmen gefunden wird
+ --i;
+ ScRangeFindData* pData = pRangeFinder->GetObject(i);
+ if ( pData && pData->aRef.In(aAddr) )
+ {
+ if (pIndex) *pIndex = i;
+ if (pAddX) *pAddX = nPosX - pData->aRef.aStart.Col();
+ if (pAddY) *pAddY = nPosY - pData->aRef.aStart.Row();
+ bFound = TRUE;
+ rCorner = ( bCellCorner && aAddr == pData->aRef.aEnd );
+ break;
+ }
+ }
+ }
+ }
+ return bFound;
+}
+
+#define SCE_TOP 1
+#define SCE_BOTTOM 2
+#define SCE_LEFT 4
+#define SCE_RIGHT 8
+#define SCE_ALL 15
+
+void lcl_PaintOneRange( ScDocShell* pDocSh, const ScRange& rRange, USHORT nEdges )
+{
+ // der Range ist immer richtigherum
+
+ USHORT nCol1 = rRange.aStart.Col();
+ USHORT nRow1 = rRange.aStart.Row();
+ USHORT nTab1 = rRange.aStart.Tab();
+ USHORT nCol2 = rRange.aEnd.Col();
+ USHORT nRow2 = rRange.aEnd.Row();
+ USHORT nTab2 = rRange.aEnd.Tab();
+
+ if ( nCol2 > nCol1 + 1 && nRow2 > nRow1 + 1 )
+ {
+ // nur an den Raendern entlang
+ // (die Ecken werden evtl. zweimal getroffen)
+
+ if ( nEdges & SCE_TOP )
+ pDocSh->PostPaint( nCol1, nRow1, nTab1, nCol2, nRow1, nTab2, PAINT_MARKS );
+ if ( nEdges & SCE_LEFT )
+ pDocSh->PostPaint( nCol1, nRow1, nTab1, nCol1, nRow2, nTab2, PAINT_MARKS );
+ if ( nEdges & SCE_RIGHT )
+ pDocSh->PostPaint( nCol2, nRow1, nTab1, nCol2, nRow2, nTab2, PAINT_MARKS );
+ if ( nEdges & SCE_BOTTOM )
+ pDocSh->PostPaint( nCol1, nRow2, nTab1, nCol2, nRow2, nTab2, PAINT_MARKS );
+ }
+ else // alles am Stueck
+ pDocSh->PostPaint( rRange, PAINT_MARKS );
+}
+
+void lcl_PaintRefChanged( ScDocShell* pDocSh, const ScRange& rOldUn, const ScRange& rNewUn )
+{
+ // Repaint fuer die Teile des Rahmens in Old, die bei New nicht mehr da sind
+
+ ScRange aOld = rOldUn;
+ ScRange aNew = rNewUn;
+ aOld.Justify();
+ aNew.Justify();
+
+ if ( aOld.aStart == aOld.aEnd ) //! Tab ignorieren?
+ pDocSh->GetDocument()->ExtendMerge(aOld);
+ if ( aNew.aStart == aNew.aEnd ) //! Tab ignorieren?
+ pDocSh->GetDocument()->ExtendMerge(aNew);
+
+ USHORT nOldCol1 = aOld.aStart.Col();
+ USHORT nOldRow1 = aOld.aStart.Row();
+ USHORT nOldCol2 = aOld.aEnd.Col();
+ USHORT nOldRow2 = aOld.aEnd.Row();
+ USHORT nNewCol1 = aNew.aStart.Col();
+ USHORT nNewRow1 = aNew.aStart.Row();
+ USHORT nNewCol2 = aNew.aEnd.Col();
+ USHORT nNewRow2 = aNew.aEnd.Row();
+ USHORT nTab1 = aOld.aStart.Tab(); // Tab aendert sich nicht
+ USHORT nTab2 = aOld.aEnd.Tab();
+
+ if ( nNewRow2 < nOldRow1 || nNewRow1 > nOldRow2 ||
+ nNewCol2 < nOldCol1 || nNewCol1 > nOldCol2 ||
+ ( nNewCol1 != nOldCol1 && nNewRow1 != nOldRow1 &&
+ nNewCol2 != nOldCol2 && nNewRow2 != nOldRow2 ) )
+ {
+ // komplett weggeschoben oder alle Seiten veraendert
+ // (Abfrage <= statt < geht schief bei einzelnen Zeilen/Spalten)
+
+ lcl_PaintOneRange( pDocSh, aOld, SCE_ALL );
+ }
+ else // alle vier Kanten einzeln testen
+ {
+ // oberer Teil
+ if ( nNewRow1 < nOldRow1 ) // nur obere Linie loeschen
+ lcl_PaintOneRange( pDocSh, ScRange(
+ nOldCol1, nOldRow1, nTab1, nOldCol2, nOldRow1, nTab2 ), SCE_ALL );
+ else if ( nNewRow1 > nOldRow1 ) // den Teil, der oben wegkommt
+ lcl_PaintOneRange( pDocSh, ScRange(
+ nOldCol1, nOldRow1, nTab1, nOldCol2, nNewRow1-1, nTab2 ),
+ SCE_ALL &~ SCE_BOTTOM );
+
+ // unterer Teil
+ if ( nNewRow2 > nOldRow2 ) // nur untere Linie loeschen
+ lcl_PaintOneRange( pDocSh, ScRange(
+ nOldCol1, nOldRow2, nTab1, nOldCol2, nOldRow2, nTab2 ), SCE_ALL );
+ else if ( nNewRow2 < nOldRow2 ) // den Teil, der unten wegkommt
+ lcl_PaintOneRange( pDocSh, ScRange(
+ nOldCol1, nNewRow2+1, nTab1, nOldCol2, nOldRow2, nTab2 ),
+ SCE_ALL &~ SCE_TOP );
+
+ // linker Teil
+ if ( nNewCol1 < nOldCol1 ) // nur linke Linie loeschen
+ lcl_PaintOneRange( pDocSh, ScRange(
+ nOldCol1, nOldRow1, nTab1, nOldCol1, nOldRow2, nTab2 ), SCE_ALL );
+ else if ( nNewCol1 > nOldCol1 ) // den Teil, der links wegkommt
+ lcl_PaintOneRange( pDocSh, ScRange(
+ nOldCol1, nOldRow1, nTab1, nNewCol1-1, nOldRow2, nTab2 ),
+ SCE_ALL &~ SCE_RIGHT );
+
+ // rechter Teil
+ if ( nNewCol2 > nOldCol2 ) // nur rechte Linie loeschen
+ lcl_PaintOneRange( pDocSh, ScRange(
+ nOldCol2, nOldRow1, nTab1, nOldCol2, nOldRow2, nTab2 ), SCE_ALL );
+ else if ( nNewCol2 < nOldCol2 ) // den Teil, der rechts wegkommt
+ lcl_PaintOneRange( pDocSh, ScRange(
+ nNewCol2+1, nOldRow1, nTab1, nOldCol2, nOldRow2, nTab2 ),
+ SCE_ALL &~ SCE_LEFT );
+ }
+}
+
+void ScGridWindow::RFMouseMove( const MouseEvent& rMEvt, BOOL bUp )
+{
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl( pViewData->GetViewShell() );
+ if (!pHdl)
+ return;
+ ScRangeFindList* pRangeFinder = pHdl->GetRangeFindList();
+ if (!pRangeFinder || nRFIndex >= pRangeFinder->Count())
+ return;
+ ScRangeFindData* pData = pRangeFinder->GetObject( nRFIndex );
+ if (!pData)
+ return;
+
+ // Mauszeiger
+
+ if (bRFSize)
+ SetPointer( Pointer( POINTER_CROSS ) );
+ else
+ SetPointer( Pointer( POINTER_HAND ) );
+
+ // Scrolling
+
+ BOOL bTimer = FALSE;
+ Point aPos = rMEvt.GetPosPixel();
+ short nDx = 0;
+ short nDy = 0;
+ if ( aPos.X() < 0 ) nDx = -1;
+ if ( aPos.Y() < 0 ) nDy = -1;
+ Size aSize = GetOutputSizePixel();
+ if ( aPos.X() >= aSize.Width() )
+ nDx = 1;
+ if ( aPos.Y() >= aSize.Height() )
+ nDy = 1;
+ if ( nDx || nDy )
+ {
+ if ( nDx ) pViewData->GetView()->ScrollX( nDx, WhichH(eWhich) );
+ if ( nDy ) pViewData->GetView()->ScrollY( nDy, WhichV(eWhich) );
+ bTimer = TRUE;
+ }
+
+ // Umschalten bei Fixierung (damit Scrolling funktioniert)
+
+ if ( eWhich == pViewData->GetActivePart() ) //??
+ {
+ if ( pViewData->GetHSplitMode() == SC_SPLIT_FIX )
+ if ( nDx > 0 )
+ {
+ if ( eWhich == SC_SPLIT_TOPLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_TOPRIGHT );
+ else if ( eWhich == SC_SPLIT_BOTTOMLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMRIGHT );
+ }
+
+ if ( pViewData->GetVSplitMode() == SC_SPLIT_FIX )
+ if ( nDy > 0 )
+ {
+ if ( eWhich == SC_SPLIT_TOPLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMLEFT );
+ else if ( eWhich == SC_SPLIT_TOPRIGHT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMRIGHT );
+ }
+ }
+
+ // Verschieben
+
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+
+ ScRange aOld = pData->aRef;
+ ScRange aNew = aOld;
+ if ( bRFSize )
+ {
+ aNew.aEnd.SetCol((USHORT)nPosX);
+ aNew.aEnd.SetRow((USHORT)nPosY);
+ }
+ else
+ {
+ long nStartX = nPosX - nRFAddX;
+ if ( nStartX < 0 ) nStartX = 0;
+ long nStartY = nPosY - nRFAddY;
+ if ( nStartY < 0 ) nStartY = 0;
+ long nEndX = nStartX + aOld.aEnd.Col() - aOld.aStart.Col();
+ if ( nEndX > MAXCOL )
+ {
+ nStartX -= ( nEndX - MAXROW );
+ nEndX = MAXCOL;
+ }
+ long nEndY = nStartY + aOld.aEnd.Row() - aOld.aStart.Row();
+ if ( nEndY > MAXROW )
+ {
+ nStartY -= ( nEndY - MAXROW );
+ nEndY = MAXROW;
+ }
+
+ aNew.aStart.SetCol((USHORT)nStartX);
+ aNew.aStart.SetRow((USHORT)nStartY);
+ aNew.aEnd.SetCol((USHORT)nEndX);
+ aNew.aEnd.SetRow((USHORT)nEndY);
+ }
+
+ if ( bUp )
+ aNew.Justify(); // beim ButtonUp wieder richtigherum
+
+ if ( aNew != aOld )
+ {
+ pHdl->UpdateRange( nRFIndex, aNew );
+
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+
+ // nur das neuzeichnen, was sich veraendert hat...
+ lcl_PaintRefChanged( pDocSh, aOld, aNew );
+
+ // neuen Rahmen nur drueberzeichnen (synchron)
+ pDocSh->Broadcast( ScIndexHint( SC_HINT_SHOWRANGEFINDER, nRFIndex ) );
+
+ Update(); // was man bewegt, will man auch sofort sehen
+ }
+
+ // Timer fuer Scrolling
+
+ if (bTimer)
+ pViewData->GetView()->SetTimer( this, rMEvt ); // Event wiederholen
+ else
+ pViewData->GetView()->ResetTimer();
+}
+
+//------------------------------------------------------------------------
+
+BOOL ScGridWindow::GetEditUrl( const Point& rPos,
+ String* pName, String* pUrl, String* pTarget )
+{
+ return GetEditUrlOrError( FALSE, rPos, pName, pUrl, pTarget );
+}
+
+BOOL ScGridWindow::GetEditUrlOrError( BOOL bSpellErr, const Point& rPos,
+ String* pName, String* pUrl, String* pTarget )
+{
+ //! nPosX/Y mit uebergeben?
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( rPos.X(), rPos.Y(), eWhich, nPosX, nPosY );
+
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScBaseCell* pCell = NULL;
+
+ BOOL bFound = FALSE;
+ do
+ {
+ pDoc->GetCell( nPosX, nPosY, nTab, pCell );
+ if ( !pCell || pCell->GetCellType() == CELLTYPE_NOTE )
+ {
+ if ( nPosX <= 0 )
+ return FALSE; // alles leer bis links
+ else
+ --nPosX; // weitersuchen
+ }
+ else if ( pCell->GetCellType() == CELLTYPE_EDIT )
+ bFound = TRUE;
+ else
+ return FALSE; // andere Zelle
+ }
+ while ( !bFound );
+
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nPosX, nPosY, nTab );
+ Rectangle aEditRect = pViewData->GetEditArea( eWhich, nPosX, nPosY, this, pPattern );
+ if (rPos.Y() < aEditRect.Top())
+ return FALSE;
+
+ // vertikal kann (noch) nicht angeklickt werden:
+
+ SvxCellOrientation eOrient = (SvxCellOrientation) ((SvxOrientationItem&)pPattern->
+ GetItem(ATTR_ORIENTATION)).GetValue();
+ if (eOrient != SVX_ORIENTATION_STANDARD)
+ return FALSE;
+
+ BOOL bBreak = ((SfxBoolItem&)pPattern->GetItem(ATTR_LINEBREAK)).GetValue() ||
+ ((SvxCellHorJustify)((const SvxHorJustifyItem&)pPattern->
+ GetItem( ATTR_HOR_JUSTIFY )).GetValue() == SVX_HOR_JUSTIFY_BLOCK);
+ SvxCellHorJustify eHorJust = (SvxCellHorJustify)((SvxHorJustifyItem&)pPattern->
+ GetItem(ATTR_HOR_JUSTIFY)).GetValue();
+
+ // EditEngine
+
+ ScFieldEditEngine aEngine( pDoc->GetEditPool() );
+ aEngine.SetRefMapMode( MAP_100TH_MM );
+ SfxItemSet aDefault( aEngine.GetEmptyItemSet() );
+ pPattern->FillEditItemSet( &aDefault );
+ SvxAdjust eSvxAdjust = SVX_ADJUST_LEFT;
+ switch (eHorJust)
+ {
+ case SVX_HOR_JUSTIFY_LEFT:
+ case SVX_HOR_JUSTIFY_REPEAT: // nicht implementiert
+ case SVX_HOR_JUSTIFY_STANDARD: // immer Text
+ eSvxAdjust = SVX_ADJUST_LEFT;
+ break;
+ case SVX_HOR_JUSTIFY_RIGHT:
+ eSvxAdjust = SVX_ADJUST_RIGHT;
+ break;
+ case SVX_HOR_JUSTIFY_CENTER:
+ eSvxAdjust = SVX_ADJUST_CENTER;
+ break;
+ case SVX_HOR_JUSTIFY_BLOCK:
+ eSvxAdjust = SVX_ADJUST_BLOCK;
+ break;
+ }
+ aDefault.Put( SvxAdjustItem( eSvxAdjust, EE_PARA_JUST ) );
+ aEngine.SetDefaults( aDefault );
+ if (bSpellErr)
+ aEngine.SetControlWord( aEngine.GetControlWord() | EE_CNTRL_ONLINESPELLING );
+
+ MapMode aEditMode = pViewData->GetLogicMode(eWhich); // ohne Drawing-Skalierung
+ Rectangle aLogicEdit = PixelToLogic( aEditRect, aEditMode );
+ long nThisColLogic = aLogicEdit.Right() - aLogicEdit.Left() + 1;
+
+ Size aPaperSize = Size( 1000000, 1000000 );
+ if (bBreak)
+ aPaperSize.Width() = nThisColLogic;
+ aEngine.SetPaperSize( aPaperSize );
+
+ const EditTextObject* pData;
+ ((ScEditCell*)pCell)->GetData(pData);
+ if (pData)
+ aEngine.SetText(*pData);
+
+ long nStartX = aLogicEdit.Left();
+
+ long nTextWidth = aEngine.CalcTextWidth();
+ long nTextHeight = aEngine.GetTextHeight();
+ if ( nTextWidth < nThisColLogic )
+ {
+ if (eHorJust == SVX_HOR_JUSTIFY_RIGHT)
+ nStartX += nThisColLogic - nTextWidth;
+ else if (eHorJust == SVX_HOR_JUSTIFY_CENTER)
+ nStartX += (nThisColLogic - nTextWidth) / 2;
+ }
+
+ aLogicEdit.Left() = nStartX;
+ if (!bBreak)
+ aLogicEdit.Right() = nStartX + nTextWidth;
+ aLogicEdit.Bottom() = aLogicEdit.Top() + nTextHeight;
+
+ Point aLogicClick = PixelToLogic(rPos,aEditMode);
+ if ( aLogicEdit.IsInside(aLogicClick) )
+ {
+// aEngine.SetUpdateMode(FALSE);
+ EditView aTempView( &aEngine, this );
+ aTempView.SetOutputArea( aLogicEdit );
+
+ BOOL bRet = FALSE;
+ MapMode aOld = GetMapMode();
+ SetMapMode(aEditMode); // kein return mehr
+
+ if (bSpellErr) // Spelling-Fehler suchen
+ {
+ bRet = aTempView.IsWrongSpelledWordAtPos( rPos );
+ if ( bRet )
+ pViewData->GetView()->SetCursor( nPosX, nPosY ); // Cursor setzen
+ }
+ else // URL suchen
+ {
+ const SvxFieldItem* pFieldItem = aTempView.GetFieldUnderMousePointer();
+
+ if (pFieldItem)
+ {
+ const SvxFieldData* pField = pFieldItem->GetField();
+ if ( pField && pField->ISA(SvxURLField) )
+ {
+ if ( pName || pUrl || pTarget )
+ {
+ const SvxURLField* pURLField = (const SvxURLField*)pField;
+ if (pName)
+ *pName = pURLField->GetRepresentation();
+ if (pUrl)
+ *pUrl = pURLField->GetURL();
+ if (pTarget)
+ *pTarget = pURLField->GetTargetFrame();
+ }
+ bRet = TRUE;
+ }
+ }
+ }
+
+ SetMapMode(aOld);
+
+ // bei SetOutputArea oben geht der Text-Cursor kaputt...
+ if ( pViewData->HasEditView(eWhich) && HasFocus() )
+ pViewData->GetEditView(eWhich)->ShowCursor( FALSE, TRUE );
+
+ return bRet;
+ }
+ return FALSE;
+}
+
+BOOL ScGridWindow::HasScenarioButton( const Point& rPosPixel, ScRange& rScenRange )
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nTabCount = pDoc->GetTableCount();
+ if ( nTab+1<nTabCount && pDoc->IsScenario(nTab+1) && !pDoc->IsScenario(nTab) )
+ {
+ Size aButSize = pViewData->GetScenButSize();
+ long nBWidth = aButSize.Width();
+ if (!nBWidth)
+ return FALSE; // noch kein Button gezeichnet -> da ist auch keiner
+ long nBHeight = aButSize.Height();
+ long nHSpace = (long)( SC_SCENARIO_HSPACE * pViewData->GetPPTX() );
+
+ //! Ranges an der Table cachen!!!!
+
+ USHORT i;
+ ScMarkData aMarks;
+ for (i=nTab+1; i<nTabCount && pDoc->IsScenario(i); i++)
+ pDoc->MarkScenario( i, nTab, aMarks, FALSE, SC_SCENARIO_SHOWFRAME );
+ ScRangeList aRanges;
+ aMarks.FillRangeListWithMarks( &aRanges, FALSE );
+
+
+ USHORT nRangeCount = (USHORT)aRanges.Count();
+ for (i=0; i<nRangeCount; i++)
+ {
+ ScRange aRange = *aRanges.GetObject(i);
+ // Szenario-Rahmen immer dann auf zusammengefasste Zellen erweitern, wenn
+ // dadurch keine neuen nicht-ueberdeckten Zellen mit umrandet werden
+ pDoc->ExtendTotalMerge( aRange );
+
+ BOOL bTextBelow = ( aRange.aStart.Row() == 0 );
+
+ Point aButtonPos;
+ if ( bTextBelow )
+ {
+ aButtonPos = pViewData->GetScrPos( aRange.aEnd.Col()+1, aRange.aEnd.Row()+1,
+ eWhich, TRUE );
+ }
+ else
+ {
+ aButtonPos = pViewData->GetScrPos( aRange.aEnd.Col()+1, aRange.aStart.Row(),
+ eWhich, TRUE );
+ aButtonPos.Y() -= nBHeight;
+ }
+ aButtonPos.X() -= nBWidth - nHSpace; // in beiden Faellen gleich
+
+ Rectangle aButRect( aButtonPos, Size(nBWidth,nBHeight) );
+ if ( aButRect.IsInside( rPosPixel ) )
+ {
+ rScenRange = aRange;
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+
+
+
diff --git a/sc/source/ui/view/gridwin2.cxx b/sc/source/ui/view/gridwin2.cxx
new file mode 100644
index 000000000000..04e5aede33c3
--- /dev/null
+++ b/sc/source/ui/view/gridwin2.cxx
@@ -0,0 +1,1145 @@
+/*************************************************************************
+ *
+ * $RCSfile: gridwin2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <vcl/msgbox.hxx>
+#include <vcl/sound.hxx>
+
+#include "gridwin.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "viewdata.hxx"
+#include "pivot.hxx"
+#include "pfiltdlg.hxx"
+#include "uiitems.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "pagedata.hxx"
+#include "dpobject.hxx"
+#include "dpsave.hxx"
+#include "dpoutput.hxx" // ScDPPositionData
+#include "dpshttab.hxx"
+#include "dbdocfun.hxx"
+
+#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
+
+using namespace com::sun::star;
+
+
+// STATIC DATA -----------------------------------------------------------
+
+// -----------------------------------------------------------------------
+
+void ScGridWindow::DoPushButton( USHORT nCol, USHORT nRow, const MouseEvent& rMEvt )
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+
+ ScPivotCollection* pPivotCollection = pDoc->GetPivotCollection();
+ ScPivot* pPivot = pPivotCollection->GetPivotAtCursor(nCol, nRow, nTab);
+
+ ScDPObject* pDPObj = pDoc->GetDPAtCursor(nCol, nRow, nTab);
+
+ if (pPivot) // alte Pivottabellen
+ {
+ if (pPivot->IsFilterAtCursor(nCol, nRow, nTab))
+ {
+ ReleaseMouse(); // falls schon beim ButtonDown gecaptured, #44018#
+
+ ScQueryParam aQueryParam;
+ pPivot->GetQuery(aQueryParam);
+ USHORT nSrcTab = pPivot->GetSrcArea().aStart.Tab();
+
+ SfxItemSet aArgSet( pViewData->GetViewShell()->GetPool(),
+ SCITEM_QUERYDATA, SCITEM_QUERYDATA );
+ aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, pViewData, &aQueryParam ) );
+
+ ScPivotFilterDlg* pDlg = new ScPivotFilterDlg(
+ pViewData->GetViewShell()->GetDialogParent(),
+ aArgSet, nSrcTab );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ ScPivot* pNewPivot = pPivot->CreateNew();
+
+ const ScQueryItem& rQueryItem = pDlg->GetOutputItem();
+ pNewPivot->SetQuery(rQueryItem.GetQueryData());
+
+ PivotField* pColArr = new PivotField[PIVOT_MAXFIELD];
+ short nColCount;
+ pPivot->GetColFields( pColArr, nColCount );
+ PivotField* pRowArr = new PivotField[PIVOT_MAXFIELD];
+ short nRowCount;
+ pPivot->GetRowFields( pRowArr, nRowCount );
+ PivotField* pDataArr = new PivotField[PIVOT_MAXFIELD];
+ short nDataCount;
+ pPivot->GetDataFields( pDataArr, nDataCount );
+
+ pNewPivot->SetColFields( pColArr, nColCount );
+ pNewPivot->SetRowFields( pRowArr, nRowCount );
+ pNewPivot->SetDataFields( pDataArr, nDataCount );
+
+ pNewPivot->SetName( pPivot->GetName() );
+ pNewPivot->SetTag( pPivot->GetTag() );
+
+ pViewData->GetDocShell()->PivotUpdate( pPivot, pNewPivot );
+ }
+ delete pDlg;
+ }
+ else
+ {
+ USHORT nField;
+ if (pPivot->GetColFieldAtCursor(nCol, nRow, nTab, nField))
+ {
+ bPivotMouse = TRUE;
+ nPivotField = nField;
+ bPivotColField = TRUE;
+ nPivotCol = nCol;
+ pDragPivot = pPivot;
+ PivotTestMouse( rMEvt, TRUE );
+ // CaptureMouse();
+ StartTracking();
+ }
+ else if (pPivot->GetRowFieldAtCursor(nCol, nRow, nTab, nField))
+ {
+ bPivotMouse = TRUE;
+ nPivotField = nField;
+ bPivotColField = FALSE;
+ nPivotCol = nCol;
+ pDragPivot = pPivot;
+ PivotTestMouse( rMEvt, TRUE );
+ // CaptureMouse();
+ StartTracking();
+ }
+ }
+ }
+ else if (pDPObj)
+ {
+ ScAddress aPos( nCol, nRow, nTab );
+ long nField = pDPObj->GetHeaderDim(aPos);
+ if ( nField >= 0 )
+ {
+ bDPMouse = TRUE;
+ nDPField = nField;
+ pDragDPObj = pDPObj;
+ DPTestMouse( rMEvt, TRUE );
+ StartTracking();
+ }
+ else if ( pDPObj->IsFilterButton(aPos) )
+ {
+ ReleaseMouse(); // may have been captured in ButtonDown
+
+ ScQueryParam aQueryParam;
+ USHORT nSrcTab = 0;
+ const ScSheetSourceDesc* pDesc = pDPObj->GetSheetDesc();
+ DBG_ASSERT(pDesc, "no sheet source for filter button");
+ if (pDesc)
+ {
+ aQueryParam = pDesc->aQueryParam;
+ nSrcTab = pDesc->aSourceRange.aStart.Tab();
+ }
+
+ SfxItemSet aArgSet( pViewData->GetViewShell()->GetPool(),
+ SCITEM_QUERYDATA, SCITEM_QUERYDATA );
+ aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, pViewData, &aQueryParam ) );
+
+ ScPivotFilterDlg* pDlg = new ScPivotFilterDlg(
+ pViewData->GetViewShell()->GetDialogParent(),
+ aArgSet, nSrcTab );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ ScSheetSourceDesc aNewDesc;
+ if (pDesc)
+ aNewDesc = *pDesc;
+
+ const ScQueryItem& rQueryItem = pDlg->GetOutputItem();
+ aNewDesc.aQueryParam = rQueryItem.GetQueryData();
+
+ ScDPObject aNewObj( *pDPObj );
+ aNewObj.SetSheetDesc( aNewDesc );
+ ScDBDocFunc aFunc( *pViewData->GetDocShell() );
+ aFunc.DataPilotUpdate( pDPObj, &aNewObj, TRUE, FALSE );
+ pViewData->GetView()->CursorPosChanged(); // shells may be switched
+ }
+ delete pDlg;
+ }
+ else
+ Sound::Beep();
+ }
+ else
+ DBG_ERROR("Da is ja garnix");
+}
+
+void ScGridWindow::DoPivotDrop( BOOL bDelete, BOOL bToCols, short nDestPos )
+{
+ if ( nPivotField == PIVOT_DATA_FIELD && bDelete )
+ {
+ pViewData->GetView()->ErrorMessage(STR_PIVOT_MOVENOTALLOWED);
+ return;
+ }
+
+ if ( bPivotColField != bToCols && !bDelete )
+ {
+ short nDestCount = bToCols ? pDragPivot->GetColFieldCount()
+ : pDragPivot->GetRowFieldCount();
+ if ( nDestCount >= PIVOT_MAXFIELD ) // schon voll?
+ {
+ // Versuch, mehr als PIVOT_MAXFIELD Eintraege zu erzeugen
+ pViewData->GetView()->ErrorMessage(STR_PIVOT_ERROR);
+ return;
+ }
+ }
+
+ PivotField* pColArr = new PivotField[PIVOT_MAXFIELD];
+ short nColCount;
+ pDragPivot->GetColFields( pColArr, nColCount );
+
+ PivotField* pRowArr = new PivotField[PIVOT_MAXFIELD];
+ short nRowCount;
+ pDragPivot->GetRowFields( pRowArr, nRowCount );
+
+ PivotField* pDataArr = new PivotField[PIVOT_MAXFIELD];
+ short nDataCount;
+ pDragPivot->GetDataFields( pDataArr, nDataCount );
+
+ short nOldPos = 0;
+ short i;
+ PivotField aMoveField;
+
+ PivotField* pSource = bPivotColField ? pColArr : pRowArr;
+ short& rCount = bPivotColField ? nColCount : nRowCount;
+
+ BOOL bFound = FALSE;
+ for (i=0; i<rCount && !bFound; i++)
+ if (pSource[i].nCol == (short) nPivotField)
+ {
+ nOldPos = i;
+ aMoveField = pSource[i];
+ --rCount;
+ if (i<rCount)
+ memmove( &pSource[i], &pSource[i+1], (rCount-i)*sizeof(PivotField) );
+ if ( bPivotColField == bToCols )
+ if (nDestPos > i)
+ --nDestPos;
+ bFound = TRUE;
+ }
+
+ if (bFound)
+ {
+ if (!bDelete)
+ {
+ PivotField* pDest = bToCols ? pColArr : pRowArr;
+ short& rDestCount = bToCols ? nColCount : nRowCount;
+ if (nDestPos < rDestCount)
+ memmove( &pDest[nDestPos+1], &pDest[nDestPos],
+ (rDestCount-nDestPos)*sizeof(PivotField) );
+ pDest[nDestPos] = aMoveField;
+ ++rDestCount;
+ }
+
+ ScPivotCollection* pPivotCollection = pViewData->GetDocument()->GetPivotCollection();
+
+ BOOL bEmpty = ( nColCount + nRowCount == 0 ||
+ ( nColCount + nRowCount == 1 && nDataCount <= 1 ) );
+
+ if ( bEmpty ) // Pivottabelle loeschen
+ {
+ pViewData->GetDocShell()->PivotUpdate( pDragPivot, NULL );
+ }
+ else
+ {
+ ScPivot* pNewPivot = pDragPivot->CreateNew();
+ pNewPivot->SetColFields( pColArr, nColCount );
+ pNewPivot->SetRowFields( pRowArr, nRowCount );
+ pNewPivot->SetDataFields( pDataArr, nDataCount );
+
+ pNewPivot->SetName( pDragPivot->GetName() );
+ pNewPivot->SetTag( pDragPivot->GetTag() );
+
+ pViewData->GetDocShell()->PivotUpdate( pDragPivot, pNewPivot );
+ }
+ pDragPivot = NULL;
+ }
+ else
+ DBG_ASSERT(0,"Pivot-Eintrag nicht gefunden");
+
+ delete[] pColArr;
+ delete[] pRowArr;
+ delete[] pDataArr;
+}
+
+BOOL ScGridWindow::PivotTestMouse( const MouseEvent& rMEvt, BOOL bMove )
+{
+ BOOL bRet = FALSE;
+ BOOL bTimer = FALSE;
+ Point aPos = rMEvt.GetPosPixel();
+
+ short nDx = 0;
+ short nDy = 0;
+ if ( aPos.X() < 0 )
+ nDx = -1;
+ if ( aPos.Y() < 0 )
+ nDy = -1;
+ Size aSize = GetOutputSizePixel();
+ if ( aPos.X() >= aSize.Width() )
+ nDx = 1;
+ if ( aPos.Y() >= aSize.Height() )
+ nDy = 1;
+ if ( nDx || nDy )
+ {
+ if (bDragRect)
+ {
+ DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, FALSE );
+ bDragRect = FALSE;
+ }
+
+ if ( nDx )
+ pViewData->GetView()->ScrollX( nDx, WhichH(eWhich) );
+ if ( nDy )
+ pViewData->GetView()->ScrollY( nDy, WhichV(eWhich) );
+
+ bTimer = TRUE;
+ }
+
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+ BOOL bMouseLeft;
+ BOOL bMouseTop;
+ pViewData->GetMouseQuadrant( aPos, eWhich, nPosX, nPosY, bMouseLeft, bMouseTop );
+
+ USHORT nPiCol1;
+ USHORT nPiRow1;
+ USHORT nPiCol2;
+ USHORT nPiRow2;
+ USHORT nTab;
+ pDragPivot->GetDestArea( nPiCol1, nPiRow1, nPiCol2, nPiRow2, nTab );
+
+ if ( nPosX >= (short) nPiCol1 && nPosX <= (short) nPiCol2 &&
+ nPosY >= (short) nPiRow1 && nPosY <= (short) nPiRow2 )
+ {
+ short nFilterAdd = 2; // Platz fuer Filter-Button
+ short nColRows = 1; //! Ueberschrift: 0, wenn keine Zeilen, aber mehrere Datenfelder
+ USHORT nNewStartX;
+ USHORT nNewStartY;
+ USHORT nNewEndX;
+ USHORT nNewEndY;
+
+ short nRelX = nPosX - (short) nPiCol1;
+ short nRelY = nPosY - (short) nPiRow1 - nFilterAdd;
+
+ PivotField* pFieldArr = new PivotField[PIVOT_MAXFIELD];
+ short nColCount;
+ pDragPivot->GetColFields( pFieldArr, nColCount );
+ short nRowCount;
+ pDragPivot->GetRowFields( pFieldArr, nRowCount );
+ delete[] pFieldArr;
+
+ BOOL bBefore;
+ short nColSize = Max( nColCount, (short) 1 );
+ short nRowSize = Max( nRowCount, (short) 1 );
+
+ BOOL bToCols;
+ if (nRelX < nColSize && nRelY >= nRowSize)
+ bToCols = TRUE; // links
+ else if (nRelY < nRowSize && nRelX >= nColSize)
+ bToCols = FALSE; // oben
+ else
+ bToCols = ( nRelY-nRowSize > nRelX-nColSize );
+
+ short nDestCol = 0;
+ short nDestRow = 0;
+ BOOL bNothing = FALSE;
+
+ if ( bToCols )
+ {
+ bBefore = bMouseLeft;
+ nDestCol = nRelX;
+ if (nDestCol < 0)
+ {
+ nDestCol = 0;
+ bBefore = TRUE;
+ }
+ if (nDestCol >= nColCount)
+ {
+ nDestCol = nColCount-1;
+ bBefore = FALSE;
+ }
+
+ nNewStartY = nPiRow1 + (USHORT) nFilterAdd + nRowCount + nColRows;
+ nNewEndY = nPiRow2 - 1;
+ nNewStartX = nPiCol1 + (USHORT) nDestCol;
+ nNewEndX = nNewStartX;
+
+ if ( !bPivotColField ) // von der anderen Seite
+ {
+ if (bBefore)
+ nNewEndX = nNewStartX - 1; // vor dem Feld
+ else
+ nNewStartX = nNewEndX + 1; // hinter dem Feld
+ }
+ else
+ {
+ USHORT nThisCol = (USHORT) nPosX; // absolute Spalte ( == Maus )
+ if ( nThisCol < nPivotCol )
+ {
+ nNewEndX = nNewStartX - 1; // vor dem Feld
+ bBefore = TRUE;
+ }
+ else if ( nThisCol > nPivotCol )
+ {
+ nNewStartX = nNewEndX + 1; // hinter dem Feld
+ bBefore = FALSE;
+ }
+ else
+ bNothing = TRUE;
+ }
+ SetPointer( Pointer( POINTER_PIVOT_ROW ) );
+ }
+ else
+ {
+ nDestRow;
+ if (nRelY <= 0 && nRelX < nColCount+nRowCount)
+ {
+ nDestRow = nRelX-nColCount;
+ bBefore = bMouseLeft;
+ }
+ else
+ {
+ nDestRow = nRelY-1;
+ bBefore = bMouseTop;
+ }
+ if (nDestRow < 0)
+ {
+ nDestRow = 0;
+ bBefore = TRUE;
+ }
+ if (nDestRow >= nRowCount)
+ {
+ nDestRow = nRowCount-1;
+ bBefore = FALSE;
+ }
+
+ nNewStartX = nPiCol1 + (USHORT) nColCount;
+ nNewEndX = nPiCol2 - 1;
+ nNewStartY = nPiRow1 + (USHORT) nFilterAdd + nDestRow + nColRows;
+ nNewEndY = nNewStartY;
+ if ( bPivotColField ) // von der anderen Seite
+ {
+ if (bBefore)
+ nNewEndY = nNewStartY - 1; // vor dem Feld
+ else
+ nNewStartY = nNewEndY + 1; // hinter dem Feld
+ }
+ else
+ {
+ USHORT nThisCol = nDestRow+nColCount+nPiCol1; // absolute Spalte
+ if ( nThisCol < nPivotCol )
+ {
+ bBefore = TRUE;
+ nNewEndY = nNewStartY - 1; // vor dem Feld
+ }
+ else if ( nThisCol > nPivotCol )
+ {
+ bBefore = FALSE;
+ nNewStartY = nNewEndY + 1; // hinter dem Feld
+ }
+ else
+ bNothing = TRUE;
+ }
+ SetPointer( Pointer( POINTER_PIVOT_COL ) );
+ }
+
+ if (bMove)
+ {
+ if ( nNewStartX != nDragStartX || nNewEndX != nDragEndX ||
+ nNewStartY != nDragStartY || nNewEndY != nDragEndY || !bDragRect )
+ {
+ if (bDragRect)
+ DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, FALSE );
+
+ nDragStartX = nNewStartX;
+ nDragStartY = nNewStartY;
+ nDragEndX = nNewEndX;
+ nDragEndY = nNewEndY;
+ bDragRect = TRUE;
+
+ DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, FALSE );
+ }
+ }
+ else
+ {
+ if (bDragRect)
+ {
+ DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, FALSE );
+ bDragRect = FALSE;
+ }
+
+ if (!bNothing)
+ {
+ short nDestPos = bToCols ? nDestCol : nDestRow;
+ if (!bBefore)
+ ++nDestPos;
+ DoPivotDrop( FALSE, bToCols, nDestPos );
+ }
+ }
+
+ bRet = TRUE;
+ }
+ else
+ {
+ if (bMove)
+ SetPointer( Pointer( POINTER_NOTALLOWED ) );
+ if (bDragRect)
+ DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, FALSE );
+ bDragRect = FALSE;
+
+ if (!bMove)
+ DoPivotDrop( TRUE, FALSE,0 );
+ }
+
+ if (bTimer && bMove)
+ pViewData->GetView()->SetTimer( this, rMEvt ); // Event wiederholen
+ else
+ pViewData->GetView()->ResetTimer();
+
+ return bRet;
+}
+
+void ScGridWindow::PivotMouseMove( const MouseEvent& rMEvt )
+{
+ PivotTestMouse( rMEvt, TRUE );
+}
+
+void ScGridWindow::PivotMouseButtonUp( const MouseEvent& rMEvt )
+{
+ bPivotMouse = FALSE; // als erstes, falls PivotTestMouse eine Fehlermeldung bringt
+ ReleaseMouse();
+
+ PivotTestMouse( rMEvt, FALSE );
+ SetPointer( Pointer( POINTER_ARROW ) );
+}
+
+// -----------------------------------------------------------------------
+//
+// Data Pilot interaction
+//
+
+void ScGridWindow::DPTestMouse( const MouseEvent& rMEvt, BOOL bMove )
+{
+ DBG_ASSERT(pDragDPObj, "pDragDPObj missing");
+
+ // scroll window if at edges
+ //! move this to separate method
+
+ BOOL bTimer = FALSE;
+ Point aPixel = rMEvt.GetPosPixel();
+
+ short nDx = 0;
+ short nDy = 0;
+ if ( aPixel.X() < 0 )
+ nDx = -1;
+ if ( aPixel.Y() < 0 )
+ nDy = -1;
+ Size aSize = GetOutputSizePixel();
+ if ( aPixel.X() >= aSize.Width() )
+ nDx = 1;
+ if ( aPixel.Y() >= aSize.Height() )
+ nDy = 1;
+ if ( nDx || nDy )
+ {
+ UpdateDragRect( FALSE, Rectangle() );
+
+ if ( nDx )
+ pViewData->GetView()->ScrollX( nDx, WhichH(eWhich) );
+ if ( nDy )
+ pViewData->GetView()->ScrollY( nDy, WhichV(eWhich) );
+
+ bTimer = TRUE;
+ }
+
+ // ---
+
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aPixel.X(), aPixel.Y(), eWhich, nPosX, nPosY );
+ BOOL bMouseLeft;
+ BOOL bMouseTop;
+ pViewData->GetMouseQuadrant( aPixel, eWhich, nPosX, nPosY, bMouseLeft, bMouseTop );
+
+ ScAddress aPos( nPosX, nPosY, pViewData->GetTabNo() );
+
+ Rectangle aPosRect;
+ USHORT nOrient;
+ long nDimPos;
+ BOOL bHasRange = pDragDPObj->GetHeaderDrag( aPos, bMouseLeft, bMouseTop, nDPField,
+ aPosRect, nOrient, nDimPos );
+ UpdateDragRect( bHasRange && bMove, aPosRect );
+
+ if (bMove) // set mouse pointer
+ {
+ PointerStyle ePointer = POINTER_NOTALLOWED;
+ if ( bHasRange )
+ switch (nOrient)
+ {
+ case sheet::DataPilotFieldOrientation_COLUMN: ePointer = POINTER_PIVOT_COL; break;
+ case sheet::DataPilotFieldOrientation_ROW: ePointer = POINTER_PIVOT_ROW; break;
+ case sheet::DataPilotFieldOrientation_PAGE:
+ case sheet::DataPilotFieldOrientation_DATA: ePointer = POINTER_PIVOT_FIELD; break;
+ }
+ SetPointer( ePointer );
+ }
+ else // execute change
+ {
+ if (!bHasRange)
+ nOrient = sheet::DataPilotFieldOrientation_HIDDEN;
+
+ BOOL bIsDataLayout;
+ String aDimName = pDragDPObj->GetDimName( nDPField, bIsDataLayout );
+ if ( bIsDataLayout && nOrient == sheet::DataPilotFieldOrientation_HIDDEN )
+ {
+ // removing data layout is not allowed
+ pViewData->GetView()->ErrorMessage(STR_PIVOT_MOVENOTALLOWED);
+ }
+ else
+ {
+ ScDPSaveData aSaveData( *pDragDPObj->GetSaveData() );
+
+ ScDPSaveDimension* pDim;
+ if ( bIsDataLayout )
+ pDim = aSaveData.GetDataLayoutDimension();
+ else
+ pDim = aSaveData.GetDimensionByName(aDimName);
+ pDim->SetOrientation( nOrient );
+ aSaveData.SetPosition( pDim, nDimPos );
+
+ //! docfunc method with ScDPSaveData as argument?
+
+ ScDPObject aNewObj( *pDragDPObj );
+ aNewObj.SetSaveData( aSaveData );
+ ScDBDocFunc aFunc( *pViewData->GetDocShell() );
+ aFunc.DataPilotUpdate( pDragDPObj, &aNewObj, TRUE, FALSE );
+ pViewData->GetView()->CursorPosChanged(); // shells may be switched
+ }
+ }
+
+ if (bTimer && bMove)
+ pViewData->GetView()->SetTimer( this, rMEvt ); // repeat event
+ else
+ pViewData->GetView()->ResetTimer();
+}
+
+void ScGridWindow::DPMouseMove( const MouseEvent& rMEvt )
+{
+ DPTestMouse( rMEvt, TRUE );
+}
+
+void ScGridWindow::DPMouseButtonUp( const MouseEvent& rMEvt )
+{
+ bDPMouse = FALSE;
+ ReleaseMouse();
+
+ DPTestMouse( rMEvt, FALSE );
+ SetPointer( Pointer( POINTER_ARROW ) );
+}
+
+// -----------------------------------------------------------------------
+
+void ScGridWindow::UpdateDragRect( BOOL bShowRange, const Rectangle& rPosRect )
+{
+ USHORT nStartX = ( rPosRect.Left() >= 0 ) ? rPosRect.Left() : USHRT_MAX;
+ USHORT nStartY = ( rPosRect.Top() >= 0 ) ? rPosRect.Top() : USHRT_MAX;
+ USHORT nEndX = ( rPosRect.Right() >= 0 ) ? rPosRect.Right() : USHRT_MAX;
+ USHORT nEndY = ( rPosRect.Bottom() >= 0 ) ? rPosRect.Bottom() : USHRT_MAX;
+
+ if ( bShowRange == bDragRect && nDragStartX == nStartX && nDragEndX == nEndX &&
+ nDragStartY == nStartY && nDragEndY == nEndY )
+ {
+ return; // everything unchanged
+ }
+
+ if ( bDragRect )
+ DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, FALSE );
+ if ( bShowRange )
+ {
+ nDragStartX = nStartX;
+ nDragStartY = nStartY;
+ nDragEndX = nEndX;
+ nDragEndY = nEndY;
+ bDragRect = TRUE;
+ DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, FALSE );
+ }
+ else
+ bDragRect = FALSE;
+}
+
+// -----------------------------------------------------------------------
+
+// Page-Break-Modus
+
+USHORT ScGridWindow::HitPageBreak( const Point& rMouse, ScRange* pSource,
+ USHORT* pBreak, USHORT* pPrev )
+{
+ USHORT nFound = SC_PD_NONE; // 0
+ ScRange aSource;
+ USHORT nBreak = 0;
+ USHORT nPrev = 0;
+
+ ScPageBreakData* pPageData = pViewData->GetView()->GetPageBreakData();
+ if ( pPageData )
+ {
+ BOOL bHori = FALSE;
+ BOOL bVert = FALSE;
+ USHORT nHitX, nHitY;
+
+ long nMouseX = rMouse.X();
+ long nMouseY = rMouse.Y();
+ short nPosX, nPosY;
+ pViewData->GetPosFromPixel( nMouseX, nMouseY, eWhich, nPosX, nPosY );
+ Point aTL = pViewData->GetScrPos( nPosX, nPosY, eWhich );
+ Point aBR = pViewData->GetScrPos( nPosX+1, nPosY+1, eWhich );
+
+ // Horizontal mehr Toleranz als vertikal, weil mehr Platz ist
+ if ( nMouseX <= aTL.X() + 4 )
+ {
+ bHori = TRUE;
+ nHitX = nPosX;
+ }
+ else if ( nMouseX >= aBR.X() - 6 )
+ {
+ bHori = TRUE;
+ nHitX = nPosX+1; // linker Rand der naechsten Zelle
+ }
+ if ( nMouseY <= aTL.Y() + 2 )
+ {
+ bVert = TRUE;
+ nHitY = nPosY;
+ }
+ else if ( nMouseY >= aBR.Y() - 4 )
+ {
+ bVert = TRUE;
+ nHitY = nPosY+1; // oberer Rand der naechsten Zelle
+ }
+
+ if ( bHori || bVert )
+ {
+ USHORT nCount = pPageData->GetCount();
+ for (USHORT nPos=0; nPos<nCount && !nFound; nPos++)
+ {
+ ScPrintRangeData& rData = pPageData->GetData(nPos);
+ ScRange aRange = rData.GetPrintRange();
+ BOOL bLHit = ( bHori && nHitX == aRange.aStart.Col() );
+ BOOL bRHit = ( bHori && nHitX == aRange.aEnd.Col() + 1 );
+ BOOL bTHit = ( bVert && nHitY == aRange.aStart.Row() );
+ BOOL bBHit = ( bVert && nHitY == aRange.aEnd.Row() + 1 );
+ BOOL bInsideH = ( nPosX >= aRange.aStart.Col() && nPosX <= aRange.aEnd.Col() );
+ BOOL bInsideV = ( nPosY >= aRange.aStart.Row() && nPosY <= aRange.aEnd.Row() );
+
+ if ( bLHit )
+ {
+ if ( bTHit )
+ nFound = SC_PD_RANGE_TL;
+ else if ( bBHit )
+ nFound = SC_PD_RANGE_BL;
+ else if ( bInsideV )
+ nFound = SC_PD_RANGE_L;
+ }
+ else if ( bRHit )
+ {
+ if ( bTHit )
+ nFound = SC_PD_RANGE_TR;
+ else if ( bBHit )
+ nFound = SC_PD_RANGE_BR;
+ else if ( bInsideV )
+ nFound = SC_PD_RANGE_R;
+ }
+ else if ( bTHit && bInsideH )
+ nFound = SC_PD_RANGE_T;
+ else if ( bBHit && bInsideH )
+ nFound = SC_PD_RANGE_B;
+ if (nFound)
+ aSource = aRange;
+
+ // Umbrueche
+
+ if ( bVert && bInsideH && !nFound )
+ {
+ USHORT nRowCount = rData.GetPagesY();
+ const USHORT* pRowEnd = rData.GetPageEndY();
+ for (USHORT nRowPos=0; nRowPos+1<nRowCount; nRowPos++)
+ if ( pRowEnd[nRowPos]+1 == nHitY )
+ {
+ nFound = SC_PD_BREAK_V;
+ aSource = aRange;
+ nBreak = nHitY;
+ if ( nRowPos )
+ nPrev = pRowEnd[nRowPos-1]+1;
+ else
+ nPrev = aRange.aStart.Row();
+ }
+ }
+ if ( bHori && bInsideV && !nFound )
+ {
+ USHORT nColCount = rData.GetPagesX();
+ const USHORT* pColEnd = rData.GetPageEndX();
+ for (USHORT nColPos=0; nColPos+1<nColCount; nColPos++)
+ if ( pColEnd[nColPos]+1 == nHitX )
+ {
+ nFound = SC_PD_BREAK_H;
+ aSource = aRange;
+ nBreak = nHitX;
+ if ( nColPos )
+ nPrev = pColEnd[nColPos-1]+1;
+ else
+ nPrev = aRange.aStart.Col();
+ }
+ }
+ }
+ }
+ }
+
+ if (pSource)
+ *pSource = aSource; // Druckbereich
+ if (pBreak)
+ *pBreak = nBreak; // X/Y Position des verchobenen Seitenumbruchs
+ if (pPrev)
+ *pPrev = nPrev; // X/Y Anfang der Seite, die am Umbruch zuende ist
+ return nFound;
+}
+
+void ScGridWindow::PagebreakMove( const MouseEvent& rMEvt, BOOL bUp )
+{
+ //! Scrolling und Umschalten mit RFMouseMove zusammenfassen !
+ //! (Weginvertieren vor dem Scrolling ist anders)
+
+ // Scrolling
+
+ BOOL bTimer = FALSE;
+ Point aPos = rMEvt.GetPosPixel();
+ short nDx = 0;
+ short nDy = 0;
+ if ( aPos.X() < 0 ) nDx = -1;
+ if ( aPos.Y() < 0 ) nDy = -1;
+ Size aSize = GetOutputSizePixel();
+ if ( aPos.X() >= aSize.Width() )
+ nDx = 1;
+ if ( aPos.Y() >= aSize.Height() )
+ nDy = 1;
+ if ( nDx || nDy )
+ {
+ if ( bPagebreakDrawn ) // weginvertieren
+ {
+ DrawDragRect( aPagebreakDrag.aStart.Col(), aPagebreakDrag.aStart.Row(),
+ aPagebreakDrag.aEnd.Col(), aPagebreakDrag.aEnd.Row(), FALSE );
+ bPagebreakDrawn = FALSE;
+ }
+
+ if ( nDx ) pViewData->GetView()->ScrollX( nDx, WhichH(eWhich) );
+ if ( nDy ) pViewData->GetView()->ScrollY( nDy, WhichV(eWhich) );
+ bTimer = TRUE;
+ }
+
+ // Umschalten bei Fixierung (damit Scrolling funktioniert)
+
+ if ( eWhich == pViewData->GetActivePart() ) //??
+ {
+ if ( pViewData->GetHSplitMode() == SC_SPLIT_FIX )
+ if ( nDx > 0 )
+ {
+ if ( eWhich == SC_SPLIT_TOPLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_TOPRIGHT );
+ else if ( eWhich == SC_SPLIT_BOTTOMLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMRIGHT );
+ }
+
+ if ( pViewData->GetVSplitMode() == SC_SPLIT_FIX )
+ if ( nDy > 0 )
+ {
+ if ( eWhich == SC_SPLIT_TOPLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMLEFT );
+ else if ( eWhich == SC_SPLIT_TOPRIGHT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMRIGHT );
+ }
+ }
+
+ // ab hier neu
+
+ // gesucht wird eine Position zwischen den Zellen (vor nPosX / nPosY)
+ short nPosX, nPosY;
+ pViewData->GetPosFromPixel( aPos.X(), aPos.Y(), eWhich, nPosX, nPosY );
+ BOOL bLeft, bTop;
+ pViewData->GetMouseQuadrant( aPos, eWhich, nPosX, nPosY, bLeft, bTop );
+ if ( !bLeft ) ++nPosX;
+ if ( !bTop ) ++nPosY;
+
+ BOOL bBreak = ( nPagebreakMouse == SC_PD_BREAK_H || nPagebreakMouse == SC_PD_BREAK_V );
+ BOOL bHide = FALSE;
+ BOOL bToEnd = FALSE;
+ ScRange aDrawRange = aPagebreakSource;
+ if ( bBreak )
+ {
+ if ( nPagebreakMouse == SC_PD_BREAK_H )
+ {
+ if ( nPosX > aPagebreakSource.aStart.Col() &&
+ nPosX <= aPagebreakSource.aEnd.Col() + 1 ) // ans Ende ist auch erlaubt
+ {
+ bToEnd = ( nPosX == aPagebreakSource.aEnd.Col() + 1 );
+ aDrawRange.aStart.SetCol( nPosX );
+ aDrawRange.aEnd.SetCol( nPosX - 1 );
+ }
+ else
+ bHide = TRUE;
+ }
+ else
+ {
+ if ( nPosY > aPagebreakSource.aStart.Row() &&
+ nPosY <= aPagebreakSource.aEnd.Row() + 1 ) // ans Ende ist auch erlaubt
+ {
+ bToEnd = ( nPosY == aPagebreakSource.aEnd.Row() + 1 );
+ aDrawRange.aStart.SetRow( nPosY );
+ aDrawRange.aEnd.SetRow( nPosY - 1 );
+ }
+ else
+ bHide = TRUE;
+ }
+ }
+ else
+ {
+ if ( nPagebreakMouse & SC_PD_RANGE_L )
+ aDrawRange.aStart.SetCol( nPosX );
+ if ( nPagebreakMouse & SC_PD_RANGE_T )
+ aDrawRange.aStart.SetRow( nPosY );
+ if ( nPagebreakMouse & SC_PD_RANGE_R )
+ {
+ if ( nPosX > 0 )
+ aDrawRange.aEnd.SetCol( nPosX-1 );
+ else
+ bHide = TRUE;
+ }
+ if ( nPagebreakMouse & SC_PD_RANGE_B )
+ {
+ if ( nPosY > 0 )
+ aDrawRange.aEnd.SetRow( nPosY-1 );
+ else
+ bHide = TRUE;
+ }
+ if ( aDrawRange.aStart.Col() > aDrawRange.aEnd.Col() ||
+ aDrawRange.aStart.Row() > aDrawRange.aEnd.Row() )
+ bHide = TRUE;
+ }
+
+ if ( !bPagebreakDrawn || bUp || aDrawRange != aPagebreakDrag )
+ {
+ // zeichnen...
+
+ if ( bPagebreakDrawn )
+ {
+ // weginvertieren
+ DrawDragRect( aPagebreakDrag.aStart.Col(), aPagebreakDrag.aStart.Row(),
+ aPagebreakDrag.aEnd.Col(), aPagebreakDrag.aEnd.Row(), FALSE );
+ bPagebreakDrawn = FALSE;
+ }
+ aPagebreakDrag = aDrawRange;
+ if ( !bUp && !bHide )
+ {
+ // hininvertieren
+ DrawDragRect( aPagebreakDrag.aStart.Col(), aPagebreakDrag.aStart.Row(),
+ aPagebreakDrag.aEnd.Col(), aPagebreakDrag.aEnd.Row(), FALSE );
+ bPagebreakDrawn = TRUE;
+ }
+ }
+
+ // bei ButtonUp die Aenderung ausfuehren
+
+ if ( bUp )
+ {
+ ScViewFunc* pViewFunc = pViewData->GetView();
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+
+ if ( bBreak )
+ {
+ BOOL bColumn = ( nPagebreakMouse == SC_PD_BREAK_H );
+ USHORT nNew = bColumn ? nPosX : nPosY;
+ if ( nNew != nPagebreakBreak )
+ {
+ String aUndo = ScGlobal::GetRscString( STR_UNDO_DRAG_BREAK );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo );
+
+ BOOL bGrow = !bHide && nNew > nPagebreakBreak;
+ if ( bColumn )
+ {
+ if ( pDoc->GetColFlags( nPagebreakBreak, nTab ) & CR_MANUALBREAK )
+ {
+ ScAddress aOldAddr( nPagebreakBreak, nPosY, nTab );
+ pViewFunc->DeletePageBreak( TRUE, TRUE, &aOldAddr, FALSE );
+ }
+ if ( !bHide && !bToEnd ) // am Ende nicht
+ {
+ ScAddress aNewAddr( nNew, nPosY, nTab );
+ pViewFunc->InsertPageBreak( TRUE, TRUE, &aNewAddr, FALSE );
+ }
+ if ( bGrow )
+ {
+ // vorigen Break auf hart, und Skalierung aendern
+ if ( nPagebreakPrev > aPagebreakSource.aStart.Col() &&
+ !(pDoc->GetColFlags( nPagebreakPrev, nTab ) & CR_MANUALBREAK) )
+ {
+ ScAddress aPrev( nPagebreakPrev, nPosY, nTab );
+ pViewFunc->InsertPageBreak( TRUE, TRUE, &aPrev, FALSE );
+ }
+
+ if (!pDocSh->AdjustPrintZoom( ScRange(
+ nPagebreakPrev,0,nTab, nNew-1,0,nTab ) ))
+ bGrow = FALSE;
+ }
+ }
+ else
+ {
+ if ( pDoc->GetRowFlags( nPagebreakBreak, nTab ) & CR_MANUALBREAK )
+ {
+ ScAddress aOldAddr( nPosX, nPagebreakBreak, nTab );
+ pViewFunc->DeletePageBreak( FALSE, TRUE, &aOldAddr, FALSE );
+ }
+ if ( !bHide && !bToEnd ) // am Ende nicht
+ {
+ ScAddress aNewAddr( nPosX, nNew, nTab );
+ pViewFunc->InsertPageBreak( FALSE, TRUE, &aNewAddr, FALSE );
+ }
+ if ( bGrow )
+ {
+ // vorigen Break auf hart, und Skalierung aendern
+ if ( nPagebreakPrev > aPagebreakSource.aStart.Row() &&
+ !(pDoc->GetRowFlags( nPagebreakPrev, nTab ) & CR_MANUALBREAK) )
+ {
+ ScAddress aPrev( nPosX, nPagebreakPrev, nTab );
+ pViewFunc->InsertPageBreak( FALSE, TRUE, &aPrev, FALSE );
+ }
+
+ if (!pDocSh->AdjustPrintZoom( ScRange(
+ 0,nPagebreakPrev,nTab, 0,nNew-1,nTab ) ))
+ bGrow = FALSE;
+ }
+ }
+
+ pDocSh->GetUndoManager()->LeaveListAction();
+
+ if (!bGrow) // sonst in AdjustPrintZoom schon passiert
+ {
+ pViewFunc->UpdatePageBreakData( TRUE );
+ pDocSh->SetDocumentModified();
+ }
+ }
+ }
+ else if ( bHide || aPagebreakDrag != aPagebreakSource )
+ {
+ // Druckbereich setzen
+
+ String aNewRanges;
+ USHORT nOldCount = pDoc->GetPrintRangeCount( nTab );
+ if ( nOldCount )
+ {
+ for (USHORT nPos=0; nPos<nOldCount; nPos++)
+ {
+ const ScRange* pOld = pDoc->GetPrintRange( nTab, nPos );
+ if ( pOld )
+ {
+ String aTemp;
+ if ( *pOld != aPagebreakSource )
+ pOld->Format( aTemp, SCA_VALID );
+ else if ( !bHide )
+ aPagebreakDrag.Format( aTemp, SCA_VALID );
+ if (aTemp.Len())
+ {
+ if ( aNewRanges.Len() )
+ aNewRanges += ';';
+ aNewRanges += aTemp;
+ }
+ }
+ }
+ }
+ else if (!bHide)
+ aPagebreakDrag.Format( aNewRanges, SCA_VALID );
+
+ pViewFunc->SetPrintRanges( &aNewRanges, NULL, NULL, FALSE );
+ }
+ }
+
+ // Timer fuer Scrolling
+
+ if (bTimer && !bUp)
+ pViewData->GetView()->SetTimer( this, rMEvt ); // Event wiederholen
+ else
+ pViewData->GetView()->ResetTimer();
+}
+
+
+
+
diff --git a/sc/source/ui/view/gridwin3.cxx b/sc/source/ui/view/gridwin3.cxx
new file mode 100644
index 000000000000..835cf4ca0757
--- /dev/null
+++ b/sc/source/ui/view/gridwin3.cxx
@@ -0,0 +1,500 @@
+/*************************************************************************
+ *
+ * $RCSfile: gridwin3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/svdoutl.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdpagv.hxx>
+#include <svx/sizeitem.hxx>
+#include <sfx2/bindings.hxx>
+#include <svtools/ptitem.hxx>
+
+#include "tabvwsh.hxx"
+#include "gridwin.hxx"
+#include "dbfunc.hxx"
+#include "viewdata.hxx"
+#include "output.hxx"
+#include "drawview.hxx"
+#include "fupoor.hxx"
+
+#include "drawutil.hxx"
+#include "document.hxx"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+// -----------------------------------------------------------------------
+
+
+BOOL ScGridWindow::DrawMouseButtonDown(const MouseEvent& rMEvt)
+{
+ BOOL bRet = FALSE;
+ FuPoor* pDraw = pViewData->GetView()->GetDrawFuncPtr();
+ if (pDraw && !pViewData->IsRefMode())
+ {
+ pDraw->SetWindow( this );
+ Point aLogicPos = PixelToLogic(rMEvt.GetPosPixel());
+ if ( pDraw->IsDetectiveHit( aLogicPos ) )
+ {
+ // auf Detektiv-Pfeilen gar nichts (Doppelklick wird bei ButtonUp ausgewertet)
+ bRet = TRUE;
+ }
+ else
+ {
+ bRet = pDraw->MouseButtonDown( rMEvt );
+ if ( bRet )
+ UpdateStatusPosSize();
+ }
+ }
+
+ // bei rechter Taste Draw-Aktion abbrechen
+
+ ScDrawView* pDrView = pViewData->GetScDrawView();
+ if ( pDrView && !rMEvt.IsLeft() && !bRet )
+ {
+ pDrView->BrkAction();
+ bRet = TRUE;
+ }
+ return bRet;
+}
+
+BOOL ScGridWindow::DrawMouseButtonUp(const MouseEvent& rMEvt)
+{
+ BOOL bRet = FALSE;
+ FuPoor* pDraw = pViewData->GetView()->GetDrawFuncPtr();
+ if (pDraw && !pViewData->IsRefMode())
+ {
+ pDraw->SetWindow( this );
+ bRet = pDraw->MouseButtonUp( rMEvt );
+ }
+
+ return bRet;
+}
+
+BOOL ScGridWindow::DrawMouseMove(const MouseEvent& rMEvt)
+{
+ FuPoor* pDraw = pViewData->GetView()->GetDrawFuncPtr();
+ if (pDraw && !pViewData->IsRefMode())
+ {
+ pDraw->SetWindow( this );
+ BOOL bRet = pDraw->MouseMove( rMEvt );
+ if ( bRet )
+ UpdateStatusPosSize();
+ return bRet;
+ }
+ else
+ {
+ SetPointer( Pointer( POINTER_ARROW ) );
+ return FALSE;
+ }
+}
+
+void ScGridWindow::DrawEndAction()
+{
+ ScDrawView* pDrView = pViewData->GetScDrawView();
+ if ( pDrView && pDrView->IsAction() )
+ pDrView->BrkAction();
+
+ FuPoor* pDraw = pViewData->GetView()->GetDrawFuncPtr();
+ if (pDraw)
+ pDraw->StopDragTimer();
+
+ // ReleaseMouse beim Aufruf
+}
+
+BOOL ScGridWindow::DrawCommand(const CommandEvent& rCEvt)
+{
+ ScDrawView* pDrView = pViewData->GetScDrawView();
+ FuPoor* pDraw = pViewData->GetView()->GetDrawFuncPtr();
+ if (pDrView && pDraw && !pViewData->IsRefMode())
+ {
+ pDraw->SetWindow( this );
+ BYTE nUsed = pDraw->Command( rCEvt );
+ if( nUsed == SC_CMD_USED )
+ nButtonDown = 0; // MouseButtonUp wird verschluckt...
+ if( nUsed || pDrView->IsAction() )
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+BOOL ScGridWindow::DrawKeyInput(const KeyEvent& rKEvt)
+{
+ ScDrawView* pDrView = pViewData->GetScDrawView();
+ FuPoor* pDraw = pViewData->GetView()->GetDrawFuncPtr();
+ if (pDrView && pDraw && !pViewData->IsRefMode())
+ {
+ pDraw->SetWindow( this );
+ BOOL bOldMarked = pDrView->HasMarkedObj();
+ if (pDraw->KeyInput( rKEvt ))
+ {
+ BOOL bUsed = TRUE;
+ BOOL bNewMarked = pDrView->HasMarkedObj();
+ if ( !pViewData->GetView()->IsDrawSelMode() )
+ if ( !bNewMarked )
+ {
+ pViewData->GetViewShell()->SetDrawShell( FALSE );
+ if ( !bOldMarked &&
+ rKEvt.GetKeyCode().GetCode() == KEY_DELETE )
+ bUsed = FALSE; // nichts geloescht
+ }
+ return bUsed;
+ }
+ }
+
+ return FALSE;
+}
+
+void ScGridWindow::DrawRedraw( ScOutputData& rOutputData, const Rectangle& rDrawingRect,
+ ScUpdateMode eMode, ULONG nLayer )
+{
+ //! eMode auswerten !!!
+
+ USHORT nObjectFlags = 0;
+ const ScViewOptions& rOpts = pViewData->GetOptions();
+ if ( rOpts.GetObjMode( VOBJ_TYPE_OLE ) == VOBJ_MODE_SHOW )
+ nObjectFlags |= SC_OBJECTS_OLE;
+ if ( rOpts.GetObjMode( VOBJ_TYPE_CHART ) == VOBJ_MODE_SHOW )
+ nObjectFlags |= SC_OBJECTS_CHARTS;
+ if ( rOpts.GetObjMode( VOBJ_TYPE_DRAW ) == VOBJ_MODE_SHOW )
+ nObjectFlags |= SC_OBJECTS_DRAWING;
+
+ USHORT nDummyFlags = 0;
+ if ( rOpts.GetObjMode( VOBJ_TYPE_OLE ) == VOBJ_MODE_DUMMY )
+ nDummyFlags |= SC_OBJECTS_OLE;
+ if ( rOpts.GetObjMode( VOBJ_TYPE_CHART ) == VOBJ_MODE_DUMMY )
+ nDummyFlags |= SC_OBJECTS_CHARTS;
+ if ( rOpts.GetObjMode( VOBJ_TYPE_DRAW ) == VOBJ_MODE_DUMMY )
+ nDummyFlags |= SC_OBJECTS_DRAWING;
+
+ if (nObjectFlags || nDummyFlags)
+ {
+ if ( eMode == SC_UPDATE_CHANGED )
+ rOutputData.DrawingSingle( (USHORT) nLayer, nObjectFlags, nDummyFlags );
+ else
+ rOutputData.DrawSelectiveObjects( (USHORT) nLayer, rDrawingRect,
+ nObjectFlags, nDummyFlags );
+ }
+}
+
+void ScGridWindow::DrawSdrGrid( const Rectangle& rDrawingRect )
+{
+ // Draw-Gitterlinien
+
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ if ( pDrView && pDrView->IsGridVisible() )
+ {
+ SdrPageView* pPV = pDrView->GetPageViewPvNum(0);
+ DBG_ASSERT(pPV, "keine PageView");
+ if (pPV)
+ {
+ SetLineColor(COL_GRAY);
+
+ pPV->DrawGrid( *this, rDrawingRect );
+ }
+ }
+}
+
+MapMode ScGridWindow::GetDrawMapMode( BOOL bForce )
+{
+ MapMode aDrawMode = pViewData->GetLogicMode();
+
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ if ( pDrView || bForce )
+ {
+ Fraction aScaleX;
+ Fraction aScaleY;
+ if (pDrView)
+ pDrView->GetScale( aScaleX, aScaleY );
+ else
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nEndCol = 0;
+ USHORT nEndRow = 0;
+ pDoc->GetTableArea( nTab, nEndCol, nEndRow );
+ if (nEndCol<20) nEndCol = 20;
+ if (nEndRow<20) nEndRow = 20;
+ ScDrawUtil::CalcScale( pDoc, nTab, 0,0, nEndCol,nEndRow, this,
+ pViewData->GetZoomX(),pViewData->GetZoomY(),
+ pViewData->GetPPTX(),pViewData->GetPPTY(),
+ aScaleX,aScaleY );
+ }
+ aDrawMode.SetScaleX(aScaleX);
+ aDrawMode.SetScaleY(aScaleY);
+ }
+ aDrawMode.SetOrigin(Point());
+ aDrawMode.SetOrigin( PixelToLogic( pViewData->GetPixPos(eWhich), aDrawMode ) );
+
+ return aDrawMode;
+}
+
+BOOL ScGridWindow::DrawBeforeScroll()
+{
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+
+ BOOL bXor = FALSE;
+ if (pDrView)
+ {
+ bXor=pDrView->IsShownXorVisible(this);
+ if (bXor) pDrView->HideShownXor(this);
+ }
+ return bXor;
+}
+
+void ScGridWindow::DrawAfterScroll(BOOL bVal)
+{
+ Update(); // immer, damit das Verhalten mit/ohne DrawingLayer gleich ist
+
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ if (pDrView)
+ {
+ if (bVal)
+ pDrView->ShowShownXor(this);
+
+ OutlinerView* pOlView = pDrView->GetTextEditOutlinerView();
+ if (pOlView && pOlView->GetWindow() == this)
+ pOlView->ShowCursor(FALSE); // ist beim Scrollen weggekommen
+ }
+}
+
+void ScGridWindow::DrawMarks()
+{
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ if (pDrView)
+ pDrView->DrawMarks(this);
+}
+
+BOOL ScGridWindow::NeedDrawMarks()
+{
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ return pDrView && pDrView->IsMarkHdlShown() && pDrView->HasMarkedObj();
+}
+
+void ScGridWindow::CreateAnchorHandle(SdrHdlList& rHdl, const ScAddress& rAddress)
+{
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ if (pDrView)
+ {
+ const ScViewOptions& rOpts = pViewData->GetOptions();
+ if(rOpts.GetOption( VOPT_ANCHOR ))
+ {
+ Point aPos = pViewData->GetScrPos( rAddress.Col(), rAddress.Row(), eWhich, TRUE );
+ aPos = PixelToLogic(aPos);
+ rHdl.AddHdl(new SdrHdl(aPos ,HDL_ANCHOR));
+ }
+ }
+}
+
+void ScGridWindow::OutlinerViewPaint( const Rectangle& rRect )
+{
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ if (pDrView && pDrView->GetTextEditOutlinerView())
+ {
+ Outliner* pOut = pDrView->GetTextEditOutliner();
+ ULONG nViewCount = pOut ? pOut->GetViewCount() : 0;
+ for (ULONG nView=0; nView<nViewCount; nView++)
+ {
+ OutlinerView* pOlView = pOut->GetView(nView);
+
+ if (pOlView && pOlView->GetWindow() == this)
+ {
+ BOOL bFrame = FALSE;
+ Rectangle aEditRect = pOlView->GetOutputArea();
+ SdrObject* pEditObj = GetEditObject();
+ if (pEditObj && pEditObj->ISA(SdrTextObj))
+ {
+ SdrTextObj* pTextObj = (SdrTextObj*)pEditObj;
+ Rectangle aMinRect;
+ pTextObj->TakeTextEditArea(NULL,NULL,NULL,&aMinRect); // PageView Offset ist 0
+ aEditRect.Union(aMinRect);
+ bFrame = pTextObj->IsTextFrame();
+ }
+
+ if ( aEditRect.IsOver( rRect ) )
+ {
+ Rectangle aEffRect = rRect.GetIntersection( aEditRect );
+ if (bFrame)
+ {
+ // RedrawOneLayer mit dem Text-Rechteck zeichnet nur die Outliner-View
+ // und den Text-Rahmen (an den kommt man sonst von aussen nicht heran).
+
+ SdrPageView* pPV = pDrView->GetPageViewPvNum(0);
+ DBG_ASSERT(pPV, "keine PageView");
+ if (pPV)
+ {
+ SdrLayerID nLayer = pEditObj ? pEditObj->GetLayer() : SC_LAYER_FRONT;
+ pPV->RedrawOneLayer( nLayer, aEffRect, this );
+ }
+ }
+ else
+ {
+ SetFillColor( pOlView->GetBackgroundColor() );
+ SetLineColor();
+ DrawRect( aEffRect );
+ pOlView->Paint( aEffRect );
+ }
+ }
+ }
+ }
+ }
+}
+
+SdrObject* ScGridWindow::GetEditObject()
+{
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ if (pDrView)
+ {
+ OutlinerView* pOlView = pDrView->GetTextEditOutlinerView();
+ if (pOlView && pOlView->GetWindow() == this)
+ return pDrView->GetTextEditObject();
+ }
+
+ return NULL;
+}
+
+void ScGridWindow::UpdateStatusPosSize()
+{
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ if (!pDrView)
+ return; // sollte dann gar nicht gerufen werden
+
+ Point aPos = PixelToLogic(aCurMousePos);
+ pDrView->GetPageViewPvNum(0)->LogicToPagePos(aPos);
+
+ SfxItemSet aSet(pViewData->GetViewShell()->GetPool(), SID_ATTR_POSITION, SID_ATTR_SIZE);
+
+ // Position- und Groesse-Items
+ if ( pDrView->IsAction() )
+ {
+ Rectangle aRect;
+ pDrView->TakeActionRect( aRect );
+
+ if ( aRect.IsEmpty() )
+ aSet.Put( SfxPointItem(SID_ATTR_POSITION, aPos) );
+ else
+ {
+ pDrView->GetPageViewPvNum(0)->LogicToPagePos(aRect);
+ aSet.Put( SfxPointItem( SID_ATTR_POSITION, aRect.TopLeft() ) );
+ aSet.Put( SvxSizeItem( SID_ATTR_SIZE,
+ Size( aRect.Right() - aRect.Left(),
+ aRect.Bottom() - aRect.Top() ) ) );
+ }
+ }
+ else
+ {
+ aSet.Put( SfxPointItem(SID_ATTR_POSITION, aPos) );
+
+ if ( pDrView->HasMarkedObj() )
+ {
+ Rectangle aRect = pDrView->GetAllMarkedRect();
+ pDrView->GetPageViewPvNum(0)->LogicToPagePos(aRect);
+ aSet.Put( SvxSizeItem( SID_ATTR_SIZE,
+ Size( aRect.Right() - aRect.Left(),
+ aRect.Bottom() - aRect.Top()) ) );
+ }
+ else
+ aSet.Put( SvxSizeItem( SID_ATTR_SIZE, Size( 0, 0 ) ) );
+ }
+
+ SFX_BINDINGS().SetState(aSet);
+}
+
+BOOL ScGridWindow::DrawHasMarkedObj()
+{
+ ScDrawView* p = pViewData->GetScDrawView();
+ return p ? p->HasMarkedObj() : FALSE;
+}
+
+void ScGridWindow::DrawStartTimer()
+{
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ if (pDrView)
+ {
+ /* jetzt in DrawMarks
+ USHORT nWinNum = pDrView->FindWin(this);
+ if (nWinNum!=SDRVIEWWIN_NOTFOUND)
+ pDrView->AfterInitRedraw(nWinNum);
+ */
+
+ pDrView->PostPaint();
+ pDrView->RestartAfterPaintTimer();
+ }
+}
+
+void ScGridWindow::DrawMarkDropObj( SdrObject* pObj )
+{
+ ScDrawView* pDrView = pViewData->GetView()->GetScDrawView();
+ if (pDrView)
+ pDrView->MarkDropObj(pObj);
+}
+
+
+
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
new file mode 100644
index 000000000000..b15e9bf25825
--- /dev/null
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -0,0 +1,1573 @@
+/*************************************************************************
+ *
+ * $RCSfile: gridwin4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/editview.hxx>
+#include <so3/ipenv.hxx>
+
+#ifdef MAC
+#include <svx/brshitem.hxx>
+#endif
+
+#include "gridwin.hxx"
+#include "viewdata.hxx"
+#include "output.hxx"
+#include "document.hxx"
+#include "attrib.hxx"
+#include "patattr.hxx" // InvertSimple
+#include "dbcolect.hxx"
+#include "docoptio.hxx"
+#include "notemark.hxx"
+#include "dbfunc.hxx" // oder GetPageBreakData an die ViewData
+#include "scmod.hxx"
+#include "inputhdl.hxx"
+#include "rfindlst.hxx"
+#include "hiranges.hxx"
+#include "pagedata.hxx"
+#include "docpool.hxx"
+#include "globstr.hrc"
+#include "docsh.hxx" // oder GetSfxInPlaceObject
+#include "cbutton.hxx"
+#include "invmerge.hxx"
+
+//#include "tabvwsh.hxx" //! Test !!!!
+
+//------------------------------------------------------------------------
+
+void lcl_LimitRect( Rectangle& rRect, const Rectangle& rVisible )
+{
+ if ( rRect.Top() < rVisible.Top()-1 ) rRect.Top() = rVisible.Top()-1;
+// if ( rRect.Left() < rVisible.Left()-1 ) rRect.Left() = rVisible.Left()-1;
+ if ( rRect.Bottom() > rVisible.Bottom()+1 ) rRect.Bottom() = rVisible.Bottom()+1;
+// if ( rRect.Right() > rVisible.Right()+1 ) rRect.Right() = rVisible.Right()+1;
+
+ // #51122# auch wenn das inner-Rectangle nicht sichtbar ist, muss evtl.
+ // die Titelzeile gezeichnet werden, darum kein Rueckgabewert mehr.
+ // Wenn's weit daneben liegt, wird lcl_DrawOneFrame erst gar nicht gerufen.
+}
+
+void lcl_DrawOneFrame( OutputDevice* pDev, const Rectangle& rInnerPixel,
+ const String& rTitle, const Color& rColor, BOOL bTextBelow,
+ double nPPTX, double nPPTY, const Fraction& rZoomY,
+ ScDocument* pDoc, ScViewData* pButtonViewData )
+{
+ // pButtonViewData wird nur benutzt, um die Button-Groesse zu setzen,
+ // darf ansonsten NULL sein!
+
+ Rectangle aInner = rInnerPixel;
+ Rectangle aVisible( Point(0,0), pDev->GetOutputSizePixel() );
+ lcl_LimitRect( aInner, aVisible );
+
+ Rectangle aOuter = aInner;
+ long nHor = (long) ( SC_SCENARIO_HSPACE * nPPTX );
+ long nVer = (long) ( SC_SCENARIO_VSPACE * nPPTY );
+ aOuter.Left() -= nHor;
+ aOuter.Right() += nHor;
+ aOuter.Top() -= nVer;
+ aOuter.Bottom() += nVer;
+
+ Font aFont;
+ ((const ScPatternAttr&)pDoc->GetPool()->GetDefaultItem(ATTR_PATTERN)).
+ GetFont(aFont,pDev,&rZoomY);
+ aFont.SetAlign( ALIGN_TOP );
+ pDev->SetFont( aFont );
+
+ Size aTextSize( pDev->GetTextWidth( rTitle ), pDev->GetTextHeight() );
+
+ if ( bTextBelow )
+ aOuter.Bottom() += aTextSize.Height();
+ else
+ aOuter.Top() -= aTextSize.Height();
+
+ pDev->SetLineColor();
+ pDev->SetFillColor( rColor );
+ // links, oben, rechts, unten
+ pDev->DrawRect( Rectangle( aOuter.Left(), aOuter.Top(), aInner.Left(), aOuter.Bottom() ) );
+ pDev->DrawRect( Rectangle( aOuter.Left(), aOuter.Top(), aOuter.Right(), aInner.Top() ) );
+ pDev->DrawRect( Rectangle( aInner.Right(), aOuter.Top(), aOuter.Right(), aOuter.Bottom() ) );
+ pDev->DrawRect( Rectangle( aOuter.Left(), aInner.Bottom(), aOuter.Right(), aOuter.Bottom() ) );
+
+ long nButtonY = bTextBelow ? aInner.Bottom() : aOuter.Top();
+
+ ScDDComboBoxButton aComboButton((Window*)pDev);
+ aComboButton.SetOptSizePixel();
+ long nBWidth = ( aComboButton.GetSizePixel().Width() * rZoomY.GetNumerator() )
+ / rZoomY.GetDenominator();
+ long nBHeight = nVer + aTextSize.Height() + 1;
+ Size aButSize( nBWidth, nBHeight );
+ aComboButton.Draw( Point(aOuter.Right()-nBWidth+1, nButtonY), aButSize, Color( COL_BLACK ) );
+ if (pButtonViewData)
+ pButtonViewData->SetScenButSize( aButSize );
+
+ BOOL bWasClip = FALSE;
+ Region aOldClip;
+ BOOL bClip = ( aTextSize.Width() > aOuter.Right() - nBWidth - aInner.Left() );
+ if ( bClip )
+ {
+ if (pDev->IsClipRegion())
+ {
+ bWasClip = TRUE;
+ aOldClip = pDev->GetActiveClipRegion();
+ }
+ pDev->SetClipRegion( Rectangle( aInner.Left(), nButtonY + nVer/2,
+ aOuter.Right() - nBWidth, nButtonY + nVer/2 + aTextSize.Height() ) );
+ }
+
+ pDev->DrawText( Point( aInner.Left(), nButtonY + nVer/2 ), rTitle );
+
+ if ( bClip )
+ {
+ if ( bWasClip )
+ pDev->SetClipRegion(aOldClip);
+ else
+ pDev->SetClipRegion();
+ }
+
+ pDev->SetFillColor();
+ pDev->SetLineColor( COL_BLACK );
+ pDev->DrawRect( aInner );
+ pDev->DrawRect( aOuter );
+}
+
+void lcl_DrawScenarioFrames( OutputDevice* pDev, ScViewData* pViewData, ScSplitPos eWhich,
+ USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 )
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nTabCount = pDoc->GetTableCount();
+ if ( nTab+1<nTabCount && pDoc->IsScenario(nTab+1) && !pDoc->IsScenario(nTab) )
+ {
+ if ( nX1 ) --nX1;
+ if ( nY1>=2 ) nY1 -= 2; // Hack: Titelzeile beruehrt zwei Zellen
+ else if ( nY1 ) --nY1;
+ if ( nX2 < MAXCOL ) ++nX2;
+ if ( nY2 < MAXROW-1 ) nY2 += 2; // Hack: Titelzeile beruehrt zwei Zellen
+ else if ( nY2 < MAXROW ) ++nY2;
+ ScRange aViewRange( nX1,nY1,nTab, nX2,nY2,nTab );
+
+ //! Ranges an der Table cachen!!!!
+
+ USHORT i;
+ ScMarkData aMarks;
+ for (i=nTab+1; i<nTabCount && pDoc->IsScenario(i); i++)
+ pDoc->MarkScenario( i, nTab, aMarks, FALSE, SC_SCENARIO_SHOWFRAME );
+ ScRangeListRef xRanges = new ScRangeList;
+ aMarks.FillRangeListWithMarks( xRanges, FALSE );
+
+ USHORT nRangeCount = (USHORT)xRanges->Count();
+ for (i=0; i<nRangeCount; i++)
+ {
+ ScRange aRange = *xRanges->GetObject(i);
+ // Szenario-Rahmen immer dann auf zusammengefasste Zellen erweitern, wenn
+ // dadurch keine neuen nicht-ueberdeckten Zellen mit umrandet werden
+ pDoc->ExtendTotalMerge( aRange );
+
+ //! -> Repaint beim Zusammenfassen erweitern !!!
+
+ if ( aRange.Intersects( aViewRange ) ) //! Platz fuer Text/Button?
+ {
+ Point aStartPos = pViewData->GetScrPos(
+ aRange.aStart.Col(), aRange.aStart.Row(), eWhich, TRUE );
+ Point aEndPos = pViewData->GetScrPos(
+ aRange.aEnd.Col()+1, aRange.aEnd.Row()+1, eWhich, TRUE );
+ // auf dem Gitter:
+ aStartPos.X() -= 1;
+ aStartPos.Y() -= 1;
+ aEndPos.X() -= 1;
+ aEndPos.Y() -= 1;
+
+ BOOL bTextBelow = ( aRange.aStart.Row() == 0 );
+
+ String aCurrent;
+ Color aColor( COL_LIGHTGRAY );
+ for (USHORT nAct=nTab+1; nAct<nTabCount && pDoc->IsScenario(nAct); nAct++)
+ if ( pDoc->IsActiveScenario(nAct) && pDoc->HasScenarioRange(nAct,aRange) )
+ {
+ String aDummyComment;
+ USHORT nDummyFlags;
+ pDoc->GetName( nAct, aCurrent );
+ pDoc->GetScenarioData( nAct, aDummyComment, aColor, nDummyFlags );
+ }
+
+ if (!aCurrent.Len())
+ aCurrent = ScGlobal::GetRscString( STR_EMPTYDATA );
+
+ //! eigener Text "(keins)" statt "(leer)" ???
+
+ lcl_DrawOneFrame( pDev, Rectangle( aStartPos, aEndPos ),
+ aCurrent, aColor, bTextBelow,
+ pViewData->GetPPTX(), pViewData->GetPPTY(), pViewData->GetZoomY(),
+ pDoc, pViewData );
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+void lcl_DrawHighlight( ScOutputData& rOutputData, ScViewData* pViewData,
+ ScHighlightRanges& rHighlightRanges )
+{
+ USHORT nTab = pViewData->GetTabNo();
+ ULONG nCount = rHighlightRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScHighlightEntry* pEntry = rHighlightRanges.GetObject( i );
+ if (pEntry)
+ {
+ ScRange aRange = pEntry->aRef;
+ if ( nTab >= aRange.aStart.Tab() && nTab <= aRange.aEnd.Tab() )
+ {
+ rOutputData.DrawRefMark(
+ aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(),
+ pEntry->aColor, FALSE );
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+
+void ScGridWindow::DoInvertRect( const Rectangle& rPixel )
+{
+ Invert( PixelToLogic(rPixel) );
+
+ if ( rPixel == aInvertRect )
+ aInvertRect = Rectangle(); // aufheben
+ else
+ {
+ DBG_ASSERT( aInvertRect.IsEmpty(), "DoInvertRect nicht paarig" );
+
+ aInvertRect = rPixel; // neues Rechteck merken
+ }
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ScGridWindow::Paint( const Rectangle& rRect )
+{
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ SvInPlaceEnvironment* pEnv = pDocSh->GetIPEnv();
+ if (pEnv && pEnv->GetRectsChangedLockCount())
+ {
+ Invalidate(rRect);
+ return;
+ }
+
+ ScDocument* pDoc = pViewData->GetDocument();
+ if ( pDoc->IsInInterpreter() )
+ {
+ // via Reschedule, interpretierende Zellen nicht nochmal anstossen
+ // hier kein Invalidate, sonst kommt z.B. eine Error-Box nie an die Reihe
+ // (Bug 36381). Durch bNeedsRepaint wird spaeter alles nochmal gemalt.
+
+ if ( bNeedsRepaint )
+ {
+ //! Rechtecke zusammenfassen?
+ aRepaintPixel = Rectangle(); // mehrfach -> alles painten
+ }
+ else
+ {
+ bNeedsRepaint = TRUE;
+ aRepaintPixel = LogicToPixel(rRect); // nur betroffenen Bereich
+ }
+ return;
+ }
+
+ if (bIsInPaint)
+ return;
+
+ bIsInPaint = TRUE;
+
+ Rectangle aPixRect = LogicToPixel( rRect );
+
+ USHORT nX1 = pViewData->GetPosX(eHWhich);
+ USHORT nY1 = pViewData->GetPosY(eVWhich);
+
+ USHORT nTab = pViewData->GetTabNo();
+
+ double nPPTX = pViewData->GetPPTX();
+ double nPPTY = pViewData->GetPPTY();
+
+ long nScrX = (long) ( pDoc->GetColWidth( nX1, nTab ) * nPPTX );
+ while ( nScrX <= aPixRect.Left() && nX1 < MAXCOL )
+ {
+ ++nX1;
+ nScrX += (long) ( pDoc->GetColWidth( nX1, nTab ) * nPPTX );
+ }
+ USHORT nX2 = nX1;
+ while ( nScrX <= aPixRect.Right() && nX2 < MAXCOL )
+ {
+ ++nX2;
+ nScrX += (long) ( pDoc->GetColWidth( nX2, nTab ) * nPPTX );
+ }
+
+ long nScrY = (long) ( pDoc->GetRowHeight( nY1, nTab ) * nPPTY );
+ while ( nScrY <= aPixRect.Top() && nY1 < MAXROW )
+ {
+ ++nY1;
+ nScrY += (long) ( pDoc->GetRowHeight( nY1, nTab ) * nPPTY );
+ }
+ USHORT nY2 = nY1;
+ while ( nScrY <= aPixRect.Bottom() && nY2 < MAXROW )
+ {
+ ++nY2;
+ nScrY += (long) ( pDoc->GetRowHeight( nY2, nTab ) * nPPTY );
+ }
+
+ Draw( nX1,nY1,nX2,nY2, SC_UPDATE_MARKS ); // nicht weiterzeichnen
+
+ OutlinerViewPaint( rRect );
+
+ if (!aInvertRect.IsEmpty())
+ Invert( PixelToLogic(aInvertRect) ); // auf das Clipping verlassen...
+
+ bIsInPaint = FALSE;
+}
+
+//
+// Draw ----------------------------------------------------------------
+//
+
+void ScGridWindow::Draw( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2, ScUpdateMode eMode )
+{
+ BOOL bGridFirst = TRUE; //! entscheiden!!!
+
+ if (pViewData->IsMinimized())
+ return;
+
+ PutInOrder( nX1, nX2 );
+ PutInOrder( nY1, nY2 );
+ USHORT i;
+
+ DBG_ASSERT( nX2<=MAXCOL && nY2<=MAXROW, "GridWin Draw Bereich zu gross" );
+
+ USHORT nPosX = pViewData->GetPosX( eHWhich );
+ USHORT nPosY = pViewData->GetPosY( eVWhich );
+ if (nX2 < nPosX || nY2 < nPosY)
+ return; // unsichtbar
+ if (nX1 < nPosX) nX1 = nPosX;
+ if (nY1 < nPosY) nY1 = nPosY;
+
+ USHORT nXRight = nPosX + pViewData->VisibleCellsX(eHWhich);
+ if (nXRight > MAXCOL) nXRight = MAXCOL;
+ USHORT nYBottom = nPosY + pViewData->VisibleCellsY(eVWhich);
+ if (nYBottom > MAXROW) nYBottom = MAXROW;
+
+ if (nX1 > nXRight || nY1 > nYBottom)
+ return; // unsichtbar
+ if (nX2 > nXRight) nX2 = nXRight;
+ if (nY2 > nYBottom) nY2 = nYBottom;
+
+ if ( eMode != SC_UPDATE_MARKS )
+ if (nX2 < nXRight)
+ nX2 = nXRight; // zum Weiterzeichnen
+
+ // ab hier kein return mehr
+
+ ++nPaintCount; // merken, dass gemalt wird (wichtig beim Invertieren)
+
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+
+ pDoc->ExtendHidden( nX1, nY1, nX2, nY2, nTab );
+
+ Point aScrPos = pViewData->GetScrPos( nX1, nY1, eWhich );
+ USHORT nScrX = (USHORT) aScrPos.X();
+ USHORT nScrY = (USHORT) aScrPos.Y();
+
+ USHORT nCurX = pViewData->GetCurX();
+ USHORT nCurY = pViewData->GetCurY();
+ USHORT nCurEndX = nCurX;
+ USHORT nCurEndY = nCurY;
+ pDoc->ExtendMerge( nCurX, nCurY, nCurEndX, nCurEndY, nTab );
+ BOOL bCurVis = nCursorHideCount==0 &&
+ ( nCurEndX+1 >= nX1 && nCurX <= nX2+1 && nCurEndY+1 >= nY1 && nCurY <= nY2+1 );
+
+ // AutoFill-Anfasser
+ if ( !bCurVis && nCursorHideCount==0 && bAutoMarkVisible && aAutoMarkPos.Tab() == nTab &&
+ ( aAutoMarkPos.Col() != nCurX || aAutoMarkPos.Row() != nCurY ) )
+ {
+ USHORT nHdlX = aAutoMarkPos.Col();
+ USHORT nHdlY = aAutoMarkPos.Row();
+ pDoc->ExtendMerge( nHdlX, nHdlY, nHdlX, nHdlY, nTab );
+ bCurVis = ( nHdlX+1 >= nX1 && nHdlX <= nX2 && nHdlY+1 >= nY1 && nHdlY <= nY2 );
+ // links und oben ist nicht betroffen
+
+ //! AutoFill-Anfasser alleine (ohne Cursor) zeichnen ???
+ }
+
+ double nPPTX = pViewData->GetPPTX();
+ double nPPTY = pViewData->GetPPTY();
+
+ const ScViewOptions& rOpts = pViewData->GetOptions();
+ BOOL bFormulaMode = rOpts.GetOption( VOPT_FORMULAS );
+ BOOL bMarkClipped = rOpts.GetOption( VOPT_CLIPMARKS );
+
+ // Datenblock
+
+ RowInfo* pRowInfo = new RowInfo[ROWINFO_MAX];
+ USHORT nArrCount = pDoc->FillInfo( pRowInfo, nX1, nY1, nX2, nY2, nTab,
+ nPPTX, nPPTY, FALSE, bFormulaMode,
+ &pViewData->GetMarkData() );
+
+ //--------------------------------------------------------------------
+
+ Fraction aZoomX = pViewData->GetZoomX();
+ Fraction aZoomY = pViewData->GetZoomY();
+ ScOutputData aOutputData( this, OUTTYPE_WINDOW, pRowInfo, nArrCount, pDoc, nTab,
+ nScrX, nScrY, nX1, nY1, nX2, nY2, nPPTX, nPPTY,
+ &aZoomX, &aZoomY );
+
+ aOutputData.SetSyntaxMode ( pViewData->IsSyntaxMode() );
+ aOutputData.SetGridColor ( rOpts.GetGridColor() );
+ aOutputData.SetShowNullValues ( rOpts.GetOption( VOPT_NULLVALS ) );
+ aOutputData.SetShowFormulas ( bFormulaMode );
+ aOutputData.SetShowSpellErrors ( !rOpts.IsHideAutoSpell() &&
+ pDoc->GetDocOptions().IsAutoSpell() );
+ aOutputData.SetMarkClipped ( bMarkClipped );
+
+ aOutputData.SetEditObject( GetEditObject() );
+ aOutputData.SetViewShell( pViewData->GetViewShell() );
+
+ BOOL bGrid = rOpts.GetOption( VOPT_GRID );
+ BOOL bPage = rOpts.GetOption( VOPT_PAGEBREAKS );
+
+ if ( eMode == SC_UPDATE_CHANGED )
+ {
+ aOutputData.FindChanged();
+ aOutputData.SetSingleGrid(TRUE);
+ }
+
+ BOOL bPageMode = pViewData->IsPagebreakMode();
+ if (bPageMode) // nach FindChanged
+ {
+ // SetPagebreakMode initialisiert auch bPrinted Flags
+ aOutputData.SetPagebreakMode( pViewData->GetView()->GetPageBreakData() );
+ }
+
+ EditView* pEditView = NULL;
+ BOOL bEditMode = pViewData->HasEditView(eWhich);
+ if ( bEditMode && pViewData->GetRefTabNo() == nTab )
+ {
+ USHORT nEditCol;
+ USHORT nEditRow;
+ pViewData->GetEditView( eWhich, pEditView, nEditCol, nEditRow );
+ USHORT nEditEndCol = pViewData->GetEditEndCol();
+ USHORT nEditEndRow = pViewData->GetEditEndRow();
+
+ if ( nEditEndCol >= nX1 && nEditCol <= nX2 && nEditEndRow >= nY1 && nEditRow <= nY2 )
+ aOutputData.SetEditCell( nEditCol, nEditRow );
+ else
+ bEditMode = FALSE;
+
+ // nur Edit-Area zu zeichnen?
+ //! dann muss trotzdem noch der Rand / das Gitter gemalt werden!
+
+// if ( nEditCol <= nX1 && nEditEndCol >= nX2 && nEditRow <= nY1 && nEditEndRow >= nY2 )
+// bOnlyEdit = TRUE;
+ }
+
+ MapMode aDrawMode = GetDrawMapMode();
+ Rectangle aDrawingRect = PixelToLogic( Rectangle( Point( nScrX, nScrY ),
+ Size( aOutputData.GetScrW(), aOutputData.GetScrH() ) ),
+ aDrawMode );
+
+ if (bCurVis)
+ HideCursor();
+
+ if ( pDoc->HasBackgroundDraw( nTab, aDrawingRect ) )
+ {
+ SetMapMode(MAP_PIXEL);
+ aOutputData.DrawClear();
+
+ // Drawing Hintergrund
+
+ SetMapMode(aDrawMode);
+ DrawRedraw( aOutputData, aDrawingRect, eMode, SC_LAYER_BACK );
+ }
+ else
+ aOutputData.SetSolidBackground(TRUE);
+
+ SetMapMode(MAP_PIXEL);
+ aOutputData.DrawBackground();
+ if ( bGridFirst && ( bGrid || bPage ) )
+ aOutputData.DrawGrid( bGrid, bPage );
+ if ( bPageMode )
+ DrawPagePreview(nX1,nY1,nX2,nY2);
+ aOutputData.DrawShadow();
+ aOutputData.DrawFrame();
+ aOutputData.DrawStrings();
+
+ // Autofilter- und Pivot-Buttons
+
+ DrawButtons( nX1, nY1, nX2, nY2, pRowInfo, nArrCount ); // Pixel
+
+ // Notiz-Anzeiger
+
+ if ( rOpts.GetOption( VOPT_NOTES ) )
+ aOutputData.DrawNoteMarks();
+
+ // Edit-Zellen
+
+ SetMapMode(pViewData->GetLogicMode(eWhich));
+ aOutputData.DrawEdit(TRUE);
+
+ SetMapMode(MAP_PIXEL);
+ if ( !bGridFirst && ( bGrid || bPage ) )
+ {
+// SetMapMode(MAP_PIXEL);
+ aOutputData.DrawGrid( bGrid, bPage );
+ }
+ aOutputData.DrawClipMarks();
+
+ // Szenario / ChangeTracking muss auf jeden Fall nach DrawGrid sein, auch bei !bGridFirst
+
+ //! Test, ob ChangeTrack-Anzeige aktiv ist
+ //! Szenario-Rahmen per View-Optionen abschaltbar?
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ ScHighlightRanges* pHigh = pViewData->GetView()->GetHighlightRanges();
+ BOOL bHasScenario = ( nTab+1<nTabCount && pDoc->IsScenario(nTab+1) && !pDoc->IsScenario(nTab) );
+ BOOL bHasChange = ( pDoc->GetChangeTrack() != NULL );
+
+ if ( bHasChange || bHasScenario || pHigh != NULL )
+ {
+// SetMapMode(MAP_PIXEL);
+
+ //! SetChangedClip() mit DrawMarks() zusammenfassen?? (anderer MapMode!)
+
+ BOOL bAny = TRUE;
+ if (eMode == SC_UPDATE_CHANGED)
+ bAny = aOutputData.SetChangedClip();
+ if (bAny)
+ {
+ if ( bHasChange )
+ aOutputData.DrawChangeTrack();
+
+ if ( bHasScenario )
+ lcl_DrawScenarioFrames( this, pViewData, eWhich, nX1,nY1,nX2,nY2 );
+
+ if ( pHigh )
+ lcl_DrawHighlight( aOutputData, pViewData, *pHigh );
+
+ if (eMode == SC_UPDATE_CHANGED)
+ SetClipRegion();
+ }
+ }
+
+ // Drawing Vordergrund
+
+ SetMapMode(aDrawMode);
+ DrawRedraw( aOutputData, aDrawingRect, eMode, SC_LAYER_FRONT );
+ DrawRedraw( aOutputData, aDrawingRect, eMode, SC_LAYER_INTERN );
+ DrawRedraw( aOutputData, aDrawingRect, eMode, SC_LAYER_CONTROLS ); // als letztes
+ DrawSdrGrid( aDrawingRect );
+
+ if (!bIsInScroll) // Drawing Markierungen
+ {
+ BOOL bDraw = TRUE;
+ if (eMode == SC_UPDATE_CHANGED)
+ bDraw = NeedDrawMarks() && aOutputData.SetChangedClip();
+ if (bDraw)
+ {
+ DrawMarks();
+ if (eMode == SC_UPDATE_CHANGED)
+ SetClipRegion();
+ }
+ }
+
+ SetMapMode(MAP_PIXEL);
+ // InPlace Edit-View
+ //! gleich beim Zeichnen leer lassen !!!
+ if ( bEditMode && (pViewData->GetRefTabNo() == pViewData->GetTabNo()) )
+ {
+ USHORT nCol1 = pViewData->GetEditViewCol();
+ USHORT nRow1 = pViewData->GetEditViewRow();
+ USHORT nCol2 = pViewData->GetEditEndCol();
+ USHORT nRow2 = pViewData->GetEditEndRow();
+ SetLineColor();
+ SetFillColor( pEditView->GetBackgroundColor() );
+ Point aStart = pViewData->GetScrPos( nCol1, nRow1, eWhich );
+ Point aEnd = pViewData->GetScrPos( nCol2+1, nRow2+1, eWhich );
+ aEnd.X() -= 2; // Gitter nicht ueberschreiben
+ aEnd.Y() -= 2;
+ DrawRect( Rectangle( aStart,aEnd ) );
+
+ SetMapMode(pViewData->GetLogicMode());
+ pEditView->Paint( PixelToLogic( Rectangle( Point( nScrX, nScrY ),
+ Size( aOutputData.GetScrW(), aOutputData.GetScrH() ) ) ) );
+ SetMapMode(MAP_PIXEL);
+ }
+
+ if (pViewData->IsActive())
+ aOutputData.DrawMark( this );
+
+ if ( pViewData->IsRefMode() && nTab >= pViewData->GetRefStartZ() && nTab <= pViewData->GetRefEndZ() )
+ {
+ // Schraffur beim Loeschen per AutoFill
+ if ( pViewData->GetRefType() == SC_REFTYPE_FILL )
+ {
+ ScRange aRange;
+ if ( pViewData->GetDelMark( aRange ) )
+ {
+ if ( aRange.aStart.Col() < nX1 ) aRange.aStart.SetCol(nX1);
+ if ( aRange.aEnd.Col() > nX2 ) aRange.aEnd.SetCol(nX2);
+ if ( aRange.aStart.Row() < nY1 ) aRange.aStart.SetRow(nY1);
+ if ( aRange.aEnd.Row() > nY2 ) aRange.aEnd.SetRow(nY2);
+ if ( aRange.aStart.Col() <= aRange.aEnd.Col() &&
+ aRange.aStart.Row() <= aRange.aEnd.Row() )
+ {
+ Point aStart = pViewData->GetScrPos( aRange.aStart.Col(),
+ aRange.aStart.Row(), eWhich );
+ Point aEnd = pViewData->GetScrPos( aRange.aEnd.Col()+1,
+ aRange.aEnd.Row()+1, eWhich );
+ aEnd.X() -= 1;
+ aEnd.Y() -= 1;
+
+ // Markierung aufheben - roter Rahmen bleibt stehen
+ Rectangle aRect( aStart,aEnd );
+ Invert( aRect, INVERT_HIGHLIGHT );
+
+ //! Delete-Bereich extra kennzeichnen?!?!?
+ }
+ }
+ }
+
+ aOutputData.DrawRefMark( pViewData->GetRefStartX(), pViewData->GetRefStartY(),
+ pViewData->GetRefEndX(), pViewData->GetRefEndY(),
+ Color(COL_LIGHTRED), FALSE );
+ }
+
+ // Range-Finder
+
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl( pViewData->GetViewShell() );
+ if (pHdl)
+ {
+ ScRangeFindList* pRangeFinder = pHdl->GetRangeFindList();
+ if ( pRangeFinder && !pRangeFinder->IsHidden() &&
+ pRangeFinder->GetDocName() == pDocSh->GetTitle() )
+ {
+ USHORT nCount = (USHORT)pRangeFinder->Count();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ ScRangeFindData* pData = pRangeFinder->GetObject(i);
+ if (pData)
+ {
+ ScRange aRef = pData->aRef;
+ aRef.Justify();
+ if ( aRef.aStart.Tab() >= nTab && aRef.aEnd.Tab() <= nTab )
+ aOutputData.DrawRefMark( aRef.aStart.Col(), aRef.aStart.Row(),
+ aRef.aEnd.Col(), aRef.aEnd.Row(),
+ Color( ScRangeFindList::GetColorName( i ) ),
+ TRUE );
+ }
+ }
+ }
+ }
+
+ // Rand (Pixel)
+
+ if ( nX2==MAXCOL || nY2==MAXROW )
+ {
+ Rectangle aPixRect = Rectangle( Point(), GetOutputSizePixel() );
+ SetFillColor( COL_LIGHTGRAY );
+ SetLineColor();
+ if ( nX2==MAXCOL )
+ {
+ Rectangle aDrawRect( aPixRect );
+ aDrawRect.Left() = nScrX + aOutputData.GetScrW();
+ if (aDrawRect.Right() >= aDrawRect.Left())
+ DrawRect( aDrawRect );
+ }
+ if ( nY2==MAXROW )
+ {
+ Rectangle aDrawRect( aPixRect );
+ aDrawRect.Top() = nScrY + aOutputData.GetScrH();
+ if ( nX2==MAXCOL )
+ aDrawRect.Right() = nScrX + aOutputData.GetScrW() - 1; // Ecke nicht doppelt
+ if (aDrawRect.Bottom() >= aDrawRect.Top())
+ DrawRect( aDrawRect );
+ }
+ }
+
+ if (bCurVis)
+ ShowCursor();
+
+ for (i=0; i<nArrCount; i++)
+ delete[] pRowInfo[i].pCellInfo;
+ delete[] pRowInfo;
+
+ if (pViewData->HasEditView(eWhich))
+ SetMapMode(pViewData->GetLogicMode());
+ else
+ SetMapMode(aDrawMode);
+
+ if ( pNoteMarker )
+ pNoteMarker->Draw(); // ueber den Cursor, im Drawing-MapMode
+
+ DrawStartTimer(); // fuer bunte Handles ohne System-Clipping
+
+ //
+ // Wenn waehrend des Paint etwas invertiert wurde (Selektion geaendert aus Basic-Macro),
+ // ist das jetzt durcheinandergekommen und es muss neu gemalt werden
+ //
+
+ DBG_ASSERT(nPaintCount, "nPaintCount falsch");
+ --nPaintCount;
+ if (!nPaintCount)
+ CheckNeedsRepaint();
+}
+
+void ScGridWindow::CheckNeedsRepaint()
+{
+ // called at the end of painting, and from timer after background text width calculation
+
+ if (bNeedsRepaint)
+ {
+ bNeedsRepaint = FALSE;
+ if (aRepaintPixel.IsEmpty())
+ Invalidate();
+ else
+ Invalidate(PixelToLogic(aRepaintPixel));
+ aRepaintPixel = Rectangle();
+ }
+}
+
+void ScGridWindow::DrawPagePreview( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 )
+{
+ ScPageBreakData* pPageData = pViewData->GetView()->GetPageBreakData();
+ if (pPageData)
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ Size aWinSize = GetOutputSizePixel();
+ Color aManual( COL_LIGHTBLUE );
+ Color aAutomatic( COL_BLUE );
+
+ Font aFont;
+ ((const ScPatternAttr&)pDoc->GetPool()->GetDefaultItem(ATTR_PATTERN)).GetFont(aFont);
+ aFont.SetColor( Color( COL_LIGHTGRAY ) );
+ // Groesse wird nach Bedarf eingestellt
+ String aPageText = ScGlobal::GetRscString( STR_PAGE );
+ aPageText += ' ';
+
+ USHORT nCount = pPageData->GetCount();
+ for (USHORT nPos=0; nPos<nCount; nPos++)
+ {
+ ScPrintRangeData& rData = pPageData->GetData(nPos);
+ ScRange aRange = rData.GetPrintRange();
+ if ( aRange.aStart.Col() <= nX2+1 && aRange.aEnd.Col()+1 >= nX1 &&
+ aRange.aStart.Row() <= nY2+1 && aRange.aEnd.Row()+1 >= nY1 )
+ {
+ // 3 Pixel Rahmen um den Druckbereich
+ // (mittlerer Pixel auf den Gitterlinien)
+
+ SetLineColor();
+ if (rData.IsAutomatic())
+ SetFillColor( aAutomatic );
+ else
+ SetFillColor( aManual );
+
+ Point aStart = pViewData->GetScrPos(
+ aRange.aStart.Col(), aRange.aStart.Row(), eWhich, TRUE );
+ Point aEnd = pViewData->GetScrPos(
+ aRange.aEnd.Col() + 1, aRange.aEnd.Row() + 1, eWhich, TRUE );
+ aStart.X() -= 2;
+ aStart.Y() -= 2;
+
+ // Ueberlaeufe verhindern:
+ if ( aStart.X() < -10 ) aStart.X() = -10;
+ if ( aStart.Y() < -10 ) aStart.Y() = -10;
+ if ( aEnd.X() > aWinSize.Width() + 10 )
+ aEnd.X() = aWinSize.Width() + 10;
+ if ( aEnd.Y() > aWinSize.Height() + 10 )
+ aEnd.Y() = aWinSize.Height() + 10;
+
+ DrawRect( Rectangle( aStart, Point(aEnd.X(),aStart.Y()+2) ) );
+ DrawRect( Rectangle( aStart, Point(aStart.X()+2,aEnd.Y()) ) );
+ DrawRect( Rectangle( Point(aStart.X(),aEnd.Y()-2), aEnd ) );
+ DrawRect( Rectangle( Point(aEnd.X()-2,aStart.Y()), aEnd ) );
+
+ // Seitenumbrueche
+ //! anders darstellen (gestrichelt ????)
+
+ USHORT nColBreaks = rData.GetPagesX();
+ const USHORT* pColEnd = rData.GetPageEndX();
+ USHORT nColPos;
+ for (nColPos=0; nColPos+1<nColBreaks; nColPos++)
+ {
+ USHORT nBreak = pColEnd[nColPos]+1;
+ if ( nBreak >= nX1 && nBreak <= nX2+1 )
+ {
+ //! hidden suchen
+ if ( pDoc->GetColFlags( nBreak, nTab ) & CR_MANUALBREAK )
+ SetFillColor( aManual );
+ else
+ SetFillColor( aAutomatic );
+ Point aBreak = pViewData->GetScrPos(
+ nBreak, aRange.aStart.Row(), eWhich, TRUE );
+ DrawRect( Rectangle( aBreak.X()-1, aStart.Y(), aBreak.X(), aEnd.Y() ) );
+ }
+ }
+
+ USHORT nRowBreaks = rData.GetPagesY();
+ const USHORT* pRowEnd = rData.GetPageEndY();
+ USHORT nRowPos;
+ for (nRowPos=0; nRowPos+1<nRowBreaks; nRowPos++)
+ {
+ USHORT nBreak = pRowEnd[nRowPos]+1;
+ if ( nBreak >= nY1 && nBreak <= nY2+1 )
+ {
+ //! hidden suchen
+ if ( pDoc->GetRowFlags( nBreak, nTab ) & CR_MANUALBREAK )
+ SetFillColor( aManual );
+ else
+ SetFillColor( aAutomatic );
+ Point aBreak = pViewData->GetScrPos(
+ aRange.aStart.Col(), nBreak, eWhich, TRUE );
+ DrawRect( Rectangle( aStart.X(), aBreak.Y()-1, aEnd.X(), aBreak.Y() ) );
+ }
+ }
+
+ // Seitenzahlen
+
+ USHORT nPrStartY = aRange.aStart.Row();
+ for (nRowPos=0; nRowPos<nRowBreaks; nRowPos++)
+ {
+ USHORT nPrEndY = pRowEnd[nRowPos];
+ if ( nPrEndY >= nY1 && nPrStartY <= nY2 )
+ {
+ USHORT nPrStartX = aRange.aStart.Col();
+ for (nColPos=0; nColPos<nColBreaks; nColPos++)
+ {
+ USHORT nPrEndX = pColEnd[nColPos];
+ if ( nPrEndX >= nX1 && nPrStartX <= nX2 )
+ {
+ Point aPageStart = pViewData->GetScrPos(
+ nPrStartX, nPrStartY, eWhich, TRUE );
+ Point aPageEnd = pViewData->GetScrPos(
+ nPrEndX+1,nPrEndY+1, eWhich, TRUE );
+
+ long nPageNo = rData.GetFirstPage();
+ if ( rData.IsTopDown() )
+ nPageNo += ((long)nColPos)*nRowBreaks+nRowPos;
+ else
+ nPageNo += ((long)nRowPos)*nColBreaks+nColPos;
+ String aPageStr = aPageText;
+ aPageStr += String::CreateFromInt32(nPageNo);
+
+ // passende Fontgroesse suchen
+ aFont.SetSize( Size( 0,100 ) );
+ SetFont( aFont );
+ Size aSize100( GetTextWidth( aPageStr ), GetTextHeight() );
+ // 40% der Breite oder 60% der Hoehe
+ long nSizeX = 40 * ( aPageEnd.X() - aPageStart.X() ) /
+ aSize100.Width();
+ long nSizeY = 60 * ( aPageEnd.Y() - aPageStart.Y() ) /
+ aSize100.Height();
+ aFont.SetSize( Size( 0,Min(nSizeX,nSizeY) ) );
+ SetFont( aFont );
+
+ // zentriert ausgeben
+ Size aTextSize( GetTextWidth( aPageStr ), GetTextHeight() );
+ Point aPos( (aPageStart.X()+aPageEnd.X()-aTextSize.Width())/2,
+ (aPageStart.Y()+aPageEnd.Y()-aTextSize.Height())/2 );
+ DrawText( aPos, aPageStr );
+ }
+ nPrStartX = nPrEndX + 1;
+ }
+ }
+ nPrStartY = nPrEndY + 1;
+ }
+ }
+ }
+ }
+}
+
+void ScGridWindow::DrawRefMark( USHORT nRefStartX, USHORT nRefStartY,
+ USHORT nRefEndX, USHORT nRefEndY,
+ const Color& rColor, BOOL bHandle )
+{
+ PutInOrder( nRefStartX, nRefEndX );
+ PutInOrder( nRefStartY, nRefEndY );
+
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pViewData->GetDocument();
+ if ( nRefStartX == nRefEndX && nRefStartY == nRefEndY )
+ pDoc->ExtendMerge( nRefStartX, nRefStartY, nRefEndX, nRefEndY, nTab );
+
+ MapMode aOld = GetMapMode();
+ SetMapMode(MAP_PIXEL);
+
+ USHORT nCurX = pViewData->GetCurX();
+ USHORT nCurY = pViewData->GetCurY();
+ BOOL bHide = ( nCurX+1 >= nRefStartX && nCurX <= nRefEndX+1 &&
+ nCurY+1 >= nRefStartY && nCurY <= nRefEndY+1 );
+
+ Point aStartPos = pViewData->GetScrPos( nRefStartX, nRefStartY, eWhich, TRUE );
+ Point aEndPos = pViewData->GetScrPos( nRefEndX+1, nRefEndY+1, eWhich, TRUE );
+ aEndPos.X() -= 2;
+ aEndPos.Y() -= 2; // nicht ueber das Gitter
+
+ // begrenzen um Ueberlaeufe mit Paint-Fehlern zu vermeiden
+ long nMinY = -10;
+ long nMaxY = GetOutputSizePixel().Height() + 10; // mit Abstand fuer Handle
+ if (aStartPos.Y() < nMinY) aStartPos.Y() = nMinY;
+ if (aStartPos.Y() > nMaxY) aStartPos.Y() = nMaxY;
+ if (aEndPos.Y() > nMaxY) aEndPos.Y() = nMaxY;
+ if (aEndPos.Y() < nMinY) aEndPos.Y() = nMinY;
+
+ if (bHide)
+ HideCursor();
+
+ SetLineColor( rColor );
+ SetFillColor();
+ DrawRect( Rectangle( aStartPos, aEndPos ) );
+
+ if ( bHandle )
+ {
+ SetLineColor();
+ SetFillColor( rColor );
+ DrawRect( Rectangle( aEndPos.X()-3, aEndPos.Y()-3,
+ aEndPos.X()+1, aEndPos.Y()+1 ) );
+ }
+
+ if (bHide)
+ ShowCursor();
+
+ SetMapMode(aOld);
+}
+
+void ScGridWindow::DrawButtons( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ RowInfo* pRowInfo, USHORT nArrCount )
+{
+ USHORT nCol, nRow, nArrY, nQuery;
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScDBData* pDBData = NULL;
+ ScQueryParam* pQueryParam = NULL;
+
+ Point aOldPos = aComboButton.GetPosPixel(); // Zustand fuer MouseDown/Up
+ Size aOldSize = aComboButton.GetSizePixel(); // merken
+ Color aOldCol = aComboButton.GetColor();
+
+ for (nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ if ( pRowInfo[nArrY].bAutoFilter && pRowInfo[nArrY].bChanged )
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+
+ nRow = pThisRowInfo->nRowNo;
+
+
+ for (nCol=nX1; nCol<=nX2; nCol++)
+ {
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nCol+1];
+ if ( pInfo->bAutoFilter && !pInfo->bHOverlapped && !pInfo->bVOverlapped )
+ {
+ if (!pQueryParam)
+ pQueryParam = new ScQueryParam;
+
+ BOOL bNewData = TRUE;
+ if (pDBData)
+ {
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nAreaTab;
+ pDBData->GetArea( nAreaTab, nStartCol, nStartRow, nEndCol, nEndRow );
+ if ( nCol >= nStartCol && nCol <= nEndCol &&
+ nRow >= nStartRow && nRow <= nEndRow )
+ bNewData = FALSE;
+ }
+ if (bNewData)
+ {
+ pDBData = pDoc->GetDBAtCursor( nCol, nRow, nTab );
+ if (pDBData)
+ pDBData->GetQueryParam( *pQueryParam );
+ else
+ DBG_ERROR("Auto-Filter-Button ohne DBData");
+ }
+
+ // pQueryParam kann nur MAXQUERY Eintraege enthalten
+
+ BOOL bSimpleQuery = TRUE;
+ BOOL bColumnFound = FALSE;
+ if (!pQueryParam->bInplace)
+ bSimpleQuery = FALSE;
+ for (nQuery=0; nQuery<MAXQUERY && bSimpleQuery; nQuery++)
+ if (pQueryParam->GetEntry(nQuery).bDoQuery)
+ {
+ // hier nicht auf EQUAL beschraenken
+ // (auch bei ">1" soll der Spaltenkopf blau werden)
+
+ if (pQueryParam->GetEntry(nQuery).nField == nCol)
+ bColumnFound = TRUE;
+ if (nQuery > 0)
+ if (pQueryParam->GetEntry(nQuery).eConnect != SC_AND)
+ bSimpleQuery = FALSE;
+ }
+
+ Color aColor( ( bSimpleQuery && bColumnFound )
+ ? COL_LIGHTBLUE
+ : COL_BLACK );
+ long nSizeX;
+ long nSizeY;
+
+ pViewData->GetMergeSizePixel( nCol, nRow, nSizeX, nSizeY );
+ aComboButton.SetOptSizePixel();
+ aComboButton.SetColor( aColor );
+ DrawComboButton( pViewData->GetScrPos( nCol, nRow, eWhich ),
+ nSizeX, nSizeY );
+
+ aComboButton.SetPosPixel( aOldPos ); // alten Zustand
+ aComboButton.SetSizePixel( aOldSize ); // fuer MouseUp/Down
+ aComboButton.SetColor( aOldCol ); // wiederherstellen
+ }
+ }
+ }
+
+ if ( pRowInfo[nArrY].bPushButton && pRowInfo[nArrY].bChanged )
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ nRow = pThisRowInfo->nRowNo;
+ for (nCol=nX1; nCol<=nX2; nCol++)
+ {
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nCol+1];
+ if ( pInfo->bPushButton && !pInfo->bHOverlapped && !pInfo->bVOverlapped )
+ {
+ Point aScrPos = pViewData->GetScrPos( nCol, nRow, eWhich );
+ long nSizeX;
+ long nSizeY;
+ pViewData->GetMergeSizePixel( nCol, nRow, nSizeX, nSizeY );
+ long nPosX = aScrPos.X();
+ long nPosY = aScrPos.Y();
+
+ SetLineColor( COL_WHITE );
+ DrawLine( Point(nPosX,nPosY), Point(nPosX,nPosY+nSizeY-1) );
+ DrawLine( Point(nPosX,nPosY), Point(nPosX+nSizeX-1,nPosY) );
+// SetLineColor( SC_SMALL3DSHADOW );
+ SetLineColor( COL_GRAY );
+ DrawLine( Point(nPosX,nPosY+nSizeY-1), Point(nPosX+nSizeX-1,nPosY+nSizeY-1) );
+ DrawLine( Point(nPosX+nSizeX-1,nPosY), Point(nPosX+nSizeX-1,nPosY+nSizeY-1) );
+ SetLineColor( COL_BLACK );
+// SetFillColor();
+// DrawRect( Rectangle( nPosX-1,nPosY-1, nPosX+nSizeX-1,nPosY+nSizeY-1 ) );
+ }
+ }
+ }
+ }
+
+ delete pQueryParam;
+}
+
+BOOL ScGridWindow::IsAutoFilterActive( USHORT nCol, USHORT nRow, USHORT nTab )
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScDBData* pDBData = pDoc->GetDBAtCursor( nCol, nRow, nTab );
+ ScQueryParam aQueryParam;
+
+ if ( pDBData )
+ pDBData->GetQueryParam( aQueryParam );
+ else
+ DBG_ERROR("Auto-Filter-Button ohne DBData");
+
+ BOOL bSimpleQuery = TRUE;
+ BOOL bColumnFound = FALSE;
+ USHORT nQuery;
+
+ if ( !aQueryParam.bInplace )
+ bSimpleQuery = FALSE;
+
+ // aQueryParam kann nur MAXQUERY Eintraege enthalten
+
+ for ( nQuery=0; nQuery<MAXQUERY && bSimpleQuery; nQuery++ )
+ if ( aQueryParam.GetEntry(nQuery).bDoQuery )
+ {
+ if (aQueryParam.GetEntry(nQuery).nField == nCol)
+ bColumnFound = TRUE;
+
+ if (nQuery > 0)
+ if (aQueryParam.GetEntry(nQuery).eConnect != SC_AND)
+ bSimpleQuery = FALSE;
+ }
+
+ return ( bSimpleQuery && bColumnFound );
+}
+
+void ScGridWindow::DrawComboButton( const Point& rCellPos,
+ long nCellSizeX,
+ long nCellSizeY,
+ BOOL bBtnIn )
+{
+ Point aScrPos = rCellPos;
+ Size aBtnSize = aComboButton.GetSizePixel();
+
+ if ( nCellSizeX < aBtnSize.Width() || nCellSizeY < aBtnSize.Height() )
+ {
+ if ( nCellSizeX < aBtnSize.Width() )
+ aBtnSize.Width() = nCellSizeX;
+
+ if ( nCellSizeY < aBtnSize.Height() )
+ aBtnSize.Height() = nCellSizeY;
+
+ aComboButton.SetSizePixel( aBtnSize );
+ }
+
+ aScrPos.X() += nCellSizeX - aBtnSize.Width();
+ aScrPos.Y() += nCellSizeY - aBtnSize.Height();
+
+ aComboButton.SetPosPixel( aScrPos );
+
+ HideCursor();
+ aComboButton.Draw( bBtnIn );
+ ShowCursor();
+}
+
+void ScGridWindow::InvertSimple( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ BOOL bTestMerge, BOOL bRepeat )
+{
+ //! if INVERT_HIGHLIGHT swaps foreground and background (like on Mac),
+ //! use INVERT_HIGHLIGHT only for cells that have no background color set
+ //! (here and in ScOutputData::DrawMark)
+
+ PutInOrder( nX1, nX2 );
+ PutInOrder( nY1, nY2 );
+
+ ScMarkData& rMark = pViewData->GetMarkData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+
+ USHORT nTestX2 = nX2;
+ USHORT nTestY2 = nY2;
+ if (bTestMerge)
+ pDoc->ExtendMerge( nX1,nY1, nTestX2,nTestY2, nTab );
+
+ USHORT nPosX = pViewData->GetPosX( eHWhich );
+ USHORT nPosY = pViewData->GetPosY( eVWhich );
+ if (nTestX2 < nPosX || nTestY2 < nPosY)
+ return; // unsichtbar
+ USHORT nRealX1 = nX1;
+ if (nX1 < nPosX)
+ nX1 = nPosX;
+ if (nY1 < nPosY)
+ nY1 = nPosY;
+
+ USHORT nXRight = nPosX + pViewData->VisibleCellsX(eHWhich);
+ if (nXRight > MAXCOL) nXRight = MAXCOL;
+ USHORT nYBottom = nPosY + pViewData->VisibleCellsY(eVWhich);
+ if (nYBottom > MAXROW) nYBottom = MAXROW;
+
+ if (nX1 > nXRight || nY1 > nYBottom)
+ return; // unsichtbar
+ if (nX2 > nXRight) nX2 = nXRight;
+ if (nY2 > nYBottom) nY2 = nYBottom;
+
+ MapMode aOld = GetMapMode(); SetMapMode(MAP_PIXEL); // erst nach den return's !!!
+
+ double nPPTX = pViewData->GetPPTX();
+ double nPPTY = pViewData->GetPPTY();
+
+ ScInvertMerger aInvert( this );
+
+ Point aScrPos = pViewData->GetScrPos( nX1, nY1, eWhich );
+ USHORT nScrY = (USHORT) aScrPos.Y();
+ BOOL bWasHidden = FALSE;
+ for (USHORT nY=nY1; nY<=nY2; nY++)
+ {
+ BOOL bDoHidden = FALSE; // versteckte nachholen ?
+ USHORT nHeightTwips = pDoc->GetRowHeight( nY,nTab );
+ BOOL bDoRow = ( nHeightTwips != 0 );
+ if (bDoRow)
+ {
+ if (bTestMerge)
+ if (bWasHidden) // auf versteckte zusammengefasste testen
+ {
+// --nY; // nY geaendert -> vorherige zeichnen
+ bDoHidden = TRUE;
+ bDoRow = TRUE;
+ }
+
+ bWasHidden = FALSE;
+ }
+ else
+ {
+ bWasHidden = TRUE;
+ if (bTestMerge)
+ if (nY==nY2)
+ bDoRow = TRUE; // letzte Zeile aus Block
+ }
+
+ if ( bDoRow )
+ {
+ USHORT nLoopEndX = nX2;
+ if (nX2 < nX1) // Rest von zusammengefasst
+ {
+ USHORT nStartX = nX1;
+ while ( ((const ScMergeFlagAttr*)pDoc->
+ GetAttr(nStartX,nY,nTab,ATTR_MERGE_FLAG))->IsHorOverlapped() )
+ --nStartX;
+ if (nStartX <= nX2)
+ nLoopEndX = nX1;
+ }
+
+ USHORT nEndY = nScrY + (USHORT) ( nHeightTwips * nPPTY ) - 1;
+ USHORT nScrX = (USHORT) aScrPos.X();
+ for (USHORT nX=nX1; nX<=nLoopEndX; nX++)
+ {
+ USHORT nEndX = nScrX + (USHORT) ( pDoc->GetColWidth( nX,nTab ) * nPPTX ) - 1;
+ if (bTestMerge)
+ {
+ USHORT nThisY = nY;
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nX, nY, nTab );
+ const ScMergeFlagAttr* pMergeFlag = (const ScMergeFlagAttr*) &pPattern->
+ GetItem(ATTR_MERGE_FLAG);
+ if ( pMergeFlag->IsVerOverlapped() && bDoHidden )
+ {
+ while ( pMergeFlag->IsVerOverlapped() ?
+ (pDoc->GetRowFlags( nThisY-1, nTab ) & CR_HIDDEN) : FALSE )
+ {
+ --nThisY;
+ pPattern = pDoc->GetPattern( nX, nThisY, nTab );
+ pMergeFlag = (const ScMergeFlagAttr*) &pPattern->GetItem(ATTR_MERGE_FLAG);
+ }
+ }
+
+ // nur Rest von zusammengefasster zu sehen ?
+ USHORT nThisX = nX;
+ if ( pMergeFlag->IsHorOverlapped() && nX == nPosX && nX > nRealX1 )
+ {
+ while ( pMergeFlag->IsHorOverlapped() )
+ {
+ --nThisX;
+ pPattern = pDoc->GetPattern( nThisX, nThisY, nTab );
+ pMergeFlag = (const ScMergeFlagAttr*) &pPattern->GetItem(ATTR_MERGE_FLAG);
+ }
+ }
+
+ if ( rMark.IsCellMarked( nThisX, nThisY, TRUE ) == bRepeat )
+ {
+ if ( !pMergeFlag->IsOverlapped() )
+ {
+ ScMergeAttr* pMerge = (ScMergeAttr*)&pPattern->GetItem(ATTR_MERGE);
+ if (pMerge->GetColMerge() || pMerge->GetRowMerge())
+ {
+ Point aEndPos = pViewData->GetScrPos(
+ nThisX + pMerge->GetColMerge(),
+ nThisY + pMerge->GetRowMerge(), eWhich );
+ if ( aEndPos.X() > nScrX && aEndPos.Y() > nScrY )
+ {
+ aInvert.AddRect( Rectangle( nScrX,nScrY,aEndPos.X()-1,aEndPos.Y()-1 ) );
+ }
+ }
+ else if ( nEndX >= nScrX && nEndY >= nScrY )
+ {
+ aInvert.AddRect( Rectangle( nScrX,nScrY,nEndX,nEndY ) );
+ }
+ }
+ }
+ }
+ else // !bTestMerge
+ {
+ if ( rMark.IsCellMarked( nX, nY, TRUE ) == bRepeat &&
+ nEndX >= nScrX && nEndY >= nScrY )
+ {
+ aInvert.AddRect( Rectangle( nScrX,nScrY,nEndX,nEndY ) );
+ }
+ }
+
+ nScrX = nEndX + 1;
+ }
+ nScrY = nEndY + 1;
+ }
+ }
+
+ aInvert.Flush(); // before restoring MapMode
+
+ SetMapMode(aOld);
+
+ CheckInverted();
+}
+
+// -------------------------------------------------------------------------
+
+void ScGridWindow::DrawDragRect( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ BOOL bMarkDrop )
+{
+ if ( nX2 < pViewData->GetPosX(eHWhich) || nY2 < pViewData->GetPosY(eVWhich) )
+ return;
+
+ // Nur auf dem Mac wird bei Drag&Drop nur die Einfuegeposition markiert
+#ifndef MAC
+ bMarkDrop = FALSE;
+#endif
+
+ if (bMarkDrop)
+ nY2 = nY1; // nur 1 Zeile
+
+ Update(); // wegen XOR
+
+ MapMode aOld = GetMapMode(); SetMapMode(MAP_PIXEL);
+
+ USHORT nTab = pViewData->GetTabNo();
+
+ USHORT nPosX = pViewData->GetPosX(WhichH(eWhich));
+ USHORT nPosY = pViewData->GetPosY(WhichV(eWhich));
+ if (nX1 < nPosX) nX1 = nPosX;
+ if (nX2 < nPosX) nX2 = nPosX;
+ if (nY1 < nPosY) nY1 = nPosY;
+ if (nY2 < nPosY) nY2 = nPosY;
+
+ Point aScrPos( pViewData->GetScrPos( nX1, nY1, eWhich ) );
+
+ long nSizeXPix=0;
+ long nSizeYPix=0;
+ ScDocument* pDoc = pViewData->GetDocument();
+ double nPPTX = pViewData->GetPPTX();
+ double nPPTY = pViewData->GetPPTY();
+ USHORT i;
+
+ if (bMarkDrop)
+ {
+ aScrPos.X() -= 1; // nur die Position markieren
+ nSizeXPix += 2;
+ }
+ else
+ {
+ if (nX2<=MAXCOL && nX2>=nX1)
+ for (i=nX1; i<=nX2; i++)
+ nSizeXPix += (long) ( pDoc->GetColWidth( i, nTab ) * nPPTX );
+ else
+ {
+ aScrPos.X() -= 1;
+ nSizeXPix += 2;
+ }
+ }
+
+ if (nY2<=MAXROW && nY2>=nY1)
+ for (i=nY1; i<=nY2; i++)
+ nSizeYPix += (long) ( pDoc->GetRowHeight( i, nTab ) * nPPTY );
+ else
+ {
+ aScrPos.Y() -= 1;
+ nSizeYPix += 2;
+ }
+
+ aScrPos.X() -= 2;
+ aScrPos.Y() -= 2;
+ Rectangle aRect( aScrPos, Size( nSizeXPix + 3, nSizeYPix + 3 ) );
+
+ Invert(Rectangle( aRect.Left(), aRect.Top(), aRect.Left()+2, aRect.Bottom() ));
+ Invert(Rectangle( aRect.Right()-2, aRect.Top(), aRect.Right(), aRect.Bottom() ));
+ Invert(Rectangle( aRect.Left()+3, aRect.Top(), aRect.Right()-3, aRect.Top()+2 ));
+ Invert(Rectangle( aRect.Left()+3, aRect.Bottom()-2, aRect.Right()-3, aRect.Bottom() ));
+
+ SetMapMode(aOld);
+}
+
+// -------------------------------------------------------------------------
+
+void ScGridWindow::DrawCursor()
+{
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nX = pViewData->GetCurX();
+ USHORT nY = pViewData->GetCurY();
+
+ // in verdeckten Zellen nicht zeichnen
+
+ ScDocument* pDoc = pViewData->GetDocument();
+ const ScPatternAttr* pPattern = pDoc->GetPattern(nX,nY,nTab);
+ const ScMergeFlagAttr& rMerge = (const ScMergeFlagAttr&) pPattern->GetItem(ATTR_MERGE_FLAG);
+ if (rMerge.IsOverlapped())
+ return;
+
+ // links/oben ausserhalb des Bildschirms ?
+
+ BOOL bVis = ( nX>=pViewData->GetPosX(eHWhich) && nY>=pViewData->GetPosY(eVWhich) );
+ if (!bVis)
+ {
+ USHORT nEndX = nX;
+ USHORT nEndY = nY;
+ ScDocument* pDoc = pViewData->GetDocument();
+ const ScMergeAttr& rMerge = (const ScMergeAttr&) pPattern->GetItem(ATTR_MERGE);
+ if (rMerge.GetColMerge() > 1)
+ nEndX += rMerge.GetColMerge()-1;
+ if (rMerge.GetRowMerge() > 1)
+ nEndX += rMerge.GetRowMerge()-1;
+ bVis = ( nEndX>=pViewData->GetPosX(eHWhich) && nEndY>=pViewData->GetPosY(eVWhich) );
+ }
+
+ if ( bVis )
+ {
+ // hier kein Update, da aus Paint gerufen und laut Zaehler Cursor schon da
+ // wenn Update noetig, dann bei Hide/Showcursor vor dem Hoch-/Runterzaehlen
+
+ MapMode aOld = GetMapMode(); SetMapMode(MAP_PIXEL);
+
+ Point aScrPos = pViewData->GetScrPos( nX, nY, eWhich, TRUE );
+
+ // rechts/unten ausserhalb des Bildschirms ?
+
+ Size aOutSize = GetOutputSizePixel();
+ if ( aScrPos.X() <= aOutSize.Width() + 2 && aScrPos.Y() <= aOutSize.Height() + 2 )
+ {
+ long nSizeXPix;
+ long nSizeYPix;
+ pViewData->GetMergeSizePixel( nX, nY, nSizeXPix, nSizeYPix );
+
+ BOOL bFix = ( pViewData->GetHSplitMode() == SC_SPLIT_FIX ||
+ pViewData->GetVSplitMode() == SC_SPLIT_FIX );
+ if ( pViewData->GetActivePart()==eWhich || bFix )
+ {
+ // old UNX version with two Invert calls causes flicker.
+ // if optimization is needed, a new flag should be added
+ // to InvertTracking
+
+ aScrPos.X() -= 2;
+ aScrPos.Y() -= 2;
+ Rectangle aRect( aScrPos, Size( nSizeXPix + 3, nSizeYPix + 3 ) );
+
+ Invert(Rectangle( aRect.Left(), aRect.Top(), aRect.Left()+2, aRect.Bottom() ));
+ Invert(Rectangle( aRect.Right()-2, aRect.Top(), aRect.Right(), aRect.Bottom() ));
+ Invert(Rectangle( aRect.Left()+3, aRect.Top(), aRect.Right()-3, aRect.Top()+2 ));
+ Invert(Rectangle( aRect.Left()+3, aRect.Bottom()-2, aRect.Right()-3, aRect.Bottom() ));
+ }
+ else
+ {
+ Rectangle aRect( aScrPos, Size( nSizeXPix - 1, nSizeYPix - 1 ) );
+ Invert( aRect );
+ }
+ }
+
+ SetMapMode(aOld);
+ }
+}
+
+ // AutoFill-Anfasser:
+
+void ScGridWindow::DrawAutoFillMark()
+{
+ if ( bAutoMarkVisible && aAutoMarkPos.Tab() == pViewData->GetTabNo() )
+ {
+ USHORT nX = aAutoMarkPos.Col();
+ USHORT nY = aAutoMarkPos.Row();
+
+ Point aFillPos = pViewData->GetScrPos( nX, nY, eWhich, TRUE );
+ long nSizeXPix;
+ long nSizeYPix;
+ pViewData->GetMergeSizePixel( nX, nY, nSizeXPix, nSizeYPix );
+ aFillPos.X() += nSizeXPix;
+ aFillPos.Y() += nSizeYPix;
+
+ aFillPos.X() -= 2;
+ aFillPos.Y() -= 2;
+ Rectangle aFillRect( aFillPos, Size(6,6) );
+ // Anfasser von Zeichenobjekten sind 7*7
+
+ MapMode aOld = GetMapMode(); SetMapMode(MAP_PIXEL);
+ Invert( aFillRect );
+ SetMapMode(aOld);
+ }
+}
+
+// -------------------------------------------------------------------------
+
+void ScGridWindow::DataChanged( const DataChangedEvent& rDCEvt )
+{
+ Window::DataChanged(rDCEvt);
+
+ if ( (rDCEvt.GetType() == DATACHANGED_PRINTER) ||
+ (rDCEvt.GetType() == DATACHANGED_DISPLAY) ||
+ (rDCEvt.GetType() == DATACHANGED_FONTS) ||
+ (rDCEvt.GetType() == DATACHANGED_FONTSUBSTITUTION) ||
+ ((rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
+ (rDCEvt.GetFlags() & SETTINGS_STYLE)) )
+ {
+ if ( rDCEvt.GetType() == DATACHANGED_FONTS && eWhich == pViewData->GetActivePart() )
+ pViewData->GetDocShell()->UpdateFontList();
+
+ if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
+ (rDCEvt.GetFlags() & SETTINGS_STYLE) )
+ {
+ // RepeatResize falls sich die Scrollbar-Groesse geaendert hat
+ if ( eWhich == pViewData->GetActivePart() ) // einmal reicht
+ pViewData->GetView()->RepeatResize();
+ }
+
+ Invalidate();
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/view/gridwin5.cxx b/sc/source/ui/view/gridwin5.cxx
new file mode 100644
index 000000000000..36ed4121df8a
--- /dev/null
+++ b/sc/source/ui/view/gridwin5.cxx
@@ -0,0 +1,369 @@
+/*************************************************************************
+ *
+ * $RCSfile: gridwin5.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#ifndef _EEITEM_HXX //autogen
+#include <svx/eeitem.hxx>
+#endif
+
+#define ITEMID_FIELD EE_FEATURE_FIELD
+#include <svx/flditem.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdpagv.hxx>
+#include <svtools/imapobj.hxx>
+#include <vcl/help.hxx>
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "gridwin.hxx"
+#include "viewdata.hxx"
+#include "drawview.hxx"
+#include "drwlayer.hxx"
+#include "drawpage.hxx"
+#include "document.hxx"
+#include "notemark.hxx"
+#include "chgtrack.hxx"
+#include "chgviset.hxx"
+#include "dbfunc.hxx"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScGridWindow::RequestHelp(const HelpEvent& rHEvt)
+{
+ BOOL bDone = FALSE;
+ BOOL bHelpEnabled = ( rHEvt.GetMode() & ( HELPMODE_BALLOON | HELPMODE_QUICK ) ) != 0;
+ SdrView* pDrView = pViewData->GetScDrawView();
+
+ BOOL bDrawTextEdit = FALSE;
+ if (pDrView)
+ bDrawTextEdit = pDrView->IsTextEdit();
+
+ // Notizen
+
+ if ( bHelpEnabled && !bDrawTextEdit )
+ {
+ ScPostIt aNote;
+ Point aPosPixel = ScreenToOutputPixel( rHEvt.GetMousePosPixel() );
+ ScDocument* pDoc = pViewData->GetDocument();
+ short nPosX, nPosY;
+ pViewData->GetPosFromPixel( aPosPixel.X(), aPosPixel.Y(), eWhich, nPosX, nPosY );
+ USHORT nTab = pViewData->GetTabNo();
+ ScAddress aCellPos( nPosX, nPosY, nTab );
+
+ String aTrackText;
+ BOOL bLeftEdge = FALSE;
+
+ // Change-Tracking
+
+ ScChangeTrack* pTrack = pDoc->GetChangeTrack();
+ ScChangeViewSettings* pSettings = pDoc->GetChangeViewSettings();
+ if ( pTrack && pTrack->GetFirst() && pSettings && pSettings->ShowChanges())
+ {
+ const ScChangeAction* pFound = NULL;
+ const ScChangeAction* pFoundContent = NULL;
+ const ScChangeAction* pFoundMove = NULL;
+ long nModified = 0;
+ const ScChangeAction* pAction = pTrack->GetFirst();
+ while (pAction)
+ {
+ if ( pAction->IsVisible() &&
+ ScViewUtil::IsActionShown( *pAction, *pSettings, *pDoc ) )
+ {
+ ScChangeActionType eType = pAction->GetType();
+ const ScBigRange& rBig = pAction->GetBigRange();
+ if ( rBig.aStart.Tab() == nTab )
+ {
+ ScRange aRange = rBig.MakeRange();
+
+ if ( eType == SC_CAT_DELETE_ROWS )
+ aRange.aEnd.SetRow( aRange.aStart.Row() );
+ else if ( eType == SC_CAT_DELETE_COLS )
+ aRange.aEnd.SetCol( aRange.aStart.Col() );
+
+ if ( aRange.In( aCellPos ) )
+ {
+ pFound = pAction; // der letzte gewinnt
+ switch ( eType )
+ {
+ case SC_CAT_CONTENT :
+ pFoundContent = pAction;
+ break;
+ case SC_CAT_MOVE :
+ pFoundMove = pAction;
+ break;
+ }
+ ++nModified;
+ }
+ }
+ if ( eType == SC_CAT_MOVE )
+ {
+ ScRange aRange =
+ ((const ScChangeActionMove*)pAction)->
+ GetFromRange().MakeRange();
+ if ( aRange.In( aCellPos ) )
+ {
+ pFound = pAction;
+ ++nModified;
+ }
+ }
+ }
+ pAction = pAction->GetNext();
+ }
+
+ if ( pFound )
+ {
+ if ( pFoundContent && pFound->GetType() != SC_CAT_CONTENT )
+ pFound = pFoundContent; // Content gewinnt
+ if ( pFoundMove && pFound->GetType() != SC_CAT_MOVE &&
+ pFoundMove->GetActionNumber() >
+ pFound->GetActionNumber() )
+ pFound = pFoundMove; // Move gewinnt
+
+ // bei geloeschten Spalten: Pfeil auf die linke Seite der Zelle
+ if ( pFound->GetType() == SC_CAT_DELETE_COLS )
+ bLeftEdge = TRUE;
+
+ DateTime aDT = pFound->GetDateTime();
+ aTrackText = pFound->GetUser();
+ aTrackText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ", " ));
+ aTrackText += ScGlobal::pScInternational->GetDate(aDT);
+ aTrackText += ' ';
+ aTrackText += ScGlobal::pScInternational->GetTime(aDT);
+ aTrackText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ":\n" ));
+ String aComStr=pFound->GetComment();
+ if(aComStr.Len()>0)
+ {
+ aTrackText += aComStr;
+ aTrackText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "\n( " ));
+ }
+ pFound->GetDescription( aTrackText, pDoc );
+ if(aComStr.Len()>0)
+ {
+ aTrackText +=')';
+ }
+ }
+ }
+
+ // Notiz nur, wenn sie nicht schon auf dem Drawing-Layer angezeigt wird:
+ if ( aTrackText.Len() || ( pDoc->GetNote( nPosX, nPosY, nTab, aNote ) &&
+ !pDoc->HasNoteObject( nPosX, nPosY, nTab ) ) )
+ {
+ BOOL bNew = TRUE;
+ BOOL bFast = FALSE;
+ if ( pNoteMarker ) // schon eine Notiz angezeigt
+ {
+ if ( pNoteMarker->GetDocPos() == aCellPos ) // dieselbe
+ bNew = FALSE; // dann stehenlassen
+ else
+ bFast = TRUE; // sonst sofort
+ }
+ if ( bNew )
+ {
+ delete pNoteMarker;
+
+ Window* pRight = NULL;
+ Window* pBottom = NULL;
+ Window* pDiagonal = NULL;
+ if ( pViewData->GetHSplitMode() == SC_SPLIT_FIX && eHWhich == SC_SPLIT_LEFT )
+ {
+ ScSplitPos eRight = ( eVWhich == SC_SPLIT_TOP ) ?
+ SC_SPLIT_TOPRIGHT : SC_SPLIT_BOTTOMRIGHT;
+ pRight = pViewData->GetView()->GetWindowByPos(eRight);
+ }
+ if ( pViewData->GetVSplitMode() == SC_SPLIT_FIX && eVWhich == SC_SPLIT_TOP )
+ {
+ ScSplitPos eBottom = ( eHWhich == SC_SPLIT_LEFT ) ?
+ SC_SPLIT_BOTTOMLEFT : SC_SPLIT_BOTTOMRIGHT;
+ pBottom = pViewData->GetView()->GetWindowByPos(eBottom);
+ }
+ if ( pRight && pBottom )
+ pDiagonal = pViewData->GetView()->GetWindowByPos(SC_SPLIT_BOTTOMRIGHT);
+
+ pNoteMarker = new ScNoteMarker( this, pRight, pBottom, pDiagonal,
+ pDoc, aCellPos, aTrackText,
+ GetDrawMapMode(TRUE), bLeftEdge, bFast );
+ }
+
+ Window::RequestHelp( rHEvt ); // alte Tip/Balloon ausschalten
+ bDone = TRUE;
+ }
+ }
+
+ if (!bDone)
+ DELETEZ(pNoteMarker);
+
+ // Image-Map / Text-URL
+
+ if ( bHelpEnabled && !bDone && !nButtonDown ) // nur ohne gedrueckten Button
+ {
+ String aHelpText;
+ Rectangle aPixRect;
+ Point aPosPixel = ScreenToOutputPixel( rHEvt.GetMousePosPixel() );
+
+ if ( pDrView ) // URL / Image-Map
+ {
+ SdrViewEvent aVEvt;
+ MouseEvent aMEvt( aPosPixel, 1, 0, MOUSE_LEFT );
+ SdrHitKind eHit = pDrView->PickAnything( aMEvt, SDRMOUSEBUTTONDOWN, aVEvt );
+
+ if ( eHit != SDRHIT_NONE && aVEvt.pObj != NULL )
+ {
+ // URL fuer IMapObject unter Pointer ist Hilfetext
+ if ( ScDrawLayer::GetIMapInfo( aVEvt.pObj ) )
+ {
+ Point aLogicPos = PixelToLogic( aPosPixel );
+ IMapObject* pIMapObj = ScDrawLayer::GetHitIMapObject(
+ aVEvt.pObj, aLogicPos, *this );
+
+ if ( pIMapObj )
+ {
+ // #44990# Bei ImageMaps die Description anzeigen, wenn vorhanden
+ aHelpText = pIMapObj->GetDescription();
+ if (!aHelpText.Len())
+ aHelpText = pIMapObj->GetURL();
+ aPixRect = LogicToPixel(aVEvt.pObj->GetLogicRect());
+ }
+ }
+ // URL in Textobjekt
+ if ( !aHelpText.Len() && aVEvt.eEvent == SDREVENT_EXECUTEURL )
+ {
+ aHelpText = aVEvt.pURLField->GetURL();
+ aPixRect = LogicToPixel(aVEvt.pObj->GetLogicRect());
+ }
+ }
+ }
+
+ if ( !aHelpText.Len() ) // Text-URL
+ {
+ String aUrl;
+ if ( GetEditUrl( aPosPixel, NULL, &aUrl, NULL ) )
+ {
+ aHelpText = INetURLObject::decode( aUrl, INET_HEX_ESCAPE,
+ INetURLObject::DECODE_UNAMBIGUOUS );
+
+ ScDocument* pDoc = pViewData->GetDocument();
+ short nPosX, nPosY;
+ USHORT nTab = pViewData->GetTabNo();
+ pViewData->GetPosFromPixel( aPosPixel.X(), aPosPixel.Y(), eWhich, nPosX, nPosY );
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nPosX, nPosY, nTab );
+ aPixRect = pViewData->GetEditArea( eWhich, nPosX, nPosY, this, pPattern );
+ }
+ }
+
+ if ( aHelpText.Len() )
+ {
+ Rectangle aScreenRect(OutputToScreenPixel(aPixRect.TopLeft()),
+ OutputToScreenPixel(aPixRect.BottomRight()));
+
+ if ( rHEvt.GetMode() & HELPMODE_BALLOON )
+ Help::ShowBalloon(this,rHEvt.GetMousePosPixel(), aScreenRect, aHelpText);
+ else if ( rHEvt.GetMode() & HELPMODE_QUICK )
+ Help::ShowQuickHelp(this,aScreenRect, aHelpText);
+
+ bDone = TRUE;
+ }
+ }
+
+ // Basic-Controls
+
+ if ( pDrView && bHelpEnabled && !bDone )
+ {
+ SdrPageView* pPV = pDrView->GetPageViewPvNum(0);
+ DBG_ASSERT( pPV, "SdrPageView* ist NULL" );
+ if (pPV)
+ bDone = ((ScDrawPage*)pPV->GetPage())->RequestHelp( this, pDrView, rHEvt );
+ }
+
+ // Wenn QuickHelp fuer AutoFill angezeigt wird, nicht wieder wegnehmen lassen
+
+ if ( nMouseStatus == SC_GM_TABDOWN && pViewData->GetRefType() == SC_REFTYPE_FILL &&
+ Help::IsQuickHelpEnabled() )
+ bDone = TRUE;
+
+ if (!bDone)
+ Window::RequestHelp( rHEvt );
+}
+
+BOOL ScGridWindow::IsMyModel(SdrEditView* pSdrView)
+{
+ return pSdrView &&
+ pSdrView->GetModel() == pViewData->GetDocument()->GetDrawLayer();
+}
+
+void ScGridWindow::HideNoteMarker()
+{
+ DELETEZ(pNoteMarker);
+}
+
diff --git a/sc/source/ui/view/hdrcont.cxx b/sc/source/ui/view/hdrcont.cxx
new file mode 100644
index 000000000000..f17668015242
--- /dev/null
+++ b/sc/source/ui/view/hdrcont.cxx
@@ -0,0 +1,829 @@
+/*************************************************************************
+ *
+ * $RCSfile: hdrcont.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sfx2/dispatch.hxx>
+#include <vcl/help.hxx>
+
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "tabvwsh.hxx"
+#include "hdrcont.hxx"
+#include "scmod.hxx" // Optionen
+#include "inputopt.hxx" // Optionen
+#include "gridmerg.hxx"
+
+// -----------------------------------------------------------------------
+
+#define SC_DRAG_MIN 2
+
+// passes in paint
+// (selection left/right must be first because the continuous lines
+// are partly overwritten later)
+
+#define SC_HDRPAINT_SEL_RIGHT 0
+#define SC_HDRPAINT_SEL_LEFT 1
+#define SC_HDRPAINT_TOP 2
+#define SC_HDRPAINT_SEL_TOP 3
+#define SC_HDRPAINT_SEL_BOTTOM 4
+#define SC_HDRPAINT_BOTTOM 5
+#define SC_HDRPAINT_TEXT 6
+#define SC_HDRPAINT_COUNT 7
+
+//==================================================================
+
+ScHeaderControl::ScHeaderControl( Window* pParent, SelectionEngine* pSelectionEngine,
+ USHORT nNewSize, USHORT nNewFlags ) :
+ Window ( pParent ),
+ pSelEngine ( pSelectionEngine ),
+ nSize ( nNewSize ),
+ nFlags ( nNewFlags ),
+ bVertical ( (nNewFlags & HDR_VERTICAL) != 0 ),
+ bDragging ( FALSE ),
+ bIgnoreMove ( FALSE ),
+ nMarkStart ( 0 ),
+ nMarkEnd ( 0 ),
+ bMarkRange ( FALSE )
+{
+ aNormFont = GetFont();
+ aNormFont.SetTransparent( TRUE ); //! WEIGHT_NORMAL hart setzen ???
+ aBoldFont = aNormFont;
+ aBoldFont.SetWeight( WEIGHT_BOLD );
+
+ SetFont(aBoldFont);
+ bBoldSet = TRUE;
+
+ Size aSize = LogicToPixel( Size(
+ GetTextWidth( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("8888")) ),
+ GetTextHeight() ) );
+ aSize.Width() += 4; // Platz fuer hervorgehobene Umrandung
+ aSize.Height() += 3;
+ SetSizePixel( aSize );
+
+ nWidth = nSmallWidth = aSize.Width();
+ nBigWidth = LogicToPixel( Size( GetTextWidth(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("88888")) ), 0 ) ).Width() + 4;
+
+ SetBackground(); // sonst Probleme auf OS/2 !?!?!
+}
+
+void ScHeaderControl::SetWidth( long nNew )
+{
+ DBG_ASSERT( bVertical, "SetDigits nur fuer Zeilenkoepfe erlaubt" );
+ if ( nNew != nWidth )
+ {
+ Size aSize( nNew, GetSizePixel().Height() ); // Hoehe nicht aendern
+ SetSizePixel( aSize );
+
+ nWidth = nNew;
+
+ Invalidate(); // neu zentrieren
+ }
+}
+
+__EXPORT ScHeaderControl::~ScHeaderControl()
+{
+}
+
+void ScHeaderControl::DoPaint( USHORT nStart, USHORT nEnd )
+{
+ Rectangle aRect( Point(0,0), GetOutputSizePixel() );
+ if ( bVertical )
+ {
+ aRect.Top() = GetScrPos( nStart );
+ aRect.Bottom() = GetScrPos( nEnd+1 )-1;
+ }
+ else
+ {
+ aRect.Left() = GetScrPos( nStart );
+ aRect.Right() = GetScrPos( nEnd+1 )-1;
+ }
+ Invalidate(aRect);
+}
+
+void ScHeaderControl::SetMark( BOOL bNewSet, USHORT nNewStart, USHORT nNewEnd )
+{
+ BOOL bEnabled = SC_MOD()->GetInputOptions().GetMarkHeader(); //! cachen?
+ if (!bEnabled)
+ bNewSet = FALSE;
+
+ // Variablen setzen
+
+ BOOL bOldSet = bMarkRange;
+ USHORT nOldStart = nMarkStart;
+ USHORT nOldEnd = nMarkEnd;
+ PutInOrder( nNewStart, nNewEnd );
+ bMarkRange = bNewSet;
+ nMarkStart = nNewStart;
+ nMarkEnd = nNewEnd;
+
+ // Paint
+
+ if ( bNewSet )
+ {
+ if ( bOldSet )
+ {
+ if ( nNewStart == nOldStart )
+ {
+ if ( nNewEnd != nOldEnd )
+ DoPaint( Min( nNewEnd, nOldEnd ) + 1, Max( nNewEnd, nOldEnd ) );
+ // sonst nix
+ }
+ else if ( nNewEnd == nOldEnd )
+ DoPaint( Min( nNewStart, nOldStart ), Max( nNewStart, nOldStart ) - 1 );
+ else if ( nNewStart > nOldEnd || nNewEnd < nOldStart )
+ {
+ // zwei Bereiche...
+ DoPaint( nOldStart, nOldEnd );
+ DoPaint( nNewStart, nNewEnd );
+ }
+ else // irgendwie ueberlappend... (kommt eh nicht oft vor)
+ DoPaint( Min( nNewStart, nOldStart ), Max( nNewEnd, nOldEnd ) );
+ }
+ else
+ DoPaint( nNewStart, nNewEnd ); // komplett neu
+ }
+ else if ( bOldSet )
+ DoPaint( nOldStart, nOldEnd ); // komplett aufheben
+
+ // sonst war nix, is nix
+}
+
+long ScHeaderControl::GetScrPos( USHORT nEntryNo )
+{
+ long nScrPos;
+
+ long nMax = ( bVertical ? GetOutputSizePixel().Height() : GetOutputSizePixel().Width() ) + 1;
+ if (nEntryNo >= nSize)
+ nScrPos = nMax;
+ else
+ {
+ nScrPos = 0;
+ for (USHORT i=GetPos(); i<nEntryNo && nScrPos<nMax; i++)
+ {
+ USHORT nAdd = GetEntrySize(i);
+ if (nAdd)
+ nScrPos += nAdd;
+ else
+ {
+ USHORT nHidden = GetHiddenCount(i);
+ if (nHidden)
+ i += nHidden - 1;
+ }
+ }
+ }
+
+ return nScrPos;
+}
+
+//
+// Paint
+//
+
+void __EXPORT ScHeaderControl::Paint( const Rectangle& rRect )
+{
+ // fuer VCL ist es wichtig, wenig Aufrufe zu haben, darum werden die aeusseren
+ // Linien zusammengefasst
+
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+
+ SetTextColor( rStyleSettings.GetButtonTextColor() );
+ SetFillColor( rStyleSettings.GetFaceColor() );
+ SetLineColor();
+ DrawRect( rRect );
+
+ const FunctionSet* pFuncSet = pSelEngine->GetFunctionSet();
+ String aString;
+ USHORT nBarSize;
+ Point aScrPos;
+ Point aEndPos;
+ Size aTextSize;
+ Size aSize = GetOutputSizePixel();
+
+ if (bVertical)
+ nBarSize = (USHORT) GetSizePixel().Width();
+ else
+ nBarSize = (USHORT) GetSizePixel().Height();
+
+ USHORT nPos = GetPos();
+
+ long nPStart = bVertical ? rRect.Top() : rRect.Left();
+ long nPEnd = bVertical ? rRect.Bottom() : rRect.Right();
+
+ // aeussere Linien komplett durchzeichnen
+ // Zuerst Ende der letzten Zelle finden
+
+ long nLineEnd = -1;
+ for (USHORT i=nPos; i<nSize; i++)
+ {
+ USHORT nSizePix = GetEntrySize( i );
+ if (nSizePix)
+ {
+ nLineEnd += nSizePix;
+ if ( nLineEnd > nPEnd )
+ {
+ nLineEnd = nPEnd;
+ break;
+ }
+ }
+ else
+ {
+ USHORT nHidden = GetHiddenCount(i);
+ if (nHidden)
+ i += nHidden - 1;
+ }
+ }
+
+ if ( nLineEnd >= nPStart )
+ {
+ SetLineColor( rStyleSettings.GetLightColor() );
+ if (bVertical)
+ DrawLine( Point( 0, nPStart ), Point( 0, nLineEnd ) );
+ else
+ DrawLine( Point( nPStart, 0 ), Point( nLineEnd, 0 ) );
+ SetLineColor( rStyleSettings.GetDarkShadowColor() );
+ if (bVertical)
+ DrawLine( Point( nBarSize-1, nPStart ), Point( nBarSize-1, nLineEnd ) );
+ else
+ DrawLine( Point( nPStart, nBarSize-1 ), Point( nLineEnd, nBarSize-1 ) );
+ }
+
+ //
+ // loop through entries several times to avoid changing the line color too often
+ // and to allow merging of lines
+ //
+
+ ScGridMerger aGrid( this, 1, 1 );
+ for (USHORT nPass = 0; nPass < SC_HDRPAINT_COUNT; nPass++)
+ {
+ // set line color etc. before entry loop
+ switch ( nPass )
+ {
+ case SC_HDRPAINT_SEL_RIGHT:
+ SetLineColor( rStyleSettings.GetShadowColor() );
+ break;
+ case SC_HDRPAINT_SEL_LEFT:
+ SetLineColor( rStyleSettings.GetLightColor() );
+ break;
+ case SC_HDRPAINT_TOP:
+ SetLineColor( rStyleSettings.GetLightColor() );
+ break;
+ case SC_HDRPAINT_SEL_TOP:
+ SetLineColor( rStyleSettings.GetLightColor() );
+ break;
+ case SC_HDRPAINT_SEL_BOTTOM:
+ SetLineColor( rStyleSettings.GetShadowColor() );
+ break;
+ case SC_HDRPAINT_BOTTOM:
+ SetLineColor( rStyleSettings.GetDarkShadowColor() );
+ break;
+ //case SC_HDRPAINT_TEXT:
+ // break;
+ }
+
+ USHORT nCount=0;
+ long nScrPos=0;
+ do
+ {
+ if (bVertical)
+ aScrPos = Point( 0, nScrPos );
+ else
+ aScrPos = Point( nScrPos, 0 );
+
+ USHORT nEntryNo = nCount + nPos;
+ if ( nEntryNo >= nSize ) // MAXCOL/MAXROW
+ nScrPos = nPEnd + 1; // ausserhalb -> Ende
+ else
+ {
+ USHORT nSizePix = GetEntrySize( nEntryNo );
+
+ if (nSizePix == 0)
+ {
+ USHORT nHidden = GetHiddenCount(nEntryNo);
+ if (nHidden)
+ nCount += nHidden - 1;
+ }
+ else if (nScrPos+nSizePix >= nPStart)
+ {
+ Point aEndPos(aScrPos);
+ if (bVertical)
+ aEndPos = Point( aScrPos.X()+nBarSize-1, aScrPos.Y()+nSizePix-1 );
+ else
+ aEndPos = Point( aScrPos.X()+nSizePix-1, aScrPos.Y()+nBarSize-1 );
+
+ BOOL bMark = bMarkRange && nEntryNo >= nMarkStart && nEntryNo <= nMarkEnd;
+
+ switch ( nPass )
+ {
+ case SC_HDRPAINT_SEL_LEFT:
+ if (bMark)
+ {
+ // continuous line - partly overwritten later
+ if (bVertical)
+ aGrid.AddVerLine( aScrPos.X()+1, aScrPos.Y(), aEndPos.Y() );
+ else
+ aGrid.AddHorLine( aScrPos.X(), aEndPos.X(), aScrPos.Y()+1 );
+ }
+ break;
+
+ case SC_HDRPAINT_SEL_TOP:
+ if (bMark)
+ {
+ if (bVertical)
+ aGrid.AddHorLine( aScrPos.X()+1, aEndPos.X()-2, aScrPos.Y()+1 );
+ else
+ aGrid.AddVerLine( aScrPos.X()+1, aScrPos.Y()+1, aEndPos.Y()-2 );
+ }
+ break;
+
+ case SC_HDRPAINT_SEL_RIGHT:
+ if (bMark)
+ {
+ // continuous line - partly overwritten later
+ if (bVertical)
+ aGrid.AddVerLine( aEndPos.X()-1, aScrPos.Y(), aEndPos.Y() );
+ else
+ aGrid.AddHorLine( aScrPos.X(), aEndPos.X(), aEndPos.Y()-1 );
+ }
+ break;
+
+ case SC_HDRPAINT_SEL_BOTTOM:
+ if (bMark)
+ {
+ if (bVertical)
+ aGrid.AddHorLine( aScrPos.X()+1, aEndPos.X()-1, aEndPos.Y()-1 );
+ else
+ aGrid.AddVerLine( aEndPos.X()-1, aScrPos.Y()+1, aEndPos.Y()-1 );
+ }
+ break;
+
+ case SC_HDRPAINT_TOP:
+ if (bVertical)
+ aGrid.AddHorLine( aScrPos.X(), aEndPos.X()-1, aScrPos.Y() );
+ else
+ aGrid.AddVerLine( aScrPos.X(), aScrPos.Y(), aEndPos.Y()-1 );
+ break;
+
+ case SC_HDRPAINT_BOTTOM:
+ if (bVertical)
+ aGrid.AddHorLine( aScrPos.X(), aEndPos.X(), aEndPos.Y() );
+ else
+ aGrid.AddVerLine( aEndPos.X(), aScrPos.Y(), aEndPos.Y() );
+
+ // thick bottom for hidden rows
+ // (drawn directly, without aGrid)
+ if ( nEntryNo+1 < nSize )
+ if ( GetEntrySize(nEntryNo+1)==0 )
+ {
+ if (bVertical)
+ DrawLine( Point(aScrPos.X(),aEndPos.Y()-1),
+ Point(aEndPos.X(),aEndPos.Y()-1) );
+ else
+ DrawLine( Point(aEndPos.X()-1,aScrPos.Y()),
+ Point(aEndPos.X()-1,aEndPos.Y()) );
+ }
+ break;
+
+ case SC_HDRPAINT_TEXT:
+ {
+ if ( bMark != bBoldSet )
+ {
+ if (bMark)
+ SetFont(aBoldFont);
+ else
+ SetFont(aNormFont);
+ bBoldSet = bMark;
+ }
+ aString = GetEntryText( nEntryNo );
+ aTextSize.Width() = GetTextWidth( aString );
+ aTextSize.Height() = GetTextHeight();
+
+ Point aTxtPos(aScrPos);
+ if (bVertical)
+ {
+ aTxtPos.X() += (nBarSize-aTextSize.Width())/2;
+ aTxtPos.Y() += (nSizePix-aTextSize.Height())/2;
+ }
+ else
+ {
+ aTxtPos.X() += (nSizePix-aTextSize.Width()+1)/2;
+ aTxtPos.Y() += (nBarSize-aTextSize.Height()+1)/2;
+ }
+ DrawText( aTxtPos, aString );
+ }
+ break;
+ }
+
+ // bei Selektion der ganzen Zeile/Spalte:
+ // InvertRect( Rectangle( aScrPos, aEndPos ) );
+ }
+ nScrPos += nSizePix; // auch wenn noch oberhalb
+ }
+ ++nCount;
+ }
+ while ( nScrPos <= nPEnd );
+
+ aGrid.Flush();
+ }
+}
+
+//
+// Maus - Handling
+//
+
+USHORT ScHeaderControl::GetMousePos( const MouseEvent& rMEvt, BOOL& rBorder )
+{
+ BOOL bFound=FALSE;
+ USHORT nCount = 1;
+ USHORT nPos = GetPos();
+ USHORT nHitNo = nPos;
+ long nScrPos;
+ long nMousePos = bVertical ? rMEvt.GetPosPixel().Y() : rMEvt.GetPosPixel().X();
+ long nDif;
+ Size aSize = GetOutputSizePixel();
+
+ nScrPos = GetScrPos( nPos ) - 1;
+ do
+ {
+ USHORT nEntryNo = nCount + nPos;
+
+// nScrPos = GetScrPos( nEntryNo ) - 1;
+
+ if (nEntryNo >= nSize)
+ nScrPos = ( bVertical ? GetOutputSizePixel().Height() : GetOutputSizePixel().Width() ) + 1;
+ else
+ nScrPos += GetEntrySize( nEntryNo - 1 ); //! GetHiddenCount() ??
+
+ nDif = nMousePos - nScrPos;
+ if (nDif >= -2 && nDif <= 2 && nCount > 0)
+ {
+ bFound=TRUE;
+ nHitNo=nEntryNo-1;
+ }
+ else if (nDif >= 0)
+ nHitNo = nEntryNo;
+ ++nCount;
+ }
+ while ( nScrPos < ( bVertical ? aSize.Height() : aSize.Width() ) && nDif > 0 );
+
+ rBorder = bFound;
+ return nHitNo;
+}
+
+void __EXPORT ScHeaderControl::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if (IsDisabled())
+ return;
+
+ bIgnoreMove = FALSE;
+ SelectWindow();
+
+ BOOL bFound;
+ USHORT nHitNo = GetMousePos( rMEvt, bFound );
+
+ if ( bFound && rMEvt.IsLeft() && ResizeAllowed() )
+ {
+ nDragNo = nHitNo;
+ USHORT nClicks = rMEvt.GetClicks();
+ if ( nClicks && nClicks%2==0 )
+ {
+ SetEntrySize( nDragNo, HDR_SIZE_OPTIMUM );
+ SetPointer( Pointer( POINTER_ARROW ) );
+ }
+ else
+ {
+ if (bVertical)
+ nDragStart = rMEvt.GetPosPixel().Y();
+ else
+ nDragStart = rMEvt.GetPosPixel().X();
+ nDragPos = nDragStart;
+ ShowDragHelp();
+ DrawInvert( nDragPos );
+
+ // CaptureMouse();
+ StartTracking();
+ bDragging = TRUE;
+ bDragMoved = FALSE;
+ }
+ }
+ else if (rMEvt.IsLeft())
+ {
+ pSelEngine->SetWindow( this );
+ Point aPoint;
+ Rectangle aVis( aPoint,GetOutputSizePixel() );
+ if (bVertical)
+ aVis.Left() = LONG_MIN, aVis.Right() = LONG_MAX;
+ else
+ aVis.Top() = LONG_MIN, aVis.Bottom() = LONG_MAX;
+ pSelEngine->SetVisibleArea( aVis );
+
+ SetMarking( TRUE ); // muss vor SelMouseButtonDown sein
+ pSelEngine->SelMouseButtonDown( rMEvt );
+
+ if (IsMouseCaptured())
+ {
+ // Tracking statt CaptureMouse, damit sauber abgebrochen werden kann
+ //! Irgendwann sollte die SelectionEngine selber StartTracking rufen!?!
+ ReleaseMouse();
+ StartTracking();
+ }
+ }
+}
+
+void __EXPORT ScHeaderControl::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ if ( IsDisabled() )
+ return;
+
+ SetMarking( FALSE );
+ bIgnoreMove = FALSE;
+ BOOL bFound;
+ USHORT nHitNo = GetMousePos( rMEvt, bFound );
+
+ if ( bDragging )
+ {
+ DrawInvert( nDragPos );
+ ReleaseMouse();
+ bDragging = FALSE;
+
+ long nScrPos = GetScrPos( nDragNo );
+ long nMousePos = bVertical ? rMEvt.GetPosPixel().Y() : rMEvt.GetPosPixel().X();
+ long nNewWidth = nMousePos + 2 - nScrPos;
+
+ if ( nNewWidth < 0 /* && !IsSelected(nDragNo) */ )
+ {
+ USHORT nStart;
+ USHORT nEnd = nDragNo;
+ while (nNewWidth < 0)
+ {
+ nStart = nDragNo;
+ if (nDragNo>0)
+ {
+ --nDragNo;
+ nNewWidth += GetEntrySize( nDragNo ); //! GetHiddenCount() ???
+ }
+ else
+ nNewWidth = 0;
+ }
+ HideEntries( nStart, nEnd );
+ }
+ else
+ {
+ if (nNewWidth<0) nNewWidth=0;
+ if (bDragMoved)
+ SetEntrySize( nDragNo, (USHORT) nNewWidth );
+ }
+ }
+ else
+ {
+ pSelEngine->SelMouseButtonUp( rMEvt );
+ ReleaseMouse();
+ }
+}
+
+void __EXPORT ScHeaderControl::MouseMove( const MouseEvent& rMEvt )
+{
+ if ( IsDisabled() )
+ {
+ SetPointer( Pointer( POINTER_ARROW ) );
+ return;
+ }
+
+ BOOL bFound;
+ USHORT nHitNo = GetMousePos( rMEvt, bFound );
+
+ if ( bDragging )
+ {
+ long nNewPos = bVertical ? rMEvt.GetPosPixel().Y() : rMEvt.GetPosPixel().X();
+ if ( nNewPos != nDragPos )
+ {
+ DrawInvert( nDragPos );
+ nDragPos = nNewPos;
+ ShowDragHelp();
+ DrawInvert( nDragPos );
+
+ if (nDragPos <= nDragStart-SC_DRAG_MIN || nDragPos >= nDragStart+SC_DRAG_MIN)
+ bDragMoved = TRUE;
+ }
+ }
+ else
+ {
+ if ( bFound && rMEvt.GetButtons()==0 && ResizeAllowed() )
+ SetPointer( Pointer( bVertical ? POINTER_VSIZEBAR : POINTER_HSIZEBAR ) );
+ else
+ SetPointer( Pointer( POINTER_ARROW ) );
+
+ if (!bIgnoreMove)
+ pSelEngine->SelMouseMove( rMEvt );
+ }
+}
+
+void ScHeaderControl::Tracking( const TrackingEvent& rTEvt )
+{
+ // Weil die SelectionEngine kein Tracking kennt, die Events nur auf
+ // die verschiedenen MouseHandler verteilen...
+
+ if ( rTEvt.IsTrackingCanceled() )
+ StopMarking();
+ else if ( rTEvt.IsTrackingEnded() )
+ MouseButtonUp( rTEvt.GetMouseEvent() );
+ else
+ MouseMove( rTEvt.GetMouseEvent() );
+}
+
+void __EXPORT ScHeaderControl::Command( const CommandEvent& rCEvt )
+{
+ USHORT nCmd = rCEvt.GetCommand();
+ if ( nCmd == COMMAND_CONTEXTMENU )
+ {
+ StopMarking(); // Selektion / Dragging beenden
+
+ // Popup ausfuehren
+
+ ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell,
+ SfxViewShell::Current() );
+ if ( pViewSh )
+ {
+ ScResId aResId( bVertical ? RID_POPUP_ROWHEADER : RID_POPUP_COLHEADER );
+ pViewSh->GetDispatcher()->ExecutePopup( aResId );
+ }
+ }
+ else if ( nCmd == COMMAND_STARTDRAG )
+ {
+ pSelEngine->Command( rCEvt );
+ }
+}
+
+void ScHeaderControl::StopMarking()
+{
+ if ( bDragging )
+ {
+ DrawInvert( nDragPos );
+ bDragging = FALSE;
+ }
+
+ SetMarking( FALSE );
+ bIgnoreMove = TRUE;
+ pSelEngine->Reset();
+ ReleaseMouse();
+}
+
+void ScHeaderControl::ShowDragHelp()
+{
+ if (Help::IsQuickHelpEnabled())
+ {
+ long nVal = nDragPos + 2 - GetScrPos( nDragNo );
+
+ String aHelpStr = GetDragHelp( nVal );
+ Point aPos = OutputToScreenPixel( Point(0,0) );
+ Size aSize = GetSizePixel();
+
+#ifdef VCL
+ Point aMousePos = OutputToScreenPixel(GetPointerPosPixel());
+#else
+ Point aMousePos = Pointer::GetPosPixel();
+#endif
+
+ Rectangle aRect;
+ USHORT nAlign;
+ if (!bVertical)
+ {
+ // oberhalb
+ aRect.Left() = aMousePos.X();
+ aRect.Top() = aPos.Y() - 4;
+ nAlign = QUICKHELP_BOTTOM|QUICKHELP_CENTER;
+ }
+ else
+ {
+ // rechts oben
+ aRect.Left() = aPos.X() + aSize.Width() + 8;
+ aRect.Top() = aMousePos.Y() - 2;
+ nAlign = QUICKHELP_LEFT|QUICKHELP_BOTTOM;
+ }
+
+ aRect.Right() = aRect.Left();
+ aRect.Bottom() = aRect.Top();
+
+ Help::ShowQuickHelp(this, aRect, aHelpStr, nAlign);
+ }
+}
+
+void __EXPORT ScHeaderControl::RequestHelp( const HelpEvent& rHEvt )
+{
+ // Wenn eigene QuickHelp angezeigt wird, nicht durch RequestHelp
+ // wieder wegnehmen lassen
+
+ BOOL bOwn = bDragging && Help::IsQuickHelpEnabled();
+ if (!bOwn)
+ Window::RequestHelp(rHEvt);
+}
+
+// -----------------------------------------------------------------------
+// Dummys fuer virtuelle Methoden
+// -----------------------------------------------------------------------
+
+USHORT ScHeaderControl::GetHiddenCount( USHORT nEntryNo )
+{
+ USHORT nHidden = 0;
+ while ( nEntryNo < nSize && GetEntrySize( nEntryNo ) == 0 )
+ {
+ ++nEntryNo;
+ ++nHidden;
+ }
+ return nHidden;
+}
+
+BOOL ScHeaderControl::IsDisabled()
+{
+ return FALSE;
+}
+
+BOOL ScHeaderControl::ResizeAllowed()
+{
+ return TRUE;
+}
+
+void ScHeaderControl::SelectWindow()
+{
+}
+
+void ScHeaderControl::DrawInvert( long nDragPos )
+{
+}
+
+String ScHeaderControl::GetDragHelp( long nVal )
+{
+ return EMPTY_STRING;
+}
+
+void ScHeaderControl::SetMarking( BOOL bSet )
+{
+}
+
+
+
diff --git a/sc/source/ui/view/hintwin.cxx b/sc/source/ui/view/hintwin.cxx
new file mode 100644
index 000000000000..49efacadf812
--- /dev/null
+++ b/sc/source/ui/view/hintwin.cxx
@@ -0,0 +1,188 @@
+/*************************************************************************
+ *
+ * $RCSfile: hintwin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "hintwin.hxx"
+#include "global.hxx"
+
+#define HINT_LINESPACE 2
+#define HINT_INDENT 3
+#define HINT_MARGIN 4
+
+// STATIC DATA -----------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
+//==================================================================
+#pragma SEG_FUNCDEF(hintwin_01)
+
+ScHintWindow::ScHintWindow( Window* pParent, const String& rTit, const String& rMsg ) :
+ Window( pParent, WinBits( WB_BORDER ) ),
+ aTitle( rTit ),
+ aMessage( rMsg )
+{
+ aMessage.ConvertLineEnd( LINEEND_CR );
+
+ // Hellgelb, wie Notizen in detfunc.cxx
+ Color aYellow( 255,255,192 ); // hellgelb
+ SetBackground( aYellow );
+
+ aTextFont = GetFont();
+ aTextFont.SetTransparent( TRUE );
+ aTextFont.SetWeight( WEIGHT_NORMAL );
+ aHeadFont = aTextFont;
+ aHeadFont.SetWeight( WEIGHT_BOLD );
+
+ SetFont( aHeadFont );
+ Size aHeadSize( GetTextWidth( aTitle ), GetTextHeight() );
+ SetFont( aTextFont );
+
+ Size aTextSize;
+ xub_StrLen nIndex = 0;
+ while ( nIndex != STRING_NOTFOUND )
+ {
+ String aLine = aMessage.GetToken( 0, CHAR_CR, nIndex );
+ Size aLineSize( GetTextWidth( aLine ), GetTextHeight() );
+ nTextHeight = aLineSize.Height();
+ aTextSize.Height() += nTextHeight;
+ if ( aLineSize.Width() > aTextSize.Width() )
+ aTextSize.Width() = aLineSize.Width();
+ }
+ aTextSize.Width() += HINT_INDENT;
+
+ aTextStart = Point( HINT_MARGIN + HINT_INDENT,
+ aHeadSize.Height() + HINT_MARGIN + HINT_LINESPACE );
+
+ Size aWinSize( Max( aHeadSize.Width(), aTextSize.Width() ) + 2 * HINT_MARGIN + 1,
+ aHeadSize.Height() + aTextSize.Height() + HINT_LINESPACE + 2 * HINT_MARGIN + 1 );
+ SetOutputSizePixel( aWinSize );
+}
+
+#pragma SEG_FUNCDEF(hintwin_02)
+
+ScHintWindow::~ScHintWindow()
+{
+}
+
+#pragma SEG_FUNCDEF(hintwin_03)
+
+void __EXPORT ScHintWindow::Paint( const Rectangle& rRect )
+{
+ SetFont( aHeadFont );
+ DrawText( Point(HINT_MARGIN,HINT_MARGIN), aTitle );
+
+ SetFont( aTextFont );
+ xub_StrLen nIndex = 0;
+ Point aLineStart = aTextStart;
+ while ( nIndex != STRING_NOTFOUND )
+ {
+ String aLine = aMessage.GetToken( 0, CHAR_CR, nIndex );
+ DrawText( aLineStart, aLine );
+ aLineStart.Y() += nTextHeight;
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.7 2000/09/17 14:09:33 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.6 2000/08/31 16:38:46 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.5 2000/05/26 15:07:49 er
+ NOOLDSV
+
+ Revision 1.4 2000/04/14 08:31:37 nn
+ unicode changes
+
+ Revision 1.3 1997/10/10 14:35:00 NN
+ Hint-Window auch unter VCL in richtiger Farbe anzeigen
+
+
+ Rev 1.2 10 Oct 1997 16:35:00 NN
+ Hint-Window auch unter VCL in richtiger Farbe anzeigen
+
+ Rev 1.1 16 Dec 1996 16:51:50 NN
+ auch mehrzeiliger Text
+
+ Rev 1.0 28 Oct 1996 10:56:14 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/view/imapwrap.cxx b/sc/source/ui/view/imapwrap.cxx
new file mode 100644
index 000000000000..bbde273613a1
--- /dev/null
+++ b/sc/source/ui/view/imapwrap.cxx
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * $RCSfile: imapwrap.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/imapdlg.hxx>
+#include <sfx2/viewfrm.hxx>
+
+
+USHORT ScIMapChildWindowId()
+{
+ return SvxIMapDlgChildWindow::GetChildWindowId();
+}
+
+SvxIMapDlg* ScGetIMapDlg()
+{
+ //! pass view frame here and in SVXIMAPDLG()
+
+ SfxViewFrame* pViewFrm = SfxViewFrame::Current();
+ if( pViewFrm && pViewFrm->HasChildWindow( SvxIMapDlgChildWindow::GetChildWindowId() ) )
+ return SVXIMAPDLG();
+ else
+ return NULL;
+}
+
+void ScIMapDlgSet( const Graphic& rGraphic, const ImageMap* pImageMap,
+ const TargetList* pTargetList, void* pEditingObj )
+{
+ SvxIMapDlgChildWindow::UpdateIMapDlg( rGraphic, pImageMap, pTargetList, pEditingObj );
+}
+
+const void* ScIMapDlgGetObj( SvxIMapDlg* pDlg )
+{
+ if ( pDlg )
+ return pDlg->GetEditingObject();
+ else
+ return NULL;
+}
+
+const ImageMap& ScIMapDlgGetMap( SvxIMapDlg* pDlg )
+{
+ return pDlg->GetImageMap();
+}
+
+
+
+
diff --git a/sc/source/ui/view/invmerge.cxx b/sc/source/ui/view/invmerge.cxx
new file mode 100644
index 000000000000..31b0fb122435
--- /dev/null
+++ b/sc/source/ui/view/invmerge.cxx
@@ -0,0 +1,156 @@
+/*************************************************************************
+ *
+ * $RCSfile: invmerge.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#include <vcl/window.hxx>
+#include <tools/debug.hxx>
+
+#include "invmerge.hxx"
+
+//------------------------------------------------------------------
+
+ScInvertMerger::ScInvertMerger( Window* pWindow ) :
+ pWin( pWindow )
+{
+ // both rectangles empty
+}
+
+ScInvertMerger::~ScInvertMerger()
+{
+ Flush();
+}
+
+void ScInvertMerger::Flush()
+{
+ FlushLine();
+ FlushTotal();
+
+ DBG_ASSERT( aLineRect.IsEmpty() && aTotalRect.IsEmpty(), "Flush: not empty" );
+}
+
+void ScInvertMerger::FlushTotal()
+{
+ if( aTotalRect.IsEmpty() )
+ return; // nothing to do
+
+ pWin->Invert( aTotalRect, INVERT_HIGHLIGHT );
+ aTotalRect.SetEmpty();
+}
+
+void ScInvertMerger::FlushLine()
+{
+ if( aLineRect.IsEmpty() )
+ return; // nothing to do
+
+ if ( aTotalRect.IsEmpty() )
+ {
+ aTotalRect = aLineRect; // start new total rect
+ }
+ else
+ {
+ if ( aLineRect.Left() == aTotalRect.Left() &&
+ aLineRect.Right() == aTotalRect.Right() &&
+ aLineRect.Top() == aTotalRect.Bottom() + 1 )
+ {
+ // extend total rect
+ aTotalRect.Bottom() = aLineRect.Bottom();
+ }
+ else
+ {
+ FlushTotal(); // draw old total rect
+ aTotalRect = aLineRect; // and start new one
+ }
+ }
+
+ aLineRect.SetEmpty();
+}
+
+void ScInvertMerger::AddRect( const Rectangle& rRect )
+{
+ if ( aLineRect.IsEmpty() )
+ {
+ aLineRect = rRect; // start new line rect
+ }
+ else
+ {
+ if ( rRect.Top() == aLineRect.Top() &&
+ rRect.Bottom() == aLineRect.Bottom() &&
+ rRect.Left() == aLineRect.Right() + 1 )
+ {
+ // extend line rect
+ aLineRect.Right() = rRect.Right();
+ }
+ else
+ {
+ FlushLine(); // use old line rect for total rect
+ aLineRect = rRect; // and start new one
+ }
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/view/makefile.mk b/sc/source/ui/view/makefile.mk
new file mode 100644
index 000000000000..fa648fd29037
--- /dev/null
+++ b/sc/source/ui/view/makefile.mk
@@ -0,0 +1,257 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sc
+TARGET=view
+
+PROJECTPCH4DLL=TRUE
+PROJECTPCH=ui_pch
+PDBTARGET=ui_pch
+PROJECTPCHSOURCE=..\pch\ui_pch
+
+AUTOSEG=true
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : scpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sc.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Files --------------------------------------------------------
+# drawattr.cxx fuer IDL (enums), sollte in den Svx gehen??
+
+CXXFILES = \
+ tabview.cxx \
+ tabview2.cxx \
+ tabview3.cxx \
+ tabview4.cxx \
+ tabview5.cxx \
+ viewfunc.cxx \
+ viewfun2.cxx \
+ viewfun3.cxx \
+ viewfun4.cxx \
+ viewfun5.cxx \
+ viewfun6.cxx \
+ viewfun7.cxx \
+ dbfunc.cxx \
+ dbfunc2.cxx \
+ dbfunc3.cxx \
+ dbfunc4.cxx \
+ tabvwsh.cxx \
+ tabvwsh2.cxx \
+ tabvwsh3.cxx \
+ tabvwsh4.cxx \
+ tabvwsh5.cxx \
+ tabvwsh7.cxx \
+ tabvwsh8.cxx \
+ tabvwsh9.cxx \
+ tabvwsha.cxx \
+ tabvwshb.cxx \
+ tabvwshc.cxx \
+ tabvwshd.cxx \
+ tabvwshe.cxx \
+ tabvwshf.cxx \
+ tabvwshg.cxx \
+ tabvwshh.cxx \
+ printfun.cxx \
+ preview.cxx \
+ prevwsh.cxx \
+ prevwsh2.cxx \
+ editsh.cxx \
+ editsh2.cxx \
+ pivotsh.cxx \
+ auditsh.cxx \
+ gridwin.cxx \
+ gridwin2.cxx \
+ gridwin3.cxx \
+ gridwin4.cxx \
+ gridwin5.cxx \
+ drawview.cxx \
+ drawvie2.cxx \
+ drawvie3.cxx \
+ drawvie4.cxx \
+ drawutil.cxx \
+ output.cxx \
+ output2.cxx \
+ output3.cxx \
+ gridmerg.cxx \
+ invmerge.cxx \
+ select.cxx \
+ olinewin.cxx \
+ hintwin.cxx \
+ notemark.cxx \
+ tabcont.cxx \
+ tabsplit.cxx \
+ viewdata.cxx \
+ viewutil.cxx \
+ hdrcont.cxx \
+ colrowba.cxx \
+ olkact.cxx \
+ galwrap.cxx \
+ imapwrap.cxx \
+ reffact.cxx \
+ spelleng.cxx \
+ waitoff.cxx \
+ cellsh.cxx \
+ cellsh1.cxx \
+ cellsh2.cxx \
+ cellsh3.cxx \
+ cellsh4.cxx \
+ formatsh.cxx \
+ pgbrksh.cxx
+
+# drawattr.cxx ??????
+
+
+SLOFILES = \
+ $(SLO)$/tabview.obj \
+ $(SLO)$/tabview2.obj \
+ $(SLO)$/tabview3.obj \
+ $(SLO)$/tabview4.obj \
+ $(SLO)$/tabview5.obj \
+ $(SLO)$/viewfunc.obj \
+ $(SLO)$/viewfun2.obj \
+ $(SLO)$/viewfun3.obj \
+ $(SLO)$/viewfun4.obj \
+ $(SLO)$/viewfun5.obj \
+ $(SLO)$/viewfun6.obj \
+ $(SLO)$/viewfun7.obj \
+ $(SLO)$/dbfunc.obj \
+ $(SLO)$/dbfunc2.obj \
+ $(SLO)$/dbfunc3.obj \
+ $(SLO)$/dbfunc4.obj \
+ $(SLO)$/tabvwsh.obj \
+ $(SLO)$/tabvwsh2.obj \
+ $(SLO)$/tabvwsh3.obj \
+ $(SLO)$/tabvwsh4.obj \
+ $(SLO)$/tabvwsh5.obj \
+ $(SLO)$/tabvwsh7.obj \
+ $(SLO)$/tabvwsh8.obj \
+ $(SLO)$/tabvwsh9.obj \
+ $(SLO)$/tabvwsha.obj \
+ $(SLO)$/tabvwshb.obj \
+ $(SLO)$/tabvwshc.obj \
+ $(SLO)$/tabvwshd.obj \
+ $(SLO)$/tabvwshe.obj \
+ $(SLO)$/tabvwshf.obj \
+ $(SLO)$/tabvwshg.obj \
+ $(SLO)$/tabvwshh.obj \
+ $(SLO)$/printfun.obj \
+ $(SLO)$/preview.obj \
+ $(SLO)$/prevwsh.obj \
+ $(SLO)$/prevwsh2.obj \
+ $(SLO)$/editsh.obj \
+ $(SLO)$/editsh2.obj \
+ $(SLO)$/pivotsh.obj \
+ $(SLO)$/auditsh.obj \
+ $(SLO)$/gridwin.obj \
+ $(SLO)$/gridwin2.obj \
+ $(SLO)$/gridwin3.obj \
+ $(SLO)$/gridwin4.obj \
+ $(SLO)$/gridwin5.obj \
+ $(SLO)$/drawview.obj \
+ $(SLO)$/drawvie2.obj \
+ $(SLO)$/drawvie3.obj \
+ $(SLO)$/drawvie4.obj \
+ $(SLO)$/drawutil.obj \
+ $(SLO)$/output.obj \
+ $(SLO)$/output2.obj \
+ $(SLO)$/output3.obj \
+ $(SLO)$/gridmerg.obj \
+ $(SLO)$/invmerge.obj \
+ $(SLO)$/select.obj \
+ $(SLO)$/olinewin.obj \
+ $(SLO)$/hintwin.obj \
+ $(SLO)$/notemark.obj \
+ $(SLO)$/tabcont.obj \
+ $(SLO)$/tabsplit.obj \
+ $(SLO)$/viewdata.obj \
+ $(SLO)$/viewutil.obj \
+ $(SLO)$/hdrcont.obj \
+ $(SLO)$/colrowba.obj \
+ $(SLO)$/olkact.obj \
+ $(SLO)$/galwrap.obj \
+ $(SLO)$/imapwrap.obj \
+ $(SLO)$/reffact.obj \
+ $(SLO)$/spelleng.obj \
+ $(SLO)$/waitoff.obj \
+ $(SLO)$/cellsh.obj \
+ $(SLO)$/cellsh1.obj\
+ $(SLO)$/cellsh2.obj\
+ $(SLO)$/cellsh3.obj\
+ $(SLO)$/cellsh4.obj\
+ $(SLO)$/formatsh.obj\
+ $(SLO)$/pgbrksh.obj\
+
+
+NOOPTFILES=\
+ $(SLO)$/drawview.obj \
+ $(SLO)$/dbfunc2.obj \
+ $(SLO)$/tabvwsh2.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/sc/source/ui/view/notemark.cxx b/sc/source/ui/view/notemark.cxx
new file mode 100644
index 000000000000..29d90cf4437b
--- /dev/null
+++ b/sc/source/ui/view/notemark.cxx
@@ -0,0 +1,234 @@
+/*************************************************************************
+ *
+ * $RCSfile: notemark.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdoutl.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/xoutx.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/printer.hxx>
+#include <svtools/iniman.hxx>
+#include <svtools/itempool.hxx>
+
+#include "notemark.hxx"
+#include "document.hxx"
+#include "detfunc.hxx"
+
+#define SC_NOTEMARK_TIME 800
+#define SC_NOTEMARK_SHORT 70
+
+// STATIC DATA -----------------------------------------------------------
+
+// -----------------------------------------------------------------------
+
+ScNoteMarker::ScNoteMarker( Window* pWin, Window* pRight, Window* pBottom, Window* pDiagonal,
+ ScDocument* pD, ScAddress aPos, const String& rUser,
+ const MapMode& rMap, BOOL bLeftEdge, BOOL bForce ) :
+ pWindow( pWin ),
+ pRightWin( pRight ),
+ pBottomWin( pBottom ),
+ pDiagWin( pDiagonal ),
+ pDoc( pD ),
+ aDocPos( aPos ),
+ aUserText( rUser ),
+ aMapMode( rMap ),
+ bLeft( bLeftEdge ),
+ bVisible( FALSE ),
+ pModel( NULL ),
+ pObject( NULL )
+{
+ aTimer.SetTimeoutHdl( LINK( this, ScNoteMarker, TimeHdl ) );
+ aTimer.SetTimeout( bForce ? SC_NOTEMARK_SHORT : SC_NOTEMARK_TIME );
+ aTimer.Start();
+}
+
+ScNoteMarker::~ScNoteMarker()
+{
+ InvalidateWin();
+
+ delete pModel;
+}
+
+IMPL_LINK( ScNoteMarker, TimeHdl, Timer*, pTimer )
+{
+ if (!bVisible)
+ {
+ pModel = new SdrModel(SFX_APP()->GetAppIniManager()->Get(SFX_KEY_PALETTE_PATH));
+ pModel->SetScaleUnit(MAP_100TH_MM);
+ SfxItemPool& rPool = pModel->GetItemPool();
+ rPool.SetDefaultMetric(SFX_MAPUNIT_100TH_MM);
+ rPool.FreezeIdRanges();
+
+ Printer* pPrinter = pDoc->GetPrinter();
+ if (pPrinter)
+ {
+ // Am Outliner des Draw-Model ist auch der Drucker als RefDevice gesetzt,
+ // und es soll einheitlich aussehen.
+ Outliner& rOutliner = pModel->GetDrawOutliner();
+ rOutliner.SetRefDevice(pPrinter);
+ }
+
+ SdrPage* pPage = pModel->AllocPage(FALSE);
+
+ Size aSizePixel = pWindow->GetOutputSizePixel();
+ Rectangle aVisPixel( Point(0,0), aSizePixel );
+ Rectangle aVisible = pWindow->PixelToLogic( aVisPixel, aMapMode );
+
+ USHORT nCol = aDocPos.Col();
+ USHORT nRow = aDocPos.Row();
+ USHORT nTab = aDocPos.Tab();
+ pObject = ScDetectiveFunc( pDoc,nTab ).
+ ShowCommentUser( nCol, nRow, aUserText, aVisible, bLeft, FALSE, pPage );
+
+ if (pObject)
+ aRect = pObject->GetBoundRect();
+
+ // #39351# Page einfuegen damit das Model sie kennt und auch deleted
+ pModel->InsertPage( pPage );
+
+ bVisible = TRUE;
+ }
+
+ Draw();
+ return 0;
+}
+
+void lcl_DrawWin( SdrObject* pObject, Window* pWindow, const MapMode& rMap )
+{
+ MapMode aOld = pWindow->GetMapMode();
+ pWindow->SetMapMode( rMap );
+
+ ExtOutputDevice* pXOut = new ExtOutputDevice( pWindow );
+ pXOut->SetOutDev( pWindow );
+ SdrPaintInfoRec aInfoRec;
+ pObject->Paint( *pXOut, aInfoRec );
+ delete pXOut;
+
+ pWindow->SetMapMode( aOld );
+}
+
+MapMode lcl_MoveMapMode( const MapMode& rMap, const Size& rMove )
+{
+ MapMode aNew = rMap;
+ Point aOrigin = aNew.GetOrigin();
+ aOrigin.X() -= rMove.Width();
+ aOrigin.Y() -= rMove.Height();
+ aNew.SetOrigin(aOrigin);
+ return aNew;
+}
+
+void ScNoteMarker::Draw()
+{
+ if ( pObject && bVisible )
+ {
+ lcl_DrawWin( pObject, pWindow, aMapMode );
+
+ if ( pRightWin || pBottomWin )
+ {
+ Size aWinSize = pWindow->PixelToLogic( pWindow->GetOutputSizePixel(), aMapMode );
+ if ( pRightWin )
+ lcl_DrawWin( pObject, pRightWin,
+ lcl_MoveMapMode( aMapMode, Size( aWinSize.Width(), 0 ) ) );
+ if ( pBottomWin )
+ lcl_DrawWin( pObject, pBottomWin,
+ lcl_MoveMapMode( aMapMode, Size( 0, aWinSize.Height() ) ) );
+ if ( pDiagWin )
+ lcl_DrawWin( pObject, pDiagWin, lcl_MoveMapMode( aMapMode, aWinSize ) );
+ }
+ }
+}
+
+void ScNoteMarker::InvalidateWin()
+{
+ if (bVisible)
+ {
+ pWindow->Invalidate( pWindow->LogicToLogic(aRect, aMapMode, pWindow->GetMapMode()) );
+
+ if ( pRightWin || pBottomWin )
+ {
+ Size aWinSize = pWindow->PixelToLogic( pWindow->GetOutputSizePixel(), aMapMode );
+ if ( pRightWin )
+ pRightWin->Invalidate( pRightWin->LogicToLogic(aRect,
+ lcl_MoveMapMode( aMapMode, Size( aWinSize.Width(), 0 ) ),
+ pRightWin->GetMapMode()) );
+ if ( pBottomWin )
+ pBottomWin->Invalidate( pBottomWin->LogicToLogic(aRect,
+ lcl_MoveMapMode( aMapMode, Size( 0, aWinSize.Height() ) ),
+ pBottomWin->GetMapMode()) );
+ if ( pDiagWin )
+ pDiagWin->Invalidate( pDiagWin->LogicToLogic(aRect,
+ lcl_MoveMapMode( aMapMode, aWinSize ),
+ pDiagWin->GetMapMode()) );
+ }
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/view/olinewin.cxx b/sc/source/ui/view/olinewin.cxx
new file mode 100644
index 000000000000..18daf341d862
--- /dev/null
+++ b/sc/source/ui/view/olinewin.cxx
@@ -0,0 +1,916 @@
+/*************************************************************************
+ *
+ * $RCSfile: olinewin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "olinewin.hxx"
+#include "olinetab.hxx"
+#include "document.hxx" // GetOutline
+#include "sc.hrc"
+#include "dbfunc.hxx" // Funktionen
+
+#define SC_OL_BITMAPSIZE 12
+
+#define SC_OL_IMAGE_PLUS 9
+#define SC_OL_IMAGE_MINUS 10
+
+// STATIC DATA -----------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
+
+//==================================================================
+#pragma SEG_FUNCDEF(olinewin_03)
+
+ScOutlineWindow::ScOutlineWindow( Window* pParent, ScOutlineMode eNewMode,
+ ScViewData* pData, ScSplitPos eNewWhich ) :
+ Window( pParent ),
+ eMode( eNewMode ),
+ pViewData( pData ),
+ eWhich( eNewWhich ),
+ nHeaderSize( 0 ),
+ bHitMode( FALSE ),
+ aColor( COL_BLACK )
+{
+ ImplInitSettings();
+}
+
+#pragma SEG_FUNCDEF(olinewin_04)
+
+__EXPORT ScOutlineWindow::~ScOutlineWindow()
+{
+}
+
+#pragma SEG_FUNCDEF(olinewin_11)
+
+BOOL ScOutlineWindow::IsFirst(USHORT nPos)
+{
+ // sind alle Spalten vor dieser ausgeblendet?
+
+ BOOL bHor = (eMode==SC_OUTLINE_HOR);
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ for (;;)
+ {
+ if (nPos==0)
+ return TRUE;
+ BOOL bHidden;
+ if (bHor)
+ bHidden = (pDoc->GetColFlags(nPos-1,nTab)&CR_HIDDEN)!=0;
+ else
+ bHidden = (pDoc->GetRowFlags(nPos-1,nTab)&CR_HIDDEN)!=0;
+ if (bHidden)
+ --nPos;
+ else
+ return FALSE;
+ }
+}
+
+#pragma SEG_FUNCDEF(olinewin_05)
+
+BOOL ScOutlineWindow::GetEntryPos( ScOutlineEntry* pEntry,
+ long& rFirstEntry, long& rSecondEntry, long& rBitmapEntry,
+ ScOutlineEntry* pPrevious )
+{
+ BOOL bHor = (eMode==SC_OUTLINE_HOR);
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+
+ USHORT nStart = pEntry->GetStart();
+ USHORT nEnd = pEntry->GetEnd();
+
+ if (bHor)
+ {
+ rFirstEntry = nHeaderSize + pViewData->GetScrPos( nStart, 0, eWhich, TRUE ).X();
+ rSecondEntry = nHeaderSize + pViewData->GetScrPos( nEnd+1, 0, eWhich, TRUE ).X();
+ }
+ else
+ {
+ rFirstEntry = nHeaderSize + pViewData->GetScrPos( 0, nStart, eWhich, TRUE ).Y();
+ rSecondEntry = nHeaderSize + pViewData->GetScrPos( 0, nEnd+1, eWhich, TRUE ).Y();
+ }
+ // bAllowNeg = TRUE bei GetScrPos -> auch ausserhalb des sichtbaren Bereichs weiterzaehlen,
+ // sonst wuerde die Bitmap nach oben geschoben, wenn die Position ganz unten ist.
+
+ BOOL bHidden;
+ if (bHor)
+ bHidden = (pDoc->GetColFlags(nStart,nTab)&CR_HIDDEN)!=0;
+ else
+ bHidden = (pDoc->GetRowFlags(nStart,nTab)&CR_HIDDEN)!=0;
+
+ if (bHidden)
+ rBitmapEntry = rFirstEntry - SC_OL_BITMAPSIZE / 2;
+ else
+ rBitmapEntry = rFirstEntry + 1;
+ rBitmapEntry = Min( (long)rBitmapEntry,
+ (long)(( rFirstEntry+rSecondEntry-SC_OL_BITMAPSIZE ) / 2 ));
+
+ // Anpassungen
+
+ if (bHidden && IsFirst(nStart))
+ rBitmapEntry = rFirstEntry; // ganz links nicht abschneiden
+
+ if (!bHidden && pPrevious) // ausgeblendeten nicht mit naechstem verdecken
+ {
+ USHORT nPrevEnd = pPrevious->GetEnd();
+ if (nPrevEnd+1 == nStart)
+ {
+ BOOL bPrevHidden;
+ if (bHor)
+ bPrevHidden = (pDoc->GetColFlags(nPrevEnd,nTab)&CR_HIDDEN)!=0;
+ else
+ bPrevHidden = (pDoc->GetRowFlags(nPrevEnd,nTab)&CR_HIDDEN)!=0;
+
+ if (bPrevHidden)
+ {
+ if ( IsFirst( pPrevious->GetStart() ) )
+ rBitmapEntry = rFirstEntry + SC_OL_BITMAPSIZE;
+ else
+ rBitmapEntry = rFirstEntry + SC_OL_BITMAPSIZE / 2;
+ }
+ }
+ }
+
+ // rFirstEntry und rSecondEntry koennen auf den sichtbaren Bereich begrenzt werden,
+ // der "Haken" unten/rechts wird nur gezeichnet, wenn die letzte Zelle sichtbar ist.
+ // Ohne Begrenzung wird in die Ziffernfelder hineingemalt.
+ if ( rFirstEntry < nHeaderSize )
+ rFirstEntry = nHeaderSize;
+ if ( rSecondEntry < nHeaderSize )
+ rSecondEntry = nHeaderSize;
+
+ // Filter
+
+ BOOL bVisible;
+ if (bHor)
+ bVisible = TRUE; // horizontal: keine Filter
+ else
+ {
+ bVisible = FALSE;
+ USHORT nRow;
+ for (nRow=nStart; nRow<=nEnd && !bVisible; nRow++)
+ if (!pDoc->IsFiltered(nRow,nTab))
+ bVisible = TRUE;
+ }
+
+ return bVisible;
+}
+
+#define GETPREV(nLevel,nEntryNo) (nEntryNo ? pArray->GetEntry( nLevel, nEntryNo-1 ) : 0)
+
+#pragma SEG_FUNCDEF(olinewin_06)
+
+void __EXPORT ScOutlineWindow::Paint( const Rectangle& rRect )
+{
+ ImageList* pBitmaps = ScGlobal::GetOutlineBitmaps();
+
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (!pTable)
+ return;
+
+ double nPPTX = pViewData->GetPPTX();
+ double nPPTY = pViewData->GetPPTY();
+ BOOL bHor = (eMode==SC_OUTLINE_HOR);
+ ScOutlineArray* pArray = bHor ? pTable->GetColArray() : pTable->GetRowArray();
+ USHORT nDepth = pArray->GetDepth();
+ USHORT nLevel;
+
+ Size aSize = GetOutputSizePixel();
+ long nAllSize = bHor ? aSize.Height() : aSize.Width();
+ long nDestPos = nAllSize - 1;
+
+ SetLineColor( aColor );
+
+ if (bHor)
+ DrawLine(Point(0,nDestPos), Point(aSize.Width()-1,nDestPos));
+ else
+ DrawLine(Point(nDestPos,0), Point(nDestPos,aSize.Height()-1));
+
+ Point aFirstPos;
+ long& nFirstLevel = bHor ? aFirstPos.Y() : aFirstPos.X();
+ long& nFirstEntry = bHor ? aFirstPos.X() : aFirstPos.Y();
+
+ Point aSecondPos;
+ long& nSecondLevel = bHor ? aSecondPos.Y() : aSecondPos.X();
+ long& nSecondEntry = bHor ? aSecondPos.X() : aSecondPos.Y();
+
+ if (nHeaderSize)
+ {
+ // Ebenen - Nummern
+ //
+
+ nFirstEntry = ( nHeaderSize - SC_OL_BITMAPSIZE ) / 2;
+ nFirstLevel = ( nAllSize - (nDepth+1) * SC_OL_BITMAPSIZE ) / 2;
+
+ for (nLevel=0; nLevel<=nDepth; nLevel++)
+ {
+ DrawImage( aFirstPos, pBitmaps->GetImage(nLevel+1) );
+ nFirstLevel += SC_OL_BITMAPSIZE;
+ }
+
+ long nStart = nHeaderSize-1;
+ if (bHor)
+ DrawLine(Point(nStart,0),Point(nStart,nDestPos));
+ else
+ DrawLine(Point(0,nStart),Point(nDestPos,nStart));
+ }
+
+ USHORT nStartIndex;
+ USHORT nEndIndex;
+ if (bHor)
+ {
+ nStartIndex = pViewData->GetPosX( WhichH(eWhich) );
+ nEndIndex = nStartIndex + pViewData->VisibleCellsX( WhichH(eWhich) );
+ while ( nStartIndex>0 ? (pDoc->GetColFlags(nStartIndex-1,nTab) & CR_HIDDEN) : FALSE )
+ --nStartIndex;
+ }
+ else
+ {
+ nStartIndex = pViewData->GetPosY( WhichV(eWhich) );
+ nEndIndex = nStartIndex + pViewData->VisibleCellsY( WhichV(eWhich) );
+ while ( nStartIndex>0 ? (pDoc->GetRowFlags(nStartIndex-1,nTab) & CR_HIDDEN) : FALSE )
+ --nStartIndex;
+ }
+
+ //
+ // Outline-Gruppen
+ //
+
+ nFirstLevel = ( nAllSize - (nDepth+1) * SC_OL_BITMAPSIZE ) / 2;
+ for (nLevel=0; nLevel<nDepth; nLevel++)
+ {
+ short nEntryCount = (short) pArray->GetCount( nLevel );
+ short nEntryNo;
+ for (nEntryNo=0; nEntryNo<nEntryCount; nEntryNo++)
+ {
+ ScOutlineEntry* pEntry = pArray->GetEntry( nLevel, nEntryNo );
+ BOOL bDoThis = FALSE;
+
+ long nBitmapEntry;
+ USHORT nStart = pEntry->GetStart();
+ USHORT nEnd = pEntry->GetEnd();
+
+ if ( nEnd >= nStartIndex && nStart <= nEndIndex )
+ if (GetEntryPos( pEntry, nFirstEntry, nSecondEntry, nBitmapEntry, GETPREV(nLevel,nEntryNo) ))
+ if (pEntry->IsVisible()) // nicht von hoeherer Ebene verdeckt
+ bDoThis = TRUE;
+
+ if (bDoThis)
+ {
+ Point aOldFirstPos = aFirstPos;
+ BOOL bDraw = FALSE;
+ BOOL bLeftOut = ( nStart < nStartIndex );
+
+ if (pEntry->IsHidden())
+ bDraw = FALSE; // ausgeblendet
+ else
+ bDraw = TRUE; // eingeblendet
+
+ if (bDraw)
+ {
+ SetLineColor();
+
+ nSecondLevel = nFirstLevel;
+ nSecondLevel += 1;
+ if (!bLeftOut)
+ nFirstEntry += 1;
+ nSecondEntry -= 2;
+ DrawRect( Rectangle( aFirstPos, aSecondPos ) ); // Linie
+
+ if ( nEnd <= nEndIndex )
+ {
+ aFirstPos = aSecondPos;
+ nFirstEntry -= 1;
+ nSecondLevel += SC_OL_BITMAPSIZE / 3;
+ DrawRect( Rectangle( aFirstPos, aSecondPos ) ); // rechts
+ }
+
+ // links wird von Bitmap verdeckt
+ }
+
+ aFirstPos = aOldFirstPos;
+ }
+ }
+
+ for (nEntryNo=nEntryCount-1; nEntryNo>=0; nEntryNo--) // short
+ {
+ ScOutlineEntry* pEntry = pArray->GetEntry( nLevel, nEntryNo );
+ BOOL bDoThis = FALSE;
+
+ long nBitmapEntry;
+ USHORT nStart = pEntry->GetStart();
+ USHORT nEnd = pEntry->GetEnd();
+
+ if ( nEnd >= nStartIndex && nStart <= nEndIndex + 1 ) // +1 wegen Verschiebung
+ if (GetEntryPos( pEntry, nFirstEntry, nSecondEntry, nBitmapEntry, GETPREV(nLevel,nEntryNo) ))
+ if (pEntry->IsVisible()) // nicht von hoeherer Ebene verdeckt
+ bDoThis = TRUE;
+
+ if (bDoThis)
+ {
+ Point aOldFirstPos = aFirstPos;
+ BOOL bLeftOut = ( nStart < nStartIndex );
+
+ if (!bLeftOut)
+ {
+ aFirstPos = aOldFirstPos;
+ nFirstEntry = nBitmapEntry;
+
+ BOOL bClip = ( nBitmapEntry < (long) nHeaderSize );
+ if (bClip)
+ {
+ if (bHor)
+ SetClipRegion( Rectangle( Point(nHeaderSize,0),
+ Point(aSize.Width()-1,aSize.Height()-1) ) );
+ else
+ SetClipRegion( Rectangle( Point(0,nHeaderSize),
+ Point(aSize.Width()-1,aSize.Height()-1) ) );
+ }
+
+ if (pEntry->IsHidden())
+ DrawImage( aFirstPos, pBitmaps->GetImage(SC_OL_IMAGE_PLUS) );
+ else
+ DrawImage( aFirstPos, pBitmaps->GetImage(SC_OL_IMAGE_MINUS) );
+
+ if (bClip)
+ SetClipRegion();
+ }
+
+ aFirstPos = aOldFirstPos;
+ }
+ }
+
+ nFirstLevel += SC_OL_BITMAPSIZE;
+ }
+}
+
+#pragma SEG_FUNCDEF(olinewin_07)
+
+void ScOutlineWindow::ToggleRect( const Rectangle& rRect )
+{
+ Update();
+ Invert( Rectangle( rRect.Left()+1, rRect.Top()+1, rRect.Right()-2, rRect.Top()+1 ) );
+ Invert( Rectangle( rRect.Left()+1, rRect.Top()+2, rRect.Left()+1, rRect.Bottom()-2 ) );
+}
+
+#pragma SEG_FUNCDEF(olinewin_08)
+
+BOOL ScOutlineWindow::ButtonHit( const Point& rPos, USHORT& rLevel, USHORT& rEntry, BOOL& rHeader,
+ Rectangle& rInvRect )
+{
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (!pTable)
+ return FALSE;
+
+ BOOL bHor = (eMode==SC_OUTLINE_HOR);
+ ScOutlineArray* pArray = bHor ? pTable->GetColArray() : pTable->GetRowArray();
+ USHORT nDepth = pArray->GetDepth();
+ Size aSize = GetOutputSizePixel();
+ long nAllSize = bHor ? aSize.Height() : aSize.Width();
+
+ USHORT nStartIndex;
+ USHORT nEndIndex;
+ if (bHor)
+ {
+ nStartIndex = pViewData->GetPosX( WhichH(eWhich) );
+ nEndIndex = nStartIndex + pViewData->VisibleCellsX( WhichH(eWhich) );
+ while ( nStartIndex>0 ? (pDoc->GetColFlags(nStartIndex-1,nTab) & CR_HIDDEN) : FALSE )
+ --nStartIndex;
+ }
+ else
+ {
+ nStartIndex = pViewData->GetPosY( WhichV(eWhich) );
+ nEndIndex = nStartIndex + pViewData->VisibleCellsY( WhichV(eWhich) );
+ while ( nStartIndex>0 ? (pDoc->GetRowFlags(nStartIndex-1,nTab) & CR_HIDDEN) : FALSE )
+ --nStartIndex;
+ }
+
+ long nEntryPos;
+ long nLevelPos;
+ long nEntryMouse = bHor ? rPos.X() : rPos.Y();
+ long nLevelMouse = bHor ? rPos.Y() : rPos.X();
+
+ USHORT nLevel;
+ nLevelPos = ( nAllSize - (nDepth+1) * SC_OL_BITMAPSIZE ) / 2;
+ for (nLevel=0; nLevel<=nDepth; nLevel++)
+ {
+ if ( nLevelMouse >= nLevelPos && nLevelMouse <= nLevelPos + SC_OL_BITMAPSIZE )
+ {
+ if (nHeaderSize) // Ebenen-Nummern
+ {
+ nEntryPos = ( nHeaderSize - SC_OL_BITMAPSIZE ) / 2;
+ if ( nEntryMouse >= nEntryPos && nEntryMouse <= nEntryPos + SC_OL_BITMAPSIZE )
+ {
+ rLevel = nLevel;
+ rEntry = 0;
+ rHeader = TRUE;
+ if (bHor)
+ rInvRect = Rectangle( Point( nEntryPos, nLevelPos ),
+ Size( SC_OL_BITMAPSIZE, SC_OL_BITMAPSIZE ) );
+ else
+ rInvRect = Rectangle( Point( nLevelPos, nEntryPos ),
+ Size( SC_OL_BITMAPSIZE, SC_OL_BITMAPSIZE ) );
+ return TRUE;
+ }
+ }
+
+ if (nLevel<nDepth) // Outline-Handles
+ {
+ USHORT nEntryCount = pArray->GetCount( nLevel );
+ for (USHORT nEntryNo=0; nEntryNo<nEntryCount; nEntryNo++)
+ {
+ ScOutlineEntry* pEntry = pArray->GetEntry( nLevel, nEntryNo );
+
+ USHORT nStart = pEntry->GetStart();
+ if ( nStart >= nStartIndex && nStart <= nEndIndex )
+ {
+ long nDummy1;
+ long nDummy2;
+ if (GetEntryPos( pEntry, nDummy1, nDummy2, nEntryPos, GETPREV(nLevel,nEntryNo) ))
+ {
+ if (pEntry->IsVisible())
+ {
+ if ( nEntryMouse >= nEntryPos && nEntryMouse <= nEntryPos + SC_OL_BITMAPSIZE )
+ {
+ rLevel = nLevel;
+ rEntry = nEntryNo;
+ rHeader = FALSE;
+ if (bHor)
+ rInvRect = Rectangle( Point( nEntryPos, nLevelPos ),
+ Size( SC_OL_BITMAPSIZE, SC_OL_BITMAPSIZE ) );
+ else
+ rInvRect = Rectangle( Point( nLevelPos, nEntryPos ),
+ Size( SC_OL_BITMAPSIZE, SC_OL_BITMAPSIZE ) );
+ return TRUE;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ nLevelPos += SC_OL_BITMAPSIZE;
+ }
+
+ return FALSE;
+}
+
+#pragma SEG_FUNCDEF(olinewin_09)
+
+BOOL ScOutlineWindow::LineHit( const Point& rPos, USHORT& rLevel, USHORT& rEntry )
+{
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (!pTable)
+ return FALSE;
+
+ BOOL bHor = (eMode==SC_OUTLINE_HOR);
+ ScOutlineArray* pArray = bHor ? pTable->GetColArray() : pTable->GetRowArray();
+ USHORT nDepth = pArray->GetDepth();
+ Size aSize = GetOutputSizePixel();
+ long nAllSize = bHor ? aSize.Height() : aSize.Width();
+
+ USHORT nStartIndex;
+ USHORT nEndIndex;
+ if (bHor)
+ {
+ nStartIndex = pViewData->GetPosX( WhichH(eWhich) );
+ nEndIndex = nStartIndex + pViewData->VisibleCellsX( WhichH(eWhich) );
+ }
+ else
+ {
+ nStartIndex = pViewData->GetPosY( WhichV(eWhich) );
+ nEndIndex = nStartIndex + pViewData->VisibleCellsY( WhichV(eWhich) );
+ }
+
+ long nEntryStart;
+ long nEntryEnd;
+ long nLevelPos;
+ long nEntryMouse = bHor ? rPos.X() : rPos.Y();
+ long nLevelMouse = bHor ? rPos.Y() : rPos.X();
+
+ USHORT nLevel;
+ nLevelPos = ( nAllSize - (nDepth+1) * SC_OL_BITMAPSIZE ) / 2;
+ for (nLevel=0; nLevel<nDepth; nLevel++)
+ {
+ if ( nLevelMouse >= nLevelPos && nLevelMouse <= nLevelPos + SC_OL_BITMAPSIZE / 2 )
+ {
+ ScOutlineEntry* pEntry;
+ USHORT nEntryNo = pArray->GetCount( nLevel ); // Rueckwaerts !
+ while (nEntryNo)
+ {
+ --nEntryNo;
+ pEntry = pArray->GetEntry( nLevel, nEntryNo );
+
+ USHORT nStart = pEntry->GetStart();
+ USHORT nEnd = pEntry->GetEnd();
+ if ( nEnd >= nStartIndex && nStart <= nEndIndex )
+ {
+ long nDummy;
+ if (GetEntryPos( pEntry, nEntryStart, nEntryEnd, nDummy, GETPREV(nLevel,nEntryNo) ))
+ {
+ if (pEntry->IsVisible())
+ {
+ if ( nEntryMouse >= nEntryStart && nEntryMouse < nEntryEnd )
+ {
+ rLevel = nLevel;
+ rEntry = nEntryNo;
+ return TRUE;
+ }
+ }
+ }
+ }
+ }
+ }
+ nLevelPos += SC_OL_BITMAPSIZE;
+ }
+
+ return FALSE;
+}
+
+#pragma SEG_FUNCDEF(olinewin_0a)
+
+void ScOutlineWindow::DoFunction( USHORT nLevel, USHORT nEntry, BOOL bHeader )
+{
+ BOOL bHor = (eMode==SC_OUTLINE_HOR);
+
+ if (bHeader)
+ pViewData->GetView()->SelectLevel( bHor, nLevel );
+ else
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ ScOutlineArray* pArray = bHor ? pTable->GetColArray() : pTable->GetRowArray();
+ ScOutlineEntry* pEntry = pArray->GetEntry( nLevel, nEntry );
+
+ if (pEntry->IsHidden())
+ pViewData->GetView()->ShowOutline( bHor, nLevel, nEntry );
+ else
+ pViewData->GetView()->HideOutline( bHor, nLevel, nEntry );
+ }
+}
+
+#pragma SEG_FUNCDEF(olinewin_0b)
+
+void __EXPORT ScOutlineWindow::MouseMove( const MouseEvent& rMEvt )
+{
+ USHORT nLevel;
+ USHORT nEntry;
+ BOOL bHeader;
+ Rectangle aDummyRect;
+
+ if ( bHitMode )
+ {
+ BOOL bHit = FALSE;
+ if ( ButtonHit( rMEvt.GetPosPixel(), nLevel, nEntry, bHeader, aDummyRect ) )
+ if ( nLevel == nHitLevel && nEntry == nHitEntry && bHeader == bHitHeader )
+ bHit = TRUE;
+
+ if (bHit)
+ {
+ if (!bIsInverted)
+ ToggleRect( aInvRect );
+ bIsInverted = TRUE;
+ }
+ else
+ {
+ if (bIsInverted)
+ ToggleRect( aInvRect );
+ bIsInverted = FALSE;
+ }
+ }
+}
+
+#pragma SEG_FUNCDEF(olinewin_0c)
+
+void __EXPORT ScOutlineWindow::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ USHORT nLevel;
+ USHORT nEntry;
+ BOOL bHeader;
+ Rectangle aDummyRect;
+
+ if ( bHitMode )
+ {
+ if ( bIsInverted )
+ ToggleRect( aInvRect );
+
+ if ( ButtonHit( rMEvt.GetPosPixel(), nLevel, nEntry, bHeader, aDummyRect ) )
+ if ( nLevel == nHitLevel && nEntry == nHitEntry && bHeader == bHitHeader )
+ DoFunction( nLevel, nEntry, bHeader );
+
+ bHitMode = FALSE;
+ }
+}
+
+#pragma SEG_FUNCDEF(olinewin_0d)
+
+void __EXPORT ScOutlineWindow::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ USHORT nLevel;
+ USHORT nEntry;
+ BOOL bHeader;
+
+ if ( ButtonHit( rMEvt.GetPosPixel(), nLevel, nEntry, bHeader, aInvRect ) )
+ {
+ bHitMode = TRUE;
+ nHitLevel = nLevel;
+ nHitEntry = nEntry;
+ bHitHeader = bHeader;
+
+ ToggleRect( aInvRect );
+ bIsInverted = TRUE;
+ }
+ else if ( rMEvt.GetClicks() == 2 )
+ {
+ if ( LineHit( rMEvt.GetPosPixel(), nLevel, nEntry ) )
+ DoFunction( nLevel, nEntry, FALSE );
+ }
+}
+
+#pragma SEG_FUNCDEF(olinewin_0e)
+
+void ScOutlineWindow::SetHeaderSize( USHORT nNewSize )
+{
+ if ( nNewSize != nHeaderSize )
+ {
+ nHeaderSize = nNewSize;
+ Invalidate();
+ }
+}
+
+#pragma SEG_FUNCDEF(olinewin_0f)
+
+long ScOutlineWindow::GetDepthSize()
+{
+ long nSize = 0;
+
+ const ScOutlineTable* pTable = pViewData->GetDocument()->GetOutlineTable(pViewData->GetTabNo());
+ if (pTable)
+ {
+ BOOL bHor = (eMode==SC_OUTLINE_HOR);
+ const ScOutlineArray* pArray = bHor ? pTable->GetColArray() : pTable->GetRowArray();
+ USHORT nDepth = pArray->GetDepth();
+
+ if ( nDepth )
+ nSize = ( (nDepth+1) * SC_OL_BITMAPSIZE ) + 5;
+ }
+
+ return nSize;
+}
+
+#pragma SEG_FUNCDEF(olinewin_10)
+
+void ScOutlineWindow::ScrollPixel( long nDiff )
+{
+ BOOL bHor = (eMode==SC_OUTLINE_HOR);
+ if (nHeaderSize)
+ {
+ long nStart = nHeaderSize;
+ long nEnd;
+ long nSize;
+ Size aSize = GetOutputSizePixel();
+ if (bHor)
+ {
+ nEnd = aSize.Width() - 1;
+ nSize = aSize.Height() - 1;
+ }
+ else
+ {
+ nEnd = aSize.Height() - 1;
+ nSize = aSize.Width() - 1;
+ }
+ long nInvStart;
+ long nInvEnd;
+
+ if (nDiff < 0)
+ {
+ nStart -= nDiff;
+ nInvStart = nEnd + nDiff;
+ nInvEnd = nEnd;
+ }
+ else
+ {
+ nEnd -= nDiff;
+ nInvStart = nStart;
+ nInvEnd = nStart + nDiff;
+ }
+
+ if (bHor)
+ {
+ Scroll( nDiff, 0, Rectangle( nStart, 0, nEnd, nSize ) );
+ Invalidate( Rectangle( nInvStart, 0, nInvEnd, nSize ) );
+ }
+ else
+ {
+ Scroll( 0, nDiff, Rectangle( 0, nStart, nSize, nEnd ) );
+ Invalidate( Rectangle( 0, nInvStart, nSize, nInvEnd ) );
+ }
+ Update();
+ }
+ else
+ {
+ if (bHor)
+ Scroll( nDiff, 0 );
+ else
+ Scroll( 0, nDiff );
+ }
+}
+
+void ScOutlineWindow::ImplInitSettings()
+{
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ SetBackground( rStyleSettings.GetFaceColor() );
+ SetFillColor( rStyleSettings.GetButtonTextColor() );
+ aColor = rStyleSettings.GetButtonTextColor();
+
+ Invalidate();
+
+
+}
+// -----------------------------------------------------------------------
+
+void ScOutlineWindow::DataChanged( const DataChangedEvent& rDCEvt )
+{
+ if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
+ (rDCEvt.GetFlags() & SETTINGS_STYLE) )
+ {
+ ImplInitSettings();
+ Invalidate();
+ }
+ else
+ Window::DataChanged( rDCEvt );
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.28 2000/09/17 14:09:33 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.27 2000/08/31 16:38:46 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.26 2000/05/26 15:07:52 er
+ NOOLDSV
+
+ Revision 1.25 1998/08/31 18:17:42 ANK
+ #54242# Farbeinstellung
+
+
+ Rev 1.24 31 Aug 1998 20:17:42 ANK
+ #54242# Farbeinstellung
+
+ Rev 1.23 02 Mar 1998 12:42:18 NN
+ #44879# 3D-Farben aus StyleSettings
+
+ Rev 1.22 16 Oct 1997 12:48:42 NN
+ Paint: Rechteck fuer den Haken richtigherum
+
+ Rev 1.21 07 Oct 1997 19:03:30 NN
+ GetEntryPos: First/SecondEntry begrenzen
+
+ Rev 1.20 07 Oct 1997 15:13:20 NN
+ GetEntryPos: GetScrPos mit bAllowNeg=TRUE
+
+ Rev 1.19 10 Sep 1997 20:19:26 NN
+ IsFirst: Hidden-Abfrage fuer vorangehende Zeile/Spalte
+
+ Rev 1.18 18 Apr 1996 14:58:30 NN
+ auch verschobene Buttons ganz unten painten
+
+ Rev 1.17 14 Feb 1996 20:38:02 NN
+ ButtonHit: ausgeblendete Zeilen oberhalb ueberspringen
+
+ Rev 1.16 20 Dec 1995 18:23:20 NN
+ doppelte Korrektur, wenn ganz links ausgeblendete Gruppe, dann sichtbare
+
+ Rev 1.15 14 Dec 1995 22:53:06 NN
+ Korrekturen bei der Position der Bitmaps (14806)
+
+ Rev 1.14 08 Nov 1995 13:07:32 JN
+ Aenderung fuer 301
+
+ Rev 1.13 04 Jul 1995 11:52:56 NN
+ Reihenfolge der Handle-Bitmaps
+
+ Rev 1.12 24 Jun 1995 17:12:40 NN
+ GetPPTX und Y statt GetPixelPerTwips
+
+ Rev 1.11 20 Apr 1995 19:30:00 NN
+ Imagelist fuer Outline-Bitmaps
+
+ Rev 1.10 29 Jan 1995 13:22:16 NN
+ include dbfunc statt tabview
+
+ Rev 1.9 27 Jan 1995 12:14:20 TRI
+ __EXPORT bei virtuellen Methoden eingebaut
+
+ Rev 1.8 24 Jan 1995 12:43:54 TRI
+ NT Anpassung: zwei long-casts in Min Funktion eingefuegt
+
+ Rev 1.7 20 Jan 1995 17:15:42 NN
+ komplett weggefilterte Outlines nicht anzeigen
+
+ Rev 1.6 18 Jan 1995 15:58:24 TRI
+ Pragmas zur Segementierung eingebaut
+
+ Rev 1.5 03 Jan 1995 18:22:54 NN
+ Doppelklick auf Linie
+
+ Rev 1.4 23 Dec 1994 14:40:16 NN
+ Clipping des linken Buttons
+
+ Rev 1.3 22 Dec 1994 17:29:12 NN
+ Handles nach vorn, innerhalb der Gruppe verschoben
+
+ Rev 1.2 21 Dec 1994 10:51:54 NN
+ ausgeblendete Spalten am Anfang beruecksichtigen
+
+ Rev 1.1 19 Dec 1994 18:23:16 NN
+ Mausabfrage
+
+ Rev 1.0 16 Dec 1994 14:43:46 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/view/olkact.cxx b/sc/source/ui/view/olkact.cxx
new file mode 100644
index 000000000000..ee17cdb2129b
--- /dev/null
+++ b/sc/source/ui/view/olkact.cxx
@@ -0,0 +1,318 @@
+/*************************************************************************
+ *
+ * $RCSfile: olkact.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _CTRLTOOL_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+#define _FILDLG_HXX
+#define _FONTDLG_HXX
+#define _FRM3D_HXX
+#define _INTRO_HXX
+#define _ISETBWR_HXX
+#define _NO_SVRTF_PARSER_HXX
+#define _MACRODLG_HXX
+#define _MODALDLG_HXX
+#define _MOREBUTTON_HXX
+#define _OUTLINER_HXX
+#define _PASSWD_HXX
+#define _PRNDLG_HXX
+//#define _POLY_HXX
+#define _PVRWIN_HXX
+#define _QUEUE_HXX
+#define _RULER_HXX
+#define _SCRWIN_HXX
+#define _SETBRW_HXX
+#define _STACK_HXX
+//#define _STATUS_HXX ***
+#define _STDMENU_HXX
+#define _TABBAR_HXX
+//#define _VCBRW_HXX
+#define _VCTRLS_HXX
+//#define _VCSBX_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+
+
+//sfx
+#define _SFXAPPWIN_HXX
+#define _SFXCTRLITEM
+#define _SFXDISPATCH_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXIPFRM_HXX
+#define _SFX_MACRO_HXX
+#define _SFXMULTISEL_HXX
+#define _SFX_MINFITEM_HXX
+
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX ***
+//#define _SFXOBJFACE_HXX ***
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX ***
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX ***
+//#define _SFXDOCTDLG_HXX ***
+//#define _SFX_TEMPLDLG_HXX ***
+//#define _SFXNEW_HXX ***
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+
+
+
+#define _SFXBASIC_HXX
+#define _SFX_DOCFILE_HXX
+#define _SFX_DOCFILT_HXX
+#define _SFX_DOCINF_HXX
+#define _SFX_DOCSH_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXREQUEST_HXX
+#define _SFXOBJFACE_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSG_HXX
+#define _SFX_PRNMON_HXX
+
+//si
+#define _SI_NOSBXCONTROLS
+#define _SI_NOCONTROL
+//#define SI_NOITEMS
+//#define SI_NODRW
+//#define SI_NOOTHERFORMS
+#define _SIDLL_HXX
+//#define _VCSBX_HXX
+//#define _VCBRW_HXX
+
+//#define _SVDATTR_HXX <--- der wars
+#define _SVDXOUT_HXX
+#define _SVDEC_HXX
+//#define _SVDIO_HXX
+//#define _SVDLAYER_HXX
+//#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+#define _SVTABBX_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sfx2/childwin.hxx>
+#include <sfx2/objsh.hxx>
+
+#include "document.hxx"
+#include "viewdata.hxx"
+#include "drawview.hxx"
+#include "drawpage.hxx"
+#include "drwlayer.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+// -----------------------------------------------------------------------
+
+void ActivateOlk( ScViewData* pViewData )
+{
+ // Browser fuer Virtual Controls fuellen
+ // VC's und den Browser dazu gibts nicht mehr...
+
+ // GetSbxForm gibt's nicht mehr, muss auch nichts mehr angemeldet werden
+}
+
+void DeActivateOlk( ScViewData* pViewData )
+{
+ // Browser fuer Virtual Controls fuellen
+ // VC's und den Browser dazu gibts nicht mehr...
+
+ // GetSbxForm gibt's nicht mehr, muss auch nichts mehr angemeldet werden
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/output.cxx b/sc/source/ui/view/output.cxx
new file mode 100644
index 000000000000..ec2598983828
--- /dev/null
+++ b/sc/source/ui/view/output.cxx
@@ -0,0 +1,2684 @@
+/*************************************************************************
+ *
+ * $RCSfile: output.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/boxitem.hxx>
+#include <svx/brshitem.hxx>
+#include <svx/rotmodit.hxx>
+#include <svx/shaditem.hxx>
+#include <svx/svxfont.hxx>
+#include <so3/ipobj.hxx>
+#include <vcl/poly.hxx>
+#include <vcl/svapp.hxx>
+
+#include <math.h>
+
+#include "output.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "attrib.hxx"
+#include "patattr.hxx"
+#include "sclnlnk.hxx"
+#include "docpool.hxx"
+#include "tabvwsh.hxx"
+#include "progress.hxx"
+#include "pagedata.hxx"
+#include "chgtrack.hxx"
+#include "chgviset.hxx"
+#include "viewutil.hxx"
+#include "gridmerg.hxx"
+#include "invmerge.hxx"
+
+#include "scmod.hxx"
+#include "appoptio.hxx"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+// Farben fuer ChangeTracking "nach Autor" wie im Writer (swmodul1.cxx)
+
+#define SC_AUTHORCOLORCOUNT 9
+
+static ColorData nAuthorColor[ SC_AUTHORCOLORCOUNT ] = {
+ COL_LIGHTRED, COL_LIGHTBLUE, COL_LIGHTMAGENTA,
+ COL_GREEN, COL_RED, COL_BLUE,
+ COL_BROWN, COL_MAGENTA, COL_CYAN };
+
+// Hilfsklasse, fuer die Farbzuordnung,
+// um nicht mehrfach hintereinander denselben User aus der Liste zu suchen
+
+class ScActionColorChanger
+{
+private:
+ const ScAppOptions& rOpt;
+ const StrCollection& rUsers;
+ String aLastUserName;
+ USHORT nLastUserIndex;
+ ColorData nColor;
+
+public:
+ ScActionColorChanger( const ScChangeTrack& rTrack );
+ ~ScActionColorChanger() {}
+
+ void Update( const ScChangeAction& rAction );
+ ColorData GetColor() const { return nColor; }
+};
+
+//------------------------------------------------------------------
+
+ScActionColorChanger::ScActionColorChanger( const ScChangeTrack& rTrack ) :
+ rOpt( SC_MOD()->GetAppOptions() ),
+ rUsers( rTrack.GetUserCollection() ),
+ nLastUserIndex( 0 ),
+ nColor( COL_BLACK )
+{
+}
+
+void ScActionColorChanger::Update( const ScChangeAction& rAction )
+{
+ ColorData nSetColor;
+ switch (rAction.GetType())
+ {
+ case SC_CAT_INSERT_COLS:
+ case SC_CAT_INSERT_ROWS:
+ case SC_CAT_INSERT_TABS:
+ nSetColor = rOpt.GetTrackInsertColor();
+ break;
+ case SC_CAT_DELETE_COLS:
+ case SC_CAT_DELETE_ROWS:
+ case SC_CAT_DELETE_TABS:
+ nSetColor = rOpt.GetTrackDeleteColor();
+ break;
+ case SC_CAT_MOVE:
+ nSetColor = rOpt.GetTrackMoveColor();
+ break;
+ default:
+ nSetColor = rOpt.GetTrackContentColor();
+ break;
+ }
+ if ( nSetColor != COL_TRANSPARENT ) // Farbe eingestellt
+ nColor = nSetColor;
+ else // nach Autor
+ {
+ if ( rAction.GetUser() != aLastUserName )
+ {
+ aLastUserName = rAction.GetUser();
+ StrData aData(aLastUserName);
+ USHORT nIndex;
+ if (!rUsers.Search(&aData, nIndex))
+ {
+ DBG_ERROR("Autor nicht gefunden");
+ nIndex = 0;
+ }
+ nLastUserIndex = nIndex % SC_AUTHORCOLORCOUNT;
+ }
+ nColor = nAuthorColor[nLastUserIndex];
+ }
+}
+
+//==================================================================
+
+ScOutputData::ScOutputData( OutputDevice* pNewDev, ScOutputType eNewType,
+ RowInfo* pNewRowInfo, USHORT nNewCount, ScDocument* pNewDoc,
+ USHORT nNewTab, long nNewScrX, long nNewScrY,
+ USHORT nNewX1, USHORT nNewY1, USHORT nNewX2, USHORT nNewY2,
+ double nPixelPerTwipsX, double nPixelPerTwipsY,
+ const Fraction* pZoomX, const Fraction* pZoomY ) :
+ pDev( pNewDev ),
+ pRefDevice( pNewDev ), // Default: Ausgabe-Device
+ eType( eNewType ),
+ pRowInfo( pNewRowInfo ),
+ nArrCount( nNewCount ),
+ pDoc( pNewDoc ),
+ nTab( nNewTab ),
+ nScrX( nNewScrX ),
+ nScrY( nNewScrY ),
+ nX1( nNewX1 ),
+ nY1( nNewY1 ),
+ nX2( nNewX2 ),
+ nY2( nNewY2 ),
+ nPPTX( nPixelPerTwipsX ),
+ nPPTY( nPixelPerTwipsY ),
+ bEditMode( FALSE ),
+ bMetaFile( FALSE ),
+ bPagebreakMode( FALSE ),
+ bSolidBackground( FALSE ),
+ bSyntaxMode( FALSE ),
+ pValueColor( NULL ),
+ pTextColor( NULL ),
+ pFormulaColor( NULL ),
+ bSingleGrid( FALSE ),
+ aGridColor( COL_BLACK ),
+ bMarkClipped( FALSE ), // FALSE fuer Drucker/Metafile etc.
+ bShowNullValues( TRUE ),
+ bShowFormulas( FALSE ),
+ bSnapPixel( FALSE ),
+ bShowSpellErrors( FALSE ),
+ pEditObj( NULL ),
+ pViewShell( NULL ),
+ bAnyRotated( FALSE ),
+ bAnyClipped( FALSE )
+{
+ if (pZoomX)
+ aZoomX = *pZoomX;
+ else
+ aZoomX = Fraction(1,1);
+ if (pZoomY)
+ aZoomY = *pZoomY;
+ else
+ aZoomY = Fraction(1,1);
+
+ nVisX1 = nX1;
+ nVisY1 = nY1;
+ nVisX2 = nX2;
+ nVisY2 = nY2;
+ pDoc->StripHidden( nVisX1, nVisY1, nVisX2, nVisY2, nTab );
+
+ nScrW = 0;
+ for (USHORT nX=nVisX1; nX<=nVisX2; nX++)
+ nScrW += pRowInfo[0].pCellInfo[nX+1].nWidth;
+
+ nScrH = 0;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ nScrH += pRowInfo[nArrY].nHeight;
+}
+
+ScOutputData::~ScOutputData()
+{
+ delete pValueColor;
+ delete pTextColor;
+ delete pFormulaColor;
+}
+
+void ScOutputData::SetGridColor( const Color& rColor )
+{
+ aGridColor = rColor;
+}
+
+void ScOutputData::SetMarkClipped( BOOL bSet )
+{
+ bMarkClipped = bSet;
+}
+
+void ScOutputData::SetShowNullValues( BOOL bSet )
+{
+ bShowNullValues = bSet;
+}
+
+void ScOutputData::SetShowFormulas( BOOL bSet )
+{
+ bShowFormulas = bSet;
+}
+
+void ScOutputData::SetShowSpellErrors( BOOL bSet )
+{
+ bShowSpellErrors = bSet;
+}
+
+void ScOutputData::SetSnapPixel( BOOL bSet )
+{
+ bSnapPixel = bSet;
+}
+
+void ScOutputData::SetEditCell( USHORT nCol, USHORT nRow )
+{
+ nEditCol = nCol;
+ nEditRow = nRow;
+ bEditMode = TRUE;
+}
+
+void ScOutputData::SetMetaFileMode( BOOL bNewMode )
+{
+ bMetaFile = bNewMode;
+}
+
+void ScOutputData::SetSingleGrid( BOOL bNewMode )
+{
+ bSingleGrid = bNewMode;
+}
+
+void ScOutputData::SetSyntaxMode( BOOL bNewMode )
+{
+ bSyntaxMode = bNewMode;
+ if (bNewMode)
+ if (!pValueColor)
+ {
+ pValueColor = new Color( COL_LIGHTBLUE );
+ pTextColor = new Color( COL_BLACK );
+ pFormulaColor = new Color( COL_GREEN );
+ }
+}
+
+void ScOutputData::DrawGrid( BOOL bGrid, BOOL bPage )
+{
+ USHORT nX;
+ USHORT nY;
+ long nPosX;
+ long nPosY;
+ USHORT i;
+ USHORT nArrY;
+ BYTE nOldFlags = 0;
+ BYTE nFlags;
+ BOOL bSingle;
+ Color aPageColor;
+ Color aManualColor;
+
+ if (bPagebreakMode)
+ bPage = FALSE; // keine "normalen" Umbrueche ueber volle Breite/Hoehe
+
+ //! um den einen Pixel sieht das Metafile (oder die Druck-Ausgabe) anders aus
+ //! als die Bildschirmdarstellung, aber wenigstens passen Druck und Metafile zusammen
+
+ Size aOnePixel = pDev->PixelToLogic(Size(1,1));
+ long nOneX = aOnePixel.Width();
+ long nOneY = aOnePixel.Height();
+ if (bMetaFile)
+ nOneX = nOneY = 1;
+
+ if ( eType == OUTTYPE_WINDOW )
+ {
+ aPageColor = COL_GRAY;
+ aManualColor = COL_BLUE;
+ }
+
+ pDev->SetLineColor( aGridColor );
+ ScGridMerger aGrid( pDev, nOneX, nOneY );
+
+ //
+ // Vertikale Linien
+ //
+
+ nPosX = nScrX;
+ for (nX=nX1; nX<=nX2; nX++)
+ {
+ USHORT nXplus1 = nX+1;
+ USHORT nXplus2 = nX+2;
+ USHORT nWidth = pRowInfo[0].pCellInfo[nXplus1].nWidth;
+ if (nWidth)
+ {
+ nPosX += nWidth;
+
+ if ( bPage )
+ {
+ // Seitenumbrueche auch in ausgeblendeten suchen
+ nFlags = 0;
+ USHORT nCol = nXplus1;
+ while (nCol <= MAXCOL)
+ {
+ BYTE nDocFl = pDoc->GetColFlags( nCol, nTab );
+ nFlags = nDocFl & ( CR_PAGEBREAK | CR_MANUALBREAK );
+ if ( nFlags || !(nDocFl & CR_HIDDEN) )
+ break;
+ ++nCol;
+ }
+
+ if (nFlags != nOldFlags)
+ {
+ aGrid.Flush();
+ pDev->SetLineColor( (nFlags & CR_MANUALBREAK) ? aManualColor :
+ (nFlags) ? aPageColor : aGridColor );
+ nOldFlags = nFlags;
+ }
+ }
+
+ BOOL bDraw = bGrid || nOldFlags; // einfaches Gitter nur wenn eingestellt
+
+ //! Mit dieser Abfrage wird zuviel weggelassen, wenn ein automatischer
+ //! Umbruch mitten in den Wiederholungsspalten liegt.
+ //! Dann lieber den aeusseren Rahmen zweimal ausgeben...
+#if 0
+ // auf dem Drucker die Aussen-Linien weglassen (werden getrennt ausgegeben)
+ if ( eType == OUTTYPE_PRINTER && !bMetaFile )
+ {
+ if ( nX == MAXCOL )
+ bDraw = FALSE;
+ else if (pDoc->GetColFlags(nXplus1,nTab) & ( CR_PAGEBREAK | CR_MANUALBREAK ))
+ bDraw = FALSE;
+ }
+#endif
+
+ USHORT nWidthXplus2 = pRowInfo[0].pCellInfo[nXplus2].nWidth;
+ bSingle = bSingleGrid; //! in Fillinfo holen !!!!!
+ if ( nX<MAXCOL && !bSingle )
+ {
+ bSingle = ( nWidthXplus2 == 0 );
+ for (nArrY=1; nArrY+1<nArrCount && !bSingle; nArrY++)
+ {
+ if (pRowInfo[nArrY].pCellInfo[nXplus2].bHOverlapped)
+ bSingle = TRUE;
+ if (pRowInfo[nArrY].pCellInfo[nXplus1].bHideGrid)
+ bSingle = TRUE;
+ }
+ }
+
+ if (bDraw)
+ {
+ if ( nX<MAXCOL && bSingle )
+ {
+ USHORT nVisX = nXplus1;
+ while ( nVisX < MAXCOL && !pDoc->GetColWidth(nVisX,nTab) )
+ ++nVisX;
+
+ nPosY = nScrY;
+ long nNextY;
+ for (nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ nNextY = nPosY + pThisRowInfo->nHeight;
+
+ BOOL bHOver = pThisRowInfo->pCellInfo[nXplus1].bHideGrid;
+ if (!bHOver)
+ {
+ if (nWidthXplus2)
+ bHOver = pThisRowInfo->pCellInfo[nXplus2].bHOverlapped;
+ else
+ {
+ if (nVisX <= nX2)
+ bHOver = pThisRowInfo->pCellInfo[nVisX+1].bHOverlapped;
+ else
+ bHOver = ((ScMergeFlagAttr*)pDoc->GetAttr(
+ nVisX,pThisRowInfo->nRowNo,nTab,ATTR_MERGE_FLAG))
+ ->IsHorOverlapped();
+ if (bHOver)
+ bHOver = ((ScMergeFlagAttr*)pDoc->GetAttr(
+ nXplus1,pThisRowInfo->nRowNo,nTab,ATTR_MERGE_FLAG))
+ ->IsHorOverlapped();
+ }
+ }
+
+ if (pThisRowInfo->bChanged && !bHOver)
+ {
+ //Point aStart( nPosX-nOneX, nPosY );
+ //Point aEnd( nPosX-nOneX, nNextY-nOneY );
+ //pDev->DrawLine( aStart, aEnd );
+ aGrid.AddVerLine( nPosX-nOneX, nPosY, nNextY-nOneY );
+ }
+ nPosY = nNextY;
+ }
+ }
+ else
+ {
+ //Point aStart( nPosX-nOneX, nScrY );
+ //Point aEnd( nPosX-nOneX, nScrY+nScrH-nOneY );
+ //pDev->DrawLine( aStart, aEnd );
+ aGrid.AddVerLine( nPosX-nOneX, nScrY, nScrY+nScrH-nOneY );
+ }
+ }
+ }
+ }
+
+ //
+ // Horizontale Linien
+ //
+
+ nPosY = nScrY;
+ for (nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ USHORT nArrYplus1 = nArrY+1;
+ nY = pRowInfo[nArrY].nRowNo;
+ USHORT nYplus1 = nY+1;
+ nPosY += pRowInfo[nArrY].nHeight;
+
+ if (pRowInfo[nArrY].bChanged)
+ {
+ if ( bPage )
+ {
+ // Seitenumbrueche auch in ausgeblendeten suchen
+ nFlags = 0;
+ USHORT nRow = nYplus1;
+ while (nRow <= MAXROW)
+ {
+ BYTE nDocFl = pDoc->GetRowFlags( nRow, nTab );
+ nFlags = nDocFl & ( CR_PAGEBREAK | CR_MANUALBREAK );
+ if ( nFlags || !(nDocFl & CR_HIDDEN) )
+ break;
+ ++nRow;
+ }
+
+ if (nFlags != nOldFlags)
+ {
+ aGrid.Flush();
+ pDev->SetLineColor( (nFlags & CR_MANUALBREAK) ? aManualColor :
+ (nFlags) ? aPageColor : aGridColor );
+ nOldFlags = nFlags;
+ }
+ }
+
+ BOOL bDraw = bGrid || nOldFlags; // einfaches Gitter nur wenn eingestellt
+
+ //! Mit dieser Abfrage wird zuviel weggelassen, wenn ein automatischer
+ //! Umbruch mitten in den Wiederholungszeilen liegt.
+ //! Dann lieber den aeusseren Rahmen zweimal ausgeben...
+#if 0
+ // auf dem Drucker die Aussen-Linien weglassen (werden getrennt ausgegeben)
+ if ( eType == OUTTYPE_PRINTER && !bMetaFile )
+ {
+ if ( nY == MAXROW )
+ bDraw = FALSE;
+ else if (pDoc->GetRowFlags(nYplus1,nTab) & ( CR_PAGEBREAK | CR_MANUALBREAK ))
+ bDraw = FALSE;
+ }
+#endif
+
+ BOOL bNextYisNextRow = (pRowInfo[nArrYplus1].nRowNo == nYplus1);
+ bSingle = !bNextYisNextRow; // Hidden
+ for (i=nX1; i<=nX2 && !bSingle; i++)
+ {
+ if (pRowInfo[nArrYplus1].pCellInfo[i+1].bVOverlapped)
+ bSingle = TRUE;
+ }
+
+ if (bDraw)
+ {
+ if ( bSingle && nY<MAXROW )
+ {
+ USHORT nVisY = pRowInfo[nArrYplus1].nRowNo;
+
+ nPosX = nScrX;
+ long nNextX;
+ for (i=nX1; i<=nX2; i++)
+ {
+ nNextX = nPosX + pRowInfo[0].pCellInfo[i+1].nWidth;
+ if (nNextX != nPosX) // sichtbar
+ {
+ BOOL bVOver;
+ if ( bNextYisNextRow )
+ bVOver = pRowInfo[nArrYplus1].pCellInfo[i+1].bVOverlapped;
+ else
+ {
+ bVOver = ((ScMergeFlagAttr*)pDoc->GetAttr(
+ i,nYplus1,nTab,ATTR_MERGE_FLAG))
+ ->IsVerOverlapped()
+ && ((ScMergeFlagAttr*)pDoc->GetAttr(
+ i,nVisY,nTab,ATTR_MERGE_FLAG))
+ ->IsVerOverlapped();
+ //! nVisY aus Array ??
+ }
+ if (!bVOver)
+ {
+ //Point aStart( nPosX, nPosY-nOneY );
+ //Point aEnd( nNextX-nOneX, nPosY-nOneY );
+ //pDev->DrawLine( aStart, aEnd );
+ aGrid.AddHorLine( nPosX, nNextX-nOneX, nPosY-nOneY );
+ }
+ }
+ nPosX = nNextX;
+ }
+ }
+ else
+ {
+ //Point aStart( nScrX, nPosY-nOneY );
+ //Point aEnd( nScrX+nScrW-nOneX, nPosY-nOneY );
+ //pDev->DrawLine( aStart, aEnd );
+ aGrid.AddHorLine( nScrX, nScrX+nScrW-nOneX, nPosY-nOneY );
+ }
+ }
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------
+
+void ScOutputData::SetPagebreakMode( ScPageBreakData* pPageData )
+{
+ bPagebreakMode = TRUE;
+ if (!pPageData)
+ return; // noch nicht initialisiert -> alles "nicht gedruckt"
+
+ // gedruckten Bereich markieren
+ // (in FillInfo ist schon alles auf FALSE initialisiert)
+
+ USHORT nRangeCount = pPageData->GetCount();
+ for (USHORT nPos=0; nPos<nRangeCount; nPos++)
+ {
+ ScRange aRange = pPageData->GetData( nPos ).GetPrintRange();
+
+ USHORT nStartX = Max( aRange.aStart.Col(), nX1 );
+ USHORT nEndX = Min( aRange.aEnd.Col(), nX2 );
+ USHORT nStartY = Max( aRange.aStart.Row(), nY1 );
+ USHORT nEndY = Min( aRange.aEnd.Row(), nY2 );
+
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ if ( pThisRowInfo->bChanged && pThisRowInfo->nRowNo >= nStartY &&
+ pThisRowInfo->nRowNo <= nEndY )
+ {
+ for (USHORT nX=nStartX; nX<=nEndX; nX++)
+ pThisRowInfo->pCellInfo[nX+1].bPrinted = TRUE;
+ }
+ }
+ }
+}
+
+void ScOutputData::FindRotated()
+{
+ //! nRotMax speichern
+ USHORT nRotMax = nX2;
+ for (USHORT nRotY=0; nRotY<nArrCount; nRotY++)
+ if (pRowInfo[nRotY].nRotMaxCol != SC_ROTMAX_NONE && pRowInfo[nRotY].nRotMaxCol > nRotMax)
+ nRotMax = pRowInfo[nRotY].nRotMaxCol;
+
+ for (USHORT nArrY=1; nArrY<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ if ( pThisRowInfo->nRotMaxCol != SC_ROTMAX_NONE &&
+ ( pThisRowInfo->bChanged || pRowInfo[nArrY-1].bChanged ||
+ ( nArrY+1<nArrCount && pRowInfo[nArrY+1].bChanged ) ) )
+ {
+ USHORT nY = pThisRowInfo->nRowNo;
+
+ for (USHORT nX=0; nX<=nRotMax; nX++)
+ {
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nX+1];
+ const ScPatternAttr* pPattern = pInfo->pPatternAttr;
+ const SfxItemSet* pCondSet = pInfo->pConditionSet;
+
+ if ( !pPattern && (pDoc->GetColFlags(nX,nTab) & CR_HIDDEN) == 0 )
+ {
+ pPattern = pDoc->GetPattern( nX, nY, nTab );
+ pCondSet = pDoc->GetCondResult( nX, nY, nTab );
+ }
+
+ if ( pPattern ) // Spalte nicht ausgeblendet
+ {
+ BYTE nDir = pPattern->GetRotateDir( pCondSet );
+ if (nDir != SC_ROTDIR_NONE)
+ {
+ pInfo->nRotateDir = nDir;
+ bAnyRotated = TRUE;
+ }
+ }
+ }
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------
+
+USHORT lcl_GetRotateDir( ScDocument* pDoc, USHORT nCol, USHORT nRow, USHORT nTab )
+{
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nCol, nRow, nTab );
+ const SfxItemSet* pCondSet = pDoc->GetCondResult( nCol, nRow, nTab );
+
+ USHORT nRet = SC_ROTDIR_NONE;
+
+ long nAttrRotate = pPattern->GetRotateVal( pCondSet );
+ if ( nAttrRotate )
+ {
+ SvxRotateMode eRotMode = (SvxRotateMode)((const SvxRotateModeItem&)
+ pPattern->GetItem(ATTR_ROTATE_MODE, pCondSet)).GetValue();
+
+ if ( eRotMode == SVX_ROTATE_MODE_STANDARD )
+ nRet = SC_ROTDIR_STANDARD;
+ else if ( eRotMode == SVX_ROTATE_MODE_CENTER )
+ nRet = SC_ROTDIR_CENTER;
+ else if ( eRotMode == SVX_ROTATE_MODE_TOP || eRotMode == SVX_ROTATE_MODE_BOTTOM )
+ {
+ long nRot180 = nAttrRotate % 18000; // 1/100 Grad
+ if ( nRot180 == 9000 )
+ nRet = SC_ROTDIR_CENTER;
+ else if ( ( eRotMode == SVX_ROTATE_MODE_TOP && nRot180 < 9000 ) ||
+ ( eRotMode == SVX_ROTATE_MODE_BOTTOM && nRot180 > 9000 ) )
+ nRet = SC_ROTDIR_LEFT;
+ else
+ nRet = SC_ROTDIR_RIGHT;
+ }
+ }
+
+ return nRet;
+}
+
+const SvxBrushItem* lcl_FindBackground( ScDocument* pDoc, USHORT nCol, USHORT nRow, USHORT nTab )
+{
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nCol, nRow, nTab );
+ const SfxItemSet* pCondSet = pDoc->GetCondResult( nCol, nRow, nTab );
+ const SvxBrushItem* pBackground = (const SvxBrushItem*)
+ &pPattern->GetItem( ATTR_BACKGROUND, pCondSet );
+
+ USHORT nDir = lcl_GetRotateDir( pDoc, nCol, nRow, nTab );
+
+ // CENTER wird wie RIGHT behandelt...
+ if ( nDir == SC_ROTDIR_RIGHT || nDir == SC_ROTDIR_CENTER )
+ {
+ // Text geht nach rechts -> Hintergrund von links nehmen
+ while ( nCol > 0 && lcl_GetRotateDir( pDoc, nCol, nRow, nTab ) == nDir &&
+ pBackground->GetColor().GetTransparency() != 255 )
+ {
+ --nCol;
+ pPattern = pDoc->GetPattern( nCol, nRow, nTab );
+ pCondSet = pDoc->GetCondResult( nCol, nRow, nTab );
+ pBackground = (const SvxBrushItem*)&pPattern->GetItem( ATTR_BACKGROUND, pCondSet );
+ }
+ }
+ else if ( nDir == SC_ROTDIR_LEFT )
+ {
+ // Text geht nach links -> Hintergrund von rechts nehmen
+ while ( nCol < MAXCOL && lcl_GetRotateDir( pDoc, nCol, nRow, nTab ) == nDir &&
+ pBackground->GetColor().GetTransparency() != 255 )
+ {
+ ++nCol;
+ pPattern = pDoc->GetPattern( nCol, nRow, nTab );
+ pCondSet = pDoc->GetCondResult( nCol, nRow, nTab );
+ pBackground = (const SvxBrushItem*)&pPattern->GetItem( ATTR_BACKGROUND, pCondSet );
+ }
+ }
+
+ return pBackground;
+}
+
+// ----------------------------------------------------------------------------
+
+BOOL lcl_EqualBack( const RowInfo& rFirst, const RowInfo& rOther,
+ USHORT nX1, USHORT nX2, BOOL bShowProt, BOOL bPagebreakMode )
+{
+ if ( rFirst.bChanged != rOther.bChanged ||
+ rFirst.bEmptyBack != rOther.bEmptyBack )
+ return FALSE;
+
+ USHORT nX;
+ if ( bShowProt )
+ {
+ for ( nX=nX1; nX<=nX2; nX++ )
+ {
+ const ScPatternAttr* pPat1 = rFirst.pCellInfo[nX+1].pPatternAttr;
+ const ScPatternAttr* pPat2 = rOther.pCellInfo[nX+1].pPatternAttr;
+ if ( !pPat1 || !pPat2 ||
+ &pPat1->GetItem(ATTR_PROTECTION) != &pPat2->GetItem(ATTR_PROTECTION) )
+ return FALSE;
+ }
+ }
+ else
+ {
+ for ( nX=nX1; nX<=nX2; nX++ )
+ if ( rFirst.pCellInfo[nX+1].pBackground != rOther.pCellInfo[nX+1].pBackground )
+ return FALSE;
+ }
+
+ if ( rFirst.nRotMaxCol != SC_ROTMAX_NONE || rOther.nRotMaxCol != SC_ROTMAX_NONE )
+ for ( nX=nX1; nX<=nX2; nX++ )
+ if ( rFirst.pCellInfo[nX+1].nRotateDir != rOther.pCellInfo[nX+1].nRotateDir )
+ return FALSE;
+
+ if ( bPagebreakMode )
+ for ( nX=nX1; nX<=nX2; nX++ )
+ if ( rFirst.pCellInfo[nX+1].bPrinted != rOther.pCellInfo[nX+1].bPrinted )
+ return FALSE;
+
+ return TRUE;
+}
+
+void ScOutputData::DrawBackground()
+{
+ FindRotated(); //! von aussen ?
+
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ Color aBgColor = rStyleSettings.GetWindowColor();
+
+ Rectangle aRect;
+ Size aOnePixel = pDev->PixelToLogic(Size(1,1));
+ long nOneX = aOnePixel.Width();
+ long nOneY = aOnePixel.Height();
+
+ if (bMetaFile)
+ nOneX = nOneY = 0;
+
+ pDev->SetLineColor();
+
+ BOOL bShowProt = bSyntaxMode && pDoc->IsTabProtected(nTab);
+ BOOL bDoAll = bShowProt || bPagebreakMode || bSolidBackground;
+
+ long nPosY = nScrY;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ long nRowHeight = pThisRowInfo->nHeight;
+
+ if ( pThisRowInfo->bChanged )
+ {
+ if ( ( ( pThisRowInfo->bEmptyBack ) || bSyntaxMode ) && !bDoAll )
+ {
+ // nichts
+ }
+ else
+ {
+ // scan for rows with the same background:
+ USHORT nSkip = 0;
+ while ( nArrY+nSkip+2<nArrCount &&
+ lcl_EqualBack( *pThisRowInfo, pRowInfo[nArrY+nSkip+1],
+ nX1, nX2, bShowProt, bPagebreakMode ) )
+ {
+ ++nSkip;
+ nRowHeight += pRowInfo[nArrY+nSkip].nHeight; // after incrementing
+ }
+
+ long nPosX = nScrX;
+ aRect = Rectangle( nPosX,nPosY, nPosX,nPosY+nRowHeight-nOneY );
+
+ const SvxBrushItem* pOldBackground = NULL;
+ const SvxBrushItem* pBackground;
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nX+1];
+
+ if (bShowProt) // Zellschutz im Syntax-Modus anzeigen
+ {
+ const ScPatternAttr* pP = pInfo->pPatternAttr;
+ if (pP)
+ {
+ const ScProtectionAttr& rProt = (const ScProtectionAttr&)
+ pP->GetItem(ATTR_PROTECTION);
+ if (rProt.GetProtection() || rProt.GetHideCell())
+ pBackground = ScGlobal::GetProtectedBrushItem();
+ else
+ pBackground = ScGlobal::GetEmptyBrushItem();
+ }
+ else
+ pBackground = NULL;
+ }
+ else
+ pBackground = pInfo->pBackground;
+
+ if ( bPagebreakMode && !pInfo->bPrinted )
+ pBackground = ScGlobal::GetProtectedBrushItem();
+
+ if ( pInfo->nRotateDir > SC_ROTDIR_STANDARD &&
+ pBackground->GetColor().GetTransparency() != 255 )
+ {
+ USHORT nY = pRowInfo[nArrY].nRowNo;
+ pBackground = lcl_FindBackground( pDoc, nX, nY, nTab );
+ }
+
+ if ( pBackground != pOldBackground )
+ {
+ aRect.Right() = nPosX-nOneX;
+ if (pOldBackground) // ==0 if hidden
+ {
+ Color aBackCol = pOldBackground->GetColor();
+ if ( bSolidBackground && aBackCol.GetTransparency() )
+ aBackCol = aBgColor;
+ if ( !aBackCol.GetTransparency() ) //! partial transparency?
+ {
+ pDev->SetFillColor( aBackCol );
+ pDev->DrawRect( aRect );
+ }
+ }
+ aRect.Left() = nPosX;
+ pOldBackground = pBackground;
+ }
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+ aRect.Right() = nPosX-nOneX;
+ if (pOldBackground)
+ {
+ Color aBackCol = pOldBackground->GetColor();
+ if ( bSolidBackground && aBackCol.GetTransparency() )
+ aBackCol = aBgColor;
+ if ( !aBackCol.GetTransparency() ) //! partial transparency?
+ {
+ pDev->SetFillColor( aBackCol );
+ pDev->DrawRect( aRect );
+ }
+ }
+
+ nArrY += nSkip;
+ }
+ }
+ nPosY += nRowHeight;
+ }
+}
+
+void ScOutputData::DrawShadow()
+{
+ pDev->SetLineColor();
+
+ long nPosY = nScrY;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ long nRowHeight = pThisRowInfo->nHeight;
+
+ if ( pThisRowInfo->bChanged )
+ {
+ long nPosX = nScrX;
+
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ for (USHORT nPass=0; nPass<2; nPass++) // horizontal / vertikal
+ {
+ const SvxShadowItem* pAttr = nPass ?
+ pThisRowInfo->pCellInfo[nX+1].pVShadowOrigin :
+ pThisRowInfo->pCellInfo[nX+1].pHShadowOrigin;
+ if (pAttr)
+ {
+ ScShadowPart ePart = nPass ?
+ pThisRowInfo->pCellInfo[nX+1].eVShadowPart :
+ pThisRowInfo->pCellInfo[nX+1].eHShadowPart;
+
+ long nMaxWidth = pRowInfo[0].pCellInfo[nX+1].nWidth;
+ if (!nMaxWidth)
+ {
+ USHORT nWx = nX+1;
+ while (!pRowInfo[0].pCellInfo[nWx+1].nWidth && nWx<nX2)
+ ++nWx;
+ nMaxWidth = pRowInfo[0].pCellInfo[nWx+1].nWidth;
+ }
+
+ Rectangle aRect( Point(nPosX,nPosY),
+ Size( pRowInfo[0].pCellInfo[nX+1].nWidth,
+ pRowInfo[nArrY].nHeight ) );
+
+ long nSize = pAttr->GetWidth();
+ long nSizeX = (long)(nSize*nPPTX);
+ if (nSizeX >= nMaxWidth) nSizeX = nMaxWidth-1;
+ long nSizeY = (long)(nSize*nPPTY);
+ if (nSizeY >= nRowHeight) nSizeY = nRowHeight-1;
+
+ SvxShadowLocation eLoc = pAttr->GetLocation();
+
+ if (ePart == SC_SHADOW_HORIZ || ePart == SC_SHADOW_HSTART ||
+ ePart == SC_SHADOW_CORNER)
+ {
+ if (eLoc == SVX_SHADOW_TOPLEFT || eLoc == SVX_SHADOW_TOPRIGHT)
+ aRect.Top() = aRect.Bottom() - nSizeY;
+ else
+ aRect.Bottom() = aRect.Top() + nSizeY;
+ }
+ if (ePart == SC_SHADOW_VERT || ePart == SC_SHADOW_VSTART ||
+ ePart == SC_SHADOW_CORNER)
+ {
+ if (eLoc == SVX_SHADOW_TOPLEFT || eLoc == SVX_SHADOW_BOTTOMLEFT)
+ aRect.Left() = aRect.Right() - nSizeX;
+ else
+ aRect.Right() = aRect.Left() + nSizeX;
+ }
+ if (ePart == SC_SHADOW_HSTART)
+ {
+ if (eLoc == SVX_SHADOW_TOPLEFT || eLoc == SVX_SHADOW_BOTTOMLEFT)
+ aRect.Right() -= nSizeX;
+ else
+ aRect.Left() += nSizeX;
+ }
+ if (ePart == SC_SHADOW_VSTART)
+ {
+ if (eLoc == SVX_SHADOW_TOPLEFT || eLoc == SVX_SHADOW_TOPRIGHT)
+ aRect.Bottom() -= nSizeY;
+ else
+ aRect.Top() += nSizeY;
+ }
+
+ pDev->SetFillColor( pAttr->GetColor() ); //! zusammenfassen
+ pDev->DrawRect( aRect );
+ }
+ }
+
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+ }
+ nPosY += nRowHeight;
+ }
+}
+
+void ScOutputData::DrawExtraShadow(BOOL bLeft, BOOL bTop, BOOL bRight, BOOL bBottom)
+{
+ // DrawExtraShadow enthaelt DrawShadow
+ //! DrawShadow weglassen, stattdessen DrawExtraShadow(FALSE,FALSE,FALSE,FALSE) ???
+
+ pDev->SetLineColor();
+
+ long nPosY = nScrY - pRowInfo[0].nHeight;
+ for (USHORT nArrY=0; nArrY<nArrCount; nArrY++)
+ {
+ BOOL bCornerY = ( nArrY == 0 ) || ( nArrY+1 == nArrCount );
+ BOOL bSkipY = ( nArrY==0 && !bTop ) || ( nArrY+1 == nArrCount && !bBottom );
+
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ long nRowHeight = pThisRowInfo->nHeight;
+
+ if ( pThisRowInfo->bChanged && !bSkipY )
+ {
+ long nPosX = nScrX - pRowInfo[0].pCellInfo[nX1].nWidth;
+ for (USHORT nArrX=nX1; nArrX<=nX2+2; nArrX++)
+ {
+ BOOL bCornerX = ( nArrX==nX1 || nArrX==nX2+2 );
+ BOOL bSkipX = ( nArrX==nX1 && !bLeft ) || ( nArrX==nX2+2 && !bRight );
+
+ for (USHORT nPass=0; nPass<2; nPass++) // horizontal / vertikal
+ {
+ const SvxShadowItem* pAttr = nPass ?
+ pThisRowInfo->pCellInfo[nArrX].pVShadowOrigin :
+ pThisRowInfo->pCellInfo[nArrX].pHShadowOrigin;
+ if ( pAttr && !bSkipX )
+ {
+ ScShadowPart ePart = nPass ?
+ pThisRowInfo->pCellInfo[nArrX].eVShadowPart :
+ pThisRowInfo->pCellInfo[nArrX].eHShadowPart;
+
+ BOOL bDo = TRUE;
+ if ( (nPass==0 && bCornerX) || (nPass==1 && bCornerY) )
+ if ( ePart != SC_SHADOW_CORNER )
+ bDo = FALSE;
+
+ if (bDo)
+ {
+ long nMaxWidth = pRowInfo[0].pCellInfo[nArrX].nWidth;
+ if (!nMaxWidth)
+ {
+ USHORT nWx = nArrX; // nX+1
+ while (nWx<nX2 && !pRowInfo[0].pCellInfo[nWx+1].nWidth)
+ ++nWx;
+ nMaxWidth = pRowInfo[0].pCellInfo[nWx+1].nWidth;
+ }
+
+ Rectangle aRect( Point(nPosX,nPosY),
+ Size( pRowInfo[0].pCellInfo[nArrX].nWidth,
+ pRowInfo[nArrY].nHeight ) );
+
+ long nSize = pAttr->GetWidth();
+ long nSizeX = (long)(nSize*nPPTX);
+ if (nSizeX >= nMaxWidth) nSizeX = nMaxWidth-1;
+ long nSizeY = (long)(nSize*nPPTY);
+ if (nSizeY >= nRowHeight) nSizeY = nRowHeight-1;
+
+ SvxShadowLocation eLoc = pAttr->GetLocation();
+
+ if (ePart == SC_SHADOW_HORIZ || ePart == SC_SHADOW_HSTART ||
+ ePart == SC_SHADOW_CORNER)
+ {
+ if (eLoc == SVX_SHADOW_TOPLEFT || eLoc == SVX_SHADOW_TOPRIGHT)
+ aRect.Top() = aRect.Bottom() - nSizeY;
+ else
+ aRect.Bottom() = aRect.Top() + nSizeY;
+ }
+ if (ePart == SC_SHADOW_VERT || ePart == SC_SHADOW_VSTART ||
+ ePart == SC_SHADOW_CORNER)
+ {
+ if (eLoc == SVX_SHADOW_TOPLEFT || eLoc == SVX_SHADOW_BOTTOMLEFT)
+ aRect.Left() = aRect.Right() - nSizeX;
+ else
+ aRect.Right() = aRect.Left() + nSizeX;
+ }
+ if (ePart == SC_SHADOW_HSTART)
+ {
+ if (eLoc == SVX_SHADOW_TOPLEFT || eLoc == SVX_SHADOW_BOTTOMLEFT)
+ aRect.Right() -= nSizeX;
+ else
+ aRect.Left() += nSizeX;
+ }
+ if (ePart == SC_SHADOW_VSTART)
+ {
+ if (eLoc == SVX_SHADOW_TOPLEFT || eLoc == SVX_SHADOW_TOPRIGHT)
+ aRect.Bottom() -= nSizeY;
+ else
+ aRect.Top() += nSizeY;
+ }
+
+ pDev->SetFillColor( pAttr->GetColor() ); //! zusammenfassen
+ pDev->DrawRect( aRect );
+ }
+ }
+ }
+
+ nPosX += pRowInfo[0].pCellInfo[nArrX].nWidth;
+ }
+ }
+ nPosY += nRowHeight;
+ }
+}
+
+//
+// Loeschen
+//
+
+void ScOutputData::DrawClear()
+{
+ Rectangle aRect;
+ Size aOnePixel = pDev->PixelToLogic(Size(1,1));
+ long nOneX = aOnePixel.Width();
+ long nOneY = aOnePixel.Height();
+
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ Color aBgColor = rStyleSettings.GetWindowColor();
+
+
+ if (bMetaFile)
+ nOneX = nOneY = 0;
+
+ pDev->SetLineColor();
+
+ pDev->SetFillColor( aBgColor );
+
+ long nPosY = nScrY;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ long nRowHeight = pThisRowInfo->nHeight;
+
+ if ( pThisRowInfo->bChanged )
+ {
+ // scan for more rows which must be painted:
+ USHORT nSkip = 0;
+ while ( nArrY+nSkip+2<nArrCount && pRowInfo[nArrY+nSkip+1].bChanged )
+ {
+ ++nSkip;
+ nRowHeight += pRowInfo[nArrY+nSkip].nHeight; // after incrementing
+ }
+
+ aRect = Rectangle( Point( nScrX, nPosY ),
+ Size( nScrW+1-nOneX, nRowHeight+1-nOneY) );
+ pDev->DrawRect( aRect );
+
+ nArrY += nSkip;
+ }
+ nPosY += nRowHeight;
+ }
+}
+
+
+//
+// Linien
+//
+
+void lcl_SnapPixelX( OutputDevice* pDev, long& rValue )
+{
+ if (rValue)
+ {
+ Size aSize = pDev->LogicToPixel(Size(rValue,0));
+ rValue = pDev->PixelToLogic(aSize).Width();
+ }
+}
+
+void lcl_SnapPixelY( OutputDevice* pDev, long& rValue )
+{
+ if (rValue)
+ {
+ Size aSize = pDev->LogicToPixel(Size(0,rValue));
+ rValue = pDev->PixelToLogic(aSize).Height();
+ }
+}
+
+inline short MultOne( short nVal, double nScale )
+{
+ return nVal ? Max((short)1, (short)(nVal*nScale)) : 0;
+}
+
+inline void GetLineStruct( ScLineStruct& rLine, const SvxBorderLine* pAttr, double nScale )
+{
+ if (pAttr)
+ {
+ rLine.nLeft = MultOne(pAttr->GetOutWidth(), nScale);
+ rLine.nMiddle = MultOne(pAttr->GetDistance(), nScale);
+ rLine.nRight = MultOne(pAttr->GetInWidth(), nScale);
+ }
+ else
+ {
+ rLine.nLeft = 0;
+ rLine.nMiddle = 0;
+ rLine.nRight = 0;
+ }
+}
+
+inline void SwapLineStruct( ScLineStruct& rLine )
+{
+ if ( rLine.nRight )
+ {
+ short nTemp = rLine.nRight;
+ rLine.nRight = rLine.nLeft;
+ rLine.nLeft = nTemp;
+ }
+}
+
+inline void UpdateOldRectHor( OutputDevice* pDev, Rectangle& rOldRect, BOOL& rOldValid,
+ long nStartX, long nStartY, long nEndX, long nEndY )
+{
+ if ( rOldValid )
+ {
+ if ( nStartY != rOldRect.Top() || nEndY != rOldRect.Bottom() ||
+ nStartX > rOldRect.Right()+1 )
+ {
+ pDev->DrawRect( rOldRect );
+ rOldValid = FALSE;
+ }
+ }
+
+ if ( !rOldValid )
+ {
+ rOldRect.Left() = nStartX;
+ rOldRect.Top() = nStartY;
+ rOldRect.Bottom() = nEndY;
+ rOldValid = TRUE;
+ }
+ rOldRect.Right() = nEndX;
+}
+
+inline void UpdateOldRectVer( OutputDevice* pDev, Rectangle& rOldRect, BOOL& rOldValid,
+ long nStartX, long nStartY, long nEndX, long nEndY )
+{
+ if ( rOldValid )
+ {
+ if ( nStartX != rOldRect.Left() || nEndX != rOldRect.Right() ||
+ nStartY > rOldRect.Bottom()+1 )
+ {
+ pDev->DrawRect( rOldRect );
+ rOldValid = FALSE;
+ }
+ }
+
+ if ( !rOldValid )
+ {
+ rOldRect.Top() = nStartY;
+ rOldRect.Left() = nStartX;
+ rOldRect.Right() = nEndX;
+ rOldValid = TRUE;
+ }
+ rOldRect.Bottom() = nEndY;
+}
+
+inline void FinishOldRect( OutputDevice* pDev, Rectangle& rOldRect, BOOL& rOldValid )
+{
+ if ( rOldValid )
+ {
+ pDev->DrawRect( rOldRect );
+ rOldValid = FALSE;
+ }
+}
+
+void ScOutputData::DrawFrame()
+{
+ if (bAnyRotated)
+ DrawRotatedFrame(); // loescht die Linien, die hier weggelassen werden muessen
+
+ USHORT nArrY;
+ USHORT nArrX;
+
+ long nPosX;
+ long nPosY;
+
+ short nFirstSize;
+ short nSpaceSize;
+ short nSecondSize;
+
+ long nDrawX;
+ long nDrawY;
+ long nDrawStartX;
+ long nDrawStartY;
+ long nDrawEndX;
+ long nDrawEndY;
+
+ const SvxBorderLine* pDrawLine;
+ const SvxBorderLine* pOldLine = NULL;
+
+ Color aOldCol( COL_BLACK );
+
+ short nLinkRes[4];
+ ScLineStruct aDrawLine;
+ ScLineStruct aLineLT;
+ ScLineStruct aLineLB;
+ ScLineStruct aLineRT;
+ ScLineStruct aLineRB;
+ ScLineStruct aLineL;
+ ScLineStruct aLineR;
+
+ // Dummy-Initialisierung
+ aDrawLine.nLeft = 0;
+ aDrawLine.nMiddle = 0;
+ aDrawLine.nRight = 0;
+ aLineLT = aDrawLine;
+ aLineLB = aDrawLine;
+ aLineRT = aDrawLine;
+ aLineRB = aDrawLine;
+ aLineL = aDrawLine;
+ aLineR = aDrawLine;
+
+ BOOL bIsLine;
+ BOOL bWasLine;
+
+ BOOL bOldValid = FALSE; // Rechtecke zusammenfassen
+ Rectangle aOldRect;
+ BOOL bOldValid2 = FALSE; // zweite Linien
+ Rectangle aOldRect2;
+
+ pDev->SetLineColor();
+ pDev->SetFillColor( aOldCol );
+
+ //
+ // Horizontale Linien
+ //
+
+ nPosY = nScrY - 1;
+ for (nArrY=0; nArrY+1<nArrCount; nArrY++) // einer vorher
+ {
+ if (nArrY>0) // "nullte Zeile" ganz oben
+ nPosY += pRowInfo[nArrY].nHeight;
+
+ long nSnapPosY = nPosY;
+ if (bSnapPixel)
+ lcl_SnapPixelY(pDev,nSnapPosY);
+
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ if ( pThisRowInfo->bChanged || pRowInfo[nArrY+1].bChanged )
+ {
+ bWasLine = FALSE;
+ nPosX = nScrX - 1;
+
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ bIsLine = FALSE;
+ long nEndX = nPosX + pRowInfo[0].pCellInfo[nX+1].nWidth;
+
+ pDrawLine = pThisRowInfo->pCellInfo[nX+1].pBottomLine;
+ if ( pDrawLine )
+ {
+ if ( pDrawLine->GetOutWidth() )
+ {
+ long nSnapPosX = nPosX;
+ long nSnapEndX = nEndX;
+ if (bSnapPixel)
+ {
+ lcl_SnapPixelX(pDev,nSnapPosX);
+ lcl_SnapPixelX(pDev,nSnapEndX);
+ }
+
+ bIsLine = TRUE;
+ if ( pDrawLine != pOldLine )
+ {
+ Color aColor( pDrawLine->GetColor() );
+ if ( aColor != aOldCol )
+ {
+ FinishOldRect( pDev, aOldRect, bOldValid );
+ FinishOldRect( pDev, aOldRect2, bOldValid2 );
+ pDev->SetFillColor( aColor );
+ aOldCol = aColor;
+ }
+
+ nFirstSize = Max((short) 1, (short) ( pDrawLine->GetOutWidth() * nPPTY ));
+ if ( pDrawLine->GetInWidth() )
+ {
+ nSpaceSize = Max((short) 1, (short) ( pDrawLine->GetDistance() * nPPTY ));
+ nSecondSize = Max((short) 1, (short) ( pDrawLine->GetInWidth() * nPPTY ));
+ }
+ else
+ {
+ nSpaceSize = 0;
+ nSecondSize = 0;
+ }
+ }
+
+ nDrawY = nSnapPosY - (nFirstSize + nSpaceSize + nSecondSize - 1) / 2;
+
+ // durchzeichnen ?
+
+ if( (nX == 0) ? FALSE :
+ ( pRowInfo[nArrY].pCellInfo[nX].pBottomLine == pRowInfo[nArrY].pCellInfo[nX-1].pBottomLine
+ && pRowInfo[nArrY].pCellInfo[nX].pRightLine == pRowInfo[nArrY].pCellInfo[nX-1].pRightLine
+ && pRowInfo[nArrY].pCellInfo[nX+1].pBottomLine == pRowInfo[nArrY].pCellInfo[nX].pBottomLine
+ && pRowInfo[nArrY].pCellInfo[nX+1].pRightLine == pRowInfo[nArrY].pCellInfo[nX].pRightLine
+ && pRowInfo[nArrY].pCellInfo[nX+2].pBottomLine == pRowInfo[nArrY].pCellInfo[nX+1].pBottomLine
+ && pRowInfo[nArrY+1].pCellInfo[nX].pRightLine == pRowInfo[nArrY+1].pCellInfo[nX-1].pRightLine
+ && pRowInfo[nArrY+1].pCellInfo[nX+1].pRightLine == pRowInfo[nArrY+1].pCellInfo[nX].pRightLine
+ ) )
+ {
+ bIsLine = FALSE; // Variablen ungueltig
+ nDrawStartX = nSnapPosX + nLinkRes[0];
+ nDrawEndX = nSnapEndX + nLinkRes[2];
+ }
+ else
+ {
+ if (bWasLine) // Vorgaenger gueltig ?
+ {
+ aLineLT = aLineRT;
+ aLineLB = aLineRB;
+ aLineL = aDrawLine;
+ aDrawLine = aLineR;
+ }
+ else
+ {
+ aDrawLine.nLeft = nFirstSize;
+ aDrawLine.nMiddle = nSpaceSize;
+ aDrawLine.nRight = nSecondSize;
+ GetLineStruct( aLineLT, pRowInfo[nArrY].pCellInfo[nX].pRightLine, nPPTX );
+ GetLineStruct( aLineLB, pRowInfo[nArrY+1].pCellInfo[nX].pRightLine, nPPTX );
+ GetLineStruct( aLineL, pRowInfo[nArrY].pCellInfo[nX].pBottomLine, nPPTY );
+ }
+ GetLineStruct( aLineRT, pRowInfo[nArrY].pCellInfo[nX+1].pRightLine, nPPTX );
+ GetLineStruct( aLineRB, pRowInfo[nArrY+1].pCellInfo[nX+1].pRightLine, nPPTX );
+ GetLineStruct( aLineR, pRowInfo[nArrY].pCellInfo[nX+2].pBottomLine, nPPTY );
+
+ ScLinkLine( aDrawLine, aLineLT, aLineL, aLineLB, aLineRT, aLineR, aLineRB, nLinkRes );
+
+ nDrawStartX = nSnapPosX + nLinkRes[0];
+ nDrawEndX = nSnapEndX + nLinkRes[2];
+ }
+ nDrawStartY = nDrawY;
+ nDrawEndY = nDrawY + nFirstSize - 1;
+
+ UpdateOldRectHor( pDev, aOldRect, bOldValid,
+ nDrawStartX, nDrawStartY, nDrawEndX, nDrawEndY );
+
+ if (nSecondSize)
+ {
+ nDrawStartX = nSnapPosX + nLinkRes[1];
+ nDrawEndX = nSnapEndX + nLinkRes[3];
+ nDrawStartY = nDrawY + nFirstSize + nSpaceSize;
+ nDrawEndY = nDrawY + nFirstSize + nSpaceSize + nSecondSize - 1;
+
+ UpdateOldRectHor( pDev, aOldRect2, bOldValid2,
+ nDrawStartX, nDrawStartY, nDrawEndX, nDrawEndY );
+ }
+
+ pOldLine = pDrawLine; // nur vorhandene
+ }
+ }
+ nPosX = nEndX;
+ bWasLine = bIsLine;
+ }
+ }
+ }
+
+ //
+ // Vertikale Linien
+ //
+
+ nPosX = nScrX - 1;
+ for (nArrX=nX1; nArrX<=nX2+1; nArrX++) // einer vorher
+ {
+ if (nArrX>nX1) // "nullte Zeile" ganz links
+ nPosX += pRowInfo[0].pCellInfo[nArrX].nWidth;
+
+ long nSnapPosX = nPosX;
+ if (bSnapPixel)
+ lcl_SnapPixelX(pDev,nSnapPosX);
+
+ bWasLine = FALSE;
+ nPosY = nScrY - 1;
+ for (nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ bIsLine = FALSE;
+ long nEndY = nPosY + pRowInfo[nArrY].nHeight;
+
+ // Zeile +-1 nur, um Variablen mitzufuehren, gezeichnet wird nicht
+ if ( pRowInfo[nArrY].bChanged ||
+ pRowInfo[nArrY+1].bChanged || pRowInfo[nArrY-1].bChanged )
+ {
+ pDrawLine = pRowInfo[nArrY].pCellInfo[nArrX].pRightLine;
+ if ( pDrawLine )
+ {
+ if ( pDrawLine->GetOutWidth() )
+ {
+ long nSnapPosY = nPosY;
+ long nSnapEndY = nEndY;
+ if (bSnapPixel)
+ {
+ lcl_SnapPixelY(pDev,nSnapPosY);
+ lcl_SnapPixelY(pDev,nSnapEndY);
+ }
+
+ bIsLine = TRUE;
+ if ( pDrawLine != pOldLine )
+ {
+ Color aColor( pDrawLine->GetColor() );
+ if ( aColor != aOldCol )
+ {
+ FinishOldRect( pDev, aOldRect, bOldValid );
+ FinishOldRect( pDev, aOldRect2, bOldValid2 );
+ pDev->SetFillColor( aColor );
+ aOldCol = aColor;
+ }
+
+ nFirstSize = Max((short) 1, (short) ( pDrawLine->GetOutWidth() * nPPTX ));
+ if ( pDrawLine->GetInWidth() )
+ {
+ nSpaceSize = Max((short) 1, (short) ( pDrawLine->GetDistance() * nPPTX ));
+ nSecondSize = Max((short) 1, (short) ( pDrawLine->GetInWidth() * nPPTX ));
+ }
+ else
+ {
+ nSpaceSize = 0;
+ nSecondSize = 0;
+ }
+ }
+
+ nDrawX = nSnapPosX - (nFirstSize + nSpaceSize + nSecondSize - 1) / 2;
+
+ // durchzeichnen ?
+ // (nur wenn nLinkRes gueltig -> bChanged)
+
+ if ( nArrY >= 2
+ && pRowInfo[nArrY].bChanged
+ && pRowInfo[nArrY-1].pCellInfo[nArrX].pRightLine == pRowInfo[nArrY-2].pCellInfo[nArrX].pRightLine
+ && pRowInfo[nArrY-1].pCellInfo[nArrX].pBottomLine == pRowInfo[nArrY-2].pCellInfo[nArrX].pBottomLine
+ && pRowInfo[nArrY ].pCellInfo[nArrX].pRightLine == pRowInfo[nArrY-1].pCellInfo[nArrX].pRightLine
+ && pRowInfo[nArrY ].pCellInfo[nArrX].pBottomLine == pRowInfo[nArrY-1].pCellInfo[nArrX].pBottomLine
+ && pRowInfo[nArrY+1].pCellInfo[nArrX].pRightLine == pRowInfo[nArrY ].pCellInfo[nArrX].pRightLine
+ && pRowInfo[nArrY-1].pCellInfo[nArrX+1].pBottomLine == pRowInfo[nArrY-2].pCellInfo[nArrX+1].pBottomLine
+ && pRowInfo[nArrY ].pCellInfo[nArrX+1].pBottomLine == pRowInfo[nArrY-1].pCellInfo[nArrX+1].pBottomLine )
+ {
+ bIsLine = FALSE; // Variablen ungueltig
+ nDrawStartY = nSnapPosY + nLinkRes[0];
+ nDrawEndY = nSnapEndY + nLinkRes[2];
+ }
+ else
+ {
+ if (bWasLine) // Vorgaenger gueltig ?
+ {
+ aLineLT = aLineRT;
+ aLineLB = aLineRB;
+ aLineL = aDrawLine;
+ aDrawLine = aLineR;
+ }
+ else
+ {
+ aDrawLine.nLeft = nSecondSize;
+ aDrawLine.nMiddle = nSpaceSize;
+ aDrawLine.nRight = nFirstSize;
+ SwapLineStruct( aDrawLine );
+ GetLineStruct( aLineLT, pRowInfo[nArrY-1].pCellInfo[nArrX].pBottomLine, nPPTY );
+ GetLineStruct( aLineLB, pRowInfo[nArrY-1].pCellInfo[nArrX+1].pBottomLine, nPPTY );
+ GetLineStruct( aLineL, pRowInfo[nArrY-1].pCellInfo[nArrX].pRightLine, nPPTX );
+ SwapLineStruct( aLineL );
+ }
+ GetLineStruct( aLineRT, pRowInfo[nArrY].pCellInfo[nArrX].pBottomLine, nPPTY );
+ GetLineStruct( aLineRB, pRowInfo[nArrY].pCellInfo[nArrX+1].pBottomLine, nPPTY );
+ GetLineStruct( aLineR, pRowInfo[nArrY+1].pCellInfo[nArrX].pRightLine, nPPTX );
+ SwapLineStruct( aLineR );
+
+ ScLinkLine( aDrawLine, aLineLT, aLineL, aLineLB, aLineRT, aLineR, aLineRB, nLinkRes );
+
+ nDrawStartY = nSnapPosY + nLinkRes[0];
+ nDrawEndY = nSnapEndY + nLinkRes[2];
+ }
+
+ if (pRowInfo[nArrY].bChanged)
+ {
+ // Zeichnen nur in wirklich geaenderten Zeilen
+
+ nDrawStartX = nDrawX;
+ nDrawEndX = nDrawX + nFirstSize - 1;
+
+ UpdateOldRectVer( pDev, aOldRect, bOldValid,
+ nDrawStartX, nDrawStartY, nDrawEndX, nDrawEndY );
+
+ if (nSecondSize && pRowInfo[nArrY].bChanged) //!
+ {
+ nDrawStartX = nDrawX + nFirstSize + nSpaceSize;
+ nDrawEndX = nDrawX + nFirstSize + nSpaceSize + nSecondSize - 1;
+ nDrawStartY = nSnapPosY + nLinkRes[1];
+ nDrawEndY = nSnapEndY + nLinkRes[3];
+
+
+ UpdateOldRectVer( pDev, aOldRect2, bOldValid2,
+ nDrawStartX, nDrawStartY, nDrawEndX, nDrawEndY );
+ }
+ }
+
+ pOldLine = pDrawLine; // nur vorhandene
+ }
+ }
+ }
+ nPosY = nEndY;
+ bWasLine = bIsLine;
+ }
+
+ // Bei ausgeblendeten Spalten liegt die naechste Spalte an derselben Position
+ // -> ohne FinishOldRect wuerden die Rechtecke dann weitergezeichnet (#31261#)
+ FinishOldRect( pDev, aOldRect, bOldValid );
+ FinishOldRect( pDev, aOldRect2, bOldValid2 );
+ }
+
+ FinishOldRect( pDev, aOldRect, bOldValid );
+ FinishOldRect( pDev, aOldRect2, bOldValid2 );
+}
+
+// -------------------------------------------------------------------------
+
+// Linie unter der Zelle
+
+const SvxBorderLine* lcl_FindHorLine( ScDocument* pDoc,
+ USHORT nCol, USHORT nRow, USHORT nTab, USHORT nRotDir,
+ BOOL bTopLine )
+{
+ if ( nRotDir != SC_ROTDIR_LEFT && nRotDir != SC_ROTDIR_RIGHT )
+ return NULL;
+
+ BOOL bFound = FALSE;
+ while (!bFound)
+ {
+ if ( nRotDir == SC_ROTDIR_LEFT )
+ {
+ // Text nach links -> Linie von rechts
+ if ( nCol < MAXCOL )
+ ++nCol;
+ else
+ return NULL; // war nix
+ }
+ else
+ {
+ // Text nach rechts -> Linie von links
+ if ( nCol > 0 )
+ --nCol;
+ else
+ return NULL; // war nix
+ }
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nCol, nRow, nTab );
+ const SfxItemSet* pCondSet = pDoc->GetCondResult( nCol, nRow, nTab );
+ if ( !pPattern->GetRotateVal( pCondSet ) ||
+ ((const SvxRotateModeItem&)pPattern->GetItem(
+ ATTR_ROTATE_MODE, pCondSet)).GetValue() == SVX_ROTATE_MODE_STANDARD )
+ bFound = TRUE;
+ }
+
+ if (bTopLine)
+ --nRow;
+ const SvxBorderLine* pThisBottom;
+ if ( nRow <= MAXROW )
+ pThisBottom = ((const SvxBoxItem*)pDoc->GetAttr( nCol, nRow, nTab, ATTR_BORDER ))->GetBottom();
+ else
+ pThisBottom = NULL;
+ const SvxBorderLine* pNextTop;
+ if ( nRow < MAXROW )
+ pNextTop = ((const SvxBoxItem*)pDoc->GetAttr( nCol, nRow+1, nTab, ATTR_BORDER ))->GetTop();
+ else
+ pNextTop = NULL;
+
+ if ( HasPriority( pThisBottom, pNextTop ) )
+ return pThisBottom;
+ else
+ return pNextTop;
+}
+
+// lcl_HorizLine muss genau zu normal ausgegebenen Linien passen!
+
+void lcl_HorizLine( OutputDevice* pDev, const Point& rLeft, const Point& rRight,
+ const SvxBorderLine* pLine, double nLineScale )
+{
+ // horizontal ist nicht schraeg
+ DBG_ASSERT( rLeft.Y() == rRight.Y(), "Horizontale Linie schraeg ???!?" );
+
+ if (!pLine || !pLine->GetOutWidth())
+ return;
+
+ pDev->SetLineColor();
+ pDev->SetFillColor(pLine->GetColor());
+
+ long nFirst = (long) ( pLine->GetOutWidth() * nLineScale );
+ if (nFirst == 0)
+ nFirst = 1;
+ long nSpace = 0;
+ long nSecond = 0;
+ if ( pLine->GetInWidth() )
+ {
+ nSpace = (long) ( pLine->GetDistance() * nLineScale );
+ if (nSpace == 0)
+ nSpace = 1;
+ nSecond = (long) ( pLine->GetInWidth() * nLineScale );
+ if (nSecond == 0)
+ nSecond = 1;
+ }
+
+ long nStart = rLeft.Y() - (nFirst + nSpace + nSecond - 1) / 2;
+
+ Rectangle aRect( rLeft.X(), nStart, rRight.X(), nStart+nFirst-1 );
+ pDev->DrawRect( aRect );
+
+ if ( nSecond )
+ {
+ long nSecStart = nStart + nFirst + nSpace;
+ Rectangle aSecond( rLeft.X(), nSecStart, rRight.X(), nSecStart+nSecond-1 );
+ pDev->DrawRect( aSecond );
+ }
+}
+
+long lcl_LineTotal( const SvxBorderLine& rLine, double nScale )
+{
+ long nFirst = 0;
+ long nSpace = 0;
+ long nSecond = 0;
+
+ if (rLine.GetOutWidth())
+ {
+ nFirst = (long) ( rLine.GetOutWidth() * nScale );
+ if (!nFirst)
+ nFirst = 1;
+ }
+ if (rLine.GetInWidth())
+ {
+ nSpace = (long) ( rLine.GetDistance() * nScale );
+ if (!nSpace)
+ nSpace = 1;
+ nSecond = (long) ( rLine.GetInWidth() * nScale );
+ if (!nSecond)
+ nSecond = 1;
+ }
+
+ return nFirst+nSpace+nSecond;
+}
+
+void lcl_VertLine( OutputDevice* pDev, const Point& rTop, const Point& rBottom,
+ const SvxBorderLine* pLine, double nLineScale,
+ const SvxBorderLine* pTopLine, const SvxBorderLine* pBottomLine,
+ double nPPTY, long nTopCenter, long nBottomCenter )
+{
+ if (!pLine || !pLine->GetOutWidth())
+ return;
+
+ if ( pLine->GetInWidth() ) // doppelte Linie -> zwei einzelne Aufrufe
+ {
+ long nFirst = (long) ( pLine->GetOutWidth() * nLineScale );
+ if (!nFirst)
+ nFirst = 1;
+ long nSpace = (long) ( pLine->GetDistance() * nLineScale );
+ if (!nSpace)
+ nSpace = 1;
+ long nSecond = (long) ( pLine->GetInWidth() * nLineScale );
+ if (!nSecond)
+ nSecond = 1;
+ Point aNewTop = rTop;
+ Point aNewBottom = rBottom;
+
+ // links
+ long nMove = ( nFirst + nSecond + nSpace - 1 ) / 2 - ( nFirst-1 ) / 2;
+ aNewTop.X() = rTop.X() - nMove;
+ aNewBottom.X() = rBottom.X() - nMove;
+ SvxBorderLine aLeft( &pLine->GetColor(), pLine->GetOutWidth() );
+ lcl_VertLine( pDev, aNewTop, aNewBottom, &aLeft, nLineScale,
+ pTopLine, pBottomLine, nPPTY, nTopCenter, nBottomCenter );
+
+ // rechts
+ aNewTop.X() += nFirst + nSpace;
+ aNewBottom.X() += nFirst + nSpace;
+ SvxBorderLine aRight( &pLine->GetColor(), pLine->GetInWidth() );
+ lcl_VertLine( pDev, aNewTop, aNewBottom, &aRight, nLineScale,
+ pTopLine, pBottomLine, nPPTY, nTopCenter, nBottomCenter );
+
+ return;
+ }
+
+ pDev->SetLineColor(pLine->GetColor()); // PEN_NULL ???
+ pDev->SetFillColor(pLine->GetColor());
+
+ long nWidth = (long) ( pLine->GetOutWidth() * nLineScale );
+ if (nWidth == 0)
+ nWidth = 1;
+ long nSmall = (nWidth - 1) / 2;
+
+ // Position oben/unten muss unabhaengig von der Liniendicke sein,
+ // damit der Winkel stimmt (oder X-Position auch anpassen)
+ long nTopPos = rTop.Y();
+ long nBotPos = rBottom.Y();
+
+ long nTopLeft = rTop.X()-nSmall;
+ long nTopRight = nTopLeft+nWidth-1;
+ long nBotLeft = rBottom.X()-nSmall;
+ long nBotRight = nBotLeft+nWidth-1;
+
+ Point aPoints[4];
+ aPoints[0] = Point( nTopLeft, nTopPos );
+ aPoints[1] = Point( nTopRight, nTopPos );
+ aPoints[2] = Point( nBotRight, nBotPos );
+ aPoints[3] = Point( nBotLeft, nBotPos );
+
+ Polygon aPoly( 4, aPoints );
+ pDev->DrawPolygon( aPoly );
+
+ // oben abschliessen
+
+ if ( pTopLine && pTopLine->GetOutWidth() )
+ {
+ long nLine = lcl_LineTotal( *pTopLine, nPPTY );
+ if (nLine >= 2)
+ {
+ Point aTriangle[3];
+ aTriangle[0] = Point( nTopLeft, nTopPos ); // wie aPoints[0]
+ aTriangle[1] = Point( nTopRight, nTopPos ); // wie aPoints[1]
+// aTriangle[2] = Point( rTop.X(), nTopPos - nLine/2 + 1 );
+ aTriangle[2] = Point( nTopCenter, nTopPos - nLine/2 + 1 );
+ Polygon aTriPoly( 3, aTriangle );
+ pDev->DrawPolygon( aTriPoly );
+ }
+ }
+
+ // unten abschliessen
+
+ if ( pBottomLine && pBottomLine->GetOutWidth() )
+ {
+ long nLine = lcl_LineTotal( *pBottomLine, nPPTY );
+ if (nLine >= 2)
+ {
+ Point aTriangle[3];
+ aTriangle[0] = Point( nBotLeft, nBotPos ); // wie aPoints[3]
+ aTriangle[1] = Point( nBotRight, nBotPos ); // wie aPoints[2]
+// aTriangle[2] = Point( rBottom.X(), nBotPos + nLine/2 - 1 );
+ aTriangle[2] = Point( nBottomCenter, nBotPos + nLine/2 - 1 );
+ Polygon aTriPoly( 3, aTriangle );
+ pDev->DrawPolygon( aTriPoly );
+ }
+ }
+}
+
+void ScOutputData::DrawRotatedFrame()
+{
+ //! nRotMax speichern
+ USHORT nRotMax = nX2;
+ for (USHORT nRotY=0; nRotY<nArrCount; nRotY++)
+ if (pRowInfo[nRotY].nRotMaxCol != SC_ROTMAX_NONE && pRowInfo[nRotY].nRotMaxCol > nRotMax)
+ nRotMax = pRowInfo[nRotY].nRotMaxCol;
+
+ const ScPatternAttr* pPattern;
+ const SfxItemSet* pCondSet;
+ const ScPatternAttr* pOldPattern = NULL;
+ const SfxItemSet* pOldCondSet = NULL;
+
+ Rectangle aClipRect( Point(nScrX, nScrY), Size(nScrW, nScrH) );
+ if (bMetaFile)
+ {
+ pDev->Push();
+ pDev->IntersectClipRegion( aClipRect );
+ }
+ else
+ pDev->SetClipRegion( Region( aClipRect ) );
+
+ long nPosY = nScrY;
+ for (USHORT nArrY=1; nArrY<nArrCount; nArrY++)
+ {
+ // Rotated wird auch 1 Zeile ueber/unter Changed gezeichnet, falls Teile
+ // in die Zeile hineinragen...
+
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ long nRowHeight = pThisRowInfo->nHeight;
+ if ( pThisRowInfo->nRotMaxCol != SC_ROTMAX_NONE &&
+ ( pThisRowInfo->bChanged || pRowInfo[nArrY-1].bChanged ||
+ ( nArrY+1<nArrCount && pRowInfo[nArrY+1].bChanged ) ) )
+ {
+ USHORT nY = pRowInfo[nArrY].nRowNo;
+ long nPosX = 0;
+ USHORT nX;
+ for (nX=0; nX<=nRotMax; nX++)
+ {
+ if (nX==nX1) nPosX = nScrX; // vorher wird einzeln berechnet
+
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nX+1];
+ long nColWidth = pRowInfo[0].pCellInfo[nX+1].nWidth;
+ if ( pInfo->nRotateDir > SC_ROTDIR_STANDARD &&
+ !pInfo->bHOverlapped && !pInfo->bVOverlapped )
+ {
+ pPattern = pInfo->pPatternAttr;
+ pCondSet = pInfo->pConditionSet;
+ if (!pPattern)
+ {
+ pPattern = pDoc->GetPattern( nX, nY, nTab );
+ pInfo->pPatternAttr = pPattern;
+ pCondSet = pDoc->GetCondResult( nX, nY, nTab );
+ pInfo->pConditionSet = pCondSet;
+ }
+
+ //! LastPattern etc.
+
+ long nAttrRotate = pPattern->GetRotateVal( pCondSet );
+ SvxRotateMode eRotMode = (SvxRotateMode)((const SvxRotateModeItem&)
+ pPattern->GetItem(ATTR_ROTATE_MODE, pCondSet)).GetValue();
+
+ if ( nAttrRotate )
+ {
+ if (nX<nX1) // negative Position berechnen
+ {
+ nPosX = nScrX;
+ USHORT nCol = nX1;
+ while (nCol > nX)
+ {
+ --nCol;
+ nPosX -= (long) pRowInfo[0].pCellInfo[nCol+1].nWidth;
+ }
+ }
+
+ // Startposition minus 1, damit auch schraege Hintergruende
+ // zur Umrandung passen (Umrandung ist auf dem Gitter)
+
+ long nTop = nPosY - 1;
+ long nBottom = nPosY + nRowHeight - 1;
+ long nTopLeft = nPosX - 1;
+ long nTopRight = nPosX + nColWidth - 1;
+ long nBotLeft = nTopLeft;
+ long nBotRight = nTopRight;
+
+ double nRealOrient = nAttrRotate * F_PI18000; // 1/100 Grad
+ double nCos = cos( nRealOrient );
+ double nSin = sin( nRealOrient );
+ //! begrenzen !!!
+ long nSkew = (long) ( nRowHeight * nCos / nSin );
+
+ switch (eRotMode)
+ {
+ case SVX_ROTATE_MODE_BOTTOM:
+ nTopLeft += nSkew;
+ nTopRight += nSkew;
+ break;
+ case SVX_ROTATE_MODE_CENTER:
+ nSkew /= 2;
+ nTopLeft += nSkew;
+ nTopRight += nSkew;
+ nBotLeft -= nSkew;
+ nBotRight -= nSkew;
+ break;
+ case SVX_ROTATE_MODE_TOP:
+ nBotLeft -= nSkew;
+ nBotRight -= nSkew;
+ break;
+ }
+
+ Point aPoints[4];
+ aPoints[0] = Point( nTopLeft, nTop );
+ aPoints[1] = Point( nTopRight, nTop );
+ aPoints[2] = Point( nBotRight, nBottom );
+ aPoints[3] = Point( nBotLeft, nBottom );
+
+ const SvxBrushItem* pBackground = pInfo->pBackground;
+ if (!pBackground)
+ pBackground = (const SvxBrushItem*) &pPattern->GetItem(
+ ATTR_BACKGROUND, pCondSet );
+ const Color& rColor = pBackground->GetColor();
+ if ( rColor.GetTransparency() != 255 )
+ {
+ Polygon aPoly( 4, aPoints );
+
+ // ohne Pen wird bei DrawPolygon rechts und unten
+ // ein Pixel weggelassen...
+ if ( rColor.GetTransparency() == 0 )
+ pDev->SetLineColor(rColor);
+ else
+ pDev->SetLineColor();
+ pDev->SetFillColor(rColor);
+ pDev->DrawPolygon( aPoly );
+ }
+
+ const SvxBorderLine* pTopLine =
+ pRowInfo[nArrY-1].pCellInfo[nX+1].pBottomLine;
+ const SvxBorderLine* pBottomLine = pInfo->pBottomLine;
+ const SvxBorderLine* pLeftLine = pThisRowInfo->pCellInfo[nX].pRightLine;
+ const SvxBorderLine* pRightLine = pInfo->pRightLine;
+
+ if ( nX < nX1 || nX > nX2 ) // Attribute in FillInfo nicht gesetzt
+ {
+ //! Seitengrenzen fuer Druck beruecksichtigen !!!!!
+ pDoc->GetBorderLines( nX, nY, nTab,
+ &pLeftLine, &pTopLine, &pRightLine, &pBottomLine );
+ }
+
+ lcl_HorizLine( pDev, aPoints[0],aPoints[1], pTopLine, nPPTY );
+ lcl_HorizLine( pDev, aPoints[3],aPoints[2], pBottomLine, nPPTY );
+
+ double nVLineScale = nPPTX / fabs(nSin);
+ lcl_VertLine( pDev, aPoints[0],aPoints[3], pLeftLine,
+ nVLineScale, pTopLine, pBottomLine, nPPTY,
+ aPoints[0].X(), aPoints[3].X() );
+ lcl_VertLine( pDev, aPoints[1],aPoints[2], pRightLine,
+ nVLineScale, pTopLine, pBottomLine, nPPTY,
+ aPoints[1].X(), aPoints[2].X() );
+ }
+ }
+ nPosX += nColWidth;
+ }
+
+ // erst hinterher im zweiten Schritt die Linien fuer normale Ausgabe loeschen
+
+ nX = nX1 ? (nX1-1) : 0;
+ for (; nX<=nX2+1; nX++) // sichtbarer Teil +- 1
+ {
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nX+1];
+ if ( pInfo->nRotateDir > SC_ROTDIR_STANDARD &&
+ !pInfo->bHOverlapped && !pInfo->bVOverlapped )
+ {
+ pPattern = pInfo->pPatternAttr;
+ pCondSet = pInfo->pConditionSet;
+ SvxRotateMode eRotMode = (SvxRotateMode)((const SvxRotateModeItem&)
+ pPattern->GetItem(ATTR_ROTATE_MODE, pCondSet)).GetValue();
+
+ // horizontal: angrenzende Linie verlaengern
+ // (nur, wenn die gedrehte Zelle eine Umrandung hat)
+ USHORT nDir = pInfo->nRotateDir;
+ if ( pRowInfo[nArrY-1].pCellInfo[nX+1].pBottomLine &&
+ eRotMode != SVX_ROTATE_MODE_TOP )
+ pRowInfo[nArrY-1].pCellInfo[nX+1].pBottomLine =
+ lcl_FindHorLine( pDoc, nX, nY, nTab, nDir, TRUE );
+ if ( pInfo->pBottomLine && eRotMode != SVX_ROTATE_MODE_BOTTOM )
+ pInfo->pBottomLine = lcl_FindHorLine( pDoc, nX, nY, nTab, nDir, FALSE );
+
+ // vertikale Linien kommen immer ganz weg...
+ pThisRowInfo->pCellInfo[nX].pRightLine = NULL;
+ pInfo->pRightLine = NULL;
+ }
+ }
+ }
+ nPosY += nRowHeight;
+ }
+
+ if (bMetaFile)
+ pDev->Pop();
+ else
+ pDev->SetClipRegion();
+}
+
+// Drucker
+
+void ScOutputData::DrawPageBorder( USHORT nStartX, USHORT nStartY, USHORT nEndX, USHORT nEndY )
+{
+ PutInOrder( nStartX, nEndX );
+ PutInOrder( nStartY, nEndY );
+
+ if ( nStartX <= nX2 && nEndX >= nX1 &&
+ nStartY <= nY2 && nEndY >= nY1 )
+ {
+ long nMinX = nScrX;
+ long nMinY = nScrY;
+ long nMaxX = nScrX+nScrW-1;
+ long nMaxY = nScrY+nScrH-1;
+ BOOL bTop = FALSE;
+ BOOL bBottom = FALSE;
+ BOOL bLeft = FALSE;
+ BOOL bRight = FALSE;
+
+ long nPosY = nScrY;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ USHORT nY = pRowInfo[nArrY].nRowNo;
+
+ if ( nY==nStartY )
+ {
+ nMinY = nPosY;
+ bTop = TRUE;
+ }
+
+ if ( nY==nEndY )
+ {
+// nMaxY = nPosY + pRowInfo[nArrY].nHeight - 2;
+ nMaxY = nPosY + pRowInfo[nArrY].nHeight;
+ bBottom = TRUE;
+ }
+
+ nPosY += pRowInfo[nArrY].nHeight;
+ }
+
+ RowInfo* pThisRowInfo = &pRowInfo[0];
+ long nPosX = nScrX;
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ if ( nX==nStartX )
+ {
+ nMinX = nPosX;
+ bLeft = TRUE;
+ }
+ if ( nX==nEndX )
+ {
+// nMaxX = nPosX + pRowInfo[0].pCellInfo[nX+1].nWidth - 2;
+ nMaxX = nPosX + pRowInfo[0].pCellInfo[nX+1].nWidth;
+ bRight = TRUE;
+ }
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+
+ pDev->SetLineColor( COL_BLACK );
+ if (bTop && bBottom && bLeft && bRight)
+ {
+ pDev->SetFillColor();
+ pDev->DrawRect( Rectangle( nMinX, nMinY, nMaxX, nMaxY ) );
+ }
+ else
+ {
+ if (bTop)
+ pDev->DrawLine( Point( nMinX,nMinY ), Point( nMaxX,nMinY ) );
+ if (bBottom)
+ pDev->DrawLine( Point( nMinX,nMaxY ), Point( nMaxX,nMaxY ) );
+ if (bLeft)
+ pDev->DrawLine( Point( nMinX,nMinY ), Point( nMinX,nMaxY ) );
+ if (bRight)
+ pDev->DrawLine( Point( nMaxX,nMinY ), Point( nMaxX,nMaxY ) );
+ }
+ }
+}
+
+BOOL ScOutputData::SetChangedClip()
+{
+ PolyPolygon aPoly;
+
+ Rectangle aDrawingRect;
+ aDrawingRect.Left() = nScrX;
+ aDrawingRect.Right() = nScrX+nScrW-1;
+
+ BOOL bHad = FALSE;
+ long nPosY = nScrY;
+ USHORT nArrY;
+ for (nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+
+ if ( pThisRowInfo->bChanged )
+ {
+ if (!bHad)
+ {
+ aDrawingRect.Top() = nPosY;
+ bHad = TRUE;
+ }
+ aDrawingRect.Bottom() = nPosY + pRowInfo[nArrY].nHeight - 1;
+ }
+ else if (bHad)
+ {
+ aPoly.Insert( Polygon( pDev->PixelToLogic(aDrawingRect) ) );
+ bHad = FALSE;
+ }
+ nPosY += pRowInfo[nArrY].nHeight;
+ }
+
+ if (bHad)
+ aPoly.Insert( Polygon( pDev->PixelToLogic(aDrawingRect) ) );
+
+ BOOL bRet = (aPoly.Count() != 0);
+ if (bRet)
+ pDev->SetClipRegion(Region(aPoly));
+ return bRet;
+}
+
+void ScOutputData::FindChanged()
+{
+ USHORT nX;
+ USHORT nArrY;
+
+ BOOL bWasIdleDisabled = pDoc->IsIdleDisabled();
+ pDoc->DisableIdle( TRUE );
+ for (nArrY=0; nArrY<nArrCount; nArrY++)
+ pRowInfo[nArrY].bChanged = FALSE;
+
+ BOOL bProgress = FALSE;
+ for (nArrY=0; nArrY<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ for (nX=nX1; nX<=nX2; nX++)
+ {
+ ScBaseCell* pCell = pThisRowInfo->pCellInfo[nX+1].pCell;
+ if (pCell)
+ if (pCell->GetCellType() == CELLTYPE_FORMULA)
+ {
+ ScFormulaCell* pFCell = (ScFormulaCell*)pCell;
+ if ( !bProgress && pFCell->GetDirty() )
+ {
+ ScProgress::CreateInterpretProgress( pDoc, TRUE );
+ bProgress = TRUE;
+ }
+ if (!pFCell->IsRunning())
+ {
+ double aVal = pFCell->GetValue();
+ if (pFCell->IsChanged())
+ {
+ pThisRowInfo->bChanged = TRUE;
+ if ( pThisRowInfo->pCellInfo[nX+1].bMerged )
+ {
+ USHORT nOverY = nArrY + 1;
+ while ( nOverY<nArrCount &&
+ pRowInfo[nOverY].pCellInfo[nX+1].bVOverlapped )
+ {
+ pRowInfo[nOverY].bChanged = TRUE;
+ ++nOverY;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if ( bProgress )
+ ScProgress::DeleteInterpretProgress();
+ pDoc->DisableIdle( bWasIdleDisabled );
+}
+
+void ScOutputData::DrawMark( Window* pWin )
+{
+ Rectangle aRect;
+ ScInvertMerger aInvert( pWin );
+ //! additional method AddLineRect for ScInvertMerger?
+
+ long nPosY = nScrY;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ if ( pThisRowInfo->bChanged )
+ {
+ long nPosX = nScrX;
+ aRect = Rectangle( Point( nPosX,nPosY ), Size(0, pThisRowInfo->nHeight) );
+
+ BOOL bOldMarked = FALSE;
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ if ( pThisRowInfo->pCellInfo[nX+1].bMarked != bOldMarked )
+ {
+ if (bOldMarked && aRect.Right() >= aRect.Left())
+ aInvert.AddRect( aRect );
+ aRect.Left() = nPosX;
+ bOldMarked = pThisRowInfo->pCellInfo[nX+1].bMarked;
+ }
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ aRect.Right() = nPosX-1;
+ }
+ if (bOldMarked && aRect.Right() >= aRect.Left())
+ aInvert.AddRect( aRect );
+ }
+ nPosY += pThisRowInfo->nHeight;
+ }
+}
+
+void ScOutputData::DrawRefMark( USHORT nRefStartX, USHORT nRefStartY,
+ USHORT nRefEndX, USHORT nRefEndY,
+ const Color& rColor, BOOL bHandle )
+{
+ PutInOrder( nRefStartX, nRefEndX );
+ PutInOrder( nRefStartY, nRefEndY );
+
+ if ( nRefStartX == nRefEndX && nRefStartY == nRefEndY )
+ pDoc->ExtendMerge( nRefStartX, nRefStartY, nRefEndX, nRefEndY, nTab );
+
+ if ( nRefStartX <= nX2 && nRefEndX >= nX1 &&
+ nRefStartY <= nY2 && nRefEndY >= nY1 )
+ {
+ long nMinX = nScrX;
+ long nMinY = nScrY;
+ long nMaxX = nScrX+nScrW-1;
+ long nMaxY = nScrY+nScrH-1;
+ BOOL bTop = FALSE;
+ BOOL bBottom = FALSE;
+ BOOL bLeft = FALSE;
+ BOOL bRight = FALSE;
+
+ long nPosY = nScrY;
+ BOOL bNoStartY = FALSE;
+ BOOL bNoEndY = FALSE;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ USHORT nY = pRowInfo[nArrY].nRowNo;
+
+ if ( nY==nRefStartY || (nY>nRefStartY && bNoStartY) )
+ {
+ nMinY = nPosY;
+ bTop = TRUE;
+ }
+ if ( nY==nRefEndY )
+ {
+ nMaxY = nPosY + pRowInfo[nArrY].nHeight - 2;
+ bBottom = TRUE;
+ }
+ if ( nY>nRefEndY && bNoEndY )
+ {
+ nMaxY = nPosY-2;
+ bBottom = TRUE;
+ }
+ bNoStartY = ( nY < nRefStartY );
+ bNoEndY = ( nY < nRefEndY );
+ nPosY += pRowInfo[nArrY].nHeight;
+ }
+
+ RowInfo* pThisRowInfo = &pRowInfo[0];
+ long nPosX = nScrX;
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ if ( nX==nRefStartX )
+ {
+ nMinX = nPosX;
+ bLeft = TRUE;
+ }
+ if ( nX==nRefEndX )
+ {
+ nMaxX = nPosX + pRowInfo[0].pCellInfo[nX+1].nWidth - 2;
+ bRight = TRUE;
+ }
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+
+ if ( nMaxX >= nMinX && nMaxY >= nMinY )
+ {
+ pDev->SetLineColor( rColor );
+ if (bTop && bBottom && bLeft && bRight)
+ {
+ pDev->SetFillColor();
+ pDev->DrawRect( Rectangle( nMinX, nMinY, nMaxX, nMaxY ) );
+ }
+ else
+ {
+ if (bTop)
+ pDev->DrawLine( Point( nMinX,nMinY ), Point( nMaxX,nMinY ) );
+ if (bBottom)
+ pDev->DrawLine( Point( nMinX,nMaxY ), Point( nMaxX,nMaxY ) );
+ if (bLeft)
+ pDev->DrawLine( Point( nMinX,nMinY ), Point( nMinX,nMaxY ) );
+ if (bRight)
+ pDev->DrawLine( Point( nMaxX,nMinY ), Point( nMaxX,nMaxY ) );
+ }
+ if ( bHandle && bRight && bBottom )
+ {
+ pDev->SetLineColor();
+ pDev->SetFillColor( rColor );
+ pDev->DrawRect( Rectangle( nMaxX-3, nMaxY-3, nMaxX+1, nMaxY+1 ) );
+ }
+ }
+ }
+}
+
+void ScOutputData::DrawOneChange( USHORT nRefStartX, USHORT nRefStartY,
+ USHORT nRefEndX, USHORT nRefEndY,
+ const Color& rColor, USHORT nType )
+{
+ PutInOrder( nRefStartX, nRefEndX );
+ PutInOrder( nRefStartY, nRefEndY );
+
+ if ( nRefStartX == nRefEndX && nRefStartY == nRefEndY )
+ pDoc->ExtendMerge( nRefStartX, nRefStartY, nRefEndX, nRefEndY, nTab );
+
+ if ( nRefStartX <= nX2 + 1 && nRefEndX >= nX1 &&
+ nRefStartY <= nY2 + 1 && nRefEndY >= nY1 ) // +1 weil's links oben raus geht
+ {
+ long nMinX = nScrX;
+ long nMinY = nScrY;
+ long nMaxX = nScrX+nScrW-1;
+ long nMaxY = nScrY+nScrH-1;
+ BOOL bTop = FALSE;
+ BOOL bBottom = FALSE;
+ BOOL bLeft = FALSE;
+ BOOL bRight = FALSE;
+
+ long nPosY = nScrY;
+ BOOL bNoStartY = FALSE;
+ BOOL bNoEndY = FALSE;
+ for (USHORT nArrY=1; nArrY<nArrCount; nArrY++)
+ {
+ USHORT nY = pRowInfo[nArrY].nRowNo;
+
+ if ( nY==nRefStartY || (nY>nRefStartY && bNoStartY) )
+ {
+ nMinY = nPosY - 1;
+ bTop = TRUE;
+ }
+ if ( nY==nRefEndY )
+ {
+ nMaxY = nPosY + pRowInfo[nArrY].nHeight - 1;
+ bBottom = TRUE;
+ }
+ if ( nY>nRefEndY && bNoEndY )
+ {
+ nMaxY = nPosY - 1;
+ bBottom = TRUE;
+ }
+ bNoStartY = ( nY < nRefStartY );
+ bNoEndY = ( nY < nRefEndY );
+ nPosY += pRowInfo[nArrY].nHeight;
+ }
+
+ RowInfo* pThisRowInfo = &pRowInfo[0];
+ long nPosX = nScrX;
+ for (USHORT nX=nX1; nX<=nX2+1; nX++)
+ {
+ if ( nX==nRefStartX )
+ {
+ nMinX = nPosX - 1;
+ bLeft = TRUE;
+ }
+ if ( nX==nRefEndX )
+ {
+ nMaxX = nPosX + pRowInfo[0].pCellInfo[nX+1].nWidth - 1;
+ bRight = TRUE;
+ }
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+
+ if ( nMaxX >= nMinX && nMaxY >= nMinY )
+ {
+ if ( nType == SC_CAT_DELETE_ROWS )
+ bLeft = bRight = bBottom = FALSE; //! dicke Linie ???
+ else if ( nType == SC_CAT_DELETE_COLS )
+ bTop = bBottom = bRight = FALSE; //! dicke Linie ???
+
+ pDev->SetLineColor( rColor );
+ if (bTop && bBottom && bLeft && bRight)
+ {
+ pDev->SetFillColor();
+ pDev->DrawRect( Rectangle( nMinX, nMinY, nMaxX, nMaxY ) );
+ }
+ else
+ {
+ if (bTop)
+ {
+ pDev->DrawLine( Point( nMinX,nMinY ), Point( nMaxX,nMinY ) );
+ if ( nType == SC_CAT_DELETE_ROWS )
+ pDev->DrawLine( Point( nMinX,nMinY+1 ), Point( nMaxX,nMinY+1 ) );
+ }
+ if (bBottom)
+ pDev->DrawLine( Point( nMinX,nMaxY ), Point( nMaxX,nMaxY ) );
+ if (bLeft)
+ {
+ pDev->DrawLine( Point( nMinX,nMinY ), Point( nMinX,nMaxY ) );
+ if ( nType == SC_CAT_DELETE_COLS )
+ pDev->DrawLine( Point( nMinX+1,nMinY ), Point( nMinX+1,nMaxY ) );
+ }
+ if (bRight)
+ pDev->DrawLine( Point( nMaxX,nMinY ), Point( nMaxX,nMaxY ) );
+ }
+ if ( bLeft && bTop )
+ {
+ pDev->SetLineColor();
+ pDev->SetFillColor( rColor );
+ pDev->DrawRect( Rectangle( nMinX+1, nMinY+1, nMinX+3, nMinY+3 ) );
+ }
+ }
+ }
+}
+
+void ScOutputData::DrawChangeTrack()
+{
+ ScChangeTrack* pTrack = pDoc->GetChangeTrack();
+ ScChangeViewSettings* pSettings = pDoc->GetChangeViewSettings();
+ if ( !pTrack || !pTrack->GetFirst() || !pSettings || !pSettings->ShowChanges() )
+ return; // nix da oder abgeschaltet
+
+ ScActionColorChanger aColorChanger(*pTrack);
+
+ // Clipping passiert von aussen
+ //! ohne Clipping, nur betroffene Zeilen painten ??!??!?
+
+ USHORT nEndX = nX2;
+ USHORT nEndY = nY2;
+ if ( nEndX < MAXCOL ) ++nEndX; // auch noch von der naechsten Zelle, weil die Markierung
+ if ( nEndY < MAXROW ) ++nEndY; // in die jeweils vorhergehende Zelle hineinragt
+ ScRange aViewRange( nX1, nY1, nTab, nEndX, nEndY, nTab );
+ const ScChangeAction* pAction = pTrack->GetFirst();
+ while (pAction)
+ {
+ ScChangeActionType eType;
+ if ( pAction->IsVisible() )
+ {
+ eType = pAction->GetType();
+ const ScBigRange& rBig = pAction->GetBigRange();
+ if ( rBig.aStart.Tab() == nTab )
+ {
+ ScRange aRange = rBig.MakeRange();
+
+ if ( eType == SC_CAT_DELETE_ROWS )
+ aRange.aEnd.SetRow( aRange.aStart.Row() );
+ else if ( eType == SC_CAT_DELETE_COLS )
+ aRange.aEnd.SetCol( aRange.aStart.Col() );
+
+ if ( aRange.Intersects( aViewRange ) &&
+ ScViewUtil::IsActionShown( *pAction, *pSettings, *pDoc ) )
+ {
+ aColorChanger.Update( *pAction );
+ Color aColor( aColorChanger.GetColor() );
+ DrawOneChange( aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(), aColor, eType );
+
+ }
+ }
+ if ( eType == SC_CAT_MOVE &&
+ ((const ScChangeActionMove*)pAction)->
+ GetFromRange().aStart.Tab() == nTab )
+ {
+ ScRange aRange = ((const ScChangeActionMove*)pAction)->
+ GetFromRange().MakeRange();
+ if ( aRange.Intersects( aViewRange ) &&
+ ScViewUtil::IsActionShown( *pAction, *pSettings, *pDoc ) )
+ {
+ aColorChanger.Update( *pAction );
+ Color aColor( aColorChanger.GetColor() );
+ DrawOneChange( aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(), aColor, eType );
+ }
+ }
+ }
+
+ pAction = pAction->GetNext();
+ }
+}
+
+void ScOutputData::DrawNoteMarks()
+{
+ BOOL bFirst = TRUE;
+
+ long nPosY = nScrY;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ if ( pThisRowInfo->bChanged )
+ {
+ long nPosX = nScrX;
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nX+1];
+ ScBaseCell* pCell = pInfo->pCell;
+ BOOL bIsMerged = FALSE;
+
+ if ( nX==nX1 && pInfo->bHOverlapped && !pInfo->bVOverlapped )
+ {
+ // find start of merged cell
+ bIsMerged = TRUE;
+ USHORT nY = pRowInfo[nArrY].nRowNo;
+ USHORT nMergeX = nX;
+ USHORT nMergeY = nY;
+ pDoc->ExtendOverlapped( nMergeX, nMergeY, nX, nY, nTab );
+ pCell = pDoc->GetCell( ScAddress(nMergeX,nMergeY,nTab) );
+ // use origin's pCell for NotePtr test below
+ }
+
+ if ( pCell && pCell->GetNotePtr() && ( bIsMerged ||
+ ( !pInfo->bHOverlapped && !pInfo->bVOverlapped ) ) )
+ {
+ if (bFirst)
+ {
+ pDev->SetLineColor();
+ pDev->SetFillColor(COL_LIGHTRED);
+ bFirst = FALSE;
+ }
+
+ long nMarkX = nPosX + pRowInfo[0].pCellInfo[nX+1].nWidth - 4;
+ if ( bIsMerged || pInfo->bMerged )
+ {
+ // if merged, add widths of all cells
+ USHORT nNextX = nX + 1;
+ while ( nNextX <= nX2 + 1 && pThisRowInfo->pCellInfo[nNextX+1].bHOverlapped )
+ {
+ nMarkX += pRowInfo[0].pCellInfo[nNextX+1].nWidth;
+ ++nNextX;
+ }
+ }
+ if ( nMarkX < nScrX+nScrW )
+ pDev->DrawRect( Rectangle( nMarkX,nPosY,nMarkX+2,nPosY+2 ) );
+ }
+
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+ }
+ nPosY += pThisRowInfo->nHeight;
+ }
+}
+
+long lcl_FindInList( const List& rPosList, const ScTripel &rPos )
+{
+ long nCount = rPosList.Count();
+ for (long i=0; i<nCount; i++)
+ if (*(ScTripel*)rPosList.GetObject(i) == rPos)
+ return i+1;
+
+ return 0;
+}
+
+void ScOutputData::PrintNoteMarks( const List& rPosList )
+{
+ Font aFont;
+ ((const ScPatternAttr&)pDoc->GetPool()->GetDefaultItem(ATTR_PATTERN)).GetFont(aFont);
+ aFont.SetSize( Size( 0, (long) ( 120 * nPPTY ) ) ); // 6 pt
+ pDev->SetFont( aFont );
+
+ String aStr;
+
+ long nPosY = nScrY;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ if ( pThisRowInfo->bChanged )
+ {
+ long nPosX = nScrX;
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nX+1];
+ ScBaseCell* pCell = pInfo->pCell;
+ if ( pCell && pCell->GetNotePtr() ) // auch verdeckte wegen der Numerierung
+ {
+ aStr = lcl_FindInList( rPosList, ScTripel( nX, pThisRowInfo->nRowNo, nTab ) );
+ long nMarkX = nPosX + pRowInfo[0].pCellInfo[nX+1].nWidth - 2 -
+ pDev->GetTextWidth(aStr);
+ pDev->DrawText( Point( nMarkX,nPosY ), aStr );
+ }
+
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+ }
+ nPosY += pThisRowInfo->nHeight;
+ }
+}
+
+void ScOutputData::ConnectObject( const SvInPlaceObjectRef& rRef, SdrOle2Obj* pOleObj )
+{
+ if (rRef.Is())
+ {
+ ULONG nMisc = rRef->GetMiscStatus();
+ if ( nMisc & SVOBJ_MISCSTATUS_ACTIVATEWHENVISIBLE )
+ pViewShell->ConnectObject( pOleObj );
+ }
+}
+
+void ScOutputData::DrawClipMarks()
+{
+ if (!bAnyClipped)
+ return;
+
+ long nPosY = nScrY;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ if ( pThisRowInfo->bChanged )
+ {
+ USHORT nY = pThisRowInfo->nRowNo;
+ long nPosX = nScrX;
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nX+1];
+ if (pInfo->bStandard) //! umbenennen in bClipped
+ {
+ if (pInfo->bHOverlapped || pInfo->bVOverlapped)
+ {
+ //! ...
+ }
+
+ long nOutWidth = pRowInfo[0].pCellInfo[nX+1].nWidth;
+ long nOutHeight = pThisRowInfo->nHeight;
+
+ if ( pInfo->bMerged && pInfo->pPatternAttr )
+ {
+ USHORT nOverX = nX;
+ USHORT nOverY = nY;
+ USHORT i;
+ const ScMergeAttr* pMerge =
+ (ScMergeAttr*)&pInfo->pPatternAttr->GetItem(ATTR_MERGE);
+ USHORT nCountX = pMerge->GetColMerge();
+ for (i=1; i<nCountX; i++)
+ nOutWidth += (long) ( pDoc->GetColWidth(nOverX+i,nTab) * nPPTX );
+ USHORT nCountY = pMerge->GetRowMerge();
+ for (i=1; i<nCountY; i++)
+ nOutHeight += (long) ( pDoc->GetRowHeight(nOverY+i,nTab) * nPPTY );
+
+ }
+
+ Rectangle aCellRect( Point( nPosX, nPosY ), Size( nOutWidth, nOutHeight ) );
+
+ long nMarkPixel = (long)( SC_CLIPMARK_SIZE * nPPTX );
+ Size aMarkSize( nMarkPixel, (nMarkPixel-1)*2 );
+
+ Rectangle aMarkRect = aCellRect;
+ aMarkRect.Left() = aCellRect.Right()-nMarkPixel;
+ aMarkRect.Bottom() -= 1; // nicht das Gitter uebermalen
+ aMarkRect.Right() -= 1;
+#if 0
+ //! Test
+ pDev->SetLineColor(); pDev->SetFillColor(COL_LIGHTGREEN);
+ pDev->DrawRect(aMarkRect);
+ //! Test
+#endif
+ SvxFont::DrawArrow( *pDev, aMarkRect, aMarkSize, Color(COL_LIGHTRED), FALSE );
+ }
+
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+ }
+ nPosY += pThisRowInfo->nHeight;
+ }
+}
+
+
+
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
new file mode 100644
index 000000000000..67a654e7be0c
--- /dev/null
+++ b/sc/source/ui/view/output2.cxx
@@ -0,0 +1,2884 @@
+/*************************************************************************
+ *
+ * $RCSfile: output2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/adjitem.hxx>
+#include <svx/algitem.hxx>
+#include <svx/colritem.hxx>
+#include <svx/editstat.hxx>
+#include <svx/fhgtitem.hxx>
+#include <svx/langitem.hxx>
+#include <svx/rotmodit.hxx>
+#include <svtools/zforlist.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/metric.hxx>
+#include <vcl/outdev.hxx>
+#include <math.h>
+
+#include "output.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "attrib.hxx"
+#include "patattr.hxx"
+#include "cellform.hxx"
+#include "editutil.hxx"
+#include "progress.hxx"
+
+ //! Autofilter-Breite mit column.cxx zusammenfassen
+#define DROPDOWN_BITMAP_SIZE 17
+
+#define DRAWTEXT_MAX 32767
+
+
+// STATIC DATA -----------------------------------------------------------
+
+// -----------------------------------------------------------------------
+
+class ScDrawStringsVars
+{
+ ScOutputData* pOutput; // Verbindung
+ SvNumberFormatter* pFormatter;
+
+ const ScPatternAttr* pPattern; // Attribute
+ const SfxItemSet* pCondSet; // aus bedingter Formatierung
+
+ Font aFont; // aus Attributen erzeugt
+ FontMetric aMetric;
+ SvxCellOrientation eAttrOrient;
+ SvxCellHorJustify eAttrHorJust;
+ SvxCellVerJustify eAttrVerJust;
+ const SvxMarginItem* pMargin;
+ USHORT nIndent;
+ BOOL bRotated;
+
+ String aString; // Inhalte
+ Size aTextSize;
+
+ ScBaseCell* pLastCell;
+ ULONG nValueFormat;
+ BOOL bLineBreak;
+
+public:
+ ScDrawStringsVars(ScOutputData* pData);
+ ~ScDrawStringsVars();
+
+ // SetPattern = ex-SetVars
+ // SetPatternSimple: ohne Font
+
+ void SetPattern( const ScPatternAttr* pNew, const SfxItemSet* pSet, ScBaseCell* pCell );
+ void SetPatternSimple( const ScPatternAttr* pNew, const SfxItemSet* pSet );
+
+ BOOL SetText( ScBaseCell* pCell ); // TRUE -> pOldPattern vergessen
+ void ResetText();
+ void SetHashText();
+
+ const ScPatternAttr* GetPattern() const { return pPattern; }
+ SvxCellOrientation GetOrient() const { return eAttrOrient; }
+ SvxCellHorJustify GetHorJust() const { return eAttrHorJust; }
+ SvxCellVerJustify GetVerJust() const { return eAttrVerJust; }
+ const SvxMarginItem* GetMargin() const { return pMargin; }
+
+ USHORT GetLeftTotal() const { return pMargin->GetLeftMargin() + nIndent; }
+
+ const String& GetString() const { return aString; }
+ const Size& GetTextSize() const { return aTextSize; }
+
+ ULONG GetValueFormat() const { return nValueFormat; }
+ BOOL GetLineBreak() const { return bLineBreak; }
+
+ long GetAscent() const { return aMetric.GetAscent(); }
+ BOOL IsRotated() const { return bRotated; }
+
+ BOOL HasCondHeight() const { return pCondSet && SFX_ITEM_SET ==
+ pCondSet->GetItemState( ATTR_FONT_HEIGHT, TRUE ); }
+};
+
+//==================================================================
+
+ScDrawStringsVars::ScDrawStringsVars(ScOutputData* pData) :
+ pOutput ( pData ),
+ pPattern ( NULL ),
+ pCondSet ( NULL ),
+ pMargin ( NULL ),
+ nIndent ( 0 ),
+ bRotated ( FALSE ),
+ eAttrHorJust( SVX_HOR_JUSTIFY_STANDARD ),
+ eAttrVerJust( SVX_VER_JUSTIFY_BOTTOM ),
+ eAttrOrient ( SVX_ORIENTATION_STANDARD ),
+ bLineBreak ( FALSE ),
+ nValueFormat( 0 ),
+ pLastCell ( NULL )
+{
+ pFormatter = pData->pDoc->GetFormatTable();
+}
+
+ScDrawStringsVars::~ScDrawStringsVars()
+{
+}
+
+void ScDrawStringsVars::SetPattern( const ScPatternAttr* pNew, const SfxItemSet* pSet,
+ ScBaseCell* pCell )
+{
+ pPattern = pNew;
+ pCondSet = pSet;
+
+ // pPattern auswerten
+
+ OutputDevice* pDev = pOutput->pDev;
+ OutputDevice* pRefDevice = pOutput->pRefDevice;
+
+ // Font
+
+ pPattern->GetFont( aFont, pRefDevice, &pOutput->aZoomY, pCondSet );
+ aFont.SetAlign(ALIGN_BASELINE);
+
+ // Orientierung
+
+ const SfxPoolItem* pCondItem;
+ if ( pCondSet && pCondSet->GetItemState( ATTR_ORIENTATION, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ eAttrOrient = (SvxCellOrientation)((const SvxOrientationItem*)pCondItem)->GetValue();
+ else
+ eAttrOrient = (SvxCellOrientation)
+ ((const SvxOrientationItem&)pPattern->GetItem(ATTR_ORIENTATION)).GetValue();
+
+ short nRot;
+ switch (eAttrOrient)
+ {
+ case SVX_ORIENTATION_STANDARD:
+ nRot = 0;
+ long nRotate;
+ if ( pCondSet && pCondSet->GetItemState( ATTR_ROTATE_VALUE, TRUE, &pCondItem ) ==
+ SFX_ITEM_SET )
+ nRotate = ((const SfxInt32Item*)pCondItem)->GetValue();
+ else
+ nRotate = ((const SfxInt32Item&)pPattern->GetItem(ATTR_ROTATE_VALUE)).GetValue();
+ bRotated = ( nRotate != 0 );
+ break;
+ case SVX_ORIENTATION_STACKED:
+ nRot = 0;
+ bRotated = FALSE;
+ break;
+ case SVX_ORIENTATION_TOPBOTTOM:
+ nRot = 2700;
+ bRotated = FALSE;
+ break;
+ case SVX_ORIENTATION_BOTTOMTOP:
+ nRot = 900;
+ bRotated = FALSE;
+ break;
+ default:
+ DBG_ERROR("Falscher SvxCellOrientation Wert");
+ nRot = 0;
+ bRotated = FALSE;
+ break;
+ }
+ aFont.SetOrientation( nRot );
+
+ // Syntax-Modus
+
+ if (pOutput->bSyntaxMode)
+ pOutput->SetSyntaxColor( &aFont, pCell );
+
+ pDev->SetFont( aFont );
+ if ( pRefDevice != pDev )
+ pRefDevice->SetFont( aFont );
+
+ aMetric = pRefDevice->GetFontMetric();
+
+ //
+ // Wenn auf dem Drucker das Leading 0 ist, gibt es Probleme
+ // -> Metric vom Bildschirm nehmen (wie EditEngine!)
+ //
+
+ if ( pRefDevice->GetOutDevType() == OUTDEV_PRINTER && aMetric.GetLeading() == 0 )
+ {
+ OutputDevice* pDefaultDev = Application::GetDefaultDevice();
+ MapMode aOld = pDefaultDev->GetMapMode();
+ pDefaultDev->SetMapMode( pRefDevice->GetMapMode() );
+ aMetric = pDefaultDev->GetFontMetric( aFont );
+ pDefaultDev->SetMapMode( aOld );
+ }
+
+ // Ausrichtung
+
+ if ( pCondSet && pCondSet->GetItemState( ATTR_HOR_JUSTIFY, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ eAttrHorJust = (SvxCellHorJustify)
+ ((const SvxHorJustifyItem*)pCondItem)->GetValue();
+ else
+ eAttrHorJust = (SvxCellHorJustify)
+ ((const SvxHorJustifyItem&)pPattern->GetItem(ATTR_HOR_JUSTIFY)).GetValue();
+
+ if ( pCondSet && pCondSet->GetItemState( ATTR_VER_JUSTIFY, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ eAttrVerJust = (SvxCellVerJustify)
+ ((const SvxVerJustifyItem*)pCondItem)->GetValue();
+ else
+ eAttrVerJust = (SvxCellVerJustify)
+ ((const SvxVerJustifyItem&)pPattern->GetItem(ATTR_VER_JUSTIFY)).GetValue();
+ if ( eAttrVerJust == SVX_VER_JUSTIFY_STANDARD )
+ eAttrVerJust = SVX_VER_JUSTIFY_BOTTOM;
+
+ // Umbruch
+
+ if ( pCondSet && pCondSet->GetItemState( ATTR_LINEBREAK, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ bLineBreak = ((const SfxBoolItem*)pCondItem)->GetValue();
+ else
+ bLineBreak = ((const SfxBoolItem&)pPattern->GetItem(ATTR_LINEBREAK)).GetValue();
+
+ // Zahlenformat
+
+ ULONG nOld = nValueFormat;
+ nValueFormat = pPattern->GetNumberFormat( pFormatter, pCondSet );
+
+/* s.u.
+ if (nValueFormat != nOld)
+ pLastCell = NULL; // immer neu formatieren
+*/
+ // Raender
+
+ if ( pCondSet && pCondSet->GetItemState( ATTR_MARGIN, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ pMargin = (const SvxMarginItem*)pCondItem;
+ else
+ pMargin = (const SvxMarginItem*)&pPattern->GetItem(ATTR_MARGIN);
+ if ( eAttrHorJust == SVX_HOR_JUSTIFY_LEFT )
+ {
+ if ( pCondSet && pCondSet->GetItemState( ATTR_INDENT, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ nIndent = ((const SfxUInt16Item*)pCondItem)->GetValue();
+ else
+ nIndent = ((const SfxUInt16Item&)pPattern->GetItem(ATTR_INDENT)).GetValue();
+ }
+ else
+ nIndent = 0;
+
+ // zumindest die Text-Groesse muss neu geholt werden
+ //! unterscheiden, und den Text nicht neu vom Numberformatter holen?
+
+ pLastCell = NULL;
+}
+
+void ScDrawStringsVars::SetPatternSimple( const ScPatternAttr* pNew, const SfxItemSet* pSet )
+{
+ // wird gerufen, wenn sich die Font-Variablen nicht aendern (!StringDiffer)
+
+ pPattern = pNew;
+ pCondSet = pSet; //! noetig ???
+
+ // Zahlenformat
+
+ ULONG nOld = nValueFormat;
+// nValueFormat = pPattern->GetNumberFormat( pFormatter );
+ const SfxPoolItem* pFormItem;
+ if ( !pCondSet || pCondSet->GetItemState(ATTR_VALUE_FORMAT,TRUE,&pFormItem) != SFX_ITEM_SET )
+ pFormItem = &pPattern->GetItem(ATTR_VALUE_FORMAT);
+ const SfxPoolItem* pLangItem;
+ if ( !pCondSet || pCondSet->GetItemState(ATTR_LANGUAGE_FORMAT,TRUE,&pLangItem) != SFX_ITEM_SET )
+ pLangItem = &pPattern->GetItem(ATTR_LANGUAGE_FORMAT);
+ nValueFormat = pFormatter->GetFormatForLanguageIfBuiltIn(
+ ((SfxUInt32Item*)pFormItem)->GetValue(),
+ ((SvxLanguageItem*)pLangItem)->GetLanguage() );
+
+ if (nValueFormat != nOld)
+ pLastCell = NULL; // immer neu formatieren
+
+ // Raender
+
+ const SfxPoolItem* pCondItem;
+ if ( pCondSet && pCondSet->GetItemState( ATTR_MARGIN, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ pMargin = (const SvxMarginItem*)pCondItem;
+ else
+ pMargin = (const SvxMarginItem*)&pPattern->GetItem(ATTR_MARGIN);
+ if ( eAttrHorJust == SVX_HOR_JUSTIFY_LEFT )
+ {
+ if ( pCondSet && pCondSet->GetItemState( ATTR_INDENT, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ nIndent = ((const SfxUInt16Item*)pCondItem)->GetValue();
+ else
+ nIndent = ((const SfxUInt16Item&)pPattern->GetItem(ATTR_INDENT)).GetValue();
+ }
+ else
+ nIndent = 0;
+}
+
+inline BOOL SameValue( ScBaseCell* pCell, ScBaseCell* pOldCell ) // pCell ist != 0
+{
+ return pOldCell && pOldCell->GetCellType() == CELLTYPE_VALUE &&
+ pCell->GetCellType() == CELLTYPE_VALUE &&
+ ((ScValueCell*)pCell)->GetValue() == ((ScValueCell*)pOldCell)->GetValue();
+}
+
+BOOL ScDrawStringsVars::SetText( ScBaseCell* pCell )
+{
+ BOOL bChanged = FALSE;
+
+ if (pCell)
+ {
+ if ( !SameValue( pCell, pLastCell ) )
+ {
+ pLastCell = pCell; // Zelle merken
+
+ Color* pColor;
+ ULONG nFormat = GetValueFormat();
+ ScCellFormat::GetString( pCell,
+ nFormat, aString, &pColor,
+ *pFormatter,
+ pOutput->bShowNullValues,
+ pOutput->bShowFormulas,
+ ftCheck );
+
+ if (aString.Len() > DRAWTEXT_MAX)
+ aString.Erase(DRAWTEXT_MAX);
+
+ if ( pColor && !pOutput->bSyntaxMode )
+ {
+ OutputDevice* pDev = pOutput->pDev;
+ aFont.SetColor(*pColor);
+ pDev->SetFont( aFont ); // nur fuer Ausgabe
+ bChanged = TRUE;
+ pLastCell = NULL; // naechstes Mal wieder hierherkommen
+ }
+
+ OutputDevice* pRefDevice = pOutput->pRefDevice;
+ aTextSize.Width() = pRefDevice->GetTextWidth( aString );
+ aTextSize.Height() = pRefDevice->GetTextHeight();
+
+ if ( !pRefDevice->GetConnectMetaFile() || pRefDevice->GetOutDevType() == OUTDEV_PRINTER )
+ {
+ double fMul = pOutput->GetStretch();
+ aTextSize.Width() = (long)(aTextSize.Width() / fMul + 0.5);
+ }
+
+ aTextSize.Height() = aMetric.GetAscent() + aMetric.GetDescent();
+ if ( GetOrient() != SVX_ORIENTATION_STANDARD )
+ {
+ long nTemp = aTextSize.Height();
+ aTextSize.Height() = aTextSize.Width();
+ aTextSize.Width() = nTemp;
+ }
+ }
+ // sonst String/Groesse behalten
+ }
+ else
+ {
+ aString.Erase();
+ pLastCell = NULL;
+ aTextSize = Size(0,0);
+ }
+
+ return bChanged;
+}
+
+void ScDrawStringsVars::ResetText()
+{
+ aString.Erase();
+ pLastCell = NULL;
+ aTextSize = Size(0,0);
+}
+
+void ScDrawStringsVars::SetHashText()
+{
+ aString = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("###"));
+
+ OutputDevice* pRefDevice = pOutput->pRefDevice;
+ aTextSize.Width() = pRefDevice->GetTextWidth( aString );
+ aTextSize.Height() = pRefDevice->GetTextHeight();
+
+ if ( !pRefDevice->GetConnectMetaFile() || pRefDevice->GetOutDevType() == OUTDEV_PRINTER )
+ {
+ double fMul = pOutput->GetStretch();
+ aTextSize.Width() = (long)(aTextSize.Width() / fMul + 0.5);
+ }
+
+ aTextSize.Height() = aMetric.GetAscent() + aMetric.GetDescent();
+ if ( GetOrient() != SVX_ORIENTATION_STANDARD )
+ {
+ long nTemp = aTextSize.Height();
+ aTextSize.Height() = aTextSize.Width();
+ aTextSize.Width() = nTemp;
+ }
+
+ pLastCell = NULL; // derselbe Text kann in der naechsten Zelle wieder passen
+}
+
+//==================================================================
+
+double ScOutputData::GetStretch()
+{
+ MapMode aOld = pRefDevice->GetMapMode();
+ Fraction aFract = aOld.GetScaleY();
+ aFract /= aOld.GetScaleX();
+ aFract *= aZoomY;
+ aFract /= aZoomX;
+ return (double) aFract;
+}
+
+//==================================================================
+
+//
+// Strings ausgeben
+//
+
+void ScOutputData::SetSyntaxColor( Font* pFont, ScBaseCell* pCell )
+{
+ if (pCell)
+ {
+ switch (pCell->GetCellType())
+ {
+ case CELLTYPE_VALUE:
+ pFont->SetColor( *pValueColor );
+ break;
+ case CELLTYPE_STRING:
+ pFont->SetColor( *pTextColor );
+ break;
+ case CELLTYPE_FORMULA:
+ pFont->SetColor( *pFormulaColor );
+ break;
+ }
+ }
+}
+
+void lcl_SetEditColor( EditEngine& rEngine, const Color& rColor )
+{
+ ESelection aSel( 0, 0, rEngine.GetParagraphCount(), 0 );
+ SfxItemSet aSet( rEngine.GetEmptyItemSet() );
+ aSet.Put( SvxColorItem( rColor, EE_CHAR_COLOR ) );
+ rEngine.SetUpdateMode( FALSE );
+ rEngine.QuickSetAttribs( aSet, aSel );
+ rEngine.SetUpdateMode( TRUE );
+}
+
+void ScOutputData::SetEditSyntaxColor( EditEngine& rEngine, ScBaseCell* pCell )
+{
+ if (pCell)
+ {
+ Color aColor;
+ switch (pCell->GetCellType())
+ {
+ case CELLTYPE_VALUE:
+ aColor = *pValueColor;
+ break;
+ case CELLTYPE_STRING:
+ aColor = *pTextColor;
+ break;
+ case CELLTYPE_FORMULA:
+ aColor = *pFormulaColor;
+ break;
+ }
+ lcl_SetEditColor( rEngine, aColor );
+ }
+}
+
+BOOL ScOutputData::GetMergeOrigin( USHORT nX, USHORT nY, USHORT nArrY,
+ USHORT& rOverX, USHORT& rOverY,
+ long& rVirtPosX, long& rVirtPosY,
+ BOOL bClipVirt, BOOL bVisRowChanged )
+{
+ BOOL bDoMerge = FALSE;
+ BOOL bIsLeft = ( nX == nVisX1 );
+ BOOL bIsTop = ( nY == nVisY1 ) || bVisRowChanged;
+
+ CellInfo* pInfo = &pRowInfo[nArrY].pCellInfo[nX+1];
+ if ( pInfo->bHOverlapped && pInfo->bVOverlapped )
+ bDoMerge = bIsLeft && bIsTop;
+ else if ( pInfo->bHOverlapped )
+ bDoMerge = bIsLeft;
+ else if ( pInfo->bVOverlapped )
+ bDoMerge = bIsTop;
+
+ // weiter solange versteckt
+/* if (!bDoMerge)
+ return FALSE;
+*/
+
+ rOverX = nX;
+ rOverY = nY;
+ BOOL bHOver = pInfo->bHOverlapped;
+ BOOL bVOver = pInfo->bVOverlapped;
+ BOOL bHidden;
+
+ while (bHOver) // nY konstant
+ {
+ --rOverX;
+ bHidden = ( (pDoc->GetColFlags(rOverX,nTab) & CR_HIDDEN) != 0 );
+ if ( !bDoMerge && !bHidden )
+ return FALSE;
+
+ if (rOverX >= nX1 && !bHidden)
+ {
+ rVirtPosX -= pRowInfo[0].pCellInfo[rOverX+1].nWidth;
+ bHOver = pRowInfo[nArrY].pCellInfo[rOverX+1].bHOverlapped;
+ bVOver = pRowInfo[nArrY].pCellInfo[rOverX+1].bVOverlapped;
+ }
+ else
+ {
+ if (!bClipVirt)
+ rVirtPosX -= (long) (pDoc->GetColWidth( rOverX, nTab ) * nPPTX);
+ USHORT nOverlap = ((ScMergeFlagAttr*)pDoc->GetAttr(
+ rOverX, rOverY, nTab, ATTR_MERGE_FLAG ))->GetValue();
+ bHOver = ((nOverlap & SC_MF_HOR) != 0);
+ bVOver = ((nOverlap & SC_MF_VER) != 0);
+ }
+ }
+
+ while (bVOver)
+ {
+ --rOverY;
+ bHidden = ( (pDoc->GetRowFlags(rOverY,nTab) & CR_HIDDEN) != 0 );
+ if ( !bDoMerge && !bHidden )
+ return FALSE;
+
+ if (nArrY>0)
+ --nArrY; // lokale Kopie !
+
+ if (rOverX >= nX1 && rOverY >= nY1 &&
+ (pDoc->GetColFlags(rOverX,nTab) & CR_HIDDEN) == 0 &&
+ (pDoc->GetRowFlags(rOverY,nTab) & CR_HIDDEN) == 0 &&
+ pRowInfo[nArrY].nRowNo == rOverY)
+ {
+ rVirtPosY -= pRowInfo[nArrY].nHeight;
+ bHOver = pRowInfo[nArrY].pCellInfo[rOverX+1].bHOverlapped;
+ bVOver = pRowInfo[nArrY].pCellInfo[rOverX+1].bVOverlapped;
+ }
+ else
+ {
+ if (!bClipVirt)
+ rVirtPosY -= (long) (pDoc->GetRowHeight( rOverY, nTab ) * nPPTY);
+ USHORT nOverlap = ((ScMergeFlagAttr*)pDoc->GetAttr(
+ rOverX, rOverY, nTab, ATTR_MERGE_FLAG ))->GetValue();
+ bHOver = ((nOverlap & SC_MF_HOR) != 0);
+ bVOver = ((nOverlap & SC_MF_VER) != 0);
+ }
+ }
+ return TRUE;
+}
+
+inline BOOL StringDiffer( const ScPatternAttr*& rpOldPattern, const ScPatternAttr*& rpNewPattern )
+{
+ DBG_ASSERT( rpNewPattern, "pNewPattern" );
+
+ if ( rpNewPattern == rpOldPattern )
+ return FALSE;
+ else if ( !rpOldPattern )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_FONT ) != &rpOldPattern->GetItem( ATTR_FONT ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_FONT_HEIGHT ) != &rpOldPattern->GetItem( ATTR_FONT_HEIGHT ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_FONT_WEIGHT ) != &rpOldPattern->GetItem( ATTR_FONT_WEIGHT ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_FONT_POSTURE ) != &rpOldPattern->GetItem( ATTR_FONT_POSTURE ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_FONT_UNDERLINE ) != &rpOldPattern->GetItem( ATTR_FONT_UNDERLINE ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_FONT_CROSSEDOUT ) != &rpOldPattern->GetItem( ATTR_FONT_CROSSEDOUT ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_FONT_CONTOUR ) != &rpOldPattern->GetItem( ATTR_FONT_CONTOUR ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_FONT_SHADOWED ) != &rpOldPattern->GetItem( ATTR_FONT_SHADOWED ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_FONT_COLOR ) != &rpOldPattern->GetItem( ATTR_FONT_COLOR ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_HOR_JUSTIFY ) != &rpOldPattern->GetItem( ATTR_HOR_JUSTIFY ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_VER_JUSTIFY ) != &rpOldPattern->GetItem( ATTR_VER_JUSTIFY ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_ORIENTATION ) != &rpOldPattern->GetItem( ATTR_ORIENTATION ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_LINEBREAK ) != &rpOldPattern->GetItem( ATTR_LINEBREAK ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_MARGIN ) != &rpOldPattern->GetItem( ATTR_MARGIN ) )
+ return TRUE;
+ else if ( &rpNewPattern->GetItem( ATTR_ROTATE_VALUE ) != &rpOldPattern->GetItem( ATTR_ROTATE_VALUE ) )
+ return TRUE;
+ else
+ {
+ rpOldPattern = rpNewPattern;
+ return FALSE;
+ }
+}
+
+inline void lcl_CreateInterpretProgress( BOOL& bProgress, ScDocument* pDoc,
+ ScFormulaCell* pFCell )
+{
+ if ( !bProgress && pFCell->GetDirty() )
+ {
+ ScProgress::CreateInterpretProgress( pDoc, TRUE );
+ bProgress = TRUE;
+ }
+}
+
+BOOL lcl_IsValueDataAtPos( BOOL& bProgress, ScDocument* pDoc,
+ USHORT nCol, USHORT nRow, USHORT nTab )
+{
+ ScBaseCell* pCell;
+ pDoc->GetCell( nCol, nRow, nTab, pCell );
+ if ( pCell )
+ {
+ if ( pCell->GetCellType() == CELLTYPE_FORMULA )
+ { // kein weiteres Interpret anstossen
+ ScFormulaCell* pFCell = (ScFormulaCell*) pCell;
+ if ( pFCell->IsRunning() )
+ return TRUE;
+ else
+ {
+ lcl_CreateInterpretProgress( bProgress, pDoc, pFCell );
+ return pFCell->HasValueData();
+ }
+ }
+ else
+ return pCell->HasValueData();
+ }
+ else
+ return FALSE;
+}
+
+void ScOutputData::DrawStrings()
+{
+ DBG_ASSERT( pDev == pRefDevice ||
+ pDev->GetMapMode().GetMapUnit() == pRefDevice->GetMapMode().GetMapUnit(),
+ "DrawStrings: unterschiedliche MapUnits ?!?!" );
+
+ BOOL bWasIdleDisabled = pDoc->IsIdleDisabled();
+ pDoc->DisableIdle( TRUE );
+ Size aMinSize = pRefDevice->PixelToLogic(Size(0,100)); // erst darueber wird ausgegeben
+ UINT32 nMinHeight = aMinSize.Height() / 200; // 1/2 Pixel
+
+ ScDrawStringsVars aVars( this );
+
+ const ScPatternAttr* pOldPattern = NULL;
+ const SfxItemSet* pOldCondSet = NULL;
+
+ BOOL bProgress = FALSE;
+
+ long nPosY = nScrY;
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ if ( pThisRowInfo->bChanged )
+ {
+ USHORT nY = pThisRowInfo->nRowNo;
+ long nCellHeight = (long) pThisRowInfo->nHeight;
+ long nPosX = nScrX;
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ ScForceTextFmt eForceText = ftDontForce;
+
+ BOOL bLeftOver = FALSE; // Ueberhang von langem String (immer linksb.)
+ BOOL bMergeOver = FALSE; // Rest von zusammengefassten Zellen
+ BOOL bMergeEmpty= FALSE;
+ long nVirtPosX = nPosX;
+ long nVirtPosY = nPosY;
+ long nOutWidth = 0;
+ long nOutHeight = nCellHeight;
+ USHORT nOverX; // Start der zusammengefassten Zellen
+ USHORT nOverY;
+
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nX+1];
+ BOOL bEmpty = pInfo->bEmptyCellText;
+
+ //
+ // Teil von zusammengefasster Zelle ?
+ //
+
+ if ( pInfo->bHOverlapped || pInfo->bVOverlapped )
+ {
+ bEmpty = TRUE;
+
+ BOOL bVisChanged = !pRowInfo[nArrY-1].bChanged;
+ if (GetMergeOrigin( nX,nY, nArrY, nOverX,nOverY, nVirtPosX,nVirtPosY,
+ FALSE, bVisChanged ))
+ {
+ ScBaseCell* pCell;
+ pDoc->GetCell( nOverX, nOverY, nTab, pCell );
+ if (pCell)
+ {
+ BOOL bEdit = ( pCell->GetCellType() == CELLTYPE_EDIT );
+ if (!bEdit)
+ {
+ const ScPatternAttr* pPattern =
+ pDoc->GetPattern( nOverX, nOverY, nTab );
+ const SfxItemSet* pCondSet =
+ pDoc->GetCondResult( nOverX, nOverY, nTab );
+ if ( pPattern != pOldPattern ||
+ pCondSet != pOldCondSet || bSyntaxMode )
+ {
+ if ( StringDiffer(pOldPattern,pPattern) ||
+ pCondSet != pOldCondSet || bSyntaxMode )
+ aVars.SetPattern( pPattern, pCondSet, pCell );
+ else
+ aVars.SetPatternSimple( pPattern, pCondSet );
+ pOldPattern = pPattern;
+ pOldCondSet = pCondSet;
+ }
+
+ if ( aVars.GetOrient() == SVX_ORIENTATION_STACKED ||
+ aVars.IsRotated() )
+ bEdit = TRUE;
+ }
+ if (!bEdit)
+ {
+ if ( pCell->GetCellType() == CELLTYPE_FORMULA )
+ lcl_CreateInterpretProgress( bProgress,
+ pDoc, (ScFormulaCell*)pCell );
+ if ( aVars.SetText(pCell) )
+ pOldPattern = NULL;
+
+ if (nOverX >= nX1)
+ nOutWidth = ((long)pRowInfo[0].pCellInfo[nOverX+1].nWidth) - 1;
+ else
+ nOutWidth = ((long)(pDoc->GetColWidth( nOverX, nTab ) *
+ nPPTX)) - 1;
+
+ nOutHeight = (long) (pDoc->GetRowHeight( nOverY, nTab ) * nPPTY);
+
+ bMergeOver = TRUE;
+ }
+ else // Edit-Zelle
+ {
+ if (nOverY == nY || bVisChanged)
+ pThisRowInfo->pCellInfo[nOverX+1].bEditEngine = TRUE;
+ else
+ pRowInfo[0].pCellInfo[nOverX+1].bEditEngine = TRUE;
+ }
+ }
+ }
+ bMergeEmpty = TRUE;
+ }
+
+ //
+ // Rest von langem Text weiter links ?
+ //
+
+ // nJustPosX ist incl. Ausrichtung, nVirtPosX fuer Clipping ohne Ausrichtung
+ long nJustPosX = nVirtPosX;
+ if ( bEmpty && !bMergeEmpty )
+ {
+ if (nX==nX1) // links Zellen zum Weiterzeichnen ?
+ {
+ nOutWidth = ((long)pRowInfo[0].pCellInfo[nX+1].nWidth) - 1;
+ USHORT nTempX=nX;
+ while (nTempX > 0 && pThisRowInfo->pCellInfo[nTempX+1].bEmptyCellText)
+ {
+ --nTempX;
+ nVirtPosX -= pRowInfo[0].pCellInfo[nTempX+1].nWidth;
+ nOutWidth += pRowInfo[0].pCellInfo[nTempX+1].nWidth;
+ }
+ nJustPosX = nVirtPosX;
+ if ( !pThisRowInfo->pCellInfo[nTempX+1].bEmptyCellText )
+ {
+ ScBaseCell* pCell = pThisRowInfo->pCellInfo[nTempX+1].pCell;
+ CellType eCellType = pCell->GetCellType();
+ if ( eCellType == CELLTYPE_STRING ||
+ (eCellType == CELLTYPE_FORMULA
+ && !lcl_IsValueDataAtPos( bProgress, pDoc,
+ nTempX, nY, nTab )) )
+ {
+ const ScPatternAttr* pPattern =
+ pDoc->GetPattern( nTempX, nY, nTab );
+ const SfxItemSet* pCondSet =
+ pDoc->GetCondResult( nTempX, nY, nTab );
+ if ( pPattern != pOldPattern ||
+ pCondSet != pOldCondSet || bSyntaxMode )
+ {
+ if ( StringDiffer(pOldPattern,pPattern) ||
+ pCondSet != pOldCondSet || bSyntaxMode )
+ aVars.SetPattern( pPattern, pCondSet, pCell );
+ else
+ aVars.SetPatternSimple( pPattern, pCondSet );
+ pOldPattern = pPattern;
+ pOldCondSet = pCondSet;
+ }
+
+ if ( aVars.GetOrient() == SVX_ORIENTATION_STANDARD &&
+ !aVars.GetLineBreak() && !aVars.IsRotated() &&
+ aVars.GetHorJust() != SVX_HOR_JUSTIFY_BLOCK )
+ {
+ if ( eCellType == CELLTYPE_FORMULA )
+ lcl_CreateInterpretProgress( bProgress,
+ pDoc, (ScFormulaCell*)pCell );
+ if ( aVars.SetText(pCell) )
+ pOldPattern = NULL;
+
+ nJustPosX += (long) ( aVars.GetLeftTotal() * nPPTX );
+
+ if ( nJustPosX + aVars.GetTextSize().Width() + 1 > nPosX &&
+ !pDoc->HasAttrib( nTempX,nY,nTab, nX,nY,nTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ) )
+ {
+ bLeftOver = TRUE;
+ }
+ }
+ }
+ else if (eCellType == CELLTYPE_EDIT)
+ {
+ if ( !pDoc->HasAttrib( nTempX,nY,nTab, nX,nY,nTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ) )
+ pThisRowInfo->pCellInfo[nTempX+1].bEditEngine = TRUE;
+ }
+ }
+ }
+ }
+
+ if (bEditMode)
+ if ( nX == nEditCol && nY == nEditRow )
+ bLeftOver = FALSE;
+
+ if (!bEmpty)
+ if (pInfo->pCell->GetCellType() == CELLTYPE_EDIT)
+ {
+ pInfo->bEditEngine = TRUE;
+ bEmpty = TRUE; // Edit-Zelle hier nicht zeichnen
+ }
+
+ // zu kleinen Text in der Druckvorschau als Pixel zeichnen:
+
+ if ( !bEmpty && eType == OUTTYPE_PRINTER &&
+ pDev->GetOutDevType() == OUTDEV_WINDOW &&
+ ((const SvxFontHeightItem&)pInfo->pPatternAttr->
+ GetItem(ATTR_FONT_HEIGHT)).GetHeight() <= nMinHeight )
+ {
+ Point aPos(nPosX,nPosY);
+ pDev->DrawPixel( aPos,
+ ((const SvxColorItem&)pInfo->pPatternAttr->
+ GetItem( ATTR_FONT_COLOR )).GetValue() );
+ bEmpty = TRUE;
+ }
+
+ if (!bEmpty) // bei MergeOver schon geschehen
+ {
+ const ScPatternAttr* pPattern = pInfo->pPatternAttr;
+ const SfxItemSet* pCondSet = pInfo->pConditionSet;
+ if ( pPattern != pOldPattern ||
+ pCondSet != pOldCondSet || bSyntaxMode )
+ {
+ if ( StringDiffer(pOldPattern,pPattern) ||
+ pCondSet != pOldCondSet || bSyntaxMode )
+ aVars.SetPattern( pPattern, pCondSet, pInfo->pCell );
+ else
+ aVars.SetPatternSimple( pPattern, pCondSet );
+ pOldPattern = pPattern;
+ pOldCondSet = pCondSet;
+ }
+
+ if ( aVars.GetOrient() == SVX_ORIENTATION_STACKED ||
+ aVars.IsRotated() )
+ {
+ pInfo->bEditEngine = TRUE;
+ bEmpty = TRUE;
+ }
+ }
+
+ if ( !bEmpty || bLeftOver || bMergeOver )
+ {
+ CellType eCellType;
+ SvxCellHorJustify eOutHorJust;
+
+ BOOL bMergeHClip = FALSE; // Teil von zusammengefassten ausserhalb?
+ BOOL bMergeVClip = FALSE;
+
+ if ( !bEmpty || bMergeOver )
+ {
+ if (!bEmpty)
+ {
+ if ( pInfo->pCell->GetCellType() == CELLTYPE_FORMULA )
+ lcl_CreateInterpretProgress( bProgress,
+ pDoc, (ScFormulaCell*)pInfo->pCell );
+ if ( aVars.SetText(pInfo->pCell) )
+ pOldPattern = NULL;
+
+ nOutWidth = ((long)pRowInfo[0].pCellInfo[nX+1].nWidth)-1;
+ }
+
+ BOOL bMerged = bMergeOver ? TRUE : pInfo->bMerged;
+
+ if ( bMerged ) // Zusammengefasst
+ {
+ if (!bMergeOver)
+ {
+ nOverX = nX;
+ nOverY = nY;
+ }
+ USHORT i;
+ const ScMergeAttr* pMerge =
+ (ScMergeAttr*)&aVars.GetPattern()->GetItem(ATTR_MERGE);
+ USHORT nCountX = pMerge->GetColMerge();
+ for (i=1; i<nCountX; i++)
+ nOutWidth += (long) ( pDoc->GetColWidth(nOverX+i,nTab) * nPPTX );
+ USHORT nCountY = pMerge->GetRowMerge();
+ for (i=1; i<nCountY; i++)
+ nOutHeight += (long) ( pDoc->GetRowHeight(nOverY+i,nTab) * nPPTY );
+
+ if (nOverX+nCountX > nX2+1)
+ bMergeHClip = TRUE;
+ if (nOverY+nCountY > nY2+1)
+ bMergeVClip = TRUE;
+ }
+
+ if (bEditMode)
+ if ( nX == nEditCol && nY == nEditRow )
+ aVars.ResetText();
+
+ // GetTextSize ist schon bei SetText passiert
+
+ if (bMergeOver)
+ {
+ ScBaseCell* pBCell;
+ pDoc->GetCell( nOverX, nOverY, nTab, pBCell );
+ eCellType = (pBCell ? pBCell->GetCellType() : CELLTYPE_NONE);
+ if ( aVars.GetHorJust() != SVX_HOR_JUSTIFY_STANDARD )
+ eOutHorJust = aVars.GetHorJust();
+ else
+ switch( eCellType )
+ {
+ case CELLTYPE_STRING:
+ eOutHorJust = SVX_HOR_JUSTIFY_LEFT;
+ break;
+ case CELLTYPE_VALUE:
+ eOutHorJust = ( eForceText == ftForce )
+ ? SVX_HOR_JUSTIFY_LEFT
+ : SVX_HOR_JUSTIFY_RIGHT;
+ break;
+ case CELLTYPE_FORMULA:
+ {
+ ScFormulaCell* pFCell = (ScFormulaCell*)pBCell;
+ if ( pFCell->IsRunning() )
+ eOutHorJust = SVX_HOR_JUSTIFY_RIGHT;
+ else
+ {
+ lcl_CreateInterpretProgress( bProgress, pDoc, pFCell );
+ if ( pFCell->HasValueData() )
+ eOutHorJust = SVX_HOR_JUSTIFY_RIGHT;
+ else
+ eOutHorJust = SVX_HOR_JUSTIFY_LEFT;
+ }
+ }
+ break;
+ default:
+ eOutHorJust = SVX_HOR_JUSTIFY_CENTER; // unbekannt
+ break;
+ }
+ }
+ else
+ {
+ eCellType = pInfo->pCell->GetCellType();
+ if ( aVars.GetHorJust() != SVX_HOR_JUSTIFY_STANDARD )
+ eOutHorJust = aVars.GetHorJust();
+ else
+ switch( eCellType )
+ {
+ case CELLTYPE_STRING:
+ eOutHorJust = SVX_HOR_JUSTIFY_LEFT;
+ break;
+ case CELLTYPE_VALUE:
+ eOutHorJust = ( eForceText == ftForce )
+ ? SVX_HOR_JUSTIFY_LEFT
+ : SVX_HOR_JUSTIFY_RIGHT;
+ break;
+ case CELLTYPE_FORMULA:
+ {
+ ScFormulaCell* pFCell = (ScFormulaCell*)pInfo->pCell;
+ if ( pFCell->IsRunning() )
+ eOutHorJust = SVX_HOR_JUSTIFY_RIGHT;
+ else
+ {
+ lcl_CreateInterpretProgress( bProgress, pDoc, pFCell );
+ if ( pFCell->IsValue() )
+ eOutHorJust = SVX_HOR_JUSTIFY_RIGHT;
+ else
+ eOutHorJust = SVX_HOR_JUSTIFY_LEFT;
+ }
+ }
+ break;
+ default:
+ eOutHorJust = SVX_HOR_JUSTIFY_CENTER; // unbekannt
+ break;
+ }
+ }
+ }
+ else // Leftover (langer String)
+ {
+ eCellType = CELLTYPE_STRING;
+ eOutHorJust = SVX_HOR_JUSTIFY_LEFT;
+ }
+
+ if ( eOutHorJust == SVX_HOR_JUSTIFY_BLOCK || eOutHorJust == SVX_HOR_JUSTIFY_REPEAT )
+ eOutHorJust = SVX_HOR_JUSTIFY_LEFT; // noch nicht implementiert
+
+
+ // Clipping testen
+ BOOL bHClip = FALSE;
+ BOOL bVClip = FALSE;
+// BOOL bExtended = FALSE;
+ CellInfo* pClipRight = NULL; // Zelle mit Clipping-Markierung (rechts)
+
+ long nJustOutWidth = nOutWidth; // fuer Ausrichtung
+
+ long nNeededWidth;
+ if (eType == OUTTYPE_WINDOW)
+ nNeededWidth = aVars.GetTextSize().Width() +
+ (long) ( aVars.GetLeftTotal() * nPPTX ) +
+ (long) ( aVars.GetMargin()->GetRightMargin() * nPPTX );
+ else
+ {
+ nNeededWidth = aVars.GetTextSize().Width(); // in Margin zeichnen erlaubt
+ switch (eOutHorJust)
+ {
+ case SVX_HOR_JUSTIFY_LEFT:
+ nNeededWidth += (long) ( aVars.GetLeftTotal() * nPPTX );
+ break;
+ case SVX_HOR_JUSTIFY_RIGHT:
+ nNeededWidth += (long) ( aVars.GetMargin()->GetRightMargin() * nPPTX );
+ break;
+ case SVX_HOR_JUSTIFY_CENTER:
+ break;
+ default:
+ nNeededWidth += (long) ( aVars.GetLeftTotal() * nPPTX ) +
+ (long) ( aVars.GetMargin()->GetRightMargin() * nPPTX );
+ }
+ }
+
+ //
+ // horizontalen Platz testen
+ //
+
+ BOOL bNeedEditEngine = FALSE;
+ if ( aVars.GetLineBreak() ||
+ aVars.GetHorJust() == SVX_HOR_JUSTIFY_BLOCK )
+ {
+ //! hier immer Margin beruecksichtigen ???
+
+ BOOL bBig;
+
+ //if (aVars.GetString().Search((sal_Unicode)10) != STRING_NOTFOUND)
+ // bBig = TRUE;
+ //else ...
+
+ if (aVars.GetOrient() == SVX_ORIENTATION_STANDARD)
+ {
+ long nCmpWidth = nOutWidth; // auch hier AutoFilter abziehen
+ if ( eType==OUTTYPE_WINDOW && pInfo && pInfo->bAutoFilter )
+ nCmpWidth -= Min( pThisRowInfo->nHeight,
+ (USHORT) DROPDOWN_BITMAP_SIZE );
+ bBig = (nNeededWidth+1 > nCmpWidth);
+ }
+ else
+ bBig = (aVars.GetTextSize().Height() > nOutHeight);
+
+ if (bBig)
+ {
+ if (bMergeOver)
+ {
+ // BOOL bVisChanged = !pRowInfo[nArrY-1].bChanged
+ if (nOverY == nY || !pRowInfo[nArrY-1].bChanged )
+ pThisRowInfo->pCellInfo[nOverX+1].bEditEngine = TRUE;
+ else
+ pRowInfo[0].pCellInfo[nOverX+1].bEditEngine = TRUE;
+ }
+ else
+ pInfo->bEditEngine = TRUE;
+ bNeedEditEngine = TRUE;
+ }
+ }
+
+ if (!bNeedEditEngine)
+ {
+ if ( eCellType == CELLTYPE_STRING ||
+ (eCellType == CELLTYPE_FORMULA
+ && !lcl_IsValueDataAtPos( bProgress, pDoc,
+ nX, nY, nTab )) )
+ { // rechts Platz suchen
+ if (nNeededWidth+1 > nOutWidth )
+ {
+ if ( bMergeOver )
+ {
+ // zusammengefasste zu klein - nicht weitersuchen
+ eOutHorJust = SVX_HOR_JUSTIFY_LEFT;
+ bHClip = TRUE;
+ }
+ else
+ {
+ if ( aVars.GetOrient() == SVX_ORIENTATION_STANDARD )
+ {
+ if ( !pThisRowInfo->pCellInfo[nX+1].bMerged )
+ {
+ USHORT nTempX = nX+1;
+ BOOL bCont = TRUE;
+ while (bCont)
+ {
+ BOOL bMayCont = pThisRowInfo->pCellInfo[nTempX+1].bEmptyCellText &&
+ !pThisRowInfo->pCellInfo[nTempX+1].bMerged &&
+ !pThisRowInfo->pCellInfo[nTempX+1].bHOverlapped &&
+ !pThisRowInfo->pCellInfo[nTempX+1].bVOverlapped;
+ bCont = bMayCont && (nTempX<=nX2);
+ if ( bEditMode && nTempX == nEditCol && nY == nEditRow )
+ bCont = FALSE;
+
+ // Grid (fuer nTempX-1) abschalten ?
+ //
+ if (nOutWidth < nNeededWidth)
+ {
+ if (bMayCont)
+ pThisRowInfo->pCellInfo[nTempX].bHideGrid = TRUE;
+ else
+ pClipRight = &pThisRowInfo->pCellInfo[nTempX];
+ // auf "Hindernis" gestossen
+ }
+
+ if (bCont)
+ nOutWidth += (long) pRowInfo[0].pCellInfo[nTempX+1].nWidth;
+ ++nTempX;
+ }
+ }
+ }
+
+// bExtended = TRUE;
+ eOutHorJust = SVX_HOR_JUSTIFY_LEFT;
+ bHClip = bLeftOver || (nNeededWidth + 1 > nOutWidth);
+ }
+ }
+ else
+ {
+ bHClip = bLeftOver || bMergeOver;
+ }
+ }
+ else // Zahlen, Formeln
+ {
+ if (nNeededWidth + 1 > nOutWidth)
+ {
+ aVars.SetHashText();
+ nNeededWidth = aVars.GetTextSize().Width() +
+ (long) ( aVars.GetLeftTotal() * nPPTX ) +
+ (long) ( aVars.GetMargin()->GetRightMargin() * nPPTX );
+ bHClip = (nNeededWidth + 1 > nOutWidth);
+ if (bHClip) // #56609# Clip-Markierung auch fuer Zahlen
+ pClipRight = &pThisRowInfo->pCellInfo[nX+1];
+ }
+ if (bMergeOver)
+ bHClip = TRUE;
+ }
+
+ if ( !bLeftOver ) // sonst ist schon
+ {
+ long nAvailWidth = nJustOutWidth;
+ if (eType==OUTTYPE_WINDOW && pInfo->bAutoFilter)
+ {
+#ifndef MAC
+ if (pRowInfo[nArrY].nHeight < DROPDOWN_BITMAP_SIZE)
+ nAvailWidth -= pRowInfo[nArrY].nHeight;
+ else
+ nAvailWidth -= DROPDOWN_BITMAP_SIZE; // Bitmap-Groesse
+#else
+ nAvailWidth -= pRefDevice->LogicToPixel( Size(22,0), MAP_POINT ).Width();
+#endif
+
+ long nComp = aVars.GetTextSize().Width() +
+ (long) ( aVars.GetLeftTotal() * nPPTX ) +
+ (long) ( aVars.GetMargin()->GetRightMargin() * nPPTX );
+ if (nAvailWidth<nComp) nAvailWidth=nComp;
+ }
+
+ switch (eOutHorJust)
+ {
+ case SVX_HOR_JUSTIFY_LEFT:
+ nJustPosX += (long) ( aVars.GetLeftTotal() * nPPTX );
+ break;
+ case SVX_HOR_JUSTIFY_RIGHT:
+ nJustPosX += nAvailWidth - aVars.GetTextSize().Width() -
+ (long) ( aVars.GetMargin()->GetRightMargin() * nPPTX );
+ break;
+ case SVX_HOR_JUSTIFY_CENTER:
+ nJustPosX += ( nAvailWidth - aVars.GetTextSize().Width() +
+ (long) ( aVars.GetLeftTotal() * nPPTX ) -
+ (long) ( aVars.GetMargin()->GetRightMargin() * nPPTX ) ) / 2;
+ break;
+ }
+ }
+
+ long nTestClipHeight = aVars.GetTextSize().Height();
+
+ long nJustPosY = nVirtPosY;
+// long nLongBot = (long) ( aVars.GetMargin()->GetBottomMargin() * nPPTY );
+ switch (aVars.GetVerJust())
+ {
+ case SVX_VER_JUSTIFY_TOP:
+ {
+ long nTop = (long)( aVars.GetMargin()->GetTopMargin() * nPPTY );
+ nJustPosY += nTop;
+ nTestClipHeight += nTop;
+ }
+ break;
+ case SVX_VER_JUSTIFY_BOTTOM:
+ {
+ long nBot = (long)( aVars.GetMargin()->GetBottomMargin() * nPPTY );
+ nJustPosY += nOutHeight - aVars.GetTextSize().Height() - nBot;
+ nTestClipHeight += nBot;
+ }
+ break;
+ case SVX_VER_JUSTIFY_CENTER:
+ {
+ long nTop = (long)( aVars.GetMargin()->GetTopMargin() * nPPTY );
+ long nBot = (long)( aVars.GetMargin()->GetBottomMargin() * nPPTY );
+ nJustPosY += ( nOutHeight + nTop -
+ aVars.GetTextSize().Height() - nBot ) / 2;
+ nTestClipHeight += Abs( nTop - nBot );
+ }
+ break;
+ }
+
+ if ( nTestClipHeight > nOutHeight )
+ {
+ // kein vertikales Clipping beim Drucken von Zellen mit
+ // optimaler Hoehe, ausser bei Groesse in bedingter Formatierung
+ if ( eType != OUTTYPE_PRINTER ||
+ ( pDoc->GetRowFlags( nY, nTab ) & CR_MANUALSIZE ) ||
+ ( aVars.HasCondHeight() ) )
+ bVClip = TRUE;
+ }
+ if ( bMergeOver )
+ bVClip = TRUE;
+
+ Rectangle aClipRect( nPosX, nPosY, nVirtPosX+nOutWidth-1,
+ nVirtPosY+nOutHeight-1 );
+
+ if ( bMergeHClip )
+ {
+ if ( aClipRect.Right() > nScrX+nScrW )
+ aClipRect.Right() = nScrX+nScrW;
+ bHClip = TRUE;
+ }
+ if ( bMergeVClip )
+ {
+ if ( aClipRect.Bottom() > nScrY+nScrH )
+ aClipRect.Bottom() = nScrY+nScrH;
+ bVClip = TRUE;
+ }
+
+ if ( bHClip || bVClip )
+ {
+ if ( pClipRight && bMarkClipped )
+ {
+ // rechts markieren
+
+ pClipRight->bStandard = TRUE; //! umbenennen in bClipped
+ bAnyClipped = TRUE;
+
+ long nMarkPixel = (long)( SC_CLIPMARK_SIZE * nPPTX );
+ aClipRect.Right() -= nMarkPixel;
+ }
+
+ // nur die betroffene Dimension clippen,
+ // damit bei nicht-proportionalem Resize nicht alle
+ // rechtsbuendigen Zahlen abgeschnitten werden:
+
+ if (!bHClip)
+ {
+ aClipRect.Left() = nScrX;
+ aClipRect.Right() = nScrX+nScrW;
+ }
+ if (!bVClip)
+ {
+ aClipRect.Top() = nScrY;
+ aClipRect.Bottom() = nScrY+nScrH;
+ }
+
+/* //! Test
+ if ( pDev->GetOutDevType() != OUTDEV_PRINTER )
+ {
+ pDev->SetPen(PEN_NULL);
+ pDev->SetFillInBrush(Brush(Color(COL_LIGHTRED)));
+ pDev->DrawRect( aClipRect );
+ }
+ //! Test
+*/
+ if (bMetaFile)
+ {
+ pDev->Push();
+ pDev->IntersectClipRegion( aClipRect );
+ }
+ else
+ pDev->SetClipRegion( Region( aClipRect ) );
+ }
+
+ switch (aVars.GetOrient())
+ {
+ case SVX_ORIENTATION_STANDARD:
+ nJustPosY += aVars.GetAscent();
+ break;
+ case SVX_ORIENTATION_TOPBOTTOM:
+ nJustPosX += aVars.GetTextSize().Width() - aVars.GetAscent();
+ break;
+ case SVX_ORIENTATION_BOTTOMTOP:
+ nJustPosY += aVars.GetTextSize().Height();
+ nJustPosX += aVars.GetAscent();
+ break;
+ }
+
+#ifdef MAC_DOCH_NICHT
+ nJustPosY++; // Passt sonst nicht zur EditEngine
+#endif
+#ifdef OS2_AUCH_NICHT
+ nJustPosY++; // Passt sonst nicht zur EditEngine
+#endif
+
+ // in Metafiles immer DrawTextArray, damit die Positionen mit
+ // aufgezeichnet werden (fuer nicht-proportionales Resize):
+
+ String aString = aVars.GetString();
+ if (bMetaFile || pRefDevice != pDev || aZoomX != aZoomY)
+ {
+ long* pDX = new long[aString.Len()];
+ pRefDevice->GetTextArray( aString, pDX );
+
+ if ( !pRefDevice->GetConnectMetaFile() ||
+ pRefDevice->GetOutDevType() == OUTDEV_PRINTER )
+ {
+ double fMul = GetStretch();
+ xub_StrLen nLen = aString.Len();
+ for (xub_StrLen i=0; i<nLen; i++)
+ pDX[i] = (long)(pDX[i] / fMul + 0.5);
+ }
+
+ pDev->DrawTextArray( Point( nJustPosX, nJustPosY ), aString, pDX );
+ delete[] pDX;
+ }
+ else
+ pDev->DrawText( Point( nJustPosX, nJustPosY ), aString );
+
+ if ( bHClip || bVClip )
+ {
+ if (bMetaFile)
+ pDev->Pop();
+ else
+ pDev->SetClipRegion();
+ }
+ }
+ }
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+ }
+ nPosY += pRowInfo[nArrY].nHeight;
+ }
+ if ( bProgress )
+ ScProgress::DeleteInterpretProgress();
+ pDoc->DisableIdle( bWasIdleDisabled );
+}
+
+// -------------------------------------------------------------------------------
+
+void lcl_ClearEdit( EditEngine& rEngine ) // Text und Attribute
+{
+ rEngine.SetText(EMPTY_STRING);
+ // keine Para-Attribute uebrigbehalten...
+ const SfxItemSet& rPara = rEngine.GetParaAttribs(0);
+ if (rPara.Count())
+ rEngine.SetParaAttribs( 0,
+ SfxItemSet( *rPara.GetPool(), rPara.GetRanges() ) );
+}
+
+void ScOutputData::DrawEdit(BOOL bPixelToLogic, double nScaleX, double nScaleY)
+{
+ Size aMinSize = pRefDevice->PixelToLogic(Size(0,100)); // erst darueber wird ausgegeben
+ UINT32 nMinHeight = aMinSize.Height() / 200; // 1/2 Pixel
+
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+
+ ScFieldEditEngine* pEngine = NULL;
+ const ScPatternAttr* pPattern;
+ const SfxItemSet* pCondSet;
+ const ScPatternAttr* pOldPattern = NULL;
+ const SfxItemSet* pOldCondSet = NULL;
+ ScBaseCell* pCell = NULL;
+
+ long nRowPosY = nScrY;
+ for (USHORT nArrY=0; nArrY+1<nArrCount; nArrY++) // 0 fuer Reste von zusammengefassten
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ long nCellHeight = (long) pThisRowInfo->nHeight;
+ if (nArrY==1) nRowPosY = nScrY; // vorher wird einzeln berechnet
+
+ if ( pThisRowInfo->bChanged || nArrY==0 )
+ {
+ long nPosX = 0;
+ for (USHORT nX=0; nX<=nX2; nX++) // wegen Ueberhaengen
+ {
+ if (nX==nX1) nPosX = nScrX; // vorher wird einzeln berechnet
+
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nX+1];
+ if (pInfo->bEditEngine)
+ {
+ USHORT nY = pThisRowInfo->nRowNo;
+
+ BOOL bHidden = FALSE;
+ if (bEditMode)
+ if ( nX == nEditCol && nY == nEditRow )
+ bHidden = TRUE;
+
+ if (!bHidden)
+ {
+ if (!pEngine)
+ {
+ // Ein RefDevice muss auf jeden Fall gesetzt werden,
+ // sonst legt sich die EditEngine ein VirtualDevice an!
+ pEngine = new ScFieldEditEngine( pDoc->GetEnginePool() );
+ pEngine->SetRefDevice( pRefDevice ); // immer gesetzt
+ ULONG nCtrl = pEngine->GetControlWord();
+ if ( bShowSpellErrors )
+ nCtrl |= EE_CNTRL_ONLINESPELLING;
+ if ( eType == OUTTYPE_PRINTER )
+ nCtrl &= ~EE_CNTRL_MARKFIELDS;
+ pEngine->SetControlWord( nCtrl );
+ }
+ else
+ lcl_ClearEdit( *pEngine );
+
+ long nPosY = nRowPosY;
+ BOOL bVisChanged = FALSE;
+
+ if ( nArrY==0 )
+ {
+ nPosY = nScrY;
+ nY = pRowInfo[1].nRowNo;
+ pPattern = pDoc->GetPattern( nX, nY, nTab );
+ while (((ScMergeFlagAttr&)pPattern->GetItem(ATTR_MERGE_FLAG)).IsVerOverlapped())
+ {
+ --nY;
+ nPosY -= (long) (pDoc->FastGetRowHeight(nY,nTab) * nPPTY);
+ pPattern = pDoc->GetPattern( nX, nY, nTab );
+ }
+ pInfo = NULL;
+ pCondSet = pDoc->GetCondResult( nX, nY, nTab );
+ pDoc->GetCell( nX, nY, nTab, pCell );
+ }
+ else
+ {
+ BOOL bFromDoc = FALSE;
+ pPattern = pInfo->pPatternAttr;
+ pCondSet = pInfo->pConditionSet;
+ if (!pPattern)
+ {
+ pPattern = pDoc->GetPattern( nX, nY, nTab );
+ bFromDoc = TRUE;
+ }
+ pCell = pInfo->pCell;
+
+ bVisChanged = !pRowInfo[nArrY-1].bChanged;
+ if (bVisChanged)
+ {
+ while (((ScMergeFlagAttr&)pPattern->GetItem(ATTR_MERGE_FLAG)).IsVerOverlapped())
+ {
+ --nY;
+ nPosY -= (long) (pDoc->FastGetRowHeight(nY,nTab) * nPPTY);
+ pPattern = pDoc->GetPattern( nX, nY, nTab );
+ bFromDoc = TRUE;
+ }
+ pInfo = NULL;
+ pDoc->GetCell( nX, nY, nTab, pCell );
+ }
+ if (bFromDoc)
+ pCondSet = pDoc->GetCondResult( nX, nY, nTab );
+ }
+
+ long nCellWidth = (long) pRowInfo[0].pCellInfo[nX+1].nWidth;
+
+ const SfxPoolItem* pCondItem;
+
+ SvxCellHorJustify eHorJust;
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_HOR_JUSTIFY, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ eHorJust = (SvxCellHorJustify) ((const SvxHorJustifyItem*)
+ pCondItem)->GetValue();
+ else
+ eHorJust = (SvxCellHorJustify)((const SvxHorJustifyItem&)pPattern->
+ GetItem(ATTR_HOR_JUSTIFY)).GetValue();
+
+ BOOL bBreak;
+ if ( eHorJust == SVX_HOR_JUSTIFY_BLOCK )
+ bBreak = TRUE;
+ else if ( pCondSet && pCondSet->GetItemState(
+ ATTR_LINEBREAK, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ bBreak = ((const SfxBoolItem*)pCondItem)->GetValue();
+ else
+ bBreak = ((const SfxBoolItem&)pPattern->GetItem(ATTR_LINEBREAK)).GetValue();
+
+ SvxCellOrientation eOrient;
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_ORIENTATION, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ eOrient = (SvxCellOrientation)((const SvxOrientationItem*)
+ pCondItem)->GetValue();
+ else
+ eOrient = (SvxCellOrientation)((const SvxOrientationItem&)
+ pPattern->GetItem(ATTR_ORIENTATION)).GetValue();
+
+ long nAttrRotate;
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_ROTATE_VALUE, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ nAttrRotate = ((const SfxInt32Item*)pCondItem)->GetValue();
+ else
+ nAttrRotate = ((const SfxInt32Item&)pPattern->
+ GetItem(ATTR_ROTATE_VALUE)).GetValue();
+ if ( eOrient==SVX_ORIENTATION_STANDARD && nAttrRotate )
+ {
+ //! Flag setzen, um die Zelle in DrawRotated wiederzufinden ?
+ //! (oder Flag schon bei DrawBackground, dann hier keine Abfrage)
+ bHidden = TRUE; // gedreht wird getrennt ausgegeben
+ }
+
+ const ScMergeAttr* pMerge =
+ (ScMergeAttr*)&pPattern->GetItem(ATTR_MERGE);
+ BOOL bMerged = pMerge->GetColMerge() > 1 || pMerge->GetRowMerge() > 1;
+
+ long nStartX = nPosX;
+ long nStartY = nPosY;
+ if (nX<nX1)
+ {
+ if ((bBreak || eOrient!=SVX_ORIENTATION_STANDARD) && !bMerged)
+ bHidden = TRUE;
+ else
+ {
+ nStartX = nScrX;
+ USHORT nCol = nX1;
+ while (nCol > nX)
+ {
+ --nCol;
+ nStartX -= (long) pRowInfo[0].pCellInfo[nCol+1].nWidth;
+ }
+ }
+ }
+
+ if ( !bHidden && eType == OUTTYPE_PRINTER &&
+ pDev->GetOutDevType() == OUTDEV_WINDOW &&
+ ((const SvxFontHeightItem&)pPattern->
+ GetItem(ATTR_FONT_HEIGHT)).GetHeight() <= nMinHeight )
+ {
+ Point aPos((long)( nStartX / nScaleX ),
+ (long)( nStartY / nScaleY ));
+ pDev->DrawPixel( aPos,
+ ((const SvxColorItem&)pPattern->
+ GetItem( ATTR_FONT_COLOR )).GetValue() );
+ bHidden = TRUE;
+ }
+
+ if (!bHidden)
+ {
+ long nOutWidth = nCellWidth - 1;
+ long nOutHeight;
+ if (pInfo)
+ nOutHeight = nCellHeight;
+ else
+ nOutHeight = (long) ( pDoc->GetRowHeight(nY,nTab) * nPPTY );
+
+ if ( bMerged ) // Zusammengefasst
+ {
+ USHORT i;
+ const ScMergeAttr* pMerge =
+ (ScMergeAttr*)&pPattern->GetItem(ATTR_MERGE);
+ USHORT nCountX = pMerge->GetColMerge();
+ for (i=1; i<nCountX; i++)
+ nOutWidth += (long) ( pDoc->GetColWidth(nX+i,nTab) * nPPTX );
+ USHORT nCountY = pMerge->GetRowMerge();
+ for (i=1; i<nCountY; i++)
+ nOutHeight += (long) ( pDoc->GetRowHeight(nY+i,nTab) * nPPTY );
+ }
+
+ // aCellRect: Margins nicht abgezogen
+ Rectangle aCellRect( nStartX, nStartY,
+ nStartX+nOutWidth-1, nStartY+nOutHeight-1 );
+
+ SvxCellVerJustify eVerJust;
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_VER_JUSTIFY, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ eVerJust = (SvxCellVerJustify) ((const SvxVerJustifyItem*)
+ pCondItem)->GetValue();
+ else
+ eVerJust = (SvxCellVerJustify)((const SvxVerJustifyItem&)pPattern->
+ GetItem(ATTR_VER_JUSTIFY)).GetValue();
+
+ // Syntax-Modus wird hier ignoriert...
+
+ if ( StringDiffer(pOldPattern,pPattern) || pCondSet != pOldCondSet )
+ {
+ SfxItemSet* pSet = new SfxItemSet( pEngine->GetEmptyItemSet() );
+ pPattern->FillEditItemSet( pSet, pCondSet );
+
+ // Ausrichtung fuer EditEngine
+ SvxAdjust eSvxAdjust = SVX_ADJUST_LEFT;
+ if (eOrient==SVX_ORIENTATION_STACKED)
+ eSvxAdjust = SVX_ADJUST_CENTER;
+ else if (bBreak)
+ {
+ if (eOrient==SVX_ORIENTATION_STANDARD)
+ switch (eHorJust)
+ {
+ case SVX_HOR_JUSTIFY_LEFT:
+ case SVX_HOR_JUSTIFY_REPEAT: // nicht implementiert
+ case SVX_HOR_JUSTIFY_STANDARD: // immer Text
+ eSvxAdjust = SVX_ADJUST_LEFT;
+ break;
+ case SVX_HOR_JUSTIFY_RIGHT:
+ eSvxAdjust = SVX_ADJUST_RIGHT;
+ break;
+ case SVX_HOR_JUSTIFY_CENTER:
+ eSvxAdjust = SVX_ADJUST_CENTER;
+ break;
+ case SVX_HOR_JUSTIFY_BLOCK:
+ eSvxAdjust = SVX_ADJUST_BLOCK;
+ break;
+ }
+ else
+ switch (eVerJust)
+ {
+ case SVX_VER_JUSTIFY_TOP:
+ eSvxAdjust = (eOrient==SVX_ORIENTATION_TOPBOTTOM) ?
+ SVX_ADJUST_LEFT : SVX_ADJUST_RIGHT;
+ break;
+ case SVX_VER_JUSTIFY_CENTER:
+ eSvxAdjust = SVX_ADJUST_CENTER;
+ break;
+ case SVX_VER_JUSTIFY_BOTTOM:
+ case SVX_HOR_JUSTIFY_STANDARD:
+ eSvxAdjust = (eOrient==SVX_ORIENTATION_TOPBOTTOM) ?
+ SVX_ADJUST_RIGHT : SVX_ADJUST_LEFT;
+ break;
+ }
+ }
+ pSet->Put( SvxAdjustItem( eSvxAdjust, EE_PARA_JUST ) );
+
+ pEngine->SetDefaults( pSet );
+ pOldPattern = pPattern;
+ pOldCondSet = pCondSet;
+
+ ULONG nControl = pEngine->GetControlWord();
+ if (eOrient==SVX_ORIENTATION_STACKED)
+ nControl |= EE_CNTRL_ONECHARPERLINE;
+ else
+ nControl &= ~EE_CNTRL_ONECHARPERLINE;
+ pEngine->SetControlWord( nControl );
+ }
+
+ // Raender
+
+ //! Position und Papersize auf EditUtil umstellen !!!
+
+/* Rectangle aPixRect = ScEditUtil( pDoc,
+ nX,nY,nTab, Point(nStartX,nStartY),
+ pDev, nPPTX, nPPTY, nZoom )
+ .GetEditArea( pPattern );
+
+ pDev->SetFillInBrush(Brush(Color(COL_LIGHTRED)));
+ pDev->DrawRect(pDev->PixelToLogic(aPixRect));
+*/
+ const SvxMarginItem* pMargin;
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_MARGIN, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ pMargin = (const SvxMarginItem*)pCondItem;
+ else
+ pMargin = (const SvxMarginItem*)&pPattern->GetItem(ATTR_MARGIN);
+ USHORT nIndent = 0;
+ if ( eHorJust == SVX_HOR_JUSTIFY_LEFT )
+ {
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_INDENT, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ nIndent = ((const SfxUInt16Item*)pCondItem)->GetValue();
+ else
+ nIndent = ((const SfxUInt16Item&)pPattern->
+ GetItem(ATTR_INDENT)).GetValue();
+ }
+ long nLeftM = (long) ( (pMargin->GetLeftMargin() + nIndent) * nPPTX );
+ long nTopM = (long) ( pMargin->GetTopMargin() * nPPTY );
+ nStartX += nLeftM;
+ nStartY += nTopM;
+ nOutWidth -= nLeftM + (long) ( pMargin->GetRightMargin() * nPPTX );
+ nOutHeight -= nTopM + (long) ( pMargin->GetBottomMargin() * nPPTY );
+
+ Size aPaperSize = Size( 1000000, 1000000 );
+ if (eOrient==SVX_ORIENTATION_STACKED)
+ aPaperSize.Width() = nOutWidth; // zum Zentrieren
+ else if (bBreak)
+ {
+ if (eOrient == SVX_ORIENTATION_STANDARD)
+ {
+ if (eType==OUTTYPE_WINDOW &&
+ eOrient!=SVX_ORIENTATION_STACKED &&
+ pInfo && pInfo->bAutoFilter)
+ {
+ long nSub = Min( pRowInfo[nArrY].nHeight,
+ (USHORT) DROPDOWN_BITMAP_SIZE );
+ if ( nOutWidth > nSub )
+ nOutWidth -= nSub;
+ }
+ aPaperSize.Width() = nOutWidth;
+ }
+ else
+ aPaperSize.Width() = nOutHeight - 1;
+ }
+ if (bPixelToLogic)
+ pEngine->SetPaperSize(pRefDevice->PixelToLogic(aPaperSize));
+ else
+ pEngine->SetPaperSize(Size(
+ (long)(aPaperSize.Width() / nScaleX),
+ (long)(aPaperSize.Height() / nScaleY)));
+
+ // Daten aus Zelle lesen
+
+ if (pCell)
+ {
+ if (pCell->GetCellType() == CELLTYPE_EDIT)
+ {
+ const EditTextObject* pData;
+ ((ScEditCell*)pCell)->GetData(pData);
+
+ if (pData)
+ pEngine->SetText(*pData);
+ else
+ DBG_ERROR("pData == 0");
+ }
+ else
+ {
+ ULONG nFormat = pPattern->GetNumberFormat(
+ pFormatter, pCondSet );
+ String aString;
+ Color* pColor;
+ ScCellFormat::GetString( pCell,
+ nFormat,aString, &pColor,
+ *pFormatter,
+ bShowNullValues,
+ bShowFormulas,
+ ftCheck );
+
+ pEngine->SetText(aString);
+ if ( pColor && !bSyntaxMode )
+ lcl_SetEditColor( *pEngine, *pColor );
+ }
+
+ if ( bSyntaxMode )
+ SetEditSyntaxColor( *pEngine, pCell );
+ }
+ else
+ DBG_ERROR("pCell == NULL");
+
+ long nEngineWidth;
+ if ( bBreak && eOrient != SVX_ORIENTATION_STACKED )
+ nEngineWidth = 0;
+ else
+ nEngineWidth = (long) pEngine->CalcTextWidth();
+ long nEngineHeight = pEngine->GetTextHeight();
+
+ if (eOrient != SVX_ORIENTATION_STANDARD &&
+ eOrient != SVX_ORIENTATION_STACKED)
+ {
+ long nTemp = nEngineWidth;
+ nEngineWidth = nEngineHeight;
+ nEngineHeight = nTemp;
+ }
+
+ if (eOrient == SVX_ORIENTATION_STACKED)
+ nEngineWidth = nEngineWidth * 11 / 10;
+
+ if (nX<nX1 && !bMerged)
+ {
+ long nEnginePixel = bPixelToLogic ?
+ pRefDevice->LogicToPixel(Size(nEngineWidth,0)).Width() :
+ (long)( nEngineWidth * nScaleX );
+ if ( nStartX + nEnginePixel < (long) nScrX )
+ bHidden = TRUE;
+ }
+
+ if (!bHidden)
+ {
+ BOOL bExtend = FALSE; // ueber Zellenrand geschrieben ?
+ BOOL bClip = FALSE;
+ CellInfo* pClipRight = NULL; // Zelle mit Clipping-Markierung
+ BOOL bSimClip = FALSE;
+ Size aClipSize = Size( nScrX+nScrW-nStartX, nScrY+nScrH-nStartY );
+
+ // Zelle, an der Clipping-Markierung gesetzt wird, wenn
+ // vertikal zu klein
+ CellInfo* pEndInfo = &pThisRowInfo->pCellInfo[nX+1];
+
+ // weiterschreiben
+
+ Size aCellSize;
+ if (bPixelToLogic)
+ aCellSize = pRefDevice->PixelToLogic( Size( nOutWidth, nOutHeight ) );
+ else
+ aCellSize = Size( (long)( nOutWidth / nScaleX ),
+ (long)( nOutHeight / nScaleY ) );
+ if ( !bBreak || eOrient!=SVX_ORIENTATION_STANDARD )
+ {
+ if ( eOrient == SVX_ORIENTATION_STANDARD && !bMerged )
+ {
+ USHORT nNextX = nX + 1;
+ BOOL bCont = TRUE;
+ while (bCont)
+ {
+ BOOL bMayCont =
+ pThisRowInfo->pCellInfo[nNextX+1].bEmptyCellText &&
+ !pThisRowInfo->pCellInfo[nNextX+1].bMerged &&
+ !pThisRowInfo->pCellInfo[nNextX+1].bHOverlapped &&
+ !pThisRowInfo->pCellInfo[nNextX+1].bVOverlapped;
+ bCont = bMayCont && (nNextX<=nX2);
+ if ( bEditMode && nNextX==nEditCol && nY==nEditRow )
+ bCont = FALSE;
+
+ // Grid (fuer nNextX-1) abschalten
+ //
+ if ( nEngineWidth > aCellSize.Width() )
+ {
+ if (bMayCont)
+ {
+ pThisRowInfo->pCellInfo[nNextX].bHideGrid = TRUE;
+ pEndInfo = &pThisRowInfo->pCellInfo[nNextX+1];
+ }
+ else
+ pClipRight = &pThisRowInfo->pCellInfo[nNextX];
+ // auf "Hindernis" gestossen
+ }
+ else
+ bCont = FALSE; // #55142# bExtend nicht zu oft
+
+ if (bCont)
+ {
+ long nAdd = pRowInfo[0].pCellInfo[nNextX+1].nWidth;
+ aCellRect.Right() += nAdd;
+ nOutWidth += nAdd;
+ if (bPixelToLogic)
+ aCellSize = pRefDevice->PixelToLogic( Size( nOutWidth, nOutHeight ) );
+ else
+ aCellSize = Size( (long)( nOutWidth / nScaleX ),
+ (long)( nOutHeight / nScaleY ) );
+ bExtend = TRUE;
+ }
+ ++nNextX;
+ }
+ }
+ if ( nEngineWidth > aCellSize.Width() )
+ {
+ bExtend = TRUE; // -> immer linksbuendig
+ bClip = TRUE;
+ aClipSize.Width() = nOutWidth; // Pixel
+ }
+ }
+ if ( nEngineHeight > aCellSize.Height() )
+ {
+ // kein vertikales Clipping beim Drucken von Zellen mit
+ // optimaler Hoehe, ausser bei Groesse in bedingter
+ // Formatierung
+ if ( eType != OUTTYPE_PRINTER ||
+ ( pDoc->GetRowFlags( nY, nTab ) & CR_MANUALSIZE ) ||
+ ( pCondSet && SFX_ITEM_SET ==
+ pCondSet->GetItemState(ATTR_FONT_HEIGHT, TRUE) ) )
+ bClip = TRUE;
+ else
+ bSimClip = TRUE;
+ aClipSize.Height() = nOutHeight; // Pixel
+
+ // Clipping-Markierung, wenn 5 Punkt zu klein,
+ // nicht zusammengefasst, und mehrere Zeilen
+ if ( nEngineHeight - aCellSize.Height() > 100 && !bMerged &&
+ ( pEngine->GetParagraphCount() > 1 ||
+ pEngine->GetLineCount(0) > 1 ) )
+ pClipRight = pEndInfo;
+ }
+
+ long nClipStartX = nStartX;
+ if (nX<nX1)
+ {
+ //! Clipping unnoetig, wenn links am Fenster
+
+ bClip = TRUE; // nur Rest ausgeben!
+ if (nStartX<nScrX)
+ {
+ long nDif = nScrX - nStartX;
+ nClipStartX = nScrX;
+ aClipSize.Width() -= nDif;
+ }
+ }
+
+ long nClipStartY = nStartY;
+ if (nArrY==0 || bVisChanged)
+ {
+ if ( nClipStartY < nRowPosY )
+ {
+ long nDif = nRowPosY - nClipStartY;
+ bClip = TRUE;
+ nClipStartY = nRowPosY;
+ aClipSize.Height() -= nDif;
+ }
+ }
+
+ Rectangle aClipRect;
+ if (bClip || bSimClip)
+ {
+ if ( pClipRight && bMarkClipped )
+ {
+ // rechts markieren
+
+ pClipRight->bStandard = TRUE; //! umbenennen in bClipped
+ bAnyClipped = TRUE;
+
+ long nMarkPixel = (long)( SC_CLIPMARK_SIZE * nPPTX );
+ long nMarkLeft = aCellRect.Right()-nMarkPixel+1;
+ long nClipEnd = nClipStartX + aClipSize.Width();
+ if (nClipEnd > nMarkLeft)
+ aClipSize.Width() -= nClipEnd - nMarkLeft;
+ }
+
+ if (bPixelToLogic)
+ aClipRect = pRefDevice->PixelToLogic( Rectangle(
+ Point(nClipStartX,nClipStartY), aClipSize ) );
+ else
+ aClipRect = Rectangle(Point(
+ (long)( nClipStartX / nScaleX ),
+ (long)( nClipStartY / nScaleY )),
+ Size(
+ (long)( aClipSize.Width() / nScaleX ),
+ (long)( aClipSize.Height() / nScaleY )));
+
+#if 0
+ //! Test
+ if ( pDev->GetOutDevType() != OUTDEV_PRINTER )
+ {
+ pDev->SetPen(PEN_NULL);
+ if (bClip)
+ pDev->SetFillInBrush(Brush(Color(COL_LIGHTGREEN)));
+ else
+ pDev->SetFillInBrush(Brush(Color(COL_LIGHTRED)));
+ pDev->DrawRect( aClipRect );
+ }
+ //! Test
+#endif
+
+ if (bClip) // bei bSimClip nur aClipRect initialisieren
+ {
+ if (bMetaFile)
+ {
+ pDev->Push();
+ pDev->IntersectClipRegion( aClipRect );
+ }
+ else
+ pDev->SetClipRegion( Region( aClipRect ) );
+ }
+ }
+
+ Point aLogicStart;
+ if (bPixelToLogic)
+ aLogicStart = pRefDevice->PixelToLogic( Point(nStartX,nStartY) );
+ else
+ aLogicStart = Point((long)( nStartX / nScaleX ),
+ (long)( nStartY / nScaleY ));
+ if ( (eOrient!=SVX_ORIENTATION_STANDARD || !bBreak) && !bExtend )
+ {
+ long nAvailWidth = aCellSize.Width();
+ if (eType==OUTTYPE_WINDOW &&
+ eOrient!=SVX_ORIENTATION_STACKED &&
+ pInfo && pInfo->bAutoFilter)
+ {
+ USHORT nSub = Min( pRowInfo[nArrY].nHeight,
+ (USHORT) DROPDOWN_BITMAP_SIZE );
+ if (bPixelToLogic)
+ nAvailWidth -= pRefDevice->PixelToLogic(Size(0,nSub)).Height();
+ else
+ nAvailWidth -= (long) (nSub / nScaleX);
+ if (nAvailWidth < nEngineWidth) nAvailWidth = nEngineWidth;
+
+ nOutWidth -= nSub;
+ long nEnginePixel = bPixelToLogic ?
+ pRefDevice->LogicToPixel(Size(nEngineWidth,0)).Width() :
+ (long)( nEngineWidth * nScaleX );
+ if (nOutWidth <= nEnginePixel) nOutWidth = nEnginePixel+1;
+ }
+
+ // horizontale Ausrichtung
+
+ if (eOrient==SVX_ORIENTATION_STANDARD)
+ {
+ if (eHorJust==SVX_HOR_JUSTIFY_RIGHT ||
+ eHorJust==SVX_HOR_JUSTIFY_CENTER)
+ {
+ SvxAdjust eSvxAdjust =
+ (eHorJust==SVX_HOR_JUSTIFY_RIGHT) ?
+ SVX_ADJUST_RIGHT : SVX_ADJUST_CENTER;
+ pEngine->SetDefaultItem(
+ SvxAdjustItem( eSvxAdjust, EE_PARA_JUST ) );
+
+ // #55142# Adjustment fuer naechste Zelle wieder zurueck
+ pOldPattern = NULL;
+
+ aPaperSize.Width() = nOutWidth;
+ if (bPixelToLogic)
+ pEngine->SetPaperSize(pRefDevice->PixelToLogic(aPaperSize));
+ else
+ pEngine->SetPaperSize(Size(
+ (long)(aPaperSize.Width() / nScaleX),
+ (long)(aPaperSize.Height() / nScaleY)));
+ }
+ }
+ else
+ {
+ if (eHorJust==SVX_HOR_JUSTIFY_RIGHT)
+ aLogicStart.X() += nAvailWidth - nEngineWidth;
+ else if (eHorJust==SVX_HOR_JUSTIFY_CENTER)
+ aLogicStart.X() += (nAvailWidth - nEngineWidth) / 2;
+ }
+ }
+ if ( eOrient==SVX_ORIENTATION_STANDARD ||
+ eOrient==SVX_ORIENTATION_STACKED || !bBreak )
+ {
+ if (eVerJust==SVX_VER_JUSTIFY_BOTTOM ||
+ eVerJust==SVX_VER_JUSTIFY_STANDARD)
+ {
+ if (bPixelToLogic)
+ aLogicStart.Y() += pRefDevice->PixelToLogic( Size(0,
+ pRefDevice->LogicToPixel(aCellSize).Height() -
+ pRefDevice->LogicToPixel(Size(0,nEngineHeight)).Height()
+ )).Height();
+ else
+ aLogicStart.Y() += aCellSize.Height() - nEngineHeight;
+ }
+
+ else if (eVerJust==SVX_VER_JUSTIFY_CENTER)
+ {
+ if (bPixelToLogic)
+ aLogicStart.Y() += pRefDevice->PixelToLogic( Size(0,(
+ pRefDevice->LogicToPixel(aCellSize).Height() -
+ pRefDevice->LogicToPixel(Size(0,nEngineHeight)).Height())
+ / 2)).Height();
+ else
+ aLogicStart.Y() += (aCellSize.Height() - nEngineHeight) / 2;
+ }
+ }
+
+ short nOriVal = 0;
+ if (eOrient==SVX_ORIENTATION_TOPBOTTOM)
+ {
+ // nOriVal = -900;
+ nOriVal = 2700;
+ aLogicStart.X() += nEngineWidth;
+ }
+ else if (eOrient==SVX_ORIENTATION_BOTTOMTOP)
+ {
+ nOriVal = 900;
+ aLogicStart.Y() += bBreak ? aCellSize.Height() :
+ nEngineHeight;
+ }
+ else if (eOrient==SVX_ORIENTATION_STACKED)
+ {
+ Size aPaperLogic = pEngine->GetPaperSize();
+ aPaperLogic.Width() = nEngineWidth;
+ pEngine->SetPaperSize(aPaperLogic);
+ }
+
+ if ( bSimClip && !nOriVal )
+ {
+ // kein hartes Clipping, aber nur die betroffenen
+ // Zeilen ausgeben
+
+ Point aDocStart = aClipRect.TopLeft();
+ aDocStart -= aLogicStart;
+ pEngine->Draw( pDev, aClipRect, aDocStart, FALSE );
+ }
+ else
+ pEngine->Draw( pDev, aLogicStart, nOriVal );
+
+ if (bClip)
+ {
+ if (bMetaFile)
+ pDev->Pop();
+ else
+ pDev->SetClipRegion();
+ }
+ }
+ }
+ }
+ }
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+ }
+ nRowPosY += pRowInfo[nArrY].nHeight;
+ }
+
+ delete pEngine;
+
+ if (bAnyRotated)
+ DrawRotated(bPixelToLogic); //! von aussen rufen ?
+}
+
+// -------------------------------------------------------------------------------
+
+void ScOutputData::DrawRotated(BOOL bPixelToLogic)
+{
+ //! nRotMax speichern
+ USHORT nRotMax = nX2;
+ for (USHORT nRotY=0; nRotY<nArrCount; nRotY++)
+ if (pRowInfo[nRotY].nRotMaxCol != SC_ROTMAX_NONE && pRowInfo[nRotY].nRotMaxCol > nRotMax)
+ nRotMax = pRowInfo[nRotY].nRotMaxCol;
+
+
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+
+ ScFieldEditEngine* pEngine = NULL;
+ const ScPatternAttr* pPattern;
+ const SfxItemSet* pCondSet;
+ const ScPatternAttr* pOldPattern = NULL;
+ const SfxItemSet* pOldCondSet = NULL;
+ ScBaseCell* pCell = NULL;
+
+ long nRowPosY = nScrY;
+ for (USHORT nArrY=0; nArrY+1<nArrCount; nArrY++) // 0 fuer Reste von zusammengefassten
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ long nCellHeight = (long) pThisRowInfo->nHeight;
+ if (nArrY==1) nRowPosY = nScrY; // vorher wird einzeln berechnet
+
+ if ( ( pThisRowInfo->bChanged || nArrY==0 ) && pThisRowInfo->nRotMaxCol != SC_ROTMAX_NONE )
+ {
+ long nPosX = 0;
+ for (USHORT nX=0; nX<=nRotMax; nX++)
+ {
+ if (nX==nX1) nPosX = nScrX; // vorher wird einzeln berechnet
+
+ CellInfo* pInfo = &pThisRowInfo->pCellInfo[nX+1];
+ if ( pInfo->nRotateDir != SC_ROTDIR_NONE )
+ {
+ USHORT nY = pThisRowInfo->nRowNo;
+
+ BOOL bHidden = FALSE;
+ if (bEditMode)
+ if ( nX == nEditCol && nY == nEditRow )
+ bHidden = TRUE;
+
+ if (!bHidden)
+ {
+ if (!pEngine)
+ {
+ // Ein RefDevice muss auf jeden Fall gesetzt werden,
+ // sonst legt sich die EditEngine ein VirtualDevice an!
+ pEngine = new ScFieldEditEngine( pDoc->GetEnginePool() );
+ pEngine->SetRefDevice( pRefDevice ); // immer gesetzt
+ ULONG nCtrl = pEngine->GetControlWord();
+ if ( bShowSpellErrors )
+ nCtrl |= EE_CNTRL_ONLINESPELLING;
+ if ( eType == OUTTYPE_PRINTER )
+ nCtrl &= ~EE_CNTRL_MARKFIELDS;
+ pEngine->SetControlWord( nCtrl );
+ }
+ else
+ lcl_ClearEdit( *pEngine );
+
+ long nPosY = nRowPosY;
+ BOOL bVisChanged = FALSE;
+
+ //! Rest von zusammengefasster Zelle weiter oben funktioniert nicht!
+
+ BOOL bFromDoc = FALSE;
+ pPattern = pInfo->pPatternAttr;
+ pCondSet = pInfo->pConditionSet;
+ if (!pPattern)
+ {
+ pPattern = pDoc->GetPattern( nX, nY, nTab );
+ bFromDoc = TRUE;
+ }
+ pCell = pInfo->pCell;
+ if (bFromDoc)
+ pCondSet = pDoc->GetCondResult( nX, nY, nTab );
+
+ if (!pCell && nX>nX2)
+ pDoc->GetCell( nX, nY, nTab, pCell );
+
+ if (!pCell)
+ bHidden = TRUE; // nRotateDir wird auch ohne Zelle gesetzt
+
+ long nCellWidth = (long) pRowInfo[0].pCellInfo[nX+1].nWidth;
+
+ const SfxPoolItem* pCondItem;
+
+ SvxCellHorJustify eHorJust;
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_HOR_JUSTIFY, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ eHorJust = (SvxCellHorJustify) ((const SvxHorJustifyItem*)
+ pCondItem)->GetValue();
+ else
+ eHorJust = (SvxCellHorJustify)((const SvxHorJustifyItem&)pPattern->
+ GetItem(ATTR_HOR_JUSTIFY)).GetValue();
+
+ BOOL bBreak;
+ if ( eHorJust == SVX_HOR_JUSTIFY_BLOCK )
+ bBreak = TRUE;
+ else if ( pCondSet && pCondSet->GetItemState(
+ ATTR_LINEBREAK, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ bBreak = ((const SfxBoolItem*)pCondItem)->GetValue();
+ else
+ bBreak = ((const SfxBoolItem&)pPattern->GetItem(ATTR_LINEBREAK)).GetValue();
+
+ SvxCellOrientation eOrient;
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_ORIENTATION, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ eOrient = (SvxCellOrientation)((const SvxOrientationItem*)
+ pCondItem)->GetValue();
+ else
+ eOrient = (SvxCellOrientation)((const SvxOrientationItem&)
+ pPattern->GetItem(ATTR_ORIENTATION)).GetValue();
+
+ const ScMergeAttr* pMerge =
+ (ScMergeAttr*)&pPattern->GetItem(ATTR_MERGE);
+ BOOL bMerged = pMerge->GetColMerge() > 1 || pMerge->GetRowMerge() > 1;
+
+ long nStartX = nPosX;
+ long nStartY = nPosY;
+ if (nX<nX1)
+ {
+ if ((bBreak || eOrient!=SVX_ORIENTATION_STANDARD) && !bMerged)
+ bHidden = TRUE;
+ else
+ {
+ nStartX = nScrX;
+ USHORT nCol = nX1;
+ while (nCol > nX)
+ {
+ --nCol;
+ nStartX -= (long) pRowInfo[0].pCellInfo[nCol+1].nWidth;
+ }
+ }
+ }
+
+ // Ersatzdarstellung fuer zu kleinen Text weggelassen
+
+ if (!bHidden)
+ {
+ long nOutWidth = nCellWidth - 1;
+ long nOutHeight;
+ if (pInfo)
+ nOutHeight = nCellHeight;
+ else
+ nOutHeight = (long) ( pDoc->GetRowHeight(nY,nTab) * nPPTY );
+
+ if ( bMerged ) // Zusammengefasst
+ {
+ USHORT i;
+ const ScMergeAttr* pMerge =
+ (ScMergeAttr*)&pPattern->GetItem(ATTR_MERGE);
+ USHORT nCountX = pMerge->GetColMerge();
+ for (i=1; i<nCountX; i++)
+ nOutWidth += (long) ( pDoc->GetColWidth(nX+i,nTab) * nPPTX );
+ USHORT nCountY = pMerge->GetRowMerge();
+ for (i=1; i<nCountY; i++)
+ nOutHeight += (long) ( pDoc->GetRowHeight(nY+i,nTab) * nPPTY );
+ }
+
+ SvxCellVerJustify eVerJust;
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_VER_JUSTIFY, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ eVerJust = (SvxCellVerJustify) ((const SvxVerJustifyItem*)
+ pCondItem)->GetValue();
+ else
+ eVerJust = (SvxCellVerJustify)((const SvxVerJustifyItem&)pPattern->
+ GetItem(ATTR_VER_JUSTIFY)).GetValue();
+
+ // Syntax-Modus wird hier ignoriert...
+
+ if ( StringDiffer(pOldPattern,pPattern) || pCondSet != pOldCondSet )
+ {
+ SfxItemSet* pSet = new SfxItemSet( pEngine->GetEmptyItemSet() );
+ pPattern->FillEditItemSet( pSet, pCondSet );
+
+ // Ausrichtung fuer EditEngine
+ SvxAdjust eSvxAdjust = SVX_ADJUST_LEFT;
+ if (eOrient==SVX_ORIENTATION_STACKED)
+ eSvxAdjust = SVX_ADJUST_CENTER;
+ // Adjustment fuer bBreak ist hier weggelassen
+ pSet->Put( SvxAdjustItem( eSvxAdjust, EE_PARA_JUST ) );
+
+ pEngine->SetDefaults( pSet );
+ pOldPattern = pPattern;
+ pOldCondSet = pCondSet;
+
+ ULONG nControl = pEngine->GetControlWord();
+ if (eOrient==SVX_ORIENTATION_STACKED)
+ nControl |= EE_CNTRL_ONECHARPERLINE;
+ else
+ nControl &= ~EE_CNTRL_ONECHARPERLINE;
+ pEngine->SetControlWord( nControl );
+ }
+
+ // Raender
+
+ //! Position und Papersize auf EditUtil umstellen !!!
+
+ const SvxMarginItem* pMargin;
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_MARGIN, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ pMargin = (const SvxMarginItem*)pCondItem;
+ else
+ pMargin = (const SvxMarginItem*)&pPattern->GetItem(ATTR_MARGIN);
+ USHORT nIndent = 0;
+ if ( eHorJust == SVX_HOR_JUSTIFY_LEFT )
+ {
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_INDENT, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ nIndent = ((const SfxUInt16Item*)pCondItem)->GetValue();
+ else
+ nIndent = ((const SfxUInt16Item&)pPattern->
+ GetItem(ATTR_INDENT)).GetValue();
+ }
+
+ long nTotalHeight = nOutHeight; // ohne Rand abzuziehen
+ if ( bPixelToLogic )
+ nTotalHeight = pRefDevice->PixelToLogic(Size(0,nTotalHeight)).Height();
+
+ long nLeftM = (long) ( (pMargin->GetLeftMargin() + nIndent) * nPPTX );
+ long nTopM = (long) ( pMargin->GetTopMargin() * nPPTY );
+ nStartX += nLeftM;
+ nStartY += nTopM;
+ nOutWidth -= nLeftM + (long) ( pMargin->GetRightMargin() * nPPTX );
+ nOutHeight -= nTopM + (long) ( pMargin->GetBottomMargin() * nPPTY );
+
+ // Rotation schon hier, um bei Umbruch auch PaperSize anzupassen
+ long nAttrRotate = 0;
+ double nSin = 0.0;
+ double nCos = 1.0;
+ SvxRotateMode eRotMode = SVX_ROTATE_MODE_STANDARD;
+ if ( eOrient == SVX_ORIENTATION_STANDARD )
+ {
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_ROTATE_VALUE, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ nAttrRotate = ((const SfxInt32Item*)pCondItem)->GetValue();
+ else
+ nAttrRotate = ((const SfxInt32Item&)pPattern->
+ GetItem(ATTR_ROTATE_VALUE)).GetValue();
+ if ( nAttrRotate )
+ {
+ if ( pCondSet && pCondSet->GetItemState(
+ ATTR_ROTATE_MODE, TRUE, &pCondItem ) == SFX_ITEM_SET )
+ eRotMode = (SvxRotateMode)((const SvxRotateModeItem*)
+ pCondItem)->GetValue();
+ else
+ eRotMode = (SvxRotateMode)((const SvxRotateModeItem&)
+ pPattern->GetItem(ATTR_ROTATE_MODE)).GetValue();
+
+ if ( nAttrRotate == 18000 )
+ eRotMode = SVX_ROTATE_MODE_STANDARD; // keinen Ueberlauf
+
+ double nRealOrient = nAttrRotate * F_PI18000; // 1/100 Grad
+ nCos = cos( nRealOrient );
+ nSin = sin( nRealOrient );
+ }
+ }
+
+ Size aPaperSize = Size( 1000000, 1000000 );
+ if (eOrient==SVX_ORIENTATION_STACKED)
+ aPaperSize.Width() = nOutWidth; // zum Zentrieren
+ else if (bBreak)
+ {
+ if (nAttrRotate)
+ {
+ //! richtige PaperSize fuer Umbruch haengt von der Zeilenzahl
+ //! ab, solange die Zeilen nicht einzeln versetzt ausgegeben
+ //! werden koennen -> darum unbegrenzt, also kein Umbruch.
+ //! Mit versetzten Zeilen waere das folgende richtig:
+ aPaperSize.Width() = (long)(nOutHeight / fabs(nSin));
+ }
+ else if (eOrient == SVX_ORIENTATION_STANDARD)
+ aPaperSize.Width() = nOutWidth;
+ else
+ aPaperSize.Width() = nOutHeight - 1;
+ }
+ if (bPixelToLogic)
+ pEngine->SetPaperSize(pRefDevice->PixelToLogic(aPaperSize));
+ else
+ pEngine->SetPaperSize(aPaperSize); // Scale ist immer 1
+
+ // Daten aus Zelle lesen
+
+ if (pCell)
+ {
+ if (pCell->GetCellType() == CELLTYPE_EDIT)
+ {
+ const EditTextObject* pData;
+ ((ScEditCell*)pCell)->GetData(pData);
+
+ if (pData)
+ pEngine->SetText(*pData);
+ else
+ DBG_ERROR("pData == 0");
+ }
+ else
+ {
+ ULONG nFormat = pPattern->GetNumberFormat(
+ pFormatter, pCondSet );
+ String aString;
+ Color* pColor;
+ ScCellFormat::GetString( pCell,
+ nFormat,aString, &pColor,
+ *pFormatter,
+ bShowNullValues,
+ bShowFormulas,
+ ftCheck );
+
+ pEngine->SetText(aString);
+ if ( pColor && !bSyntaxMode )
+ lcl_SetEditColor( *pEngine, *pColor );
+ }
+
+ if ( bSyntaxMode )
+ SetEditSyntaxColor( *pEngine, pCell );
+ }
+ else
+ DBG_ERROR("pCell == NULL");
+
+ long nEngineWidth = (long) pEngine->CalcTextWidth();
+ long nEngineHeight = pEngine->GetTextHeight();
+
+ if (nAttrRotate && bBreak)
+ {
+ double nAbsCos = fabs( nCos );
+ double nAbsSin = fabs( nSin );
+
+ // #47740# adjust witdh of papersize for height of text
+ int nSteps = 5;
+ while (nSteps > 0)
+ {
+ // everything is in pixels
+ long nEnginePixel = pRefDevice->LogicToPixel(
+ Size(0,nEngineHeight)).Height();
+ long nEffHeight = nOutHeight - (long)(nEnginePixel * nAbsCos) + 2;
+ long nNewWidth = (long)(nEffHeight / nAbsSin) + 2;
+ BOOL bFits = ( nNewWidth >= aPaperSize.Width() );
+ if ( bFits )
+ nSteps = 0;
+ else
+ {
+ if ( nNewWidth < 4 )
+ {
+ // can't fit -> fall back to using half height
+ nEffHeight = nOutHeight / 2;
+ nNewWidth = (long)(nEffHeight / nAbsSin) + 2;
+ nSteps = 0;
+ }
+ else
+ --nSteps;
+
+ // set paper width and get new text height
+ aPaperSize.Width() = nNewWidth;
+ if (bPixelToLogic)
+ pEngine->SetPaperSize(pRefDevice->PixelToLogic(aPaperSize));
+ else
+ pEngine->SetPaperSize(aPaperSize); // Scale ist immer 1
+ //pEngine->QuickFormatDoc( TRUE );
+ nEngineWidth = (long) pEngine->CalcTextWidth();
+ nEngineHeight = pEngine->GetTextHeight();
+ }
+ }
+ }
+
+ long nRealWidth = nEngineWidth;
+ long nRealHeight = nEngineHeight;
+
+ // wenn gedreht, Groesse anpassen
+ if (nAttrRotate)
+ {
+ double nAbsCos = fabs( nCos );
+ double nAbsSin = fabs( nSin );
+
+ if ( eRotMode == SVX_ROTATE_MODE_STANDARD )
+ nEngineWidth = (long) ( nRealWidth * nAbsCos +
+ nRealHeight * nAbsSin );
+ else
+ nEngineWidth = (long) ( nRealHeight / nAbsSin );
+ //! begrenzen !!!
+
+ nEngineHeight = (long) ( nRealHeight * nAbsCos +
+ nRealWidth * nAbsSin );
+ }
+
+ if (!nAttrRotate) // hier nur gedrehter Text
+ bHidden = TRUE; //! vorher abfragen !!!
+
+ //! weglassen, was nicht hereinragt
+
+ if (!bHidden)
+ {
+ BOOL bExtend = FALSE; // ueber Zellenrand geschrieben ?
+ BOOL bClip = FALSE;
+ BOOL bSimClip = FALSE;
+ Size aClipSize = Size( nScrX+nScrW-nStartX, nScrY+nScrH-nStartY );
+
+ // weiterschreiben
+
+ Size aCellSize;
+ if (bPixelToLogic)
+ aCellSize = pRefDevice->PixelToLogic( Size( nOutWidth, nOutHeight ) );
+ else
+ aCellSize = Size( nOutWidth, nOutHeight ); // Scale ist 1
+
+ long nGridWidth = nEngineWidth;
+ BOOL bNegative = FALSE;
+ if ( eRotMode != SVX_ROTATE_MODE_STANDARD )
+ {
+ nGridWidth = aCellSize.Width() +
+ Abs((long) ( aCellSize.Height() * nCos / nSin ));
+ bNegative = ( pInfo->nRotateDir == SC_ROTDIR_LEFT );
+ }
+
+ if ( !bBreak || eOrient!=SVX_ORIENTATION_STANDARD )
+ {
+ if ( eOrient == SVX_ORIENTATION_STANDARD && !bMerged )
+ {
+ USHORT nNextX = bNegative ? (nX - 1) : (nX + 1);
+ // Unterlauf wird durch nNextX<=nX2 abgefangen
+ while ( nGridWidth > aCellSize.Width() &&
+ nNextX>=nX1 && nNextX<=nX2 &&
+ !pThisRowInfo->pCellInfo[nNextX+1].bHOverlapped &&
+ !pThisRowInfo->pCellInfo[nNextX+1].bVOverlapped &&
+ !( bEditMode && nNextX==nEditCol && nY==nEditRow ) )
+ {
+ nOutWidth += pRowInfo[0].pCellInfo[nNextX+1].nWidth;
+ if (bPixelToLogic)
+ aCellSize = pRefDevice->PixelToLogic( Size( nOutWidth, nOutHeight ) );
+ else
+ aCellSize = Size( nOutWidth, nOutHeight );
+
+ // Grid abschalten
+ if (bNegative)
+ {
+ pThisRowInfo->pCellInfo[nNextX+1].bHideGrid = TRUE;
+ --nNextX;
+ }
+ else
+ {
+ pThisRowInfo->pCellInfo[nNextX].bHideGrid = TRUE;
+ ++nNextX;
+ }
+ bExtend = TRUE;
+ }
+ }
+ if ( nGridWidth > aCellSize.Width() )
+ {
+ bExtend = TRUE; // -> immer linksbuendig
+ bClip = TRUE;
+ aClipSize.Width() = nOutWidth; // Pixel
+ }
+ }
+ if ( nEngineHeight > aCellSize.Height() )
+ {
+ // kein vertikales Clipping beim Drucken von Zellen mit
+ // optimaler Hoehe, ausser bei Groesse in bedingter
+ // Formatierung
+ if ( eType != OUTTYPE_PRINTER ||
+ ( pDoc->GetRowFlags( nY, nTab ) & CR_MANUALSIZE ) ||
+ ( pCondSet && SFX_ITEM_SET ==
+ pCondSet->GetItemState(ATTR_FONT_HEIGHT, TRUE) ) )
+ bClip = TRUE;
+ else
+ bSimClip = TRUE;
+ aClipSize.Height() = nOutHeight; // Pixel
+ }
+
+ long nClipStartX = nStartX;
+ if (nX<nX1)
+ {
+ //! Clipping unnoetig, wenn links am Fenster
+
+ bClip = TRUE; // nur Rest ausgeben!
+ if (nStartX<nScrX)
+ {
+ long nDif = nScrX - nStartX;
+ nClipStartX = nScrX;
+ aClipSize.Width() -= nDif;
+ }
+ }
+
+ long nClipStartY = nStartY;
+ if (nArrY==0 || bVisChanged)
+ {
+ if ( nClipStartY < nRowPosY )
+ {
+ long nDif = nRowPosY - nClipStartY;
+ bClip = TRUE;
+ nClipStartY = nRowPosY;
+ aClipSize.Height() -= nDif;
+ }
+ }
+
+ bClip = TRUE; //! Test !!!!
+
+ Rectangle aClipRect;
+ if (bClip || bSimClip)
+ {
+ if ( nAttrRotate /* && eRotMode != SVX_ROTATE_MODE_STANDARD */ )
+ {
+ // gedrehten, ausgerichteten Text nur an den
+ // Seitengrenzen clippen
+ nClipStartX = nScrX;
+ aClipSize.Width() = nScrW;
+ }
+
+ if (bPixelToLogic)
+ aClipRect = pRefDevice->PixelToLogic( Rectangle(
+ Point(nClipStartX,nClipStartY), aClipSize ) );
+ else
+ aClipRect = Rectangle(Point(nClipStartX, nClipStartY),
+ aClipSize ); // Scale = 1
+
+ if (bClip) // bei bSimClip nur aClipRect initialisieren
+ {
+ if (bMetaFile)
+ {
+ pDev->Push();
+ pDev->IntersectClipRegion( aClipRect );
+ }
+ else
+ pDev->SetClipRegion( Region( aClipRect ) );
+ }
+ }
+
+ Point aLogicStart;
+ if (bPixelToLogic)
+ aLogicStart = pRefDevice->PixelToLogic( Point(nStartX,nStartY) );
+ else
+ aLogicStart = Point(nStartX, nStartY);
+ if ( (eOrient!=SVX_ORIENTATION_STANDARD || !bBreak) && !bExtend )
+ {
+ long nAvailWidth = aCellSize.Width();
+ if (eType==OUTTYPE_WINDOW &&
+ eOrient!=SVX_ORIENTATION_STACKED &&
+ pInfo && pInfo->bAutoFilter)
+ {
+ if (pRowInfo[nArrY].nHeight < DROPDOWN_BITMAP_SIZE)
+ {
+ if (bPixelToLogic)
+ nAvailWidth -= pRefDevice->PixelToLogic(Size(0,pRowInfo[nArrY].nHeight)).Height();
+ else
+ nAvailWidth -= pRowInfo[nArrY].nHeight;
+ }
+ else
+ {
+ if (bPixelToLogic)
+ nAvailWidth -= pRefDevice->PixelToLogic(Size(0,DROPDOWN_BITMAP_SIZE)).Height();
+ else
+ nAvailWidth -= DROPDOWN_BITMAP_SIZE;
+ }
+ long nComp = nEngineWidth;
+ if (nAvailWidth<nComp) nAvailWidth=nComp;
+ }
+
+ // horizontale Ausrichtung
+
+ if (eOrient==SVX_ORIENTATION_STANDARD && !nAttrRotate)
+ {
+ if (eHorJust==SVX_HOR_JUSTIFY_RIGHT ||
+ eHorJust==SVX_HOR_JUSTIFY_CENTER)
+ {
+ SvxAdjust eSvxAdjust =
+ (eHorJust==SVX_HOR_JUSTIFY_RIGHT) ?
+ SVX_ADJUST_RIGHT : SVX_ADJUST_CENTER;
+ pEngine->SetDefaultItem(
+ SvxAdjustItem( eSvxAdjust, EE_PARA_JUST ) );
+
+ aPaperSize.Width() = nOutWidth;
+ if (bPixelToLogic)
+ pEngine->SetPaperSize(pRefDevice->PixelToLogic(aPaperSize));
+ else
+ pEngine->SetPaperSize(aPaperSize);
+ }
+ }
+ else
+ {
+ // bei gedrehtem Text ist Standard zentriert
+ if (eHorJust==SVX_HOR_JUSTIFY_RIGHT)
+ aLogicStart.X() += nAvailWidth - nEngineWidth;
+ else if (eHorJust==SVX_HOR_JUSTIFY_CENTER ||
+ eHorJust==SVX_HOR_JUSTIFY_STANDARD)
+ aLogicStart.X() += (nAvailWidth - nEngineWidth) / 2;
+ }
+ }
+ else if (bExtend && eRotMode != SVX_ROTATE_MODE_STANDARD)
+ {
+ // Ausrichtung mit Bezugskante
+
+ long nRealWidth = nCellWidth - 1; //! Merge beruecksichtigen?
+ if (bPixelToLogic)
+ nRealWidth = pRefDevice->PixelToLogic(
+ Size( nRealWidth, 0 ) ).Width();
+
+ // hier ist Standard links (?)
+ if (eHorJust==SVX_HOR_JUSTIFY_RIGHT)
+ aLogicStart.X() += nRealWidth - nEngineWidth;
+ else if (eHorJust==SVX_HOR_JUSTIFY_CENTER)
+ aLogicStart.X() += (nRealWidth - nEngineWidth) / 2;
+ }
+
+ if ( eOrient==SVX_ORIENTATION_STANDARD ||
+ eOrient==SVX_ORIENTATION_STACKED || !bBreak )
+ {
+ if (eVerJust==SVX_VER_JUSTIFY_BOTTOM ||
+ eVerJust==SVX_VER_JUSTIFY_STANDARD)
+ {
+ if (bPixelToLogic)
+ aLogicStart.Y() += pRefDevice->PixelToLogic( Size(0,
+ pRefDevice->LogicToPixel(aCellSize).Height() -
+ pRefDevice->LogicToPixel(Size(0,nEngineHeight)).Height()
+ )).Height();
+ else
+ aLogicStart.Y() += aCellSize.Height() - nEngineHeight;
+ }
+
+ else if (eVerJust==SVX_VER_JUSTIFY_CENTER)
+ {
+ if (bPixelToLogic)
+ aLogicStart.Y() += pRefDevice->PixelToLogic( Size(0,(
+ pRefDevice->LogicToPixel(aCellSize).Height() -
+ pRefDevice->LogicToPixel(Size(0,nEngineHeight)).Height())
+ / 2)).Height();
+ else
+ aLogicStart.Y() += (aCellSize.Height() - nEngineHeight) / 2;
+ }
+ }
+
+ // TOPBOTTON and BOTTOMTOP are handled in DrawStrings/DrawEdit
+ DBG_ASSERT( eOrient == SVX_ORIENTATION_STANDARD && nAttrRotate,
+ "DrawRotated: no rotation" );
+
+ long nOriVal = 0;
+ if ( nAttrRotate )
+ {
+ // Attribut ist 1/100, Font 1/10 Grad
+ nOriVal = nAttrRotate / 10;
+
+ double nAddX = 0.0;
+ double nAddY = 0.0;
+ if ( nCos > 0.0 && eRotMode != SVX_ROTATE_MODE_STANDARD )
+ {
+ //! begrenzen !!!
+ double nH = nRealHeight * nCos;
+ nAddX += nH * ( nCos / fabs(nSin) );
+ }
+ if ( nCos < 0.0 && eRotMode == SVX_ROTATE_MODE_STANDARD )
+ nAddX -= nRealWidth * nCos;
+ if ( nSin < 0.0 )
+ nAddX -= nRealHeight * nSin;
+ if ( nSin > 0.0 )
+ nAddY += nRealWidth * nSin;
+ if ( nCos < 0.0 )
+ nAddY -= nRealHeight * nCos;
+
+ if ( eRotMode != SVX_ROTATE_MODE_STANDARD )
+ {
+ //! begrenzen !!!
+ double nSkew = nTotalHeight * nCos / fabs(nSin);
+ if ( eRotMode == SVX_ROTATE_MODE_CENTER )
+ nAddX -= nSkew * 0.5;
+ if ( ( eRotMode == SVX_ROTATE_MODE_TOP && nSin > 0.0 ) ||
+ ( eRotMode == SVX_ROTATE_MODE_BOTTOM && nSin < 0.0 ) )
+ nAddX -= nSkew;
+
+ long nUp = 0;
+ if ( eVerJust == SVX_VER_JUSTIFY_CENTER )
+ nUp = ( aCellSize.Height() - nEngineHeight ) / 2;
+ else if ( eVerJust == SVX_VER_JUSTIFY_TOP )
+ {
+ if ( nSin > 0.0 )
+ nUp = aCellSize.Height() - nEngineHeight;
+ }
+ else // BOTTOM / STANDARD
+ {
+ if ( nSin < 0.0 )
+ nUp = aCellSize.Height() - nEngineHeight;
+ }
+ if ( nUp )
+ nAddX += ( nUp * nCos / fabs(nSin) );
+ }
+
+ aLogicStart.X() += (long) nAddX;
+ aLogicStart.Y() += (long) nAddY;
+ }
+
+ //! bSimClip is not used here (because nOriVal is set)
+
+ pEngine->Draw( pDev, aLogicStart, (short)nOriVal );
+
+ if (bClip)
+ {
+ if (bMetaFile)
+ pDev->Pop();
+ else
+ pDev->SetClipRegion();
+ }
+ }
+ }
+ }
+ }
+ nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth;
+ }
+ }
+ nRowPosY += pRowInfo[nArrY].nHeight;
+ }
+
+ delete pEngine;
+}
+
+
+
diff --git a/sc/source/ui/view/output3.cxx b/sc/source/ui/view/output3.cxx
new file mode 100644
index 000000000000..f829f147f39c
--- /dev/null
+++ b/sc/source/ui/view/output3.cxx
@@ -0,0 +1,630 @@
+/*************************************************************************
+ *
+ * $RCSfile: output3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX ***
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX ***
+//#define _SVTREEBOX_HXX ***
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+#define _SFXMSG_HXX //*
+#define _SFXOBJFACE_HXX
+#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX ***
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX ***
+//#define _SFXDOCTDLG_HXX ***
+//#define _SFX_TEMPLDLG_HXX ***
+//#define _SFXNEW_HXX ***
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+#define _SFXSLSTITM_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOVIEWS
+
+#define SI_NOITEMS
+#define _SI_NOSBXCONTROLS
+#define _VCATTR_HXX
+#define _VCONT_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdograf.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdpagv.hxx>
+#include <svx/svdview.hxx>
+#include <svx/xoutx.hxx>
+
+#include "output.hxx"
+#include "drwlayer.hxx"
+#include "document.hxx"
+#include "tabvwsh.hxx"
+
+
+#ifdef IRIX
+#ifndef _SBXCLASS_HXX
+#include <svtools/sbx.hxx>
+#endif
+#endif
+
+// STATIC DATA -----------------------------------------------------------
+
+SdrObject* pSkipPaintObj = NULL;
+
+
+//==================================================================
+
+void ScOutputData::DrawingLayer( USHORT nLayer, USHORT nObjectFlags, long nLogStX, long nLogStY )
+{
+ if ( nObjectFlags == SC_OBJECTS_NONE || !pDoc->GetDrawLayer() )
+ return;
+
+ MapMode aOldMode = pDev->GetMapMode();
+
+ // Area auch fuer Metafiles
+ USHORT nCol;
+ USHORT nRow;
+
+ Point aOffset;
+ Rectangle aRect;
+
+ for (nCol=0; nCol<nX1; nCol++)
+ aOffset.X() -= pDoc->GetColWidth( nCol, nTab );
+ for (nRow=0; nRow<nY1; nRow++)
+ aOffset.Y() -= pDoc->GetRowHeight( nRow, nTab );
+
+ aRect.Left() = aRect.Right() = -aOffset.X();
+ aRect.Top() = aRect.Bottom() = -aOffset.Y();
+
+ Point aMMOffset( aOffset );
+ aMMOffset.X() = (long)(aMMOffset.X() * HMM_PER_TWIPS);
+ aMMOffset.Y() = (long)(aMMOffset.Y() * HMM_PER_TWIPS);
+
+ if (!bMetaFile)
+ aMMOffset += Point( nLogStX, nLogStY );
+
+ for (nCol=nX1; nCol<=nX2; nCol++)
+ aRect.Right() += pDoc->GetColWidth( nCol, nTab );
+ for (nRow=nY1; nRow<=nY2; nRow++)
+ aRect.Bottom() += pDoc->GetRowHeight( nRow, nTab );
+
+ aRect.Left() = (long) (aRect.Left() * HMM_PER_TWIPS);
+ aRect.Top() = (long) (aRect.Top() * HMM_PER_TWIPS);
+ aRect.Right() = (long) (aRect.Right() * HMM_PER_TWIPS);
+ aRect.Bottom() = (long) (aRect.Bottom() * HMM_PER_TWIPS);
+
+ // HACK: Ausschnitt genau auf Ausgabe-Pixel anpassen
+//! aRect = Rectangle( aRect.TopLeft(), pDev->PixelToLogic( Size( nScrW,nScrH ) ) );
+
+ if (!bMetaFile)
+ pDev->SetMapMode( MapMode( MAP_100TH_MM, aMMOffset, aOldMode.GetScaleX(), aOldMode.GetScaleY() ) );
+
+ //! bMeta: um aMMOffset verschieben ( DrawView ) !!!!!
+
+ // Layer zeichnen
+
+ DrawSelectiveObjects( nLayer, aRect, nObjectFlags );
+
+ if (!bMetaFile)
+ pDev->SetMapMode( aOldMode );
+}
+
+void ScOutputData::DrawSelectiveObjects( USHORT nLayer, const Rectangle& rRect,
+ USHORT nObjectFlags, USHORT nDummyFlags )
+{
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ if (!pModel)
+ return;
+
+ ExtOutputDevice* pXOut = new ExtOutputDevice( pDev );
+ pXOut->SetOutDev( pDev );
+ SdrPaintInfoRec aInfoRec;
+
+ if ( pViewShell )
+ {
+ SdrView* pDrawView = pViewShell->GetSdrView();
+ if (pDrawView)
+ aInfoRec.pPV = pDrawView->GetPageViewPvNum(0);
+ }
+
+ BOOL bDidDummy = FALSE;
+
+ SdrPage* pPage = pModel->GetPage(nTab);
+ DBG_ASSERT(pPage,"Page nicht gefunden");
+ if (!pPage)
+ return;
+
+ if ( aInfoRec.pPV && aInfoRec.pPV->GetObjList() == pPage )
+ aInfoRec.bNotActive = FALSE;
+
+ // DrawMode handling copied from SdrObjList::Paint
+ UINT32 nWasDrawMode = pDev->GetDrawMode();
+ if(!aInfoRec.bOriginalDrawModeSet)
+ {
+ // Original-Paintmode retten
+ aInfoRec.bOriginalDrawModeSet = TRUE;
+ aInfoRec.nOriginalDrawMode = pDev->GetDrawMode();
+ }
+ if(aInfoRec.pPV && aInfoRec.bNotActive)
+ {
+ if(aInfoRec.pPV->GetView().DoVisualizeEnteredGroup())
+ {
+ // Darstellung schmal
+ pDev->SetDrawMode(nWasDrawMode | (
+ DRAWMODE_GHOSTEDLINE|DRAWMODE_GHOSTEDFILL|DRAWMODE_GHOSTEDTEXT|DRAWMODE_GHOSTEDBITMAP|DRAWMODE_GHOSTEDGRADIENT));
+ }
+ }
+ else
+ {
+ // Darstellung normal
+ pDev->SetDrawMode(aInfoRec.nOriginalDrawMode);
+ }
+
+ // Paint ueber SdrObjListIter geht bei 3D-Objekten schief
+
+ ULONG nObjCount = pPage->GetObjCount();
+ for (ULONG nObjNum = 0; nObjNum<nObjCount; nObjNum++)
+ {
+ SdrObject* pObject = pPage->GetObj(nObjNum);
+
+ if ( pObject->GetLayer()==(SdrLayerID) nLayer && pObject != pSkipPaintObj )
+ {
+ // #62107# nur das anfassen, was ueberhaupt gepainted werden koennte,
+ // damit nicht unnoetig durch Cache-Miss nachgeladen wird
+
+ Rectangle aObjRect = pObject->GetBoundRect();
+ if ( aObjRect.IsOver( rRect ) )
+ {
+ BOOL bDraw;
+ BOOL bDummy;
+ UINT16 nSdrObjKind = pObject->GetObjIdentifier();
+ if (nSdrObjKind == OBJ_OLE2)
+ {
+ if ( pDoc->IsChart( pObject ) )
+ {
+ bDraw = (nObjectFlags & SC_OBJECTS_CHARTS) != 0;
+ bDummy = (nDummyFlags & SC_OBJECTS_CHARTS) != 0;
+ }
+ else
+ {
+ bDraw = (nObjectFlags & SC_OBJECTS_OLE) != 0;
+ bDummy = (nDummyFlags & SC_OBJECTS_OLE) != 0;
+ }
+ }
+ else if (nSdrObjKind == OBJ_GRAF) // Grafiken zusammen mit Ole-Objekten
+ {
+ bDraw = (nObjectFlags & SC_OBJECTS_OLE) != 0;
+ bDummy = (nDummyFlags & SC_OBJECTS_OLE) != 0;
+ }
+ else
+ {
+ bDraw = (nObjectFlags & SC_OBJECTS_DRAWING) != 0;
+ bDummy = (nDummyFlags & SC_OBJECTS_DRAWING) != 0;
+ }
+
+ if (bDraw || bDummy)
+ {
+ BOOL bClip = !rRect.IsInside( aObjRect );
+ BOOL bPush = FALSE;
+
+ if (bClip && bDraw && nSdrObjKind == OBJ_GRAF)
+ {
+ const Graphic& rGraph = ((SdrGrafObj*)pObject)->GetGraphic();
+ GraphicType eType = rGraph.GetType();
+#ifndef VCL
+ if ( eType == GRAPHIC_GDIMETAFILE || eType == GRAPHIC_WINMETAFILE ||
+ eType == GRAPHIC_WNTMETAFILE || eType == GRAPHIC_OS2METAFILE ||
+#else
+ if ( eType == GRAPHIC_GDIMETAFILE ||
+#endif
+ rGraph.IsAnimated() )
+ bClip = FALSE;
+ }
+
+ // #36427#/#37790#: VC-Objekte pfuschen mit den ClipRegions rum,
+ // darum fuer Metafiles Push/Pop aussenherum.
+ //! Hier wieder raus, wenn die VC-Objekte richtig funktionieren!
+// if ( bMetaFile && bDraw && !bClip && pObject->ISA(VCSbxDrawObject) )
+// bPush = TRUE;
+
+ if (bClip)
+ {
+ if (bMetaFile)
+ {
+ pDev->Push();
+ pDev->IntersectClipRegion( rRect );
+ }
+ else
+ {
+ if ( nLayer != SC_LAYER_BACK )
+ { // #29660# HACK:
+ // untere Gitterlinie blieb manchmal stehen,
+ // anscheinend Rundungsfehler in ClipRegion
+ // vom Grafiktreiber
+ Rectangle aPix = pDev->LogicToPixel(rRect);
+ aPix.Bottom() += 1;
+ Rectangle aNew = pDev->PixelToLogic(aPix);
+ pDev->SetClipRegion( aNew );
+ }
+ else
+ pDev->SetClipRegion( rRect );
+ }
+ }
+ else if (bPush) // nur Push/Pop
+ pDev->Push();
+
+ if (bDraw)
+ {
+ if (pObject == pEditObj)
+ {
+ aInfoRec.nPaintMode|=SDRPAINTMODE_TEXTEDIT;
+ pObject->Paint( *pXOut, aInfoRec );
+ aInfoRec.nPaintMode&=~SDRPAINTMODE_TEXTEDIT;
+ }
+ else
+ pObject->Paint( *pXOut, aInfoRec );
+ bDidDummy = FALSE;
+
+ // Plugins connecten, wenn sichtbar:
+
+ if ( pViewShell && pObject->ISA(SdrOle2Obj) )
+ {
+ SdrOle2Obj* pOleObj = (SdrOle2Obj*)pObject;
+ ConnectObject( pOleObj->GetObjRef(), pOleObj );
+ }
+ }
+ else
+ {
+ if (!bDidDummy)
+ {
+ pDev->SetFillColor(COL_LIGHTGRAY);
+ pDev->SetLineColor(COL_BLACK);
+ bDidDummy = TRUE;
+ }
+ pDev->DrawRect( aObjRect );
+ }
+
+ if (bClip || bPush) // bei bPush ist auch bMetaFile=TRUE
+ {
+ if (bMetaFile)
+ pDev->Pop();
+ else
+ pDev->SetClipRegion();
+ }
+ }
+ }
+ }
+ }
+
+ pDev->SetDrawMode(aInfoRec.nOriginalDrawMode);
+
+ delete pXOut;
+}
+
+// Teile nur fuer Bildschirm
+
+void ScOutputData::DrawingSingle( USHORT nLayer, USHORT nObjectFlags, USHORT nDummyFlags )
+{
+ Rectangle aDrawingRect;
+ aDrawingRect.Left() = nScrX;
+ aDrawingRect.Right() = nScrX+nScrW-1;
+
+ BOOL bHad = FALSE;
+ long nPosY = nScrY;
+ USHORT nArrY;
+ for (nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ BOOL bChanged = FALSE;
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+
+ if ( pThisRowInfo->bChanged )
+ {
+ if (!bHad)
+ {
+ aDrawingRect.Top() = nPosY;
+ bHad = TRUE;
+ }
+ aDrawingRect.Bottom() = nPosY + pRowInfo[nArrY].nHeight - 1;
+ }
+ else if (bHad)
+ {
+ DrawSelectiveObjects( nLayer, pDev->PixelToLogic(aDrawingRect), nObjectFlags, nDummyFlags );
+ bHad = FALSE;
+ }
+ nPosY += pRowInfo[nArrY].nHeight;
+ }
+
+ if (bHad)
+ DrawSelectiveObjects( nLayer, pDev->PixelToLogic(aDrawingRect), nObjectFlags, nDummyFlags );
+}
+
+
+
+
diff --git a/sc/source/ui/view/pgbrksh.cxx b/sc/source/ui/view/pgbrksh.cxx
new file mode 100644
index 000000000000..df8838677254
--- /dev/null
+++ b/sc/source/ui/view/pgbrksh.cxx
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: pgbrksh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/srchitem.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/whiter.hxx>
+
+#define GLOBALOVERFLOW
+#include "segmentc.hxx"
+
+
+#include "pgbrksh.hxx"
+#include "tabvwsh.hxx"
+#include "scresid.hxx"
+#include "document.hxx"
+#include "sc.hrc"
+
+//------------------------------------------------------------------------
+
+#define ScPageBreakShell
+#include "scslots.hxx"
+
+//------------------------------------------------------------------------
+
+TYPEINIT1( ScPageBreakShell, SfxShell );
+
+SFX_IMPL_INTERFACE(ScPageBreakShell, SfxShell, ScResId(SCSTR_PAGEBREAKSHELL))
+{
+ SFX_POPUPMENU_REGISTRATION( ScResId(RID_POPUP_PAGEBREAK) );
+}
+
+
+//------------------------------------------------------------------------
+ScPageBreakShell::ScPageBreakShell( ScTabViewShell* pViewSh ) :
+ SfxShell(pViewSh)
+{
+ SetPool( &pViewSh->GetPool() );
+ SetUndoManager( pViewSh->GetViewData()->GetSfxDocShell()->GetUndoManager() );
+ SetHelpId( HID_SCSHELL_PAGEBREAK );
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("PageBreak")));
+}
+
+//------------------------------------------------------------------------
+ScPageBreakShell::~ScPageBreakShell()
+{
+}
+
+
diff --git a/sc/source/ui/view/pivotsh.cxx b/sc/source/ui/view/pivotsh.cxx
new file mode 100644
index 000000000000..8ebf38f4073b
--- /dev/null
+++ b/sc/source/ui/view/pivotsh.cxx
@@ -0,0 +1,242 @@
+/*************************************************************************
+ *
+ * $RCSfile: pivotsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/srchitem.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objface.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/whiter.hxx>
+
+#define GLOBALOVERFLOW
+#include "segmentc.hxx"
+
+
+#include "pivotsh.hxx"
+#include "tabvwsh.hxx"
+#include "scresid.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "sc.hrc"
+
+//------------------------------------------------------------------------
+
+#define ScPivotShell
+#include "scslots.hxx"
+
+//------------------------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
+
+#pragma SEG_SEGCLASS(SFXMACROS_SEG,STARTWORK_CODE)
+
+
+TYPEINIT1( ScPivotShell, SfxShell );
+
+SFX_IMPL_INTERFACE(ScPivotShell, SfxShell, ScResId(SCSTR_PIVOTSHELL))
+{
+ SFX_POPUPMENU_REGISTRATION( ScResId(RID_POPUP_PIVOT) );
+}
+
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pivotsh_01)
+
+ScPivotShell::ScPivotShell( ScTabViewShell* pViewSh ) :
+ SfxShell(pViewSh),
+ pViewShell( pViewSh )
+{
+ SetPool( &pViewSh->GetPool() );
+ SetUndoManager( pViewSh->GetViewData()->GetSfxDocShell()->GetUndoManager() );
+ SetHelpId( HID_SCSHELL_PIVOTSH );
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Pivot")));
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pivotsh_02)
+
+ScPivotShell::~ScPivotShell()
+{
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pivotsh_03)
+
+void ScPivotShell::Execute( SfxRequest& rReq )
+{
+ switch ( rReq.GetSlot() )
+ {
+ case SID_PIVOT_RECALC:
+ pViewShell->RecalcPivotTable();
+ break;
+
+ case SID_PIVOT_KILL:
+ pViewShell->DeletePivotTable();
+ break;
+ }
+}
+
+//------------------------------------------------------------------------
+#pragma SEG_FUNCDEF(pivotsh_04)
+
+void __EXPORT ScPivotShell::GetState( SfxItemSet& rSet )
+{
+ ScDocShell* pDocSh = pViewShell->GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while (nWhich)
+ {
+ switch (nWhich)
+ {
+ case SID_PIVOT_RECALC:
+ case SID_PIVOT_KILL:
+ {
+ //! move ReadOnly check to idl flags
+
+ if ( pDocSh->IsReadOnly() || pDoc->GetChangeTrack()!=NULL )
+ {
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.18 2000/09/17 14:09:34 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.17 2000/08/31 16:38:46 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.16 2000/05/09 18:30:15 nn
+ use IMPL_INTERFACE macro without IDL
+
+ Revision 1.15 2000/04/14 08:31:38 nn
+ unicode changes
+
+ Revision 1.14 2000/03/16 15:47:42 nn
+ #74017# check ReadOnly state
+
+ Revision 1.13 1999/06/02 19:42:10 ANK
+ #66547# SubShells
+
+
+ Rev 1.12 02 Jun 1999 21:42:10 ANK
+ #66547# SubShells
+
+ Rev 1.11 04 Sep 1998 18:24:48 ANK
+ #55978# Slots disablen bei Redlining
+
+ Rev 1.10 24 Nov 1997 20:04:54 NN
+ includes
+
+ Rev 1.9 04 Sep 1997 19:48:30 RG
+ change header
+
+ Rev 1.8 05 Aug 1997 14:31:18 TJ
+ include svx/srchitem.hxx
+
+ Rev 1.7 29 Oct 1996 13:36:00 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.6 09 Aug 1996 20:34:46 NN
+ Svx-Includes aus scitems.hxx raus
+
+ Rev 1.5 16 Oct 1995 09:56:32 JN
+ HelpIds fuer Shells
+
+ Rev 1.4 01 Aug 1995 15:30:36 NN
+ SetUndoManager
+
+ Rev 1.3 03 Jul 1995 10:19:28 STE
+ GetState exported
+
+ Rev 1.2 20 Jun 1995 16:24:22 NN
+ nochmal Segmentierung
+
+ Rev 1.1 13 Jun 1995 18:43:52 MO
+ seg-pragmas korrigiert
+
+ Rev 1.0 30 May 1995 14:59:28 MO
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/view/preview.cxx b/sc/source/ui/view/preview.cxx
new file mode 100644
index 000000000000..86b031242979
--- /dev/null
+++ b/sc/source/ui/view/preview.cxx
@@ -0,0 +1,650 @@
+/*************************************************************************
+ *
+ * $RCSfile: preview.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+#include <tools/pstm.hxx>
+#include "scitems.hxx"
+#include <svx/fmview.hxx>
+#include <svx/sizeitem.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <svtools/itemset.hxx>
+#include <tools/multisel.hxx>
+#include <vcl/waitobj.hxx>
+
+#include "preview.hxx"
+#include "prevwsh.hxx"
+#include "docsh.hxx"
+#include "printfun.hxx"
+#include "stlpool.hxx"
+#include "drwlayer.hxx"
+#include "globstr.hrc"
+#include "sc.hrc" // fuer ShellInvalidate
+
+// STATIC DATA -----------------------------------------------------------
+
+//==================================================================
+
+long lcl_GetDisplayStart( USHORT nTab, ScDocument* pDoc, long* pPages )
+{
+ long nDisplayStart = 0;
+ for (USHORT i=0; i<nTab; i++)
+ {
+ if ( pDoc->NeedPageResetAfterTab(i) )
+ nDisplayStart = 0;
+ else
+ nDisplayStart += pPages[i];
+ }
+ return nDisplayStart;
+}
+
+
+ScPreview::ScPreview( Window* pParent, ScDocShell* pDocSh, ScPreviewShell* pViewSh ) :
+ Window( pParent ),
+ pDocShell( pDocSh ),
+ pViewShell( pViewSh ),
+ bInPaint( FALSE ),
+ bValid( FALSE ),
+ bStateValid( FALSE ),
+ bInGetState( FALSE ),
+ pDrawView( NULL ),
+ nTabsTested( 0 ),
+ nPageNo( 0 ),
+ nZoom( 100 ),
+ nTab( 0 ),
+ nTotalPages( 0 ),
+ nTabStart( 0 ),
+ nDisplayStart( 0 )
+{
+ SetBackground();
+
+ SetHelpId( HID_SC_WIN_PREVIEW );
+ SetUniqueId( HID_SC_WIN_PREVIEW );
+}
+
+
+__EXPORT ScPreview::~ScPreview()
+{
+ delete pDrawView;
+}
+
+
+void ScPreview::UpdateDrawView() // nTab muss richtig sein
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ Rectangle aFull( 0, 0, LONG_MAX, LONG_MAX );
+ if ( pDoc->HasControl( nTab, aFull ) )
+ {
+ if ( pDrawView && !pDrawView->GetPageViewPgNum(nTab) )
+ {
+ // die angezeigte Page der DrawView umzustellen (s.u.) funktioniert nicht ?!?
+ delete pDrawView;
+ pDrawView = NULL;
+ }
+
+ if ( !pDrawView ) // neu anlegen?
+ {
+ ScDrawLayer* pModel = pDoc->GetDrawLayer(); // ist nicht 0
+ pDrawView = new FmFormView( pModel, this );
+ // #55259# die DrawView uebernimmt den Design-Modus vom Model
+ // (Einstellung "Im Entwurfsmodus oeffnen"), darum hier zuruecksetzen
+ pDrawView->SetDesignMode( TRUE );
+ pDrawView->SetPrintPreview( TRUE );
+ pDrawView->ShowPagePgNum( nTab, Point() );
+ }
+#if 0
+ else if ( !pDrawView->GetPageViewPgNum(nTab) ) // angezeigte Page umstellen
+ {
+ pDrawView->HideAllPages();
+ pDrawView->ShowPagePgNum( nTab, Point() );
+ }
+#endif
+ }
+ else if ( pDrawView )
+ {
+ delete pDrawView; // fuer diese Tabelle nicht gebraucht
+ pDrawView = NULL;
+ }
+}
+
+
+void ScPreview::TestLastPage()
+{
+ if (nPageNo >= nTotalPages)
+ {
+ if (nTotalPages)
+ {
+ nPageNo = nTotalPages - 1;
+ nTab = nTabCount - 1;
+ while (nTab && !nPages[nTab]) // letzte nicht leere Tabelle
+ --nTab;
+ DBG_ASSERT(nPages[nTab],"alle Tabellen leer?");
+ nTabPage = nPages[nTab] - 1;
+ nTabStart = 0;
+ for (USHORT i=0; i<nTab; i++)
+ nTabStart += nPages[i];
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ nDisplayStart = lcl_GetDisplayStart( nTab, pDoc, nPages );
+ }
+ else // leeres Dokument
+ {
+ nTab = 0;
+ nPageNo = nTabPage = nTabStart = nDisplayStart = 0;
+ aState.nPrintTab = aState.nStartCol = aState.nStartRow =
+ aState.nEndCol = aState.nEndRow = aState.nZoom = 0;
+ aState.nPagesX = aState.nPagesY = aState.nTabPages =
+ aState.nTotalPages = aState.nPageStart = aState.nDocPages = 0;
+ }
+ }
+}
+
+
+void ScPreview::CalcPages( USHORT nToWhichTab )
+{
+ WaitObject( this );
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ nTabCount = pDoc->GetTableCount();
+ USHORT i;
+
+ USHORT nAnz = Min( nTabCount, USHORT(nToWhichTab+1) );
+ USHORT nStart = nTabsTested;
+ if (!bValid)
+ {
+ nStart = 0;
+ nTotalPages = 0;
+ nTabsTested = 0;
+ }
+
+ for (i=nStart; i<nAnz; i++)
+ {
+ long nAttrPage = i ? nFirstAttr[i-1] : 1;
+
+ long nThisStart = nTotalPages;
+ ScPrintFunc aPrintFunc( pDocShell, this, i, nAttrPage );
+ long nThisTab = aPrintFunc.GetTotalPages();
+ nPages[i] = nThisTab;
+ nTotalPages += nThisTab;
+ nFirstAttr[i] = aPrintFunc.GetFirstPageNo(); // behalten oder aus Vorlage
+
+ if (nPageNo>=nThisStart && nPageNo<nTotalPages)
+ {
+ nTab = i;
+ nTabPage = nPageNo - nThisStart;
+ nTabStart = nThisStart;
+
+ aPrintFunc.GetPrintState( aState );
+ aPageSize = aPrintFunc.GetPageSize();
+ }
+ }
+
+ nDisplayStart = lcl_GetDisplayStart( nTab, pDoc, nPages );
+
+ if (nAnz > nTabsTested)
+ nTabsTested = nAnz;
+
+ // testen, ob hinter letzter Seite
+
+ if ( nTabsTested >= nTabCount )
+ TestLastPage();
+
+ aState.nDocPages = nTotalPages;
+
+ bValid = TRUE;
+ bStateValid = TRUE;
+ DoInvalidate();
+}
+
+
+void ScPreview::RecalcPages() // nur nPageNo geaendert
+{
+ if (!bValid)
+ return; // dann wird CalcPages aufgerufen
+
+ USHORT nOldTab = nTab;
+ USHORT i;
+
+ BOOL bDone = FALSE;
+ while (nPageNo >= nTotalPages && nTabsTested < nTabCount)
+ {
+ CalcPages( nTabsTested );
+ bDone = TRUE;
+ }
+
+ if (!bDone)
+ {
+ long nPartPages = 0;
+ for (i=0; i<nTabsTested; i++)
+ {
+ long nThisStart = nPartPages;
+ nPartPages += nPages[i];
+
+ if (nPageNo>=nThisStart && nPageNo<nPartPages)
+ {
+ nTab = i;
+ nTabPage = nPageNo - nThisStart;
+ nTabStart = nThisStart;
+
+// aPageSize = aPrintFunc.GetPageSize();
+ }
+ }
+
+ ScDocument* pDoc = pDocShell->GetDocument();
+ nDisplayStart = lcl_GetDisplayStart( nTab, pDoc, nPages );
+ }
+
+ TestLastPage(); // testen, ob hinter letzter Seite
+
+ if ( nTab != nOldTab )
+ bStateValid = FALSE;
+
+ DoInvalidate();
+}
+
+
+void __EXPORT ScPreview::Paint( const Rectangle& rRect )
+{
+ if (!bValid)
+ {
+ CalcPages(0);
+ RecalcPages();
+ UpdateDrawView(); // Tabelle evtl. geaendert
+ }
+
+ Fraction aPreviewZoom( nZoom, 100 );
+ Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 );
+ MapMode aMMMode( MAP_100TH_MM, Point(), aHorPrevZoom, aPreviewZoom );
+
+ Size aPageSize;
+ if ( nPageNo < nTotalPages )
+ {
+ ScPrintFunc* pPrintFunc;
+ if (bStateValid)
+ pPrintFunc = new ScPrintFunc( pDocShell, this, aState );
+ else
+ pPrintFunc = new ScPrintFunc( pDocShell, this, nTab, nFirstAttr[nTab], nTotalPages );
+
+ pPrintFunc->SetOffset(aOffset);
+ pPrintFunc->SetManualZoom(nZoom);
+ pPrintFunc->SetDateTime(aDate,aTime);
+ pPrintFunc->SetClearFlag(TRUE);
+
+ pPrintFunc->SetDrawView( pDrawView );
+
+ // MultiSelection fuer die eine Seite muss etwas umstaendlich erzeugt werden...
+ Range aPageRange( nPageNo+1, nPageNo+1 );
+ MultiSelection aPage( aPageRange );
+ aPage.SetTotalRange( Range(0,RANGE_MAX) );
+ aPage.Select( aPageRange );
+
+ long nPrinted = pPrintFunc->DoPrint( aPage, nTabStart, nDisplayStart );
+ DBG_ASSERT(nPrinted<=1, "was'n nu los?");
+
+ SetMapMode(aMMMode);
+// USHORT nPrintZoom = pPrintFunc->GetZoom();
+
+ if (nPrinted) // wenn nichts, alles grau zeichnen
+ {
+ aPageSize = pPrintFunc->GetPageSize();
+ aPageSize.Width() = (long) (aPageSize.Width() * HMM_PER_TWIPS );
+ aPageSize.Height() = (long) (aPageSize.Height() * HMM_PER_TWIPS );
+ }
+
+ if (!bStateValid)
+ {
+ pPrintFunc->GetPrintState( aState );
+ aState.nDocPages = nTotalPages;
+ bStateValid = TRUE;
+ }
+ delete pPrintFunc;
+ }
+
+ long nPageEndX = aPageSize.Width() - aOffset.X();
+ long nPageEndY = aPageSize.Height() - aOffset.Y();
+ Size aWinSize = GetOutputSize();
+ Point aWinEnd( aWinSize.Width(), aWinSize.Height() );
+ BOOL bRight = nPageEndX <= aWinEnd.X();
+ BOOL bBottom = nPageEndY <= aWinEnd.Y();
+ if (bRight || bBottom)
+ {
+ SetLineColor();
+ SetFillColor(COL_LIGHTGRAY);
+ if (bRight)
+ DrawRect(Rectangle(nPageEndX,0, aWinEnd.X(),aWinEnd.Y()));
+ if (bBottom)
+ {
+ if (bRight)
+ DrawRect(Rectangle(0,nPageEndY, nPageEndX,aWinEnd.Y())); // Ecke nicht doppelt
+ else
+ DrawRect(Rectangle(0,nPageEndY, aWinEnd.X(),aWinEnd.Y()));
+ }
+ }
+
+ pViewShell->UpdateScrollBars();
+}
+
+
+void __EXPORT ScPreview::Command( const CommandEvent& rCEvt )
+{
+ USHORT nCmd = rCEvt.GetCommand();
+ if ( nCmd == COMMAND_WHEEL || nCmd == COMMAND_STARTAUTOSCROLL || nCmd == COMMAND_AUTOSCROLL )
+ {
+ BOOL bDone = pViewShell->ScrollCommand( rCEvt );
+ if (!bDone)
+ Window::Command(rCEvt);
+ }
+ else if ( nCmd == COMMAND_CONTEXTMENU )
+ SfxDispatcher::ExecutePopup();
+ else
+ Window::Command( rCEvt );
+}
+
+
+void __EXPORT ScPreview::KeyInput( const KeyEvent& rKEvt )
+{
+ if (!pViewShell->KeyInput(rKEvt))
+ Window::KeyInput(rKEvt);
+}
+
+
+void ScPreview::DataChanged(BOOL bNewTime)
+{
+ if (bNewTime)
+ {
+ aDate = Date();
+ aTime = Time();
+ }
+
+ bValid = FALSE;
+ Invalidate();
+}
+
+
+String ScPreview::GetPosString()
+{
+ if (!bValid)
+ {
+ CalcPages(nTab);
+ UpdateDrawView(); // Tabelle evtl. geaendert
+ }
+
+ String aString( ScGlobal::GetRscString( STR_PAGE ) );
+ aString += ' ';
+ aString += String::CreateFromInt32(nPageNo+1);
+
+ if (nTabsTested >= nTabCount)
+ {
+ aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " / " ));
+ aString += String::CreateFromInt32(nTotalPages);
+ }
+
+ return aString;
+}
+
+
+void ScPreview::SetZoom(USHORT nNewZoom)
+{
+ if (nNewZoom < 20)
+ nNewZoom = 20;
+ if (nNewZoom > 400)
+ nNewZoom = 400;
+ if (nNewZoom != nZoom)
+ {
+ double nFact = nNewZoom / (double) nZoom;
+ nZoom = nNewZoom;
+ aOffset.X() = (long) ( aOffset.X() * nFact );
+ aOffset.Y() = (long) ( aOffset.Y() * nFact );
+
+// DataChanged();
+
+ bStateValid = FALSE;
+ DoInvalidate();
+ Invalidate();
+ }
+}
+
+
+void ScPreview::SetPageNo( long nPage )
+{
+ nPageNo = nPage;
+ RecalcPages();
+ UpdateDrawView(); // Tabelle evtl. geaendert
+ Invalidate();
+}
+
+
+long ScPreview::GetFirstPage(USHORT nTab)
+{
+ USHORT nTabCount = pDocShell->GetDocument()->GetTableCount();
+ if (nTab >= nTabCount)
+ nTab = nTabCount-1;
+
+ long nPage = 0;
+ if (nTab>0)
+ {
+ CalcPages( nTab );
+ UpdateDrawView(); // Tabelle evtl. geaendert
+
+ for (USHORT i=0; i<nTab; i++)
+ nPage += nPages[i];
+
+ // bei leerer Tabelle vorhergehende Seite
+
+ if ( nPages[nTab]==0 && nPage > 0 )
+ --nPage;
+ }
+
+ return nPage;
+}
+
+
+Size lcl_GetDocPageSize( ScDocument* pDoc, USHORT nTab )
+{
+ String aName = pDoc->GetPageStyle( nTab );
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find( aName, SFX_STYLE_FAMILY_PAGE );
+ if ( pStyleSheet )
+ {
+ SfxItemSet& rStyleSet = pStyleSheet->GetItemSet();
+ return ((const SvxSizeItem&) rStyleSet.Get(ATTR_PAGE_SIZE)).GetSize();
+ }
+ else
+ {
+ DBG_ERROR( "PageStyle not found" );
+ return Size();
+ }
+}
+
+
+USHORT ScPreview::GetOptimalZoom(BOOL bWidthOnly)
+{
+ double nWinScaleX = ScGlobal::nScreenPPTX / pDocShell->GetOutputFactor();
+ double nWinScaleY = ScGlobal::nScreenPPTY;
+ Size aWinSize = GetOutputSizePixel();
+
+ Size aPageSize = lcl_GetDocPageSize( pDocShell->GetDocument(), nTab );
+ if ( aPageSize.Width() && aPageSize.Height() )
+ {
+ long nZoomX = (long) ( aWinSize.Width() * 100 / ( aPageSize.Width() * nWinScaleX ));
+ long nZoomY = (long) ( aWinSize.Height() * 100 / ( aPageSize.Height() * nWinScaleY ));
+
+ long nOptimal = nZoomX;
+ if (!bWidthOnly && nZoomY<nOptimal)
+ nOptimal = nZoomY;
+
+ if (nOptimal<20)
+ nOptimal = 20;
+ if (nOptimal>400)
+ nOptimal = 400;
+
+ return (USHORT) nOptimal;
+ }
+ else
+ return nZoom;
+}
+
+
+void ScPreview::SetXOffset( long nX )
+{
+ if (bValid)
+ {
+ long nDif = LogicToPixel(aOffset).X() - LogicToPixel(Point(nX,0)).X();
+ aOffset.X() = nX;
+ if (!bInPaint)
+ {
+ MapMode aOldMode = GetMapMode(); SetMapMode(MAP_PIXEL);
+ Scroll( nDif, 0 );
+ SetMapMode(aOldMode);
+ }
+ }
+ else
+ {
+ aOffset.X() = nX;
+ if (!bInPaint)
+ Invalidate();
+ }
+}
+
+
+void ScPreview::SetYOffset( long nY )
+{
+ if (bValid)
+ {
+ long nDif = LogicToPixel(aOffset).Y() - LogicToPixel(Point(0,nY)).Y();
+ aOffset.Y() = nY;
+ if (!bInPaint)
+ {
+ MapMode aOldMode = GetMapMode(); SetMapMode(MAP_PIXEL);
+ Scroll( 0, nDif );
+ SetMapMode(aOldMode);
+ }
+ }
+ else
+ {
+ aOffset.Y() = nY;
+ if (!bInPaint)
+ Invalidate();
+ }
+}
+
+
+void ScPreview::DoInvalidate()
+{
+ // Wenn das ganze aus dem GetState der Shell gerufen wird,
+ // muss das Invalidate hinterher asynchron kommen...
+
+ if (bInGetState)
+ Application::PostUserEvent( STATIC_LINK( this, ScPreview, InvalidateHdl ) );
+ else
+ StaticInvalidate(); // sofort
+}
+
+void ScPreview::StaticInvalidate()
+{
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate(SID_STATUS_DOCPOS);
+ rBindings.Invalidate(SID_STATUS_PAGESTYLE);
+ rBindings.Invalidate(SID_PREVIEW_PREVIOUS);
+ rBindings.Invalidate(SID_PREVIEW_NEXT);
+ rBindings.Invalidate(SID_PREVIEW_FIRST);
+ rBindings.Invalidate(SID_PREVIEW_LAST);
+ rBindings.Invalidate(SID_ATTR_ZOOM);
+ rBindings.Invalidate(SID_PREVIEW_ZOOMIN);
+ rBindings.Invalidate(SID_PREVIEW_ZOOMOUT);
+}
+
+IMPL_STATIC_LINK( ScPreview, InvalidateHdl, void*, EMPTYARG )
+{
+ StaticInvalidate();
+ return 0;
+}
+
+void ScPreview::DataChanged( const DataChangedEvent& rDCEvt )
+{
+ Window::DataChanged(rDCEvt);
+
+ if ( (rDCEvt.GetType() == DATACHANGED_PRINTER) ||
+ (rDCEvt.GetType() == DATACHANGED_DISPLAY) ||
+ (rDCEvt.GetType() == DATACHANGED_FONTS) ||
+ (rDCEvt.GetType() == DATACHANGED_FONTSUBSTITUTION) ||
+ ((rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
+ (rDCEvt.GetFlags() & SETTINGS_STYLE)) )
+ {
+ //! Resize, wenn Scrollbars geaendert
+
+ if ( rDCEvt.GetType() == DATACHANGED_FONTS )
+ pDocShell->UpdateFontList();
+
+ Invalidate();
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/view/prevwsh.cxx b/sc/source/ui/view/prevwsh.cxx
new file mode 100644
index 000000000000..373865445942
--- /dev/null
+++ b/sc/source/ui/view/prevwsh.cxx
@@ -0,0 +1,844 @@
+/*************************************************************************
+ *
+ * $RCSfile: prevwsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/sizeitem.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/zoom.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/topfrm.hxx>
+#include <svtools/printdlg.hxx>
+#include <svtools/stritem.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+#include <tools/urlobj.hxx>
+#include <sfx2/docfile.hxx>
+
+#include "prevwsh.hxx"
+#include "preview.hxx"
+#include "scmod.hxx"
+#include "inputhdl.hxx"
+#include "docsh.hxx"
+#include "tabvwsh.hxx"
+#include "stlpool.hxx"
+#include "editutil.hxx"
+#include "scresid.hxx"
+#include "globstr.hrc"
+#include "sc.hrc"
+
+// fuer Rad-Maus
+#define SC_DELTA_ZOOM 10
+
+#define SC_USERDATA_SEP ';'
+
+// -----------------------------------------------------------------------
+
+#define ScPreviewShell
+#include "scslots.hxx"
+
+TYPEINIT1( ScPreviewShell, SfxViewShell );
+
+SFX_IMPL_INTERFACE( ScPreviewShell, SfxViewShell, ScResId(SCSTR_PREVIEWSHELL) )
+{
+ SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT|SFX_VISIBILITY_STANDARD|
+ SFX_VISIBILITY_SERVER|SFX_VISIBILITY_READONLYDOC,
+ ScResId(RID_OBJECTBAR_PREVIEW));
+ SFX_POPUPMENU_REGISTRATION(ScResId(RID_POPUP_PREVIEW));
+}
+
+SFX_IMPL_VIEWFACTORY( ScPreviewShell, ScResId(STR_NONAME) )
+{
+ SFX_VIEW_REGISTRATION(ScDocShell);
+}
+
+//------------------------------------------------------------------
+
+void ScPreviewShell::Construct( Window* pParent )
+{
+ eZoom = SVX_ZOOM_WHOLEPAGE;
+
+ pCorner = new Window(pParent, WinBits( WB_BORDER ));
+ pCorner->SetBackground( Color( COL_LIGHTGRAY ) );
+
+ pHorScroll = new ScrollBar(pParent, WB_HSCROLL );
+ pVerScroll = new ScrollBar(pParent, WB_VSCROLL);
+
+ pHorScroll->SetEndScrollHdl( LINK( this, ScPreviewShell, ScrollHandler ) );
+ pVerScroll->SetEndScrollHdl( LINK( this, ScPreviewShell, ScrollHandler ) );
+
+ pPreview = new ScPreview( pParent, pDocShell, this );
+
+ SetPool( &SC_MOD()->GetPool() );
+ SetWindow( pPreview );
+ StartListening(*pDocShell);
+ StartListening(*SFX_APP());
+ SfxBroadcaster* pDrawBC = pDocShell->GetDocument()->GetDrawBroadcaster();
+ if (pDrawBC)
+ StartListening(*pDrawBC);
+
+// pPreview->Show(); // wird vom Sfx angezeigt
+ pHorScroll->Show();
+ pVerScroll->Show();
+ pCorner->Show();
+ SetHelpId( HID_SCSHELL_PREVWSH );
+ SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Preview")));
+}
+
+ScPreviewShell::ScPreviewShell( SfxViewFrame* pViewFrame,
+ const ScPreviewShell& rWin ) :
+ SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_CAN_PRINT ),
+ pDocShell( rWin.pDocShell ),
+ aSourceData( rWin.aSourceData )
+{
+ Construct( &pViewFrame->GetWindow() );
+}
+
+ScPreviewShell::ScPreviewShell( SfxViewFrame* pViewFrame,
+ Window *pParent ) :
+ SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_CAN_PRINT ),
+ pDocShell( (ScDocShell*)pViewFrame->GetObjectShell() )
+{
+ Construct( pParent );
+}
+
+ScPreviewShell::ScPreviewShell( SfxViewFrame* pViewFrame,
+ SfxViewShell* pOldSh ) :
+ SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_CAN_PRINT ),
+ pDocShell( (ScDocShell*)pViewFrame->GetObjectShell() )
+{
+ Construct( &pViewFrame->GetWindow() );
+
+ if ( pOldSh && pOldSh->ISA( ScTabViewShell ) )
+ {
+ // store view settings, show table from TabView
+ //! store live ScViewData instead, and update on ScTablesHint?
+ //! or completely forget aSourceData on ScTablesHint?
+
+ ScViewData* pData = ((ScTabViewShell*)pOldSh)->GetViewData();
+ pData->WriteUserData( aSourceData );
+ InitStartTable( pData->GetTabNo() );
+ }
+}
+
+__EXPORT ScPreviewShell::~ScPreviewShell()
+{
+ SfxBroadcaster* pDrawBC = pDocShell->GetDocument()->GetDrawBroadcaster();
+ if (pDrawBC)
+ EndListening(*pDrawBC);
+ EndListening(*SFX_APP());
+ EndListening(*pDocShell);
+
+ SetWindow(0);
+ delete pPreview;
+ delete pHorScroll;
+ delete pVerScroll;
+ delete pCorner;
+
+ // #47435# wie im Writer (SwPagePreView::~SwPagePreView):
+ // Wenn die Preview zugemacht wird, eine andere View des Dokuments suchen und aktivieren
+
+ TypeId aType = TYPE( SfxTopViewFrame );
+ for( SfxViewFrame *pFrame = SfxViewFrame::GetFirst( pDocShell, aType );
+ pFrame; pFrame = SfxViewFrame::GetNext( *pFrame, pDocShell, aType ) )
+ if( pFrame != GetViewFrame() )
+ {
+ // es gibt noch eine weitere Sicht auf unser Dokument, also
+ // aktiviere dieses
+ pFrame->GetFrame()->Appear();
+ break;
+ }
+}
+
+void ScPreviewShell::InitStartTable(USHORT nTab)
+{
+ pPreview->SetPageNo( pPreview->GetFirstPage(nTab) );
+}
+
+//------------------------------------------------------------------
+
+String __EXPORT ScPreviewShell::GetDescription() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(" ** Test ** "));
+}
+
+Size __EXPORT ScPreviewShell::GetOptimalSizePixel() const
+{
+ Size aOptSize(100,100);
+
+ ScTabViewShell* pViewSh = pDocShell->GetBestViewShell();
+
+ if ( pViewSh )
+ {
+ ScViewData* pViewData = pViewSh->GetViewData();
+ USHORT nCurTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pDocShell->GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find(
+ pDoc->GetPageStyle( nCurTab ),
+ SFX_STYLE_FAMILY_PAGE );
+
+ DBG_ASSERT( pStyleSheet, "PageStyle not found :-/" );
+
+ if ( pStyleSheet )
+ {
+ const SfxItemSet& rSet = pStyleSheet->GetItemSet();
+ const SvxSizeItem& rItem = (const SvxSizeItem&)rSet.Get( ATTR_PAGE_SIZE );
+ const Size& rPageSize = rItem.GetSize();
+
+ aOptSize.Width() = (long) (rPageSize.Width() * pViewData->GetPPTX());
+ aOptSize.Height() = (long) (rPageSize.Height() * pViewData->GetPPTY());
+ }
+ }
+ else
+ DBG_ERROR( "TabViewShell not found :-/" );
+
+ return aOptSize;
+}
+
+void __EXPORT ScPreviewShell::AdjustPosSizePixel( const Point &rPos, const Size &rSize )
+{
+ long nBarW = pVerScroll->GetSizePixel().Width();
+ long nBarH = pHorScroll->GetSizePixel().Height();
+ Size aOutSize( rSize.Width()-nBarW, rSize.Height()-nBarH );
+ pPreview->SetPosSizePixel( rPos, aOutSize );
+ pHorScroll->SetPosSizePixel( Point( rPos.X(), rPos.Y() + aOutSize.Height() ),
+ Size( aOutSize.Width(), nBarH ) );
+ pVerScroll->SetPosSizePixel( Point( rPos.X() + aOutSize.Width(), rPos.Y() ),
+ Size( nBarW, aOutSize.Height() ) );
+ pCorner->SetPosSizePixel( Point( rPos.X() + aOutSize.Width(), rPos.Y() + aOutSize.Height() ),
+ Size( nBarW, nBarH ) );
+
+ if ( SVX_ZOOM_WHOLEPAGE == eZoom )
+ pPreview->SetZoom( pPreview->GetOptimalZoom(FALSE) );
+ else if ( SVX_ZOOM_PAGEWIDTH == eZoom )
+ pPreview->SetZoom( pPreview->GetOptimalZoom(TRUE) );
+}
+
+void __EXPORT ScPreviewShell::InnerResizePixel( const Point &rOfs, const Size &rSize )
+{
+ AdjustPosSizePixel( rOfs,rSize );
+}
+
+void __EXPORT ScPreviewShell::OuterResizePixel( const Point &rOfs, const Size &rSize )
+{
+ AdjustPosSizePixel( rOfs,rSize );
+}
+
+void ScPreviewShell::UpdateScrollBars()
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTab = pPreview->GetTab();
+
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find( pDoc->GetPageStyle( nTab ),
+ SFX_STYLE_FAMILY_PAGE );
+ DBG_ASSERT(pStyleSheet,"StyleSheet nicht gefunden");
+ if (!pStyleSheet) return;
+ const SfxItemSet* pParamSet = &pStyleSheet->GetItemSet();
+
+ Size aPageSize = ((const SvxSizeItem&) pParamSet->Get(ATTR_PAGE_SIZE)).GetSize();
+ aPageSize.Width() = (long) (aPageSize.Width() * HMM_PER_TWIPS );
+ aPageSize.Height() = (long) (aPageSize.Height() * HMM_PER_TWIPS );
+ Size aWindowSize = pPreview->GetOutputSize();
+
+ Point aOfs = pPreview->GetOffset();
+ long nMaxPos;
+
+ pHorScroll->SetRange( Range( 0, aPageSize.Width() ) );
+ pHorScroll->SetLineSize( aWindowSize.Width() / 16 );
+ pHorScroll->SetPageSize( aWindowSize.Width() );
+ pHorScroll->SetVisibleSize( aWindowSize.Width() );
+ nMaxPos = aPageSize.Width() - aWindowSize.Width();
+ if (nMaxPos<0) nMaxPos = 0;
+ if (aOfs.X() > nMaxPos)
+ {
+ aOfs.X() = nMaxPos;
+ pPreview->SetXOffset(nMaxPos);
+ }
+ pHorScroll->SetThumbPos( aOfs.X() );
+
+ pVerScroll->SetRange( Range( 0, aPageSize.Height() ) );
+ pVerScroll->SetLineSize( aWindowSize.Height() / 16 );
+ pVerScroll->SetPageSize( aWindowSize.Height() );
+ pVerScroll->SetVisibleSize( aWindowSize.Height() );
+ nMaxPos = aPageSize.Height() - aWindowSize.Height();
+ if (nMaxPos<0) nMaxPos = 0;
+ if (aOfs.Y() > nMaxPos)
+ {
+ aOfs.Y() = nMaxPos;
+ pPreview->SetYOffset(nMaxPos);
+ }
+ pVerScroll->SetThumbPos( aOfs.Y() );
+}
+
+IMPL_LINK (ScPreviewShell,ScrollHandler, ScrollBar* ,pScroll )
+{
+ long nDelta = pScroll->GetDelta();
+ long nPos = pScroll->GetThumbPos();
+
+ BOOL bHoriz = ( pScroll == pHorScroll );
+ if (bHoriz)
+ pPreview->SetXOffset( nPos );
+ else
+ pPreview->SetYOffset( nPos );
+
+ return 0;
+}
+
+BOOL ScPreviewShell::ScrollCommand( const CommandEvent& rCEvt )
+{
+ BOOL bDone = FALSE;
+ const CommandWheelData* pData = rCEvt.GetWheelData();
+ if ( pData && pData->GetMode() == COMMAND_WHEEL_ZOOM )
+ {
+ long nOld = pPreview->GetZoom();
+ long nNew = nOld;
+ if ( pData->GetDelta() < 0 )
+ nNew = Max( (long) MINZOOM, (long)( nOld - SC_DELTA_ZOOM ) );
+ else
+ nNew = Min( (long) MAXZOOM, (long)( nOld + SC_DELTA_ZOOM ) );
+
+ if ( nNew != nOld )
+ {
+ eZoom = SVX_ZOOM_PERCENT;
+ pPreview->SetZoom( nNew );
+ }
+
+ bDone = TRUE;
+ }
+ else
+ {
+ bDone = pPreview->HandleScrollCommand( rCEvt, pHorScroll, pVerScroll );
+
+ //! ist das noetig ????
+ if ( bDone )
+ {
+ Point aOld = pPreview->GetOffset();
+ long nHorThunb = pHorScroll->GetThumbPos();
+ if ( nHorThunb != aOld.X() )
+ pPreview->SetXOffset( nHorThunb );
+ long nVerThunb = pVerScroll->GetThumbPos();
+ if ( nVerThunb != aOld.Y() )
+ pPreview->SetYOffset( nVerThunb );
+ }
+ }
+
+ return bDone;
+}
+
+SfxPrinter* __EXPORT ScPreviewShell::GetPrinter( BOOL bCreate )
+{
+ // Drucker ist immer da (wird fuer die FontListe schon beim Starten angelegt)
+ return pDocShell->GetPrinter();
+}
+
+USHORT __EXPORT ScPreviewShell::SetPrinter( SfxPrinter *pNewPrinter, USHORT nDiffFlags )
+{
+ return pDocShell->SetPrinter( pNewPrinter, nDiffFlags );
+}
+
+PrintDialog* __EXPORT ScPreviewShell::CreatePrintDialog( Window* pParent )
+{
+ pDocShell->GetDocument()->SetPrintOptions(); // Optionen aus OFA am Printer setzen
+ SfxPrinter* pPrinter = GetPrinter();
+
+ const long nCurPage = pPreview->GetPageNo()+1;
+ const long nDocPageMax = pPreview->GetTotalPages();
+#ifndef VCL
+ PrintDialog* pDlg = new PrintDialog( pParent,
+ WinBits(WB_SVLOOK|WB_STDMODAL) );
+#else
+ PrintDialog* pDlg = new PrintDialog( pParent );
+#endif
+// wenn zu langsam wieder einbauen
+// if ( pPreview->AllTested() )
+// nPageMax = pPreview->GetTotalPages();
+
+ if ( nDocPageMax > 0 )
+ pDlg->SetRangeText( String::CreateFromInt32( nCurPage ) );
+
+ pDlg->EnableRange ( PRINTDIALOG_ALL );
+ pDlg->EnableRange ( PRINTDIALOG_RANGE );
+ pDlg->SetFirstPage ( 1 );
+ pDlg->SetMinPage ( 1 );
+ pDlg->SetLastPage ( (USHORT)nDocPageMax );
+ pDlg->SetMaxPage ( (USHORT)nDocPageMax );
+ pDlg->EnableCollate ();
+
+ // Selektion hier nicht
+
+ return pDlg;
+}
+
+void __EXPORT ScPreviewShell::PreparePrint( PrintDialog* pPrintDialog )
+{
+ SfxViewShell::PreparePrint( pPrintDialog );
+ pDocShell->PreparePrint( pPrintDialog, NULL );
+}
+
+USHORT __EXPORT ScPreviewShell::Print( SfxProgress& rProgress, PrintDialog* pPrintDialog )
+{
+ pDocShell->GetDocument()->SetPrintOptions(); // Optionen aus OFA am Printer setzen
+
+ SfxViewShell::Print( rProgress, pPrintDialog );
+ pDocShell->Print( rProgress, pPrintDialog, NULL );
+
+ return 0;
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ScPreviewShell::Activate(BOOL bMDI)
+{
+ SfxViewShell::Activate(bMDI);
+
+ //! Basic etc. -> auslagern in eigene Datei (s. tabvwsh4)
+
+ if (bMDI)
+ {
+ // InputHdl ist jetzt meistens Null, keine Assertion mehr!
+ ScInputHandler* pInputHdl = SC_MOD()->GetInputHdl();
+ if ( pInputHdl )
+ pInputHdl->NotifyChange( NULL );
+ }
+}
+
+void __EXPORT ScPreviewShell::Deactivate(BOOL bMDI)
+{
+ SfxViewShell::Deactivate(bMDI);
+
+ if (bMDI)
+ {
+ }
+}
+
+//------------------------------------------------------------------------
+
+void __EXPORT ScPreviewShell::Execute( SfxRequest& rReq )
+{
+ USHORT nSlot = rReq.GetSlot();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+
+ switch ( nSlot )
+ {
+ case SID_FORMATPAGE:
+ case SID_STATUS_PAGESTYLE:
+ case SID_HFEDIT:
+ pDocShell->ExecutePageStyle( *this, rReq, pPreview->GetTab() );
+ break;
+ case SID_REPAINT:
+ pPreview->Invalidate();
+ rReq.Done();
+ break;
+ case SID_PREV_TABLE: // Accelerator
+ case SID_PREVIEW_PREVIOUS:
+ {
+ long nPage = pPreview->GetPageNo();
+ long nTotal = pPreview->GetTotalPages();
+ if (nTotal && nPage > 0)
+ pPreview->SetPageNo( nPage-1 );
+ }
+ break;
+ case SID_NEXT_TABLE: // Accelerator
+ case SID_PREVIEW_NEXT:
+ {
+ BOOL bAllTested = pPreview->AllTested();
+ long nPage = pPreview->GetPageNo();
+ long nTotal = pPreview->GetTotalPages();
+ if (nTotal && (nPage+1 < nTotal || !bAllTested))
+ pPreview->SetPageNo( nPage+1 );
+ }
+ break;
+ case SID_CURSORTOPOFFILE: // Accelerator
+ case SID_PREVIEW_FIRST:
+ {
+ long nPage = pPreview->GetPageNo();
+ long nTotal = pPreview->GetTotalPages();
+ if (nTotal && nPage != 0)
+ pPreview->SetPageNo( 0 );
+ }
+ break;
+ case SID_CURSORENDOFFILE: // Accelerator
+ case SID_PREVIEW_LAST:
+ {
+ if (!pPreview->AllTested())
+ pPreview->CalcAll();
+
+ long nPage = pPreview->GetPageNo();
+ long nTotal = pPreview->GetTotalPages();
+ if (nTotal && nPage+1 != nTotal)
+ pPreview->SetPageNo( nTotal-1 );
+ }
+ break;
+ case SID_ATTR_ZOOM:
+ case FID_SCALE:
+ {
+ USHORT nZoom = 100;
+ BOOL bCancel = FALSE;
+
+ eZoom = SVX_ZOOM_PERCENT;
+
+ if ( pReqArgs )
+ {
+
+ const SvxZoomItem& rZoomItem = (const SvxZoomItem&)
+ pReqArgs->Get(SID_ATTR_ZOOM);
+
+ eZoom = rZoomItem.GetType();
+ nZoom = rZoomItem.GetValue();
+ }
+ else
+ {
+ SfxItemSet aSet ( GetPool(), SID_ATTR_ZOOM, SID_ATTR_ZOOM );
+ SvxZoomItem aZoomItem( SVX_ZOOM_PERCENT, pPreview->GetZoom(), SID_ATTR_ZOOM );
+
+ aSet.Put( aZoomItem );
+ SvxZoomDialog* pDlg = pDlg = new SvxZoomDialog( NULL, aSet );
+ pDlg->SetLimits( 20, 400 );
+ pDlg->HideButton( ZOOMBTN_OPTIMAL );
+ bCancel = ( RET_CANCEL == pDlg->Execute() );
+
+ if ( !bCancel )
+ {
+ const SvxZoomItem& rZoomItem = (const SvxZoomItem&)
+ pDlg->GetOutputItemSet()->
+ Get( SID_ATTR_ZOOM );
+
+ eZoom = rZoomItem.GetType();
+ nZoom = rZoomItem.GetValue();
+ }
+
+ delete pDlg;
+ }
+
+ if ( !bCancel )
+ {
+ switch ( eZoom )
+ {
+ case SVX_ZOOM_OPTIMAL:
+ case SVX_ZOOM_WHOLEPAGE:
+ nZoom = pPreview->GetOptimalZoom(FALSE);
+ break;
+ case SVX_ZOOM_PAGEWIDTH:
+ nZoom = pPreview->GetOptimalZoom(TRUE);
+ break;
+ }
+
+ pPreview->SetZoom( nZoom );
+ rReq.Done();
+ }
+ }
+ break;
+ case SID_PREVIEW_ZOOMIN:
+ {
+ USHORT nNew = pPreview->GetZoom() + 20 ;
+ nNew -= nNew % 20;
+ pPreview->SetZoom( nNew );
+ eZoom = SVX_ZOOM_PERCENT;
+ rReq.Done();
+ }
+ break;
+ case SID_PREVIEW_ZOOMOUT:
+ {
+ USHORT nNew = pPreview->GetZoom() - 1;
+ nNew -= nNew % 20;
+ pPreview->SetZoom( nNew );
+ eZoom = SVX_ZOOM_PERCENT;
+ rReq.Done();
+ }
+ break;
+ case SID_PRINTPREVIEW:
+ // print preview is now always in the same frame as the tab view
+ // -> always switch this frame back to normal view
+ // (ScTabViewShell ctor reads stored view data)
+
+ GetViewFrame()->GetBindings().Execute( SID_VIEWSHELL0, NULL, 0, SFX_CALLMODE_ASYNCHRON );
+ break;
+ case SID_CURSORPAGEUP:
+ case SID_CURSORPAGEDOWN:
+ case SID_CURSORHOME:
+ case SID_CURSOREND:
+ case SID_CURSORUP:
+ case SID_CURSORDOWN:
+ case SID_CURSORLEFT:
+ case SID_CURSORRIGHT:
+ DoScroll( nSlot );
+ break;
+
+ default:
+ break;
+ }
+}
+
+void __EXPORT ScPreviewShell::GetState( SfxItemSet& rSet )
+{
+ pPreview->SetInGetState(TRUE);
+
+ USHORT nTab = pPreview->GetTab();
+ long nPage = pPreview->GetPageNo();
+ long nTotal = pPreview->GetTotalPages();
+ USHORT nZoom = pPreview->GetZoom();
+ BOOL bAllTested = pPreview->AllTested();
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch (nWhich)
+ {
+ case SID_STATUS_PAGESTYLE:
+ case SID_HFEDIT:
+ pDocShell->GetStatePageStyle( *this, rSet, nTab );
+ break;
+ case SID_UNDO:
+ case SID_REDO:
+ case SID_REPEAT:
+ rSet.DisableItem(nWhich);
+ break;
+ case SID_PREVIEW_PREVIOUS:
+ case SID_PREVIEW_FIRST:
+ if (!nTotal || nPage==0)
+ rSet.DisableItem(nWhich);
+ break;
+ case SID_PREVIEW_NEXT:
+ case SID_PREVIEW_LAST:
+ if (bAllTested)
+ if (!nTotal || nPage==nTotal-1)
+ rSet.DisableItem(nWhich);
+ break;
+ case SID_PREVIEW_ZOOMIN:
+ if (nZoom >= 400)
+ rSet.DisableItem(nWhich);
+ break;
+ case SID_PREVIEW_ZOOMOUT:
+ if (nZoom <= 20)
+ rSet.DisableItem(nWhich);
+ break;
+ case SID_ATTR_ZOOM:
+ {
+ SvxZoomItem aZoom( eZoom, nZoom, nWhich );
+ aZoom.SetValueSet( SVX_ZOOM_ENABLE_ALL & ~SVX_ZOOM_ENABLE_OPTIMAL );
+ rSet.Put( aZoom );
+ }
+ break;
+ case SID_STATUS_DOCPOS:
+ rSet.Put( SfxStringItem( nWhich, pPreview->GetPosString() ) );
+ break;
+ case SID_PRINTPREVIEW:
+ rSet.Put( SfxBoolItem( nWhich, TRUE ) );
+ break;
+ case SID_FORMATPAGE:
+ //! bei geschuetzten Tabellen ???
+ if (pDocShell->IsReadOnly())
+ rSet.DisableItem( nWhich );
+ break;
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+
+ pPreview->SetInGetState(FALSE);
+}
+
+void ScPreviewShell::FillFieldData( ScHeaderFieldData& rData )
+{
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTab = pPreview->GetTab();
+ pDoc->GetName( nTab, rData.aTabName );
+
+ rData.aTitle = pDocShell->GetTitle();
+ rData.aLongDocName = pDocShell->GetMedium()->GetName();
+ if ( !rData.aLongDocName.Len() )
+ rData.aLongDocName = rData.aTitle;
+ rData.aShortDocName = INetURLObject( rData.aLongDocName ).GetName();
+ rData.nPageNo = pPreview->GetPageNo() + 1;
+
+ BOOL bAllTested = pPreview->AllTested();
+ if (bAllTested)
+ rData.nTotalPages = pPreview->GetTotalPages();
+ else
+ rData.nTotalPages = 99;
+
+ // eNumType kennt der Dialog selber
+}
+
+void __EXPORT ScPreviewShell::WriteUserData(String& rData, BOOL bBrowse)
+{
+ // nZoom
+ // nPageNo
+
+ rData = String::CreateFromInt32(pPreview->GetZoom());
+ rData += (sal_Unicode) SC_USERDATA_SEP;
+ rData += String::CreateFromInt32(pPreview->GetPageNo());
+
+ if ( aSourceData.Len() )
+ {
+ // add settings from tabview in parentheses
+
+ rData += (sal_Unicode) SC_USERDATA_SEP;
+ rData += (sal_Unicode) '(';
+ rData += aSourceData;
+ rData += (sal_Unicode) ')';
+ }
+}
+
+void __EXPORT ScPreviewShell::ReadUserData(const String& rData, BOOL bBrowse)
+{
+ xub_StrLen nCount = rData.GetTokenCount();
+ if (nCount)
+ {
+ xub_StrLen nIndex = 0;
+ pPreview->SetZoom(rData.GetToken( 0, SC_USERDATA_SEP, nIndex ).ToInt32());
+ pPreview->SetPageNo(rData.GetToken( 0, SC_USERDATA_SEP, nIndex ).ToInt32());
+ eZoom = SVX_ZOOM_PERCENT;
+
+ // tabview data is enclosed in parentheses
+
+ String aTabStr = rData.Copy( nIndex );
+ if ( aTabStr.GetChar(0) == '(' )
+ {
+ xub_StrLen nParPos = aTabStr.Search( ')' );
+ if ( nParPos != STRING_NOTFOUND )
+ {
+ // get the string in the parentheses
+ aSourceData = aTabStr.Copy( 1, nParPos - 1 );
+ }
+ }
+ }
+}
+
+void ScPreviewShell::DoScroll( USHORT nMode )
+{
+ Point aCurPos, aPrevPos;
+
+ long nHRange = pHorScroll->GetRange().Max();
+ long nHLine = pHorScroll->GetLineSize();
+ long nHPage = pHorScroll->GetPageSize();
+ long nVRange = pVerScroll->GetRange().Max();
+ long nVLine = pVerScroll->GetLineSize();
+ long nVPage = pVerScroll->GetPageSize();
+
+ aCurPos.X() = pHorScroll->GetThumbPos();
+ aCurPos.Y() = pVerScroll->GetThumbPos();
+ aPrevPos = aCurPos;
+
+ switch( nMode )
+ {
+ case SID_CURSORUP:
+ aCurPos.Y() -= nVLine;
+ break;
+ case SID_CURSORDOWN:
+ aCurPos.Y() += nVLine;
+ break;
+ case SID_CURSORLEFT:
+ aCurPos.X() -= nHLine;
+ break;
+ case SID_CURSORRIGHT:
+ aCurPos.X() += nHLine;
+ break;
+ case SID_CURSORPAGEUP:
+ aCurPos.Y() -= nVPage;
+ break;
+ case SID_CURSORPAGEDOWN:
+ aCurPos.Y() += nVPage;
+ break;
+ case SID_CURSORHOME:
+ aCurPos.Y() = 0;
+ aCurPos.X() = 0;
+ break;
+ case SID_CURSOREND:
+ aCurPos.Y() = nVRange;
+ aCurPos.X() = nHRange;
+ break;
+ }
+
+ // nHRange-nHPage kann negativ sein, deshalb Abfrage auf < 0 hinterher
+
+ if( aCurPos.Y() > (nVRange-nVPage) ) aCurPos.Y() = (nVRange-nVPage);
+ if( aCurPos.Y() < 0 ) aCurPos.Y() = 0;
+ if( aCurPos.X() > (nHRange-nHPage) ) aCurPos.X() = (nHRange-nHPage);
+ if( aCurPos.X() < 0 ) aCurPos.X() = 0;
+
+ if( aCurPos.Y() != aPrevPos.Y() )
+ {
+ pVerScroll->SetThumbPos( aCurPos.Y() );
+ pPreview->SetYOffset( aCurPos.Y() );
+ }
+
+ if( aCurPos.X() != aPrevPos.X() )
+ {
+ pHorScroll->SetThumbPos( aCurPos.X() );
+ pPreview->SetXOffset( aCurPos.X() );
+ }
+
+}
+
+
+
diff --git a/sc/source/ui/view/prevwsh2.cxx b/sc/source/ui/view/prevwsh2.cxx
new file mode 100644
index 000000000000..cba1b283f325
--- /dev/null
+++ b/sc/source/ui/view/prevwsh2.cxx
@@ -0,0 +1,392 @@
+/*************************************************************************
+ *
+ * $RCSfile: prevwsh2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX ***
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX ***
+//#define _SVTREEBOX_HXX ***
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX ***
+//#define _SFXOBJFACE_HXX ***
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX ***
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX ***
+//#define _SFXDOCTDLG_HXX ***
+//#define _SFX_TEMPLDLG_HXX ***
+//#define _SFXNEW_HXX ***
+#define _SFXDOCMAN_HXX
+#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+//#define _ARGS_HXX ***
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+#define _SDR_NOTRANSFORM
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+#define _SDR_NOUNDO
+#define _SDR_NOXOUTDEV
+
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+//#define _SIDLL_HXX ***
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdmodel.hxx>
+#include <svtools/smplhint.hxx>
+
+#include "prevwsh.hxx"
+#include "docsh.hxx"
+#include "preview.hxx"
+#include "hints.hxx"
+#include "sc.hrc"
+
+// STATIC DATA -----------------------------------------------------------
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScPreviewShell::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType )
+{
+ BOOL bDataChanged = FALSE;
+
+ if (rHint.ISA(SfxSimpleHint))
+ {
+ ULONG nSlot = ((const SfxSimpleHint&)rHint).GetId();
+ switch ( nSlot )
+ {
+ case FID_DATACHANGED:
+ bDataChanged = TRUE;
+ break;
+ case SC_HINT_DRWLAYER_NEW:
+ {
+ SfxBroadcaster* pDrawBC = pDocShell->GetDocument()->GetDrawBroadcaster();
+ if (pDrawBC)
+ StartListening(*pDrawBC);
+ }
+ break;
+ }
+ }
+ else if (rHint.ISA(ScPaintHint))
+ {
+ if ( ((const ScPaintHint&)rHint).GetPrintFlag() )
+ {
+ USHORT nParts = ((const ScPaintHint&)rHint).GetParts();
+ if (nParts & ( PAINT_GRID | PAINT_LEFT | PAINT_TOP | PAINT_SIZE ))
+ bDataChanged = TRUE;
+ }
+ }
+ else if (rHint.ISA(SdrHint))
+ {
+ if (((const SdrHint&)rHint).IsNeedRepaint())
+ bDataChanged = TRUE;
+ }
+
+ if (bDataChanged)
+ pPreview->DataChanged(TRUE);
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/printfun.cxx b/sc/source/ui/view/printfun.cxx
new file mode 100644
index 000000000000..55001cacb351
--- /dev/null
+++ b/sc/source/ui/view/printfun.cxx
@@ -0,0 +1,2721 @@
+/*************************************************************************
+ *
+ * $RCSfile: printfun.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/svxids.hrc>
+#include <svx/adjitem.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/brshitem.hxx>
+#include <svx/editstat.hxx> // EE_CNTRL_RTFSTYLESHEETS
+#include <svx/fmview.hxx>
+#include <svx/lrspitem.hxx>
+#include <svx/paperinf.hxx>
+#include <svx/pbinitem.hxx>
+#include <svx/shaditem.hxx>
+#include <svx/sizeitem.hxx>
+#include <svx/svdpagv.hxx>
+#include <svx/ulspitem.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/printer.hxx>
+#include <sfx2/progress.hxx>
+#include <tools/multisel.hxx>
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+
+#ifdef MAC
+#define RGBColor MAC_RGBColor
+#include <svx/xoutbmp.hxx>
+#undef RGBColor
+#else
+#include <svx/xoutbmp.hxx>
+#endif
+
+
+//#if defined( WIN ) || defined( WNT )
+//#include <svwin.h>
+//#endif
+
+
+#include "editutil.hxx"
+#include "docsh.hxx"
+#include "output.hxx"
+#include "viewdata.hxx"
+#include "viewopti.hxx"
+#include "stlpool.hxx"
+#include "pagepar.hxx"
+#include "attrib.hxx"
+#include "patattr.hxx"
+#include "docpool.hxx"
+#include "dociter.hxx"
+#include "cell.hxx"
+#include "drawutil.hxx"
+#include "globstr.hrc"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "pagedata.hxx"
+
+#define _PRINTFUN_CXX
+#include "printfun.hxx"
+
+
+
+#define ZOOM_MIN 10
+
+#define GET_BOOL(set,which) ((const SfxBoolItem&)(set)->Get((which))).GetValue()
+#define GET_USHORT(set,which) ((const SfxUInt16Item&)(set)->Get((which))).GetValue()
+#define GET_SHOW(set,which) ( VOBJ_MODE_SHOW == ScVObjMode( ((const ScViewObjectModeItem&)(set)->Get((which))).GetValue()) )
+
+//------------------------------------------------------------------------
+
+ScPageRowEntry::ScPageRowEntry(const ScPageRowEntry& r)
+{
+ nStartRow = r.nStartRow;
+ nEndRow = r.nEndRow;
+ nPagesX = r.nPagesX;
+ if (r.pHidden && nPagesX)
+ {
+ pHidden = new BOOL[nPagesX];
+ memcpy( pHidden, r.pHidden, nPagesX * sizeof(BOOL) );
+ }
+ else
+ pHidden = NULL;
+}
+
+const ScPageRowEntry& ScPageRowEntry::operator=(const ScPageRowEntry& r)
+{
+ delete[] pHidden;
+
+ nStartRow = r.nStartRow;
+ nEndRow = r.nEndRow;
+ nPagesX = r.nPagesX;
+ if (r.pHidden && nPagesX)
+ {
+ pHidden = new BOOL[nPagesX];
+ memcpy( pHidden, r.pHidden, nPagesX * sizeof(BOOL) );
+ }
+ else
+ pHidden = NULL;
+
+ return *this;
+}
+
+void ScPageRowEntry::SetPagesX(USHORT nNew)
+{
+ if (pHidden)
+ {
+ DBG_ERROR("SetPagesX nicht nach SetHidden");
+ delete[] pHidden;
+ pHidden = NULL;
+ }
+ nPagesX = nNew;
+}
+
+void ScPageRowEntry::SetHidden(USHORT nX)
+{
+ if ( nX < nPagesX )
+ {
+ if ( nX+1 == nPagesX ) // letzte Seite?
+ --nPagesX;
+ else
+ {
+ if (!pHidden)
+ {
+ pHidden = new BOOL[nPagesX];
+ memset( pHidden, FALSE, nPagesX * sizeof(BOOL) );
+ }
+ pHidden[nX] = TRUE;
+ }
+ }
+}
+
+BOOL ScPageRowEntry::IsHidden(USHORT nX) const
+{
+ return nX>=nPagesX || ( pHidden && pHidden[nX] ); //! inline?
+}
+
+USHORT ScPageRowEntry::CountVisible() const
+{
+ if ( pHidden )
+ {
+ USHORT nVis = 0;
+ for (USHORT i=0; i<nPagesX; i++)
+ if (!pHidden[i])
+ ++nVis;
+ return nVis;
+ }
+ else
+ return nPagesX;
+}
+
+//------------------------------------------------------------------------
+
+long lcl_LineTotal(const SvxBorderLine* pLine)
+{
+ return pLine ? ( pLine->GetOutWidth() + pLine->GetInWidth() + pLine->GetDistance() ) : 0;
+}
+
+void ScPrintFunc::Construct()
+{
+ pDoc = pDocShell->GetDocument();
+
+ SfxPrinter* pDocPrinter = pDoc->GetPrinter(); // auch fuer Preview den Drucker nehmen
+ if (pDocPrinter)
+ aOldPrinterMode = pDocPrinter->GetMapMode();
+
+ // einheitlicher MapMode ueber alle Aufrufe (z.B. Repaint !!!),
+ // weil die EditEngine sonst unterschiedliche Texthoehen liefert
+ pDev->SetMapMode(MAP_PIXEL);
+
+ pPageEndX = NULL;
+ pPageEndY = NULL;
+ pPageRows = NULL;
+ pBorderItem = NULL;
+ pBackgroundItem = NULL;
+ pShadowItem = NULL;
+
+ pEditEngine = NULL;
+ pEditDefaults = NULL;
+
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find(
+ pDoc->GetPageStyle( nPrintTab ),
+ SFX_STYLE_FAMILY_PAGE );
+ if (pStyleSheet)
+ pParamSet = &pStyleSheet->GetItemSet();
+ else
+ {
+ DBG_ERROR("Seitenvorlage nicht gefunden" );
+ pParamSet = NULL;
+ }
+
+ if (!bState)
+ nZoom = 100;
+ nManualZoom = 100;
+ bClearWin = FALSE;
+
+ InitParam();
+
+ pPageData = NULL; // wird nur zur Initialisierung gebraucht
+}
+
+ScPrintFunc::ScPrintFunc( ScDocShell* pShell, SfxPrinter* pNewPrinter, USHORT nTab,
+ long nPage, long nDocP, const ScRange* pArea,
+ ScPageBreakData* pData )
+ : pDocShell ( pShell ),
+ pPrinter ( pNewPrinter ),
+ pDrawView ( NULL ),
+ nPrintTab ( nTab ),
+ nPageStart ( nPage ),
+ nDocPages ( nDocP ),
+ pUserArea ( pArea ),
+ pPageData ( pData ),
+ nTotalPages ( 0 ),
+ nTabPages ( 0 ),
+ bState ( FALSE ),
+ bPrintCurrentTable ( FALSE ),
+ bMultiArea ( FALSE )
+{
+ pDev = pPrinter;
+ aSrcOffset = pPrinter->PixelToLogic( pPrinter->GetPageOffsetPixel(), MAP_100TH_MM );
+ Construct();
+}
+
+ScPrintFunc::ScPrintFunc( ScDocShell* pShell, Window* pWindow, USHORT nTab,
+ long nPage, long nDocP, const ScRange* pArea )
+ : pDocShell ( pShell ),
+ pPrinter ( NULL ),
+ pDrawView ( NULL ),
+ nPrintTab ( nTab ),
+ nPageStart ( nPage ),
+ nDocPages ( nDocP ),
+ pUserArea ( pArea ),
+ pPageData ( NULL ),
+ nTotalPages ( 0 ),
+ nTabPages ( 0 ),
+ bState ( FALSE ),
+ bPrintCurrentTable ( FALSE ),
+ bMultiArea ( FALSE )
+{
+ pDev = pWindow;
+ Construct();
+}
+
+ScPrintFunc::ScPrintFunc( ScDocShell* pShell, Window* pWindow,
+ const ScPrintState& rState )
+ : pDocShell ( pShell ),
+ pPrinter ( NULL ),
+ pDrawView ( NULL ),
+ pUserArea ( NULL ),
+ pPageData ( NULL ),
+ bPrintCurrentTable ( FALSE ),
+ bMultiArea ( FALSE )
+{
+ pDev = pWindow;
+
+ nPrintTab = rState.nPrintTab;
+ nStartCol = rState.nStartCol;
+ nStartRow = rState.nStartRow;
+ nEndCol = rState.nEndCol;
+ nEndRow = rState.nEndRow;
+ nZoom = rState.nZoom;
+ nPagesX = rState.nPagesX;
+ nPagesY = rState.nPagesY;
+ nTabPages = rState.nTabPages;
+ nTotalPages = rState.nTotalPages;
+ nPageStart = rState.nPageStart;
+ nDocPages = rState.nDocPages;
+ bState = TRUE;
+
+ Construct();
+}
+
+void ScPrintFunc::GetPrintState( ScPrintState& rState )
+{
+ rState.nPrintTab = nPrintTab;
+ rState.nStartCol = nStartCol;
+ rState.nStartRow = nStartRow;
+ rState.nEndCol = nEndCol;
+ rState.nEndRow = nEndRow;
+ rState.nZoom = nZoom;
+ rState.nPagesX = nPagesX;
+ rState.nPagesY = nPagesY;
+ rState.nTabPages = nTabPages;
+ rState.nTotalPages = nTotalPages;
+ rState.nPageStart = nPageStart;
+ rState.nDocPages = nDocPages;
+}
+
+void ScPrintFunc::FillPageData()
+{
+ if (pPageData)
+ {
+ USHORT nCount = pPageData->GetCount();
+ ScPrintRangeData& rData = pPageData->GetData(nCount); // hochzaehlen
+
+ rData.SetPrintRange( ScRange( nStartCol, nStartRow, nPrintTab,
+ nEndCol, nEndRow, nPrintTab ) );
+ rData.SetPagesX( nPagesX, pPageEndX );
+ rData.SetPagesY( nTotalY, pPageEndY );
+
+ // Einstellungen
+ rData.SetTopDown( aTableParam.bTopDown );
+ rData.SetAutomatic( !aAreaParam.bPrintArea );
+ }
+}
+
+ScPrintFunc::~ScPrintFunc()
+{
+ ScTripel* pTripel = (ScTripel*) aNotePosList.First();
+ while (pTripel)
+ {
+ delete pTripel;
+ pTripel = (ScTripel*) aNotePosList.Next();
+ }
+ aNotePosList.Clear();
+
+ delete[] pPageEndX;
+ delete[] pPageEndY;
+ delete[] pPageRows;
+ delete pEditDefaults;
+ delete pEditEngine;
+
+ // Druckereinstellungen werden jetzt von aussen wiederhergestellt
+
+ // #64294# Fuer DrawingLayer/Charts muss der MapMode am Drucker (RefDevice) immer stimmen
+ SfxPrinter* pDocPrinter = pDoc->GetPrinter(); // auch fuer Preview den Drucker nehmen
+ if (pDocPrinter)
+ pDocPrinter->SetMapMode(aOldPrinterMode);
+}
+
+void ScPrintFunc::SetDrawView( FmFormView* pNew )
+{
+ pDrawView = pNew;
+}
+
+//
+// Ausgabe auf Device (static)
+//
+// wird benutzt fuer:
+// - Clipboard/Bitmap
+// - Ole-Object (DocShell::Draw)
+// - Vorschau bei Vorlagen
+
+void ScPrintFunc::DrawToDev( ScDocument* pDoc, OutputDevice* pDev, double nPrintFactor,
+ const Rectangle& rBound, ScViewData* pViewData, BOOL bMetaFile )
+{
+ //! nPrintFactor auswerten !!!
+
+ USHORT nTab = 0;
+ if (pViewData)
+ nTab = pViewData->GetTabNo();
+
+ BOOL bDoGrid, bNullVal, bFormula;
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find( pDoc->GetPageStyle( nTab ), SFX_STYLE_FAMILY_PAGE );
+ if (pStyleSheet)
+ {
+ SfxItemSet& rSet = pStyleSheet->GetItemSet();
+ bDoGrid = ((const SfxBoolItem&)rSet.Get(ATTR_PAGE_GRID)).GetValue();
+ bNullVal = ((const SfxBoolItem&)rSet.Get(ATTR_PAGE_NULLVALS)).GetValue();
+ bFormula = ((const SfxBoolItem&)rSet.Get(ATTR_PAGE_FORMULAS)).GetValue();
+ }
+ else
+ {
+ const ScViewOptions& rOpt = pDoc->GetViewOptions();
+ bDoGrid = rOpt.GetOption(VOPT_GRID);
+ bNullVal = rOpt.GetOption(VOPT_NULLVALS);
+ bFormula = rOpt.GetOption(VOPT_FORMULAS);
+ }
+
+ MapMode aMode = pDev->GetMapMode();
+
+ Rectangle aRect = rBound;
+
+ if (aRect.Right() < aRect.Left() || aRect.Bottom() < aRect.Top())
+ aRect = Rectangle( Point(), pDev->GetOutputSize() );
+
+ USHORT nX1 = 0;
+ USHORT nY1 = 0;
+ USHORT nX2 = OLE_STD_CELLS_X - 1;
+ USHORT nY2 = OLE_STD_CELLS_Y - 1;
+ if (bMetaFile)
+ {
+ ScRange aRange = pDoc->GetRange( nTab, rBound );
+ nX1 = aRange.aStart.Col();
+ nY1 = aRange.aStart.Row();
+ nX2 = aRange.aEnd.Col();
+ nY2 = aRange.aEnd.Row();
+ }
+ else if (pViewData)
+ {
+ ScSplitPos eWhich = pViewData->GetActivePart();
+ ScHSplitPos eHWhich = WhichH(eWhich);
+ ScVSplitPos eVWhich = WhichV(eWhich);
+ nX1 = pViewData->GetPosX(eHWhich);
+ nY1 = pViewData->GetPosY(eVWhich);
+ nX2 = nX1 + pViewData->VisibleCellsX(eHWhich);
+ if (nX2>nX1) --nX2;
+ nY2 = nY1 + pViewData->VisibleCellsY(eVWhich);
+ if (nY2>nY1) --nY2;
+ }
+
+ if (nX1 > MAXCOL) nX1 = MAXCOL;
+ if (nX2 > MAXCOL) nX2 = MAXCOL;
+ if (nY1 > MAXROW) nY1 = MAXROW;
+ if (nY2 > MAXROW) nY2 = MAXROW;
+
+ USHORT i;
+ long nDevSizeX = aRect.Right()-aRect.Left()+1;
+ long nDevSizeY = aRect.Bottom()-aRect.Top()+1;
+
+ Rectangle aLines;
+ ScRange aRange( nX1,nY1,nTab, nX2,nY2,nTab );
+ BOOL bAddLines = pDoc->HasLines( aRange, aLines );
+
+ long nTwipsSizeX = 0;
+ for (i=nX1; i<=nX2; i++)
+ nTwipsSizeX += pDoc->GetColWidth( i, nTab );
+ long nTwipsSizeY = 0;
+ for (i=nY1; i<=nY2; i++)
+ nTwipsSizeY += pDoc->GetRowHeight( i, nTab );
+
+ // wenn keine Linien, dann trotzdem Platz fuer den Aussenrahmen (20 Twips = 1pt)
+ // (HasLines initalisiert aLines auf 0,0,0,0)
+ nTwipsSizeX += aLines.Left() + Max( aLines.Right(), 20L );
+ nTwipsSizeY += aLines.Top() + Max( aLines.Bottom(), 20L );
+
+ double nScaleX = (double) nDevSizeX / nTwipsSizeX;
+ double nScaleY = (double) nDevSizeY / nTwipsSizeY;
+
+ //! Flag bei FillInfo uebergeben !!!!!
+ ScTripel aEStart;
+ ScTripel aEEnd;
+ BOOL bEmbed = pDoc->IsEmbedded();
+ if (bEmbed)
+ {
+ pDoc->GetEmbedded(aEStart,aEEnd);
+ pDoc->ResetEmbedded();
+ }
+
+ // Daten zusammenstellen
+
+ RowInfo* pRowInfo = new RowInfo[ROWINFO_MAX];
+ USHORT nArrCount = pDoc->FillInfo( pRowInfo, nX1, nY1, nX2, nY2, nTab,
+ nScaleX, nScaleY, FALSE, bFormula );
+
+ if (bEmbed)
+ pDoc->SetEmbedded(aEStart,aEEnd);
+
+/* if (!bMetaFile)
+ pDev->SetMapMode(MAP_PIXEL);
+*/
+ long nScrX = aRect.Left();
+ long nScrY = aRect.Top();
+
+ // Wenn keine Linien, trotzdem Platz fuer Gitterlinien lassen
+ // (werden sonst abgeschnitten)
+ long nAddX = (long)( aLines.Left() * nScaleX );
+ nScrX += ( nAddX ? nAddX : 1 );
+ long nAddY = (long)( aLines.Top() * nScaleY );
+ nScrY += ( nAddY ? nAddY : 1 );
+
+ ScOutputData aOutputData( pDev, OUTTYPE_PRINTER, pRowInfo, nArrCount, pDoc, nTab,
+ nScrX, nScrY, nX1, nY1, nX2, nY2, nScaleX, nScaleY );
+ aOutputData.SetMetaFileMode(bMetaFile);
+ aOutputData.SetShowNullValues(bNullVal);
+ aOutputData.SetShowFormulas(bFormula);
+
+ if ( bMetaFile && pDev->GetOutDevType() == OUTDEV_VIRDEV )
+ aOutputData.SetSnapPixel();
+
+ Point aLogStart = pDev->PixelToLogic( Point(nScrX,nScrY), MAP_100TH_MM );
+ long nLogStX = aLogStart.X();
+ long nLogStY = aLogStart.Y();
+
+ //! nZoom fuer GetFont in OutputData ???
+
+ if (!bMetaFile && pViewData)
+ pDev->SetMapMode(pViewData->GetLogicMode(pViewData->GetActivePart()));
+ aOutputData.DrawingLayer(SC_LAYER_BACK,SC_OBJECTS_ALL,nLogStX,nLogStY);
+ if (!bMetaFile && pViewData)
+ pDev->SetMapMode(aMode);
+
+ aOutputData.DrawBackground();
+
+#ifdef OS2
+ if (bMetaFile && !bDoGrid)
+ {
+ // unter OS2 fuer Metafiles gesamte Flaeche benutzen,
+ // weil sonst die Groesse nicht erkannt wird
+ pDev->SetLineColor();
+ pDev->SetFillColor();
+ pDev->DrawRect( Rectangle( nScrX,nScrY,
+ nScrX+aOutputData.GetScrW(), nScrY+aOutputData.GetScrH() ) );
+ }
+#endif
+
+ aOutputData.DrawShadow();
+ aOutputData.DrawFrame();
+ aOutputData.DrawStrings();
+
+ if (!bMetaFile && pViewData)
+ pDev->SetMapMode(pViewData->GetLogicMode(pViewData->GetActivePart()));
+
+ aOutputData.DrawEdit(!bMetaFile);
+
+ if (bDoGrid)
+ {
+ if (!bMetaFile && pViewData)
+ pDev->SetMapMode(aMode);
+
+ aOutputData.DrawGrid( TRUE, FALSE ); // keine Seitenumbrueche
+
+ pDev->SetLineColor( COL_BLACK );
+
+ Size aOne = pDev->PixelToLogic( Size(1,1) );
+ if (bMetaFile)
+ aOne = Size(1,1); // kompatibel zu DrawGrid
+ pDev->DrawLine( Point(nScrX,nScrY), Point(nScrX,nScrY+aOutputData.GetScrH()-aOne.Width() ) );
+ pDev->DrawLine( Point(nScrX,nScrY), Point(nScrX+aOutputData.GetScrW()-aOne.Height(),nScrY ) );
+ }
+
+ aOutputData.DrawingLayer(SC_LAYER_FRONT,SC_OBJECTS_ALL,nLogStX,nLogStY);
+ aOutputData.DrawingLayer(SC_LAYER_INTERN,SC_OBJECTS_ALL,nLogStX,nLogStY);
+
+ for (i=0; i<nArrCount; i++)
+ delete[] pRowInfo[i].pCellInfo;
+ delete[] pRowInfo;
+}
+
+//
+// Drucken
+//
+
+void lcl_FillHFParam( ScPrintHFParam& rParam, const SfxItemSet* pHFSet )
+{
+ // nDistance muss vorher unterschiedlich initalisiert sein
+
+ if ( pHFSet == NULL )
+ {
+ rParam.bEnable = FALSE;
+ rParam.pBorder = NULL;
+ rParam.pBack = NULL;
+ rParam.pShadow = NULL;
+ }
+ else
+ {
+ rParam.bEnable = ((const SfxBoolItem&) pHFSet->Get(ATTR_PAGE_ON)).GetValue();
+ rParam.bDynamic = ((const SfxBoolItem&) pHFSet->Get(ATTR_PAGE_DYNAMIC)).GetValue();
+ rParam.bShared = ((const SfxBoolItem&) pHFSet->Get(ATTR_PAGE_SHARED)).GetValue();
+ rParam.nHeight = ((const SvxSizeItem&) pHFSet->Get(ATTR_PAGE_SIZE)).GetSize().Height();
+ const SvxLRSpaceItem* pHFLR = &(const SvxLRSpaceItem&) pHFSet->Get(ATTR_LRSPACE);
+ long nTmp;
+ nTmp = pHFLR->GetLeft();
+ rParam.nLeft = nTmp < 0 ? 0 : USHORT(nTmp);
+ nTmp = pHFLR->GetRight();
+ rParam.nRight = nTmp < 0 ? 0 : USHORT(nTmp);
+ rParam.pBorder = (const SvxBoxItem*) &pHFSet->Get(ATTR_BORDER);
+ rParam.pBack = (const SvxBrushItem*) &pHFSet->Get(ATTR_BACKGROUND);
+ rParam.pShadow = (const SvxShadowItem*)&pHFSet->Get(ATTR_SHADOW);;
+
+// jetzt doch wieder schon im Dialog:
+// rParam.nHeight += rParam.nDistance; // nicht mehr im Dialog ???
+
+ if (rParam.pBorder)
+ rParam.nHeight += lcl_LineTotal( rParam.pBorder->GetTop() ) +
+ lcl_LineTotal( rParam.pBorder->GetBottom() );
+
+ rParam.nManHeight = rParam.nHeight;
+ }
+
+ if (!rParam.bEnable)
+ rParam.nHeight = 0;
+}
+
+// bNew = TRUE: benutzten Bereich aus dem Dokument suchen
+// bNew = FALSE: nur ganze Zeilen/Spalten begrenzen
+
+BOOL ScPrintFunc::AdjustPrintArea( BOOL bNew )
+{
+ USHORT nOldEndCol = nEndCol; // nur wichtig bei !bNew
+ USHORT nOldEndRow = nEndRow;
+ BOOL bChangeCol = TRUE; // bei bNew werden beide angepasst
+ BOOL bChangeRow = TRUE;
+
+ BOOL bNotes = aTableParam.bNotes;
+ if ( bNew )
+ {
+ nStartCol = nStartRow = 0;
+ if (!pDoc->GetPrintArea( nPrintTab, nEndCol, nEndRow, bNotes ))
+ return FALSE; // nix
+ }
+ else
+ {
+ BOOL bFound = TRUE;
+ bChangeCol = ( nStartCol == 0 && nEndCol == MAXCOL );
+ bChangeRow = ( nStartRow == 0 && nEndRow == MAXROW );
+ if ( bChangeCol && bChangeRow )
+ bFound = pDoc->GetPrintArea( nPrintTab, nEndCol, nEndRow, bNotes );
+ else if ( bChangeCol )
+ bFound = pDoc->GetPrintAreaHor( nPrintTab, nStartRow, nEndRow, nEndCol, bNotes );
+ else if ( bChangeRow )
+ bFound = pDoc->GetPrintAreaVer( nPrintTab, nStartCol, nEndCol, nEndRow, bNotes );
+
+ if (!bFound)
+ return FALSE; // leer
+ }
+
+ pDoc->ExtendMerge( nStartCol,nStartRow, nEndCol,nEndRow, nPrintTab,
+ FALSE, TRUE ); // kein Refresh, incl. Attrs
+
+ if ( bChangeCol )
+ {
+ OutputDevice* pRefDev = pDoc->GetPrinter(); // auch fuer Preview den Drucker nehmen
+ pRefDev->SetMapMode( MAP_PIXEL ); // wichtig fuer GetNeededSize
+
+ pDoc->ExtendPrintArea( pRefDev,
+ nPrintTab, nStartCol, nStartRow, nEndCol, nEndRow );
+ // nEndCol wird veraendert
+ }
+
+ if ( nEndCol < MAXCOL && pDoc->HasAttrib(
+ nEndCol,nStartRow,nPrintTab, nEndCol,nEndRow,nPrintTab, HASATTR_SHADOW_RIGHT ) )
+ ++nEndCol;
+ if ( nEndRow < MAXROW && pDoc->HasAttrib(
+ nStartCol,nEndRow,nPrintTab, nEndCol,nEndRow,nPrintTab, HASATTR_SHADOW_DOWN ) )
+ ++nEndRow;
+
+ if (!bChangeCol) nEndCol = nOldEndCol;
+ if (!bChangeRow) nEndRow = nOldEndRow;
+
+ return TRUE;
+}
+
+long ScPrintFunc::TextHeight( const EditTextObject* pObject )
+{
+ if (!pObject)
+ return 0;
+
+// pEditEngine->SetPageNo( nTotalPages );
+ pEditEngine->SetText( *pObject );
+
+ return (long) pEditEngine->GetTextHeight();
+}
+
+// nZoom muss gesetzt sein !!!
+// und der entsprechende Twip-MapMode eingestellt
+
+void ScPrintFunc::UpdateHFHeight( ScPrintHFParam& rParam )
+{
+ DBG_ASSERT( aPageSize.Width(), "UpdateHFHeight ohne aPageSize");
+
+ if (rParam.bEnable && rParam.bDynamic)
+ {
+ // nHeight aus Inhalten berechnen
+
+ MakeEditEngine();
+ long nPaperWidth = ( aPageSize.Width() - nLeftMargin - nRightMargin -
+ rParam.nLeft - rParam.nRight ) * 100 / nZoom;
+ if (rParam.pBorder)
+ nPaperWidth -= ( 2*rParam.pBorder->GetDistance() +
+ lcl_LineTotal(rParam.pBorder->GetLeft()) +
+ lcl_LineTotal(rParam.pBorder->GetRight()) ) * 100 / nZoom;
+
+ if (rParam.pShadow && rParam.pShadow->GetLocation() != SVX_SHADOW_NONE)
+ nPaperWidth -= ( rParam.pShadow->CalcShadowSpace(SHADOW_LEFT) +
+ rParam.pShadow->CalcShadowSpace(SHADOW_RIGHT) ) * 100L / nZoom;
+
+ pEditEngine->SetPaperSize( Size( nPaperWidth, 10000 ) );
+
+ long nMaxHeight = 0;
+ if ( rParam.pLeft )
+ {
+ nMaxHeight = Max( nMaxHeight, TextHeight( rParam.pLeft->GetLeftArea() ) );
+ nMaxHeight = Max( nMaxHeight, TextHeight( rParam.pLeft->GetCenterArea() ) );
+ nMaxHeight = Max( nMaxHeight, TextHeight( rParam.pLeft->GetRightArea() ) );
+ }
+ if ( rParam.pRight )
+ {
+ nMaxHeight = Max( nMaxHeight, TextHeight( rParam.pRight->GetLeftArea() ) );
+ nMaxHeight = Max( nMaxHeight, TextHeight( rParam.pRight->GetCenterArea() ) );
+ nMaxHeight = Max( nMaxHeight, TextHeight( rParam.pRight->GetRightArea() ) );
+ }
+
+ rParam.nHeight = nMaxHeight + rParam.nDistance;
+ if (rParam.pBorder)
+ rParam.nHeight += 2*rParam.pBorder->GetDistance() +
+ lcl_LineTotal( rParam.pBorder->GetTop() ) +
+ lcl_LineTotal( rParam.pBorder->GetBottom() );
+ if (rParam.pShadow && rParam.pShadow->GetLocation() != SVX_SHADOW_NONE)
+ rParam.nHeight += rParam.pShadow->CalcShadowSpace(SHADOW_TOP) +
+ rParam.pShadow->CalcShadowSpace(SHADOW_BOTTOM);
+
+ if (rParam.nHeight < rParam.nManHeight)
+ rParam.nHeight = rParam.nManHeight; // eingestelltes Minimum
+ }
+}
+
+void ScPrintFunc::InitParam()
+{
+ if (!pParamSet)
+ return;
+
+ // TabPage "Seite"
+ const SvxLRSpaceItem* pLRItem = (const SvxLRSpaceItem*) &pParamSet->Get( ATTR_LRSPACE );
+ long nTmp;
+ nTmp = pLRItem->GetLeft();
+ nLeftMargin = nTmp < 0 ? 0 : USHORT(nTmp);
+ nTmp = pLRItem->GetRight();
+ nRightMargin = nTmp < 0 ? 0 : USHORT(nTmp);
+ const SvxULSpaceItem* pULItem = (const SvxULSpaceItem*) &pParamSet->Get( ATTR_ULSPACE );
+ nTopMargin = pULItem->GetUpper();
+ nBottomMargin = pULItem->GetLower();
+
+ const SvxPageItem* pPageItem = (const SvxPageItem*) &pParamSet->Get( ATTR_PAGE );
+ nPageUsage = pPageItem->GetPageUsage();
+ bLandscape = pPageItem->IsLandscape();
+ aFieldData.eNumType = pPageItem->GetNumType();
+
+ bCenterHor = ((const SfxBoolItem&) pParamSet->Get(ATTR_PAGE_HORCENTER)).GetValue();
+ bCenterVer = ((const SfxBoolItem&) pParamSet->Get(ATTR_PAGE_VERCENTER)).GetValue();
+
+ aPageSize = ((const SvxSizeItem&) pParamSet->Get(ATTR_PAGE_SIZE)).GetSize();
+ if ( !aPageSize.Width() || !aPageSize.Height() )
+ {
+ DBG_ERROR("PageSize Null ?!?!?");
+ aPageSize = SvxPaperInfo::GetPaperSize( SVX_PAPER_A4 );
+ }
+
+ pBorderItem = (const SvxBoxItem*) &pParamSet->Get(ATTR_BORDER);
+ pBackgroundItem = (const SvxBrushItem*) &pParamSet->Get(ATTR_BACKGROUND);
+ pShadowItem = (const SvxShadowItem*) &pParamSet->Get(ATTR_SHADOW);
+
+ // TabPage "Kopfzeile"
+
+ aHdr.pLeft = (const ScPageHFItem*) &pParamSet->Get(ATTR_PAGE_HEADERLEFT); // Inhalt
+ aHdr.pRight = (const ScPageHFItem*) &pParamSet->Get(ATTR_PAGE_HEADERRIGHT);
+
+ const SvxSetItem* pHeaderSetItem;
+ const SfxItemSet* pHeaderSet = NULL;
+ if ( pParamSet->GetItemState( ATTR_PAGE_HEADERSET, FALSE,
+ (const SfxPoolItem**)&pHeaderSetItem ) == SFX_ITEM_SET )
+ {
+ pHeaderSet = &pHeaderSetItem->GetItemSet();
+ // Kopfzeile hat unteren Abstand
+ aHdr.nDistance = ((const SvxULSpaceItem&) pHeaderSet->Get(ATTR_ULSPACE)).GetLower();
+ }
+ lcl_FillHFParam( aHdr, pHeaderSet );
+
+ // TabPage "Fusszeile"
+
+ aFtr.pLeft = (const ScPageHFItem*) &pParamSet->Get(ATTR_PAGE_FOOTERLEFT); // Inhalt
+ aFtr.pRight = (const ScPageHFItem*) &pParamSet->Get(ATTR_PAGE_FOOTERRIGHT);
+
+ const SvxSetItem* pFooterSetItem;
+ const SfxItemSet* pFooterSet = NULL;
+ if ( pParamSet->GetItemState( ATTR_PAGE_FOOTERSET, FALSE,
+ (const SfxPoolItem**)&pFooterSetItem ) == SFX_ITEM_SET )
+ {
+ pFooterSet = &pFooterSetItem->GetItemSet();
+ // Fusszeile hat oberen Abstand
+ aFtr.nDistance = ((const SvxULSpaceItem&) pFooterSet->Get(ATTR_ULSPACE)).GetUpper();
+ }
+ lcl_FillHFParam( aFtr, pFooterSet );
+
+ //------------------------------------------------------
+ // Table-/Area-Params aus einzelnen Items zusammenbauen:
+ //------------------------------------------------------
+ // TabPage "Tabelle"
+
+ const SfxUInt16Item* pScaleItem = NULL;
+ const SfxUInt16Item* pScaleToPagesItem = NULL;
+ SfxItemState eState;
+
+ eState = pParamSet->GetItemState( ATTR_PAGE_SCALE, FALSE,
+ (const SfxPoolItem**)&pScaleItem );
+ if ( SFX_ITEM_DEFAULT == eState )
+ pScaleItem = (const SfxUInt16Item*)
+ &pParamSet->GetPool()->
+ GetDefaultItem( ATTR_PAGE_SCALE );
+
+ eState = pParamSet->GetItemState( ATTR_PAGE_SCALETOPAGES, FALSE,
+ (const SfxPoolItem**)&pScaleToPagesItem );
+ if ( SFX_ITEM_DEFAULT == eState )
+ pScaleToPagesItem = (const SfxUInt16Item*)
+ &pParamSet->GetPool()->
+ GetDefaultItem( ATTR_PAGE_SCALETOPAGES );
+
+ DBG_ASSERT( pScaleItem && pScaleToPagesItem, "Missing ScaleItem! :-/" );
+
+ aTableParam.bNotes = GET_BOOL(pParamSet,ATTR_PAGE_NOTES);
+ aTableParam.bGrid = GET_BOOL(pParamSet,ATTR_PAGE_GRID);
+ aTableParam.bHeaders = GET_BOOL(pParamSet,ATTR_PAGE_HEADERS);
+ aTableParam.bFormulas = GET_BOOL(pParamSet,ATTR_PAGE_FORMULAS);
+ aTableParam.bNullVals = GET_BOOL(pParamSet,ATTR_PAGE_NULLVALS);
+ aTableParam.bCharts = GET_SHOW(pParamSet,ATTR_PAGE_CHARTS);
+ aTableParam.bObjects = GET_SHOW(pParamSet,ATTR_PAGE_OBJECTS);
+ aTableParam.bDrawings = GET_SHOW(pParamSet,ATTR_PAGE_DRAWINGS);
+ aTableParam.bTopDown = GET_BOOL(pParamSet,ATTR_PAGE_TOPDOWN);
+ aTableParam.bLeftRight = !aTableParam.bLeftRight;
+ aTableParam.nFirstPageNo = GET_USHORT(pParamSet,ATTR_PAGE_FIRSTPAGENO);
+ if (!aTableParam.nFirstPageNo)
+ aTableParam.nFirstPageNo = (USHORT) nPageStart; // von vorheriger Tabelle
+
+ if ( pScaleItem && pScaleToPagesItem )
+ {
+ UINT16 nScaleAll = pScaleItem->GetValue();
+ UINT16 nScaleToPages = pScaleToPagesItem->GetValue();
+
+ aTableParam.bScaleNone = (nScaleAll == 100);
+ aTableParam.bScaleAll = (nScaleAll > 0 );
+ aTableParam.bScalePageNum = (nScaleToPages > 0 );
+ aTableParam.nScaleAll = nScaleAll;
+ aTableParam.nScalePageNum = nScaleToPages;
+ }
+ else
+ {
+ aTableParam.bScaleNone = TRUE;
+ aTableParam.bScaleAll = FALSE;
+ aTableParam.bScalePageNum = FALSE;
+ aTableParam.nScaleAll = 0;
+ aTableParam.nScalePageNum = 0;
+ }
+
+ aTableParam.bSkipEmpty = FALSE; //! aus Seitenvorlage !!!!!!!!
+// aTableParam.bSkipEmpty = TRUE; //! Test !!!!!!!!!!!!!!!!
+ if ( pPageData )
+ aTableParam.bSkipEmpty = FALSE;
+ // Wenn pPageData gesetzt ist, interessieren fuer die Umbruch-Vorschau
+ // nur die Umbrueche, leere Seiten werden nicht speziell behandelt
+
+ //------------------------------------------------------
+ // TabPage "Bereiche":
+ //------------------------------------------------------
+
+ //! alle PrintAreas der Tabelle durchgehen !!!
+ const ScRange* pPrintArea = pDoc->GetPrintRange( nPrintTab, 0 );
+ const ScRange* pRepeatCol = pDoc->GetRepeatColRange( nPrintTab );
+ const ScRange* pRepeatRow = pDoc->GetRepeatRowRange( nPrintTab );
+
+ // ATTR_PAGE_PRINTTABLES wird ignoriert
+
+ if ( pUserArea ) // UserArea (Selektion) hat Vorrang
+ {
+ bPrintCurrentTable =
+ aAreaParam.bPrintArea = TRUE; // Selektion
+ aAreaParam.aPrintArea = *pUserArea;
+
+ // Die Tabellen-Abfrage ist schon in DocShell::Print, hier immer
+ aAreaParam.aPrintArea.aStart.SetTab(nPrintTab);
+ aAreaParam.aPrintArea.aEnd.SetTab(nPrintTab);
+
+// lcl_LimitRange( aAreaParam.aPrintArea, nPrintTab ); // ganze Zeilen/Spalten...
+ }
+ else if ( pDoc->HasPrintRange() )
+ {
+ if ( pPrintArea ) // mindestens eine gesetzt ?
+ {
+ bPrintCurrentTable =
+ aAreaParam.bPrintArea = TRUE;
+ aAreaParam.aPrintArea = *pPrintArea;
+
+ bMultiArea = ( pDoc->GetPrintRangeCount(nPrintTab) > 1 );
+ }
+ else
+ {
+ aAreaParam.bPrintArea = TRUE;
+ bPrintCurrentTable = FALSE;
+ }
+ }
+ else
+ {
+ // #74834# don't print hidden tables if there's no print range defined there
+ if ( pDoc->IsVisible( nPrintTab ) )
+ {
+ aAreaParam.bPrintArea = FALSE;
+ bPrintCurrentTable = TRUE;
+ }
+ else
+ {
+ aAreaParam.bPrintArea = TRUE; // otherwise the table is always counted
+ bPrintCurrentTable = FALSE;
+ }
+ }
+
+ if ( pRepeatCol )
+ {
+ aAreaParam.bRepeatCol = TRUE;
+ aAreaParam.aRepeatCol = *pRepeatCol;
+ nRepeatStartCol = pRepeatCol->aStart.Col();
+ nRepeatEndCol = pRepeatCol->aEnd .Col();
+ }
+ else
+ {
+ aAreaParam.bRepeatCol = FALSE;
+ nRepeatStartCol = nRepeatEndCol = REPEAT_NONE;
+ }
+
+ if ( pRepeatRow )
+ {
+ aAreaParam.bRepeatRow = TRUE;
+ aAreaParam.aRepeatRow = *pRepeatRow;
+ nRepeatStartRow = pRepeatRow->aStart.Row();
+ nRepeatEndRow = pRepeatRow->aEnd .Row();
+ }
+ else
+ {
+ aAreaParam.bRepeatRow = FALSE;
+ nRepeatStartRow = nRepeatEndRow = REPEAT_NONE;
+ }
+
+ //
+ // Seiten aufteilen
+ //
+
+ if (!bState)
+ {
+ nTabPages = CountPages(); // berechnet auch Zoom
+ nTotalPages = nTabPages;
+ nTotalPages += CountNotePages();
+ }
+ else
+ {
+ CalcPages(); // nur Umbrueche suchen
+ CountNotePages(); // Notizen zaehlen, auch wenn Seitenzahl schon bekannt
+ }
+
+ if (nDocPages)
+ aFieldData.nTotalPages = nDocPages;
+ else
+ aFieldData.nTotalPages = nTotalPages;
+
+ SetDateTime( Date(), Time() );
+
+ aFieldData.aTitle = pDocShell->GetTitle();
+ aFieldData.aLongDocName = pDocShell->GetMedium()->GetName();
+ if ( !aFieldData.aLongDocName.Len() )
+ aFieldData.aLongDocName = aFieldData.aTitle;
+ aFieldData.aShortDocName= INetURLObject( aFieldData.aLongDocName ).GetName();
+
+ // Druckereinstellungen (Orientation, Paper) jetzt erst bei DoPrint
+}
+
+Size ScPrintFunc::GetDataSize() const
+{
+ Size aSize = aPageSize;
+ aSize.Width() -= nLeftMargin + nRightMargin;
+ aSize.Height() -= nTopMargin + nBottomMargin;
+ aSize.Height() -= aHdr.nHeight + aFtr.nHeight;
+ return aSize;
+}
+
+void ScPrintFunc::GetScaleData( Size& rPhysSize, long& rDocHdr, long& rDocFtr )
+{
+ rPhysSize = aPageSize;
+ rPhysSize.Width() -= nLeftMargin + nRightMargin;
+ rPhysSize.Height() -= nTopMargin + nBottomMargin;
+
+ rDocHdr = aHdr.nHeight;
+ rDocFtr = aFtr.nHeight;
+}
+
+void ScPrintFunc::SetDateTime( const Date& rDate, const Time& rTime )
+{
+ aFieldData.aDate = rDate;
+ aFieldData.aTime = rTime;
+}
+
+void lcl_DrawGraphic( const Graphic &rGraphic, OutputDevice *pOut,
+ const Rectangle &rGrf, const Rectangle &rOut )
+{
+ const FASTBOOL bNotInside = !rOut.IsInside( rGrf );
+ if ( bNotInside )
+ {
+ pOut->Push();
+ pOut->IntersectClipRegion( rOut );
+ }
+
+ ((Graphic&)rGraphic).Draw( pOut, rGrf.TopLeft(), rGrf.GetSize() );
+
+ if ( bNotInside )
+ pOut->Pop();
+}
+
+void lcl_DrawGraphic( const Bitmap& rBitmap, OutputDevice *pOut,
+ const Rectangle &rGrf, const Rectangle &rOut )
+{
+ const FASTBOOL bNotInside = !rOut.IsInside( rGrf );
+ if ( bNotInside )
+ {
+ pOut->Push();
+ pOut->IntersectClipRegion( rOut );
+ }
+
+ pOut->DrawBitmap( rGrf.TopLeft(), rGrf.GetSize(), rBitmap );
+
+ if ( bNotInside )
+ pOut->Pop();
+}
+
+void lcl_DrawGraphic( const SvxBrushItem &rBrush, OutputDevice *pOut,
+ const Rectangle &rOrg, const Rectangle &rOut )
+{
+ Size aGrfSize(0,0);
+ const Graphic *pGraphic = rBrush.GetGraphic();
+ SvxGraphicPosition ePos;
+ if ( pGraphic && pGraphic->IsSupportedGraphic() )
+ {
+ const MapMode aMapMM( MAP_100TH_MM );
+ if ( pGraphic->GetPrefMapMode().GetMapUnit() == MAP_PIXEL )
+ {
+ MapMode aOldMap( pOut->GetMapMode() );
+ pOut->SetMapMode( aMapMM );
+ aGrfSize = pOut->PixelToLogic( pGraphic->GetPrefSize() );
+ pOut->SetMapMode( aOldMap );
+ }
+ else
+ aGrfSize = OutputDevice::LogicToLogic( pGraphic->GetPrefSize(),
+ pGraphic->GetPrefMapMode(), aMapMM );
+ ePos = rBrush.GetGraphicPos();
+ }
+ else
+ ePos = GPOS_NONE;
+
+ Point aPos;
+ Size aSize = aGrfSize;
+
+ FASTBOOL bDraw = TRUE;
+// FASTBOOL bRetouche = TRUE;
+ switch ( ePos )
+ {
+ case GPOS_LT: aPos = rOrg.TopLeft();
+ break;
+ case GPOS_MT: aPos.Y() = rOrg.Top();
+ aPos.X() = rOrg.Left() + rOrg.GetSize().Width()/2 - aGrfSize.Width()/2;
+ break;
+ case GPOS_RT: aPos.Y() = rOrg.Top();
+ aPos.X() = rOrg.Right() - aGrfSize.Width();
+ break;
+
+ case GPOS_LM: aPos.Y() = rOrg.Top() + rOrg.GetSize().Height()/2 - aGrfSize.Height()/2;
+ aPos.X() = rOrg.Left();
+ break;
+ case GPOS_MM: aPos.Y() = rOrg.Top() + rOrg.GetSize().Height()/2 - aGrfSize.Height()/2;
+ aPos.X() = rOrg.Left() + rOrg.GetSize().Width()/2 - aGrfSize.Width()/2;
+ break;
+ case GPOS_RM: aPos.Y() = rOrg.Top() + rOrg.GetSize().Height()/2 - aGrfSize.Height()/2;
+ aPos.X() = rOrg.Right() - aGrfSize.Width();
+ break;
+
+ case GPOS_LB: aPos.Y() = rOrg.Bottom() - aGrfSize.Height();
+ aPos.X() = rOrg.Left();
+ break;
+ case GPOS_MB: aPos.Y() = rOrg.Bottom() - aGrfSize.Height();
+ aPos.X() = rOrg.Left() + rOrg.GetSize().Width()/2 - aGrfSize.Width()/2;
+ break;
+ case GPOS_RB: aPos.Y() = rOrg.Bottom() - aGrfSize.Height();
+ aPos.X() = rOrg.Right() - aGrfSize.Width();
+ break;
+
+ case GPOS_AREA:
+ aPos = rOrg.TopLeft();
+ aSize = rOrg.GetSize();
+// bRetouche = FALSE;
+ break;
+ case GPOS_TILED:
+ {
+ const FASTBOOL bUseQuickBmp = OUTDEV_PRINTER != pOut->GetOutDevType() &&
+ !pOut->GetConnectMetaFile();
+ Bitmap* pQuickDrawBmp = NULL;
+ if (bUseQuickBmp)
+ {
+ pQuickDrawBmp = new Bitmap;
+ *pQuickDrawBmp = XOutBitmap::CreateQuickDrawBitmapEx(
+ *pGraphic, *pOut, pOut->GetMapMode(),
+ aGrfSize, Point(), aGrfSize ).GetBitmap();
+ }
+ aPos = rOrg.TopLeft();
+ aSize = aGrfSize;
+ do
+ {
+ do
+ {
+ Rectangle aGrf( aPos,aSize );
+ if ( aGrf.IsOver( rOut ) )
+ {
+ if (bUseQuickBmp)
+ lcl_DrawGraphic( *pQuickDrawBmp, pOut, aGrf, rOut );
+ else
+ lcl_DrawGraphic( *pGraphic, pOut, aGrf, rOut );
+ }
+ aPos.X() += aGrfSize.Width();
+ }
+ while ( aPos.X() < rOut.Right() );
+
+ aPos.X() = rOrg.Left();
+ aPos.Y() += aGrfSize.Height();
+
+ }
+ while ( aPos.Y() < rOut.Bottom() ) ;
+ bDraw = FALSE;
+// bRetouche = FALSE;
+
+ delete pQuickDrawBmp;
+ }
+ break;
+
+ case GPOS_NONE:
+ bDraw = FALSE;
+ break;
+
+ default: DBG_ASSERT( !pOut, "new Graphic position?" );
+ }
+ Rectangle aGrf( aPos,aSize );
+ if ( bDraw && aGrf.IsOver( rOut ) )
+ {
+ lcl_DrawGraphic( *pGraphic, pOut, aGrf, rOut );
+ }
+}
+
+// Rahmen wird nach innen gezeichnet
+
+void ScPrintFunc::DrawBorder( long nScrX, long nScrY, long nScrW, long nScrH,
+ const SvxBoxItem* pBorderData, const SvxBrushItem* pBackground,
+ const SvxShadowItem* pShadow )
+{
+ //! direkte Ausgabe aus SvxBoxItem !!!
+
+ if (pBorderData)
+ if ( !pBorderData->GetTop() && !pBorderData->GetBottom() && !pBorderData->GetLeft() &&
+ !pBorderData->GetRight() )
+ pBorderData = NULL;
+
+ if (!pBorderData && !pBackground && !pShadow)
+ return; // nichts zu tun
+
+ long nLeft = 0;
+ long nRight = 0;
+ long nTop = 0;
+ long nBottom = 0;
+
+ // aFrameRect - aussen um die Umrandung, ohne Schatten
+ if ( pShadow && pShadow->GetLocation() != SVX_SHADOW_NONE )
+ {
+ nLeft += (long) ( pShadow->CalcShadowSpace(SHADOW_LEFT) * nScaleX );
+ nRight += (long) ( pShadow->CalcShadowSpace(SHADOW_RIGHT) * nScaleX );
+ nTop += (long) ( pShadow->CalcShadowSpace(SHADOW_TOP) * nScaleY );
+ nBottom += (long) ( pShadow->CalcShadowSpace(SHADOW_BOTTOM) * nScaleY );
+ }
+ Rectangle aFrameRect( Point(nScrX+nLeft, nScrY+nTop),
+ Size(nScrW-nLeft-nRight, nScrH-nTop-nBottom) );
+
+ // Mitte der Umrandung, um Linien ueber OutputData zu zeichnen:
+ if (pBorderData)
+ {
+ nLeft += (long) ( lcl_LineTotal(pBorderData->GetLeft()) * nScaleX / 2 );
+ nRight += (long) ( lcl_LineTotal(pBorderData->GetRight()) * nScaleX / 2 );
+ nTop += (long) ( lcl_LineTotal(pBorderData->GetTop()) * nScaleY / 2 );
+ nBottom += (long) ( lcl_LineTotal(pBorderData->GetBottom()) * nScaleY / 2 );
+ }
+ long nEffHeight = nScrH - nTop - nBottom;
+ long nEffWidth = nScrW - nLeft - nRight;
+ if (nEffHeight<=0 || nEffWidth<=0)
+ return; // leer
+
+ if (pBackground)
+ {
+// Rectangle aBackRect( Point(nScrX+nLeft, nScrY+nTop), Size(nEffWidth,nEffHeight) );
+ if (pBackground->GetGraphicPos() != GPOS_NONE)
+ lcl_DrawGraphic( *pBackground, pDev, aFrameRect, aFrameRect );
+ else
+ {
+ pDev->SetFillColor(pBackground->GetColor());
+ pDev->SetLineColor();
+ pDev->DrawRect(aFrameRect);
+ }
+ }
+
+ if ( pShadow && pShadow->GetLocation() != SVX_SHADOW_NONE )
+ {
+ pDev->SetFillColor(pShadow->GetColor());
+ pDev->SetLineColor();
+ long nShadowX = (long) ( pShadow->GetWidth() * nScaleX );
+ long nShadowY = (long) ( pShadow->GetWidth() * nScaleY );
+ switch (pShadow->GetLocation())
+ {
+ case SVX_SHADOW_TOPLEFT:
+ pDev->DrawRect( Rectangle(
+ aFrameRect.Left()-nShadowX, aFrameRect.Top()-nShadowY,
+ aFrameRect.Right()-nShadowX, aFrameRect.Top() ) );
+ pDev->DrawRect( Rectangle(
+ aFrameRect.Left()-nShadowX, aFrameRect.Top()-nShadowY,
+ aFrameRect.Left(), aFrameRect.Bottom()-nShadowY ) );
+ break;
+ case SVX_SHADOW_TOPRIGHT:
+ pDev->DrawRect( Rectangle(
+ aFrameRect.Left()+nShadowX, aFrameRect.Top()-nShadowY,
+ aFrameRect.Right()+nShadowX, aFrameRect.Top() ) );
+ pDev->DrawRect( Rectangle(
+ aFrameRect.Right(), aFrameRect.Top()-nShadowY,
+ aFrameRect.Right()+nShadowX, aFrameRect.Bottom()-nShadowY ) );
+ break;
+ case SVX_SHADOW_BOTTOMLEFT:
+ pDev->DrawRect( Rectangle(
+ aFrameRect.Left()-nShadowX, aFrameRect.Bottom(),
+ aFrameRect.Right()-nShadowX, aFrameRect.Bottom()+nShadowY ) );
+ pDev->DrawRect( Rectangle(
+ aFrameRect.Left()-nShadowX, aFrameRect.Top()+nShadowY,
+ aFrameRect.Left(), aFrameRect.Bottom()+nShadowY ) );
+ break;
+ case SVX_SHADOW_BOTTOMRIGHT:
+ pDev->DrawRect( Rectangle(
+ aFrameRect.Left()+nShadowX, aFrameRect.Bottom(),
+ aFrameRect.Right()+nShadowX, aFrameRect.Bottom()+nShadowY ) );
+ pDev->DrawRect( Rectangle(
+ aFrameRect.Right(), aFrameRect.Top()+nShadowY,
+ aFrameRect.Right()+nShadowX, aFrameRect.Bottom()+nShadowY ) );
+ break;
+ }
+ }
+
+ USHORT i;
+ if (pBorderData)
+ {
+ ScDocument* pBorderDoc = new ScDocument( SCDOCMODE_UNDO );
+ pBorderDoc->InitUndo( pDoc, 0,0, TRUE,TRUE );
+ if (pBorderData)
+ pBorderDoc->ApplyAttr( 0,0,0, *pBorderData );
+
+ RowInfo* pRowInfo = new RowInfo[ROWINFO_MAX];
+ USHORT nArrCount = pBorderDoc->FillInfo( pRowInfo, 0,0, 0,0, 0,
+ nScaleX, nScaleY, FALSE, FALSE );
+ DBG_ASSERT(nArrCount,"nArrCount == 0");
+
+ pRowInfo[1].nHeight = (USHORT) nEffHeight;
+ pRowInfo[0].pCellInfo[1].nWidth =
+ pRowInfo[1].pCellInfo[1].nWidth = (USHORT) nEffWidth;
+
+ ScOutputData aOutputData( pDev, OUTTYPE_PRINTER, pRowInfo, nArrCount, pBorderDoc, 0,
+ nScrX+nLeft, nScrY+nTop, 0,0, 0,0, nScaleX, nScaleY );
+
+// pDev->SetMapMode(aTwipMode);
+
+ if (pBorderData)
+ aOutputData.DrawFrame();
+
+ for (i=0; i<nArrCount; i++)
+ delete[] pRowInfo[i].pCellInfo;
+ delete[] pRowInfo;
+
+ delete pBorderDoc;
+ }
+}
+
+void ScPrintFunc::PrintColHdr( USHORT nX1, USHORT nX2, long nScrX, long nScrY )
+{
+ Size aOnePixel = pDev->PixelToLogic(Size(1,1));
+ long nOneX = aOnePixel.Width();
+ long nOneY = aOnePixel.Height();
+
+ long nHeight = (long) (PRINT_HEADER_HEIGHT * nScaleY);
+ long nEndY = nScrY + nHeight - nOneY;
+
+ long nPosX = nScrX - nOneX;
+ long nPosY = nScrY - nOneY;
+ String aText;
+
+ for (USHORT nCol=nX1; nCol<=nX2; nCol++)
+ {
+ USHORT nDocW = pDoc->GetColWidth( nCol, nPrintTab );
+ if (nDocW)
+ {
+ long nWidth = (long) (nDocW * nScaleX);
+ long nEndX = nPosX + nWidth;
+
+ pDev->DrawRect( Rectangle( nPosX,nPosY,nEndX,nEndY ) );
+
+ if ( nCol < 26 )
+ aText = (sal_Unicode) ( 'A' + nCol );
+ else
+ {
+ aText = (sal_Unicode) ( 'A' + ( nCol / 26 ) - 1 );
+ aText += (sal_Unicode) ( 'A' + ( nCol % 26 ) );
+ }
+ long nTextWidth = pDev->GetTextWidth(aText);
+ long nTextHeight = pDev->GetTextHeight();
+ long nAddX = ( nWidth - nTextWidth ) / 2;
+ long nAddY = ( nHeight - nTextHeight ) / 2;
+ pDev->DrawText( Point( nPosX+nAddX,nPosY+nAddY ), aText );
+
+ nPosX = nEndX;
+ }
+ }
+}
+
+void ScPrintFunc::PrintRowHdr( USHORT nY1, USHORT nY2, long nScrX, long nScrY )
+{
+ Size aOnePixel = pDev->PixelToLogic(Size(1,1));
+ long nOneX = aOnePixel.Width();
+ long nOneY = aOnePixel.Height();
+
+ long nWidth = (long) (PRINT_HEADER_WIDTH * nScaleX);
+ long nEndX = nScrX + nWidth - nOneX;
+
+ long nPosX = nScrX - nOneX;
+ long nPosY = nScrY - nOneY;
+ String aText;
+
+ for (USHORT nRow=nY1; nRow<=nY2; nRow++)
+ {
+ USHORT nDocH = pDoc->FastGetRowHeight( nRow, nPrintTab );
+ if (nDocH)
+ {
+ long nHeight = (long) (nDocH * nScaleY);
+ long nEndY = nPosY + nHeight;
+
+ pDev->DrawRect( Rectangle( nPosX,nPosY,nEndX,nEndY ) );
+
+ aText = String::CreateFromInt32( nRow+1 );
+ long nTextWidth = pDev->GetTextWidth(aText);
+ long nTextHeight = pDev->GetTextHeight();
+ long nAddX = ( nWidth - nTextWidth ) / 2;
+ long nAddY = ( nHeight - nTextHeight ) / 2;
+ pDev->DrawText( Point( nPosX+nAddX,nPosY+nAddY ), aText );
+
+ nPosY = nEndY;
+ }
+ }
+}
+
+void lcl_HidePrint( RowInfo* pRowInfo, USHORT nArrCount, USHORT nX1, USHORT nX2 )
+{
+ for (USHORT nArrY=1; nArrY+1<nArrCount; nArrY++)
+ {
+ RowInfo* pThisRowInfo = &pRowInfo[nArrY];
+ for (USHORT nX=nX1; nX<=nX2; nX++)
+ {
+ const CellInfo& rCellInfo = pThisRowInfo->pCellInfo[nX+1];
+ if (!rCellInfo.bEmptyCellText)
+ if (((const ScProtectionAttr&)rCellInfo.pPatternAttr->
+ GetItem(ATTR_PROTECTION, rCellInfo.pConditionSet)).GetHidePrint())
+ {
+ pThisRowInfo->pCellInfo[nX+1].pCell = NULL;
+ pThisRowInfo->pCellInfo[nX+1].bEmptyCellText = TRUE;
+ }
+ }
+ }
+}
+
+void ScPrintFunc::PrintArea( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
+ long nScrX, long nScrY,
+ BOOL bShLeft, BOOL bShTop, BOOL bShRight, BOOL bShBottom )
+{
+ USHORT i;
+
+ //! Flag bei FillInfo uebergeben !!!!!
+ ScTripel aEStart;
+ ScTripel aEEnd;
+ BOOL bEmbed = pDoc->IsEmbedded();
+ if (bEmbed)
+ {
+ pDoc->GetEmbedded(aEStart,aEEnd);
+ pDoc->ResetEmbedded();
+ }
+
+ Point aPos = OutputDevice::LogicToLogic(Point(nScrX,nScrY), aOffsetMode, aLogicMode);
+ long nLogStX = aPos.X();
+ long nLogStY = aPos.Y();
+
+ // Daten zusammenstellen
+
+ RowInfo* pRowInfo = new RowInfo[ROWINFO_MAX];
+ USHORT nArrCount = pDoc->FillInfo( pRowInfo, nX1, nY1, nX2, nY2, nPrintTab,
+ nScaleX, nScaleY, TRUE, aTableParam.bFormulas );
+ lcl_HidePrint( pRowInfo, nArrCount, nX1, nX2 );
+
+ if (bEmbed)
+ pDoc->SetEmbedded(aEStart,aEEnd);
+
+ ScOutputData aOutputData( pDev, OUTTYPE_PRINTER, pRowInfo, nArrCount, pDoc, nPrintTab,
+ nScrX, nScrY, nX1, nY1, nX2, nY2, nScaleX, nScaleY );
+
+ if (nObjectFlags)
+ {
+ pDev->SetMapMode(aLogicMode);
+ // hier kein Clipping setzen (Mapmode wird verschoben)
+ aOutputData.DrawingLayer(SC_LAYER_BACK,nObjectFlags,nLogStX,nLogStY);
+ }
+
+ pDev->SetMapMode(aOffsetMode);
+
+ aOutputData.SetShowFormulas( aTableParam.bFormulas );
+ aOutputData.SetShowNullValues( aTableParam.bNullVals );
+
+ if (!pPrinter)
+ {
+ OutputDevice* pRefDev = pDoc->GetPrinter(); // auch fuer Preview den Drucker nehmen
+ Fraction aPrintFrac( nZoom, 100 ); // ohne nManualZoom
+ // MapMode, wie er beim Drucken herauskommen wuerde:
+ pRefDev->SetMapMode( MapMode( MAP_100TH_MM, Point(), aPrintFrac, aPrintFrac ) );
+ aOutputData.SetRefDevice( pRefDev );
+ }
+
+// aOutputData.SetMetaFileMode(TRUE);
+ aOutputData.DrawBackground();
+
+ pDev->SetClipRegion( Rectangle( aPos, Size( aOutputData.GetScrW(), aOutputData.GetScrH() ) ) );
+ SFX_APP()->SpoilDemoOutput( *pDev, OutputDevice::LogicToLogic(
+ aPageRect, aTwipMode, aOffsetMode ) );
+ pDev->SetClipRegion();
+//
+ aOutputData.SetMetaFileMode(FALSE);
+ aOutputData.DrawExtraShadow( bShLeft, bShTop, bShRight, bShBottom );
+ aOutputData.DrawFrame();
+ aOutputData.DrawStrings();
+
+// pDev->SetMapMode(aLogicMode);
+ aOutputData.DrawEdit(FALSE,1.0,1.0);
+
+// pDev->SetMapMode(aOffsetMode);
+ if (aTableParam.bGrid)
+ aOutputData.DrawGrid( TRUE, FALSE ); // keine Seitenumbrueche
+
+/*!!!!!!!!!!! Notizen in Tabelle markieren ??????????????????????????
+
+ if (aTableParam.bNotes)
+ {
+ pDev->SetMapMode(aOffsetMode);
+ aOutputData.PrintNoteMarks(aNotePosList);
+ pDev->SetMapMode(aLogicMode);
+ }
+*/
+
+// pDev->SetMapMode(aDrawMode);
+ if (nObjectFlags)
+ aOutputData.DrawingLayer(SC_LAYER_FRONT,nObjectFlags,nLogStX,nLogStY);
+ aOutputData.DrawingLayer(SC_LAYER_INTERN,SC_OBJECTS_ALL,nLogStX,nLogStY);
+
+ if ( pDrawView && (nObjectFlags & SC_OBJECTS_DRAWING) )
+ {
+ SdrPageView* pPV = pDrawView->GetPageViewPgNum(nPrintTab);
+ DBG_ASSERT(pPV, "keine PageView fuer gedruckte Tabelle");
+ if (pPV)
+ {
+ Rectangle aLogicRect = pDoc->GetMMRect( nX1,nY1, nX2,nY2, nPrintTab );
+ Point aControlOffset( nLogStX - aLogicRect.Left(), nLogStY - aLogicRect.Top() );
+ MapMode aControlMode( MAP_100TH_MM, aControlOffset,
+ aLogicMode.GetScaleX(), aLogicMode.GetScaleY() );
+ pDev->SetMapMode( aControlMode );
+ pPV->RedrawOneLayer( SC_LAYER_CONTROLS, aLogicRect );
+ }
+ }
+
+ for (i=0; i<nArrCount; i++)
+ delete[] pRowInfo[i].pCellInfo;
+ delete[] pRowInfo;
+}
+
+BOOL ScPrintFunc::IsMirror( long nPageNo ) // Raender spiegeln ?
+{
+ SvxPageUsage eUsage = (SvxPageUsage) ( nPageUsage & 0x000f );
+ return ( eUsage == SVX_PAGE_MIRROR && (nPageNo & 1) );
+}
+
+BOOL ScPrintFunc::IsLeft( long nPageNo ) // linke Fussnoten ?
+{
+ SvxPageUsage eUsage = (SvxPageUsage) ( nPageUsage & 0x000f );
+ BOOL bLeft;
+ if (eUsage == SVX_PAGE_LEFT)
+ bLeft = TRUE;
+ else if (eUsage == SVX_PAGE_RIGHT)
+ bLeft = FALSE;
+ else
+ bLeft = (nPageNo & 1) != 0;
+ return bLeft;
+}
+
+void ScPrintFunc::MakeTableString()
+{
+ pDoc->GetName( nPrintTab, aFieldData.aTabName );
+}
+
+String lcl_CmdStr( USHORT nId )
+{
+ String aDel( ScGlobal::GetRscString( STR_HFCMD_DELIMITER ) );
+ String aCmd = aDel;
+ aCmd += ScGlobal::GetRscString( nId );
+ aCmd += aDel;
+ return aCmd;
+}
+
+void ScPrintFunc::MakeEditEngine()
+{
+ if (!pEditEngine)
+ {
+ Font aDefFont;
+ ((const ScPatternAttr&)pDoc->GetPool()->GetDefaultItem(ATTR_PATTERN)).GetFont(aDefFont);
+ // #69193# dont use font color, because background color is not used
+ //! there's no way to set the background for note pages
+ aDefFont.SetColor( COL_BLACK );
+
+ // can't use document's edit engine pool here,
+ // because pool must have twips as default metric
+ pEditEngine = new ScHeaderEditEngine( EditEngine::CreatePool(), TRUE );
+
+ pEditEngine->EnableUndo(FALSE);
+ pEditEngine->SetRefDevice( pDev );
+ pEditEngine->SetWordDelimiters(
+ ScEditUtil::ModifyDelimiters( pEditEngine->GetWordDelimiters() ) );
+ pEditEngine->SetControlWord( pEditEngine->GetControlWord() & ~EE_CNTRL_RTFSTYLESHEETS );
+
+ // Default-Set fuer Ausrichtung
+ pEditDefaults = new SfxItemSet( pEditEngine->GetEmptyItemSet() );
+
+ EditEngine::SetFontInfoInItemSet( *pEditDefaults, aDefFont );
+ }
+
+ pEditEngine->SetData( aFieldData ); // Seitennummer etc. setzen
+}
+
+// nStartY = logic
+void ScPrintFunc::PrintHF( long nPageNo, const ScPrintHFParam& rParam, long nStartY )
+{
+ pDev->SetMapMode( aTwipMode ); // Kopf-/Fusszeilen in Twips
+
+ BOOL bLeft = IsLeft(nPageNo) && !rParam.bShared;
+ const ScPageHFItem* pHFItem = bLeft ? rParam.pLeft : rParam.pRight;
+
+ long nLineStartX = aPageRect.Left() + rParam.nLeft;
+ long nLineEndX = aPageRect.Right() - rParam.nRight;
+ long nLineWidth = nLineEndX - nLineStartX + 1;
+
+ // Edit-Engine
+
+ Point aStart( nLineStartX, nStartY );
+ Size aPaperSize( nLineWidth, rParam.nHeight-rParam.nDistance );
+ if ( rParam.pBorder )
+ {
+ long nLeft = lcl_LineTotal( rParam.pBorder->GetLeft() ) + rParam.pBorder->GetDistance();
+ long nTop = lcl_LineTotal( rParam.pBorder->GetTop() ) + rParam.pBorder->GetDistance();
+ aStart.X() += nLeft;
+ aStart.Y() += nTop;
+ aPaperSize.Width() -= nLeft + lcl_LineTotal( rParam.pBorder->GetRight() ) + rParam.pBorder->GetDistance();
+ aPaperSize.Height() -= nTop + lcl_LineTotal( rParam.pBorder->GetBottom() ) + rParam.pBorder->GetDistance();
+ }
+
+ if ( rParam.pShadow && rParam.pShadow->GetLocation() != SVX_SHADOW_NONE )
+ {
+ long nLeft = rParam.pShadow->CalcShadowSpace(SHADOW_LEFT);
+ long nTop = rParam.pShadow->CalcShadowSpace(SHADOW_TOP);
+ aStart.X() += nLeft;
+ aStart.Y() += nTop;
+ aPaperSize.Width() -= nLeft + rParam.pShadow->CalcShadowSpace(SHADOW_RIGHT);
+ aPaperSize.Height() -= nTop + rParam.pShadow->CalcShadowSpace(SHADOW_BOTTOM);
+ }
+
+ aFieldData.nPageNo = nPageNo+aTableParam.nFirstPageNo;
+ MakeEditEngine();
+
+ pEditEngine->SetPaperSize(aPaperSize);
+ const EditTextObject* pObject;
+
+ // Rahmen / Hintergrund
+
+ Point aBorderStart( nLineStartX, nStartY );
+ Size aBorderSize( nLineWidth, rParam.nHeight-rParam.nDistance );
+ if ( rParam.bDynamic )
+ {
+ // hier nochmal anpassen, wegen geraden/ungeraden Kopf/Fusszeilen
+ // und evtl. anderen Umbruechen durch Variablen (Seitennummer etc.)
+
+ long nMaxHeight = 0;
+ nMaxHeight = Max( nMaxHeight, TextHeight( pHFItem->GetLeftArea() ) );
+ nMaxHeight = Max( nMaxHeight, TextHeight( pHFItem->GetCenterArea() ) );
+ nMaxHeight = Max( nMaxHeight, TextHeight( pHFItem->GetRightArea() ) );
+ if (rParam.pBorder)
+ nMaxHeight += lcl_LineTotal( rParam.pBorder->GetTop() ) +
+ lcl_LineTotal( rParam.pBorder->GetBottom() ) +
+ 2*rParam.pBorder->GetDistance();
+ if (rParam.pShadow && rParam.pShadow->GetLocation() != SVX_SHADOW_NONE)
+ nMaxHeight += rParam.pShadow->CalcShadowSpace(SHADOW_TOP) +
+ rParam.pShadow->CalcShadowSpace(SHADOW_BOTTOM);
+
+ if (nMaxHeight < rParam.nManHeight-rParam.nDistance)
+ nMaxHeight = rParam.nManHeight-rParam.nDistance; // eingestelltes Minimum
+
+ aBorderSize.Height() = nMaxHeight;
+ }
+
+ double nOldScaleX = nScaleX;
+ double nOldScaleY = nScaleY;
+ nScaleX = nScaleY = 1.0; // direkt in Twips ausgeben
+ DrawBorder( aBorderStart.X(), aBorderStart.Y(), aBorderSize.Width(), aBorderSize.Height(),
+ rParam.pBorder, rParam.pBack, rParam.pShadow );
+ nScaleX = nOldScaleX;
+ nScaleY = nOldScaleY;
+
+ // Clipping fuer Text
+
+ pDev->SetClipRegion( Rectangle( aStart, aPaperSize ) );
+
+ // links
+
+ pObject = pHFItem->GetLeftArea();
+ if (pObject)
+ {
+ pEditDefaults->Put( SvxAdjustItem( SVX_ADJUST_LEFT, EE_PARA_JUST ) );
+ pEditEngine->SetTextNewDefaults( *pObject, *pEditDefaults, FALSE );
+ Point aDraw = aStart;
+ long nDif = aPaperSize.Height() - (long) pEditEngine->GetTextHeight();
+ if (nDif > 0)
+ aDraw.Y() += nDif / 2;
+ pEditEngine->Draw( pDev, aDraw, 0 );
+ }
+
+ // Mitte
+
+ pObject = pHFItem->GetCenterArea();
+ if (pObject)
+ {
+ pEditDefaults->Put( SvxAdjustItem( SVX_ADJUST_CENTER, EE_PARA_JUST ) );
+ pEditEngine->SetTextNewDefaults( *pObject, *pEditDefaults, FALSE );
+ Point aDraw = aStart;
+ long nDif = aPaperSize.Height() - (long) pEditEngine->GetTextHeight();
+ if (nDif > 0)
+ aDraw.Y() += nDif / 2;
+ pEditEngine->Draw( pDev, aDraw, 0 );
+ }
+
+ // rechts
+
+ pObject = pHFItem->GetRightArea();
+ if (pObject)
+ {
+ pEditDefaults->Put( SvxAdjustItem( SVX_ADJUST_RIGHT, EE_PARA_JUST ) );
+ pEditEngine->SetTextNewDefaults( *pObject, *pEditDefaults, FALSE );
+ Point aDraw = aStart;
+ long nDif = aPaperSize.Height() - (long) pEditEngine->GetTextHeight();
+ if (nDif > 0)
+ aDraw.Y() += nDif / 2;
+ pEditEngine->Draw( pDev, aDraw, 0 );
+ }
+
+ pDev->SetClipRegion();
+}
+
+long ScPrintFunc::DoNotes( long nNoteStart, BOOL bDoPrint )
+{
+ if (bDoPrint)
+ pDev->SetMapMode(aTwipMode);
+
+ MakeEditEngine();
+ pEditDefaults->Put( SvxAdjustItem( SVX_ADJUST_LEFT, EE_PARA_JUST ) );
+ pEditEngine->SetDefaults( *pEditDefaults );
+
+ Font aMarkFont;
+ ((const ScPatternAttr&)pDoc->GetPool()->GetDefaultItem(ATTR_PATTERN)).GetFont(aMarkFont);
+//? aMarkFont.SetWeight( WEIGHT_BOLD );
+ pDev->SetFont( aMarkFont );
+ long nMarkLen = pDev->GetTextWidth(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("GW99999:")));
+ // ohne Space, weil's eh selten so weit kommt
+
+ Size aDataSize = aPageRect.GetSize();
+ if ( nMarkLen > aDataSize.Width() / 2 ) // alles viel zu klein?
+ nMarkLen = aDataSize.Width() / 2; // Seite bruederlich aufteilen
+ aDataSize.Width() -= nMarkLen;
+
+ pEditEngine->SetPaperSize( aDataSize );
+ long nPosX = aPageRect.Left() + nMarkLen;
+ long nPosY = aPageRect.Top();
+
+ long nCount = 0;
+ BOOL bOk;
+ do
+ {
+ bOk = FALSE;
+ ScTripel* pPos = (ScTripel*) aNotePosList.GetObject( nNoteStart+nCount );
+ if (pPos)
+ {
+ ScBaseCell* pCell;
+ pDoc->GetCell( pPos->GetCol(), pPos->GetRow(), pPos->GetTab(), pCell );
+ const ScPostIt* pNote = pCell->GetNotePtr();
+ if (pNote)
+ {
+ String aString = pNote->GetText();
+ pEditEngine->SetText(aString);
+ long nTextHeight = pEditEngine->GetTextHeight();
+ if ( nPosY + nTextHeight < aPageRect.Bottom() )
+ {
+ if (bDoPrint)
+ {
+ pEditEngine->Draw( pDev, Point( nPosX, nPosY ), 0 );
+
+ ScAddress aAddress( pPos->GetCol(), pPos->GetRow(), pPos->GetTab() );
+ String aMarkStr;
+ aAddress.Format( aMarkStr, SCA_VALID, pDoc );
+ aMarkStr += ':';
+
+ // Zellposition auch per EditEngine, damit die Position stimmt
+ pEditEngine->SetText(aMarkStr);
+ pEditEngine->Draw( pDev, Point( aPageRect.Left(), nPosY ), 0 );
+ }
+
+ nPosY += nTextHeight;
+ nPosY += 200; // Abstand
+ ++nCount;
+ bOk = TRUE;
+ }
+ }
+ }
+ }
+ while (bOk);
+
+ return nCount;
+}
+
+long ScPrintFunc::PrintNotes( long nPageNo, long nNoteStart, BOOL bDoPrint )
+{
+ if ( nNoteStart >= (long) aNotePosList.Count() || !aTableParam.bNotes )
+ return 0;
+
+ if ( bDoPrint && bClearWin )
+ {
+ //! mit PrintPage zusammenfassen !!!
+
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+
+ pDev->SetMapMode(aOffsetMode);
+ pDev->SetLineColor();
+ pDev->SetFillColor(rStyleSettings.GetWindowColor());
+ pDev->DrawRect(Rectangle(Point(),
+ Size((long)(aPageSize.Width() * nScaleX * 100 / nZoom),
+ (long)(aPageSize.Height() * nScaleY * 100 / nZoom))));
+ }
+
+
+ // aPageRect auf linke / rechte Seiten anpassen
+
+ Rectangle aTempRect = Rectangle( Point(), aPageSize );
+ if (IsMirror(nPageNo))
+ {
+ aPageRect.Left() = ( aTempRect.Left() + nRightMargin ) * 100 / nZoom;
+ aPageRect.Right() = ( aTempRect.Right() - nLeftMargin ) * 100 / nZoom;
+ }
+ else
+ {
+ aPageRect.Left() = ( aTempRect.Left() + nLeftMargin ) * 100 / nZoom;
+ aPageRect.Right() = ( aTempRect.Right() - nRightMargin ) * 100 / nZoom;
+ }
+
+ if (bDoPrint)
+ {
+ if (pPrinter)
+ pPrinter->StartPage();
+
+ // Kopf- und Fusszeilen
+
+ if (aHdr.bEnable)
+ {
+ long nHeaderY = aPageRect.Top()-aHdr.nHeight;
+ PrintHF( nPageNo, aHdr, nHeaderY );
+ }
+ if (aFtr.bEnable)
+ {
+ long nFooterY = aPageRect.Bottom()+aFtr.nDistance;
+ PrintHF( nPageNo, aFtr, nFooterY );
+ }
+ }
+
+ long nCount = DoNotes( nNoteStart, bDoPrint );
+
+ if (pPrinter && bDoPrint)
+ pPrinter->EndPage();
+
+ return nCount;
+}
+
+void ScPrintFunc::PrintPage( long nPageNo, USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 )
+{
+ // nPageNo - Seitennummer innerhalb einer "Startseite"-Einstellung
+
+ if (bClearWin)
+ {
+ // muss genau zum Zeichnen des Rahmens in preview.cxx passen !!!
+
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+
+ pDev->SetMapMode(aOffsetMode);
+ pDev->SetLineColor();
+ pDev->SetFillColor(rStyleSettings.GetWindowColor());
+ pDev->DrawRect(Rectangle(Point(),
+ Size((long)(aPageSize.Width() * nScaleX * 100 / nZoom),
+ (long)(aPageSize.Height() * nScaleY * 100 / nZoom))));
+ }
+
+
+ // aPageRect auf linke / rechte Seiten anpassen
+
+ Rectangle aTempRect = Rectangle( Point(), aPageSize );
+ if (IsMirror(nPageNo))
+ {
+ aPageRect.Left() = ( aTempRect.Left() + nRightMargin ) * 100 / nZoom;
+ aPageRect.Right() = ( aTempRect.Right() - nLeftMargin ) * 100 / nZoom;
+ }
+ else
+ {
+ aPageRect.Left() = ( aTempRect.Left() + nLeftMargin ) * 100 / nZoom;
+ aPageRect.Right() = ( aTempRect.Right() - nRightMargin ) * 100 / nZoom;
+ }
+
+ if ( aAreaParam.bRepeatCol )
+ if ( nX1 > nRepeatStartCol && nX1 <= nRepeatEndCol )
+ nX1 = nRepeatEndCol + 1;
+ BOOL bDoRepCol = (aAreaParam.bRepeatCol && nX1 > nRepeatEndCol);
+ if ( aAreaParam.bRepeatRow )
+ if ( nY1 > nRepeatStartRow && nY1 <= nRepeatEndRow )
+ nY1 = nRepeatEndRow + 1;
+ BOOL bDoRepRow = (aAreaParam.bRepeatRow && nY1 > nRepeatEndRow);
+
+ nObjectFlags = 0;
+ if ( aTableParam.bDrawings )
+ nObjectFlags |= SC_OBJECTS_DRAWING;
+ if ( aTableParam.bObjects )
+ nObjectFlags |= SC_OBJECTS_OLE;
+ if ( aTableParam.bCharts )
+ nObjectFlags |= SC_OBJECTS_CHARTS;
+
+ USHORT i;
+
+ if (pPrinter)
+ pPrinter->StartPage();
+
+ // Kopf- und Fusszeilen (ohne Zentrierung)
+
+ if (aHdr.bEnable)
+ {
+ long nHeaderY = aPageRect.Top()-aHdr.nHeight;
+ PrintHF( nPageNo, aHdr, nHeaderY );
+ }
+ if (aFtr.bEnable)
+ {
+ long nFooterY = aPageRect.Bottom()+aFtr.nDistance;
+ PrintHF( nPageNo, aFtr, nFooterY );
+ }
+
+ // Position ( Raender / zentrieren )
+
+ long nLeftSpace = aPageRect.Left(); // Document-Twips
+ long nTopSpace = aPageRect.Top();
+ if ( bCenterHor )
+ {
+ long nDataWidth = 0;
+ for (i=nX1; i<=nX2; i++)
+ nDataWidth += pDoc->GetColWidth( i,nPrintTab );
+ if (bDoRepCol)
+ for (i=nRepeatStartCol; i<=nRepeatEndCol; i++)
+ nDataWidth += pDoc->GetColWidth( i,nPrintTab );
+ if (aTableParam.bHeaders)
+ nDataWidth += (long) PRINT_HEADER_WIDTH;
+ if (pBorderItem)
+ nDataWidth += 2 * pBorderItem->GetDistance(); //! Linenstaerke ???
+ if (pShadowItem && pShadowItem->GetLocation() != SVX_SHADOW_NONE)
+ nDataWidth += pShadowItem->CalcShadowSpace(SHADOW_LEFT) +
+ pShadowItem->CalcShadowSpace(SHADOW_RIGHT);
+ nLeftSpace += ( aPageRect.GetWidth() - nDataWidth ) / 2;
+ if (pBorderItem)
+ nLeftSpace -= lcl_LineTotal(pBorderItem->GetLeft());
+ }
+ if ( bCenterVer )
+ {
+ long nDataHeight = 0;
+ for (i=nY1; i<=nY2; i++)
+ nDataHeight += pDoc->FastGetRowHeight( i,nPrintTab );
+ if (bDoRepRow)
+ for (i=nRepeatStartRow; i<=nRepeatEndRow; i++)
+ nDataHeight += pDoc->FastGetRowHeight( i,nPrintTab );
+ if (aTableParam.bHeaders)
+ nDataHeight += (long) PRINT_HEADER_HEIGHT;
+ if (pBorderItem)
+ nDataHeight += 2 * pBorderItem->GetDistance(); //! Linenstaerke ???
+ if (pShadowItem && pShadowItem->GetLocation() != SVX_SHADOW_NONE)
+ nDataHeight += pShadowItem->CalcShadowSpace(SHADOW_TOP) +
+ pShadowItem->CalcShadowSpace(SHADOW_BOTTOM);
+ nTopSpace += ( aPageRect.GetHeight() - nDataHeight ) / 2;
+ if (pBorderItem)
+ nTopSpace -= lcl_LineTotal(pBorderItem->GetTop());
+ }
+
+ // Seite aufteilen
+
+ long nStartX = ((long) ( nLeftSpace * nScaleX ));
+ long nStartY = ((long) ( nTopSpace * nScaleY ));
+// nStartX -= aOffset.X(); // schon im MapMode
+// nStartY -= aOffset.Y();
+
+ long nInnerStartX = nStartX;
+ long nInnerStartY = nStartY;
+ if (pBorderItem)
+ {
+ nInnerStartX += (long) ( ( lcl_LineTotal(pBorderItem->GetLeft()) +
+ pBorderItem->GetDistance() ) * nScaleX );
+ nInnerStartY += (long) ( ( lcl_LineTotal(pBorderItem->GetTop()) +
+ pBorderItem->GetDistance() ) * nScaleY );
+ }
+ if (pShadowItem && pShadowItem->GetLocation() != SVX_SHADOW_NONE)
+ {
+ nInnerStartX += (long) ( pShadowItem->CalcShadowSpace(SHADOW_LEFT) * nScaleX );
+ nInnerStartY += (long) ( pShadowItem->CalcShadowSpace(SHADOW_TOP) * nScaleY );
+ }
+ long nRepStartX = nInnerStartX;
+ long nRepStartY = nInnerStartY;
+ if (aTableParam.bHeaders)
+ {
+ nRepStartX += (long) (PRINT_HEADER_WIDTH * nScaleX);
+ nRepStartY += (long) (PRINT_HEADER_HEIGHT * nScaleY);
+ }
+ long nDataX = nRepStartX;
+ long nDataY = nRepStartY;
+ if (bDoRepCol)
+ for (i=nRepeatStartCol; i<=nRepeatEndCol; i++)
+ nDataX += (long) (pDoc->GetColWidth(i,nPrintTab) * nScaleX);
+ if (bDoRepRow)
+ for (i=nRepeatStartRow; i<=nRepeatEndRow; i++)
+ nDataY += (long) (pDoc->FastGetRowHeight(i,nPrintTab) * nScaleY);
+ long nEndX = nDataX;
+ long nEndY = nDataY;
+ for (i=nX1; i<=nX2; i++)
+ nEndX += (long) (pDoc->GetColWidth(i,nPrintTab) * nScaleX);
+ for (i=nY1; i<=nY2; i++)
+ nEndY += (long) (pDoc->FastGetRowHeight(i,nPrintTab) * nScaleY);
+
+ // Seiten-Rahmen / Hintergrund
+
+ //! nEndX/Y anpassen
+
+ long nBorderEndX = nEndX;
+ long nBorderEndY = nEndY;
+ if (pBorderItem)
+ {
+ nBorderEndX += (long) ( ( lcl_LineTotal(pBorderItem->GetRight()) +
+ pBorderItem->GetDistance() ) * nScaleX );
+ nBorderEndY += (long) ( ( lcl_LineTotal(pBorderItem->GetBottom()) +
+ pBorderItem->GetDistance() ) * nScaleY );
+ }
+ if (pShadowItem && pShadowItem->GetLocation() != SVX_SHADOW_NONE)
+ {
+ nBorderEndX += (long) ( pShadowItem->CalcShadowSpace(SHADOW_RIGHT) * nScaleX );
+ nBorderEndY += (long) ( pShadowItem->CalcShadowSpace(SHADOW_BOTTOM) * nScaleY );
+ }
+ pDev->SetMapMode( aOffsetMode );
+ DrawBorder( nStartX, nStartY, nBorderEndX-nStartX, nBorderEndY-nStartY,
+ pBorderItem, pBackgroundItem, pShadowItem );
+
+ pDev->SetMapMode( aTwipMode );
+ SFX_APP()->SpoilDemoOutput( *pDev, aPageRect );
+ pDev->SetMapMode( aOffsetMode );
+
+ // Wiederholungszeilen/Spalten ausgeben
+
+ if (bDoRepCol && bDoRepRow)
+ PrintArea( nRepeatStartCol,nRepeatStartRow, nRepeatEndCol,nRepeatEndRow,
+ nRepStartX,nRepStartY, TRUE,TRUE,FALSE,FALSE );
+ if (bDoRepCol)
+ PrintArea( nRepeatStartCol,nY1, nRepeatEndCol,nY2, nRepStartX,nDataY,
+ TRUE,!bDoRepRow,FALSE,TRUE );
+ if (bDoRepRow)
+ PrintArea( nX1,nRepeatStartRow, nX2,nRepeatEndRow, nDataX,nRepStartY,
+ !bDoRepCol,TRUE,TRUE,FALSE );
+
+ // Daten ausgeben
+
+ PrintArea( nX1,nY1, nX2,nY2, nDataX,nDataY, !bDoRepCol,!bDoRepRow,TRUE,TRUE );
+
+ // Spalten-/Zeilenkoepfe ausgeben
+ // nach den Daten (ueber evtl. weitergezeichneten Schatten)
+
+ if (aTableParam.bHeaders)
+ {
+ pDev->SetLineColor( COL_BLACK );
+ pDev->SetFillColor();
+
+ ScPatternAttr aPattern( pDoc->GetPool() );
+ Font aFont;
+// aPattern.GetFont( aFont, pDev, (USHORT)((nZoom * (long) nManualZoom) / 100) );
+ aPattern.GetFont( aFont, pDev );
+ pDev->SetFont( aFont );
+
+ if (bDoRepCol)
+ PrintColHdr( nRepeatStartCol,nRepeatEndCol, nRepStartX,nInnerStartY );
+ PrintColHdr( nX1,nX2, nDataX,nInnerStartY );
+ if (bDoRepRow)
+ PrintRowHdr( nRepeatStartRow,nRepeatEndRow, nInnerStartX,nRepStartY );
+ PrintRowHdr( nY1,nY2, nInnerStartX,nDataY );
+ }
+
+ // einfacher Rahmen
+
+ if (aTableParam.bGrid || aTableParam.bHeaders)
+ {
+ Size aOnePixel = pDev->PixelToLogic(Size(1,1));
+ long nOneX = aOnePixel.Width();
+ long nOneY = aOnePixel.Height();
+
+ long nLeftX = nInnerStartX-nOneX;
+ long nTopY = nInnerStartY-nOneY;
+ pDev->SetMapMode(aOffsetMode);
+ pDev->SetLineColor( COL_BLACK );
+ pDev->SetFillColor();
+ pDev->DrawRect( Rectangle( nLeftX, nTopY, nEndX-nOneX, nEndY-nOneY ) );
+ // nEndX/Y ohne Rahmen-Anpassung
+ }
+
+ if (pPrinter)
+ pPrinter->EndPage();
+}
+
+void ScPrintFunc::SetOffset( const Point& rOfs )
+{
+ aSrcOffset = rOfs;
+}
+
+void ScPrintFunc::SetManualZoom( USHORT nNewZoom )
+{
+ nManualZoom = nNewZoom;
+}
+
+void ScPrintFunc::SetClearFlag( BOOL bFlag )
+{
+ bClearWin = bFlag;
+}
+
+//
+// UpdatePages wird nur von aussen gerufen, um die Umbrueche fuer die Anzeige
+// richtig zu setzen - immer ohne UserArea
+//
+
+BOOL ScPrintFunc::UpdatePages()
+{
+ if (!pParamSet)
+ return FALSE;
+
+ // Zoom
+
+ nZoom = 100;
+ if (aTableParam.bScalePageNum)
+ nZoom = ZOOM_MIN; // stimmt fuer Umbrueche
+ else if (aTableParam.bScaleAll)
+ {
+ nZoom = aTableParam.nScaleAll;
+ if ( nZoom <= ZOOM_MIN )
+ nZoom = ZOOM_MIN;
+ }
+
+ String aName = pDoc->GetPageStyle( nPrintTab );
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if ( nTab==nPrintTab || pDoc->GetPageStyle(nTab)==aName )
+ {
+ // Wiederholungszeilen / Spalten
+ pDoc->SetRepeatArea( nTab, nRepeatStartCol,nRepeatEndCol, nRepeatStartRow,nRepeatEndRow );
+
+ // Umbrueche setzen
+ ResetBreaks(nTab);
+ pDocShell->PostPaint(0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID);
+ }
+
+ return TRUE;
+}
+
+long ScPrintFunc::CountPages() // setzt auch nPagesX, nPagesY
+{
+ BOOL bAreaOk = FALSE;
+
+ if (pDoc->HasTable( nPrintTab ))
+ {
+ if (aAreaParam.bPrintArea) // Druckbereich angegeben?
+ {
+ if ( bPrintCurrentTable )
+ {
+ ScRange& rRange = aAreaParam.aPrintArea;
+
+ // hier kein Vergleich der Tabellen mehr, die Area gilt immer fuer diese Tabelle
+ // wenn hier verglichen werden soll, muss die Tabelle der Druckbereiche beim
+ // Einfuegen von Tabellen etc. angepasst werden !
+
+ nStartCol = rRange.aStart.Col();
+ nStartRow = rRange.aStart.Row();
+ nEndCol = rRange.aEnd .Col();
+ nEndRow = rRange.aEnd .Row();
+ bAreaOk = AdjustPrintArea(FALSE); // begrenzen
+ }
+ else
+ bAreaOk = FALSE;
+ }
+ else // aus Dokument suchen
+ bAreaOk = AdjustPrintArea(TRUE);
+ }
+
+ if (bAreaOk)
+ {
+ long nPages = 0;
+ USHORT nY;
+ if (bMultiArea)
+ {
+ USHORT nRCount = pDoc->GetPrintRangeCount( nPrintTab );
+ for (USHORT i=0; i<nRCount; i++)
+ {
+ CalcZoom(i);
+ if ( aTableParam.bSkipEmpty )
+ for (nY=0; nY<nPagesY; nY++)
+ nPages += pPageRows[nY].CountVisible();
+ else
+ nPages += ((long) nPagesX) * nPagesY;
+ if ( pPageData )
+ FillPageData();
+ }
+ }
+ else
+ {
+ CalcZoom(RANGENO_NORANGE); // Zoom berechnen
+ if ( aTableParam.bSkipEmpty )
+ for (nY=0; nY<nPagesY; nY++)
+ nPages += pPageRows[nY].CountVisible();
+ else
+ nPages += ((long) nPagesX) * nPagesY;
+ if ( pPageData )
+ FillPageData();
+ }
+ return nPages;
+ }
+ else
+ {
+// nZoom = 100; // nZoom auf letztem Wert stehenlassen !!!
+ nPagesX = nPagesY = nTotalY = 0;
+ return 0;
+ }
+}
+
+long ScPrintFunc::CountNotePages()
+{
+ if ( !aTableParam.bNotes || !bPrintCurrentTable )
+ return 0;
+
+ long nCount=0;
+ USHORT nCol;
+ USHORT nRow;
+
+ BOOL bError = FALSE;
+ if (!aAreaParam.bPrintArea)
+ bError = !AdjustPrintArea(TRUE); // komplett aus Dok suchen
+
+ USHORT nRepeats = 1; // wie oft durchgehen ?
+ if (bMultiArea)
+ nRepeats = pDoc->GetPrintRangeCount(nPrintTab);
+ if (bError)
+ nRepeats = 0;
+
+ for (USHORT nStep=0; nStep<nRepeats; nStep++)
+ {
+ BOOL bDoThis = TRUE;
+ if (bMultiArea) // alle Areas durchgehen
+ {
+ const ScRange* pThisRange = pDoc->GetPrintRange( nPrintTab, nStep );
+ if ( pThisRange )
+ {
+ nStartCol = pThisRange->aStart.Col();
+ nStartRow = pThisRange->aStart.Row();
+ nEndCol = pThisRange->aEnd .Col();
+ nEndRow = pThisRange->aEnd .Row();
+ bDoThis = AdjustPrintArea(FALSE);
+ }
+ }
+
+ if (bDoThis)
+ {
+ ScHorizontalCellIterator aIter( pDoc, nPrintTab, nStartCol,nStartRow, nEndCol,nEndRow );
+ ScBaseCell* pCell = aIter.GetNext( nCol, nRow );
+ while (pCell)
+ {
+ if (pCell->GetNotePtr())
+ {
+ aNotePosList.Insert( new ScTripel( nCol,nRow,nPrintTab ), LIST_APPEND );
+ ++nCount;
+ }
+
+ pCell = aIter.GetNext( nCol, nRow );
+ }
+ }
+ }
+
+ long nPages = 0;
+ long nNoteNr = 0;
+ long nNoteAdd;
+ do
+ {
+ nNoteAdd = PrintNotes( nPages, nNoteNr, FALSE );
+ if (nNoteAdd)
+ {
+ nNoteNr += nNoteAdd;
+ ++nPages;
+ }
+ }
+ while (nNoteAdd);
+
+ return nPages;
+}
+
+void ScPrintFunc::InitModes() // aus nZoom etc. die MapModes setzen
+{
+ aOffset = Point( aSrcOffset.X()*100/nZoom, aSrcOffset.Y()*100/nZoom );
+
+ long nEffZoom = nZoom * (long) nManualZoom;
+
+// nScaleX = nScaleY = 1.0; // Ausgabe in Twips
+ nScaleX = nScaleY = HMM_PER_TWIPS; // Ausgabe in 1/100 mm
+
+ Fraction aZoomFract( nEffZoom,10000 );
+ Fraction aHorFract = aZoomFract;
+
+ if (!pPrinter) // Massstab anpassen fuer Preview
+ {
+ double nFact = pDocShell->GetOutputFactor();
+ aHorFract = Fraction( (long)( nEffZoom / nFact ), 10000 );
+ }
+
+ aLogicMode = MapMode( MAP_100TH_MM, Point(), aHorFract, aZoomFract );
+
+ Point aLogicOfs( -aOffset.X(), -aOffset.Y() );
+ aOffsetMode = MapMode( MAP_100TH_MM, aLogicOfs, aHorFract, aZoomFract );
+
+ Point aTwipsOfs( (long) ( -aOffset.X() / nScaleX + 0.5 ), (long) ( -aOffset.Y() / nScaleY + 0.5 ) );
+ aTwipMode = MapMode( MAP_TWIP, aTwipsOfs, aHorFract, aZoomFract );
+}
+
+//--------------------------------------------------------------------
+
+void ScPrintFunc::ApplyPrintSettings()
+{
+ if ( pPrinter )
+ {
+ //
+ // Printer zum Drucken umstellen
+ //
+
+ Size aEnumSize = aPageSize;
+ if ( bLandscape )
+ {
+ long nTemp = aEnumSize.Width();
+ aEnumSize.Width() = aEnumSize.Height();
+ aEnumSize.Height() = nTemp;
+ }
+ Paper ePaper = SvxPaperInfo::GetSvPaper( aEnumSize, MAP_TWIP, TRUE );
+ USHORT nPaperBin = ((const SvxPaperBinItem&)pParamSet->Get(ATTR_PAGE_PAPERBIN)).GetValue();
+
+ pPrinter->SetPaper( ePaper );
+ if ( PAPER_USER == ePaper )
+ {
+ MapMode aPrinterMode = pPrinter->GetMapMode();
+ MapMode aLocalMode( MAP_TWIP );
+ pPrinter->SetMapMode( aLocalMode );
+ pPrinter->SetPaperSizeUser( aEnumSize );
+ pPrinter->SetMapMode( aPrinterMode );
+ }
+ pPrinter->SetPaperBin( nPaperBin );
+ pPrinter->SetOrientation( bLandscape ? ORIENTATION_LANDSCAPE : ORIENTATION_PORTRAIT );
+ }
+}
+
+//--------------------------------------------------------------------
+// rPageRanges = Range fuer alle Tabellen
+// nStartPage = in rPageRanges beginnen bei nStartPage
+// nDisplayStart = lfd. Nummer fuer Anzeige der Seitennummer
+
+long ScPrintFunc::DoPrint( const MultiSelection& rPageRanges,
+ long nStartPage, long nDisplayStart,
+ SfxProgress* pProgress )
+{
+ DBG_ASSERT(pDev,"Device == NULL");
+ if (!pParamSet)
+ return 0;
+
+ if ( pPrinter )
+ ApplyPrintSettings();
+
+ //--------------------------------------------------------------------
+
+ InitModes();
+
+ MakeTableString();
+
+ if ( pProgress )
+ pProgress->SetText( String( ScResId( SCSTR_STAT_PRINT ) ) );
+
+ //--------------------------------------------------------------------
+
+ long nPageNo = 0;
+ long nPrinted = 0;
+ long nEndPage = rPageRanges.GetTotalRange().Max();
+
+ USHORT nRepeats = 1; // wie oft durchgehen ?
+ if (bMultiArea)
+ nRepeats = pDoc->GetPrintRangeCount(nPrintTab);
+ for (USHORT nStep=0; nStep<nRepeats; nStep++)
+ {
+ if (bMultiArea) // Bereich neu belegen ?
+ {
+ CalcZoom(nStep); // setzt auch nStartCol etc. neu
+ InitModes();
+ }
+
+ USHORT nX1;
+ USHORT nY1;
+ USHORT nX2;
+ USHORT nY2;
+ USHORT nCountX;
+ USHORT nCountY;
+
+ if (aTableParam.bTopDown) // von oben nach unten
+ {
+ nX1 = nStartCol;
+ for (nCountX=0; nCountX<nPagesX; nCountX++)
+ {
+ nX2 = pPageEndX[nCountX];
+ for (nCountY=0; nCountY<nPagesY; nCountY++)
+ {
+ nY1 = pPageRows[nCountY].GetStartRow();
+ nY2 = pPageRows[nCountY].GetEndRow();
+ if ( !aTableParam.bSkipEmpty || !pPageRows[nCountY].IsHidden(nCountX) )
+ {
+ if ( rPageRanges.IsSelected( nPageNo+nStartPage+1 ) )
+ {
+ // PrintPage( nPageNo+nStartPage, nX1, nY1, nX2, nY2 );
+ PrintPage( nPageNo+nDisplayStart, nX1, nY1, nX2, nY2 );
+
+ if ( pProgress )
+ {
+ pProgress->SetState( nPageNo+nStartPage+1, nEndPage );
+ pProgress->Reschedule(); //Mag der Anwender noch oder hat er genug?
+ }
+ ++nPrinted;
+ }
+ ++nPageNo;
+ }
+ }
+ nX1 = nX2 + 1;
+ }
+ }
+ else // von links nach rechts
+ {
+ for (nCountY=0; nCountY<nPagesY; nCountY++)
+ {
+ nY1 = pPageRows[nCountY].GetStartRow();
+ nY2 = pPageRows[nCountY].GetEndRow();
+ nX1 = nStartCol;
+ for (nCountX=0; nCountX<nPagesX; nCountX++)
+ {
+ nX2 = pPageEndX[nCountX];
+ if ( !aTableParam.bSkipEmpty || !pPageRows[nCountY].IsHidden(nCountX) )
+ {
+ if ( rPageRanges.IsSelected( nPageNo+nStartPage+1 ) )
+ {
+ // PrintPage( nPageNo+nStartPage, nX1, nY1, nX2, nY2 );
+ PrintPage( nPageNo+nDisplayStart, nX1, nY1, nX2, nY2 );
+
+ if ( pProgress )
+ {
+ pProgress->SetState( nPageNo+nStartPage+1, nEndPage );
+ pProgress->Reschedule(); //Mag der Anwender noch oder hat er genug?
+ }
+ ++nPrinted;
+ }
+ ++nPageNo;
+ }
+ nX1 = nX2 + 1;
+ }
+ }
+ }
+ }
+
+ aFieldData.aTabName = ScGlobal::GetRscString( STR_NOTES );
+
+ long nNoteNr = 0;
+ long nNoteAdd;
+ do
+ {
+ if ( nPageNo+nStartPage <= nEndPage )
+ {
+ BOOL bPageSelected = rPageRanges.IsSelected( nPageNo+nStartPage+1 );
+ nNoteAdd = PrintNotes( nPageNo+nStartPage, nNoteNr, bPageSelected );
+ if ( nNoteAdd )
+ {
+ nNoteNr += nNoteAdd;
+ if ( pProgress && bPageSelected )
+ {
+ pProgress->SetState( nPageNo+nStartPage+1, nEndPage );
+ pProgress->Reschedule(); //Mag der Anwender noch oder hat er genug?
+ }
+ if (bPageSelected)
+ ++nPrinted;
+ ++nPageNo;
+ }
+ }
+ else
+ nNoteAdd = 0;
+ }
+ while (nNoteAdd);
+
+ if ( bMultiArea )
+ ResetBreaks(nPrintTab); // Breaks fuer Anzeige richtig
+
+ return nPrinted;
+}
+
+void ScPrintFunc::CalcZoom( USHORT nRangeNo ) // Zoom berechnen
+{
+ USHORT nRCount = pDoc->GetPrintRangeCount( nPrintTab );
+ const ScRange* pThisRange = NULL;
+ if ( nRangeNo != RANGENO_NORANGE || nRangeNo < nRCount )
+ pThisRange = pDoc->GetPrintRange( nPrintTab, nRangeNo );
+ if ( pThisRange )
+ {
+ nStartCol = pThisRange->aStart.Col();
+ nStartRow = pThisRange->aStart.Row();
+ nEndCol = pThisRange->aEnd .Col();
+ nEndRow = pThisRange->aEnd .Row();
+ }
+
+ if (!AdjustPrintArea(FALSE)) // leer
+ {
+ nZoom = 100;
+ nPagesX = nPagesY = nTotalY = 0;
+ return;
+ }
+
+ pDoc->SetRepeatArea( nPrintTab, nRepeatStartCol,nRepeatEndCol, nRepeatStartRow,nRepeatEndRow );
+
+ if (aTableParam.bScalePageNum)
+ {
+ nZoom = 100;
+ BOOL bFound = FALSE;
+ USHORT nPagesToFit = aTableParam.nScalePageNum;
+ while (!bFound)
+ {
+ CalcPages();
+ if ( nPagesX * nPagesY <= nPagesToFit || nZoom <= ZOOM_MIN )
+ bFound = TRUE;
+ else
+ --nZoom;
+ }
+ }
+ else if (aTableParam.bScaleAll)
+ {
+ nZoom = aTableParam.nScaleAll;
+ if ( nZoom <= ZOOM_MIN )
+ nZoom = ZOOM_MIN;
+ CalcPages();
+ }
+ else
+ {
+ DBG_ASSERT( aTableParam.bScaleNone, "kein Scale-Flag gesetzt" );
+ nZoom = 100;
+ CalcPages();
+ }
+}
+
+Size ScPrintFunc::GetDocPageSize()
+{
+ // Hoehe Kopf-/Fusszeile anpassen
+
+ InitModes(); // aTwipMode aus nZoom initialisieren
+ pDev->SetMapMode( aTwipMode ); // Kopf-/Fusszeilen in Twips
+ UpdateHFHeight( aHdr );
+ UpdateHFHeight( aFtr );
+
+ // Seitengroesse in Document-Twips
+ // Berechnung Left / Right auch in PrintPage
+
+ aPageRect = Rectangle( Point(), aPageSize );
+ aPageRect.Left() = ( aPageRect.Left() + nLeftMargin ) * 100 / nZoom;
+ aPageRect.Right() = ( aPageRect.Right() - nRightMargin ) * 100 / nZoom;
+ aPageRect.Top() = ( aPageRect.Top() + nTopMargin ) * 100 / nZoom + aHdr.nHeight;
+ aPageRect.Bottom() = ( aPageRect.Bottom() - nBottomMargin ) * 100 / nZoom - aFtr.nHeight;
+
+ Size aDocPageSize = aPageRect.GetSize();
+ if (aTableParam.bHeaders)
+ {
+ aDocPageSize.Width() -= (long) PRINT_HEADER_WIDTH;
+ aDocPageSize.Height() -= (long) PRINT_HEADER_HEIGHT;
+ }
+ if (pBorderItem)
+ {
+ aDocPageSize.Width() -= lcl_LineTotal(pBorderItem->GetLeft()) +
+ lcl_LineTotal(pBorderItem->GetRight()) +
+ 2 * pBorderItem->GetDistance();
+ aDocPageSize.Height() -= lcl_LineTotal(pBorderItem->GetTop()) +
+ lcl_LineTotal(pBorderItem->GetBottom()) +
+ 2 * pBorderItem->GetDistance();
+ }
+ if (pShadowItem && pShadowItem->GetLocation() != SVX_SHADOW_NONE)
+ {
+ aDocPageSize.Width() -= pShadowItem->CalcShadowSpace(SHADOW_LEFT) +
+ pShadowItem->CalcShadowSpace(SHADOW_RIGHT);
+ aDocPageSize.Height() -= pShadowItem->CalcShadowSpace(SHADOW_TOP) +
+ pShadowItem->CalcShadowSpace(SHADOW_BOTTOM);
+ }
+ return aDocPageSize;
+}
+
+void ScPrintFunc::ResetBreaks( USHORT nTab ) // Breaks fuer Anzeige richtig setzen
+{
+ pDoc->SetPageSize( nTab, GetDocPageSize() );
+ pDoc->UpdatePageBreaks( nTab, NULL );
+}
+
+void lcl_SetHidden( ScDocument* pDoc, USHORT nPrintTab, ScPageRowEntry& rPageRowEntry,
+ USHORT nStartCol, const USHORT* pPageEndX )
+{
+ USHORT nPagesX = rPageRowEntry.GetPagesX();
+ USHORT nStartRow = rPageRowEntry.GetStartRow();
+ USHORT nEndRow = rPageRowEntry.GetEndRow();
+
+ BOOL bLeftIsEmpty = FALSE;
+ ScRange aTempRange;
+ Rectangle aTempRect = pDoc->GetMMRect( 0,0, 0,0, 0 );
+
+ for (USHORT i=0; i<nPagesX; i++)
+ {
+ USHORT nEndCol = pPageEndX[i];
+ if ( pDoc->IsPrintEmpty( nPrintTab, nStartCol, nStartRow, nEndCol, nEndRow,
+ bLeftIsEmpty, &aTempRange, &aTempRect ) )
+ {
+ rPageRowEntry.SetHidden(i);
+ bLeftIsEmpty = TRUE;
+ }
+ else
+ bLeftIsEmpty = FALSE;
+
+ nStartCol = nEndCol+1;
+ }
+}
+
+void ScPrintFunc::CalcPages() // berechnet aPageRect und Seiten aus nZoom
+{
+ if (!pPageEndX) pPageEndX = new USHORT[MAXCOL+1];
+ if (!pPageEndY) pPageEndY = new USHORT[MAXROW+1];
+ if (!pPageRows) pPageRows = new ScPageRowEntry[MAXROW+1]; //! vorher zaehlen !!!!
+
+ pDoc->SetPageSize( nPrintTab, GetDocPageSize() );
+ if (aAreaParam.bPrintArea)
+ {
+ ScRange aRange( nStartCol, nStartRow, nPrintTab, nEndCol, nEndRow, nPrintTab );
+ pDoc->UpdatePageBreaks( nPrintTab, &aRange );
+ }
+ else
+ pDoc->UpdatePageBreaks( nPrintTab, NULL ); // sonst wird das Ende markiert
+
+ //
+ // Seiteneinteilung nach Umbruechen in Col/RowFlags
+ // Von mehreren Umbruechen in einem ausgeblendeten Bereich zaehlt nur einer.
+ //
+
+ USHORT i;
+ nPagesX = 0;
+ nPagesY = 0;
+ nTotalY = 0;
+
+ BOOL bVisCol = FALSE;
+ for (i=nStartCol; i<=nEndCol; i++)
+ {
+ BYTE nFlags = pDoc->GetColFlags(i,nPrintTab);
+ if ( i>nStartCol && bVisCol && (nFlags & CR_PAGEBREAK) )
+ {
+ pPageEndX[nPagesX] = i-1;
+ ++nPagesX;
+ bVisCol = FALSE;
+ }
+ if (!(nFlags & CR_HIDDEN))
+ bVisCol = TRUE;
+ }
+ if (bVisCol) // auch am Ende keine leeren Seiten
+ {
+ pPageEndX[nPagesX] = nEndCol;
+ ++nPagesX;
+ }
+
+ BOOL bVisRow = FALSE;
+ USHORT nPageStartRow = nStartRow;
+ for (i=nStartRow; i<=nEndRow; i++)
+ {
+ BYTE nFlags = pDoc->GetRowFlags(i,nPrintTab);
+ if ( i>nStartRow && bVisRow && (nFlags & CR_PAGEBREAK) )
+ {
+ pPageEndY[nTotalY] = i-1;
+ ++nTotalY;
+
+ if ( !aTableParam.bSkipEmpty ||
+ !pDoc->IsPrintEmpty( nPrintTab, nStartCol, nPageStartRow, nEndCol, i-1 ) )
+ {
+ pPageRows[nPagesY].SetStartRow( nPageStartRow );
+ pPageRows[nPagesY].SetEndRow( i-1 );
+ pPageRows[nPagesY].SetPagesX( nPagesX );
+ if (aTableParam.bSkipEmpty)
+ lcl_SetHidden( pDoc, nPrintTab, pPageRows[nPagesY], nStartCol, pPageEndX );
+ ++nPagesY;
+ }
+
+ nPageStartRow = i;
+ bVisRow = FALSE;
+ }
+ if (!(nFlags & CR_HIDDEN))
+ bVisRow = TRUE;
+ }
+ if (bVisRow)
+ {
+ pPageEndY[nTotalY] = nEndRow;
+ ++nTotalY;
+
+ if ( !aTableParam.bSkipEmpty ||
+ !pDoc->IsPrintEmpty( nPrintTab, nStartCol, nPageStartRow, nEndCol, nEndRow ) )
+ {
+ pPageRows[nPagesY].SetStartRow( nPageStartRow );
+ pPageRows[nPagesY].SetEndRow( nEndRow );
+ pPageRows[nPagesY].SetPagesX( nPagesX );
+ if (aTableParam.bSkipEmpty)
+ lcl_SetHidden( pDoc, nPrintTab, pPageRows[nPagesY], nStartCol, pPageEndX );
+ ++nPagesY;
+ }
+ }
+}
+
+//------------------------------------------------------------------------
+// class ScJobSetup
+//------------------------------------------------------------------------
+
+ScJobSetup::ScJobSetup( SfxPrinter* pPrinter )
+{
+ eOrientation = pPrinter->GetOrientation();
+ nPaperBin = pPrinter->GetPaperBin();
+ ePaper = pPrinter->GetPaper();
+
+ if ( PAPER_USER == ePaper )
+ {
+ aUserSize = pPrinter->GetPaperSize();
+ aUserMapMode = pPrinter->GetMapMode();
+ }
+};
+
+
+
+
+
diff --git a/sc/source/ui/view/reffact.cxx b/sc/source/ui/view/reffact.cxx
new file mode 100644
index 000000000000..4d0f3f834927
--- /dev/null
+++ b/sc/source/ui/view/reffact.cxx
@@ -0,0 +1,373 @@
+/*************************************************************************
+ *
+ * $RCSfile: reffact.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sfx2/basedlgs.hxx>
+#include <sfx2/viewfrm.hxx>
+
+#include "reffact.hxx"
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+#include "acredlin.hxx"
+#include "simpref.hxx"
+#include "scmod.hxx"
+
+// -----------------------------------------------------------------------
+
+SFX_IMPL_MODELESSDIALOG(ScNameDlgWrapper, FID_DEFINE_NAME )
+SFX_IMPL_MODELESSDIALOG(ScSolverDlgWrapper, SID_OPENDLG_SOLVE )
+SFX_IMPL_MODELESSDIALOG(ScPivotLayoutWrapper, SID_OPENDLG_PIVOTTABLE )
+SFX_IMPL_MODELESSDIALOG(ScTabOpDlgWrapper, SID_OPENDLG_TABOP )
+SFX_IMPL_MODELESSDIALOG(ScFilterDlgWrapper, SID_FILTER )
+SFX_IMPL_MODELESSDIALOG(ScSpecialFilterDlgWrapper, SID_SPECIAL_FILTER )
+SFX_IMPL_MODELESSDIALOG(ScDbNameDlgWrapper, SID_DEFINE_DBNAME )
+SFX_IMPL_MODELESSDIALOG(ScConsolidateDlgWrapper, SID_OPENDLG_CONSOLIDATE )
+SFX_IMPL_MODELESSDIALOG(ScChartDlgWrapper, SID_OPENDLG_CHART )
+SFX_IMPL_MODELESSDIALOG(ScPrintAreasDlgWrapper, SID_OPENDLG_EDIT_PRINTAREA )
+SFX_IMPL_MODELESSDIALOG(ScCondFormatDlgWrapper, SID_OPENDLG_CONDFRMT )
+SFX_IMPL_MODELESSDIALOG(ScColRowNameRangesDlgWrapper, SID_DEFINE_COLROWNAMERANGES )
+SFX_IMPL_MODELESSDIALOG(ScFormulaDlgWrapper, SID_OPENDLG_FUNCTION )
+SFX_IMPL_MODELESSDIALOG(ScAcceptChgDlgWrapper, FID_CHG_ACCEPT )
+SFX_IMPL_MODELESSDIALOG(ScHighlightChgDlgWrapper, FID_CHG_SHOW )
+SFX_IMPL_MODELESSDIALOG(ScSimpleRefDlgWrapper, WID_SIMPLE_REF )
+/*!!! dafuer muss der Funktionsautopilot noch umgebaut werden
+SFX_IMPL_CHILDWINDOW(ScFunctionDlgWrapper, SID_OPENDLG_FUNCTION )
+SFX_IMPL_CHILDWINDOW(ScEditFunctionDlgWrapper, SID_OPENDLG_EDITFUNCTION )
+SFX_IMPL_CHILDWINDOW(ScArgumentDlgWrapper, SID_OPENDLG_ARGUMENT )
+*/
+
+#define IMPL_CHILD_CTOR(Class,sid) \
+ Class::Class( Window* pParent, \
+ USHORT nId, \
+ SfxBindings* p, \
+ SfxChildWinInfo* pInfo ) \
+ : SfxChildWindow(pParent, nId) \
+ { \
+ ScTabViewShell* pViewShell = \
+ PTR_CAST( ScTabViewShell, SfxViewShell::Current() ); \
+ DBG_ASSERT( pViewShell, "missing view shell :-(" ); \
+ pWindow = pViewShell ? \
+ pViewShell->CreateRefDialog( p, this, pInfo, pParent, sid ) : NULL; \
+ if (pViewShell && !pWindow) \
+ pViewShell->GetViewFrame()->SetChildWindow( nId, FALSE ); \
+ }
+
+
+//=========================================================================
+
+//-------------------------------------------------------------------------
+// ScNameDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScNameDlgWrapper, FID_DEFINE_NAME )
+
+//-------------------------------------------------------------------------
+// ScSolverDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScSolverDlgWrapper, SID_OPENDLG_SOLVE )
+
+//-------------------------------------------------------------------------
+// ScPivotLayoutWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScPivotLayoutWrapper, SID_OPENDLG_PIVOTTABLE )
+
+//-------------------------------------------------------------------------
+// ScTabOpDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScTabOpDlgWrapper, SID_OPENDLG_TABOP )
+
+//-------------------------------------------------------------------------
+// ScFilterDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScFilterDlgWrapper, SID_FILTER )
+
+//-------------------------------------------------------------------------
+// ScSpecialFilterDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScSpecialFilterDlgWrapper, SID_SPECIAL_FILTER )
+
+//-------------------------------------------------------------------------
+// ScDbNameDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScDbNameDlgWrapper, SID_DEFINE_DBNAME )
+
+//-------------------------------------------------------------------------
+// ScColRowNameRangesDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScColRowNameRangesDlgWrapper, SID_DEFINE_COLROWNAMERANGES )
+
+//-------------------------------------------------------------------------
+// ScConsolidateDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScConsolidateDlgWrapper, SID_OPENDLG_CONSOLIDATE )
+
+//-------------------------------------------------------------------------
+// ScChartDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScChartDlgWrapper, SID_OPENDLG_CHART )
+
+//-------------------------------------------------------------------------
+// ScPrintAreasDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScPrintAreasDlgWrapper, SID_OPENDLG_EDIT_PRINTAREA )
+
+//-------------------------------------------------------------------------
+// ScCondFormatDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScCondFormatDlgWrapper, SID_OPENDLG_CONDFRMT )
+
+//-------------------------------------------------------------------------
+// ScFormulaDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScFormulaDlgWrapper, SID_OPENDLG_FUNCTION )
+
+
+//-------------------------------------------------------------------------
+// ScSimpleRefDlgWrapper
+//-------------------------------------------------------------------------
+
+static BOOL bScSimpleRefFlag;
+static long nScSimpleRefHeight;
+static long nScSimpleRefWidth;
+static long nScSimpleRefX;
+static long nScSimpleRefY;
+static BOOL bAutoReOpen=TRUE;
+
+ScSimpleRefDlgWrapper::ScSimpleRefDlgWrapper( Window* pParent,
+ USHORT nId,
+ SfxBindings* p,
+ SfxChildWinInfo* pInfo )
+ : SfxChildWindow(pParent, nId)
+{
+ ScTabViewShell* pViewShell =
+ PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ DBG_ASSERT( pViewShell, "missing view shell :-(" );
+
+ if(pInfo!=NULL && bScSimpleRefFlag)
+ {
+ pInfo->aPos.X()=nScSimpleRefX;
+ pInfo->aPos.Y()=nScSimpleRefY;
+ pInfo->aSize.Height()=nScSimpleRefHeight;
+ pInfo->aSize.Width()=nScSimpleRefWidth;
+ }
+ pWindow = NULL;
+
+ if(bAutoReOpen)
+ pWindow = pViewShell->CreateRefDialog( p, this, pInfo, pParent, WID_SIMPLE_REF);
+
+ if (!pWindow)
+ {
+ SC_MOD()->SetRefDialog( nId, FALSE );
+ }
+}
+
+void ScSimpleRefDlgWrapper::SetDefaultPosSize(Point aPos, Size aSize, BOOL bSet)
+{
+ bScSimpleRefFlag=bSet;
+ if(bScSimpleRefFlag)
+ {
+ nScSimpleRefX=aPos.X();
+ nScSimpleRefY=aPos.Y();
+ nScSimpleRefHeight=aSize.Height();
+ nScSimpleRefWidth=aSize.Width();
+ }
+}
+
+
+String ScSimpleRefDlgWrapper::GetRefString()
+{
+ String aResult;
+ ScTabViewShell* pViewShell =
+ PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ DBG_ASSERT( pViewShell, "missing view shell :-(" );
+
+ if(pWindow!=NULL)
+ {
+ aResult=((ScSimpleRefDlg*)pWindow)->GetRefString();
+ }
+ return aResult;
+}
+
+void ScSimpleRefDlgWrapper::SetAutoReOpen(BOOL bFlag)
+{
+ bAutoReOpen=bFlag;
+}
+
+void ScSimpleRefDlgWrapper::SetRefString(const String& rStr)
+{
+ ScTabViewShell* pViewShell =
+ PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ DBG_ASSERT( pViewShell, "missing view shell :-(" );
+
+ if(pWindow!=NULL)
+ {
+ ((ScSimpleRefDlg*)pWindow)->SetRefString(rStr);
+ }
+}
+
+void ScSimpleRefDlgWrapper::SetCloseHdl( const Link& rLink )
+{
+ ScTabViewShell* pViewShell =
+ PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ DBG_ASSERT( pViewShell, "missing view shell :-(" );
+
+ if(pWindow!=NULL)
+ {
+ ((ScSimpleRefDlg*)pWindow)->SetCloseHdl(rLink );
+ }
+}
+
+void ScSimpleRefDlgWrapper::StartRefInput()
+{
+ ScTabViewShell* pViewShell =
+ PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ DBG_ASSERT( pViewShell, "missing view shell :-(" );
+
+ if(pWindow!=NULL)
+ {
+ ((ScSimpleRefDlg*)pWindow)->StartRefInput();
+ }
+}
+
+
+
+//-------------------------------------------------------------------------
+// ScAcceptChgDlgWrapper //Kommentar: sollte in die ViewShell
+//-------------------------------------------------------------------------
+
+ScAcceptChgDlgWrapper::ScAcceptChgDlgWrapper( Window* pParent,
+ USHORT nId,
+ SfxBindings* pBindings,
+ SfxChildWinInfo* pInfo ) :
+ SfxChildWindow( pParent, nId )
+{
+ ScTabViewShell* pViewShell =
+ PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ DBG_ASSERT( pViewShell, "missing view shell :-(" );
+ pWindow = new ScAcceptChgDlg( pBindings, this, pParent, pViewShell->GetViewData() );
+ if(pWindow!=NULL)
+ {
+ ((ScAcceptChgDlg*)pWindow)->Initialize( pInfo );
+ }
+ if (pViewShell && !pWindow)
+ pViewShell->GetViewFrame()->SetChildWindow( nId, FALSE );
+}
+
+void ScAcceptChgDlgWrapper::ReInitDlg()
+{
+ ScTabViewShell* pViewShell =
+ PTR_CAST( ScTabViewShell, SfxViewShell::Current() );
+ DBG_ASSERT( pViewShell, "missing view shell :-(" );
+
+ if(pWindow!=NULL)
+ {
+ ((ScAcceptChgDlg*)pWindow)->ReInit(pViewShell->GetViewData());
+ }
+}
+
+//-------------------------------------------------------------------------
+// ScHighlightChgDlgWrapper
+//-------------------------------------------------------------------------
+
+IMPL_CHILD_CTOR( ScHighlightChgDlgWrapper, FID_CHG_SHOW )
+
+/*------------------------------------------------------------------------*/
+/*@@@
+ //-------------------------------------------------------------------------
+ // ScFunctionDlgWrapper
+ //-------------------------------------------------------------------------
+
+ IMPL_CHILD_CTOR( ScFunctionDlgWrapper, SID_OPENDLG_FUNCTION )
+
+ //-------------------------------------------------------------------------
+ // ScEditFunctionDlgWrapper
+ //-------------------------------------------------------------------------
+
+ IMPL_CHILD_CTOR( ScEditFunctionDlgWrapper, SID_OPENDLG_EDITFUNCTION )
+
+ //-------------------------------------------------------------------------
+ // ScArgumentDlgWrapper
+ //-------------------------------------------------------------------------
+
+ IMPL_CHILD_CTOR( ScArgumentDlgWrapper, SID_OPENDLG_ARGUMENT )
+@@@*/
+/*------------------------------------------------------------------------*/
+
+
diff --git a/sc/source/ui/view/select.cxx b/sc/source/ui/view/select.cxx
new file mode 100644
index 000000000000..eca17d1e2428
--- /dev/null
+++ b/sc/source/ui/view/select.cxx
@@ -0,0 +1,848 @@
+/*************************************************************************
+ *
+ * $RCSfile: select.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <vcl/sound.hxx>
+
+#include "select.hxx"
+#include "sc.hrc"
+#include "tabvwsh.hxx"
+#include "scmod.hxx"
+#include "document.hxx"
+#include "dataobj.hxx"
+
+extern USHORT nScFillModeMouseModifier; // global.cxx
+
+// STATIC DATA -----------------------------------------------------------
+
+static Point aSwitchPos; //! Member
+static BOOL bDidSwitch = FALSE;
+
+// -----------------------------------------------------------------------
+
+//
+// View (Gridwin / Tastatur)
+//
+
+ScViewFunctionSet::ScViewFunctionSet( ScViewData* pNewViewData ) :
+ pViewData( pNewViewData ),
+ pEngine( NULL ),
+ bAnchor( FALSE ),
+ bStarted( FALSE )
+{
+ DBG_ASSERT(pViewData, "ViewData==0 bei FunctionSet");
+}
+
+ScSplitPos ScViewFunctionSet::GetWhich()
+{
+ if (pEngine)
+ return pEngine->GetWhich();
+ else
+ return pViewData->GetActivePart();
+}
+
+void ScViewFunctionSet::SetSelectionEngine( ScViewSelectionEngine* pSelEngine )
+{
+ pEngine = pSelEngine;
+}
+
+// Drag & Drop
+
+void __EXPORT ScViewFunctionSet::BeginDrag()
+{
+ USHORT nTab = pViewData->GetTabNo();
+
+ short nPosX;
+ short nPosY;
+ if (pEngine)
+ {
+ Point aMPos = pEngine->GetMousePosPixel();
+ pViewData->GetPosFromPixel( aMPos.X(), aMPos.Y(), GetWhich(), nPosX, nPosY );
+ }
+ else
+ {
+ nPosX = pViewData->GetCurX();
+ nPosY = pViewData->GetCurY();
+ }
+
+ ScModule* pScMod = SC_MOD();
+ BOOL bRefMode = pScMod->IsFormulaMode();
+ if (!bRefMode)
+ {
+ pViewData->GetView()->FakeButtonUp( GetWhich() ); // ButtonUp wird verschluckt
+
+ ScMarkData& rMark = pViewData->GetMarkData();
+// rMark.SetMarking(FALSE); // es fehlt ein ButtonUp
+ rMark.MarkToSimple();
+ if ( rMark.IsMarked() && !rMark.IsMultiMarked() )
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+ USHORT nStartX = aMarkRange.aStart.Col(); // Block
+ USHORT nStartY = aMarkRange.aStart.Row();
+ USHORT nEndX = aMarkRange.aEnd.Col();
+ USHORT nEndY = aMarkRange.aEnd.Row();
+ USHORT nHandleX = (nPosX >= (short) nStartX) ? nPosX - nStartX : 0;
+ USHORT nHandleY = (nPosY >= (short) nStartY) ? nPosY - nStartY : 0;
+
+ pScMod->SetDragObject( rMark,ScRange( nStartX,nStartY,nTab,nEndX,nEndY,nTab ),
+ nHandleX, nHandleY, pDoc, 0 );
+
+ Region aRegion = pDoc->GetMMRect( nStartX,nStartY, nEndX,nEndY, nTab );
+
+ SvDataObjectRef pDragServer = new ScDataObject( pDoc, FALSE,
+ pViewData->GetDocShell(), NULL, &aMarkRange );
+ DropAction eAction = pDragServer->ExecuteDrag(pViewData->GetActiveWin(),
+ POINTER_MOVEDATA, POINTER_COPYDATA, POINTER_LINKDATA,
+ DRAG_ALL, &aRegion );
+ BOOL bIntern = pScMod->GetDragIntern();
+
+ pScMod->ResetDragObject();
+
+ switch (eAction)
+ {
+ case DROP_MOVE:
+ case DROP_DISCARD:
+ if (!bIntern)
+ {
+ ScViewFunc* pView = pViewData->GetView();
+ pView->DoneBlockMode();
+ pView->MoveCursorAbs( nStartX, nStartY, SC_FOLLOW_JUMP, FALSE, FALSE );
+ pView->InitOwnBlockMode();
+ rMark.SetMarkArea( ScRange( nStartX,nStartY,nTab, nEndX,nEndY,nTab ) );
+ pView->DeleteContents( IDF_ALL );
+ }
+ break;
+ default:
+ break;
+ }
+
+ return; // Dragging passiert
+ }
+ }
+
+ Sound::Beep(); // kein Dragging
+}
+
+// Selektion
+
+void __EXPORT ScViewFunctionSet::CreateAnchor()
+{
+ if (bAnchor) return;
+
+ BOOL bRefMode = SC_MOD()->IsFormulaMode();
+ if (bRefMode)
+ SetAnchor( pViewData->GetRefStartX(), pViewData->GetRefStartY() );
+ else
+ SetAnchor( pViewData->GetCurX(), pViewData->GetCurY() );
+}
+
+void ScViewFunctionSet::SetAnchor( USHORT nPosX, USHORT nPosY )
+{
+ BOOL bRefMode = SC_MOD()->IsFormulaMode();
+ ScTabView* pView = pViewData->GetView();
+ USHORT nTab = pViewData->GetTabNo();
+
+ if (bRefMode)
+ {
+ pView->DoneRefMode( FALSE );
+ aAnchorPos.Put( nPosX, nPosY, nTab );
+ pView->InitRefMode( aAnchorPos.GetCol(), aAnchorPos.GetRow(), aAnchorPos.GetTab(),
+ SC_REFTYPE_REF );
+ bStarted = TRUE;
+ }
+ else if (pViewData->IsAnyFillMode())
+ {
+ aAnchorPos.Put( nPosX, nPosY, nTab );
+ bStarted = TRUE;
+ }
+ else
+ {
+ // nicht weg und gleich wieder hin
+ if ( bStarted && pView->IsMarking( nPosX, nPosY, nTab ) )
+ {
+ // nix
+ }
+ else
+ {
+ pView->DoneBlockMode( TRUE );
+ aAnchorPos.Put( nPosX, nPosY, nTab );
+ ScMarkData& rMark = pViewData->GetMarkData();
+ if ( rMark.IsMarked() || rMark.IsMultiMarked() )
+ {
+ pView->InitBlockMode( aAnchorPos.GetCol(), aAnchorPos.GetRow(),
+ aAnchorPos.GetTab(), TRUE );
+ bStarted = TRUE;
+ }
+ else
+ bStarted = FALSE;
+ }
+ }
+ bAnchor = TRUE;
+}
+
+void __EXPORT ScViewFunctionSet::DestroyAnchor()
+{
+ BOOL bRefMode = SC_MOD()->IsFormulaMode();
+ if (bRefMode)
+ pViewData->GetView()->DoneRefMode( TRUE );
+ else
+ pViewData->GetView()->DoneBlockMode( TRUE );
+
+ bAnchor = FALSE;
+}
+
+void ScViewFunctionSet::SetAnchorFlag( BOOL bSet )
+{
+ bAnchor = bSet;
+}
+
+BOOL __EXPORT ScViewFunctionSet::SetCursorAtPoint( const Point& rPointPixel, BOOL bDontSelectAtCursor )
+{
+ if ( bDidSwitch )
+ {
+ if ( rPointPixel == aSwitchPos )
+ return FALSE; // nicht auf falschem Fenster scrollen
+ else
+ bDidSwitch = FALSE;
+ }
+ aSwitchPos = rPointPixel; // nur wichtig, wenn bDidSwitch
+
+ // Scrolling
+
+ Size aWinSize = pEngine->GetWindow()->GetOutputSizePixel();
+ BOOL bRightScroll = ( rPointPixel.X() >= aWinSize.Width() );
+ BOOL bBottomScroll = ( rPointPixel.Y() >= aWinSize.Height() );
+ BOOL bNegScroll = ( rPointPixel.X() < 0 || rPointPixel.Y() < 0 );
+ BOOL bScroll = bRightScroll || bBottomScroll || bNegScroll;
+
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( rPointPixel.X(), rPointPixel.Y(), GetWhich(),
+ nPosX, nPosY, TRUE, TRUE ); // mit Repair
+
+ // fuer AutoFill in der Mitte der Zelle umschalten
+ // dabei aber nicht das Scrolling nach rechts/unten verhindern
+ if ( pViewData->IsFillMode() || pViewData->GetFillMode() == SC_FILL_MATRIX )
+ {
+ BOOL bLeft, bTop;
+ pViewData->GetMouseQuadrant( rPointPixel, GetWhich(), nPosX, nPosY, bLeft, bTop );
+ ScDocument* pDoc = pViewData->GetDocument();
+ USHORT nTab = pViewData->GetTabNo();
+ if ( bLeft && !bRightScroll )
+ do --nPosX; while ( nPosX>=0 && ( pDoc->GetColFlags( nPosX, nTab ) & CR_HIDDEN ) );
+ if ( bTop && !bBottomScroll )
+ do --nPosY; while ( nPosY>=0 && ( pDoc->GetRowFlags( nPosY, nTab ) & CR_HIDDEN ) );
+ // negativ ist erlaubt
+ }
+
+ // ueber Fixier-Grenze bewegt?
+
+ ScSplitPos eWhich = GetWhich();
+ if ( eWhich == pViewData->GetActivePart() )
+ {
+ if ( pViewData->GetHSplitMode() == SC_SPLIT_FIX )
+ if ( rPointPixel.X() >= aWinSize.Width() )
+ {
+ if ( eWhich == SC_SPLIT_TOPLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_TOPRIGHT ), bScroll = FALSE, bDidSwitch = TRUE;
+ else if ( eWhich == SC_SPLIT_BOTTOMLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMRIGHT ), bScroll = FALSE, bDidSwitch = TRUE;
+ }
+
+ if ( pViewData->GetVSplitMode() == SC_SPLIT_FIX )
+ if ( rPointPixel.Y() >= aWinSize.Height() )
+ {
+ if ( eWhich == SC_SPLIT_TOPLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMLEFT ), bScroll = FALSE, bDidSwitch = TRUE;
+ else if ( eWhich == SC_SPLIT_TOPRIGHT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMRIGHT ), bScroll = FALSE, bDidSwitch = TRUE;
+ }
+ }
+
+ pViewData->ResetOldCursor();
+ return SetCursorAtCell( nPosX, nPosY, bScroll );
+}
+
+BOOL ScViewFunctionSet::SetCursorAtCell( short nPosX, short nPosY, BOOL bScroll )
+{
+ ScTabView* pView = pViewData->GetView();
+ USHORT nTab = pViewData->GetTabNo();
+ BOOL bRefMode = SC_MOD()->IsFormulaMode();
+
+ BOOL bHide = !bRefMode && !pViewData->IsAnyFillMode() &&
+ ( nPosX != (short) pViewData->GetCurX() || nPosY != (short) pViewData->GetCurY() );
+
+ if (bHide)
+ pView->HideAllCursors();
+
+ if (bScroll)
+ {
+ if (bRefMode)
+ {
+ ScSplitPos eWhich = GetWhich();
+ pView->AlignToCursor( nPosX, nPosY, SC_FOLLOW_LINE, &eWhich );
+ }
+ else
+ pView->AlignToCursor( nPosX, nPosY, SC_FOLLOW_LINE );
+ }
+
+ if (bRefMode)
+ {
+ if (!bAnchor)
+ {
+ pView->DoneRefMode( TRUE );
+ pView->InitRefMode( nPosX, nPosY, pViewData->GetTabNo(), SC_REFTYPE_REF );
+ }
+
+ pView->UpdateRef( nPosX, nPosY, pViewData->GetTabNo() );
+ }
+ else if (pViewData->IsFillMode() ||
+ (pViewData->GetFillMode() == SC_FILL_MATRIX && (nScFillModeMouseModifier & KEY_MOD1) ))
+ {
+ // Wenn eine Matrix angefasst wurde, kann mit Ctrl auf AutoFill zurueckgeschaltet werden
+
+ USHORT nStartX, nStartY, nEndX, nEndY; // Block
+ USHORT nDummy;
+ pViewData->GetSimpleArea( nStartX, nStartY, nDummy, nEndX, nEndY, nDummy, FALSE );
+
+ if (pViewData->GetRefType() != SC_REFTYPE_FILL)
+ {
+ pView->InitRefMode( nStartX, nStartY, nTab, SC_REFTYPE_FILL );
+ CreateAnchor();
+ }
+
+ ScRange aDelRange;
+ BOOL bOldDelMark = pViewData->GetDelMark( aDelRange );
+ ScDocument* pDoc = pViewData->GetDocument();
+
+ if ( nPosX+1 >= (short) nStartX && nPosX <= (short) nEndX &&
+ nPosY+1 >= (short) nStartY && nPosY <= (short) nEndY &&
+ ( nPosX != nEndX || nPosY != nEndY ) ) // verkleinern ?
+ {
+ // Richtung (links oder oben)
+
+ short i;
+ long nSizeX = 0;
+ for (i=nPosX+1; i<=nEndX; i++)
+ nSizeX += pDoc->GetColWidth( i, nTab );
+ long nSizeY = 0;
+ for (i=nPosY+1; i<=nEndY; i++)
+ nSizeY += pDoc->GetRowHeight( i, nTab );
+
+ USHORT nDelStartX = nStartX;
+ USHORT nDelStartY = nStartY;
+ if ( nSizeX > nSizeY )
+ nDelStartX = nPosX + 1;
+ else
+ nDelStartY = nPosY + 1;
+ // 0 braucht nicht mehr getrennt abgefragt zu werden, weil nPosX/Y auch negativ wird
+
+ if ( nDelStartX < nStartX )
+ nDelStartX = nStartX;
+ if ( nDelStartY < nStartY )
+ nDelStartY = nStartY;
+
+ // Bereich setzen
+
+ pViewData->SetDelMark( ScRange( nDelStartX,nDelStartY,nTab,
+ nEndX,nEndY,nTab ) );
+
+ if ( bOldDelMark )
+ {
+ ScUpdateRect aRect( aDelRange.aStart.Col(), aDelRange.aStart.Row(),
+ aDelRange.aEnd.Col(), aDelRange.aEnd.Row() );
+ aRect.SetNew( nDelStartX,nDelStartY, nEndX,nEndY );
+ USHORT nPaintStartX;
+ USHORT nPaintStartY;
+ USHORT nPaintEndX;
+ USHORT nPaintEndY;
+ if (aRect.GetDiff( nPaintStartX, nPaintStartY, nPaintEndX, nPaintEndY ))
+ pViewData->GetView()->
+ PaintArea( nPaintStartX, nPaintStartY,
+ nPaintEndX, nPaintEndY, SC_UPDATE_MARKS );
+ }
+ else
+ pViewData->GetView()->
+ PaintArea( nStartX,nDelStartY, nEndX,nEndY, SC_UPDATE_MARKS );
+
+ nPosX = nEndX; // roten Rahmen um ganzen Bereich lassen
+ nPosY = nEndY;
+
+ // Referenz wieder richtigherum, falls unten umgedreht
+ if ( nStartX != pViewData->GetRefStartX() || nStartY != pViewData->GetRefStartY() )
+ {
+ pViewData->GetView()->DoneRefMode();
+ pViewData->GetView()->InitRefMode( nStartX, nStartY, nTab, SC_REFTYPE_FILL );
+ }
+ }
+ else
+ {
+ if ( bOldDelMark )
+ {
+ pViewData->ResetDelMark();
+ pViewData->GetView()->
+ PaintArea( aDelRange.aStart.Col(), aDelRange.aStart.Row(),
+ aDelRange.aEnd.Col(), aDelRange.aEnd.Row(), SC_UPDATE_MARKS );
+ }
+
+ BOOL bNegX = ( nPosX < (short) nStartX );
+ BOOL bNegY = ( nPosY < (short) nStartY );
+ short i;
+
+ long nSizeX = 0;
+ if ( bNegX )
+ {
+ ++nPosX;
+ for (i=nPosX; i<nStartX; i++)
+ nSizeX += pDoc->GetColWidth( i, nTab );
+ }
+ else
+ for (i=nEndX+1; i<=nPosX; i++)
+ nSizeX += pDoc->GetColWidth( i, nTab );
+
+ long nSizeY = 0;
+ if ( bNegY )
+ {
+ ++nPosY;
+ for (i=nPosY; i<nStartY; i++)
+ nSizeY += pDoc->GetRowHeight( i, nTab );
+ }
+ else
+ for (i=nEndY+1; i<=nPosY; i++)
+ nSizeY += pDoc->GetRowHeight( i, nTab );
+
+ if ( nSizeX > nSizeY ) // Fill immer nur in einer Richtung
+ {
+ nPosY = nEndY;
+ bNegY = FALSE;
+ }
+ else
+ {
+ nPosX = nEndX;
+ bNegX = FALSE;
+ }
+
+ USHORT nRefStX = bNegX ? nEndX : nStartX;
+ USHORT nRefStY = bNegY ? nEndY : nStartY;
+ if ( nRefStX != pViewData->GetRefStartX() || nRefStY != pViewData->GetRefStartY() )
+ {
+ pViewData->GetView()->DoneRefMode();
+ pViewData->GetView()->InitRefMode( nRefStX, nRefStY, nTab, SC_REFTYPE_FILL );
+ }
+ }
+
+ pView->UpdateRef( nPosX, nPosY, nTab );
+ }
+ else if (pViewData->IsAnyFillMode())
+ {
+ BYTE nMode = pViewData->GetFillMode();
+ if ( nMode == SC_FILL_EMBED_LT || nMode == SC_FILL_EMBED_RB )
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+ DBG_ASSERT( pDoc->IsEmbedded(), "!pDoc->IsEmbedded()" );
+ ScTripel aStart;
+ ScTripel aEnd;
+ pDoc->GetEmbedded( aStart, aEnd );
+ ScRefType eRefMode = (nMode == SC_FILL_EMBED_LT) ? SC_REFTYPE_EMBED_LT : SC_REFTYPE_EMBED_RB;
+ if (pViewData->GetRefType() != eRefMode)
+ {
+ if ( nMode == SC_FILL_EMBED_LT )
+ pView->InitRefMode( aEnd.GetCol(), aEnd.GetRow(), nTab, eRefMode );
+ else
+ pView->InitRefMode( aStart.GetCol(), aStart.GetRow(), nTab, eRefMode );
+ CreateAnchor();
+ }
+
+ pView->UpdateRef( nPosX, nPosY, nTab );
+ }
+ else if ( nMode == SC_FILL_MATRIX )
+ {
+ USHORT nStartX, nStartY, nEndX, nEndY; // Block
+ USHORT nDummy;
+ pViewData->GetSimpleArea( nStartX, nStartY, nDummy, nEndX, nEndY, nDummy, FALSE );
+
+ if (pViewData->GetRefType() != SC_REFTYPE_FILL)
+ {
+ pView->InitRefMode( nStartX, nStartY, nTab, SC_REFTYPE_FILL );
+ CreateAnchor();
+ }
+
+ if ( nPosX < nStartX ) nPosX = nStartX;
+ if ( nPosY < nStartY ) nPosY = nStartY;
+
+ pView->UpdateRef( nPosX, nPosY, nTab );
+ }
+ // else neue Modi
+ }
+ else // normales Markieren
+ {
+ BOOL bHideCur = bAnchor && ( (USHORT)nPosX != pViewData->GetCurX() ||
+ (USHORT)nPosY != pViewData->GetCurY() );
+ if (bHideCur)
+ pView->HideAllCursors(); // sonst zweimal: Block und SetCursor
+
+ if (bAnchor)
+ {
+ if (!bStarted)
+ {
+ BOOL bMove = ( nPosX != (short) aAnchorPos.GetCol() ||
+ nPosY != (short) aAnchorPos.GetRow() );
+ if ( bMove || ( pEngine && pEngine->GetMouseEvent().IsShift() ) )
+ {
+ pView->InitBlockMode( aAnchorPos.GetCol(), aAnchorPos.GetRow(),
+ aAnchorPos.GetTab(), TRUE );
+ bStarted = TRUE;
+ }
+ }
+ if (bStarted)
+ pView->MarkCursor( (USHORT) nPosX, (USHORT) nPosY, nTab );
+ }
+ else
+ {
+ ScMarkData& rMark = pViewData->GetMarkData();
+ if (rMark.IsMarked() || rMark.IsMultiMarked())
+ {
+ pView->DoneBlockMode(TRUE);
+ pView->InitBlockMode( nPosX, nPosY, nTab, TRUE );
+ pView->MarkCursor( (USHORT) nPosX, (USHORT) nPosY, nTab );
+
+ aAnchorPos.Put( nPosX, nPosY, nTab );
+ bStarted = TRUE;
+ }
+ }
+
+ pView->SetCursor( (USHORT) nPosX, (USHORT) nPosY );
+ pViewData->SetRefStart( nPosX, nPosY, nTab );
+ if (bHideCur)
+ pView->ShowAllCursors();
+ }
+
+ if (bHide)
+ pView->ShowAllCursors();
+
+ return TRUE;
+}
+
+BOOL __EXPORT ScViewFunctionSet::IsSelectionAtPoint( const Point& rPointPixel )
+{
+ BOOL bRefMode = SC_MOD()->IsFormulaMode();
+ if (bRefMode)
+ return FALSE;
+
+ if (pViewData->IsAnyFillMode())
+ return FALSE;
+
+ ScMarkData& rMark = pViewData->GetMarkData();
+ if (bAnchor || !rMark.IsMultiMarked())
+ {
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( rPointPixel.X(), rPointPixel.Y(), GetWhich(), nPosX, nPosY );
+ return pViewData->GetMarkData().IsCellMarked( (USHORT) nPosX, (USHORT) nPosY );
+ }
+
+ return FALSE;
+}
+
+void __EXPORT ScViewFunctionSet::DeselectAtPoint( const Point& rPointPixel )
+{
+ // gibt's nicht
+}
+
+void __EXPORT ScViewFunctionSet::DeselectAll()
+{
+ if (pViewData->IsAnyFillMode())
+ return;
+
+ BOOL bRefMode = SC_MOD()->IsFormulaMode();
+ if (bRefMode)
+ {
+ pViewData->GetView()->DoneRefMode( FALSE );
+ }
+ else
+ {
+ pViewData->GetView()->DoneBlockMode( FALSE );
+ pViewData->GetViewShell()->UpdateInputHandler();
+ }
+
+ bAnchor = FALSE;
+}
+
+//------------------------------------------------------------------------
+
+ScViewSelectionEngine::ScViewSelectionEngine( Window* pWindow, ScTabView* pView,
+ ScSplitPos eSplitPos ) :
+ SelectionEngine( pWindow, pView->GetFunctionSet() ),
+ eWhich( eSplitPos )
+{
+ // Parameter einstellen
+ SetSelectionMode( MULTIPLE_SELECTION );
+ EnableDrag( TRUE );
+}
+
+
+//------------------------------------------------------------------------
+
+//
+// Spalten- / Zeilenheader
+//
+
+ScHeaderFunctionSet::ScHeaderFunctionSet( ScViewData* pNewViewData ) :
+ pViewData( pNewViewData ),
+ bColumn( FALSE ),
+ eWhich( SC_SPLIT_TOPLEFT ),
+ bAnchor( FALSE ),
+ nCursorPos( 0 )
+{
+ DBG_ASSERT(pViewData, "ViewData==0 bei FunctionSet");
+}
+
+void ScHeaderFunctionSet::SetColumn( BOOL bSet )
+{
+ bColumn = bSet;
+}
+
+void ScHeaderFunctionSet::SetWhich( ScSplitPos eNew )
+{
+ eWhich = eNew;
+}
+
+void __EXPORT ScHeaderFunctionSet::BeginDrag()
+{
+ // gippsnich
+}
+
+void __EXPORT ScHeaderFunctionSet::CreateAnchor()
+{
+ if (bAnchor)
+ return;
+
+ ScTabView* pView = pViewData->GetView();
+ pView->DoneBlockMode( TRUE );
+ if (bColumn)
+ {
+ pView->InitBlockMode( nCursorPos, 0, pViewData->GetTabNo(), TRUE, TRUE, FALSE );
+ pView->MarkCursor( nCursorPos, MAXROW, pViewData->GetTabNo() );
+ }
+ else
+ {
+ pView->InitBlockMode( 0, nCursorPos, pViewData->GetTabNo(), TRUE, FALSE, TRUE );
+ pView->MarkCursor( MAXCOL, nCursorPos, pViewData->GetTabNo() );
+ }
+ bAnchor = TRUE;
+}
+
+void __EXPORT ScHeaderFunctionSet::DestroyAnchor()
+{
+ pViewData->GetView()->DoneBlockMode( TRUE );
+ bAnchor = FALSE;
+}
+
+BOOL __EXPORT ScHeaderFunctionSet::SetCursorAtPoint( const Point& rPointPixel, BOOL bDontSelectAtCursor )
+{
+ if ( bDidSwitch )
+ {
+ // die naechste gueltige Position muss vom anderen Fenster kommen
+ if ( rPointPixel == aSwitchPos )
+ return FALSE; // nicht auf falschem Fenster scrollen
+ else
+ bDidSwitch = FALSE;
+ }
+
+ // Scrolling
+
+ Size aWinSize = pViewData->GetActiveWin()->GetOutputSizePixel();
+ BOOL bScroll;
+ if (bColumn)
+ bScroll = ( rPointPixel.X() < 0 || rPointPixel.X() >= aWinSize.Width() );
+ else
+ bScroll = ( rPointPixel.Y() < 0 || rPointPixel.Y() >= aWinSize.Height() );
+
+ // ueber Fixier-Grenze bewegt?
+
+ BOOL bSwitched = FALSE;
+ if ( bColumn )
+ {
+ if ( pViewData->GetHSplitMode() == SC_SPLIT_FIX )
+ {
+ if ( rPointPixel.X() > aWinSize.Width() )
+ {
+ if ( eWhich == SC_SPLIT_TOPLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_TOPRIGHT ), bSwitched = TRUE;
+ else if ( eWhich == SC_SPLIT_BOTTOMLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMRIGHT ), bSwitched = TRUE;
+ }
+ }
+ }
+ else // Zeilenkoepfe
+ {
+ if ( pViewData->GetVSplitMode() == SC_SPLIT_FIX )
+ {
+ if ( rPointPixel.Y() > aWinSize.Height() )
+ {
+ if ( eWhich == SC_SPLIT_TOPLEFT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMLEFT ), bSwitched = TRUE;
+ else if ( eWhich == SC_SPLIT_TOPRIGHT )
+ pViewData->GetView()->ActivatePart( SC_SPLIT_BOTTOMRIGHT ), bSwitched = TRUE;
+ }
+ }
+ }
+ if (bSwitched)
+ {
+ aSwitchPos = rPointPixel;
+ bDidSwitch = TRUE;
+ return FALSE; // nicht mit falschen Positionen rechnen
+ }
+
+ //
+
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( rPointPixel.X(), rPointPixel.Y(), pViewData->GetActivePart(),
+ nPosX, nPosY, FALSE );
+ if (bColumn)
+ {
+ nCursorPos = nPosX;
+ nPosY = pViewData->GetPosY(WhichV(pViewData->GetActivePart()));
+ }
+ else
+ {
+ nCursorPos = nPosY;
+ nPosX = pViewData->GetPosX(WhichH(pViewData->GetActivePart()));
+ }
+
+ ScTabView* pView = pViewData->GetView();
+ BOOL bHide = pViewData->GetCurX() != nPosX ||
+ pViewData->GetCurY() != nPosY;
+ if (bHide)
+ pView->HideAllCursors();
+
+ if (bScroll)
+ pView->AlignToCursor( nPosX, nPosY, SC_FOLLOW_LINE );
+ pView->SetCursor( nPosX, nPosY );
+
+ if (!bAnchor)
+ {
+ pView->DoneBlockMode( TRUE );
+ pViewData->GetMarkData().MarkToMulti(); //! wer verstellt das ???
+ pView->InitBlockMode( nPosX, nPosY, pViewData->GetTabNo(), TRUE, bColumn, !bColumn );
+
+ bAnchor = TRUE;
+ }
+
+ pView->MarkCursor( nPosX, nPosY, pViewData->GetTabNo(), bColumn, !bColumn );
+
+ // SelectionChanged innerhalb von HideCursor wegen UpdateAutoFillMark
+ pView->SelectionChanged();
+
+ if (bHide)
+ pView->ShowAllCursors();
+
+ return TRUE;
+}
+
+BOOL __EXPORT ScHeaderFunctionSet::IsSelectionAtPoint( const Point& rPointPixel )
+{
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( rPointPixel.X(), rPointPixel.Y(), pViewData->GetActivePart(),
+ nPosX, nPosY, FALSE );
+
+ ScMarkData& rMark = pViewData->GetMarkData();
+ if (bColumn)
+ return rMark.IsColumnMarked( nPosX );
+ else
+ return rMark.IsRowMarked( nPosY );
+}
+
+void __EXPORT ScHeaderFunctionSet::DeselectAtPoint( const Point& rPointPixel )
+{
+}
+
+void __EXPORT ScHeaderFunctionSet::DeselectAll()
+{
+ pViewData->GetView()->DoneBlockMode( FALSE );
+ bAnchor = FALSE;
+}
+
+//------------------------------------------------------------------------
+
+ScHeaderSelectionEngine::ScHeaderSelectionEngine( Window* pWindow, ScHeaderFunctionSet* pFuncSet ) :
+ SelectionEngine( pWindow, pFuncSet )
+{
+ // Parameter einstellen
+ SetSelectionMode( MULTIPLE_SELECTION );
+ EnableDrag( FALSE );
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/spelleng.cxx b/sc/source/ui/view/spelleng.cxx
new file mode 100644
index 000000000000..147d40cbefd0
--- /dev/null
+++ b/sc/source/ui/view/spelleng.cxx
@@ -0,0 +1,376 @@
+/*************************************************************************
+ *
+ * $RCSfile: spelleng.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/langitem.hxx>
+#include <svx/editobj.hxx>
+#include <svx/editview.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/system.hxx>
+
+#ifndef ONE_LINGU
+#include <hm2/splchk.hxx>
+#endif
+
+#include "spelleng.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "cell.hxx"
+#include "patattr.hxx"
+#include "waitoff.hxx"
+#include "globstr.hrc"
+
+
+// -----------------------------------------------------------------------
+
+BOOL lcl_HasString( ScDocument* pDoc, USHORT nCol, USHORT nRow, USHORT nTab,
+ const String& rString )
+{
+ String aCompStr;
+ pDoc->GetString( nCol, nRow, nTab, aCompStr );
+ return ( aCompStr == rString ); //! case-insensitive?
+}
+
+BOOL __EXPORT ScSpellingEngine::SpellNextDocument()
+{
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+ ScTabViewShell* pViewShell = pViewData->GetViewShell();
+ ScSplitPos eWhich = pViewData->GetActivePart();
+ CellType eCellType;
+ ScBaseCell* pCell = NULL;
+ LanguageType eLnge;
+ EditTextObject* pETObject = NULL;
+ const SfxPoolItem* pItem = NULL;
+ SvxLanguageItem* pLangIt = NULL;
+ const ScPatternAttr* pPattern = NULL;
+ const ScPatternAttr* pLastPattern = NULL;
+ SfxItemSet* pEditDefaults = new SfxItemSet( GetEmptyItemSet() );
+
+ if (IsModified())
+ {
+ bIsModifiedAtAll = TRUE;
+
+ String aNewStr = GetText();
+
+ BOOL bMultiTab = ( rMark.GetSelectCount() > 1 );
+ String aVisibleStr;
+ if (bMultiTab)
+ pDoc->GetString( nOldCol, nOldRow, nOrgTab, aVisibleStr );
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ for ( USHORT nTab=0; nTab<nTabCount; nTab++ )
+ {
+ // #69965# always change the cell on the visible tab,
+ // on the other selected tabs only if they contain the same text
+
+ if ( nTab == nOrgTab || ( bMultiTab && rMark.GetTableSelect(nTab) &&
+ lcl_HasString( pDoc, nOldCol, nOldRow, nTab, aVisibleStr ) ) )
+ {
+ pDoc->GetCellType(nOldCol, nOldRow, nTab, eCellType);
+ pDoc->GetCell(nOldCol, nOldRow, nTab, pCell);
+ if (pUndoDoc && pCell)
+ {
+ ScBaseCell* pUndoCell = pCell->Clone(pUndoDoc);
+ pUndoDoc->PutCell(nOldCol, nOldRow, nTab, pUndoCell);
+ }
+ if (eCellType == CELLTYPE_EDIT)
+ {
+ if (pCell)
+ {
+ pETObject = CreateTextObject();
+ ((ScEditCell*) pCell)->SetData( pETObject, GetEditTextObjectPool() );
+ delete pETObject;
+ }
+ }
+ else
+ {
+ pDoc->SetString(nOldCol, nOldRow, nTab, aNewStr);
+ pDoc->GetCell(nOldCol, nOldRow, nTab, pCell);
+ }
+ if (pRedoDoc && pCell)
+ {
+ ScBaseCell* pRedoCell = pCell->Clone(pRedoDoc);
+ pRedoDoc->PutCell(nOldCol, nOldRow, nTab, pRedoCell);
+ }
+ pDocSh->PostPaintCell(nOldCol, nOldRow, nTab);
+ }
+ }
+ }
+ pCell = NULL;
+ USHORT nCol, nRow;
+ BOOL bStop = FALSE;
+ BOOL bNext;
+ nCol = nOldCol;
+ if (bFirstTime)
+ {
+ bFirstTime = FALSE;
+ if (nOldCol == nOrgCol && nOldRow == nOrgRow) // das erste Mal
+ nRow = nOldRow-1;
+ else
+ nRow = nOldRow;
+ }
+ else
+ nRow = nOldRow;
+ while (!bStop)
+ {
+ bNext = pDoc->GetNextSpellingCell(nCol, nRow, nOrgTab, bInSel, rMark);
+ if (bNext)
+ {
+ if (!bFirstTable &&
+ (nCol > nOrgCol || (nCol == nOrgCol && nRow >= nOrgRow)))
+ {
+ pDoc->GetCellType(nOldCol, nOldRow, nOrgTab, eCellType);
+ if (eCellType == CELLTYPE_STRING)
+ {
+ String sOldText;
+ pDoc->GetString(nOldCol, nOldRow, nOrgTab, sOldText);
+ SetText(sOldText);
+ }
+ else if (eCellType == CELLTYPE_EDIT)
+ {
+ pDoc->GetCell(nOldCol, nOldRow, nOrgTab, pCell);
+ if (pCell)
+ {
+ const EditTextObject* pNewTObj = NULL;
+ ((ScEditCell*) pCell)->GetData(pNewTObj);
+ if (pNewTObj)
+ SetText(*pNewTObj);
+ }
+ }
+ else
+ SetText(EMPTY_STRING);
+
+ { // own scope for WaitCursorOff
+ ScWaitCursorOff aWaitOff( pDocSh->GetDialogParent() );
+ InfoBox aBox( pViewData->GetDialogParent(),
+ ScGlobal::GetRscString(STR_SPELLING_STOP_OK));
+ aBox.Execute();
+ }
+ return FALSE;
+ }
+ else if ( nCol == MAXCOL+1 )
+ {
+ if ( nOrgCol == 0 && nOrgRow == 0 )
+ {
+ pDoc->GetCellType(nOldCol, nOldRow, nOrgTab, eCellType);
+ if (eCellType == CELLTYPE_STRING)
+ {
+ String sOldText;
+ pDoc->GetString(nOldCol, nOldRow, nOrgTab, sOldText);
+ SetText(sOldText);
+ }
+ else if (eCellType == CELLTYPE_EDIT)
+ {
+ pDoc->GetCell(nOldCol, nOldRow, nOrgTab, pCell);
+ if (pCell)
+ {
+ const EditTextObject* pNewTObj = NULL;
+ ((ScEditCell*) pCell)->GetData(pNewTObj);
+ if (pNewTObj)
+ SetText(*pNewTObj);
+ }
+ }
+ else
+ SetText(EMPTY_STRING);
+
+ { // own scope for WaitCursorOff
+ ScWaitCursorOff aWaitOff( pDocSh->GetDialogParent() );
+ InfoBox aBox( pViewData->GetDialogParent(),
+ ScGlobal::GetRscString(STR_SPELLING_STOP_OK));
+ aBox.Execute();
+ }
+
+ return FALSE;
+ }
+ else
+ {
+ // zuerst auf letzte Zelle zuruecksetzen
+ // fuer Paint
+ pDoc->GetCellType(nOldCol, nOldRow, nOrgTab, eCellType);
+ if (eCellType == CELLTYPE_STRING)
+ {
+ String sOldText;
+ pDoc->GetString(nOldCol, nOldRow, nOrgTab, sOldText);
+ SetText(sOldText);
+ }
+ else if (eCellType == CELLTYPE_EDIT)
+ {
+ pDoc->GetCell(nOldCol, nOldRow, nOrgTab, pCell);
+ if (pCell)
+ {
+ const EditTextObject* pNewTObj = NULL;
+ ((ScEditCell*) pCell)->GetData(pNewTObj);
+ if (pNewTObj)
+ SetText(*pNewTObj);
+ }
+ }
+ else
+ SetText(EMPTY_STRING);
+
+ short nRet;
+ { // own scope for WaitCursorOff
+ ScWaitCursorOff aWaitOff( pDocSh->GetDialogParent() );
+ nRet = MessBox( pViewData->GetDialogParent(),
+ WinBits(WB_YES_NO | WB_DEF_YES),
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_0 ), // "StarCalc"
+ ScGlobal::GetRscString( STR_SPELLING_BEGIN_TAB) ) // Fortsetzen?
+ .Execute();
+ }
+ if (nRet == RET_YES)
+ {
+ nRow = MAXROW+2;
+ bFirstTable = FALSE;
+ }
+ else
+ return FALSE;
+ }
+ }
+ else // Stringzelle mit Inhalt
+ {
+ pPattern = pDoc->GetPattern(nCol, nRow, nOrgTab);
+ if (pPattern && pPattern != pLastPattern)
+ {
+ pPattern->FillEditItemSet( pEditDefaults );
+ SetDefaults( *pEditDefaults );
+ pLastPattern = pPattern;
+ }
+ pItem = pDoc->GetAttr(nCol, nRow, nOrgTab, ATTR_FONT_LANGUAGE);
+ pLangIt = PTR_CAST( SvxLanguageItem, pItem );
+ if (pLangIt)
+ {
+ eLnge = (LanguageType) pLangIt->GetValue();
+ if ( eLnge == LANGUAGE_SYSTEM )
+ eLnge = System::GetLanguage(); // Spelling nie mit SYSTEM
+ if (eLnge != eOldLnge)
+ {
+ eOldLnge = eLnge;
+#ifdef ONE_LINGU
+ SetDefaultLanguage( eLnge );
+#else
+ SpellCheck* pSpCheck = GetSpeller();
+ if (pSpCheck)
+ pSpCheck->SetActualLanguage(eLnge);
+ else
+ {
+ DBG_ERROR(
+ "ScSpellingEngine::SpellNextDoc: Kein Spell Checker");
+ }
+#endif
+ }
+ }
+ pDoc->GetCellType(nCol, nRow, nOrgTab, eCellType);
+ if (eCellType == CELLTYPE_STRING)
+ {
+ String sOldText;
+ pDoc->GetString(nCol, nRow, nOrgTab, sOldText);
+ SetText(sOldText);
+ }
+ else if (eCellType == CELLTYPE_EDIT)
+ {
+ pDoc->GetCell(nCol, nRow, nOrgTab, pCell);
+ if (pCell)
+ {
+ const EditTextObject* pNewTObj = NULL;
+ ((ScEditCell*) pCell)->GetData(pNewTObj);
+ if (pNewTObj)
+ SetText(*pNewTObj);
+ }
+ }
+ else
+ SetText(EMPTY_STRING);
+ if (HasSpellErrors(eLnge))
+ bStop = TRUE;
+ }
+ }
+ else
+ return FALSE;
+ }
+ pViewShell->AlignToCursor( nCol, nRow, SC_FOLLOW_JUMP );
+ pViewShell->SetCursor( nCol, nRow, TRUE );
+ pViewData->GetView()->MakeEditView(this, nCol, nRow );
+ EditView* pEditView = pViewData->GetSpellingView();
+ if (pEditSel) // hoechstens beim ersten Mal
+ {
+ pEditView->SetSelection(*pEditSel);
+ pEditSel = NULL;
+ }
+ else
+ pEditView->SetSelection(ESelection(0,0,0,0));
+ ClearModifyFlag();
+ nOldCol = nCol;
+ nOldRow = nRow;
+ delete pEditDefaults;
+ return TRUE;
+}
+
+
+
+
diff --git a/sc/source/ui/view/tabcont.cxx b/sc/source/ui/view/tabcont.cxx
new file mode 100644
index 000000000000..f79d9f4d1e63
--- /dev/null
+++ b/sc/source/ui/view/tabcont.cxx
@@ -0,0 +1,566 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabcont.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sfx2/dispatch.hxx>
+#include <vcl/sound.hxx>
+
+#include "tabcont.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "scmod.hxx"
+#include "scresid.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "dataobj.hxx"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+//==================================================================
+
+ScTabControl::ScTabControl( Window* pParent, ScViewData* pData ) :
+ TabBar( pParent, WinBits( WB_BORDER | WB_3DLOOK | WB_SCROLL |
+ WB_RANGESELECT | WB_MULTISELECT | WB_DRAG | WB_SIZEABLE ) ),
+ pViewData( pData ),
+ bDragging( FALSE ),
+ bErrorShown( FALSE ),
+ bAddDown( FALSE )
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+
+ String aString;
+ USHORT nCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ if (pDoc->IsVisible(i))
+ if (pDoc->GetName(i,aString))
+ if ( pDoc->IsScenario(i) )
+ InsertPage( i+1, aString, TPB_SPECIAL );
+ else
+ InsertPage( i+1, aString );
+ }
+
+ SetCurPageId( pViewData->GetTabNo() + 1 );
+
+ SetSizePixel( Size(SC_TABBAR_DEFWIDTH, 0) );
+
+ SetSplitHdl( LINK( pViewData->GetView(), ScTabView, TabBarResize ) );
+
+ EnableEditMode();
+}
+
+__EXPORT ScTabControl::~ScTabControl()
+{
+}
+
+USHORT ScTabControl::GetMaxId() const
+{
+ USHORT nVisCnt = GetPageCount();
+ if (nVisCnt)
+ return GetPageId(nVisCnt-1);
+
+ return 0;
+}
+
+USHORT ScTabControl::GetPrivatDropPos(const Point& rPos )
+{
+ USHORT nPos = ShowDropPos(rPos);
+
+ USHORT nRealPos = nPos;
+
+ if(nPos !=0 )
+ {
+ ScDocument* pDoc = pViewData->GetDocument();
+
+ USHORT nCount = pDoc->GetTableCount();
+
+ USHORT nViewPos=0;
+ nRealPos = nCount;
+ for (USHORT i=0; i<nCount; i++)
+ {
+ if (pDoc->IsVisible(i))
+ {
+ nViewPos++;
+ if(nViewPos==nPos)
+ {
+ USHORT j;
+ for (j=i+1; j<nCount; j++)
+ {
+ if (pDoc->IsVisible(j))
+ {
+ break;
+ }
+ }
+ nRealPos =j;
+ break;
+ }
+ }
+ }
+ }
+ return nRealPos ;
+}
+
+void __EXPORT ScTabControl::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ bAddDown = FALSE;
+
+ ScModule* pScMod = SC_MOD();
+ if ( !pScMod->IsModalMode() && !pScMod->IsFormulaMode() && !IsInEditMode() )
+ {
+ // View aktivieren
+ pViewData->GetViewShell()->SetActive(); // Appear und SetViewFrame
+ pViewData->GetView()->ActiveGrabFocus();
+ }
+
+ // #47745# Klick neben Tabellen -> neue Tabelle einfuegen (wie im Draw)
+ // eine saubere linke Maustaste ohne verwaessernde Modifier (damit koennte
+ /// ja das Kontextmenue gemeint sein)
+ if ( rMEvt.IsLeft() && !rMEvt.IsMod1() && !rMEvt.IsMod2() && !rMEvt.IsShift())
+ {
+ Point aPos = PixelToLogic( rMEvt.GetPosPixel() );
+ if ( GetPageId(aPos) == 0 )
+ bAddDown = TRUE; // erst im ButtonUp, weil ein Dialog kommt
+ }
+
+ TabBar::MouseButtonDown( rMEvt );
+}
+
+void __EXPORT ScTabControl::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ if ( bAddDown )
+ {
+ Point aPos = PixelToLogic( rMEvt.GetPosPixel() );
+ if ( GetPageId(aPos) == 0 )
+ {
+ SfxDispatcher* pDispatcher = pViewData->GetViewShell()->GetViewFrame()->GetDispatcher();
+ pDispatcher->Execute( FID_INS_TABLE, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD );
+ }
+ }
+
+ bAddDown = FALSE;
+ TabBar::MouseButtonUp( rMEvt );
+}
+
+void __EXPORT ScTabControl::Select()
+{
+ ScModule* pScMod = SC_MOD();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nCount = pDoc->GetTableCount();
+ USHORT i;
+
+ if ( pScMod->IsTableLocked() ) // darf jetzt nicht umgeschaltet werden ?
+ {
+ // den alten Zustand des TabControls wiederherstellen:
+
+ for (i=0; i<nCount; i++)
+ SelectPage( i+1, rMark.GetTableSelect(i) );
+ SetCurPageId( pViewData->GetTabNo() + 1 );
+
+ Sound::Beep();
+ return;
+ }
+
+ USHORT nCurId = GetCurPageId();
+ if (!nCurId) return; // kann vorkommen, wenn bei Excel-Import alles versteckt ist
+ USHORT nPage = nCurId - 1;
+
+ // OLE-inplace deaktivieren
+ if ( nPage != pViewData->GetTabNo() )
+ pViewData->GetView()->DrawMarkListHasChanged();
+
+ // InputEnterHandler nur wenn nicht Referenzeingabe
+
+ BOOL bRefMode = pScMod->IsFormulaMode();
+ if (!bRefMode)
+ pScMod->InputEnterHandler();
+
+ for (i=0; i<nCount; i++)
+ rMark.SelectTable( i, IsPageSelected(i+1) );
+
+/* Markierungen werden per Default nicht pro Tabelle gehalten
+ USHORT nSelCnt = GetSelectPageCount();
+ if (nSelCnt>1)
+ pDoc->ExtendMarksFromTable( nPage );
+*/
+
+ if (SFX_DISPATCHER().IsLocked())
+ pViewData->GetView()->SetTabNo( nPage );
+ else
+ {
+ // Tabelle fuer Basic ist 1-basiert
+ SfxUInt16Item aItem( SID_CURRENTTAB, nPage + 1 );
+ SFX_DISPATCHER().Execute( SID_CURRENTTAB, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
+ &aItem, (void*) NULL );
+ }
+
+ SfxBindings& rBind = SFX_BINDINGS();
+ rBind.Invalidate( FID_FILL_TAB );
+
+ rBind.Invalidate( FID_INS_TABLE );
+ rBind.Invalidate( FID_TAB_APPEND );
+ rBind.Invalidate( FID_TAB_MOVE );
+ rBind.Invalidate( FID_TAB_RENAME );
+ rBind.Invalidate( FID_DELETE_TABLE );
+ rBind.Invalidate( FID_TABLE_SHOW );
+ rBind.Invalidate( FID_TABLE_HIDE );
+
+ // SetReference nur wenn der Konsolidieren-Dialog offen ist
+ // (fuer Referenzen ueber mehrere Tabellen)
+ // bei anderen gibt das nur unnoetiges Gezappel
+
+ if ( bRefMode && pViewData->GetRefType() == SC_REFTYPE_REF )
+ if ( pViewData->GetViewShell()->GetViewFrame()->HasChildWindow(SID_OPENDLG_CONSOLIDATE) )
+ {
+ ScRange aRange(
+ pViewData->GetRefStartX(), pViewData->GetRefStartY(), pViewData->GetRefStartZ(),
+ pViewData->GetRefEndX(), pViewData->GetRefEndY(), pViewData->GetRefEndZ() );
+ pScMod->SetReference( aRange, pDoc, &rMark );
+ pScMod->EndReference(); // wegen Auto-Hide
+ }
+}
+
+void ScTabControl::UpdateStatus()
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+ BOOL bActive = pViewData->IsActive();
+
+ USHORT nCount = pDoc->GetTableCount();
+ USHORT i;
+ String aString;
+ USHORT nMaxCnt = Max( nCount, GetMaxId() );
+
+ BOOL bModified = FALSE; // Tabellen-Namen
+ for (i=0; i<nMaxCnt && !bModified; i++)
+ {
+ if (pDoc->IsVisible(i))
+ pDoc->GetName(i,aString);
+ else
+ aString.Erase();
+
+ if (GetPageText(i+1) != aString)
+ bModified = TRUE;
+ }
+
+ if (bModified)
+ {
+ Clear();
+ for (i=0; i<nCount; i++)
+ if (pDoc->IsVisible(i))
+ if (pDoc->GetName(i,aString))
+ if ( pDoc->IsScenario(i) )
+ InsertPage( i+1, aString, TPB_SPECIAL );
+ else
+ InsertPage( i+1, aString );
+ }
+ SetCurPageId( pViewData->GetTabNo() + 1 );
+
+ if (bActive)
+ {
+ bModified = FALSE; // Selektion
+ for (i=0; i<nMaxCnt && !bModified; i++)
+ if ( rMark.GetTableSelect(i) != IsPageSelected(i+1) )
+ bModified = TRUE;
+
+ if ( bModified )
+ for (i=0; i<nCount; i++)
+ SelectPage( i+1, rMark.GetTableSelect(i) );
+ }
+ else
+ {
+ }
+}
+
+void ScTabControl::ActivateView(BOOL bActivate)
+{
+// ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+
+// ResetMark direkt in TabView
+// pDoc->ResetMark();
+
+ USHORT nCurId = GetCurPageId();
+ if (!nCurId) return; // kann vorkommen, wenn bei Excel-Import alles versteckt ist
+ USHORT nPage = nCurId - 1;
+ USHORT nCount = GetMaxId();
+
+ /*
+ USHORT i;
+ for (i=0; i<nCount; i++)
+ {
+ SelectPage( i+1, FALSE );
+ if (bActivate)
+ rMark.SelectTable( i, FALSE );
+ }
+ */
+ if (bActivate)
+ {
+ SelectPage( nPage+1, TRUE );
+ rMark.SelectTable( nPage, TRUE );
+ }
+ Invalidate();
+}
+
+void __EXPORT ScTabControl::Command( const CommandEvent& rCEvt )
+{
+ ScModule* pScMod = SC_MOD();
+ ScTabViewShell* pViewSh = pViewData->GetViewShell();
+ BOOL bDisable = pScMod->IsFormulaMode() || pScMod->IsModalMode();
+
+ // ViewFrame erstmal aktivieren (Bug 19493):
+ pViewSh->SetActive();
+
+ USHORT nCmd = rCEvt.GetCommand();
+ if ( nCmd == COMMAND_CONTEXTMENU )
+ {
+ if (!bDisable)
+ {
+ // nur eine Tabelle selektieren:
+ /*
+ USHORT nId = GetPageId( rCEvt.GetMousePosPixel() );
+ if (nId)
+ {
+ SetCurPageId( nId );
+ USHORT nCount = GetMaxId();
+
+ for (USHORT i=1; i<=nCount; i++)
+ SelectPage( i, i==nId );
+ Select();
+ }
+ */
+ // Popup-Menu:
+ pViewSh->GetDispatcher()->ExecutePopup( ScResId(RID_POPUP_TAB) );
+ }
+ }
+ else if ( nCmd == COMMAND_STARTDRAG )
+ {
+ if (!bDisable)
+ {
+ Region aRegion( Rectangle(0,0,0,0) );
+ if (StartDrag( rCEvt, aRegion ))
+ DoDrag( aRegion );
+ }
+ }
+}
+
+
+void ScTabControl::DoDrag( const Region& rRegion )
+{
+ ScModule* pScMod = SC_MOD();
+
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark= pViewData->GetMarkData();
+
+ USHORT nTab = pViewData->GetTabNo();
+ pScMod->SetDragObject( rMark, ScRange(0,0,nTab,MAXCOL,MAXROW,nTab), 0,0, pDoc, SC_DROP_TABLE );
+
+ bDragging = TRUE; // um Tabellen innerhalb dieses TabBars zu verschieben
+
+ SvDataObjectRef pDragServer = new ScDataObject(pDoc,FALSE,pViewData->GetDocShell());
+ DropAction eAction = pDragServer->ExecuteDrag(pViewData->GetActiveWin(),
+ Pointer(POINTER_MOVEDATA),
+ Pointer(POINTER_COPYDATA),
+ Pointer(POINTER_LINKDATA) );
+
+ bDragging = FALSE;
+
+ pScMod->ResetDragObject();
+
+ //! eAction auswerten
+}
+
+USHORT lcl_DocShellNr( ScDocument* pDoc )
+{
+ USHORT nShellCnt = 0;
+ SfxObjectShell* pShell = SfxObjectShell::GetFirst();
+ while ( pShell )
+ {
+ if ( pShell->Type() == TYPE(ScDocShell) )
+ {
+ if ( ((ScDocShell*)pShell)->GetDocument() == pDoc )
+ return nShellCnt;
+
+ ++nShellCnt;
+ }
+ pShell = SfxObjectShell::GetNext( *pShell );
+ }
+
+ DBG_ERROR("Dokument nicht gefunden");
+ return 0;
+}
+
+BOOL __EXPORT ScTabControl::Drop( const DropEvent& rEvt )
+{
+ EndSwitchPage();
+
+ ScModule* pScMod = SC_MOD();
+ ScDocument* pSourceDoc = pScMod->GetDragData().pDoc;
+ if (pSourceDoc && bDragging)
+ {
+ USHORT nPos = GetPrivatDropPos( rEvt.GetPosPixel() );
+ HideDropPos();
+ ScDocument* pDestDoc = pViewData->GetDocument();
+ if ( pSourceDoc == pDestDoc && pSourceDoc->IsDocEditable() )
+ {
+ pViewData->GetView()->MoveTable( lcl_DocShellNr(pDestDoc), nPos, rEvt.GetAction()==DROP_COPY );
+
+ pScMod->SetDragIntern(); // nicht loeschen
+ return TRUE;
+ }
+ else
+ Sound::Beep();
+ }
+
+ return FALSE;
+}
+
+BOOL __EXPORT ScTabControl::QueryDrop( DropEvent& rEvt )
+{
+ if (rEvt.IsLeaveWindow())
+ {
+ EndSwitchPage();
+ HideDropPos();
+ return TRUE;
+ }
+
+ if (bDragging) // innerhalb eines TabControls
+ {
+ const ScDocument* pDoc = pViewData->GetDocument();
+ if ( !pDoc->GetChangeTrack() && pDoc->IsDocEditable() )
+ {
+ ShowDropPos( rEvt.GetPosPixel() );
+ return TRUE;
+ }
+ }
+ else // umschalten fuer alle Formate
+ {
+ SwitchPage( rEvt.GetPosPixel() ); // switch sheet after timeout
+ return FALSE; // nothing can be dropped here
+ }
+
+ return FALSE;
+}
+
+long ScTabControl::StartRenaming()
+{
+ if ( pViewData->GetDocument()->IsDocEditable() )
+ return TAB_RENAMING_YES;
+ else
+ return TAB_RENAMING_NO;
+}
+
+long ScTabControl::AllowRenaming()
+{
+ ScTabViewShell* pViewSh = pViewData->GetViewShell();
+ DBG_ASSERT( pViewSh, "pViewData->GetViewShell()" );
+
+ long nRet = TAB_RENAMING_CANCEL;
+ USHORT nId = GetEditPageId();
+ if ( nId )
+ {
+ USHORT nTab = nId - 1;
+ String aNewName = GetEditText();
+ BOOL bDone = pViewSh->RenameTable( aNewName, nTab );
+ if ( bDone )
+ nRet = TAB_RENAMING_YES;
+ else if ( bErrorShown )
+ {
+ // if the error message from this TabControl is currently visible,
+ // don't end edit mode now, to avoid problems when returning to
+ // the other call (showing the error) - this should not happen
+ DBG_ERROR("ScTabControl::AllowRenaming: nested calls");
+ nRet = TAB_RENAMING_NO;
+ }
+ else if ( Application::IsInModalMode() )
+ {
+ // #73472# don't show error message above any modal dialog
+ // instead cancel renaming without error message
+ nRet = TAB_RENAMING_CANCEL;
+ }
+ else
+ {
+ bErrorShown = TRUE;
+ pViewSh->ErrorMessage( STR_INVALIDTABNAME );
+ bErrorShown = FALSE;
+ nRet = TAB_RENAMING_NO;
+ }
+ }
+ return nRet;
+}
+
+void ScTabControl::EndRenaming()
+{
+ if ( HasFocus() )
+ pViewData->GetView()->ActiveGrabFocus();
+}
+
+
+
+
diff --git a/sc/source/ui/view/tabpopsh.cxx b/sc/source/ui/view/tabpopsh.cxx
new file mode 100644
index 000000000000..34f27eaf60fd
--- /dev/null
+++ b/sc/source/ui/view/tabpopsh.cxx
@@ -0,0 +1,164 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabpopsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#define GLOBALOVERFLOW
+#include "segmentc.hxx"
+#include "tabpopsh.hxx"
+#include "sc.hrc"
+
+//#define ScTabPopShell
+//#include "scslots.hxx"
+#undef ShellClass
+#define ShellClass ScTabPopShell
+SFX_SLOTMAP(ScTabPopShell)
+{
+ SFX_SLOT( 0,0, DummyExec, DummyState, 0, SfxVoidItem )
+};
+SEG_EOFGLOBALS()
+
+#pragma SEG_SEGCLASS(SFXMACROS_SEG,STARTWORK_CODE)
+
+TYPEINIT1(ScTabPopShell,SfxShell);
+
+//SFX_IMPL_IDL_INTERFACE(ScTabPopShell, SfxShell, 0)
+SFX_IMPL_INTERFACE(ScTabPopShell, SfxShell, ResId( 0, NULL))
+{
+ SFX_POPUPMENU_REGISTRATION( RID_POPUP_TAB );
+}
+
+
+
+#pragma SEG_FUNCDEF(tabpopsh_01)
+
+ScTabPopShell::ScTabPopShell(SfxItemPool& rItemPool)
+{
+ SetPool( &rItemPool );
+}
+
+#pragma SEG_FUNCDEF(tabpopsh_02)
+
+ScTabPopShell::~ScTabPopShell()
+{
+}
+
+#pragma SEG_FUNCDEF(tabpopsh_03)
+
+void ScTabPopShell::DummyExec( SfxRequest& rReq )
+{
+}
+
+#pragma SEG_FUNCDEF(tabpopsh_04)
+
+void ScTabPopShell::DummyState( SfxItemSet& rSet )
+{
+}
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.12 2000/09/17 14:09:34 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.11 2000/08/31 16:38:47 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.10 1995/06/20 14:24:26 NN
+ nochmal Segmentierung
+
+
+ Rev 1.9 20 Jun 1995 16:24:26 NN
+ nochmal Segmentierung
+
+ Rev 1.8 13 Jun 1995 18:47:14 MO
+ seg-pragmas korrigiert
+
+ Rev 1.7 04 Apr 1995 19:22:16 TRI
+ OS2 Anpassung
+
+ Rev 1.6 24 Mar 1995 14:15:32 TRI
+ Segmentierung
+
+ Rev 1.5 21 Mar 1995 11:00:06 MO
+ 242-Aenderungen
+
+ Rev 1.4 05 Mar 1995 05:19:46 TRI
+ Mac Anpassung
+
+ Rev 1.3 03 Mar 1995 23:02:28 NN
+ 2.41 Anpassung
+
+ Rev 1.2 16 Feb 1995 10:33:10 NN
+ Slotmap ohne IDL wegen OS2-Problemen
+
+ Rev 1.1 15 Feb 1995 08:26:54 NN
+ DummyExec
+
+ Rev 1.0 14 Feb 1995 19:57:34 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/view/tabsplit.cxx b/sc/source/ui/view/tabsplit.cxx
new file mode 100644
index 000000000000..a74bdd2e4456
--- /dev/null
+++ b/sc/source/ui/view/tabsplit.cxx
@@ -0,0 +1,194 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabsplit.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef PCH
+#include <segmentc.hxx>
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "tabsplit.hxx"
+#include "viewdata.hxx"
+#include "dbfunc.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
+
+//==================================================================
+
+#pragma SEG_FUNCDEF(tabsplit_01)
+
+ScTabSplitter::ScTabSplitter( Window* pParent, WinBits nWinStyle, ScViewData* pData ) :
+ Splitter( pParent, nWinStyle ),
+ pViewData(pData)
+{
+ SetFixed(FALSE);
+}
+
+#pragma SEG_FUNCDEF(tabsplit_02)
+
+ScTabSplitter::~ScTabSplitter()
+{
+}
+
+#pragma SEG_FUNCDEF(tabsplit_03)
+
+void __EXPORT ScTabSplitter::MouseMove( const MouseEvent& rMEvt )
+{
+ if (bFixed)
+ Window::MouseMove( rMEvt );
+ else
+ Splitter::MouseMove( rMEvt );
+}
+
+#pragma SEG_FUNCDEF(tabsplit_04)
+
+void __EXPORT ScTabSplitter::MouseButtonUp( const MouseEvent& rMEvt )
+{
+ if (bFixed)
+ Window::MouseButtonUp( rMEvt );
+ else
+ Splitter::MouseButtonUp( rMEvt );
+}
+
+#pragma SEG_FUNCDEF(tabsplit_05)
+
+void __EXPORT ScTabSplitter::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if (bFixed)
+ Window::MouseButtonDown( rMEvt );
+ else
+ Splitter::MouseButtonDown( rMEvt );
+}
+
+#pragma SEG_FUNCDEF(tabsplit_07)
+
+void __EXPORT ScTabSplitter::Splitting( Point& rSplitPos )
+{
+ Window* pParent = GetParent();
+ Point aScreenPos = pParent->OutputToScreenPixel( rSplitPos );
+ pViewData->GetView()->SnapSplitPos( aScreenPos );
+ Point aNew = pParent->ScreenToOutputPixel( aScreenPos );
+ if ( IsHorizontal() )
+ rSplitPos.X() = aNew.X();
+ else
+ rSplitPos.Y() = aNew.Y();
+}
+
+#pragma SEG_FUNCDEF(tabsplit_06)
+
+void ScTabSplitter::SetFixed(BOOL bSet)
+{
+ bFixed = bSet;
+ if (bSet)
+ SetPointer(POINTER_ARROW);
+ else if (IsHorizontal())
+ SetPointer(POINTER_HSPLIT);
+ else
+ SetPointer(POINTER_VSPLIT);
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.8 2000/09/17 14:09:34 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.7 2000/08/31 16:38:47 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.6 1997/08/27 10:56:38 TRI
+ VCL Anpassung
+
+
+ Rev 1.5 27 Aug 1997 12:56:38 TRI
+ VCL Anpassung
+
+ Rev 1.4 24 May 1996 10:58:44 NN
+ Position einrasten in Splitting
+
+ Rev 1.3 14 Feb 1996 20:32:34 NN
+ MouseButtonDown, bFixed auswerten
+
+ Rev 1.2 02 Feb 1996 16:28:18 NN
+ #25064# Freeze wieder raus
+
+ Rev 1.1 27 Oct 1995 18:02:58 NN
+ Test: Freeze auf rechter Maustaste
+
+ Rev 1.0 25 Oct 1995 16:35:44 NN
+ Initial revision.
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
new file mode 100644
index 000000000000..52e3abed6c7c
--- /dev/null
+++ b/sc/source/ui/view/tabview.cxx
@@ -0,0 +1,2158 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabview.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+//------------------------------------------------------------------
+
+#if 0
+#define _MACRODLG_HXX
+#define _BIGINT_HXX
+#define _SVCONTNR_HXX
+#define BASIC_NODIALOGS
+#define _SFXMNUITEM_HXX
+#define _SVDXOUT_HXX
+#define _SVDATTR_HXX
+#define _SFXMNUITEM_HXX
+#define _DLGCFG_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXBASIC_HXX
+#define _MODALDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _BASE_DLGS_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXTBXCTRL_HXX
+#define _PASSWD_HXX
+//#define _SFXFILEDLG_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXOBJFACE_HXX
+
+#define _SDR_NOTRANSFORM
+#define _SVDXOUT_HXX
+#endif
+///////////////////////////////////////////////////////////////////////////
+// NODRAW.HXX
+// Erweiterte Konstanten, um CLOKs mit SVDRAW.HXX zu vermeiden
+// Die u.a. Aenderungen nehmen vorgeschlagene Konstante vorweg
+///////////////////////////////////////////////////////////////////////////
+
+#if 0
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+
+#define _SDR_NOEXTDEV // ExtOutputDevice
+#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+#define _SDR_NOTEXTOBJ // SdrTextObj
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+#define _SDR_NOOLE2OBJ // SdrOle2Obj
+#endif
+
+// Dieses define entfernt die VCControls aus SI.HXX
+
+#define _SI_HXX // VCControls
+
+////////////////////// Umsetzen der Standard-Defines //////////////////////
+
+#ifdef _SDR_NOEXTDEV
+ #define _SDVXOUT_HXX
+ #undef _SDR_NOEXTDEV
+#endif
+
+//#define _SVDDRAG_HXX // SdrDragStat
+#define _SVDPAGE_HXX // SdrPage
+
+#ifdef _SDR_NOSURROGATEOBJ
+ #undef _SDR_NOSURROGATEOBJ
+ #define _SVDSURO_HXX
+#endif
+
+#ifdef _SDR_NOPAGEOBJ
+ #undef _SDR_NOPAGEOBJ
+ #define _SVDOPAGE_HXX
+#endif
+
+#ifdef _SDR_NOVIRTOBJ
+ #undef _SDR_NOVIRTOBJ
+ #define _SVDOVIRT_HXX
+#endif
+
+#ifdef _SDR_NOGROUPOBJ
+ #undef _SDR_NOGROUPOBJ
+ #define _SVDOGRP_HXX
+#endif
+
+#ifdef _SDR_NOTEXTOBJ
+ #undef _SDR_NOTEXTOBJ
+ #define _SVDOTEXT_HXX
+#endif
+
+#ifdef _SDR_NOPATHOBJ
+ #undef _SDR_NOPATHOBJ
+ #define _SVDOPATH_HXX
+#endif
+
+#ifdef _SDR_NOEDGEOBJ
+ #undef _SDR_NOEDGEOBJ
+ #define _SVDOEDGE_HXX
+#endif
+
+#ifdef _SDR_NORECTOBJ
+ #undef _SDR_NORECTOBJ
+ #define _SVDORECT_HXX
+#else
+ #undef _SDVOTEXT_OBJ
+#endif
+
+#ifdef _SDR_NOCAPTIONOBJ
+ #undef _SDR_NOCAPTIONOBJ
+ #define _SVDCAPT_HXX
+#endif
+
+#ifdef _SDR_NOCIRCLEOBJ
+ #undef _SDR_NOCIRCLEOBJ
+ #define _SVDOCIRC_HXX
+#endif
+
+#ifdef _SDR_NOGRAFOBJ
+ #undef _SDR_NOGRAFOBJ
+ #define _SVDOGRAF_HXX
+#else
+ #undef _SVDOTEXT_HXX
+ #undef _SVDORECT_HXX
+#endif
+
+#ifdef _SDR_NOOLE2OBJ
+ #undef _SDR_NOOLE2OBJ
+ #define _SVDOOLE2_HXX
+#else
+ #undef _SVDOTEXT_HXX
+ #undef _SVDORECT_HXX
+#endif
+
+//#ifdef _SDR_NOVIEWS
+// #define _SVDDRAG_HXX
+//#endif
+
+////////////////////// Ende der SVDRAW-Modifikationen /////////////////////
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/ipfrm.hxx>
+#include <sfx2/bindings.hxx>
+#include <vcl/help.hxx>
+
+#include "tabview.hxx"
+#include "tabvwsh.hxx"
+#include "document.hxx"
+#include "gridwin.hxx"
+#include "olinewin.hxx"
+#include "olinetab.hxx"
+#include "tabsplit.hxx"
+#include "colrowba.hxx"
+#include "tabcont.hxx"
+#include "scmod.hxx"
+#include "sc.hrc"
+#include "viewutil.hxx"
+#include "globstr.hrc"
+#include "drawview.hxx"
+
+#define SPLIT_MARGIN 30
+#define SC_ICONSIZE 36
+
+#define SC_SCROLLBAR_MIN 30
+#define SC_TABBAR_MIN 6
+
+// fuer Rad-Maus
+#define SC_DELTA_ZOOM 10
+
+// STATIC DATA -----------------------------------------------------------
+
+
+//==================================================================
+
+// Corner-Button
+
+ScCornerButton::ScCornerButton( Window* pParent, ScViewData* pData, BOOL bAdditional ) :
+ Window( pParent, WinBits( 0 ) ),
+ pViewData( pData ),
+ bAdd( bAdditional )
+{
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ SetBackground( rStyleSettings.GetFaceColor() );
+}
+
+__EXPORT ScCornerButton::~ScCornerButton()
+{
+}
+
+void __EXPORT ScCornerButton::Paint( const Rectangle& rRect )
+{
+ Size aSize = GetOutputSizePixel();
+ long nPosX = aSize.Width()-1;
+ long nPosY = aSize.Height()-1;
+
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+
+ Window::Paint(rRect);
+
+ if (bAdd)
+ {
+ SetLineColor( rStyleSettings.GetDarkShadowColor() );
+ DrawLine( Point(0,nPosY), Point(nPosX,nPosY) );
+ DrawLine( Point(nPosX,0), Point(nPosX,nPosY) );
+ }
+ else
+ {
+ SetLineColor( rStyleSettings.GetLightColor() );
+ DrawLine( Point(0,0), Point(0,nPosY) );
+ DrawLine( Point(0,0), Point(nPosX,0) );
+// SetLineColor( Color( SC_SMALL3DSHADOW ) );
+ SetLineColor( rStyleSettings.GetDarkShadowColor() );
+ DrawLine( Point(0,nPosY), Point(nPosX,nPosY) );
+ DrawLine( Point(nPosX,0), Point(nPosX,nPosY) );
+ }
+}
+
+void ScCornerButton::StateChanged( StateChangedType nType )
+{
+ Window::StateChanged( nType );
+
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ SetBackground( rStyleSettings.GetFaceColor() );
+ Invalidate();
+}
+
+// -----------------------------------------------------------------------
+
+void ScCornerButton::DataChanged( const DataChangedEvent& rDCEvt )
+{
+ Window::DataChanged( rDCEvt );
+
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ SetBackground( rStyleSettings.GetFaceColor() );
+ Invalidate();
+}
+
+
+void __EXPORT ScCornerButton::Resize()
+{
+ Invalidate();
+}
+
+void __EXPORT ScCornerButton::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ ScModule* pScMod = SC_MOD();
+ BOOL bDisable = pScMod->IsFormulaMode() || pScMod->IsModalMode();
+ if (!bDisable)
+ {
+ ScTabViewShell* pViewSh = pViewData->GetViewShell();
+ pViewSh->SetActive(); // Appear und SetViewFrame
+ pViewSh->ActiveGrabFocus();
+
+ BOOL bControl = rMEvt.IsMod1();
+ pViewSh->SelectAll( bControl );
+ }
+}
+
+//==================================================================
+
+BOOL lcl_HasColOutline( const ScViewData& rViewData )
+{
+ const ScOutlineTable* pTable = rViewData.GetDocument()->GetOutlineTable(rViewData.GetTabNo());
+ if (pTable)
+ {
+ const ScOutlineArray* pArray = pTable->GetColArray();
+ if ( pArray->GetDepth() > 0 )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+BOOL lcl_HasRowOutline( const ScViewData& rViewData )
+{
+ const ScOutlineTable* pTable = rViewData.GetDocument()->GetOutlineTable(rViewData.GetTabNo());
+ if (pTable)
+ {
+ const ScOutlineArray* pArray = pTable->GetRowArray();
+ if ( pArray->GetDepth() > 0 )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+//==================================================================
+
+// Init und Konstruktoren
+// ScTabView::Init() in tabview5.cxx wegen out of keys
+
+
+#define TABVIEW_INIT \
+ aFunctionSet( &aViewData ), \
+ aHdrFunc( &aViewData ), \
+ aHScrollLeft( pFrameWin, WinBits( WB_HSCROLL | WB_DRAG ) ), \
+ aHScrollRight( pFrameWin, WinBits( WB_HSCROLL | WB_DRAG ) ), \
+ aVScrollTop( pFrameWin, WinBits( WB_VSCROLL | WB_DRAG ) ), \
+ aVScrollBottom( pFrameWin, WinBits( WB_VSCROLL | WB_DRAG ) ), \
+ aCornerButton( pFrameWin, &aViewData, FALSE ), \
+ aTopButton( pFrameWin, &aViewData, TRUE ), \
+ aScrollBarBox( pFrameWin, WB_SIZEABLE ), \
+ pInputHintWindow( NULL ), \
+ pPageBreakData( NULL ), \
+ pHighlightRanges( NULL ), \
+ bDragging( FALSE ), \
+ bIsBlockMode( FALSE ), \
+ bBlockNeg( FALSE ), \
+ bBlockCols( FALSE ), \
+ bBlockRows( FALSE ), \
+ nTipVisible( 0 ), \
+ pDrawView( NULL ), \
+ bDrawSelMode( FALSE ), \
+ bMinimized( FALSE ), \
+ pTimerWindow( NULL ), \
+ pSelEngine( NULL ), \
+ pHdrSelEng( NULL ), \
+ bInUpdateHeader( FALSE ), \
+ bInActivatePart( FALSE ), \
+ bInZoomUpdate( FALSE ), \
+ bMoveIsShift( FALSE )
+
+
+ScTabView::ScTabView( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell ) :
+ pFrameWin( pParent ),
+ aViewData( &rDocSh, pViewShell ),
+ eZoomType( SVX_ZOOM_PERCENT ),
+ TABVIEW_INIT
+{
+ Init();
+}
+
+ScTabView::ScTabView( Window* pParent, const ScTabView& rScTabView, ScTabViewShell* pViewShell ) :
+ pFrameWin( pParent ),
+ aViewData( rScTabView.aViewData ),
+ eZoomType( rScTabView.eZoomType ),
+ TABVIEW_INIT
+{
+ aViewData.SetViewShell( pViewShell );
+ Init();
+
+ UpdateShow();
+ if ( aViewData.GetActivePart() != SC_SPLIT_BOTTOMLEFT )
+ pGridWin[SC_SPLIT_BOTTOMLEFT]->Show();
+
+ InvalidateSplit();
+}
+
+void ScTabView::InitScrollBar( ScrollBar& rScrollBar, long nMaxVal )
+{
+ rScrollBar.SetRange( Range( 0, nMaxVal ) );
+ rScrollBar.SetLineSize( 1 );
+ rScrollBar.SetPageSize( 1 ); // wird getrennt abgefragt
+ rScrollBar.SetVisibleSize( 10 ); // wird bei Resize neu gesetzt
+
+ rScrollBar.SetScrollHdl( LINK(this, ScTabView, ScrollHdl) );
+ rScrollBar.SetEndScrollHdl( LINK(this, ScTabView, EndScrollHdl) );
+}
+
+// Scroll-Timer
+
+void ScTabView::SetTimer( ScGridWindow* pWin, const MouseEvent& rMEvt )
+{
+ pTimerWindow = pWin;
+ aTimerMEvt = rMEvt;
+ aScrollTimer.Start();
+}
+
+void ScTabView::ResetTimer()
+{
+ aScrollTimer.Stop();
+ pTimerWindow = NULL;
+}
+
+IMPL_LINK( ScTabView, TimerHdl, Timer*, pTimer )
+{
+ DBG_ASSERT( pTimer == &aScrollTimer, "Unbekannter Timer" );
+
+// aScrollTimer.Stop();
+ if (pTimerWindow)
+ pTimerWindow->MouseMove( aTimerMEvt );
+
+ return 0;
+}
+
+// --- Resize ---------------------------------------------------------------------
+
+void ScTabView::DoResize( const Point& rOffset, const Size& rSize, BOOL bInner )
+{
+ HideListBox();
+
+ BOOL bHasHint = ( pInputHintWindow != NULL );
+ if (bHasHint)
+ RemoveHintWindow();
+
+ BOOL bVScroll = aViewData.IsVScrollMode();
+ BOOL bHScroll = aViewData.IsHScrollMode();
+ BOOL bTabControl = aViewData.IsTabMode();
+ BOOL bHeaders = aViewData.IsHeaderMode();
+ BOOL bOutlMode = aViewData.IsOutlineMode();
+ BOOL bHOutline = bOutlMode && lcl_HasColOutline(aViewData);
+ BOOL bVOutline = bOutlMode && lcl_HasRowOutline(aViewData);
+
+ // Scrollbar-Einstellungen koennen vom Sfx ueberschrieben werden:
+ SfxScrollingMode eMode = aViewData.GetViewShell()->GetScrollingMode();
+ if ( eMode == SCROLLING_NO )
+ bHScroll = bVScroll = FALSE;
+ else if ( eMode == SCROLLING_YES || eMode == SCROLLING_AUTO ) //! Auto ???
+ bHScroll = bVScroll = TRUE;
+
+ long nBarX = 0;
+ long nBarY = 0;
+ long nOutlineX;
+ long nOutlineY;
+ long nOutPosX;
+ long nOutPosY;
+
+ long nPosX = rOffset.X();
+ long nPosY = rOffset.Y();
+ long nSizeX = rSize.Width();
+ long nSizeY = rSize.Height();
+ long nSize1;
+
+ bMinimized = ( nSizeX<=SC_ICONSIZE || nSizeY<=SC_ICONSIZE );
+ if ( bMinimized )
+ return;
+
+ long nSplitSizeX = SPLIT_HANDLE_SIZE;
+ if ( aViewData.GetHSplitMode() == SC_SPLIT_FIX )
+ nSplitSizeX = 1;
+ long nSplitSizeY = SPLIT_HANDLE_SIZE;
+ if ( aViewData.GetVSplitMode() == SC_SPLIT_FIX )
+ nSplitSizeY = 1;
+
+ const long nOverlap = 0; // ScrollBar::GetWindowOverlapPixel();
+
+ aBorderPos = rOffset;
+ aFrameSize = rSize;
+
+ if ( aViewData.GetHSplitMode() != SC_SPLIT_NONE )
+ if ( aViewData.GetHSplitPos() > nSizeX - SPLIT_MARGIN )
+ {
+ aViewData.SetHSplitMode( SC_SPLIT_NONE );
+ if ( WhichH( aViewData.GetActivePart() ) == SC_SPLIT_RIGHT )
+ ActivatePart( SC_SPLIT_BOTTOMLEFT );
+ InvalidateSplit();
+// UpdateShow();
+ }
+ if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE )
+ if ( aViewData.GetVSplitPos() > nSizeY - SPLIT_MARGIN )
+ {
+ aViewData.SetVSplitMode( SC_SPLIT_NONE );
+ if ( WhichV( aViewData.GetActivePart() ) == SC_SPLIT_TOP )
+ ActivatePart( SC_SPLIT_BOTTOMLEFT );
+ InvalidateSplit();
+// UpdateShow();
+ }
+
+ UpdateShow();
+
+ if (bHScroll || bVScroll) // Scrollbars horizontal oder vertikal
+ {
+ if (bVScroll)
+ {
+ nBarX = aVScrollBottom.GetSizePixel().Width();
+ nSizeX -= nBarX - nOverlap;
+ }
+ if (bHScroll)
+ {
+ nBarY = aHScrollLeft.GetSizePixel().Height();
+ nSizeY -= nBarY - nOverlap;
+ }
+
+ // Fenster rechts unten
+ aScrollBarBox.SetPosSizePixel( Point( nPosX+nSizeX, nPosY+nSizeY ), Size( nBarX, nBarY ) );
+
+ if (bHScroll) // Scrollbars horizontal
+ {
+ long nSizeLt; // linker Scrollbar
+ long nSizeRt; // rechter Scrollbar
+ long nSizeSp; // Splitter
+
+ switch (aViewData.GetHSplitMode())
+ {
+ case SC_SPLIT_NONE:
+ nSizeSp = nSplitSizeX;
+ nSizeLt = nSizeX - nSizeSp + nOverlap; // Ecke ueberdecken
+ break;
+ case SC_SPLIT_NORMAL:
+ nSizeSp = nSplitSizeX;
+ nSizeLt = aViewData.GetHSplitPos();
+ break;
+ case SC_SPLIT_FIX:
+ nSizeSp = 0;
+ nSizeLt = 0;
+ break;
+ }
+ nSizeRt = nSizeX - nSizeLt - nSizeSp;
+
+ long nTabSize = 0;
+ if (bTabControl)
+ {
+ nTabSize = pTabControl->GetSizePixel().Width()-nOverlap;
+
+ if ( aViewData.GetHSplitMode() != SC_SPLIT_FIX ) // bei linkem Scrollbar
+ {
+ if (nTabSize > nSizeLt-SC_SCROLLBAR_MIN) nTabSize = nSizeLt-SC_SCROLLBAR_MIN;
+ if (nTabSize < SC_TABBAR_MIN) nTabSize = SC_TABBAR_MIN;
+ nSizeLt -= nTabSize;
+ }
+ else // bei rechtem Scrollbar
+ {
+ if (nTabSize > nSizeRt-SC_SCROLLBAR_MIN) nTabSize = nSizeRt-SC_SCROLLBAR_MIN;
+ if (nTabSize < SC_TABBAR_MIN) nTabSize = SC_TABBAR_MIN;
+ nSizeRt -= nTabSize;
+ }
+ }
+
+ pTabControl->SetPosSizePixel( Point(nPosX-nOverlap, nPosY+nSizeY),
+ Size(nTabSize+nOverlap, nBarY) );
+
+ aHScrollLeft.SetPosSizePixel( Point(nPosX+nTabSize-nOverlap, nPosY+nSizeY),
+ Size(nSizeLt+2*nOverlap, nBarY) );
+ pHSplitter->SetPosPixel( Point( nPosX+nTabSize+nSizeLt, nPosY+nSizeY ) );
+ aHScrollRight.SetPosSizePixel( Point(nPosX+nTabSize+nSizeLt+nSizeSp-nOverlap,
+ nPosY+nSizeY),
+ Size(nSizeRt+2*nOverlap, nBarY) );
+
+ pHSplitter->SetSizePixel( Size( nSizeSp, nBarY ) );
+ // SetDragRectPixel ist unten
+ }
+
+ if (bVScroll) // Scrollbars vertikal
+ {
+ long nSizeUp; // oberer Scrollbar
+ long nSizeSp; // Splitter
+ long nSizeDn; // unterer Scrollbar
+
+ switch (aViewData.GetVSplitMode())
+ {
+ case SC_SPLIT_NONE:
+ nSizeUp = 0;
+ nSizeSp = nSplitSizeY;
+ break;
+ case SC_SPLIT_NORMAL:
+ nSizeUp = aViewData.GetVSplitPos();
+ nSizeSp = nSplitSizeY;
+ break;
+ case SC_SPLIT_FIX:
+ nSizeUp = 0;
+ nSizeSp = 0;
+ break;
+ }
+ nSizeDn = nSizeY - nSizeUp - nSizeSp;
+
+ aVScrollTop.SetPosSizePixel( Point(nPosX+nSizeX, nPosY-nOverlap),
+ Size(nBarX,nSizeUp+2*nOverlap) );
+ pVSplitter->SetPosPixel( Point( nPosX+nSizeX, nPosY+nSizeUp ) );
+ aVScrollBottom.SetPosSizePixel( Point(nPosX+nSizeX,
+ nPosY+nSizeUp+nSizeSp-nOverlap),
+ Size(nBarX, nSizeDn+2*nOverlap) );
+
+ pVSplitter->SetSizePixel( Size( nBarX, nSizeSp ) );
+ // SetDragRectPixel ist unten
+ }
+ }
+
+ // SetDragRectPixel auch ohne Scrollbars etc., wenn schon gesplittet ist
+ if ( bHScroll || aViewData.GetHSplitMode() != SC_SPLIT_NONE )
+ pHSplitter->SetDragRectPixel(
+ Rectangle( nPosX, nPosY, nPosX+nSizeX, nPosY+nSizeY ), pFrameWin );
+ if ( bVScroll || aViewData.GetVSplitMode() != SC_SPLIT_NONE )
+ pVSplitter->SetDragRectPixel(
+ Rectangle( nPosX, nPosY, nPosX+nSizeX, nPosY+nSizeY ), pFrameWin );
+
+ if (bTabControl && ! bHScroll )
+ {
+ nBarY = aHScrollLeft.GetSizePixel().Height();
+ nBarX = aVScrollBottom.GetSizePixel().Width();
+
+ nSize1 = nSizeX + nOverlap;
+
+ long nTabSize = nSize1;
+ if (nTabSize < 0) nTabSize = 0;
+
+ pTabControl->SetPosSizePixel( Point(nPosX-nOverlap, nPosY+nSizeY-nBarY),
+ Size(nTabSize+nOverlap, nBarY) );
+ nSizeY -= nBarY - nOverlap;
+ aScrollBarBox.SetPosSizePixel( Point( nPosX+nSizeX, nPosY+nSizeY ), Size( nBarX, nBarY ) );
+
+ if( bVScroll )
+ {
+ Size aVScrSize = aVScrollBottom.GetSizePixel();
+ aVScrSize.Height() -= nBarY;
+ aVScrollBottom.SetSizePixel( aVScrSize );
+ }
+ }
+
+ nOutPosX = nPosX;
+ nOutPosY = nPosY;
+
+ // Outline-Controls
+ if (bVOutline && pRowOutline[SC_SPLIT_BOTTOM])
+ {
+ nOutlineX = pRowOutline[SC_SPLIT_BOTTOM]->GetDepthSize();
+ nSizeX -= nOutlineX;
+ nPosX += nOutlineX;
+ }
+ if (bHOutline && pColOutline[SC_SPLIT_LEFT])
+ {
+ nOutlineY = pColOutline[SC_SPLIT_LEFT]->GetDepthSize();
+ nSizeY -= nOutlineY;
+ nPosY += nOutlineY;
+ }
+
+ if (bHeaders) // Spalten/Zeilen-Header
+ {
+ nBarX = pRowBar[SC_SPLIT_BOTTOM]->GetSizePixel().Width();
+ nBarY = pColBar[SC_SPLIT_LEFT]->GetSizePixel().Height();
+ nSizeX -= nBarX;
+ nSizeY -= nBarY;
+ nPosX += nBarX;
+ nPosY += nBarY;
+ }
+ else
+ nBarX = nBarY = 0;
+
+ //
+ // Splitter auswerten
+ //
+
+ long nLeftSize = nSizeX;
+ long nRightSize = 0;
+ long nTopSize = 0;
+ long nBottomSize = nSizeY;
+ long nSplitPosX = nPosX;
+ long nSplitPosY = nPosY;
+
+ if ( aViewData.GetHSplitMode() != SC_SPLIT_NONE )
+ {
+ long nSplitHeight = rSize.Height();
+ if ( aViewData.GetHSplitMode() == SC_SPLIT_FIX )
+ {
+ // Fixier-Splitter nicht mit Scrollbar/TabBar ueberlappen lassen
+ if ( bHScroll )
+ nSplitHeight -= aHScrollLeft.GetSizePixel().Height();
+ else if ( bTabControl && pTabControl )
+ nSplitHeight -= pTabControl->GetSizePixel().Height();
+ }
+ nSplitPosX = aViewData.GetHSplitPos();
+ pHSplitter->SetPosSizePixel(
+ Point( nSplitPosX, nOutPosY ), Size( nSplitSizeX, nSplitHeight ) );
+ nLeftSize = nSplitPosX - nPosX;
+ nSplitPosX += nSplitSizeX;
+ nRightSize = nSizeX - nLeftSize - nSplitSizeX;
+ }
+ if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE )
+ {
+ long nSplitWidth = rSize.Width();
+ if ( aViewData.GetVSplitMode() == SC_SPLIT_FIX && bVScroll )
+ nSplitWidth -= aVScrollBottom.GetSizePixel().Width();
+ nSplitPosY = aViewData.GetVSplitPos();
+ pVSplitter->SetPosSizePixel(
+ Point( nOutPosX, nSplitPosY ), Size( nSplitWidth, nSplitSizeY ) );
+ nTopSize = nSplitPosY - nPosY;
+ nSplitPosY += nSplitSizeY;
+ nBottomSize = nSizeY - nTopSize - nSplitSizeY;
+ }
+
+ // ShowHide fuer pColOutline / pRowOutline passiert in UpdateShow
+
+ if (bHOutline) // Outline-Controls
+ {
+ if (pColOutline[SC_SPLIT_LEFT])
+ {
+ pColOutline[SC_SPLIT_LEFT]->SetHeaderSize( (USHORT) nBarX );
+ pColOutline[SC_SPLIT_LEFT]->SetPosSizePixel(
+ Point(nPosX-nBarX,nOutPosY), Size(nLeftSize+nBarX,nOutlineY) );
+ }
+ if (pColOutline[SC_SPLIT_RIGHT])
+ pColOutline[SC_SPLIT_RIGHT]->SetPosSizePixel(
+ Point(nSplitPosX,nOutPosY), Size(nRightSize,nOutlineY) );
+ }
+ if (bVOutline)
+ {
+ if (nTopSize)
+ {
+ if (pRowOutline[SC_SPLIT_TOP] && pRowOutline[SC_SPLIT_BOTTOM])
+ {
+ pRowOutline[SC_SPLIT_TOP]->SetHeaderSize( (USHORT) nBarY );
+ pRowOutline[SC_SPLIT_TOP]->SetPosSizePixel(
+ Point(nOutPosX,nPosY-nBarY), Size(nOutlineX,nTopSize+nBarY) );
+ pRowOutline[SC_SPLIT_BOTTOM]->SetHeaderSize( 0 );
+ pRowOutline[SC_SPLIT_BOTTOM]->SetPosSizePixel(
+ Point(nOutPosX,nSplitPosY), Size(nOutlineX,nBottomSize) );
+ }
+ }
+ else if (pRowOutline[SC_SPLIT_BOTTOM])
+ {
+ pRowOutline[SC_SPLIT_BOTTOM]->SetHeaderSize( (USHORT) nBarY );
+ pRowOutline[SC_SPLIT_BOTTOM]->SetPosSizePixel(
+ Point(nOutPosX,nSplitPosY-nBarY), Size(nOutlineX,nBottomSize+nBarY) );
+ }
+ }
+ if (bHOutline && bVOutline)
+ {
+ aTopButton.SetPosSizePixel( Point(nOutPosX,nOutPosY), Size(nOutlineX,nOutlineY) );
+ aTopButton.Show();
+ }
+ else
+ aTopButton.Hide();
+
+ if (bHeaders) // Spalten/Zeilen-Header
+ {
+ pColBar[SC_SPLIT_LEFT]->SetPosSizePixel(
+ Point(nPosX,nPosY-nBarY), Size(nLeftSize,nBarY) );
+ if (pColBar[SC_SPLIT_RIGHT])
+ pColBar[SC_SPLIT_RIGHT]->SetPosSizePixel(
+ Point(nSplitPosX,nPosY-nBarY), Size(nRightSize,nBarY) );
+
+ if (pRowBar[SC_SPLIT_TOP])
+ pRowBar[SC_SPLIT_TOP]->SetPosSizePixel(
+ Point(nPosX-nBarX,nPosY), Size(nBarX,nTopSize) );
+ pRowBar[SC_SPLIT_BOTTOM]->SetPosSizePixel(
+ Point(nPosX-nBarX,nSplitPosY), Size(nBarX,nBottomSize) );
+
+ aCornerButton.SetPosSizePixel( Point(nPosX-nBarX,nPosY-nBarY), Size(nBarX,nBarY) );
+ aCornerButton.Show();
+ pColBar[SC_SPLIT_LEFT]->Show();
+ pRowBar[SC_SPLIT_BOTTOM]->Show();
+ }
+ else
+ {
+ aCornerButton.Hide();
+ pColBar[SC_SPLIT_LEFT]->Hide(); // immer da
+ pRowBar[SC_SPLIT_BOTTOM]->Hide();
+ }
+
+
+ // Grid-Windows
+
+ if (bInner)
+ {
+ pGridWin[SC_SPLIT_BOTTOMLEFT]->SetPosPixel( Point(nPosX,nSplitPosY) );
+ }
+ else
+ {
+ pGridWin[SC_SPLIT_BOTTOMLEFT]->SetPosSizePixel(
+ Point(nPosX,nSplitPosY), Size(nLeftSize,nBottomSize) );
+ if ( aViewData.GetHSplitMode() != SC_SPLIT_NONE )
+ pGridWin[SC_SPLIT_BOTTOMRIGHT]->SetPosSizePixel(
+ Point(nSplitPosX,nSplitPosY), Size(nRightSize,nBottomSize) );
+ if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE )
+ pGridWin[SC_SPLIT_TOPLEFT]->SetPosSizePixel(
+ Point(nPosX,nPosY), Size(nLeftSize,nTopSize) );
+ if ( aViewData.GetHSplitMode() != SC_SPLIT_NONE && aViewData.GetVSplitMode() != SC_SPLIT_NONE )
+ pGridWin[SC_SPLIT_TOPRIGHT]->SetPosSizePixel(
+ Point(nSplitPosX,nPosY), Size(nRightSize,nTopSize) );
+ }
+
+ //
+ // Scrollbars updaten
+ //
+
+ if (!bInUpdateHeader)
+ {
+ UpdateScrollBars(); // Scrollbars nicht beim Scrollen neu setzen
+ UpdateHeaderWidth();
+
+ InterpretVisible(); // #69343# have everything calculated before painting
+ }
+
+ if (bHasHint)
+ TestHintWindow(); // neu positionieren
+
+ UpdateVarZoom(); // update variable zoom types (after resizing GridWindows)
+}
+
+void ScTabView::UpdateVarZoom()
+{
+ // update variable zoom types
+
+ if ( eZoomType != SVX_ZOOM_PERCENT && !bInZoomUpdate )
+ {
+ bInZoomUpdate = TRUE;
+ const Fraction& rOldX = GetViewData()->GetZoomX();
+ const Fraction& rOldY = GetViewData()->GetZoomY();
+ long nOldPercent = ( rOldY.GetNumerator() * 100 ) / rOldY.GetDenominator();
+ USHORT nNewZoom = CalcZoom( eZoomType, (USHORT)nOldPercent );
+ Fraction aNew( nNewZoom, 100 );
+
+ if ( aNew != rOldX || aNew != rOldY )
+ {
+ SetZoom( aNew, aNew );
+ PaintGrid();
+ PaintTop();
+ PaintLeft();
+ aViewData.GetViewShell()->GetViewFrame()->GetBindings().
+ Invalidate( SID_ATTR_ZOOM );
+ }
+ bInZoomUpdate = FALSE;
+ }
+}
+
+void ScTabView::UpdateFixPos()
+{
+ BOOL bResize = FALSE;
+ if ( aViewData.GetHSplitMode() == SC_SPLIT_FIX )
+ if (aViewData.UpdateFixX())
+ bResize = TRUE;
+ if ( aViewData.GetVSplitMode() == SC_SPLIT_FIX )
+ if (aViewData.UpdateFixY())
+ bResize = TRUE;
+ if (bResize)
+ RepeatResize(FALSE);
+}
+
+void ScTabView::RepeatResize( BOOL bUpdateFix )
+{
+ if ( bUpdateFix )
+ {
+ if ( aViewData.GetHSplitMode() == SC_SPLIT_FIX )
+ aViewData.UpdateFixX();
+ if ( aViewData.GetVSplitMode() == SC_SPLIT_FIX )
+ aViewData.UpdateFixY();
+ }
+
+ DoResize( aBorderPos, aFrameSize );
+
+ //! Border muss neu gesetzt werden ???
+}
+
+void ScTabView::GetBorderSize( SvBorder& rBorder, const Size& rSize )
+{
+ BOOL bScrollBars = aViewData.IsVScrollMode();
+ BOOL bTabControl = aViewData.IsTabMode();
+ BOOL bHeaders = aViewData.IsHeaderMode();
+ BOOL bOutlMode = aViewData.IsOutlineMode();
+ BOOL bHOutline = bOutlMode && lcl_HasColOutline(aViewData);
+ BOOL bVOutline = bOutlMode && lcl_HasRowOutline(aViewData);
+
+ rBorder = SvBorder();
+
+ if (bScrollBars) // Scrollbars horizontal oder vertikal
+ {
+ rBorder.Right() += aVScrollBottom.GetSizePixel().Width();
+ rBorder.Bottom() += aHScrollLeft.GetSizePixel().Height();
+ }
+
+ // Outline-Controls
+ if (bVOutline && pRowOutline[SC_SPLIT_BOTTOM])
+ rBorder.Left() += pRowOutline[SC_SPLIT_BOTTOM]->GetDepthSize();
+ if (bHOutline && pColOutline[SC_SPLIT_LEFT])
+ rBorder.Top() += pColOutline[SC_SPLIT_LEFT]->GetDepthSize();
+
+ if (bHeaders) // Spalten/Zeilen-Header
+ {
+ rBorder.Left() += pRowBar[SC_SPLIT_BOTTOM]->GetSizePixel().Width();
+ rBorder.Top() += pColBar[SC_SPLIT_LEFT]->GetSizePixel().Height();
+ }
+}
+
+IMPL_LINK( ScTabView, TabBarResize, void*, EMPTY_ARG )
+{
+ BOOL bHScrollMode = aViewData.IsHScrollMode();
+
+ // Scrollbar-Einstellungen koennen vom Sfx ueberschrieben werden:
+ SfxScrollingMode eMode = aViewData.GetViewShell()->GetScrollingMode();
+ if ( eMode == SCROLLING_NO )
+ bHScrollMode = FALSE;
+ else if ( eMode == SCROLLING_YES || eMode == SCROLLING_AUTO ) //! Auto ???
+ bHScrollMode = TRUE;
+
+ if( bHScrollMode )
+ {
+ const long nOverlap = 0; // ScrollBar::GetWindowOverlapPixel();
+ long nSize = pTabControl->GetSplitSize();
+
+ if (aViewData.GetHSplitMode() != SC_SPLIT_FIX)
+ {
+ long nMax = pHSplitter->GetPosPixel().X() - 1;
+ if (nSize>nMax) nSize = nMax;
+ }
+
+ if ( nSize != pTabControl->GetSizePixel().Width() )
+ {
+ pTabControl->SetSizePixel( Size( nSize+nOverlap,
+ pTabControl->GetSizePixel().Height() ) );
+ RepeatResize();
+ }
+ }
+
+ return 0;
+}
+
+void ScTabView::SetTabBarWidth( long nNewWidth )
+{
+ Size aSize = pTabControl->GetSizePixel();
+
+ if ( aSize.Width() != nNewWidth )
+ {
+ aSize.Width() = nNewWidth;
+ pTabControl->SetSizePixel( aSize );
+ }
+}
+
+long ScTabView::GetTabBarWidth()
+{
+ return pTabControl->GetSizePixel().Width();
+}
+
+Window* ScTabView::GetActiveWin()
+{
+ ScSplitPos ePos = aViewData.GetActivePart();
+ DBG_ASSERT(pGridWin[ePos],"kein aktives Fenster");
+ return pGridWin[ePos];
+}
+
+Window* ScTabView::GetWindowByPos( ScSplitPos ePos )
+{
+ return pGridWin[ePos];
+}
+
+void ScTabView::SetActivePointer( const Pointer& rPointer )
+{
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ pGridWin[i]->SetPointer( rPointer );
+
+/* ScSplitPos ePos = aViewData.GetActivePart();
+ if (pGridWin[ePos])
+ pGridWin[ePos]->SetPointer( rPointer );
+*/
+}
+
+void ScTabView::SetActivePointer( const ResId& rId )
+{
+#ifdef VCL
+ DBG_ERRORFILE( "keine Pointer mit ResId!" );
+#else
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ pGridWin[i]->SetPointer( rId );
+
+/* ScSplitPos ePos = aViewData.GetActivePart();
+ if (pGridWin[ePos])
+ pGridWin[ePos]->SetPointer( rId );
+*/
+#endif
+}
+
+void ScTabView::ActiveGrabFocus()
+{
+ ScSplitPos ePos = aViewData.GetActivePart();
+ if (pGridWin[ePos])
+ pGridWin[ePos]->GrabFocus();
+}
+
+void ScTabView::ActiveCaptureMouse()
+{
+ ScSplitPos ePos = aViewData.GetActivePart();
+ if (pGridWin[ePos])
+ pGridWin[ePos]->CaptureMouse();
+}
+
+void ScTabView::ActiveReleaseMouse()
+{
+ ScSplitPos ePos = aViewData.GetActivePart();
+ if (pGridWin[ePos])
+ pGridWin[ePos]->ReleaseMouse();
+}
+
+Point ScTabView::ActivePixelToLogic( const Point& rDevicePoint )
+{
+ ScSplitPos ePos = aViewData.GetActivePart();
+ if (pGridWin[ePos])
+ return pGridWin[ePos]->PixelToLogic(rDevicePoint);
+ else
+ return Point();
+}
+
+ScSplitPos ScTabView::FindWindow( Window* pWindow ) const
+{
+ ScSplitPos eVal = SC_SPLIT_BOTTOMLEFT; // Default
+ for (USHORT i=0; i<4; i++)
+ if ( pGridWin[i] == pWindow )
+ eVal = (ScSplitPos) i;
+
+ return eVal;
+}
+
+Point ScTabView::GetGridOffset() const
+{
+ Point aPos;
+
+ // Groessen hier wie in DoResize
+
+ BOOL bHeaders = aViewData.IsHeaderMode();
+ BOOL bOutlMode = aViewData.IsOutlineMode();
+ BOOL bHOutline = bOutlMode && lcl_HasColOutline(aViewData);
+ BOOL bVOutline = bOutlMode && lcl_HasRowOutline(aViewData);
+
+ // Outline-Controls
+ if (bVOutline && pRowOutline[SC_SPLIT_BOTTOM])
+ aPos.X() += pRowOutline[SC_SPLIT_BOTTOM]->GetDepthSize();
+ if (bHOutline && pColOutline[SC_SPLIT_LEFT])
+ aPos.Y() += pColOutline[SC_SPLIT_LEFT]->GetDepthSize();
+
+ if (bHeaders) // Spalten/Zeilen-Header
+ {
+ if (pRowBar[SC_SPLIT_BOTTOM])
+ aPos.X() += pRowBar[SC_SPLIT_BOTTOM]->GetSizePixel().Width();
+ if (pColBar[SC_SPLIT_LEFT])
+ aPos.Y() += pColBar[SC_SPLIT_LEFT]->GetSizePixel().Height();
+ }
+
+ return aPos;
+}
+
+// --- Scroll-Bars --------------------------------------------------------
+
+BOOL ScTabView::ScrollCommand( const CommandEvent& rCEvt, ScSplitPos ePos )
+{
+ HideNoteMarker();
+
+ BOOL bDone = FALSE;
+ const CommandWheelData* pData = rCEvt.GetWheelData();
+ if ( pData && pData->GetMode() == COMMAND_WHEEL_ZOOM )
+ {
+ const Fraction& rOldY = aViewData.GetZoomY();
+ long nOld = (USHORT)(( rOldY.GetNumerator() * 100 ) / rOldY.GetDenominator());
+ long nNew = nOld;
+ if ( pData->GetDelta() < 0 )
+ nNew = Max( (long) MINZOOM, (long)( nOld - SC_DELTA_ZOOM ) );
+ else
+ nNew = Min( (long) MAXZOOM, (long)( nOld + SC_DELTA_ZOOM ) );
+
+ if ( nNew != nOld )
+ {
+ //! Zoom an AppOptions merken ???
+
+ SetZoomType( SVX_ZOOM_PERCENT );
+ Fraction aFract( nNew, 100 );
+ SetZoom( aFract, aFract );
+ PaintGrid();
+ PaintTop();
+ PaintLeft();
+ SFX_BINDINGS().Invalidate( SID_ATTR_ZOOM );
+ }
+
+ bDone = TRUE;
+ }
+ else
+ {
+ ScHSplitPos eHPos = WhichH(ePos);
+ ScVSplitPos eVPos = WhichV(ePos);
+ ScrollBar* pHScroll = ( eHPos == SC_SPLIT_LEFT ) ? &aHScrollLeft : &aHScrollRight;
+ ScrollBar* pVScroll = ( eVPos == SC_SPLIT_TOP ) ? &aVScrollTop : &aVScrollBottom;
+ if ( pGridWin[ePos] )
+ bDone = pGridWin[ePos]->HandleScrollCommand( rCEvt, pHScroll, pVScroll );
+ }
+ return bDone;
+}
+
+IMPL_LINK( ScTabView, EndScrollHdl, ScrollBar*, pScroll )
+{
+ BOOL bOnlineScroll = TRUE; //! Optionen
+
+ if ( bDragging )
+ {
+ if ( bOnlineScroll ) // nur Ranges aktualisieren
+ UpdateScrollBars();
+ else
+ {
+ long nScrollMin = 0; // RangeMin simulieren
+ if ( aViewData.GetHSplitMode()==SC_SPLIT_FIX && pScroll == &aHScrollRight )
+ nScrollMin = aViewData.GetFixPosX();
+ if ( aViewData.GetVSplitMode()==SC_SPLIT_FIX && pScroll == &aVScrollBottom )
+ nScrollMin = aViewData.GetFixPosY();
+
+ if ( pScroll == &aHScrollLeft || pScroll == &aHScrollRight )
+ {
+ ScHSplitPos eWhich = (pScroll == &aHScrollLeft) ? SC_SPLIT_LEFT : SC_SPLIT_RIGHT;
+ long nDelta = pScroll->GetThumbPos() + nScrollMin - aViewData.GetPosX(eWhich);
+ if (nDelta) ScrollX( nDelta, eWhich );
+ }
+ else // VScroll...
+ {
+ ScVSplitPos eWhich = (pScroll == &aVScrollTop) ? SC_SPLIT_TOP : SC_SPLIT_BOTTOM;
+ long nDelta = pScroll->GetThumbPos() + nScrollMin - aViewData.GetPosY(eWhich);
+ if (nDelta) ScrollY( nDelta, eWhich );
+ }
+ }
+ bDragging = FALSE;
+ }
+ return 0;
+}
+
+IMPL_LINK( ScTabView, ScrollHdl, ScrollBar*, pScroll )
+{
+ BOOL bOnlineScroll = TRUE; //! Optionen
+
+ BOOL bHoriz = ( pScroll == &aHScrollLeft || pScroll == &aHScrollRight );
+ long nViewPos;
+ if ( bHoriz )
+ nViewPos = aViewData.GetPosX( (pScroll == &aHScrollLeft) ?
+ SC_SPLIT_LEFT : SC_SPLIT_RIGHT );
+ else
+ nViewPos = aViewData.GetPosY( (pScroll == &aVScrollTop) ?
+ SC_SPLIT_TOP : SC_SPLIT_BOTTOM );
+
+ ScrollType eType = pScroll->GetType();
+ if ( eType == SCROLL_DRAG )
+ {
+ if (!bDragging)
+ {
+ bDragging = TRUE;
+ nPrevDragPos = nViewPos;
+ }
+
+ // Scroll-Position anzeigen
+ // (nur QuickHelp, in der Statuszeile gibt es keinen Eintrag dafuer)
+
+ if (Help::IsQuickHelpEnabled())
+ {
+#ifdef VCL
+ Point aMousePos = pScroll->OutputToScreenPixel(pScroll->GetPointerPosPixel());
+#else
+ Point aMousePos = Pointer::GetPosPixel();
+#endif
+ long nScrollMin = 0; // RangeMin simulieren
+ if ( aViewData.GetHSplitMode()==SC_SPLIT_FIX && pScroll == &aHScrollRight )
+ nScrollMin = aViewData.GetFixPosX();
+ if ( aViewData.GetVSplitMode()==SC_SPLIT_FIX && pScroll == &aVScrollBottom )
+ nScrollMin = aViewData.GetFixPosY();
+
+ String aHelpStr;
+ long nScrollPos = pScroll->GetThumbPos() + nScrollMin;
+ Point aPos = pScroll->GetParent()->OutputToScreenPixel(pScroll->GetPosPixel());
+ Size aSize = pScroll->GetSizePixel();
+ Rectangle aRect;
+ USHORT nAlign;
+ if (bHoriz)
+ {
+ aHelpStr = ScGlobal::GetRscString(STR_COLUMN);
+ aHelpStr += ' ';
+ aHelpStr += ColToAlpha((USHORT) nScrollPos);
+
+ aRect.Left() = aMousePos.X();
+ aRect.Top() = aPos.Y() - 4;
+ nAlign = QUICKHELP_BOTTOM|QUICKHELP_CENTER;
+ }
+ else
+ {
+ aHelpStr = ScGlobal::GetRscString(STR_ROW);
+ aHelpStr += ' ';
+ aHelpStr += String::CreateFromInt32(nScrollPos + 1);
+
+ aRect.Left() = aPos.X() - 8;
+ aRect.Top() = aMousePos.Y();
+ nAlign = QUICKHELP_RIGHT|QUICKHELP_VCENTER;
+ }
+ aRect.Right() = aRect.Left();
+ aRect.Bottom() = aRect.Top();
+
+ Help::ShowQuickHelp(pScroll->GetParent(), aRect, aHelpStr, nAlign);
+ }
+ }
+
+ if ( bOnlineScroll || eType != SCROLL_DRAG )
+ {
+ long nDelta = pScroll->GetDelta();
+ switch ( eType )
+ {
+ case SCROLL_LINEUP:
+ nDelta = -1;
+ break;
+ case SCROLL_LINEDOWN:
+ nDelta = 1;
+ break;
+ case SCROLL_PAGEUP:
+ if ( pScroll == &aHScrollLeft ) nDelta = -(long) aViewData.PrevCellsX( SC_SPLIT_LEFT );
+ if ( pScroll == &aHScrollRight ) nDelta = -(long) aViewData.PrevCellsX( SC_SPLIT_RIGHT );
+ if ( pScroll == &aVScrollTop ) nDelta = -(long) aViewData.PrevCellsY( SC_SPLIT_TOP );
+ if ( pScroll == &aVScrollBottom ) nDelta = -(long) aViewData.PrevCellsY( SC_SPLIT_BOTTOM );
+ if (nDelta==0) nDelta=-1;
+ break;
+ case SCROLL_PAGEDOWN:
+ if ( pScroll == &aHScrollLeft ) nDelta = aViewData.VisibleCellsX( SC_SPLIT_LEFT );
+ if ( pScroll == &aHScrollRight ) nDelta = aViewData.VisibleCellsX( SC_SPLIT_RIGHT );
+ if ( pScroll == &aVScrollTop ) nDelta = aViewData.VisibleCellsY( SC_SPLIT_TOP );
+ if ( pScroll == &aVScrollBottom ) nDelta = aViewData.VisibleCellsY( SC_SPLIT_BOTTOM );
+ if (nDelta==0) nDelta=1;
+ break;
+ case SCROLL_DRAG:
+ {
+ // nur in die richtige Richtung scrollen, nicht um ausgeblendete
+ // Bereiche herumzittern
+
+ long nScrollMin = 0; // RangeMin simulieren
+ if ( aViewData.GetHSplitMode()==SC_SPLIT_FIX && pScroll == &aHScrollRight )
+ nScrollMin = aViewData.GetFixPosX();
+ if ( aViewData.GetVSplitMode()==SC_SPLIT_FIX && pScroll == &aVScrollBottom )
+ nScrollMin = aViewData.GetFixPosY();
+
+ long nScrollPos = pScroll->GetThumbPos() + nScrollMin;
+ nDelta = nScrollPos - nViewPos;
+ if ( nScrollPos > nPrevDragPos )
+ {
+ if (nDelta<0) nDelta=0;
+ }
+ else if ( nScrollPos < nPrevDragPos )
+ {
+ if (nDelta>0) nDelta=0;
+ }
+ else
+ nDelta = 0;
+ nPrevDragPos = nScrollPos;
+ }
+ break;
+ }
+
+ if (nDelta)
+ {
+ BOOL bUpdate = ( eType != SCROLL_DRAG ); // bei Drag die Ranges nicht aendern
+ if ( bHoriz )
+ ScrollX( nDelta, (pScroll == &aHScrollLeft) ? SC_SPLIT_LEFT : SC_SPLIT_RIGHT, bUpdate );
+ else
+ ScrollY( nDelta, (pScroll == &aVScrollTop) ? SC_SPLIT_TOP : SC_SPLIT_BOTTOM, bUpdate );
+ }
+ }
+
+ return 0;
+}
+
+void ScTabView::ScrollX( long nDeltaX, ScHSplitPos eWhich, BOOL bUpdBars )
+{
+ BOOL bHasHint = ( pInputHintWindow != NULL );
+ if (bHasHint)
+ RemoveHintWindow();
+
+ USHORT nOldX = aViewData.GetPosX(eWhich);
+ short nNewX = ((short) nOldX) + (short) nDeltaX;
+ if ( nNewX < 0 )
+ {
+ nDeltaX -= nNewX;
+ nNewX = 0;
+ }
+ if ( nNewX > MAXCOL )
+ {
+ nDeltaX -= nNewX - MAXCOL;
+ nNewX = MAXCOL;
+ }
+
+ short nDir = ( nDeltaX > 0 ) ? 1 : -1;
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+ while ( ( pDoc->GetColFlags( nNewX, nTab ) & CR_HIDDEN ) &&
+ nNewX+nDir >= 0 && nNewX+nDir <= MAXCOL )
+ nNewX += nDir;
+
+ // Fixierung
+
+ if (aViewData.GetHSplitMode() == SC_SPLIT_FIX)
+ {
+ if (eWhich == SC_SPLIT_LEFT)
+ nNewX = (short) nOldX; // links immer stehenlassen
+ else
+ {
+ short nFixX = (short)aViewData.GetFixPosX();
+ if (nNewX < nFixX)
+ nNewX = nFixX;
+ }
+ }
+ if (nNewX == (short) nOldX)
+ return;
+
+ HideAllCursors();
+
+ if ( nNewX >= 0 && nNewX <= MAXCOL && nDeltaX )
+ {
+ USHORT nTrackX = max( nOldX, (USHORT) nNewX );
+
+ // Auf dem Mac wird in Window::Scroll vor dem Scrollen Update gerufen,
+ // so dass mit den neuen Variablen an die alte Position ausgegeben wuerde.
+ // Deshalb ein Update vorneweg (vor SetPosX), auf welches Fenster ist beim Mac egal.
+#ifdef MAC
+ pGridWin[SC_SPLIT_BOTTOMLEFT]->Update();
+#endif
+ // Mit VCL wirkt Update() im Moment immer auf alle Fenster, beim Update
+ // nach dem Scrollen des GridWindow's wuerde darum der Col-/RowBar evtl.
+ // mit schon geaenderter Pos. gepainted werden -
+ // darum vorher einmal Update am Col-/RowBar
+#ifdef VCL
+ if (pColBar[eWhich])
+ pColBar[eWhich]->Update();
+#endif
+
+ long nOldPos = aViewData.GetScrPos( nTrackX, 0, eWhich ).X();
+ aViewData.SetPosX( eWhich, (USHORT) nNewX );
+ long nDiff = aViewData.GetScrPos( nTrackX, 0, eWhich ).X() - nOldPos;
+
+ if ( eWhich==SC_SPLIT_LEFT )
+ {
+ pGridWin[SC_SPLIT_BOTTOMLEFT]->ScrollPixel( nDiff, 0 );
+ if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE )
+ pGridWin[SC_SPLIT_TOPLEFT]->ScrollPixel( nDiff, 0 );
+ }
+ else
+ {
+ pGridWin[SC_SPLIT_BOTTOMRIGHT]->ScrollPixel( nDiff, 0 );
+ if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE )
+ pGridWin[SC_SPLIT_TOPRIGHT]->ScrollPixel( nDiff, 0 );
+ }
+ if (pColBar[eWhich]) { pColBar[eWhich]->Scroll( nDiff,0 ); pColBar[eWhich]->Update(); }
+ if (pColOutline[eWhich]) pColOutline[eWhich]->ScrollPixel( nDiff );
+ if (bUpdBars)
+ UpdateScrollBars();
+ }
+
+ if (nDeltaX==1 || nDeltaX==-1)
+ pGridWin[aViewData.GetActivePart()]->Update();
+
+ ShowAllCursors();
+
+ SetNewVisArea(); // MapMode muss schon gesetzt sein
+
+ if (bHasHint)
+ TestHintWindow(); // neu positionieren
+}
+
+void ScTabView::ScrollY( long nDeltaY, ScVSplitPos eWhich, BOOL bUpdBars )
+{
+ BOOL bHasHint = ( pInputHintWindow != NULL );
+ if (bHasHint)
+ RemoveHintWindow();
+
+ USHORT nOldY = aViewData.GetPosY(eWhich);
+ short nNewY = ((short) nOldY) + (short) nDeltaY;
+ if ( nNewY < 0 )
+ {
+ nDeltaY -= nNewY;
+ nNewY = 0;
+ }
+ if ( nNewY > MAXROW )
+ {
+ nDeltaY -= nNewY - MAXROW;
+ nNewY = MAXROW;
+ }
+
+ short nDir = ( nDeltaY > 0 ) ? 1 : -1;
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+ while ( ( pDoc->GetRowFlags( nNewY, nTab ) & CR_HIDDEN ) &&
+ nNewY+nDir >= 0 && nNewY+nDir <= MAXROW )
+ nNewY += nDir;
+
+ // Fixierung
+
+ if (aViewData.GetVSplitMode() == SC_SPLIT_FIX)
+ {
+ if (eWhich == SC_SPLIT_TOP)
+ nNewY = (short) nOldY; // oben immer stehenlassen
+ else
+ {
+ short nFixY = (short)aViewData.GetFixPosY();
+ if (nNewY < nFixY)
+ nNewY = nFixY;
+ }
+ }
+ if (nNewY == (short) nOldY)
+ return;
+
+ HideAllCursors();
+
+ if ( nNewY >= 0 && nNewY <= MAXROW && nDeltaY )
+ {
+ USHORT nTrackY = max( nOldY, (USHORT) nNewY );
+
+ // Zeilenkoepfe anpassen vor dem eigentlichen Scrolling, damit nicht
+ // doppelt gepainted werden muss
+ // PosY darf dann auch noch nicht umgesetzt sein, neuen Wert uebergeben
+ USHORT nUNew = (USHORT) nNewY;
+ UpdateHeaderWidth( &eWhich, &nUNew ); // Zeilenkoepfe anpassen
+
+#ifdef MAC
+ pGridWin[SC_SPLIT_BOTTOMLEFT]->Update();
+#endif
+#ifdef VCL
+ if (pRowBar[eWhich])
+ pRowBar[eWhich]->Update();
+#endif
+
+ long nOldPos = aViewData.GetScrPos( 0, nTrackY, eWhich ).Y();
+ aViewData.SetPosY( eWhich, (USHORT) nNewY );
+ long nDiff = aViewData.GetScrPos( 0, nTrackY, eWhich ).Y() - nOldPos;
+
+ if ( eWhich==SC_SPLIT_TOP )
+ {
+ pGridWin[SC_SPLIT_TOPLEFT]->ScrollPixel( 0, nDiff );
+ if ( aViewData.GetHSplitMode() != SC_SPLIT_NONE )
+ pGridWin[SC_SPLIT_TOPRIGHT]->ScrollPixel( 0, nDiff );
+ }
+ else
+ {
+ pGridWin[SC_SPLIT_BOTTOMLEFT]->ScrollPixel( 0, nDiff );
+ if ( aViewData.GetHSplitMode() != SC_SPLIT_NONE )
+ pGridWin[SC_SPLIT_BOTTOMRIGHT]->ScrollPixel( 0, nDiff );
+ }
+ if (pRowBar[eWhich]) { pRowBar[eWhich]->Scroll( 0,nDiff ); pRowBar[eWhich]->Update(); }
+ if (pRowOutline[eWhich]) pRowOutline[eWhich]->ScrollPixel( nDiff );
+ if (bUpdBars)
+ UpdateScrollBars();
+ }
+
+ if (nDeltaY==1 || nDeltaY==-1)
+ pGridWin[aViewData.GetActivePart()]->Update();
+
+ ShowAllCursors();
+
+ SetNewVisArea(); // MapMode muss schon gesetzt sein
+
+ if (bHasHint)
+ TestHintWindow(); // neu positionieren
+}
+
+void ScTabView::ScrollLines( long nDeltaX, long nDeltaY )
+{
+ ScSplitPos eWhich = aViewData.GetActivePart();
+ if (nDeltaX)
+ ScrollX(nDeltaX,WhichH(eWhich));
+ if (nDeltaY)
+ ScrollY(nDeltaY,WhichV(eWhich));
+}
+
+USHORT lcl_LastVisible( ScViewData& rViewData )
+{
+ // wenn am Dokumentende viele Zeilen ausgeblendet sind (welcher Trottel macht sowas?),
+ // soll dadurch nicht auf breite Zeilenkoepfe geschaltet werden
+ //! als Member ans Dokument ???
+
+ ScDocument* pDoc = rViewData.GetDocument();
+ USHORT nTab = rViewData.GetTabNo();
+
+ USHORT nVis = MAXROW;
+ while ( nVis > 0 && pDoc->FastGetRowHeight( nVis, nTab ) == 0 )
+ --nVis;
+ return nVis;
+}
+
+void ScTabView::UpdateHeaderWidth( const ScVSplitPos* pWhich, const USHORT* pPosY )
+{
+ if ( !pRowBar[SC_SPLIT_BOTTOM] || MAXROW < 10000 )
+ return;
+
+ USHORT nEndPos = MAXROW;
+ if ( !aViewData.GetViewShell()->GetViewFrame()->ISA(SfxInPlaceFrame) )
+ {
+ // fuer OLE Inplace immer MAXROW
+
+ if ( pWhich && *pWhich == SC_SPLIT_BOTTOM && pPosY )
+ nEndPos = *pPosY;
+ else
+ nEndPos = aViewData.GetPosY( SC_SPLIT_BOTTOM );
+ nEndPos += aViewData.CellsAtY( nEndPos, 1, SC_SPLIT_BOTTOM, SC_SIZE_NONE ); // VisibleCellsY
+ if (nEndPos > MAXROW)
+ nEndPos = lcl_LastVisible( aViewData );
+
+ if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE )
+ {
+ USHORT nTopEnd;
+ if ( pWhich && *pWhich == SC_SPLIT_TOP && pPosY )
+ nTopEnd = *pPosY;
+ else
+ nTopEnd = aViewData.GetPosY( SC_SPLIT_TOP );
+ nTopEnd += aViewData.CellsAtY( nTopEnd, 1, SC_SPLIT_TOP, SC_SIZE_NONE );// VisibleCellsY
+ if (nTopEnd > MAXROW)
+ nTopEnd = lcl_LastVisible( aViewData );
+
+ if ( nTopEnd > nEndPos )
+ nEndPos = nTopEnd;
+ }
+ }
+
+ long nSmall = pRowBar[SC_SPLIT_BOTTOM]->GetSmallWidth();
+ long nBig = pRowBar[SC_SPLIT_BOTTOM]->GetBigWidth();
+ long nDiff = nBig - nSmall;
+
+ if (nEndPos>10000)
+ nEndPos = 10000;
+ long nWidth = nBig - ( 10000 - nEndPos ) * nDiff / 10000;
+
+ if ( nWidth != pRowBar[SC_SPLIT_BOTTOM]->GetWidth() && !bInUpdateHeader )
+ {
+ bInUpdateHeader = TRUE;
+
+ pRowBar[SC_SPLIT_BOTTOM]->SetWidth( nWidth );
+ if (pRowBar[SC_SPLIT_TOP])
+ pRowBar[SC_SPLIT_TOP]->SetWidth( nWidth );
+
+ RepeatResize();
+
+ // auf VCL gibt's Update ohne Ende (jedes Update gilt fuer alle Fenster)
+#ifndef VCL
+ aCornerButton.Update(); // der bekommt sonst nie ein Update
+#endif
+
+ bInUpdateHeader = FALSE;
+ }
+}
+
+inline void ShowHide( Window* pWin, BOOL bShow )
+{
+ DBG_ASSERT(pWin || !bShow, "Fenster ist nicht da");
+ if (pWin)
+ pWin->Show(bShow);
+}
+
+void ScTabView::UpdateShow()
+{
+ BOOL bHScrollMode = aViewData.IsHScrollMode();
+ BOOL bVScrollMode = aViewData.IsVScrollMode();
+ BOOL bTabMode = aViewData.IsTabMode();
+ BOOL bOutlMode = aViewData.IsOutlineMode();
+ BOOL bHOutline = bOutlMode && lcl_HasColOutline(aViewData);
+ BOOL bVOutline = bOutlMode && lcl_HasRowOutline(aViewData);
+ BOOL bHeader = aViewData.IsHeaderMode();
+
+ BOOL bShowH = ( aViewData.GetHSplitMode() != SC_SPLIT_NONE );
+ BOOL bShowV = ( aViewData.GetVSplitMode() != SC_SPLIT_NONE );
+
+ // Scrollbar-Einstellungen koennen vom Sfx ueberschrieben werden:
+ SfxScrollingMode eMode = aViewData.GetViewShell()->GetScrollingMode();
+ if ( eMode == SCROLLING_NO )
+ bHScrollMode = bVScrollMode = FALSE;
+ else if ( eMode == SCROLLING_YES || eMode == SCROLLING_AUTO ) //! Auto ???
+ bHScrollMode = bVScrollMode = TRUE;
+
+ //
+ // Windows anlegen
+ //
+
+ if (bShowH && !pGridWin[SC_SPLIT_BOTTOMRIGHT])
+ {
+ pGridWin[SC_SPLIT_BOTTOMRIGHT] = new ScGridWindow( pFrameWin, &aViewData, SC_SPLIT_BOTTOMRIGHT );
+ DoAddWin( pGridWin[SC_SPLIT_BOTTOMRIGHT] );
+ }
+ if (bShowV && !pGridWin[SC_SPLIT_TOPLEFT])
+ {
+ pGridWin[SC_SPLIT_TOPLEFT] = new ScGridWindow( pFrameWin, &aViewData, SC_SPLIT_TOPLEFT );
+ DoAddWin( pGridWin[SC_SPLIT_TOPLEFT] );
+ }
+ if (bShowH && bShowV && !pGridWin[SC_SPLIT_TOPRIGHT])
+ {
+ pGridWin[SC_SPLIT_TOPRIGHT] = new ScGridWindow( pFrameWin, &aViewData, SC_SPLIT_TOPRIGHT );
+ DoAddWin( pGridWin[SC_SPLIT_TOPRIGHT] );
+ }
+
+ if (bHOutline && !pColOutline[SC_SPLIT_LEFT])
+ pColOutline[SC_SPLIT_LEFT] = new ScOutlineWindow( pFrameWin, SC_OUTLINE_HOR, &aViewData, SC_SPLIT_BOTTOMLEFT );
+ if (bShowH && bHOutline && !pColOutline[SC_SPLIT_RIGHT])
+ pColOutline[SC_SPLIT_RIGHT] = new ScOutlineWindow( pFrameWin, SC_OUTLINE_HOR, &aViewData, SC_SPLIT_BOTTOMRIGHT );
+
+ if (bVOutline && !pRowOutline[SC_SPLIT_BOTTOM])
+ pRowOutline[SC_SPLIT_BOTTOM] = new ScOutlineWindow( pFrameWin, SC_OUTLINE_VER, &aViewData, SC_SPLIT_BOTTOMLEFT );
+ if (bShowV && bVOutline && !pRowOutline[SC_SPLIT_TOP])
+ pRowOutline[SC_SPLIT_TOP] = new ScOutlineWindow( pFrameWin, SC_OUTLINE_VER, &aViewData, SC_SPLIT_TOPLEFT );
+
+ if (bShowH && bHeader && !pColBar[SC_SPLIT_RIGHT])
+ pColBar[SC_SPLIT_RIGHT] = new ScColBar( pFrameWin, &aViewData, SC_SPLIT_RIGHT,
+ &aHdrFunc, pHdrSelEng );
+ if (bShowV && bHeader && !pRowBar[SC_SPLIT_TOP])
+ pRowBar[SC_SPLIT_TOP] = new ScRowBar( pFrameWin, &aViewData, SC_SPLIT_TOP,
+ &aHdrFunc, pHdrSelEng );
+
+ //
+ // Windows anzeigen
+ //
+
+ ShowHide( &aHScrollLeft, bHScrollMode );
+ ShowHide( &aHScrollRight, bShowH && bHScrollMode );
+ ShowHide( &aVScrollBottom, bVScrollMode );
+ ShowHide( &aVScrollTop, bShowV && bVScrollMode );
+ ShowHide( &aScrollBarBox, bVScrollMode || bHScrollMode );
+
+ ShowHide( pHSplitter, bHScrollMode || bShowH ); // immer angelegt
+ ShowHide( pVSplitter, bVScrollMode || bShowV );
+ ShowHide( pTabControl, bTabMode );
+
+ // ab hier dynamisch angelegte
+
+ ShowHide( pGridWin[SC_SPLIT_BOTTOMRIGHT], bShowH );
+ ShowHide( pGridWin[SC_SPLIT_TOPLEFT], bShowV );
+ ShowHide( pGridWin[SC_SPLIT_TOPRIGHT], bShowH && bShowV );
+
+ ShowHide( pColOutline[SC_SPLIT_LEFT], bHOutline );
+ ShowHide( pColOutline[SC_SPLIT_RIGHT], bShowH && bHOutline );
+
+ ShowHide( pRowOutline[SC_SPLIT_BOTTOM], bVOutline );
+ ShowHide( pRowOutline[SC_SPLIT_TOP], bShowV && bVOutline );
+
+ ShowHide( pColBar[SC_SPLIT_RIGHT], bShowH && bHeader );
+ ShowHide( pRowBar[SC_SPLIT_TOP], bShowV && bHeader );
+
+
+ //! neue Gridwindows eintragen
+}
+
+// --- Splitter --------------------------------------------------------
+
+IMPL_LINK( ScTabView, SplitHdl, Splitter*, pSplitter )
+{
+ if ( pSplitter == pHSplitter )
+ DoHSplit( pHSplitter->GetSplitPosPixel() );
+ else
+ DoVSplit( pVSplitter->GetSplitPosPixel() );
+
+ if ( aViewData.GetHSplitMode() == SC_SPLIT_FIX || aViewData.GetVSplitMode() == SC_SPLIT_FIX )
+ FreezeSplitters( TRUE );
+
+ DoResize( aBorderPos, aFrameSize );
+
+ return 0;
+}
+
+void ScTabView::DoHSplit(long nSplitPos)
+{
+ long nMinPos;
+ long nMaxPos;
+ USHORT nOldDelta;
+ USHORT nNewDelta;
+
+ nMinPos = SPLIT_MARGIN;
+ if ( pRowBar[SC_SPLIT_BOTTOM] && pRowBar[SC_SPLIT_BOTTOM]->GetSizePixel().Width() >= nMinPos )
+ nMinPos = pRowBar[SC_SPLIT_BOTTOM]->GetSizePixel().Width() + 1;
+ nMaxPos = aFrameSize.Width() - SPLIT_MARGIN;
+
+ ScSplitMode aOldMode = aViewData.GetHSplitMode();
+ ScSplitMode aNewMode = SC_SPLIT_NORMAL;
+
+ aViewData.SetHSplitPos( nSplitPos );
+ if ( nSplitPos < nMinPos || nSplitPos > nMaxPos )
+ aNewMode = SC_SPLIT_NONE;
+
+ aViewData.SetHSplitMode( aNewMode );
+
+ if ( aNewMode != aOldMode )
+ {
+ UpdateShow(); // vor ActivatePart !!
+
+ if ( aNewMode == SC_SPLIT_NONE )
+ {
+ if (aViewData.GetActivePart() == SC_SPLIT_TOPRIGHT)
+ ActivatePart( SC_SPLIT_TOPLEFT );
+ if (aViewData.GetActivePart() == SC_SPLIT_BOTTOMRIGHT)
+ ActivatePart( SC_SPLIT_BOTTOMLEFT );
+ }
+ else
+ {
+ nOldDelta = aViewData.GetPosX( SC_SPLIT_LEFT );
+// aViewData.SetPosX( SC_SPLIT_LEFT, nOldDelta );
+ long nLeftWidth = nSplitPos - pRowBar[SC_SPLIT_BOTTOM]->GetSizePixel().Width();
+ if ( nLeftWidth < 0 ) nLeftWidth = 0;
+ nNewDelta = nOldDelta + aViewData.CellsAtX( nOldDelta, 1, SC_SPLIT_LEFT,
+ (USHORT) nLeftWidth );
+ if ( nNewDelta > MAXCOL )
+ nNewDelta = MAXCOL;
+ aViewData.SetPosX( SC_SPLIT_RIGHT, nNewDelta );
+ if ( nNewDelta > aViewData.GetCurX() )
+ ActivatePart( (WhichV(aViewData.GetActivePart()) == SC_SPLIT_BOTTOM) ?
+ SC_SPLIT_BOTTOMLEFT : SC_SPLIT_TOPLEFT );
+ else
+ ActivatePart( (WhichV(aViewData.GetActivePart()) == SC_SPLIT_BOTTOM) ?
+ SC_SPLIT_BOTTOMRIGHT : SC_SPLIT_TOPRIGHT );
+ }
+
+ // #61410# Form-Layer muss den sichtbaren Ausschnitt aller Fenster kennen
+ // dafuer muss hier schon der MapMode stimmen
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ pGridWin[i]->SetMapMode( pGridWin[i]->GetDrawMapMode() );
+ SetNewVisArea();
+
+ PaintGrid();
+ PaintTop();
+
+ InvalidateSplit();
+ }
+}
+
+void ScTabView::DoVSplit(long nSplitPos)
+{
+ long nMinPos;
+ long nMaxPos;
+ USHORT nOldDelta;
+ USHORT nNewDelta;
+
+ nMinPos = SPLIT_MARGIN;
+ if ( pColBar[SC_SPLIT_LEFT] && pColBar[SC_SPLIT_LEFT]->GetSizePixel().Height() >= nMinPos )
+ nMinPos = pColBar[SC_SPLIT_LEFT]->GetSizePixel().Height() + 1;
+ nMaxPos = aFrameSize.Height() - SPLIT_MARGIN;
+
+ ScSplitMode aOldMode = aViewData.GetVSplitMode();
+ ScSplitMode aNewMode = SC_SPLIT_NORMAL;
+
+ aViewData.SetVSplitPos( nSplitPos );
+ if ( nSplitPos < nMinPos || nSplitPos > nMaxPos )
+ aNewMode = SC_SPLIT_NONE;
+
+ aViewData.SetVSplitMode( aNewMode );
+
+ if ( aNewMode != aOldMode )
+ {
+ UpdateShow(); // vor ActivatePart !!
+
+ if ( aNewMode == SC_SPLIT_NONE )
+ {
+ nOldDelta = aViewData.GetPosY( SC_SPLIT_TOP );
+ aViewData.SetPosY( SC_SPLIT_BOTTOM, nOldDelta );
+
+ if (aViewData.GetActivePart() == SC_SPLIT_TOPLEFT)
+ ActivatePart( SC_SPLIT_BOTTOMLEFT );
+ if (aViewData.GetActivePart() == SC_SPLIT_TOPRIGHT)
+ ActivatePart( SC_SPLIT_BOTTOMRIGHT );
+ }
+ else
+ {
+ if ( aOldMode == SC_SPLIT_NONE )
+ nOldDelta = aViewData.GetPosY( SC_SPLIT_BOTTOM );
+ else
+ nOldDelta = aViewData.GetPosY( SC_SPLIT_TOP );
+
+ aViewData.SetPosY( SC_SPLIT_TOP, nOldDelta );
+ long nTopHeight = nSplitPos - pColBar[SC_SPLIT_LEFT]->GetSizePixel().Height();
+ if ( nTopHeight < 0 ) nTopHeight = 0;
+ nNewDelta = nOldDelta + aViewData.CellsAtY( nOldDelta, 1, SC_SPLIT_TOP,
+ (USHORT) nTopHeight );
+ if ( nNewDelta > MAXROW )
+ nNewDelta = MAXROW;
+ aViewData.SetPosY( SC_SPLIT_BOTTOM, nNewDelta );
+ if ( nNewDelta > aViewData.GetCurY() )
+ ActivatePart( (WhichH(aViewData.GetActivePart()) == SC_SPLIT_LEFT) ?
+ SC_SPLIT_TOPLEFT : SC_SPLIT_TOPRIGHT );
+ else
+ ActivatePart( (WhichH(aViewData.GetActivePart()) == SC_SPLIT_LEFT) ?
+ SC_SPLIT_BOTTOMLEFT : SC_SPLIT_BOTTOMRIGHT );
+ }
+
+ // #61410# Form-Layer muss den sichtbaren Ausschnitt aller Fenster kennen
+ // dafuer muss hier schon der MapMode stimmen
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ pGridWin[i]->SetMapMode( pGridWin[i]->GetDrawMapMode() );
+ SetNewVisArea();
+
+ PaintGrid();
+ PaintLeft();
+
+ InvalidateSplit();
+ }
+}
+
+Point ScTabView::GetInsertPos()
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nCol = aViewData.GetCurX();
+ USHORT nRow = aViewData.GetCurY();
+ USHORT nTab = aViewData.GetTabNo();
+ USHORT i;
+ long nPosX = 0;
+ for (i=0; i<nCol; i++)
+ nPosX += pDoc->GetColWidth(i,nTab);
+ nPosX = (long)(nPosX * HMM_PER_TWIPS);
+ long nPosY = 0;
+ for (i=0; i<nRow; i++)
+ nPosY += pDoc->GetRowHeight(i,nTab);
+ nPosY = (long)(nPosY * HMM_PER_TWIPS);
+ return Point(nPosX,nPosY);
+}
+
+void ScTabView::LockModifiers( USHORT nModifiers )
+{
+ pSelEngine->LockModifiers( nModifiers );
+}
+
+USHORT ScTabView::GetLockedModifiers() const
+{
+ return pSelEngine->GetLockedModifiers();
+}
+
+Point ScTabView::GetMousePosPixel()
+{
+ Point aPos;
+ ScGridWindow* pWin = (ScGridWindow*)GetActiveWin();
+
+ if ( pWin )
+ aPos = pWin->GetMousePosPixel();
+
+ return aPos;
+}
+
+BOOL lcl_MouseIsOverWin( const Point& rScreenPosPixel, Window* pWin )
+{
+ if (pWin)
+ {
+ // SPLIT_HANDLE_SIZE draufaddieren, damit das Einrasten genau
+ // auf dem Splitter nicht aussetzt
+
+ Point aRel = pWin->ScreenToOutputPixel( rScreenPosPixel );
+ Size aWinSize = pWin->GetOutputSizePixel();
+ if ( aRel.X() >= 0 && aRel.X() < aWinSize.Width() + SPLIT_HANDLE_SIZE &&
+ aRel.Y() >= 0 && aRel.Y() < aWinSize.Height() + SPLIT_HANDLE_SIZE )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void ScTabView::SnapSplitPos( Point& rScreenPosPixel )
+{
+ BOOL bOverWin = FALSE;
+ USHORT i;
+ for (i=0; i<4; i++)
+ if (lcl_MouseIsOverWin(rScreenPosPixel,pGridWin[i]))
+ bOverWin = TRUE;
+
+ if (!bOverWin)
+ return;
+
+ // #74761# don't snap to cells if the scale will be modified afterwards
+ if ( eZoomType != SVX_ZOOM_PERCENT )
+ return;
+
+ ScSplitPos ePos = SC_SPLIT_BOTTOMLEFT;
+ if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE )
+ ePos = SC_SPLIT_TOPLEFT;
+
+ Window* pWin = pGridWin[ePos];
+ if (!pWin)
+ {
+ DBG_ERROR("Window NULL");
+ return;
+ }
+
+ Point aMouse = pWin->ScreenToOutputPixel( rScreenPosPixel );
+ short nPosX;
+ short nPosY;
+ // #52949# bNextIfLarge=FALSE: nicht auf naechste Zelle, wenn ausserhalb des Fensters
+ aViewData.GetPosFromPixel( aMouse.X(), aMouse.Y(), ePos, nPosX, nPosY, TRUE, FALSE, FALSE );
+ BOOL bLeft;
+ BOOL bTop;
+ aViewData.GetMouseQuadrant( aMouse, ePos, nPosX, nPosY, bLeft, bTop );
+ if (!bLeft)
+ ++nPosX;
+ if (!bTop)
+ ++nPosY;
+ aMouse = aViewData.GetScrPos( (USHORT)nPosX, (USHORT)nPosY, ePos, TRUE );
+ rScreenPosPixel = pWin->OutputToScreenPixel( aMouse );
+}
+
+void ScTabView::FreezeSplitters( BOOL bFreeze )
+{
+ ScSplitMode eOldH = aViewData.GetHSplitMode();
+ ScSplitMode eOldV = aViewData.GetVSplitMode();
+
+ ScSplitPos ePos = SC_SPLIT_BOTTOMLEFT;
+ if ( eOldV != SC_SPLIT_NONE )
+ ePos = SC_SPLIT_TOPLEFT;
+ Window* pWin = pGridWin[ePos];
+
+ if ( bFreeze )
+ {
+ Point aWinStart = pWin->GetPosPixel();
+
+ Point aSplit;
+ short nPosX;
+ short nPosY;
+ if (eOldH != SC_SPLIT_NONE || eOldV != SC_SPLIT_NONE)
+ {
+ if (eOldH != SC_SPLIT_NONE)
+ aSplit.X() = aViewData.GetHSplitPos() - aWinStart.X();
+ if (eOldV != SC_SPLIT_NONE)
+ aSplit.Y() = aViewData.GetVSplitPos() - aWinStart.Y();
+
+ aViewData.GetPosFromPixel( aSplit.X(), aSplit.Y(), ePos, nPosX, nPosY );
+ BOOL bLeft;
+ BOOL bTop;
+ aViewData.GetMouseQuadrant( aSplit, ePos, nPosX, nPosY, bLeft, bTop );
+ if (!bLeft)
+ ++nPosX;
+ if (!bTop)
+ ++nPosY;
+ }
+ else
+ {
+ nPosX = (short) aViewData.GetCurX();
+ nPosY = (short) aViewData.GetCurY();
+ }
+
+ USHORT nLeftPos = aViewData.GetPosX(SC_SPLIT_LEFT);
+ USHORT nTopPos = aViewData.GetPosY(SC_SPLIT_BOTTOM);
+ USHORT nRightPos = nPosX;
+ USHORT nBottomPos = nPosY;
+ if (eOldH != SC_SPLIT_NONE)
+ if (aViewData.GetPosX(SC_SPLIT_RIGHT) > nRightPos)
+ nRightPos = aViewData.GetPosX(SC_SPLIT_RIGHT);
+ if (eOldV != SC_SPLIT_NONE)
+ {
+ nTopPos = aViewData.GetPosY(SC_SPLIT_TOP);
+ if (aViewData.GetPosY(SC_SPLIT_BOTTOM) > nBottomPos)
+ nBottomPos = aViewData.GetPosY(SC_SPLIT_BOTTOM);
+ }
+
+ aSplit = aViewData.GetScrPos( (USHORT)nPosX, (USHORT)nPosY, ePos, TRUE );
+ if (aSplit.X() > 0)
+ {
+ aViewData.SetHSplitMode( SC_SPLIT_FIX );
+ aViewData.SetHSplitPos( aSplit.X() + aWinStart.X() );
+ aViewData.SetFixPosX( nPosX );
+
+ aViewData.SetPosX(SC_SPLIT_LEFT, nLeftPos);
+ aViewData.SetPosX(SC_SPLIT_RIGHT, nRightPos);
+ }
+ else
+ aViewData.SetHSplitMode( SC_SPLIT_NONE );
+ if (aSplit.Y() > 0)
+ {
+ aViewData.SetVSplitMode( SC_SPLIT_FIX );
+ aViewData.SetVSplitPos( aSplit.Y() + aWinStart.Y() );
+ aViewData.SetFixPosY( nPosY );
+
+ aViewData.SetPosY(SC_SPLIT_TOP, nTopPos);
+ aViewData.SetPosY(SC_SPLIT_BOTTOM, nBottomPos);
+ }
+ else
+ aViewData.SetVSplitMode( SC_SPLIT_NONE );
+ }
+ else // Fixierung aufheben
+ {
+ if ( eOldH == SC_SPLIT_FIX )
+ aViewData.SetHSplitMode( SC_SPLIT_NORMAL );
+ if ( eOldV == SC_SPLIT_FIX )
+ aViewData.SetVSplitMode( SC_SPLIT_NORMAL );
+ }
+
+ // #61410# Form-Layer muss den sichtbaren Ausschnitt aller Fenster kennen
+ // dafuer muss hier schon der MapMode stimmen
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ pGridWin[i]->SetMapMode( pGridWin[i]->GetDrawMapMode() );
+ SetNewVisArea();
+
+ RepeatResize(FALSE);
+
+ UpdateShow();
+ PaintLeft();
+ PaintTop();
+ PaintGrid();
+
+ InvalidateSplit();
+}
+
+void ScTabView::RemoveSplit()
+{
+ DoHSplit( 0 );
+ DoVSplit( 0 );
+ RepeatResize();
+}
+
+void ScTabView::SplitAtCursor()
+{
+ ScSplitPos ePos = SC_SPLIT_BOTTOMLEFT;
+ if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE )
+ ePos = SC_SPLIT_TOPLEFT;
+ Window* pWin = pGridWin[ePos];
+ Point aWinStart = pWin->GetPosPixel();
+
+ USHORT nPosX = aViewData.GetCurX();
+ USHORT nPosY = aViewData.GetCurY();
+ Point aSplit = aViewData.GetScrPos( nPosX, nPosY, ePos, TRUE );
+ if ( nPosX > 0 )
+ DoHSplit( aSplit.X() + aWinStart.X() );
+ else
+ DoHSplit( 0 );
+ if ( nPosY > 0 )
+ DoVSplit( aSplit.Y() + aWinStart.Y() );
+ else
+ DoVSplit( 0 );
+ RepeatResize();
+}
+
+void ScTabView::SplitAtPixel( const Point& rPixel, BOOL bHor, BOOL bVer ) // fuer API
+{
+ // Pixel ist auf die ganze View bezogen, nicht auf das erste GridWin
+
+ if (bHor)
+ {
+ if ( rPixel.X() > 0 )
+ DoHSplit( rPixel.X() );
+ else
+ DoHSplit( 0 );
+ }
+ if (bVer)
+ {
+ if ( rPixel.Y() > 0 )
+ DoVSplit( rPixel.Y() );
+ else
+ DoVSplit( 0 );
+ }
+ RepeatResize();
+}
+
+void ScTabView::InvalidateSplit()
+{
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_WINDOW_SPLIT );
+ rBindings.Invalidate( SID_WINDOW_FIX );
+
+ pHSplitter->SetFixed( aViewData.GetHSplitMode() == SC_SPLIT_FIX );
+ pVSplitter->SetFixed( aViewData.GetVSplitMode() == SC_SPLIT_FIX );
+}
+
+void ScTabView::SetNewVisArea()
+{
+ // #63854# fuer die Controls muss bei VisAreaChanged der Draw-MapMode eingestellt sein
+ // (auch wenn ansonsten der Edit-MapMode gesetzt ist)
+ MapMode aOldMode[4];
+ MapMode aDrawMode[4];
+ USHORT i;
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ {
+ aOldMode[i] = pGridWin[i]->GetMapMode();
+ aDrawMode[i] = pGridWin[i]->GetDrawMapMode();
+ if (aDrawMode[i] != aOldMode[i])
+ pGridWin[i]->SetMapMode(aDrawMode[i]);
+ }
+
+ Window* pActive = pGridWin[aViewData.GetActivePart()];
+ if (pActive)
+ aViewData.GetViewShell()->VisAreaChanged(
+ pActive->PixelToLogic(Rectangle(Point(),pActive->GetOutputSizePixel())) );
+ if (pDrawView)
+ pDrawView->VisAreaChanged(); // kein Window uebergeben -> alle Fenster
+
+ for (i=0; i<4; i++)
+ if (pGridWin[i] && aDrawMode[i] != aOldMode[i])
+ pGridWin[i]->SetMapMode(aOldMode[i]);
+}
+
+void ScTabView::StartDataSelect()
+{
+ ScGridWindow* pWin = pGridWin[aViewData.GetActivePart()];
+ USHORT nCol = aViewData.GetCurX();
+ USHORT nRow = aViewData.GetCurY();
+ if (pWin)
+ pWin->DoAutoFilterMenue( nCol, nRow, TRUE );
+}
+
+void ScTabView::EnableRefInput(BOOL bFlag)
+{
+ aHScrollLeft.EnableInput(bFlag);
+ aHScrollRight.EnableInput(bFlag);
+ aVScrollBottom.EnableInput(bFlag);
+ aVScrollTop.EnableInput(bFlag);
+ aScrollBarBox.EnableInput(bFlag);
+
+ // ab hier dynamisch angelegte
+
+ if(pTabControl!=NULL) pTabControl->EnableInput(bFlag,TRUE);
+
+ if(pGridWin[SC_SPLIT_BOTTOMLEFT]!=NULL)
+ pGridWin[SC_SPLIT_BOTTOMLEFT]->EnableInput(bFlag,FALSE);
+ if(pGridWin[SC_SPLIT_BOTTOMRIGHT]!=NULL)
+ pGridWin[SC_SPLIT_BOTTOMRIGHT]->EnableInput(bFlag,FALSE);
+ if(pGridWin[SC_SPLIT_TOPLEFT]!=NULL)
+ pGridWin[SC_SPLIT_TOPLEFT]->EnableInput(bFlag,FALSE);
+ if(pGridWin[SC_SPLIT_TOPRIGHT]!=NULL)
+ pGridWin[SC_SPLIT_TOPRIGHT]->EnableInput(bFlag,FALSE);
+ if(pColBar[SC_SPLIT_RIGHT]!=NULL)
+ pColBar[SC_SPLIT_RIGHT]->EnableInput(bFlag,FALSE);
+ if(pRowBar[SC_SPLIT_TOP]!=NULL)
+ pRowBar[SC_SPLIT_TOP]->EnableInput(bFlag,FALSE);
+}
+
+
+
diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx
new file mode 100644
index 000000000000..26d95223617c
--- /dev/null
+++ b/sc/source/ui/view/tabview2.cxx
@@ -0,0 +1,761 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabview2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+
+#include <vcl/timer.hxx>
+#include <vcl/msgbox.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/childwin.hxx>
+
+#include "pagedata.hxx"
+#include "tabview.hxx"
+#include "tabvwsh.hxx"
+#include "printfun.hxx"
+#include "stlpool.hxx"
+#include "docsh.hxx"
+#include "gridwin.hxx"
+#include "olinewin.hxx"
+#include "uiitems.hxx"
+#include "sc.hrc"
+#include "viewutil.hxx"
+#include "colrowba.hxx"
+#include "waitoff.hxx"
+#include "globstr.hrc"
+
+#define SC_BLOCKMODE_NONE 0
+#define SC_BLOCKMODE_NORMAL 1
+#define SC_BLOCKMODE_OWN 2
+
+
+
+//
+// Markier - Funktionen
+//
+
+void ScTabView::PaintMarks(USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow )
+{
+ if (nStartCol > MAXCOL) nStartCol = MAXCOL;
+ if (nStartRow > MAXROW) nStartRow = MAXROW;
+ if (nEndCol > MAXCOL) nEndCol = MAXCOL;
+ if (nEndRow > MAXROW) nEndRow = MAXROW;
+
+ BOOL bLeft = (nStartCol==0 && nEndCol==MAXCOL);
+ BOOL bTop = (nStartRow==0 && nEndRow==MAXROW);
+
+ if (bLeft)
+ PaintLeftArea( nStartRow, nEndRow );
+ if (bTop)
+ PaintTopArea( nStartCol, nEndCol );
+
+ aViewData.GetDocument()->ExtendMerge( nStartCol, nStartRow, nEndCol, nEndRow,
+ aViewData.GetTabNo() );
+ PaintArea( nStartCol, nStartRow, nEndCol, nEndRow, SC_UPDATE_MARKS );
+}
+
+BOOL ScTabView::IsMarking( USHORT nCol, USHORT nRow, USHORT nTab ) const
+{
+ return bIsBlockMode
+ && nBlockStartX == nCol
+ && nBlockStartY == nRow
+ && nBlockStartZ == nTab;
+}
+
+void ScTabView::InitOwnBlockMode()
+{
+ if (!bIsBlockMode)
+ {
+ // Wenn keine (alte) Markierung mehr da ist, Anker in SelectionEngine loeschen:
+
+ ScMarkData& rMark = aViewData.GetMarkData();
+ if (!rMark.IsMarked() && !rMark.IsMultiMarked())
+ GetSelEngine()->CursorPosChanging( FALSE, FALSE );
+
+// bIsBlockMode = TRUE;
+ bIsBlockMode = SC_BLOCKMODE_OWN; //! Variable umbenennen!
+ nBlockStartX = 0;
+ nBlockStartY = 0;
+ nBlockStartZ = 0;
+ nBlockEndX = 0;
+ nBlockEndY = 0;
+ nBlockEndZ = 0;
+
+ SelectionChanged(); // Status wird mit gesetzer Markierung abgefragt
+ }
+}
+
+void ScTabView::InitBlockMode( USHORT nCurX, USHORT nCurY, USHORT nCurZ,
+ BOOL bTestNeg, BOOL bCols, BOOL bRows )
+{
+ if (!bIsBlockMode)
+ {
+ if (nCurX > MAXCOL) nCurX = MAXCOL;
+ if (nCurY > MAXROW) nCurY = MAXROW;
+
+ ScMarkData& rMark = aViewData.GetMarkData();
+ USHORT nTab = aViewData.GetTabNo();
+
+ // Teil von Markierung aufheben?
+ if (bTestNeg)
+ {
+ if ( bCols )
+ bBlockNeg = rMark.IsColumnMarked( nCurX );
+ else if ( bRows )
+ bBlockNeg = rMark.IsRowMarked( nCurY );
+ else
+ bBlockNeg = rMark.IsCellMarked( nCurX, nCurY );
+ }
+ else
+ bBlockNeg = FALSE;
+ rMark.SetMarkNegative(bBlockNeg);
+
+// bIsBlockMode = TRUE;
+ bIsBlockMode = SC_BLOCKMODE_NORMAL; //! Variable umbenennen!
+ bBlockCols = bCols;
+ bBlockRows = bRows;
+ nBlockStartX = nCurX;
+ nBlockStartY = nCurY;
+ nBlockStartZ = nCurZ;
+ nBlockEndX = nBlockStartX;
+ nBlockEndY = nBlockStartY;
+ nBlockEndZ = nBlockStartZ;
+ if (bBlockCols)
+ {
+ nBlockStartY = 0;
+ nBlockEndY = MAXROW;
+ }
+ if (bBlockRows)
+ {
+ nBlockStartX = 0;
+ nBlockEndX = MAXCOL;
+ }
+ rMark.SetMarkArea( ScRange( nBlockStartX,nBlockStartY, nTab, nBlockEndX,nBlockEndY, nTab ) );
+ InvertBlockMark( nBlockStartX,nBlockStartY,nBlockEndX,nBlockEndY );
+ }
+}
+
+void ScTabView::DoneBlockMode( BOOL bContinue ) // Default FALSE
+{
+ // Wenn zwischen Tabellen- und Header SelectionEngine gewechselt wird,
+ // wird evtl. DeselectAll gerufen, weil die andere Engine keinen Anker hat.
+ // Mit bMoveIsShift wird verhindert, dass dann die Selektion aufgehoben wird.
+
+ if (bIsBlockMode && !bMoveIsShift)
+ {
+ ScMarkData& rMark = aViewData.GetMarkData();
+ BOOL bFlag = rMark.GetMarkingFlag();
+ rMark.SetMarking(FALSE);
+
+ if (bBlockNeg && !bContinue)
+ rMark.MarkToMulti();
+
+ if (bContinue)
+ rMark.MarkToMulti();
+ else
+ {
+ // Die Tabelle kann an dieser Stelle ungueltig sein, weil DoneBlockMode
+ // aus SetTabNo aufgerufen wird
+ // (z.B. wenn die aktuelle Tabelle von einer anderen View aus geloescht wird)
+
+ USHORT nTab = aViewData.GetTabNo();
+ ScDocument* pDoc = aViewData.GetDocument();
+ if ( pDoc->HasTable(nTab) )
+ PaintBlock( TRUE ); // TRUE -> Block loeschen
+ else
+ rMark.ResetMark();
+ }
+// bIsBlockMode = FALSE;
+ bIsBlockMode = SC_BLOCKMODE_NONE; //! Variable umbenennen!
+
+ rMark.SetMarking(bFlag);
+ rMark.SetMarkNegative(FALSE);
+ }
+}
+
+void ScTabView::MarkCursor( USHORT nCurX, USHORT nCurY, USHORT nCurZ, BOOL bCols, BOOL bRows )
+{
+ if (nCurX > MAXCOL) nCurX = MAXCOL;
+ if (nCurY > MAXROW) nCurY = MAXROW;
+
+ if (!bIsBlockMode)
+ {
+ DBG_ERROR( "MarkCursor nicht im BlockMode" );
+ InitBlockMode( nCurX, nCurY, nCurZ, FALSE, bCols, bRows );
+ }
+
+ if (bBlockCols)
+ nCurY = MAXROW;
+ if (bBlockRows)
+ nCurX = MAXCOL;
+
+ ScMarkData& rMark = aViewData.GetMarkData();
+ DBG_ASSERT(rMark.IsMarked() || rMark.IsMultiMarked(), "MarkCursor, !IsMarked()");
+ ScRange aMarkRange;
+ rMark.GetMarkArea(aMarkRange);
+ if (( aMarkRange.aStart.Col() != nBlockStartX && aMarkRange.aEnd.Col() != nBlockStartX ) ||
+ ( aMarkRange.aStart.Row() != nBlockStartY && aMarkRange.aEnd.Row() != nBlockStartY ) ||
+ ( bIsBlockMode == SC_BLOCKMODE_OWN ))
+ {
+ // Markierung ist veraendert worden
+ // (z.B. MarkToSimple, wenn per negativ alles bis auf ein Rechteck geloescht wurde)
+ // oder nach InitOwnBlockMode wird mit Shift-Klick weitermarkiert...
+
+ BOOL bOldShift = bMoveIsShift;
+ bMoveIsShift = FALSE; // wirklich umsetzen
+ DoneBlockMode(FALSE); //! direkt Variablen setzen? (-> kein Geflacker)
+ bMoveIsShift = bOldShift;
+
+ InitBlockMode( aMarkRange.aStart.Col(), aMarkRange.aStart.Row(),
+ nBlockStartZ, rMark.IsMarkNegative(), bCols, bRows );
+ }
+
+ USHORT nOldCurX = nBlockEndX;
+ USHORT nOldCurY = nBlockEndY;
+
+ if ( nCurX != nOldCurX || nCurY != nOldCurY )
+ {
+ USHORT nTab = nCurZ;
+
+ USHORT nDrawStartCol;
+ USHORT nDrawStartRow;
+ USHORT nDrawEndCol;
+ USHORT nDrawEndRow;
+
+ ScUpdateRect aRect( nBlockStartX, nBlockStartY, nOldCurX, nOldCurY );
+ aRect.SetNew( nBlockStartX, nBlockStartY, nCurX, nCurY );
+
+ BOOL bCont;
+ BOOL bDraw = aRect.GetXorDiff( nDrawStartCol, nDrawStartRow,
+ nDrawEndCol, nDrawEndRow, bCont );
+ nBlockEndX = nCurX;
+ nBlockEndY = nCurY;
+ rMark.SetMarkArea( ScRange( nBlockStartX, nBlockStartY, nTab, nBlockEndX, nBlockEndY, nTab ) );
+
+ if ( bDraw )
+ {
+//? PutInOrder( nDrawStartCol, nDrawEndCol );
+//? PutInOrder( nDrawStartRow, nDrawEndRow );
+
+ HideAllCursors();
+ InvertBlockMark( nDrawStartCol, nDrawStartRow, nDrawEndCol, nDrawEndRow );
+ if (bCont)
+ {
+ aRect.GetContDiff( nDrawStartCol, nDrawStartRow, nDrawEndCol, nDrawEndRow );
+ InvertBlockMark( nDrawStartCol, nDrawStartRow, nDrawEndCol, nDrawEndRow );
+ }
+ ShowAllCursors();
+ }
+
+ aViewData.GetViewShell()->UpdateInputHandler();
+// InvalidateAttribs();
+ }
+}
+
+//!
+//! PaintBlock in zwei Methoden aufteilen: RepaintBlock und RemoveBlock o.ae.
+//!
+
+void ScTabView::PaintBlock( BOOL bReset )
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ ScMarkData& rMark = aViewData.GetMarkData();
+ USHORT nTab = aViewData.GetTabNo();
+ BOOL bMark = rMark.IsMarked();
+ BOOL bMulti = rMark.IsMultiMarked();
+ if (bMark || bMulti)
+ {
+ ScRange aMarkRange;
+ HideAllCursors();
+ BOOL bWasMulti = bMulti;
+ if (bMulti)
+ {
+ BOOL bFlag = rMark.GetMarkingFlag();
+ rMark.SetMarking(FALSE);
+ rMark.MarkToMulti();
+ rMark.GetMultiMarkArea(aMarkRange);
+ rMark.MarkToSimple();
+ rMark.SetMarking(bFlag);
+
+ bMark = rMark.IsMarked();
+ bMulti = rMark.IsMultiMarked();
+ }
+ else
+ rMark.GetMarkArea(aMarkRange);
+
+ nBlockStartX = aMarkRange.aStart.Col();
+ nBlockStartY = aMarkRange.aStart.Row();
+ nBlockStartZ = aMarkRange.aStart.Tab();
+ nBlockEndX = aMarkRange.aEnd.Col();
+ nBlockEndY = aMarkRange.aEnd.Row();
+ nBlockEndZ = aMarkRange.aEnd.Tab();
+
+ BOOL bDidReset = FALSE;
+
+ if ( nTab>=nBlockStartZ && nTab<=nBlockEndZ )
+ {
+ if ( bReset )
+ {
+ // Invertieren beim Loeschen nur auf aktiver View
+ if ( aViewData.IsActive() )
+ {
+ USHORT i;
+ if ( bMulti )
+ {
+ for (i=0; i<4; i++)
+ if (pGridWin[i] && pGridWin[i]->IsVisible())
+ pGridWin[i]->InvertSimple( nBlockStartX, nBlockStartY,
+ nBlockEndX, nBlockEndY,
+ TRUE, TRUE );
+ rMark.ResetMark();
+ bDidReset = TRUE;
+ }
+ else
+ {
+ // (mis)use InvertBlockMark to remove all of the selection
+ // -> set bBlockNeg (like when removing parts of a selection)
+ // and convert everything to Multi
+
+ rMark.MarkToMulti();
+ BOOL bOld = bBlockNeg;
+ bBlockNeg = TRUE;
+ // #73130# (negative) MarkArea must be set in case of repaint
+ rMark.SetMarkArea( ScRange( nBlockStartX,nBlockStartY, nTab,
+ nBlockEndX,nBlockEndY, nTab ) );
+
+ InvertBlockMark( nBlockStartX, nBlockStartY, nBlockEndX, nBlockEndY );
+
+ bBlockNeg = bOld;
+ rMark.ResetMark();
+
+ bDidReset = TRUE;
+ }
+
+ // repaint if controls are touched (#69680# in both cases)
+
+ Rectangle aMMRect = pDoc->GetMMRect(nBlockStartX,nBlockStartY,nBlockEndX,nBlockEndY, nTab);
+ if (pDoc->HasControl( nTab, aMMRect ))
+ {
+ for (i=0; i<4; i++)
+ if (pGridWin[i] && pGridWin[i]->IsVisible())
+ {
+ // MapMode muss logischer (1/100mm) sein !!!
+ pDoc->InvalidateControls( pGridWin[i], nTab, aMMRect );
+ pGridWin[i]->Update();
+ }
+ }
+ }
+ }
+ else
+ PaintMarks( nBlockStartX, nBlockStartY, nBlockEndX, nBlockEndY );
+ }
+
+ if ( bReset && !bDidReset )
+ rMark.ResetMark();
+
+ ShowAllCursors();
+ }
+}
+
+void ScTabView::SelectAll( BOOL bContinue )
+{
+ ScMarkData& rMark = aViewData.GetMarkData();
+ USHORT nTab = aViewData.GetTabNo();
+
+ if (rMark.IsMarked())
+ {
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+ if ( aMarkRange == ScRange( 0,0,nTab, MAXCOL,MAXROW,nTab ) )
+ return;
+ }
+
+ DoneBlockMode( bContinue );
+ InitBlockMode( 0,0,nTab );
+ MarkCursor( MAXCOL,MAXROW,nTab );
+
+ SelectionChanged();
+}
+
+void ScTabView::SelectAllTables()
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ ScMarkData& rMark = aViewData.GetMarkData();
+ USHORT nTab = aViewData.GetTabNo();
+ USHORT nCount = pDoc->GetTableCount();
+
+ if (nCount>1)
+ {
+ for (USHORT i=0; i<nCount; i++)
+ rMark.SelectTable( i, TRUE );
+
+ // Markierungen werden per Default nicht pro Tabelle gehalten
+// pDoc->ExtendMarksFromTable( nTab );
+
+ aViewData.GetDocShell()->PostPaintExtras();
+ SFX_BINDINGS().Invalidate( FID_FILL_TAB );
+ }
+}
+
+BOOL lcl_FitsInWindow( double fScaleX, double fScaleY, USHORT nZoom,
+ long nWindowX, long nWindowY, ScDocument* pDoc, USHORT nTab,
+ USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow )
+{
+ double fZoomFactor = (double)Fraction(nZoom,100);
+ fScaleX *= fZoomFactor;
+ fScaleY *= fZoomFactor;
+
+ long nBlockX = 0;
+ for (USHORT nCol=nStartCol; nCol<=nEndCol; nCol++)
+ {
+ USHORT nColTwips = pDoc->GetColWidth( nCol, nTab );
+ if (nColTwips)
+ {
+ nBlockX += (long)(nColTwips * fScaleX);
+ if (nBlockX > nWindowX)
+ return FALSE;
+ }
+ }
+ long nBlockY = 0;
+ for (USHORT nRow=nStartRow; nRow<=nEndRow; nRow++)
+ {
+ USHORT nRowTwips = pDoc->GetRowHeight( nRow, nTab );
+ if (nRowTwips)
+ {
+ nBlockY += (long)(nRowTwips * fScaleY);
+ if (nBlockY > nWindowY)
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+USHORT ScTabView::CalcZoom( SvxZoomType eType, USHORT nOldZoom )
+{
+ USHORT nZoom = 0; // Ergebnis
+
+ switch ( eType )
+ {
+ case SVX_ZOOM_PERCENT: // rZoom ist kein besonderer prozentualer Wert
+ nZoom = nOldZoom;
+ break;
+
+ case SVX_ZOOM_OPTIMAL: // nZoom entspricht der optimalen Gr"o\se
+ {
+ ScMarkData& rMark = aViewData.GetMarkData();
+ ScDocument* pDoc = aViewData.GetDocument();
+
+ if (!rMark.IsMarked())
+ nZoom = 100; // nichts markiert
+ else
+ {
+ USHORT nTab = aViewData.GetTabNo();
+ ScRange aMarkRange;
+ if ( !aViewData.GetSimpleArea( aMarkRange ) )
+ rMark.GetMultiMarkArea( aMarkRange );
+
+ USHORT nStartCol = aMarkRange.aStart.Col();
+ USHORT nStartRow = aMarkRange.aStart.Row();
+ USHORT nStartTab = aMarkRange.aStart.Tab();
+ USHORT nEndCol = aMarkRange.aEnd.Col();
+ USHORT nEndRow = aMarkRange.aEnd.Row();
+ USHORT nEndTab = aMarkRange.aEnd.Tab();
+
+ if ( nTab < nStartTab && nTab > nEndTab )
+ nTab = nStartTab;
+
+ // Wegen der Pixel-Rundungs-Arie kann man zuverlaessig nur nachrechnen,
+ // ob ein bestimmter Zoom in das Fenster passt - darum wird geschachtelt
+
+ Size aWinSize = pGridWin[aViewData.GetActivePart()]->GetOutputSizePixel();
+
+ ScDocShell* pDocSh = aViewData.GetDocShell();
+ double nPPTX = ScGlobal::nScreenPPTX / pDocSh->GetOutputFactor();
+ double nPPTY = ScGlobal::nScreenPPTY;
+
+ USHORT nMin = MINZOOM;
+ USHORT nMax = MAXZOOM;
+ while ( nMax > nMin )
+ {
+ USHORT nTest = (nMin+nMax+1)/2;
+ if ( lcl_FitsInWindow(
+ nPPTX, nPPTY, nTest, aWinSize.Width(), aWinSize.Height(),
+ pDoc, nTab, nStartCol, nStartRow, nEndCol, nEndRow ) )
+ nMin = nTest;
+ else
+ nMax = nTest-1;
+ }
+ DBG_ASSERT( nMin == nMax, "Schachtelung ist falsch" );
+ nZoom = nMin;
+
+ // 1 paar {} wg compiler bug
+ if ( nZoom != nOldZoom )
+ { for (USHORT i=0; i<2; i++)
+ {
+ aViewData.SetPosX( (ScHSplitPos) i, nStartCol );
+ aViewData.SetPosY( (ScVSplitPos) i, nStartRow );
+ }
+ }
+ }
+ }
+ break;
+
+ case SVX_ZOOM_WHOLEPAGE: // nZoom entspricht der ganzen Seite oder
+ case SVX_ZOOM_PAGEWIDTH: // nZoom entspricht der Seitenbreite
+ {
+ USHORT nCurTab = aViewData.GetTabNo();
+ ScDocument* pDoc = aViewData.GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet =
+ pStylePool->Find( pDoc->GetPageStyle( nCurTab ),
+ SFX_STYLE_FAMILY_PAGE );
+
+ DBG_ASSERT( pStyleSheet, "PageStyle not found :-/" );
+
+ if ( pStyleSheet )
+ {
+ ScPrintFunc aPrintFunc( aViewData.GetDocShell(),
+ aViewData.GetViewShell()->GetPrinter(),
+ nCurTab );
+
+ Size aPageSize = aPrintFunc.GetDataSize();
+
+ // use the size of the largest GridWin for normal split,
+ // or both combined for frozen panes, with the (document) size
+ // of the frozen part added to the page size
+ // (with frozen panes, the size of the individual parts
+ // depends on the scale that is to be calculated)
+
+ if ( !pGridWin[SC_SPLIT_BOTTOMLEFT] ) return 0;
+ Size aWinSize = pGridWin[SC_SPLIT_BOTTOMLEFT]->GetOutputSizePixel();
+ ScSplitMode eHMode = aViewData.GetHSplitMode();
+ if ( eHMode != SC_SPLIT_NONE && pGridWin[SC_SPLIT_BOTTOMRIGHT] )
+ {
+ long nOtherWidth = pGridWin[SC_SPLIT_BOTTOMRIGHT]->
+ GetOutputSizePixel().Width();
+ if ( eHMode == SC_SPLIT_FIX )
+ {
+ aWinSize.Width() += nOtherWidth;
+ for ( USHORT nCol = aViewData.GetPosX(SC_SPLIT_LEFT);
+ nCol < aViewData.GetFixPosX(); nCol++ )
+ aPageSize.Width() += pDoc->GetColWidth( nCol, nCurTab );
+ }
+ else if ( nOtherWidth > aWinSize.Width() )
+ aWinSize.Width() = nOtherWidth;
+ }
+ ScSplitMode eVMode = aViewData.GetVSplitMode();
+ if ( eVMode != SC_SPLIT_NONE && pGridWin[SC_SPLIT_TOPLEFT] )
+ {
+ long nOtherHeight = pGridWin[SC_SPLIT_TOPLEFT]->
+ GetOutputSizePixel().Height();
+ if ( eVMode == SC_SPLIT_FIX )
+ {
+ aWinSize.Height() += nOtherHeight;
+ for ( USHORT nRow = aViewData.GetPosY(SC_SPLIT_TOP);
+ nRow < aViewData.GetFixPosY(); nRow++ )
+ aPageSize.Height() += pDoc->GetRowHeight( nRow, nCurTab );
+ }
+ else if ( nOtherHeight > aWinSize.Height() )
+ aWinSize.Height() = nOtherHeight;
+ }
+
+ double nPPTX = ScGlobal::nScreenPPTX / aViewData.GetDocShell()->GetOutputFactor();
+ double nPPTY = ScGlobal::nScreenPPTY;
+
+ long nZoomX = (long) ( aWinSize.Width() * 100 /
+ ( aPageSize.Width() * nPPTX ) );
+ long nZoomY = (long) ( aWinSize.Height() * 100 /
+ ( aPageSize.Height() * nPPTY ) );
+ long nNew = nZoomX;
+
+ if (eType == SVX_ZOOM_WHOLEPAGE && nZoomY < nNew)
+ nNew = nZoomY;
+
+ nZoom = (USHORT) nNew;
+ }
+ }
+ break;
+
+ default:
+ DBG_ERROR("Unknown Zoom-Revision");
+ nZoom = 0;
+ }
+
+ return nZoom;
+}
+
+// wird z.B. gerufen, wenn sich das View-Fenster verschiebt:
+
+void ScTabView::StopMarking()
+{
+ ScSplitPos eActive = aViewData.GetActivePart();
+ if (pGridWin[eActive])
+ pGridWin[eActive]->StopMarking();
+
+ ScHSplitPos eH = WhichH(eActive);
+ if (pColBar[eH])
+ pColBar[eH]->StopMarking();
+
+ ScVSplitPos eV = WhichV(eActive);
+ if (pRowBar[eV])
+ pRowBar[eV]->StopMarking();
+}
+
+void ScTabView::HideNoteMarker()
+{
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i] && pGridWin[i]->IsVisible())
+ pGridWin[i]->HideNoteMarker();
+}
+
+void ScTabView::MakeDrawLayer()
+{
+ if (!pDrawView)
+ {
+ aViewData.GetDocShell()->MakeDrawLayer();
+
+ // pDrawView wird per Notify gesetzt
+ DBG_ASSERT(pDrawView,"ScTabView::MakeDrawLayer funktioniert nicht");
+ }
+}
+
+void ScTabView::ErrorMessage( USHORT nGlobStrId )
+{
+ StopMarking(); // falls per Focus aus MouseButtonDown aufgerufen
+
+ Window* pParent = aViewData.GetDialogParent();
+ ScWaitCursorOff aWaitOff( pParent );
+ BOOL bFocus = pParent && pParent->HasFocus();
+
+ if(nGlobStrId==STR_PROTECTIONERR)
+ {
+ if(aViewData.GetDocShell()->IsReadOnly())
+ {
+ nGlobStrId=STR_READONLYERR;
+ }
+ }
+
+ InfoBox aBox( pParent, ScGlobal::GetRscString( nGlobStrId ) );
+ aBox.Execute();
+ if (bFocus)
+ pParent->GrabFocus();
+}
+
+Window* ScTabView::GetParentOrChild( USHORT nChildId )
+{
+ SfxViewFrame* pViewFrm = aViewData.GetViewShell()->GetViewFrame();
+
+ if ( pViewFrm->HasChildWindow(nChildId) )
+ {
+ SfxChildWindow* pChild = pViewFrm->GetChildWindow(nChildId);
+ if (pChild)
+ {
+ Window* pWin = pChild->GetWindow();
+ if (pWin && pWin->IsVisible())
+ return pWin;
+ }
+ }
+
+ return aViewData.GetDialogParent();
+}
+
+void ScTabView::UpdatePageBreakData( BOOL bForcePaint )
+{
+ ScPageBreakData* pNewData = NULL;
+
+ if (aViewData.IsPagebreakMode())
+ {
+ ScDocShell* pDocSh = aViewData.GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+
+ USHORT nCount = pDoc->GetPrintRangeCount(nTab);
+ if (!nCount)
+ nCount = 1;
+ pNewData = new ScPageBreakData(nCount);
+
+ ScPrintFunc aPrintFunc( pDocSh, pDocSh->GetPrinter(), nTab, 0,0,NULL, pNewData );
+ // ScPrintFunc fuellt im ctor die PageBreakData
+ if ( nCount > 1 )
+ {
+ aPrintFunc.ResetBreaks(nTab);
+ pNewData->AddPages();
+ }
+
+ // Druckbereiche veraendert?
+ if ( bForcePaint || ( pPageBreakData && !pPageBreakData->IsEqual( *pNewData ) ) )
+ PaintGrid();
+ }
+
+ delete pPageBreakData;
+ pPageBreakData = pNewData;
+}
+
+
+
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx
new file mode 100644
index 000000000000..93532c92c15f
--- /dev/null
+++ b/sc/source/ui/view/tabview3.cxx
@@ -0,0 +1,2476 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabview3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:09 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+#include <rangelst.hxx>
+#include "scitems.hxx"
+#include <svx/brshitem.hxx>
+#include <svx/editview.hxx>
+#include <svx/fmshell.hxx>
+#include <sfx2/bindings.hxx>
+#include <vcl/cursor.hxx>
+#include <sch/schdll.hxx> // ChartSelectionInfo
+#include <sch/memchrt.hxx>
+
+#include "tabview.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "gridwin.hxx"
+#include "olinewin.hxx"
+#include "colrowba.hxx"
+#include "tabcont.hxx"
+#include "scmod.hxx"
+#include "uiitems.hxx"
+#include "sc.hrc"
+#include "viewutil.hxx"
+#include "inputhdl.hxx"
+#include "inputwin.hxx"
+#include "validat.hxx"
+#include "hintwin.hxx"
+#include "inputopt.hxx"
+#include "rfindlst.hxx"
+#include "hiranges.hxx"
+#include "viewuno.hxx"
+#include "chartarr.hxx"
+#include "anyrefdg.hxx"
+#include "dpobject.hxx"
+#include "patattr.hxx"
+#include "dociter.hxx"
+//! hier und output2.cxx in irgendein Headerfile verschieben!
+#define SC_CLIPMARK_SIZE 64
+
+using namespace com::sun::star;
+
+// -----------------------------------------------------------------------
+
+// helper class for DoChartSelection
+
+#define SC_BGCOLLECT_FIRST 0
+#define SC_BGCOLLECT_FOUND 1
+#define SC_BGCOLLECT_AMBIGUOUS 2
+
+class ScBackgroundCollector
+{
+private:
+ ScDocument* pDoc;
+ BOOL bTransparent;
+ Color aBackColor;
+ USHORT nMode;
+public:
+ ScBackgroundCollector( ScDocument* pD );
+ void AddRange( const ScRange& rRange );
+ Color GetHighlightColor() const;
+};
+
+ScBackgroundCollector::ScBackgroundCollector( ScDocument* pD ) :
+ pDoc( pD ),
+ bTransparent( FALSE ),
+ nMode( SC_BGCOLLECT_FIRST )
+{
+}
+
+void ScBackgroundCollector::AddRange( const ScRange& rRange )
+{
+ if ( nMode == SC_BGCOLLECT_AMBIGUOUS )
+ return; // nothing more to do
+
+ ScDocAttrIterator aIter( pDoc, rRange.aStart.Tab(),
+ rRange.aStart.Col(), rRange.aStart.Row(),
+ rRange.aEnd.Col(), rRange.aEnd.Row() );
+ USHORT nCol, nRow1, nRow2;
+ const ScPatternAttr* pPattern = aIter.GetNext( nCol, nRow1, nRow2 );
+ while ( pPattern )
+ {
+ //! look at conditional formats?
+ const Color& rAttrColor = ((const SvxBrushItem&)pPattern->GetItem(ATTR_BACKGROUND)).GetColor();
+ BOOL bAttrTransp = ( rAttrColor.GetTransparency() != 0 );
+
+ if ( nMode == SC_BGCOLLECT_FIRST )
+ {
+ // just copy first background
+ bTransparent = bAttrTransp;
+ aBackColor = rAttrColor;
+ nMode = SC_BGCOLLECT_FOUND;
+ }
+ else if ( nMode == SC_BGCOLLECT_FOUND )
+ {
+ BOOL bEqual = ( bTransparent == bAttrTransp );
+ if ( bEqual && !bTransparent )
+ bEqual = ( aBackColor == rAttrColor );
+ if ( !bEqual )
+ {
+ nMode = SC_BGCOLLECT_AMBIGUOUS; // different backgrounds found
+ return; // dont need to continue
+ }
+ }
+
+ pPattern = aIter.GetNext( nCol, nRow1, nRow2 );
+ }
+}
+
+Color ScBackgroundCollector::GetHighlightColor() const
+{
+ if ( nMode == SC_BGCOLLECT_FOUND && !bTransparent )
+ {
+ // everything formatted with a single background color
+ // -> use contrasting color (blue or yellow)
+
+ Color aBlue( COL_LIGHTBLUE );
+ Color aYellow( COL_YELLOW );
+
+ if ( aBackColor.GetColorError(aBlue) >= aBackColor.GetColorError(aYellow) )
+ return aBlue;
+ else
+ return aYellow;
+ }
+ else
+ return Color( COL_LIGHTBLUE ); // default for transparent or ambiguous background
+}
+
+// -----------------------------------------------------------------------
+
+//
+// --- Public-Funktionen
+//
+
+void ScTabView::ClickCursor( USHORT nPosX, USHORT nPosY, BOOL bControl )
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+ while (pDoc->IsHorOverlapped( nPosX, nPosY, nTab )) //! ViewData !!!
+ --nPosX;
+ while (pDoc->IsVerOverlapped( nPosX, nPosY, nTab ))
+ --nPosY;
+
+ BOOL bRefMode = SC_MOD()->IsFormulaMode();
+
+ if ( bRefMode )
+ {
+ DoneRefMode( FALSE );
+
+ USHORT nTab = aViewData.GetTabNo();
+ ScDocument* pDoc = aViewData.GetDocument();
+ if (bControl)
+ SC_MOD()->AddRefEntry();
+
+ InitRefMode( nPosX, nPosY, nTab, SC_REFTYPE_REF );
+ }
+ else
+ {
+ DoneBlockMode( bControl );
+ aViewData.ResetOldCursor();
+ SetCursor( (USHORT) nPosX, (USHORT) nPosY );
+ }
+}
+
+void ScTabView::UpdateAutoFillMark()
+{
+ ScRange aMarkRange;
+ BOOL bMarked = aViewData.GetSimpleArea( aMarkRange, TRUE ); // einfach oder nur Cursor
+
+ USHORT i;
+ for (i=0; i<4; i++)
+ if (pGridWin[i] && pGridWin[i]->IsVisible())
+ pGridWin[i]->UpdateAutoFillMark( bMarked, aMarkRange );
+
+ for (i=0; i<2; i++)
+ {
+ if (pColBar[i] && pColBar[i]->IsVisible())
+ pColBar[i]->SetMark( bMarked, aMarkRange.aStart.Col(), aMarkRange.aEnd.Col() );
+ if (pRowBar[i] && pRowBar[i]->IsVisible())
+ pRowBar[i]->SetMark( bMarked, aMarkRange.aStart.Row(), aMarkRange.aEnd.Row() );
+ }
+}
+
+void ScTabView::FakeButtonUp( ScSplitPos eWhich )
+{
+ if (pGridWin[eWhich])
+ pGridWin[eWhich]->FakeButtonUp();
+}
+
+void ScTabView::HideAllCursors()
+{
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ if (pGridWin[i]->IsVisible())
+ {
+ Cursor* pCur = pGridWin[i]->GetCursor();
+ if (pCur)
+ if (pCur->IsVisible())
+ pCur->Hide();
+ pGridWin[i]->HideCursor();
+ }
+}
+
+void ScTabView::ShowAllCursors()
+{
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ if (pGridWin[i]->IsVisible())
+ pGridWin[i]->ShowCursor();
+}
+
+void ScTabView::HideCursor()
+{
+ pGridWin[aViewData.GetActivePart()]->HideCursor();
+}
+
+void ScTabView::ShowCursor()
+{
+ pGridWin[aViewData.GetActivePart()]->ShowCursor();
+}
+
+void ScTabView::InvalidateAttribs()
+{
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ rBindings.Invalidate( SID_STYLE_APPLY );
+ rBindings.Invalidate( SID_STYLE_FAMILY2 );
+ // StarCalc kennt nur Absatz- bzw. Zellformat-Vorlagen
+
+ rBindings.Invalidate( SID_ATTR_CHAR_FONT );
+ rBindings.Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
+ rBindings.Invalidate( SID_ATTR_CHAR_COLOR );
+
+ rBindings.Invalidate( SID_ATTR_CHAR_WEIGHT );
+ rBindings.Invalidate( SID_ATTR_CHAR_POSTURE );
+ rBindings.Invalidate( SID_ATTR_CHAR_UNDERLINE );
+ rBindings.Invalidate( SID_ULINE_VAL_NONE );
+ rBindings.Invalidate( SID_ULINE_VAL_SINGLE );
+ rBindings.Invalidate( SID_ULINE_VAL_DOUBLE );
+ rBindings.Invalidate( SID_ULINE_VAL_DOTTED );
+
+ rBindings.Invalidate( SID_ALIGNLEFT );
+ rBindings.Invalidate( SID_ALIGNRIGHT );
+ rBindings.Invalidate( SID_ALIGNBLOCK );
+ rBindings.Invalidate( SID_ALIGNCENTERHOR );
+
+ rBindings.Invalidate( SID_ALIGNTOP );
+ rBindings.Invalidate( SID_ALIGNBOTTOM );
+ rBindings.Invalidate( SID_ALIGNCENTERVER );
+
+ rBindings.Invalidate( SID_BACKGROUND_COLOR );
+
+ rBindings.Invalidate( SID_ATTR_ALIGN_LINEBREAK );
+ rBindings.Invalidate( SID_NUMBER_FORMAT );
+
+// rBindings.Invalidate( SID_RANGE_VALUE );
+// rBindings.Invalidate( SID_RANGE_FORMULA );
+}
+
+// SetCursor - Cursor setzen, zeichnen, InputWin updaten
+// oder Referenz verschicken
+// ohne Optimierung wegen BugId 29307
+
+#ifdef WNT
+#pragma optimize ( "", off )
+#endif
+
+void ScTabView::SetCursor( USHORT nPosX, USHORT nPosY, BOOL bNew )
+{
+ USHORT nOldX = aViewData.GetCurX();
+ USHORT nOldY = aViewData.GetCurY();
+
+ // DeactivateIP nur noch bei MarkListHasChanged
+
+ if ( nPosX != nOldX || nPosY != nOldY || bNew )
+ {
+ if ( aViewData.HasEditView(aViewData.GetActivePart()) &&
+ !SC_MOD()->IsFormulaMode() ) // 23259 oder so
+ UpdateInputLine();
+
+ HideAllCursors();
+
+ aViewData.SetCurX( nPosX );
+ aViewData.SetCurY( nPosY );
+
+ ShowAllCursors();
+
+ CursorPosChanged();
+ }
+}
+
+#ifdef WNT
+#pragma optimize ( "", on )
+#endif
+
+// Eingabezeile / Menues updaten
+// CursorPosChanged ruft SelectionChanged
+// SelectionChanged ruft CellContentChanged
+
+void ScTabView::CellContentChanged()
+{
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ rBindings.Invalidate( SID_ATTR_SIZE ); // -> Fehlermeldungen anzeigen
+ rBindings.Invalidate( SID_THESAURUS );
+ rBindings.Invalidate( SID_HYPERLINK_GETLINK );
+
+ InvalidateAttribs(); // Attribut-Updates
+ TestHintWindow(); // Eingabemeldung (Gueltigkeit)
+
+ aViewData.GetViewShell()->UpdateInputHandler();
+}
+
+void ScTabView::SelectionChanged()
+{
+ SfxViewFrame* pViewFrame = aViewData.GetViewShell()->GetViewFrame();
+ if (pViewFrame)
+ {
+ SfxFrame* pFrame = pViewFrame->GetFrame();
+ if (pFrame)
+ {
+ uno::Reference<frame::XController> xController = pFrame->GetController();
+ if (xController.is())
+ {
+ ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
+ if (pImp)
+ pImp->SelectionChanged();
+ }
+ }
+ }
+
+ UpdateAutoFillMark();
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ rBindings.Invalidate( SID_CURRENTCELL ); // -> Navigator
+ rBindings.Invalidate( SID_AUTO_FILTER ); // -> Menue
+ rBindings.Invalidate( FID_NOTE_VISIBLE );
+
+ // Funktionen, die evtl disabled werden muessen
+
+ rBindings.Invalidate( FID_INS_ROWBRK );
+ rBindings.Invalidate( FID_INS_COLBRK );
+ rBindings.Invalidate( FID_DEL_ROWBRK );
+ rBindings.Invalidate( FID_DEL_COLBRK );
+ rBindings.Invalidate( FID_MERGE_ON );
+ rBindings.Invalidate( FID_MERGE_OFF );
+ rBindings.Invalidate( SID_AUTOFILTER_HIDE );
+ rBindings.Invalidate( SID_UNFILTER );
+// rBindings.Invalidate( SID_IMPORT_DATA ); // jetzt wieder immer moeglich
+ rBindings.Invalidate( SID_REIMPORT_DATA );
+ rBindings.Invalidate( SID_REFRESH_DBAREA );
+ rBindings.Invalidate( SID_OUTLINE_SHOW );
+ rBindings.Invalidate( SID_OUTLINE_HIDE );
+ rBindings.Invalidate( SID_OUTLINE_REMOVE );
+ rBindings.Invalidate( FID_FILL_TO_BOTTOM );
+ rBindings.Invalidate( FID_FILL_TO_RIGHT );
+ rBindings.Invalidate( FID_FILL_TO_TOP );
+ rBindings.Invalidate( FID_FILL_TO_LEFT );
+ rBindings.Invalidate( FID_FILL_SERIES );
+ rBindings.Invalidate( SID_SCENARIOS );
+ rBindings.Invalidate( SID_AUTOFORMAT );
+ rBindings.Invalidate( SID_OPENDLG_TABOP );
+ rBindings.Invalidate( SID_DATA_SELECT );
+
+ rBindings.Invalidate( SID_CUT );
+ rBindings.Invalidate( SID_COPY );
+ rBindings.Invalidate( SID_PASTE );
+ rBindings.Invalidate( FID_PASTE_CONTENTS );
+
+ rBindings.Invalidate( FID_INS_ROW );
+ rBindings.Invalidate( FID_INS_COLUMN );
+ rBindings.Invalidate( FID_INS_CELL );
+ rBindings.Invalidate( FID_INS_CELLSDOWN );
+ rBindings.Invalidate( FID_INS_CELLSRIGHT );
+
+ rBindings.Invalidate( FID_CHG_COMMENT );
+
+ // nur wegen Zellschutz:
+
+ rBindings.Invalidate( SID_CELL_FORMAT_RESET );
+ rBindings.Invalidate( SID_DELETE );
+ rBindings.Invalidate( SID_DELETE_CONTENTS );
+ rBindings.Invalidate( FID_DELETE_CELL );
+ rBindings.Invalidate( FID_CELL_FORMAT );
+ rBindings.Invalidate( SID_INSERT_POSTIT );
+ rBindings.Invalidate( SID_CHARMAP );
+ rBindings.Invalidate( SID_OPENDLG_FUNCTION );
+// rBindings.Invalidate( FID_CONDITIONAL_FORMAT );
+ rBindings.Invalidate( SID_OPENDLG_CONDFRMT );
+ rBindings.Invalidate( FID_VALIDATION );
+
+ CellContentChanged();
+}
+
+void ScTabView::CursorPosChanged()
+{
+ BOOL bRefMode = SC_MOD()->IsFormulaMode();
+ if ( !bRefMode ) // Abfrage, damit RefMode bei Tabellenwechsel funktioniert
+ aViewData.GetDocShell()->Broadcast( SfxSimpleHint( FID_KILLEDITVIEW ) );
+
+ // Broadcast, damit andere Views des Dokuments auch umschalten
+
+ ScDocument* pDoc = aViewData.GetDocument();
+ BOOL bPivot = ( NULL != pDoc->GetPivotAtCursor( aViewData.GetCurX(),
+ aViewData.GetCurY(),
+ aViewData.GetTabNo() ) ||
+ NULL != pDoc->GetDPAtCursor( aViewData.GetCurX(),
+ aViewData.GetCurY(),
+ aViewData.GetTabNo() ) );
+ aViewData.GetViewShell()->SetPivotShell(bPivot);
+
+ // UpdateInputHandler jetzt in CellContentChanged
+
+ SelectionChanged();
+
+ aViewData.SetTabStartCol( SC_TABSTART_NONE );
+}
+
+void ScTabView::TestHintWindow()
+{
+ // Eingabemeldung (Gueltigkeit)
+ //! per Timer / ControllerItem anzeigen ???
+
+ ScDocument* pDoc = aViewData.GetDocument();
+ const SfxUInt32Item* pItem = (const SfxUInt32Item*)
+ pDoc->GetAttr( aViewData.GetCurX(),
+ aViewData.GetCurY(),
+ aViewData.GetTabNo(),
+ ATTR_VALIDDATA );
+ if ( pItem->GetValue() )
+ {
+ const ScValidationData* pData = pDoc->GetValidationEntry( pItem->GetValue() );
+ DBG_ASSERT(pData,"ValidationData nicht gefunden");
+ String aTitle, aMessage;
+ if ( pData && pData->GetInput( aTitle, aMessage ) )
+ {
+ //! Abfrage, ob an gleicher Stelle !!!!
+
+ DELETEZ(pInputHintWindow);
+
+ ScSplitPos eWhich = aViewData.GetActivePart();
+ Window* pWin = pGridWin[eWhich];
+ USHORT nCol = aViewData.GetCurX();
+ USHORT nRow = aViewData.GetCurY();
+ Point aPos = aViewData.GetScrPos( nCol, nRow, eWhich );
+ Size aWinSize = pWin->GetOutputSizePixel();
+ // Cursor sichtbar?
+ if ( nCol >= aViewData.GetPosX(WhichH(eWhich)) &&
+ nRow >= aViewData.GetPosY(WhichV(eWhich)) &&
+ aPos.X() < aWinSize.Width() && aPos.Y() < aWinSize.Height() )
+ {
+ aPos += pWin->GetPosPixel(); // Position auf Frame
+ long nSizeXPix;
+ long nSizeYPix;
+ aViewData.GetMergeSizePixel( nCol, nRow, nSizeXPix, nSizeYPix );
+
+ // HintWindow anlegen, bestimmt seine Groesse selbst
+ pInputHintWindow = new ScHintWindow( pFrameWin, aTitle, aMessage );
+ Size aHintSize = pInputHintWindow->GetSizePixel();
+ Size aFrameSize = pFrameWin->GetOutputSizePixel();
+
+ // passende Position finden
+ // erster Versuch: unter dem Cursor
+ Point aHintPos( aPos.X() + nSizeXPix / 2, aPos.Y() + nSizeYPix + 3 );
+ if ( aHintPos.Y() + aHintSize.Height() > aFrameSize.Height() )
+ {
+ // zweiter Versuch: rechts vom Cursor
+ aHintPos = Point( aPos.X() + nSizeXPix + 3, aPos.Y() + nSizeYPix / 2 );
+ if ( aHintPos.X() + aHintSize.Width() > aFrameSize.Width() )
+ {
+ // dritter Versuch: ueber dem Cursor
+ aHintPos = Point( aPos.X() + nSizeXPix / 2,
+ aPos.Y() - aHintSize.Height() - 3 );
+ if ( aHintPos.Y() < 0 )
+ {
+ // oben und unten kein Platz - dann Default und abschneiden
+ aHintPos = Point( aPos.X() + nSizeXPix / 2, aPos.Y() + nSizeYPix + 3 );
+ aHintSize.Height() = aFrameSize.Height() - aHintPos.Y();
+ pInputHintWindow->SetSizePixel( aHintSize );
+ }
+ }
+ }
+
+ // X anpassen
+ if ( aHintPos.X() + aHintSize.Width() > aFrameSize.Width() )
+ aHintPos.X() = aFrameSize.Width() - aHintSize.Width();
+ // Y anpassen
+ if ( aHintPos.Y() + aHintSize.Height() > aFrameSize.Height() )
+ aHintPos.Y() = aFrameSize.Height() - aHintSize.Height();
+
+ pInputHintWindow->SetPosPixel( aHintPos );
+ pInputHintWindow->ToTop();
+ pInputHintWindow->Show();
+ }
+ }
+ else
+ DELETEZ(pInputHintWindow);
+ }
+ else
+ DELETEZ(pInputHintWindow);
+}
+
+void ScTabView::RemoveHintWindow()
+{
+ DELETEZ(pInputHintWindow);
+}
+
+
+// find window that should not be over the cursor
+Window* lcl_GetCareWin(SfxViewFrame* pViewFrm)
+{
+ //! auch Spelling ??? (dann beim Aufruf Membervariable setzen)
+
+ // Suchen & Ersetzen
+ if ( pViewFrm->HasChildWindow(SID_SEARCH_DLG) )
+ {
+ SfxChildWindow* pChild = pViewFrm->GetChildWindow(SID_SEARCH_DLG);
+ if (pChild)
+ {
+ Window* pWin = pChild->GetWindow();
+ if (pWin && pWin->IsVisible())
+ return pWin;
+ }
+ }
+
+ // Aenderungen uebernehmen
+ if ( pViewFrm->HasChildWindow(FID_CHG_ACCEPT) )
+ {
+ SfxChildWindow* pChild = pViewFrm->GetChildWindow(FID_CHG_ACCEPT);
+ if (pChild)
+ {
+ Window* pWin = pChild->GetWindow();
+ if (pWin && pWin->IsVisible())
+ return pWin;
+ }
+ }
+
+ return NULL;
+}
+
+ //
+ // Bildschirm an Cursorposition anpassen
+ //
+
+void ScTabView::AlignToCursor( short nCurX, short nCurY, ScFollowMode eMode,
+ const ScSplitPos* pWhich )
+{
+ //
+ // aktiven Teil umschalten jetzt hier
+ //
+
+ ScSplitPos eActive = aViewData.GetActivePart();
+ ScHSplitPos eActiveX = WhichH(eActive);
+ ScVSplitPos eActiveY = WhichV(eActive);
+ BOOL bHFix = (aViewData.GetHSplitMode() == SC_SPLIT_FIX);
+ BOOL bVFix = (aViewData.GetVSplitMode() == SC_SPLIT_FIX);
+ if (bHFix)
+ if (eActiveX == SC_SPLIT_LEFT && nCurX >= (short)aViewData.GetFixPosX())
+ {
+ ActivatePart( (eActiveY==SC_SPLIT_TOP) ? SC_SPLIT_TOPRIGHT : SC_SPLIT_BOTTOMRIGHT );
+ eActiveX = SC_SPLIT_RIGHT;
+ }
+ if (bVFix)
+ if (eActiveY == SC_SPLIT_TOP && nCurY >= (short)aViewData.GetFixPosY())
+ {
+ ActivatePart( (eActiveX==SC_SPLIT_LEFT) ? SC_SPLIT_BOTTOMLEFT : SC_SPLIT_BOTTOMRIGHT );
+ eActiveY = SC_SPLIT_BOTTOM;
+ }
+
+ //
+ // eigentliches Align
+ //
+
+ if ( eMode != SC_FOLLOW_NONE )
+ {
+ ScSplitPos eAlign;
+ if (pWhich)
+ eAlign = *pWhich;
+ else
+ eAlign = aViewData.GetActivePart();
+ ScHSplitPos eAlignX = WhichH(eAlign);
+ ScVSplitPos eAlignY = WhichV(eAlign);
+
+ short nDeltaX = (short) aViewData.GetPosX(eAlignX);
+ short nDeltaY = (short) aViewData.GetPosY(eAlignY);
+ short nSizeX = (short) aViewData.VisibleCellsX(eAlignX);
+ short nSizeY = (short) aViewData.VisibleCellsY(eAlignY);
+
+ // VisibleCellsY == CellsAtY( GetPosY( eWhichY ), 1, eWhichY )
+
+ //-------------------------------------------------------------------------------
+ // falls z.B. Suchen-Dialog offen ist, Cursor nicht hinter den Dialog stellen
+ // wenn moeglich, die Zeile mit dem Cursor oberhalb oder unterhalb des Dialogs
+
+ //! nicht, wenn schon komplett sichtbar
+
+ if ( eMode == SC_FOLLOW_JUMP )
+ {
+ Window* pCare = lcl_GetCareWin( aViewData.GetViewShell()->GetViewFrame() );
+ if (pCare)
+ {
+ BOOL bLimit = FALSE;
+ Rectangle aDlgPixel;
+ Size aWinSize;
+ Window* pWin = GetActiveWin();
+ if (pWin)
+ {
+ aDlgPixel = Rectangle(
+ pWin->ScreenToOutputPixel( pCare->GetPosPixel() ),
+ pCare->GetSizePixel() );
+ aWinSize = pWin->GetOutputSizePixel();
+ // ueberdeckt der Dialog das GridWin?
+ if ( aDlgPixel.Right() >= 0 && aDlgPixel.Left() < aWinSize.Width() )
+ {
+ if ( nCurX < nDeltaX || nCurX >= nDeltaX+nSizeX ||
+ nCurY < nDeltaY || nCurY >= nDeltaY+nSizeY )
+ bLimit = TRUE; // es wird sowieso gescrollt
+ else
+ {
+ // Cursor ist auf dem Bildschirm
+ Point aStart = aViewData.GetScrPos( nCurX, nCurY, eAlign );
+ long nCSX, nCSY;
+ aViewData.GetMergeSizePixel( nCurX, nCurY, nCSX, nCSY );
+ Rectangle aCursor( aStart, Size( nCSX, nCSY ) );
+ if ( aCursor.IsOver( aDlgPixel ) )
+ bLimit = TRUE; // Zelle vom Dialog ueberdeckt
+ }
+ }
+ }
+
+ if (bLimit)
+ {
+ BOOL bBottom = FALSE;
+ long nTopSpace = aDlgPixel.Top();
+ long nBotSpace = aWinSize.Height() - aDlgPixel.Bottom();
+ if ( nBotSpace > 0 && nBotSpace > nTopSpace )
+ {
+ long nDlgBot = aDlgPixel.Bottom();
+ short nWPosX, nWPosY;
+ aViewData.GetPosFromPixel( 0,nDlgBot, eAlign, nWPosX, nWPosY );
+ ++nWPosY; // unter der letzten betroffenen Zelle
+
+ short nDiff = nWPosY - nDeltaY;
+ if ( nCurY >= nDiff ) // Pos. kann nicht negativ werden
+ {
+ nSizeY -= nDiff;
+ nDeltaY = nWPosY;
+ bBottom = TRUE;
+ }
+ }
+ if ( !bBottom && nTopSpace > 0 )
+ {
+ short nWPosX, nWPosY;
+ aViewData.GetPosFromPixel( 0,nTopSpace, eAlign, nWPosX, nWPosY );
+ nSizeY = nWPosY - nDeltaY;
+ }
+ }
+ }
+ }
+ //-------------------------------------------------------------------------------
+
+ short nNewDeltaX = nDeltaX;
+ short nNewDeltaY = nDeltaY;
+ BOOL bDoLine = FALSE;
+
+ switch (eMode)
+ {
+ case SC_FOLLOW_JUMP:
+ if ( nCurX < nDeltaX || nCurX >= nDeltaX+nSizeX )
+ {
+ nNewDeltaX = nCurX - (nSizeX / 2);
+ if (nNewDeltaX < 0) nNewDeltaX = 0;
+ nSizeX = (short) aViewData.CellsAtX( nNewDeltaX, 1, eAlignX );
+ }
+ if ( nCurY < nDeltaY || nCurY >= nDeltaY+nSizeY )
+ {
+ nNewDeltaY = nCurY - (nSizeY / 2);
+ if (nNewDeltaY < 0) nNewDeltaY = 0;
+ nSizeY = (short) aViewData.CellsAtY( nNewDeltaY, 1, eAlignY );
+ }
+ bDoLine = TRUE;
+ break;
+
+ case SC_FOLLOW_LINE:
+ bDoLine = TRUE;
+ break;
+
+ case SC_FOLLOW_FIX:
+ if ( nCurX < nDeltaX || nCurX >= nDeltaX+nSizeX )
+ {
+ nNewDeltaX = nDeltaX + nCurX - aViewData.GetCurX();
+ nSizeX = (short) aViewData.CellsAtX( nNewDeltaX, 1, eAlignX );
+ }
+ if ( nCurY < nDeltaY || nCurY >= nDeltaY+nSizeY )
+ {
+ nNewDeltaY = nDeltaY + nCurY - aViewData.GetCurY();
+ nSizeY = (short) aViewData.CellsAtY( nNewDeltaY, 1, eAlignY );
+ }
+
+ // wie SC_FOLLOW_JUMP:
+
+ if ( nCurX < nNewDeltaX || nCurX >= nNewDeltaX+nSizeX )
+ {
+ nNewDeltaX = nCurX - (nSizeX / 2);
+ if (nNewDeltaX < 0) nNewDeltaY = 0;
+ nSizeX = (short) aViewData.CellsAtX( nNewDeltaX, 1, eAlignX );
+ }
+ if ( nCurY < nNewDeltaY || nCurY >= nNewDeltaY+nSizeY )
+ {
+ nNewDeltaY = nCurY - (nSizeY / 2);
+ if (nNewDeltaY < 0) nNewDeltaY = 0;
+ nSizeY = (short) aViewData.CellsAtY( nNewDeltaY, 1, eAlignY );
+ }
+
+ bDoLine = TRUE;
+ break;
+
+ case SC_FOLLOW_NONE:
+ break;
+ default:
+ DBG_ERROR("Falscher Cursormodus");
+ break;
+ }
+
+ if (bDoLine)
+ {
+ while ( nCurX >= nNewDeltaX+nSizeX )
+ {
+ nNewDeltaX = nCurX-nSizeX+1;
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+ while ( nNewDeltaX < MAXCOL && !pDoc->GetColWidth( nNewDeltaX, nTab ) )
+ ++nNewDeltaX;
+ nSizeX = (short) aViewData.CellsAtX( nNewDeltaX, 1, eAlignX );
+ }
+ while ( nCurY >= nNewDeltaY+nSizeY )
+ {
+ nNewDeltaY = nCurY-nSizeY+1;
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+ while ( nNewDeltaY < MAXROW && !pDoc->GetRowHeight( nNewDeltaY, nTab ) )
+ ++nNewDeltaY;
+ nSizeY = (short) aViewData.CellsAtY( nNewDeltaY, 1, eAlignY );
+ }
+ if ( nCurX < nNewDeltaX ) nNewDeltaX = nCurX;
+ if ( nCurY < nNewDeltaY ) nNewDeltaY = nCurY;
+ }
+
+ if ( nNewDeltaX != nDeltaX )
+ nSizeX = (short) aViewData.CellsAtX( nNewDeltaX, 1, eAlignX );
+ if (nNewDeltaX+nSizeX-1 > MAXCOL) nNewDeltaX = MAXCOL-nSizeX+1;
+ if (nNewDeltaX < 0) nNewDeltaX = 0;
+
+ if ( nNewDeltaY != nDeltaY )
+ nSizeY = (short) aViewData.CellsAtY( nNewDeltaY, 1, eAlignY );
+ if (nNewDeltaY+nSizeY-1 > MAXROW) nNewDeltaY = MAXROW-nSizeY+1;
+ if (nNewDeltaY < 0) nNewDeltaY = 0;
+
+ if ( nNewDeltaX != nDeltaX ) ScrollX( nNewDeltaX - nDeltaX, eAlignX );
+ if ( nNewDeltaY != nDeltaY ) ScrollY( nNewDeltaY - nDeltaY, eAlignY );
+ }
+
+ //
+ // nochmal aktiven Teil umschalten
+ //
+
+ if (bHFix)
+ if (eActiveX == SC_SPLIT_RIGHT && nCurX < (short)aViewData.GetFixPosX())
+ {
+ ActivatePart( (eActiveY==SC_SPLIT_TOP) ? SC_SPLIT_TOPLEFT : SC_SPLIT_BOTTOMLEFT );
+ eActiveX = SC_SPLIT_LEFT;
+ }
+ if (bVFix)
+ if (eActiveY == SC_SPLIT_BOTTOM && nCurY < (short)aViewData.GetFixPosY())
+ {
+ ActivatePart( (eActiveX==SC_SPLIT_LEFT) ? SC_SPLIT_TOPLEFT : SC_SPLIT_TOPRIGHT );
+ eActiveY = SC_SPLIT_TOP;
+ }
+}
+
+BOOL ScTabView::SelMouseButtonDown( const MouseEvent& rMEvt )
+{
+ BOOL bRet = FALSE;
+ if ( pSelEngine )
+ {
+ bMoveIsShift = rMEvt.IsShift();
+ bRet = pSelEngine->SelMouseButtonDown( rMEvt );
+ bMoveIsShift = FALSE;
+ }
+ return bRet;
+}
+
+ //
+ // MoveCursor - mit Anpassung des Bildausschnitts
+ //
+
+void ScTabView::MoveCursorAbs( short nCurX, short nCurY, ScFollowMode eMode,
+ BOOL bShift, BOOL bControl, BOOL bKeepOld, BOOL bKeepSel )
+{
+ if (!bKeepOld)
+ aViewData.ResetOldCursor();
+
+ if (nCurX < 0) nCurX = 0;
+ if (nCurY < 0) nCurY = 0;
+ if (nCurX > MAXCOL) nCurX = MAXCOL;
+ if (nCurY > MAXROW) nCurY = MAXROW;
+
+ HideAllCursors();
+
+ // aktiven Teil umschalten jetzt in AlignToCursor
+
+ AlignToCursor( nCurX, nCurY, eMode );
+ //! auf OS/2: SC_FOLLOW_JUMP statt SC_FOLLOW_LINE, um Nachlaufen zu verhindern ???
+
+ if (bKeepSel)
+ SetCursor( nCurX, nCurY ); // Markierung stehenlassen
+ else
+ {
+ BOOL bSame = ( nCurX == aViewData.GetCurX() && nCurY == aViewData.GetCurY() );
+ bMoveIsShift = bShift;
+ pSelEngine->CursorPosChanging( bShift, bControl );
+ bMoveIsShift = FALSE;
+ aFunctionSet.SetCursorAtCell( nCurX, nCurY, FALSE );
+
+ // Wenn der Cursor nicht bewegt wurde, muss das SelectionChanged fuer das
+ // Aufheben der Selektion hier einzeln passieren:
+ if (bSame)
+ SelectionChanged();
+ }
+
+ ShowAllCursors();
+}
+
+void ScTabView::MoveCursorRel( short nMovX, short nMovY, ScFollowMode eMode,
+ BOOL bShift, BOOL bKeepSel )
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+
+ short nOldX;
+ short nOldY;
+ short nCurX;
+ short nCurY;
+ if ( aViewData.IsRefMode() )
+ {
+ nOldX = (short) aViewData.GetRefEndX();
+ nOldY = (short) aViewData.GetRefEndY();
+ nCurX = nOldX + nMovX;
+ nCurY = nOldY + nMovY;
+ }
+ else
+ {
+ nOldX = (short) aViewData.GetCurX();
+ nOldY = (short) aViewData.GetCurY();
+ nCurX = nMovX ? nOldX+nMovX : (short) aViewData.GetOldCurX();
+ nCurY = nMovY ? nOldY+nMovY : (short) aViewData.GetOldCurY();
+ }
+
+ BOOL bHidden;
+ aViewData.ResetOldCursor();
+
+ if (nMovX && VALIDCOLROW(nCurX,nCurY))
+ {
+ BOOL bHFlip = FALSE;
+ do
+ {
+ BYTE nColFlags = pDoc->GetColFlags( nCurX, nTab );
+ bHidden = (nColFlags & CR_HIDDEN) || pDoc->IsHorOverlapped( nCurX, nCurY, nTab );
+ if (bHidden)
+ {
+ if ( nCurX<=0 || nCurX>=MAXCOL )
+ {
+ if (bHFlip)
+ {
+ nCurX = nOldX;
+ bHidden = FALSE;
+ }
+ else
+ {
+ nMovX = -nMovX;
+ if (nMovX > 0) ++nCurX; else --nCurX; // zuruecknehmen
+ bHFlip = TRUE;
+ }
+ }
+ else
+ if (nMovX > 0) ++nCurX; else --nCurX;
+ }
+ }
+ while (bHidden);
+ if (pDoc->IsVerOverlapped( nCurX, nCurY, nTab ))
+ {
+ aViewData.SetOldCursor( nCurX,nCurY );
+ while (pDoc->IsVerOverlapped( nCurX, nCurY, nTab ))
+ --nCurY;
+ }
+ }
+
+ if (nMovY && VALIDCOLROW(nCurX,nCurY))
+ {
+ BOOL bVFlip = FALSE;
+ do
+ {
+ BYTE nRowFlags = pDoc->GetRowFlags( nCurY, nTab );
+ bHidden = (nRowFlags & CR_HIDDEN) || pDoc->IsVerOverlapped( nCurX, nCurY, nTab );
+ if (bHidden)
+ {
+ if ( nCurY<=0 || nCurY>=MAXROW )
+ {
+ if (bVFlip)
+ {
+ nCurY = nOldY;
+ bHidden = FALSE;
+ }
+ else
+ {
+ nMovY = -nMovY;
+ if (nMovY > 0) ++nCurY; else --nCurY; // zuruecknehmen
+ bVFlip = TRUE;
+ }
+ }
+ else
+ if (nMovY > 0) ++nCurY; else --nCurY;
+ }
+ }
+ while (bHidden);
+ if (pDoc->IsHorOverlapped( nCurX, nCurY, nTab ))
+ {
+ aViewData.SetOldCursor( nCurX,nCurY );
+ while (pDoc->IsHorOverlapped( nCurX, nCurY, nTab ))
+ --nCurX;
+ }
+ }
+
+ MoveCursorAbs( nCurX, nCurY, eMode, bShift, FALSE, TRUE, bKeepSel );
+}
+
+void ScTabView::MoveCursorPage( short nMovX, short nMovY, ScFollowMode eMode, BOOL bShift )
+{
+ USHORT nCurX;
+ USHORT nCurY;
+ aViewData.GetMoveCursor( nCurX,nCurY );
+
+ ScSplitPos eWhich = aViewData.GetActivePart();
+ ScHSplitPos eWhichX = WhichH( eWhich );
+ ScVSplitPos eWhichY = WhichV( eWhich );
+
+ short nPageX;
+ short nPageY;
+ if (nMovX >= 0)
+ nPageX = ((short) aViewData.CellsAtX( nCurX, 1, eWhichX )) * nMovX;
+ else
+ nPageX = ((short) aViewData.CellsAtX( nCurX, -1, eWhichX )) * nMovX;
+
+ if (nMovY >= 0)
+ nPageY = ((short) aViewData.CellsAtY( nCurY, 1, eWhichY )) * nMovY;
+ else
+ nPageY = ((short) aViewData.CellsAtY( nCurY, -1, eWhichY )) * nMovY;
+
+ if (nMovX && !nPageX) nPageX = (nMovX>0) ? 1 : -1;
+ if (nMovY && !nPageY) nPageY = (nMovY>0) ? 1 : -1;
+
+ MoveCursorRel( nPageX, nPageY, eMode, bShift );
+}
+
+void ScTabView::MoveCursorArea( short nMovX, short nMovY, ScFollowMode eMode, BOOL bShift )
+{
+ USHORT nCurX;
+ USHORT nCurY;
+ aViewData.GetMoveCursor( nCurX,nCurY );
+ USHORT nNewX = nCurX;
+ USHORT nNewY = nCurY;
+
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+
+ // FindAreaPos kennt nur -1 oder 1 als Richtung
+
+ short i;
+ if ( nMovX > 0 )
+ for ( i=0; i<nMovX; i++ )
+ pDoc->FindAreaPos( nNewX, nNewY, nTab, 1, 0 );
+ if ( nMovX < 0 )
+ for ( i=0; i<-nMovX; i++ )
+ pDoc->FindAreaPos( nNewX, nNewY, nTab, -1, 0 );
+ if ( nMovY > 0 )
+ for ( i=0; i<nMovY; i++ )
+ pDoc->FindAreaPos( nNewX, nNewY, nTab, 0, 1 );
+ if ( nMovY < 0 )
+ for ( i=0; i<-nMovY; i++ )
+ pDoc->FindAreaPos( nNewX, nNewY, nTab, 0, -1 );
+
+ if (eMode==SC_FOLLOW_JUMP) // unten/rechts nicht zuviel grau anzeigen
+ {
+ if (nMovX != 0 && nNewX == MAXCOL)
+ eMode = SC_FOLLOW_LINE;
+ if (nMovY != 0 && nNewY == MAXROW)
+ eMode = SC_FOLLOW_LINE;
+ }
+
+ MoveCursorRel( ((short)nNewX)-(short)nCurX, ((short)nNewY)-(short)nCurY, eMode, bShift );
+}
+
+void ScTabView::MoveCursorEnd( short nMovX, short nMovY, ScFollowMode eMode, BOOL bShift )
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+
+ USHORT nCurX;
+ USHORT nCurY;
+ aViewData.GetMoveCursor( nCurX,nCurY );
+ USHORT nNewX = nCurX;
+ USHORT nNewY = nCurY;
+
+ USHORT nUsedX = 0;
+ USHORT nUsedY = 0;
+ if ( nMovX > 0 || nMovY > 0 )
+ pDoc->GetPrintArea( nTab, nUsedX, nUsedY ); // Ende holen
+
+ if (nMovX<0)
+ nNewX=0;
+ else if (nMovX>0)
+ nNewX=nUsedX; // letzter benutzter Bereich
+
+ if (nMovY<0)
+ nNewY=0;
+ else if (nMovY>0)
+ nNewY=nUsedY;
+
+ aViewData.ResetOldCursor();
+ MoveCursorRel( ((short)nNewX)-(short)nCurX, ((short)nNewY)-(short)nCurY, eMode, bShift );
+}
+
+void ScTabView::MoveCursorScreen( short nMovX, short nMovY, ScFollowMode eMode, BOOL bShift )
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+
+ USHORT nCurX;
+ USHORT nCurY;
+ aViewData.GetMoveCursor( nCurX,nCurY );
+ USHORT nNewX = nCurX;
+ USHORT nNewY = nCurY;
+
+ ScSplitPos eWhich = aViewData.GetActivePart();
+ USHORT nPosX = aViewData.GetPosX( WhichH(eWhich) );
+ USHORT nPosY = aViewData.GetPosY( WhichV(eWhich) );
+
+ USHORT nAddX = aViewData.VisibleCellsX( WhichH(eWhich) );
+ if (nAddX)
+ --nAddX;
+ USHORT nAddY = aViewData.VisibleCellsY( WhichV(eWhich) );
+ if (nAddY)
+ --nAddY;
+
+ if (nMovX<0)
+ nNewX=nPosX;
+ else if (nMovX>0)
+ nNewX=nPosX+nAddX;
+
+ if (nMovY<0)
+ nNewY=nPosY;
+ else if (nMovY>0)
+ nNewY=nPosY+nAddY;
+
+// aViewData.ResetOldCursor();
+ aViewData.SetOldCursor( nNewX,nNewY );
+
+ while (pDoc->IsHorOverlapped( nNewX, nNewY, nTab ))
+ --nNewX;
+ while (pDoc->IsVerOverlapped( nNewX, nNewY, nTab ))
+ --nNewY;
+
+ MoveCursorAbs( nNewX, nNewY, eMode, bShift, FALSE, TRUE );
+}
+
+void ScTabView::MoveCursorEnter( BOOL bShift ) // bShift -> hoch/runter
+{
+ const ScInputOptions& rOpt = SC_MOD()->GetInputOptions();
+ if (!rOpt.GetMoveSelection())
+ {
+ aViewData.UpdateInputHandler(TRUE);
+ return;
+ }
+
+ short nMoveX = 0;
+ short nMoveY = 0;
+ switch ((ScDirection)rOpt.GetMoveDir())
+ {
+ case DIR_BOTTOM:
+ nMoveY = bShift ? -1 : 1;
+ break;
+ case DIR_RIGHT:
+ nMoveX = bShift ? -1 : 1;
+ break;
+ case DIR_TOP:
+ nMoveY = bShift ? 1 : -1;
+ break;
+ case DIR_LEFT:
+ nMoveX = bShift ? 1 : -1;
+ break;
+ }
+
+ ScMarkData& rMark = aViewData.GetMarkData();
+ if (rMark.IsMarked() || rMark.IsMultiMarked())
+ {
+ USHORT nCurX;
+ USHORT nCurY;
+ aViewData.GetMoveCursor( nCurX,nCurY );
+ USHORT nNewX = nCurX;
+ USHORT nNewY = nCurY;
+ USHORT nTab = aViewData.GetTabNo();
+
+ ScDocument* pDoc = aViewData.GetDocument();
+ pDoc->GetNextPos( nNewX,nNewY, nTab, nMoveX,nMoveY, TRUE,FALSE, rMark );
+
+ MoveCursorRel( ((short)nNewX)-(short)nCurX, ((short)nNewY)-(short)nCurY,
+ SC_FOLLOW_LINE, FALSE, TRUE );
+
+ // update input line even if cursor was not moved
+ if ( nNewX == nCurX && nNewY == nCurY )
+ aViewData.UpdateInputHandler(TRUE);
+ }
+ else
+ {
+ if ( nMoveY && !nMoveX && rOpt.GetUseTabCol() )
+ {
+ // nach Tab und Enter wieder zur Ausgangsspalte
+ USHORT nTabCol = aViewData.GetTabStartCol();
+ if (nTabCol != SC_TABSTART_NONE)
+ {
+ USHORT nCurX;
+ USHORT nCurY;
+ aViewData.GetMoveCursor( nCurX,nCurY );
+ nMoveX = ((short)nTabCol)-(short)nCurX;
+ }
+ }
+
+ MoveCursorRel( nMoveX,nMoveY, SC_FOLLOW_LINE, FALSE );
+ }
+}
+
+ // naechste/vorherige nicht geschuetzte Zelle
+void ScTabView::FindNextUnprot( BOOL bShift, BOOL bInSelection )
+{
+ short nMove = bShift ? -1 : 1;
+
+ ScMarkData& rMark = aViewData.GetMarkData();
+ BOOL bMarked = bInSelection && (rMark.IsMarked() || rMark.IsMultiMarked());
+
+ USHORT nCurX;
+ USHORT nCurY;
+ aViewData.GetMoveCursor( nCurX,nCurY );
+ USHORT nNewX = nCurX;
+ USHORT nNewY = nCurY;
+ USHORT nTab = aViewData.GetTabNo();
+
+ ScDocument* pDoc = aViewData.GetDocument();
+ pDoc->GetNextPos( nNewX,nNewY, nTab, nMove,0, bMarked,TRUE, rMark );
+
+ USHORT nTabCol = aViewData.GetTabStartCol();
+ if ( nTabCol == SC_TABSTART_NONE )
+ nTabCol = nCurX; // auf diese Spalte zurueck bei Enter
+
+ MoveCursorRel( ((short)nNewX)-(short)nCurX, ((short)nNewY)-(short)nCurY,
+ SC_FOLLOW_LINE, FALSE, TRUE );
+
+ // in MoveCursorRel wird die TabCol zurueckgesetzt...
+ aViewData.SetTabStartCol( nTabCol );
+}
+
+void ScTabView::MarkColumns()
+{
+ USHORT nStartCol;
+ USHORT nEndCol;
+
+ ScMarkData& rMark = aViewData.GetMarkData();
+ if (rMark.IsMarked())
+ {
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+ nStartCol = aMarkRange.aStart.Col();
+ nEndCol = aMarkRange.aEnd.Col();
+ }
+ else
+ {
+ USHORT nDummy;
+ aViewData.GetMoveCursor( nStartCol, nDummy );
+ nEndCol=nStartCol;
+ }
+
+ USHORT nTab = aViewData.GetTabNo();
+ DoneBlockMode();
+ InitBlockMode( nStartCol,0, nTab );
+ MarkCursor( nEndCol,MAXROW, nTab );
+ SelectionChanged();
+}
+
+void ScTabView::MarkRows()
+{
+ USHORT nStartRow;
+ USHORT nEndRow;
+
+ ScMarkData& rMark = aViewData.GetMarkData();
+ if (rMark.IsMarked())
+ {
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+ nStartRow = aMarkRange.aStart.Row();
+ nEndRow = aMarkRange.aEnd.Row();
+ }
+ else
+ {
+ USHORT nDummy;
+ aViewData.GetMoveCursor( nDummy, nStartRow );
+ nEndRow=nStartRow;
+ }
+
+ USHORT nTab = aViewData.GetTabNo();
+ DoneBlockMode();
+ InitBlockMode( 0,nStartRow, nTab );
+ MarkCursor( MAXCOL,nEndRow, nTab );
+ SelectionChanged();
+}
+
+void ScTabView::MarkDataArea( BOOL bIncludeCursor )
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+ USHORT nStartCol = aViewData.GetCurX();
+ USHORT nStartRow = aViewData.GetCurY();
+ USHORT nEndCol = nStartCol;
+ USHORT nEndRow = nStartRow;
+
+ pDoc->GetDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow, bIncludeCursor );
+
+ HideAllCursors();
+ DoneBlockMode();
+ InitBlockMode( nStartCol, nStartRow, nTab );
+ MarkCursor( nEndCol, nEndRow, nTab );
+ ShowAllCursors();
+
+ SelectionChanged();
+}
+
+void ScTabView::MarkRange( const ScRange& rRange, BOOL bSetCursor )
+{
+ USHORT nTab = rRange.aStart.Tab();
+ SetTabNo( nTab );
+
+ HideAllCursors();
+ DoneBlockMode(); // alte Markierung aufheben vor dem Align
+ if (bSetCursor) // Wenn Cursor gesetzt wird, immer auch alignen
+ {
+ USHORT nAlignX = rRange.aStart.Col();
+ USHORT nAlignY = rRange.aStart.Row();
+ if ( rRange.aStart.Col() == 0 && rRange.aEnd.Col() == MAXCOL )
+ nAlignX = aViewData.GetPosX(WhichH(aViewData.GetActivePart()));
+ if ( rRange.aStart.Row() == 0 && rRange.aEnd.Row() == MAXROW )
+ nAlignY = aViewData.GetPosY(WhichV(aViewData.GetActivePart()));
+ AlignToCursor( nAlignX, nAlignY, SC_FOLLOW_JUMP );
+ }
+ InitBlockMode( rRange.aStart.Col(), rRange.aStart.Row(), nTab );
+ MarkCursor( rRange.aEnd.Col(), rRange.aEnd.Row(), nTab );
+ if (bSetCursor)
+ {
+ USHORT nPosX = rRange.aStart.Col();
+ USHORT nPosY = rRange.aStart.Row();
+ ScDocument* pDoc = aViewData.GetDocument();
+
+ while (pDoc->IsHorOverlapped( nPosX, nPosY, nTab )) //! ViewData !!!
+ --nPosX;
+ while (pDoc->IsVerOverlapped( nPosX, nPosY, nTab ))
+ --nPosY;
+
+ aViewData.ResetOldCursor();
+ SetCursor( nPosX, nPosY );
+ }
+ ShowAllCursors();
+
+ SelectionChanged();
+}
+
+void ScTabView::Unmark()
+{
+ ScMarkData& rMark = aViewData.GetMarkData();
+ if ( rMark.IsMarked() || rMark.IsMultiMarked() )
+ {
+ USHORT nCurX;
+ USHORT nCurY;
+ aViewData.GetMoveCursor( nCurX,nCurY );
+ MoveCursorAbs( nCurX, nCurY, SC_FOLLOW_NONE, FALSE, FALSE );
+
+ SelectionChanged();
+ }
+}
+
+void ScTabView::SelectNextTab( short nDir )
+{
+ if (!nDir) return;
+ DBG_ASSERT( nDir==-1 || nDir==1, "SelectNextTab: falscher Wert");
+
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+ if (nDir<0)
+ {
+ if (!nTab) return;
+ --nTab;
+ while (!pDoc->IsVisible(nTab))
+ {
+ if (!nTab) return;
+ --nTab;
+ }
+ }
+ else
+ {
+ USHORT nCount = pDoc->GetTableCount();
+ ++nTab;
+ if (nTab >= nCount) return;
+ while (!pDoc->IsVisible(nTab))
+ {
+ ++nTab;
+ if (nTab >= nCount) return;
+ }
+ }
+
+ SetTabNo(nTab);
+ PaintExtras();
+}
+
+
+// SetTabNo - angezeigte Tabelle
+
+void ScTabView::SetTabNo( USHORT nTab, BOOL bNew )
+{
+ if ( nTab > MAXTAB )
+ {
+ DBG_ERROR("SetTabNo: falsche Tabelle");
+ return;
+ }
+
+ if ( nTab != aViewData.GetTabNo() || bNew )
+ {
+ // #57724# Die FormShell moechte vor dem Umschalten benachrichtigt werden
+ FmFormShell* pFormSh = aViewData.GetViewShell()->GetFormShell();
+ if (pFormSh)
+ {
+ BOOL bAllowed = pFormSh->PrepareClose( TRUE );
+ if (!bAllowed)
+ {
+ //! Fehlermeldung? oder macht das die FormShell selber?
+ //! Fehler-Flag zurueckgeben und Aktionen abbrechen
+
+ return; // Die FormShell sagt, es kann nicht umgeschaltet werden
+ }
+ }
+
+ // nicht InputEnterHandler wegen Referenzeingabe !
+
+ ScDocument* pDoc = aViewData.GetDocument();
+ pDoc->MakeTable( nTab );
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nOldPos = nTab;
+ while (!pDoc->IsVisible(nTab)) // naechste sichtbare suchen
+ {
+ BOOL bUp = (nTab>=nOldPos);
+ if (bUp)
+ {
+ ++nTab;
+ if (nTab>=nTabCount)
+ {
+ nTab = nOldPos;
+ bUp = FALSE;
+ }
+ }
+
+ if (!bUp)
+ {
+ if (nTab)
+ --nTab;
+ else
+ {
+ DBG_ERROR("keine sichtbare Tabelle");
+ pDoc->SetVisible( 0, TRUE );
+ }
+ }
+ }
+
+ BOOL bRefMode = SC_MOD()->IsFormulaMode();
+ if ( !bRefMode ) // Abfrage, damit RefMode bei Tabellenwechsel funktioniert
+ {
+ DoneBlockMode();
+ aViewData.SetRefTabNo( nTab );
+ }
+
+ aViewData.SetTabNo( nTab );
+ // UpdateShow noch vor SetCursor, damit UpdateAutoFillMark die richtigen
+ // Fenster findet (wird aus SetCursor gerufen)
+ UpdateShow();
+ aViewData.ResetOldCursor();
+ SetCursor( aViewData.GetCurX(), aViewData.GetCurY(), TRUE );
+
+ if ( bRefMode ) // evtl. EditView verstecken (nach aViewData.SetTabNo !)
+ {
+ for ( USHORT i=0; i<4; i++ )
+ if ( pGridWin[i] )
+ if ( pGridWin[i]->IsVisible() )
+ pGridWin[i]->UpdateEditViewPos();
+ }
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ ScMarkData& rMark = aViewData.GetMarkData();
+ if (!rMark.GetTableSelect(nTab))
+ {
+ rMark.SelectOneTable( nTab );
+
+ rBindings.Invalidate( FID_FILL_TAB );
+ }
+
+ TabChanged(); // DrawView
+ aViewData.GetViewShell()->WindowChanged(); // falls das aktive Fenster anders ist
+ aViewData.GetViewShell()->DisconnectAllClients(); // wichtig fuer Floating Frames
+
+ // Fixierungen
+
+ BOOL bResize = FALSE;
+ if ( aViewData.GetHSplitMode() == SC_SPLIT_FIX )
+ if (aViewData.UpdateFixX())
+ bResize = TRUE;
+ if ( aViewData.GetVSplitMode() == SC_SPLIT_FIX )
+ if (aViewData.UpdateFixY())
+ bResize = TRUE;
+ if (bResize)
+ RepeatResize();
+ InvalidateSplit();
+
+ if ( aViewData.IsPagebreakMode() )
+ UpdatePageBreakData(); //! asynchron ??
+
+ // #53551# Form-Layer muss den sichtbaren Ausschnitt der neuen Tabelle kennen
+ // dafuer muss hier schon der MapMode stimmen
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ pGridWin[i]->SetMapMode( pGridWin[i]->GetDrawMapMode() );
+ SetNewVisArea();
+
+ PaintGrid();
+ PaintTop();
+ PaintLeft();
+ PaintExtras();
+
+ DoResize( aBorderPos, aFrameSize );
+ rBindings.Invalidate( SID_DELETE_PRINTAREA ); // Menue
+ rBindings.Invalidate( FID_DEL_MANUALBREAKS );
+ rBindings.Invalidate( FID_RESET_PRINTZOOM );
+ rBindings.Invalidate( SID_STATUS_DOCPOS ); // Statusbar
+ rBindings.Invalidate( SID_STATUS_PAGESTYLE ); // Statusbar
+ rBindings.Invalidate( SID_CURRENTTAB ); // Navigator
+ rBindings.Invalidate( SID_STYLE_FAMILY2 ); // Gestalter
+ rBindings.Invalidate( SID_STYLE_FAMILY4 ); // Gestalter
+ rBindings.Invalidate( SID_TABLES_COUNT );
+
+ ScModule* pScMod = SC_MOD();
+
+ if(pScMod->IsRefDialogOpen())
+ {
+ USHORT nCurRefDlgId=pScMod->GetCurRefDlgId();
+ SfxViewFrame* pViewFrm = aViewData.GetViewShell()->GetViewFrame();
+ SfxChildWindow* pChildWnd = pViewFrm->GetChildWindow( nCurRefDlgId );
+ if ( pChildWnd )
+ {
+ ScAnyRefDlg* pRefDlg = (ScAnyRefDlg*)pChildWnd->GetWindow();
+ pRefDlg->ViewShellChanged(NULL);
+ }
+ }
+ }
+}
+
+//
+// Paint-Funktionen - nur fuer diese View
+//
+
+void ScTabView::MakeEditView( ScEditEngineDefaulter* pEngine, USHORT nCol, USHORT nRow )
+{
+ DrawDeselectAll();
+
+ if (pDrawView)
+ DrawEnableAnim( FALSE );
+
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ if ( pGridWin[i]->IsVisible() && !aViewData.HasEditView((ScSplitPos)i) )
+ {
+ ScHSplitPos eHWhich = WhichH( (ScSplitPos) i );
+ ScVSplitPos eVWhich = WhichV( (ScSplitPos) i );
+ USHORT nScrX = aViewData.GetPosX( eHWhich );
+ USHORT nScrY = aViewData.GetPosY( eVWhich );
+
+ if ( nCol >= nScrX && nCol <= nScrX + aViewData.VisibleCellsX(eHWhich) + 1 &&
+ nRow >= nScrY && nRow <= nScrY + aViewData.VisibleCellsY(eVWhich) + 1 )
+ {
+ pGridWin[i]->HideCursor();
+
+ // MapMode nach HideCursor setzen
+
+ pGridWin[i]->SetMapMode(aViewData.GetLogicMode());
+
+ aViewData.SetEditEngine( (ScSplitPos) i, pEngine, pGridWin[i], nCol, nRow );
+ }
+ }
+}
+
+void ScTabView::UpdateEditView()
+{
+ ScSplitPos eActive = aViewData.GetActivePart();
+ for (USHORT i=0; i<4; i++)
+ if (aViewData.HasEditView( (ScSplitPos) i ))
+ {
+ EditView* pEditView = aViewData.GetEditView( (ScSplitPos) i );
+ aViewData.SetEditEngine( (ScSplitPos) i,
+ (ScEditEngineDefaulter*) pEditView->GetEditEngine(),
+ pGridWin[i], GetViewData()->GetCurX(), GetViewData()->GetCurY() );
+ if ( (ScSplitPos)i == eActive )
+ pEditView->ShowCursor( FALSE );
+ }
+}
+
+void ScTabView::KillEditView( BOOL bNoPaint )
+{
+ USHORT i;
+ USHORT nCol1 = aViewData.GetEditViewCol();
+ USHORT nRow1 = aViewData.GetEditViewRow();
+ USHORT nCol2 = aViewData.GetEditEndCol();
+ USHORT nRow2 = aViewData.GetEditEndRow();
+ BOOL bPaint[4];
+
+ BOOL bExtended = nRow1 != nRow2; // Col wird sowieso bis zum Ende gezeichnet
+ BOOL bAtCursor = nCol1 == aViewData.GetCurX() &&
+ nRow1 == aViewData.GetCurY();
+ for (i=0; i<4; i++)
+ bPaint[i] = aViewData.HasEditView( (ScSplitPos) i );
+ aViewData.ResetEditView();
+ for (i=0; i<4; i++)
+ if (pGridWin[i] && bPaint[i])
+ if (pGridWin[i]->IsVisible())
+ {
+ pGridWin[i]->ShowCursor();
+
+ if (bExtended || ( bAtCursor && !bNoPaint ))
+ pGridWin[i]->Draw( nCol1, nRow1, nCol2, nRow2 );
+ else
+ pGridWin[i]->SetMapMode(pGridWin[i]->GetDrawMapMode());
+ }
+
+ if (pDrawView)
+ DrawEnableAnim( TRUE );
+
+ // GrabFocus immer dann, wenn diese View aktiv ist und
+ // die Eingabezeile den Focus hat
+
+ BOOL bGrabFocus = FALSE;
+ if (aViewData.IsActive())
+ {
+ ScInputHandler* pInputHdl = SC_MOD()->GetInputHdl();
+ if ( pInputHdl )
+ {
+ ScInputWindow* pInputWin = pInputHdl->GetInputWindow();
+ if (pInputWin && pInputWin->IsActive())
+ bGrabFocus = TRUE;
+ }
+ }
+
+ if (bGrabFocus)
+ {
+// So soll es gemacht werden, damit der Sfx es mitbekommt, klappt aber nicht:
+//! aViewData.GetViewShell()->GetViewFrame()->GetWindow().GrabFocus();
+// deshalb erstmal so:
+ GetActiveWin()->GrabFocus();
+ }
+
+ // Cursor-Abfrage erst nach GrabFocus
+
+ for (i=0; i<4; i++)
+ if (pGridWin[i] && pGridWin[i]->IsVisible())
+ {
+ Cursor* pCur = pGridWin[i]->GetCursor();
+ if (pCur && pCur->IsVisible())
+ pCur->Hide();
+ }
+}
+
+void ScTabView::UpdateFormulas()
+{
+ if ( aViewData.GetDocument()->IsAutoCalcShellDisabled() )
+ return ;
+
+ USHORT i;
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ if (pGridWin[i]->IsVisible())
+ pGridWin[i]->UpdateFormulas();
+
+ if ( aViewData.IsPagebreakMode() )
+ UpdatePageBreakData(); //! asynchron
+
+ UpdateHeaderWidth();
+}
+
+// PaintCell - einzelne Zelle neu zeichnen
+
+void ScTabView::PaintCell( USHORT nCol, USHORT nRow, USHORT nTab )
+{
+ if ( aViewData.GetTabNo() == nTab )
+ {
+ USHORT i;
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ if (pGridWin[i]->IsVisible())
+ pGridWin[i]->Draw( nCol, nRow, nCol, nRow );
+ }
+}
+
+// PaintArea -Block neu zeichnen
+
+void ScTabView::PaintArea( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ ScUpdateMode eMode )
+{
+ USHORT i;
+ USHORT nCol1;
+ USHORT nRow1;
+ USHORT nCol2;
+ USHORT nRow2;
+
+ PutInOrder( nStartCol, nEndCol );
+ PutInOrder( nStartRow, nEndRow );
+
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ if (pGridWin[i]->IsVisible())
+ {
+ ScHSplitPos eHWhich = WhichH( (ScSplitPos) i );
+ ScVSplitPos eVWhich = WhichV( (ScSplitPos) i );
+ BOOL bOut = FALSE;
+
+ nCol1 = nStartCol;
+ nRow1 = nStartRow;
+ nCol2 = nEndCol;
+ nRow2 = nEndRow;
+
+ USHORT nScrX = aViewData.GetPosX( eHWhich );
+ USHORT nScrY = aViewData.GetPosY( eVWhich );
+ if (nCol1 < nScrX) nCol1 = nScrX;
+ if (nCol2 < nScrX) bOut = TRUE; // ausserhalb
+ if (nRow1 < nScrY) nRow1 = nScrY;
+ if (nRow2 < nScrY) bOut = TRUE;
+
+ USHORT nLastX = nScrX + aViewData.VisibleCellsX( eHWhich ) + 1;
+ USHORT nLastY = nScrY + aViewData.VisibleCellsY( eVWhich ) + 1;
+ if (nCol1 > nLastX) bOut = TRUE;
+ if (nCol2 > nLastX) nCol2 = nLastX;
+ if (nRow1 > nLastY) bOut = TRUE;
+ if (nRow2 > nLastY) nRow2 = nLastY;
+
+ if (!bOut)
+ {
+ if ( eMode == SC_UPDATE_CHANGED )
+ pGridWin[i]->Draw( nCol1, nRow1, nCol2, nRow2, eMode );
+ else // ALL oder MARKS
+ {
+ Point aStart = aViewData.GetScrPos( nCol1, nRow1, (ScSplitPos) i );
+ Point aEnd = aViewData.GetScrPos( nCol2+1, nRow2+1, (ScSplitPos) i );
+ if ( eMode == SC_UPDATE_ALL )
+ aEnd.X() = pGridWin[i]->GetOutputSizePixel().Width();
+ aEnd.X() -= 1;
+ aEnd.Y() -= 1;
+
+ BOOL bShowChanges = TRUE; //! ...
+ if (bShowChanges)
+ {
+ aStart.X() -= 1; // auch Change-Markierung
+ aStart.Y() -= 1;
+ }
+
+ BOOL bMarkClipped = aViewData.GetOptions().GetOption( VOPT_CLIPMARKS );
+ if (bMarkClipped)
+ {
+ // dazu muesste ScColumn::IsEmptyBlock optimiert werden
+ // (auf Search() umstellen)
+ //!if ( nCol1 > 0 && !aViewData.GetDocument()->IsBlockEmpty(
+ //! aViewData.GetTabNo(),
+ //! 0, nRow1, nCol1-1, nRow2 ) )
+ {
+ long nMarkPixel = (long)( SC_CLIPMARK_SIZE * aViewData.GetPPTX() );
+ aStart.X() -= nMarkPixel;
+ if (!bShowChanges)
+ aStart.X() -= 1; // Zellgitter
+ }
+ }
+
+ pGridWin[i]->Invalidate( pGridWin[i]->PixelToLogic( Rectangle( aStart,aEnd ) ) );
+ }
+ }
+ }
+}
+
+void ScTabView::PaintRangeFinder( long nNumber )
+{
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl( aViewData.GetViewShell() );
+ if (pHdl)
+ {
+ ScRangeFindList* pRangeFinder = pHdl->GetRangeFindList();
+ if ( pRangeFinder && pRangeFinder->GetDocName() == aViewData.GetDocShell()->GetTitle() )
+ {
+ BOOL bHide = pRangeFinder->IsHidden();
+
+ USHORT nTab = aViewData.GetTabNo();
+ USHORT nCount = (USHORT)pRangeFinder->Count();
+ for (USHORT i=0; i<nCount; i++)
+ if ( nNumber < 0 || nNumber == i )
+ {
+ ScRangeFindData* pData = pRangeFinder->GetObject(i);
+ if (pData)
+ {
+ ScRange aRef = pData->aRef;
+ aRef.Justify(); // Justify fuer die Abfragen unten
+
+ if ( aRef.aStart == aRef.aEnd ) //! Tab ignorieren?
+ aViewData.GetDocument()->ExtendMerge(aRef);
+
+ if ( aRef.aStart.Tab() >= nTab && aRef.aEnd.Tab() <= nTab )
+ {
+ USHORT nCol1 = aRef.aStart.Col();
+ USHORT nRow1 = aRef.aStart.Row();
+ USHORT nCol2 = aRef.aEnd.Col();
+ USHORT nRow2 = aRef.aEnd.Row();
+ if ( bHide )
+ {
+ // wegnehmen -> Repaint
+ // SC_UPDATE_MARKS: Invalidate, nicht bis zum Zeilenende
+
+ if ( nCol2 - nCol1 > 1 && nRow2 - nRow1 > 1 )
+ {
+ // nur an den Raendern entlang
+ PaintArea( nCol1, nRow1, nCol2, nRow1, SC_UPDATE_MARKS );
+ PaintArea( nCol1, nRow1+1, nCol1, nRow2-1, SC_UPDATE_MARKS );
+ PaintArea( nCol2, nRow1+1, nCol2, nRow2-1, SC_UPDATE_MARKS );
+ PaintArea( nCol1, nRow2, nCol2, nRow2, SC_UPDATE_MARKS );
+ }
+ else // alles am Stueck
+ PaintArea( nCol1, nRow1, nCol2, nRow2, SC_UPDATE_MARKS );
+ }
+ else
+ {
+ // neuen Rahmen zeichnen
+
+ for (USHORT nWin=0; nWin<4; nWin++)
+ if (pGridWin[nWin] && pGridWin[nWin]->IsVisible())
+ pGridWin[nWin]->DrawRefMark( nCol1, nRow1, nCol2, nRow2,
+ Color( ScRangeFindList::GetColorName( i ) ),
+ TRUE );
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+// fuer Chart-Daten-Markierung
+
+void ScTabView::AddHighlightRange( const ScRange& rRange, const Color& rColor )
+{
+ if (!pHighlightRanges)
+ pHighlightRanges = new ScHighlightRanges;
+ pHighlightRanges->Insert( new ScHighlightEntry( rRange, rColor ) );
+ //! auf doppelte testen??
+
+ USHORT nTab = aViewData.GetTabNo();
+ if ( nTab >= rRange.aStart.Tab() && nTab <= rRange.aEnd.Tab() )
+ PaintArea( rRange.aStart.Col(), rRange.aStart.Row(),
+ rRange.aEnd.Col(), rRange.aEnd.Row(), SC_UPDATE_MARKS );
+}
+
+void ScTabView::ClearHighlightRanges()
+{
+ if (pHighlightRanges)
+ {
+ ScHighlightRanges* pTemp = pHighlightRanges;
+ pHighlightRanges = NULL; // Repaint ohne Highlight
+
+ USHORT nTab = aViewData.GetTabNo();
+ ULONG nCount = pTemp->Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScHighlightEntry* pEntry = pTemp->GetObject( i );
+ if (pEntry)
+ {
+ ScRange aRange = pEntry->aRef;
+ if ( nTab >= aRange.aStart.Tab() && nTab <= aRange.aEnd.Tab() )
+ PaintArea( aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(), SC_UPDATE_MARKS );
+ }
+ }
+ delete pTemp;
+ }
+}
+
+long ScTabView::DoChartSelection( ChartSelectionInfo &rInfo, const SchMemChart& rMemChart )
+{
+ long nFlags = rInfo.nSelection;
+ if ( nFlags & CHART_SEL_QUERYSUPPORT )
+ return nFlags & ( CHART_SEL_NONE | CHART_SEL_ALL | CHART_SEL_COL |
+ CHART_SEL_ROW | CHART_SEL_POINT | CHART_SEL_COLOR );
+
+ long nRet = 0;
+ ScChartArray aArr( aViewData.GetDocument(), rMemChart );
+ if (aArr.IsValid())
+ {
+ if ( nFlags & CHART_SEL_NONE )
+ {
+ ClearHighlightRanges();
+ nRet |= CHART_SEL_NONE;
+ }
+
+ Color aSelColor( COL_LIGHTBLUE ); // Default
+ BOOL bManualColor = ( ( nFlags & CHART_SEL_COLOR ) != 0 );
+ bManualColor = FALSE; //! Test !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ if ( bManualColor )
+ {
+ aSelColor = rInfo.aSelectionColor;
+ nRet |= CHART_SEL_COLOR;
+ }
+
+ if ( nFlags & CHART_SEL_ALL )
+ {
+ ScRangeListRef xRanges = aArr.GetRangeList();
+ if (xRanges.Is())
+ {
+ USHORT nCount = xRanges->Count();
+ USHORT i;
+ if (!bManualColor)
+ {
+ ScBackgroundCollector aColl( aViewData.GetDocument() );
+ for (i=0; i<nCount; i++)
+ aColl.AddRange( *xRanges->GetObject(i) );
+ aSelColor = aColl.GetHighlightColor();
+ }
+ for (i=0; i<nCount; i++)
+ AddHighlightRange( *xRanges->GetObject(i), aSelColor );
+ nRet |= CHART_SEL_ALL;
+ }
+ }
+
+ if ( nFlags & ( CHART_SEL_COL | CHART_SEL_ROW | CHART_SEL_POINT ) )
+ {
+ // irgendwelche Teile selektieren -> PositionMap holen
+ const ScChartPositionMap* pPosMap = aArr.GetPositionMap();
+ if (pPosMap)
+ {
+ if ( nFlags & CHART_SEL_COL )
+ {
+ ScRangeListRef xRanges = ((ScChartPositionMap*)pPosMap)->GetColRanges( rInfo.nCol );
+ if (xRanges.Is())
+ {
+ USHORT nCount = xRanges->Count();
+ USHORT i;
+ if (!bManualColor)
+ {
+ ScBackgroundCollector aColl( aViewData.GetDocument() );
+ for (i=0; i<nCount; i++)
+ aColl.AddRange( *xRanges->GetObject(i) );
+ aSelColor = aColl.GetHighlightColor();
+ }
+ for (i=0; i<nCount; i++)
+ AddHighlightRange( *xRanges->GetObject(i), aSelColor );
+ nRet |= CHART_SEL_COL;
+ }
+ }
+ if ( nFlags & CHART_SEL_ROW )
+ {
+ ScRangeListRef xRanges = ((ScChartPositionMap*)pPosMap)->GetRowRanges( rInfo.nRow );
+ if (xRanges.Is())
+ {
+ USHORT nCount = xRanges->Count();
+ USHORT i;
+ if (!bManualColor)
+ {
+ ScBackgroundCollector aColl( aViewData.GetDocument() );
+ for (i=0; i<nCount; i++)
+ aColl.AddRange( *xRanges->GetObject(i) );
+ aSelColor = aColl.GetHighlightColor();
+ }
+ for (i=0; i<nCount; i++)
+ AddHighlightRange( *xRanges->GetObject(i), aSelColor );
+ nRet |= CHART_SEL_ROW;
+ }
+ }
+ if ( nFlags & CHART_SEL_POINT )
+ {
+ const ScAddress* pPos = pPosMap->GetPosition( rInfo.nCol, rInfo.nRow );
+ if (pPos)
+ {
+ if (!bManualColor)
+ {
+ ScBackgroundCollector aColl( aViewData.GetDocument() );
+ aColl.AddRange( ScRange(*pPos) );
+ aSelColor = aColl.GetHighlightColor();
+ }
+ AddHighlightRange( ScRange(*pPos), aSelColor );
+ nRet |= CHART_SEL_POINT;
+ }
+ }
+ }
+ }
+ }
+
+ return nRet;
+}
+
+// DrawDragRect - Drag&Drop-Rechteck zeichnen (XOR)
+
+void ScTabView::DrawDragRect( USHORT nStartX, USHORT nStartY, USHORT nEndX, USHORT nEndY,
+ ScSplitPos ePos )
+{
+ if ( aViewData.GetHSplitMode() == SC_SPLIT_FIX || aViewData.GetVSplitMode() == SC_SPLIT_FIX )
+ {
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ if (pGridWin[i]->IsVisible())
+ pGridWin[i]->DrawDragRect( nStartX, nStartY, nEndX, nEndY );
+ }
+ else
+ pGridWin[ePos]->DrawDragRect( nStartX, nStartY, nEndX, nEndY );
+}
+
+// PaintGrid - Datenbereiche neu zeichnen
+
+void ScTabView::PaintGrid()
+{
+ USHORT i;
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ if (pGridWin[i]->IsVisible())
+ pGridWin[i]->Invalidate();
+}
+
+// PaintTop - obere Kontrollelemente neu zeichnen
+
+void ScTabView::PaintTop()
+{
+ USHORT i;
+ for (i=0; i<2; i++)
+ {
+ if (pColBar[i])
+ pColBar[i]->Invalidate();
+ if (pColOutline[i])
+ pColOutline[i]->Invalidate();
+ }
+}
+
+void ScTabView::CreateAnchorHandles(SdrHdlList& rHdl, const ScAddress& rAddress)
+{
+ UINT16 i;
+
+ for(i=0; i<4; i++)
+ {
+ if(pGridWin[i])
+ {
+ if(pGridWin[i]->IsVisible())
+ {
+ pGridWin[i]->CreateAnchorHandle(rHdl, rAddress);
+ }
+ }
+ }
+}
+
+void ScTabView::PaintTopCol( USHORT nCol )
+{
+ PaintTopArea( nCol, nCol );
+}
+
+void ScTabView::PaintTopArea( USHORT nStartCol, USHORT nEndCol )
+{
+ // Pixel-Position der linken Kante
+
+ if ( nStartCol < aViewData.GetPosX(SC_SPLIT_LEFT) ||
+ nStartCol < aViewData.GetPosX(SC_SPLIT_RIGHT) )
+ aViewData.RecalcPixPos();
+
+ // Fixierung anpassen (UpdateFixX setzt HSplitPos neu)
+
+ if ( aViewData.GetHSplitMode() == SC_SPLIT_FIX && nStartCol < aViewData.GetFixPosX() )
+ if (aViewData.UpdateFixX())
+ RepeatResize();
+
+ // zeichnen
+
+ if (nStartCol>0)
+ --nStartCol; //! allgemeiner ?
+
+ for (USHORT i=0; i<2; i++)
+ {
+ ScHSplitPos eWhich = (ScHSplitPos) i;
+ if (pColBar[eWhich])
+ {
+ Size aWinSize = pColBar[eWhich]->GetSizePixel();
+ long nStartX = aViewData.GetScrPos( nStartCol, 0, eWhich ).X();
+ long nEndX;
+ if (nEndCol >= MAXCOL)
+ nEndX = aWinSize.Width()-1;
+ else
+ nEndX = aViewData.GetScrPos( nEndCol+1, 0, eWhich ).X() - 1;
+ pColBar[eWhich]->Invalidate(
+ Rectangle( nStartX, 0, nEndX, aWinSize.Height()-1 ) );
+ }
+ if (pColOutline[eWhich])
+ pColOutline[eWhich]->Invalidate();
+ }
+}
+
+
+// PaintLeft - linke Kontrollelemente neu zeichnen
+
+void ScTabView::PaintLeft()
+{
+ USHORT i;
+ for (i=0; i<2; i++)
+ {
+ if (pRowBar[i])
+ pRowBar[i]->Invalidate();
+ if (pRowOutline[i])
+ pRowOutline[i]->Invalidate();
+ }
+}
+
+void ScTabView::PaintLeftRow( USHORT nRow )
+{
+ PaintLeftArea( nRow, nRow );
+}
+
+void ScTabView::PaintLeftArea( USHORT nStartRow, USHORT nEndRow )
+{
+ // Pixel-Position der oberen Kante
+
+ if ( nStartRow < aViewData.GetPosY(SC_SPLIT_TOP) ||
+ nStartRow < aViewData.GetPosY(SC_SPLIT_BOTTOM) )
+ aViewData.RecalcPixPos();
+
+ // Fixierung anpassen (UpdateFixY setzt VSplitPos neu)
+
+ if ( aViewData.GetVSplitMode() == SC_SPLIT_FIX && nStartRow < aViewData.GetFixPosY() )
+ if (aViewData.UpdateFixY())
+ RepeatResize();
+
+ // zeichnen
+
+ if (nStartRow>0)
+ --nStartRow;
+
+ for (USHORT i=0; i<2; i++)
+ {
+ ScVSplitPos eWhich = (ScVSplitPos) i;
+ if (pRowBar[eWhich])
+ {
+ Size aWinSize = pRowBar[eWhich]->GetSizePixel();
+ long nStartY = aViewData.GetScrPos( 0, nStartRow, eWhich ).Y();
+ long nEndY;
+ if (nEndRow >= MAXROW)
+ nEndY = aWinSize.Height()-1;
+ else
+ nEndY = aViewData.GetScrPos( 0, nEndRow+1, eWhich ).Y() - 1;
+ pRowBar[eWhich]->Invalidate(
+ Rectangle( 0, nStartY, aWinSize.Width()-1, nEndY ) );
+ }
+ if (pRowOutline[eWhich])
+ pRowOutline[eWhich]->Invalidate();
+ }
+}
+
+// InvertBlockMark - Block invertieren
+
+void ScTabView::InvertBlockMark(USHORT nBlockStartX, USHORT nBlockStartY,
+ USHORT nBlockEndX, USHORT nBlockEndY)
+{
+ if ( !aViewData.IsActive() )
+ return; // invertiert wird nur auf aktiver View
+
+ PutInOrder( nBlockStartX, nBlockEndX );
+ PutInOrder( nBlockStartY, nBlockEndY );
+
+ ScMarkData& rMark = aViewData.GetMarkData();
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+
+#ifdef MAC
+ BOOL bSingle = TRUE;
+#else
+ BOOL bSingle = rMark.IsMultiMarked();
+#endif
+
+ BOOL bMerge = pDoc->HasAttrib( nBlockStartX, nBlockStartY, nTab, nBlockEndX, nBlockEndY, nTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED );
+
+ USHORT i;
+ if ( bMerge || bSingle )
+ {
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ if (pGridWin[i]->IsVisible())
+ pGridWin[i]->InvertSimple( nBlockStartX, nBlockStartY, nBlockEndX, nBlockEndY,
+ bMerge, bBlockNeg );
+ }
+ else
+ {
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ if (pGridWin[i]->IsVisible())
+ {
+ ScSplitPos ePos = (ScSplitPos) i;
+ Point aStartPoint = aViewData.GetScrPos( nBlockStartX, nBlockStartY, ePos );
+ Point aEndPoint = aViewData.GetScrPos( nBlockEndX+1, nBlockEndY+1, ePos );
+ aEndPoint.X() -= 1;
+ aEndPoint.Y() -= 1;
+ if ( aEndPoint.X() >= aStartPoint.X() && aEndPoint.Y() >= aStartPoint.Y() )
+ {
+ MapMode aOld = pGridWin[ePos]->GetMapMode();
+ pGridWin[ePos]->SetMapMode(MAP_PIXEL);
+ pGridWin[ePos]->Invert( Rectangle(aStartPoint,aEndPoint), INVERT_HIGHLIGHT );
+ pGridWin[ePos]->SetMapMode(aOld);
+ pGridWin[ePos]->CheckInverted();
+ }
+ }
+ }
+
+ //
+ // wenn Controls betroffen, neu malen
+ //
+
+ BOOL bHide = TRUE; // wird Teil der Markierung aufgehoben ?
+ if (rMark.IsMarked())
+ {
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+ if ( aMarkRange.aStart.Col() <= nBlockStartX && aMarkRange.aEnd.Col() >= nBlockEndX &&
+ aMarkRange.aStart.Row() <= nBlockStartY && aMarkRange.aEnd.Row() >= nBlockEndY )
+ {
+ bHide = FALSE; // der ganze Bereich ist markiert
+ }
+ }
+
+ Rectangle aMMRect = pDoc->GetMMRect(nBlockStartX,nBlockStartY,nBlockEndX,nBlockEndY, nTab);
+ BOOL bPaint = bHide && pDoc->HasControl( nTab, aMMRect );
+
+ if (bPaint)
+ {
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ if (pGridWin[i]->IsVisible())
+ {
+ // MapMode muss logischer (1/100mm) sein !!!
+ pDoc->InvalidateControls( pGridWin[i], nTab, aMMRect );
+ pGridWin[i]->Update();
+ }
+ }
+}
+
+BOOL ScTabView::PaintExtras()
+{
+ BOOL bRet = FALSE;
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+ if (!pDoc->HasTable(nTab)) // Tabelle geloescht ?
+ {
+ USHORT nCount = pDoc->GetTableCount();
+ aViewData.SetTabNo(nCount-1);
+ bRet = TRUE;
+ }
+ pTabControl->UpdateStatus(); // TRUE = active
+ return bRet;
+}
+
+void ScTabView::ActivateView( BOOL bActivate, BOOL bFirst )
+{
+ if ( bActivate == aViewData.IsActive() && !bFirst )
+ {
+ // keine Assertion mehr - kommt vor, wenn vorher im Drag&Drop
+ // auf ein anderes Dokument umgeschaltet wurde
+ return;
+ }
+
+ // wird nur bei MDI-(De)Activate gerufen
+ // aViewData.Activate hinten wegen Cursor-Show bei KillEditView
+ // Markierung nicht mehr loeschen - wenn an der ViewData Activate(FALSE) gesetzt ist,
+ // wird die Markierung nicht ausgegeben
+
+ if (!bActivate)
+ {
+ ScModule* pScMod = SC_MOD();
+ BOOL bRefMode = pScMod->IsFormulaMode();
+
+ // Referenzeingabe nicht abbrechen, um Referenzen auf
+ // andere Dokumente zuzulassen
+
+ if (!bRefMode)
+ {
+ pScMod->InputEnterHandler();
+ }
+ }
+ pTabControl->ActivateView(bActivate);
+ PaintExtras();
+
+ aViewData.Activate(bActivate);
+
+ PaintBlock(FALSE); // Repaint, Markierung je nach Active-Status
+
+ if (!bActivate)
+ HideAllCursors(); // Cursor
+ else if (!bFirst)
+ ShowAllCursors();
+
+ if (pDrawView)
+ DrawShowMarkHdl(bActivate); // Drawing-Markierung
+
+ if (bActivate)
+ {
+ if ( bFirst )
+ {
+ ScSplitPos eWin = aViewData.GetActivePart();
+ DBG_ASSERT( pGridWin[eWin], "rottes Dokument, nicht alle SplitPos in GridWin" );
+ if ( !pGridWin[eWin] )
+ {
+ eWin = SC_SPLIT_BOTTOMLEFT;
+ if ( !pGridWin[eWin] )
+ {
+ short i;
+ for ( i=0; i<4; i++ )
+ {
+ if ( pGridWin[i] )
+ {
+ eWin = (ScSplitPos) i;
+ break; // for
+ }
+ }
+ DBG_ASSERT( i<4, "und BUMM" );
+ }
+ aViewData.SetActivePart( eWin );
+ }
+ }
+ // hier nicht mehr selber GrabFocus rufen!
+ // Wenn das Doc bearbeitet wird, ruft der Sfx selber GrabFocus am Fenster der Shell.
+ // Wenn es z.B. ein Mailbody ist, darf es den Focus nicht bekommen (Bug #43638#)
+ }
+ else
+ pGridWin[aViewData.GetActivePart()]->ClickExtern();
+}
+
+void ScTabView::ActivatePart( ScSplitPos eWhich )
+{
+ ScSplitPos eOld = aViewData.GetActivePart();
+ if ( eOld != eWhich )
+ {
+ bInActivatePart = TRUE;
+
+ // #40565# die HasEditView Abfrage bei SetCursor geht sonst schief
+ if ( aViewData.HasEditView(eOld) && !SC_MOD()->IsFormulaMode() )
+ UpdateInputLine();
+
+ ScHSplitPos eOldH = WhichH(eOld);
+ ScVSplitPos eOldV = WhichV(eOld);
+ ScHSplitPos eNewH = WhichH(eWhich);
+ ScVSplitPos eNewV = WhichV(eWhich);
+ BOOL bTopCap = pColBar[eOldH] && pColBar[eOldH]->IsMouseCaptured();
+ BOOL bLeftCap = pRowBar[eOldV] && pRowBar[eOldV]->IsMouseCaptured();
+
+ BOOL bFocus = pGridWin[eOld]->HasFocus();
+ BOOL bCapture = pGridWin[eOld]->IsMouseCaptured();
+ if (bCapture)
+ pGridWin[eOld]->ReleaseMouse();
+ pGridWin[eOld]->ClickExtern();
+ pGridWin[eOld]->HideCursor();
+ pGridWin[eWhich]->HideCursor();
+ aViewData.SetActivePart( eWhich );
+
+ ScTabViewShell* pShell = aViewData.GetViewShell();
+ pShell->WindowChanged();
+
+ pSelEngine->SetWindow(pGridWin[eWhich]);
+ pSelEngine->SetWhich(eWhich);
+ pSelEngine->SetVisibleArea( Rectangle(Point(), pGridWin[eWhich]->GetOutputSizePixel()) );
+
+ pGridWin[eOld]->MoveMouseStatus(*pGridWin[eWhich]);
+
+ if ( bCapture || pGridWin[eWhich]->IsMouseCaptured() )
+ {
+ // Tracking statt CaptureMouse, damit sauber abgebrochen werden kann
+ // (SelectionEngine ruft CaptureMouse beim SetWindow)
+ //! Irgendwann sollte die SelectionEngine selber StartTracking rufen!?!
+ pGridWin[eWhich]->ReleaseMouse();
+ pGridWin[eWhich]->StartTracking();
+ }
+
+ if ( bTopCap && pColBar[eNewH] )
+ {
+ pColBar[eOldH]->SetIgnoreMove(TRUE);
+ pColBar[eNewH]->SetIgnoreMove(FALSE);
+ pHdrSelEng->SetWindow( pColBar[eNewH] );
+ long nWidth = pColBar[eNewH]->GetOutputSizePixel().Width();
+ pHdrSelEng->SetVisibleArea( Rectangle( 0, LONG_MIN, nWidth-1, LONG_MAX ) );
+ pColBar[eNewH]->CaptureMouse();
+ }
+ if ( bLeftCap && pRowBar[eNewV] )
+ {
+ pRowBar[eOldV]->SetIgnoreMove(TRUE);
+ pRowBar[eNewV]->SetIgnoreMove(FALSE);
+ pHdrSelEng->SetWindow( pRowBar[eNewV] );
+ long nHeight = pRowBar[eNewV]->GetOutputSizePixel().Height();
+ pHdrSelEng->SetVisibleArea( Rectangle( LONG_MIN, 0, LONG_MAX, nHeight-1 ) );
+ pRowBar[eNewV]->CaptureMouse();
+ }
+ aHdrFunc.SetWhich(eWhich);
+
+ pGridWin[eOld]->ShowCursor();
+ pGridWin[eWhich]->ShowCursor();
+
+ aViewData.GetViewShell()->SetWindow( pGridWin[eWhich] );
+ if ( bFocus && !aViewData.IsAnyFillMode() && !SC_MOD()->IsFormulaMode() )
+ {
+ // GrabFocus nur, wenn vorher das andere GridWindow den Focus hatte
+ // (z.B. wegen Suchen & Ersetzen)
+//! aViewData.GetViewShell()->GetViewFrame()->GetWindow().GrabFocus();
+ pGridWin[eWhich]->GrabFocus();
+ }
+
+ bInActivatePart = FALSE;
+ }
+}
+
+void ScTabView::HideListBox()
+{
+ for (USHORT i=0; i<4; i++)
+ if (pGridWin[i])
+ pGridWin[i]->ClickExtern();
+}
+
+
+// GetGridWidth - Breite eines Ausgabebereichs (fuer ViewData)
+
+long ScTabView::GetGridWidth( ScHSplitPos eWhich )
+{
+ ScSplitPos eGridWhich = ( eWhich == SC_SPLIT_LEFT ) ? SC_SPLIT_BOTTOMLEFT : SC_SPLIT_BOTTOMRIGHT;
+ if (pGridWin[eGridWhich])
+ return pGridWin[eGridWhich]->GetSizePixel().Width();
+ else
+ return 0;
+}
+
+// GetGridHeight - Hoehe eines Ausgabebereichs (fuer ViewData)
+
+long ScTabView::GetGridHeight( ScVSplitPos eWhich )
+{
+ ScSplitPos eGridWhich = ( eWhich == SC_SPLIT_TOP ) ? SC_SPLIT_TOPLEFT : SC_SPLIT_BOTTOMLEFT;
+ if (pGridWin[eGridWhich])
+ return pGridWin[eGridWhich]->GetSizePixel().Height();
+ else
+ return 0;
+}
+
+void ScTabView::UpdateInputLine()
+{
+ SC_MOD()->InputEnterHandler();
+}
+
+void ScTabView::ZoomChanged()
+{
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl(aViewData.GetViewShell());
+ if (pHdl)
+ pHdl->SetRefScale( aViewData.GetZoomX(), aViewData.GetZoomY() );
+
+ UpdateFixPos();
+
+ UpdateScrollBars();
+
+ // VisArea...
+ ScGridWindow* pWin = pGridWin[aViewData.GetActivePart()];
+ if (pWin)
+ {
+ pWin->SetMapMode( pWin->GetDrawMapMode() ); // mit neuem Zoom
+ SetNewVisArea(); // benutzt den gesetzten MapMode
+ }
+
+ InterpretVisible(); // #69343# have everything calculated before painting
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_ATTR_ZOOM );
+}
+
+void ScTabView::CheckNeedsRepaint()
+{
+ USHORT i;
+ for (i=0; i<4; i++)
+ if ( pGridWin[i] && pGridWin[i]->IsVisible() )
+ pGridWin[i]->CheckNeedsRepaint();
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/tabview4.cxx b/sc/source/ui/view/tabview4.cxx
new file mode 100644
index 000000000000..50bdf0650bee
--- /dev/null
+++ b/sc/source/ui/view/tabview4.cxx
@@ -0,0 +1,597 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabview4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#define _MACRODLG_HXX
+#define _BIGINT_HXX
+#define _SVCONTNR_HXX
+#define BASIC_NODIALOGS
+#define _SFXMNUITEM_HXX
+#define _SVDXOUT_HXX
+#define _SVDATTR_HXX
+#define _SFXMNUITEM_HXX
+#define _DLGCFG_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXBASIC_HXX
+#define _MODALDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _BASE_DLGS_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXTBXCTRL_HXX
+#define _PASSWD_HXX
+//#define _SFXFILEDLG_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXOBJFACE_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <vcl/help.hxx>
+
+#include "tabview.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "scmod.hxx"
+#include "gridwin.hxx"
+#include "globstr.hrc"
+#include "cell.hxx"
+#include "dociter.hxx"
+
+extern USHORT nScFillModeMouseModifier; // global.cxx
+
+// STATIC DATA -----------------------------------------------------------
+
+//==================================================================
+
+//
+// --- Referenz-Eingabe / Fill-Cursor
+//
+
+void ScTabView::HideTip()
+{
+ if ( nTipVisible )
+ {
+ Help::HideTip( nTipVisible );
+ nTipVisible = 0;
+ }
+}
+
+void ScTabView::ShowRefTip()
+{
+ BOOL bDone = FALSE;
+ if ( aViewData.GetRefType() == SC_REFTYPE_REF && Help::IsQuickHelpEnabled() )
+ {
+ USHORT nStartX = aViewData.GetRefStartX();
+ USHORT nStartY = aViewData.GetRefStartY();
+ USHORT nEndX = aViewData.GetRefEndX();
+ USHORT nEndY = aViewData.GetRefEndY();
+ if ( nEndX != nStartX || nEndY != nStartY ) // nicht fuer einzelne Zelle
+ {
+ BOOL bLeft = ( nEndX < nStartX );
+ BOOL bTop = ( nEndY < nStartY );
+ PutInOrder( nStartX, nEndX );
+ PutInOrder( nStartY, nEndY );
+ USHORT nCols = nEndX+1-nStartX;
+ USHORT nRows = nEndY+1-nStartY;
+
+ String aHelp = ScGlobal::GetRscString( STR_QUICKHELP_REF );
+ aHelp.SearchAndReplace( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("%1")),
+ String::CreateFromInt32(nRows) );
+ aHelp.SearchAndReplace( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("%2")),
+ String::CreateFromInt32(nCols) );
+
+ ScSplitPos eWhich = aViewData.GetActivePart();
+ Window* pWin = pGridWin[eWhich];
+ if ( pWin )
+ {
+ Point aStart = aViewData.GetScrPos( nStartX, nStartY, eWhich );
+ Point aEnd = aViewData.GetScrPos( nEndX+1, nEndY+1, eWhich );
+
+ Point aPos( bLeft ? aStart.X() : ( aEnd.X() + 3 ),
+ bTop ? aStart.Y() : ( aEnd.Y() + 3 ) );
+ USHORT nFlags = ( bLeft ? QUICKHELP_RIGHT : QUICKHELP_LEFT ) |
+ ( bTop ? QUICKHELP_BOTTOM : QUICKHELP_TOP );
+
+ // nicht ueber die editierte Formel
+ if ( !bTop && aViewData.HasEditView( eWhich ) &&
+ nEndY+1 == aViewData.GetEditViewRow() )
+ {
+ // dann an der oberen Kante der editierten Zelle ausrichten
+ aPos.Y() -= 2; // die 3 von oben
+ nFlags = ( nFlags & ~QUICKHELP_TOP ) | QUICKHELP_BOTTOM;
+ }
+
+ Rectangle aRect( pWin->OutputToScreenPixel( aPos ), Size(1,1) );
+
+ //! Test, ob geaendert ??
+
+ HideTip();
+ nTipVisible = Help::ShowTip( pWin, aRect, aHelp, nFlags );
+ bDone = TRUE;
+ }
+ }
+ }
+
+ if (!bDone)
+ HideTip();
+}
+
+void ScTabView::StopRefMode()
+{
+ // SC_FOLLOW_NONE: nur aktiven Part umschalten
+ // auch ohne IsRefMode, fuer RangeFinder-Verschieberei
+ AlignToCursor( aViewData.GetCurX(), aViewData.GetCurY(), SC_FOLLOW_NONE );
+
+ if (aViewData.IsRefMode())
+ {
+ aViewData.SetRefMode( FALSE, SC_REFTYPE_NONE );
+
+ HideTip();
+
+ if ( aViewData.GetTabNo() >= aViewData.GetRefStartZ() &&
+ aViewData.GetTabNo() <= aViewData.GetRefEndZ() )
+ {
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nStartX = aViewData.GetRefStartX();
+ USHORT nStartY = aViewData.GetRefStartY();
+ USHORT nEndX = aViewData.GetRefEndX();
+ USHORT nEndY = aViewData.GetRefEndY();
+ if ( nStartX == nEndX && nStartY == nEndY )
+ pDoc->ExtendMerge( nStartX, nStartY, nEndX, nEndY, aViewData.GetTabNo() );
+
+ PaintArea( nStartX,nStartY,nEndX,nEndY, SC_UPDATE_MARKS );
+ }
+
+ pSelEngine->Reset();
+ pSelEngine->SetAddMode( FALSE ); //! sollte das nicht bei Reset passieren?
+
+ ScSplitPos eOld = pSelEngine->GetWhich();
+ ScSplitPos eNew = aViewData.GetActivePart();
+ if ( eNew != eOld )
+ {
+ pSelEngine->SetWindow( pGridWin[ eNew ] );
+ pSelEngine->SetWhich( eNew );
+ pSelEngine->SetVisibleArea( Rectangle(Point(),
+ pGridWin[eNew]->GetOutputSizePixel()) );
+ pGridWin[eOld]->MoveMouseStatus(*pGridWin[eNew]);
+ }
+ }
+}
+
+void ScTabView::DoneRefMode( BOOL bContinue )
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ if ( aViewData.GetRefType() == SC_REFTYPE_REF && bContinue )
+ SC_MOD()->AddRefEntry();
+
+ BOOL bWasRef = aViewData.IsRefMode();
+ aViewData.SetRefMode( FALSE, SC_REFTYPE_NONE );
+
+ HideTip();
+
+ // Paint:
+ if ( bWasRef && aViewData.GetTabNo() >= aViewData.GetRefStartZ() &&
+ aViewData.GetTabNo() <= aViewData.GetRefEndZ() )
+ {
+ USHORT nStartX = aViewData.GetRefStartX();
+ USHORT nStartY = aViewData.GetRefStartY();
+ USHORT nEndX = aViewData.GetRefEndX();
+ USHORT nEndY = aViewData.GetRefEndY();
+ if ( nStartX == nEndX && nStartY == nEndY )
+ pDoc->ExtendMerge( nStartX, nStartY, nEndX, nEndY, aViewData.GetTabNo() );
+
+ PaintArea( nStartX,nStartY,nEndX,nEndY, SC_UPDATE_MARKS );
+ }
+}
+
+void ScTabView::UpdateRef( USHORT nCurX, USHORT nCurY, USHORT nCurZ )
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+
+ if (!aViewData.IsRefMode())
+ {
+ // Das kommt vor, wenn bei einem Referenz-Dialog als erstes mit Control in die
+ // die Tabelle geklickt wird. Dann die neue Referenz an den alten Inhalt anhaengen:
+
+ ScModule* pScMod = SC_MOD();
+ if (pScMod->IsFormulaMode())
+ pScMod->AddRefEntry();
+
+ InitRefMode( nCurX, nCurY, nCurZ, SC_REFTYPE_REF );
+ }
+
+ if ( nCurX != aViewData.GetRefEndX() || nCurY != aViewData.GetRefEndY() ||
+ nCurZ != aViewData.GetRefEndZ() )
+ {
+ ScMarkData& rMark = aViewData.GetMarkData();
+ USHORT nTab = aViewData.GetTabNo();
+
+ USHORT nStartX = aViewData.GetRefStartX();
+ USHORT nStartY = aViewData.GetRefStartY();
+ USHORT nEndX = aViewData.GetRefEndX();
+ USHORT nEndY = aViewData.GetRefEndY();
+ if ( nStartX == nEndX && nStartY == nEndY )
+ pDoc->ExtendMerge( nStartX, nStartY, nEndX, nEndY, nTab );
+ ScUpdateRect aRect( nStartX, nStartY, nEndX, nEndY );
+
+ aViewData.SetRefEnd( nCurX, nCurY, nCurZ );
+
+ nStartX = aViewData.GetRefStartX();
+ nStartY = aViewData.GetRefStartY();
+ nEndX = aViewData.GetRefEndX();
+ nEndY = aViewData.GetRefEndY();
+ if ( nStartX == nEndX && nStartY == nEndY )
+ pDoc->ExtendMerge( nStartX, nStartY, nEndX, nEndY, nTab );
+ aRect.SetNew( nStartX, nStartY, nEndX, nEndY );
+
+ ScRefType eType = aViewData.GetRefType();
+ if ( eType == SC_REFTYPE_REF )
+ {
+ ScRange aRef(
+ aViewData.GetRefStartX(), aViewData.GetRefStartY(), aViewData.GetRefStartZ(),
+ aViewData.GetRefEndX(), aViewData.GetRefEndY(), aViewData.GetRefEndZ() );
+ SC_MOD()->SetReference( aRef, pDoc, &rMark );
+ ShowRefTip();
+ }
+ else if ( eType == SC_REFTYPE_EMBED_LT || eType == SC_REFTYPE_EMBED_RB )
+ {
+ PutInOrder(nStartX,nEndX);
+ PutInOrder(nStartY,nEndY);
+ pDoc->SetEmbedded( ScTripel(nStartX,nStartY,nTab), ScTripel(nEndX,nEndY,nTab) );
+ ScDocShell* pDocSh = aViewData.GetDocShell();
+ pDocSh->UpdateOle( &aViewData, TRUE );
+ pDocSh->SetDocumentModified();
+ }
+
+ USHORT nPaintStartX;
+ USHORT nPaintStartY;
+ USHORT nPaintEndX;
+ USHORT nPaintEndY;
+ if (aRect.GetDiff( nPaintStartX, nPaintStartY, nPaintEndX, nPaintEndY ))
+ PaintArea( nPaintStartX, nPaintStartY, nPaintEndX, nPaintEndY, SC_UPDATE_MARKS );
+ }
+
+ // Tip-Hilfe fuer Auto-Fill
+
+ if ( aViewData.GetRefType() == SC_REFTYPE_FILL && Help::IsQuickHelpEnabled() )
+ {
+ String aHelpStr;
+ ScRange aMarkRange;
+ aViewData.GetSimpleArea( aMarkRange );
+ USHORT nEndX = aViewData.GetRefEndX();
+ USHORT nEndY = aViewData.GetRefEndY();
+ ScRange aDelRange;
+ if ( aViewData.GetFillMode() == SC_FILL_MATRIX && !(nScFillModeMouseModifier & KEY_MOD1) )
+ {
+ aHelpStr = ScGlobal::GetRscString( STR_TIP_RESIZEMATRIX );
+ USHORT nCols = nEndX + 1 - aViewData.GetRefStartX(); // Reihenfolge ist richtig
+ USHORT nRows = nEndY + 1 - aViewData.GetRefStartY();
+ aHelpStr.SearchAndReplace( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("%1")),
+ String::CreateFromInt32(nRows) );
+ aHelpStr.SearchAndReplace( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("%2")),
+ String::CreateFromInt32(nCols) );
+ }
+ else if ( aViewData.GetDelMark( aDelRange ) )
+ aHelpStr = ScGlobal::GetRscString( STR_QUICKHELP_DELETE );
+ else if ( nEndX != aMarkRange.aEnd.Col() || nEndY != aMarkRange.aEnd.Row() )
+ aHelpStr = pDoc->GetAutoFillPreview( aMarkRange, nEndX, nEndY );
+
+ // je nach Richtung die obere oder untere Ecke:
+ USHORT nAddX = ( nEndX >= aMarkRange.aEnd.Col() ) ? 1 : 0;
+ USHORT nAddY = ( nEndY >= aMarkRange.aEnd.Row() ) ? 1 : 0;
+ Point aPos = aViewData.GetScrPos( nEndX+nAddX, nEndY+nAddY, aViewData.GetActivePart() );
+ aPos.X() += 8;
+ aPos.Y() += 4;
+ Window* pWin = GetActiveWin();
+ if ( pWin )
+ aPos = pWin->OutputToScreenPixel( aPos );
+ Rectangle aRect( aPos, aPos );
+ USHORT nAlign = QUICKHELP_LEFT|QUICKHELP_TOP;
+ Help::ShowQuickHelp(pWin, aRect, aHelpStr, nAlign);
+ }
+}
+
+void ScTabView::InitRefMode( USHORT nCurX, USHORT nCurY, USHORT nCurZ, ScRefType eType, BOOL bPaint )
+{
+ ScDocument* pDoc = aViewData.GetDocument();
+ ScMarkData& rMark = aViewData.GetMarkData();
+ if (!aViewData.IsRefMode())
+ {
+ aViewData.SetRefMode( TRUE, eType );
+ aViewData.SetRefStart( nCurX, nCurY, nCurZ );
+ aViewData.SetRefEnd( nCurX, nCurY, nCurZ );
+
+ if (nCurZ == aViewData.GetTabNo() && bPaint)
+ {
+ USHORT nStartX = nCurX;
+ USHORT nStartY = nCurY;
+ USHORT nEndX = nCurX;
+ USHORT nEndY = nCurY;
+ pDoc->ExtendMerge( nStartX, nStartY, nEndX, nEndY, aViewData.GetTabNo() );
+
+ //! nur Markierung ueber Inhalte zeichnen!
+ PaintArea( nStartX,nStartY,nEndX,nEndY, SC_UPDATE_MARKS );
+
+ // SetReference ohne Merge-Anpassung
+ ScRange aRef( nCurX,nCurY,nCurZ, nCurX,nCurY,nCurZ );
+ SC_MOD()->SetReference( aRef, pDoc, &rMark );
+ }
+ }
+}
+
+void ScTabView::EndSelection()
+{
+ ScModule* pScMod = SC_MOD();
+ BOOL bRefMode = pScMod->IsFormulaMode();
+ if ( bRefMode )
+ pScMod->EndReference();
+}
+
+// UpdateScrollBars - sichtbaren Bereich und Scrollweite der Scrollbars einstellen
+
+long lcl_UpdateBar( ScrollBar& rScroll, USHORT nSize ) // Size = (komplette) Zellen
+{
+ long nOldPos;
+ long nNewPos;
+
+ nOldPos = rScroll.GetThumbPos();
+ rScroll.SetPageSize( nSize );
+ nNewPos = rScroll.GetThumbPos();
+#ifndef UNX
+ rScroll.SetPageSize( 1 ); // immer moeglich !
+#endif
+
+ return nNewPos - nOldPos;
+}
+
+void lcl_SetScrollRange( ScrollBar& rBar, USHORT nDocEnd, USHORT nPos, USHORT nVis,
+ USHORT nMax, USHORT nStart )
+{
+ ++nVis;
+ ++nMax; // fuer teilweise sichtbare Zellen
+ USHORT nEnd = Max(nDocEnd, (USHORT)(nPos+nVis)) + nVis;
+ if (nEnd > nMax)
+ nEnd = nMax;
+
+ rBar.SetRangeMax( nEnd - nStart ); // RangeMin muss selber verwaltet werden
+}
+
+void ScTabView::UpdateScrollBars()
+{
+ long nDiff;
+ BOOL bTop = ( aViewData.GetVSplitMode() != SC_SPLIT_NONE );
+ BOOL bRight = ( aViewData.GetHSplitMode() != SC_SPLIT_NONE );
+ ScDocument* pDoc = aViewData.GetDocument();
+ USHORT nTab = aViewData.GetTabNo();
+ USHORT nUsedX;
+ USHORT nUsedY;
+ pDoc->GetTableArea( nTab, nUsedX, nUsedY ); //! cachen !!!!!!!!!!!!!!!
+
+ USHORT nVisXL = 0;
+ USHORT nVisXR = 0;
+ USHORT nVisYB = 0;
+ USHORT nVisYT = 0;
+
+ USHORT nStartX = 0;
+ USHORT nStartY = 0;
+ if (aViewData.GetHSplitMode()==SC_SPLIT_FIX)
+ nStartX = aViewData.GetFixPosX();
+ if (aViewData.GetVSplitMode()==SC_SPLIT_FIX)
+ nStartY = aViewData.GetFixPosY();
+
+ nVisXL = aViewData.VisibleCellsX( SC_SPLIT_LEFT );
+ lcl_SetScrollRange( aHScrollLeft, nUsedX, aViewData.GetPosX(SC_SPLIT_LEFT), nVisXL,
+ MAXCOL, 0 );
+ aHScrollLeft.SetVisibleSize( nVisXL );
+ aHScrollLeft.SetThumbPos( aViewData.GetPosX( SC_SPLIT_LEFT ) );
+
+ nVisYB = aViewData.VisibleCellsY( SC_SPLIT_BOTTOM );
+ lcl_SetScrollRange( aVScrollBottom, nUsedY, aViewData.GetPosY(SC_SPLIT_BOTTOM), nVisYB,
+ MAXROW, nStartY );
+ aVScrollBottom.SetVisibleSize( nVisYB );
+ aVScrollBottom.SetThumbPos( aViewData.GetPosY( SC_SPLIT_BOTTOM ) - nStartY );
+
+ if (bRight)
+ {
+ nVisXR = aViewData.VisibleCellsX( SC_SPLIT_RIGHT );
+ lcl_SetScrollRange( aHScrollRight, nUsedX, aViewData.GetPosX(SC_SPLIT_RIGHT), nVisXR,
+ MAXCOL, nStartX );
+ aHScrollRight.SetVisibleSize( nVisXR );
+ aHScrollRight.SetThumbPos( aViewData.GetPosX( SC_SPLIT_RIGHT ) - nStartX );
+ }
+
+ if (bTop)
+ {
+ nVisYT = aViewData.VisibleCellsY( SC_SPLIT_TOP );
+ lcl_SetScrollRange( aVScrollTop, nUsedY, aViewData.GetPosY(SC_SPLIT_TOP), nVisYT,
+ MAXROW, 0 );
+ aVScrollTop.SetVisibleSize( nVisYT );
+ aVScrollTop.SetThumbPos( aViewData.GetPosY( SC_SPLIT_TOP ) );
+ }
+
+ // Bereich testen
+
+ nDiff = lcl_UpdateBar( aHScrollLeft, nVisXL );
+ if (nDiff) ScrollX( nDiff, SC_SPLIT_LEFT );
+ if (bRight)
+ {
+ nDiff = lcl_UpdateBar( aHScrollRight, nVisXR );
+ if (nDiff) ScrollX( nDiff, SC_SPLIT_RIGHT );
+ }
+
+ nDiff = lcl_UpdateBar( aVScrollBottom, nVisYB );
+ if (nDiff) ScrollY( nDiff, SC_SPLIT_BOTTOM );
+ if (bTop)
+ {
+ nDiff = lcl_UpdateBar( aVScrollTop, nVisYT );
+ if (nDiff) ScrollY( nDiff, SC_SPLIT_TOP );
+ }
+
+ // set visible area for online spelling
+
+ if ( aViewData.IsActive() )
+ {
+ ScSplitPos eActive = aViewData.GetActivePart();
+ ScHSplitPos eHWhich = WhichH( eActive );
+ ScVSplitPos eVWhich = WhichV( eActive );
+ USHORT nPosX = aViewData.GetPosX(eHWhich);
+ USHORT nPosY = aViewData.GetPosY(eVWhich);
+ USHORT nEndX = nPosX + ( ( eHWhich == SC_SPLIT_LEFT ) ? nVisXL : nVisXR );
+ USHORT nEndY = nPosY + ( ( eVWhich == SC_SPLIT_TOP ) ? nVisYT : nVisYB );
+ if ( nEndX > MAXCOL ) nEndX = MAXCOL;
+ if ( nEndY > MAXROW ) nEndY = MAXROW;
+ ScRange aVisible( nPosX, nPosY, nTab, nEndX, nEndY, nTab );
+ if ( pDoc->SetVisibleSpellRange( aVisible ) )
+ SC_MOD()->AnythingChanged(); // if visible area has changed
+ }
+}
+
+#ifndef HDR_SLIDERSIZE
+#define HDR_SLIDERSIZE 2
+#endif
+
+void ScTabView::InvertHorizontal( ScVSplitPos eWhich, long nDragPos )
+{
+ for (USHORT i=0; i<4; i++)
+ if (WhichV((ScSplitPos)i)==eWhich)
+ {
+ ScGridWindow* pWin = pGridWin[i];
+ if (pWin)
+ {
+ Rectangle aRect( 0,nDragPos, pWin->GetOutputSizePixel().Width()-1,nDragPos+HDR_SLIDERSIZE-1 );
+ pWin->Update();
+ pWin->DoInvertRect( aRect ); // Pixel
+ }
+ }
+}
+
+void ScTabView::InvertVertical( ScHSplitPos eWhich, long nDragPos )
+{
+ for (USHORT i=0; i<4; i++)
+ if (WhichH((ScSplitPos)i)==eWhich)
+ {
+ ScGridWindow* pWin = pGridWin[i];
+ if (pWin)
+ {
+ Rectangle aRect( nDragPos,0, nDragPos+HDR_SLIDERSIZE-1,pWin->GetOutputSizePixel().Height()-1 );
+ pWin->Update();
+ pWin->DoInvertRect( aRect ); // Pixel
+ }
+ }
+}
+
+//==================================================================
+
+void ScTabView::InterpretVisible()
+{
+ // make sure all visible cells are interpreted,
+ // so the next paint will not execute a macro function
+
+ ScDocument* pDoc = aViewData.GetDocument();
+ if ( !pDoc->GetAutoCalc() )
+ return;
+
+ USHORT nTab = aViewData.GetTabNo();
+ for (USHORT i=0; i<4; i++)
+ {
+ // rely on gridwin pointers to find used panes
+ // no IsVisible test in case the whole view is not yet shown
+
+ if (pGridWin[i])
+ {
+ ScHSplitPos eHWhich = WhichH( ScSplitPos(i) );
+ ScVSplitPos eVWhich = WhichV( ScSplitPos(i) );
+
+ USHORT nX1 = aViewData.GetPosX( eHWhich );
+ USHORT nY1 = aViewData.GetPosY( eVWhich );
+ USHORT nX2 = nX1 + aViewData.VisibleCellsX( eHWhich );
+ USHORT nY2 = nY1 + aViewData.VisibleCellsY( eVWhich );
+
+ if (nX2 > MAXCOL) nX2 = MAXCOL;
+ if (nY2 > MAXROW) nY2 = MAXROW;
+
+ ScCellIterator aIter( pDoc, nX1, nY1, nTab, nX2, nY2, nTab );
+ ScBaseCell* pCell = aIter.GetFirst();
+ while ( pCell )
+ {
+ if ( pCell->GetCellType() == CELLTYPE_FORMULA && ((ScFormulaCell*)pCell)->GetDirty() )
+ ((ScFormulaCell*)pCell)->Interpret();
+
+ pCell = aIter.GetNext();
+ }
+ }
+ }
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/tabview5.cxx b/sc/source/ui/view/tabview5.cxx
new file mode 100644
index 000000000000..6eea7194573d
--- /dev/null
+++ b/sc/source/ui/view/tabview5.cxx
@@ -0,0 +1,891 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabview5.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#ifndef OS2
+#define _MACRODLG_HXX
+#define _BIGINT_HXX
+#define _SVCONTNR_HXX
+#define BASIC_NODIALOGS
+#define _SFXMNUITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _DLGCFG_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXBASIC_HXX
+#define _MODALDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _BASE_DLGS_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXTBXCTRL_HXX
+#define _PASSWD_HXX
+//#define _SFXFILEDLG_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXOBJFACE_HXX
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+
+//SV
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+#define _LSTBOX_HXX //???
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX ***
+#define _SPIN_HXX
+//#define _FIELD_HXX ***
+//#define _MOREBTN_HXX ***
+#define _TOOLBOX_HXX //???
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX ***
+#define _MSGBOX_HXX //???
+#define _SYSDLG_HXX //???
+#define _FILDLG_HXX
+#define _PRNDLG_HXX //???
+#define _COLDLG_HXX
+#define _TABDLG_HXX //???
+#ifdef WIN
+#define _MENU_HXX
+#endif
+//#define _GDIMTF_HXX ***
+//#define _POLY_HXX ***
+#define _ACCEL_HXX //???
+#define _GRAPH_HXX //???
+#define _SOUND_HXX
+
+
+
+#ifdef WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX ***
+#define _VALUESET_HXX //???
+#define _STDMENU_HXX
+#define _STDCTRL_HXX
+#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+#define _SFX_DOCFILT_HXX //???
+#define _SFX_PRNMON_HXX
+#define _SFX_RESMGR_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXAPPWIN_HXX
+#define _SFXBASIC_HXX
+#define _SFXCTRLITEM
+#define _SFXDLGCFG_HXX
+//#define _SFXDISPATCH_HXX ***
+#define _SFXDOCFILE_HXX
+#define _SFXDOCMAN_HXX
+#define _SFXDOCMGR_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXIPFRM_HXX
+#define _SFX_MACRO_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXMULTISEL_HXX
+//#define _SFXMSG_HXX ***
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXOBJFACE_HXX
+//#define _SFXOBJFAC_HXX ???
+#define _SFX_SAVEOPT_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXTBXMGR_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX ***
+//#define _SFX_CLIENTSH_HXX ***
+#define _SFXDOCINF_HXX //???
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//#define _VIEWFAC_HXX ???
+//#define _SFXVIEWFRM_HXX ***
+//#define _SFXVIEWSH_HXX ***
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX ***
+//#define _BASEDLGS_HXX ***
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX ***
+//#define _SFXDOCTDLG_HXX ***
+//#define _SFX_TEMPLDLG_HXX ***
+//#define _SFXNEW_HXX ***
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX ***
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX ***
+//#define _SFXINTITEM_HXX ***
+//#define _SFXENUMITEM_HXX ***
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX ***
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX ***
+//#define _SFXITEMSET_HXX ***
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX ***
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+#define _XOUTX_HXX
+//#define _XPOOL_HXX ***
+#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS ***
+
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SVBOXITM_HXX
+
+#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+#define _SVTABBX_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+//#define _SI_HXX
+#define _SI_DLL_HXX
+#define _SIDLL_HXX
+#define _SI_NOITEMS
+#define _SI_NOOTHERFORMS
+#define _SI_NOSBXCONTROLS
+#define _SINOSBXCONTROLS
+#define _SI_NOCONTROL
+#define _VCBRW_HXX
+#define _VCTRLS_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+#define _VCATTR_HXX
+#define _VCONT_HXX
+
+#define _SDR_NOTRANSFORM
+#define _SDR_NOITEMS
+#define _SDR_NOOBJECTS
+#define _SVDXOUT_HXX
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/fmshell.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdoutl.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/objsh.hxx>
+#include <tools/ref.hxx>
+
+#include "tabview.hxx"
+#include "tabvwsh.hxx"
+#include "document.hxx"
+#include "gridwin.hxx"
+#include "olinewin.hxx"
+#include "tabsplit.hxx"
+#include "colrowba.hxx"
+#include "tabcont.hxx"
+#include "hintwin.hxx"
+#include "sc.hrc"
+#include "pagedata.hxx"
+#include "hiranges.hxx"
+#include "drawview.hxx"
+#include "drwlayer.hxx"
+#include "fusel.hxx" // Start-Function
+
+
+// STATIC DATA -----------------------------------------------------------
+
+
+void __EXPORT ScTabView::Init()
+{
+ USHORT i;
+
+ aScrollTimer.SetTimeout(10);
+ aScrollTimer.SetTimeoutHdl( LINK( this, ScTabView, TimerHdl ) );
+
+ for (i=0; i<4; i++)
+ pGridWin[i] = NULL;
+ pGridWin[SC_SPLIT_BOTTOMLEFT] = new ScGridWindow( pFrameWin, &aViewData, SC_SPLIT_BOTTOMLEFT );
+
+ pSelEngine = new ScViewSelectionEngine( pGridWin[SC_SPLIT_BOTTOMLEFT], this,
+ SC_SPLIT_BOTTOMLEFT );
+ aFunctionSet.SetSelectionEngine( pSelEngine );
+
+ pHdrSelEng = new ScHeaderSelectionEngine( pFrameWin, &aHdrFunc );
+
+ pColBar[SC_SPLIT_LEFT] = new ScColBar( pFrameWin, &aViewData, SC_SPLIT_LEFT,
+ &aHdrFunc, pHdrSelEng );
+ pColBar[SC_SPLIT_RIGHT] = NULL;
+ pRowBar[SC_SPLIT_BOTTOM] = new ScRowBar( pFrameWin, &aViewData, SC_SPLIT_BOTTOM,
+ &aHdrFunc, pHdrSelEng );
+ pRowBar[SC_SPLIT_TOP] = NULL;
+ for (i=0; i<2; i++)
+ pColOutline[i] = pRowOutline[i] = NULL;
+
+ pHSplitter = new ScTabSplitter( pFrameWin, WinBits( WB_HSCROLL ), &aViewData );
+ pVSplitter = new ScTabSplitter( pFrameWin, WinBits( WB_VSCROLL ), &aViewData );
+
+ pTabControl = new ScTabControl( pFrameWin, &aViewData );
+ //MI: nie! das war mal eine MUSS-Aenderung von MBA
+ //if (!aViewData.IsBasicView())
+ // pTabControl->ToTop(); // ueber dem Splitter
+
+ InitScrollBar( aHScrollLeft, MAXCOL+1 );
+ InitScrollBar( aHScrollRight, MAXCOL+1 );
+ InitScrollBar( aVScrollTop, MAXROW+1 );
+ InitScrollBar( aVScrollBottom, MAXROW+1 );
+
+ // Hier noch nichts anzeigen (Show), weil noch falsch angeordnet ist
+ // Show kommt dann aus UpdateShow beim ersten Resize
+ // pTabControl, pGridWin, aHScrollLeft, aVScrollBottom,
+ // aCornerButton, aScrollBarBox, pHSplitter, pVSplitter
+
+ // Splitter
+
+ pHSplitter->SetSplitHdl( LINK( this, ScTabView, SplitHdl ) );
+ pVSplitter->SetSplitHdl( LINK( this, ScTabView, SplitHdl ) );
+
+ // UpdateShow kommt beim Resize, oder bei Kopie einer bestehenden View aus dem ctor
+
+ pDrawActual = NULL;
+ pDrawOld = NULL;
+
+ // DrawView darf nicht im TabView - ctor angelegt werden,
+ // wenn die ViewShell noch nicht konstruiert ist...
+ // Das gilt auch fuer ViewOptionsHasChanged()
+
+ TestHintWindow();
+}
+
+__EXPORT ScTabView::~ScTabView()
+{
+ USHORT i;
+
+ DELETEZ(pPageBreakData);
+ DELETEZ(pHighlightRanges);
+
+ DELETEZ(pDrawOld);
+ DELETEZ(pDrawActual);
+
+ aViewData.KillEditView(); // solange GridWin's noch existieren
+
+ DELETEZ(pInputHintWindow);
+
+ if (pDrawView)
+ {
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ {
+ pDrawView->VCRemoveWin(pGridWin[i]);
+ pDrawView->DelWin(pGridWin[i]);
+ }
+
+ pDrawView->HidePagePvNum(0);
+ delete pDrawView;
+ }
+
+ delete pSelEngine;
+
+ for (i=0; i<4; i++)
+ delete pGridWin[i];
+
+ delete pHdrSelEng;
+
+ for (i=0; i<2; i++)
+ {
+ delete pColBar[i];
+ delete pRowBar[i];
+ delete pColOutline[i];
+ delete pRowOutline[i];
+ }
+
+ delete pHSplitter;
+ delete pVSplitter;
+
+ delete pTabControl;
+}
+
+void ScTabView::MakeDrawView()
+{
+ if (!pDrawView)
+ {
+ ScDrawLayer* pLayer = aViewData.GetDocument()->GetDrawLayer();
+ DBG_ASSERT(pLayer, "wo ist der DrawLayer ??");
+
+ USHORT i;
+ pDrawView = new ScDrawView( pGridWin[SC_SPLIT_BOTTOMLEFT], &aViewData );
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ {
+ if ( SC_SPLIT_BOTTOMLEFT != (ScSplitPos)i )
+ pDrawView->AddWin(pGridWin[i]);
+ pDrawView->VCAddWin(pGridWin[i]);
+ }
+ pDrawView->RecalcScale();
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ {
+ pGridWin[i]->SetMapMode(pGridWin[i]->GetDrawMapMode());
+
+ pGridWin[i]->Update(); // wegen Invalidate im DrawView ctor (ShowPage),
+ // damit gleich gezeichnet werden kann
+ }
+ SfxRequest aSfxRequest(SID_OBJECT_SELECT, 0,aViewData.GetViewShell()->GetPool());
+ SetDrawFuncPtr(new FuSelection( aViewData.GetViewShell(), GetActiveWin(), pDrawView,
+ pLayer,aSfxRequest));
+
+ // an der FormShell anmelden
+ FmFormShell* pFormSh = aViewData.GetViewShell()->GetFormShell();
+ if (pFormSh)
+ pFormSh->SetView(pDrawView);
+ }
+}
+
+void ScTabView::DoAddWin( ScGridWindow* pWin )
+{
+ if (pDrawView)
+ {
+ pDrawView->AddWin(pWin);
+ pDrawView->VCAddWin(pWin);
+ }
+}
+
+//==================================================================
+
+void ScTabView::TabChanged()
+{
+ if (pDrawView)
+ {
+ DrawDeselectAll(); // beendet auch Text-Edit-Modus
+
+ USHORT i;
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ pDrawView->VCRemoveWin(pGridWin[i]); // fuer alte Page
+
+ USHORT nTab = aViewData.GetTabNo();
+ pDrawView->HideAllPages();
+ pDrawView->ShowPagePgNum( nTab, Point() );
+
+ UpdateLayerLocks();
+
+ pDrawView->RecalcScale();
+ pDrawView->UpdateWorkArea(); // #54782# PageSize ist pro Page unterschiedlich
+
+ for (i=0; i<4; i++)
+ if (pGridWin[i])
+ pDrawView->VCAddWin(pGridWin[i]); // fuer neue Page
+ }
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ // Es gibt keine einfache Moeglichkeit, alle Slots der FormShell zu invalidieren
+ // (fuer disablete Slots auf geschuetzten Tabellen), darum hier einfach alles...
+ rBindings.InvalidateAll(FALSE);
+
+#if 0
+ rBindings.Invalidate( SID_SELECT_SCENARIO );
+ rBindings.Invalidate( FID_PROTECT_TABLE );
+ rBindings.Invalidate( FID_DELETE_TABLE );
+ rBindings.Invalidate( FID_TABLE_SHOW );
+ rBindings.Invalidate( FID_TABLE_HIDE );
+
+ // Auswirkungen von geschuetzten Tabellen.
+ rBindings.Invalidate( FID_TAB_RENAME );
+ rBindings.Invalidate( FID_TAB_MOVE );
+ rBindings.Invalidate( SID_DEL_ROWS );
+ rBindings.Invalidate( SID_DEL_COLS );
+ rBindings.Invalidate( FID_INS_ROW );
+ rBindings.Invalidate( FID_INS_COLUMN );
+ rBindings.Invalidate( FID_INS_CELL );
+ rBindings.Invalidate( FID_INS_CELLSDOWN );
+ rBindings.Invalidate( FID_INS_CELLSRIGHT );
+ rBindings.Invalidate( FID_DELETE_CELL );
+
+ rBindings.Invalidate( SID_OPENDLG_CHART );
+ rBindings.Invalidate( SID_INSERT_OBJECT );
+ rBindings.Invalidate( SID_INSERT_DIAGRAM );
+ rBindings.Invalidate( SID_INSERT_SIMAGE );
+ rBindings.Invalidate( SID_INSERT_SMATH );
+ rBindings.Invalidate( SID_INSERT_GRAPHIC );
+#endif
+}
+
+void ScTabView::UpdateLayerLocks()
+{
+ if (pDrawView)
+ {
+ USHORT nTab = aViewData.GetTabNo();
+ BOOL bEx = aViewData.GetViewShell()->IsDrawSelMode();
+ BOOL bProt = aViewData.GetDocument()->IsTabProtected( nTab ) ||
+ aViewData.GetSfxDocShell()->IsReadOnly();
+
+ SdrLayer* pLayer;
+ SdrLayerAdmin& rAdmin = pDrawView->GetModel()->GetLayerAdmin();
+ pLayer = rAdmin.GetLayerPerID(SC_LAYER_BACK);
+ if (pLayer)
+ pDrawView->SetLayerLocked( pLayer->GetName(), bProt || !bEx );
+ pLayer = rAdmin.GetLayerPerID(SC_LAYER_INTERN);
+ if (pLayer)
+ pDrawView->SetLayerLocked( pLayer->GetName(), TRUE );
+ pLayer = rAdmin.GetLayerPerID(SC_LAYER_FRONT);
+ if (pLayer)
+ pDrawView->SetLayerLocked( pLayer->GetName(), bProt );
+ pLayer = rAdmin.GetLayerPerID(SC_LAYER_CONTROLS);
+ if (pLayer)
+ pDrawView->SetLayerLocked( pLayer->GetName(), bProt );
+ }
+}
+
+void ScTabView::DrawDeselectAll()
+{
+ if (pDrawView)
+ {
+ ScTabViewShell* pViewSh = aViewData.GetViewShell();
+ if ( pDrawActual &&
+ ( pViewSh->IsDrawTextShell() || pDrawActual->GetSlotID() == SID_DRAW_NOTEEDIT ) )
+ {
+ // end text edit (as if escape pressed, in FuDraw)
+ SFX_DISPATCHER().Execute( pDrawActual->GetSlotID(),
+ SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD );
+ }
+
+ pDrawView->ScEndTextEdit();
+ pDrawView->UnmarkAll();
+
+ if (!pViewSh->IsDrawSelMode())
+ pViewSh->SetDrawShell( FALSE );
+ }
+}
+
+BOOL ScTabView::IsDrawTextEdit() const
+{
+ if (pDrawView)
+ return pDrawView->IsTextEdit();
+ else
+ return FALSE;
+}
+
+String ScTabView::GetSelectedChartName() const
+{
+ if (pDrawView)
+ return pDrawView->GetSelectedChartName();
+ else
+ return EMPTY_STRING;
+}
+
+void ScTabView::SetZoom( const Fraction& rNewX, const Fraction& rNewY )
+{
+ aViewData.SetZoom(rNewX,rNewY);
+ if (pDrawView)
+ pDrawView->RecalcScale();
+ ZoomChanged(); // einzeln wegen CLOOKs
+}
+
+void ScTabView::SetPagebreakMode( BOOL bSet )
+{
+ aViewData.SetPagebreakMode(bSet);
+ if (pDrawView)
+ pDrawView->RecalcScale();
+ ZoomChanged(); // einzeln wegen CLOOKs
+}
+
+void ScTabView::ResetDrawDragMode()
+{
+ if (pDrawView)
+ pDrawView->SetDragMode( SDRDRAG_MOVE );
+}
+
+void ScTabView::ViewOptionsHasChanged( BOOL bHScrollChanged, BOOL bGraphicsChanged )
+{
+ // DrawView erzeugen, wenn Gitter angezeigt werden soll
+ if ( !pDrawView && aViewData.GetOptions().GetGridOptions().GetGridVisible() )
+ MakeDrawLayer();
+
+ if (pDrawView)
+ pDrawView->UpdateUserViewOptions();
+
+ if (bGraphicsChanged)
+ DrawEnableAnim(TRUE); // DrawEnableAnim checks the options state
+
+ // if TabBar is set to visible, make sure its size is not 0
+ BOOL bGrow = ( aViewData.IsTabMode() && pTabControl->GetSizePixel().Width() <= 0 );
+
+ // if ScrollBar is set to visible, TabBar must make room
+ BOOL bShrink = ( bHScrollChanged && aViewData.IsTabMode() && aViewData.IsHScrollMode() &&
+ pTabControl->GetSizePixel().Width() > SC_TABBAR_DEFWIDTH );
+
+ if ( bGrow || bShrink )
+ {
+ Size aSize = pTabControl->GetSizePixel();
+ aSize.Width() = SC_TABBAR_DEFWIDTH; // initial size
+ pTabControl->SetSizePixel(aSize); // DoResize is called later...
+ }
+}
+
+// Helper-Funktion gegen das Include des Drawing Layers
+
+SdrView* ScTabView::GetSdrView()
+{
+ return pDrawView;
+}
+
+void ScTabView::DrawMarkListHasChanged()
+{
+ if ( pDrawView )
+ pDrawView->MarkListHasChanged();
+}
+
+void ScTabView::UpdateAnchorHandles()
+{
+ if ( pDrawView )
+ pDrawView->AdjustMarkHdl();
+}
+
+void ScTabView::UpdateIMap( SdrObject* pObj )
+{
+ if ( pDrawView )
+ pDrawView->UpdateIMap( pObj );
+}
+
+void ScTabView::DrawMarkRect( const Rectangle& rRect )
+{
+ //! store rectangle for repaint during drag
+
+ for (USHORT i=0; i<4; i++)
+ {
+ if ( pGridWin[i] && pGridWin[i]->IsVisible() )
+ {
+ RasterOp aROp = pGridWin[i]->GetRasterOp();
+ BOOL bHasLine = pGridWin[i]->IsLineColor();
+ Color aLine = pGridWin[i]->GetLineColor();
+ BOOL bHasFill = pGridWin[i]->IsFillColor();
+ Color aFill = pGridWin[i]->GetFillColor();
+
+ pGridWin[i]->SetRasterOp( ROP_INVERT );
+ pGridWin[i]->SetLineColor( COL_BLACK );
+ pGridWin[i]->SetFillColor();
+
+ pGridWin[i]->DrawRect(rRect);
+
+ pGridWin[i]->SetRasterOp(aROp);
+ if (bHasLine)
+ pGridWin[i]->SetLineColor(aLine);
+ else
+ pGridWin[i]->SetLineColor();
+ if (bHasFill)
+ pGridWin[i]->SetFillColor(aFill);
+ else
+ pGridWin[i]->SetFillColor();
+ }
+ }
+}
+
+void ScTabView::DrawEnableAnim(BOOL bSet)
+{
+ USHORT i;
+ if ( pDrawView )
+ {
+ // #71040# dont start animations if display of graphics is disabled
+ // graphics are controlled by VOBJ_TYPE_OLE
+ if ( bSet && aViewData.GetOptions().GetObjMode(VOBJ_TYPE_OLE) == VOBJ_MODE_SHOW )
+ {
+ if ( !pDrawView->IsAnimationEnabled() )
+ {
+ pDrawView->SetAnimationEnabled(TRUE);
+
+ // Animierte GIFs muessen wieder gestartet werden:
+ ScDocument* pDoc = aViewData.GetDocument();
+ for (i=0; i<4; i++)
+ if ( pGridWin[i] && pGridWin[i]->IsVisible() )
+ pDoc->StartAnimations( aViewData.GetTabNo(), pGridWin[i] );
+ }
+ }
+ else
+ {
+ pDrawView->SetAnimationEnabled(FALSE);
+ // StopAnimations am Dokument ist nicht mehr noetig
+ }
+ }
+}
+
+void ScTabView::DrawShowMarkHdl(BOOL bShow)
+{
+ if (!pDrawView)
+ return;
+
+ if (bShow)
+ {
+ if (!pDrawView->IsDisableHdl())
+ pDrawView->ShowMarkHdl(NULL);
+ }
+ else
+ pDrawView->HideMarkHdl(NULL);
+}
+
+void ScTabView::UpdateDrawTextOutliner()
+{
+ if ( pDrawView )
+ {
+ Outliner* pOL = pDrawView->GetTextEditOutliner();
+ if (pOL)
+ aViewData.UpdateOutlinerFlags( *pOL );
+ }
+}
+
+//---------------------------------------------------------------
+
+void ScTabView::ScrollToObject( SdrObject* pDrawObj )
+{
+ if ( pDrawObj )
+ MakeVisible( pDrawObj->GetLogicRect() );
+}
+
+void ScTabView::MakeVisible( const Rectangle& rHMMRect )
+{
+ Window* pWin = GetActiveWin();
+ Size aWinSize = pWin->GetOutputSizePixel();
+ USHORT nTab = aViewData.GetTabNo();
+
+ Rectangle aRect = pWin->LogicToPixel( rHMMRect );
+
+ long nScrollX=0, nScrollY=0; // Pixel
+
+ if ( aRect.Right() >= aWinSize.Width() ) // rechts raus
+ {
+ nScrollX = aRect.Right() - aWinSize.Width() + 1; // rechter Rand sichtbar
+ if ( aRect.Left() < nScrollX )
+ nScrollX = aRect.Left(); // links sichtbar (falls zu gross)
+ }
+ if ( aRect.Bottom() >= aWinSize.Height() ) // unten raus
+ {
+ nScrollY = aRect.Bottom() - aWinSize.Height() + 1; // unterer Rand sichtbar
+ if ( aRect.Top() < nScrollY )
+ nScrollY = aRect.Top(); // oben sichtbar (falls zu gross)
+ }
+
+ if ( aRect.Left() < 0 ) // links raus
+ nScrollX = aRect.Left(); // linker Rand sichtbar
+ if ( aRect.Top() < 0 ) // oben raus
+ nScrollY = aRect.Top(); // oberer Rand sichtbar
+
+ if (nScrollX || nScrollY)
+ {
+ ScDocument* pDoc = aViewData.GetDocument();
+ double nPPTX = aViewData.GetPPTX();
+ double nPPTY = aViewData.GetPPTY();
+ ScSplitPos eWhich = aViewData.GetActivePart();
+ USHORT nPosX = aViewData.GetPosX(WhichH(eWhich));
+ USHORT nPosY = aViewData.GetPosY(WhichV(eWhich));
+
+ long nLinesX=0, nLinesY=0; // Spalten/Zeilen - um mindestens nScrollX/Y scrollen
+
+ if (nScrollX > 0)
+ while (nScrollX > 0 && nPosX < MAXCOL)
+ {
+ nScrollX -= (long) ( pDoc->GetColWidth(nPosX, nTab) * nPPTX );
+ ++nPosX;
+ ++nLinesX;
+ }
+ else if (nScrollX < 0)
+ while (nScrollX < 0 && nPosX > 0)
+ {
+ --nPosX;
+ nScrollX += (long) ( pDoc->GetColWidth(nPosX, nTab) * nPPTX );
+ --nLinesX;
+ }
+
+ if (nScrollY > 0)
+ while (nScrollY > 0 && nPosY < MAXROW)
+ {
+ nScrollY -= (long) ( pDoc->FastGetRowHeight(nPosY, nTab) * nPPTY );
+ ++nPosY;
+ ++nLinesY;
+ }
+ else if (nScrollY < 0)
+ while (nScrollY < 0 && nPosY > 0)
+ {
+ --nPosY;
+ nScrollY += (long) ( pDoc->FastGetRowHeight(nPosY, nTab) * nPPTY );
+ --nLinesY;
+ }
+
+ ScrollLines( nLinesX, nLinesY ); // ausfuehren
+ }
+}
+
+
+
diff --git a/sc/source/ui/view/tabvwsh.cxx b/sc/source/ui/view/tabvwsh.cxx
new file mode 100644
index 000000000000..2f0f266ddb64
--- /dev/null
+++ b/sc/source/ui/view/tabvwsh.cxx
@@ -0,0 +1,326 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwsh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#if !defined OS2 && !defined WNT
+//#define _BUTTON_HXX
+#endif
+
+#define _SETBRW_HXX
+#define _STACK_HXX
+//#define _STATUS_HXX
+#define _STDMENU_HXX
+#define _TABBAR_HXX
+#define _VCBRW_HXX
+#define _VCTRLS_HXX
+#define _VCSBX_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+
+#define _BASE_DLGS_HXX
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _CTRLTOOL_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+#define _FILDLG_HXX
+#define _FONTDLG_HXX
+#define _FRM3D_HXX
+#define _INTRO_HXX
+#define _ISETBWR_HXX
+#define _NO_SVRTF_PARSER_HXX
+#define _MACRODLG_HXX
+#define _MODALDLG_HXX
+#define _MOREBUTTON_HXX
+#define _OUTLINER_HXX
+#define _PASSWD_HXX
+//#define _PRNDLG_HXX
+//#define _POLY_HXX
+#define _PVRWIN_HXX
+#define _QUEUE_HXX
+#define _RULER_HXX
+#define _SCRWIN_HXX
+#define _STACK_HXX
+#define _SETBRW_HXX
+#define _STACK_HXX
+//#define _STATUS_HXX
+#define _STDMENU_HXX
+#define _TABBAR_HXX
+#define _VCBRW_HXX
+#define _VCTRLS_HXX
+#define _VCSBX_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+
+#define _SVDXOUT_HXX
+#define _SVDATTR_HXX
+#define _SVDETC_HXX
+#define _SVDIO_HXX
+#define _SVDRAG_HXX
+#define _SVDLAYER_HXX
+
+//#define _SFX_BINDINGS_HXX
+#define _SFXFILEDLG_HXX
+#define _SFX_MACRO_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXMULTISEL_HXX
+#define _SFXBASIC_HXX
+#define _SFXSTBMGR_HXX
+//#define _SFXTBXCTRL_HXX
+//#define _SFXTBXMGR_HXX
+//#define _SFXIMGMGR_HXX
+
+#define _SI_DLL_HXX
+#define _SIDLL_HXX
+#define _SI_NOITEMS
+#define _SI_NOOTHERFORMS
+#define _SI_NOSBXCONTROLS
+#define _SINOSBXCONTROLS
+#define _SI_NODRW
+#define _SI_NOCONTROL
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#define GLOBALOVERFLOW
+#include <segmentc.hxx>
+
+#include "scitems.hxx"
+#include <basctl/idetemp.hxx>
+#include <svx/imapdlg.hxx>
+#include <svx/srchitem.hxx>
+#include <offmgr/sbasltid.hrc>
+#include <sfx2/templdlg.hxx>
+
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "reffact.hxx"
+#include "scresid.hxx"
+#include "dwfunctr.hxx"
+#include "sc.hrc" // -> SID_TOOL_xxx
+#include "drawattr.hxx" // -> SvxDrawToolItem
+
+
+#define ScTabViewShell
+#include "scslots.hxx"
+
+#define SearchSettings
+#include <svx/svxslots.hxx>
+
+SEG_EOFGLOBALS()
+
+#pragma SEG_SEGCLASS(SFXMACROS_SEG,STARTWORK_CODE)
+
+TYPEINIT2(ScTabViewShell,SfxViewShell,SfxListener);
+
+SFX_IMPL_INTERFACE(ScTabViewShell,SfxViewShell,ScResId(SCSTR_TABVIEWSHELL))
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_TOOLS | SFX_VISIBILITY_STANDARD |
+ SFX_VISIBILITY_FULLSCREEN | SFX_VISIBILITY_SERVER,
+ ScResId(RID_OBJECTBAR_TOOLS) );
+
+ SFX_CHILDWINDOW_REGISTRATION(FID_INPUTLINE_STATUS);
+ SFX_CHILDWINDOW_REGISTRATION(SfxTemplateDialogWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_CONTEXT_REGISTRATION(SID_NAVIGATOR);
+ SFX_CHILDWINDOW_REGISTRATION(ScNameDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScSolverDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScPivotLayoutWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScTabOpDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScFilterDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScSpecialFilterDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScDbNameDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScConsolidateDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScChartDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScPrintAreasDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScCondFormatDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScColRowNameRangesDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScFormulaDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(SvxIMapDlgChildWindow::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScFunctionChildWindow::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScFormulaDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScAcceptChgDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScHighlightChgDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(ScSimpleRefDlgWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(SID_SEARCH_DLG);
+ SFX_CHILDWINDOW_REGISTRATION(SID_HYPERLINK_DIALOG);
+}
+
+SFX_IMPL_VIEWFACTORY( ScTabViewShell, ScResId(STR_NONAME) )
+{
+ SFX_VIEW_REGISTRATION(ScDocShell);
+}
+
+//------------------------------------------------------------------
+
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.305 2000/09/17 14:09:35 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.304 2000/09/04 13:31:53 tbe
+ basicide, isetbrw, si, vcdlged moved from svx to basctl
+
+ Revision 1.303 2000/08/31 16:38:48 willem.vandorp
+ Header and footer replaced
+
+ Revision 1.302 2000/05/09 18:30:15 nn
+ use IMPL_INTERFACE macro without IDL
+
+ Revision 1.301 2000/05/09 17:37:21 nn
+ old Basic removed
+
+ Revision 1.300 2000/04/14 08:31:38 nn
+ unicode changes
+
+ Revision 1.299 2000/02/09 09:57:30 nn
+ #72165# child window registration for hyperlink dialog
+
+ Revision 1.298 1999/06/07 15:30:30 ANK
+ #66547# Searchsettings aktiviert
+
+
+ Rev 1.297 07 Jun 1999 17:30:30 ANK
+ #66547# Searchsettings aktiviert
+
+ Rev 1.296 02 Jun 1999 21:42:26 ANK
+ #66547# SubShells
+
+ Rev 1.295 09 Apr 1998 21:58:40 ANK
+ Redlining Erweiterungen
+
+ Rev 1.294 13 Mar 1998 12:58:24 ANK
+ Changes
+
+ Rev 1.293 08 Mar 1998 20:38:28 ANK
+ Redlining
+
+ Rev 1.292 05 Dec 1997 19:22:38 NN
+ Includes
+
+ Rev 1.291 20 Nov 1997 20:30:56 NN
+ includes angepasst
+
+ Rev 1.290 14 Oct 1997 19:58:56 ANK
+ Neue Funktionsbox
+
+ Rev 1.289 23 May 1997 20:32:30 NN
+ ScFormulaDlgWrapper registrieren
+
+ Rev 1.288 08 Apr 1997 17:34:42 HJS
+ includes, defines
+
+ Rev 1.287 18 Nov 1996 19:11:58 ER
+ new: ScColRowNameRangesDlg
+
+ Rev 1.286 14 Nov 1996 22:00:44 NN
+ CHILDWINDOW_CONTEXT_REGISTRATION fuer Navigator
+
+ Rev 1.285 29 Oct 1996 13:36:20 NN
+ ueberall ScResId statt ResId
+
+ Rev 1.284 16 Oct 1996 16:24:52 RJ
+ Einbindung des Dialogs fuer bedingte Formatierung
+
+ Rev 1.283 09 Aug 1996 20:35:02 NN
+ Svx-Includes aus scitems.hxx raus
+
+ Rev 1.282 10 Jul 1996 14:21:18 KA
+ gallery entfernt, da jetzt im Explorer
+
+ Rev 1.281 05 Jul 1996 17:25:26 NN
+ SearchSettings aus svxslots, bei GetSbxObject anlegen
+
+ Rev 1.280 20 Jun 1996 19:04:08 NN
+ Werkzeugleiste registrieren
+
+------------------------------------------------------------------------*/
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/view/tabvwsh2.cxx b/sc/source/ui/view/tabvwsh2.cxx
new file mode 100644
index 000000000000..300ca094398f
--- /dev/null
+++ b/sc/source/ui/view/tabvwsh2.cxx
@@ -0,0 +1,634 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwsh2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+
+//SV
+//#define _CLIP_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+
+#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+#define _SVTABBX_HXX
+
+//#define _BASE_DLGS_HXX
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _CTRLTOOL_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+#define _FILDLG_HXX
+#define _FONTDLG_HXX
+#define _FRM3D_HXX
+#define _INTRO_HXX
+#define _ISETBWR_HXX
+#define _NO_SVRTF_PARSER_HXX
+#define _MACRODLG_HXX
+#define _MODALDLG_HXX
+#define _MOREBUTTON_HXX
+#define _OUTLINER_HXX
+#define _PASSWD_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+#define _TABBAR_HXX
+#define _VALUESET_HXX
+#define _STDMENU_HXX
+#define _STDCTRL_HXX
+#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+// SFX
+//#define _BASEDLGS_HXX
+#define _DLGCFG_HXX
+#define _SFXBASIC_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXMSG_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXSTBITEM_HXX
+//#define _SFXTBXCTRL_HXX
+#define _PASSWD_HXX
+#define _SFXFILEDLG_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXOBJFACE_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSG_HXX
+#define _INTRO_HXX
+#define _SFX_PRNMON_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXCTRLITEM_HXX
+//#define _SFX_BINDINGS_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFX_MACRO_HXX
+#define _SFX_CHOR
+#define _SFXEVENT_HXX
+#define _SFX_MINFITEM_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+#define _SFXDOCFILE_HXX
+//#define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+#define _MDIFRM_HXX
+//#define _SFX_IPFRM_HXX //*
+//#define _SFX_INTERNO_HXX
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+//#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+//#define _VCSBX_HXX
+#define _SIDLL_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+// soui.hxx
+#define _IPWIN_HXX
+#define _IPMENU_HXX
+#define _PASTEDLG_HXX
+
+// basicsh.hxx
+#define _BASIDESH_HXX
+#define _TBXCTL_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX ***
+#define _XOUTX_HXX //*
+//#define _XPOOL_HXX ***
+#define _XTABLE_HXX //*
+
+
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+#define _SDR_NOXOUTDEV
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+
+#define _SDR_NOITEMS
+#define _SVDXOUT_HXX
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+#define _SDR_NOEXTDEV // ExtOutputDevice
+//#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+//#define _SDR_NOTEXTOBJ // SdrTextObj
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+#define _SDR_NOOLE2OBJ // SdrOle2Obj
+
+// INCLUDE ---------------------------------------------------------------
+
+#ifdef WNT
+#pragma optimize ("", off)
+#endif
+
+#include <basctl/idetemp.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/ipfrm.hxx>
+#include <svtools/aeitem.hxx>
+#include <svtools/whiter.hxx>
+#include <sfx2/dispatch.hxx>
+
+#include "tabvwsh.hxx"
+#include "drawattr.hxx"
+#include "drawsh.hxx"
+#include "drawview.hxx"
+#include "fupoor.hxx"
+#include "fuconrec.hxx"
+#include "fuconpol.hxx"
+#include "fuconarc.hxx"
+#include "fuconctl.hxx"
+#include "fuconuno.hxx"
+#include "fusel.hxx"
+#include "futext.hxx"
+#include "fumark.hxx"
+#include "global.hxx"
+#include "sc.hrc"
+#include "scmod.hxx"
+
+
+// -----------------------------------------------------------------------
+
+SdrView* __EXPORT ScTabViewShell::GetDrawView() const
+{
+ return ((ScTabViewShell*)this)->GetScDrawView(); // GetScDrawView ist nicht-const
+}
+
+void ScTabViewShell::WindowChanged()
+{
+ Window* pWin = GetActiveWin();
+
+ ScDrawView* pDrView = GetScDrawView();
+ if (pDrView)
+ pDrView->SetActualWin(pWin);
+
+ FuPoor* pFunc = GetDrawFuncPtr();
+ if (pFunc)
+ pFunc->SetWindow(pWin);
+}
+
+void ScTabViewShell::ExecDraw(SfxRequest& rReq)
+{
+ SC_MOD()->InputEnterHandler();
+ UpdateInputHandler();
+
+ MakeDrawLayer();
+
+ ScTabView* pTabView = GetViewData()->GetView();
+ USHORT nTab = GetViewData()->GetTabNo();
+ SfxBindings& rBindings = SFX_BINDINGS();
+
+ Window* pWin = pTabView->GetActiveWin();
+ SdrView* pView = pTabView->GetSdrView();
+ SdrModel* pDoc = pView->GetModel();
+
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ USHORT nNewId = rReq.GetSlot();
+
+ //
+ // Pseudo-Slots von Draw-Toolbox auswerten
+ //! wird das ueberhaupt noch gebraucht ?????
+ //
+
+ if (nNewId == SID_INSERT_DRAW && pArgs)
+ {
+ const SfxPoolItem* pItem;
+ if ( pArgs->GetItemState( SID_INSERT_DRAW, TRUE, &pItem ) == SFX_ITEM_SET &&
+ pItem->ISA( SvxDrawToolItem ) )
+ {
+ SvxDrawToolEnum eSel = (SvxDrawToolEnum)((const SvxDrawToolItem*)pItem)->GetValue();
+ switch (eSel)
+ {
+ case SVX_SNAP_DRAW_SELECT: nNewId = SID_OBJECT_SELECT; break;
+ case SVX_SNAP_DRAW_LINE: nNewId = SID_DRAW_LINE; break;
+ case SVX_SNAP_DRAW_RECT: nNewId = SID_DRAW_RECT; break;
+ case SVX_SNAP_DRAW_ELLIPSE: nNewId = SID_DRAW_ELLIPSE; break;
+ case SVX_SNAP_DRAW_POLYGON_NOFILL: nNewId = SID_DRAW_POLYGON_NOFILL; break;
+ case SVX_SNAP_DRAW_BEZIER_NOFILL: nNewId = SID_DRAW_BEZIER_NOFILL; break;
+ case SVX_SNAP_DRAW_FREELINE_NOFILL: nNewId = SID_DRAW_FREELINE_NOFILL; break;
+ case SVX_SNAP_DRAW_ARC: nNewId = SID_DRAW_ARC; break;
+ case SVX_SNAP_DRAW_PIE: nNewId = SID_DRAW_PIE; break;
+ case SVX_SNAP_DRAW_CIRCLECUT: nNewId = SID_DRAW_CIRCLECUT; break;
+ case SVX_SNAP_DRAW_TEXT: nNewId = SID_DRAW_TEXT; break;
+ case SVX_SNAP_DRAW_TEXT_MARQUEE: nNewId = SID_DRAW_TEXT_MARQUEE; break;
+ case SVX_SNAP_DRAW_CAPTION: nNewId = SID_DRAW_CAPTION; break;
+ }
+ }
+ else // USHORT-Item vom Controller
+ {
+ rReq.Done();
+ return;
+ }
+ }
+
+ //
+ // Pseudo-Slots von Control-Toolbox auswerten
+ //
+
+ if (nNewId == SID_CHOOSE_CONTROLS && pArgs)
+ {
+ const SvxChooseControlItem* pItem = (const SvxChooseControlItem*)&pArgs->Get( SID_CHOOSE_CONTROLS );
+ SvxChooseControlEnum eSel = (SvxChooseControlEnum) pItem->GetValue();
+
+ nCtrlSfxId = ((USHORT)eSel==nCtrlSfxId) ? USHRT_MAX : (USHORT) eSel;
+
+ if( (eSel == SVX_SNAP_PREVIEW)) // || (eSel==SVX_SNAP_URLBUTTON))
+ {
+ rReq.Done();
+ return;
+ }
+ switch (eSel)
+ {
+ case SVX_SNAP_PUSHBUTTON: nNewId = SID_INSERT_PUSHBUTTON; break;
+ case SVX_SNAP_CHECKBOX: nNewId = SID_INSERT_CHECKBOX; break;
+ case SVX_SNAP_RADIOBUTTON: nNewId = SID_INSERT_RADIOBUTTON;break;
+ case SVX_SNAP_SPINBUTTON: nNewId = SID_INSERT_SPINBUTTON; break;
+ case SVX_SNAP_FIXEDTEXT: nNewId = SID_INSERT_FIXEDTEXT; break;
+ case SVX_SNAP_GROUPBOX: nNewId = SID_INSERT_GROUPBOX; break;
+ case SVX_SNAP_LISTBOX: nNewId = SID_INSERT_LISTBOX; break;
+ case SVX_SNAP_COMBOBOX: nNewId = SID_INSERT_COMBOBOX; break;
+ case SVX_SNAP_EDIT: nNewId = SID_INSERT_EDIT; break;
+ case SVX_SNAP_HSCROLLBAR: nNewId = SID_INSERT_HSCROLLBAR; break;
+ case SVX_SNAP_VSCROLLBAR: nNewId = SID_INSERT_VSCROLLBAR; break;
+ case SVX_SNAP_URLBUTTON: nNewId = SID_INSERT_URLBUTTON; break;
+ case SVX_SNAP_SELECT: nNewId = SID_OBJECT_SELECT; break;
+ }
+ }
+
+ if ( nNewId == SID_DRAW_SELECT )
+ nNewId = SID_OBJECT_SELECT;
+
+ USHORT nNewFormId = 0;
+ if ( nNewId == SID_FM_CREATE_CONTROL && pArgs )
+ {
+ const SfxPoolItem* pItem;
+ if ( pArgs->GetItemState( SID_FM_CONTROL_IDENTIFIER, TRUE, &pItem ) == SFX_ITEM_SET &&
+ pItem->ISA( SfxUInt16Item ) )
+ nNewFormId = ((const SfxUInt16Item*)pItem)->GetValue();
+ }
+
+ if (nNewId == SID_INSERT_FRAME) // vom Tbx-Button
+ nNewId = SID_DRAW_TEXT;
+
+ BOOL bEx = IsDrawSelMode();
+ if ( nNewId == nDrawSfxId && ( nNewId != SID_FM_CREATE_CONTROL ||
+ nNewFormId == nFormSfxId || nNewFormId == 0 ) )
+ {
+ // SID_FM_CREATE_CONTROL mit nNewFormId==0 (ohne Parameter) kommt beim Deaktivieren
+ // aus FuConstruct::SimpleMouseButtonUp
+ // #59280# Execute fuer die Form-Shell, um im Controller zu deselektieren
+ if ( nNewId == SID_FM_CREATE_CONTROL )
+ {
+ SFX_DISPATCHER().Execute(SID_FM_LEAVE_CREATE);
+ SFX_BINDINGS().InvalidateAll(FALSE);
+ //! was fuer einen Slot braucht der komische Controller wirklich, um das anzuzeigen????
+ }
+
+ bEx = !bEx;
+ nNewId = SID_OBJECT_SELECT;
+ }
+ else
+ bEx = TRUE;
+
+ if ( nDrawSfxId == SID_FM_CREATE_CONTROL && nNewId != nDrawSfxId )
+ {
+ // Wechsel von Control- zu Zeichenfunktion -> im Control-Controller deselektieren
+ SFX_DISPATCHER().Execute(SID_FM_LEAVE_CREATE);
+ SFX_BINDINGS().InvalidateAll(FALSE);
+ //! was fuer einen Slot braucht der komische Controller wirklich, um das anzuzeigen????
+ }
+
+ SetDrawSelMode(bEx);
+
+ SdrLayer* pLayer = pView->GetModel()->GetLayerAdmin().GetLayerPerID(SC_LAYER_BACK);
+ if (pLayer)
+ pView->SetLayerLocked( pLayer->GetName(), !bEx );
+
+ nDrawSfxId = nNewId;
+
+ if ( nNewId != SID_DRAW_CHART ) // Chart nicht mit DrawShell
+ {
+ if ( nNewId == SID_DRAW_TEXT || nNewId == SID_DRAW_TEXT_MARQUEE || nNewId == SID_DRAW_NOTEEDIT )
+ SetDrawTextShell( TRUE );
+ else
+ {
+ if (bEx)
+ {
+ SetDrawShell( TRUE );
+ }
+ else
+ {
+ SetDrawShell( pView->GetMarkList().GetMarkCount() != 0 );
+ nCtrlSfxId = USHRT_MAX;// hier pfuschte JN
+ }
+ }
+ }
+
+ if (pTabView->GetDrawFuncPtr())
+ {
+ if (pTabView->GetDrawFuncOldPtr() != pTabView->GetDrawFuncPtr())
+ delete pTabView->GetDrawFuncOldPtr();
+
+ pTabView->GetDrawFuncPtr()->Deactivate();
+ pTabView->SetDrawFuncOldPtr(pTabView->GetDrawFuncPtr());
+ pTabView->SetDrawFuncPtr(NULL);
+ }
+
+ SfxRequest aNewReq(rReq);
+ aNewReq.SetSlot(nDrawSfxId);
+
+ switch (nNewId)
+ {
+ case SID_OBJECT_SELECT:
+ //@#70206# Nicht immer zurueckschalten
+ if(pView->GetMarkList().GetMarkCount() == 0) SetDrawShell(bEx);
+ pTabView->SetDrawFuncPtr(new FuSelection(this, pWin, pView, pDoc, aNewReq));
+ break;
+
+ case SID_DRAW_LINE:
+ case SID_DRAW_RECT:
+ case SID_DRAW_ELLIPSE:
+ pTabView->SetDrawFuncPtr(new FuConstRectangle(this, pWin, pView, pDoc, aNewReq));
+ break;
+
+ case SID_DRAW_CAPTION:
+ pTabView->SetDrawFuncPtr(new FuConstRectangle(this, pWin, pView, pDoc, aNewReq));
+ pView->SetFrameDragSingles( FALSE );
+ rBindings.Invalidate( SID_BEZIER_EDIT );
+ break;
+
+ case SID_DRAW_POLYGON:
+ case SID_DRAW_POLYGON_NOFILL:
+ case SID_DRAW_BEZIER_NOFILL:
+ case SID_DRAW_FREELINE_NOFILL:
+ pTabView->SetDrawFuncPtr(new FuConstPolygon(this, pWin, pView, pDoc, aNewReq));
+ break;
+
+ case SID_DRAW_ARC:
+ case SID_DRAW_PIE:
+ case SID_DRAW_CIRCLECUT:
+ pTabView->SetDrawFuncPtr(new FuConstArc(this, pWin, pView, pDoc, aNewReq));
+ break;
+
+ case SID_DRAW_TEXT:
+ case SID_DRAW_TEXT_MARQUEE:
+ case SID_DRAW_NOTEEDIT:
+ pTabView->SetDrawFuncPtr(new FuText(this, pWin, pView, pDoc, aNewReq));
+ break;
+
+ case SID_INSERT_PUSHBUTTON:
+ case SID_INSERT_CHECKBOX:
+ case SID_INSERT_RADIOBUTTON:
+ case SID_INSERT_SPINBUTTON:
+ case SID_INSERT_FIXEDTEXT:
+ case SID_INSERT_GROUPBOX:
+ case SID_INSERT_LISTBOX:
+ case SID_INSERT_COMBOBOX:
+ case SID_INSERT_EDIT:
+ case SID_INSERT_HSCROLLBAR:
+ case SID_INSERT_VSCROLLBAR:
+ case SID_INSERT_URLBUTTON:
+ pTabView->SetDrawFuncPtr(new FuConstControl(this, pWin, pView, pDoc, aNewReq));
+ break;
+
+ case SID_FM_CREATE_CONTROL:
+ SetDrawFormShell(TRUE);
+ pTabView->SetDrawFuncPtr(new FuConstUnoControl(this, pWin, pView, pDoc, aNewReq));
+ nFormSfxId = nNewFormId;
+ break;
+
+ case SID_DRAW_CHART:
+ bChartDlgIsEdit = FALSE;
+ pTabView->SetDrawFuncPtr(new FuMarkRect(this, pWin, pView, pDoc, aNewReq));
+ break;
+
+ default:
+ break;
+ }
+
+ if (pTabView->GetDrawFuncPtr())
+ pTabView->GetDrawFuncPtr()->Activate();
+
+ rReq.Done();
+
+ rBindings.Invalidate( SID_INSERT_DRAW );
+ rBindings.Invalidate( SID_CHOOSE_CONTROLS );
+
+ rBindings.Update( SID_INSERT_DRAW );
+ rBindings.Update( SID_CHOOSE_CONTROLS );
+}
+
+void ScTabViewShell::GetDrawState(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case SID_INSERT_DRAW:
+ {
+ // SID_OBJECT_SELECT nur, wenn "harter" Selektionsmodus
+ USHORT nPutId = nDrawSfxId;
+ if ( nPutId == SID_OBJECT_SELECT && !IsDrawSelMode() )
+ nPutId = USHRT_MAX;
+ // nur die Images, die auch auf dem Controller liegen
+ if ( nPutId != SID_OBJECT_SELECT &&
+ nPutId != SID_DRAW_LINE &&
+ nPutId != SID_DRAW_RECT &&
+ nPutId != SID_DRAW_ELLIPSE &&
+ nPutId != SID_DRAW_POLYGON_NOFILL &&
+ nPutId != SID_DRAW_BEZIER_NOFILL &&
+ nPutId != SID_DRAW_FREELINE_NOFILL &&
+ nPutId != SID_DRAW_ARC &&
+ nPutId != SID_DRAW_PIE &&
+ nPutId != SID_DRAW_CIRCLECUT &&
+ nPutId != SID_DRAW_TEXT &&
+ nPutId != SID_DRAW_TEXT_MARQUEE &&
+ nPutId != SID_DRAW_CAPTION )
+ nPutId = USHRT_MAX;
+ SfxAllEnumItem aItem( nWhich, nPutId );
+ rSet.Put( aItem );
+ }
+ break;
+ case SID_CHOOSE_CONTROLS:
+ if (nCtrlSfxId != USHRT_MAX)
+ {
+ SfxAllEnumItem aItem( nWhich, nCtrlSfxId );
+ rSet.Put( aItem );
+ }
+ break;
+
+ case SID_DRAW_CHART:
+ {
+ BOOL bOle = GetViewFrame()->ISA(SfxInPlaceFrame);
+ if ( bOle || !SFX_APP()->HasFeature(SFX_FEATURE_SCHART) )
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_OBJECT_SELECT: // wichtig fuer den ollen Control-Controller
+ rSet.Put( SfxBoolItem( nWhich, nDrawSfxId == SID_OBJECT_SELECT && IsDrawSelMode() ) );
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+BOOL ScTabViewShell::SelectObject( const String& rName )
+{
+ ScDrawView* pView = GetViewData()->GetScDrawView();
+ if (!pView)
+ return FALSE;
+
+ BOOL bFound = pView->SelectObject( rName );
+ // DrawShell etc. is handled in MarkListHasChanged
+
+ return bFound;
+}
+
+
+
diff --git a/sc/source/ui/view/tabvwsh3.cxx b/sc/source/ui/view/tabvwsh3.cxx
new file mode 100644
index 000000000000..dd8848603a3d
--- /dev/null
+++ b/sc/source/ui/view/tabvwsh3.cxx
@@ -0,0 +1,1005 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwsh3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/zoom.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/passwd.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/topfrm.hxx>
+#include <svtools/ptitem.hxx>
+#include <svtools/stritem.hxx>
+
+#ifdef VCL /* Comp.- Mode */
+#include <vcl/msgbox.hxx>
+#include <vcl/fonttype.hxx>
+#else
+#include <vcl/msgbox.hxx>
+#include <vcl/gdiobj.hxx>
+#endif
+
+#include "globstr.hrc"
+#include "scmod.hxx"
+#include "appoptio.hxx"
+#include "tabvwsh.hxx"
+#include "document.hxx"
+#include "sc.hrc"
+#include "inputwin.hxx"
+#include "scresid.hxx"
+#include "printfun.hxx"
+#include "docsh.hxx"
+#include "rangelst.hxx"
+#include "prevwsh.hxx"
+#include "rangeutl.hxx"
+#include "reffact.hxx"
+#include "uiitems.hxx"
+#include "cell.hxx"
+#include "inputhdl.hxx"
+#include "scendlg.hxx"
+#include "mtrindlg.hxx"
+#include "autoform.hxx"
+#include "autofmt.hxx"
+#include "dwfunctr.hxx"
+
+#define IS_EDITMODE() GetViewData()->HasEditView( GetViewData()->GetActivePart() )
+#define IS_AVAILABLE(WhichId,ppItem) \
+ (pReqArgs->GetItemState((WhichId), TRUE, ppItem ) == SFX_ITEM_SET)
+#define GET_STRING(nid) ((const SfxStringItem&)pReqArgs->Get(nid)).GetValue()
+#define GET_UINT16(nid) ((const SfxUInt16Item&)pReqArgs->Get(nid)).GetValue()
+#define RECALC_PAGE(pDocSh) ScPrintFunc( pDocSh, GetPrinter(), nCurTab ).UpdatePages()
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::Execute( SfxRequest& rReq )
+{
+ SfxViewFrame* pThisFrame = GetViewFrame();
+ SfxBindings& rBindings = pThisFrame->GetBindings();
+ SfxApplication* pSfxApp = SFX_APP();
+ ScModule* pScMod = SC_MOD();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+
+ if (nSlot != SID_CURRENTCELL) // der kommt beim MouseButtonUp
+ HideListBox(); // Autofilter-DropDown-Listbox
+
+ switch ( nSlot )
+ {
+ case FID_INSERT_FILE:
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs &&
+ pReqArgs->GetItemState(FID_INSERT_FILE,TRUE,&pItem) == SFX_ITEM_SET )
+ {
+ String aFileName = ((const SfxStringItem*)pItem)->GetValue();
+
+ // Einfuege-Position
+
+ Point aInsertPos;
+ if ( pReqArgs->GetItemState(FN_PARAM_1,TRUE,&pItem) == SFX_ITEM_SET )
+ aInsertPos = ((const SfxPointItem*)pItem)->GetValue();
+ else
+ aInsertPos = GetInsertPos();
+
+ // als Link?
+
+ BOOL bAsLink = FALSE;
+ if ( pReqArgs->GetItemState(FN_PARAM_2,TRUE,&pItem) == SFX_ITEM_SET )
+ bAsLink = ((const SfxBoolItem*)pItem)->GetValue();
+
+ // ausfuehren
+
+ PasteFile( aInsertPos, aFileName, bAsLink );
+ }
+ }
+ break;
+
+ case SID_OPENDLG_EDIT_PRINTAREA:
+ {
+ USHORT nId = ScPrintAreasDlgWrapper::GetChildWindowId();
+ SfxChildWindow* pWnd = pThisFrame->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ break;
+
+ case SID_CHANGE_PRINTAREA:
+ {
+ if ( pReqArgs ) // OK aus Dialog
+ {
+ String aPrintStr = GET_STRING( SID_CHANGE_PRINTAREA );
+ String aRowStr = GET_STRING( FN_PARAM_2 );
+ String aColStr = GET_STRING( FN_PARAM_3 );
+
+ SetPrintRanges( &aPrintStr, &aColStr, &aRowStr, FALSE );
+
+ rReq.Done();
+ }
+ }
+ break;
+
+ case SID_ADD_PRINTAREA:
+ case SID_DEFINE_PRINTAREA: // Menue oder Basic
+ {
+ BOOL bAdd = ( nSlot == SID_ADD_PRINTAREA );
+ if ( pReqArgs )
+ {
+ String aPrintStr = GET_STRING( SID_DEFINE_PRINTAREA );
+ SetPrintRanges( &aPrintStr, NULL, NULL, bAdd );
+ }
+ else
+ {
+ SetPrintRanges( NULL, NULL, NULL, bAdd ); // aus Selektion
+ rReq.Done();
+ }
+ }
+ break;
+
+ case SID_DELETE_PRINTAREA:
+ {
+ String aEmpty;
+ SetPrintRanges( &aEmpty, NULL, NULL, FALSE ); // Druckbereich loeschen
+ rReq.Done();
+ }
+ break;
+
+ case FID_DEL_MANUALBREAKS:
+ RemoveManualBreaks();
+ rReq.Done();
+ break;
+
+ case FID_ADJUST_PRINTZOOM:
+ AdjustPrintZoom();
+ rReq.Done();
+ break;
+
+ case FID_RESET_PRINTZOOM:
+ SetPrintZoom( 100, 0 ); // 100%, nicht auf Seiten
+ rReq.Done();
+ break;
+
+ case SID_FORMATPAGE:
+ case SID_STATUS_PAGESTYLE:
+ case SID_HFEDIT:
+ GetViewData()->GetDocShell()->
+ ExecutePageStyle( *this, rReq, GetViewData()->GetTabNo() );
+ break;
+
+ case SID_JUMPTOMARK:
+ case SID_CURRENTCELL:
+ if ( pReqArgs )
+ {
+ String aAddress;
+ const SfxPoolItem* pItem;
+ if ( pReqArgs->GetItemState( nSlot, TRUE, &pItem ) == SFX_ITEM_SET )
+ aAddress = ((const SfxStringItem*)pItem)->GetValue();
+ else if ( nSlot == SID_JUMPTOMARK && pReqArgs->GetItemState(
+ ID_VAL_DUMMY0, TRUE, &pItem ) == SFX_ITEM_SET )
+ aAddress = ((const SfxStringItem*)pItem)->GetValue();
+ // SID_JUMPTOMARK steht in der IDL mit ID_VAL_DUMMY0 als Parameter
+
+ BOOL bUnmark = FALSE;
+ if ( pReqArgs->GetItemState( FN_PARAM_1, TRUE, &pItem ) == SFX_ITEM_SET )
+ bUnmark = ((const SfxBoolItem*)pItem)->GetValue();
+
+ BOOL bFound = FALSE;
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+ ScRange aScRange;
+ ScAddress aScAddress;
+ USHORT nResult = aScRange.Parse( aAddress, pDoc );
+ USHORT nTab = pViewData->GetTabNo();
+ BOOL bMark = TRUE;
+
+ // Ist es ein Bereich ?
+ if( nResult & SCA_VALID )
+ {
+ if ( nResult & SCA_TAB_3D )
+ {
+ if( aScRange.aStart.Tab() != nTab )
+ SetTabNo( nTab = aScRange.aStart.Tab() );
+ }
+ else
+ {
+ aScRange.aStart.SetTab( nTab );
+ aScRange.aEnd.SetTab( nTab );
+ }
+ }
+ // Ist es eine Zelle ?
+ else if( (nResult=aScAddress.Parse( aAddress, pDoc )) & SCA_VALID )
+ {
+ if ( nResult & SCA_TAB_3D )
+ {
+ if( aScAddress.Tab() != nTab )
+ SetTabNo( nTab = aScAddress.Tab() );
+ }
+ else
+ aScAddress.SetTab( nTab );
+
+ aScRange = ScRange( aScAddress, aScAddress );
+ // Zellen sollen nicht markiert werden
+ bMark = FALSE;
+ }
+ // Ist es benahmster Bereich (erst Namen dann DBBereiche) ?
+ else
+ {
+ ScRangeUtil aRangeUtil;
+ if( aRangeUtil.MakeRangeFromName( aAddress, pDoc, nTab, aScRange, RUTL_NAMES ) ||
+ aRangeUtil.MakeRangeFromName( aAddress, pDoc, nTab, aScRange, RUTL_DBASE ) )
+ {
+ nResult |= SCA_VALID;
+ if( aScRange.aStart.Tab() != nTab )
+ SetTabNo( nTab = aScRange.aStart.Tab() );
+ }
+ }
+
+ if ( !(nResult & SCA_VALID) &&
+ ByteString(aAddress, RTL_TEXTENCODING_ASCII_US).IsNumericAscii() )
+ {
+ sal_Int32 nNumeric = aAddress.ToInt32();
+ if ( nNumeric > 0 && nNumeric <= MAXROW+1 )
+ {
+ // 1-basierte Zeilennummer
+
+ aScAddress.SetRow( (USHORT)(nNumeric - 1) );
+ aScAddress.SetCol( pViewData->GetCurX() );
+ aScAddress.SetTab( nTab );
+ aScRange = ScRange( aScAddress, aScAddress );
+ bMark = FALSE;
+ nResult = SCA_VALID;
+ }
+ }
+
+ if ( aScRange.aStart.Row() > MAXROW || aScRange.aEnd.Row() > MAXROW )
+ nResult = 0;
+
+ // wir haben was gefunden
+ if( nResult & SCA_VALID )
+ {
+ bFound = TRUE;
+ USHORT nCol = aScRange.aStart.Col();
+ USHORT nRow = aScRange.aStart.Row();
+ BOOL bNothing = ( pViewData->GetCurX()==nCol && pViewData->GetCurY()==nRow );
+
+ // markieren
+ if( bMark )
+ {
+ if (rMark.IsMarked()) // ist derselbe Bereich schon markiert?
+ {
+ ScRange aOldMark;
+ rMark.GetMarkArea( aOldMark );
+ aOldMark.Justify();
+ ScRange aCurrent = aScRange;
+ aCurrent.Justify();
+ bNothing = ( aCurrent == aOldMark );
+ }
+ else
+ bNothing = FALSE;
+
+ if (!bNothing)
+ MarkRange( aScRange, FALSE ); // Cursor kommt hinterher...
+ }
+ else
+ {
+ // aus dem Navigator die Selektion nur aufheben, wenn Parameter da
+ if( rReq.IsAPI() || bUnmark )
+ {
+ MoveCursorAbs( nCol, nRow,
+ SC_FOLLOW_NONE, FALSE, FALSE );
+ }
+ }
+
+ // und Cursor setzen
+
+ // zusammengefasste Zellen beruecksichtigen:
+ while ( pDoc->IsHorOverlapped( nCol, nRow, nTab ) ) //! ViewData !!!
+ --nCol;
+ while ( pDoc->IsVerOverlapped( nCol, nRow, nTab ) )
+ --nRow;
+
+ // Navigator-Aufrufe sind nicht API!!!
+
+ if( bNothing )
+ {
+ if (rReq.IsAPI())
+ rReq.Ignore(); // wenn Makro, dann gar nix
+ else
+ rReq.Done(); // sonst wenigstens aufzeichnen
+ }
+ else
+ {
+ pViewData->ResetOldCursor();
+ SetCursor( nCol, nRow );
+ AlignToCursor( nCol, nRow, SC_FOLLOW_JUMP );
+ rBindings.Invalidate( SID_CURRENTCELL );
+ rBindings.Update( nSlot );
+
+ if (!rReq.IsAPI())
+ rReq.Done();
+ }
+
+ rReq.SetReturnValue( SfxStringItem( SID_CURRENTCELL, aAddress ) );
+ }
+
+ if (!bFound) // kein gueltiger Bereich
+ {
+ // wenn es ein Tabellenname ist, umschalten (fuer Navigator/URL's)
+
+ USHORT nNameTab;
+ if ( pDoc->GetTable( aAddress, nNameTab ) )
+ {
+ bFound = TRUE;
+ if ( nNameTab != nTab )
+ SetTabNo( nNameTab );
+ }
+ }
+
+ if ( !bFound && nSlot == SID_JUMPTOMARK )
+ {
+ // Grafik-Objekte probieren (nur bei URL's)
+
+ bFound = SelectObject( aAddress );
+ }
+
+ if (!bFound && !rReq.IsAPI())
+ ErrorMessage( STR_ERR_INVALID_AREA );
+ }
+ break;
+
+ case SID_CURRENTOBJECT:
+ if ( pReqArgs )
+ {
+ String aName = ((const SfxStringItem&)pReqArgs->Get(nSlot)).GetValue();
+ SelectObject( aName );
+ }
+ break;
+
+ case SID_CURRENTTAB:
+ if ( pReqArgs )
+ {
+ // Tabelle fuer Basic ist 1-basiert
+ USHORT nTab = ((const SfxUInt16Item&)pReqArgs->Get(nSlot)).GetValue() - 1;
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ if ( nTab < pDoc->GetTableCount() )
+ {
+ SetTabNo( nTab );
+ rBindings.Update( nSlot );
+
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ //! sonst Fehler ?
+ }
+ break;
+
+ case SID_CURRENTDOC:
+ if ( pReqArgs )
+ {
+ String aStrDocName( ((const SfxStringItem&)pReqArgs->
+ Get(nSlot)).GetValue() );
+
+ SfxViewFrame* pFrame = NULL;
+ ScDocShell* pDocSh = (ScDocShell*)SfxObjectShell::GetFirst();
+ BOOL bFound = FALSE;
+
+ // zu aktivierenden ViewFrame suchen
+
+ while ( pDocSh && !bFound )
+ {
+ if ( pDocSh->GetTitle() == aStrDocName )
+ {
+ pFrame = SfxViewFrame::GetFirst( pDocSh, TYPE(SfxTopViewFrame) );
+ bFound = ( NULL != pFrame );
+ }
+
+ pDocSh = (ScDocShell*)SfxObjectShell::GetNext( *pDocSh );
+ }
+
+ if ( bFound )
+ if ( pFrame->ISA(SfxTopViewFrame) )
+ pFrame->GetFrame()->Appear();
+
+ rReq.Ignore();//XXX wird von SFX erledigt
+ }
+
+ case SID_ATTR_SIZE://XXX ???
+ break;
+
+
+ case SID_PRINTPREVIEW:
+ {
+ if ( !pThisFrame->ISA( SfxInPlaceFrame ) ) // nicht bei OLE
+ {
+ // print preview is now always in the same frame as the tab view
+ // -> always switch this frame back to normal view
+ // (ScPreviewShell ctor reads view data)
+
+ pThisFrame->GetBindings().Execute( SID_VIEWSHELL1,
+ NULL, 0, SFX_CALLMODE_ASYNCHRON );
+ }
+ // else Fehler (z.B. Ole)
+ }
+ break;
+
+ case SID_DETECTIVE_DEL_ALL:
+ DetectiveDelAll();
+ rReq.Done();
+ break;
+
+ // SID_TABLE_ACTIVATE und SID_MARKAREA werden von Basic aus an der versteckten
+ // View aufgerufen, um auf der sichtbaren View zu markieren/umzuschalten:
+
+ case SID_TABLE_ACTIVATE:
+ DBG_ERROR("old slot SID_TABLE_ACTIVATE");
+ break;
+
+ case SID_REPAINT:
+ PaintGrid();
+ PaintTop();
+ PaintLeft();
+ PaintExtras();
+ rReq.Done();
+ break;
+
+ case FID_PAGEBREAKMODE:
+ {
+ BOOL bSet = !GetViewData()->IsPagebreakMode();
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && pReqArgs->
+ GetItemState(FID_PAGEBREAKMODE, TRUE, &pItem) == SFX_ITEM_SET )
+ bSet = ((const SfxBoolItem*)pItem)->GetValue();
+ SetPagebreakMode( bSet );
+ UpdatePageBreakData();
+ SetCurSubShell( GetCurObjectSelectionType(), TRUE );
+ PaintGrid();
+ PaintTop();
+ PaintLeft();
+ rBindings.Invalidate( FID_PAGEBREAKMODE );
+ rReq.Done();
+ }
+ break;
+
+ case FID_FUNCTION_BOX:
+ {
+ if ( rReq.GetArgs() )
+ pThisFrame->SetChildWindow(ScFunctionChildWindow::GetChildWindowId(),
+ ((const SfxBoolItem&) (rReq.GetArgs()->
+ Get(FID_FUNCTION_BOX))).GetValue());
+ else
+ pThisFrame->ToggleChildWindow(ScFunctionChildWindow::GetChildWindowId() );
+
+ SFX_BINDINGS().Invalidate(FID_FUNCTION_BOX);
+ rReq.Done ();
+ }
+ break;
+
+
+ case FID_TOGGLESYNTAX:
+ {
+ BOOL bSet = !GetViewData()->IsSyntaxMode();
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && pReqArgs->GetItemState(nSlot, TRUE, &pItem) == SFX_ITEM_SET )
+ bSet = ((const SfxBoolItem*)pItem)->GetValue();
+ GetViewData()->SetSyntaxMode( bSet );
+ PaintGrid();
+ rBindings.Invalidate( FID_TOGGLESYNTAX );
+ rReq.Done();
+ }
+ break;
+ case FID_TOGGLEHEADERS:
+ {
+ BOOL bSet = !GetViewData()->IsHeaderMode();
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && pReqArgs->GetItemState(nSlot, TRUE, &pItem) == SFX_ITEM_SET )
+ bSet = ((const SfxBoolItem*)pItem)->GetValue();
+ GetViewData()->SetHeaderMode( bSet );
+ RepeatResize();
+ rBindings.Invalidate( FID_TOGGLEHEADERS );
+ rReq.Done();
+ }
+ break;
+ case FID_TOGGLEINPUTLINE:
+ {
+ USHORT nId = ScInputWindowWrapper::GetChildWindowId();
+ SfxChildWindow* pWnd = pThisFrame->GetChildWindow( nId );
+ BOOL bSet = ( pWnd == NULL );
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && pReqArgs->GetItemState(nSlot, TRUE, &pItem) == SFX_ITEM_SET )
+ bSet = ((const SfxBoolItem*)pItem)->GetValue();
+
+ pThisFrame->SetChildWindow( nId, bSet );
+
+ rBindings.Invalidate( FID_TOGGLEINPUTLINE );
+ }
+ break;
+
+ case SID_ATTR_ZOOM: // Statuszeile
+ case FID_SCALE:
+ {
+ SvxZoomType eOldZoomType = GetZoomType();
+ SvxZoomType eZoomType = eOldZoomType;
+ const Fraction& rOldY = GetViewData()->GetZoomY(); // Y wird angezeigt
+ USHORT nOldZoom = (USHORT)(( rOldY.GetNumerator() * 100 )
+ / rOldY.GetDenominator());
+ USHORT nZoom = nOldZoom;
+ BOOL bCancel = FALSE;
+
+ if ( pReqArgs )
+ {
+ const SvxZoomItem& rZoomItem = (const SvxZoomItem&)
+ pReqArgs->Get(SID_ATTR_ZOOM);
+
+ eZoomType = rZoomItem.GetType();
+ nZoom = rZoomItem.GetValue();
+ }
+ else
+ {
+ SfxItemSet aSet ( GetPool(), SID_ATTR_ZOOM, SID_ATTR_ZOOM );
+ SvxZoomItem aZoomItem( eOldZoomType, nOldZoom, SID_ATTR_ZOOM );
+ SvxZoomDialog* pDlg = NULL;
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nBtnFlags = SVX_ZOOM_ENABLE_50
+ | SVX_ZOOM_ENABLE_75
+ | SVX_ZOOM_ENABLE_100
+ | SVX_ZOOM_ENABLE_150
+ | SVX_ZOOM_ENABLE_200
+ | SVX_ZOOM_ENABLE_WHOLEPAGE
+ | SVX_ZOOM_ENABLE_PAGEWIDTH;
+
+ if ( rMark.IsMarked() )
+ nBtnFlags = nBtnFlags | SVX_ZOOM_ENABLE_OPTIMAL;
+
+ aZoomItem.SetValueSet( nBtnFlags );
+ aSet.Put( aZoomItem );
+ pDlg = new SvxZoomDialog( GetDialogParent(), aSet );
+ pDlg->SetLimits( MINZOOM, MAXZOOM );
+
+ bCancel = ( RET_CANCEL == pDlg->Execute() );
+
+ if ( !bCancel )
+ {
+ const SvxZoomItem& rZoomItem = (const SvxZoomItem&)
+ pDlg->GetOutputItemSet()->
+ Get( SID_ATTR_ZOOM );
+
+ eZoomType = rZoomItem.GetType();
+ nZoom = rZoomItem.GetValue();
+ }
+
+ delete pDlg;
+ }
+
+ if ( !bCancel )
+ {
+ if ( eZoomType == SVX_ZOOM_PERCENT )
+ {
+ if ( nZoom < MINZOOM ) nZoom = MINZOOM;
+ if ( nZoom > MAXZOOM ) nZoom = MAXZOOM;
+ }
+ else
+ {
+ nZoom = CalcZoom( eZoomType, nOldZoom );
+ bCancel = nZoom == 0;
+ }
+
+ switch ( eZoomType )
+ {
+ case SVX_ZOOM_WHOLEPAGE:
+ case SVX_ZOOM_PAGEWIDTH:
+ SetZoomType( eZoomType );
+ break;
+
+ default:
+ SetZoomType( SVX_ZOOM_PERCENT );
+ }
+ }
+
+ if ( nZoom != nOldZoom && !bCancel )
+ {
+ if (!GetViewData()->IsPagebreakMode())
+ {
+ ScModule* pScMod = SC_MOD();
+ ScAppOptions aNewOpt = pScMod->GetAppOptions();
+ aNewOpt.SetZoom( nZoom );
+ aNewOpt.SetZoomType( GetZoomType() );
+ pScMod->SetAppOptions( aNewOpt );
+ }
+ Fraction aFract( nZoom, 100 );
+ SetZoom( aFract, aFract );
+ PaintGrid();
+ PaintTop();
+ PaintLeft();
+ rBindings.Invalidate( SID_ATTR_ZOOM );
+ rReq.Done();
+ }
+ }
+ break;
+
+ case SID_OPENDLG_MODCHART:
+ {
+ bChartDlgIsEdit = ( nSlot == SID_OPENDLG_MODCHART );
+ if (bChartDlgIsEdit)
+ {
+ aEditChartName = GetSelectedChartName();
+ DrawDeselectAll(); // flackert sonst bei Ref-Input
+ }
+
+ ResetChartArea();
+
+ USHORT nId = ScChartDlgWrapper::GetChildWindowId();
+ SfxChildWindow* pWnd = pThisFrame->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ break;
+
+
+
+ //----------------------------------------------------------------
+
+ case FID_TAB_SELECTALL:
+ SelectAllTables();
+ rReq.Done();
+ break;
+
+
+
+ case SID_OUTLINE_DELETEALL:
+ RemoveAllOutlines();
+ rReq.Done();
+ break;
+
+ case SID_AUTO_OUTLINE:
+ AutoOutline();
+ rReq.Done();
+ break;
+
+
+ case SID_WINDOW_SPLIT:
+ {
+ ScSplitMode eHSplit = GetViewData()->GetHSplitMode();
+ ScSplitMode eVSplit = GetViewData()->GetVSplitMode();
+ if ( eHSplit == SC_SPLIT_NORMAL || eVSplit == SC_SPLIT_NORMAL ) // aufheben
+ RemoveSplit();
+ else if ( eHSplit == SC_SPLIT_FIX || eVSplit == SC_SPLIT_FIX ) // normal
+ FreezeSplitters( FALSE );
+ else // erzeugen
+ SplitAtCursor();
+ rReq.Done();
+
+ InvalidateSplit();
+ }
+ break;
+
+ case SID_WINDOW_FIX:
+ {
+ ScSplitMode eHSplit = GetViewData()->GetHSplitMode();
+ ScSplitMode eVSplit = GetViewData()->GetVSplitMode();
+ if ( eHSplit == SC_SPLIT_FIX || eVSplit == SC_SPLIT_FIX ) // aufheben
+ RemoveSplit();
+ else
+ FreezeSplitters( TRUE ); // erzeugen oder fixieren
+ rReq.Done();
+
+ InvalidateSplit();
+ }
+ break;
+
+ // ----------------------------------------------------------------
+
+ case FID_CHG_SHOW:
+ {
+ USHORT nId = ScHighlightChgDlgWrapper::GetChildWindowId();
+ SfxChildWindow* pWnd = pThisFrame->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ }
+ break;
+
+ case FID_CHG_ACCEPT:
+ {
+ pThisFrame->ToggleChildWindow(ScAcceptChgDlgWrapper::GetChildWindowId());
+ SFX_BINDINGS().Invalidate(FID_CHG_ACCEPT);
+ rReq.Done ();
+
+ /*
+ USHORT nId = ScAcceptChgDlgWrapper::GetChildWindowId();
+ SfxChildWindow* pWnd = pThisFrame->GetChildWindow( nId );
+
+ pScMod->SetRefDialog( nId, pWnd ? FALSE : TRUE );
+ */
+ }
+ break;
+
+ case FID_CHG_COMMENT:
+ {
+ ScViewData* pData = GetViewData();
+ ScAddress aCursorPos( pData->GetCurX(), pData->GetCurY(), pData->GetTabNo() );
+ ScDocShell* pDocSh = pData->GetDocShell();
+
+ ScChangeAction* pAction = pDocSh->GetChangeAction( aCursorPos );
+ if ( pAction )
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs &&
+ pReqArgs->GetItemState( nSlot, TRUE, &pItem ) == SFX_ITEM_SET &&
+ pItem->ISA( SfxStringItem ) )
+ {
+ String aComment = ((const SfxStringItem*)pItem)->GetValue();
+ pDocSh->SetChangeComment( pAction, aComment );
+ rReq.Done();
+ }
+ else
+ {
+ pDocSh->ExecuteChangeCommentDialog( pAction, GetDialogParent() );
+ rReq.Done();
+ }
+ }
+ }
+ break;
+
+ case SID_CREATE_SW_DRAWVIEW:
+ // wird von den Forms gerufen, wenn die DrawView mit allem Zubehoer
+ // angelegt werden muss
+ if (!GetScDrawView())
+ {
+ GetViewData()->GetDocShell()->MakeDrawLayer();
+ rBindings.InvalidateAll(FALSE);
+ }
+ break;
+
+ case SID_STATUS_DOCPOS:
+ {
+ //! Navigator an-/ausschalten (wie im Writer) ???
+ //!SFX_DISPATCHER().Execute( SID_NAVIGATOR,
+ //! SFX_CALLMODE_SYNCHRON|SFX_CALLMODE_RECORD );
+ }
+ break;
+
+ case FID_PROTECT_DOC:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ SfxPasswordDialog* pDlg;
+
+ if (pDoc->IsDocProtected())
+ {
+ BOOL bCancel = FALSE;
+ String aPassword;
+
+ if (pDoc->GetDocPassword().Len())
+ {
+ String aText( ScResId(SCSTR_PASSWORD) );
+
+ pDlg = new SfxPasswordDialog( GetDialogParent(), &aText );
+ pDlg->SetText( ScResId(SCSTR_UNPROTECTDOC) );
+ pDlg->SetMinLen( 0 );
+ pDlg->SetHelpId( FID_PROTECT_DOC );
+ pDlg->SetEditHelpId( HID_PASSWD_DOC );
+
+ if (pDlg->Execute() == RET_OK)
+ aPassword = pDlg->GetPassword();
+ else
+ bCancel = TRUE;
+ delete pDlg;
+ }
+ if (!bCancel)
+ {
+ Unprotect( TABLEID_DOC, aPassword );
+ rReq.Done();
+ }
+ }
+ else
+ {
+ String aText( ScResId(SCSTR_PASSWORDOPT) );
+
+ pDlg = new SfxPasswordDialog( GetDialogParent(), &aText );
+ pDlg->SetText( ScResId(SCSTR_PROTECTDOC) );
+ pDlg->SetMinLen( 0 );
+ pDlg->SetHelpId( FID_PROTECT_DOC );
+ pDlg->SetEditHelpId( HID_PASSWD_DOC );
+ pDlg->ShowExtras( SHOWEXTRAS_CONFIRM );
+
+ if (pDlg->Execute() == RET_OK)
+ {
+ String aPassword = pDlg->GetPassword();
+ BOOL bOk = FALSE;
+
+ if ( aPassword.Len() )
+ {
+ // compare strings
+ if ( aPassword == pDlg->GetConfirm() )
+ bOk = TRUE;
+ else
+ {
+ InfoBox aBox( GetDialogParent(),
+ String( ScResId( SCSTR_WRONGPASSWORD ) ) );
+ aBox.Execute();
+ }
+ }
+ else
+ bOk = TRUE; // ohne Passwort
+
+ if (bOk)
+ {
+ Protect( TABLEID_DOC, aPassword );
+ rReq.Done();
+ }
+ }
+
+ delete pDlg;
+ }
+ rBindings.Invalidate( FID_PROTECT_DOC );
+ }
+ break;
+
+
+ case FID_PROTECT_TABLE:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ SfxPasswordDialog* pDlg;
+ String aPassword;
+ BOOL bCancel = FALSE;
+ BOOL bOldProtection = pDoc->IsTabProtected(nTab);
+ BOOL bNewProtection = ! bOldProtection;
+
+ if( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ if( IS_AVAILABLE( FN_PARAM_1, &pItem ) )
+ aPassword = ((const SfxStringItem*)pItem)->GetValue();
+ if( IS_AVAILABLE( FID_PROTECT_TABLE, &pItem ) )
+ bNewProtection = ((const SfxBoolItem*)pItem)->GetValue();
+ }
+
+ if( ! rReq.IsAPI() )
+ {
+ if (bOldProtection)
+ {
+ if (pDoc->GetTabPassword(nTab).Len())
+ {
+ String aText( ScResId(SCSTR_PASSWORD) );
+
+ pDlg = new SfxPasswordDialog( GetDialogParent(), &aText );
+ pDlg->SetText( ScResId(SCSTR_UNPROTECTTAB) );
+ pDlg->SetMinLen( 0 );
+ pDlg->SetHelpId( FID_PROTECT_TABLE );
+ pDlg->SetEditHelpId( HID_PASSWD_TABLE );
+
+ if (pDlg->Execute() == RET_OK)
+ aPassword = pDlg->GetPassword();
+ else
+ bCancel = TRUE;
+
+ delete pDlg;
+ }
+ }
+ else
+ {
+ String aText( ScResId(SCSTR_PASSWORDOPT) );
+
+ pDlg = new SfxPasswordDialog( GetDialogParent(), &aText );
+ pDlg->SetText( ScResId(SCSTR_PROTECTTAB) );
+ pDlg->SetMinLen( 0 );
+ pDlg->SetHelpId( FID_PROTECT_TABLE );
+ pDlg->SetEditHelpId( HID_PASSWD_TABLE );
+ pDlg->ShowExtras( SHOWEXTRAS_CONFIRM );
+
+ if (pDlg->Execute() == RET_OK)
+ {
+ aPassword = pDlg->GetPassword();
+ if ( aPassword.Len() )
+ {
+ // compare strings
+ if ( aPassword != pDlg->GetConfirm() )
+ {
+ InfoBox aBox( GetDialogParent(),
+ String( ScResId( SCSTR_WRONGPASSWORD ) ) );
+ aBox.Execute();
+ bCancel = TRUE;
+ }
+ }
+ }
+ else
+ bCancel = TRUE;
+
+ delete pDlg;
+ }
+ }
+
+ if( ! bCancel && bNewProtection!=bOldProtection )
+ {
+ if ( bOldProtection )
+ Unprotect( nTab, aPassword );
+ else
+ Protect( nTab, aPassword );
+
+ if( ! rReq.IsAPI() )
+ {
+ rReq.AppendItem( SfxBoolItem( FID_PROTECT_TABLE, bNewProtection ) );
+ rReq.AppendItem( SfxStringItem( FN_PARAM_1, aPassword ) );
+ rReq.Done();
+ }
+ }
+
+ TabChanged();
+ UpdateInputHandler(TRUE); // damit sofort wieder eingegeben werden kann
+ SelectionChanged();
+ }
+ break;
+
+ default:
+ DBG_ERROR("Unbekannter Slot bei ScTabViewShell::Execute");
+ break;
+ }
+}
+
+
+
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
new file mode 100644
index 000000000000..ea6305982f0a
--- /dev/null
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -0,0 +1,1700 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwsh4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sfx2/topfrm.hxx>
+#include "scitems.hxx"
+#include <svx/boxitem.hxx>
+#include <svx/fmshell.hxx>
+#include <svx/sizeitem.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/prtqry.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/dispatch.hxx>
+#include <svtools/printdlg.hxx>
+#include <svtools/whiter.hxx>
+
+#ifndef _URLOBJ_HXX //autogen
+#include <tools/urlobj.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "stlpool.hxx"
+#include "stlsheet.hxx"
+#include "docsh.hxx"
+#include "scmod.hxx"
+#include "appoptio.hxx"
+#include "rangeutl.hxx"
+#include "printfun.hxx"
+#include "drawsh.hxx"
+#include "drformsh.hxx"
+#include "editsh.hxx"
+#include "pivotsh.hxx"
+#include "auditsh.hxx"
+#include "drtxtob.hxx"
+#include "inputhdl.hxx"
+#include "editutil.hxx"
+#include "inputopt.hxx"
+#include "inputwin.hxx"
+#include "scresid.hxx"
+#include "dbcolect.hxx" // fuer ReImport
+#include "reffact.hxx"
+#include "viewuno.hxx"
+#include "anyrefdg.hxx"
+#include "chgtrack.hxx"
+#include "cellsh.hxx"
+#include "oleobjsh.hxx"
+#include "chartsh.hxx"
+#include "graphsh.hxx"
+#include "pgbrksh.hxx"
+#include "dpobject.hxx"
+#include "prevwsh.hxx"
+
+
+void ActivateOlk( ScViewData* pViewData );
+void DeActivateOlk( ScViewData* pViewData );
+
+extern SfxViewShell* pScActiveViewShell; // global.cxx
+
+using namespace com::sun::star;
+
+// STATIC DATA -----------------------------------------------------------
+
+USHORT ScTabViewShell::nInsertCtrlState = SID_INSERT_GRAPHIC;
+USHORT ScTabViewShell::nInsCellsCtrlState = 0;
+USHORT ScTabViewShell::nInsObjCtrlState = SID_DRAW_CHART;
+
+// -----------------------------------------------------------------------
+
+void __EXPORT ScTabViewShell::Activate(BOOL bMDI)
+{
+ SfxViewShell::Activate(bMDI);
+
+ // hier kein GrabFocus, sonst gibt's Probleme wenn etwas inplace editiert wird!
+
+ if ( bMDI )
+ {
+ // fuer Eingabezeile (ClearCache)
+ ScModule* pScMod = SC_MOD();
+ pScMod->ViewShellChanged();
+
+ ActivateView( TRUE, bFirstActivate );
+ ActivateOlk( GetViewData() );
+
+ // #56870# AutoCorrect umsetzen, falls der Writer seins neu angelegt hat
+ UpdateDrawTextOutliner();
+
+ // RegisterNewTargetNames gibts nicht mehr
+
+ SfxViewFrame* pThisFrame = GetViewFrame();
+ if ( pInputHandler && pThisFrame->HasChildWindow(FID_INPUTLINE_STATUS) )
+ {
+ // eigentlich nur beim Reload (letzte Version) noetig:
+ // Das InputWindow bleibt stehen, aber die View mitsamt InputHandler wird
+ // neu angelegt, darum muss der InputHandler am InputWindow gesetzt werden.
+ SfxChildWindow* pChild = pThisFrame->GetChildWindow(FID_INPUTLINE_STATUS);
+ if (pChild)
+ {
+ ScInputWindow* pWin = (ScInputWindow*)pChild->GetWindow();
+ if (pWin && pWin->IsVisible())
+ {
+
+ ScInputHandler* pOldHdl=pWin->GetInputHandler();
+
+ TypeId aScType = TYPE(ScTabViewShell);
+
+ SfxViewShell* pSh = SfxViewShell::GetFirst( &aScType );
+ while ( pSh!=NULL && pOldHdl!=NULL)
+ {
+ if (((ScTabViewShell*)pSh)->GetInputHandler() == pOldHdl)
+ {
+ pOldHdl->ResetDelayTimer();
+ break;
+ }
+ pSh = SfxViewShell::GetNext( *pSh, &aScType );
+ }
+
+ pWin->SetInputHandler( pInputHandler );
+ }
+ }
+ }
+
+ UpdateInputHandler( TRUE );
+
+ if ( bFirstActivate )
+ {
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_NAVIGATOR_UPDATEALL ) );
+ bFirstActivate = FALSE;
+ }
+
+ pScActiveViewShell = this;
+
+ ScInputHandler* pHdl = pScMod->GetInputHdl(this);
+ if (pHdl)
+ {
+ pHdl->SetRefScale( GetViewData()->GetZoomX(), GetViewData()->GetZoomY() );
+ }
+
+ // Aenderungs-Dialog aktualisieren
+
+ if ( pThisFrame->HasChildWindow(FID_CHG_ACCEPT) )
+ {
+ SfxChildWindow* pChild = pThisFrame->GetChildWindow(FID_CHG_ACCEPT);
+ if (pChild)
+ {
+ ((ScAcceptChgDlgWrapper*)pChild)->ReInitDlg();
+ }
+ }
+
+ if(pScMod->IsRefDialogOpen())
+ {
+ USHORT nCurRefDlgId=pScMod->GetCurRefDlgId();
+ SfxChildWindow* pChildWnd = pThisFrame->GetChildWindow( nCurRefDlgId );
+ if ( pChildWnd )
+ {
+ ScAnyRefDlg* pRefDlg = (ScAnyRefDlg*)pChildWnd->GetWindow();
+ pRefDlg->ViewShellChanged(this);
+ }
+ }
+ }
+
+ // Wenn Referenzeingabe-Tip-Hilfe hier wieder angezeigt werden soll (ShowRefTip),
+ // muss sie beim Verschieben der View angepasst werden (gibt sonst Probleme unter OS/2
+ // beim Umschalten zwischen Dokumenten)
+}
+
+void __EXPORT ScTabViewShell::Deactivate(BOOL bMDI)
+{
+ HideTip();
+
+ ScDocument* pDoc=GetViewData()->GetDocument();
+
+ ScChangeTrack* pChanges=pDoc->GetChangeTrack();
+
+ if(pChanges!=NULL)
+ {
+ Link aLink;
+ pChanges->SetModifiedLink(aLink);
+ }
+
+ SfxViewShell::Deactivate(bMDI);
+
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl(this);
+
+ if( bMDI )
+ {
+ DeActivateOlk( GetViewData() );
+ ActivateView( FALSE, FALSE );
+
+ if ( GetViewFrame()->ISA(SfxInPlaceFrame) ) // inplace
+ GetViewData()->GetDocShell()->UpdateOle(GetViewData(),TRUE);
+
+ if ( pHdl )
+ pHdl->NotifyChange( NULL, TRUE ); // Timer-verzoegert wg. Dokumentwechsel
+
+ if (pScActiveViewShell == this)
+ pScActiveViewShell = NULL;
+ }
+ else
+ {
+ HideNoteMarker(); // Notiz-Anzeige
+
+ if ( pHdl )
+ pHdl->HideTip(); // Formel-AutoEingabe-Tip abschalten
+ }
+}
+
+void ScTabViewShell::SetActive()
+{
+ // Die Sfx-View moechte sich gerne selbst aktivieren, weil dabei noch
+ // magische Dinge geschehen (z.B. stuerzt sonst evtl. der Gestalter ab)
+ ActiveGrabFocus();
+
+#if 0
+ SfxViewFrame* pFrame = GetViewFrame();
+ if ( pFrame->ISA(SfxTopViewFrame) )
+ pFrame->GetFrame()->Appear();
+
+ SFX_APP()->SetViewFrame( pFrame ); // immer erst Appear, dann SetViewFrame (#29290#)
+#endif
+}
+
+USHORT __EXPORT ScTabViewShell::PrepareClose(BOOL bUI, BOOL bForBrowsing)
+{
+ if ( pFormShell )
+ {
+ USHORT nRet = pFormShell->PrepareClose(bUI, bForBrowsing);
+ if (nRet!=TRUE)
+ return nRet;
+ }
+ return SfxViewShell::PrepareClose(bUI,bForBrowsing);
+}
+
+//------------------------------------------------------------------
+
+Size __EXPORT ScTabViewShell::GetOptimalSizePixel() const
+{
+ Size aOptSize;
+
+ USHORT nCurTab = GetViewData()->GetTabNo();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find(
+ pDoc->GetPageStyle( nCurTab ),
+ SFX_STYLE_FAMILY_PAGE );
+
+ DBG_ASSERT( pStyleSheet, "PageStyle not found :-/" );
+
+ if ( pStyleSheet )
+ {
+ const SfxItemSet& rSet = pStyleSheet->GetItemSet();
+ const SvxSizeItem& rItem = (const SvxSizeItem&)rSet.Get( ATTR_PAGE_SIZE );
+ const Size& rPageSize = rItem.GetSize();
+
+ aOptSize.Width() = (long) (rPageSize.Width() * GetViewData()->GetPPTX());
+ aOptSize.Height() = (long) (rPageSize.Height() * GetViewData()->GetPPTY());
+ }
+
+ return aOptSize;
+}
+
+//------------------------------------------------------------------
+
+// Zoom fuer In-Place berechnen
+// aus Verhaeltnis von VisArea und Fenstergroesse des GridWin
+
+void ScTabViewShell::UpdateOleZoom()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ if ( pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
+ {
+ Size aObjSize = ((SfxInPlaceObject*)pDocSh)->GetVisArea().GetSize();
+ Window* pWin = GetActiveWin();
+ Size aWinHMM = pWin->PixelToLogic( pWin->GetOutputSizePixel(), MAP_100TH_MM );
+ SetZoomFactor( Fraction( aWinHMM.Width(),aObjSize.Width() ),
+ Fraction( aWinHMM.Height(),aObjSize.Height() ) );
+ }
+}
+
+void __EXPORT ScTabViewShell::AdjustPosSizePixel( const Point &rPos, const Size &rSize )
+{
+ OuterResizePixel( rPos, rSize );
+}
+
+void __EXPORT ScTabViewShell::InnerResizePixel( const Point &rOfs, const Size &rSize )
+{
+ SvBorder aBorder;
+ GetBorderSize( aBorder, rSize );
+ SetBorderPixel( aBorder );
+
+ Size aNewSize( rSize );
+ aNewSize.Width() += aBorder.Left() + aBorder.Right();
+ aNewSize.Height() += aBorder.Top() + aBorder.Bottom();
+
+ DoResize( rOfs, aNewSize, TRUE ); // rSize = Groesse von gridwin
+
+ UpdateOleZoom(); // Zoom fuer In-Place berechnen
+
+// GetViewData()->GetDocShell()->UpdateOle( GetViewData() );
+ GetViewData()->GetDocShell()->SetDocumentModified();
+}
+
+void __EXPORT ScTabViewShell::OuterResizePixel( const Point &rOfs, const Size &rSize )
+{
+ SvBorder aBorder;
+ GetBorderSize( aBorder, rSize );
+ SetBorderPixel( aBorder );
+
+ DoResize( rOfs, rSize ); // Position und Groesse von tabview wie uebergeben
+
+ // ForceMove als Ersatz fuer den Sfx-Move-Mechanismus
+ // (aWinPos muss aktuell gehalten werden, damit ForceMove beim Ole-Deaktivieren klappt)
+
+ ForceMove();
+}
+
+void __EXPORT ScTabViewShell::SetZoomFactor( const Fraction &rZoomX, const Fraction &rZoomY )
+{
+ // fuer OLE...
+
+ Fraction aFrac20( 1,5 );
+ Fraction aFrac400( 4,1 );
+
+ Fraction aNewX( rZoomX );
+ if ( aNewX < aFrac20 )
+ aNewX = aFrac20;
+ if ( aNewX > aFrac400 )
+ aNewX = aFrac400;
+ Fraction aNewY( rZoomY );
+ if ( aNewY < aFrac20 )
+ aNewY = aFrac20;
+ if ( aNewY > aFrac400 )
+ aNewY = aFrac400;
+
+ GetViewData()->UpdateScreenZoom( aNewX, aNewY );
+ SetZoom( aNewX, aNewY );
+
+ PaintGrid();
+ PaintTop();
+ PaintLeft();
+
+ SfxViewShell::SetZoomFactor( rZoomX, rZoomY );
+}
+
+void __EXPORT ScTabViewShell::QueryObjAreaPixel( Rectangle& rRect ) const
+{
+ // auf ganze Zellen anpassen (in 1/100 mm)
+
+ Size aPixelSize = rRect.GetSize();
+ Window* pWin = ((ScTabViewShell*)this)->GetActiveWin();
+ Size aLogicSize = pWin->PixelToLogic( aPixelSize );
+
+ const ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScSplitPos ePos = pViewData->GetActivePart();
+ USHORT nCol = pViewData->GetPosX(WhichH(ePos));
+ USHORT nRow = pViewData->GetPosY(WhichV(ePos));
+ USHORT nTab = pViewData->GetTabNo();
+ Rectangle aLogicRect = pDoc->GetMMRect( nCol, nRow, nCol, nRow, nTab );
+ aLogicRect.SetSize( aLogicSize );
+
+ pDoc->SnapVisArea( aLogicRect );
+
+ rRect.SetSize( pWin->LogicToPixel( aLogicRect.GetSize() ) );
+
+#if 0
+ // auf ganze Zellen anpassen (in Pixeln)
+
+ ScViewData* pViewData = ((ScTabViewShell*)this)->GetViewData();
+ Size aSize = rRect.GetSize();
+
+ ScSplitPos ePos = pViewData->GetActivePart();
+ Window* pWin = ((ScTabViewShell*)this)->GetActiveWin();
+
+ Point aTest( aSize.Width(), aSize.Height() );
+ short nPosX;
+ short nPosY;
+ pViewData->GetPosFromPixel( aTest.X(), aTest.Y(), ePos, nPosX, nPosY );
+ BOOL bLeft;
+ BOOL bTop;
+ pViewData->GetMouseQuadrant( aTest, ePos, nPosX, nPosY, bLeft, bTop );
+ if (!bLeft)
+ ++nPosX;
+ if (!bTop)
+ ++nPosY;
+ aTest = pViewData->GetScrPos( (USHORT)nPosX, (USHORT)nPosY, ePos, TRUE );
+
+ rRect.SetSize(Size(aTest.X(),aTest.Y()));
+#endif
+}
+
+//------------------------------------------------------------------
+
+void __EXPORT ScTabViewShell::Move()
+{
+ Point aNewPos = GetViewFrame()->GetWindow().OutputToScreenPixel(Point());
+
+ if (aNewPos != aWinPos)
+ {
+ StopMarking();
+ aWinPos = aNewPos;
+ }
+}
+
+//------------------------------------------------------------------
+
+void __EXPORT ScTabViewShell::ShowCursor(FASTBOOL bOn)
+{
+/*!!! ShowCursor wird nicht paarweise wie im gridwin gerufen.
+ Der CursorLockCount am Gridwin muss hier direkt auf 0 gesetzt werden
+
+ if (bOn)
+ ShowAllCursors();
+ else
+ HideAllCursors();
+*/
+}
+
+//------------------------------------------------------------------
+
+void __EXPORT ScTabViewShell::WriteUserData(String& rData, BOOL bBrowse)
+{
+ GetViewData()->WriteUserData(rData);
+}
+
+void __EXPORT ScTabViewShell::ReadUserData(const String& rData, BOOL bBrowse)
+{
+ DoReadUserData( rData );
+}
+
+// DoReadUserData is also called from ctor when switching from print preview
+
+void ScTabViewShell::DoReadUserData( const String& rData )
+{
+ Window* pOldWin = GetActiveWin();
+ BOOL bFocus = pOldWin && pOldWin->HasFocus();
+
+ GetViewData()->ReadUserData(rData);
+ SetTabNo( GetViewData()->GetTabNo(), TRUE );
+
+ if ( GetViewData()->IsPagebreakMode() )
+ SetCurSubShell( GetCurObjectSelectionType(), TRUE );
+
+ Window* pNewWin = GetActiveWin();
+ if (pNewWin && pNewWin != pOldWin)
+ {
+ SetWindow( pNewWin ); //! ist diese ViewShell immer aktiv???
+ if (bFocus)
+ pNewWin->GrabFocus();
+ WindowChanged(); // Drawing-Layer (z.B. #56771#)
+ }
+
+ if (GetViewData()->GetHSplitMode() == SC_SPLIT_FIX ||
+ GetViewData()->GetVSplitMode() == SC_SPLIT_FIX)
+ {
+ InvalidateSplit();
+ }
+
+ ZoomChanged();
+
+ TestHintWindow();
+
+ //! if ViewData has more tables than document, remove tables in ViewData
+}
+
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::TestFunction( USHORT nPar )
+{
+/* switch (nPar)
+ {
+ }
+*/
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::ExecuteShowNIY( SfxRequest& rReq )
+{
+ ErrorMessage(STR_BOX_YNI);
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::StateDisabled( SfxItemSet& rSet )
+{
+ SfxWhichIter aIter( rSet );
+ USHORT nWhich = aIter.FirstWhich();
+
+ while ( nWhich )
+ {
+ rSet.DisableItem( nWhich );
+ nWhich = aIter.NextWhich();
+ }
+}
+
+void ScTabViewShell::SetDrawShellOrSub()
+{
+ bActiveDrawSh = TRUE;
+
+ if(bActiveDrawFormSh)
+ {
+ SetCurSubShell(OST_DrawForm);
+ }
+ else if(bActiveGraphicSh)
+ {
+ SetCurSubShell(OST_Graphic);
+ }
+ else if(bActiveChartSh)
+ {
+ SetCurSubShell(OST_Chart);
+ }
+ else if(bActiveOleObjectSh)
+ {
+ SetCurSubShell(OST_OleObject);
+ }
+ else
+ {
+ SetCurSubShell(OST_Drawing);
+ }
+}
+
+void ScTabViewShell::SetDrawShell( BOOL bActive )
+{
+ if(bActive)
+ {
+ SetCurSubShell(OST_Drawing);
+ }
+ else
+ {
+ if(bActiveDrawFormSh || bActiveDrawSh ||
+ bActiveGraphicSh || bActiveOleObjectSh||
+ bActiveChartSh || bActiveDrawTextSh)
+ {
+ SetCurSubShell(OST_Cell);
+ }
+ bActiveDrawFormSh=FALSE;
+ bActiveGraphicSh=FALSE;
+ bActiveOleObjectSh=FALSE;
+ bActiveChartSh=FALSE;
+ }
+
+ BOOL bWasDraw = bActiveDrawSh || bActiveDrawTextSh;
+
+ bActiveDrawSh = bActive;
+ bActiveDrawTextSh = FALSE;
+
+ if ( !bActive )
+ {
+ ResetDrawDragMode(); // Mirror / Rotate aus
+
+ if (bWasDraw && (GetViewData()->GetHSplitMode() == SC_SPLIT_FIX ||
+ GetViewData()->GetVSplitMode() == SC_SPLIT_FIX))
+ {
+ // Aktiven Teil an Cursor anpassen, etc.
+ MoveCursorAbs( GetViewData()->GetCurX(), GetViewData()->GetCurY(),
+ SC_FOLLOW_NONE, FALSE, FALSE, TRUE );
+ }
+ }
+}
+
+void ScTabViewShell::SetDrawTextShell( BOOL bActive )
+{
+ bActiveDrawTextSh = bActive;
+ if ( bActive )
+ {
+ bActiveDrawFormSh=FALSE;
+ bActiveGraphicSh=FALSE;
+ bActiveOleObjectSh=FALSE;
+ bActiveChartSh=FALSE;
+ bActiveDrawSh = FALSE;
+ SetCurSubShell(OST_DrawText);
+ }
+ else
+ SetCurSubShell(OST_Cell);
+
+}
+
+void ScTabViewShell::SetPivotShell( BOOL bActive )
+{
+ bActivePivotSh = bActive;
+
+ // #68771# #76198# SetPivotShell is called from CursorPosChanged every time
+ // -> don't change anything except switching between cell and pivot shell
+
+ if ( eCurOST == OST_Pivot || eCurOST == OST_Cell )
+ {
+ if ( bActive )
+ {
+ bActiveDrawTextSh = bActiveDrawSh = FALSE;
+ bActiveDrawFormSh=FALSE;
+ bActiveGraphicSh=FALSE;
+ bActiveOleObjectSh=FALSE;
+ bActiveChartSh=FALSE;
+ SetCurSubShell(OST_Pivot);
+ }
+ else
+ SetCurSubShell(OST_Cell);
+ }
+}
+
+void ScTabViewShell::SetAuditShell( BOOL bActive )
+{
+ bActiveAuditingSh = bActive;
+ if ( bActive )
+ {
+ bActiveDrawTextSh = bActiveDrawSh = FALSE;
+ bActiveDrawFormSh=FALSE;
+ bActiveGraphicSh=FALSE;
+ bActiveOleObjectSh=FALSE;
+ bActiveChartSh=FALSE;
+ SetCurSubShell(OST_Auditing);
+ }
+ else
+ SetCurSubShell(OST_Cell);
+}
+
+void ScTabViewShell::SetDrawFormShell( BOOL bActive )
+{
+ bActiveDrawFormSh = bActive;
+
+ if(bActiveDrawFormSh)
+ SetCurSubShell(OST_DrawForm);
+}
+void ScTabViewShell::SetChartShell( BOOL bActive )
+{
+ bActiveChartSh = bActive;
+
+ if(bActiveChartSh)
+ SetCurSubShell(OST_Chart);
+}
+
+void ScTabViewShell::SetGraphicShell( BOOL bActive )
+{
+ bActiveGraphicSh = bActive;
+
+ if(bActiveGraphicSh)
+ SetCurSubShell(OST_Graphic);
+}
+
+void ScTabViewShell::SetOleObjectShell( BOOL bActive )
+{
+ bActiveOleObjectSh = bActive;
+
+ if(bActiveOleObjectSh)
+ SetCurSubShell(OST_OleObject);
+ else
+ SetCurSubShell(OST_Cell);
+}
+
+void ScTabViewShell::SetEditShell(EditView* pView, BOOL bActive )
+{
+ if(bActive)
+ {
+ if (pEditShell)
+ pEditShell->SetEditView( pView );
+ else
+ pEditShell = new ScEditShell( pView, GetViewData() );
+
+ SetCurSubShell(OST_Editing);
+ }
+ else if(bActiveEditSh)
+ {
+ SetCurSubShell(OST_Cell);
+ }
+ bActiveEditSh = bActive;
+}
+
+void ScTabViewShell::SetCurSubShell(ObjectSelectionType eOST, BOOL bForce)
+{
+ ScViewData* pViewData = GetViewData();
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ SfxShell* pCurSubSh = NULL;
+
+ if(bDontSwitch) return;
+
+ if(!pCellShell) //Wird eh immer gebraucht.
+ {
+ pCellShell = new ScCellShell( GetViewData() );
+ pCellShell->SetRepeatTarget( &aTarget );
+ }
+
+ BOOL bPgBrk=pViewData->IsPagebreakMode();
+
+ if(bPgBrk && !pPageBreakShell)
+ {
+ pPageBreakShell = new ScPageBreakShell( this );
+ pPageBreakShell->SetRepeatTarget( &aTarget );
+ }
+
+
+ if ( eOST!=eCurOST || bForce )
+ {
+ if(eCurOST!=OST_NONE) RemoveSubShell();
+
+ if(pFormShell) AddSubShell(*pFormShell);
+
+
+ switch(eOST)
+ {
+ case OST_Cell:
+ {
+ AddSubShell(*pCellShell);
+ if(bPgBrk) AddSubShell(*pPageBreakShell);
+ }
+ break;
+ case OST_Editing:
+ {
+ AddSubShell(*pCellShell);
+ if(bPgBrk) AddSubShell(*pPageBreakShell);
+
+ if(pEditShell)
+ {
+ AddSubShell(*pEditShell);
+ }
+ }
+ break;
+ case OST_DrawText:
+ {
+ if ( !pDrawTextShell )
+ {
+ pDocSh->MakeDrawLayer();
+ pDrawTextShell = new ScDrawTextObjectBar( GetViewData() );
+ }
+ AddSubShell(*pDrawTextShell);
+ }
+ break;
+ case OST_Drawing:
+ {
+ if ( !pDrawShell )
+ {
+ pDocSh->MakeDrawLayer();
+ pDrawShell = new ScDrawShell( GetViewData() );
+ pDrawShell->SetRepeatTarget( &aTarget );
+ }
+ AddSubShell(*pDrawShell);
+ }
+ break;
+
+ case OST_DrawForm:
+ {
+ if ( !pDrawFormShell )
+ {
+ pDocSh->MakeDrawLayer();
+ pDrawFormShell = new ScDrawFormShell( GetViewData() );
+ pDrawFormShell->SetRepeatTarget( &aTarget );
+ }
+ AddSubShell(*pDrawFormShell);
+ }
+ break;
+
+ case OST_Chart:
+ {
+ if ( !pChartShell )
+ {
+ pDocSh->MakeDrawLayer();
+ pChartShell = new ScChartShell( GetViewData() );
+ pChartShell->SetRepeatTarget( &aTarget );
+ }
+ AddSubShell(*pChartShell);
+ }
+ break;
+
+ case OST_OleObject:
+ {
+ if ( !pOleObjectShell )
+ {
+ pDocSh->MakeDrawLayer();
+ pOleObjectShell = new ScOleObjectShell( GetViewData() );
+ pOleObjectShell->SetRepeatTarget( &aTarget );
+ }
+ AddSubShell(*pOleObjectShell);
+ }
+ break;
+
+ case OST_Graphic:
+ {
+ if ( !pGraphicShell)
+ {
+ pDocSh->MakeDrawLayer();
+ pGraphicShell = new ScGraphicShell( GetViewData() );
+ pGraphicShell->SetRepeatTarget( &aTarget );
+ }
+ AddSubShell(*pGraphicShell);
+ }
+ break;
+
+ case OST_Pivot:
+ {
+ AddSubShell(*pCellShell);
+ if(bPgBrk) AddSubShell(*pPageBreakShell);
+
+ if ( !pPivotShell )
+ {
+ pPivotShell = new ScPivotShell( this );
+ pPivotShell->SetRepeatTarget( &aTarget );
+ }
+ AddSubShell(*pPivotShell);
+ }
+ break;
+ case OST_Auditing:
+ {
+ AddSubShell(*pCellShell);
+ if(bPgBrk) AddSubShell(*pPageBreakShell);
+
+ if ( !pAuditingShell )
+ {
+ pDocSh->MakeDrawLayer(); // die Wartezeit lieber jetzt als beim Klick
+
+ pAuditingShell = new ScAuditingShell( GetViewData() );
+ pAuditingShell->SetRepeatTarget( &aTarget );
+ }
+ AddSubShell(*pAuditingShell);
+ }
+ break;
+ default:
+ DBG_ERROR("Falsche Shell angefordert");
+ break;
+ }
+ eCurOST=eOST;
+ }
+}
+
+ObjectSelectionType ScTabViewShell::GetCurObjectSelectionType()
+{
+ return eCurOST;
+}
+
+// GetMySubShell / SetMySubShell: altes Verhalten simulieren,
+// dass es nur eine SubShell gibt (nur innerhalb der 5 eignenen SubShells)
+
+SfxShell* ScTabViewShell::GetMySubShell() const
+{
+ // GetSubShell() war frueher const, und GetSubShell(USHORT) sollte es auch sein...
+
+ USHORT nPos = 0;
+ SfxShell* pSub = ((ScTabViewShell*)this)->GetSubShell(nPos);
+ while (pSub)
+ {
+ if ( pSub == pDrawShell || pSub == pDrawTextShell || pSub == pEditShell ||
+ pSub == pPivotShell || pSub == pAuditingShell || pSub == pDrawFormShell ||
+ pSub == pCellShell || pSub == pOleObjectShell|| pSub == pChartShell ||
+ pSub == pGraphicShell || pSub == pPageBreakShell)
+ return pSub; // gefunden
+
+ pSub = ((ScTabViewShell*)this)->GetSubShell(++nPos);
+ }
+ return NULL; // keine von meinen dabei
+}
+
+void ScTabViewShell::SetMySubShell( SfxShell* pShell )
+{
+ SfxShell* pOld = GetMySubShell();
+ if ( pOld != pShell )
+ {
+ if (pOld)
+ RemoveSubShell(pOld); // alte SubShell entfernen
+ if (pShell)
+ AddSubShell(*pShell); // neue setzen
+ }
+}
+
+BOOL ScTabViewShell::IsDrawTextShell() const
+{
+ return ( pDrawTextShell && ( GetMySubShell() == pDrawTextShell ) );
+}
+
+BOOL ScTabViewShell::IsAuditShell() const
+{
+ return ( pAuditingShell && ( GetMySubShell() == pAuditingShell ) );
+}
+
+void ScTabViewShell::SetDrawTextUndo( SfxUndoManager* pUndoMgr )
+{
+ // Default: Undo-Manager der DocShell
+ if (!pUndoMgr)
+ pUndoMgr = GetViewData()->GetDocShell()->GetUndoManager();
+
+ if (pDrawTextShell)
+ pDrawTextShell->SetUndoManager(pUndoMgr);
+ else
+ DBG_ERROR("SetDrawTextUndo ohne DrawTextShell");
+}
+
+//------------------------------------------------------------------
+
+ScTabViewShell* ScTabViewShell::GetActiveViewShell()
+{
+ return PTR_CAST(ScTabViewShell,Current());
+}
+
+//------------------------------------------------------------------
+
+SfxPrinter* __EXPORT ScTabViewShell::GetPrinter( BOOL bCreate )
+{
+ // Drucker ist immer da (wird fuer die FontListe schon beim Starten angelegt)
+ return GetViewData()->GetDocShell()->GetPrinter();
+}
+
+USHORT __EXPORT ScTabViewShell::SetPrinter( SfxPrinter *pNewPrinter, USHORT nDiffFlags )
+{
+ return GetViewData()->GetDocShell()->SetPrinter( pNewPrinter, nDiffFlags );
+}
+
+PrintDialog* __EXPORT ScTabViewShell::CreatePrintDialog( Window *pParent )
+{
+ ScDocShell* pDocShell = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocShell->GetDocument();
+
+ pDoc->SetPrintOptions(); // Optionen aus OFA am Printer setzen
+ SfxPrinter* pPrinter = GetPrinter();
+
+ String aStrRange;
+#ifndef VCL
+ PrintDialog* pDlg = new PrintDialog( pParent,
+ WinBits(WB_SVLOOK|WB_STDMODAL) );
+#else
+ PrintDialog* pDlg = new PrintDialog( pParent);
+#endif
+ USHORT i;
+ USHORT nTabCount = pDoc->GetTableCount();
+ long nDocPageMax = 0;
+
+ for ( i=0; i<nTabCount; i++ )
+ {
+ ScPrintFunc aPrintFunc( pDocShell, pPrinter, i );
+ nDocPageMax += aPrintFunc.GetTotalPages();
+ }
+
+ if ( nDocPageMax > 0 )
+ {
+ aStrRange = '1';
+ if ( nDocPageMax > 1 )
+ {
+ aStrRange += '-';
+ aStrRange += String::CreateFromInt32( nDocPageMax );
+ }
+ }
+
+ pDlg->SetRangeText ( aStrRange );
+ pDlg->EnableRange ( PRINTDIALOG_ALL );
+ pDlg->EnableRange ( PRINTDIALOG_SELECTION );
+ pDlg->EnableRange ( PRINTDIALOG_RANGE );
+ pDlg->SetFirstPage ( 1 );
+ pDlg->SetMinPage ( 1 );
+ pDlg->SetLastPage ( (USHORT)nDocPageMax );
+ pDlg->SetMaxPage ( (USHORT)nDocPageMax );
+ pDlg->EnableCollate ();
+
+ return pDlg;
+}
+
+void __EXPORT ScTabViewShell::PreparePrint( PrintDialog* pPrintDialog )
+{
+ ScDocShell* pDocShell = GetViewData()->GetDocShell();
+
+ SfxViewShell::PreparePrint( pPrintDialog );
+ pDocShell->PreparePrint( pPrintDialog, &GetViewData()->GetMarkData() );
+}
+
+ErrCode ScTabViewShell::DoPrint( SfxPrinter *pPrinter,
+ PrintDialog *pPrintDialog, BOOL bSilent )
+{
+ // #72527# if SID_PRINTDOCDIRECT is executed and there's a selection,
+ // ask if only the selection should be printed
+
+ const ScMarkData& rMarkData = GetViewData()->GetMarkData();
+ if ( !pPrintDialog && !bSilent && ( rMarkData.IsMarked() || rMarkData.IsMultiMarked() ) )
+ {
+ SvxPrtQryBox aQuery( GetDialogParent() );
+ short nBtn = aQuery.Execute();
+
+ if ( nBtn == RET_CANCEL )
+ return ERRCODE_IO_ABORT;
+
+ if ( nBtn == RET_OK )
+ bPrintSelected = TRUE;
+ }
+
+ // SfxViewShell::DoPrint calls Print (after StartJob etc.)
+ ErrCode nRet = SfxViewShell::DoPrint( pPrinter, pPrintDialog, bSilent );
+
+ bPrintSelected = FALSE;
+
+ return nRet;
+}
+
+USHORT __EXPORT ScTabViewShell::Print( SfxProgress& rProgress,
+ PrintDialog* pPrintDialog )
+{
+ ScDocShell* pDocShell = GetViewData()->GetDocShell();
+ pDocShell->GetDocument()->SetPrintOptions(); // Optionen aus OFA am Printer setzen
+
+ SfxViewShell::Print( rProgress, pPrintDialog );
+ pDocShell->Print( rProgress, pPrintDialog, &GetViewData()->GetMarkData(), bPrintSelected );
+
+ return 0;
+}
+
+void ScTabViewShell::StopEditShell()
+{
+ if ( pEditShell != NULL && !bDontSwitch )
+ SetEditShell(NULL, FALSE );
+}
+
+//------------------------------------------------------------------
+
+BOOL ScTabViewShell::TabKeyInput(const KeyEvent& rKEvt)
+{
+ ScModule* pScMod = SC_MOD();
+
+ SfxViewFrame* pThisFrame = GetViewFrame();
+ if ( pThisFrame->GetChildWindow( SID_OPENDLG_FUNCTION ) )
+ return FALSE;
+
+ KeyCode aCode = rKEvt.GetKeyCode();
+ BOOL bShift = aCode.IsShift();
+ BOOL bControl = aCode.IsMod1();
+ BOOL bAlt = aCode.IsMod2();
+ USHORT nCode = aCode.GetCode();
+ BOOL bUsed = FALSE;
+ BOOL bInPlace = pScMod->IsEditMode(); // Editengine bekommt alles
+ BOOL bAnyEdit = pScMod->IsInputMode(); // nur Zeichen & Backspace
+ BOOL bDraw = IsDrawTextEdit();
+
+ HideNoteMarker(); // Notiz-Anzeige
+
+ BOOL bHideCursor = ( nCode == KEY_RETURN && bInPlace ) ||
+ nCode == KEY_TAB;
+
+ if (bHideCursor)
+ HideAllCursors();
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ if ( pDoc )
+ pDoc->KeyInput( rKEvt ); // TimerDelays etc.
+
+ if( bInPlace )
+ {
+ bUsed = pScMod->InputKeyEvent( rKEvt ); // Eingabe
+ if( !bUsed )
+ bUsed = SfxViewShell::KeyInput( rKEvt ); // Acceleratoren
+ }
+ else if( bAnyEdit )
+ {
+ BOOL bIsType = FALSE;
+ USHORT nModi = aCode.GetModifier();
+ USHORT nGroup = aCode.GetGroup();
+
+ if ( nGroup == KEYGROUP_NUM || nGroup == KEYGROUP_ALPHA || nGroup == 0 )
+ if ( !bControl && !bAlt )
+ bIsType = TRUE;
+
+ if ( nGroup == KEYGROUP_MISC )
+ switch ( nCode )
+ {
+ case KEY_RETURN:
+ bIsType = bControl && !bAlt; // Control, Shift-Control-Return
+ if ( !bIsType && nModi == 0 )
+ {
+ // Will der InputHandler auch ein einfaches Return?
+
+ ScInputHandler* pHdl = pScMod->GetInputHdl(this);
+ bIsType = pHdl && pHdl->TakesReturn();
+ }
+ break;
+ case KEY_SPACE:
+ bIsType = !bControl && !bAlt; // ohne Modifier oder Shift-Space
+ break;
+ case KEY_ESCAPE:
+ case KEY_BACKSPACE:
+ bIsType = (nModi == 0); // nur ohne Modifier
+ break;
+ default:
+ bIsType = TRUE;
+ }
+
+ if( bIsType )
+ bUsed = pScMod->InputKeyEvent( rKEvt ); // Eingabe
+
+ if( !bUsed )
+ bUsed = SfxViewShell::KeyInput( rKEvt ); // Acceleratoren
+
+ if ( !bUsed && !bIsType && nCode != KEY_RETURN ) // Eingabe nochmal hinterher
+ bUsed = pScMod->InputKeyEvent( rKEvt );
+ }
+ else
+ {
+ // #51889# Spezialfall: Copy/Cut bei Mehrfachselektion -> Fehlermeldung
+ // (Slot ist disabled, SfxViewShell::KeyInput wuerde also kommentarlos verschluckt)
+ KeyFuncType eFunc = aCode.GetFunction();
+ if ( eFunc == KEYFUNC_COPY || eFunc == KEYFUNC_CUT )
+ {
+ ScRange aDummy;
+ if ( !GetViewData()->GetSimpleArea( aDummy, TRUE ) ) //! macht TRUE aerger ?
+ {
+ ErrorMessage(STR_NOMULTISELECT);
+ bUsed = TRUE;
+ }
+ }
+ if (!bUsed)
+ bUsed = SfxViewShell::KeyInput( rKEvt ); // Acceleratoren
+
+ // #74696# during inplace editing, some slots are handled by the
+ // 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()->ISA(SfxInPlaceFrame) && eFunc != KEYFUNC_DONTKNOW );
+
+ if( !bUsed && !bDraw && nCode != KEY_RETURN && !bParent )
+ bUsed = pScMod->InputKeyEvent( rKEvt, TRUE ); // Eingabe
+ }
+
+ if (!bInPlace && !bUsed && !bDraw)
+ {
+ switch (nCode)
+ {
+ case KEY_RETURN:
+ {
+ BOOL bNormal = !bControl && !bAlt;
+ if ( !bAnyEdit && bNormal )
+ {
+ // je nach Optionen mit Enter in den Edit-Modus schalten
+
+ const ScInputOptions& rOpt = pScMod->GetInputOptions();
+ if ( rOpt.GetEnterEdit() )
+ {
+ pScMod->SetInputMode( SC_INPUT_TABLE );
+ bUsed = TRUE;
+ }
+ }
+
+ BOOL bEditReturn = bControl && !bShift; // An Edit-Engine weiter
+ if ( !bUsed && !bEditReturn )
+ {
+ HideAllCursors();
+
+ BYTE nMode = SC_ENTER_NORMAL;
+ if ( bShift && bControl )
+ nMode = SC_ENTER_MATRIX;
+ else if ( bAlt )
+ nMode = SC_ENTER_BLOCK;
+ pScMod->InputEnterHandler(nMode);
+
+ if (nMode == SC_ENTER_NORMAL)
+ {
+ if( bShift )
+ SFX_DISPATCHER().Execute( SID_CURSORENTERUP,
+ SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD );
+ else
+ SFX_DISPATCHER().Execute( SID_CURSORENTERDOWN,
+ SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD );
+ }
+ else
+ UpdateInputHandler(TRUE);
+
+ ShowAllCursors();
+
+ // hier kein UpdateInputHandler, weil bei Referenzeingabe auf ein
+ // anderes Dokument diese ViewShell nicht die ist, auf der eingegeben
+ // wird!
+
+ bUsed = TRUE;
+ }
+ }
+ break;
+ }
+ }
+
+ // Alt-Cursortasten hart codiert, weil Alt nicht konfigurierbar ist
+
+ if ( !bUsed && bAlt && !bControl )
+ {
+ USHORT nSlotId = 0;
+ switch (nCode)
+ {
+ case KEY_UP:
+ ModifyCellSize( DIR_TOP, bShift );
+ bUsed = TRUE;
+ break;
+ case KEY_DOWN:
+ ModifyCellSize( DIR_BOTTOM, bShift );
+ bUsed = TRUE;
+ break;
+ case KEY_LEFT:
+ ModifyCellSize( DIR_LEFT, bShift );
+ bUsed = TRUE;
+ break;
+ case KEY_RIGHT:
+ ModifyCellSize( DIR_RIGHT, bShift );
+ bUsed = TRUE;
+ break;
+ case KEY_PAGEUP:
+ nSlotId = bShift ? SID_CURSORPAGELEFT_SEL : SID_CURSORPAGELEFT_;
+ break;
+ case KEY_PAGEDOWN:
+ nSlotId = bShift ? SID_CURSORPAGERIGHT_SEL : SID_CURSORPAGERIGHT_;
+ break;
+ }
+ if ( nSlotId )
+ {
+ SFX_DISPATCHER().Execute( nSlotId, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD );
+ bUsed = TRUE;
+ }
+ }
+
+ if (bHideCursor)
+ ShowAllCursors();
+
+ return bUsed;
+}
+
+BOOL ScTabViewShell::SfxKeyInput(const KeyEvent& rKeyEvent)
+{
+ return SfxViewShell::KeyInput( rKeyEvent );
+}
+
+FASTBOOL __EXPORT ScTabViewShell::KeyInput( const KeyEvent &rKeyEvent )
+{
+// return SfxViewShell::KeyInput( rKeyEvent );
+ return TabKeyInput( rKeyEvent );
+}
+
+//------------------------------------------------------------------
+
+// SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_DISABLE_ACCELS ),
+
+#define __INIT_ScTabViewShell \
+ SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_CAN_PRINT ), \
+ nDrawSfxId(0), \
+ nCtrlSfxId(USHRT_MAX), \
+ eCurOST(OST_NONE), \
+ nFormSfxId(USHRT_MAX), \
+ pCellShell(NULL), \
+ pPageBreakShell(NULL), \
+ pDrawShell(NULL), \
+ pDrawFormShell(NULL), \
+ pOleObjectShell(NULL), \
+ pChartShell(NULL), \
+ pGraphicShell(NULL), \
+ pDrawTextShell(NULL), \
+ pEditShell(NULL), \
+ pPivotShell(NULL), \
+ pAuditingShell(NULL), \
+ pFormShell(NULL), \
+ pInputHandler(NULL), \
+ pCurFrameLine(NULL), \
+ bActiveChartSh(FALSE), \
+ bActiveDrawSh(FALSE), \
+ bActiveDrawTextSh(FALSE), \
+ bActiveGraphicSh(FALSE), \
+ bActivePivotSh(FALSE), \
+ bActiveAuditingSh(FALSE), \
+ bActiveDrawFormSh(FALSE), \
+ bActiveOleObjectSh(FALSE), \
+ bDontSwitch(FALSE), \
+ bInFormatDialog(FALSE), \
+ bPrintSelected(FALSE), \
+ bReadOnly(FALSE), \
+ pScSbxObject(NULL), \
+ bChartAreaValid(FALSE), \
+ bChartDlgIsEdit(FALSE), \
+ pDialogDPObject(NULL), \
+ aTarget( this )
+
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::Construct()
+{
+ SfxApplication* pSfxApp = SFX_APP();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+
+ bReadOnly = pDocSh->IsReadOnly();
+
+ SetName( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("View")) ); // fuer SBX
+ Color aColBlack( COL_BLACK );
+// SetPool( &pSfxApp->GetPool() );
+ SetPool( &SC_MOD()->GetPool() );
+ SetWindow( GetActiveWin() );
+
+ pCurFrameLine = new SvxBorderLine( &aColBlack, 20, 0, 0 );
+ pPivotSource = new ScArea;
+ StartListening(*GetViewData()->GetDocShell());
+ StartListening(*GetViewFrame());
+ StartListening(*pSfxApp,TRUE); // SfxViewShell hoert da schon zu?
+
+ SfxViewFrame* pFirst = SfxViewFrame::GetFirst(pDocSh);
+ BOOL bFirstView = !pFirst
+ || (pFirst == GetViewFrame() && !SfxViewFrame::GetNext(*pFirst,pDocSh));
+
+ if ( pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
+ {
+ Rectangle aVisArea = ((SfxInPlaceObject*)pDocSh)->GetVisArea();
+
+ USHORT nVisTab = pDoc->GetVisibleTab();
+ if (!pDoc->HasTable(nVisTab))
+ {
+ nVisTab = 0;
+ pDoc->SetVisibleTab(nVisTab);
+ }
+ SetTabNo( nVisTab );
+ GetViewData()->SetScreenPos( aVisArea.TopLeft() ); // richtige Stelle zeigen
+
+ if ( GetViewFrame()->ISA(SfxInPlaceFrame) ) // inplace
+ {
+ pDocSh->SetInplace( TRUE ); // schon so initialisiert
+ if (pDoc->IsEmbedded())
+ pDoc->ResetEmbedded(); // keine blaue Markierung
+ }
+ else if ( bFirstView )
+ {
+ pDocSh->SetInplace( FALSE );
+ GetViewData()->SetZoom( // PPT neu berechnen
+ GetViewData()->GetZoomX(),
+ GetViewData()->GetZoomY());
+ if (!pDoc->IsEmbedded())
+ pDoc->SetEmbedded( aVisArea ); // VisArea markieren
+ }
+ }
+
+ // ViewInputHandler
+ // #48721# jeder Task hat neuerdings sein eigenes InputWindow,
+ // darum muesste eigentlich entweder jeder Task seinen InputHandler bekommen,
+ // oder das InputWindow muesste sich beim App-InputHandler anmelden, wenn der
+ // Task aktiv wird, oder das InputWindow muesste sich den InputHandler selbst
+ // anlegen (dann immer ueber das InputWindow suchen, und nur wenn das nicht da
+ // ist, den InputHandler von der App nehmen).
+ // Als Sofortloesung bekommt erstmal jede View ihren Inputhandler, das gibt
+ // nur noch Probleme, wenn zwei Views in einem Task-Fenster sind.
+
+ pInputHandler = new ScInputHandler;
+
+ // Alte Version:
+ // if ( !GetViewFrame()->ISA(SfxTopViewFrame) ) // OLE oder Plug-In
+ // pInputHandler = new ScInputHandler;
+
+ // FormShell vor MakeDrawView anlegen, damit die DrawView auf jeden Fall
+ // an der FormShell angemeldet werden kann
+ // Gepusht wird die FormShell im ersten Activate
+ pFormShell = new FmFormShell(this);
+
+ // DrawView darf nicht im TabView - ctor angelegt werden,
+ // wenn die ViewShell noch nicht kostruiert ist...
+ if (pDoc->GetDrawLayer())
+ MakeDrawView();
+ ViewOptionsHasChanged(FALSE); // legt auch evtl. DrawView an
+
+ SetUndoManager( pDocSh->GetUndoManager() );
+ pFormShell->SetUndoManager( pDocSh->GetUndoManager() );
+ SetRepeatTarget( &aTarget );
+ pFormShell->SetRepeatTarget( &aTarget );
+ SetHelpId( HID_SCSHELL_TABVWSH );
+
+ if ( bFirstView )
+ { // erste View?
+
+ // Tabellen anhaengen? (nicht bei OLE)
+ if ( pDocSh->IsEmpty() &&
+ pDocSh->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
+ {
+ USHORT nInitTabCount = 3; //! konfigurierbar !!!
+ for (USHORT i=1; i<nInitTabCount; i++)
+ pDoc->MakeTable(i);
+ }
+
+ const ScExtDocOptions* pExtOpt = pDoc->GetExtDocOptions();
+ if (pExtOpt)
+ {
+ GetViewData()->ReadExtOptions(*pExtOpt); // Excel-View Optionen
+ SetTabNo( GetViewData()->GetTabNo(), TRUE );
+ //! alles von ReadUserData auch hier
+ }
+
+ // Link-Update nicht verschachteln
+ if ( pDocSh->GetCreateMode() != SFX_CREATE_MODE_INTERNAL )
+ {
+ BOOL bLink = FALSE; // Links updaten
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nTabCount && !bLink; i++)
+ if (pDoc->IsLinked(i))
+ bLink = TRUE;
+ if (!bLink)
+ if (pDoc->HasDdeLinks() || pDoc->HasAreaLinks())
+ bLink = TRUE;
+ if (bLink)
+ {
+ if ( !pFirst )
+ pFirst = GetViewFrame();
+
+ if(SC_MOD()->GetCurRefDlgId()==0)
+ {
+ pFirst->GetDispatcher()->Execute( SID_UPDATETABLINKS,
+ SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
+ }
+ }
+
+ BOOL bReImport = FALSE; // importierte Daten aktualisieren
+ ScDBCollection* pDBColl = pDoc->GetDBCollection();
+ if ( pDBColl )
+ {
+ USHORT nCount = pDBColl->GetCount();
+ for (USHORT i=0; i<nCount && !bReImport; i++)
+ {
+ ScDBData* pData = (*pDBColl)[i];
+ if ( pData->IsStripData() &&
+ pData->HasImportParam() && !pData->HasImportSelection() )
+ bReImport = TRUE;
+ }
+ }
+ if (bReImport)
+ {
+ if ( !pFirst )
+ pFirst = GetViewFrame();
+ if(SC_MOD()->GetCurRefDlgId()==0)
+ {
+ pFirst->GetDispatcher()->Execute( SID_REIMPORT_AFTER_LOAD,
+ SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
+ }
+ }
+ }
+ }
+
+ UpdateAutoFillMark();
+
+ bFirstActivate = TRUE; // NavigatorUpdate aufschieben bis Activate()
+}
+
+//------------------------------------------------------------------
+
+ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
+ const ScTabViewShell& rWin ) :
+ __INIT_ScTabViewShell,
+ ScDBFunc( &pViewFrame->GetWindow(), rWin, this )
+{
+ Construct();
+
+ UpdatePageBreakData();
+
+ uno::Reference<frame::XFrame> xFrame = pViewFrame->GetFrame()->GetFrameInterface();
+ if (xFrame.is())
+ xFrame->setComponent( uno::Reference<awt::XWindow>(), new ScTabViewObj( this ) );
+
+ SetCurSubShell(OST_Cell);
+}
+
+//------------------------------------------------------------------
+
+ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
+ SfxViewShell* pOldSh ) :
+ __INIT_ScTabViewShell,
+ ScDBFunc( &pViewFrame->GetWindow(), (ScDocShell&)*pViewFrame->GetObjectShell(), this )
+{
+ const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
+
+ Construct();
+
+ Fraction aFract( rAppOpt.GetZoom(), 100 );
+ SetZoom( aFract, aFract );
+ SetZoomType( rAppOpt.GetZoomType() );
+
+ uno::Reference<frame::XFrame> xFrame = pViewFrame->GetFrame()->GetFrameInterface();
+ if (xFrame.is())
+ xFrame->setComponent( uno::Reference<awt::XWindow>(), new ScTabViewObj( this ) );
+
+ SetCurSubShell(OST_Cell);
+
+ // if switching back from print preview,
+ // restore the view settings that were active when creating the preview
+
+ if ( pOldSh && pOldSh->ISA( ScPreviewShell ) )
+ {
+ String aOldData = ((ScPreviewShell*)pOldSh)->GetSourceData();
+ if ( aOldData.Len() )
+ {
+ // restore old view settings
+ // (DoReadUserData also sets SubShell, current Window etc.)
+ DoReadUserData( aOldData );
+ }
+ }
+}
+
+#undef __INIT_ScTabViewShell
+
+//------------------------------------------------------------------
+
+__EXPORT ScTabViewShell::~ScTabViewShell()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ EndListening(*pDocSh);
+ EndListening(*GetViewFrame());
+
+ SC_MOD()->ViewShellGone(this);
+
+ RemoveSubShell(); // alle
+ SetWindow(0);
+
+ // #54104# alles auf NULL, falls aus dem TabView-dtor noch darauf zugegriffen wird
+ //! (soll eigentlich nicht !??!?!)
+
+ DELETEZ(pCellShell);
+ DELETEZ(pPageBreakShell);
+ DELETEZ(pDrawShell);
+ DELETEZ(pDrawFormShell);
+ DELETEZ(pOleObjectShell);
+ DELETEZ(pChartShell);
+ DELETEZ(pGraphicShell);
+ DELETEZ(pDrawTextShell);
+ DELETEZ(pEditShell);
+ DELETEZ(pPivotShell);
+ DELETEZ(pAuditingShell);
+ DELETEZ(pCurFrameLine);
+ DELETEZ(pInputHandler);
+ DELETEZ(pPivotSource);
+ DELETEZ(pDialogDPObject);
+
+ DELETEZ(pFormShell);
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::SetDialogDPObject( const ScDPObject* pObj )
+{
+ delete pDialogDPObject;
+ if (pObj)
+ pDialogDPObject = new ScDPObject( *pObj );
+ else
+ pDialogDPObject = NULL;
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::FillFieldData( ScHeaderFieldData& rData )
+{
+ ScDocShell* pDocShell = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocShell->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ pDoc->GetName( nTab, rData.aTabName );
+
+ rData.aTitle = pDocShell->GetTitle();
+ rData.aLongDocName = pDocShell->GetMedium()->GetName();
+ if ( !rData.aLongDocName.Len() )
+ rData.aLongDocName = rData.aTitle;
+ rData.aShortDocName = INetURLObject( rData.aLongDocName ).GetName();
+ rData.nPageNo = 1;
+ rData.nTotalPages = 99;
+
+ // eNumType kennt der Dialog selber
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::SetChartArea( const ScRangeListRef& rSource, const Rectangle& rDest )
+{
+ bChartAreaValid = TRUE;
+ aChartSource = rSource;
+ aChartPos = rDest;
+ nChartDestTab = GetViewData()->GetTabNo();
+}
+
+void ScTabViewShell::ResetChartArea()
+{
+ bChartAreaValid = FALSE;
+}
+
+BOOL ScTabViewShell::GetChartArea( ScRangeListRef& rSource, Rectangle& rDest, USHORT& rTab ) const
+{
+ rSource = aChartSource;
+ rDest = aChartPos;
+ rTab = nChartDestTab;
+ return bChartAreaValid;
+}
+
+BOOL ScTabViewShell::IsChartDlgEdit() const
+{
+ return bChartDlgIsEdit;
+}
+
+const String& ScTabViewShell::GetEditChartName() const
+{
+ return aEditChartName;
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::ExecTbx( SfxRequest& rReq )
+{
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+ const SfxPoolItem* pItem = NULL;
+ if ( pReqArgs )
+ pReqArgs->GetItemState( nSlot, TRUE, &pItem );
+
+ switch ( nSlot )
+ {
+ case SID_TBXCTL_INSERT:
+ if ( pItem )
+ nInsertCtrlState = ((const SfxUInt16Item*)pItem)->GetValue();
+ break;
+ case SID_TBXCTL_INSCELLS:
+ if ( pItem )
+ nInsCellsCtrlState = ((const SfxUInt16Item*)pItem)->GetValue();
+ break;
+ case SID_TBXCTL_INSOBJ:
+ if ( pItem )
+ nInsObjCtrlState = ((const SfxUInt16Item*)pItem)->GetValue();
+ break;
+ default:
+ DBG_ERROR("Slot im Wald");
+ }
+ SFX_BINDINGS().Invalidate( nSlot );
+}
+
+void ScTabViewShell::GetTbxState( SfxItemSet& rSet )
+{
+ rSet.Put( SfxUInt16Item( SID_TBXCTL_INSERT, nInsertCtrlState ) );
+ rSet.Put( SfxUInt16Item( SID_TBXCTL_INSCELLS, nInsCellsCtrlState ) );
+
+ // ohne installiertes Chart darf Chart nicht Default sein...
+ if ( nInsObjCtrlState == SID_DRAW_CHART && !SFX_APP()->HasFeature(SFX_FEATURE_SCHART) )
+ nInsObjCtrlState = SID_INSERT_OBJECT;
+
+ rSet.Put( SfxUInt16Item( SID_TBXCTL_INSOBJ, nInsObjCtrlState ) );
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/tabvwsh5.cxx b/sc/source/ui/view/tabvwsh5.cxx
new file mode 100644
index 000000000000..8c76947bd5cb
--- /dev/null
+++ b/sc/source/ui/view/tabvwsh5.cxx
@@ -0,0 +1,459 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwsh5.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+#define _ZFORLIST_DECLARE_TABLE
+#include "scitems.hxx"
+#include <svtools/smplhint.hxx>
+#include <svtools/zforlist.hxx>
+#include <svx/numfmtsh.hxx>
+#include <svx/numinf.hxx>
+#include <svx/svxids.hrc>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/objsh.hxx>
+
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+#include "global.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "globstr.hrc"
+#include "scmod.hxx"
+#include "uiitems.hxx"
+#include "editsh.hxx"
+#include "hints.hxx"
+
+
+//==================================================================
+
+void __EXPORT ScTabViewShell::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType )
+{
+ if (rHint.ISA(SfxSimpleHint)) // ohne Parameter
+ {
+ ULONG nSlot = ((SfxSimpleHint&)rHint).GetId();
+ switch ( nSlot )
+ {
+ case FID_DATACHANGED:
+ UpdateFormulas();
+ break;
+
+ case FID_REFMODECHANGED:
+ {
+ BOOL bRefMode = SC_MOD()->IsFormulaMode();
+ if (!bRefMode)
+ StopRefMode();
+ else
+ {
+ GetSelEngine()->Reset();
+ GetFunctionSet()->SetAnchorFlag(TRUE);
+ // AnchorFlag, damit gleich mit Control angehaengt werden kann
+ }
+ }
+ break;
+
+ case FID_KILLEDITVIEW:
+ case FID_KILLEDITVIEW_NOPAINT:
+ StopEditShell();
+ KillEditView( nSlot == FID_KILLEDITVIEW_NOPAINT );
+ break;
+
+ case SFX_HINT_DOCCHANGED:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ if (!pDoc->HasTable( GetViewData()->GetTabNo() ))
+ {
+ SetTabNo(0);
+ }
+ }
+ break;
+
+ case SC_HINT_DRWLAYER_NEW:
+ MakeDrawView();
+ break;
+
+ case SC_HINT_DOC_SAVED:
+ {
+ // beim "Save as" kann ein vorher schreibgeschuetztes Dokument
+ // bearbeitbar werden, deshalb die Layer-Locks neu (#39884#)
+ // (Invalidate etc. passiert schon vom Sfx her)
+ // #42091# bei SID_EDITDOC kommt kein SFX_HINT_TITLECHANGED, darum
+ // der eigene Hint aus DoSaveCompleted
+ //! was ist mit SFX_HINT_SAVECOMPLETED ?
+
+ UpdateLayerLocks();
+
+ // #54891# Design-Modus bei jedem Speichern anzupassen, waere zuviel
+ // (beim Speichern unter gleichem Namen soll er unveraendert bleiben)
+ // Darum nur bei SFX_HINT_MODECHANGED (vom ViewFrame)
+ }
+ break;
+
+ case SFX_HINT_MODECHANGED:
+ // #54891#/#58510# Da man sich nicht mehr darauf verlassen kann, woher
+ // dieser Hint kommt, den Design-Modus immer dann umschalten, wenn der
+ // ReadOnly-Status sich wirklich geaendert hat:
+
+ if ( GetViewData()->GetSfxDocShell()->IsReadOnly() != bReadOnly )
+ {
+ bReadOnly = GetViewData()->GetSfxDocShell()->IsReadOnly();
+
+ SfxBoolItem aItem( SID_FM_DESIGN_MODE, !bReadOnly);
+ SFX_DISPATCHER().Execute( SID_FM_DESIGN_MODE, SFX_CALLMODE_ASYNCHRON,
+ &aItem, 0L );
+ }
+ break;
+
+ case SC_HINT_SHOWRANGEFINDER:
+ PaintRangeFinder();
+ break;
+
+ case SC_HINT_FORCESETTAB:
+ SetTabNo( GetViewData()->GetTabNo(), TRUE );
+ break;
+
+ default:
+ break;
+ }
+ }
+ else if (rHint.ISA(ScPaintHint)) // neu zeichnen
+ {
+ ScPaintHint* pHint = (ScPaintHint*) &rHint;
+ USHORT nParts = pHint->GetParts();
+ USHORT nTab = GetViewData()->GetTabNo();
+ if (pHint->GetStartTab() <= nTab && pHint->GetEndTab() >= nTab)
+ {
+ if (nParts & PAINT_EXTRAS) // zuerst, falls Tabelle weg ist !!!
+ if (PaintExtras())
+ nParts = PAINT_ALL;
+
+ if (nParts & PAINT_SIZE)
+ RepeatResize(); //! InvalidateBorder ???
+ if (nParts & PAINT_GRID)
+ PaintArea( pHint->GetStartCol(), pHint->GetStartRow(),
+ pHint->GetEndCol(), pHint->GetEndRow() );
+ if (nParts & PAINT_MARKS)
+ PaintArea( pHint->GetStartCol(), pHint->GetStartRow(),
+ pHint->GetEndCol(), pHint->GetEndRow(), SC_UPDATE_MARKS );
+ if (nParts & PAINT_LEFT)
+ PaintLeftArea( pHint->GetStartRow(), pHint->GetEndRow() );
+ if (nParts & PAINT_TOP)
+ PaintTopArea( pHint->GetStartCol(), pHint->GetEndCol() );
+ if (nParts & PAINT_INVERT)
+ InvertBlockMark( pHint->GetStartCol(), pHint->GetStartRow(),
+ pHint->GetEndCol(), pHint->GetEndRow() );
+ }
+ }
+ else if (rHint.ISA(ScEditViewHint)) // Edit-View anlegen
+ {
+ // ScEditViewHint kommt nur an aktiver View an
+
+ ScEditViewHint* pHint = (ScEditViewHint*) &rHint;
+ USHORT nTab = GetViewData()->GetTabNo();
+ if ( pHint->GetTab() == nTab )
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nCol = pHint->GetCol();
+ USHORT nRow = pHint->GetRow();
+#if 0
+// Abfrage ist ueberfluessig, passiert bereits in ScInputHandler StartTable
+// if (pDoc->IsSelectionOrBlockEditable( nTab, nCol,nRow, nCol,nRow ))
+#endif
+ {
+ MakeEditView( pHint->GetEngine(), nCol, nRow );
+
+ StopEditShell(); // sollte nicht gesetzt sein
+
+ ScSplitPos eActive = GetViewData()->GetActivePart();
+ if ( GetViewData()->HasEditView(eActive) )
+ {
+ // MakeEditView geht schief, wenn der Cursor ausserhalb des
+ // Bildschirms steht. GetEditView gibt dann eine nicht aktive
+ // View zurueck, darum die Abfrage HasEditView.
+
+ EditView* pView = GetViewData()->GetEditView(eActive); // ist nicht 0
+
+ SetEditShell(pView ,TRUE);
+ }
+ }
+#if 0
+// else
+// if (GetViewData()->IsActive())
+// ErrorMessage(STR_PROTECTIONERR);
+#endif
+ }
+ }
+ else if (rHint.ISA(ScTablesHint)) // Tabelle eingefuegt / geloescht
+ {
+ // aktuelle Tabelle zuerst holen (kann bei DeleteTab an ViewData geaendert werden)
+ USHORT nActiveTab = GetViewData()->GetTabNo();
+
+ const ScTablesHint& rTabHint = (const ScTablesHint&)rHint;
+ USHORT nTab1 = rTabHint.GetTab1();
+ USHORT nTab2 = rTabHint.GetTab2();
+ USHORT nId = rTabHint.GetId();
+ switch (nId)
+ {
+ case SC_TAB_INSERTED:
+ GetViewData()->InsertTab( nTab1 );
+ break;
+ case SC_TAB_DELETED:
+ GetViewData()->DeleteTab( nTab1 );
+ break;
+ case SC_TAB_MOVED:
+ GetViewData()->MoveTab( nTab1, nTab2 );
+ break;
+ case SC_TAB_COPIED:
+ GetViewData()->CopyTab( nTab1, nTab2 );
+ break;
+ case SC_TAB_HIDDEN:
+ break;
+ default:
+ DBG_ERROR("unbekannter ScTablesHint");
+ }
+
+ // hier keine Abfrage auf IsActive() mehr, weil die Aktion von Basic ausgehen
+ // kann und dann auch die aktive View umgeschaltet werden muss.
+
+ USHORT nNewTab = nActiveTab;
+ BOOL bForce = FALSE;
+ switch (nId)
+ {
+ case SC_TAB_INSERTED:
+ if ( nTab1 <= nNewTab ) // vorher eingefuegt
+ ++nNewTab;
+ break;
+ case SC_TAB_DELETED:
+ if ( nTab1 < nNewTab ) // vorher geloescht
+ --nNewTab;
+ else if ( nTab1 == nNewTab ) // aktuelle geloescht
+ bForce = TRUE;
+ break;
+ case SC_TAB_MOVED:
+ if ( nNewTab == nTab1 ) // verschobene Tabelle
+ nNewTab = nTab2;
+ else if ( nTab1 < nTab2 ) // nach hinten verschoben
+ {
+ if ( nNewTab > nTab1 && nNewTab <= nTab2 ) // nachrueckender Bereich
+ --nNewTab;
+ }
+ else // nach vorne verschoben
+ {
+ if ( nNewTab >= nTab2 && nNewTab < nTab1 ) // nachrueckender Bereich
+ ++nNewTab;
+ }
+ break;
+ case SC_TAB_COPIED:
+ if ( nNewTab >= nTab2 ) // vorher eingefuegt
+ ++nNewTab;
+ break;
+ case SC_TAB_HIDDEN:
+ if ( nTab1 == nNewTab ) // aktuelle ausgeblendet
+ bForce = TRUE;
+ break;
+ }
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ if ( nNewTab >= pDoc->GetTableCount() )
+ nNewTab = pDoc->GetTableCount() - 1;
+
+ SetTabNo( nNewTab, bForce );
+ }
+ else if (rHint.ISA(ScIndexHint))
+ {
+ const ScIndexHint& rIndexHint = (const ScIndexHint&)rHint;
+ USHORT nId = rIndexHint.GetId();
+ USHORT nIndex = rIndexHint.GetIndex();
+ switch (nId)
+ {
+ case SC_HINT_SHOWRANGEFINDER:
+ PaintRangeFinder( nIndex );
+ break;
+ }
+ }
+
+ SfxViewShell::SFX_NOTIFY( rBC, rBCType, rHint, rHintType );
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::MakeNumberInfoItem( ScDocument* pDoc,
+ ScViewData* pViewData,
+ SvxNumberInfoItem** ppItem )
+{
+ //------------------------------
+ // NumberInfo-Item konstruieren:
+ //------------------------------
+ ScBaseCell* pCell = NULL;
+ SvxNumberValueType eValType = SVX_VALUE_TYPE_UNDEFINED;
+ double nCellValue = 0;
+ String aCellString;
+
+ pDoc->GetCell( pViewData->GetCurX(),
+ pViewData->GetCurY(),
+ pViewData->GetTabNo(),
+ pCell );
+
+ if ( pCell )
+ {
+ switch ( pCell->GetCellType() )
+ {
+ case CELLTYPE_VALUE:
+ {
+ nCellValue = ((ScValueCell*)pCell)->GetValue();
+ eValType = SVX_VALUE_TYPE_NUMBER;
+ aCellString.Erase();
+ }
+ break;
+
+ case CELLTYPE_STRING:
+ {
+ ((ScStringCell*)pCell)->GetString( aCellString );
+ eValType = SVX_VALUE_TYPE_STRING;
+ }
+ break;
+
+ case CELLTYPE_FORMULA:
+ {
+ if ( ((ScFormulaCell*)pCell)->IsValue() )
+ {
+ nCellValue = ((ScFormulaCell*)pCell)->GetValue();
+ eValType = SVX_VALUE_TYPE_NUMBER;
+ }
+ else
+ {
+ nCellValue = 0;
+ eValType = SVX_VALUE_TYPE_UNDEFINED;
+ }
+ aCellString.Erase();
+ }
+ break;
+
+ default:
+ nCellValue = 0;
+ eValType = SVX_VALUE_TYPE_UNDEFINED;
+ aCellString.Erase();
+ }
+ }
+ else // Zelle noch leer (== nicht erzeugt)
+ {
+ nCellValue = 0;
+ eValType = SVX_VALUE_TYPE_UNDEFINED;
+ aCellString.Erase();
+ }
+
+ switch ( eValType )
+ {
+ case SVX_VALUE_TYPE_STRING:
+ *ppItem = new SvxNumberInfoItem(
+ pDoc->GetFormatTable(),
+ aCellString,
+ SID_ATTR_NUMBERFORMAT_INFO );
+ break;
+
+ case SVX_VALUE_TYPE_NUMBER:
+ *ppItem = new SvxNumberInfoItem(
+ pDoc->GetFormatTable(),
+ nCellValue,
+ SID_ATTR_NUMBERFORMAT_INFO );
+ break;
+
+ case SVX_VALUE_TYPE_UNDEFINED:
+ default:
+ *ppItem = new SvxNumberInfoItem(
+ pDoc->GetFormatTable(),
+ (const USHORT)
+ SID_ATTR_NUMBERFORMAT_INFO );
+ }
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::UpdateNumberFormatter(
+ ScDocument* pDoc,
+ const SvxNumberInfoItem& rInfoItem )
+{
+ const ULONG nDelCount = rInfoItem.GetDelCount();
+
+ if ( nDelCount > 0 )
+ {
+ const ULONG* pDelArr = rInfoItem.GetDelArray();
+
+ for ( USHORT i=0; i<nDelCount; i++ )
+ rInfoItem.GetNumberFormatter()->DeleteEntry( pDelArr[i] );
+ }
+
+ // sollte besser UpdateNumberFormats() heissen ?
+ pDoc->DeleteNumberFormat( rInfoItem.GetDelArray(),
+ rInfoItem.GetDelCount() );
+}
+
+
+
+
+
+
diff --git a/sc/source/ui/view/tabvwsh8.cxx b/sc/source/ui/view/tabvwsh8.cxx
new file mode 100644
index 000000000000..156ee6d70aba
--- /dev/null
+++ b/sc/source/ui/view/tabvwsh8.cxx
@@ -0,0 +1,128 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwsh8.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/boxitem.hxx>
+
+#include "tabvwsh.hxx"
+#include "document.hxx"
+
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::SetDefaultFrameLine( const SvxBorderLine* pLine )
+{
+ if ( pLine )
+ {
+ delete pCurFrameLine;
+ pCurFrameLine = new SvxBorderLine( &pLine->GetColor(),
+ pLine->GetOutWidth(),
+ pLine->GetInWidth(),
+ pLine->GetDistance() );
+ }
+ else if ( pCurFrameLine )
+ {
+ delete pCurFrameLine;
+ pCurFrameLine = NULL;
+ }
+}
+
+//------------------------------------------------------------------
+
+BOOL __EXPORT ScTabViewShell::HasSelection( BOOL bText ) const
+{
+ BOOL bHas = FALSE;
+ ScViewData* pData = (ScViewData*)GetViewData(); // const weggecasted
+ if ( bText )
+ {
+ // Text enthalten: Anzahl2 >= 1
+ ScDocument* pDoc = pData->GetDocument();
+ ScMarkData& rMark = pData->GetMarkData();
+ ScAddress aCursor( pData->GetCurX(), pData->GetCurX(), pData->GetTabNo() );
+ double fVal = 0.0;
+ if ( pDoc->GetSelectionFunction( SUBTOTAL_FUNC_CNT2, aCursor, rMark, fVal ) )
+ bHas = ( fVal > 0.5 );
+ }
+ else
+ {
+ ScRange aRange;
+ if ( pData->GetSimpleArea( aRange ) )
+ bHas = ( aRange.aStart != aRange.aEnd ); // mehr als 1 Zelle
+ else
+ bHas = TRUE; // Mehrfachselektion
+ }
+ return bHas;
+}
+
+//------------------------------------------------------------------
+
+
+
+
+
diff --git a/sc/source/ui/view/tabvwsh9.cxx b/sc/source/ui/view/tabvwsh9.cxx
new file mode 100644
index 000000000000..f53b2038768f
--- /dev/null
+++ b/sc/source/ui/view/tabvwsh9.cxx
@@ -0,0 +1,563 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwsh9.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX ***
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX ***
+//#define _SVTREEBOX_HXX ***
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+//#define _SFXDOCINF_HXX ***
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+#define _SFXDISPATCH_HXX //???
+//#define _SFXMSG_HXX ***
+//#define _SFXOBJFACE_HXX ***
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+//#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX ***
+//#define _SFXITEMSET_HXX ***
+#define _SFXITEMITER_HXX
+//#define _SFX_WHITER_HXX ***
+#define _SFXPOOLCACH_HXX
+#define _AEITEM_HXX //???
+#define _SFXRNGITEM_HXX
+#define _SFXSLSTITM_HXX //???
+#define _SFXSTYLE_HXX
+
+//sfxdlg.hxx
+//#define _SFXDLG_HXX ***
+//#define _SFXTABDLG_HXX ***
+//#define _BASEDLGS_HXX ***
+#define _DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+//#define _SFXDOCKWIN_HXX ***
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+
+//sfxdoc.hxx
+//#define _SFXDOC_HXX ***
+//#define _SFX_OBJSH_HXX ***
+//#define _SFX_CLIENTSH_HXX ***
+#define _SFX_DOCFILT_HACK_HXX
+#define _SFX_FCONTNR_HXX
+#define _SFXDOCFILE_HXX
+//#define _SFXFRAME_HXX ***
+//#define _SFXVIEWFRM_HXX ***
+//#define _SFXVIEWSH_HXX ***
+#define _MDIFRM_HXX
+#define _SFX_IPFRM_HXX
+#define _SFX_INTERNO_HXX
+#define _FSETOBJSH_HXX
+
+//xout.hxx
+//#define _XENUM_HXX ***
+//#define _XPOLY_HXX ***
+//#define _XATTR_HXX ***
+#define _XOUTX_HXX
+//#define _XPOOL_HXX ***
+//#define _XTABLE_HXX ***
+
+//si.hxx
+//#define _SI_HXX ***
+#define _SIDLL_HXX
+#define _VCATTR_HXX
+#define _VCONT_HXX
+#define _VCSBX_HXX
+#define _SI_NOVCSBXFORM
+#define SI_NOOTHERFORMS
+#define _SI_NOVCSBXBUTTON
+#define _SI_NOVCSBXCHECKBOX
+#define _SI_NOVCSBXRADIOBUTTON
+#define _SI_NOVCSBXPUSHBUTTON
+#define _SI_NOVCSBXSPINBUTTON
+#define _SI_NOVCSBXFIXEDTEXT
+#define _SI_NOVCSBXGROUPBOX
+#define _SI_NOVCSBXLISTBOX
+#define _SI_NOVCSBXCOMBOBOX
+#define _SI_NOVCSBXEDIT
+#define _SI_NOVCSBXSCROLLBAR
+#define _SI_NOVCSBXHSCROLLBAR
+#define _SI_BOVCSBXVSCROLLBAR
+#define _SI_NOVCSBXPREVIEW
+#define _SI_NOVCSBXURLBUTTON
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX ***
+//#define _SI_NOVCDRAWMODEL ***
+#define _SI_NOVCDRAWPAGE
+#define _SI_NOVCDRAWVIEW
+#define _VCBRW_HXX
+#define _VCFORM_HXX
+
+//svdraw.hxx
+//#define _SVDRAW_HXX ***
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS ***
+//#define _SDR_NOVIEWS ***
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+//#define _SDR_NOUNDO ***
+#define _SDR_NOXOUTDEV
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+//drawdlgs.hxx
+//#define _SVX_DRAWDLGS_HXX ***
+//#define _SVX_DLG_CTRL_HXX ***
+#define _SVX_DLG_NAME_HXX
+#define _SVX_TAB_AREA_HXX
+#define _SVX_TAB_LINE_HXX
+#define _SVX_TRANSFRM_HXX
+
+class SbxArray;
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdmark.hxx>
+#include <svx/svdview.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <svtools/whiter.hxx>
+
+#include "tabvwsh.hxx"
+#include "viewdata.hxx"
+#include "tabview.hxx"
+#include "drwlayer.hxx"
+#include "userdat.hxx"
+
+// forwards -> galwrap.cxx (wg. CLOOKs)
+
+USHORT GallerySGA_FORMAT_GRAPHIC();
+Graphic GalleryGetGraphic ();
+BOOL GalleryIsLinkage ();
+String GalleryGetFullPath ();
+String GalleryGetFilterName ();
+
+// forwards -> imapwrap.cxx (wg. CLOOKs)
+
+class SvxIMapDlg;
+
+USHORT ScIMapChildWindowId();
+SvxIMapDlg* ScGetIMapDlg();
+const void* ScIMapDlgGetObj( SvxIMapDlg* pDlg );
+const ImageMap& ScIMapDlgGetMap( SvxIMapDlg* pDlg );
+
+//------------------------------------------------------------------
+
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::ExecGallery( SfxRequest& rReq )
+{
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ if ( pArgs )
+ {
+ const SfxPoolItem* pItem = NULL;
+ SfxItemState eState = pArgs->GetItemState(SID_GALLERY_FORMATS, TRUE, &pItem);
+ if ( eState == SFX_ITEM_SET )
+ {
+ UINT32 nFormats = ((const SfxUInt32Item*)pItem)->GetValue();
+
+ /******************************************************************
+ * Graphik einfuegen
+ ******************************************************************/
+ if ( nFormats & GallerySGA_FORMAT_GRAPHIC() )
+ {
+ MakeDrawLayer();
+
+ Graphic aGraphic = GalleryGetGraphic();
+ Point aPos = GetInsertPos();
+
+ String aPath, aFilter;
+ if ( GalleryIsLinkage() ) // als Link einfuegen?
+ {
+ aPath = GalleryGetFullPath();
+ aFilter = GalleryGetFilterName();
+ }
+
+ PasteGraphic( aPos, aGraphic, aPath, aFilter );
+ }
+ }
+ }
+}
+
+void ScTabViewShell::GetGalleryState( SfxItemSet& rSet )
+{
+}
+
+//------------------------------------------------------------------
+
+ScInputHandler* ScTabViewShell::GetInputHandler() const
+{
+ return pInputHandler;
+}
+
+//------------------------------------------------------------------
+
+String __EXPORT ScTabViewShell::GetDescription() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(" ** Test ** "));
+}
+
+void ScTabViewShell::ExecImageMap( SfxRequest& rReq )
+{
+ USHORT nSlot = rReq.GetSlot();
+ switch(nSlot)
+ {
+ case SID_IMAP:
+ {
+ SfxViewFrame* pThisFrame = GetViewFrame();
+ USHORT nId = ScIMapChildWindowId();
+ pThisFrame->ToggleChildWindow( nId );
+ SFX_BINDINGS().Invalidate( SID_IMAP );
+
+ if ( pThisFrame->HasChildWindow( nId ) )
+ {
+ SvxIMapDlg* pDlg = ScGetIMapDlg();
+ if ( pDlg )
+ {
+ SdrView* pDrView = GetSdrView();
+ if ( pDrView )
+ {
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+ if ( rMarkList.GetMarkCount() == 1 )
+ UpdateIMap( rMarkList.GetMark( 0 )->GetObj() );
+ }
+ }
+ }
+
+ rReq.Ignore();
+ }
+ break;
+
+ case SID_IMAP_EXEC:
+ {
+ SdrView* pDrView = GetSdrView();
+ SdrMark* pMark = pDrView ? pDrView->GetMarkList().GetMark(0) : 0;
+
+ if ( pMark )
+ {
+ SdrObject* pSdrObj = pMark->GetObj();
+ SvxIMapDlg* pDlg = ScGetIMapDlg();
+
+ if ( ScIMapDlgGetObj(pDlg) == (void*) pSdrObj )
+ {
+ const ImageMap& rImageMap = ScIMapDlgGetMap(pDlg);
+ ScIMapInfo* pIMapInfo = ScDrawLayer::GetIMapInfo( pSdrObj );
+
+ if ( !pIMapInfo )
+ pSdrObj->InsertUserData( new ScIMapInfo( rImageMap ) );
+ else
+ pIMapInfo->SetImageMap( rImageMap );
+ }
+ }
+ }
+ break;
+ }
+}
+
+void ScTabViewShell::GetImageMapState( SfxItemSet& rSet )
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case SID_IMAP:
+ {
+ // Disabled wird nicht mehr...
+
+ BOOL bThere = FALSE;
+ SfxViewFrame* pThisFrame = GetViewFrame();
+ USHORT nId = ScIMapChildWindowId();
+ if ( pThisFrame->KnowsChildWindow(nId) )
+ if ( pThisFrame->HasChildWindow(nId) )
+ bThere = TRUE;
+
+ ObjectSelectionType eType=GetCurObjectSelectionType();
+ BOOL bEnable=(eType==OST_OleObject) ||(eType==OST_Graphic);
+ if(!bThere && !bEnable)
+ {
+ rSet.DisableItem( nWhich );
+ }
+ else
+ {
+ rSet.Put( SfxBoolItem( nWhich, bThere ) );
+ }
+ }
+ break;
+
+ case SID_IMAP_EXEC:
+ {
+ BOOL bDisable = TRUE;
+
+ SdrView* pDrView = GetSdrView();
+ if ( pDrView )
+ {
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+ if ( rMarkList.GetMarkCount() == 1 )
+ if ( ScIMapDlgGetObj(ScGetIMapDlg()) ==
+ (void*) rMarkList.GetMark(0)->GetObj() )
+ bDisable = FALSE;
+ }
+
+ rSet.Put( SfxBoolItem( SID_IMAP_EXEC, bDisable ) );
+ }
+ break;
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/view/tabvwsha.cxx b/sc/source/ui/view/tabvwsha.cxx
new file mode 100644
index 000000000000..75d4d704b343
--- /dev/null
+++ b/sc/source/ui/view/tabvwsha.cxx
@@ -0,0 +1,650 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwsha.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#define _ZFORLIST_DECLARE_TABLE
+#include "scitems.hxx"
+#include <svtools/stritem.hxx>
+#include <svtools/whiter.hxx>
+#include <svtools/zformat.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/numinf.hxx>
+#include <svx/srchitem.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/request.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "global.hxx"
+#include "attrib.hxx"
+#include "patattr.hxx"
+#include "document.hxx"
+#include "cell.hxx" // Input Status Edit-Zellen
+#include "globstr.hrc"
+#include "scmod.hxx"
+#include "inputhdl.hxx"
+#include "inputwin.hxx"
+#include "docsh.hxx"
+#include "viewdata.hxx"
+#include "attrdlg.hxx"
+#include "appoptio.hxx"
+#include "sc.hrc"
+#include "stlpool.hxx"
+#include "tabvwsh.hxx"
+#include "dwfunctr.hxx"
+
+
+
+BOOL ScTabViewShell::GetFunction( String& rFuncStr )
+{
+ String aStr;
+
+ ScSubTotalFunc eFunc = (ScSubTotalFunc) SC_MOD()->GetAppOptions().GetStatusFunc();
+
+ USHORT nGlobStrId = 0;
+ switch (eFunc)
+ {
+ case SUBTOTAL_FUNC_AVE: nGlobStrId = STR_FUN_TEXT_AVG; break;
+ case SUBTOTAL_FUNC_CNT: nGlobStrId = STR_FUN_TEXT_COUNT; break;
+ case SUBTOTAL_FUNC_CNT2: nGlobStrId = STR_FUN_TEXT_COUNT2; break;
+ case SUBTOTAL_FUNC_MAX: nGlobStrId = STR_FUN_TEXT_MAX; break;
+ case SUBTOTAL_FUNC_MIN: nGlobStrId = STR_FUN_TEXT_MIN; break;
+ case SUBTOTAL_FUNC_SUM: nGlobStrId = STR_FUN_TEXT_SUM; break;
+ }
+ if (nGlobStrId)
+ {
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nPosX = pViewData->GetCurX();
+ USHORT nPosY = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+
+ aStr = ScGlobal::GetRscString(nGlobStrId);
+ aStr += '=';
+
+ // Anzahl im Standardformat, die anderen nach Cursorposition
+ ULONG nNumFmt = 0;
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ if ( eFunc != SUBTOTAL_FUNC_CNT && eFunc != SUBTOTAL_FUNC_CNT2 )
+ {
+ // Zahlformat aus Attributen oder Formel
+ pDoc->GetNumberFormat( nPosX, nPosY, nTab, nNumFmt );
+ if ( (nNumFmt % SV_COUNTRY_LANGUAGE_OFFSET) == 0 )
+ {
+ ScBaseCell* pCell;
+ pDoc->GetCell( nPosX, nPosY, nTab, pCell );
+ if (pCell && pCell->GetCellType() == CELLTYPE_FORMULA)
+ nNumFmt = ((ScFormulaCell*)pCell)->GetStandardFormat(
+ *pFormatter, nNumFmt );
+ }
+ }
+ ScAddress aCursor( nPosX, nPosY, nTab );
+ double nVal;
+ if ( pDoc->GetSelectionFunction( eFunc, aCursor, rMark, nVal ) )
+ {
+ String aValStr;
+ Color* pDummy;
+ pFormatter->GetOutputString( nVal, nNumFmt, aValStr, &pDummy );
+ aStr += aValStr;
+ }
+
+ rFuncStr = aStr;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+// Funktionen, die je nach Selektion disabled sind
+// Default:
+// SID_DELETE,
+// SID_DELETE_CONTENTS,
+// FID_DELETE_CELL
+// FID_VALIDATION
+
+
+void __EXPORT ScTabViewShell::GetState( SfxItemSet& rSet )
+{
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nPosX = pViewData->GetCurX();
+ USHORT nPosY = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nMyId = 0;
+
+ SfxViewFrame* pThisFrame = GetViewFrame();
+ BOOL bOle = pThisFrame->ISA(SfxInPlaceFrame);
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case FID_CHG_COMMENT:
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScAddress aPos( nPosX, nPosY, nTab );
+ if ( pDocSh->IsReadOnly() || !pDocSh->GetChangeAction(aPos) )
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_DELETE_PRINTAREA:
+ if ( !pDoc->GetPrintRangeCount( nTab ) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_STATUS_PAGESTYLE:
+ case SID_HFEDIT:
+ GetViewData()->GetDocShell()->GetStatePageStyle( *this, rSet, nTab );
+ break;
+
+ case SID_SEARCH_ITEM:
+ rSet.Put( ScGlobal::GetSearchItem() );
+ break;
+
+ case SID_SEARCH_OPTIONS:
+ {
+ USHORT nOptions = 0xffff; // alles erlaubt
+ // wenn ReadOnly, kein Ersetzen:
+ if (GetViewData()->GetDocShell()->IsReadOnly())
+ nOptions &= ~( SEARCH_OPTIONS_REPLACE | SEARCH_OPTIONS_REPLACE_ALL );
+ rSet.Put( SfxUInt16Item( nWhich, nOptions ) );
+ }
+ break;
+
+ case SID_CURRENTCELL:
+ {
+ ScAddress aScAddress( GetViewData()->GetCurX(), GetViewData()->GetCurY(), 0 );
+ String aAddr;
+ aScAddress.Format( aAddr, SCA_ABS );
+ SfxStringItem aPosItem( SID_CURRENTCELL, aAddr );
+
+ rSet.Put( aPosItem );
+ }
+ break;
+
+ case SID_CURRENTTAB:
+ // Tabelle fuer Basic ist 1-basiert
+ rSet.Put( SfxUInt16Item( nWhich, GetViewData()->GetTabNo() + 1 ) );
+ break;
+
+ case SID_CURRENTDOC:
+ rSet.Put( SfxStringItem( nWhich, GetViewData()->GetDocShell()->GetTitle() ) );
+ break;
+
+ case FID_TOGGLEINPUTLINE:
+ {
+ USHORT nId = ScInputWindowWrapper::GetChildWindowId();
+
+ if ( pThisFrame->KnowsChildWindow( nId ) )
+ {
+ SfxChildWindow* pWnd = pThisFrame->GetChildWindow( nId );
+ rSet.Put( SfxBoolItem( nWhich, pWnd ? TRUE : FALSE ) );
+ }
+ else
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case FID_DEL_MANUALBREAKS:
+ if (!pDoc->HasManualBreaks(nTab))
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FID_RESET_PRINTZOOM:
+ {
+ // disablen, wenn schon Default eingestellt
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ String aStyleName = pDoc->GetPageStyle( nTab );
+ ScStyleSheetPool* pStylePool = pDoc->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyleSheet = pStylePool->Find( aStyleName,
+ SFX_STYLE_FAMILY_PAGE );
+ DBG_ASSERT( pStyleSheet, "PageStyle not found" );
+ if ( pStyleSheet )
+ {
+ SfxItemSet& rStyleSet = pStyleSheet->GetItemSet();
+ USHORT nScale = ((const SfxUInt16Item&)
+ rStyleSet.Get(ATTR_PAGE_SCALE)).GetValue();
+ USHORT nPages = ((const SfxUInt16Item&)
+ rStyleSet.Get(ATTR_PAGE_SCALETOPAGES)).GetValue();
+ if ( nScale == 100 && nPages == 0 )
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+
+ case FID_SCALE:
+ case SID_ATTR_ZOOM:
+ if ( bOle )
+ rSet.DisableItem( nWhich );
+ else
+ {
+ const Fraction& rOldY = GetViewData()->GetZoomY();
+ USHORT nZoom = (USHORT)(( rOldY.GetNumerator() * 100 )
+ / rOldY.GetDenominator());
+ rSet.Put( SvxZoomItem( SVX_ZOOM_PERCENT, nZoom, nWhich ) );
+ }
+ break;
+
+ case FID_TOGGLESYNTAX:
+ rSet.Put(SfxBoolItem(nWhich, GetViewData()->IsSyntaxMode()));
+ break;
+
+ case FID_TOGGLEHEADERS:
+ rSet.Put(SfxBoolItem(nWhich, GetViewData()->IsHeaderMode()));
+ break;
+
+ case FID_PAGEBREAKMODE:
+ if ( bOle )
+ rSet.DisableItem( nWhich );
+ else
+ rSet.Put(SfxBoolItem(nWhich, GetViewData()->IsPagebreakMode()));
+ break;
+
+ case FID_FUNCTION_BOX:
+ nMyId = ScFunctionChildWindow::GetChildWindowId();
+ rSet.Put(SfxBoolItem(FID_FUNCTION_BOX, pThisFrame->HasChildWindow(nMyId)));
+ break;
+
+ case FID_PROTECT_DOC:
+ rSet.Put(SfxBoolItem(nWhich, pDoc->IsDocProtected()));
+ break;
+
+ case FID_PROTECT_TABLE:
+ rSet.Put(SfxBoolItem(nWhich, pDoc->IsTabProtected(nTab)));
+ break;
+
+ case SID_AUTO_OUTLINE:
+ {
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ if (pDoc->GetChangeTrack()!=NULL || rMark.IsMultiMarked())
+ {
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+
+ case SID_OUTLINE_DELETEALL:
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nOlTab = GetViewData()->GetTabNo();
+ ScOutlineTable* pOlTable = pDoc->GetOutlineTable( nOlTab );
+ if (pOlTable == NULL)
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case SID_WINDOW_SPLIT:
+ rSet.Put(SfxBoolItem(nWhich,
+ pViewData->GetHSplitMode() == SC_SPLIT_NORMAL ||
+ pViewData->GetVSplitMode() == SC_SPLIT_NORMAL ));
+ break;
+
+ case SID_WINDOW_FIX:
+ rSet.Put(SfxBoolItem(nWhich,
+ pViewData->GetHSplitMode() == SC_SPLIT_FIX ||
+ pViewData->GetVSplitMode() == SC_SPLIT_FIX ));
+ break;
+
+ case FID_CHG_SHOW:
+ {
+ if(pDoc->GetChangeTrack()==NULL)
+ rSet.DisableItem( nWhich);
+ }
+ break;
+ case FID_CHG_ACCEPT:
+ {
+ rSet.Put(SfxBoolItem(FID_CHG_ACCEPT,
+ pThisFrame->HasChildWindow(FID_CHG_ACCEPT)));
+ if(pDoc->GetChangeTrack()==NULL)
+ {
+ if ( !pThisFrame->HasChildWindow(FID_CHG_ACCEPT) )
+ {
+ rSet.DisableItem( nWhich);
+ }
+ }
+ }
+ break;
+
+ case SID_FORMATPAGE:
+ //! bei geschuetzten Tabellen ???
+ if (GetViewData()->GetDocShell()->IsReadOnly())
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_PRINTPREVIEW:
+ // #58924# Toggle-Slot braucht einen State
+ rSet.Put( SfxBoolItem( nWhich, FALSE ) );
+ break;
+
+ } // switch ( nWitch )
+ nWhich = aIter.NextWhich();
+ } // while ( nWitch )
+}
+
+//------------------------------------------------------------------
+void ScTabViewShell::ExecuteCellFormatDlg( SfxRequest& rReq, USHORT nTabPage )
+{
+ ScAttrDlg* pDlg = NULL;
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+
+ SvxBoxItem aLineOuter( ATTR_BORDER );
+ SvxBoxInfoItem aLineInner( ATTR_BORDER_INNER );
+
+ SvxNumberInfoItem* pNumberInfoItem = NULL;
+ const ScPatternAttr* pOldAttrs = GetSelectionPattern();
+ SfxItemSet* pOldSet = new SfxItemSet(
+ pOldAttrs->GetItemSet() );
+
+
+ // Umrandungs-Items holen und in den Set packen:
+ GetSelectionFrame( aLineOuter, aLineInner );
+ pOldSet->Put( aLineOuter );
+ pOldSet->Put( aLineInner );
+
+ // NumberFormat Value aus Value und Language erzeugen und eintueten
+ pOldSet->Put( SfxUInt32Item( ATTR_VALUE_FORMAT,
+ pOldAttrs->GetNumberFormat( pDoc->GetFormatTable() ) ) );
+
+ MakeNumberInfoItem( pDoc, GetViewData(), &pNumberInfoItem );
+
+ pOldSet->MergeRange( SID_ATTR_NUMBERFORMAT_INFO, SID_ATTR_NUMBERFORMAT_INFO );
+ pOldSet->Put(*pNumberInfoItem );
+
+ bInFormatDialog = TRUE;
+ pDlg = new ScAttrDlg( GetViewFrame(), GetDialogParent(), pOldSet );
+ if ( nTabPage != 0xffff )
+ pDlg->SetCurPageId( nTabPage );
+ short nResult = pDlg->Execute();
+ bInFormatDialog = FALSE;
+
+ if ( nResult == RET_OK )
+ {
+ const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
+
+ const SfxPoolItem* pItem=NULL;
+ if(pOutSet->GetItemState(SID_ATTR_NUMBERFORMAT_INFO,TRUE,&pItem)==SFX_ITEM_SET)
+ {
+
+ UpdateNumberFormatter( pDoc,(const SvxNumberInfoItem&)*pItem);
+ }
+
+ ApplyAttributes( pOutSet, pOldSet );
+
+ rReq.Done( *pOutSet );
+ }
+ delete pOldSet;
+ delete pNumberInfoItem;
+ delete pDlg;
+}
+
+//------------------------------------------------------------------
+void ScTabViewShell::ExecuteInputDirect()
+{
+ ScModule* pScMod = SC_MOD();
+ if( !pScMod->IsFormulaMode() )
+ pScMod->InputEnterHandler();
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::UpdateInputHandler( BOOL bForce /* = FALSE */ )
+{
+ ScInputHandler* pHdl = pInputHandler ? pInputHandler : SC_MOD()->GetInputHdl();
+
+ if ( pHdl )
+ {
+ String aString;
+ const EditTextObject* pObject = NULL;
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ CellType eType;
+ USHORT nPosX = pViewData->GetCurX();
+ USHORT nPosY = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ USHORT nStartTab = 0;
+ USHORT nEndTab = 0;
+ USHORT nStartCol = 0;
+ USHORT nStartRow = 0;
+ USHORT nEndCol = 0;
+ USHORT nEndRow = 0;
+
+ pViewData->GetSimpleArea( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab, FALSE );
+
+ PutInOrder( nStartCol, nEndCol );
+ PutInOrder( nStartRow, nEndRow );
+ PutInOrder( nStartTab, nEndTab );
+
+ BOOL bHideFormula = FALSE;
+ BOOL bHideAll = FALSE;
+
+ if (pDoc->IsTabProtected(nTab))
+ {
+ const ScProtectionAttr* pProt = (const ScProtectionAttr*)
+ pDoc->GetAttr( nPosX,nPosY,nTab,
+ ATTR_PROTECTION);
+ bHideFormula = pProt->GetHideFormula();
+ bHideAll = pProt->GetHideCell();
+ }
+
+ if (!bHideAll)
+ {
+ pDoc->GetCellType( nPosX, nPosY, nTab, eType );
+ if (eType == CELLTYPE_FORMULA)
+ {
+ if (!bHideFormula)
+ pDoc->GetFormula( nPosX, nPosY, nTab, aString );
+ }
+ else if (eType == CELLTYPE_EDIT)
+ {
+ ScBaseCell* pCell;
+ pDoc->GetCell( nPosX, nPosY, nTab, pCell );
+ ((ScEditCell*)pCell)->GetData( pObject );
+ }
+ else
+ {
+ pDoc->GetInputString( nPosX, nPosY, nTab, aString );
+ if (eType == CELLTYPE_STRING)
+ {
+ // Bei Bedarf ein ' vorneweg, damit der String nicht ungewollt
+ // als Zahl interpretiert wird, und um dem Benutzer zu zeigen,
+ // dass es ein String ist (#35060#).
+ //! Auch bei Zahlformat "Text"? -> dann beim Editieren wegnehmen
+
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ ULONG nNumFmt;
+ pDoc->GetNumberFormat( nPosX, nPosY, nTab, nNumFmt );
+ double fDummy;
+ if ( pFormatter->IsNumberFormat(aString, nNumFmt, fDummy) )
+ aString.Insert('\'',0);
+ }
+ }
+ }
+
+ ScInputHdlState aState( ScAddress( nPosX, nPosY, nTab ),
+ ScAddress( nStartCol, nStartRow, nTab ),
+ ScAddress( nEndCol, nEndRow, nTab ),
+ aString,
+ pObject );
+
+ pHdl->NotifyChange( &aState, bForce );
+ }
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_STATUS_SUM ); // immer zusammen mit Eingabezeile
+ rBindings.Invalidate( SID_ATTR_SIZE );
+}
+
+//------------------------------------------------------------------
+
+void __EXPORT ScTabViewShell::ExecuteSave( SfxRequest& rReq )
+{
+ // nur SID_SAVEDOC / SID_SAVEASDOC
+
+ // Eingabe auf jeden Fall abschliessen, auch wenn eine Formel bearbeitet wird
+ SC_MOD()->InputEnterHandler();
+
+ // ansonsten normal weiter
+ GetViewData()->GetDocShell()->ExecuteSlot( rReq );
+}
+
+void __EXPORT ScTabViewShell::GetSaveState( SfxItemSet& rSet )
+{
+ SfxShell* pDocSh = GetViewData()->GetDocShell();
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while( nWhich )
+ {
+ // Status von der DocShell holen
+ pDocSh->GetSlotState( nWhich, NULL, &rSet );
+ nWhich = aIter.NextWhich();
+ }
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::ExecDrawOpt( SfxRequest& rReq )
+{
+ ScViewOptions aViewOptions = GetViewData()->GetOptions();
+ ScGridOptions aGridOptions = aViewOptions.GetGridOptions();
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ const SfxItemSet* pArgs = rReq.GetArgs();
+ const SfxPoolItem* pItem;
+ USHORT nSlotId = rReq.GetSlot();
+ switch (nSlotId)
+ {
+ case SID_GRID_VISIBLE:
+ if ( pArgs && pArgs->GetItemState(nSlotId,TRUE,&pItem) == SFX_ITEM_SET )
+ {
+ aGridOptions.SetGridVisible( ((const SfxBoolItem*)pItem)->GetValue() );
+ aViewOptions.SetGridOptions(aGridOptions);
+ rBindings.Invalidate(SID_GRID_VISIBLE);
+ }
+ break;
+
+ case SID_GRID_USE:
+ if ( pArgs && pArgs->GetItemState(nSlotId,TRUE,&pItem) == SFX_ITEM_SET )
+ {
+ aGridOptions.SetUseGridSnap( ((const SfxBoolItem*)pItem)->GetValue() );
+ aViewOptions.SetGridOptions(aGridOptions);
+ rBindings.Invalidate(SID_GRID_USE);
+ }
+ break;
+
+ case SID_HELPLINES_MOVE:
+ if ( pArgs && pArgs->GetItemState(nSlotId,TRUE,&pItem) == SFX_ITEM_SET )
+ {
+ aViewOptions.SetOption( VOPT_HELPLINES, ((const SfxBoolItem*)pItem)->GetValue() );
+ rBindings.Invalidate(SID_HELPLINES_MOVE);
+ }
+ break;
+ }
+
+ GetViewData()->SetOptions(aViewOptions);
+}
+
+void ScTabViewShell::GetDrawOptState( SfxItemSet& rSet )
+{
+ SfxBoolItem aBool;
+
+ const ScViewOptions& rViewOptions = GetViewData()->GetOptions();
+ const ScGridOptions& rGridOptions = rViewOptions.GetGridOptions();
+
+ aBool.SetValue(rGridOptions.GetGridVisible());
+ aBool.SetWhich( SID_GRID_VISIBLE );
+ rSet.Put( aBool );
+
+ aBool.SetValue(rGridOptions.GetUseGridSnap());
+ aBool.SetWhich( SID_GRID_USE );
+ rSet.Put( aBool );
+
+ aBool.SetValue(rViewOptions.GetOption( VOPT_HELPLINES ));
+ aBool.SetWhich( SID_HELPLINES_MOVE );
+ rSet.Put( aBool );
+}
+
+
+
+
diff --git a/sc/source/ui/view/tabvwshb.cxx b/sc/source/ui/view/tabvwshb.cxx
new file mode 100644
index 000000000000..d4c1ccdfbce1
--- /dev/null
+++ b/sc/source/ui/view/tabvwshb.cxx
@@ -0,0 +1,468 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwshb.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#ifdef WNT
+#pragma optimize ("", off)
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/pfiledlg.hxx>
+#include <svx/svdmark.hxx>
+#include <svx/svdograf.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdview.hxx>
+#include <svx/linkmgr.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <so3/ipenv.hxx>
+#include <so3/ipobj.hxx>
+#include <so3/linkdlg.hxx>
+#include <so3/svstor.hxx>
+#include <so3/soerr.hxx>
+#include <svtools/rectitem.hxx>
+#include <svtools/whiter.hxx>
+#include <sim2/simdll.hxx>
+#include <sch/schdll.hxx>
+#include <sch/memchrt.hxx>
+#include <sch/schdll0.hxx>
+
+
+
+#ifndef SO2_DECL_SVINPLACEOBJECT_DEFINED
+#define SO2_DECL_SVINPLACEOBJECT_DEFINED
+SO2_DECL_REF(SvInPlaceObject)
+#endif
+#ifndef SO2_DECL_SVSTORAGE_DEFINED
+#define SO2_DECL_SVSTORAGE_DEFINED
+SO2_DECL_REF(SvStorage)
+#endif
+
+#include "tabvwsh.hxx"
+#include "globstr.hrc"
+#include "scmod.hxx"
+#include "document.hxx"
+#include "sc.hrc"
+#include "client.hxx"
+#include "fuinsert.hxx"
+#include "docsh.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+void ScTabViewShell::ConnectObject( SdrOle2Obj* pObj )
+{
+ // wird aus dem Paint gerufen
+
+ SvInPlaceObjectRef xIPObj = pObj->GetObjRef();
+ Window* pWin = GetActiveWin();
+
+ // #41412# wenn schon connected ist, nicht nochmal SetObjArea/SetSizeScale
+
+ SfxInPlaceClientRef xClient = FindIPClient( xIPObj, pWin );
+ if ( !xClient.Is() )
+ {
+ xClient = new ScClient( this, pWin, GetSdrView()->GetModel() );
+
+ ErrCode nErr = xIPObj->DoConnect( xClient );
+ if (nErr != ERRCODE_NONE)
+ ErrorHandler::HandleError(nErr);
+
+ Rectangle aRect = pObj->GetLogicRect();
+ Size aDrawSize = aRect.GetSize();
+ Size aOleSize = xIPObj->GetVisArea().GetSize();
+
+ // sichtbarer Ausschnitt wird nur inplace veraendert!
+ aRect.SetSize( aOleSize );
+ xClient->GetEnv()->SetObjArea( aRect );
+
+ Fraction aScaleWidth (aDrawSize.Width(), aOleSize.Width() );
+ Fraction aScaleHeight(aDrawSize.Height(), aOleSize.Height() );
+ aScaleWidth.ReduceInaccurate(10); // kompatibel zum SdrOle2Obj
+ aScaleHeight.ReduceInaccurate(10);
+ xClient->GetEnv()->SetSizeScale(aScaleWidth,aScaleHeight);
+
+ ((ScClient*)(SfxInPlaceClient*)xClient)->SetGrafEdit( NULL );
+ }
+}
+
+BOOL ScTabViewShell::ActivateObject( SdrOle2Obj* pObj, long nVerb )
+{
+ // #41081# Gueltigkeits-Hinweisfenster nicht ueber dem Objekt stehenlassen
+ RemoveHintWindow();
+
+ SvInPlaceObjectRef xIPObj = pObj->GetObjRef();
+ Window* pWin = GetActiveWin();
+ ErrCode nErr = ERRCODE_NONE;
+ BOOL bErrorShown = FALSE;
+
+ if ( xIPObj->IsLink() )
+ nErr = xIPObj->DoVerb(nVerb); // gelinkt -> ohne Client etc.
+ else
+ {
+ SfxInPlaceClientRef xClient = FindIPClient( xIPObj, pWin );
+ if ( !xClient.Is() )
+ xClient = new ScClient( this, pWin, GetSdrView()->GetModel() );
+ nErr = xIPObj->DoConnect( xClient );
+
+ if ( !(nErr & ERRCODE_ERROR_MASK) )
+ {
+ Rectangle aRect = pObj->GetLogicRect();
+ Size aDrawSize = aRect.GetSize();
+ Size aOleSize = xIPObj->GetVisArea().GetSize();
+ aOleSize = OutputDevice::LogicToLogic( aOleSize,
+ xIPObj->GetMapUnit(), MAP_100TH_MM );
+
+ // sichtbarer Ausschnitt wird nur inplace veraendert!
+ aRect.SetSize( aOleSize );
+ xClient->GetEnv()->SetObjArea( aRect );
+
+ Fraction aScaleWidth (aDrawSize.Width(), aOleSize.Width() );
+ Fraction aScaleHeight(aDrawSize.Height(), aOleSize.Height() );
+ aScaleWidth.ReduceInaccurate(10); // kompatibel zum SdrOle2Obj
+ aScaleHeight.ReduceInaccurate(10);
+ xClient->GetEnv()->SetSizeScale(aScaleWidth,aScaleHeight);
+
+ ((ScClient*)(SfxInPlaceClient*)xClient)->SetGrafEdit( NULL );
+
+ // Link fuer Daten-Highlighting im Chart setzen
+ if ( SFX_APP()->HasFeature(SFX_FEATURE_SCHART) )
+ {
+ SvGlobalName aObjClsId = *xIPObj->GetSvFactory();
+ if (SchModuleDummy::HasID( aObjClsId ))
+ {
+ SchMemChart* pMemChart = SchDLL::GetChartData(xIPObj);
+ if (pMemChart)
+ pMemChart->SetSelectionHdl( LINK( GetViewData()->GetDocShell(),
+ ScDocShell, ChartSelectionHdl ) );
+ }
+ }
+
+ nErr = SfxViewShell::DoVerb( xClient, nVerb );
+ bErrorShown = TRUE;
+ // SfxViewShell::DoVerb zeigt seine Fehlermeldungen selber an
+ }
+ }
+ if (nErr != ERRCODE_NONE && !bErrorShown)
+ ErrorHandler::HandleError(nErr);
+
+ //! SetDocumentName sollte schon im Sfx passieren ???
+ xIPObj->SetDocumentName( GetViewData()->GetDocShell()->GetTitle() );
+
+ return ( !(nErr & ERRCODE_ERROR_MASK) );
+}
+
+ErrCode __EXPORT ScTabViewShell::DoVerb(long nVerb)
+{
+ SdrView* pView = GetSdrView();
+ if (!pView)
+ return ERRCODE_SO_NOTIMPL; // soll nicht sein
+
+ SdrOle2Obj* pOle2Obj = NULL;
+ SdrGrafObj* pGrafObj = NULL;
+ SdrObject* pObj = NULL;
+ ErrCode nErr = ERRCODE_NONE;
+
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+ if (rMarkList.GetMarkCount() == 1)
+ {
+ pObj = rMarkList.GetMark(0)->GetObj();
+ if (pObj->GetObjIdentifier() == OBJ_OLE2)
+ pOle2Obj = (SdrOle2Obj*) pObj;
+ else if (pObj->GetObjIdentifier() == OBJ_GRAF)
+ {
+ pGrafObj = (SdrGrafObj*) pObj;
+ }
+ }
+
+ if (pOle2Obj)
+ {
+ ActivateObject( pOle2Obj, nVerb );
+ }
+ else if ( pGrafObj && SFX_APP()->HasFeature(SFX_FEATURE_SIMAGE) )
+ {
+ /**********************************************************
+ * OLE-Objekt erzeugen, StarImage starten
+ * Grafik-Objekt loeschen (durch OLE-Objekt ersetzt)
+ **********************************************************/
+
+ pView->HideMarkHdl(NULL);
+
+ String aEmtpyString;
+ SvStorageRef aStor = new SvStorage(String());
+ SvInPlaceObjectRef aNewIPObj =
+#ifndef SO3
+ &SvInPlaceObject::ClassFactory()->CreateAndInit(
+ *SIM_MOD()->pSimDrawDocShellFactory, aStor );
+#else
+ &((SvFactory*)SvInPlaceObject::ClassFactory())->CreateAndInit(
+ *SIM_MOD()->pSimDrawDocShellFactory, aStor );
+#endif
+ if ( aNewIPObj.Is() )
+ {
+ SdrGrafObj* pTempSdrGrafObj = (SdrGrafObj*) pObj->Clone ();
+ pView->BegUndo( ScGlobal::GetRscString( STR_UNDO_GRAFEDIT ) );
+
+ SvEmbeddedInfoObject* pInfo =
+ GetViewFrame()->GetObjectShell()->
+ InsertObject( aNewIPObj, String() );
+ String aName;
+ if( pInfo )
+ aName = pInfo->GetObjName();
+
+ Rectangle aRect = pObj->GetLogicRect();
+ SdrOle2Obj* pSdrOle2Obj = new SdrOle2Obj( aNewIPObj, aName, aRect );
+
+ SdrPageView* pPV = pView->GetPageViewPvNum(0);
+ pView->ReplaceObject(pObj, *pPV, pSdrOle2Obj);
+ pSdrOle2Obj->SetLogicRect(aRect); // erst nach InsertObject !!!
+ aNewIPObj->SetVisAreaSize( aRect.GetSize() );
+
+ const Graphic& rGraphic = pTempSdrGrafObj->GetGraphic();
+ SimDLL::Update(aNewIPObj, rGraphic, GetActiveWin() );
+
+// pView->EndUndo();
+ // passendes EndUndo in ScDrawView::MarkListHasChanged
+
+ ActivateObject( pSdrOle2Obj, SVVERB_SHOW );
+
+ ScClient* pClient = (ScClient*) GetIPClient();
+ pClient->SetGrafEdit( pTempSdrGrafObj );
+ }
+ }
+ else
+ DBG_ERROR("kein Objekt fuer Verb gefunden");
+
+ return nErr;
+}
+
+void ScTabViewShell::ExecDrawIns(SfxRequest& rReq)
+{
+ USHORT nSlot = rReq.GetSlot();
+ if (nSlot != SID_OBJECTRESIZE )
+ {
+ SC_MOD()->InputEnterHandler();
+ UpdateInputHandler();
+ }
+
+ // Rahmen fuer Chart einfuegen wird abgebrochen:
+ FuPoor* pPoor = GetDrawFuncPtr();
+ if ( pPoor && pPoor->GetSlotID() == SID_DRAW_CHART )
+ SFX_DISPATCHER().Execute(SID_DRAW_CHART, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD);
+
+ MakeDrawLayer();
+
+ SfxBindings& rBindings = GetViewFrame()->GetBindings();
+ ScTabView* pTabView = GetViewData()->GetView();
+ Window* pWin = pTabView->GetActiveWin();
+ SdrView* pView = pTabView->GetSdrView();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+// SdrModel* pDrModel = pDocSh->MakeDrawLayer();
+ SdrModel* pDrModel = pView->GetModel();
+
+ switch ( nSlot )
+ {
+ case SID_INSERT_GRAPHIC:
+ FuInsertGraphic(this, pWin, pView, pDrModel, rReq);
+ // shell is set in MarkListHasChanged
+ break;
+
+ case SID_INSERT_DIAGRAM:
+ FuInsertChart(this, pWin, pView, pDrModel, rReq);
+//? SC_MOD()->SetFunctionDlg( NULL );//XXX
+ break;
+
+ case SID_INSERT_OBJECT:
+ case SID_INSERT_PLUGIN:
+ case SID_INSERT_SOUND:
+ case SID_INSERT_VIDEO:
+ case SID_INSERT_APPLET:
+ case SID_INSERT_SIMAGE:
+ case SID_INSERT_SMATH:
+ case SID_INSERT_FLOATINGFRAME:
+ FuInsertOLE(this, pWin, pView, pDrModel, rReq);
+ break;
+
+ case SID_OBJECTRESIZE:
+ {
+ // Der Server moechte die Clientgrosse verandern
+
+ SfxInPlaceClient* pIPClient = GetIPClient();
+
+ if ( pIPClient && pIPClient->IsInPlaceActive() )
+ {
+ const SfxRectangleItem& rRect =
+ (SfxRectangleItem&)rReq.GetArgs()->Get(SID_OBJECTRESIZE);
+ Rectangle aRect( pWin->PixelToLogic( rRect.GetValue() ) );
+
+ if ( pView->HasMarkedObj() )
+ {
+ const SdrMarkList& rMarkList = pView->GetMarkList();
+
+ if (rMarkList.GetMarkCount() == 1)
+ {
+ SdrMark* pMark = rMarkList.GetMark(0);
+ SdrObject* pObj = pMark->GetObj();
+
+ UINT16 nSdrObjKind = pObj->GetObjIdentifier();
+
+ if (nSdrObjKind == OBJ_OLE2)
+ {
+ SvInPlaceObjectRef aIPObj =
+ ( (SdrOle2Obj*) pObj)->GetObjRef();
+
+ if ( aIPObj.Is() )
+ {
+ pObj->SetLogicRect(aRect);
+ }
+ }
+ }
+ }
+ }
+ }
+ break;
+
+ case SID_LINKS:
+ {
+ SvBaseLinksDialog( pWin, pDoc->GetLinkManager() ).Execute();
+ rBindings.Invalidate( nSlot );
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
+ rReq.Done();
+ }
+ }
+}
+
+void ScTabViewShell::GetDrawInsState(SfxItemSet &rSet)
+{
+ BOOL bOle = GetViewFrame()->ISA(SfxInPlaceFrame);
+ BOOL bTabProt = GetViewData()->GetDocument()->IsTabProtected(GetViewData()->GetTabNo());
+ SfxApplication* pSfxApp = SFX_APP();
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case SID_INSERT_DIAGRAM:
+ case SID_OPENDLG_CHART:
+ if ( bOle || bTabProt || !pSfxApp->HasFeature(SFX_FEATURE_SCHART) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_INSERT_SIMAGE:
+ if ( bOle || bTabProt || !pSfxApp->HasFeature(SFX_FEATURE_SIMAGE) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_INSERT_SMATH:
+ if ( bOle || bTabProt || !pSfxApp->HasFeature(SFX_FEATURE_SMATH) )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_INSERT_OBJECT:
+ case SID_INSERT_PLUGIN:
+ case SID_INSERT_FLOATINGFRAME:
+ if (bOle || bTabProt)
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_INSERT_SOUND:
+ case SID_INSERT_VIDEO:
+ if (bOle || bTabProt || !SvxPluginFileDlg::IsAvailable(nWhich))
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_INSERT_APPLET:
+ // wenn SOLAR_JAVA nicht definiert ist, immer disablen
+#ifdef SOLAR_JAVA
+ if (bOle || bTabProt)
+#endif
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_INSERT_GRAPHIC:
+ if (bTabProt)
+ rSet.DisableItem( nWhich );
+ break;
+
+ case SID_LINKS:
+ {
+ if (GetViewData()->GetDocument()->GetLinkManager()->GetLinks().Count() == 0 )
+ rSet.DisableItem( SID_LINKS );
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx
new file mode 100644
index 000000000000..9056841fd5b1
--- /dev/null
+++ b/sc/source/ui/view/tabvwshc.cxx
@@ -0,0 +1,492 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwshc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#define _SI_DLL_HXX
+#define _SIDLL_HXX
+#define _SI_NOITEMS
+#define _SI_NOOTHERFORMS
+#define _SI_NOSBXCONTROLS
+#define _SINOSBXCONTROLS
+#define _SI_NODRW //
+#define _SI_NOCONTROL
+#define _SVBOXITM_HXX
+//#define _SVCONTNR_HXX
+#define _SVDATTR_HXX
+#define _SVDXOUT_HXX
+#define _SVDEC_HXX
+#define _SVDIO_HXX
+#define _SVDLAYER_HXX
+#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+//#define _SVTABBX_HXX
+//#define _SVTREEBOX_HXX
+//#define _SVTREELIST_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+// INCLUDE ---------------------------------------------------------------
+#include "scitems.hxx"
+#include <vcl/msgbox.hxx>
+#include <sfx2/childwin.hxx>
+
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "scmod.hxx"
+#include "docsh.hxx"
+#include "document.hxx"
+#include "uiitems.hxx"
+#include "pivot.hxx"
+#include "namedlg.hxx"
+#include "solvrdlg.hxx"
+#include "tabopdlg.hxx"
+#include "autoform.hxx" // Core
+#include "autofmt.hxx" // Dialog
+#include "consdlg.hxx"
+#include "sortdlg.hxx"
+#include "filtdlg.hxx"
+#include "dbnamdlg.hxx"
+#include "pvlaydlg.hxx"
+#include "chartdlg.hxx"
+#include "areasdlg.hxx"
+#include "condfrmt.hxx"
+#include "rangeutl.hxx"
+#include "crnrdlg.hxx"
+#include "formula.hxx"
+#include "cell.hxx" // Input Status Edit-Zellen
+#include "acredlin.hxx"
+#include "highred.hxx"
+#include "simpref.hxx"
+#include "dpobject.hxx"
+
+// -----------------------------------------------------------------------
+
+//! nach document verschieben !!!
+
+BOOL lcl_IsValueCol( ScDocument* pDoc, USHORT nCol, USHORT nRow1, USHORT nRow2, USHORT nTab )
+{
+ BOOL bVal = TRUE;
+ for (USHORT nRow=nRow1; nRow<=nRow2 && bVal; nRow++)
+ if (pDoc->HasStringData( nCol, nRow, nTab ))
+ bVal = FALSE;
+ return bVal;
+}
+
+//------------------------------------------------------------------
+
+SfxModelessDialog* ScTabViewShell::CreateRefDialog(
+ SfxBindings* pB, SfxChildWindow* pCW, SfxChildWinInfo* pInfo,
+ Window* pParent, USHORT nSlotId )
+{
+ // Dialog nur aufmachen, wenn ueber ScModule::SetRefDialog gerufen, damit
+ // z.B. nach einem Absturz offene Ref-Dialoge nicht wiederkommen (#42341#).
+
+ if ( SC_MOD()->GetCurRefDlgId() != nSlotId )
+ return NULL;
+
+ SfxModelessDialog* pResult = 0;
+
+ if(pCW)
+ pCW->SetHideNotDelete(TRUE);
+
+ switch( nSlotId )
+ {
+ case FID_DEFINE_NAME:
+ pResult = new ScNameDlg( pB, pCW, pParent, GetViewData(),
+ ScAddress( GetViewData()->GetCurX(),
+ GetViewData()->GetCurY(),
+ GetViewData()->GetTabNo() ) );
+ break;
+
+ case SID_DEFINE_COLROWNAMERANGES:
+ {
+ pResult = new ScColRowNameRangesDlg( pB, pCW, pParent, GetViewData() );
+ }
+ break;
+
+ case SID_OPENDLG_CHART:
+ {
+ pResult = new ScChartDlg( pB, pCW, pParent, GetViewData() );
+ }
+ break;
+
+ case SID_OPENDLG_CONSOLIDATE:
+ {
+ SfxItemSet aArgSet( GetPool(),
+ SCITEM_CONSOLIDATEDATA,
+ SCITEM_CONSOLIDATEDATA );
+
+ const ScConsolidateParam* pDlgData =
+ GetViewData()->GetDocument()->GetConsolidateDlgData();
+
+ if ( !pDlgData )
+ {
+ ScConsolidateParam aConsParam;
+ USHORT nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab;
+
+ GetViewData()->GetSimpleArea( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab );
+
+ PutInOrder( nStartCol, nEndCol );
+ PutInOrder( nStartRow, nEndRow );
+ PutInOrder( nStartTab, nEndTab );
+
+ aConsParam.nCol = nStartCol;
+ aConsParam.nRow = nStartRow;
+ aConsParam.nTab = nStartTab;
+
+ aArgSet.Put( ScConsolidateItem( SCITEM_CONSOLIDATEDATA,
+ &aConsParam ) );
+ }
+ else
+ {
+ aArgSet.Put( ScConsolidateItem( SCITEM_CONSOLIDATEDATA, pDlgData ) );
+ }
+ pResult = new ScConsolidateDlg( pB, pCW, pParent, aArgSet );
+ }
+ break;
+
+ case SID_DEFINE_DBNAME:
+ {
+ // wenn auf einem bestehenden Bereich aufgerufen, den markieren
+ GetDBData( TRUE, SC_DB_OLD );
+ if ( !GetViewData()->GetMarkData().IsMarked() )
+ MarkDataArea( FALSE );
+
+ pResult = new ScDbNameDlg( pB, pCW, pParent, GetViewData() );
+ }
+ break;
+
+ case SID_SPECIAL_FILTER:
+ {
+ ScQueryParam aQueryParam;
+ SfxItemSet aArgSet( GetPool(),
+ SCITEM_QUERYDATA,
+ SCITEM_QUERYDATA );
+
+ ScDBData* pDBData = GetDBData();
+ pDBData->GetQueryParam( aQueryParam );
+
+ ScQueryItem aItem( SCITEM_QUERYDATA, GetViewData(), &aQueryParam );
+ ScRange aAdvSource;
+ if (pDBData->GetAdvancedQuerySource(aAdvSource))
+ aItem.SetAdvancedQuerySource( &aAdvSource );
+
+ aArgSet.Put( aItem );
+
+ // aktuelle Tabelle merken (wg. RefInput im Dialog)
+ GetViewData()->SetRefTabNo( GetViewData()->GetTabNo() );
+
+ pResult = new ScSpecialFilterDlg( pB, pCW, pParent, aArgSet );
+ }
+ break;
+
+ case SID_FILTER:
+ {
+
+ ScQueryParam aQueryParam;
+ SfxItemSet aArgSet( GetPool(),
+ SCITEM_QUERYDATA,
+ SCITEM_QUERYDATA );
+
+ ScDBData* pDBData = GetDBData();
+ pDBData->GetQueryParam( aQueryParam );
+
+ aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA,
+ GetViewData(),
+ &aQueryParam ) );
+
+ // aktuelle Tabelle merken (wg. RefInput im Dialog)
+ GetViewData()->SetRefTabNo( GetViewData()->GetTabNo() );
+
+ pResult = new ScFilterDlg( pB, pCW, pParent, aArgSet );
+ }
+ break;
+
+ case SID_OPENDLG_TABOP:
+ {
+ ScViewData* pViewData = GetViewData();
+ ScRefTripel aCurPos ( pViewData->GetCurX(),
+ pViewData->GetCurY(),
+ pViewData->GetTabNo(),
+ FALSE, FALSE, FALSE );
+
+ pResult = new ScTabOpDlg( pB, pCW, pParent, pViewData->GetDocument(), aCurPos );
+ }
+ break;
+
+ case SID_OPENDLG_SOLVE:
+ {
+ ScViewData* pViewData = GetViewData();
+ ScRefTripel aCurPos ( pViewData->GetCurX(),
+ pViewData->GetCurY(),
+ pViewData->GetTabNo(),
+ FALSE, FALSE, FALSE );
+
+ pResult = new ScSolverDlg( pB, pCW, pParent, pViewData->GetDocument(), aCurPos );
+ }
+ break;
+
+ case SID_OPENDLG_PIVOTTABLE:
+ {
+ // all settings must be in pDialogDPObject
+
+ GetViewData()->SetRefTabNo( GetViewData()->GetTabNo() );
+ pResult = new ScPivotLayoutDlg( pB, pCW, pParent, pDialogDPObject );
+
+#if 0
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nTab = 0;
+ USHORT nCol1 = 0;
+ USHORT nCol2 = 0;
+ USHORT nRow1 = 0;
+ USHORT nRow2 = 0;
+
+ ScPivot* pPivot = pDoc->GetPivotAtCursor(
+ GetViewData()->GetCurX(),
+ GetViewData()->GetCurY(),
+ GetViewData()->GetTabNo() );
+ ScDPObject* pDPObj = pDoc->GetDPAtCursor(
+ GetViewData()->GetCurX(),
+ GetViewData()->GetCurY(),
+ GetViewData()->GetTabNo() );
+ ScPivotParam aPivotParam;
+
+ if ( pPivot ) // befinden wir uns auf einer Pivot-Tabelle?
+ {
+ ScArea aArea;
+ ScQueryParam aQuery;
+ pPivot->GetParam( aPivotParam, aQuery, aArea );
+ pPivot->GetSrcArea( nCol1, nRow1, nCol2, nRow2, nTab);
+
+ // Quelldatenbereich markieren
+ if ( nTab == GetViewData()->GetTabNo() )
+ MarkRange( ScRange( nCol1,nRow1,nTab, nCol2,nRow2,nTab ) );
+ }
+ else if ( pDPObj && pDPObj->IsSheetData() )
+ {
+ // get (old) ScPivotParam
+
+ pDPObj->FillOldParam( aPivotParam );
+ ScRange aSource = pDPObj->GetSourceRange();
+ nCol1 = aSource.aStart.Col();
+ nRow1 = aSource.aStart.Row();
+ nCol2 = aSource.aEnd.Col();
+ nRow2 = aSource.aEnd.Row();
+ nTab = aSource.aStart.Tab();
+
+ if ( nTab == GetViewData()->GetTabNo() )
+ MarkRange( ScRange( nCol1,nRow1,nTab, nCol2,nRow2,nTab ) );
+ }
+ else // neue Pivot-Tabelle erzeugen
+ {
+ ScDBData* pDBData = GetDBData();
+ String aErrMsg;
+
+ pDBData->GetArea( nTab, nCol1, nRow1, nCol2, nRow2 );
+
+
+ if (nRow2+2 <= MAXROW - 4) // Default-Ausgabebereich
+ { // min. Tabelle hat 5 Zeilen
+ aPivotParam.nCol = nCol1;
+ aPivotParam.nRow = nRow2+2;
+ aPivotParam.nTab = nTab;
+ }
+ else
+ {
+ aPivotParam.nCol = 0;
+ aPivotParam.nRow = 0;
+ aPivotParam.nTab = MAXTAB+1;
+ }
+
+ }
+
+ SfxItemSet aArgSet( GetPool(),
+ SCITEM_PIVOTDATA,
+ SCITEM_PIVOTDATA );
+
+ // Ermitteln der Ueberschriften:
+ String aFieldName;
+ USHORT nLabelCount = nCol2-nCol1+1;
+ short nCol = nCol1;
+ BOOL bIsValue = FALSE;
+ LabelData** aLabelArr = new LabelData*[nLabelCount];
+
+ for ( USHORT i=0; i<nLabelCount; i++ )
+ {
+ pDoc->GetString( nCol, nRow1, nTab, aFieldName );
+ if ( !aFieldName )
+ aFieldName = ColToAlpha( nCol );
+ bIsValue = lcl_IsValueCol( pDoc, nCol, nRow1+1, nRow2, nTab );
+ aLabelArr[i] = new LabelData( aFieldName, nCol, bIsValue );
+ nCol++;
+ }
+
+ aPivotParam.SetLabelData( aLabelArr, nLabelCount );
+ aArgSet.Put( ScPivotItem( SCITEM_PIVOTDATA, &aPivotParam ) );
+
+ // aktuelle Tabelle merken (wg. RefInput im Dialog)
+ GetViewData()->SetRefTabNo( GetViewData()->GetTabNo() );
+
+ *pPivotSource = ScArea( nTab, nCol1,nRow1, nCol2,nRow2 );
+ pResult = new ScPivotLayoutDlg( pB, pCW, pParent, aArgSet );
+
+
+ for ( USHORT p=0; p<nLabelCount; p++ )
+ delete aLabelArr[p];
+ delete [] aLabelArr;
+#endif
+ }
+ break;
+
+ case SID_OPENDLG_EDIT_PRINTAREA:
+ {
+ pResult = new ScPrintAreasDlg( pB, pCW, pParent );
+ }
+ break;
+
+ case SID_OPENDLG_CONDFRMT:
+ {
+ ScViewData* pViewData = GetViewData();
+
+ ScDocument* pDoc = pViewData->GetDocument();
+ const ScConditionalFormat* pForm = pDoc->GetCondFormat(
+ pViewData->GetCurX(), pViewData->GetCurY(), pViewData->GetTabNo() );
+
+ // aktuelle Tabelle merken (wg. RefInput im Dialog)
+ pViewData->SetRefTabNo( pViewData->GetTabNo() );
+
+ pResult = new ScConditionalFormatDlg( pB, pCW, pParent, pDoc, pForm );
+ }
+ break;
+
+ case SID_OPENDLG_FUNCTION:
+ {
+ // Dialog schaut selber, was in der Zelle steht
+
+ pResult = new ScFormulaDlg( pB, pCW, pParent, GetViewData() );
+ }
+ break;
+
+ case FID_CHG_SHOW:
+ {
+ // Dialog schaut selber, was in der Zelle steht
+
+ pResult = new ScHighlightChgDlg( pB, pCW, pParent, GetViewData() );
+ }
+ break;
+
+ case WID_SIMPLE_REF:
+ {
+ // Dialog schaut selber, was in der Zelle steht
+
+ pResult = new ScSimpleRefDlg( pB, pCW, pParent, GetViewData() );
+ }
+ break;
+
+
+ default:
+ DBG_ERROR( "ScTabViewShell::CreateRefDialog: unbekannte ID" );
+ break;
+ }
+
+ if (pResult)
+ {
+ // Die Dialoge gehen immer mit eingeklapptem Zusaetze-Button auf,
+ // darum muss die Groesse ueber das Initialize gerettet werden
+ // (oder den Zusaetze-Status mit speichern !!!)
+
+ Size aSize = pResult->GetSizePixel();
+ pResult->Initialize( pInfo );
+ pResult->SetSizePixel(aSize);
+ }
+
+ return pResult;
+}
+
+
+
diff --git a/sc/source/ui/view/tabvwshd.cxx b/sc/source/ui/view/tabvwshd.cxx
new file mode 100644
index 000000000000..e3c04fd91287
--- /dev/null
+++ b/sc/source/ui/view/tabvwshd.cxx
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwshd.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#ifdef WNT
+#pragma optimize ("", off)
+#endif
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <sfx2/request.hxx>
+#include <sfx2/topfrm.hxx>
+#include <so3/ipenv.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/wrkwin.hxx>
+
+#include "tabvwsh.hxx"
+#include "global.hxx"
+#include "scmod.hxx"
+#include "docsh.hxx"
+#include "sc.hrc"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+//------------------------------------------------------------------
+
+#define IS_AVAILABLE(WhichId,ppItem) \
+ (pReqArgs->GetItemState((WhichId), TRUE, ppItem ) == SFX_ITEM_SET)
+
+//! Parent-Window fuer Dialoge
+//! Problem: OLE Server!
+
+Window* ScTabViewShell::GetDialogParent()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ if ( pDocSh->IsOle() )
+ {
+ SvInPlaceEnvironment* pEnv = pDocSh->GetIPEnv();
+ if (pEnv)
+ return pEnv->GetEditWin();
+ }
+#if 0
+ else if ( !GetViewFrame()->ISA(SfxTopViewFrame) ) // z.B. PlugIn
+ {
+ return GetActiveWin();
+ }
+#endif
+
+ return GetActiveWin(); // for normal views, too
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/tabvwshe.cxx b/sc/source/ui/view/tabvwshe.cxx
new file mode 100644
index 000000000000..e3f4174e1aaa
--- /dev/null
+++ b/sc/source/ui/view/tabvwshe.cxx
@@ -0,0 +1,338 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwshe.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#ifndef _EEITEM_HXX //autogen
+#include <svx/eeitem.hxx>
+#endif
+
+#include "scitems.hxx"
+#define ITEMID_FIELD EE_FEATURE_FIELD
+#include <svx/editview.hxx>
+#include <svx/flditem.hxx>
+#include <svx/hlnkitem.hxx>
+#include <svx/srchitem.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/objface.hxx>
+#include <svtools/stritem.hxx>
+
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+#include "scmod.hxx"
+#include "impex.hxx"
+#include "editsh.hxx"
+#include "dociter.hxx"
+#include "inputhdl.hxx"
+
+//==================================================================
+
+String __EXPORT ScTabViewShell::GetSelectionText( BOOL bWholeWord )
+{
+ String aStrSelection;
+
+ if ( pEditShell && pEditShell == GetMySubShell() )
+ {
+ aStrSelection = pEditShell->GetSelectionText( bWholeWord );
+ }
+ else
+ {
+ ScRange aRange;
+
+ if ( GetViewData()->GetSimpleArea( aRange ) )
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ if ( bInFormatDialog && aRange.aStart.Row() != aRange.aEnd.Row() )
+ {
+ // Range auf eine Datenzeile begrenzen
+ // (#48613# nur wenn der Aufruf aus einem Format-Dialog kommt)
+ ScHorizontalCellIterator aIter( pDoc, aRange.aStart.Tab(),
+ aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row() );
+ USHORT nCol, nRow;
+ if ( aIter.GetNext( nCol, nRow ) )
+ {
+ aRange.aStart.SetCol( nCol );
+ aRange.aStart.SetRow( nRow );
+ aRange.aEnd.SetRow( nRow );
+ }
+ else
+ aRange.aEnd = aRange.aStart;
+ }
+
+ ScImportExport aObj( pDoc, aRange );
+ aObj.SetFormulas( GetViewData()->GetOptions().GetOption( VOPT_FORMULAS ) );
+ aObj.ExportString( aStrSelection );
+
+ aStrSelection.ConvertLineEnd( LINEEND_CR );
+
+ // Tab/CR durch Space ersetzen, wenn fuer Dialog oder per Basic/SelectionTextExt,
+ // oder wenn es eine einzelne Zeile ist.
+ // Sonst mehrzeilig mit Tabs beibehalten (z.B. Mail oder Basic/SelectionText).
+ // Fuer Mail werden die Tabs dann spaeter in (mehrere) Spaces gewandelt.
+
+ if ( bInFormatDialog || bWholeWord || aRange.aEnd.Row() == aRange.aStart.Row() )
+ {
+ xub_StrLen nAt;
+ while ( (nAt = aStrSelection.Search( CHAR_CR )) != STRING_NOTFOUND )
+ aStrSelection.SetChar( nAt, ' ' );
+ while ( (nAt = aStrSelection.Search( '\t' )) != STRING_NOTFOUND )
+ aStrSelection.SetChar( nAt, ' ' );
+
+ aStrSelection.EraseTrailingChars( ' ' );
+ }
+ }
+ }
+
+ return aStrSelection;
+}
+
+//------------------------------------------------------------------------
+
+void ScTabViewShell::InsertURL( const String& rName, const String& rURL, const String& rTarget,
+ USHORT nMode )
+{
+ SvxLinkInsertMode eMode = (SvxLinkInsertMode) nMode;
+ BOOL bAsText = ( eMode != HLINK_BUTTON ); // Default ist jetzt Text
+
+ if ( bAsText )
+ {
+ // InsertBookmark ?
+ InsertURLField( rName, rURL, rTarget );
+ }
+ else
+ {
+ SC_MOD()->InputEnterHandler();
+ InsertURLButton( rName, rURL, rTarget );
+ }
+}
+
+//------------------------------------------------------------------------
+
+// wenn CLOOKs: -> mit <editview.hxx> <flditem.hxx>in neue tabvwsh
+
+void lcl_SelectFieldAfterInsert( EditView& rView )
+{
+ ESelection aSel = rView.GetSelection();
+ if ( aSel.nStartPos == aSel.nEndPos && aSel.nStartPos > 0 )
+ {
+ // Cursor is behind the inserted field -> extend selection to the left
+
+ --aSel.nStartPos;
+ rView.SetSelection( aSel );
+ }
+}
+
+void ScTabViewShell::InsertURLField( const String& rName, const String& rURL, const String& rTarget )
+{
+ SvxURLField aURLField( rURL, rName, SVXURLFORMAT_REPR );
+ aURLField.SetTargetFrame( rTarget );
+ SvxFieldItem aURLItem( aURLField );
+
+ ScViewData* pViewData = GetViewData();
+ ScTabView* pView = pViewData->GetView();
+ ScModule* pScMod = SC_MOD();
+ ScInputHandler* pHdl = pScMod->GetInputHdl();
+
+ BOOL bSelectFirst = FALSE;
+ if ( !pScMod->IsEditMode() )
+ {
+ // single url in cell is shown in the dialog and replaced
+ bSelectFirst = HasBookmarkAtCursor( NULL );
+ pScMod->SetInputMode( SC_INPUT_TABLE );
+ }
+
+ EditView* pTopView = pHdl->GetTopView();
+ EditView* pTableView = pHdl->GetTableView();
+ DBG_ASSERT( pTopView || pTableView, "No EditView" );
+
+ if ( bSelectFirst )
+ {
+ if ( pTopView )
+ pTopView->SetSelection( ESelection(0,0,0,1) );
+ if ( pTableView )
+ pTableView->SetSelection( ESelection(0,0,0,1) );
+ }
+
+ pHdl->DataChanging();
+
+ if ( pTopView )
+ {
+ pTopView->InsertField( aURLItem );
+ lcl_SelectFieldAfterInsert( *pTopView );
+ }
+ if ( pTableView )
+ {
+ pTableView->InsertField( aURLItem );
+ lcl_SelectFieldAfterInsert( *pTableView );
+ }
+
+ pHdl->DataChanged();
+}
+
+void ScTabViewShell::ExecSearch( SfxRequest& rReq )
+{
+ SfxBindings& rBindings = GetViewFrame()->GetBindings();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+ USHORT nSlot = rReq.GetSlot();
+ const SfxPoolItem* pItem;
+
+ switch ( nSlot )
+ {
+ case FID_SEARCH_NOW:
+ {
+ const SfxPoolItem* pItem;
+ if ( pReqArgs &&
+ SFX_ITEM_SET == pReqArgs->GetItemState(SID_SEARCH_ITEM, FALSE, &pItem) )
+ {
+ DBG_ASSERT( pItem->ISA(SvxSearchItem), "falsches Item" );
+ const SvxSearchItem* pSearchItem = (const SvxSearchItem*) pItem;
+
+ ScGlobal::SetSearchItem( *pSearchItem );
+ SearchAndReplace( pSearchItem, TRUE, rReq.IsAPI() );
+ rReq.Done();
+ }
+ }
+ break;
+
+ case SID_SEARCH_ITEM:
+ if (pReqArgs && SFX_ITEM_SET ==
+ pReqArgs->GetItemState(SID_SEARCH_ITEM, FALSE, &pItem))
+ {
+ // Search-Item merken
+ DBG_ASSERT( pItem->ISA(SvxSearchItem), "falsches Item" );
+ ScGlobal::SetSearchItem( *(const SvxSearchItem*) pItem );
+ }
+ else
+ DBG_ERROR("SID_SEARCH_ITEM ohne Parameter");
+ break;
+ case FID_SEARCH:
+ case FID_REPLACE:
+ case FID_REPLACE_ALL:
+ case FID_SEARCH_ALL:
+ {
+ if (pReqArgs && SFX_ITEM_SET == pReqArgs->GetItemState(nSlot, FALSE, &pItem))
+ {
+ // SearchItem holen
+
+ SvxSearchItem aSearchItem = ScGlobal::GetSearchItem();
+
+ // SearchItem fuellen
+
+ aSearchItem.SetSearchString(((SfxStringItem*)pItem)->GetValue());
+ if(SFX_ITEM_SET == pReqArgs->GetItemState(FN_PARAM_1, FALSE, &pItem))
+ aSearchItem.SetReplaceString(((SfxStringItem*)pItem)->GetValue());
+
+ if (nSlot == FID_SEARCH)
+ aSearchItem.SetCommand(SVX_SEARCHCMD_FIND);
+ else if(nSlot == FID_REPLACE)
+ aSearchItem.SetCommand(SVX_SEARCHCMD_REPLACE);
+ else if(nSlot == FID_REPLACE_ALL)
+ aSearchItem.SetCommand(SVX_SEARCHCMD_REPLACE_ALL);
+ else
+ aSearchItem.SetCommand(SVX_SEARCHCMD_FIND_ALL);
+
+ // Request ausfuehren (dabei wird das SearchItem gespeichert)
+
+ aSearchItem.SetWhich(SID_SEARCH_ITEM);
+ SFX_DISPATCHER().Execute( FID_SEARCH_NOW,
+ rReq.IsAPI() ? SFX_CALLMODE_API|SFX_CALLMODE_SYNCHRON :
+ SFX_CALLMODE_STANDARD,
+ &aSearchItem, 0L );
+ }
+ else
+ {
+ SFX_DISPATCHER().Execute(
+ SID_SEARCH_DLG, SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD );
+ }
+ }
+ break;
+ case FID_REPEAT_SEARCH:
+ {
+ // nochmal mit ScGlobal::GetSearchItem()
+
+ SvxSearchItem aSearchItem = ScGlobal::GetSearchItem();
+ aSearchItem.SetWhich(SID_SEARCH_ITEM);
+ SFX_DISPATCHER().Execute( FID_SEARCH_NOW,
+ rReq.IsAPI() ? SFX_CALLMODE_API|SFX_CALLMODE_SYNCHRON :
+ SFX_CALLMODE_STANDARD,
+ &aSearchItem, 0L );
+ }
+ break;
+// case FID_SEARCH_COUNT:
+ }
+}
+
+//--------------------------------------------------------------------
+
+
+
+
+
+
diff --git a/sc/source/ui/view/tabvwshf.cxx b/sc/source/ui/view/tabvwshf.cxx
new file mode 100644
index 000000000000..c587e40ec467
--- /dev/null
+++ b/sc/source/ui/view/tabvwshf.cxx
@@ -0,0 +1,762 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwshf.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <sfx2/request.hxx>
+#include <basic/sbstar.hxx>
+#include <svtools/stritem.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "tabvwsh.hxx"
+#include "sc.hrc"
+#include "docsh.hxx"
+#include "document.hxx"
+#include "shtabdlg.hxx"
+#include "scresid.hxx"
+#include "instbdlg.hxx"
+#include "globstr.hrc"
+#include "strindlg.hxx"
+#include "mvtabdlg.hxx"
+
+
+
+#define IS_AVAILABLE(WhichId,ppItem) \
+ (pReqArgs->GetItemState((WhichId), TRUE, ppItem ) == SFX_ITEM_SET)
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
+{
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+
+ USHORT nCurrentTab = pViewData->GetTabNo();
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nSlot = rReq.GetSlot();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+
+ HideListBox(); // Autofilter-DropDown-Listbox
+
+ switch ( nSlot )
+ {
+ case FID_TABLE_VISIBLE:
+ {
+ USHORT nTabNr = pViewData->GetTabNo();
+ String aName;
+ pDoc->GetName( nCurrentTab, aName );
+
+ BOOL bVisible=TRUE;
+ if( pReqArgs != NULL )
+ {
+ const SfxPoolItem* pItem;
+ if( IS_AVAILABLE( FID_TABLE_VISIBLE, &pItem ) )
+ bVisible = ((const SfxBoolItem*)pItem)->GetValue();
+ }
+
+ if( ! bVisible ) // ausblenden
+ {
+ ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+ USHORT nVis = 0;
+ for ( USHORT i=0; i < nTabCount && nVis<2; i++ )
+ if (pDoc->IsVisible(i))
+ ++nVis;
+ if ( nVis<2 || !pDoc->IsDocEditable() || nTabSelCount > 1 )
+ break;
+
+ USHORT nHideTab;
+ if (pDoc->GetTable( aName, nHideTab ))
+ HideTable( nHideTab );
+ }
+ else // einblenden
+ {
+ ShowTable( aName );
+ }
+ }
+ break;
+
+ case FID_TABLE_HIDE:
+ {
+ ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+ USHORT nVis = 0;
+ for ( USHORT i=0; i < nTabCount && nVis<2; i++ )
+ if (pDoc->IsVisible(i))
+ ++nVis;
+ if ( nVis<2 || !pDoc->IsDocEditable() || nTabSelCount > 1 )
+ break;
+
+
+ String aName;
+ if( pReqArgs != NULL )
+ {
+ const SfxPoolItem* pItem;
+ if( IS_AVAILABLE( FID_TABLE_HIDE, &pItem ) )
+ aName = ((const SfxStringItem*)pItem)->GetValue();
+ }
+
+ if (!aName.Len())
+ {
+ pDoc->GetName( nCurrentTab, aName ); // aktuelle Tabelle
+ rReq.AppendItem( SfxStringItem( FID_TABLE_HIDE, aName ) );
+ }
+
+ USHORT nHideTab;
+ if (pDoc->GetTable( aName, nHideTab ))
+ HideTable( nHideTab );
+
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ break;
+
+ case FID_TABLE_SHOW:
+ {
+ String aName;
+ if ( pReqArgs )
+ {
+ const SfxPoolItem* pItem;
+ if( IS_AVAILABLE( FID_TABLE_SHOW, &pItem ) )
+ {
+ aName = ((const SfxStringItem*)pItem)->GetValue();
+
+ ShowTable( aName );
+
+ if( ! rReq.IsAPI() )
+ rReq.Done();
+ }
+ }
+ else
+ {
+ List aList;
+
+ for ( USHORT i=0; i != nTabCount; i++ )
+ {
+ if (!pDoc->IsVisible(i))
+ {
+ String* pNewEntry = new String;
+ pDoc->GetName( i, *pNewEntry );
+ aList.Insert( pNewEntry );
+ }
+ }
+
+ ScShowTabDlg* pDlg = new ScShowTabDlg( GetDialogParent(), aList );
+ if ( pDlg->Execute() == RET_OK )
+ {
+ USHORT nCount = pDlg->GetSelectEntryCount();
+ for (USHORT nPos=0; nPos<nCount; nPos++)
+ {
+ aName = pDlg->GetSelectEntry(nPos);
+ ShowTable( aName );
+ }
+ rReq.AppendItem( SfxStringItem( FID_TABLE_SHOW, aName ) );
+ rReq.Done();
+ }
+ delete pDlg;
+
+ void* pEntry = aList.First();
+ while ( pEntry )
+ {
+ delete (String*) aList.Remove( pEntry );
+ pEntry = aList.Next();
+ }
+ }
+ }
+ break;
+
+ case FID_INS_TABLE:
+ {
+ ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+ USHORT nTabNr = nCurrentTab;
+
+ if ( !pDoc->IsDocEditable() )
+ break; // gesperrt
+
+ if ( pReqArgs != NULL ) // von Basic
+ {
+ BOOL bOk = FALSE;
+ const SfxPoolItem* pTabItem;
+ const SfxPoolItem* pNameItem;
+ String aName;
+
+ if ( IS_AVAILABLE( FN_PARAM_1, &pTabItem ) &&
+ IS_AVAILABLE( nSlot, &pNameItem ) )
+ {
+ // Tabellennr. von Basic: 1-basiert
+
+ aName = ((const SfxStringItem*)pNameItem)->GetValue();
+ nTabNr = ((const SfxUInt16Item*)pTabItem)->GetValue() - 1;
+ if ( nTabNr < nTabCount )
+ bOk = InsertTable( aName, nTabNr );
+ }
+
+ if (bOk)
+ rReq.Done( *pReqArgs );
+ //! sonst Fehler setzen
+ }
+ else // Dialog
+ {
+ ScInsertTableDlg* pDlg = new ScInsertTableDlg(
+ GetDialogParent(),
+ *pViewData,nTabSelCount);
+
+ if ( RET_OK == pDlg->Execute() )
+ {
+ if (pDlg->GetTablesFromFile())
+ {
+ USHORT nTabs[MAXTAB+1];
+ USHORT nCount = 0;
+ USHORT n = 0;
+ const String* pStr = pDlg->GetFirstTable( &n );
+ while ( pStr )
+ {
+ nTabs[nCount++] = n;
+ pStr = pDlg->GetNextTable( &n );
+ }
+ BOOL bLink = pDlg->GetTablesAsLink();
+ if (nCount)
+ {
+ if(pDlg->IsTableBefore())
+ {
+ ImportTables( pDlg->GetDocShellTables(), nCount, nTabs,
+ bLink,nTabNr );
+ }
+ else
+ {
+ USHORT nTabAfter = nTabNr+1;
+
+ for(USHORT j=nCurrentTab+1;j<nTabCount;j++)
+ {
+ if(!pDoc->IsScenario(j))
+ {
+ nTabAfter=j;
+ break;
+ }
+ }
+
+ ImportTables( pDlg->GetDocShellTables(), nCount, nTabs,
+ bLink,nTabAfter );
+ }
+ }
+ }
+ else
+ {
+ USHORT nCount=pDlg->GetTableCount();
+ if(pDlg->IsTableBefore())
+ {
+ if(nCount==1 && pDlg->GetFirstTable()->Len()>0)
+ InsertTable( *pDlg->GetFirstTable(), nTabNr );
+ else
+ InsertTables( NULL, nTabNr,nCount );
+ }
+ else
+ {
+ USHORT nTabAfter = nTabNr+1;
+ USHORT nSelHigh=0;
+
+ for(int i=0;i<nTabCount;i++)
+ {
+ if(rMark.GetTableSelect(i))
+ {
+ nSelHigh=i;
+ }
+ }
+
+ for(USHORT j=nSelHigh+1;j<nTabCount;j++)
+ {
+ if(!pDoc->IsScenario(j))
+ {
+ nTabAfter=j;
+ break;
+ }
+ }
+
+ if(nCount==1 && pDlg->GetFirstTable()->Len()>0)
+ {
+ InsertTable( *pDlg->GetFirstTable(), nTabAfter);
+ }
+ else
+ {
+ InsertTables( NULL, nTabAfter,nCount);
+ }
+ }
+ }
+ }
+
+ delete pDlg;
+ }
+ }
+ break;
+
+ case FID_TAB_APPEND:
+ case FID_TAB_RENAME:
+ case FID_TAB_MENU_RENAME:
+ {
+ // FID_TAB_MENU_RENAME - "umbenennen" im Menu
+ // FID_TAB_RENAME - "Name"-Property fuer Basic
+ // Execute ist gleich, aber im GetState wird MENU_RENAME evtl. disabled
+
+ if ( nSlot == FID_TAB_MENU_RENAME )
+ nSlot = FID_TAB_RENAME; // Execute ist gleich
+
+ USHORT nTabNr = pViewData->GetTabNo();
+ ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+
+ if ( !pDoc->IsDocEditable() )
+ break; // alles gesperrt
+
+ if ( nSlot != FID_TAB_APPEND &&
+ ( pDoc->IsTabProtected( nTabNr ) || nTabSelCount > 1 ) )
+ break; // kein Rename
+
+#if 0
+ // ScSbxObject wird nicht mehr benutzt, stattdessen aus dem
+ // ScSbxTable::Notify die richtige Tabelle an der Basic-View eingestellt
+ if( rReq.IsAPI() )
+ {
+ SbxObject* pObj = GetScSbxObject();
+ ScSbxTable* pSbxTab = PTR_CAST( ScSbxTable, pObj );
+ DBG_ASSERT( pSbxTab, "pSbxTab???" );
+
+ if( pSbxTab )
+ nTabNr = pSbxTab->GetTableNr();
+ }
+#endif
+
+ if( pReqArgs != NULL )
+ {
+ BOOL bDone = FALSE;
+ const SfxPoolItem* pItem;
+ String aName;
+
+ if( IS_AVAILABLE( FN_PARAM_1, &pItem ) )
+ nTabNr = ((const SfxUInt16Item*)pItem)->GetValue();
+
+ if( IS_AVAILABLE( nSlot, &pItem ) )
+ aName = ((const SfxStringItem*)pItem)->GetValue();
+
+ switch ( nSlot )
+ {
+ case FID_TAB_APPEND:
+ bDone = AppendTable( aName );
+ break;
+ case FID_TAB_RENAME:
+ bDone = RenameTable( aName, nTabNr );
+ break;
+ }
+
+ if( bDone )
+ {
+ rReq.Done( *pReqArgs );
+ }
+ }
+ else
+ {
+ USHORT nRet = RET_OK;
+ BOOL bDone = FALSE;
+ String aErrMsg ( ScGlobal::GetRscString( STR_INVALIDTABNAME ) );
+ String aName;
+ String aDlgTitle;
+
+ switch ( nSlot )
+ {
+ case FID_TAB_APPEND:
+ aDlgTitle = String(ScResId(SCSTR_APDTABLE));
+ pDoc->CreateValidTabName( aName );
+ break;
+
+ case FID_TAB_RENAME:
+ aDlgTitle = String(ScResId(SCSTR_RENAMETAB));
+ pDoc->GetName( pViewData->GetTabNo(), aName );
+ break;
+ }
+
+ ScStringInputDlg* pDlg =
+ new ScStringInputDlg( GetDialogParent(),
+ aDlgTitle,
+ String(ScResId(SCSTR_NAME)),
+ aName,
+ nSlot );
+
+ while ( !bDone && nRet == RET_OK )
+ {
+ nRet = pDlg->Execute();
+
+ if ( nRet == RET_OK )
+ {
+ pDlg->GetInputString( aName );
+
+
+ switch ( nSlot )
+ {
+ case FID_TAB_APPEND:
+ bDone = AppendTable( aName );
+ break;
+ case FID_TAB_RENAME:
+ bDone = RenameTable( aName, nTabNr );
+ break;
+ }
+
+ if ( bDone )
+ {
+ rReq.AppendItem( SfxStringItem( nSlot, aName ) );
+ rReq.Done();
+ }
+ else
+ {
+ if( rReq.IsAPI() )
+ {
+ StarBASIC::Error( SbERR_SETPROP_FAILED ); // XXX Fehlerbehandlung???
+ }
+ else
+ {
+ nRet = ErrorBox( GetDialogParent(),
+ WinBits( WB_OK | WB_DEF_OK ),
+ aErrMsg
+ ).Execute();
+ }
+ }
+ }
+ }
+ delete pDlg;
+ }
+ }
+ break;
+
+ case FID_TAB_MOVE:
+ {
+ if ( pDoc->GetChangeTrack() != NULL )
+ break; // bei aktiviertem ChangeTracking kein TabMove
+
+ BOOL bDoIt = FALSE;
+ USHORT nDoc = 0;
+ USHORT nTab = pViewData->GetTabNo();
+ BOOL bCpy = FALSE;
+ String aDocName;
+
+ if( pReqArgs != NULL )
+ {
+ USHORT nTableCount = pDoc->GetTableCount();
+ const SfxPoolItem* pItem;
+
+ if( IS_AVAILABLE( FID_TAB_MOVE, &pItem ) )
+ aDocName = ((const SfxStringItem*)pItem)->GetValue();
+ if( IS_AVAILABLE( FN_PARAM_1, &pItem ) )
+ {
+ // Tabelle ist 1-basiert
+ nTab = ((const SfxUInt16Item*)pItem)->GetValue() - 1;
+ if ( nTab >= nTableCount )
+ nTab = SC_TAB_APPEND;
+ }
+ if( IS_AVAILABLE( FN_PARAM_2, &pItem ) )
+ bCpy = ((const SfxBoolItem*)pItem)->GetValue();
+
+ if( aDocName.Len() )
+ {
+ SfxObjectShell* pSh = SfxObjectShell::GetFirst();
+ ScDocShell* pScSh = NULL;
+ USHORT i=0;
+
+ while ( pSh )
+ {
+ pScSh = PTR_CAST( ScDocShell, pSh );
+
+ if( pScSh )
+ {
+ pScSh->GetTitle();
+
+ if( pScSh->GetTitle() == aDocName )
+ {
+ nDoc = i;
+ nTableCount = pScSh->GetDocument()->GetTableCount();
+ bDoIt = TRUE;
+ break;
+ }
+
+ i++; // nur die ScDocShell's zaehlen
+ }
+ pSh = SfxObjectShell::GetNext( *pSh );
+ }
+ }
+ else // Kein Dokumentname -> neues Dokument
+ {
+ nDoc = SC_DOC_NEW;
+ bDoIt = TRUE;
+ }
+
+ if ( bDoIt && nTab >= nTableCount ) // ggf. anhaengen
+ nTab = SC_TAB_APPEND;
+ }
+ else
+ {
+ ScMoveTableDlg* pDlg = new ScMoveTableDlg( GetDialogParent() );
+
+ USHORT nTableCount = pDoc->GetTableCount();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+
+
+ if(nTableCount==nTabSelCount)
+ {
+ pDlg->SetCopyTable();
+ pDlg->EnableCopyTable(FALSE);
+ }
+ if ( pDlg->Execute() == RET_OK )
+ {
+ nDoc = pDlg->GetSelectedDocument();
+ nTab = pDlg->GetSelectedTable();
+ bCpy = pDlg->GetCopyTable();
+ bDoIt = TRUE;
+
+ String aDocName;
+ if ( nDoc != SC_DOC_NEW )
+ {
+ ScDocShell* pSh = ScDocShell::GetShellByNum( nDoc );
+ if (pSh)
+ aDocName = pSh->GetTitle();
+ }
+ rReq.AppendItem( SfxStringItem( FID_TAB_MOVE, aDocName ) );
+ // Tabelle ist 1-basiert, wenn nicht APPEND
+ USHORT nBasicTab = ( nTab <= MAXTAB ) ? (nTab+1) : nTab;
+ rReq.AppendItem( SfxUInt16Item( FN_PARAM_1, nBasicTab ) );
+ rReq.AppendItem( SfxBoolItem( FN_PARAM_2, bCpy ) );
+ }
+ delete pDlg;
+ }
+
+ if( bDoIt )
+ {
+ rReq.Done(); // aufzeichnen, solange das Dokument noch aktiv ist
+
+ MoveTable( nDoc, nTab, bCpy );
+ }
+ }
+ break;
+
+ case FID_DELETE_TABLE:
+ {
+ // Parameter war ueberfluessig, weil die Methode an der Table haengt
+
+ BOOL bDoIt = rReq.IsAPI();
+ if( !bDoIt )
+ {
+ // wenn's nicht von Basic kommt, nochmal nachfragen:
+
+ bDoIt = ( RET_YES ==
+ QueryBox( GetDialogParent(),
+ WinBits( WB_YES_NO | WB_DEF_YES ),
+ ScGlobal::GetRscString(STR_QUERY_DELTAB)
+ ).Execute() );
+ }
+ if( bDoIt )
+ {
+ USHORT nNewTab = nCurrentTab;
+ USHORT nFirstTab=0;
+ BOOL bTabFlag=FALSE;
+ ScMarkData& rMark = pViewData->GetMarkData();
+ SvUShorts TheTabs;
+ for(USHORT i=0;i<nTabCount;i++)
+ {
+ if(rMark.GetTableSelect(i) &&!pDoc->IsTabProtected(i))
+ {
+ TheTabs.Insert(i,TheTabs.Count());
+ bTabFlag=TRUE;
+ if(nNewTab==i) nNewTab++;
+ }
+ if(!bTabFlag) nFirstTab=i;
+ }
+ if(nNewTab>=nTabCount) nNewTab=nFirstTab;
+
+ pViewData->SetTabNo(nNewTab);
+ DeleteTables(TheTabs);
+ TheTabs.Remove(0,TheTabs.Count());
+ rReq.Done();
+ }
+ }
+ break;
+
+ default:
+ DBG_ERROR("Unbekannte Message bei ViewShell");
+ break;
+ }
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::GetStateTable( SfxItemSet& rSet )
+{
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nPosX = pViewData->GetCurX();
+ USHORT nPosY = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+
+ BOOL bOle = GetViewData()->GetDocShell()->IsOle();
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+
+ case FID_TABLE_VISIBLE:
+ rSet.Put( SfxBoolItem( nWhich, pDoc->IsVisible(nTab) ));
+ break;
+
+ case FID_TABLE_HIDE:
+ {
+ USHORT nVis = 0;
+ for ( USHORT i=0; i < nTabCount && nVis<2; i++ )
+ if (pDoc->IsVisible(i))
+ ++nVis;
+
+ if ( nVis<2 || !pDoc->IsDocEditable() || nTabSelCount > 1 )
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case FID_TABLE_SHOW:
+ {
+ BOOL bHasHidden = FALSE;
+ for ( USHORT i=0; i < nTabCount && !bHasHidden; i++ )
+ if (!pDoc->IsVisible(i))
+ bHasHidden = TRUE;
+ if ( !bHasHidden || pDoc->IsDocProtected() || nTabSelCount > 1 )
+ rSet.DisableItem( nWhich );
+ }
+ break;
+
+ case FID_DELETE_TABLE:
+ {
+ if ( pDoc->GetChangeTrack() )
+ rSet.DisableItem( nWhich );
+ else
+ {
+ USHORT nVis = 0;
+ for ( USHORT i=0; i < nTabCount && nVis<2; i++ )
+ if (pDoc->IsVisible(i))
+ ++nVis;
+ if ( pDoc->IsTabProtected(nTab)
+ || !pDoc->IsDocEditable()
+ || nVis < 2
+ || nTabSelCount == nTabCount)
+ rSet.DisableItem( nWhich );
+ }
+ }
+ break;
+
+ case FID_INS_TABLE:
+ case FID_TAB_APPEND:
+ if ( !pDoc->IsDocEditable()
+ || nTabCount > MAXTAB)
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FID_TAB_MOVE:
+ if ( !pDoc->IsDocEditable()
+ || pDoc->GetChangeTrack() != NULL
+ || nTabCount > MAXTAB)
+ rSet.DisableItem( nWhich );
+ break;
+
+ // FID_TAB_MENU_RENAME - "umbenennen" im Menu
+ // FID_TAB_RENAME - "Name"-Property fuer Basic
+
+ case FID_TAB_MENU_RENAME:
+ if ( !pDoc->IsDocEditable() ||
+ pDoc->IsTabProtected(nTab) ||nTabSelCount > 1 )
+ rSet.DisableItem( nWhich );
+ break;
+
+ case FID_TAB_RENAME:
+ {
+ String aTabName;
+ pDoc->GetName( nTab, aTabName );
+
+ rSet.Put( SfxStringItem( nWhich, aTabName ));
+
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+
+
diff --git a/sc/source/ui/view/tabvwshg.cxx b/sc/source/ui/view/tabvwshg.cxx
new file mode 100644
index 000000000000..cfe08523e006
--- /dev/null
+++ b/sc/source/ui/view/tabvwshg.cxx
@@ -0,0 +1,420 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwshg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX //***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX
+//#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+
+//sfxsh.hxx
+//#define _SFXSH_HXX
+///#define _PLUGAPPL_HXX
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+#define _SFXMSG_HXX
+#define _SFXOBJFACE_HXX
+#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+
+// SFX
+#define _SFX_SAVEOPT_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+#define _SFX_CHILDALIGN_HXX
+#define _SFXAPPWIN_HXX
+#define _SFX_CHILDWIN_HXX
+#define _SFXCTRLITEM_HXX
+
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+//#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdoc.hxx
+//#define _SFXDOC_HXX
+// --- #define _RSCSFX_HXX
+//#define SFX_DECL_OBJECTSHELL_DEFINED
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HACK_HXX
+#define _SFX_FCONTNR_HXX
+#define STRING_LIST
+#define _SFXDOCFILE_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXDLG_HXX
+#define _DOCMGR_HXX
+//#define _SFXITEMS_HXX
+//#define _SFXTABDLG_HXX
+#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define SFX_DECL_OBJECTSHELL_DEFINED
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFXDOCKWIN_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+#define _SFXNAVI_HXX
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS //**
+
+#define _SI_NOSBXCONTROLS
+//#define _VCONT_HXX ***
+#define _SI_NOOTHERFORMS
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+//#define SI_VCDRAWOBJ
+
+#include <tools/urlobj.hxx>
+#include <svx/fmglob.hxx>
+#include <svx/svdouno.hxx>
+#include <svx/svdpagv.hxx>
+
+#include <com/sun/star/form/FormButtonType.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/awt/XControlModel.hpp>
+
+using namespace com::sun::star;
+
+#include "tabvwsh.hxx"
+#include "document.hxx"
+#include "drawview.hxx"
+#include "globstr.hrc"
+
+//------------------------------------------------------------------------
+
+void ScTabViewShell::InsertURLButton( const String& rName, const String& rURL,
+ const String& rTarget,
+ const Point* pInsPos )
+{
+ // Tabelle geschuetzt ?
+
+ ScViewData* pViewData = GetViewData();
+ if ( pViewData->GetDocument()->IsTabProtected(pViewData->GetTabNo()) )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ MakeDrawLayer();
+
+ ScTabView* pView = pViewData->GetView();
+// SdrView* pDrView = pView->GetSdrView();
+ ScDrawView* pDrView = pView->GetScDrawView();
+ SdrModel* pModel = pDrView->GetModel();
+
+ SdrObject* pObj = SdrObjFactory::MakeNewObject(FmFormInventor, OBJ_FM_BUTTON,
+ pDrView->GetPageViewPvNum(0)->GetPage(), pModel);
+ SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, pObj);
+
+ uno::Reference<awt::XControlModel> xControlModel = pUnoCtrl->GetUnoControlModel();
+ DBG_ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
+ if( !xControlModel.is() )
+ return;
+
+ uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY );
+ uno::Any aAny;
+
+ aAny <<= rtl::OUString(rName);
+ xPropSet->setPropertyValue( rtl::OUString::createFromAscii( "Label" ), aAny );
+
+ aAny <<= rtl::OUString(INetURLObject::RelToAbs(rURL));
+ xPropSet->setPropertyValue( rtl::OUString::createFromAscii( "TargetURL" ), aAny );
+
+ if( rTarget.Len() )
+ {
+ aAny <<= rtl::OUString(rTarget);
+ xPropSet->setPropertyValue( rtl::OUString::createFromAscii( "TargetFrame" ), aAny );
+ }
+
+ form::FormButtonType eButtonType = form::FormButtonType_URL;
+ aAny <<= eButtonType;
+ xPropSet->setPropertyValue( rtl::OUString::createFromAscii( "ButtonType" ), aAny );
+
+ Point aPos;
+ if (pInsPos)
+ aPos = *pInsPos;
+ else
+ aPos = GetInsertPos();
+
+ // Groesse wie in 3.1:
+ Size aSize = GetActiveWin()->PixelToLogic(Size(140, 20));
+
+ pObj->SetLogicRect(Rectangle(aPos, aSize));
+// pObj->Resize(Point(), Fraction(1, 1), Fraction(1, 1));
+
+ // am alten VC-Button musste die Position/Groesse nochmal explizit
+ // gesetzt werden - das scheint mit UnoControls nicht noetig zu sein
+
+ // nicht markieren wenn Ole
+ pDrView->InsertObjectSafe( pObj, *pDrView->GetPageViewPvNum(0) );
+}
+
+
+
+
diff --git a/sc/source/ui/view/tabvwshh.cxx b/sc/source/ui/view/tabvwshh.cxx
new file mode 100644
index 000000000000..f72a550e7790
--- /dev/null
+++ b/sc/source/ui/view/tabvwshh.cxx
@@ -0,0 +1,557 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabvwshh.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+//#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+#define _MOREBTN_HXX
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+//#define _MENU_HXX ***
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+#define _SVTREELIST_HXX
+#define _FILTER_HXX
+#define _SVLBOXITM_HXX
+#define _SVTREEBOX_HXX
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+#define _SFXINIMGR_HXX
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+#define _SFXMSG_HXX
+#define _SFXOBJFACE_HXX
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+#define _SFXAPPWIN_HXX
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+#define _SFXDOCFILE_HXX
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+#define _MDIFRM_HXX
+//#define _SFX_IPFRM_HXX ***
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX ***
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+//#define _ARGS_HXX ***
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+//#define _SFXRECTITEM_HXX ***
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+//#define _SFX_WHITER_HXX ***
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+//#define _SFXRNGITEM_HXX ***
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+// svdraw.hxx
+#define _SDR_NOITEMS
+#define _SVDXOUT_HXX
+#define _SDR_NOTRANSFORM // Transformationen, selten verwendet
+#define _SDR_NOTOUCH // Hit-Tests, selten verwendet
+#define _SDR_NOEXTDEV // ExtOutputDevice
+//#define _SDR_NOUNDO // Undo-Objekte
+#define _SDR_NOSURROGATEOBJ // SdrObjSurrogate
+#define _SDR_NOPAGEOBJ // SdrPageObj
+#define _SDR_NOVIRTOBJ // SdrVirtObj
+#define _SDR_NOGROUPOBJ // SdrGroupObj
+#define _SDR_NOTEXTOBJ // SdrTextObj //*
+#define _SDR_NOPATHOBJ // SdrPathObj
+#define _SDR_NOEDGEOBJ // SdrEdgeObj
+#define _SDR_NORECTOBJ // SdrRectObj
+#define _SDR_NOCAPTIONOBJ // SdrCaptionObj
+#define _SDR_NOCIRCLEOBJ // SdrCircleObj
+#define _SDR_NOGRAFOBJ // SdrGrafObj
+#define _SDR_NOOLE2OBJ // SdrOle2Obj
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdmark.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdview.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/sbxcore.hxx>
+#include <so3/ipobj.hxx>
+#include <svtools/whiter.hxx>
+
+#include "tabvwsh.hxx"
+#include "client.hxx"
+#include "document.hxx"
+#include "docsh.hxx"
+#include "sc.hrc"
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::ExecuteSbx( SfxRequest& rReq )
+{
+ // SID_RANGE_OFFSET (Offset),
+ // SID_PIVOT_CREATE (DataPilotCreate) - removed (old Basic)
+}
+
+void ScTabViewShell::GetSbxState( SfxItemSet& rSet )
+{
+ // SID_RANGE_REGION (CurrentRegion) - removed (old Basic)
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::ExecuteObject( SfxRequest& rReq )
+{
+ USHORT nSlotId = rReq.GetSlot();
+ const SfxItemSet* pReqArgs = rReq.GetArgs();
+
+ // Objekte aktivieren/deaktivieren immer auf der sichtbaren View
+
+ ScTabViewShell* pVisibleSh = this;
+ if ( nSlotId == SID_OLE_SELECT || nSlotId == SID_OLE_ACTIVATE || nSlotId == SID_OLE_DEACTIVATE )
+ {
+ DBG_ERROR("old slot SID_OLE...");
+ }
+
+ switch (nSlotId)
+ {
+ case SID_OLE_SELECT:
+ case SID_OLE_ACTIVATE:
+ {
+ // in beiden Faellen erstmal auf der sichtbaren View selektieren
+
+ String aName;
+ SdrView* pDrView = GetSdrView();
+ if (pDrView)
+ {
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+ if (rMarkList.GetMarkCount() == 1)
+ aName = rMarkList.GetMark(0)->GetObj()->GetName();
+ }
+ pVisibleSh->SelectObject( aName );
+
+ // aktivieren
+
+ if ( nSlotId == SID_OLE_ACTIVATE )
+ pVisibleSh->DoVerb( 0 );
+ }
+ break;
+ case SID_OLE_DEACTIVATE:
+ {
+ ScClient* pClient = (ScClient*) pVisibleSh->GetIPClient();
+ if ( pClient && pClient->IsInPlaceActive() )
+ {
+ pClient->GetProtocol().Reset2Open();
+ SFX_APP()->SetViewFrame(pVisibleSh->GetViewFrame());
+ }
+ }
+ break;
+
+ case SID_OBJECT_LEFT:
+ case SID_OBJECT_TOP:
+ case SID_OBJECT_WIDTH:
+ case SID_OBJECT_HEIGHT:
+ {
+ BOOL bDone = FALSE;
+ const SfxPoolItem* pItem;
+ if ( pReqArgs && pReqArgs->GetItemState( nSlotId, TRUE, &pItem ) == SFX_ITEM_SET )
+ {
+ long nNewVal = ((const SfxInt32Item*)pItem)->GetValue();
+ if ( nNewVal < 0 )
+ nNewVal = 0;
+
+ //! von irgendwas in 1/100mm umrechnen ??????
+
+ SdrView* pDrView = GetSdrView();
+ if ( pDrView )
+ {
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+ if (rMarkList.GetMarkCount() == 1)
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+ Rectangle aRect = pObj->GetLogicRect();
+
+ if ( nSlotId == SID_OBJECT_LEFT )
+ pDrView->MoveMarkedObj( Size( nNewVal - aRect.Left(), 0 ) );
+ else if ( nSlotId == SID_OBJECT_TOP )
+ pDrView->MoveMarkedObj( Size( 0, nNewVal - aRect.Top() ) );
+ else if ( nSlotId == SID_OBJECT_WIDTH )
+ pDrView->ResizeMarkedObj( aRect.TopLeft(),
+ Fraction( nNewVal, aRect.GetWidth() ),
+ Fraction( 1, 1 ) );
+ else // if ( nSlotId == SID_OBJECT_HEIGHT )
+ pDrView->ResizeMarkedObj( aRect.TopLeft(),
+ Fraction( 1, 1 ),
+ Fraction( nNewVal, aRect.GetHeight() ) );
+ bDone = TRUE;
+ }
+ }
+ }
+ if (!bDone)
+ SbxBase::SetError( SbxERR_BAD_PARAMETER ); // Basic-Fehler
+ }
+ break;
+
+ }
+}
+
+SvInPlaceObjectRef lcl_GetSelectedObj( SdrView* pDrView ) //! Member von ScDrawView?
+{
+ SvInPlaceObjectRef xRet;
+
+ if (pDrView)
+ {
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+ if (rMarkList.GetMarkCount() == 1)
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+ if (pObj->GetObjIdentifier() == OBJ_OLE2)
+ {
+ SdrOle2Obj* pOle2Obj = (SdrOle2Obj*) pObj;
+ xRet = pOle2Obj->GetObjRef();
+ }
+ }
+ }
+
+ return xRet;
+}
+
+void ScTabViewShell::GetObjectState( SfxItemSet& rSet )
+{
+ // SID_OLE_OBJECT - removed (old Basic)
+
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch (nWhich)
+ {
+ case SID_ACTIVE_OBJ_NAME:
+ {
+ String aName;
+ SvInPlaceObjectRef xOLE = lcl_GetSelectedObj( GetSdrView() );
+ if (xOLE.Is())
+ {
+ SvInfoObject* pInfoObj = GetViewData()->GetSfxDocShell()->Find( xOLE );
+ if ( pInfoObj )
+ aName = pInfoObj->GetObjName();
+ }
+ rSet.Put( SfxStringItem( nWhich, aName ) );
+ }
+ break;
+ case SID_OBJECT_LEFT:
+ case SID_OBJECT_TOP:
+ case SID_OBJECT_WIDTH:
+ case SID_OBJECT_HEIGHT:
+ {
+ SdrView* pDrView = GetSdrView();
+ if ( pDrView )
+ {
+ const SdrMarkList& rMarkList = pDrView->GetMarkList();
+ if (rMarkList.GetMarkCount() == 1)
+ {
+ SdrObject* pObj = rMarkList.GetMark(0)->GetObj();
+ Rectangle aRect = pObj->GetLogicRect();
+
+ long nVal;
+ if ( nWhich == SID_OBJECT_LEFT )
+ nVal = aRect.Left();
+ else if ( nWhich == SID_OBJECT_TOP )
+ nVal = aRect.Top();
+ else if ( nWhich == SID_OBJECT_WIDTH )
+ nVal = aRect.GetWidth();
+ else // if ( nWhich == SID_OBJECT_HEIGHT )
+ nVal = aRect.GetHeight();
+
+ //! von 1/100mm in irgendwas umrechnen ??????
+
+ rSet.Put( SfxInt32Item( nWhich, nVal ) );
+ }
+ }
+ }
+ break;
+ }
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
new file mode 100644
index 000000000000..fc6674ac467c
--- /dev/null
+++ b/sc/source/ui/view/viewdata.cxx
@@ -0,0 +1,2117 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewdata.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/adjitem.hxx>
+#include <svx/algitem.hxx>
+#include <svx/brshitem.hxx>
+#include <svx/editview.hxx>
+#include <svx/editstat.hxx>
+#include <svx/outliner.hxx>
+#include <offmgr/app.hxx>
+
+#ifdef ONE_LINGU
+#else
+#include <offmgr/osplcfg.hxx>
+#endif
+
+#include <vcl/system.hxx>
+
+#include "viewdata.hxx"
+#include "docoptio.hxx"
+#include "scmod.hxx"
+#include "global.hxx"
+#include "document.hxx"
+#include "attrib.hxx"
+#include "tabview.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "sc.hrc"
+#include "patattr.hxx"
+#include "editutil.hxx"
+#include "scextopt.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+#define TAG_TABBARWIDTH "tw:"
+
+static BOOL bMoveArea = FALSE; //! Member?
+USHORT nEditAdjust = SVX_ADJUST_LEFT; //! Member !!!
+
+//==================================================================
+
+ScViewDataTable::ScViewDataTable() :
+ nCurX( 0 ),
+ nCurY( 0 ),
+ bOldCurValid( FALSE ),
+ eHSplitMode( SC_SPLIT_NONE ),
+ eVSplitMode( SC_SPLIT_NONE ),
+ nHSplitPos( 0 ),
+ nVSplitPos( 0 ),
+ nFixPosX( 0 ),
+ nFixPosY( 0 ),
+ eWhichActive( SC_SPLIT_BOTTOMLEFT )
+{
+ nPosX[0]=nPosX[1]=
+ nPosY[0]=nPosY[1]=0;
+ nTPosX[0]=nTPosX[1]=
+ nTPosY[0]=nTPosY[1]=0;
+ nMPosX[0]=nMPosX[1]=
+ nMPosY[0]=nMPosY[1]=0;
+ nPixPosX[0]=nPixPosX[1]=
+ nPixPosY[0]=nPixPosY[1]=0;
+}
+
+ScViewDataTable::ScViewDataTable( const ScViewDataTable& rDataTable ) :
+ nCurX( rDataTable.nCurX ),
+ nCurY( rDataTable.nCurY ),
+ bOldCurValid( rDataTable.bOldCurValid ),
+ nOldCurX( rDataTable.nOldCurX ),
+ nOldCurY( rDataTable.nOldCurY ),
+ eHSplitMode( rDataTable.eHSplitMode ),
+ eVSplitMode( rDataTable.eVSplitMode ),
+ nHSplitPos( rDataTable.nHSplitPos ),
+ nVSplitPos( rDataTable.nVSplitPos ),
+ nFixPosX( rDataTable.nFixPosX ),
+ nFixPosY( rDataTable.nFixPosY ),
+ eWhichActive( rDataTable.eWhichActive )
+{
+ nPosX[0]=rDataTable.nPosX[0];
+ nPosX[1]=rDataTable.nPosX[1];
+ nPosY[0]=rDataTable.nPosY[0];
+ nPosY[1]=rDataTable.nPosY[1];
+
+ nTPosX[0]=rDataTable.nTPosX[0];
+ nTPosX[1]=rDataTable.nTPosX[1];
+ nTPosY[0]=rDataTable.nTPosY[0];
+ nTPosY[1]=rDataTable.nTPosY[1];
+
+ nMPosX[0]=rDataTable.nMPosX[0];
+ nMPosX[1]=rDataTable.nMPosX[1];
+ nMPosY[0]=rDataTable.nMPosY[0];
+ nMPosY[1]=rDataTable.nMPosY[1];
+
+ nPixPosX[0]=rDataTable.nPixPosX[0];
+ nPixPosX[1]=rDataTable.nPixPosX[1];
+ nPixPosY[0]=rDataTable.nPixPosY[0];
+ nPixPosY[1]=rDataTable.nPixPosY[1];
+}
+
+ScViewDataTable::~ScViewDataTable()
+{
+}
+
+//==================================================================
+
+ScViewData::ScViewData( ScDocShell* pDocSh, ScTabViewShell* pViewSh )
+ : pDocShell ( pDocSh ),
+ pViewShell ( pViewSh ),
+ pDoc ( NULL ),
+ pView ( pViewSh ),
+ pOptions ( new ScViewOptions ),
+ nTabNo ( 0 ),
+ nRefTabNo ( 0 ),
+ aZoomX ( 1,1 ),
+ aZoomY ( 1,1 ),
+ aPageZoomX ( 3,5 ), // Page-Default: 60%
+ aPageZoomY ( 3,5 ),
+ aLogicMode ( MAP_100TH_MM ),
+ bIsRefMode ( FALSE ),
+ eRefType ( SC_REFTYPE_NONE ),
+ nFillMode ( SC_FILL_NONE ),
+ bDelMarkValid( FALSE ),
+ bActive ( TRUE ), //! wie initialisieren?
+ bPagebreak ( FALSE ),
+ pSpellingView ( NULL )
+{
+ SetGridMode ( TRUE );
+ SetSyntaxMode ( FALSE );
+ SetHeaderMode ( TRUE );
+ SetTabMode ( TRUE );
+ SetVScrollMode ( TRUE );
+ SetHScrollMode ( TRUE );
+ SetOutlineMode ( TRUE );
+
+ aScrSize = Size( (long) ( STD_COL_WIDTH * PIXEL_PER_TWIPS * OLE_STD_CELLS_X ),
+ (long) ( ScGlobal::nStdRowHeight * PIXEL_PER_TWIPS * OLE_STD_CELLS_Y ) );
+ pTabData[0] = new ScViewDataTable;
+ for (USHORT i=1; i<=MAXTAB; i++) pTabData[i] = NULL;
+ pThisTab = pTabData[nTabNo];
+ for (i=0; i<4; i++)
+ {
+ pEditView[i] = NULL;
+ bEditActive[i] = FALSE;
+ }
+
+ nEditEndCol = nEditCol = nEditEndRow = nEditRow = 0;
+ nTabStartCol = SC_TABSTART_NONE;
+
+ if (pDocShell)
+ {
+ pDoc = pDocShell->GetDocument();
+ *pOptions = pDoc->GetViewOptions();
+ }
+
+ // keine ausgeblendete Tabelle anzeigen:
+ if (pDoc && !pDoc->IsVisible(nTabNo))
+ {
+ while ( !pDoc->IsVisible(nTabNo) && pDoc->HasTable(nTabNo+1) )
+ ++nTabNo;
+
+ pTabData[nTabNo] = new ScViewDataTable;
+ pThisTab = pTabData[nTabNo];
+ }
+
+ CalcPPT();
+}
+
+ScViewData::ScViewData( const ScViewData& rViewData )
+ : pDocShell ( rViewData.pDocShell ),
+ pViewShell ( rViewData.pViewShell ),
+ pDoc ( rViewData.pDoc ),
+ pView ( rViewData.pView ),
+ pOptions ( new ScViewOptions( *(rViewData.pOptions) ) ),
+ nTabNo ( rViewData.nTabNo ),
+ nRefTabNo ( rViewData.nTabNo ), // kein RefMode
+ aZoomX ( rViewData.aZoomX ),
+ aZoomY ( rViewData.aZoomY ),
+ aPageZoomX ( rViewData.aPageZoomX ),
+ aPageZoomY ( rViewData.aPageZoomY ),
+ aLogicMode ( rViewData.aLogicMode ),
+ bIsRefMode ( FALSE ),
+ eRefType ( SC_REFTYPE_NONE ),
+ nFillMode ( SC_FILL_NONE ),
+ bDelMarkValid( FALSE ),
+ bActive ( TRUE ), //! wie initialisieren?
+ bPagebreak ( rViewData.bPagebreak ),
+ pSpellingView ( rViewData.pSpellingView )
+{
+ SetGridMode ( rViewData.IsGridMode() );
+ SetSyntaxMode ( rViewData.IsSyntaxMode() );
+ SetHeaderMode ( rViewData.IsHeaderMode() );
+ SetTabMode ( rViewData.IsTabMode() );
+ SetVScrollMode ( rViewData.IsVScrollMode() );
+ SetHScrollMode ( rViewData.IsHScrollMode() );
+ SetOutlineMode ( rViewData.IsOutlineMode() );
+
+ aScrSize = rViewData.aScrSize;
+ for (USHORT i=0; i<=MAXTAB; i++)
+ if (rViewData.pTabData[i])
+ pTabData[i] = new ScViewDataTable( *rViewData.pTabData[i] );
+ else
+ pTabData[i] = NULL;
+ pThisTab = pTabData[nTabNo];
+ for (i=0; i<4; i++)
+ {
+ pEditView[i] = NULL;
+ bEditActive[i] = FALSE;
+ }
+
+ nEditEndCol = nEditCol = nEditEndRow = nEditRow = 0;
+ nTabStartCol = SC_TABSTART_NONE;
+ CalcPPT();
+}
+
+void ScViewData::SetDocShell( ScDocShell* pShell )
+{
+ pDocShell = pShell;
+ pDoc = pDocShell->GetDocument();
+ *pOptions = pDoc->GetViewOptions();
+ CalcPPT();
+}
+
+void ScViewData::InitData( ScDocument* pDocument )
+{
+ pDoc = pDocument;
+ *pOptions = pDoc->GetViewOptions();
+}
+
+void ScViewData::InitFrom( const ScViewData* pRef )
+{
+ if (pRef==NULL)
+ {
+ DBG_ERROR("ScViewData::InitFrom mit NULL");
+ return;
+ }
+
+ aScrSize = pRef->aScrSize;
+ nTabNo = pRef->nTabNo;
+ aZoomX = pRef->aZoomX;
+ aZoomY = pRef->aZoomY;
+ aPageZoomX = pRef->aPageZoomX;
+ aPageZoomY = pRef->aPageZoomY;
+ bPagebreak = pRef->bPagebreak;
+ aLogicMode = pRef->aLogicMode;
+
+ SetGridMode ( pRef->IsGridMode() );
+ SetSyntaxMode ( pRef->IsSyntaxMode() );
+ SetHeaderMode ( pRef->IsHeaderMode() );
+ SetTabMode ( pRef->IsTabMode() );
+ SetVScrollMode ( pRef->IsVScrollMode() );
+ SetHScrollMode ( pRef->IsHScrollMode() );
+ SetOutlineMode ( pRef->IsOutlineMode() );
+
+ for (USHORT i=0; i<=MAXTAB; i++)
+ {
+ delete pTabData[i];
+ if (pRef->pTabData[i])
+ pTabData[i] = new ScViewDataTable( *pRef->pTabData[i] );
+ else
+ pTabData[i] = NULL;
+ }
+ pThisTab = pTabData[nTabNo];
+ CalcPPT();
+}
+
+ScDocument* ScViewData::GetDocument() const
+{
+ if (pDoc)
+ return pDoc;
+ else if (pDocShell)
+ return pDocShell->GetDocument();
+
+ DBG_ERROR("kein Document an ViewData");
+ return NULL;
+}
+
+ScViewData::~ScViewData()
+{
+ for (USHORT i=0; i<=MAXTAB; i++)
+ if (pTabData[i])
+ delete pTabData[i];
+
+ KillEditView();
+ delete pOptions;
+}
+
+void ScViewData::UpdateThis()
+{
+ do
+ {
+ pThisTab = pTabData[nTabNo];
+ if (!pThisTab)
+ {
+ if (nTabNo>0)
+ --nTabNo;
+ else
+ pThisTab = pTabData[0] = new ScViewDataTable;
+
+ // hier keine Assertion, weil sonst Paints kommen, bevor alles initialisiert ist!
+ }
+ }
+ while (!pThisTab);
+}
+
+void ScViewData::InsertTab( USHORT nTab )
+{
+ delete pTabData[MAXTAB];
+
+ for (USHORT i=MAXTAB; i>nTab; i--)
+ pTabData[i] = pTabData[i-1];
+
+ pTabData[nTab] = new ScViewDataTable;
+
+ UpdateThis();
+ aMarkData.InsertTab( nTab );
+}
+
+void ScViewData::DeleteTab( USHORT nTab )
+{
+ delete pTabData[nTab];
+
+ for (USHORT i=nTab; i<MAXTAB; i++)
+ pTabData[i] = pTabData[i+1];
+
+ pTabData[MAXTAB] = NULL;
+
+ UpdateThis();
+ aMarkData.DeleteTab( nTab );
+}
+
+void ScViewData::CopyTab( USHORT nSrcTab, USHORT nDestTab )
+{
+ if (nDestTab==SC_TAB_APPEND)
+ nDestTab = pDoc->GetTableCount() - 1; // am Doc muss vorher kopiert worden sein
+
+ if (nDestTab > MAXTAB)
+ {
+ DBG_ERROR("Zuviele Tabellen");
+ return;
+ }
+
+ delete pTabData[MAXTAB];
+
+ for (USHORT i=MAXTAB; i>nDestTab; i--)
+ pTabData[i] = pTabData[i-1];
+
+ if ( pTabData[nSrcTab] )
+ pTabData[nDestTab] = new ScViewDataTable( *pTabData[nSrcTab] );
+ else
+ pTabData[nDestTab] = NULL;
+
+ UpdateThis();
+ aMarkData.InsertTab( nDestTab );
+}
+
+void ScViewData::MoveTab( USHORT nSrcTab, USHORT nDestTab )
+{
+ if (nDestTab==SC_TAB_APPEND)
+ nDestTab = pDoc->GetTableCount() - 1;
+
+ USHORT i;
+ ScViewDataTable* pTab = pTabData[nSrcTab];
+
+ USHORT nInsTab = nDestTab;
+ if ( nSrcTab < nDestTab )
+ {
+ --nInsTab;
+ for (i=nSrcTab; i<nDestTab; i++)
+ pTabData[i] = pTabData[i+1];
+ }
+ else
+ for (i=nSrcTab; i>nDestTab; i--)
+ pTabData[i] = pTabData[i-1];
+
+ pTabData[nDestTab] = pTab;
+
+ UpdateThis();
+ aMarkData.DeleteTab( nSrcTab );
+ aMarkData.InsertTab( nInsTab ); // ggf. angepasst
+}
+
+void ScViewData::UpdateOle( ScSplitPos eWhich )
+{
+ GetDocShell()->UpdateOle(this);
+}
+
+void ScViewData::SetViewShell( ScTabViewShell* pViewSh )
+{
+ if (pViewSh)
+ {
+ pViewShell = pViewSh;
+ pView = pViewSh;
+ }
+ else
+ {
+ pViewShell = NULL;
+ pView = NULL;
+ }
+}
+
+void ScViewData::SetZoom( const Fraction& rNewX, const Fraction& rNewY )
+{
+ Fraction aFrac20( 1,5 );
+ Fraction aFrac400( 4,1 );
+
+ Fraction aValidX = rNewX;
+ if (aValidX<aFrac20) aValidX = aFrac20;
+ if (aValidX>aFrac400) aValidX = aFrac400;
+
+ Fraction aValidY = rNewY;
+ if (aValidY<aFrac20) aValidY = aFrac20;
+ if (aValidY>aFrac400) aValidY = aFrac400;
+
+ if ( bPagebreak )
+ {
+ aPageZoomX = aValidX;
+ aPageZoomY = aValidY;
+ }
+ else
+ {
+ aZoomX = aValidX;
+ aZoomY = aValidY;
+ }
+
+ CalcPPT();
+ RecalcPixPos();
+ aScenButSize = Size(0,0);
+ aLogicMode.SetScaleX( aValidX );
+ aLogicMode.SetScaleY( aValidY );
+}
+
+void ScViewData::SetPagebreakMode( BOOL bSet )
+{
+ bPagebreak = bSet;
+
+ CalcPPT();
+ RecalcPixPos();
+ aScenButSize = Size(0,0);
+ aLogicMode.SetScaleX( GetZoomX() );
+ aLogicMode.SetScaleY( GetZoomY() );
+}
+
+BOOL ScViewData::GetSimpleArea( USHORT& rStartCol, USHORT& rStartRow, USHORT& rStartTab,
+ USHORT& rEndCol, USHORT& rEndRow, USHORT& rEndTab, BOOL bMergeMark )
+{
+ if ( aMarkData.IsMarked() || aMarkData.IsMultiMarked() )
+ {
+ if ( bMergeMark )
+ if ( aMarkData.IsMultiMarked() )
+ aMarkData.MarkToSimple();
+
+ if ( aMarkData.IsMarked() && !aMarkData.IsMultiMarked() )
+ {
+ ScRange aMarkRange;
+ aMarkData.GetMarkArea( aMarkRange );
+ rStartCol = aMarkRange.aStart.Col();
+ rStartRow = aMarkRange.aStart.Row();
+ rStartTab = aMarkRange.aStart.Tab();
+ rEndCol = aMarkRange.aEnd.Col();
+ rEndRow = aMarkRange.aEnd.Row();
+ rEndTab = aMarkRange.aEnd.Tab();
+ }
+ else
+ {
+ rStartCol = rEndCol = GetCurX();
+ rStartRow = rEndRow = GetCurY();
+ rStartTab = rEndTab = GetTabNo();
+ return FALSE;
+ }
+ }
+ else
+ {
+ rStartCol = rEndCol = GetCurX();
+ rStartRow = rEndRow = GetCurY();
+ rStartTab = rEndTab = GetTabNo();
+ }
+ return TRUE;
+}
+
+BOOL ScViewData::GetSimpleArea( ScRange& rRange, BOOL bMergeMark )
+{
+ if ( aMarkData.IsMarked() || aMarkData.IsMultiMarked() )
+ {
+ if ( bMergeMark )
+ if ( aMarkData.IsMultiMarked() )
+ aMarkData.MarkToSimple();
+
+ if ( aMarkData.IsMarked() && !aMarkData.IsMultiMarked() )
+ aMarkData.GetMarkArea( rRange );
+ else
+ {
+ rRange = ScRange( GetCurX(), GetCurY(), GetTabNo() );
+ return FALSE;
+ }
+ }
+ else
+ {
+ rRange = ScRange( GetCurX(), GetCurY(), GetTabNo() );
+ }
+ return TRUE;
+}
+
+void ScViewData::GetMultiArea( ScRangeListRef& rRange, BOOL bMergeMark )
+{
+ BOOL bMulti = aMarkData.IsMultiMarked();
+ if (bMulti && bMergeMark)
+ {
+ aMarkData.MarkToSimple();
+ bMulti = aMarkData.IsMultiMarked();
+ }
+ if (bMulti)
+ {
+ rRange = new ScRangeList;
+ aMarkData.FillRangeListWithMarks( rRange, FALSE );
+ }
+ else
+ {
+ ScRange aSimple;
+ GetSimpleArea(aSimple,FALSE);
+ rRange = new ScRangeList;
+ rRange->Append(aSimple);
+ }
+}
+
+BOOL ScViewData::SimpleColMarked()
+{
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+ if (GetSimpleArea(nStartCol,nStartRow,nStartTab,nEndCol,nEndRow,nEndTab))
+ if (nStartRow==0 && nEndRow==MAXROW)
+ return TRUE;
+
+ return FALSE;
+}
+
+BOOL ScViewData::SimpleRowMarked()
+{
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+ if (GetSimpleArea(nStartCol,nStartRow,nStartTab,nEndCol,nEndRow,nEndTab))
+ if (nStartCol==0 && nEndCol==MAXCOL)
+ return TRUE;
+
+ return FALSE;
+}
+
+void ScViewData::SetFillMode( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow )
+{
+ nFillMode = SC_FILL_FILL;
+ nFillStartX = nStartCol;
+ nFillStartY = nStartRow;
+ nFillEndX = nEndCol;
+ nFillEndY = nEndRow;
+}
+
+void ScViewData::SetDragMode( USHORT nStartCol, USHORT nStartRow, USHORT nEndCol, USHORT nEndRow,
+ BYTE nMode )
+{
+ nFillMode = nMode;
+ nFillStartX = nStartCol;
+ nFillStartY = nStartRow;
+ nFillEndX = nEndCol;
+ nFillEndY = nEndRow;
+}
+
+void ScViewData::ResetFillMode()
+{
+ nFillMode = SC_FILL_NONE;
+}
+
+void ScViewData::GetFillData( USHORT& rStartCol, USHORT& rStartRow,
+ USHORT& rEndCol, USHORT& rEndRow )
+{
+ rStartCol = nFillStartX;
+ rStartRow = nFillStartY;
+ rEndCol = nFillEndX;
+ rEndRow = nFillEndY;
+}
+
+USHORT ScViewData::GetOldCurX() const
+{
+ if (pThisTab->bOldCurValid)
+ return pThisTab->nOldCurX;
+ else
+ return pThisTab->nCurX;
+}
+
+USHORT ScViewData::GetOldCurY() const
+{
+ if (pThisTab->bOldCurValid)
+ return pThisTab->nOldCurY;
+ else
+ return pThisTab->nCurY;
+}
+
+void ScViewData::SetOldCursor( USHORT nNewX, USHORT nNewY )
+{
+ pThisTab->nOldCurX = nNewX;
+ pThisTab->nOldCurY = nNewY;
+ pThisTab->bOldCurValid = TRUE;
+}
+
+void ScViewData::ResetOldCursor()
+{
+ pThisTab->bOldCurValid = FALSE;
+}
+
+Rectangle ScViewData::GetEditArea( ScSplitPos eWhich, USHORT nPosX, USHORT nPosY,
+ Window* pWin, const ScPatternAttr* pPattern )
+{
+ return ScEditUtil( pDoc, nPosX, nPosY, nTabNo, GetScrPos(nPosX,nPosY,eWhich,TRUE),
+ pWin, nPPTX, nPPTY, GetZoomX(), GetZoomY() ).GetEditArea( pPattern );
+}
+
+void ScViewData::SetEditEngine( ScSplitPos eWhich,
+ ScEditEngineDefaulter* pNewEngine,
+ Window* pWin, USHORT nNewX, USHORT nNewY )
+{
+ ScHSplitPos eHWhich = WhichH(eWhich);
+
+ BOOL bWasThere = FALSE;
+ if (pEditView[eWhich])
+ {
+ // Wenn die View schon da ist, nichts aufrufen, was die Cursorposition aendert
+
+ if (bEditActive[eWhich])
+ bWasThere = TRUE;
+ else
+ pEditView[eWhich]->SetEditEngine(pNewEngine);
+
+ if (pEditView[eWhich]->GetWindow() != pWin)
+ {
+ pEditView[eWhich]->SetWindow(pWin);
+ DBG_ERROR("EditView Window geaendert");
+ }
+ }
+ else
+ {
+ pEditView[eWhich] = new EditView( pNewEngine, pWin );
+ }
+
+ // bei IdleFormat wird manchmal ein Cursor gemalt, wenn die View schon weg ist (23576)
+
+ ULONG nEC = pNewEngine->GetControlWord();
+ pNewEngine->SetControlWord(nEC & ~EE_CNTRL_DOIDLEFORMAT);
+
+ ULONG nVC = pEditView[eWhich]->GetControlWord();
+ pEditView[eWhich]->SetControlWord(nVC & ~EV_CNTRL_AUTOSCROLL);
+
+ bEditActive[eWhich] = TRUE;
+
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nNewX, nNewY, nTabNo );
+ SvxCellHorJustify eJust = (SvxCellHorJustify)((const SvxHorJustifyItem&)
+ pPattern->GetItem( ATTR_HOR_JUSTIFY )).GetValue();
+
+ BOOL bBreak = ( eJust == SVX_HOR_JUSTIFY_BLOCK ) ||
+ ((SfxBoolItem&)pPattern->GetItem(ATTR_LINEBREAK)).GetValue();
+
+ nEditCol = nNewX;
+ nEditRow = nNewY;
+ const ScMergeAttr* pMergeAttr = (ScMergeAttr*)&pPattern->GetItem(ATTR_MERGE);
+ nEditEndCol = nEditCol;
+ if (pMergeAttr->GetColMerge() > 1)
+ nEditEndCol += pMergeAttr->GetColMerge() - 1;
+ nEditEndRow = nEditRow;
+ if (pMergeAttr->GetRowMerge() > 1)
+ nEditEndRow += pMergeAttr->GetRowMerge() - 1;
+
+// Rectangle aPixRect = GetEditArea( eWhich, nNewX, nNewY, pWin, pPattern );
+ Rectangle aPixRect = ScEditUtil( pDoc, nNewX,nNewY,nTabNo, GetScrPos(nNewX,nNewY,eWhich),
+ pWin, nPPTX,nPPTY,GetZoomX(),GetZoomY() ).
+ GetEditArea( pPattern );
+
+ // bei rechtsbuendigem Editieren muss rechts noch Platz fuer den Cursor sein
+ if ( nEditAdjust == SVX_ADJUST_RIGHT )
+ aPixRect.Right() += 1;
+
+ Rectangle aOutputArea = pWin->PixelToLogic( aPixRect, GetLogicMode() );
+ pEditView[eWhich]->SetOutputArea( aOutputArea );
+
+ if ( bActive && eWhich == GetActivePart() )
+ {
+ long nSizeXPix;
+ if (bBreak)
+ nSizeXPix = aPixRect.GetWidth(); // Papersize -> kein H-Scrolling
+ else
+ {
+ DBG_ASSERT(pView,"keine View fuer EditView");
+ nSizeXPix = pView->GetGridWidth(eHWhich) - aPixRect.Left();
+ }
+ DBG_ASSERT(pView,"keine View fuer EditView");
+ long nSizeYPix = pView->GetGridHeight(WhichV(eWhich)) - aPixRect.Top();
+
+ pNewEngine->SetPaperSize( pView->GetActiveWin()->PixelToLogic( Size( nSizeXPix, nSizeYPix ),
+ GetLogicMode() ) );
+
+ // sichtbarer Ausschnitt
+ Size aPaper = pNewEngine->GetPaperSize();
+ Rectangle aVis = pEditView[eWhich]->GetVisArea();
+ long nDiff = aVis.Right() - aVis.Left();
+ if ( nEditAdjust == SVX_ADJUST_RIGHT )
+ {
+ aVis.Right() = aPaper.Width() - 1;
+ bMoveArea = TRUE;
+ }
+ else if ( nEditAdjust == SVX_ADJUST_CENTER )
+ {
+ aVis.Right() = ( aPaper.Width() - 1 + nDiff ) / 2;
+ bMoveArea = TRUE;
+ }
+ else
+ {
+ aVis.Right() = nDiff;
+ bMoveArea = FALSE;
+ }
+ aVis.Left() = aVis.Right() - nDiff;
+ pEditView[eWhich]->SetVisArea(aVis);
+ //
+
+ pNewEngine->SetStatusEventHdl( LINK( this, ScViewData, EditEngineHdl ) );
+
+ EditGrowY(); // an alten Text anpassen
+ EditGrowX();
+
+ Point aDocPos = pEditView[eWhich]->GetWindowPosTopLeft(0);
+ if (aDocPos.Y() < aOutputArea.Top())
+ pEditView[eWhich]->Scroll( 0, aOutputArea.Top() - aDocPos.Y() );
+
+ //! Status (Event) zuruecksetzen
+ }
+
+ // hier muss bEditActive schon gesetzt sein
+ // (wegen Map-Mode bei Paint)
+ if (!bWasThere)
+ pNewEngine->InsertView(pEditView[eWhich]);
+
+ // Hintergrundfarbe der Zelle
+ Color aBackCol = ((const SvxBrushItem&)pPattern->GetItem(ATTR_BACKGROUND)).GetColor();
+ if ( aBackCol.GetTransparency() > 0 || IsSyntaxMode())
+ {
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ aBackCol = rStyleSettings.GetWindowColor();
+ }
+ pEditView[eWhich]->SetBackgroundColor( aBackCol );
+
+ pEditView[eWhich]->Invalidate(); // noetig ??
+ // noetig, wenn Position geaendert
+}
+
+IMPL_LINK_INLINE_START( ScViewData, EmptyEditHdl, EditStatus *, pStatus )
+{
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScViewData, EmptyEditHdl, EditStatus *, pStatus )
+
+IMPL_LINK( ScViewData, EditEngineHdl, EditStatus *, pStatus )
+{
+ ULONG nStatus = pStatus->GetStatusWord();
+ if (nStatus & (EE_STAT_HSCROLL | EE_STAT_TEXTHEIGHTCHANGED | EE_STAT_CURSOROUT))
+ {
+ EditGrowY();
+ EditGrowX();
+
+ if (nStatus & EE_STAT_CURSOROUT)
+ {
+ ScSplitPos eWhich = GetActivePart();
+ if (pEditView[eWhich])
+ pEditView[eWhich]->ShowCursor(FALSE);
+ }
+ }
+ return 0;
+}
+
+void ScViewData::EditGrowX()
+{
+ ScDocument* pDoc = GetDocument();
+
+ ScSplitPos eWhich = GetActivePart();
+ ScHSplitPos eHWhich = WhichH(eWhich);
+ EditView* pCurView = pEditView[eWhich];
+
+ if ( !pCurView || !bEditActive[eWhich])
+ return;
+
+ ScEditEngineDefaulter* pEngine =
+ (ScEditEngineDefaulter*) pCurView->GetEditEngine();
+ Window* pWin = pCurView->GetWindow();
+
+ USHORT nRight = GetPosX(eHWhich) + VisibleCellsX(eHWhich);
+
+ Size aSize = pEngine->GetPaperSize();
+ Rectangle aArea = pCurView->GetOutputArea();
+ long nOldRight = aArea.Right();
+
+ // Margin ist schon bei der urspruenglichen Breite beruecksichtigt
+ long nTextWidth = pEngine->CalcTextWidth();
+
+ BOOL bChanged = FALSE;
+ while (aArea.GetWidth() + 0 < nTextWidth && nEditEndCol < nRight)
+ {
+ ++nEditEndCol;
+ long nPix = (long) ( pDoc->GetColWidth( nEditEndCol, nTabNo ) * nPPTX );
+ aArea.Right() += pWin->PixelToLogic(Size(nPix,0)).Width();
+
+ if ( aArea.Right() > aArea.Left() + aSize.Width() - 1 )
+ aArea.Right() = aArea.Left() + aSize.Width() - 1;
+
+ bChanged = TRUE;
+ }
+
+ if (bChanged)
+ {
+ if ( bMoveArea )
+ {
+ // hart auf linksbuendig schalten und VisArea wieder nach links setzen
+
+ pEngine->SetDefaultItem( SvxAdjustItem( SVX_ADJUST_LEFT, EE_PARA_JUST ) );
+
+ Rectangle aVis = pCurView->GetVisArea();
+ long nMove = aVis.Left();
+ aVis.Left() = 0;
+ aVis.Right() -= nMove;
+ pCurView->SetVisArea( aVis );
+ bMoveArea = FALSE;
+ }
+
+ pCurView->SetOutputArea(aArea);
+
+ aArea.Left() = nOldRight;
+ pWin->Invalidate(aArea);
+ }
+}
+
+void ScViewData::EditGrowY()
+{
+ ScSplitPos eWhich = GetActivePart();
+ ScVSplitPos eVWhich = WhichV(eWhich);
+ EditView* pCurView = pEditView[eWhich];
+
+ if ( !pCurView || !bEditActive[eWhich])
+ return;
+
+ EditEngine* pEngine = pCurView->GetEditEngine();
+ Window* pWin = pCurView->GetWindow();
+
+ USHORT nBottom = GetPosY(eVWhich) + VisibleCellsY(eVWhich);
+
+ Size aSize = pEngine->GetPaperSize();
+ Rectangle aArea = pCurView->GetOutputArea();
+ long nOldBottom = aArea.Bottom();
+ long nTextHeight = pEngine->GetTextHeight();
+
+ BOOL bChanged = FALSE;
+ while (aArea.GetHeight() + 100 < nTextHeight && nEditEndRow < nBottom)
+ {
+ ++nEditEndRow;
+ ScDocument* pDoc = GetDocument();
+ long nPix = (long) ( pDoc->GetRowHeight( nEditEndRow, nTabNo ) * nPPTY );
+ aArea.Bottom() += pWin->PixelToLogic(Size(0,nPix)).Height();
+
+ if ( aArea.Bottom() > aArea.Top() + aSize.Height() - 1 )
+ aArea.Bottom() = aArea.Top() + aSize.Height() - 1;
+
+ bChanged = TRUE;
+ }
+
+ if (bChanged)
+ {
+ pCurView->SetOutputArea(aArea);
+
+ if (nEditEndRow >= nBottom)
+ {
+ ULONG nControl = pEditView[eWhich]->GetControlWord();
+ if ((nControl & EV_CNTRL_AUTOSCROLL) == 0)
+ pCurView->SetControlWord( nControl | EV_CNTRL_AUTOSCROLL );
+ }
+
+ aArea.Top() = nOldBottom;
+ pWin->Invalidate(aArea);
+ }
+}
+
+void ScViewData::ResetEditView()
+{
+ EditEngine* pEngine = NULL;
+ for (USHORT i=0; i<4; i++)
+ if (pEditView[i])
+ {
+ if (bEditActive[i])
+ {
+ pEngine = pEditView[i]->GetEditEngine();
+ pEngine->RemoveView(pEditView[i]);
+// pEditView[i]->SetSelection(0,0,0,0);
+ }
+ bEditActive[i] = FALSE;
+ }
+
+ if (pEngine)
+ pEngine->SetStatusEventHdl( LINK( this, ScViewData, EmptyEditHdl ) );
+}
+
+void ScViewData::KillEditView()
+{
+ for (USHORT i=0; i<4; i++)
+ if (pEditView[i])
+ {
+ if (bEditActive[i])
+ pEditView[i]->GetEditEngine()->RemoveView(pEditView[i]);
+ delete pEditView[i];
+ pEditView[i] = NULL;
+ }
+}
+
+void ScViewData::GetEditView( ScSplitPos eWhich, EditView*& rViewPtr, USHORT& rCol, USHORT& rRow )
+{
+ rViewPtr = pEditView[eWhich];
+ rCol = nEditCol;
+ rRow = nEditRow;
+}
+
+void ScViewData::SetTabNo( USHORT nNewTab )
+{
+ if (nNewTab>MAXTAB)
+ {
+ DBG_ERROR("falsche Tabellennummer");
+ return;
+ }
+
+ nTabNo = nNewTab;
+ if (!pTabData[nTabNo])
+ pTabData[nTabNo] = new ScViewDataTable;
+ pThisTab = pTabData[nTabNo];
+
+ RecalcPixPos(); //! nicht immer noetig!
+}
+
+void ScViewData::SetActivePart( ScSplitPos eNewActive )
+{
+ pThisTab->eWhichActive = eNewActive;
+}
+
+Point ScViewData::GetScrPos( USHORT nWhereX, USHORT nWhereY, ScHSplitPos eWhich ) const
+{
+ DBG_ASSERT( eWhich==SC_SPLIT_LEFT || eWhich==SC_SPLIT_RIGHT, "Falsche Position" );
+ ScSplitPos ePos = ( eWhich == SC_SPLIT_LEFT ) ? SC_SPLIT_BOTTOMLEFT : SC_SPLIT_BOTTOMRIGHT;
+ return GetScrPos( nWhereX, nWhereY, ePos );
+}
+
+Point ScViewData::GetScrPos( USHORT nWhereX, USHORT nWhereY, ScVSplitPos eWhich ) const
+{
+ DBG_ASSERT( eWhich==SC_SPLIT_TOP || eWhich==SC_SPLIT_BOTTOM, "Falsche Position" );
+ ScSplitPos ePos = ( eWhich == SC_SPLIT_TOP ) ? SC_SPLIT_TOPLEFT : SC_SPLIT_BOTTOMLEFT;
+ return GetScrPos( nWhereX, nWhereY, ePos );
+}
+
+Point ScViewData::GetScrPos( USHORT nWhereX, USHORT nWhereY, ScSplitPos eWhich,
+ BOOL bAllowNeg ) const
+{
+ ScHSplitPos eWhichX;
+ ScVSplitPos eWhichY;
+ switch( eWhich )
+ {
+ case SC_SPLIT_TOPLEFT:
+ eWhichX = SC_SPLIT_LEFT;
+ eWhichY = SC_SPLIT_TOP;
+ break;
+ case SC_SPLIT_TOPRIGHT:
+ eWhichX = SC_SPLIT_RIGHT;
+ eWhichY = SC_SPLIT_TOP;
+ break;
+ case SC_SPLIT_BOTTOMLEFT:
+ eWhichX = SC_SPLIT_LEFT;
+ eWhichY = SC_SPLIT_BOTTOM;
+ break;
+ case SC_SPLIT_BOTTOMRIGHT:
+ eWhichX = SC_SPLIT_RIGHT;
+ eWhichY = SC_SPLIT_BOTTOM;
+ break;
+ }
+
+ if (pView)
+ {
+ ((ScViewData*)this)->aScrSize.Width() = pView->GetGridWidth(eWhichX);
+ ((ScViewData*)this)->aScrSize.Height() = pView->GetGridHeight(eWhichY);
+ }
+
+ USHORT nTSize;
+
+ USHORT nPosX = GetPosX(eWhichX);
+ USHORT nX;
+
+ long nScrPosX=0;
+ if (nWhereX >= nPosX)
+ for (nX=nPosX; nX<nWhereX && (bAllowNeg || nScrPosX<=aScrSize.Width()); nX++)
+ {
+ if ( nX > MAXCOL )
+ nScrPosX = 65535;
+ else
+ {
+ nTSize = pDoc->GetColWidth( nX, nTabNo );
+ if (nTSize)
+ {
+ long nSizeXPix = (long) ( nTSize * nPPTX );
+ nScrPosX += nSizeXPix;
+ }
+ }
+ }
+ else if (bAllowNeg)
+ for (nX=nPosX; nX>nWhereX;)
+ {
+ --nX;
+ nTSize = pDoc->GetColWidth( nX, nTabNo );
+ if (nTSize)
+ {
+ long nSizeXPix = (long) ( nTSize * nPPTX );
+ nScrPosX -= nSizeXPix;
+ }
+ }
+
+ USHORT nPosY = GetPosY(eWhichY);
+ USHORT nY;
+
+ long nScrPosY=0;
+ if (nWhereY >= nPosY)
+ for (nY=nPosY; nY<nWhereY && (bAllowNeg || nScrPosY<=aScrSize.Height()); nY++)
+ {
+ if ( nY > MAXROW )
+ nScrPosY = 65535;
+ else
+ {
+ nTSize = pDoc->FastGetRowHeight( nY, nTabNo );
+ if (nTSize)
+ {
+ long nSizeYPix = (long) ( nTSize * nPPTY );
+ nScrPosY += nSizeYPix;
+ }
+ }
+ }
+ else if (bAllowNeg)
+ for (nY=nPosY; nY>nWhereY;)
+ {
+ --nY;
+ nTSize = pDoc->FastGetRowHeight( nY, nTabNo );
+ if (nTSize)
+ {
+ long nSizeYPix = (long) ( nTSize * nPPTY );
+ nScrPosY -= nSizeYPix;
+ }
+ }
+
+ if (nScrPosX > 32767) nScrPosX=32767;
+ if (nScrPosY > 32767) nScrPosY=32767;
+ return Point( nScrPosX, nScrPosY );
+}
+
+//
+// Anzahl Zellen auf einem Bildschirm
+//
+
+USHORT ScViewData::CellsAtX( short nPosX, short nDir, ScHSplitPos eWhichX, USHORT nScrSizeX ) const
+{
+ DBG_ASSERT( nDir==1 || nDir==-1, "falscher CellsAt Aufruf" );
+
+ if (pView)
+ ((ScViewData*)this)->aScrSize.Width() = pView->GetGridWidth(eWhichX);
+
+ short nX;
+ USHORT nScrPosX = 0;
+ if (nScrSizeX == SC_SIZE_NONE) nScrSizeX = (USHORT) aScrSize.Width();
+
+ if (nDir==1)
+ nX = nPosX; // vorwaerts
+ else
+ nX = nPosX-1; // rueckwaerts
+
+ BOOL bOut = FALSE;
+ for ( ; nScrPosX<=nScrSizeX && !bOut; nX+=nDir )
+ {
+ short nColNo = nX;
+ if ( nColNo < 0 || nColNo > MAXCOL )
+ bOut = TRUE;
+ else
+ {
+ USHORT nTSize = pDoc->GetColWidth( nColNo, nTabNo );
+ if (nTSize)
+ {
+ long nSizeXPix = (long) ( nTSize * nPPTX );
+ nScrPosX += (USHORT) nSizeXPix;
+ }
+ }
+ }
+
+ if (nDir==1)
+ nX -= nPosX;
+ else
+ nX = (nPosX-1)-nX;
+
+ if (nX>0) --nX;
+ return nX;
+}
+
+USHORT ScViewData::CellsAtY( short nPosY, short nDir, ScVSplitPos eWhichY, USHORT nScrSizeY ) const
+{
+ DBG_ASSERT( nDir==1 || nDir==-1, "falscher CellsAt Aufruf" );
+
+ if (pView)
+ ((ScViewData*)this)->aScrSize.Height() = pView->GetGridHeight(eWhichY);
+
+ short nY;
+ USHORT nScrPosY = 0;
+
+ if (nScrSizeY == SC_SIZE_NONE) nScrSizeY = (USHORT) aScrSize.Height();
+
+ if (nDir==1)
+ nY = nPosY; // vorwaerts
+ else
+ nY = nPosY-1; // rueckwaerts
+
+ BOOL bOut = FALSE;
+ for ( ; nScrPosY<=nScrSizeY && !bOut; nY+=nDir )
+ {
+ short nRowNo = nY;
+ if ( nRowNo < 0 || nRowNo > MAXROW )
+ bOut = TRUE;
+ else
+ {
+// USHORT nTSize = pDoc->GetRowHeight( nRowNo, nTabNo );
+ USHORT nTSize = pDoc->FastGetRowHeight( nRowNo, nTabNo );
+ if (nTSize)
+ {
+ long nSizeYPix = (long) ( nTSize * nPPTY );
+ nScrPosY += (USHORT) nSizeYPix;
+ }
+ }
+ }
+
+ if (nDir==1)
+ nY -= nPosY;
+ else
+ nY = (nPosY-1)-nY;
+
+ if (nY>0) --nY;
+ return nY;
+}
+
+USHORT ScViewData::VisibleCellsX( ScHSplitPos eWhichX ) const
+{
+ return CellsAtX( GetPosX( eWhichX ), 1, eWhichX, SC_SIZE_NONE );
+}
+
+USHORT ScViewData::VisibleCellsY( ScVSplitPos eWhichY ) const
+{
+ return CellsAtY( GetPosY( eWhichY ), 1, eWhichY, SC_SIZE_NONE );
+}
+
+USHORT ScViewData::PrevCellsX( ScHSplitPos eWhichX ) const
+{
+ return CellsAtX( GetPosX( eWhichX ), -1, eWhichX, SC_SIZE_NONE );
+}
+
+USHORT ScViewData::PrevCellsY( ScVSplitPos eWhichY ) const
+{
+ return CellsAtY( GetPosY( eWhichY ), -1, eWhichY, SC_SIZE_NONE );
+}
+
+USHORT ScViewData::LastCellsX( ScHSplitPos eWhichX ) const
+{
+ return CellsAtX( MAXCOL+1, -1, eWhichX, SC_SIZE_NONE );
+}
+
+USHORT ScViewData::LastCellsY( ScVSplitPos eWhichY ) const
+{
+ return CellsAtY( MAXROW+1, -1, eWhichY, SC_SIZE_NONE );
+}
+
+BOOL ScViewData::GetMergeSizePixel( USHORT nX, USHORT nY, long& rSizeXPix, long& rSizeYPix )
+{
+ const ScMergeAttr* pMerge = (const ScMergeAttr*) pDoc->GetAttr( nX,nY,nTabNo, ATTR_MERGE );
+ if ( pMerge->GetColMerge() > 1 || pMerge->GetRowMerge() > 1 )
+ {
+ long nOutWidth = 0;
+ long nOutHeight = 0;
+ USHORT i;
+ USHORT nCountX = pMerge->GetColMerge();
+ for (i=0; i<nCountX; i++)
+ nOutWidth += (long) ( pDoc->GetColWidth(nX+i,nTabNo) * nPPTX );
+ USHORT nCountY = pMerge->GetRowMerge();
+ for (i=0; i<nCountY; i++)
+ nOutHeight += (long) ( pDoc->GetRowHeight(nY+i,nTabNo) * nPPTY );
+
+ rSizeXPix = nOutWidth;
+ rSizeYPix = nOutHeight;
+ return TRUE;
+ }
+ else
+ {
+ rSizeXPix = (long) ( pDoc->GetColWidth( nX, nTabNo ) * nPPTX );
+ rSizeYPix = (long) ( pDoc->GetRowHeight( nY, nTabNo ) * nPPTY );
+ return FALSE;
+ }
+}
+
+BOOL ScViewData::GetPosFromPixel( long nClickX, long nClickY, ScSplitPos eWhich,
+ short& rPosX, short& rPosY,
+ BOOL bTestMerge, BOOL bRepair, BOOL bNextIfLarge )
+{
+ // Hack, damit auch bei "ganzer Bildschirm" ohne Spalten/Zeilenkoepfe
+ // noch nach links/oben gescrollt werden kann:
+ if (nClickX == 0)
+ nClickX = -1;
+ if (nClickY == 0)
+ nClickY = -1;
+
+ ScHSplitPos eHWhich = WhichH(eWhich);
+ ScVSplitPos eVWhich = WhichV(eWhich);
+ short nStartPosX = GetPosX(eHWhich);
+ short nStartPosY = GetPosY(eVWhich);
+ rPosX = nStartPosX;
+ rPosY = nStartPosY;
+ long nScrX = 0;
+ long nScrY = 0;
+
+ if (nClickX > 0)
+ {
+ while ( rPosX<=MAXCOL && nClickX >= nScrX )
+ {
+ nScrX += (long) ( pDoc->GetColWidth( rPosX, nTabNo ) * nPPTX );
+ ++rPosX;
+ }
+ --rPosX;
+ }
+ else
+ {
+ while ( rPosX>0 && nClickX < nScrX )
+ {
+ --rPosX;
+ nScrX -= (long) ( pDoc->GetColWidth( rPosX, nTabNo ) * nPPTX );
+ }
+ }
+
+ if (nClickY > 0)
+ {
+ while ( rPosY<=MAXROW && nClickY >= nScrY )
+ {
+ nScrY += (long) ( pDoc->FastGetRowHeight( rPosY, nTabNo ) * nPPTY );
+ ++rPosY;
+ }
+ --rPosY;
+ }
+ else
+ {
+ while ( rPosY>0 && nClickY < nScrY )
+ {
+ --rPosY;
+ nScrY -= (long) ( pDoc->FastGetRowHeight( rPosY, nTabNo ) * nPPTY );
+ }
+ }
+
+ if (bNextIfLarge) // zu grosse Zellen ?
+ {
+ if ( rPosX == nStartPosX && nClickX > 0 )
+ {
+ if (pView)
+ aScrSize.Width() = pView->GetGridWidth(eHWhich);
+ if ( nClickX > aScrSize.Width() )
+ ++rPosX;
+ }
+ if ( rPosY == nStartPosY && nClickY > 0 )
+ {
+ if (pView)
+ aScrSize.Height() = pView->GetGridHeight(eVWhich);
+ if ( nClickY > aScrSize.Height() )
+ ++rPosY;
+ }
+ }
+
+ if (rPosX<0) rPosX=0;
+ if (rPosX>MAXCOL) rPosX=MAXCOL;
+ if (rPosY<0) rPosY=0;
+ if (rPosY>MAXROW) rPosY=MAXROW;
+
+ if (bTestMerge)
+ {
+ //! public Methode um Position anzupassen
+
+ BOOL bHOver = FALSE;
+ while (pDoc->IsHorOverlapped( rPosX, rPosY, nTabNo ))
+ { --rPosX; bHOver=TRUE; }
+ BOOL bVOver = FALSE;
+ while (pDoc->IsVerOverlapped( rPosX, rPosY, nTabNo ))
+ { --rPosY; bVOver=TRUE; }
+
+ if ( bRepair && ( bHOver || bVOver ) )
+ {
+ const ScMergeAttr* pMerge = (const ScMergeAttr*)
+ pDoc->GetAttr( rPosX, rPosY, nTabNo, ATTR_MERGE );
+ if ( ( bHOver && pMerge->GetColMerge() <= 1 ) ||
+ ( bVOver && pMerge->GetRowMerge() <= 1 ) )
+ {
+ DBG_ERROR("Merge-Fehler gefunden");
+
+ pDoc->RemoveFlagsTab( 0,0, MAXCOL,MAXROW, nTabNo, SC_MF_HOR | SC_MF_VER );
+ USHORT nEndCol = MAXCOL;
+ USHORT nEndRow = MAXROW;
+ pDoc->ExtendMerge( 0,0, nEndCol,nEndRow, nTabNo, TRUE, FALSE );
+ if (pDocShell)
+ pDocShell->PostPaint( ScRange(0,0,nTabNo,MAXCOL,MAXROW,nTabNo), PAINT_GRID );
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+void ScViewData::GetMouseQuadrant( const Point& rClickPos, ScSplitPos eWhich,
+ short nPosX, short nPosY, BOOL& rLeft, BOOL& rTop )
+{
+ Point aCellStart = GetScrPos( nPosX, nPosY, eWhich, TRUE );
+ long nSizeX;
+ long nSizeY;
+ GetMergeSizePixel( nPosX, nPosY, nSizeX, nSizeY );
+ rLeft = rClickPos.X() - aCellStart.X() <= nSizeX / 2;
+ rTop = rClickPos.Y() - aCellStart.Y() <= nSizeY / 2;
+}
+
+void ScViewData::SetPosX( ScHSplitPos eWhich, USHORT nNewPosX )
+{
+ if (nNewPosX)
+ {
+ USHORT nOldPosX = pThisTab->nPosX[eWhich];
+ long nTPosX = pThisTab->nTPosX[eWhich];
+ long nPixPosX = pThisTab->nPixPosX[eWhich];
+ USHORT i;
+ if ( nNewPosX > nOldPosX )
+ for ( i=nOldPosX; i<nNewPosX; i++ )
+ {
+ long nThis = pDoc->GetColWidth( i,nTabNo );
+ nTPosX -= nThis;
+ nPixPosX -= (long)(nThis*nPPTX);
+ }
+ else
+ for ( i=nNewPosX; i<nOldPosX; i++ )
+ {
+ long nThis = pDoc->GetColWidth( i,nTabNo );
+ nTPosX += nThis;
+ nPixPosX += (long)(nThis*nPPTX);
+ }
+
+ pThisTab->nPosX[eWhich] = nNewPosX;
+ pThisTab->nTPosX[eWhich] = nTPosX;
+ pThisTab->nMPosX[eWhich] = (long) (nTPosX * HMM_PER_TWIPS);
+ pThisTab->nPixPosX[eWhich] = nPixPosX;
+ }
+ else
+ pThisTab->nPixPosX[eWhich] =
+ pThisTab->nTPosX[eWhich] =
+ pThisTab->nMPosX[eWhich] =
+ pThisTab->nPosX[eWhich] = 0;
+}
+
+void ScViewData::SetPosY( ScVSplitPos eWhich, USHORT nNewPosY )
+{
+ if (nNewPosY)
+ {
+ USHORT nOldPosY = pThisTab->nPosY[eWhich];
+ long nTPosY = pThisTab->nTPosY[eWhich];
+ long nPixPosY = pThisTab->nPixPosY[eWhich];
+ USHORT i;
+ if ( nNewPosY > nOldPosY )
+ for ( i=nOldPosY; i<nNewPosY; i++ )
+ {
+ long nThis = pDoc->FastGetRowHeight( i,nTabNo );
+ nTPosY -= nThis;
+ nPixPosY -= (long)(nThis*nPPTY);
+ }
+ else
+ for ( i=nNewPosY; i<nOldPosY; i++ )
+ {
+ long nThis = pDoc->FastGetRowHeight( i,nTabNo );
+ nTPosY += nThis;
+ nPixPosY += (long)(nThis*nPPTY);
+ }
+
+ pThisTab->nPosY[eWhich] = nNewPosY;
+ pThisTab->nTPosY[eWhich] = nTPosY;
+ pThisTab->nMPosY[eWhich] = (long) (nTPosY * HMM_PER_TWIPS);
+ pThisTab->nPixPosY[eWhich] = nPixPosY;
+ }
+ else
+ pThisTab->nPixPosY[eWhich] =
+ pThisTab->nTPosY[eWhich] =
+ pThisTab->nMPosY[eWhich] =
+ pThisTab->nPosY[eWhich] = 0;
+}
+
+void ScViewData::RecalcPixPos() // nach Zoom-Aenderungen
+{
+ USHORT i;
+
+ for (USHORT eWhich=0; eWhich<2; eWhich++)
+ {
+ long nPixPosX = 0;
+ USHORT nPosX = pThisTab->nPosX[eWhich];
+ for (i=0; i<nPosX; i++)
+ nPixPosX -= (long)(pDoc->GetColWidth(i,nTabNo) * nPPTX);
+ pThisTab->nPixPosX[eWhich] = nPixPosX;
+
+ long nPixPosY = 0;
+ USHORT nPosY = pThisTab->nPosY[eWhich];
+ for (i=0; i<nPosY; i++)
+ nPixPosY -= (long)(pDoc->FastGetRowHeight(i,nTabNo) * nPPTY);
+ pThisTab->nPixPosY[eWhich] = nPixPosY;
+ }
+}
+
+const MapMode& ScViewData::GetLogicMode( ScSplitPos eWhich )
+{
+ aLogicMode.SetOrigin( Point( pThisTab->nMPosX[WhichH(eWhich)],
+ pThisTab->nMPosY[WhichV(eWhich)] ) );
+ return aLogicMode;
+}
+
+const MapMode& ScViewData::GetLogicMode()
+{
+ aLogicMode.SetOrigin( Point() );
+ return aLogicMode;
+}
+
+void ScViewData::SetScreen( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow2 )
+{
+ USHORT nCol;
+ USHORT nRow;
+ USHORT nTSize;
+ long nSizePix;
+ long nScrPosX = 0;
+ long nScrPosY = 0;
+
+ SetActivePart( SC_SPLIT_BOTTOMLEFT );
+ SetPosX( SC_SPLIT_LEFT, nCol1 );
+ SetPosY( SC_SPLIT_BOTTOM, nRow1 );
+
+ for (nCol=nCol1; nCol<=nCol2; nCol++)
+ {
+ nTSize = pDoc->GetColWidth( nCol, nTabNo );
+ if (nTSize)
+ {
+ nSizePix = (long) ( nTSize * nPPTX );
+ nScrPosX += (USHORT) nSizePix;
+ }
+ }
+
+ for (nRow=nRow1; nRow<=nRow2; nRow++)
+ {
+ nTSize = pDoc->FastGetRowHeight( nRow, nTabNo );
+ if (nTSize)
+ {
+ nSizePix = (long) ( nTSize * nPPTY );
+ nScrPosY += (USHORT) nSizePix;
+ }
+ }
+
+ aScrSize = Size( nScrPosX, nScrPosY );
+}
+
+void ScViewData::SetScreenPos( const Point& rVisAreaStart )
+{
+ long nSize;
+ long nTwips;
+ long nAdd;
+ BOOL bEnd;
+
+ nSize = 0;
+ nTwips = (long) (rVisAreaStart.X() / HMM_PER_TWIPS);
+ USHORT nX1 = 0;
+ bEnd = FALSE;
+ while (!bEnd)
+ {
+ nAdd = (long) pDoc->GetColWidth(nX1,nTabNo);
+ if (nSize+nAdd <= nTwips+1 && nX1<MAXCOL)
+ {
+ nSize += nAdd;
+ ++nX1;
+ }
+ else
+ bEnd = TRUE;
+ }
+
+ nSize = 0;
+ nTwips = (long) (rVisAreaStart.Y() / HMM_PER_TWIPS);
+ USHORT nY1 = 0;
+ bEnd = FALSE;
+ while (!bEnd)
+ {
+ nAdd = (long) pDoc->FastGetRowHeight(nY1,nTabNo);
+ if (nSize+nAdd <= nTwips+1 && nY1<MAXROW)
+ {
+ nSize += nAdd;
+ ++nY1;
+ }
+ else
+ bEnd = TRUE;
+ }
+
+ SetActivePart( SC_SPLIT_BOTTOMLEFT );
+ SetPosX( SC_SPLIT_LEFT, nX1 );
+ SetPosY( SC_SPLIT_BOTTOM, nY1 );
+
+ SetCurX( nX1 );
+ SetCurY( nY1 );
+}
+
+void ScViewData::SetScreen( const Rectangle& rVisArea )
+{
+ SetScreenPos( rVisArea.TopLeft() );
+
+ // hier ohne GetOutputFactor(), weil fuer Ausgabe in Metafile
+
+ aScrSize = rVisArea.GetSize();
+ aScrSize.Width() = (long)
+ ( aScrSize.Width() * ScGlobal::nScreenPPTX / HMM_PER_TWIPS );
+ aScrSize.Height() = (long)
+ ( aScrSize.Height() * ScGlobal::nScreenPPTY / HMM_PER_TWIPS );
+}
+
+SfxObjectShell* ScViewData::GetSfxDocShell() const
+{
+ return pDocShell;
+}
+
+Window* ScViewData::GetDialogParent()
+{
+ DBG_ASSERT( pViewShell, "GetDialogParent() ohne ViewShell" );
+ return pViewShell->GetDialogParent();
+}
+
+Window* ScViewData::GetActiveWin()
+{
+ DBG_ASSERT( pView, "GetActiveWin() ohne View" );
+ return pView->GetActiveWin();
+}
+
+ScDrawView* ScViewData::GetScDrawView()
+{
+ DBG_ASSERT( pView, "GetScDrawView() ohne View" );
+ return pView->GetScDrawView();
+}
+
+BOOL ScViewData::IsMinimized()
+{
+ DBG_ASSERT( pView, "IsMinimized() ohne View" );
+ return pView->IsMinimized();
+}
+
+void ScViewData::UpdateScreenZoom( const Fraction& rNewX, const Fraction& rNewY )
+{
+ Fraction aOldX = GetZoomX();
+ Fraction aOldY = GetZoomY();
+
+ SetZoom(rNewX,rNewY);
+
+ Fraction aWidth = GetZoomX();
+ aWidth *= Fraction( aScrSize.Width(),1 );
+ aWidth /= aOldX;
+
+ Fraction aHeight = GetZoomY();
+ aHeight *= Fraction( aScrSize.Height(),1 );
+ aHeight /= aOldY;
+
+ aScrSize.Width() = (long) aWidth;
+ aScrSize.Height() = (long) aHeight;
+}
+
+void ScViewData::CalcPPT()
+{
+ nPPTX = ScGlobal::nScreenPPTX * (double) GetZoomX();
+ if (pDocShell)
+ nPPTX = nPPTX / pDocShell->GetOutputFactor(); // Faktor ist Drucker zu Bildschirm
+ nPPTY = ScGlobal::nScreenPPTY * (double) GetZoomY();
+}
+
+//------------------------------------------------------------------
+
+#define SC_OLD_TABSEP '/'
+#define SC_NEW_TABSEP '+'
+
+void ScViewData::WriteUserData(String& rData)
+{
+ // nZoom (bis 364v) oder nZoom/nPageZoom/bPageMode (ab 364w)
+ // nTab
+ // Tab-ControlBreite
+ // pro Tabelle:
+ // CursorX/CursorY/HSplitMode/VSplitMode/HSplitPos/VSplitPos/SplitActive/
+ // PosX[links]/PosX[rechts]/PosY[oben]/PosY[unten]
+ // wenn Zeilen groesser 8192, "+" statt "/"
+
+ USHORT nZoom = (USHORT)((aZoomY.GetNumerator() * 100) / aZoomY.GetDenominator());
+ rData = String::CreateFromInt32( nZoom );
+ rData += '/';
+ nZoom = (USHORT)((aPageZoomY.GetNumerator() * 100) / aPageZoomY.GetDenominator());
+ rData += String::CreateFromInt32( nZoom );
+ rData += '/';
+ if (bPagebreak)
+ rData += '1';
+ else
+ rData += '0';
+
+ rData += ';';
+ rData += String::CreateFromInt32( nTabNo );
+ rData += ';';
+ rData.AppendAscii(RTL_CONSTASCII_STRINGPARAM( TAG_TABBARWIDTH ));
+ rData += String::CreateFromInt32( pView->GetTabBarWidth() );
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nTabCount; i++)
+ {
+ rData += ';'; // Numerierung darf auf keinen Fall durcheinanderkommen
+ if (pTabData[i])
+ {
+ sal_Unicode cTabSep = SC_OLD_TABSEP; // wie 3.1
+ if ( pTabData[i]->nCurY > MAXROW_30 ||
+ pTabData[i]->nPosY[0] > MAXROW_30 || pTabData[i]->nPosY[1] > MAXROW_30 ||
+ ( pTabData[i]->eVSplitMode == SC_SPLIT_FIX &&
+ pTabData[i]->nFixPosY > MAXROW_30 ) )
+ {
+ cTabSep = SC_NEW_TABSEP; // um eine 3.1-Version nicht umzubringen
+ }
+
+
+ rData += String::CreateFromInt32( pTabData[i]->nCurX );
+ rData += cTabSep;
+ rData += String::CreateFromInt32( pTabData[i]->nCurY );
+ rData += cTabSep;
+ rData += String::CreateFromInt32( pTabData[i]->eHSplitMode );
+ rData += cTabSep;
+ rData += String::CreateFromInt32( pTabData[i]->eVSplitMode );
+ rData += cTabSep;
+ if ( pTabData[i]->eHSplitMode == SC_SPLIT_FIX )
+ rData += String::CreateFromInt32( pTabData[i]->nFixPosX );
+ else
+ rData += String::CreateFromInt32( pTabData[i]->nHSplitPos );
+ rData += cTabSep;
+ if ( pTabData[i]->eVSplitMode == SC_SPLIT_FIX )
+ rData += String::CreateFromInt32( pTabData[i]->nFixPosY );
+ else
+ rData += String::CreateFromInt32( pTabData[i]->nVSplitPos );
+ rData += cTabSep;
+ rData += String::CreateFromInt32( pTabData[i]->eWhichActive );
+ rData += cTabSep;
+ rData += String::CreateFromInt32( pTabData[i]->nPosX[0] );
+ rData += cTabSep;
+ rData += String::CreateFromInt32( pTabData[i]->nPosX[1] );
+ rData += cTabSep;
+ rData += String::CreateFromInt32( pTabData[i]->nPosY[0] );
+ rData += cTabSep;
+ rData += String::CreateFromInt32( pTabData[i]->nPosY[1] );
+ }
+ }
+}
+
+void ScViewData::ReadUserData(const String& rData)
+{
+ if (!rData.Len()) // Leerer String kommt bei "neu Laden"
+ return; // dann auch ohne Assertion beenden
+
+ xub_StrLen nCount = rData.GetTokenCount(';');
+ if ( nCount <= 2 )
+ {
+ // #45208# beim Reload in der Seitenansicht sind evtl. die Preview-UserData
+ // stehengelassen worden. Den Zoom von der Preview will man hier nicht...
+ DBG_ERROR("ReadUserData: das sind nicht meine Daten");
+ return;
+ }
+
+ String aTabOpt;
+ xub_StrLen nTagLen = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(TAG_TABBARWIDTH)).Len();
+
+ //-------------------
+ // nicht pro Tabelle:
+ //-------------------
+ USHORT nTabStart = 2;
+
+ String aZoomStr = rData.GetToken(0); // Zoom/PageZoom/Modus
+ USHORT nNormZoom = aZoomStr.GetToken(0,'/').ToInt32();
+ if ( nNormZoom >= MINZOOM && nNormZoom <= MAXZOOM )
+ aZoomX = aZoomY = Fraction( nNormZoom, 100 ); // "normaler" Zoom (immer)
+ USHORT nPageZoom = aZoomStr.GetToken(1,'/').ToInt32();
+ if ( nPageZoom >= MINZOOM && nPageZoom <= MAXZOOM )
+ aPageZoomX = aPageZoomY = Fraction( nPageZoom, 100 ); // Pagebreak-Zoom, wenn gesetzt
+ sal_Unicode cMode = aZoomStr.GetToken(2,'/').GetChar(0); // 0 oder "0"/"1"
+ SetPagebreakMode( cMode == '1' );
+ // SetPagebreakMode muss immer gerufen werden wegen CalcPPT / RecalcPixPos()
+
+ //
+ // Tabelle kann ungueltig geworden sein (z.B. letzte Version):
+ //
+ USHORT nNewTab = rData.GetToken(1).ToInt32();
+ if (pDoc->HasTable( nNewTab ))
+ SetTabNo(nNewTab);
+
+ //
+ // wenn vorhanden, TabBar-Breite holen:
+ //
+ aTabOpt = rData.GetToken(2);
+
+ if ( nTagLen && aTabOpt.Copy(0,nTagLen).EqualsAscii(TAG_TABBARWIDTH) )
+ {
+ pView->SetTabBarWidth( aTabOpt.Copy(nTagLen).ToInt32() );
+ nTabStart = 3;
+ }
+
+ //-------------
+ // pro Tabelle:
+ //-------------
+ USHORT nPos = 0;
+ while ( nCount > nPos+nTabStart )
+ {
+ aTabOpt = rData.GetToken(nPos+nTabStart);
+ if (!pTabData[nPos])
+ pTabData[nPos] = new ScViewDataTable;
+
+ sal_Unicode cTabSep = 0;
+ if (aTabOpt.GetTokenCount(SC_OLD_TABSEP) >= 11)
+ cTabSep = SC_OLD_TABSEP;
+#ifndef SC_LIMIT_ROWS
+ else if (aTabOpt.GetTokenCount(SC_NEW_TABSEP) >= 11)
+ cTabSep = SC_NEW_TABSEP;
+ // '+' ist nur erlaubt, wenn wir mit Zeilen > 8192 umgehen koennen
+#endif
+
+ if (cTabSep)
+ {
+ pTabData[nPos]->nCurX = aTabOpt.GetToken(0,cTabSep).ToInt32();
+ pTabData[nPos]->nCurY = aTabOpt.GetToken(1,cTabSep).ToInt32();
+ pTabData[nPos]->eHSplitMode = (ScSplitMode) aTabOpt.GetToken(2,cTabSep).ToInt32();
+ pTabData[nPos]->eVSplitMode = (ScSplitMode) aTabOpt.GetToken(3,cTabSep).ToInt32();
+
+ if ( pTabData[nPos]->eHSplitMode == SC_SPLIT_FIX )
+ {
+ pTabData[nPos]->nFixPosX = aTabOpt.GetToken(4,cTabSep).ToInt32();
+ UpdateFixX(nPos);
+ }
+ else
+ pTabData[nPos]->nHSplitPos = aTabOpt.GetToken(4,cTabSep).ToInt32();
+
+ if ( pTabData[nPos]->eVSplitMode == SC_SPLIT_FIX )
+ {
+ pTabData[nPos]->nFixPosY = aTabOpt.GetToken(5,cTabSep).ToInt32();
+ UpdateFixY(nPos);
+ }
+ else
+ pTabData[nPos]->nVSplitPos = aTabOpt.GetToken(5,cTabSep).ToInt32();
+
+ pTabData[nPos]->eWhichActive = (ScSplitPos) aTabOpt.GetToken(6,cTabSep).ToInt32();
+ pTabData[nPos]->nPosX[0] = aTabOpt.GetToken(7,cTabSep).ToInt32();
+ pTabData[nPos]->nPosX[1] = aTabOpt.GetToken(8,cTabSep).ToInt32();
+ pTabData[nPos]->nPosY[0] = aTabOpt.GetToken(9,cTabSep).ToInt32();
+ pTabData[nPos]->nPosY[1] = aTabOpt.GetToken(10,cTabSep).ToInt32();
+
+ // Test, ob der aktive Teil laut SplitMode ueberhaupt existiert
+ // (Bug #44516#)
+ ScSplitPos eTest = pTabData[nPos]->eWhichActive;
+ if ( ( WhichH( eTest ) == SC_SPLIT_RIGHT &&
+ pTabData[nPos]->eHSplitMode == SC_SPLIT_NONE ) ||
+ ( WhichV( eTest ) == SC_SPLIT_TOP &&
+ pTabData[nPos]->eVSplitMode == SC_SPLIT_NONE ) )
+ {
+ // dann wieder auf Default (unten links)
+ pTabData[nPos]->eWhichActive = SC_SPLIT_BOTTOMLEFT;
+ DBG_ERROR("SplitPos musste korrigiert werden");
+ }
+ }
+ ++nPos;
+ }
+
+ RecalcPixPos();
+}
+
+void ScViewData::ReadExtOptions( const ScExtDocOptions& rOpt )
+{
+ // fuer Excel-Import
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ {
+ const ScExtTabOptions* pExtTab = rOpt.GetExtTabOptions( nTab );
+ if ( pExtTab )
+ {
+ if (!pTabData[nTab])
+ pTabData[nTab] = new ScViewDataTable;
+ ScViewDataTable* pViewTab = pTabData[nTab];
+
+#if 0
+ // aDim ist nicht der sichtbare, sondern der belegte Bereich
+ //! GT sollte mal die linke obere Ecke des sichtbaren Bereichs herausruecken
+
+ if ( pExtTab->bValidDim ) // Scroll-Position muss vor Fixierung kommen
+ {
+ ScRange aVisRange = pExtTab->aDim;
+ pViewTab->nPosX[SC_SPLIT_LEFT] = aVisRange.aStart.Col();
+ ScVSplitPos eDefV = pExtTab->nSplitY ? SC_SPLIT_TOP : SC_SPLIT_BOTTOM;
+ pViewTab->nPosY[eDefV] = aVisRange.aStart.Row();
+ }
+#endif
+
+ if ( pExtTab->nSplitX || pExtTab->nSplitY )
+ {
+ if ( pExtTab->bFrozen )
+ {
+ if ( pExtTab->nSplitX )
+ {
+ pViewTab->eHSplitMode = SC_SPLIT_FIX;
+ pViewTab->nFixPosX = pExtTab->nSplitX;
+ pViewTab->nHSplitPos = 0;
+ UpdateFixX(nTab);
+ pViewTab->nPosX[SC_SPLIT_RIGHT] = pExtTab->nLeftSplitCol;
+ }
+ if ( pExtTab->nSplitY )
+ {
+ pViewTab->eVSplitMode = SC_SPLIT_FIX;
+ pViewTab->nFixPosY = pExtTab->nSplitY;
+ pViewTab->nVSplitPos = 0;
+ UpdateFixY(nTab);
+ pViewTab->nPosY[SC_SPLIT_BOTTOM] = pExtTab->nTopSplitRow;
+ }
+ }
+ else
+ {
+ Point aPixel = Application::GetDefaultDevice()->LogicToPixel(
+ Point( pExtTab->nSplitX, pExtTab->nSplitY ),
+ MapMode( MAP_TWIP ) ); //! Zoom?
+ if ( pDocShell )
+ {
+ double nFactor = pDocShell->GetOutputFactor();
+ aPixel.X() = (long)( aPixel.X() * nFactor + 0.5 );
+ }
+ if ( pExtTab->nSplitX )
+ {
+ pViewTab->eHSplitMode = SC_SPLIT_NORMAL;
+ pViewTab->nHSplitPos = aPixel.X();
+ pViewTab->nPosX[SC_SPLIT_RIGHT] = pExtTab->nLeftSplitCol;
+ }
+ if ( pExtTab->nSplitY )
+ {
+ pViewTab->eVSplitMode = SC_SPLIT_NORMAL;
+ pViewTab->nVSplitPos = aPixel.Y();
+ pViewTab->nPosY[SC_SPLIT_BOTTOM] = pExtTab->nTopSplitRow;
+ }
+ }
+
+ ScSplitPos ePos = SC_SPLIT_BOTTOMLEFT;
+ switch ( pExtTab->nActPane )
+ {
+ case 0: ePos = SC_SPLIT_BOTTOMRIGHT; break;
+ case 1: ePos = SC_SPLIT_TOPRIGHT; break;
+ case 2: ePos = SC_SPLIT_BOTTOMLEFT; break;
+ case 3: ePos = SC_SPLIT_TOPLEFT; break;
+ }
+ if ( pViewTab->eHSplitMode == SC_SPLIT_NONE ) // hor. nicht geteilt?
+ {
+ if (ePos == SC_SPLIT_BOTTOMRIGHT) // dann immer links
+ ePos = SC_SPLIT_BOTTOMLEFT;
+ else if (ePos == SC_SPLIT_TOPRIGHT)
+ ePos = SC_SPLIT_TOPLEFT;
+ }
+ if ( pViewTab->eVSplitMode == SC_SPLIT_NONE ) // vert. nicht geteilt?
+ {
+ if (ePos == SC_SPLIT_TOPLEFT) // dann immer unten
+ ePos = SC_SPLIT_BOTTOMLEFT;
+ else if (ePos == SC_SPLIT_TOPRIGHT)
+ ePos = SC_SPLIT_BOTTOMRIGHT;
+ }
+ pViewTab->eWhichActive = ePos;
+ }
+
+ if ( pExtTab->bValidSel )
+ {
+ ScRange aSelRange = pExtTab->aLastSel;
+ pViewTab->nCurX = aSelRange.aStart.Col();
+ pViewTab->nCurY = aSelRange.aStart.Row();
+ }
+ }
+ }
+
+ SetTabNo( rOpt.nActTab );
+
+ // RecalcPixPos oder so - auch nMPos - auch bei ReadUserData ??!?!
+}
+
+void ScViewData::SetOptions( const ScViewOptions& rOpt )
+{
+ // if visibility of horiz. ScrollBar is changed, TabBar may have to be resized...
+ BOOL bHScrollChanged = ( rOpt.GetOption(VOPT_HSCROLL) != pOptions->GetOption(VOPT_HSCROLL) );
+
+ // if graphics are turned on or off, animation has to be started or stopped
+ // graphics are controlled by VOBJ_TYPE_OLE
+ BOOL bGraphicsChanged = ( pOptions->GetObjMode(VOBJ_TYPE_OLE) !=
+ rOpt.GetObjMode(VOBJ_TYPE_OLE) );
+
+ *pOptions = rOpt;
+ DBG_ASSERT( pView, "No View" );
+
+ if( pView )
+ {
+ pView->ViewOptionsHasChanged( bHScrollChanged, bGraphicsChanged );
+ }
+}
+
+Point ScViewData::GetMousePosPixel()
+{
+ DBG_ASSERT( pView, "GetMousePosPixel() ohne View" );
+ return pView->GetMousePosPixel();
+}
+
+void ScViewData::UpdateInputHandler( BOOL bForce )
+{
+ if (pViewShell)
+ pViewShell->UpdateInputHandler( bForce );
+}
+
+BOOL ScViewData::IsOle()
+{
+ return pDocShell && pDocShell->IsOle();
+}
+
+BOOL ScViewData::UpdateFixX( USHORT nTab ) // TRUE = Wert geaendert
+{
+ if (nTab>MAXTAB) // Default
+ nTab=nTabNo; // akuelle Tabelle
+
+ if (!pView || pTabData[nTab]->eHSplitMode != SC_SPLIT_FIX)
+ return FALSE;
+
+ USHORT nFix = pTabData[nTab]->nFixPosX;
+ ScDocument* pDoc = GetDocument();
+ long nNewPos = 0;
+ for (USHORT nX=pTabData[nTab]->nPosX[SC_SPLIT_LEFT]; nX<nFix; nX++)
+ {
+ USHORT nTSize = pDoc->GetColWidth( nX, nTab );
+ if (nTSize)
+ {
+ long nPix = (long) ( nTSize * nPPTX );
+ nNewPos += nPix;
+ }
+ }
+ nNewPos += pView->GetGridOffset().X();
+ if (nNewPos != pTabData[nTab]->nHSplitPos)
+ {
+ pTabData[nTab]->nHSplitPos = nNewPos;
+ if (nTab == nTabNo)
+ RecalcPixPos(); //! sollte nicht noetig sein !!!
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+BOOL ScViewData::UpdateFixY( USHORT nTab ) // TRUE = Wert geaendert
+{
+ if (nTab>MAXTAB) // Default
+ nTab=nTabNo; // akuelle Tabelle
+
+ if (!pView || pTabData[nTab]->eVSplitMode != SC_SPLIT_FIX)
+ return FALSE;
+
+ USHORT nFix = pTabData[nTab]->nFixPosY;
+ ScDocument* pDoc = GetDocument();
+ long nNewPos = 0;
+ for (USHORT nY=pTabData[nTab]->nPosY[SC_SPLIT_TOP]; nY<nFix; nY++)
+ {
+ USHORT nTSize = pDoc->FastGetRowHeight( nY, nTab );
+ if (nTSize)
+ {
+ long nPix = (long) ( nTSize * nPPTY );
+ nNewPos += nPix;
+ }
+ }
+ nNewPos += pView->GetGridOffset().Y();
+ if (nNewPos != pTabData[nTab]->nVSplitPos)
+ {
+ pTabData[nTab]->nVSplitPos = nNewPos;
+ if (nTab == nTabNo)
+ RecalcPixPos(); //! sollte nicht noetig sein !!!
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void ScViewData::UpdateOutlinerFlags( Outliner& rOutl ) const
+{
+ BOOL bOnlineSpell = GetDocument()->GetDocOptions().IsAutoSpell();
+ BOOL bHideSpell = GetOptions().IsHideAutoSpell();
+
+ ULONG nCntrl = rOutl.GetControlWord();
+ nCntrl |= EE_CNTRL_URLSFXEXECUTE;
+ nCntrl |= EE_CNTRL_MARKFIELDS;
+ nCntrl |= EE_CNTRL_AUTOCORRECT;
+ if( bHideSpell )
+ nCntrl |= EE_CNTRL_NOREDLINES;
+ else
+ nCntrl &= ~EE_CNTRL_NOREDLINES;
+ if( bOnlineSpell )
+ nCntrl |= EE_CNTRL_ONLINESPELLING;
+ else
+ nCntrl &= ~EE_CNTRL_ONLINESPELLING;
+ rOutl.SetControlWord(nCntrl);
+
+ rOutl.SetCalcFieldValueHdl( LINK( SC_MOD(), ScModule, CalcFieldValueHdl ) );
+
+ // #66115# Der Speller muss auch gesetzt werden, wenn Online-Spelling aus ist,
+ // weil die EditEngine sich vom Speller die Sprache fuer AutoKorrektur holt
+
+#ifdef ONE_LINGU
+ //! no way to set the outliner's spelling language?
+ // (may not bee needed - default language is always used)
+
+ rOutl.SetSpeller( OFF_APP()->GetSpellChecker() );
+#else
+ SpellCheck& rSpeller = *OFF_APP()->GetSpellChecker();
+ if ( bOnlineSpell )
+ {
+ if (!rSpeller.LoadDll())
+ {
+ //! Fehlermeldung?
+ }
+ }
+ // Zeichenobjekt hat keine eigene Sprache...
+ LanguageType eLang = (LanguageType) rSpeller.GetDefaultLanguage();
+ if ( eLang == LANGUAGE_SYSTEM )
+ eLang = System::GetLanguage(); // Spelling nie mit SYSTEM
+ rSpeller.SetActualLanguage( eLang );
+ rOutl.SetSpeller(&rSpeller);
+#endif
+}
+
+ScAddress ScViewData::GetCurPos() const
+{
+ return ScAddress( GetCurX(), GetCurY(), GetTabNo() );
+}
+
+
+
+
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
new file mode 100644
index 000000000000..081da5158051
--- /dev/null
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -0,0 +1,2548 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewfun2.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#define _SVSTDARR_STRINGS
+#include <svx/boxitem.hxx>
+#include <svx/fontitem.hxx>
+#include <svx/srchitem.hxx>
+#include <svx/linkmgr.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/docfilt.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/objitem.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <svtools/stritem.hxx>
+#include <svtools/zforlist.hxx>
+#include <svtools/svstdarr.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/sound.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/waitobj.hxx>
+
+#include "viewfunc.hxx"
+
+#include "sc.hrc"
+#include "globstr.hrc"
+
+#include "arealink.hxx"
+#include "attrib.hxx"
+#include "autoform.hxx"
+#include "cell.hxx" // EnterAutoSum
+#include "compiler.hxx"
+#include "docfunc.hxx"
+#include "docpool.hxx"
+#include "docsh.hxx"
+#include "global.hxx"
+#include "patattr.hxx"
+#include "printfun.hxx"
+#include "rangenam.hxx"
+#include "rangeutl.hxx"
+#include "refundo.hxx"
+#include "tablink.hxx"
+#include "tabvwsh.hxx"
+#include "uiitems.hxx"
+#include "undoblk.hxx"
+#include "undocell.hxx"
+#include "undotab.hxx"
+
+
+// STATIC DATA ---------------------------------------------------------------
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScViewFunc::AdjustBlockHeight( BOOL bPaint, ScMarkData* pMarkData )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ if (!pMarkData)
+ pMarkData = &GetViewData()->GetMarkData();
+
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT* pRanges = new USHORT[MAXROW+1];
+ USHORT nRangeCnt = pMarkData->GetMarkRowRanges( pRanges );
+ if (!nRangeCnt)
+ {
+ pRanges[0] = pRanges[1] = GetViewData()->GetCurY();
+ nRangeCnt = 1;
+ }
+
+ VirtualDevice aVirtDev;
+ BOOL bAnyChanged = FALSE;
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ {
+ if (pMarkData->GetTableSelect(nTab))
+ {
+ USHORT* pOneRange = pRanges;
+ BOOL bChanged = FALSE;
+ USHORT nPaintY;
+ for (USHORT nRangeNo=0; nRangeNo<nRangeCnt; nRangeNo++)
+ {
+ USHORT nStartNo = *(pOneRange++);
+ USHORT nEndNo = *(pOneRange++);
+ if (pDoc->SetOptimalHeight( nStartNo, nEndNo, nTab, 0, &aVirtDev,
+ GetViewData()->GetPPTX(),
+ GetViewData()->GetPPTY(),
+ GetViewData()->GetZoomX(),
+ GetViewData()->GetZoomY(),
+ FALSE ))
+ {
+ if (!bChanged)
+ nPaintY = nStartNo;
+ bAnyChanged = bChanged = TRUE;
+ }
+ }
+ if ( bPaint && bChanged )
+ pDocSh->PostPaint( 0, nPaintY, nTab, MAXCOL, MAXROW, nTab,
+ PAINT_GRID | PAINT_LEFT );
+ }
+ }
+ delete[] pRanges;
+
+ if ( bPaint && bAnyChanged )
+ pDocSh->UpdateOle(GetViewData());
+
+ return bAnyChanged;
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScViewFunc::AdjustRowHeight( USHORT nStartRow, USHORT nEndRow, BOOL bPaint )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ double nPPTX = GetViewData()->GetPPTX();
+ double nPPTY = GetViewData()->GetPPTY();
+ USHORT nOldPixel;
+ if (nStartRow == nEndRow)
+ nOldPixel = (USHORT) (pDoc->GetRowHeight(nStartRow,nTab) * nPPTY);
+
+ VirtualDevice aVirtDev;
+ BOOL bChanged = pDoc->SetOptimalHeight( nStartRow, nEndRow, nTab, 0, &aVirtDev,
+ nPPTX, nPPTY,
+ GetViewData()->GetZoomX(),
+ GetViewData()->GetZoomY(),
+ FALSE );
+
+ if (bChanged && ( nStartRow == nEndRow ))
+ {
+ USHORT nNewPixel = (USHORT) (pDoc->GetRowHeight(nStartRow,nTab) * nPPTY);
+ if ( nNewPixel == nOldPixel )
+ bChanged = FALSE;
+ }
+
+ if ( bPaint && bChanged )
+ GetViewData()->GetDocShell()->PostPaint( 0, nStartRow, nTab, MAXCOL, MAXROW, nTab,
+ PAINT_GRID | PAINT_LEFT );
+
+ return bChanged;
+}
+
+
+//----------------------------------------------------------------------------
+
+enum ScAutoSum
+{
+ ScAutoSumNone = 0,
+ ScAutoSumData,
+ ScAutoSumSum
+};
+
+
+ScAutoSum lcl_IsAutoSumData( ScDocument* pDoc, USHORT nCol, USHORT nRow,
+ USHORT nTab, ScDirection eDir, USHORT& nExtend )
+{
+ ScBaseCell* pCell;
+ pDoc->GetCell( nCol, nRow, nTab, pCell );
+ if ( pCell && pCell->HasValueData() )
+ {
+ if ( pCell->GetCellType() == CELLTYPE_FORMULA )
+ {
+ ScTokenArray* pCode = ((ScFormulaCell*)pCell)->GetCode();
+ if ( pCode && pCode->GetOuterFuncOpCode() == ocSum )
+ {
+ if ( pCode->GetAdjacentExtendOfOuterFuncRefs( nExtend,
+ ScAddress( nCol, nRow, nTab ), eDir ) )
+ return ScAutoSumSum;
+ }
+ }
+ return ScAutoSumData;
+ }
+ return ScAutoSumNone;
+}
+
+
+//----------------------------------------------------------------------------
+
+#define SC_AUTOSUM_MAXCOUNT 20
+
+ScAutoSum lcl_SeekAutoSumData( ScDocument* pDoc, USHORT& nCol, USHORT& nRow,
+ USHORT nTab, ScDirection eDir, USHORT& nExtend )
+{
+ USHORT nCount = 0;
+ while (nCount < SC_AUTOSUM_MAXCOUNT)
+ {
+ if ( eDir == DIR_TOP )
+ {
+ if (nRow)
+ --nRow;
+ else
+ return ScAutoSumNone;
+ }
+ else
+ {
+ if (nCol)
+ --nCol;
+ else
+ return ScAutoSumNone;
+ }
+ ScAutoSum eSum;
+ if ( (eSum = lcl_IsAutoSumData(
+ pDoc, nCol, nRow, nTab, eDir, nExtend )) != ScAutoSumNone )
+ return eSum;
+ ++nCount;
+ }
+ return ScAutoSumNone;
+}
+
+#undef SC_AUTOSUM_MAXCOUNT
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScViewFunc::GetAutoSumArea( ScRangeList& rRangeList )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+
+ USHORT nStartCol = nCol;
+ USHORT nStartRow = nRow;
+ USHORT nEndCol = nCol;
+ USHORT nEndRow = nRow;
+ USHORT nSeekCol = nCol;
+ USHORT nSeekRow = nRow;
+ USHORT nExtend; // wird per Reference gueltig bei ScAutoSumSum
+
+ BOOL bCol = FALSE;
+ BOOL bRow = FALSE;
+
+ ScAutoSum eSum;
+ if ( nRow
+ && ((eSum = lcl_IsAutoSumData( pDoc, nCol, nRow-1, nTab,
+ DIR_TOP, nExtend )) == ScAutoSumData )
+ && ((eSum = lcl_IsAutoSumData( pDoc, nCol, nRow-1, nTab,
+ DIR_LEFT, nExtend )) == ScAutoSumData )
+ )
+ {
+ bRow = TRUE;
+ nSeekRow = nRow - 1;
+ }
+ else if ( nCol && (eSum = lcl_IsAutoSumData( pDoc, nCol-1, nRow, nTab,
+ DIR_LEFT, nExtend )) == ScAutoSumData )
+ {
+ bCol = TRUE;
+ nSeekCol = nCol - 1;
+ }
+ else if (eSum = lcl_SeekAutoSumData( pDoc, nCol, nSeekRow, nTab, DIR_TOP, nExtend ))
+ bRow = TRUE;
+ else if (eSum = lcl_SeekAutoSumData( pDoc, nSeekCol, nRow, nTab, DIR_LEFT, nExtend ))
+ bCol = TRUE;
+
+ if ( bCol || bRow )
+ {
+ if ( bRow )
+ {
+ nStartRow = nSeekRow; // nSeekRow evtl. per Reference angepasst
+ if ( eSum == ScAutoSumSum )
+ nEndRow = nStartRow; // nur Summen summieren
+ else
+ nEndRow = nRow - 1; // Datenbereich evtl. nach unten erweitern
+ }
+ else
+ {
+ nStartCol = nSeekCol; // nSeekCol evtl. per Reference angepasst
+ if ( eSum == ScAutoSumSum )
+ nEndCol = nStartCol; // nur Summen summieren
+ else
+ nEndCol = nCol - 1; // Datenbereich evtl. nach rechts erweitern
+ }
+ BOOL bContinue = FALSE;
+ do
+ {
+ if ( eSum == ScAutoSumData )
+ {
+ if ( bRow )
+ {
+ while ( nStartRow && lcl_IsAutoSumData( pDoc, nCol,
+ nStartRow-1, nTab, DIR_TOP, nExtend ) == eSum )
+ --nStartRow;
+ }
+ else
+ {
+ while ( nStartCol && lcl_IsAutoSumData( pDoc, nStartCol-1,
+ nRow, nTab, DIR_LEFT, nExtend ) == eSum )
+ --nStartCol;
+ }
+ }
+ rRangeList.Append(
+ ScRange( nStartCol, nStartRow, nTab, nEndCol, nEndRow, nTab ) );
+ if ( eSum == ScAutoSumSum )
+ {
+ if ( bRow )
+ {
+ USHORT nTmp = nEndRow = nExtend;
+ ScAutoSum eSkip;
+ while ( (eSkip = lcl_IsAutoSumData( pDoc, nCol,
+ nEndRow, nTab, DIR_TOP, nExtend )) == ScAutoSumData
+ && nEndRow )
+ --nEndRow;
+ if ( eSkip == ScAutoSumSum && nEndRow < nTmp )
+ {
+ bContinue = TRUE;
+ nStartRow = nEndRow;
+ }
+ else
+ bContinue = FALSE;
+ }
+ else
+ {
+ USHORT nTmp = nEndCol = nExtend;
+ ScAutoSum eSkip;
+ while ( (eSkip = lcl_IsAutoSumData( pDoc, nEndCol,
+ nRow, nTab, DIR_LEFT, nExtend )) == ScAutoSumData
+ && nEndCol )
+ --nEndCol;
+ if ( eSkip == ScAutoSumSum && nEndCol < nTmp )
+ {
+ bContinue = TRUE;
+ nStartCol = nEndCol;
+ }
+ else
+ bContinue = FALSE;
+ }
+ }
+ } while ( bContinue );
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::EnterAutoSum(const ScRangeList& rRangeList) // Block mit Summen fuellen
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ String aRef;
+ rRangeList.Format( aRef, SCA_VALID, pDoc );
+
+ String aFormula = '=';
+ ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr();
+ ScFuncDesc* pDesc = pFuncMgr->Get( SC_OPCODE_SUM );
+ if ( pDesc && pDesc->pFuncName )
+ {
+ aFormula += *pDesc->pFuncName;
+ aFormula += '(';
+ aFormula += aRef;
+ aFormula += ')';
+ }
+
+ EnterBlock( aFormula, NULL );
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::EnterBlock( const String& rString, const EditTextObject* pData )
+{
+ // Mehrfachselektion vorher abfragen...
+
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ if ( rMark.IsMultiMarked() )
+ {
+ rMark.MarkToSimple();
+ if ( rMark.IsMultiMarked() )
+ { // "Einfuegen auf Mehrfachselektion nicht moeglich"
+ ErrorMessage(STR_MSSG_PASTEFROMCLIP_0);
+
+ // insert into single cell
+ if ( pData )
+ EnterData( nCol, nRow, nTab, pData );
+ else
+ EnterData( nCol, nRow, nTab, rString );
+ return;
+ }
+ }
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ String aNewStr = rString;
+ if ( pData )
+ {
+ const ScPatternAttr* pOldPattern = pDoc->GetPattern( nCol, nRow, nTab );
+ ScTabEditEngine aEngine( *pOldPattern, pDoc->GetEnginePool() );
+ aEngine.SetText(*pData);
+
+ ScEditAttrTester aTester( &aEngine );
+ if (!aTester.NeedsObject())
+ {
+ aNewStr = aEngine.GetText();
+ pData = NULL;
+ }
+ }
+
+ // Einfuegen per PasteFromClip
+
+ WaitObject aWait( GetFrameWin() );
+
+ ScAddress aPos( nCol, nRow, nTab );
+
+ ScDocument* pInsDoc = new ScDocument( SCDOCMODE_CLIP );
+ pInsDoc->ResetClip( pDoc, nTab );
+
+ if (aNewStr.GetChar(0) == '=') // Formel ?
+ {
+ // SetString geht nicht, weil in Clipboard-Dokumenten nicht kompiliert wird!
+ ScFormulaCell* pFCell = new ScFormulaCell( pDoc, aPos, aNewStr );
+ pInsDoc->PutCell( nCol, nRow, nTab, pFCell );
+ }
+ else if ( pData )
+ pInsDoc->PutCell( nCol, nRow, nTab, new ScEditCell( pData, pDoc, NULL ) );
+ else
+ pInsDoc->SetString( nCol, nRow, nTab, aNewStr );
+
+ pInsDoc->SetClipArea( ScRange(aPos) );
+ // auf Block einfuegen, mit Undo etc.
+ if ( PasteFromClip( IDF_CONTENTS, pInsDoc, PASTE_NOFUNC, FALSE, FALSE,
+ FALSE, INS_NONE, IDF_ATTRIB ) )
+ {
+ const SfxUInt32Item* pItem = (SfxUInt32Item*) pInsDoc->GetAttr(
+ nCol, nRow, nTab, ATTR_VALUE_FORMAT );
+ if ( pItem )
+ { // Numberformat setzen wenn inkompatibel
+ // MarkData wurde bereits in PasteFromClip MarkToSimple'ed
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ ScRange aRange;
+ rMark.GetMarkArea( aRange );
+ ScPatternAttr* pPattern = new ScPatternAttr( pDoc->GetPool() );
+ pPattern->GetItemSet().Put( *pItem );
+ short nNewType = pDoc->GetFormatTable()->GetType( pItem->GetValue() );
+ pDoc->ApplyPatternIfNumberformatIncompatible( aRange, rMark,
+ *pPattern, nNewType );
+ delete pPattern;
+ }
+ }
+
+ delete pInsDoc;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::PaintWidthHeight( BOOL bColumns, USHORT nStart, USHORT nEnd )
+{
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+
+ USHORT nParts = PAINT_GRID;
+ USHORT nStartCol = 0;
+ USHORT nStartRow = 0;
+ USHORT nEndCol = MAXCOL; // fuer Test auf Merge
+ USHORT nEndRow = MAXROW;
+ if ( bColumns )
+ {
+ nParts |= PAINT_TOP;
+ nStartCol = nStart;
+ nEndCol = nEnd;
+ }
+ else
+ {
+ nParts |= PAINT_LEFT;
+ nStartRow = nStart;
+ nEndRow = nEnd;
+ }
+ if (pDoc->HasAttrib( nStartCol,nStartRow,nTab, nEndCol,nEndRow,nTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ))
+ {
+ nStartCol = 0;
+ nStartRow = 0;
+ }
+ GetViewData()->GetDocShell()->PostPaint( nStartCol,nStartRow,nTab, MAXCOL,MAXROW,nTab, nParts );
+}
+
+
+//----------------------------------------------------------------------------
+// manueller Seitenumbruch
+
+void ScViewFunc::InsertPageBreak( BOOL bColumn, BOOL bRecord, const ScAddress* pPos,
+ BOOL bSetModified )
+{
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScAddress aCursor;
+ if (pPos)
+ aCursor = *pPos;
+ else
+ aCursor = ScAddress( GetViewData()->GetCurX(), GetViewData()->GetCurY(), nTab );
+
+ BOOL bSuccess = GetViewData()->GetDocShell()->GetDocFunc().
+ InsertPageBreak( bColumn, aCursor, bRecord, bSetModified, FALSE );
+
+ if ( bSuccess && bSetModified )
+ UpdatePageBreakData( TRUE ); // fuer PageBreak-Modus
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::DeletePageBreak( BOOL bColumn, BOOL bRecord, const ScAddress* pPos,
+ BOOL bSetModified )
+{
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScAddress aCursor;
+ if (pPos)
+ aCursor = *pPos;
+ else
+ aCursor = ScAddress( GetViewData()->GetCurX(), GetViewData()->GetCurY(), nTab );
+
+ BOOL bSuccess = GetViewData()->GetDocShell()->GetDocFunc().
+ RemovePageBreak( bColumn, aCursor, bRecord, bSetModified, FALSE );
+
+ if ( bSuccess && bSetModified )
+ UpdatePageBreakData( TRUE ); // fuer PageBreak-Modus
+}
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::RemoveManualBreaks()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, TRUE );
+ pDoc->CopyToDocument( 0,0,nTab, MAXCOL,MAXROW,nTab, IDF_NONE, FALSE, pUndoDoc );
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoRemoveBreaks( pDocSh, nTab, pUndoDoc ) );
+
+ pDoc->RemoveManualBreaks(nTab);
+ pDoc->UpdatePageBreaks(nTab);
+
+ UpdatePageBreakData( TRUE );
+ pDocSh->SetDocumentModified();
+ pDocSh->PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID );
+}
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::SetPrintZoom(USHORT nScale, USHORT nPages)
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ USHORT nTab = GetViewData()->GetTabNo();
+ pDocSh->SetPrintZoom( nTab, nScale, nPages );
+}
+
+void ScViewFunc::AdjustPrintZoom()
+{
+ ScRange aRange;
+ if ( !GetViewData()->GetSimpleArea( aRange, TRUE ) )
+ GetViewData()->GetMarkData().GetMultiMarkArea( aRange );
+ GetViewData()->GetDocShell()->AdjustPrintZoom( aRange );
+}
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::SetPrintRanges( const String* pPrint,
+ const String* pRepCol, const String* pRepRow,
+ BOOL bAddPrint )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nCurTab = GetViewData()->GetTabNo();
+ ScRange aRange( 0,0,nCurTab ); // falls Tab im String nicht angegeben
+
+ ScPrintRangeSaver* pOldRanges = pDoc->CreatePrintRangeSaver();
+ USHORT nAdd = 0;
+ if ( bAddPrint )
+ nAdd = pDoc->GetPrintRangeCount( nCurTab );
+
+ // Druckbereiche
+
+ if ( pPrint )
+ {
+ if ( !pPrint->Len() )
+ pDoc->SetPrintRangeCount( nCurTab, nAdd ); // loeschen bzw. unveraendert
+ else
+ {
+ USHORT nTCount = pPrint->GetTokenCount();
+ pDoc->SetPrintRangeCount( nCurTab, nTCount + nAdd );
+ for (USHORT i=0; i<nTCount; i++)
+ {
+ String aToken = pPrint->GetToken(i);
+ if ( aRange.ParseAny( aToken, pDoc ) & SCA_VALID )
+ pDoc->SetPrintRange( nCurTab, i + nAdd, aRange );
+ }
+ }
+ }
+ else // sonst Selektion (Druckbereich wird immer gesetzt)
+ {
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ if ( GetViewData()->GetSimpleArea( aRange, TRUE ) )
+ {
+ pDoc->SetPrintRangeCount( nCurTab, nAdd + 1 );
+ pDoc->SetPrintRange( nCurTab, nAdd, aRange );
+ }
+ else if ( rMark.IsMultiMarked() )
+ {
+ ScRangeListRef aList( new ScRangeList );
+ rMark.FillRangeListWithMarks( aList, FALSE );
+ USHORT nCnt = (USHORT) aList->Count();
+ if ( nCnt )
+ {
+ pDoc->SetPrintRangeCount( nCurTab, nCnt + nAdd );
+ ScRangePtr pR;
+ USHORT i;
+ for ( pR = aList->First(), i=0; i < nCnt;
+ pR = aList->Next(), i++ )
+ {
+ pDoc->SetPrintRange( nCurTab, i + nAdd, *pR );
+ }
+ }
+ }
+ }
+
+ // Wiederholungsspalten
+
+ if ( pRepCol )
+ {
+ if ( !pRepCol->Len() )
+ pDoc->SetRepeatColRange( nCurTab, NULL );
+ else
+ if ( aRange.ParseAny( *pRepCol, pDoc ) & SCA_VALID )
+ pDoc->SetRepeatColRange( nCurTab, &aRange );
+ }
+
+ // Wiederholungszeilen
+
+ if ( pRepRow )
+ {
+ if ( !pRepRow->Len() )
+ pDoc->SetRepeatRowRange( nCurTab, NULL );
+ else
+ if ( aRange.ParseAny( *pRepRow, pDoc ) & SCA_VALID )
+ pDoc->SetRepeatRowRange( nCurTab, &aRange );
+ }
+
+ // Umbrueche und Undo
+
+ ScPrintRangeSaver* pNewRanges = pDoc->CreatePrintRangeSaver();
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoPrintRange( pDocSh, nCurTab, pOldRanges, pNewRanges ) );
+
+ ScPrintFunc( pDocSh, pDocSh->GetPrinter(), nCurTab ).UpdatePages();
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_DELETE_PRINTAREA );
+
+ pDocSh->SetDocumentModified();
+}
+
+//----------------------------------------------------------------------------
+// Zellen zusammenfassen
+
+BOOL ScViewFunc::TestMergeCells() // Vorab-Test (fuer Menue)
+{
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ rMark.MarkToSimple();
+ return rMark.IsMarked() && !rMark.IsMultiMarked();
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScViewFunc::MergeCells( BOOL bApi, BOOL& rDoContents, BOOL bRecord )
+{
+ // Editable- und Verschachtelungs-Abfrage muss vorneweg sein (auch in DocFunc),
+ // damit dann nicht die Inhalte-QueryBox kommt
+ if (!SelectionEditable())
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return FALSE;
+ }
+
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ rMark.MarkToSimple();
+ if (!rMark.IsMarked())
+ {
+ ErrorMessage(STR_NOMULTISELECT);
+ return FALSE;
+ }
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+ USHORT nStartCol = aMarkRange.aStart.Col();
+ USHORT nStartRow = aMarkRange.aStart.Row();
+ USHORT nStartTab = aMarkRange.aStart.Tab();
+ USHORT nEndCol = aMarkRange.aEnd.Col();
+ USHORT nEndRow = aMarkRange.aEnd.Row();
+ USHORT nEndTab = aMarkRange.aEnd.Tab();
+ if ( nStartCol == nEndCol && nStartRow == nEndRow )
+ {
+ // nichts zu tun
+ return TRUE;
+ }
+
+ if ( pDoc->HasAttrib( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab,
+ HASATTR_MERGED | HASATTR_OVERLAPPED ) )
+ { // "Zusammenfassen nicht verschachteln !"
+ ErrorMessage(STR_MSSG_MERGECELLS_0);
+ return FALSE;
+ }
+
+ BOOL bOk = TRUE;
+ BOOL bNeedContents = FALSE;
+
+ if ( !pDoc->IsBlockEmpty( nStartTab, nStartCol,nStartRow+1, nStartCol,nEndRow ) ||
+ !pDoc->IsBlockEmpty( nStartTab, nStartCol+1,nStartRow, nEndCol,nEndRow ) )
+ {
+ bNeedContents = TRUE;
+ if (!bApi)
+ {
+ MessBox aBox( GetViewData()->GetDialogParent(),
+ WinBits(WB_YES_NO_CANCEL | WB_DEF_NO),
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_0 ),
+ ScGlobal::GetRscString( STR_MERGE_NOTEMPTY ) );
+ USHORT nRetVal = aBox.Execute();
+
+ if ( nRetVal == RET_YES )
+ rDoContents = TRUE;
+ else if ( nRetVal == RET_CANCEL )
+ bOk = FALSE;
+ }
+ }
+
+ if (bOk)
+ {
+ HideCursor();
+ bOk = pDocSh->GetDocFunc().MergeCells( aMarkRange, rDoContents, bRecord, bApi );
+ ShowCursor();
+
+ if (bOk)
+ {
+ SetCursor( nStartCol, nStartRow );
+ //DoneBlockMode( FALSE);
+ Unmark();
+
+ pDocSh->UpdateOle(GetViewData());
+ UpdateInputLine();
+ }
+ }
+
+ return bOk;
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScViewFunc::TestRemoveMerge()
+{
+ BOOL bMerged = FALSE;
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea( aRange ))
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ if ( pDoc->HasAttrib( aRange, HASATTR_MERGED ) )
+ bMerged = TRUE;
+ }
+ return bMerged;
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScViewFunc::RemoveMerge( BOOL bRecord )
+{
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea( aRange ))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ HideCursor();
+ BOOL bOk = pDocSh->GetDocFunc().UnmergeCells( aRange, bRecord, FALSE );
+ ShowCursor();
+ if (bOk)
+ pDocSh->UpdateOle(GetViewData());
+ }
+ return TRUE; //! bOk ??
+}
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::FillSimple( FillDir eDir, BOOL bRecord )
+{
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ const ScMarkData& rMark = GetViewData()->GetMarkData();
+ BOOL bSuccess = pDocSh->GetDocFunc().FillSimple( aRange, &rMark, eDir, bRecord, FALSE );
+ if (bSuccess)
+ {
+ pDocSh->UpdateOle(GetViewData());
+ UpdateScrollBars();
+ }
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+}
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::FillSeries( FillDir eDir, FillCmd eCmd, FillDateCmd eDateCmd,
+ double fStart, double fStep, double fMax, BOOL bRecord )
+{
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ const ScMarkData& rMark = GetViewData()->GetMarkData();
+ BOOL bSuccess = pDocSh->GetDocFunc().
+ FillSeries( aRange, &rMark, eDir, eCmd, eDateCmd,
+ fStart, fStep, fMax, bRecord, FALSE );
+ if (bSuccess)
+ {
+ pDocSh->UpdateOle(GetViewData());
+ UpdateScrollBars();
+ }
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+}
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::FillAuto( FillDir eDir, USHORT nStartCol, USHORT nStartRow,
+ USHORT nEndCol, USHORT nEndRow, USHORT nCount, BOOL bRecord )
+{
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScRange aRange( nStartCol,nStartRow,nTab, nEndCol,nEndRow,nTab );
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ const ScMarkData& rMark = GetViewData()->GetMarkData();
+ BOOL bSuccess = pDocSh->GetDocFunc().
+ FillAuto( aRange, &rMark, eDir, nCount, bRecord, FALSE );
+ if (bSuccess)
+ {
+ MarkRange( aRange, FALSE ); // aRange ist in FillAuto veraendert worden
+ pDocSh->UpdateOle(GetViewData());
+ UpdateScrollBars();
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::FillTab( USHORT nFlags, USHORT nFunction, BOOL bSkipEmpty, BOOL bAsLink )
+{
+ if (!SelectionEditable()) //! vordere Tabelle darf geschuetzt sein !!!
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ ScRange aMarkRange;
+ rMark.MarkToSimple();
+ BOOL bMulti = rMark.IsMultiMarked();
+ if (bMulti)
+ rMark.GetMultiMarkArea( aMarkRange );
+ else if (rMark.IsMarked())
+ rMark.GetMarkArea( aMarkRange );
+ else
+ aMarkRange = ScRange( GetViewData()->GetCurX(), GetViewData()->GetCurY(), nTab );
+
+ ScDocument* pUndoDoc = NULL;
+// if ( bRecord )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+// pUndoDoc->SelectTable( nTab, TRUE ); // nur fuer Markierung
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nTab && rMark.GetTableSelect(i))
+ {
+ pUndoDoc->AddUndoTab( i, i );
+ aMarkRange.aStart.SetTab( i );
+ aMarkRange.aEnd.SetTab( i );
+ pDoc->CopyToDocument( aMarkRange, IDF_ALL, bMulti, pUndoDoc );
+// pUndoDoc->SelectTable( i, TRUE );
+ }
+ }
+
+ if (bMulti)
+ pDoc->FillTabMarked( nTab, rMark, nFlags, nFunction, bSkipEmpty, bAsLink );
+ else
+ {
+ aMarkRange.aStart.SetTab( nTab );
+ aMarkRange.aEnd.SetTab( nTab );
+ pDoc->FillTab( aMarkRange, rMark, nFlags, nFunction, bSkipEmpty, bAsLink );
+ }
+
+// if ( bRecord )
+ { //! fuer ChangeTrack erst zum Schluss
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoFillTable( pDocSh, rMark,
+ aMarkRange.aStart.Col(), aMarkRange.aStart.Row(), nTab,
+ aMarkRange.aEnd.Col(), aMarkRange.aEnd.Row(), nTab,
+ pUndoDoc, bMulti, nTab, nFlags, nFunction, bSkipEmpty, bAsLink ) );
+ }
+
+ pDocSh->PostPaintGridAll();
+ pDocSh->PostDataChanged();
+}
+
+
+//----------------------------------------------------------------------------
+// AutoFormat
+
+ScAutoFormatData* ScViewFunc::CreateAutoFormatData()
+{
+ ScAutoFormatData* pData = NULL;
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+ if (GetViewData()->GetSimpleArea(nStartCol,nStartRow,nStartTab,nEndCol,nEndRow,nEndTab))
+ {
+ if ( nEndCol-nStartCol >= 3 && nEndRow-nStartRow >= 3 )
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ pData = new ScAutoFormatData;
+ pDoc->GetAutoFormatData( nStartTab, nStartCol,nStartRow,nEndCol,nEndRow, *pData );
+ }
+ }
+ return pData;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::AutoFormat( USHORT nFormatNo, BOOL bRecord )
+{
+#if 1
+
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ BOOL bSuccess = pDocSh->GetDocFunc().AutoFormat( aRange, &rMark, nFormatNo, bRecord, FALSE );
+ if (bSuccess)
+ pDocSh->UpdateOle(GetViewData());
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+
+#else
+
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ if ( !SelectionEditable( &bOnlyNotBecauseOfMatrix ) && !bOnlyNotBecauseOfMatrix )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+
+ if (GetViewData()->GetSimpleArea(nStartCol,nStartRow,nStartTab,nEndCol,nEndRow,nEndTab))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ BOOL bSize = (*ScGlobal::GetAutoFormat())[nFormatNo]->GetIncludeWidthHeight();
+
+ ScDocument* pUndoDoc = NULL;
+ if ( bRecord )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nEndTab, bSize, bSize );
+ pDoc->CopyToDocument( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab,
+ IDF_ATTRIB, FALSE, pUndoDoc );
+ if (bSize)
+ {
+ pDoc->CopyToDocument( nStartCol,0,nStartTab, nEndCol,MAXROW,nEndTab,
+ IDF_NONE, FALSE, pUndoDoc );
+ pDoc->CopyToDocument( 0,nStartRow,nStartTab, MAXCOL,nEndRow,nEndTab,
+ IDF_NONE, FALSE, pUndoDoc );
+ }
+ pDoc->BeginDrawUndo();
+ }
+
+ GetFrameWin()->EnterWait();
+ pDoc->AutoFormat( nStartCol, nStartRow, nEndCol, nEndRow, nFormatNo, rMark );
+ GetFrameWin()->LeaveWait();
+
+ if (bSize)
+ {
+ SetMarkedWidthOrHeight( TRUE, SC_SIZE_VISOPT, STD_EXTRA_WIDTH, FALSE, FALSE );
+ SetMarkedWidthOrHeight( FALSE, SC_SIZE_VISOPT, 0, FALSE, FALSE );
+ pDocSh->PostPaint( 0,0,nStartTab, MAXCOL,MAXROW,nStartTab,
+ PAINT_GRID | PAINT_LEFT | PAINT_TOP );
+ }
+ else
+ {
+ BOOL bAdj = AdjustBlockHeight( FALSE );
+ if (bAdj)
+ pDocSh->PostPaint( 0,nStartRow,nStartTab, MAXCOL,MAXROW,nStartTab,
+ PAINT_GRID | PAINT_LEFT );
+ else
+ pDocSh->PostPaint( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab, PAINT_GRID );
+ }
+
+ if ( bRecord ) // Draw-Undo erst jetzt verfuegbar
+ {
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoAutoFormat( pDocSh,
+ ScRange(nStartCol,nStartRow,nStartTab, nEndCol,nEndRow,nEndTab),
+ pUndoDoc, rMark, bSize, nFormatNo ) );
+ }
+
+ pDocSh->UpdateOle(GetViewData());
+ pDocSh->SetDocumentModified();
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+
+#endif
+}
+
+
+//----------------------------------------------------------------------------
+// Suchen & Ersetzen
+
+void ScViewFunc::SearchAndReplace( const SvxSearchItem* pSearchItem,
+ BOOL bAddUndo, BOOL bIsApi )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ BOOL bAttrib = pSearchItem->GetPattern();
+ USHORT nCommand = pSearchItem->GetCommand();
+ BOOL bAllTables = pSearchItem->IsAllTables();
+ BOOL* pOldSelectedTables = NULL;
+ USHORT nOldSelectedCount = 0;
+ USHORT nOldTab = nTab;
+ USHORT nLastTab = pDoc->GetTableCount() - 1;
+ USHORT nStartTab, nEndTab;
+ if ( bAllTables )
+ {
+ nStartTab = 0;
+ nEndTab = nLastTab;
+ pOldSelectedTables = new BOOL [ nEndTab + 1 ];
+ for ( USHORT j = 0; j <= nEndTab; j++ )
+ {
+ pOldSelectedTables[j] = rMark.GetTableSelect( j );
+ if ( pOldSelectedTables[j] )
+ ++nOldSelectedCount;
+ }
+ }
+ else
+ { //! mindestens eine ist immer selektiert
+ nStartTab = nEndTab = rMark.GetFirstSelected();
+ for ( USHORT j = nStartTab + 1; j <= nLastTab; j++ )
+ {
+ if ( rMark.GetTableSelect( j ) )
+ nEndTab = j;
+ }
+ }
+
+ if ( nCommand == SVX_SEARCHCMD_REPLACE
+ || nCommand == SVX_SEARCHCMD_REPLACE_ALL )
+ {
+ for ( USHORT j = nStartTab; j <= nEndTab; j++ )
+ {
+ if ( (bAllTables || rMark.GetTableSelect( j )) &&
+ pDoc->IsTabProtected( j ) )
+ {
+ if ( pOldSelectedTables )
+ delete [] pOldSelectedTables;
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+ }
+ }
+
+ if ( nCommand == SVX_SEARCHCMD_FIND
+ || nCommand == SVX_SEARCHCMD_FIND_ALL)
+ bAddUndo = FALSE;
+
+ //! bAttrib bei Undo beruecksichtigen !!!
+
+ ScDocument* pUndoDoc = NULL;
+ ScMarkData* pUndoMark = NULL;
+ String aUndoStr;
+ if (bAddUndo)
+ {
+ pUndoMark = new ScMarkData( rMark ); // Markierung wird veraendert
+ if ( nCommand == SVX_SEARCHCMD_REPLACE_ALL )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nEndTab );
+ }
+ }
+
+ if ( bAllTables )
+ { //! alles selektieren, erst nachdem pUndoMark erzeugt wurde
+ for ( USHORT j = nStartTab; j <= nEndTab; j++ )
+ {
+ rMark.SelectTable( j, TRUE );
+ }
+ }
+
+ DoneBlockMode(TRUE); // Markierung nicht loeschen!
+ InitOwnBlockMode();
+
+ // wenn vom Anfang an gesucht wird, nicht nochmal fragen ob vom Anfang gesucht werden soll
+ BOOL bFirst = TRUE;
+ if ( nCol == 0 && nRow == 0 && nTab == nStartTab && !pSearchItem->GetBackward() )
+ bFirst = FALSE;
+
+ BOOL bFound = FALSE;
+ while (TRUE)
+ {
+ GetFrameWin()->EnterWait();
+ if (pDoc->SearchAndReplace( *pSearchItem, nCol, nRow, nTab, rMark, aUndoStr, pUndoDoc ) )
+ {
+ bFound = TRUE;
+ bFirst = TRUE;
+ if (bAddUndo)
+ {
+ GetViewData()->GetDocShell()->GetUndoManager()->AddUndoAction(
+ new ScUndoReplace( GetViewData()->GetDocShell(), *pUndoMark,
+ nCol, nRow, nTab,
+ aUndoStr, pUndoDoc, pSearchItem ) );
+ pUndoDoc = NULL;
+ }
+
+ break; // Abbruch while True
+ }
+ else if ( bFirst && (nCommand == SVX_SEARCHCMD_FIND ||
+ nCommand == SVX_SEARCHCMD_REPLACE) )
+ {
+ bFirst = FALSE;
+ USHORT nRetVal;
+ GetFrameWin()->LeaveWait();
+ if ( bIsApi )
+ nRetVal = RET_NO;
+ else
+ {
+ // Suchen-Dialog als Parent, wenn vorhanden
+ Window* pParent = GetParentOrChild(SID_SEARCH_DLG);
+ USHORT nStrId;
+ if ( pSearchItem->GetBackward() )
+ {
+ if ( nStartTab == nEndTab )
+ nStrId = STR_MSSG_SEARCHANDREPLACE_1;
+ else
+ nStrId = STR_MSSG_SEARCHANDREPLACE_4;
+ }
+ else
+ {
+ if ( nStartTab == nEndTab )
+ nStrId = STR_MSSG_SEARCHANDREPLACE_2;
+ else
+ nStrId = STR_MSSG_SEARCHANDREPLACE_5;
+ }
+ MessBox aBox( pParent, WinBits(WB_YES_NO | WB_DEF_YES),
+ ScGlobal::GetRscString( STR_MSSG_SEARCHANDREPLACE_3 ),
+ ScGlobal::GetRscString( nStrId ) );
+ nRetVal = aBox.Execute();
+ }
+
+ if ( nRetVal == RET_YES )
+ {
+ ScDocument::GetSearchAndReplaceStart( *pSearchItem, nCol, nRow );
+ if (pSearchItem->GetBackward())
+ nTab = nEndTab;
+ else
+ nTab = nStartTab;
+ }
+ else
+ {
+ break; // Abbruch while True
+ }
+ }
+ else // nichts gefunden
+ {
+ if ( nCommand == SVX_SEARCHCMD_FIND_ALL || nCommand == SVX_SEARCHCMD_REPLACE_ALL )
+ {
+ pDocSh->PostPaintGridAll(); // Markierung
+ }
+
+ GetFrameWin()->LeaveWait();
+ if (!bIsApi)
+ {
+ // Suchen-Dialog als Parent, wenn vorhanden
+ Window* pParent = GetParentOrChild(SID_SEARCH_DLG);
+ // "nichts gefunden"
+ InfoBox aBox( pParent, ScGlobal::GetRscString( STR_MSSG_SEARCHANDREPLACE_0 ) );
+ aBox.Execute();
+ }
+
+ break; // Abbruch while True
+ }
+ } // of while TRUE
+
+ if ( pOldSelectedTables )
+ { // urspruenglich selektierte Tabellen wiederherstellen
+ for ( USHORT j = nStartTab; j <= nEndTab; j++ )
+ {
+ rMark.SelectTable( j, pOldSelectedTables[j] );
+ }
+ if ( bFound )
+ { // durch Fundstelle neu selektierte Tabelle bleibt
+ rMark.SelectTable( nTab, TRUE );
+ // wenn vorher nur eine selektiert war, ist es ein Tausch
+ //! wenn nicht, ist jetzt evtl. eine mehr selektiert
+ if ( nOldSelectedCount == 1 && nTab != nOldTab )
+ rMark.SelectTable( nOldTab, FALSE );
+ }
+ delete [] pOldSelectedTables;
+ }
+ if ( bFound )
+ {
+ if ( nTab != GetViewData()->GetTabNo() )
+ SetTabNo( nTab );
+
+ // wenn nichts markiert ist, DoneBlockMode, damit von hier aus
+ // direkt per Shift-Cursor markiert werden kann:
+ if (!rMark.IsMarked() && !rMark.IsMultiMarked())
+ DoneBlockMode(TRUE);
+
+ AlignToCursor( nCol, nRow, SC_FOLLOW_JUMP );
+ SetCursor( nCol, nRow, TRUE );
+
+ if ( nCommand == SVX_SEARCHCMD_REPLACE
+ || nCommand == SVX_SEARCHCMD_REPLACE_ALL )
+ {
+ if ( nCommand == SVX_SEARCHCMD_REPLACE )
+ pDocSh->PostPaint( nCol,nRow,nTab, nCol,nRow,nTab, PAINT_GRID );
+ else
+ pDocSh->PostPaintGridAll();
+ pDocSh->SetDocumentModified();
+ }
+ else if ( nCommand == SVX_SEARCHCMD_FIND_ALL )
+ pDocSh->PostPaintGridAll(); // Markierung
+ GetFrameWin()->LeaveWait();
+ }
+
+ delete pUndoDoc; // loeschen wenn nicht benutzt
+ delete pUndoMark; // kann immer geloescht werden
+}
+
+
+//----------------------------------------------------------------------------
+// Zielwertsuche
+
+void ScViewFunc::Solve( const ScSolveParam& rParam )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+
+ USHORT nDestCol = rParam.aRefVariableCell.Col();
+ USHORT nDestRow = rParam.aRefVariableCell.Row();
+ USHORT nDestTab = rParam.aRefVariableCell.Tab();
+
+ if (!pDoc->IsBlockEditable(nDestTab, nDestCol,nDestRow, nDestCol,nDestRow))
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ if ( pDoc )
+ {
+ String aTargetValStr;
+ if ( rParam.pStrTargetVal != NULL )
+ aTargetValStr = *(rParam.pStrTargetVal);
+
+ String aMsgStr;
+ String aResStr;
+ double nSolveResult;
+
+ GetFrameWin()->EnterWait();
+
+ BOOL bExact =
+ pDoc->Solver(
+ rParam.aRefFormulaCell.Col(),
+ rParam.aRefFormulaCell.Row(),
+ rParam.aRefFormulaCell.Tab(),
+ nDestCol, nDestRow, nDestTab,
+ aTargetValStr,
+ nSolveResult );
+
+ GetFrameWin()->LeaveWait();
+
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ ULONG nFormat = 0;
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nDestCol, nDestRow, nDestTab );
+ if ( pPattern )
+ nFormat = pPattern->GetNumberFormat( pFormatter );
+ Color* p;
+ pFormatter->GetOutputString( nSolveResult, nFormat, aResStr, &p );
+
+ if ( bExact )
+ {
+ aMsgStr = ScGlobal::GetRscString( STR_MSSG_SOLVE_0 );
+ aMsgStr += ScGlobal::GetRscString( STR_MSSG_SOLVE_1 );
+ aMsgStr += String( aResStr );
+ aMsgStr += ScGlobal::GetRscString( STR_MSSG_SOLVE_2 );
+ }
+ else
+ {
+ aMsgStr = ScGlobal::GetRscString( STR_MSSG_SOLVE_3 );
+ aMsgStr += ScGlobal::GetRscString( STR_MSSG_SOLVE_4 );
+ aMsgStr += ScGlobal::GetRscString( STR_MSSG_SOLVE_5 );
+ aMsgStr += String( aResStr );
+ aMsgStr += ScGlobal::GetRscString( STR_MSSG_SOLVE_6 );
+ }
+
+ MessBox aBox( GetViewData()->GetDialogParent(),
+ WinBits(WB_YES_NO | WB_DEF_NO),
+ ScGlobal::GetRscString( STR_MSSG_DOSUBTOTALS_0 ), aMsgStr );
+ USHORT nRetVal = aBox.Execute();
+
+ if ( RET_YES == nRetVal )
+ EnterData( nDestCol, nDestRow, nDestTab, nSolveResult );
+
+ GetViewData()->GetViewShell()->UpdateInputHandler( TRUE );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+// Mehrfachoperation
+
+void ScViewFunc::TabOp( const ScTabOpParam& rParam, BOOL bRecord )
+{
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ pDocSh->GetDocFunc().TabOp( aRange, &rMark, rParam, bRecord, FALSE );
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::MakeScenario( const String& rName, const String& rComment,
+ const Color& rColor, USHORT nFlags )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ USHORT nNewTab = pDocSh->MakeScenario( nTab, rName, rComment, rColor, nFlags, rMark );
+ if (nFlags & SC_SCENARIO_COPYALL)
+ SetTabNo( nNewTab, TRUE ); // SC_SCENARIO_COPYALL -> sichtbar
+ else
+ {
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_STATUS_DOCPOS ); // Statusbar
+ rBindings.Invalidate( SID_TABLES_COUNT );
+ rBindings.Invalidate( SID_SELECT_SCENARIO );
+ rBindings.Invalidate( FID_TABLE_SHOW );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::ExtendScenario()
+{
+ if (!SelectionEditable())
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ // Undo: Attribute anwenden
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScPatternAttr aPattern( pDoc->GetPool() );
+ aPattern.GetItemSet().Put( ScMergeFlagAttr( SC_MF_SCENARIO ) );
+ aPattern.GetItemSet().Put( ScProtectionAttr( TRUE ) );
+ ApplySelectionPattern(aPattern);
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::UseScenario( const String& rName )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ DoneBlockMode();
+ InitOwnBlockMode();
+ pDocSh->UseScenario( nTab, rName );
+}
+
+
+//----------------------------------------------------------------------------
+// Tabelle einfuegen
+
+BOOL ScViewFunc::InsertTable( const String& rName, USHORT nTab, BOOL bRecord )
+{
+ // Reihenfolge Tabelle/Name ist bei DocFunc umgekehrt
+ BOOL bSuccess = GetViewData()->GetDocShell()->GetDocFunc().
+ InsertTable( nTab, rName, bRecord, FALSE );
+ if (bSuccess)
+ SetTabNo( nTab, TRUE );
+
+ return bSuccess;
+}
+
+//----------------------------------------------------------------------------
+// Tabellen einfuegen
+
+BOOL ScViewFunc::InsertTables(SvStrings *pNames, USHORT nTab,
+ USHORT nCount, BOOL bRecord )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+
+ SvStrings *pNameList= NULL;
+
+ WaitObject aWait( GetFrameWin() );
+
+ if (bRecord)
+ {
+ pNameList= new SvStrings;
+ pDoc->BeginDrawUndo(); // InsertTab erzeugt ein SdrUndoNewPage
+ }
+
+ BOOL bFlag=FALSE;
+
+ String aValTabName;
+ String *pStr;
+
+ for(int i=0;i<nCount;i++)
+ {
+ if(pNames!=NULL)
+ {
+ pStr=pNames->GetObject(i);
+ }
+ else
+ {
+ aValTabName.Erase();
+ pDoc->CreateValidTabName( aValTabName);
+ pStr=&aValTabName;
+ }
+
+ if(pDoc->InsertTab( nTab+i,*pStr))
+ {
+ bFlag=TRUE;
+ pDocSh->Broadcast( ScTablesHint( SC_TAB_INSERTED, nTab+i ) );
+ }
+ else
+ {
+ break;
+ }
+
+ if(pNameList!=NULL)
+ pNameList->Insert(new String(*pStr),pNameList->Count());
+
+ }
+
+ if (bFlag)
+ {
+ if (bRecord)
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoInsertTables( pDocSh, nTab, FALSE, pNameList));
+
+ // Views updaten:
+
+ SetTabNo( nTab, TRUE );
+ pDocSh->PostPaintExtras();
+ pDocSh->SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScViewFunc::AppendTable( const String& rName, BOOL bRecord )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+
+ WaitObject aWait( GetFrameWin() );
+
+ if (bRecord)
+ pDoc->BeginDrawUndo(); // InsertTab erzeugt ein SdrUndoNewPage
+
+ if (pDoc->InsertTab( SC_TAB_APPEND, rName ))
+ {
+ USHORT nTab = pDoc->GetTableCount()-1;
+ if (bRecord)
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoInsertTab( pDocSh, nTab, TRUE, rName));
+ GetViewData()->InsertTab( nTab );
+ SetTabNo( nTab, TRUE );
+ pDocSh->PostPaintExtras();
+ pDocSh->SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScViewFunc::DeleteTable( USHORT nTab, BOOL bRecord )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+
+ BOOL bSuccess = pDocSh->GetDocFunc().DeleteTable( nTab, bRecord, FALSE );
+ if (bSuccess)
+ {
+ USHORT nNewTab = nTab;
+ if ( nNewTab >= pDoc->GetTableCount() )
+ --nNewTab;
+ SetTabNo( nNewTab, TRUE );
+ }
+ return bSuccess;
+}
+
+BOOL ScViewFunc::DeleteTables(const SvUShorts &TheTabs, BOOL bRecord )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nNewTab = TheTabs[0];
+ int i;
+ WaitObject aWait( GetFrameWin() );
+
+ BOOL bWasLinked = FALSE;
+ ScDocument* pUndoDoc = NULL;
+ ScRefUndoData* pUndoData = NULL;
+ if (bRecord)
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+// pUndoDoc->InitDrawLayer( pDocSh );
+ USHORT nCount = pDoc->GetTableCount();
+
+// pUndoDoc->InitUndo( pDoc, 0, nCount-1 ); // incl. Ref.
+
+ String aOldName;
+ for(i=0;i<TheTabs.Count();i++)
+ {
+ USHORT nTab = TheTabs[i];
+ if (i==0)
+ pUndoDoc->InitUndo( pDoc, nTab,nTab, TRUE,TRUE ); // incl. Spalten/Zeilenflags
+ else
+ pUndoDoc->AddUndoTab( nTab,nTab, TRUE,TRUE ); // incl. Spalten/Zeilenflags
+
+ pDoc->CopyToDocument(0,0,nTab, MAXCOL,MAXROW,nTab, IDF_ALL,FALSE, pUndoDoc );
+ pDoc->GetName( nTab, aOldName );
+ pUndoDoc->RenameTab( nTab, aOldName, FALSE );
+ if (pDoc->IsLinked(nTab))
+ {
+ bWasLinked = TRUE;
+ pUndoDoc->SetLink( nTab, pDoc->GetLinkMode(nTab), pDoc->GetLinkDoc(nTab),
+ pDoc->GetLinkFlt(nTab), pDoc->GetLinkOpt(nTab),
+ pDoc->GetLinkTab(nTab) );
+ }
+ if ( pDoc->IsScenario(nTab) )
+ {
+ pUndoDoc->SetScenario( nTab, TRUE );
+ String aComment;
+ Color aColor;
+ USHORT nScenFlags;
+ pDoc->GetScenarioData( nTab, aComment, aColor, nScenFlags );
+ pUndoDoc->SetScenarioData( nTab, aComment, aColor, nScenFlags );
+ BOOL bActive = pDoc->IsActiveScenario( nTab );
+ pUndoDoc->SetActiveScenario( nTab, bActive );
+ }
+
+ // Drawing-Layer muss sein Undo selbst in der Hand behalten !!!
+ // pUndoDoc->TransferDrawPage(pDoc, nTab,nTab);
+ }
+
+ pUndoDoc->AddUndoTab( 0, nCount-1 ); // alle Tabs fuer Referenzen
+
+ pDoc->BeginDrawUndo(); // DeleteTab erzeugt ein SdrUndoDelPage
+
+ pUndoData = new ScRefUndoData( pDoc );
+ }
+
+ BOOL bDelError=FALSE;
+
+ for(i=TheTabs.Count()-1;i>=0;i--)
+ {
+ if (pDoc->DeleteTab( TheTabs[i], pUndoDoc ))
+ {
+ bDelError=TRUE;
+ pDocSh->Broadcast( ScTablesHint( SC_TAB_DELETED, TheTabs[i] ) );
+ }
+ }
+ if (bRecord)
+ {
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoDeleteTab( GetViewData()->GetDocShell(), TheTabs,
+ pUndoDoc, pUndoData ));
+ }
+
+
+ if(bDelError)
+ {
+ if ( nNewTab >= pDoc->GetTableCount() )
+ --nNewTab;
+
+ SetTabNo( nNewTab, TRUE );
+ if (bWasLinked)
+ {
+ pDocSh->UpdateLinks(); // Link-Manager updaten
+ SFX_BINDINGS().Invalidate(SID_LINKS);
+ }
+
+ pDocSh->PostPaintExtras();
+ pDocSh->SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ }
+ else
+ {
+ delete pUndoDoc;
+ delete pUndoData;
+ }
+ return bDelError;
+}
+
+
+//----------------------------------------------------------------------------
+
+BOOL ScViewFunc::RenameTable( const String& rName, USHORT nTab )
+{
+ // Reihenfolge Tabelle/Name ist bei DocFunc umgekehrt
+ BOOL bSuccess = GetViewData()->GetDocShell()->GetDocFunc().
+ RenameTable( nTab, rName, TRUE, FALSE );
+ if (bSuccess)
+ {
+ // Der Tabellenname koennte in einer Formel vorkommen...
+ GetViewData()->GetViewShell()->UpdateInputHandler();
+ }
+ return bSuccess;
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::InsertAreaLink( const String& rFile,
+ const String& rFilter, const String& rOptions,
+ const String& rSource )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nPosX = GetViewData()->GetCurX();
+ USHORT nPosY = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScAddress aPos( nPosX, nPosY, nTab );
+
+ String aFilterName = rFilter;
+ String aNewOptions = rOptions;
+ if (!aFilterName.Len())
+ ScDocumentLoader::GetFilterName( rFile, aFilterName, aNewOptions );
+
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+
+ ScAreaLink* pLink = new ScAreaLink( pDocSh, rFile, aFilterName, aNewOptions, rSource, aPos );
+ pLinkManager->InsertFileLink( *pLink, OBJECT_CLIENT_FILE, rFile, &aFilterName, &rSource );
+
+ // Undo fuer den leeren Link
+
+ pDocSh->GetUndoManager()->AddUndoAction( new ScUndoInsertAreaLink( pDocSh,
+ rFile, aFilterName, aNewOptions,
+ rSource, ScRange(aPos) ) );
+
+ // Update hat sein eigenes Undo
+
+ pLink->SetDoInsert(FALSE); // beim ersten Update nichts einfuegen
+ pLink->Update(); // kein SetInCreate -> Update ausfuehren
+ pLink->SetDoInsert(TRUE); // Default = TRUE
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_LINKS );
+
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::InsertTableLink( const String& rFile,
+ const String& rFilter, const String& rOptions,
+ const String& rTabName )
+{
+ String aFilterName = rFilter;
+ String aOpt = rOptions;
+ ScDocumentLoader aLoader( rFile, aFilterName, aOpt );
+ if (!aLoader.IsError())
+ {
+ ScDocShell* pSrcSh = aLoader.GetDocShell();
+ ScDocument* pSrcDoc = pSrcSh->GetDocument();
+ USHORT nTab = MAXTAB+1;
+ if (!rTabName.Len()) // kein Name angegeben -> erste Tabelle
+ nTab = 0;
+ else
+ {
+ String aTemp;
+ USHORT nCount = pSrcDoc->GetTableCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ pSrcDoc->GetName( i, aTemp );
+ if ( aTemp == rTabName )
+ nTab = i;
+ }
+ }
+
+ if ( nTab <= MAXTAB )
+ ImportTables( pSrcSh, 1, &nTab, TRUE,
+ GetViewData()->GetTabNo() );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+// Tabellen aus anderem Dokument kopieren / linken
+
+void ScViewFunc::ImportTables( ScDocShell* pSrcShell,
+ USHORT nCount, const USHORT* pSrcTabs, BOOL bLink,USHORT nTab )
+{
+ ScDocument* pSrcDoc = pSrcShell->GetDocument();
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ //USHORT nTab = GetViewData()->GetTabNo();
+
+ BOOL bError = FALSE;
+ BOOL bRefs = FALSE;
+ BOOL bName = FALSE;
+
+ if (pSrcDoc->GetDrawLayer())
+ pDocSh->MakeDrawLayer();
+
+ pDoc->BeginDrawUndo(); // drawing layer must do its own undo actions
+
+ USHORT nInsCount = 0;
+ USHORT i;
+ for( i=0; i<nCount; i++ )
+ { // #63304# insert sheets first and update all references
+ String aName;
+ pSrcDoc->GetName( pSrcTabs[i], aName );
+ pDoc->CreateValidTabName( aName );
+ if ( !pDoc->InsertTab( nTab+i, aName ) )
+ {
+ bError = TRUE; // total error
+ break; // for
+ }
+ ++nInsCount;
+ }
+ for (i=0; i<nCount && !bError; i++)
+ {
+ USHORT nSrcTab = pSrcTabs[i];
+ USHORT nDestTab1=nTab+i;
+ ULONG nErrVal = pDoc->TransferTab( pSrcDoc, nSrcTab, nDestTab1,
+ FALSE ); // no insert
+
+ switch (nErrVal)
+ {
+ case 0: // interner Fehler oder voll Fehler
+ bError = TRUE;
+ break;
+ case 2:
+ bRefs = TRUE;
+ break;
+ case 3:
+ bName = TRUE;
+ break;
+ case 4:
+ bRefs = bName = TRUE;
+ break;
+ }
+
+ // TransferTab doesn't copy drawing objects with bInsertNew=FALSE
+ if ( !bError )
+ pDoc->TransferDrawPage( pSrcDoc, nSrcTab, nDestTab1 );
+
+ if(!bError &&pSrcDoc->IsScenario(nSrcTab))
+ {
+ String aComment;
+ Color aColor;
+ USHORT nFlags;
+
+ pSrcDoc->GetScenarioData(nSrcTab, aComment,aColor, nFlags);
+ pDoc->SetScenario( nDestTab1,TRUE);
+ pDoc->SetScenarioData( nTab+i,aComment,aColor,nFlags);
+ BOOL bActive = pSrcDoc->IsActiveScenario(nSrcTab );
+ pDoc->SetActiveScenario( nDestTab1, bActive );
+ BOOL bVisible=pSrcDoc->IsVisible(nSrcTab);
+ pDoc->SetVisible(nDestTab1,bVisible );
+
+ }
+ }
+
+ if (bLink)
+ {
+ SvxLinkManager* pLinkManager = pDoc->GetLinkManager();
+
+ SfxMedium* pMed = pSrcShell->GetMedium();
+ String aFileName = pMed->GetName();
+ String aFilterName;
+ if (pMed->GetFilter())
+ aFilterName = pMed->GetFilter()->GetFilterName();
+ String aOptions = ScDocumentLoader::GetOptions(*pMed);
+
+ BOOL bWasThere = pDoc->HasLink( aFileName, aFilterName, aOptions );
+
+ String aTabStr;
+ for (i=0; i<nInsCount; i++)
+ {
+ pSrcDoc->GetName( pSrcTabs[i], aTabStr );
+ pDoc->SetLink( nTab+i, SC_LINK_NORMAL,
+ aFileName, aFilterName, aOptions, aTabStr );
+ }
+
+ if (!bWasThere) // Link pro Quelldokument nur einmal eintragen
+ {
+ ScTableLink* pLink = new ScTableLink( pDocSh, aFileName, aFilterName, aOptions );
+ pLink->SetInCreate( TRUE );
+ pLinkManager->InsertFileLink( *pLink, OBJECT_CLIENT_FILE, aFileName, &aFilterName );
+ pLink->Update();
+ pLink->SetInCreate( FALSE );
+
+ SfxBindings& rBindings = SFX_BINDINGS();
+ rBindings.Invalidate( SID_LINKS );
+ }
+ }
+
+
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoImportTab( pDocSh, nTab, nCount, bLink ) );
+
+ for (i=0; i<nInsCount; i++)
+ GetViewData()->InsertTab(nTab);
+ SetTabNo(nTab,TRUE);
+ pDocSh->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB,
+ PAINT_GRID | PAINT_TOP | PAINT_LEFT | PAINT_EXTRAS );
+
+ SfxApplication* pSfxApp = SFX_APP();
+ pSfxApp->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ pSfxApp->Broadcast( SfxSimpleHint( SC_HINT_AREAS_CHANGED ) );
+
+ pDocSh->PostPaintExtras();
+ pDocSh->PostPaintGridAll();
+ pDocSh->SetDocumentModified();
+
+ if (bRefs)
+ ErrorMessage(STR_ABSREFLOST);
+ if (bName)
+ ErrorMessage(STR_NAMECONFLICT);
+}
+
+
+//----------------------------------------------------------------------------
+// Tabelle in anderes Dokument verschieben / kopieren
+
+void ScViewFunc::MoveTable( USHORT nDestDocNo, USHORT nDestTab, BOOL bCopy )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDocShell* pDocShell = GetViewData()->GetDocShell();
+ ScDocument* pDestDoc = NULL;
+ ScDocShell* pDestShell = NULL;
+ ScTabViewShell* pDestViewSh = NULL;
+
+ BOOL bNewDoc = ( nDestDocNo == SC_DOC_NEW );
+ if ( bNewDoc )
+ {
+ nDestTab = 0; // als erstes einfügen
+
+ // ohne SFX_CALLMODE_RECORD ausfuehren, weil schon im Move-Befehl enthalten:
+
+ String aUrl = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("private:factory/"));
+ aUrl.AppendAscii(RTL_CONSTASCII_STRINGPARAM( STRING_SCAPP )); // "scalc4"
+ SfxStringItem aItem( SID_FILE_NAME, aUrl );
+ const SfxObjectItem* pObjItem = (const SfxObjectItem*) SFX_DISPATCHER().Execute(
+ SID_OPENDOC, SFX_CALLMODE_API|SFX_CALLMODE_SYNCHRON, &aItem, 0L );
+ if (pObjItem)
+ {
+ pDestShell = PTR_CAST( ScDocShell, pObjItem->GetShell() );
+ if (pDestShell)
+ pDestViewSh = pDestShell->GetBestViewShell();
+ }
+
+ // Mit SID_NEWDOCDIRECT geht's diese Woche gerade mal gar nicht,
+ // weil es ein SfxFrameItem zurueckgibt
+#if 0
+ //! SID_NEWDOCDIRECT will immer aufzeichnen !!!
+ //! Mit CALLMODE_API wuerde der Returnwert nicht stimmen (SbxObject statt Frame)
+
+ String aFactory = STRING_SCAPP; // "scalc4"
+ SfxStringItem aItem( SID_NEWDOCDIRECT, aFactory );
+ const SfxViewFrameItem* pViewFrameItem = (const SfxViewFrameItem*)
+ SFX_DISPATCHER().Execute( SID_NEWDOCDIRECT, SFX_CALLMODE_SYNCHRON, &aItem, 0L );
+
+ if ( pViewFrameItem )
+ {
+ SfxViewFrame* pFrame = pViewFrameItem->GetFrame();
+ if (pFrame)
+ {
+ pDestViewSh = PTR_CAST( ScTabViewShell, pFrame->GetViewShell() );
+ pDestShell = PTR_CAST( ScDocShell, pFrame->GetObjectShell() );
+ }
+ }
+#endif
+ }
+ else
+ pDestShell = ScDocShell::GetShellByNum( nDestDocNo );
+
+ if (!pDestShell)
+ {
+ DBG_ERROR("Dest-Doc nicht gefunden !!!");
+ return;
+ }
+
+ pDestDoc = pDestShell->GetDocument();
+
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ if (pDestDoc != pDoc)
+ {
+ if (bNewDoc)
+ {
+ while (pDestDoc->GetTableCount() > 1)
+ pDestDoc->DeleteTab(0);
+ pDestDoc->RenameTab( 0,
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("______42_____")),
+ FALSE );
+ }
+
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+
+ SvUShorts TheTabs;
+
+ int i;
+ for(i=0;i<nTabCount;i++)
+ {
+ if(rMark.GetTableSelect(i))
+ {
+ String aTabName;
+ pDoc->GetName( i, aTabName);
+ TheTabs.Insert(i,TheTabs.Count());
+ for(USHORT j=i+1;j<nTabCount;j++)
+ {
+ if((!pDoc->IsVisible(j))&&(pDoc->IsScenario(j)))
+ {
+ pDoc->GetName( j, aTabName);
+ TheTabs.Insert(j,TheTabs.Count());
+ i=j;
+ }
+ else break;
+ }
+ }
+ }
+
+ GetFrameWin()->EnterWait();
+
+ if (pDoc->GetDrawLayer())
+ pDestShell->MakeDrawLayer();
+
+ if (!bNewDoc)
+ pDestDoc->BeginDrawUndo(); // drawing layer must do its own undo actions
+
+ ULONG nErrVal =1;
+ if(nDestTab==0xFFFF) nDestTab=pDestDoc->GetTableCount();
+ USHORT nDestTab1=nDestTab;
+ for( i=0; i<TheTabs.Count(); i++, nDestTab1++ )
+ { // #63304# insert sheets first and update all references
+ String aName;
+ pDoc->GetName( TheTabs[i], aName );
+ pDestDoc->CreateValidTabName( aName );
+ if ( !pDestDoc->InsertTab( nDestTab1, aName ) )
+ {
+ nErrVal = 0; // total error
+ break; // for
+ }
+ }
+ if ( nErrVal > 0 )
+ {
+ nDestTab1 = nDestTab;
+ for(i=0;i<TheTabs.Count();i++)
+ {
+ nErrVal = pDestDoc->TransferTab( pDoc, TheTabs[i], nDestTab1,
+ FALSE ); // no insert
+
+ // TransferTab doesn't copy drawing objects with bInsertNew=FALSE
+ if ( nErrVal > 0 )
+ pDestDoc->TransferDrawPage( pDoc, TheTabs[i], nDestTab1 );
+
+ if(nErrVal>0 && pDoc->IsScenario(TheTabs[i]))
+ {
+ String aComment;
+ Color aColor;
+ USHORT nFlags;
+
+ pDoc->GetScenarioData(TheTabs[i], aComment,aColor, nFlags);
+ pDestDoc->SetScenario(nDestTab1,TRUE);
+ pDestDoc->SetScenarioData(nDestTab1,aComment,aColor,nFlags);
+ BOOL bActive = pDoc->IsActiveScenario(TheTabs[i]);
+ pDestDoc->SetActiveScenario(nDestTab1, bActive );
+
+ BOOL bVisible=pDoc->IsVisible(TheTabs[i]);
+ pDestDoc->SetVisible(nDestTab1,bVisible );
+
+ }
+ nDestTab1++;
+ }
+ }
+ String sName;
+ if (!bNewDoc)
+ {
+ pDestDoc->GetName(nDestTab, sName);
+ pDestShell->GetUndoManager()->AddUndoAction(
+ new ScUndoImportTab( pDestShell, nDestTab, TheTabs.Count(), FALSE));
+
+ }
+ else
+ {
+ pDestShell->GetUndoManager()->Clear();
+ }
+
+ GetFrameWin()->LeaveWait();
+ switch (nErrVal)
+ {
+ case 0: // interner Fehler oder voll Fehler
+ {
+ ErrorMessage(STR_TABINSERT_ERROR);
+ return;
+ }
+ break;
+ case 2:
+ ErrorMessage(STR_ABSREFLOST);
+ break;
+ case 3:
+ ErrorMessage(STR_NAMECONFLICT);
+ break;
+ case 4:
+ {
+ ErrorMessage(STR_ABSREFLOST);
+ ErrorMessage(STR_NAMECONFLICT);
+ }
+ break;
+ default:
+ break;
+ }
+ //pDestShell->GetUndoManager()->Clear(); //! Undo implementieren !!!
+/*
+ String sName;
+ pDestDoc->GetName(nDestTab, sName);
+ pDestShell->GetUndoManager()->AddUndoAction(
+ new ScUndoInsertTab( pDestShell, nDestTab, TRUE, sName ) );
+*/
+ if (!bCopy)
+ {
+ if(nTabCount!=nTabSelCount)
+ DeleteTables(TheTabs);// incl. Paint & Undo
+ else
+ ErrorMessage(STR_TABREMOVE_ERROR);
+ }
+
+ if (bNewDoc)
+ {
+ // ChartListenerCollection must be updated before DeleteTab
+ if ( pDestDoc->IsChartListenerCollectionNeedsUpdate() )
+ pDestDoc->UpdateChartListenerCollection();
+
+ pDestDoc->DeleteTab(TheTabs.Count()); // alte erste Tabelle
+//? pDestDoc->SelectTable(0, TRUE); // neue erste Tabelle selektieren
+ if (pDestViewSh)
+ pDestViewSh->TabChanged(); // Pages auf dem Drawing-Layer
+ pDestShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB,
+ PAINT_GRID | PAINT_TOP | PAINT_LEFT |
+ PAINT_EXTRAS | PAINT_SIZE );
+ // PAINT_SIZE fuer Gliederung
+ }
+ else
+ {
+ pDestShell->Broadcast( ScTablesHint( SC_TAB_INSERTED, nDestTab ) );
+ pDestShell->PostPaintExtras();
+ pDestShell->PostPaintGridAll();
+ }
+
+ TheTabs.Remove(0,TheTabs.Count());
+
+ pDestShell->SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ }
+ else // innerhalb des Dokuments
+ {
+
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nTabSelCount = rMark.GetSelectCount();
+
+ SvUShorts TheTabs;
+ SvUShorts TheDestTabs;
+ SvStrings TheTabNames;
+ String aDestName;
+ String *pString;
+
+ int i;
+ for(i=0;i<nTabCount;i++)
+ {
+ if(rMark.GetTableSelect(i))
+ {
+ String aTabName;
+ pDoc->GetName( i, aTabName);
+ TheTabNames.Insert(new String(aTabName),TheTabNames.Count());
+
+ for(USHORT j=i+1;j<nTabCount;j++)
+ {
+ if((!pDoc->IsVisible(j))&&(pDoc->IsScenario(j)))
+ {
+ pDoc->GetName( j, aTabName);
+ TheTabNames.Insert(new String(aTabName),TheTabNames.Count());
+ i=j;
+ }
+ else break;
+ }
+
+ }
+ }
+
+ if (bCopy)
+ pDoc->BeginDrawUndo(); // drawing layer must do its own undo actions
+
+ pDoc->GetName( nDestTab, aDestName);
+ USHORT nDestTab1=nDestTab;
+ USHORT nMovTab=0;
+ for(i=0;i<TheTabNames.Count();i++)
+ {
+ nTabCount = pDoc->GetTableCount();
+ pString=TheTabNames[i];
+ if(!pDoc->GetTable(*pString,nMovTab))
+ {
+ nMovTab=nTabCount;
+ }
+ if(!pDoc->GetTable(aDestName,nDestTab1))
+ {
+ nDestTab1=nTabCount;
+ }
+ pDocShell->MoveTable( nMovTab, nDestTab1, bCopy, FALSE ); // Undo ist hier
+
+ if(bCopy && pDoc->IsScenario(nMovTab))
+ {
+ String aComment;
+ Color aColor;
+ USHORT nFlags;
+
+ pDoc->GetScenarioData(nMovTab, aComment,aColor, nFlags);
+ pDoc->SetScenario(nDestTab1,TRUE);
+ pDoc->SetScenarioData(nDestTab1,aComment,aColor,nFlags);
+ BOOL bActive = pDoc->IsActiveScenario(nMovTab );
+ pDoc->SetActiveScenario( nDestTab1, bActive );
+ BOOL bVisible=pDoc->IsVisible(nMovTab);
+ pDoc->SetVisible(nDestTab1,bVisible );
+ }
+
+ TheTabs.Insert(nMovTab,TheTabs.Count());
+
+ if(!bCopy)
+ {
+ if(!pDoc->GetTable(*pString,nDestTab1))
+ {
+ nDestTab1=nTabCount;
+ }
+ }
+
+ TheDestTabs.Insert(nDestTab1,TheDestTabs.Count());
+ delete pString;
+ }
+
+ nTab = GetViewData()->GetTabNo();
+
+ if (bCopy)
+ {
+ pDocShell->GetUndoManager()->AddUndoAction(
+ new ScUndoCopyTab( pDocShell, TheTabs, TheDestTabs));
+ }
+ else
+ {
+ pDocShell->GetUndoManager()->AddUndoAction(
+ new ScUndoMoveTab( pDocShell, TheTabs, TheDestTabs));
+ }
+
+ USHORT nNewTab = nDestTab;
+ if (nNewTab == SC_TAB_APPEND)
+ nNewTab = pDoc->GetTableCount()-1;
+ else if (!bCopy && nTab<nDestTab)
+ nNewTab--;
+
+ SetTabNo( nNewTab, TRUE );
+ }
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::ShowTable( const String& rName )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ BOOL bFound = FALSE;
+ USHORT nPos = 0;
+ String aTabName;
+ USHORT nCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ pDoc->GetName( i, aTabName );
+ if ( aTabName == rName )
+ {
+ nPos = i;
+ bFound = TRUE;
+ }
+ }
+
+ if (bFound)
+ {
+ pDoc->SetVisible( nPos, TRUE );
+ pDocSh->GetUndoManager()->AddUndoAction( new ScUndoShowHideTab( pDocSh, nPos, TRUE ) );
+ SetTabNo( nPos, TRUE );
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ pDocSh->PostPaint(0,0,0,MAXCOL,MAXROW,MAXTAB, PAINT_EXTRAS);
+ pDocSh->SetDocumentModified();
+ }
+ else
+ Sound::Beep();
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::HideTable( USHORT nTab )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nVisible = 0;
+ USHORT nCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ if (pDoc->IsVisible(i))
+ ++nVisible;
+ }
+
+ if (nVisible > 1)
+ {
+ pDoc->SetVisible( nTab, FALSE );
+ pDocSh->GetUndoManager()->AddUndoAction( new ScUndoShowHideTab( pDocSh, nTab, FALSE ) );
+
+ // Views updaten:
+ pDocSh->Broadcast( ScTablesHint( SC_TAB_HIDDEN, nTab ) );
+
+ SetTabNo( nTab, TRUE );
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) );
+ pDocSh->PostPaint(0,0,0,MAXCOL,MAXROW,MAXTAB, PAINT_EXTRAS);
+ pDocSh->SetDocumentModified();
+ }
+ else
+ Sound::Beep();
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::InsertSpecialChar( const String& rStr, const Font& rFont )
+{
+ if (!SelectionEditable())
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ const sal_Unicode* pChar = rStr.GetBuffer();
+ ScTabViewShell* pViewShell = GetViewData()->GetViewShell();
+ SvxFontItem aFontItem( rFont.GetFamily(),
+ rFont.GetName(),
+ rFont.GetStyleName(),
+ rFont.GetPitch(),
+ rFont.GetCharSet(),
+ ATTR_FONT );
+ ApplyAttr( aFontItem );
+
+ while ( *pChar )
+ pViewShell->TabKeyInput( KeyEvent( *(pChar++), KeyCode() ) );
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::UpdateLineAttrs( SvxBorderLine& rLine,
+ const SvxBorderLine* pDestLine,
+ const SvxBorderLine* pSrcLine,
+ BOOL bColor )
+{
+ if ( pSrcLine && pDestLine )
+ {
+ if ( bColor )
+ {
+ rLine.SetColor ( pSrcLine->GetColor() );
+ rLine.SetOutWidth ( pDestLine->GetOutWidth() );
+ rLine.SetInWidth ( pDestLine->GetInWidth() );
+ rLine.SetDistance ( pDestLine->GetDistance() );
+ }
+ else
+ {
+ rLine.SetColor ( pDestLine->GetColor() );
+ rLine.SetOutWidth ( pSrcLine->GetOutWidth() );
+ rLine.SetInWidth ( pSrcLine->GetInWidth() );
+ rLine.SetDistance ( pSrcLine->GetDistance() );
+ }
+ }
+}
+
+
+#define SET_LINE_ATTRIBUTES(LINE,BOXLINE) \
+ pBoxLine = aBoxItem.Get##LINE(); \
+ if ( pBoxLine ) \
+ { \
+ if ( pLine ) \
+ { \
+ UpdateLineAttrs( aLine, pBoxLine, pLine, bColorOnly ); \
+ aBoxItem.SetLine( &aLine, BOXLINE ); \
+ } \
+ else \
+ aBoxItem.SetLine( NULL, BOXLINE ); \
+ }
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::SetSelectionFrameLines( const SvxBorderLine* pLine,
+ BOOL bColorOnly )
+{
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ if ( !SelectionEditable( &bOnlyNotBecauseOfMatrix ) && !bOnlyNotBecauseOfMatrix )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ const ScPatternAttr* pSelAttrs = GetSelectionPattern();
+ const SfxPoolItem* pBorderAttr = NULL;
+ SfxItemState eItemState =
+ pSelAttrs->GetItemSet().
+ GetItemState( ATTR_BORDER,
+ TRUE,
+ &pBorderAttr );
+
+ if ( eItemState != SFX_ITEM_DEFAULT )
+ {
+ if ( eItemState == SFX_ITEM_SET )
+ {
+ DBG_ASSERT( pBorderAttr, "Border-Attr not set!" );
+ SvxBoxItem aBoxItem( *(const SvxBoxItem*)pBorderAttr );
+ SvxBoxInfoItem aBoxInfoItem( ATTR_BORDER_INNER );
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ SfxItemSet* pOldSet = new SfxItemSet(
+ *(pDoc->GetPool()),
+ ATTR_PATTERN_START,
+ ATTR_PATTERN_END );
+ SfxItemSet* pNewSet = new SfxItemSet(
+ *(pDoc->GetPool()),
+ ATTR_PATTERN_START,
+ ATTR_PATTERN_END );
+
+ //------------------------------------------------------------
+ const SvxBorderLine* pBoxLine = NULL;
+ SvxBorderLine aLine;
+
+ // hier wird die pBoxLine benutzt:
+
+ SET_LINE_ATTRIBUTES(Top,BOX_LINE_TOP)
+ SET_LINE_ATTRIBUTES(Bottom,BOX_LINE_BOTTOM)
+ SET_LINE_ATTRIBUTES(Left,BOX_LINE_LEFT)
+ SET_LINE_ATTRIBUTES(Right,BOX_LINE_RIGHT)
+
+ aBoxInfoItem.SetLine( aBoxItem.GetTop(), BOXINFO_LINE_HORI );
+ aBoxInfoItem.SetLine( aBoxItem.GetLeft(), BOXINFO_LINE_VERT );
+ aBoxInfoItem.ResetFlags(); // Lines auf Valid setzen
+
+ pOldSet->Put( *pBorderAttr );
+ pNewSet->Put( aBoxItem );
+ pNewSet->Put( aBoxInfoItem );
+
+ ApplyAttributes( pNewSet, pOldSet );
+
+ delete pOldSet;
+ delete pNewSet;
+ }
+ else // if ( eItemState == SFX_ITEM_DONTCARE )
+ {
+ rMark.MarkToMulti();
+ pDoc->ApplySelectionLineStyle( rMark, pLine, bColorOnly );
+ }
+
+ ScRange aMarkRange;
+ rMark.GetMultiMarkArea( aMarkRange );
+ USHORT nStartCol = aMarkRange.aStart.Col();
+ USHORT nStartRow = aMarkRange.aStart.Row();
+ USHORT nStartTab = aMarkRange.aStart.Tab();
+ USHORT nEndCol = aMarkRange.aEnd.Col();
+ USHORT nEndRow = aMarkRange.aEnd.Row();
+ USHORT nEndTab = aMarkRange.aEnd.Tab();
+ pDocSh->PostPaint( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab,
+ PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+
+ pDocSh->UpdateOle( GetViewData() );
+ pDocSh->SetDocumentModified();
+ }
+}
+
+#undef SET_LINE_ATTRIBUTES
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::SetConditionalFormat( const ScConditionalFormat& rNew )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ULONG nIndex = pDoc->AddCondFormat(rNew); // dafuer gibt's kein Undo
+ SfxUInt32Item aItem( ATTR_CONDITIONAL, nIndex );
+
+ ApplyAttr( aItem ); // mit Paint und Undo...
+}
+
+
+//----------------------------------------------------------------------------
+
+void ScViewFunc::SetValidation( const ScValidationData& rNew )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ULONG nIndex = pDoc->AddValidationEntry(rNew); // dafuer gibt's kein Undo
+ SfxUInt32Item aItem( ATTR_VALIDDATA, nIndex );
+
+ ApplyAttr( aItem ); // mit Paint und Undo...
+}
+
+
diff --git a/sc/source/ui/view/viewfun3.cxx b/sc/source/ui/view/viewfun3.cxx
new file mode 100644
index 000000000000..8612f8d2461a
--- /dev/null
+++ b/sc/source/ui/view/viewfun3.cxx
@@ -0,0 +1,1139 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewfun3.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//----------------------------------------------------------------------------
+
+#define _SV_NOXSOUND
+
+#ifdef WIN
+ #define _MENUBTN_HXX
+#endif
+
+#define _BASE_DLGS_HXX
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _CTRLTOOL_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+#define _FILDLG_HXX
+#define _FONTDLG_HXX
+#define _FRM3D_HXX
+#define _INTRO_HXX
+#define _ISETBWR_HXX
+#define _NO_SVRTF_PARSER_HXX
+#define _MACRODLG_HXX
+#define _MODALDLG_HXX
+#define _MOREBUTTON_HXX
+#define _OUTLINER_HXX
+//#define _PRNDLG_HXX
+//#define _POLY_HXX
+#define _PVRWIN_HXX
+//#define _QUEUE_HXX
+#define _RULER_HXX
+#define _SCRWIN_HXX
+#define _SETBRW_HXX
+//#define _STACK_HXX
+//#define _STATUS_HXX ***
+#define _STDCTRL_HXX
+#define _STDMENU_HXX
+//#define _TAB_HXX
+#define _TABBAR_HXX
+#define _TREELIST_HXX
+#define _VALUESET_HXX
+#define _VCATTR_HXX
+#define _VCBRW_HXX
+#define _VCTRLS_HXX
+#define _VCSBX_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+
+//#define _SELENG_HXX
+//#define _SOUND_HXX
+//#define _SYSDLG_HXX
+
+
+
+
+#define _PASSWD_HXX
+
+#define _SFX_DOCFILE_HXX
+//#define _SFX_DOCFILT_HXX
+#define _SFX_DOCINF_HXX
+#define _SFX_DOCSH_HXX
+#define _SFXDOCFILE_HXX
+//#define _SFXDOCFILT_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFXDOCSH_HXX
+#define _SFX_PRNMON_HXX
+#define _SFX_RESMGR_HXX
+#define _SFX_TEMPLDLG_HXX
+//#define _SFXAPPWIN_HXX
+#define _SFXBASIC_HXX
+#define _SFXCTRLITEM
+#define _SFXDLGCFG_HXX
+//#define _SFXDISPATCH_HXX
+#define _SFXFILEDLG_HXX
+//#define _SFXIMGMGR_HXX
+#define _SFXIPFRM_HXX
+#define _SFX_MACRO_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXMULTISEL_HXX
+//#define _SFXMSG_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXOBJFACE_HXX
+#define _SFXOBJFAC_HXX
+#define _SFX_SAVEOPT_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXTBXMGR_HXX
+
+#define _SI_HXX
+//#define _SI_DLL_HXX
+//#define _SIDLL_HXX
+//#define _SI_NOITEMS
+//#define _SI_NOOTHERFORMS
+//#define _SI_NOSBXCONTROLS
+//#define _SINOSBXCONTROLS
+//#define _SI_NODRW
+//#define _SI_NOCONTROL
+
+#define _SVBOXITM_HXX
+#define _SVCONTNR_HXX //
+
+#define _SDR_NOTRANSFORM
+
+#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+#define _SVTABBX_HXX
+#define _SVTREEBOX_HXX
+#define _SVTREELIST_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_LAYCTRL_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SELCTRL_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_STDDLG_HXX
+#define _SVX_THESDLG_HXX
+
+// INCLUDE -------------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/dbexch.hrc>
+#include <svx/svdetc.hxx>
+#include <sfx2/dispatch.hxx>
+#include <offmgr/app.hxx>
+#include <svtools/stritem.hxx>
+#include <svtools/ptitem.hxx>
+#include <svtools/urlbmk.hxx>
+#include <so3/clsids.hxx>
+#include <sot/formats.hxx>
+#include <vcl/exchange.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/msgbox.hxx>
+
+#include "viewfunc.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "docfunc.hxx"
+#include "undoblk.hxx"
+#include "refundo.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "dataobj.hxx"
+#include "rangenam.hxx"
+#include "dbcolect.hxx"
+#include "impex.hxx" // Sylk-ID fuer CB
+#include "chgtrack.hxx"
+#include "waitoff.hxx"
+#include "sc.hrc"
+
+// STATIC DATA ---------------------------------------------------------------
+
+
+//============================================================================
+
+// GlobalName der Writer-DocShell kommt jetzt aus so3/clsids.hxx
+
+//----------------------------------------------------------------------------
+// C U T
+
+void ScViewFunc::CutToClip( ScDocument* pClipDoc )
+{
+ const BOOL bRecord=TRUE; // Undo/Redo
+
+ UpdateInputLine();
+
+ if (!SelectionEditable()) // Bereich editierbar?
+ {
+ ErrorMessage( STR_PROTECTIONERR );
+ return;
+ }
+
+ ScRange aRange; // zu loeschender Bereich
+ if ( GetViewData()->GetSimpleArea( aRange ) )
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ ScDocShellModificator aModificator( *pDocSh );
+
+ if (!rMark.IsMarked()) // Markierung setzen, falls nicht vorhanden
+ {
+ DoneBlockMode();
+ InitOwnBlockMode();
+ rMark.SetMarkArea( aRange );
+ }
+
+ CopyToClip( pClipDoc, TRUE ); // Ab ins Clipboard
+
+ ScAddress aOldEnd( aRange.aEnd ); // Zusammengefasste Zellen im Bereich?
+ pDoc->ExtendMerge( aRange, TRUE );
+
+ ScDocument* pUndoDoc = NULL;
+ if ( bRecord )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, aRange.aStart.Tab(), aRange.aEnd.Tab() );
+ pDoc->CopyToDocument( aRange, IDF_ALL, FALSE, pUndoDoc );
+ pDoc->BeginDrawUndo();
+ }
+
+ USHORT nExtFlags = 0;
+ if ( pDoc->HasAttrib( aRange, HASATTR_PAINTEXT ) )
+ nExtFlags |= SC_PF_LINES;
+
+ HideCursor(); // Cursor aendert sich !
+
+ rMark.MarkToMulti();
+ pDoc->DeleteSelection( IDF_ALL, rMark );
+ rMark.MarkToSimple();
+
+ if ( !AdjustRowHeight( aRange.aStart.Row(), aRange.aEnd.Row() ) )
+ pDocSh->PostPaint( aRange, PAINT_GRID, nExtFlags );
+
+ if ( bRecord ) // erst jetzt ist Draw-Undo verfuegbar
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoCut( pDocSh, aRange, aOldEnd, pUndoDoc ) );
+
+ aModificator.SetDocumentModified();
+ ShowCursor(); // Cursor aendert sich !
+ pDocSh->UpdateOle(GetViewData());
+
+ CellContentChanged();
+ }
+ else
+ ErrorMessage( STR_NOMULTISELECT );
+}
+
+
+//----------------------------------------------------------------------------
+// C O P Y
+
+void ScViewFunc::CopyToClip( ScDocument* pClipDoc, BOOL bCut )
+{
+ UpdateInputLine();
+
+ BOOL bSysClip = FALSE;
+ if ( !pClipDoc ) // kein eigenes Clipboard
+ {
+ pClipDoc = ScGlobal::GetClipDoc(); // ab ins System!
+ bSysClip = TRUE;
+ }
+
+ ScRange aRange;
+ if ( GetViewData()->GetSimpleArea( aRange ) )
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ if ( !pDoc->HasSelectedBlockMatrixFragment(
+/*!*/ aRange.aStart.Col(), aRange.aStart.Row(),
+ aRange.aEnd.Col(), aRange.aEnd.Row(),
+ rMark ) )
+ {
+ if (bSysClip)
+ {
+//? Clipboard::Clear(); // loescht ggf. altes ScDataObject und gibt ClipDoc frei
+
+ SvDataObjectRef pDummyObj = new SvDataObject;
+ pDummyObj->CopyClipboard();
+ }
+
+ if ( !bCut )
+ {
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->ResetLastCut(); // kein CutMode mehr
+ }
+
+ pDoc->CopyToClip( aRange.aStart.Col(), aRange.aStart.Row(),
+/*!*/ aRange.aEnd.Col(), aRange.aEnd.Row(),
+ bCut, pClipDoc, FALSE, &rMark );
+ ScGlobal::SetClipDocName( pDoc->GetDocumentShell()->GetTitle( SFX_TITLE_FULLNAME ) );
+ pClipDoc->ExtendMerge( aRange, TRUE );
+
+ if (bSysClip)
+ {
+ SvDataObjectRef pClipObj = new ScDataObject(pClipDoc,FALSE,
+ GetViewData()->GetDocShell(),
+ &GetViewData()->GetOptions());
+ pClipObj->CopyClipboard();
+ }
+ }
+ else
+ ErrorMessage(STR_MATRIXFRAGMENTERR);
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+}
+
+
+//----------------------------------------------------------------------------
+// P A S T E
+
+void ScViewFunc::PasteDraw()
+{
+ ScViewData* pViewData = GetViewData();
+ USHORT nPosX = pViewData->GetCurX();
+ USHORT nPosY = pViewData->GetCurY();
+ Point aPos = GetActiveWin()->PixelToLogic( pViewData->GetScrPos( nPosX, nPosY,
+ pViewData->GetActivePart() ) );
+ PasteDraw( aPos, ScGlobal::GetClipModel() );
+}
+
+void ScViewFunc::PasteFromSystem()
+{
+ UpdateInputLine();
+
+ if (ScGlobal::IsClipCaptured())
+ PasteFromClip( IDF_ALL );
+ else if (ScGlobal::IsClipDraw())
+ PasteDraw();
+ else
+ {
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (pClipObj.Is())
+ {
+ ULONG nBiff = Exchange::RegisterFormatName(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Biff5")));
+
+ // als erstes SvDraw-Model, dann Grafik
+ // (Grafik darf nur bei einzelner Grafik drinstehen)
+
+ if (pClipObj->HasFormat( SOT_FORMATSTR_ID_DRAWING ))
+ PasteFromSystem( SOT_FORMATSTR_ID_DRAWING );
+ else if (pClipObj->HasFormat( SOT_FORMATSTR_ID_SVXB ))
+ PasteFromSystem( SOT_FORMATSTR_ID_SVXB );
+ else if (pClipObj->HasFormat( SOT_FORMATSTR_ID_EMBED_SOURCE ))
+ {
+ // Wenn es vom Writer kommt, statt OLE RTF einfuegen
+
+ SvObjectDescriptor aDesc( pClipObj );
+ // GlobalName vom Writer wie da in docsh.cxx
+ SvGlobalName aWriterName( SO3_SW_CLASSID );
+ SvGlobalName aSwWebName( SO3_SWWEB_CLASSID );
+ if ((aDesc.GetClassName() == aWriterName || aDesc.GetClassName() == aSwWebName) &&
+ pClipObj->HasFormat(FORMAT_RTF))
+ PasteFromSystem( FORMAT_RTF );
+ else
+ PasteFromSystem( SOT_FORMATSTR_ID_EMBED_SOURCE );
+ }
+ else if (pClipObj->HasFormat( SOT_FORMATSTR_ID_LINK_SOURCE ))
+ PasteFromSystem( SOT_FORMATSTR_ID_LINK_SOURCE );
+ else if (pClipObj->HasFormat(FORMAT_PRIVATE))
+ PasteFromClip( IDF_ALL );
+ else if (pClipObj->HasFormat(nBiff)) // before xxx_OLE formats
+ PasteFromSystem(nBiff);
+ else if (pClipObj->HasFormat( SOT_FORMATSTR_ID_EMBED_SOURCE_OLE ))
+ PasteFromSystem( SOT_FORMATSTR_ID_EMBED_SOURCE_OLE );
+ else if (pClipObj->HasFormat( SOT_FORMATSTR_ID_LINK_SOURCE_OLE ))
+ PasteFromSystem( SOT_FORMATSTR_ID_LINK_SOURCE_OLE );
+ else if (pClipObj->HasFormat(FORMAT_RTF))
+ PasteFromSystem(FORMAT_RTF);
+ else if (pClipObj->HasFormat(SOT_FORMATSTR_ID_HTML))
+ PasteFromSystem(SOT_FORMATSTR_ID_HTML);
+ else if (pClipObj->HasFormat(SOT_FORMATSTR_ID_HTML_SIMPLE))
+ PasteFromSystem(SOT_FORMATSTR_ID_HTML_SIMPLE);
+ else if (pClipObj->HasFormat(SOT_FORMATSTR_ID_SYLK))
+ PasteFromSystem(SOT_FORMATSTR_ID_SYLK);
+ else if (pClipObj->HasFormat(FORMAT_STRING))
+ PasteFromSystem(FORMAT_STRING);
+ else if (pClipObj->HasFormat(FORMAT_GDIMETAFILE))
+ PasteFromSystem(FORMAT_GDIMETAFILE);
+ else if (pClipObj->HasFormat(FORMAT_BITMAP))
+ PasteFromSystem(FORMAT_BITMAP);
+// else
+// ErrorMessage(STR_PASTE_ERROR);
+ }
+// else
+// ErrorMessage(STR_PASTE_ERROR);
+ }
+
+ // keine Fehlermeldung, weil SID_PASTE in der idl das FastCall-Flag hat,
+ // also auch gerufen wird, wenn nichts im Clipboard steht (#42531#)
+}
+
+BOOL ScViewFunc::PasteFromSystem( ULONG nFormatId, BOOL bApi )
+{
+ UpdateInputLine();
+
+ BOOL bRet = TRUE;
+ if ( nFormatId == 0 && ScGlobal::IsClipCaptured() )
+ PasteFromClip( IDF_ALL );
+ else
+ {
+ SvDataObjectRef pClipObj = SvDataObject::PasteClipboard();
+ if (!pClipObj.Is())
+ return FALSE;
+
+ bRet = PasteDataFormat( nFormatId, pClipObj,
+ GetViewData()->GetCurX(), GetViewData()->GetCurY() );
+
+ if ( !bRet && !bApi )
+ ErrorMessage(STR_PASTE_ERROR);
+ }
+ return bRet;
+}
+
+
+//----------------------------------------------------------------------------
+// P A S T E
+
+// Drag & Drop
+BOOL ScViewFunc::PasteDataObject( SvDataObject* pObject, USHORT nPosX, USHORT nPosY,
+ Window* pWin, Point* pLogicPos )
+{
+ ULONG nFormatId = 0;
+
+ ULONG nSba = SOT_FORMATSTR_ID_SBA_DATAEXCHANGE;
+ ULONG nField = Exchange::RegisterFormatName(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(SBA_FIELDEXCHANGE_FORMAT)));
+ ULONG nDDE = SOT_FORMATSTR_ID_LINK;
+ ULONG nBiff = Exchange::RegisterFormatName(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Biff5")));
+
+ // eine DB-Tabelle aus dem Explorer hat Sba und Bookmark -> Bookmark nur wenn nicht Sba
+
+ if ( INetBookmark::HasFormat(*pObject) && !pObject->HasFormat(nSba) )
+ if (PasteBookmark( pObject, nPosX, nPosY ))
+ return TRUE;
+
+ // als erstes SvDraw-Model, dann Grafik (darf nur bei einzelner Grafik drinstehen)
+
+ if (pObject->HasFormat(SOT_FORMATSTR_ID_DRAWING))
+ nFormatId = SOT_FORMATSTR_ID_DRAWING;
+ else if (pObject->HasFormat(SOT_FORMATSTR_ID_SVXB))
+ nFormatId = SOT_FORMATSTR_ID_SVXB;
+ else if (pObject->HasFormat(SOT_FORMATSTR_ID_EMBED_SOURCE))
+ {
+ // Wenn es vom Writer kommt, statt OLE RTF einfuegen
+
+ SvObjectDescriptor aDesc( pObject );
+ // GlobalName vom Writer wie da in docsh.cxx
+ SvGlobalName aWriterName( SO3_SW_CLASSID );
+ SvGlobalName aSwWebName( SO3_SWWEB_CLASSID );
+ if ((aDesc.GetClassName() == aWriterName || aDesc.GetClassName() == aSwWebName) &&
+ pObject->HasFormat(FORMAT_RTF))
+ nFormatId = FORMAT_RTF;
+ else
+ nFormatId = SOT_FORMATSTR_ID_EMBED_SOURCE;
+ }
+ else if (pObject->HasFormat(SOT_FORMATSTR_ID_LINK_SOURCE))
+ nFormatId = SOT_FORMATSTR_ID_LINK_SOURCE;
+ else if (pObject->HasFormat(nSba)) // Sba muss vor RTF kommen, damit bei Daten aus dem
+ nFormatId = nSba; // Beamer importiert wird (RTF kopiert nur die Inhalte)
+ else if (pObject->HasFormat(nField))
+ nFormatId = nField;
+ else if (pObject->HasFormat(nBiff)) // before xxx_OLE formats
+ nFormatId = nBiff;
+ else if (pObject->HasFormat(SOT_FORMATSTR_ID_EMBED_SOURCE_OLE))
+ nFormatId = SOT_FORMATSTR_ID_EMBED_SOURCE_OLE;
+ else if (pObject->HasFormat(SOT_FORMATSTR_ID_LINK_SOURCE_OLE))
+ nFormatId = SOT_FORMATSTR_ID_LINK_SOURCE_OLE;
+ else if (pObject->HasFormat(FORMAT_RTF))
+ nFormatId = FORMAT_RTF;
+ else if (pObject->HasFormat(SOT_FORMATSTR_ID_HTML))
+ nFormatId = SOT_FORMATSTR_ID_HTML;
+ else if (pObject->HasFormat(SOT_FORMATSTR_ID_HTML_SIMPLE))
+ nFormatId = SOT_FORMATSTR_ID_HTML_SIMPLE;
+ else if (pObject->HasFormat(SOT_FORMATSTR_ID_SYLK))
+ nFormatId = SOT_FORMATSTR_ID_SYLK;
+ else if (pObject->HasFormat(nDDE))
+ nFormatId = nDDE;
+ else if (pObject->HasFormat(FORMAT_STRING))
+ nFormatId = FORMAT_STRING;
+ else if (pObject->HasFormat(FORMAT_GDIMETAFILE))
+ nFormatId = FORMAT_GDIMETAFILE;
+ else if (pObject->HasFormat(FORMAT_BITMAP))
+ nFormatId = FORMAT_BITMAP;
+ else if (pObject->HasFormat(FORMAT_FILE))
+ nFormatId = FORMAT_FILE;
+
+ if (nFormatId)
+ return PasteDataFormat( nFormatId, pObject, nPosX, nPosY, pWin, pLogicPos );
+ else
+ return FALSE;
+}
+
+// Drag & Drop als Link
+BOOL ScViewFunc::LinkDataObject( SvDataObject* pObject, USHORT nPosX, USHORT nPosY,
+ Window* pWin, Point* pLogicPos )
+{
+ ULONG nFormatId = 0;
+
+ // Links: nur OLE-Link / DDE
+ //! bei OLE-Link auch Unterscheidung, ob's vom Writer kommt ???
+
+ ULONG nDDE = SOT_FORMATSTR_ID_LINK;
+
+ if (pObject->HasFormat( SOT_FORMATSTR_ID_LINK_SOURCE ))
+ nFormatId = SOT_FORMATSTR_ID_LINK_SOURCE;
+ else if (pObject->HasFormat( SOT_FORMATSTR_ID_LINK_SOURCE_OLE ))
+ nFormatId = SOT_FORMATSTR_ID_LINK_SOURCE_OLE;
+ else if (pObject->HasFormat(nDDE))
+ nFormatId = nDDE;
+
+ if (nFormatId)
+ return PasteDataFormat( nFormatId, pObject, nPosX, nPosY, pWin, pLogicPos );
+
+ if (pObject->HasFormat(FORMAT_FILE))
+ {
+ SvData aData( FORMAT_FILE );
+ if (pObject->GetData( &aData ))
+ {
+ // Datei als Link einfuegen
+
+ String aFile;
+ aData.GetData( aFile );
+ SfxStringItem aNameItem( FID_INSERT_FILE, aFile );
+ Point aPos;
+ if (pLogicPos) aPos = *pLogicPos;
+ SfxPointItem aPosItem( FN_PARAM_1, aPos );
+ SfxBoolItem aLinkItem( FN_PARAM_2, TRUE );
+ SfxDispatcher* pDisp = GetViewData()->GetViewShell()->GetViewFrame()->GetDispatcher();
+ if (pDisp)
+ pDisp->Execute( FID_INSERT_FILE, SFX_CALLMODE_ASYNCHRON,
+ &aNameItem, &aPosItem, &aLinkItem, 0L );
+ return TRUE;
+ }
+ }
+
+ // #66028# Internet Explorer draggt URLs als Link
+ if ( INetBookmark::HasFormat(*pObject) )
+ if (PasteBookmark( pObject, nPosX, nPosY ))
+ return TRUE;
+
+ return FALSE;
+}
+
+BOOL ScViewFunc::PasteOnDrawObject( SvDataObject* pObject, SdrObject* pHitObj, BOOL bLink )
+{
+ BOOL bRet = FALSE;
+ if ( bLink )
+ {
+ if ( pObject->HasFormat(SOT_FORMATSTR_ID_SVXB) )
+ {
+ SvData aData(SOT_FORMATSTR_ID_SVXB);
+ if ( pObject->GetData( &aData ) )
+ {
+ Graphic* pGraphic = NULL;
+ if ( aData.GetData( (SvDataCopyStream**) &pGraphic,
+ Graphic::StaticType(), TRANSFER_MOVE ) )
+ {
+ bRet = ApplyGraphicToObject( pHitObj, *pGraphic );
+ }
+ delete pGraphic;
+ }
+ }
+ else if ( pObject->HasFormat(FORMAT_GDIMETAFILE) )
+ {
+ SvData aData(FORMAT_GDIMETAFILE);
+ if ( pObject->GetData( &aData ) )
+ {
+ GDIMetaFile* pMtf = NULL;
+ if (aData.GetData(&pMtf, TRANSFER_MOVE))
+ {
+ bRet = ApplyGraphicToObject( pHitObj, Graphic(*pMtf) );
+ }
+ delete pMtf;
+ }
+ }
+ else if ( pObject->HasFormat(FORMAT_BITMAP) )
+ {
+ SvData aData(FORMAT_BITMAP);
+ if ( pObject->GetData( &aData ) )
+ {
+ Bitmap* pBmp = NULL;
+ if (aData.GetData(&pBmp, TRANSFER_MOVE))
+ {
+ bRet = ApplyGraphicToObject( pHitObj, Graphic(*pBmp) );
+ }
+ delete pBmp;
+ }
+ }
+ }
+ else
+ {
+ // ham' wa noch nich
+ }
+ return bRet;
+}
+
+//
+// Einfuegen auf Tabelle:
+//
+
+// internes Paste
+
+BOOL ScViewFunc::PasteFromClip( USHORT nFlags, ScDocument* pClipDoc,
+ USHORT nFunction, BOOL bSkipEmpty,
+ BOOL bTranspose, BOOL bAsLink,
+ InsCellCmd eMoveMode, USHORT nUndoExtraFlags )
+{
+ if (!pClipDoc)
+ pClipDoc = ScGlobal::GetClipDoc();
+
+ // fuer Undo etc. immer alle oder keine Inhalte sichern
+ USHORT nContFlags = IDF_NONE;
+ if (nFlags & IDF_CONTENTS)
+ nContFlags |= IDF_CONTENTS;
+ if (nFlags & IDF_ATTRIB)
+ nContFlags |= IDF_ATTRIB;
+ // evtl. Attribute ins Undo ohne sie vom Clip ins Doc zu kopieren
+ USHORT nUndoFlags = nContFlags;
+ if (nUndoExtraFlags & IDF_ATTRIB)
+ nUndoFlags |= IDF_ATTRIB;
+
+ BOOL bCutMode = pClipDoc->IsCutMode(); // bei Transpose aus dem Original-Clipdoc
+
+ ScDocument* pOrigClipDoc = NULL;
+ ScDocument* pTransClip = NULL;
+ if ( bTranspose )
+ {
+ USHORT nX,nY;
+ pClipDoc->GetClipArea( nX, nY );
+ if ( nY > MAXCOL ) // zuviele Zeilen zum Transponieren
+ {
+ ErrorMessage(STR_PASTE_FULL);
+ return FALSE;
+ }
+ pOrigClipDoc = pClipDoc; // fuer Referenzen
+
+ pTransClip = new ScDocument( SCDOCMODE_CLIP );
+ pClipDoc->TransposeClip( pTransClip, nFlags, bAsLink );
+ pClipDoc = pTransClip;
+ }
+
+ const BOOL bRecord = TRUE;
+
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+ USHORT nClipSizeX;
+ USHORT nClipSizeY;
+ pClipDoc->GetClipArea( nClipSizeX, nClipSizeY );
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ SfxUndoManager* pUndoMgr = pDocSh->GetUndoManager();
+
+ ScDocShellModificator aModificator( *pDocSh );
+
+ if ( rMark.IsMultiMarked() )
+ {
+ rMark.MarkToSimple();
+ if ( rMark.IsMultiMarked() )
+ { // "Einfuegen auf Mehrfachselektion nicht moeglich"
+ ErrorMessage(STR_MSSG_PASTEFROMCLIP_0);
+ delete pTransClip;
+ return FALSE;
+ }
+ }
+
+ USHORT nMarkAddX = 0;
+ USHORT nMarkAddY = 0;
+
+ if ( rMark.IsMarked() )
+ {
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+ nStartCol = aMarkRange.aStart.Col();
+ nStartRow = aMarkRange.aStart.Row();
+ nStartTab = aMarkRange.aStart.Tab();
+ nEndCol = aMarkRange.aEnd.Col();
+ nEndRow = aMarkRange.aEnd.Row();
+ nEndTab = aMarkRange.aEnd.Tab();
+ USHORT nBlockAddX = nEndCol-nStartCol;
+ USHORT nBlockAddY = nEndRow-nStartRow;
+
+ // #58422# Nachfrage, wenn die Selektion groesser als 1 Zeile/Spalte, aber kleiner
+ // als das Clipboard ist (dann wird ueber die Selektion hinaus eingefuegt)
+
+ // ClipSize ist nicht Groesse, sondern Differenz
+ if ( ( nBlockAddX && nBlockAddX < nClipSizeX ) ||
+ ( nBlockAddY && nBlockAddY < nClipSizeY ) )
+ {
+ ScWaitCursorOff aWaitOff( GetFrameWin() );
+ String aMessage = ScGlobal::GetRscString( STR_PASTE_BIGGER );
+ QueryBox aBox( GetViewData()->GetDialogParent(),
+ WinBits(WB_YES_NO | WB_DEF_NO), aMessage );
+ if ( aBox.Execute() != RET_YES )
+ {
+ delete pTransClip;
+ return FALSE;
+ }
+ }
+
+ if (nBlockAddX > nClipSizeX)
+ nMarkAddX = nBlockAddX - nClipSizeX; // fuer Merge-Test
+ else
+ nEndCol = nStartCol + nClipSizeX;
+
+ if (nBlockAddY > nClipSizeY)
+ nMarkAddY = nBlockAddY - nClipSizeY; // fuer Merge-Test
+ else
+ nEndRow = nStartRow + nClipSizeY;
+ }
+ else
+ {
+ nStartCol = GetViewData()->GetCurX();
+ nStartRow = GetViewData()->GetCurY();
+ nStartTab = GetViewData()->GetTabNo();
+ nEndCol = nStartCol + nClipSizeX;
+ nEndRow = nStartRow + nClipSizeY;
+ nEndTab = nStartTab;
+ }
+
+ // Zielbereich, wie er angezeigt wird:
+ ScRange aUserRange( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab );
+
+ // Sollen Zellen eingefuegt werden?
+ // (zu grosse nEndCol/nEndRow werden weiter unten erkannt)
+ BOOL bInsertCells = ( eMoveMode != INS_NONE && nEndCol <= MAXCOL && nEndRow <= MAXROW );
+ if ( bInsertCells )
+ {
+ String aUndo = ScGlobal::GetRscString( STR_UNDO_PASTE );
+ pUndoMgr->EnterListAction( aUndo, aUndo );
+
+ MarkRange( aUserRange ); // wird vor CopyFromClip sowieso gesetzt
+
+ // #72930# CutMode is reset on insertion of cols/rows but needed again on cell move
+ BOOL bCut = pClipDoc->IsCutMode();
+ if (!InsertCells( eMoveMode )) // kann eingefuegt werden?
+ {
+ delete pTransClip; // abbrechen
+ pUndoMgr->LeaveListAction();
+ return FALSE;
+ }
+ if ( bCut )
+ pClipDoc->SetCutMode( bCut );
+ }
+
+ USHORT nClipStartX; // Clipboard-Bereich erweitern
+ USHORT nClipStartY;
+ pClipDoc->GetClipStart( nClipStartX, nClipStartY );
+ USHORT nUndoEndCol = nClipStartX + nClipSizeX;
+ USHORT nUndoEndRow = nClipStartY + nClipSizeY;
+ BOOL bClipOver = pClipDoc->
+ ExtendMerge( nClipStartX,nClipStartY, nUndoEndCol,nUndoEndRow, nStartTab, FALSE );
+ nUndoEndCol -= nClipStartX + nClipSizeX;
+ nUndoEndRow -= nClipStartY + nClipSizeY;
+ nUndoEndCol += nEndCol;
+ nUndoEndRow += nEndRow; // Bereich in Zielkoordinaten
+
+// if (nUndoEndCol < nEndCol) nUndoEndCol = nEndCol;
+// if (nUndoEndRow < nEndRow) nUndoEndRow = nEndRow;
+
+// nUndoEndCol += nMarkAddX;
+// nUndoEndRow += nMarkAddY;
+
+ if (nUndoEndCol>MAXCOL || nUndoEndRow>MAXROW)
+ {
+ ErrorMessage(STR_PASTE_FULL);
+ delete pTransClip;
+ if ( bInsertCells )
+ pUndoMgr->LeaveListAction();
+ return FALSE;
+ }
+
+ pDoc->ExtendMerge( nStartCol,nStartRow, nUndoEndCol,nUndoEndRow, nStartTab, FALSE );
+
+ // Test auf Zellschutz
+
+ if (!pDoc->IsBlockEditable( nStartTab, nStartCol,nStartRow, nUndoEndCol,nUndoEndRow ))
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ delete pTransClip;
+ if ( bInsertCells )
+ pUndoMgr->LeaveListAction();
+ return FALSE;
+ }
+
+ //! Test auf Ueberlappung
+ //! nur wirkliche Schnittmenge testen !!!!!!!
+
+ // pDoc->HasCommonAttr( StartCol,nStartRow, nUndoEndCol,nUndoEndRow, nStartTab,
+ // pClipDoc, nClipStartX, nClipStartY );
+
+ if (bClipOver)
+ if (pDoc->HasAttrib( nStartCol,nStartRow,nStartTab, nUndoEndCol,nUndoEndRow,nStartTab,
+ HASATTR_OVERLAPPED ))
+ { // "Zusammenfassen nicht verschachteln !"
+ ErrorMessage(STR_MSSG_PASTEFROMCLIP_1);
+ delete pTransClip;
+ if ( bInsertCells )
+ pUndoMgr->LeaveListAction();
+ return FALSE;
+ }
+
+ if ( !bCutMode )
+ {
+ ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
+ if ( pChangeTrack )
+ pChangeTrack->ResetLastCut(); // kein CutMode mehr
+ }
+
+ BOOL bColInfo = ( nStartRow==0 && nEndRow==MAXROW );
+ BOOL bRowInfo = ( nStartCol==0 && nEndCol==MAXCOL );
+
+ ScDocument* pUndoDoc = NULL;
+ ScDocument* pRefUndoDoc = NULL;
+ ScDocument* pRedoDoc = NULL;
+ ScRangeName* pUndoRange = NULL;
+ ScRangeName* pRedoRange = NULL;
+ ScDBCollection* pUndoDB = NULL;
+ ScDBCollection* pRedoDB = NULL;
+
+ if ( bRecord )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nEndTab, bColInfo, bRowInfo );
+ pDoc->CopyToDocument( nStartCol, nStartRow, nStartTab, nUndoEndCol, nUndoEndRow, nEndTab,
+ nUndoFlags, FALSE, pUndoDoc );
+
+ if ( bCutMode )
+ {
+ pRefUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRefUndoDoc->InitUndo( pDoc, 0, pDoc->GetTableCount()-1, FALSE, FALSE );
+
+ ScRangeName* pDocRange = pDoc->GetRangeName();
+ if (pDocRange->GetCount())
+ pUndoRange = new ScRangeName( *pDocRange );
+ ScDBCollection* pDocDB = pDoc->GetDBCollection();
+ if (pDocDB->GetCount())
+ pUndoDB = new ScDBCollection( *pDocDB );
+ }
+ }
+
+ // waren vorher Linien da?
+ USHORT nExtFlags = 0;
+ if (pDoc->HasAttrib( nStartCol,nStartRow,nStartTab, nEndCol,nEndRow,nEndTab, HASATTR_PAINTEXT ))
+ nExtFlags |= SC_PF_LINES;
+
+ if (GetViewData()->IsActive())
+ {
+ DoneBlockMode();
+ InitOwnBlockMode();
+ }
+ rMark.SetMarkArea( aUserRange );
+
+ HideCursor(); // Cursor aendert sich !
+
+ //
+ // Aus Clipboard kopieren,
+ // wenn gerechnet werden soll, Originaldaten merken
+ //
+
+ ScDocument* pMixDoc = NULL;
+ if ( bSkipEmpty || nFunction )
+ {
+ if ( nFlags & IDF_CONTENTS )
+ {
+ pMixDoc = new ScDocument( SCDOCMODE_UNDO );
+ pMixDoc->InitUndo( pDoc, nStartTab, nEndTab );
+ pDoc->CopyToDocument( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab,
+ IDF_CONTENTS, FALSE, pMixDoc );
+ }
+ }
+
+ if (!bAsLink)
+ {
+ // normal kopieren
+ pDoc->CopyFromClip( aUserRange, rMark, nFlags, pRefUndoDoc, pClipDoc ); // Original-Bereich
+
+ // bei Transpose Referenzen per Hand anpassen
+ if ( bTranspose && bCutMode && (nFlags & IDF_CONTENTS) )
+ pDoc->UpdateTranspose( aUserRange.aStart, pOrigClipDoc, rMark, pRefUndoDoc );
+ }
+ else if (!bTranspose)
+ {
+ // kopieren mit bAsLink=TRUE
+ pDoc->CopyFromClip( aUserRange, rMark, nFlags, pRefUndoDoc, pClipDoc, TRUE, TRUE );
+ }
+ else
+ {
+ // alle Inhalte kopieren (im TransClipDoc stehen nur Formeln)
+ pDoc->CopyFromClip( aUserRange, rMark, nContFlags, pRefUndoDoc, pClipDoc );
+ }
+ pDoc->ExtendMerge( nStartCol, nStartRow, nEndCol, nEndRow, nStartTab, TRUE ); // Refresh
+ // und Bereich neu
+
+ if ( pMixDoc ) // Rechenfunktionen mit Original-Daten auszufuehren ?
+ {
+ pDoc->MixDocument( aUserRange, nFunction, bSkipEmpty, pMixDoc );
+ }
+ delete pMixDoc;
+
+ //
+ //
+ //
+
+ // sind hinterher Linien da?
+ if (!nExtFlags & SC_PF_LINES)
+ if (pDoc->HasAttrib( nStartCol,nStartRow,nStartTab, nEndCol,nEndRow,nEndTab, HASATTR_PAINTEXT ))
+ nExtFlags |= SC_PF_LINES;
+
+ // ggf. Autofilter-Koepfe loeschen
+ if (bCutMode)
+ if (pDoc->RefreshAutoFilter( nClipStartX,nClipStartY, nClipStartX+nClipSizeX,
+ nClipStartY+nClipSizeY, nStartTab ))
+ pDocSh->PostPaint( nClipStartX,nClipStartY,nStartTab,
+ nClipStartX+nClipSizeX,nClipStartY,nStartTab,
+ PAINT_GRID );
+
+ ShowCursor(); // Cursor aendert sich !
+
+ //! Block-Bereich bei RefUndoDoc weglassen !!!
+
+ if ( bRecord )
+ {
+ // Redo-Daten werden erst beim ersten Undo kopiert
+ // ohne RefUndoDoc muss das Redo-Doc noch nicht angelegt werden
+
+ if (pRefUndoDoc)
+ {
+ pRedoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRedoDoc->InitUndo( pDoc, nStartTab, nEndTab, bColInfo, bRowInfo );
+
+ // angepasste Referenzen ins Redo-Doc
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ pRedoDoc->AddUndoTab( 0, nTabCount-1 );
+ pDoc->CopyUpdated( pRefUndoDoc, pRedoDoc );
+
+ // alte Referenzen ins Undo-Doc
+
+ //! Tabellen selektieren ?
+ pUndoDoc->AddUndoTab( 0, nTabCount-1 );
+ pRefUndoDoc->DeleteArea( nStartCol, nStartRow, nEndCol, nEndRow, rMark, IDF_ALL );
+ pRefUndoDoc->CopyToDocument( 0,0,0, MAXCOL,MAXROW,nTabCount-1,
+ IDF_FORMULA, FALSE, pUndoDoc );
+ delete pRefUndoDoc;
+ }
+
+ if ( bCutMode )
+ {
+ if ( pUndoRange )
+ pRedoRange = new ScRangeName( *pDoc->GetRangeName() );
+ if ( pUndoDB )
+ pRedoDB = new ScDBCollection( *pDoc->GetDBCollection() );
+ }
+
+ //! testen, ob Bereich wirklich geaendert
+
+ pUndoMgr->AddUndoAction(
+ new ScUndoPaste( pDocSh,
+ nStartCol, nStartRow, nStartTab,
+ nUndoEndCol, nUndoEndRow, nEndTab, rMark,
+ pUndoDoc, pRedoDoc, nFlags | nUndoFlags,
+ pUndoRange, pRedoRange, pUndoDB, pRedoDB,
+ FALSE ) ); // FALSE = Redo-Daten sind nicht kopiert
+ }
+
+ if ( bInsertCells )
+ pUndoMgr->LeaveListAction();
+
+ USHORT nPaint = PAINT_GRID;
+ if (bColInfo)
+ {
+ nPaint |= PAINT_TOP;
+ nUndoEndCol = MAXCOL; // nur zum Zeichnen !
+ }
+ if (bRowInfo)
+ {
+ nPaint |= PAINT_LEFT;
+ nUndoEndRow = MAXROW; // nur zum Zeichnen !
+ }
+ pDocSh->PostPaint( nStartCol, nStartRow, nStartTab,
+ nUndoEndCol, nUndoEndRow, nEndTab, nPaint, nExtFlags );
+ AdjustBlockHeight(); //! Paint/Undo ?
+ aModificator.SetDocumentModified();
+ pDocSh->UpdateOle(GetViewData());
+
+ SelectionChanged();
+
+ delete pTransClip;
+ return TRUE;
+}
+
+
+//----------------------------------------------------------------------------
+// D R A G A N D D R O P
+//
+// innerhalb des Dokuments
+
+void ScViewFunc::MoveBlockTo( const ScRange& rSource, const ScAddress& rDestPos,
+ BOOL bCut, BOOL bRecord, BOOL bPaint )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ HideAllCursors(); // wegen zusammengefassten
+ BOOL bSuccess = pDocSh->GetDocFunc().MoveBlock(
+ rSource, rDestPos, bCut, bRecord, bPaint, FALSE );
+ ShowAllCursors();
+ if (bSuccess)
+ {
+ // Zielbereich markieren
+ ScAddress aDestEnd(
+ rDestPos.Col() + rSource.aEnd.Col() - rSource.aStart.Col(),
+ rDestPos.Row() + rSource.aEnd.Row() - rSource.aStart.Row(),
+ rDestPos.Tab() );
+ MarkRange( ScRange( rDestPos, aDestEnd ), FALSE ); //! FALSE ???
+
+ pDocSh->UpdateOle(GetViewData());
+ SelectionChanged();
+ }
+}
+
+// Link innerhalb des Dokuments
+
+void ScViewFunc::LinkBlock( const ScRange& rSource, const ScAddress& rDestPos )
+{
+ // Test auf Ueberlappung
+
+ if ( rSource.aStart.Tab() == rDestPos.Tab() )
+ {
+ USHORT nDestEndCol = rDestPos.Col() + ( rSource.aEnd.Col() - rSource.aStart.Col() );
+ USHORT nDestEndRow = rDestPos.Row() + ( rSource.aEnd.Row() - rSource.aStart.Row() );
+
+ if ( rSource.aStart.Col() <= nDestEndCol && rDestPos.Col() <= rSource.aEnd.Col() &&
+ rSource.aStart.Row() <= nDestEndRow && rDestPos.Row() <= rSource.aEnd.Row() )
+ {
+ ErrorMessage( STR_ERR_LINKOVERLAP );
+ return;
+ }
+ }
+
+ // Ausfuehren per Paste
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDocument* pClipDoc = new ScDocument( SCDOCMODE_CLIP );
+ pDoc->CopyTabToClip( rSource.aStart.Col(), rSource.aStart.Row(),
+ rSource.aEnd.Col(), rSource.aEnd.Row(),
+ rSource.aStart.Tab(), pClipDoc );
+
+ // Zielbereich markieren (Cursor setzen, keine Markierung)
+
+ if ( GetViewData()->GetTabNo() != rDestPos.Tab() )
+ SetTabNo( rDestPos.Tab() );
+
+ MoveCursorAbs( rDestPos.Col(), rDestPos.Row(), SC_FOLLOW_NONE, FALSE, FALSE );
+
+ // Paste
+
+ PasteFromClip( IDF_ALL, pClipDoc, PASTE_NOFUNC, FALSE, FALSE, TRUE ); // als Link
+
+ delete pClipDoc;
+}
+
+
+
+
diff --git a/sc/source/ui/view/viewfun4.cxx b/sc/source/ui/view/viewfun4.cxx
new file mode 100644
index 000000000000..e1c910c25a70
--- /dev/null
+++ b/sc/source/ui/view/viewfun4.cxx
@@ -0,0 +1,765 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewfun4.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+
+#ifndef _EEITEM_HXX //autogen
+#include <svx/eeitem.hxx>
+#endif
+
+#define ITEMID_FIELD EE_FEATURE_FIELD
+#include <svx/editobj.hxx>
+#include <svx/editstat.hxx>
+#include <svx/editview.hxx>
+#include <svx/flditem.hxx>
+#include <svx/hlnkitem.hxx>
+#include <svx/langitem.hxx>
+#include <svx/langtab.hxx>
+#include <svx/svxerr.hxx>
+#include <svx/impgrf.hxx>
+#include <so3/ipobj.hxx>
+#include <so3/svstor.hxx>
+#include <offmgr/app.hxx>
+
+#ifdef ONE_LINGU
+#else
+#include <offmgr/osplcfg.hxx>
+#endif
+
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/docfile.hxx>
+#include <sfx2/fcontnr.hxx>
+#include <sfx2/inimgr.hxx>
+#include <svtools/filter.hxx>
+#include <svtools/iniman.hxx>
+#include <svtools/stritem.hxx>
+#include <svtools/urlbmk.hxx>
+#include <vcl/drag.hxx>
+#include <vcl/system.hxx>
+#include <vcl/msgbox.hxx>
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
+
+#include "viewfunc.hxx"
+#include "docsh.hxx"
+#include "docsh.hxx"
+#include "document.hxx"
+#include "docpool.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "undoblk.hxx"
+#include "undocell.hxx"
+#include "cell.hxx"
+#include "scmod.hxx"
+#include "spelleng.hxx"
+#include "patattr.hxx"
+#include "sc.hrc"
+#include "tabvwsh.hxx"
+#include "impex.hxx"
+#include "editutil.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+BOOL bPasteIsDrop = FALSE;
+
+//==================================================================
+
+void ScViewFunc::PasteRTF( USHORT nStartCol, USHORT nStartRow, SvDataObject* pObject )
+{
+ if ( pObject->HasFormat( EditEngine::RegisterClipboardFormatName() ) )
+ { // EditEngine eigen wg. Drag&Drop und PasteSpecial
+ HideAllCursors();
+
+ const BOOL bRecord = TRUE;
+ ScDocument* pUndoDoc = NULL;
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nStartCol, nStartRow, nTab );
+ ScTabEditEngine* pEngine = new ScTabEditEngine( *pPattern, pDoc->GetEnginePool() );
+ pEngine->EnableUndo( FALSE );
+
+ Window* pActWin = GetActiveWin();
+ if (pActWin)
+ {
+ pEngine->SetPaperSize(Size(100000,100000));
+ Window aWin( pActWin );
+ EditView aEditView( pEngine, &aWin );
+ aEditView.SetOutputArea(Rectangle(0,0,100000,100000));
+
+ if (bPasteIsDrop)
+ {
+ DropEvent aDropEvt;
+ if (aEditView.QueryDrop( aDropEvt ))
+ aEditView.Drop( aDropEvt );
+ }
+ else
+ aEditView.PasteSpecial();
+ }
+
+ ULONG nParCnt = pEngine->GetParagraphCount();
+ if (nParCnt)
+ {
+ USHORT nEndRow = nStartRow + (USHORT) nParCnt - 1;
+ if (nEndRow > MAXROW)
+ nEndRow = MAXROW;
+
+ if (bRecord)
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+ pDoc->CopyToDocument( nStartCol,nStartRow,nTab, nStartCol,nEndRow,nTab, IDF_ALL, FALSE, pUndoDoc );
+ }
+
+ USHORT nRow = nStartRow;
+ for( USHORT n = 0; n < nParCnt; n++ )
+ {
+ EditTextObject* pObject = pEngine->CreateTextObject( n );
+ EnterData( nStartCol, nRow, nTab, pObject, FALSE, TRUE );
+ // kein Undo, auf einfache Strings testen
+ delete pObject;
+ if( ++nRow > MAXROW )
+ break;
+ }
+
+ if (bRecord)
+ {
+ ScDocument* pRedoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRedoDoc->InitUndo( pDoc, nTab, nTab );
+ pDoc->CopyToDocument( nStartCol,nStartRow,nTab, nStartCol,nEndRow,nTab, IDF_ALL, FALSE, pRedoDoc );
+
+ ScMarkData aDestMark;
+ aDestMark.SelectOneTable( nTab );
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoPaste( pDocSh, nStartCol,nStartRow,nTab, nStartCol,nEndRow,nTab,
+ aDestMark,
+ pUndoDoc, pRedoDoc, IDF_ALL, NULL,NULL,NULL,NULL ) );
+ }
+ }
+
+ delete pEngine;
+
+ ShowAllCursors();
+ }
+ else
+ {
+ SvData aData( FORMAT_RTF );
+ if (pObject->GetData( &aData ))
+ {
+ HideAllCursors();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScImportExport aImpEx( pDocSh->GetDocument(),
+ ScAddress( nStartCol, nStartRow, GetViewData()->GetTabNo() ) );
+ aImpEx.ImportData( aData );
+ AdjustRowHeight( nStartRow, aImpEx.GetRange().aEnd.Row() );
+ pDocSh->UpdateOle(GetViewData());
+ ShowAllCursors();
+ }
+ }
+}
+
+// Thesaurus - Undo ok
+void ScViewFunc::DoThesaurus( BOOL bRecord )
+{
+ USHORT nCol, nRow, nTab;
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ ScSplitPos eWhich = GetViewData()->GetActivePart();
+ LanguageType eLnge;
+ CellType eCellType;
+ EESpellState eState;
+ String sOldText, sNewString;
+ EditTextObject* pOldTObj = NULL;
+ const EditTextObject* pTObject = NULL;
+ ScBaseCell* pCell = NULL;
+ EditView* pEditView = NULL;
+ ESelection* pEditSel = NULL;
+ ScEditEngineDefaulter* pThesaurusEngine;
+ BOOL bIsEditMode = GetViewData()->HasEditView(eWhich);
+ if (bIsEditMode) // Edit-Mode aktiv
+ {
+ GetViewData()->GetEditView(eWhich, pEditView, nCol, nRow);
+ pEditSel = new ESelection(pEditView->GetSelection());
+ SC_MOD()->InputEnterHandler();
+ SFX_BINDINGS().Update(); // sonst kommt der Sfx durcheinander...
+ }
+ else
+ {
+ nCol = GetViewData()->GetCurX();
+ nRow = GetViewData()->GetCurY();
+ }
+ nTab = GetViewData()->GetTabNo();
+
+ if (!pDoc->IsSelectedBlockEditable( nCol, nRow, nCol, nRow, rMark ))
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ delete pEditSel;
+ return;
+ }
+ pDoc->GetCellType(nCol, nRow, nTab, eCellType);
+ if (eCellType != CELLTYPE_STRING && eCellType != CELLTYPE_EDIT)
+ {
+ ErrorMessage(STR_THESAURUS_NO_STRING);
+ return;
+ }
+
+#ifdef ONE_LINGU
+ com::sun::star::uno::Reference<com::sun::star::linguistic::XSpellChecker1>
+ xSpeller = OFF_APP()->GetSpellChecker();
+ //! test if thesaurus is available? (STR_EXPORT_ASCII_WARNING)
+#else
+ SpellCheck& rOptSpellCheck = *OFF_APP()->GetSpellChecker();
+ if(!rOptSpellCheck.LoadDll()) // Speller da?
+ {
+ ErrorMessage(STR_EXPORT_ASCII_WARNING); //! haeh ???
+ delete pEditSel;
+ return;
+ }
+#endif
+
+ const SfxPoolItem* pItem = pDoc->GetAttr(nCol, nRow, nTab, ATTR_FONT_LANGUAGE);
+ SvxLanguageItem* pLangIt = PTR_CAST( SvxLanguageItem, pItem );
+ if (pLangIt)
+ {
+ eLnge = (LanguageType) pLangIt->GetValue();
+#ifdef ONE_LINGU
+ if (eLnge == LANGUAGE_DONTKNOW) //! can this happen?
+ eLnge = pDoc->GetLanguage();
+#else
+ if (eLnge == LANGUAGE_DONTKNOW)
+ eLnge = (LanguageType) rOptSpellCheck.GetDefaultLanguage();
+#endif
+ }
+ else
+ eLnge = LANGUAGE_ENGLISH_US;
+ if ( eLnge == LANGUAGE_SYSTEM )
+ eLnge = System::GetLanguage(); // Spelling nie mit SYSTEM
+
+ pThesaurusEngine = new ScEditEngineDefaulter( pDoc->GetEnginePool() );
+ pThesaurusEngine->SetEditTextObjectPool( pDoc->GetEditPool() );
+ pThesaurusEngine->SetRefDevice(GetViewData()->GetActiveWin());
+#ifdef ONE_LINGU
+ pThesaurusEngine->SetSpeller(xSpeller);
+#else
+ pThesaurusEngine->SetSpeller(&rOptSpellCheck);
+#endif
+ MakeEditView(pThesaurusEngine, nCol, nRow );
+ const ScPatternAttr* pPattern = NULL;
+ SfxItemSet* pEditDefaults = new SfxItemSet(pThesaurusEngine->GetEmptyItemSet());
+ pPattern = pDoc->GetPattern(nCol, nRow, nTab);
+ if (pPattern )
+ {
+ pPattern->FillEditItemSet( pEditDefaults );
+ pThesaurusEngine->SetDefaults( *pEditDefaults );
+ }
+
+ if (eCellType == CELLTYPE_STRING)
+ {
+ pDoc->GetString(nCol, nRow, nTab, sOldText);
+ pThesaurusEngine->SetText(sOldText);
+ }
+ else if (eCellType == CELLTYPE_EDIT)
+ {
+ pDoc->GetCell(nCol, nRow, nTab, pCell);
+ if (pCell)
+ {
+ ((ScEditCell*) pCell)->GetData(pTObject);
+ pOldTObj = pTObject->Clone();
+ if (pTObject)
+ pThesaurusEngine->SetText(*pTObject);
+ }
+ }
+ else
+ {
+ DBG_ERROR("DoThesaurus: Keine String oder Editzelle");
+ }
+ pEditView = GetViewData()->GetEditView(GetViewData()->GetActivePart());;
+ if (pEditSel)
+ pEditView->SetSelection(*pEditSel);
+ else
+ pEditView->SetSelection(ESelection(0,0,0,0));
+
+ pThesaurusEngine->ClearModifyFlag();
+
+ eState = pEditView->StartThesaurus( eLnge );
+ DBG_ASSERT(eState != EE_SPELL_NOSPELLER, "No SpellChecker");
+
+ if (eState == EE_SPELL_ERRORFOUND) // sollte spaeter durch Wrapper geschehen!
+ {
+ SvxLanguageTable aLangTab;
+ String aErr = aLangTab.GetString(eLnge);
+ aErr += ScGlobal::GetRscString( STR_SPELLING_NO_LANG );
+ InfoBox aBox( GetViewData()->GetDialogParent(), aErr );
+ aBox.Execute();
+ }
+ if (pThesaurusEngine->IsModified())
+ {
+ EditTextObject* pNewTObj = NULL;
+ if (pCell && pTObject)
+ {
+ pNewTObj = pThesaurusEngine->CreateTextObject();
+ pCell = new ScEditCell( pNewTObj, pDoc,
+ pThesaurusEngine->GetEditTextObjectPool() );
+ pDoc->PutCell( nCol, nRow, nTab, pCell );
+ }
+ else
+ {
+ sNewString = pThesaurusEngine->GetText();
+ pDoc->SetString(nCol, nRow, nTab, sNewString);
+ }
+// erack! it's broadcasted
+// pDoc->SetDirty();
+ pDocSh->SetDocumentModified();
+ if (bRecord)
+ {
+ GetViewData()->GetDocShell()->GetUndoManager()->AddUndoAction(
+ new ScUndoThesaurus( GetViewData()->GetDocShell(),
+ nCol, nRow, nTab,
+ sOldText, pOldTObj, sNewString, pNewTObj));
+ }
+ delete pNewTObj;
+ }
+ KillEditView(TRUE);
+ delete pEditDefaults;
+ delete pThesaurusEngine;
+ delete pOldTObj;
+ delete pEditSel;
+ pDocSh->PostPaintGridAll();
+}
+
+// Spelling Checker - Undo ok
+void ScViewFunc::DoSpellingChecker( BOOL bRecord )
+{
+ USHORT nCol, nRow, nTab;
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ ScSplitPos eWhich = GetViewData()->GetActivePart();
+ EESpellState eState;
+ EditView* pEditView = NULL;
+ ESelection* pEditSel = NULL;
+ ScSpellingEngine* pSpellingEngine = NULL;
+ BOOL bIsEditMode = GetViewData()->HasEditView(eWhich);
+ if (bIsEditMode) // Edit-Mode aktiv
+ {
+ GetViewData()->GetEditView(eWhich, pEditView, nCol, nRow);
+ pEditSel = new ESelection(pEditView->GetSelection());
+ SC_MOD()->InputEnterHandler();
+ }
+ else
+ {
+ nCol = GetViewData()->GetCurX();
+ nRow = GetViewData()->GetCurY();
+
+ AlignToCursor( nCol, nRow, SC_FOLLOW_JUMP);
+ }
+ nTab = GetViewData()->GetTabNo();
+
+ rMark.MarkToMulti();
+ BOOL bMarked = rMark.IsMultiMarked();
+ if (bMarked && !pDoc->IsSelectionEditable(rMark))
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ delete pEditSel;
+ return;
+ }
+
+ ScDocument* pUndoDoc = NULL;
+ ScDocument* pRedoDoc = NULL;
+ if (bRecord)
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+ pRedoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pRedoDoc->InitUndo( pDoc, nTab, nTab );
+
+ if ( rMark.GetSelectCount() > 1 )
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nTabCount; i++)
+ if ( rMark.GetTableSelect(i) && i != nTab )
+ {
+ pUndoDoc->AddUndoTab( i, i );
+ pRedoDoc->AddUndoTab( i, i );
+ }
+ }
+ }
+
+#ifdef ONE_LINGU
+ //! no way to set a spelling error handler
+ com::sun::star::uno::Reference<com::sun::star::linguistic::XSpellChecker1>
+ xSpeller = OFF_APP()->GetSpellChecker();
+#else
+ SpellCheck& rOptSpellCheck = *OFF_APP()->GetSpellChecker();
+ if(!rOptSpellCheck.LoadDll())
+ {
+ ErrorMessage(STR_IMPORT_ERROR); //! haeh?
+ delete pEditSel;
+ delete pUndoDoc;
+ delete pRedoDoc;
+ return;
+ }
+#endif
+
+ // ab hier kein return mehr
+
+ BOOL bOldDis = pDoc->IsIdleDisabled();
+ pDoc->DisableIdle(TRUE); // nicht mit Online-Spelling durcheinanderkommen (#42726#)
+
+#ifdef ONE_LINGU
+#else
+ // ErrorLink setzen, alten merken
+ Link aOldLnk = rOptSpellCheck.ChgErrorLink(
+ LINK(this, ScViewFunc, SpellError));
+#endif
+ pSpellingEngine = new ScSpellingEngine( pDoc->GetEnginePool(),
+ GetViewData(), pUndoDoc, pRedoDoc,
+ nCol, nRow, nTab,
+ bMarked, LANGUAGE_ENGLISH_US, pEditSel);
+#ifdef ONE_LINGU
+ pSpellingEngine->SetSpeller(xSpeller);
+#else
+ pSpellingEngine->SetSpeller(&rOptSpellCheck);
+#endif
+ MakeEditView(pSpellingEngine, nCol, nRow );
+ pSpellingEngine->SetRefDevice(GetViewData()->GetActiveWin());
+ // dummy Zelle simulieren:
+ pEditView = GetViewData()->GetEditView(GetViewData()->GetActivePart());
+ GetViewData()->SetSpellingView(pEditView);
+ Rectangle aRect(Point(0,0), Point(0,0));
+ pEditView->SetOutputArea(aRect);
+ pSpellingEngine->SetControlWord( EE_CNTRL_USECHARATTRIBS );
+ pSpellingEngine->EnableUndo( FALSE );
+ pSpellingEngine->SetPaperSize( aRect.GetSize() );
+ pSpellingEngine->SetText(EMPTY_STRING);
+
+ pSpellingEngine->ClearModifyFlag();
+ BOOL bFound = pSpellingEngine->SpellNextDocument(); // erste Zelle holen
+
+ if (bFound)
+ eState = pEditView->StartSpeller( pSpellingEngine->GetLanguage(), TRUE );
+ else
+ eState = EE_SPELL_OK; // Bereich war leer
+
+ DBG_ASSERT(eState != EE_SPELL_NOSPELLER, "No SpellChecker");
+ if (eState == EE_SPELL_NOLANGUAGE)
+ {
+ ErrorMessage(STR_NOLANGERR);
+ }
+ if (pSpellingEngine->IsModifiedAtAll())
+ {
+ if (bRecord)
+ {
+ USHORT nNewCol = GetViewData()->GetCurX();
+ USHORT nNewRow = GetViewData()->GetCurY();
+ GetViewData()->GetDocShell()->GetUndoManager()->AddUndoAction(
+ new ScUndoSpelling( GetViewData()->GetDocShell(),
+ rMark,
+ nCol, nRow, nTab,
+ pUndoDoc,
+ nNewCol, nNewRow, nTab,
+ pRedoDoc ) );
+ }
+ pDoc->SetDirty();
+ pDocSh->SetDocumentModified();
+ }
+ else
+ {
+ delete pUndoDoc;
+ delete pRedoDoc;
+ }
+#ifdef ONE_LINGU
+#else
+ // alten ErrorLink wiederherstellen
+ rOptSpellCheck.ChgErrorLink( aOldLnk );
+#endif
+ GetViewData()->SetSpellingView( NULL );
+ KillEditView(TRUE);
+ delete pSpellingEngine;
+ delete pEditSel;
+ pDocSh->PostPaintGridAll();
+ GetViewData()->GetViewShell()->UpdateInputHandler();
+ pDoc->DisableIdle(bOldDis);
+}
+
+IMPL_LINK_INLINE_START( ScViewFunc, SpellError, void *, nLang )
+{
+ SvxLanguageTable aLangTab;
+ String aErr = aLangTab.GetString((LanguageType) (ULONG) nLang);
+ ErrorHandler::HandleError(*new StringErrorInfo(
+ ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS, aErr) );
+
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScViewFunc, SpellError, void *, nLang )
+
+// Pasten von FORMAT_FILE-Items
+// wird nicht direkt aus Drop aufgerufen, sondern asynchron -> Dialoge sind erlaubt
+
+BOOL ScViewFunc::PasteFile( const Point& rPos, const String& rFile, BOOL bLink )
+{
+ if (!bLink) // bei bLink nur Grafik oder URL
+ {
+ // 1. Kann ich die Datei oeffnen?
+ const SfxFilter* pFlt = NULL;
+
+ // nur nach eigenen Filtern suchen, ohne Auswahlbox (wie in ScDocumentLoader)
+ SfxFilterMatcher aMatcher( ScDocShell::Factory().GetFilterContainer() );
+ SfxMedium aSfxMedium( rFile, (STREAM_READ | STREAM_SHARE_DENYNONE), FALSE );
+ ErrCode nErr = aMatcher.GuessFilter( aSfxMedium, &pFlt );
+
+ if ( pFlt && !nErr )
+ {
+ // Code aus dem SFX geklaut!
+ SfxDispatcher &rDispatcher = SFX_DISPATCHER();
+ SfxStringItem aFileNameItem( SID_FILE_NAME, rFile );
+ SfxStringItem aFilterItem( SID_FILTER_NAME, pFlt->GetName() );
+
+ // Asynchron oeffnen, kann naemlich auch aus D&D heraus passieren
+ // und das bekommt dem MAC nicht so gut ...
+ return BOOL( 0 != rDispatcher.Execute( SID_OPENDOC,
+ SFX_CALLMODE_ASYNCHRON, &aFileNameItem, &aFilterItem, 0L) );
+ }
+ }
+
+ // 2. Kann die Datei ueber die Grafik-Filter eingefuegt werden?
+ // (als Link, weil Gallery das so anbietet)
+
+ USHORT nFilterFormat;
+ Graphic aGraphic;
+ GraphicFilter* pGraphicFilter = ::GetGrfFilter();
+
+// GraphicProgress aGraphicProgress(&aGraphicFilter);
+
+ INetURLObject aURL;
+ aURL.SetSmartURL( rFile );
+ if (!pGraphicFilter->ImportGraphic(aGraphic, aURL,
+ GRFILTER_FORMAT_DONTKNOW, &nFilterFormat ))
+ {
+ String aFltName = pGraphicFilter->GetImportFormatName(nFilterFormat);
+ return PasteGraphic( rPos, aGraphic, rFile, aFltName );
+ }
+
+ if (bLink) // bei bLink alles, was nicht Grafik ist, als URL
+ {
+ Rectangle aRect( rPos, Size(0,0) );
+ ScRange aRange = GetViewData()->GetDocument()->
+ GetRange( GetViewData()->GetTabNo(), aRect );
+ USHORT nPosX = aRange.aStart.Col();
+ USHORT nPosY = aRange.aStart.Row();
+
+ InsertBookmark( rFile, rFile, nPosX, nPosY );
+ return TRUE;
+ }
+ else
+ {
+ // 3. Kann die Datei als OLE eingefuegt werden?
+ // auch nicht-Storages, z.B. Sounds (#38282#)
+
+// BOOL bIsStg = SvStorage::IsStorageFile( rFile );
+ SvStorageRef refStor = new SvStorage( EMPTY_STRING );
+#ifndef SO3
+ SvObjectRef refOleObj =
+ SvInPlaceObject::ClassFactory()->CreateAndInit( rFile, refStor, bLink );
+#else
+ SvObjectRef refOleObj =
+ ((SvFactory*)SvInPlaceObject::ClassFactory())->CreateAndInit( rFile, refStor, bLink );
+#endif
+ SvInPlaceObjectRef refObj( &refOleObj );
+ if( refObj.Is() )
+ return PasteObject( rPos, refObj );
+ }
+
+ // Ich geb auf! Soll hier noch ne MsgBox hin?
+ return FALSE;
+}
+
+BOOL ScViewFunc::PasteBookmark( SvDataObject* pObject, USHORT nPosX, USHORT nPosY )
+{
+ ULONG nFormat = INetBookmark::HasFormat(*pObject);
+ INetBookmark aBookmark;
+ BOOL bFound = aBookmark.Paste(*pObject,nFormat);
+ if ( !bFound )
+ {
+ USHORT nCount = DragServer::GetItemCount();
+ for( USHORT i = 0; i < nCount && !bFound; i++ )
+ if ( aBookmark.PasteDragServer(i) )
+ bFound = TRUE;
+ }
+ if ( !bFound )
+ return FALSE; // gibt kein Bookmark (keine Assertion -
+ // bei Datenauszuegen vom Desktop wird FALSE zurueckgegeben)
+
+ InsertBookmark( aBookmark.GetDescription(), aBookmark.GetURL(), nPosX, nPosY );
+ return TRUE;
+
+ //! aus DragServer ggf. noch weitere Items einfuegen !!!!
+}
+
+void ScViewFunc::InsertBookmark( const String& rDescription, const String& rURL,
+ USHORT nPosX, USHORT nPosY, const String* pTarget )
+{
+ ScViewData* pViewData = GetViewData();
+ if ( pViewData->HasEditView( pViewData->GetActivePart() ) &&
+ nPosX >= pViewData->GetEditViewCol() && nPosX <= pViewData->GetEditEndCol() &&
+ nPosY >= pViewData->GetEditViewRow() && nPosY <= pViewData->GetEditEndRow() )
+ {
+ // in die gerade editierte Zelle einfuegen
+
+ String aTargetFrame;
+ if (pTarget)
+ aTargetFrame = *pTarget;
+ pViewData->GetViewShell()->InsertURLField( rDescription, rURL, aTargetFrame );
+ return;
+ }
+
+ // in nicht editierte Zelle einfuegen
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScAddress aCellPos( nPosX, nPosY, nTab );
+ ScBaseCell* pCell = pDoc->GetCell( aCellPos );
+ EditEngine aEngine( pDoc->GetEnginePool() );
+ if (pCell)
+ {
+ if (pCell->GetCellType() == CELLTYPE_EDIT)
+ {
+ const EditTextObject* pOld = ((ScEditCell*)pCell)->GetData();
+ if (pOld)
+ aEngine.SetText(*pOld);
+ }
+ else
+ {
+ String aOld;
+ pDoc->GetInputString( nPosX, nPosY, nTab, aOld );
+ if (aOld.Len())
+ aEngine.SetText(aOld);
+ }
+ }
+
+ USHORT nPara = aEngine.GetParagraphCount();
+ if (nPara)
+ --nPara;
+ xub_StrLen nTxtLen = aEngine.GetTextLen(nPara);
+ ESelection aInsSel( nPara, nTxtLen, nPara, nTxtLen );
+
+ SvxURLField aField( rURL, rDescription, SVXURLFORMAT_APPDEFAULT );
+ if (pTarget)
+ aField.SetTargetFrame(*pTarget);
+ aEngine.QuickInsertField( SvxFieldItem( aField ), aInsSel );
+
+ EditTextObject* pData = aEngine.CreateTextObject();
+ EnterData( nPosX, nPosY, nTab, pData );
+ delete pData;
+}
+
+BOOL ScViewFunc::HasBookmarkAtCursor( SvxHyperlinkItem* pContent )
+{
+ ScAddress aPos( GetViewData()->GetCurX(), GetViewData()->GetCurY(), GetViewData()->GetTabNo() );
+ ScDocument* pDoc = GetViewData()->GetDocShell()->GetDocument();
+
+ ScBaseCell* pCell = pDoc->GetCell( aPos );
+ if ( pCell && pCell->GetCellType() == CELLTYPE_EDIT )
+ {
+ const EditTextObject* pData = ((ScEditCell*)pCell)->GetData();
+ if (pData)
+ {
+ BOOL bField = pData->IsFieldObject();
+ if (bField)
+ {
+ const SvxFieldItem* pFieldItem = pData->GetField();
+ if (pFieldItem)
+ {
+ const SvxFieldData* pField = pFieldItem->GetField();
+ if ( pField && pField->ISA(SvxURLField) )
+ {
+ if (pContent)
+ {
+ const SvxURLField* pURLField = (const SvxURLField*)pField;
+ pContent->SetName( pURLField->GetRepresentation() );
+ pContent->SetURL( pURLField->GetURL() );
+ pContent->SetTargetFrame( pURLField->GetTargetFrame() );
+ }
+ return TRUE;
+ }
+ }
+ }
+ }
+ }
+ return FALSE;
+}
+
+
+
+
diff --git a/sc/source/ui/view/viewfun5.cxx b/sc/source/ui/view/viewfun5.cxx
new file mode 100644
index 000000000000..3a53d795ae3d
--- /dev/null
+++ b/sc/source/ui/view/viewfun5.cxx
@@ -0,0 +1,952 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewfun5.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+// TOOLS
+#define _BIGINT_HXX
+#define _SFXMULTISEL_HXX
+#define _STACK_HXX
+#define _QUEUE_HXX
+#define _DYNARR_HXX
+#define _TREELIST_HXX
+#define _CACHESTR_HXX
+#define _NEW_HXX
+//#define _SHL_HXX
+//#define _LINK_HXX
+//#define _ERRCODE_HXX
+//#define _GEN_HXX
+//#define _FRACT_HXX
+//#define _STRING_HXX
+//#define _MTF_HXX
+//#define _CONTNR_HXX
+//#define _LIST_HXX
+//#define _TABLE_HXX
+#define _DYNARY_HXX
+//#define _UNQIDX_HXX
+#define _SVMEMPOOL_HXX
+//#define _UNQID_HXX
+//#define _DEBUG_HXX
+//#define _DATE_HXX
+//#define _TIME_HXX
+//#define _DATETIME_HXX
+//#define _INTN_HXX
+//#define _WLDCRD_HXX
+//#define _FSYS_HXX
+//#define _STREAM_HXX
+#define _CACHESTR_HXX
+#define _SV_MULTISEL_HXX
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+#define _MENU_HXX
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+#if defined WIN
+#define _MENUBTN_HXX
+#endif
+
+//svtools
+#define _SCRWIN_HXX
+#define _RULER_HXX
+//#define _TABBAR_HXX
+//#define _VALUESET_HXX
+#define _STDMENU_HXX
+//#define _STDCTRL_HXX
+//#define _CTRLBOX_HXX
+#define _CTRLTOOL_HXX
+#define _EXTATTR_HXX
+#define _FRM3D_HXX
+#define _EXTATTR_HXX
+
+//SVTOOLS
+//#define _SVTREELIST_HXX ***
+#define _FILTER_HXX
+//#define _SVLBOXITM_HXX ***
+//#define _SVTREEBOX_HXX ***
+#define _SVICNVW_HXX
+#define _SVTABBX_HXX
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+//#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFXSH_HXX
+///#define _PLUGAPPL_HXX
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFX_BINDINGS_HXX
+//#define _SFXDISPATCH_HXX
+#define _SFXMSG_HXX
+#define _SFXOBJFACE_HXX
+#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+
+// SFX
+#define _SFX_SAVEOPT_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+#define _SFX_CHILDALIGN_HXX
+#define _SFXAPPWIN_HXX
+#define _SFX_CHILDWIN_HXX
+#define _SFXCTRLITEM_HXX
+
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+//#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdoc.hxx
+//#define _SFXDOC_HXX
+// --- #define _RSCSFX_HXX
+//#define SFX_DECL_OBJECTSHELL_DEFINED
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HACK_HXX
+#define _SFX_FCONTNR_HXX
+#define STRING_LIST
+//#define _SFXDOCFILE_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXDLG_HXX
+#define _DOCMGR_HXX
+//#define _SFXITEMS_HXX
+//#define _SFXTABDLG_HXX
+#define _BASEDLGS_HXX
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define SFX_DECL_OBJECTSHELL_DEFINED
+#define _SFXDOCTEMPL_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFXDOCKWIN_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXNEW_HXX
+#define _SFXDOCMAN_HXX
+#define _SFXNAVI_HXX
+
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+//#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+//#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOOBJECTS //*
+//#define _SDR_NOVIEWS
+
+//#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+//#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+//#define _SIDLL_HXX ***
+
+#ifdef WIN
+#define _VCSBX_HXX
+#define _VCDRWOBJ_HXX
+#define _SBX_HXX
+#endif
+
+//view3d.hxx
+//#define _E3D_VIEW3D_HXX
+
+//obj3d.hxx
+//#define _E3D_OBJ3D_HXX
+
+//volume3d.hxx
+//#define _VOLUME3D_HXX
+
+
+
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+//------------------------------------------------------------------
+
+#include <svx/dbexch.hrc>
+#include <svx/fmmodel.hxx>
+#include <svx/svdetc.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdogrp.hxx>
+#include <svx/svdouno.hxx>
+#include <svx/svdpage.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/docfile.hxx>
+#include <so3/ipobj.hxx>
+#include <so3/svstor.hxx>
+#include <offmgr/app.hxx>
+#include <so3/clsids.hxx>
+#include <sot/formats.hxx>
+#include <svtools/iniman.hxx>
+#include <svtools/ptitem.hxx>
+#include <svtools/stritem.hxx>
+#include <vcl/drag.hxx>
+#include <vcl/graph.hxx>
+
+#include <sot/formats.hxx>
+#define SOT_FORMATSTR_ID_STARCALC_CURRENT SOT_FORMATSTR_ID_STARCALC_50
+
+#ifndef SO2_DECL_SVINPLACEOBJECT_DEFINED
+#define SO2_DECL_SVINPLACEOBJECT_DEFINED
+SO2_DECL_REF(SvInPlaceObject)
+#endif
+#ifndef SO2_DECL_SVSTORAGE_DEFINED
+#define SO2_DECL_SVSTORAGE_DEFINED
+SO2_DECL_REF(SvStorage)
+#endif
+
+#include "viewfunc.hxx"
+#include "docsh.hxx"
+#include "drawview.hxx"
+#include "impex.hxx"
+#include "dbfunc.hxx"
+#include "dbcolect.hxx"
+#include "sc.hrc"
+#include "filter.hxx"
+#include "scextopt.hxx"
+#include "tabvwsh.hxx" // wegen GetViewFrame
+#include "compiler.hxx"
+
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+
+
+// STATIC DATA -----------------------------------------------------------
+
+//==================================================================
+
+BOOL ScViewFunc::PasteDataFormat( ULONG nFormatId, SvDataObject* pObject,
+ USHORT nPosX, USHORT nPosY,
+ Window* pWin, Point* pLogicPos )
+{
+ //! pWin wird nicht mehr benutzt
+
+ Point aPos; // Einfuege-Position (1/100 mm)
+ if (pLogicPos)
+ aPos = *pLogicPos;
+ else
+ {
+ // Bei Text-Formaten muss die Position nicht berechnet werden
+
+ if ( !ScImportExport::IsFormatSupported( nFormatId )
+ && nFormatId != FORMAT_RTF )
+ {
+ // MapMode des Fensters ist hier noch nicht auf Drawing initialisiert,
+ // wenn der Drawing-Layer noch nicht angelegt ist
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ USHORT i;
+ long nXT = 0;
+ for (i=0; i<nPosX; i++)
+ nXT += pDoc->GetColWidth(i,nTab);
+ long nYT = 0;
+ for (i=0; i<nPosY; i++)
+ nYT += pDoc->FastGetRowHeight(i,nTab);
+ aPos = Point( (long)(nXT * HMM_PER_TWIPS), (long)(nYT * HMM_PER_TWIPS) );
+ }
+ }
+
+ ULONG nSba = SOT_FORMATSTR_ID_SBA_DATAEXCHANGE;
+ ULONG nField = Exchange::RegisterFormatName(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(SBA_FIELDEXCHANGE_FORMAT)));
+ ULONG nBiff = Exchange::RegisterFormatName(
+ String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Biff5")));
+
+ BOOL bRet = FALSE;
+
+ if ( nFormatId == SOT_FORMATSTR_ID_EMBED_SOURCE ||
+ nFormatId == SOT_FORMATSTR_ID_LINK_SOURCE ||
+ nFormatId == SOT_FORMATSTR_ID_EMBED_SOURCE_OLE ||
+ nFormatId == SOT_FORMATSTR_ID_LINK_SOURCE_OLE )
+ {
+ // DLLs hier doch nicht initialisieren, ist schon in Main::Init passiert
+
+ BOOL bStorFilled;
+ const ULONG nScFormat = SOT_FORMATSTR_ID_STARCALC_CURRENT;
+
+ SvStorageRef aStor = new SvStorage( EMPTY_STRING, STREAM_STD_READWRITE );
+ if( SvFactory::IsOwnFormat( bStorFilled, pObject, nScFormat, &aStor ) )
+ {
+ if (bStorFilled)
+ {
+ // Eigenes Format
+
+ ScDocShellRef xDocShRef = new ScDocShell(SFX_CREATE_MODE_EMBEDDED);
+ if (xDocShRef->DoLoad(aStor))
+ {
+ ScDocument* pSrcDoc = xDocShRef->GetDocument();
+ USHORT nSrcTab = pSrcDoc->GetVisibleTab();
+ if (!pSrcDoc->HasTable(nSrcTab))
+ nSrcTab = 0;
+
+ ScMarkData aSrcMark;
+ aSrcMark.SelectOneTable( nSrcTab ); // fuer CopyToClip
+ ScDocument* pClipDoc = new ScDocument( SCDOCMODE_CLIP );
+
+ USHORT nFirstCol, nFirstRow, nLastCol, nLastRow;
+ pSrcDoc->GetDataStart( nSrcTab, nFirstCol, nFirstRow );
+ pSrcDoc->GetCellArea( nSrcTab, nLastCol, nLastRow );
+ pSrcDoc->CopyToClip( nFirstCol, nFirstRow, nLastCol, nLastRow,
+ FALSE, pClipDoc, FALSE, &aSrcMark );
+ ScGlobal::SetClipDocName( xDocShRef->GetTitle( SFX_TITLE_FULLNAME ) );
+
+ SetCursor( nPosX, nPosY );
+ Unmark();
+ PasteFromClip( IDF_ALL, pClipDoc );
+ delete pClipDoc;
+ bRet = TRUE;
+ }
+ ((SfxInPlaceObject*)xDocShRef)->DoClose();
+ xDocShRef.Clear();
+ }
+ }
+ else
+ {
+ BOOL bIsLink = ( nFormatId == SOT_FORMATSTR_ID_LINK_SOURCE ||
+ nFormatId == SOT_FORMATSTR_ID_LINK_SOURCE_OLE );
+#ifndef SO3
+ SvInPlaceObjectRef aIPObj = (SvInPlaceObjectRef)SvInPlaceObject::ClassFactory()
+#else
+ SvInPlaceObjectRef aIPObj = &((SvFactory*)SvInPlaceObject::ClassFactory())
+#endif
+ ->CreateAndInit( pObject, aStor, bIsLink, bStorFilled );
+ if ( aIPObj.Is() )
+ {
+ PasteObject( aPos, aIPObj, pObject );
+ bRet = TRUE;
+ }
+ else
+ DBG_ERROR("Fehler bei CreateAndInit");
+ }
+ }
+ else if ( nFormatId == SOT_FORMATSTR_ID_LINK )
+ {
+ //! warum ist Link bei ScImportExport eingetragen ???
+
+ bRet = PasteDDE( pObject );
+ }
+ else if( ScImportExport::IsFormatSupported( nFormatId ) )
+ {
+ SvData aData( nFormatId );
+ if (pObject->GetData( &aData ))
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScAddress aPos( nPosX, nPosY, GetViewData()->GetTabNo() );
+ ScImportExport aObj( GetViewData()->GetDocument(), aPos );
+ bRet = aObj.ImportData( aData );
+ InvalidateAttribs();
+ GetViewData()->UpdateInputHandler();
+ }
+ }
+ else if (nFormatId == SOT_FORMATSTR_ID_SVXB)
+ {
+ SvData aData( SOT_FORMATSTR_ID_SVXB );
+ if (pObject->GetData( &aData ))
+ {
+ Graphic* pGraphic;
+ if ( aData.GetData( (SvDataCopyStream**) &pGraphic,
+ Graphic::StaticType(), TRANSFER_MOVE ) )
+ bRet = PasteGraphic( aPos, *pGraphic, EMPTY_STRING, EMPTY_STRING );
+ }
+ }
+ else if (nFormatId == SOT_FORMATSTR_ID_DRAWING) // SvDraw Model
+ {
+ SvData aData( SOT_FORMATSTR_ID_DRAWING );
+ if (pObject->GetData( &aData ))
+ {
+ SvStorageStreamRef aStrm;
+
+ if ( aData.GetData(aStrm) )
+ {
+ MakeDrawLayer(); // vorher, damit die 3D-Factory angelegt ist
+
+ String aPath = SFX_APP()->GetAppIniManager()->Get(SFX_KEY_PALETTE_PATH);
+ FmFormModel* pModel = new FmFormModel(
+ aPath, NULL, GetViewData()->GetDocShell() );
+ pModel->GetItemPool().FreezeIdRanges();
+ aStrm->Seek(0);
+ aStrm->SetVersion(SOFFICE_FILEFORMAT_NOW);
+ pModel->SetStreamingSdrModel(TRUE);
+ pModel->GetItemPool().Load(*aStrm);
+ *aStrm >> *pModel;
+ pModel->SetStreamingSdrModel(FALSE);
+
+ // alles auf passenden Layer setzen:
+ ULONG nObjCount = 0;
+ USHORT nPages = pModel->GetPageCount();
+ for (USHORT i=0; i<nPages; i++)
+ {
+ SdrPage* pPage = pModel->GetPage(i);
+ SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject)
+ {
+ ++nObjCount;
+ if ( pObject->ISA(SdrUnoObj) )
+ pObject->NbcSetLayer(SC_LAYER_CONTROLS);
+ else
+ pObject->NbcSetLayer(SC_LAYER_FRONT);
+ pObject = aIter.Next();
+ }
+ }
+
+ PasteDraw( aPos, pModel, (nObjCount > 1) ); // gruppiert, wenn mehr als 1
+ delete pModel;
+ bRet = TRUE;
+ }
+ }
+ }
+ else if (nFormatId == nSba)
+ {
+ //! char or sal_Unicode from sba ???
+
+ ULONG nLen = DragServer::GetDataLen(0, nSba);
+ char* pTxt = new char[nLen];
+ DragServer::PasteData(0, pTxt, nLen, nSba); // String ist 0-terminiert
+ String sDataDesc = String::CreateFromAscii(pTxt);
+ delete[] pTxt;
+ SfxStringItem aDataDesc(SID_SBA_IMPORT, sDataDesc);
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ ClickCursor(nPosX, nPosY, FALSE); // Cursor setzen
+
+ // Datenbank-Bereich "Import1" wird hier nicht mehr angelegt,
+ // sondern erst beim Slot-Execute an der DocShell, damit er ins
+ // Undo aufgenommen werden kann.
+
+ ScDBData* pDBData = pDocSh->GetDBData( ScRange(nPosX,nPosY,nTab), SC_DB_OLD, FALSE );
+ String sTarget;
+ if (pDBData)
+ sTarget = pDBData->GetName();
+ else
+ {
+ ScAddress aPos( nPosX,nPosY,nTab );
+ aPos.Format( sTarget, SCA_ABS_3D, pDoc );
+ }
+ SfxStringItem aTarget(FN_PARAM_1, sTarget);
+
+ BOOL bAreaIsNew = !pDBData;
+ SfxBoolItem aAreaNew(FN_PARAM_2, bAreaIsNew);
+
+ // asynchron, damit nicht der ganze Import im Drop-Handler passiert
+ // nicht SFX_DISPATCHER, weil die View beim Drag&Drop nicht aktiv sein muss
+ SfxDispatcher* pDisp =
+ GetViewData()->GetViewShell()->GetViewFrame()->GetDispatcher();
+ if (pDisp)
+ pDisp->Execute(SID_SBA_IMPORT, SFX_CALLMODE_ASYNCHRON,
+ &aDataDesc, &aTarget, &aAreaNew, 0L );
+
+ bRet = TRUE;
+ }
+ else if (nFormatId == nField)
+ {
+ SvData aData(nFormatId);
+ if ( pObject->GetData(&aData) )
+ {
+ String aString;
+ if ( aData.GetData(aString) )
+ {
+ MakeDrawLayer();
+ ScDrawView* pDrawView = GetScDrawView();
+ SdrObject* pObj = pDrawView->CreateFieldControl(aString);
+ if (pObj)
+ {
+ Point aInsPos = aPos;
+ Rectangle aRect(pObj->GetLogicRect());
+ aInsPos.X() -= aRect.GetSize().Width() / 2;
+ aInsPos.Y() -= aRect.GetSize().Height() / 2;
+ if ( aInsPos.X() < 0 ) aInsPos.X() = 0;
+ if ( aInsPos.Y() < 0 ) aInsPos.Y() = 0;
+ aRect.SetPos(aInsPos);
+ pObj->SetLogicRect(aRect);
+
+ if ( pObj->ISA(SdrUnoObj) )
+ pObj->NbcSetLayer(SC_LAYER_CONTROLS);
+ else
+ pObj->NbcSetLayer(SC_LAYER_FRONT);
+ if (pObj->ISA(SdrObjGroup))
+ {
+ SdrObjListIter aIter( *pObj, IM_DEEPWITHGROUPS );
+ SdrObject* pSubObj = aIter.Next();
+ while (pSubObj)
+ {
+ if ( pSubObj->ISA(SdrUnoObj) )
+ pSubObj->NbcSetLayer(SC_LAYER_CONTROLS);
+ else
+ pSubObj->NbcSetLayer(SC_LAYER_FRONT);
+ pSubObj = aIter.Next();
+ }
+ }
+
+ pDrawView->InsertObjectSafe(pObj, *pDrawView->GetPageViewPvNum(0));
+
+ GetViewData()->GetViewShell()->SetDrawShell( TRUE );
+ bRet = TRUE;
+ }
+ }
+ }
+ }
+ else if (nFormatId == nBiff)
+ {
+ // Excel-Import in ein Clipboard-Dokument...
+
+ SvData aData( nBiff, MEDIUM_STORAGE );
+ if (pObject->GetData( &aData ))
+ {
+ SvStorageRef pStor;
+ if ( aData.GetData( pStor, TRANSFER_REFERENCE ) && pStor.Is() )
+ {
+#if 0
+ SvStorage aDest( "d:\\test.xls" ); // wenn man sich ansehen will,
+ pStor->CopyTo( &aDest ); // was da wirklich im Clipboard steht
+#endif
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDocument* pInsDoc = new ScDocument( SCDOCMODE_CLIP );
+ USHORT nSrcTab = 0; // Biff5 im Clipboard: immer Tabelle 0
+ pInsDoc->ResetClip( pDoc, nSrcTab );
+
+ SfxMedium aMed( pStor, TRUE );
+ FltError eErr = ScImportExcel( aMed, pInsDoc, EIF_AUTO );
+ if ( eErr == eERR_OK )
+ {
+ ScRange aSource;
+ const ScExtDocOptions* pExtOpt = pInsDoc->GetExtDocOptions();
+ const ScExtTabOptions* pTabOpt = pExtOpt ?
+ pExtOpt->GetExtTabOptions(nSrcTab) : NULL;
+ if ( pTabOpt && pTabOpt->bValidDim &&
+ pTabOpt->aDim.aEnd.Col() > pTabOpt->aDim.aStart.Col() &&
+ pTabOpt->aDim.aEnd.Row() > pTabOpt->aDim.aStart.Row() )
+ {
+ // das Ende zeigt direkt hinter den Datenbereich
+ aSource = ScRange(
+ pTabOpt->aDim.aStart.Col(), pTabOpt->aDim.aStart.Row(), nSrcTab,
+ pTabOpt->aDim.aEnd.Col()-1, pTabOpt->aDim.aEnd.Row()-1, nSrcTab );
+ // die Selektion kann groesser als der belegte Bereich sein
+ if ( pTabOpt->bValidSel )
+ {
+ if ( pTabOpt->aLastSel.aStart.Col() < aSource.aStart.Col() )
+ aSource.aStart.SetCol( pTabOpt->aLastSel.aStart.Col() );
+ if ( pTabOpt->aLastSel.aStart.Row() < aSource.aStart.Row() )
+ aSource.aStart.SetRow( pTabOpt->aLastSel.aStart.Row() );
+ // in der Selektion ist das Ende wirklich das Ende
+ if ( pTabOpt->aLastSel.aEnd.Col() > aSource.aEnd.Col() )
+ aSource.aEnd.SetCol( pTabOpt->aLastSel.aEnd.Col() );
+ if ( pTabOpt->aLastSel.aEnd.Row() > aSource.aEnd.Row() )
+ aSource.aEnd.SetRow( pTabOpt->aLastSel.aEnd.Row() );
+ }
+ }
+ else
+ {
+ DBG_ERROR("keine Dimension"); //! kann das vorkommen?
+ USHORT nFirstCol, nFirstRow, nLastCol, nLastRow;
+ pInsDoc->GetDataStart( nSrcTab, nFirstCol, nFirstRow );
+ pInsDoc->GetCellArea( nSrcTab, nLastCol, nLastRow );
+ aSource = ScRange( nFirstCol, nFirstRow, nSrcTab,
+ nLastCol, nLastRow, nSrcTab );
+ }
+
+ if ( pLogicPos )
+ {
+ // Position angegeben (Drag&Drop) - Selektion umsetzen
+ MoveCursorAbs( nPosX, nPosY, SC_FOLLOW_NONE, FALSE, FALSE );
+ Unmark();
+ }
+
+ pInsDoc->SetClipArea( aSource );
+ PasteFromClip(IDF_ALL, pInsDoc);
+ delete pInsDoc;
+
+ bRet = TRUE;
+ }
+ }
+ }
+ }
+ else switch (nFormatId)
+ {
+ case FORMAT_RTF:
+ PasteRTF( nPosX, nPosY, pObject ); // -> viewfun4 //! Cursor
+ bRet = TRUE;
+ InvalidateAttribs();
+ GetViewData()->UpdateInputHandler();
+ break;
+
+ case FORMAT_BITMAP:
+ {
+ SvData aData( FORMAT_BITMAP );
+ if (pObject->GetData( &aData ))
+ {
+ Bitmap* pBitmap = NULL;
+ aData.GetData(&pBitmap, TRANSFER_MOVE);
+ if( pBitmap )
+ bRet = PasteBitmap( aPos, *pBitmap );
+ }
+ }
+ break;
+
+ case FORMAT_GDIMETAFILE:
+ {
+ SvData aData( FORMAT_GDIMETAFILE );
+ if (pObject->GetData( &aData ))
+ {
+ GDIMetaFile* pMtf = NULL;
+// aData.GetData(&pMtf, TRANSFER_MOVE);
+ aData.GetData(&pMtf, TRANSFER_REFERENCE);
+ if( pMtf )
+ bRet = PasteMetaFile( aPos, *pMtf );
+ }
+ }
+ break;
+
+ case FORMAT_FILE:
+ {
+ USHORT nCount = DragServer::GetItemCount();
+ if (nCount == 0) // nur wenn nicht ueber D&D
+ {
+ SvData aData( FORMAT_FILE );
+ if (pObject->GetData( &aData ))
+ {
+ String aFile;
+ aData.GetData( aFile );
+ bRet = PasteFile( aPos, aFile );
+ }
+ }
+ else
+ {
+ // Vielleicht kann MM das Format ja eines Tages...
+ for( USHORT i = 0; i < nCount ; i++ )
+ {
+// PasteFile( aPos, DragServer::PasteFile( i ) );
+
+ String aFile = DragServer::PasteFile( i );
+ SfxStringItem aNameItem( FID_INSERT_FILE, aFile );
+ SfxPointItem aPosItem( FN_PARAM_1, aPos );
+ SfxDispatcher* pDisp =
+ GetViewData()->GetViewShell()->GetViewFrame()->GetDispatcher();
+ if (pDisp)
+ pDisp->Execute( FID_INSERT_FILE, SFX_CALLMODE_ASYNCHRON,
+ &aNameItem, &aPosItem, (void*)0 );
+
+ aPos.X() += 400;
+ aPos.Y() += 400;
+ }
+ bRet = TRUE;
+ }
+ }
+ break;
+
+ default:
+ {
+ DBG_ERROR("PasteDataFormat - unbekanntes Format");
+ }
+ }
+
+ return bRet;
+}
+
+BOOL ScViewFunc::PasteDDE( SvDataObject* pObject )
+{
+ const SvDataTypeList& rTypeLst = pObject->GetTypeList();
+
+ // Groesse testen (nur wenn auch String angeboten)
+
+ USHORT nCols = 1;
+ USHORT nRows = 1;
+ if ( rTypeLst.Get( FORMAT_STRING ) )
+ {
+ SvData aSizeData( FORMAT_STRING );
+ if (pObject->GetData( &aSizeData ))
+ {
+ String aDataStr;
+ aSizeData.GetData( aDataStr );
+
+ // Groesse aus String hier genauso wie in ScDdeLink::DataChanged
+
+ aDataStr.ConvertLineEnd(LINEEND_LF);
+ xub_StrLen nLen = aDataStr.Len();
+ if (nLen && aDataStr.GetChar(nLen-1) == '\n')
+ aDataStr.Erase(nLen-1);
+
+ if (aDataStr.Len())
+ {
+ nRows = aDataStr.GetTokenCount( '\n' );
+ String aLine = aDataStr.GetToken( 0, '\n' );
+ if (aLine.Len())
+ nCols = aLine.GetTokenCount( '\t' );
+ }
+ }
+ }
+
+ // Formel zusammenbauen
+
+ SvData aData( SOT_FORMATSTR_ID_LINK );
+ if ( !pObject->GetData( &aData ) )
+ {
+ DBG_ERROR("DDE Data not found.");
+ return FALSE;
+ }
+
+ void *pData;
+ if( !aData.GetData( &pData, TRANSFER_REFERENCE ) )
+ {
+ DBG_ERROR("DDE Falsches Medium.");
+ return FALSE;
+ }
+
+ //! char or sal_Unicode from dde ???
+
+ rtl_TextEncoding eSysEnc = gsl_getSystemTextEncoding();
+ String aApp ( (char*)pData, eSysEnc );
+ String aTopic( (char*)pData + aApp.Len() + 1, eSysEnc );
+ String aItem ( (char*)pData + aApp.Len() + aTopic.Len() + 2, eSysEnc );
+
+ if (!ScCompiler::pSymbolTableNative)
+ {
+ DBG_ERROR("ScCompiler::pSymbolTableNative missing");
+ return FALSE;
+ }
+
+ //! use tokens
+ String aFormula( '=' );
+ aFormula += ScCompiler::pSymbolTableNative[SC_OPCODE_DDE];
+ aFormula.AppendAscii(RTL_CONSTASCII_STRINGPARAM("(\""));
+ aFormula += aApp;
+ aFormula.AppendAscii(RTL_CONSTASCII_STRINGPARAM("\";\""));
+ aFormula += aTopic;
+ aFormula.AppendAscii(RTL_CONSTASCII_STRINGPARAM("\";\""));
+ aFormula += aItem;
+ aFormula.AppendAscii(RTL_CONSTASCII_STRINGPARAM("\")"));
+
+ // Block markieren
+
+ USHORT nTab = GetViewData()->GetTabNo();
+ USHORT nCurX = GetViewData()->GetCurX();
+ USHORT nCurY = GetViewData()->GetCurY();
+ HideAllCursors();
+ DoneBlockMode();
+ InitBlockMode( nCurX, nCurY, nTab );
+ MarkCursor( nCurX+nCols-1, nCurY+nRows-1, nTab );
+ ShowAllCursors();
+
+ // Formel eingeben
+
+ EnterMatrix( aFormula );
+ CursorPosChanged();
+
+ return TRUE;
+}
+
+
+
+
+
diff --git a/sc/source/ui/view/viewfun6.cxx b/sc/source/ui/view/viewfun6.cxx
new file mode 100644
index 000000000000..59aa35282a42
--- /dev/null
+++ b/sc/source/ui/view/viewfun6.cxx
@@ -0,0 +1,341 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewfun6.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#ifdef WIN
+#define _MENUBTN_HXX
+#endif
+
+//#define _SFX_DOCFILT_HXX
+#define _SFX_PRNMON_HXX
+#define _SFX_RESMGR_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXAPPWIN_HXX
+#define _SFXBASIC_HXX
+#define _SFXCTRLITEM
+#define _SFXDLGCFG_HXX
+//#define _SFXDISPATCH_HXX
+#define _SFXDOCFILE_HXX
+#define _SFXDOCMAN_HXX
+#define _SFXDOCMGR_HXX
+#define _SFXDOCTDLG_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXIPFRM_HXX
+#define _SFX_MACRO_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXMULTISEL_HXX
+#define _SFXMSG_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXOBJFACE_HXX
+#define _SFXOBJFAC_HXX
+#define _SFX_SAVEOPT_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXTBXMGR_HXX
+
+#define _SI_DLL_HXX
+#define _SIDLL_HXX
+#define _SI_NOITEMS
+#define _SI_NOOTHERFORMS
+#define _SI_NOSBXCONTROLS
+#define _SINOSBXCONTROLS
+#define _SI_NOCONTROL
+#define _VCBRW_HXX
+#define _VCTRLS_HXX
+//#define _VCSBX_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+#define _VCATTR_HXX
+#define _VCONT_HXX
+
+#define _SDR_NOTRANSFORM
+#define _SDR_NOITEMS
+#define _SDR_NOOBJECTS
+#define _SVDXOUT_HXX
+
+//------------------------------------------------------------------
+
+#include <svx/svdundo.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/sound.hxx>
+
+#include "viewfunc.hxx"
+#include "detfunc.hxx"
+#include "detdata.hxx"
+#include "viewdata.hxx"
+#include "drwlayer.hxx"
+#include "docsh.hxx"
+#include "undocell.hxx"
+#include "futext.hxx"
+#include "docfunc.hxx"
+#include "globstr.hrc"
+#include "sc.hrc"
+
+
+// STATIC DATA -----------------------------------------------------------
+
+//==================================================================
+
+void ScViewFunc::DetectiveAddPred()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ BOOL bDone = pDocSh->GetDocFunc().
+ DetectiveAddPred( GetViewData()->GetCurPos() );
+ if (!bDone)
+ Sound::Beep();
+}
+
+void ScViewFunc::DetectiveDelPred()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ BOOL bDone = pDocSh->GetDocFunc().
+ DetectiveDelPred( GetViewData()->GetCurPos() );
+ if (!bDone)
+ Sound::Beep();
+}
+
+void ScViewFunc::DetectiveAddSucc()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ BOOL bDone = pDocSh->GetDocFunc().
+ DetectiveAddSucc( GetViewData()->GetCurPos() );
+ if (!bDone)
+ Sound::Beep();
+}
+
+void ScViewFunc::DetectiveDelSucc()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ BOOL bDone = pDocSh->GetDocFunc().
+ DetectiveDelSucc( GetViewData()->GetCurPos() );
+ if (!bDone)
+ Sound::Beep();
+}
+
+void ScViewFunc::DetectiveAddError()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ BOOL bDone = pDocSh->GetDocFunc().
+ DetectiveAddError( GetViewData()->GetCurPos() );
+ if (!bDone)
+ Sound::Beep();
+}
+
+void ScViewFunc::DetectiveDelAll()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ BOOL bDone = pDocSh->GetDocFunc().
+ DetectiveDelAll( GetViewData()->GetTabNo() );
+ if (!bDone)
+ Sound::Beep();
+}
+
+void ScViewFunc::DetectiveMarkInvalid()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ BOOL bDone = pDocSh->GetDocFunc().
+ DetectiveMarkInvalid( GetViewData()->GetTabNo() );
+ if (!bDone)
+ Sound::Beep();
+}
+
+void ScViewFunc::DetectiveRefresh()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ BOOL bDone = pDocSh->GetDocFunc().DetectiveRefresh();
+ if (!bDone)
+ Sound::Beep();
+}
+
+//---------------------------------------------------------------------------
+
+void ScViewFunc::ShowNote()
+{
+ // permanent einblenden
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ ScPostIt aNote;
+ if ( pDoc->GetNote( nCol, nRow, nTab, aNote ) &&
+ !pDoc->HasNoteObject( nCol, nRow, nTab ) )
+ {
+ pDocSh->MakeDrawLayer();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+
+ pModel->BeginCalcUndo();
+ SdrObject* pObject = ScDetectiveFunc( pDoc,nTab ).ShowComment( nCol, nRow, FALSE );
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (pObject)
+ {
+ aNote.SetShown( TRUE );
+ pDoc->SetNote( nCol, nRow, nTab, aNote );
+ if (pUndo)
+ pDocSh->GetUndoManager()->AddUndoAction( new ScUndoNote( pDocSh,
+ TRUE, ScAddress(nCol,nRow,nTab), pUndo ) );
+
+ pDocSh->SetDocumentModified();
+ }
+ else
+ {
+ delete pUndo;
+ Sound::Beep();
+ }
+ }
+}
+
+void ScViewFunc::HideNote()
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+ if (!pModel)
+ return; // da is nix
+
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ ScPostIt aNote;
+ if ( pDoc->GetNote( nCol, nRow, nTab, aNote ) &&
+ pDoc->HasNoteObject( nCol, nRow, nTab ) )
+ {
+ pModel->BeginCalcUndo();
+ BOOL bDone = ScDetectiveFunc( pDoc,nTab ).HideComment( nCol, nRow );
+ SdrUndoGroup* pUndo = pModel->GetCalcUndo();
+ if (bDone)
+ {
+ aNote.SetShown( FALSE );
+ pDoc->SetNote( nCol, nRow, nTab, aNote );
+ if (pUndo)
+ pDocSh->GetUndoManager()->AddUndoAction( new ScUndoNote( pDocSh,
+ FALSE, ScAddress(nCol,nRow,nTab), pUndo ) );
+
+ pDocSh->SetDocumentModified();
+ }
+ else
+ {
+ delete pUndo;
+ Sound::Beep();
+ }
+ }
+}
+
+void ScViewFunc::EditNote()
+{
+ // zum Editieren einblenden und aktivieren
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ ScPostIt aNote;
+ BOOL bFound = pDoc->GetNote( nCol, nRow, nTab, aNote );
+ if ( !bFound || !pDoc->HasNoteObject( nCol, nRow, nTab ) ) // neu oder versteckt
+ {
+ pDocSh->MakeDrawLayer();
+ ScDrawLayer* pModel = pDoc->GetDrawLayer();
+
+ pModel->BeginCalcUndo();
+ // TRUE -> auch neu anlegen
+ SdrObject* pObject = ScDetectiveFunc( pDoc,nTab ).ShowComment( nCol, nRow, TRUE );
+
+ // Undo-Action (pModel->GetCalcUndo) wird beim StopEditMode abgeholt
+
+ if (pObject)
+ {
+ // Shown-Flag nicht veraendern
+
+ // Objekt aktivieren (wie in FuSelection::TestComment)
+ SFX_DISPATCHER().Execute(SID_DRAW_NOTEEDIT, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD);
+ // jetzt den erzeugten FuText holen und in den EditModus setzen
+ FuPoor* pPoor = GetDrawFuncPtr();
+ if ( pPoor && pPoor->GetSlotID() == SID_DRAW_NOTEEDIT ) // hat keine RTTI
+ {
+ ScrollToObject( pObject ); // Objekt komplett sichtbar machen
+ FuText* pText = (FuText*)pPoor;
+ pText->SetInEditMode( pObject );
+ }
+ }
+ }
+}
+
+
+
diff --git a/sc/source/ui/view/viewfun7.cxx b/sc/source/ui/view/viewfun7.cxx
new file mode 100644
index 000000000000..4c2d58f90dcd
--- /dev/null
+++ b/sc/source/ui/view/viewfun7.cxx
@@ -0,0 +1,704 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewfun7.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#define _SV_NOXSOUND
+
+#ifdef WIN
+ #define _MENUBTN_HXX
+#endif
+
+#define _BASE_DLGS_HXX
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _CTRLTOOL_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+#define _FILDLG_HXX
+#define _FONTDLG_HXX
+#define _FRM3D_HXX
+#define _INTRO_HXX
+#define _ISETBWR_HXX
+#define _NO_SVRTF_PARSER_HXX
+#define _MACRODLG_HXX
+#define _MODALDLG_HXX
+#define _MOREBUTTON_HXX
+#define _OUTLINER_HXX
+//#define _PRNDLG_HXX
+//#define _POLY_HXX
+#define _PVRWIN_HXX
+#define _QUEUE_HXX
+#define _RULER_HXX
+#define _SCRWIN_HXX
+#define _SETBRW_HXX
+#define _STACK_HXX
+//#define _STATUS_HXX
+#define _STDCTRL_HXX
+#define _STDMENU_HXX
+//#define _TAB_HXX
+#define _TABBAR_HXX
+#define _TREELIST_HXX
+#define _VALUESET_HXX
+#define _VCATTR_HXX
+#define _VCBRW_HXX
+#define _VCTRLS_HXX
+//#define _VCSBX_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+
+
+//SV
+//#define _CLIP_HXX ***
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _FONTDLG_HXX
+#define _PRVWIN_HXX
+//#define _COLOR_HXX
+//#define _PAL_HXX
+//#define _BITMAP_HXX
+//#define _GDIOBJ_HXX
+//#define _POINTR_HXX
+//#define _ICON_HXX
+//#define _IMAGE_HXX
+//#define _KEYCOD_HXX
+//#define _EVENT_HXX
+#define _HELP_HXX
+//#define _APP_HXX
+//#define _MDIAPP_HXX
+//#define _TIMER_HXX
+//#define _METRIC_HXX
+//#define _REGION_HXX
+//#define _OUTDEV_HXX
+//#define _SYSTEM_HXX
+//#define _VIRDEV_HXX
+//#define _JOBSET_HXX
+//#define _PRINT_HXX
+//#define _WINDOW_HXX
+//#define _SYSWIN_HXX
+//#define _WRKWIN_HXX
+#define _MDIWIN_HXX
+//#define _FLOATWIN_HXX
+//#define _DOCKWIN_HXX
+//#define _CTRL_HXX
+//#define _SCRBAR_HXX
+//#define _BUTTON_HXX
+//#define _IMAGEBTN_HXX
+//#define _FIXED_HXX
+//#define _GROUP_HXX
+//#define _EDIT_HXX
+//#define _COMBOBOX_HXX
+//#define _LSTBOX_HXX
+//#define _SELENG_HXX ***
+//#define _SPLIT_HXX
+#define _SPIN_HXX
+//#define _FIELD_HXX
+//#define _MOREBTN_HXX ***
+//#define _TOOLBOX_HXX
+//#define _STATUS_HXX ***
+//#define _DIALOG_HXX
+//#define _MSGBOX_HXX
+//#define _SYSDLG_HXX
+#define _FILDLG_HXX
+//#define _PRNDLG_HXX
+#define _COLDLG_HXX
+//#define _TABDLG_HXX
+#ifdef WIN
+#define _MENU_HXX
+#endif
+//#define _GDIMTF_HXX
+//#define _POLY_HXX
+//#define _ACCEL_HXX
+//#define _GRAPH_HXX
+#define _SOUND_HXX
+
+
+#define _PASSWD_HXX
+
+#define _SFX_DOCFILE_HXX
+#define _SFX_DOCFILT_HXX
+#define _SFX_DOCSH_HXX
+#define _SFXDOCFILE_HXX
+#define _SFXDOCFILT_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFXDOCSH_HXX
+#define _SFX_PRNMON_HXX
+#define _SFX_RESMGR_HXX
+#define _SFX_TEMPLDLG_HXX
+//#define _SFXAPPWIN_HXX
+#define _SFXBASIC_HXX
+#define _SFXCTRLITEM
+#define _SFXDLGCFG_HXX
+#define _SFXDISPATCH_HXX
+#define _SFXFILEDLG_HXX
+//#define _SFXIMGMGR_HXX
+#define _SFXIPFRM_HXX
+#define _SFX_MACRO_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXMULTISEL_HXX
+//#define _SFXMSG_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXOBJFACE_HXX
+#define _SFXOBJFAC_HXX
+#define _SFX_SAVEOPT_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXTBXMGR_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX ***
+//#define _SFXVIEWSH_HXX ***
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX ***
+//#define _BASEDLGS_HXX ***
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX ***
+//#define _SFXDOCTDLG_HXX ***
+//#define _SFX_TEMPLDLG_HXX ***
+//#define _SFXNEW_HXX ***
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX ***
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX ***
+//#define _SFXITEMSET_HXX ***
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+#define _SFXSLSTITM_HXX
+#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX ***
+//#define _XPOLY_HXX ***
+//#define _XATTR_HXX ***
+#define _XOUTX_HXX
+//#define _XPOOL_HXX ***
+#define _XTABLE_HXX
+
+//svdraw.hxx
+//#define _SVDRAW_HXX
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+#define _SDR_NOVIEWMARKER
+#define _SDR_NODRAGMETHODS
+//#define _SDR_NOUNDO ***
+#define _SDR_NOXOUTDEV
+//#define _SDR_NOOBJECTS ***
+//#define _SDR_NOVIEWS ***
+
+//inet
+#define _INETINDP_HXX
+#define _INETIMP_HXX
+#define _INETWRAP_HXX
+#define _INETKEEP_HXX
+#define _PLUGMGR_HXX
+#define _URLOBJ_HXX //*
+
+#define SFX_NOCLOOKS
+
+#define _SI_DLL_HXX
+#define _SIDLL_HXX
+#define _SI_NOITEMS
+#define _SI_NOOTHERFORMS
+#define _SI_NOSBXCONTROLS
+#define _SINOSBXCONTROLS
+#define _SI_NODRW
+#define _SI_NOCONTROL
+#define _SVBOXITM_HXX
+#define _SVCONTNR_HXX
+//#define _SVDATTR_HXX ***
+#define _SVDEC_HXX
+#define _SVDIO_HXX
+#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+#define _SVTABBX_HXX
+#define _SVTREEBOX_HXX
+#define _SVTREELIST_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_LAYCTRL_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SELCTRL_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_STDDLG_HXX
+#define _SVX_THESDLG_HXX
+
+
+#define SI_NOITEMS
+//#define SI_NODRW
+#define _SI_NOSBXCONTROLS
+#define _VCATTR_HXX
+#define _VCONT_HXX
+//#define _VCSBX_HXX
+#define _SI_NOOTHERFORMS
+#define _VCTRLS_HXX
+//#define _VCDRWOBJ_HXX
+#define _SI_NOCONTROL
+#define _SETBRW_HXX
+#define _VCBRW_HXX
+#define _SI_NOSBXCONTROLS
+#define _SIDLL_HXX
+
+//#define _SI_HXX
+#define _SDR_NOTRANSFORM
+#define _SDR_NOTOUCH
+#define _SVDOPAGE_HXX // SdrPageObj
+#define _SVDSURO_HXX // SdrObjSurrogate
+#define _SVDOVIRT_HXX // SdrVirtObj
+#define _SVDOGRP_HXX // SdrGroupObj
+//#define _SVDOTEXT_HXX // SdrTextObj
+#define _SVDOPATH_HXX // SdrPathObj
+//#define _SVDOEDGE_HXX // SdrEdgeObj
+//#define _SVDORECT_HXX // SdrRectObj (+SdrTextObj)
+#define _SVDCAPT_HXX // SdrCaptionObj
+#define _SVDOCIRC_HXX // SdrCircleObj
+//#define _SVDOGRAF_HXX // SdrGrafObj (+SdrRectObj)
+//#define _SVDOOLE2_HXX // SdrOle2Obj (+SdrRectObj)
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <so3/ipobj.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdograf.hxx>
+#include <svx/svdoole2.hxx>
+#include <svx/svdouno.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdpagv.hxx>
+#include <svx/svdundo.hxx>
+#include <svx/xbitmap.hxx>
+#include <svx/xbtmpit.hxx>
+#include <svx/xoutbmp.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/viewfrm.hxx>
+
+#include "document.hxx" // fuer MapMode Initialisierung in PasteDraw
+#include "viewfunc.hxx"
+#include "tabvwsh.hxx"
+#include "drawview.hxx"
+#include "scmod.hxx"
+#include "drwlayer.hxx"
+#include "globstr.hrc"
+
+extern Point aDragStartDiff;
+
+// STATIC DATA -----------------------------------------------------------
+
+BOOL bPasteIsMove = FALSE;
+
+//==================================================================
+
+void lcl_AdjustInsertPos( ScViewData* pData, Point& rPos, Size& rSize )
+{
+// SdrPage* pPage = pData->GetDocument()->GetDrawLayer()->GetPage( pData->GetTabNo() );
+ SdrPage* pPage = pData->GetScDrawView()->GetModel()->GetPage( pData->GetTabNo() );
+ DBG_ASSERT(pPage,"pPage ???");
+ Size aPgSize( pPage->GetSize() );
+ long x = aPgSize.Width() - rPos.X() - rSize.Width();
+ long y = aPgSize.Height() - rPos.Y() - rSize.Height();
+ // ggf. Ajustments (80/200) fuer Pixel-Rundungsfehler
+ if( x < 0 )
+ rPos.X() += x + 80;
+ if( y < 0 )
+ rPos.Y() += y + 200;
+ rPos.X() += rSize.Width() / 2; // Position bei Paste gibt Mittelpunkt an
+ rPos.Y() += rSize.Height() / 2;
+}
+
+void ScViewFunc::PasteDraw( const Point& rLogicPos, SdrModel* pModel, BOOL bGroup )
+{
+ MakeDrawLayer();
+ Point aPos( rLogicPos );
+
+ // #64184# MapMode am Outliner-RefDevice muss stimmen (wie in FuText::MakeOutliner)
+ //! mit FuText::MakeOutliner zusammenfassen?
+ MapMode aOldMapMode;
+ OutputDevice* pRef = GetViewData()->GetDocument()->GetDrawLayer()->GetRefDevice();
+ if (pRef)
+ {
+ aOldMapMode = pRef->GetMapMode();
+ pRef->SetMapMode( MapMode(MAP_100TH_MM) );
+ }
+
+ SdrView* pDragEditView = SC_MOD()->GetDragData().pSdrView;
+ if (pDragEditView)
+ {
+ aPos -= aDragStartDiff;
+ if (aPos.X() < 0) aPos.X() = 0;
+ if (aPos.Y() < 0) aPos.Y() = 0;
+ }
+
+ ScDrawView* pDrawView = GetScDrawView();
+ if (bGroup)
+ pDrawView->BegUndo( ScGlobal::GetRscString( STR_UNDO_PASTE ) );
+
+ BOOL bSameDoc = ( pDragEditView && pDragEditView->GetModel() == pDrawView->GetModel() );
+ if (bSameDoc)
+ {
+ // lokal kopieren - incl. Charts
+
+ Point aSourceStart = pDragEditView->GetAllMarkedRect().TopLeft();
+ long nDiffX = aPos.X() - aSourceStart.X();
+ long nDiffY = aPos.Y() - aSourceStart.Y();
+
+ // innerhalb einer Page verschieben?
+
+ if ( bPasteIsMove &&
+ pDrawView->GetPageViewPvNum(0)->GetPage() ==
+ pDragEditView->GetPageViewPvNum(0)->GetPage() )
+ {
+ pDragEditView->MoveAllMarked(Size(nDiffX,nDiffY), FALSE);
+ }
+ else
+ {
+ SdrModel* pModel = pDragEditView->GetModel();
+ SdrPage* pDestPage = pModel->GetPage( GetViewData()->GetTabNo() );
+ DBG_ASSERT(pDestPage,"nanu, Page?");
+
+ SdrMarkList aMark = pDragEditView->GetMarkList();
+ aMark.ForceSort();
+ ULONG nMarkAnz=aMark.GetMarkCount();
+ for (ULONG nm=0; nm<nMarkAnz; nm++) {
+ const SdrMark* pM=aMark.GetMark(nm);
+ const SdrObject* pObj=pM->GetObj();
+ SdrObject* pNeuObj=pObj->Clone(pDestPage,pModel);
+ if (pNeuObj!=NULL)
+ {
+ // #68787# copy graphics within the same model - always needs new name
+ if ( pNeuObj->ISA(SdrGrafObj) && !bPasteIsMove )
+ pNeuObj->SetName(((ScDrawLayer*)pModel)->GetNewGraphicName());
+
+ if (nDiffX!=0 || nDiffY!=0)
+ pNeuObj->NbcMove(Size(nDiffX,nDiffY));
+ pDestPage->InsertObject( pNeuObj );
+ pDrawView->AddUndo(new SdrUndoInsertObj( *pNeuObj ));
+
+ // Chart braucht nicht mehr getrennt behandelt zu werden,
+ // weil es seine Daten jetzt selber hat
+ }
+ }
+
+ if (bPasteIsMove)
+ pDragEditView->DeleteMarked();
+ }
+ }
+ else
+ {
+ bPasteIsMove = FALSE; // kein internes Verschieben passiert
+
+ SdrMarkView aView(pModel);
+ SdrPageView* pPv = aView.ShowPagePgNum(0,Point());
+ aView.MarkAll(pPv);
+ Size aSize = aView.GetAllMarkedRect().GetSize();
+ lcl_AdjustInsertPos( GetViewData(), aPos, aSize );
+
+ // #41333# Markierung nicht aendern, wenn Ole-Objekt aktiv
+ // (bei Drop aus Ole-Objekt wuerde sonst mitten im ExecuteDrag deaktiviert!)
+
+ ULONG nOptions = 0;
+ SfxInPlaceClient* pClient = GetViewData()->GetViewShell()->GetIPClient();
+ if ( pClient && pClient->IsInPlaceActive() )
+ nOptions |= SDRINSERT_DONTMARK;
+
+ pDrawView->Paste( *pModel, aPos, NULL, nOptions );
+
+ // #68991# Paste puts all objects on the active (front) layer
+ // controls must be on SC_LAYER_CONTROLS
+
+ USHORT nTab = GetViewData()->GetTabNo();
+ SdrPage* pPage = pDrawView->GetModel()->GetPage(nTab);
+ DBG_ASSERT(pPage,"Page?");
+ if (pPage)
+ {
+ SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
+ SdrObject* pObject = aIter.Next();
+ while (pObject)
+ {
+ if ( pObject->ISA(SdrUnoObj) && pObject->GetLayer() != SC_LAYER_CONTROLS )
+ pObject->NbcSetLayer(SC_LAYER_CONTROLS);
+ pObject = aIter.Next();
+ }
+ }
+
+ // #75299# all graphics objects must have names
+ GetViewData()->GetDocument()->EnsureGraphicNames();
+ }
+
+ if (bGroup)
+ {
+ pDrawView->GroupMarked();
+ pDrawView->EndUndo();
+ }
+
+ if (pRef)
+ pRef->SetMapMode( aOldMapMode );
+
+ GetViewData()->GetViewShell()->SetDrawShell( TRUE );
+}
+
+BOOL ScViewFunc::PasteObject( const Point& rPos, SvInPlaceObject* pObj,
+ SvDataObject* pDataObject )
+{
+ MakeDrawLayer();
+ if ( pObj )
+ {
+ SvEmbeddedInfoObject* pInfoObj = GetViewData()->GetViewShell()->
+ GetViewFrame()->GetObjectShell()->
+ InsertObject(pObj, String());
+ String aName = pInfoObj->GetObjName();
+
+ MapMode aMap100( MAP_100TH_MM );
+ MapMode aMapObj( pObj->GetMapUnit() );
+
+ Size aSize;
+ if (pDataObject) // Size aus DataObject in IPObject uebernehmen
+ {
+ SvObjectDescriptor aDesc(pDataObject);
+ Size aDescSize = aDesc.GetSize();
+ if( aDescSize.Width() && aDescSize.Height() )
+ pObj->SetVisAreaSize(OutputDevice::LogicToLogic( aDescSize, aMap100, aMapObj ));
+ }
+
+ aSize = pObj->GetVisArea().GetSize();
+ aSize = OutputDevice::LogicToLogic( aSize, aMapObj, aMap100 ); // fuer SdrOle2Obj
+
+ if( aSize.Height() == 0 || aSize.Width() == 0 )
+ {
+ DBG_ERROR("SvObjectDescriptor::GetSize == 0");
+ aSize.Width() = 5000;
+ aSize.Height() = 5000;
+ aSize = OutputDevice::LogicToLogic( aSize, aMap100, aMapObj );
+ pObj->SetVisAreaSize(aSize);
+ }
+ // kein AdjustInsertPos
+ Rectangle aRect( rPos, aSize );
+
+ ScDrawView* pDrView = GetScDrawView();
+ SdrOle2Obj* pSdrObj = new SdrOle2Obj( pObj, aName, aRect );
+ SdrPageView* pPV = pDrView->GetPageViewPvNum(0);
+ pDrView->InsertObjectSafe( pSdrObj, *pPV ); // nicht markieren wenn Ole
+ pSdrObj->SetOleLink(pInfoObj);
+ GetViewData()->GetViewShell()->SetDrawShell( TRUE );
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+BOOL ScViewFunc::PasteBitmap( const Point& rPos, const Bitmap& rBmp )
+{
+ String aEmpty;
+ Graphic aGraphic(rBmp);
+ return PasteGraphic( rPos, aGraphic, aEmpty, aEmpty );
+}
+
+BOOL ScViewFunc::PasteMetaFile( const Point& rPos, const GDIMetaFile& rMtf )
+{
+ String aEmpty;
+ Graphic aGraphic(rMtf);
+ return PasteGraphic( rPos, aGraphic, aEmpty, aEmpty );
+}
+
+BOOL ScViewFunc::PasteGraphic( const Point& rPos, const Graphic& rGraphic,
+ const String& rFile, const String& rFilter )
+{
+ MakeDrawLayer();
+ ScDrawView* pDrawView = GetScDrawView();
+
+ Point aPos( rPos );
+ Window* pWin = GetActiveWin();
+ MapMode aSourceMap = rGraphic.GetPrefMapMode();
+ MapMode aDestMap( MAP_100TH_MM );
+
+ if (aSourceMap.GetMapUnit() == MAP_PIXEL)
+ {
+ // Pixel-Korrektur beruecksichtigen, damit Bitmap auf dem Bildschirm stimmt
+
+ Fraction aScaleX, aScaleY;
+ pDrawView->CalcNormScale( aScaleX, aScaleY );
+ aDestMap.SetScaleX(aScaleX);
+ aDestMap.SetScaleY(aScaleY);
+ }
+
+ Size aSize = pWin->LogicToLogic( rGraphic.GetPrefSize(), &aSourceMap, &aDestMap );
+// lcl_AdjustInsertPos( GetViewData(), aPos, aSize );
+ GetViewData()->GetViewShell()->SetDrawShell( TRUE );
+
+ Rectangle aRect(aPos, aSize);
+ SdrGrafObj* pGrafObj = new SdrGrafObj(rGraphic, aRect);
+
+ if (rFile.Len())
+ pGrafObj->SetGraphicLink( rFile, rFilter );
+
+ // #49961# Pfad wird nicht mehr als Name der Grafik gesetzt
+
+ ScDrawLayer* pLayer = (ScDrawLayer*) pDrawView->GetModel();
+ String aName = pLayer->GetNewGraphicName(); // "Grafik x"
+ pGrafObj->SetName(aName);
+
+ // nicht markieren wenn Ole
+ pDrawView->InsertObjectSafe(pGrafObj, *pDrawView->GetPageViewPvNum(0));
+ return TRUE;
+}
+
+BOOL ScViewFunc::ApplyGraphicToObject( SdrObject* pPickObj, const Graphic& rGraphic )
+{
+ BOOL bRet = FALSE;
+ SdrGrafObj* pNewGrafObj = NULL;
+
+ ScDrawView* pDrawView = GetScDrawView();
+ if ( pDrawView && pPickObj )
+ {
+ /**********************************************************************
+ * Objekt neu attributieren
+ **********************************************************************/
+ SdrPageView* pPV = pDrawView->GetPageViewPvNum(0);
+ if (pPickObj->ISA(SdrGrafObj))
+ {
+ /******************************************************************
+ * Das Graphik-Objekt bekommt eine neue Graphik
+ ******************************************************************/
+ pNewGrafObj = (SdrGrafObj*) pPickObj->Clone();
+ pNewGrafObj->SetGraphic(rGraphic);
+
+ pDrawView->BegUndo(ScGlobal::GetRscString(STR_UNDO_DRAGDROP));
+ pDrawView->ReplaceObject(pPickObj, *pPV, pNewGrafObj);
+ pDrawView->EndUndo();
+
+ bRet = TRUE;
+ }
+ else if (pPickObj->IsClosedObj() && !pPickObj->ISA(SdrOle2Obj))
+ {
+ /******************************************************************
+ * Das Objekt wird mit der Graphik gefuellt
+ ******************************************************************/
+ //pDrawView->BegUndo(ScGlobal::GetRscString(STR_UNDO_DRAGDROP));
+ pDrawView->AddUndo(new SdrUndoAttrObj(*pPickObj));
+ //pDrawView->EndUndo();
+
+ XOBitmap aXOBitmap( XOutBitmap::GetBitmapFromGraphic( rGraphic ) );
+ SfxItemSet aSet( pDrawView->GetModel()->GetItemPool(),
+ XATTR_FILLSTYLE, XATTR_FILLBITMAP );
+ aSet.Put(XFillStyleItem(XFILL_BITMAP));
+ aSet.Put(XFillBitmapItem(String(), aXOBitmap));
+ pPickObj->SetAttributes(aSet, FALSE);
+
+ bRet = TRUE;
+ }
+ }
+ return bRet;
+}
+
+
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
new file mode 100644
index 000000000000..c2bde13e58d1
--- /dev/null
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -0,0 +1,2511 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewfunc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------
+
+#define _MACRODLG_HXX
+#define _BIGINT_HXX
+#define _SVDXOUT_HXX
+#define _SVDATTR_HXX
+#define _SVDSURO_HXX
+
+// INCLUDE ---------------------------------------------------------------
+
+#include "scitems.hxx"
+#include <svx/algitem.hxx>
+#include <svx/boxitem.hxx>
+#include <svx/editobj.hxx>
+#include <svx/editview.hxx>
+#include <svx/eeitem.hxx>
+#include <svx/langitem.hxx>
+#include <sfx2/bindings.hxx>
+#include <svtools/zforlist.hxx>
+#include <svtools/zformat.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/sound.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/waitobj.hxx>
+#include <vcl/wrkwin.hxx>
+#include <stdlib.h> // qsort
+
+#include "viewfunc.hxx"
+#include "tabvwsh.hxx"
+#include "docsh.hxx"
+#include "attrib.hxx"
+#include "patattr.hxx"
+#include "docpool.hxx"
+#include "uiitems.hxx"
+#include "sc.hrc"
+#include "undocell.hxx"
+#include "undoblk.hxx"
+#include "undotab.hxx"
+#include "refundo.hxx"
+#include "dbcolect.hxx"
+#include "olinetab.hxx"
+#include "rangeutl.hxx"
+#include "rangenam.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "stlsheet.hxx"
+#include "editutil.hxx"
+#include "namecrea.hxx" // wegen Flags
+#include "cell.hxx"
+#include "scresid.hxx"
+#include "inputhdl.hxx"
+#include "scmod.hxx"
+#include "inputopt.hxx"
+#include "compiler.hxx"
+#include "docfunc.hxx"
+#include "appoptio.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+
+//==================================================================
+
+ScViewFunc::ScViewFunc( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell ) :
+ ScTabView( pParent, rDocSh, pViewShell ),
+ bFormatValid( FALSE )
+{
+}
+
+ScViewFunc::ScViewFunc( Window* pParent, const ScViewFunc& rViewFunc, ScTabViewShell* pViewShell ) :
+ ScTabView( pParent, rViewFunc, pViewShell ),
+ bFormatValid( FALSE )
+{
+}
+
+ScViewFunc::~ScViewFunc()
+{
+}
+
+//------------------------------------------------------------------------------------
+
+void ScViewFunc::StartFormatArea()
+{
+ // ueberhaupt aktiviert?
+ if ( !SC_MOD()->GetInputOptions().GetExtendFormat() )
+ return;
+
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScAddress aPos( GetViewData()->GetCurX(), GetViewData()->GetCurY(), nTab );
+ BOOL bOk = TRUE;
+
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ if ( rMark.IsMultiMarked() )
+ rMark.MarkToSimple();
+ if ( rMark.IsMultiMarked() )
+ bOk = FALSE;
+ else if ( rMark.IsMarked() )
+ {
+ ScRange aMarkRange;
+ rMark.GetMarkArea( aMarkRange );
+ if ( aMarkRange.aStart == aMarkRange.aEnd )
+ aPos = aMarkRange.aStart;
+ else
+ bOk = FALSE;
+ }
+
+ if (bOk)
+ {
+ bFormatValid = TRUE;
+ aFormatSource = aPos;
+ aFormatArea = ScRange( aPos );
+ }
+ else
+ bFormatValid = FALSE; // keinen alten Bereich behalten
+}
+
+BOOL ScViewFunc::TestFormatArea( USHORT nCol, USHORT nRow, USHORT nTab, BOOL bAttrChanged )
+{
+ // ueberhaupt aktiviert?
+ if ( !SC_MOD()->GetInputOptions().GetExtendFormat() )
+ return FALSE;
+
+ // Test: Eingabe mit Zahlformat (bAttrChanged) immer als neue Attributierung behandeln
+ // (alte Area verwerfen). Wenn das nicht gewollt ist, den if-Teil weglassen:
+ if ( bAttrChanged )
+ {
+ StartFormatArea();
+ return FALSE;
+ }
+
+ //! Abfrage, ob Zelle leer war ???
+
+ BOOL bFound = FALSE;
+ ScRange aNewRange = aFormatArea;
+ if ( bFormatValid && nTab == aFormatSource.Tab() )
+ {
+ if ( nRow >= aFormatArea.aStart.Row() && nRow <= aFormatArea.aEnd.Row() )
+ {
+ // innerhalb ?
+ if ( nCol >= aFormatArea.aStart.Col() && nCol <= aFormatArea.aEnd.Col() )
+ {
+ bFound = TRUE; // Bereich nicht aendern
+ }
+ // links ?
+ if ( nCol+1 == aFormatArea.aStart.Col() )
+ {
+ bFound = TRUE;
+ aNewRange.aStart.SetCol( nCol );
+ }
+ // rechts ?
+ if ( nCol == aFormatArea.aEnd.Col()+1 )
+ {
+ bFound = TRUE;
+ aNewRange.aEnd.SetCol( nCol );
+ }
+ }
+ if ( nCol >= aFormatArea.aStart.Col() && nCol <= aFormatArea.aEnd.Col() )
+ {
+ // oben ?
+ if ( nRow+1 == aFormatArea.aStart.Row() )
+ {
+ bFound = TRUE;
+ aNewRange.aStart.SetRow( nRow );
+ }
+ // unten ?
+ if ( nRow == aFormatArea.aEnd.Row()+1 )
+ {
+ bFound = TRUE;
+ aNewRange.aEnd.SetRow( nRow );
+ }
+ }
+ }
+
+ if (bFound)
+ aFormatArea = aNewRange; // erweitern
+ else
+ {
+ bFormatValid = FALSE; // ausserhalb -> abbrechen
+ if ( bAttrChanged ) // Wert mit Zahlformat eingegeben?
+ StartFormatArea(); // dann ggf. neu starten
+ }
+
+ return bFound;
+}
+
+void ScViewFunc::DoAutoAttributes( USHORT nCol, USHORT nRow, USHORT nTab,
+ BOOL bAttrChanged, BOOL bAddUndo )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+
+ const ScPatternAttr* pSource = pDoc->GetPattern(
+ aFormatSource.Col(), aFormatSource.Row(), nTab );
+ if ( !((const ScMergeAttr&)pSource->GetItem(ATTR_MERGE)).IsMerged() )
+ {
+ const ScPatternAttr* pDocOld = pDoc->GetPattern( nCol, nRow, nTab );
+ // pDocOld ist nur bis zum Apply... gueltig!
+
+ ScPatternAttr* pOldPattern = NULL;
+ if ( bAddUndo )
+ pOldPattern = new ScPatternAttr( *pDocOld );
+
+ const ScStyleSheet* pSrcStyle = pSource->GetStyleSheet();
+ if ( pSrcStyle && pSrcStyle != pDocOld->GetStyleSheet() )
+ pDoc->ApplyStyle( nCol, nRow, nTab, *pSrcStyle );
+ pDoc->ApplyPattern( nCol, nRow, nTab, *pSource );
+ AdjustRowHeight( nRow, nRow, TRUE ); //! nicht doppelt ?
+
+ if ( bAddUndo )
+ {
+ const ScPatternAttr* pNewPattern = pDoc->GetPattern( nCol, nRow, nTab );
+
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoCursorAttr( pDocSh, nCol, nRow, nTab,
+ pOldPattern, pNewPattern, pSource,
+ TRUE ) );
+
+ delete pOldPattern; // wird im Undo kopiert (Pool)
+ }
+ }
+
+ if ( bAttrChanged ) // Wert mit Zahlformat eingegeben?
+ aFormatSource.Set( nCol, nRow, nTab ); // dann als neue Quelle
+}
+
+//------------------------------------------------------------------------------------
+
+// Hilfsroutinen
+
+USHORT ScViewFunc::GetOptimalColWidth( USHORT nCol, USHORT nTab, BOOL bFormula )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ VirtualDevice aVirtDev;
+ aVirtDev.SetMapMode(MAP_PIXEL);
+ USHORT nTwips = pDoc->GetOptimalColWidth( nCol, nTab, &aVirtDev,
+ GetViewData()->GetPPTX(),
+ GetViewData()->GetPPTY(),
+ GetViewData()->GetZoomX(),
+ GetViewData()->GetZoomY(),
+ bFormula, &rMark );
+ return nTwips;
+}
+
+BOOL ScViewFunc::SelectionEditable( BOOL* pOnlyNotBecauseOfMatrix /* = NULL */ )
+{
+ BOOL bRet;
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ if (rMark.IsMarked() || rMark.IsMultiMarked())
+ bRet = pDoc->IsSelectionEditable( rMark, pOnlyNotBecauseOfMatrix );
+ else
+ {
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ bRet = pDoc->IsBlockEditable( nTab, nCol, nRow, nCol, nRow,
+ pOnlyNotBecauseOfMatrix );
+ }
+ return bRet;
+}
+
+#ifndef LRU_MAX
+#define LRU_MAX 10
+#endif
+
+BOOL lcl_FunctionKnown( USHORT nOpCode )
+{
+ const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList();
+ if ( pFuncList )
+ {
+ ULONG nCount = pFuncList->GetCount();
+ for (ULONG i=0; i<nCount; i++)
+ if ( pFuncList->GetFunction(i)->nFIndex == nOpCode )
+ return TRUE;
+ }
+ return FALSE;
+}
+
+BOOL lcl_AddFunction( ScAppOptions& rAppOpt, USHORT nOpCode )
+{
+ USHORT nOldCount = rAppOpt.GetLRUFuncListCount();
+ USHORT* pOldList = rAppOpt.GetLRUFuncList();
+ USHORT nPos;
+ for (nPos=0; nPos<nOldCount; nPos++)
+ if (pOldList[nPos] == nOpCode) // is the function already in the list?
+ {
+ if ( nPos == 0 )
+ return FALSE; // already at the top -> no change
+
+ // count doesn't change, so the original array is modified
+
+ for (USHORT nCopy=nPos; nCopy>0; nCopy--)
+ pOldList[nCopy] = pOldList[nCopy-1];
+ pOldList[0] = nOpCode;
+
+ return TRUE; // list has changed
+ }
+
+ if ( !lcl_FunctionKnown( nOpCode ) )
+ return FALSE; // not in function list -> no change
+
+ USHORT nNewCount = Min( (USHORT)(nOldCount + 1), (USHORT)LRU_MAX );
+ USHORT nNewList[LRU_MAX];
+ nNewList[0] = nOpCode;
+ for (nPos=1; nPos<nNewCount; nPos++)
+ nNewList[nPos] = pOldList[nPos-1];
+ rAppOpt.SetLRUFuncList( nNewList, nNewCount );
+
+ return TRUE; // list has changed
+}
+
+// eigentliche Funktionen
+
+// Eingabe - Undo OK
+
+void ScViewFunc::EnterData( USHORT nCol, USHORT nRow, USHORT nTab, const String& rString,
+ BOOL bRecord )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ SvNumberFormatter& rFormatter = *pDoc->GetFormatTable();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nSelCount = rMark.GetSelectCount();
+ USHORT i;
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocShellModificator aModificator( *pDocSh );
+
+ if (pDoc->IsSelectedBlockEditable( nCol,nRow, nCol,nRow, rMark ))
+ {
+ BOOL bEditDeleted = FALSE;
+
+ ScBaseCell** ppOldCells = NULL;
+ BOOL* pHasFormat = NULL;
+ ULONG* pOldFormats = NULL;
+ USHORT* pTabs = NULL;
+ USHORT nUndoPos = 0;
+ if ( bRecord )
+ {
+ ppOldCells = new ScBaseCell*[nSelCount];
+ pHasFormat = new BOOL[nSelCount];
+ pOldFormats = new ULONG[nSelCount];
+ pTabs = new USHORT[nSelCount];
+ nUndoPos = 0;
+
+ for (i=0; i<nTabCount; i++)
+ if (rMark.GetTableSelect(i))
+ {
+ pTabs[nUndoPos] = i;
+ ScBaseCell* pDocCell;
+ pDoc->GetCell( nCol, nRow, i, pDocCell );
+ if ( pDocCell )
+ {
+ ppOldCells[nUndoPos] = pDocCell->Clone(pDoc);
+ if ( pDocCell->GetCellType() == CELLTYPE_EDIT )
+ bEditDeleted = TRUE;
+ }
+ else
+ {
+ ppOldCells[nUndoPos] = NULL;
+ }
+
+ const SfxPoolItem* pItem;
+ const ScPatternAttr* pPattern = pDoc->GetPattern(nCol, nRow, i);
+ if ( SFX_ITEM_SET == pPattern->GetItemSet().GetItemState(
+ ATTR_VALUE_FORMAT,FALSE,&pItem) )
+ {
+ pHasFormat[nUndoPos] = TRUE;
+ pOldFormats[nUndoPos] = ((const SfxUInt32Item*)pItem)->GetValue();
+ }
+ else
+ pHasFormat[nUndoPos] = FALSE;
+
+ ++nUndoPos;
+ }
+
+ DBG_ASSERT( nUndoPos==nSelCount, "nUndoPos!=nSelCount" );
+ }
+
+ BOOL bNumFmtChanged = FALSE;
+ // einzelnes '=' ist String (wird fuer Spezialfilter so gebraucht)
+ if ( rString.GetChar(0) == '=' && rString.Len() > 1 )
+ { // Formel, compile mit AutoCorrection
+ for (i=0; i<nTabCount; i++)
+ if (rMark.GetTableSelect(i))
+ break;
+ ScAddress aPos( nCol, nRow, i );
+ ScCompiler aComp( pDoc, aPos );
+//2do: AutoCorrection via CalcOptions abschaltbar machen
+ aComp.SetAutoCorrection( TRUE );
+ String aFormula( rString );
+ ScTokenArray* pArr;
+ BOOL bAgain;
+ do
+ {
+ bAgain = FALSE;
+ BOOL bAddEqual = FALSE;
+ ScTokenArray* pArrFirst = pArr = aComp.CompileString( aFormula );
+ BOOL bCorrected = aComp.IsCorrected();
+ if ( bCorrected )
+ { // probieren, mit erster Parser-Korrektur neu zu parsen
+ pArr = aComp.CompileString( aComp.GetCorrectedFormula() );
+ }
+ if ( !pArr->GetError() )
+ {
+ bAddEqual = TRUE;
+ aComp.CompileTokenArray();
+ bCorrected |= aComp.IsCorrected();
+ }
+ if ( bCorrected )
+ {
+ String aCorrectedFormula;
+ if ( bAddEqual )
+ {
+ aCorrectedFormula = '=';
+ aCorrectedFormula += aComp.GetCorrectedFormula();
+ }
+ else
+ aCorrectedFormula = aComp.GetCorrectedFormula();
+ short nResult;
+ if ( aCorrectedFormula.Len() == 1 )
+ nResult = RET_NO; // leere Formel, nur '='
+ else
+ {
+ String aMessage( ScResId( SCSTR_FORMULA_AUTOCORRECTION ) );
+ aMessage += aCorrectedFormula;
+ nResult = QueryBox( GetViewData()->GetDialogParent(),
+ WinBits(WB_YES_NO | WB_DEF_YES),
+ aMessage ).Execute();
+ }
+ if ( nResult == RET_YES )
+ {
+ aFormula = aCorrectedFormula;
+ if ( pArr != pArrFirst )
+ delete pArrFirst;
+ bAgain = TRUE;
+ }
+ else
+ {
+ if ( pArr != pArrFirst )
+ {
+ delete pArr;
+ pArr = pArrFirst;
+ }
+ }
+ }
+ } while ( bAgain );
+ // um in mehreren Tabellen eingesetzt zu werden, muss die Formel
+ // via ScFormulaCell copy-ctor evtl. wegen RangeNames neu kompiliert
+ // werden, gleiches Code-Array fuer alle Zellen geht nicht.
+ // Wenn das Array einen Fehler enthaelt, muss in den neu erzeugten
+ // Zellen RPN geloescht und der Fehler explizit gesetzt werden, da
+ // via FormulaCell copy-ctor und Interpreter das, wenn moeglich,
+ // wieder glattgebuegelt wird, zu intelligent.. z.B.: =1))
+ USHORT nError = pArr->GetError();
+ if ( !nError )
+ {
+ // #68693# update list of recent functions with all functions that
+ // are not within parentheses
+
+ ScModule* pScMod = SC_MOD();
+ ScAppOptions aAppOpt = pScMod->GetAppOptions();
+ BOOL bOptChanged = FALSE;
+
+ ScToken** ppToken = pArr->GetArray();
+ USHORT nTokens = pArr->GetLen();
+ USHORT nLevel = 0;
+ for (USHORT nTP=0; nTP<nTokens; nTP++)
+ {
+ ScToken* pTok = ppToken[nTP];
+ OpCode eOp = pTok->GetOpCode();
+ if ( eOp == ocOpen )
+ ++nLevel;
+ else if ( eOp == ocClose && nLevel )
+ --nLevel;
+ if ( nLevel == 0 && pTok->IsFunction() && lcl_AddFunction( aAppOpt, eOp ) )
+ bOptChanged = TRUE;
+ }
+
+ if ( bOptChanged )
+ {
+ pScMod->SetAppOptions(aAppOpt);
+ pScMod->RecentFunctionsChanged();
+ }
+ }
+
+ ScFormulaCell aCell( pDoc, aPos, pArr, 0 );
+ delete pArr;
+ BOOL bAutoCalc = pDoc->GetAutoCalc();
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ for ( ; i<nTabCount; i++)
+ {
+ if (rMark.GetTableSelect(i))
+ {
+ aPos.SetTab( i );
+ ULONG nIndex = (ULONG) ((SfxUInt32Item*) pDoc->GetAttr(
+ nCol, nRow, i, ATTR_VALUE_FORMAT ))->GetValue();
+ if ( pFormatter->GetType(nIndex) == NUMBERFORMAT_TEXT )
+ {
+ ScStringCell* pCell = new ScStringCell( aFormula );
+ pDoc->PutCell( aPos, pCell );
+ }
+ else
+ {
+ ScFormulaCell* pCell = new ScFormulaCell( pDoc, aPos, aCell );
+ if ( nError )
+ {
+ pCell->GetCode()->DelRPN();
+ pCell->SetErrCode( nError );
+ }
+ pDoc->PutCell( aPos, pCell );
+ if ( !bAutoCalc )
+ { // einmal nur die Zelle berechnen und wieder dirty setzen
+ pCell->Interpret();
+ pCell->SetDirtyVar();
+ pDoc->PutInFormulaTree( pCell );
+ }
+ }
+
+ }
+ }
+ }
+ else
+ {
+ for (i=0; i<nTabCount; i++)
+ if (rMark.GetTableSelect(i))
+ if (pDoc->SetString( nCol, nRow, i, rString ))
+ bNumFmtChanged = TRUE;
+ }
+
+ HideAllCursors();
+
+ if (bEditDeleted || pDoc->HasAttrib( nCol, nRow, nTab, nCol, nRow, nTab, HASATTR_NEEDHEIGHT ))
+ AdjustRowHeight(nRow,nRow);
+
+ BOOL bAutoFormat = TestFormatArea(nCol, nRow, nTab, bNumFmtChanged);
+ if (bAutoFormat)
+ DoAutoAttributes(nCol, nRow, nTab, bNumFmtChanged, bRecord);
+
+ if ( bRecord )
+ { // wg. ChangeTrack erst jetzt
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoEnterData( pDocSh, nCol, nRow, nTab, nUndoPos, pTabs,
+ ppOldCells, pHasFormat, pOldFormats,
+ rString, NULL ) );
+ }
+
+ for (i=0; i<nTabCount; i++)
+ if (rMark.GetTableSelect(i))
+ pDocSh->PostPaintCell( nCol, nRow, i );
+
+ ShowAllCursors();
+
+ pDocSh->UpdateOle(GetViewData());
+ aModificator.SetDocumentModified();
+ }
+ else
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ PaintArea( nCol, nRow, nCol, nRow ); // da steht evtl. noch die Edit-Engine
+ }
+}
+
+// Wert in einzele Zelle eintragen (nur auf nTab)
+//! umbenennen in EnterValue !!!!
+
+void ScViewFunc::EnterData( USHORT nCol, USHORT nRow, USHORT nTab, const double& rValue )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+
+ if ( pDoc && pDocSh )
+ {
+ ScDocShellModificator aModificator( *pDocSh );
+
+ if (pDoc->IsBlockEditable( nTab, nCol,nRow, nCol,nRow ))
+ {
+ ScBaseCell* pOldCell;
+ pDoc->GetCell( nCol, nRow, nTab, pOldCell );
+ BOOL bNeedHeight = ( pOldCell && pOldCell->GetCellType() == CELLTYPE_EDIT )
+ || pDoc->HasAttrib(
+ nCol,nRow,nTab, nCol,nRow,nTab, HASATTR_NEEDHEIGHT );
+
+ // Undo
+ ScBaseCell* pUndoCell = pOldCell ? pOldCell->Clone(pDoc) : NULL;
+
+ pDoc->SetValue( nCol, nRow, nTab, rValue );
+
+ // wg. ChangeTrack nach Aenderung im Dokument
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoEnterValue( pDocSh, ScAddress(nCol,nRow,nTab),
+ pUndoCell, rValue, bNeedHeight ) );
+
+/*! Zeilenhoehe anpassen? Dann auch bei Undo...
+ if (bNeedHeight)
+ AdjustRowHeight(nRow,nRow);
+*/
+
+ pDocSh->PostPaintCell( nCol, nRow, nTab );
+ pDocSh->UpdateOle(GetViewData());
+ aModificator.SetDocumentModified();
+ }
+ else
+ ErrorMessage(STR_PROTECTIONERR);
+ }
+}
+
+void ScViewFunc::EnterData( USHORT nCol, USHORT nRow, USHORT nTab, const EditTextObject* pData,
+ BOOL bRecord, BOOL bTestSimple )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ ScDocument* pDoc = pDocSh->GetDocument();
+
+ ScDocShellModificator aModificator( *pDocSh );
+
+ if (pDoc->IsBlockEditable( nTab, nCol,nRow, nCol,nRow ))
+ {
+ //
+ // Test auf Attribute
+ //
+ BOOL bSimple = FALSE;
+ BOOL bCommon = FALSE;
+ ScPatternAttr* pCellAttrs = NULL;
+ EditTextObject* pNewData = NULL;
+ String aString;
+ if (bTestSimple) // Testen, ob einfacher String ohne Attribute
+ {
+ const ScPatternAttr* pOldPattern = pDoc->GetPattern( nCol, nRow, nTab );
+ ScTabEditEngine aEngine( *pOldPattern, pDoc->GetEnginePool() );
+ aEngine.SetText(*pData);
+
+ ScEditAttrTester aTester( &aEngine );
+ bSimple = !aTester.NeedsObject();
+ bCommon = aTester.NeedsCellAttr();
+
+ if (bCommon) // Attribute fuer Tabelle
+ {
+ pCellAttrs = new ScPatternAttr( *pOldPattern );
+ pCellAttrs->GetFromEditItemSet( &aTester.GetAttribs() );
+ //! remove common attributes from EditEngine?
+ }
+
+ if (bSimple)
+ aString = aEngine.GetText();
+ }
+
+ //
+ // Undo
+ //
+
+ USHORT nTabCount = pDoc->GetTableCount();
+ USHORT nSelCount = rMark.GetSelectCount();
+ USHORT i;
+ ScBaseCell** ppOldCells = NULL;
+ USHORT* pTabs = NULL;
+ USHORT nPos = 0;
+ EditTextObject* pUndoData = NULL;
+ if (bRecord && !bSimple)
+ {
+ ppOldCells = new ScBaseCell*[nSelCount];
+ pTabs = new USHORT[nSelCount];
+ nPos = 0;
+
+ for (i=0; i<nTabCount; i++)
+ if (rMark.GetTableSelect(i))
+ {
+ pTabs[nPos] = i;
+ ScBaseCell* pDocCell;
+ pDoc->GetCell( nCol, nRow, i, pDocCell );
+ if ( pDocCell )
+ ppOldCells[nPos] = pDocCell->Clone( pDoc );
+ else
+ ppOldCells[nPos] = NULL;
+ ++nPos;
+ }
+
+ DBG_ASSERT( nPos==nSelCount, "nPos!=nSelCount" );
+
+ pUndoData = pData->Clone();
+ }
+
+ //
+ // Daten eintragen
+ //
+
+ if (bCommon)
+ pDoc->ApplyPattern(nCol,nRow,nTab,*pCellAttrs); //! Undo
+
+ if (bSimple)
+ {
+ if (bCommon)
+ AdjustRowHeight(nRow,nRow);
+
+ EnterData(nCol,nRow,nTab,aString,bRecord);
+ }
+ else
+ {
+ for (i=0; i<nTabCount; i++)
+ if (rMark.GetTableSelect(i))
+ pDoc->PutCell( nCol, nRow, i, new ScEditCell( pData, pDoc, NULL ) );
+
+ if ( bRecord )
+ { // wg. ChangeTrack erst jetzt
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoEnterData( pDocSh, nCol, nRow, nTab, nPos, pTabs,
+ ppOldCells, NULL, NULL, String(),
+ pUndoData ) );
+ }
+
+ HideAllCursors();
+
+ AdjustRowHeight(nRow,nRow);
+
+ for (i=0; i<nTabCount; i++)
+ if (rMark.GetTableSelect(i))
+ pDocSh->PostPaintCell( nCol, nRow, i );
+
+ ShowAllCursors();
+
+ pDocSh->UpdateOle(GetViewData());
+ aModificator.SetDocumentModified();
+ }
+
+ delete pCellAttrs;
+ delete pNewData;
+ }
+ else
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ PaintArea( nCol, nRow, nCol, nRow ); // da steht evtl. noch die Edit-Engine
+ }
+}
+
+void ScViewFunc::EnterDataAtCursor( const String& rString )
+{
+ USHORT nPosX = GetViewData()->GetCurX();
+ USHORT nPosY = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ EnterData( nPosX, nPosY, nTab, rString );
+}
+
+void ScViewFunc::EnterMatrix( const String& rString )
+{
+ ScViewData* pData = GetViewData();
+ const ScMarkData& rMark = pData->GetMarkData();
+ if ( !rMark.IsMarked() && !rMark.IsMultiMarked() )
+ {
+ // nichts markiert -> automatisch Block mit Groesse des Ergebnisses
+ // Formel temporaer berechnen, um an die Groesse heranzukommen
+
+ ScDocument* pDoc = pData->GetDocument();
+ USHORT nCol = pData->GetCurX();
+ USHORT nRow = pData->GetCurY();
+ USHORT nTab = pData->GetTabNo();
+ ScFormulaCell aFormCell( pDoc, ScAddress(nCol,nRow,nTab), rString, MM_FORMULA );
+
+ USHORT nSizeX, nSizeY;
+ aFormCell.GetResultDimensions( nSizeX, nSizeY );
+ if ( nSizeX && nSizeY && nCol+nSizeX-1 <= MAXCOL && nRow+nSizeY-1 <= MAXROW )
+ {
+ ScRange aResult( nCol, nRow, nTab, nCol+nSizeX-1, nRow+nSizeY-1, nTab );
+ MarkRange( aResult, FALSE );
+ }
+ }
+
+ ScRange aRange;
+ if (pData->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = pData->GetDocShell();
+ BOOL bSuccess = pDocSh->GetDocFunc().EnterMatrix( aRange, &rMark, rString, FALSE );
+ if (bSuccess)
+ pDocSh->UpdateOle(GetViewData());
+ }
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+}
+
+const ScPatternAttr* ScViewFunc::GetSelectionPattern()
+{
+ const ScMarkData& rMark = GetViewData()->GetMarkData();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ if ( rMark.IsMarked() || rMark.IsMultiMarked() )
+ {
+ // MarkToMulti ist fuer pDoc->GetSelectionPattern nicht mehr noetig
+ const ScPatternAttr* pAttr = pDoc->GetSelectionPattern( rMark );
+ return pAttr;
+ }
+ else
+ {
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ ScMarkData aTempMark( rMark ); // Tabellen kopieren
+ aTempMark.SetMarkArea( ScRange( nCol, nRow, nTab ) );
+ const ScPatternAttr* pAttr = pDoc->GetSelectionPattern( aTempMark );
+ return pAttr;
+ }
+}
+
+void ScViewFunc::GetSelectionFrame( SvxBoxItem& rLineOuter,
+ SvxBoxInfoItem& rLineInner )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ if ( rMark.IsMarked() || rMark.IsMultiMarked() )
+ {
+ pDoc->GetSelectionFrame( rMark, rLineOuter, rLineInner );
+ }
+ else
+ {
+ const ScPatternAttr* pAttrs =
+ pDoc->GetPattern( GetViewData()->GetCurX(),
+ GetViewData()->GetCurY(),
+ GetViewData()->GetTabNo() );
+
+ rLineOuter = (const SvxBoxItem&) (pAttrs->GetItem( ATTR_BORDER ));
+ rLineInner = (const SvxBoxInfoItem&)(pAttrs->GetItem( ATTR_BORDER_INNER ));
+ rLineInner.SetTable(FALSE);
+ rLineInner.SetDist((BOOL)FALSE);
+ rLineInner.SetMinDist(FALSE);
+ }
+}
+
+//
+// Attribute anwenden - Undo OK
+//
+// kompletter Set ( ATTR_STARTINDEX, ATTR_ENDINDEX )
+//
+
+void ScViewFunc::ApplyAttributes( const SfxItemSet* pDialogSet,
+ const SfxItemSet* pOldSet,
+ BOOL bRecord )
+{
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ if ( !SelectionEditable( &bOnlyNotBecauseOfMatrix ) && !bOnlyNotBecauseOfMatrix )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ ScPatternAttr aOldAttrs( new SfxItemSet(*pOldSet) );
+ ScPatternAttr aNewAttrs( new SfxItemSet(*pDialogSet) );
+ aNewAttrs.DeleteUnchanged( &aOldAttrs );
+
+ ULONG nOldFormat =
+ ((const SfxUInt32Item&)pOldSet->Get( ATTR_VALUE_FORMAT )).GetValue();
+ ULONG nNewFormat =
+ ((const SfxUInt32Item&)pDialogSet->Get( ATTR_VALUE_FORMAT )).GetValue();
+ if ( nNewFormat != nOldFormat )
+ {
+ SvNumberFormatter* pFormatter =
+ GetViewData()->GetDocument()->GetFormatTable();
+ const SvNumberformat* pOldEntry = pFormatter->GetEntry( nOldFormat );
+ LanguageType eOldLang =
+ pOldEntry ? pOldEntry->GetLanguage() : LANGUAGE_DONTKNOW;
+ const SvNumberformat* pNewEntry = pFormatter->GetEntry( nNewFormat );
+ LanguageType eNewLang =
+ pNewEntry ? pNewEntry->GetLanguage() : LANGUAGE_DONTKNOW;
+ if ( eNewLang != eOldLang )
+ {
+ aNewAttrs.GetItemSet().Put(
+ SvxLanguageItem( eNewLang, ATTR_LANGUAGE_FORMAT ) );
+
+ // #40606# nur die Sprache geaendert -> Zahlformat-Attribut nicht anfassen
+ ULONG nNewMod = nNewFormat % SV_COUNTRY_LANGUAGE_OFFSET;
+ if ( nNewMod == ( nOldFormat % SV_COUNTRY_LANGUAGE_OFFSET ) &&
+ nNewMod <= SV_MAX_ANZ_STANDARD_FORMATE )
+ aNewAttrs.GetItemSet().ClearItem( ATTR_VALUE_FORMAT );
+ }
+ }
+
+ const SvxBoxItem* pOldOuter = (const SvxBoxItem*) &pOldSet->Get( ATTR_BORDER );
+ const SvxBoxItem* pNewOuter = (const SvxBoxItem*) &pDialogSet->Get( ATTR_BORDER );
+ const SvxBoxInfoItem* pOldInner = (const SvxBoxInfoItem*) &pOldSet->Get( ATTR_BORDER_INNER );
+ const SvxBoxInfoItem* pNewInner = (const SvxBoxInfoItem*) &pDialogSet->Get( ATTR_BORDER_INNER );
+ SfxItemSet& rNewSet = aNewAttrs.GetItemSet();
+ SfxItemPool* pNewPool = rNewSet.GetPool();
+
+ pNewPool->Put( *pNewOuter ); // noch nicht loeschen
+ pNewPool->Put( *pNewInner );
+ rNewSet.ClearItem( ATTR_BORDER );
+ rNewSet.ClearItem( ATTR_BORDER_INNER );
+
+ /*
+ * Feststellen, ob Rahmenattribute zu setzen sind:
+ * 1. Neu != Alt
+ * 2. Ist eine der Linien nicht-DontCare (seit 238.f: IsxxValid())
+ *
+ */
+
+ BOOL bFrame = (pDialogSet->GetItemState( ATTR_BORDER ) != SFX_ITEM_DEFAULT)
+ || (pDialogSet->GetItemState( ATTR_BORDER_INNER ) != SFX_ITEM_DEFAULT);
+
+ if ( pNewOuter==pOldOuter && pNewInner==pOldInner )
+ bFrame = FALSE;
+
+ // das sollte doch der Pool abfangen: ?!??!??
+
+ if ( bFrame && pNewOuter && pNewInner )
+ if ( *pNewOuter == *pOldOuter && *pNewInner == *pOldInner )
+ bFrame = FALSE;
+
+ if ( pNewInner )
+ {
+ bFrame = bFrame
+ && ( pNewInner->IsValid(VALID_LEFT)
+ || pNewInner->IsValid(VALID_RIGHT)
+ || pNewInner->IsValid(VALID_TOP)
+ || pNewInner->IsValid(VALID_BOTTOM)
+ || pNewInner->IsValid(VALID_HORI)
+ || pNewInner->IsValid(VALID_VERT) );
+ }
+ else
+ bFrame = FALSE;
+
+ if (!bFrame)
+ ApplySelectionPattern( aNewAttrs, bRecord ); // nur normale
+ else
+ {
+ // wenn neue Items Default-Items sind, so muessen die
+ // alten Items geputtet werden:
+
+ BOOL bDefNewOuter = ( SFX_ITEMS_STATICDEFAULT == pNewOuter->GetRef() );
+ BOOL bDefNewInner = ( SFX_ITEMS_STATICDEFAULT == pNewInner->GetRef() );
+
+ ApplyPatternLines( aNewAttrs,
+ bDefNewOuter ? pOldOuter : pNewOuter,
+ bDefNewInner ? pOldInner : pNewInner,
+ bRecord );
+ }
+
+ pNewPool->Remove( *pNewOuter ); // freigeben
+ pNewPool->Remove( *pNewInner );
+
+ // Hoehen anpassen
+ AdjustBlockHeight();
+
+ // CellContentChanged wird von ApplySelectionPattern / ApplyPatternLines gerufen
+}
+
+void ScViewFunc::ApplyAttr( const SfxPoolItem& rAttrItem )
+{
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ if ( !SelectionEditable( &bOnlyNotBecauseOfMatrix ) && !bOnlyNotBecauseOfMatrix )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ ScPatternAttr aNewAttrs( new SfxItemSet( *GetViewData()->GetDocument()->GetPool(),
+ ATTR_PATTERN_START, ATTR_PATTERN_END ) );
+
+ aNewAttrs.GetItemSet().Put( rAttrItem );
+ // Wenn Ausrichtung eingestellt wird (ueber Buttons), immer Einzug 0
+ if ( rAttrItem.Which() == ATTR_HOR_JUSTIFY )
+ aNewAttrs.GetItemSet().Put( SfxUInt16Item( ATTR_INDENT, 0 ) );
+ ApplySelectionPattern( aNewAttrs );
+
+ AdjustBlockHeight();
+
+ // CellContentChanged wird von ApplySelectionPattern gerufen
+}
+
+
+// Pattern und Rahmen
+
+void ScViewFunc::ApplyPatternLines( const ScPatternAttr& rAttr, const SvxBoxItem* pNewOuter,
+ const SvxBoxInfoItem* pNewInner, BOOL bRecord )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+
+ if (GetViewData()->GetSimpleArea(nStartCol,nStartRow,nStartTab,nEndCol,nEndRow,nEndTab,TRUE))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+
+ ScDocShellModificator aModificator( *pDocSh );
+
+ if (!rMark.IsMarked())
+ {
+ DoneBlockMode();
+ InitOwnBlockMode();
+ rMark.SetMarkArea( ScRange( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab ) );
+ }
+
+ if (bRecord)
+ {
+ USHORT nTabCount = pDoc->GetTableCount();
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nStartTab );
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nStartTab && rMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i );
+ pDoc->CopyToDocument( nStartCol, nStartRow, 0, nEndCol, nEndRow, nTabCount-1,
+ IDF_ATTRIB, FALSE, pUndoDoc );
+
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoSelectionAttr( pDocSh, rMark,
+ nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab,
+ pUndoDoc, FALSE, &rAttr, pNewOuter, pNewInner ) );
+ }
+
+ BOOL bOldLines = pDoc->HasAttrib( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab,
+ HASATTR_PAINTEXT );
+
+ pDoc->ApplySelectionFrame( rMark, pNewOuter, pNewInner );
+
+ BOOL bNewLines = pDoc->HasAttrib( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab,
+ HASATTR_PAINTEXT );
+
+ rMark.MarkToMulti();
+ pDoc->ApplySelectionPattern( rAttr, rMark );
+
+ USHORT nExt = SC_PF_TESTMERGE;
+ if (bOldLines || bNewLines) nExt |= SC_PF_LINES;
+ pDocSh->PostPaint( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab,
+ PAINT_GRID, nExt );
+ pDocSh->UpdateOle(GetViewData());
+ aModificator.SetDocumentModified();
+ CellContentChanged();
+ rMark.MarkToSimple();
+ }
+ else
+ { // "Rahmen nicht auf Mehrfachselektion"
+ ErrorMessage(STR_MSSG_APPLYPATTLINES_0);
+ }
+
+ StartFormatArea();
+}
+
+// nur Pattern
+
+void ScViewFunc::ApplySelectionPattern( const ScPatternAttr& rAttr,
+ BOOL bRecord, BOOL bCursorOnly )
+{
+ ScViewData* pViewData = GetViewData();
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+
+ ScDocShellModificator aModificator( *pDocSh );
+
+ USHORT nStartCol;
+ USHORT nStartRow;
+ USHORT nStartTab;
+ USHORT nEndCol;
+ USHORT nEndRow;
+ USHORT nEndTab;
+
+ BOOL bMulti = rMark.IsMultiMarked();
+ rMark.MarkToMulti();
+ BOOL bOnlyTab = (!rMark.IsMultiMarked() && !bCursorOnly && rMark.GetSelectCount() > 1);
+ if (bOnlyTab)
+ {
+ USHORT nCol = pViewData->GetCurX();
+ USHORT nRow = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ ScAddress aCursor(nCol,nRow,nTab);
+ rMark.SetMarkArea(ScRange(aCursor,aCursor));
+ rMark.MarkToMulti();
+ }
+
+ if (rMark.IsMultiMarked() && !bCursorOnly)
+ {
+ if (bRecord)
+ {
+ ScRange aMarkRange;
+ rMark.GetMultiMarkArea( aMarkRange );
+ nStartCol = aMarkRange.aStart.Col();
+ nStartRow = aMarkRange.aStart.Row();
+ nStartTab = aMarkRange.aStart.Tab();
+ nEndCol = aMarkRange.aEnd.Col();
+ nEndRow = aMarkRange.aEnd.Row();
+ nEndTab = aMarkRange.aEnd.Tab();
+
+ ScRange aCopyRange = aMarkRange;
+ USHORT nTabCount = pDoc->GetTableCount();
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nStartTab, nStartTab );
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nStartTab && rMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i );
+ pDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, bMulti, pUndoDoc, &rMark );
+
+ rMark.MarkToMulti();
+
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoSelectionAttr(
+ pDocSh, rMark,
+ nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab,
+ pUndoDoc, bMulti, &rAttr ) );
+ }
+
+ pDoc->ApplySelectionPattern( rAttr, rMark );
+
+ if (bOnlyTab)
+ rMark.ResetMark();
+ else
+ rMark.MarkToSimple();
+
+ pDocSh->PostPaint( nStartCol, nStartRow, nStartTab,
+ nEndCol, nEndRow, nEndTab,
+ PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+ pDocSh->UpdateOle(GetViewData());
+ aModificator.SetDocumentModified();
+ CellContentChanged();
+ }
+ else // einzelne Zelle - Undo einfacher
+ {
+ USHORT nCol = pViewData->GetCurX();
+ USHORT nRow = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ ScPatternAttr* pOldPat = new ScPatternAttr(*pDoc->GetPattern( nCol, nRow, nTab ));
+
+ const SfxItemSet& rOldSet = pOldPat->GetItemSet();
+ BOOL bOldLines = rOldSet.GetItemState( ATTR_BORDER, TRUE ) == SFX_ITEM_SET ||
+ rOldSet.GetItemState( ATTR_SHADOW, TRUE ) == SFX_ITEM_SET;
+ const SfxItemSet& rNewSet = rAttr.GetItemSet();
+ BOOL bNewLines = rNewSet.GetItemState( ATTR_BORDER, TRUE ) == SFX_ITEM_SET ||
+ rNewSet.GetItemState( ATTR_SHADOW, TRUE ) == SFX_ITEM_SET;
+
+ pDoc->ApplyPattern( nCol, nRow, nTab, rAttr );
+
+ const ScPatternAttr* pNewPat = pDoc->GetPattern( nCol, nRow, nTab );
+
+ if (bRecord)
+ {
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoCursorAttr( pDocSh,
+ nCol, nRow, nTab,
+ pOldPat, pNewPat, &rAttr,
+ FALSE ) ); // FALSE = nicht automatisch
+ }
+ delete pOldPat; // wird im Undo kopiert (Pool)
+
+ USHORT nFlags = 0;
+ if ( bOldLines || bNewLines )
+ nFlags |= SC_PF_LINES;
+
+ pDocSh->PostPaint( nCol,nRow,nTab, nCol,nRow,nTab, PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE );
+ pDocSh->UpdateOle(GetViewData());
+ aModificator.SetDocumentModified();
+ CellContentChanged();
+ }
+
+ StartFormatArea();
+}
+
+const SfxStyleSheet* ScViewFunc::GetStyleSheetFromMarked()
+{
+ const ScStyleSheet* pSheet = NULL;
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+
+ if ( rMark.IsMarked() || rMark.IsMultiMarked() )
+ pSheet = pDoc->GetSelectionStyle( rMark ); // MarkToMulti nicht noetig !!
+ else
+ pSheet = pDoc->GetStyle( pViewData->GetCurX(),
+ pViewData->GetCurY(),
+ pViewData->GetTabNo() );
+
+ return pSheet;
+}
+
+void ScViewFunc::SetStyleSheetToMarked( SfxStyleSheet* pStyleSheet, BOOL bRecord )
+{
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ if ( !SelectionEditable( &bOnlyNotBecauseOfMatrix ) && !bOnlyNotBecauseOfMatrix )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ if ( !pStyleSheet) return;
+ // -------------------------------------------------------------------
+
+ ScViewData* pViewData = GetViewData();
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ ScMarkData& rMark = pViewData->GetMarkData();
+ USHORT nTabCount = pDoc->GetTableCount();
+
+ ScDocShellModificator aModificator( *pDocSh );
+
+ if ( rMark.IsMarked() || rMark.IsMultiMarked() )
+ {
+ ScRange aMarkRange;
+ rMark.MarkToMulti();
+ rMark.GetMultiMarkArea( aMarkRange );
+
+ if ( bRecord )
+ {
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nTab && rMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i );
+
+ ScRange aCopyRange = aMarkRange;
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+ pDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, TRUE, pUndoDoc, &rMark );
+ rMark.MarkToMulti();
+
+ String aName = pStyleSheet->GetName();
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoSelectionStyle( pDocSh, rMark, aMarkRange, aName, pUndoDoc ) );
+ }
+
+ pDoc->ApplySelectionStyle( (ScStyleSheet&)*pStyleSheet, rMark );
+
+ if (!AdjustBlockHeight())
+ pViewData->GetDocShell()->PostPaint( aMarkRange, PAINT_GRID );
+
+ rMark.MarkToSimple();
+ }
+ else
+ {
+ USHORT nCol = pViewData->GetCurX();
+ USHORT nRow = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+
+ if ( bRecord )
+ {
+ ScDocument* pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nTab && rMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i );
+
+ ScRange aCopyRange( nCol, nRow, 0, nCol, nRow, nTabCount-1 );
+ pDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, FALSE, pUndoDoc );
+
+ ScRange aMarkRange ( nCol, nRow, nTab );
+ ScMarkData aUndoMark = rMark;
+ aUndoMark.SetMultiMarkArea( aMarkRange );
+
+ String aName = pStyleSheet->GetName();
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoSelectionStyle( pDocSh, aUndoMark, aMarkRange, aName, pUndoDoc ) );
+ }
+
+ for (USHORT i=0; i<nTabCount; i++)
+ if (rMark.GetTableSelect(i))
+ pDoc->ApplyStyle( nCol, nRow, i, (ScStyleSheet&)*pStyleSheet );
+
+ if (!AdjustBlockHeight())
+ pViewData->GetDocShell()->PostPaintCell( nCol, nRow, nTab );
+
+ }
+
+ aModificator.SetDocumentModified();
+
+ StartFormatArea();
+}
+
+
+void ScViewFunc::RemoveStyleSheetInUse( SfxStyleSheet* pStyleSheet )
+{
+ if ( !pStyleSheet) return;
+ // -------------------------------------------------------------------
+
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+
+ ScDocShellModificator aModificator( *pDocSh );
+
+ VirtualDevice aVirtDev;
+ aVirtDev.SetMapMode(MAP_PIXEL);
+ pDoc->StyleSheetChanged( pStyleSheet, TRUE, &aVirtDev,
+ pViewData->GetPPTX(),
+ pViewData->GetPPTY(),
+ pViewData->GetZoomX(),
+ pViewData->GetZoomY() );
+
+ pDocSh->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_LEFT );
+ aModificator.SetDocumentModified();
+
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl();
+ if (pHdl)
+ pHdl->ForgetLastPattern();
+}
+
+void ScViewFunc::UpdateStyleSheetInUse( SfxStyleSheet* pStyleSheet )
+{
+ if ( !pStyleSheet) return;
+ // -------------------------------------------------------------------
+
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+
+ ScDocShellModificator aModificator( *pDocSh );
+
+ VirtualDevice aVirtDev;
+ aVirtDev.SetMapMode(MAP_PIXEL);
+ pDoc->StyleSheetChanged( pStyleSheet, FALSE, &aVirtDev,
+ pViewData->GetPPTX(),
+ pViewData->GetPPTY(),
+ pViewData->GetZoomX(),
+ pViewData->GetZoomY() );
+
+ pDocSh->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_LEFT );
+ aModificator.SetDocumentModified();
+
+ ScInputHandler* pHdl = SC_MOD()->GetInputHdl();
+ if (pHdl)
+ pHdl->ForgetLastPattern();
+}
+
+// Zellen einfuegen - Undo OK
+
+BOOL ScViewFunc::InsertCells( InsCellCmd eCmd, BOOL bRecord )
+{
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ BOOL bSuccess = pDocSh->GetDocFunc().InsertCells( aRange, eCmd, bRecord, FALSE );
+ if (bSuccess)
+ {
+ pDocSh->UpdateOle(GetViewData());
+ CellContentChanged();
+ }
+ return bSuccess;
+ }
+ else
+ {
+ ErrorMessage(STR_NOMULTISELECT);
+ return FALSE;
+ }
+}
+
+// Zellen loeschen - Undo OK
+
+void ScViewFunc::DeleteCells( DelCellCmd eCmd, BOOL bRecord )
+{
+ ScRange aRange;
+ if (GetViewData()->GetSimpleArea(aRange))
+ {
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ pDocSh->GetDocFunc().DeleteCells( aRange, eCmd, bRecord, FALSE );
+
+ pDocSh->UpdateOle(GetViewData());
+ CellContentChanged();
+
+ // #58106# Cursor direkt hinter den geloeschten Bereich setzen
+ USHORT nCurX = GetViewData()->GetCurX();
+ USHORT nCurY = GetViewData()->GetCurY();
+ if ( eCmd==DEL_CELLSLEFT || eCmd==DEL_DELCOLS )
+ nCurX = aRange.aStart.Col();
+ else
+ nCurY = aRange.aStart.Row();
+ SetCursor( nCurX, nCurY );
+ }
+ else
+ {
+ if (eCmd == DEL_DELCOLS)
+ DeleteMulti( FALSE, bRecord );
+ else if (eCmd == DEL_DELROWS)
+ DeleteMulti( TRUE, bRecord );
+ else
+ ErrorMessage(STR_NOMULTISELECT);
+ }
+
+ Unmark();
+}
+
+void ScViewFunc::DeleteMulti( BOOL bRows, BOOL bRecord )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocShellModificator aModificator( *pDocSh );
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT* pRanges = new USHORT[MAXROW+1];
+ USHORT nRangeCnt = bRows ? rMark.GetMarkRowRanges( pRanges ) :
+ rMark.GetMarkColumnRanges( pRanges );
+ if (!nRangeCnt)
+ {
+ pRanges[0] = pRanges[1] = bRows ? GetViewData()->GetCurY() : GetViewData()->GetCurX();
+ nRangeCnt = 1;
+ }
+
+ // Test ob erlaubt
+
+ USHORT* pOneRange = pRanges;
+ BOOL bAllowed = TRUE;
+ USHORT nRangeNo;
+ for (nRangeNo=0; nRangeNo<nRangeCnt && bAllowed; nRangeNo++)
+ {
+ USHORT nStart = *(pOneRange++);
+ USHORT nEnd = *(pOneRange++);
+
+ //! ...
+ }
+
+ // ausfuehren
+
+ WaitObject aWait( GetFrameWin() ); // wichtig wegen TrackFormulas bei UpdateReference
+
+ ScDocument* pUndoDoc = NULL;
+ ScRefUndoData* pUndoData = NULL;
+ if (bRecord)
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, !bRows, bRows ); // Zeilenhoehen
+
+ pOneRange = pRanges;
+ for (nRangeNo=0; nRangeNo<nRangeCnt; nRangeNo++)
+ {
+ USHORT nStart = *(pOneRange++);
+ USHORT nEnd = *(pOneRange++);
+ if (bRows)
+ pDoc->CopyToDocument( 0,nStart,nTab, MAXCOL,nEnd,nTab, IDF_ALL,FALSE,pUndoDoc );
+ else
+ pDoc->CopyToDocument( nStart,0,nTab, nEnd,MAXROW,nTab, IDF_ALL,FALSE,pUndoDoc );
+ }
+
+ // alle Formeln wegen Referenzen
+ USHORT nTabCount = pDoc->GetTableCount();
+ pUndoDoc->AddUndoTab( 0, nTabCount-1, FALSE, FALSE );
+ pDoc->CopyToDocument( 0,0,0, MAXCOL,MAXROW,MAXTAB, IDF_FORMULA,FALSE,pUndoDoc );
+
+ pUndoData = new ScRefUndoData( pDoc );
+
+ pDoc->BeginDrawUndo();
+ }
+
+ pOneRange = &pRanges[2*nRangeCnt]; // rueckwaerts
+ for (nRangeNo=0; nRangeNo<nRangeCnt && bAllowed; nRangeNo++)
+ {
+ USHORT nEnd = *(--pOneRange);
+ USHORT nStart = *(--pOneRange);
+
+ if (bRows)
+ pDoc->DeleteRow( 0,nTab, MAXCOL,nTab, nStart, nEnd-nStart+1 );
+ else
+ pDoc->DeleteCol( 0,nTab, MAXROW,nTab, nStart, nEnd-nStart+1 );
+ }
+
+ if (bRecord)
+ {
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoDeleteMulti( pDocSh, bRows, nTab, pRanges, nRangeCnt,
+ pUndoDoc, pUndoData ) );
+ }
+
+ if (!AdjustRowHeight(0, MAXROW))
+ if (bRows)
+ pDocSh->PostPaint( 0,pRanges[0],nTab, MAXCOL,MAXROW,nTab, PAINT_GRID | PAINT_LEFT );
+ else
+ pDocSh->PostPaint( pRanges[0],0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID | PAINT_TOP );
+ aModificator.SetDocumentModified();
+
+ CellContentChanged();
+
+ // #58106# Cursor direkt hinter den ersten geloeschten Bereich setzen
+ USHORT nCurX = GetViewData()->GetCurX();
+ USHORT nCurY = GetViewData()->GetCurY();
+ if ( bRows )
+ nCurY = pRanges[0];
+ else
+ nCurX = pRanges[0];
+ SetCursor( nCurX, nCurY );
+
+ delete[] pRanges;
+}
+
+// Inhalte loeschen
+
+void ScViewFunc::DeleteContents( USHORT nFlags, BOOL bRecord )
+{
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ BOOL bEditable = SelectionEditable( &bOnlyNotBecauseOfMatrix );
+ if ( !bEditable )
+ {
+ if ( !(bOnlyNotBecauseOfMatrix &&
+ ((nFlags & (IDF_ATTRIB | IDF_EDITATTR)) == nFlags)) )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+ }
+
+ ScRange aMarkRange;
+ BOOL bSimple = FALSE;
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ ScDocShellModificator aModificator( *pDocSh );
+
+ if ( !rMark.IsMarked() && !rMark.IsMultiMarked() )
+ {
+ aMarkRange.aStart.SetCol(GetViewData()->GetCurX());
+ aMarkRange.aStart.SetRow(GetViewData()->GetCurY());
+ aMarkRange.aStart.SetTab(GetViewData()->GetTabNo());
+ aMarkRange.aEnd = aMarkRange.aStart;
+ if ( pDoc->HasAttrib( aMarkRange, HASATTR_MERGED ) )
+ {
+ InitOwnBlockMode();
+ rMark.SetMarkArea( aMarkRange );
+ }
+ else
+ bSimple = TRUE;
+ }
+
+ rMark.SetMarking(FALSE); // fuer MarkToMulti
+
+ DBG_ASSERT( rMark.IsMarked() || rMark.IsMultiMarked() || bSimple, "was denn loeschen ???" )
+
+ ScDocument* pUndoDoc = NULL;
+ BOOL bMulti = !bSimple && rMark.IsMultiMarked();
+ if (!bSimple)
+ {
+ rMark.MarkToMulti();
+ rMark.GetMultiMarkArea( aMarkRange );
+ }
+ ScRange aExtendedRange(aMarkRange);
+ if (!bSimple)
+ {
+ if ( pDoc->ExtendMerge( aExtendedRange, TRUE ) )
+ bMulti = FALSE;
+ }
+
+ // keine Objekte auf geschuetzten Tabellen
+ BOOL bObjects = FALSE;
+ if ( nFlags & IDF_OBJECTS )
+ {
+ bObjects = TRUE;
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT nTab=0; nTab<nTabCount; nTab++)
+ if (rMark.GetTableSelect(nTab) && pDoc->IsTabProtected(nTab))
+ bObjects = FALSE;
+ }
+
+ USHORT nExtFlags = 0; // Linien interessieren nur, wenn Attribute
+ if ( nFlags & IDF_ATTRIB ) // geloescht werden
+ if (pDoc->HasAttrib( aMarkRange, HASATTR_PAINTEXT ))
+ nExtFlags |= SC_PF_LINES;
+
+ // Reihenfolge:
+ // 1) BeginDrawUndo
+ // 2) Objekte loeschen (DrawUndo wird gefuellt)
+ // 3) Inhalte fuer Undo kopieren
+ // 4) Inhalte loeschen
+ // 5) Undo-Aktion anlegen
+
+ if (bObjects)
+ {
+ if (bRecord)
+ pDoc->BeginDrawUndo();
+
+ if (bMulti)
+ pDoc->DeleteObjectsInSelection( rMark );
+ else
+ pDoc->DeleteObjectsInArea( aMarkRange.aStart.Col(), aMarkRange.aStart.Row(),
+/*!*/ aMarkRange.aEnd.Col(), aMarkRange.aEnd.Row(),
+ rMark );
+ }
+
+ if ( bRecord )
+ {
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ USHORT nTab = aMarkRange.aStart.Tab();
+ pUndoDoc->InitUndo( pDoc, nTab, nTab );
+ USHORT nTabCount = pDoc->GetTableCount();
+ for (USHORT i=0; i<nTabCount; i++)
+ if (i != nTab && rMark.GetTableSelect(i))
+ pUndoDoc->AddUndoTab( i, i );
+ ScRange aCopyRange = aExtendedRange;
+ aCopyRange.aStart.SetTab(0);
+ aCopyRange.aEnd.SetTab(nTabCount-1);
+
+ // bei "Format/Standard" alle Attribute kopieren, weil CopyToDocument
+ // nur mit IDF_HARDATTR zu langsam ist:
+ USHORT nUndoDocFlags = nFlags;
+ if (nFlags & IDF_ATTRIB)
+ nUndoDocFlags |= IDF_ATTRIB;
+ if (nFlags & IDF_EDITATTR) // Edit-Engine-Attribute
+ nUndoDocFlags |= IDF_STRING; // -> Zellen werden geaendert
+ if (nFlags & IDF_NOTE)
+ nUndoDocFlags |= IDF_CONTENTS; // #68795# copy all cells with their notes
+ pDoc->CopyToDocument( aCopyRange, nUndoDocFlags, bMulti, pUndoDoc, &rMark );
+ }
+
+ HideAllCursors(); // falls Zusammenfassung aufgehoben wird
+ if (bSimple)
+ pDoc->DeleteArea( aMarkRange.aStart.Col(), aMarkRange.aStart.Row(),
+ aMarkRange.aEnd.Col(), aMarkRange.aEnd.Row(),
+ rMark, nFlags );
+ else
+ {
+ pDoc->DeleteSelection( nFlags, rMark );
+ rMark.MarkToSimple();
+ }
+
+ if ( bRecord )
+ {
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoDeleteContents( pDocSh, rMark, aExtendedRange,
+ pUndoDoc, bMulti, nFlags, bObjects ) );
+ }
+
+ if (!AdjustRowHeight( aExtendedRange.aStart.Row(), aExtendedRange.aEnd.Row() ))
+ pDocSh->PostPaint( aExtendedRange, PAINT_GRID, nExtFlags );
+
+ pDocSh->UpdateOle(GetViewData());
+ aModificator.SetDocumentModified();
+ CellContentChanged();
+ ShowAllCursors();
+
+ if ( nFlags & IDF_ATTRIB )
+ {
+ if ( nFlags & IDF_CONTENTS )
+ ForgetFormatArea();
+ else
+ StartFormatArea(); // Attribute loeschen ist auch Attributierung
+ }
+}
+
+// Spaltenbreiten/Zeilenhoehen (ueber Header) - Undo OK
+
+void ScViewFunc::SetWidthOrHeight( BOOL bWidth, USHORT nRangeCnt, USHORT* pRanges,
+ ScSizeMode eMode, USHORT nSizeTwips, BOOL bRecord, BOOL bPaint )
+{
+ if (!nRangeCnt)
+ return;
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ ScDocShellModificator aModificator( *pDocSh );
+
+ BOOL bAllowed = TRUE;
+ for ( USHORT i=0; i<nRangeCnt && bAllowed; i++ )
+ {
+ BOOL bOnlyMatrix;
+ if (bWidth)
+ bAllowed = pDoc->IsBlockEditable( nTab,
+ pRanges[2*i],0, pRanges[2*i+1],MAXROW, &bOnlyMatrix ) || bOnlyMatrix;
+ else
+ bAllowed = pDoc->IsBlockEditable( nTab,
+ 0,pRanges[2*i], MAXCOL,pRanges[2*i+1], &bOnlyMatrix ) || bOnlyMatrix;
+ }
+ if ( !bAllowed )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ USHORT nStart = pRanges[0];
+ USHORT nEnd = pRanges[2*nRangeCnt-1];
+
+ BOOL bFormula = FALSE;
+ if ( eMode == SC_SIZE_OPTIMAL )
+ {
+ const ScViewOptions& rOpts = GetViewData()->GetOptions();
+ bFormula = rOpts.GetOption( VOPT_FORMULAS );
+ }
+
+ ScDocument* pUndoDoc = NULL;
+ ScOutlineTable* pUndoTab = NULL;
+ USHORT* pUndoRanges = NULL;
+
+ if ( bRecord )
+ {
+ pDoc->BeginDrawUndo(); // Drawing Updates
+
+ pUndoDoc = new ScDocument( SCDOCMODE_UNDO );
+ if (bWidth)
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, TRUE, FALSE );
+ pDoc->CopyToDocument( nStart, 0, nTab, nEnd, MAXROW, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+ else
+ {
+ pUndoDoc->InitUndo( pDoc, nTab, nTab, FALSE, TRUE );
+ pDoc->CopyToDocument( 0, nStart, nTab, MAXCOL, nEnd, nTab, IDF_NONE, FALSE, pUndoDoc );
+ }
+
+ pUndoRanges = new USHORT[ 2*nRangeCnt ];
+ memmove( pUndoRanges, pRanges, 2*nRangeCnt*sizeof(USHORT) );
+
+ ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab );
+ if (pTable)
+ pUndoTab = new ScOutlineTable( *pTable );
+ }
+
+ if ( eMode==SC_SIZE_OPTIMAL || eMode==SC_SIZE_VISOPT )
+ rMark.MarkToMulti();
+
+ BOOL bShow = nSizeTwips > 0 || eMode != SC_SIZE_DIRECT;
+ BOOL bOutline = FALSE;
+
+ pDoc->IncSizeRecalcLevel( nTab ); // nicht fuer jede Spalte einzeln
+ for (USHORT nRangeNo=0; nRangeNo<nRangeCnt; nRangeNo++)
+ {
+ USHORT nStartNo = *(pRanges++);
+ USHORT nEndNo = *(pRanges++);
+
+ if ( !bWidth ) // Hoehen immer blockweise
+ {
+ if ( eMode==SC_SIZE_OPTIMAL || eMode==SC_SIZE_VISOPT )
+ {
+ BOOL bAll = ( eMode==SC_SIZE_OPTIMAL );
+ if (!bAll)
+ {
+ // fuer alle eingeblendeten CR_MANUALSIZE loeschen,
+ // dann SetOptimalHeight mit bShrink = FALSE
+ for (USHORT nRow=nStartNo; nRow<=nEndNo; nRow++)
+ {
+ BYTE nOld = pDoc->GetRowFlags(nRow,nTab);
+ if ( (nOld & CR_HIDDEN) == 0 && ( nOld & CR_MANUALSIZE ) )
+ pDoc->SetRowFlags( nRow, nTab, nOld & ~CR_MANUALSIZE );
+ }
+ }
+ VirtualDevice aVirtDev;
+ pDoc->SetOptimalHeight( nStartNo, nEndNo, nTab, nSizeTwips, &aVirtDev,
+ GetViewData()->GetPPTX(),
+ GetViewData()->GetPPTY(),
+ GetViewData()->GetZoomX(),
+ GetViewData()->GetZoomY(), bAll );
+ if (bAll)
+ pDoc->ShowRows( nStartNo, nEndNo, nTab, TRUE );
+
+ // Manual-Flag wird bei bAll=TRUE schon in SetOptimalHeight gesetzt
+ // (an bei Extra-Height, sonst aus).
+ }
+ else if ( eMode==SC_SIZE_DIRECT )
+ {
+ if (nSizeTwips)
+ pDoc->SetRowHeightRange( nStartNo, nEndNo, nTab, nSizeTwips );
+ pDoc->ShowRows( nStartNo, nEndNo, nTab, nSizeTwips != 0 );
+ pDoc->SetManualHeight( nStartNo, nEndNo, nTab, TRUE ); // Manual-Flag
+ }
+ else if ( eMode==SC_SIZE_SHOW )
+ {
+ pDoc->ShowRows( nStartNo, nEndNo, nTab, TRUE );
+ }
+ }
+ else // Spaltenbreiten
+ {
+ for (USHORT nCol=nStartNo; nCol<=nEndNo; nCol++)
+ {
+ if ( eMode != SC_SIZE_VISOPT ||
+ (pDoc->GetColFlags( nCol, nTab ) & CR_HIDDEN) == 0 )
+ {
+ USHORT nThisSize = nSizeTwips;
+
+ if ( eMode==SC_SIZE_OPTIMAL || eMode==SC_SIZE_VISOPT )
+ nThisSize = nSizeTwips + GetOptimalColWidth( nCol, nTab, bFormula );
+ if ( nThisSize )
+ pDoc->SetColWidth( nCol, nTab, nThisSize );
+
+ pDoc->ShowCol( nCol, nTab, bShow );
+ }
+ }
+ }
+
+ // Outline anpassen
+
+ if (bWidth)
+ bOutline = bOutline || pDoc->UpdateOutlineCol( nStartNo, nEndNo, nTab, bShow );
+ else
+ bOutline = bOutline || pDoc->UpdateOutlineRow( nStartNo, nEndNo, nTab, bShow );
+ }
+ pDoc->DecSizeRecalcLevel( nTab ); // nicht fuer jede Spalte einzeln
+
+ if (!bOutline)
+ DELETEZ(pUndoTab);
+
+ if (bRecord)
+ {
+ pDocSh->GetUndoManager()->AddUndoAction(
+ new ScUndoWidthOrHeight( pDocSh, rMark,
+ nStart, nTab, nEnd, nTab,
+ pUndoDoc, nRangeCnt, pUndoRanges,
+ pUndoTab, eMode, nSizeTwips, bWidth ) );
+ }
+
+ pDoc->UpdatePageBreaks( nTab );
+ GetViewData()->GetView()->UpdateScrollBars();
+
+ if (bPaint)
+ {
+ HideCursor();
+
+ if (bWidth)
+ {
+ if (pDoc->HasAttrib( nStart,0,nTab, nEnd,MAXROW,nTab, HASATTR_MERGED | HASATTR_OVERLAPPED ))
+ nStart = 0;
+ if (nStart) // weiter oben anfangen wegen Linien und Cursor
+ --nStart;
+ pDocSh->PostPaint( nStart, 0, nTab, MAXCOL, MAXROW, nTab, PAINT_GRID | PAINT_TOP );
+ }
+ else
+ {
+ if (pDoc->HasAttrib( 0,nStart,nTab, MAXCOL,nEnd,nTab, HASATTR_MERGED | HASATTR_OVERLAPPED ))
+ nStart = 0;
+ if (nStart)
+ --nStart;
+ pDocSh->PostPaint( 0, nStart, nTab, MAXCOL, MAXROW, nTab, PAINT_GRID | PAINT_LEFT );
+ }
+ pDocSh->UpdateOle(GetViewData());
+ aModificator.SetDocumentModified();
+
+ ShowCursor();
+ }
+}
+
+// Spaltenbreiten/Zeilenhoehen (ueber Blockmarken)
+
+void ScViewFunc::SetMarkedWidthOrHeight( BOOL bWidth, ScSizeMode eMode, USHORT nSizeTwips,
+ BOOL bRecord, BOOL bPaint )
+{
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+
+ rMark.MarkToMulti();
+ if (!rMark.IsMultiMarked())
+ {
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ DoneBlockMode();
+ InitOwnBlockMode();
+ rMark.SetMultiMarkArea( ScRange( nCol,nRow,nTab ), TRUE );
+ }
+
+ USHORT* pRanges = new USHORT[MAXROW+1];
+ USHORT nRangeCnt = 0;
+
+ if ( bWidth )
+ nRangeCnt = rMark.GetMarkColumnRanges( pRanges );
+ else
+ nRangeCnt = rMark.GetMarkRowRanges( pRanges );
+
+ SetWidthOrHeight( bWidth, nRangeCnt, pRanges, eMode, nSizeTwips, bRecord, bPaint );
+
+ delete[] pRanges;
+ rMark.MarkToSimple();
+}
+
+void ScViewFunc::ModifyCellSize( ScDirection eDir, BOOL bOptimal )
+{
+ //! Schrittweiten einstellbar
+ // Schrittweite ist auch Minimum
+ USHORT nStepX = STD_COL_WIDTH / 5;
+ USHORT nStepY = ScGlobal::nStdRowHeight;
+
+ ScModule* pScMod = SC_MOD();
+ BOOL bAnyEdit = pScMod->IsInputMode();
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScDocument* pDoc = GetViewData()->GetDocument();
+
+ BOOL bAllowed, bOnlyMatrix;
+ if ( eDir == DIR_LEFT || eDir == DIR_RIGHT )
+ bAllowed = pDoc->IsBlockEditable( nTab, nCol,0, nCol,MAXROW, &bOnlyMatrix );
+ else
+ bAllowed = pDoc->IsBlockEditable( nTab, 0,nRow, MAXCOL,nRow, &bOnlyMatrix );
+ if ( !bAllowed && !bOnlyMatrix )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ HideAllCursors();
+
+ USHORT nWidth = pDoc->GetColWidth( nCol, nTab );
+ USHORT nHeight = pDoc->GetRowHeight( nRow, nTab );
+ USHORT nRange[2];
+ if ( eDir == DIR_LEFT || eDir == DIR_RIGHT )
+ {
+ if (bOptimal) // Breite dieser einen Zelle
+ {
+ if ( bAnyEdit )
+ {
+ // beim Editieren die aktuelle Breite der Eingabe
+ ScInputHandler* pHdl = pScMod->GetInputHdl( GetViewData()->GetViewShell() );
+ if (pHdl)
+ {
+ long nEdit = pHdl->GetTextSize().Width(); // in 1/100mm
+
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nCol, nRow, nTab );
+ const SvxMarginItem& rMItem =
+ (const SvxMarginItem&)pPattern->GetItem(ATTR_MARGIN);
+ USHORT nMargin = rMItem.GetLeftMargin() + rMItem.GetRightMargin();
+ if ( ((const SvxHorJustifyItem&) pPattern->
+ GetItem( ATTR_HOR_JUSTIFY )).GetValue() == SVX_HOR_JUSTIFY_LEFT )
+ nMargin += ((const SfxUInt16Item&)pPattern->GetItem(ATTR_INDENT)).GetValue();
+
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ nWidth = (USHORT)(nEdit * pDocSh->GetOutputFactor() / HMM_PER_TWIPS)
+ + nMargin + STD_EXTRA_WIDTH;
+ }
+ }
+ else
+ {
+ VirtualDevice aVirtDev;
+ aVirtDev.SetMapMode(MAP_PIXEL);
+ long nPixel = pDoc->GetNeededSize( nCol, nRow, nTab, &aVirtDev,
+ GetViewData()->GetPPTX(), GetViewData()->GetPPTY(),
+ GetViewData()->GetZoomX(), GetViewData()->GetZoomY(),
+ TRUE );
+ USHORT nTwips = (USHORT)( nPixel / GetViewData()->GetPPTX() );
+ if (nTwips != 0)
+ nWidth = nTwips + STD_EXTRA_WIDTH;
+ else
+ nWidth = STD_COL_WIDTH;
+ }
+ }
+ else // vergroessern / verkleinern
+ {
+ if ( eDir == DIR_RIGHT )
+ nWidth += nStepX;
+ else if ( nWidth > nStepX )
+ nWidth -= nStepX;
+ if ( nWidth < nStepX ) nWidth = nStepX;
+ if ( nWidth > MAX_COL_WIDTH ) nWidth = MAX_COL_WIDTH;
+ }
+ nRange[0] = nRange[1] = nCol;
+ SetWidthOrHeight( TRUE, 1, nRange, SC_SIZE_DIRECT, nWidth );
+
+ // hier bei Breite auch Hoehe anpassen (nur die eine Zeile)
+
+ if (!bAnyEdit)
+ {
+ const ScPatternAttr* pPattern = pDoc->GetPattern( nCol, nRow, nTab );
+ BOOL bNeedHeight =
+ ((const SfxBoolItem&)pPattern->GetItem( ATTR_LINEBREAK )).GetValue() ||
+ ((const SvxHorJustifyItem&)pPattern->
+ GetItem( ATTR_HOR_JUSTIFY )).GetValue() == SVX_HOR_JUSTIFY_BLOCK;
+ if (bNeedHeight)
+ AdjustRowHeight( nRow, nRow );
+ }
+ }
+ else
+ {
+ ScSizeMode eMode;
+ if (bOptimal)
+ {
+ eMode = SC_SIZE_OPTIMAL;
+ nHeight = 0;
+ }
+ else
+ {
+ eMode = SC_SIZE_DIRECT;
+ if ( eDir == DIR_BOTTOM )
+ nHeight += nStepY;
+ else if ( nHeight > nStepY )
+ nHeight -= nStepY;
+ if ( nHeight < nStepY ) nHeight = nStepY;
+ if ( nHeight > MAX_COL_HEIGHT ) nHeight = MAX_COL_HEIGHT;
+ //! MAX_COL_HEIGHT umbenennen in MAX_ROW_HEIGHT in global.hxx !!!!!!
+ }
+ nRange[0] = nRange[1] = nRow;
+ SetWidthOrHeight( FALSE, 1, nRange, eMode, nHeight );
+ }
+
+ if ( bAnyEdit )
+ {
+ UpdateEditView();
+ if ( pDoc->HasAttrib( nCol, nRow, nTab, nCol, nRow, nTab, HASATTR_NEEDHEIGHT ) )
+ {
+ ScInputHandler* pHdl = pScMod->GetInputHdl( GetViewData()->GetViewShell() );
+ if (pHdl)
+ pHdl->SetModified(); // damit bei Enter die Hoehe angepasst wird
+ }
+ }
+
+ ShowAllCursors();
+}
+
+void ScViewFunc::Protect( USHORT nTab, const String& rPassword )
+{
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocFunc aFunc(*pDocSh);
+
+ if ( nTab == TABLEID_DOC || rMark.GetSelectCount() <= 1 )
+ aFunc.Protect( nTab, rPassword, FALSE );
+ else
+ {
+ // modifying several tables is handled here
+
+ String aUndo = ScGlobal::GetRscString( STR_UNDO_PROTECT_TAB );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo );
+
+ USHORT nCount = pDocSh->GetDocument()->GetTableCount();
+ for ( USHORT i=0; i<nCount; i++ )
+ if ( rMark.GetTableSelect(i) )
+ aFunc.Protect( i, rPassword, FALSE );
+
+ pDocSh->GetUndoManager()->LeaveListAction();
+ }
+
+ UpdateLayerLocks(); //! broadcast to all views
+}
+
+BOOL ScViewFunc::Unprotect( USHORT nTab, const String& rPassword )
+{
+ ScMarkData& rMark = GetViewData()->GetMarkData();
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocFunc aFunc(*pDocSh);
+ BOOL bChanged = FALSE;
+
+ if ( nTab == TABLEID_DOC || rMark.GetSelectCount() <= 1 )
+ bChanged = aFunc.Unprotect( nTab, rPassword, FALSE );
+ else
+ {
+ // modifying several tables is handled here
+
+ String aUndo = ScGlobal::GetRscString( STR_UNDO_UNPROTECT_TAB );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo );
+
+ USHORT nCount = pDocSh->GetDocument()->GetTableCount();
+ for ( USHORT i=0; i<nCount; i++ )
+ if ( rMark.GetTableSelect(i) )
+ if ( aFunc.Unprotect( i, rPassword, FALSE ) )
+ bChanged = TRUE;
+
+ pDocSh->GetUndoManager()->LeaveListAction();
+ }
+
+ if (bChanged)
+ UpdateLayerLocks(); //! broadcast to all views
+
+ return bChanged;
+}
+
+void ScViewFunc::SetNote( USHORT nCol, USHORT nRow, USHORT nTab, const ScPostIt& rNote )
+{
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ pDocSh->GetDocFunc().SetNote( ScAddress(nCol,nRow,nTab), rNote, FALSE );
+}
+
+void ScViewFunc::SetNumberFormat( short nFormatType, ULONG nAdd )
+{
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ if ( !SelectionEditable( &bOnlyNotBecauseOfMatrix ) && !bOnlyNotBecauseOfMatrix )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ ULONG nNumberFormat = 0;
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ SvNumberFormatter* pNumberFormatter = pDoc->GetFormatTable();
+ LanguageType eLanguage = ScGlobal::eLnge;
+ ScPatternAttr aNewAttrs( pDoc->GetPool() );
+
+ // #67936# always take language from cursor position, even if there is a selection
+
+ ULONG nCurrentNumberFormat;
+ pDoc->GetNumberFormat( pViewData->GetCurX(),
+ pViewData->GetCurY(),
+ pViewData->GetTabNo(),
+ nCurrentNumberFormat );
+ const SvNumberformat* pEntry = pNumberFormatter->GetEntry( nCurrentNumberFormat );
+ if (pEntry)
+ eLanguage = pEntry->GetLanguage(); // sonst ScGlobal::eLnge behalten
+
+ nNumberFormat = pNumberFormatter->GetStandardFormat( nFormatType, eLanguage ) + nAdd;
+
+ SfxItemSet& rSet = aNewAttrs.GetItemSet();
+ rSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, nNumberFormat ) );
+ // ATTR_LANGUAGE_FORMAT nicht
+ ApplySelectionPattern( aNewAttrs, TRUE );
+}
+
+void ScViewFunc::SetNumFmtByStr( const String& rCode )
+{
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ if ( !SelectionEditable( &bOnlyNotBecauseOfMatrix ) && !bOnlyNotBecauseOfMatrix )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ ScViewData* pViewData = GetViewData();
+ ScDocument* pDoc = pViewData->GetDocument();
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+
+ // Sprache immer von Cursorposition
+
+ ULONG nCurrentNumberFormat;
+ pDoc->GetNumberFormat( pViewData->GetCurX(), pViewData->GetCurY(),
+ pViewData->GetTabNo(), nCurrentNumberFormat );
+ const SvNumberformat* pEntry = pFormatter->GetEntry( nCurrentNumberFormat );
+ LanguageType eLanguage = pEntry ? pEntry->GetLanguage() : ScGlobal::eLnge;
+
+ // Index fuer String bestimmen
+
+ BOOL bOk = TRUE;
+ ULONG nNumberFormat = pFormatter->GetEntryKey( rCode, eLanguage );
+ if ( nNumberFormat == NUMBERFORMAT_ENTRY_NOT_FOUND )
+ {
+ // neu eintragen
+
+ String aFormat = rCode; // wird veraendert
+ xub_StrLen nErrPos = 0;
+ short nType = 0; //! ???
+ bOk = pFormatter->PutEntry( aFormat, nErrPos, nType, nNumberFormat, eLanguage );
+ }
+
+ if ( bOk ) // gueltiges Format?
+ {
+ ScPatternAttr aNewAttrs( pDoc->GetPool() );
+ SfxItemSet& rSet = aNewAttrs.GetItemSet();
+ rSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, nNumberFormat ) );
+ rSet.Put( SvxLanguageItem( eLanguage, ATTR_LANGUAGE_FORMAT ) );
+ ApplySelectionPattern( aNewAttrs, TRUE );
+ }
+
+ //! sonst Fehler zuerueckgeben / Meldung ausgeben ???
+}
+
+void ScViewFunc::ChangeNumFmtDecimals( BOOL bIncrement )
+{
+ // nur wegen Matrix nicht editierbar? Attribute trotzdem ok
+ BOOL bOnlyNotBecauseOfMatrix;
+ if ( !SelectionEditable( &bOnlyNotBecauseOfMatrix ) && !bOnlyNotBecauseOfMatrix )
+ {
+ ErrorMessage(STR_PROTECTIONERR);
+ return;
+ }
+
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+
+ USHORT nCol = GetViewData()->GetCurX();
+ USHORT nRow = GetViewData()->GetCurY();
+ USHORT nTab = GetViewData()->GetTabNo();
+
+ ULONG nOldFormat;
+ pDoc->GetNumberFormat( nCol, nRow, nTab, nOldFormat );
+ const SvNumberformat* pOldEntry = pFormatter->GetEntry( nOldFormat );
+ if (!pOldEntry)
+ {
+ DBG_ERROR("Zahlformat nicht gefunden !!!");
+ return;
+ }
+
+ // was haben wir denn da?
+
+ ULONG nNewFormat = nOldFormat;
+ BOOL bError = FALSE;
+
+ LanguageType eLanguage = pOldEntry->GetLanguage();
+ BOOL bThousand, bNegRed;
+ USHORT nPrecision, nLeading;
+ // GetFormatSpecialInfo ist nicht-const
+ ((SvNumberformat*)pOldEntry)->GetFormatSpecialInfo(
+ bThousand, bNegRed, nPrecision, nLeading );
+
+ short nOldType = pOldEntry->GetType();
+ if ( 0 == ( nOldType & (
+ NUMBERFORMAT_NUMBER | NUMBERFORMAT_CURRENCY | NUMBERFORMAT_PERCENT ) ) )
+ {
+ // Datum, Zeit, Bruch, logisch, Text kann nicht angepasst werden
+ //! bei Wisssenschaftlich kann es der Numberformatter auch nicht
+ bError = TRUE;
+ }
+
+ //! Das SvNumberformat hat einen Member bStandard, verraet ihn aber nicht
+ BOOL bWasStandard = ( nOldFormat == pFormatter->GetStandardIndex( eLanguage ) );
+ if (bWasStandard)
+ {
+ // bei "Standard" die Nachkommastellen abhaengig vom Zellinhalt
+ // 0 bei leer oder Text -> keine Nachkommastellen
+ double nVal = pDoc->GetValue( ScAddress( nCol, nRow, nTab ) );
+
+ // Die Wege des Numberformatters sind unergruendlich, darum ausprobieren:
+ String aOut;
+ Color* pCol;
+ ((SvNumberformat*)pOldEntry)->GetOutputString( nVal, aOut, &pCol );
+
+ nPrecision = 0;
+ // 'E' fuer Exponential ist fest im Numberformatter
+ if ( aOut.Search('E') != STRING_NOTFOUND )
+ bError = TRUE; // Exponential nicht veraendern
+ else
+ {
+ sal_Unicode cDecSep;
+ if ( eLanguage == ScGlobal::pScInternational->GetLanguage() )
+ cDecSep = ScGlobal::pScInternational->GetNumDecimalSep();
+ else
+ cDecSep = International(eLanguage).GetNumDecimalSep();
+ xub_StrLen nPos = aOut.Search( cDecSep );
+ if ( nPos != STRING_NOTFOUND )
+ nPrecision = aOut.Len() - nPos - 1;
+ // sonst 0 behalten
+ }
+ }
+
+ if (!bError)
+ {
+ if (bIncrement)
+ {
+ if (nPrecision<20)
+ ++nPrecision; // erhoehen
+ else
+ bError = TRUE; // 20 ist Maximum
+ }
+ else
+ {
+ if (nPrecision)
+ --nPrecision; // vermindern
+ else
+ bError = TRUE; // weniger als 0 geht nicht
+ }
+ }
+
+ if (!bError)
+ {
+ String aNewPicture;
+ pFormatter->GenerateFormat( aNewPicture, nOldFormat, eLanguage,
+ bThousand, bNegRed, nPrecision, nLeading );
+
+ nNewFormat = pFormatter->GetEntryKey( aNewPicture, eLanguage );
+ if ( nNewFormat == NUMBERFORMAT_ENTRY_NOT_FOUND )
+ {
+ xub_StrLen nErrPos = 0;
+ short nNewType = 0;
+ BOOL bOk = pFormatter->PutEntry( aNewPicture, nErrPos,
+ nNewType, nNewFormat, eLanguage );
+ DBG_ASSERT( bOk, "falsches Zahlformat generiert" );
+ if (!bOk)
+ bError = TRUE;
+ }
+ }
+
+ if (!bError)
+ {
+ ScPatternAttr aNewAttrs( pDoc->GetPool() );
+ SfxItemSet& rSet = aNewAttrs.GetItemSet();
+ rSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, nNewFormat ) );
+ // ATTR_LANGUAGE_FORMAT nicht
+ ApplySelectionPattern( aNewAttrs, TRUE );
+ }
+ else
+ Sound::Beep(); // war nix
+}
+
+void ScViewFunc::ChangeIndent( BOOL bIncrement )
+{
+ ScViewData* pViewData = GetViewData();
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ ScMarkData& rMark = pViewData->GetMarkData();
+
+ ScMarkData aWorkMark = rMark;
+ aWorkMark.MarkToMulti();
+ if (!aWorkMark.IsMultiMarked())
+ {
+ USHORT nCol = pViewData->GetCurX();
+ USHORT nRow = pViewData->GetCurY();
+ USHORT nTab = pViewData->GetTabNo();
+ aWorkMark.SetMultiMarkArea( ScRange(nCol,nRow,nTab) );
+ }
+
+ BOOL bSuccess = pDocSh->GetDocFunc().ChangeIndent( aWorkMark, bIncrement, FALSE );
+ if (bSuccess)
+ {
+ pDocSh->UpdateOle(pViewData);
+ StartFormatArea();
+ }
+}
+
+BOOL ScViewFunc::InsertName( const String& rName, const String& rSymbol,
+ const String& rType )
+{
+ // Type = P,R,C,F (und Kombinationen)
+ //! Undo...
+
+ BOOL bOk = FALSE;
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ ScDocument* pDoc = pDocSh->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ ScRangeName* pList = pDoc->GetRangeName();
+
+ RangeType nType = RT_NAME;
+ ScRangeData* pNewEntry = new ScRangeData( pDoc, rName, rSymbol,
+ GetViewData()->GetCurX(), GetViewData()->GetCurY(), nTab,
+ nType );
+ String aUpType = rType;
+ aUpType.ToUpperAscii();
+ if ( aUpType.Search( 'P' ) != STRING_NOTFOUND )
+ nType |= RT_PRINTAREA;
+ if ( aUpType.Search( 'R' ) != STRING_NOTFOUND )
+ nType |= RT_ROWHEADER;
+ if ( aUpType.Search( 'C' ) != STRING_NOTFOUND )
+ nType |= RT_COLHEADER;
+ if ( aUpType.Search( 'F' ) != STRING_NOTFOUND )
+ nType |= RT_CRITERIA;
+ pNewEntry->AddType(nType);
+
+ if ( !pNewEntry->GetErrCode() ) // Text gueltig?
+ {
+ ScDocShellModificator aModificator( *pDocSh );
+
+ pDoc->CompileNameFormula( TRUE ); // CreateFormulaString
+
+ // Eintrag bereits vorhanden? Dann vorher entfernen (=Aendern)
+ USHORT nFoundAt;
+ if ( pList->SearchName( rName, nFoundAt ) )
+ { // alten Index uebernehmen
+ pNewEntry->SetIndex( ((ScRangeData*)pList->At(nFoundAt))->GetIndex() );
+ pList->AtFree( nFoundAt );
+ }
+
+ if ( pList->Insert( pNewEntry ) )
+ {
+ pNewEntry = NULL; // nicht loeschen
+ bOk = TRUE;
+ }
+
+ pDoc->CompileNameFormula( FALSE ); // CompileFormulaString
+ aModificator.SetDocumentModified();
+ SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREAS_CHANGED ) );
+ }
+
+ delete pNewEntry; // wenn er nicht eingefuegt wurde
+ return bOk;
+}
+
+void ScViewFunc::CreateNames( USHORT nFlags )
+{
+ BOOL bDone = FALSE;
+ ScRange aRange;
+ if ( GetViewData()->GetSimpleArea(aRange) )
+ bDone = GetViewData()->GetDocShell()->GetDocFunc().CreateNames( aRange, nFlags, FALSE );
+
+ if (!bDone)
+ ErrorMessage(STR_CREATENAME_MARKERR);
+}
+
+USHORT ScViewFunc::GetCreateNameFlags()
+{
+ USHORT nFlags = 0;
+
+ USHORT nStartCol,nStartRow,nEndCol,nEndRow;
+ USHORT nDummy;
+ if (GetViewData()->GetSimpleArea(nStartCol,nStartRow,nDummy,nEndCol,nEndRow,nDummy))
+ {
+ ScDocument* pDoc = GetViewData()->GetDocument();
+ USHORT nTab = GetViewData()->GetTabNo();
+ USHORT i;
+ BOOL bOk;
+
+ bOk = TRUE;
+ USHORT nFirstCol = nStartCol;
+ USHORT nLastCol = nEndCol;
+ if (nStartCol+1 < nEndCol) { ++nFirstCol; --nLastCol; }
+ for (i=nFirstCol; i<=nLastCol && bOk; i++)
+ if (!pDoc->HasStringData( i,nStartRow,nTab ))
+ bOk = FALSE;
+ if (bOk)
+ nFlags |= NAME_TOP;
+ else // Bottom nur wenn nicht Top
+ {
+ bOk = TRUE;
+ for (i=nFirstCol; i<=nLastCol && bOk; i++)
+ if (!pDoc->HasStringData( i,nEndRow,nTab ))
+ bOk = FALSE;
+ if (bOk)
+ nFlags |= NAME_BOTTOM;
+ }
+
+ bOk = TRUE;
+ USHORT nFirstRow = nStartRow;
+ USHORT nLastRow = nEndRow;
+ if (nStartRow+1 < nEndRow) { ++nFirstRow; --nLastRow; }
+ for (i=nFirstRow; i<=nLastRow && bOk; i++)
+ if (!pDoc->HasStringData( nStartCol,i,nTab ))
+ bOk = FALSE;
+ if (bOk)
+ nFlags |= NAME_LEFT;
+ else // Right nur wenn nicht Left
+ {
+ bOk = TRUE;
+ for (i=nFirstRow; i<=nLastRow && bOk; i++)
+ if (!pDoc->HasStringData( nEndCol,i,nTab ))
+ bOk = FALSE;
+ if (bOk)
+ nFlags |= NAME_RIGHT;
+ }
+ }
+
+ if (nStartCol == nEndCol)
+ nFlags &= ~( NAME_LEFT | NAME_RIGHT );
+ if (nStartRow == nEndRow)
+ nFlags &= ~( NAME_TOP | NAME_BOTTOM );
+
+ return nFlags;
+}
+
+void ScViewFunc::InsertNameList()
+{
+ ScAddress aPos( GetViewData()->GetCurX(), GetViewData()->GetCurY(), GetViewData()->GetTabNo() );
+ ScDocShell* pDocSh = GetViewData()->GetDocShell();
+ if ( pDocSh->GetDocFunc().InsertNameList( aPos, FALSE ) )
+ pDocSh->UpdateOle(GetViewData());
+}
+
+
+
+
diff --git a/sc/source/ui/view/viewutil.cxx b/sc/source/ui/view/viewutil.cxx
new file mode 100644
index 000000000000..caede9a444b5
--- /dev/null
+++ b/sc/source/ui/view/viewutil.cxx
@@ -0,0 +1,427 @@
+/*************************************************************************
+ *
+ * $RCSfile: viewutil.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+// INCLUDE ---------------------------------------------------------------
+#include <tools/list.hxx>
+#include "scitems.hxx"
+#include <svx/charmap.hxx>
+#include <svx/fontitem.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/wrkwin.hxx>
+
+#include "viewutil.hxx"
+#include "global.hxx"
+#include "chgtrack.hxx"
+#include "chgviset.hxx"
+
+// STATIC DATA -----------------------------------------------------------
+
+//==================================================================
+
+// static
+BOOL ScViewUtil::IsActionShown( const ScChangeAction& rAction,
+ const ScChangeViewSettings& rSettings,
+ ScDocument& rDocument )
+{
+ // abgelehnte werden durch eine invertierende akzeptierte Action dargestellt,
+ // die Reihenfolge von ShowRejected/ShowAccepted ist deswegen wichtig
+
+ if ( !rSettings.IsShowRejected() && rAction.IsRejecting() )
+ return FALSE;
+
+ if ( !rSettings.IsShowAccepted() && rAction.IsAccepted() && !rAction.IsRejecting() )
+ return FALSE;
+
+ if ( rSettings.HasAuthor() )
+ {
+ if ( rSettings.IsEveryoneButMe() )
+ {
+ // GetUser() am ChangeTrack ist der aktuelle Benutzer
+ ScChangeTrack* pTrack = rDocument.GetChangeTrack();
+ if ( !pTrack || rAction.GetUser() == pTrack->GetUser() )
+ return FALSE;
+ }
+ else if ( rAction.GetUser() != rSettings.GetTheAuthorToShow() )
+ return FALSE;
+ }
+
+ if ( rSettings.HasComment() )
+ {
+ String aComStr=rAction.GetComment();
+ aComStr.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
+ rAction.GetDescription( aComStr, &rDocument );
+ aComStr+=')';
+
+ if(!rSettings.IsValidComment(&aComStr))
+ return FALSE;
+ }
+
+ if ( rSettings.HasRange() )
+ if ( !rSettings.GetTheRangeList().Intersects( rAction.GetBigRange().MakeRange() ) )
+ return FALSE;
+
+ if ( rSettings.HasDate() && rSettings.GetTheDateMode() != SCDM_NO_DATEMODE )
+ {
+ DateTime aDateTime = rAction.GetDateTime();
+ const DateTime& rFirst = rSettings.GetTheFirstDateTime();
+ const DateTime& rLast = rSettings.GetTheLastDateTime();
+ switch ( rSettings.GetTheDateMode() )
+ { // korrespondiert mit ScHighlightChgDlg::OKBtnHdl
+ case SCDM_DATE_BEFORE:
+ if ( aDateTime > rFirst )
+ return FALSE;
+ break;
+
+ case SCDM_DATE_SINCE:
+ if ( aDateTime < rFirst )
+ return FALSE;
+ break;
+
+ case SCDM_DATE_EQUAL:
+ case SCDM_DATE_BETWEEN:
+ if ( aDateTime < rFirst || aDateTime > rLast )
+ return FALSE;
+ break;
+
+ case SCDM_DATE_NOTEQUAL:
+ if ( aDateTime >= rFirst && aDateTime <= rLast )
+ return FALSE;
+ break;
+
+ case SCDM_DATE_SAVE:
+ {
+ ScChangeTrack* pTrack = rDocument.GetChangeTrack();
+ if ( !pTrack || pTrack->GetLastSavedActionNumber() >=
+ rAction.GetActionNumber() )
+ return FALSE;
+ }
+ break;
+ }
+ }
+
+ return TRUE;
+}
+
+//==================================================================
+
+BOOL ScViewUtil::ExecuteCharMap( const SvxFontItem& rOldFont,
+ SvxFontItem& rNewFont,
+ String& rString )
+{
+ BOOL bRet = FALSE;
+
+ Font aFont;
+ aFont.SetName ( rOldFont.GetFamilyName() );
+ aFont.SetStyleName( rOldFont.GetStyleName() );
+ aFont.SetFamily ( rOldFont.GetFamily() );
+ aFont.SetCharSet ( rOldFont.GetCharSet() );
+ aFont.SetPitch ( rOldFont.GetPitch() );
+
+ SvxCharacterMap* pDlg = new SvxCharacterMap( NULL, FALSE );
+ pDlg->SetCharFont( aFont );
+
+ if ( pDlg->Execute() == RET_OK )
+ {
+ rString = pDlg->GetCharacters();
+ aFont = pDlg->GetCharFont();
+ rNewFont = SvxFontItem( aFont.GetFamily(), aFont.GetName(),
+ aFont.GetStyleName(), aFont.GetPitch(),
+ aFont.GetCharSet() ); // nId egal
+
+ bRet = TRUE;
+ }
+ delete pDlg;
+
+ return bRet;
+}
+
+//------------------------------------------------------------------
+
+ScUpdateRect::ScUpdateRect( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 )
+{
+ PutInOrder( nX1, nX2 );
+ PutInOrder( nY1, nY2 );
+
+ nOldStartX = nX1;
+ nOldStartY = nY1;
+ nOldEndX = nX2;
+ nOldEndY = nY2;
+}
+
+void ScUpdateRect::SetNew( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2 )
+{
+ PutInOrder( nX1, nX2 );
+ PutInOrder( nY1, nY2 );
+
+ nNewStartX = nX1;
+ nNewStartY = nY1;
+ nNewEndX = nX2;
+ nNewEndY = nY2;
+}
+
+BOOL ScUpdateRect::GetDiff( USHORT& rX1, USHORT& rY1, USHORT& rX2, USHORT& rY2 )
+{
+ if ( nNewStartX == nOldStartX && nNewEndX == nOldEndX &&
+ nNewStartY == nOldStartY && nNewEndY == nOldEndY )
+ {
+ rX1 = nNewStartX;
+ rY1 = nNewStartY;
+ rX2 = nNewStartX;
+ rY2 = nNewStartY;
+ return FALSE;
+ }
+
+ rX1 = Min(nNewStartX,nOldStartX);
+ rY1 = Min(nNewStartY,nOldStartY);
+ rX2 = Max(nNewEndX,nOldEndX);
+ rY2 = Max(nNewEndY,nOldEndY);
+
+ if ( nNewStartX == nOldStartX && nNewEndX == nOldEndX )
+ {
+ if ( nNewStartY == nOldStartY )
+ {
+ rY1 = Min( nNewEndY, nOldEndY );
+ rY2 = Max( nNewEndY, nOldEndY );
+ }
+ else if ( nNewEndY == nOldEndY )
+ {
+ rY1 = Min( nNewStartY, nOldStartY );
+ rY2 = Max( nNewStartY, nOldStartY );
+ }
+ }
+ else if ( nNewStartY == nOldStartY && nNewEndY == nOldEndY )
+ {
+ if ( nNewStartX == nOldStartX )
+ {
+ rX1 = Min( nNewEndX, nOldEndX );
+ rX2 = Max( nNewEndX, nOldEndX );
+ }
+ else if ( nNewEndX == nOldEndX )
+ {
+ rX1 = Min( nNewStartX, nOldStartX );
+ rX2 = Max( nNewStartX, nOldStartX );
+ }
+ }
+
+ return TRUE;
+}
+
+BOOL ScUpdateRect::GetXorDiff( USHORT& rX1, USHORT& rY1, USHORT& rX2, USHORT& rY2, BOOL& rCont )
+{
+ rCont = FALSE;
+
+ if ( nNewStartX == nOldStartX && nNewEndX == nOldEndX &&
+ nNewStartY == nOldStartY && nNewEndY == nOldEndY )
+ {
+ rX1 = nNewStartX;
+ rY1 = nNewStartY;
+ rX2 = nNewStartX;
+ rY2 = nNewStartY;
+ return FALSE;
+ }
+
+ rX1 = Min(nNewStartX,nOldStartX);
+ rY1 = Min(nNewStartY,nOldStartY);
+ rX2 = Max(nNewEndX,nOldEndX);
+ rY2 = Max(nNewEndY,nOldEndY);
+
+ if ( nNewStartX == nOldStartX && nNewEndX == nOldEndX ) // nur vertikal
+ {
+ if ( nNewStartY == nOldStartY )
+ {
+ rY1 = Min( nNewEndY, nOldEndY ) + 1;
+ rY2 = Max( nNewEndY, nOldEndY );
+ }
+ else if ( nNewEndY == nOldEndY )
+ {
+ rY1 = Min( nNewStartY, nOldStartY );
+ rY2 = Max( nNewStartY, nOldStartY ) - 1;
+ }
+ else
+ {
+ rY1 = Min( nNewStartY, nOldStartY );
+ rY2 = Max( nNewStartY, nOldStartY ) - 1;
+ rCont = TRUE;
+ nContY1 = Min( nNewEndY, nOldEndY ) + 1;
+ nContY2 = Max( nNewEndY, nOldEndY );
+ nContX1 = rX1;
+ nContX2 = rX2;
+ }
+ }
+ else if ( nNewStartY == nOldStartY && nNewEndY == nOldEndY ) // nur horizontal
+ {
+ if ( nNewStartX == nOldStartX )
+ {
+ rX1 = Min( nNewEndX, nOldEndX ) + 1;
+ rX2 = Max( nNewEndX, nOldEndX );
+ }
+ else if ( nNewEndX == nOldEndX )
+ {
+ rX1 = Min( nNewStartX, nOldStartX );
+ rX2 = Max( nNewStartX, nOldStartX ) - 1;
+ }
+ else
+ {
+ rX1 = Min( nNewStartX, nOldStartX );
+ rX2 = Max( nNewStartX, nOldStartX ) - 1;
+ rCont = TRUE;
+ nContX1 = Min( nNewEndX, nOldEndX ) + 1;
+ nContX2 = Max( nNewEndX, nOldEndX );
+ nContY1 = rY1;
+ nContY2 = rY2;
+ }
+ }
+ else if ( nNewEndX == nOldEndX && nNewEndY == nOldEndY ) // links oben
+ {
+ if ( (nNewStartX<nOldStartX) == (nNewStartY<nOldStartY) )
+ rX1 = Min( nNewStartX, nOldStartX );
+ else
+ rX1 = Max( nNewStartX, nOldStartX ); // Ecke weglassen
+ rX2 = nOldEndX;
+ rY1 = Min( nNewStartY, nOldStartY ); // oben
+ rY2 = Max( nNewStartY, nOldStartY ) - 1;
+ rCont = TRUE;
+ nContY1 = rY2+1;
+ nContY2 = nOldEndY;
+ nContX1 = Min( nNewStartX, nOldStartX ); // links
+ nContX2 = Max( nNewStartX, nOldStartX ) - 1;
+ }
+ else if ( nNewStartX == nOldStartX && nNewEndY == nOldEndY ) // rechts oben
+ {
+ if ( (nNewEndX<nOldEndX) != (nNewStartY<nOldStartY) )
+ rX2 = Max( nNewEndX, nOldEndX );
+ else
+ rX2 = Min( nNewEndX, nOldEndX ); // Ecke weglassen
+ rX1 = nOldStartX;
+ rY1 = Min( nNewStartY, nOldStartY ); // oben
+ rY2 = Max( nNewStartY, nOldStartY ) - 1;
+ rCont = TRUE;
+ nContY1 = rY2+1;
+ nContY2 = nOldEndY;
+ nContX1 = Min( nNewEndX, nOldEndX ) + 1; // rechts
+ nContX2 = Max( nNewEndX, nOldEndX );
+ }
+ else if ( nNewEndX == nOldEndX && nNewStartY == nOldStartY ) // links unten
+ {
+ if ( (nNewStartX<nOldStartX) != (nNewEndY<nOldEndY) )
+ rX1 = Min( nNewStartX, nOldStartX );
+ else
+ rX1 = Max( nNewStartX, nOldStartX ); // Ecke weglassen
+ rX2 = nOldEndX;
+ rY1 = Min( nNewEndY, nOldEndY ) + 1; // unten
+ rY2 = Max( nNewEndY, nOldEndY );
+ rCont = TRUE;
+ nContY1 = nOldStartY;
+ nContY2 = rY1-1;
+ nContX1 = Min( nNewStartX, nOldStartX ); // links
+ nContX2 = Max( nNewStartX, nOldStartX ) - 1;
+ }
+ else if ( nNewStartX == nOldStartX && nNewStartY == nOldStartY ) // rechts unten
+ {
+ if ( (nNewEndX<nOldEndX) == (nNewEndY<nOldEndY) )
+ rX2 = Max( nNewEndX, nOldEndX );
+ else
+ rX2 = Min( nNewEndX, nOldEndX ); // Ecke weglassen
+ rX1 = nOldStartX;
+ rY1 = Min( nNewEndY, nOldEndY ) + 1; // unten
+ rY2 = Max( nNewEndY, nOldEndY );
+ rCont = TRUE;
+ nContY1 = nOldStartY;
+ nContY2 = rY1-1;
+ nContX1 = Min( nNewEndX, nOldEndX ) + 1; // rechts
+ nContX2 = Max( nNewEndX, nOldEndX );
+ }
+ else // Ueberschlag
+ {
+ rX1 = nOldStartX;
+ rY1 = nOldStartY;
+ rX2 = nOldEndX;
+ rY2 = nOldEndY;
+ rCont = TRUE;
+ nContX1 = nNewStartX;
+ nContY1 = nNewStartY;
+ nContX2 = nNewEndX;
+ nContY2 = nNewEndY;
+ }
+
+ return TRUE;
+}
+
+void ScUpdateRect::GetContDiff( USHORT& rX1, USHORT& rY1, USHORT& rX2, USHORT& rY2 )
+{
+ rX1 = nContX1;
+ rY1 = nContY1;
+ rX2 = nContX2;
+ rY2 = nContY2;
+}
+
+
+
+
+
+
diff --git a/sc/source/ui/view/waitoff.cxx b/sc/source/ui/view/waitoff.cxx
new file mode 100644
index 000000000000..34390e05217e
--- /dev/null
+++ b/sc/source/ui/view/waitoff.cxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: waitoff.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:10 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PCH
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+//------------------------------------------------------------------------
+
+#include <vcl/window.hxx>
+
+#include "waitoff.hxx"
+
+//------------------------------------------------------------------------
+
+ScWaitCursorOff::ScWaitCursorOff( Window* pWinP )
+ :
+ pWin( pWinP ),
+ nWaiters(0)
+{
+ if ( pWin )
+ {
+ while ( pWin->IsWait() )
+ {
+ nWaiters++;
+ pWin->LeaveWait();
+ }
+ }
+}
+
+ScWaitCursorOff::~ScWaitCursorOff()
+{
+ if ( pWin )
+ {
+ while ( nWaiters )
+ {
+ nWaiters--;
+ pWin->EnterWait();
+ }
+ }
+}
+
+
+
+
diff --git a/sc/util/hidother.src b/sc/util/hidother.src
new file mode 100644
index 000000000000..e3936fbb7fff
--- /dev/null
+++ b/sc/util/hidother.src
@@ -0,0 +1,391 @@
+/*************************************************************************
+ *
+ * $RCSfile: hidother.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "../inc/scfuncs.hrc" // HID_FUNC_XXX
+
+// Help-IDs fuer Dokument-Fenster
+
+hidspecial HID_SC_WIN_GRIDWIN { HelpID = HID_SC_WIN_GRIDWIN; };
+hidspecial HID_SC_WIN_PREVIEW { HelpID = HID_SC_WIN_PREVIEW; };
+
+// Help-IDs fuer Shells (Helferlein)
+
+hidspecial HID_SCSHELL_TABVWSH { HelpID = HID_SCSHELL_TABVWSH; };
+hidspecial HID_SCSHELL_PREVWSH { HelpID = HID_SCSHELL_PREVWSH; };
+hidspecial HID_SCSHELL_AUDIT { HelpID = HID_SCSHELL_AUDIT; };
+hidspecial HID_SCSHELL_PIVOTSH { HelpID = HID_SCSHELL_PIVOTSH; };
+hidspecial HID_SCSHELL_DRAWSH { HelpID = HID_SCSHELL_DRAWSH; };
+hidspecial HID_SCSHELL_DRTXTOB { HelpID = HID_SCSHELL_DRTXTOB; };
+hidspecial HID_SCSHELL_DRAWFORMSH{ HelpID = HID_SCSHELL_DRAWFORMSH ; };
+
+hidspecial HID_SCSHELL_CELLSH { HelpID = HID_SCSHELL_CELLSH ; };
+hidspecial HID_SCSHELL_FORMATSH { HelpID = HID_SCSHELL_FORMATSH ; };
+hidspecial HID_SCSHELL_OLEOBEJCTSH { HelpID = HID_SCSHELL_OLEOBEJCTSH ; };
+hidspecial HID_SCSHELL_CHARTSH { HelpID = HID_SCSHELL_CHARTSH ; };
+hidspecial HID_SCSHELL_GRAPHIC { HelpID = HID_SCSHELL_GRAPHIC ; };
+hidspecial HID_SCSHELL_PAGEBREAK { HelpID = HID_SCSHELL_PAGEBREAK ; };
+
+// Help-IDs fuer Standard-Vorlagen
+
+hidspecial HID_SC_SHEET_CELL_STD { HelpID = HID_SC_SHEET_CELL_STD; };
+hidspecial HID_SC_SHEET_CELL_ERG { HelpID = HID_SC_SHEET_CELL_ERG; };
+hidspecial HID_SC_SHEET_CELL_ERG1 { HelpID = HID_SC_SHEET_CELL_ERG1; };
+hidspecial HID_SC_SHEET_CELL_UEB { HelpID = HID_SC_SHEET_CELL_UEB; };
+hidspecial HID_SC_SHEET_CELL_UEB1 { HelpID = HID_SC_SHEET_CELL_UEB1; };
+hidspecial HID_SC_SHEET_PAGE_STD { HelpID = HID_SC_SHEET_PAGE_STD; };
+hidspecial HID_SC_SHEET_PAGE_REP { HelpID = HID_SC_SHEET_PAGE_REP; };
+
+// Elemente in der Eingabezeile
+
+hidspecial HID_INSWIN_POS { HelpID = HID_INSWIN_POS; };
+hidspecial HID_INSWIN_CALC { HelpID = HID_INSWIN_CALC; };
+hidspecial HID_INSWIN_CANCEL { HelpID = HID_INSWIN_CANCEL; };
+hidspecial HID_INSWIN_OK { HelpID = HID_INSWIN_OK; };
+hidspecial HID_INSWIN_SUMME { HelpID = HID_INSWIN_SUMME; };
+hidspecial HID_INSWIN_FUNC { HelpID = HID_INSWIN_FUNC; };
+hidspecial HID_INSWIN_INPUT { HelpID = HID_INSWIN_INPUT; };
+
+// andere Controls, die vom Code aus die HelpID bekommen
+
+hidspecial HID_SC_HEADER_EDIT { HelpID = HID_SC_HEADER_EDIT; };
+hidspecial HID_SC_FOOTER_EDIT { HelpID = HID_SC_FOOTER_EDIT; };
+
+hidspecial HID_SC_SCENWIN_TOP { HelpID = HID_SC_SCENWIN_TOP; };
+hidspecial HID_SC_SCENWIN_BOTTOM { HelpID = HID_SC_SCENWIN_BOTTOM; };
+hidspecial HID_SC_INPUTWIN { HelpID = HID_SC_INPUTWIN; };
+hidspecial HID_SC_RENAME_NAME { HelpID = HID_SC_RENAME_NAME; };
+hidspecial HID_SC_APPEND_NAME { HelpID = HID_SC_APPEND_NAME; };
+hidspecial HID_SC_AUTOFMT_NAME { HelpID = HID_SC_AUTOFMT_NAME; };
+hidspecial HID_SC_ADD_AUTOFMT { HelpID = HID_SC_ADD_AUTOFMT; };
+hidspecial HID_SC_REN_AFMT_NAME { HelpID = HID_SC_REN_AFMT_NAME; };
+hidspecial HID_SC_RENAME_AUTOFMT { HelpID = HID_SC_RENAME_AUTOFMT; };
+hidspecial HID_PASSWD_TABLE { HelpID = HID_PASSWD_TABLE; };
+hidspecial HID_PASSWD_DOC { HelpID = HID_PASSWD_DOC; };
+
+// 2. Seite Funktionsautopilot: nur als Unique-IDs
+
+hidspecial HID_SC_FAP_PAGE { HelpID = HID_SC_FAP_PAGE; };
+hidspecial HID_SC_FAP_EDIT1 { HelpID = HID_SC_FAP_EDIT1; };
+hidspecial HID_SC_FAP_EDIT2 { HelpID = HID_SC_FAP_EDIT2; };
+hidspecial HID_SC_FAP_EDIT3 { HelpID = HID_SC_FAP_EDIT3; };
+hidspecial HID_SC_FAP_EDIT4 { HelpID = HID_SC_FAP_EDIT4; };
+
+// Funktionen fuer Funkionsautopiloten
+
+hidspecial HID_FUNC_DBANZAHL { HelpID = HID_FUNC_DBANZAHL; };
+hidspecial HID_FUNC_DBANZAHL2 { HelpID = HID_FUNC_DBANZAHL2; };
+hidspecial HID_FUNC_DBMITTELWERT { HelpID = HID_FUNC_DBMITTELWERT; };
+hidspecial HID_FUNC_DBAUSZUG { HelpID = HID_FUNC_DBAUSZUG; };
+hidspecial HID_FUNC_DBMAX { HelpID = HID_FUNC_DBMAX; };
+hidspecial HID_FUNC_DBMIN { HelpID = HID_FUNC_DBMIN; };
+hidspecial HID_FUNC_DBPRODUKT { HelpID = HID_FUNC_DBPRODUKT; };
+hidspecial HID_FUNC_DBSTDABW { HelpID = HID_FUNC_DBSTDABW; };
+hidspecial HID_FUNC_DBSTDABWN { HelpID = HID_FUNC_DBSTDABWN; };
+hidspecial HID_FUNC_DBSUMME { HelpID = HID_FUNC_DBSUMME; };
+hidspecial HID_FUNC_DBVARIANZ { HelpID = HID_FUNC_DBVARIANZ; };
+hidspecial HID_FUNC_DBVARIANZEN { HelpID = HID_FUNC_DBVARIANZEN; };
+hidspecial HID_FUNC_DATUM { HelpID = HID_FUNC_DATUM; };
+hidspecial HID_FUNC_DATWERT { HelpID = HID_FUNC_DATWERT; };
+hidspecial HID_FUNC_TAG { HelpID = HID_FUNC_TAG; };
+hidspecial HID_FUNC_TAGE360 { HelpID = HID_FUNC_TAGE360; };
+hidspecial HID_FUNC_STUNDE { HelpID = HID_FUNC_STUNDE; };
+hidspecial HID_FUNC_MINUTE { HelpID = HID_FUNC_MINUTE; };
+hidspecial HID_FUNC_MONAT { HelpID = HID_FUNC_MONAT; };
+hidspecial HID_FUNC_JETZT { HelpID = HID_FUNC_JETZT; };
+hidspecial HID_FUNC_SEKUNDE { HelpID = HID_FUNC_SEKUNDE; };
+hidspecial HID_FUNC_ZEIT { HelpID = HID_FUNC_ZEIT; };
+hidspecial HID_FUNC_ZEITWERT { HelpID = HID_FUNC_ZEITWERT; };
+hidspecial HID_FUNC_HEUTE { HelpID = HID_FUNC_HEUTE; };
+hidspecial HID_FUNC_WOCHENTAG { HelpID = HID_FUNC_WOCHENTAG; };
+hidspecial HID_FUNC_JAHR { HelpID = HID_FUNC_JAHR; };
+hidspecial HID_FUNC_TAGE { HelpID = HID_FUNC_TAGE; };
+hidspecial HID_FUNC_KALENDERWOCHE { HelpID = HID_FUNC_KALENDERWOCHE; };
+hidspecial HID_FUNC_OSTERSONNTAG { HelpID = HID_FUNC_OSTERSONNTAG; };
+hidspecial HID_FUNC_BW { HelpID = HID_FUNC_BW; };
+hidspecial HID_FUNC_ZW { HelpID = HID_FUNC_ZW; };
+hidspecial HID_FUNC_ZZR { HelpID = HID_FUNC_ZZR; };
+hidspecial HID_FUNC_RMZ { HelpID = HID_FUNC_RMZ; };
+hidspecial HID_FUNC_ZINS { HelpID = HID_FUNC_ZINS; };
+hidspecial HID_FUNC_ZINSZ { HelpID = HID_FUNC_ZINSZ; };
+hidspecial HID_FUNC_KAPZ { HelpID = HID_FUNC_KAPZ; };
+hidspecial HID_FUNC_KUMKAPITAL { HelpID = HID_FUNC_KUMKAPITAL; };
+hidspecial HID_FUNC_KUMZINSZ { HelpID = HID_FUNC_KUMZINSZ; };
+hidspecial HID_FUNC_DIA { HelpID = HID_FUNC_DIA; };
+hidspecial HID_FUNC_LIA { HelpID = HID_FUNC_LIA; };
+hidspecial HID_FUNC_GDA { HelpID = HID_FUNC_GDA; };
+hidspecial HID_FUNC_GDA2 { HelpID = HID_FUNC_GDA2; };
+hidspecial HID_FUNC_VDB { HelpID = HID_FUNC_VDB; };
+hidspecial HID_FUNC_EFFEKTIV { HelpID = HID_FUNC_EFFEKTIV; };
+hidspecial HID_FUNC_NOMINAL { HelpID = HID_FUNC_NOMINAL; };
+hidspecial HID_FUNC_NBW { HelpID = HID_FUNC_NBW; };
+hidspecial HID_FUNC_IKV { HelpID = HID_FUNC_IKV; };
+hidspecial HID_FUNC_LAUFZEIT { HelpID = HID_FUNC_LAUFZEIT; };
+hidspecial HID_FUNC_ZGZ { HelpID = HID_FUNC_ZGZ; };
+hidspecial HID_FUNC_ISTBEZUG { HelpID = HID_FUNC_ISTBEZUG; };
+hidspecial HID_FUNC_ISTFEHL { HelpID = HID_FUNC_ISTFEHL; };
+hidspecial HID_FUNC_ISTFEHLER { HelpID = HID_FUNC_ISTFEHLER; };
+hidspecial HID_FUNC_ISTLEER { HelpID = HID_FUNC_ISTLEER; };
+hidspecial HID_FUNC_ISTLOG { HelpID = HID_FUNC_ISTLOG; };
+hidspecial HID_FUNC_ISTNV { HelpID = HID_FUNC_ISTNV; };
+hidspecial HID_FUNC_ISTKTEXT { HelpID = HID_FUNC_ISTKTEXT; };
+hidspecial HID_FUNC_ISTTEXT { HelpID = HID_FUNC_ISTTEXT; };
+hidspecial HID_FUNC_ISTZAHL { HelpID = HID_FUNC_ISTZAHL; };
+hidspecial HID_FUNC_ISTFORMEL { HelpID = HID_FUNC_ISTFORMEL; };
+hidspecial HID_FUNC_FORMEL { HelpID = HID_FUNC_FORMEL; };
+hidspecial HID_FUNC_N { HelpID = HID_FUNC_N; };
+hidspecial HID_FUNC_NV { HelpID = HID_FUNC_NV; };
+hidspecial HID_FUNC_TYP { HelpID = HID_FUNC_TYP; };
+hidspecial HID_FUNC_AKTUELL { HelpID = HID_FUNC_AKTUELL; };
+hidspecial HID_FUNC_FALSCH { HelpID = HID_FUNC_FALSCH; };
+hidspecial HID_FUNC_NICHT { HelpID = HID_FUNC_NICHT; };
+hidspecial HID_FUNC_WAHR { HelpID = HID_FUNC_WAHR; };
+hidspecial HID_FUNC_WENN { HelpID = HID_FUNC_WENN; };
+hidspecial HID_FUNC_ODER { HelpID = HID_FUNC_ODER; };
+hidspecial HID_FUNC_UND { HelpID = HID_FUNC_UND; };
+hidspecial HID_FUNC_ABS { HelpID = HID_FUNC_ABS; };
+hidspecial HID_FUNC_POTENZ { HelpID = HID_FUNC_POTENZ; };
+hidspecial HID_FUNC_ANZAHLLEEREZELLEN { HelpID = HID_FUNC_ANZAHLLEEREZELLEN; };
+hidspecial HID_FUNC_PI { HelpID = HID_FUNC_PI; };
+hidspecial HID_FUNC_SUMME { HelpID = HID_FUNC_SUMME; };
+hidspecial HID_FUNC_QUADRATESUMME { HelpID = HID_FUNC_QUADRATESUMME; };
+hidspecial HID_FUNC_PRODUKT { HelpID = HID_FUNC_PRODUKT; };
+hidspecial HID_FUNC_SUMMEWENN { HelpID = HID_FUNC_SUMMEWENN; };
+hidspecial HID_FUNC_ZAEHLENWENN { HelpID = HID_FUNC_ZAEHLENWENN; };
+hidspecial HID_FUNC_WURZEL { HelpID = HID_FUNC_WURZEL; };
+hidspecial HID_FUNC_ZUFALLSZAHL { HelpID = HID_FUNC_ZUFALLSZAHL; };
+hidspecial HID_FUNC_ISTGERADE { HelpID = HID_FUNC_ISTGERADE; };
+hidspecial HID_FUNC_ISTUNGERADE { HelpID = HID_FUNC_ISTUNGERADE; };
+hidspecial HID_FUNC_KOMBINATIONEN { HelpID = HID_FUNC_KOMBINATIONEN; };
+hidspecial HID_FUNC_KOMBINATIONEN2 { HelpID = HID_FUNC_KOMBINATIONEN2; };
+hidspecial HID_FUNC_ARCCOS { HelpID = HID_FUNC_ARCCOS; };
+hidspecial HID_FUNC_ARCSIN { HelpID = HID_FUNC_ARCSIN; };
+hidspecial HID_FUNC_ARCOSHYP { HelpID = HID_FUNC_ARCOSHYP; };
+hidspecial HID_FUNC_ARSINHYP { HelpID = HID_FUNC_ARSINHYP; };
+hidspecial HID_FUNC_ARCCOT { HelpID = HID_FUNC_ARCCOT; };
+hidspecial HID_FUNC_ARCTAN { HelpID = HID_FUNC_ARCTAN; };
+hidspecial HID_FUNC_ARCOTHYP { HelpID = HID_FUNC_ARCOTHYP; };
+hidspecial HID_FUNC_ARTANHYP { HelpID = HID_FUNC_ARTANHYP; };
+hidspecial HID_FUNC_COS { HelpID = HID_FUNC_COS; };
+hidspecial HID_FUNC_SIN { HelpID = HID_FUNC_SIN; };
+hidspecial HID_FUNC_COT { HelpID = HID_FUNC_COT; };
+hidspecial HID_FUNC_TAN { HelpID = HID_FUNC_TAN; };
+hidspecial HID_FUNC_COSHYP { HelpID = HID_FUNC_COSHYP; };
+hidspecial HID_FUNC_SINHYP { HelpID = HID_FUNC_SINHYP; };
+hidspecial HID_FUNC_COTHYP { HelpID = HID_FUNC_COTHYP; };
+hidspecial HID_FUNC_TANHYP { HelpID = HID_FUNC_TANHYP; };
+hidspecial HID_FUNC_ARCTAN2 { HelpID = HID_FUNC_ARCTAN2; };
+hidspecial HID_FUNC_DEG { HelpID = HID_FUNC_DEG; };
+hidspecial HID_FUNC_RAD { HelpID = HID_FUNC_RAD; };
+hidspecial HID_FUNC_EXP { HelpID = HID_FUNC_EXP; };
+hidspecial HID_FUNC_LOG { HelpID = HID_FUNC_LOG; };
+hidspecial HID_FUNC_LN { HelpID = HID_FUNC_LN; };
+hidspecial HID_FUNC_LOG10 { HelpID = HID_FUNC_LOG10; };
+hidspecial HID_FUNC_FAKULTAET { HelpID = HID_FUNC_FAKULTAET; };
+hidspecial HID_FUNC_REST { HelpID = HID_FUNC_REST; };
+hidspecial HID_FUNC_VORZEICHEN { HelpID = HID_FUNC_VORZEICHEN; };
+hidspecial HID_FUNC_TEILERGEBNIS { HelpID = HID_FUNC_TEILERGEBNIS; };
+hidspecial HID_FUNC_GANZZAHL { HelpID = HID_FUNC_GANZZAHL; };
+hidspecial HID_FUNC_KUERZEN { HelpID = HID_FUNC_KUERZEN; };
+hidspecial HID_FUNC_RUNDEN { HelpID = HID_FUNC_RUNDEN; };
+hidspecial HID_FUNC_AUFRUNDEN { HelpID = HID_FUNC_AUFRUNDEN; };
+hidspecial HID_FUNC_ABRUNDEN { HelpID = HID_FUNC_ABRUNDEN; };
+hidspecial HID_FUNC_GERADE { HelpID = HID_FUNC_GERADE; };
+hidspecial HID_FUNC_UNGERADE { HelpID = HID_FUNC_UNGERADE; };
+hidspecial HID_FUNC_OBERGRENZE { HelpID = HID_FUNC_OBERGRENZE; };
+hidspecial HID_FUNC_UNTERGRENZE { HelpID = HID_FUNC_UNTERGRENZE; };
+hidspecial HID_FUNC_GGT { HelpID = HID_FUNC_GGT; };
+hidspecial HID_FUNC_KGV { HelpID = HID_FUNC_KGV; };
+hidspecial HID_FUNC_MTRANS { HelpID = HID_FUNC_MTRANS; };
+hidspecial HID_FUNC_MMULT { HelpID = HID_FUNC_MMULT; };
+hidspecial HID_FUNC_MDET { HelpID = HID_FUNC_MDET; };
+hidspecial HID_FUNC_MINV { HelpID = HID_FUNC_MINV; };
+hidspecial HID_FUNC_EINHEITSMATRIX { HelpID = HID_FUNC_EINHEITSMATRIX; };
+hidspecial HID_FUNC_SUMMENPRODUKT { HelpID = HID_FUNC_SUMMENPRODUKT; };
+hidspecial HID_FUNC_SUMMEX2MY2 { HelpID = HID_FUNC_SUMMEX2MY2; };
+hidspecial HID_FUNC_SUMMEX2PY2 { HelpID = HID_FUNC_SUMMEX2PY2; };
+hidspecial HID_FUNC_SUMMEXMY2 { HelpID = HID_FUNC_SUMMEXMY2; };
+hidspecial HID_FUNC_HAEUFIGKEIT { HelpID = HID_FUNC_HAEUFIGKEIT; };
+hidspecial HID_FUNC_RGP { HelpID = HID_FUNC_RGP; };
+hidspecial HID_FUNC_RKP { HelpID = HID_FUNC_RKP; };
+hidspecial HID_FUNC_TREND { HelpID = HID_FUNC_TREND; };
+hidspecial HID_FUNC_VARIATION { HelpID = HID_FUNC_VARIATION; };
+hidspecial HID_FUNC_ANZAHL { HelpID = HID_FUNC_ANZAHL; };
+hidspecial HID_FUNC_ANZAHL2 { HelpID = HID_FUNC_ANZAHL2; };
+hidspecial HID_FUNC_MAX { HelpID = HID_FUNC_MAX; };
+hidspecial HID_FUNC_MIN { HelpID = HID_FUNC_MIN; };
+hidspecial HID_FUNC_VARIANZ { HelpID = HID_FUNC_VARIANZ; };
+hidspecial HID_FUNC_VARIANZEN { HelpID = HID_FUNC_VARIANZEN; };
+hidspecial HID_FUNC_STABW { HelpID = HID_FUNC_STABW; };
+hidspecial HID_FUNC_STABWN { HelpID = HID_FUNC_STABWN; };
+hidspecial HID_FUNC_MITTELWERT { HelpID = HID_FUNC_MITTELWERT; };
+hidspecial HID_FUNC_SUMQUADABW { HelpID = HID_FUNC_SUMQUADABW; };
+hidspecial HID_FUNC_MITTELABW { HelpID = HID_FUNC_MITTELABW; };
+hidspecial HID_FUNC_SCHIEFE { HelpID = HID_FUNC_SCHIEFE; };
+hidspecial HID_FUNC_KURT { HelpID = HID_FUNC_KURT; };
+hidspecial HID_FUNC_GEOMITTEL { HelpID = HID_FUNC_GEOMITTEL; };
+hidspecial HID_FUNC_HARMITTEL { HelpID = HID_FUNC_HARMITTEL; };
+hidspecial HID_FUNC_MODALWERT { HelpID = HID_FUNC_MODALWERT; };
+hidspecial HID_FUNC_MEDIAN { HelpID = HID_FUNC_MEDIAN; };
+hidspecial HID_FUNC_QUANTIL { HelpID = HID_FUNC_QUANTIL; };
+hidspecial HID_FUNC_QUARTILE { HelpID = HID_FUNC_QUARTILE; };
+hidspecial HID_FUNC_KGROESSTE { HelpID = HID_FUNC_KGROESSTE; };
+hidspecial HID_FUNC_KKLEINSTE { HelpID = HID_FUNC_KKLEINSTE; };
+hidspecial HID_FUNC_QUANTILSRANG { HelpID = HID_FUNC_QUANTILSRANG; };
+hidspecial HID_FUNC_RANG { HelpID = HID_FUNC_RANG; };
+hidspecial HID_FUNC_GESTUTZTMITTEL { HelpID = HID_FUNC_GESTUTZTMITTEL; };
+hidspecial HID_FUNC_WAHRSCHBEREICH { HelpID = HID_FUNC_WAHRSCHBEREICH; };
+hidspecial HID_FUNC_B { HelpID = HID_FUNC_B; };
+hidspecial HID_FUNC_PHI { HelpID = HID_FUNC_PHI; };
+hidspecial HID_FUNC_GAUSS { HelpID = HID_FUNC_GAUSS; };
+hidspecial HID_FUNC_FISHER { HelpID = HID_FUNC_FISHER; };
+hidspecial HID_FUNC_FISHERINV { HelpID = HID_FUNC_FISHERINV; };
+hidspecial HID_FUNC_BINOMVERT { HelpID = HID_FUNC_BINOMVERT; };
+hidspecial HID_FUNC_NEGBINOMVERT { HelpID = HID_FUNC_NEGBINOMVERT; };
+hidspecial HID_FUNC_KRITBINOM { HelpID = HID_FUNC_KRITBINOM; };
+hidspecial HID_FUNC_POISSON { HelpID = HID_FUNC_POISSON; };
+hidspecial HID_FUNC_NORMVERT { HelpID = HID_FUNC_NORMVERT; };
+hidspecial HID_FUNC_NORMINV { HelpID = HID_FUNC_NORMINV; };
+hidspecial HID_FUNC_STANDNORMVERT { HelpID = HID_FUNC_STANDNORMVERT; };
+hidspecial HID_FUNC_STANDNORMINV { HelpID = HID_FUNC_STANDNORMINV; };
+hidspecial HID_FUNC_LOGNORMVERT { HelpID = HID_FUNC_LOGNORMVERT; };
+hidspecial HID_FUNC_LOGINV { HelpID = HID_FUNC_LOGINV; };
+hidspecial HID_FUNC_EXPONVERT { HelpID = HID_FUNC_EXPONVERT; };
+hidspecial HID_FUNC_GAMMAVERT { HelpID = HID_FUNC_GAMMAVERT; };
+hidspecial HID_FUNC_GAMMAINV { HelpID = HID_FUNC_GAMMAINV; };
+hidspecial HID_FUNC_GAMMALN { HelpID = HID_FUNC_GAMMALN; };
+hidspecial HID_FUNC_BETAVERT { HelpID = HID_FUNC_BETAVERT; };
+hidspecial HID_FUNC_BETAINV { HelpID = HID_FUNC_BETAINV; };
+hidspecial HID_FUNC_WEIBULL { HelpID = HID_FUNC_WEIBULL; };
+hidspecial HID_FUNC_HYPGEOMVERT { HelpID = HID_FUNC_HYPGEOMVERT; };
+hidspecial HID_FUNC_TVERT { HelpID = HID_FUNC_TVERT; };
+hidspecial HID_FUNC_TINV { HelpID = HID_FUNC_TINV; };
+hidspecial HID_FUNC_FVERT { HelpID = HID_FUNC_FVERT; };
+hidspecial HID_FUNC_FINV { HelpID = HID_FUNC_FINV; };
+hidspecial HID_FUNC_CHIVERT { HelpID = HID_FUNC_CHIVERT; };
+hidspecial HID_FUNC_CHIINV { HelpID = HID_FUNC_CHIINV; };
+hidspecial HID_FUNC_STANDARDISIERUNG { HelpID = HID_FUNC_STANDARDISIERUNG; };
+hidspecial HID_FUNC_VARIATIONEN { HelpID = HID_FUNC_VARIATIONEN; };
+hidspecial HID_FUNC_VARIATIONEN2 { HelpID = HID_FUNC_VARIATIONEN2; };
+hidspecial HID_FUNC_KONFIDENZ { HelpID = HID_FUNC_KONFIDENZ; };
+hidspecial HID_FUNC_GTEST { HelpID = HID_FUNC_GTEST; };
+hidspecial HID_FUNC_CHITEST { HelpID = HID_FUNC_CHITEST; };
+hidspecial HID_FUNC_FTEST { HelpID = HID_FUNC_FTEST; };
+hidspecial HID_FUNC_TTEST { HelpID = HID_FUNC_TTEST; };
+hidspecial HID_FUNC_BESTIMMTHEITSMASS { HelpID = HID_FUNC_BESTIMMTHEITSMASS; };
+hidspecial HID_FUNC_ACHSENABSCHNITT { HelpID = HID_FUNC_ACHSENABSCHNITT; };
+hidspecial HID_FUNC_STEIGUNG { HelpID = HID_FUNC_STEIGUNG; };
+hidspecial HID_FUNC_STFEHLERYX { HelpID = HID_FUNC_STFEHLERYX; };
+hidspecial HID_FUNC_PEARSON { HelpID = HID_FUNC_PEARSON; };
+hidspecial HID_FUNC_KORREL { HelpID = HID_FUNC_KORREL; };
+hidspecial HID_FUNC_KOVAR { HelpID = HID_FUNC_KOVAR; };
+hidspecial HID_FUNC_SCHAETZER { HelpID = HID_FUNC_SCHAETZER; };
+hidspecial HID_FUNC_MINA { HelpID = HID_FUNC_MINA; };
+hidspecial HID_FUNC_MAXA { HelpID = HID_FUNC_MAXA; };
+hidspecial HID_FUNC_MITTELWERTA { HelpID = HID_FUNC_MITTELWERTA; };
+hidspecial HID_FUNC_STABWA { HelpID = HID_FUNC_STABWA; };
+hidspecial HID_FUNC_STABWNA { HelpID = HID_FUNC_STABWNA; };
+hidspecial HID_FUNC_VARIANZA { HelpID = HID_FUNC_VARIANZA; };
+hidspecial HID_FUNC_VARIANZENA { HelpID = HID_FUNC_VARIANZENA; };
+hidspecial HID_FUNC_ADRESSE { HelpID = HID_FUNC_ADRESSE; };
+hidspecial HID_FUNC_BEREICHE { HelpID = HID_FUNC_BEREICHE; };
+hidspecial HID_FUNC_WAHL { HelpID = HID_FUNC_WAHL; };
+hidspecial HID_FUNC_SPALTE { HelpID = HID_FUNC_SPALTE; };
+hidspecial HID_FUNC_ZEILE { HelpID = HID_FUNC_ZEILE; };
+hidspecial HID_FUNC_SPALTEN { HelpID = HID_FUNC_SPALTEN; };
+hidspecial HID_FUNC_ZEILEN { HelpID = HID_FUNC_ZEILEN; };
+hidspecial HID_FUNC_WVERWEIS { HelpID = HID_FUNC_WVERWEIS; };
+hidspecial HID_FUNC_SVERWEIS { HelpID = HID_FUNC_SVERWEIS; };
+hidspecial HID_FUNC_INDEX { HelpID = HID_FUNC_INDEX; };
+hidspecial HID_FUNC_INDIREKT { HelpID = HID_FUNC_INDIREKT; };
+hidspecial HID_FUNC_VERWEIS { HelpID = HID_FUNC_VERWEIS; };
+hidspecial HID_FUNC_VERGLEICH { HelpID = HID_FUNC_VERGLEICH; };
+hidspecial HID_FUNC_VERSCHIEBUNG { HelpID = HID_FUNC_VERSCHIEBUNG; };
+hidspecial HID_FUNC_FEHLERTYP { HelpID = HID_FUNC_FEHLERTYP; };
+hidspecial HID_FUNC_VORLAGE { HelpID = HID_FUNC_VORLAGE; };
+hidspecial HID_FUNC_DDE { HelpID = HID_FUNC_DDE; };
+hidspecial HID_FUNC_TABELLE { HelpID = HID_FUNC_TABELLE; };
+hidspecial HID_FUNC_TABELLEN { HelpID = HID_FUNC_TABELLEN; };
+hidspecial HID_FUNC_CODE { HelpID = HID_FUNC_CODE; };
+hidspecial HID_FUNC_DM { HelpID = HID_FUNC_DM; };
+hidspecial HID_FUNC_ZEICHEN { HelpID = HID_FUNC_ZEICHEN; };
+hidspecial HID_FUNC_SAEUBERN { HelpID = HID_FUNC_SAEUBERN; };
+hidspecial HID_FUNC_VERKETTEN { HelpID = HID_FUNC_VERKETTEN; };
+hidspecial HID_FUNC_IDENTISCH { HelpID = HID_FUNC_IDENTISCH; };
+hidspecial HID_FUNC_FINDEN { HelpID = HID_FUNC_FINDEN; };
+hidspecial HID_FUNC_SUCHEN { HelpID = HID_FUNC_SUCHEN; };
+hidspecial HID_FUNC_GLAETTEN { HelpID = HID_FUNC_GLAETTEN; };
+hidspecial HID_FUNC_GROSS2 { HelpID = HID_FUNC_GROSS2; };
+hidspecial HID_FUNC_GROSS { HelpID = HID_FUNC_GROSS; };
+hidspecial HID_FUNC_KLEIN { HelpID = HID_FUNC_KLEIN; };
+hidspecial HID_FUNC_WERT { HelpID = HID_FUNC_WERT; };
+hidspecial HID_FUNC_TEXT { HelpID = HID_FUNC_TEXT; };
+hidspecial HID_FUNC_T { HelpID = HID_FUNC_T; };
+hidspecial HID_FUNC_ERSETZEN { HelpID = HID_FUNC_ERSETZEN; };
+hidspecial HID_FUNC_FEST { HelpID = HID_FUNC_FEST; };
+hidspecial HID_FUNC_LAENGE { HelpID = HID_FUNC_LAENGE; };
+hidspecial HID_FUNC_LINKS { HelpID = HID_FUNC_LINKS; };
+hidspecial HID_FUNC_RECHTS { HelpID = HID_FUNC_RECHTS; };
+hidspecial HID_FUNC_TEIL { HelpID = HID_FUNC_TEIL; };
+hidspecial HID_FUNC_WIEDERHOLEN { HelpID = HID_FUNC_WIEDERHOLEN; };
+hidspecial HID_FUNC_WECHSELN { HelpID = HID_FUNC_WECHSELN; };
+hidspecial HID_FUNC_BASIS { HelpID = HID_FUNC_BASIS; };
+hidspecial HID_FUNC_DEZIMAL { HelpID = HID_FUNC_DEZIMAL; };
+hidspecial HID_FUNC_UMRECHNEN { HelpID = HID_FUNC_UMRECHNEN; };
+
diff --git a/sc/util/makefile.mk b/sc/util/makefile.mk
new file mode 100644
index 000000000000..f56e6d55f351
--- /dev/null
+++ b/sc/util/makefile.mk
@@ -0,0 +1,358 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=SC
+TARGET=scalc3
+#LIBTARGET=NO
+GEN_HID=TRUE
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : svpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sv.mk
+
+IENV!:=$(IENV);..$/res
+
+.IF "$(COM)"=="ICC"
+LINKFLAGS+=/SEGMENTS:512 /PACKD:32768
+.ENDIF
+
+# --- Resourcen ----------------------------------------------------
+
+RESLIB1LIST=\
+ $(SRS)$/miscdlgs.srs \
+ $(SRS)$/docshell.srs \
+ $(SRS)$/ui.srs \
+ $(SRS)$/dbgui.srs \
+ $(SRS)$/drawfunc.srs \
+ $(SRS)$/core.srs \
+ $(SRS)$/styleui.srs \
+ $(SRS)$/scslots.srs \
+ $(SRS)$/formdlgs.srs \
+ $(SRS)$/pagedlg.srs \
+ $(SRS)$/navipi.srs \
+ $(SOLARVER)$/$(INPATH)$/res$(EXT_UPDMINOR)$/sfx.srs
+
+RESLIB1NAME=sc
+RESLIB1SRSFILES=\
+ $(RESLIB1LIST)
+
+# --- StarClac DLL
+
+SHL1TARGET= sc$(UPD)$(DLLPOSTFIX)
+SHL1VERSIONMAP= sc.map
+SHL1IMPLIB= sci
+
+SHL1STDLIBS= \
+ $(BASICLIB) \
+ $(SFXLIB) \
+ $(SFXDEBUGLIB) \
+ $(SO2LIB) \
+ $(SVMEMLIB) \
+ $(SVTOOLLIB) \
+ $(SVLLIB) \
+ $(SVXLIB) \
+ $(GOODIESLIB) \
+ $(OFALIB) \
+ $(SVLIB) \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(UCBHELPERLIB) \
+ $(ONELIB) \
+ $(TKLIB) \
+ $(UNOLIB) \
+ $(VOSLIB) \
+ $(SALLIB) \
+ $(TOOLSLIB) \
+ $(UNOTOOLSLIB) \
+ $(SOTLIB) \
+ $(XMLOFFLIB) \
+ $(BASCTLLIB)
+
+
+
+SHL1DEPN= $(L)$/itools.lib
+SHL1LIBS= $(LIB3TARGET) $(LIB4TARGET)
+
+.IF "$(GUI)"!="UNX"
+SHL1OBJS= $(SLO)$/scdll.obj
+.ENDIF
+
+.IF "$(GUI)"=="UNX"
+SHL1STDLIBS+= $(SIMLIB) $(SCHLIB)
+.ENDIF
+
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+.IF "$(GUI)" == "WNT" || "$(GUI)" == "WNT"
+SHL1RES= $(RCTARGET)
+.ENDIF
+
+# --- Linken der Applikation ---------------------------------------
+
+LIB2TARGET=$(SLB)$/scmod.lib
+LIB2OBJFILES= \
+ $(SLO)$/scmod.obj
+
+LIB3TARGET=$(SLB)$/scalc3.lib
+LIB3FILES= \
+ $(SLB)$/app.lib \
+ $(SLB)$/docshell.lib \
+ $(SLB)$/view.lib \
+ $(SLB)$/undo.lib \
+ $(SLB)$/attrdlg.lib \
+ $(SLB)$/namedlg.lib \
+ $(SLB)$/styleui.lib \
+ $(SLB)$/scsbx.lib \
+ $(SLB)$/miscdlgs.lib \
+ $(SLB)$/formdlgs.lib \
+ $(SLB)$/cctrl.lib \
+ $(SLB)$/dbgui.lib \
+ $(SLB)$/optdlg.lib \
+ $(SLB)$/pagedlg.lib \
+ $(SLB)$/drawfunc.lib \
+ $(SLB)$/navipi.lib
+
+LIB3FILES+= \
+ $(SLB)$/unoobj.lib
+
+.IF "$(linkinc)" != ""
+#SHL1STDLIBS+= \
+# $(SLB)$/stardiv_sc.lib
+.ELSE
+#SHL1STDLIBS+= \
+# $(L)$/offsmart.lib \
+# $(L)$/svtsmart.lib \
+# $(L)$/svxsmrt1.lib
+.ENDIF
+
+LIB4TARGET=$(SLB)$/scalc3c.lib
+LIB4FILES= \
+ $(SLB)$/data.lib \
+ $(SLB)$/tool.lib \
+ $(SLB)$/dif.lib \
+ $(SLB)$/excel.lib \
+ $(SLB)$/xcl97.lib \
+ $(SLB)$/html.lib \
+ $(SLB)$/lotus.lib \
+ $(SLB)$/rtf.lib \
+ $(SLB)$/xml.lib \
+ $(SLB)$/scflt.lib
+
+LIB5TARGET=$(LB)$/sclib.lib
+LIB5ARCHIV=$(LB)$/libsclib.a
+
+.IF "$(GUI)"=="UNX"
+LIB5OBJFILES=$(SLO)$/sclib.obj
+.ELSE
+LIB5OBJFILES=$(OBJ)$/sclib.obj
+.ENDIF
+
+.IF "$(depend)" == ""
+ALL: \
+ $(SRS)$/hidother.hid\
+ $(MISC)$/linkinc.ls \
+ ALLTAR \
+ ea
+.ENDIF
+
+# --- Targets -------------------------------------------------------------
+
+.IF "$(depend)" == ""
+
+APP1HEAP= 8192
+.IF "$(GUI)"!="WNT"
+.IF "$(GUI)"=="WIN"
+# DGROUP: DATA<0x5000 HEAP==0x2000 => STACK:0x9000 (36k)
+# wenn das runtergesetz wird, muss evtl. in data\cell.cxx die
+# MAXRECURSION Tiefe angepasst werden !!! (leider ein PI mal Daumen Wert)
+APP1STACK=36864
+.ELSE
+# os2: ca. 2,3*win
+APP1STACK=81920
+.ENDIF
+.ENDIF
+.ENDIF
+
+
+.INCLUDE : target.mk
+
+.IF "$(depend)" == ""
+
+# -------------------------------------------------------------------------
+# MAC
+# -------------------------------------------------------------------------
+
+.IF "$(GUI)" == "MAC"
+
+$(MISC)$/$(SHL1TARGET).def: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo CreateScDocShellDll > $@
+ @echo CreateObjScDocShellDll >> $@
+ @echo InitScDll >> $@
+ @echo DeInitScDll >> $@
+ @echo component_getImplementationEnvironment >> $@
+ @echo component_writeInfo >> $@
+ @echo component_getFactory >> $@
+.ENDIF
+
+.IF "$(GUI)" == "WNT"
+
+$(MISC)$/$(SHL1TARGET).def: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo LIBRARY $(SHL1TARGET) >$@
+ @echo DESCRIPTION 'SCALC3 DLL' >>$@
+ @echo DATA READ WRITE NONSHARED >>$@
+ @echo EXPORTS >>$@
+ @echo CreateScDocShellDll @20 >>$@
+ @echo CreateObjScDocShellDll @21 >>$@
+ @echo InitScDll @22 >>$@
+ @echo DeInitScDll @23 >>$@
+ @echo component_getImplementationEnvironment @24 >>$@
+ @echo component_writeInfo @25 >>$@
+ @echo component_getFactory @26 >>$@
+.ENDIF
+.IF "$(OPTLINKS)" == "YES"
+ echo RC $(RCFLAGS) $(RES)$/scappi.res >>$@
+.ENDIF
+
+# -------------------------------------------------------------------------
+# Presentation Manager 2.0
+# -------------------------------------------------------------------------
+
+.IF "$(GUI)" == "OS2"
+
+$(MISC)$/$(SHL1TARGET).def: makefile.mk
+ @echo ================================================================
+ @echo building $@
+ @echo ----------------------------------------------------------------
+.IF "$(COM)"!="WTC"
+ echo LIBRARY INITINSTANCE TERMINSTANCE >$@
+ echo DESCRIPTION 'ScDLL' >>$@
+ echo PROTMODE >>$@
+ @echo CODE LOADONCALL >>$@
+ @echo DATA PRELOAD MULTIPLE NONSHARED >>$@
+ @echo EXPORTS >>$@
+.IF "$(COM)"!="ICC"
+ @echo _CreateScDocShellDll @2 >>$@
+ @echo _CreateObjScDocShellDll @3 >>$@
+ @echo _InitScDll @4 >>$@
+ @echo _DeInitScDll @5 >>$@
+ @echo _component_getImplementationEnvironment @6 >>$@
+ @echo _component_writeInfo @7 >>$@
+ @echo _component_getFactory @8 >>$@
+.ELSE
+ @echo CreateScDocShellDll @2 >>$@
+ @echo CreateObjScDocShellDll @3 >>$@
+ @echo InitScDll @4 >>$@
+ @echo DeInitScDll @5 >>$@
+ @echo component_getImplementationEnvironment @6 >>$@
+ @echo component_writeInfo @7 >>$@
+ @echo component_getFactory @8 >>$@
+.ENDIF
+.ELSE
+ @echo option DESCRIPTION 'ScDLL' >$@
+ @echo name $(BIN)$/$(SHL1TARGET).dll >>$@
+ @echo CreateScDocShellDll_ @2 >>temp.def
+ @echo CreateObjScDocShellDll_ @3 >>temp.def
+ @echo InitScDll_ @4 >>temp.def
+ @echo DeInitScDll_ @5 >>temp.def
+ @echo component_getImplementationEnvironment_ @6 >>temp.def
+ @echo component_writeInfo_ @7 >>temp.def
+ @echo component_getFactory_ @8 >>temp.def
+ @gawk -f s:\util\exp.awk temp.def >>$@
+ del temp.def
+.ENDIF
+.ENDIF
+.ENDIF
+
+
+
+$(MISCX)$/$(SHL1TARGET).flt:
+ @echo ------------------------------
+ @echo Making: $@
+ @echo WEP>$@
+ @echo LIBMAIN>>$@
+ @echo LibMain>>$@
+
+
+
+$(SRS)$/hidother.hid: hidother.src
+.IF "$(GUI)"=="WNT"
+ @+-mhids hidother.src ..$/$(INPATH)$/srs sc hidother
+ @+echo NO HIDS !!!!
+.ELSE
+ @echo nix
+.ENDIF
+
+ea:
+.IF "$(GUI)" == "OS2"
+ @+echo extended attributes? siehe sw\util.
+# +call swos2.cmd
+.ELSE
+ @echo nix
+.ENDIF
diff --git a/sc/util/makefile.pmk b/sc/util/makefile.pmk
new file mode 100644
index 000000000000..dfc7e558b384
--- /dev/null
+++ b/sc/util/makefile.pmk
@@ -0,0 +1,64 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.pmk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+INCPRE+=$(SOLARINCDIR)$/offuh
+
+
diff --git a/sc/util/sc.map b/sc/util/sc.map
new file mode 100644
index 000000000000..3959ec0ab62c
--- /dev/null
+++ b/sc/util/sc.map
@@ -0,0 +1,12 @@
+SC_1_0 {
+ global:
+ CreateScDocShellDll;
+ CreateObjScDocShellDll;
+ InitScDll;
+ DeInitScDll;
+ component_getImplementationEnvironment;
+ component_writeInfo;
+ component_getFactory;
+ local:
+ *;
+};
diff --git a/sc/util/sc.r b/sc/util/sc.r
new file mode 100644
index 000000000000..efd425e20312
--- /dev/null
+++ b/sc/util/sc.r
@@ -0,0 +1,777 @@
+//*************************************************************************
+//*
+//* $Workfile: SC.R $
+//*
+//* Ersterstellung KH
+//*
+//* Letzte Aenderung $Author: hr $ $Date: 2000-09-18 16:45:16 $
+//* $Revision: 1.1.1.1 $
+//*
+//* $Logfile: T:/sc/util/sc.r_v $
+//*
+//* Copyright (c) 1990 - 1995, STAR DIVISION
+//*
+//*************************************************************************
+
+#include "Types.r"
+
+resource 'SIZE' (-1) {
+ reserved,
+ acceptSuspendResumeEvents,
+ reserved,
+ canBackground,
+ multiFinderAware,
+ backgroundAndForeground,
+ dontGetFrontClicks,
+ ignoreChildDiedEvents,
+ is32BitCompatible,
+ isHighLevelEventAware,
+ onlyLocalHLEvents,
+ isStationeryAware,
+ dontUseTextEditServices,
+ reserved,
+ reserved,
+ reserved,
+ 4096000,
+ 3584000
+};
+
+resource 'SIZE' (0) {
+ reserved,
+ acceptSuspendResumeEvents,
+ reserved,
+ canBackground,
+ multiFinderAware,
+ backgroundAndForeground,
+ dontGetFrontClicks,
+ ignoreChildDiedEvents,
+ is32BitCompatible,
+ isHighLevelEventAware,
+ onlyLocalHLEvents,
+ isStationeryAware,
+ dontUseTextEditServices,
+ reserved,
+ reserved,
+ reserved,
+ 4096000,
+ 3584000
+};
+
+resource 'ics8' (128) {
+ $"ECEC EC00 0000 FF00 0000 0000 0000 0000"
+ $"ECEC EC00 00FF 2BFF 0000 0000 0000 0000"
+ $"ECEC EC00 FF2B F92B FF00 0000 0000 0000"
+ $"ECEC ECFF 2BFF 2BFF 2BFF 0000 0000 0000"
+ $"ECEC FF2B F92B FF2B F92B FF00 0000 0000"
+ $"ECFF 2BFF 2BFF F5FF 2BFF 2BFF 0000 0000"
+ $"FF2B F92B FFF5 F5F5 FF2B F92B FF00 0000"
+ $"2BFF 2BFF F5FF F5FF F5FF 2B2B FFFF 0000"
+ $"F92B FFF5 F5F5 FFF5 F5F5 FFFF 2B2B FF00"
+ $"2BFF F5FF F5FF F5FF FFFF FFFF FFFF FFFF"
+ $"FFF5 F5F5 FFF5 F5FF F5EC F5F5 C0F5 C0F5"
+ $"ECFF F5FF F5FF F5FF FFEC FFC0 C0EC C0EC"
+ $"ECEC FFF5 F5F5 FFFF F5EC F5F5 ECF5 ECF5"
+ $"ECEC ECFF F5FF F5FF F5EC F5F5 FFF5 F5F5"
+ $"ECEC EC00 FFF5 F5FF C0EC ECFF 00FF FFC0"
+ $"ECEC EC00 00FF F5FF 00EC F5F5 FFF5 F5F5"
+};
+
+resource 'ics8' (129) {
+ $"0000 FFFF FFFF FFFF FFFF FFFF 0000 0000"
+ $"0000 FF00 0000 0000 0000 FF00 FF00 0000"
+ $"0000 FF00 ECEC ECC0 4848 FF00 00FF 0000"
+ $"0000 FF00 ECEC ECC0 0000 FFFF FFFF 0000"
+ $"0000 FF00 ECEC ECFF 0000 0000 00FF 0000"
+ $"0000 FF00 ECEC C000 FFFF 00FF FFFF 0000"
+ $"0000 FF00 EC00 48FF 0000 FF00 00FF 0000"
+ $"0000 FF00 EC00 C000 FFFF 00FF FFFF 0000"
+ $"0000 FF00 EC00 48FF 0000 FF00 00FF 0000"
+ $"0000 FF00 ECEC 48FF 0000 FF00 00FF 0000"
+ $"0000 FF00 ECEC B000 FFFF 00FF FFFF 0000"
+ $"0000 FF00 ECEC ECFF 0000 FF00 00FF 0000"
+ $"0000 FF00 ECEC ECFF 0000 FF00 00FF 0000"
+ $"0000 FF00 ECEC EC00 FFFF 00FF FFFF 0000"
+ $"0000 FF00 0000 0000 0000 0000 00FF 0000"
+ $"0000 FFFF FFFF FFFF FFFF FFFF FFFF"
+};
+
+resource 'ics8' (130) {
+ $"00FF FFFF FFFF FFFF FFFF FFFF 0000 0000"
+ $"00FF F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"00FF F5EC ECEC C048 48C0 48FF FFFF 0000"
+ $"00FF F5EC ECEC 00FF FF00 FFFF 00FF 0000"
+ $"00FF F5EC ECEC FFF5 F5FF 00FF 00FF 0000"
+ $"00FF F5EC EC48 FFF5 F5FF 00FF FFFF 0000"
+ $"00FF F5EC F5C0 00FF FF00 FFFF 00FF 0000"
+ $"00FF F5EC F548 FFF5 F5FF F5FF 00FF 0000"
+ $"00FF F5EC EC48 FFF5 F5FF F5FF FFFF 0000"
+ $"00FF F5EC ECEC 00FF FF00 FFFF 00FF 0000"
+ $"00FF F5EC ECEC FFF5 FFFF FFFF 00FF 0000"
+ $"00FF F5EC ECEC FFF5 FF2B FF00 FFFF 0000"
+ $"00FF F5F5 F5F5 F5F5 FFFF 0000 00FF 0000"
+ $"00FF FFFF FFFF FFFF FF00 FF00 00FF 0000"
+ $"0000 00FF 0000 0000 0000 0000 00FF 0000"
+ $"0000 00FF FFFF FFFF FFFF FFFF FFFF"
+};
+
+resource 'ics8' (131) {
+ $"00FF FFFF FFFF FFFF FFFF FF00 0000 0000"
+ $"00FF F5F5 F5F5 F5F5 F5F5 FFFF 0000 0000"
+ $"00FF F5EC ECEC F5F5 F5F5 FF2B FF00 0000"
+ $"00FF F5EC ECEC F5F5 F5F5 FFFF FFFF 0000"
+ $"00FF F5EC ECEC F5F5 F5F5 F5F5 F5FF 0000"
+ $"00FF F5EC ECF5 F5F5 F5F5 F5F5 F5FF 0000"
+ $"00FF F5EC FFF5 FFFF F5FF FFF5 F5FF 0000"
+ $"00FF F5EC F5F5 F5F5 F5F5 F5F5 F5FF 0000"
+ $"00FF F5EC FFFF FFFF F5FF FFF5 F5FF 0000"
+ $"00FF F5EC ECF5 F5F5 F5F5 F5F5 F5FF 0000"
+ $"00FF F5EC FFFF F5FF FFF5 FFF5 F5FF 0000"
+ $"00FF F5EC ECEC F5F5 F5F5 F5F5 F5FF 0000"
+ $"00FF F5EC ECEC F5F5 F5F5 F5F5 F5FF 0000"
+ $"00FF F5EC ECEC F5F5 F5F5 F5F5 F5FF 0000"
+ $"00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000"
+ $"00FF FFFF FFFF FFFF FFFF FFFF FFFF"
+};
+
+resource 'ics4' (128) {
+ $"6660 00F0 0000 0000 6660 0FCF 0000 0000"
+ $"6660 FCDC F000 0000 666F CFCF CF00 0000"
+ $"66FC DCFC DCF0 0000 6FCF CF0F CFCF 0000"
+ $"FCDC F000 FCDC F000 CFCF 0F0F 0FCC FF00"
+ $"DCF0 00F0 00FF CCF0 CF0F 0F0F FFFF FFFF"
+ $"F000 F00F 0600 7070 6F0F 0F0F F6F7 7676"
+ $"66F0 00FF 0600 6060 666F 0F0F 0600 F000"
+ $"6660 F00F 766F 0FF7 6660 0F0F 0600 F0"
+};
+
+resource 'ics4' (129) {
+ $"00FF FFFF FFFF 0000 00F0 0000 00F0 F000"
+ $"00F0 6667 CCF0 0F00 00F0 6667 00FF FF00"
+ $"00F0 666F 0000 0F00 00F0 6670 FF0F FF00"
+ $"00F0 60CF 00F0 0F00 00F0 6070 FF0F FF00"
+ $"00F0 60CF 00F0 0F00 00F0 66CF 00F0 0F00"
+ $"00F0 6650 FF0F FF00 00F0 666F 00F0 0F00"
+ $"00F0 666F 00F0 0F00 00F0 6660 FF0F FF00"
+ $"00F0 0000 0000 0F00 00FF FFFF FFFF FF"
+};
+
+resource 'ics4' (130) {
+ $"0FFF FFFF FFFF 0000 0F00 0000 000F 0000"
+ $"0F06 6670 070F FF00 0F06 660F F0FF 0F00"
+ $"0F06 66F0 0F0F 0F00 0F06 60F0 0F0F FF00"
+ $"0F06 070F F0FF 0F00 0F06 00F0 0F0F 0F00"
+ $"0F06 60F0 0F0F FF00 0F06 660F F0FF 0F00"
+ $"0F06 66F0 FFFF 0F00 0F06 66F0 FCF0 FF00"
+ $"0F00 0000 FF00 0F00 0FFF FFFF F0F0 0F00"
+ $"000F 0000 0000 0F00 000F FFFF FFFF FF"
+};
+
+resource 'ics4' (131) {
+ $"0FFF FFFF FFF0 0000 0F00 0000 00FF 0000"
+ $"0F06 6600 00FC F000 0F06 6600 00FF FF00"
+ $"0F06 6600 0000 0F00 0F06 6000 0000 0F00"
+ $"0F06 F0FF 0FF0 0F00 0F06 0000 0000 0F00"
+ $"0F06 FFFF 0FF0 0F00 0F06 6000 0000 0F00"
+ $"0F06 FF0F F0F0 0F00 0F06 6600 0000 0F00"
+ $"0F06 6600 0000 0F00 0F06 6600 0000 0F00"
+ $"0F00 0000 0000 0F00 0FFF FFFF FFFF FF"
+};
+
+resource 'ics#' (128) {
+ { /* array: 2 elements */
+ /* [1] */
+ $"E200 A500 A880 B540 A220 D550 8888 554C"
+ $"2232 55FF 894A D5FF A34A B548 A9F7 E548",
+ /* [2] */
+ $"E200 E700 EF80 FFC0 FFE0 FFF0 FFF8 FFFC"
+ $"FFFE FFFF FFFF FFFF FFFF FFFF EFFF E7FF"
+ }
+};
+
+resource 'ics#' (129) {
+ { /* array: 2 elements */
+ /* [1] */
+ $"3FF0 2228 2324 233C 2304 26DC 2924 2EDC"
+ $"2924 2524 22DC 2324 2324 22DC 2204 3FFC",
+ /* [2] */
+ $"3FF0 3FF8 3FFC 3FFC 3FFC 3FFC 3FFC 3FFC"
+ $"3FFC 3FFC 3FFC 3FFC 3FFC 3FFC 3FFC 3FFC"
+ }
+};
+
+resource 'ics#' (130) {
+ { /* array: 2 elements */
+ /* [1] */
+ $"7FF0 4410 465C 45B4 4654 4A5C 55B4 5254"
+ $"4A5C 45B4 46F4 46AC 44C4 7FA4 1004 1FFC",
+ /* [2] */
+ $"7FF0 7FF0 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC"
+ $"7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 1FFC 1FFC"
+ }
+};
+
+resource 'ics#' (131) {
+ { /* array: 2 elements */
+ /* [1] */
+ $"7FE0 4830 4828 483C 4804 5004 6B64 6004"
+ $"6F64 5004 4DA4 4804 4804 4804 4804 7FFC",
+ /* [2] */
+ $"7FE0 7FF0 7FF8 7FFC 7FFC 7FFC 7FFC 7FFC"
+ $"7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC 7FFC"
+ }
+};
+
+resource 'ICN#' (128) {
+ { /* array: 2 elements */
+ /* [1] */
+ $"F801 0000 8802 8000 8805 4000 880A A000"
+ $"8811 1000 882C A800 8851 5400 888A 2200"
+ $"8934 1500 8A8A 2A80 8C51 4440 8B20 82A0"
+ $"9451 4550 A28A 2888 D904 1054 928A 28AA"
+ $"C451 4511 A87F FFFF 9040 0001 88D8 6319"
+ $"8D6C B5AD 8A7F FFFF 897C F7BD 88D8 6319"
+ $"8840 0001 884C 6019 8856 B02D 887F FFFF"
+ $"885E F03D 884C 6019 8840 0001 F87F FFFF",
+ /* [2] */
+ $"F801 0000 F803 8000 F807 C000 F80F E000"
+ $"F81F F000 F83F F800 F87F FC00 F8FF FE00"
+ $"F9FF FF00 FBFF FF80 FFFF FFC0 FFFF FFE0"
+ $"FFFF FFF0 FFFF FFF8 FFFF FFFC FFFF FFFE"
+ $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
+ $"FFFF FFFF FBFF FFFF F9FF FFFF F8FF FFFF"
+ $"F87F FFFF F87F FFFF F87F FFFF F87F FFFF"
+ $"F87F FFFF F87F FFFF F87F FFFF F87F FFFF"
+ }
+};
+
+resource 'ICN#' (130) {
+ { /* array: 2 elements */
+ /* [1] */
+ $"3FFF FFF0 2080 0010 2085 EBD0 2084 081C"
+ $"20FB F7F4 2084 0814 2094 0814 2084 081C"
+ $"21FB F7F4 2204 0814 2274 0814 2404 081C"
+ $"25FB F7F4 2404 0814 24F4 0814 2404 081C"
+ $"25FB F7F4 2204 0814 2274 0814 2104 081C"
+ $"20FB F7F4 2084 0814 2094 0814 2084 0FEC"
+ $"20FB F844 2084 0884 2094 0904 2084 0AFC"
+ $"2080 0C04 3FFF FA04 0800 0004 0FFF FFFC",
+ /* [2] */
+ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFFC"
+ $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC"
+ $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC"
+ $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC"
+ $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC"
+ $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC"
+ $"3FFF FFFC 3FFF FFFC 3FFF FFFC 3FFF FFFC"
+ $"3FFF FFFC 3FFF FFFC 0FFF FFFC 0FFF FFFC"
+ }
+};
+
+resource 'ICN#' (129) {
+ { /* array: 2 elements */
+ /* [1] */
+ $"1FFF FE00 1040 0300 1075 EA80 1044 0A40"
+ $"107B F620 1044 0A10 1044 0BF8 1044 0808"
+ $"107B F7F8 1084 0808 1134 0808 1104 0808"
+ $"12FB F7F8 1204 0808 1274 0808 1204 0808"
+ $"12FB F7F8 1104 0808 1134 0808 1104 0808"
+ $"10FB F7F8 1044 0808 1054 0808 1044 0808"
+ $"107B F7F8 1044 0808 1054 0808 1044 0808"
+ $"107B F7F8 1044 0808 1040 0008 1FFF FFF8",
+ /* [2] */
+ $"1FFF FE00 1FFF FF00 1FFF FF80 1FFF FFC0"
+ $"1FFF FFE0 1FFF FFF0 1FFF FFF8 1FFF FFF8"
+ $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8"
+ $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8"
+ $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8"
+ $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8"
+ $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8"
+ $"1FFF FFF8 1FFF FFF8 1FFF FFF8 1FFF FFF8"
+ }
+};
+
+resource 'ICN#' (131) {
+ { /* array: 2 elements */
+ /* [1] */
+ $"3FFF FC00 2100 0600 2100 0500 2100 0480"
+ $"2100 0440 2100 0420 2100 07F0 2100 0010"
+ $"2100 0010 2200 0010 2400 0010 25DD DB10"
+ $"2800 0010 2800 0010 29DE F710 2800 0010"
+ $"2800 0010 29BF BB10 2400 0010 2400 0010"
+ $"2200 0010 2100 0010 2100 0010 2100 0010"
+ $"2100 0010 2100 0010 2100 0010 2100 0010"
+ $"2100 0010 2100 0010 2100 0010 3FFF FFF0",
+ /* [2] */
+ $"3FFF FC00 3FFF FE00 3FFF FF00 3FFF FF80"
+ $"3FFF FFC0 3FFF FFE0 3FFF FFF0 3FFF FFF0"
+ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0"
+ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0"
+ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0"
+ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0"
+ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0"
+ $"3FFF FFF0 3FFF FFF0 3FFF FFF0 3FFF FFF0"
+ }
+};
+
+resource 'icl8' (129) {
+ $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF"
+ $"FFFF FFFF FFFF FF00 0000 0000 0000 0000"
+ $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 FFFF 0000 0000 0000 0000"
+ $"0000 00FF F5EC ECEC ECEC FFFF 48C0 48FF"
+ $"FFFF FF48 C048 FF2B FF00 0000 0000 0000"
+ $"0000 00FF F5EC ECEC ECEC 4848 48C0 4848"
+ $"4848 4848 C048 FF2B 2BFF 0000 0000 0000"
+ $"0000 00FF F5EC ECEC ECEC C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FF2B 2B2B FF00 0000 0000"
+ $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 FF2B 2B2B 2BFF 0000 0000"
+ $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 FFFF FFFF FFFF FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000"
+ $"0000 00FF F5EC ECEC EC48 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC 4848 FFFF 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECF5 C0C0 C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000"
+ $"0000 00FF F5EC ECF5 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECF5 48FF FFFF 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECF5 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECF5 C0C0 C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000"
+ $"0000 00FF F5EC ECF5 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC 4848 FFFF 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC ECC0 C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC 48FF 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC 48FF 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF FF00 0000"
+ $"0000 00FF F5EC ECEC ECEC 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000"
+ $"0000 00FF FFFF FFFF FFFF FFFF FFFF FFFF"
+ $"FFFF FFFF FFFF FFFF FFFF FFFF FF"
+};
+
+resource 'icl8' (130) {
+ $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
+ $"FFFF FFFF FFFF FFFF FFFF FFFF 0000 0000"
+ $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC EC48 4848 48C0 48FF"
+ $"FFFF FF48 C048 FFFF FFFF 48FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC EC48 4848 48C0 4848"
+ $"4848 4848 C048 4848 4848 48FF FFFF 0000"
+ $"0000 FFF5 ECEC ECEC ECC0 C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF 00FF 0000"
+ $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000"
+ $"0000 FFF5 ECEC ECEC EC48 48FF 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000"
+ $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF FFFF 0000"
+ $"0000 FFF5 ECEC ECEC C0C0 C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF 00FF 0000"
+ $"0000 FFF5 ECEC EC48 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000"
+ $"0000 FFF5 ECEC EC48 48FF FFFF 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000"
+ $"0000 FFF5 ECEC F548 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF FFFF 0000"
+ $"0000 FFF5 ECEC F5C0 C0C0 C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF 00FF 0000"
+ $"0000 FFF5 ECEC F548 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000"
+ $"0000 FFF5 ECEC F548 FFFF FFFF 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000"
+ $"0000 FFF5 ECEC F548 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF FFFF 0000"
+ $"0000 FFF5 ECEC F5C0 C0C0 C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF 00FF 0000"
+ $"0000 FFF5 ECEC EC48 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000"
+ $"0000 FFF5 ECEC EC48 48FF FFFF 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000"
+ $"0000 FFF5 ECEC ECEC 4848 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF FFFF 0000"
+ $"0000 FFF5 ECEC ECEC ECC0 C0C0 C000 FFFF"
+ $"FFFF FFFF 00FF FFFF FFFF FFFF 00FF 0000"
+ $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000"
+ $"0000 FFF5 ECEC ECEC EC48 48FF 48FF F5F5"
+ $"F5F5 F5F5 FFF5 F5F5 F5F5 F5FF 00FF 0000"
+ $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5"
+ $"F5F5 F5F5 FFFF FFFF FFFF FF00 FFFF 0000"
+ $"0000 FFF5 ECEC ECEC ECC0 C0C0 C000 FFFF"
+ $"FFFF FFFF FF2B 2B2B 2BFF 0000 00FF 0000"
+ $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5"
+ $"F5F5 F5F5 FF2B 2B2B FF00 0000 00FF 0000"
+ $"0000 FFF5 ECEC ECEC EC48 48FF 48FF F5F5"
+ $"F5F5 F5F5 FF2B 2BFF 0000 0000 00FF 0000"
+ $"0000 FFF5 ECEC ECEC EC48 4848 48FF F5F5"
+ $"F5F5 F5F5 FF2B FF00 FFFF FFFF FFFF 0000"
+ $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 FFFF 0000 0000 0000 00FF 0000"
+ $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
+ $"FFFF FFFF FF00 FF00 0000 0000 00FF 0000"
+ $"0000 0000 FF00 0000 0000 0000 0000 0000"
+ $"0000 0000 0000 0000 0000 0000 00FF 0000"
+ $"0000 0000 FFFF FFFF FFFF FFFF FFFF FFFF"
+ $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
+};
+
+resource 'icl8' (131) {
+ $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
+ $"FFFF FFFF FFFF 0000 0000 0000 0000 0000"
+ $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5FF FF00 0000 0000 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5FF 2BFF 0000 0000 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5FF 2B2B FF00 0000 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5FF 2B2B 2BFF 0000 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5FF 2B2B 2B2B FF00 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5FF FFFF FFFF FFFF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECF5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECFF FFFF F5FF FFFF F5FF"
+ $"FFFF F5FF FFF5 FFFF F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC F5FF FFFF F5FF FFFF FFF5"
+ $"FFFF FFFF F5FF FFFF F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC F5F5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC F5FF FFF5 FFFF FFFF FFFF"
+ $"FFF5 FFFF FFF5 FFFF F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECF5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECF5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 ECEC ECEC ECF5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000 0000"
+ $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
+ $"FFFF FFFF FFFF FFFF FFFF FFFF"
+};
+
+resource 'icl8' (128) {
+ $"ECEC ECEC EC00 0000 0000 0000 0000 00FF"
+ $"0000 0000 0000 0000 0000 0000 0000 0000"
+ $"ECEC ECEC EC00 0000 0000 0000 0000 FF2B"
+ $"FF00 0000 0000 0000 0000 0000 0000 0000"
+ $"ECEC ECEC EC00 0000 0000 0000 00FF 2BFD"
+ $"2BFF 0000 0000 0000 0000 0000 0000 0000"
+ $"ECEC ECEC EC00 0000 0000 0000 FF2B FF2B"
+ $"FD2B FF00 0000 0000 0000 0000 0000 0000"
+ $"ECEC ECEC EC00 0000 0000 00FF 2B2B 2BFF"
+ $"2B2B 2BFF 0000 0000 0000 0000 0000 0000"
+ $"ECEC ECEC EC00 0000 0000 FF2B FDFD 2B2B"
+ $"FF2B FD2B FF00 0000 0000 0000 0000 0000"
+ $"ECEC ECEC EC00 0000 00FF 2BFF 2B2B 2BFF"
+ $"F5FF 2BFD 2BFF 0000 0000 0000 0000 0000"
+ $"ECEC ECEC EC00 0000 FF2B 2B2B FF2B FFF5"
+ $"F5F5 FF2B 2B2B FF00 0000 0000 0000 0000"
+ $"ECEC ECEC EC00 00FF 2B2B FDFD 2BFF F5F5"
+ $"F5F5 F5FF 2BFD 2BFF 0000 0000 0000 0000"
+ $"ECEC ECEC EC00 FF2B FF2B 2B2B FFF5 FFF5"
+ $"F5F5 FFF5 FF2B FD2B FF00 0000 0000 0000"
+ $"ECEC ECEC ECFF 2B2B 2BFF 2BFF F5F5 F5FF"
+ $"F5FF F5F5 F5FF 2B2B 2BFF 0000 0000 0000"
+ $"ECEC ECEC FF2B FDFD 2B2B FFF5 F5F5 F5F5"
+ $"FBF5 F5F5 F5F5 FF2B FD2B FF00 0000 0000"
+ $"ECEC ECFF 2BFF 2B2B 2BFF F5FF F5F5 F5FF"
+ $"F5FF F5F5 F5FF F5FF 2BFD 2BFF 0000 0000"
+ $"ECEC FF2B 2B2B FF2B FFF5 F5F5 FFF5 FFF5"
+ $"F5F5 FFF5 FFF5 F5F5 FF2B 2B2B FF00 0000"
+ $"ECFF 2BFD FD2B 2BFF F5F5 F5F5 F5FB F5F5"
+ $"F5F5 F5FB F5F5 F5F5 F5FF 2BFD 2BFF 0000"
+ $"FF2B 2BFD 2B2B FFF5 FFF5 F5F5 FFF5 FFF5"
+ $"F5F5 FFF5 FFF5 F5F5 FFF5 FF2B FD2B FF00"
+ $"ECFF 2B2B 2BFF F5F5 F5FF F5FF F5F5 F5FF"
+ $"F5FF F5F5 F5FF F5FF F5F5 F5FF 2B2B 2BFF"
+ $"ECEC FF2B FFF5 F5F5 F5FF FFFF FFFF FFFF"
+ $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
+ $"ECEC ECFF F5F5 F5F5 F5FF F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5FF"
+ $"ECEC ECEC FFF5 F5F5 FFFF F5C0 C0F5 F5F5"
+ $"F5C0 C0F5 F5F5 C0C0 F5F5 F5C0 C0F5 F5FF"
+ $"ECEC ECEC ECFF F5FF F5FF C000 C0EC F5F5"
+ $"C000 C0EC F5C0 00C0 ECF5 C000 C0EC F5FF"
+ $"ECEC ECEC EC00 FFF5 F5FF C0C0 C0C0 FFFF"
+ $"C0C0 C0C0 FFC0 C0C0 C0FF C0C0 C0C0 FFFF"
+ $"ECEC ECEC EC00 00FF F5FF C0EC FFEC F5F5"
+ $"C0EC FFEC F5C0 ECFF ECF5 C0EC FFEC F5FF"
+ $"ECEC ECEC EC00 0000 FFFF F5EC ECF5 F5F5"
+ $"F5EC ECF5 F5F5 ECEC F5F5 F5EC ECF5 F5FF"
+ $"ECEC ECEC EC00 0000 00FF F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5FF"
+ $"ECEC ECEC EC00 0000 00FF F5F5 C0C0 F5F5"
+ $"F5C0 C0F5 F5F5 F5F5 F5F5 F5C0 C0F5 F5FF"
+ $"ECEC ECEC EC00 0000 00FF F5C0 00C0 ECF5"
+ $"C000 C0EC F5F5 F5F5 F5F5 C000 C0EC F5FF"
+ $"ECEC ECEC EC00 0000 00FF FFC0 C0C0 C0FF"
+ $"C0C0 C0C0 FFFF FFFF FFFF C0C0 C0C0 FFFF"
+ $"ECEC ECEC EC00 0000 00FF F5C0 ECFF ECF5"
+ $"C0EC FFEC F5F5 F5F5 F5F5 C0EC FFEC F5FF"
+ $"ECEC ECEC EC00 0000 00FF F5F5 ECEC F5F5"
+ $"F5EC ECF5 F5F5 F5F5 F5F5 F5EC ECF5 F5FF"
+ $"ECEC ECEC EC00 0000 00FF F5F5 F5F5 F5F5"
+ $"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5FF"
+ $"ECEC ECEC EC00 0000 00FF FFFF FFFF FFFF"
+ $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
+};
+
+resource 'icl4' (128) {
+ $"6666 6000 0000 000F 0000 0000 0000 0000"
+ $"6666 6000 0000 00FC F000 0000 0000 0000"
+ $"6666 6000 0000 0FCA CF00 0000 0000 0000"
+ $"6666 6000 0000 FCFC ACF0 0000 0000 0000"
+ $"6666 6000 000F CCCF CCCF 0000 0000 0000"
+ $"6666 6000 00FC AACC FCAC F000 0000 0000"
+ $"6666 6000 0FCF CCCF 0FCA CF00 0000 0000"
+ $"6666 6000 FCCC FCF0 00FC CCF0 0000 0000"
+ $"6666 600F CCAA CF00 000F CACF 0000 0000"
+ $"6666 60FC FCCC F0F0 00F0 FCAC F000 0000"
+ $"6666 6FCC CFCF 000F 0F00 0FCC CF00 0000"
+ $"6666 FCAA CCF0 0000 E000 00FC ACF0 0000"
+ $"666F CFCC CF0F 000F 0F00 0F0F CACF 0000"
+ $"66FC CCFC F000 F0F0 00F0 F000 FCCC F000"
+ $"6FCA ACCF 0000 0E00 000E 0000 0FCA CF00"
+ $"FCCA CCF0 F000 F0F0 00F0 F000 F0FC ACF0"
+ $"6FCC CF00 0F0F 000F 0F00 0F0F 000F CCCF"
+ $"66FC F000 0FFF FFFF FFFF FFFF FFFF FFFF"
+ $"666F 0000 0F00 0000 0000 0000 0000 000F"
+ $"6666 F000 FF07 7000 0770 0077 0007 700F"
+ $"6666 6F0F 0F70 7600 7076 0707 6070 760F"
+ $"6666 60F0 0F77 77FF 7777 F777 7F77 77FF"
+ $"6666 600F 0F76 F600 76F6 076F 6076 F60F"
+ $"6666 6000 FF06 6000 0660 0066 0006 600F"
+ $"6666 6000 0F00 0000 0000 0000 0000 000F"
+ $"6666 6000 0F00 7700 0770 0000 0007 700F"
+ $"6666 6000 0F07 0760 7076 0000 0070 760F"
+ $"6666 6000 0FF7 777F 7777 FFFF FF77 77FF"
+ $"6666 6000 0F07 6F60 76F6 0000 0076 F60F"
+ $"6666 6000 0F00 6600 0660 0000 0006 600F"
+ $"6666 6000 0F00 0000 0000 0000 0000 000F"
+ $"6666 6000 0FFF FFFF FFFF FFFF FFFF FFFF"
+};
+
+resource 'icl4' (129) {
+ $"000F FFFF FFFF FFFF FFFF FFF0 0000 0000"
+ $"000F 0000 0000 0000 0000 00FF 0000 0000"
+ $"000F 0666 66FF 070F FFF0 70FC F000 0000"
+ $"000F 0666 6600 0700 0000 70FC CF00 0000"
+ $"000F 0666 6677 70FF FFFF 0FFC CCF0 0000"
+ $"000F 0666 6600 0F00 0000 F0FC CCCF 0000"
+ $"000F 0666 6600 0F00 0000 F0FF FFFF F000"
+ $"000F 0666 6600 0F00 0000 F000 0000 F000"
+ $"000F 0666 6677 70FF FFFF 0FFF FFFF F000"
+ $"000F 0666 6000 0F00 0000 F000 0000 F000"
+ $"000F 0666 00FF 0F00 0000 F000 0000 F000"
+ $"000F 0666 0000 0F00 0000 F000 0000 F000"
+ $"000F 0660 7777 70FF FFFF 0FFF FFFF F000"
+ $"000F 0660 0000 0F00 0000 F000 0000 F000"
+ $"000F 0660 0FFF 0F00 0000 F000 0000 F000"
+ $"000F 0660 0000 0F00 0000 F000 0000 F000"
+ $"000F 0660 7777 70FF FFFF 0FFF FFFF F000"
+ $"000F 0660 0000 0F00 0000 F000 0000 F000"
+ $"000F 0666 00FF 0F00 0000 F000 0000 F000"
+ $"000F 0666 0000 0F00 0000 F000 0000 F000"
+ $"000F 0666 6777 70FF FFFF 0FFF FFFF F000"
+ $"000F 0666 6600 0F00 0000 F000 0000 F000"
+ $"000F 0666 660F 0F00 0000 F000 0000 F000"
+ $"000F 0666 6600 0F00 0000 F000 0000 F000"
+ $"000F 0666 6677 70FF FFFF 0FFF FFFF F000"
+ $"000F 0666 6600 0F00 0000 F000 0000 F000"
+ $"000F 0666 660F 0F00 0000 F000 0000 F000"
+ $"000F 0666 6600 0F00 0000 F000 0000 F000"
+ $"000F 0666 6677 70FF FFFF 0FFF FFFF F000"
+ $"000F 0666 6600 0F00 0000 F000 0000 F000"
+ $"000F 0000 0000 0000 0000 0000 0000 F000"
+ $"000F FFFF FFFF FFFF FFFF FFFF FFFF F0"
+};
+
+resource 'icl4' (130) {
+ $"00FF FFFF FFFF FFFF FFFF FFFF FFFF 0000"
+ $"00F0 0000 0000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 070F FFF0 70FF FF0F 0000"
+ $"00F0 6666 6000 0700 0000 7000 000F FF00"
+ $"00F0 6666 6777 70FF FFFF 0FFF FFFF 0F00"
+ $"00F0 6666 6000 0F00 0000 F000 000F 0F00"
+ $"00F0 6666 600F 0F00 0000 F000 000F 0F00"
+ $"00F0 6666 6000 0F00 0000 F000 000F FF00"
+ $"00F0 6666 7777 70FF FFFF 0FFF FFFF 0F00"
+ $"00F0 6660 0000 0F00 0000 F000 000F 0F00"
+ $"00F0 6660 0FFF 0F00 0000 F000 000F 0F00"
+ $"00F0 6600 0000 0F00 0000 F000 000F FF00"
+ $"00F0 6607 7777 70FF FFFF 0FFF FFFF 0F00"
+ $"00F0 6600 0000 0F00 0000 F000 000F 0F00"
+ $"00F0 6600 FFFF 0F00 0000 F000 000F 0F00"
+ $"00F0 6600 0000 0F00 0000 F000 000F FF00"
+ $"00F0 6607 7777 70FF FFFF 0FFF FFFF 0F00"
+ $"00F0 6660 0000 0F00 0000 F000 000F 0F00"
+ $"00F0 6660 0FFF 0F00 0000 F000 000F 0F00"
+ $"00F0 6666 0000 0F00 0000 F000 000F FF00"
+ $"00F0 6666 6777 70FF FFFF 0FFF FFFF 0F00"
+ $"00F0 6666 6000 0F00 0000 F000 000F 0F00"
+ $"00F0 6666 600F 0F00 0000 F000 000F 0F00"
+ $"00F0 6666 6000 0F00 0000 FFFF FFF0 FF00"
+ $"00F0 6666 6777 70FF FFFF F000 0F00 0F00"
+ $"00F0 6666 6000 0F00 0000 F000 F000 0F00"
+ $"00F0 6666 600F 0F00 0000 F00F 0000 0F00"
+ $"00F0 6666 6000 0F00 0000 F0F0 FFFF FF00"
+ $"00F0 0000 0000 0000 0000 FF00 0000 0F00"
+ $"00FF FFFF FFFF FFFF FFFF F0F0 0000 0F00"
+ $"0000 F000 0000 0000 0000 0000 0000 0F00"
+ $"0000 FFFF FFFF FFFF FFFF FFFF FFFF FF"
+};
+
+resource 'icl4' (131) {
+ $"00FF FFFF FFFF FFFF FFFF FF00 0000 0000"
+ $"00F0 0000 0000 0000 0000 0FF0 0000 0000"
+ $"00F0 6666 6000 0000 0000 0FCF 0000 0000"
+ $"00F0 6666 6000 0000 0000 0FCC F000 0000"
+ $"00F0 6666 6000 0000 0000 0FCC CF00 0000"
+ $"00F0 6666 6000 0000 0000 0FCC CCF0 0000"
+ $"00F0 6666 6000 0000 0000 0FFF FFFF 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 6666 0000 0000 0000 0000 000F 0000"
+ $"00F0 6660 0000 0000 0000 0000 000F 0000"
+ $"00F0 666F FF0F FF0F FF0F F0FF 000F 0000"
+ $"00F0 6600 0000 0000 0000 0000 000F 0000"
+ $"00F0 6600 0000 0000 0000 0000 000F 0000"
+ $"00F0 660F FF0F FFF0 FFFF 0FFF 000F 0000"
+ $"00F0 6600 0000 0000 0000 0000 000F 0000"
+ $"00F0 6600 0000 0000 0000 0000 000F 0000"
+ $"00F0 660F F0FF FFFF F0FF F0FF 000F 0000"
+ $"00F0 6660 0000 0000 0000 0000 000F 0000"
+ $"00F0 6660 0000 0000 0000 0000 000F 0000"
+ $"00F0 6666 0000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 6666 6000 0000 0000 0000 000F 0000"
+ $"00F0 0000 0000 0000 0000 0000 000F 0000"
+ $"00FF FFFF FFFF FFFF FFFF FFFF FFFF"
+};
+
+resource 'FREF' (128) {
+ 'APPL',
+ 0,
+ ""
+};
+
+resource 'FREF' (129) {
+ 'SVsc',
+ 1,
+ ""
+};
+
+resource 'FREF' (130) {
+ 'sVsc',
+ 2,
+ ""
+};
+
+resource 'FREF' (131) {
+ 'TEXT',
+ 3,
+ ""
+};
+
+resource 'BNDL' (128) {
+ 'SVsc',
+ 0,
+ { /* array TypeArray: 2 elements */
+ /* [1] */
+ 'FREF',
+ { /* array IDArray: 4 elements */
+ /* [1] */
+ 0, 128,
+ /* [2] */
+ 1, 129,
+ /* [3] */
+ 2, 130,
+ /* [4] */
+ 3, 131
+ },
+ /* [2] */
+ 'ICN#',
+ { /* array IDArray: 4 elements */
+ /* [1] */
+ 0, 128,
+ /* [2] */
+ 1, 129,
+ /* [3] */
+ 2, 130,
+ /* [4] */
+ 3, 131
+ }
+ }
+};
diff --git a/sc/workben/addin.cxx b/sc/workben/addin.cxx
new file mode 100644
index 000000000000..f3ecd67ef449
--- /dev/null
+++ b/sc/workben/addin.cxx
@@ -0,0 +1,627 @@
+/*************************************************************************
+ *
+ * $RCSfile: addin.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:17 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#include <usr/factoryhlp.hxx>
+#include <usr/macros.hxx>
+#include <usr/reflserv.hxx>
+#include <vos/mutex.hxx>
+#include <vcl/svapp.hxx>
+#include <tools/debug.hxx>
+#include <tools/date.hxx>
+#include <svtools/itemprop.hxx>
+#include <usr/proptypehlp.hxx>
+#include <cppuhelper/factory.hxx>
+#include <uno/lbnames.h>
+#include <osl/diagnose.h>
+
+#include <com/sun/star/util/date.hpp>
+
+#include "addin.hxx"
+#include "result.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------
+
+SMART_UNO_IMPLEMENTATION( ScTestAddIn, UsrObject );
+
+#define SCADDIN_SERVICE L"com.sun.star.sheet.AddIn"
+#define SCTESTADDIN_SERVICE L"stardiv.one.sheet.DemoAddIn"
+
+//------------------------------------------------------------------------
+
+extern "C" {
+
+void SAL_CALL component_getImplementationEnvironment(
+ const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv )
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
+
+sal_Bool SAL_CALL component_writeInfo(
+ void * pServiceManager, registry::XRegistryKey * pRegistryKey )
+{
+ if (pRegistryKey)
+ {
+ try
+ {
+ UString aImpl = L"/";
+ aImpl += ScTestAddIn::getImplementationName_Static();
+ aImpl += L"/UNO/SERVICES";
+
+ uno::Reference<registry::XRegistryKey> xNewKey(
+ reinterpret_cast<registry::XRegistryKey*>(pRegistryKey)->createKey(aImpl) );
+
+ uno::Sequence <rtl::OUString> aSequ = ScTestAddIn::getSupportedServiceNames_Static();
+ const rtl::OUString * pArray = aSequ.getConstArray();
+ for( INT32 i = 0; i < aSequ.getLength(); i++ )
+ xNewKey->createKey( pArray[i] );
+
+ return sal_True;
+ }
+ catch (registry::InvalidRegistryException&)
+ {
+ OSL_ENSHURE( sal_False, "### InvalidRegistryException!" );
+ }
+ }
+ return sal_False;
+}
+
+void * SAL_CALL component_getFactory(
+ const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
+{
+ void* pRet = 0;
+
+ if ( pServiceManager && UString(pImplName) == ScTestAddIn::getImplementationName_Static() )
+ {
+ uno::Reference<lang::XSingleServiceFactory> xFactory( cppu::createOneInstanceFactory(
+ reinterpret_cast<lang::XMultiServiceFactory*>(pServiceManager),
+ ScTestAddIn::getImplementationName_Static(),
+ ScTestAddIn_CreateInstance,
+ ScTestAddIn::getSupportedServiceNames_Static() ) );
+
+ if (xFactory.is())
+ {
+ xFactory->acquire();
+ pRet = xFactory.get();
+ }
+ }
+
+ return pRet;
+}
+
+} // extern C
+
+//------------------------------------------------------------------------
+
+ScTestAddIn::ScTestAddIn()
+{
+}
+
+ScTestAddIn::~ScTestAddIn()
+{
+}
+
+UString ScTestAddIn::getImplementationName_Static()
+{
+ return L"stardiv.StarCalc.ScTestAddIn";
+}
+
+::com::sun::star::uno::Sequence< ::rtl::OUString > ScTestAddIn::getSupportedServiceNames_Static()
+{
+ uno::Sequence< rtl::OUString > aRet(2);
+ rtl::OUString* pArray = aRet.getArray();
+ pArray[0] = SCADDIN_SERVICE;
+ pArray[1] = SCTESTADDIN_SERVICE;
+ return aRet;
+}
+
+uno::Reference<uno::XInterface> ScTestAddIn_CreateInstance(
+ const uno::Reference<lang::XMultiServiceFactory>& )
+{
+ static uno::Reference<uno::XInterface> xInst = (cppu::OWeakObject*)new ScTestAddIn();
+ return xInst;
+}
+
+
+// XAddIn
+
+UString ScTestAddIn::getProgrammaticFuntionName(const UString& aDisplayName)
+ THROWS( (UsrSystemException) )
+{
+ //!...
+ return UString();
+}
+
+UString ScTestAddIn::getDisplayFunctionName(const UString& aProgrammaticName)
+ THROWS( (UsrSystemException) )
+{
+ // return translated strings
+
+ UString aRet;
+ if ( aProgrammaticName == L"countParams" ) aRet = L"ParamAnzahl";
+ else if ( aProgrammaticName == L"addOne" ) aRet = L"PlusEins";
+ else if ( aProgrammaticName == L"repeatStr" ) aRet = L"WiederholeString";
+ else if ( aProgrammaticName == L"getDateString" ) aRet = L"Datumsstring";
+ else if ( aProgrammaticName == L"getColorValue" ) aRet = L"Farbwert";
+ else if ( aProgrammaticName == L"transpose" ) aRet = L"Transponieren";
+ else if ( aProgrammaticName == L"transposeInt" ) aRet = L"IntegerTransponieren";
+ else if ( aProgrammaticName == L"repeatMultiple" )aRet = L"Mehrfach";
+ else if ( aProgrammaticName == L"getStrOrVal" ) aRet = L"StringOderWert";
+ else if ( aProgrammaticName == L"callAsync" ) aRet = L"Asynchron";
+ return aRet;
+}
+
+UString ScTestAddIn::getFunctionDescription(const UString& aProgrammaticName)
+ THROWS( (UsrSystemException) )
+{
+ // return translated strings
+
+ UString aRet;
+ if ( aProgrammaticName == L"countParams" ) aRet = L"Gibt die Anzahl der Parameter zurueck.";
+ else if ( aProgrammaticName == L"addOne" ) aRet = L"Addiert 1 zur uebergebenen Zahl.";
+ else if ( aProgrammaticName == L"repeatStr" ) aRet = L"Wiederholt eine Zeichenkette.";
+ else if ( aProgrammaticName == L"getDateString" ) aRet = L"Wandelt ein Datum in eine Zeichenkette.";
+ else if ( aProgrammaticName == L"getColorValue" ) aRet = L"Gibt den Farbwert eines Zellbereichs zurueck. Bei transparentem Hintergrund wird -1 zurueckgegeben";
+ else if ( aProgrammaticName == L"transpose" ) aRet = L"Transponiert eine Matrix.";
+ else if ( aProgrammaticName == L"transposeInt" ) aRet = L"Transponiert eine Matrix mit Ganzzahlen.";
+ else if ( aProgrammaticName == L"repeatMultiple" )aRet = L"Wiederholt mehrere Bestandteile.";
+ else if ( aProgrammaticName == L"getStrOrVal" ) aRet = L"Gibt einen String oder einen Wert zurueck.";
+ else if ( aProgrammaticName == L"callAsync" ) aRet = L"Test fuer asynchrone Funktion.";
+ return aRet;
+}
+
+UString ScTestAddIn::getDisplayArgumentName(const UString& aProgrammaticFunctionName,
+ INT32 nArgument) THROWS( (UsrSystemException) )
+{
+ // return translated strings
+
+ UString aRet;
+ if ( aProgrammaticFunctionName == L"countParams" )
+ {
+ if ( nArgument == 0 ) aRet = L"Parameter";
+ }
+ else if ( aProgrammaticFunctionName == L"addOne" )
+ {
+ if ( nArgument == 0 ) aRet = L"Wert";
+ }
+ else if ( aProgrammaticFunctionName == L"repeatStr" )
+ {
+ if ( nArgument == 0 ) aRet = L"String";
+ else if ( nArgument == 1 ) aRet = L"Anzahl";
+ }
+ else if ( aProgrammaticFunctionName == L"getDateString" )
+ {
+ if ( nArgument == 0 ) aRet = L"Dokument";
+ else if ( nArgument == 1 ) aRet = L"Wert";
+ }
+ else if ( aProgrammaticFunctionName == L"getColorValue" )
+ {
+ if ( nArgument == 0 ) aRet = L"Bereich";
+ }
+ else if ( aProgrammaticFunctionName == L"transpose" )
+ {
+ if ( nArgument == 0 ) aRet = L"Matrix";
+ }
+ else if ( aProgrammaticFunctionName == L"transposeInt" )
+ {
+ if ( nArgument == 0 ) aRet = L"Matrix";
+ }
+ else if ( aProgrammaticFunctionName == L"repeatMultiple" )
+ {
+ if ( nArgument == 0 ) aRet = L"Anzahl";
+ else if ( nArgument == 1 ) aRet = L"Trenner";
+ else if ( nArgument == 2 ) aRet = L"Inhalt";
+ }
+ else if ( aProgrammaticFunctionName == L"getStrOrVal" )
+ {
+ if ( nArgument == 0 ) aRet = L"Flag";
+ }
+ else if ( aProgrammaticFunctionName == L"callAsync" )
+ {
+ if ( nArgument == 0 ) aRet = L"Name";
+ }
+ return aRet;
+}
+
+UString ScTestAddIn::getArgumentDescription(const UString& aProgrammaticFunctionName,
+ INT32 nArgument) THROWS( (UsrSystemException) )
+{
+ // return translated strings
+
+ UString aRet;
+ if ( aProgrammaticFunctionName == L"countParams" )
+ {
+ if ( nArgument == 0 ) aRet = L"Beliebiger Parameter";
+ }
+ else if ( aProgrammaticFunctionName == L"addOne" )
+ {
+ if ( nArgument == 0 ) aRet = L"Der Wert, zu dem 1 addiert wird";
+ }
+ else if ( aProgrammaticFunctionName == L"repeatStr" )
+ {
+ if ( nArgument == 0 ) aRet = L"Der Text, der wiederholt wird";
+ else if ( nArgument == 1 ) aRet = L"Die Anzahl der Wiederholungen";
+ }
+ else if ( aProgrammaticFunctionName == L"getDateString" )
+ {
+ if ( nArgument == 0 ) aRet = L"(intern)";
+ else if ( nArgument == 1 ) aRet = L"Der Wert, der als Datum formatiert wird";
+ }
+ else if ( aProgrammaticFunctionName == L"getColorValue" )
+ {
+ if ( nArgument == 0 ) aRet = L"Der Bereich, dessen Hintergrundfarbe abgefragt wird";
+ }
+ else if ( aProgrammaticFunctionName == L"transpose" )
+ {
+ if ( nArgument == 0 ) aRet = L"Die Matrix, die transponiert werden soll";
+ }
+ else if ( aProgrammaticFunctionName == L"transposeInt" )
+ {
+ if ( nArgument == 0 ) aRet = L"Die Matrix, die transponiert werden soll";
+ }
+ else if ( aProgrammaticFunctionName == L"repeatMultiple" )
+ {
+ if ( nArgument == 0 ) aRet = L"Anzahl der Wiederholungen";
+ else if ( nArgument == 1 ) aRet = L"Text, der zwischen den Inhalten erscheint";
+ else if ( nArgument == 2 ) aRet = L"Mehrere Inhalte";
+ }
+ else if ( aProgrammaticFunctionName == L"getStrOrVal" )
+ {
+ if ( nArgument == 0 ) aRet = L"Wenn Flag 0 ist, wird ein Wert zurueckgegeben, sonst ein String.";
+ }
+ else if ( aProgrammaticFunctionName == L"callAsync" )
+ {
+ if ( nArgument == 0 ) aRet = L"Ein String";
+ }
+ return aRet;
+}
+
+UString ScTestAddIn::getProgrammaticCategoryName(const UString& aProgrammaticFunctionName)
+ THROWS( (UsrSystemException) )
+{
+ // return non-translated strings
+
+ UString aRet;
+ if ( aProgrammaticFunctionName == L"countParams" ) aRet = L"Information";
+ else if ( aProgrammaticFunctionName == L"addOne" ) aRet = L"Mathematical";
+ else if ( aProgrammaticFunctionName == L"repeatStr" ) aRet = L"Text";
+ else if ( aProgrammaticFunctionName == L"getDateString" ) aRet = L"Date&Time";
+ else if ( aProgrammaticFunctionName == L"getColorValue" ) aRet = L"Spreadsheet";
+ else if ( aProgrammaticFunctionName == L"transpose" ) aRet = L"Matrix";
+ else if ( aProgrammaticFunctionName == L"transposeInt" ) aRet = L"Matrix";
+ else if ( aProgrammaticFunctionName == L"repeatMultiple" )aRet = L"Text";
+ else if ( aProgrammaticFunctionName == L"getStrOrVal" ) aRet = L"Add-In";
+ else if ( aProgrammaticFunctionName == L"callAsync" ) aRet = L"Realtime"; // new group
+ return aRet;
+}
+
+UString ScTestAddIn::getDisplayCategoryName(const UString& aProgrammaticFunctionName)
+ THROWS( (UsrSystemException) )
+{
+ // return translated strings
+
+ return L"irgendwas"; // not used for predefined categories
+}
+
+// XLocalizable
+
+void ScTestAddIn::setLocale(const lang::Locale& eLocale) THROWS( (UsrSystemException) )
+{
+ aFuncLoc = eLocale;
+// DBG_ERROR( UStringToString(aFuncLoc.Language, CHARSET_SYSTEM) + String("-") +
+// UStringToString(aFuncLoc.Country, CHARSET_SYSTEM) );
+}
+
+::com::sun::star::lang::Locale SAL_CALL ScTestAddIn::getLocale( ) throw(::com::sun::star::uno::RuntimeException)
+{
+ return aFuncLoc;
+}
+
+// XTestAddIn
+
+sal_Int32 SAL_CALL ScTestAddIn::countParams( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArgs ) throw(::com::sun::star::uno::RuntimeException)
+{
+ return aArgs.getLength();
+}
+
+double SAL_CALL ScTestAddIn::addOne( double fValue ) throw(::com::sun::star::uno::RuntimeException)
+{
+ return fValue + 1.0;
+}
+
+::rtl::OUString SAL_CALL ScTestAddIn::repeatStr( const ::rtl::OUString& aStr, sal_Int32 nCount ) throw(::com::sun::star::uno::RuntimeException)
+{
+ String aRet;
+ String aStrStr = OUStringToString( aStr, CHARSET_SYSTEM );
+ for (long i=0; i<nCount; i++)
+ aRet += aStrStr;
+
+ return StringToOUString( aRet, CHARSET_SYSTEM );
+}
+
+::rtl::OUString SAL_CALL ScTestAddIn::getDateString( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xCaller, double fValue ) throw(::com::sun::star::uno::RuntimeException)
+{
+ uno::Any aDateAny = xCaller->getPropertyValue( L"NullDate" );
+//! if ( aDateAny.getReflection()->equals( *Date_getReflection() ) )
+ {
+ util::Date aDate;
+ aDateAny >>= aDate;
+ //const Date* pDate = (const Date*)aDateAny.get();
+ //if (pDate)
+ {
+ //Date aNewDate = *pDate;
+ Date aNewDate( aDate.Day, aDate.Month, aDate.Year );
+
+ aNewDate += (long)(fValue+0.5);
+
+ String aRet;
+ aRet += aNewDate.GetDay();
+ aRet += '.';
+ aRet += aNewDate.GetMonth();
+ aRet += '.';
+ aRet += aNewDate.GetYear();
+ return StringToOUString( aRet, CHARSET_SYSTEM );
+ }
+ }
+
+ return L"**ERROR**";
+}
+
+sal_Int32 SAL_CALL ScTestAddIn::getColorValue( const ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange >& xRange ) throw(::com::sun::star::uno::RuntimeException)
+{
+ uno::Reference<beans::XPropertySet> xProp( xRange, uno::UNO_QUERY );
+ if (xProp.is())
+ {
+ long nRet = -1;
+ uno::Any aTrans = xProp->getPropertyValue( L"IsCellBackgroundTransparent" );
+ BOOL bIsTrans;
+ aTrans >>= bIsTrans; //! dont use >>= for BOOL
+ if (!bIsTrans)
+ {
+ uno::Any aCol = xProp->getPropertyValue( L"CellBackColor" );
+ //nRet = NAMESPACE_USR(OPropertyTypeConversion)::toINT32( aCol );
+ aCol >>= nRet;
+ }
+ return nRet;
+ }
+ return 0;
+}
+
+double lcl_GetDoubleElement( const uno::Sequence< uno::Sequence<double> >& aMatrix, long nCol, long nRow )
+{
+ if ( nRow < aMatrix.getLength() )
+ {
+ const uno::Sequence<double>& rRowSeq = aMatrix.getConstArray()[nRow];
+ if ( nCol < rRowSeq.getLength() )
+ return rRowSeq.getConstArray()[nCol];
+ }
+ return 0.0; // error
+}
+
+INT32 lcl_GetLongElement( const uno::Sequence< uno::Sequence<INT32> >& aMatrix, long nCol, long nRow )
+{
+ if ( nRow < aMatrix.getLength() )
+ {
+ const uno::Sequence<INT32>& rRowSeq = aMatrix.getConstArray()[nRow];
+ if ( nCol < rRowSeq.getLength() )
+ return rRowSeq.getConstArray()[nCol];
+ }
+ return 0.0; // error
+}
+
+::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > > SAL_CALL ScTestAddIn::transpose( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > >& aMatrix ) throw(::com::sun::star::uno::RuntimeException)
+{
+ long nRowCount = aMatrix.getLength();
+ long nColCount = 0;
+ if ( nRowCount )
+ nColCount = aMatrix.getConstArray()[0].getLength();
+
+ uno::Sequence< uno::Sequence<double> > aRet( nColCount );
+ for (long nCol=0; nCol<nColCount; nCol++)
+ {
+ uno::Sequence<double> aSubSeq(nRowCount);
+ for (long nRow=0; nRow<nRowCount; nRow++)
+ aSubSeq.getArray()[nRow] = lcl_GetDoubleElement( aMatrix, nCol, nRow );
+
+ aRet.getArray()[nCol] = aSubSeq;
+ }
+
+ return aRet;
+}
+
+::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< sal_Int32 > > SAL_CALL ScTestAddIn::transposeInt( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< sal_Int32 > >& aMatrix ) throw(::com::sun::star::uno::RuntimeException)
+{
+ long nRowCount = aMatrix.getLength();
+ long nColCount = 0;
+ if ( nRowCount )
+ nColCount = aMatrix.getConstArray()[0].getLength();
+
+ uno::Sequence< uno::Sequence<INT32> > aRet( nColCount );
+ for (long nCol=0; nCol<nColCount; nCol++)
+ {
+ uno::Sequence<INT32> aSubSeq(nRowCount);
+ for (long nRow=0; nRow<nRowCount; nRow++)
+ aSubSeq.getArray()[nRow] = lcl_GetLongElement( aMatrix, nCol, nRow );
+
+ aRet.getArray()[nCol] = aSubSeq;
+ }
+
+ return aRet;
+}
+
+::rtl::OUString SAL_CALL ScTestAddIn::repeatMultiple( sal_Int32 nCount, const ::com::sun::star::uno::Any& aFirst, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aFollow ) throw(::com::sun::star::uno::RuntimeException)
+{
+ String aSeparator;
+ if ( !aFirst.hasValue() ) // not specified
+ aSeparator = ';';
+ else
+ {
+ rtl::OUString aUStr;
+ aFirst >>= aUStr;
+ aSeparator = OUStringToString( aUStr, CHARSET_SYSTEM );
+ }
+
+ String aContent;
+ long nContCount = aFollow.getLength();
+ const uno::Any* pArr = aFollow.getConstArray();
+ for (long nPos=0; nPos<nContCount; nPos++)
+ {
+ if ( nPos > 0 )
+ aContent += ' ';
+ rtl::OUString aUStr;
+ pArr[nPos] >>= aUStr;
+ aContent += OUStringToString( aUStr, CHARSET_SYSTEM );
+ }
+
+ String aRet;
+
+ for (long i=0; i<nCount; i++)
+ {
+ if (i>0)
+ aRet += aSeparator;
+ aRet += aContent;
+ }
+
+ return StringToOUString(aRet, CHARSET_SYSTEM);
+}
+
+::com::sun::star::uno::Any SAL_CALL ScTestAddIn::getStrOrVal( sal_Int32 nFlag ) throw(::com::sun::star::uno::RuntimeException)
+{
+ uno::Any aRet;
+
+ //! Test
+ if ( nFlag == 42 )
+ {
+ uno::Sequence<rtl::OUString> aInner(3);
+ aInner.getArray()[0] = L"Bla";
+ aInner.getArray()[1] = L"Fasel";
+ aInner.getArray()[2] = L"Suelz";
+ uno::Sequence< uno::Sequence<rtl::OUString> > aOuter( &aInner, 1 );
+
+ //return uno::Any( &aOuter, Sequence< Sequence<UString> >::getReflection() );
+
+ aRet <<= aOuter;
+ return aRet;
+ }
+ //! Test
+
+ if ( nFlag )
+ aRet <<= UString(L"This is a string.");
+ else
+ aRet <<= (INT32)42;
+
+ return aRet;
+}
+
+::com::sun::star::uno::Reference< ::com::sun::star::sheet::XVolatileResult > SAL_CALL ScTestAddIn::callAsync( const ::rtl::OUString& aString ) throw(::com::sun::star::uno::RuntimeException)
+{
+ String aStr = OUStringToString( aString, CHARSET_SYSTEM );
+ char c = (char) aStr;
+ if ( c >= '0' && c <= '9' )
+ {
+ if (!xNumResult.is())
+ xNumResult = new ScAddInResult( "Num" );
+ return xNumResult;
+ }
+ else
+ {
+ if (!xAlphaResult.is())
+ xAlphaResult = new ScAddInResult( "Str" );
+ return xAlphaResult;
+ }
+}
+
+
+// XServiceName
+
+::rtl::OUString SAL_CALL ScTestAddIn::getServiceName( ) throw(::com::sun::star::uno::RuntimeException)
+{
+ return SCTESTADDIN_SERVICE; // name of specific AddIn service
+}
+
+// XServiceInfo
+
+::rtl::OUString SAL_CALL ScTestAddIn::getImplementationName( ) throw(::com::sun::star::uno::RuntimeException)
+{
+ return getImplementationName_Static();
+}
+
+sal_Bool SAL_CALL ScTestAddIn::supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException)
+{
+ return ServiceName == SCADDIN_SERVICE ||
+ ServiceName == SCTESTADDIN_SERVICE;
+}
+
+::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL ScTestAddIn::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException)
+{
+ return getSupportedServiceNames_Static();
+}
+
+//------------------------------------------------------------------------
+
+
+
diff --git a/sc/workben/addin.hxx b/sc/workben/addin.hxx
new file mode 100644
index 000000000000..281f3c1a2224
--- /dev/null
+++ b/sc/workben/addin.hxx
@@ -0,0 +1,136 @@
+/*************************************************************************
+ *
+ * $RCSfile: addin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:17 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_ADDIN_HXX
+#define SC_ADDIN_HXX
+
+#include <com/sun/star/sheet/XAddIn.hpp>
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <stardiv/starcalc/test/XTestAddIn.hpp>
+
+#include <cppuhelper/implbase4.hxx> // helper for implementations
+
+
+com::sun::star::uno::Reference<com::sun::star::uno::XInterface> ScTestAddIn_CreateInstance(
+ const com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory>& );
+
+
+class ScTestAddIn : public cppu::WeakImplHelper4<
+ com::sun::star::sheet::XAddIn,
+ stardiv::starcalc::test::XTestAddIn,
+ com::sun::star::lang::XServiceName,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ com::sun::star::uno::Reference<com::sun::star::sheet::XVolatileResult> xAlphaResult; //! Test
+ com::sun::star::uno::Reference<com::sun::star::sheet::XVolatileResult> xNumResult; //! Test
+ com::sun::star::lang::Locale aFuncLoc;
+
+public:
+ ScTestAddIn();
+ virtual ~ScTestAddIn();
+
+// SMART_UNO_DECLARATION( ScTestAddIn, UsrObject );
+// friend Reflection * ScTestAddIn_getReflection();
+// virtual BOOL queryInterface( Uik, XInterfaceRef& );
+// virtual XIdlClassRef getIdlClass(void);
+
+ static UString getImplementationName_Static();
+ static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static();
+
+ // XAddIn
+ virtual ::rtl::OUString SAL_CALL getProgrammaticFuntionName( const ::rtl::OUString& aDisplayName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getDisplayFunctionName( const ::rtl::OUString& aProgrammaticName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getFunctionDescription( const ::rtl::OUString& aProgrammaticName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getDisplayArgumentName( const ::rtl::OUString& aProgrammaticFunctionName, sal_Int32 nArgument ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getArgumentDescription( const ::rtl::OUString& aProgrammaticFunctionName, sal_Int32 nArgument ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getProgrammaticCategoryName( const ::rtl::OUString& aProgrammaticFunctionName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getDisplayCategoryName( const ::rtl::OUString& aProgrammaticFunctionName ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XLocalizable
+ virtual void SAL_CALL setLocale( const ::com::sun::star::lang::Locale& eLocale ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XTestAddIn
+ virtual sal_Int32 SAL_CALL countParams( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArgs ) throw(::com::sun::star::uno::RuntimeException);
+ virtual double SAL_CALL addOne( double fValue ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL repeatStr( const ::rtl::OUString& aStr, sal_Int32 nCount ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getDateString( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xCaller, double fValue ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getColorValue( const ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange >& xRange ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > > SAL_CALL transpose( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > >& aMatrix ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< sal_Int32 > > SAL_CALL transposeInt( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< sal_Int32 > >& aMatrix ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XVolatileResult > SAL_CALL callAsync( const ::rtl::OUString& aString ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL repeatMultiple( sal_Int32 nCount, const ::com::sun::star::uno::Any& aFirst, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aFollow ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getStrOrVal( sal_Int32 nFlag ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceName
+ virtual ::rtl::OUString SAL_CALL getServiceName( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif
+
diff --git a/sc/workben/makefile.mk b/sc/workben/makefile.mk
new file mode 100644
index 000000000000..0845b6e3539a
--- /dev/null
+++ b/sc/workben/makefile.mk
@@ -0,0 +1,192 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:16 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+PRJ=..
+
+PRJNAME=workben
+TARGET=tst
+IDLMAP=map.idl
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : svpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sv.mk
+
+# --- Files --------------------------------------------------------
+
+UNOUCRDEP= $(BIN)$/applicat.rdb
+UNOUCRRDB= $(BIN)$/applicat.rdb
+
+UNOTYPES=\
+ com.sun.star.util.Date \
+ com.sun.star.sheet.XAddIn \
+ com.sun.star.sheet.XVolatileResult \
+ com.sun.star.lang.XServiceName \
+ com.sun.star.lang.XServiceInfo \
+ com.sun.star.lang.Locale \
+ com.sun.star.lang.XSingleServiceFactory \
+ com.sun.star.registry.XRegistryKey \
+ com.sun.star.uno.XWeak \
+ com.sun.star.uno.XAggregation \
+ com.sun.star.uno.TypeClass \
+ com.sun.star.lang.XTypeProvider \
+ com.sun.star.lang.XMultiServiceFactory \
+ stardiv.starcalc.test.XTestAddIn
+
+PACKAGE=stardiv$/starcalc$/test
+IDLFILES= testadd.idl
+
+CXXFILES= \
+ addin.cxx \
+ result.cxx
+
+SLOFILES= \
+ $(SLO)$/addin.obj \
+ $(SLO)$/result.obj
+
+EXCEPTIONSFILES= \
+ $(SLO)$/addin.obj \
+ $(SLO)$/result.obj
+
+
+#SRC1FILES=
+#SRS1NAME=
+#SRSFILES= $(SRS)$/
+#SRC2FILES=
+#SRS2NAME=
+
+#RESLIB1NAME=tst
+#RESLIB1SRSFILES=\
+# $(SRS)$/
+# $(SOLARRESDIR)$/
+
+SHL1TARGET= $(TARGET)$(UPD)$(DLLPOSTFIX)
+#SHL1LIBS=$(SLB)$/$(TARGET).lib
+
+SHL1STDLIBS=$(USRLIB) $(SVLIB) $(TOOLSLIB) $(ONELIB) $(SVLLIB) $(TKLIB) $(SALLIB) $(VOSLIB) $(CPPULIB) $(CPPUHELPERLIB)
+
+SHL1DEPN= $(L)$/itools.lib $(SVLIBDEPEND)
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+SHL1IMPLIB=$(TARGET)
+#SHL1RES= $(RES)$/$(TARGET).res
+SHL1OBJS= $(SLO)$/addin.obj $(SLO)$/result.obj $(SLO)$/workben$/testadd.obj
+
+# --- Targets ------------------------------------------------------
+.INCLUDE : target.mk
+
+.IF "$(GUI)" == "WNT"
+
+$(MISC)$/$(SHL1TARGET).def: makefile.mk
+ @echo ------------------------------
+ @echo Making: $@
+ @echo LIBRARY $(SHL1TARGET) >$@
+ @echo DESCRIPTION 'StarOne Test-DLL' >>$@
+ @echo DATA READ WRITE NONSHARED >>$@
+ @echo EXPORTS >>$@
+ @echo component_getImplementationEnvironment @24 >>$@
+ @echo component_writeInfo @25 >>$@
+ @echo component_getFactory @26 >>$@
+.ENDIF
+
+.IF "$(GUI)" == "WIN"
+
+$(MISC)$/$(SHL1TARGET).def: makefile
+ @echo ------------------------------
+ @echo Making: $@
+ @echo LIBRARY $(SHL1TARGET) >$@
+ @echo DESCRIPTION 'StarOne Test-DLL' >>$@
+ @echo EXETYPE WINDOWS >>$@
+ @echo PROTMODE >>$@
+ @echo CODE LOADONCALL MOVEABLE DISCARDABLE >>$@
+ @echo DATA PRELOAD MOVEABLE SINGLE >>$@
+ @echo HEAPSIZE 0 >>$@
+ @echo EXPORTS >>$@
+ @echo _CreateWindow @2 >>$@
+.ENDIF
+
+.IF "$(GUI)" == "OS2"
+
+$(MISC)$/$(SHL1TARGET).def: makefile
+ @echo ================================================================
+ @echo building $@
+ @echo ----------------------------------------------------------------
+.IF "$(COM)"!="WTC"
+ echo LIBRARY INITINSTANCE TERMINSTANCE >$@
+ echo DESCRIPTION 'StarOne Test-DLL' >>$@
+ echo PROTMODE >>$@
+ @echo CODE LOADONCALL >>$@
+ @echo DATA PRELOAD MULTIPLE NONSHARED >>$@
+ @echo EXPORTS >>$@
+.IF "$(COM)"!="ICC"
+ @echo _CreateWindow @2 >>$@
+.ELSE
+ @echo CreateWindow @2 >>$@
+.ENDIF
+
+.ELSE
+ @echo option DESCRIPTION 'StarOne Test-DLL' >$@
+ @echo name $(BIN)$/$(SHL1TARGET).dll >>$@
+ @echo CreateWindow_ @2 >>$@
+ @gawk -f s:\util\exp.awk temp.def >>$@
+ del temp.def
+.ENDIF
+.ENDIF
diff --git a/sc/workben/map.idl b/sc/workben/map.idl
new file mode 100644
index 000000000000..4d597831201d
--- /dev/null
+++ b/sc/workben/map.idl
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * $RCSfile: map.idl,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:17 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_WORKBEN_MAP_IDL
+#define SC_WORKBEN_MAP_IDL
+
+#import <com/smartmap.idl>
+//#import <vcl/vclmap.idl>
+
+language cpp
+{
+};
+
+#endif
diff --git a/sc/workben/result.cxx b/sc/workben/result.cxx
new file mode 100644
index 000000000000..3e0f13096f0d
--- /dev/null
+++ b/sc/workben/result.cxx
@@ -0,0 +1,165 @@
+/*************************************************************************
+ *
+ * $RCSfile: result.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:17 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#include <tools/debug.hxx>
+#include <usr/ustring.hxx>
+
+#include "result.hxx"
+
+using namespace com::sun::star;
+
+//------------------------------------------------------------------------
+
+SV_IMPL_PTRARR( XResultListenerArr_Impl, XResultListenerPtr );
+
+//SMART_UNO_IMPLEMENTATION( ScAddInResult, UsrObject );
+
+//------------------------------------------------------------------------
+
+ScAddInResult::ScAddInResult(const String& rStr) :
+ aArg( rStr ),
+ nTickCount( 0 )
+{
+ aTimer.SetTimeout( 1000 );
+ aTimer.SetTimeoutHdl( LINK( this, ScAddInResult, TimeoutHdl ) );
+ aTimer.Start();
+}
+
+void ScAddInResult::NewValue()
+{
+ ++nTickCount;
+
+ uno::Any aAny;
+ if ( TRUE /* nTickCount % 4 */ )
+ {
+ String aRet = aArg;
+ aRet += nTickCount;
+ rtl::OUString aUStr = StringToOUString( aRet, CHARSET_SYSTEM );
+ aAny <<= aUStr;
+ }
+ // else void
+
+// sheet::ResultEvent aEvent( (UsrObject*)this, aAny );
+ sheet::ResultEvent aEvent( (cppu::OWeakObject*)this, aAny );
+
+ for ( USHORT n=0; n<aListeners.Count(); n++ )
+ (*aListeners[n])->modified( aEvent );
+}
+
+IMPL_LINK_INLINE_START( ScAddInResult, TimeoutHdl, Timer*, pT )
+{
+ NewValue();
+ pT->Start();
+ return 0;
+}
+IMPL_LINK_INLINE_END( ScAddInResult, TimeoutHdl, Timer*, pT )
+
+ScAddInResult::~ScAddInResult()
+{
+}
+
+// XVolatileResult
+
+void SAL_CALL ScAddInResult::addResultListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XResultListener >& aListener ) throw(::com::sun::star::uno::RuntimeException)
+{
+ uno::Reference<sheet::XResultListener> *pObj = new uno::Reference<sheet::XResultListener>( aListener );
+ aListeners.Insert( pObj, aListeners.Count() );
+
+ if ( aListeners.Count() == 1 )
+ {
+ acquire(); // one Ref for all listeners
+
+ NewValue(); //! Test
+ }
+}
+
+void SAL_CALL ScAddInResult::removeResultListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XResultListener >& aListener ) throw(::com::sun::star::uno::RuntimeException)
+{
+ acquire();
+
+ USHORT nCount = aListeners.Count();
+ for ( USHORT n=nCount; n--; )
+ {
+ uno::Reference<sheet::XResultListener> *pObj = aListeners[n];
+ if ( *pObj == aListener )
+ {
+ aListeners.DeleteAndDestroy( n );
+
+ if ( aListeners.Count() == 0 )
+ {
+ nTickCount = 0; //! Test
+
+ release(); // release listener Ref
+ }
+
+ break;
+ }
+ }
+
+ release();
+}
+
+//------------------------------------------------------------------------
+
+
+
diff --git a/sc/workben/result.hxx b/sc/workben/result.hxx
new file mode 100644
index 000000000000..6efdbd28179f
--- /dev/null
+++ b/sc/workben/result.hxx
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * $RCSfile: result.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:17 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef SC_RESULT_HXX
+#define SC_RESULT_HXX
+
+#ifndef _SVARRAY_HXX
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _SV_TIMER_HXX
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+
+#include <com/sun/star/sheet/XVolatileResult.hpp>
+
+#include <cppuhelper/implbase1.hxx> // helper for implementations
+
+
+//class XResultListenerRef;
+typedef ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XResultListener >* XResultListenerPtr;
+SV_DECL_PTRARR_DEL( XResultListenerArr_Impl, XResultListenerPtr, 4, 4 );
+
+
+class ScAddInResult : public cppu::WeakImplHelper1<
+ com::sun::star::sheet::XVolatileResult>
+{
+private:
+ String aArg;
+ long nTickCount;
+ XResultListenerArr_Impl aListeners;
+ Timer aTimer;
+
+ DECL_LINK( TimeoutHdl, Timer* );
+
+ void NewValue();
+
+public:
+ ScAddInResult(const String& rStr);
+ virtual ~ScAddInResult();
+
+// SMART_UNO_DECLARATION( ScAddInResult, UsrObject );
+
+// virtual BOOL queryInterface( Uik, XInterfaceRef& );
+// virtual XIdlClassRef getIdlClass(void);
+
+ // XVolatileResult
+ virtual void SAL_CALL addResultListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XResultListener >& aListener ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeResultListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XResultListener >& aListener ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+
+#endif
+
diff --git a/sc/workben/test.cxx b/sc/workben/test.cxx
new file mode 100644
index 000000000000..9ea362fe0507
--- /dev/null
+++ b/sc/workben/test.cxx
@@ -0,0 +1,2075 @@
+/*************************************************************************
+ *
+ * $RCSfile: test.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:17 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <tools/debug.hxx>
+#include <svtools/libcall.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/window.hxx>
+#include <vcl/imagebtn.hxx>
+#include <vcl/field.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/help.hxx>
+#include <usr/conver.hxx>
+#include <usr/uno.hxx>
+#include <usr/refl.hxx>
+#include <stardiv/one/frame/xcollect.hxx>
+#include <stardiv/one/text/offfield.hxx>
+#include <stardiv/one/offmisc.hxx>
+#include <stardiv/one/sheet/offtable.hxx>
+#include <stardiv/one/text/offtext.hxx>
+#include <stardiv/one/offstyle.hxx>
+#include <stardiv/one/offview.hxx>
+#include <stardiv/uno/repos/serinfo.hxx>
+#include <stardiv/one/sheet/sctypes.hxx>
+#include <stardiv/one/sheet/scmodel.hxx>
+#include <stardiv/one/sheet/sccells.hxx>
+#include <stardiv/one/sheet/sctables.hxx>
+#include <stardiv/one/sheet/sctable.hxx>
+#include <stardiv/one/sheet/sccell.hxx>
+#include <stardiv/one/sheet/scpostit.hxx>
+#include <stardiv/one/sheet/scview.hxx>
+#include <stardiv/one/sheet/scdata.hxx>
+#include <stardiv/one/sheet/scattr.hxx>
+
+//! das muss als Konstante in irgendeine idl-Datei!!!!
+#define TEXTCONTROLCHAR_PARAGRAPH_BREAK 0
+
+
+class MyFixedText : public FixedText
+{
+protected:
+ void RequestHelp( const HelpEvent& rHEvt );
+public:
+ MyFixedText(Window* pParent) : FixedText(pParent) {}
+};
+
+class MyWindow : public Window
+{
+private:
+ NumericField aCountField;
+ PushButton aCountButton;
+ MyFixedText aTimeText;
+ NumericField aColField;
+ NumericField aRowField;
+ NumericField aPosField;
+ NumericField aLenField;
+ Edit aTextEdit;
+ PushButton aTextButton;
+ PushButton aBlaButton;
+ PushButton aTabButton;
+ PushButton aViewButton;
+
+public:
+ MyWindow( Window *pParent );
+
+ DECL_LINK(CountHdl, PushButton*);
+ DECL_LINK(TextHdl, PushButton*);
+ DECL_LINK(BlaHdl, PushButton*);
+ DECL_LINK(TabHdl, PushButton*);
+ DECL_LINK(ViewHdl, PushButton*);
+};
+
+//-----------------------------------------------------------------------
+
+class ScTestListener : public XSelectionChangeListener, public UsrObject
+{
+private:
+ FixedText* pFixedText;
+
+public:
+ ScTestListener(FixedText* pF);
+ virtual ~ScTestListener();
+
+ SMART_UNO_DECLARATION( ScTestListener, UsrObject );
+
+ virtual XInterface * queryInterface( UsrUik );
+ virtual XIdlClassRef getIdlClass(void);
+
+ virtual void disposing(const EventObject& Source);
+
+ // XSelectionChangeListener
+ virtual void selectionChanged(const EventObject& aEvent);
+};
+
+//-----------------------------------------------------------------------
+
+static long nBla = 0;
+
+static XCellRef xGlobalCell;
+
+//-----------------------------------------------------------------------
+
+ScTestListener::ScTestListener(FixedText* pF) :
+ pFixedText( pF )
+{
+}
+
+ScTestListener::~ScTestListener()
+{
+}
+
+XInterface* ScTestListener::queryInterface( UsrUik aUIK )
+{
+ if ( aUIK == XSelectionChangeListener::getSmartUik() )
+ return (XSelectionChangeListener*) this;
+
+ return UsrObject::queryInterface( aUIK );
+}
+
+XIdlClassRef ScTestListener::getIdlClass(void)
+{
+ static XIdlClassRef xClass = createStandardClass( L"ScTestListener",
+ UsrObject::getUsrObjectIdlClass(),
+ 1, XSelectionChangeListener_getReflection() );
+ return xClass;
+}
+
+void ScTestListener::disposing(const EventObject& Source)
+{
+}
+
+// XSelectionChangeListener
+
+void ScTestListener::selectionChanged(const EventObject& aEvent)
+{
+ static USHORT nBla = 0;
+ pFixedText->SetText(++nBla);
+
+ XInterfaceRef xInt = aEvent.Source;
+ if (!xInt) return;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return;
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return;
+ XCellCollectionRef xCells = (XCellCollection*)
+ xSelInt->queryInterface(XCellCollection::getSmartUik());
+ if (!xCells) return;
+
+ String aStr = OUStringToString( xCells->getAddress(), CHARSET_SYSTEM );
+ pFixedText->SetText(aStr);
+}
+
+
+//-----------------------------------------------------------------------
+
+extern "C" Window* __LOADONCALLAPI CreateWindow( Window *pParent, const String& rParam )
+{
+ MyWindow *pWin = new MyWindow( pParent );
+ return pWin;
+}
+
+void MyFixedText::RequestHelp( const HelpEvent& rHEvt )
+{
+ String aTxtStr=GetText();
+ Size aTxtSize=GetTextSize(aTxtStr);
+ Point aShowPoint= OutputToScreenPixel(Point(0,0));
+ if ( ( rHEvt.GetMode() & HELPMODE_QUICK ) == HELPMODE_QUICK &&
+ aTxtSize.Width()>GetSizePixel().Width())
+ Help::ShowQuickHelp( Rectangle(aShowPoint,aTxtSize), aTxtStr, QUICKHELP_TOP|QUICKHELP_LEFT );
+ else
+ FixedText::RequestHelp( rHEvt );
+}
+
+MyWindow::MyWindow( Window *pParent ) :
+ Window( pParent ),
+ aCountField( this, WinBits(WB_SPIN | WB_REPEAT | WB_BORDER) ),
+ aCountButton( this ),
+ aTimeText( this ),
+ aColField( this, WinBits(WB_SPIN | WB_REPEAT | WB_BORDER) ),
+ aRowField( this, WinBits(WB_SPIN | WB_REPEAT | WB_BORDER) ),
+ aPosField( this, WinBits(WB_SPIN | WB_REPEAT | WB_BORDER) ),
+ aLenField( this, WinBits(WB_SPIN | WB_REPEAT | WB_BORDER) ),
+ aTextEdit( this, WinBits(WB_BORDER) ),
+ aTextButton( this ),
+ aBlaButton( this ),
+ aTabButton( this ),
+ aViewButton( this )
+{
+ aCountField.SetPosSizePixel( Point(10,10), Size(40,20) );
+ aCountField.SetValue(1);
+
+ aCountButton.SetPosSizePixel( Point(10,40), Size(100,30) );
+ aCountButton.SetText("hochzaehlen");
+
+ aTimeText.SetPosSizePixel( Point(10,80), Size(100,20) );
+
+ aColField.SetPosSizePixel( Point(10,120), Size(40,20) );
+ aRowField.SetPosSizePixel( Point(60,120), Size(40,20) );
+ aPosField.SetPosSizePixel( Point(10,150), Size(40,20) );
+ aLenField.SetPosSizePixel( Point(60,150), Size(40,20) );
+ aTextEdit.SetPosSizePixel( Point(10,180), Size(100,20) );
+
+ aTextButton.SetPosSizePixel( Point(10,210), Size(100,30) );
+ aTextButton.SetText("col/row/pos/len");
+
+ aBlaButton.SetPosSizePixel( Point(10,260), Size(100,30) );
+ aBlaButton.SetText("Bla");
+
+ aTabButton.SetPosSizePixel( Point(10,310), Size(100,30) );
+ aTabButton.SetText("Tabellen");
+
+ aViewButton.SetPosSizePixel( Point(10,360), Size(100,30) );
+ aViewButton.SetText("Pfui");
+
+ aCountButton.SetClickHdl(LINK(this, MyWindow, CountHdl));
+ aTextButton.SetClickHdl(LINK(this, MyWindow, TextHdl));
+ aBlaButton.SetClickHdl(LINK(this, MyWindow, BlaHdl));
+ aTabButton.SetClickHdl(LINK(this, MyWindow, TabHdl));
+ aViewButton.SetClickHdl(LINK(this, MyWindow, ViewHdl));
+
+ aCountField.Show();
+ aCountButton.Show();
+ aTimeText.Show();
+ aColField.Show();
+ aRowField.Show();
+ aPosField.Show();
+ aLenField.Show();
+ aTextEdit.Show();
+ aTextButton.Show();
+ aBlaButton.Show();
+ aTabButton.Show();
+ aViewButton.Show();
+}
+
+//-----------------------------------------------------------------------
+
+XSpreadsheetDocumentRef lcl_GetDocument()
+{
+ XServiceManagerRef xProv = getGlobalServiceManager();
+ DBG_ASSERT( xProv.is(), "Kein ServiceManager!" );
+
+ XServiceRegistryRef xReg = (XServiceRegistry*)xProv->queryInterface(XServiceRegistry::getSmartUik());
+ if ( !xReg )
+ return NULL;
+
+ Sequence<Uik> aIfaces( 1 );
+ aIfaces.getArray()[0] = XModelCollection::getSmartUik();
+ XServiceProviderRef xSSI = xProv->getServiceProvider( L"stardiv.desktop.ModelCollection",
+ aIfaces, Sequence<Uik>() );
+
+ XModelCollectionRef aCollRef = (XModelCollection*)
+ xSSI->newInstance()->queryInterface( XModelCollection::getSmartUik() );
+ USHORT nCount = aCollRef->getCount();
+
+ XSpreadsheetDocumentRef xModel; // Calc-Model
+ for (USHORT nMod=0; nMod<nCount && !xModel; nMod++) // Calc-Doc suchen
+ {
+ XModelRef aRef = aCollRef->getItemByIndex( nMod );
+ if ( aRef )
+ {
+ aRef->acquire();
+ xModel = (XSpreadsheetDocument*) aRef->queryInterface( XSpreadsheetDocument::getSmartUik() );
+ aRef->release();
+ }
+ }
+ return xModel;
+}
+
+XInterfaceRef lcl_GetView()
+{
+ XInterfaceRef xView;
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (xDoc)
+ xView = xDoc->getDDELinks(); //! temporaer zum Testen !!!!!!!!!
+
+ return xView;
+}
+
+//-----------------------------------------------------------------------
+
+void lcl_OutputNames( const XInterfaceRef& xSource, // XNameAccess
+ const XSpreadsheetDocumentRef& xDoc,
+ USHORT nCol, USHORT nRow, USHORT nTab )
+{
+ CellAddress aAdr;
+ aAdr.Sheet = nTab;
+ aAdr.Column = nCol;
+ aAdr.Row = nRow;
+
+ XNameAccessRef xNames = (XNameAccess*)xSource->queryInterface(XNameAccess::getSmartUik());
+ if (!xNames) return;
+ Sequence<UString> aSeq = xNames->getElementNames();
+
+ USHORT nLen = (USHORT)aSeq.getLen();
+
+ XCellRef xCell = xDoc->getCell(aAdr);
+ if (!xCell) return;
+ xCell->setValue( nLen );
+ ++aAdr.Row;
+
+ UString* pAry = aSeq.getArray();
+ for (USHORT i=0; i<nLen; i++)
+ {
+ xCell = xDoc->getCell(aAdr);
+ if (!xCell) return;
+ XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
+ if (!xText) return;
+ xText->setText( pAry[i] );
+ ++aAdr.Row;
+ }
+}
+
+//-----------------------------------------------------------------------
+
+void lcl_SetText( const XTextRef& xText )
+{
+ if (!xText.is()) return;
+ XTextCursorRef xCursor = xText->createTextCursor();
+ if (!xCursor.is()) return;
+ XTextPositionRef xPos = (XTextPosition*)xCursor->queryInterface(XTextPosition::getSmartUik());
+ XPropertySetRef xProp = (XPropertySet*)xCursor->queryInterface(XPropertySet::getSmartUik());
+ XControlCharacterInsertableRef xControl = (XControlCharacterInsertable*)
+ xCursor->queryInterface(XControlCharacterInsertable::getSmartUik());
+ XParagraphCursorRef xPara = (XParagraphCursor*)
+ xCursor->queryInterface(XParagraphCursor::getSmartUik());
+
+ if (!xPos.is() || !xControl.is() || !xPara.is()) return; // PropertySet kann fehlen
+
+ xText->setText(L"bla fasel");
+ xCursor->gotoEnd(FALSE);
+ xControl->insertControlCharacter( TEXTCONTROLCHAR_PARAGRAPH_BREAK );
+ xPos->collapseToEnd();
+ xPos->setText(L"sülz"); // zweiter Absatz
+
+ xCursor->gotoStart(FALSE);
+ xPara->gotoEndOfParagraph(FALSE);
+ xCursor->goLeft(5, TRUE); // letzte 5 Zeichen im 1. Absatz
+ if (xProp.is())
+ xProp->setPropertyValue(L"Bold", UsrAny((BOOL)TRUE));
+}
+
+//-----------------------------------------------------------------------
+
+void lcl_DoCount()
+{
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (xDoc)
+ {
+ XActionLockableRef xLock = (XActionLockable*)
+ xDoc->queryInterface(XActionLockable::getSmartUik());
+ XCalculateRef xCalc = (XCalculate*)
+ xDoc->queryInterface(XCalculate::getSmartUik());
+ if (xLock)
+ xLock->addActionLock(); // nicht zwischendurch painten
+ if (xCalc)
+ xCalc->setAutomaticCalculation(FALSE);
+
+ CellAddress aPos;
+ aPos.Sheet = 0;
+
+ for (USHORT nRow = 0; nRow < 20; nRow++)
+ {
+ aPos.Row = nRow;
+ for (USHORT nCol = 0; nCol < 10; nCol++)
+ {
+ aPos.Column = nCol;
+ XCellRef xCell = xDoc->getCell(aPos);
+ if ( xCell )
+ {
+ // Wert der Zelle um 1 hochzaehlen
+
+ double fVal = xCell->getValue();
+ fVal += 1.0;
+ xCell->setValue( fVal );
+ }
+ }
+ }
+
+ if (xCalc)
+ xCalc->setAutomaticCalculation(TRUE);
+ if (xLock)
+ xLock->removeActionLock();
+ }
+}
+
+
+void lcl_GlobalCell()
+{
+ if ( xGlobalCell )
+ {
+ String aStr = OUStringToString( xGlobalCell->getFormula(), CHARSET_SYSTEM );
+ aStr+='0';
+ xGlobalCell->setFormula( StringToOUString( aStr, CHARSET_SYSTEM ) );
+ }
+}
+
+
+void lcl_Annotations( FixedText& aTimeText )
+{
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (xDoc)
+ {
+ CellAddress aPos;
+ aPos.Sheet = 0;
+ aPos.Column = 1;
+ aPos.Row = 2;
+ XCellRef xCell = xDoc->getCell(aPos);
+ if ( xCell )
+ {
+ XSheetAnnotationAnchorRef xAnchor =
+ (XSheetAnnotationAnchor*)xCell->queryInterface(XSheetAnnotationAnchor::getSmartUik());
+ if ( xAnchor )
+ {
+ XSheetAnnotationRef xAnnotation = xAnchor->getAnnotation();
+ if ( xAnnotation )
+ {
+ String aBlubb = OUStringToString( xAnnotation->getAuthor(), CHARSET_SYSTEM )+
+ String(" - ")+
+ OUStringToString( xAnnotation->getDate(), CHARSET_SYSTEM );
+ aTimeText.SetText(aBlubb);
+
+ XTextRef xAnnotationText =
+ (XText*)xAnnotation->queryInterface(XText::getSmartUik());
+ if ( xAnnotationText )
+ {
+ XTextCursorRef xCursor = xAnnotationText->createTextCursor();
+ if (xCursor)
+ {
+ XTextPositionRef xPos = (XTextPosition*)
+ xCursor->queryInterface(XTextPosition::getSmartUik());
+ XControlCharacterInsertableRef xControl = (XControlCharacterInsertable*)
+ xCursor->queryInterface(XControlCharacterInsertable::getSmartUik());
+
+ if (xPos && xControl)
+ {
+ ULONG nStart = Time::GetSystemTicks();
+
+ xAnnotationText->setText(L"bla");
+ xCursor->gotoEnd(FALSE);
+ xCursor->goLeft(1,TRUE);
+ xPos->setText(L"ubb");
+ for (USHORT i=0; i<10; i++)
+ {
+ xPos->collapseToEnd();
+ xControl->insertControlCharacter( TEXTCONTROLCHAR_PARAGRAPH_BREAK );
+ xPos->collapseToEnd();
+ xPos->setText(L"dumdi");
+ }
+
+ ULONG nEnd = Time::GetSystemTicks();
+ aTimeText.SetText(String(nEnd-nStart)+String(" ms"));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+void lcl_Cursor( FixedText& aTimeText )
+{
+ aTimeText.SetText( "..." );
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (xDoc)
+ {
+ XActionLockableRef xLock = (XActionLockable*)
+ xDoc->queryInterface(XActionLockable::getSmartUik());
+ if (xLock)
+ xLock->addActionLock();
+
+ CellAddress aPos;
+ aPos.Sheet = 0;
+ aPos.Column = 1;
+ aPos.Row = 2;
+ XCellRef xCell = xDoc->getCell(aPos);
+ if ( xCell )
+ {
+ XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
+ XCellCollectionRef xColl = (XCellCollection*)xCell->queryInterface(XCellCollection::getSmartUik());
+ if ( xText && xColl )
+ {
+ xText->setText(L"bla");
+ XLineCursorRef xCursor = xColl->createCursor();
+ if ( xCursor )
+ {
+ XCellCursorRef xCC = (XCellCursor*)xCursor->queryInterface(XCellCursor::getSmartUik());
+ XCellRangesCursorRef xRC = (XCellRangesCursor*)
+ xCursor->queryInterface(XCellRangesCursor::getSmartUik());
+
+ if ( xCC && xRC )
+ {
+ xCursor->goDown( 1, FALSE );
+
+ xColl = xCC->getRanges();
+ if ( xColl )
+ {
+ // XText ist drin, wenn's ne einzelne Zelle ist
+ xText = (XText*)xColl->queryInterface(XText::getSmartUik());
+ if ( xText )
+ {
+ xText->setText(L"fasel");
+ }
+ }
+
+ CellRangeAddress aSecond;
+ aSecond.Sheet = 0;
+ aSecond.StartColumn = 3;
+ aSecond.StartRow = 4;
+ aSecond.EndColumn = 3;
+ aSecond.EndRow = 4;
+ xRC->gotoUnion(aSecond);
+
+ xColl = xCC->getRanges();
+ if ( xColl )
+ {
+ XPropertySetRef xProp = (XPropertySet*)
+ xColl->queryInterface(XPropertySet::getSmartUik());
+ if ( xProp )
+ {
+ UsrAny aAny;
+
+ aAny = xProp->getPropertyValue(L"ShadowFormat");
+ if ( aAny.getReflection()->getName() ==
+ ShadowFormat_getReflection()->getName() )
+ {
+ //ShadowFormat* pOld = (ShadowFormat*)aAny.get();
+ ShadowFormat aNew;
+ aNew.Location = SHADOWLOCATION_BOTTOMRIGHT;
+ aNew.ShadowWidth = 100;
+ aNew.IsTransparent = FALSE;
+ aNew.Color = 0xff0000L;
+ aAny.set( &aNew, aAny.getReflection() );
+ xProp->setPropertyValue(L"ShadowFormat", aAny);
+ }
+
+ aAny = xProp->getPropertyValue(L"RotationValue");
+ aAny.setINT32(4500);
+ xProp->setPropertyValue(L"RotationValue", aAny);
+
+ aAny = xProp->getPropertyValue(L"FontHeight");
+ aAny.setUINT32(280);
+ xProp->setPropertyValue(L"FontHeight", aAny);
+
+ aAny = xProp->getPropertyValue(L"TransparentBackground");
+ aAny.setBOOL(FALSE);
+ xProp->setPropertyValue(L"TransparentBackground", aAny);
+
+ aAny = xProp->getPropertyValue(L"BackgroundColor");
+ aAny.setUINT32(0xffff00);
+ xProp->setPropertyValue(L"BackgroundColor", aAny);
+
+ aAny = xProp->getPropertyValue(L"CellProtection");
+ if ( aAny.getReflection()->getName() ==
+ CellProtection_getReflection()->getName() )
+ {
+ //CellProtection* pOld = (CellProtection*)aAny.get();
+ CellProtection aNew;
+ aNew.Locked = FALSE;
+ aNew.FormulaHidden = FALSE;
+ aNew.Hidden = FALSE;
+ aNew.PrintHidden = FALSE;
+ aAny.set( &aNew, aAny.getReflection() );
+ xProp->setPropertyValue(L"CellProtection", aAny);
+ }
+ }
+
+ // XIndexAccess gibts nur wenn's mehrere sind (??!??!)
+ XIndexAccessRef xIndex = (XIndexAccess*)
+ xColl->queryInterface(XIndexAccess::getSmartUik());
+ if ( xIndex )
+ {
+ USHORT nCount = (USHORT)xIndex->getCount();
+ aTimeText.SetText( String(nCount) );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (xLock)
+ xLock->removeActionLock();
+ }
+}
+
+
+void lcl_Cells( FixedText& aTimeText )
+{
+ aTimeText.SetText( "..." );
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (xDoc)
+ {
+ long nCount = 0;
+ ULONG nStart = Time::GetSystemTicks();
+
+ XActionLockableRef xLock = (XActionLockable*)
+ xDoc->queryInterface(XActionLockable::getSmartUik());
+// if (xLock)
+// xLock->addActionLock();
+
+ CellRangeAddress aRngAddr;
+ aRngAddr.Sheet = 0;
+ aRngAddr.StartColumn = 0;
+ aRngAddr.StartRow = 0;
+ aRngAddr.EndColumn = 9;
+ aRngAddr.EndRow = 19;
+ XCellRangeRef xRange = xDoc->getCellRange(aRngAddr);
+ if (xRange)
+ {
+ XCellCollectionRef xColl = (XCellCollection*)
+ xRange->queryInterface(XCellCollection::getSmartUik());
+ if (xColl)
+ {
+ XEnumerationAccessRef xEnAcc = xColl->getCells();
+ if (xEnAcc)
+ {
+ XEnumerationRef xEnum = xEnAcc->getEnumeration();
+ if (xEnum)
+ {
+ while (xEnum->hasMoreElements())
+ {
+ XInterfaceRef xInt = xEnum->nextElement();
+ if (xInt)
+ {
+ ++nCount;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ ULONG nEnd = Time::GetSystemTicks();
+ aTimeText.SetText(String(nCount)+String(" ")+String(nEnd-nStart)+String(" ms"));
+
+
+// if (xLock)
+// xLock->removeActionLock();
+ }
+}
+
+void lcl_Sheet( FixedText& aTimeText )
+{
+ aTimeText.SetText( "..." );
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XSpreadsheetsRef xSheets = xDoc->getSheets();
+ if (!xSheets) return;
+ XTableSheetRef xSheet = xSheets->getSheetByIndex(0);
+ if (!xSheet) return;
+ XNamedRef xNamed = (XNamed*)xSheet->queryInterface(XNamed::getSmartUik());
+ if (!xNamed) return;
+
+ String aName = OUStringToString( xNamed->getName(), CHARSET_SYSTEM );
+ aName += 'X';
+ xNamed->setName(StringToOUString( aName, CHARSET_SYSTEM ));
+
+ XCellRangeRef xRange = (XCellRange*)xSheet->queryInterface(XCellRange::getSmartUik());
+ if (!xRange) return;
+ XCellRef xCell = xRange->getCell(2,1);
+ if (!xCell) return;
+ XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
+ if (!xText) return;
+ String aBla = OUStringToString( xText->getText(), CHARSET_SYSTEM );
+ aBla += "bla";
+ xText->setText(StringToOUString( aBla, CHARSET_SYSTEM ));
+
+ XColumnRowRangeRef xCRR = (XColumnRowRange*)xSheet->queryInterface(XColumnRowRange::getSmartUik());
+ if (!xCRR) return;
+
+ XTableColumnsRef xCols = xCRR->getColumns();
+ if (!xCols) return;
+ XPropertySetRef xCol = xCols->getColumnByIndex(2);
+ if (!xCol) return;
+
+ UINT16 nWidth = TypeConversion::toUINT16(xCol->getPropertyValue(L"Width"));
+// UINT16 nNewWidth = nWidth + 100;
+// xCol->setPropertyValue(L"Width", UsrAny(nNewWidth));
+
+ xCol->setPropertyValue(L"OptimalWidth", UsrAny((BOOL)TRUE));
+ xCol->setPropertyValue(L"NewPage", UsrAny((BOOL)FALSE));
+
+ UsrAny aAny = xCol->getPropertyValue(L"ShadowFormat");
+ if ( aAny.getReflection()->getName() ==
+ ShadowFormat_getReflection()->getName() )
+ {
+ //ShadowFormat* pOld = (ShadowFormat*)aAny.get();
+ ShadowFormat aNew;
+ aNew.Location = SHADOWLOCATION_BOTTOMRIGHT;
+ aNew.ShadowWidth = 100;
+ aNew.IsTransparent = FALSE;
+ aNew.Color = 0xff0000L;
+ aAny.set( &aNew, aAny.getReflection() );
+ xCol->setPropertyValue(L"ShadowFormat", aAny);
+ }
+
+ XTableRowsRef xRows = xCRR->getRows();
+ if (!xRows) return;
+ XPropertySetRef xRow = xRows->getRowByIndex(1);
+ if (!xRow) return;
+
+ xRows->removeRowsByIndex( 2, 1 );
+
+ UINT16 nHeight = TypeConversion::toUINT16(xRow->getPropertyValue(L"Height"));
+ BOOL bOptH = TypeConversion::toBOOL(xRow->getPropertyValue(L"OptimalHeight"));
+
+ UINT16 nNewHeight = nHeight + 100;
+ xRow->setPropertyValue(L"Height", UsrAny(nNewHeight));
+
+ aTimeText.SetText(String("W:")+String(nWidth)+String(" H:")+String(nHeight)+
+ String(" ")+String((USHORT)bOptH));
+}
+
+void lcl_Names( FixedText& aTimeText )
+{
+ aTimeText.SetText( "..." );
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XNamedRangesRef xNames = xDoc->getNamedRanges();
+ if (!xNames) return;
+ XNamedRangeRef xName = xNames->getRangeByName(L"bla");
+ if (!xName) return;
+ String aCont = OUStringToString( xName->getContent(), CHARSET_SYSTEM );
+ aTimeText.SetText(aCont);
+
+ XCellRangeSourceRef xSource = (XCellRangeSource*)
+ xName->queryInterface(XCellRangeSource::getSmartUik());
+ if (!xSource) return;
+ XCellRangeRef xRange = xSource->getReferredCells();
+ if (!xRange) return;
+ XPropertySetRef xProp = (XPropertySet*)xRange->queryInterface(XPropertySet::getSmartUik());
+ if (!xProp) return;
+ UsrAny aAny = xProp->getPropertyValue(L"RotationValue");
+ aAny.setINT32(3000);
+ xProp->setPropertyValue(L"RotationValue", aAny);
+}
+
+void lcl_Sheets( FixedText& aTimeText )
+{
+ aTimeText.SetText( "..." );
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XSpreadsheetsRef xSheets = xDoc->getSheets();
+ if (!xSheets) return;
+
+#if 0
+ xSheets->insertSheet( "hinten", 100 );
+ xSheets->insertSheet( "vorne", 0 );
+ xSheets->removeSheetByName( "hinten" );
+ xSheets->removeSheetByName( "vorne" );
+#endif
+
+ xSheets->moveSheet(0, 1, TRUE);
+ xSheets->moveSheet(0, 2, FALSE);
+}
+
+void lcl_Goal( FixedText& aTimeText )
+{
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XGoalSeekRef xGoal = (XGoalSeek*)xDoc->queryInterface(XGoalSeek::getSmartUik());
+ if (!xGoal) return;
+
+ double fResult;
+ CellAddress aFormula; // A1
+ aFormula.Sheet = 0;
+ aFormula.Column = 0;
+ aFormula.Row = 0;
+ CellAddress aVar; // A2
+ aVar.Sheet = 0;
+ aVar.Column = 0;
+ aVar.Row = 1;
+ BOOL bFound = xGoal->doGoalSeek(fResult, aFormula, aVar, L"42");
+
+ if (bFound)
+ {
+ CellAddress aOut; // A3
+ aOut.Sheet = 0;
+ aOut.Column = 0;
+ aOut.Row = 2;
+
+ XCellRef xCell = xDoc->getCell(aOut);
+ if (!xCell) return;
+ xCell->setValue(fResult);
+ }
+}
+
+void lcl_TabOp( FixedText& aTimeText )
+{
+ // Mehrfachoperation auf Tabelle2
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+
+ XCellRangeRef xRange;
+ XTableOperationRef xGoal;
+ CellRangeAddress aRangeAddr;
+ CellRangeAddress aFormulaRange;
+ CellAddress aColumnCell;
+ CellAddress aRowCell;
+ TableOperationMode nMode;
+
+ aRangeAddr.Sheet = 1; // c9:e11
+ aRangeAddr.StartColumn = 2;
+ aRangeAddr.StartRow = 8;
+ aRangeAddr.EndColumn = 4;
+ aRangeAddr.EndRow = 10;
+ aFormulaRange.Sheet = 1; // c6:c7
+ aFormulaRange.StartColumn = 2;
+ aFormulaRange.StartRow = 5;
+ aFormulaRange.EndColumn = 2;
+ aFormulaRange.EndRow = 6;
+ aColumnCell.Sheet = 0; // nicht benutzt
+ aColumnCell.Column = 0;
+ aColumnCell.Row = 0;
+ aRowCell.Sheet = 1; // c5
+ aRowCell.Column = 2;
+ aRowCell.Row = 4;
+ nMode = TABLEOP_ROW;
+
+ xRange = xDoc->getCellRange(aRangeAddr);
+ if (!xRange) return;
+ xGoal = (XTableOperation*)xRange->queryInterface(XTableOperation::getSmartUik());
+ if (!xGoal) return;
+ xGoal->setTableOperation( nMode, aFormulaRange, aColumnCell, aRowCell );
+
+ aRangeAddr.Sheet = 1; // b19:d21
+ aRangeAddr.StartColumn = 1;
+ aRangeAddr.StartRow = 18;
+ aRangeAddr.EndColumn = 3;
+ aRangeAddr.EndRow = 20;
+ aFormulaRange.Sheet = 1; // c16:d16
+ aFormulaRange.StartColumn = 2;
+ aFormulaRange.StartRow = 15;
+ aFormulaRange.EndColumn = 3;
+ aFormulaRange.EndRow = 15;
+ aColumnCell.Sheet = 1; // b16
+ aColumnCell.Column = 1;
+ aColumnCell.Row = 15;
+ aRowCell.Sheet = 0; // nicht benutzt
+ aRowCell.Column = 0;
+ aRowCell.Row = 0;
+ nMode = TABLEOP_COLUMN;
+
+ xRange = xDoc->getCellRange(aRangeAddr);
+ if (!xRange) return;
+ xGoal = (XTableOperation*)xRange->queryInterface(XTableOperation::getSmartUik());
+ if (!xGoal) return;
+ xGoal->setTableOperation( nMode, aFormulaRange, aColumnCell, aRowCell );
+
+ aRangeAddr.Sheet = 1; // b29:e32
+ aRangeAddr.StartColumn = 1;
+ aRangeAddr.StartRow = 28;
+ aRangeAddr.EndColumn = 4;
+ aRangeAddr.EndRow = 31;
+ aFormulaRange.Sheet = 1; // c27:c27
+ aFormulaRange.StartColumn = 2;
+ aFormulaRange.StartRow = 26;
+ aFormulaRange.EndColumn = 2;
+ aFormulaRange.EndRow = 26;
+ aColumnCell.Sheet = 1; // c25
+ aColumnCell.Column = 2;
+ aColumnCell.Row = 24;
+ aRowCell.Sheet = 1; // c26
+ aRowCell.Column = 2;
+ aRowCell.Row = 25;
+ nMode = TABLEOP_BOTH;
+
+ xRange = xDoc->getCellRange(aRangeAddr);
+ if (!xRange) return;
+ xGoal = (XTableOperation*)xRange->queryInterface(XTableOperation::getSmartUik());
+ if (!xGoal) return;
+ xGoal->setTableOperation( nMode, aFormulaRange, aColumnCell, aRowCell );
+}
+
+void lcl_Fill( FixedText& aTimeText )
+{
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return;
+
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return;
+
+ XCellSeriesRef xFill = (XCellSeries*)xSelInt->queryInterface(XCellSeries::getSmartUik());
+ if (!xFill) return;
+
+// xFill->fillAuto( FILL_DIRECTION_TO_BOTTOM, 2 );
+
+ xFill->fillSeries( FILL_DIRECTION_TO_LEFT, FILL_MODE_GROWTH, FILL_DATE_DAY,
+ 2.0, 1000.0 );
+}
+
+void lcl_Audi( FixedText& aTimeText )
+{
+ aTimeText.SetText( "..." );
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XSpreadsheetsRef xSheets = xDoc->getSheets();
+ if (!xSheets) return;
+ XTableSheetRef xSheet = xSheets->getSheetByIndex(0);
+ if (!xSheet) return;
+
+ XSheetAuditingRef xAudi = (XSheetAuditing*)xSheet->queryInterface(XSheetAuditing::getSmartUik());
+ if (!xAudi) return;
+
+ CellAddress aPosition;
+ aPosition.Sheet = 0;
+ aPosition.Column = 0;
+ aPosition.Row = 0;
+ xAudi->showDependents(aPosition);
+}
+
+void lcl_Consoli( FixedText& aTimeText )
+{
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XConsolidationRef xCons = (XConsolidation*)xDoc->queryInterface(XConsolidation::getSmartUik());
+ if (!xCons) return;
+ XConsolidationDescriptorRef xDesc = xCons->createConsolidationDescriptor(FALSE);
+ if (!xDesc) return;
+ xDesc->setFunction(SUMMARY_COUNTNUMS);
+ xCons->consolidate(xDesc);
+}
+
+void lcl_Sort( FixedText& aTimeText )
+{
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return;
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return;
+ XSortableRef xSort = (XSortable*)xSelInt->queryInterface(XSortable::getSmartUik());
+ if (!xSort) return;
+ XSortDescriptorRef xDesc = xSort->createSortDescriptor(FALSE);
+ if (!xDesc) return;
+ Sequence<SortField> aFields = xDesc->getSortFields();
+ if (aFields.getLen())
+ {
+ // 1.Feld umkehren
+ SortField* pAry = aFields.getArray();
+ if (!pAry) return;
+ pAry[0].Ascending = !pAry[0].Ascending;
+ }
+ else // neue Sequence, 1. Spalte aufsteigend
+ {
+ aFields = Sequence<SortField>(1);
+ SortField* pAry = aFields.getArray();
+ if (!pAry) return;
+ pAry[0].Field = 0;
+ pAry[0].Ascending = TRUE;
+ pAry[0].Type = SORT_FIELD_AUTOMATIC;
+ }
+ xDesc->setSortFields(aFields);
+
+ XTableSortDescriptorRef xTableSort = (XTableSortDescriptor*)
+ xDesc->queryInterface(XTableSortDescriptor::getSmartUik());
+ if (!xTableSort) return;
+ CellAddress aOutPos;
+ aOutPos.Sheet = 2;
+ aOutPos.Column = 0;
+ aOutPos.Row = 0;
+ xTableSort->setUseOutputPosition(TRUE);
+ xTableSort->setOutputPosition(aOutPos);
+
+ XPropertySetRef xPropSet = (XPropertySet*)
+ xDesc->queryInterface(XPropertySet::getSmartUik());
+ if (!xPropSet) return;
+ xPropSet->setPropertyValue(L"IncludeFormats", UsrAny((BOOL)FALSE));
+
+ xSort->sort(xDesc);
+}
+
+void lcl_Filter( FixedText& aTimeText )
+{
+ aTimeText.SetText("...");
+
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return;
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return;
+ XFilterableRef xFilter = (XFilterable*)xSelInt->queryInterface(XFilterable::getSmartUik());
+ if (!xFilter) return;
+
+#if 0
+ XTableFilterDescriptorRef xDesc = xFilter->createFilterDescriptor(FALSE);
+ if (!xDesc) return;
+ Sequence<TableFilterField> aFields = xDesc->getFilterFields();
+ if (aFields.getLen())
+ {
+ // 1.Feld zwischen 1. und 2. Spalte toggeln
+ TableFilterField* pAry = aFields.getArray();
+ if (!pAry) return;
+ pAry[0].Field = pAry[0].Field ? 0 : 1;
+ }
+ xDesc->setFilterFields(aFields);
+ xFilter->filter(xDesc);
+#endif
+
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ CellRangeAddress aAddress;
+ aAddress.Sheet = 3;
+ aAddress.StartColumn = 0;
+ aAddress.StartRow = 0;
+ aAddress.EndColumn = 1;
+ aAddress.EndRow = 2;
+ XCellRangeRef xRange = xDoc->getCellRange(aAddress);
+ if (!xRange) return;
+ XAdvancedFilterSourceRef xSource = (XAdvancedFilterSource*)
+ xRange->queryInterface(XAdvancedFilterSource::getSmartUik());
+ if (!xSource) return;
+
+ XTableFilterDescriptorRef xDesc = xSource->createAdvancedFilter(xFilter);
+ if (!xDesc)
+ {
+ aTimeText.SetText("kein Filter");
+ return;
+ }
+ aTimeText.SetText("Filter gefunden");
+ xFilter->filter(xDesc);
+}
+
+void lcl_AutoFilter( FixedText& aTimeText )
+{
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return;
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return;
+ XFilterableRef xFilter = (XFilterable*)xSelInt->queryInterface(XFilterable::getSmartUik());
+ if (!xFilter) return;
+
+ BOOL bAuto = xFilter->getAutoFilter();
+ xFilter->setAutoFilter(!bAuto);
+}
+
+void lcl_Merge( FixedText& aTimeText )
+{
+ static BOOL bMerged = FALSE;
+
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return;
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return;
+ XMergeableRef xMerge = (XMergeable*)xSelInt->queryInterface(XMergeable::getSmartUik());
+ if (!xMerge) return;
+
+ if (bMerged)
+ xMerge->unmergeCells();
+ else
+ xMerge->mergeCells();
+ bMerged = !bMerged;
+}
+
+void lcl_Outline( FixedText& aTimeText )
+{
+ static BOOL bOutline = FALSE;
+
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XSpreadsheetsRef xSheets = xDoc->getSheets();
+ if (!xSheets) return;
+ XTableSheetRef xSheet = xSheets->getSheetByIndex(0);
+ if (!xSheet) return;
+ XSheetOutlineRef xOut = (XSheetOutline*)xSheet->queryInterface(XSheetOutline::getSmartUik());
+ if (!xOut) return;
+
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return;
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return;
+ XAddressableCellRangeRef xRange = (XAddressableCellRange*)
+ xSelInt->queryInterface(XAddressableCellRange::getSmartUik());
+ if (!xRange) return;
+ CellRangeAddress aRange = xRange->getRangeAddress();
+
+ if (bOutline)
+ xOut->showDetail( aRange );
+ else
+ xOut->hideDetail( aRange );
+
+ bOutline = !bOutline;
+}
+
+void lcl_Bla( FixedText& aTimeText )
+{
+ aTimeText.SetText("...");
+
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XActionLockableRef xLock = (XActionLockable*)xDoc->queryInterface(XActionLockable::getSmartUik());
+ if (!xLock) return;
+ xLock->addActionLock();
+ xLock->addActionLock();
+ USHORT nCount = xLock->resetActionLocks(); // sollte 2 sein
+ String aBla = nCount;
+ xLock->setActionLocks(nCount);
+ xLock->removeActionLock();
+ xLock->removeActionLock();
+
+ aBla += '/'; aBla += xLock->resetActionLocks(); // sollte 0 sein
+
+ aTimeText.SetText(aBla);
+}
+
+void lcl_CellCursor( FixedText& aTimeText )
+{
+ static int nCursorCount = 0;
+
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return;
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return;
+ XCellCollectionRef xColl = (XCellCollection*)xSelInt->queryInterface(XCellCollection::getSmartUik());
+ if (!xColl) return;
+
+ XLineCursorRef xCursor = xColl->createCursor();
+ if (!xCursor) return;
+ XCellCursorRef xCC = (XCellCursor*)xCursor->queryInterface(XCellCursor::getSmartUik());
+ if (!xCC) return;
+ XCellRangesCursorRef xCRC = (XCellRangesCursor*)xCursor->queryInterface(XCellRangesCursor::getSmartUik());
+ if (!xCRC) return;
+ XCellRangeCursorRef xCR = (XCellRangeCursor*)xCursor->queryInterface(XCellRangeCursor::getSmartUik());
+ if (!xCR) return;
+ XCellContentCursorRef xCCC = (XCellContentCursor*)xCursor->queryInterface(XCellContentCursor::getSmartUik());
+ if (!xCCC) return;
+ XFormulaCursorRef xFC = (XFormulaCursor*)xCursor->queryInterface(XFormulaCursor::getSmartUik());
+ if (!xFC) return;
+
+ CellAddress aPos;
+ aPos.Sheet = 0; // ignored
+ aPos.Row = 3;
+ aPos.Column = 2;
+
+ switch (nCursorCount++)
+ {
+ case 0:
+ xFC->gotoDependents(FALSE);
+ break;
+ case 1:
+ xFC->gotoDependents(TRUE);
+ break;
+ case 2:
+ xFC->gotoPrecedents(FALSE);
+ break;
+ case 3:
+ xFC->gotoPrecedents(TRUE);
+
+ nCursorCount = 0;
+ break;
+ }
+
+ XCellCollectionRef xNew = xCC->getRanges();
+ if (!xNew) return;
+ xView->select( xNew );
+}
+
+void lcl_Notes( FixedText& aTimeText )
+{
+ aTimeText.SetText( "..." );
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XSpreadsheetsRef xSheets = xDoc->getSheets();
+ if (!xSheets) return;
+ XTableSheetRef xSheet = xSheets->getSheetByIndex(0);
+ if (!xSheet) return;
+
+ XSheetAnnotationsRef xNotes = xSheet->getAnnotations();
+ if (!xNotes) return;
+ XIndexAccessRef xNIndex = (XIndexAccess*)xNotes->queryInterface(XIndexAccess::getSmartUik());
+ if (!xNIndex) return;
+
+ CellAddress aPos;
+ aPos.Column = 0;
+ aPos.Row = 0;
+ aPos.Sheet = 0;
+ xNotes->addAnnotation( L"neu", aPos );
+
+ ULONG nCount = xNIndex->getCount();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ XSheetAnnotationRef xAnn = xNotes->getAnnotationByIndex((UINT16)i);
+ XTextRef xText = (XText*)xAnn->queryInterface(XText::getSmartUik());
+ if (xText)
+ {
+ String aStr = OUStringToString( xText->getText(), CHARSET_SYSTEM );
+ aStr += "x";
+ xText->setText(StringToOUString( aStr, CHARSET_SYSTEM ));
+ }
+ }
+}
+
+void lcl_Scenario( FixedText& aTimeText )
+{
+ aTimeText.SetText( "..." );
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XSpreadsheetsRef xSheets = xDoc->getSheets();
+ if (!xSheets) return;
+ XTableSheetRef xSheet = xSheets->getSheetByIndex(0);
+ if (!xSheet) return;
+
+ XScenariosRef xColl = xSheet->getScenarios();
+ if (!xColl) return;
+
+ Sequence<CellRangeAddress> aRanges(2);
+ CellRangeAddress* pAry = aRanges.getArray();
+ if (!pAry) return;
+ pAry[0].Sheet = 0;
+ pAry[0].StartColumn = 0;
+ pAry[0].StartRow = 0;
+ pAry[0].EndColumn = 1;
+ pAry[0].EndRow = 1;
+ pAry[1].Sheet = 0;
+ pAry[1].StartColumn = 3;
+ pAry[1].StartRow = 3;
+ pAry[1].EndColumn = 4;
+ pAry[1].EndRow = 4;
+
+ xColl->addScenario( aRanges, L"bla", L"bla blubb" );
+
+ XIndexAccessRef xIndex = (XIndexAccess*)xColl->queryInterface(XIndexAccess::getSmartUik());
+ if (!xIndex) return;
+ ULONG nCount = xIndex->getCount();
+ aTimeText.SetText( nCount );
+
+ XScenarioRef xScen = xColl->getScenarioByIndex(0);
+ if (!xScen) return;
+
+ aRanges = Sequence<CellRangeAddress>(1);
+ pAry = aRanges.getArray();
+ if (!pAry) return;
+ pAry[0].Sheet = 0;
+ pAry[0].StartColumn = 6;
+ pAry[0].StartRow = 6;
+ pAry[0].EndColumn = 7;
+ pAry[0].EndRow = 7;
+
+ xScen->addRanges( aRanges );
+
+ XTableSheetRef xSh2 = xSheets->getSheetByIndex(1);
+ if (!xSh2) return;
+
+ xSh2->setVisible( TRUE );
+ xSh2->setVisible( FALSE );
+}
+
+void lcl_Formula( FixedText& aTimeText )
+{
+ aTimeText.SetText("...");
+
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ CellAddress aPos;
+ aPos.Sheet = 0;
+ aPos.Column = 0;
+ aPos.Row = 0;
+ XCellRef xCell = xDoc->getCell(aPos);
+ if (!xCell) return;
+
+// String aStr = OUStringToString( xCell->getFormula(), CHARSET_SYSTEM );
+// aTimeText.SetText(aStr);
+
+ XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
+ if (!xText) return;
+ String aStr = OUStringToString( xText->getText(), CHARSET_SYSTEM );
+ aTimeText.SetText(aStr);
+}
+
+void lcl_DBRange( FixedText& aTimeText ) // 23
+{
+ aTimeText.SetText("...");
+
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XDatabaseRangesRef xDBs = xDoc->getDatabaseRanges();
+ if (!xDBs) return;
+
+ CellRangeAddress aRange;
+ aRange.Sheet = 0;
+ aRange.StartColumn = 1;
+ aRange.StartRow = 1;
+ aRange.EndColumn = 3;
+ aRange.EndRow = 10;
+
+ xDBs->addRange( L"blubb", aRange );
+
+ xDBs->removeRangeByName( L"gaga" );
+
+ XDatabaseRangeRef xDB = xDBs->getRangeByName( L"blubb" );
+ if (!xDB) return;
+
+ String aName = OUStringToString( xDB->getName(), CHARSET_SYSTEM );
+ aTimeText.SetText(aName);
+
+ xDB->setName( L"gaga" );
+
+ CellRangeAddress aDBRange = xDB->getDataArea();
+ ++aDBRange.Sheet;
+ xDB->setDataArea(aDBRange);
+}
+
+void lcl_FillTab( FixedText& aTimeText ) // 24
+{
+ aTimeText.SetText("...");
+
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return;
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return;
+
+ XCellRangesRef xRanges = (XCellRanges*)xSelInt->queryInterface(XCellRanges::getSmartUik());
+ XIndexAccessRef xIndex = (XIndexAccess*)xSelInt->queryInterface(XIndexAccess::getSmartUik());
+ if (!xRanges || !xIndex) return;
+
+ ULONG nCount = xIndex->getCount();
+ aTimeText.SetText(nCount);
+}
+
+void lcl_Listener( FixedText& aTimeText ) // 25
+{
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+ XStarCalcViewRef xView = (XStarCalcView*)xInt->queryInterface(XStarCalcView::getSmartUik());
+ if (!xView) return;
+ xView->addSelectionChangeListener( new ScTestListener(&aTimeText) );
+}
+
+void lcl_CellAttrib( FixedText& aTimeText ) // 26
+{
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return;
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return;
+ XTextRef xText = (XText*)xSelInt->queryInterface(XText::getSmartUik());
+ if (!xText) return;
+
+ XTextCursorRef xCursor = xText->createTextCursor();
+ if (!xCursor) return;
+
+ XTextPositionRef xPos = (XTextPosition*)xCursor->queryInterface(XTextPosition::getSmartUik());
+ XPropertySetRef xProp = (XPropertySet*)xCursor->queryInterface(XPropertySet::getSmartUik());
+ XParagraphCursorRef xPar = (XParagraphCursor*)xCursor->queryInterface(XParagraphCursor::getSmartUik());
+ if (!xPos || !xProp || !xPar) return;
+
+ xCursor->gotoStart(FALSE);
+ xCursor->goRight(1,FALSE);
+ xCursor->goRight(1,TRUE);
+
+ UsrAny aAny = xProp->getPropertyValue(L"FontHeight");
+ UINT32 nOld = aAny.getUINT32();
+ aAny.setUINT32(nOld*11/10);
+ xProp->setPropertyValue(L"FontHeight", aAny);
+
+ xPos->collapseToEnd();
+ xCursor->goRight(1,TRUE);
+
+ xProp->setPropertyValue(L"Bold", UsrAny((BOOL)TRUE));
+
+ xPos->setText(L"x");
+
+ xPos->collapseToEnd();
+ xPar->gotoNextParagraph(FALSE,TRUE);
+ xProp->setPropertyValue(L"Italic", UsrAny((BOOL)TRUE));
+ xProp->setPropertyValue(L"Underlined", UsrAny((BOOL)TRUE));
+}
+
+void lcl_Styles( FixedText& aTimeText ) // 27
+{
+ aTimeText.SetText("...");
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XStyleFamiliesRef xFamilies = xDoc->getStyleFamilies();
+ if (!xFamilies) return;
+ XStyleFamilyRef xFamily = xFamilies->getStyleFamilyByType( STYLE_FAMILY_CELL );
+// XStyleFamilyRef xFamily = xFamilies->getStyleFamilyByType( STYLE_FAMILY_PAGE );
+ if (!xFamily) return;
+ long nCount = xFamily->getCount();
+ aTimeText.SetText(nCount);
+
+ XStyleRef xStyle = xFamily->getStyleByName(L"rot");
+ if (!xStyle) return;
+// XPropertySetRef xProp = (XPropertySet*)xStyle->queryInterface(XPropertySet::getSmartUik());
+// if (!xProp) return;
+
+ XStyleRef xNew = xFamily->addStyle( L"gaga", xStyle );
+ if (!xNew) return;
+ XPropertySetRef xProp = (XPropertySet*)xNew->queryInterface(XPropertySet::getSmartUik());
+ if (!xProp) return;
+
+ UsrAny aAny;
+ aAny = xProp->getPropertyValue(L"TransparentBackground");
+ aAny.setBOOL(FALSE);
+ xProp->setPropertyValue(L"TransparentBackground", aAny);
+ aAny = xProp->getPropertyValue(L"BackgroundColor");
+ aAny.setUINT32(0xffff00);
+ xProp->setPropertyValue(L"BackgroundColor", aAny);
+
+ xFamily->removeStyle( L"rot" );
+}
+
+void lcl_PageStyle( FixedText& aTimeText ) // 28
+{
+ aTimeText.SetText("...");
+
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+ XStyleFamiliesRef xFamilies = xDoc->getStyleFamilies();
+ if (!xFamilies) return;
+ XStyleFamilyRef xFamily = xFamilies->getStyleFamilyByType( STYLE_FAMILY_PAGE );
+ if (!xFamily) return;
+ XStyleRef xStyle = xFamily->getStyleByName(L"Standard");
+ if (!xStyle) return;
+ XPropertySetRef xProp = (XPropertySet*)xStyle->queryInterface(XPropertySet::getSmartUik());
+ if (!xProp) return;
+
+ UsrAny aAny;
+ aAny = xProp->getPropertyValue(L"RightPageHeaderContent");
+
+ // geht nicht:
+// if ( !XHeaderFooterContent_getReflection()->equals(*aAny.getReflection()) )
+// return;
+
+ XHeaderFooterContentRef* pxContent = (XHeaderFooterContentRef*)aAny.get();
+ if (!pxContent || !pxContent->is()) return;
+
+ XTextRef xText = (*pxContent)->getCenterText();
+ if (!xText) return;
+
+ String aVal = OUStringToString(xText->getText(), CHARSET_SYSTEM);
+ aTimeText.SetText(aVal);
+
+// xText->setText(L"Bla fasel sülz");
+ lcl_SetText(xText);
+
+ xProp->setPropertyValue(L"RightPageHeaderContent", aAny);
+}
+
+void lcl_AutoForm( FixedText& aTimeText ) // 29
+{
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return;
+
+#if 0
+ //! Test - AutoFormat muss von der App kommen
+ XStarCalcViewRef xView = (XStarCalcView*)xInt->queryInterface(XStarCalcView::getSmartUik());
+ if (!xView) return;
+ XTableAutoFormatsRef xFormats = xView->getTableAutoFormats();
+ if (!xFormats) return;
+ //! Test
+#endif
+ XTableAutoFormatsRef xFormats;
+
+ XTableAutoFormatRef xFormat = xFormats->getAutoFormatByName(L"gaga");
+ if (!xFormat) return;
+ XPropertySetRef xProp = (XPropertySet*)xFormat->queryInterface(XPropertySet::getSmartUik());
+ if (!xProp) return;
+
+ BOOL bVal = TypeConversion::toBOOL(xProp->getPropertyValue(L"IncludeBackground"));
+ xProp->setPropertyValue(L"IncludeBackground", UsrAny(BOOL(!bVal)));
+
+ XNamedRef xNamed = (XNamed*)xFormat->queryInterface(XNamed::getSmartUik());
+ if (!xNamed) return;
+ xNamed->setName(L"zzz");
+
+ xFormats->addAutoFormat(L"gaga");
+ XTableAutoFormatRef xNew = xFormats->getAutoFormatByName(L"gaga");
+ if (!xNew) return;
+
+ for (USHORT i=0; i<16; i++)
+ {
+ XPropertySetRef xNewProp = xNew->getFieldByIndex(i);
+ if (!xNewProp) return;
+
+ xNewProp->setPropertyValue(L"TransparentBackground", UsrAny(BOOL(FALSE)));
+ UINT32 nColor = 0x111100 * i;
+ xNewProp->setPropertyValue(L"BackgroundColor", UsrAny(nColor));
+ }
+}
+
+void lcl_Pivot( FixedText& aTimeText ) // 30
+{
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (!xDoc) return;
+
+ XSpreadsheetsRef xSheets = xDoc->getSheets();
+ if (!xSheets) return;
+ XIndexAccessRef xInd = (XIndexAccess*)xSheets->queryInterface(XIndexAccess::getSmartUik());
+ if (!xInd) return;
+ USHORT nCount = (USHORT)xInd->getCount();
+
+ for (USHORT nTab=0; nTab<nCount; nTab++)
+ {
+ XTableSheetRef xSheet = xSheets->getSheetByIndex(nTab);
+ if (!xSheet) return;
+ XDataPilotTablesRef xPivots = xSheet->getDataPilotTables();
+ if (!xPivots) return;
+ lcl_OutputNames( xPivots, xDoc, nTab,0,0 );
+ XIndexAccessRef xPInd = (XIndexAccess*)xPivots->queryInterface(XIndexAccess::getSmartUik());
+ if (!xPInd) return;
+ USHORT nPCount = (USHORT)xPInd->getCount();
+ for (USHORT nP=0; nP<nPCount; nP++)
+ {
+ XDataPilotTableRef xTable = xPivots->getTableByIndex(nP);
+ if (!xTable) return;
+
+// xTable->refreshTable();
+
+ XDataPilotDescriptorRef xDesc = (XDataPilotDescriptor*)
+ xTable->queryInterface(XDataPilotDescriptor::getSmartUik());
+ if (!xDesc) return;
+ CellRangeAddress aSource = xDesc->getSourceRange();
+ ++aSource.Sheet;
+ xDesc->setSourceRange(aSource);
+
+ CellRangeAddress aAddr = xTable->getOutputRange();
+ XCellRangeRef xRange = xDoc->getCellRange(aAddr);
+ if (!xRange) return;
+ XPropertySetRef xProp = (XPropertySet*)xRange->queryInterface(XPropertySet::getSmartUik());
+ if (!xProp) return;
+ xProp->setPropertyValue(L"TransparentBackground", UsrAny(BOOL(FALSE)));
+ xProp->setPropertyValue(L"BackgroundColor", UsrAny((UINT32)0x00FF00));
+ }
+ }
+}
+
+IMPL_LINK(MyWindow, CountHdl, PushButton*, EMPTYARG)
+{
+#if 0
+
+ long nCount = aCountField.GetValue();
+ if (nCount < 1)
+ nCount = 1;
+
+ ULONG nStart = Time::GetSystemTicks();
+ for (long i=0; i<nCount; i++)
+ lcl_DoCount();
+ ULONG nEnd = Time::GetSystemTicks();
+ aTimeText.SetText(String(nCount)+String(" x Count: ")+String(nEnd-nStart)+String(" ms"));
+
+#else
+
+ long nCount = aCountField.GetValue();
+ switch ( nCount )
+ {
+ case 0:
+ {
+ ULONG nStart = Time::GetSystemTicks();
+ lcl_DoCount();
+ ULONG nEnd = Time::GetSystemTicks();
+ aTimeText.SetText(String("Count: ")+String(nEnd-nStart)+String(" ms"));
+ }
+ break;
+ case 1:
+ lcl_GlobalCell();
+ break;
+ case 2:
+ lcl_Annotations(aTimeText);
+ break;
+ case 3:
+ lcl_Cursor(aTimeText);
+ break;
+ case 4:
+ lcl_Cells(aTimeText);
+ break;
+ case 5:
+ lcl_Sheet(aTimeText);
+ break;
+ case 6:
+ lcl_Names(aTimeText);
+ break;
+ case 7:
+ lcl_Sheets(aTimeText);
+ break;
+ case 8:
+ lcl_Goal(aTimeText);
+ break;
+ case 9:
+ lcl_TabOp(aTimeText);
+ break;
+ case 10:
+ lcl_Fill(aTimeText);
+ break;
+ case 11:
+ lcl_Audi(aTimeText);
+ break;
+ case 12:
+ lcl_Consoli(aTimeText);
+ break;
+ case 13:
+ lcl_Sort(aTimeText);
+ break;
+ case 14:
+ lcl_Filter(aTimeText);
+ break;
+ case 15:
+ lcl_AutoFilter(aTimeText);
+ break;
+ case 16:
+ lcl_Merge(aTimeText);
+ break;
+ case 17:
+ lcl_Outline(aTimeText);
+ break;
+ case 18:
+ lcl_Bla(aTimeText);
+ break;
+ case 19:
+ lcl_CellCursor(aTimeText);
+ break;
+ case 20:
+ lcl_Notes(aTimeText);
+ break;
+ case 21:
+ lcl_Scenario(aTimeText);
+ break;
+ case 22:
+ lcl_Formula(aTimeText);
+ break;
+ case 23:
+ lcl_DBRange(aTimeText);
+ break;
+ case 24:
+ lcl_FillTab(aTimeText);
+ break;
+ case 25:
+ lcl_Listener(aTimeText);
+ break;
+ case 26:
+ lcl_CellAttrib(aTimeText);
+ break;
+ case 27:
+ lcl_Styles(aTimeText);
+ break;
+ case 28:
+ lcl_PageStyle(aTimeText);
+ break;
+ case 29:
+ lcl_AutoForm(aTimeText);
+ break;
+ case 30:
+ lcl_Pivot(aTimeText);
+ break;
+ }
+
+#endif
+
+ return 0;
+}
+
+//-----------------------------------------------------------------------
+
+IMPL_LINK(MyWindow, TextHdl, PushButton*, EMPTYARG)
+{
+ USHORT nTab = 0;
+ USHORT nCol = (USHORT)aColField.GetValue();
+ USHORT nRow = (USHORT)aRowField.GetValue();
+ USHORT nPos = (USHORT)aPosField.GetValue();
+ USHORT nLen = (USHORT)aLenField.GetValue();
+ String aStr = aTextEdit.GetText();
+
+ aTimeText.SetText("...");
+
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (xDoc)
+ {
+ CellAddress aPos;
+ aPos.Sheet = nTab;
+ aPos.Column = nCol;
+ aPos.Row = nRow;
+ XCellRef xCell = xDoc->getCell(aPos);
+ if ( xCell )
+ {
+ XTextRef xCellText = (XText*)xCell->queryInterface(XText::getSmartUik());
+ if (xCellText)
+ {
+ XTextCursorRef xCursor = xCellText->createTextCursor();
+ if (xCursor)
+ {
+ XTextPositionRef xPos = (XTextPosition*)
+ xCursor->queryInterface(XTextPosition::getSmartUik());
+ XControlCharacterInsertableRef xControl = (XControlCharacterInsertable*)
+ xCursor->queryInterface(XControlCharacterInsertable::getSmartUik());
+
+ if (xPos && xControl)
+ {
+ xCursor->gotoStart(FALSE);
+ xCursor->goRight(11,TRUE);
+ String aVal = OUStringToString( xPos->getText(), CHARSET_SYSTEM );
+ aTimeText.SetText(aVal);
+ }
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
+//-----------------------------------------------------------------------
+
+IMPL_LINK(MyWindow, BlaHdl, PushButton*, EMPTYARG)
+{
+ aTimeText.SetText("...");
+
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (xDoc)
+ {
+ CellAddress aPos;
+ aPos.Sheet = 0;
+ aPos.Column = 1;
+ aPos.Row = 2;
+ XCellRef xCell = xDoc->getCell(aPos);
+ if ( xCell )
+ {
+ XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
+ XFieldContainerRef xCont = (XFieldContainer*)
+ xCell->queryInterface(XFieldContainer::getSmartUik());
+
+ if ( xText && xCont )
+ {
+ XFieldTypesRef xTypes = xCont->getFieldTypes();
+ if ( xTypes )
+ {
+ XTextFieldTypeRef xType = xTypes->getFieldType( FIELDTYPE_INTERNET );
+ XTextCursorRef xCursor = xText->createTextCursor();
+ if ( xCursor && xType )
+ {
+#if 0
+ // Feld einfuegen
+ XTextPositionRef xPos = (XTextPosition*)
+ xCursor->queryInterface(XTextPosition::getSmartUik());
+ if ( xPos )
+ {
+ xCursor->gotoEnd(FALSE);
+ XTextFieldRef xField = xTypes->insertTextField( xType, xPos );
+ if (xField)
+ {
+ // Eigenschaften setzen
+ XPropertySetRef xProp = (XPropertySet*)xField->
+ queryInterface(XPropertySet::getSmartUik());
+ if ( xProp )
+ {
+ xProp->setPropertyValue(L"URL",
+ UsrAny(String("http://www.mopo.de/")));
+ xProp->setPropertyValue(L"Representation",
+ UsrAny(String("ein Hyperlink")));
+ }
+ }
+ }
+#endif
+
+ // letztes Feld loeschen
+ XIndexAccessRef xIndex = (XIndexAccess*)
+ xType->queryInterface(XIndexAccess::getSmartUik());
+ if (xIndex)
+ {
+ String aBla;
+ ULONG nCount = xIndex->getCount();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ XInterfaceRef xInt = xIndex->getElementByIndex(i);
+ if (xInt)
+ {
+ XPropertySetRef xProp = (XPropertySet*)xInt->
+ queryInterface(XPropertySet::getSmartUik());
+ if ( xProp )
+ {
+ if (aBla.Len()) aBla += ',';
+ aBla += OUStringToString(
+ TypeConversion::toString(
+ xProp->getPropertyValue(L"URL") ),
+ CHARSET_SYSTEM );
+ }
+ if ( i+1 == nCount ) // letztes
+ {
+ XTextFieldRef xField = (XTextField*)xInt->
+ queryInterface(XTextField::getSmartUik());
+ if (xField)
+ xTypes->removeTextField(xField);
+ }
+ }
+ }
+ aTimeText.SetText(aBla);
+ }
+ }
+ }
+ }
+ }
+
+ xGlobalCell = xCell;
+ }
+ return 0;
+}
+
+
+//-----------------------------------------------------------------------
+
+IMPL_LINK(MyWindow, TabHdl, PushButton*, EMPTYARG)
+{
+ String aResult;
+
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ if (xDoc)
+ {
+ XSpreadsheetsRef xSheets = xDoc->getSheets();
+ if (xSheets)
+ {
+ XIndexAccessRef xIndex = (XIndexAccess*)xSheets->queryInterface(XIndexAccess::getSmartUik());
+ if (xIndex)
+ {
+ USHORT nCount = (USHORT) xIndex->getCount();
+ for (USHORT nTab=0; nTab<nCount; nTab++)
+ {
+ XInterfaceRef xInt = xIndex->getElementByIndex(nTab);
+ if (xInt)
+ {
+ XNamedRef xNamed = (XNamed*)xInt->queryInterface(XNamed::getSmartUik());
+ if (xNamed)
+ {
+ if (nTab)
+ aResult += ",";
+ aResult += OUStringToString( xNamed->getName(), CHARSET_SYSTEM );
+ }
+ }
+ }
+ }
+
+ CellAddress aPos;
+ aPos.Sheet = 0;
+ aPos.Column = 0;
+ aPos.Row = 0;
+
+ XEnumerationAccessRef xEAcc = (XEnumerationAccess*)
+ xSheets->queryInterface(XEnumerationAccess::getSmartUik());
+ if (xEAcc)
+ {
+ XEnumerationRef xEnum = xEAcc->getEnumeration();
+ if (xEnum)
+ {
+ while (xEnum->hasMoreElements())
+ {
+ XInterfaceRef xInt = xEnum->nextElement();
+ if (xInt)
+ {
+ XNamedRef xNamed = (XNamed*)xInt->queryInterface(XNamed::getSmartUik());
+ if (xNamed)
+ {
+ UString aName = xNamed->getName();
+ XCellRef xCell = xDoc->getCell(aPos);
+ if ( xCell )
+ {
+ XTextRef xText = (XText*)xCell->queryInterface(XText::getSmartUik());
+ xText->setText( aName );
+ ++aPos.Row;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ aTimeText.SetText(aResult);
+
+ return 0;
+}
+
+//-----------------------------------------------------------------------
+
+void lcl_FillCells(XCellCollectionRef xColl)
+{
+ XEnumerationAccessRef xEnAcc = xColl->getCells();
+ if (!xEnAcc) return;
+ XEnumerationRef xEnum = xEnAcc->getEnumeration();
+ if (!xEnum) return;
+ while (xEnum->hasMoreElements())
+ {
+ XInterfaceRef xInt = xEnum->nextElement();
+ if (xInt)
+ {
+ XCellRef xCell = (XCell*)xInt->queryInterface(XCell::getSmartUik());
+ if (xCell)
+ {
+ xCell->setValue(42.0);
+ }
+ }
+ }
+}
+
+IMPL_LINK(MyWindow, ViewHdl, PushButton*, EMPTYARG)
+{
+ XSpreadsheetDocumentRef xDoc = lcl_GetDocument(); // Calc-Model
+ XInterfaceRef xInt = lcl_GetView();
+ if (!xInt) return 0;
+ XDocumentViewRef xView = (XDocumentView*)xInt->queryInterface(XDocumentView::getSmartUik());
+ if (!xView) return 0;
+
+ XInterfaceRef xSelInt = xView->getSelection();
+ if (!xSelInt) return 0;
+
+#if 0
+ XPropertySetRef xProp = (XPropertySet*)xSelInt->queryInterface(XPropertySet::getSmartUik());
+ if ( xProp )
+ {
+ UsrAny aAny;
+
+ aAny = xProp->getPropertyValue(L"TransparentBackground");
+ aAny.setBOOL(FALSE);
+ xProp->setPropertyValue(L"TransparentBackground", aAny);
+
+ aAny = xProp->getPropertyValue(L"BackgroundColor");
+ aAny.setUINT32(0xffff00);
+ xProp->setPropertyValue(L"BackgroundColor", aAny);
+ }
+ XIndentRef xInd = (XIndent*)xSelInt->queryInterface(XIndent::getSmartUik());
+ if ( xInd )
+ {
+ xInd->incrementIndent();
+ }
+#endif
+
+ XAutoFormattableRef xAuto = (XAutoFormattable*)xSelInt->
+ queryInterface(XAutoFormattable::getSmartUik());
+ if ( xAuto )
+ xAuto->applyAutoFormat( L"gaga" );
+
+ XFormulaArrayRef xArr = (XFormulaArray*)xSelInt->queryInterface(XFormulaArray::getSmartUik());
+ if ( xArr )
+ {
+// xArr->setFormulaArray( "123" );
+ String aFormula = OUStringToString( xArr->getFormulaArray(), CHARSET_SYSTEM );
+ aTimeText.SetText(aFormula);
+ }
+ else
+ aTimeText.SetText("...");
+
+ XTextRef xText = (XText*)xSelInt->queryInterface(XText::getSmartUik());
+ if ( xText )
+ {
+ String aStr = OUStringToString( xText->getText(), CHARSET_SYSTEM );
+ aStr += 'X';
+ xText->setText(StringToOUString(aStr, CHARSET_SYSTEM));
+ }
+
+ // Zelle selektieren
+
+#if 0
+ if (xDoc)
+ {
+ CellAddress aPos;
+ aPos.Sheet = 0;
+ aPos.Column = 1;
+ aPos.Row = 2;
+ XCellRef xCell = xDoc->getCell(aPos);
+ if ( xCell )
+ xView->select( xCell );
+ }
+#endif
+
+ XPrintableRef xPrint = (XPrintable*)xInt->queryInterface(XPrintable::getSmartUik());
+ String aName = OUStringToString( xPrint->getPrinterName(), CHARSET_SYSTEM );
+// aTimeText.SetText(aName);
+
+ xPrint->setPrinterName(L"HP5_2");
+// xPrint->setPrinterName(L"blubb");
+
+// XPropertySetRef xOptions;
+// xPrint->print(xOptions);
+
+/* XViewPaneRef xPane = (XViewPane*)xInt->queryInterface(XViewPane::getSmartUik());
+ if (!xPane) return 0;
+ xPane->setScrollRow( 2 );
+*/
+
+ XCellRangeSourceRef xSrc = (XCellRangeSource*)
+ xInt->queryInterface(XCellRangeSource::getSmartUik());
+ if (!xSrc) return 0;
+ XCellRangeRef xRange = xSrc->getReferredCells();
+ if (!xRange) return 0;
+ XCellCollectionRef xColl = (XCellCollection*)
+ xRange->queryInterface(XCellCollection::getSmartUik());
+ if (!xColl) return 0;
+
+ XActionLockableRef xLock = (XActionLockable*)
+ xDoc->queryInterface(XActionLockable::getSmartUik());
+ if (xLock)
+ xLock->addActionLock(); // nicht zwischendurch painten
+
+// lcl_FillCells(xColl);
+
+ if (xLock)
+ xLock->removeActionLock(); // nicht zwischendurch painten
+
+ XStarCalcViewRef xCalc = (XStarCalcView*)xInt->queryInterface(XStarCalcView::getSmartUik());
+ if (!xCalc) return 0;
+
+ return 0;
+}
+
diff --git a/sc/workben/testadd.idl b/sc/workben/testadd.idl
new file mode 100644
index 000000000000..d2960529e615
--- /dev/null
+++ b/sc/workben/testadd.idl
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * $RCSfile: testadd.idl,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:17 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SC_WORKBEN_TESTADD_IDL
+#define SC_WORKBEN_TESTADD_IDL
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/beans/XPropertySet.idl>
+#include <com/sun/star/table/XCellRange.idl>
+#include <com/sun/star/sheet/XVolatileResult.idl>
+
+
+module stardiv
+{
+module starcalc
+{
+module test
+{
+
+/** test-interface for an AddIn implementation
+ */
+[ uik(2DB48150-7FBB-11d3-9F510050-042A51C9), ident("XTestAddIn", 1.0) ]
+interface XTestAddIn:com::sun::star::uno::XInterface
+{
+ long countParams([in]sequence<any> aArgs);
+ double addOne([in]double fValue);
+ string repeatStr([in]string aStr, [in]long nCount);
+ string getDateString([in]com::sun::star::beans::XPropertySet xCaller, [in]double fValue);
+ long getColorValue([in]com::sun::star::table::XCellRange xRange);
+ sequence< sequence<double> > transpose([in]sequence< sequence<double> > aMatrix);
+ sequence< sequence<long> > transposeInt([in]sequence< sequence<long> > aMatrix);
+ com::sun::star::sheet::XVolatileResult callAsync([in]string aString);
+ string repeatMultiple([in]long nCount, [in]any aFirst, [in]sequence<any> aFollow);
+ any getStrOrVal([in]long nFlag);
+};
+
+};
+};
+};
+
+
+
+#endif
+
diff --git a/sc/xml/ScAnnotationObj.xml b/sc/xml/ScAnnotationObj.xml
new file mode 100644
index 000000000000..e1bf33a93f78
--- /dev/null
+++ b/sc/xml/ScAnnotationObj.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScAnnotationObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.CellAnnotation</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScAnnotationsObj.xml b/sc/xml/ScAnnotationsObj.xml
new file mode 100644
index 000000000000..529662d3b44f
--- /dev/null
+++ b/sc/xml/ScAnnotationsObj.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScAnnotationsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.CellAnnotations</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.Date</Type>
+<Type>com.sun.star.util.MalformedNumberFormatException</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XNumberFormats</Type>
+<Type>com.sun.star.util.XNumberFormatsSupplier</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScAreaLinkObj.xml b/sc/xml/ScAreaLinkObj.xml
new file mode 100644
index 000000000000..e1fa431fce3b
--- /dev/null
+++ b/sc/xml/ScAreaLinkObj.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScAreaLinkObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.CellAreaLink</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScAreaLinksObj.xml b/sc/xml/ScAreaLinksObj.xml
new file mode 100644
index 000000000000..12ade85bdfaa
--- /dev/null
+++ b/sc/xml/ScAreaLinksObj.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScAreaLinksObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.CellAreaLinks</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScAutoFormatFieldObj.xml b/sc/xml/ScAutoFormatFieldObj.xml
new file mode 100644
index 000000000000..70b9328986a5
--- /dev/null
+++ b/sc/xml/ScAutoFormatFieldObj.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScAutoFormatFieldObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.TableAutoFormatField</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.CharSet</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontFamily</Type>
+<Type>com.sun.star.awt.FontPitch</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.FontStrikeout</Type>
+<Type>com.sun.star.awt.FontType</Type>
+<Type>com.sun.star.awt.FontUnderline</Type>
+<Type>com.sun.star.awt.FontWeight</Type>
+<Type>com.sun.star.awt.FontWidth</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexContainer</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.container.XSet</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.SortField</Type>
+<Type>com.sun.star.util.SortFieldType</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScAutoFormatObj.xml b/sc/xml/ScAutoFormatObj.xml
new file mode 100644
index 000000000000..63b6eb07f848
--- /dev/null
+++ b/sc/xml/ScAutoFormatObj.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScAutoFormatObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.TableAutoFormat</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.CharSet</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontFamily</Type>
+<Type>com.sun.star.awt.FontPitch</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.FontStrikeout</Type>
+<Type>com.sun.star.awt.FontType</Type>
+<Type>com.sun.star.awt.FontUnderline</Type>
+<Type>com.sun.star.awt.FontWeight</Type>
+<Type>com.sun.star.awt.FontWidth</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexContainer</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.container.XSet</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.SortField</Type>
+<Type>com.sun.star.util.SortFieldType</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScAutoFormatsObj.xml b/sc/xml/ScAutoFormatsObj.xml
new file mode 100644
index 000000000000..dda3dbd5d3e3
--- /dev/null
+++ b/sc/xml/ScAutoFormatsObj.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScAutoFormatsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.TableAutoFormats</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.CharSet</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontFamily</Type>
+<Type>com.sun.star.awt.FontPitch</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.FontStrikeout</Type>
+<Type>com.sun.star.awt.FontType</Type>
+<Type>com.sun.star.awt.FontUnderline</Type>
+<Type>com.sun.star.awt.FontWeight</Type>
+<Type>com.sun.star.awt.FontWidth</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexContainer</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.container.XSet</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.SortField</Type>
+<Type>com.sun.star.util.SortFieldType</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScCellCursorObj.xml b/sc/xml/ScCellCursorObj.xml
new file mode 100644
index 000000000000..f37df31f011a
--- /dev/null
+++ b/sc/xml/ScCellCursorObj.xml
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScCellCursorObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SheetCellCursor</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellCursor</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScCellFieldObj.xml b/sc/xml/ScCellFieldObj.xml
new file mode 100644
index 000000000000..ebdc2fe73d52
--- /dev/null
+++ b/sc/xml/ScCellFieldObj.xml
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScCellFieldObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.text.TextField</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScCellFormatsObj.xml b/sc/xml/ScCellFormatsObj.xml
new file mode 100644
index 000000000000..bced18145840
--- /dev/null
+++ b/sc/xml/ScCellFormatsObj.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScCellFormatsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.CellFormatRanges</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellFlags</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.FormulaResult</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellCursor</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.ControlCharacter</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScCellObj.xml b/sc/xml/ScCellObj.xml
new file mode 100644
index 000000000000..d5c5de52df4a
--- /dev/null
+++ b/sc/xml/ScCellObj.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScCellObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SheetCell</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellFlags</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.FormulaResult</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellCursor</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.ControlCharacter</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScCellRangeObj.xml b/sc/xml/ScCellRangeObj.xml
new file mode 100644
index 000000000000..cf042239790d
--- /dev/null
+++ b/sc/xml/ScCellRangeObj.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScCellRangeObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SheetCellRange</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellFlags</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.FormulaResult</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellCursor</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.ControlCharacter</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScCellRangesObj.xml b/sc/xml/ScCellRangesObj.xml
new file mode 100644
index 000000000000..38e248a4be80
--- /dev/null
+++ b/sc/xml/ScCellRangesObj.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScCellRangesObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SheetCellRanges</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellFlags</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.FormulaResult</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellCursor</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.ControlCharacter</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScCellSearchObj.xml b/sc/xml/ScCellSearchObj.xml
new file mode 100644
index 000000000000..94bfb534d68b
--- /dev/null
+++ b/sc/xml/ScCellSearchObj.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScCellSearchObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.util.ReplaceDescriptor</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScCellTextCursor.xml b/sc/xml/ScCellTextCursor.xml
new file mode 100644
index 000000000000..d9e2a8bbaab3
--- /dev/null
+++ b/sc/xml/ScCellTextCursor.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScCellTextCursor</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.text.TextCursor</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScCellsEnumeration.xml b/sc/xml/ScCellsEnumeration.xml
new file mode 100644
index 000000000000..9a929d822f30
--- /dev/null
+++ b/sc/xml/ScCellsEnumeration.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScCellsEnumeration</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.CellsEnumeration</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellFlags</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.FormulaResult</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellCursor</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.ControlCharacter</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScCellsObj.xml b/sc/xml/ScCellsObj.xml
new file mode 100644
index 000000000000..4a32dfc4cce6
--- /dev/null
+++ b/sc/xml/ScCellsObj.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScCellsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.Cells</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellFlags</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.FormulaResult</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellCursor</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.ControlCharacter</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScChartObj.xml b/sc/xml/ScChartObj.xml
new file mode 100644
index 000000000000..eea90ed6bfe9
--- /dev/null
+++ b/sc/xml/ScChartObj.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScChartObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SheetChart</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>goodies</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScChartsObj.xml b/sc/xml/ScChartsObj.xml
new file mode 100644
index 000000000000..7475219b50ff
--- /dev/null
+++ b/sc/xml/ScChartsObj.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScChartsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SheetCharts</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>goodies</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScConsolidationDescriptor.xml b/sc/xml/ScConsolidationDescriptor.xml
new file mode 100644
index 000000000000..9ab04e08ea64
--- /dev/null
+++ b/sc/xml/ScConsolidationDescriptor.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScConsolidationDescriptor</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.ConsolidationDescriptor</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sdb</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.DataImportMode</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.SortField</Type>
+<Type>com.sun.star.util.SortFieldType</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScDDELinkObj.xml b/sc/xml/ScDDELinkObj.xml
new file mode 100644
index 000000000000..aee3682a3d7c
--- /dev/null
+++ b/sc/xml/ScDDELinkObj.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScDDELinkObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.DDELink</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScDDELinksObj.xml b/sc/xml/ScDDELinksObj.xml
new file mode 100644
index 000000000000..d0d018150abe
--- /dev/null
+++ b/sc/xml/ScDDELinksObj.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScDDELinksObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.DDELinks</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScDataPilotFieldObj.xml b/sc/xml/ScDataPilotFieldObj.xml
new file mode 100644
index 000000000000..c66aa4bfabc4
--- /dev/null
+++ b/sc/xml/ScDataPilotFieldObj.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScDataPilotFieldObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.DataPilotField</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDimensionsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScDataPilotFieldsObj.xml b/sc/xml/ScDataPilotFieldsObj.xml
new file mode 100644
index 000000000000..f92daff00b21
--- /dev/null
+++ b/sc/xml/ScDataPilotFieldsObj.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScDataPilotFieldsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.DataPilotFields</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDimensionsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScDataPilotTableObj.xml b/sc/xml/ScDataPilotTableObj.xml
new file mode 100644
index 000000000000..76e24741ef04
--- /dev/null
+++ b/sc/xml/ScDataPilotTableObj.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScDataPilotTableObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.DataPilotTable</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDimensionsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScDataPilotTablesObj.xml b/sc/xml/ScDataPilotTablesObj.xml
new file mode 100644
index 000000000000..493ad19b5d37
--- /dev/null
+++ b/sc/xml/ScDataPilotTablesObj.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScDataPilotTablesObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.DataPilotTables</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDimensionsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScDatabaseRangeObj.xml b/sc/xml/ScDatabaseRangeObj.xml
new file mode 100644
index 000000000000..3ce48a1c7bde
--- /dev/null
+++ b/sc/xml/ScDatabaseRangeObj.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScDatabaseRangeObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.DatabaseRange</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sdb</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.DataImportMode</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.SortField</Type>
+<Type>com.sun.star.util.SortFieldType</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScDatabaseRangesObj.xml b/sc/xml/ScDatabaseRangesObj.xml
new file mode 100644
index 000000000000..e3020c843725
--- /dev/null
+++ b/sc/xml/ScDatabaseRangesObj.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScDatabaseRangesObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.DatabaseRanges</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sdb</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.DataImportMode</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.SortField</Type>
+<Type>com.sun.star.util.SortFieldType</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScDrawPagesObj.xml b/sc/xml/ScDrawPagesObj.xml
new file mode 100644
index 000000000000..4eb46c7d911d
--- /dev/null
+++ b/sc/xml/ScDrawPagesObj.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScDrawPagesObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.drawing.DrawPages</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.Date</Type>
+<Type>com.sun.star.util.MalformedNumberFormatException</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XNumberFormats</Type>
+<Type>com.sun.star.util.XNumberFormatsSupplier</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScFilterDescriptorBase.xml b/sc/xml/ScFilterDescriptorBase.xml
new file mode 100644
index 000000000000..bb77e75c263b
--- /dev/null
+++ b/sc/xml/ScFilterDescriptorBase.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScFilterDescriptorBase</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SheetFilterDescriptor</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sdb</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.DataImportMode</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.SortField</Type>
+<Type>com.sun.star.util.SortFieldType</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScFunctionListObj.xml b/sc/xml/ScFunctionListObj.xml
new file mode 100644
index 000000000000..c943f3ceec49
--- /dev/null
+++ b/sc/xml/ScFunctionListObj.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScFunctionListObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.FunctionDescriptions</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexContainer</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.container.XSet</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.FunctionArgument</Type>
+<Type>com.sun.star.sheet.XFunctionDescriptions</Type>
+<Type>com.sun.star.sheet.XRecentFunctions</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScHeaderFieldObj.xml b/sc/xml/ScHeaderFieldObj.xml
new file mode 100644
index 000000000000..e02795357a88
--- /dev/null
+++ b/sc/xml/ScHeaderFieldObj.xml
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScHeaderFieldObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.text.TextField</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScHeaderFooterContentObj.xml b/sc/xml/ScHeaderFooterContentObj.xml
new file mode 100644
index 000000000000..4e59023a3f42
--- /dev/null
+++ b/sc/xml/ScHeaderFooterContentObj.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScHeaderFooterContentObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.HeaderFooterContent</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScHeaderFooterTextCursor.xml b/sc/xml/ScHeaderFooterTextCursor.xml
new file mode 100644
index 000000000000..4b90e2657c5c
--- /dev/null
+++ b/sc/xml/ScHeaderFooterTextCursor.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScHeaderFooterTextCursor</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.text.TextCursor</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScHeaderFooterTextObj.xml b/sc/xml/ScHeaderFooterTextObj.xml
new file mode 100644
index 000000000000..9ea098df7ad6
--- /dev/null
+++ b/sc/xml/ScHeaderFooterTextObj.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScHeaderFooterTextObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.text.Text</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScLabelRangeObj.xml b/sc/xml/ScLabelRangeObj.xml
new file mode 100644
index 000000000000..b6e2bdb89b39
--- /dev/null
+++ b/sc/xml/ScLabelRangeObj.xml
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScLabelRangeObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.LabelRange</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.NamedRangeFlag</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScLabelRangesObj.xml b/sc/xml/ScLabelRangesObj.xml
new file mode 100644
index 000000000000..84c503c050ab
--- /dev/null
+++ b/sc/xml/ScLabelRangesObj.xml
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScLabelRangesObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.LabelRanges</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.NamedRangeFlag</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScModelObj.xml b/sc/xml/ScModelObj.xml
new file mode 100644
index 000000000000..c1e348808108
--- /dev/null
+++ b/sc/xml/ScModelObj.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScModelObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SpreadsheetDocument</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.Date</Type>
+<Type>com.sun.star.util.MalformedNumberFormatException</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XNumberFormats</Type>
+<Type>com.sun.star.util.XNumberFormatsSupplier</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScNamedRangeObj.xml b/sc/xml/ScNamedRangeObj.xml
new file mode 100644
index 000000000000..2bfb8c075f1c
--- /dev/null
+++ b/sc/xml/ScNamedRangeObj.xml
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScNamedRangeObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.NamedRange</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.NamedRangeFlag</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScNamedRangesObj.xml b/sc/xml/ScNamedRangesObj.xml
new file mode 100644
index 000000000000..30af6524971c
--- /dev/null
+++ b/sc/xml/ScNamedRangesObj.xml
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScNamedRangesObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.NamedRanges</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.NamedRangeFlag</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScRecentFunctionsObj.xml b/sc/xml/ScRecentFunctionsObj.xml
new file mode 100644
index 000000000000..dd099b2bb0ed
--- /dev/null
+++ b/sc/xml/ScRecentFunctionsObj.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScRecentFunctionsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.RecentFunctions</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexContainer</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.container.XSet</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.FunctionArgument</Type>
+<Type>com.sun.star.sheet.XFunctionDescriptions</Type>
+<Type>com.sun.star.sheet.XRecentFunctions</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScScenariosObj.xml b/sc/xml/ScScenariosObj.xml
new file mode 100644
index 000000000000..f5c8e8334617
--- /dev/null
+++ b/sc/xml/ScScenariosObj.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScScenariosObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.Scenarios</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.Date</Type>
+<Type>com.sun.star.util.MalformedNumberFormatException</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XNumberFormats</Type>
+<Type>com.sun.star.util.XNumberFormatsSupplier</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScSheetLinkObj.xml b/sc/xml/ScSheetLinkObj.xml
new file mode 100644
index 000000000000..7113491ecd03
--- /dev/null
+++ b/sc/xml/ScSheetLinkObj.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScSheetLinkObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SheetLink</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScSheetLinksObj.xml b/sc/xml/ScSheetLinksObj.xml
new file mode 100644
index 000000000000..ff5e082e0fec
--- /dev/null
+++ b/sc/xml/ScSheetLinksObj.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScSheetLinksObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SheetLinks</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScSpreadsheetSettings.xml b/sc/xml/ScSpreadsheetSettings.xml
new file mode 100644
index 000000000000..5770443dedb1
--- /dev/null
+++ b/sc/xml/ScSpreadsheetSettings.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScSpreadsheetSettings</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.GlobalSheetSettings</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexContainer</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.container.XSet</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.FunctionArgument</Type>
+<Type>com.sun.star.sheet.XFunctionDescriptions</Type>
+<Type>com.sun.star.sheet.XRecentFunctions</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScSpreadsheetSettingsObj.xml b/sc/xml/ScSpreadsheetSettingsObj.xml
new file mode 100644
index 000000000000..ed6cb3cbb724
--- /dev/null
+++ b/sc/xml/ScSpreadsheetSettingsObj.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScSpreadsheetSettingsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SpreadsheetDocumentSettings</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.Date</Type>
+<Type>com.sun.star.util.MalformedNumberFormatException</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XNumberFormats</Type>
+<Type>com.sun.star.util.XNumberFormatsSupplier</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScStyleFamiliesObj.xml b/sc/xml/ScStyleFamiliesObj.xml
new file mode 100644
index 000000000000..f5bba0107c6a
--- /dev/null
+++ b/sc/xml/ScStyleFamiliesObj.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScStyleFamiliesObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.style.StyleFamilies</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.style.GraphicLocation</Type>
+<Type>com.sun.star.style.PageStyleLayout</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScStyleFamilyObj.xml b/sc/xml/ScStyleFamilyObj.xml
new file mode 100644
index 000000000000..5254105e00ad
--- /dev/null
+++ b/sc/xml/ScStyleFamilyObj.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScStyleFamilyObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.style.StyleFamily</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.style.GraphicLocation</Type>
+<Type>com.sun.star.style.PageStyleLayout</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScStyleObj.xml b/sc/xml/ScStyleObj.xml
new file mode 100644
index 000000000000..24c7ef979057
--- /dev/null
+++ b/sc/xml/ScStyleObj.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScStyleObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.style.Style</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.style.GraphicLocation</Type>
+<Type>com.sun.star.style.PageStyleLayout</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScSubTotalDescriptorBase.xml b/sc/xml/ScSubTotalDescriptorBase.xml
new file mode 100644
index 000000000000..adec6c17d57b
--- /dev/null
+++ b/sc/xml/ScSubTotalDescriptorBase.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScSubTotalDescriptorBase</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SubTotalDescriptor</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sdb</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.DataImportMode</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.SortField</Type>
+<Type>com.sun.star.util.SortFieldType</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScSubTotalFieldObj.xml b/sc/xml/ScSubTotalFieldObj.xml
new file mode 100644
index 000000000000..e74dfaab944d
--- /dev/null
+++ b/sc/xml/ScSubTotalFieldObj.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScSubTotalFieldObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SubTotalField</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sdb</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.DataImportMode</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.SortField</Type>
+<Type>com.sun.star.util.SortFieldType</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScTabViewObj.xml b/sc/xml/ScTabViewObj.xml
new file mode 100644
index 000000000000..10eef7063229
--- /dev/null
+++ b/sc/xml/ScTabViewObj.xml
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScTabViewObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SpreadsheetView</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>goodies</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.drawing.ConnectionType</Type>
+<Type>com.sun.star.drawing.PolygonKind</Type>
+<Type>com.sun.star.drawing.XConnectableShape</Type>
+<Type>com.sun.star.drawing.XConnectorShape</Type>
+<Type>com.sun.star.drawing.XControlShape</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetView</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XViewFreezable</Type>
+<Type>com.sun.star.sheet.XViewPane</Type>
+<Type>com.sun.star.sheet.XViewSplitable</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XControlAccess</Type>
+<Type>com.sun.star.view.XSelectionChangeListener</Type>
+<Type>com.sun.star.view.XSelectionSupplier</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScTableColumnObj.xml b/sc/xml/ScTableColumnObj.xml
new file mode 100644
index 000000000000..f1959d8cae63
--- /dev/null
+++ b/sc/xml/ScTableColumnObj.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScTableColumnObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.table.TableColumn</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellFlags</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.FormulaResult</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellCursor</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.ControlCharacter</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScTableColumnsObj.xml b/sc/xml/ScTableColumnsObj.xml
new file mode 100644
index 000000000000..6d79307c84d2
--- /dev/null
+++ b/sc/xml/ScTableColumnsObj.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScTableColumnsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.table.TableColumns</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.Date</Type>
+<Type>com.sun.star.util.MalformedNumberFormatException</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XNumberFormats</Type>
+<Type>com.sun.star.util.XNumberFormatsSupplier</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScTableConditionalEntry.xml b/sc/xml/ScTableConditionalEntry.xml
new file mode 100644
index 000000000000..83d187510305
--- /dev/null
+++ b/sc/xml/ScTableConditionalEntry.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScTableConditionalEntry</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.TableConditionalEntry</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.ValidationAlertStyle</Type>
+<Type>com.sun.star.sheet.ValidationType</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScTableConditionalFormat.xml b/sc/xml/ScTableConditionalFormat.xml
new file mode 100644
index 000000000000..0a998bcf23b9
--- /dev/null
+++ b/sc/xml/ScTableConditionalFormat.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScTableConditionalFormat</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.TableConditionalFormat</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.ValidationAlertStyle</Type>
+<Type>com.sun.star.sheet.ValidationType</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScTableRowObj.xml b/sc/xml/ScTableRowObj.xml
new file mode 100644
index 000000000000..eff25dc4d626
--- /dev/null
+++ b/sc/xml/ScTableRowObj.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScTableRowObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.table.TableRow</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellFlags</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.FormulaResult</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellCursor</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.ControlCharacter</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScTableRowsObj.xml b/sc/xml/ScTableRowsObj.xml
new file mode 100644
index 000000000000..6bca5cce74e7
--- /dev/null
+++ b/sc/xml/ScTableRowsObj.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScTableRowsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.table.TableRows</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.Date</Type>
+<Type>com.sun.star.util.MalformedNumberFormatException</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XNumberFormats</Type>
+<Type>com.sun.star.util.XNumberFormatsSupplier</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScTableSheetObj.xml b/sc/xml/ScTableSheetObj.xml
new file mode 100644
index 000000000000..a7dfe9ace3b3
--- /dev/null
+++ b/sc/xml/ScTableSheetObj.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScTableSheetObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.Spreadsheet</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sch</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.ChartSeriesAddress</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ContainerEvent</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContainer</Type>
+<Type>com.sun.star.container.XContainerListener</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XIndexReplace</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XEmbeddedObjectSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellFlags</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.DataPilotFieldOrientation</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.FormulaResult</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTable</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XHeaderFooterContent</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.LineSpacing</Type>
+<Type>com.sun.star.style.TabAlign</Type>
+<Type>com.sun.star.style.TabStop</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.BorderLine</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellHoriJustify</Type>
+<Type>com.sun.star.table.CellOrientation</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.CellVertJustify</Type>
+<Type>com.sun.star.table.ShadowFormat</Type>
+<Type>com.sun.star.table.ShadowLocation</Type>
+<Type>com.sun.star.table.TableBorder</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellCursor</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableChart</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.ControlCharacter</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextField</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.text.XTextRangeMover</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.CellProtection</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScTableSheetsObj.xml b/sc/xml/ScTableSheetsObj.xml
new file mode 100644
index 000000000000..4f0e5a34038c
--- /dev/null
+++ b/sc/xml/ScTableSheetsObj.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScTableSheetsObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.Spreadsheets</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.IllegalTypeException</Type>
+<Type>com.sun.star.beans.NotRemoveableException</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyAttribute</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyExistException</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyStateChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyValues</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XFastPropertySet</Type>
+<Type>com.sun.star.beans.XMultiPropertySet</Type>
+<Type>com.sun.star.beans.XPropertiesChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyAccess</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertyContainer</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XPropertyStateChangeListener</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XContentEnumerationAccess</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XHierarchicalNameAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.document.XActionLockable</Type>
+<Type>com.sun.star.document.XDocumentInfo</Type>
+<Type>com.sun.star.document.XDocumentInfoSupplier</Type>
+<Type>com.sun.star.document.XLinkTargetSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XDrawPages</Type>
+<Type>com.sun.star.drawing.XDrawPagesSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStorable</Type>
+<Type>com.sun.star.io.IOException</Type>
+<Type>com.sun.star.lang.ArrayIndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.KCharacterType</Type>
+<Type>com.sun.star.lang.KParseTokens</Type>
+<Type>com.sun.star.lang.KParseType</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.ParseResult</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XCharacterClassification</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XServiceName</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.Border</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.GoalResult</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XAreaLink</Type>
+<Type>com.sun.star.sheet.XAreaLinks</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCalculatable</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XConsolidatable</Type>
+<Type>com.sun.star.sheet.XConsolidationDescriptor</Type>
+<Type>com.sun.star.sheet.XDDELink</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XDatabaseRange</Type>
+<Type>com.sun.star.sheet.XDatabaseRanges</Type>
+<Type>com.sun.star.sheet.XDocumentAuditing</Type>
+<Type>com.sun.star.sheet.XFillAcrossSheet</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XGoalSeek</Type>
+<Type>com.sun.star.sheet.XLabelRange</Type>
+<Type>com.sun.star.sheet.XLabelRanges</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XNamedRange</Type>
+<Type>com.sun.star.sheet.XNamedRanges</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetDocument</Type>
+<Type>com.sun.star.sheet.XSpreadsheets</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XSubTotalField</Type>
+<Type>com.sun.star.sheet.XUsedAreaCursor</Type>
+<Type>com.sun.star.style.XStyle</Type>
+<Type>com.sun.star.style.XStyleFamiliesSupplier</Type>
+<Type>com.sun.star.style.XStyleLoader</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.Date</Type>
+<Type>com.sun.star.util.MalformedNumberFormatException</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XModifiable</Type>
+<Type>com.sun.star.util.XModifyBroadcaster</Type>
+<Type>com.sun.star.util.XModifyListener</Type>
+<Type>com.sun.star.util.XNumberFormats</Type>
+<Type>com.sun.star.util.XNumberFormatsSupplier</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XRefreshListener</Type>
+<Type>com.sun.star.util.XRefreshable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XPrintable</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScTableValidationObj.xml b/sc/xml/ScTableValidationObj.xml
new file mode 100644
index 000000000000..4fea9b6e5c69
--- /dev/null
+++ b/sc/xml/ScTableValidationObj.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScTableValidationObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.TableValidation</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.sheet.ConditionOperator</Type>
+<Type>com.sun.star.sheet.ValidationAlertStyle</Type>
+<Type>com.sun.star.sheet.ValidationType</Type>
+<Type>com.sun.star.sheet.XSheetCondition</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntries</Type>
+<Type>com.sun.star.sheet.XSheetConditionalEntry</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/sc/xml/ScViewPaneObj.xml b/sc/xml/ScViewPaneObj.xml
new file mode 100644
index 000000000000..87a265ce9529
--- /dev/null
+++ b/sc/xml/ScViewPaneObj.xml
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "componentdescription.dtd">
+
+<COMPONENTDESCRIPTION xmlns:xlink="http://www.w3.org/1999/xlink/Namespace" >
+<Author>Niklas Nebel</Author>
+<Name>com.sun.star.comp.office.ScViewPaneObj</Name>
+<Description>
+ This component provides ...
+</Description>
+
+<SupportedService>com.sun.star.sheet.SpreadsheetViewPane</SupportedService>
+
+<Language>c++</Language>
+
+<Status StatusValue="final"/>
+
+<ModuleName>sc</ModuleName>
+
+<LoaderName>com.sun.star.loader.SharedLibrary</LoaderName>
+
+<!--
+<ServiceDependency>...</ServiceDependency>
+
+<RuntimeModuleDependency>...</RuntimeModuleDependency>
+-->
+
+<ProjectBuildDependency>cppu</ProjectBuildDependency>
+<ProjectBuildDependency>cppuhelper</ProjectBuildDependency>
+<ProjectBuildDependency>goodies</ProjectBuildDependency>
+<ProjectBuildDependency>osl</ProjectBuildDependency>
+<ProjectBuildDependency>rsc</ProjectBuildDependency>
+<ProjectBuildDependency>rtl</ProjectBuildDependency>
+<ProjectBuildDependency>sal</ProjectBuildDependency>
+<ProjectBuildDependency>sfx2</ProjectBuildDependency>
+<ProjectBuildDependency>so3</ProjectBuildDependency>
+<ProjectBuildDependency>sot</ProjectBuildDependency>
+<ProjectBuildDependency>stl</ProjectBuildDependency>
+<ProjectBuildDependency>svtools</ProjectBuildDependency>
+<ProjectBuildDependency>svx</ProjectBuildDependency>
+<ProjectBuildDependency>tools</ProjectBuildDependency>
+<ProjectBuildDependency>typelib</ProjectBuildDependency>
+<ProjectBuildDependency>uno</ProjectBuildDependency>
+<ProjectBuildDependency>unotools</ProjectBuildDependency>
+<ProjectBuildDependency>vcl</ProjectBuildDependency>
+<ProjectBuildDependency>vos</ProjectBuildDependency>
+
+<Type>com.sun.star.awt.DeviceInfo</Type>
+<Type>com.sun.star.awt.FocusEvent</Type>
+<Type>com.sun.star.awt.FontDescriptor</Type>
+<Type>com.sun.star.awt.FontSlant</Type>
+<Type>com.sun.star.awt.Gradient</Type>
+<Type>com.sun.star.awt.GradientStyle</Type>
+<Type>com.sun.star.awt.InputEvent</Type>
+<Type>com.sun.star.awt.KeyEvent</Type>
+<Type>com.sun.star.awt.MouseEvent</Type>
+<Type>com.sun.star.awt.PaintEvent</Type>
+<Type>com.sun.star.awt.Point</Type>
+<Type>com.sun.star.awt.RasterOperation</Type>
+<Type>com.sun.star.awt.Rectangle</Type>
+<Type>com.sun.star.awt.SimpleFontMetric</Type>
+<Type>com.sun.star.awt.Size</Type>
+<Type>com.sun.star.awt.WindowClass</Type>
+<Type>com.sun.star.awt.WindowDescriptor</Type>
+<Type>com.sun.star.awt.WindowEvent</Type>
+<Type>com.sun.star.awt.XBitmap</Type>
+<Type>com.sun.star.awt.XControl</Type>
+<Type>com.sun.star.awt.XControlContainer</Type>
+<Type>com.sun.star.awt.XControlModel</Type>
+<Type>com.sun.star.awt.XDevice</Type>
+<Type>com.sun.star.awt.XDisplayBitmap</Type>
+<Type>com.sun.star.awt.XFocusListener</Type>
+<Type>com.sun.star.awt.XFont</Type>
+<Type>com.sun.star.awt.XGraphics</Type>
+<Type>com.sun.star.awt.XImageConsumer</Type>
+<Type>com.sun.star.awt.XImageProducer</Type>
+<Type>com.sun.star.awt.XKeyListener</Type>
+<Type>com.sun.star.awt.XMouseListener</Type>
+<Type>com.sun.star.awt.XMouseMotionListener</Type>
+<Type>com.sun.star.awt.XPaintListener</Type>
+<Type>com.sun.star.awt.XPointer</Type>
+<Type>com.sun.star.awt.XRegion</Type>
+<Type>com.sun.star.awt.XTabController</Type>
+<Type>com.sun.star.awt.XTabControllerModel</Type>
+<Type>com.sun.star.awt.XToolkit</Type>
+<Type>com.sun.star.awt.XView</Type>
+<Type>com.sun.star.awt.XWindow</Type>
+<Type>com.sun.star.awt.XWindowListener</Type>
+<Type>com.sun.star.awt.XWindowPeer</Type>
+<Type>com.sun.star.beans.Property</Type>
+<Type>com.sun.star.beans.PropertyChangeEvent</Type>
+<Type>com.sun.star.beans.PropertyState</Type>
+<Type>com.sun.star.beans.PropertyValue</Type>
+<Type>com.sun.star.beans.PropertyVetoException</Type>
+<Type>com.sun.star.beans.UnknownPropertyException</Type>
+<Type>com.sun.star.beans.XPropertyChangeListener</Type>
+<Type>com.sun.star.beans.XPropertySet</Type>
+<Type>com.sun.star.beans.XPropertySetInfo</Type>
+<Type>com.sun.star.beans.XPropertyState</Type>
+<Type>com.sun.star.beans.XVetoableChangeListener</Type>
+<Type>com.sun.star.chart.ChartDataChangeEvent</Type>
+<Type>com.sun.star.chart.ChartDataChangeType</Type>
+<Type>com.sun.star.chart.XChartData</Type>
+<Type>com.sun.star.chart.XChartDataArray</Type>
+<Type>com.sun.star.chart.XChartDataChangeEventListener</Type>
+<Type>com.sun.star.container.ElementExistException</Type>
+<Type>com.sun.star.container.NoSuchElementException</Type>
+<Type>com.sun.star.container.XChild</Type>
+<Type>com.sun.star.container.XElementAccess</Type>
+<Type>com.sun.star.container.XEnumeration</Type>
+<Type>com.sun.star.container.XEnumerationAccess</Type>
+<Type>com.sun.star.container.XIndexAccess</Type>
+<Type>com.sun.star.container.XNameAccess</Type>
+<Type>com.sun.star.container.XNameContainer</Type>
+<Type>com.sun.star.container.XNameReplace</Type>
+<Type>com.sun.star.container.XNamed</Type>
+<Type>com.sun.star.drawing.ConnectionType</Type>
+<Type>com.sun.star.drawing.PolygonKind</Type>
+<Type>com.sun.star.drawing.XConnectableShape</Type>
+<Type>com.sun.star.drawing.XConnectorShape</Type>
+<Type>com.sun.star.drawing.XControlShape</Type>
+<Type>com.sun.star.drawing.XDrawPage</Type>
+<Type>com.sun.star.drawing.XDrawPageSupplier</Type>
+<Type>com.sun.star.drawing.XShape</Type>
+<Type>com.sun.star.drawing.XShapeBinder</Type>
+<Type>com.sun.star.drawing.XShapeCombiner</Type>
+<Type>com.sun.star.drawing.XShapeDescriptor</Type>
+<Type>com.sun.star.drawing.XShapeGroup</Type>
+<Type>com.sun.star.drawing.XShapeGrouper</Type>
+<Type>com.sun.star.drawing.XShapes</Type>
+<Type>com.sun.star.form.XForm</Type>
+<Type>com.sun.star.form.XFormComponent</Type>
+<Type>com.sun.star.form.XFormController</Type>
+<Type>com.sun.star.form.XFormControllerListener</Type>
+<Type>com.sun.star.form.XFormsSupplier</Type>
+<Type>com.sun.star.form.XImageProducerSupplier</Type>
+<Type>com.sun.star.frame.DispatchDescriptor</Type>
+<Type>com.sun.star.frame.FeatureStateEvent</Type>
+<Type>com.sun.star.frame.FrameAction</Type>
+<Type>com.sun.star.frame.FrameActionEvent</Type>
+<Type>com.sun.star.frame.XController</Type>
+<Type>com.sun.star.frame.XDispatch</Type>
+<Type>com.sun.star.frame.XDispatchProvider</Type>
+<Type>com.sun.star.frame.XFrame</Type>
+<Type>com.sun.star.frame.XFrameActionListener</Type>
+<Type>com.sun.star.frame.XFrames</Type>
+<Type>com.sun.star.frame.XFramesSupplier</Type>
+<Type>com.sun.star.frame.XModel</Type>
+<Type>com.sun.star.frame.XStatusListener</Type>
+<Type>com.sun.star.lang.EventObject</Type>
+<Type>com.sun.star.lang.IllegalArgumentException</Type>
+<Type>com.sun.star.lang.IndexOutOfBoundsException</Type>
+<Type>com.sun.star.lang.Locale</Type>
+<Type>com.sun.star.lang.NoSupportException</Type>
+<Type>com.sun.star.lang.WrappedTargetException</Type>
+<Type>com.sun.star.lang.XComponent</Type>
+<Type>com.sun.star.lang.XEventListener</Type>
+<Type>com.sun.star.lang.XMultiServiceFactory</Type>
+<Type>com.sun.star.lang.XServiceInfo</Type>
+<Type>com.sun.star.lang.XSingleServiceFactory</Type>
+<Type>com.sun.star.lang.XTypeProvider</Type>
+<Type>com.sun.star.lang.XUnoTunnel</Type>
+<Type>com.sun.star.registry.InvalidRegistryException</Type>
+<Type>com.sun.star.registry.InvalidValueException</Type>
+<Type>com.sun.star.registry.RegistryKeyType</Type>
+<Type>com.sun.star.registry.RegistryValueType</Type>
+<Type>com.sun.star.registry.XRegistryKey</Type>
+<Type>com.sun.star.sheet.CellDeleteMode</Type>
+<Type>com.sun.star.sheet.CellInsertMode</Type>
+<Type>com.sun.star.sheet.FillDateMode</Type>
+<Type>com.sun.star.sheet.FillDirection</Type>
+<Type>com.sun.star.sheet.FillMode</Type>
+<Type>com.sun.star.sheet.FilterConnection</Type>
+<Type>com.sun.star.sheet.FilterOperator</Type>
+<Type>com.sun.star.sheet.GeneralFunction</Type>
+<Type>com.sun.star.sheet.SheetLinkMode</Type>
+<Type>com.sun.star.sheet.SubTotalColumn</Type>
+<Type>com.sun.star.sheet.TableFilterField</Type>
+<Type>com.sun.star.sheet.TableOperationMode</Type>
+<Type>com.sun.star.sheet.TablePageBreakData</Type>
+<Type>com.sun.star.sheet.XArrayFormulaRange</Type>
+<Type>com.sun.star.sheet.XCellAddressable</Type>
+<Type>com.sun.star.sheet.XCellFormatRangesSupplier</Type>
+<Type>com.sun.star.sheet.XCellRangeAddressable</Type>
+<Type>com.sun.star.sheet.XCellRangeMovement</Type>
+<Type>com.sun.star.sheet.XCellRangeReferrer</Type>
+<Type>com.sun.star.sheet.XCellRangesQuery</Type>
+<Type>com.sun.star.sheet.XCellSeries</Type>
+<Type>com.sun.star.sheet.XDataPilotDescriptor</Type>
+<Type>com.sun.star.sheet.XDataPilotTables</Type>
+<Type>com.sun.star.sheet.XDataPilotTablesSupplier</Type>
+<Type>com.sun.star.sheet.XFormulaQuery</Type>
+<Type>com.sun.star.sheet.XMultipleOperation</Type>
+<Type>com.sun.star.sheet.XPrintAreas</Type>
+<Type>com.sun.star.sheet.XScenario</Type>
+<Type>com.sun.star.sheet.XScenarios</Type>
+<Type>com.sun.star.sheet.XScenariosSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAnnotation</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationAnchor</Type>
+<Type>com.sun.star.sheet.XSheetAnnotations</Type>
+<Type>com.sun.star.sheet.XSheetAnnotationsSupplier</Type>
+<Type>com.sun.star.sheet.XSheetAuditing</Type>
+<Type>com.sun.star.sheet.XSheetCellCursor</Type>
+<Type>com.sun.star.sheet.XSheetCellRange</Type>
+<Type>com.sun.star.sheet.XSheetCellRanges</Type>
+<Type>com.sun.star.sheet.XSheetFilterDescriptor</Type>
+<Type>com.sun.star.sheet.XSheetFilterable</Type>
+<Type>com.sun.star.sheet.XSheetFilterableEx</Type>
+<Type>com.sun.star.sheet.XSheetLinkable</Type>
+<Type>com.sun.star.sheet.XSheetOperation</Type>
+<Type>com.sun.star.sheet.XSheetOutline</Type>
+<Type>com.sun.star.sheet.XSheetPageBreak</Type>
+<Type>com.sun.star.sheet.XSpreadsheet</Type>
+<Type>com.sun.star.sheet.XSpreadsheetView</Type>
+<Type>com.sun.star.sheet.XSubTotalCalculatable</Type>
+<Type>com.sun.star.sheet.XSubTotalDescriptor</Type>
+<Type>com.sun.star.sheet.XViewFreezable</Type>
+<Type>com.sun.star.sheet.XViewPane</Type>
+<Type>com.sun.star.sheet.XViewSplitable</Type>
+<Type>com.sun.star.table.CellAddress</Type>
+<Type>com.sun.star.table.CellContentType</Type>
+<Type>com.sun.star.table.CellRangeAddress</Type>
+<Type>com.sun.star.table.TableOrientation</Type>
+<Type>com.sun.star.table.XAutoFormattable</Type>
+<Type>com.sun.star.table.XCell</Type>
+<Type>com.sun.star.table.XCellRange</Type>
+<Type>com.sun.star.table.XColumnRowRange</Type>
+<Type>com.sun.star.table.XTableCharts</Type>
+<Type>com.sun.star.table.XTableChartsSupplier</Type>
+<Type>com.sun.star.table.XTableColumns</Type>
+<Type>com.sun.star.table.XTableRows</Type>
+<Type>com.sun.star.text.XSimpleText</Type>
+<Type>com.sun.star.text.XText</Type>
+<Type>com.sun.star.text.XTextContent</Type>
+<Type>com.sun.star.text.XTextCursor</Type>
+<Type>com.sun.star.text.XTextFieldsSupplier</Type>
+<Type>com.sun.star.text.XTextRange</Type>
+<Type>com.sun.star.uno.Any</Type>
+<Type>com.sun.star.uno.Exception</Type>
+<Type>com.sun.star.uno.Reference</Type>
+<Type>com.sun.star.uno.RuntimeException</Type>
+<Type>com.sun.star.uno.Sequence</Type>
+<Type>com.sun.star.uno.Type</Type>
+<Type>com.sun.star.uno.TypeClass</Type>
+<Type>com.sun.star.uno.XAdapter</Type>
+<Type>com.sun.star.uno.XAggregation</Type>
+<Type>com.sun.star.uno.XInterface</Type>
+<Type>com.sun.star.uno.XReference</Type>
+<Type>com.sun.star.uno.XWeak</Type>
+<Type>com.sun.star.uno.genfunc</Type>
+<Type>com.sun.star.util.URL</Type>
+<Type>com.sun.star.util.XImportable</Type>
+<Type>com.sun.star.util.XIndent</Type>
+<Type>com.sun.star.util.XMergeable</Type>
+<Type>com.sun.star.util.XProtectable</Type>
+<Type>com.sun.star.util.XReplaceDescriptor</Type>
+<Type>com.sun.star.util.XReplaceable</Type>
+<Type>com.sun.star.util.XSearchDescriptor</Type>
+<Type>com.sun.star.util.XSearchable</Type>
+<Type>com.sun.star.util.XSortable</Type>
+<Type>com.sun.star.view.XControlAccess</Type>
+<Type>com.sun.star.view.XSelectionChangeListener</Type>
+<Type>com.sun.star.view.XSelectionSupplier</Type>
+
+</COMPONENTDESCRIPTION>
diff --git a/scaddins/prj/d.lst b/scaddins/prj/d.lst
new file mode 100644
index 000000000000..23be9a44ac42
--- /dev/null
+++ b/scaddins/prj/d.lst
@@ -0,0 +1,7 @@
+..\%__SRC%\bin\*.dll %_DEST%\bin%_EXT%\*.dll
+..\%__SRC%\class\*.jar %_DEST%\bin%_EXT%\*.jar
+..\%__SRC%\lib\*.so %_DEST%\lib%_EXT%\*.so
+..\%__SRC%\lib\*.sl %_DEST%\lib%_EXT%\*.sl
+..\%__SRC%\bin\*.bin %_DEST%\bin%_EXT%\*.bin
+..\%__SRC%\misc\*.hid %_DEST%\bin%_EXT%\*.hid
+..\%__SRC%\bin\*.res %_DEST%\bin%_EXT%\*.res
diff --git a/scaddins/source/datefunc/dateadd.idl b/scaddins/source/datefunc/dateadd.idl
new file mode 100644
index 000000000000..7da965a05a36
--- /dev/null
+++ b/scaddins/source/datefunc/dateadd.idl
@@ -0,0 +1,128 @@
+/*************************************************************************
+ *
+ * $RCSfile: dateadd.idl,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:45 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/beans/XPropertySet.idl>
+
+module com
+{
+module sun
+{
+module star
+{
+module sheet
+{
+module addin
+{
+ /**
+ * Interface with date functions.
+ */
+ [ uik(20D2C191-648C-11d4-9F8D0050-04D75D79), ident("XDateFunctions", 1.0) ]
+ interface XDateFunctions : com::sun::star::uno::XInterface
+ {
+ /// calculates the number of weeks between two dates.
+ long getDiffWeeks(
+ [in] com::sun::star::beans::XPropertySet xOptions,
+ [in] long nStartDate, [in] long nEndDate, [in] long nMode );
+
+ /// calculates the number of months between two dates.
+ long getDiffMonths(
+ [in] com::sun::star::beans::XPropertySet xOptions,
+ [in] long nStartDate, [in] long nEndDate, [in] long nMode );
+
+ /// calculates the number of years between two dates.
+ long getDiffYears(
+ [in] com::sun::star::beans::XPropertySet xOptions,
+ [in] long nStartDate, [in] long nEndDate, [in] long nMode );
+
+ /// checks if a date is in a leap year.
+ long isLeapYear(
+ [in] com::sun::star::beans::XPropertySet xOptions,
+ [in] long nDate );
+
+ /// calculates the number of days in a month.
+ long getDaysInMonth(
+ [in] com::sun::star::beans::XPropertySet xOptions,
+ [in] long nDate );
+
+ /// calculates the number of days in a year.
+ long getDaysInYear(
+ [in] com::sun::star::beans::XPropertySet xOptions,
+ [in] long nDate );
+
+ /// calculates the number of weeks in a year.
+ long getWeeksInYear(
+ [in] com::sun::star::beans::XPropertySet xOptions,
+ [in] long nDate );
+ };
+
+ service DateFunctions
+ {
+ // exported interfaces:
+ interface XDateFunctions;
+ };
+};
+};
+};
+};
+};
+
diff --git a/scaddins/source/datefunc/datefunc.cxx b/scaddins/source/datefunc/datefunc.cxx
new file mode 100644
index 000000000000..857233c952ea
--- /dev/null
+++ b/scaddins/source/datefunc/datefunc.cxx
@@ -0,0 +1,884 @@
+/*************************************************************************
+ *
+ * $RCSfile: datefunc.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:45 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+//------------------------------------------------------------------
+//
+// date functions add in
+//
+//------------------------------------------------------------------
+
+#include "datefunc.hxx"
+
+#include <cppuhelper/factory.hxx>
+#include <osl/diagnose.h>
+#include <rtl/ustrbuf.hxx>
+
+#include <com/sun/star/util/Date.hpp>
+
+using namespace com::sun::star;
+using namespace rtl;
+
+//------------------------------------------------------------------
+
+#define ADDIN_SERVICE "com.sun.star.sheet.AddIn"
+#define MY_SERVICE "com.sun.star.sheet.addin.DateFunctions"
+#define MY_IMPLNAME "com.sun.star.sheet.addin.DateFunctionsImpl"
+
+//------------------------------------------------------------------
+//
+// entry points for service registration / instantiation
+//
+//------------------------------------------------------------------
+
+extern "C" {
+
+void SAL_CALL component_getImplementationEnvironment(
+ const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv )
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
+
+sal_Bool SAL_CALL component_writeInfo(
+ void * pServiceManager, registry::XRegistryKey * pRegistryKey )
+{
+ if (pRegistryKey)
+ {
+ try
+ {
+ OUString aImpl = OUString::createFromAscii( "/" );
+ aImpl += DateFunctionAddIn::getImplementationName_Static();
+ aImpl += OUString::createFromAscii( "/UNO/SERVICES" );
+
+ uno::Reference<registry::XRegistryKey> xNewKey(
+ reinterpret_cast<registry::XRegistryKey*>(pRegistryKey)->createKey(aImpl) );
+
+ uno::Sequence <OUString> aSequ = DateFunctionAddIn::getSupportedServiceNames_Static();
+ const OUString * pArray = aSequ.getConstArray();
+ for( sal_Int32 i = 0; i < aSequ.getLength(); i++ )
+ xNewKey->createKey( pArray[i] );
+
+ return sal_True;
+ }
+ catch (registry::InvalidRegistryException&)
+ {
+ OSL_ENSHURE( sal_False, "### InvalidRegistryException!" );
+ }
+ }
+ return sal_False;
+}
+
+void * SAL_CALL component_getFactory(
+ const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
+{
+ void* pRet = 0;
+
+ if ( pServiceManager &&
+ OUString::createFromAscii(pImplName) == DateFunctionAddIn::getImplementationName_Static() )
+ {
+ uno::Reference<lang::XSingleServiceFactory> xFactory( cppu::createOneInstanceFactory(
+ reinterpret_cast<lang::XMultiServiceFactory*>(pServiceManager),
+ DateFunctionAddIn::getImplementationName_Static(),
+ DateFunctionAddIn_CreateInstance,
+ DateFunctionAddIn::getSupportedServiceNames_Static() ) );
+
+ if (xFactory.is())
+ {
+ xFactory->acquire();
+ pRet = xFactory.get();
+ }
+ }
+
+ return pRet;
+}
+
+} // extern C
+
+//------------------------------------------------------------------------
+//
+// "normal" service implementation
+//
+//------------------------------------------------------------------------
+
+DateFunctionAddIn::DateFunctionAddIn()
+{
+}
+
+DateFunctionAddIn::~DateFunctionAddIn()
+{
+}
+
+OUString DateFunctionAddIn::getImplementationName_Static()
+{
+ return OUString::createFromAscii( MY_IMPLNAME );
+}
+
+uno::Sequence<OUString> DateFunctionAddIn::getSupportedServiceNames_Static()
+{
+ uno::Sequence< OUString > aRet(2);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = OUString::createFromAscii( ADDIN_SERVICE );
+ pArray[1] = OUString::createFromAscii( MY_SERVICE );
+ return aRet;
+}
+
+uno::Reference<uno::XInterface> SAL_CALL DateFunctionAddIn_CreateInstance(
+ const uno::Reference<lang::XMultiServiceFactory>& )
+{
+ static uno::Reference<uno::XInterface> xInst = (cppu::OWeakObject*)new DateFunctionAddIn();
+ return xInst;
+}
+
+// XServiceName
+
+OUString SAL_CALL DateFunctionAddIn::getServiceName() throw(uno::RuntimeException)
+{
+ // name of specific AddIn service
+ return OUString::createFromAscii( MY_SERVICE );
+}
+
+// XServiceInfo
+
+OUString SAL_CALL DateFunctionAddIn::getImplementationName() throw(uno::RuntimeException)
+{
+ return getImplementationName_Static();
+}
+
+sal_Bool SAL_CALL DateFunctionAddIn::supportsService( const OUString& aServiceName )
+ throw(uno::RuntimeException)
+{
+ return aServiceName.compareToAscii( ADDIN_SERVICE ) == 0 ||
+ aServiceName.compareToAscii( MY_SERVICE ) == 0;
+}
+
+uno::Sequence<OUString> SAL_CALL DateFunctionAddIn::getSupportedServiceNames()
+ throw(uno::RuntimeException)
+{
+ return getSupportedServiceNames_Static();
+}
+
+// XLocalizable
+
+void SAL_CALL DateFunctionAddIn::setLocale( const lang::Locale& eLocale ) throw(uno::RuntimeException)
+{
+ aFuncLoc = eLocale;
+}
+
+lang::Locale SAL_CALL DateFunctionAddIn::getLocale() throw(uno::RuntimeException)
+{
+ return aFuncLoc;
+}
+
+//------------------------------------------------------------------
+//
+// function descriptions start here
+//
+//------------------------------------------------------------------
+
+// auxiliary functions
+
+enum DateFunc
+{
+ DF_GETDIFFWEEKS,
+ DF_GETDIFFMONTHS,
+ DF_GETDIFFYEARS,
+ DF_ISLEAPYEAR,
+ DF_GETDAYSINMONTH,
+ DF_GETDAYSINYEAR,
+ DF_GETWEEKSINYEAR,
+ DF_INVALID,
+ DF_COUNT = DF_INVALID
+};
+
+DateFunc GetFunction( const OUString& aProgrammaticName )
+{
+ static const sal_Char* aNames[] =
+ {
+ "getDiffWeeks",
+ "getDiffMonths",
+ "getDiffYears",
+ "isLeapYear",
+ "getDaysInMonth",
+ "getDaysInYear",
+ "getWeeksInYear",
+ NULL
+ };
+
+ for ( sal_Int16 i=0; i<DF_COUNT; i++ )
+ if ( aProgrammaticName.compareToAscii(aNames[i]) == 0 )
+ return (DateFunc) i;
+ return DF_INVALID;
+}
+
+// XAddIn
+
+OUString SAL_CALL DateFunctionAddIn::getProgrammaticFuntionName( const OUString& aDisplayName )
+ throw(uno::RuntimeException)
+{
+ // not used by calc
+ // (but should be implemented for other uses of the AddIn service)
+
+ return OUString();
+}
+
+OUString SAL_CALL DateFunctionAddIn::getDisplayFunctionName( const OUString& aProgrammaticName )
+ throw(uno::RuntimeException)
+{
+ //! allow different languages
+ sal_Bool bGerman = ( aFuncLoc.Language.equalsIgnoreCase( OUString::createFromAscii("DE") ) );
+
+ OUString aRet;
+ switch ( GetFunction(aProgrammaticName) )
+ {
+ case DF_GETDIFFWEEKS:
+ aRet = OUString::createFromAscii( bGerman ? "Wochen" : "Weeks" );
+ break;
+ case DF_GETDIFFMONTHS:
+ aRet = OUString::createFromAscii( bGerman ? "Monate" : "Months" );
+ break;
+ case DF_GETDIFFYEARS:
+ aRet = OUString::createFromAscii( bGerman ? "Jahre" : "Years" );
+ break;
+ case DF_ISLEAPYEAR:
+ aRet = OUString::createFromAscii( bGerman ? "IstSchaltJahr" : "IsLeapYear" );
+ break;
+ case DF_GETDAYSINMONTH:
+ aRet = OUString::createFromAscii( bGerman ? "TageImMonat" : "DaysInMonth" );
+ break;
+ case DF_GETDAYSINYEAR:
+ aRet = OUString::createFromAscii( bGerman ? "TageImJahr" : "DaysInYear" );
+ break;
+ case DF_GETWEEKSINYEAR:
+ aRet = OUString::createFromAscii( bGerman ? "WochenImJahr" : "WeeksInYear" );
+ break;
+ }
+ return aRet;
+}
+
+OUString SAL_CALL DateFunctionAddIn::getFunctionDescription( const OUString& aProgrammaticName )
+ throw(uno::RuntimeException)
+{
+ //! return translated strings
+
+ OUString aRet;
+ switch ( GetFunction(aProgrammaticName) )
+ {
+ case DF_GETDIFFWEEKS:
+ aRet = OUString::createFromAscii( "Returns the difference in weeks between two dates" );
+ break;
+ case DF_GETDIFFMONTHS:
+ aRet = OUString::createFromAscii( "Determines the number of months between two dates" );
+ break;
+ case DF_GETDIFFYEARS:
+ aRet = OUString::createFromAscii( "Returns the difference in years between two dates" );
+ break;
+ case DF_ISLEAPYEAR:
+ aRet = OUString::createFromAscii( "Returns 1 (TRUE) if a leap year is used, otherwise 0 (FALSE) is returned" );
+ break;
+ case DF_GETDAYSINMONTH:
+ aRet = OUString::createFromAscii( "Returns the number of days in the month in relation to the date entered" );
+ break;
+ case DF_GETDAYSINYEAR:
+ aRet = OUString::createFromAscii( "Returns the number of days in a year in relation to the date entered" );
+ break;
+ case DF_GETWEEKSINYEAR:
+ aRet = OUString::createFromAscii( "Returns the number of weeks in the year in relation to a date" );
+ break;
+ }
+ return aRet;
+}
+
+OUString SAL_CALL DateFunctionAddIn::getDisplayArgumentName(
+ const OUString& aProgrammaticFunctionName,
+ sal_Int32 nArgument ) throw(uno::RuntimeException)
+{
+ //! return translated strings
+
+ OUString aRet;
+ switch ( GetFunction(aProgrammaticFunctionName) )
+ {
+ case DF_GETDIFFWEEKS:
+ case DF_GETDIFFMONTHS:
+ case DF_GETDIFFYEARS:
+ switch (nArgument)
+ {
+ case 0:
+ aRet = OUString::createFromAscii( "(internal)" );
+ break;
+ case 1:
+ aRet = OUString::createFromAscii( "Start date" );
+ break;
+ case 2:
+ aRet = OUString::createFromAscii( "End date" );
+ break;
+ case 3:
+ aRet = OUString::createFromAscii( "Mode" );
+ break;
+ }
+ break;
+ case DF_ISLEAPYEAR:
+ case DF_GETDAYSINMONTH:
+ case DF_GETDAYSINYEAR:
+ case DF_GETWEEKSINYEAR:
+ switch (nArgument)
+ {
+ case 0:
+ aRet = OUString::createFromAscii( "(internal)" );
+ break;
+ case 1:
+ aRet = OUString::createFromAscii( "Date" );
+ break;
+ }
+ break;
+ }
+ return aRet;
+}
+
+OUString SAL_CALL DateFunctionAddIn::getArgumentDescription(
+ const OUString& aProgrammaticFunctionName,
+ sal_Int32 nArgument ) throw(uno::RuntimeException)
+{
+ //! return translated strings
+
+ OUString aRet;
+ switch ( GetFunction(aProgrammaticFunctionName) )
+ {
+ case DF_GETDIFFWEEKS:
+ switch (nArgument)
+ {
+ case 0:
+ aRet = OUString::createFromAscii( "(internal)" );
+ break;
+ case 1:
+ aRet = OUString::createFromAscii( "The start date for calculating the difference weeks" );
+ break;
+ case 2:
+ aRet = OUString::createFromAscii( "The end date for calculating the difference in weeks" );
+ break;
+ case 3:
+ aRet = OUString::createFromAscii( "Type of difference calculation: mode=0 means the interval, mode=1 means calendar weeks" );
+ break;
+ }
+ break;
+ case DF_GETDIFFMONTHS:
+ switch (nArgument)
+ {
+ case 0:
+ aRet = OUString::createFromAscii( "(internal)" );
+ break;
+ case 1:
+ aRet = OUString::createFromAscii( "The start date for calculating the difference in months" );
+ break;
+ case 2:
+ aRet = OUString::createFromAscii( "The end date for calculating the difference in months" );
+ break;
+ case 3:
+ aRet = OUString::createFromAscii( "Type of difference calculation: Mode = 0 means interval, mode = 1 means in calendar months" );
+ break;
+ }
+ break;
+ case DF_GETDIFFYEARS:
+ switch (nArgument)
+ {
+ case 0:
+ aRet = OUString::createFromAscii( "(internal)" );
+ break;
+ case 1:
+ aRet = OUString::createFromAscii( "The start date for calculating the difference in years" );
+ break;
+ case 2:
+ aRet = OUString::createFromAscii( "The end date for calculating the difference in years" );
+ break;
+ case 3:
+ aRet = OUString::createFromAscii( "Type of difference calculation: Mode=0 means interval, mode=1 means in calendar years" );
+ break;
+ }
+ break;
+ case DF_ISLEAPYEAR:
+ case DF_GETDAYSINMONTH:
+ case DF_GETDAYSINYEAR:
+ case DF_GETWEEKSINYEAR:
+ switch (nArgument)
+ {
+ case 0:
+ aRet = OUString::createFromAscii( "(internal)" );
+ break;
+ case 1:
+ aRet = OUString::createFromAscii( "Internal number of the date" );
+ break;
+ }
+ break;
+ }
+ return aRet;
+}
+
+OUString SAL_CALL DateFunctionAddIn::getProgrammaticCategoryName(
+ const OUString& aProgrammaticFunctionName )
+ throw(uno::RuntimeException)
+{
+ // return non-translated strings
+
+ return OUString::createFromAscii("Add-In");
+}
+
+OUString SAL_CALL DateFunctionAddIn::getDisplayCategoryName(
+ const OUString& aProgrammaticFunctionName )
+ throw(uno::RuntimeException)
+{
+ // return translated strings, not used for predefined categories
+
+ return OUString::createFromAscii("Add-In");
+}
+
+//------------------------------------------------------------------
+//
+// function implementation starts here
+//
+//------------------------------------------------------------------
+
+// auxiliary functions
+
+sal_Bool IsLeapYear( sal_uInt16 nYear )
+{
+ return (((nYear % 4) == 0) && ((nYear % 100) != 0) || ((nYear % 400) == 0));
+}
+
+sal_uInt16 DaysInMonth( sal_uInt16 nMonth, sal_uInt16 nYear )
+{
+ static sal_uInt16 aDaysInMonth[12] = { 31, 28, 31, 30, 31, 30,
+ 31, 31, 30, 31, 30, 31 };
+
+ if ( nMonth != 2 )
+ return aDaysInMonth[nMonth-1];
+ else
+ {
+ if ( IsLeapYear(nYear) )
+ return aDaysInMonth[nMonth-1] + 1;
+ else
+ return aDaysInMonth[nMonth-1];
+ }
+}
+
+/**
+ * Convert a date to a count of days starting from 01/01/0001
+ *
+ * The internal representation of a Date used in this Addin
+ * is the number of days between 01/01/0001 and the date
+ * this function converts a Day , Month, Year representation
+ * to this internal Date value.
+ *
+ */
+
+sal_Int32 DateToDays( sal_uInt16 nDay, sal_uInt16 nMonth, sal_uInt16 nYear )
+{
+ sal_Int32 nDays = ((sal_Int32)nYear-1) * 365;
+ nDays += ((nYear-1) / 4) - ((nYear-1) / 100) + ((nYear-1) / 400);
+
+ for( sal_uInt16 i = 1; i < nMonth; i++ )
+ nDays += DaysInMonth(i,nYear);
+ nDays += nDay;
+
+ return nDays;
+}
+
+/**
+ * Convert a count of days starting from 01/01/0001 to a date
+ *
+ * The internal representation of a Date used in this Addin
+ * is the number of days between 01/01/0001 and the date
+ * this function converts this internal Date value
+ * to a Day , Month, Year representation of a Date.
+ *
+ */
+
+void DaysToDate( sal_Int32 nDays,
+ sal_uInt16& rDay, sal_uInt16& rMonth, sal_uInt16& rYear )
+{
+ sal_Int32 nTempDays;
+ sal_Int32 i = 0;
+ sal_Bool bCalc;
+
+ do
+ {
+ nTempDays = nDays;
+ rYear = (sal_uInt16)((nTempDays / 365) - i);
+ nTempDays -= ((sal_Int32) rYear -1) * 365;
+ nTempDays -= (( rYear -1) / 4) - (( rYear -1) / 100) + ((rYear -1) / 400);
+ bCalc = sal_False;
+ if ( nTempDays < 1 )
+ {
+ i++;
+ bCalc = sal_True;
+ }
+ else
+ {
+ if ( nTempDays > 365 )
+ {
+ if ( (nTempDays != 366) || !IsLeapYear( rYear ) )
+ {
+ i--;
+ bCalc = sal_True;
+ }
+ }
+ }
+ }
+ while ( bCalc );
+
+ rMonth = 1;
+ while ( (sal_Int32)nTempDays > DaysInMonth( rMonth, rYear ) )
+ {
+ nTempDays -= DaysInMonth( rMonth, rYear );
+ rMonth++;
+ }
+ rDay = (sal_uInt16)nTempDays;
+}
+
+/**
+ * Get the null date used by the spreadsheet document
+ *
+ * The internal representation of a Date used in this Addin
+ * is the number of days between 01/01/0001 and the date
+ * this function returns this internal Date value for the document null date
+ *
+ */
+
+sal_Int32 GetNullDate( const uno::Reference<beans::XPropertySet>& xOptions )
+ throw(uno::RuntimeException)
+{
+ if (xOptions.is())
+ {
+ try
+ {
+ uno::Any aAny = xOptions->getPropertyValue(
+ OUString::createFromAscii( "NullDate" ) );
+ util::Date aDate;
+ if ( aAny >>= aDate )
+ return DateToDays( aDate.Day, aDate.Month, aDate.Year );
+ }
+ catch (uno::Exception&)
+ {
+ }
+ }
+
+ // no null date available -> no calculations possible
+ throw uno::RuntimeException();
+}
+
+// XDateFunctions
+
+/**
+ * Get week difference between 2 dates
+ *
+ * new Weeks(date1,date2,mode) function for StarCalc
+ *
+ * Two modes of operation are provided.
+ * The first is just a simple division by 7 calculation.
+ *
+ * The second calculates the diffence by week of year.
+ *
+ * The International Standard IS-8601 has decreed that Monday
+ * shall be the first day of the week.
+ *
+ * A week that lies partly in one year and partly in annother
+ * is assigned a number in the the year in which most of its days lie.
+ *
+ * That means that week 1 of any year is the week that contains the 4. January
+ *
+ * The internal representation of a Date used in the Addin is the number of days based on 01/01/0001
+ *
+ * A WeekDay can be then calculated by substracting 1 and calculating the rest of
+ * a division by 7, which gives a 0 - 6 value for Monday - Sunday
+ *
+ * Using the 4. January rule explained above the formula
+ *
+ * nWeek1= ( nDays1 - nJan4 + ( (nJan4-1) % 7 ) ) / 7 + 1;
+ *
+ * calculates a number between 0-53 for each day which is in the same year as nJan4
+ * where 0 means that this week belonged to the year before.
+ *
+ * If a day in the same or annother year is used in this formula this calculates
+ * an calendar week offset from a given 4. January
+ *
+ * nWeek2 = ( nDays2 - nJan4 + ( (nJan4-1) % 7 ) ) / 7 + 1;
+ *
+ * The 4.January of first Date Argument can thus be used to calculate
+ * the week difference by calendar weeks which is then nWeek = nWeek2 - nWeek1
+ *
+ * which can be optimized to
+ *
+ * nWeek = ( (nDays2-nJan4+((nJan4-1)%7))/7 ) - ( (nDays1-nJan4+((nJan4-1)%7))/7 )
+ *
+ * Note: All calculations are operating on the long integer data type
+ * % is the modulo operator in C which calculates the rest of an Integer division
+ *
+ *
+ * mode 0 is the interval between the dates in month, that is days / 7
+ *
+ * mode 1 is the difference by week of year
+ *
+ */
+
+sal_Int32 SAL_CALL DateFunctionAddIn::getDiffWeeks(
+ const uno::Reference<beans::XPropertySet>& xOptions,
+ sal_Int32 nStartDate, sal_Int32 nEndDate, sal_Int32 nMode )
+ throw(uno::RuntimeException)
+{
+ sal_Int32 nNullDate = GetNullDate( xOptions );
+
+ sal_Int32 nDays1 = nStartDate + nNullDate;
+ sal_Int32 nDays2 = nEndDate + nNullDate;
+
+ sal_Int32 nRet;
+
+ if ( nMode == 1 )
+ {
+ sal_uInt16 nDay,nMonth,nYear;
+ DaysToDate( nDays1, nDay, nMonth, nYear );
+ sal_Int32 nJan4 = DateToDays( 4, 1, nYear );
+
+ nRet = ( (nDays2-nJan4+((nJan4-1)%7))/7 ) - ( (nDays1-nJan4+((nJan4-1)%7))/7 );
+ }
+ else
+ {
+ nRet = (nDays2 - nDays1) / 7;
+ }
+ return nRet;
+}
+
+/**
+ * Get month difference between 2 dates
+ * =Month(start, end, mode) Function for StarCalc
+ *
+ * two modes are provided
+ *
+ * mode 0 is the interval between the dates in month
+ *
+ * mode 1 is the difference in calendar month
+ *
+ */
+
+sal_Int32 SAL_CALL DateFunctionAddIn::getDiffMonths(
+ const uno::Reference<beans::XPropertySet>& xOptions,
+ sal_Int32 nStartDate, sal_Int32 nEndDate, sal_Int32 nMode )
+ throw(uno::RuntimeException)
+{
+ sal_Int32 nNullDate = GetNullDate( xOptions );
+
+ sal_Int32 nDays1 = nStartDate + nNullDate;
+ sal_Int32 nDays2 = nEndDate + nNullDate;
+
+ sal_uInt16 nDay1,nMonth1,nYear1;
+ sal_uInt16 nDay2,nMonth2,nYear2;
+ DaysToDate(nDays1,nDay1,nMonth1,nYear1);
+ DaysToDate(nDays2,nDay2,nMonth2,nYear2);
+
+ sal_Int32 nRet = nMonth2 - nMonth1 + (nYear2 - nYear1) * 12;
+ if ( nMode == 1 || nDays1 == nDays2 ) return nRet;
+
+ if ( nDays1 < nDays2 )
+ {
+ if ( nDay1 > nDay2 )
+ {
+ nRet -= 1;
+ }
+ }
+ else
+ {
+ if ( nDay1 < nDay2 )
+ {
+ nRet += 1;
+ }
+ }
+
+ return nRet;
+}
+
+/**
+ * Get Year difference between 2 dates
+ *
+ * two modes are provided
+ *
+ * mode 0 is the interval between the dates in years
+ *
+ * mode 1 is the difference in calendar years
+ *
+ */
+
+sal_Int32 SAL_CALL DateFunctionAddIn::getDiffYears(
+ const uno::Reference<beans::XPropertySet>& xOptions,
+ sal_Int32 nStartDate, sal_Int32 nEndDate, sal_Int32 nMode )
+ throw(uno::RuntimeException)
+{
+ if ( nMode != 1 )
+ return getDiffMonths( xOptions, nStartDate, nEndDate, nMode ) / 12;
+
+ sal_Int32 nNullDate = GetNullDate( xOptions );
+
+ sal_Int32 nDays1 = nStartDate + nNullDate;
+ sal_Int32 nDays2 = nEndDate + nNullDate;
+
+ sal_uInt16 nDay1,nMonth1,nYear1;
+ sal_uInt16 nDay2,nMonth2,nYear2;
+ DaysToDate(nDays1,nDay1,nMonth1,nYear1);
+ DaysToDate(nDays2,nDay2,nMonth2,nYear2);
+
+ return nYear2 - nYear1;
+}
+
+/**
+ * Check if a Date is in a leap year in the Gregorian calendar
+ *
+ */
+
+sal_Int32 SAL_CALL DateFunctionAddIn::isLeapYear(
+ const uno::Reference<beans::XPropertySet>& xOptions,
+ sal_Int32 nDate )
+ throw(uno::RuntimeException)
+{
+ sal_Int32 nNullDate = GetNullDate( xOptions );
+ sal_Int32 nDays = nDate + nNullDate;
+
+ sal_uInt16 nDay, nMonth, nYear;
+ DaysToDate(nDays,nDay,nMonth,nYear);
+
+ return (sal_Int32)IsLeapYear(nYear);
+}
+
+/**
+ * Get the Number of Days in the month for a date
+ *
+ */
+
+sal_Int32 SAL_CALL DateFunctionAddIn::getDaysInMonth(
+ const uno::Reference<beans::XPropertySet>& xOptions,
+ sal_Int32 nDate )
+ throw(uno::RuntimeException)
+{
+ sal_Int32 nNullDate = GetNullDate( xOptions );
+ sal_Int32 nDays = nDate + nNullDate;
+
+ sal_uInt16 nDay, nMonth, nYear;
+ DaysToDate(nDays,nDay,nMonth,nYear);
+
+ return DaysInMonth( nMonth, nYear );
+}
+
+/**
+ * Get number of days in the year of a date specified
+ *
+ */
+
+sal_Int32 SAL_CALL DateFunctionAddIn::getDaysInYear(
+ const uno::Reference<beans::XPropertySet>& xOptions,
+ sal_Int32 nDate )
+ throw(uno::RuntimeException)
+{
+ sal_Int32 nNullDate = GetNullDate( xOptions );
+ sal_Int32 nDays = nDate + nNullDate;
+
+ sal_uInt16 nDay, nMonth, nYear;
+ DaysToDate(nDays,nDay,nMonth,nYear);
+
+ return ( IsLeapYear(nYear) ? 366 : 365 );
+}
+
+/**
+ * Get number of weeks in the year for a date
+ *
+ * Most years have 52 weeks, but years that start on a Thursday
+ * and leep years that start on a Wednesday have 53 weeks
+ *
+ * The International Standard IS-8601 has decreed that Monday
+ * shall be the first day of the week.
+ *
+ * A WeekDay can be calculated by substracting 1 and calculating the rest of
+ * a division by 7 from the internal date represention
+ * which gives a 0 - 6 value for Monday - Sunday
+ *
+ * @see #IsLeapYear #WeekNumber
+ *
+ */
+
+sal_Int32 SAL_CALL DateFunctionAddIn::getWeeksInYear(
+ const uno::Reference<beans::XPropertySet>& xOptions,
+ sal_Int32 nDate )
+ throw(uno::RuntimeException)
+{
+ sal_Int32 nNullDate = GetNullDate( xOptions );
+ sal_Int32 nDays = nDate + nNullDate;
+
+ sal_uInt16 nDay, nMonth, nYear;
+ DaysToDate(nDays,nDay,nMonth,nYear);
+
+ sal_Int32 nJan1WeekDay = ( DateToDays(1,1,nYear) - 1) % 7;
+
+ sal_Int32 nRet;
+ if ( nJan1WeekDay == 3 ) /* Thursday */
+ nRet = 53;
+ else if ( nJan1WeekDay == 2 ) /* Wednesday */
+ nRet = ( IsLeapYear(nYear) ? 53 : 52 );
+ else
+ nRet = 52;
+
+ return nRet;
+}
+
+//------------------------------------------------------------------
+
diff --git a/scaddins/source/datefunc/datefunc.def b/scaddins/source/datefunc/datefunc.def
new file mode 100644
index 000000000000..cc1b3562a3ef
--- /dev/null
+++ b/scaddins/source/datefunc/datefunc.def
@@ -0,0 +1,7 @@
+LIBRARY datefunc
+DESCRIPTION 'StarView 3.00 Uno BE Reflection data 551 '
+HEAPSIZE 0
+EXPORTS
+component_getImplementationEnvironment
+component_writeInfo
+component_getFactory
diff --git a/scaddins/source/datefunc/datefunc.hxx b/scaddins/source/datefunc/datefunc.hxx
new file mode 100644
index 000000000000..1dc6c1731508
--- /dev/null
+++ b/scaddins/source/datefunc/datefunc.hxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * $RCSfile: datefunc.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:45:45 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 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
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+//------------------------------------------------------------------
+//
+// date functions add in
+//
+//------------------------------------------------------------------
+
+#ifndef DATEFUNC_HXX
+#define DATEFUNC_HXX
+
+#include <com/sun/star/sheet/XAddIn.hpp>
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/sheet/addin/XDateFunctions.hpp>
+
+#include <cppuhelper/implbase4.hxx> // helper for implementations
+
+
+com::sun::star::uno::Reference<com::sun::star::uno::XInterface> SAL_CALL DateFunctionAddIn_CreateInstance(
+ const com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory>& );
+
+
+class DateFunctionAddIn : public cppu::WeakImplHelper4<
+ com::sun::star::sheet::XAddIn,
+ com::sun::star::sheet::addin::XDateFunctions,
+ com::sun::star::lang::XServiceName,
+ com::sun::star::lang::XServiceInfo >
+{
+private:
+ com::sun::star::lang::Locale aFuncLoc;
+
+public:
+ DateFunctionAddIn();
+ virtual ~DateFunctionAddIn();
+
+ static ::rtl::OUString getImplementationName_Static();
+ static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static();
+
+ // XAddIn
+ virtual ::rtl::OUString SAL_CALL getProgrammaticFuntionName( const ::rtl::OUString& aDisplayName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getDisplayFunctionName( const ::rtl::OUString& aProgrammaticName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getFunctionDescription( const ::rtl::OUString& aProgrammaticName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getDisplayArgumentName( const ::rtl::OUString& aProgrammaticFunctionName, sal_Int32 nArgument ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getArgumentDescription( const ::rtl::OUString& aProgrammaticFunctionName, sal_Int32 nArgument ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getProgrammaticCategoryName( const ::rtl::OUString& aProgrammaticFunctionName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getDisplayCategoryName( const ::rtl::OUString& aProgrammaticFunctionName ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XLocalizable
+ virtual void SAL_CALL setLocale( const ::com::sun::star::lang::Locale& eLocale ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL getLocale( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceName
+ virtual ::rtl::OUString SAL_CALL getServiceName( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // methods from own interfaces start here
+
+ // XDateFunctions
+ virtual sal_Int32 SAL_CALL getDiffWeeks( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions, sal_Int32 nEndDate, sal_Int32 nStartDate, sal_Int32 nMode ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getDiffMonths( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions, sal_Int32 nEndDate, sal_Int32 nStartDate, sal_Int32 nMode ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getDiffYears( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions, sal_Int32 nEndDate, sal_Int32 nStartDate, sal_Int32 nMode ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL isLeapYear( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions, sal_Int32 nDate ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getDaysInMonth( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions, sal_Int32 nDate ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getDaysInYear( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions, sal_Int32 nDate ) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getWeeksInYear( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xOptions, sal_Int32 nDate ) throw(::com::sun::star::uno::RuntimeException);
+};
+
+//------------------------------------------------------------------
+
+#endif
+
diff --git a/scaddins/source/datefunc/makefile.mk b/scaddins/source/datefunc/makefile.mk
new file mode 100644
index 000000000000..25e80fdf40c2
--- /dev/null
+++ b/scaddins/source/datefunc/makefile.mk
@@ -0,0 +1,143 @@
+#**************************************************************************
+#
+# $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/scaddins/source/datefunc/makefile.mk,v 1.1.1.1 2000-09-18 16:45:45 hr Exp $
+#
+# $Date: 2000-09-18 16:45:45 $
+# $Author: hr $
+# $Revision: 1.1.1.1 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#**************************************************************************
+
+PRJ=..$/..
+PRJNAME=addin
+
+TARGET=date
+
+
+ENABLE_EXCEPTIONS=TRUE
+USE_DEFFILE=TRUE
+LIBTARGET=NO
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Types -------------------------------------
+
+UNOUCRRDB=$(SOLARBINDIR)$/applicat.rdb $(BIN)$/dateadd.rdb
+UNOUCRDEP=$(UNOUCRRDB)
+
+UNOUCROUT=$(OUT)$/inc$/$(PRJNAME)$/$(TARGET)
+INCPRE+=$(UNOUCROUT)
+
+# --- Types -------------------------------------
+
+# comprehensive type info, so rdb needn't be installed
+CPPUMAKERFLAGS*=-C
+
+UNOTYPES=\
+ com.sun.star.sheet.addin.XDateFunctions \
+ com.sun.star.lang.XComponent \
+ com.sun.star.lang.XMultiServiceFactory \
+ com.sun.star.lang.XSingleServiceFactory \
+ com.sun.star.uno.TypeClass \
+ com.sun.star.uno.XInterface \
+ com.sun.star.registry.XImplementationRegistration \
+ com.sun.star.sheet.XAddIn \
+ com.sun.star.lang.XServiceName \
+ com.sun.star.lang.XServiceInfo \
+ com.sun.star.lang.XTypeProvider \
+ com.sun.star.uno.XWeak \
+ com.sun.star.uno.XAggregation \
+ com.sun.star.util.Date
+
+# --- Files -------------------------------------
+
+SLOFILES=\
+ $(SLO)$/datefunc.obj
+# NETBSD: somewhere we have to instantiate the static data members.
+# NETBSD-1.2.1 doesn't know about weak symbols so the default mechanism for GCC won't work.
+# SCO and MACOSX: the linker does know about weak symbols, but we can't ignore multiple defined symbols
+.IF "$(OS)"=="NETBSD" || "$(OS)"=="SCO" || "$(OS)$(COM)"=="OS2GCC" || "$(OS)"=="MACOSX"
+SLOFILES+=$(SLO)$/staticmb.obj
+.ENDIF
+
+ALLIDLFILES=\
+ dateadd.idl
+
+# --- Library -----------------------------------
+
+SHL1TARGET=$(TARGET)$(UPD)$(DLLPOSTFIX)
+SHL1OBJS=$(SLOFILES)
+SHL1STDLIBS= \
+ $(CPPUHELPERLIB) \
+ $(CPPULIB) \
+ $(VOSLIB) \
+ $(SALLIB)
+
+SHL1DEPN=makefile.mk
+SHL1DEF=$(MISC)$/$(SHL1TARGET).def
+DEF1NAME=$(SHL1TARGET)
+DEF1EXPORTFILE=exports.dxp
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
+
+$(BIN)$/dateadd.rdb: $(ALLIDLFILES)
+ +unoidl -I$(PRJ) -I$(SOLARIDLDIR) -Burd -OH$(BIN) $?
+ +regmerge $@ /UCR $(BIN)$/{$(?:f:s/.idl/.urd/)}
+ touch $@
+
+
diff --git a/scaddins/source/datefunc/msdev.mk b/scaddins/source/datefunc/msdev.mk
new file mode 100644
index 000000000000..4fdf2c77306c
--- /dev/null
+++ b/scaddins/source/datefunc/msdev.mk
@@ -0,0 +1,151 @@
+#*************************************************************************
+#
+# $RCSfile: msdev.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:45:45 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 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
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+.SUFFIXES: .urd .idl
+
+# the root directory of the udk
+# also adjust include statements if this is changed
+ROOT=i:\udk100
+
+include i:\udk100\msdev\defines.mk
+
+# the project directory under runtime
+PROJECT=datefunc
+
+# the target of this makefile
+TARGET=$(BINOUT)\datefunc.dll
+
+CPPFLAGS = \
+ -I$(RUNTIME)\vos\inc \
+ -I$(RUNTIME)\sal\inc \
+ -I$(RUNTIME)\cppu\inc \
+ -I$(RUNTIME)\cppuhelper\inc \
+ -I$(RUNTIME)\stoc\inc \
+ -I$(UNOHEADER_OUT)
+
+OBJS=$(OBJOUT)\datefunc.obj
+
+# flags and macros
+include i:\udk100\msdev\flags.mk
+
+URDS = $(URDOUT)\dateadd.urd
+
+CPPUMAKER_OPT=-C
+UNOHEADER_OUT=$(UNOHEADER_COM)
+
+# the rdb files
+RDBS=$(RDBOUT)\applicat.rdb $(RDBOUT)\dateadd.rdb
+
+UNOHEADER=\
+ $(UNOHEADER_OUT)\com\sun\star\lang\XComponent.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\lang\XMultiServiceFactory.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\lang\XSingleServiceFactory.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\uno\TypeClass.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\uno\XInterface.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\registry\XImplementationRegistration.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\sheet\XAddIn.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\lang\XServiceName.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\lang\XServiceInfo.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\lang\XTypeProvider.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\uno\XWeak.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\uno\XAggregation.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\util\Date.hpp \
+ $(UNOHEADER_OUT)\com\sun\star\sheet\addin\XDateFunctions.hpp
+
+$(UNOHEADER_OUT)\com\sun\star\sheet\addin\XDateFunctions.hpp: $(RDBS) $(CPPUMAKER)
+ -$(MKDIR) $(@D)
+ $(CPPUMAKER) $(CPPUMAKER_OPT) -Tcom.sun.star.sheet.addin.XDateFunctions -B/UCR -O$(UNOHEADER_OUT) $(RDBS)
+
+$(UNOHEADER_OUT)\com\sun\star\sheet\XAddIn.hpp: $(RDBS) $(CPPUMAKER)
+ -$(MKDIR) $(@D)
+ $(CPPUMAKER) $(CPPUMAKER_OPT) -Tcom.sun.star.sheet.XAddIn -B/UCR -O$(UNOHEADER_OUT) $(RDBS)
+
+$(UNOHEADER_OUT)\com\sun\star\lang\XServiceName.hpp: $(RDBS) $(CPPUMAKER)
+ -$(MKDIR) $(@D)
+ $(CPPUMAKER) $(CPPUMAKER_OPT) -Tcom.sun.star.lang.XServiceName -B/UCR -O$(UNOHEADER_OUT) $(RDBS)
+
+$(UNOHEADER_OUT)\com\sun\star\util\Date.hpp: $(RDBS) $(CPPUMAKER)
+ -$(MKDIR) $(@D)
+ $(CPPUMAKER) $(CPPUMAKER_OPT) -Tcom.sun.star.util.Date -B/UCR -O$(UNOHEADER_OUT) $(RDBS)
+
+include i:\udk100\msdev\genheader.mk
+
+$(URDS): $(UNOIDL)
+
+.idl{$(URDOUT)}.urd:
+ -$(MKDIR) $(@D)
+ $(UNOIDL) -I$(ROOT)\idl $< -Burd -OH$(@D)
+
+$(RDBOUT)\dateadd.rdb: $(URDS) $(REGMERGE)
+ -$(MKDIR) $(@D)
+ $(REGMERGE) $@ /UCR $(URDS)
+
+.cxx{$(OBJOUT)}.obj:
+ -$(MKDIR) $(@D)
+ $(CC) $(CCPPFLAGS) $(CCFLAGS) $< /Fo$@
+
+$(TARGET): $(UNOHEADER) $(OBJS)
+ -$(MKDIR) $(@D)
+ $(LIB32) $(LFLAGS) /DLL $(OBJS) /out:$@ -def:datefunc.def $(LINKCPPUHELPER) $(LINKCPPU) $(LINKVOS) $(LINKSAL) msvcirtd.lib $(LIBS)
+
+
+